This commit was manufactured by cvs2svn to create tag
'release-2-2-1'.

X-SVN-Rev: 10001
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..dd72733
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,70 @@
+* text=auto !eol
+
+*.c text !eol
+*.cc text !eol
+*.classpath text !eol
+*.cpp text !eol
+*.css text !eol
+*.dsp text !eol
+*.dsw text !eol
+*.filters text !eol
+*.h text !eol
+*.htm text !eol
+*.html text !eol
+*.in text !eol
+*.java text !eol
+*.launch text !eol
+*.mak text !eol
+*.md text !eol
+*.MF text !eol
+*.mk text !eol
+*.pl text !eol
+*.pm text !eol
+*.project text !eol
+*.properties text !eol
+*.py text !eol
+*.rc text !eol
+*.sh text eol=lf
+*.sln text !eol
+*.stub text !eol
+*.txt text !eol
+*.ucm text !eol
+*.vcproj text !eol
+*.vcxproj text !eol
+*.xml text !eol
+*.xsl text !eol
+*.xslt text !eol
+Makefile text !eol
+configure text !eol
+LICENSE text !eol
+README text !eol
+
+*.bin -text
+*.brk -text
+*.cnv -text
+*.icu -text
+*.res -text
+*.nrm -text
+*.spp -text
+*.tri2 -text
+
+src/com/ibm/icu/dev/data/ThaiWordFreq.xls -text
+src/com/ibm/icu/dev/data/holidays_jp.ucs -text
+src/com/ibm/icu/dev/data/rbbi/english.dict -text
+src/com/ibm/icu/dev/data/thai6.ucs -text
+src/com/ibm/icu/impl/data/ICULocaleData.jar -text
+src/com/ibm/icu/impl/data/invuca.icu -text
+src/com/ibm/icu/impl/data/thai_dict -text
+src/com/ibm/icu/impl/data/ucadata.icu -text
+src/com/ibm/icu/impl/data/unames.icu -text
+src/com/ibm/icu/impl/data/unorm.icu -text
+src/com/ibm/icu/impl/data/uprops.icu -text
+
+# The following file types are stored in Git-LFS.
+*.jar filter=lfs diff=lfs merge=lfs -text
+*.dat filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text
+*.gz filter=lfs diff=lfs merge=lfs -text
+*.bz2 filter=lfs diff=lfs merge=lfs -text
+*.gif filter=lfs diff=lfs merge=lfs -text
+
diff --git a/build.bat b/build.bat
new file mode 100755
index 0000000..fc3b93e
--- /dev/null
+++ b/build.bat
@@ -0,0 +1,15 @@
+@echo off
+
+REM *******************************************************************************
+REM * Copyright (C) 1997 - 2001, International Business Machines Corporation and    
+REM * others. All Rights Reserved.                                                
+REM *******************************************************************************
+
+REM $Source: /xsrl/Nsvn/icu/icu4j/Attic/build.bat,v $ 
+REM $Date: 2001/11/29 18:18:10 $ 
+REM $Revision: 1.5 $
+
+REM *******************************************************************************
+
+REM convience bat file to build with
+java -classpath "%JAVA_HOME%\lib\tools.jar;%ANT_HOME%\lib\ant.jar;%CLASSPATH%" org.apache.tools.ant.Main %1 %2 %3 %4 %5
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000..6a6534c
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,16 @@
+#/*
+#************************************************************************
+#* Copyright (C) 1997 - 2002, International Business Machines Corporation and
+#* others. All Rights Reserved.
+#************************************************************************
+#*
+#* $Source: /xsrl/Nsvn/icu/icu4j/Attic/build.sh,v $ 
+#* $Date: 2002/03/18 22:11:04 $ 
+#* $Revision: 1.5 $
+#*
+#*************************************************************************
+#*/
+#!/bin/sh
+CLASSPATH=$JAVA_HOME/tools.jar:$ANT_HOME/lib/ant.jar
+echo java -classpath $CLASSPATH org.apache.tools.ant.Main $* 
+java -classpath $CLASSPATH org.apache.tools.ant.Main $*
diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..a267514
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,256 @@
+<!--
+/*
+*******************************************************************************
+* Copyright (C) 1997-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/build.xml,v $
+* $Date: 2002/08/03 07:43:18 $
+* $Revision: 1.54 $
+*
+*******************************************************************************
+* This is the ant build file for ICU4J.  See readme.html for more information.
+*/
+-->
+
+<project name="ICU4J" default="core" basedir=".">
+
+    <!-- ### begin clover setup ### -->
+    <property name="clover.initstring" value="tmp/icu4j.db"/>
+    <path id="clover.classpath">
+	<!-- ***** you will need to change the paths below to point
+	           to clover.jar and velocity.jar on your filesystem ***** -->
+    <pathelement path="${java.class.path}/"/>
+	<pathelement location="clover.jar"/>
+	<pathelement location="velocity.jar"/>
+    </path>
+
+    <!-- target to switch Clover on -->
+    <target name="with.clover">
+		<property name="build.compiler" value="org.apache.tools.ant.taskdefs.CloverCompilerAdapter"/>
+
+		<!-- instruct clover to use a class-based instrumentation strategy when instrumenting SimpleTimeZone.java -->
+		<property name="clover.useclass.includes" value="**/SimpleTimeZone.java"/>
+    </target>
+
+    <!-- target to generate a Clover html report -->
+    <target name="clover.report">
+	<java classname="com.cortexeb.tools.clover.reporters.html.HtmlReporter" fork="yes">
+	    <arg line="--outputdir tmp/icu4j_html --showSrc --initstring ${clover.initstring} --title 'icu4j core'"/>
+	    <classpath refid="clover.classpath"/>
+	</java>
+    </target>
+    <!-- ### end clover setup ### -->
+
+    <target name="init">
+        <tstamp/>
+        <property name="src.dir" value="src"/>
+        <property name="build.dir" value="classes"/>
+        <property name="doc.dir" value="doc"/>
+        <property name="jar.file" value="icu4j.jar"/>
+        <property name="icu4j.manifest" value="${src.dir}/com/ibm/icu/manifest.stub"/>
+        <property name="zip.file" value="../icu4j${DSTAMP}.zip"/>
+        <property name="zipSrc.file" value="../icu4jSrc${DSTAMP}.zip"/>
+
+	<path id="build.classpath">
+	    <pathelement path="${build.dir}"/>
+	    <path refid="clover.classpath"/>
+	</path>
+
+        <property name="richedit.dir" value="richedit"/>
+        <property name="richedit.doc.dir" value="${richedit.dir}/doc"/>
+        <property name="richedit.jar.file" value="${richedit.dir}/richedit.jar"/>
+        <property name="richedit.zip.file" value="${richedit.dir}/richedit.zip"/>
+        <property name="richedit.manifest" value="${src.dir}/com/ibm/richtext/manifest.stub"/>
+
+        <mkdir dir="${build.dir}"/>
+	<uptodate property="icu4j.resources" targetfile="${src.dir}/com/ibm/icu/impl/data/ICULocaleData.jar">
+	    <!-- note must not have '/' before 'com' in srcfiles includes arg! -->
+	    <srcfiles dir="${build.dir}" includes="com/ibm/icu/impl/data/LocaleElements_index.class"/>
+	</uptodate>
+	<property name="doc.params" value=""/>
+	<condition property="doc.params"
+	    value="-breakiterator -tag draft:a:&quot;Draft&quot; -tag internal:X:&quot;Internal&quot;">
+	    <equals arg1="${ant.java.version}" arg2="1.4"/>
+	</condition>
+    </target>
+
+    <!-- build everything but dist-related stuff -->
+    <target name="all" depends="core,tests,tools,richedit,demos,jar,docs"/>
+
+	<target name="resources" depends="init">
+    	<!-- use this target to force resources to be rebuilt -->
+		<unjar src="${src.dir}/com/ibm/icu/impl/data/ICULocaleData.jar" dest="${build.dir}"/>
+ 		<touch file="${build.dir}/com/ibm/icu/impl/data/LocaleElements_index.class"/>
+	</target>
+
+	<target name="_resources" depends="init" if="icu4j.resources">
+    	<!-- use this target to conditionally build resources only if icu4j.resources is set -->
+		<unjar src="${src.dir}/com/ibm/icu/impl/data/ICULocaleData.jar" dest="${build.dir}"/>
+ 		<touch file="${build.dir}/com/ibm/icu/impl/data/LocaleElements_index.class"/>
+	</target>
+
+	<!-- core does not build richedit or tests -->
+    <target name="core" depends="init,coreData,_resources">
+        <copy file="${src.dir}/com/ibm/icu/impl/data/thai_dict"
+            todir="${build.dir}/com/ibm/icu/impl/data/"/><!-- only needed if you are using html reporter -->
+        <javac includes="com/ibm/icu/util/**/*.java,com/ibm/icu/text/**/*.java,com/ibm/icu/math/**/*.java,com/ibm/icu/impl/**/*.java,com/ibm/icu/lang/*.java"
+            excludes="**/CVS/**/*"
+            srcdir="${src.dir}"
+    	    destdir="${build.dir}"
+    	    classpathref="build.classpath"
+            debug="on" deprecation="off"/>
+    </target>
+
+    <target name="tests" depends="core,testData">
+        <javac includes="com/ibm/icu/dev/test/**/*.java"
+            excludes="**/CVS/**/*"
+    	    srcdir="${src.dir}"
+    	    destdir="${build.dir}"
+    	    classpathref="build.classpath"
+            debug="on" deprecation="off"/>
+    </target>
+
+    <target name="demos" depends="core,testData">
+        <javac includes="com/ibm/icu/dev/demo/**/*.java"
+            excludes="**/CVS/**/*"
+    	    srcdir="${src.dir}"
+    	    destdir="${build.dir}"
+    	    classpathref="build.classpath"
+            debug="on" deprecation="off"/>
+    </target>
+
+    <target name="tools" depends="core">
+        <javac includes="com/ibm/icu/dev/tool/**/*.java"
+            excludes="**/CVS/**/*"
+    	    srcdir="${src.dir}"
+    	    destdir="${build.dir}"
+    	    classpathref="build.classpath"
+            debug="on" deprecation="off"/>
+    </target>
+
+    <target name="docs" depends="init">
+        <mkdir dir="${doc.dir}"/>
+        <javadoc packagenames="com.ibm.icu.lang,com.ibm.icu.dev.tool.translit,com.ibm.icu.text,com.ibm.icu.impl.data,com.ibm.icu.dev.tool.compression,com.ibm.icu.dev.tool.normalizer,com.ibm.icu.util,com.ibm.icu.dev.tool.rbbi,com.ibm.icu.math,com.ibm.richtext.textlayout,com.ibm.richtext.textlayout.attributes,com.ibm.richtext.awtui,com.ibm.richtext.print,com.ibm.richtext.styledtext,com.ibm.richtext.swingui,com.ibm.richtext.textapps,com.ibm.richtext.textformat,com.ibm.richtext.textpanel,com.ibm.richtext.uiimpl,com.ibm.richtext.uiimpl.resources,com.ibm.richtext.textapps.resources"
+            sourcepath="${src.dir}"
+            destdir="${doc.dir}"
+            nodeprecatedlist="true"
+	    windowtitle="icu4j"
+	    doctitle="icu4j"
+	    encoding="iso-8859-1"
+	    docencoding="iso-8859-1"
+	    bottom="&lt;font size=-1>Copyright (c) 2002 IBM Corporation and others.&lt;/font>"
+	    additionalparam="${doc.params}"
+        />
+    </target>
+
+    <target name ="coreData" depends="init">
+        <copy todir="${build.dir}/com/ibm/icu/impl/data">
+        <fileset dir="${src.dir}/com/ibm/icu/impl/data"
+                 includes="Transliterator_*.txt,*.icu"/>
+        </copy>
+    </target>
+
+    <target name ="testData" depends="init">
+        <copy file="${src.dir}/com/ibm/icu/dev/data/rbbi/english.dict"
+    	      todir="${build.dir}/com/ibm/icu/dev/data/rbbi"/>
+    	<javac includes="com/ibm/icu/dev/data/*.java"
+		            excludes="**/CVS/**/*"
+		    	    srcdir="${src.dir}"
+		    	    destdir="${build.dir}"
+		    	    classpathref="build.classpath"
+            debug="on" deprecation="off"/>
+    </target>
+
+    <!-- builds richedit and richedit tests -->
+    <target name="richedit" depends="init">
+        <javac includes="com/ibm/richtext/**/*.java"
+            excludes="**/CVS/**/*"
+    	    srcdir="${src.dir}"
+    	    destdir="${build.dir}"
+    	    classpathref="build.classpath"
+            debug="on" deprecation="off"/>
+    </target>
+
+    <target name="jar" depends="core">
+        <jar jarfile="${jar.file}"
+            compress="false"
+            includes="com/ibm/icu/util/**/*,com/ibm/icu/text/**/*,com/ibm/icu/math/**/*,com/ibm/icu/impl/**/*,com/ibm/icu/lang/**/*"
+            basedir="${build.dir}"
+            manifest="${icu4j.manifest}"/>
+    </target>
+
+    <!-- jars up richedit but without tests -->
+    <target name="richeditJar" depends="richedit">
+        <mkdir dir="${richedit.dir}"/>
+        <jar jarfile="${richedit.jar.file}"
+            compress="false"
+            includes="com/ibm/richtext/**/*"
+	    excludes="com/ibm/richtext/test/**/*"
+            basedir="${build.dir}"
+            manifest="${richedit.manifest}"/>
+    </target>
+
+    <!--
+        Note:  I used to use -linkoffline http://java.sun.com/products/jdk/1.2/docs/api/ C:\jdk1.2.2\docs\api
+        This links to core docs on Sun's site - a very nice feature.  But it requires the 1.2 docs to be
+        on the build machine at a known location.
+    -->
+
+    <!-- the 'public' docs for richedit -->
+    <target name="richeditDocs" depends="init">
+        <mkdir dir="${richedit.doc.dir}"/>
+        <javadoc  packagenames="com.ibm.richtext.awtui,com.ibm.richtext.swingui,com.ibm.richtext.textpanel,com.ibm.richtext.styledtext,com.ibm.richtext.textlayout.attributes,com.ibm.richtext.print"
+            sourcepath="${src.dir}"
+            destdir="${richedit.doc.dir}"
+            nodeprecatedlist="true"
+	        windowtitle="RichEdit Control"
+	        doctitle="RichEdit Control"
+	        encoding="iso-8859-1"
+	        docencoding="iso-8859-1"
+	        bottom="&lt;font size=-1>Copyright (c) 1998-2002 IBM Corporation and others.&lt;/font>"
+    		    />
+    </target>
+
+    <!-- richedit alphaworks distribution - jar and docs, but no source -->
+    <target name="richeditZip" depends="richeditJar,richeditDocs">
+        <!--Create a zip archive of the richedit jar and readme -->
+	<copy file="license.html" todir="${richedit.dir}"/>
+        <zip zipfile="${richedit.zip.file}"
+            basedir="${richedit.dir}"
+            includes="doc/**/*,richedit.jar,license.html"/>
+    </target>
+
+    <target name="zip" depends="docs,jar">
+        <!--Create a zip archive of the source, docs, and jar file for
+        distribution.  The zip file will be created in the directory above
+        the root ICU4J directory. The exclude pattern ${src.dir}/com/ibm/icu/dev/data/unicode/UnicodeData-*.txt
+        and ${src.dir}/data/unicode/SpecialCasing-*.txt
+        eliminates old archive copies like SpecialCasing-2.txt and
+        UnicodeData-2.1.8.txt etc -->
+        <zip zipfile="${zip.file}"
+            basedir="."
+            excludes="${richedit.dir}/**/*,test_*,${src.dir}/com/ibm/icu/dev/data/unicode/UnicodeData-*.txt,${src.dir}/com/ibm/icu/dev/data/unicode/SpecialCasing-*.txt,${src.dir}/com/ibm/icu/dev/data/unicode/CompositionExclusions-*.txt,${obsolete.dir}/**,**/*~,${src.dir}/**/*.class,${build.dir}/**,**/CVS/**/*"/>
+    </target>
+
+    <target name="zipSrc" depends="init">
+        <!--Create a zip archive of just the source for distribution.  The
+        zip file will be created in the directory above the root ICU4J
+        directory. The exclude pattern ${src.dir}/com/ibm/icu/dev/data/unicode/UnicodeData-*.txt
+        and ${src.dir}/com/ibm/icu/dev/data/unicode/SpecialCasing-*.txt
+        eliminates old archive copies like SpecialCasing-2.txt and
+        UnicodeData-2.1.8.txt -->
+        <zip zipfile="${zipSrc.file}"
+            basedir="."
+            excludes="${richedit.dir}/**/*,test_*,${src.dir}/com/ibm/icu/dev/data/unicode//UnicodeData-*.txt,${src.dir}/com/ibm/icu/dev/data/unicode/SpecialCasing-*.txt,${src.dir}/com/ibm/icu/dev/data/unicode/CompositionExclusions-*.txt,${obsolete.dir}/**,**/*~,${src.dir}/**/*.class,${build.dir}/**,**/CVS/**/*,${doc.dir}/**,${jar.file}"/>
+    </target>
+
+    <target name="clean" depends="init">
+        <delete dir="${build.dir}"/>
+        <delete dir="${doc.dir}"/>
+        <delete file="${jar.file}"/>
+	<delete dir="${richedit.dir}"/>
+    </target>
+
+</project>
diff --git a/license.html b/license.html
new file mode 100644
index 0000000..8ab076a
--- /dev/null
+++ b/license.html
@@ -0,0 +1,34 @@
+<html>
+
+<head>
+<title>ICU4J license - ICU4J 1.3.1 and later</title>
+</head>
+
+<body BGCOLOR="#ffffff">
+<h2>ICU4J license - ICU4J 1.3.1 and later</h2>
+
+<p>COPYRIGHT AND PERMISSION NOTICE</p>
+
+<p>
+Copyright (c) 1995-2001 International Business Machines Corporation and others
+</p>
+<p>
+All rights reserved.
+</p>
+<p>
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation.
+</p>
+<p>
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+</p>
+<p>
+Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder.
+</p>
+
+<hr>
+<small>
+All trademarks and registered trademarks mentioned herein are the property of their respective owners.
+</small>
+</body>
+</html>
diff --git a/readme.html b/readme.html
new file mode 100644
index 0000000..96df630
--- /dev/null
+++ b/readme.html
@@ -0,0 +1,734 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ReadMe for ICU4J</title>
+<!--
+*******************************************************************************
+* Copyright (C) 2001-2002, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/readme.html,v $
+* $Date: 2002/08/16 15:51:35 $
+* $Revision: 1.36 $
+*
+*******************************************************************************
+-->
+</head>
+
+<body bgcolor="#FFFFFF" link="#0000FF" vlink="#800080" lang="EN-US">
+
+    <h2>International Components for Unicode for Java</h2>
+    <h3>Read Me for ICU4J 2.2</h3>
+
+<hr size="2" width="100%" align="center">
+    <p><b>Release Date</b><br>
+    August 15th, 2002</p>
+
+<p>For the most recent
+      release, see the <a href="http://oss.software.ibm.com/icu4j/download/index.html">
+      ICU4J download site</a>.
+    </P>
+
+<h3><u>Contents</u></h3>
+
+<ul type="disc">
+  <li><a href="#introduction">Introduction to ICU4J (International Components for Unicode for Java)</a></li>
+  <li><a href="#license">License Information</a></li>
+  <li><a href="#PlatformDependencies">Platform Dependencies</a></li>
+  <li><a href="#download">How to Download ICU4J</a></li>
+  <li><a href="#WhatContain">The Structure and Contents of ICU4J</a></li>
+  <li><a href="#API">Where to Get Documentation</a></li>
+  <li><a href="#HowToInstallJavac">How to Install and Build</a></li>
+  <li><a href="#tryingout">Trying Out ICU4J</a></li>
+  <li><a href="#resources">ICU4J Resource Information</a></li>
+  <li><a href="#WhereToFindMore">Where to Find More Information</a></li>
+  <li><a href="#SubmittingComments">Submitting Comments, Requesting Features and Reporting
+    Bugs</a></li>
+</ul>
+
+<h3><a NAME="introduction"></a><u>Introduction to ICU4J (International Components for Unicode for Java)</u></h3>
+
+<p>Today's global market demands programs that support a wide variety
+    of languages and national conventions.&nbsp; Customers prefer software
+    and web pages tailored to their needs, studies confirm that
+    this leads to increased sales.&nbsp;  Java provides a strong
+    foundation for global programs, and IBM and the ICU4J team played
+    a key role in providing globalization technology to Sun for use in
+    Java. </p>
+    <p>
+    But Java does not yet provide all the features that some products require.&nbsp; ICU4J is an add-on library that extends Java's globalization technology by providing the following tools:
+    <ul> 
+    <li> 
+    Unicode Normalization – NFC, NFD, NFKD, NFKC
+    	<blockquote>Produces canonical text representations, needed for XML and the net.</blockquote>
+    <li>
+    International Calendars – Arabic, Buddhist, Hebrew, and Japanese<br>
+        <blockquote>Required for correct presentation of dates in some countries.</blockquote>
+    <li> 
+    Number Format Enhancements – Scientific Notation, Spelled-out Numbers
+              <blockquote>Enhances standard Java number formatting. The spelled-out format is used
+for checks and similar documents.</blockquote>
+
+    <li>Enhanced word-break detection – Rule-based, supports Thai
+              <blockquote>Required for correct support of Thai.</blockquote>
+
+    <li>Unicode Text Compression – Standard compression of Unicode text
+              <blockquote>Suitable for large numbers of small fields, where LZW and similar schemes
+do not apply.</blockquote>
+    <li>Collation - Rule-based, up-to-date Unicode Collation Algorithm (UCA) sorting order
+        <blockquote>For fast multilingual string comparison</blockquote>
+    </ul>
+In some cases, the above support has been rolled into a later release of
+Java. For example, the Thai word-break is now in Java 1.4. However, if you
+are using Java 1.3, you can use the ICU4J package until you upgrade to 1.4.
+</p>
+
+<h3><a name=license></a><u>License Information</u></h3>
+<p>
+The ICU projects (ICU4C and ICU4J) use the X license.&nbsp; The X license is a <b>non-viral</b> and recommended free software license that is compatible with the GNU GPL license.&nbsp; This became effective with release 1.8.1 of ICU4C and release 1.3.1 of ICU4J in mid-2001. All new ICU releases will adopt the X license; previous ICU releases continue to utilize the IPL (IBM Public License).&nbsp; Users of previous releases of ICU who want to adopt new ICU releases will need to accept the terms and conditions of the X license.
+</p>
+<p>
+The main effect of the change is to provide GPL compatibility.&nbsp; The X license is listed as GPL compatible, see the gnu page at <a href=http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses>
+http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses</a>.  This means that GPL projects can now use ICU code, it does <b>not</b> mean that projects using ICU become subject to GPL.
+</p>
+<p>
+The text of the X license is available at <a href=http://www.x.org/terms.htm>http://www.x.org/terms.htm</a>. The IBM version contains the essential text of the license, omitting the X-specific trademarks and copyright notices.  The full copy of <a href=license.html>ICU's license</a> is included in the download package.
+</p>
+<p>
+For more details please see the <a href=http://oss.software.ibm.com/icu/press.html>press announcement</a> and the <a href=http://oss.software.ibm.com/icu/project_faq.html#license>Project FAQ</a>.
+</p>
+
+<h3><a NAME="PlatformDependencies"></a><u>Platform Dependencies</u></h3>
+      <P>
+      Parts of ICU4J depend on functionality that is only available in JDK 1.3
+      or later, although some components work under earlier JVMs. All 
+      components should be compiled using a Java2 compiler, as even components 
+      that run under earlier JVMs can require language features that are only 
+      present in Java2. Currently 1.1.x and 1.2.x JVMs are unsupported and untested, and you use 
+      the components on these JVMs at your own risk.</P>
+      <p>
+      The reference platforms which we support and test ICU4J on are:<ul>
+<li> Win2000, IBM JDK 1.3</li>
+<li> Solaris 2.7, Sun JDK 1.3.1</li>
+<li> AIX 5.1, IBM JDK 1.3</li>
+</ul>
+</p>
+<p>Please use the most recent updates of the supported JDK versions.</p> 
+
+<p>Additionally, we have built and tested ICU4J on the following <b>unsupported</b> platforms:
+<ul>
+<li> Win98, WinNT, WinXP / IBM JDK 1.3, Sun JDK 1.3.1, 1.4</li>
+<li> Win2000 / Sun JDK 1.3.1, 1.4</li>
+<li> Solaris 2.6 , Solaris 2.8 / Sun JDK 1.3, 1.3.1, 1.4</li>
+<li> Solaris 2.7 / Sun JDK 1.3.1, 1.4</li>
+<li> AIX 5.1, IBM JDK 1.3.1</li>
+</ul>
+
+<h3><a NAME="obtaining"></a><u>How to Download ICU4J</u></h3>
+
+<p>There are two ways to download the ICU4J releases.
+
+<ul type="disc">
+  <li><b>Official Release Snapshot:</b><br>
+
+    If you want to use ICU4J (as opposed to developing it), your best
+    bet is to download an official, packaged version of the ICU4J
+    source code.&nbsp; These versions are tested more thoroughly than
+    day-to-day development builds, and they are packaged in zip files
+    for convenient download.&nbsp; These packaged files can be found
+    at <a href="http://oss.software.ibm.com/icu4j/download/index.html">http://oss.software.ibm.com/icu4j/download/index.html</a>.&nbsp; If a packaged snapshot is named <b>ICU4JXXXXXX.zip</b>, where XXXXXX is
+    the release version number.&nbsp; Please unzip this file.&nbsp; It
+    will reconstruct the source directory. </li>
+</ul>
+
+<ul type="disc">
+  <li><b>CVS Source Repository:</b><br>
+    If you are interested in developing features, patches, or bug fixes for ICU4J, you should
+    probably be working with the latest version of the ICU4J source code. You will need to
+    check the code out of our CVS repository to ensure that you have the most recent version
+    of all of the files. There are several ways to do this: <br>
+    <ul type="circle">
+      <li>WebCVS:<br>
+        If you want to browse the code and only make occasional downloads, you may want to use
+        WebCVS. It provides a convenient, web-based interface for browsing and downloading the
+        latest version of the ICU4J source code and documentation. You can also view each file's
+        revision history, display the differences between individual revisions, determine which
+        revisions were part of which official release, and so on. <br>
+      </li>
+      <li>WinCVS:<br>
+        If you will be doing serious work on ICU4J, you should probably install a CVS client on
+        your own machine so that you can do batch operations without going through the WebCVS
+        interface. On Windows, we suggest the WinCVS client. To download ICU4J via WinCVS: <ol>
+          <li>Install the WinCVS client, which you can download from the <a
+            href="http://www.wincvs.org">http://www.wincvs.org</a>.</li>
+          <li>Select <strong>Preferences</strong> from the <strong>Admin</strong> menu.<ol type="a">
+              <li>On the <strong>General</strong> tab panel: Set your <strong>CVSROOT</strong> to &quot;<strong>:pserver:anoncvs@oss.software.ibm.com:/usr/cvs/icu4j</strong>&quot;.<br>
+                Leave other options on this page at their default.</li>
+              <li>On the <strong>Ports</strong> tab panel: Check the <strong>pserver</strong> checkbox and
+                enter port <strong>2401</strong>.</li>
+            </ol>
+          </li>
+          <li>Click on the Login menu button (<strong>Admin</strong> menu). Enter in  &quot;<strong>anoncvs</strong>&quot; when requested.</li>
+          <li>To extract the most recent version of ICU4J, select <strong>Checkout module</strong>
+            from the <strong>Create</strong> menu. Specify &quot;<strong>icu4j</strong>&quot; for the
+            module name. This will create a new copy of the workspace on your local hard drive.</li>
+          <li>In the future, you can download updated files from the repository to your hard drive
+            using the <strong>Update selection</strong> item in the <strong>Modify</strong> menu.<br>
+          </li>
+        </ol>
+      </li>
+      <li>CVS command line:<br>
+        You can also check out the repository anonymously on UNIX using the following commands,
+        after first setting your CVSROOT to point to the ICU4J repository: <pre><code>export CVSROOT=:pserver:anoncvs@oss.software.ibm.com:/usr/cvs/icu4j 
+cvs login CVS password: anoncvs 
+cvs checkout icu4j 
+cvs logout</code></pre>
+      </li>
+    </ul>
+  </li>
+</ul>
+
+<p>For more details on how to download ICU4J directly from the web site, please also see <a
+href="http://oss.software.ibm.com/icu4j/download/index.html">http://oss.software.ibm.com/icu4j/download/index.html</a>
+</p>
+
+<h3><a NAME="WhatContain"></a><u>The Structure and Contents of ICU4J</u></h3>
+
+<p>Below, <b>$Root</b> is the placement of the icu directory in your file system, like
+&quot;drive:\...\icu4j&quot; in your environment. &quot;drive:\...&quot; stands for any
+drive and any directory on that drive that you chose to install icu4j into. </p>
+
+<p><b>Information and build files:</b></p>
+
+<table BORDER="1" CELLPADDING="3">
+  <tr>
+    <td>readme.html<br>
+        (this file)</td>
+    <td>A description of ICU4J (International Components for Unicode for Java)</td>
+  </tr>
+  <tr>
+    <td>releasenotes.html
+    <td>A description of features and changes in this and prior releases of ICU4J</td>
+  </tr>
+  <tr>
+    <td>license.html</td>
+    <td>The X license, used by ICU4J</td>
+  </tr>
+  <tr>
+    <td>build.bat</td>
+    <td>A convenience bat file for building ICU4J with Ant on Windows</td>
+  </tr>
+  <tr>
+    <td>build.sh</td>
+    <td>A convenience sh file for building ICU4J with Ant on Unix</td>
+  </tr>
+  <tr>
+    <td>build.xml</td>
+    <td>Ant build file. See <a href="#HowToInstallJavac">How to Install and Build</a> for more information</td>
+  </tr>
+</table>
+
+<p><b>The source directories mirror the package structure of the code.</b><br><font color="red">Core</font> packages become part of the ICU4J jar file.<br><font color="red">API</font> packages contain classes with supported API. <br><font color="red">RichText</font> classes are Core and API, but can be removed from icu4j.jar, and can be built into their own jar.</p>
+
+<table BORDER="1" CELLPADDING="3" WIDTH="623">
+  <tr>
+    <td>$Root/src/com/ibm/icu/dev<br><font color="red">Non-Core, Non-API</font></td>
+    <td>Packages used for internal development:
+    <ul>
+    <li>Data: data used by tests and in building ICU</li>
+    <li>Demos: Calendar, Holiday, Break Iterator, Rule-based Number Format, Transformations<br>(See <a href="#tryingout">below</a> for more information about the demos.)</li>
+    <li>Tests: API and coverage tests of all functionality.<br>For information about running the tests, see $Root/src/com/ibm/icu/dev/test/TestAll.java.</li>
+    <li>Tools: tools used to build data tables, etc.</li></ul></td>
+  </tr>
+  <tr>
+    <td>$Root/src/com/ibm/icu/impl<br><font color="red">Core, Non-API</font></td>
+    <td>These are utility classes used from different ICU4J core packages.</td>
+  </tr>
+  <tr>
+    <td>$Root/src/com/ibm/icu/lang<br><font color="red">Core, API</font></td>
+    <td>Character properties package.</td>
+  </tr>
+  <tr>
+    <td>$Root/src/com/ibm/icu/math<br><font color="red">Core, API</font></td>
+    <td>Additional math classes.</td>
+  </tr>
+  <tr>
+    <td>$Root/src/com/ibm/icu/text<br><font color="red">Core, API</font></td>
+    <td>Additional text classes.  These add to, and in some cases replace, related core Java classes:
+      <ul>
+      <li>Arabic shaping
+      <li>Break iteration
+      <li>Date formatting
+      <li>Number formatting
+      <li>Transliteration
+      <li>Normalization
+      <li>String manipulation
+      <li>Collation
+      <li>String search
+      <li>Unicode compression
+      <li>Unicode sets
+    </ul>
+    </td>
+  </tr>
+  <tr>
+    <td>$Root/src/com/ibm/icu/util<br><font color="red">Core, API</font></td>
+    <td>Additional utility classes:
+    <ul>
+    <li>Calendars - Gregorian, Buddhist, Hebrew, Islamic, Japanese
+    <li>Holiday</li>
+    <li>TimeZone</li>
+    <li>VersionInfo</li>
+    <li>Iteration</li>
+    </ul>
+    </td>
+  </tr>
+  <tr>
+    <td>$Root/src/com/ibm/richtext<br><font color="red">RichText</font></td> 
+    <td>Styled text editing
+    package. This includes demos, tests, and GUIs for editing and
+    displaying styled text.  The richtext package provides a
+    scrollable display, typing, arrow-key support, tabs, alignment and
+    justification, word- and sentence-selection (by double-clicking
+    and triple-clicking, respectively), text styles, clipboard
+    operations (cut, copy and paste) and a log of changes for
+    undo-redo.  Richtext uses Java's TextLayout and complex
+    text support (provided to Sun by the ICU4J team).</td>
+  </tr>
+</table>
+
+<p><b>Building ICU4J creates and populates the following directories:</b> </p>
+
+<table BORDER="1" CELLPADDING="3">
+  <tr>
+    <td>$Root/classes</td>
+    <td>contains all class files</td>
+  </tr>
+  <tr>
+    <td>$Root/doc</td>
+    <td>contains JavaDoc for all packages</td>
+  </tr>
+</table>
+
+<p><b>Data organization:</b> </p>
+
+<p>ICU4J data is stored in the following locations:
+
+<table BORDER="1" CELLPADDING="3" WIDTH="623">
+  <tr>
+    <td><code>com.ibm.icu.impl.data</code></td>
+    <td>Holds data used by the ICU4J core packages (<code>com.ibm.icu.lang</code>, <code>com.ibm.icu.text</code>, <code>com.ibm.icu.util</code>, <code>com.ibm.icu.math</code> and <code>com.ibm.icu.text</code>). In particular, all resource information is stored here.</td>
+  </tr>
+  <tr>
+    <td><code>com.ibm.icu.dev.data</code></td>
+    <td>Holds data that is not part of ICU4J core, but rather part of a test, sample, or demo.</td>
+  </tr>
+</table>
+
+<h3><u><a name="API"></a>Where to get Documentation</u></h3>
+
+<p>The <a href="http://oss.software.ibm.com/icu/userguide/">ICU user's guide</a> contains lots of general information about ICU, in its C, C++, and Java incarnations.</p>
+
+<p>The complete API documentation for ICU4J (javadoc) is available on the ICU4J web site, and can be built from the sources: 
+
+<ul>
+  <li><a href="http://oss.software.ibm.com/icu4j/doc/index.html">Index to all ICU4J API</a></li>
+  <li>International Calendars &#150; <a href="http://oss.software.ibm.com/icu4j/doc/com/ibm/icu/util/IslamicCalendar.html">Islamic</a>,
+    <a href="http://oss.software.ibm.com/icu4j/doc/com/ibm/icu/util/BuddhistCalendar.html">Buddhist</a>, <a
+    href="http://oss.software.ibm.com/icu4j/doc/com/ibm/icu/util/HebrewCalendar.html">Hebrew</a>, <a
+    href="http://oss.software.ibm.com/icu4j/doc/com/ibm/icu/util/JapaneseCalendar.html">Japanese</a>.</li>
+  <li><a href="http://oss.software.ibm.com/icu4j/doc/com/ibm/icu/text/Normalizer.html">Unicode Normalization</a> &#150;
+    Canonical text representation for W3C.</li>
+  <li><a href="http://oss.software.ibm.com/icu4j/doc/com/ibm/icu/text/NumberFormat.html">Number Format Enhancements</a> &#150;
+    Scientific Notation, Spelled out.</li>
+  <li><a href="http://oss.software.ibm.com/icu4j/doc/com/ibm/icu/text/BreakIterator.html">Enhanced word-break detection</a>
+    &#150; Rule-based, supports Thai</li>
+<li><a href="http://oss.software.ibm.com/icu4j/doc/com/ibm/icu/text/Transliterator.html">Transliteration</a> &#150; A general framework for onverting text from one format to another, e.g. Cyrillic to Latin, or Hex to Unicode.
+  <li>Unicode Text <a href="http://oss.software.ibm.com/icu4j/doc/com/ibm/icu/text/UnicodeCompressor.html">Compression</a> &amp;
+    <a href="http://oss.software.ibm.com/icu4j/doc/com/ibm/icu/text/UnicodeDecompressor.html">Decompression</a> &#150; 2:1
+    compression on English Unicode text.</li>
+  <li>Collation - <a href="http://oss.software.ibm.com/icu4j/doc/com/ibm/icu/text/RuleBasedCollator.html">Rule-based sorting</a>, <a href="http://oss.software.ibm.com/icu4j/doc/com/ibm/icu/text/StringSearch.html">Efficient multi-lingual searching</a> </li>
+</ul>
+
+<h3><a NAME="HowToInstallJavac"></a><u>How to Install and Build</u></h3>
+
+<p>To install ICU4J, simply place the prebuilt jar file <strong>icu4j.jar</strong> on your
+Java CLASSPATH.&nbsp; No other files are needed.</p>
+
+<p>To build ICU4J, you will need a Java2 JDK and the Ant build system.
+We strongly recommend using the Ant build system to build ICU4J:</p>
+
+<ul>
+  <li>It's recommended to install both the JDK and Ant somewhere <em>outside</em> the ICU4J
+    directory. For example, on Linux you might install these
+    in /usr/local.</li>
+  <li>Install a recent JDK, version 1.3.x or 1.4.x will work.</li>
+  <li><p>Next install the <a href="http://jakarta.apache.org/ant/"><strong>Ant</strong></a> build
+    system, part of the Apache Software Foundation's <a href="http://jakarta.apache.org/"><strong>Jakarta</strong></a>
+    project. Ant is a portable, Java-based build system similar to make. ICU4J uses Ant
+    because it introduces no other dependencies, it's portable, and it's easier to manage than
+    a collection of makefiles. We currently build ICU4J using a single makefile on both
+    Windows 9x and Linux using Ant.  The build system requires Ant 1.4 or later.</p>
+    <p>Installing Ant is straightforward. Download it (see <a
+    href="http://jakarta.apache.org/downloads/binindex.html">http://jakarta.apache.org/downloads/binindex.html</a>),
+    extract it onto your system, set some environment variables, and add its bin directory to
+    your path. For example:<pre>    set JAVA_HOME=C:\jdk1.3.1
+    set ANT_HOME=C:\jakarta-ant
+    set PATH=%PATH%;%ANT_HOME%\bin</pre></p>
+    <p>See the current Ant documentation for details.</p>
+  </li>
+</ul>
+
+<p>Once the JDK and Ant are installed, building is just a matter of
+typing <strong>ant</strong> in the ICU4J root directory. This causes
+the Ant build system to perform a build as specified by the file
+<strong>build.xml</strong>, located in the ICU4J root directory. You
+can give Ant options like -verbose, and you can specify targets. Ant
+will only build what's been changed and will resolve dependencies
+properly.  For example:</p>
+<blockquote>
+  <pre>F:\icu4j&gt;ant tests
+Buildfile: build.xml
+Project base dir set to: F:\icu4j
+Executing Target: core
+Compiling 71 source files to F:\icu4j\classes
+Executing Target: tests
+Compiling 24 source files to F:\icu4j\classes
+Completed in 19 seconds</pre>
+</blockquote>
+
+<p>The following are some targets that you can give after <strong>ant</strong>.  For more
+targets, see the build.xml file:</p>
+<div align="left">
+
+<table border="1" cellpadding="0">
+  <tr>
+    <td>all</td>
+    <td>Build all targets.</td>
+  </tr>
+  <tr>
+    <td>core</td>
+    <td>Build the main class files in the subdirectory <strong>classes</strong>. If no target
+    is specified, core is assumed.</td>
+  </tr>
+  <tr>
+    <td>tests</td>
+    <td>Build the test class files.</td>
+  </tr>
+  <tr>
+    <td>demos</td>
+    <td>Build the demos.</td>
+  </tr>
+  <tr>
+    <td>tools</td>
+    <td>Build the tools.</td>
+  </tr>
+  <tr>
+    <td>docs</td>
+    <td>Run javadoc over the main class files, generating an HTML documentation tree in the
+    subdirectory <strong>doc</strong>.</td>
+  </tr>
+  <tr>
+    <td>jar</td>
+    <td>Create a jar archive <strong>icu4j.jar</strong> in the root ICU4J directory containing
+    the main class files.</td>
+  </tr>
+  <tr>
+    <td>zip</td>
+    <td>Create a zip archive of the source, docs, and jar file for distribution. The zip file <strong>icu4jYYYYMMDD.zip</strong>
+    will be created in the directory <em>above</em> the root ICU4J directory, where YYYYMMDD
+    is today's date. Any existing file of that name will be overwritten.</td>
+  </tr>
+  <tr>
+    <td>zipsrc</td>
+    <td>Like the <strong>zip</strong> target, without the docs and the jar file. The zip file <strong>icu4jsrcYYYYMMDD.zip</strong>
+    will be created in the directory <em>above</em> the root ICU4J directory.</td>
+  </tr>
+  <tr>
+    <td>richedit</td>
+    <td>Build the richedit core class files and tests.
+  </tr>
+  <tr>
+    <td>richeditJar</td>
+    <td>Create the richedit jar file (which contains only the richedit core class files).
+    The file <strong>richedit.jar</strong>
+    will be created in the <strong>./richedit</strong> subdirectory. Any existing file of 
+    that name will be overwritten.</td>
+  </tr>
+  <tr>
+    <td>richeditZip</td>
+    <td>Create a zip archive of the richedit docs and jar file for distribution. The zip file <strong>richedit.zip</strong>
+    will be created in the <strong>./richedit</strong> subdirectory. Any existing file of 
+    that name will be overwritten.</td>
+  </tr>
+  <tr>
+    <td>clean</td>
+    <td>Remove all built targets, leaving the source.</td>
+  </tr>
+</table>
+</div>
+
+<p>For more information, read the Ant documentation and the <strong>build.xml</strong>
+file.</p>
+
+<p>After doing a build it is a good idea to run all the icu4j tests by typing <br>&quot;java
+-classpath $Root/classes -DUnicodeData=$Root/src/com/ibm/icu/dev/data/unicode com.ibm.dev.test.TestAll&quot;.</p>
+
+<p>(If you are allergic to build systems, as an alternative to using
+Ant you can build by running javac and javadoc directly. This
+is not recommended. You may have to manually create destination
+directories.)</p>
+
+<h3><a name="tryingout"></a><u>Trying Out ICU4J</u></h3>
+
+<p><strong>Note:</strong> the demos provided with ICU4J are for the
+most part undocumented.  This list can show you where to look, but you'll
+have to experiment a bit.  The demos (with the
+exception of richedit) are <strong>unsupported</strong> and may change
+or disappear without notice.</p>
+<p>The icu4j.jar file contains only the core ICU4J classes, not the
+demo classes, so unless you build ICU4J there is little to try out.
+
+<h4>Rich Edit</h4>
+To try out the <strong>richedit</strong> package, first build the richeditJar target.
+This is a 'runnable' jar file.  To run the richedit demo, type: 
+<tt><blockquote>  java -jar $Root/richedit/richedit.jar</blockquote></tt>
+
+This will present an empty edit pane with an awt interface.</p>
+
+<p>With a fuller command line you can try out other options, for example:
+<tt><blockquote>   java -classpath $Root/richedit/richedit.jar com.ibm.richtext.demo.EditDemo [-swing][file]</blockquote></tt>
+This will use an awt GUI, or a swing GUI if
+<tt>-swing</tt> is passed on the command line.  It will open a text
+file if one is provided, otherwise it will open a blank page.  Click
+to type.</p>
+<p>
+You can add tabs to the tab ruler by clicking in the ruler while holding down the control key.
+Clicking on an existing tab changes between left, right, center, and decimal tabs.  Dragging
+a tab moves it, dragging it off the ruler removes it.</p>
+<p>
+You can experiment with complex text by using the keymap functions.
+Please note that these are mainly for demo purposes, for real work
+with Arabic or Hebrew you will want to use an input method.  You will
+need to use a font that supports Arabic or Hebrew, 'Lucida Sans' (provided
+with Java) supports these languages.</p>
+
+<h4>Other demos</h4>
+<p>The other demo programs are <strong>not supported</strong> and exist only to let you
+experiment with the ICU4J classes.  First, build ICU4J using <tt>ant&nbsp;all</tt>.  Then try
+one of the following:
+<ul>
+<li><tt>java -classpath classes com.ibm.icu.dev.demo.calendar.CalendarApp</tt>
+<li><tt>java -classpath classes com.ibm.icu.dev.demo.holiday.HolidayCalendarDemo</tt>
+<li><tt>java -classpath classes com.ibm.icu.dev.demo.rbbi.TextBoundDemo</tt><br>(Click in the text, then use <tt>ctrl-N</tt> and <tt>ctrl-P</tt> to select the next or previous block of text.)
+<li><tt>java -classpath classes com.ibm.icu.dev.demo.rbnf.RbnfDemo</tt>
+<li><tt>java -classpath classes com.ibm.icu.dev.demo.translit.Demo</tt>
+</ul>
+</p>
+
+<a name="resources">
+<h3><u>ICU4J Resource Information</u></h3>
+</a>
+Starting with release 2.1, ICU4J includes its own 
+resource information
+which is completely independent of the JDK resource information.  The
+new ICU4J information is equivalent to the information in ICU4C and
+ultimately derives from the same source.  This allows ICU4J 2.1 and above 
+to be
+built on, and run on, JDK 1.4.
+</p>
+<p>
+By default the ICU4J distribution includes all of the new resource
+information.  It is located in the package com.ibm.icu.impl.data, as a
+set of class files named "LocaleElements" followed by the names of
+locales in the form _xx_YY_ZZZZ, where 'xx' is the two-letter language
+code, 'YY' is the country code, and 'ZZ' (which can be any length) is
+a variant.  Many of these fields can be omitted.  Locale naming is
+documented the Locale class, java.util.Locale, and the use of these
+names in searching for resources is documented in
+java.util.ResourceBundle.
+</p>
+<p>
+Some of these files require separate binary data.  The names of the
+binary data files start with "CollationElements", then the
+corresponding Locale string, and end with '.res'.  Another data file
+(only one at the moment) starts with the name "BreakDictionaryData",
+the corresponding Locale string, and ends with '.ucs'.
+</p>
+<p>
+Some of the LocaleElements files share data with other LocaleElements
+files, because some Locale names have changed. For example, he_IL used
+to be iw_IL.  In order to support both names but not duplicate the
+data, one of the class files refers to the other class file's data.
+</p>
+<p>
+The list of supported resources is found in a file called
+LocaleElements_index.class.  This contains the names of all the
+LocaleElements resources and is the source of the information returned
+by API such as Calendar.getAvailableLocales. (Note: for ease of
+customization this probably should be a text file).
+</p>
+<p>
+LocaleElements files form a hierarchy, with up to four levels: a root,
+language, region (country), and variant.  Searches for locale data
+attempt to match as far down the hierarchy as possible, for example,
+'he_IL' will match LocaleElements_he_IL, but 'he_US' will match
+LocaleElements_he (since there is no 'US' variant for 'he', and
+'xx_YY' will match LocaleElements (since there is no 'xx' language
+code in the LocaleElements hierarchy).  Again, see
+java.util.ResourceBundle for more information.
+</p>
+<p>
+With this in mind, the way to remove LocaleData is to make sure to
+remove all dependencies on that data as well.  For example, if you
+remove LocaleElements_he.class, you need to remove
+LocaleElements_he_IL.class, since it is lower in the hierarchy, and
+you must remove LocaleElements_iw.class, since it references
+LocaleElements_he, and LocaleELements_iw_IL.class, since it depends on
+it (and also references LocaleElements_he_IL).  For another example,
+if you remove CollationElements_zh__PINYIN.res, you must also remove
+LocaleElements_zh__PINYIN.class, since it depends on the
+CollationElements_zh__PINYIN.res.
+</p>
+
+<p>
+Unfortunately, the jar tool in the JDK provides no way to remove items
+from a jar file.  Thus you have to extract the resources, remove the
+ones you don't want, and then create a new jar file with the remining
+resources.  See the jar tool information for how to do this.  Before
+'rejaring' the files, be sure to thoroughly test your application with
+the remaining resources, making sure each required resource is
+present.
+</p>
+
+<h3>Developing Resources to be used with ICU4J</h3>
+<p>
+ICU4J 2.1 and above uses the standard class lookup mechanism.  This means 
+any ppropriately named resource on the CLASSPATH will be located, in the
+order listed in the classpath.
+</p>
+<p>
+If you create a resource file
+com.ibm.icu.impl.data.LocaleElements_xx_YY.class, and list it on the
+CLASSPATH before icu4j.jar, your resource will be used in place of any
+existing LocaleElements_xx_YY resource in icu4j.  This is a good way
+to try out changes to resources.  You can, for example, include the
+resource in your application's jar file and list it ahead of
+icu4j.jar.
+</p>
+<p>
+In order to create new resources, you first must thoroughly understand
+the various elements contained in the resource files, their syntax and
+dependencies.  You cannot simply 'patch' existing resource files with
+a single change because the new file completely replaces the old file
+in the resource hierarchy.  In general, the new resource file should
+contain all the different data that the old one did, plus your
+changes.
+</p>
+<p>
+Adding a new 'leaf' resource is easiest.  Elements defined in that
+resource will override corresponding ones in the resources further up
+the hierarchy.  Thus you can, for example, try out new localized names
+of days of the week, as they are all contained in one element.  The
+variant mechanism can be used to temporarily try out new versions of
+existing resource elements (though we don't recommend shipping this
+way).  Note though that some resources have detailed dependencies on
+each other, so that you cannot simply assume that a new element with
+the same structure and number of contents will 'just work.'
+</p>
+<p>
+Patching an 'internal' resource (say, one corresponding to an existing
+language resource that has children) requires careful analysis of the
+contents of the resources.
+</p>
+
+<p>
+LocaleElements resource data in ICU4J is checked in to the
+repository as precompiled class files.  This means that inspecting the
+contents of these resources is difficult.  They are compiled from java
+files that in turn are machine-generated from ICU4C binary data, using
+the genrb tool in ICU4C.  You can view the contents of the ICU4C text
+resource files to understand the contents of the ICU4J resources, as
+they are the same.
+</p>
+
+<h3>Developing ICU4J Resources</h3>
+<p>
+Currently only the LocaleElements resource data is shared, other ICU
+resources (calendar, transliterator, etc.) are still checked in
+directly to ICU4J as source files.  This means that development and
+maintenance of these resources continues as before, only
+LocaleElements resource data has been changed in ICU4J 2.1.  This
+probably will change in the future once we work out a reasonable
+mechanism for storing and generating the resource data.
+</p>
+<p>
+One goal of using the same resource data as ICU4C is to avoid keeping
+redundant copies of the resource data.  Currently there is no separate
+repository of the 'master' resource data, it is checked in to ICU4C,
+and the tools for converting it to .java files are ICU4C tools.  This
+is inconvenient for working in Java, but since maintenance of ICU4J
+and ICU4C is supposed to go on 'in parallel,' as a practical matter
+people will have to be familiar with development in both C and Java,
+and with the conventions and structure of each project.  Additionally,
+sharing of data means that modifications to data immediately impact
+both projects (as it should) and thus both projects need to be tested
+when such changes are made.  The bulk of the tools are currently on
+the ICU4C side, and will likely stay that way, so this seems like a
+reasonable initial approach to sharing the data.
+</p>
+
+<p>
+While prototyping of LocaleElements data can occur in either Java or
+C, the final version should be checked in to ICU4C in text format.
+Genrb is then run to generate the .java and .res files.  They are then
+compiled and jar'd into the file ICULocaleData.jar.  The resulting jar
+file is then checked in to ICU4J as
+src/com/ibm/icu/dev/data/ICULocaleData.jar.  (This is not great but it
+allows ICU4J to be downloaded and built as one project, instead of
+two, one for locale data and one for ICU4J proper.  Given the 2.2
+schedule it wasn't possible to work out the larger data sharing
+problem in time, so we tried to limit the impact to just what was
+needed to get JDK 1.4 support up and running.)
+</p>
+
+<p>
+The files in ICULocaleData.jar get extracted to com/ibm/icu/impl/data in
+the build directory when the 'core' target is built.  Thereafter, as
+long as the file LocaleElements_index.class file is untouched, they will
+not be extracted again.  Building the 'resource' target will force the
+resources to once again be extracted.  Extraction will 
+overwrite any corresponding .class files already in that directory.
+</p>
+
+<h3><a name="WhereToFindMore"></a><u>Where to Find More Information</u></h3>
+
+<p>For information specific to this current release, please refer to the <a href="releasenotes.html">releasenotes.html</a></p>
+
+<p><a href="http://oss.software.ibm.com/icu4j">http://oss.software.ibm.com/icu4j</a> is a
+pointer to general information about the International Components for Unicode in Java </p>
+
+<p><a href="http://www.ibm.com/developer/unicode">http://www.ibm.com/developer/unicode</a> is a pointer to
+information on how to make applications global. </p>
+
+<h3><a NAME="SubmittingComments"></a><u>Submitting Comments, Requesting Features and
+Reporting Bugs</u></h3>
+
+<p>Your comments are important to making ICU4J successful.&nbsp; We are committed
+to fixing any bugs, and will use your feedback to help plan future releases.</p>
+
+<p>To submit comments, request features and report bugs, contact us through the <a href=http://oss.software.ibm.com/icu4j/archives/index.html>ICU4J mailing list</a>.<br>
+While we are not able to respond individually to each comment, we do review all comments.</p>
+<p>Thanks for your interest in ICU4J!</p>
+
+<hr size="2" width="100%" align="center">
+
+<p><i><font size="-1">Copyright © 2002 International Business Machines Corporation and others. All Rights
+Reserved.<br>
+5600 Cottle Road, San José, CA 95193
+</font></i></p>
+
+</body>
+</html>
diff --git a/releasenotes.html b/releasenotes.html
new file mode 100644
index 0000000..bcf9390
--- /dev/null
+++ b/releasenotes.html
@@ -0,0 +1,234 @@
+<html>
+<head>
+<title>ICU4J 2.2 Release Notes</title>
+<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
+<!--
+*******************************************************************************
+* Copyright (C) 2001-2002, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/Attic/releasenotes.html,v $
+* $Date: 2002/08/16 15:51:35 $
+* $Revision: 1.7 $
+*
+*******************************************************************************
+-->
+</head>
+
+<body bgcolor="#FFFFFF">
+<!--#include virtual="/icu/ssi/header.html" --> 
+    <h2>International Components for Unicode for Java</h2>
+    <h3>Release Notes for ICU4J 2.2</h3>
+
+<hr size="2" width="100%" align="center">
+    <p><b>Release Date</b><br>
+    August 15th, 2002</p>
+
+<p>For the most recent
+      release, see the <a href="http://oss.software.ibm.com/icu4j/download/index.html">
+      ICU4J download site</a>.
+    </P>
+
+    <p><B>What's new in Release 2.2</B></p>
+
+<ul>
+  <li><b>Unicode 3.2 support</b>
+    <ul>
+      <li>All properties and algorithms are upgraded to <a href="http://www.unicode.org/reports/tr28/">Unicode
+        3.2</a>.
+      <li>The UCA (<a href="http://www.unicode.org/reports/tr10/">Unicode
+        Collation Algorithm</a>) table is updated to the current version 3.1.1,
+        with Unicode 3.2-based canonical closure.
+      <li>Most Unicode properties are now <a href="http://oss.software.ibm.com/cvs/icu/~checkout~/icuhtml/design/ucd_icu.html">available
+        via direct APIs, and in UnicodeSet</a>.</li>
+    </ul>
+  </li>
+  <li><b>Collation</b><br>
+    The collation engine has been completely rewritten to be conformant to the
+    latest version of the UCA, and to use the same performance enhancements
+    available in ICU4C. Compared to the JDK, it is dramatically faster, has much
+    smaller sort keys, more customization, and better and additional
+    locale-specific data. For more details, see <a href="#collation">Collation
+    Enhancements</a> below.
+  <li><b>Normalization</b><br>
+    The Normalization service adds several high performance functions for:
+    <ul>
+      <li>fast concatenation, preserving NFC and NFD.
+      <li>fast detection of normalized text
+      <li>fast canonical equivalance and/or case-insensitive matching</li>
+    </ul>
+  <li><b>Transliteration</b><br>
+    There are now transliterators for all scripts used by ICU locales. In
+    addition, mixed-script text can be automatically transliterated to a target
+    script.
+  <li><b>Alternate currency formatting</b><br>
+    ICU permits arbitrary currencies to be formatted for display according to
+    arbitrary locales, such as formatting Yen amounts for the US.
+  <li><b>UnicodeSets</b><br>
+    UnicodeSets now permit strings as well as characters, so that they can
+    contain grapheme-clusters. UnicodeSetIterator provides a fast mechanism for
+    iterating through the contents (code points and strings) of a UnicodeSet.
+    For code points the iteration is either by individual code point or by
+    ranges.
+  <li><b>General improvements</b><br>
+    Performance has been enhanced in a number of services, and a number of
+    significant bugs have been fixed.</li>
+</ul>
+  <p>Please also note the <a href="#repackage">packaging</a> and <a href="#ResourceData">resource data</a> changes
+    introduced with ICU4J 2.1, described below.</p>
+
+     <P><B>Reference Platforms</B></P>
+      <p>
+      The reference platforms for version 2.2 are:<ul>
+<li> Win2000, IBM JDK 1.3
+<li> Solaris 2.7, Sun JDK 1.3.1
+<li> AIX 5.1, IBM JDK 1.3
+</ul>
+      </p>
+      <P>
+      In release 2.2, there are 2 known non-reference platform compilers that fail compiling ICU4J source code, IBM JDK 1.3.1_02 and Jikes 1.16. Use ICU4J on unsupported JVMs and non-reference platform compilers at your own risk.</P>
+
+      <p><b>Warnings</b></p>
+      <p>
+         In release 2.2, there is a limitation with pattern handling with DecimalFormat when a percent or permille sign is included.
+      </p>
+      <p>
+      <ul>
+          <li> Quoted percent or permille signs, which should be treated as literals, are instead treated as if they were unquoted.
+          <li> Patterns involving percent or permille signs will be generated with localized pattern characters for those signs, when a non-localized pattern is requested.  If such a pattern is subsequently applied to a DecimalFormat as a non-localized pattern, the percent or permille signs will not be recognized if they differ from the non-localized signs in the locale being used.
+      </ul>
+      </p>
+      <p>These problems will be fixed in the next release.</p>
+
+<p><b>For More Information</b></p>
+
+      <p>For further detailed information about the ICU4J library, please refer to the
+      <A href="readme.html">readme.</A>
+      </p>
+
+<hr size="2" width="100%" align="center">
+
+    <p><h3><a name="collation">Collation Enhancements</a></h3></p> 
+
+<p>ICU4J's collation has been upgraded and now differs significantly from the JDK's implementation (originally provided by us several years ago).</p>
+
+<p>ICU's collation is, in general, much more efficient than the JDK's. (The time to generate sort keys is longer, because they are so much shorter and more efficient to process).  For instance:
+<ul>
+  <li>ICU4J can correctly process FCD format strings with normalization off.  The JDK has no notion of FCD. Much user text is in FCD form (for more information about FCD, see <a href="http://www.unicode.org/notes/tn5/">Unicode Technical Note #5</a>).</li>
+  <li>CollationKeys generated by ICU4J are compressed, and as compared with the JDK's, can be up to 70% smaller (e.g. in the case of Latin characters).</li>
+  <li>String comparison in ICU is faster than the JDK's. In our tests of Latin characters, it took just 35% of the JDK's time. </li>
+</ul></p>
+
+<p>Although ICU4J's collation API is very compatable with the JDK's, there are some differences.  Here is a listing of the main ones:
+<ul>
+  <li>ICU4J supports <b>quaternary</b> and <b>identical</b> strength, the JDK does not.</li>
+  <li> ICU4J supports extra collation options, the JDK does not:</li>
+    <ul>
+      <li>alternate handling</li>
+      <li>case level sort</li>
+      <li>upper case first or lower case first switch</li>
+    </ul>
+  <li>ICU4J supports Unicode 3.2, while the JDK (as of version 1.4) only supports Unicode 3.0.</li>
+  <li>ICU4J does not allow turning off Thai reordering, while the JDK does.  This is because in Unicode 3.2 Thai reordering is always required. The JDK uses '!' in the rules to turn off Thai reordering; ICU4J ignores it.</li>
+  <li>ICU4J supports additional rule syntax for various options, for example, setting <b>variable-top</b>, code point collation element positioning, and others.  For details, see the <a href="http://oss.software.ibm.com/icu/userguide/Collate_Customization.html">user's guide</a>.
+  <li>ICU4J's version of CollationKey has a public constructor, so subclasses of RuleBasedCollator can create their own CollationKeys.  This was overlooked in the JDK (mea culpa).</li>
+  <li>The FULL_DECOMPOSITION mode used in the JDK is unnecessary for the UCA (and actually incorrect in some cases). ICU4J does not define this mode; clients should use CANONICAL_DECOMPOSITION instead.
+  <li>ICU4J uses the standard UCA default ordering, plus fixes and additions for
+    different languages, so the sorting order will differ from the JDK's.
+  <li>The CollationKeys generated by ICU4J and the JDK are different, so they cannot be compared.</li>
+</ul>
+</p>
+
+<hr size="2" width="100%" align="center">
+    <h3><a name="repackage">Package Restructuring</a></h3> 
+
+<p>Starting with enhancement release 2.1 of ICU4J, the cvs repository
+and package organization has changed.  This helps us to more cleanly
+organize the classes, and to clarify relationships and differences
+between parts of the project.</p>
+
+<p>The new high-level structure is as follows:<br><tt><pre>
+com
+   .ibm
+       .richtext       ---  root of rich edit control
+       .icu            ---  root of icu
+            .dev       ---  classes excluded from icu4j.jar (development only)
+                .data  ---  data (e.g. unicode data files)
+                .demo  ---  demos (e.g. calendar, holiday, translit)
+                .test  ---  api tests grouped by functionality
+                .tool  ---  tools used in development
+            .impl      ---  root of 'internal' classes 
+                .data  ---  shipped data (text and resources)
+            .lang      ---  similar to java.lang
+            .math      ---  similar to java.math
+            .text      ---  similar to java.text
+            .util      ---  similar to java.util
+</pre></tt></p>
+
+<p>By and large class names didn't change, only packaging, so changing 
+the packages in your source should be sufficient to resolve most problems.
+The package change <b>will break serialization</b> for those classes that are
+serializable.</p>
+
+<p>The classes in com.ibm.icu.impl are <b>internal use only</b>.
+Their javadocs are not generated, their APIs are not supported, and
+they can change APIs or disappear entirely <b>at any
+time</b>.  Many classes in this package are public in order to
+facilitate use by classes in multiple other packages, but this should not
+be construed to mean that such classes will necessarily be 'promoted'
+to full public classes in the future. Clients are warned not to depend
+on anything in this package.</p>
+
+<hr size="2" width="100%" align="center">
+    <h3><a name="ResourceData">ICU Resource Data added to ICU4J</a></h3>
+<p>Starting with JDK 1.4, the resource information that used to be
+available through public classes in java.text.resources is no longer
+available.  Sun has moved these classes to an internal package.  This
+has two consequences.  One, both the format and contents of the
+resources can now change at any time-- dot releases and special bugfix
+releases can be different.  Two, the resources are now no longer
+accessible without explicit permission by the java user.
+</p>
+<p>
+For these reasons, starting with release 2.1, ICU4J includes its own 
+resource information
+which is completely independent of the JDK resource information.  The
+new ICU4J information is equivalent to the information in ICU4C and
+ultimately derives from the same source.  This allows ICU4J 2.1 and above 
+to be
+built on, and run on, JDK 1.4.
+</p>
+<p>
+There are two main consequences of this decision.  The first is an
+increase in size of ICU4J.  The new resource information, currently
+stored as class files residing in a jar file, is approximately 1.15
+megabytes.  The second is an increased difference between ICU's
+resource information and Java's.  Neither is a clear superset of the
+other.  For example, Java core currently has more timezone information
+than ICU.  ICU's model for handling currency is also different than
+Java's.  This will change over time as new versions of Java and ICU
+are released.
+</p>
+<p>
+In addition to the resource information that corresponds to the Java
+resource information, ICU4J also includes resource information needed
+to support its additional features, such as Transliteration, Calendar,
+and DictionaryBasedBreakIterator.  This information has existed in
+some form in prior releases on ICU4J and has not greatly changed in
+size.
+</p>
+<p>For information about modifying resource information, please see
+the <a href=readme.html>readme</a>.</p>
+<hr size="2" width="100%" align="center">
+    <h3><B>License</B></h3>
+    <P>
+    Please read and understand the <a href="./license.html">license</a> 
+    included with this release before installing and using the ICU4J libraries. 
+    </P>
+
+<hr size="2" width="100%" align="center">
+<p><i><font size="-1">Copyright (C) 2002 International Business Machines Corporation and others.  All Rights Reserved.</font></i></p>
+<!--#include virtual="/icu/ssi/footer.html" --> 
+</body>
+</html>
diff --git a/src/com/ibm/icu/dev/data/TestDataElements_testaliases.java b/src/com/ibm/icu/dev/data/TestDataElements_testaliases.java
new file mode 100644
index 0000000..d428602
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/TestDataElements_testaliases.java
@@ -0,0 +1,71 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/data/TestDataElements_testaliases.java,v $
+* $Date: 2002/08/13 21:39:01 $
+* $Revision: 1.4 $
+*
+*******************************************************************************
+*/
+package com.ibm.icu.dev.data;
+
+import java.util.ListResourceBundle;
+import com.ibm.icu.impl.ICUListResourceBundle;
+
+public class TestDataElements_testaliases extends ICUListResourceBundle {
+
+    public TestDataElements_testaliases  () {
+          super.contents = data;
+    }
+    private static Object[][] data = new Object[][] { 
+                {
+                    "CollationElements",
+                    new ICUListResourceBundle.Alias("/ICUDATA/uk"),
+                },
+
+                {
+                    "anotheralias",
+                    new ICUListResourceBundle.Alias("/ICUDATA/uk/CollationElements"),
+                },
+                {
+                    "nonexisting",
+                    new ICUListResourceBundle.Alias("/ICUDATA/uk"),
+                },
+                {
+                    "referencingalias",
+                    new ICUListResourceBundle.Alias("testaliases/anotheralias/Sequence"),
+                },
+                {
+                    "simplealias",
+                    new ICUListResourceBundle.Alias("testtypes/menu/file/open"),
+                },
+                {
+                    "zoneStrings",
+                    new Object[]{
+                        new ICUListResourceBundle.Alias("/ICUDATA/en"),
+                        new ICUListResourceBundle.Alias("/ICUDATA/en"),
+
+                    },
+                },
+                {
+                    "zoneTests",
+                    new Object[][]{
+                        {
+                            "zoneAlias",
+                            new ICUListResourceBundle.Alias("/ICUDATA/en/zoneStrings"),
+                        },
+                        {
+                            "zoneAlias1",
+                            new ICUListResourceBundle.Alias("/ICUDATA/en/zoneStrings/3"),
+                        },
+                        {
+                            "zoneAlias2",
+                            new ICUListResourceBundle.Alias("/ICUDATA/en/zoneStrings/3/0"),
+                        },
+                    },
+                },
+    };
+}
diff --git a/src/com/ibm/icu/dev/data/TestDataElements_testcircularalias.java b/src/com/ibm/icu/dev/data/TestDataElements_testcircularalias.java
new file mode 100644
index 0000000..26fd942
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/TestDataElements_testcircularalias.java
@@ -0,0 +1,44 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/data/TestDataElements_testcircularalias.java,v $
+ * $Date: 2002/08/13 21:43:38 $
+ * $Revision: 1.2 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.data;
+
+import java.util.ListResourceBundle;
+import com.ibm.icu.impl.ICUListResourceBundle;
+/**
+ * @author Ram
+ *
+ * To change this generated comment edit the template variable "typecomment":
+ * Window>Preferences>Java>Templates.
+ * To enable and disable the creation of type comments go to
+ * Window>Preferences>Java>Code Generation.
+ */
+public class TestDataElements_testcircularalias  extends ICUListResourceBundle {
+    public TestDataElements_testcircularalias() {
+          super.contents = data;
+    }
+    private static Object[][] data = new Object[][] { 
+                {
+                    "aaa",
+                    new ICUListResourceBundle.Alias("testcircularalias/aab"),
+                },
+                {
+                    "aab",
+                    new ICUListResourceBundle.Alias("testcircularalias/aac"),
+                },
+                {
+                    "aac",
+                    new ICUListResourceBundle.Alias("testcircularalias/aaa"),
+                } 
+    };
+}
+
diff --git a/src/com/ibm/icu/dev/data/TestDataElements_testtypes.java b/src/com/ibm/icu/dev/data/TestDataElements_testtypes.java
new file mode 100644
index 0000000..ef38e8d
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/TestDataElements_testtypes.java
@@ -0,0 +1,145 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/data/TestDataElements_testtypes.java,v $
+ * $Date: 2002/08/13 21:47:30 $
+ * $Revision: 1.2 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.data;
+
+import java.util.ListResourceBundle;
+import com.ibm.icu.impl.ICUListResourceBundle;
+
+public class TestDataElements_testtypes extends ICUListResourceBundle {
+
+    public TestDataElements_testtypes  () {
+          super.contents = data;
+    }
+    private static Object[][] data = new Object[][] { 
+                {
+                    "binarytest",
+                    new ICUListResourceBundle.CompressedBinary(
+                        "\u0000\u000F\u0001\u0203\u0405\u0607\u0809\u0A0B" +
+                        "\u0C0D\u0E00"),
+                },
+                {
+                    "emptyarray",
+                    new String[] { 
+                    },
+                },
+                {
+                    "emptybin",
+                    new ICUListResourceBundle.CompressedBinary(null),
+                },
+                {
+                    "emptyexplicitstring",
+                    "",
+                },
+                {
+                    "emptyint",
+                    new Integer(0),
+                },
+                {
+                    "emptyintv",
+                    new Integer[] {
+                    },
+                },
+                {
+                    "emptystring",
+                    "",
+                },
+                {
+                    "emptytable",
+                    new Object[][]{
+                    },
+                },
+                {
+                    "importtest",
+                    new ICUListResourceBundle.CompressedBinary(
+                        "\u0000\u000F\u0001\u0203\u0405\u0607\u0809\u0A0B" +
+                        "\u0C0D\u0E00"),
+                },
+                {
+                    "integerarray",
+                    new Integer[] {
+                        new Integer(1),
+                        new Integer(2),
+                        new Integer(3),
+                        new Integer(-3),
+                        new Integer(4),
+                        new Integer(5),
+                        new Integer(6),
+                        new Integer(7),
+                    },
+                },
+                {
+                    "menu",
+                    new Object[][]{
+                        {
+                            "file",
+                            new Object[][]{
+                                {
+                                    "exit",
+                                    "Exit",
+                                },
+                                {
+                                    "open",
+                                    "Open",
+                                },
+                                {
+                                    "save",
+                                    "Save",
+                                },
+                            },
+                        },
+                    },
+                },
+                {
+                    "minusone",
+                    new Integer(-1),
+                },
+                {
+                    "one",
+                    new Integer(1),
+                },
+                {
+                    "onehundredtwentythree",
+                    new Integer(123),
+                },
+                {
+                    "plusone",
+                    new Integer(1),
+                },
+                {
+                    "string",
+                    new String[] { 
+                    },
+                },
+                {
+                    "stringTable",
+                    new Object[]{
+                        new String[] { 
+                        },
+
+                    },
+                },
+                {
+                    "test_underscores",
+                    "test message ....",
+                },
+                {
+                    "testescape",
+                    "tab:\u0009 cr:\f ff:\u000C newline:\n backslash:\\" +
+                    " quote=\\\' doubleQuote=\\\" singlequoutes=''",
+                },
+                {
+                    "zerotest",
+                    "abc\u0000def",
+                },
+    };
+}
diff --git a/src/com/ibm/icu/dev/data/ThaiWordFreq.xls b/src/com/ibm/icu/dev/data/ThaiWordFreq.xls
new file mode 100644
index 0000000..5262038
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/ThaiWordFreq.xls
Binary files differ
diff --git a/src/com/ibm/icu/dev/data/holidays_jp.ucs b/src/com/ibm/icu/dev/data/holidays_jp.ucs
new file mode 100755
index 0000000..2e6bc49
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/holidays_jp.ucs
Binary files differ
diff --git a/src/com/ibm/icu/dev/data/rbbi/english.dict b/src/com/ibm/icu/dev/data/rbbi/english.dict
new file mode 100755
index 0000000..10f430b
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/rbbi/english.dict
Binary files differ
diff --git a/src/com/ibm/icu/dev/data/rbbi/words.txt b/src/com/ibm/icu/dev/data/rbbi/words.txt
new file mode 100755
index 0000000..a7e06ac
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/rbbi/words.txt
@@ -0,0 +1,2990 @@
+--
+--such
+a
+a'bel-mizraim
+a'iah
+abate
+abated
+abdicated
+abel
+abi'da
+abide
+abim'a-el
+abim'elech
+abim'elech's
+able
+abolish
+abolishing
+abomination
+about
+above
+abraham
+abraham's
+abram
+abram's
+abroad
+absent
+absolute
+absolved
+abundance
+abundantly
+abuses
+accad
+accept
+accepted
+accommodation
+according
+accordingly
+account
+accustomed
+achbor
+acknowledged
+acquiesce
+acquired
+across
+act
+acts
+adah
+adam
+adbeel
+add
+added
+admah
+administration
+adullamite
+advanced
+adviser
+afar
+affected
+afflicted
+affliction
+afraid
+after
+afterward
+afterwards
+again
+against
+age
+ages
+agile
+agree
+agreed
+ahuz'zath
+ai
+aid
+air
+akan
+al'lon-bacuth
+alighted
+alive
+all
+allegiance
+alliances
+allies
+allow
+allowance
+almighty
+almo'dad
+almond
+almonds
+alone
+along
+aloud
+already
+also
+altar
+alter
+altering
+although
+altogether
+alvah
+alvan
+am
+am'alek
+am'raphel
+amal'ekites
+amazement
+america
+ammonites
+among
+amongst
+amorite
+amorites
+amount
+an
+an'amim
+anah
+and
+aner
+angel
+angels
+anger
+angry
+animal
+animals
+annihilation
+anointed
+another
+another's
+answer
+answered
+any
+anything
+anywhere
+apart
+appealed
+appealing
+appear
+appeared
+appease
+appoint
+appointed
+approached
+approaching
+appropriations
+aprons
+ar'arat
+ar'ioch
+ar'vadites
+aram
+aramean
+aran
+arbitrary
+archers
+ard
+are
+are'li
+area
+arise
+ark
+arkites
+armed
+armies
+arms
+army
+aro'di
+arose
+around
+arpach'shad
+arrayed
+arrive
+art
+as
+as'enath
+ascending
+ash'kenaz
+ash'teroth-karna'im
+ashamed
+ashbel
+asher
+asher's
+ashes
+aside
+ask
+asked
+asks
+asleep
+ass
+ass's
+assemble
+assembled
+assent
+asses
+asshu'rim
+asshur
+assume
+assured
+assyria
+at
+atad
+ate
+attack
+attacked
+attained
+attempts
+attend
+attended
+attention
+authority
+avenged
+avith
+away
+awesome
+awoke
+ba'al-ha'nan
+ba'bel
+back
+backward
+bad
+bade
+bags
+baked
+baker
+balm
+bank
+banks
+barbarous
+barren
+bas'emath
+basket
+baskets
+battle
+bdellium
+be
+be'or
+be-e'ri
+bear
+bearing
+bears
+beast
+beasts
+beautiful
+became
+because
+becher
+become
+becomes
+bed
+bedad
+been
+beer-la'hai-roi
+beer-sheba
+befall
+befallen
+befalls
+before
+beg
+began
+beginning
+beguiled
+begun
+beheld
+behind
+behold
+being
+bela
+believe
+believed
+belly
+belong
+belonging
+belongs
+below
+ben-ammi
+ben-o'ni
+beneath
+benefits
+benjamin
+benjamin's
+bera
+bereaved
+bered
+bereft
+beri'ah
+beside
+besides
+besought
+best
+bethel
+bethlehem
+bethu'el
+better
+between
+beyond
+bilhah
+bilhan
+binding
+bird
+birds
+birsha
+birth
+birthday
+birthright
+bites
+bitter
+bitumen
+black
+blame
+blameless
+bless
+blessed
+blesses
+blessing
+blessings
+blighted
+blindness
+blood
+blossoms
+blot
+blotted
+blow
+bodies
+body
+boiling
+bonds
+bone
+bones
+book
+booths
+border
+bore
+born
+borne
+both
+bough
+bought
+bound
+boundaries
+bounties
+bow
+bowed
+bowing
+bowshot
+boys
+bozrah
+bracelets
+branches
+breach
+bread
+breadth
+break
+breaking
+breasts
+breath
+breathed
+bred
+breed
+breeding
+brethren
+brick
+bricks
+brimstone
+bring
+britain
+british
+broken
+bronze
+brother
+brother's
+brother-in-law
+brothers
+brought
+brow
+bruise
+budded
+build
+building
+built
+bulls
+bundle
+bundles
+buried
+burn
+burned
+burnt
+burst
+bury
+burying
+bushes
+but
+butler
+butlership
+buy
+buz
+by
+cain
+cake
+cakes
+calah
+calf
+call
+called
+calls
+came
+camel
+camel's
+camels
+camp
+camped
+can
+canaan
+canaan'
+canaanite
+canaanites
+canaanitish
+candid
+cannot
+caph'torim
+captain
+captive
+captives
+captured
+caravan
+carcasses
+care
+carefully
+carmi
+carried
+carry
+cases
+caslu'him
+cast
+cattle
+caught
+cause
+caused
+causes
+cave
+cease
+ceased
+certain
+chain
+chalde'ans
+chamber
+change
+changed
+character
+charge
+charged
+charging
+chariot
+chariots
+charters
+cheat
+cheated
+ched-or-lao'mer
+cheran
+cherubim
+chesed
+chezib
+chief
+chiefs
+child
+childbearing
+childless
+children
+children's
+choice
+choicest
+chose
+chosen
+circumcised
+circumstances
+cities
+citizens
+city
+civil
+civilized
+clans
+clean
+clear
+cleaves
+close
+closed
+clothed
+clothes
+clothing
+cloud
+clouds
+clusters
+coastland
+coasts
+coffin
+cold
+colonies
+colonies:
+colt
+colts
+combined
+come
+comely
+comes
+comfort
+comforted
+comforts
+coming
+command
+commanded
+commander
+commandments
+commerce
+commit
+committed
+common
+companies
+company
+complained
+complete
+completed
+compliance
+conceal
+conceived
+concern
+concerning
+conclude
+concubine
+concubines
+condition
+conditions
+confined
+confuse
+confused
+congress
+conjured
+connected
+connection
+connections
+consent
+consent:
+conspired
+constitution
+constrained
+constrains
+consume
+consumed
+contempt
+contended
+continually
+continue
+continued
+contract
+control
+controlling
+convulsions
+cool
+cord
+correspondence
+corrupt
+corrupted
+costly
+couch
+couched
+couches
+couching
+could
+council
+count
+counted
+countenance
+country
+course
+covenant
+cover
+covered
+covering
+cows
+created
+creation
+creator
+creature
+creatures
+creeping
+creeps
+cried
+crossed
+crossing
+crouching
+crown
+cruel
+cruelty
+cry
+crying
+cubit
+cubits
+cup
+curds
+current
+curse
+cursed
+curses
+cush
+custody
+cut
+cutting
+dainties
+damascus
+dan
+dangers
+dares
+dark
+darkness
+daughter
+daughter-in-law
+daughters
+dawned
+day
+days
+dead
+deal
+dealt
+death
+deb'orah
+deceitfully
+deceived
+decent
+decide
+decks
+declaration
+declare
+declaring
+dedan
+deed
+deep
+defeat
+defeated
+defiled
+define
+delay
+delayed
+delight
+deliver
+delivered
+delivery
+denied
+denounces
+depart
+departed
+departing
+dependent
+dependents
+depository
+depriving
+deriving
+descendants
+descending
+design
+desire
+desired
+desolate
+desolation
+despised
+despotism
+destroy
+destroyed
+destroys
+destruction
+destructive
+determined
+devoured
+devouring
+dew
+dictate
+did
+didst
+die
+died
+dies
+diklah
+dim
+din'habah
+dinah
+dinah's
+dine
+dipped
+direct
+direction
+disaster
+disavow
+discreet
+disgrace
+dishan
+dishon
+dismayed
+displeased
+displeasing
+disposed
+dissolutions
+dissolve
+dissolved
+distance
+distant
+distress
+distressed
+districts
+divide
+divided
+dividing
+divination
+divine
+divines
+do
+do'danim
+doer
+does
+doing
+domestic
+dominion
+done
+door
+dothan
+double
+doubling
+doubt
+dove
+down
+downcast
+dowry
+drank
+draw
+drawn
+dread
+dream
+dreamed
+dreamer
+dreams
+drew
+dried
+drink
+drinking
+drinks
+driven
+drove
+droves
+drunk
+dry
+dug
+dumah
+dungeon
+during
+dust
+duty
+dwell
+dwelling
+dwelt
+e'domites
+e'phraim
+e'phraim's
+each
+early
+ears
+earth
+easily
+east
+eastward
+eat
+eaten
+eating
+ebal
+eber
+eden
+eder
+edom
+effect
+egypt
+egyptian
+egyptian's
+egyptians
+ehi
+eight
+eighteen
+eighty
+eighty-seven
+eighty-six
+eighty-two
+either
+el'iphaz
+el-bethel
+el-el'ohe-israel
+el-paran
+elah
+elam
+elda'ah
+elder
+elders
+eldest
+elected
+eleven
+eli'shah
+elie'zer
+ella'sar
+elon
+else
+embalm
+embalmed
+embalming
+embrace
+embraced
+emigration
+emim
+emptied
+empty
+empty-handed
+enaim
+encamped
+encampments
+encourage
+end
+endeavored
+ended
+ending
+endowed
+ends
+enemies
+enemy
+english
+enlarge
+enlarging
+enmish'pat
+enmity
+enoch
+enosh
+enough
+enter
+entered
+entitle
+entrance
+entreat
+envied
+ephah
+epher
+ephrath
+ephron
+equal
+er
+erech
+erected
+eri
+errand
+esau
+esau's
+escape
+escaped
+esek
+eshban
+eshcol
+establish
+established
+establishing
+establishment
+eternal
+euphra'tes
+euphrates
+eve
+even
+evening
+events
+ever
+everlasting
+every
+everything
+everywhere
+evil
+evils
+evinces
+ewe
+ewes
+example
+exceedingly
+except
+exchange
+excited
+executioners
+exercise
+experience
+expert
+explain
+exposed
+exposing
+extend
+extended
+eyes
+ezbon
+ezer
+face
+faces
+facts
+failed
+fainted
+fair
+faithfulness
+fall
+fallen
+falls
+falsely
+families
+family
+famine
+famished
+far
+fare
+fared
+farewell
+fast
+fat
+father
+father's
+father-in-law
+fathers
+fatiguing
+fatness
+faults
+favor
+favorable
+fawns
+fear
+feared
+feast
+fed
+feebler
+feed
+feel
+feet
+fell
+fellow
+felt
+female
+festal
+fetch
+few
+field
+fields
+fierce
+fiercely
+fifteen
+fifth
+fifths
+fifty
+fig
+fill
+filled
+find
+finds
+fine
+finish
+finished
+fire
+firm
+firmament
+firmness
+first
+first-
+first-born
+firstlings
+fish
+fit
+five
+fixed
+flaming
+fled
+flee
+fleeing
+flesh
+floated
+flock
+flocks
+flood
+floor
+flowed
+flows
+fly
+foal
+follow
+followed
+following
+follows
+folly
+fondling
+food
+foolishly
+foot
+for
+forbidden
+force
+forced
+forces
+ford
+foreign
+foreigner
+foreigners
+foremost
+foreskin
+foreskins
+forger
+forget
+forgets
+forgive
+forgot
+forgotten
+form
+formed
+former
+formerly
+formidable
+forms
+forsaken
+forth
+fortune
+fortunes
+forty
+forty-five
+forty-seven
+found
+foundation
+fountains
+four
+fourteen
+fourteenth
+fourth
+frail
+free
+freely
+fresh
+freshly
+friend
+friendly
+friends
+fro
+from
+front
+frontiers
+fruit
+fruitful
+fruits
+fugitive
+fulfil
+fulfilled
+full
+fundamentally
+furnace
+fury
+future
+gad
+gaham
+gained
+galeed
+game
+garden
+garment
+garments
+gatam
+gate
+gather
+gathered
+gaunt
+gave
+gavest
+gaza
+gazed
+genealogies
+general
+generation
+generations
+gera
+gerar
+gershon
+get
+gether
+gift
+gifts
+gihon
+gilead
+gir'gashites
+give
+given
+givest
+giving
+go
+goat
+goats
+god
+god's
+gods
+goes
+goi'im
+going
+gold
+gomer
+gomor'rah
+gone
+good
+good-looking
+goods
+gopher
+goshen
+got
+gotten
+governed
+government
+governments
+governments:
+governor
+governors
+gracious
+graciously
+grain
+grandchildren
+grandson
+grant
+granted
+grapes
+grass
+grave
+gray
+great
+greater
+greatly
+green
+grew
+grieved
+grievous
+groping
+ground
+grow
+growing
+grown
+grows
+guard
+guards
+guile
+guilt
+guilty
+gum
+guni
+ha'mathites
+had
+hadad
+hadar
+hador'am
+hagar
+haggi
+hairs
+hairy
+half
+hallowed
+ham
+hamor
+hamor's
+hamstring
+hamul
+hand
+hands
+handsome
+hang
+hanged
+hanoch
+happened
+happiness
+happy
+haran
+harass
+harassed
+hard
+hardship
+harlot
+harlotry
+harm
+harshly
+harvest
+harvests
+has
+hast
+haste
+hastened
+hastily
+hate
+hated
+hath
+hav'ilah
+have
+haven
+havilah
+having
+haz'azon-ta'mar
+hazarma'veth
+hazo
+he
+he-asses
+he-goats
+head
+heads
+healed
+heap
+hear
+heard
+hearing
+hearken
+hearkened
+hears
+heart
+hearts
+heat
+heaven
+heavens
+heber
+hebrew
+hebrews
+hebron
+heed
+heeded
+heel
+heels
+heifer
+height
+heir
+held
+help
+helper
+heman
+hemdan
+her
+herb
+herd
+herds
+herdsmen
+here
+herself
+heth
+hewed
+hezron
+hid
+hidden
+hide
+high
+hill
+hills
+him
+himself
+hind
+hinder
+hip
+hirah
+hire
+hired
+his
+history
+hither
+hittite
+hittites
+hivite
+hivites
+hobah
+hold
+hollow
+home
+honest
+honesty
+honey
+honor
+honored
+hori
+horite
+horites
+horns
+horse's
+horsemen
+horses
+host
+hot
+hotly
+house
+household
+households
+houses
+how
+hul
+human
+humane
+humble
+humbled
+hundred
+hundredfold
+hundredth
+hunt
+hunted
+hunter
+hunting
+huppim
+husband
+husham
+hushim
+i
+if
+ill
+ill-treat
+image
+imagination
+immediate
+imnah
+impel
+importance
+imposing
+impossible
+in
+inasmuch
+incapable
+including
+increased
+indeed
+independent
+indian
+indignant
+inestimable
+inevitably
+inhabitants
+inheritance
+iniquity
+injuries
+injury
+innocence
+innocent
+inquire
+inquired
+inside
+instead
+institute
+instituted
+instructed
+instructing
+instrument
+instruments
+insult
+insurrections
+integrity
+intended
+intentions
+interpret
+interpretation
+interpretations
+interpreted
+interpreter
+interrupt
+into
+introducing
+invariably
+invasion
+invasions
+invested
+iob
+irad
+iram
+iron
+is
+is'sachar
+isaac
+isaac's
+iscah
+ish'mael
+ish'mael's
+ish'maelites
+ishbak
+ishvah
+ishvi
+israel
+israel's
+israelites
+it
+ithran
+its
+itself
+jabal
+jabbok
+jachin
+jacob
+jacob's
+jah'leel
+jahzeel
+jalam
+jamin
+japheth
+jar
+jared
+javan
+je'gar-sahadu'tha
+je'ush
+jealous
+jeb'usites
+jemu'el
+jerah
+jesting
+jetheth
+jetur
+jewelry
+jezer
+jidlaph
+jobab
+joined
+joint
+jokshan
+joktan
+jordan
+joseph
+joseph's
+journey
+journeyed
+jubal
+judah
+judah's
+judge
+judged
+judges
+judgment
+judiciary
+judith
+jurisdiction
+jury:
+just
+justice
+kad'monites
+kadesh
+ked'emah
+kedar
+keep
+keeper
+keepers
+kemu'el
+ken'ites
+ken'izzites
+kenan
+kenaz
+kept
+ketu'rah
+kid
+kids
+kill
+killed
+kind
+kindled
+kindness
+kindred
+kinds
+king
+king's
+kingdom
+kings
+kinsman
+kinsmen
+kir'iath-ar'ba
+kiss
+kissed
+kittim
+knead
+knee
+kneel
+knees
+knew
+knife
+know
+knowing
+knowledge
+known
+knows
+kohath
+korah
+laban
+laban's
+labor
+lack
+lacking
+lad
+lad's
+ladder
+lads
+laid
+lain
+lamb
+lambs
+lamech
+lamentation
+lamented
+land
+lands
+language
+languages
+languished
+large
+lasha
+last
+later
+laugh
+laughed
+laughter
+laws
+lay
+laying
+le-um'mim
+lead
+leaf
+leah
+leah's
+lean
+leap
+leaped
+learn
+learned
+least
+leave
+leaves
+led
+left
+legislate
+legislation:
+legislative
+legislature
+legislatures
+leha'bim
+length
+lentils
+lesser
+lest
+let
+letu'shim
+levey
+levi
+liberty
+lie
+lies
+life
+lifeblood
+lift
+lifted
+light
+lights
+like
+likely
+likeness
+likewise
+limping
+linen
+lingered
+lion
+lion's
+lioness
+listen
+listened
+listening
+little
+live
+lived
+lives
+livestock
+living
+lo
+load
+loaded
+lodge
+lodged
+lodging
+loins
+long
+longed
+longer
+longs
+look
+looked
+looking
+loose
+lord
+lord's
+lords
+loss
+lot
+lot's
+lotan
+lotan's
+loud
+love
+loved
+lovely
+loves
+lower
+lowered
+loyally
+lud
+ludim
+luz
+lying
+lyre
+ma'acah
+ma'halath
+ma-hal'alel
+mach-
+mach-pe'lah
+machir
+madai
+made
+mag'diel
+magicians
+magnanimity
+magog
+mahana'im
+maid
+maiden
+maids
+maidservants
+make
+maker
+making
+mal'chi-el
+male
+males
+mamre
+man
+man'ahath
+man's
+manas'seh
+manas'seh's
+mandrakes
+mankind
+manly
+manner
+mantle
+many
+mark
+marked
+marriage
+marriages
+married
+marries
+marry
+mash
+masre'kah
+massa
+master
+master's
+mate
+mating
+matred
+matter
+may
+me
+me'zahab
+me-hu'ja-el
+me-thu'sha-el
+meal
+mean
+meaning
+means
+meant
+meantime
+meanwhile
+measure
+measured
+measures
+medan
+meditate
+meet
+meets
+mehet'abel
+mel-chiz'edek
+members
+men
+men's
+mend
+mended
+menservants
+mention
+merar'i
+mercenaries
+merchants
+merciful
+merciless
+mercy
+merry
+mesha
+meshech
+mesopota'mia
+message
+messengers
+met
+methu'selah
+mibsam
+mibzar
+mid'ian
+mid'ianite
+mid'ianites
+midst
+midwife
+might
+mightier
+mightily
+mighty
+migrated
+migration
+milcah
+milch
+military
+milk
+mind
+mine
+mirth
+miscarried
+mishma
+mist
+mistress
+mizpah
+mizzah
+moab
+moabites
+mock
+mocking
+money
+monsters
+month
+months
+moon
+more
+moreh
+moreover
+mori'ah
+morning
+morsel
+mortar
+most
+mother
+mother's
+mothers
+mottled
+mount
+mountain
+mountains
+mourn
+mourned
+mourning
+mouth
+moved
+moves
+moving
+much
+multiplied
+multiply
+multitude
+muppim
+murders
+must
+mutually
+my
+myrrh
+myself
+na'amah
+na'aman
+nahath
+nahor
+nahor's
+naked
+nakedness
+name
+named
+names
+naph'tali
+naph-tu'him
+naphish
+nation
+nations
+native
+naturalization
+nature
+nature's
+near
+neba'ioth
+necessary
+necessity
+neck
+need
+negeb
+neglected
+neighboring
+neither
+nephilim
+never
+nevertheless
+new
+next
+night
+nights
+nile
+nimrod
+nin'eveh
+nine
+nineteen
+ninety
+ninety-five
+ninety-nine
+no
+noah
+noah's
+nod
+none
+noon
+nor
+north
+northward
+nose
+nostrils
+not
+nothing
+now
+number
+numbered
+numbers
+nurse
+nuts
+o
+oak
+oaks
+oath
+obal
+obedience
+obeisance
+obey
+obeyed
+object
+obstructed
+obstructing
+obtain
+obtained
+occasion
+occupation
+odious
+odor
+of
+off
+offended
+offense
+offenses:
+offer
+offered
+offering
+offerings
+office
+officer
+officers
+offices
+offspring
+oh
+ohad
+oholiba'mah
+oil
+old
+older
+oldest
+olive
+omar
+on
+onam
+onan
+once
+one
+ones
+only
+onyx
+open
+opened
+operation
+ophir
+opinions
+opposing
+opposite
+oppressed
+oppressions
+or
+order
+orders
+organizing
+ornaments
+other
+others
+ought
+our
+ours
+ourselves
+out
+outcry
+outside
+outwitted
+over
+overdriven
+overseer
+overseers
+oversight
+overtake
+overthrew
+overthrow
+overtook
+own
+owns
+oxen
+pace
+paddan
+paddan-aram
+paid
+pain
+pair
+pairs
+pallu
+paralleled
+paran
+part
+parts
+pass
+passed
+past
+pasture
+pastured
+pasturing
+path
+pathru'sim
+patient
+pau
+pay
+payment
+pe'lah
+peace
+peaceably
+peeled
+peleg
+peni'el
+penu'el
+people
+peopled
+peoples
+per'izzites
+perez
+perfidy
+perform
+perhaps
+perish
+permit
+perpetuated
+persons
+petitioned
+petitions
+pharaoh
+pharaoh's
+phicol
+philistines
+physicians
+piece
+pieces
+pigeon
+pildash
+pillar
+pinon
+pipe
+pishon
+pistachio
+pit
+pitch
+pitched
+pits
+place
+placed
+places
+plagues
+plain
+plainly
+plane
+planning
+plant
+planted
+plants
+play
+played
+playing
+pleasant
+please
+pleased
+pleases
+pleasing
+pleasure
+pledge
+plenteous
+plenty
+plowing
+plucked
+plump
+plundered
+point
+political
+poor
+poplar
+population
+portion
+portions
+possess
+possession
+possessions
+posterity
+pot
+pot'i-phar
+poti'phera
+pottage
+poured
+poverty
+power
+powers
+praise
+praised
+pray
+prayed
+prayer
+pre-eminence
+pre-eminent
+prepare
+prepared
+presence
+present
+presented
+preserve
+preserved
+pressed
+pressing
+pretended
+prevail
+prevailed
+prevent
+prevented
+prey
+price
+pride
+priest
+priests
+prince
+princes
+principles
+prison
+prisoners
+proceed
+produce
+profit
+promise
+promised
+pronounce
+property
+prophet
+proposal
+propose
+prosper
+prospered
+protecting
+protection
+prove
+provender
+provide
+provided
+providence
+province
+provision
+provisions
+prudence
+public
+publish
+punishment
+purchased
+purify
+purpose
+pursue
+pursued
+pursuing
+pursuit
+put
+putting
+puvah
+quarrel
+quarreled
+quartering
+questioned
+questions
+quickly
+quiet
+quiver
+ra'amah
+rachel
+rachel's
+raid
+raiders
+raiment
+rain
+rained
+raise
+raised
+raising
+ram
+ram'eses
+rams
+ran
+rather
+ravaged
+raven
+ravenous
+re'u
+reached
+ready
+really
+reaped
+reason
+reassured
+rebekah
+rebekah's
+rebelled
+rebuked
+receded
+receive
+received
+reckoned
+reckoning
+recognize
+recognized
+records
+rectitude
+red
+redeemed
+redress
+reduce
+reed
+refresh
+refused
+refusing
+regard
+regarded
+regards
+reho'both
+reho'both-ir
+reign
+reigned
+reliance
+relief
+relinquish
+remain
+remained
+remaining
+remains
+remember
+remembered
+reminded
+remnant
+remove
+removed
+removing
+render
+renown
+rent
+repeated
+repeatedly
+reph'aim
+replace
+replaced
+replied
+report
+representation
+representative
+representatives
+reproach
+require
+required
+requires
+rescue
+resen
+reserve
+reserved
+respect
+rest
+rested
+resting
+restore
+restored
+restrained
+return
+returned
+reu'el
+reuben
+reumah
+revealed
+revived
+reward
+rib
+ribs
+rich
+ride
+rider
+right
+righted
+righteous
+righteousness
+rightly
+rights
+ring
+rings
+ripened
+riphath
+rise
+risen
+river
+rivers
+road
+robe
+rock
+rode
+rods
+roll
+rolled
+roof
+room
+rooms
+rose
+rosh
+roughly
+round
+rouse
+routed
+royal
+rule
+ruler
+ruler's
+run
+runnels
+sab'teca
+sabtah
+sack
+sackcloth
+sacks
+sacred
+sacrifice
+sacrifices
+saddle
+saddled
+safely
+safety
+said
+sake
+salaries
+salem
+salt
+salvation
+same
+samlah
+sand
+sandal-thong
+sar'ai
+sarah
+sarah's
+sat
+savages
+saved
+saving
+savory
+saw
+say
+saying
+says
+scarcely
+scarlet
+scatter
+scattered
+scepter
+se'ir
+sea
+searched
+seas
+seashore
+season
+seasons
+seba
+second
+secretly
+secure
+security
+see
+seed
+seedtime
+seeing
+seek
+seeking
+seem
+seemed
+seen
+sees
+seize
+seized
+select
+self-evident
+sell
+semen
+send
+sent
+separate
+separated
+separation
+sephar
+sepulchre
+sepulchres
+serah
+sered
+serpent
+serug
+servant
+servant's
+servants
+serve
+served
+service
+serving
+set
+seth
+settle
+settled
+settlement
+seven
+sevenfold
+seventeen
+seventeenth
+seventh
+seventy
+seventy-five
+seventy-seven
+seventy-sevenfold
+severe
+sewed
+sexes
+sha'veh-kiriatha'im
+shall
+shammah
+share
+shaul
+shaved
+shaveh
+she
+she-asses
+she-goat
+she-goats
+sheaf
+shear
+sheaves
+sheba
+shechem
+shechem's
+shed
+sheds
+sheep
+sheepfolds
+sheepshearers
+shekel
+shekels
+shelah
+sheleph
+shelter
+shem
+sheme'ber
+sheol
+shepherd
+shepherding
+shepherds
+shepho
+shibah
+shield
+shillem
+shimron
+shinab
+shinar
+ships
+shobal
+shore
+short
+shortly
+shot
+should
+shoulder
+shoulders
+show
+showed
+shown
+shua
+shua's
+shuah
+shuni
+shur
+shut
+siddim
+side
+sidon
+sight
+sign
+signet
+signs
+silence
+silver
+simeon
+sin
+since
+sinew
+sinites
+sinned
+sinners
+sinning
+sister
+sister's
+sit
+sitnah
+sitting
+six
+sixteen
+sixth
+sixty
+sixty-five
+sixty-nine
+sixty-six
+sixty-two
+skilful
+skin
+skins
+slain
+slaughter
+slave
+slaves
+slay
+slays
+sleek
+sleep
+sleeves
+slept
+slew
+slope
+slowly
+small
+smell
+smelled
+smoke
+smoking
+smooth
+so
+sodom
+soil
+sojourn
+sojourned
+sojourner
+sojourners
+sojourning
+sojournings
+sold
+sole
+solemnly
+some
+son
+son's
+songs
+sons
+sons'
+sons-in-law
+soon
+sore
+sorely
+sorrow
+sorrowful
+sorry
+sort
+sorts
+sought
+soul
+sound
+south
+southward
+sow
+sowed
+space
+spare
+spared
+speak
+speaking
+speaks
+speckled
+speech
+spend
+spent
+spies
+spilled
+spirit
+splendor
+spoil
+spoke
+spoken
+spotted
+spread
+spring
+springing
+springs
+sprouted
+sprung
+staff
+stage
+stalk
+stand
+standing
+stands
+stars
+state
+states
+states:
+station
+statute
+statutes
+stay
+stayed
+stead
+steadfast
+steal
+steward
+still
+stole
+stolen
+stone
+stones
+stood
+stooped
+stop
+stopped
+store
+stored
+storehouses
+story
+stranger
+strangers
+straw
+streaks
+stream
+street
+strength
+stretched
+strife
+striking
+striped
+stripped
+striven
+strong
+stronger
+strongly
+struck
+struggled
+subdue
+subdued
+subject
+submit
+submitted
+subsided
+substance
+subtle
+success
+successful
+succoth
+such
+suck
+suckle
+suffer
+sufferable
+sufferance
+suitable
+summer
+summoned
+sun
+superior
+supplanted
+supplied
+support
+suppose
+supreme
+surely
+surety
+surrounded
+survivors
+suspended
+suspending
+sustained
+swallowed
+swarm
+swarming
+swarms
+swear
+sweat
+sword
+swords
+swore
+sworn
+system
+systems
+table
+tahash
+take
+taken
+taking
+talked
+talking
+tamar
+tamarisk
+tambourine
+tarried
+tarry
+tarshish
+taxes
+te'manites
+tebah
+teeth
+tell
+tells
+tema
+teman
+ten
+tender
+tenderly
+tent
+tenth
+tents
+tenure
+terah
+terms:
+territory
+terror
+tested
+than
+that
+the
+thee
+their
+theirs
+them
+themselves
+then
+thence
+there
+therefore
+therein
+these
+they
+thicket
+thigh
+thin
+thing
+things
+thinking
+third
+thirteen
+thirteenth
+thirty
+thirty-five
+thirty-four
+thirty-seven
+thirty-three
+thirty-two
+this
+thistles
+thorns
+thoroughly
+those
+thou
+thought
+thoughts
+thousand
+thousands
+thread
+three
+threshing
+throne
+through
+throughout
+throw
+thus
+thy
+tidal
+tidings
+ties
+tigris
+till
+tiller
+time
+times
+timna
+timnah
+tiras
+to
+today
+togar'mah
+together
+toil
+tola
+told
+tomb
+tonight
+too
+took
+top
+tops
+torch
+torn
+totally
+totaly
+touch
+touched
+touches
+toward
+tower
+towns
+trade
+traders
+train
+trained
+transgression
+transient
+transporting
+travailed
+treasure
+treat
+treated
+tree
+trees
+trembled
+trembling
+trial
+tribes
+tried
+troops
+trouble
+troubled
+troubles
+trough
+troughs
+truly
+truth
+truths
+tubal
+tubal-
+tubal-cain
+turn
+turned
+turns
+turtledove
+twelve
+twenty
+twenty-nine
+twenty-seven
+twenty-seventh
+twice
+twins
+two
+tyranny
+tyrant
+tyrants
+unacknowledged
+unalienable
+unawares
+uncircumcised
+uncomfortable
+uncovered
+under
+understand
+understood
+undistinguished
+unfit
+ungirded
+united
+unknown
+unleavened
+unless
+unmoved
+unstable
+until
+unusual
+unwarrantable
+unworth
+up
+upbraided
+upon
+uppermost
+upright
+ur
+urged
+us
+us:
+use
+using
+usurpations
+utterly
+uz
+uzal
+valley
+valuable
+vegetation
+veil
+vengeance
+vent
+vents
+verified
+very
+vesture
+villages
+vindication
+vine
+vineyard
+violence
+violently
+viper
+virgin
+vision
+visions
+visit
+visited
+voice
+void
+vow
+wages
+waging
+wagons
+wait
+waited
+walk
+walked
+walking
+wall
+wander
+wandered
+wanderer
+wandering
+wanting
+wantonness
+war
+warfare
+warned
+was
+wash
+washed
+washes
+watch
+water
+watered
+watering
+waters
+way
+wayside
+we
+weak
+weakness
+wealth
+wealthy
+weaned
+weapons
+wear
+wearied
+weary
+week
+weep
+weeping
+weighed
+weighing
+weight
+weights
+welfare
+well
+well's
+wells
+went
+wept
+were
+west
+westward
+what
+whatever
+whatsoever
+wheat
+whelp
+when
+whence
+whenever
+where
+whereby
+wherever
+whether
+which
+while
+white
+who
+whoever
+whole
+wholesome
+whom
+whomever
+whose
+why
+wicked
+wickedly
+wickedness
+widow
+widow's
+widowhood
+wife
+wife's
+wild
+wilderness
+will
+willing
+wilt
+wind
+window
+windows
+wine
+winged
+winter
+wise
+with
+withered
+withheld
+withhold
+within
+without
+witness
+wives
+wolf
+woman
+woman's
+womb
+wombs
+women
+wood
+word
+words
+wore
+work
+works
+world
+world:
+worse
+worship
+worshiped
+worth
+worthy
+would
+wounding
+wrapping
+wrath
+wrestled
+wrestlings
+wrong
+wrought
+year
+yearned
+years
+yes
+yet
+yield
+yielding
+yoke
+yonder
+you
+young
+younger
+youngest
+your
+yours
+yourself
+yourselves
+youth
+za'avan
+zaph'enath-pane'ah
+zeb'ulun
+zeboi'im
+zem'arites
+zepho
+zerah
+zib'eon
+zillah
+zilpah
+zimran
+ziph'ion
+zo'ar
+zohar
+zuzim
diff --git a/src/com/ibm/icu/dev/data/th18057.txt b/src/com/ibm/icu/dev/data/th18057.txt
new file mode 100644
index 0000000..ac61067
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/th18057.txt
@@ -0,0 +1,17919 @@
+#*******************************************************************************
+#*
+#*   Copyright (C) 1998-2001, International Business Machines
+#*   Corporation and others.  All Rights Reserved.
+#*
+#*******************************************************************************
+
+#
+# @(#)$RCSfile: th18057.txt,v $ $Revision: 1.1 $ $Date: 2002/07/16 00:29:39 $
+# 
+# Sorted Thai word list used for testing the ThaiCollator class.
+# This list was taken from the Web: <http://seasrc.th.net/dict/dict.htm>
+# and some obvious garbage lines (nulls, etc) were deleted
+#
+# Lines starting with '#' are ignored; others are treated as single words
+# in the UTF-8 encoding.
+#
+# [12/15/99 aliu] recoded from TIS-620 to UTF-8
+#
+ก
+ก็
+กก
+ก๊ก
+กกขนาก
+กกัณฏกะ
+กกุฏ
+กกุท
+กกุธภัณฑ์
+กกุสันโธ
+กง
+ก่ง
+ก้ง
+ก๊ง
+กงกอน
+กงการ
+กงโก้
+ก้งโค้ง
+ก้งง
+กงฉาก
+กงไฉ่
+กงเต็ก
+กงสี
+กงสุล
+กช
+กชกร
+กฎุมพี
+กฏ
+กฏหมาย
+กฏะ
+กฏาหะ
+กฏิ
+กฏุก
+กฐิน
+กฐินกาล
+กฐินต้น
+กฐินทาน
+กฐินราษฎร์
+กฐินหลวง
+กฐินัตถารกรรม
+กฐินุทธาระ
+กณิกนันต์
+กณิการ์
+กเณรุ
+กเณรุกา
+กด
+กดคัง
+กดแดง
+กดทะเล
+กดโป๊ะ
+กดหัวโต
+กดเหลือง
+กตญาณ
+กตมาลี
+กตเวทิตา
+กตเวที
+กตัญชลี
+กตัญญุตา
+กตัญญู
+กตาธิการ
+กตาภินิหาร
+กติกา
+กถา
+กถิก
+กถิกาจารย์
+กทรรป
+กทลิมฤค
+กทลี
+กน
+ก่น
+ก้น
+กนก
+กนน
+กนนเชอ
+ก่นนโถง
+กนนเหิม
+กนิษฐ์
+กนิษฐา
+กบ
+กบฏ
+กบดาน
+กบดำกบแดง
+กบทู
+กบาล
+กบินทร์
+กบิล
+กบิลพัสดุ์
+กบี่
+กบูร
+กเบนทร์
+กโบร
+กโบล
+กปณ
+กปณก
+กปณา
+กปิ
+กปิตัน
+กม
+ก้ม
+กมณฑลาภิเษก
+กมณฑโลทก
+กมล
+กมลขัณฑ์
+กมลครรภ์
+กมลฉันท์
+กมลพานธพ
+กมลา
+กมลาศ
+กมลาสน์
+กมเลศ
+กมัณฑลุ
+กมุท
+กร
+กรก
+กรกฎ
+กรกฎาคม
+กรง
+กรชกาย
+กรณฑ์
+กรณิการ์
+กรณี
+กรณีย์
+กรณียะ
+กรด
+กรน
+กรนทา
+กรนนเช้า
+กรบ
+กรบูร
+กรพินธุ์
+กรภก
+กรภิน
+กรภีร์
+กรภุม
+กรม
+กรมกรอม
+กรมการ
+กรมการพิเศษ
+กรมเกรียม
+กรมขุน
+กรมชะแม่
+กรมท่า
+กรมท่ากลาง
+กรมท่าขวา
+กรมท่าซ้าย
+กรมธรรม์
+กรมนครบาล
+กรมนา
+กรมพระ
+กรมพระกลาโหม
+กรมพระยา
+กรมมหาดไทย
+กรมเมือง
+กรมวัง
+กรมศักดิ
+กรมสมเด็จ
+กรมหมื่น
+กรมหลวง
+กรมัฏฏ์
+กรร
+กรรไกร
+กรรเจียก
+กรรชิง
+กรรชิด
+กรรเชอ
+กรรเช้า
+กรรเชียง
+กรรโชก
+กรรซ้นน
+กรรแซง
+กรรฐ์
+กรรฐา
+กรรณ
+กรรณิการ์
+กรรดิ
+กรรดิก
+กรรดึก
+กรรตุ
+กรรไตร
+กรรทบ
+กรรแทก
+กรรแทรก
+กรรบาสิก
+กรรบิด
+กรรบูร
+กรรปาสิก
+กรรปุระ
+กรรพุม
+กรรพุ่ม
+กรรภิรมย์
+กรรม
+กรรม์
+กรรมาชีพ
+กรรมาธิการ
+กรรมาร
+กรรลี
+กรรลึง
+กรรษก
+กรรสะ
+กรรแสง
+กรรหาย
+กรรเหิม
+กรรโหย
+กรรเอา
+กรรุณา
+กรวด
+กรวน
+กรวบ
+กรวม
+กร้วม
+กรวย
+กรวิก
+กรสาปน์
+กรสุทธิ์
+กรอ
+กร้อ
+กรอก
+กร็อกกร๋อย
+กรอกแกรก
+กรอง
+กรองกรอย
+กรอด
+กร่อน
+กรอบ
+กรอม
+กร่อม
+กร่อย
+กระ
+กระกร
+กระกรับกระเกรียบ
+กระกรี๊ด
+กระกรุ่น
+กระกลับกลอก
+กระกวด
+กระกอง
+กระกัด
+กระกี้
+กระกูล
+กระเกรอก
+กระเกริก
+กระเกริ่น
+กระเกรียบ
+กระเกรียม
+กระเกรียว
+กระเกรี้ยว
+กระเกลือก
+กระคน
+กระคาย
+กระคุก
+กระงกกระงัน
+กระงกกระเงิ่น
+กระง่องกระแง่ง
+กระงอด
+กระง่อนกระแง่น
+กระโงก
+กระจก
+กระจง
+กระจร
+กระจอก
+กระจองหง่อง
+กระจองอแง
+กระจ้อน
+กระจอนหู
+กระจ้อย
+กระจ๋อหวอ
+กระจะ
+กระจัก
+กระจัง
+กระจังหลังเบี้ย
+กระจัด
+กระจับ
+กระจับปิ้ง
+กระจับปี่
+กระจ่า
+กระจ่าง
+กระจาด
+กระจาน
+กระจาบ
+กระจาม
+กระจาย
+กระจาว
+กระจิก
+กระจิ๋ง
+กระจิด
+กระจิบ
+กระจิ๋ม
+กระจิริด
+กระจิ๋ว
+กระจี้
+กระจี๋
+กระจุก
+กระจุ๋งกระจิ๋ง
+กระจุบ
+กระจุ๊บ
+กระจุบกระจิบ
+กระจุ๋มกระจิ๋ม
+กระจุย
+กระจู้
+กระจู๋กระจี๋
+กระจูด
+กระเจอะกระเจิง
+กระเจา
+กระเจ่า
+กระเจ้า
+กระเจาะ
+กระเจิง
+กระเจิดกระเจิง
+กระเจี้ยง
+กระเจี๊ยบ
+กระเจียว
+กระเจี๊ยว
+กระแจะ
+กระโจน
+กระโจม
+กระฉง
+กระฉอก
+กระฉ่อน
+กระฉับกระเฉง
+กระฉิ่ง
+กระฉีก
+กระฉุก
+กระฉูด
+กระเฉก
+กระเฉง
+กระเฉด
+กระแฉก
+กระแฉ่น
+กระโฉกกระเฉก
+กระโฉม
+กระชง
+กระชดกระช้อย
+กระชวย
+กระชอก
+กระชอน
+กระชอม
+กระชอมดอก
+กระช้อย
+กระช้อยนางรำ
+กระชัง
+กระชั้น
+กระชับ
+กระชาก
+กระช่าง
+กระชาเดิม
+กระชาย
+กระชิง
+กระชิด
+กระชุ
+กระชุก
+กระชุ่มกระชวย
+กระเชอ
+กระเชา
+กระเช้า
+กระเชียง
+กระแชง
+กระแชะ
+กระโชก
+กระซวย
+กระซ้อ
+กระซ่องกระแซ่ง
+กระซับ
+กระซับปากเรือ
+กระซ่าง
+กระซาบ
+กระซิก
+กระซิบ
+กระซี้
+กระซี้กระซ้อ
+กระซุง
+กระซุบกระซิบ
+กระซุ้ม
+กระซู่
+กระเซ
+กระเซ็น
+กระเซอ
+กระเซอะกระเซอ
+กระเซอะกระเซิง
+กระเซ้า
+กระเซิง
+กระแซ
+กระแซะ
+กระโซกระเซ
+กระฎี
+กระฎุมพี
+กระดก
+กระด้ง
+กระดนโด่
+กระดวง
+กระดวน
+กระด้วมกระเดี้ยม
+กระดอ
+กระดอง
+กระดองหาย
+กระดอน
+กระดอม
+กระดักกระเดี้ย
+กระดังงัว
+กระดังงา
+กระดาก
+กระด้าง
+กระดางลาง
+กระดาด
+กระดาดขาว
+กระดาน
+กระดาษ
+กระดาษเทศ
+กระดำกระด่าง
+กระดิก
+กระดิ่ง
+กระดิ้ง
+กระดิ่งทอง
+กระดิบๆ
+กระดี่
+กระดี้กระเดียม
+กระดี่หม้อ
+กระดึง
+กระดืบ
+กระดุ
+กระดุกกระดิก
+กระดุ้งกระดิ้ง
+กระดุบๆ
+กระดุบกระดิบ
+กระดุม
+กระดูก
+กระเด้ง
+กระเด็น
+กระเด้า
+กระเดาะ
+กระเดิด
+กระเดี้ย
+กระเดียด
+กระเดียม
+กระเดี้ยม
+กระเดือก
+กระเดื่อง
+กระแด็กๆ
+กระแด้ง
+กระแด้แร่
+กระแด่วๆ
+กระแดะ
+กระโดก
+กระโดง
+กระโดงแดง
+กระโดด
+กระโดน
+กระใด
+กระได
+กระตรกกระตรำ
+กระตร้อ
+กระตรับ
+กระตราก
+กระตรำ
+กระตรุด
+กระตรุม
+กระต้วมกระเตี้ยม
+กระต้อ
+กระต่องกระแต่ง
+กระต๊อบ
+กระต่อม { กฺระต่อม }
+กระต้อยตีวิด
+กระตัก
+กระตั้ว
+กระตาก
+กระต๊าก
+กระต่าย
+กระติก
+กระติ้ง
+กระติ๊ด
+กระติบ
+กระตือรือร้น
+กระตุก
+กระตุกกระติก
+กระตุ้งกระติ้ง
+กระตุ่น
+กระตุ้น
+กระตูบ
+กระเตง
+กระเต็น
+กระเตอะ
+กระเต่า
+กระเตาะ
+กระเตาะกระแตะ
+กระเตี้ยม
+กระเตื้อง
+กระแต
+กระแต่ง
+กระแตแต้แว้ด
+กระแตวับ
+กระแตะ
+กระโตกกระตาก
+กระโตน
+กระไตร
+กระถด
+กระถอบ
+กระถั่ว
+กระถาง
+กระถิก
+กระถิน
+กระถึก
+กระเถิบ
+กระโถน
+กระทก
+กระทง
+กระทงลาย
+กระทด
+กระทบ
+กระทรวง
+กระทวย { กฺระทวย }
+กระทอก
+กระท้อน
+กระท่อนกระแท่น
+กระท่อม
+กระท้อมกระแท้ม
+กระทะ
+กระทั่ง
+กระทั่งติด
+กระทัน
+กระทั้น
+กระทา
+กระทาชาย
+กระทาย
+กระทายเหิน
+กระทาสี
+กระทาหอง
+กระทำ
+กระทิกกระทวย
+กระทิง
+กระทึง
+กระทืบ
+กระทุ
+กระทุง
+กระทุ้ง
+กระทุงลาย
+กระทุงหมาบ้า
+กระทุงเหว
+กระทุ่ม
+กระทุ่มขี้หมู
+กระทุ่มนา
+กระทุ่มหมู
+กระทู้
+กระเท่
+กระเทียบ
+กระเทียม
+กระเทือน
+กระเทื้อม
+กระแทก
+กระแท่น
+กระแท้ม
+กระแทะ
+กระไทชาย
+กระนก
+กระน่อง
+กระนั้น
+กระนี้
+กระโน้น
+กระไน
+กระบก
+กระบกคาย
+กระบถ
+กระบวน
+กระบวย
+กระบวร
+กระบอก
+กระบอกเสียง
+กระบอง
+กระบองกัน
+กระบองเพชร
+กระบองราหู
+กระบะ
+กระบัด
+กระบั้วกระเบี้ย
+กระบ่า
+กระบ้า
+กระบาก
+กระบาย
+กระบาล { กฺระบาน }
+กระบิ
+กระบิ้ง
+กระบิด
+กระบิล
+กระบี่
+กระบือ
+กระบุง
+กระบุม
+กระบุ่มกระบ่าม
+กระบู้กระบี้
+กระบูน
+กระบูร
+กระเบง
+กระเบญ
+กระเบ็ดกระบวน
+กระเบน
+กระเบา
+กระเบิก
+กระเบี้ย
+กระเบียด
+กระเบียน
+กระเบื้อง
+กระเบื้องถ้วย
+กระแบ่
+กระแบก
+กระแบกงา
+กระแบะ
+กระโบม
+กระปมกระปำ
+กระปมกระเปา
+กระปรอก
+กระปรอกว่าว
+กระปรี้กระเปร่า
+กระปอก
+กระป้อกระแป้
+กระป่อง
+กระป๋อง
+กระปอดกระแปด
+กระป๋อหลอ
+กระปั้วกระเปี้ย
+กระป่ำ
+กระปิ่ม
+กระปุก
+กระปุ่ม
+กระปุ่มกระป่ำ
+กระปุ่มกระปิ่ม
+กระเปา
+กระเป๋า
+กระเปาะ
+กระเปี้ย { กฺระเปี้ย }
+กระแป้
+กระแปด
+กระโปก
+กระโปรง
+กระโปรงทอง
+กระผม
+กระผลาม
+กระผลีกระผลาม
+กระผาน
+กระผีก
+กระพรวน
+กระพริ้ม
+กระพอก
+กระพอกวัว
+กระพอง
+กระพ้อม
+กระพัก
+กระพัง
+กระพังเหิร
+กระพังโหม
+กระพัด
+กระพัดแม่ม่าย
+กระพัตร
+กระพัน
+กระพั่น
+กระพา
+กระพาก { กฺระพาก }
+กระพี้
+กระพือ
+กระพุ้ง
+กระพุ่ม
+กระเพลิศ
+กระเพาะ
+กระเพาะปลา
+กระเพิง
+กระเพื่อม
+กระแพง
+กระแพ้ง
+กระฟัดกระเฟียด
+กระฟาย
+กระฟูมกระฟาย
+กระเฟียด
+กระมล
+กระมอบ
+กระมอมกระแมม
+กระมัง
+กระมัน
+กระมิดกระเมี้ยน
+กระมึน
+กระมุท
+กระเมาะ
+กระเมี้ยน
+กระแมม
+กระย่อง
+กระย่องกระแย่ง
+กระย่อน
+กระย่อม
+กระยา
+กระยาง
+กระยาจก
+กระยาด
+กระยาหงัน
+กระยิก
+กระยิ้มกระย่อง
+กระยึกกระยือ
+กระยึดกระยาด
+กระเย้อกระแหย่ง
+กระแย่ง
+กระรอก
+กระรอกน้ำข้าว
+กระเรียน
+กระโรกน้ำข้าว
+กระโรกใหญ่
+กระไร
+กระลด
+กระลบ
+กระลอก
+กระลอม
+กระละหล่ำ
+กระลัด
+กระลับ
+กระลัมพร
+กระลา
+กระลาการ
+กระลายกระลอก
+กระลำ
+กระลำพร
+กระลำพัก
+กระลำพุก
+กระลิง
+กระลี
+กระลึง
+กระลุมพาง
+กระลุมพุก
+กระลุมพู
+กระลูน
+กระลู่น์
+กระเล็น
+กระเลียด
+กระเลือก
+กระโลง
+กระวน
+กระวัด
+กระว่า
+กระวาด
+กระวาน
+กระวาย
+กระวิน
+กระวี
+กระวีกระวาด
+กระวูดกระวาด
+กระเวน
+กระเวยกระวาย
+กระแวน
+กระโวยกระวาย
+กระศก
+กระศัย
+กระษัตริย์
+กระษัตรี
+กระษัย
+กระษาปณ์
+กระษิร
+กระเษม
+กระเษียร
+กระสง
+กระสน
+กระสบ
+กระสม
+กระสรวล
+กระสร้อย
+กระสวน
+กระสวย
+กระสอบ
+กระสะ
+กระสัง
+กระสัน
+กระสับกระส่าย
+กระสา
+กระสานติ์
+กระสาบ
+กระสาย
+กระส่าย
+กระสินธุ
+กระสือ
+กระสุงกระสิง
+กระสุน
+กระสูทธิ์
+กระสูบ
+กระเสด
+กระเส็นกระสาย
+กระเส่า
+กระเสาะกระแสะ
+กระเสียน
+กระเสียร
+กระเสือกกระสน
+กระแส
+กระแสง
+กระแสะ { กฺระแสะ }
+กระโสง
+กระไส
+กระหง่อง
+กระหน
+กระหนก
+กระหนกกินรี
+กระหนกนฤมิต
+กระหนกนารี
+กระหน่อง
+กระหนาก
+กระหน่ำ
+กระหมวด
+กระหมอบ
+กระหม่อม
+กระหมั่ง
+กระหม่า
+กระหมิด
+กระหมิบ
+กระหมุดกระหมิด
+กระหมุ่น
+กระหมุบ
+กระหย่ง
+กระหยด
+กระหยบ
+กระหย่อน
+กระหย่อม
+กระหยะ
+กระหยัง
+กระหยับ
+กระหยิ่ม
+กระหรอด
+กระหริ่ง
+กระหวน
+กระหวัด
+กระหวัดเกล้า
+กระหว่า
+กระหอง
+กระหัง
+กระหัด
+กระหาง { กฺระหาง }
+กระหาย
+กระหึม
+กระหึ่ม
+กระหืดกระหอบ
+กระเห็น
+กระเหน็จ
+กระเหนียด
+กระเหม็ดกระเหมียด
+กระเหม็ดกระแหม่
+กระเหม่น
+กระเหม่า
+กระเหลียก
+กระเหว่า
+กระเห่อ
+กระเหิม
+กระเหี้ยนกระหือรือ
+กระแหทอง
+กระแหน
+กระแหน่
+กระแหนบ
+กระแหนะ
+กระแหมบ
+กระแหม่ว
+กระแหย่ง
+กระแหร่ม
+กระแหล่ง
+กระโห้
+กระโหนด
+กระโหม
+กระโหย
+กระโหย่ง
+กระอ่วน
+กระอวล
+กระอ้อกระแอ้
+กระออดกระแอด
+กระออบ
+กระออม
+กระอ้อมกระแอ้ม
+กระออมน้ำ
+กระอัก
+กระอักกระอ่วน
+กระอักกระไอ
+กระอั้วแทงควาย
+กระอ้า
+กระอาน
+กระอิด
+กระอิดกระเอื้อน
+กระอึก
+กระอึกกระอัก
+กระอึด
+กระอืด
+กระอุ
+กระอุก
+กระเอบ
+กระเอา
+กระเอิก
+กระเอิบ
+กระแอ้
+กระแอก
+กระแอด
+กระแอบ
+กระแอม
+กระแอ้ม
+กระไอ
+กรัก
+กรักขี
+กรัง
+กรัชกาย
+กรัณฑ์
+กรัณย์
+กรัน
+กรับ
+กรัม
+กราก
+กราง
+กร่าง
+กราด
+กราดเกรี้ยว
+กราดวง
+กราน
+กร้าน
+กราบ
+กราฟ
+กราม
+กรามพลู
+กราย
+กร่าย
+กราล
+กราว
+กร้าว
+กราวด่าง
+กราวรูด
+กราสิก
+กรำ
+กร่ำ
+กร่ำกรุ่น
+กริก
+กริ๊ก
+กริกกริว
+กริกกรี
+กริ่ง
+กริ๊ง
+กริงกริว
+กริ้งกริ้ว
+กริช
+กริณี
+กริตย
+กริน
+กรินี
+กริบ
+กริม
+กริ่ม
+กริยา
+กริว
+กริ้ว
+กรี
+กรีฑา
+กรีด
+กรี๊ด
+กรีธา
+กรีษ
+กรีส
+กรึง
+กรุ
+กรุก
+กรุกกรู๊
+กรุง
+กรุ้งกริ่ง
+กรุงเขมา
+กรุงพาลี
+กรุณ
+กรุณา
+กรุน
+กรุ่น
+กรุบ
+กรุ่ม
+กรุ้มกริ่ม
+กรุย
+กรุยเกรียว
+กรู
+กรูด
+กรูม
+กเรณุ
+กเรนทร
+กเรนทร์
+กฤช
+กฤดยาเกียรณ
+กฤดา
+กฤดาการ
+กฤดาอัญชลี
+กฤดิ
+กฤดีกา
+กฤต
+กฤตกา
+กฤตยฎีกา
+กฤติกา
+กฤศ
+กฤโศทร
+กฤษฎา
+กฤษฎาญ
+กฤษฎาญชลิต
+กฤษฎาญชลี
+กฤษฎาญชวลิตวา
+กฤษฎาญชวลิศ
+กฤษฎาญชวเลศ
+กฤษฎาญชุลี
+กฤษฎาธาร
+กฤษฎี
+กฤษฎีกา
+กฤษณ
+กฤษณา
+กฤษาณ
+กฤษิ
+กล
+กลด
+กล่น
+กลบ
+กลบท
+กลม
+กลมภ
+กลเม็ด
+กลยุทธ์
+กลละ
+กลวง
+กลวม
+กล้วย
+กล้วยน้อย
+กล้วยไม้
+กล้วยหมูสัง
+กลวิธี
+กลศ
+กลศาสตร์
+กลศึก
+กลหาย
+กลเหย
+กล้อ
+กลอก
+กลอง
+กล่อง
+กล้อง
+กล้องแกล้ง
+กลอน
+กล่อน
+กล้อน
+กล่อม
+กล้อมแกล้ม
+กลอย
+กลัก
+กลัง
+กลัด
+กลั่น
+กลั้น
+กลันท
+กลันทก์
+กลันทกนิวาปสถาน
+กลับ
+กลัมพก
+กลัมพร
+กลัมพัก
+กลัว
+กลั้ว
+กลา
+กล่า
+กล้า
+กลาก
+กลากลาด
+กลาง
+กลาเซียร์
+กลาด
+กลาบาต
+กลาป
+กล้าม
+กลาย
+กล้าย
+กลายกลอก
+กล่าว
+กลาโหม
+กล่ำ
+กล้ำ
+กลิ
+กลิกาล
+กลิกุญจิกา
+กลิ่ง
+กลิ้ง
+กลิ้งกลางดง
+กลิงค์
+กลิ่น
+กลิปรีย์
+กลิ้ม
+กลิยุค
+กลี
+กลี่
+กลีเซอรีน
+กลีบ
+กลึง
+กลึ้ง
+กลึงกล่อม
+กลึงค์
+กลืน
+กลุ่ม
+กลุ้ม
+กลู่
+กลูโคส
+กลูน
+กลูน์
+กเลวระ
+กวด
+กวน
+ก๊วน
+กวนอิม
+กวม
+กวย
+กวยจั๊บ
+กวยจี๊
+ก๋วยเตี๋ยว
+ก๋วยสลาก
+กวฬิงการาหาร
+กวะ
+กวะกวัก
+กวะแกว่ง
+กวัก
+กวัด
+กวา
+กว่า
+กว้า
+กวาง
+กว่าง
+กว้าง
+กวางเขน
+กวางโจน
+กว่างชน
+กวางชะมด
+กว่างโซ้ง
+กวางตุ้ง
+กวางทอง
+กวางป่า
+กวางม้า
+กวาด
+กวาน
+กว่าน
+กว้าน
+กว๊าน
+กว้าว
+กวาวเครือ
+กวิน
+กวี
+กษณะ
+กษมา
+กษัตร
+กษัตรา
+กษัตริย์
+กษัตรี
+กษัตรีย์
+กษัตรีศูร
+กษัย
+กษัยการ
+กษาปณ์
+กษาย
+กษิดิ
+กษิดินทร
+กษิดินทร์
+กษีณาศรพ
+กษีดิ
+กษีร
+กษีรามพุ
+กษีรารณพ
+กษุธา
+กษุรี
+กสานติ์
+กสิ
+กสิณ
+กห
+กหังปายา
+กหาปณะ
+กเฬวราก
+กอ
+ก่อ
+ก้อ
+ก๊อ
+กอก
+ก๊อก
+กอแก
+กอง
+ก่อง
+ก้อง
+กองกอย
+กอซ
+กอด
+ก่อน
+ก้อน
+กอบ
+กอบนาง
+ก๊อบปี้
+กอปร
+ก้อม
+กอมก้อ
+ก่อมก้อ
+ก้อมก้อ
+กอย
+ก้อย
+ก๋อย
+กอริลลา
+กอล์ฟ
+กอแหละ
+กอเอี๊ยะ
+กะ
+กะกร่อม
+กะกร้าว
+กะกลิ้ง
+กะก่อง
+กะกัง
+กะกึก
+กะเกาะ
+กะโกระ
+กะง้อนกะแง้น
+กะจัง
+กะจั๊ว
+กะแจะ
+กะชะ
+กะชัง
+กะชามาศ
+กะชิง
+กะชึ่กกะชั่ก
+กะแช่
+กะซวก
+กะซ้าหอย
+กะซี่
+กะซี้
+กะโซ่
+กะโซ้
+กะดก
+กะดง
+กะดวน
+กะดอกๆ
+กะดะ
+กะดังบาย
+กะดัด
+กะด้าง
+กะดำกะด่าง
+กะดี
+กะดี่
+กะดุ้ง
+กะเด้
+กะเดก
+กะเดี๋ยว
+กะได
+กะตรุด
+กะตอก
+กะต่อย
+กะตัก
+กะตัง
+กะตังกะติ้ว
+กะตังใบ
+กะต่า
+กะต๊าก
+กะต้ำ
+กะติ๊กริก
+กะติงกะแตง
+กะตีบ
+กะตึงกะแตง
+กะตุ๊ก
+กะตุด
+กะตุมู
+กะตูก
+กะตู้วู้
+กะเตก
+กะเตงๆ
+กะเตงเรง
+กะแตว
+กะแต่ว
+กะโต๊ก
+กะโตกกะตาก
+กะโตงกะเตง
+กะโต้งโห่ง
+กะถัว
+กะทกรก
+กะทอ
+กะทัง
+กะทัดรัด
+กะทัน
+กะทันหัน
+กะทับ
+กะทำ
+กะทิ
+กะทือ
+กะทุน
+กะทู้เจ็ดตัว
+กะเทย
+กะเท่เร่
+กะเทาะ
+กะแท้
+กะแท่ง
+กะแทน
+กะนวล
+กะนัด
+กะบอง
+กะบอนกะบึง
+กะบ่อนกะแบ่น
+กะบัง
+กะบั้ง
+กะบังรังเฝือก
+กะบิ
+กะบิ้ง
+กะบิล
+กะบึงกะบอน
+กะบุด
+กะเบ้อ
+กะเบียน
+กะเบือ
+กะแบง
+กะปริดกะปรอย
+กะปริบ
+กะปลกกะเปลี้ย
+กะปวกกะเปียก
+กะปอม
+กะปอมขาง
+กะปะ
+กะปั่น
+กะป้ำกะเป๋อ
+กะปิ
+กะปู
+กะปูด
+กะปูดหลูด
+กะเปะ
+กะเปา
+กะเปิ๊บกะป๊าบ
+กะเปียด
+กะแป้น
+กะแปะ
+กะโปรง
+กะโปโล
+กะผลึกกะผลาม
+กะผลุบกะโผล่
+กะเผ่น
+กะเผลก
+กะโผลกกะเผลก
+กะพง
+กะพรวดกะพราด
+กะพร่องกะแพร่ง
+กะพริบ
+กะพรุน
+กะพรูดกะพราด
+กะพล้อ
+กะพล่องกะแพล่ง
+กะพ้อ
+กะพอก
+กะพอง
+กะพัง
+กะเพรา
+กะเพียด
+กะเพียดช้าง
+กะเพียดหนู
+กะมิดกะเมี้ยน
+กะมูติง
+กะเม็ง
+กะเมีย
+กะยาหงัน
+กะยึกกะยือ
+กะยุ
+กะร่องกะแร่ง
+กะระตะ
+กะระหนะ
+กะรัง
+กะรัต
+กะราง
+กะริง
+กะริงกะเรียด
+กะรุงกะรัง
+กะรุ่งกะริ่ง
+กะรุน
+กะเร
+กะเรกะร่อน
+กะเร่กะร่อน
+กะเร่อ
+กะเรี่ยกะราด
+กะโรกะเร
+กะลวย
+กะลอ
+กะล่อกะแล่
+กะลอจี๊
+กะล่อน
+กะล่อมกะแล่ม
+กะล่อยกะหลิบ
+กะละปังหา
+กะละมัง
+กะละแม
+กะละออม
+กะลังตังไก่
+กะลัน
+กะลันทา
+กะลา
+กะลาง
+กะลาสี
+กะลาหนา
+กะลำพอ
+กะลำพัก
+กะลำเพาะ
+กะลิง
+กะลิ้มกะเหลี่ย
+กะลิอ่อง
+กะลุมพี
+กะเล็ง
+กะเล่อกะล่า
+กะเลิด
+กะเลียว
+กะแล
+กะโล่
+กะโลง
+กะวอกกะแวก
+กะวะ
+กะส้มชื่น
+กะส้าหอย
+กะหนอกะแหน
+กะหน็องกะแหน็ง
+กะหนะ
+กะหนุงกะหนิง
+กะหมอก
+กะหร่อง
+กะหรอด
+กะหร็อมกะแหร็ม
+กะหรัดกะตีกา
+กะหรัดตะปาตี
+กะหร่าง
+กะหราน
+กะหริ่ง
+กะหรี่
+กะหรี่ปั๊บ
+กะหลับกะเหลือก
+กะหลาป๋า
+กะหล่ำ
+กะหลี่
+กะหลีกะหลอ
+กะหลุกกะหลิก
+กะหำ
+กะหึม
+กะหืดกะหอบ
+กะหือ
+กะหูด
+กะเหน็ด
+กะเหรี่ยง
+กะเหลาะเปาะ
+กะเหวียก
+กะแห
+กะแหน่
+กะแหนะ
+กะแหยก
+กะแหะ
+กะโห้
+กะโหลก
+กะโหล้ง
+กะไหล่
+กะอวม
+กะอ้อกะแอ้
+กะออม
+กะอ้อมกะแอ้ม
+กะอัก
+กะอักกะไอ
+กะอาน
+กะอาม
+กะอิด
+กะอุบ
+กะแอ
+กะแอก
+กะแอน
+กะแอบ
+กะแอม
+กะแอว
+กัก
+กั๊ก
+กั้กๆ
+กักกรา
+กักกสะ
+กักกะ
+กักการี
+กักการุ
+กักขฬะ
+กักษันตรัง
+กัง
+กั้ง
+กังก
+กั้งกระดาน
+กังก้า
+กังเกียง
+กังขา
+กังขาวิตรณวิสุทธิ
+กังคุ
+กังฉิน
+กังฟู
+กังวล
+กังวาน
+กังเวียน
+กังส
+กังสดาล
+กังไส
+กังหัน
+กัจฉปะ
+กัจฉะ
+กัจฉา
+กัจฉุ
+กัจโฉทก
+กัญ
+กัญจุก
+กัญจุการา
+กัญชา
+กัญญา
+กัญฐกะ
+กัฐ
+กัณฏกะ
+กัณฐก
+กัณฐัศ
+กัณฐัศว์
+กัณฐา
+กัณฐี
+กัณฑ์
+กัณฑมานวก
+กัณฑรา
+กัณฑุ
+กัณฑูวนะ
+กัณณ์
+กัณห
+กัด
+กัตติกมาส
+กัตติกา
+กัตติเกยา
+กัตรทัณฑ์
+กัตรา
+กัทลี
+กัน
+กั่น
+กั้น
+กันเกรา
+กันไกร
+กันชิง
+กันเชอ
+กั้นซู่
+กันแซง
+กันดอง
+กันดาร
+กันดาล
+กันได
+กันต์
+กันตัง
+กันไตร
+กันทร
+กันทรากร
+กันทะ
+กั้นบัง
+กันภัย
+กันภิรมย์
+กันเมียง
+กันย์
+กันยา
+กันลง
+กันลอง
+กันลึง
+กันแสง
+กั้นหยั่น
+กันเอา
+กับ
+กับแก้
+กับแกล้ม
+กับบุเรศ
+กัป
+กัปตัน
+กัปนก
+กัปบาสิก
+กัปปาสิก
+กัปปิยะ
+กัปปีย์
+กัมบน
+กัมปนาการ
+กัมปนาท
+กัมปนี
+กัมประโด
+กัมปี
+กัมพล
+กัมพุช
+กัมพุชพากย์
+กัมพู
+กัมพูชา
+กัมโพช
+กัมมสัทธา
+กัมมัชวาต
+กัมมัฏฐาน
+กัมมันตภาพรังสี
+กัมมันตรังสี
+กัมมัสสกตา
+กัมมาร
+กัมลาศ
+กัยวิกัย
+กัลชาญ
+กัลบก
+กัลป์
+กัลปนา
+กัลปังหา
+กัลปาวสาน
+กัลปิต
+กัลพุม
+กัลเม็ด
+กัลยา
+กัลยาณมิตร
+กัลยาณี
+กัลเว้า
+กัลหาย
+กัลโหย
+กัลออม
+กัลเอา
+กัศมล
+กัศยป
+กัษณ
+กา
+ก๋า
+กาก
+กากคติ
+กากณึก
+กากนาสูร
+กากบาท
+กากภาษา
+กากสูร
+กากะทิง
+กากะเยีย
+กากี
+กาง
+ก้าง
+กางเกง
+กางเกียง
+กางของ
+กางเขน
+กาจ
+ก๊าซ
+กาซะลอง
+กาซะลองคำ
+กาญจนา
+กาฐ
+กาด
+ก๊าด
+กาน
+ก่าน
+ก้าน
+ก๊าน
+กานดา
+กานต์
+กานท์
+กานน
+กานพลู
+กาน้า
+กาบ
+ก้าบๆ
+กาบบัว
+กาบะ
+กาบุรุษ
+กาบู
+กาเปี้ยด
+กาพย์
+กาเฟอีน
+กาแฟ
+กาม
+ก้าม
+กามกวม
+ก้ามกุ้ง
+กามท
+กามน
+ก้ามปู
+ก้ามปูหลุด
+กามโมทย
+กามวิตถาร
+กามัช
+กามา
+กามาทีนพ
+กามาพจร
+กามามิศ
+กามารมณ์
+กามาวจร
+กามินี
+กามิศ
+กาเมศ
+กาเมสุมิจฉาจาร
+กาย
+ก่าย
+กายกรรม
+กายคตาสติ
+กายทวาร
+กายทุจริต
+กายบริหาร
+กายพันธน์
+กายภาพ
+กายภาพบำบัด
+กายวิภาคศาสตร์
+กายสิทธิ์
+กายสุจริต
+กายาพยพ
+กายินทรีย์
+กาเยน
+กาเยนทรีย์
+การ
+การก
+การณ์
+การ์ด
+การติเกยะ
+การ์ตูน
+การเต
+การโน้มถ่วง
+การบูร
+การบูรป่า
+การย์
+การละเล่น
+การวิก
+การเวก
+การะเกด
+การะบุหนิง
+การัณฑวะ
+การัณย์
+การันต์
+การางหัวขวาน
+การุญ
+การุณย์
+กาเรการ่อน
+กาเรียน
+กาล
+กาลกรรณี
+กาลกัญชิกาสูร
+กาลกิณี
+กาลจักร
+กาลัญญุตา
+กาลัญญู
+กาลัด
+กาลานุกาล
+กาลามสูตร
+กาลิก
+กาลี
+กาแล็กซี่
+กาว
+ก้าว
+กาววาว
+กาแวน
+กาศิก
+กาษฐะ
+กาษา
+กาสร
+กาสะ
+กาสา
+กาสาร
+กาสาวะ
+กาสิโน
+กาหล
+กาหลา
+กาหลิบ
+กาหัก
+กาเหว่า
+กาไหล่
+กาฬ
+กาฬกูฏ
+กาฬปักษ์
+กาฬปักษี
+กาฬพฤกษ์
+กาฬโรค
+กาฬวาต
+กาฬาวก
+กาฮัง
+กำ
+ก่ำ
+ก้ำ
+กำกวม
+กำกัด
+กำกับ
+ก้ำกึ่ง
+กำกูน
+ก้ำเกิน
+กำเกียง
+กำคูน
+ก่ำเคือ
+กำจร
+กำจัด
+กำจาย
+กำชับ
+กำชำ
+กำโชก
+กำซาบ
+กำซำ
+กำด้น
+กำดัด
+กำดาล
+กำเดา
+กำเดาะ
+กำตาก
+กำทวด
+กำทวน
+กำธร
+กำนล
+กำนัด
+กำนัน
+กำนัล
+กำเนิด
+กำเนียจ
+กำบด
+กำบน
+กำบัง
+กำบัด
+กำบิด
+กำเบ้อ
+กำโบล
+กำปอ
+กำปั่น
+กำปั้น
+กำผลา
+กำพง
+กำพด
+กำพต
+กำพร้า
+กำพราก
+กำพวด
+กำพอง
+กำพืด
+กำพู
+กำเพลิง
+กำแพง
+กำแพ้ง
+กำภู
+กำมพฤกษ์
+กำมลาศน์
+กำมเลศ
+กำมะถัน
+กำมะลอ
+กำมะหยี่
+กำมะหริด
+กำมังละการ
+กำมังวิลิต
+กำมัชพล
+กำยาน
+กำยำ
+กำรอ
+กำราก
+กำราบ
+กำราล
+กำรู
+กำเริบ
+กำไร
+กำลอง
+กำลัง
+กำลังช้างเผือก
+กำลังช้างสาร
+กำลังวัวเถลิง
+กำลุง
+กำลูน
+กำเลา
+กำเลาะ
+กำไล
+กำสรด
+กำสรวล
+กำเสาะ
+กำแสง
+กำหนด
+กำหนัด
+กำหราก
+กำเหน็จ
+กำแหง
+กิก
+กิ๊ก
+กิ่ง
+กิ้งก่า
+กิ้งกือ
+กิ้งโครง
+กิงบุรุษ
+กิงสุก
+กิ่งหาย
+กิจ
+กิจจะ
+กิจจะลักษณะ
+กิจจา
+กิดาการ
+กิดาหยัน
+กิตติ
+กิตาหรัง
+กิน
+กินเครา
+กินนร
+กินริน
+กินรี
+กินูน
+กิ๊บ
+กิม
+กิมตึ๋ง
+กิมิชาติ
+กิมิวิทยา
+กิโมโน
+กิโยตีน
+กิระ
+กิริณี
+กิรินท
+กิริเนศวร
+กิริยา
+กิลมะ
+กิเลน
+กิเลส
+กิโล
+กิโลมกะ
+กิ่ว
+กิ๋ว
+กี่
+กี้
+กี๋
+กีฏ
+กีด
+กีตาร์
+กีบ
+กีรติ
+กีวี
+กีฬา
+กึก
+กึกถอง
+กึง
+กึ่ง
+กึ๋น
+กุ
+กุก
+กุ๊ก
+กุกๆกักๆ
+กุ๊กๆกิ๊กๆ
+กุกกัก
+กุ๊กกิ๊ก
+กุกกุฏ
+กุกกุร
+กุกขี้หมู
+กุกรรม
+กุก่อง
+กุกะ
+กุกุธภัณฑ์
+กุ้ง
+กุ้งเต้น
+กุ้งยิง
+กุงอน
+กุงาน
+กุโงก
+กุจี
+กุญแจ
+กุญชร
+กุฎ
+กุฎา
+กุฎาธาร
+กุฎี
+กุฏฐัง
+กุฏิ
+กุณฑ์
+กุณฑล
+กุณฑิน
+กุณฑี
+กุณโฑ
+กุณาล
+กุณิ
+กุณี
+กุด
+กุดัง
+กุดั่น
+กุดา
+กุทัณฑ์
+กุน
+กุ๊น
+กุนเชียง
+กุนซือ
+กุนที
+กุโนกามอ
+กุบ
+กุบกับ
+กุม
+กุ่ม
+กุมฝอย
+กุมภ์
+กุมภนิยา
+กุมภัณฑ์
+กุมภา
+กุมภิล
+กุมภีล์
+กุมมาส
+กุมเหง
+กุมาร
+กุมารลฬิตา
+กุมารา
+กุมาริกา
+กุมารี
+กุมุท
+กุย
+กุ๊ย
+กุ๋ย
+กุ๋ยๆ
+กุยช่าย
+กุ่ยหลุ่ยส้ม
+กุยเฮง
+กุรร
+กุระ
+กุรุเกษตร
+กุรุง
+กุรุพินท์
+กุรุร
+กุเรา
+กุล
+กุลกัลยา
+กุลกูณี
+กุลคุรุ
+กุลชน
+กุลชาต
+กุลดิลก
+กุลทูสก
+กุลธรรม
+กุลธิดา
+กุลนาค
+กุลนารี
+กุลนาศ
+กุลบดี
+กุลบุตร
+กุลบุรุษ
+กุลพธู
+กุลมัจฉริยะ
+กุลมิตร
+กุลวาร
+กุลเวทิตา
+กุลสตรี
+กุลสัมพันธ์
+กุลา
+กุลาหล
+กุลี
+กุลีกุจอ
+กุลุปกาจารย์
+กุเลา
+กุแล
+กุไล
+กุวะ
+กุเวร
+กุศราช
+กุศล
+กุศโลบาย
+กุสล
+กุสะ
+กุสุม
+กุสุมภ์
+กุสุมา
+กุสุมาลย์
+กุสุมิตลดาเวลลิตา
+กุหก
+กุหนี
+กุหนุง
+กุหร่า
+กุหล่า
+กุหลาบ
+กุแหละ
+กู
+กู่
+กู้
+กู๊ก
+กูฏ
+กูฏา
+กูโฏบาย
+กูณฑ์
+กูด
+กูน
+กูบ
+กูปรี
+กูรมะ
+กูรมาวตาร
+กูรำ
+เก
+เก่
+เก๊
+เก๋
+เก้ๆกังๆ
+เกก
+เก๊ก
+เกกมะเหรก
+เก๊กฮวย
+เก้กัง
+เก็ง
+เก่ง
+เก้ง
+เก๋ง
+เกงกอย
+เก้งก้าง
+เกงเขง
+เก๋งเคง
+เก็จ
+เกจิอาจารย์
+เกชา
+เกณฑ์
+เกณฑ์ตะพัด
+เกด
+เก็ด
+เกตุ
+เกน
+เก่น
+เกนๆ
+เก็บ
+เกม
+เกย
+เกย์
+เกยูร
+เกรง
+เกร็ง
+เกรด
+เกร็ด
+เกรน
+เกร่อ
+เกรอะ
+เกราะ
+เกราะเพชรไพฑูรย์
+เกริก
+เกริน
+เกริ่น
+เกรียก
+เกรียง
+เกรียด
+เกรียน
+เกรียบ
+เกรียม
+เกรียมกรม
+เกรียว
+เกรี้ยว
+เกรี้ยวๆ
+เกเร
+เกล็ด
+เกลศ
+เกลอ
+เกลา
+เกล้า
+เกลาะ
+เกลี่ย
+เกลี้ย
+เกลียง
+เกลี้ยง
+เกลียด
+เกลียว
+เกลี่ยวดำ
+เกลือ
+เกลื้อ
+เกลือก
+เกลื่อน
+เกลื้อน
+เกไล
+เกวล
+เกวลาที
+เกวลิน
+เกวลี
+เกวัฏ
+เกวียน
+เกศ
+เกศพ
+เกศว
+เกศา
+เกศินี
+เกศี
+เกษตร
+เกษตรกร
+เกษตรกรรม
+เกษตรบดี
+เกษตรศาสตร์
+เกษม
+เกษียณ
+เกษียน
+เกษียร
+เกส
+เกสตาโป
+เกสร
+เกสรี
+เกสา
+เกสี
+เก่หลี
+เก้อ
+เกอิชา
+เกะ
+เกะกะ
+เกา
+เก่า
+เก้า
+เก๋า
+เกาต์
+เกาทัณฑ์
+เกาทุมพร
+เกาบิน
+เกาบิล
+เกามาร
+เกาลัด
+เกาลิน
+เกาศัลย์
+เกาไศย
+เกาเหลา
+เกาเหลียง
+เก้าอี้
+เกาะ
+เกาะแกะ
+เกิง
+เกิ้ง
+เกิด
+เกิน
+เกิบ
+เกีย
+เกียกกาย
+เกียง
+เกี่ยง
+เกี๋ยง
+เกียจ
+เกียด
+เกียน
+เกี้ยมไฉ่
+เกี้ยมอี๋
+เกียรติ
+เกียรติ์
+เกี่ยว
+เกี้ยว
+เกี๊ยว
+เกี๊ยะ
+เกื้อ
+เกือก
+เกื้อกูล
+เกือบ
+แก
+แก่
+แก้
+แกง
+แก่ง
+แก้ง
+แก๊ง
+แกงขม
+แกงได
+แกงแนง
+แก่งแย่ง
+แกโดลิเนียม
+แกน
+แก่น
+แกนะ
+แกแน
+แก๊ป
+แกม
+แก้ม
+แกมมา
+แกรก
+แกร่ง
+แกร็น
+แกรนิต
+แกรไฟต์
+แกร่ว
+แกระ
+แกล
+แกล่
+แกล้ง
+แกลน
+แกลบ
+แกล้ม
+แกลลอน
+แกลเลียม
+แกล้ว
+แกละ
+แกแล
+แกว
+แก้ว
+แกว่ง
+แกว่น
+แก็ส
+แก๊ส
+แกะ
+โก
+โก่
+โก้
+โก๋
+โกก
+โกกนุท
+โกกิล
+โกกิลา
+โกโก้
+โกง
+โก่ง
+โกงกาง
+โก้งเก้ง
+โกงโก้
+โก้งโค้ง
+โกเชาว์
+โกญจน
+โกญจา
+โกฏิ
+โกฐ
+โกฐาส
+โกณ
+โกณก
+โกณฑัญญะ
+โกดัง
+โกตไต
+โกทัณฑ์
+โกน
+โก่น
+โก๋น
+โกนาคมน์
+โกโนเรีย
+โกปินำ
+โกมล
+โกมารภัจจ์
+โกมุท
+โกเมน
+โกเมศ
+โกย
+โกร้
+โกรก
+โกรกกราก
+โกรง
+โกร่ง
+โกร่งกร่าง
+โกรงเกรง
+โกร๋งเกร๋ง
+โกรญจ
+โกรด
+โกรต๋น
+โกรธ
+โกรธา
+โกร๋น
+โกรม
+โกรย
+โกรศ
+โกโรโกเต
+โกโรโกโรก
+โกโรโกโส
+โกลง
+โกลน
+โกลาหล
+โกไล
+โกวิท
+โกวิฬาร
+โกศ
+โกศล
+โกษ
+โกษม
+โกษย
+โกส
+โกสน
+โกสัช
+โกสินทร์
+โกสีย์
+โกสุม
+โกไสย
+โกหก
+โกหวา
+โกหัญ
+ใกล้
+ไก
+ไก่
+ไก้
+ไก๊
+ไก๋
+ไก่กอม
+ไก๋แดง
+ไก่เตี้ย
+ไก่นา
+ไก่พัล
+ไก่ฟ้า
+ไกร
+ไกรพ
+ไกรลาส
+ไกรศร
+ไกรศรี
+ไกรสร
+ไกรสิทธิ
+ไกล
+ไกล่
+ไกลาส
+ไกว
+ไกวัล
+ไก่ไห้
+ข
+ขคะ
+ขคาธิป
+ขคาภิราม
+ขคาสนะ
+ขเคศวร
+ขง
+ขงจื๊อ
+ขจร
+ขจอก
+ขจัด
+ขจ่าง
+ขจาย
+ขจาว
+ขจิต
+ขจิริด
+ขจี
+ขจุย
+ขเจา
+ขณะ
+ขณะจิต
+ขณิก
+ขณิกสมาธิ
+ขด
+ขดาน
+ขตอย
+ขทิง
+ขทึง
+ขน
+ข้น
+ขนง
+ขนงเนื้อ
+ขนด
+ขนน
+ขนบ
+ขนม
+ขนมจีน
+ขนมเบื้องญวน
+ขนมปัง
+ขนมผสมน้ำยา
+ขนมผักกาด
+ขนมเส้น
+ขนมหัวผักกาด
+ขนอง
+ขนอน
+ขนอบ
+ขนัด
+ขนัน
+ขนาก
+ขนาง
+ขนาด
+ขนาน
+ขนาบ
+ขนาย
+ขนำ
+ขนิษฐ
+ขนิษฐา
+ขนุน
+ขบ
+ขบขัน
+ขบถ
+ขบวน
+ขบวร
+ขบูร
+ขม
+ข่ม
+ขมงโกรย
+ขมม
+ขมวด
+ขมวดยา
+ขมวน
+ขมหิน
+ขมอง
+ขม่อม
+ขมอย
+ขมักเขม้น
+ขมัง
+ขมับ
+ขมา
+ขม้ำ
+ขมิ้น
+ขมิบ
+ขมีขมัน
+ขมึง
+ขมุ
+ขมุกขมอม
+ขมุกขมัว
+ขมุดขมิด
+ขมุบ
+ขมุม
+ขโมย
+ขยด
+ขยม
+ขย่ม
+ขยล
+ขยอก
+ขยอง
+ขย่อน
+ขย้อน
+ขยะ
+ขยะแขยง
+ขยัก
+ขยัน
+ขยั้น
+ขยับ
+ขยาด
+ขยาบ
+ขยาย
+ขยำ
+ขย้ำ
+ขยิก
+ขยิบ
+ขยิ่ม
+ขยี้
+ขยี่ขยัน
+ขยุกขยิก
+ขยุกขยุย
+ขยุบ
+ขยุม
+ขยุ้ม
+ขยุ้มตีนหมา
+ขยุย
+ขรม
+ขรรค์
+ขรัว
+ขริบ
+ขรี
+ขรึม
+ขรุขระ
+ขล้ง
+ขลบ
+ขลม
+ขลวน
+ขล้อ
+ขลัง
+ขลับ
+ขลา
+ขลาด
+ขลาย
+ขลิบ
+ขลิบทอง
+ขลึง
+ขลุก
+ขลุบ
+ขลุม
+ขลุมประเจียด
+ขลุ่ย
+ขลู
+ขลู่
+ขวง
+ข่วง
+ขวด
+ขวน
+ข่วน
+ขวบ
+ขวย
+ขวะไขว่เขวี่ย
+ขวักไขว่
+ขวัญ
+ขวัญเมือง
+ขวัญอ่อน
+ขวัด
+ขวัดขวิด
+ขวัดแคว้ง
+ขวั้น
+ขวับ
+ขวา
+ขวาก
+ขวาง
+ขว้าง
+ขวาด
+ขวาน
+ขวายขวน
+ขวาว
+ขว้าว
+ขวิด
+ขษณะ
+ขษัย
+ขษีณาศรพ
+ขษีร
+ขอ
+ข่อ
+ข้อ
+ขอก
+ของ
+ข้อง
+ของระอา
+ขอฉาย
+ขอด
+ขอน
+ข่อน
+ข้อน
+ขอบ
+ขอบข่าย
+ขอบเขต
+ขอบคุณ
+ขอบใจ
+ขอบพระคุณ
+ขอบเหล็ก
+ขอม
+ข่อย
+ข้อย
+ขะขำ
+ขะแข่น
+ขะแข้น
+ขะแจะ
+ขะแถก
+ขะนาน
+ขะเน็ด
+ขะมอมขะแมม
+ขะแมซอ
+ขะแมธม
+ขะยิก
+ขะยุก
+ขะเย้อแขย่ง
+ขะแยะ
+ขัค
+ขัง
+ขังขอก
+ขัช
+ขัชก
+ขัณฑสกร
+ขัด
+ขัดมอน
+ขัน
+ขั้น
+ขันแข็ง
+ขันติ
+ขันตี
+ขันโตก
+ขันทองพยาบาท
+ขันที
+ขันธ์
+ขันธกุมาร
+ขันธสันดาน
+ขันธาวาร
+ขันหมาก
+ขับ
+ขัย
+ขัว
+ขั้ว
+ขา
+ข่า
+ข้า
+ขาก
+ขาก๊วย
+ขาเกวียน
+ขาง
+ข่าง
+ข้าง
+ข้างกระดาน
+ข้างเงิน
+ขางแดง
+ข้างตะเภา
+ข้างลาย
+ขาณุ
+ขาด
+ขาทนียะ
+ขาน
+ข่าน
+ขาบ
+ขาม
+ข้าม
+ขาย
+ข่าย
+ขาล
+ขาว
+ข่าว
+ข้าว
+ข้าวคำ
+ข้าวจี่
+ขาวจีบ
+ข้าวต้ม
+ข้าวตอก
+ข้าวนก
+ขาวพวง
+ขาวม้า
+ข้าวมิ่น
+ข้าวเย็นใต้
+ข้าวเย็นเหนือ
+ข้าวสาร
+ข้าวหางช้าง
+ขาวใหญ่
+ข้าวใหม่น้อย
+ข้าวใหม่ใหญ่
+ข้าศึก
+ข้าหลวง
+ข้าหลวงหลังลาย
+ขำ
+ข่ำเขียว
+ขิก
+ขิกๆ
+ขิง
+ขิ่ง
+ขิปสัทโท
+ขิม
+ขี่
+ขี้
+ขี้กา
+ขี้กาดง
+ขี้กาแดง
+ขี้กาเหลี่ยม
+ขี้ขม
+ขี้ขวง
+ขี้ขุย
+ขี้ครอก
+ขี้ควาย
+ขี้โครง
+ขีณะ
+ขีณาสพ
+ขีด
+ขี้ตังนี
+ขี้ติ้ว
+ขี้ไต้
+ขี้ไถ
+ขีปนาวุธ
+ขี้ผึ้ง
+ขี้มอด
+ขี้ยอก
+ขี้ราด
+ขี้แรด
+ขี้สูด
+ขี้หนอน
+ขี้หน้า
+ขี้หนู
+ขี้หมู
+ขี้เหล็ก
+ขี้อ้น
+ขี้อ้าย
+ขึง
+ขึ้ง
+ขึ้น
+ขึ้นฉ่าย
+ขืน
+ขื่น
+ขื่อ
+ขื่อผี
+ขุก
+ขุด
+ขุททกนิกาย
+ขุน
+ขุ่น
+ขุนทอง
+ขุนแผน
+ขุนเพ็ด
+ขุปปิปาสิกเปรต
+ขุม
+ขุย
+ขู
+ขู่
+ขูด
+เข
+เข้
+เขก
+เข็ง
+เข่ง
+เขจร
+เข็ญ
+เข็ญใจ
+เข็ด
+เขดา
+เขต
+เขน
+เข็น
+เข่น
+เขนง
+เขน็ด
+เขนย
+เขบ็จขบวน
+เขบ็ต
+เข็ม
+เข้ม
+เข้มขาบ
+เขม็ง
+เขม็ดแขม่
+เขม่น
+เขม้น
+เขม้นขะมัก
+เขมร
+เขมา
+เขม่า
+เขมาโกรย
+เขมือบ
+เขย
+เขยก
+เขย่ง
+เขยตาย
+เขย้อแขย่ง
+เขยอะขยะ
+เขย่า
+เขยิน
+เขยิบ
+เขยียวขยอน
+เขยื้อน
+เขรอะ
+เขลง
+เขลอะ
+เขละ
+เขลา
+เขลาะ
+เขว
+เขษตร
+เขษม
+เขษียร
+เขฬะ
+เขะขะ
+เขา
+เข่า
+เข้า
+เข้าหมิ้น
+เขิง
+เขิน
+เขิบ
+เขี่ย
+เขียง
+เขียงพระนางอี่
+เขียงพร้า
+เขียด
+เขียน
+เขี่ยน
+เขียม
+เขียว
+เขี้ยว
+เขียะ
+เขือ
+เขือง
+เขื่อง
+เขื่อน
+เขือม
+แข
+แข้
+แขก
+แขกเต้า
+แข็ง
+แข่ง
+แข้ง
+แขน
+แข่น
+แข้น
+แขนง
+แขนะ
+แขม
+แขม็บ
+แขม่ว
+แขย็กๆ
+แขยง
+แขย่ง
+แขยงหนู
+แขละ
+แขวก
+แขวง
+แขวน
+แขวนลอย
+แขวะ
+แขสร์
+โข
+โขก
+โข่ง
+โขด
+โขดง
+โขน
+โขนง
+โขม
+โขมง
+โขมด
+โขมดยา
+โขยก
+โขยง
+โขย่ง
+โขยด
+โขยม
+โขลก
+โขลกๆ
+โขลง
+โขลน
+โขลนทวาร
+โขษม
+ไข
+ไข่
+ไข้
+ไข่ดัน
+ไข่มุก
+ไขรา
+ไขว่
+ไขว้
+ไขษย
+ไขสือ
+ไขเสนียด
+ไขหู
+ไข่เหลือง
+ค
+คก
+คคนะ
+คคนัมพร
+คคนางค์
+คคนานต์
+คง
+คงคา
+คงคาเดือด
+คงไคย
+คชราช
+คชส่าน
+คชาชาติ
+คชาชีพ
+คชาธาร
+คชาภรณ์
+คชายุรเวช
+คชารี
+คชินทร
+คเชนทร์
+คณน
+คณนา
+คณโภชน์
+คณะ
+คณิกา
+คณิต
+คเณศ
+คด
+คดี
+คต
+คติ
+คทา
+คน
+ค้น
+คนทา
+คนทิสอ
+คนทิสอทะเล
+คนที
+คนทีเขมา
+คนทีสอ
+คนโท
+คนธ์
+คนธรรพ์
+คนละ
+คเนจร
+คบ
+คม
+คมน์
+คมนาการ
+คมนาคม
+คมิกภัต
+ครก
+คร่ง
+ครบ
+ครบถ้วน
+ครรชิต
+ครรภ
+ครรภ์
+ครรภธาตุ
+ครรภมล
+ครรภาธาน
+ครรโภทร
+ครรลอง
+ครรโลง
+ครรไล
+ครรหิต
+ครวญ
+ครวญหา
+ครวัก
+ครวี
+ครหา
+ครอก
+ครอง
+ครองแครง
+คร่อเงาะ
+คร่อเทียน
+ครอบ
+ครอบจักรวาล
+ครอบตลับ
+คร่อม
+คระ
+คระเมิน
+คระแลง
+คระไล
+คระแวง
+คระหน
+คระหวน
+คระหาย
+คระหิว
+คระโหย
+ครั่ง
+ครั้ง
+ครัดเคร่ง
+ครัน
+ครั่น
+ครั้น
+ครับ
+ครัว
+ครา
+คร่า
+คราก
+คราง
+คราญ
+คราด
+คร้าน
+คราบ
+คราบหมู
+คราม
+คร้าม
+ครามครัน
+คราว
+คร่าว
+คราส
+ครำ
+คร่ำ
+คริปทอน
+คริสต์
+ครีครอ
+ครีบ
+ครีม
+ครีษมายัน
+ครึ
+ครึกครื้น
+ครึกโครม
+ครึ่ง
+ครึน
+ครึม
+ครึ้ม
+ครึมครุ
+ครืด
+ครืน
+ครื้น
+ครืนครั่น
+ครื้นครึก
+ครื้นเครง
+ครือ
+ครุ
+ครุคระ
+ครุฑ
+ครุฑกระทง
+ครุ่น
+ครุ่นคิด
+ครุมเครือ
+ครุย
+ครุวนา
+ครู
+ครู่
+ครูด
+คฤโฆษ
+คฤนถ์
+คฤห
+คฤหบดี
+คฤหปัตนี
+คฤหัสถ์
+คฤหา
+คฤหาสน์
+คล
+คลวง
+คลอ
+คล้อ
+คลอก
+คลอง
+คล่อง
+คล้อง
+คลอด
+คลอน
+คล้อย
+คลอรีน
+คลอโรฟอรม์
+คลอโรฟีลล์
+คละ
+คละคลุ้ง
+คลัก
+คลั่ก
+คลั่กๆ
+คลัง
+คลั่ง
+คลัตช์
+คลับ
+คลับคล้าย
+คลา
+คล้า
+คลางแคลง
+คลาด
+คลาน
+คลาย
+คล้าย
+คล้ายคลึง
+คล่าว
+คลาศ
+คลำ
+คล่ำ
+คล้ำ
+คลิง
+คลิ้งโคลง
+คลินิก
+คลี
+คลี่
+คลึง
+คลื่น
+คลื่นไส้
+คลื่นเหียน
+คลุก
+คลุกคลาน
+คลุ้ง
+คลุบ
+คลุม
+คลุ่ม
+คลุ้ม
+ควง
+ควณ
+ควน
+ควบ
+ควบแน่น
+ควย
+ควร
+ควัก
+ควักค้อน
+ควั่งคว้าง
+ควัน
+ควั่น
+คว้า
+ควาก
+คว้าง
+ควาญ
+ควาน
+คว้าน
+ความ
+ความคลาด
+ความเครียด
+ความแค้น
+ความเฉื่อย
+ความชื้น
+ความถ่วง
+ความถี่
+ความยาวคลื่น
+ความรู้สึกเขื่อง
+ความรู้สึกด้อย
+ความรู้สึกเด่น
+ความเร่ง
+ความเร็ว
+ความหน่วง
+ควาย
+คว่าว
+คว่ำ
+ควินิน
+ควิวๆ
+ควิวควัง
+ควิวคว่าง
+ควิวคว้าง
+ควีนสิริกิติ์
+คหัฐ
+คอ
+ค้อ
+คอก
+ค็อกคัส
+ค็อกเทล
+คอคาน
+คอเคซอยด์
+คองเกรส
+ค่องอ้อย
+คอด
+คอเต็บ
+คอน
+ค่อน
+ค้อน
+คอนกรีต
+ค้อนกลอง
+คอนเดนเซอร์
+ค้อนตีนหมา
+ค้อนทอง
+คอนวอย
+คอนแวนต์
+คอนเสิร์ต
+ค้อนหอย
+คอบ
+คอม
+ค่อม
+ค้อม
+คอมพิวเตอร์
+คอมมานโด
+คอมมิวนิสต์
+คอย
+ค่อย
+ค้อย
+ค่อยๆ
+คอยล์
+คอร์ด
+คอร์ต
+คอรัปชั่น
+คอลัมน์
+คอเลสเตอรอล
+คอแลน
+คอสติกโซดา
+คอแห้ง
+คะ
+ค่ะ
+คะไขว่
+คะค้อย
+คะคาน
+คะคึง
+คะนน
+คะนอง
+คะน้า
+คะนึง
+คะเน
+คะเนงร้าย
+คะเน็ด
+คะแนน
+คะใน
+คะมำ
+คะมึก
+คะยั้นคะยอ
+คะเยอ
+คัก
+คั่ก
+คัคน
+คัคนะ
+คัคนัมพร
+คัคนางค์
+คัคนานต์
+คั่ง
+คังไคย
+คัจฉ
+คัณฑมาลา
+คัณฑสูตร
+คัด
+คัดเค้า
+คัดช้อน
+คัดมอน
+คัทลียา
+คัน
+คั่น
+คั้น
+คันจาม
+คันฉาย
+คันโดง
+คันทรง
+คันธ
+คันธ์
+คันธารราษฎร์
+คันหามเสือ
+คับ
+คับค้อน
+คับคา
+คับแค
+คัพภ์
+คัพโภทร
+คัมภีร์
+คัล
+คัว
+คั่ว
+คา
+ค่า
+ค้า
+ค่าคบ
+คาง
+ค่าง
+ค้าง
+คางคก
+ค้างคาว
+คาด
+คาดคั้น
+คาถา
+คาทอลิก
+ค่าที่
+คาธ
+คาเธย์
+คาน
+ค้าน
+คาน้า
+คาบ
+คาพยุต
+คาม
+คามณีย์
+คามภีร์
+คามี
+คาย
+ค่าย
+คายก
+คายัน
+คาร์บอน
+คาร์บอนไดออกไซด์
+คาร์บอนมอนอกไซด์
+คาร์บอเนต
+คาร์บอลิก
+คาร์บูเรเตอร์
+คาร์โบรันดัม
+คาร์โบไฮเดรต
+คารพ
+คารม
+คารวะ
+คาราเต้
+คาราวาน
+คาว
+ค่าว
+ค้าว
+คาวตอง
+คาวี
+คาวุต
+คาส
+ค่าหด
+คำ
+ค่ำ
+ค้ำ
+คำดีควาย
+คำใต้
+คำนวณ
+คำนวร
+คำนับ
+คำนัล
+คำนึง
+คำนูณ
+คำโบล
+คำฝอย
+คำเพลิง
+คำรน
+คำรบ
+คำราม
+คำแสด
+คำแหง
+คำโอง
+คิกๆ
+คิง
+คิด
+คินิ
+คิมห
+คิมหันต์
+คิมหานะ
+คิริ
+คิรี
+คิลานะ
+คิว
+คิ้ว
+คิหิสุข
+คี่
+คีต
+คีตกะ
+คีบ
+คีม
+คีรี
+คีรีบูน
+คึก
+คึ่ก
+คึ่กๆ
+คึกคัก
+คึกคาม
+คืน
+คืบ
+คือ
+คุ
+คุก
+คุกกี้
+คุกเข่า
+คุกคลาน
+คุกคาม
+คุกพาทย์
+คุคะ
+คุง
+คุ้ง
+คุณ
+คุณค่า
+คุณธรรม
+คุณนาม
+คุณบท
+คุณประโยชน์
+คุณพิเศษ
+คุณภาพ
+คุณลักษณะ
+คุณลุงคุณป้า
+คุณวิเศษ
+คุณวุฒิ
+คุณศัพท์
+คุณสมบัติ
+คุณากร
+คุณาลัย
+คุณูปการ
+คุโณปการ
+คุด
+คุดทะราด
+คุต
+คุตติ
+คุ่น
+คุ้น
+คุป
+คุปต์
+คุปติ
+คุม
+คุ่ม
+คุ้ม
+คุ้มดีคุ้มร้าย
+คุ้มเท้า
+คุมฝอย
+คุย
+คุ้ย
+คุรุ
+คุลา
+คุลิก่า
+คุลีการ
+คู
+คู่
+คู้
+คูณ
+คูถ
+คูน
+คูปอง
+คูเรียม
+คูหา
+เค้เก้
+เค้ง
+เคจฉ
+เคณฑะ
+เคด
+เคน
+เคเบิล
+เค็ม
+เคมี
+เคย
+เครง
+เคร่ง
+เครงครำ
+เครงคร่ำ
+เครดิต
+เครน
+เครา
+เคร่า
+เคราหณี
+เคราะห์
+เครียด
+เครียว
+เครือ
+เครือเขาน้ำ
+เครือเขามวก
+เครื่อง
+เครือจักรภพ
+เคล้ง
+เคล็ด
+เคล้น
+เคล้า
+เคล่าคล่อง
+เคลิบเคลิ้ม
+เคลิ้ม
+เคลีย
+เคลี้ยคลิง
+เคลื่อน
+เคลือบ
+เคว้ง
+เคหะ
+เคหา
+เคอะ
+เคา
+เค้า
+เคาน์เตอร์
+เคาเป๋
+เคารพ
+เค้าสนามหลวง
+เคาะ
+เคาะแคะ
+เคี้ย
+เคียง
+เคียด
+เคียน
+เคียม
+เคี่ยม
+เคียร
+เคียว
+เคี่ยว
+เคี้ยว
+เคื้อ
+เคือง
+แค
+แค่
+แค้
+แคแกล
+แคชเชียร์
+แคดเมียม
+แคโทด
+แคน
+แค่น
+แค้น
+แคบ
+แคบหมู
+แคปซูล
+แคม
+แคร่
+แครก
+แครครั่ง
+แครง
+แครงเครียว
+แคระ
+แคลคูลัส
+แคลง
+แคลเซียม
+แคลน
+แคล้ว
+แคล่วคล่อง
+แคลอรี
+แคลิฟอร์เนียม
+แคแล
+แคว
+แควก
+แคว้ง
+แคว้น
+แคะ
+โค
+โคก
+โคกกระสุน
+โคกกระออม
+โคกม้า
+โคคลาน
+โคเคน
+โค่ง
+โค้ง
+โคจร
+โคจรคาม
+โค้ช
+โคเซแคนต์
+โคไซน์
+โคตร
+โคแทนเจนต์
+โคธา
+โคน
+โค่น
+โคนดินสอ
+โคนตายปลายเป็น
+โคนสมอ
+โคบอลต์
+โคปผกะ
+โคม
+โคม่า
+โครก
+โครกครอก
+โครกคราก
+โครง
+โคร่ง
+โคร่งคร่าง
+โครงแคร
+โครม
+โครเมียม
+โครโมโซม
+โคราช
+โคล
+โคลง
+โคลน
+โควตา
+โคออร์ดิเนต
+ใคร
+ใคร่
+ใคร่ครวญ
+ไค
+ไค้
+ไคร้
+ไคร้เครือ
+ไคล
+ไคล้
+ฆ
+ฆง
+ฆฏ
+ฆโฏทร
+ฆต
+ฆน
+ฆนากร
+ฆนาคม
+ฆนามัย
+ฆนาศัย
+ฆโนบล
+ฆราวาส
+ฆ้อง
+ฆ้องสามย่าน
+ฆ่า
+ฆาฏ
+ฆาต
+ฆาน
+เฆี่ยน
+โฆรวิส
+โฆษ
+โฆษก
+โฆษณา
+โฆษณาการ
+โฆษณาชวนเชื่อ
+โฆษิต
+โฆสวันต์
+ง
+งก
+งง
+งงิด
+งด
+งดงาม
+งบ
+งม
+งวง
+ง่วง
+งวด
+ง่วน
+ง้วน
+งวยงง
+งอ
+ง้อ
+งอก
+งอกแงก
+ง่อง
+ง่องแง่ง
+งอแง
+งอด
+งอดแงด
+งอน
+ง่อน
+ง่อนแง่น
+งอนหง่อ
+ง้อนหมู
+งอบ
+งอม
+ง้อม
+งอย
+ง่อย
+งะ
+งักๆ
+งั่กๆ
+งั่ง
+งังๆ
+งัด
+งัน
+งันงก
+งับ
+งัว
+งั่ว
+งัวเงีย
+งัวซัง
+งัวเลีย
+งา
+ง่า
+ง้าง
+ง่าเงย
+งาไซ
+งาน
+ง่าน
+งาบๆ
+งาม
+ง่าม
+งาย
+ง่าย
+ง่าย้อย
+ง้าว
+งำ
+ง่ำ
+ง้ำ
+ง่ำๆ
+งิ้ว
+งีบ
+งึกๆ
+งึน
+งึม
+งึมงำ
+งุด
+งุดๆ
+งุนงง
+งุ่นง่าน
+งุบ
+งุบๆ
+งุบงิบ
+งุ้ม
+งุ่มง่าม
+งุย
+งู
+งูบ
+งู่หนี
+เง้
+เงก
+เง็น
+เงย
+เง่หมึง
+เงอะ
+เงอะงะ
+เงา
+เง่า
+เง้า
+เงาะ
+เงิน
+เงี่ย
+เงี่ยง
+เงี่ยน
+เงียบ
+เงี้ยว
+เงี้ยวระเริง
+เงี้ยวรำลึก
+เงี่ยหู
+เงื้อ
+เงือก
+เงื่อง
+เงื่องๆ
+เงือด
+เงือดงด
+เงือน
+เงื่อน
+เงือบ
+เงื้อม
+แง
+แง่
+แง่ง
+แง่น
+แง้ม
+แงะ
+โง
+โง่
+โงก
+โงกเงก
+โงง
+โง้ง
+โง่งๆ
+โงงเงง
+โง่งเง่ง
+โงเง
+โงน
+ไง
+ไง้
+จ
+จก
+จง
+จ่ง
+จ๋ง
+จงกรม
+จงกล
+จงกลนี
+จงโคร่ง
+จงอร
+จงอาง
+จญ
+จด
+จดุรงค์
+จดุระ
+จตุชาติสุคนธ์
+จตุตถี
+จตุรงคโชค
+จตุราบายภูมิ
+จตุราริยสัจ
+จตุสดมภ์
+จทึง
+จน
+จ้น
+จบ
+จม
+จ่ม
+จมร
+จมรี
+จมู
+จมูก
+จมูกปลาหลด
+จมูกปลาไหล
+จมูกหลอด
+จยุติ
+จร
+จรก
+จรกลู่
+จรกา
+จรแกว่ง
+จรคั่ง
+จรจรัล
+จรจัด
+จรณะ
+จรด
+จรดล
+จรบน
+จรบัน
+จรบาท
+จรมัน
+จรมูก
+จรรจา
+จรรโจษ
+จรรม
+จรรยา
+จรรโลง
+จรร่ำ
+จรลวง
+จรล่วง
+จรลาด
+จรลาย
+จรลิ่ว
+จรลี
+จรลู่
+จรวจ
+จรวด
+จรวดจรี
+จรวัก
+จรส
+จรอก
+จระกล้าย
+จระขาบ
+จระเข้
+จระคลับ
+จระคล้าย
+จระคลุ่ม
+จระแคง
+จระจุ่ม
+จระทก
+จระเทิน
+จระนำ
+จระบาน
+จระบี
+จระลิ่ง
+จระลึง
+จระลุง
+จรัล
+จรัส
+จราก
+จราง
+จราจร
+จราญ
+จราย
+จราว
+จราส
+จริก
+จริง
+จริงๆ
+จริณ
+จริต
+จริยา
+จริว
+จรี
+จรึง
+จรุก
+จรุง
+จรูง
+จรูญ
+จรูส
+จเร
+จล
+จลนพลศาสตร์
+จลนศาสตร์
+จลนี
+จลา
+จลาจล
+จวก
+จ๊วก
+จวง
+จ้วง
+จ๋วง
+จวงหอม
+จวด
+จวดลาก
+จวน
+จวบ
+จวัก
+จอ
+จ่อ
+จ้อ
+จ๋อ
+จอก
+จ้อก
+จ๊อก
+จ้อกๆ
+จ๊อกๆ
+จ้อกแจ้ก
+จ้อกวอก
+จอง
+จ่อง
+จ้อง
+จ๋อง
+จ้องเต
+จองเปรียง
+จองหง่อง
+จ้องหน่อง
+จองหอง
+จอแจ
+จ๋อแจ๋
+จ้อช้าง
+จอด
+จอน
+จ้อน
+จอนจ่อ
+จอนหู
+จอบ
+จอม
+จ่อม
+จ่อมจ่าย
+จอมทอง
+จอมปลอม
+จ้อมป้อม
+จอมเปาะ
+จอมสุรางค์
+จ่อย
+จ้อย
+จ๋อย
+จะ
+จ้ะ
+จ๊ะ
+จ๋ะ
+จะกรัดจะกราด
+จะกรุน
+จะกรุมจะกราม
+จะกรูน
+จะกละ
+จะกวด
+จะเกร็ง
+จะขาบ
+จะเข้
+จะเข็บ
+จะงอย
+จะจะ
+จะจ้า
+จะแจ
+จะแจ้ง
+จะแจ้น
+จะแจ่ม
+จะไจ้
+จะบัน
+จะปิ้ง
+จะเพลิง
+จะละเม็ด
+จะละหวั่น
+จะลุง
+จัก
+จั้กๆ
+จักกาย
+จั๊กกิ้ม
+จักขุ
+จักจั่น
+จักจี้
+จั๊กจี้
+จั๊กเดียม
+จักร
+จักรพาก
+จักรวาก
+จักริน
+จักรี
+จั๊กเล้อ
+จักษุ
+จักแหล่น
+จัง
+จั้ง
+จั๋ง
+จังกวด
+จังกอบ
+จังกา
+จังกูด
+จังเก
+จังโก
+จังโก๋
+จังโกฏก์
+จังงัง
+จังมัง
+จังไร
+จังลอน
+จังเว็จ
+จังหนับ
+จังหรีด
+จังหล่อ
+จังหวะ
+จังหวัด
+จังหัน
+จังออน
+จัญไร
+จัณฑ์
+จัณฑาล
+จัด
+จัดจอง
+จัตตาฬีส
+จัตวา
+จัตุ
+จัตุร
+จัตุโลกบาล
+จัตุสดมภ์
+จัน
+จั่น
+จันโจษ
+จันท์
+จันทน์
+จันทนา
+จันทร์
+จันทรกลา
+จันทรกษัย
+จันทรกานต์
+จันทรกุฎ
+จันทรเกตุ
+จันทรคติ
+จันทรคราส
+จันทรเคราะห์
+จันทรชนก
+จันทรทักษิณ
+จันทรทาร
+จันทรนิภา
+จันทรบุตร
+จันทรประภาพ
+จันทรพิมพ์
+จันทรภาส
+จันทรภูติ
+จันทรมณฑล
+จันทรเม็ด
+จันทรเมาะห์
+จันทรรัตน์
+จันทรวงศ์
+จันทรวรรณ
+จันทรเศขร
+จันทราริ
+จันทรุปราคา
+จันทโรทัย
+จันทัน
+จันลอง
+จันเลา
+จันเลาะ
+จั้นหล่อ
+จันอับ
+จับ
+จับกัง
+จับจ่าย
+จับเจี๋ยว
+จับฉ่าย
+จับเดิม
+จับปิ้ง
+จับโปง
+จับยี่กี
+จับสั่น
+จัมบก
+จัมปก
+จัมมะ
+จั่ว
+จัวจี๊ด
+จั๊วะ
+จา
+จ่า
+จ้า
+จ๋า
+จาก
+จากพราก
+จากพาก
+จาคะ
+จาคี
+จาง
+จ่าง
+จ้าง
+จางวาง
+จาด
+จาตุ
+จาตุรงค์
+จาตุรนต์
+จาตุรันต์
+จาตุริก
+จาน
+จ้าน
+จาบ
+จาบัล
+จาบัลย์
+จาป
+จาปคุณ
+จาปธร
+จาปเวท
+จาม
+จามจุรี
+จามร
+จามรี
+จามีกร
+จ่าย
+จาร
+จ่ารง
+จารวาก
+จาระไน
+จาระบี
+จาริก
+จารี
+จารีต
+จารึก
+จารุ
+จ้าละหวั่น
+จาว
+จ่าว
+จ้าว
+จ่าหวัก
+จำ
+จ้ำ
+จำกว่า
+จำกัด
+จำงาย
+จ้ำจี้
+จำเจ
+จำเดิม
+จำทวย
+จำทับ
+จำทาบ
+จำเทิด
+จำแทง
+จำนง
+จำนน
+จำนรรจ์
+จำนรรจา
+จำนวน
+จำนอง
+จำนับ
+จำนัล
+จำนำ
+จำเนียน
+จำเนียม
+จำเนียร
+จำแนก
+จำโนทย์
+จำบ่ม
+จ้ำบ๊ะ
+จำบัง
+จำบับ
+จำเบศ
+จ้ำเบ้า
+จำแบ
+จำปา
+จำปาดะ
+จำปี
+จำปูน
+จำพวก
+จำเพาะ
+จำแพรก
+จ้ำม่ำ
+จำรด
+จำรัส
+จำราญ
+จำราย
+จำรูญ
+จำเริญ
+จำเรียง
+จำลอง
+จำลาย
+จำเลาะ
+จำเลาะตา
+จำแลง
+จำแล่น
+จำหนับ
+จ๋ำหนับ
+จำหน่าย
+จำหระ
+จำหล่อ
+จำหลอก
+จำหลัก
+จำหัน
+จำหาย
+จำหุด
+จำเหียง
+จำอวด
+จำอื่น
+จิ
+จิก
+จิ๊กโก๋
+จิ่ง
+จิ้งจก
+จิงจ้อ
+จิ้งจอก
+จิงจัง
+จิ้งจัง
+จิงโจ้
+จิ้งหรีด
+จิ้งหรีดผี
+จิงหัน
+จิงหุน
+จิ้งเหลน
+จิต
+จิตกาธาน
+จิตกึ่งสำนึก
+จิตใจ
+จิตต์
+จิตตานุปัสสนา
+จิตนาถ
+จิตนิยม
+จิตบำบัด
+จิตแพทย์
+จิตภาพ
+จิตภู
+จิตร
+จิตรจุล
+จิตรลดา
+จิตรา
+จิตรารจิส
+จิตไร้สำนึก
+จิตวิทยา
+จิตวิสัย
+จิตเวชศาสตร์
+จิตศาสตร์
+จิตสำนึก
+จินเจา
+จินดา
+จินดาส่าหรี
+จินดาหนา
+จินดาหรา
+จินดาอรสา
+จินต์
+จิบ
+จิ๊บจ๊อย
+จิปาถะ
+จิ่ม
+จิ้ม
+จิ๋ม
+จิ้มก้อง
+จิ้มลิ้ม
+จิรันดร
+จิรายุส
+จิ๊ว
+จิ๋ว
+จี
+จี่
+จี้
+จี๋
+จี๋จ้อ
+จีจู้
+จี๊จู้
+จีแจ๊บ
+จี๊ด
+จีน
+จีนแส
+จีบ
+จีโบ
+จีพร
+จีม
+จีวร
+จึง
+จึ่ง
+จึ้ง
+จืด
+จื้นเจือก
+จุ
+จุก
+จุ๊กกรู๊
+จุกจิก
+จุกชี
+จุกผาม
+จุกพราหมณ์
+จุกโรหินี
+จุ่ง
+จุ้งจัง
+จุ๋งจิ๋ง
+จุ๋จี๋
+จุฑา
+จุณ
+จุณณียบท
+จุด
+จุติ
+จุตูปปาตญาณ
+จุทส
+จุน
+จุ่น
+จุ้น
+จุ้นจ้าน
+จุนจู๋
+จุ้นจู๊
+จุนทการ
+จุนสี
+จุบ
+จุ๊บ
+จุบจิบ
+จุ๊บแจง
+จุ่ม
+จุ้ม
+จุ๋มจิ๋ม
+จุมพฏ
+จุมพรวด
+จุมพล
+จุมพิต
+จุมโพล่
+จุ่ย
+จุ้ย
+จุรณ
+จุรี
+จุไร
+จุลจอมเกล้า
+จุลวงศ์
+จุฬา
+จุฬาราชมนตรี
+จู
+จู่
+จู้
+จู๋
+จูง
+จู้จี้
+จู๊ด
+จูบ
+จูรณ
+เจ
+เจ๊
+เจ๊ก
+เจ่ง
+เจ๊ง
+เจ็ด
+เจ็ดตะคลี
+เจดีย์
+เจต
+เจตนา
+เจตพังคี
+เจตมูลเพลิง
+เจตสิก
+เจติย
+เจโตปริยญาณ
+เจโตวิมุติ
+เจน
+เจ็บ
+เจรจา
+เจริญ
+เจริด
+เจรียง
+เจลียง
+เจว็ด
+เจษฎา
+เจ๊สัว
+เจอ
+เจ่อ
+เจ๋อ
+เจ๋อเจ๊อะ
+เจอร์เมเนียม
+เจอะ
+เจา
+เจ่า
+เจ้า
+เจ๊า
+เจ้าพระยา
+เจ้าฟ้าหญิงสิรินธร
+เจาะ
+เจิ่ง
+เจิด
+เจิ่น
+เจิม
+เจี๊ยก
+เจียง
+เจียด
+เจียน
+เจี๋ยน
+เจี๊ยบ
+เจียม
+เจี๋ยมเจี้ยม
+เจียร
+เจียระไน
+เจียระบาด
+เจียว
+เจี๊ยวจ๊าว
+เจือ
+เจื่อน
+เจื้อย
+เจือสม
+แจ
+แจ้
+แจ๋
+แจก
+แจง
+แจ้ง
+แจงลอน
+แจ๊ด
+แจดแจ้
+แจ๊ดแจ๋
+แจตร
+แจ้น
+แจบ
+แจ่ม
+แจ่มจันทร์
+แจร
+แจรก
+แจรง
+แจว
+แจ้ว
+แจ๋ว
+แจ้วๆ
+แจะ
+โจก
+โจ๊ก
+โจง
+โจงกระเบนตีเหล็ก
+โจ่งครึ่ม
+โจ๋งครึ่ม
+โจ่งครุ่ม
+โจงโคร่ง
+โจ๋งเจ๋ง
+โจ่งแจ้ง
+โจท
+โจทก์
+โจทนา
+โจทย์
+โจน
+โจม
+โจร
+โจรกรรม
+โจล
+โจษ
+โจษจัน
+ใจ
+ไจ
+ไจ้
+ไจ้ๆ
+ไจร
+ฉ
+ฉก
+ฉกมาวจร
+ฉกรรจ์
+ฉกาจ
+ฉกาจฉกรรจ์
+ฉกามาพจร
+ฉงน
+ฉงาย
+ฉณะ
+ฉทวาร
+ฉทะ
+ฉทานศาลา
+ฉทึง
+ฉนวน
+ฉนัง
+ฉนาก
+ฉนำ
+ฉบบ
+ฉบัง
+ฉบัด
+ฉบับ
+ฉบำ
+ฉม
+ฉมบ
+ฉมวก
+ฉมวย
+ฉม่อง
+ฉมัง
+ฉมัน
+ฉมา
+ฉมำ
+ฉล
+ฉลวย
+ฉลอง
+ฉลอม
+ฉลัก
+ฉลับ
+ฉลาก
+ฉลากบาง
+ฉลาง
+ฉลาด
+ฉลาม
+ฉลาย
+ฉลิว
+ฉลีก
+ฉลุ
+ฉลุกฉลวย
+ฉลู
+ฉวย
+ฉวะ
+ฉวัดเฉวียน
+ฉวาง
+ฉวี
+ฉสก
+ฉฬภิญโญ
+ฉ้อ
+ฉอก
+ฉอกษัตริย์
+ฉ่อง
+ฉอดๆ
+ฉะ
+ฉะกะ
+ฉะฉาด
+ฉะฉาน
+ฉะฉ่ำ
+ฉะฉี่
+ฉะเฉื่อย
+ฉะต้า
+ฉะนั้น
+ฉะนี้
+ฉะอ้อน
+ฉักกะ
+ฉัฐ
+ฉัฐมะ
+ฉัด
+ฉัตร
+ฉัททันต์
+ฉัน
+ฉันท์
+ฉันทะ
+ฉันทิต
+ฉันวุฒิ
+ฉับ
+ฉับๆ
+ฉัพพรรณรังสี
+ฉัยยา
+ฉาก
+ฉาง
+ฉ่าง
+ฉ่าฉาว
+ฉาด
+ฉาดฉาน
+ฉาตกภัย
+ฉาทนะ
+ฉาน
+ฉาบ
+ฉาบฉวย
+ฉาป
+ฉาย
+ฉายา
+ฉาริกา
+ฉาว
+ฉ่ำ
+ฉำฉา
+ฉำเฉง
+ฉำแฉะ
+ฉิ่ง
+ฉิน
+ฉินท์
+ฉิบ
+ฉิมพลี
+ฉิว
+ฉี่
+ฉีก
+ฉีด
+ฉุ
+ฉุก
+ฉุด
+ฉุน
+ฉุป
+ฉุย
+ฉุยฉาย
+ฉุริกา
+ฉู่
+ฉู่ฉี่
+ฉูด
+ฉูดฉาด
+เฉ
+เฉก
+เฉโก
+เฉ่ง
+เฉด
+เฉท
+เฉนียน
+เฉพาะ
+เฉย
+เฉลย
+เฉลว
+เฉลา
+เฉลิม
+เฉลี่ย
+เฉลียง
+เฉลี่ยง
+เฉลียบ
+เฉลียว
+เฉวียง
+เฉวียน
+เฉอะ
+เฉา
+เฉาก๊วย
+เฉาโฉด
+เฉาฮื้อ
+เฉาะ
+เฉิด
+เฉิบ
+เฉิบๆ
+เฉียง
+เฉียงพร้าดำ
+เฉียงพร้านางแอ
+เฉียงพร้ามอญ
+เฉียด
+เฉียบ
+เฉี่ยว
+เฉือน
+เฉื่อย
+แฉ
+แฉ่
+แฉก
+แฉกๆ
+แฉง
+แฉ่ง
+แฉลบ
+แฉล้ม
+แฉล้มแช่มช้อย
+แฉละ
+แฉว
+แฉะ
+โฉ
+โฉ่
+โฉเก
+โฉ่งฉ่าง
+โฉงเฉง
+โฉด
+โฉนด
+โฉบ
+โฉเบ๊
+โฉม
+โฉมงาม
+โฉลก
+ไฉน
+ไฉไล
+ช
+ชก
+ชกา
+ชคร
+ชคัต
+ชคัท
+ชคัน
+ชง
+ชงคา
+ชงโค
+ชงฆ์
+ชงฆา
+ชฎา
+ชฎิล
+ชด
+ชทึง
+ชน
+ชนก
+ชนกกรรม
+ชนนี
+ชนบท
+ชนม์
+ชนวน
+ชนะ
+ชนัก
+ชนา
+ชนาง
+ชนิ
+ชนิก
+ชนิกา
+ชนิด
+ชนิดา
+ชนิศ
+ชเนตตี
+ชบา
+ชปน
+ชปโยค
+ชม
+ชมชวน
+ชมดชม้อย
+ชมนาด
+ชมบ
+ชมพู
+ชมพู่
+ชมพูพาดบ่า
+ชมรม
+ชมเลาะ
+ชมสวนสวรรค์
+ชม้อย
+ชมัน
+ชมา
+ชม้าย
+ชไม
+ชย
+ชยัมบดี
+ชยา
+ชยุติ
+ชโย
+ชร
+ชรตา
+ชรทึง
+ชรโมล
+ชรไม
+ชรราง
+ชรริน
+ชรแรง
+ชรแร่ง
+ชรเลือด
+ชรโลง
+ชรอกชรัง
+ชรออบ
+ชรอัด
+ชรอ่ำ
+ชรอื้อ
+ชรอุ่ม
+ชระ
+ชระงม
+ชระง่อน
+ชระงำ
+ชระดัด
+ชระดื่น
+ชระเดียด
+ชระบอบ
+ชระบาบ
+ชระมด
+ชระมัว
+ชระมื่น
+ชระมุกชระมอม
+ชระมุ่น
+ชระเมียง
+ชระเมียน
+ชระลอ
+ชระลอง
+ชระล่อง
+ชระลั่ง
+ชระลัด
+ชระล้ำ
+ชระลุ
+ชระแลง
+ชระอับ
+ชระอาบ
+ชระเอม
+ชรัด
+ชรัว
+ชรา
+ชรากากี
+ชราบ
+ชราบชรับ
+ชรายุ
+ชริน
+ชรุก
+ชรูบ
+ชล
+ชลี
+ชลูกา
+ชเล
+ชโลง
+ชโลม
+ช่วง
+ช่วงทรัพย์
+ช่วงสิทธิ์
+ชวด
+ชวน
+ชวย
+ช่วย
+ชวร
+ชวลิต
+ชวัก
+ชวา
+ชวาล
+ชวาลา
+ชแวง
+ช่อ
+ชอก
+ช็อก
+ช็อกการี
+ช็อกโกเลต
+ช็อกโกแลต
+ชอง
+ช่อง
+ช้อง
+ช้องนาง
+ช้องนางคลี่
+ช้องแมว
+ชอน
+ช่อน
+ช้อน
+ช้อนนาง
+ชอบ
+ชอม
+ช่อย
+ช้อย
+ช้อยช่างรำ
+ช้อยนางรำ
+ชอล์ก
+ชอ่ำ
+ชอื้อ
+ชอุ่ม
+ชะ
+ชะคราม
+ชะงอก
+ชะง่อน
+ชะงัก
+ชะงัด
+ชะงาบ
+ชะง้ำ
+ชะงุ้ม
+ชะเง้อ
+ชะเงื้อม
+ชะแง้
+ชะโงก
+ชะฉ่า
+ชะช่อง
+ชะช้า
+ชะชิด
+ชะดีชะร้าย
+ชะโด
+ชะตา
+ชะต้า
+ชะนี
+ชะนุง
+ชะเนาะ
+ชะพลู
+ชะเพลิง
+ชะมด
+ชะมดต้น
+ชะมบ
+ชะมวง
+ชะมัง
+ชะมัด
+ชะแม่
+ชะรอย
+ชะลอ
+ชะลอม
+ชะละกา
+ชะล่า
+ชะลิน
+ชะลูด
+ชะเลง
+ชะเลย
+ชะแล็ก
+ชะแลง
+ชะวัง
+ชะวาก
+ชะวาด
+ชะวุ้ง
+ชะเวิกชะวาก
+ชะแวง
+ชะอม
+ชะอ้อน
+ชะเอม
+ชะโอน
+ชัก
+ชักคราม
+ชักช้า
+ชักหน้า
+ชัง
+ชั่ง
+ชังคา
+ชังเฆยยกะ
+ชัชวาล
+ชัฏ
+ชัด
+ชัดช้า
+ชัน
+ชั้น
+ชันกาด
+ชันชี
+ชันตาฆร
+ชันตุ
+ชันนะตุ
+ชันนุ
+ชันนุกะ
+ชันโรง
+ชันษา
+ชันสูตร
+ชัปน
+ชัพ
+ชัมพูนท
+ชัย
+ชัยกระสพ
+ชัยบาน
+ชัยพฤกษ์
+ชัยภูมิ
+ชัยเภรี
+ชัยมงคล
+ชัยมงคลคาถา
+ชัลลุกา
+ชั่ว
+ชั้ว
+ชัวชม
+ชั่วแต่ว่า
+ชา
+ช้า
+ชาคร
+ชาคริต
+ชาคริยานุโยค
+ช่าง
+ช้าง
+ช้างกระ
+ช่างกระไร
+ช้างดำ
+ช้างแดง
+ช่างทอง
+ช่างน้าว
+ช้างเผือก
+ช่างเหล็ก
+ช้าช่อน
+ชาญ
+ชาด
+ชาดก
+ชาตบุษย์
+ชาตรี
+ชาตะ
+ชาตา
+ชาติ
+ชาติธรรม
+ชาติพันธุ์
+ชาติพันธุ์วรรณนา
+ชาติพันธุ์วิทยา
+ชาติภูมิ
+ชาติมาลา
+ชาติรส
+ชาติสัมบันน์
+ชาน
+ชานวาทิก
+ชานุ
+ชานุกะ
+ช้าปี่
+ช้าปี่ไหน
+ช้าแป้น
+ช้าพลู
+ชาม
+ชามพูนท
+ชามาดร
+ชามาดา
+ชามาตุ
+ชาย
+ชายธง
+ชายผ้าสีดา
+ชายา
+ชาร
+ชารี
+ชาล
+ชาลา
+ชาลินี
+ช้าเลือด
+ชาว
+ชาวี
+ชาห์
+ช้าหมอง
+ชาหรันนาวี
+ชำ
+ช่ำ
+ช้ำ
+ชำงัด
+ชำงาย
+ชำงือ
+ช่ำชอง
+ช่ำช่า
+ชำนน
+ชำนรร
+ชำนะ
+ชำนัญ
+ชำนัน
+ชำนาญ
+ชำนิ
+ชำเนียน
+ชำเนียร
+ชำมะนาด
+ชำมะเลียง
+ชำร่วย
+ชำระ
+ช้ำรั่ว
+ชำรุด
+ชำเรา
+ชำเราะ
+ชำลา
+ชำเลือง
+ชำแหละ
+ชิ
+ชิง
+ชิ่ง
+ชิงชัง
+ชิงชัน
+ชิงช้า
+ชิงช้าชาลี
+ชิงชี่
+ชิงพลบ
+ชิงฮื้อ
+ชิชะ
+ชิชิ
+ชิณณะ
+ชิด
+ชิเดนทรีย์
+ชิต
+ชิน
+ชิ่น
+ชิ้น
+ชินโต
+ชินบุตร
+ชินสาสน์
+ชิม
+ชิมแปนซี
+ชิยา
+ชิรณะ
+ชิระ
+ชิวหา
+ชิสา
+ชี
+ชี่
+ชี้
+ชีพ
+ชีฟอง
+ชีรณ
+ชีระ
+ชีวะ
+ชีอะห์
+ชืด
+ชื่น
+ชื้น
+ชื่อ
+ชื้อ
+ชุ
+ชุก
+ชุกชี
+ชุ่ง
+ชุ้ง
+ชุด
+ชุติ
+ชุน
+ชุบ
+ชุบชู
+ชุม
+ชุ่ม
+ชุมนุม
+ชุมพร
+ชุมพา
+ชุมเพ็ด
+ชุมแพรก
+ชุมรุม
+ชุมสาย
+ชุมแสง
+ชุมเห็ด
+ชุ่ย
+ชุ่ยๆ
+ชุลมุน
+ชุลี
+ชุษณะ
+ชู
+ชู้
+เช็ค
+เช้ง
+เชงเลง
+เช้งวับ
+เช็ด
+เช็ดหน้า
+เชน
+เช่น
+เชย
+เชรา
+เชราะ
+เชริด
+เชลง
+เชลย
+เชลแล็ก
+เชลียง
+เชวง
+เชษฐา
+เชอ
+เช่า
+เช้า
+เชาว์
+เชาวน์
+เชิง
+เชิงกล
+เชิงซ้อน
+เชิงเดียว
+เชิงเดี่ยว
+เชิงมุม
+เชิงเวียน
+เชิงอรรถ
+เชิญ
+เชิด
+เชิ้ต
+เชีย
+เชี้ย
+เชียง
+เชี่ยน
+เชี่ยนหมาก
+เชียบ
+เชี่ยม
+เชียร
+เชียร์
+เชียรณ์
+เชียว
+เชี่ยว
+เชื่อ
+เชื้อ
+เชือก
+เชื่อง
+เชื่องช้า
+เชือด
+เชือน
+เชื่อม
+เชื่อวัน
+แช
+แช่
+แช่ง
+แชงมา
+แชบ๊วย
+แช่ม
+แชมเปญ
+แชมภู
+แชร์
+แชรง
+แชล่ม
+แชะ
+โชก
+โชกๆ
+โชกุน
+โชค
+โชงโลง
+โชดก
+โชดึก
+โชต
+โชตก
+โชติ
+โชน
+โชมโรม
+โชย
+โชยงการ
+โชยชาย
+โชยติส
+โชรม
+โชว์
+ใช่
+ใช้
+ไช
+ไชนะ
+ไชย
+ไชโย
+ซ
+ซก
+ซ่ก
+ซงดำ
+ซ่งฮื้อ
+ซง้า
+ซด
+ซน
+ซ่น
+ซ้น
+ซบ
+ซม
+ซรอกซรัง
+ซวด
+ซวดเซ
+ซวดทรง
+ซวน
+ซวย
+ซอ
+ซอก
+ซอง
+ซ่อง
+ซ้อง
+ซองพลู
+ซองแมว
+ซ้องแมว
+ซอแซ
+ซ้อแซ้
+ซอน
+ซ่อน
+ซ้อน
+ซ่อนกลิ่น
+ซ่อนทราย
+ซอม
+ซ่อม
+ซ้อม
+ซอมซ่อ
+ซอย
+ซอส
+ซะซร้าว
+ซะซ่อง
+ซะซอเซีย
+ซะซิกซะแซ
+ซะซิบ
+ซะเซาะ
+ซะเซียบ
+ซัก
+ซักส้าว
+ซัง
+ซั้ง
+ซังกะตาย
+ซังแซว
+ซังตาย
+ซัด
+ซั้น
+ซันตาคลอส
+ซับ
+ซับซี่
+ซัม
+ซัลฟา
+ซัลโว
+ซั้ว
+ซัวปา
+ซา
+ซ่า
+ซาก
+ซากุระ
+ซาไก
+ซาง
+ซ่าง
+ซาด
+ซาน
+ซ่าน
+ซาบซ่าน
+ซาบซึ้ง
+ซ่าโบะ
+ซาปั๊ว
+ซาแมเรียม
+ซ้าย
+ซาโยนาระ
+ซาร์
+ซารินา
+ซาลาเปา
+ซาว
+ซ่าหริ่ม
+ซ้ำ
+ซิ
+ซิก
+ซิกซี้
+ซิกแซ็ก
+ซิการ์
+ซิงโคนา
+ซิ่น
+ซินตึ๊ง
+ซินนามิก
+ซินแส
+ซิบ
+ซิบๆ
+ซิป
+ซิฟิลิส
+ซิ้ม
+ซิลิคอน
+ซิว
+ซี
+ซี่
+ซีก
+ซี้ซอน
+ซี้ซั้ว
+ซีเซ็กไฉ่
+ซีเซียม
+ซีด
+ซีนอน
+ซีป่าย
+ซีเมนต์
+ซีเรียม
+ซีลีเนียม
+ซีอิ้ว
+ซึก
+ซึ่ง
+ซึ้ง
+ซึม
+ซื่อ
+ซื้อ
+ซื่อๆ
+ซื้อหน้า
+ซุก
+ซุกซน
+ซุง
+ซุน
+ซุบ
+ซุบซิบ
+ซุบซู่
+ซุป
+ซุ่ม
+ซุ้ม
+ซุ้มกระต่าย
+ซุ่มซ่าม
+ซุมแซว
+ซุ่มเสียง
+ซุย
+ซู่
+ซู่กั้นรั้วไซมาน
+ซูโครส
+ซูด
+ซู้ด
+ซูดซาด
+ซูบ
+เซ
+เซ็ก
+เซแคนต์
+เซ็ง
+เซ่ง
+เซ้ง
+เซ็งแซ่
+เซต
+เซน
+เซ็น
+เซ่น
+เซนติกรัม
+เซนติเมตร
+เซนติลิตร
+เซ่นเหล้า
+เซปักตะกร้อ
+เซฟ
+เซรา
+เซราะ
+เซรุ่ม
+เซลเซียส
+เซลล์
+เซลลูลอยด์
+เซลลูโลส
+เซลส์แมน
+เซ่อ
+เซอร์
+เซอร์โคเนียม
+เซอะ
+เซา
+เซ้าซี้
+เซาะ
+เซิง
+เซิ้ง
+เซียน
+เซียบ
+เซียมซี
+เซียว
+เซี่ยว
+เซี้ยว
+เซี่ยวกาง
+เซื่อง
+แซ
+แซ่
+แซ็กคาริน
+แซกุย
+แซง
+แซงแซว
+แซด
+แซดๆ
+แซนด์วิช
+แซบ
+แซม
+แซยิด
+แซ่ว
+แซะ
+โซ
+โซ่
+โซก
+โซ่ง
+โซงโขดง
+โซเซ
+โซดา
+โซดาแผดเผา
+โซดาไฟ
+โซเดียม
+โซม
+โซรม
+โซลา
+ไซ
+ไซ้
+ไซเกิล
+ไซโคลน
+ไซน์
+ไซยาไนด์
+ไซร้
+ไซเรน
+ไซโล
+ไซ่หู้
+ฌ
+ฌลา
+ฌลิ
+ฌษ
+ฌัลล์
+ฌัลลกัณฐ์
+ฌาน
+ฌานลาภี
+ฌานาทิสังกิเลสาทิฌาน
+ฌูก
+เฌอ
+โฌฑ
+ญ
+ญญ่าย
+ญวน
+ญัตติ
+ญาณี
+ญาดา
+ญาตปริญญา
+ญาตัตถจริยา
+ญาติ
+ญาน
+ญาปก
+ญายปฏิบัติ
+ญายปฏิปันโน
+ญิน
+ญิบ
+ญี่
+ญี่ปุ่น
+เญยธรรม
+ไญยธรรม
+ฎ
+ฎคระ
+ฎีกา
+ฏ
+ฏังกบดี
+ฏังกศาลา
+ฏังกะ
+ฏังการ
+ฏังคะ
+ฏังคา
+ฏัฏฏนี
+ฏางกร
+ฏาร
+ฏุณฐุก
+ฐ
+ฐกัด
+ฐากูร
+ฐาน
+ฐานะ
+ฐานียะ
+ฐาปนา
+ฐายี
+ฐิต
+ฐิติ
+ฑ
+ฑาหก
+ฑาหะ
+ฑิมภ์
+ฒ
+เฒ่า
+ณ
+ณรงค์
+ณัฐ
+เณร
+ด
+ดก
+ดง
+ด้ง
+ดงวาย
+ด้น
+ดนโด่
+ดนตรี
+ดนย
+ดนยา
+ดนัย
+ดนุ
+ดนู
+ดบัน
+ดบัสวิน
+ดบัสวินี
+ดบัสวี
+ดม
+ดมไร
+ดร
+ดรงค์
+ดรณิ
+ดรณี
+ดรธาน
+ดรรชนี
+ดรลา
+ดราฟต์
+ดริ
+ดรี
+ดรุ
+ดรุณ
+ดรุณี
+ดฤถี
+ดล
+ดลภาค
+ดวง
+ด้วง
+ดวจ
+ดวด
+ด่วน
+ด้วน
+ด้วมเดี้ยม
+ด้วย
+ดวล
+ดอก
+ดอกกะทือ
+ดอกทอง
+ดอกฟ้อน
+ดอกไม้ทะเล
+ดอกสร้อย
+ดอกอาว
+ดอง
+ด้อง
+ด่องๆ
+ด้องๆ
+ดองฉาย
+ดองดึง
+ดองหาย
+ดอด
+ดอน
+ด่อน
+ดอม
+ด้อม
+ดอย
+ด้อย
+ดอลลาร์
+ดะ
+ดะโต๊ะยุติธรรม
+ดะหมัง
+ดัก
+ดักดน
+ดักดาน
+ดักเดี้ย
+ดักแด้
+ดักษก
+ดักษณ
+ดักษณี
+ดักษัน
+ดัง
+ดั่ง
+ดั้ง
+ดั้งเดิม
+ดัชนี
+ดัด
+ดัดปลัก
+ดัตช์
+ดัน
+ดั้น
+ดันเหิม
+ดับ
+ดัมพ์
+ดั้วเดี้ย
+ดัสกร
+ดัสกรี
+ดา
+ด่า
+ดาก
+ด่าง
+ด้าง
+ดาด
+ดาดตะกั่ว
+ดาน
+ด่าน
+ด้าน
+ดาบ
+ดาบส
+ดาม
+ด้าม
+ด้ามจิ้ว
+ดามพ์
+ดามร
+ดาย
+ด้าย
+ดาร
+ดารก
+ดารณี
+ดารดาษ
+ดารา
+ดาล
+ดาลัด
+ดาลุ
+ดาลุช
+ดาไลลามะ
+ดาว
+ด่าว
+ด้าว
+ดาวกระจาย
+ดาวดึงส์
+ดาวบส
+ดาวเรือง
+ดาษ
+ดาหงัน
+ดาหลัง
+ดาฬ
+ดำ
+ด่ำ
+ด้ำ
+ดำๆแดงๆ
+ดำกล
+ดำเกิง
+ดำแคง
+ดำดง
+ดำนาณ
+ดำนาน
+ดำนู
+ดำเนิน
+ดำเนียน
+ดำเนียร
+ดำบล
+ดำพอง
+ดำรัส
+ดำริ
+ดำรี
+ดำรู
+ดำไร
+ดำฤษณา
+ดำเลิง
+ดำแลง
+ดำหนัก
+ดำหนิ
+ดำอวด
+ดิก
+ดิกๆ
+ดิง
+ดิ่ง
+ดิฉัน
+ดิฐ
+ดิตถ์
+ดิถี
+ดิน
+ดิ้น
+ดิบ
+ดิบดี
+ดิรัจฉาน
+ดิเรก
+ดิลก
+ดิ่ว
+ดิ้ว
+ดิ้วเดี้ยว
+ดิษฐ์
+ดิสโพรเซียม
+ดี
+ดีกรี
+ดีฉัน
+ดีเซล
+ดีด
+ดีดีที
+ดีนาคราช
+ดีบุก
+ดีปลี
+ดีเปรสชัน
+ดีผา
+ดีพร
+ดียา
+ดีหมี
+ดีหลี
+ดึก
+ดึง
+ดึ่ง
+ดึงสะ
+ดึ่ม
+ดื่น
+ดื่ม
+ดือ
+ดื้อ
+ดุ
+ดุก
+ดุกดิก
+ดุกทะเล
+ดุ้ง
+ดุ้งดิ้ง
+ดุจ
+ดุจดัง
+ดุจหนึ่ง
+ดุด
+ดุน
+ดุ้น
+ดุบๆ
+ดุม
+ดุ่ม
+ดุ่มๆ
+ดุ่ย
+ดุรค
+ดุรงค์
+ดุรงคี
+ดุริยะ
+ดุริยางค์
+ดุล
+ดุษฎี
+ดุษณี
+ดุษณีภาพ
+ดุษิต
+ดุสิต
+ดุเหว่า
+ดู
+ดูกไก่ดำ
+ดูกค่าง
+ดูกช้าง
+ดูกร
+ดูด
+เด
+เด่
+เดก
+เด็ก
+เดกซ์โทรส
+เดคากรัม
+เดคาเมตร
+เดคาลิตร
+เด้ง
+เด็จ
+เดช
+เดชน์
+เดชนะ
+เดชะ
+เดโช
+เดซิกรัม
+เดซิเมตร
+เดซิลิตร
+เด็ด
+เดน
+เด่น
+เดนมาร์ก
+เดรัจฉาน
+เด๋อ
+เด๋อด๋า
+เดา
+เด่า
+เด้า
+เด่าๆ
+เด้าดิน
+เด้าลม
+เดาะ
+เดิน
+เดิ่น
+เดิม
+เดี้ย
+เดียง
+เดียด
+เดียร
+เดียรดาษ
+เดียรถ์
+เดียรถีย์
+เดียรัจฉาน
+เดียว
+เดี่ยว
+เดี๋ยว
+เดียะ
+เดื่อ
+เดือก
+เดื่อง
+เดือด
+เดือน
+เดือย
+แด
+แด่
+แดก
+แด็กๆ
+แดกงา
+แดกแด้
+แด็กแด้
+แดง
+แดงน้ำ
+แดด
+แดน
+แด่น
+แด่วๆ
+แดะ
+โด
+โด่
+โดกเดก
+โด่ง
+โดด
+โดน
+โดนัต
+โด๊ปยา
+โดม
+โดมร
+โดย
+โดร
+โดรณ
+ใด
+ได
+ได้
+ไดแซ็กคาไรค์
+ไดนาไมต์
+ไดโนเสาร์
+ไดเรกตริกซ์
+ไดอารี
+ต
+ตก
+ต๊กโต
+ตง
+ต๋ง
+ตงฉิน
+ตงิด
+ตงุ่น
+ตด
+ตถาคต
+ตทังควิมุตติ
+ตน
+ต้น
+ตนัย
+ตนุ
+ตบ
+ตบยุง
+ตบะ
+ตปะนียะ
+ตม
+ต้ม
+ตมูก
+ตโมโชติปรายโน
+ตโมตมปรายโน
+ตโมนุท
+ตโมไพรี
+ตโมหร
+ตยาค
+ตยาคี
+ตยุติ
+ตรง
+ตรงๆ
+ตรณี
+ตรม
+ตรมวล
+ตรรกะ
+ตรลบ
+ตรลอด
+ตรละ
+ตรลา
+ตรลาด
+ตรเลิด
+ตรวจ
+ตรวด
+ตรวน
+ตรวย
+ตรอก
+ตรอง
+ตรอมใจ
+ตรอมตรม
+ตระ
+ตระกล
+ตระกวน
+ตระกอง
+ตระกัด
+ตระการ
+ตระกูล
+ตระคัร
+ตระง่อง
+ตระจัก
+ตระชัก
+ตระดก
+ตระดาษ
+ตระเตรียม
+ตระแต้น
+ตระทรวง
+ตระนาว
+ตระไน
+ตระบก
+ตระบอก
+ตระบอง
+ตระบัด
+ตระบัน
+ตระเบ็ง
+ตระแบ่
+ตระแบก
+ตระแบง
+ตระแบน
+ตระแบ่น
+ตระโบม
+ตระพอง
+ตระพัง
+ตระมื่น
+ตระโมจ
+ตระลาการ
+ตระวัน
+ตระเว็ด
+ตระเวน
+ตระเวนไพร
+ตระเวนวัน
+ตระสัก
+ตระหง่อง
+ตระหง่าน
+ตระหนก
+ตระหนัก
+ตระหน่ำ
+ตระหนี่
+ตระอร
+ตระอาล
+ตระโอม
+ตรัง
+ตรังค์
+ตรับ
+ตรับฟัง
+ตรัย
+ตรัยตรึงศ์
+ตรัส
+ตรัสสา
+ตรา
+ตรากตรำ
+ตราชู
+ตราบ
+ตราสัง
+ตรำ
+ตร่ำ
+ตริ
+ตริว
+ตรี
+ตรีประดับ
+ตรีปวาย
+ตรีพิธพรรณ
+ตรีเพชรทัณฑี
+ตรีเพชรพวง
+ตรียมก
+ตรียัมปวาย
+ตรึก
+ตรึง
+ตรุ
+ตรุณ
+ตรุย
+ตรุษ
+ตรุษจีน
+ตรู
+ตรู่
+ตฤณ
+ตฤตียะ
+ตฤท
+ตฤป
+ตฤษณา
+ตฤๅ
+ตล
+ตลก
+ตลกบาตร
+ตลบ
+ตลอด
+ตละ
+ตลับ
+ตลับนาก
+ตลาด
+ตลิ่ง
+ตลึง
+ตวง
+ต่วน
+ต้วมเตี้ยม
+ตวัก
+ตวัด
+ตวาด
+ตอ
+ต่อ
+ต้อ
+ตอก
+ต๊อก
+ต๊อกต๋อย
+ตอง
+ต้อง
+ตองกราย
+ต้องการ
+ตองตอย
+ตองตึง
+ต้องเต
+ตองแตก
+ต่องแต่ง
+ตองเปรียง
+ต้องสู้
+ตองเหลือง
+ตอด
+ตอดต่อ
+ตอน
+ต้อน
+ตอบ
+ตอเบา
+ตอม
+ต่อม
+ต๋อม
+ต่อมน้ำ
+ต่อย
+ต้อย
+ต้อยตริ่ง
+ต้อยติ่ง
+ต้อยตีวิด
+ตอแย
+ตอร์ปิโด
+ต่อไส้
+ตอแหล
+ตะ
+ตะกรน
+ตะกรม
+ตะกรวย
+ตะกร้อ
+ตะกร่อม
+ตะกรัน
+ตะกรับ
+ตะกร้า
+ตะกราม
+ตะกรุด
+ตะกรุม
+ตะกรุมตะกราม
+ตะกละ
+ตะกลาม
+ตะกวด
+ตะกอ
+ตะกอน
+ตะกัง
+ตะกั่ว
+ตะกาง
+ตะกาด
+ตะกาย
+ตะกาว
+ตะกี้
+ตะกุกตะกัก
+ตะกุย
+ตะกู
+ตะกูด
+ตะเกียกตะกาย
+ตะเกียง
+ตะเกียบ
+ตะแก
+ตะแก่
+ตะแกรง
+ตะโก
+ตะโก้
+ตะโกก
+ตะโกน
+ตะโกรง
+ตะโกรม
+ตะไกร
+ตะขบ
+ตะขอ
+ตะขาบ
+ตะขิดตะขวง
+ตะเข้
+ตะเข็บ
+ตะเขิง
+ตะโขง
+ตะคร้อ
+ตะครอง
+ตะครั่นตะครอ
+ตะคร้ำ
+ตะคริว
+ตะครุบ
+ตะคลับตะคล้าย
+ตะคอก
+ตะคัน
+ตะค้า
+ตะคาก
+ตะคาง
+ตะค้าน
+ตะคิว
+ตะคุ่ม
+ตะเครียว
+ตะเคียน
+ตะเคียนทอง
+ตะเคียว
+ตะแคง
+ตะไคร่
+ตะไคร้
+ตะเฆ่
+ตะแง้
+ตะติน
+ตะแตร้น
+ตะนอย
+ตะนาว
+ตะบม
+ตะบอง
+ตะบองกัน
+ตะบองเพชร
+ตะบอย
+ตะบัน
+ตะบิ้ง
+ตะบิด
+ตะบิดตะบอย
+ตะบี้ตะบัน
+ตะบึง
+ตะบุ้ย
+ตะบุ้ยๆ
+ตะบูน
+ตะเบ็ง
+ตะเบ็งมาน
+ตะแบก
+ตะแบง
+ตะโบม
+ตะไบ
+ตะปบ
+ตะปลิง
+ตะปัดตะป่อง
+ตะปิ้ง
+ตะปุ่มตะป่ำ
+ตะปู
+ตะพง
+ตะพด
+ตะพอง
+ตะพัก
+ตะพัง
+ตะพัด
+ตะพั้น
+ตะพาก
+ตะพาน
+ตะพาบ
+ตะพาบน้ำ
+ตะพาย
+ตะพึด
+ตะพุ่น
+ตะเพรา
+ตะเพิง
+ตะเพิด
+ตะเพิ่น
+ตะเพียน
+ตะโพก
+ตะโพง
+ตะโพน
+ตะเภา
+ตะใภ้
+ตะม่อ
+ตะมอย
+ตะมอยสะลา
+ตะรัง
+ตะรังกะนู
+ตะรังตัง
+ตะราง
+ตะลอง
+ตะลอน
+ตะล่อม
+ตะล่อมป้อม
+ตะละ
+ตะลาน
+ตะลิงปลิง
+ตะลิบ
+ตะลีตะลาน
+ตะลึง
+ตะลุง
+ตะลุ่ม
+ตะลุมบอน
+ตะลุ่มโปง
+ตะลุมพอ
+ตะลุมพุก
+ตะลุ่มอิด
+ตะลุย
+ตะเลง
+ตะแลงแกง
+ตะไล
+ตะวัน
+ตะวาง
+ตะเวน
+ตะหนึ่งรัด
+ตะหลิว
+ตะหลุก
+ตะหลุง
+ตะเหลนแป๋น
+ตะเหลาะเปาะ
+ตะแหง่ว
+ตะแหมะแขะ
+ตะแหลนแป๋น
+ตะโหงก
+ตั๊ก
+ตักกะ
+ตักเตือน
+ตั๊กแตน
+ตักร
+ตักษก
+ตักษณ
+ตักษณี
+ตักษัย
+ตัง
+ตั่ง
+ตั้ง
+ตังเก
+ตังฉ่าย
+ตังติด
+ตังเม
+ตังวาย
+ตังโอ๋
+ตัจฉก
+ตัจฉนี
+ตัณฑุล
+ตัณหักษัย
+ตัณหา
+ตัด
+ตัถย์
+ตัน
+ตันตระ
+ตันติ
+ตันหก
+ตันหยง
+ตันเหิม
+ตับ
+ตับเต่า
+ตับปิ้ง
+ตับเป็ด
+ตัว
+ตั๋ว
+ตัวตืด
+ตั้วโผ
+ตั้วสิว
+ตั้วเหี่ย
+ตา
+ตาก
+ตาง
+ต่าง
+ตาด
+ตาน
+ต่าน
+ต้าน
+ตานนกกด
+ตานเสี้ยน
+ตานหก
+ตานหม่อน
+ตานเหลือง
+ตานี
+ตาบ
+ตาฝั่ง
+ตาม
+ตามพะ
+ตามะแน
+ตามิน
+ตาย
+ต้าย
+ต๊ายตาย
+ตาราไต
+ตาเรือชัย
+ตาล
+ตาลาน
+ตาลุ
+ตาลุช
+ตาว
+ตาเสือ
+ตาหลิ่ง
+ตาฬ
+ตำ
+ต่ำ
+ตำนาน
+ตำเนิน
+ตำเนียน
+ตำบล
+ตำแบ
+ต้ำปุก
+ต้ำผาง
+ต้ำพรวด
+ตำมะหงง
+ตำแย
+ตำรวจ
+ตำรับ
+ตำรา
+ตำรุ
+ตำลึง
+ตำเสา
+ตำหนัก
+ตำหนิ
+ตำหระ
+ตำแหน่ง
+ติ
+ติกขญาณ
+ติกะ
+ติกาหลัง
+ติง
+ติ่ง
+ติ๋ง
+ติ๋งๆ
+ติ่งตั่ง
+ติงสติ
+ติ่งหาย
+ติณ
+ติณวัตถารกวินัย
+ติด
+ติดๆ
+ติตติก
+ติตติร
+ติตถ
+ติถี
+ติปา
+ติปาถะ
+ติมิ
+ติมิงคละ
+ติร
+ติรัจฉาน
+ติล
+ติลก
+ติ้ว
+ติสรณคมนูปสัมปทา
+ตี
+ตี่
+ตี๋
+ตีทอง
+ตีน
+ตีนจ้ำ
+ตีนเทียน
+ตีนแรด
+ตีบ
+ตีรถะ
+ตีระ
+ตีหมา
+ตึ
+ตึๆ
+ตึก
+ตึกๆ
+ตึ้กๆ
+ตึ้กตั้ก
+ตึง
+ตึดตื๋อ
+ตึ๊ดตื๋อ
+ตืด
+ตื่น
+ตื้น
+ตื้อ
+ตื๊อ
+ตื๋อ
+ตือฮวน
+ตุ
+ตุ๊
+ตุๆ
+ตุ๊กแก
+ตุ๊กตา
+ตุ๊กต่ำ
+ตุ๊กต่ำน้ำทอง
+ตุกติก
+ตุ๊กติ๊ก
+ตุ๊กตุ่น
+ตุ๊กตุ๋ย
+ตุง
+ตุ้งก่า
+ตุ้งติ้ง
+ตุ๊ดตู่
+ตุน
+ตุ่น
+ตุ๋น
+ตุ้นแซะ
+ตุ่นต่าน
+ตุนาหงัน
+ตุบๆ
+ตุ้บๆ
+ตุ๊บป่อง
+ตุปัดตุป่อง
+ตุปัดตุเป๋
+ตุ่ม
+ตุ้ม
+ตุ๋ม
+ตุ๊มๆ
+ตุ๊มๆต้อมๆ
+ตุ้มกว้าว
+ตุมกา
+ตุ้มแซะ
+ตุมตัง
+ตุ้มเต๋น
+ตุ้มปี่
+ตุมพ
+ตุ่ย
+ตุ้ย
+ตุ๊ย
+ตุ่ยๆ
+ตุ้ยๆ
+ตุ๋ยตุ่ย
+ตุรค
+ตุรงค์
+ตุริยางค์
+ตุลสิ
+ตุลา
+ตุหรัดตุเหร่
+ตู
+ตู่
+ตู้
+ตูก
+ตูด
+ตูดงอน
+ตูบ
+ตูม
+ตูลิ่นฮื้อ
+ตูหนา
+เต
+เตก
+เต็ก
+เต็ง
+เต่ง
+เตช
+เตโช
+เต้น
+เต็นท์
+เต็ม
+เตย
+เต้ย
+เต๊ย
+เตร่
+เตร็ด
+เตร็ดเตร่
+เตร็ดเตรน
+เตรน
+เตริง
+เตรียด
+เตรียบ
+เตรียม
+เตรียมตรม
+เตละ
+เตลิด
+เตว็ด
+เต่อ
+เตอะ
+เตะ
+เต๊ะ
+เต๊ะจุ๊ย
+เต๊ะท่า
+เตา
+เต่า
+เต้า
+เต๋า
+เต่ากระสุน
+เต่ากินผักบุ้ง
+เต่าเกียด
+เต้าเจี้ยว
+เต่าทอง
+เต่าทอเสื่อ
+เต้าทึง
+เต่าบ้า
+เต่ารั้ง
+เต่าร้าง
+เต่าเลือน
+เต้าส่วน
+เต้าเสียบ
+เต่าหับ
+เต้าหู้
+เต้าฮวย
+เต๊าะ
+เตาะแตะ
+เติ่ง
+เตินเต่อ
+เติบ
+เติม
+เตี่ย
+เตี้ย
+เตียง
+เตียน
+เตียบ
+เตี๊ยม
+เตี๋ยม
+เตียรถ์
+เตียว
+เตี่ยว
+เตื้อ
+เตือน
+แต่
+แต้
+แต่ๆ
+แตก
+แต่ก่อนแต่กี้
+แต่กี้แต่ก่อน
+แตง
+แต่ง
+แตงเม
+แต้จิ๋ว
+แตด
+แต๊ดแต๋
+แตน
+แต้ม
+แตร
+แตระ
+แต้วแร้ว
+แตะ
+โต
+โต้
+โตก
+โต้ง
+โต้งๆ
+โตงๆเตงๆ
+โตงเตง
+โตฎก
+โต๊ด
+โต๋เต๋
+โตน
+โตนด
+โต้โผ
+โตมร
+โตมรธร
+โตย
+โตรก
+โตรกไตร
+โตรด
+โต้หลง
+โต๊ะ
+ใต้
+ไต
+ไต่
+ไต้
+ไต๋
+ไต้ก๋ง
+ไต้ฝุ่น
+ไต่ไม้
+ไตร
+ไตรกิศยา
+ไตรดายุค
+ไตร่ตรอง
+ไตรย
+ไต้หวัน
+ไต้อ๋อง
+ถ
+ถก
+ถกล
+ถงัน
+ถงาด
+ถด
+ถน
+ถนน
+ถนป
+ถนอม
+ถนัด
+ถนัน
+ถนำ
+ถนิม
+ถนิมสร้อย
+ถบ
+ถบดี
+ถม
+ถ่ม
+ถมอ
+ถมึงทึง
+ถล
+ถลก
+ถลกบาตร
+ถลน
+ถลม
+ถล่ม
+ถลอก
+ถลัก
+ถลัน
+ถลา
+ถลาก
+ถลาย
+ถลำ
+ถลีถลำ
+ถลึงตา
+ถลุง
+ถลุน
+ถ่วง
+ถ้วน
+ถ้วย
+ถ้วยโถง
+ถวัด
+ถวัล
+ถวัลย์
+ถวาย
+ถวิน
+ถวิล
+ถ่อ
+ถ้อ
+ถอก
+ถอง
+ถ่อง
+ถ้อง
+ถอด
+ถอน
+ถอบ
+ถอบแถบ
+ถ่อม
+ถอย
+ถ่อย
+ถ้อย
+ถะ
+ถะกัด
+ถะเกิน
+ถะโกน
+ถะถั่น
+ถะถับ
+ถะถุนถะถัน
+ถะมัดถะแมง
+ถัก
+ถัง
+ถั่ง
+ถัณฑิล
+ถัด
+ถัทธ
+ถัน
+ถั่น
+ถั่นๆ
+ถับ
+ถับๆ
+ถัมภ์
+ถัว
+ถั่ว
+ถั่วขาว
+ถา
+ถ้า
+ถาก
+ถาง
+ถ่าง
+ถาด
+ถาน
+ถ่าน
+ถาบ
+ถาม
+ถามะ
+ถ่าย
+ถ่ายเดียว
+ถ่าว
+ถาวร
+ถาวรธิรา
+ถาวรวัตถุ
+ถ้ำ
+ถิ่น
+ถี
+ถี่
+ถี่ๆ
+ถีบ
+ถีบฉัด
+ถึก
+ถึง
+ถือ
+ถุง
+ถุน
+ถุย
+ถุล
+ถุลละ
+ถู
+ถูก
+เถกิง
+เถน
+เถมิน
+เถร
+เถระ
+เถลไถล
+เถลิก
+เถลิง
+เถลือกถลน
+เถ่อ
+เถอะ
+เถา
+เถ้า
+เถาคัน
+เถาคันเหล็ก
+เถาเงาะ
+เถามวก
+เถาวัลย์เขียว
+เถาวัลย์ปูน
+เถาวัลย์เปรียง
+เถาวัลย์ยอดด้วน
+เถาวัลย์เหล็ก
+เถาสิงโต
+เถาหัวด้วน
+เถาะ
+เถิก
+เถิง
+เถิด
+เถิดเทิง
+เถิน
+เถียง
+เถียร
+เถือ
+เถือก
+เถื่อน
+แถ
+แถก
+แถง
+แถน
+แถบ
+แถม
+แถลง
+แถลบ
+แถว
+โถ
+โถง
+โถงเถง
+โถบ
+โถม
+โถมนาการ
+ไถ
+ไถ่
+ไถ้
+ไถง
+ไถล
+ท
+ทก
+ทกล้า
+ทแกล้ว
+ท่ง
+ทงัน
+ทชี
+ทด
+ทดโทร่ห
+ทท
+ทธิ
+ทน
+ท้น
+ทนดี
+ทนต์
+ทนโท่
+ทนม
+ทนสมุทร
+ทนาย
+ทบ
+ทบวง
+ทม
+ทมก
+ทมน
+ทมบ
+ทมอ
+ทมิฬ
+ทเมิน
+ทโมน
+ทยอย
+ทยา
+ทแยง
+ทร
+ทรง
+ทรงกระเทียม
+ทรงบาดาล
+ทรทึง
+ทรพี
+ทรมาทรกรรม
+ทรมาน
+ทรมุก
+ทรรทึง
+ทรรป
+ทรรปณ์
+ทรรปณะ
+ทรรศนะ
+ทรรศนีย์
+ทรเล่ห์
+ทรวง
+ทรวด
+ทรวดทรง
+ทรวาร
+ทรสองทรสุม
+ทรสาย
+ทรสุม
+ทรหด
+ทรหน
+ทรหวล
+ทรหึง
+ทรหึงทรหวล
+ทรหู
+ทรเหล
+ทรอ
+ทรอมโบน
+ทรอึง
+ทรอุ้ม
+ทระนง
+ทระนาว
+ทรัพย์
+ทรัมเป็ต
+ทรัสต์
+ทรานซิสเตอร์
+ทราบ
+ทราม
+ทราย
+ทรายขาว
+ทริทร
+ทรุด
+ทรุม
+ทรุมขัณฑ์
+ทรุมมัย
+ทรุมวาสี
+ทรุมเศรษฐ์
+ทรุมาริ
+ทรุมาลัย
+ทรู่
+ทฤษฎี
+ทล
+ทลบม
+ทลอึง
+ทลาย
+ทลิท
+ทลิททก
+ทวง
+ท้วง
+ท่วงท่า
+ท่วงทำนอง
+ท่วงที
+ทวด
+ทวดึงส์
+ทวน
+ท้วน
+ท่วม
+ท้วม
+ท้วมๆ
+ทวย
+ท่วย
+ท้วย
+ทวยะ
+ทวอย
+ทวัตดึงส์
+ทวัย
+ทวา
+ทว่า
+ทวาบรยุค
+ทวาย
+ทวาร
+ทวาราวดี
+ทวิ
+ทวิช
+ทวิตีย
+ทวิตียา
+ทวิร
+ทวี
+ทวีป
+ทวีปี
+ทศ
+ทศา
+ทศางค์
+ทสมี
+ทสา
+ทหระ
+ทหาร
+ทอ
+ท่อ
+ท้อ
+ทอก
+ทอง
+ท่อง
+ท้อง
+ทองกวาว
+ทองเครือ
+ทองธรรมชาติ
+ทองเผือก
+ทองพระขุน
+ทองพลุ
+ท้องพลุ
+ทองพันช่าง
+ทองพันดุล
+ทองภู
+ทองม้วน
+ทองย้อย
+ทองลิน
+ทองหลาง
+ทองโหลง
+ทองอุไร
+ทอด
+ทอน
+ท่อน
+ทอนซิล
+ทอฟฟี่
+ทอม
+ท่อมๆ
+ทอย
+ทอร์นาโด
+ทอเรียม
+ทะ
+ทะงัน
+ทะท่าว
+ทะเทียด
+ทะนง
+ทะนน
+ทะนะ
+ทะนา
+ทะนาน
+ทะนุ
+ทะบู
+ทะเบียน
+ทะมัดทะแมง
+ทะมึน
+ทะมื่น
+ทะแม่ง
+ทะยาทะแยแส
+ทะยาน
+ทะเยอทะยาน
+ทะแย
+ทะร่อทะแร่
+ทะลวง
+ทะลอก
+ทะล่อทะล่า
+ทะลัก
+ทะลักทะแลง
+ทะลาย
+ทะลิ่น
+ทะลึ่ง
+ทะลุ
+ทะลุทะลาด
+ทะเล
+ทะเล้น
+ทะเลาะ
+ทะวาย
+ทะเวน
+ทัก
+ทักข์
+ทักขิญ
+ทักขิณ
+ทักขิณา
+ทักขิณาบถ
+ทักขิณาวัฏ
+ทักขิโณทก
+ทักขิไณยบุคคล
+ทักทอ
+ทักทิน
+ทักษะ
+ทักษา
+ทักษิณ
+ทักษิณา
+ทัคธ์
+ทัง
+ทั่ง
+ทั้ง
+ทังวล
+ทังวี้ทังวล
+ทังสเตน
+ทัณฑกรรม
+ทัณฑฆาต
+ทัณฑธร
+ทัณฑนายก
+ทัณฑนิคม
+ทัณฑนีติ
+ทัณฑ์บน
+ทัณฑปาศก
+ทัณฑภัย
+ทัณฑมุข
+ทัณฑยาตรา
+ทัณฑวิทยา
+ทัณฑสถาน
+ทัณฑสยาม
+ทัณฑะ
+ทัณฑิกา
+ทัณฑิมา
+ทัณฑี
+ทัณฑีบท
+ทัด
+ทัดทา
+ทัต
+ทัน
+ทันต์
+ทันติน
+ทันตี
+ทันธ์
+ทับ
+ทับเกษตร
+ทับทิม
+ทับเล็ก
+ทับสมิงคลา
+ทัป
+ทัปน
+ทัพ
+ทัพพะ
+ทัพพี
+ทัมมะ
+ทั่ว
+ทัศ
+ทัศน์
+ทัศนะ
+ทัศนา
+ทัศนีย์
+ทัศไนย
+ทัสนานุตริยะ
+ทัฬห
+ทัฬหิกรณ์
+ทัฬหีกรรม
+ทา
+ท่า
+ท้า
+ทาก
+ทาง
+ท้าง
+ทาฐะ
+ทาฐิกะ
+ทาฒะ
+ทาฒิกะ
+ทาน
+ท่าน
+ทานกัณฑ์
+ทานกาม
+ทานต์
+ทานตะวัน
+ทานธรรม
+ทานบดี
+ทานบารมี
+ทานพ
+ทานศีล
+ทานสมาบัติ
+ทานาธิบดี
+ทาบ
+ทาม
+ท่ามกลาง
+ทามริก
+ทาย
+ท้าย
+ทายก
+ทายัช
+ทายา
+ทายาด
+ทายาท
+ทารก
+ทาร์ซาน
+ทารพี
+ทาริกา
+ทารุ
+ทารุณ
+ทารุณกรรม
+ทาว
+ท่าว
+ท้าว
+ทาษ
+ทาส
+ทาสี
+ทำ
+ทำงน
+ทำนบ
+ทำนวย
+ทำนอง
+ทำนาย
+ทำนุ
+ทำนูล
+ทำเนา
+ทำเนียบ
+ทำเนียม
+ทำมัง
+ทำไม
+ทำลาย
+ทำเล
+ทำวน
+ทิคัมพร
+ทิฆัมพร
+ทิ้ง
+ทิงเจอร์
+ทิ้งถ่อน
+ทิ้งทูด
+ทิช
+ทิฏฐชุกรรม
+ทิฏฐะ
+ทิฏฐานุคติ
+ทิฐิ
+ทิด
+ทิต
+ทิน
+ทินาท
+ทิพ
+ทิพย์
+ทิพา
+ทิม
+ทิ่ม
+ทิมทอง
+ทิว
+ทิวงคต
+ทิวทัศน์
+ทิวสะ
+ทิวา
+ทิศ
+ทิศา
+ที
+ที่
+ทีป
+ทีม
+ทีวี
+ทีเอนที
+ทึก
+ทึ่ง
+ทึ้ง
+ทึดทือ
+ทึนทึก
+ทึบ
+ทึม
+ทึ่ม
+ทื่อ
+ทุ
+ทุก
+ทุกข
+ทุกข์
+ทุกขักษัย
+ทุกฏ
+ทุกษดร
+ทุกะ
+ทุกัง
+ทุกูล
+ทุคตะ
+ทุคติ
+ทุ่ง
+ทุ้ง
+ทุงงะ
+ทุงเทง
+ทุจจิณณะ
+ทุจริต
+ทุฏฐะ
+ทุฏฐุลละ
+ทุด
+ทุตวิลัมพิตมาลา
+ทุติยาสาฬห
+ทุทรรศนนิยม
+ทุน
+ทุ่น
+ทุนนิมิต
+ทุนิยม
+ทุบ
+ทุบทู
+ทุปปัญญา
+ทุพพรรณ
+ทุพพล
+ทุพพลภาพ
+ทุพภิกขภัย
+ทุพภิกขันดรกัป
+ทุม
+ทุ่ม
+ทุ้ม
+ทุมโน
+ทุย
+ทุ้ย
+ทุรน
+ทุรัถยา
+ทุรัศ
+ทุราคม
+ทุราจาร
+ทุราธวา
+ทุเรศ
+ทุเรียน
+ทุเรียนแขก
+ทุลักทุเล
+ทุเลา
+ทุวิชาน
+ทุวิธ
+ทุศีล
+ทุสสะ
+ทุสสีล
+ทู
+ทู่
+ทู้
+ทู่ซี้
+ทูต
+ทูตานุทูต
+ทูน
+ทูบ
+ทูม
+ทูเรนิทาน
+ทูล
+ทูเลียม
+ทูษก
+เท
+เท่
+เทคนิค
+เทคนีเซียม
+เทคโนโลยี
+เทง
+เท้ง
+เท้งเต้ง
+เท้งทูด
+เท็จ
+เทนนิส
+เทเบิลเทนนิส
+เทป
+เทพ
+เทพทารู
+เทพทาโร
+เทพา
+เทพิน
+เทพี
+เทพีปักษี
+เทโพ
+เทมปุระ
+เทริด
+เทลลูเรียม
+เทวดา
+เทวนะ
+เทวภาวะ
+เทวระ
+เทววาจิกะ
+เทววาจิสรณคมน์
+เทวศ
+เทวษ
+เทวสุคนธ์
+เทวอ
+เทวัญ
+เทวัน
+เทวี
+เทศ
+เทศก
+เทศน์
+เทศนา
+เทศะ
+เทห์
+เท่ห์
+เท่อ
+เท้อ
+เทอญ
+เทอม
+เทอร์เบียม
+เทอร์โมมิเตอร์
+เทอะทะ
+เทา
+เท่า
+เท้า
+เท้าช้าง
+เท่ามัก
+เท้ายายม่อม
+เท่ารึง
+เท้าสาน
+เทาะห์
+เทิก
+เทิ่ง
+เทิงบอง
+เทิด
+เทิน
+เทิบ
+เทิบๆ
+เทิ้ม
+เทียง
+เทียน
+เที้ยน
+เทียบ
+เทียร
+เที้ยร
+เทียว
+เที่ยว
+เทือ
+เทื่อ
+เทื้อ
+เทือก
+เทือกเขา
+เทือกเถาเหล่ากอ
+เทือน
+แท่
+แท้
+แท็กซี่
+แทง
+แท่ง
+แท้ง
+แท็งก์น้ำ
+แทงทวย
+แทงวิสัย
+แทตย์
+แทน
+แท่น
+แทนเจนต์
+แทนทาลัม
+แทบ
+แทรก
+แทรกเตอร์
+แทลเลียม
+แทะ
+โท
+โท่
+โทกเทก
+โทงๆ
+โทงเทง
+โทณะ
+โทธก
+โทน
+โทนโท่
+โทมนัส
+โทรณ
+โทรม
+โทราวิก
+โทลา
+โทษ
+โทษกรณ์
+โทษคุณ
+โทษตรัย
+โทษทัณฑ์
+โทษโพย
+โทษมหันต์
+โทษา
+โทสะ
+โทโส
+โทหฬะ
+โทหฬินี
+ไท
+ไท้
+ไทกอ
+ไทเทเนียม
+ไทฟอยด์
+ไทย
+ไทยธรรม
+ไทร
+ไทรอยด์
+ไทวะ
+ธ
+ธง
+ธงก์
+ธช
+ธชี
+ธตรฐ
+ธน
+ธนัง
+ธนาคาร
+ธนาณัติ
+ธนาตม
+ธนาธาร
+ธนาธิบดี
+ธนาธิป
+ธนาธิปัตย์
+ธนานุเคราะห์
+ธนารักษ์
+ธนิต
+ธนิษฐา
+ธนุ
+ธนู
+ธเนศ
+ธเนศวร
+ธโนปจัย
+ธไนศวรรย์
+ธม
+ธมกรก
+ธร
+ธรง
+ธรณ
+ธรณิน
+ธรณินทร์
+ธรณิศ
+ธรณิศร
+ธรณิศวร์
+ธรณี
+ธรมาน
+ธรรม
+ธรรมะ
+ธรา
+ธริษตรี
+ธเรศ
+ธเรษตรี
+ธวัช
+ธังก
+ธัช
+ธัญ
+ธันยา
+ธันยาวาท
+ธันวาคม
+ธัมมะ
+ธาดา
+ธาตรี
+ธาตวากร
+ธาตุ
+ธาตุมมิสสา
+ธานิน
+ธานินทร์
+ธานี
+ธาร
+ธารกำนัล
+ธารคำนัล
+ธารณ
+ธารณะ
+ธารณา
+ธารา
+ธาษตรี
+ธำมรงค์
+ธำรง
+ธิดา
+ธิติ
+ธีระ
+ธุช
+ธุดงค์
+ธุต
+ธุตตะ
+ธุม
+ธุมะ
+ธุระ
+ธุรำ
+ธุลี
+ธุหร่ำ
+ธูป
+เธนุ
+เธอ
+เธียร
+โธ่
+โธวน
+น
+นก
+นกกระทุง
+นกุล
+นข
+นค
+นคร
+นครกัณฑ์
+นครบาล
+นครมัณฑนา
+นครรัฐ
+นครวาสี
+นครโสภิณี
+นครโสเภณี
+นครหลวง
+นคราทร
+นครินทร์
+นคเรศ
+นง
+นงคุฐ
+นท
+นที
+นนตรา
+นนท์
+นนทก
+นนทรี
+นนทลี
+นนทิ
+นบ
+นปุงสกลิงค์
+นปุงสกลึงค์
+นพเกตน์
+นพเก้า
+นพคุณ
+นพเคราะห์
+นพนิต
+นพปฎล
+นพพล
+นพพวง
+นพพัน
+นพรัตน์
+นพศก
+นพศูล
+นภกานต์
+นภคช
+นภคติ
+นภจร
+นภจักษุ
+นภดล
+นภทวีป
+นภปราณ
+นภมณฑล
+นภมณี
+นภมัย
+นภรูป
+นภเรณู
+นภวิถี
+นภศูล
+นภสินธุ์
+นภา
+นภากาศ
+นภาลัย
+นม
+นมนาน
+นมะ
+นมักการ
+นมัสการ
+นมาซ
+นยนะ
+นยนา
+นยะ
+นยักษ์
+นรก
+นรการ
+นราธิป
+นรินทร์
+นริศ
+นริศวร
+นรี
+นเรนทรสูร
+นเรศ
+นเรศวร
+นเรศวร์ชนช้าง
+นเรศูร
+นฤโฆษ
+นฤตย์
+นฤนาท
+นฤพาน
+นฤมล
+นฤมาณ
+นฤมิต
+นลาฏ
+นลิน
+นวกะ
+นวด
+นวนิยาย
+นวม
+น่วม
+นวย
+นวล
+นวอรหาทิคุณ
+นวังคสัตถุศาสน์
+นวาระ
+นวาอรหาธิคุณ
+นหาดก
+นหาน
+นหารุ
+นหุต
+นฬ
+นฬป
+นอ
+นอก
+นอง
+น่อง
+น้อง
+น่องแน่ง
+นอต
+นอน
+นอบ
+น้อม
+น้อย
+น้อยหน่า
+น้อยโหน่ง
+นะ
+นะแน่ง
+นัก
+นักกะ
+นักขัต
+นักงาน
+นักตะ
+นักร
+นักษัตร
+นักสราช
+นัข
+นัค
+นัคคะ
+นัง
+นั่ง
+นังคัล
+นัจ
+นัฏ
+นัฏก
+นัฑ
+นัด
+นัดดา
+นัตถุ์
+นั่น
+นั้น
+นันททายี
+นันทน์
+นันทนาการ
+นันทิ
+นับ
+นับประสา
+นับประสาอะไร
+นัย
+นัยน์
+นัยนา
+นัว
+นา
+น่า
+น้า
+นาก
+นากบุด
+นากาสาหรี
+นาค
+นาคร
+นาคา
+นาคาวโลก
+นาคาสน์
+นาคินทร์
+นาคี
+นาเคนทร์
+นาเคศ
+นาเคศวร
+นาโครคินทร
+นาง
+นางนวล
+นางนูน
+นางแย้ม
+นางรม
+นางเล็ด
+นางเลิ้ง
+นางหงส์
+นางอาย
+นางแอ่น
+นาซา
+นาซี
+นาฏ
+นาฏก
+นาฏกรรม
+นาฏดนตรี
+นาฏศิลป์
+นาด
+นาถ
+นาท
+นาที
+นาน
+น่าน
+นานัครส
+นานัตว
+นานัปการ
+นานา
+นาเนก
+นาบ
+นาภิ
+นาภี
+นาม
+นามบัตร
+นามปากกา
+นามแฝง
+นามสกุล
+นาย
+น่าย
+นายก
+นายิกา
+นารท
+นารา
+นารายณ์
+นารี
+นาเรศ
+นาลิวัน
+นาลี
+นาว
+น้าว
+นาวา
+นาวิก
+นาวิน
+นาวี
+นาเวศ
+นาศ
+นาสนะ
+นาสา
+นาสิก
+นาฬิกา
+นาฬิเก
+นาฬี
+นำ
+น้ำ
+น้ำตะกู
+น้ำตะโก
+นิ
+นิกขะ
+นิกขันต์
+นิกเขป
+นิกร
+นิกรอยด์
+นิกาย
+นิเกิล
+นิคม
+นิครนถ์
+นิคหะ
+นิคหิต
+นิคาลัย
+นิเคราะห์
+นิโคติน
+นิโครธ
+นิโครม
+นิง
+นิ่ง
+นิจ
+นิด
+นิตย์
+นิติ
+นิทร
+นิทรรศการ
+นิทรา
+นิทัศน์
+นิทาฆ
+นิทาน
+นิเทศ
+นิเทศก์
+นิธาน
+นิธิ
+นินทา
+นินนะ
+นินนาท
+นินหุต
+นินาท
+นิบาต
+นิปริยาย
+นิปัจการ
+นิพจน์
+นิพนธ์
+นิพพาน
+นิพพิทา
+นิพัทธ์
+นิพันธ์
+นิพิท
+นิเพท
+นิภา
+นิ่ม
+นิ้ม
+นิมนต์
+นิมมาน
+นิมมานรดี
+นิมิต
+นิยต
+นิยม
+นิยยาน
+นิยยานิก
+นิยัตินิยม
+นิยาม
+นิยาย
+นิยุต
+นิรพัตร
+นิรมาณ
+นิรมิต
+นิรัพพุท
+นิราศ
+นิรุกติ
+นิรุตติ
+นิรุทธ์
+นิโรธ
+นิล
+นิ่ว
+นิ้ว
+นิวคลีอิก
+นิวเคลียร์
+นิวเคลียส
+นิวตรอน
+นิวรณ์
+นิวัตน์
+นิวัติ
+นิวาต
+นิวาส
+นิวาสน์
+นิเวศ
+นิเวศน์
+นิศา
+นิษกรม
+นิษาท
+นิสสัคคิยวัตถุ
+นิสสัคคีย์
+นิสัช
+นิสัย
+นิสาท
+นิสิต
+นิสีทนะ
+นิเสธ
+นิหีนะ
+นี่
+นี้
+นีติ
+นี่นัน
+นีรนาท
+นีออน
+นีโอดีเมียม
+นึก
+นึง
+นึ่ง
+นุ
+นุง
+นุ่ง
+นุช
+นุด
+นุต
+นุ่น
+นุ้ย
+นูน
+นู่น
+นู้น
+เนกขะ
+เนกขัม
+เนคไท
+เนต
+เนตบอล
+เนตร
+เนติ
+เน้น
+เนบิวลา
+เนปจูน
+เนปทูเนียม
+เนมิ
+เนมิตกะ
+เนมินธร
+เนย
+เนยยะ
+เนรกัณฐี
+เนรคุณ
+เนรเทศ
+เนรนาถ
+เนรมิต
+เนระพูสี
+เนษาท
+เนอ
+เน้อ
+เนา
+เน่า
+เนาวนิต
+เนิน
+เนิ่น
+เนิบ
+เนียง
+เนียน
+เนียม
+เนียร
+เนียรทุกข์
+เนียรเทศ
+เนียรนาท
+เนื้อ
+เนือง
+เนื่อง
+เนือย
+เนื้อเยื้อ
+แน่
+แน่ง
+แน่น
+แนบ
+แนม
+แนว
+แน่ว
+แนะ
+แนะแหน
+โน
+โน้ต
+โนน
+โน่น
+โน้น
+โนเน
+โนเบเลียม
+โน้ม
+โนมพรรณ
+โนรา
+โนรี
+ใน
+ไน
+ไนต์คลับ
+ไนโตรเจน
+ไนท์คลับ
+ไนลอน
+ไนอาซีน
+ไนโอเบียม
+บ
+บ่
+บก
+บง
+บ่ง
+บงก์
+บ๊งเบ๊ง
+บงสุ์
+บงอับบงรา
+บ่งอับบ่งรา
+บฏ
+บด
+บดินทร์
+บดี
+บถ
+บท
+บทนี
+บทบงกช
+บทบงสุ์
+บทบูรณ์
+บทพันธ์
+บทภาชน์
+บทภาชนีย์
+บทมาลย์
+บทรัช
+บทวเรศ
+บทวลัญช์
+บทวาร
+บทศรี
+บทศัพท์
+บทสถาน
+บทามพุช
+บโทน
+บน
+บ่น
+บพิตร
+บพิธ
+บ่ม
+บรม
+บรมัตถ์
+บรรกวด
+บรรจง
+บรรจถรณ์
+บรรจบ
+บรรจวบ
+บรรจุ
+บรรเจิด
+บรรณ
+บรรณาการ
+บรรณาคม
+บรรณาธิการ
+บรรณานุกรม
+บรรณารักษ์
+บรรณารักษศาสตร์
+บรรดา
+บรรดาก
+บรรดาศักดิ์
+บรรตานึก
+บรรถร
+บรรทม
+บรรทัด
+บรรทับ
+บรรทาน
+บรรทุก
+บรรเทา
+บรรเทือง
+บรรพ
+บรรพ์
+บรรพชา
+บรรพชิต
+บรรพต
+บรรยง
+บรรยงค์
+บรรยเวกษก์
+บรรยากาศ
+บรรยาย
+บรรลัย
+บรรลาย
+บรรลุ
+บรรเลง
+บรรโลม
+บรรษัท
+บรรสบ
+บรรสพ
+บรรสม
+บรรสาน
+บรรสาร
+บรรหาน
+บรรหาร
+บรัด
+บรั่นดี
+บรัศว์
+บรากรม
+บราทุกรา
+บราลี
+บริกรม
+บริกรรม
+บริกัป
+บริการ
+บริขา
+บริขาร
+บริคณห์
+บริจาค
+บริจารก
+บริจาริกา
+บริเฉท
+บริชน
+บริณายก
+บริดจ์
+บริบท
+บริบวรณ์
+บริบาล
+บริบูรณ์
+บริพนธ์
+บริพัตร
+บริพันธ์
+บริพาชก
+บริพาชิกา
+บริพาชี
+บริพาร
+บริภัณฑ์
+บริภาษ
+บริโภค
+บริมาส
+บริยาย
+บริรม
+บริรักษ์
+บริราช
+บริวรรต
+บริวาร
+บริวาส
+บริเวณ
+บริษการ
+บริษัท
+บริสชน
+บริสุทธิ์
+บริหาร
+บริหาส
+บรื๋อ
+บฤงคพ
+บล็อก
+บวก
+บวง
+บ่วง
+บวช
+บวน
+บ้วน
+บวบ
+บวม
+บ๊วย
+บวร
+บวรโตฎก
+บหลิ่ม
+บอ
+บ่อ
+บ้อ
+บอก
+บอง
+บ่อง
+บ้อง
+บ๊อง
+บ๊องๆ
+บ้องตะลา
+บ้องแบ๊ว
+บองหลา
+บอด
+บอน
+บ่อน
+บอนลายกระหนก
+บอบ
+บ้อม
+บ๋อม
+บอมบ์
+บ่อย
+บ๋อย
+บ่อยๆ
+บอระเพ็ด
+บอระมาน
+บอล
+บอลลูน
+บ้อหุ้น
+บ๊ะ
+บะฉ่อ
+บะหมี่
+บัก
+บัคเตรี
+บัง
+บั้ง
+บังกะโล
+บังกัด
+บังเกิด
+บังโกรยตัวผู้
+บังโกรยตัวเมีย
+บังโกลน
+บังคน
+บังคม
+บังคล
+บังควร
+บังคับ
+บังคัล
+บังโคลน
+บังแทรก
+บังวาย
+บังเวียน
+บังสุกุล
+บังสุกูลิก
+บังสูรย์
+บังหวน
+บังหวนควัน
+บังเหตุ
+บังเหิน
+บังเหียน
+บังอร
+บังอวจ
+บังอาจ
+บังอิง
+บังอูร
+บังเอิญ
+บัญจก
+บัญจรงค์
+บัญชร
+บัญชา
+บัญชี
+บัญญัติ
+บัญหา
+บัฏ
+บัฐยาพฤต
+บัณฑร
+บัณฑิต
+บัณฑิตย์
+บัณฑุ
+บัณฑูร
+บัณเฑาะก์
+บัณณาส
+บัณรส
+บัณรสี
+บัด
+บัดกรี
+บัดซบ
+บัดบง
+บัดสี
+บัตร
+บัทม์
+บัน
+บั่น
+บั้น
+บันกวด
+บันจวบ
+บันจอย
+บันดล
+บันดาล
+บันเดิน
+บันโดย
+บันได
+บันทาย
+บันทึก
+บันทึง
+บันเทิง
+บันยะบันยัง
+บันลือ
+บันเหิน
+บัปผาสะ
+บัพ
+บัพชา
+บัพชิต
+บัพพาช
+บัพพาชน์
+บัพพาชนียกรรม
+บัล
+บัลลพ
+บัลลังก์
+บัลลูน
+บัลเล่ต์
+บัลวะ
+บัว
+บัวเดื่อ
+บัวตูม
+บัวบก
+บัวสวรรค์
+บา
+บ่า
+บ้า
+บ้าๆ
+บาก
+บาง
+บ่าง
+บ้าง
+บางกอก
+บางสุ
+บาจก
+บาจรีย์
+บาจิกา
+บาซาร์
+บาซิลลัส
+บาด
+บาดทะจิต
+บาดทะพิษ
+บาดทะยัก
+บาดหมาย
+บาดไหม
+บาดาล
+บาแดง
+บาต
+บาตร
+บาท
+บาทบ
+บาทบงกช
+บาทบริจาริกา
+บาทวิถี
+บาทสกุณี
+บาทหลวง
+บาทาธึก
+บาทุกา
+บาน
+บ้าน
+บานมงคล
+บานียะ
+บ้าบ่น
+บ้าบ๋า
+บาบี
+บาบู
+บาบูน
+บาป
+บาปเคราะห์
+บาปทฤษฎี
+บาปมิตร
+บาปวาท
+บาพก
+บ่าพก
+บาย
+บ่าย
+บ้าย
+บายสุหรี
+บาเยีย
+บาโย
+บาร์
+บารนี
+บาร์บิคิว
+บาร์เบล
+บารมี
+บาร์เรล
+บาร์เลย์
+บารอมิเตอร์
+บ้าระบุ่น
+บ้าร่าท่า
+บาเรียน
+บาเรียม
+บาล
+บาลี
+บ่าว
+บ่าวขุน
+บาศ
+บาศก์
+บาสเกตบอล
+บ้าหมู
+บาหลี
+บ้าหว่า
+บ่าอ้าย
+บ๋ำ
+บำเทิง
+บำนาญ
+บำบวง
+บำบัด
+บำโบ
+บำโบย
+บำโบล
+บำเพ็ญ
+บำราบ
+บำราศ
+บำรุง
+บำรู
+บำเรอ
+บำหยัด
+บำเหน็จ
+บิ
+บิกู
+บิฐ
+บิด
+บิดร
+บิดหล่า
+บิดา
+บิตุ
+บิตุจฉา
+บิตุรงค์
+บิตุเรศ
+บิตุล
+บิตุลา
+บิตุลานี
+บิน
+บิ่น
+บินยา
+บิลเลียด
+บิวเรตต์
+บิศาจ
+บิสมัท
+บี้
+บีกู
+บีฑา
+บีตา
+บีบ
+บีเยศ
+บึก
+บึกบึน
+บึง
+บึ่ง
+บึ้ง
+บุ
+บุก
+บุคคล
+บุคลากร
+บุคลาธิษฐาน
+บุคลิก
+บุง
+บุ่ง
+บุ้ง
+บุญ
+บุญเขต
+บุญญานุภาพ
+บุญญาภินิหาร
+บุญญาภิสังขาร
+บุญนิธิ
+บุญราศี
+บุญฤทธิ์
+บุณฑริก
+บุณมี
+บุณย์
+บุตร
+บุตรธรรม
+บุตรา
+บุตรี
+บุตรีตระสุม
+บุถุชน
+บุทคล
+บุ๋น
+บุนนะบุนนัง
+บุนนาค
+บุบ
+บุพเพนิวาสานุสติญาณ
+บุพเพสันนิวาส
+บุพโพ
+บุฟเฟ่ต์
+บุ๋ม
+บุ่มบ่าม
+บุ้ย
+บุ้ยปาก
+บุรณะ
+บุรพกุศล
+บุรพทิศ
+บุรพนิมิต
+บุรพบท
+บุรพภัทรบท
+บุรพาจารย์
+บุรพาษาฒ
+บุระ
+บุรัตถิมทิศ
+บุราณ
+บุราณทุติยิกา
+บุรินทร์
+บุริมทิศ
+บุริมพรรษา
+บุริมสิทธิ
+บุรี
+บุรุษ
+บุรุษโทษ
+บุรุษธรรม
+บุเรภพ
+บุเรภัต
+บุโรทั่ง
+บุษกร
+บุษบก
+บุษบง
+บุษบัน
+บุษบา
+บุษบามินตรา
+บุษปราค
+บุษปะ
+บุษย
+บุษย์
+บุษย์น้ำทอง
+บุษราคัม
+บุหงง
+บุหงัน
+บุหงา
+บุหรง
+บุหรี่
+บุหรี่พระราม
+บุหลัน
+บู่
+บู้
+บู๊
+บูชนียสถาน
+บูชา
+บูชิโด
+บูชิต
+บูด
+บูดู
+บูร
+บูรณ์
+บูรณะ
+บูรพ
+บูรพา
+บูรพาจารย์
+บูรี
+เบ้
+เบ๊
+เบคอน
+เบ่ง
+เบงกาละนี
+เบ๊จี๋
+เบญกานี
+เบญจ
+เบญจก
+เบญจมาศ
+เบญจา
+เบญจางค์
+เบญญา
+เบญพาด
+เบ็ด
+เบ็ดเตล็ด
+เบ็ดเสร็จ
+เบตา
+เบนซิน
+เบนไซน์
+เบรก
+เบริลเลียม
+เบรียน
+เบเร่ต์
+เบส
+เบสบอล
+เบ้อ
+เบอร์
+เบอร์คีเลียม
+เบ้อเร่อ
+เบ้อเร่อเท่อ
+เบ้อเริ่ม
+เบ้อเริ่มเทิ่ม
+เบอะ
+เบะ
+เบา
+เบ้า
+เบาราณ
+เบาะ
+เบิก
+เบิ่ง
+เบี้ย
+เบียก
+เบี่ยง
+เบียด
+เบียน
+เบียร์
+เบี้ยว
+เบือ
+เบื่อ
+เบื้อ
+เบื้อง
+เบือน
+แบ
+แบ้
+แบก
+แบคทีเรีย E
+แบ่ง
+แบงค์
+แบดมินตัน
+แบตเตอรี่
+แบน
+แบนโจ
+แบบ
+แบ็บ
+แบรก
+แบเรียม
+แบหลา
+แบะ
+แบะแซ
+โบ
+โบ้
+โบ๋
+โบก
+โบกขรณี
+โบกี้
+โบชุก
+โบดก
+โบต
+โบตั๋น
+โบนัส
+โบ๊เบ๊
+โบย
+โบรมีน
+โบรอน
+โบราณ
+โบว์ลิ่ง
+โบสถ์
+ใบ
+ใบ้
+ใบระกา
+ไบ่ๆ
+ไบคาร์บอเนต
+ไบเบิล
+ป
+ปก
+ปกติ
+ปกรณ์
+ปกรณัม
+ปการ
+ปกิณกะ
+ปกีรณัม
+ปโกฏิ
+ปคุณ
+ปง
+ป่ง
+ปงปัง
+ปชาบดี
+ปฎล
+ปฏัก
+ปฏิกรณ์
+ปฏิกรรม
+ปฏิกรรมสงคราม
+ปฏิการะ
+ปฏิกิริยา
+ปฏิกูล
+ปฏิคคหิต
+ปฏิคม
+ปฏิคาหก
+ปฏิฆะ
+ปฏิจจสมุปบาท
+ปฏิชีวนะ
+ปฏิญญา
+ปฏิญาณ
+ปฏิทิน
+ปฏิบถ
+ปฏิบัติ
+ปฏิปทา
+ปฏิปักษ์
+ปฏิปัน
+ปฏิปุจฉาพยากรณ์
+ปฏิปุจฉาวาที
+ปฏิพัทธ์
+ปฏิพากย์
+ปฏิภาค
+ปฏิภาณ
+ปฏิภาณกวี
+ปฏิภาณปฏิสัมภิทา
+ปฏิภาณโวหาร
+ปฏิมา
+ปฏิมากร
+ปฏิยาย
+ปฏิยุทธ์
+ปฏิรพ
+ปฏิรูป
+ปฏิโลม
+ปฏิวัติ
+ปฏิวาต
+ปฏิวาท
+ปฏิเวธ
+ปฏิสนธิ
+ปฏิสวะ
+ปฏิสังขรณ์
+ปฏิสันถาร
+ปฏิสัมภิทา
+ปฏิเสธ
+ปฐพี
+ปฐม
+ปฐมดุสิต
+ปฐมพยาบาล
+ปฐมสมโพธิ
+ปฐมาสาฒ
+ปฐวี
+ปณต
+ปณาม
+ปณิธาน
+ปณิธิ
+ปณีต
+ปด
+ปดโป้
+ปดิวรัดา
+ปตัตรี
+ปติ
+ปติยัต
+ปถพี
+ปถมัง
+ปถวี
+ปทักขิณ
+ปทัฏฐาน
+ปทัสถาน
+ปทาน
+ปทานุกรม
+ปทีป
+ปทุม
+ปธาน
+ปน
+ป่น
+ปนัดดา
+ปนุท
+ปบ
+ปปัญจะ
+ปม
+ปรก
+ปรกติ
+ปรง
+ปรด
+ปรตยักษ์
+ปรตยาค
+ปรตเยก
+ปรทัตตูปชีวี
+ปรน
+ปรนนิบัติ
+ปรนัย
+ปรบ
+ปรปักษ์
+ปรเมหะ
+ปรโลก
+ปรวด
+ปรวนแปร
+ปรวาที
+ปรวิสัยสีมา
+ปรศุ
+ปรสิต
+ปร๋อ
+ปรองดอง
+ปรอด
+ปรอดๆ
+ปรอท
+ปรอย
+ปรอยๆ
+ประ
+ประกบ
+ประกฤต
+ประกฤติ
+ประกล
+ประกวด
+ประกอบ
+ประกัน
+ประกับ
+ประกาย
+ประการ
+ประกาศ
+ประกาศก
+ประกาศนียกรรม
+ประกาศนียบัตร
+ประกาศิต
+ประกำ
+ประกิด
+ประกิต
+ประกีรณก
+ประเกียรณก
+ประแกก
+ประคด
+ประคนธรรพ
+ประคนธรรพ์
+ประคบ
+ประคอง
+ประคับประคอง
+ประคัลภ์
+ประคำ
+ประคำไก่
+ประคำดีควาย
+ประคิ่น
+ประคิ่นวินชา
+ประคุณ
+ประเคน
+ประเคราะห์
+ประโคน
+ประโคนธรรบ
+ประโคนธรรพ์
+ประโคม
+ประจง
+ประจญ
+ประจบ
+ประจวบ
+ประจ๋อประแจ๋
+ประจักษ์
+ประจัญ
+ประจัน
+ประจาก
+ประจาค
+ประจาน
+ประจำ
+ประจิม
+ประจิ้มประจ่อง
+ประจิ้มประเจ๋อ
+ประจุ
+ประจุคมน์
+ประจุบัน
+ประเจก
+ประเจิด
+ประเจียด
+ประแจ
+ประชด
+ประชน
+ประชวม
+ประชวร
+ประชัน
+ประชา
+ประชิด
+ประชี
+ประชุม
+ประเชิญ
+ประณต
+ประณม
+ประณาม
+ประณิธาน
+ประณิธิ
+ประณีต
+ประณุท
+ประดง
+ประดงแดง
+ประดน
+ประดวน
+ประดอน
+ประดอย
+ประดัก
+ประดัง
+ประดับ
+ประดา
+ประดาก
+ประดาป
+ประดาษ
+ประดิชญา
+ประดิดประดอย
+ประดิทิน
+ประดิรพ
+ประดิษฐ์
+ประดิษฐาน
+ประดุ
+ประดุง
+ประดุจ
+ประดู่
+ประเด
+ประเด็น
+ประเดยก
+ประเดิม
+ประเดียง
+ประเดี๋ยว
+ประแดง
+ประแดะ
+ประโดย
+ประตง
+ประตยาค
+ประตัก
+ประตาปะ
+ประติชญา
+ประติญาณ
+ประติทิน
+ประติมากรรม
+ประติรพ
+ประติศรัพ
+ประตู
+ประถม
+ประถมจินดา
+ประทม
+ประทยด
+ประท้วง
+ประทวน
+ประทักษ์
+ประทักษิณ
+ประทัง
+ประทัด
+ประทับ
+ประท่า
+ประทากล้อง
+ประทาน
+ประทาย
+ประทาศี
+ประทิน
+ประทิ่น
+ประทีป
+ประทุก
+ประทุฐ
+ประทุฐจิต
+ประทุน
+ประทุมราค
+ประทุษ
+ประทุษฏ์
+ประทุษฏจิต
+ประทุษฐ์
+ประทุษฐจิต
+ประเทศ
+ประเทา
+ประเท้า
+ประเทียด
+ประเทียบ
+ประเทือง
+ประธาน
+ประธานาธิบดี
+ประนม
+ประนอ
+ประนอม
+ประนัง
+ประนัปดา
+ประนี้
+ประนีประนอม
+ประบัด
+ประบาต
+ประปราน
+ประปราย
+ประปา
+ประเปรี้ยง
+ประเปรี้ยว
+ประแปร้น
+ประพจน์
+ประพนธ์
+ประพรม
+ประพฤติ
+ประพฤทธิ์
+ประพัด
+ประพัทธ์
+ประพันธ์
+ประพาต
+ประพาศมหรณพ
+ประพาส
+ประพาฬ
+ประพิณ
+ประพิมพ์ประพาย
+ประพุทธ์
+ประเพณี
+ประเพ้อ
+ประแพร่งประแพรว
+ประโพธ
+ประไพ
+ประไพร
+ประภพ
+ประภัสสร
+ประภา
+ประภาพ
+ประภาษ
+ประภาส
+ประภูศักดิ์
+ประเภท
+ประมง
+ประมวญ
+ประมวล
+ประมัตตะ
+ประมาณ
+ประมาท
+ประมุข
+ประมุท
+ประมูล
+ประเมิน
+ประโมง
+ประโมทย์
+ประยงค์
+ประยุกต์
+ประยุทธ์
+ประยุร
+ประยูร
+ประโยค
+ประโยคสัมปทา
+ประโยชน์
+ประโรหิต
+ประลมพ์
+ประลอง
+ประลัย
+ประลาต
+ประลาย
+ประลึง
+ประลุ
+ประลุง
+ประเล่ห์
+ประเล้าประโลม
+ประโลประเล
+ประโลม
+ประวรรต
+ประวรรตน์
+ประวัติ
+ประวาต
+ประวาที
+ประวาล
+ประวาลปัทม์
+ประวาลผล
+ประวาลวรรณ
+ประวาส
+ประวิง
+ประวิช
+ประวิตร
+ประวีณ
+ประเวณี
+ประเวประวิง
+ประเวศ
+ประเวศน์
+ประศม
+ประศาสน์
+ประศุ
+ประสก
+ประสงค์
+ประสบ
+ประสพ
+ประสม
+ประสะ
+ประสัก
+ประสันนาการ
+ประสัยห์
+ประสา
+ประสาท
+ประสาทการ
+ประสาทรูป
+ประสาธน์
+ประสาน
+ประสาร
+ประสิทธิ์
+ประสีประสา
+ประสูต
+ประสูติ
+ประเสบันอากง
+ประเสริฐ
+ประแสบัน
+ประหนึ่ง
+ประหมัน
+ประหม่า
+ประหยัด
+ประหรณ์
+ประหลาด
+ประหลาท
+ประหล่ำ
+ประหลิ่ม
+ประหวัด
+ประหวั่น
+ประหว่า
+ประหัต
+ประหาณ
+ประหาร
+ประหาส
+ประเหล
+ประเหส
+ประเหียล
+ประไหมสุหรี
+ประอบ
+ประอร
+ประอึง
+ประอุก
+ประเอียง
+ประแอก
+ประฮาม
+ปรัก
+ปรักปรำ
+ปรักมะ
+ปรักหักพัง
+ปรัง
+ปรัชญา
+ปรัด
+ปรัตถจริยา
+ปรัตยนต์
+ปรัตยักษ์
+ปรัตยันต์
+ปรัตยัย
+ปรัตยุตบัน
+ปรัตยุบัน
+ปรัตยูษ
+ปรัตยูห์
+ปรัตเยก
+ปรัน
+ปรั่น
+ปรั้น
+ปรับ
+ปรัปวาท
+ปรัมปรา
+ปรัมมุขา
+ปรัศจิม
+ปรัศนา
+ปรัศนี
+ปรัศว์
+ปร่า
+ปรากฏ
+ปรากรม
+ปรากฤต
+ปราการ
+ปราคภาร
+ปราคาร
+ปราง
+ปรางค์
+ปรางคณะ
+ปราจีน
+ปราชญ์
+ปราชญา
+ปราชัย
+ปราชาปัตยวิวาหะ
+ปราชิต
+ปราณ
+ปราณี
+ปราด
+ปราติหารย์
+ปราทุกรา
+ปราน
+ปรานี
+ปราบ
+ปราบดาภิเษก
+ปราปต์
+ปราภพ
+ปราม
+ปรามาส
+ปราโมช
+ปราโมทย์
+ปราย
+ปรารถนา
+ปรารภ
+ปรารมภ์
+ปราศ
+ปราศจาก
+ปราศัย
+ปราษณี
+ปราษาณ
+ปราสัย
+ปราสาท
+ปรำ
+ปริ
+ปริก
+ปริกขาร
+ปริกรรม
+ปริกัป
+ปริขา
+ปริคณห์
+ปริฆ
+ปริจาค
+ปริจาริกา
+ปริเฉท
+ปริชน
+ปริซึม
+ปริญญา
+ปริณาม
+ปริณายก
+ปริตตะ
+ปริตโตทก
+ปริตยาค
+ปริตร
+ปริทรรศน์
+ปริทัยหัคคี
+ปริทัศน์
+ปริเทพ
+ปริเทพน์
+ปริเทวนะ
+ปริเทวะ
+ปรินิพพาน
+ปริบ
+ปริปันถ์
+ปริพนธ์
+ปริพัตร
+ปริพันธ์
+ปริพาชก
+ปริภัณฑ์
+ปริภาษ
+ปริภาษณ์
+ปริภุญช์
+ปริภูมิ
+ปริโภค
+ปริ่ม
+ปริมณฑล
+ปริมัท
+ปริมาณ
+ปริมาตร
+ปริยัติ
+ปริยัติธรรม
+ปริยาย
+ปริเยศ
+ปริโยสาน
+ปริวรรต
+ปริวัตร
+ปริวาร
+ปริวาส
+ปริวิตก
+ปริเวณ
+ปริศนา
+ปริษการ
+ปริษัท
+ปริสัญญู
+ปริสุทธิ
+ปริหาน
+ปริหาร
+ปริหาส
+ปรี่
+ปรีชญา
+ปรีชา
+ปรี๊ด
+ปรีดา
+ปรีดิ
+ปรีดิ์
+ปรีดี
+ปรีติ
+ปรีย
+ปรียา
+ปรึก
+ปรึกษา
+ปรึง
+ปรือ
+ปรื๋อ
+ปรุ
+ปรุง
+ปรู
+ปรู๋
+ปรูด
+ปรู๊ฟ
+ปฤงคพ
+ปฤจฉา
+ปฤษฎางค์
+ปฤษฐ
+ปฤษณ์
+ปลก
+ปลกเปลี้ย
+ปลง
+ปล่ง
+ปลด
+ปล้น
+ปลวก
+ปลอก
+ปล่อง
+ปล้อง
+ปลอด
+ปล้อน
+ปลอบ
+ปลอม
+ปล่อย
+ปละ
+ปลัก
+ปลั๊ก
+ปลั๊กไฟ
+ปลัง
+ปลั่ง
+ปลัด
+ปลัดขิก
+ปลา
+ปลาก
+ปลาดาว
+ปลาต
+ปลาบ
+ปลาฝา
+ปลาย
+ปลายนาการ
+ปลาโลมา
+ปลาวาฬ
+ปลาสเตอร์
+ปลาสนาการ
+ปลาหมึก
+ปล้ำ
+ปล้ำปลุก
+ปลิง
+ปลิด
+ปลิ้น
+ปลิโพธ
+ปลิม
+ปลิ่ม
+ปลิว
+ปลี
+ปลีก
+ปลื้ม
+ปลุก
+ปลูก
+ปวกเปียก
+ปวง
+ป่วง
+ปวด
+ป่วน
+ป้วน
+ป้วนเปี้ยน
+ป่วย
+ปวัตน์
+ปวัตยาการ
+ปวาต
+ปวารณา
+ปวาล
+ปวาส
+ปวาฬ
+ปวิช
+ปวิตร
+ปวิธ
+ปวิเวก
+ปวีณ
+ปวุติ
+ปเวณี
+ปเวส
+ปเวสน์
+ปศุ
+ปสพ
+ปสันนะ
+ปสัยหะ
+ปสาท
+ปสาน
+ปสาสน์
+ปสุ
+ปสุต
+ปสูติ
+ปหังส
+ปหังสน
+ปหาน
+ปหาร
+ปหาส
+ปอ
+ป้อ
+ป๋อ
+ปอก
+ปอง
+ป่อง
+ป้อง
+ปอด
+ปอน
+ป้อน
+ปอนๆ
+ปอนด์
+ปอเนาะ
+ปอบ
+ปอม
+ป้อม
+ป๋อม
+ปอย
+ป้อย
+ปะ
+ปะกน
+ปะกัง
+ปะกาปะกัง
+ปะการัง
+ปะกำ
+ปะขาว
+ปะงับปะง่อน
+ปะตานี
+ปะตาปา
+ปะตาระกาหลา
+ปะติดปะต่อ
+ปะติยาน
+ปะเตะ
+ปะทะ
+ปะทะปะทัง
+ปะทุ
+ปะทุน
+ปะบุก
+ปะปน
+ปะมง
+ปะราลี
+ปะรำ
+ปะลอม
+ปะเลง
+ปะแล่ม
+ปะแล่มๆ
+ปะโลง
+ปะวะหลำ
+ปะวะหลิ่ม
+ปะเสหรันอากง
+ปะหงับ
+ปะหงับๆ
+ปะหนัน
+ปะหมันอาหยี
+ปะหลิ่ม
+ปะหัง
+ปะเหลาะ
+ปะเหลาะปะแหละ
+ปัก
+ปักข์
+ปักเป้า
+ปักษ์
+ปักษา
+ปักษาสวรรค์
+ปักษิน
+ปักษิบดี
+ปักษิมารค
+ปักษิราช
+ปักษิสิงห์
+ปักษี
+ปัคหะ
+ปัง
+ปั่ง
+ปังสุ์
+ปังสุกุล
+ปัจจัตตะ
+ปัจจัย
+ปัจจามิตร
+ปัจจุคมน์
+ปัจจุทธรณ์
+ปัจจุบัน
+ปัจจูส
+ปัจจูหะ
+ปัจเจก
+ปัจเจกชน
+ปัจเจกบุคคล
+ปัจเจกพุทธะ
+ปัจเจกโพธิ
+ปัจเจกสมาทาน
+ปัจโจปการกิจ
+ปัจฉา
+ปัจฉิม
+ปัจถรณ์
+ปัจนึก
+ปัจยาการ
+ปัจเวกขณ์
+ปัชชร
+ปัชชุน
+ปัญจก
+ปัญจม
+ปัญจวีสติ
+ปัญญัติ
+ปัญญา
+ปัญหา
+ปัฏ
+ปัฏนะ
+ปัฐยาวัต
+ปัณฑรหัตถี
+ปัณฑุปลาส
+ปัณณะ
+ปัณณัตติกวัชชะ
+ปัณณาส
+ปัณณาสก์
+ปัณรสม
+ปัณรสี
+ปัณหิ
+ปัด
+ปัดๆ
+ปัดไถม
+ปัตคาด
+ปัตจัตถรณ์
+ปัตจันต์
+ปัตตะ
+ปัตตะเลี่ยน
+ปัตตานีกะ
+ปัตตานึก
+ปัตตามุโมทนา
+ปัตตาเวีย
+ปัตติ
+ปัตติก
+ปัตถร
+ปัตถะ
+ปัตนิ
+ปัตนี
+ปัตยัย
+ปัตหล่า
+ปัถพี
+ปัถวี
+ปัน
+ปั่น
+ปั้น
+ปั้นจั่น
+ปันจุเหร็จ
+ปันลม
+ปั้นหยา
+ปั้นเหน่ง
+ปับ
+ปั๊บ
+ปัปผาสะ
+ปัพพาชนะ
+ปัพพาชนียกรรม
+ปัพภาระ
+ปั๊ม
+ปั๊มแก็ส
+ปั๊มน้ำมัน
+ปัยกะ
+ปัยกา
+ปัยยิกา
+ปั่ว
+ปัวเปีย
+ปั้วเปี้ย
+ปัศจิม
+ปัศตัน
+ปัศตู
+ปัสสัทธิ
+ปัสสาวะ
+ปัสสาสะ
+ปา
+ป่า
+ป้า
+ป๋า
+ปาก
+ปาง
+ป่าง
+ป้าง
+ป้างป่า
+ปาจนะ
+ปาจรีย์
+ปาจารย์
+ปาจิตตีย์
+ปาจีน
+ปาฏลิ
+ปาฏิบท
+ปาฏิบุคคลิก
+ปาฏิโภค
+ปาฏิหาริย์
+ปาฐะ
+ปาณะ
+ปาณิ
+ปาณี
+ปาด
+ปาดหาว
+ปาติโมกข์
+ปาตี
+ปาเต๊ะ
+ปาท
+ปาทป
+ปาท่องโก๋
+ปาทังกา
+ปาทาน
+ปาทุกา
+ปาน
+ป่าน
+ป้าน
+ปานดง
+ป้านลม
+ปานะ
+ปานิเยน
+ปานียะ
+ป้าบ
+ป๊าบ
+ปาปอหยีสังฆาตา
+ปาพจน์
+ปาม
+ปาโมกข์
+ป่าย
+ป้าย
+ปายาส
+ปาร์ก
+ปาร์เกต์
+ปาร์ตี
+ปารมี
+ปารษณี
+ปาราชิก
+ปาริฉัตร
+ปาริชาต
+ปาริสุทธิศีล
+ปารุปนะ
+ปาล
+ปาล์ม
+ปาลิไลยก์
+ปาลี
+ป่าว
+ป๊าว
+ปาวๆ
+ปาวก
+ปาวจนะ
+ปาวาร
+ปาษาณ
+ปาส
+ปาสาณ
+ปาสาทิกะ
+ปาหนัน
+ปาหี่
+ปาหุณ
+ปำ
+ป้ำ
+ป้ำๆเป๋อๆ
+ป้ำเป้อ
+ป้ำเป๋อ
+ปิกนิก
+ปิกอัพ
+ปิงคล
+ปิงคละ
+ปิงปอง
+ปิฎก
+ปิฏฐะ
+ปิฐิ
+ปิณฑะ
+ปิด
+ปิดเต๊าะ
+ปิตตะ
+ปิตา
+ปิตุ
+ปิตุจฉา
+ปิตุล
+ปิตุลา
+ปิตุลานี
+ปิโตรเลียม
+ปิ่น
+ปิ๊น
+ปิ๊นๆ
+ปิ่นตอ
+ปิ่นโต
+ปิปผลี
+ปิ่ม
+ปิ้ม
+ปิยังคุ
+ปิรันฮา
+ปิลันธน์
+ปิ๋ว
+ปิศาจ
+ปิสัง
+ปิไส
+ปิหก
+ปิหลั่น
+ปี
+ปี่
+ปี้
+ปี๋
+ปีก
+ปีฎกฆร
+ปีฐกะ
+ปีฐะ
+ปี๊ด
+ปีตกสิณ
+ปีติ
+ปีน
+ปีบ
+ปี๊บ
+ปีโป๊
+ปีศาจ
+ปีฬ
+ปีฬก
+ปีฬา
+ปึก
+ปึง
+ปึ่ง
+ปึ๊ง
+ปึ๋ง
+ปึ้ด
+ปึ้น
+ปึมปื้อ
+ปืดปึง
+ปืน
+ปือ
+ปื้อ
+ปื๋อ
+ปุ
+ปุ๊
+ปุก
+ปุกปุย
+ปุ๊กลุก
+ปุคละ
+ปุ้งกี๋
+ปุงคพ
+ปุงควะ
+ปุงลิงค์
+ปุงลึงค์
+ปุจฉา
+ปุฏ
+ปุณฑริก
+ปุด
+ปุตตะ
+ปุตทารทาน
+ปุถุชน
+ปุนเท่าก๋ง
+ปุนนาค
+ปุนภพ
+ปุนับปุนัง
+ปุนัพสุ
+ปุบ
+ปุ๊บ
+ปุบปับ
+ปุ๊บปั๊บ
+ปุปผะ
+ปุปะ
+ปุพพะ
+ปุ่ม
+ปุ้ม
+ปุ๋ม
+ปุ่มปลา
+ปุ้มเป้ง
+ปุ่มเปือก
+ปุ้มเปือก
+ปุมา
+ปุย
+ปุ้ย
+ปุ๋ย
+ปุร
+ปุรณะ
+ปุรัตถิมทิศ
+ปุราณ
+ปุราณะ
+ปุริมทิศ
+ปุริมพรรษา
+ปุริสภาวะ
+ปุริโสดม
+ปุเรจาริก
+ปุโรหิต
+ปุลลิงค์
+ปุลลึงค์
+ปุลินท์
+ปุลู
+ปุเลง
+ปุเลงๆ
+ปุโลปุเล
+ปุแหละ
+ปุฬวะ
+ปู
+ปู่
+ปูชกะ
+ปูชนียะ
+ปูชา
+ปูชิต
+ปูด
+ปูดกกส้มมอ
+ปูติ
+ปูน
+ปูม
+ปู้ยยี้ปู้ยำ
+ปู่ย่า
+ปูระ
+ปูลู
+ปูวา
+เป้
+เป๋
+เปก
+เป๊ก
+เปกข์
+เป่ง
+เป้ง
+เป๊ง
+เป๋ง
+เป็ด
+เป็ดไซ้ไก่ตอดสลักรอดหมูสี
+เป็น
+เป็นต้น
+เปยยาล
+เปร
+เปร็ง
+เปรต
+เปรม
+เปรย
+เปรยๆ
+เปรอ
+เปรอะ
+เปรา
+เปราะ
+เปราะแประ
+เปรียง
+เปรี้ยง
+เปรียญ
+เปรียบ
+เปรี่ยม
+เปรียว
+เปรี้ยว
+เปรี้ยวหวาน
+เปรียะ
+เปรี๊ยะ
+เปรื่อง
+เปรื้อย
+เปล
+เปล่ง
+เปลว
+เปลา
+เปล่า
+เปล้า
+เปลาะ
+เปลี้ย
+เปลี่ยน
+เปลี่ยม
+เปลี่ยว
+เปลี่ยวดำ
+เปลือก
+เปลือกกระเทียม
+เปลือง
+เปลื้อง
+เปลือย
+เปศ
+เปศล
+เปศัส
+เปสการ
+เปสล
+เปสุญ
+เปสุไณย
+เป๋อ
+เป้อเย้อ
+เปอร์เซ็นต์
+เป๋อเหลอ
+เปะ
+เปะปะ
+เปา
+เป่า
+เป้า
+เป๊า
+เป๋า
+เป๋าฮื้อ
+เปาะ
+เปาะเปี๊ยะ
+เปาะแปะ
+เปาะเหลาะ
+เปิก
+เปิง
+เปิงๆ
+เปิงมาง
+เปิด
+เปิ่น
+เปิบ
+เปิ๊บ
+เปิบข้าว
+เปีย
+เปียก
+เปี๊ยก
+เปียแชร์
+เปี๊ยบ
+เปี่ยม
+เปียว
+เปี้ยว
+เปียหวย
+เปียะ
+เปือก
+เปื้อน
+แป
+แป้ง
+แป๋ง
+แป้งแช่
+แปด
+แป๊ด
+แปทู
+แป้น
+แปบ
+แป๊บ
+แปม
+แปร
+แปร๋
+แปรก
+แปรง
+แปร่ง
+แปรงล้างขวด
+แปรงหูหนู
+แปร๊ด
+แปร้น
+แปร๋น
+แปร๋แปร้น
+แประ
+แปล
+แปล้
+แปลก
+แปลง
+แปลน
+แปลบ
+แป้ว
+แป๊ว
+แป๋ว
+แปะ
+แป๊ะ
+แป๊ะซะ
+โป
+โป่
+โป้
+โป๊
+โปก
+โป๊ก
+โป๊กเกอร์
+โปกขรณี
+โปเก
+โปง
+โป่ง
+โป้ง
+โป่งข่าม
+โปงลาง
+โป่งวิด
+โป้งโหยง
+โปฐปทา
+โปดก
+โปตถกะ
+โปน
+โปป
+โป๊ยกั้ก
+โป๊ยเซียน
+โปรง
+โปร่ง
+โปรด
+โปรตอน
+โปรตีน
+โปรเตสแตนต์
+โปรแทรกเตอร์
+โปรย
+โปรีสภา
+โปล่ง
+โปลิโอ
+โปโล
+โปส
+โปสก
+โปสการ์ด
+โปสเตอร์
+โปสาวนิกมูล
+โปะ
+โป๊ะ
+โป๊ะจ้าย
+ไป
+ไป่
+ไป๋
+ไป๋เป๋
+ไปยาล
+ไปรษณีย์
+ไปล่
+ไปศาจ
+ไปศาจี
+ผ
+ผก
+ผกเรือก
+ผกา
+ผกาย
+ผคม
+ผง
+ผงก
+ผงม
+ผงร
+ผงอน
+ผงอบ
+ผงะ
+ผงาด
+ผง่าน
+ผจง
+ผจญ
+ผจัญ
+ผจาน
+ผชุม
+ผญา
+ผณะ
+ผณิน
+ผด
+ผดุง
+ผเดิน
+ผทม
+ผนวก
+ผนวช
+ผนัง
+ผนิด
+ผนึก
+ผม
+ผมนาง
+ผยอง
+ผย่ำเผยอ
+ผรสุ
+ผริต
+ผรุพก
+ผล
+ผลก
+ผลคุน
+ผลคุนี
+ผลง
+ผลอ
+ผล็อง
+ผล็อย
+ผละ
+ผลัก
+ผลัด
+ผลับ
+ผลัวะ
+ผลา
+ผลาญ
+ผลิ
+ผลิกะ
+ผลิต
+ผลิน
+ผลี
+ผลีผลาม
+ผลึก
+ผลึ่ง
+ผลือ
+ผลุ
+ผลุง
+ผลุด
+ผลุน
+ผลุบ
+ผลุย
+ผลู
+ผวา
+ผสม
+ผสมเสร็จ
+ผสาน
+ผสาย
+ผสาร
+ผอก
+ผอง
+ผ่อง
+ผ่อน
+ผอบ
+ผอม
+ผ็อย
+ผ่อย
+ผอวด
+ผอูน
+ผะ
+ผะแคง
+ผะดา
+ผะสา
+ผะหมี
+ผะออบ
+ผะอืดผะอม
+ผัก
+ผักไก
+ผักขวง
+ผักขี้ขวง
+ผักโฉม
+ผักชี
+ผักตบชวา
+ผักทอดยอด
+ผักบุ้ง
+ผักบุ้งขัน
+ผักบุ้งจีน
+ผักบุ้งทะเล
+ผักบุ้งฝรั่ง
+ผักบุ้งร้วม
+ผักบุ้งรั้ว
+ผักเบี้ย
+ผักเบี้ยใหญ่
+ผักปลัง
+ผักปุ่มปลา
+ผักเผ็ด
+ผักไผ่
+ผักรู้นอน
+ผักแว่น
+ผักสาบ
+ผักสามหาว
+ผักเสี้ยน
+ผักหนอก
+ผักหนอง
+ผักหนาม
+ผักหวาน
+ผักไหม
+ผักอีแปะ
+ผัคคุณ
+ผัคคุณี
+ผัง
+ผัด
+ผัน
+ผับ
+ผัลคุนี
+ผัว
+ผัวะ
+ผัสสะ
+ผา
+ผ่า
+ผ้า
+ผาก
+ผาง
+ผ่าง
+ผาณิต
+ผาด
+ผาติ
+ผ่าน
+ผาม
+ผาย
+ผ่าย
+ผ้าย
+ผาล
+ผาลคุน
+ผาลา
+ผ่าว
+ผาสุก
+ผ้าฮาด
+ผำ
+ผ้ำๆ
+ผิ
+ผิง
+ผิด
+ผิดก
+ผิต
+ผิน
+ผิว
+ผี
+ผีตองเหลือง
+ผี้ว์
+ผึง
+ผึ่ง
+ผึ้ง
+ผื่น
+ผุ
+ผุด
+ผุยผง
+ผุสราคา
+ผู้
+ผูก
+เผ
+เผง
+เผชิญ
+เผ็ด
+เผด็จ
+เผดิม
+เผดียง
+เผ่น
+เผนิก
+เผย
+เผยอ
+เผยิบ
+เผล
+เผล่
+เผล้
+เผล็ด
+เผลอ
+เผละ
+เผลาะ
+เผลาะแผละ
+เผลียง
+เผอเรอ
+เผอิญ
+เผอิล
+เผะ
+เผา
+เผ่า
+เผ้า
+เผ้าผง
+เผาะ
+เผิ้ง
+เผิน
+เผินๆ
+เผียน
+เผียะ
+เผือ
+เผื่อ
+เผือก
+เผือด
+เผือน
+เผื่อน
+แผ่
+แผก
+แผง
+แผด
+แผดเผา
+แผดเสียง
+แผน
+แผ่น
+แผนก
+แผล
+แผลง
+แผล็บ
+แผล็บๆ
+แผล็ว
+แผละ
+แผ่ว
+แผ้ว
+โผ
+โผง
+โผฏฐัพพะ
+โผน
+โผย
+โผล่
+โผลกเผลก
+โผละ
+โผอน
+โผะ
+ไผ
+ไผ่
+ไผท
+ไผ่ผัง
+ฝ
+ฝน
+ฝรั่ง
+ฝรั่งเศส
+ฝรั่น
+ฝ่อ
+ฝอย
+ฝัก
+ฝักฝ่าย
+ฝักใฝ่
+ฝัง
+ฝั่ง
+ฝัด
+ฝัน
+ฝา
+ฝ่า
+ฝ้า
+ฝาก
+ฝาง
+ฝาด
+ฝาน
+ฝาย
+ฝ่าย
+ฝ้าย
+ฝิ่น
+ฝี
+ฝี่
+ฝีก
+ฝีหมอบ
+ฝึก
+ฝืด
+ฝืน
+ฝุ่น
+ฝูง
+เฝ้า
+เฝือ
+เฝือก
+เฝือง
+เฝื่อน
+แฝก
+แฝง
+แฝด
+ใฝ่
+ไฝ
+พ
+พก
+พกจร
+พกนุ่น
+พกพ่าย
+พกลม
+พกหิน
+พกอาวุธ
+พกา
+พกุระ
+พกุล
+พง
+พงศ์
+พจน์
+พจนา
+พจนารถ
+พจนีย์
+พจมาน
+พจี
+พชระ
+พญา
+พญาณ
+พญาไฟ
+พญาลอ
+พณิช
+พณิชย์
+พด
+พธู
+พน
+พ่น
+พ้น
+พนม
+พนอง
+พนอม
+พนัก
+พนักงาน
+พนัง
+พนัดร
+พนัน
+พนัส
+พนา
+พนาด
+พนานดร
+พนานต์
+พนาย
+พนิดา
+พนิต
+พนียก
+พเนก
+พเนจร
+พบ
+พบู
+พม่า
+พยช
+พยชน์
+พยติเรก
+พยนต์
+พยศ
+พยัก
+พยัคฆ์
+พยัชน์
+พยัญชนะ
+พยัต
+พยับ
+พยากรณ์
+พยาฆร์
+พยางค์
+พยาธิ
+พยาน
+พยาบาท
+พยาบาล
+พยาม
+พยายาม
+พยาล
+พยุ
+พยุง
+พยุหร
+พยุหะ
+พยู่ห์
+พเยีย
+พร
+พรต
+พรม
+พรมคด
+พรมแดน
+พรมมิ
+พรรค
+พรรค์
+พรรคานต์
+พรรณ
+พรรณนา
+พรรณราย
+พรรดึก
+พรรลาย
+พรรษ
+พรรเหา
+พรรเอิญ
+พรวงเพรียง
+พรวด
+พรวน
+พรหม
+พรอก
+พร่อง
+พร้อง
+พรอด
+พร้อม
+พร่อมพร้อ
+พร่อย
+พร้อย
+พระ
+พระจันทร์ครึ่งซีก
+พระเจ้าลอยถาด
+พระเจ้าห้าพระองค์
+พระนอม
+พระนาด
+พระยาเล็บครุฑ
+พระยาวัน
+พระลบ
+พระลือ
+พระแวว
+พระหา
+พระหาม
+พระหิด
+พระฮาม
+พรักพร้อม
+พรั่ง
+พรัด
+พรั่น
+พรับ
+พร่า
+พร้า
+พราก
+พราง
+พร่าง
+พราด
+พราน
+พราย
+พราว
+พราหมณ์
+พราหมณี
+พราหมี
+พรำ
+พร่ำ
+พร้ำ
+พรำๆ
+พริก
+พริ้ง
+พริบ
+พริบไหว
+พริ้ม
+พรึง
+พรึน
+พรึบ
+พรืด
+พรื้อ
+พรุ
+พรุก
+พรุ่ง
+พรุ่งนี้
+พรุน
+พรู
+พรูด
+พฤกษ์
+พฤฒ
+พฤฒา
+พฤฒิ
+พฤต
+พฤติ
+พฤทธ์
+พฤทธิ์
+พฤนต์
+พฤนท์
+พฤนทาร
+พฤนทิ์
+พฤภูษณ
+พฤภูษิต
+พฤษจิก
+พฤษภ
+พฤหัสบดี
+พล
+พลกาย
+พลการ
+พลขันธ์
+พลความ
+พลเทพ
+พลบ
+พลเมือง
+พลเรือน
+พลโลก
+พลวก
+พลวง
+พลวดกินลูก
+พลวดใหญ่
+พลวัต
+พลศาสตร์
+พลศีกษา
+พลสิงห์
+พลอ
+พล้อ
+พลอง
+พลอด
+พลอน
+พลอมแพลม
+พลอย
+พล่อย
+พละ
+พละกำลัง
+พละพลา
+พลั่ก
+พลัง
+พลั่ง
+พลั้ง
+พลัด
+พลัน
+พลับ
+พลับพลา
+พลับพลึง
+พลั่ว
+พล่า
+พลากร
+พลาง
+พลาญ
+พลาด
+พลาดิศัย
+พลาธิการ
+พล่าน
+พลานามัย
+พลานึก
+พลาม
+พล่าม
+พลาย
+พลายม้า
+พลาสติก
+พลาสมา
+พลาหก
+พลำ
+พล้ำ
+พลำภัง
+พลิ
+พลิก
+พลิพัท
+พลิ้ว
+พลี
+พลีมุข
+พลุ
+พลุก
+พลุ่ก
+พลุกพล่าน
+พลุ่ง
+พลุ้น
+พลุ่มพล่าม
+พลุ่ย
+พลุ้ย
+พลู
+พลูแก
+พลูคาว
+พลูต้น
+พลูโต
+พลูโทเนียม
+พวก
+พวง
+พ่วง
+พวน
+พวย
+พสก
+พสน
+พสุ
+พสุสงกรานต์
+พหล
+พหุ
+พหุล
+พหู
+พอ
+พ่อ
+พ้อ
+พอก
+พอกพูน
+พอคเกตบุค
+พ่อค้าตีเมีย
+พอง
+พ้อง
+พอน
+พ้อม
+พอโลเนียม
+พะ
+พ่ะ
+พะงา
+พะงาบ
+พะงาบๆ
+พะจง
+พะทำมะรง
+พะนอ
+พะเน้าพะนอ
+พะเน้าพะนึง
+พะเนิน
+พะเนียง
+พะแนง
+พะไนย
+พะพาน
+พะพิง
+พะเพิง
+พะยอม
+พะยุพยุง
+พะยูง
+พะยูน
+พะเยิบ
+พะเยิบๆ
+พะเยีย
+พะรุงพะรัง
+พะเลย
+พะโล้
+พะไล
+พะวง
+พะวักพะวน
+พะวา
+พะว้าพะวัง
+พะอง
+พะอากพะอำ
+พะอืดพะอม
+พัก
+พักตร์
+พักตรา
+พักตา
+พักแพว
+พักร
+พัง
+พังกา
+พังคา
+พังงา
+พังผืด
+พังพวย
+พังพอน
+พังพาน
+พังพาบ
+พังเพย
+พังลาง
+พัช
+พัชนี
+พัชร
+พัญจก
+พัญจน์
+พัฒกี
+พัฒนะ
+พัฒนา
+พัด
+พัดชา
+พัดซาด
+พัดดึงส์
+พัดแพว
+พัดหลวง
+พัตติงสะ
+พัตร
+พัทธ์
+พัทธยา
+พัทร
+พัน
+พันงู
+พันจำ
+พันไฉน
+พันตัน
+พันตู
+พันทาง
+พันธ์
+พันธนะ
+พันธนำ
+พันธะ
+พันธุ
+พันธุ์
+พันลอก
+พันลาย
+พันลำ
+พันลึก
+พันลึกพันลือ
+พันเลิศ
+พันเอิญ
+พับ
+พับผ่า
+พัฟ
+พัลลภ
+พัลวัน
+พัว
+พัวะ
+พัศดี
+พัสดุ
+พัสเดา
+พัสตร์
+พัสถาน
+พา
+พาก
+พากเพียร
+พากย์
+พาง
+พ่าง
+พาชี
+พาณ
+พาณิช
+พาณิชย์
+พาณินี
+พาณี
+พาด
+พาดไฉน
+พาต
+พาท
+พาทย์
+พาธ
+พาธา
+พาน
+พ่าน
+พานร
+พาม
+พาย
+พ่าย
+พายม้า
+พายัพ
+พายุ
+พาร์เซก
+พารณ
+พารณะ
+พาร์ตเนอร์
+พารา
+พาราฟิน
+พาล
+พาลา
+พาลี
+พาลีหลายหน้า
+พาลุก
+พาโล
+พาไล
+พาส
+พาสน์
+พาสนา
+พาสุกรี
+พ่าห์
+พาหนะ
+พาหะ
+พาหา
+พาหิรกะ
+พาหิระ
+พาหุ
+พาเหรด
+พาเหียร
+พาฬ
+พาฬหะ
+พาฬะ
+พำ
+พำๆพึมๆ
+พำนัก
+พำพวก
+พำพึม
+พำลา
+พิกล
+พิกสิต
+พิกัด
+พิกัติ
+พิกัน
+พิการ
+พิกุล
+พิเคราะห์
+พิฆน์
+พิฆเนศ
+พิฆเนศวร
+พิฆาต
+พิง
+พิจล
+พิจัย
+พิจาร
+พิจารณ์
+พิจารณา
+พิจิต
+พิจิตร
+พิชญ์
+พิชย
+พิชัย
+พิชาน
+พิชิต
+พิเชฐ
+พิเชียร
+พิฑูรย์
+พิณ
+พิดทูล
+พิดรก
+พิดาน
+พิโดร
+พิตร
+พิถี
+พิถีพิถัน
+พิทย์
+พิทยา
+พิทักษ์
+พิทักษ์สันติ
+พิทูร
+พิเทศ
+พิธาน
+พิธี
+พิธุ
+พิธุร
+พิโธ่
+พินทุ
+พินพง
+พิ่นพั่ง
+พินอบพิเทา
+พินัย
+พินาศ
+พินิจ
+พินิต
+พินิศ
+พินิศจัย
+พิเนต
+พิบัติ
+พิบาก
+พิบุล
+พิบูล
+พิปริต
+พิปลาศ
+พิปัสสนา
+พิพรรธ
+พิพรรธน์
+พิพักพิพ่วน
+พิพัฒ
+พิพัฒน์
+พิพากษ์
+พิพากษา
+พิพาท
+พิพิธ
+พิภพ
+พิภัช
+พิภาค
+พิภูษณะ
+พิเภก
+พิมพ์
+พิมพการัง
+พิมพา
+พิมโพหนะ
+พิมล
+พิมเสน
+พิมาน
+พิมุข
+พิโมกข์
+พิโมกษ์
+พิโยกพิเกน
+พิโยค
+พิร
+พิรอด
+พิรากล
+พิราบ
+พิราม
+พิราลัย
+พิริยะ
+พิรี้พิไร
+พิรุณ
+พิรุธ
+พิรุฬห์
+พิเรนทร์
+พิเราะ
+พิโรธ
+พิโรธนะ
+พิไร
+พิลังกาสา
+พิลาป
+พิลาลส
+พิลาส
+พิลิปดา
+พิโลล
+พิไล
+พิศ
+พิศวง
+พิศวาส
+พิศาล
+พิศุทธิ์
+พิเศษ
+พิษ
+พิษฐาน
+พิษนาศน์
+พิสดาร
+พิสมร
+พิสมัย
+พิสัง
+พิสัช
+พิสัญญี
+พิสัย
+พิสิฐ
+พิสุทธิ์
+พิสูจน์
+พิหค
+พิหาร
+พิฬาร
+พี
+พี่
+พี้
+พีช
+พีชคณิต
+พี้โพ้
+พีระมิด
+พึง
+พึ่ง
+พึ่บ
+พึม
+พึมพำ
+พืช
+พืด
+พื้น
+พุ
+พุก
+พุกาม
+พุง
+พุ่ง
+พุงแก
+พุงจง
+พุงดอ
+พุงทะลาย
+พุงปลา
+พุฒ
+พุฒิ
+พุด
+พุดตาน
+พุทธ
+พุทธชาด
+พุทธรักษา
+พุทธะ
+พุทธิ
+พุทโธ่
+พุทรา
+พุธ
+พุ่ม
+พุมเรียง
+พุ้ย
+พู
+พู่
+พูกาม
+พูด
+พูน
+พู้น
+เพ
+เพ็ก
+เพกา
+เพคะ
+เพ็ง
+เพ่ง
+เพ็จ
+เพชฉลูกรรม
+เพชฌฆาต
+เพชร
+เพชรกลับ
+เพชรดา
+เพชรนิลจินดา
+เพชรปราณี
+เพชรฤกษ์
+เพชรสังฆาต
+เพชรหลีก
+เพชรหึง
+เพชรายุธ
+เพ็ญ
+เพฑูริย์
+เพณี
+เพ็ดทูล
+เพดาน
+เพตร
+เพท
+เพทนา
+เพทยาธร
+เพทาย
+เพทุบาย
+เพโทบาย
+เพนกวิน
+เพ่นพ่าน
+เพนียด
+เพ้ย
+เพรง
+เพรซีโอดีเมียม
+เพรา
+เพราะ
+เพริด
+เพริศ
+เพรียก
+เพรียง
+เพรียบ
+เพรี้ยม
+เพรียว
+เพรื่อ
+เพรือง
+เพล
+เพลง
+เพล็ด
+เพล้โพล้
+เพลา
+เพลาะ
+เพลาะแพละ
+เพลิง
+เพลิดเพลิน
+เพลิน
+เพลีย
+เพลี้ย
+เพลี่ยง
+เพศ
+เพศยันดร
+เพส
+เพสลาด
+เพ่อ
+เพ้อ
+เพอิญ
+เพะ
+เพิก
+เพิกเฉย
+เพิง
+เพิ่ง
+เพิดเพ้ย
+เพิ่ม
+เพี้ย
+เพียง
+เพี้ยง
+เพียงออ
+เพียชน์
+เพียน
+เพี้ยน
+เพียบ
+เพียร
+เพื่อ
+เพื่อน
+แพ
+แพ้
+แพง
+แพ่ง
+แพงพวย
+แพงพวยฝรั่ง
+แพ็งแพว
+แพทย์
+แพทยา
+แพน
+แพ่น
+แพนก
+แพนงเชิง
+แพนดา
+แพร
+แพร่
+แพรก
+แพร่ง
+แพรว
+แพร้ว
+แพลง
+แพลทินัม
+แพลม
+แพลเลเดียม
+แพละ
+แพละโลม
+แพว
+แพ้ว
+แพศย์
+แพศยา
+แพะ
+แพะโลม
+โพ
+โพก
+โพกพาย
+โพง
+โพงพาง
+โพชฌงค์
+โพซิตรอน
+โพด
+โพแทสเซียม
+โพธ
+โพธิ์
+โพน
+โพ้น
+โพนทะนา
+โพบาย
+โพผัน
+โพย
+โพยม
+โพยมัน
+โพยมาน
+โพรก
+โพรง
+โพรโทแอกทิเนียม
+โพรมีเทียม
+โพระดก
+โพล่
+โพลง
+โพล่ง
+โพล้ง
+โพลน
+โพล้เพล้
+โพละ
+โพสพ
+ไพ
+ไพ่
+ไพจิตร
+ไพชน
+ไพชยนต์
+ไพฑูรย์
+ไพโดร
+ไพที
+ไพบูลย์
+ไพพรรณ
+ไพเพิด
+ไพมอก
+ไพม้า
+ไพร
+ไพร่
+ไพรจิตร
+ไพรชน
+ไพรชยนต์
+ไพรฑูรย์
+ไพรที
+ไพรบูลย์
+ไพรเราะ
+ไพรสามกอ
+ไพรัช
+ไพรำ
+ไพริน
+ไพรี
+ไพรู
+ไพเราะ
+ไพโรจน์
+ไพล
+ไพล่
+ไพศาข
+ไพศาล
+ไพเศษ
+ไพสพ
+ไพสิฐ
+ไพหาร
+ฟ
+ฟก
+ฟ้ง
+ฟรักโทส
+ฟรี
+ฟลอร์โชว์
+ฟลูออรีน
+ฟ่อ
+ฟ้อ
+ฟอก
+ฟอง
+ฟ่อง
+ฟ้อง
+ฟอด
+ฟอน
+ฟ่อน
+ฟ้อน
+ฟ้อแฟ้
+ฟอร์ม
+ฟอร์มาลดีไฮด์
+ฟอร์มาลิน
+ฟอสซิล
+ฟอสฟอรัส
+ฟอสเฟต
+ฟะฟัด
+ฟะฟั่น
+ฟะฟ่าย
+ฟัก
+ฟักฟุ้น
+ฟัง
+ฟังก์ชัน
+ฟังเพราะ
+ฟัด
+ฟัน
+ฟั่น
+ฟั้น
+ฟันช้าง
+ฟ้า
+ฟาก
+ฟาง
+ฟ่าง
+ฟาด
+ฟาทอม
+ฟาน
+ฟ้าฝ่อ
+ฟ่าม
+ฟ้ามุ่ย
+ฟาย
+ฟาร์ม
+ฟาสซิสต์
+ฟิก
+ฟิด
+ฟิต
+ฟิบ
+ฟิล์ม
+ฟิวส์
+ฟิสิกส์
+ฟี่
+ฟี้
+ฟืน
+ฟื้น
+ฟืม
+ฟุ
+ฟุ้ง
+ฟุต
+ฟุน
+ฟุบ
+ฟุ่บ
+ฟุฟะ
+ฟุ่มเฟือย
+ฟุลสแก๊ป
+ฟู
+ฟู่
+ฟูก
+ฟูด
+ฟูม
+เฟ็ด
+เฟ้น
+เฟลด์สปาร์
+เฟ้อ
+เฟอร์นิเจอร์
+เฟอร์เมียม
+เฟอะ
+เฟะ
+เฟิน
+เฟิร์น
+เฟี้ยม
+เฟี้ยว
+เฟือ
+เฟื่อ
+เฟื้อ
+เฟือง
+เฟื้อง
+เฟือน
+เฟือย
+แฟ่
+แฟง
+แฟชั่น
+แฟน
+แฟนซี
+แฟบ
+แฟ้ม
+แฟร์
+แฟรนเซียม
+แฟลกซ์
+แฟลต
+แฟะ
+โฟกัส
+ไฟ
+ภ
+ภค
+ภควดี
+ภควัต
+ภควัทคีตา
+ภควันต์
+ภควัม
+ภควา
+ภควาน
+ภคันทลา
+ภคินี
+ภณ
+ภณิดา
+ภพ
+ภมการ
+ภมร
+ภมุ
+ภมุกะ
+ภมุกา
+ภยันตราย
+ภยาคติ
+ภร
+ภรณี
+ภรต
+ภรตวรรษ
+ภรตศาสตร์
+ภรรดร
+ภรรดา
+ภรรยา
+ภระมร
+ภระมรี
+ภรัสดาษ
+ภราดร
+ภราดา
+ภริยา
+ภรู
+ภฤงคาร
+ภฤดก
+ภฤดี
+ภฤตย์
+ภฤศ
+ภฤษฏ์
+ภว
+ภวัคร
+ภวังค์
+ภักขะ
+ภักดี
+ภักตะ
+ภักติ
+ภักษ์
+ภัค
+ภัคน์
+ภังคะ
+ภังคี
+ภัจ
+ภัญชะ
+ภัณฑ์
+ภัณฑครรภ
+ภัณฑนะ
+ภัณฑาคาร
+ภัณฑาคาริก
+ภัณฑารักษ์
+ภัณฑู
+ภัต
+ภัตร
+ภัทร
+ภัพ
+ภัย
+ภัสดา
+ภัสตรา
+ภัสมะ
+ภัสสร
+ภา
+ภาค
+ภาคภูมิ
+ภาคย์
+ภาคยานุวัติ
+ภาคินี
+ภาคิไนย
+ภาคี
+ภาคียะ
+ภาชนะ
+ภาชี
+ภาณ
+ภาณก
+ภาณี
+ภาณุ
+ภาดร
+ภาดา
+ภาตร
+ภาตา
+ภาติกะ
+ภาติยะ
+ภาตุ
+ภาพ
+ภาพย์
+ภาพยนต์
+ภาม
+ภาย
+ภาร
+ภารดี
+ภารต
+ภารตี
+ภารยทรัพย์
+ภารยา
+ภารโรง
+ภาระ
+ภารา
+ภาวนา
+ภาวะ
+ภาษ
+ภาษก
+ภาษณ์
+ภาษา
+ภาษิต
+ภาษี
+ภาส
+ภาสน์
+ภาสา
+ภาสุร
+ภิกขา
+ภิกขุ
+ภิกขุนี
+ภิกษา
+ภิกษุ
+ภิกษุณี
+ภิงคาร
+ภิงส
+ภิงสนะ
+ภิงสร
+ภิญโญ
+ภิตติ
+ภิท
+ภินท์
+ภิยโย
+ภิรมย์
+ภิรมย์สุรางค์
+ภิษัช
+ภิส
+ภิสัก
+ภีตะ
+ภีม
+ภีรุ
+ภุกต์
+ภุขัน
+ภุช
+ภุญช
+ภุต
+ภุม
+ภุมระ
+ภุมรา
+ภุมริน
+ภุมรี
+ภุมเรศ
+ภุส
+ภู
+ภู่
+ภูโช
+ภูดาด
+ภูต
+ภูติ
+ภูตี
+ภูม
+ภูมิ
+ภูมิคุ้มกัน
+ภูมิแพ้
+ภูมี
+ภูรโลก
+ภูริ
+ภูรี
+ภูษา
+ภูษิต
+เภกะ
+เภคะ
+เภตรา
+เภท
+เภรว
+เภริ
+เภรี
+เภสัช
+เภสัชเพลา
+โภค
+โภคทรัพย์
+โภคภัณฑ์
+โภคยทรัพย์
+โภคิน
+โภคี
+โภไคย
+โภไคศวรรย์
+โภช
+โภชก
+โภชน์
+โภชนะ
+โภชนากร
+โภชนาการ
+โภชนาหาร
+ไภรพ
+ไภริน
+ไภรี
+ไภษัชคุรุ
+ไภษัชย์
+ม
+มก
+มกร
+มกรกุณฑล
+มกรเกตน์
+มกรธวัช
+มกรพาหน
+มกรากร
+มกราคม
+มกราลัย
+มกราวาส
+มกส
+มกุฎ
+มกุล
+มคธ
+มฆ
+มฆวัน
+มฆา
+ม่ง
+มงกุฎ
+มงโกรย
+มงคล
+มงคลจักร
+มงคลพิธี
+มงคลวาท
+มงคลวาร
+มงคลสมรส
+มงคลสมัย
+มงคลสูตร
+มงคลหัตถี
+มณฑ์
+มณฑก
+มณฑนะ
+มณฑป
+มณฑล
+มณฑา
+มณฑารพ
+มณฑิร
+มณเฑียร
+มณี
+มด
+มดเท็จ
+มดยอบ
+มดลูก
+มดาย
+มดี
+มตะ
+มติ
+มท
+มทนะ
+มทนียะ
+มธุ
+มธุระ
+มน
+ม่น
+มนต์
+มนตร์
+มนตรี
+มนท์
+มนทิร
+มนทิราลัย
+มนเทียร
+มนสิการ
+มนัส
+มนาโป
+มนิมนา
+มนิลา
+มนีมนา
+มนุ
+มนุญ
+มนุษย์
+มนุสาร
+มนู
+มนูสาร
+มโน
+มโนราห์
+มโนสาร
+มโนสาเร่
+มโนห์รา
+มมังการ
+มมาก
+มยุระ
+มยูข
+มยูร
+มร
+มรกต
+มรคา
+มรฑป
+มรณ์
+มรณะ
+มรดก
+มรรค
+มรรคา
+มรรตย
+มรรตัย
+มรรทน
+มรรยาท
+มรรษ
+มรสุม
+มรัมเทศ
+มรานควาน
+มริจ
+มริยาท
+มรีจิ
+มรุ
+มรุต
+มฤค
+มฤคย์
+มฤจฉา
+มฤดก
+มฤต
+มฤตก
+มฤตยู
+มฤทิงค์
+มฤทุ
+มฤธุ
+มฤษา
+มล
+มลโค
+มลทิน
+มลน
+มล่น
+มลวก
+มล่อน
+มล่อย
+มละ
+มลัก
+มลังเมลือง
+มล้า
+มลาก
+มล้าง
+มลาน
+มล่าน
+มลาย
+มลายู
+มลาว
+มล่าวเมลา
+มลาหรา
+มลิน
+มลิ้น
+มลื่น
+มวก
+ม่วง
+มวน
+ม่วน
+ม้วน
+มวย
+ม่วย
+ม้วย
+มวล
+มสาร
+มสารก
+มสารคัล
+มสิ
+มหกรรม
+มหรณพ
+มหรรฆ
+มหรรณพ
+มหรสพ
+มหัจฉริยะ
+มหัณณพ
+มหัต
+มหัตฆ
+มหัทธนะ
+มหันต์
+มหัพภาค
+มหัล
+มหัลกะ
+มหัศจรรย์
+มหา
+มหากฐิน
+มหากาฬ
+มหาขันธก
+มหาจักร
+มหาชน
+มหาชัย
+มหาชาติ
+มหาโชตรัต
+มหาดไทย
+มหาดเล็ก
+มหาตมะ
+มหาไถ่
+มหาทวีป
+มหาเทพ
+มหาเทพี
+มหาเทวี
+มหาธาตุ
+มหานรก
+มหานสะ
+มหานิกาย
+มหานิล
+มหาบพิตร
+มหาบริจาค
+มหาบัณฑิต
+มหาบุรุษ
+มหาพน
+มหาพรหม
+มหาภารต
+มหาภิเนษกรมณ์
+มหาภูต
+มหาเมฆ
+มหายาน
+มหายุค
+มหารณพ
+มหาราช
+มหาราชลีลา
+มหาฤกษ์
+มหาละลวย
+มหาละลาย
+มหาวงศ์
+มหาวรรค
+มหาวัต
+มหาวิทยาลัย
+มหาศักราช
+มหาศาล
+มหาศูนย์
+มหาเศรษฐี
+มหาสงกรานต์
+มหาสงคราม
+มหาสดมภ์
+มหาสดำ
+มหาสมุทร
+มหาสันนิบาต
+มหาสาวก
+มหาสาวิกา
+มหาสิทธิโชค
+มหาสีมา
+มหาเสวก
+มหาหงส์
+มหาหิงคุ์
+มหาอำนาจ
+มหาอำมาตย์
+มหาอุจ
+มหาอุด
+มหาอุปรากร
+มหิ
+มหิงส์
+มหิทธิ
+มหินท์
+มหิมา
+มหิศร
+มหิศวร
+มหิษ
+มหิษี
+มหึมา
+มหุดิฤกษ์
+มหุรดี
+มหุรติสัญญา
+มหู
+มเหนทร์
+มเหยงค์
+มเหศ
+มเหศวร
+มเหศักดิ์
+มเหสักข์
+มเหสิ
+มเหสี
+มเหาษธ
+มเหาฬาร
+มโหฆ
+มโหรทึก
+มโหรสพ
+มโหรี
+มโหษธ
+มโหฬาร
+มไหศวรรย์
+มอ
+มอง
+ม่อง
+มองโกลอยด์
+มองคร่อ
+ม่องเท่ง
+มอญ
+ม่อต้อ
+มอเตอร์
+มอน
+ม่อน
+มอนไข่
+มอบ
+ม่อย
+มอร์ฟีน
+มอระกู่
+มอลโทส
+ม่อลอกม่อแลก
+ม่อฮ่อม
+มะ
+มะกรูด
+มะกล่ำ
+มะกอก
+มะก่อง
+มะก่อตาหมู
+มะกะโรนี
+มะกา
+มะเกลือ
+มะเกี๋ยง
+มะข่วง
+มะขวิด
+มะขาม
+มะขามเทศ
+มะขามป้อมดิน
+มะเขือ
+มะเขือทวาย
+มะเขือเทศ
+มะเขือพวง
+มะเขือมอญ
+มะแข่น
+มะคะ
+มะคังแดง
+มะค่า
+มะคำไก่
+มะคำดีควาย
+มะงัน
+มะงั่ว
+มะงุมมะงาหลา
+มะซัก
+มะซาง
+มะซ่าน
+มะดะขี้นก
+มะดัน
+มะดา
+มะดูก
+มะเดหวี
+มะเดื่อ
+มะต้อง
+มะตะบะ
+มะตาด
+มะตาหะรี
+มะตี
+มะตึ่ง
+มะตื๋น
+มะตูม
+มะแตก
+มะนาว
+มะปราง
+มะปริง
+มะป่อง
+มะฝ่อ
+มะพร้าว
+มะพลับ
+มะพูด
+มะแพน
+มะแพร้ว
+มะเฟือง
+มะแฟน
+มะไฟ
+มะม่วง
+มะม่าว
+มะมี่
+มะมื่น
+มะมุด
+มะเมอ
+มะเมีย
+มะเมื่อย
+มะแม
+มะยง
+มะยม
+มะระ
+มะริด
+มะรืน
+มะรุม
+มะรุมมะตุ้ม
+มะเร็ง
+มะเรื่อง
+มะโรง
+มะละกอ
+มะลารอกัน
+มะลำ
+มะลิ
+มะลิน
+มะลิ่ม
+มะลิเลื้อย
+มะลิอ่อง
+มะลื่น
+มะลืมดำ
+มะลุลี
+มะวาร
+มะหลิ่ม
+มะหวด
+มะหะหมัด
+มะหัล
+มะหาด
+มะหิ่ง
+มะเหมื่อย
+มะอึก
+มะฮอกกานี
+มัก
+มักกะลีผล
+มักกะสัน
+มักขะ
+มั่กขั้ก
+มักขิกา
+มักขิกาชาติ
+มักฏกะ
+มักฏะ
+มัคคะ
+มัคคุเทศก์
+มัคสิระ
+มัฆวา
+มัฆวาน
+มั่ง
+มังกง
+มังกร
+มังกุ
+มังคละ
+มังค่า
+มังคุด
+มังตาน
+มังสะ
+มังสี
+มังหงัน
+มัจจะ
+มัจจุ
+มัจฉระ
+มัจฉริยะ
+มัจฉรี
+มัจฉะ
+มัจฉา
+มัชชะ
+มัชชาร
+มัญจก
+มัญจา
+มัญชิษฐ
+มัญชิษฐา
+มัญชีร
+มัญชุ
+มัญชุสา
+มัญชูสา
+มัญเชฏฐะ
+มัญเชฏฐิกา
+มัญเชียร
+มัฏฐะ
+มัณฑนา
+มัณฑุก
+มัด
+มัดหมี่
+มัดหมู
+มัดหวาย
+มัตตะ
+มัตตัย
+มัตตา
+มัตติกา
+มัตถก
+มัตถลุงค์
+มัตย
+มัตสยะ
+มัตสยา
+มัตสร
+มัตสรรย์
+มัทนะ
+มัทนียะ
+มัทยะ
+มัธยม
+มัธยมา
+มัธยันห์
+มัธยัสถ์
+มัน
+มั่น
+มันดี
+มันตา
+มันถะ
+มันทิร
+มันทิราลัย
+มันไส้
+มับ
+มับๆ
+มั้ม
+มัมมี่
+มัย
+มัลก
+มัลละ
+มัลลิกา
+มัว
+มั่ว
+มัศยา
+มัสดก
+มัสดุ
+มัสตาร์ด
+มัสตุ
+มัสมั่น
+มัสยิด
+มัสรู่
+มัสลิน
+มัสสุ
+มา
+ม้า
+มาก
+มาคสิระ
+มาฆะ
+ม้าง
+มางสะ
+มาณพ
+มาณวิกา
+มาด
+มาดา
+มาตงค์
+มาตร
+มาตรการ
+มาตรจอดรถ
+มาตรฐาน
+มาตรแม้น
+มาตรว่า
+มาตรา
+มาตฤ
+มาตฤกะ
+มาตสรรย์
+มาตังค
+มาตา
+มาตามหะ
+มาตามหัยกะ
+มาตามหัยกา
+มาตามหัยยิกา
+มาตามหา
+มาติก
+มาติกา
+มาตี
+มาตุ
+มาตุจฉา
+มาตุรงค์
+มาตุเรศ
+มาตุละ
+มาตุลา
+มาตุลานี
+มาตุลุงค์
+มาท
+มาทน
+ม้าทลายโรง
+มาธยมิกะ
+มาธุร
+มาธุสร
+มาธูร
+มาน
+ม่าน
+ม้าน
+มานพ
+ม่านลาย
+ม่านอินทนิล
+มานะ
+มานัต
+มานัส
+มานิต
+มานี
+มานุษ
+มาโนชญ์
+มาบ
+มาปก
+มาภา
+ม้าม
+มาย
+ม่าย
+ม้าย
+มายัง
+มายา
+มาร
+มารค
+มารคอหอย
+มารชิ
+มารชิต
+มารดร
+มารดา
+มาร์ดิกราส์
+มารผจญ
+มารยา
+มารยาท
+มารวิชัย
+มารวิชิต
+มารเวตาล
+มารศรี
+มารษา
+มารสังคม
+มารหัวขน
+มารหัวใจ
+มาระ
+มาราธอน
+ม้ารำ
+มาริ
+มาริต
+มาริษะ
+มาริสะ
+มารุต
+มารุมมาตุ้ม
+มาลย์
+มาลัย
+มาลา
+มาลาตี
+มาลาเรีย
+มาลำ
+มาลินี
+มาลี
+มาลุต
+มาวสะ
+มาวาร
+มาศ
+มาส
+มาสก
+ม้าสะบัดกีบ
+มาห์
+ม่าห์
+มาหิส
+ม่าเหมี่ยว
+มาฬก
+ม้าอ้วน
+มำเลือง
+มิ
+มิค
+มิ่ง
+มิงโค
+มิจฉา
+มิชชันนารี
+มิซซัง
+มิด
+มิดหมี
+มิตร
+มิติ
+มิถยา
+มิถุน
+มิทธะ
+มิทธี
+มินตรา
+มินตา
+มินหม้อ
+มิน่า
+มิน่าล่ะ
+มิน่าเล่า
+มิ้ม
+มิยา
+มิไย
+มิรันตี
+มิลลิกรัม
+มิลลิบาร์
+มิลักขะ
+มิลักขู
+มิลาต
+มิลิเมตร
+มิสกรี
+มิสซา
+มี
+มี่
+มีด
+มีดยับ
+มีเทน
+มีน
+มี่สั้ว
+มึก
+มึง
+มึงวาพาโวย
+มึน
+มืด
+มืน
+มื่น
+มือ
+มื้อ
+มุ
+มุก
+มุกดา
+มุกดาหาร
+มุกุร
+มุกุล
+มุข
+มุโขโลกนะ
+มุคคะ
+มุคธ์
+มุคร
+มุง
+มุ่ง
+มุ้ง
+มุงกระต่าย
+มุจฉา
+มุจน
+มุจลินท์
+มุญจนะ
+มุญช
+มุฐิ
+มุณฑ
+มุณฑก
+มุด
+มุต
+มุตตะ
+มุตตา
+มุตติ
+มุติ
+มุติงค์
+มุทค
+มุทคร
+มุททา
+มุทธชะ
+มุทธา
+มุทรา
+มุทริกา
+มุทะลุ
+มุทา
+มุทิกา
+มุทิงค์
+มุทิตา
+มุทิน
+มุทุ
+มุ่น
+มุนิ
+มุนี
+มุบ
+มุบๆ
+มุม
+มุ่ม
+มุ้ม
+มุ่ย
+มุรช
+มุรธา
+มุลสะ
+มุลุต
+มุลู
+มุสลิม
+มุสะ
+มุสา
+มุสิก
+มุหงิด
+มุหน่าย
+มุหุต
+มูก
+มูกมัน
+มูกหลวง
+มูซัง
+มูเซอ
+มูตร
+มู่ทู่
+มูน
+มูมมาม
+มูรดี
+มูรติ
+มูรธา
+มูล
+มูลา
+มูลิกากร
+มู่ลี่
+มู่เล่
+มูสิก
+เม
+เม็ก
+เมกะเฮิรตซ์
+เมขลา
+เมฆ
+เมฆฉาย
+เมฆพัด
+เม็ง
+เมงอะปา
+เม็ด
+เมตตา
+เมตไตรย
+เมตร
+เมตริก
+เมตริกตัน
+เมถุน
+เมท
+เมทนี
+เมทินี
+เมทิลแอลกอฮอล์
+เมโท
+เมธ
+เมธา
+เมธาวี
+เมธี
+เมน
+เม่น
+เม้น
+เมนเดวีเลียม
+เมนทอล
+เมนู
+เม้ม
+เมย์เดย์
+เมรัย
+เมรุ
+เมล์
+เมลก
+เมล็ด
+เมลือง
+เมลื่อย
+เมลื้อย
+เมษ
+เมห
+เมห์
+เมหน
+เมะ
+เมา
+เม่า
+เม้า
+เม้าเค้า
+เมารี
+เมาลิด
+เมาลี
+เมาห์
+เมาะ
+เมาะตาโยกัก
+เมิง
+เมิน
+เมิล
+เมีย
+เมียง
+เมี่ยง
+เมี้ยน
+เมี้ยวๆ
+เมือ
+เมื่อ
+เมื้อ
+เมือก
+เมือง
+เมือบ
+เมื่อย
+แม่
+แม้
+แมก
+แมกนีเซียม
+แมง
+แมงกานิน
+แมงกานีส
+แมงปากจอบ
+แมงไฟเดือนห้า
+แม่งม้าง
+แมงลัก
+แม่ตะงาว
+แม่ตาย
+แมน
+แม่น
+แม้น
+แม้นเขียน
+แมนดาริน
+แม่ม่านลองไน
+แมร
+แมลง
+แมลบ
+แมว
+แม้ว
+แมะ
+โม
+โม่
+โม้
+โมก
+โมกข์
+โมกโคก
+โมกษะ
+โมกุล
+โมฆะ
+โมฆียะ
+โมง
+โม่ง
+โมงครุ่ม
+โมเต็ล
+โมทนา
+โมน
+โมเนต์
+โมโนแซ็กคาไรด์
+โมไนย
+โมมูห์
+โมมูหะ
+โมเม
+โมรา
+โมรี
+โมเรศ
+โมลิบดีนัม
+โมลี
+โมเลกุล
+โมษ
+โมษก
+โมษณ
+โมเสส
+โม่ห์
+โมหะ
+โมโห
+ไมกา
+ไมครอน
+ไมโคกรัม
+ไมโครฟิล์ม
+ไมโครโฟน
+ไมโครมิเตอร์
+ไมโครเมตร
+ไมโครลิตร
+ไมโครเวฟ
+ไมตรี
+ไม่ไม้
+ไมยราบ
+ไมล์
+ย
+ยก
+ยกกระบัตร
+ยกน
+ยง
+ยงยุทธ์
+ยงโย่
+ยชุรเวท
+ยติ
+ยถา
+ย่น
+ยนต์
+ยนตร์
+ยม
+ยมก
+ยมโดย
+ยมนา
+ยมล
+ยรรยง
+ยล
+ยว
+ยวกสา
+ยวง
+ยวด
+ยวดยาน
+ยวน
+ยวบ
+ย้วย
+ยวรยาตร
+ยวา
+ยวาคุ
+ยศ
+ยโส
+ยอ
+ยอก
+ยอกย้อน
+ย็อกแย็ก
+ย็อกแย็กๆ
+ยอง
+ย่อง
+ย้อง
+ยองๆ
+ย่องเหง็ด
+ยอด
+ยอดจาก
+ยอน
+ย้อน
+ยอบ
+ยอม
+ย่อม
+ย้อม
+ย่อย
+ย้อย
+ย้อแย้
+ยะ
+ย่ะ
+ยะงันจะคับ
+ยะยอบ
+ยะยัน
+ยะยับ
+ยะยาน
+ยะย้าย
+ยะย้าว
+ยะแย้ง
+ยะหิทา
+ยัก
+ยักข์
+ยักขินี
+ยักเพรีย
+ยักยี่ยักยัน
+ยักยี่ยักหยา
+ยักแย่ยักยัน
+ยักษ์
+ยักษิณี
+ยักษี
+ยักหยาว
+ยัง
+ยั้ง
+ยังกาหลา
+ยั่งยืน
+ยังหยัง
+ยัชโญปวีต
+ยัชน
+ยัชมาน
+ยัญ
+ยัญญะ
+ยัญญังค์
+ยัฐิ
+ยัฐิมธุกา
+ยัด
+ยัติภังค์
+ยัน
+ยั่น
+ยันต์
+ยันตร์
+ยั่นตะนี
+ยันเย้า
+ยับ
+ยับๆ
+ยับยั้ง
+ยั่ว
+ยั้ว
+ยั้วเยี้ย
+ยัวรยาตร
+ยัษฏิ
+ยา
+ย่า
+ยาก
+ยาค
+ยาคุ
+ยาคู
+ยาง
+ย่าง
+ย่างทราย
+ยาจก
+ยาจน
+ยาจนก
+ยาจนา
+ยาไฉน
+ยาชก
+ยาด
+ยาดา
+ยาตนา
+ยาตร
+ยาตรา
+ยาน
+ย่าน
+ยานก
+ย่านกอบนาง
+ย่านทราย
+ย่านพาโหม
+ย่านมควาย
+ยานมาศ
+ย่านลิเภา
+ย่านาง
+ย่านางช้าง
+ยานี
+ยานุมาศ
+ยาบ
+ยาบๆ
+ย่าม
+ยามกาลิก
+ยามเกา
+ยามักการ
+ยามิก
+ยาย
+ย้าย
+ยายี
+ยาว
+ย้าว
+ยาวกาลิก
+ยาวชีวิก
+ยาวัส
+ยาหยัง
+ยาหยา
+ยาหยี
+ยำ
+ย่ำ
+ย้ำ
+ยำยาม
+ยำเยีย
+ย่ำแย่
+ย้ำเหยอ
+ยิก
+ยิกๆ
+ยิง
+ยิ่ง
+ยิงฟัน
+ยิฏฐะ
+ยิฐ
+ยิน
+ยิบ
+ยิบๆ
+ยิปซัม
+ยิปซี
+ยิ้ม
+ยิมนาสติก
+ยิหวา
+ยี
+ยี่
+ยี่ก่า
+ยี่เก
+ยี่เข่ง
+ยี่โถ
+ยีน
+ยี่โป้
+ยี่ภู่
+ยีราฟ
+ยี่สก
+ยี่สง
+ยี่สน
+ยี่สาน
+ยี่ส่าน
+ยี่สิบ
+ยี่สุ่น
+ยี่หระ
+ยี่หร่า
+ยี่ห้อ
+ยี่หุบ
+ยึกยือ
+ยืด
+ยืน
+ยื่น
+ยืม
+ยื้อ
+ยุ
+ยุกกระบัตร
+ยุกดิ
+ยุกต์
+ยุกติ
+ยุค
+ยุคนธร
+ยุคล
+ยุคลบาท
+ยุคันต์
+ยุคันธร
+ยุคุนธร
+ยุง
+ยุ่ง
+ยุ้ง
+ยุงกวาด
+ยุงปัด
+ยุด
+ยุต
+ยุติ
+ยุทธ์
+ยุทธนา
+ยุบ
+ยุ่บยั่บ
+ยุบยิบ
+ยุบล
+ยุพดี
+ยุพา
+ยุพาน
+ยุพาพาล
+ยุพาพิน
+ยุ่มย่าม
+ยุ่ย
+ยุ้ย
+ยุรบาตร
+ยุรยาตร
+ยุวดี
+ยุวา
+ยุวาน
+ยุหบาตร
+ยู
+ยู่
+ยูคาลิปตัส
+ยูง
+ยูโด
+ยูถะ
+ยูถิกา
+ยูปะ
+ยูรยาตร
+ยูริก
+ยูเรนัส
+ยูเรเนียม
+ยูโรเพียม
+ยูษะ
+ยู่อี่
+เย้
+เยๆ
+เยง
+เยซู
+เย็ด
+เย็น
+เย็นตาโฟ
+เย็นเตาโฟ
+เย็บ
+เยภุยยะ
+เย้ย
+เยอ
+เย่อ
+เยอรมัน
+เยอว
+เย่อหยิ่ง
+เยอะ
+เยา
+เย้า
+เยาว์
+เยาวพา
+เยาวพาณี
+เยาวพาน
+เยิง
+เยิน
+เยิ่น
+เยินยอ
+เยิบๆ
+เยิบยาบ
+เยิ้ม
+เยีย
+เยี่ยง
+เยียงผา
+เยี่ยงอย่าง
+เยียดยัด
+เยียน
+เยียบ
+เยี่ยม
+เยี่ยมวิมาน
+เยียรบับ
+เยียรยง
+เยียว
+เยี่ยว
+เยี่ยวงีว
+เยียวยง
+เยียวยา
+เยือ
+เยื่อ
+เยื้อ
+เยือก
+เยือง
+เยื่อง
+เยื้อง
+เยือน
+เยื้อน
+แย่
+แย้
+แยก
+แยง
+แย่ง
+แย้ง
+แยงแย่
+แยงแย้
+แยบ
+แย็บ
+แยม
+แย้ม
+แยแส
+แยะ
+โย
+โย้
+โยก
+โยกตร์
+โยคเกณฑ์
+โยคยะ
+โยคะ
+โยคิน
+โยคี
+โยง
+โย่งๆ
+โยงโย่
+โยชก
+โยชน์
+โยชนา
+โยด
+โยต
+โยถิกะ
+โยทะกา
+โยธา
+โยน
+โยนก
+โยนิโส
+โยนิโสมนสิการ
+โยนี
+โยพนะ
+โยม
+โยโส
+ใย
+ไย
+ไย่
+ไยดี
+ไยไพ
+ไยไย
+ไย่ไย่
+ร
+รก
+รกช้าง
+รกฟ้า
+รง
+รงกุ์
+รงค์
+รงรอง
+รจนา
+รจเรข
+รจเลข
+รจิต
+รชกะ
+รชตะ
+รชนิ
+รชนี
+รชนีย์
+รชะ
+รณ
+รด
+รดี
+รตนะ
+รตะ
+รติ
+รถ
+รถปุงคพ
+รถปุงคว
+รถยา
+รถานึก
+รเถสภะ
+รท
+รทนะ
+รน
+ร่น
+ร้น
+รนด
+รบ
+รบส
+รบาญ
+รพ
+รพา
+รพิ
+รพี
+รม
+รมณีย์
+รมย์
+รมเยศ
+รยะ
+รวก
+รวง
+ร่วง
+รวด
+รวน
+ร่วน
+รวบ
+รวม
+ร่วม
+รวย
+รวยๆ
+รวะ
+รวิ
+รวี
+รศนา
+รส
+รสก
+รสนา
+รสสุคนธ์
+รสายนเวท
+รสิก
+รหัท
+รหัส
+รหัสย์
+รหิต
+รโห
+รอ
+ร่อ
+รอก
+รอง
+ร่อง
+ร้อง
+รองเง็ง
+ร่องแร่ง
+รอด
+รอน
+ร่อน
+ร้อน
+ร่อนทอง
+รอบ
+รอม
+รอมชอม
+รอมร่อ
+รอย
+ร่อย
+ร้อย
+ร้อยรู
+ร่อแร่
+ระ
+ระกะ
+ระกา
+ระกำ
+ระเกะระกะ
+ระคน
+ระคาง
+ระคาย
+ระเค็ดระคาย
+ระแคะ
+ระฆัง
+ระงม
+ระงมไพร
+ระงับ
+ระงับพิษ
+ระงี่
+ระแง้
+ระโงกหิน
+ระชวย
+ระดม
+ระดะ
+ระดับ
+ระดา
+ระด่าว
+ระดู
+ระเด่น
+ระเดียง
+ระแด
+ระตู
+ระทก
+ระทด
+ระทม
+ระทวย
+ระทอด
+ระทา
+ระทึก
+ระทึง
+ระแทะ
+ระนัม
+ระนาด
+ระนาบ
+ระนาม
+ระนาว
+ระเนน
+ระเนนระนาด
+ระเนระนาด
+ระเนียด
+ระแนง
+ระแนะ
+ระบบ
+ระบม
+ระบอบ
+ระบัด
+ระบับ
+ระบาญ
+ระบาด
+ระบานี
+ระบานี้
+ระบาย
+ระบำ
+ระบิ
+ระบิล
+ระบือ
+ระบุ
+ระบู
+ระเบง
+ระเบ็ง
+ระเบิด
+ระเบียง
+ระเบียน
+ระเบียบ
+ระแบบ
+ระใบ
+ระมัดระวัง
+ระมา
+ระมาด
+ระเมียร
+ระย่อ
+ระย่อม
+ระยะ
+ระยัง
+ระยั้ง
+ระยัด
+ระยับ
+ระย้า
+ระยาน
+ระยาบ
+ระยามระยับ
+ระยำ
+ระยิบระยับ
+ระโยง
+ระรวย
+ระรอง
+ระร่อน
+ระรัว
+ระราน
+ระร่าย
+ระราว
+ระริก
+ระรี่
+ระรึง
+ระรื่น
+ระรื้น
+ระเร
+ระเร่
+ระเร้ง
+ระเร็ว
+ระเริง
+ระเรียง
+ระเรียม
+ระเรื่อย
+ระแร่
+ระแรง
+ระลง
+ระลวง
+ระลอก
+ระลัด
+ระลึก
+ระลุก
+ระลุง
+ระเลิง
+ระเลียด
+ระวัง
+ระวังไพร
+ระวังวัน
+ระวาง
+ระวาดระไว
+ระวาม
+ระวาย
+ระวิง
+ระแวง
+ระแวดระวัง
+ระไว
+ระสาย
+ระส่ำระสาย
+ระสี
+ระเสิดระสัง
+ระหกระเหิน
+ระหง
+ระหวย
+ระหว่าง
+ระหองระแหง
+ระหอบ
+ระหัด
+ระหาย
+ระหุย
+ระเห็จ
+ระเหย
+ระเหระหน
+ระเหหน
+ระเหหัน
+ระเหิด
+ระเหินระหก
+ระแหก
+ระแหง
+ระโหย
+ระอมระอา
+ระอา
+ระอิดระอา
+ระอึก
+ระอุ
+ระแอน
+รัก
+รักข์
+รักขสะ
+รักขา
+รักขิต
+รักดป
+รักดะ
+รักตะ
+รักบี้
+รักเร่
+รักแร้
+รักษ์
+รักษา
+รัง
+รั้ง
+รังแก
+รังค์
+รังควาน
+รังแค
+รังนาน
+รังรอง
+รังวัด
+รังสิ
+รังสิมันตุ์
+รังสิมา
+รังสี
+รังหยาว
+รัจฉา
+รัช
+รัชกะ
+รัชชุ
+รัชฎาภิเษก
+รัชนะ
+รัชนี
+รัญจวน
+รัฏฐาภิปาลโนบาย
+รัฐ
+รัด
+รัต
+รัตคน
+รัตตัญญู
+รัตติ
+รัตน์
+รัตนะ
+รัตมา
+รัถ
+รัถยา
+รัทเทอร์ฟอร์เดียม
+รัน
+รั้น
+รันชนรันแชง
+รันทด
+รันทวย
+รันทำ
+รันแทะ
+รันธะ
+รับ
+รัมภา
+รัมมี่
+รัมย์
+รัย
+รัว
+รั่ว
+รั้ว
+รัศมิมัติ
+รัศมิมาน
+รัศมี
+รัษฎากร
+รัสสะ
+รา
+ร่า
+ร้า
+ราก
+รากษส
+รากโษส
+รากสาด
+ราคะ
+ราคา
+ราคิน
+ราคี
+ราง
+ร่าง
+ร้าง
+รางจืด
+รางชาง
+รางดำ
+รางแดง
+รางนาน
+รางวัล
+ราช
+ราชญี
+ราชดัด
+ราชพฤกษ์
+ราชมาณพ
+ราชย์
+ราชะ
+ราชัน
+ราชันย์
+ราชัย
+ราชา
+ราชายตนะ
+ราชาวดี
+ราชิ
+ราชินี
+ราชี
+ราเชน
+ราเชนทรยาน
+ราญ
+ราญรอน
+ราด
+ราต
+ราตร
+ราตรี
+ราตรีประดับดาว
+ราโท
+ราธา
+ราน
+ร่าน
+ร้าน
+ราบ
+ราพณ์
+ราม
+รามเกียรติ์
+รามสูร
+รามัญ
+รามา
+ราย
+ร่าย
+ร้าย
+ร่ายรัง
+ราว
+ร้าว
+ราวี
+ราศี
+ราษฎร
+ราษฎร์
+ราษตรี
+ราษราตริน
+ราษราตรี
+ราสี
+ราหุ
+ร่าหุ์
+ราหู
+รำ
+ร่ำ
+รำคาญ
+รำงับ
+รำจวน
+รำซุย
+รำบาญ
+รำพัน
+รำพาย
+รำพึง
+รำเพย
+รำไพ
+รำมะเข
+รำมะนา
+รำมะนาด
+รำมะร่อ
+รำยวน
+รำย้อย
+รำแย้
+ร่ำรวย
+รำราญ
+รำรำ
+รำเร
+รำไร
+รำลึก
+รำหัด
+รำหัส
+ริ
+ริก
+ริกๆ
+ริดสีดวง
+ริน
+ริ้น
+รินๆ
+ริบ
+ริบบิ้น
+ริบรี่
+ริบหรี่
+ริปุ
+ริปู
+ริม
+ริ้ว
+ริษยา
+รี
+รี่
+รี้
+รีๆขวางๆ
+รีๆรอๆ
+รีด
+รีดักชัน
+รีต
+รีเนียม
+รีบ
+รีม
+รีรอ
+รี้ริก
+รึกต์
+รึง
+รึ้ง
+รื่น
+รื้น
+รื้อ
+รุ
+รุก
+รุกข์
+รุกขกะ
+รุกขา
+รุกรุย
+รุกษะ
+รุ่ง
+รุ้ง
+รุงรัง
+รุจ
+รุจน
+รุจา
+รุจิ
+รุจิระ
+รุจิรา
+รุจี
+รุชา
+รุด
+รุต
+รุทธ์
+รุทร
+รุธิร
+รุเธียร
+รุน
+รุ่น
+รุบรู่
+รุบาการ
+รุม
+รุ่ม
+รุ่มร่าม
+รุย
+รุ่ย
+รุรุ
+รุษฏ์
+รุหะ
+รุหาญ
+รู
+รู่
+รู้
+รูจี
+รูด
+รูทีเนียม
+รู้นอน
+รูบิเดียม
+รูป
+รูปิยะ
+รูปี
+รูเล็ตต์
+รูหา
+เร่
+เรข
+เรขา
+เรขาคณิต
+เร็ง
+เร่ง
+เร้ง
+เรณุ
+เรณุก
+เรณู
+เรดอน
+เรดาร์
+เรเดียม
+เร้น
+เรยอง
+เรรวน
+เรไร
+เร็ว
+เร่ว
+เรวดี
+เรอ
+เร่อ
+เรา
+เร่า
+เร้า
+เร่าๆ
+เราะ
+เริง
+เริด
+เริม
+เริ่ม
+เริ้ม
+เริศร้าง
+เรี่ย
+เรี้ยๆ
+เรียก
+เรียง
+เรียงๆ
+เรียด
+เรียน
+เรียบ
+เรียม
+เรี่ยม
+เรียว
+เรี่ยว
+เรี้ยวรก
+เรือ
+เรื่อ
+เรื้อ
+เรือก
+เรือกสวน
+เรือง
+เรื่อง
+เรื้อง
+เรืองรอง
+เรือด
+เรือน
+เรื้อน
+เรื้อย
+แร
+แร่
+แรก
+แร็กเกต
+แรง
+แร่ง
+แร้ง
+แร่งริ้ว
+แร่งไหม
+แรด
+แร้นแค้น
+แรม
+แร้ว
+แระ
+โร
+โร่
+โรค
+โรง
+โรจ
+โรจน์
+โรเดียม
+โรตี
+โรท
+โรทนะ
+โรธ
+โรธร
+โรเนียว
+โรปนะ
+โรม
+โรมัญจ
+โรมัน
+โรมันคาทอลิก
+โรเมอร์
+โรย
+โรเร
+โรษ
+โรษณะ
+โรหิณี
+โรหิต
+ไร
+ไร่
+ไร้
+ไรฟัน
+ไรย์
+ฤ
+ฤกษ์
+ฤกษณะ
+ฤคเวท
+ฤชา
+ฤชุ
+ฤณ
+ฤดี
+ฤดียา
+ฤดู
+ฤต
+ฤติยา
+ฤตุ
+ฤตุสนาน
+ฤทธา
+ฤทธิ์
+ฤทัย
+ฤษภ
+ฤษยา
+ฤษี
+ฤๅ
+ฤๅชุ
+ฤๅดี
+ฤๅทัย
+ฤๅษี
+ฤๅสาย
+ล
+ลก
+ลการ
+ลกุจ
+ลคุฑ
+ลคุฬ
+ลฆุ
+ลง
+ล่ง
+ลงกา
+ล้งเล้ง
+ลด
+ลดา
+ลน
+ล่น
+ล้น
+ลบ
+ลบม
+ลบอง
+ลปก
+ลปน
+ลพ
+ลพุช
+ลม
+ล่ม
+ล้ม
+ลมาด
+ลรรลุง
+ลลนา
+ลลาฏ
+ลลิต
+ลวก
+ลวง
+ล่วง
+ล้วง
+ลวงค์
+ลวงเล้า
+ลวณะ
+ลวด
+ล้วน
+ลวนลาม
+ลวนะ
+ล่วม
+ลวะ
+ลวิตร
+ลหุ
+ลหุกะ
+ล่อ
+ล้อ
+ลอก
+ล็อกเกต
+ลอกแลก
+ลอการิทึม
+ลอง
+ล่อง
+ลองกอง
+ลองจิจูด
+ลองไน
+ลอด
+ลอตเตอรี่
+ลอน
+ล่อน
+ลอบ
+ลอม
+ล้อม
+ลอมชอม
+ล้อมปรวด
+ลอมพอก
+ลอย
+ล่อย
+ล่อแล่
+ลอว์เรนเซียม
+ลออ
+ละ
+ล่ะ
+ละกล
+ละกูมะนิส
+ละขัดละขืน
+ละคร
+ละคิ
+ละคึก
+ละงาด
+ละงิด
+ละติจูด
+ละบมละบอง
+ละบัด
+ละบือ
+ละเบ็ง
+ละโบม
+ละม่อม
+ละมั่ง
+ละมา
+ละมาน
+ละม้าย
+ละมุ
+ละมุด
+ละมุน
+ละเม็งละคร
+ละเม็ด
+ละเมอ
+ละเมาะ
+ละเมิด
+ละเมียด
+ละเมียบ
+ละแมะ
+ละโมก
+ละโมบ
+ละไม
+ละรี
+ละลนละลาน
+ละลมละลาย
+ละลวย
+ละลอก
+ละลอบละเล้า
+ละลัง
+ละลัด
+ละล้า
+ละลาน
+ละลาบละล้วง
+ละลาย
+ละล้าว
+ละล่ำละลัก
+ละลิบ
+ละลุง
+ละลุม
+ละเลง
+ละเล้า
+ละเลาะ
+ละเลาะละลอง
+ละเลิง
+ละเลียด
+ละเลียบ
+ละเลือก
+ละไล้
+ละวล
+ละว้อ
+ละว้า
+ละวาด
+ละเวง
+ละแวก
+ละโว้
+ละหมาด
+ละหมาดญานาซะฮ์
+ละหลัด
+ละห้อย
+ละหาน
+ละหุ่ง
+ละเหย
+ละเหี่ย
+ละออง
+ละอองมั่ง
+ละอาย
+ละเอียด
+ละแอน
+ลัก
+ลักขณะ
+ลักขณา
+ลักขะ
+ลักจั่น
+ลักปิดลักเปิด
+ลักษณะ
+ลักษมณ์
+ลักษมาณา
+ลักษมี
+ลักษะ
+ลัคคะ
+ลัคน์
+ลัคนา
+ลัง
+ลั่ง
+ลังกา
+ลังคิ
+ลังคี
+ลังถึง
+ลังลอง
+ลังเล
+ลังสาด
+ลัชชา
+ลัชชี
+ลัญจ์
+ลัญจกร
+ลัญฉ
+ลัญฉกร
+ลัญฉน์
+ลัฐิ
+ลัฐิกา
+ลัด
+ลัดา
+ลัทธ์
+ลัทธิ
+ลัน
+ลั่น
+ลันเต
+ลันเตา
+ลันไต
+ลั่นถัน
+ลั่นทม
+ลันทวย
+ลันโทม
+ลับ
+ลัพธ์
+ลัพธิ
+ลัภ
+ลัภนะ
+ลัภย์
+ลัมพ์
+ลัย
+ลัวะ
+ลา
+ล่า
+ล้า
+ลาก
+ลากษา
+ลาขา
+ลาง
+ล่าง
+ล้าง
+ลางคัล
+ลางงิด
+ลางลิง
+ลางสาด
+ลางาด
+ล้างาด
+ลาเง็ด
+ลาช
+ลาชา
+ลาญ
+ลาด
+ลาดเลา
+ล้าต้า
+ล่าเตียง
+ล้าเตียง
+ลาน
+ล่าน
+ลาบ
+ลาป
+ลาพอน
+ลาพุ
+ลาเพ
+ลาเพา
+ลาภ
+ลาม
+ล่าม
+ลามะ
+ลาย
+ล้าย
+ลาลนะ
+ลาลส
+ลาลา
+ลาว
+ลาวก
+ลาวัณย์
+ลาวา
+ลาสนะ
+ลำ
+ล่ำ
+ล้ำ
+ลำเข็ญ
+ลำแข
+ลำเค็ญ
+ลำเคือง
+ลำงาด
+ลำเจียก
+ลำดวน
+ลำดับ
+ลำนัก
+ลำเนา
+ลำบอง
+ลำบาก
+ลำบุ
+ลำปำ
+ลำพวน
+ลำพอง
+ลำพัง
+ลำพู
+ลำเพ็ญ
+ลำเพา
+ลำแพง
+ลำแพน
+ลำโพง
+ลำไพ่
+ลำภุขัน
+ลำมะลอก
+ลำมาด
+ลำเมาะ
+ลำเมียบ
+ลำยอง
+ลำยา
+ลำไย
+ลำลอง
+ล่ำลา
+ลำลาบ
+ลำลำ
+ลำลึก
+ลำเลาะ
+ลำเลิก
+ลำเลียง
+ลำเลียบ
+ลำเวียง
+ลำเวียน
+ลำอุด
+ลำเอียก
+ลำโอง
+ลิ
+ลิกขา
+ลิกไนต์
+ลิกษา
+ลิกุจ
+ลิเก
+ลิขนะ
+ลิขสิทธ์
+ลิขิต
+ลิง
+ลิงค์
+ลิงโลด
+ลิด
+ลิต
+ลิตมัส
+ลิตร
+ลิเทียม
+ลิ่น
+ลิ้น
+ลินโกรย
+ลินจง
+ลิ้นจี่
+ลิ่นต้น
+ลิ่นทะเล
+ลิ่นฮื้อ
+ลินิน
+ลิบ
+ลิปดา
+ลิปต์
+ลิปสติก
+ลิปิ
+ลิฟต์
+ลิเภา
+ลิ่ม
+ลิ้ม
+ลิมป์
+ลิมปนะ
+ลิลิต
+ลิว
+ลิ่ว
+ลิสง
+ลี
+ลี่
+ลี้
+ลีซอ
+ลีบ
+ลีลา
+ลีลาศ
+ลีฬหา
+ลึก
+ลึงค์
+ลึงค์นายพราน
+ลืด
+ลื่น
+ลื้น
+ลืบ
+ลืม
+ลือ
+ลื่อ
+ลื้อ
+ลุ
+ลุก
+ลุกลน
+ลุกลี้ลุกลน
+ลุง
+ลุ้ง
+ลุต
+ลุท
+ลุทกะ
+ลุทธ์
+ลุ่น
+ลุปต์
+ลุพธ์
+ลุพธกะ
+ลุ่ม
+ลุ่มเนื้อ
+ลุมป์
+ลุมพี
+ลุมพู
+ลุมหมา
+ลุย
+ลุ่ย
+ลุ้ย
+ลุลาย
+ลุสา
+ลู่
+ลูก
+ลูกเขยตายแม่ยายชักปรก
+ลูกเคล้า
+ลูกประคำผี
+ลูกปืนใหญ่
+ลูกเอ็น
+ลูกเอ็ล
+ลูขะ
+ลูตา
+ลูติกา
+ลูทีเชียม
+ลูนะ
+ลูบ
+ลู่หลี่
+เลก
+เล็ก
+เล็กดา
+เล็กฮอร์น
+เลข
+เลขกะ
+เลขนะ
+เลขยะ
+เลขา
+เล็ง
+เล้ง
+เล่งฮื้อ
+เลเซอร์
+เลฑฑุ
+เลณ
+เลณฑุ
+เล็ด
+เลต
+เลน
+เล็น
+เล่น
+เลนจง
+เลนส์
+เลนหะรี
+เล็บ
+เลบง
+เลปกร
+เลปน์
+เลเป
+เลเพ
+เล็ม
+เล่ม
+เลย
+เลว
+เลวง
+เลวูโลส
+เลศ
+เลษฏุ
+เลสเบียน
+เลห
+เล่ห์
+เลหยะ
+เลหลัง
+เลหลา
+เลหะ
+เลอ
+เละ
+เลา
+เล่า
+เล้า
+เลากัย
+เล่าเต๊ง
+เล้าโลม
+เลาะ
+เลิก
+เลิ้ง
+เลินเล่อ
+เลิศ
+เลีย
+เลียง
+เลี่ยง
+เลี้ยง
+เลียงขาว
+เลียงผา
+เลียงฝ้าย
+เลียงมัน
+เลียน
+เลี่ยน
+เลียนไฟ
+เลียบ
+เลียม
+เลี่ยม
+เลียว
+เลี้ยว
+เลือก
+เลือง
+เลื่อง
+เลือด
+เลือน
+เลื่อน
+เลื่อม
+เลื่อมใส
+เลื่อย
+เลื้อย
+เลื่อยล้า
+แล
+แล่
+แล้
+แลก
+แล็กโทส
+แลง
+แล่ง
+แล้ง
+แลน
+แล่น
+แลนทานัม
+แลบ
+แล้ว
+และ
+โล่
+โล้
+โลก
+โลกคติ
+โลกจักษุ
+โลกชนนี
+โลกเชษฐ์
+โลกธรรม
+โลกธาดา
+โลกธาตุ
+โลกนาถ
+โลกบถ
+โลกบาล
+โลกบิดร
+โลกประทีป
+โลกมารดา
+โลกย์
+โลกยาตรา
+โลกวัชชะ
+โลกวิทู
+โลกศัพท์
+โลกสถิติ
+โลกอุดร
+โลกัตถจริยา
+โลกันตร์
+โลกา
+โลกิยะ
+โลกีย์
+โลกียชน
+โลกียวัตร
+โลกุตร
+โลกุตรธรรม
+โลกุตรภูมิ
+โลเกศ
+โลง
+โล่ง
+โล้ง
+โล้งโต้ง
+โลจนะ
+โลณะ
+โลด
+โลดทะนง
+โล่ติ๊น
+โลโต
+โลท
+โลน
+โล้น
+โลปะ
+โลภ
+โลม
+โลมะ
+โลมา
+โลล
+โลลุป
+โลเล
+โล้เล้
+โลโล
+โลโล้
+โลหะ
+โลหัช
+โลหิต
+โละ
+ไล่
+ไล้
+ไลย
+ไลลา
+ไลเลย
+ไลไล้
+ว
+วก
+วกะ
+วกุล
+วง
+วงก์
+วงกต
+วงศ์
+วงศา
+วงษ์
+วจนะ
+วจะ
+วจา
+วจี
+วชะ
+วชิระ
+วฏะ
+วฏาการ
+วฏุมะ
+วณะ
+วณิช
+วณิชชา
+วณิชย์
+วณิชยา
+วณิพก
+วดรนู
+วดี
+วตะ
+วทนะ
+วทะ
+วทัญญุตา
+วทัญญู
+วธุกา
+วธู
+วน
+วนจร
+วนัปติ
+วนัส
+วนา
+วนานต์
+วนิดา
+วนิพก
+วเนจร
+วโนทยาน
+วปนะ
+วปุ
+วยัคฆ์
+วยัญชนะ
+วยัมหะ
+วยัสย์
+วยากรณ์
+วยาฆร์
+วยาธิ
+วยาม
+วยายาม
+วรกัญญา
+วรกาย
+วรงค์
+วรณะ
+วรท
+วรทาน
+วรนารี
+วรปักษ์
+วรพนิต
+วรมหาวิหาร
+วรยิตา
+วรรค
+วรรคย์
+วรรช
+วรรชย์
+วรรณนา
+วรรณพฤติ
+วรรณะ
+วรรณึก
+วรรธก
+วรรธนะ
+วรรษ
+วรรษา
+วรรูป
+วรวรรณินี
+วรวิหาร
+วรัญญู
+วรากะ
+วรางคณา
+วราภรณ์
+วรายุทธ
+วราโรหาร
+วราห์
+วราหร
+วราหะ
+วรุณ
+วรุตดม
+วรุตมะ
+วรูถ
+วโรดม
+วโรตมะ
+วฤก
+วฤษภ
+วฤษล
+วลัช
+วลัญช์
+วลัณชน์
+วลัย
+วลาหก
+วลี
+วศค
+วศะ
+วศิน
+วสนะ
+วสภะ
+วสละ
+วสลี
+วสวัดดี
+วสวัตตี
+วสะ
+วสันต์
+วสันตดิลก
+วสา
+วสี
+วสุ
+วสุธา
+วสุนธรา
+วสุมดี
+วหะ
+วหา
+วอ
+วอก
+วอกแวก
+ว่อง
+ว่องไว
+วอด
+วอน
+ว่อน
+วอลเลย์บอล
+วอแว
+วะ
+วัก
+วักกะ
+วัค
+วัคคิย
+วัคคีย์
+วัคคุ
+วัคซีน
+วัง
+วังก์
+วังชา
+วังเวง
+วังศะ
+วังสะ
+วัจจะ
+วัจฉ์
+วัจฉก
+วัจฉละ
+วัจน์
+วัช
+วัชชะ
+วัชฌ์
+วัชพืช
+วัชระ
+วัญจก
+วัญจนะ
+วัญฌ์
+วัฏกะ
+วัฏฏะ
+วัฏฏิ
+วัฒกะ
+วัฒกี
+วัฒนะ
+วัฒนา
+วัณ
+วัณฏ์
+วัณณะ
+วัณนา
+วัด
+วัต
+วัตต์
+วัตตา
+วัตถ์
+วัตถุ
+วัตนะ
+วัตร
+วัตรปฏิบัติ
+วัตสดร
+วัตสะ
+วัติ
+วัทน์
+วัน
+วันต์
+วันทนา
+วันทนีย์
+วันทา
+วันทิ
+วันนิพก
+วันเวย์
+วับ
+วับๆหวำๆ
+วัปปะ
+วัมมิก
+วัย
+วัลก์
+วัลคุ
+วัลย์
+วัลลภ
+วัลลี
+วัว
+วัสดุ
+วัสตร์
+วัสน์
+วัสนะ
+วัสสะ
+วา
+ว่า
+ว้า
+วาก
+ว้ากเพ้ย
+วากยะ
+วากรา
+วากะ
+วาง
+ว่าง
+ว้าง
+วาจก
+วาจา
+วาจาไปยะ
+วาจาล
+วาชเปยะ
+วาฏกะ
+วาณิช
+วาณิชกะ
+วาณิชย์
+วาณี
+วาด
+วาตะ
+วาท
+วาทก
+วาทน
+วาทย์
+วาทิต
+วาทิน
+วาที
+วาน
+ว่าน
+ว่านเครือ
+วานร
+วาเนเดียม
+วาบ
+วาปะ
+วาปิตะ
+วาปี
+วาม
+วามะ
+วาโมร
+วาย
+ว่าย
+ว้าย
+วายสะ
+วายะ
+วายัง
+วายามะ
+วายุ
+วายุกูล
+วายุบุตรยาตรา
+วาโย
+วาร
+วารวาริ
+วาระ
+วาริ
+วารี
+วารุณ
+วารุณี
+วาล
+วาล์ว
+วาลิกา
+วาลุกา
+วาว
+ว่าว
+ว้าว่อน
+ว้าวุ่น
+วาสนะ
+วาสนา
+วาสพ
+วาสะ
+วาสิน
+วาสี
+วาสุกรี
+วาสุกี
+วาสุเทพ
+วาหนะ
+วาหะ
+วาหินี
+วาฬ
+วิ
+วิก
+วิกขัมภ์
+วิกขัมภนะ
+วิกเขป
+วิกจะ
+วิกรม
+วิกรัย
+วิกรานต์
+วิกฤต
+วิกฤติ
+วิกล
+วิกลจริต
+วิกสิต
+วิกัต
+วิกัติ
+วิกัป
+วิกัย
+วิการ
+วิกาล
+วิคตปัจจัย
+วิคหะ
+วิเคราะห์
+วิฆนะ
+วิฆเนศ
+วิฆเนศวร
+วิฆาต
+วิฆาส
+วิง
+วิ่ง
+วิงวอน
+วิจฉิกะ
+วิจยุต
+วิจรณะ
+วิจล
+วิจักขณ์
+วิจักษณ์
+วิจัย
+วิจาร
+วิจารณ์
+วิจิ
+วิจิกิจฉา
+วิจิต
+วิจิตร
+วิจิน
+วิจุณ
+วิจุรณ
+วิชชา
+วิชชุ
+วิชชุดา
+วิชชุตา
+วิชชุลดา
+วิชญะ
+วิชน
+วิชนี
+วิชัย
+วิชา
+วิชานนะ
+วิชิต
+วิเชียร
+วิญญัตติ
+วิญญาณ
+วิญญาณกทรัพย์
+วิญญู
+วิฑูรย์
+วิณหุ
+วิด
+วิดีสดี
+วิตก
+วิตถาร
+วิตามิน
+วิถี
+วิทธะ
+วิทธังสะ
+วิทยา
+วิทยุ
+วิทยุต
+วิทรุมะ
+วิทวัส
+วิทัตถิ
+วิทารณ์
+วิทาลน์
+วิทิต
+วิทู
+วิทูร
+วิเทวษ
+วิเทศ
+วิธ
+วิธวา
+วิธา
+วิธาน
+วิธี
+วิธุระ
+วิธู
+วิธูปนะ
+วิน
+วิ่น
+วินท์
+วินันตู
+วินัย
+วินาที
+วินายก
+วินาศ
+วินิจ
+วินิจฉัย
+วินิต
+วินิบาต
+วินิปาติก
+วินีต
+วิเนต
+วิโนทก
+วิบัติ
+วิบาก
+วิบุล
+วิบูล
+วิปการ
+วิปฏิสาร
+วิปโยค
+วิประการ
+วิประติสาร
+วิประโยค
+วิประลาป
+วิประวาส
+วิปริณามทุกข์
+วิปริต
+วิปลาป
+วิปลาส
+วิปวาส
+วิปักษ์
+วิปัสสก
+วิปัสสนา
+วิปากขันธ์
+วิพากษ์
+วิพากษ์วิจารณ์
+วิพิธทัศนา
+วิพุธ
+วิภังค์
+วิภัช
+วิภัตติ
+วิภา
+วิภาค
+วิภาช
+วิภาดา
+วิภาวี
+วิภาษ
+วิภาส
+วิภู
+วิภูษณะ
+วิภูษา
+วิภูษิต
+วิเภตก์
+วิเภทก์
+วิมน
+วิมล
+วิมลัก
+วิมลาก
+วิมังสา
+วิมัติ
+วิมาน
+วิมานิกเปรต
+วิมุข
+วิมุต
+วิมุตติ
+วิเมลือง
+วิโมกข์
+วิโมกษวิถี
+วิเยน
+วิโยค
+วิรงรอง
+วิรตะ
+วิรมณะ
+วิรวะ
+วิระ
+วิรังรอง
+วิรัช
+วิรัต
+วิรัติ
+วิราคะ
+วิราม
+วิราวะ
+วิรุธ
+วิรุฬห์
+วิรุฬหก
+วิรูป
+วิรูปักษ์
+วิเรก
+วิเรนทร์
+วิโรค
+วิโรจ
+วิโรจน์
+วิโรฒ
+วิโรธ
+วิโรธน์
+วิลันดา
+วิลัย
+วิลาด
+วิลาป
+วิลาวัณย์
+วิลาศ
+วิลาส
+วิลาสินี
+วิลิปดา
+วิลิศมาหรา
+วิเลป
+วิเลปนะ
+วิโลก
+วิโลกนะ
+วิโลจนะ
+วิโลม
+วิไล
+วิว
+วิวรณ์
+วิวรรธน์
+วิวระ
+วิวัฏ
+วิวัฒน์
+วิวัน
+วิวาท
+วิวาห์
+วิวาหะ
+วิวิจ
+วิวิต
+วิวิธ
+วิเวก
+วิศรุต
+วิศัท
+วิศัลย์
+วิศาขะ
+วิศาขา
+วิศางค์
+วิศาล
+วิศิษฏ์
+วิศุทธ์
+วิศุทธิ์
+วิเศษ
+วิเศษณ์
+วิษณุ
+วิษณุกรรม
+วิษธร
+วิษักต์
+วิษัย
+วิษาณ
+วิษุวัต
+วิสกี้
+วิสรรชนีย์
+วิสฤต
+วิสสุกรรม
+วิสังโยค
+วิสัชนา
+วิสัญญี
+วิสัย
+วิสาขะ
+วิสาขา
+วิสามัญ
+วิสาร
+วิสารท
+วิสาล
+วิสาสะ
+วิสาหกิจ
+วิสิฐ
+วิสุงคามสีมา
+วิสุทธ์
+วิสุทธิ์
+วิสูตร
+วิเสท
+วิเสสนะ
+วิหค
+วิหงค์
+วิหลั่น
+วิหัปปติ
+วิหายสะ
+วิหาร
+วิหิ
+วิหิงสะ
+วิหิงสา
+วิเหสภาคี
+วิเหสา
+วิฬังค์
+วิฬาร
+วี
+วีจิ
+วีชนี
+วีซ่า
+วีณา
+วี้ด
+วี่วัน
+วี่แวว
+วีสะ
+วุ้ง
+วุฐิ
+วุฒ
+วุฒิ
+วุด
+วุ่น
+วุ้น
+วุบ
+วุ้ย
+วุลแฟรม
+วู้
+วูดวาด
+วูบ
+วู่วาม
+เว้
+เวค
+เวคิน
+เวคี
+เวจ
+เวช
+เวชยันต์
+เวไชยยันต์ราชรถ
+เวฐน์
+เวณะ
+เวณิ
+เวณิก
+เวณุ
+เวตน์
+เวตร
+เวตาล
+เวท
+เวทนา
+เวทย์
+เวทางค์
+เวทางคศาสตร์
+เวทานต์
+เวทานตะ
+เวทิ
+เวที
+เวธะ
+เวธี
+เวน
+เว้น
+เวนไตย
+เวไนย
+เวมะ
+เวมัต
+เวมาติก
+เว้ย
+เวร
+เวรมณี
+เวรี
+เวโรจน์
+เวลา
+เวเลนซี
+เววัณ
+เววัณณิยะ
+เวศม์
+เวศย์
+เวศยา
+เวสน์
+เวสภู
+เวสม์
+เวสมะ
+เวสวัณ
+เวสสะ
+เวสสันดร
+เวสสุกรรม
+เวสสุวัณ
+เวสารัช
+เวสิ
+เวสิยา
+เวหน
+เวหะ
+เวหังค์
+เวหัปติ
+เวหา
+เวหายส
+เวฬุ
+เวฬุริย
+เว่อ
+เว้า
+เวิก
+เวิ้ง
+เวี่ย
+เวียง
+เวียน
+เวียร
+เวี่ยว
+แว้
+แวง
+แว้ง
+แวด
+แวตร
+แวน
+แว่น
+แวนดา
+แวบ
+แวม
+แวว
+แว่ว
+แวววิเชียร
+แวะ
+โว
+โว่
+โวการ
+โว่ง
+โวต
+โวทาน
+โวย
+โว้ย
+โวยวาย
+โว้เว้
+โวสาน
+โวหาร
+ไว
+ไว้
+ไวกูณฐ์
+ไวฑูรย์
+ไวทย์
+ไวพจน์
+ไวยากรณ์
+ไวยาวัจกร
+ไวยาวัจมัย
+ไวรัส
+ไววรรณ
+ไวษณพ
+ไวโอลิน
+ศ
+ศก
+ศกฏ
+ศกล
+ศกุน
+ศกุนิ
+ศกุนี
+ศงกา
+ศจิบดี
+ศจี
+ศฐ
+ศดก
+ศต
+ศตก
+ศนิ
+ศไนส์
+ศพ
+ศพล
+ศม
+ศมน
+ศมนี
+ศมนีย์
+ศมศาน
+ศย
+ศยนะ
+ศยนีย์
+ศยาม
+ศยามกัณฐ์
+ศยามล
+ศร
+ศรณิ
+ศรนารายณ์
+ศรภ
+ศรมณะ
+ศรรกร
+ศรรกรา
+ศรรพรี
+ศรวณะ
+ศรวณีย์
+ศรวิษฐา
+ศรัถ
+ศรัถนะ
+ศรัท
+ศรัทธา
+ศรันถ์
+ศรันย์
+ศรันยู
+ศรัย
+ศราทธ์
+ศรานต์
+ศราพ
+ศราพก
+ศรายะ
+ศราวก
+ศราวณะ
+ศราวรณ์
+ศราวุธ
+ศราสน์
+ศรี
+ศรีตรัง
+ศรีษะ
+ศรีสังคีต
+ศรุต
+ศรุติ
+ศฤกาล
+ศฤคาล
+ศฤงค์
+ศฤงคาร
+ศฤงคาริน
+ศฤงคารี
+ศลภ
+ศลัถ
+ศลิษฏ์
+ศลิษา
+ศว
+ศวศุร
+ศวัศน
+ศวัส
+ศวา
+ศวาน
+ศวาส
+ศวิต
+ศวิตร
+ศศะ
+ศศิ
+ศศิน
+ศศี
+ศสา
+ศอ
+ศอก
+ศักดา
+ศักดิ
+ศักดิ์
+ศักติ
+ศักย์
+ศักยะ
+ศักราช
+ศังกร
+ศังกา
+ศังกุ
+ศัตรุ
+ศัตรู
+ศัทธนะ
+ศันสนะ
+ศันสนีย์
+ศัพท์
+ศัมยุ
+ศัยยา
+ศัล
+ศัลก
+ศัลกี
+ศัสดร
+ศัสตรา
+ศัสตรี
+ศัสย
+ศาก
+ศากตะ
+ศากยะ
+ศากวร
+ศากางค์
+ศากินี
+ศาฎก
+ศาฐยะ
+ศาณ
+ศาต
+ศาน
+ศานต์
+ศานติ
+ศานิต
+ศาป
+ศาพท์
+ศาพร
+ศามะ
+ศามา
+ศามีล
+ศารท
+ศารทูล
+ศาริกา
+ศาล
+ศาลา
+ศาลิ
+ศาศวัต
+ศาสก
+ศาสดา
+ศาสตร์
+ศาสตรา
+ศาสน์
+ศาสนา
+ศาสนีย์
+ศาสโนวาท
+ศิกษก
+ศิการ
+ศิขร
+ศิขริน
+ศิขรี
+ศิขัณฑ์
+ศิขา
+ศิคาล
+ศิงขร
+ศิงขริน
+ศิต
+ศิถี
+ศิพิระ
+ศิระ
+ศิรา
+ศิรามพุช
+ศิโรราบ
+ศิลป์
+ศิลปะ
+ศิลา
+ศิวะ
+ศิวิกา
+ศิศีระ
+ศิศุ
+ศิษฎิ
+ศิษฏ์
+ศิษย์
+ศีกร
+ศีขร
+ศีตล
+ศีล
+ศึก
+ศึกษา
+ศุกร์
+ศุกลัม
+ศุกะ
+ศุจิ
+ศุณฑา
+ศุณฑี
+ศุทธ
+ศุทธิ
+ศุน
+ศุนัก
+ศุนิ
+ศุลี
+ศุษิร
+ศุษิล
+ศูกร
+ศูทร
+ศูนย์
+ศูล
+ศูลิน
+เศรณี
+เศรษฐ์
+เศรษฐี
+เศร้า
+เศลษ
+เศวดงค์
+เศวดีภ
+เศวต
+เศวตร
+เศวาล
+เศษ
+เศาไจย
+เศาร์
+เศารยะ
+เศิก
+เศียร
+โศก
+โศกา
+โศกี
+โศจนะ
+โศจนียะ
+โศจิ
+โศถะ
+โศธนะ
+โศผะ
+โศภ
+โศภน
+โศภา
+โศภิต
+โศภิน
+โศภิษฐ์
+โศภี
+โศรณิ
+โศรณี
+โศรดา
+โศรตร
+โศลก
+โศวภาพ
+ไศล
+ไศวะ
+ษ
+ษมา
+ษัฏ
+ษัฏกะ
+ษัฑ
+ษัณ
+ษัษ
+ษัษฏี
+ษัษฐ
+ษัษฐี
+ษารภาคอร
+โษฑศ
+โษฑศัน
+ส
+สก
+สกฏะ
+สกฐาน
+สกทาคามี
+สกนธ์
+สกปรก
+สกรณีย์
+สกรรจ์
+สกรรถ
+สกรรมกริยา
+สกรัม
+สกรู
+สกล
+สกัด
+สกัดแคร่
+สกา
+สกายแลบ
+สกาว
+สกิทาคามี
+สกี
+สกุณ
+สกุณา
+สกุณี
+สกุน
+สกุนต์
+สกุล
+สเกต
+สแกนเดียม
+สขะ
+สขา
+สขิ
+สง
+ส่ง
+สงกร
+สงกรานต์
+สงกา
+สงโกจ
+สงค์
+สงคร
+สงคราม
+สงเคราะห์
+สงฆ์
+สงบ
+สงวน
+สงเษป
+ส่งสการ
+สงสัย
+สงสาร
+สงัด
+สง่า
+สจ๊วด
+สฐ
+สณฑ์
+สด
+สดก
+สดน
+สดมภ์
+สดัน
+สดับ
+สดับปกรณ์
+สดำ
+สดี
+สดุดี
+สดูป
+สต
+สตก
+สตน
+สตรอนเชียม
+สตริกนิน
+สตรี
+สตัน
+สตันย์
+สตัพธ์
+สตัฟฟ์
+สตัมภ์
+สตางค์
+สตาฟฟ์
+สติ
+สติ๊ก
+สตี
+สตีม
+สตู
+สตูป
+สเต็ก
+สเตนเลส
+สเตย์
+สไตร๊ค์
+สถน
+สถบดี
+สถล
+สถวีระ
+สถาน
+สถานะ
+สถานี
+สถาบก
+สถาบัน
+สถาปนา
+สถาปนิก
+สถาปนียพยากรณ์
+สถาปนียวาที
+สถาปัตยกรรม
+สถาพร
+สถาล
+สถาวร
+สถิต
+สถิตนศาสตร์
+สถิติ
+สถุล
+สถูป
+สทาร
+สทึง
+สทุม
+สธน
+สธุสะ
+สน
+ส้น
+สนเดก
+สนทนา
+สนทรรศ
+สนทรรศน์
+สนทิศ
+สนเทศ
+สนเท่ห์
+สนธยา
+สนธิ
+สนธิอลงกต
+สนนราคา
+สนม
+สนวน
+สนสร้อย
+สนอง
+สนอบ
+สนอม
+สนะ
+สนัด
+สนั่น
+สนับ
+สนับสนุน
+สนาดก
+สนาน
+สนาบก
+สนาบัน
+สนาม
+สนายุ
+สนิก
+สนิท
+สนิธ
+สนิม
+สนิมสร้อย
+สนุก
+สนุกเกอร์
+สนุข
+สนุต
+สนุ่น
+สบ
+สบง
+สบจ
+สบถ
+สบเสีย
+สบัน
+สบาย
+สบู่
+สไบ
+สปริง
+สปาเกตตี
+สปาย
+สปิริต
+สเปกตรัม
+สเปกโทรสโคป
+สไปริลลัม
+สพั้น
+สพาบ
+สภังคมณฑล
+สภา
+สภาค
+สภาพ
+สภาวะ
+สม
+ส้ม
+สมการ
+สมจารี
+สมชีวิตา
+สมชีวิธรรม
+สมญา
+สมเญศ
+สมณะ
+สมดึงส์
+สมดุล
+สมเด็จ
+สมถะ
+สมนาคุณ
+สมบัติ
+สมบุกสมบัน
+สมบูรณ์
+สมบูรณาญาสิทธิราชย์
+สมประดี
+สมปฤดี
+สมปฤๅดี
+สมผุส
+สมพงศ์
+สมพล
+สมพักนักการ
+สมพัตสร
+สมพาส
+สมเพช
+สมโพธน์
+สมโพธิ
+สมภพ
+สมภาร
+สมโภค
+สมโภช
+สมมต
+สมมติ
+สมมาตร
+สมมุติ
+สมมูล
+สมโมท
+สมโยค
+สมร
+สมรด
+สมรรถ
+สมรส
+สมฤดี
+สมฤติ
+สมฤๅดี
+สมวัย
+สมวายะ
+สมเสร็จ
+สมอ
+สมอง
+สมอสำเภา
+สมัค
+สมัคร
+สมังคี
+สมัช
+สมัชชา
+สมัต
+สมัน
+สมันต์
+สมัย
+สมา
+สมาคม
+สมาจาร
+สมาชิก
+สมาทาน
+สมาธิ
+สมาน
+สมานัตตา
+สมาโนตม์
+สมาบัติ
+สมาพันธรัฐ
+สมาส
+สม่ำเสมอ
+สมิง
+สมิงทอง
+สมิต
+สมิติ
+สมิทธ์
+สมิทธิ
+สมี
+สมีป
+สมีร
+สมุก
+สมุจจัย
+สมุจเฉท
+สมุฏฐาน
+สมุด
+สมุตถาน
+สมุทร
+สมุทรก
+สมุทัย
+สมุทิต
+สมุน
+สมุนไพร
+สมุลแว้ง
+สมุห์
+สโมธาน
+สโมสร
+สยด
+สยนะ
+สยบ
+สยมพร
+สยมภู
+สยอง
+สยอน
+สยัมพร
+สยัมวรา
+สยาม
+สยาย
+สยิว
+สยิ้ว
+สยุ่น
+สยุมพร
+สยุมภู
+สร
+สรก
+สรง
+สร่ง
+สรฏะ
+สรณะ
+สรดัก
+สรดึ่น
+สรดื่น
+สรตะ
+สรตัก
+สรทะ
+สรทึง
+สรแทบ
+สรนุก
+สรเนาะ
+สรไน
+สรบ
+สรบบ
+สรบับ
+สรพ
+สรเพชญ
+สรภะ
+สรภัญญะ
+สรภู
+สรม
+สรร
+สรรค์
+สรรพ
+สรรพัชญ
+สรรเพชญ
+สรรเพชุดา
+สรรวง
+สรรเสริญ
+สรลน
+สรลม
+สรลมสลวน
+สรลอด
+สรลอน
+สรละ
+สรล้าย
+สรลิด
+สรเลข
+สรวง
+สรวป
+สรวม
+สรวล
+สรวลเส
+สรวลเสเฮฮา
+สรเสริญ
+สร้อย
+สร้อยทะแย
+สระ
+สระกอ
+สระคราญ
+สระดะ
+สระท้อน
+สระพรั่ง
+สระอาด
+สระอื้น
+สรั่ง
+สรัสวดี
+สร่าง
+สร้าง
+สราญ
+สร้าวเสียว
+สริต
+สรี้
+สรีระ
+สรีสฤบ
+สรุก
+สรุง
+สรุโนก
+สรุป
+สรุสระ
+สรูป
+สโรช
+สฤก
+สฤคาล
+สฤต
+สฤษฎ์
+สฤษฎี
+สล
+สลด
+สลบ
+สลวน
+สลวย
+สลอด
+สลอน
+สลอย
+สละ
+สละสลวย
+สลัก
+สลักเต้
+สลักสำคัญ
+สลัด
+สลัดได
+สลับ
+สลัม
+สลัว
+สลา
+สลาก
+สลากา
+สลาง
+สล้าง
+สลาด
+สลาตัน
+สลาบ
+สลาม
+สลาย
+สลิด
+สลิล
+สลึก
+สลึง
+สลุต
+สลุบ
+สลุมพร
+สแลง
+สโลด
+สไลด์
+สวก
+ส้วง
+สวด
+สวน
+ส่วน
+สวนะ
+สวนิต
+สวบ
+สวม
+ส้วม
+สวย
+ส่วย
+ส้วย
+สวยม
+สวร
+สวรรค์
+สวรรยา
+สวะ
+สวัสดิ์
+สวัสดี
+สวัสติกะ
+สวา
+สวาคต
+สวาง
+สว่าง
+สวาด
+สวาดิ
+สวาท
+สวาน
+สว่าน
+สว้าน
+สวาบ
+สวามิ
+สวามี
+สวาย
+สวาสดิ์
+สวาหะ
+สวิง
+สวิงสวาย
+สวิญญาณกทรัพย์
+สวิตซ์
+สสาร
+สสุระ
+สสุรี
+สหัมบดี
+สหัสรังสี
+สหัสสะ
+สหัสา
+สอ
+ส่อ
+สอง
+ส่อง
+ส้อง
+สอด
+สอน
+ส่อน
+สอบ
+สอพลอ
+ส้อม
+สอย
+ส่อเสียด
+สะ
+สะกด
+สะกอ
+สะกาง
+สะการะ
+สะการะตาหรา
+สะกิด
+สะเก็ด
+สะแก
+สะคร้อ
+สะคราญ
+สะค้าน
+สะเงาะสะแงะ
+สะใจ
+สะดม
+สะดวก
+สะดัก
+สะดิ้ง
+สะดึง
+สะดือ
+สะดุ้ง
+สะดุด
+สะเด็ด
+สะเดา
+สะเดาะ
+สะตอ
+สะตาหมัน
+สะตึ
+สะตือ
+สะตุ
+สะเต๊ะ
+สะโตก
+สะทก
+สะทน
+สะท้อน
+สะท้าน
+สะทึก
+สะทึน
+สะทึ่น
+สะเทิน
+สะเทิ้น
+สะเทือน
+สะเทื้อน
+สะบะ
+สะบัก
+สะบัด
+สะบั้น
+สะบันงา
+สะบันงาต้น
+สะบ้า
+สะบู
+สะแบง
+สะเปะสะปะ
+สะพรัก
+สะพรั่ง
+สะพรึงกลัว
+สะพรึบ
+สะพัก
+สะพัง
+สะพัด
+สะพั้น
+สะพาน
+สะพาย
+สะเพร่า
+สะโพก
+สะเภา
+สะใภ้
+สะโมง
+สะระตะ
+สะระแหน่
+สะรีตพงศ์
+สะละปะตุ่น
+สะลาง
+สะลึมสะลือ
+สะวี้ดสะว้าด
+สะสม
+สะสาง
+สะอาง
+สะอาด
+สะอ้าน
+สะอิ้ง
+สะอิดสะเอียน
+สะอึก
+สะอื้น
+สะเอว
+สะเออะ
+สะโอดสะอง
+สะไอ
+สัก
+สักกะ
+สักกัจจะ
+สักการะ
+สักขรา
+สักขี
+สักฏะ
+สักตะ
+สักยะ
+สักวา
+สักหลาด
+สัขยะ
+สัค
+สัคคะ
+สั่ง
+สังกมทรัพย์
+สังกร
+สังกะตัง
+สังกะวัง
+สังกะวาด
+สังกะสี
+สังกัด
+สังกัปปะ
+สังกา
+สังการ
+สังกาศ
+สังกิเลส
+สังเกต
+สังข์
+สังขตะ
+สังขยา
+สังขลิก
+สังขลิกา
+สังขวานร
+สังขาร
+สังขารทุกข์
+สังขารธรรม
+สังขารโลก
+สังขารอุเบกขา
+สังเขป
+สังโขภ
+สังค์
+สังคม
+สังคมนิยม
+สังคมวิทยา
+สังคมศาสตร์
+สังคมศึกษา
+สังคมสงเคราะห์
+สังคหะ
+สังคัง
+สังคาตา
+สังคายนา
+สังคายนาย
+สังคีต
+สังคีติ
+สังเค็ด
+สังเคราะห์
+สังฆาฏิ
+สังดัก
+สังปะติเหงะ
+สังปะลิเหงะ
+สังโยค
+สังโยชน์
+สังวร
+สังวัจฉระ
+สังวัธยาย
+สังวาล
+สังวาส
+สังเวช
+สังเวย
+สังเวียน
+สังสกฤต
+สังสการ
+สังสดมภ์
+สังสนทนา
+สั่งสนทนา
+สังสรรค์
+สังสารวัฏ
+สังสิทธิ
+สังสุทธ์
+สังสุทธิ
+สังหร
+สังหรณ์
+สังหรรษ
+สังหาร
+สังหาริมทรัพย์
+สังหาริมะ
+สังหิต
+สัจ
+สัจจะ
+สัจจา
+สัชฌะ
+สัชฌายะ
+สัชฌุ
+สัญจร
+สัญจาร
+สัญเจตนา
+สัญชาตญาณ
+สัญชาตสระ
+สัญชาติ
+สัญชีพนรก
+สัญฌา
+สัญญา
+สัญญาณ
+สัญญี
+สัญโญชน์
+สัญโยค
+สัญลักษณ์
+สัฐิ
+สัณฐาน
+สัณฐิติ
+สัณฑ์
+สัณห์
+สัด
+สัดจอง
+สัต
+สัตตบงกช
+สัตตบรรณ
+สัตตบุษย์
+สัตตวณิชชา
+สัตตะ
+สัตตู
+สัตถ
+สัตถันดร
+สัตถา
+สัตถิ
+สัตถุ
+สัตบรรณ
+สัตบริภัณฑ์
+สัตย์
+สัตว์
+สัตวา
+สัทธรรม
+สัทธา
+สัทธิงวิหาริก
+สัทธิวิหาริก
+สัทศาสตร์
+สัน
+สั่น
+สั้น
+สันดาน
+สันดาป
+สันดุษฎี
+สันเดก
+สันโดษ
+สันต์
+สันตติ
+สันตะปาปา
+สันตะโร
+สันตะวา
+สันติ
+สันติกะ
+สันติเกนิทาน
+สันตุฏฐี
+สันถระ
+สันถวะ
+สันถัต
+สันถาร
+สันทนะ
+สันทนาการ
+สันทะ
+สันทัด
+สันทัสนะ
+สันทาน
+สันทิฐิ
+สันทิส
+สันเทส
+สันเทห
+สันเท่ห์
+สันธาน
+สันนิธิ
+สันนิบาต
+สันนิวาส
+สันนิเวส
+สันนิษฐาน
+สันพร้านางแอ
+สันพร้ามอญ
+สันพร้าหอม
+สันรวง
+สันลึก
+สันสกฤต
+สับ
+สับปลับ
+สับปลี้
+สับปะรังเค
+สับปาก
+สัปคับ
+สัปดน
+สัปโดก
+สัปโดกสัปดน
+สัปทน
+สัปปะ
+สัปปายการี
+สัปปิ
+สัปปุรุษ
+สัประยุทธ์
+สัปหงก
+สัปเหร่อ
+สัพ
+สัพพะ
+สัพพัญญู
+สัพเพสัตตา
+สัพเพเหระ
+สัพยอก
+สัฟันคนทา
+สัมญญา
+สัมบูรณ์
+สัมปชัญญะ
+สัมปทา
+สัมปทาน
+สัมปยุต
+สัมปโยค
+สัมประสิทธิ์
+สัมประหาร
+สัมปรายภพ
+สัมปรายิกภพ
+สัมปัตติ
+สัมผัปลาป
+สัมผัส
+สัมพล
+สัมพหุลา
+สัมพัตสร
+สัมพัทธ์
+สัมพันธ์
+สัมพันธน์
+สัมพาธะ
+สัมพาระ
+สัมพาหน์
+สัมพาหะ
+สัมพุทธะ
+สัมโพธิ
+สัมภวะ
+สัมภเวสี
+สัมภัต
+สัมภัตตะ
+สัมภาษณ์
+สัมเภทะ
+สัมโภคกาย
+สัมมนา
+สัมมัปธาน
+สัมมา
+สัมโมทนียกถา
+สัมฤทธิ
+สัมฤทธิ์
+สัยน์
+สัลละ
+สัลลาป
+สัสดี
+สัสสะ
+สัสสุ
+สัสสู
+สัสุรี
+สา
+ส่า
+สาก
+สากรรจ์
+สากล
+สากษิน
+สากษี
+สากัจฉา
+สากัลย์
+สากิยะ
+สาเก
+สาขา
+สาคร
+สาคเรศ
+สาคู
+สาง
+สางห่า
+สาฎก
+สาณี
+สาด
+สาต
+สาตรา
+สาไถย
+สาทร
+สาทิส
+สาทุ
+สาโท
+สาธก
+สาธน
+สาธยะ
+สาธยาย
+สาธารณ์
+สาธารณะ
+สาธิต
+สาธุ
+สาธุสะ
+สาน
+สานตวะ
+สานุ
+สานุศิษย์
+สานู
+สาบ
+สาบสูญ
+สาบาน
+สาป
+สาปไตย
+สาปสรร
+สาม
+สามชุก
+สามเณร
+สามเณรี
+สามนต์
+สามยทรัพย์
+สามรส
+สามล
+สามสิบ
+สามัคคี
+สามัญ
+สามัตถิยะ
+สามานย์
+สามารถ
+สามิก
+สามิต
+สามินี
+สามิภักดิ์
+สามิส
+สามี
+สามีจิกรรม
+สาย
+ส่าย
+ส้าย
+สายชู
+สายตา
+สายเวทย์
+สายัณห์
+สายาห์
+สาร
+สารกรมธรรม์
+สารคดี
+สารเคมี
+สารณียธรรม
+สารตรา
+สารถี
+สารท
+สารทา
+สารทิศ
+สารทุกข์
+สารธรรม
+สารนิเทศ
+สารบบ
+สารบรรณ
+สารบริสุทธิ์
+สารบัญ
+สารบับ
+ส้ารบับ
+สารบาญ
+สารประกอบ
+สารประโยชน์
+สารพัด
+สารพัน
+สารพางค์
+สารภาพ
+สารภี
+สารไมย
+สารรัก
+สารละลาย
+สารเลว
+สารวัด
+สารวัตร
+สารส้ม
+สารหนู
+สาระ
+สาระโกก
+สาระเน
+สาระพา
+สาระพาเฮโล
+สาระวอน
+สาระวารี
+สาระสะมา
+สาระสำคัญ
+สารัตถะ
+สารัทธ์
+สารัมภ์
+สาราณียกร
+สาราณียะ
+สารานุกรม
+สารีริกธาตุ
+สารูป
+สาโรช
+สาละ
+สาละวน
+สาลิ
+สาลิกา
+สาลินี
+สาลี
+สาลี่
+สาลู
+สาโลหิต
+สาว
+สาวก
+สาวกระทืบหอ
+สาวน้อยเล่นน้ำ
+สาวนะ
+สาวิกา
+สาวิตร
+สาวิตรี
+สาสน์
+สาสนา
+สาหร่าย
+สาหรี
+ส่าหรี
+สาหัส
+สาเหตุ
+สาแหรก
+สาฬุระ
+สำ
+ส่ำ
+สำคัญ
+สำซ่าง
+สำแดง
+สำทับ
+สำนวด
+สำนวน
+สำนอง
+สำนัก
+สำนาน
+สำนึง
+สำเนา
+สำเนียง
+สำเนียน
+สำบอก
+สำบัดสำนวน
+สำปะลอ
+สำปะหลัง
+สำปั้น
+สำปันนี
+สำเภา
+สำเภาทอง
+สำมะงา
+สำมะโนครัว
+สำมะโนปะชากร
+สำมะลอ
+สำมะเลเทเมา
+สำมะหา
+สำรด
+สำรวจ
+สำรวม
+สำรวย
+สำรวล
+สำรอก
+สำรอง
+สำรับ
+สำราก
+สำราญ
+สำริด
+สำเร็จ
+สำเรา
+สำเริง
+สำโรง
+สำลัก
+สำลาน
+สำลี
+สำแลง
+สำสร้าง
+สำสา
+สำเส็ด
+ส่ำเสีย
+สำหรวด
+สำหรับ
+สำหา
+สำเหนียก
+สำเหร่
+สำออย
+สำอาง
+สิ
+สิกข์
+สิกขมานา
+สิกขา
+สิขร
+สิขรี
+สิขเรศ
+สิขา
+สิขี
+สิคาล
+สิง
+สิ่ง
+สิงขร
+สิงค์
+สิงคลิ้ง
+สิงคลี
+สิงคาร
+สิงคาล
+สิงคี
+สิงโต
+สิงโตทะเล
+สิงสาราสัตว์
+สิงห์
+สิงหล
+สิญจน์
+สิต
+สิโตทกวารี
+สิถิล
+สิทธ์
+สิทธิ
+สิทธิ์
+สิธยะ
+สิน
+สิ้น
+สินทูระ
+สินธพ
+สินธุ
+สินธุระ
+สินเธาว์
+สินะ
+สินาด
+สินิทธ์
+สินี
+สิเนรุ
+สิเนหก
+สิเนหนียะ
+สิเนหะ
+สิเนหา
+สิเน่หา
+สิบ
+สิปปะ
+สิพนะ
+สิมพลี
+สิระ
+สิริ
+สิรี
+สิลา
+สิโลก
+สิว
+สิ่ว
+สิวะ
+สิวิกา
+สิหนา
+สี
+สี่
+สี้
+สีกรุด
+สีกา
+สีกุน
+สีข้าง
+สีจัก
+สีชมพูดง
+สีชมพูสวน
+สีด
+สีดอ
+สีต้น
+สีทันดร
+สี่บท
+สีฟันนางแอ
+สีมันต์
+สีมา
+สีละมัน
+สีลัพพตปรามาส
+สีวิกา
+สีวิภา
+สีสอ
+สีสะ
+สีสา
+สีสุก
+สีเสียด
+สีเสื้อน้อย
+สีห์
+สีหะ
+สึก
+สึง
+สืบ
+สื่อ
+สุ
+สุก
+สุกข์
+สุกร
+สุกรม
+สุกำ
+สุกี้ยากี้
+สุข
+สุขิน
+สุขี
+สุขุม
+สุขุมาล
+สุคต
+สุคติ
+สุคนธ์
+สุคันธ์
+สุงกะ
+สุงสิง
+สุงสุมาร
+สุงสุมารี
+สุจริต
+สุจหนี่
+สุจะ
+สุจิ
+สุจิต
+สุจิตร
+สุชน
+สุชัมบดี
+สุชา
+สุชาดา
+สุญ
+สุณ
+สุณหา
+สุณิสา
+สุด
+สุดสงวน
+สุดา
+สุต
+สุตตะ
+สุตตันตะ
+สุตตันตะปิฎก
+สุติ
+สุทธ์
+สุทธิ
+สุทรรศน์
+สุทัศน์
+สุธรรมเทวสภา
+สุธา
+สุธี
+สุนทร
+สุนทรี
+สุนทรียะ
+สุนัข
+สุนันท์
+สุโนก
+สุบดี
+สุบรรณ
+สุบิน
+สุปรีดิ์
+สุปรีย์
+สุปาณี
+สุพพัต
+สุพรรณ
+สุพรรณถัน
+สุพรรณิการ์
+สุภร
+สุภัค
+สุภา
+สุภาพ
+สุภาษิต
+สุม
+สุ่ม
+สุมทุม
+สุมน
+สุมนะ
+สุมนัส
+สุมนา
+สุ้มเสียง
+สุมะ
+สุมาลี
+สุเมธ
+สุเมรุ
+สุ้ย
+สุรงค์
+สุรภี
+สุรังค์
+สุรัติ
+สุรัสวดี
+สุรา
+สุรางค์จำเรียง
+สุราธิปไตย
+สุรินทราหู
+สุริยง
+สุริยน
+สุริยะ
+สุริยัน
+สุริยา
+สุริยุปราคา
+สุริเยนทร์
+สุริเยศ
+สุริโย
+สุรุ่ยสุร่าย
+สุลต่าน
+สุว
+สุวภาพ
+สุวรรณ
+สุวาน
+สุวินัย
+สุวิมล
+สุษิร
+สุสาน
+สุหนัต
+สุหร่ง
+สุหร่าย
+สุหฤท
+สุหัท
+สุเหร่า
+สู
+สู้
+สูกษม
+สูง
+สูจกะ
+สูจนะ
+สูจิ
+สูญ
+สูด
+สูต
+สูตร
+สูติ
+สูท
+สูนุ
+สูบ
+สูปะ
+สูร
+สูรย์
+สูริ
+สูสี
+เส
+เสก
+เสกขะ
+เสขะ
+เส็ง
+เส้ง
+เสงี่ยม
+เสฉวน
+เสฏฐี
+เสณี
+เสด
+เสด็จ
+เสตุ
+เสถียร
+เสโท
+เสน
+เส้น
+เสนง
+เสน่ง
+เสน่ห์
+เสน่ห์จันทร์ขาว
+เสน่ห์จันทร์แดง
+เสนหา
+เสน่หา
+เสนอ
+เสนะ
+เสนา
+เสน่า
+เสนากุฎ
+เสนางค์
+เสนางคนิกร
+เสนานี
+เสนาสนะ
+เสนาะ
+เสนี
+เสนีย์
+เสนียด
+เสนียะ
+เสบย
+เสบียง
+เสพ
+เสพย์
+เสเพล
+เสภา
+เสม็ด
+เสมอ
+เสมา
+เสมียน
+เสมือน
+เสย
+เสร็จ
+เสริด
+เสริม
+เสรี
+เสลด
+เสลดพังพอน
+เสลา
+เสลี่ยง
+เสลือกสลน
+เสโล
+เสวก
+เสวกามาตย์
+เสวนะ
+เสวนา
+เสวย
+เสวยพระชาติ
+เสวียน
+เสสรวง
+เสสรวล
+เสา
+เส้า
+เสาร์
+เสารภย์
+เสารี
+เสาวณิต
+เสาวนะ
+เสาวนา
+เสาวนาการ
+เสาวนีย์
+เสาหฤท
+เสาะ
+เสาะแสะ
+เสิร์จ
+เสิร์ฟ
+เสีย
+เสี่ย
+เสียง
+เสี่ยง
+เสียด
+เสี้ยน
+เสียบ
+เสียม
+เสี่ยม
+เสี้ยม
+เสียว
+เสี่ยว
+เสี้ยว
+เสือ
+เสื่อ
+เสื้อ
+เสือก
+เสื่อม
+แส
+แส่
+แส้
+แสก
+แสง
+แสด
+แสดง
+แสตมป์
+แสน
+แสนง
+แสนย์
+แสนเสนาะ
+แสบ
+แสบก
+แสม
+แสยก
+แสยง
+แสยะ
+แสรก
+แสร้ง
+แสลง
+แสลงใจ
+แสลงเบื่อ
+แสวง
+แสอก
+แสะ
+โสก
+โสกโดก
+โสกันต์
+โสกาดานา
+โสโครก
+โสณ
+โสณฑ์
+โสณิ
+โสณี
+โสด
+โสดก
+โสดม
+โสดา
+โสต
+โสตถิ
+โสทก
+โสทร
+โสธก
+โสธนะ
+โสน
+โสปาน
+โสภณ
+โสภา
+โสภิณี
+โสภี
+โสเภณี
+โสม
+โสมนัส
+โสมม
+โสมย์
+โสมส่องแสง
+โสร่ง
+โสรจ
+โสรัจจะ
+โสวรรณ
+โสหุ้ย
+โสฬส
+ใส
+ใส่
+ไส
+ไส้
+ไสย
+ไสยา
+ไสร้
+ไสว
+ไส้หู้
+ห
+หก
+หกบท
+หกโล่
+หง
+หงก
+หงส์
+หงส์ทอง
+หงส์หยก
+หงอ
+หงอก
+หง่อง
+หงองแหงง
+หงอด
+หงอดๆ
+หงอน
+หง่อม
+หงอย
+หง่อย
+หงัก
+หงับ
+หง่าง
+หงาย
+หง่าว
+หงำ
+หงิก
+หงิง
+หงิม
+หงึก
+หงุงหงิง
+หงุดหงิด
+หงุบ
+หงุบหงับ
+หงุ่ย
+หญ้า
+หญ้าปากคอก
+หญ้าฝรั่น
+หญ้ายองไฟ
+หญ้าหนวดแมว
+หญิง
+หญิบ
+หด
+หตะ
+หทัย
+หน
+หนวก
+หน่วง
+หนวด
+หนวดนาคราช
+หนวดพราหมณ์
+หนวดแมว
+หน่วย
+หน่วยกิต
+หนอ
+หน่อ
+หนอก
+หนอกช้าง
+หนอง
+หนองแซง
+หนอน
+หนอนตานหยาก
+หน่อย
+หน็อยแน่
+หนะ
+หนัก
+หนัง
+หนังกลางวัน
+หนังสือ
+หนั่น
+หนับ
+หนา
+หน้า
+หนากาสรี
+หน่าง
+หนาด
+หนาน
+หนาม
+หน่าย
+หนาว
+หนำ
+หนำเลี้ยบ
+หนี
+หนี้
+หนีบ
+หนีเสือ
+หนึก
+หนึ่ง
+หนึบ
+หนืด
+หนุ
+หนุงหนิง
+หนุน
+หนุบ
+หนุ่ม
+หนุ่ย
+หนู
+ห่ม
+หมก
+หมด
+หม่น
+หมวก
+หมวด
+หมอ
+หม่อ
+หม้อ
+หมอก
+หมอง
+หม่อง
+หมอน
+หม่อน
+หมอบ
+หม่อม
+หมอย
+หมัก
+หมัด
+หมัน
+หมั่น
+หมั้น
+หมั่นไส้
+หมับ
+หมา
+หม่า
+หม้า
+หมาก
+หมาง
+หมาจ่อ
+หมาด
+หมาต๋า
+หมามุ่ย
+หมามุ้ย
+หมาไม้
+หมาย
+หม้าย
+หมาร่า
+หม่ำ
+หมิ่น
+หมี
+หมี่
+หมีเหม็น
+หมึก
+หมืน
+หมื่น
+หมุด
+หมุน
+หมุบ
+หมุ่ย
+หมุยขาว
+หมู
+หมู่
+หมูสัง
+หมูสี
+หยก
+หย่ง
+หยด
+หยวก
+หยวน
+หยวนโล้
+หยวบ
+หยอก
+หย็อกหย็อย
+หยอง
+หย่อง
+หย็องแหย็ง
+หยอด
+หยอน
+หย่อน
+หย่อม
+หยอมแหยม
+หยอย
+หย่อย
+หยัก
+หยักเหยา
+หยัง
+หยั่ง
+หยังหยัง
+หยัด
+หยัน
+หยับ
+หยั่วเมือง
+หย่า
+หยากเยื่อ
+หยากไย่
+หย่างค้ำ
+หยาด
+หยาบ
+หยาม
+หยาว
+หย้าว
+หยำฉ่า
+หยำเป
+หยำแหยอะ
+หยำแหยะ
+หยิก
+หยิ่ง
+หยิบ
+หยิม
+หยี
+หยี่
+หยุ
+หยุกหยิก
+หยุด
+หยุ่น
+หยุบๆ
+หยุมหยิม
+หยูกยา
+หร
+หรคุณ
+หรดาล
+หรดี
+หรบ
+หรรษ
+หรรษา
+หรอ
+หรอก
+หร็อมแหร็ม
+หรอยๆ
+หระ
+หรับๆ
+หรา
+หริ
+หริ่ง
+หริณะ
+หริณังค์
+หริต
+หริตกี
+หรี่
+หรีด
+หรีตกี
+หรือ
+หรุ่น
+หรุบๆ
+หรุบรู่
+หรุบหรู่
+หรุ่ม
+หรู
+หรูหรา
+หฤทย
+หฤทย์
+หฤทัย
+หฤษฎ์
+หฤษฎี
+หฤหรรษ์
+หฤโหด
+หล
+หลง
+หลด
+หลน
+หล่น
+หลบ
+หล่ม
+หลวง
+หลวม
+หลอ
+หล่อ
+หลอก
+หลอด
+หลอน
+หล็อน
+หล่อน
+หล็อนๆ
+หลอม
+หละ
+หละหลวม
+หลัก
+หลัง
+หลั่ง
+หลัดๆ
+หลั่น
+หลับ
+หลัว
+หลา
+หล้า
+หลาก
+หลาท
+หลาทวด
+หลาน
+หลาบ
+หลาม
+หลาย
+หลาว
+หลาหล
+หลิก
+หลิ่ง
+หลิท
+หลิน
+หลิม
+หลิว
+หลิ่ว
+หลี
+หลีก
+หลีโก
+หลีบ
+หลีฮื้อ
+หลืบ
+หลุกหลิก
+หลุด
+หลุนๆ
+หลุบ
+หลุม
+หลุมพอ
+หลุมพี
+หลู่
+หวง
+ห่วง
+ห้วง
+หวด
+หวน
+ห้วน
+หวนคำนึง
+หวย
+ห่วย
+ห้วย
+หวอ
+หวอด
+หว็อยๆ
+หวะ
+หวัง
+หวัด
+หวั่น
+หวันยิหวา
+หวัว
+หวัวร่อ
+หวัวเราะ
+หวา
+หว่า
+หว้า
+หวาก
+หว่าง
+หวาด
+หวาน
+หว่าน
+หวาม
+หวาย
+หวำ
+หวิด
+หวิว
+หวี
+หวี่
+หวีด
+หวือ
+หวุดหวิด
+หวุม
+หวูด
+หอ
+ห่อ
+ห้อ
+หอก
+หอง
+ห้อง
+หอน
+ห่อน
+หอบ
+หอม
+ห้อม
+หอม0�
+เหมันต์
+เหมา
+เหมายัน
+เหมาะ
+เหมียว
+เหมี่ยว
+เหมือง
+เหมือด
+เหมือดคน
+เหมือดโลด
+เหมือน
+เหมื่อย
+เหมื่อยๆ
+เหย
+เหยง
+เหย่อย
+เหยา
+เหย่า
+เหย้า
+เหย่าๆ
+เหยาะ
+เหยาะๆ
+เหยาะย่าง
+เหยาะแหยะ
+เหยิง
+เหยิบๆ
+เหยียด
+เหยียบ
+เหยี่ยว
+เหยื่อ
+เหยือก
+เหรัญญิก
+เหรา
+เหราะๆ
+เหรียญ
+เหล่
+เหล็ก
+เหลน
+เหลว
+เหลอ
+เหลา
+เหล่า
+เหล้า
+เหลาชะโอน
+เหลาหลก
+เหลาเหย่
+เหลาะแหละ
+เหลิง
+เหลิงเจิ้ง
+เหลียน
+เหลี่ยม
+เหลียว
+เหลือ
+เหลือก
+เหลือง
+เหลือบ
+เหลือม
+เหลื่อม
+เหว
+เหว่
+เหวง
+เหวย
+เหวอะ
+เหวอะหวะ
+เหวี่ยง
+เห่อ
+เหอะ
+เหะ
+เหะหะ
+เหา
+เห่า
+เหาะ
+เหิน
+เหิม
+เหี้ย
+เหียง
+เหียน
+เหี้ยน
+เหี้ยม
+เหี่ยว
+เหื่อ
+เหือด
+แห
+แห่
+แห้
+แหก
+แหง
+แหง่
+แห่ง
+แห้ง
+แหง็ก
+แหงแก๋
+แหง่ง
+แหงน
+แหน
+แห้น
+แหนง
+แหนบ
+แหนม
+แหบ
+แหม
+แหม่
+แหม่ม
+แหมะ
+แหย
+แหย่
+แหยง
+แหย่ง
+แหยม
+แหยะ
+แหยะๆ
+แหล
+แหล่
+แหลก
+แหล่ง
+แหลน
+แหลม
+แหละ
+แหว
+แห้ว
+แหวก
+แหว่ง
+แหวด
+แหวน
+แหวะ
+แหะ
+แหะๆ
+โห่
+โหก
+โหง
+โหด
+โหน
+โหนก
+โหน่ง
+โหม
+โหม่
+โหมกรรม
+โหมกูณฑ์
+โหม่ง
+โหมด
+โหย
+โหยกเหยก
+โหยง
+โหย่ง
+โหร
+โหรง
+โหรงเหรง
+โหรดาจารย์
+โหระพา
+โหล
+โหล่
+โหลงโจ้ง
+โหว
+โหว่
+โหว้
+โหวกเหวก
+โหวง
+โหวด
+โหวต
+ให้
+ใหญ่
+ใหม่
+ไห
+ไห่
+ไห้
+ไหน
+ไหม
+ไหม้
+ไหรณ
+ไหล
+ไหล่
+ไหว
+ไหว้
+ไหวๆ
+ไหหลำ
+อ
+อก
+อกตัญญุตา
+อกตัญญู
+อกนิษฐ์
+อกรณีย์
+อกรรมกริยา
+อกัปปิยะ
+อกาลจีวร
+อกาลิโก
+อกิริยทิฐิ
+อกุศล
+อคติ
+อคเนสัน
+อคาธ
+อฆ
+อง
+องก์
+องค์
+องคมนตรี
+องคมรรษ
+องคุล
+องคุลี
+องศ์
+องศา
+องอาจ
+องุ่น
+อจร
+อจลา
+อจิตติ
+อจินตา
+อจินไตย
+อจิระ
+อเจลก
+อเจละ
+อช
+อชิน
+อชินี
+อชิร
+อชีววิทย
+อฏวี
+อณิ
+อณุ
+อณู
+อโณทัย
+อด
+อดิ
+อดิถี
+อดิเทพ
+อดิเรก
+อดิศร
+อดิศวร
+อดิศัย
+อดีต
+อดุล
+อดุลย์
+อติ
+อติชาต
+อติตัณหา
+อติถิพลี
+อติเทพ
+อติราช
+อติเรก
+อติสาร
+อติามนะ
+อตีตังสญาณ
+อถรรพเวท
+อทิติ
+อทินนาทาน
+อทินนาทายี
+อธรรม
+อธิ
+อธิกรณ์
+อธิการ
+อธิคม
+อธิจิต
+อธิฏฐาน
+อธิบดี
+อธิบาย
+อธิป
+อธิมาตร
+อธิมุตติ
+อธิโมกข์
+อธิราช
+อธิวาส
+อธิวาสนะ
+อธิศีล
+อธิษฐาน
+อธึก
+อ้น
+อนงค์
+อนงคณะ
+อนธิวร
+อนนต์
+อนภิรติ
+อนยะ
+อนรรฆ
+อนรรถ
+อนริยปริเยสนา
+อนล
+อนวัช
+อ้นอ้อ
+อนัญ
+อนัตตลักษณะ
+อนัตตา
+อนันต์
+อนัม
+อนาคต
+อนาคามี
+อนาคาริก
+อนาคาริยเพศ
+อนาจาร
+อนาถ
+อนาถา
+อนาทร
+อนาธิปไตย
+อนามัย
+อนารยะ
+อนาลัย
+อนาวรณญาณ
+อนำ
+อนิจ
+อนิจจัง
+อนิจจา
+อนิฏฐารมณ์
+อนิยต
+อนิยม
+อนิล
+อนิวรรต
+อนิวรรตน์
+อนิษฏ์
+อนีกะ
+อนีจ
+อนึก
+อนึ่ง
+อนุ
+อนุกร
+อนุกรม
+อนุกรรมการ
+อนุกระเบียด
+อนุกาชาด
+อนุการ
+อนุกูล
+อนุคามิก
+อนุคามี
+อนุเคราะห์
+อนุจร
+อนุช
+อนุชา
+อนุชาต
+อนุชิต
+อนุญาต
+อนุญาโตตุลาการ
+อนุเถระ
+อนุทิน
+อนุบท
+อนุบาล
+อนุบุพ
+อนุปริญญา
+อนุปสัมบัน
+อนุปัสนา
+อนุพงศ์
+อนุพนธ์
+อนุพันธ์
+อนุโพธ
+อนุภรรยา
+อนุภาค
+อนุภาษ
+อนุมัติ
+อนุมาตรา
+อนุมาน
+อนุมูล
+อนุโมทนา
+อนุโยค
+อนุรักษ์
+อนุราช
+อนุราธา
+อนุรูป
+อนุโลม
+อนุวงศ์
+อนุวัต
+อนุวาต
+อนุศาสก
+อนุศาสน์
+อนุศาสนาจารย์
+อนุศิษฏ์
+อนุสติ
+อนุสนธิ
+อนุสภากาชาด
+อนุสร
+อนุสรณ์
+อนุสัญญา
+อนุสัย
+อนุสาวรีย์
+อนุสาสนี
+อเนก
+อเนกคุณ
+อเนกวิธ
+อเนจอนาถ
+อเนญชาภิสังขาร
+อเนสนา
+อโนชา
+อโนดาต
+อบ
+อบเชย
+อบาย
+อป
+อปการ
+อปทาน
+อปเทศ
+อปภาคย์
+อปมงคล
+อปมาน
+อปยศ
+อปรกติ
+อประมาณ
+อประมาท
+อประไมย
+อปรัณ
+อปรา
+อปราชัย
+อปราชิต
+อปราธ
+อปราปรเจตนา
+อปราปรเวทนียกรรม
+อปริมาณ
+อปริหาริยธรรม
+อปลักษณ์
+อปโลกน์
+อปวาท
+อปหาร
+อปัณณกปฏิปทา
+อปัทรพ
+อปาจายนะ
+อปาจี
+อปาจีน
+อปุญญาภิสังขาร
+อเปหิ
+อพจน์
+อพพะ
+อพยพ
+อพยาบาทวิตก
+อพล
+อพลา
+อพาร์ตเมนต์
+อภว
+อภัพ
+อภัย
+อภิ
+อภิคม
+อภิฆาต
+อภิจฉา
+อภิจฌา
+อภิชน
+อภิชัย
+อภิชาต
+อภิชิต
+อภิญญา
+อภิญญาณ
+อภิฐาน
+อภิธรรม
+อภิธาน
+อภิไธย
+อภินันท์
+อภินัย
+อภินาท
+อภินิหาร
+อภิเนษกรมณ์
+อภิบาล
+อภิปรัชญา
+อภิปราย
+อภิมหาอำนาจ
+อภิมานะ
+อภิมุข
+อภิรดี
+อภิรติ
+อภิรมย์
+อภิรักษ์
+อภิรัฐมนตรี
+อภิราม
+อภิรุต
+อภิรุม
+อภิรูป
+อภิลักขิต
+อภิลาส
+อภิเลปน์
+อภิวันท์
+อภิวาท
+อภิวาทน์
+อภิเษก
+อภิสทธิ์
+อภิสมโพธิ
+อภิสมัย
+อภิสังขาร
+อภิสัมโพธิ
+อภิสิต
+อภูต
+อม
+อ้ม
+อมตะ
+อมนุษย์
+อมร
+อมรบดี
+อมรปุระ
+อมรรัตน์
+อมรราช
+อมรสตรี
+อมเรศ
+อมเรศวร
+อมฤต
+อมฤตยู
+อมัจจะ
+อมัตร
+อมาตย์
+อมาวสุ
+อมาวาสี
+อมิตร
+อเมริกัน
+อย
+อยน
+อยัส
+อย่า
+อยาก
+อย่าง
+อยุติธรรม
+อยุทธ์
+อยู่
+อร
+อรช
+อรชร
+อรชุน
+อรณ
+อรดี
+อรติ
+อรไท
+อรธาน
+อรนุช
+อรพินท์
+อรพิม
+อรรค
+อรรฆ
+อรรฆย์
+อรรจน์
+อรรณพ
+อรรถ
+อรรธ
+อรรธางค์
+อรสุม
+อรหะ
+อรหัง
+อรหัต
+อรหัน
+อรหันต์
+อร่อย
+อรัญ
+อรันต์
+อราดี
+อราติ
+อร่าม
+อริ
+อริน
+อริยกะ
+อริยะ
+อรุ
+อรุณ
+อรุ่ม
+อรูป
+อลงกต
+อลงกรณ์
+อลงการ
+อลวน
+อลเวง
+อลหม่าน
+อล่องฉ่อง
+อลักเอลื่อ
+อลัชชี
+อล่างฉ่าง
+อลิ
+อลิงค์
+อลึงค์
+อลึ่งฉึ่ง
+อโลหะ
+อวก
+อ้วก
+อวกาศ
+อวเคราะห์
+อวจร
+อวชัย
+อวชาต
+อวด
+อวตาร
+อวน
+อ้วน
+อวนิ
+อวบ
+อวมงคล
+อวมอำ
+อ้วมเอีย
+อวย
+อวยวะ
+อวรุทธ์
+อวรุธทก
+อวล
+อวสาน
+อวหาร
+อวัตถา
+อวัยวะ
+อวัสดา
+อวาจี
+อวิจี
+อวิชชา
+อวิญญู
+อวิรุทธ์
+อวิโรธน์
+อวีจิ
+อเวจี
+อเวไนยสัตว์
+อโศก
+อสงไขย
+อสนี
+อสภ
+อสมการ
+อสมมาตร
+อสรพิษ
+อสังกมทรัพย์
+อสังขตธรรม
+อสังหาริมะ
+อสัญญี
+อสัญแดหวา
+อสัตถพฤกษ์
+อสัตย์
+อสาธร
+อสาธุ
+อสาพติ
+อสิ
+อสิต
+อสีตยานุพยัญชนะ
+อสีติ
+อสุ
+อสุจิ
+อสุญกัลป์
+อสุนีบาต
+อสุภ
+อสุรินทร์
+อสุรี
+อสุเรนทร์
+อสุเรศ
+อสูร
+อเส
+อเสกขะ
+อเสขะ
+อเสวนะ
+อเสวนา
+อห
+อหังการ
+อหิ
+อหิงสา
+อหึงสา
+อเหตุกทิฐิ
+อโหสิ
+ออ
+อ้อ
+อ๋อ
+ออก
+ออกซิเจน
+ออกซิเดชัน
+ออกไซด์
+อ่อง
+อ๋อง
+อ้องแอ้ง
+ออเซาะ
+ออด
+อ๊อดๆแอ๊ดๆ
+อ๊อดแอ๊ด
+อ่อน
+อ้อน
+ออนซ์
+ออนซอน
+อ่อนซอน
+อ้อนแอ้น
+ออฟฟิศ
+ออม
+อ่อม
+อ้อม
+ออมครอม
+ออมชอม
+ออมซอม
+อ้อมแอ้ม
+อ่อย
+อ้อย
+อ๋อย
+อ้อยส้อย
+อ้อยอิ่ง
+ออร์แกน
+ออร์เดิร์ฟ
+ออสเมียม
+อ้อแอ้
+อ๊ะ
+อะคร้าว
+อะเคื้อ
+อะจีน
+อะแจ
+อะเซทิลีน
+อะดรืนาลิน
+อะดัก
+อะดุง
+อะตอม
+อะนะ
+อะนั้น
+อะนี้
+อะมีบา
+อะเมริเซียม
+อะร้าอร่าม
+อะไร
+อะลังการ
+อะลุ่มอล่วย
+อะลุ้มอล่วย
+อะลูมิเนียม
+อะหม
+อะไหล่
+อะอื้อ
+อะเอื้อย
+อัก
+อั้ก
+อั๊ก
+อั้กๆ
+อั๊กๆ
+อักกะ
+อักโกธะ
+อักโกสวัตถุ
+อักข
+อักขระ
+อักขรานุกรมภูมิศาสตร์
+อักขาน
+อักโข
+อักโขภิณี
+อักโขเภณี
+อักษร
+อักษะ
+อักเษาหิณี
+อักเสบ
+อักอ่วน
+อัคคะ
+อัคคิ
+อัคคี
+อัคนิ
+อัคนี
+อัคนีกรีฑา
+อัง
+อังก์
+อังกนะ
+อังกฤษ
+อังกวด
+อังกะลุง
+อังกา
+อังกาบ
+อังกุร
+อังกุศ
+อังกูร
+อังคณะ
+อังคณา
+อังคะ
+อังคาร
+อังคาส
+อังคีรส
+อังคุฐ
+อังฆาต
+อั้งเปา
+อั้งม้อ
+อั้งยี่
+อั้งโล่
+อังศะ
+อังศุ
+อังศุก
+อังสตรอม
+อังสนา
+อังสะ
+อัจกลับ
+อัจจันต์
+อัจจัย
+อัจจิ
+อัจจุต
+อัจเจกะ
+อัจฉรา
+อัจฉริยะ
+อัจนา
+อัชฌา
+อัชฌาจาร
+อัชฌาศัย
+อัชฌาสัย
+อัชบาล
+อัญขยม
+อัญชนะ
+อัญชลี
+อัญชัน
+อัญเชิญ
+อัญญะ
+อัญประกาศ
+อัญมัญญะ
+อัญรูป
+อัฏ
+อัฏฐ
+อัฏนา
+อัฐ
+อัฐมะ
+อัฐฬส
+อัฐิ
+อัณฑะ
+อัณณพ
+อัด
+อัดแจ
+อัตคัด
+อัตจริยา
+อัตตะ
+อัตตา
+อัตถ์
+อัตถะ
+อัตโนมัติ
+อัตรชะ
+อัตรา
+อัตลัด
+อัททา
+อัทธ์
+อัทธา
+อัทธาน
+อัธยาตมวิทยา
+อัธยาย
+อัธยาศัย
+อัน
+อั้น
+อั๋น
+อันดก
+อันดร
+อันดับ
+อันด๊าก
+อันโด๊ก
+อันตร
+อันตรธาน
+อันตรา
+อันตราย
+อันติก
+อันติมะ
+อันเต
+อันโต
+อันแถ้ง
+อันทุ
+อันโทล
+อันนะ
+อันยะ
+อันโยนยะ
+อันวัย
+อันเวส
+อับ
+อับปาง
+อัปกะ
+อัปการ
+อัปฏิฆะ
+อัปฏิภาค
+อัปปะ
+อัปภาคย์
+อัปมงคล
+อัปยศ
+อัประมาณ
+อัประมาท
+อัประไมย
+อัปราชัย
+อัปรีย์
+อัปลักษณ์
+อัปสร
+อัพพุท
+อัพโพหาริก
+อัพภันดร
+อัพภาน
+อัพภาส
+อัม
+อัมพร
+อัมพา
+อัมพิล
+อัมพุ
+อัยกะ
+อัยกา
+อัยการ
+อัยกี
+อัยยะ
+อัยยาภริยา
+อัยยิกา
+อัลตราไวโอเลต
+อั่ว
+อั๊ว
+อัศจรรย์
+อัศเจรีย์
+อัษฎมะ
+อัสดง
+อัสดม
+อัสนี
+อัสมิมานะ
+อัสสะ
+อัสสัตถพฤกษ์
+อัสสุ
+อา
+อ่า
+อ้า
+อากง
+อากร
+อากังขา
+อากัป
+อากัมปนะ
+อากัมปะ
+อาการ
+อากาศ
+อากิญจัญญะ
+อากูล
+อาเกียรณ์
+อาขยาต
+อาขยาน
+อาคเนย์
+อาคม
+อาครหายณี
+อาคันตุกะ
+อาคาร
+อาฆาต
+อาฆาตนะ
+อ่าง
+อ้าง
+อางขนาง
+อ้างว้าง
+อาจ
+อาจม
+อาจมน
+อาจาด
+อาจาร
+อาจารย์
+อาจิณ
+อาเจียน
+อาชญัปติ
+อาชญัปติ์
+อาชญา
+อาชวะ
+อาชา
+อาชาน
+อาชานิ
+อาชาไนย
+อาชีพ
+อาชีวก
+อาชีวนะ
+อาชีวะ
+อาญา
+อาฏาตา
+อาณัติ
+อาณา
+อาณาปก
+อาณาปน
+อาด
+อาดๆ
+อาดุลย์
+อาดูร
+อาดูลย์
+อาเด๊ะ
+อาตมัน
+อาตุร
+อาถรรพ์
+อาถรรพณ์
+อาถรรพณะ
+อาทมาฏ
+อาทร
+อาทาตา
+อาทาน
+อาทิกวี
+อาทิตย์
+อาทีนพ
+อาทีนว
+อาทึก
+อาเทศ
+อาธรรม
+อาธรรม์
+อาธรรมิก
+อาธรรมึก
+อาธาน
+อาธาร
+อาน
+อ่าน
+อานก
+อานน
+อานนท์
+อานะ
+อานันท์
+อานันทนะ
+อานัม
+อานำ
+อานิก
+อานิสงฆ์
+อานุภาพ
+อานุภาวะ
+อาบ
+อาบัง
+อาบัติ
+อาบัน
+อาบู
+อาปณะ
+อาปะ
+อาปานะ
+อาโป
+อาพัด
+อาพัทธ์
+อาพันธ์
+อาพันธนะ
+อาพาธ
+อาพิล
+อาเพศ
+อาภรณ์
+อาภัพ
+อาภัสระ
+อาภา
+อาภาส
+อาโภค
+อามลก
+อามัย
+อามา
+อามิษ
+อามิส
+อาย
+อ้าย
+อายต
+อายตนะ
+อายน
+อายัด
+อายัต
+อายัน
+อายาจนะ
+อายาน
+อายุ
+อายุกตกะ
+อายุตกะ
+อายุธ
+อายุษ
+อาร์กอน
+อารดี
+อาร์ต
+อารติ
+อารทรา
+อารบิค
+อาร์ม
+อารมณ์
+อารยะ
+อาระ
+อารักขา
+อารักษ์
+อารัญ
+อารัญญิก
+อารัณย์
+อารัณยกะ
+อารัติ
+อารัมภ์
+อาราธน์
+อาราธนา
+อาราม
+อารี
+อารุม
+อาลปน์
+อาลปนะ
+อาละวาด
+อาลักษณ์
+อาลัย
+อาลัว
+อาลิ
+อาลี
+อาโลก
+อาว
+อ่าว
+อ้าว
+อาวรณ์
+อาวัชนาการ
+อาวาส
+อาวาหะ
+อาวิล
+อาวุต
+อาวุธ
+อาวุโส
+อาเวค
+อาเวศ
+อาศรม
+อาศรมบท
+อาศเลษา
+อาศัย
+อาศุ
+อาเศียร
+อาษาฒ
+อาสนะ
+อาสภิวาจา
+อาสยานุสัย
+อาสวกษัย
+อาสวกิเลส
+อาสัญ
+อาสัตย์
+อาสันนะ
+อาสา
+อาสาฬห์
+อาสิญจ์
+อาสิน
+อาสูร
+อาเสี่ย
+อาแสะ
+อาหต
+อาหตี
+อาหนี
+อาหนู
+อาหม
+อาหยัง
+อาหยัน
+อาหร
+อาหรัดกัดติกา
+อาหรับ
+อาหลักอาเหลื่อ
+อาหาร
+อาหุดี
+อาฬหก
+อาฬาหนะ
+อำ
+อ่ำ
+อำแดง
+อำนด
+อำนนต์
+อำนรรฆ
+อำนวย
+อำนาจ
+อำนาถ
+อำนิฐ
+อำนิษฐ์
+อำปลัง
+อำพน
+อำพะนำ
+อำพัน
+อำไพ
+อำเภอ
+อำเภอใจ
+อำมร
+อำมฤคโชค
+อำมฤต
+อำมหิต
+อำมาตย์
+อำยวน
+อำรุง
+อำลา
+อำอวม
+อ้ำอึ้ง
+อิก
+อิง
+อิงค์
+อิงอร
+อิจฉา
+อิฉัน
+อิชยา
+อิฐ
+อิณ
+อิด
+อิตถี
+อิตเทรียม
+อิตเทอร์เบียม
+อิติหาส
+อิทธิ
+อิธโลก
+อิน
+อินซูลิน
+อินเดีย
+อินเดียนแดง
+อินเดียม
+อินท์
+อินทขีล
+อินทนิล
+อินทนิลน้ำ
+อินทผลัม
+อินทร์
+อินทรี
+อินทรีย์
+อินทีวร
+อินทุ
+อินธน์
+อินฟราเรด
+อินและหยัง
+อินวอยซ์
+อิ่ม
+อิมัลชัน
+อิริเดียม
+อิริยา
+อิรุพเพท
+อิลู
+อิเล็กตรอน
+อิเล็กทรอนิกส์
+อิเล็กโทน
+อิศ
+อิศร
+อิศวร
+อิษฏ์
+อิษฏี
+อิส
+อิสตรี
+อิสระ
+อิสริยะ
+อิสสา
+อิสัตรี
+อิสิ
+อิสี
+อิหม่าม
+อี
+อี่
+อี้
+อี๊
+อี๋
+อีก
+อีก้อ
+อีก๋อย
+อีกา
+อีก๋า
+อีเก้ง
+อีเกร็ง
+อีเก้อีกัง
+อีแก
+อีแก่
+อีแก้
+อีโก้ง
+อีโก๊ะ
+อีคว่ำอีหงาย
+อีจู้
+อีฉัน
+อีฉุยอีแฉก
+อีชุก
+อี๊ด
+อีดอก
+อีดำอีแดง
+อีตัว
+อีตาล
+อีเต้อ
+อีโต้
+อีถ่าง
+อีทุก
+อีทุบ
+อีเทอร์
+อีนุงตุงนัง
+อีนูน
+อีโน
+อีโนงโตงเนง
+อีบึ้ง
+อีปุด
+อีเป็ด
+อีเป้า
+อีแปะ
+อีโปง
+อีเพา
+อีมู
+อีรม
+อีรุ้ง
+อีแรดแจ๊ดแจ๋
+อีแร้แท้แต่
+อีลอง
+อีล่อยป่อยแอ
+อีลุ้ม
+อีลุ่ยฉุยแฉก
+อีเลิ้ง
+อีแล่ง
+อีโลง
+อีศวร
+อีส
+อีสเตอร์
+อีสา
+อีสาน
+อีสุกอีใส
+อีหนองอีแหนง
+อีหรอบ
+อีหลักอีเหลื่อ
+อีหลัดถัดทา
+อีหลี
+อีหลุกขลุกขลัก
+อีหลุกขลุกขลุ่ย
+อีหลุยฉุยแฉก
+อีเห็น
+อีเหน็บ
+อีเหนียว
+อีเหยี่ยว
+อีเหละเขละขละ
+อีเหละเขะขะ
+อีโหน่อีเหน่
+อีโหลกโขลกเขลก
+อีแอ่น
+อึ
+อึก
+อึ๊ก
+อึกทึก
+อึกอัก
+อึง
+อึ่ง
+อึ้ง
+อึด
+อึดตะปือ
+อึ้ดทึ่ด
+อึน
+อืด
+อื่น
+อื้น
+อือ
+อื้อ
+อุ
+อุก
+อุกกา
+อุกฤษฏ์
+อุกลา
+อุค
+อุคร
+อุคหนิมิต
+อุคหะ
+อุโฆษ
+อุ้ง
+อุจ
+อุจจาระ
+อุจฉุ
+อุจเฉท
+อุจาด
+อุชุ
+อุญฉาจริยา
+อุฏฐาการ
+อุณหะ
+อุณหิส
+อุณา
+อุด
+อุดเตา
+อุดม
+อุดร
+อุดหนุน
+อุดากัน
+อุตดม
+อุตดร
+อุตตมะ
+อุตบล
+อุตพิด
+อุตรา
+อุตริ
+อุตลุด
+อุตส่าห์
+อุตสาหะ
+อุตุ
+อุทก
+อุททาม
+อุทธรณ์
+อุทธัจ
+อุทยาน
+อุทร
+อุทริยะ
+อุทลุม
+อุทัย
+อุทาน
+อุทาร
+อุทาหรณ์
+อุทิศ
+อุทุมพร
+อุเทศ
+อุเทสิกเจดีย์
+อุธัจ
+อุ่น
+อุนากัน
+อุบ
+อุบล
+อุบะ
+อุบ๊ะ
+อุบัติ
+อุบาท
+อุบาทว์
+อุบาย
+อุบาสก
+อุบาสิกา
+อุเบกขา
+อุโบสถ
+อุโบสถหัตถี
+อุป
+อุปกรณ์
+อุปกรม
+อุปการ
+อุปการะ
+อุปกาศสาร
+อุปกิณณะ
+อุปกิเลส
+อุปฆาตกกรรม
+อุปจาร
+อุปถัมภ์
+อุปถัมภก
+อุปทม
+อุปทูต
+อุปเทศ
+อุปเท่ห์
+อุปธิ
+อุปธิวิเวก
+อุปนัย
+อุปนายก
+อุปนายน
+อุปนิกขิต
+อุปนิกษิต
+อุปนิษัท
+อุปนิสัย
+อุปบล
+อุปบัติ
+อุปบาท
+อุปพัทธ์
+อุปพันธ์
+อุปภิเษก
+อุปโภค
+อุปมา
+อุปมาน
+อุปมาอุปไมย
+อุปไมย
+อุปยุวราช
+อุปโยค
+อุปโยราช
+อุปรากร
+อุปราคา
+อุปราช
+อุปริ
+อุปโลกน์
+อุปโลกห์
+อุปสมบท
+อุปสมบัน
+อุปสรรค
+อุปสัมบัน
+อุปสัมปทา
+อุปฮาด
+อุปัชฌาย์
+อุปัชฌายะ
+อุปัฏฐาก
+อุปัฏฐานะ
+อุปัทวะ
+อุปาขยาน
+อุปาธยาย
+อุปายาส
+อุปาหนา
+อุภโตสงฆ์
+อุภัย
+อุ้ม
+อุมงค์
+อุมมัต
+อุมา
+อุโมงค์
+อุย
+อุ้ย
+อุ๊ย
+อุยยาน
+อุยยาม
+อุยโยค
+อุรค
+อุรณ
+อุรพี
+อุรส
+อุระ
+อุรังอุตัง
+อุรัจฉทะ
+อุรัจฉัท
+อุรา
+อุรุ
+อุไร
+อุลปนะ
+อุลโลจ
+อุลโลละ
+อุลามก
+อุลิด
+อุลูก
+อุโลก
+อุวะ
+อุแว้
+อุษณีษ์
+อุษม
+อุษมัน
+อุษา
+อุษาหะ
+อุสภ
+อุสวะ
+อุสส่าห์
+อุสสาหะ
+อุสา
+อุสุ
+อุสุภ
+อุสุม
+อุหรับ
+อุหลบ
+อุเหม่
+อุฬาร
+อู
+อู่
+อู้
+อู๋
+อูฐ
+อูด
+อูม
+อูรู
+อู๋อี๋
+เอ
+เอ้
+เอ้ๆแอ่น
+เอก
+เอ๊ก
+เอกเขนก
+เอกจักษุ
+เอกจิต
+เอกฉันท์
+เอกชน
+เอกซโป
+เอกซเรย์
+เอกเทศ
+เอกโทษ
+เอกนัย
+เอกบุคคล
+เอกบุรุษ
+เอกพจน์
+เอกพันธ์
+เอกภพ
+เอกภริยา
+เอกภักดิ์
+เอกภาคี
+เอกภาพ
+เอกม
+เอกมติ
+เอกมัย
+เอกรรถประโยค
+เอกรส
+เอกระ
+เอกราช
+เอกลักษณ์
+เอกศก
+เอกส
+เอกสมังคี
+เอกสาร
+เอกสิทธิ์
+เอกอัครราชทูต
+เอกอุ
+เอกัคตา
+เอกังสพยากรณ์
+เอกังสวาที
+เอกัตภาพ
+เอกา
+เอ้กา
+เอกิกา
+เอกีภูต
+เอเคอร์
+เอง
+เอ็ง
+เอ๋ง
+เอเชี่ยนเกมส์
+เอ็ด
+เอดส์
+เอตทัคคะ
+เอ้เต
+เอทิลแอลกอฮอล์
+เอน
+เอ็น
+เอนไซม์
+เอ็นดู
+เอนทรานซ์
+เอม
+เอ็มบริโอ
+เอย
+เอ่ย
+เอ๊ย
+เอ๋ย
+เอเย่นต์
+เอร็ดอร่อย
+เอราวัณ
+เอลา
+เอลาฬุก
+เอว
+เอ๊ว
+เอวัง
+เอ้หมึง
+เอหิปัสสิโก
+เอหิภิกขุอุปสัมปทา
+เอฬก
+เอฬา
+เออ
+เอ่อ
+เออร์เบียม
+เอ้อระเหย
+เอ้อเร้อ
+เอ้อเฮอ
+เอ้แอ่น
+เอ๊ะ
+เอะใจ
+เอะอะ
+เอา
+เอ้า
+เอาทาร
+เอาทารย์
+เอารส
+เอาฬาร
+เอาะลาย
+เอิก
+เอิ้ก
+เอิน
+เอิ้น
+เอิบ
+เอียง
+เอี้ยง
+เอียด
+เอี๊ยด
+เอียน
+เอี่ยน
+เอี่ยม
+เอี๊ยม
+เอี้ยมจุ๊น
+เอี้ยมเฟี้ยม
+เอี่ยว
+เอี้ยว
+เอื้อ
+เอื้อง
+เอื้องชัน
+เอือด
+เอือน
+เอื้อน
+เอือม
+เอื้อม
+เอื่อย
+เอื้อย
+เอื่อยๆ
+แอ
+แอ้
+แอ๋
+แอก
+แอกทิเนียม
+แอ่ง
+แอ้งแม้ง
+แอด
+แอ้ด
+แอ๊ด
+แอดๆ
+แอ๊ดๆ
+แอ่น
+แอนติเจน
+แอนติบอดี
+แอนติอิเล็กตรอน
+แอ่นลม
+แอโนด
+แอบ
+แอ้ม
+แอมแปร์
+แอมเฟตามีน
+แอมมิเตอร์
+แอมโมเนีย
+แอร่ม
+แอร์โฮสเตส
+แอลกอฮอล์
+แอลฟา
+แอว
+แอ่ว
+แอ้วแซ่ว
+แอสทาทีน
+แอสไพริน
+แอสฟัลต์
+แอหนัง
+แออวย
+แออัด
+โอ
+โอ่
+โอ้
+โอ๋
+โอก
+โอ้ก
+โอ๊ก
+โอกาส
+โอฆะ
+โอ่ง
+โองการ
+โองโขดง
+โอชะ
+โอชา
+โอโซน
+โอฐ
+โอด
+โอต
+โอตตัปปะ
+โอทนะ
+โอน
+โอบ
+โอปปาติกะ
+โอเปก
+โอภา
+โอภาส
+โอม
+โอย
+โอ๊ย
+โอรส
+โอละพ่อ
+โอลิมปิก
+โอเลี้ยง
+โอวาท
+โอษฐ์
+โอสถ
+โอสาน
+โอหนอ
+โอห์ม
+โอหัง
+โอฬาร
+โอ้เอ้
+โอเอซิส
+โอ้โฮ
+ไอ
+ไอ้เข้
+ไอโซโทป
+ไอน์สไตเนียม
+ไอยรา
+ไอยเรศ
+ไอราพต
+ไอราวัณ
+ไอศกรีม
+ไอศวรรย์
+ไอออน
+ไอโอดีน
+ฮ
+ฮกเกี้ยน
+ฮกลกซิ่ว
+ฮ้ง
+ฮด
+ฮวงซุ้ย
+ฮวน
+ฮ้วน
+ฮ้วนหมู
+ฮวบ
+ฮวย
+ฮ่อ
+ฮ้อ
+ฮอกกี้
+ฮ่อง
+ฮ่องเต้
+ฮองเฮา
+ฮอด
+ฮอตดอก
+ฮ่อม
+ฮ่อมดง
+ฮ่อมเมือง
+ฮ่อมริน
+ฮอร์โมน
+ฮอลแลนด์
+ฮอลันดา
+ฮะ
+ฮัก
+ฮักๆ
+ฮังเล
+ฮัดเช้ย
+ฮั่น
+ฮั้ว
+ฮา
+ฮ้า
+ฮ่าๆ
+ฮ่างหลวง
+ฮาม
+ฮาราคีรี
+ฮาเร็ม
+ฮาห์เนียม
+ฮิๆ
+ฮิจเราะห์
+ฮินดู
+ฮิปปี้
+ฮิปโปโปเตมัส
+ฮิสทีเรีย
+ฮี้
+ฮีเลียม
+ฮึ
+ฮึก
+ฮึด
+ฮึม
+ฮึ่ม
+ฮึย
+ฮืดฮาด
+ฮือ
+ฮื่อ
+ฮื้อ
+ฮุด
+ฮุบ
+ฮุยเลฮุย
+ฮู้
+ฮูก
+ฮูม
+เฮ
+เฮ้
+เฮกตาร์
+เฮกโตกรัม
+เฮกโตเมตร
+เฮกโตลิตร
+เฮง
+เฮโมโกลบิน
+เฮย
+เฮ้ย
+เฮโรอีน
+เฮลิคอปเตอร์
+เฮ้ว
+เฮอ
+เฮ้อ
+เฮิรตซ์
+เฮีย
+เฮี้ยน
+เฮี้ยบ
+เฮี้ยว
+เฮือก
+เฮือน
+แฮ
+แฮ่
+แฮ่กึ๊น
+แฮนด์บอล
+แฮฟเนียม
+แฮม
+แฮมเบอร์เกอร์
+แฮะ
+โฮ
+โฮก
+โฮเต็ล
+โฮลเมียม
+โฮะ
+ไฮ้
+ไฮโกรมิเตอร์
+ไฮด์ปาร์ก
+ไฮดรา
+ไฮโดรคาร์บอน
+ไฮโดรเจน
+ไฮโดรเจนซัลไฟด์
+ไฮโดรเจนเพอร์ออกไซด์
+ไฮโดรมิเตอร์
+ไฮไฟ
+ไฮโล
+ไฮฮี
diff --git a/src/com/ibm/icu/dev/data/thai6.ucs b/src/com/ibm/icu/dev/data/thai6.ucs
new file mode 100755
index 0000000..bab0543
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/thai6.ucs
Binary files differ
diff --git a/src/com/ibm/icu/dev/data/unicode/CompositionExclusions-1.txt b/src/com/ibm/icu/dev/data/unicode/CompositionExclusions-1.txt
new file mode 100755
index 0000000..5ea46af
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/CompositionExclusions-1.txt
@@ -0,0 +1,143 @@
+# Composition Exclusions
+# This file lists the characters from the UTR #15 Composition Exclusion Table.
+#
+# For more information, see
+# http://www.unicode.org/unicode/reports/tr15/#Primary Exclusion List Table
+
+# (1) Script Specifics
+# This list of characters cannot be derived from the UnicodeData file.
+
+0958 # DEVANAGARI LETTER QA
+0959 # DEVANAGARI LETTER KHHA
+095A # DEVANAGARI LETTER GHHA
+095B # DEVANAGARI LETTER ZA
+095C # DEVANAGARI LETTER DDDHA
+095D # DEVANAGARI LETTER RHA
+095E # DEVANAGARI LETTER FA
+095F # DEVANAGARI LETTER YYA
+09DC # BENGALI LETTER RRA
+09DD # BENGALI LETTER RHA
+09DF # BENGALI LETTER YYA
+0A33 # GURMUKHI LETTER LLA
+0A36 # GURMUKHI LETTER SHA
+0A59 # GURMUKHI LETTER KHHA
+0A5A # GURMUKHI LETTER GHHA
+0A5B # GURMUKHI LETTER ZA
+0A5E # GURMUKHI LETTER FA
+0B5C # ORIYA LETTER RRA
+0B5D # ORIYA LETTER RHA
+0F43 # TIBETAN LETTER GHA
+0F4D # TIBETAN LETTER DDHA
+0F52 # TIBETAN LETTER DHA
+0F57 # TIBETAN LETTER BHA
+0F5C # TIBETAN LETTER DZHA
+0F69 # TIBETAN LETTER KSSA
+0F76 # TIBETAN VOWEL SIGN VOCALIC R
+0F78 # TIBETAN VOWEL SIGN VOCALIC L
+0F93 # TIBETAN SUBJOINED LETTER GHA
+0F9D # TIBETAN SUBJOINED LETTER DDHA
+0FA2 # TIBETAN SUBJOINED LETTER DHA
+0FA7 # TIBETAN SUBJOINED LETTER BHA
+0FAC # TIBETAN SUBJOINED LETTER DZHA
+0FB9 # TIBETAN SUBJOINED LETTER KSSA
+FB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A # HEBREW LETTER SHIN WITH SHIN DOT
+FB2B # HEBREW LETTER SHIN WITH SIN DOT
+FB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+FB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2E # HEBREW LETTER ALEF WITH PATAH
+FB2F # HEBREW LETTER ALEF WITH QAMATS
+FB30 # HEBREW LETTER ALEF WITH MAPIQ
+FB31 # HEBREW LETTER BET WITH DAGESH
+FB32 # HEBREW LETTER GIMEL WITH DAGESH
+FB33 # HEBREW LETTER DALET WITH DAGESH
+FB34 # HEBREW LETTER HE WITH MAPIQ
+FB35 # HEBREW LETTER VAV WITH DAGESH
+FB36 # HEBREW LETTER ZAYIN WITH DAGESH
+FB38 # HEBREW LETTER TET WITH DAGESH
+FB39 # HEBREW LETTER YOD WITH DAGESH
+FB3A # HEBREW LETTER FINAL KAF WITH DAGESH
+FB3B # HEBREW LETTER KAF WITH DAGESH
+FB3C # HEBREW LETTER LAMED WITH DAGESH
+FB3E # HEBREW LETTER MEM WITH DAGESH
+FB40 # HEBREW LETTER NUN WITH DAGESH
+FB41 # HEBREW LETTER SAMEKH WITH DAGESH
+FB43 # HEBREW LETTER FINAL PE WITH DAGESH
+FB44 # HEBREW LETTER PE WITH DAGESH
+FB46 # HEBREW LETTER TSADI WITH DAGESH
+FB47 # HEBREW LETTER QOF WITH DAGESH
+FB48 # HEBREW LETTER RESH WITH DAGESH
+FB49 # HEBREW LETTER SHIN WITH DAGESH
+FB4A # HEBREW LETTER TAV WITH DAGESH
+FB4B # HEBREW LETTER VAV WITH HOLAM
+FB4C # HEBREW LETTER BET WITH RAFE
+FB4D # HEBREW LETTER KAF WITH RAFE
+FB4E # HEBREW LETTER PE WITH RAFE
+
+# (2) Post Composition Version characters
+# These characters cannot be derived from the UnicodeData file.
+# (There are no characters in this category in this version of Unicode.)
+
+# (3) Singleton Decompositions
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition
+# consists of a single character.
+# These characters are simply quoted here for reference.
+
+# 0340 COMBINING GRAVE TONE MARK
+# 0341 COMBINING ACUTE TONE MARK
+# 0343 COMBINING GREEK KORONIS
+# 0374 GREEK NUMERAL SIGN
+# 037E GREEK QUESTION MARK
+# 0387 GREEK ANO TELEIA
+# 1F71 GREEK SMALL LETTER ALPHA WITH OXIA
+# 1F73 GREEK SMALL LETTER EPSILON WITH OXIA
+# 1F75 GREEK SMALL LETTER ETA WITH OXIA
+# 1F77 GREEK SMALL LETTER IOTA WITH OXIA
+# 1F79 GREEK SMALL LETTER OMICRON WITH OXIA
+# 1F7B GREEK SMALL LETTER UPSILON WITH OXIA
+# 1F7D GREEK SMALL LETTER OMEGA WITH OXIA
+# 1FBB GREEK CAPITAL LETTER ALPHA WITH OXIA
+# 1FBE GREEK PROSGEGRAMMENI
+# 1FC9 GREEK CAPITAL LETTER EPSILON WITH OXIA
+# 1FCB GREEK CAPITAL LETTER ETA WITH OXIA
+# 1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+# 1FDB GREEK CAPITAL LETTER IOTA WITH OXIA
+# 1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+# 1FEB GREEK CAPITAL LETTER UPSILON WITH OXIA
+# 1FEE GREEK DIALYTIKA AND OXIA
+# 1FEF GREEK VARIA
+# 1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA
+# 1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA
+# 1FFD GREEK OXIA
+# 2000 EN QUAD
+# 2001 EM QUAD
+# 2126 OHM SIGN
+# 212A KELVIN SIGN
+# 212B ANGSTROM SIGN
+# 2329 LEFT-POINTING ANGLE BRACKET
+# 232A RIGHT-POINTING ANGLE BRACKET
+# F900 CJK COMPATIBILITY IDEOGRAPH-F900
+#.. FA0D CJK COMPATIBILITY IDEOGRAPH-FA0D
+# FA10 CJK COMPATIBILITY IDEOGRAPH-FA10
+# FA12 CJK COMPATIBILITY IDEOGRAPH-FA12
+# FA15 CJK COMPATIBILITY IDEOGRAPH-FA15
+#.. FA1E CJK COMPATIBILITY IDEOGRAPH-FA1E
+# FA20 CJK COMPATIBILITY IDEOGRAPH-FA20
+# FA22 CJK COMPATIBILITY IDEOGRAPH-FA22
+# FA25 CJK COMPATIBILITY IDEOGRAPH-FA25
+# FA26 CJK COMPATIBILITY IDEOGRAPH-FA26
+# FA2A CJK COMPATIBILITY IDEOGRAPH-FA2A
+#.. FA2D CJK COMPATIBILITY IDEOGRAPH-FA2D
+
+# (4) Non-Starter Decompositions
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition consists
+# of a sequence of characters, the first of which has a canonical
+# class of zero.
+# These characters are simply quoted here for reference.
+
+# 0344 COMBINING GREEK DIALYTIKA TONOS
+# 0F73 TIBETAN VOWEL SIGN II
+# 0F75 TIBETAN VOWEL SIGN UU
+# 0F81 TIBETAN VOWEL SIGN REVERSED II
diff --git a/src/com/ibm/icu/dev/data/unicode/CompositionExclusions-3.txt b/src/com/ibm/icu/dev/data/unicode/CompositionExclusions-3.txt
new file mode 100755
index 0000000..4717047
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/CompositionExclusions-3.txt
@@ -0,0 +1,163 @@
+# CompositionExclusions-3.txt
+#
+# Composition Exclusions
+# This file lists the characters from the UAX #15 Composition Exclusion Table.
+#
+# For more information, see
+# http://www.unicode.org/unicode/reports/tr15/#Primary Exclusion List Table
+
+# (1) Script Specifics
+# This list of characters cannot be derived from the UnicodeData file.
+
+0958 # DEVANAGARI LETTER QA
+0959 # DEVANAGARI LETTER KHHA
+095A # DEVANAGARI LETTER GHHA
+095B # DEVANAGARI LETTER ZA
+095C # DEVANAGARI LETTER DDDHA
+095D # DEVANAGARI LETTER RHA
+095E # DEVANAGARI LETTER FA
+095F # DEVANAGARI LETTER YYA
+09DC # BENGALI LETTER RRA
+09DD # BENGALI LETTER RHA
+09DF # BENGALI LETTER YYA
+0A33 # GURMUKHI LETTER LLA
+0A36 # GURMUKHI LETTER SHA
+0A59 # GURMUKHI LETTER KHHA
+0A5A # GURMUKHI LETTER GHHA
+0A5B # GURMUKHI LETTER ZA
+0A5E # GURMUKHI LETTER FA
+0B5C # ORIYA LETTER RRA
+0B5D # ORIYA LETTER RHA
+0F43 # TIBETAN LETTER GHA
+0F4D # TIBETAN LETTER DDHA
+0F52 # TIBETAN LETTER DHA
+0F57 # TIBETAN LETTER BHA
+0F5C # TIBETAN LETTER DZHA
+0F69 # TIBETAN LETTER KSSA
+0F76 # TIBETAN VOWEL SIGN VOCALIC R
+0F78 # TIBETAN VOWEL SIGN VOCALIC L
+0F93 # TIBETAN SUBJOINED LETTER GHA
+0F9D # TIBETAN SUBJOINED LETTER DDHA
+0FA2 # TIBETAN SUBJOINED LETTER DHA
+0FA7 # TIBETAN SUBJOINED LETTER BHA
+0FAC # TIBETAN SUBJOINED LETTER DZHA
+0FB9 # TIBETAN SUBJOINED LETTER KSSA
+FB1D # HEBREW LETTER YOD WITH HIRIQ
+FB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A # HEBREW LETTER SHIN WITH SHIN DOT
+FB2B # HEBREW LETTER SHIN WITH SIN DOT
+FB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+FB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2E # HEBREW LETTER ALEF WITH PATAH
+FB2F # HEBREW LETTER ALEF WITH QAMATS
+FB30 # HEBREW LETTER ALEF WITH MAPIQ
+FB31 # HEBREW LETTER BET WITH DAGESH
+FB32 # HEBREW LETTER GIMEL WITH DAGESH
+FB33 # HEBREW LETTER DALET WITH DAGESH
+FB34 # HEBREW LETTER HE WITH MAPIQ
+FB35 # HEBREW LETTER VAV WITH DAGESH
+FB36 # HEBREW LETTER ZAYIN WITH DAGESH
+FB38 # HEBREW LETTER TET WITH DAGESH
+FB39 # HEBREW LETTER YOD WITH DAGESH
+FB3A # HEBREW LETTER FINAL KAF WITH DAGESH
+FB3B # HEBREW LETTER KAF WITH DAGESH
+FB3C # HEBREW LETTER LAMED WITH DAGESH
+FB3E # HEBREW LETTER MEM WITH DAGESH
+FB40 # HEBREW LETTER NUN WITH DAGESH
+FB41 # HEBREW LETTER SAMEKH WITH DAGESH
+FB43 # HEBREW LETTER FINAL PE WITH DAGESH
+FB44 # HEBREW LETTER PE WITH DAGESH
+FB46 # HEBREW LETTER TSADI WITH DAGESH
+FB47 # HEBREW LETTER QOF WITH DAGESH
+FB48 # HEBREW LETTER RESH WITH DAGESH
+FB49 # HEBREW LETTER SHIN WITH DAGESH
+FB4A # HEBREW LETTER TAV WITH DAGESH
+FB4B # HEBREW LETTER VAV WITH HOLAM
+FB4C # HEBREW LETTER BET WITH RAFE
+FB4D # HEBREW LETTER KAF WITH RAFE
+FB4E # HEBREW LETTER PE WITH RAFE
+
+# (2) Post Composition Version precomposed characters
+# These characters cannot be derived from the UnicodeData file.
+
+1D15E # MUSICAL SYMBOL HALF NOTE
+1D15F # MUSICAL SYMBOL QUARTER NOTE
+1D160 # MUSICAL SYMBOL EIGHTH NOTE
+1D161 # MUSICAL SYMBOL SIXTEENTH NOTE
+1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE
+1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE
+1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB # MUSICAL SYMBOL MINIMA
+1D1BC # MUSICAL SYMBOL MINIMA BLACK
+1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE
+1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK
+1D1BF # MUSICAL SYMBOL FUSA WHITE
+1D1C0 # MUSICAL SYMBOL FUSA BLACK
+
+# (3) Singleton Decompositions
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition
+# consists of a single character.
+# These characters are simply quoted here for reference.
+
+# 0340 COMBINING GRAVE TONE MARK
+# 0341 COMBINING ACUTE TONE MARK
+# 0343 COMBINING GREEK KORONIS
+# 0374 GREEK NUMERAL SIGN
+# 037E GREEK QUESTION MARK
+# 0387 GREEK ANO TELEIA
+# 1F71 GREEK SMALL LETTER ALPHA WITH OXIA
+# 1F73 GREEK SMALL LETTER EPSILON WITH OXIA
+# 1F75 GREEK SMALL LETTER ETA WITH OXIA
+# 1F77 GREEK SMALL LETTER IOTA WITH OXIA
+# 1F79 GREEK SMALL LETTER OMICRON WITH OXIA
+# 1F7B GREEK SMALL LETTER UPSILON WITH OXIA
+# 1F7D GREEK SMALL LETTER OMEGA WITH OXIA
+# 1FBB GREEK CAPITAL LETTER ALPHA WITH OXIA
+# 1FBE GREEK PROSGEGRAMMENI
+# 1FC9 GREEK CAPITAL LETTER EPSILON WITH OXIA
+# 1FCB GREEK CAPITAL LETTER ETA WITH OXIA
+# 1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+# 1FDB GREEK CAPITAL LETTER IOTA WITH OXIA
+# 1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+# 1FEB GREEK CAPITAL LETTER UPSILON WITH OXIA
+# 1FEE GREEK DIALYTIKA AND OXIA
+# 1FEF GREEK VARIA
+# 1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA
+# 1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA
+# 1FFD GREEK OXIA
+# 2000 EN QUAD
+# 2001 EM QUAD
+# 2126 OHM SIGN
+# 212A KELVIN SIGN
+# 212B ANGSTROM SIGN
+# 2329 LEFT-POINTING ANGLE BRACKET
+# 232A RIGHT-POINTING ANGLE BRACKET
+# F900 CJK COMPATIBILITY IDEOGRAPH-F900
+#.. FA0D CJK COMPATIBILITY IDEOGRAPH-FA0D
+# FA10 CJK COMPATIBILITY IDEOGRAPH-FA10
+# FA12 CJK COMPATIBILITY IDEOGRAPH-FA12
+# FA15 CJK COMPATIBILITY IDEOGRAPH-FA15
+#.. FA1E CJK COMPATIBILITY IDEOGRAPH-FA1E
+# FA20 CJK COMPATIBILITY IDEOGRAPH-FA20
+# FA22 CJK COMPATIBILITY IDEOGRAPH-FA22
+# FA25 CJK COMPATIBILITY IDEOGRAPH-FA25
+# FA26 CJK COMPATIBILITY IDEOGRAPH-FA26
+# FA2A CJK COMPATIBILITY IDEOGRAPH-FA2A
+#.. FA2D CJK COMPATIBILITY IDEOGRAPH-FA2D
+# 2F800 CJK COMPATIBILITY IDEOGRAPH-2F800
+#.. 2FA1D CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# (4) Non-Starter Decompositions
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition consists
+# of a sequence of characters, the first of which has a non-zero
+# combining class.
+# These characters are simply quoted here for reference.
+
+# 0344 COMBINING GREEK DIALYTIKA TONOS
+# 0F73 TIBETAN VOWEL SIGN II
+# 0F75 TIBETAN VOWEL SIGN UU
+# 0F81 TIBETAN VOWEL SIGN REVERSED II
+
+
diff --git a/src/com/ibm/icu/dev/data/unicode/CompositionExclusions.txt b/src/com/ibm/icu/dev/data/unicode/CompositionExclusions.txt
new file mode 100755
index 0000000..4717047
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/CompositionExclusions.txt
@@ -0,0 +1,163 @@
+# CompositionExclusions-3.txt
+#
+# Composition Exclusions
+# This file lists the characters from the UAX #15 Composition Exclusion Table.
+#
+# For more information, see
+# http://www.unicode.org/unicode/reports/tr15/#Primary Exclusion List Table
+
+# (1) Script Specifics
+# This list of characters cannot be derived from the UnicodeData file.
+
+0958 # DEVANAGARI LETTER QA
+0959 # DEVANAGARI LETTER KHHA
+095A # DEVANAGARI LETTER GHHA
+095B # DEVANAGARI LETTER ZA
+095C # DEVANAGARI LETTER DDDHA
+095D # DEVANAGARI LETTER RHA
+095E # DEVANAGARI LETTER FA
+095F # DEVANAGARI LETTER YYA
+09DC # BENGALI LETTER RRA
+09DD # BENGALI LETTER RHA
+09DF # BENGALI LETTER YYA
+0A33 # GURMUKHI LETTER LLA
+0A36 # GURMUKHI LETTER SHA
+0A59 # GURMUKHI LETTER KHHA
+0A5A # GURMUKHI LETTER GHHA
+0A5B # GURMUKHI LETTER ZA
+0A5E # GURMUKHI LETTER FA
+0B5C # ORIYA LETTER RRA
+0B5D # ORIYA LETTER RHA
+0F43 # TIBETAN LETTER GHA
+0F4D # TIBETAN LETTER DDHA
+0F52 # TIBETAN LETTER DHA
+0F57 # TIBETAN LETTER BHA
+0F5C # TIBETAN LETTER DZHA
+0F69 # TIBETAN LETTER KSSA
+0F76 # TIBETAN VOWEL SIGN VOCALIC R
+0F78 # TIBETAN VOWEL SIGN VOCALIC L
+0F93 # TIBETAN SUBJOINED LETTER GHA
+0F9D # TIBETAN SUBJOINED LETTER DDHA
+0FA2 # TIBETAN SUBJOINED LETTER DHA
+0FA7 # TIBETAN SUBJOINED LETTER BHA
+0FAC # TIBETAN SUBJOINED LETTER DZHA
+0FB9 # TIBETAN SUBJOINED LETTER KSSA
+FB1D # HEBREW LETTER YOD WITH HIRIQ
+FB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A # HEBREW LETTER SHIN WITH SHIN DOT
+FB2B # HEBREW LETTER SHIN WITH SIN DOT
+FB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+FB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2E # HEBREW LETTER ALEF WITH PATAH
+FB2F # HEBREW LETTER ALEF WITH QAMATS
+FB30 # HEBREW LETTER ALEF WITH MAPIQ
+FB31 # HEBREW LETTER BET WITH DAGESH
+FB32 # HEBREW LETTER GIMEL WITH DAGESH
+FB33 # HEBREW LETTER DALET WITH DAGESH
+FB34 # HEBREW LETTER HE WITH MAPIQ
+FB35 # HEBREW LETTER VAV WITH DAGESH
+FB36 # HEBREW LETTER ZAYIN WITH DAGESH
+FB38 # HEBREW LETTER TET WITH DAGESH
+FB39 # HEBREW LETTER YOD WITH DAGESH
+FB3A # HEBREW LETTER FINAL KAF WITH DAGESH
+FB3B # HEBREW LETTER KAF WITH DAGESH
+FB3C # HEBREW LETTER LAMED WITH DAGESH
+FB3E # HEBREW LETTER MEM WITH DAGESH
+FB40 # HEBREW LETTER NUN WITH DAGESH
+FB41 # HEBREW LETTER SAMEKH WITH DAGESH
+FB43 # HEBREW LETTER FINAL PE WITH DAGESH
+FB44 # HEBREW LETTER PE WITH DAGESH
+FB46 # HEBREW LETTER TSADI WITH DAGESH
+FB47 # HEBREW LETTER QOF WITH DAGESH
+FB48 # HEBREW LETTER RESH WITH DAGESH
+FB49 # HEBREW LETTER SHIN WITH DAGESH
+FB4A # HEBREW LETTER TAV WITH DAGESH
+FB4B # HEBREW LETTER VAV WITH HOLAM
+FB4C # HEBREW LETTER BET WITH RAFE
+FB4D # HEBREW LETTER KAF WITH RAFE
+FB4E # HEBREW LETTER PE WITH RAFE
+
+# (2) Post Composition Version precomposed characters
+# These characters cannot be derived from the UnicodeData file.
+
+1D15E # MUSICAL SYMBOL HALF NOTE
+1D15F # MUSICAL SYMBOL QUARTER NOTE
+1D160 # MUSICAL SYMBOL EIGHTH NOTE
+1D161 # MUSICAL SYMBOL SIXTEENTH NOTE
+1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE
+1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE
+1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB # MUSICAL SYMBOL MINIMA
+1D1BC # MUSICAL SYMBOL MINIMA BLACK
+1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE
+1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK
+1D1BF # MUSICAL SYMBOL FUSA WHITE
+1D1C0 # MUSICAL SYMBOL FUSA BLACK
+
+# (3) Singleton Decompositions
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition
+# consists of a single character.
+# These characters are simply quoted here for reference.
+
+# 0340 COMBINING GRAVE TONE MARK
+# 0341 COMBINING ACUTE TONE MARK
+# 0343 COMBINING GREEK KORONIS
+# 0374 GREEK NUMERAL SIGN
+# 037E GREEK QUESTION MARK
+# 0387 GREEK ANO TELEIA
+# 1F71 GREEK SMALL LETTER ALPHA WITH OXIA
+# 1F73 GREEK SMALL LETTER EPSILON WITH OXIA
+# 1F75 GREEK SMALL LETTER ETA WITH OXIA
+# 1F77 GREEK SMALL LETTER IOTA WITH OXIA
+# 1F79 GREEK SMALL LETTER OMICRON WITH OXIA
+# 1F7B GREEK SMALL LETTER UPSILON WITH OXIA
+# 1F7D GREEK SMALL LETTER OMEGA WITH OXIA
+# 1FBB GREEK CAPITAL LETTER ALPHA WITH OXIA
+# 1FBE GREEK PROSGEGRAMMENI
+# 1FC9 GREEK CAPITAL LETTER EPSILON WITH OXIA
+# 1FCB GREEK CAPITAL LETTER ETA WITH OXIA
+# 1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+# 1FDB GREEK CAPITAL LETTER IOTA WITH OXIA
+# 1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+# 1FEB GREEK CAPITAL LETTER UPSILON WITH OXIA
+# 1FEE GREEK DIALYTIKA AND OXIA
+# 1FEF GREEK VARIA
+# 1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA
+# 1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA
+# 1FFD GREEK OXIA
+# 2000 EN QUAD
+# 2001 EM QUAD
+# 2126 OHM SIGN
+# 212A KELVIN SIGN
+# 212B ANGSTROM SIGN
+# 2329 LEFT-POINTING ANGLE BRACKET
+# 232A RIGHT-POINTING ANGLE BRACKET
+# F900 CJK COMPATIBILITY IDEOGRAPH-F900
+#.. FA0D CJK COMPATIBILITY IDEOGRAPH-FA0D
+# FA10 CJK COMPATIBILITY IDEOGRAPH-FA10
+# FA12 CJK COMPATIBILITY IDEOGRAPH-FA12
+# FA15 CJK COMPATIBILITY IDEOGRAPH-FA15
+#.. FA1E CJK COMPATIBILITY IDEOGRAPH-FA1E
+# FA20 CJK COMPATIBILITY IDEOGRAPH-FA20
+# FA22 CJK COMPATIBILITY IDEOGRAPH-FA22
+# FA25 CJK COMPATIBILITY IDEOGRAPH-FA25
+# FA26 CJK COMPATIBILITY IDEOGRAPH-FA26
+# FA2A CJK COMPATIBILITY IDEOGRAPH-FA2A
+#.. FA2D CJK COMPATIBILITY IDEOGRAPH-FA2D
+# 2F800 CJK COMPATIBILITY IDEOGRAPH-2F800
+#.. 2FA1D CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# (4) Non-Starter Decompositions
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition consists
+# of a sequence of characters, the first of which has a non-zero
+# combining class.
+# These characters are simply quoted here for reference.
+
+# 0344 COMBINING GREEK DIALYTIKA TONOS
+# 0F73 TIBETAN VOWEL SIGN II
+# 0F75 TIBETAN VOWEL SIGN UU
+# 0F81 TIBETAN VOWEL SIGN REVERSED II
+
+
diff --git a/src/com/ibm/icu/dev/data/unicode/NormalizationTest.txt b/src/com/ibm/icu/dev/data/unicode/NormalizationTest.txt
new file mode 100644
index 0000000..d4dec4e
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/NormalizationTest.txt
@@ -0,0 +1,17035 @@
+# NormalizationTest-3.2.0.txt
+# Date: 2002-03-19,23:31:18 GMT [MD]
+#
+# Normalization Test Suite
+# Format:
+#
+#   Columns (c1, c2,...) are separated by semicolons
+#   Comments are indicated with hash marks
+#
+# CONFORMANCE:
+# 1. The following invariants must be true for all conformant implementations
+#
+#    NFC
+#      c2 ==  NFC(c1) ==  NFC(c2) ==  NFC(c3)
+#      c4 ==  NFC(c4) ==  NFC(c5)
+#
+#    NFD
+#      c3 ==  NFD(c1) ==  NFD(c2) ==  NFD(c3)
+#      c5 ==  NFD(c4) ==  NFD(c5)
+#
+#    NFKC
+#      c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
+#
+#    NFKD
+#      c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
+#
+# 2. For every assigned Unicode 3.1.0 code point X that is not specifically
+#    listed in Part 1, the following invariants must be true for all conformant
+#    implementations:
+#
+#      X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X)
+#
+@Part0 # Specific cases
+#
+1E0A;1E0A;0044 0307;1E0A;0044 0307;
+1E0C;1E0C;0044 0323;1E0C;0044 0323;
+1E0A 0323;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+1E0C 0307;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+0044 0307 0323;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+0044 0323 0307;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+1E0A 031B;1E0A 031B;0044 031B 0307;1E0A 031B;0044 031B 0307;
+1E0C 031B;1E0C 031B;0044 031B 0323;1E0C 031B;0044 031B 0323;
+1E0A 031B 0323;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+1E0C 031B 0307;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+0044 031B 0307 0323;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+00C8;00C8;0045 0300;00C8;0045 0300;
+0112;0112;0045 0304;0112;0045 0304;
+0045 0300;00C8;0045 0300;00C8;0045 0300;
+0045 0304;0112;0045 0304;0112;0045 0304;
+1E14;1E14;0045 0304 0300;1E14;0045 0304 0300;
+0112 0300;1E14;0045 0304 0300;1E14;0045 0304 0300;
+1E14 0304;1E14 0304;0045 0304 0300 0304;1E14 0304;0045 0304 0300 0304;
+0045 0304 0300;1E14;0045 0304 0300;1E14;0045 0304 0300;
+0045 0300 0304;00C8 0304;0045 0300 0304;00C8 0304;0045 0300 0304;
+05B8 05B9 05B1 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;
+0592 05B7 05BC 05A5 05B0 05C0 05C4 05AD;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;
+#
+@Part1 # Character by character test
+# All characters not explicitly occurring in c1 of Part 1 have identical NFC, D, KC, KD forms.
+#
+00A0;00A0;00A0;0020;0020;
+00A8;00A8;00A8;0020 0308;0020 0308;
+00AA;00AA;00AA;0061;0061;
+00AF;00AF;00AF;0020 0304;0020 0304;
+00B2;00B2;00B2;0032;0032;
+00B3;00B3;00B3;0033;0033;
+00B4;00B4;00B4;0020 0301;0020 0301;
+00B5;00B5;00B5;03BC;03BC;
+00B8;00B8;00B8;0020 0327;0020 0327;
+00B9;00B9;00B9;0031;0031;
+00BA;00BA;00BA;006F;006F;
+00BC;00BC;00BC;0031 2044 0034;0031 2044 0034;
+00BD;00BD;00BD;0031 2044 0032;0031 2044 0032;
+00BE;00BE;00BE;0033 2044 0034;0033 2044 0034;
+00C0;00C0;0041 0300;00C0;0041 0300;
+00C1;00C1;0041 0301;00C1;0041 0301;
+00C2;00C2;0041 0302;00C2;0041 0302;
+00C3;00C3;0041 0303;00C3;0041 0303;
+00C4;00C4;0041 0308;00C4;0041 0308;
+00C5;00C5;0041 030A;00C5;0041 030A;
+00C7;00C7;0043 0327;00C7;0043 0327;
+00C8;00C8;0045 0300;00C8;0045 0300;
+00C9;00C9;0045 0301;00C9;0045 0301;
+00CA;00CA;0045 0302;00CA;0045 0302;
+00CB;00CB;0045 0308;00CB;0045 0308;
+00CC;00CC;0049 0300;00CC;0049 0300;
+00CD;00CD;0049 0301;00CD;0049 0301;
+00CE;00CE;0049 0302;00CE;0049 0302;
+00CF;00CF;0049 0308;00CF;0049 0308;
+00D1;00D1;004E 0303;00D1;004E 0303;
+00D2;00D2;004F 0300;00D2;004F 0300;
+00D3;00D3;004F 0301;00D3;004F 0301;
+00D4;00D4;004F 0302;00D4;004F 0302;
+00D5;00D5;004F 0303;00D5;004F 0303;
+00D6;00D6;004F 0308;00D6;004F 0308;
+00D9;00D9;0055 0300;00D9;0055 0300;
+00DA;00DA;0055 0301;00DA;0055 0301;
+00DB;00DB;0055 0302;00DB;0055 0302;
+00DC;00DC;0055 0308;00DC;0055 0308;
+00DD;00DD;0059 0301;00DD;0059 0301;
+00E0;00E0;0061 0300;00E0;0061 0300;
+00E1;00E1;0061 0301;00E1;0061 0301;
+00E2;00E2;0061 0302;00E2;0061 0302;
+00E3;00E3;0061 0303;00E3;0061 0303;
+00E4;00E4;0061 0308;00E4;0061 0308;
+00E5;00E5;0061 030A;00E5;0061 030A;
+00E7;00E7;0063 0327;00E7;0063 0327;
+00E8;00E8;0065 0300;00E8;0065 0300;
+00E9;00E9;0065 0301;00E9;0065 0301;
+00EA;00EA;0065 0302;00EA;0065 0302;
+00EB;00EB;0065 0308;00EB;0065 0308;
+00EC;00EC;0069 0300;00EC;0069 0300;
+00ED;00ED;0069 0301;00ED;0069 0301;
+00EE;00EE;0069 0302;00EE;0069 0302;
+00EF;00EF;0069 0308;00EF;0069 0308;
+00F1;00F1;006E 0303;00F1;006E 0303;
+00F2;00F2;006F 0300;00F2;006F 0300;
+00F3;00F3;006F 0301;00F3;006F 0301;
+00F4;00F4;006F 0302;00F4;006F 0302;
+00F5;00F5;006F 0303;00F5;006F 0303;
+00F6;00F6;006F 0308;00F6;006F 0308;
+00F9;00F9;0075 0300;00F9;0075 0300;
+00FA;00FA;0075 0301;00FA;0075 0301;
+00FB;00FB;0075 0302;00FB;0075 0302;
+00FC;00FC;0075 0308;00FC;0075 0308;
+00FD;00FD;0079 0301;00FD;0079 0301;
+00FF;00FF;0079 0308;00FF;0079 0308;
+0100;0100;0041 0304;0100;0041 0304;
+0101;0101;0061 0304;0101;0061 0304;
+0102;0102;0041 0306;0102;0041 0306;
+0103;0103;0061 0306;0103;0061 0306;
+0104;0104;0041 0328;0104;0041 0328;
+0105;0105;0061 0328;0105;0061 0328;
+0106;0106;0043 0301;0106;0043 0301;
+0107;0107;0063 0301;0107;0063 0301;
+0108;0108;0043 0302;0108;0043 0302;
+0109;0109;0063 0302;0109;0063 0302;
+010A;010A;0043 0307;010A;0043 0307;
+010B;010B;0063 0307;010B;0063 0307;
+010C;010C;0043 030C;010C;0043 030C;
+010D;010D;0063 030C;010D;0063 030C;
+010E;010E;0044 030C;010E;0044 030C;
+010F;010F;0064 030C;010F;0064 030C;
+0112;0112;0045 0304;0112;0045 0304;
+0113;0113;0065 0304;0113;0065 0304;
+0114;0114;0045 0306;0114;0045 0306;
+0115;0115;0065 0306;0115;0065 0306;
+0116;0116;0045 0307;0116;0045 0307;
+0117;0117;0065 0307;0117;0065 0307;
+0118;0118;0045 0328;0118;0045 0328;
+0119;0119;0065 0328;0119;0065 0328;
+011A;011A;0045 030C;011A;0045 030C;
+011B;011B;0065 030C;011B;0065 030C;
+011C;011C;0047 0302;011C;0047 0302;
+011D;011D;0067 0302;011D;0067 0302;
+011E;011E;0047 0306;011E;0047 0306;
+011F;011F;0067 0306;011F;0067 0306;
+0120;0120;0047 0307;0120;0047 0307;
+0121;0121;0067 0307;0121;0067 0307;
+0122;0122;0047 0327;0122;0047 0327;
+0123;0123;0067 0327;0123;0067 0327;
+0124;0124;0048 0302;0124;0048 0302;
+0125;0125;0068 0302;0125;0068 0302;
+0128;0128;0049 0303;0128;0049 0303;
+0129;0129;0069 0303;0129;0069 0303;
+012A;012A;0049 0304;012A;0049 0304;
+012B;012B;0069 0304;012B;0069 0304;
+012C;012C;0049 0306;012C;0049 0306;
+012D;012D;0069 0306;012D;0069 0306;
+012E;012E;0049 0328;012E;0049 0328;
+012F;012F;0069 0328;012F;0069 0328;
+0130;0130;0049 0307;0130;0049 0307;
+0132;0132;0132;0049 004A;0049 004A;
+0133;0133;0133;0069 006A;0069 006A;
+0134;0134;004A 0302;0134;004A 0302;
+0135;0135;006A 0302;0135;006A 0302;
+0136;0136;004B 0327;0136;004B 0327;
+0137;0137;006B 0327;0137;006B 0327;
+0139;0139;004C 0301;0139;004C 0301;
+013A;013A;006C 0301;013A;006C 0301;
+013B;013B;004C 0327;013B;004C 0327;
+013C;013C;006C 0327;013C;006C 0327;
+013D;013D;004C 030C;013D;004C 030C;
+013E;013E;006C 030C;013E;006C 030C;
+013F;013F;013F;004C 00B7;004C 00B7;
+0140;0140;0140;006C 00B7;006C 00B7;
+0143;0143;004E 0301;0143;004E 0301;
+0144;0144;006E 0301;0144;006E 0301;
+0145;0145;004E 0327;0145;004E 0327;
+0146;0146;006E 0327;0146;006E 0327;
+0147;0147;004E 030C;0147;004E 030C;
+0148;0148;006E 030C;0148;006E 030C;
+0149;0149;0149;02BC 006E;02BC 006E;
+014C;014C;004F 0304;014C;004F 0304;
+014D;014D;006F 0304;014D;006F 0304;
+014E;014E;004F 0306;014E;004F 0306;
+014F;014F;006F 0306;014F;006F 0306;
+0150;0150;004F 030B;0150;004F 030B;
+0151;0151;006F 030B;0151;006F 030B;
+0154;0154;0052 0301;0154;0052 0301;
+0155;0155;0072 0301;0155;0072 0301;
+0156;0156;0052 0327;0156;0052 0327;
+0157;0157;0072 0327;0157;0072 0327;
+0158;0158;0052 030C;0158;0052 030C;
+0159;0159;0072 030C;0159;0072 030C;
+015A;015A;0053 0301;015A;0053 0301;
+015B;015B;0073 0301;015B;0073 0301;
+015C;015C;0053 0302;015C;0053 0302;
+015D;015D;0073 0302;015D;0073 0302;
+015E;015E;0053 0327;015E;0053 0327;
+015F;015F;0073 0327;015F;0073 0327;
+0160;0160;0053 030C;0160;0053 030C;
+0161;0161;0073 030C;0161;0073 030C;
+0162;0162;0054 0327;0162;0054 0327;
+0163;0163;0074 0327;0163;0074 0327;
+0164;0164;0054 030C;0164;0054 030C;
+0165;0165;0074 030C;0165;0074 030C;
+0168;0168;0055 0303;0168;0055 0303;
+0169;0169;0075 0303;0169;0075 0303;
+016A;016A;0055 0304;016A;0055 0304;
+016B;016B;0075 0304;016B;0075 0304;
+016C;016C;0055 0306;016C;0055 0306;
+016D;016D;0075 0306;016D;0075 0306;
+016E;016E;0055 030A;016E;0055 030A;
+016F;016F;0075 030A;016F;0075 030A;
+0170;0170;0055 030B;0170;0055 030B;
+0171;0171;0075 030B;0171;0075 030B;
+0172;0172;0055 0328;0172;0055 0328;
+0173;0173;0075 0328;0173;0075 0328;
+0174;0174;0057 0302;0174;0057 0302;
+0175;0175;0077 0302;0175;0077 0302;
+0176;0176;0059 0302;0176;0059 0302;
+0177;0177;0079 0302;0177;0079 0302;
+0178;0178;0059 0308;0178;0059 0308;
+0179;0179;005A 0301;0179;005A 0301;
+017A;017A;007A 0301;017A;007A 0301;
+017B;017B;005A 0307;017B;005A 0307;
+017C;017C;007A 0307;017C;007A 0307;
+017D;017D;005A 030C;017D;005A 030C;
+017E;017E;007A 030C;017E;007A 030C;
+017F;017F;017F;0073;0073;
+01A0;01A0;004F 031B;01A0;004F 031B;
+01A1;01A1;006F 031B;01A1;006F 031B;
+01AF;01AF;0055 031B;01AF;0055 031B;
+01B0;01B0;0075 031B;01B0;0075 031B;
+01C4;01C4;01C4;0044 017D;0044 005A 030C;
+01C5;01C5;01C5;0044 017E;0044 007A 030C;
+01C6;01C6;01C6;0064 017E;0064 007A 030C;
+01C7;01C7;01C7;004C 004A;004C 004A;
+01C8;01C8;01C8;004C 006A;004C 006A;
+01C9;01C9;01C9;006C 006A;006C 006A;
+01CA;01CA;01CA;004E 004A;004E 004A;
+01CB;01CB;01CB;004E 006A;004E 006A;
+01CC;01CC;01CC;006E 006A;006E 006A;
+01CD;01CD;0041 030C;01CD;0041 030C;
+01CE;01CE;0061 030C;01CE;0061 030C;
+01CF;01CF;0049 030C;01CF;0049 030C;
+01D0;01D0;0069 030C;01D0;0069 030C;
+01D1;01D1;004F 030C;01D1;004F 030C;
+01D2;01D2;006F 030C;01D2;006F 030C;
+01D3;01D3;0055 030C;01D3;0055 030C;
+01D4;01D4;0075 030C;01D4;0075 030C;
+01D5;01D5;0055 0308 0304;01D5;0055 0308 0304;
+01D6;01D6;0075 0308 0304;01D6;0075 0308 0304;
+01D7;01D7;0055 0308 0301;01D7;0055 0308 0301;
+01D8;01D8;0075 0308 0301;01D8;0075 0308 0301;
+01D9;01D9;0055 0308 030C;01D9;0055 0308 030C;
+01DA;01DA;0075 0308 030C;01DA;0075 0308 030C;
+01DB;01DB;0055 0308 0300;01DB;0055 0308 0300;
+01DC;01DC;0075 0308 0300;01DC;0075 0308 0300;
+01DE;01DE;0041 0308 0304;01DE;0041 0308 0304;
+01DF;01DF;0061 0308 0304;01DF;0061 0308 0304;
+01E0;01E0;0041 0307 0304;01E0;0041 0307 0304;
+01E1;01E1;0061 0307 0304;01E1;0061 0307 0304;
+01E2;01E2;00C6 0304;01E2;00C6 0304;
+01E3;01E3;00E6 0304;01E3;00E6 0304;
+01E6;01E6;0047 030C;01E6;0047 030C;
+01E7;01E7;0067 030C;01E7;0067 030C;
+01E8;01E8;004B 030C;01E8;004B 030C;
+01E9;01E9;006B 030C;01E9;006B 030C;
+01EA;01EA;004F 0328;01EA;004F 0328;
+01EB;01EB;006F 0328;01EB;006F 0328;
+01EC;01EC;004F 0328 0304;01EC;004F 0328 0304;
+01ED;01ED;006F 0328 0304;01ED;006F 0328 0304;
+01EE;01EE;01B7 030C;01EE;01B7 030C;
+01EF;01EF;0292 030C;01EF;0292 030C;
+01F0;01F0;006A 030C;01F0;006A 030C;
+01F1;01F1;01F1;0044 005A;0044 005A;
+01F2;01F2;01F2;0044 007A;0044 007A;
+01F3;01F3;01F3;0064 007A;0064 007A;
+01F4;01F4;0047 0301;01F4;0047 0301;
+01F5;01F5;0067 0301;01F5;0067 0301;
+01F8;01F8;004E 0300;01F8;004E 0300;
+01F9;01F9;006E 0300;01F9;006E 0300;
+01FA;01FA;0041 030A 0301;01FA;0041 030A 0301;
+01FB;01FB;0061 030A 0301;01FB;0061 030A 0301;
+01FC;01FC;00C6 0301;01FC;00C6 0301;
+01FD;01FD;00E6 0301;01FD;00E6 0301;
+01FE;01FE;00D8 0301;01FE;00D8 0301;
+01FF;01FF;00F8 0301;01FF;00F8 0301;
+0200;0200;0041 030F;0200;0041 030F;
+0201;0201;0061 030F;0201;0061 030F;
+0202;0202;0041 0311;0202;0041 0311;
+0203;0203;0061 0311;0203;0061 0311;
+0204;0204;0045 030F;0204;0045 030F;
+0205;0205;0065 030F;0205;0065 030F;
+0206;0206;0045 0311;0206;0045 0311;
+0207;0207;0065 0311;0207;0065 0311;
+0208;0208;0049 030F;0208;0049 030F;
+0209;0209;0069 030F;0209;0069 030F;
+020A;020A;0049 0311;020A;0049 0311;
+020B;020B;0069 0311;020B;0069 0311;
+020C;020C;004F 030F;020C;004F 030F;
+020D;020D;006F 030F;020D;006F 030F;
+020E;020E;004F 0311;020E;004F 0311;
+020F;020F;006F 0311;020F;006F 0311;
+0210;0210;0052 030F;0210;0052 030F;
+0211;0211;0072 030F;0211;0072 030F;
+0212;0212;0052 0311;0212;0052 0311;
+0213;0213;0072 0311;0213;0072 0311;
+0214;0214;0055 030F;0214;0055 030F;
+0215;0215;0075 030F;0215;0075 030F;
+0216;0216;0055 0311;0216;0055 0311;
+0217;0217;0075 0311;0217;0075 0311;
+0218;0218;0053 0326;0218;0053 0326;
+0219;0219;0073 0326;0219;0073 0326;
+021A;021A;0054 0326;021A;0054 0326;
+021B;021B;0074 0326;021B;0074 0326;
+021E;021E;0048 030C;021E;0048 030C;
+021F;021F;0068 030C;021F;0068 030C;
+0226;0226;0041 0307;0226;0041 0307;
+0227;0227;0061 0307;0227;0061 0307;
+0228;0228;0045 0327;0228;0045 0327;
+0229;0229;0065 0327;0229;0065 0327;
+022A;022A;004F 0308 0304;022A;004F 0308 0304;
+022B;022B;006F 0308 0304;022B;006F 0308 0304;
+022C;022C;004F 0303 0304;022C;004F 0303 0304;
+022D;022D;006F 0303 0304;022D;006F 0303 0304;
+022E;022E;004F 0307;022E;004F 0307;
+022F;022F;006F 0307;022F;006F 0307;
+0230;0230;004F 0307 0304;0230;004F 0307 0304;
+0231;0231;006F 0307 0304;0231;006F 0307 0304;
+0232;0232;0059 0304;0232;0059 0304;
+0233;0233;0079 0304;0233;0079 0304;
+02B0;02B0;02B0;0068;0068;
+02B1;02B1;02B1;0266;0266;
+02B2;02B2;02B2;006A;006A;
+02B3;02B3;02B3;0072;0072;
+02B4;02B4;02B4;0279;0279;
+02B5;02B5;02B5;027B;027B;
+02B6;02B6;02B6;0281;0281;
+02B7;02B7;02B7;0077;0077;
+02B8;02B8;02B8;0079;0079;
+02D8;02D8;02D8;0020 0306;0020 0306;
+02D9;02D9;02D9;0020 0307;0020 0307;
+02DA;02DA;02DA;0020 030A;0020 030A;
+02DB;02DB;02DB;0020 0328;0020 0328;
+02DC;02DC;02DC;0020 0303;0020 0303;
+02DD;02DD;02DD;0020 030B;0020 030B;
+02E0;02E0;02E0;0263;0263;
+02E1;02E1;02E1;006C;006C;
+02E2;02E2;02E2;0073;0073;
+02E3;02E3;02E3;0078;0078;
+02E4;02E4;02E4;0295;0295;
+0340;0300;0300;0300;0300;
+0341;0301;0301;0301;0301;
+0343;0313;0313;0313;0313;
+0344;0308 0301;0308 0301;0308 0301;0308 0301;
+0374;02B9;02B9;02B9;02B9;
+037A;037A;037A;0020 0345;0020 0345;
+037E;003B;003B;003B;003B;
+0384;0384;0384;0020 0301;0020 0301;
+0385;0385;00A8 0301;0020 0308 0301;0020 0308 0301;
+0386;0386;0391 0301;0386;0391 0301;
+0387;00B7;00B7;00B7;00B7;
+0388;0388;0395 0301;0388;0395 0301;
+0389;0389;0397 0301;0389;0397 0301;
+038A;038A;0399 0301;038A;0399 0301;
+038C;038C;039F 0301;038C;039F 0301;
+038E;038E;03A5 0301;038E;03A5 0301;
+038F;038F;03A9 0301;038F;03A9 0301;
+0390;0390;03B9 0308 0301;0390;03B9 0308 0301;
+03AA;03AA;0399 0308;03AA;0399 0308;
+03AB;03AB;03A5 0308;03AB;03A5 0308;
+03AC;03AC;03B1 0301;03AC;03B1 0301;
+03AD;03AD;03B5 0301;03AD;03B5 0301;
+03AE;03AE;03B7 0301;03AE;03B7 0301;
+03AF;03AF;03B9 0301;03AF;03B9 0301;
+03B0;03B0;03C5 0308 0301;03B0;03C5 0308 0301;
+03CA;03CA;03B9 0308;03CA;03B9 0308;
+03CB;03CB;03C5 0308;03CB;03C5 0308;
+03CC;03CC;03BF 0301;03CC;03BF 0301;
+03CD;03CD;03C5 0301;03CD;03C5 0301;
+03CE;03CE;03C9 0301;03CE;03C9 0301;
+03D0;03D0;03D0;03B2;03B2;
+03D1;03D1;03D1;03B8;03B8;
+03D2;03D2;03D2;03A5;03A5;
+03D3;03D3;03D2 0301;038E;03A5 0301;
+03D4;03D4;03D2 0308;03AB;03A5 0308;
+03D5;03D5;03D5;03C6;03C6;
+03D6;03D6;03D6;03C0;03C0;
+03F0;03F0;03F0;03BA;03BA;
+03F1;03F1;03F1;03C1;03C1;
+03F2;03F2;03F2;03C2;03C2;
+03F4;03F4;03F4;0398;0398;
+03F5;03F5;03F5;03B5;03B5;
+0400;0400;0415 0300;0400;0415 0300;
+0401;0401;0415 0308;0401;0415 0308;
+0403;0403;0413 0301;0403;0413 0301;
+0407;0407;0406 0308;0407;0406 0308;
+040C;040C;041A 0301;040C;041A 0301;
+040D;040D;0418 0300;040D;0418 0300;
+040E;040E;0423 0306;040E;0423 0306;
+0419;0419;0418 0306;0419;0418 0306;
+0439;0439;0438 0306;0439;0438 0306;
+0450;0450;0435 0300;0450;0435 0300;
+0451;0451;0435 0308;0451;0435 0308;
+0453;0453;0433 0301;0453;0433 0301;
+0457;0457;0456 0308;0457;0456 0308;
+045C;045C;043A 0301;045C;043A 0301;
+045D;045D;0438 0300;045D;0438 0300;
+045E;045E;0443 0306;045E;0443 0306;
+0476;0476;0474 030F;0476;0474 030F;
+0477;0477;0475 030F;0477;0475 030F;
+04C1;04C1;0416 0306;04C1;0416 0306;
+04C2;04C2;0436 0306;04C2;0436 0306;
+04D0;04D0;0410 0306;04D0;0410 0306;
+04D1;04D1;0430 0306;04D1;0430 0306;
+04D2;04D2;0410 0308;04D2;0410 0308;
+04D3;04D3;0430 0308;04D3;0430 0308;
+04D6;04D6;0415 0306;04D6;0415 0306;
+04D7;04D7;0435 0306;04D7;0435 0306;
+04DA;04DA;04D8 0308;04DA;04D8 0308;
+04DB;04DB;04D9 0308;04DB;04D9 0308;
+04DC;04DC;0416 0308;04DC;0416 0308;
+04DD;04DD;0436 0308;04DD;0436 0308;
+04DE;04DE;0417 0308;04DE;0417 0308;
+04DF;04DF;0437 0308;04DF;0437 0308;
+04E2;04E2;0418 0304;04E2;0418 0304;
+04E3;04E3;0438 0304;04E3;0438 0304;
+04E4;04E4;0418 0308;04E4;0418 0308;
+04E5;04E5;0438 0308;04E5;0438 0308;
+04E6;04E6;041E 0308;04E6;041E 0308;
+04E7;04E7;043E 0308;04E7;043E 0308;
+04EA;04EA;04E8 0308;04EA;04E8 0308;
+04EB;04EB;04E9 0308;04EB;04E9 0308;
+04EC;04EC;042D 0308;04EC;042D 0308;
+04ED;04ED;044D 0308;04ED;044D 0308;
+04EE;04EE;0423 0304;04EE;0423 0304;
+04EF;04EF;0443 0304;04EF;0443 0304;
+04F0;04F0;0423 0308;04F0;0423 0308;
+04F1;04F1;0443 0308;04F1;0443 0308;
+04F2;04F2;0423 030B;04F2;0423 030B;
+04F3;04F3;0443 030B;04F3;0443 030B;
+04F4;04F4;0427 0308;04F4;0427 0308;
+04F5;04F5;0447 0308;04F5;0447 0308;
+04F8;04F8;042B 0308;04F8;042B 0308;
+04F9;04F9;044B 0308;04F9;044B 0308;
+0587;0587;0587;0565 0582;0565 0582;
+0622;0622;0627 0653;0622;0627 0653;
+0623;0623;0627 0654;0623;0627 0654;
+0624;0624;0648 0654;0624;0648 0654;
+0625;0625;0627 0655;0625;0627 0655;
+0626;0626;064A 0654;0626;064A 0654;
+0675;0675;0675;0627 0674;0627 0674;
+0676;0676;0676;0648 0674;0648 0674;
+0677;0677;0677;06C7 0674;06C7 0674;
+0678;0678;0678;064A 0674;064A 0674;
+06C0;06C0;06D5 0654;06C0;06D5 0654;
+06C2;06C2;06C1 0654;06C2;06C1 0654;
+06D3;06D3;06D2 0654;06D3;06D2 0654;
+0929;0929;0928 093C;0929;0928 093C;
+0931;0931;0930 093C;0931;0930 093C;
+0934;0934;0933 093C;0934;0933 093C;
+0958;0915 093C;0915 093C;0915 093C;0915 093C;
+0959;0916 093C;0916 093C;0916 093C;0916 093C;
+095A;0917 093C;0917 093C;0917 093C;0917 093C;
+095B;091C 093C;091C 093C;091C 093C;091C 093C;
+095C;0921 093C;0921 093C;0921 093C;0921 093C;
+095D;0922 093C;0922 093C;0922 093C;0922 093C;
+095E;092B 093C;092B 093C;092B 093C;092B 093C;
+095F;092F 093C;092F 093C;092F 093C;092F 093C;
+09CB;09CB;09C7 09BE;09CB;09C7 09BE;
+09CC;09CC;09C7 09D7;09CC;09C7 09D7;
+09DC;09A1 09BC;09A1 09BC;09A1 09BC;09A1 09BC;
+09DD;09A2 09BC;09A2 09BC;09A2 09BC;09A2 09BC;
+09DF;09AF 09BC;09AF 09BC;09AF 09BC;09AF 09BC;
+0A33;0A32 0A3C;0A32 0A3C;0A32 0A3C;0A32 0A3C;
+0A36;0A38 0A3C;0A38 0A3C;0A38 0A3C;0A38 0A3C;
+0A59;0A16 0A3C;0A16 0A3C;0A16 0A3C;0A16 0A3C;
+0A5A;0A17 0A3C;0A17 0A3C;0A17 0A3C;0A17 0A3C;
+0A5B;0A1C 0A3C;0A1C 0A3C;0A1C 0A3C;0A1C 0A3C;
+0A5E;0A2B 0A3C;0A2B 0A3C;0A2B 0A3C;0A2B 0A3C;
+0B48;0B48;0B47 0B56;0B48;0B47 0B56;
+0B4B;0B4B;0B47 0B3E;0B4B;0B47 0B3E;
+0B4C;0B4C;0B47 0B57;0B4C;0B47 0B57;
+0B5C;0B21 0B3C;0B21 0B3C;0B21 0B3C;0B21 0B3C;
+0B5D;0B22 0B3C;0B22 0B3C;0B22 0B3C;0B22 0B3C;
+0B94;0B94;0B92 0BD7;0B94;0B92 0BD7;
+0BCA;0BCA;0BC6 0BBE;0BCA;0BC6 0BBE;
+0BCB;0BCB;0BC7 0BBE;0BCB;0BC7 0BBE;
+0BCC;0BCC;0BC6 0BD7;0BCC;0BC6 0BD7;
+0C48;0C48;0C46 0C56;0C48;0C46 0C56;
+0CC0;0CC0;0CBF 0CD5;0CC0;0CBF 0CD5;
+0CC7;0CC7;0CC6 0CD5;0CC7;0CC6 0CD5;
+0CC8;0CC8;0CC6 0CD6;0CC8;0CC6 0CD6;
+0CCA;0CCA;0CC6 0CC2;0CCA;0CC6 0CC2;
+0CCB;0CCB;0CC6 0CC2 0CD5;0CCB;0CC6 0CC2 0CD5;
+0D4A;0D4A;0D46 0D3E;0D4A;0D46 0D3E;
+0D4B;0D4B;0D47 0D3E;0D4B;0D47 0D3E;
+0D4C;0D4C;0D46 0D57;0D4C;0D46 0D57;
+0DDA;0DDA;0DD9 0DCA;0DDA;0DD9 0DCA;
+0DDC;0DDC;0DD9 0DCF;0DDC;0DD9 0DCF;
+0DDD;0DDD;0DD9 0DCF 0DCA;0DDD;0DD9 0DCF 0DCA;
+0DDE;0DDE;0DD9 0DDF;0DDE;0DD9 0DDF;
+0E33;0E33;0E33;0E4D 0E32;0E4D 0E32;
+0EB3;0EB3;0EB3;0ECD 0EB2;0ECD 0EB2;
+0EDC;0EDC;0EDC;0EAB 0E99;0EAB 0E99;
+0EDD;0EDD;0EDD;0EAB 0EA1;0EAB 0EA1;
+0F0C;0F0C;0F0C;0F0B;0F0B;
+0F43;0F42 0FB7;0F42 0FB7;0F42 0FB7;0F42 0FB7;
+0F4D;0F4C 0FB7;0F4C 0FB7;0F4C 0FB7;0F4C 0FB7;
+0F52;0F51 0FB7;0F51 0FB7;0F51 0FB7;0F51 0FB7;
+0F57;0F56 0FB7;0F56 0FB7;0F56 0FB7;0F56 0FB7;
+0F5C;0F5B 0FB7;0F5B 0FB7;0F5B 0FB7;0F5B 0FB7;
+0F69;0F40 0FB5;0F40 0FB5;0F40 0FB5;0F40 0FB5;
+0F73;0F71 0F72;0F71 0F72;0F71 0F72;0F71 0F72;
+0F75;0F71 0F74;0F71 0F74;0F71 0F74;0F71 0F74;
+0F76;0FB2 0F80;0FB2 0F80;0FB2 0F80;0FB2 0F80;
+0F77;0F77;0F77;0FB2 0F71 0F80;0FB2 0F71 0F80;
+0F78;0FB3 0F80;0FB3 0F80;0FB3 0F80;0FB3 0F80;
+0F79;0F79;0F79;0FB3 0F71 0F80;0FB3 0F71 0F80;
+0F81;0F71 0F80;0F71 0F80;0F71 0F80;0F71 0F80;
+0F93;0F92 0FB7;0F92 0FB7;0F92 0FB7;0F92 0FB7;
+0F9D;0F9C 0FB7;0F9C 0FB7;0F9C 0FB7;0F9C 0FB7;
+0FA2;0FA1 0FB7;0FA1 0FB7;0FA1 0FB7;0FA1 0FB7;
+0FA7;0FA6 0FB7;0FA6 0FB7;0FA6 0FB7;0FA6 0FB7;
+0FAC;0FAB 0FB7;0FAB 0FB7;0FAB 0FB7;0FAB 0FB7;
+0FB9;0F90 0FB5;0F90 0FB5;0F90 0FB5;0F90 0FB5;
+1026;1026;1025 102E;1026;1025 102E;
+1E00;1E00;0041 0325;1E00;0041 0325;
+1E01;1E01;0061 0325;1E01;0061 0325;
+1E02;1E02;0042 0307;1E02;0042 0307;
+1E03;1E03;0062 0307;1E03;0062 0307;
+1E04;1E04;0042 0323;1E04;0042 0323;
+1E05;1E05;0062 0323;1E05;0062 0323;
+1E06;1E06;0042 0331;1E06;0042 0331;
+1E07;1E07;0062 0331;1E07;0062 0331;
+1E08;1E08;0043 0327 0301;1E08;0043 0327 0301;
+1E09;1E09;0063 0327 0301;1E09;0063 0327 0301;
+1E0A;1E0A;0044 0307;1E0A;0044 0307;
+1E0B;1E0B;0064 0307;1E0B;0064 0307;
+1E0C;1E0C;0044 0323;1E0C;0044 0323;
+1E0D;1E0D;0064 0323;1E0D;0064 0323;
+1E0E;1E0E;0044 0331;1E0E;0044 0331;
+1E0F;1E0F;0064 0331;1E0F;0064 0331;
+1E10;1E10;0044 0327;1E10;0044 0327;
+1E11;1E11;0064 0327;1E11;0064 0327;
+1E12;1E12;0044 032D;1E12;0044 032D;
+1E13;1E13;0064 032D;1E13;0064 032D;
+1E14;1E14;0045 0304 0300;1E14;0045 0304 0300;
+1E15;1E15;0065 0304 0300;1E15;0065 0304 0300;
+1E16;1E16;0045 0304 0301;1E16;0045 0304 0301;
+1E17;1E17;0065 0304 0301;1E17;0065 0304 0301;
+1E18;1E18;0045 032D;1E18;0045 032D;
+1E19;1E19;0065 032D;1E19;0065 032D;
+1E1A;1E1A;0045 0330;1E1A;0045 0330;
+1E1B;1E1B;0065 0330;1E1B;0065 0330;
+1E1C;1E1C;0045 0327 0306;1E1C;0045 0327 0306;
+1E1D;1E1D;0065 0327 0306;1E1D;0065 0327 0306;
+1E1E;1E1E;0046 0307;1E1E;0046 0307;
+1E1F;1E1F;0066 0307;1E1F;0066 0307;
+1E20;1E20;0047 0304;1E20;0047 0304;
+1E21;1E21;0067 0304;1E21;0067 0304;
+1E22;1E22;0048 0307;1E22;0048 0307;
+1E23;1E23;0068 0307;1E23;0068 0307;
+1E24;1E24;0048 0323;1E24;0048 0323;
+1E25;1E25;0068 0323;1E25;0068 0323;
+1E26;1E26;0048 0308;1E26;0048 0308;
+1E27;1E27;0068 0308;1E27;0068 0308;
+1E28;1E28;0048 0327;1E28;0048 0327;
+1E29;1E29;0068 0327;1E29;0068 0327;
+1E2A;1E2A;0048 032E;1E2A;0048 032E;
+1E2B;1E2B;0068 032E;1E2B;0068 032E;
+1E2C;1E2C;0049 0330;1E2C;0049 0330;
+1E2D;1E2D;0069 0330;1E2D;0069 0330;
+1E2E;1E2E;0049 0308 0301;1E2E;0049 0308 0301;
+1E2F;1E2F;0069 0308 0301;1E2F;0069 0308 0301;
+1E30;1E30;004B 0301;1E30;004B 0301;
+1E31;1E31;006B 0301;1E31;006B 0301;
+1E32;1E32;004B 0323;1E32;004B 0323;
+1E33;1E33;006B 0323;1E33;006B 0323;
+1E34;1E34;004B 0331;1E34;004B 0331;
+1E35;1E35;006B 0331;1E35;006B 0331;
+1E36;1E36;004C 0323;1E36;004C 0323;
+1E37;1E37;006C 0323;1E37;006C 0323;
+1E38;1E38;004C 0323 0304;1E38;004C 0323 0304;
+1E39;1E39;006C 0323 0304;1E39;006C 0323 0304;
+1E3A;1E3A;004C 0331;1E3A;004C 0331;
+1E3B;1E3B;006C 0331;1E3B;006C 0331;
+1E3C;1E3C;004C 032D;1E3C;004C 032D;
+1E3D;1E3D;006C 032D;1E3D;006C 032D;
+1E3E;1E3E;004D 0301;1E3E;004D 0301;
+1E3F;1E3F;006D 0301;1E3F;006D 0301;
+1E40;1E40;004D 0307;1E40;004D 0307;
+1E41;1E41;006D 0307;1E41;006D 0307;
+1E42;1E42;004D 0323;1E42;004D 0323;
+1E43;1E43;006D 0323;1E43;006D 0323;
+1E44;1E44;004E 0307;1E44;004E 0307;
+1E45;1E45;006E 0307;1E45;006E 0307;
+1E46;1E46;004E 0323;1E46;004E 0323;
+1E47;1E47;006E 0323;1E47;006E 0323;
+1E48;1E48;004E 0331;1E48;004E 0331;
+1E49;1E49;006E 0331;1E49;006E 0331;
+1E4A;1E4A;004E 032D;1E4A;004E 032D;
+1E4B;1E4B;006E 032D;1E4B;006E 032D;
+1E4C;1E4C;004F 0303 0301;1E4C;004F 0303 0301;
+1E4D;1E4D;006F 0303 0301;1E4D;006F 0303 0301;
+1E4E;1E4E;004F 0303 0308;1E4E;004F 0303 0308;
+1E4F;1E4F;006F 0303 0308;1E4F;006F 0303 0308;
+1E50;1E50;004F 0304 0300;1E50;004F 0304 0300;
+1E51;1E51;006F 0304 0300;1E51;006F 0304 0300;
+1E52;1E52;004F 0304 0301;1E52;004F 0304 0301;
+1E53;1E53;006F 0304 0301;1E53;006F 0304 0301;
+1E54;1E54;0050 0301;1E54;0050 0301;
+1E55;1E55;0070 0301;1E55;0070 0301;
+1E56;1E56;0050 0307;1E56;0050 0307;
+1E57;1E57;0070 0307;1E57;0070 0307;
+1E58;1E58;0052 0307;1E58;0052 0307;
+1E59;1E59;0072 0307;1E59;0072 0307;
+1E5A;1E5A;0052 0323;1E5A;0052 0323;
+1E5B;1E5B;0072 0323;1E5B;0072 0323;
+1E5C;1E5C;0052 0323 0304;1E5C;0052 0323 0304;
+1E5D;1E5D;0072 0323 0304;1E5D;0072 0323 0304;
+1E5E;1E5E;0052 0331;1E5E;0052 0331;
+1E5F;1E5F;0072 0331;1E5F;0072 0331;
+1E60;1E60;0053 0307;1E60;0053 0307;
+1E61;1E61;0073 0307;1E61;0073 0307;
+1E62;1E62;0053 0323;1E62;0053 0323;
+1E63;1E63;0073 0323;1E63;0073 0323;
+1E64;1E64;0053 0301 0307;1E64;0053 0301 0307;
+1E65;1E65;0073 0301 0307;1E65;0073 0301 0307;
+1E66;1E66;0053 030C 0307;1E66;0053 030C 0307;
+1E67;1E67;0073 030C 0307;1E67;0073 030C 0307;
+1E68;1E68;0053 0323 0307;1E68;0053 0323 0307;
+1E69;1E69;0073 0323 0307;1E69;0073 0323 0307;
+1E6A;1E6A;0054 0307;1E6A;0054 0307;
+1E6B;1E6B;0074 0307;1E6B;0074 0307;
+1E6C;1E6C;0054 0323;1E6C;0054 0323;
+1E6D;1E6D;0074 0323;1E6D;0074 0323;
+1E6E;1E6E;0054 0331;1E6E;0054 0331;
+1E6F;1E6F;0074 0331;1E6F;0074 0331;
+1E70;1E70;0054 032D;1E70;0054 032D;
+1E71;1E71;0074 032D;1E71;0074 032D;
+1E72;1E72;0055 0324;1E72;0055 0324;
+1E73;1E73;0075 0324;1E73;0075 0324;
+1E74;1E74;0055 0330;1E74;0055 0330;
+1E75;1E75;0075 0330;1E75;0075 0330;
+1E76;1E76;0055 032D;1E76;0055 032D;
+1E77;1E77;0075 032D;1E77;0075 032D;
+1E78;1E78;0055 0303 0301;1E78;0055 0303 0301;
+1E79;1E79;0075 0303 0301;1E79;0075 0303 0301;
+1E7A;1E7A;0055 0304 0308;1E7A;0055 0304 0308;
+1E7B;1E7B;0075 0304 0308;1E7B;0075 0304 0308;
+1E7C;1E7C;0056 0303;1E7C;0056 0303;
+1E7D;1E7D;0076 0303;1E7D;0076 0303;
+1E7E;1E7E;0056 0323;1E7E;0056 0323;
+1E7F;1E7F;0076 0323;1E7F;0076 0323;
+1E80;1E80;0057 0300;1E80;0057 0300;
+1E81;1E81;0077 0300;1E81;0077 0300;
+1E82;1E82;0057 0301;1E82;0057 0301;
+1E83;1E83;0077 0301;1E83;0077 0301;
+1E84;1E84;0057 0308;1E84;0057 0308;
+1E85;1E85;0077 0308;1E85;0077 0308;
+1E86;1E86;0057 0307;1E86;0057 0307;
+1E87;1E87;0077 0307;1E87;0077 0307;
+1E88;1E88;0057 0323;1E88;0057 0323;
+1E89;1E89;0077 0323;1E89;0077 0323;
+1E8A;1E8A;0058 0307;1E8A;0058 0307;
+1E8B;1E8B;0078 0307;1E8B;0078 0307;
+1E8C;1E8C;0058 0308;1E8C;0058 0308;
+1E8D;1E8D;0078 0308;1E8D;0078 0308;
+1E8E;1E8E;0059 0307;1E8E;0059 0307;
+1E8F;1E8F;0079 0307;1E8F;0079 0307;
+1E90;1E90;005A 0302;1E90;005A 0302;
+1E91;1E91;007A 0302;1E91;007A 0302;
+1E92;1E92;005A 0323;1E92;005A 0323;
+1E93;1E93;007A 0323;1E93;007A 0323;
+1E94;1E94;005A 0331;1E94;005A 0331;
+1E95;1E95;007A 0331;1E95;007A 0331;
+1E96;1E96;0068 0331;1E96;0068 0331;
+1E97;1E97;0074 0308;1E97;0074 0308;
+1E98;1E98;0077 030A;1E98;0077 030A;
+1E99;1E99;0079 030A;1E99;0079 030A;
+1E9A;1E9A;1E9A;0061 02BE;0061 02BE;
+1E9B;1E9B;017F 0307;1E61;0073 0307;
+1EA0;1EA0;0041 0323;1EA0;0041 0323;
+1EA1;1EA1;0061 0323;1EA1;0061 0323;
+1EA2;1EA2;0041 0309;1EA2;0041 0309;
+1EA3;1EA3;0061 0309;1EA3;0061 0309;
+1EA4;1EA4;0041 0302 0301;1EA4;0041 0302 0301;
+1EA5;1EA5;0061 0302 0301;1EA5;0061 0302 0301;
+1EA6;1EA6;0041 0302 0300;1EA6;0041 0302 0300;
+1EA7;1EA7;0061 0302 0300;1EA7;0061 0302 0300;
+1EA8;1EA8;0041 0302 0309;1EA8;0041 0302 0309;
+1EA9;1EA9;0061 0302 0309;1EA9;0061 0302 0309;
+1EAA;1EAA;0041 0302 0303;1EAA;0041 0302 0303;
+1EAB;1EAB;0061 0302 0303;1EAB;0061 0302 0303;
+1EAC;1EAC;0041 0323 0302;1EAC;0041 0323 0302;
+1EAD;1EAD;0061 0323 0302;1EAD;0061 0323 0302;
+1EAE;1EAE;0041 0306 0301;1EAE;0041 0306 0301;
+1EAF;1EAF;0061 0306 0301;1EAF;0061 0306 0301;
+1EB0;1EB0;0041 0306 0300;1EB0;0041 0306 0300;
+1EB1;1EB1;0061 0306 0300;1EB1;0061 0306 0300;
+1EB2;1EB2;0041 0306 0309;1EB2;0041 0306 0309;
+1EB3;1EB3;0061 0306 0309;1EB3;0061 0306 0309;
+1EB4;1EB4;0041 0306 0303;1EB4;0041 0306 0303;
+1EB5;1EB5;0061 0306 0303;1EB5;0061 0306 0303;
+1EB6;1EB6;0041 0323 0306;1EB6;0041 0323 0306;
+1EB7;1EB7;0061 0323 0306;1EB7;0061 0323 0306;
+1EB8;1EB8;0045 0323;1EB8;0045 0323;
+1EB9;1EB9;0065 0323;1EB9;0065 0323;
+1EBA;1EBA;0045 0309;1EBA;0045 0309;
+1EBB;1EBB;0065 0309;1EBB;0065 0309;
+1EBC;1EBC;0045 0303;1EBC;0045 0303;
+1EBD;1EBD;0065 0303;1EBD;0065 0303;
+1EBE;1EBE;0045 0302 0301;1EBE;0045 0302 0301;
+1EBF;1EBF;0065 0302 0301;1EBF;0065 0302 0301;
+1EC0;1EC0;0045 0302 0300;1EC0;0045 0302 0300;
+1EC1;1EC1;0065 0302 0300;1EC1;0065 0302 0300;
+1EC2;1EC2;0045 0302 0309;1EC2;0045 0302 0309;
+1EC3;1EC3;0065 0302 0309;1EC3;0065 0302 0309;
+1EC4;1EC4;0045 0302 0303;1EC4;0045 0302 0303;
+1EC5;1EC5;0065 0302 0303;1EC5;0065 0302 0303;
+1EC6;1EC6;0045 0323 0302;1EC6;0045 0323 0302;
+1EC7;1EC7;0065 0323 0302;1EC7;0065 0323 0302;
+1EC8;1EC8;0049 0309;1EC8;0049 0309;
+1EC9;1EC9;0069 0309;1EC9;0069 0309;
+1ECA;1ECA;0049 0323;1ECA;0049 0323;
+1ECB;1ECB;0069 0323;1ECB;0069 0323;
+1ECC;1ECC;004F 0323;1ECC;004F 0323;
+1ECD;1ECD;006F 0323;1ECD;006F 0323;
+1ECE;1ECE;004F 0309;1ECE;004F 0309;
+1ECF;1ECF;006F 0309;1ECF;006F 0309;
+1ED0;1ED0;004F 0302 0301;1ED0;004F 0302 0301;
+1ED1;1ED1;006F 0302 0301;1ED1;006F 0302 0301;
+1ED2;1ED2;004F 0302 0300;1ED2;004F 0302 0300;
+1ED3;1ED3;006F 0302 0300;1ED3;006F 0302 0300;
+1ED4;1ED4;004F 0302 0309;1ED4;004F 0302 0309;
+1ED5;1ED5;006F 0302 0309;1ED5;006F 0302 0309;
+1ED6;1ED6;004F 0302 0303;1ED6;004F 0302 0303;
+1ED7;1ED7;006F 0302 0303;1ED7;006F 0302 0303;
+1ED8;1ED8;004F 0323 0302;1ED8;004F 0323 0302;
+1ED9;1ED9;006F 0323 0302;1ED9;006F 0323 0302;
+1EDA;1EDA;004F 031B 0301;1EDA;004F 031B 0301;
+1EDB;1EDB;006F 031B 0301;1EDB;006F 031B 0301;
+1EDC;1EDC;004F 031B 0300;1EDC;004F 031B 0300;
+1EDD;1EDD;006F 031B 0300;1EDD;006F 031B 0300;
+1EDE;1EDE;004F 031B 0309;1EDE;004F 031B 0309;
+1EDF;1EDF;006F 031B 0309;1EDF;006F 031B 0309;
+1EE0;1EE0;004F 031B 0303;1EE0;004F 031B 0303;
+1EE1;1EE1;006F 031B 0303;1EE1;006F 031B 0303;
+1EE2;1EE2;004F 031B 0323;1EE2;004F 031B 0323;
+1EE3;1EE3;006F 031B 0323;1EE3;006F 031B 0323;
+1EE4;1EE4;0055 0323;1EE4;0055 0323;
+1EE5;1EE5;0075 0323;1EE5;0075 0323;
+1EE6;1EE6;0055 0309;1EE6;0055 0309;
+1EE7;1EE7;0075 0309;1EE7;0075 0309;
+1EE8;1EE8;0055 031B 0301;1EE8;0055 031B 0301;
+1EE9;1EE9;0075 031B 0301;1EE9;0075 031B 0301;
+1EEA;1EEA;0055 031B 0300;1EEA;0055 031B 0300;
+1EEB;1EEB;0075 031B 0300;1EEB;0075 031B 0300;
+1EEC;1EEC;0055 031B 0309;1EEC;0055 031B 0309;
+1EED;1EED;0075 031B 0309;1EED;0075 031B 0309;
+1EEE;1EEE;0055 031B 0303;1EEE;0055 031B 0303;
+1EEF;1EEF;0075 031B 0303;1EEF;0075 031B 0303;
+1EF0;1EF0;0055 031B 0323;1EF0;0055 031B 0323;
+1EF1;1EF1;0075 031B 0323;1EF1;0075 031B 0323;
+1EF2;1EF2;0059 0300;1EF2;0059 0300;
+1EF3;1EF3;0079 0300;1EF3;0079 0300;
+1EF4;1EF4;0059 0323;1EF4;0059 0323;
+1EF5;1EF5;0079 0323;1EF5;0079 0323;
+1EF6;1EF6;0059 0309;1EF6;0059 0309;
+1EF7;1EF7;0079 0309;1EF7;0079 0309;
+1EF8;1EF8;0059 0303;1EF8;0059 0303;
+1EF9;1EF9;0079 0303;1EF9;0079 0303;
+1F00;1F00;03B1 0313;1F00;03B1 0313;
+1F01;1F01;03B1 0314;1F01;03B1 0314;
+1F02;1F02;03B1 0313 0300;1F02;03B1 0313 0300;
+1F03;1F03;03B1 0314 0300;1F03;03B1 0314 0300;
+1F04;1F04;03B1 0313 0301;1F04;03B1 0313 0301;
+1F05;1F05;03B1 0314 0301;1F05;03B1 0314 0301;
+1F06;1F06;03B1 0313 0342;1F06;03B1 0313 0342;
+1F07;1F07;03B1 0314 0342;1F07;03B1 0314 0342;
+1F08;1F08;0391 0313;1F08;0391 0313;
+1F09;1F09;0391 0314;1F09;0391 0314;
+1F0A;1F0A;0391 0313 0300;1F0A;0391 0313 0300;
+1F0B;1F0B;0391 0314 0300;1F0B;0391 0314 0300;
+1F0C;1F0C;0391 0313 0301;1F0C;0391 0313 0301;
+1F0D;1F0D;0391 0314 0301;1F0D;0391 0314 0301;
+1F0E;1F0E;0391 0313 0342;1F0E;0391 0313 0342;
+1F0F;1F0F;0391 0314 0342;1F0F;0391 0314 0342;
+1F10;1F10;03B5 0313;1F10;03B5 0313;
+1F11;1F11;03B5 0314;1F11;03B5 0314;
+1F12;1F12;03B5 0313 0300;1F12;03B5 0313 0300;
+1F13;1F13;03B5 0314 0300;1F13;03B5 0314 0300;
+1F14;1F14;03B5 0313 0301;1F14;03B5 0313 0301;
+1F15;1F15;03B5 0314 0301;1F15;03B5 0314 0301;
+1F18;1F18;0395 0313;1F18;0395 0313;
+1F19;1F19;0395 0314;1F19;0395 0314;
+1F1A;1F1A;0395 0313 0300;1F1A;0395 0313 0300;
+1F1B;1F1B;0395 0314 0300;1F1B;0395 0314 0300;
+1F1C;1F1C;0395 0313 0301;1F1C;0395 0313 0301;
+1F1D;1F1D;0395 0314 0301;1F1D;0395 0314 0301;
+1F20;1F20;03B7 0313;1F20;03B7 0313;
+1F21;1F21;03B7 0314;1F21;03B7 0314;
+1F22;1F22;03B7 0313 0300;1F22;03B7 0313 0300;
+1F23;1F23;03B7 0314 0300;1F23;03B7 0314 0300;
+1F24;1F24;03B7 0313 0301;1F24;03B7 0313 0301;
+1F25;1F25;03B7 0314 0301;1F25;03B7 0314 0301;
+1F26;1F26;03B7 0313 0342;1F26;03B7 0313 0342;
+1F27;1F27;03B7 0314 0342;1F27;03B7 0314 0342;
+1F28;1F28;0397 0313;1F28;0397 0313;
+1F29;1F29;0397 0314;1F29;0397 0314;
+1F2A;1F2A;0397 0313 0300;1F2A;0397 0313 0300;
+1F2B;1F2B;0397 0314 0300;1F2B;0397 0314 0300;
+1F2C;1F2C;0397 0313 0301;1F2C;0397 0313 0301;
+1F2D;1F2D;0397 0314 0301;1F2D;0397 0314 0301;
+1F2E;1F2E;0397 0313 0342;1F2E;0397 0313 0342;
+1F2F;1F2F;0397 0314 0342;1F2F;0397 0314 0342;
+1F30;1F30;03B9 0313;1F30;03B9 0313;
+1F31;1F31;03B9 0314;1F31;03B9 0314;
+1F32;1F32;03B9 0313 0300;1F32;03B9 0313 0300;
+1F33;1F33;03B9 0314 0300;1F33;03B9 0314 0300;
+1F34;1F34;03B9 0313 0301;1F34;03B9 0313 0301;
+1F35;1F35;03B9 0314 0301;1F35;03B9 0314 0301;
+1F36;1F36;03B9 0313 0342;1F36;03B9 0313 0342;
+1F37;1F37;03B9 0314 0342;1F37;03B9 0314 0342;
+1F38;1F38;0399 0313;1F38;0399 0313;
+1F39;1F39;0399 0314;1F39;0399 0314;
+1F3A;1F3A;0399 0313 0300;1F3A;0399 0313 0300;
+1F3B;1F3B;0399 0314 0300;1F3B;0399 0314 0300;
+1F3C;1F3C;0399 0313 0301;1F3C;0399 0313 0301;
+1F3D;1F3D;0399 0314 0301;1F3D;0399 0314 0301;
+1F3E;1F3E;0399 0313 0342;1F3E;0399 0313 0342;
+1F3F;1F3F;0399 0314 0342;1F3F;0399 0314 0342;
+1F40;1F40;03BF 0313;1F40;03BF 0313;
+1F41;1F41;03BF 0314;1F41;03BF 0314;
+1F42;1F42;03BF 0313 0300;1F42;03BF 0313 0300;
+1F43;1F43;03BF 0314 0300;1F43;03BF 0314 0300;
+1F44;1F44;03BF 0313 0301;1F44;03BF 0313 0301;
+1F45;1F45;03BF 0314 0301;1F45;03BF 0314 0301;
+1F48;1F48;039F 0313;1F48;039F 0313;
+1F49;1F49;039F 0314;1F49;039F 0314;
+1F4A;1F4A;039F 0313 0300;1F4A;039F 0313 0300;
+1F4B;1F4B;039F 0314 0300;1F4B;039F 0314 0300;
+1F4C;1F4C;039F 0313 0301;1F4C;039F 0313 0301;
+1F4D;1F4D;039F 0314 0301;1F4D;039F 0314 0301;
+1F50;1F50;03C5 0313;1F50;03C5 0313;
+1F51;1F51;03C5 0314;1F51;03C5 0314;
+1F52;1F52;03C5 0313 0300;1F52;03C5 0313 0300;
+1F53;1F53;03C5 0314 0300;1F53;03C5 0314 0300;
+1F54;1F54;03C5 0313 0301;1F54;03C5 0313 0301;
+1F55;1F55;03C5 0314 0301;1F55;03C5 0314 0301;
+1F56;1F56;03C5 0313 0342;1F56;03C5 0313 0342;
+1F57;1F57;03C5 0314 0342;1F57;03C5 0314 0342;
+1F59;1F59;03A5 0314;1F59;03A5 0314;
+1F5B;1F5B;03A5 0314 0300;1F5B;03A5 0314 0300;
+1F5D;1F5D;03A5 0314 0301;1F5D;03A5 0314 0301;
+1F5F;1F5F;03A5 0314 0342;1F5F;03A5 0314 0342;
+1F60;1F60;03C9 0313;1F60;03C9 0313;
+1F61;1F61;03C9 0314;1F61;03C9 0314;
+1F62;1F62;03C9 0313 0300;1F62;03C9 0313 0300;
+1F63;1F63;03C9 0314 0300;1F63;03C9 0314 0300;
+1F64;1F64;03C9 0313 0301;1F64;03C9 0313 0301;
+1F65;1F65;03C9 0314 0301;1F65;03C9 0314 0301;
+1F66;1F66;03C9 0313 0342;1F66;03C9 0313 0342;
+1F67;1F67;03C9 0314 0342;1F67;03C9 0314 0342;
+1F68;1F68;03A9 0313;1F68;03A9 0313;
+1F69;1F69;03A9 0314;1F69;03A9 0314;
+1F6A;1F6A;03A9 0313 0300;1F6A;03A9 0313 0300;
+1F6B;1F6B;03A9 0314 0300;1F6B;03A9 0314 0300;
+1F6C;1F6C;03A9 0313 0301;1F6C;03A9 0313 0301;
+1F6D;1F6D;03A9 0314 0301;1F6D;03A9 0314 0301;
+1F6E;1F6E;03A9 0313 0342;1F6E;03A9 0313 0342;
+1F6F;1F6F;03A9 0314 0342;1F6F;03A9 0314 0342;
+1F70;1F70;03B1 0300;1F70;03B1 0300;
+1F71;03AC;03B1 0301;03AC;03B1 0301;
+1F72;1F72;03B5 0300;1F72;03B5 0300;
+1F73;03AD;03B5 0301;03AD;03B5 0301;
+1F74;1F74;03B7 0300;1F74;03B7 0300;
+1F75;03AE;03B7 0301;03AE;03B7 0301;
+1F76;1F76;03B9 0300;1F76;03B9 0300;
+1F77;03AF;03B9 0301;03AF;03B9 0301;
+1F78;1F78;03BF 0300;1F78;03BF 0300;
+1F79;03CC;03BF 0301;03CC;03BF 0301;
+1F7A;1F7A;03C5 0300;1F7A;03C5 0300;
+1F7B;03CD;03C5 0301;03CD;03C5 0301;
+1F7C;1F7C;03C9 0300;1F7C;03C9 0300;
+1F7D;03CE;03C9 0301;03CE;03C9 0301;
+1F80;1F80;03B1 0313 0345;1F80;03B1 0313 0345;
+1F81;1F81;03B1 0314 0345;1F81;03B1 0314 0345;
+1F82;1F82;03B1 0313 0300 0345;1F82;03B1 0313 0300 0345;
+1F83;1F83;03B1 0314 0300 0345;1F83;03B1 0314 0300 0345;
+1F84;1F84;03B1 0313 0301 0345;1F84;03B1 0313 0301 0345;
+1F85;1F85;03B1 0314 0301 0345;1F85;03B1 0314 0301 0345;
+1F86;1F86;03B1 0313 0342 0345;1F86;03B1 0313 0342 0345;
+1F87;1F87;03B1 0314 0342 0345;1F87;03B1 0314 0342 0345;
+1F88;1F88;0391 0313 0345;1F88;0391 0313 0345;
+1F89;1F89;0391 0314 0345;1F89;0391 0314 0345;
+1F8A;1F8A;0391 0313 0300 0345;1F8A;0391 0313 0300 0345;
+1F8B;1F8B;0391 0314 0300 0345;1F8B;0391 0314 0300 0345;
+1F8C;1F8C;0391 0313 0301 0345;1F8C;0391 0313 0301 0345;
+1F8D;1F8D;0391 0314 0301 0345;1F8D;0391 0314 0301 0345;
+1F8E;1F8E;0391 0313 0342 0345;1F8E;0391 0313 0342 0345;
+1F8F;1F8F;0391 0314 0342 0345;1F8F;0391 0314 0342 0345;
+1F90;1F90;03B7 0313 0345;1F90;03B7 0313 0345;
+1F91;1F91;03B7 0314 0345;1F91;03B7 0314 0345;
+1F92;1F92;03B7 0313 0300 0345;1F92;03B7 0313 0300 0345;
+1F93;1F93;03B7 0314 0300 0345;1F93;03B7 0314 0300 0345;
+1F94;1F94;03B7 0313 0301 0345;1F94;03B7 0313 0301 0345;
+1F95;1F95;03B7 0314 0301 0345;1F95;03B7 0314 0301 0345;
+1F96;1F96;03B7 0313 0342 0345;1F96;03B7 0313 0342 0345;
+1F97;1F97;03B7 0314 0342 0345;1F97;03B7 0314 0342 0345;
+1F98;1F98;0397 0313 0345;1F98;0397 0313 0345;
+1F99;1F99;0397 0314 0345;1F99;0397 0314 0345;
+1F9A;1F9A;0397 0313 0300 0345;1F9A;0397 0313 0300 0345;
+1F9B;1F9B;0397 0314 0300 0345;1F9B;0397 0314 0300 0345;
+1F9C;1F9C;0397 0313 0301 0345;1F9C;0397 0313 0301 0345;
+1F9D;1F9D;0397 0314 0301 0345;1F9D;0397 0314 0301 0345;
+1F9E;1F9E;0397 0313 0342 0345;1F9E;0397 0313 0342 0345;
+1F9F;1F9F;0397 0314 0342 0345;1F9F;0397 0314 0342 0345;
+1FA0;1FA0;03C9 0313 0345;1FA0;03C9 0313 0345;
+1FA1;1FA1;03C9 0314 0345;1FA1;03C9 0314 0345;
+1FA2;1FA2;03C9 0313 0300 0345;1FA2;03C9 0313 0300 0345;
+1FA3;1FA3;03C9 0314 0300 0345;1FA3;03C9 0314 0300 0345;
+1FA4;1FA4;03C9 0313 0301 0345;1FA4;03C9 0313 0301 0345;
+1FA5;1FA5;03C9 0314 0301 0345;1FA5;03C9 0314 0301 0345;
+1FA6;1FA6;03C9 0313 0342 0345;1FA6;03C9 0313 0342 0345;
+1FA7;1FA7;03C9 0314 0342 0345;1FA7;03C9 0314 0342 0345;
+1FA8;1FA8;03A9 0313 0345;1FA8;03A9 0313 0345;
+1FA9;1FA9;03A9 0314 0345;1FA9;03A9 0314 0345;
+1FAA;1FAA;03A9 0313 0300 0345;1FAA;03A9 0313 0300 0345;
+1FAB;1FAB;03A9 0314 0300 0345;1FAB;03A9 0314 0300 0345;
+1FAC;1FAC;03A9 0313 0301 0345;1FAC;03A9 0313 0301 0345;
+1FAD;1FAD;03A9 0314 0301 0345;1FAD;03A9 0314 0301 0345;
+1FAE;1FAE;03A9 0313 0342 0345;1FAE;03A9 0313 0342 0345;
+1FAF;1FAF;03A9 0314 0342 0345;1FAF;03A9 0314 0342 0345;
+1FB0;1FB0;03B1 0306;1FB0;03B1 0306;
+1FB1;1FB1;03B1 0304;1FB1;03B1 0304;
+1FB2;1FB2;03B1 0300 0345;1FB2;03B1 0300 0345;
+1FB3;1FB3;03B1 0345;1FB3;03B1 0345;
+1FB4;1FB4;03B1 0301 0345;1FB4;03B1 0301 0345;
+1FB6;1FB6;03B1 0342;1FB6;03B1 0342;
+1FB7;1FB7;03B1 0342 0345;1FB7;03B1 0342 0345;
+1FB8;1FB8;0391 0306;1FB8;0391 0306;
+1FB9;1FB9;0391 0304;1FB9;0391 0304;
+1FBA;1FBA;0391 0300;1FBA;0391 0300;
+1FBB;0386;0391 0301;0386;0391 0301;
+1FBC;1FBC;0391 0345;1FBC;0391 0345;
+1FBD;1FBD;1FBD;0020 0313;0020 0313;
+1FBE;03B9;03B9;03B9;03B9;
+1FBF;1FBF;1FBF;0020 0313;0020 0313;
+1FC0;1FC0;1FC0;0020 0342;0020 0342;
+1FC1;1FC1;00A8 0342;0020 0308 0342;0020 0308 0342;
+1FC2;1FC2;03B7 0300 0345;1FC2;03B7 0300 0345;
+1FC3;1FC3;03B7 0345;1FC3;03B7 0345;
+1FC4;1FC4;03B7 0301 0345;1FC4;03B7 0301 0345;
+1FC6;1FC6;03B7 0342;1FC6;03B7 0342;
+1FC7;1FC7;03B7 0342 0345;1FC7;03B7 0342 0345;
+1FC8;1FC8;0395 0300;1FC8;0395 0300;
+1FC9;0388;0395 0301;0388;0395 0301;
+1FCA;1FCA;0397 0300;1FCA;0397 0300;
+1FCB;0389;0397 0301;0389;0397 0301;
+1FCC;1FCC;0397 0345;1FCC;0397 0345;
+1FCD;1FCD;1FBF 0300;0020 0313 0300;0020 0313 0300;
+1FCE;1FCE;1FBF 0301;0020 0313 0301;0020 0313 0301;
+1FCF;1FCF;1FBF 0342;0020 0313 0342;0020 0313 0342;
+1FD0;1FD0;03B9 0306;1FD0;03B9 0306;
+1FD1;1FD1;03B9 0304;1FD1;03B9 0304;
+1FD2;1FD2;03B9 0308 0300;1FD2;03B9 0308 0300;
+1FD3;0390;03B9 0308 0301;0390;03B9 0308 0301;
+1FD6;1FD6;03B9 0342;1FD6;03B9 0342;
+1FD7;1FD7;03B9 0308 0342;1FD7;03B9 0308 0342;
+1FD8;1FD8;0399 0306;1FD8;0399 0306;
+1FD9;1FD9;0399 0304;1FD9;0399 0304;
+1FDA;1FDA;0399 0300;1FDA;0399 0300;
+1FDB;038A;0399 0301;038A;0399 0301;
+1FDD;1FDD;1FFE 0300;0020 0314 0300;0020 0314 0300;
+1FDE;1FDE;1FFE 0301;0020 0314 0301;0020 0314 0301;
+1FDF;1FDF;1FFE 0342;0020 0314 0342;0020 0314 0342;
+1FE0;1FE0;03C5 0306;1FE0;03C5 0306;
+1FE1;1FE1;03C5 0304;1FE1;03C5 0304;
+1FE2;1FE2;03C5 0308 0300;1FE2;03C5 0308 0300;
+1FE3;03B0;03C5 0308 0301;03B0;03C5 0308 0301;
+1FE4;1FE4;03C1 0313;1FE4;03C1 0313;
+1FE5;1FE5;03C1 0314;1FE5;03C1 0314;
+1FE6;1FE6;03C5 0342;1FE6;03C5 0342;
+1FE7;1FE7;03C5 0308 0342;1FE7;03C5 0308 0342;
+1FE8;1FE8;03A5 0306;1FE8;03A5 0306;
+1FE9;1FE9;03A5 0304;1FE9;03A5 0304;
+1FEA;1FEA;03A5 0300;1FEA;03A5 0300;
+1FEB;038E;03A5 0301;038E;03A5 0301;
+1FEC;1FEC;03A1 0314;1FEC;03A1 0314;
+1FED;1FED;00A8 0300;0020 0308 0300;0020 0308 0300;
+1FEE;0385;00A8 0301;0020 0308 0301;0020 0308 0301;
+1FEF;0060;0060;0060;0060;
+1FF2;1FF2;03C9 0300 0345;1FF2;03C9 0300 0345;
+1FF3;1FF3;03C9 0345;1FF3;03C9 0345;
+1FF4;1FF4;03C9 0301 0345;1FF4;03C9 0301 0345;
+1FF6;1FF6;03C9 0342;1FF6;03C9 0342;
+1FF7;1FF7;03C9 0342 0345;1FF7;03C9 0342 0345;
+1FF8;1FF8;039F 0300;1FF8;039F 0300;
+1FF9;038C;039F 0301;038C;039F 0301;
+1FFA;1FFA;03A9 0300;1FFA;03A9 0300;
+1FFB;038F;03A9 0301;038F;03A9 0301;
+1FFC;1FFC;03A9 0345;1FFC;03A9 0345;
+1FFD;00B4;00B4;0020 0301;0020 0301;
+1FFE;1FFE;1FFE;0020 0314;0020 0314;
+2000;2002;2002;0020;0020;
+2001;2003;2003;0020;0020;
+2002;2002;2002;0020;0020;
+2003;2003;2003;0020;0020;
+2004;2004;2004;0020;0020;
+2005;2005;2005;0020;0020;
+2006;2006;2006;0020;0020;
+2007;2007;2007;0020;0020;
+2008;2008;2008;0020;0020;
+2009;2009;2009;0020;0020;
+200A;200A;200A;0020;0020;
+2011;2011;2011;2010;2010;
+2017;2017;2017;0020 0333;0020 0333;
+2024;2024;2024;002E;002E;
+2025;2025;2025;002E 002E;002E 002E;
+2026;2026;2026;002E 002E 002E;002E 002E 002E;
+202F;202F;202F;0020;0020;
+2033;2033;2033;2032 2032;2032 2032;
+2034;2034;2034;2032 2032 2032;2032 2032 2032;
+2036;2036;2036;2035 2035;2035 2035;
+2037;2037;2037;2035 2035 2035;2035 2035 2035;
+203C;203C;203C;0021 0021;0021 0021;
+203E;203E;203E;0020 0305;0020 0305;
+2047;2047;2047;003F 003F;003F 003F;
+2048;2048;2048;003F 0021;003F 0021;
+2049;2049;2049;0021 003F;0021 003F;
+2057;2057;2057;2032 2032 2032 2032;2032 2032 2032 2032;
+205F;205F;205F;0020;0020;
+2070;2070;2070;0030;0030;
+2071;2071;2071;0069;0069;
+2074;2074;2074;0034;0034;
+2075;2075;2075;0035;0035;
+2076;2076;2076;0036;0036;
+2077;2077;2077;0037;0037;
+2078;2078;2078;0038;0038;
+2079;2079;2079;0039;0039;
+207A;207A;207A;002B;002B;
+207B;207B;207B;2212;2212;
+207C;207C;207C;003D;003D;
+207D;207D;207D;0028;0028;
+207E;207E;207E;0029;0029;
+207F;207F;207F;006E;006E;
+2080;2080;2080;0030;0030;
+2081;2081;2081;0031;0031;
+2082;2082;2082;0032;0032;
+2083;2083;2083;0033;0033;
+2084;2084;2084;0034;0034;
+2085;2085;2085;0035;0035;
+2086;2086;2086;0036;0036;
+2087;2087;2087;0037;0037;
+2088;2088;2088;0038;0038;
+2089;2089;2089;0039;0039;
+208A;208A;208A;002B;002B;
+208B;208B;208B;2212;2212;
+208C;208C;208C;003D;003D;
+208D;208D;208D;0028;0028;
+208E;208E;208E;0029;0029;
+20A8;20A8;20A8;0052 0073;0052 0073;
+2100;2100;2100;0061 002F 0063;0061 002F 0063;
+2101;2101;2101;0061 002F 0073;0061 002F 0073;
+2102;2102;2102;0043;0043;
+2103;2103;2103;00B0 0043;00B0 0043;
+2105;2105;2105;0063 002F 006F;0063 002F 006F;
+2106;2106;2106;0063 002F 0075;0063 002F 0075;
+2107;2107;2107;0190;0190;
+2109;2109;2109;00B0 0046;00B0 0046;
+210A;210A;210A;0067;0067;
+210B;210B;210B;0048;0048;
+210C;210C;210C;0048;0048;
+210D;210D;210D;0048;0048;
+210E;210E;210E;0068;0068;
+210F;210F;210F;0127;0127;
+2110;2110;2110;0049;0049;
+2111;2111;2111;0049;0049;
+2112;2112;2112;004C;004C;
+2113;2113;2113;006C;006C;
+2115;2115;2115;004E;004E;
+2116;2116;2116;004E 006F;004E 006F;
+2119;2119;2119;0050;0050;
+211A;211A;211A;0051;0051;
+211B;211B;211B;0052;0052;
+211C;211C;211C;0052;0052;
+211D;211D;211D;0052;0052;
+2120;2120;2120;0053 004D;0053 004D;
+2121;2121;2121;0054 0045 004C;0054 0045 004C;
+2122;2122;2122;0054 004D;0054 004D;
+2124;2124;2124;005A;005A;
+2126;03A9;03A9;03A9;03A9;
+2128;2128;2128;005A;005A;
+212A;004B;004B;004B;004B;
+212B;00C5;0041 030A;00C5;0041 030A;
+212C;212C;212C;0042;0042;
+212D;212D;212D;0043;0043;
+212F;212F;212F;0065;0065;
+2130;2130;2130;0045;0045;
+2131;2131;2131;0046;0046;
+2133;2133;2133;004D;004D;
+2134;2134;2134;006F;006F;
+2135;2135;2135;05D0;05D0;
+2136;2136;2136;05D1;05D1;
+2137;2137;2137;05D2;05D2;
+2138;2138;2138;05D3;05D3;
+2139;2139;2139;0069;0069;
+213D;213D;213D;03B3;03B3;
+213E;213E;213E;0393;0393;
+213F;213F;213F;03A0;03A0;
+2140;2140;2140;2211;2211;
+2145;2145;2145;0044;0044;
+2146;2146;2146;0064;0064;
+2147;2147;2147;0065;0065;
+2148;2148;2148;0069;0069;
+2149;2149;2149;006A;006A;
+2153;2153;2153;0031 2044 0033;0031 2044 0033;
+2154;2154;2154;0032 2044 0033;0032 2044 0033;
+2155;2155;2155;0031 2044 0035;0031 2044 0035;
+2156;2156;2156;0032 2044 0035;0032 2044 0035;
+2157;2157;2157;0033 2044 0035;0033 2044 0035;
+2158;2158;2158;0034 2044 0035;0034 2044 0035;
+2159;2159;2159;0031 2044 0036;0031 2044 0036;
+215A;215A;215A;0035 2044 0036;0035 2044 0036;
+215B;215B;215B;0031 2044 0038;0031 2044 0038;
+215C;215C;215C;0033 2044 0038;0033 2044 0038;
+215D;215D;215D;0035 2044 0038;0035 2044 0038;
+215E;215E;215E;0037 2044 0038;0037 2044 0038;
+215F;215F;215F;0031 2044;0031 2044;
+2160;2160;2160;0049;0049;
+2161;2161;2161;0049 0049;0049 0049;
+2162;2162;2162;0049 0049 0049;0049 0049 0049;
+2163;2163;2163;0049 0056;0049 0056;
+2164;2164;2164;0056;0056;
+2165;2165;2165;0056 0049;0056 0049;
+2166;2166;2166;0056 0049 0049;0056 0049 0049;
+2167;2167;2167;0056 0049 0049 0049;0056 0049 0049 0049;
+2168;2168;2168;0049 0058;0049 0058;
+2169;2169;2169;0058;0058;
+216A;216A;216A;0058 0049;0058 0049;
+216B;216B;216B;0058 0049 0049;0058 0049 0049;
+216C;216C;216C;004C;004C;
+216D;216D;216D;0043;0043;
+216E;216E;216E;0044;0044;
+216F;216F;216F;004D;004D;
+2170;2170;2170;0069;0069;
+2171;2171;2171;0069 0069;0069 0069;
+2172;2172;2172;0069 0069 0069;0069 0069 0069;
+2173;2173;2173;0069 0076;0069 0076;
+2174;2174;2174;0076;0076;
+2175;2175;2175;0076 0069;0076 0069;
+2176;2176;2176;0076 0069 0069;0076 0069 0069;
+2177;2177;2177;0076 0069 0069 0069;0076 0069 0069 0069;
+2178;2178;2178;0069 0078;0069 0078;
+2179;2179;2179;0078;0078;
+217A;217A;217A;0078 0069;0078 0069;
+217B;217B;217B;0078 0069 0069;0078 0069 0069;
+217C;217C;217C;006C;006C;
+217D;217D;217D;0063;0063;
+217E;217E;217E;0064;0064;
+217F;217F;217F;006D;006D;
+219A;219A;2190 0338;219A;2190 0338;
+219B;219B;2192 0338;219B;2192 0338;
+21AE;21AE;2194 0338;21AE;2194 0338;
+21CD;21CD;21D0 0338;21CD;21D0 0338;
+21CE;21CE;21D4 0338;21CE;21D4 0338;
+21CF;21CF;21D2 0338;21CF;21D2 0338;
+2204;2204;2203 0338;2204;2203 0338;
+2209;2209;2208 0338;2209;2208 0338;
+220C;220C;220B 0338;220C;220B 0338;
+2224;2224;2223 0338;2224;2223 0338;
+2226;2226;2225 0338;2226;2225 0338;
+222C;222C;222C;222B 222B;222B 222B;
+222D;222D;222D;222B 222B 222B;222B 222B 222B;
+222F;222F;222F;222E 222E;222E 222E;
+2230;2230;2230;222E 222E 222E;222E 222E 222E;
+2241;2241;223C 0338;2241;223C 0338;
+2244;2244;2243 0338;2244;2243 0338;
+2247;2247;2245 0338;2247;2245 0338;
+2249;2249;2248 0338;2249;2248 0338;
+2260;2260;003D 0338;2260;003D 0338;
+2262;2262;2261 0338;2262;2261 0338;
+226D;226D;224D 0338;226D;224D 0338;
+226E;226E;003C 0338;226E;003C 0338;
+226F;226F;003E 0338;226F;003E 0338;
+2270;2270;2264 0338;2270;2264 0338;
+2271;2271;2265 0338;2271;2265 0338;
+2274;2274;2272 0338;2274;2272 0338;
+2275;2275;2273 0338;2275;2273 0338;
+2278;2278;2276 0338;2278;2276 0338;
+2279;2279;2277 0338;2279;2277 0338;
+2280;2280;227A 0338;2280;227A 0338;
+2281;2281;227B 0338;2281;227B 0338;
+2284;2284;2282 0338;2284;2282 0338;
+2285;2285;2283 0338;2285;2283 0338;
+2288;2288;2286 0338;2288;2286 0338;
+2289;2289;2287 0338;2289;2287 0338;
+22AC;22AC;22A2 0338;22AC;22A2 0338;
+22AD;22AD;22A8 0338;22AD;22A8 0338;
+22AE;22AE;22A9 0338;22AE;22A9 0338;
+22AF;22AF;22AB 0338;22AF;22AB 0338;
+22E0;22E0;227C 0338;22E0;227C 0338;
+22E1;22E1;227D 0338;22E1;227D 0338;
+22E2;22E2;2291 0338;22E2;2291 0338;
+22E3;22E3;2292 0338;22E3;2292 0338;
+22EA;22EA;22B2 0338;22EA;22B2 0338;
+22EB;22EB;22B3 0338;22EB;22B3 0338;
+22EC;22EC;22B4 0338;22EC;22B4 0338;
+22ED;22ED;22B5 0338;22ED;22B5 0338;
+2329;3008;3008;3008;3008;
+232A;3009;3009;3009;3009;
+2460;2460;2460;0031;0031;
+2461;2461;2461;0032;0032;
+2462;2462;2462;0033;0033;
+2463;2463;2463;0034;0034;
+2464;2464;2464;0035;0035;
+2465;2465;2465;0036;0036;
+2466;2466;2466;0037;0037;
+2467;2467;2467;0038;0038;
+2468;2468;2468;0039;0039;
+2469;2469;2469;0031 0030;0031 0030;
+246A;246A;246A;0031 0031;0031 0031;
+246B;246B;246B;0031 0032;0031 0032;
+246C;246C;246C;0031 0033;0031 0033;
+246D;246D;246D;0031 0034;0031 0034;
+246E;246E;246E;0031 0035;0031 0035;
+246F;246F;246F;0031 0036;0031 0036;
+2470;2470;2470;0031 0037;0031 0037;
+2471;2471;2471;0031 0038;0031 0038;
+2472;2472;2472;0031 0039;0031 0039;
+2473;2473;2473;0032 0030;0032 0030;
+2474;2474;2474;0028 0031 0029;0028 0031 0029;
+2475;2475;2475;0028 0032 0029;0028 0032 0029;
+2476;2476;2476;0028 0033 0029;0028 0033 0029;
+2477;2477;2477;0028 0034 0029;0028 0034 0029;
+2478;2478;2478;0028 0035 0029;0028 0035 0029;
+2479;2479;2479;0028 0036 0029;0028 0036 0029;
+247A;247A;247A;0028 0037 0029;0028 0037 0029;
+247B;247B;247B;0028 0038 0029;0028 0038 0029;
+247C;247C;247C;0028 0039 0029;0028 0039 0029;
+247D;247D;247D;0028 0031 0030 0029;0028 0031 0030 0029;
+247E;247E;247E;0028 0031 0031 0029;0028 0031 0031 0029;
+247F;247F;247F;0028 0031 0032 0029;0028 0031 0032 0029;
+2480;2480;2480;0028 0031 0033 0029;0028 0031 0033 0029;
+2481;2481;2481;0028 0031 0034 0029;0028 0031 0034 0029;
+2482;2482;2482;0028 0031 0035 0029;0028 0031 0035 0029;
+2483;2483;2483;0028 0031 0036 0029;0028 0031 0036 0029;
+2484;2484;2484;0028 0031 0037 0029;0028 0031 0037 0029;
+2485;2485;2485;0028 0031 0038 0029;0028 0031 0038 0029;
+2486;2486;2486;0028 0031 0039 0029;0028 0031 0039 0029;
+2487;2487;2487;0028 0032 0030 0029;0028 0032 0030 0029;
+2488;2488;2488;0031 002E;0031 002E;
+2489;2489;2489;0032 002E;0032 002E;
+248A;248A;248A;0033 002E;0033 002E;
+248B;248B;248B;0034 002E;0034 002E;
+248C;248C;248C;0035 002E;0035 002E;
+248D;248D;248D;0036 002E;0036 002E;
+248E;248E;248E;0037 002E;0037 002E;
+248F;248F;248F;0038 002E;0038 002E;
+2490;2490;2490;0039 002E;0039 002E;
+2491;2491;2491;0031 0030 002E;0031 0030 002E;
+2492;2492;2492;0031 0031 002E;0031 0031 002E;
+2493;2493;2493;0031 0032 002E;0031 0032 002E;
+2494;2494;2494;0031 0033 002E;0031 0033 002E;
+2495;2495;2495;0031 0034 002E;0031 0034 002E;
+2496;2496;2496;0031 0035 002E;0031 0035 002E;
+2497;2497;2497;0031 0036 002E;0031 0036 002E;
+2498;2498;2498;0031 0037 002E;0031 0037 002E;
+2499;2499;2499;0031 0038 002E;0031 0038 002E;
+249A;249A;249A;0031 0039 002E;0031 0039 002E;
+249B;249B;249B;0032 0030 002E;0032 0030 002E;
+249C;249C;249C;0028 0061 0029;0028 0061 0029;
+249D;249D;249D;0028 0062 0029;0028 0062 0029;
+249E;249E;249E;0028 0063 0029;0028 0063 0029;
+249F;249F;249F;0028 0064 0029;0028 0064 0029;
+24A0;24A0;24A0;0028 0065 0029;0028 0065 0029;
+24A1;24A1;24A1;0028 0066 0029;0028 0066 0029;
+24A2;24A2;24A2;0028 0067 0029;0028 0067 0029;
+24A3;24A3;24A3;0028 0068 0029;0028 0068 0029;
+24A4;24A4;24A4;0028 0069 0029;0028 0069 0029;
+24A5;24A5;24A5;0028 006A 0029;0028 006A 0029;
+24A6;24A6;24A6;0028 006B 0029;0028 006B 0029;
+24A7;24A7;24A7;0028 006C 0029;0028 006C 0029;
+24A8;24A8;24A8;0028 006D 0029;0028 006D 0029;
+24A9;24A9;24A9;0028 006E 0029;0028 006E 0029;
+24AA;24AA;24AA;0028 006F 0029;0028 006F 0029;
+24AB;24AB;24AB;0028 0070 0029;0028 0070 0029;
+24AC;24AC;24AC;0028 0071 0029;0028 0071 0029;
+24AD;24AD;24AD;0028 0072 0029;0028 0072 0029;
+24AE;24AE;24AE;0028 0073 0029;0028 0073 0029;
+24AF;24AF;24AF;0028 0074 0029;0028 0074 0029;
+24B0;24B0;24B0;0028 0075 0029;0028 0075 0029;
+24B1;24B1;24B1;0028 0076 0029;0028 0076 0029;
+24B2;24B2;24B2;0028 0077 0029;0028 0077 0029;
+24B3;24B3;24B3;0028 0078 0029;0028 0078 0029;
+24B4;24B4;24B4;0028 0079 0029;0028 0079 0029;
+24B5;24B5;24B5;0028 007A 0029;0028 007A 0029;
+24B6;24B6;24B6;0041;0041;
+24B7;24B7;24B7;0042;0042;
+24B8;24B8;24B8;0043;0043;
+24B9;24B9;24B9;0044;0044;
+24BA;24BA;24BA;0045;0045;
+24BB;24BB;24BB;0046;0046;
+24BC;24BC;24BC;0047;0047;
+24BD;24BD;24BD;0048;0048;
+24BE;24BE;24BE;0049;0049;
+24BF;24BF;24BF;004A;004A;
+24C0;24C0;24C0;004B;004B;
+24C1;24C1;24C1;004C;004C;
+24C2;24C2;24C2;004D;004D;
+24C3;24C3;24C3;004E;004E;
+24C4;24C4;24C4;004F;004F;
+24C5;24C5;24C5;0050;0050;
+24C6;24C6;24C6;0051;0051;
+24C7;24C7;24C7;0052;0052;
+24C8;24C8;24C8;0053;0053;
+24C9;24C9;24C9;0054;0054;
+24CA;24CA;24CA;0055;0055;
+24CB;24CB;24CB;0056;0056;
+24CC;24CC;24CC;0057;0057;
+24CD;24CD;24CD;0058;0058;
+24CE;24CE;24CE;0059;0059;
+24CF;24CF;24CF;005A;005A;
+24D0;24D0;24D0;0061;0061;
+24D1;24D1;24D1;0062;0062;
+24D2;24D2;24D2;0063;0063;
+24D3;24D3;24D3;0064;0064;
+24D4;24D4;24D4;0065;0065;
+24D5;24D5;24D5;0066;0066;
+24D6;24D6;24D6;0067;0067;
+24D7;24D7;24D7;0068;0068;
+24D8;24D8;24D8;0069;0069;
+24D9;24D9;24D9;006A;006A;
+24DA;24DA;24DA;006B;006B;
+24DB;24DB;24DB;006C;006C;
+24DC;24DC;24DC;006D;006D;
+24DD;24DD;24DD;006E;006E;
+24DE;24DE;24DE;006F;006F;
+24DF;24DF;24DF;0070;0070;
+24E0;24E0;24E0;0071;0071;
+24E1;24E1;24E1;0072;0072;
+24E2;24E2;24E2;0073;0073;
+24E3;24E3;24E3;0074;0074;
+24E4;24E4;24E4;0075;0075;
+24E5;24E5;24E5;0076;0076;
+24E6;24E6;24E6;0077;0077;
+24E7;24E7;24E7;0078;0078;
+24E8;24E8;24E8;0079;0079;
+24E9;24E9;24E9;007A;007A;
+24EA;24EA;24EA;0030;0030;
+2A0C;2A0C;2A0C;222B 222B 222B 222B;222B 222B 222B 222B;
+2A74;2A74;2A74;003A 003A 003D;003A 003A 003D;
+2A75;2A75;2A75;003D 003D;003D 003D;
+2A76;2A76;2A76;003D 003D 003D;003D 003D 003D;
+2ADC;2ADD 0338;2ADD 0338;2ADD 0338;2ADD 0338;
+2E9F;2E9F;2E9F;6BCD;6BCD;
+2EF3;2EF3;2EF3;9F9F;9F9F;
+2F00;2F00;2F00;4E00;4E00;
+2F01;2F01;2F01;4E28;4E28;
+2F02;2F02;2F02;4E36;4E36;
+2F03;2F03;2F03;4E3F;4E3F;
+2F04;2F04;2F04;4E59;4E59;
+2F05;2F05;2F05;4E85;4E85;
+2F06;2F06;2F06;4E8C;4E8C;
+2F07;2F07;2F07;4EA0;4EA0;
+2F08;2F08;2F08;4EBA;4EBA;
+2F09;2F09;2F09;513F;513F;
+2F0A;2F0A;2F0A;5165;5165;
+2F0B;2F0B;2F0B;516B;516B;
+2F0C;2F0C;2F0C;5182;5182;
+2F0D;2F0D;2F0D;5196;5196;
+2F0E;2F0E;2F0E;51AB;51AB;
+2F0F;2F0F;2F0F;51E0;51E0;
+2F10;2F10;2F10;51F5;51F5;
+2F11;2F11;2F11;5200;5200;
+2F12;2F12;2F12;529B;529B;
+2F13;2F13;2F13;52F9;52F9;
+2F14;2F14;2F14;5315;5315;
+2F15;2F15;2F15;531A;531A;
+2F16;2F16;2F16;5338;5338;
+2F17;2F17;2F17;5341;5341;
+2F18;2F18;2F18;535C;535C;
+2F19;2F19;2F19;5369;5369;
+2F1A;2F1A;2F1A;5382;5382;
+2F1B;2F1B;2F1B;53B6;53B6;
+2F1C;2F1C;2F1C;53C8;53C8;
+2F1D;2F1D;2F1D;53E3;53E3;
+2F1E;2F1E;2F1E;56D7;56D7;
+2F1F;2F1F;2F1F;571F;571F;
+2F20;2F20;2F20;58EB;58EB;
+2F21;2F21;2F21;5902;5902;
+2F22;2F22;2F22;590A;590A;
+2F23;2F23;2F23;5915;5915;
+2F24;2F24;2F24;5927;5927;
+2F25;2F25;2F25;5973;5973;
+2F26;2F26;2F26;5B50;5B50;
+2F27;2F27;2F27;5B80;5B80;
+2F28;2F28;2F28;5BF8;5BF8;
+2F29;2F29;2F29;5C0F;5C0F;
+2F2A;2F2A;2F2A;5C22;5C22;
+2F2B;2F2B;2F2B;5C38;5C38;
+2F2C;2F2C;2F2C;5C6E;5C6E;
+2F2D;2F2D;2F2D;5C71;5C71;
+2F2E;2F2E;2F2E;5DDB;5DDB;
+2F2F;2F2F;2F2F;5DE5;5DE5;
+2F30;2F30;2F30;5DF1;5DF1;
+2F31;2F31;2F31;5DFE;5DFE;
+2F32;2F32;2F32;5E72;5E72;
+2F33;2F33;2F33;5E7A;5E7A;
+2F34;2F34;2F34;5E7F;5E7F;
+2F35;2F35;2F35;5EF4;5EF4;
+2F36;2F36;2F36;5EFE;5EFE;
+2F37;2F37;2F37;5F0B;5F0B;
+2F38;2F38;2F38;5F13;5F13;
+2F39;2F39;2F39;5F50;5F50;
+2F3A;2F3A;2F3A;5F61;5F61;
+2F3B;2F3B;2F3B;5F73;5F73;
+2F3C;2F3C;2F3C;5FC3;5FC3;
+2F3D;2F3D;2F3D;6208;6208;
+2F3E;2F3E;2F3E;6236;6236;
+2F3F;2F3F;2F3F;624B;624B;
+2F40;2F40;2F40;652F;652F;
+2F41;2F41;2F41;6534;6534;
+2F42;2F42;2F42;6587;6587;
+2F43;2F43;2F43;6597;6597;
+2F44;2F44;2F44;65A4;65A4;
+2F45;2F45;2F45;65B9;65B9;
+2F46;2F46;2F46;65E0;65E0;
+2F47;2F47;2F47;65E5;65E5;
+2F48;2F48;2F48;66F0;66F0;
+2F49;2F49;2F49;6708;6708;
+2F4A;2F4A;2F4A;6728;6728;
+2F4B;2F4B;2F4B;6B20;6B20;
+2F4C;2F4C;2F4C;6B62;6B62;
+2F4D;2F4D;2F4D;6B79;6B79;
+2F4E;2F4E;2F4E;6BB3;6BB3;
+2F4F;2F4F;2F4F;6BCB;6BCB;
+2F50;2F50;2F50;6BD4;6BD4;
+2F51;2F51;2F51;6BDB;6BDB;
+2F52;2F52;2F52;6C0F;6C0F;
+2F53;2F53;2F53;6C14;6C14;
+2F54;2F54;2F54;6C34;6C34;
+2F55;2F55;2F55;706B;706B;
+2F56;2F56;2F56;722A;722A;
+2F57;2F57;2F57;7236;7236;
+2F58;2F58;2F58;723B;723B;
+2F59;2F59;2F59;723F;723F;
+2F5A;2F5A;2F5A;7247;7247;
+2F5B;2F5B;2F5B;7259;7259;
+2F5C;2F5C;2F5C;725B;725B;
+2F5D;2F5D;2F5D;72AC;72AC;
+2F5E;2F5E;2F5E;7384;7384;
+2F5F;2F5F;2F5F;7389;7389;
+2F60;2F60;2F60;74DC;74DC;
+2F61;2F61;2F61;74E6;74E6;
+2F62;2F62;2F62;7518;7518;
+2F63;2F63;2F63;751F;751F;
+2F64;2F64;2F64;7528;7528;
+2F65;2F65;2F65;7530;7530;
+2F66;2F66;2F66;758B;758B;
+2F67;2F67;2F67;7592;7592;
+2F68;2F68;2F68;7676;7676;
+2F69;2F69;2F69;767D;767D;
+2F6A;2F6A;2F6A;76AE;76AE;
+2F6B;2F6B;2F6B;76BF;76BF;
+2F6C;2F6C;2F6C;76EE;76EE;
+2F6D;2F6D;2F6D;77DB;77DB;
+2F6E;2F6E;2F6E;77E2;77E2;
+2F6F;2F6F;2F6F;77F3;77F3;
+2F70;2F70;2F70;793A;793A;
+2F71;2F71;2F71;79B8;79B8;
+2F72;2F72;2F72;79BE;79BE;
+2F73;2F73;2F73;7A74;7A74;
+2F74;2F74;2F74;7ACB;7ACB;
+2F75;2F75;2F75;7AF9;7AF9;
+2F76;2F76;2F76;7C73;7C73;
+2F77;2F77;2F77;7CF8;7CF8;
+2F78;2F78;2F78;7F36;7F36;
+2F79;2F79;2F79;7F51;7F51;
+2F7A;2F7A;2F7A;7F8A;7F8A;
+2F7B;2F7B;2F7B;7FBD;7FBD;
+2F7C;2F7C;2F7C;8001;8001;
+2F7D;2F7D;2F7D;800C;800C;
+2F7E;2F7E;2F7E;8012;8012;
+2F7F;2F7F;2F7F;8033;8033;
+2F80;2F80;2F80;807F;807F;
+2F81;2F81;2F81;8089;8089;
+2F82;2F82;2F82;81E3;81E3;
+2F83;2F83;2F83;81EA;81EA;
+2F84;2F84;2F84;81F3;81F3;
+2F85;2F85;2F85;81FC;81FC;
+2F86;2F86;2F86;820C;820C;
+2F87;2F87;2F87;821B;821B;
+2F88;2F88;2F88;821F;821F;
+2F89;2F89;2F89;826E;826E;
+2F8A;2F8A;2F8A;8272;8272;
+2F8B;2F8B;2F8B;8278;8278;
+2F8C;2F8C;2F8C;864D;864D;
+2F8D;2F8D;2F8D;866B;866B;
+2F8E;2F8E;2F8E;8840;8840;
+2F8F;2F8F;2F8F;884C;884C;
+2F90;2F90;2F90;8863;8863;
+2F91;2F91;2F91;897E;897E;
+2F92;2F92;2F92;898B;898B;
+2F93;2F93;2F93;89D2;89D2;
+2F94;2F94;2F94;8A00;8A00;
+2F95;2F95;2F95;8C37;8C37;
+2F96;2F96;2F96;8C46;8C46;
+2F97;2F97;2F97;8C55;8C55;
+2F98;2F98;2F98;8C78;8C78;
+2F99;2F99;2F99;8C9D;8C9D;
+2F9A;2F9A;2F9A;8D64;8D64;
+2F9B;2F9B;2F9B;8D70;8D70;
+2F9C;2F9C;2F9C;8DB3;8DB3;
+2F9D;2F9D;2F9D;8EAB;8EAB;
+2F9E;2F9E;2F9E;8ECA;8ECA;
+2F9F;2F9F;2F9F;8F9B;8F9B;
+2FA0;2FA0;2FA0;8FB0;8FB0;
+2FA1;2FA1;2FA1;8FB5;8FB5;
+2FA2;2FA2;2FA2;9091;9091;
+2FA3;2FA3;2FA3;9149;9149;
+2FA4;2FA4;2FA4;91C6;91C6;
+2FA5;2FA5;2FA5;91CC;91CC;
+2FA6;2FA6;2FA6;91D1;91D1;
+2FA7;2FA7;2FA7;9577;9577;
+2FA8;2FA8;2FA8;9580;9580;
+2FA9;2FA9;2FA9;961C;961C;
+2FAA;2FAA;2FAA;96B6;96B6;
+2FAB;2FAB;2FAB;96B9;96B9;
+2FAC;2FAC;2FAC;96E8;96E8;
+2FAD;2FAD;2FAD;9751;9751;
+2FAE;2FAE;2FAE;975E;975E;
+2FAF;2FAF;2FAF;9762;9762;
+2FB0;2FB0;2FB0;9769;9769;
+2FB1;2FB1;2FB1;97CB;97CB;
+2FB2;2FB2;2FB2;97ED;97ED;
+2FB3;2FB3;2FB3;97F3;97F3;
+2FB4;2FB4;2FB4;9801;9801;
+2FB5;2FB5;2FB5;98A8;98A8;
+2FB6;2FB6;2FB6;98DB;98DB;
+2FB7;2FB7;2FB7;98DF;98DF;
+2FB8;2FB8;2FB8;9996;9996;
+2FB9;2FB9;2FB9;9999;9999;
+2FBA;2FBA;2FBA;99AC;99AC;
+2FBB;2FBB;2FBB;9AA8;9AA8;
+2FBC;2FBC;2FBC;9AD8;9AD8;
+2FBD;2FBD;2FBD;9ADF;9ADF;
+2FBE;2FBE;2FBE;9B25;9B25;
+2FBF;2FBF;2FBF;9B2F;9B2F;
+2FC0;2FC0;2FC0;9B32;9B32;
+2FC1;2FC1;2FC1;9B3C;9B3C;
+2FC2;2FC2;2FC2;9B5A;9B5A;
+2FC3;2FC3;2FC3;9CE5;9CE5;
+2FC4;2FC4;2FC4;9E75;9E75;
+2FC5;2FC5;2FC5;9E7F;9E7F;
+2FC6;2FC6;2FC6;9EA5;9EA5;
+2FC7;2FC7;2FC7;9EBB;9EBB;
+2FC8;2FC8;2FC8;9EC3;9EC3;
+2FC9;2FC9;2FC9;9ECD;9ECD;
+2FCA;2FCA;2FCA;9ED1;9ED1;
+2FCB;2FCB;2FCB;9EF9;9EF9;
+2FCC;2FCC;2FCC;9EFD;9EFD;
+2FCD;2FCD;2FCD;9F0E;9F0E;
+2FCE;2FCE;2FCE;9F13;9F13;
+2FCF;2FCF;2FCF;9F20;9F20;
+2FD0;2FD0;2FD0;9F3B;9F3B;
+2FD1;2FD1;2FD1;9F4A;9F4A;
+2FD2;2FD2;2FD2;9F52;9F52;
+2FD3;2FD3;2FD3;9F8D;9F8D;
+2FD4;2FD4;2FD4;9F9C;9F9C;
+2FD5;2FD5;2FD5;9FA0;9FA0;
+3000;3000;3000;0020;0020;
+3036;3036;3036;3012;3012;
+3038;3038;3038;5341;5341;
+3039;3039;3039;5344;5344;
+303A;303A;303A;5345;5345;
+304C;304C;304B 3099;304C;304B 3099;
+304E;304E;304D 3099;304E;304D 3099;
+3050;3050;304F 3099;3050;304F 3099;
+3052;3052;3051 3099;3052;3051 3099;
+3054;3054;3053 3099;3054;3053 3099;
+3056;3056;3055 3099;3056;3055 3099;
+3058;3058;3057 3099;3058;3057 3099;
+305A;305A;3059 3099;305A;3059 3099;
+305C;305C;305B 3099;305C;305B 3099;
+305E;305E;305D 3099;305E;305D 3099;
+3060;3060;305F 3099;3060;305F 3099;
+3062;3062;3061 3099;3062;3061 3099;
+3065;3065;3064 3099;3065;3064 3099;
+3067;3067;3066 3099;3067;3066 3099;
+3069;3069;3068 3099;3069;3068 3099;
+3070;3070;306F 3099;3070;306F 3099;
+3071;3071;306F 309A;3071;306F 309A;
+3073;3073;3072 3099;3073;3072 3099;
+3074;3074;3072 309A;3074;3072 309A;
+3076;3076;3075 3099;3076;3075 3099;
+3077;3077;3075 309A;3077;3075 309A;
+3079;3079;3078 3099;3079;3078 3099;
+307A;307A;3078 309A;307A;3078 309A;
+307C;307C;307B 3099;307C;307B 3099;
+307D;307D;307B 309A;307D;307B 309A;
+3094;3094;3046 3099;3094;3046 3099;
+309B;309B;309B;0020 3099;0020 3099;
+309C;309C;309C;0020 309A;0020 309A;
+309E;309E;309D 3099;309E;309D 3099;
+309F;309F;309F;3088 308A;3088 308A;
+30AC;30AC;30AB 3099;30AC;30AB 3099;
+30AE;30AE;30AD 3099;30AE;30AD 3099;
+30B0;30B0;30AF 3099;30B0;30AF 3099;
+30B2;30B2;30B1 3099;30B2;30B1 3099;
+30B4;30B4;30B3 3099;30B4;30B3 3099;
+30B6;30B6;30B5 3099;30B6;30B5 3099;
+30B8;30B8;30B7 3099;30B8;30B7 3099;
+30BA;30BA;30B9 3099;30BA;30B9 3099;
+30BC;30BC;30BB 3099;30BC;30BB 3099;
+30BE;30BE;30BD 3099;30BE;30BD 3099;
+30C0;30C0;30BF 3099;30C0;30BF 3099;
+30C2;30C2;30C1 3099;30C2;30C1 3099;
+30C5;30C5;30C4 3099;30C5;30C4 3099;
+30C7;30C7;30C6 3099;30C7;30C6 3099;
+30C9;30C9;30C8 3099;30C9;30C8 3099;
+30D0;30D0;30CF 3099;30D0;30CF 3099;
+30D1;30D1;30CF 309A;30D1;30CF 309A;
+30D3;30D3;30D2 3099;30D3;30D2 3099;
+30D4;30D4;30D2 309A;30D4;30D2 309A;
+30D6;30D6;30D5 3099;30D6;30D5 3099;
+30D7;30D7;30D5 309A;30D7;30D5 309A;
+30D9;30D9;30D8 3099;30D9;30D8 3099;
+30DA;30DA;30D8 309A;30DA;30D8 309A;
+30DC;30DC;30DB 3099;30DC;30DB 3099;
+30DD;30DD;30DB 309A;30DD;30DB 309A;
+30F4;30F4;30A6 3099;30F4;30A6 3099;
+30F7;30F7;30EF 3099;30F7;30EF 3099;
+30F8;30F8;30F0 3099;30F8;30F0 3099;
+30F9;30F9;30F1 3099;30F9;30F1 3099;
+30FA;30FA;30F2 3099;30FA;30F2 3099;
+30FE;30FE;30FD 3099;30FE;30FD 3099;
+30FF;30FF;30FF;30B3 30C8;30B3 30C8;
+3131;3131;3131;1100;1100;
+3132;3132;3132;1101;1101;
+3133;3133;3133;11AA;11AA;
+3134;3134;3134;1102;1102;
+3135;3135;3135;11AC;11AC;
+3136;3136;3136;11AD;11AD;
+3137;3137;3137;1103;1103;
+3138;3138;3138;1104;1104;
+3139;3139;3139;1105;1105;
+313A;313A;313A;11B0;11B0;
+313B;313B;313B;11B1;11B1;
+313C;313C;313C;11B2;11B2;
+313D;313D;313D;11B3;11B3;
+313E;313E;313E;11B4;11B4;
+313F;313F;313F;11B5;11B5;
+3140;3140;3140;111A;111A;
+3141;3141;3141;1106;1106;
+3142;3142;3142;1107;1107;
+3143;3143;3143;1108;1108;
+3144;3144;3144;1121;1121;
+3145;3145;3145;1109;1109;
+3146;3146;3146;110A;110A;
+3147;3147;3147;110B;110B;
+3148;3148;3148;110C;110C;
+3149;3149;3149;110D;110D;
+314A;314A;314A;110E;110E;
+314B;314B;314B;110F;110F;
+314C;314C;314C;1110;1110;
+314D;314D;314D;1111;1111;
+314E;314E;314E;1112;1112;
+314F;314F;314F;1161;1161;
+3150;3150;3150;1162;1162;
+3151;3151;3151;1163;1163;
+3152;3152;3152;1164;1164;
+3153;3153;3153;1165;1165;
+3154;3154;3154;1166;1166;
+3155;3155;3155;1167;1167;
+3156;3156;3156;1168;1168;
+3157;3157;3157;1169;1169;
+3158;3158;3158;116A;116A;
+3159;3159;3159;116B;116B;
+315A;315A;315A;116C;116C;
+315B;315B;315B;116D;116D;
+315C;315C;315C;116E;116E;
+315D;315D;315D;116F;116F;
+315E;315E;315E;1170;1170;
+315F;315F;315F;1171;1171;
+3160;3160;3160;1172;1172;
+3161;3161;3161;1173;1173;
+3162;3162;3162;1174;1174;
+3163;3163;3163;1175;1175;
+3164;3164;3164;1160;1160;
+3165;3165;3165;1114;1114;
+3166;3166;3166;1115;1115;
+3167;3167;3167;11C7;11C7;
+3168;3168;3168;11C8;11C8;
+3169;3169;3169;11CC;11CC;
+316A;316A;316A;11CE;11CE;
+316B;316B;316B;11D3;11D3;
+316C;316C;316C;11D7;11D7;
+316D;316D;316D;11D9;11D9;
+316E;316E;316E;111C;111C;
+316F;316F;316F;11DD;11DD;
+3170;3170;3170;11DF;11DF;
+3171;3171;3171;111D;111D;
+3172;3172;3172;111E;111E;
+3173;3173;3173;1120;1120;
+3174;3174;3174;1122;1122;
+3175;3175;3175;1123;1123;
+3176;3176;3176;1127;1127;
+3177;3177;3177;1129;1129;
+3178;3178;3178;112B;112B;
+3179;3179;3179;112C;112C;
+317A;317A;317A;112D;112D;
+317B;317B;317B;112E;112E;
+317C;317C;317C;112F;112F;
+317D;317D;317D;1132;1132;
+317E;317E;317E;1136;1136;
+317F;317F;317F;1140;1140;
+3180;3180;3180;1147;1147;
+3181;3181;3181;114C;114C;
+3182;3182;3182;11F1;11F1;
+3183;3183;3183;11F2;11F2;
+3184;3184;3184;1157;1157;
+3185;3185;3185;1158;1158;
+3186;3186;3186;1159;1159;
+3187;3187;3187;1184;1184;
+3188;3188;3188;1185;1185;
+3189;3189;3189;1188;1188;
+318A;318A;318A;1191;1191;
+318B;318B;318B;1192;1192;
+318C;318C;318C;1194;1194;
+318D;318D;318D;119E;119E;
+318E;318E;318E;11A1;11A1;
+3192;3192;3192;4E00;4E00;
+3193;3193;3193;4E8C;4E8C;
+3194;3194;3194;4E09;4E09;
+3195;3195;3195;56DB;56DB;
+3196;3196;3196;4E0A;4E0A;
+3197;3197;3197;4E2D;4E2D;
+3198;3198;3198;4E0B;4E0B;
+3199;3199;3199;7532;7532;
+319A;319A;319A;4E59;4E59;
+319B;319B;319B;4E19;4E19;
+319C;319C;319C;4E01;4E01;
+319D;319D;319D;5929;5929;
+319E;319E;319E;5730;5730;
+319F;319F;319F;4EBA;4EBA;
+3200;3200;3200;0028 1100 0029;0028 1100 0029;
+3201;3201;3201;0028 1102 0029;0028 1102 0029;
+3202;3202;3202;0028 1103 0029;0028 1103 0029;
+3203;3203;3203;0028 1105 0029;0028 1105 0029;
+3204;3204;3204;0028 1106 0029;0028 1106 0029;
+3205;3205;3205;0028 1107 0029;0028 1107 0029;
+3206;3206;3206;0028 1109 0029;0028 1109 0029;
+3207;3207;3207;0028 110B 0029;0028 110B 0029;
+3208;3208;3208;0028 110C 0029;0028 110C 0029;
+3209;3209;3209;0028 110E 0029;0028 110E 0029;
+320A;320A;320A;0028 110F 0029;0028 110F 0029;
+320B;320B;320B;0028 1110 0029;0028 1110 0029;
+320C;320C;320C;0028 1111 0029;0028 1111 0029;
+320D;320D;320D;0028 1112 0029;0028 1112 0029;
+320E;320E;320E;0028 AC00 0029;0028 1100 1161 0029;
+320F;320F;320F;0028 B098 0029;0028 1102 1161 0029;
+3210;3210;3210;0028 B2E4 0029;0028 1103 1161 0029;
+3211;3211;3211;0028 B77C 0029;0028 1105 1161 0029;
+3212;3212;3212;0028 B9C8 0029;0028 1106 1161 0029;
+3213;3213;3213;0028 BC14 0029;0028 1107 1161 0029;
+3214;3214;3214;0028 C0AC 0029;0028 1109 1161 0029;
+3215;3215;3215;0028 C544 0029;0028 110B 1161 0029;
+3216;3216;3216;0028 C790 0029;0028 110C 1161 0029;
+3217;3217;3217;0028 CC28 0029;0028 110E 1161 0029;
+3218;3218;3218;0028 CE74 0029;0028 110F 1161 0029;
+3219;3219;3219;0028 D0C0 0029;0028 1110 1161 0029;
+321A;321A;321A;0028 D30C 0029;0028 1111 1161 0029;
+321B;321B;321B;0028 D558 0029;0028 1112 1161 0029;
+321C;321C;321C;0028 C8FC 0029;0028 110C 116E 0029;
+3220;3220;3220;0028 4E00 0029;0028 4E00 0029;
+3221;3221;3221;0028 4E8C 0029;0028 4E8C 0029;
+3222;3222;3222;0028 4E09 0029;0028 4E09 0029;
+3223;3223;3223;0028 56DB 0029;0028 56DB 0029;
+3224;3224;3224;0028 4E94 0029;0028 4E94 0029;
+3225;3225;3225;0028 516D 0029;0028 516D 0029;
+3226;3226;3226;0028 4E03 0029;0028 4E03 0029;
+3227;3227;3227;0028 516B 0029;0028 516B 0029;
+3228;3228;3228;0028 4E5D 0029;0028 4E5D 0029;
+3229;3229;3229;0028 5341 0029;0028 5341 0029;
+322A;322A;322A;0028 6708 0029;0028 6708 0029;
+322B;322B;322B;0028 706B 0029;0028 706B 0029;
+322C;322C;322C;0028 6C34 0029;0028 6C34 0029;
+322D;322D;322D;0028 6728 0029;0028 6728 0029;
+322E;322E;322E;0028 91D1 0029;0028 91D1 0029;
+322F;322F;322F;0028 571F 0029;0028 571F 0029;
+3230;3230;3230;0028 65E5 0029;0028 65E5 0029;
+3231;3231;3231;0028 682A 0029;0028 682A 0029;
+3232;3232;3232;0028 6709 0029;0028 6709 0029;
+3233;3233;3233;0028 793E 0029;0028 793E 0029;
+3234;3234;3234;0028 540D 0029;0028 540D 0029;
+3235;3235;3235;0028 7279 0029;0028 7279 0029;
+3236;3236;3236;0028 8CA1 0029;0028 8CA1 0029;
+3237;3237;3237;0028 795D 0029;0028 795D 0029;
+3238;3238;3238;0028 52B4 0029;0028 52B4 0029;
+3239;3239;3239;0028 4EE3 0029;0028 4EE3 0029;
+323A;323A;323A;0028 547C 0029;0028 547C 0029;
+323B;323B;323B;0028 5B66 0029;0028 5B66 0029;
+323C;323C;323C;0028 76E3 0029;0028 76E3 0029;
+323D;323D;323D;0028 4F01 0029;0028 4F01 0029;
+323E;323E;323E;0028 8CC7 0029;0028 8CC7 0029;
+323F;323F;323F;0028 5354 0029;0028 5354 0029;
+3240;3240;3240;0028 796D 0029;0028 796D 0029;
+3241;3241;3241;0028 4F11 0029;0028 4F11 0029;
+3242;3242;3242;0028 81EA 0029;0028 81EA 0029;
+3243;3243;3243;0028 81F3 0029;0028 81F3 0029;
+3251;3251;3251;0032 0031;0032 0031;
+3252;3252;3252;0032 0032;0032 0032;
+3253;3253;3253;0032 0033;0032 0033;
+3254;3254;3254;0032 0034;0032 0034;
+3255;3255;3255;0032 0035;0032 0035;
+3256;3256;3256;0032 0036;0032 0036;
+3257;3257;3257;0032 0037;0032 0037;
+3258;3258;3258;0032 0038;0032 0038;
+3259;3259;3259;0032 0039;0032 0039;
+325A;325A;325A;0033 0030;0033 0030;
+325B;325B;325B;0033 0031;0033 0031;
+325C;325C;325C;0033 0032;0033 0032;
+325D;325D;325D;0033 0033;0033 0033;
+325E;325E;325E;0033 0034;0033 0034;
+325F;325F;325F;0033 0035;0033 0035;
+3260;3260;3260;1100;1100;
+3261;3261;3261;1102;1102;
+3262;3262;3262;1103;1103;
+3263;3263;3263;1105;1105;
+3264;3264;3264;1106;1106;
+3265;3265;3265;1107;1107;
+3266;3266;3266;1109;1109;
+3267;3267;3267;110B;110B;
+3268;3268;3268;110C;110C;
+3269;3269;3269;110E;110E;
+326A;326A;326A;110F;110F;
+326B;326B;326B;1110;1110;
+326C;326C;326C;1111;1111;
+326D;326D;326D;1112;1112;
+326E;326E;326E;AC00;1100 1161;
+326F;326F;326F;B098;1102 1161;
+3270;3270;3270;B2E4;1103 1161;
+3271;3271;3271;B77C;1105 1161;
+3272;3272;3272;B9C8;1106 1161;
+3273;3273;3273;BC14;1107 1161;
+3274;3274;3274;C0AC;1109 1161;
+3275;3275;3275;C544;110B 1161;
+3276;3276;3276;C790;110C 1161;
+3277;3277;3277;CC28;110E 1161;
+3278;3278;3278;CE74;110F 1161;
+3279;3279;3279;D0C0;1110 1161;
+327A;327A;327A;D30C;1111 1161;
+327B;327B;327B;D558;1112 1161;
+3280;3280;3280;4E00;4E00;
+3281;3281;3281;4E8C;4E8C;
+3282;3282;3282;4E09;4E09;
+3283;3283;3283;56DB;56DB;
+3284;3284;3284;4E94;4E94;
+3285;3285;3285;516D;516D;
+3286;3286;3286;4E03;4E03;
+3287;3287;3287;516B;516B;
+3288;3288;3288;4E5D;4E5D;
+3289;3289;3289;5341;5341;
+328A;328A;328A;6708;6708;
+328B;328B;328B;706B;706B;
+328C;328C;328C;6C34;6C34;
+328D;328D;328D;6728;6728;
+328E;328E;328E;91D1;91D1;
+328F;328F;328F;571F;571F;
+3290;3290;3290;65E5;65E5;
+3291;3291;3291;682A;682A;
+3292;3292;3292;6709;6709;
+3293;3293;3293;793E;793E;
+3294;3294;3294;540D;540D;
+3295;3295;3295;7279;7279;
+3296;3296;3296;8CA1;8CA1;
+3297;3297;3297;795D;795D;
+3298;3298;3298;52B4;52B4;
+3299;3299;3299;79D8;79D8;
+329A;329A;329A;7537;7537;
+329B;329B;329B;5973;5973;
+329C;329C;329C;9069;9069;
+329D;329D;329D;512A;512A;
+329E;329E;329E;5370;5370;
+329F;329F;329F;6CE8;6CE8;
+32A0;32A0;32A0;9805;9805;
+32A1;32A1;32A1;4F11;4F11;
+32A2;32A2;32A2;5199;5199;
+32A3;32A3;32A3;6B63;6B63;
+32A4;32A4;32A4;4E0A;4E0A;
+32A5;32A5;32A5;4E2D;4E2D;
+32A6;32A6;32A6;4E0B;4E0B;
+32A7;32A7;32A7;5DE6;5DE6;
+32A8;32A8;32A8;53F3;53F3;
+32A9;32A9;32A9;533B;533B;
+32AA;32AA;32AA;5B97;5B97;
+32AB;32AB;32AB;5B66;5B66;
+32AC;32AC;32AC;76E3;76E3;
+32AD;32AD;32AD;4F01;4F01;
+32AE;32AE;32AE;8CC7;8CC7;
+32AF;32AF;32AF;5354;5354;
+32B0;32B0;32B0;591C;591C;
+32B1;32B1;32B1;0033 0036;0033 0036;
+32B2;32B2;32B2;0033 0037;0033 0037;
+32B3;32B3;32B3;0033 0038;0033 0038;
+32B4;32B4;32B4;0033 0039;0033 0039;
+32B5;32B5;32B5;0034 0030;0034 0030;
+32B6;32B6;32B6;0034 0031;0034 0031;
+32B7;32B7;32B7;0034 0032;0034 0032;
+32B8;32B8;32B8;0034 0033;0034 0033;
+32B9;32B9;32B9;0034 0034;0034 0034;
+32BA;32BA;32BA;0034 0035;0034 0035;
+32BB;32BB;32BB;0034 0036;0034 0036;
+32BC;32BC;32BC;0034 0037;0034 0037;
+32BD;32BD;32BD;0034 0038;0034 0038;
+32BE;32BE;32BE;0034 0039;0034 0039;
+32BF;32BF;32BF;0035 0030;0035 0030;
+32C0;32C0;32C0;0031 6708;0031 6708;
+32C1;32C1;32C1;0032 6708;0032 6708;
+32C2;32C2;32C2;0033 6708;0033 6708;
+32C3;32C3;32C3;0034 6708;0034 6708;
+32C4;32C4;32C4;0035 6708;0035 6708;
+32C5;32C5;32C5;0036 6708;0036 6708;
+32C6;32C6;32C6;0037 6708;0037 6708;
+32C7;32C7;32C7;0038 6708;0038 6708;
+32C8;32C8;32C8;0039 6708;0039 6708;
+32C9;32C9;32C9;0031 0030 6708;0031 0030 6708;
+32CA;32CA;32CA;0031 0031 6708;0031 0031 6708;
+32CB;32CB;32CB;0031 0032 6708;0031 0032 6708;
+32D0;32D0;32D0;30A2;30A2;
+32D1;32D1;32D1;30A4;30A4;
+32D2;32D2;32D2;30A6;30A6;
+32D3;32D3;32D3;30A8;30A8;
+32D4;32D4;32D4;30AA;30AA;
+32D5;32D5;32D5;30AB;30AB;
+32D6;32D6;32D6;30AD;30AD;
+32D7;32D7;32D7;30AF;30AF;
+32D8;32D8;32D8;30B1;30B1;
+32D9;32D9;32D9;30B3;30B3;
+32DA;32DA;32DA;30B5;30B5;
+32DB;32DB;32DB;30B7;30B7;
+32DC;32DC;32DC;30B9;30B9;
+32DD;32DD;32DD;30BB;30BB;
+32DE;32DE;32DE;30BD;30BD;
+32DF;32DF;32DF;30BF;30BF;
+32E0;32E0;32E0;30C1;30C1;
+32E1;32E1;32E1;30C4;30C4;
+32E2;32E2;32E2;30C6;30C6;
+32E3;32E3;32E3;30C8;30C8;
+32E4;32E4;32E4;30CA;30CA;
+32E5;32E5;32E5;30CB;30CB;
+32E6;32E6;32E6;30CC;30CC;
+32E7;32E7;32E7;30CD;30CD;
+32E8;32E8;32E8;30CE;30CE;
+32E9;32E9;32E9;30CF;30CF;
+32EA;32EA;32EA;30D2;30D2;
+32EB;32EB;32EB;30D5;30D5;
+32EC;32EC;32EC;30D8;30D8;
+32ED;32ED;32ED;30DB;30DB;
+32EE;32EE;32EE;30DE;30DE;
+32EF;32EF;32EF;30DF;30DF;
+32F0;32F0;32F0;30E0;30E0;
+32F1;32F1;32F1;30E1;30E1;
+32F2;32F2;32F2;30E2;30E2;
+32F3;32F3;32F3;30E4;30E4;
+32F4;32F4;32F4;30E6;30E6;
+32F5;32F5;32F5;30E8;30E8;
+32F6;32F6;32F6;30E9;30E9;
+32F7;32F7;32F7;30EA;30EA;
+32F8;32F8;32F8;30EB;30EB;
+32F9;32F9;32F9;30EC;30EC;
+32FA;32FA;32FA;30ED;30ED;
+32FB;32FB;32FB;30EF;30EF;
+32FC;32FC;32FC;30F0;30F0;
+32FD;32FD;32FD;30F1;30F1;
+32FE;32FE;32FE;30F2;30F2;
+3300;3300;3300;30A2 30D1 30FC 30C8;30A2 30CF 309A 30FC 30C8;
+3301;3301;3301;30A2 30EB 30D5 30A1;30A2 30EB 30D5 30A1;
+3302;3302;3302;30A2 30F3 30DA 30A2;30A2 30F3 30D8 309A 30A2;
+3303;3303;3303;30A2 30FC 30EB;30A2 30FC 30EB;
+3304;3304;3304;30A4 30CB 30F3 30B0;30A4 30CB 30F3 30AF 3099;
+3305;3305;3305;30A4 30F3 30C1;30A4 30F3 30C1;
+3306;3306;3306;30A6 30A9 30F3;30A6 30A9 30F3;
+3307;3307;3307;30A8 30B9 30AF 30FC 30C9;30A8 30B9 30AF 30FC 30C8 3099;
+3308;3308;3308;30A8 30FC 30AB 30FC;30A8 30FC 30AB 30FC;
+3309;3309;3309;30AA 30F3 30B9;30AA 30F3 30B9;
+330A;330A;330A;30AA 30FC 30E0;30AA 30FC 30E0;
+330B;330B;330B;30AB 30A4 30EA;30AB 30A4 30EA;
+330C;330C;330C;30AB 30E9 30C3 30C8;30AB 30E9 30C3 30C8;
+330D;330D;330D;30AB 30ED 30EA 30FC;30AB 30ED 30EA 30FC;
+330E;330E;330E;30AC 30ED 30F3;30AB 3099 30ED 30F3;
+330F;330F;330F;30AC 30F3 30DE;30AB 3099 30F3 30DE;
+3310;3310;3310;30AE 30AC;30AD 3099 30AB 3099;
+3311;3311;3311;30AE 30CB 30FC;30AD 3099 30CB 30FC;
+3312;3312;3312;30AD 30E5 30EA 30FC;30AD 30E5 30EA 30FC;
+3313;3313;3313;30AE 30EB 30C0 30FC;30AD 3099 30EB 30BF 3099 30FC;
+3314;3314;3314;30AD 30ED;30AD 30ED;
+3315;3315;3315;30AD 30ED 30B0 30E9 30E0;30AD 30ED 30AF 3099 30E9 30E0;
+3316;3316;3316;30AD 30ED 30E1 30FC 30C8 30EB;30AD 30ED 30E1 30FC 30C8 30EB;
+3317;3317;3317;30AD 30ED 30EF 30C3 30C8;30AD 30ED 30EF 30C3 30C8;
+3318;3318;3318;30B0 30E9 30E0;30AF 3099 30E9 30E0;
+3319;3319;3319;30B0 30E9 30E0 30C8 30F3;30AF 3099 30E9 30E0 30C8 30F3;
+331A;331A;331A;30AF 30EB 30BC 30A4 30ED;30AF 30EB 30BB 3099 30A4 30ED;
+331B;331B;331B;30AF 30ED 30FC 30CD;30AF 30ED 30FC 30CD;
+331C;331C;331C;30B1 30FC 30B9;30B1 30FC 30B9;
+331D;331D;331D;30B3 30EB 30CA;30B3 30EB 30CA;
+331E;331E;331E;30B3 30FC 30DD;30B3 30FC 30DB 309A;
+331F;331F;331F;30B5 30A4 30AF 30EB;30B5 30A4 30AF 30EB;
+3320;3320;3320;30B5 30F3 30C1 30FC 30E0;30B5 30F3 30C1 30FC 30E0;
+3321;3321;3321;30B7 30EA 30F3 30B0;30B7 30EA 30F3 30AF 3099;
+3322;3322;3322;30BB 30F3 30C1;30BB 30F3 30C1;
+3323;3323;3323;30BB 30F3 30C8;30BB 30F3 30C8;
+3324;3324;3324;30C0 30FC 30B9;30BF 3099 30FC 30B9;
+3325;3325;3325;30C7 30B7;30C6 3099 30B7;
+3326;3326;3326;30C9 30EB;30C8 3099 30EB;
+3327;3327;3327;30C8 30F3;30C8 30F3;
+3328;3328;3328;30CA 30CE;30CA 30CE;
+3329;3329;3329;30CE 30C3 30C8;30CE 30C3 30C8;
+332A;332A;332A;30CF 30A4 30C4;30CF 30A4 30C4;
+332B;332B;332B;30D1 30FC 30BB 30F3 30C8;30CF 309A 30FC 30BB 30F3 30C8;
+332C;332C;332C;30D1 30FC 30C4;30CF 309A 30FC 30C4;
+332D;332D;332D;30D0 30FC 30EC 30EB;30CF 3099 30FC 30EC 30EB;
+332E;332E;332E;30D4 30A2 30B9 30C8 30EB;30D2 309A 30A2 30B9 30C8 30EB;
+332F;332F;332F;30D4 30AF 30EB;30D2 309A 30AF 30EB;
+3330;3330;3330;30D4 30B3;30D2 309A 30B3;
+3331;3331;3331;30D3 30EB;30D2 3099 30EB;
+3332;3332;3332;30D5 30A1 30E9 30C3 30C9;30D5 30A1 30E9 30C3 30C8 3099;
+3333;3333;3333;30D5 30A3 30FC 30C8;30D5 30A3 30FC 30C8;
+3334;3334;3334;30D6 30C3 30B7 30A7 30EB;30D5 3099 30C3 30B7 30A7 30EB;
+3335;3335;3335;30D5 30E9 30F3;30D5 30E9 30F3;
+3336;3336;3336;30D8 30AF 30BF 30FC 30EB;30D8 30AF 30BF 30FC 30EB;
+3337;3337;3337;30DA 30BD;30D8 309A 30BD;
+3338;3338;3338;30DA 30CB 30D2;30D8 309A 30CB 30D2;
+3339;3339;3339;30D8 30EB 30C4;30D8 30EB 30C4;
+333A;333A;333A;30DA 30F3 30B9;30D8 309A 30F3 30B9;
+333B;333B;333B;30DA 30FC 30B8;30D8 309A 30FC 30B7 3099;
+333C;333C;333C;30D9 30FC 30BF;30D8 3099 30FC 30BF;
+333D;333D;333D;30DD 30A4 30F3 30C8;30DB 309A 30A4 30F3 30C8;
+333E;333E;333E;30DC 30EB 30C8;30DB 3099 30EB 30C8;
+333F;333F;333F;30DB 30F3;30DB 30F3;
+3340;3340;3340;30DD 30F3 30C9;30DB 309A 30F3 30C8 3099;
+3341;3341;3341;30DB 30FC 30EB;30DB 30FC 30EB;
+3342;3342;3342;30DB 30FC 30F3;30DB 30FC 30F3;
+3343;3343;3343;30DE 30A4 30AF 30ED;30DE 30A4 30AF 30ED;
+3344;3344;3344;30DE 30A4 30EB;30DE 30A4 30EB;
+3345;3345;3345;30DE 30C3 30CF;30DE 30C3 30CF;
+3346;3346;3346;30DE 30EB 30AF;30DE 30EB 30AF;
+3347;3347;3347;30DE 30F3 30B7 30E7 30F3;30DE 30F3 30B7 30E7 30F3;
+3348;3348;3348;30DF 30AF 30ED 30F3;30DF 30AF 30ED 30F3;
+3349;3349;3349;30DF 30EA;30DF 30EA;
+334A;334A;334A;30DF 30EA 30D0 30FC 30EB;30DF 30EA 30CF 3099 30FC 30EB;
+334B;334B;334B;30E1 30AC;30E1 30AB 3099;
+334C;334C;334C;30E1 30AC 30C8 30F3;30E1 30AB 3099 30C8 30F3;
+334D;334D;334D;30E1 30FC 30C8 30EB;30E1 30FC 30C8 30EB;
+334E;334E;334E;30E4 30FC 30C9;30E4 30FC 30C8 3099;
+334F;334F;334F;30E4 30FC 30EB;30E4 30FC 30EB;
+3350;3350;3350;30E6 30A2 30F3;30E6 30A2 30F3;
+3351;3351;3351;30EA 30C3 30C8 30EB;30EA 30C3 30C8 30EB;
+3352;3352;3352;30EA 30E9;30EA 30E9;
+3353;3353;3353;30EB 30D4 30FC;30EB 30D2 309A 30FC;
+3354;3354;3354;30EB 30FC 30D6 30EB;30EB 30FC 30D5 3099 30EB;
+3355;3355;3355;30EC 30E0;30EC 30E0;
+3356;3356;3356;30EC 30F3 30C8 30B2 30F3;30EC 30F3 30C8 30B1 3099 30F3;
+3357;3357;3357;30EF 30C3 30C8;30EF 30C3 30C8;
+3358;3358;3358;0030 70B9;0030 70B9;
+3359;3359;3359;0031 70B9;0031 70B9;
+335A;335A;335A;0032 70B9;0032 70B9;
+335B;335B;335B;0033 70B9;0033 70B9;
+335C;335C;335C;0034 70B9;0034 70B9;
+335D;335D;335D;0035 70B9;0035 70B9;
+335E;335E;335E;0036 70B9;0036 70B9;
+335F;335F;335F;0037 70B9;0037 70B9;
+3360;3360;3360;0038 70B9;0038 70B9;
+3361;3361;3361;0039 70B9;0039 70B9;
+3362;3362;3362;0031 0030 70B9;0031 0030 70B9;
+3363;3363;3363;0031 0031 70B9;0031 0031 70B9;
+3364;3364;3364;0031 0032 70B9;0031 0032 70B9;
+3365;3365;3365;0031 0033 70B9;0031 0033 70B9;
+3366;3366;3366;0031 0034 70B9;0031 0034 70B9;
+3367;3367;3367;0031 0035 70B9;0031 0035 70B9;
+3368;3368;3368;0031 0036 70B9;0031 0036 70B9;
+3369;3369;3369;0031 0037 70B9;0031 0037 70B9;
+336A;336A;336A;0031 0038 70B9;0031 0038 70B9;
+336B;336B;336B;0031 0039 70B9;0031 0039 70B9;
+336C;336C;336C;0032 0030 70B9;0032 0030 70B9;
+336D;336D;336D;0032 0031 70B9;0032 0031 70B9;
+336E;336E;336E;0032 0032 70B9;0032 0032 70B9;
+336F;336F;336F;0032 0033 70B9;0032 0033 70B9;
+3370;3370;3370;0032 0034 70B9;0032 0034 70B9;
+3371;3371;3371;0068 0050 0061;0068 0050 0061;
+3372;3372;3372;0064 0061;0064 0061;
+3373;3373;3373;0041 0055;0041 0055;
+3374;3374;3374;0062 0061 0072;0062 0061 0072;
+3375;3375;3375;006F 0056;006F 0056;
+3376;3376;3376;0070 0063;0070 0063;
+337B;337B;337B;5E73 6210;5E73 6210;
+337C;337C;337C;662D 548C;662D 548C;
+337D;337D;337D;5927 6B63;5927 6B63;
+337E;337E;337E;660E 6CBB;660E 6CBB;
+337F;337F;337F;682A 5F0F 4F1A 793E;682A 5F0F 4F1A 793E;
+3380;3380;3380;0070 0041;0070 0041;
+3381;3381;3381;006E 0041;006E 0041;
+3382;3382;3382;03BC 0041;03BC 0041;
+3383;3383;3383;006D 0041;006D 0041;
+3384;3384;3384;006B 0041;006B 0041;
+3385;3385;3385;004B 0042;004B 0042;
+3386;3386;3386;004D 0042;004D 0042;
+3387;3387;3387;0047 0042;0047 0042;
+3388;3388;3388;0063 0061 006C;0063 0061 006C;
+3389;3389;3389;006B 0063 0061 006C;006B 0063 0061 006C;
+338A;338A;338A;0070 0046;0070 0046;
+338B;338B;338B;006E 0046;006E 0046;
+338C;338C;338C;03BC 0046;03BC 0046;
+338D;338D;338D;03BC 0067;03BC 0067;
+338E;338E;338E;006D 0067;006D 0067;
+338F;338F;338F;006B 0067;006B 0067;
+3390;3390;3390;0048 007A;0048 007A;
+3391;3391;3391;006B 0048 007A;006B 0048 007A;
+3392;3392;3392;004D 0048 007A;004D 0048 007A;
+3393;3393;3393;0047 0048 007A;0047 0048 007A;
+3394;3394;3394;0054 0048 007A;0054 0048 007A;
+3395;3395;3395;03BC 006C;03BC 006C;
+3396;3396;3396;006D 006C;006D 006C;
+3397;3397;3397;0064 006C;0064 006C;
+3398;3398;3398;006B 006C;006B 006C;
+3399;3399;3399;0066 006D;0066 006D;
+339A;339A;339A;006E 006D;006E 006D;
+339B;339B;339B;03BC 006D;03BC 006D;
+339C;339C;339C;006D 006D;006D 006D;
+339D;339D;339D;0063 006D;0063 006D;
+339E;339E;339E;006B 006D;006B 006D;
+339F;339F;339F;006D 006D 0032;006D 006D 0032;
+33A0;33A0;33A0;0063 006D 0032;0063 006D 0032;
+33A1;33A1;33A1;006D 0032;006D 0032;
+33A2;33A2;33A2;006B 006D 0032;006B 006D 0032;
+33A3;33A3;33A3;006D 006D 0033;006D 006D 0033;
+33A4;33A4;33A4;0063 006D 0033;0063 006D 0033;
+33A5;33A5;33A5;006D 0033;006D 0033;
+33A6;33A6;33A6;006B 006D 0033;006B 006D 0033;
+33A7;33A7;33A7;006D 2215 0073;006D 2215 0073;
+33A8;33A8;33A8;006D 2215 0073 0032;006D 2215 0073 0032;
+33A9;33A9;33A9;0050 0061;0050 0061;
+33AA;33AA;33AA;006B 0050 0061;006B 0050 0061;
+33AB;33AB;33AB;004D 0050 0061;004D 0050 0061;
+33AC;33AC;33AC;0047 0050 0061;0047 0050 0061;
+33AD;33AD;33AD;0072 0061 0064;0072 0061 0064;
+33AE;33AE;33AE;0072 0061 0064 2215 0073;0072 0061 0064 2215 0073;
+33AF;33AF;33AF;0072 0061 0064 2215 0073 0032;0072 0061 0064 2215 0073 0032;
+33B0;33B0;33B0;0070 0073;0070 0073;
+33B1;33B1;33B1;006E 0073;006E 0073;
+33B2;33B2;33B2;03BC 0073;03BC 0073;
+33B3;33B3;33B3;006D 0073;006D 0073;
+33B4;33B4;33B4;0070 0056;0070 0056;
+33B5;33B5;33B5;006E 0056;006E 0056;
+33B6;33B6;33B6;03BC 0056;03BC 0056;
+33B7;33B7;33B7;006D 0056;006D 0056;
+33B8;33B8;33B8;006B 0056;006B 0056;
+33B9;33B9;33B9;004D 0056;004D 0056;
+33BA;33BA;33BA;0070 0057;0070 0057;
+33BB;33BB;33BB;006E 0057;006E 0057;
+33BC;33BC;33BC;03BC 0057;03BC 0057;
+33BD;33BD;33BD;006D 0057;006D 0057;
+33BE;33BE;33BE;006B 0057;006B 0057;
+33BF;33BF;33BF;004D 0057;004D 0057;
+33C0;33C0;33C0;006B 03A9;006B 03A9;
+33C1;33C1;33C1;004D 03A9;004D 03A9;
+33C2;33C2;33C2;0061 002E 006D 002E;0061 002E 006D 002E;
+33C3;33C3;33C3;0042 0071;0042 0071;
+33C4;33C4;33C4;0063 0063;0063 0063;
+33C5;33C5;33C5;0063 0064;0063 0064;
+33C6;33C6;33C6;0043 2215 006B 0067;0043 2215 006B 0067;
+33C7;33C7;33C7;0043 006F 002E;0043 006F 002E;
+33C8;33C8;33C8;0064 0042;0064 0042;
+33C9;33C9;33C9;0047 0079;0047 0079;
+33CA;33CA;33CA;0068 0061;0068 0061;
+33CB;33CB;33CB;0048 0050;0048 0050;
+33CC;33CC;33CC;0069 006E;0069 006E;
+33CD;33CD;33CD;004B 004B;004B 004B;
+33CE;33CE;33CE;004B 004D;004B 004D;
+33CF;33CF;33CF;006B 0074;006B 0074;
+33D0;33D0;33D0;006C 006D;006C 006D;
+33D1;33D1;33D1;006C 006E;006C 006E;
+33D2;33D2;33D2;006C 006F 0067;006C 006F 0067;
+33D3;33D3;33D3;006C 0078;006C 0078;
+33D4;33D4;33D4;006D 0062;006D 0062;
+33D5;33D5;33D5;006D 0069 006C;006D 0069 006C;
+33D6;33D6;33D6;006D 006F 006C;006D 006F 006C;
+33D7;33D7;33D7;0050 0048;0050 0048;
+33D8;33D8;33D8;0070 002E 006D 002E;0070 002E 006D 002E;
+33D9;33D9;33D9;0050 0050 004D;0050 0050 004D;
+33DA;33DA;33DA;0050 0052;0050 0052;
+33DB;33DB;33DB;0073 0072;0073 0072;
+33DC;33DC;33DC;0053 0076;0053 0076;
+33DD;33DD;33DD;0057 0062;0057 0062;
+33E0;33E0;33E0;0031 65E5;0031 65E5;
+33E1;33E1;33E1;0032 65E5;0032 65E5;
+33E2;33E2;33E2;0033 65E5;0033 65E5;
+33E3;33E3;33E3;0034 65E5;0034 65E5;
+33E4;33E4;33E4;0035 65E5;0035 65E5;
+33E5;33E5;33E5;0036 65E5;0036 65E5;
+33E6;33E6;33E6;0037 65E5;0037 65E5;
+33E7;33E7;33E7;0038 65E5;0038 65E5;
+33E8;33E8;33E8;0039 65E5;0039 65E5;
+33E9;33E9;33E9;0031 0030 65E5;0031 0030 65E5;
+33EA;33EA;33EA;0031 0031 65E5;0031 0031 65E5;
+33EB;33EB;33EB;0031 0032 65E5;0031 0032 65E5;
+33EC;33EC;33EC;0031 0033 65E5;0031 0033 65E5;
+33ED;33ED;33ED;0031 0034 65E5;0031 0034 65E5;
+33EE;33EE;33EE;0031 0035 65E5;0031 0035 65E5;
+33EF;33EF;33EF;0031 0036 65E5;0031 0036 65E5;
+33F0;33F0;33F0;0031 0037 65E5;0031 0037 65E5;
+33F1;33F1;33F1;0031 0038 65E5;0031 0038 65E5;
+33F2;33F2;33F2;0031 0039 65E5;0031 0039 65E5;
+33F3;33F3;33F3;0032 0030 65E5;0032 0030 65E5;
+33F4;33F4;33F4;0032 0031 65E5;0032 0031 65E5;
+33F5;33F5;33F5;0032 0032 65E5;0032 0032 65E5;
+33F6;33F6;33F6;0032 0033 65E5;0032 0033 65E5;
+33F7;33F7;33F7;0032 0034 65E5;0032 0034 65E5;
+33F8;33F8;33F8;0032 0035 65E5;0032 0035 65E5;
+33F9;33F9;33F9;0032 0036 65E5;0032 0036 65E5;
+33FA;33FA;33FA;0032 0037 65E5;0032 0037 65E5;
+33FB;33FB;33FB;0032 0038 65E5;0032 0038 65E5;
+33FC;33FC;33FC;0032 0039 65E5;0032 0039 65E5;
+33FD;33FD;33FD;0033 0030 65E5;0033 0030 65E5;
+33FE;33FE;33FE;0033 0031 65E5;0033 0031 65E5;
+AC00;AC00;1100 1161;AC00;1100 1161;
+AC01;AC01;1100 1161 11A8;AC01;1100 1161 11A8;
+AC02;AC02;1100 1161 11A9;AC02;1100 1161 11A9;
+AC03;AC03;1100 1161 11AA;AC03;1100 1161 11AA;
+AC04;AC04;1100 1161 11AB;AC04;1100 1161 11AB;
+AC05;AC05;1100 1161 11AC;AC05;1100 1161 11AC;
+AC06;AC06;1100 1161 11AD;AC06;1100 1161 11AD;
+AC07;AC07;1100 1161 11AE;AC07;1100 1161 11AE;
+AC08;AC08;1100 1161 11AF;AC08;1100 1161 11AF;
+AC09;AC09;1100 1161 11B0;AC09;1100 1161 11B0;
+AC0A;AC0A;1100 1161 11B1;AC0A;1100 1161 11B1;
+AC0B;AC0B;1100 1161 11B2;AC0B;1100 1161 11B2;
+AC0C;AC0C;1100 1161 11B3;AC0C;1100 1161 11B3;
+AC0D;AC0D;1100 1161 11B4;AC0D;1100 1161 11B4;
+AC0E;AC0E;1100 1161 11B5;AC0E;1100 1161 11B5;
+AC0F;AC0F;1100 1161 11B6;AC0F;1100 1161 11B6;
+AC10;AC10;1100 1161 11B7;AC10;1100 1161 11B7;
+AC11;AC11;1100 1161 11B8;AC11;1100 1161 11B8;
+AC12;AC12;1100 1161 11B9;AC12;1100 1161 11B9;
+AC13;AC13;1100 1161 11BA;AC13;1100 1161 11BA;
+AC14;AC14;1100 1161 11BB;AC14;1100 1161 11BB;
+AC15;AC15;1100 1161 11BC;AC15;1100 1161 11BC;
+AC16;AC16;1100 1161 11BD;AC16;1100 1161 11BD;
+AC17;AC17;1100 1161 11BE;AC17;1100 1161 11BE;
+AC18;AC18;1100 1161 11BF;AC18;1100 1161 11BF;
+AC19;AC19;1100 1161 11C0;AC19;1100 1161 11C0;
+AC1A;AC1A;1100 1161 11C1;AC1A;1100 1161 11C1;
+AC1B;AC1B;1100 1161 11C2;AC1B;1100 1161 11C2;
+AC1C;AC1C;1100 1162;AC1C;1100 1162;
+AC1D;AC1D;1100 1162 11A8;AC1D;1100 1162 11A8;
+AC1E;AC1E;1100 1162 11A9;AC1E;1100 1162 11A9;
+AC1F;AC1F;1100 1162 11AA;AC1F;1100 1162 11AA;
+AC20;AC20;1100 1162 11AB;AC20;1100 1162 11AB;
+AC21;AC21;1100 1162 11AC;AC21;1100 1162 11AC;
+AC22;AC22;1100 1162 11AD;AC22;1100 1162 11AD;
+AC23;AC23;1100 1162 11AE;AC23;1100 1162 11AE;
+AC24;AC24;1100 1162 11AF;AC24;1100 1162 11AF;
+AC25;AC25;1100 1162 11B0;AC25;1100 1162 11B0;
+AC26;AC26;1100 1162 11B1;AC26;1100 1162 11B1;
+AC27;AC27;1100 1162 11B2;AC27;1100 1162 11B2;
+AC28;AC28;1100 1162 11B3;AC28;1100 1162 11B3;
+AC29;AC29;1100 1162 11B4;AC29;1100 1162 11B4;
+AC2A;AC2A;1100 1162 11B5;AC2A;1100 1162 11B5;
+AC2B;AC2B;1100 1162 11B6;AC2B;1100 1162 11B6;
+AC2C;AC2C;1100 1162 11B7;AC2C;1100 1162 11B7;
+AC2D;AC2D;1100 1162 11B8;AC2D;1100 1162 11B8;
+AC2E;AC2E;1100 1162 11B9;AC2E;1100 1162 11B9;
+AC2F;AC2F;1100 1162 11BA;AC2F;1100 1162 11BA;
+AC30;AC30;1100 1162 11BB;AC30;1100 1162 11BB;
+AC31;AC31;1100 1162 11BC;AC31;1100 1162 11BC;
+AC32;AC32;1100 1162 11BD;AC32;1100 1162 11BD;
+AC33;AC33;1100 1162 11BE;AC33;1100 1162 11BE;
+AC34;AC34;1100 1162 11BF;AC34;1100 1162 11BF;
+AC35;AC35;1100 1162 11C0;AC35;1100 1162 11C0;
+AC36;AC36;1100 1162 11C1;AC36;1100 1162 11C1;
+AC37;AC37;1100 1162 11C2;AC37;1100 1162 11C2;
+AC38;AC38;1100 1163;AC38;1100 1163;
+AC39;AC39;1100 1163 11A8;AC39;1100 1163 11A8;
+AC3A;AC3A;1100 1163 11A9;AC3A;1100 1163 11A9;
+AC3B;AC3B;1100 1163 11AA;AC3B;1100 1163 11AA;
+AC3C;AC3C;1100 1163 11AB;AC3C;1100 1163 11AB;
+AC3D;AC3D;1100 1163 11AC;AC3D;1100 1163 11AC;
+AC3E;AC3E;1100 1163 11AD;AC3E;1100 1163 11AD;
+AC3F;AC3F;1100 1163 11AE;AC3F;1100 1163 11AE;
+AC40;AC40;1100 1163 11AF;AC40;1100 1163 11AF;
+AC41;AC41;1100 1163 11B0;AC41;1100 1163 11B0;
+AC42;AC42;1100 1163 11B1;AC42;1100 1163 11B1;
+AC43;AC43;1100 1163 11B2;AC43;1100 1163 11B2;
+AC44;AC44;1100 1163 11B3;AC44;1100 1163 11B3;
+AC45;AC45;1100 1163 11B4;AC45;1100 1163 11B4;
+AC46;AC46;1100 1163 11B5;AC46;1100 1163 11B5;
+AC47;AC47;1100 1163 11B6;AC47;1100 1163 11B6;
+AC48;AC48;1100 1163 11B7;AC48;1100 1163 11B7;
+AC49;AC49;1100 1163 11B8;AC49;1100 1163 11B8;
+AC4A;AC4A;1100 1163 11B9;AC4A;1100 1163 11B9;
+AC4B;AC4B;1100 1163 11BA;AC4B;1100 1163 11BA;
+AC4C;AC4C;1100 1163 11BB;AC4C;1100 1163 11BB;
+AC4D;AC4D;1100 1163 11BC;AC4D;1100 1163 11BC;
+AC4E;AC4E;1100 1163 11BD;AC4E;1100 1163 11BD;
+AC4F;AC4F;1100 1163 11BE;AC4F;1100 1163 11BE;
+AC50;AC50;1100 1163 11BF;AC50;1100 1163 11BF;
+AC51;AC51;1100 1163 11C0;AC51;1100 1163 11C0;
+AC52;AC52;1100 1163 11C1;AC52;1100 1163 11C1;
+AC53;AC53;1100 1163 11C2;AC53;1100 1163 11C2;
+AC54;AC54;1100 1164;AC54;1100 1164;
+AC55;AC55;1100 1164 11A8;AC55;1100 1164 11A8;
+AC56;AC56;1100 1164 11A9;AC56;1100 1164 11A9;
+AC57;AC57;1100 1164 11AA;AC57;1100 1164 11AA;
+AC58;AC58;1100 1164 11AB;AC58;1100 1164 11AB;
+AC59;AC59;1100 1164 11AC;AC59;1100 1164 11AC;
+AC5A;AC5A;1100 1164 11AD;AC5A;1100 1164 11AD;
+AC5B;AC5B;1100 1164 11AE;AC5B;1100 1164 11AE;
+AC5C;AC5C;1100 1164 11AF;AC5C;1100 1164 11AF;
+AC5D;AC5D;1100 1164 11B0;AC5D;1100 1164 11B0;
+AC5E;AC5E;1100 1164 11B1;AC5E;1100 1164 11B1;
+AC5F;AC5F;1100 1164 11B2;AC5F;1100 1164 11B2;
+AC60;AC60;1100 1164 11B3;AC60;1100 1164 11B3;
+AC61;AC61;1100 1164 11B4;AC61;1100 1164 11B4;
+AC62;AC62;1100 1164 11B5;AC62;1100 1164 11B5;
+AC63;AC63;1100 1164 11B6;AC63;1100 1164 11B6;
+AC64;AC64;1100 1164 11B7;AC64;1100 1164 11B7;
+AC65;AC65;1100 1164 11B8;AC65;1100 1164 11B8;
+AC66;AC66;1100 1164 11B9;AC66;1100 1164 11B9;
+AC67;AC67;1100 1164 11BA;AC67;1100 1164 11BA;
+AC68;AC68;1100 1164 11BB;AC68;1100 1164 11BB;
+AC69;AC69;1100 1164 11BC;AC69;1100 1164 11BC;
+AC6A;AC6A;1100 1164 11BD;AC6A;1100 1164 11BD;
+AC6B;AC6B;1100 1164 11BE;AC6B;1100 1164 11BE;
+AC6C;AC6C;1100 1164 11BF;AC6C;1100 1164 11BF;
+AC6D;AC6D;1100 1164 11C0;AC6D;1100 1164 11C0;
+AC6E;AC6E;1100 1164 11C1;AC6E;1100 1164 11C1;
+AC6F;AC6F;1100 1164 11C2;AC6F;1100 1164 11C2;
+AC70;AC70;1100 1165;AC70;1100 1165;
+AC71;AC71;1100 1165 11A8;AC71;1100 1165 11A8;
+AC72;AC72;1100 1165 11A9;AC72;1100 1165 11A9;
+AC73;AC73;1100 1165 11AA;AC73;1100 1165 11AA;
+AC74;AC74;1100 1165 11AB;AC74;1100 1165 11AB;
+AC75;AC75;1100 1165 11AC;AC75;1100 1165 11AC;
+AC76;AC76;1100 1165 11AD;AC76;1100 1165 11AD;
+AC77;AC77;1100 1165 11AE;AC77;1100 1165 11AE;
+AC78;AC78;1100 1165 11AF;AC78;1100 1165 11AF;
+AC79;AC79;1100 1165 11B0;AC79;1100 1165 11B0;
+AC7A;AC7A;1100 1165 11B1;AC7A;1100 1165 11B1;
+AC7B;AC7B;1100 1165 11B2;AC7B;1100 1165 11B2;
+AC7C;AC7C;1100 1165 11B3;AC7C;1100 1165 11B3;
+AC7D;AC7D;1100 1165 11B4;AC7D;1100 1165 11B4;
+AC7E;AC7E;1100 1165 11B5;AC7E;1100 1165 11B5;
+AC7F;AC7F;1100 1165 11B6;AC7F;1100 1165 11B6;
+AC80;AC80;1100 1165 11B7;AC80;1100 1165 11B7;
+AC81;AC81;1100 1165 11B8;AC81;1100 1165 11B8;
+AC82;AC82;1100 1165 11B9;AC82;1100 1165 11B9;
+AC83;AC83;1100 1165 11BA;AC83;1100 1165 11BA;
+AC84;AC84;1100 1165 11BB;AC84;1100 1165 11BB;
+AC85;AC85;1100 1165 11BC;AC85;1100 1165 11BC;
+AC86;AC86;1100 1165 11BD;AC86;1100 1165 11BD;
+AC87;AC87;1100 1165 11BE;AC87;1100 1165 11BE;
+AC88;AC88;1100 1165 11BF;AC88;1100 1165 11BF;
+AC89;AC89;1100 1165 11C0;AC89;1100 1165 11C0;
+AC8A;AC8A;1100 1165 11C1;AC8A;1100 1165 11C1;
+AC8B;AC8B;1100 1165 11C2;AC8B;1100 1165 11C2;
+AC8C;AC8C;1100 1166;AC8C;1100 1166;
+AC8D;AC8D;1100 1166 11A8;AC8D;1100 1166 11A8;
+AC8E;AC8E;1100 1166 11A9;AC8E;1100 1166 11A9;
+AC8F;AC8F;1100 1166 11AA;AC8F;1100 1166 11AA;
+AC90;AC90;1100 1166 11AB;AC90;1100 1166 11AB;
+AC91;AC91;1100 1166 11AC;AC91;1100 1166 11AC;
+AC92;AC92;1100 1166 11AD;AC92;1100 1166 11AD;
+AC93;AC93;1100 1166 11AE;AC93;1100 1166 11AE;
+AC94;AC94;1100 1166 11AF;AC94;1100 1166 11AF;
+AC95;AC95;1100 1166 11B0;AC95;1100 1166 11B0;
+AC96;AC96;1100 1166 11B1;AC96;1100 1166 11B1;
+AC97;AC97;1100 1166 11B2;AC97;1100 1166 11B2;
+AC98;AC98;1100 1166 11B3;AC98;1100 1166 11B3;
+AC99;AC99;1100 1166 11B4;AC99;1100 1166 11B4;
+AC9A;AC9A;1100 1166 11B5;AC9A;1100 1166 11B5;
+AC9B;AC9B;1100 1166 11B6;AC9B;1100 1166 11B6;
+AC9C;AC9C;1100 1166 11B7;AC9C;1100 1166 11B7;
+AC9D;AC9D;1100 1166 11B8;AC9D;1100 1166 11B8;
+AC9E;AC9E;1100 1166 11B9;AC9E;1100 1166 11B9;
+AC9F;AC9F;1100 1166 11BA;AC9F;1100 1166 11BA;
+ACA0;ACA0;1100 1166 11BB;ACA0;1100 1166 11BB;
+ACA1;ACA1;1100 1166 11BC;ACA1;1100 1166 11BC;
+ACA2;ACA2;1100 1166 11BD;ACA2;1100 1166 11BD;
+ACA3;ACA3;1100 1166 11BE;ACA3;1100 1166 11BE;
+ACA4;ACA4;1100 1166 11BF;ACA4;1100 1166 11BF;
+ACA5;ACA5;1100 1166 11C0;ACA5;1100 1166 11C0;
+ACA6;ACA6;1100 1166 11C1;ACA6;1100 1166 11C1;
+ACA7;ACA7;1100 1166 11C2;ACA7;1100 1166 11C2;
+ACA8;ACA8;1100 1167;ACA8;1100 1167;
+ACA9;ACA9;1100 1167 11A8;ACA9;1100 1167 11A8;
+ACAA;ACAA;1100 1167 11A9;ACAA;1100 1167 11A9;
+ACAB;ACAB;1100 1167 11AA;ACAB;1100 1167 11AA;
+ACAC;ACAC;1100 1167 11AB;ACAC;1100 1167 11AB;
+ACAD;ACAD;1100 1167 11AC;ACAD;1100 1167 11AC;
+ACAE;ACAE;1100 1167 11AD;ACAE;1100 1167 11AD;
+ACAF;ACAF;1100 1167 11AE;ACAF;1100 1167 11AE;
+ACB0;ACB0;1100 1167 11AF;ACB0;1100 1167 11AF;
+ACB1;ACB1;1100 1167 11B0;ACB1;1100 1167 11B0;
+ACB2;ACB2;1100 1167 11B1;ACB2;1100 1167 11B1;
+ACB3;ACB3;1100 1167 11B2;ACB3;1100 1167 11B2;
+ACB4;ACB4;1100 1167 11B3;ACB4;1100 1167 11B3;
+ACB5;ACB5;1100 1167 11B4;ACB5;1100 1167 11B4;
+ACB6;ACB6;1100 1167 11B5;ACB6;1100 1167 11B5;
+ACB7;ACB7;1100 1167 11B6;ACB7;1100 1167 11B6;
+ACB8;ACB8;1100 1167 11B7;ACB8;1100 1167 11B7;
+ACB9;ACB9;1100 1167 11B8;ACB9;1100 1167 11B8;
+ACBA;ACBA;1100 1167 11B9;ACBA;1100 1167 11B9;
+ACBB;ACBB;1100 1167 11BA;ACBB;1100 1167 11BA;
+ACBC;ACBC;1100 1167 11BB;ACBC;1100 1167 11BB;
+ACBD;ACBD;1100 1167 11BC;ACBD;1100 1167 11BC;
+ACBE;ACBE;1100 1167 11BD;ACBE;1100 1167 11BD;
+ACBF;ACBF;1100 1167 11BE;ACBF;1100 1167 11BE;
+ACC0;ACC0;1100 1167 11BF;ACC0;1100 1167 11BF;
+ACC1;ACC1;1100 1167 11C0;ACC1;1100 1167 11C0;
+ACC2;ACC2;1100 1167 11C1;ACC2;1100 1167 11C1;
+ACC3;ACC3;1100 1167 11C2;ACC3;1100 1167 11C2;
+ACC4;ACC4;1100 1168;ACC4;1100 1168;
+ACC5;ACC5;1100 1168 11A8;ACC5;1100 1168 11A8;
+ACC6;ACC6;1100 1168 11A9;ACC6;1100 1168 11A9;
+ACC7;ACC7;1100 1168 11AA;ACC7;1100 1168 11AA;
+ACC8;ACC8;1100 1168 11AB;ACC8;1100 1168 11AB;
+ACC9;ACC9;1100 1168 11AC;ACC9;1100 1168 11AC;
+ACCA;ACCA;1100 1168 11AD;ACCA;1100 1168 11AD;
+ACCB;ACCB;1100 1168 11AE;ACCB;1100 1168 11AE;
+ACCC;ACCC;1100 1168 11AF;ACCC;1100 1168 11AF;
+ACCD;ACCD;1100 1168 11B0;ACCD;1100 1168 11B0;
+ACCE;ACCE;1100 1168 11B1;ACCE;1100 1168 11B1;
+ACCF;ACCF;1100 1168 11B2;ACCF;1100 1168 11B2;
+ACD0;ACD0;1100 1168 11B3;ACD0;1100 1168 11B3;
+ACD1;ACD1;1100 1168 11B4;ACD1;1100 1168 11B4;
+ACD2;ACD2;1100 1168 11B5;ACD2;1100 1168 11B5;
+ACD3;ACD3;1100 1168 11B6;ACD3;1100 1168 11B6;
+ACD4;ACD4;1100 1168 11B7;ACD4;1100 1168 11B7;
+ACD5;ACD5;1100 1168 11B8;ACD5;1100 1168 11B8;
+ACD6;ACD6;1100 1168 11B9;ACD6;1100 1168 11B9;
+ACD7;ACD7;1100 1168 11BA;ACD7;1100 1168 11BA;
+ACD8;ACD8;1100 1168 11BB;ACD8;1100 1168 11BB;
+ACD9;ACD9;1100 1168 11BC;ACD9;1100 1168 11BC;
+ACDA;ACDA;1100 1168 11BD;ACDA;1100 1168 11BD;
+ACDB;ACDB;1100 1168 11BE;ACDB;1100 1168 11BE;
+ACDC;ACDC;1100 1168 11BF;ACDC;1100 1168 11BF;
+ACDD;ACDD;1100 1168 11C0;ACDD;1100 1168 11C0;
+ACDE;ACDE;1100 1168 11C1;ACDE;1100 1168 11C1;
+ACDF;ACDF;1100 1168 11C2;ACDF;1100 1168 11C2;
+ACE0;ACE0;1100 1169;ACE0;1100 1169;
+ACE1;ACE1;1100 1169 11A8;ACE1;1100 1169 11A8;
+ACE2;ACE2;1100 1169 11A9;ACE2;1100 1169 11A9;
+ACE3;ACE3;1100 1169 11AA;ACE3;1100 1169 11AA;
+ACE4;ACE4;1100 1169 11AB;ACE4;1100 1169 11AB;
+ACE5;ACE5;1100 1169 11AC;ACE5;1100 1169 11AC;
+ACE6;ACE6;1100 1169 11AD;ACE6;1100 1169 11AD;
+ACE7;ACE7;1100 1169 11AE;ACE7;1100 1169 11AE;
+ACE8;ACE8;1100 1169 11AF;ACE8;1100 1169 11AF;
+ACE9;ACE9;1100 1169 11B0;ACE9;1100 1169 11B0;
+ACEA;ACEA;1100 1169 11B1;ACEA;1100 1169 11B1;
+ACEB;ACEB;1100 1169 11B2;ACEB;1100 1169 11B2;
+ACEC;ACEC;1100 1169 11B3;ACEC;1100 1169 11B3;
+ACED;ACED;1100 1169 11B4;ACED;1100 1169 11B4;
+ACEE;ACEE;1100 1169 11B5;ACEE;1100 1169 11B5;
+ACEF;ACEF;1100 1169 11B6;ACEF;1100 1169 11B6;
+ACF0;ACF0;1100 1169 11B7;ACF0;1100 1169 11B7;
+ACF1;ACF1;1100 1169 11B8;ACF1;1100 1169 11B8;
+ACF2;ACF2;1100 1169 11B9;ACF2;1100 1169 11B9;
+ACF3;ACF3;1100 1169 11BA;ACF3;1100 1169 11BA;
+ACF4;ACF4;1100 1169 11BB;ACF4;1100 1169 11BB;
+ACF5;ACF5;1100 1169 11BC;ACF5;1100 1169 11BC;
+ACF6;ACF6;1100 1169 11BD;ACF6;1100 1169 11BD;
+ACF7;ACF7;1100 1169 11BE;ACF7;1100 1169 11BE;
+ACF8;ACF8;1100 1169 11BF;ACF8;1100 1169 11BF;
+ACF9;ACF9;1100 1169 11C0;ACF9;1100 1169 11C0;
+ACFA;ACFA;1100 1169 11C1;ACFA;1100 1169 11C1;
+ACFB;ACFB;1100 1169 11C2;ACFB;1100 1169 11C2;
+ACFC;ACFC;1100 116A;ACFC;1100 116A;
+ACFD;ACFD;1100 116A 11A8;ACFD;1100 116A 11A8;
+ACFE;ACFE;1100 116A 11A9;ACFE;1100 116A 11A9;
+ACFF;ACFF;1100 116A 11AA;ACFF;1100 116A 11AA;
+AD00;AD00;1100 116A 11AB;AD00;1100 116A 11AB;
+AD01;AD01;1100 116A 11AC;AD01;1100 116A 11AC;
+AD02;AD02;1100 116A 11AD;AD02;1100 116A 11AD;
+AD03;AD03;1100 116A 11AE;AD03;1100 116A 11AE;
+AD04;AD04;1100 116A 11AF;AD04;1100 116A 11AF;
+AD05;AD05;1100 116A 11B0;AD05;1100 116A 11B0;
+AD06;AD06;1100 116A 11B1;AD06;1100 116A 11B1;
+AD07;AD07;1100 116A 11B2;AD07;1100 116A 11B2;
+AD08;AD08;1100 116A 11B3;AD08;1100 116A 11B3;
+AD09;AD09;1100 116A 11B4;AD09;1100 116A 11B4;
+AD0A;AD0A;1100 116A 11B5;AD0A;1100 116A 11B5;
+AD0B;AD0B;1100 116A 11B6;AD0B;1100 116A 11B6;
+AD0C;AD0C;1100 116A 11B7;AD0C;1100 116A 11B7;
+AD0D;AD0D;1100 116A 11B8;AD0D;1100 116A 11B8;
+AD0E;AD0E;1100 116A 11B9;AD0E;1100 116A 11B9;
+AD0F;AD0F;1100 116A 11BA;AD0F;1100 116A 11BA;
+AD10;AD10;1100 116A 11BB;AD10;1100 116A 11BB;
+AD11;AD11;1100 116A 11BC;AD11;1100 116A 11BC;
+AD12;AD12;1100 116A 11BD;AD12;1100 116A 11BD;
+AD13;AD13;1100 116A 11BE;AD13;1100 116A 11BE;
+AD14;AD14;1100 116A 11BF;AD14;1100 116A 11BF;
+AD15;AD15;1100 116A 11C0;AD15;1100 116A 11C0;
+AD16;AD16;1100 116A 11C1;AD16;1100 116A 11C1;
+AD17;AD17;1100 116A 11C2;AD17;1100 116A 11C2;
+AD18;AD18;1100 116B;AD18;1100 116B;
+AD19;AD19;1100 116B 11A8;AD19;1100 116B 11A8;
+AD1A;AD1A;1100 116B 11A9;AD1A;1100 116B 11A9;
+AD1B;AD1B;1100 116B 11AA;AD1B;1100 116B 11AA;
+AD1C;AD1C;1100 116B 11AB;AD1C;1100 116B 11AB;
+AD1D;AD1D;1100 116B 11AC;AD1D;1100 116B 11AC;
+AD1E;AD1E;1100 116B 11AD;AD1E;1100 116B 11AD;
+AD1F;AD1F;1100 116B 11AE;AD1F;1100 116B 11AE;
+AD20;AD20;1100 116B 11AF;AD20;1100 116B 11AF;
+AD21;AD21;1100 116B 11B0;AD21;1100 116B 11B0;
+AD22;AD22;1100 116B 11B1;AD22;1100 116B 11B1;
+AD23;AD23;1100 116B 11B2;AD23;1100 116B 11B2;
+AD24;AD24;1100 116B 11B3;AD24;1100 116B 11B3;
+AD25;AD25;1100 116B 11B4;AD25;1100 116B 11B4;
+AD26;AD26;1100 116B 11B5;AD26;1100 116B 11B5;
+AD27;AD27;1100 116B 11B6;AD27;1100 116B 11B6;
+AD28;AD28;1100 116B 11B7;AD28;1100 116B 11B7;
+AD29;AD29;1100 116B 11B8;AD29;1100 116B 11B8;
+AD2A;AD2A;1100 116B 11B9;AD2A;1100 116B 11B9;
+AD2B;AD2B;1100 116B 11BA;AD2B;1100 116B 11BA;
+AD2C;AD2C;1100 116B 11BB;AD2C;1100 116B 11BB;
+AD2D;AD2D;1100 116B 11BC;AD2D;1100 116B 11BC;
+AD2E;AD2E;1100 116B 11BD;AD2E;1100 116B 11BD;
+AD2F;AD2F;1100 116B 11BE;AD2F;1100 116B 11BE;
+AD30;AD30;1100 116B 11BF;AD30;1100 116B 11BF;
+AD31;AD31;1100 116B 11C0;AD31;1100 116B 11C0;
+AD32;AD32;1100 116B 11C1;AD32;1100 116B 11C1;
+AD33;AD33;1100 116B 11C2;AD33;1100 116B 11C2;
+AD34;AD34;1100 116C;AD34;1100 116C;
+AD35;AD35;1100 116C 11A8;AD35;1100 116C 11A8;
+AD36;AD36;1100 116C 11A9;AD36;1100 116C 11A9;
+AD37;AD37;1100 116C 11AA;AD37;1100 116C 11AA;
+AD38;AD38;1100 116C 11AB;AD38;1100 116C 11AB;
+AD39;AD39;1100 116C 11AC;AD39;1100 116C 11AC;
+AD3A;AD3A;1100 116C 11AD;AD3A;1100 116C 11AD;
+AD3B;AD3B;1100 116C 11AE;AD3B;1100 116C 11AE;
+AD3C;AD3C;1100 116C 11AF;AD3C;1100 116C 11AF;
+AD3D;AD3D;1100 116C 11B0;AD3D;1100 116C 11B0;
+AD3E;AD3E;1100 116C 11B1;AD3E;1100 116C 11B1;
+AD3F;AD3F;1100 116C 11B2;AD3F;1100 116C 11B2;
+AD40;AD40;1100 116C 11B3;AD40;1100 116C 11B3;
+AD41;AD41;1100 116C 11B4;AD41;1100 116C 11B4;
+AD42;AD42;1100 116C 11B5;AD42;1100 116C 11B5;
+AD43;AD43;1100 116C 11B6;AD43;1100 116C 11B6;
+AD44;AD44;1100 116C 11B7;AD44;1100 116C 11B7;
+AD45;AD45;1100 116C 11B8;AD45;1100 116C 11B8;
+AD46;AD46;1100 116C 11B9;AD46;1100 116C 11B9;
+AD47;AD47;1100 116C 11BA;AD47;1100 116C 11BA;
+AD48;AD48;1100 116C 11BB;AD48;1100 116C 11BB;
+AD49;AD49;1100 116C 11BC;AD49;1100 116C 11BC;
+AD4A;AD4A;1100 116C 11BD;AD4A;1100 116C 11BD;
+AD4B;AD4B;1100 116C 11BE;AD4B;1100 116C 11BE;
+AD4C;AD4C;1100 116C 11BF;AD4C;1100 116C 11BF;
+AD4D;AD4D;1100 116C 11C0;AD4D;1100 116C 11C0;
+AD4E;AD4E;1100 116C 11C1;AD4E;1100 116C 11C1;
+AD4F;AD4F;1100 116C 11C2;AD4F;1100 116C 11C2;
+AD50;AD50;1100 116D;AD50;1100 116D;
+AD51;AD51;1100 116D 11A8;AD51;1100 116D 11A8;
+AD52;AD52;1100 116D 11A9;AD52;1100 116D 11A9;
+AD53;AD53;1100 116D 11AA;AD53;1100 116D 11AA;
+AD54;AD54;1100 116D 11AB;AD54;1100 116D 11AB;
+AD55;AD55;1100 116D 11AC;AD55;1100 116D 11AC;
+AD56;AD56;1100 116D 11AD;AD56;1100 116D 11AD;
+AD57;AD57;1100 116D 11AE;AD57;1100 116D 11AE;
+AD58;AD58;1100 116D 11AF;AD58;1100 116D 11AF;
+AD59;AD59;1100 116D 11B0;AD59;1100 116D 11B0;
+AD5A;AD5A;1100 116D 11B1;AD5A;1100 116D 11B1;
+AD5B;AD5B;1100 116D 11B2;AD5B;1100 116D 11B2;
+AD5C;AD5C;1100 116D 11B3;AD5C;1100 116D 11B3;
+AD5D;AD5D;1100 116D 11B4;AD5D;1100 116D 11B4;
+AD5E;AD5E;1100 116D 11B5;AD5E;1100 116D 11B5;
+AD5F;AD5F;1100 116D 11B6;AD5F;1100 116D 11B6;
+AD60;AD60;1100 116D 11B7;AD60;1100 116D 11B7;
+AD61;AD61;1100 116D 11B8;AD61;1100 116D 11B8;
+AD62;AD62;1100 116D 11B9;AD62;1100 116D 11B9;
+AD63;AD63;1100 116D 11BA;AD63;1100 116D 11BA;
+AD64;AD64;1100 116D 11BB;AD64;1100 116D 11BB;
+AD65;AD65;1100 116D 11BC;AD65;1100 116D 11BC;
+AD66;AD66;1100 116D 11BD;AD66;1100 116D 11BD;
+AD67;AD67;1100 116D 11BE;AD67;1100 116D 11BE;
+AD68;AD68;1100 116D 11BF;AD68;1100 116D 11BF;
+AD69;AD69;1100 116D 11C0;AD69;1100 116D 11C0;
+AD6A;AD6A;1100 116D 11C1;AD6A;1100 116D 11C1;
+AD6B;AD6B;1100 116D 11C2;AD6B;1100 116D 11C2;
+AD6C;AD6C;1100 116E;AD6C;1100 116E;
+AD6D;AD6D;1100 116E 11A8;AD6D;1100 116E 11A8;
+AD6E;AD6E;1100 116E 11A9;AD6E;1100 116E 11A9;
+AD6F;AD6F;1100 116E 11AA;AD6F;1100 116E 11AA;
+AD70;AD70;1100 116E 11AB;AD70;1100 116E 11AB;
+AD71;AD71;1100 116E 11AC;AD71;1100 116E 11AC;
+AD72;AD72;1100 116E 11AD;AD72;1100 116E 11AD;
+AD73;AD73;1100 116E 11AE;AD73;1100 116E 11AE;
+AD74;AD74;1100 116E 11AF;AD74;1100 116E 11AF;
+AD75;AD75;1100 116E 11B0;AD75;1100 116E 11B0;
+AD76;AD76;1100 116E 11B1;AD76;1100 116E 11B1;
+AD77;AD77;1100 116E 11B2;AD77;1100 116E 11B2;
+AD78;AD78;1100 116E 11B3;AD78;1100 116E 11B3;
+AD79;AD79;1100 116E 11B4;AD79;1100 116E 11B4;
+AD7A;AD7A;1100 116E 11B5;AD7A;1100 116E 11B5;
+AD7B;AD7B;1100 116E 11B6;AD7B;1100 116E 11B6;
+AD7C;AD7C;1100 116E 11B7;AD7C;1100 116E 11B7;
+AD7D;AD7D;1100 116E 11B8;AD7D;1100 116E 11B8;
+AD7E;AD7E;1100 116E 11B9;AD7E;1100 116E 11B9;
+AD7F;AD7F;1100 116E 11BA;AD7F;1100 116E 11BA;
+AD80;AD80;1100 116E 11BB;AD80;1100 116E 11BB;
+AD81;AD81;1100 116E 11BC;AD81;1100 116E 11BC;
+AD82;AD82;1100 116E 11BD;AD82;1100 116E 11BD;
+AD83;AD83;1100 116E 11BE;AD83;1100 116E 11BE;
+AD84;AD84;1100 116E 11BF;AD84;1100 116E 11BF;
+AD85;AD85;1100 116E 11C0;AD85;1100 116E 11C0;
+AD86;AD86;1100 116E 11C1;AD86;1100 116E 11C1;
+AD87;AD87;1100 116E 11C2;AD87;1100 116E 11C2;
+AD88;AD88;1100 116F;AD88;1100 116F;
+AD89;AD89;1100 116F 11A8;AD89;1100 116F 11A8;
+AD8A;AD8A;1100 116F 11A9;AD8A;1100 116F 11A9;
+AD8B;AD8B;1100 116F 11AA;AD8B;1100 116F 11AA;
+AD8C;AD8C;1100 116F 11AB;AD8C;1100 116F 11AB;
+AD8D;AD8D;1100 116F 11AC;AD8D;1100 116F 11AC;
+AD8E;AD8E;1100 116F 11AD;AD8E;1100 116F 11AD;
+AD8F;AD8F;1100 116F 11AE;AD8F;1100 116F 11AE;
+AD90;AD90;1100 116F 11AF;AD90;1100 116F 11AF;
+AD91;AD91;1100 116F 11B0;AD91;1100 116F 11B0;
+AD92;AD92;1100 116F 11B1;AD92;1100 116F 11B1;
+AD93;AD93;1100 116F 11B2;AD93;1100 116F 11B2;
+AD94;AD94;1100 116F 11B3;AD94;1100 116F 11B3;
+AD95;AD95;1100 116F 11B4;AD95;1100 116F 11B4;
+AD96;AD96;1100 116F 11B5;AD96;1100 116F 11B5;
+AD97;AD97;1100 116F 11B6;AD97;1100 116F 11B6;
+AD98;AD98;1100 116F 11B7;AD98;1100 116F 11B7;
+AD99;AD99;1100 116F 11B8;AD99;1100 116F 11B8;
+AD9A;AD9A;1100 116F 11B9;AD9A;1100 116F 11B9;
+AD9B;AD9B;1100 116F 11BA;AD9B;1100 116F 11BA;
+AD9C;AD9C;1100 116F 11BB;AD9C;1100 116F 11BB;
+AD9D;AD9D;1100 116F 11BC;AD9D;1100 116F 11BC;
+AD9E;AD9E;1100 116F 11BD;AD9E;1100 116F 11BD;
+AD9F;AD9F;1100 116F 11BE;AD9F;1100 116F 11BE;
+ADA0;ADA0;1100 116F 11BF;ADA0;1100 116F 11BF;
+ADA1;ADA1;1100 116F 11C0;ADA1;1100 116F 11C0;
+ADA2;ADA2;1100 116F 11C1;ADA2;1100 116F 11C1;
+ADA3;ADA3;1100 116F 11C2;ADA3;1100 116F 11C2;
+ADA4;ADA4;1100 1170;ADA4;1100 1170;
+ADA5;ADA5;1100 1170 11A8;ADA5;1100 1170 11A8;
+ADA6;ADA6;1100 1170 11A9;ADA6;1100 1170 11A9;
+ADA7;ADA7;1100 1170 11AA;ADA7;1100 1170 11AA;
+ADA8;ADA8;1100 1170 11AB;ADA8;1100 1170 11AB;
+ADA9;ADA9;1100 1170 11AC;ADA9;1100 1170 11AC;
+ADAA;ADAA;1100 1170 11AD;ADAA;1100 1170 11AD;
+ADAB;ADAB;1100 1170 11AE;ADAB;1100 1170 11AE;
+ADAC;ADAC;1100 1170 11AF;ADAC;1100 1170 11AF;
+ADAD;ADAD;1100 1170 11B0;ADAD;1100 1170 11B0;
+ADAE;ADAE;1100 1170 11B1;ADAE;1100 1170 11B1;
+ADAF;ADAF;1100 1170 11B2;ADAF;1100 1170 11B2;
+ADB0;ADB0;1100 1170 11B3;ADB0;1100 1170 11B3;
+ADB1;ADB1;1100 1170 11B4;ADB1;1100 1170 11B4;
+ADB2;ADB2;1100 1170 11B5;ADB2;1100 1170 11B5;
+ADB3;ADB3;1100 1170 11B6;ADB3;1100 1170 11B6;
+ADB4;ADB4;1100 1170 11B7;ADB4;1100 1170 11B7;
+ADB5;ADB5;1100 1170 11B8;ADB5;1100 1170 11B8;
+ADB6;ADB6;1100 1170 11B9;ADB6;1100 1170 11B9;
+ADB7;ADB7;1100 1170 11BA;ADB7;1100 1170 11BA;
+ADB8;ADB8;1100 1170 11BB;ADB8;1100 1170 11BB;
+ADB9;ADB9;1100 1170 11BC;ADB9;1100 1170 11BC;
+ADBA;ADBA;1100 1170 11BD;ADBA;1100 1170 11BD;
+ADBB;ADBB;1100 1170 11BE;ADBB;1100 1170 11BE;
+ADBC;ADBC;1100 1170 11BF;ADBC;1100 1170 11BF;
+ADBD;ADBD;1100 1170 11C0;ADBD;1100 1170 11C0;
+ADBE;ADBE;1100 1170 11C1;ADBE;1100 1170 11C1;
+ADBF;ADBF;1100 1170 11C2;ADBF;1100 1170 11C2;
+ADC0;ADC0;1100 1171;ADC0;1100 1171;
+ADC1;ADC1;1100 1171 11A8;ADC1;1100 1171 11A8;
+ADC2;ADC2;1100 1171 11A9;ADC2;1100 1171 11A9;
+ADC3;ADC3;1100 1171 11AA;ADC3;1100 1171 11AA;
+ADC4;ADC4;1100 1171 11AB;ADC4;1100 1171 11AB;
+ADC5;ADC5;1100 1171 11AC;ADC5;1100 1171 11AC;
+ADC6;ADC6;1100 1171 11AD;ADC6;1100 1171 11AD;
+ADC7;ADC7;1100 1171 11AE;ADC7;1100 1171 11AE;
+ADC8;ADC8;1100 1171 11AF;ADC8;1100 1171 11AF;
+ADC9;ADC9;1100 1171 11B0;ADC9;1100 1171 11B0;
+ADCA;ADCA;1100 1171 11B1;ADCA;1100 1171 11B1;
+ADCB;ADCB;1100 1171 11B2;ADCB;1100 1171 11B2;
+ADCC;ADCC;1100 1171 11B3;ADCC;1100 1171 11B3;
+ADCD;ADCD;1100 1171 11B4;ADCD;1100 1171 11B4;
+ADCE;ADCE;1100 1171 11B5;ADCE;1100 1171 11B5;
+ADCF;ADCF;1100 1171 11B6;ADCF;1100 1171 11B6;
+ADD0;ADD0;1100 1171 11B7;ADD0;1100 1171 11B7;
+ADD1;ADD1;1100 1171 11B8;ADD1;1100 1171 11B8;
+ADD2;ADD2;1100 1171 11B9;ADD2;1100 1171 11B9;
+ADD3;ADD3;1100 1171 11BA;ADD3;1100 1171 11BA;
+ADD4;ADD4;1100 1171 11BB;ADD4;1100 1171 11BB;
+ADD5;ADD5;1100 1171 11BC;ADD5;1100 1171 11BC;
+ADD6;ADD6;1100 1171 11BD;ADD6;1100 1171 11BD;
+ADD7;ADD7;1100 1171 11BE;ADD7;1100 1171 11BE;
+ADD8;ADD8;1100 1171 11BF;ADD8;1100 1171 11BF;
+ADD9;ADD9;1100 1171 11C0;ADD9;1100 1171 11C0;
+ADDA;ADDA;1100 1171 11C1;ADDA;1100 1171 11C1;
+ADDB;ADDB;1100 1171 11C2;ADDB;1100 1171 11C2;
+ADDC;ADDC;1100 1172;ADDC;1100 1172;
+ADDD;ADDD;1100 1172 11A8;ADDD;1100 1172 11A8;
+ADDE;ADDE;1100 1172 11A9;ADDE;1100 1172 11A9;
+ADDF;ADDF;1100 1172 11AA;ADDF;1100 1172 11AA;
+ADE0;ADE0;1100 1172 11AB;ADE0;1100 1172 11AB;
+ADE1;ADE1;1100 1172 11AC;ADE1;1100 1172 11AC;
+ADE2;ADE2;1100 1172 11AD;ADE2;1100 1172 11AD;
+ADE3;ADE3;1100 1172 11AE;ADE3;1100 1172 11AE;
+ADE4;ADE4;1100 1172 11AF;ADE4;1100 1172 11AF;
+ADE5;ADE5;1100 1172 11B0;ADE5;1100 1172 11B0;
+ADE6;ADE6;1100 1172 11B1;ADE6;1100 1172 11B1;
+ADE7;ADE7;1100 1172 11B2;ADE7;1100 1172 11B2;
+ADE8;ADE8;1100 1172 11B3;ADE8;1100 1172 11B3;
+ADE9;ADE9;1100 1172 11B4;ADE9;1100 1172 11B4;
+ADEA;ADEA;1100 1172 11B5;ADEA;1100 1172 11B5;
+ADEB;ADEB;1100 1172 11B6;ADEB;1100 1172 11B6;
+ADEC;ADEC;1100 1172 11B7;ADEC;1100 1172 11B7;
+ADED;ADED;1100 1172 11B8;ADED;1100 1172 11B8;
+ADEE;ADEE;1100 1172 11B9;ADEE;1100 1172 11B9;
+ADEF;ADEF;1100 1172 11BA;ADEF;1100 1172 11BA;
+ADF0;ADF0;1100 1172 11BB;ADF0;1100 1172 11BB;
+ADF1;ADF1;1100 1172 11BC;ADF1;1100 1172 11BC;
+ADF2;ADF2;1100 1172 11BD;ADF2;1100 1172 11BD;
+ADF3;ADF3;1100 1172 11BE;ADF3;1100 1172 11BE;
+ADF4;ADF4;1100 1172 11BF;ADF4;1100 1172 11BF;
+ADF5;ADF5;1100 1172 11C0;ADF5;1100 1172 11C0;
+ADF6;ADF6;1100 1172 11C1;ADF6;1100 1172 11C1;
+ADF7;ADF7;1100 1172 11C2;ADF7;1100 1172 11C2;
+ADF8;ADF8;1100 1173;ADF8;1100 1173;
+ADF9;ADF9;1100 1173 11A8;ADF9;1100 1173 11A8;
+ADFA;ADFA;1100 1173 11A9;ADFA;1100 1173 11A9;
+ADFB;ADFB;1100 1173 11AA;ADFB;1100 1173 11AA;
+ADFC;ADFC;1100 1173 11AB;ADFC;1100 1173 11AB;
+ADFD;ADFD;1100 1173 11AC;ADFD;1100 1173 11AC;
+ADFE;ADFE;1100 1173 11AD;ADFE;1100 1173 11AD;
+ADFF;ADFF;1100 1173 11AE;ADFF;1100 1173 11AE;
+AE00;AE00;1100 1173 11AF;AE00;1100 1173 11AF;
+AE01;AE01;1100 1173 11B0;AE01;1100 1173 11B0;
+AE02;AE02;1100 1173 11B1;AE02;1100 1173 11B1;
+AE03;AE03;1100 1173 11B2;AE03;1100 1173 11B2;
+AE04;AE04;1100 1173 11B3;AE04;1100 1173 11B3;
+AE05;AE05;1100 1173 11B4;AE05;1100 1173 11B4;
+AE06;AE06;1100 1173 11B5;AE06;1100 1173 11B5;
+AE07;AE07;1100 1173 11B6;AE07;1100 1173 11B6;
+AE08;AE08;1100 1173 11B7;AE08;1100 1173 11B7;
+AE09;AE09;1100 1173 11B8;AE09;1100 1173 11B8;
+AE0A;AE0A;1100 1173 11B9;AE0A;1100 1173 11B9;
+AE0B;AE0B;1100 1173 11BA;AE0B;1100 1173 11BA;
+AE0C;AE0C;1100 1173 11BB;AE0C;1100 1173 11BB;
+AE0D;AE0D;1100 1173 11BC;AE0D;1100 1173 11BC;
+AE0E;AE0E;1100 1173 11BD;AE0E;1100 1173 11BD;
+AE0F;AE0F;1100 1173 11BE;AE0F;1100 1173 11BE;
+AE10;AE10;1100 1173 11BF;AE10;1100 1173 11BF;
+AE11;AE11;1100 1173 11C0;AE11;1100 1173 11C0;
+AE12;AE12;1100 1173 11C1;AE12;1100 1173 11C1;
+AE13;AE13;1100 1173 11C2;AE13;1100 1173 11C2;
+AE14;AE14;1100 1174;AE14;1100 1174;
+AE15;AE15;1100 1174 11A8;AE15;1100 1174 11A8;
+AE16;AE16;1100 1174 11A9;AE16;1100 1174 11A9;
+AE17;AE17;1100 1174 11AA;AE17;1100 1174 11AA;
+AE18;AE18;1100 1174 11AB;AE18;1100 1174 11AB;
+AE19;AE19;1100 1174 11AC;AE19;1100 1174 11AC;
+AE1A;AE1A;1100 1174 11AD;AE1A;1100 1174 11AD;
+AE1B;AE1B;1100 1174 11AE;AE1B;1100 1174 11AE;
+AE1C;AE1C;1100 1174 11AF;AE1C;1100 1174 11AF;
+AE1D;AE1D;1100 1174 11B0;AE1D;1100 1174 11B0;
+AE1E;AE1E;1100 1174 11B1;AE1E;1100 1174 11B1;
+AE1F;AE1F;1100 1174 11B2;AE1F;1100 1174 11B2;
+AE20;AE20;1100 1174 11B3;AE20;1100 1174 11B3;
+AE21;AE21;1100 1174 11B4;AE21;1100 1174 11B4;
+AE22;AE22;1100 1174 11B5;AE22;1100 1174 11B5;
+AE23;AE23;1100 1174 11B6;AE23;1100 1174 11B6;
+AE24;AE24;1100 1174 11B7;AE24;1100 1174 11B7;
+AE25;AE25;1100 1174 11B8;AE25;1100 1174 11B8;
+AE26;AE26;1100 1174 11B9;AE26;1100 1174 11B9;
+AE27;AE27;1100 1174 11BA;AE27;1100 1174 11BA;
+AE28;AE28;1100 1174 11BB;AE28;1100 1174 11BB;
+AE29;AE29;1100 1174 11BC;AE29;1100 1174 11BC;
+AE2A;AE2A;1100 1174 11BD;AE2A;1100 1174 11BD;
+AE2B;AE2B;1100 1174 11BE;AE2B;1100 1174 11BE;
+AE2C;AE2C;1100 1174 11BF;AE2C;1100 1174 11BF;
+AE2D;AE2D;1100 1174 11C0;AE2D;1100 1174 11C0;
+AE2E;AE2E;1100 1174 11C1;AE2E;1100 1174 11C1;
+AE2F;AE2F;1100 1174 11C2;AE2F;1100 1174 11C2;
+AE30;AE30;1100 1175;AE30;1100 1175;
+AE31;AE31;1100 1175 11A8;AE31;1100 1175 11A8;
+AE32;AE32;1100 1175 11A9;AE32;1100 1175 11A9;
+AE33;AE33;1100 1175 11AA;AE33;1100 1175 11AA;
+AE34;AE34;1100 1175 11AB;AE34;1100 1175 11AB;
+AE35;AE35;1100 1175 11AC;AE35;1100 1175 11AC;
+AE36;AE36;1100 1175 11AD;AE36;1100 1175 11AD;
+AE37;AE37;1100 1175 11AE;AE37;1100 1175 11AE;
+AE38;AE38;1100 1175 11AF;AE38;1100 1175 11AF;
+AE39;AE39;1100 1175 11B0;AE39;1100 1175 11B0;
+AE3A;AE3A;1100 1175 11B1;AE3A;1100 1175 11B1;
+AE3B;AE3B;1100 1175 11B2;AE3B;1100 1175 11B2;
+AE3C;AE3C;1100 1175 11B3;AE3C;1100 1175 11B3;
+AE3D;AE3D;1100 1175 11B4;AE3D;1100 1175 11B4;
+AE3E;AE3E;1100 1175 11B5;AE3E;1100 1175 11B5;
+AE3F;AE3F;1100 1175 11B6;AE3F;1100 1175 11B6;
+AE40;AE40;1100 1175 11B7;AE40;1100 1175 11B7;
+AE41;AE41;1100 1175 11B8;AE41;1100 1175 11B8;
+AE42;AE42;1100 1175 11B9;AE42;1100 1175 11B9;
+AE43;AE43;1100 1175 11BA;AE43;1100 1175 11BA;
+AE44;AE44;1100 1175 11BB;AE44;1100 1175 11BB;
+AE45;AE45;1100 1175 11BC;AE45;1100 1175 11BC;
+AE46;AE46;1100 1175 11BD;AE46;1100 1175 11BD;
+AE47;AE47;1100 1175 11BE;AE47;1100 1175 11BE;
+AE48;AE48;1100 1175 11BF;AE48;1100 1175 11BF;
+AE49;AE49;1100 1175 11C0;AE49;1100 1175 11C0;
+AE4A;AE4A;1100 1175 11C1;AE4A;1100 1175 11C1;
+AE4B;AE4B;1100 1175 11C2;AE4B;1100 1175 11C2;
+AE4C;AE4C;1101 1161;AE4C;1101 1161;
+AE4D;AE4D;1101 1161 11A8;AE4D;1101 1161 11A8;
+AE4E;AE4E;1101 1161 11A9;AE4E;1101 1161 11A9;
+AE4F;AE4F;1101 1161 11AA;AE4F;1101 1161 11AA;
+AE50;AE50;1101 1161 11AB;AE50;1101 1161 11AB;
+AE51;AE51;1101 1161 11AC;AE51;1101 1161 11AC;
+AE52;AE52;1101 1161 11AD;AE52;1101 1161 11AD;
+AE53;AE53;1101 1161 11AE;AE53;1101 1161 11AE;
+AE54;AE54;1101 1161 11AF;AE54;1101 1161 11AF;
+AE55;AE55;1101 1161 11B0;AE55;1101 1161 11B0;
+AE56;AE56;1101 1161 11B1;AE56;1101 1161 11B1;
+AE57;AE57;1101 1161 11B2;AE57;1101 1161 11B2;
+AE58;AE58;1101 1161 11B3;AE58;1101 1161 11B3;
+AE59;AE59;1101 1161 11B4;AE59;1101 1161 11B4;
+AE5A;AE5A;1101 1161 11B5;AE5A;1101 1161 11B5;
+AE5B;AE5B;1101 1161 11B6;AE5B;1101 1161 11B6;
+AE5C;AE5C;1101 1161 11B7;AE5C;1101 1161 11B7;
+AE5D;AE5D;1101 1161 11B8;AE5D;1101 1161 11B8;
+AE5E;AE5E;1101 1161 11B9;AE5E;1101 1161 11B9;
+AE5F;AE5F;1101 1161 11BA;AE5F;1101 1161 11BA;
+AE60;AE60;1101 1161 11BB;AE60;1101 1161 11BB;
+AE61;AE61;1101 1161 11BC;AE61;1101 1161 11BC;
+AE62;AE62;1101 1161 11BD;AE62;1101 1161 11BD;
+AE63;AE63;1101 1161 11BE;AE63;1101 1161 11BE;
+AE64;AE64;1101 1161 11BF;AE64;1101 1161 11BF;
+AE65;AE65;1101 1161 11C0;AE65;1101 1161 11C0;
+AE66;AE66;1101 1161 11C1;AE66;1101 1161 11C1;
+AE67;AE67;1101 1161 11C2;AE67;1101 1161 11C2;
+AE68;AE68;1101 1162;AE68;1101 1162;
+AE69;AE69;1101 1162 11A8;AE69;1101 1162 11A8;
+AE6A;AE6A;1101 1162 11A9;AE6A;1101 1162 11A9;
+AE6B;AE6B;1101 1162 11AA;AE6B;1101 1162 11AA;
+AE6C;AE6C;1101 1162 11AB;AE6C;1101 1162 11AB;
+AE6D;AE6D;1101 1162 11AC;AE6D;1101 1162 11AC;
+AE6E;AE6E;1101 1162 11AD;AE6E;1101 1162 11AD;
+AE6F;AE6F;1101 1162 11AE;AE6F;1101 1162 11AE;
+AE70;AE70;1101 1162 11AF;AE70;1101 1162 11AF;
+AE71;AE71;1101 1162 11B0;AE71;1101 1162 11B0;
+AE72;AE72;1101 1162 11B1;AE72;1101 1162 11B1;
+AE73;AE73;1101 1162 11B2;AE73;1101 1162 11B2;
+AE74;AE74;1101 1162 11B3;AE74;1101 1162 11B3;
+AE75;AE75;1101 1162 11B4;AE75;1101 1162 11B4;
+AE76;AE76;1101 1162 11B5;AE76;1101 1162 11B5;
+AE77;AE77;1101 1162 11B6;AE77;1101 1162 11B6;
+AE78;AE78;1101 1162 11B7;AE78;1101 1162 11B7;
+AE79;AE79;1101 1162 11B8;AE79;1101 1162 11B8;
+AE7A;AE7A;1101 1162 11B9;AE7A;1101 1162 11B9;
+AE7B;AE7B;1101 1162 11BA;AE7B;1101 1162 11BA;
+AE7C;AE7C;1101 1162 11BB;AE7C;1101 1162 11BB;
+AE7D;AE7D;1101 1162 11BC;AE7D;1101 1162 11BC;
+AE7E;AE7E;1101 1162 11BD;AE7E;1101 1162 11BD;
+AE7F;AE7F;1101 1162 11BE;AE7F;1101 1162 11BE;
+AE80;AE80;1101 1162 11BF;AE80;1101 1162 11BF;
+AE81;AE81;1101 1162 11C0;AE81;1101 1162 11C0;
+AE82;AE82;1101 1162 11C1;AE82;1101 1162 11C1;
+AE83;AE83;1101 1162 11C2;AE83;1101 1162 11C2;
+AE84;AE84;1101 1163;AE84;1101 1163;
+AE85;AE85;1101 1163 11A8;AE85;1101 1163 11A8;
+AE86;AE86;1101 1163 11A9;AE86;1101 1163 11A9;
+AE87;AE87;1101 1163 11AA;AE87;1101 1163 11AA;
+AE88;AE88;1101 1163 11AB;AE88;1101 1163 11AB;
+AE89;AE89;1101 1163 11AC;AE89;1101 1163 11AC;
+AE8A;AE8A;1101 1163 11AD;AE8A;1101 1163 11AD;
+AE8B;AE8B;1101 1163 11AE;AE8B;1101 1163 11AE;
+AE8C;AE8C;1101 1163 11AF;AE8C;1101 1163 11AF;
+AE8D;AE8D;1101 1163 11B0;AE8D;1101 1163 11B0;
+AE8E;AE8E;1101 1163 11B1;AE8E;1101 1163 11B1;
+AE8F;AE8F;1101 1163 11B2;AE8F;1101 1163 11B2;
+AE90;AE90;1101 1163 11B3;AE90;1101 1163 11B3;
+AE91;AE91;1101 1163 11B4;AE91;1101 1163 11B4;
+AE92;AE92;1101 1163 11B5;AE92;1101 1163 11B5;
+AE93;AE93;1101 1163 11B6;AE93;1101 1163 11B6;
+AE94;AE94;1101 1163 11B7;AE94;1101 1163 11B7;
+AE95;AE95;1101 1163 11B8;AE95;1101 1163 11B8;
+AE96;AE96;1101 1163 11B9;AE96;1101 1163 11B9;
+AE97;AE97;1101 1163 11BA;AE97;1101 1163 11BA;
+AE98;AE98;1101 1163 11BB;AE98;1101 1163 11BB;
+AE99;AE99;1101 1163 11BC;AE99;1101 1163 11BC;
+AE9A;AE9A;1101 1163 11BD;AE9A;1101 1163 11BD;
+AE9B;AE9B;1101 1163 11BE;AE9B;1101 1163 11BE;
+AE9C;AE9C;1101 1163 11BF;AE9C;1101 1163 11BF;
+AE9D;AE9D;1101 1163 11C0;AE9D;1101 1163 11C0;
+AE9E;AE9E;1101 1163 11C1;AE9E;1101 1163 11C1;
+AE9F;AE9F;1101 1163 11C2;AE9F;1101 1163 11C2;
+AEA0;AEA0;1101 1164;AEA0;1101 1164;
+AEA1;AEA1;1101 1164 11A8;AEA1;1101 1164 11A8;
+AEA2;AEA2;1101 1164 11A9;AEA2;1101 1164 11A9;
+AEA3;AEA3;1101 1164 11AA;AEA3;1101 1164 11AA;
+AEA4;AEA4;1101 1164 11AB;AEA4;1101 1164 11AB;
+AEA5;AEA5;1101 1164 11AC;AEA5;1101 1164 11AC;
+AEA6;AEA6;1101 1164 11AD;AEA6;1101 1164 11AD;
+AEA7;AEA7;1101 1164 11AE;AEA7;1101 1164 11AE;
+AEA8;AEA8;1101 1164 11AF;AEA8;1101 1164 11AF;
+AEA9;AEA9;1101 1164 11B0;AEA9;1101 1164 11B0;
+AEAA;AEAA;1101 1164 11B1;AEAA;1101 1164 11B1;
+AEAB;AEAB;1101 1164 11B2;AEAB;1101 1164 11B2;
+AEAC;AEAC;1101 1164 11B3;AEAC;1101 1164 11B3;
+AEAD;AEAD;1101 1164 11B4;AEAD;1101 1164 11B4;
+AEAE;AEAE;1101 1164 11B5;AEAE;1101 1164 11B5;
+AEAF;AEAF;1101 1164 11B6;AEAF;1101 1164 11B6;
+AEB0;AEB0;1101 1164 11B7;AEB0;1101 1164 11B7;
+AEB1;AEB1;1101 1164 11B8;AEB1;1101 1164 11B8;
+AEB2;AEB2;1101 1164 11B9;AEB2;1101 1164 11B9;
+AEB3;AEB3;1101 1164 11BA;AEB3;1101 1164 11BA;
+AEB4;AEB4;1101 1164 11BB;AEB4;1101 1164 11BB;
+AEB5;AEB5;1101 1164 11BC;AEB5;1101 1164 11BC;
+AEB6;AEB6;1101 1164 11BD;AEB6;1101 1164 11BD;
+AEB7;AEB7;1101 1164 11BE;AEB7;1101 1164 11BE;
+AEB8;AEB8;1101 1164 11BF;AEB8;1101 1164 11BF;
+AEB9;AEB9;1101 1164 11C0;AEB9;1101 1164 11C0;
+AEBA;AEBA;1101 1164 11C1;AEBA;1101 1164 11C1;
+AEBB;AEBB;1101 1164 11C2;AEBB;1101 1164 11C2;
+AEBC;AEBC;1101 1165;AEBC;1101 1165;
+AEBD;AEBD;1101 1165 11A8;AEBD;1101 1165 11A8;
+AEBE;AEBE;1101 1165 11A9;AEBE;1101 1165 11A9;
+AEBF;AEBF;1101 1165 11AA;AEBF;1101 1165 11AA;
+AEC0;AEC0;1101 1165 11AB;AEC0;1101 1165 11AB;
+AEC1;AEC1;1101 1165 11AC;AEC1;1101 1165 11AC;
+AEC2;AEC2;1101 1165 11AD;AEC2;1101 1165 11AD;
+AEC3;AEC3;1101 1165 11AE;AEC3;1101 1165 11AE;
+AEC4;AEC4;1101 1165 11AF;AEC4;1101 1165 11AF;
+AEC5;AEC5;1101 1165 11B0;AEC5;1101 1165 11B0;
+AEC6;AEC6;1101 1165 11B1;AEC6;1101 1165 11B1;
+AEC7;AEC7;1101 1165 11B2;AEC7;1101 1165 11B2;
+AEC8;AEC8;1101 1165 11B3;AEC8;1101 1165 11B3;
+AEC9;AEC9;1101 1165 11B4;AEC9;1101 1165 11B4;
+AECA;AECA;1101 1165 11B5;AECA;1101 1165 11B5;
+AECB;AECB;1101 1165 11B6;AECB;1101 1165 11B6;
+AECC;AECC;1101 1165 11B7;AECC;1101 1165 11B7;
+AECD;AECD;1101 1165 11B8;AECD;1101 1165 11B8;
+AECE;AECE;1101 1165 11B9;AECE;1101 1165 11B9;
+AECF;AECF;1101 1165 11BA;AECF;1101 1165 11BA;
+AED0;AED0;1101 1165 11BB;AED0;1101 1165 11BB;
+AED1;AED1;1101 1165 11BC;AED1;1101 1165 11BC;
+AED2;AED2;1101 1165 11BD;AED2;1101 1165 11BD;
+AED3;AED3;1101 1165 11BE;AED3;1101 1165 11BE;
+AED4;AED4;1101 1165 11BF;AED4;1101 1165 11BF;
+AED5;AED5;1101 1165 11C0;AED5;1101 1165 11C0;
+AED6;AED6;1101 1165 11C1;AED6;1101 1165 11C1;
+AED7;AED7;1101 1165 11C2;AED7;1101 1165 11C2;
+AED8;AED8;1101 1166;AED8;1101 1166;
+AED9;AED9;1101 1166 11A8;AED9;1101 1166 11A8;
+AEDA;AEDA;1101 1166 11A9;AEDA;1101 1166 11A9;
+AEDB;AEDB;1101 1166 11AA;AEDB;1101 1166 11AA;
+AEDC;AEDC;1101 1166 11AB;AEDC;1101 1166 11AB;
+AEDD;AEDD;1101 1166 11AC;AEDD;1101 1166 11AC;
+AEDE;AEDE;1101 1166 11AD;AEDE;1101 1166 11AD;
+AEDF;AEDF;1101 1166 11AE;AEDF;1101 1166 11AE;
+AEE0;AEE0;1101 1166 11AF;AEE0;1101 1166 11AF;
+AEE1;AEE1;1101 1166 11B0;AEE1;1101 1166 11B0;
+AEE2;AEE2;1101 1166 11B1;AEE2;1101 1166 11B1;
+AEE3;AEE3;1101 1166 11B2;AEE3;1101 1166 11B2;
+AEE4;AEE4;1101 1166 11B3;AEE4;1101 1166 11B3;
+AEE5;AEE5;1101 1166 11B4;AEE5;1101 1166 11B4;
+AEE6;AEE6;1101 1166 11B5;AEE6;1101 1166 11B5;
+AEE7;AEE7;1101 1166 11B6;AEE7;1101 1166 11B6;
+AEE8;AEE8;1101 1166 11B7;AEE8;1101 1166 11B7;
+AEE9;AEE9;1101 1166 11B8;AEE9;1101 1166 11B8;
+AEEA;AEEA;1101 1166 11B9;AEEA;1101 1166 11B9;
+AEEB;AEEB;1101 1166 11BA;AEEB;1101 1166 11BA;
+AEEC;AEEC;1101 1166 11BB;AEEC;1101 1166 11BB;
+AEED;AEED;1101 1166 11BC;AEED;1101 1166 11BC;
+AEEE;AEEE;1101 1166 11BD;AEEE;1101 1166 11BD;
+AEEF;AEEF;1101 1166 11BE;AEEF;1101 1166 11BE;
+AEF0;AEF0;1101 1166 11BF;AEF0;1101 1166 11BF;
+AEF1;AEF1;1101 1166 11C0;AEF1;1101 1166 11C0;
+AEF2;AEF2;1101 1166 11C1;AEF2;1101 1166 11C1;
+AEF3;AEF3;1101 1166 11C2;AEF3;1101 1166 11C2;
+AEF4;AEF4;1101 1167;AEF4;1101 1167;
+AEF5;AEF5;1101 1167 11A8;AEF5;1101 1167 11A8;
+AEF6;AEF6;1101 1167 11A9;AEF6;1101 1167 11A9;
+AEF7;AEF7;1101 1167 11AA;AEF7;1101 1167 11AA;
+AEF8;AEF8;1101 1167 11AB;AEF8;1101 1167 11AB;
+AEF9;AEF9;1101 1167 11AC;AEF9;1101 1167 11AC;
+AEFA;AEFA;1101 1167 11AD;AEFA;1101 1167 11AD;
+AEFB;AEFB;1101 1167 11AE;AEFB;1101 1167 11AE;
+AEFC;AEFC;1101 1167 11AF;AEFC;1101 1167 11AF;
+AEFD;AEFD;1101 1167 11B0;AEFD;1101 1167 11B0;
+AEFE;AEFE;1101 1167 11B1;AEFE;1101 1167 11B1;
+AEFF;AEFF;1101 1167 11B2;AEFF;1101 1167 11B2;
+AF00;AF00;1101 1167 11B3;AF00;1101 1167 11B3;
+AF01;AF01;1101 1167 11B4;AF01;1101 1167 11B4;
+AF02;AF02;1101 1167 11B5;AF02;1101 1167 11B5;
+AF03;AF03;1101 1167 11B6;AF03;1101 1167 11B6;
+AF04;AF04;1101 1167 11B7;AF04;1101 1167 11B7;
+AF05;AF05;1101 1167 11B8;AF05;1101 1167 11B8;
+AF06;AF06;1101 1167 11B9;AF06;1101 1167 11B9;
+AF07;AF07;1101 1167 11BA;AF07;1101 1167 11BA;
+AF08;AF08;1101 1167 11BB;AF08;1101 1167 11BB;
+AF09;AF09;1101 1167 11BC;AF09;1101 1167 11BC;
+AF0A;AF0A;1101 1167 11BD;AF0A;1101 1167 11BD;
+AF0B;AF0B;1101 1167 11BE;AF0B;1101 1167 11BE;
+AF0C;AF0C;1101 1167 11BF;AF0C;1101 1167 11BF;
+AF0D;AF0D;1101 1167 11C0;AF0D;1101 1167 11C0;
+AF0E;AF0E;1101 1167 11C1;AF0E;1101 1167 11C1;
+AF0F;AF0F;1101 1167 11C2;AF0F;1101 1167 11C2;
+AF10;AF10;1101 1168;AF10;1101 1168;
+AF11;AF11;1101 1168 11A8;AF11;1101 1168 11A8;
+AF12;AF12;1101 1168 11A9;AF12;1101 1168 11A9;
+AF13;AF13;1101 1168 11AA;AF13;1101 1168 11AA;
+AF14;AF14;1101 1168 11AB;AF14;1101 1168 11AB;
+AF15;AF15;1101 1168 11AC;AF15;1101 1168 11AC;
+AF16;AF16;1101 1168 11AD;AF16;1101 1168 11AD;
+AF17;AF17;1101 1168 11AE;AF17;1101 1168 11AE;
+AF18;AF18;1101 1168 11AF;AF18;1101 1168 11AF;
+AF19;AF19;1101 1168 11B0;AF19;1101 1168 11B0;
+AF1A;AF1A;1101 1168 11B1;AF1A;1101 1168 11B1;
+AF1B;AF1B;1101 1168 11B2;AF1B;1101 1168 11B2;
+AF1C;AF1C;1101 1168 11B3;AF1C;1101 1168 11B3;
+AF1D;AF1D;1101 1168 11B4;AF1D;1101 1168 11B4;
+AF1E;AF1E;1101 1168 11B5;AF1E;1101 1168 11B5;
+AF1F;AF1F;1101 1168 11B6;AF1F;1101 1168 11B6;
+AF20;AF20;1101 1168 11B7;AF20;1101 1168 11B7;
+AF21;AF21;1101 1168 11B8;AF21;1101 1168 11B8;
+AF22;AF22;1101 1168 11B9;AF22;1101 1168 11B9;
+AF23;AF23;1101 1168 11BA;AF23;1101 1168 11BA;
+AF24;AF24;1101 1168 11BB;AF24;1101 1168 11BB;
+AF25;AF25;1101 1168 11BC;AF25;1101 1168 11BC;
+AF26;AF26;1101 1168 11BD;AF26;1101 1168 11BD;
+AF27;AF27;1101 1168 11BE;AF27;1101 1168 11BE;
+AF28;AF28;1101 1168 11BF;AF28;1101 1168 11BF;
+AF29;AF29;1101 1168 11C0;AF29;1101 1168 11C0;
+AF2A;AF2A;1101 1168 11C1;AF2A;1101 1168 11C1;
+AF2B;AF2B;1101 1168 11C2;AF2B;1101 1168 11C2;
+AF2C;AF2C;1101 1169;AF2C;1101 1169;
+AF2D;AF2D;1101 1169 11A8;AF2D;1101 1169 11A8;
+AF2E;AF2E;1101 1169 11A9;AF2E;1101 1169 11A9;
+AF2F;AF2F;1101 1169 11AA;AF2F;1101 1169 11AA;
+AF30;AF30;1101 1169 11AB;AF30;1101 1169 11AB;
+AF31;AF31;1101 1169 11AC;AF31;1101 1169 11AC;
+AF32;AF32;1101 1169 11AD;AF32;1101 1169 11AD;
+AF33;AF33;1101 1169 11AE;AF33;1101 1169 11AE;
+AF34;AF34;1101 1169 11AF;AF34;1101 1169 11AF;
+AF35;AF35;1101 1169 11B0;AF35;1101 1169 11B0;
+AF36;AF36;1101 1169 11B1;AF36;1101 1169 11B1;
+AF37;AF37;1101 1169 11B2;AF37;1101 1169 11B2;
+AF38;AF38;1101 1169 11B3;AF38;1101 1169 11B3;
+AF39;AF39;1101 1169 11B4;AF39;1101 1169 11B4;
+AF3A;AF3A;1101 1169 11B5;AF3A;1101 1169 11B5;
+AF3B;AF3B;1101 1169 11B6;AF3B;1101 1169 11B6;
+AF3C;AF3C;1101 1169 11B7;AF3C;1101 1169 11B7;
+AF3D;AF3D;1101 1169 11B8;AF3D;1101 1169 11B8;
+AF3E;AF3E;1101 1169 11B9;AF3E;1101 1169 11B9;
+AF3F;AF3F;1101 1169 11BA;AF3F;1101 1169 11BA;
+AF40;AF40;1101 1169 11BB;AF40;1101 1169 11BB;
+AF41;AF41;1101 1169 11BC;AF41;1101 1169 11BC;
+AF42;AF42;1101 1169 11BD;AF42;1101 1169 11BD;
+AF43;AF43;1101 1169 11BE;AF43;1101 1169 11BE;
+AF44;AF44;1101 1169 11BF;AF44;1101 1169 11BF;
+AF45;AF45;1101 1169 11C0;AF45;1101 1169 11C0;
+AF46;AF46;1101 1169 11C1;AF46;1101 1169 11C1;
+AF47;AF47;1101 1169 11C2;AF47;1101 1169 11C2;
+AF48;AF48;1101 116A;AF48;1101 116A;
+AF49;AF49;1101 116A 11A8;AF49;1101 116A 11A8;
+AF4A;AF4A;1101 116A 11A9;AF4A;1101 116A 11A9;
+AF4B;AF4B;1101 116A 11AA;AF4B;1101 116A 11AA;
+AF4C;AF4C;1101 116A 11AB;AF4C;1101 116A 11AB;
+AF4D;AF4D;1101 116A 11AC;AF4D;1101 116A 11AC;
+AF4E;AF4E;1101 116A 11AD;AF4E;1101 116A 11AD;
+AF4F;AF4F;1101 116A 11AE;AF4F;1101 116A 11AE;
+AF50;AF50;1101 116A 11AF;AF50;1101 116A 11AF;
+AF51;AF51;1101 116A 11B0;AF51;1101 116A 11B0;
+AF52;AF52;1101 116A 11B1;AF52;1101 116A 11B1;
+AF53;AF53;1101 116A 11B2;AF53;1101 116A 11B2;
+AF54;AF54;1101 116A 11B3;AF54;1101 116A 11B3;
+AF55;AF55;1101 116A 11B4;AF55;1101 116A 11B4;
+AF56;AF56;1101 116A 11B5;AF56;1101 116A 11B5;
+AF57;AF57;1101 116A 11B6;AF57;1101 116A 11B6;
+AF58;AF58;1101 116A 11B7;AF58;1101 116A 11B7;
+AF59;AF59;1101 116A 11B8;AF59;1101 116A 11B8;
+AF5A;AF5A;1101 116A 11B9;AF5A;1101 116A 11B9;
+AF5B;AF5B;1101 116A 11BA;AF5B;1101 116A 11BA;
+AF5C;AF5C;1101 116A 11BB;AF5C;1101 116A 11BB;
+AF5D;AF5D;1101 116A 11BC;AF5D;1101 116A 11BC;
+AF5E;AF5E;1101 116A 11BD;AF5E;1101 116A 11BD;
+AF5F;AF5F;1101 116A 11BE;AF5F;1101 116A 11BE;
+AF60;AF60;1101 116A 11BF;AF60;1101 116A 11BF;
+AF61;AF61;1101 116A 11C0;AF61;1101 116A 11C0;
+AF62;AF62;1101 116A 11C1;AF62;1101 116A 11C1;
+AF63;AF63;1101 116A 11C2;AF63;1101 116A 11C2;
+AF64;AF64;1101 116B;AF64;1101 116B;
+AF65;AF65;1101 116B 11A8;AF65;1101 116B 11A8;
+AF66;AF66;1101 116B 11A9;AF66;1101 116B 11A9;
+AF67;AF67;1101 116B 11AA;AF67;1101 116B 11AA;
+AF68;AF68;1101 116B 11AB;AF68;1101 116B 11AB;
+AF69;AF69;1101 116B 11AC;AF69;1101 116B 11AC;
+AF6A;AF6A;1101 116B 11AD;AF6A;1101 116B 11AD;
+AF6B;AF6B;1101 116B 11AE;AF6B;1101 116B 11AE;
+AF6C;AF6C;1101 116B 11AF;AF6C;1101 116B 11AF;
+AF6D;AF6D;1101 116B 11B0;AF6D;1101 116B 11B0;
+AF6E;AF6E;1101 116B 11B1;AF6E;1101 116B 11B1;
+AF6F;AF6F;1101 116B 11B2;AF6F;1101 116B 11B2;
+AF70;AF70;1101 116B 11B3;AF70;1101 116B 11B3;
+AF71;AF71;1101 116B 11B4;AF71;1101 116B 11B4;
+AF72;AF72;1101 116B 11B5;AF72;1101 116B 11B5;
+AF73;AF73;1101 116B 11B6;AF73;1101 116B 11B6;
+AF74;AF74;1101 116B 11B7;AF74;1101 116B 11B7;
+AF75;AF75;1101 116B 11B8;AF75;1101 116B 11B8;
+AF76;AF76;1101 116B 11B9;AF76;1101 116B 11B9;
+AF77;AF77;1101 116B 11BA;AF77;1101 116B 11BA;
+AF78;AF78;1101 116B 11BB;AF78;1101 116B 11BB;
+AF79;AF79;1101 116B 11BC;AF79;1101 116B 11BC;
+AF7A;AF7A;1101 116B 11BD;AF7A;1101 116B 11BD;
+AF7B;AF7B;1101 116B 11BE;AF7B;1101 116B 11BE;
+AF7C;AF7C;1101 116B 11BF;AF7C;1101 116B 11BF;
+AF7D;AF7D;1101 116B 11C0;AF7D;1101 116B 11C0;
+AF7E;AF7E;1101 116B 11C1;AF7E;1101 116B 11C1;
+AF7F;AF7F;1101 116B 11C2;AF7F;1101 116B 11C2;
+AF80;AF80;1101 116C;AF80;1101 116C;
+AF81;AF81;1101 116C 11A8;AF81;1101 116C 11A8;
+AF82;AF82;1101 116C 11A9;AF82;1101 116C 11A9;
+AF83;AF83;1101 116C 11AA;AF83;1101 116C 11AA;
+AF84;AF84;1101 116C 11AB;AF84;1101 116C 11AB;
+AF85;AF85;1101 116C 11AC;AF85;1101 116C 11AC;
+AF86;AF86;1101 116C 11AD;AF86;1101 116C 11AD;
+AF87;AF87;1101 116C 11AE;AF87;1101 116C 11AE;
+AF88;AF88;1101 116C 11AF;AF88;1101 116C 11AF;
+AF89;AF89;1101 116C 11B0;AF89;1101 116C 11B0;
+AF8A;AF8A;1101 116C 11B1;AF8A;1101 116C 11B1;
+AF8B;AF8B;1101 116C 11B2;AF8B;1101 116C 11B2;
+AF8C;AF8C;1101 116C 11B3;AF8C;1101 116C 11B3;
+AF8D;AF8D;1101 116C 11B4;AF8D;1101 116C 11B4;
+AF8E;AF8E;1101 116C 11B5;AF8E;1101 116C 11B5;
+AF8F;AF8F;1101 116C 11B6;AF8F;1101 116C 11B6;
+AF90;AF90;1101 116C 11B7;AF90;1101 116C 11B7;
+AF91;AF91;1101 116C 11B8;AF91;1101 116C 11B8;
+AF92;AF92;1101 116C 11B9;AF92;1101 116C 11B9;
+AF93;AF93;1101 116C 11BA;AF93;1101 116C 11BA;
+AF94;AF94;1101 116C 11BB;AF94;1101 116C 11BB;
+AF95;AF95;1101 116C 11BC;AF95;1101 116C 11BC;
+AF96;AF96;1101 116C 11BD;AF96;1101 116C 11BD;
+AF97;AF97;1101 116C 11BE;AF97;1101 116C 11BE;
+AF98;AF98;1101 116C 11BF;AF98;1101 116C 11BF;
+AF99;AF99;1101 116C 11C0;AF99;1101 116C 11C0;
+AF9A;AF9A;1101 116C 11C1;AF9A;1101 116C 11C1;
+AF9B;AF9B;1101 116C 11C2;AF9B;1101 116C 11C2;
+AF9C;AF9C;1101 116D;AF9C;1101 116D;
+AF9D;AF9D;1101 116D 11A8;AF9D;1101 116D 11A8;
+AF9E;AF9E;1101 116D 11A9;AF9E;1101 116D 11A9;
+AF9F;AF9F;1101 116D 11AA;AF9F;1101 116D 11AA;
+AFA0;AFA0;1101 116D 11AB;AFA0;1101 116D 11AB;
+AFA1;AFA1;1101 116D 11AC;AFA1;1101 116D 11AC;
+AFA2;AFA2;1101 116D 11AD;AFA2;1101 116D 11AD;
+AFA3;AFA3;1101 116D 11AE;AFA3;1101 116D 11AE;
+AFA4;AFA4;1101 116D 11AF;AFA4;1101 116D 11AF;
+AFA5;AFA5;1101 116D 11B0;AFA5;1101 116D 11B0;
+AFA6;AFA6;1101 116D 11B1;AFA6;1101 116D 11B1;
+AFA7;AFA7;1101 116D 11B2;AFA7;1101 116D 11B2;
+AFA8;AFA8;1101 116D 11B3;AFA8;1101 116D 11B3;
+AFA9;AFA9;1101 116D 11B4;AFA9;1101 116D 11B4;
+AFAA;AFAA;1101 116D 11B5;AFAA;1101 116D 11B5;
+AFAB;AFAB;1101 116D 11B6;AFAB;1101 116D 11B6;
+AFAC;AFAC;1101 116D 11B7;AFAC;1101 116D 11B7;
+AFAD;AFAD;1101 116D 11B8;AFAD;1101 116D 11B8;
+AFAE;AFAE;1101 116D 11B9;AFAE;1101 116D 11B9;
+AFAF;AFAF;1101 116D 11BA;AFAF;1101 116D 11BA;
+AFB0;AFB0;1101 116D 11BB;AFB0;1101 116D 11BB;
+AFB1;AFB1;1101 116D 11BC;AFB1;1101 116D 11BC;
+AFB2;AFB2;1101 116D 11BD;AFB2;1101 116D 11BD;
+AFB3;AFB3;1101 116D 11BE;AFB3;1101 116D 11BE;
+AFB4;AFB4;1101 116D 11BF;AFB4;1101 116D 11BF;
+AFB5;AFB5;1101 116D 11C0;AFB5;1101 116D 11C0;
+AFB6;AFB6;1101 116D 11C1;AFB6;1101 116D 11C1;
+AFB7;AFB7;1101 116D 11C2;AFB7;1101 116D 11C2;
+AFB8;AFB8;1101 116E;AFB8;1101 116E;
+AFB9;AFB9;1101 116E 11A8;AFB9;1101 116E 11A8;
+AFBA;AFBA;1101 116E 11A9;AFBA;1101 116E 11A9;
+AFBB;AFBB;1101 116E 11AA;AFBB;1101 116E 11AA;
+AFBC;AFBC;1101 116E 11AB;AFBC;1101 116E 11AB;
+AFBD;AFBD;1101 116E 11AC;AFBD;1101 116E 11AC;
+AFBE;AFBE;1101 116E 11AD;AFBE;1101 116E 11AD;
+AFBF;AFBF;1101 116E 11AE;AFBF;1101 116E 11AE;
+AFC0;AFC0;1101 116E 11AF;AFC0;1101 116E 11AF;
+AFC1;AFC1;1101 116E 11B0;AFC1;1101 116E 11B0;
+AFC2;AFC2;1101 116E 11B1;AFC2;1101 116E 11B1;
+AFC3;AFC3;1101 116E 11B2;AFC3;1101 116E 11B2;
+AFC4;AFC4;1101 116E 11B3;AFC4;1101 116E 11B3;
+AFC5;AFC5;1101 116E 11B4;AFC5;1101 116E 11B4;
+AFC6;AFC6;1101 116E 11B5;AFC6;1101 116E 11B5;
+AFC7;AFC7;1101 116E 11B6;AFC7;1101 116E 11B6;
+AFC8;AFC8;1101 116E 11B7;AFC8;1101 116E 11B7;
+AFC9;AFC9;1101 116E 11B8;AFC9;1101 116E 11B8;
+AFCA;AFCA;1101 116E 11B9;AFCA;1101 116E 11B9;
+AFCB;AFCB;1101 116E 11BA;AFCB;1101 116E 11BA;
+AFCC;AFCC;1101 116E 11BB;AFCC;1101 116E 11BB;
+AFCD;AFCD;1101 116E 11BC;AFCD;1101 116E 11BC;
+AFCE;AFCE;1101 116E 11BD;AFCE;1101 116E 11BD;
+AFCF;AFCF;1101 116E 11BE;AFCF;1101 116E 11BE;
+AFD0;AFD0;1101 116E 11BF;AFD0;1101 116E 11BF;
+AFD1;AFD1;1101 116E 11C0;AFD1;1101 116E 11C0;
+AFD2;AFD2;1101 116E 11C1;AFD2;1101 116E 11C1;
+AFD3;AFD3;1101 116E 11C2;AFD3;1101 116E 11C2;
+AFD4;AFD4;1101 116F;AFD4;1101 116F;
+AFD5;AFD5;1101 116F 11A8;AFD5;1101 116F 11A8;
+AFD6;AFD6;1101 116F 11A9;AFD6;1101 116F 11A9;
+AFD7;AFD7;1101 116F 11AA;AFD7;1101 116F 11AA;
+AFD8;AFD8;1101 116F 11AB;AFD8;1101 116F 11AB;
+AFD9;AFD9;1101 116F 11AC;AFD9;1101 116F 11AC;
+AFDA;AFDA;1101 116F 11AD;AFDA;1101 116F 11AD;
+AFDB;AFDB;1101 116F 11AE;AFDB;1101 116F 11AE;
+AFDC;AFDC;1101 116F 11AF;AFDC;1101 116F 11AF;
+AFDD;AFDD;1101 116F 11B0;AFDD;1101 116F 11B0;
+AFDE;AFDE;1101 116F 11B1;AFDE;1101 116F 11B1;
+AFDF;AFDF;1101 116F 11B2;AFDF;1101 116F 11B2;
+AFE0;AFE0;1101 116F 11B3;AFE0;1101 116F 11B3;
+AFE1;AFE1;1101 116F 11B4;AFE1;1101 116F 11B4;
+AFE2;AFE2;1101 116F 11B5;AFE2;1101 116F 11B5;
+AFE3;AFE3;1101 116F 11B6;AFE3;1101 116F 11B6;
+AFE4;AFE4;1101 116F 11B7;AFE4;1101 116F 11B7;
+AFE5;AFE5;1101 116F 11B8;AFE5;1101 116F 11B8;
+AFE6;AFE6;1101 116F 11B9;AFE6;1101 116F 11B9;
+AFE7;AFE7;1101 116F 11BA;AFE7;1101 116F 11BA;
+AFE8;AFE8;1101 116F 11BB;AFE8;1101 116F 11BB;
+AFE9;AFE9;1101 116F 11BC;AFE9;1101 116F 11BC;
+AFEA;AFEA;1101 116F 11BD;AFEA;1101 116F 11BD;
+AFEB;AFEB;1101 116F 11BE;AFEB;1101 116F 11BE;
+AFEC;AFEC;1101 116F 11BF;AFEC;1101 116F 11BF;
+AFED;AFED;1101 116F 11C0;AFED;1101 116F 11C0;
+AFEE;AFEE;1101 116F 11C1;AFEE;1101 116F 11C1;
+AFEF;AFEF;1101 116F 11C2;AFEF;1101 116F 11C2;
+AFF0;AFF0;1101 1170;AFF0;1101 1170;
+AFF1;AFF1;1101 1170 11A8;AFF1;1101 1170 11A8;
+AFF2;AFF2;1101 1170 11A9;AFF2;1101 1170 11A9;
+AFF3;AFF3;1101 1170 11AA;AFF3;1101 1170 11AA;
+AFF4;AFF4;1101 1170 11AB;AFF4;1101 1170 11AB;
+AFF5;AFF5;1101 1170 11AC;AFF5;1101 1170 11AC;
+AFF6;AFF6;1101 1170 11AD;AFF6;1101 1170 11AD;
+AFF7;AFF7;1101 1170 11AE;AFF7;1101 1170 11AE;
+AFF8;AFF8;1101 1170 11AF;AFF8;1101 1170 11AF;
+AFF9;AFF9;1101 1170 11B0;AFF9;1101 1170 11B0;
+AFFA;AFFA;1101 1170 11B1;AFFA;1101 1170 11B1;
+AFFB;AFFB;1101 1170 11B2;AFFB;1101 1170 11B2;
+AFFC;AFFC;1101 1170 11B3;AFFC;1101 1170 11B3;
+AFFD;AFFD;1101 1170 11B4;AFFD;1101 1170 11B4;
+AFFE;AFFE;1101 1170 11B5;AFFE;1101 1170 11B5;
+AFFF;AFFF;1101 1170 11B6;AFFF;1101 1170 11B6;
+B000;B000;1101 1170 11B7;B000;1101 1170 11B7;
+B001;B001;1101 1170 11B8;B001;1101 1170 11B8;
+B002;B002;1101 1170 11B9;B002;1101 1170 11B9;
+B003;B003;1101 1170 11BA;B003;1101 1170 11BA;
+B004;B004;1101 1170 11BB;B004;1101 1170 11BB;
+B005;B005;1101 1170 11BC;B005;1101 1170 11BC;
+B006;B006;1101 1170 11BD;B006;1101 1170 11BD;
+B007;B007;1101 1170 11BE;B007;1101 1170 11BE;
+B008;B008;1101 1170 11BF;B008;1101 1170 11BF;
+B009;B009;1101 1170 11C0;B009;1101 1170 11C0;
+B00A;B00A;1101 1170 11C1;B00A;1101 1170 11C1;
+B00B;B00B;1101 1170 11C2;B00B;1101 1170 11C2;
+B00C;B00C;1101 1171;B00C;1101 1171;
+B00D;B00D;1101 1171 11A8;B00D;1101 1171 11A8;
+B00E;B00E;1101 1171 11A9;B00E;1101 1171 11A9;
+B00F;B00F;1101 1171 11AA;B00F;1101 1171 11AA;
+B010;B010;1101 1171 11AB;B010;1101 1171 11AB;
+B011;B011;1101 1171 11AC;B011;1101 1171 11AC;
+B012;B012;1101 1171 11AD;B012;1101 1171 11AD;
+B013;B013;1101 1171 11AE;B013;1101 1171 11AE;
+B014;B014;1101 1171 11AF;B014;1101 1171 11AF;
+B015;B015;1101 1171 11B0;B015;1101 1171 11B0;
+B016;B016;1101 1171 11B1;B016;1101 1171 11B1;
+B017;B017;1101 1171 11B2;B017;1101 1171 11B2;
+B018;B018;1101 1171 11B3;B018;1101 1171 11B3;
+B019;B019;1101 1171 11B4;B019;1101 1171 11B4;
+B01A;B01A;1101 1171 11B5;B01A;1101 1171 11B5;
+B01B;B01B;1101 1171 11B6;B01B;1101 1171 11B6;
+B01C;B01C;1101 1171 11B7;B01C;1101 1171 11B7;
+B01D;B01D;1101 1171 11B8;B01D;1101 1171 11B8;
+B01E;B01E;1101 1171 11B9;B01E;1101 1171 11B9;
+B01F;B01F;1101 1171 11BA;B01F;1101 1171 11BA;
+B020;B020;1101 1171 11BB;B020;1101 1171 11BB;
+B021;B021;1101 1171 11BC;B021;1101 1171 11BC;
+B022;B022;1101 1171 11BD;B022;1101 1171 11BD;
+B023;B023;1101 1171 11BE;B023;1101 1171 11BE;
+B024;B024;1101 1171 11BF;B024;1101 1171 11BF;
+B025;B025;1101 1171 11C0;B025;1101 1171 11C0;
+B026;B026;1101 1171 11C1;B026;1101 1171 11C1;
+B027;B027;1101 1171 11C2;B027;1101 1171 11C2;
+B028;B028;1101 1172;B028;1101 1172;
+B029;B029;1101 1172 11A8;B029;1101 1172 11A8;
+B02A;B02A;1101 1172 11A9;B02A;1101 1172 11A9;
+B02B;B02B;1101 1172 11AA;B02B;1101 1172 11AA;
+B02C;B02C;1101 1172 11AB;B02C;1101 1172 11AB;
+B02D;B02D;1101 1172 11AC;B02D;1101 1172 11AC;
+B02E;B02E;1101 1172 11AD;B02E;1101 1172 11AD;
+B02F;B02F;1101 1172 11AE;B02F;1101 1172 11AE;
+B030;B030;1101 1172 11AF;B030;1101 1172 11AF;
+B031;B031;1101 1172 11B0;B031;1101 1172 11B0;
+B032;B032;1101 1172 11B1;B032;1101 1172 11B1;
+B033;B033;1101 1172 11B2;B033;1101 1172 11B2;
+B034;B034;1101 1172 11B3;B034;1101 1172 11B3;
+B035;B035;1101 1172 11B4;B035;1101 1172 11B4;
+B036;B036;1101 1172 11B5;B036;1101 1172 11B5;
+B037;B037;1101 1172 11B6;B037;1101 1172 11B6;
+B038;B038;1101 1172 11B7;B038;1101 1172 11B7;
+B039;B039;1101 1172 11B8;B039;1101 1172 11B8;
+B03A;B03A;1101 1172 11B9;B03A;1101 1172 11B9;
+B03B;B03B;1101 1172 11BA;B03B;1101 1172 11BA;
+B03C;B03C;1101 1172 11BB;B03C;1101 1172 11BB;
+B03D;B03D;1101 1172 11BC;B03D;1101 1172 11BC;
+B03E;B03E;1101 1172 11BD;B03E;1101 1172 11BD;
+B03F;B03F;1101 1172 11BE;B03F;1101 1172 11BE;
+B040;B040;1101 1172 11BF;B040;1101 1172 11BF;
+B041;B041;1101 1172 11C0;B041;1101 1172 11C0;
+B042;B042;1101 1172 11C1;B042;1101 1172 11C1;
+B043;B043;1101 1172 11C2;B043;1101 1172 11C2;
+B044;B044;1101 1173;B044;1101 1173;
+B045;B045;1101 1173 11A8;B045;1101 1173 11A8;
+B046;B046;1101 1173 11A9;B046;1101 1173 11A9;
+B047;B047;1101 1173 11AA;B047;1101 1173 11AA;
+B048;B048;1101 1173 11AB;B048;1101 1173 11AB;
+B049;B049;1101 1173 11AC;B049;1101 1173 11AC;
+B04A;B04A;1101 1173 11AD;B04A;1101 1173 11AD;
+B04B;B04B;1101 1173 11AE;B04B;1101 1173 11AE;
+B04C;B04C;1101 1173 11AF;B04C;1101 1173 11AF;
+B04D;B04D;1101 1173 11B0;B04D;1101 1173 11B0;
+B04E;B04E;1101 1173 11B1;B04E;1101 1173 11B1;
+B04F;B04F;1101 1173 11B2;B04F;1101 1173 11B2;
+B050;B050;1101 1173 11B3;B050;1101 1173 11B3;
+B051;B051;1101 1173 11B4;B051;1101 1173 11B4;
+B052;B052;1101 1173 11B5;B052;1101 1173 11B5;
+B053;B053;1101 1173 11B6;B053;1101 1173 11B6;
+B054;B054;1101 1173 11B7;B054;1101 1173 11B7;
+B055;B055;1101 1173 11B8;B055;1101 1173 11B8;
+B056;B056;1101 1173 11B9;B056;1101 1173 11B9;
+B057;B057;1101 1173 11BA;B057;1101 1173 11BA;
+B058;B058;1101 1173 11BB;B058;1101 1173 11BB;
+B059;B059;1101 1173 11BC;B059;1101 1173 11BC;
+B05A;B05A;1101 1173 11BD;B05A;1101 1173 11BD;
+B05B;B05B;1101 1173 11BE;B05B;1101 1173 11BE;
+B05C;B05C;1101 1173 11BF;B05C;1101 1173 11BF;
+B05D;B05D;1101 1173 11C0;B05D;1101 1173 11C0;
+B05E;B05E;1101 1173 11C1;B05E;1101 1173 11C1;
+B05F;B05F;1101 1173 11C2;B05F;1101 1173 11C2;
+B060;B060;1101 1174;B060;1101 1174;
+B061;B061;1101 1174 11A8;B061;1101 1174 11A8;
+B062;B062;1101 1174 11A9;B062;1101 1174 11A9;
+B063;B063;1101 1174 11AA;B063;1101 1174 11AA;
+B064;B064;1101 1174 11AB;B064;1101 1174 11AB;
+B065;B065;1101 1174 11AC;B065;1101 1174 11AC;
+B066;B066;1101 1174 11AD;B066;1101 1174 11AD;
+B067;B067;1101 1174 11AE;B067;1101 1174 11AE;
+B068;B068;1101 1174 11AF;B068;1101 1174 11AF;
+B069;B069;1101 1174 11B0;B069;1101 1174 11B0;
+B06A;B06A;1101 1174 11B1;B06A;1101 1174 11B1;
+B06B;B06B;1101 1174 11B2;B06B;1101 1174 11B2;
+B06C;B06C;1101 1174 11B3;B06C;1101 1174 11B3;
+B06D;B06D;1101 1174 11B4;B06D;1101 1174 11B4;
+B06E;B06E;1101 1174 11B5;B06E;1101 1174 11B5;
+B06F;B06F;1101 1174 11B6;B06F;1101 1174 11B6;
+B070;B070;1101 1174 11B7;B070;1101 1174 11B7;
+B071;B071;1101 1174 11B8;B071;1101 1174 11B8;
+B072;B072;1101 1174 11B9;B072;1101 1174 11B9;
+B073;B073;1101 1174 11BA;B073;1101 1174 11BA;
+B074;B074;1101 1174 11BB;B074;1101 1174 11BB;
+B075;B075;1101 1174 11BC;B075;1101 1174 11BC;
+B076;B076;1101 1174 11BD;B076;1101 1174 11BD;
+B077;B077;1101 1174 11BE;B077;1101 1174 11BE;
+B078;B078;1101 1174 11BF;B078;1101 1174 11BF;
+B079;B079;1101 1174 11C0;B079;1101 1174 11C0;
+B07A;B07A;1101 1174 11C1;B07A;1101 1174 11C1;
+B07B;B07B;1101 1174 11C2;B07B;1101 1174 11C2;
+B07C;B07C;1101 1175;B07C;1101 1175;
+B07D;B07D;1101 1175 11A8;B07D;1101 1175 11A8;
+B07E;B07E;1101 1175 11A9;B07E;1101 1175 11A9;
+B07F;B07F;1101 1175 11AA;B07F;1101 1175 11AA;
+B080;B080;1101 1175 11AB;B080;1101 1175 11AB;
+B081;B081;1101 1175 11AC;B081;1101 1175 11AC;
+B082;B082;1101 1175 11AD;B082;1101 1175 11AD;
+B083;B083;1101 1175 11AE;B083;1101 1175 11AE;
+B084;B084;1101 1175 11AF;B084;1101 1175 11AF;
+B085;B085;1101 1175 11B0;B085;1101 1175 11B0;
+B086;B086;1101 1175 11B1;B086;1101 1175 11B1;
+B087;B087;1101 1175 11B2;B087;1101 1175 11B2;
+B088;B088;1101 1175 11B3;B088;1101 1175 11B3;
+B089;B089;1101 1175 11B4;B089;1101 1175 11B4;
+B08A;B08A;1101 1175 11B5;B08A;1101 1175 11B5;
+B08B;B08B;1101 1175 11B6;B08B;1101 1175 11B6;
+B08C;B08C;1101 1175 11B7;B08C;1101 1175 11B7;
+B08D;B08D;1101 1175 11B8;B08D;1101 1175 11B8;
+B08E;B08E;1101 1175 11B9;B08E;1101 1175 11B9;
+B08F;B08F;1101 1175 11BA;B08F;1101 1175 11BA;
+B090;B090;1101 1175 11BB;B090;1101 1175 11BB;
+B091;B091;1101 1175 11BC;B091;1101 1175 11BC;
+B092;B092;1101 1175 11BD;B092;1101 1175 11BD;
+B093;B093;1101 1175 11BE;B093;1101 1175 11BE;
+B094;B094;1101 1175 11BF;B094;1101 1175 11BF;
+B095;B095;1101 1175 11C0;B095;1101 1175 11C0;
+B096;B096;1101 1175 11C1;B096;1101 1175 11C1;
+B097;B097;1101 1175 11C2;B097;1101 1175 11C2;
+B098;B098;1102 1161;B098;1102 1161;
+B099;B099;1102 1161 11A8;B099;1102 1161 11A8;
+B09A;B09A;1102 1161 11A9;B09A;1102 1161 11A9;
+B09B;B09B;1102 1161 11AA;B09B;1102 1161 11AA;
+B09C;B09C;1102 1161 11AB;B09C;1102 1161 11AB;
+B09D;B09D;1102 1161 11AC;B09D;1102 1161 11AC;
+B09E;B09E;1102 1161 11AD;B09E;1102 1161 11AD;
+B09F;B09F;1102 1161 11AE;B09F;1102 1161 11AE;
+B0A0;B0A0;1102 1161 11AF;B0A0;1102 1161 11AF;
+B0A1;B0A1;1102 1161 11B0;B0A1;1102 1161 11B0;
+B0A2;B0A2;1102 1161 11B1;B0A2;1102 1161 11B1;
+B0A3;B0A3;1102 1161 11B2;B0A3;1102 1161 11B2;
+B0A4;B0A4;1102 1161 11B3;B0A4;1102 1161 11B3;
+B0A5;B0A5;1102 1161 11B4;B0A5;1102 1161 11B4;
+B0A6;B0A6;1102 1161 11B5;B0A6;1102 1161 11B5;
+B0A7;B0A7;1102 1161 11B6;B0A7;1102 1161 11B6;
+B0A8;B0A8;1102 1161 11B7;B0A8;1102 1161 11B7;
+B0A9;B0A9;1102 1161 11B8;B0A9;1102 1161 11B8;
+B0AA;B0AA;1102 1161 11B9;B0AA;1102 1161 11B9;
+B0AB;B0AB;1102 1161 11BA;B0AB;1102 1161 11BA;
+B0AC;B0AC;1102 1161 11BB;B0AC;1102 1161 11BB;
+B0AD;B0AD;1102 1161 11BC;B0AD;1102 1161 11BC;
+B0AE;B0AE;1102 1161 11BD;B0AE;1102 1161 11BD;
+B0AF;B0AF;1102 1161 11BE;B0AF;1102 1161 11BE;
+B0B0;B0B0;1102 1161 11BF;B0B0;1102 1161 11BF;
+B0B1;B0B1;1102 1161 11C0;B0B1;1102 1161 11C0;
+B0B2;B0B2;1102 1161 11C1;B0B2;1102 1161 11C1;
+B0B3;B0B3;1102 1161 11C2;B0B3;1102 1161 11C2;
+B0B4;B0B4;1102 1162;B0B4;1102 1162;
+B0B5;B0B5;1102 1162 11A8;B0B5;1102 1162 11A8;
+B0B6;B0B6;1102 1162 11A9;B0B6;1102 1162 11A9;
+B0B7;B0B7;1102 1162 11AA;B0B7;1102 1162 11AA;
+B0B8;B0B8;1102 1162 11AB;B0B8;1102 1162 11AB;
+B0B9;B0B9;1102 1162 11AC;B0B9;1102 1162 11AC;
+B0BA;B0BA;1102 1162 11AD;B0BA;1102 1162 11AD;
+B0BB;B0BB;1102 1162 11AE;B0BB;1102 1162 11AE;
+B0BC;B0BC;1102 1162 11AF;B0BC;1102 1162 11AF;
+B0BD;B0BD;1102 1162 11B0;B0BD;1102 1162 11B0;
+B0BE;B0BE;1102 1162 11B1;B0BE;1102 1162 11B1;
+B0BF;B0BF;1102 1162 11B2;B0BF;1102 1162 11B2;
+B0C0;B0C0;1102 1162 11B3;B0C0;1102 1162 11B3;
+B0C1;B0C1;1102 1162 11B4;B0C1;1102 1162 11B4;
+B0C2;B0C2;1102 1162 11B5;B0C2;1102 1162 11B5;
+B0C3;B0C3;1102 1162 11B6;B0C3;1102 1162 11B6;
+B0C4;B0C4;1102 1162 11B7;B0C4;1102 1162 11B7;
+B0C5;B0C5;1102 1162 11B8;B0C5;1102 1162 11B8;
+B0C6;B0C6;1102 1162 11B9;B0C6;1102 1162 11B9;
+B0C7;B0C7;1102 1162 11BA;B0C7;1102 1162 11BA;
+B0C8;B0C8;1102 1162 11BB;B0C8;1102 1162 11BB;
+B0C9;B0C9;1102 1162 11BC;B0C9;1102 1162 11BC;
+B0CA;B0CA;1102 1162 11BD;B0CA;1102 1162 11BD;
+B0CB;B0CB;1102 1162 11BE;B0CB;1102 1162 11BE;
+B0CC;B0CC;1102 1162 11BF;B0CC;1102 1162 11BF;
+B0CD;B0CD;1102 1162 11C0;B0CD;1102 1162 11C0;
+B0CE;B0CE;1102 1162 11C1;B0CE;1102 1162 11C1;
+B0CF;B0CF;1102 1162 11C2;B0CF;1102 1162 11C2;
+B0D0;B0D0;1102 1163;B0D0;1102 1163;
+B0D1;B0D1;1102 1163 11A8;B0D1;1102 1163 11A8;
+B0D2;B0D2;1102 1163 11A9;B0D2;1102 1163 11A9;
+B0D3;B0D3;1102 1163 11AA;B0D3;1102 1163 11AA;
+B0D4;B0D4;1102 1163 11AB;B0D4;1102 1163 11AB;
+B0D5;B0D5;1102 1163 11AC;B0D5;1102 1163 11AC;
+B0D6;B0D6;1102 1163 11AD;B0D6;1102 1163 11AD;
+B0D7;B0D7;1102 1163 11AE;B0D7;1102 1163 11AE;
+B0D8;B0D8;1102 1163 11AF;B0D8;1102 1163 11AF;
+B0D9;B0D9;1102 1163 11B0;B0D9;1102 1163 11B0;
+B0DA;B0DA;1102 1163 11B1;B0DA;1102 1163 11B1;
+B0DB;B0DB;1102 1163 11B2;B0DB;1102 1163 11B2;
+B0DC;B0DC;1102 1163 11B3;B0DC;1102 1163 11B3;
+B0DD;B0DD;1102 1163 11B4;B0DD;1102 1163 11B4;
+B0DE;B0DE;1102 1163 11B5;B0DE;1102 1163 11B5;
+B0DF;B0DF;1102 1163 11B6;B0DF;1102 1163 11B6;
+B0E0;B0E0;1102 1163 11B7;B0E0;1102 1163 11B7;
+B0E1;B0E1;1102 1163 11B8;B0E1;1102 1163 11B8;
+B0E2;B0E2;1102 1163 11B9;B0E2;1102 1163 11B9;
+B0E3;B0E3;1102 1163 11BA;B0E3;1102 1163 11BA;
+B0E4;B0E4;1102 1163 11BB;B0E4;1102 1163 11BB;
+B0E5;B0E5;1102 1163 11BC;B0E5;1102 1163 11BC;
+B0E6;B0E6;1102 1163 11BD;B0E6;1102 1163 11BD;
+B0E7;B0E7;1102 1163 11BE;B0E7;1102 1163 11BE;
+B0E8;B0E8;1102 1163 11BF;B0E8;1102 1163 11BF;
+B0E9;B0E9;1102 1163 11C0;B0E9;1102 1163 11C0;
+B0EA;B0EA;1102 1163 11C1;B0EA;1102 1163 11C1;
+B0EB;B0EB;1102 1163 11C2;B0EB;1102 1163 11C2;
+B0EC;B0EC;1102 1164;B0EC;1102 1164;
+B0ED;B0ED;1102 1164 11A8;B0ED;1102 1164 11A8;
+B0EE;B0EE;1102 1164 11A9;B0EE;1102 1164 11A9;
+B0EF;B0EF;1102 1164 11AA;B0EF;1102 1164 11AA;
+B0F0;B0F0;1102 1164 11AB;B0F0;1102 1164 11AB;
+B0F1;B0F1;1102 1164 11AC;B0F1;1102 1164 11AC;
+B0F2;B0F2;1102 1164 11AD;B0F2;1102 1164 11AD;
+B0F3;B0F3;1102 1164 11AE;B0F3;1102 1164 11AE;
+B0F4;B0F4;1102 1164 11AF;B0F4;1102 1164 11AF;
+B0F5;B0F5;1102 1164 11B0;B0F5;1102 1164 11B0;
+B0F6;B0F6;1102 1164 11B1;B0F6;1102 1164 11B1;
+B0F7;B0F7;1102 1164 11B2;B0F7;1102 1164 11B2;
+B0F8;B0F8;1102 1164 11B3;B0F8;1102 1164 11B3;
+B0F9;B0F9;1102 1164 11B4;B0F9;1102 1164 11B4;
+B0FA;B0FA;1102 1164 11B5;B0FA;1102 1164 11B5;
+B0FB;B0FB;1102 1164 11B6;B0FB;1102 1164 11B6;
+B0FC;B0FC;1102 1164 11B7;B0FC;1102 1164 11B7;
+B0FD;B0FD;1102 1164 11B8;B0FD;1102 1164 11B8;
+B0FE;B0FE;1102 1164 11B9;B0FE;1102 1164 11B9;
+B0FF;B0FF;1102 1164 11BA;B0FF;1102 1164 11BA;
+B100;B100;1102 1164 11BB;B100;1102 1164 11BB;
+B101;B101;1102 1164 11BC;B101;1102 1164 11BC;
+B102;B102;1102 1164 11BD;B102;1102 1164 11BD;
+B103;B103;1102 1164 11BE;B103;1102 1164 11BE;
+B104;B104;1102 1164 11BF;B104;1102 1164 11BF;
+B105;B105;1102 1164 11C0;B105;1102 1164 11C0;
+B106;B106;1102 1164 11C1;B106;1102 1164 11C1;
+B107;B107;1102 1164 11C2;B107;1102 1164 11C2;
+B108;B108;1102 1165;B108;1102 1165;
+B109;B109;1102 1165 11A8;B109;1102 1165 11A8;
+B10A;B10A;1102 1165 11A9;B10A;1102 1165 11A9;
+B10B;B10B;1102 1165 11AA;B10B;1102 1165 11AA;
+B10C;B10C;1102 1165 11AB;B10C;1102 1165 11AB;
+B10D;B10D;1102 1165 11AC;B10D;1102 1165 11AC;
+B10E;B10E;1102 1165 11AD;B10E;1102 1165 11AD;
+B10F;B10F;1102 1165 11AE;B10F;1102 1165 11AE;
+B110;B110;1102 1165 11AF;B110;1102 1165 11AF;
+B111;B111;1102 1165 11B0;B111;1102 1165 11B0;
+B112;B112;1102 1165 11B1;B112;1102 1165 11B1;
+B113;B113;1102 1165 11B2;B113;1102 1165 11B2;
+B114;B114;1102 1165 11B3;B114;1102 1165 11B3;
+B115;B115;1102 1165 11B4;B115;1102 1165 11B4;
+B116;B116;1102 1165 11B5;B116;1102 1165 11B5;
+B117;B117;1102 1165 11B6;B117;1102 1165 11B6;
+B118;B118;1102 1165 11B7;B118;1102 1165 11B7;
+B119;B119;1102 1165 11B8;B119;1102 1165 11B8;
+B11A;B11A;1102 1165 11B9;B11A;1102 1165 11B9;
+B11B;B11B;1102 1165 11BA;B11B;1102 1165 11BA;
+B11C;B11C;1102 1165 11BB;B11C;1102 1165 11BB;
+B11D;B11D;1102 1165 11BC;B11D;1102 1165 11BC;
+B11E;B11E;1102 1165 11BD;B11E;1102 1165 11BD;
+B11F;B11F;1102 1165 11BE;B11F;1102 1165 11BE;
+B120;B120;1102 1165 11BF;B120;1102 1165 11BF;
+B121;B121;1102 1165 11C0;B121;1102 1165 11C0;
+B122;B122;1102 1165 11C1;B122;1102 1165 11C1;
+B123;B123;1102 1165 11C2;B123;1102 1165 11C2;
+B124;B124;1102 1166;B124;1102 1166;
+B125;B125;1102 1166 11A8;B125;1102 1166 11A8;
+B126;B126;1102 1166 11A9;B126;1102 1166 11A9;
+B127;B127;1102 1166 11AA;B127;1102 1166 11AA;
+B128;B128;1102 1166 11AB;B128;1102 1166 11AB;
+B129;B129;1102 1166 11AC;B129;1102 1166 11AC;
+B12A;B12A;1102 1166 11AD;B12A;1102 1166 11AD;
+B12B;B12B;1102 1166 11AE;B12B;1102 1166 11AE;
+B12C;B12C;1102 1166 11AF;B12C;1102 1166 11AF;
+B12D;B12D;1102 1166 11B0;B12D;1102 1166 11B0;
+B12E;B12E;1102 1166 11B1;B12E;1102 1166 11B1;
+B12F;B12F;1102 1166 11B2;B12F;1102 1166 11B2;
+B130;B130;1102 1166 11B3;B130;1102 1166 11B3;
+B131;B131;1102 1166 11B4;B131;1102 1166 11B4;
+B132;B132;1102 1166 11B5;B132;1102 1166 11B5;
+B133;B133;1102 1166 11B6;B133;1102 1166 11B6;
+B134;B134;1102 1166 11B7;B134;1102 1166 11B7;
+B135;B135;1102 1166 11B8;B135;1102 1166 11B8;
+B136;B136;1102 1166 11B9;B136;1102 1166 11B9;
+B137;B137;1102 1166 11BA;B137;1102 1166 11BA;
+B138;B138;1102 1166 11BB;B138;1102 1166 11BB;
+B139;B139;1102 1166 11BC;B139;1102 1166 11BC;
+B13A;B13A;1102 1166 11BD;B13A;1102 1166 11BD;
+B13B;B13B;1102 1166 11BE;B13B;1102 1166 11BE;
+B13C;B13C;1102 1166 11BF;B13C;1102 1166 11BF;
+B13D;B13D;1102 1166 11C0;B13D;1102 1166 11C0;
+B13E;B13E;1102 1166 11C1;B13E;1102 1166 11C1;
+B13F;B13F;1102 1166 11C2;B13F;1102 1166 11C2;
+B140;B140;1102 1167;B140;1102 1167;
+B141;B141;1102 1167 11A8;B141;1102 1167 11A8;
+B142;B142;1102 1167 11A9;B142;1102 1167 11A9;
+B143;B143;1102 1167 11AA;B143;1102 1167 11AA;
+B144;B144;1102 1167 11AB;B144;1102 1167 11AB;
+B145;B145;1102 1167 11AC;B145;1102 1167 11AC;
+B146;B146;1102 1167 11AD;B146;1102 1167 11AD;
+B147;B147;1102 1167 11AE;B147;1102 1167 11AE;
+B148;B148;1102 1167 11AF;B148;1102 1167 11AF;
+B149;B149;1102 1167 11B0;B149;1102 1167 11B0;
+B14A;B14A;1102 1167 11B1;B14A;1102 1167 11B1;
+B14B;B14B;1102 1167 11B2;B14B;1102 1167 11B2;
+B14C;B14C;1102 1167 11B3;B14C;1102 1167 11B3;
+B14D;B14D;1102 1167 11B4;B14D;1102 1167 11B4;
+B14E;B14E;1102 1167 11B5;B14E;1102 1167 11B5;
+B14F;B14F;1102 1167 11B6;B14F;1102 1167 11B6;
+B150;B150;1102 1167 11B7;B150;1102 1167 11B7;
+B151;B151;1102 1167 11B8;B151;1102 1167 11B8;
+B152;B152;1102 1167 11B9;B152;1102 1167 11B9;
+B153;B153;1102 1167 11BA;B153;1102 1167 11BA;
+B154;B154;1102 1167 11BB;B154;1102 1167 11BB;
+B155;B155;1102 1167 11BC;B155;1102 1167 11BC;
+B156;B156;1102 1167 11BD;B156;1102 1167 11BD;
+B157;B157;1102 1167 11BE;B157;1102 1167 11BE;
+B158;B158;1102 1167 11BF;B158;1102 1167 11BF;
+B159;B159;1102 1167 11C0;B159;1102 1167 11C0;
+B15A;B15A;1102 1167 11C1;B15A;1102 1167 11C1;
+B15B;B15B;1102 1167 11C2;B15B;1102 1167 11C2;
+B15C;B15C;1102 1168;B15C;1102 1168;
+B15D;B15D;1102 1168 11A8;B15D;1102 1168 11A8;
+B15E;B15E;1102 1168 11A9;B15E;1102 1168 11A9;
+B15F;B15F;1102 1168 11AA;B15F;1102 1168 11AA;
+B160;B160;1102 1168 11AB;B160;1102 1168 11AB;
+B161;B161;1102 1168 11AC;B161;1102 1168 11AC;
+B162;B162;1102 1168 11AD;B162;1102 1168 11AD;
+B163;B163;1102 1168 11AE;B163;1102 1168 11AE;
+B164;B164;1102 1168 11AF;B164;1102 1168 11AF;
+B165;B165;1102 1168 11B0;B165;1102 1168 11B0;
+B166;B166;1102 1168 11B1;B166;1102 1168 11B1;
+B167;B167;1102 1168 11B2;B167;1102 1168 11B2;
+B168;B168;1102 1168 11B3;B168;1102 1168 11B3;
+B169;B169;1102 1168 11B4;B169;1102 1168 11B4;
+B16A;B16A;1102 1168 11B5;B16A;1102 1168 11B5;
+B16B;B16B;1102 1168 11B6;B16B;1102 1168 11B6;
+B16C;B16C;1102 1168 11B7;B16C;1102 1168 11B7;
+B16D;B16D;1102 1168 11B8;B16D;1102 1168 11B8;
+B16E;B16E;1102 1168 11B9;B16E;1102 1168 11B9;
+B16F;B16F;1102 1168 11BA;B16F;1102 1168 11BA;
+B170;B170;1102 1168 11BB;B170;1102 1168 11BB;
+B171;B171;1102 1168 11BC;B171;1102 1168 11BC;
+B172;B172;1102 1168 11BD;B172;1102 1168 11BD;
+B173;B173;1102 1168 11BE;B173;1102 1168 11BE;
+B174;B174;1102 1168 11BF;B174;1102 1168 11BF;
+B175;B175;1102 1168 11C0;B175;1102 1168 11C0;
+B176;B176;1102 1168 11C1;B176;1102 1168 11C1;
+B177;B177;1102 1168 11C2;B177;1102 1168 11C2;
+B178;B178;1102 1169;B178;1102 1169;
+B179;B179;1102 1169 11A8;B179;1102 1169 11A8;
+B17A;B17A;1102 1169 11A9;B17A;1102 1169 11A9;
+B17B;B17B;1102 1169 11AA;B17B;1102 1169 11AA;
+B17C;B17C;1102 1169 11AB;B17C;1102 1169 11AB;
+B17D;B17D;1102 1169 11AC;B17D;1102 1169 11AC;
+B17E;B17E;1102 1169 11AD;B17E;1102 1169 11AD;
+B17F;B17F;1102 1169 11AE;B17F;1102 1169 11AE;
+B180;B180;1102 1169 11AF;B180;1102 1169 11AF;
+B181;B181;1102 1169 11B0;B181;1102 1169 11B0;
+B182;B182;1102 1169 11B1;B182;1102 1169 11B1;
+B183;B183;1102 1169 11B2;B183;1102 1169 11B2;
+B184;B184;1102 1169 11B3;B184;1102 1169 11B3;
+B185;B185;1102 1169 11B4;B185;1102 1169 11B4;
+B186;B186;1102 1169 11B5;B186;1102 1169 11B5;
+B187;B187;1102 1169 11B6;B187;1102 1169 11B6;
+B188;B188;1102 1169 11B7;B188;1102 1169 11B7;
+B189;B189;1102 1169 11B8;B189;1102 1169 11B8;
+B18A;B18A;1102 1169 11B9;B18A;1102 1169 11B9;
+B18B;B18B;1102 1169 11BA;B18B;1102 1169 11BA;
+B18C;B18C;1102 1169 11BB;B18C;1102 1169 11BB;
+B18D;B18D;1102 1169 11BC;B18D;1102 1169 11BC;
+B18E;B18E;1102 1169 11BD;B18E;1102 1169 11BD;
+B18F;B18F;1102 1169 11BE;B18F;1102 1169 11BE;
+B190;B190;1102 1169 11BF;B190;1102 1169 11BF;
+B191;B191;1102 1169 11C0;B191;1102 1169 11C0;
+B192;B192;1102 1169 11C1;B192;1102 1169 11C1;
+B193;B193;1102 1169 11C2;B193;1102 1169 11C2;
+B194;B194;1102 116A;B194;1102 116A;
+B195;B195;1102 116A 11A8;B195;1102 116A 11A8;
+B196;B196;1102 116A 11A9;B196;1102 116A 11A9;
+B197;B197;1102 116A 11AA;B197;1102 116A 11AA;
+B198;B198;1102 116A 11AB;B198;1102 116A 11AB;
+B199;B199;1102 116A 11AC;B199;1102 116A 11AC;
+B19A;B19A;1102 116A 11AD;B19A;1102 116A 11AD;
+B19B;B19B;1102 116A 11AE;B19B;1102 116A 11AE;
+B19C;B19C;1102 116A 11AF;B19C;1102 116A 11AF;
+B19D;B19D;1102 116A 11B0;B19D;1102 116A 11B0;
+B19E;B19E;1102 116A 11B1;B19E;1102 116A 11B1;
+B19F;B19F;1102 116A 11B2;B19F;1102 116A 11B2;
+B1A0;B1A0;1102 116A 11B3;B1A0;1102 116A 11B3;
+B1A1;B1A1;1102 116A 11B4;B1A1;1102 116A 11B4;
+B1A2;B1A2;1102 116A 11B5;B1A2;1102 116A 11B5;
+B1A3;B1A3;1102 116A 11B6;B1A3;1102 116A 11B6;
+B1A4;B1A4;1102 116A 11B7;B1A4;1102 116A 11B7;
+B1A5;B1A5;1102 116A 11B8;B1A5;1102 116A 11B8;
+B1A6;B1A6;1102 116A 11B9;B1A6;1102 116A 11B9;
+B1A7;B1A7;1102 116A 11BA;B1A7;1102 116A 11BA;
+B1A8;B1A8;1102 116A 11BB;B1A8;1102 116A 11BB;
+B1A9;B1A9;1102 116A 11BC;B1A9;1102 116A 11BC;
+B1AA;B1AA;1102 116A 11BD;B1AA;1102 116A 11BD;
+B1AB;B1AB;1102 116A 11BE;B1AB;1102 116A 11BE;
+B1AC;B1AC;1102 116A 11BF;B1AC;1102 116A 11BF;
+B1AD;B1AD;1102 116A 11C0;B1AD;1102 116A 11C0;
+B1AE;B1AE;1102 116A 11C1;B1AE;1102 116A 11C1;
+B1AF;B1AF;1102 116A 11C2;B1AF;1102 116A 11C2;
+B1B0;B1B0;1102 116B;B1B0;1102 116B;
+B1B1;B1B1;1102 116B 11A8;B1B1;1102 116B 11A8;
+B1B2;B1B2;1102 116B 11A9;B1B2;1102 116B 11A9;
+B1B3;B1B3;1102 116B 11AA;B1B3;1102 116B 11AA;
+B1B4;B1B4;1102 116B 11AB;B1B4;1102 116B 11AB;
+B1B5;B1B5;1102 116B 11AC;B1B5;1102 116B 11AC;
+B1B6;B1B6;1102 116B 11AD;B1B6;1102 116B 11AD;
+B1B7;B1B7;1102 116B 11AE;B1B7;1102 116B 11AE;
+B1B8;B1B8;1102 116B 11AF;B1B8;1102 116B 11AF;
+B1B9;B1B9;1102 116B 11B0;B1B9;1102 116B 11B0;
+B1BA;B1BA;1102 116B 11B1;B1BA;1102 116B 11B1;
+B1BB;B1BB;1102 116B 11B2;B1BB;1102 116B 11B2;
+B1BC;B1BC;1102 116B 11B3;B1BC;1102 116B 11B3;
+B1BD;B1BD;1102 116B 11B4;B1BD;1102 116B 11B4;
+B1BE;B1BE;1102 116B 11B5;B1BE;1102 116B 11B5;
+B1BF;B1BF;1102 116B 11B6;B1BF;1102 116B 11B6;
+B1C0;B1C0;1102 116B 11B7;B1C0;1102 116B 11B7;
+B1C1;B1C1;1102 116B 11B8;B1C1;1102 116B 11B8;
+B1C2;B1C2;1102 116B 11B9;B1C2;1102 116B 11B9;
+B1C3;B1C3;1102 116B 11BA;B1C3;1102 116B 11BA;
+B1C4;B1C4;1102 116B 11BB;B1C4;1102 116B 11BB;
+B1C5;B1C5;1102 116B 11BC;B1C5;1102 116B 11BC;
+B1C6;B1C6;1102 116B 11BD;B1C6;1102 116B 11BD;
+B1C7;B1C7;1102 116B 11BE;B1C7;1102 116B 11BE;
+B1C8;B1C8;1102 116B 11BF;B1C8;1102 116B 11BF;
+B1C9;B1C9;1102 116B 11C0;B1C9;1102 116B 11C0;
+B1CA;B1CA;1102 116B 11C1;B1CA;1102 116B 11C1;
+B1CB;B1CB;1102 116B 11C2;B1CB;1102 116B 11C2;
+B1CC;B1CC;1102 116C;B1CC;1102 116C;
+B1CD;B1CD;1102 116C 11A8;B1CD;1102 116C 11A8;
+B1CE;B1CE;1102 116C 11A9;B1CE;1102 116C 11A9;
+B1CF;B1CF;1102 116C 11AA;B1CF;1102 116C 11AA;
+B1D0;B1D0;1102 116C 11AB;B1D0;1102 116C 11AB;
+B1D1;B1D1;1102 116C 11AC;B1D1;1102 116C 11AC;
+B1D2;B1D2;1102 116C 11AD;B1D2;1102 116C 11AD;
+B1D3;B1D3;1102 116C 11AE;B1D3;1102 116C 11AE;
+B1D4;B1D4;1102 116C 11AF;B1D4;1102 116C 11AF;
+B1D5;B1D5;1102 116C 11B0;B1D5;1102 116C 11B0;
+B1D6;B1D6;1102 116C 11B1;B1D6;1102 116C 11B1;
+B1D7;B1D7;1102 116C 11B2;B1D7;1102 116C 11B2;
+B1D8;B1D8;1102 116C 11B3;B1D8;1102 116C 11B3;
+B1D9;B1D9;1102 116C 11B4;B1D9;1102 116C 11B4;
+B1DA;B1DA;1102 116C 11B5;B1DA;1102 116C 11B5;
+B1DB;B1DB;1102 116C 11B6;B1DB;1102 116C 11B6;
+B1DC;B1DC;1102 116C 11B7;B1DC;1102 116C 11B7;
+B1DD;B1DD;1102 116C 11B8;B1DD;1102 116C 11B8;
+B1DE;B1DE;1102 116C 11B9;B1DE;1102 116C 11B9;
+B1DF;B1DF;1102 116C 11BA;B1DF;1102 116C 11BA;
+B1E0;B1E0;1102 116C 11BB;B1E0;1102 116C 11BB;
+B1E1;B1E1;1102 116C 11BC;B1E1;1102 116C 11BC;
+B1E2;B1E2;1102 116C 11BD;B1E2;1102 116C 11BD;
+B1E3;B1E3;1102 116C 11BE;B1E3;1102 116C 11BE;
+B1E4;B1E4;1102 116C 11BF;B1E4;1102 116C 11BF;
+B1E5;B1E5;1102 116C 11C0;B1E5;1102 116C 11C0;
+B1E6;B1E6;1102 116C 11C1;B1E6;1102 116C 11C1;
+B1E7;B1E7;1102 116C 11C2;B1E7;1102 116C 11C2;
+B1E8;B1E8;1102 116D;B1E8;1102 116D;
+B1E9;B1E9;1102 116D 11A8;B1E9;1102 116D 11A8;
+B1EA;B1EA;1102 116D 11A9;B1EA;1102 116D 11A9;
+B1EB;B1EB;1102 116D 11AA;B1EB;1102 116D 11AA;
+B1EC;B1EC;1102 116D 11AB;B1EC;1102 116D 11AB;
+B1ED;B1ED;1102 116D 11AC;B1ED;1102 116D 11AC;
+B1EE;B1EE;1102 116D 11AD;B1EE;1102 116D 11AD;
+B1EF;B1EF;1102 116D 11AE;B1EF;1102 116D 11AE;
+B1F0;B1F0;1102 116D 11AF;B1F0;1102 116D 11AF;
+B1F1;B1F1;1102 116D 11B0;B1F1;1102 116D 11B0;
+B1F2;B1F2;1102 116D 11B1;B1F2;1102 116D 11B1;
+B1F3;B1F3;1102 116D 11B2;B1F3;1102 116D 11B2;
+B1F4;B1F4;1102 116D 11B3;B1F4;1102 116D 11B3;
+B1F5;B1F5;1102 116D 11B4;B1F5;1102 116D 11B4;
+B1F6;B1F6;1102 116D 11B5;B1F6;1102 116D 11B5;
+B1F7;B1F7;1102 116D 11B6;B1F7;1102 116D 11B6;
+B1F8;B1F8;1102 116D 11B7;B1F8;1102 116D 11B7;
+B1F9;B1F9;1102 116D 11B8;B1F9;1102 116D 11B8;
+B1FA;B1FA;1102 116D 11B9;B1FA;1102 116D 11B9;
+B1FB;B1FB;1102 116D 11BA;B1FB;1102 116D 11BA;
+B1FC;B1FC;1102 116D 11BB;B1FC;1102 116D 11BB;
+B1FD;B1FD;1102 116D 11BC;B1FD;1102 116D 11BC;
+B1FE;B1FE;1102 116D 11BD;B1FE;1102 116D 11BD;
+B1FF;B1FF;1102 116D 11BE;B1FF;1102 116D 11BE;
+B200;B200;1102 116D 11BF;B200;1102 116D 11BF;
+B201;B201;1102 116D 11C0;B201;1102 116D 11C0;
+B202;B202;1102 116D 11C1;B202;1102 116D 11C1;
+B203;B203;1102 116D 11C2;B203;1102 116D 11C2;
+B204;B204;1102 116E;B204;1102 116E;
+B205;B205;1102 116E 11A8;B205;1102 116E 11A8;
+B206;B206;1102 116E 11A9;B206;1102 116E 11A9;
+B207;B207;1102 116E 11AA;B207;1102 116E 11AA;
+B208;B208;1102 116E 11AB;B208;1102 116E 11AB;
+B209;B209;1102 116E 11AC;B209;1102 116E 11AC;
+B20A;B20A;1102 116E 11AD;B20A;1102 116E 11AD;
+B20B;B20B;1102 116E 11AE;B20B;1102 116E 11AE;
+B20C;B20C;1102 116E 11AF;B20C;1102 116E 11AF;
+B20D;B20D;1102 116E 11B0;B20D;1102 116E 11B0;
+B20E;B20E;1102 116E 11B1;B20E;1102 116E 11B1;
+B20F;B20F;1102 116E 11B2;B20F;1102 116E 11B2;
+B210;B210;1102 116E 11B3;B210;1102 116E 11B3;
+B211;B211;1102 116E 11B4;B211;1102 116E 11B4;
+B212;B212;1102 116E 11B5;B212;1102 116E 11B5;
+B213;B213;1102 116E 11B6;B213;1102 116E 11B6;
+B214;B214;1102 116E 11B7;B214;1102 116E 11B7;
+B215;B215;1102 116E 11B8;B215;1102 116E 11B8;
+B216;B216;1102 116E 11B9;B216;1102 116E 11B9;
+B217;B217;1102 116E 11BA;B217;1102 116E 11BA;
+B218;B218;1102 116E 11BB;B218;1102 116E 11BB;
+B219;B219;1102 116E 11BC;B219;1102 116E 11BC;
+B21A;B21A;1102 116E 11BD;B21A;1102 116E 11BD;
+B21B;B21B;1102 116E 11BE;B21B;1102 116E 11BE;
+B21C;B21C;1102 116E 11BF;B21C;1102 116E 11BF;
+B21D;B21D;1102 116E 11C0;B21D;1102 116E 11C0;
+B21E;B21E;1102 116E 11C1;B21E;1102 116E 11C1;
+B21F;B21F;1102 116E 11C2;B21F;1102 116E 11C2;
+B220;B220;1102 116F;B220;1102 116F;
+B221;B221;1102 116F 11A8;B221;1102 116F 11A8;
+B222;B222;1102 116F 11A9;B222;1102 116F 11A9;
+B223;B223;1102 116F 11AA;B223;1102 116F 11AA;
+B224;B224;1102 116F 11AB;B224;1102 116F 11AB;
+B225;B225;1102 116F 11AC;B225;1102 116F 11AC;
+B226;B226;1102 116F 11AD;B226;1102 116F 11AD;
+B227;B227;1102 116F 11AE;B227;1102 116F 11AE;
+B228;B228;1102 116F 11AF;B228;1102 116F 11AF;
+B229;B229;1102 116F 11B0;B229;1102 116F 11B0;
+B22A;B22A;1102 116F 11B1;B22A;1102 116F 11B1;
+B22B;B22B;1102 116F 11B2;B22B;1102 116F 11B2;
+B22C;B22C;1102 116F 11B3;B22C;1102 116F 11B3;
+B22D;B22D;1102 116F 11B4;B22D;1102 116F 11B4;
+B22E;B22E;1102 116F 11B5;B22E;1102 116F 11B5;
+B22F;B22F;1102 116F 11B6;B22F;1102 116F 11B6;
+B230;B230;1102 116F 11B7;B230;1102 116F 11B7;
+B231;B231;1102 116F 11B8;B231;1102 116F 11B8;
+B232;B232;1102 116F 11B9;B232;1102 116F 11B9;
+B233;B233;1102 116F 11BA;B233;1102 116F 11BA;
+B234;B234;1102 116F 11BB;B234;1102 116F 11BB;
+B235;B235;1102 116F 11BC;B235;1102 116F 11BC;
+B236;B236;1102 116F 11BD;B236;1102 116F 11BD;
+B237;B237;1102 116F 11BE;B237;1102 116F 11BE;
+B238;B238;1102 116F 11BF;B238;1102 116F 11BF;
+B239;B239;1102 116F 11C0;B239;1102 116F 11C0;
+B23A;B23A;1102 116F 11C1;B23A;1102 116F 11C1;
+B23B;B23B;1102 116F 11C2;B23B;1102 116F 11C2;
+B23C;B23C;1102 1170;B23C;1102 1170;
+B23D;B23D;1102 1170 11A8;B23D;1102 1170 11A8;
+B23E;B23E;1102 1170 11A9;B23E;1102 1170 11A9;
+B23F;B23F;1102 1170 11AA;B23F;1102 1170 11AA;
+B240;B240;1102 1170 11AB;B240;1102 1170 11AB;
+B241;B241;1102 1170 11AC;B241;1102 1170 11AC;
+B242;B242;1102 1170 11AD;B242;1102 1170 11AD;
+B243;B243;1102 1170 11AE;B243;1102 1170 11AE;
+B244;B244;1102 1170 11AF;B244;1102 1170 11AF;
+B245;B245;1102 1170 11B0;B245;1102 1170 11B0;
+B246;B246;1102 1170 11B1;B246;1102 1170 11B1;
+B247;B247;1102 1170 11B2;B247;1102 1170 11B2;
+B248;B248;1102 1170 11B3;B248;1102 1170 11B3;
+B249;B249;1102 1170 11B4;B249;1102 1170 11B4;
+B24A;B24A;1102 1170 11B5;B24A;1102 1170 11B5;
+B24B;B24B;1102 1170 11B6;B24B;1102 1170 11B6;
+B24C;B24C;1102 1170 11B7;B24C;1102 1170 11B7;
+B24D;B24D;1102 1170 11B8;B24D;1102 1170 11B8;
+B24E;B24E;1102 1170 11B9;B24E;1102 1170 11B9;
+B24F;B24F;1102 1170 11BA;B24F;1102 1170 11BA;
+B250;B250;1102 1170 11BB;B250;1102 1170 11BB;
+B251;B251;1102 1170 11BC;B251;1102 1170 11BC;
+B252;B252;1102 1170 11BD;B252;1102 1170 11BD;
+B253;B253;1102 1170 11BE;B253;1102 1170 11BE;
+B254;B254;1102 1170 11BF;B254;1102 1170 11BF;
+B255;B255;1102 1170 11C0;B255;1102 1170 11C0;
+B256;B256;1102 1170 11C1;B256;1102 1170 11C1;
+B257;B257;1102 1170 11C2;B257;1102 1170 11C2;
+B258;B258;1102 1171;B258;1102 1171;
+B259;B259;1102 1171 11A8;B259;1102 1171 11A8;
+B25A;B25A;1102 1171 11A9;B25A;1102 1171 11A9;
+B25B;B25B;1102 1171 11AA;B25B;1102 1171 11AA;
+B25C;B25C;1102 1171 11AB;B25C;1102 1171 11AB;
+B25D;B25D;1102 1171 11AC;B25D;1102 1171 11AC;
+B25E;B25E;1102 1171 11AD;B25E;1102 1171 11AD;
+B25F;B25F;1102 1171 11AE;B25F;1102 1171 11AE;
+B260;B260;1102 1171 11AF;B260;1102 1171 11AF;
+B261;B261;1102 1171 11B0;B261;1102 1171 11B0;
+B262;B262;1102 1171 11B1;B262;1102 1171 11B1;
+B263;B263;1102 1171 11B2;B263;1102 1171 11B2;
+B264;B264;1102 1171 11B3;B264;1102 1171 11B3;
+B265;B265;1102 1171 11B4;B265;1102 1171 11B4;
+B266;B266;1102 1171 11B5;B266;1102 1171 11B5;
+B267;B267;1102 1171 11B6;B267;1102 1171 11B6;
+B268;B268;1102 1171 11B7;B268;1102 1171 11B7;
+B269;B269;1102 1171 11B8;B269;1102 1171 11B8;
+B26A;B26A;1102 1171 11B9;B26A;1102 1171 11B9;
+B26B;B26B;1102 1171 11BA;B26B;1102 1171 11BA;
+B26C;B26C;1102 1171 11BB;B26C;1102 1171 11BB;
+B26D;B26D;1102 1171 11BC;B26D;1102 1171 11BC;
+B26E;B26E;1102 1171 11BD;B26E;1102 1171 11BD;
+B26F;B26F;1102 1171 11BE;B26F;1102 1171 11BE;
+B270;B270;1102 1171 11BF;B270;1102 1171 11BF;
+B271;B271;1102 1171 11C0;B271;1102 1171 11C0;
+B272;B272;1102 1171 11C1;B272;1102 1171 11C1;
+B273;B273;1102 1171 11C2;B273;1102 1171 11C2;
+B274;B274;1102 1172;B274;1102 1172;
+B275;B275;1102 1172 11A8;B275;1102 1172 11A8;
+B276;B276;1102 1172 11A9;B276;1102 1172 11A9;
+B277;B277;1102 1172 11AA;B277;1102 1172 11AA;
+B278;B278;1102 1172 11AB;B278;1102 1172 11AB;
+B279;B279;1102 1172 11AC;B279;1102 1172 11AC;
+B27A;B27A;1102 1172 11AD;B27A;1102 1172 11AD;
+B27B;B27B;1102 1172 11AE;B27B;1102 1172 11AE;
+B27C;B27C;1102 1172 11AF;B27C;1102 1172 11AF;
+B27D;B27D;1102 1172 11B0;B27D;1102 1172 11B0;
+B27E;B27E;1102 1172 11B1;B27E;1102 1172 11B1;
+B27F;B27F;1102 1172 11B2;B27F;1102 1172 11B2;
+B280;B280;1102 1172 11B3;B280;1102 1172 11B3;
+B281;B281;1102 1172 11B4;B281;1102 1172 11B4;
+B282;B282;1102 1172 11B5;B282;1102 1172 11B5;
+B283;B283;1102 1172 11B6;B283;1102 1172 11B6;
+B284;B284;1102 1172 11B7;B284;1102 1172 11B7;
+B285;B285;1102 1172 11B8;B285;1102 1172 11B8;
+B286;B286;1102 1172 11B9;B286;1102 1172 11B9;
+B287;B287;1102 1172 11BA;B287;1102 1172 11BA;
+B288;B288;1102 1172 11BB;B288;1102 1172 11BB;
+B289;B289;1102 1172 11BC;B289;1102 1172 11BC;
+B28A;B28A;1102 1172 11BD;B28A;1102 1172 11BD;
+B28B;B28B;1102 1172 11BE;B28B;1102 1172 11BE;
+B28C;B28C;1102 1172 11BF;B28C;1102 1172 11BF;
+B28D;B28D;1102 1172 11C0;B28D;1102 1172 11C0;
+B28E;B28E;1102 1172 11C1;B28E;1102 1172 11C1;
+B28F;B28F;1102 1172 11C2;B28F;1102 1172 11C2;
+B290;B290;1102 1173;B290;1102 1173;
+B291;B291;1102 1173 11A8;B291;1102 1173 11A8;
+B292;B292;1102 1173 11A9;B292;1102 1173 11A9;
+B293;B293;1102 1173 11AA;B293;1102 1173 11AA;
+B294;B294;1102 1173 11AB;B294;1102 1173 11AB;
+B295;B295;1102 1173 11AC;B295;1102 1173 11AC;
+B296;B296;1102 1173 11AD;B296;1102 1173 11AD;
+B297;B297;1102 1173 11AE;B297;1102 1173 11AE;
+B298;B298;1102 1173 11AF;B298;1102 1173 11AF;
+B299;B299;1102 1173 11B0;B299;1102 1173 11B0;
+B29A;B29A;1102 1173 11B1;B29A;1102 1173 11B1;
+B29B;B29B;1102 1173 11B2;B29B;1102 1173 11B2;
+B29C;B29C;1102 1173 11B3;B29C;1102 1173 11B3;
+B29D;B29D;1102 1173 11B4;B29D;1102 1173 11B4;
+B29E;B29E;1102 1173 11B5;B29E;1102 1173 11B5;
+B29F;B29F;1102 1173 11B6;B29F;1102 1173 11B6;
+B2A0;B2A0;1102 1173 11B7;B2A0;1102 1173 11B7;
+B2A1;B2A1;1102 1173 11B8;B2A1;1102 1173 11B8;
+B2A2;B2A2;1102 1173 11B9;B2A2;1102 1173 11B9;
+B2A3;B2A3;1102 1173 11BA;B2A3;1102 1173 11BA;
+B2A4;B2A4;1102 1173 11BB;B2A4;1102 1173 11BB;
+B2A5;B2A5;1102 1173 11BC;B2A5;1102 1173 11BC;
+B2A6;B2A6;1102 1173 11BD;B2A6;1102 1173 11BD;
+B2A7;B2A7;1102 1173 11BE;B2A7;1102 1173 11BE;
+B2A8;B2A8;1102 1173 11BF;B2A8;1102 1173 11BF;
+B2A9;B2A9;1102 1173 11C0;B2A9;1102 1173 11C0;
+B2AA;B2AA;1102 1173 11C1;B2AA;1102 1173 11C1;
+B2AB;B2AB;1102 1173 11C2;B2AB;1102 1173 11C2;
+B2AC;B2AC;1102 1174;B2AC;1102 1174;
+B2AD;B2AD;1102 1174 11A8;B2AD;1102 1174 11A8;
+B2AE;B2AE;1102 1174 11A9;B2AE;1102 1174 11A9;
+B2AF;B2AF;1102 1174 11AA;B2AF;1102 1174 11AA;
+B2B0;B2B0;1102 1174 11AB;B2B0;1102 1174 11AB;
+B2B1;B2B1;1102 1174 11AC;B2B1;1102 1174 11AC;
+B2B2;B2B2;1102 1174 11AD;B2B2;1102 1174 11AD;
+B2B3;B2B3;1102 1174 11AE;B2B3;1102 1174 11AE;
+B2B4;B2B4;1102 1174 11AF;B2B4;1102 1174 11AF;
+B2B5;B2B5;1102 1174 11B0;B2B5;1102 1174 11B0;
+B2B6;B2B6;1102 1174 11B1;B2B6;1102 1174 11B1;
+B2B7;B2B7;1102 1174 11B2;B2B7;1102 1174 11B2;
+B2B8;B2B8;1102 1174 11B3;B2B8;1102 1174 11B3;
+B2B9;B2B9;1102 1174 11B4;B2B9;1102 1174 11B4;
+B2BA;B2BA;1102 1174 11B5;B2BA;1102 1174 11B5;
+B2BB;B2BB;1102 1174 11B6;B2BB;1102 1174 11B6;
+B2BC;B2BC;1102 1174 11B7;B2BC;1102 1174 11B7;
+B2BD;B2BD;1102 1174 11B8;B2BD;1102 1174 11B8;
+B2BE;B2BE;1102 1174 11B9;B2BE;1102 1174 11B9;
+B2BF;B2BF;1102 1174 11BA;B2BF;1102 1174 11BA;
+B2C0;B2C0;1102 1174 11BB;B2C0;1102 1174 11BB;
+B2C1;B2C1;1102 1174 11BC;B2C1;1102 1174 11BC;
+B2C2;B2C2;1102 1174 11BD;B2C2;1102 1174 11BD;
+B2C3;B2C3;1102 1174 11BE;B2C3;1102 1174 11BE;
+B2C4;B2C4;1102 1174 11BF;B2C4;1102 1174 11BF;
+B2C5;B2C5;1102 1174 11C0;B2C5;1102 1174 11C0;
+B2C6;B2C6;1102 1174 11C1;B2C6;1102 1174 11C1;
+B2C7;B2C7;1102 1174 11C2;B2C7;1102 1174 11C2;
+B2C8;B2C8;1102 1175;B2C8;1102 1175;
+B2C9;B2C9;1102 1175 11A8;B2C9;1102 1175 11A8;
+B2CA;B2CA;1102 1175 11A9;B2CA;1102 1175 11A9;
+B2CB;B2CB;1102 1175 11AA;B2CB;1102 1175 11AA;
+B2CC;B2CC;1102 1175 11AB;B2CC;1102 1175 11AB;
+B2CD;B2CD;1102 1175 11AC;B2CD;1102 1175 11AC;
+B2CE;B2CE;1102 1175 11AD;B2CE;1102 1175 11AD;
+B2CF;B2CF;1102 1175 11AE;B2CF;1102 1175 11AE;
+B2D0;B2D0;1102 1175 11AF;B2D0;1102 1175 11AF;
+B2D1;B2D1;1102 1175 11B0;B2D1;1102 1175 11B0;
+B2D2;B2D2;1102 1175 11B1;B2D2;1102 1175 11B1;
+B2D3;B2D3;1102 1175 11B2;B2D3;1102 1175 11B2;
+B2D4;B2D4;1102 1175 11B3;B2D4;1102 1175 11B3;
+B2D5;B2D5;1102 1175 11B4;B2D5;1102 1175 11B4;
+B2D6;B2D6;1102 1175 11B5;B2D6;1102 1175 11B5;
+B2D7;B2D7;1102 1175 11B6;B2D7;1102 1175 11B6;
+B2D8;B2D8;1102 1175 11B7;B2D8;1102 1175 11B7;
+B2D9;B2D9;1102 1175 11B8;B2D9;1102 1175 11B8;
+B2DA;B2DA;1102 1175 11B9;B2DA;1102 1175 11B9;
+B2DB;B2DB;1102 1175 11BA;B2DB;1102 1175 11BA;
+B2DC;B2DC;1102 1175 11BB;B2DC;1102 1175 11BB;
+B2DD;B2DD;1102 1175 11BC;B2DD;1102 1175 11BC;
+B2DE;B2DE;1102 1175 11BD;B2DE;1102 1175 11BD;
+B2DF;B2DF;1102 1175 11BE;B2DF;1102 1175 11BE;
+B2E0;B2E0;1102 1175 11BF;B2E0;1102 1175 11BF;
+B2E1;B2E1;1102 1175 11C0;B2E1;1102 1175 11C0;
+B2E2;B2E2;1102 1175 11C1;B2E2;1102 1175 11C1;
+B2E3;B2E3;1102 1175 11C2;B2E3;1102 1175 11C2;
+B2E4;B2E4;1103 1161;B2E4;1103 1161;
+B2E5;B2E5;1103 1161 11A8;B2E5;1103 1161 11A8;
+B2E6;B2E6;1103 1161 11A9;B2E6;1103 1161 11A9;
+B2E7;B2E7;1103 1161 11AA;B2E7;1103 1161 11AA;
+B2E8;B2E8;1103 1161 11AB;B2E8;1103 1161 11AB;
+B2E9;B2E9;1103 1161 11AC;B2E9;1103 1161 11AC;
+B2EA;B2EA;1103 1161 11AD;B2EA;1103 1161 11AD;
+B2EB;B2EB;1103 1161 11AE;B2EB;1103 1161 11AE;
+B2EC;B2EC;1103 1161 11AF;B2EC;1103 1161 11AF;
+B2ED;B2ED;1103 1161 11B0;B2ED;1103 1161 11B0;
+B2EE;B2EE;1103 1161 11B1;B2EE;1103 1161 11B1;
+B2EF;B2EF;1103 1161 11B2;B2EF;1103 1161 11B2;
+B2F0;B2F0;1103 1161 11B3;B2F0;1103 1161 11B3;
+B2F1;B2F1;1103 1161 11B4;B2F1;1103 1161 11B4;
+B2F2;B2F2;1103 1161 11B5;B2F2;1103 1161 11B5;
+B2F3;B2F3;1103 1161 11B6;B2F3;1103 1161 11B6;
+B2F4;B2F4;1103 1161 11B7;B2F4;1103 1161 11B7;
+B2F5;B2F5;1103 1161 11B8;B2F5;1103 1161 11B8;
+B2F6;B2F6;1103 1161 11B9;B2F6;1103 1161 11B9;
+B2F7;B2F7;1103 1161 11BA;B2F7;1103 1161 11BA;
+B2F8;B2F8;1103 1161 11BB;B2F8;1103 1161 11BB;
+B2F9;B2F9;1103 1161 11BC;B2F9;1103 1161 11BC;
+B2FA;B2FA;1103 1161 11BD;B2FA;1103 1161 11BD;
+B2FB;B2FB;1103 1161 11BE;B2FB;1103 1161 11BE;
+B2FC;B2FC;1103 1161 11BF;B2FC;1103 1161 11BF;
+B2FD;B2FD;1103 1161 11C0;B2FD;1103 1161 11C0;
+B2FE;B2FE;1103 1161 11C1;B2FE;1103 1161 11C1;
+B2FF;B2FF;1103 1161 11C2;B2FF;1103 1161 11C2;
+B300;B300;1103 1162;B300;1103 1162;
+B301;B301;1103 1162 11A8;B301;1103 1162 11A8;
+B302;B302;1103 1162 11A9;B302;1103 1162 11A9;
+B303;B303;1103 1162 11AA;B303;1103 1162 11AA;
+B304;B304;1103 1162 11AB;B304;1103 1162 11AB;
+B305;B305;1103 1162 11AC;B305;1103 1162 11AC;
+B306;B306;1103 1162 11AD;B306;1103 1162 11AD;
+B307;B307;1103 1162 11AE;B307;1103 1162 11AE;
+B308;B308;1103 1162 11AF;B308;1103 1162 11AF;
+B309;B309;1103 1162 11B0;B309;1103 1162 11B0;
+B30A;B30A;1103 1162 11B1;B30A;1103 1162 11B1;
+B30B;B30B;1103 1162 11B2;B30B;1103 1162 11B2;
+B30C;B30C;1103 1162 11B3;B30C;1103 1162 11B3;
+B30D;B30D;1103 1162 11B4;B30D;1103 1162 11B4;
+B30E;B30E;1103 1162 11B5;B30E;1103 1162 11B5;
+B30F;B30F;1103 1162 11B6;B30F;1103 1162 11B6;
+B310;B310;1103 1162 11B7;B310;1103 1162 11B7;
+B311;B311;1103 1162 11B8;B311;1103 1162 11B8;
+B312;B312;1103 1162 11B9;B312;1103 1162 11B9;
+B313;B313;1103 1162 11BA;B313;1103 1162 11BA;
+B314;B314;1103 1162 11BB;B314;1103 1162 11BB;
+B315;B315;1103 1162 11BC;B315;1103 1162 11BC;
+B316;B316;1103 1162 11BD;B316;1103 1162 11BD;
+B317;B317;1103 1162 11BE;B317;1103 1162 11BE;
+B318;B318;1103 1162 11BF;B318;1103 1162 11BF;
+B319;B319;1103 1162 11C0;B319;1103 1162 11C0;
+B31A;B31A;1103 1162 11C1;B31A;1103 1162 11C1;
+B31B;B31B;1103 1162 11C2;B31B;1103 1162 11C2;
+B31C;B31C;1103 1163;B31C;1103 1163;
+B31D;B31D;1103 1163 11A8;B31D;1103 1163 11A8;
+B31E;B31E;1103 1163 11A9;B31E;1103 1163 11A9;
+B31F;B31F;1103 1163 11AA;B31F;1103 1163 11AA;
+B320;B320;1103 1163 11AB;B320;1103 1163 11AB;
+B321;B321;1103 1163 11AC;B321;1103 1163 11AC;
+B322;B322;1103 1163 11AD;B322;1103 1163 11AD;
+B323;B323;1103 1163 11AE;B323;1103 1163 11AE;
+B324;B324;1103 1163 11AF;B324;1103 1163 11AF;
+B325;B325;1103 1163 11B0;B325;1103 1163 11B0;
+B326;B326;1103 1163 11B1;B326;1103 1163 11B1;
+B327;B327;1103 1163 11B2;B327;1103 1163 11B2;
+B328;B328;1103 1163 11B3;B328;1103 1163 11B3;
+B329;B329;1103 1163 11B4;B329;1103 1163 11B4;
+B32A;B32A;1103 1163 11B5;B32A;1103 1163 11B5;
+B32B;B32B;1103 1163 11B6;B32B;1103 1163 11B6;
+B32C;B32C;1103 1163 11B7;B32C;1103 1163 11B7;
+B32D;B32D;1103 1163 11B8;B32D;1103 1163 11B8;
+B32E;B32E;1103 1163 11B9;B32E;1103 1163 11B9;
+B32F;B32F;1103 1163 11BA;B32F;1103 1163 11BA;
+B330;B330;1103 1163 11BB;B330;1103 1163 11BB;
+B331;B331;1103 1163 11BC;B331;1103 1163 11BC;
+B332;B332;1103 1163 11BD;B332;1103 1163 11BD;
+B333;B333;1103 1163 11BE;B333;1103 1163 11BE;
+B334;B334;1103 1163 11BF;B334;1103 1163 11BF;
+B335;B335;1103 1163 11C0;B335;1103 1163 11C0;
+B336;B336;1103 1163 11C1;B336;1103 1163 11C1;
+B337;B337;1103 1163 11C2;B337;1103 1163 11C2;
+B338;B338;1103 1164;B338;1103 1164;
+B339;B339;1103 1164 11A8;B339;1103 1164 11A8;
+B33A;B33A;1103 1164 11A9;B33A;1103 1164 11A9;
+B33B;B33B;1103 1164 11AA;B33B;1103 1164 11AA;
+B33C;B33C;1103 1164 11AB;B33C;1103 1164 11AB;
+B33D;B33D;1103 1164 11AC;B33D;1103 1164 11AC;
+B33E;B33E;1103 1164 11AD;B33E;1103 1164 11AD;
+B33F;B33F;1103 1164 11AE;B33F;1103 1164 11AE;
+B340;B340;1103 1164 11AF;B340;1103 1164 11AF;
+B341;B341;1103 1164 11B0;B341;1103 1164 11B0;
+B342;B342;1103 1164 11B1;B342;1103 1164 11B1;
+B343;B343;1103 1164 11B2;B343;1103 1164 11B2;
+B344;B344;1103 1164 11B3;B344;1103 1164 11B3;
+B345;B345;1103 1164 11B4;B345;1103 1164 11B4;
+B346;B346;1103 1164 11B5;B346;1103 1164 11B5;
+B347;B347;1103 1164 11B6;B347;1103 1164 11B6;
+B348;B348;1103 1164 11B7;B348;1103 1164 11B7;
+B349;B349;1103 1164 11B8;B349;1103 1164 11B8;
+B34A;B34A;1103 1164 11B9;B34A;1103 1164 11B9;
+B34B;B34B;1103 1164 11BA;B34B;1103 1164 11BA;
+B34C;B34C;1103 1164 11BB;B34C;1103 1164 11BB;
+B34D;B34D;1103 1164 11BC;B34D;1103 1164 11BC;
+B34E;B34E;1103 1164 11BD;B34E;1103 1164 11BD;
+B34F;B34F;1103 1164 11BE;B34F;1103 1164 11BE;
+B350;B350;1103 1164 11BF;B350;1103 1164 11BF;
+B351;B351;1103 1164 11C0;B351;1103 1164 11C0;
+B352;B352;1103 1164 11C1;B352;1103 1164 11C1;
+B353;B353;1103 1164 11C2;B353;1103 1164 11C2;
+B354;B354;1103 1165;B354;1103 1165;
+B355;B355;1103 1165 11A8;B355;1103 1165 11A8;
+B356;B356;1103 1165 11A9;B356;1103 1165 11A9;
+B357;B357;1103 1165 11AA;B357;1103 1165 11AA;
+B358;B358;1103 1165 11AB;B358;1103 1165 11AB;
+B359;B359;1103 1165 11AC;B359;1103 1165 11AC;
+B35A;B35A;1103 1165 11AD;B35A;1103 1165 11AD;
+B35B;B35B;1103 1165 11AE;B35B;1103 1165 11AE;
+B35C;B35C;1103 1165 11AF;B35C;1103 1165 11AF;
+B35D;B35D;1103 1165 11B0;B35D;1103 1165 11B0;
+B35E;B35E;1103 1165 11B1;B35E;1103 1165 11B1;
+B35F;B35F;1103 1165 11B2;B35F;1103 1165 11B2;
+B360;B360;1103 1165 11B3;B360;1103 1165 11B3;
+B361;B361;1103 1165 11B4;B361;1103 1165 11B4;
+B362;B362;1103 1165 11B5;B362;1103 1165 11B5;
+B363;B363;1103 1165 11B6;B363;1103 1165 11B6;
+B364;B364;1103 1165 11B7;B364;1103 1165 11B7;
+B365;B365;1103 1165 11B8;B365;1103 1165 11B8;
+B366;B366;1103 1165 11B9;B366;1103 1165 11B9;
+B367;B367;1103 1165 11BA;B367;1103 1165 11BA;
+B368;B368;1103 1165 11BB;B368;1103 1165 11BB;
+B369;B369;1103 1165 11BC;B369;1103 1165 11BC;
+B36A;B36A;1103 1165 11BD;B36A;1103 1165 11BD;
+B36B;B36B;1103 1165 11BE;B36B;1103 1165 11BE;
+B36C;B36C;1103 1165 11BF;B36C;1103 1165 11BF;
+B36D;B36D;1103 1165 11C0;B36D;1103 1165 11C0;
+B36E;B36E;1103 1165 11C1;B36E;1103 1165 11C1;
+B36F;B36F;1103 1165 11C2;B36F;1103 1165 11C2;
+B370;B370;1103 1166;B370;1103 1166;
+B371;B371;1103 1166 11A8;B371;1103 1166 11A8;
+B372;B372;1103 1166 11A9;B372;1103 1166 11A9;
+B373;B373;1103 1166 11AA;B373;1103 1166 11AA;
+B374;B374;1103 1166 11AB;B374;1103 1166 11AB;
+B375;B375;1103 1166 11AC;B375;1103 1166 11AC;
+B376;B376;1103 1166 11AD;B376;1103 1166 11AD;
+B377;B377;1103 1166 11AE;B377;1103 1166 11AE;
+B378;B378;1103 1166 11AF;B378;1103 1166 11AF;
+B379;B379;1103 1166 11B0;B379;1103 1166 11B0;
+B37A;B37A;1103 1166 11B1;B37A;1103 1166 11B1;
+B37B;B37B;1103 1166 11B2;B37B;1103 1166 11B2;
+B37C;B37C;1103 1166 11B3;B37C;1103 1166 11B3;
+B37D;B37D;1103 1166 11B4;B37D;1103 1166 11B4;
+B37E;B37E;1103 1166 11B5;B37E;1103 1166 11B5;
+B37F;B37F;1103 1166 11B6;B37F;1103 1166 11B6;
+B380;B380;1103 1166 11B7;B380;1103 1166 11B7;
+B381;B381;1103 1166 11B8;B381;1103 1166 11B8;
+B382;B382;1103 1166 11B9;B382;1103 1166 11B9;
+B383;B383;1103 1166 11BA;B383;1103 1166 11BA;
+B384;B384;1103 1166 11BB;B384;1103 1166 11BB;
+B385;B385;1103 1166 11BC;B385;1103 1166 11BC;
+B386;B386;1103 1166 11BD;B386;1103 1166 11BD;
+B387;B387;1103 1166 11BE;B387;1103 1166 11BE;
+B388;B388;1103 1166 11BF;B388;1103 1166 11BF;
+B389;B389;1103 1166 11C0;B389;1103 1166 11C0;
+B38A;B38A;1103 1166 11C1;B38A;1103 1166 11C1;
+B38B;B38B;1103 1166 11C2;B38B;1103 1166 11C2;
+B38C;B38C;1103 1167;B38C;1103 1167;
+B38D;B38D;1103 1167 11A8;B38D;1103 1167 11A8;
+B38E;B38E;1103 1167 11A9;B38E;1103 1167 11A9;
+B38F;B38F;1103 1167 11AA;B38F;1103 1167 11AA;
+B390;B390;1103 1167 11AB;B390;1103 1167 11AB;
+B391;B391;1103 1167 11AC;B391;1103 1167 11AC;
+B392;B392;1103 1167 11AD;B392;1103 1167 11AD;
+B393;B393;1103 1167 11AE;B393;1103 1167 11AE;
+B394;B394;1103 1167 11AF;B394;1103 1167 11AF;
+B395;B395;1103 1167 11B0;B395;1103 1167 11B0;
+B396;B396;1103 1167 11B1;B396;1103 1167 11B1;
+B397;B397;1103 1167 11B2;B397;1103 1167 11B2;
+B398;B398;1103 1167 11B3;B398;1103 1167 11B3;
+B399;B399;1103 1167 11B4;B399;1103 1167 11B4;
+B39A;B39A;1103 1167 11B5;B39A;1103 1167 11B5;
+B39B;B39B;1103 1167 11B6;B39B;1103 1167 11B6;
+B39C;B39C;1103 1167 11B7;B39C;1103 1167 11B7;
+B39D;B39D;1103 1167 11B8;B39D;1103 1167 11B8;
+B39E;B39E;1103 1167 11B9;B39E;1103 1167 11B9;
+B39F;B39F;1103 1167 11BA;B39F;1103 1167 11BA;
+B3A0;B3A0;1103 1167 11BB;B3A0;1103 1167 11BB;
+B3A1;B3A1;1103 1167 11BC;B3A1;1103 1167 11BC;
+B3A2;B3A2;1103 1167 11BD;B3A2;1103 1167 11BD;
+B3A3;B3A3;1103 1167 11BE;B3A3;1103 1167 11BE;
+B3A4;B3A4;1103 1167 11BF;B3A4;1103 1167 11BF;
+B3A5;B3A5;1103 1167 11C0;B3A5;1103 1167 11C0;
+B3A6;B3A6;1103 1167 11C1;B3A6;1103 1167 11C1;
+B3A7;B3A7;1103 1167 11C2;B3A7;1103 1167 11C2;
+B3A8;B3A8;1103 1168;B3A8;1103 1168;
+B3A9;B3A9;1103 1168 11A8;B3A9;1103 1168 11A8;
+B3AA;B3AA;1103 1168 11A9;B3AA;1103 1168 11A9;
+B3AB;B3AB;1103 1168 11AA;B3AB;1103 1168 11AA;
+B3AC;B3AC;1103 1168 11AB;B3AC;1103 1168 11AB;
+B3AD;B3AD;1103 1168 11AC;B3AD;1103 1168 11AC;
+B3AE;B3AE;1103 1168 11AD;B3AE;1103 1168 11AD;
+B3AF;B3AF;1103 1168 11AE;B3AF;1103 1168 11AE;
+B3B0;B3B0;1103 1168 11AF;B3B0;1103 1168 11AF;
+B3B1;B3B1;1103 1168 11B0;B3B1;1103 1168 11B0;
+B3B2;B3B2;1103 1168 11B1;B3B2;1103 1168 11B1;
+B3B3;B3B3;1103 1168 11B2;B3B3;1103 1168 11B2;
+B3B4;B3B4;1103 1168 11B3;B3B4;1103 1168 11B3;
+B3B5;B3B5;1103 1168 11B4;B3B5;1103 1168 11B4;
+B3B6;B3B6;1103 1168 11B5;B3B6;1103 1168 11B5;
+B3B7;B3B7;1103 1168 11B6;B3B7;1103 1168 11B6;
+B3B8;B3B8;1103 1168 11B7;B3B8;1103 1168 11B7;
+B3B9;B3B9;1103 1168 11B8;B3B9;1103 1168 11B8;
+B3BA;B3BA;1103 1168 11B9;B3BA;1103 1168 11B9;
+B3BB;B3BB;1103 1168 11BA;B3BB;1103 1168 11BA;
+B3BC;B3BC;1103 1168 11BB;B3BC;1103 1168 11BB;
+B3BD;B3BD;1103 1168 11BC;B3BD;1103 1168 11BC;
+B3BE;B3BE;1103 1168 11BD;B3BE;1103 1168 11BD;
+B3BF;B3BF;1103 1168 11BE;B3BF;1103 1168 11BE;
+B3C0;B3C0;1103 1168 11BF;B3C0;1103 1168 11BF;
+B3C1;B3C1;1103 1168 11C0;B3C1;1103 1168 11C0;
+B3C2;B3C2;1103 1168 11C1;B3C2;1103 1168 11C1;
+B3C3;B3C3;1103 1168 11C2;B3C3;1103 1168 11C2;
+B3C4;B3C4;1103 1169;B3C4;1103 1169;
+B3C5;B3C5;1103 1169 11A8;B3C5;1103 1169 11A8;
+B3C6;B3C6;1103 1169 11A9;B3C6;1103 1169 11A9;
+B3C7;B3C7;1103 1169 11AA;B3C7;1103 1169 11AA;
+B3C8;B3C8;1103 1169 11AB;B3C8;1103 1169 11AB;
+B3C9;B3C9;1103 1169 11AC;B3C9;1103 1169 11AC;
+B3CA;B3CA;1103 1169 11AD;B3CA;1103 1169 11AD;
+B3CB;B3CB;1103 1169 11AE;B3CB;1103 1169 11AE;
+B3CC;B3CC;1103 1169 11AF;B3CC;1103 1169 11AF;
+B3CD;B3CD;1103 1169 11B0;B3CD;1103 1169 11B0;
+B3CE;B3CE;1103 1169 11B1;B3CE;1103 1169 11B1;
+B3CF;B3CF;1103 1169 11B2;B3CF;1103 1169 11B2;
+B3D0;B3D0;1103 1169 11B3;B3D0;1103 1169 11B3;
+B3D1;B3D1;1103 1169 11B4;B3D1;1103 1169 11B4;
+B3D2;B3D2;1103 1169 11B5;B3D2;1103 1169 11B5;
+B3D3;B3D3;1103 1169 11B6;B3D3;1103 1169 11B6;
+B3D4;B3D4;1103 1169 11B7;B3D4;1103 1169 11B7;
+B3D5;B3D5;1103 1169 11B8;B3D5;1103 1169 11B8;
+B3D6;B3D6;1103 1169 11B9;B3D6;1103 1169 11B9;
+B3D7;B3D7;1103 1169 11BA;B3D7;1103 1169 11BA;
+B3D8;B3D8;1103 1169 11BB;B3D8;1103 1169 11BB;
+B3D9;B3D9;1103 1169 11BC;B3D9;1103 1169 11BC;
+B3DA;B3DA;1103 1169 11BD;B3DA;1103 1169 11BD;
+B3DB;B3DB;1103 1169 11BE;B3DB;1103 1169 11BE;
+B3DC;B3DC;1103 1169 11BF;B3DC;1103 1169 11BF;
+B3DD;B3DD;1103 1169 11C0;B3DD;1103 1169 11C0;
+B3DE;B3DE;1103 1169 11C1;B3DE;1103 1169 11C1;
+B3DF;B3DF;1103 1169 11C2;B3DF;1103 1169 11C2;
+B3E0;B3E0;1103 116A;B3E0;1103 116A;
+B3E1;B3E1;1103 116A 11A8;B3E1;1103 116A 11A8;
+B3E2;B3E2;1103 116A 11A9;B3E2;1103 116A 11A9;
+B3E3;B3E3;1103 116A 11AA;B3E3;1103 116A 11AA;
+B3E4;B3E4;1103 116A 11AB;B3E4;1103 116A 11AB;
+B3E5;B3E5;1103 116A 11AC;B3E5;1103 116A 11AC;
+B3E6;B3E6;1103 116A 11AD;B3E6;1103 116A 11AD;
+B3E7;B3E7;1103 116A 11AE;B3E7;1103 116A 11AE;
+B3E8;B3E8;1103 116A 11AF;B3E8;1103 116A 11AF;
+B3E9;B3E9;1103 116A 11B0;B3E9;1103 116A 11B0;
+B3EA;B3EA;1103 116A 11B1;B3EA;1103 116A 11B1;
+B3EB;B3EB;1103 116A 11B2;B3EB;1103 116A 11B2;
+B3EC;B3EC;1103 116A 11B3;B3EC;1103 116A 11B3;
+B3ED;B3ED;1103 116A 11B4;B3ED;1103 116A 11B4;
+B3EE;B3EE;1103 116A 11B5;B3EE;1103 116A 11B5;
+B3EF;B3EF;1103 116A 11B6;B3EF;1103 116A 11B6;
+B3F0;B3F0;1103 116A 11B7;B3F0;1103 116A 11B7;
+B3F1;B3F1;1103 116A 11B8;B3F1;1103 116A 11B8;
+B3F2;B3F2;1103 116A 11B9;B3F2;1103 116A 11B9;
+B3F3;B3F3;1103 116A 11BA;B3F3;1103 116A 11BA;
+B3F4;B3F4;1103 116A 11BB;B3F4;1103 116A 11BB;
+B3F5;B3F5;1103 116A 11BC;B3F5;1103 116A 11BC;
+B3F6;B3F6;1103 116A 11BD;B3F6;1103 116A 11BD;
+B3F7;B3F7;1103 116A 11BE;B3F7;1103 116A 11BE;
+B3F8;B3F8;1103 116A 11BF;B3F8;1103 116A 11BF;
+B3F9;B3F9;1103 116A 11C0;B3F9;1103 116A 11C0;
+B3FA;B3FA;1103 116A 11C1;B3FA;1103 116A 11C1;
+B3FB;B3FB;1103 116A 11C2;B3FB;1103 116A 11C2;
+B3FC;B3FC;1103 116B;B3FC;1103 116B;
+B3FD;B3FD;1103 116B 11A8;B3FD;1103 116B 11A8;
+B3FE;B3FE;1103 116B 11A9;B3FE;1103 116B 11A9;
+B3FF;B3FF;1103 116B 11AA;B3FF;1103 116B 11AA;
+B400;B400;1103 116B 11AB;B400;1103 116B 11AB;
+B401;B401;1103 116B 11AC;B401;1103 116B 11AC;
+B402;B402;1103 116B 11AD;B402;1103 116B 11AD;
+B403;B403;1103 116B 11AE;B403;1103 116B 11AE;
+B404;B404;1103 116B 11AF;B404;1103 116B 11AF;
+B405;B405;1103 116B 11B0;B405;1103 116B 11B0;
+B406;B406;1103 116B 11B1;B406;1103 116B 11B1;
+B407;B407;1103 116B 11B2;B407;1103 116B 11B2;
+B408;B408;1103 116B 11B3;B408;1103 116B 11B3;
+B409;B409;1103 116B 11B4;B409;1103 116B 11B4;
+B40A;B40A;1103 116B 11B5;B40A;1103 116B 11B5;
+B40B;B40B;1103 116B 11B6;B40B;1103 116B 11B6;
+B40C;B40C;1103 116B 11B7;B40C;1103 116B 11B7;
+B40D;B40D;1103 116B 11B8;B40D;1103 116B 11B8;
+B40E;B40E;1103 116B 11B9;B40E;1103 116B 11B9;
+B40F;B40F;1103 116B 11BA;B40F;1103 116B 11BA;
+B410;B410;1103 116B 11BB;B410;1103 116B 11BB;
+B411;B411;1103 116B 11BC;B411;1103 116B 11BC;
+B412;B412;1103 116B 11BD;B412;1103 116B 11BD;
+B413;B413;1103 116B 11BE;B413;1103 116B 11BE;
+B414;B414;1103 116B 11BF;B414;1103 116B 11BF;
+B415;B415;1103 116B 11C0;B415;1103 116B 11C0;
+B416;B416;1103 116B 11C1;B416;1103 116B 11C1;
+B417;B417;1103 116B 11C2;B417;1103 116B 11C2;
+B418;B418;1103 116C;B418;1103 116C;
+B419;B419;1103 116C 11A8;B419;1103 116C 11A8;
+B41A;B41A;1103 116C 11A9;B41A;1103 116C 11A9;
+B41B;B41B;1103 116C 11AA;B41B;1103 116C 11AA;
+B41C;B41C;1103 116C 11AB;B41C;1103 116C 11AB;
+B41D;B41D;1103 116C 11AC;B41D;1103 116C 11AC;
+B41E;B41E;1103 116C 11AD;B41E;1103 116C 11AD;
+B41F;B41F;1103 116C 11AE;B41F;1103 116C 11AE;
+B420;B420;1103 116C 11AF;B420;1103 116C 11AF;
+B421;B421;1103 116C 11B0;B421;1103 116C 11B0;
+B422;B422;1103 116C 11B1;B422;1103 116C 11B1;
+B423;B423;1103 116C 11B2;B423;1103 116C 11B2;
+B424;B424;1103 116C 11B3;B424;1103 116C 11B3;
+B425;B425;1103 116C 11B4;B425;1103 116C 11B4;
+B426;B426;1103 116C 11B5;B426;1103 116C 11B5;
+B427;B427;1103 116C 11B6;B427;1103 116C 11B6;
+B428;B428;1103 116C 11B7;B428;1103 116C 11B7;
+B429;B429;1103 116C 11B8;B429;1103 116C 11B8;
+B42A;B42A;1103 116C 11B9;B42A;1103 116C 11B9;
+B42B;B42B;1103 116C 11BA;B42B;1103 116C 11BA;
+B42C;B42C;1103 116C 11BB;B42C;1103 116C 11BB;
+B42D;B42D;1103 116C 11BC;B42D;1103 116C 11BC;
+B42E;B42E;1103 116C 11BD;B42E;1103 116C 11BD;
+B42F;B42F;1103 116C 11BE;B42F;1103 116C 11BE;
+B430;B430;1103 116C 11BF;B430;1103 116C 11BF;
+B431;B431;1103 116C 11C0;B431;1103 116C 11C0;
+B432;B432;1103 116C 11C1;B432;1103 116C 11C1;
+B433;B433;1103 116C 11C2;B433;1103 116C 11C2;
+B434;B434;1103 116D;B434;1103 116D;
+B435;B435;1103 116D 11A8;B435;1103 116D 11A8;
+B436;B436;1103 116D 11A9;B436;1103 116D 11A9;
+B437;B437;1103 116D 11AA;B437;1103 116D 11AA;
+B438;B438;1103 116D 11AB;B438;1103 116D 11AB;
+B439;B439;1103 116D 11AC;B439;1103 116D 11AC;
+B43A;B43A;1103 116D 11AD;B43A;1103 116D 11AD;
+B43B;B43B;1103 116D 11AE;B43B;1103 116D 11AE;
+B43C;B43C;1103 116D 11AF;B43C;1103 116D 11AF;
+B43D;B43D;1103 116D 11B0;B43D;1103 116D 11B0;
+B43E;B43E;1103 116D 11B1;B43E;1103 116D 11B1;
+B43F;B43F;1103 116D 11B2;B43F;1103 116D 11B2;
+B440;B440;1103 116D 11B3;B440;1103 116D 11B3;
+B441;B441;1103 116D 11B4;B441;1103 116D 11B4;
+B442;B442;1103 116D 11B5;B442;1103 116D 11B5;
+B443;B443;1103 116D 11B6;B443;1103 116D 11B6;
+B444;B444;1103 116D 11B7;B444;1103 116D 11B7;
+B445;B445;1103 116D 11B8;B445;1103 116D 11B8;
+B446;B446;1103 116D 11B9;B446;1103 116D 11B9;
+B447;B447;1103 116D 11BA;B447;1103 116D 11BA;
+B448;B448;1103 116D 11BB;B448;1103 116D 11BB;
+B449;B449;1103 116D 11BC;B449;1103 116D 11BC;
+B44A;B44A;1103 116D 11BD;B44A;1103 116D 11BD;
+B44B;B44B;1103 116D 11BE;B44B;1103 116D 11BE;
+B44C;B44C;1103 116D 11BF;B44C;1103 116D 11BF;
+B44D;B44D;1103 116D 11C0;B44D;1103 116D 11C0;
+B44E;B44E;1103 116D 11C1;B44E;1103 116D 11C1;
+B44F;B44F;1103 116D 11C2;B44F;1103 116D 11C2;
+B450;B450;1103 116E;B450;1103 116E;
+B451;B451;1103 116E 11A8;B451;1103 116E 11A8;
+B452;B452;1103 116E 11A9;B452;1103 116E 11A9;
+B453;B453;1103 116E 11AA;B453;1103 116E 11AA;
+B454;B454;1103 116E 11AB;B454;1103 116E 11AB;
+B455;B455;1103 116E 11AC;B455;1103 116E 11AC;
+B456;B456;1103 116E 11AD;B456;1103 116E 11AD;
+B457;B457;1103 116E 11AE;B457;1103 116E 11AE;
+B458;B458;1103 116E 11AF;B458;1103 116E 11AF;
+B459;B459;1103 116E 11B0;B459;1103 116E 11B0;
+B45A;B45A;1103 116E 11B1;B45A;1103 116E 11B1;
+B45B;B45B;1103 116E 11B2;B45B;1103 116E 11B2;
+B45C;B45C;1103 116E 11B3;B45C;1103 116E 11B3;
+B45D;B45D;1103 116E 11B4;B45D;1103 116E 11B4;
+B45E;B45E;1103 116E 11B5;B45E;1103 116E 11B5;
+B45F;B45F;1103 116E 11B6;B45F;1103 116E 11B6;
+B460;B460;1103 116E 11B7;B460;1103 116E 11B7;
+B461;B461;1103 116E 11B8;B461;1103 116E 11B8;
+B462;B462;1103 116E 11B9;B462;1103 116E 11B9;
+B463;B463;1103 116E 11BA;B463;1103 116E 11BA;
+B464;B464;1103 116E 11BB;B464;1103 116E 11BB;
+B465;B465;1103 116E 11BC;B465;1103 116E 11BC;
+B466;B466;1103 116E 11BD;B466;1103 116E 11BD;
+B467;B467;1103 116E 11BE;B467;1103 116E 11BE;
+B468;B468;1103 116E 11BF;B468;1103 116E 11BF;
+B469;B469;1103 116E 11C0;B469;1103 116E 11C0;
+B46A;B46A;1103 116E 11C1;B46A;1103 116E 11C1;
+B46B;B46B;1103 116E 11C2;B46B;1103 116E 11C2;
+B46C;B46C;1103 116F;B46C;1103 116F;
+B46D;B46D;1103 116F 11A8;B46D;1103 116F 11A8;
+B46E;B46E;1103 116F 11A9;B46E;1103 116F 11A9;
+B46F;B46F;1103 116F 11AA;B46F;1103 116F 11AA;
+B470;B470;1103 116F 11AB;B470;1103 116F 11AB;
+B471;B471;1103 116F 11AC;B471;1103 116F 11AC;
+B472;B472;1103 116F 11AD;B472;1103 116F 11AD;
+B473;B473;1103 116F 11AE;B473;1103 116F 11AE;
+B474;B474;1103 116F 11AF;B474;1103 116F 11AF;
+B475;B475;1103 116F 11B0;B475;1103 116F 11B0;
+B476;B476;1103 116F 11B1;B476;1103 116F 11B1;
+B477;B477;1103 116F 11B2;B477;1103 116F 11B2;
+B478;B478;1103 116F 11B3;B478;1103 116F 11B3;
+B479;B479;1103 116F 11B4;B479;1103 116F 11B4;
+B47A;B47A;1103 116F 11B5;B47A;1103 116F 11B5;
+B47B;B47B;1103 116F 11B6;B47B;1103 116F 11B6;
+B47C;B47C;1103 116F 11B7;B47C;1103 116F 11B7;
+B47D;B47D;1103 116F 11B8;B47D;1103 116F 11B8;
+B47E;B47E;1103 116F 11B9;B47E;1103 116F 11B9;
+B47F;B47F;1103 116F 11BA;B47F;1103 116F 11BA;
+B480;B480;1103 116F 11BB;B480;1103 116F 11BB;
+B481;B481;1103 116F 11BC;B481;1103 116F 11BC;
+B482;B482;1103 116F 11BD;B482;1103 116F 11BD;
+B483;B483;1103 116F 11BE;B483;1103 116F 11BE;
+B484;B484;1103 116F 11BF;B484;1103 116F 11BF;
+B485;B485;1103 116F 11C0;B485;1103 116F 11C0;
+B486;B486;1103 116F 11C1;B486;1103 116F 11C1;
+B487;B487;1103 116F 11C2;B487;1103 116F 11C2;
+B488;B488;1103 1170;B488;1103 1170;
+B489;B489;1103 1170 11A8;B489;1103 1170 11A8;
+B48A;B48A;1103 1170 11A9;B48A;1103 1170 11A9;
+B48B;B48B;1103 1170 11AA;B48B;1103 1170 11AA;
+B48C;B48C;1103 1170 11AB;B48C;1103 1170 11AB;
+B48D;B48D;1103 1170 11AC;B48D;1103 1170 11AC;
+B48E;B48E;1103 1170 11AD;B48E;1103 1170 11AD;
+B48F;B48F;1103 1170 11AE;B48F;1103 1170 11AE;
+B490;B490;1103 1170 11AF;B490;1103 1170 11AF;
+B491;B491;1103 1170 11B0;B491;1103 1170 11B0;
+B492;B492;1103 1170 11B1;B492;1103 1170 11B1;
+B493;B493;1103 1170 11B2;B493;1103 1170 11B2;
+B494;B494;1103 1170 11B3;B494;1103 1170 11B3;
+B495;B495;1103 1170 11B4;B495;1103 1170 11B4;
+B496;B496;1103 1170 11B5;B496;1103 1170 11B5;
+B497;B497;1103 1170 11B6;B497;1103 1170 11B6;
+B498;B498;1103 1170 11B7;B498;1103 1170 11B7;
+B499;B499;1103 1170 11B8;B499;1103 1170 11B8;
+B49A;B49A;1103 1170 11B9;B49A;1103 1170 11B9;
+B49B;B49B;1103 1170 11BA;B49B;1103 1170 11BA;
+B49C;B49C;1103 1170 11BB;B49C;1103 1170 11BB;
+B49D;B49D;1103 1170 11BC;B49D;1103 1170 11BC;
+B49E;B49E;1103 1170 11BD;B49E;1103 1170 11BD;
+B49F;B49F;1103 1170 11BE;B49F;1103 1170 11BE;
+B4A0;B4A0;1103 1170 11BF;B4A0;1103 1170 11BF;
+B4A1;B4A1;1103 1170 11C0;B4A1;1103 1170 11C0;
+B4A2;B4A2;1103 1170 11C1;B4A2;1103 1170 11C1;
+B4A3;B4A3;1103 1170 11C2;B4A3;1103 1170 11C2;
+B4A4;B4A4;1103 1171;B4A4;1103 1171;
+B4A5;B4A5;1103 1171 11A8;B4A5;1103 1171 11A8;
+B4A6;B4A6;1103 1171 11A9;B4A6;1103 1171 11A9;
+B4A7;B4A7;1103 1171 11AA;B4A7;1103 1171 11AA;
+B4A8;B4A8;1103 1171 11AB;B4A8;1103 1171 11AB;
+B4A9;B4A9;1103 1171 11AC;B4A9;1103 1171 11AC;
+B4AA;B4AA;1103 1171 11AD;B4AA;1103 1171 11AD;
+B4AB;B4AB;1103 1171 11AE;B4AB;1103 1171 11AE;
+B4AC;B4AC;1103 1171 11AF;B4AC;1103 1171 11AF;
+B4AD;B4AD;1103 1171 11B0;B4AD;1103 1171 11B0;
+B4AE;B4AE;1103 1171 11B1;B4AE;1103 1171 11B1;
+B4AF;B4AF;1103 1171 11B2;B4AF;1103 1171 11B2;
+B4B0;B4B0;1103 1171 11B3;B4B0;1103 1171 11B3;
+B4B1;B4B1;1103 1171 11B4;B4B1;1103 1171 11B4;
+B4B2;B4B2;1103 1171 11B5;B4B2;1103 1171 11B5;
+B4B3;B4B3;1103 1171 11B6;B4B3;1103 1171 11B6;
+B4B4;B4B4;1103 1171 11B7;B4B4;1103 1171 11B7;
+B4B5;B4B5;1103 1171 11B8;B4B5;1103 1171 11B8;
+B4B6;B4B6;1103 1171 11B9;B4B6;1103 1171 11B9;
+B4B7;B4B7;1103 1171 11BA;B4B7;1103 1171 11BA;
+B4B8;B4B8;1103 1171 11BB;B4B8;1103 1171 11BB;
+B4B9;B4B9;1103 1171 11BC;B4B9;1103 1171 11BC;
+B4BA;B4BA;1103 1171 11BD;B4BA;1103 1171 11BD;
+B4BB;B4BB;1103 1171 11BE;B4BB;1103 1171 11BE;
+B4BC;B4BC;1103 1171 11BF;B4BC;1103 1171 11BF;
+B4BD;B4BD;1103 1171 11C0;B4BD;1103 1171 11C0;
+B4BE;B4BE;1103 1171 11C1;B4BE;1103 1171 11C1;
+B4BF;B4BF;1103 1171 11C2;B4BF;1103 1171 11C2;
+B4C0;B4C0;1103 1172;B4C0;1103 1172;
+B4C1;B4C1;1103 1172 11A8;B4C1;1103 1172 11A8;
+B4C2;B4C2;1103 1172 11A9;B4C2;1103 1172 11A9;
+B4C3;B4C3;1103 1172 11AA;B4C3;1103 1172 11AA;
+B4C4;B4C4;1103 1172 11AB;B4C4;1103 1172 11AB;
+B4C5;B4C5;1103 1172 11AC;B4C5;1103 1172 11AC;
+B4C6;B4C6;1103 1172 11AD;B4C6;1103 1172 11AD;
+B4C7;B4C7;1103 1172 11AE;B4C7;1103 1172 11AE;
+B4C8;B4C8;1103 1172 11AF;B4C8;1103 1172 11AF;
+B4C9;B4C9;1103 1172 11B0;B4C9;1103 1172 11B0;
+B4CA;B4CA;1103 1172 11B1;B4CA;1103 1172 11B1;
+B4CB;B4CB;1103 1172 11B2;B4CB;1103 1172 11B2;
+B4CC;B4CC;1103 1172 11B3;B4CC;1103 1172 11B3;
+B4CD;B4CD;1103 1172 11B4;B4CD;1103 1172 11B4;
+B4CE;B4CE;1103 1172 11B5;B4CE;1103 1172 11B5;
+B4CF;B4CF;1103 1172 11B6;B4CF;1103 1172 11B6;
+B4D0;B4D0;1103 1172 11B7;B4D0;1103 1172 11B7;
+B4D1;B4D1;1103 1172 11B8;B4D1;1103 1172 11B8;
+B4D2;B4D2;1103 1172 11B9;B4D2;1103 1172 11B9;
+B4D3;B4D3;1103 1172 11BA;B4D3;1103 1172 11BA;
+B4D4;B4D4;1103 1172 11BB;B4D4;1103 1172 11BB;
+B4D5;B4D5;1103 1172 11BC;B4D5;1103 1172 11BC;
+B4D6;B4D6;1103 1172 11BD;B4D6;1103 1172 11BD;
+B4D7;B4D7;1103 1172 11BE;B4D7;1103 1172 11BE;
+B4D8;B4D8;1103 1172 11BF;B4D8;1103 1172 11BF;
+B4D9;B4D9;1103 1172 11C0;B4D9;1103 1172 11C0;
+B4DA;B4DA;1103 1172 11C1;B4DA;1103 1172 11C1;
+B4DB;B4DB;1103 1172 11C2;B4DB;1103 1172 11C2;
+B4DC;B4DC;1103 1173;B4DC;1103 1173;
+B4DD;B4DD;1103 1173 11A8;B4DD;1103 1173 11A8;
+B4DE;B4DE;1103 1173 11A9;B4DE;1103 1173 11A9;
+B4DF;B4DF;1103 1173 11AA;B4DF;1103 1173 11AA;
+B4E0;B4E0;1103 1173 11AB;B4E0;1103 1173 11AB;
+B4E1;B4E1;1103 1173 11AC;B4E1;1103 1173 11AC;
+B4E2;B4E2;1103 1173 11AD;B4E2;1103 1173 11AD;
+B4E3;B4E3;1103 1173 11AE;B4E3;1103 1173 11AE;
+B4E4;B4E4;1103 1173 11AF;B4E4;1103 1173 11AF;
+B4E5;B4E5;1103 1173 11B0;B4E5;1103 1173 11B0;
+B4E6;B4E6;1103 1173 11B1;B4E6;1103 1173 11B1;
+B4E7;B4E7;1103 1173 11B2;B4E7;1103 1173 11B2;
+B4E8;B4E8;1103 1173 11B3;B4E8;1103 1173 11B3;
+B4E9;B4E9;1103 1173 11B4;B4E9;1103 1173 11B4;
+B4EA;B4EA;1103 1173 11B5;B4EA;1103 1173 11B5;
+B4EB;B4EB;1103 1173 11B6;B4EB;1103 1173 11B6;
+B4EC;B4EC;1103 1173 11B7;B4EC;1103 1173 11B7;
+B4ED;B4ED;1103 1173 11B8;B4ED;1103 1173 11B8;
+B4EE;B4EE;1103 1173 11B9;B4EE;1103 1173 11B9;
+B4EF;B4EF;1103 1173 11BA;B4EF;1103 1173 11BA;
+B4F0;B4F0;1103 1173 11BB;B4F0;1103 1173 11BB;
+B4F1;B4F1;1103 1173 11BC;B4F1;1103 1173 11BC;
+B4F2;B4F2;1103 1173 11BD;B4F2;1103 1173 11BD;
+B4F3;B4F3;1103 1173 11BE;B4F3;1103 1173 11BE;
+B4F4;B4F4;1103 1173 11BF;B4F4;1103 1173 11BF;
+B4F5;B4F5;1103 1173 11C0;B4F5;1103 1173 11C0;
+B4F6;B4F6;1103 1173 11C1;B4F6;1103 1173 11C1;
+B4F7;B4F7;1103 1173 11C2;B4F7;1103 1173 11C2;
+B4F8;B4F8;1103 1174;B4F8;1103 1174;
+B4F9;B4F9;1103 1174 11A8;B4F9;1103 1174 11A8;
+B4FA;B4FA;1103 1174 11A9;B4FA;1103 1174 11A9;
+B4FB;B4FB;1103 1174 11AA;B4FB;1103 1174 11AA;
+B4FC;B4FC;1103 1174 11AB;B4FC;1103 1174 11AB;
+B4FD;B4FD;1103 1174 11AC;B4FD;1103 1174 11AC;
+B4FE;B4FE;1103 1174 11AD;B4FE;1103 1174 11AD;
+B4FF;B4FF;1103 1174 11AE;B4FF;1103 1174 11AE;
+B500;B500;1103 1174 11AF;B500;1103 1174 11AF;
+B501;B501;1103 1174 11B0;B501;1103 1174 11B0;
+B502;B502;1103 1174 11B1;B502;1103 1174 11B1;
+B503;B503;1103 1174 11B2;B503;1103 1174 11B2;
+B504;B504;1103 1174 11B3;B504;1103 1174 11B3;
+B505;B505;1103 1174 11B4;B505;1103 1174 11B4;
+B506;B506;1103 1174 11B5;B506;1103 1174 11B5;
+B507;B507;1103 1174 11B6;B507;1103 1174 11B6;
+B508;B508;1103 1174 11B7;B508;1103 1174 11B7;
+B509;B509;1103 1174 11B8;B509;1103 1174 11B8;
+B50A;B50A;1103 1174 11B9;B50A;1103 1174 11B9;
+B50B;B50B;1103 1174 11BA;B50B;1103 1174 11BA;
+B50C;B50C;1103 1174 11BB;B50C;1103 1174 11BB;
+B50D;B50D;1103 1174 11BC;B50D;1103 1174 11BC;
+B50E;B50E;1103 1174 11BD;B50E;1103 1174 11BD;
+B50F;B50F;1103 1174 11BE;B50F;1103 1174 11BE;
+B510;B510;1103 1174 11BF;B510;1103 1174 11BF;
+B511;B511;1103 1174 11C0;B511;1103 1174 11C0;
+B512;B512;1103 1174 11C1;B512;1103 1174 11C1;
+B513;B513;1103 1174 11C2;B513;1103 1174 11C2;
+B514;B514;1103 1175;B514;1103 1175;
+B515;B515;1103 1175 11A8;B515;1103 1175 11A8;
+B516;B516;1103 1175 11A9;B516;1103 1175 11A9;
+B517;B517;1103 1175 11AA;B517;1103 1175 11AA;
+B518;B518;1103 1175 11AB;B518;1103 1175 11AB;
+B519;B519;1103 1175 11AC;B519;1103 1175 11AC;
+B51A;B51A;1103 1175 11AD;B51A;1103 1175 11AD;
+B51B;B51B;1103 1175 11AE;B51B;1103 1175 11AE;
+B51C;B51C;1103 1175 11AF;B51C;1103 1175 11AF;
+B51D;B51D;1103 1175 11B0;B51D;1103 1175 11B0;
+B51E;B51E;1103 1175 11B1;B51E;1103 1175 11B1;
+B51F;B51F;1103 1175 11B2;B51F;1103 1175 11B2;
+B520;B520;1103 1175 11B3;B520;1103 1175 11B3;
+B521;B521;1103 1175 11B4;B521;1103 1175 11B4;
+B522;B522;1103 1175 11B5;B522;1103 1175 11B5;
+B523;B523;1103 1175 11B6;B523;1103 1175 11B6;
+B524;B524;1103 1175 11B7;B524;1103 1175 11B7;
+B525;B525;1103 1175 11B8;B525;1103 1175 11B8;
+B526;B526;1103 1175 11B9;B526;1103 1175 11B9;
+B527;B527;1103 1175 11BA;B527;1103 1175 11BA;
+B528;B528;1103 1175 11BB;B528;1103 1175 11BB;
+B529;B529;1103 1175 11BC;B529;1103 1175 11BC;
+B52A;B52A;1103 1175 11BD;B52A;1103 1175 11BD;
+B52B;B52B;1103 1175 11BE;B52B;1103 1175 11BE;
+B52C;B52C;1103 1175 11BF;B52C;1103 1175 11BF;
+B52D;B52D;1103 1175 11C0;B52D;1103 1175 11C0;
+B52E;B52E;1103 1175 11C1;B52E;1103 1175 11C1;
+B52F;B52F;1103 1175 11C2;B52F;1103 1175 11C2;
+B530;B530;1104 1161;B530;1104 1161;
+B531;B531;1104 1161 11A8;B531;1104 1161 11A8;
+B532;B532;1104 1161 11A9;B532;1104 1161 11A9;
+B533;B533;1104 1161 11AA;B533;1104 1161 11AA;
+B534;B534;1104 1161 11AB;B534;1104 1161 11AB;
+B535;B535;1104 1161 11AC;B535;1104 1161 11AC;
+B536;B536;1104 1161 11AD;B536;1104 1161 11AD;
+B537;B537;1104 1161 11AE;B537;1104 1161 11AE;
+B538;B538;1104 1161 11AF;B538;1104 1161 11AF;
+B539;B539;1104 1161 11B0;B539;1104 1161 11B0;
+B53A;B53A;1104 1161 11B1;B53A;1104 1161 11B1;
+B53B;B53B;1104 1161 11B2;B53B;1104 1161 11B2;
+B53C;B53C;1104 1161 11B3;B53C;1104 1161 11B3;
+B53D;B53D;1104 1161 11B4;B53D;1104 1161 11B4;
+B53E;B53E;1104 1161 11B5;B53E;1104 1161 11B5;
+B53F;B53F;1104 1161 11B6;B53F;1104 1161 11B6;
+B540;B540;1104 1161 11B7;B540;1104 1161 11B7;
+B541;B541;1104 1161 11B8;B541;1104 1161 11B8;
+B542;B542;1104 1161 11B9;B542;1104 1161 11B9;
+B543;B543;1104 1161 11BA;B543;1104 1161 11BA;
+B544;B544;1104 1161 11BB;B544;1104 1161 11BB;
+B545;B545;1104 1161 11BC;B545;1104 1161 11BC;
+B546;B546;1104 1161 11BD;B546;1104 1161 11BD;
+B547;B547;1104 1161 11BE;B547;1104 1161 11BE;
+B548;B548;1104 1161 11BF;B548;1104 1161 11BF;
+B549;B549;1104 1161 11C0;B549;1104 1161 11C0;
+B54A;B54A;1104 1161 11C1;B54A;1104 1161 11C1;
+B54B;B54B;1104 1161 11C2;B54B;1104 1161 11C2;
+B54C;B54C;1104 1162;B54C;1104 1162;
+B54D;B54D;1104 1162 11A8;B54D;1104 1162 11A8;
+B54E;B54E;1104 1162 11A9;B54E;1104 1162 11A9;
+B54F;B54F;1104 1162 11AA;B54F;1104 1162 11AA;
+B550;B550;1104 1162 11AB;B550;1104 1162 11AB;
+B551;B551;1104 1162 11AC;B551;1104 1162 11AC;
+B552;B552;1104 1162 11AD;B552;1104 1162 11AD;
+B553;B553;1104 1162 11AE;B553;1104 1162 11AE;
+B554;B554;1104 1162 11AF;B554;1104 1162 11AF;
+B555;B555;1104 1162 11B0;B555;1104 1162 11B0;
+B556;B556;1104 1162 11B1;B556;1104 1162 11B1;
+B557;B557;1104 1162 11B2;B557;1104 1162 11B2;
+B558;B558;1104 1162 11B3;B558;1104 1162 11B3;
+B559;B559;1104 1162 11B4;B559;1104 1162 11B4;
+B55A;B55A;1104 1162 11B5;B55A;1104 1162 11B5;
+B55B;B55B;1104 1162 11B6;B55B;1104 1162 11B6;
+B55C;B55C;1104 1162 11B7;B55C;1104 1162 11B7;
+B55D;B55D;1104 1162 11B8;B55D;1104 1162 11B8;
+B55E;B55E;1104 1162 11B9;B55E;1104 1162 11B9;
+B55F;B55F;1104 1162 11BA;B55F;1104 1162 11BA;
+B560;B560;1104 1162 11BB;B560;1104 1162 11BB;
+B561;B561;1104 1162 11BC;B561;1104 1162 11BC;
+B562;B562;1104 1162 11BD;B562;1104 1162 11BD;
+B563;B563;1104 1162 11BE;B563;1104 1162 11BE;
+B564;B564;1104 1162 11BF;B564;1104 1162 11BF;
+B565;B565;1104 1162 11C0;B565;1104 1162 11C0;
+B566;B566;1104 1162 11C1;B566;1104 1162 11C1;
+B567;B567;1104 1162 11C2;B567;1104 1162 11C2;
+B568;B568;1104 1163;B568;1104 1163;
+B569;B569;1104 1163 11A8;B569;1104 1163 11A8;
+B56A;B56A;1104 1163 11A9;B56A;1104 1163 11A9;
+B56B;B56B;1104 1163 11AA;B56B;1104 1163 11AA;
+B56C;B56C;1104 1163 11AB;B56C;1104 1163 11AB;
+B56D;B56D;1104 1163 11AC;B56D;1104 1163 11AC;
+B56E;B56E;1104 1163 11AD;B56E;1104 1163 11AD;
+B56F;B56F;1104 1163 11AE;B56F;1104 1163 11AE;
+B570;B570;1104 1163 11AF;B570;1104 1163 11AF;
+B571;B571;1104 1163 11B0;B571;1104 1163 11B0;
+B572;B572;1104 1163 11B1;B572;1104 1163 11B1;
+B573;B573;1104 1163 11B2;B573;1104 1163 11B2;
+B574;B574;1104 1163 11B3;B574;1104 1163 11B3;
+B575;B575;1104 1163 11B4;B575;1104 1163 11B4;
+B576;B576;1104 1163 11B5;B576;1104 1163 11B5;
+B577;B577;1104 1163 11B6;B577;1104 1163 11B6;
+B578;B578;1104 1163 11B7;B578;1104 1163 11B7;
+B579;B579;1104 1163 11B8;B579;1104 1163 11B8;
+B57A;B57A;1104 1163 11B9;B57A;1104 1163 11B9;
+B57B;B57B;1104 1163 11BA;B57B;1104 1163 11BA;
+B57C;B57C;1104 1163 11BB;B57C;1104 1163 11BB;
+B57D;B57D;1104 1163 11BC;B57D;1104 1163 11BC;
+B57E;B57E;1104 1163 11BD;B57E;1104 1163 11BD;
+B57F;B57F;1104 1163 11BE;B57F;1104 1163 11BE;
+B580;B580;1104 1163 11BF;B580;1104 1163 11BF;
+B581;B581;1104 1163 11C0;B581;1104 1163 11C0;
+B582;B582;1104 1163 11C1;B582;1104 1163 11C1;
+B583;B583;1104 1163 11C2;B583;1104 1163 11C2;
+B584;B584;1104 1164;B584;1104 1164;
+B585;B585;1104 1164 11A8;B585;1104 1164 11A8;
+B586;B586;1104 1164 11A9;B586;1104 1164 11A9;
+B587;B587;1104 1164 11AA;B587;1104 1164 11AA;
+B588;B588;1104 1164 11AB;B588;1104 1164 11AB;
+B589;B589;1104 1164 11AC;B589;1104 1164 11AC;
+B58A;B58A;1104 1164 11AD;B58A;1104 1164 11AD;
+B58B;B58B;1104 1164 11AE;B58B;1104 1164 11AE;
+B58C;B58C;1104 1164 11AF;B58C;1104 1164 11AF;
+B58D;B58D;1104 1164 11B0;B58D;1104 1164 11B0;
+B58E;B58E;1104 1164 11B1;B58E;1104 1164 11B1;
+B58F;B58F;1104 1164 11B2;B58F;1104 1164 11B2;
+B590;B590;1104 1164 11B3;B590;1104 1164 11B3;
+B591;B591;1104 1164 11B4;B591;1104 1164 11B4;
+B592;B592;1104 1164 11B5;B592;1104 1164 11B5;
+B593;B593;1104 1164 11B6;B593;1104 1164 11B6;
+B594;B594;1104 1164 11B7;B594;1104 1164 11B7;
+B595;B595;1104 1164 11B8;B595;1104 1164 11B8;
+B596;B596;1104 1164 11B9;B596;1104 1164 11B9;
+B597;B597;1104 1164 11BA;B597;1104 1164 11BA;
+B598;B598;1104 1164 11BB;B598;1104 1164 11BB;
+B599;B599;1104 1164 11BC;B599;1104 1164 11BC;
+B59A;B59A;1104 1164 11BD;B59A;1104 1164 11BD;
+B59B;B59B;1104 1164 11BE;B59B;1104 1164 11BE;
+B59C;B59C;1104 1164 11BF;B59C;1104 1164 11BF;
+B59D;B59D;1104 1164 11C0;B59D;1104 1164 11C0;
+B59E;B59E;1104 1164 11C1;B59E;1104 1164 11C1;
+B59F;B59F;1104 1164 11C2;B59F;1104 1164 11C2;
+B5A0;B5A0;1104 1165;B5A0;1104 1165;
+B5A1;B5A1;1104 1165 11A8;B5A1;1104 1165 11A8;
+B5A2;B5A2;1104 1165 11A9;B5A2;1104 1165 11A9;
+B5A3;B5A3;1104 1165 11AA;B5A3;1104 1165 11AA;
+B5A4;B5A4;1104 1165 11AB;B5A4;1104 1165 11AB;
+B5A5;B5A5;1104 1165 11AC;B5A5;1104 1165 11AC;
+B5A6;B5A6;1104 1165 11AD;B5A6;1104 1165 11AD;
+B5A7;B5A7;1104 1165 11AE;B5A7;1104 1165 11AE;
+B5A8;B5A8;1104 1165 11AF;B5A8;1104 1165 11AF;
+B5A9;B5A9;1104 1165 11B0;B5A9;1104 1165 11B0;
+B5AA;B5AA;1104 1165 11B1;B5AA;1104 1165 11B1;
+B5AB;B5AB;1104 1165 11B2;B5AB;1104 1165 11B2;
+B5AC;B5AC;1104 1165 11B3;B5AC;1104 1165 11B3;
+B5AD;B5AD;1104 1165 11B4;B5AD;1104 1165 11B4;
+B5AE;B5AE;1104 1165 11B5;B5AE;1104 1165 11B5;
+B5AF;B5AF;1104 1165 11B6;B5AF;1104 1165 11B6;
+B5B0;B5B0;1104 1165 11B7;B5B0;1104 1165 11B7;
+B5B1;B5B1;1104 1165 11B8;B5B1;1104 1165 11B8;
+B5B2;B5B2;1104 1165 11B9;B5B2;1104 1165 11B9;
+B5B3;B5B3;1104 1165 11BA;B5B3;1104 1165 11BA;
+B5B4;B5B4;1104 1165 11BB;B5B4;1104 1165 11BB;
+B5B5;B5B5;1104 1165 11BC;B5B5;1104 1165 11BC;
+B5B6;B5B6;1104 1165 11BD;B5B6;1104 1165 11BD;
+B5B7;B5B7;1104 1165 11BE;B5B7;1104 1165 11BE;
+B5B8;B5B8;1104 1165 11BF;B5B8;1104 1165 11BF;
+B5B9;B5B9;1104 1165 11C0;B5B9;1104 1165 11C0;
+B5BA;B5BA;1104 1165 11C1;B5BA;1104 1165 11C1;
+B5BB;B5BB;1104 1165 11C2;B5BB;1104 1165 11C2;
+B5BC;B5BC;1104 1166;B5BC;1104 1166;
+B5BD;B5BD;1104 1166 11A8;B5BD;1104 1166 11A8;
+B5BE;B5BE;1104 1166 11A9;B5BE;1104 1166 11A9;
+B5BF;B5BF;1104 1166 11AA;B5BF;1104 1166 11AA;
+B5C0;B5C0;1104 1166 11AB;B5C0;1104 1166 11AB;
+B5C1;B5C1;1104 1166 11AC;B5C1;1104 1166 11AC;
+B5C2;B5C2;1104 1166 11AD;B5C2;1104 1166 11AD;
+B5C3;B5C3;1104 1166 11AE;B5C3;1104 1166 11AE;
+B5C4;B5C4;1104 1166 11AF;B5C4;1104 1166 11AF;
+B5C5;B5C5;1104 1166 11B0;B5C5;1104 1166 11B0;
+B5C6;B5C6;1104 1166 11B1;B5C6;1104 1166 11B1;
+B5C7;B5C7;1104 1166 11B2;B5C7;1104 1166 11B2;
+B5C8;B5C8;1104 1166 11B3;B5C8;1104 1166 11B3;
+B5C9;B5C9;1104 1166 11B4;B5C9;1104 1166 11B4;
+B5CA;B5CA;1104 1166 11B5;B5CA;1104 1166 11B5;
+B5CB;B5CB;1104 1166 11B6;B5CB;1104 1166 11B6;
+B5CC;B5CC;1104 1166 11B7;B5CC;1104 1166 11B7;
+B5CD;B5CD;1104 1166 11B8;B5CD;1104 1166 11B8;
+B5CE;B5CE;1104 1166 11B9;B5CE;1104 1166 11B9;
+B5CF;B5CF;1104 1166 11BA;B5CF;1104 1166 11BA;
+B5D0;B5D0;1104 1166 11BB;B5D0;1104 1166 11BB;
+B5D1;B5D1;1104 1166 11BC;B5D1;1104 1166 11BC;
+B5D2;B5D2;1104 1166 11BD;B5D2;1104 1166 11BD;
+B5D3;B5D3;1104 1166 11BE;B5D3;1104 1166 11BE;
+B5D4;B5D4;1104 1166 11BF;B5D4;1104 1166 11BF;
+B5D5;B5D5;1104 1166 11C0;B5D5;1104 1166 11C0;
+B5D6;B5D6;1104 1166 11C1;B5D6;1104 1166 11C1;
+B5D7;B5D7;1104 1166 11C2;B5D7;1104 1166 11C2;
+B5D8;B5D8;1104 1167;B5D8;1104 1167;
+B5D9;B5D9;1104 1167 11A8;B5D9;1104 1167 11A8;
+B5DA;B5DA;1104 1167 11A9;B5DA;1104 1167 11A9;
+B5DB;B5DB;1104 1167 11AA;B5DB;1104 1167 11AA;
+B5DC;B5DC;1104 1167 11AB;B5DC;1104 1167 11AB;
+B5DD;B5DD;1104 1167 11AC;B5DD;1104 1167 11AC;
+B5DE;B5DE;1104 1167 11AD;B5DE;1104 1167 11AD;
+B5DF;B5DF;1104 1167 11AE;B5DF;1104 1167 11AE;
+B5E0;B5E0;1104 1167 11AF;B5E0;1104 1167 11AF;
+B5E1;B5E1;1104 1167 11B0;B5E1;1104 1167 11B0;
+B5E2;B5E2;1104 1167 11B1;B5E2;1104 1167 11B1;
+B5E3;B5E3;1104 1167 11B2;B5E3;1104 1167 11B2;
+B5E4;B5E4;1104 1167 11B3;B5E4;1104 1167 11B3;
+B5E5;B5E5;1104 1167 11B4;B5E5;1104 1167 11B4;
+B5E6;B5E6;1104 1167 11B5;B5E6;1104 1167 11B5;
+B5E7;B5E7;1104 1167 11B6;B5E7;1104 1167 11B6;
+B5E8;B5E8;1104 1167 11B7;B5E8;1104 1167 11B7;
+B5E9;B5E9;1104 1167 11B8;B5E9;1104 1167 11B8;
+B5EA;B5EA;1104 1167 11B9;B5EA;1104 1167 11B9;
+B5EB;B5EB;1104 1167 11BA;B5EB;1104 1167 11BA;
+B5EC;B5EC;1104 1167 11BB;B5EC;1104 1167 11BB;
+B5ED;B5ED;1104 1167 11BC;B5ED;1104 1167 11BC;
+B5EE;B5EE;1104 1167 11BD;B5EE;1104 1167 11BD;
+B5EF;B5EF;1104 1167 11BE;B5EF;1104 1167 11BE;
+B5F0;B5F0;1104 1167 11BF;B5F0;1104 1167 11BF;
+B5F1;B5F1;1104 1167 11C0;B5F1;1104 1167 11C0;
+B5F2;B5F2;1104 1167 11C1;B5F2;1104 1167 11C1;
+B5F3;B5F3;1104 1167 11C2;B5F3;1104 1167 11C2;
+B5F4;B5F4;1104 1168;B5F4;1104 1168;
+B5F5;B5F5;1104 1168 11A8;B5F5;1104 1168 11A8;
+B5F6;B5F6;1104 1168 11A9;B5F6;1104 1168 11A9;
+B5F7;B5F7;1104 1168 11AA;B5F7;1104 1168 11AA;
+B5F8;B5F8;1104 1168 11AB;B5F8;1104 1168 11AB;
+B5F9;B5F9;1104 1168 11AC;B5F9;1104 1168 11AC;
+B5FA;B5FA;1104 1168 11AD;B5FA;1104 1168 11AD;
+B5FB;B5FB;1104 1168 11AE;B5FB;1104 1168 11AE;
+B5FC;B5FC;1104 1168 11AF;B5FC;1104 1168 11AF;
+B5FD;B5FD;1104 1168 11B0;B5FD;1104 1168 11B0;
+B5FE;B5FE;1104 1168 11B1;B5FE;1104 1168 11B1;
+B5FF;B5FF;1104 1168 11B2;B5FF;1104 1168 11B2;
+B600;B600;1104 1168 11B3;B600;1104 1168 11B3;
+B601;B601;1104 1168 11B4;B601;1104 1168 11B4;
+B602;B602;1104 1168 11B5;B602;1104 1168 11B5;
+B603;B603;1104 1168 11B6;B603;1104 1168 11B6;
+B604;B604;1104 1168 11B7;B604;1104 1168 11B7;
+B605;B605;1104 1168 11B8;B605;1104 1168 11B8;
+B606;B606;1104 1168 11B9;B606;1104 1168 11B9;
+B607;B607;1104 1168 11BA;B607;1104 1168 11BA;
+B608;B608;1104 1168 11BB;B608;1104 1168 11BB;
+B609;B609;1104 1168 11BC;B609;1104 1168 11BC;
+B60A;B60A;1104 1168 11BD;B60A;1104 1168 11BD;
+B60B;B60B;1104 1168 11BE;B60B;1104 1168 11BE;
+B60C;B60C;1104 1168 11BF;B60C;1104 1168 11BF;
+B60D;B60D;1104 1168 11C0;B60D;1104 1168 11C0;
+B60E;B60E;1104 1168 11C1;B60E;1104 1168 11C1;
+B60F;B60F;1104 1168 11C2;B60F;1104 1168 11C2;
+B610;B610;1104 1169;B610;1104 1169;
+B611;B611;1104 1169 11A8;B611;1104 1169 11A8;
+B612;B612;1104 1169 11A9;B612;1104 1169 11A9;
+B613;B613;1104 1169 11AA;B613;1104 1169 11AA;
+B614;B614;1104 1169 11AB;B614;1104 1169 11AB;
+B615;B615;1104 1169 11AC;B615;1104 1169 11AC;
+B616;B616;1104 1169 11AD;B616;1104 1169 11AD;
+B617;B617;1104 1169 11AE;B617;1104 1169 11AE;
+B618;B618;1104 1169 11AF;B618;1104 1169 11AF;
+B619;B619;1104 1169 11B0;B619;1104 1169 11B0;
+B61A;B61A;1104 1169 11B1;B61A;1104 1169 11B1;
+B61B;B61B;1104 1169 11B2;B61B;1104 1169 11B2;
+B61C;B61C;1104 1169 11B3;B61C;1104 1169 11B3;
+B61D;B61D;1104 1169 11B4;B61D;1104 1169 11B4;
+B61E;B61E;1104 1169 11B5;B61E;1104 1169 11B5;
+B61F;B61F;1104 1169 11B6;B61F;1104 1169 11B6;
+B620;B620;1104 1169 11B7;B620;1104 1169 11B7;
+B621;B621;1104 1169 11B8;B621;1104 1169 11B8;
+B622;B622;1104 1169 11B9;B622;1104 1169 11B9;
+B623;B623;1104 1169 11BA;B623;1104 1169 11BA;
+B624;B624;1104 1169 11BB;B624;1104 1169 11BB;
+B625;B625;1104 1169 11BC;B625;1104 1169 11BC;
+B626;B626;1104 1169 11BD;B626;1104 1169 11BD;
+B627;B627;1104 1169 11BE;B627;1104 1169 11BE;
+B628;B628;1104 1169 11BF;B628;1104 1169 11BF;
+B629;B629;1104 1169 11C0;B629;1104 1169 11C0;
+B62A;B62A;1104 1169 11C1;B62A;1104 1169 11C1;
+B62B;B62B;1104 1169 11C2;B62B;1104 1169 11C2;
+B62C;B62C;1104 116A;B62C;1104 116A;
+B62D;B62D;1104 116A 11A8;B62D;1104 116A 11A8;
+B62E;B62E;1104 116A 11A9;B62E;1104 116A 11A9;
+B62F;B62F;1104 116A 11AA;B62F;1104 116A 11AA;
+B630;B630;1104 116A 11AB;B630;1104 116A 11AB;
+B631;B631;1104 116A 11AC;B631;1104 116A 11AC;
+B632;B632;1104 116A 11AD;B632;1104 116A 11AD;
+B633;B633;1104 116A 11AE;B633;1104 116A 11AE;
+B634;B634;1104 116A 11AF;B634;1104 116A 11AF;
+B635;B635;1104 116A 11B0;B635;1104 116A 11B0;
+B636;B636;1104 116A 11B1;B636;1104 116A 11B1;
+B637;B637;1104 116A 11B2;B637;1104 116A 11B2;
+B638;B638;1104 116A 11B3;B638;1104 116A 11B3;
+B639;B639;1104 116A 11B4;B639;1104 116A 11B4;
+B63A;B63A;1104 116A 11B5;B63A;1104 116A 11B5;
+B63B;B63B;1104 116A 11B6;B63B;1104 116A 11B6;
+B63C;B63C;1104 116A 11B7;B63C;1104 116A 11B7;
+B63D;B63D;1104 116A 11B8;B63D;1104 116A 11B8;
+B63E;B63E;1104 116A 11B9;B63E;1104 116A 11B9;
+B63F;B63F;1104 116A 11BA;B63F;1104 116A 11BA;
+B640;B640;1104 116A 11BB;B640;1104 116A 11BB;
+B641;B641;1104 116A 11BC;B641;1104 116A 11BC;
+B642;B642;1104 116A 11BD;B642;1104 116A 11BD;
+B643;B643;1104 116A 11BE;B643;1104 116A 11BE;
+B644;B644;1104 116A 11BF;B644;1104 116A 11BF;
+B645;B645;1104 116A 11C0;B645;1104 116A 11C0;
+B646;B646;1104 116A 11C1;B646;1104 116A 11C1;
+B647;B647;1104 116A 11C2;B647;1104 116A 11C2;
+B648;B648;1104 116B;B648;1104 116B;
+B649;B649;1104 116B 11A8;B649;1104 116B 11A8;
+B64A;B64A;1104 116B 11A9;B64A;1104 116B 11A9;
+B64B;B64B;1104 116B 11AA;B64B;1104 116B 11AA;
+B64C;B64C;1104 116B 11AB;B64C;1104 116B 11AB;
+B64D;B64D;1104 116B 11AC;B64D;1104 116B 11AC;
+B64E;B64E;1104 116B 11AD;B64E;1104 116B 11AD;
+B64F;B64F;1104 116B 11AE;B64F;1104 116B 11AE;
+B650;B650;1104 116B 11AF;B650;1104 116B 11AF;
+B651;B651;1104 116B 11B0;B651;1104 116B 11B0;
+B652;B652;1104 116B 11B1;B652;1104 116B 11B1;
+B653;B653;1104 116B 11B2;B653;1104 116B 11B2;
+B654;B654;1104 116B 11B3;B654;1104 116B 11B3;
+B655;B655;1104 116B 11B4;B655;1104 116B 11B4;
+B656;B656;1104 116B 11B5;B656;1104 116B 11B5;
+B657;B657;1104 116B 11B6;B657;1104 116B 11B6;
+B658;B658;1104 116B 11B7;B658;1104 116B 11B7;
+B659;B659;1104 116B 11B8;B659;1104 116B 11B8;
+B65A;B65A;1104 116B 11B9;B65A;1104 116B 11B9;
+B65B;B65B;1104 116B 11BA;B65B;1104 116B 11BA;
+B65C;B65C;1104 116B 11BB;B65C;1104 116B 11BB;
+B65D;B65D;1104 116B 11BC;B65D;1104 116B 11BC;
+B65E;B65E;1104 116B 11BD;B65E;1104 116B 11BD;
+B65F;B65F;1104 116B 11BE;B65F;1104 116B 11BE;
+B660;B660;1104 116B 11BF;B660;1104 116B 11BF;
+B661;B661;1104 116B 11C0;B661;1104 116B 11C0;
+B662;B662;1104 116B 11C1;B662;1104 116B 11C1;
+B663;B663;1104 116B 11C2;B663;1104 116B 11C2;
+B664;B664;1104 116C;B664;1104 116C;
+B665;B665;1104 116C 11A8;B665;1104 116C 11A8;
+B666;B666;1104 116C 11A9;B666;1104 116C 11A9;
+B667;B667;1104 116C 11AA;B667;1104 116C 11AA;
+B668;B668;1104 116C 11AB;B668;1104 116C 11AB;
+B669;B669;1104 116C 11AC;B669;1104 116C 11AC;
+B66A;B66A;1104 116C 11AD;B66A;1104 116C 11AD;
+B66B;B66B;1104 116C 11AE;B66B;1104 116C 11AE;
+B66C;B66C;1104 116C 11AF;B66C;1104 116C 11AF;
+B66D;B66D;1104 116C 11B0;B66D;1104 116C 11B0;
+B66E;B66E;1104 116C 11B1;B66E;1104 116C 11B1;
+B66F;B66F;1104 116C 11B2;B66F;1104 116C 11B2;
+B670;B670;1104 116C 11B3;B670;1104 116C 11B3;
+B671;B671;1104 116C 11B4;B671;1104 116C 11B4;
+B672;B672;1104 116C 11B5;B672;1104 116C 11B5;
+B673;B673;1104 116C 11B6;B673;1104 116C 11B6;
+B674;B674;1104 116C 11B7;B674;1104 116C 11B7;
+B675;B675;1104 116C 11B8;B675;1104 116C 11B8;
+B676;B676;1104 116C 11B9;B676;1104 116C 11B9;
+B677;B677;1104 116C 11BA;B677;1104 116C 11BA;
+B678;B678;1104 116C 11BB;B678;1104 116C 11BB;
+B679;B679;1104 116C 11BC;B679;1104 116C 11BC;
+B67A;B67A;1104 116C 11BD;B67A;1104 116C 11BD;
+B67B;B67B;1104 116C 11BE;B67B;1104 116C 11BE;
+B67C;B67C;1104 116C 11BF;B67C;1104 116C 11BF;
+B67D;B67D;1104 116C 11C0;B67D;1104 116C 11C0;
+B67E;B67E;1104 116C 11C1;B67E;1104 116C 11C1;
+B67F;B67F;1104 116C 11C2;B67F;1104 116C 11C2;
+B680;B680;1104 116D;B680;1104 116D;
+B681;B681;1104 116D 11A8;B681;1104 116D 11A8;
+B682;B682;1104 116D 11A9;B682;1104 116D 11A9;
+B683;B683;1104 116D 11AA;B683;1104 116D 11AA;
+B684;B684;1104 116D 11AB;B684;1104 116D 11AB;
+B685;B685;1104 116D 11AC;B685;1104 116D 11AC;
+B686;B686;1104 116D 11AD;B686;1104 116D 11AD;
+B687;B687;1104 116D 11AE;B687;1104 116D 11AE;
+B688;B688;1104 116D 11AF;B688;1104 116D 11AF;
+B689;B689;1104 116D 11B0;B689;1104 116D 11B0;
+B68A;B68A;1104 116D 11B1;B68A;1104 116D 11B1;
+B68B;B68B;1104 116D 11B2;B68B;1104 116D 11B2;
+B68C;B68C;1104 116D 11B3;B68C;1104 116D 11B3;
+B68D;B68D;1104 116D 11B4;B68D;1104 116D 11B4;
+B68E;B68E;1104 116D 11B5;B68E;1104 116D 11B5;
+B68F;B68F;1104 116D 11B6;B68F;1104 116D 11B6;
+B690;B690;1104 116D 11B7;B690;1104 116D 11B7;
+B691;B691;1104 116D 11B8;B691;1104 116D 11B8;
+B692;B692;1104 116D 11B9;B692;1104 116D 11B9;
+B693;B693;1104 116D 11BA;B693;1104 116D 11BA;
+B694;B694;1104 116D 11BB;B694;1104 116D 11BB;
+B695;B695;1104 116D 11BC;B695;1104 116D 11BC;
+B696;B696;1104 116D 11BD;B696;1104 116D 11BD;
+B697;B697;1104 116D 11BE;B697;1104 116D 11BE;
+B698;B698;1104 116D 11BF;B698;1104 116D 11BF;
+B699;B699;1104 116D 11C0;B699;1104 116D 11C0;
+B69A;B69A;1104 116D 11C1;B69A;1104 116D 11C1;
+B69B;B69B;1104 116D 11C2;B69B;1104 116D 11C2;
+B69C;B69C;1104 116E;B69C;1104 116E;
+B69D;B69D;1104 116E 11A8;B69D;1104 116E 11A8;
+B69E;B69E;1104 116E 11A9;B69E;1104 116E 11A9;
+B69F;B69F;1104 116E 11AA;B69F;1104 116E 11AA;
+B6A0;B6A0;1104 116E 11AB;B6A0;1104 116E 11AB;
+B6A1;B6A1;1104 116E 11AC;B6A1;1104 116E 11AC;
+B6A2;B6A2;1104 116E 11AD;B6A2;1104 116E 11AD;
+B6A3;B6A3;1104 116E 11AE;B6A3;1104 116E 11AE;
+B6A4;B6A4;1104 116E 11AF;B6A4;1104 116E 11AF;
+B6A5;B6A5;1104 116E 11B0;B6A5;1104 116E 11B0;
+B6A6;B6A6;1104 116E 11B1;B6A6;1104 116E 11B1;
+B6A7;B6A7;1104 116E 11B2;B6A7;1104 116E 11B2;
+B6A8;B6A8;1104 116E 11B3;B6A8;1104 116E 11B3;
+B6A9;B6A9;1104 116E 11B4;B6A9;1104 116E 11B4;
+B6AA;B6AA;1104 116E 11B5;B6AA;1104 116E 11B5;
+B6AB;B6AB;1104 116E 11B6;B6AB;1104 116E 11B6;
+B6AC;B6AC;1104 116E 11B7;B6AC;1104 116E 11B7;
+B6AD;B6AD;1104 116E 11B8;B6AD;1104 116E 11B8;
+B6AE;B6AE;1104 116E 11B9;B6AE;1104 116E 11B9;
+B6AF;B6AF;1104 116E 11BA;B6AF;1104 116E 11BA;
+B6B0;B6B0;1104 116E 11BB;B6B0;1104 116E 11BB;
+B6B1;B6B1;1104 116E 11BC;B6B1;1104 116E 11BC;
+B6B2;B6B2;1104 116E 11BD;B6B2;1104 116E 11BD;
+B6B3;B6B3;1104 116E 11BE;B6B3;1104 116E 11BE;
+B6B4;B6B4;1104 116E 11BF;B6B4;1104 116E 11BF;
+B6B5;B6B5;1104 116E 11C0;B6B5;1104 116E 11C0;
+B6B6;B6B6;1104 116E 11C1;B6B6;1104 116E 11C1;
+B6B7;B6B7;1104 116E 11C2;B6B7;1104 116E 11C2;
+B6B8;B6B8;1104 116F;B6B8;1104 116F;
+B6B9;B6B9;1104 116F 11A8;B6B9;1104 116F 11A8;
+B6BA;B6BA;1104 116F 11A9;B6BA;1104 116F 11A9;
+B6BB;B6BB;1104 116F 11AA;B6BB;1104 116F 11AA;
+B6BC;B6BC;1104 116F 11AB;B6BC;1104 116F 11AB;
+B6BD;B6BD;1104 116F 11AC;B6BD;1104 116F 11AC;
+B6BE;B6BE;1104 116F 11AD;B6BE;1104 116F 11AD;
+B6BF;B6BF;1104 116F 11AE;B6BF;1104 116F 11AE;
+B6C0;B6C0;1104 116F 11AF;B6C0;1104 116F 11AF;
+B6C1;B6C1;1104 116F 11B0;B6C1;1104 116F 11B0;
+B6C2;B6C2;1104 116F 11B1;B6C2;1104 116F 11B1;
+B6C3;B6C3;1104 116F 11B2;B6C3;1104 116F 11B2;
+B6C4;B6C4;1104 116F 11B3;B6C4;1104 116F 11B3;
+B6C5;B6C5;1104 116F 11B4;B6C5;1104 116F 11B4;
+B6C6;B6C6;1104 116F 11B5;B6C6;1104 116F 11B5;
+B6C7;B6C7;1104 116F 11B6;B6C7;1104 116F 11B6;
+B6C8;B6C8;1104 116F 11B7;B6C8;1104 116F 11B7;
+B6C9;B6C9;1104 116F 11B8;B6C9;1104 116F 11B8;
+B6CA;B6CA;1104 116F 11B9;B6CA;1104 116F 11B9;
+B6CB;B6CB;1104 116F 11BA;B6CB;1104 116F 11BA;
+B6CC;B6CC;1104 116F 11BB;B6CC;1104 116F 11BB;
+B6CD;B6CD;1104 116F 11BC;B6CD;1104 116F 11BC;
+B6CE;B6CE;1104 116F 11BD;B6CE;1104 116F 11BD;
+B6CF;B6CF;1104 116F 11BE;B6CF;1104 116F 11BE;
+B6D0;B6D0;1104 116F 11BF;B6D0;1104 116F 11BF;
+B6D1;B6D1;1104 116F 11C0;B6D1;1104 116F 11C0;
+B6D2;B6D2;1104 116F 11C1;B6D2;1104 116F 11C1;
+B6D3;B6D3;1104 116F 11C2;B6D3;1104 116F 11C2;
+B6D4;B6D4;1104 1170;B6D4;1104 1170;
+B6D5;B6D5;1104 1170 11A8;B6D5;1104 1170 11A8;
+B6D6;B6D6;1104 1170 11A9;B6D6;1104 1170 11A9;
+B6D7;B6D7;1104 1170 11AA;B6D7;1104 1170 11AA;
+B6D8;B6D8;1104 1170 11AB;B6D8;1104 1170 11AB;
+B6D9;B6D9;1104 1170 11AC;B6D9;1104 1170 11AC;
+B6DA;B6DA;1104 1170 11AD;B6DA;1104 1170 11AD;
+B6DB;B6DB;1104 1170 11AE;B6DB;1104 1170 11AE;
+B6DC;B6DC;1104 1170 11AF;B6DC;1104 1170 11AF;
+B6DD;B6DD;1104 1170 11B0;B6DD;1104 1170 11B0;
+B6DE;B6DE;1104 1170 11B1;B6DE;1104 1170 11B1;
+B6DF;B6DF;1104 1170 11B2;B6DF;1104 1170 11B2;
+B6E0;B6E0;1104 1170 11B3;B6E0;1104 1170 11B3;
+B6E1;B6E1;1104 1170 11B4;B6E1;1104 1170 11B4;
+B6E2;B6E2;1104 1170 11B5;B6E2;1104 1170 11B5;
+B6E3;B6E3;1104 1170 11B6;B6E3;1104 1170 11B6;
+B6E4;B6E4;1104 1170 11B7;B6E4;1104 1170 11B7;
+B6E5;B6E5;1104 1170 11B8;B6E5;1104 1170 11B8;
+B6E6;B6E6;1104 1170 11B9;B6E6;1104 1170 11B9;
+B6E7;B6E7;1104 1170 11BA;B6E7;1104 1170 11BA;
+B6E8;B6E8;1104 1170 11BB;B6E8;1104 1170 11BB;
+B6E9;B6E9;1104 1170 11BC;B6E9;1104 1170 11BC;
+B6EA;B6EA;1104 1170 11BD;B6EA;1104 1170 11BD;
+B6EB;B6EB;1104 1170 11BE;B6EB;1104 1170 11BE;
+B6EC;B6EC;1104 1170 11BF;B6EC;1104 1170 11BF;
+B6ED;B6ED;1104 1170 11C0;B6ED;1104 1170 11C0;
+B6EE;B6EE;1104 1170 11C1;B6EE;1104 1170 11C1;
+B6EF;B6EF;1104 1170 11C2;B6EF;1104 1170 11C2;
+B6F0;B6F0;1104 1171;B6F0;1104 1171;
+B6F1;B6F1;1104 1171 11A8;B6F1;1104 1171 11A8;
+B6F2;B6F2;1104 1171 11A9;B6F2;1104 1171 11A9;
+B6F3;B6F3;1104 1171 11AA;B6F3;1104 1171 11AA;
+B6F4;B6F4;1104 1171 11AB;B6F4;1104 1171 11AB;
+B6F5;B6F5;1104 1171 11AC;B6F5;1104 1171 11AC;
+B6F6;B6F6;1104 1171 11AD;B6F6;1104 1171 11AD;
+B6F7;B6F7;1104 1171 11AE;B6F7;1104 1171 11AE;
+B6F8;B6F8;1104 1171 11AF;B6F8;1104 1171 11AF;
+B6F9;B6F9;1104 1171 11B0;B6F9;1104 1171 11B0;
+B6FA;B6FA;1104 1171 11B1;B6FA;1104 1171 11B1;
+B6FB;B6FB;1104 1171 11B2;B6FB;1104 1171 11B2;
+B6FC;B6FC;1104 1171 11B3;B6FC;1104 1171 11B3;
+B6FD;B6FD;1104 1171 11B4;B6FD;1104 1171 11B4;
+B6FE;B6FE;1104 1171 11B5;B6FE;1104 1171 11B5;
+B6FF;B6FF;1104 1171 11B6;B6FF;1104 1171 11B6;
+B700;B700;1104 1171 11B7;B700;1104 1171 11B7;
+B701;B701;1104 1171 11B8;B701;1104 1171 11B8;
+B702;B702;1104 1171 11B9;B702;1104 1171 11B9;
+B703;B703;1104 1171 11BA;B703;1104 1171 11BA;
+B704;B704;1104 1171 11BB;B704;1104 1171 11BB;
+B705;B705;1104 1171 11BC;B705;1104 1171 11BC;
+B706;B706;1104 1171 11BD;B706;1104 1171 11BD;
+B707;B707;1104 1171 11BE;B707;1104 1171 11BE;
+B708;B708;1104 1171 11BF;B708;1104 1171 11BF;
+B709;B709;1104 1171 11C0;B709;1104 1171 11C0;
+B70A;B70A;1104 1171 11C1;B70A;1104 1171 11C1;
+B70B;B70B;1104 1171 11C2;B70B;1104 1171 11C2;
+B70C;B70C;1104 1172;B70C;1104 1172;
+B70D;B70D;1104 1172 11A8;B70D;1104 1172 11A8;
+B70E;B70E;1104 1172 11A9;B70E;1104 1172 11A9;
+B70F;B70F;1104 1172 11AA;B70F;1104 1172 11AA;
+B710;B710;1104 1172 11AB;B710;1104 1172 11AB;
+B711;B711;1104 1172 11AC;B711;1104 1172 11AC;
+B712;B712;1104 1172 11AD;B712;1104 1172 11AD;
+B713;B713;1104 1172 11AE;B713;1104 1172 11AE;
+B714;B714;1104 1172 11AF;B714;1104 1172 11AF;
+B715;B715;1104 1172 11B0;B715;1104 1172 11B0;
+B716;B716;1104 1172 11B1;B716;1104 1172 11B1;
+B717;B717;1104 1172 11B2;B717;1104 1172 11B2;
+B718;B718;1104 1172 11B3;B718;1104 1172 11B3;
+B719;B719;1104 1172 11B4;B719;1104 1172 11B4;
+B71A;B71A;1104 1172 11B5;B71A;1104 1172 11B5;
+B71B;B71B;1104 1172 11B6;B71B;1104 1172 11B6;
+B71C;B71C;1104 1172 11B7;B71C;1104 1172 11B7;
+B71D;B71D;1104 1172 11B8;B71D;1104 1172 11B8;
+B71E;B71E;1104 1172 11B9;B71E;1104 1172 11B9;
+B71F;B71F;1104 1172 11BA;B71F;1104 1172 11BA;
+B720;B720;1104 1172 11BB;B720;1104 1172 11BB;
+B721;B721;1104 1172 11BC;B721;1104 1172 11BC;
+B722;B722;1104 1172 11BD;B722;1104 1172 11BD;
+B723;B723;1104 1172 11BE;B723;1104 1172 11BE;
+B724;B724;1104 1172 11BF;B724;1104 1172 11BF;
+B725;B725;1104 1172 11C0;B725;1104 1172 11C0;
+B726;B726;1104 1172 11C1;B726;1104 1172 11C1;
+B727;B727;1104 1172 11C2;B727;1104 1172 11C2;
+B728;B728;1104 1173;B728;1104 1173;
+B729;B729;1104 1173 11A8;B729;1104 1173 11A8;
+B72A;B72A;1104 1173 11A9;B72A;1104 1173 11A9;
+B72B;B72B;1104 1173 11AA;B72B;1104 1173 11AA;
+B72C;B72C;1104 1173 11AB;B72C;1104 1173 11AB;
+B72D;B72D;1104 1173 11AC;B72D;1104 1173 11AC;
+B72E;B72E;1104 1173 11AD;B72E;1104 1173 11AD;
+B72F;B72F;1104 1173 11AE;B72F;1104 1173 11AE;
+B730;B730;1104 1173 11AF;B730;1104 1173 11AF;
+B731;B731;1104 1173 11B0;B731;1104 1173 11B0;
+B732;B732;1104 1173 11B1;B732;1104 1173 11B1;
+B733;B733;1104 1173 11B2;B733;1104 1173 11B2;
+B734;B734;1104 1173 11B3;B734;1104 1173 11B3;
+B735;B735;1104 1173 11B4;B735;1104 1173 11B4;
+B736;B736;1104 1173 11B5;B736;1104 1173 11B5;
+B737;B737;1104 1173 11B6;B737;1104 1173 11B6;
+B738;B738;1104 1173 11B7;B738;1104 1173 11B7;
+B739;B739;1104 1173 11B8;B739;1104 1173 11B8;
+B73A;B73A;1104 1173 11B9;B73A;1104 1173 11B9;
+B73B;B73B;1104 1173 11BA;B73B;1104 1173 11BA;
+B73C;B73C;1104 1173 11BB;B73C;1104 1173 11BB;
+B73D;B73D;1104 1173 11BC;B73D;1104 1173 11BC;
+B73E;B73E;1104 1173 11BD;B73E;1104 1173 11BD;
+B73F;B73F;1104 1173 11BE;B73F;1104 1173 11BE;
+B740;B740;1104 1173 11BF;B740;1104 1173 11BF;
+B741;B741;1104 1173 11C0;B741;1104 1173 11C0;
+B742;B742;1104 1173 11C1;B742;1104 1173 11C1;
+B743;B743;1104 1173 11C2;B743;1104 1173 11C2;
+B744;B744;1104 1174;B744;1104 1174;
+B745;B745;1104 1174 11A8;B745;1104 1174 11A8;
+B746;B746;1104 1174 11A9;B746;1104 1174 11A9;
+B747;B747;1104 1174 11AA;B747;1104 1174 11AA;
+B748;B748;1104 1174 11AB;B748;1104 1174 11AB;
+B749;B749;1104 1174 11AC;B749;1104 1174 11AC;
+B74A;B74A;1104 1174 11AD;B74A;1104 1174 11AD;
+B74B;B74B;1104 1174 11AE;B74B;1104 1174 11AE;
+B74C;B74C;1104 1174 11AF;B74C;1104 1174 11AF;
+B74D;B74D;1104 1174 11B0;B74D;1104 1174 11B0;
+B74E;B74E;1104 1174 11B1;B74E;1104 1174 11B1;
+B74F;B74F;1104 1174 11B2;B74F;1104 1174 11B2;
+B750;B750;1104 1174 11B3;B750;1104 1174 11B3;
+B751;B751;1104 1174 11B4;B751;1104 1174 11B4;
+B752;B752;1104 1174 11B5;B752;1104 1174 11B5;
+B753;B753;1104 1174 11B6;B753;1104 1174 11B6;
+B754;B754;1104 1174 11B7;B754;1104 1174 11B7;
+B755;B755;1104 1174 11B8;B755;1104 1174 11B8;
+B756;B756;1104 1174 11B9;B756;1104 1174 11B9;
+B757;B757;1104 1174 11BA;B757;1104 1174 11BA;
+B758;B758;1104 1174 11BB;B758;1104 1174 11BB;
+B759;B759;1104 1174 11BC;B759;1104 1174 11BC;
+B75A;B75A;1104 1174 11BD;B75A;1104 1174 11BD;
+B75B;B75B;1104 1174 11BE;B75B;1104 1174 11BE;
+B75C;B75C;1104 1174 11BF;B75C;1104 1174 11BF;
+B75D;B75D;1104 1174 11C0;B75D;1104 1174 11C0;
+B75E;B75E;1104 1174 11C1;B75E;1104 1174 11C1;
+B75F;B75F;1104 1174 11C2;B75F;1104 1174 11C2;
+B760;B760;1104 1175;B760;1104 1175;
+B761;B761;1104 1175 11A8;B761;1104 1175 11A8;
+B762;B762;1104 1175 11A9;B762;1104 1175 11A9;
+B763;B763;1104 1175 11AA;B763;1104 1175 11AA;
+B764;B764;1104 1175 11AB;B764;1104 1175 11AB;
+B765;B765;1104 1175 11AC;B765;1104 1175 11AC;
+B766;B766;1104 1175 11AD;B766;1104 1175 11AD;
+B767;B767;1104 1175 11AE;B767;1104 1175 11AE;
+B768;B768;1104 1175 11AF;B768;1104 1175 11AF;
+B769;B769;1104 1175 11B0;B769;1104 1175 11B0;
+B76A;B76A;1104 1175 11B1;B76A;1104 1175 11B1;
+B76B;B76B;1104 1175 11B2;B76B;1104 1175 11B2;
+B76C;B76C;1104 1175 11B3;B76C;1104 1175 11B3;
+B76D;B76D;1104 1175 11B4;B76D;1104 1175 11B4;
+B76E;B76E;1104 1175 11B5;B76E;1104 1175 11B5;
+B76F;B76F;1104 1175 11B6;B76F;1104 1175 11B6;
+B770;B770;1104 1175 11B7;B770;1104 1175 11B7;
+B771;B771;1104 1175 11B8;B771;1104 1175 11B8;
+B772;B772;1104 1175 11B9;B772;1104 1175 11B9;
+B773;B773;1104 1175 11BA;B773;1104 1175 11BA;
+B774;B774;1104 1175 11BB;B774;1104 1175 11BB;
+B775;B775;1104 1175 11BC;B775;1104 1175 11BC;
+B776;B776;1104 1175 11BD;B776;1104 1175 11BD;
+B777;B777;1104 1175 11BE;B777;1104 1175 11BE;
+B778;B778;1104 1175 11BF;B778;1104 1175 11BF;
+B779;B779;1104 1175 11C0;B779;1104 1175 11C0;
+B77A;B77A;1104 1175 11C1;B77A;1104 1175 11C1;
+B77B;B77B;1104 1175 11C2;B77B;1104 1175 11C2;
+B77C;B77C;1105 1161;B77C;1105 1161;
+B77D;B77D;1105 1161 11A8;B77D;1105 1161 11A8;
+B77E;B77E;1105 1161 11A9;B77E;1105 1161 11A9;
+B77F;B77F;1105 1161 11AA;B77F;1105 1161 11AA;
+B780;B780;1105 1161 11AB;B780;1105 1161 11AB;
+B781;B781;1105 1161 11AC;B781;1105 1161 11AC;
+B782;B782;1105 1161 11AD;B782;1105 1161 11AD;
+B783;B783;1105 1161 11AE;B783;1105 1161 11AE;
+B784;B784;1105 1161 11AF;B784;1105 1161 11AF;
+B785;B785;1105 1161 11B0;B785;1105 1161 11B0;
+B786;B786;1105 1161 11B1;B786;1105 1161 11B1;
+B787;B787;1105 1161 11B2;B787;1105 1161 11B2;
+B788;B788;1105 1161 11B3;B788;1105 1161 11B3;
+B789;B789;1105 1161 11B4;B789;1105 1161 11B4;
+B78A;B78A;1105 1161 11B5;B78A;1105 1161 11B5;
+B78B;B78B;1105 1161 11B6;B78B;1105 1161 11B6;
+B78C;B78C;1105 1161 11B7;B78C;1105 1161 11B7;
+B78D;B78D;1105 1161 11B8;B78D;1105 1161 11B8;
+B78E;B78E;1105 1161 11B9;B78E;1105 1161 11B9;
+B78F;B78F;1105 1161 11BA;B78F;1105 1161 11BA;
+B790;B790;1105 1161 11BB;B790;1105 1161 11BB;
+B791;B791;1105 1161 11BC;B791;1105 1161 11BC;
+B792;B792;1105 1161 11BD;B792;1105 1161 11BD;
+B793;B793;1105 1161 11BE;B793;1105 1161 11BE;
+B794;B794;1105 1161 11BF;B794;1105 1161 11BF;
+B795;B795;1105 1161 11C0;B795;1105 1161 11C0;
+B796;B796;1105 1161 11C1;B796;1105 1161 11C1;
+B797;B797;1105 1161 11C2;B797;1105 1161 11C2;
+B798;B798;1105 1162;B798;1105 1162;
+B799;B799;1105 1162 11A8;B799;1105 1162 11A8;
+B79A;B79A;1105 1162 11A9;B79A;1105 1162 11A9;
+B79B;B79B;1105 1162 11AA;B79B;1105 1162 11AA;
+B79C;B79C;1105 1162 11AB;B79C;1105 1162 11AB;
+B79D;B79D;1105 1162 11AC;B79D;1105 1162 11AC;
+B79E;B79E;1105 1162 11AD;B79E;1105 1162 11AD;
+B79F;B79F;1105 1162 11AE;B79F;1105 1162 11AE;
+B7A0;B7A0;1105 1162 11AF;B7A0;1105 1162 11AF;
+B7A1;B7A1;1105 1162 11B0;B7A1;1105 1162 11B0;
+B7A2;B7A2;1105 1162 11B1;B7A2;1105 1162 11B1;
+B7A3;B7A3;1105 1162 11B2;B7A3;1105 1162 11B2;
+B7A4;B7A4;1105 1162 11B3;B7A4;1105 1162 11B3;
+B7A5;B7A5;1105 1162 11B4;B7A5;1105 1162 11B4;
+B7A6;B7A6;1105 1162 11B5;B7A6;1105 1162 11B5;
+B7A7;B7A7;1105 1162 11B6;B7A7;1105 1162 11B6;
+B7A8;B7A8;1105 1162 11B7;B7A8;1105 1162 11B7;
+B7A9;B7A9;1105 1162 11B8;B7A9;1105 1162 11B8;
+B7AA;B7AA;1105 1162 11B9;B7AA;1105 1162 11B9;
+B7AB;B7AB;1105 1162 11BA;B7AB;1105 1162 11BA;
+B7AC;B7AC;1105 1162 11BB;B7AC;1105 1162 11BB;
+B7AD;B7AD;1105 1162 11BC;B7AD;1105 1162 11BC;
+B7AE;B7AE;1105 1162 11BD;B7AE;1105 1162 11BD;
+B7AF;B7AF;1105 1162 11BE;B7AF;1105 1162 11BE;
+B7B0;B7B0;1105 1162 11BF;B7B0;1105 1162 11BF;
+B7B1;B7B1;1105 1162 11C0;B7B1;1105 1162 11C0;
+B7B2;B7B2;1105 1162 11C1;B7B2;1105 1162 11C1;
+B7B3;B7B3;1105 1162 11C2;B7B3;1105 1162 11C2;
+B7B4;B7B4;1105 1163;B7B4;1105 1163;
+B7B5;B7B5;1105 1163 11A8;B7B5;1105 1163 11A8;
+B7B6;B7B6;1105 1163 11A9;B7B6;1105 1163 11A9;
+B7B7;B7B7;1105 1163 11AA;B7B7;1105 1163 11AA;
+B7B8;B7B8;1105 1163 11AB;B7B8;1105 1163 11AB;
+B7B9;B7B9;1105 1163 11AC;B7B9;1105 1163 11AC;
+B7BA;B7BA;1105 1163 11AD;B7BA;1105 1163 11AD;
+B7BB;B7BB;1105 1163 11AE;B7BB;1105 1163 11AE;
+B7BC;B7BC;1105 1163 11AF;B7BC;1105 1163 11AF;
+B7BD;B7BD;1105 1163 11B0;B7BD;1105 1163 11B0;
+B7BE;B7BE;1105 1163 11B1;B7BE;1105 1163 11B1;
+B7BF;B7BF;1105 1163 11B2;B7BF;1105 1163 11B2;
+B7C0;B7C0;1105 1163 11B3;B7C0;1105 1163 11B3;
+B7C1;B7C1;1105 1163 11B4;B7C1;1105 1163 11B4;
+B7C2;B7C2;1105 1163 11B5;B7C2;1105 1163 11B5;
+B7C3;B7C3;1105 1163 11B6;B7C3;1105 1163 11B6;
+B7C4;B7C4;1105 1163 11B7;B7C4;1105 1163 11B7;
+B7C5;B7C5;1105 1163 11B8;B7C5;1105 1163 11B8;
+B7C6;B7C6;1105 1163 11B9;B7C6;1105 1163 11B9;
+B7C7;B7C7;1105 1163 11BA;B7C7;1105 1163 11BA;
+B7C8;B7C8;1105 1163 11BB;B7C8;1105 1163 11BB;
+B7C9;B7C9;1105 1163 11BC;B7C9;1105 1163 11BC;
+B7CA;B7CA;1105 1163 11BD;B7CA;1105 1163 11BD;
+B7CB;B7CB;1105 1163 11BE;B7CB;1105 1163 11BE;
+B7CC;B7CC;1105 1163 11BF;B7CC;1105 1163 11BF;
+B7CD;B7CD;1105 1163 11C0;B7CD;1105 1163 11C0;
+B7CE;B7CE;1105 1163 11C1;B7CE;1105 1163 11C1;
+B7CF;B7CF;1105 1163 11C2;B7CF;1105 1163 11C2;
+B7D0;B7D0;1105 1164;B7D0;1105 1164;
+B7D1;B7D1;1105 1164 11A8;B7D1;1105 1164 11A8;
+B7D2;B7D2;1105 1164 11A9;B7D2;1105 1164 11A9;
+B7D3;B7D3;1105 1164 11AA;B7D3;1105 1164 11AA;
+B7D4;B7D4;1105 1164 11AB;B7D4;1105 1164 11AB;
+B7D5;B7D5;1105 1164 11AC;B7D5;1105 1164 11AC;
+B7D6;B7D6;1105 1164 11AD;B7D6;1105 1164 11AD;
+B7D7;B7D7;1105 1164 11AE;B7D7;1105 1164 11AE;
+B7D8;B7D8;1105 1164 11AF;B7D8;1105 1164 11AF;
+B7D9;B7D9;1105 1164 11B0;B7D9;1105 1164 11B0;
+B7DA;B7DA;1105 1164 11B1;B7DA;1105 1164 11B1;
+B7DB;B7DB;1105 1164 11B2;B7DB;1105 1164 11B2;
+B7DC;B7DC;1105 1164 11B3;B7DC;1105 1164 11B3;
+B7DD;B7DD;1105 1164 11B4;B7DD;1105 1164 11B4;
+B7DE;B7DE;1105 1164 11B5;B7DE;1105 1164 11B5;
+B7DF;B7DF;1105 1164 11B6;B7DF;1105 1164 11B6;
+B7E0;B7E0;1105 1164 11B7;B7E0;1105 1164 11B7;
+B7E1;B7E1;1105 1164 11B8;B7E1;1105 1164 11B8;
+B7E2;B7E2;1105 1164 11B9;B7E2;1105 1164 11B9;
+B7E3;B7E3;1105 1164 11BA;B7E3;1105 1164 11BA;
+B7E4;B7E4;1105 1164 11BB;B7E4;1105 1164 11BB;
+B7E5;B7E5;1105 1164 11BC;B7E5;1105 1164 11BC;
+B7E6;B7E6;1105 1164 11BD;B7E6;1105 1164 11BD;
+B7E7;B7E7;1105 1164 11BE;B7E7;1105 1164 11BE;
+B7E8;B7E8;1105 1164 11BF;B7E8;1105 1164 11BF;
+B7E9;B7E9;1105 1164 11C0;B7E9;1105 1164 11C0;
+B7EA;B7EA;1105 1164 11C1;B7EA;1105 1164 11C1;
+B7EB;B7EB;1105 1164 11C2;B7EB;1105 1164 11C2;
+B7EC;B7EC;1105 1165;B7EC;1105 1165;
+B7ED;B7ED;1105 1165 11A8;B7ED;1105 1165 11A8;
+B7EE;B7EE;1105 1165 11A9;B7EE;1105 1165 11A9;
+B7EF;B7EF;1105 1165 11AA;B7EF;1105 1165 11AA;
+B7F0;B7F0;1105 1165 11AB;B7F0;1105 1165 11AB;
+B7F1;B7F1;1105 1165 11AC;B7F1;1105 1165 11AC;
+B7F2;B7F2;1105 1165 11AD;B7F2;1105 1165 11AD;
+B7F3;B7F3;1105 1165 11AE;B7F3;1105 1165 11AE;
+B7F4;B7F4;1105 1165 11AF;B7F4;1105 1165 11AF;
+B7F5;B7F5;1105 1165 11B0;B7F5;1105 1165 11B0;
+B7F6;B7F6;1105 1165 11B1;B7F6;1105 1165 11B1;
+B7F7;B7F7;1105 1165 11B2;B7F7;1105 1165 11B2;
+B7F8;B7F8;1105 1165 11B3;B7F8;1105 1165 11B3;
+B7F9;B7F9;1105 1165 11B4;B7F9;1105 1165 11B4;
+B7FA;B7FA;1105 1165 11B5;B7FA;1105 1165 11B5;
+B7FB;B7FB;1105 1165 11B6;B7FB;1105 1165 11B6;
+B7FC;B7FC;1105 1165 11B7;B7FC;1105 1165 11B7;
+B7FD;B7FD;1105 1165 11B8;B7FD;1105 1165 11B8;
+B7FE;B7FE;1105 1165 11B9;B7FE;1105 1165 11B9;
+B7FF;B7FF;1105 1165 11BA;B7FF;1105 1165 11BA;
+B800;B800;1105 1165 11BB;B800;1105 1165 11BB;
+B801;B801;1105 1165 11BC;B801;1105 1165 11BC;
+B802;B802;1105 1165 11BD;B802;1105 1165 11BD;
+B803;B803;1105 1165 11BE;B803;1105 1165 11BE;
+B804;B804;1105 1165 11BF;B804;1105 1165 11BF;
+B805;B805;1105 1165 11C0;B805;1105 1165 11C0;
+B806;B806;1105 1165 11C1;B806;1105 1165 11C1;
+B807;B807;1105 1165 11C2;B807;1105 1165 11C2;
+B808;B808;1105 1166;B808;1105 1166;
+B809;B809;1105 1166 11A8;B809;1105 1166 11A8;
+B80A;B80A;1105 1166 11A9;B80A;1105 1166 11A9;
+B80B;B80B;1105 1166 11AA;B80B;1105 1166 11AA;
+B80C;B80C;1105 1166 11AB;B80C;1105 1166 11AB;
+B80D;B80D;1105 1166 11AC;B80D;1105 1166 11AC;
+B80E;B80E;1105 1166 11AD;B80E;1105 1166 11AD;
+B80F;B80F;1105 1166 11AE;B80F;1105 1166 11AE;
+B810;B810;1105 1166 11AF;B810;1105 1166 11AF;
+B811;B811;1105 1166 11B0;B811;1105 1166 11B0;
+B812;B812;1105 1166 11B1;B812;1105 1166 11B1;
+B813;B813;1105 1166 11B2;B813;1105 1166 11B2;
+B814;B814;1105 1166 11B3;B814;1105 1166 11B3;
+B815;B815;1105 1166 11B4;B815;1105 1166 11B4;
+B816;B816;1105 1166 11B5;B816;1105 1166 11B5;
+B817;B817;1105 1166 11B6;B817;1105 1166 11B6;
+B818;B818;1105 1166 11B7;B818;1105 1166 11B7;
+B819;B819;1105 1166 11B8;B819;1105 1166 11B8;
+B81A;B81A;1105 1166 11B9;B81A;1105 1166 11B9;
+B81B;B81B;1105 1166 11BA;B81B;1105 1166 11BA;
+B81C;B81C;1105 1166 11BB;B81C;1105 1166 11BB;
+B81D;B81D;1105 1166 11BC;B81D;1105 1166 11BC;
+B81E;B81E;1105 1166 11BD;B81E;1105 1166 11BD;
+B81F;B81F;1105 1166 11BE;B81F;1105 1166 11BE;
+B820;B820;1105 1166 11BF;B820;1105 1166 11BF;
+B821;B821;1105 1166 11C0;B821;1105 1166 11C0;
+B822;B822;1105 1166 11C1;B822;1105 1166 11C1;
+B823;B823;1105 1166 11C2;B823;1105 1166 11C2;
+B824;B824;1105 1167;B824;1105 1167;
+B825;B825;1105 1167 11A8;B825;1105 1167 11A8;
+B826;B826;1105 1167 11A9;B826;1105 1167 11A9;
+B827;B827;1105 1167 11AA;B827;1105 1167 11AA;
+B828;B828;1105 1167 11AB;B828;1105 1167 11AB;
+B829;B829;1105 1167 11AC;B829;1105 1167 11AC;
+B82A;B82A;1105 1167 11AD;B82A;1105 1167 11AD;
+B82B;B82B;1105 1167 11AE;B82B;1105 1167 11AE;
+B82C;B82C;1105 1167 11AF;B82C;1105 1167 11AF;
+B82D;B82D;1105 1167 11B0;B82D;1105 1167 11B0;
+B82E;B82E;1105 1167 11B1;B82E;1105 1167 11B1;
+B82F;B82F;1105 1167 11B2;B82F;1105 1167 11B2;
+B830;B830;1105 1167 11B3;B830;1105 1167 11B3;
+B831;B831;1105 1167 11B4;B831;1105 1167 11B4;
+B832;B832;1105 1167 11B5;B832;1105 1167 11B5;
+B833;B833;1105 1167 11B6;B833;1105 1167 11B6;
+B834;B834;1105 1167 11B7;B834;1105 1167 11B7;
+B835;B835;1105 1167 11B8;B835;1105 1167 11B8;
+B836;B836;1105 1167 11B9;B836;1105 1167 11B9;
+B837;B837;1105 1167 11BA;B837;1105 1167 11BA;
+B838;B838;1105 1167 11BB;B838;1105 1167 11BB;
+B839;B839;1105 1167 11BC;B839;1105 1167 11BC;
+B83A;B83A;1105 1167 11BD;B83A;1105 1167 11BD;
+B83B;B83B;1105 1167 11BE;B83B;1105 1167 11BE;
+B83C;B83C;1105 1167 11BF;B83C;1105 1167 11BF;
+B83D;B83D;1105 1167 11C0;B83D;1105 1167 11C0;
+B83E;B83E;1105 1167 11C1;B83E;1105 1167 11C1;
+B83F;B83F;1105 1167 11C2;B83F;1105 1167 11C2;
+B840;B840;1105 1168;B840;1105 1168;
+B841;B841;1105 1168 11A8;B841;1105 1168 11A8;
+B842;B842;1105 1168 11A9;B842;1105 1168 11A9;
+B843;B843;1105 1168 11AA;B843;1105 1168 11AA;
+B844;B844;1105 1168 11AB;B844;1105 1168 11AB;
+B845;B845;1105 1168 11AC;B845;1105 1168 11AC;
+B846;B846;1105 1168 11AD;B846;1105 1168 11AD;
+B847;B847;1105 1168 11AE;B847;1105 1168 11AE;
+B848;B848;1105 1168 11AF;B848;1105 1168 11AF;
+B849;B849;1105 1168 11B0;B849;1105 1168 11B0;
+B84A;B84A;1105 1168 11B1;B84A;1105 1168 11B1;
+B84B;B84B;1105 1168 11B2;B84B;1105 1168 11B2;
+B84C;B84C;1105 1168 11B3;B84C;1105 1168 11B3;
+B84D;B84D;1105 1168 11B4;B84D;1105 1168 11B4;
+B84E;B84E;1105 1168 11B5;B84E;1105 1168 11B5;
+B84F;B84F;1105 1168 11B6;B84F;1105 1168 11B6;
+B850;B850;1105 1168 11B7;B850;1105 1168 11B7;
+B851;B851;1105 1168 11B8;B851;1105 1168 11B8;
+B852;B852;1105 1168 11B9;B852;1105 1168 11B9;
+B853;B853;1105 1168 11BA;B853;1105 1168 11BA;
+B854;B854;1105 1168 11BB;B854;1105 1168 11BB;
+B855;B855;1105 1168 11BC;B855;1105 1168 11BC;
+B856;B856;1105 1168 11BD;B856;1105 1168 11BD;
+B857;B857;1105 1168 11BE;B857;1105 1168 11BE;
+B858;B858;1105 1168 11BF;B858;1105 1168 11BF;
+B859;B859;1105 1168 11C0;B859;1105 1168 11C0;
+B85A;B85A;1105 1168 11C1;B85A;1105 1168 11C1;
+B85B;B85B;1105 1168 11C2;B85B;1105 1168 11C2;
+B85C;B85C;1105 1169;B85C;1105 1169;
+B85D;B85D;1105 1169 11A8;B85D;1105 1169 11A8;
+B85E;B85E;1105 1169 11A9;B85E;1105 1169 11A9;
+B85F;B85F;1105 1169 11AA;B85F;1105 1169 11AA;
+B860;B860;1105 1169 11AB;B860;1105 1169 11AB;
+B861;B861;1105 1169 11AC;B861;1105 1169 11AC;
+B862;B862;1105 1169 11AD;B862;1105 1169 11AD;
+B863;B863;1105 1169 11AE;B863;1105 1169 11AE;
+B864;B864;1105 1169 11AF;B864;1105 1169 11AF;
+B865;B865;1105 1169 11B0;B865;1105 1169 11B0;
+B866;B866;1105 1169 11B1;B866;1105 1169 11B1;
+B867;B867;1105 1169 11B2;B867;1105 1169 11B2;
+B868;B868;1105 1169 11B3;B868;1105 1169 11B3;
+B869;B869;1105 1169 11B4;B869;1105 1169 11B4;
+B86A;B86A;1105 1169 11B5;B86A;1105 1169 11B5;
+B86B;B86B;1105 1169 11B6;B86B;1105 1169 11B6;
+B86C;B86C;1105 1169 11B7;B86C;1105 1169 11B7;
+B86D;B86D;1105 1169 11B8;B86D;1105 1169 11B8;
+B86E;B86E;1105 1169 11B9;B86E;1105 1169 11B9;
+B86F;B86F;1105 1169 11BA;B86F;1105 1169 11BA;
+B870;B870;1105 1169 11BB;B870;1105 1169 11BB;
+B871;B871;1105 1169 11BC;B871;1105 1169 11BC;
+B872;B872;1105 1169 11BD;B872;1105 1169 11BD;
+B873;B873;1105 1169 11BE;B873;1105 1169 11BE;
+B874;B874;1105 1169 11BF;B874;1105 1169 11BF;
+B875;B875;1105 1169 11C0;B875;1105 1169 11C0;
+B876;B876;1105 1169 11C1;B876;1105 1169 11C1;
+B877;B877;1105 1169 11C2;B877;1105 1169 11C2;
+B878;B878;1105 116A;B878;1105 116A;
+B879;B879;1105 116A 11A8;B879;1105 116A 11A8;
+B87A;B87A;1105 116A 11A9;B87A;1105 116A 11A9;
+B87B;B87B;1105 116A 11AA;B87B;1105 116A 11AA;
+B87C;B87C;1105 116A 11AB;B87C;1105 116A 11AB;
+B87D;B87D;1105 116A 11AC;B87D;1105 116A 11AC;
+B87E;B87E;1105 116A 11AD;B87E;1105 116A 11AD;
+B87F;B87F;1105 116A 11AE;B87F;1105 116A 11AE;
+B880;B880;1105 116A 11AF;B880;1105 116A 11AF;
+B881;B881;1105 116A 11B0;B881;1105 116A 11B0;
+B882;B882;1105 116A 11B1;B882;1105 116A 11B1;
+B883;B883;1105 116A 11B2;B883;1105 116A 11B2;
+B884;B884;1105 116A 11B3;B884;1105 116A 11B3;
+B885;B885;1105 116A 11B4;B885;1105 116A 11B4;
+B886;B886;1105 116A 11B5;B886;1105 116A 11B5;
+B887;B887;1105 116A 11B6;B887;1105 116A 11B6;
+B888;B888;1105 116A 11B7;B888;1105 116A 11B7;
+B889;B889;1105 116A 11B8;B889;1105 116A 11B8;
+B88A;B88A;1105 116A 11B9;B88A;1105 116A 11B9;
+B88B;B88B;1105 116A 11BA;B88B;1105 116A 11BA;
+B88C;B88C;1105 116A 11BB;B88C;1105 116A 11BB;
+B88D;B88D;1105 116A 11BC;B88D;1105 116A 11BC;
+B88E;B88E;1105 116A 11BD;B88E;1105 116A 11BD;
+B88F;B88F;1105 116A 11BE;B88F;1105 116A 11BE;
+B890;B890;1105 116A 11BF;B890;1105 116A 11BF;
+B891;B891;1105 116A 11C0;B891;1105 116A 11C0;
+B892;B892;1105 116A 11C1;B892;1105 116A 11C1;
+B893;B893;1105 116A 11C2;B893;1105 116A 11C2;
+B894;B894;1105 116B;B894;1105 116B;
+B895;B895;1105 116B 11A8;B895;1105 116B 11A8;
+B896;B896;1105 116B 11A9;B896;1105 116B 11A9;
+B897;B897;1105 116B 11AA;B897;1105 116B 11AA;
+B898;B898;1105 116B 11AB;B898;1105 116B 11AB;
+B899;B899;1105 116B 11AC;B899;1105 116B 11AC;
+B89A;B89A;1105 116B 11AD;B89A;1105 116B 11AD;
+B89B;B89B;1105 116B 11AE;B89B;1105 116B 11AE;
+B89C;B89C;1105 116B 11AF;B89C;1105 116B 11AF;
+B89D;B89D;1105 116B 11B0;B89D;1105 116B 11B0;
+B89E;B89E;1105 116B 11B1;B89E;1105 116B 11B1;
+B89F;B89F;1105 116B 11B2;B89F;1105 116B 11B2;
+B8A0;B8A0;1105 116B 11B3;B8A0;1105 116B 11B3;
+B8A1;B8A1;1105 116B 11B4;B8A1;1105 116B 11B4;
+B8A2;B8A2;1105 116B 11B5;B8A2;1105 116B 11B5;
+B8A3;B8A3;1105 116B 11B6;B8A3;1105 116B 11B6;
+B8A4;B8A4;1105 116B 11B7;B8A4;1105 116B 11B7;
+B8A5;B8A5;1105 116B 11B8;B8A5;1105 116B 11B8;
+B8A6;B8A6;1105 116B 11B9;B8A6;1105 116B 11B9;
+B8A7;B8A7;1105 116B 11BA;B8A7;1105 116B 11BA;
+B8A8;B8A8;1105 116B 11BB;B8A8;1105 116B 11BB;
+B8A9;B8A9;1105 116B 11BC;B8A9;1105 116B 11BC;
+B8AA;B8AA;1105 116B 11BD;B8AA;1105 116B 11BD;
+B8AB;B8AB;1105 116B 11BE;B8AB;1105 116B 11BE;
+B8AC;B8AC;1105 116B 11BF;B8AC;1105 116B 11BF;
+B8AD;B8AD;1105 116B 11C0;B8AD;1105 116B 11C0;
+B8AE;B8AE;1105 116B 11C1;B8AE;1105 116B 11C1;
+B8AF;B8AF;1105 116B 11C2;B8AF;1105 116B 11C2;
+B8B0;B8B0;1105 116C;B8B0;1105 116C;
+B8B1;B8B1;1105 116C 11A8;B8B1;1105 116C 11A8;
+B8B2;B8B2;1105 116C 11A9;B8B2;1105 116C 11A9;
+B8B3;B8B3;1105 116C 11AA;B8B3;1105 116C 11AA;
+B8B4;B8B4;1105 116C 11AB;B8B4;1105 116C 11AB;
+B8B5;B8B5;1105 116C 11AC;B8B5;1105 116C 11AC;
+B8B6;B8B6;1105 116C 11AD;B8B6;1105 116C 11AD;
+B8B7;B8B7;1105 116C 11AE;B8B7;1105 116C 11AE;
+B8B8;B8B8;1105 116C 11AF;B8B8;1105 116C 11AF;
+B8B9;B8B9;1105 116C 11B0;B8B9;1105 116C 11B0;
+B8BA;B8BA;1105 116C 11B1;B8BA;1105 116C 11B1;
+B8BB;B8BB;1105 116C 11B2;B8BB;1105 116C 11B2;
+B8BC;B8BC;1105 116C 11B3;B8BC;1105 116C 11B3;
+B8BD;B8BD;1105 116C 11B4;B8BD;1105 116C 11B4;
+B8BE;B8BE;1105 116C 11B5;B8BE;1105 116C 11B5;
+B8BF;B8BF;1105 116C 11B6;B8BF;1105 116C 11B6;
+B8C0;B8C0;1105 116C 11B7;B8C0;1105 116C 11B7;
+B8C1;B8C1;1105 116C 11B8;B8C1;1105 116C 11B8;
+B8C2;B8C2;1105 116C 11B9;B8C2;1105 116C 11B9;
+B8C3;B8C3;1105 116C 11BA;B8C3;1105 116C 11BA;
+B8C4;B8C4;1105 116C 11BB;B8C4;1105 116C 11BB;
+B8C5;B8C5;1105 116C 11BC;B8C5;1105 116C 11BC;
+B8C6;B8C6;1105 116C 11BD;B8C6;1105 116C 11BD;
+B8C7;B8C7;1105 116C 11BE;B8C7;1105 116C 11BE;
+B8C8;B8C8;1105 116C 11BF;B8C8;1105 116C 11BF;
+B8C9;B8C9;1105 116C 11C0;B8C9;1105 116C 11C0;
+B8CA;B8CA;1105 116C 11C1;B8CA;1105 116C 11C1;
+B8CB;B8CB;1105 116C 11C2;B8CB;1105 116C 11C2;
+B8CC;B8CC;1105 116D;B8CC;1105 116D;
+B8CD;B8CD;1105 116D 11A8;B8CD;1105 116D 11A8;
+B8CE;B8CE;1105 116D 11A9;B8CE;1105 116D 11A9;
+B8CF;B8CF;1105 116D 11AA;B8CF;1105 116D 11AA;
+B8D0;B8D0;1105 116D 11AB;B8D0;1105 116D 11AB;
+B8D1;B8D1;1105 116D 11AC;B8D1;1105 116D 11AC;
+B8D2;B8D2;1105 116D 11AD;B8D2;1105 116D 11AD;
+B8D3;B8D3;1105 116D 11AE;B8D3;1105 116D 11AE;
+B8D4;B8D4;1105 116D 11AF;B8D4;1105 116D 11AF;
+B8D5;B8D5;1105 116D 11B0;B8D5;1105 116D 11B0;
+B8D6;B8D6;1105 116D 11B1;B8D6;1105 116D 11B1;
+B8D7;B8D7;1105 116D 11B2;B8D7;1105 116D 11B2;
+B8D8;B8D8;1105 116D 11B3;B8D8;1105 116D 11B3;
+B8D9;B8D9;1105 116D 11B4;B8D9;1105 116D 11B4;
+B8DA;B8DA;1105 116D 11B5;B8DA;1105 116D 11B5;
+B8DB;B8DB;1105 116D 11B6;B8DB;1105 116D 11B6;
+B8DC;B8DC;1105 116D 11B7;B8DC;1105 116D 11B7;
+B8DD;B8DD;1105 116D 11B8;B8DD;1105 116D 11B8;
+B8DE;B8DE;1105 116D 11B9;B8DE;1105 116D 11B9;
+B8DF;B8DF;1105 116D 11BA;B8DF;1105 116D 11BA;
+B8E0;B8E0;1105 116D 11BB;B8E0;1105 116D 11BB;
+B8E1;B8E1;1105 116D 11BC;B8E1;1105 116D 11BC;
+B8E2;B8E2;1105 116D 11BD;B8E2;1105 116D 11BD;
+B8E3;B8E3;1105 116D 11BE;B8E3;1105 116D 11BE;
+B8E4;B8E4;1105 116D 11BF;B8E4;1105 116D 11BF;
+B8E5;B8E5;1105 116D 11C0;B8E5;1105 116D 11C0;
+B8E6;B8E6;1105 116D 11C1;B8E6;1105 116D 11C1;
+B8E7;B8E7;1105 116D 11C2;B8E7;1105 116D 11C2;
+B8E8;B8E8;1105 116E;B8E8;1105 116E;
+B8E9;B8E9;1105 116E 11A8;B8E9;1105 116E 11A8;
+B8EA;B8EA;1105 116E 11A9;B8EA;1105 116E 11A9;
+B8EB;B8EB;1105 116E 11AA;B8EB;1105 116E 11AA;
+B8EC;B8EC;1105 116E 11AB;B8EC;1105 116E 11AB;
+B8ED;B8ED;1105 116E 11AC;B8ED;1105 116E 11AC;
+B8EE;B8EE;1105 116E 11AD;B8EE;1105 116E 11AD;
+B8EF;B8EF;1105 116E 11AE;B8EF;1105 116E 11AE;
+B8F0;B8F0;1105 116E 11AF;B8F0;1105 116E 11AF;
+B8F1;B8F1;1105 116E 11B0;B8F1;1105 116E 11B0;
+B8F2;B8F2;1105 116E 11B1;B8F2;1105 116E 11B1;
+B8F3;B8F3;1105 116E 11B2;B8F3;1105 116E 11B2;
+B8F4;B8F4;1105 116E 11B3;B8F4;1105 116E 11B3;
+B8F5;B8F5;1105 116E 11B4;B8F5;1105 116E 11B4;
+B8F6;B8F6;1105 116E 11B5;B8F6;1105 116E 11B5;
+B8F7;B8F7;1105 116E 11B6;B8F7;1105 116E 11B6;
+B8F8;B8F8;1105 116E 11B7;B8F8;1105 116E 11B7;
+B8F9;B8F9;1105 116E 11B8;B8F9;1105 116E 11B8;
+B8FA;B8FA;1105 116E 11B9;B8FA;1105 116E 11B9;
+B8FB;B8FB;1105 116E 11BA;B8FB;1105 116E 11BA;
+B8FC;B8FC;1105 116E 11BB;B8FC;1105 116E 11BB;
+B8FD;B8FD;1105 116E 11BC;B8FD;1105 116E 11BC;
+B8FE;B8FE;1105 116E 11BD;B8FE;1105 116E 11BD;
+B8FF;B8FF;1105 116E 11BE;B8FF;1105 116E 11BE;
+B900;B900;1105 116E 11BF;B900;1105 116E 11BF;
+B901;B901;1105 116E 11C0;B901;1105 116E 11C0;
+B902;B902;1105 116E 11C1;B902;1105 116E 11C1;
+B903;B903;1105 116E 11C2;B903;1105 116E 11C2;
+B904;B904;1105 116F;B904;1105 116F;
+B905;B905;1105 116F 11A8;B905;1105 116F 11A8;
+B906;B906;1105 116F 11A9;B906;1105 116F 11A9;
+B907;B907;1105 116F 11AA;B907;1105 116F 11AA;
+B908;B908;1105 116F 11AB;B908;1105 116F 11AB;
+B909;B909;1105 116F 11AC;B909;1105 116F 11AC;
+B90A;B90A;1105 116F 11AD;B90A;1105 116F 11AD;
+B90B;B90B;1105 116F 11AE;B90B;1105 116F 11AE;
+B90C;B90C;1105 116F 11AF;B90C;1105 116F 11AF;
+B90D;B90D;1105 116F 11B0;B90D;1105 116F 11B0;
+B90E;B90E;1105 116F 11B1;B90E;1105 116F 11B1;
+B90F;B90F;1105 116F 11B2;B90F;1105 116F 11B2;
+B910;B910;1105 116F 11B3;B910;1105 116F 11B3;
+B911;B911;1105 116F 11B4;B911;1105 116F 11B4;
+B912;B912;1105 116F 11B5;B912;1105 116F 11B5;
+B913;B913;1105 116F 11B6;B913;1105 116F 11B6;
+B914;B914;1105 116F 11B7;B914;1105 116F 11B7;
+B915;B915;1105 116F 11B8;B915;1105 116F 11B8;
+B916;B916;1105 116F 11B9;B916;1105 116F 11B9;
+B917;B917;1105 116F 11BA;B917;1105 116F 11BA;
+B918;B918;1105 116F 11BB;B918;1105 116F 11BB;
+B919;B919;1105 116F 11BC;B919;1105 116F 11BC;
+B91A;B91A;1105 116F 11BD;B91A;1105 116F 11BD;
+B91B;B91B;1105 116F 11BE;B91B;1105 116F 11BE;
+B91C;B91C;1105 116F 11BF;B91C;1105 116F 11BF;
+B91D;B91D;1105 116F 11C0;B91D;1105 116F 11C0;
+B91E;B91E;1105 116F 11C1;B91E;1105 116F 11C1;
+B91F;B91F;1105 116F 11C2;B91F;1105 116F 11C2;
+B920;B920;1105 1170;B920;1105 1170;
+B921;B921;1105 1170 11A8;B921;1105 1170 11A8;
+B922;B922;1105 1170 11A9;B922;1105 1170 11A9;
+B923;B923;1105 1170 11AA;B923;1105 1170 11AA;
+B924;B924;1105 1170 11AB;B924;1105 1170 11AB;
+B925;B925;1105 1170 11AC;B925;1105 1170 11AC;
+B926;B926;1105 1170 11AD;B926;1105 1170 11AD;
+B927;B927;1105 1170 11AE;B927;1105 1170 11AE;
+B928;B928;1105 1170 11AF;B928;1105 1170 11AF;
+B929;B929;1105 1170 11B0;B929;1105 1170 11B0;
+B92A;B92A;1105 1170 11B1;B92A;1105 1170 11B1;
+B92B;B92B;1105 1170 11B2;B92B;1105 1170 11B2;
+B92C;B92C;1105 1170 11B3;B92C;1105 1170 11B3;
+B92D;B92D;1105 1170 11B4;B92D;1105 1170 11B4;
+B92E;B92E;1105 1170 11B5;B92E;1105 1170 11B5;
+B92F;B92F;1105 1170 11B6;B92F;1105 1170 11B6;
+B930;B930;1105 1170 11B7;B930;1105 1170 11B7;
+B931;B931;1105 1170 11B8;B931;1105 1170 11B8;
+B932;B932;1105 1170 11B9;B932;1105 1170 11B9;
+B933;B933;1105 1170 11BA;B933;1105 1170 11BA;
+B934;B934;1105 1170 11BB;B934;1105 1170 11BB;
+B935;B935;1105 1170 11BC;B935;1105 1170 11BC;
+B936;B936;1105 1170 11BD;B936;1105 1170 11BD;
+B937;B937;1105 1170 11BE;B937;1105 1170 11BE;
+B938;B938;1105 1170 11BF;B938;1105 1170 11BF;
+B939;B939;1105 1170 11C0;B939;1105 1170 11C0;
+B93A;B93A;1105 1170 11C1;B93A;1105 1170 11C1;
+B93B;B93B;1105 1170 11C2;B93B;1105 1170 11C2;
+B93C;B93C;1105 1171;B93C;1105 1171;
+B93D;B93D;1105 1171 11A8;B93D;1105 1171 11A8;
+B93E;B93E;1105 1171 11A9;B93E;1105 1171 11A9;
+B93F;B93F;1105 1171 11AA;B93F;1105 1171 11AA;
+B940;B940;1105 1171 11AB;B940;1105 1171 11AB;
+B941;B941;1105 1171 11AC;B941;1105 1171 11AC;
+B942;B942;1105 1171 11AD;B942;1105 1171 11AD;
+B943;B943;1105 1171 11AE;B943;1105 1171 11AE;
+B944;B944;1105 1171 11AF;B944;1105 1171 11AF;
+B945;B945;1105 1171 11B0;B945;1105 1171 11B0;
+B946;B946;1105 1171 11B1;B946;1105 1171 11B1;
+B947;B947;1105 1171 11B2;B947;1105 1171 11B2;
+B948;B948;1105 1171 11B3;B948;1105 1171 11B3;
+B949;B949;1105 1171 11B4;B949;1105 1171 11B4;
+B94A;B94A;1105 1171 11B5;B94A;1105 1171 11B5;
+B94B;B94B;1105 1171 11B6;B94B;1105 1171 11B6;
+B94C;B94C;1105 1171 11B7;B94C;1105 1171 11B7;
+B94D;B94D;1105 1171 11B8;B94D;1105 1171 11B8;
+B94E;B94E;1105 1171 11B9;B94E;1105 1171 11B9;
+B94F;B94F;1105 1171 11BA;B94F;1105 1171 11BA;
+B950;B950;1105 1171 11BB;B950;1105 1171 11BB;
+B951;B951;1105 1171 11BC;B951;1105 1171 11BC;
+B952;B952;1105 1171 11BD;B952;1105 1171 11BD;
+B953;B953;1105 1171 11BE;B953;1105 1171 11BE;
+B954;B954;1105 1171 11BF;B954;1105 1171 11BF;
+B955;B955;1105 1171 11C0;B955;1105 1171 11C0;
+B956;B956;1105 1171 11C1;B956;1105 1171 11C1;
+B957;B957;1105 1171 11C2;B957;1105 1171 11C2;
+B958;B958;1105 1172;B958;1105 1172;
+B959;B959;1105 1172 11A8;B959;1105 1172 11A8;
+B95A;B95A;1105 1172 11A9;B95A;1105 1172 11A9;
+B95B;B95B;1105 1172 11AA;B95B;1105 1172 11AA;
+B95C;B95C;1105 1172 11AB;B95C;1105 1172 11AB;
+B95D;B95D;1105 1172 11AC;B95D;1105 1172 11AC;
+B95E;B95E;1105 1172 11AD;B95E;1105 1172 11AD;
+B95F;B95F;1105 1172 11AE;B95F;1105 1172 11AE;
+B960;B960;1105 1172 11AF;B960;1105 1172 11AF;
+B961;B961;1105 1172 11B0;B961;1105 1172 11B0;
+B962;B962;1105 1172 11B1;B962;1105 1172 11B1;
+B963;B963;1105 1172 11B2;B963;1105 1172 11B2;
+B964;B964;1105 1172 11B3;B964;1105 1172 11B3;
+B965;B965;1105 1172 11B4;B965;1105 1172 11B4;
+B966;B966;1105 1172 11B5;B966;1105 1172 11B5;
+B967;B967;1105 1172 11B6;B967;1105 1172 11B6;
+B968;B968;1105 1172 11B7;B968;1105 1172 11B7;
+B969;B969;1105 1172 11B8;B969;1105 1172 11B8;
+B96A;B96A;1105 1172 11B9;B96A;1105 1172 11B9;
+B96B;B96B;1105 1172 11BA;B96B;1105 1172 11BA;
+B96C;B96C;1105 1172 11BB;B96C;1105 1172 11BB;
+B96D;B96D;1105 1172 11BC;B96D;1105 1172 11BC;
+B96E;B96E;1105 1172 11BD;B96E;1105 1172 11BD;
+B96F;B96F;1105 1172 11BE;B96F;1105 1172 11BE;
+B970;B970;1105 1172 11BF;B970;1105 1172 11BF;
+B971;B971;1105 1172 11C0;B971;1105 1172 11C0;
+B972;B972;1105 1172 11C1;B972;1105 1172 11C1;
+B973;B973;1105 1172 11C2;B973;1105 1172 11C2;
+B974;B974;1105 1173;B974;1105 1173;
+B975;B975;1105 1173 11A8;B975;1105 1173 11A8;
+B976;B976;1105 1173 11A9;B976;1105 1173 11A9;
+B977;B977;1105 1173 11AA;B977;1105 1173 11AA;
+B978;B978;1105 1173 11AB;B978;1105 1173 11AB;
+B979;B979;1105 1173 11AC;B979;1105 1173 11AC;
+B97A;B97A;1105 1173 11AD;B97A;1105 1173 11AD;
+B97B;B97B;1105 1173 11AE;B97B;1105 1173 11AE;
+B97C;B97C;1105 1173 11AF;B97C;1105 1173 11AF;
+B97D;B97D;1105 1173 11B0;B97D;1105 1173 11B0;
+B97E;B97E;1105 1173 11B1;B97E;1105 1173 11B1;
+B97F;B97F;1105 1173 11B2;B97F;1105 1173 11B2;
+B980;B980;1105 1173 11B3;B980;1105 1173 11B3;
+B981;B981;1105 1173 11B4;B981;1105 1173 11B4;
+B982;B982;1105 1173 11B5;B982;1105 1173 11B5;
+B983;B983;1105 1173 11B6;B983;1105 1173 11B6;
+B984;B984;1105 1173 11B7;B984;1105 1173 11B7;
+B985;B985;1105 1173 11B8;B985;1105 1173 11B8;
+B986;B986;1105 1173 11B9;B986;1105 1173 11B9;
+B987;B987;1105 1173 11BA;B987;1105 1173 11BA;
+B988;B988;1105 1173 11BB;B988;1105 1173 11BB;
+B989;B989;1105 1173 11BC;B989;1105 1173 11BC;
+B98A;B98A;1105 1173 11BD;B98A;1105 1173 11BD;
+B98B;B98B;1105 1173 11BE;B98B;1105 1173 11BE;
+B98C;B98C;1105 1173 11BF;B98C;1105 1173 11BF;
+B98D;B98D;1105 1173 11C0;B98D;1105 1173 11C0;
+B98E;B98E;1105 1173 11C1;B98E;1105 1173 11C1;
+B98F;B98F;1105 1173 11C2;B98F;1105 1173 11C2;
+B990;B990;1105 1174;B990;1105 1174;
+B991;B991;1105 1174 11A8;B991;1105 1174 11A8;
+B992;B992;1105 1174 11A9;B992;1105 1174 11A9;
+B993;B993;1105 1174 11AA;B993;1105 1174 11AA;
+B994;B994;1105 1174 11AB;B994;1105 1174 11AB;
+B995;B995;1105 1174 11AC;B995;1105 1174 11AC;
+B996;B996;1105 1174 11AD;B996;1105 1174 11AD;
+B997;B997;1105 1174 11AE;B997;1105 1174 11AE;
+B998;B998;1105 1174 11AF;B998;1105 1174 11AF;
+B999;B999;1105 1174 11B0;B999;1105 1174 11B0;
+B99A;B99A;1105 1174 11B1;B99A;1105 1174 11B1;
+B99B;B99B;1105 1174 11B2;B99B;1105 1174 11B2;
+B99C;B99C;1105 1174 11B3;B99C;1105 1174 11B3;
+B99D;B99D;1105 1174 11B4;B99D;1105 1174 11B4;
+B99E;B99E;1105 1174 11B5;B99E;1105 1174 11B5;
+B99F;B99F;1105 1174 11B6;B99F;1105 1174 11B6;
+B9A0;B9A0;1105 1174 11B7;B9A0;1105 1174 11B7;
+B9A1;B9A1;1105 1174 11B8;B9A1;1105 1174 11B8;
+B9A2;B9A2;1105 1174 11B9;B9A2;1105 1174 11B9;
+B9A3;B9A3;1105 1174 11BA;B9A3;1105 1174 11BA;
+B9A4;B9A4;1105 1174 11BB;B9A4;1105 1174 11BB;
+B9A5;B9A5;1105 1174 11BC;B9A5;1105 1174 11BC;
+B9A6;B9A6;1105 1174 11BD;B9A6;1105 1174 11BD;
+B9A7;B9A7;1105 1174 11BE;B9A7;1105 1174 11BE;
+B9A8;B9A8;1105 1174 11BF;B9A8;1105 1174 11BF;
+B9A9;B9A9;1105 1174 11C0;B9A9;1105 1174 11C0;
+B9AA;B9AA;1105 1174 11C1;B9AA;1105 1174 11C1;
+B9AB;B9AB;1105 1174 11C2;B9AB;1105 1174 11C2;
+B9AC;B9AC;1105 1175;B9AC;1105 1175;
+B9AD;B9AD;1105 1175 11A8;B9AD;1105 1175 11A8;
+B9AE;B9AE;1105 1175 11A9;B9AE;1105 1175 11A9;
+B9AF;B9AF;1105 1175 11AA;B9AF;1105 1175 11AA;
+B9B0;B9B0;1105 1175 11AB;B9B0;1105 1175 11AB;
+B9B1;B9B1;1105 1175 11AC;B9B1;1105 1175 11AC;
+B9B2;B9B2;1105 1175 11AD;B9B2;1105 1175 11AD;
+B9B3;B9B3;1105 1175 11AE;B9B3;1105 1175 11AE;
+B9B4;B9B4;1105 1175 11AF;B9B4;1105 1175 11AF;
+B9B5;B9B5;1105 1175 11B0;B9B5;1105 1175 11B0;
+B9B6;B9B6;1105 1175 11B1;B9B6;1105 1175 11B1;
+B9B7;B9B7;1105 1175 11B2;B9B7;1105 1175 11B2;
+B9B8;B9B8;1105 1175 11B3;B9B8;1105 1175 11B3;
+B9B9;B9B9;1105 1175 11B4;B9B9;1105 1175 11B4;
+B9BA;B9BA;1105 1175 11B5;B9BA;1105 1175 11B5;
+B9BB;B9BB;1105 1175 11B6;B9BB;1105 1175 11B6;
+B9BC;B9BC;1105 1175 11B7;B9BC;1105 1175 11B7;
+B9BD;B9BD;1105 1175 11B8;B9BD;1105 1175 11B8;
+B9BE;B9BE;1105 1175 11B9;B9BE;1105 1175 11B9;
+B9BF;B9BF;1105 1175 11BA;B9BF;1105 1175 11BA;
+B9C0;B9C0;1105 1175 11BB;B9C0;1105 1175 11BB;
+B9C1;B9C1;1105 1175 11BC;B9C1;1105 1175 11BC;
+B9C2;B9C2;1105 1175 11BD;B9C2;1105 1175 11BD;
+B9C3;B9C3;1105 1175 11BE;B9C3;1105 1175 11BE;
+B9C4;B9C4;1105 1175 11BF;B9C4;1105 1175 11BF;
+B9C5;B9C5;1105 1175 11C0;B9C5;1105 1175 11C0;
+B9C6;B9C6;1105 1175 11C1;B9C6;1105 1175 11C1;
+B9C7;B9C7;1105 1175 11C2;B9C7;1105 1175 11C2;
+B9C8;B9C8;1106 1161;B9C8;1106 1161;
+B9C9;B9C9;1106 1161 11A8;B9C9;1106 1161 11A8;
+B9CA;B9CA;1106 1161 11A9;B9CA;1106 1161 11A9;
+B9CB;B9CB;1106 1161 11AA;B9CB;1106 1161 11AA;
+B9CC;B9CC;1106 1161 11AB;B9CC;1106 1161 11AB;
+B9CD;B9CD;1106 1161 11AC;B9CD;1106 1161 11AC;
+B9CE;B9CE;1106 1161 11AD;B9CE;1106 1161 11AD;
+B9CF;B9CF;1106 1161 11AE;B9CF;1106 1161 11AE;
+B9D0;B9D0;1106 1161 11AF;B9D0;1106 1161 11AF;
+B9D1;B9D1;1106 1161 11B0;B9D1;1106 1161 11B0;
+B9D2;B9D2;1106 1161 11B1;B9D2;1106 1161 11B1;
+B9D3;B9D3;1106 1161 11B2;B9D3;1106 1161 11B2;
+B9D4;B9D4;1106 1161 11B3;B9D4;1106 1161 11B3;
+B9D5;B9D5;1106 1161 11B4;B9D5;1106 1161 11B4;
+B9D6;B9D6;1106 1161 11B5;B9D6;1106 1161 11B5;
+B9D7;B9D7;1106 1161 11B6;B9D7;1106 1161 11B6;
+B9D8;B9D8;1106 1161 11B7;B9D8;1106 1161 11B7;
+B9D9;B9D9;1106 1161 11B8;B9D9;1106 1161 11B8;
+B9DA;B9DA;1106 1161 11B9;B9DA;1106 1161 11B9;
+B9DB;B9DB;1106 1161 11BA;B9DB;1106 1161 11BA;
+B9DC;B9DC;1106 1161 11BB;B9DC;1106 1161 11BB;
+B9DD;B9DD;1106 1161 11BC;B9DD;1106 1161 11BC;
+B9DE;B9DE;1106 1161 11BD;B9DE;1106 1161 11BD;
+B9DF;B9DF;1106 1161 11BE;B9DF;1106 1161 11BE;
+B9E0;B9E0;1106 1161 11BF;B9E0;1106 1161 11BF;
+B9E1;B9E1;1106 1161 11C0;B9E1;1106 1161 11C0;
+B9E2;B9E2;1106 1161 11C1;B9E2;1106 1161 11C1;
+B9E3;B9E3;1106 1161 11C2;B9E3;1106 1161 11C2;
+B9E4;B9E4;1106 1162;B9E4;1106 1162;
+B9E5;B9E5;1106 1162 11A8;B9E5;1106 1162 11A8;
+B9E6;B9E6;1106 1162 11A9;B9E6;1106 1162 11A9;
+B9E7;B9E7;1106 1162 11AA;B9E7;1106 1162 11AA;
+B9E8;B9E8;1106 1162 11AB;B9E8;1106 1162 11AB;
+B9E9;B9E9;1106 1162 11AC;B9E9;1106 1162 11AC;
+B9EA;B9EA;1106 1162 11AD;B9EA;1106 1162 11AD;
+B9EB;B9EB;1106 1162 11AE;B9EB;1106 1162 11AE;
+B9EC;B9EC;1106 1162 11AF;B9EC;1106 1162 11AF;
+B9ED;B9ED;1106 1162 11B0;B9ED;1106 1162 11B0;
+B9EE;B9EE;1106 1162 11B1;B9EE;1106 1162 11B1;
+B9EF;B9EF;1106 1162 11B2;B9EF;1106 1162 11B2;
+B9F0;B9F0;1106 1162 11B3;B9F0;1106 1162 11B3;
+B9F1;B9F1;1106 1162 11B4;B9F1;1106 1162 11B4;
+B9F2;B9F2;1106 1162 11B5;B9F2;1106 1162 11B5;
+B9F3;B9F3;1106 1162 11B6;B9F3;1106 1162 11B6;
+B9F4;B9F4;1106 1162 11B7;B9F4;1106 1162 11B7;
+B9F5;B9F5;1106 1162 11B8;B9F5;1106 1162 11B8;
+B9F6;B9F6;1106 1162 11B9;B9F6;1106 1162 11B9;
+B9F7;B9F7;1106 1162 11BA;B9F7;1106 1162 11BA;
+B9F8;B9F8;1106 1162 11BB;B9F8;1106 1162 11BB;
+B9F9;B9F9;1106 1162 11BC;B9F9;1106 1162 11BC;
+B9FA;B9FA;1106 1162 11BD;B9FA;1106 1162 11BD;
+B9FB;B9FB;1106 1162 11BE;B9FB;1106 1162 11BE;
+B9FC;B9FC;1106 1162 11BF;B9FC;1106 1162 11BF;
+B9FD;B9FD;1106 1162 11C0;B9FD;1106 1162 11C0;
+B9FE;B9FE;1106 1162 11C1;B9FE;1106 1162 11C1;
+B9FF;B9FF;1106 1162 11C2;B9FF;1106 1162 11C2;
+BA00;BA00;1106 1163;BA00;1106 1163;
+BA01;BA01;1106 1163 11A8;BA01;1106 1163 11A8;
+BA02;BA02;1106 1163 11A9;BA02;1106 1163 11A9;
+BA03;BA03;1106 1163 11AA;BA03;1106 1163 11AA;
+BA04;BA04;1106 1163 11AB;BA04;1106 1163 11AB;
+BA05;BA05;1106 1163 11AC;BA05;1106 1163 11AC;
+BA06;BA06;1106 1163 11AD;BA06;1106 1163 11AD;
+BA07;BA07;1106 1163 11AE;BA07;1106 1163 11AE;
+BA08;BA08;1106 1163 11AF;BA08;1106 1163 11AF;
+BA09;BA09;1106 1163 11B0;BA09;1106 1163 11B0;
+BA0A;BA0A;1106 1163 11B1;BA0A;1106 1163 11B1;
+BA0B;BA0B;1106 1163 11B2;BA0B;1106 1163 11B2;
+BA0C;BA0C;1106 1163 11B3;BA0C;1106 1163 11B3;
+BA0D;BA0D;1106 1163 11B4;BA0D;1106 1163 11B4;
+BA0E;BA0E;1106 1163 11B5;BA0E;1106 1163 11B5;
+BA0F;BA0F;1106 1163 11B6;BA0F;1106 1163 11B6;
+BA10;BA10;1106 1163 11B7;BA10;1106 1163 11B7;
+BA11;BA11;1106 1163 11B8;BA11;1106 1163 11B8;
+BA12;BA12;1106 1163 11B9;BA12;1106 1163 11B9;
+BA13;BA13;1106 1163 11BA;BA13;1106 1163 11BA;
+BA14;BA14;1106 1163 11BB;BA14;1106 1163 11BB;
+BA15;BA15;1106 1163 11BC;BA15;1106 1163 11BC;
+BA16;BA16;1106 1163 11BD;BA16;1106 1163 11BD;
+BA17;BA17;1106 1163 11BE;BA17;1106 1163 11BE;
+BA18;BA18;1106 1163 11BF;BA18;1106 1163 11BF;
+BA19;BA19;1106 1163 11C0;BA19;1106 1163 11C0;
+BA1A;BA1A;1106 1163 11C1;BA1A;1106 1163 11C1;
+BA1B;BA1B;1106 1163 11C2;BA1B;1106 1163 11C2;
+BA1C;BA1C;1106 1164;BA1C;1106 1164;
+BA1D;BA1D;1106 1164 11A8;BA1D;1106 1164 11A8;
+BA1E;BA1E;1106 1164 11A9;BA1E;1106 1164 11A9;
+BA1F;BA1F;1106 1164 11AA;BA1F;1106 1164 11AA;
+BA20;BA20;1106 1164 11AB;BA20;1106 1164 11AB;
+BA21;BA21;1106 1164 11AC;BA21;1106 1164 11AC;
+BA22;BA22;1106 1164 11AD;BA22;1106 1164 11AD;
+BA23;BA23;1106 1164 11AE;BA23;1106 1164 11AE;
+BA24;BA24;1106 1164 11AF;BA24;1106 1164 11AF;
+BA25;BA25;1106 1164 11B0;BA25;1106 1164 11B0;
+BA26;BA26;1106 1164 11B1;BA26;1106 1164 11B1;
+BA27;BA27;1106 1164 11B2;BA27;1106 1164 11B2;
+BA28;BA28;1106 1164 11B3;BA28;1106 1164 11B3;
+BA29;BA29;1106 1164 11B4;BA29;1106 1164 11B4;
+BA2A;BA2A;1106 1164 11B5;BA2A;1106 1164 11B5;
+BA2B;BA2B;1106 1164 11B6;BA2B;1106 1164 11B6;
+BA2C;BA2C;1106 1164 11B7;BA2C;1106 1164 11B7;
+BA2D;BA2D;1106 1164 11B8;BA2D;1106 1164 11B8;
+BA2E;BA2E;1106 1164 11B9;BA2E;1106 1164 11B9;
+BA2F;BA2F;1106 1164 11BA;BA2F;1106 1164 11BA;
+BA30;BA30;1106 1164 11BB;BA30;1106 1164 11BB;
+BA31;BA31;1106 1164 11BC;BA31;1106 1164 11BC;
+BA32;BA32;1106 1164 11BD;BA32;1106 1164 11BD;
+BA33;BA33;1106 1164 11BE;BA33;1106 1164 11BE;
+BA34;BA34;1106 1164 11BF;BA34;1106 1164 11BF;
+BA35;BA35;1106 1164 11C0;BA35;1106 1164 11C0;
+BA36;BA36;1106 1164 11C1;BA36;1106 1164 11C1;
+BA37;BA37;1106 1164 11C2;BA37;1106 1164 11C2;
+BA38;BA38;1106 1165;BA38;1106 1165;
+BA39;BA39;1106 1165 11A8;BA39;1106 1165 11A8;
+BA3A;BA3A;1106 1165 11A9;BA3A;1106 1165 11A9;
+BA3B;BA3B;1106 1165 11AA;BA3B;1106 1165 11AA;
+BA3C;BA3C;1106 1165 11AB;BA3C;1106 1165 11AB;
+BA3D;BA3D;1106 1165 11AC;BA3D;1106 1165 11AC;
+BA3E;BA3E;1106 1165 11AD;BA3E;1106 1165 11AD;
+BA3F;BA3F;1106 1165 11AE;BA3F;1106 1165 11AE;
+BA40;BA40;1106 1165 11AF;BA40;1106 1165 11AF;
+BA41;BA41;1106 1165 11B0;BA41;1106 1165 11B0;
+BA42;BA42;1106 1165 11B1;BA42;1106 1165 11B1;
+BA43;BA43;1106 1165 11B2;BA43;1106 1165 11B2;
+BA44;BA44;1106 1165 11B3;BA44;1106 1165 11B3;
+BA45;BA45;1106 1165 11B4;BA45;1106 1165 11B4;
+BA46;BA46;1106 1165 11B5;BA46;1106 1165 11B5;
+BA47;BA47;1106 1165 11B6;BA47;1106 1165 11B6;
+BA48;BA48;1106 1165 11B7;BA48;1106 1165 11B7;
+BA49;BA49;1106 1165 11B8;BA49;1106 1165 11B8;
+BA4A;BA4A;1106 1165 11B9;BA4A;1106 1165 11B9;
+BA4B;BA4B;1106 1165 11BA;BA4B;1106 1165 11BA;
+BA4C;BA4C;1106 1165 11BB;BA4C;1106 1165 11BB;
+BA4D;BA4D;1106 1165 11BC;BA4D;1106 1165 11BC;
+BA4E;BA4E;1106 1165 11BD;BA4E;1106 1165 11BD;
+BA4F;BA4F;1106 1165 11BE;BA4F;1106 1165 11BE;
+BA50;BA50;1106 1165 11BF;BA50;1106 1165 11BF;
+BA51;BA51;1106 1165 11C0;BA51;1106 1165 11C0;
+BA52;BA52;1106 1165 11C1;BA52;1106 1165 11C1;
+BA53;BA53;1106 1165 11C2;BA53;1106 1165 11C2;
+BA54;BA54;1106 1166;BA54;1106 1166;
+BA55;BA55;1106 1166 11A8;BA55;1106 1166 11A8;
+BA56;BA56;1106 1166 11A9;BA56;1106 1166 11A9;
+BA57;BA57;1106 1166 11AA;BA57;1106 1166 11AA;
+BA58;BA58;1106 1166 11AB;BA58;1106 1166 11AB;
+BA59;BA59;1106 1166 11AC;BA59;1106 1166 11AC;
+BA5A;BA5A;1106 1166 11AD;BA5A;1106 1166 11AD;
+BA5B;BA5B;1106 1166 11AE;BA5B;1106 1166 11AE;
+BA5C;BA5C;1106 1166 11AF;BA5C;1106 1166 11AF;
+BA5D;BA5D;1106 1166 11B0;BA5D;1106 1166 11B0;
+BA5E;BA5E;1106 1166 11B1;BA5E;1106 1166 11B1;
+BA5F;BA5F;1106 1166 11B2;BA5F;1106 1166 11B2;
+BA60;BA60;1106 1166 11B3;BA60;1106 1166 11B3;
+BA61;BA61;1106 1166 11B4;BA61;1106 1166 11B4;
+BA62;BA62;1106 1166 11B5;BA62;1106 1166 11B5;
+BA63;BA63;1106 1166 11B6;BA63;1106 1166 11B6;
+BA64;BA64;1106 1166 11B7;BA64;1106 1166 11B7;
+BA65;BA65;1106 1166 11B8;BA65;1106 1166 11B8;
+BA66;BA66;1106 1166 11B9;BA66;1106 1166 11B9;
+BA67;BA67;1106 1166 11BA;BA67;1106 1166 11BA;
+BA68;BA68;1106 1166 11BB;BA68;1106 1166 11BB;
+BA69;BA69;1106 1166 11BC;BA69;1106 1166 11BC;
+BA6A;BA6A;1106 1166 11BD;BA6A;1106 1166 11BD;
+BA6B;BA6B;1106 1166 11BE;BA6B;1106 1166 11BE;
+BA6C;BA6C;1106 1166 11BF;BA6C;1106 1166 11BF;
+BA6D;BA6D;1106 1166 11C0;BA6D;1106 1166 11C0;
+BA6E;BA6E;1106 1166 11C1;BA6E;1106 1166 11C1;
+BA6F;BA6F;1106 1166 11C2;BA6F;1106 1166 11C2;
+BA70;BA70;1106 1167;BA70;1106 1167;
+BA71;BA71;1106 1167 11A8;BA71;1106 1167 11A8;
+BA72;BA72;1106 1167 11A9;BA72;1106 1167 11A9;
+BA73;BA73;1106 1167 11AA;BA73;1106 1167 11AA;
+BA74;BA74;1106 1167 11AB;BA74;1106 1167 11AB;
+BA75;BA75;1106 1167 11AC;BA75;1106 1167 11AC;
+BA76;BA76;1106 1167 11AD;BA76;1106 1167 11AD;
+BA77;BA77;1106 1167 11AE;BA77;1106 1167 11AE;
+BA78;BA78;1106 1167 11AF;BA78;1106 1167 11AF;
+BA79;BA79;1106 1167 11B0;BA79;1106 1167 11B0;
+BA7A;BA7A;1106 1167 11B1;BA7A;1106 1167 11B1;
+BA7B;BA7B;1106 1167 11B2;BA7B;1106 1167 11B2;
+BA7C;BA7C;1106 1167 11B3;BA7C;1106 1167 11B3;
+BA7D;BA7D;1106 1167 11B4;BA7D;1106 1167 11B4;
+BA7E;BA7E;1106 1167 11B5;BA7E;1106 1167 11B5;
+BA7F;BA7F;1106 1167 11B6;BA7F;1106 1167 11B6;
+BA80;BA80;1106 1167 11B7;BA80;1106 1167 11B7;
+BA81;BA81;1106 1167 11B8;BA81;1106 1167 11B8;
+BA82;BA82;1106 1167 11B9;BA82;1106 1167 11B9;
+BA83;BA83;1106 1167 11BA;BA83;1106 1167 11BA;
+BA84;BA84;1106 1167 11BB;BA84;1106 1167 11BB;
+BA85;BA85;1106 1167 11BC;BA85;1106 1167 11BC;
+BA86;BA86;1106 1167 11BD;BA86;1106 1167 11BD;
+BA87;BA87;1106 1167 11BE;BA87;1106 1167 11BE;
+BA88;BA88;1106 1167 11BF;BA88;1106 1167 11BF;
+BA89;BA89;1106 1167 11C0;BA89;1106 1167 11C0;
+BA8A;BA8A;1106 1167 11C1;BA8A;1106 1167 11C1;
+BA8B;BA8B;1106 1167 11C2;BA8B;1106 1167 11C2;
+BA8C;BA8C;1106 1168;BA8C;1106 1168;
+BA8D;BA8D;1106 1168 11A8;BA8D;1106 1168 11A8;
+BA8E;BA8E;1106 1168 11A9;BA8E;1106 1168 11A9;
+BA8F;BA8F;1106 1168 11AA;BA8F;1106 1168 11AA;
+BA90;BA90;1106 1168 11AB;BA90;1106 1168 11AB;
+BA91;BA91;1106 1168 11AC;BA91;1106 1168 11AC;
+BA92;BA92;1106 1168 11AD;BA92;1106 1168 11AD;
+BA93;BA93;1106 1168 11AE;BA93;1106 1168 11AE;
+BA94;BA94;1106 1168 11AF;BA94;1106 1168 11AF;
+BA95;BA95;1106 1168 11B0;BA95;1106 1168 11B0;
+BA96;BA96;1106 1168 11B1;BA96;1106 1168 11B1;
+BA97;BA97;1106 1168 11B2;BA97;1106 1168 11B2;
+BA98;BA98;1106 1168 11B3;BA98;1106 1168 11B3;
+BA99;BA99;1106 1168 11B4;BA99;1106 1168 11B4;
+BA9A;BA9A;1106 1168 11B5;BA9A;1106 1168 11B5;
+BA9B;BA9B;1106 1168 11B6;BA9B;1106 1168 11B6;
+BA9C;BA9C;1106 1168 11B7;BA9C;1106 1168 11B7;
+BA9D;BA9D;1106 1168 11B8;BA9D;1106 1168 11B8;
+BA9E;BA9E;1106 1168 11B9;BA9E;1106 1168 11B9;
+BA9F;BA9F;1106 1168 11BA;BA9F;1106 1168 11BA;
+BAA0;BAA0;1106 1168 11BB;BAA0;1106 1168 11BB;
+BAA1;BAA1;1106 1168 11BC;BAA1;1106 1168 11BC;
+BAA2;BAA2;1106 1168 11BD;BAA2;1106 1168 11BD;
+BAA3;BAA3;1106 1168 11BE;BAA3;1106 1168 11BE;
+BAA4;BAA4;1106 1168 11BF;BAA4;1106 1168 11BF;
+BAA5;BAA5;1106 1168 11C0;BAA5;1106 1168 11C0;
+BAA6;BAA6;1106 1168 11C1;BAA6;1106 1168 11C1;
+BAA7;BAA7;1106 1168 11C2;BAA7;1106 1168 11C2;
+BAA8;BAA8;1106 1169;BAA8;1106 1169;
+BAA9;BAA9;1106 1169 11A8;BAA9;1106 1169 11A8;
+BAAA;BAAA;1106 1169 11A9;BAAA;1106 1169 11A9;
+BAAB;BAAB;1106 1169 11AA;BAAB;1106 1169 11AA;
+BAAC;BAAC;1106 1169 11AB;BAAC;1106 1169 11AB;
+BAAD;BAAD;1106 1169 11AC;BAAD;1106 1169 11AC;
+BAAE;BAAE;1106 1169 11AD;BAAE;1106 1169 11AD;
+BAAF;BAAF;1106 1169 11AE;BAAF;1106 1169 11AE;
+BAB0;BAB0;1106 1169 11AF;BAB0;1106 1169 11AF;
+BAB1;BAB1;1106 1169 11B0;BAB1;1106 1169 11B0;
+BAB2;BAB2;1106 1169 11B1;BAB2;1106 1169 11B1;
+BAB3;BAB3;1106 1169 11B2;BAB3;1106 1169 11B2;
+BAB4;BAB4;1106 1169 11B3;BAB4;1106 1169 11B3;
+BAB5;BAB5;1106 1169 11B4;BAB5;1106 1169 11B4;
+BAB6;BAB6;1106 1169 11B5;BAB6;1106 1169 11B5;
+BAB7;BAB7;1106 1169 11B6;BAB7;1106 1169 11B6;
+BAB8;BAB8;1106 1169 11B7;BAB8;1106 1169 11B7;
+BAB9;BAB9;1106 1169 11B8;BAB9;1106 1169 11B8;
+BABA;BABA;1106 1169 11B9;BABA;1106 1169 11B9;
+BABB;BABB;1106 1169 11BA;BABB;1106 1169 11BA;
+BABC;BABC;1106 1169 11BB;BABC;1106 1169 11BB;
+BABD;BABD;1106 1169 11BC;BABD;1106 1169 11BC;
+BABE;BABE;1106 1169 11BD;BABE;1106 1169 11BD;
+BABF;BABF;1106 1169 11BE;BABF;1106 1169 11BE;
+BAC0;BAC0;1106 1169 11BF;BAC0;1106 1169 11BF;
+BAC1;BAC1;1106 1169 11C0;BAC1;1106 1169 11C0;
+BAC2;BAC2;1106 1169 11C1;BAC2;1106 1169 11C1;
+BAC3;BAC3;1106 1169 11C2;BAC3;1106 1169 11C2;
+BAC4;BAC4;1106 116A;BAC4;1106 116A;
+BAC5;BAC5;1106 116A 11A8;BAC5;1106 116A 11A8;
+BAC6;BAC6;1106 116A 11A9;BAC6;1106 116A 11A9;
+BAC7;BAC7;1106 116A 11AA;BAC7;1106 116A 11AA;
+BAC8;BAC8;1106 116A 11AB;BAC8;1106 116A 11AB;
+BAC9;BAC9;1106 116A 11AC;BAC9;1106 116A 11AC;
+BACA;BACA;1106 116A 11AD;BACA;1106 116A 11AD;
+BACB;BACB;1106 116A 11AE;BACB;1106 116A 11AE;
+BACC;BACC;1106 116A 11AF;BACC;1106 116A 11AF;
+BACD;BACD;1106 116A 11B0;BACD;1106 116A 11B0;
+BACE;BACE;1106 116A 11B1;BACE;1106 116A 11B1;
+BACF;BACF;1106 116A 11B2;BACF;1106 116A 11B2;
+BAD0;BAD0;1106 116A 11B3;BAD0;1106 116A 11B3;
+BAD1;BAD1;1106 116A 11B4;BAD1;1106 116A 11B4;
+BAD2;BAD2;1106 116A 11B5;BAD2;1106 116A 11B5;
+BAD3;BAD3;1106 116A 11B6;BAD3;1106 116A 11B6;
+BAD4;BAD4;1106 116A 11B7;BAD4;1106 116A 11B7;
+BAD5;BAD5;1106 116A 11B8;BAD5;1106 116A 11B8;
+BAD6;BAD6;1106 116A 11B9;BAD6;1106 116A 11B9;
+BAD7;BAD7;1106 116A 11BA;BAD7;1106 116A 11BA;
+BAD8;BAD8;1106 116A 11BB;BAD8;1106 116A 11BB;
+BAD9;BAD9;1106 116A 11BC;BAD9;1106 116A 11BC;
+BADA;BADA;1106 116A 11BD;BADA;1106 116A 11BD;
+BADB;BADB;1106 116A 11BE;BADB;1106 116A 11BE;
+BADC;BADC;1106 116A 11BF;BADC;1106 116A 11BF;
+BADD;BADD;1106 116A 11C0;BADD;1106 116A 11C0;
+BADE;BADE;1106 116A 11C1;BADE;1106 116A 11C1;
+BADF;BADF;1106 116A 11C2;BADF;1106 116A 11C2;
+BAE0;BAE0;1106 116B;BAE0;1106 116B;
+BAE1;BAE1;1106 116B 11A8;BAE1;1106 116B 11A8;
+BAE2;BAE2;1106 116B 11A9;BAE2;1106 116B 11A9;
+BAE3;BAE3;1106 116B 11AA;BAE3;1106 116B 11AA;
+BAE4;BAE4;1106 116B 11AB;BAE4;1106 116B 11AB;
+BAE5;BAE5;1106 116B 11AC;BAE5;1106 116B 11AC;
+BAE6;BAE6;1106 116B 11AD;BAE6;1106 116B 11AD;
+BAE7;BAE7;1106 116B 11AE;BAE7;1106 116B 11AE;
+BAE8;BAE8;1106 116B 11AF;BAE8;1106 116B 11AF;
+BAE9;BAE9;1106 116B 11B0;BAE9;1106 116B 11B0;
+BAEA;BAEA;1106 116B 11B1;BAEA;1106 116B 11B1;
+BAEB;BAEB;1106 116B 11B2;BAEB;1106 116B 11B2;
+BAEC;BAEC;1106 116B 11B3;BAEC;1106 116B 11B3;
+BAED;BAED;1106 116B 11B4;BAED;1106 116B 11B4;
+BAEE;BAEE;1106 116B 11B5;BAEE;1106 116B 11B5;
+BAEF;BAEF;1106 116B 11B6;BAEF;1106 116B 11B6;
+BAF0;BAF0;1106 116B 11B7;BAF0;1106 116B 11B7;
+BAF1;BAF1;1106 116B 11B8;BAF1;1106 116B 11B8;
+BAF2;BAF2;1106 116B 11B9;BAF2;1106 116B 11B9;
+BAF3;BAF3;1106 116B 11BA;BAF3;1106 116B 11BA;
+BAF4;BAF4;1106 116B 11BB;BAF4;1106 116B 11BB;
+BAF5;BAF5;1106 116B 11BC;BAF5;1106 116B 11BC;
+BAF6;BAF6;1106 116B 11BD;BAF6;1106 116B 11BD;
+BAF7;BAF7;1106 116B 11BE;BAF7;1106 116B 11BE;
+BAF8;BAF8;1106 116B 11BF;BAF8;1106 116B 11BF;
+BAF9;BAF9;1106 116B 11C0;BAF9;1106 116B 11C0;
+BAFA;BAFA;1106 116B 11C1;BAFA;1106 116B 11C1;
+BAFB;BAFB;1106 116B 11C2;BAFB;1106 116B 11C2;
+BAFC;BAFC;1106 116C;BAFC;1106 116C;
+BAFD;BAFD;1106 116C 11A8;BAFD;1106 116C 11A8;
+BAFE;BAFE;1106 116C 11A9;BAFE;1106 116C 11A9;
+BAFF;BAFF;1106 116C 11AA;BAFF;1106 116C 11AA;
+BB00;BB00;1106 116C 11AB;BB00;1106 116C 11AB;
+BB01;BB01;1106 116C 11AC;BB01;1106 116C 11AC;
+BB02;BB02;1106 116C 11AD;BB02;1106 116C 11AD;
+BB03;BB03;1106 116C 11AE;BB03;1106 116C 11AE;
+BB04;BB04;1106 116C 11AF;BB04;1106 116C 11AF;
+BB05;BB05;1106 116C 11B0;BB05;1106 116C 11B0;
+BB06;BB06;1106 116C 11B1;BB06;1106 116C 11B1;
+BB07;BB07;1106 116C 11B2;BB07;1106 116C 11B2;
+BB08;BB08;1106 116C 11B3;BB08;1106 116C 11B3;
+BB09;BB09;1106 116C 11B4;BB09;1106 116C 11B4;
+BB0A;BB0A;1106 116C 11B5;BB0A;1106 116C 11B5;
+BB0B;BB0B;1106 116C 11B6;BB0B;1106 116C 11B6;
+BB0C;BB0C;1106 116C 11B7;BB0C;1106 116C 11B7;
+BB0D;BB0D;1106 116C 11B8;BB0D;1106 116C 11B8;
+BB0E;BB0E;1106 116C 11B9;BB0E;1106 116C 11B9;
+BB0F;BB0F;1106 116C 11BA;BB0F;1106 116C 11BA;
+BB10;BB10;1106 116C 11BB;BB10;1106 116C 11BB;
+BB11;BB11;1106 116C 11BC;BB11;1106 116C 11BC;
+BB12;BB12;1106 116C 11BD;BB12;1106 116C 11BD;
+BB13;BB13;1106 116C 11BE;BB13;1106 116C 11BE;
+BB14;BB14;1106 116C 11BF;BB14;1106 116C 11BF;
+BB15;BB15;1106 116C 11C0;BB15;1106 116C 11C0;
+BB16;BB16;1106 116C 11C1;BB16;1106 116C 11C1;
+BB17;BB17;1106 116C 11C2;BB17;1106 116C 11C2;
+BB18;BB18;1106 116D;BB18;1106 116D;
+BB19;BB19;1106 116D 11A8;BB19;1106 116D 11A8;
+BB1A;BB1A;1106 116D 11A9;BB1A;1106 116D 11A9;
+BB1B;BB1B;1106 116D 11AA;BB1B;1106 116D 11AA;
+BB1C;BB1C;1106 116D 11AB;BB1C;1106 116D 11AB;
+BB1D;BB1D;1106 116D 11AC;BB1D;1106 116D 11AC;
+BB1E;BB1E;1106 116D 11AD;BB1E;1106 116D 11AD;
+BB1F;BB1F;1106 116D 11AE;BB1F;1106 116D 11AE;
+BB20;BB20;1106 116D 11AF;BB20;1106 116D 11AF;
+BB21;BB21;1106 116D 11B0;BB21;1106 116D 11B0;
+BB22;BB22;1106 116D 11B1;BB22;1106 116D 11B1;
+BB23;BB23;1106 116D 11B2;BB23;1106 116D 11B2;
+BB24;BB24;1106 116D 11B3;BB24;1106 116D 11B3;
+BB25;BB25;1106 116D 11B4;BB25;1106 116D 11B4;
+BB26;BB26;1106 116D 11B5;BB26;1106 116D 11B5;
+BB27;BB27;1106 116D 11B6;BB27;1106 116D 11B6;
+BB28;BB28;1106 116D 11B7;BB28;1106 116D 11B7;
+BB29;BB29;1106 116D 11B8;BB29;1106 116D 11B8;
+BB2A;BB2A;1106 116D 11B9;BB2A;1106 116D 11B9;
+BB2B;BB2B;1106 116D 11BA;BB2B;1106 116D 11BA;
+BB2C;BB2C;1106 116D 11BB;BB2C;1106 116D 11BB;
+BB2D;BB2D;1106 116D 11BC;BB2D;1106 116D 11BC;
+BB2E;BB2E;1106 116D 11BD;BB2E;1106 116D 11BD;
+BB2F;BB2F;1106 116D 11BE;BB2F;1106 116D 11BE;
+BB30;BB30;1106 116D 11BF;BB30;1106 116D 11BF;
+BB31;BB31;1106 116D 11C0;BB31;1106 116D 11C0;
+BB32;BB32;1106 116D 11C1;BB32;1106 116D 11C1;
+BB33;BB33;1106 116D 11C2;BB33;1106 116D 11C2;
+BB34;BB34;1106 116E;BB34;1106 116E;
+BB35;BB35;1106 116E 11A8;BB35;1106 116E 11A8;
+BB36;BB36;1106 116E 11A9;BB36;1106 116E 11A9;
+BB37;BB37;1106 116E 11AA;BB37;1106 116E 11AA;
+BB38;BB38;1106 116E 11AB;BB38;1106 116E 11AB;
+BB39;BB39;1106 116E 11AC;BB39;1106 116E 11AC;
+BB3A;BB3A;1106 116E 11AD;BB3A;1106 116E 11AD;
+BB3B;BB3B;1106 116E 11AE;BB3B;1106 116E 11AE;
+BB3C;BB3C;1106 116E 11AF;BB3C;1106 116E 11AF;
+BB3D;BB3D;1106 116E 11B0;BB3D;1106 116E 11B0;
+BB3E;BB3E;1106 116E 11B1;BB3E;1106 116E 11B1;
+BB3F;BB3F;1106 116E 11B2;BB3F;1106 116E 11B2;
+BB40;BB40;1106 116E 11B3;BB40;1106 116E 11B3;
+BB41;BB41;1106 116E 11B4;BB41;1106 116E 11B4;
+BB42;BB42;1106 116E 11B5;BB42;1106 116E 11B5;
+BB43;BB43;1106 116E 11B6;BB43;1106 116E 11B6;
+BB44;BB44;1106 116E 11B7;BB44;1106 116E 11B7;
+BB45;BB45;1106 116E 11B8;BB45;1106 116E 11B8;
+BB46;BB46;1106 116E 11B9;BB46;1106 116E 11B9;
+BB47;BB47;1106 116E 11BA;BB47;1106 116E 11BA;
+BB48;BB48;1106 116E 11BB;BB48;1106 116E 11BB;
+BB49;BB49;1106 116E 11BC;BB49;1106 116E 11BC;
+BB4A;BB4A;1106 116E 11BD;BB4A;1106 116E 11BD;
+BB4B;BB4B;1106 116E 11BE;BB4B;1106 116E 11BE;
+BB4C;BB4C;1106 116E 11BF;BB4C;1106 116E 11BF;
+BB4D;BB4D;1106 116E 11C0;BB4D;1106 116E 11C0;
+BB4E;BB4E;1106 116E 11C1;BB4E;1106 116E 11C1;
+BB4F;BB4F;1106 116E 11C2;BB4F;1106 116E 11C2;
+BB50;BB50;1106 116F;BB50;1106 116F;
+BB51;BB51;1106 116F 11A8;BB51;1106 116F 11A8;
+BB52;BB52;1106 116F 11A9;BB52;1106 116F 11A9;
+BB53;BB53;1106 116F 11AA;BB53;1106 116F 11AA;
+BB54;BB54;1106 116F 11AB;BB54;1106 116F 11AB;
+BB55;BB55;1106 116F 11AC;BB55;1106 116F 11AC;
+BB56;BB56;1106 116F 11AD;BB56;1106 116F 11AD;
+BB57;BB57;1106 116F 11AE;BB57;1106 116F 11AE;
+BB58;BB58;1106 116F 11AF;BB58;1106 116F 11AF;
+BB59;BB59;1106 116F 11B0;BB59;1106 116F 11B0;
+BB5A;BB5A;1106 116F 11B1;BB5A;1106 116F 11B1;
+BB5B;BB5B;1106 116F 11B2;BB5B;1106 116F 11B2;
+BB5C;BB5C;1106 116F 11B3;BB5C;1106 116F 11B3;
+BB5D;BB5D;1106 116F 11B4;BB5D;1106 116F 11B4;
+BB5E;BB5E;1106 116F 11B5;BB5E;1106 116F 11B5;
+BB5F;BB5F;1106 116F 11B6;BB5F;1106 116F 11B6;
+BB60;BB60;1106 116F 11B7;BB60;1106 116F 11B7;
+BB61;BB61;1106 116F 11B8;BB61;1106 116F 11B8;
+BB62;BB62;1106 116F 11B9;BB62;1106 116F 11B9;
+BB63;BB63;1106 116F 11BA;BB63;1106 116F 11BA;
+BB64;BB64;1106 116F 11BB;BB64;1106 116F 11BB;
+BB65;BB65;1106 116F 11BC;BB65;1106 116F 11BC;
+BB66;BB66;1106 116F 11BD;BB66;1106 116F 11BD;
+BB67;BB67;1106 116F 11BE;BB67;1106 116F 11BE;
+BB68;BB68;1106 116F 11BF;BB68;1106 116F 11BF;
+BB69;BB69;1106 116F 11C0;BB69;1106 116F 11C0;
+BB6A;BB6A;1106 116F 11C1;BB6A;1106 116F 11C1;
+BB6B;BB6B;1106 116F 11C2;BB6B;1106 116F 11C2;
+BB6C;BB6C;1106 1170;BB6C;1106 1170;
+BB6D;BB6D;1106 1170 11A8;BB6D;1106 1170 11A8;
+BB6E;BB6E;1106 1170 11A9;BB6E;1106 1170 11A9;
+BB6F;BB6F;1106 1170 11AA;BB6F;1106 1170 11AA;
+BB70;BB70;1106 1170 11AB;BB70;1106 1170 11AB;
+BB71;BB71;1106 1170 11AC;BB71;1106 1170 11AC;
+BB72;BB72;1106 1170 11AD;BB72;1106 1170 11AD;
+BB73;BB73;1106 1170 11AE;BB73;1106 1170 11AE;
+BB74;BB74;1106 1170 11AF;BB74;1106 1170 11AF;
+BB75;BB75;1106 1170 11B0;BB75;1106 1170 11B0;
+BB76;BB76;1106 1170 11B1;BB76;1106 1170 11B1;
+BB77;BB77;1106 1170 11B2;BB77;1106 1170 11B2;
+BB78;BB78;1106 1170 11B3;BB78;1106 1170 11B3;
+BB79;BB79;1106 1170 11B4;BB79;1106 1170 11B4;
+BB7A;BB7A;1106 1170 11B5;BB7A;1106 1170 11B5;
+BB7B;BB7B;1106 1170 11B6;BB7B;1106 1170 11B6;
+BB7C;BB7C;1106 1170 11B7;BB7C;1106 1170 11B7;
+BB7D;BB7D;1106 1170 11B8;BB7D;1106 1170 11B8;
+BB7E;BB7E;1106 1170 11B9;BB7E;1106 1170 11B9;
+BB7F;BB7F;1106 1170 11BA;BB7F;1106 1170 11BA;
+BB80;BB80;1106 1170 11BB;BB80;1106 1170 11BB;
+BB81;BB81;1106 1170 11BC;BB81;1106 1170 11BC;
+BB82;BB82;1106 1170 11BD;BB82;1106 1170 11BD;
+BB83;BB83;1106 1170 11BE;BB83;1106 1170 11BE;
+BB84;BB84;1106 1170 11BF;BB84;1106 1170 11BF;
+BB85;BB85;1106 1170 11C0;BB85;1106 1170 11C0;
+BB86;BB86;1106 1170 11C1;BB86;1106 1170 11C1;
+BB87;BB87;1106 1170 11C2;BB87;1106 1170 11C2;
+BB88;BB88;1106 1171;BB88;1106 1171;
+BB89;BB89;1106 1171 11A8;BB89;1106 1171 11A8;
+BB8A;BB8A;1106 1171 11A9;BB8A;1106 1171 11A9;
+BB8B;BB8B;1106 1171 11AA;BB8B;1106 1171 11AA;
+BB8C;BB8C;1106 1171 11AB;BB8C;1106 1171 11AB;
+BB8D;BB8D;1106 1171 11AC;BB8D;1106 1171 11AC;
+BB8E;BB8E;1106 1171 11AD;BB8E;1106 1171 11AD;
+BB8F;BB8F;1106 1171 11AE;BB8F;1106 1171 11AE;
+BB90;BB90;1106 1171 11AF;BB90;1106 1171 11AF;
+BB91;BB91;1106 1171 11B0;BB91;1106 1171 11B0;
+BB92;BB92;1106 1171 11B1;BB92;1106 1171 11B1;
+BB93;BB93;1106 1171 11B2;BB93;1106 1171 11B2;
+BB94;BB94;1106 1171 11B3;BB94;1106 1171 11B3;
+BB95;BB95;1106 1171 11B4;BB95;1106 1171 11B4;
+BB96;BB96;1106 1171 11B5;BB96;1106 1171 11B5;
+BB97;BB97;1106 1171 11B6;BB97;1106 1171 11B6;
+BB98;BB98;1106 1171 11B7;BB98;1106 1171 11B7;
+BB99;BB99;1106 1171 11B8;BB99;1106 1171 11B8;
+BB9A;BB9A;1106 1171 11B9;BB9A;1106 1171 11B9;
+BB9B;BB9B;1106 1171 11BA;BB9B;1106 1171 11BA;
+BB9C;BB9C;1106 1171 11BB;BB9C;1106 1171 11BB;
+BB9D;BB9D;1106 1171 11BC;BB9D;1106 1171 11BC;
+BB9E;BB9E;1106 1171 11BD;BB9E;1106 1171 11BD;
+BB9F;BB9F;1106 1171 11BE;BB9F;1106 1171 11BE;
+BBA0;BBA0;1106 1171 11BF;BBA0;1106 1171 11BF;
+BBA1;BBA1;1106 1171 11C0;BBA1;1106 1171 11C0;
+BBA2;BBA2;1106 1171 11C1;BBA2;1106 1171 11C1;
+BBA3;BBA3;1106 1171 11C2;BBA3;1106 1171 11C2;
+BBA4;BBA4;1106 1172;BBA4;1106 1172;
+BBA5;BBA5;1106 1172 11A8;BBA5;1106 1172 11A8;
+BBA6;BBA6;1106 1172 11A9;BBA6;1106 1172 11A9;
+BBA7;BBA7;1106 1172 11AA;BBA7;1106 1172 11AA;
+BBA8;BBA8;1106 1172 11AB;BBA8;1106 1172 11AB;
+BBA9;BBA9;1106 1172 11AC;BBA9;1106 1172 11AC;
+BBAA;BBAA;1106 1172 11AD;BBAA;1106 1172 11AD;
+BBAB;BBAB;1106 1172 11AE;BBAB;1106 1172 11AE;
+BBAC;BBAC;1106 1172 11AF;BBAC;1106 1172 11AF;
+BBAD;BBAD;1106 1172 11B0;BBAD;1106 1172 11B0;
+BBAE;BBAE;1106 1172 11B1;BBAE;1106 1172 11B1;
+BBAF;BBAF;1106 1172 11B2;BBAF;1106 1172 11B2;
+BBB0;BBB0;1106 1172 11B3;BBB0;1106 1172 11B3;
+BBB1;BBB1;1106 1172 11B4;BBB1;1106 1172 11B4;
+BBB2;BBB2;1106 1172 11B5;BBB2;1106 1172 11B5;
+BBB3;BBB3;1106 1172 11B6;BBB3;1106 1172 11B6;
+BBB4;BBB4;1106 1172 11B7;BBB4;1106 1172 11B7;
+BBB5;BBB5;1106 1172 11B8;BBB5;1106 1172 11B8;
+BBB6;BBB6;1106 1172 11B9;BBB6;1106 1172 11B9;
+BBB7;BBB7;1106 1172 11BA;BBB7;1106 1172 11BA;
+BBB8;BBB8;1106 1172 11BB;BBB8;1106 1172 11BB;
+BBB9;BBB9;1106 1172 11BC;BBB9;1106 1172 11BC;
+BBBA;BBBA;1106 1172 11BD;BBBA;1106 1172 11BD;
+BBBB;BBBB;1106 1172 11BE;BBBB;1106 1172 11BE;
+BBBC;BBBC;1106 1172 11BF;BBBC;1106 1172 11BF;
+BBBD;BBBD;1106 1172 11C0;BBBD;1106 1172 11C0;
+BBBE;BBBE;1106 1172 11C1;BBBE;1106 1172 11C1;
+BBBF;BBBF;1106 1172 11C2;BBBF;1106 1172 11C2;
+BBC0;BBC0;1106 1173;BBC0;1106 1173;
+BBC1;BBC1;1106 1173 11A8;BBC1;1106 1173 11A8;
+BBC2;BBC2;1106 1173 11A9;BBC2;1106 1173 11A9;
+BBC3;BBC3;1106 1173 11AA;BBC3;1106 1173 11AA;
+BBC4;BBC4;1106 1173 11AB;BBC4;1106 1173 11AB;
+BBC5;BBC5;1106 1173 11AC;BBC5;1106 1173 11AC;
+BBC6;BBC6;1106 1173 11AD;BBC6;1106 1173 11AD;
+BBC7;BBC7;1106 1173 11AE;BBC7;1106 1173 11AE;
+BBC8;BBC8;1106 1173 11AF;BBC8;1106 1173 11AF;
+BBC9;BBC9;1106 1173 11B0;BBC9;1106 1173 11B0;
+BBCA;BBCA;1106 1173 11B1;BBCA;1106 1173 11B1;
+BBCB;BBCB;1106 1173 11B2;BBCB;1106 1173 11B2;
+BBCC;BBCC;1106 1173 11B3;BBCC;1106 1173 11B3;
+BBCD;BBCD;1106 1173 11B4;BBCD;1106 1173 11B4;
+BBCE;BBCE;1106 1173 11B5;BBCE;1106 1173 11B5;
+BBCF;BBCF;1106 1173 11B6;BBCF;1106 1173 11B6;
+BBD0;BBD0;1106 1173 11B7;BBD0;1106 1173 11B7;
+BBD1;BBD1;1106 1173 11B8;BBD1;1106 1173 11B8;
+BBD2;BBD2;1106 1173 11B9;BBD2;1106 1173 11B9;
+BBD3;BBD3;1106 1173 11BA;BBD3;1106 1173 11BA;
+BBD4;BBD4;1106 1173 11BB;BBD4;1106 1173 11BB;
+BBD5;BBD5;1106 1173 11BC;BBD5;1106 1173 11BC;
+BBD6;BBD6;1106 1173 11BD;BBD6;1106 1173 11BD;
+BBD7;BBD7;1106 1173 11BE;BBD7;1106 1173 11BE;
+BBD8;BBD8;1106 1173 11BF;BBD8;1106 1173 11BF;
+BBD9;BBD9;1106 1173 11C0;BBD9;1106 1173 11C0;
+BBDA;BBDA;1106 1173 11C1;BBDA;1106 1173 11C1;
+BBDB;BBDB;1106 1173 11C2;BBDB;1106 1173 11C2;
+BBDC;BBDC;1106 1174;BBDC;1106 1174;
+BBDD;BBDD;1106 1174 11A8;BBDD;1106 1174 11A8;
+BBDE;BBDE;1106 1174 11A9;BBDE;1106 1174 11A9;
+BBDF;BBDF;1106 1174 11AA;BBDF;1106 1174 11AA;
+BBE0;BBE0;1106 1174 11AB;BBE0;1106 1174 11AB;
+BBE1;BBE1;1106 1174 11AC;BBE1;1106 1174 11AC;
+BBE2;BBE2;1106 1174 11AD;BBE2;1106 1174 11AD;
+BBE3;BBE3;1106 1174 11AE;BBE3;1106 1174 11AE;
+BBE4;BBE4;1106 1174 11AF;BBE4;1106 1174 11AF;
+BBE5;BBE5;1106 1174 11B0;BBE5;1106 1174 11B0;
+BBE6;BBE6;1106 1174 11B1;BBE6;1106 1174 11B1;
+BBE7;BBE7;1106 1174 11B2;BBE7;1106 1174 11B2;
+BBE8;BBE8;1106 1174 11B3;BBE8;1106 1174 11B3;
+BBE9;BBE9;1106 1174 11B4;BBE9;1106 1174 11B4;
+BBEA;BBEA;1106 1174 11B5;BBEA;1106 1174 11B5;
+BBEB;BBEB;1106 1174 11B6;BBEB;1106 1174 11B6;
+BBEC;BBEC;1106 1174 11B7;BBEC;1106 1174 11B7;
+BBED;BBED;1106 1174 11B8;BBED;1106 1174 11B8;
+BBEE;BBEE;1106 1174 11B9;BBEE;1106 1174 11B9;
+BBEF;BBEF;1106 1174 11BA;BBEF;1106 1174 11BA;
+BBF0;BBF0;1106 1174 11BB;BBF0;1106 1174 11BB;
+BBF1;BBF1;1106 1174 11BC;BBF1;1106 1174 11BC;
+BBF2;BBF2;1106 1174 11BD;BBF2;1106 1174 11BD;
+BBF3;BBF3;1106 1174 11BE;BBF3;1106 1174 11BE;
+BBF4;BBF4;1106 1174 11BF;BBF4;1106 1174 11BF;
+BBF5;BBF5;1106 1174 11C0;BBF5;1106 1174 11C0;
+BBF6;BBF6;1106 1174 11C1;BBF6;1106 1174 11C1;
+BBF7;BBF7;1106 1174 11C2;BBF7;1106 1174 11C2;
+BBF8;BBF8;1106 1175;BBF8;1106 1175;
+BBF9;BBF9;1106 1175 11A8;BBF9;1106 1175 11A8;
+BBFA;BBFA;1106 1175 11A9;BBFA;1106 1175 11A9;
+BBFB;BBFB;1106 1175 11AA;BBFB;1106 1175 11AA;
+BBFC;BBFC;1106 1175 11AB;BBFC;1106 1175 11AB;
+BBFD;BBFD;1106 1175 11AC;BBFD;1106 1175 11AC;
+BBFE;BBFE;1106 1175 11AD;BBFE;1106 1175 11AD;
+BBFF;BBFF;1106 1175 11AE;BBFF;1106 1175 11AE;
+BC00;BC00;1106 1175 11AF;BC00;1106 1175 11AF;
+BC01;BC01;1106 1175 11B0;BC01;1106 1175 11B0;
+BC02;BC02;1106 1175 11B1;BC02;1106 1175 11B1;
+BC03;BC03;1106 1175 11B2;BC03;1106 1175 11B2;
+BC04;BC04;1106 1175 11B3;BC04;1106 1175 11B3;
+BC05;BC05;1106 1175 11B4;BC05;1106 1175 11B4;
+BC06;BC06;1106 1175 11B5;BC06;1106 1175 11B5;
+BC07;BC07;1106 1175 11B6;BC07;1106 1175 11B6;
+BC08;BC08;1106 1175 11B7;BC08;1106 1175 11B7;
+BC09;BC09;1106 1175 11B8;BC09;1106 1175 11B8;
+BC0A;BC0A;1106 1175 11B9;BC0A;1106 1175 11B9;
+BC0B;BC0B;1106 1175 11BA;BC0B;1106 1175 11BA;
+BC0C;BC0C;1106 1175 11BB;BC0C;1106 1175 11BB;
+BC0D;BC0D;1106 1175 11BC;BC0D;1106 1175 11BC;
+BC0E;BC0E;1106 1175 11BD;BC0E;1106 1175 11BD;
+BC0F;BC0F;1106 1175 11BE;BC0F;1106 1175 11BE;
+BC10;BC10;1106 1175 11BF;BC10;1106 1175 11BF;
+BC11;BC11;1106 1175 11C0;BC11;1106 1175 11C0;
+BC12;BC12;1106 1175 11C1;BC12;1106 1175 11C1;
+BC13;BC13;1106 1175 11C2;BC13;1106 1175 11C2;
+BC14;BC14;1107 1161;BC14;1107 1161;
+BC15;BC15;1107 1161 11A8;BC15;1107 1161 11A8;
+BC16;BC16;1107 1161 11A9;BC16;1107 1161 11A9;
+BC17;BC17;1107 1161 11AA;BC17;1107 1161 11AA;
+BC18;BC18;1107 1161 11AB;BC18;1107 1161 11AB;
+BC19;BC19;1107 1161 11AC;BC19;1107 1161 11AC;
+BC1A;BC1A;1107 1161 11AD;BC1A;1107 1161 11AD;
+BC1B;BC1B;1107 1161 11AE;BC1B;1107 1161 11AE;
+BC1C;BC1C;1107 1161 11AF;BC1C;1107 1161 11AF;
+BC1D;BC1D;1107 1161 11B0;BC1D;1107 1161 11B0;
+BC1E;BC1E;1107 1161 11B1;BC1E;1107 1161 11B1;
+BC1F;BC1F;1107 1161 11B2;BC1F;1107 1161 11B2;
+BC20;BC20;1107 1161 11B3;BC20;1107 1161 11B3;
+BC21;BC21;1107 1161 11B4;BC21;1107 1161 11B4;
+BC22;BC22;1107 1161 11B5;BC22;1107 1161 11B5;
+BC23;BC23;1107 1161 11B6;BC23;1107 1161 11B6;
+BC24;BC24;1107 1161 11B7;BC24;1107 1161 11B7;
+BC25;BC25;1107 1161 11B8;BC25;1107 1161 11B8;
+BC26;BC26;1107 1161 11B9;BC26;1107 1161 11B9;
+BC27;BC27;1107 1161 11BA;BC27;1107 1161 11BA;
+BC28;BC28;1107 1161 11BB;BC28;1107 1161 11BB;
+BC29;BC29;1107 1161 11BC;BC29;1107 1161 11BC;
+BC2A;BC2A;1107 1161 11BD;BC2A;1107 1161 11BD;
+BC2B;BC2B;1107 1161 11BE;BC2B;1107 1161 11BE;
+BC2C;BC2C;1107 1161 11BF;BC2C;1107 1161 11BF;
+BC2D;BC2D;1107 1161 11C0;BC2D;1107 1161 11C0;
+BC2E;BC2E;1107 1161 11C1;BC2E;1107 1161 11C1;
+BC2F;BC2F;1107 1161 11C2;BC2F;1107 1161 11C2;
+BC30;BC30;1107 1162;BC30;1107 1162;
+BC31;BC31;1107 1162 11A8;BC31;1107 1162 11A8;
+BC32;BC32;1107 1162 11A9;BC32;1107 1162 11A9;
+BC33;BC33;1107 1162 11AA;BC33;1107 1162 11AA;
+BC34;BC34;1107 1162 11AB;BC34;1107 1162 11AB;
+BC35;BC35;1107 1162 11AC;BC35;1107 1162 11AC;
+BC36;BC36;1107 1162 11AD;BC36;1107 1162 11AD;
+BC37;BC37;1107 1162 11AE;BC37;1107 1162 11AE;
+BC38;BC38;1107 1162 11AF;BC38;1107 1162 11AF;
+BC39;BC39;1107 1162 11B0;BC39;1107 1162 11B0;
+BC3A;BC3A;1107 1162 11B1;BC3A;1107 1162 11B1;
+BC3B;BC3B;1107 1162 11B2;BC3B;1107 1162 11B2;
+BC3C;BC3C;1107 1162 11B3;BC3C;1107 1162 11B3;
+BC3D;BC3D;1107 1162 11B4;BC3D;1107 1162 11B4;
+BC3E;BC3E;1107 1162 11B5;BC3E;1107 1162 11B5;
+BC3F;BC3F;1107 1162 11B6;BC3F;1107 1162 11B6;
+BC40;BC40;1107 1162 11B7;BC40;1107 1162 11B7;
+BC41;BC41;1107 1162 11B8;BC41;1107 1162 11B8;
+BC42;BC42;1107 1162 11B9;BC42;1107 1162 11B9;
+BC43;BC43;1107 1162 11BA;BC43;1107 1162 11BA;
+BC44;BC44;1107 1162 11BB;BC44;1107 1162 11BB;
+BC45;BC45;1107 1162 11BC;BC45;1107 1162 11BC;
+BC46;BC46;1107 1162 11BD;BC46;1107 1162 11BD;
+BC47;BC47;1107 1162 11BE;BC47;1107 1162 11BE;
+BC48;BC48;1107 1162 11BF;BC48;1107 1162 11BF;
+BC49;BC49;1107 1162 11C0;BC49;1107 1162 11C0;
+BC4A;BC4A;1107 1162 11C1;BC4A;1107 1162 11C1;
+BC4B;BC4B;1107 1162 11C2;BC4B;1107 1162 11C2;
+BC4C;BC4C;1107 1163;BC4C;1107 1163;
+BC4D;BC4D;1107 1163 11A8;BC4D;1107 1163 11A8;
+BC4E;BC4E;1107 1163 11A9;BC4E;1107 1163 11A9;
+BC4F;BC4F;1107 1163 11AA;BC4F;1107 1163 11AA;
+BC50;BC50;1107 1163 11AB;BC50;1107 1163 11AB;
+BC51;BC51;1107 1163 11AC;BC51;1107 1163 11AC;
+BC52;BC52;1107 1163 11AD;BC52;1107 1163 11AD;
+BC53;BC53;1107 1163 11AE;BC53;1107 1163 11AE;
+BC54;BC54;1107 1163 11AF;BC54;1107 1163 11AF;
+BC55;BC55;1107 1163 11B0;BC55;1107 1163 11B0;
+BC56;BC56;1107 1163 11B1;BC56;1107 1163 11B1;
+BC57;BC57;1107 1163 11B2;BC57;1107 1163 11B2;
+BC58;BC58;1107 1163 11B3;BC58;1107 1163 11B3;
+BC59;BC59;1107 1163 11B4;BC59;1107 1163 11B4;
+BC5A;BC5A;1107 1163 11B5;BC5A;1107 1163 11B5;
+BC5B;BC5B;1107 1163 11B6;BC5B;1107 1163 11B6;
+BC5C;BC5C;1107 1163 11B7;BC5C;1107 1163 11B7;
+BC5D;BC5D;1107 1163 11B8;BC5D;1107 1163 11B8;
+BC5E;BC5E;1107 1163 11B9;BC5E;1107 1163 11B9;
+BC5F;BC5F;1107 1163 11BA;BC5F;1107 1163 11BA;
+BC60;BC60;1107 1163 11BB;BC60;1107 1163 11BB;
+BC61;BC61;1107 1163 11BC;BC61;1107 1163 11BC;
+BC62;BC62;1107 1163 11BD;BC62;1107 1163 11BD;
+BC63;BC63;1107 1163 11BE;BC63;1107 1163 11BE;
+BC64;BC64;1107 1163 11BF;BC64;1107 1163 11BF;
+BC65;BC65;1107 1163 11C0;BC65;1107 1163 11C0;
+BC66;BC66;1107 1163 11C1;BC66;1107 1163 11C1;
+BC67;BC67;1107 1163 11C2;BC67;1107 1163 11C2;
+BC68;BC68;1107 1164;BC68;1107 1164;
+BC69;BC69;1107 1164 11A8;BC69;1107 1164 11A8;
+BC6A;BC6A;1107 1164 11A9;BC6A;1107 1164 11A9;
+BC6B;BC6B;1107 1164 11AA;BC6B;1107 1164 11AA;
+BC6C;BC6C;1107 1164 11AB;BC6C;1107 1164 11AB;
+BC6D;BC6D;1107 1164 11AC;BC6D;1107 1164 11AC;
+BC6E;BC6E;1107 1164 11AD;BC6E;1107 1164 11AD;
+BC6F;BC6F;1107 1164 11AE;BC6F;1107 1164 11AE;
+BC70;BC70;1107 1164 11AF;BC70;1107 1164 11AF;
+BC71;BC71;1107 1164 11B0;BC71;1107 1164 11B0;
+BC72;BC72;1107 1164 11B1;BC72;1107 1164 11B1;
+BC73;BC73;1107 1164 11B2;BC73;1107 1164 11B2;
+BC74;BC74;1107 1164 11B3;BC74;1107 1164 11B3;
+BC75;BC75;1107 1164 11B4;BC75;1107 1164 11B4;
+BC76;BC76;1107 1164 11B5;BC76;1107 1164 11B5;
+BC77;BC77;1107 1164 11B6;BC77;1107 1164 11B6;
+BC78;BC78;1107 1164 11B7;BC78;1107 1164 11B7;
+BC79;BC79;1107 1164 11B8;BC79;1107 1164 11B8;
+BC7A;BC7A;1107 1164 11B9;BC7A;1107 1164 11B9;
+BC7B;BC7B;1107 1164 11BA;BC7B;1107 1164 11BA;
+BC7C;BC7C;1107 1164 11BB;BC7C;1107 1164 11BB;
+BC7D;BC7D;1107 1164 11BC;BC7D;1107 1164 11BC;
+BC7E;BC7E;1107 1164 11BD;BC7E;1107 1164 11BD;
+BC7F;BC7F;1107 1164 11BE;BC7F;1107 1164 11BE;
+BC80;BC80;1107 1164 11BF;BC80;1107 1164 11BF;
+BC81;BC81;1107 1164 11C0;BC81;1107 1164 11C0;
+BC82;BC82;1107 1164 11C1;BC82;1107 1164 11C1;
+BC83;BC83;1107 1164 11C2;BC83;1107 1164 11C2;
+BC84;BC84;1107 1165;BC84;1107 1165;
+BC85;BC85;1107 1165 11A8;BC85;1107 1165 11A8;
+BC86;BC86;1107 1165 11A9;BC86;1107 1165 11A9;
+BC87;BC87;1107 1165 11AA;BC87;1107 1165 11AA;
+BC88;BC88;1107 1165 11AB;BC88;1107 1165 11AB;
+BC89;BC89;1107 1165 11AC;BC89;1107 1165 11AC;
+BC8A;BC8A;1107 1165 11AD;BC8A;1107 1165 11AD;
+BC8B;BC8B;1107 1165 11AE;BC8B;1107 1165 11AE;
+BC8C;BC8C;1107 1165 11AF;BC8C;1107 1165 11AF;
+BC8D;BC8D;1107 1165 11B0;BC8D;1107 1165 11B0;
+BC8E;BC8E;1107 1165 11B1;BC8E;1107 1165 11B1;
+BC8F;BC8F;1107 1165 11B2;BC8F;1107 1165 11B2;
+BC90;BC90;1107 1165 11B3;BC90;1107 1165 11B3;
+BC91;BC91;1107 1165 11B4;BC91;1107 1165 11B4;
+BC92;BC92;1107 1165 11B5;BC92;1107 1165 11B5;
+BC93;BC93;1107 1165 11B6;BC93;1107 1165 11B6;
+BC94;BC94;1107 1165 11B7;BC94;1107 1165 11B7;
+BC95;BC95;1107 1165 11B8;BC95;1107 1165 11B8;
+BC96;BC96;1107 1165 11B9;BC96;1107 1165 11B9;
+BC97;BC97;1107 1165 11BA;BC97;1107 1165 11BA;
+BC98;BC98;1107 1165 11BB;BC98;1107 1165 11BB;
+BC99;BC99;1107 1165 11BC;BC99;1107 1165 11BC;
+BC9A;BC9A;1107 1165 11BD;BC9A;1107 1165 11BD;
+BC9B;BC9B;1107 1165 11BE;BC9B;1107 1165 11BE;
+BC9C;BC9C;1107 1165 11BF;BC9C;1107 1165 11BF;
+BC9D;BC9D;1107 1165 11C0;BC9D;1107 1165 11C0;
+BC9E;BC9E;1107 1165 11C1;BC9E;1107 1165 11C1;
+BC9F;BC9F;1107 1165 11C2;BC9F;1107 1165 11C2;
+BCA0;BCA0;1107 1166;BCA0;1107 1166;
+BCA1;BCA1;1107 1166 11A8;BCA1;1107 1166 11A8;
+BCA2;BCA2;1107 1166 11A9;BCA2;1107 1166 11A9;
+BCA3;BCA3;1107 1166 11AA;BCA3;1107 1166 11AA;
+BCA4;BCA4;1107 1166 11AB;BCA4;1107 1166 11AB;
+BCA5;BCA5;1107 1166 11AC;BCA5;1107 1166 11AC;
+BCA6;BCA6;1107 1166 11AD;BCA6;1107 1166 11AD;
+BCA7;BCA7;1107 1166 11AE;BCA7;1107 1166 11AE;
+BCA8;BCA8;1107 1166 11AF;BCA8;1107 1166 11AF;
+BCA9;BCA9;1107 1166 11B0;BCA9;1107 1166 11B0;
+BCAA;BCAA;1107 1166 11B1;BCAA;1107 1166 11B1;
+BCAB;BCAB;1107 1166 11B2;BCAB;1107 1166 11B2;
+BCAC;BCAC;1107 1166 11B3;BCAC;1107 1166 11B3;
+BCAD;BCAD;1107 1166 11B4;BCAD;1107 1166 11B4;
+BCAE;BCAE;1107 1166 11B5;BCAE;1107 1166 11B5;
+BCAF;BCAF;1107 1166 11B6;BCAF;1107 1166 11B6;
+BCB0;BCB0;1107 1166 11B7;BCB0;1107 1166 11B7;
+BCB1;BCB1;1107 1166 11B8;BCB1;1107 1166 11B8;
+BCB2;BCB2;1107 1166 11B9;BCB2;1107 1166 11B9;
+BCB3;BCB3;1107 1166 11BA;BCB3;1107 1166 11BA;
+BCB4;BCB4;1107 1166 11BB;BCB4;1107 1166 11BB;
+BCB5;BCB5;1107 1166 11BC;BCB5;1107 1166 11BC;
+BCB6;BCB6;1107 1166 11BD;BCB6;1107 1166 11BD;
+BCB7;BCB7;1107 1166 11BE;BCB7;1107 1166 11BE;
+BCB8;BCB8;1107 1166 11BF;BCB8;1107 1166 11BF;
+BCB9;BCB9;1107 1166 11C0;BCB9;1107 1166 11C0;
+BCBA;BCBA;1107 1166 11C1;BCBA;1107 1166 11C1;
+BCBB;BCBB;1107 1166 11C2;BCBB;1107 1166 11C2;
+BCBC;BCBC;1107 1167;BCBC;1107 1167;
+BCBD;BCBD;1107 1167 11A8;BCBD;1107 1167 11A8;
+BCBE;BCBE;1107 1167 11A9;BCBE;1107 1167 11A9;
+BCBF;BCBF;1107 1167 11AA;BCBF;1107 1167 11AA;
+BCC0;BCC0;1107 1167 11AB;BCC0;1107 1167 11AB;
+BCC1;BCC1;1107 1167 11AC;BCC1;1107 1167 11AC;
+BCC2;BCC2;1107 1167 11AD;BCC2;1107 1167 11AD;
+BCC3;BCC3;1107 1167 11AE;BCC3;1107 1167 11AE;
+BCC4;BCC4;1107 1167 11AF;BCC4;1107 1167 11AF;
+BCC5;BCC5;1107 1167 11B0;BCC5;1107 1167 11B0;
+BCC6;BCC6;1107 1167 11B1;BCC6;1107 1167 11B1;
+BCC7;BCC7;1107 1167 11B2;BCC7;1107 1167 11B2;
+BCC8;BCC8;1107 1167 11B3;BCC8;1107 1167 11B3;
+BCC9;BCC9;1107 1167 11B4;BCC9;1107 1167 11B4;
+BCCA;BCCA;1107 1167 11B5;BCCA;1107 1167 11B5;
+BCCB;BCCB;1107 1167 11B6;BCCB;1107 1167 11B6;
+BCCC;BCCC;1107 1167 11B7;BCCC;1107 1167 11B7;
+BCCD;BCCD;1107 1167 11B8;BCCD;1107 1167 11B8;
+BCCE;BCCE;1107 1167 11B9;BCCE;1107 1167 11B9;
+BCCF;BCCF;1107 1167 11BA;BCCF;1107 1167 11BA;
+BCD0;BCD0;1107 1167 11BB;BCD0;1107 1167 11BB;
+BCD1;BCD1;1107 1167 11BC;BCD1;1107 1167 11BC;
+BCD2;BCD2;1107 1167 11BD;BCD2;1107 1167 11BD;
+BCD3;BCD3;1107 1167 11BE;BCD3;1107 1167 11BE;
+BCD4;BCD4;1107 1167 11BF;BCD4;1107 1167 11BF;
+BCD5;BCD5;1107 1167 11C0;BCD5;1107 1167 11C0;
+BCD6;BCD6;1107 1167 11C1;BCD6;1107 1167 11C1;
+BCD7;BCD7;1107 1167 11C2;BCD7;1107 1167 11C2;
+BCD8;BCD8;1107 1168;BCD8;1107 1168;
+BCD9;BCD9;1107 1168 11A8;BCD9;1107 1168 11A8;
+BCDA;BCDA;1107 1168 11A9;BCDA;1107 1168 11A9;
+BCDB;BCDB;1107 1168 11AA;BCDB;1107 1168 11AA;
+BCDC;BCDC;1107 1168 11AB;BCDC;1107 1168 11AB;
+BCDD;BCDD;1107 1168 11AC;BCDD;1107 1168 11AC;
+BCDE;BCDE;1107 1168 11AD;BCDE;1107 1168 11AD;
+BCDF;BCDF;1107 1168 11AE;BCDF;1107 1168 11AE;
+BCE0;BCE0;1107 1168 11AF;BCE0;1107 1168 11AF;
+BCE1;BCE1;1107 1168 11B0;BCE1;1107 1168 11B0;
+BCE2;BCE2;1107 1168 11B1;BCE2;1107 1168 11B1;
+BCE3;BCE3;1107 1168 11B2;BCE3;1107 1168 11B2;
+BCE4;BCE4;1107 1168 11B3;BCE4;1107 1168 11B3;
+BCE5;BCE5;1107 1168 11B4;BCE5;1107 1168 11B4;
+BCE6;BCE6;1107 1168 11B5;BCE6;1107 1168 11B5;
+BCE7;BCE7;1107 1168 11B6;BCE7;1107 1168 11B6;
+BCE8;BCE8;1107 1168 11B7;BCE8;1107 1168 11B7;
+BCE9;BCE9;1107 1168 11B8;BCE9;1107 1168 11B8;
+BCEA;BCEA;1107 1168 11B9;BCEA;1107 1168 11B9;
+BCEB;BCEB;1107 1168 11BA;BCEB;1107 1168 11BA;
+BCEC;BCEC;1107 1168 11BB;BCEC;1107 1168 11BB;
+BCED;BCED;1107 1168 11BC;BCED;1107 1168 11BC;
+BCEE;BCEE;1107 1168 11BD;BCEE;1107 1168 11BD;
+BCEF;BCEF;1107 1168 11BE;BCEF;1107 1168 11BE;
+BCF0;BCF0;1107 1168 11BF;BCF0;1107 1168 11BF;
+BCF1;BCF1;1107 1168 11C0;BCF1;1107 1168 11C0;
+BCF2;BCF2;1107 1168 11C1;BCF2;1107 1168 11C1;
+BCF3;BCF3;1107 1168 11C2;BCF3;1107 1168 11C2;
+BCF4;BCF4;1107 1169;BCF4;1107 1169;
+BCF5;BCF5;1107 1169 11A8;BCF5;1107 1169 11A8;
+BCF6;BCF6;1107 1169 11A9;BCF6;1107 1169 11A9;
+BCF7;BCF7;1107 1169 11AA;BCF7;1107 1169 11AA;
+BCF8;BCF8;1107 1169 11AB;BCF8;1107 1169 11AB;
+BCF9;BCF9;1107 1169 11AC;BCF9;1107 1169 11AC;
+BCFA;BCFA;1107 1169 11AD;BCFA;1107 1169 11AD;
+BCFB;BCFB;1107 1169 11AE;BCFB;1107 1169 11AE;
+BCFC;BCFC;1107 1169 11AF;BCFC;1107 1169 11AF;
+BCFD;BCFD;1107 1169 11B0;BCFD;1107 1169 11B0;
+BCFE;BCFE;1107 1169 11B1;BCFE;1107 1169 11B1;
+BCFF;BCFF;1107 1169 11B2;BCFF;1107 1169 11B2;
+BD00;BD00;1107 1169 11B3;BD00;1107 1169 11B3;
+BD01;BD01;1107 1169 11B4;BD01;1107 1169 11B4;
+BD02;BD02;1107 1169 11B5;BD02;1107 1169 11B5;
+BD03;BD03;1107 1169 11B6;BD03;1107 1169 11B6;
+BD04;BD04;1107 1169 11B7;BD04;1107 1169 11B7;
+BD05;BD05;1107 1169 11B8;BD05;1107 1169 11B8;
+BD06;BD06;1107 1169 11B9;BD06;1107 1169 11B9;
+BD07;BD07;1107 1169 11BA;BD07;1107 1169 11BA;
+BD08;BD08;1107 1169 11BB;BD08;1107 1169 11BB;
+BD09;BD09;1107 1169 11BC;BD09;1107 1169 11BC;
+BD0A;BD0A;1107 1169 11BD;BD0A;1107 1169 11BD;
+BD0B;BD0B;1107 1169 11BE;BD0B;1107 1169 11BE;
+BD0C;BD0C;1107 1169 11BF;BD0C;1107 1169 11BF;
+BD0D;BD0D;1107 1169 11C0;BD0D;1107 1169 11C0;
+BD0E;BD0E;1107 1169 11C1;BD0E;1107 1169 11C1;
+BD0F;BD0F;1107 1169 11C2;BD0F;1107 1169 11C2;
+BD10;BD10;1107 116A;BD10;1107 116A;
+BD11;BD11;1107 116A 11A8;BD11;1107 116A 11A8;
+BD12;BD12;1107 116A 11A9;BD12;1107 116A 11A9;
+BD13;BD13;1107 116A 11AA;BD13;1107 116A 11AA;
+BD14;BD14;1107 116A 11AB;BD14;1107 116A 11AB;
+BD15;BD15;1107 116A 11AC;BD15;1107 116A 11AC;
+BD16;BD16;1107 116A 11AD;BD16;1107 116A 11AD;
+BD17;BD17;1107 116A 11AE;BD17;1107 116A 11AE;
+BD18;BD18;1107 116A 11AF;BD18;1107 116A 11AF;
+BD19;BD19;1107 116A 11B0;BD19;1107 116A 11B0;
+BD1A;BD1A;1107 116A 11B1;BD1A;1107 116A 11B1;
+BD1B;BD1B;1107 116A 11B2;BD1B;1107 116A 11B2;
+BD1C;BD1C;1107 116A 11B3;BD1C;1107 116A 11B3;
+BD1D;BD1D;1107 116A 11B4;BD1D;1107 116A 11B4;
+BD1E;BD1E;1107 116A 11B5;BD1E;1107 116A 11B5;
+BD1F;BD1F;1107 116A 11B6;BD1F;1107 116A 11B6;
+BD20;BD20;1107 116A 11B7;BD20;1107 116A 11B7;
+BD21;BD21;1107 116A 11B8;BD21;1107 116A 11B8;
+BD22;BD22;1107 116A 11B9;BD22;1107 116A 11B9;
+BD23;BD23;1107 116A 11BA;BD23;1107 116A 11BA;
+BD24;BD24;1107 116A 11BB;BD24;1107 116A 11BB;
+BD25;BD25;1107 116A 11BC;BD25;1107 116A 11BC;
+BD26;BD26;1107 116A 11BD;BD26;1107 116A 11BD;
+BD27;BD27;1107 116A 11BE;BD27;1107 116A 11BE;
+BD28;BD28;1107 116A 11BF;BD28;1107 116A 11BF;
+BD29;BD29;1107 116A 11C0;BD29;1107 116A 11C0;
+BD2A;BD2A;1107 116A 11C1;BD2A;1107 116A 11C1;
+BD2B;BD2B;1107 116A 11C2;BD2B;1107 116A 11C2;
+BD2C;BD2C;1107 116B;BD2C;1107 116B;
+BD2D;BD2D;1107 116B 11A8;BD2D;1107 116B 11A8;
+BD2E;BD2E;1107 116B 11A9;BD2E;1107 116B 11A9;
+BD2F;BD2F;1107 116B 11AA;BD2F;1107 116B 11AA;
+BD30;BD30;1107 116B 11AB;BD30;1107 116B 11AB;
+BD31;BD31;1107 116B 11AC;BD31;1107 116B 11AC;
+BD32;BD32;1107 116B 11AD;BD32;1107 116B 11AD;
+BD33;BD33;1107 116B 11AE;BD33;1107 116B 11AE;
+BD34;BD34;1107 116B 11AF;BD34;1107 116B 11AF;
+BD35;BD35;1107 116B 11B0;BD35;1107 116B 11B0;
+BD36;BD36;1107 116B 11B1;BD36;1107 116B 11B1;
+BD37;BD37;1107 116B 11B2;BD37;1107 116B 11B2;
+BD38;BD38;1107 116B 11B3;BD38;1107 116B 11B3;
+BD39;BD39;1107 116B 11B4;BD39;1107 116B 11B4;
+BD3A;BD3A;1107 116B 11B5;BD3A;1107 116B 11B5;
+BD3B;BD3B;1107 116B 11B6;BD3B;1107 116B 11B6;
+BD3C;BD3C;1107 116B 11B7;BD3C;1107 116B 11B7;
+BD3D;BD3D;1107 116B 11B8;BD3D;1107 116B 11B8;
+BD3E;BD3E;1107 116B 11B9;BD3E;1107 116B 11B9;
+BD3F;BD3F;1107 116B 11BA;BD3F;1107 116B 11BA;
+BD40;BD40;1107 116B 11BB;BD40;1107 116B 11BB;
+BD41;BD41;1107 116B 11BC;BD41;1107 116B 11BC;
+BD42;BD42;1107 116B 11BD;BD42;1107 116B 11BD;
+BD43;BD43;1107 116B 11BE;BD43;1107 116B 11BE;
+BD44;BD44;1107 116B 11BF;BD44;1107 116B 11BF;
+BD45;BD45;1107 116B 11C0;BD45;1107 116B 11C0;
+BD46;BD46;1107 116B 11C1;BD46;1107 116B 11C1;
+BD47;BD47;1107 116B 11C2;BD47;1107 116B 11C2;
+BD48;BD48;1107 116C;BD48;1107 116C;
+BD49;BD49;1107 116C 11A8;BD49;1107 116C 11A8;
+BD4A;BD4A;1107 116C 11A9;BD4A;1107 116C 11A9;
+BD4B;BD4B;1107 116C 11AA;BD4B;1107 116C 11AA;
+BD4C;BD4C;1107 116C 11AB;BD4C;1107 116C 11AB;
+BD4D;BD4D;1107 116C 11AC;BD4D;1107 116C 11AC;
+BD4E;BD4E;1107 116C 11AD;BD4E;1107 116C 11AD;
+BD4F;BD4F;1107 116C 11AE;BD4F;1107 116C 11AE;
+BD50;BD50;1107 116C 11AF;BD50;1107 116C 11AF;
+BD51;BD51;1107 116C 11B0;BD51;1107 116C 11B0;
+BD52;BD52;1107 116C 11B1;BD52;1107 116C 11B1;
+BD53;BD53;1107 116C 11B2;BD53;1107 116C 11B2;
+BD54;BD54;1107 116C 11B3;BD54;1107 116C 11B3;
+BD55;BD55;1107 116C 11B4;BD55;1107 116C 11B4;
+BD56;BD56;1107 116C 11B5;BD56;1107 116C 11B5;
+BD57;BD57;1107 116C 11B6;BD57;1107 116C 11B6;
+BD58;BD58;1107 116C 11B7;BD58;1107 116C 11B7;
+BD59;BD59;1107 116C 11B8;BD59;1107 116C 11B8;
+BD5A;BD5A;1107 116C 11B9;BD5A;1107 116C 11B9;
+BD5B;BD5B;1107 116C 11BA;BD5B;1107 116C 11BA;
+BD5C;BD5C;1107 116C 11BB;BD5C;1107 116C 11BB;
+BD5D;BD5D;1107 116C 11BC;BD5D;1107 116C 11BC;
+BD5E;BD5E;1107 116C 11BD;BD5E;1107 116C 11BD;
+BD5F;BD5F;1107 116C 11BE;BD5F;1107 116C 11BE;
+BD60;BD60;1107 116C 11BF;BD60;1107 116C 11BF;
+BD61;BD61;1107 116C 11C0;BD61;1107 116C 11C0;
+BD62;BD62;1107 116C 11C1;BD62;1107 116C 11C1;
+BD63;BD63;1107 116C 11C2;BD63;1107 116C 11C2;
+BD64;BD64;1107 116D;BD64;1107 116D;
+BD65;BD65;1107 116D 11A8;BD65;1107 116D 11A8;
+BD66;BD66;1107 116D 11A9;BD66;1107 116D 11A9;
+BD67;BD67;1107 116D 11AA;BD67;1107 116D 11AA;
+BD68;BD68;1107 116D 11AB;BD68;1107 116D 11AB;
+BD69;BD69;1107 116D 11AC;BD69;1107 116D 11AC;
+BD6A;BD6A;1107 116D 11AD;BD6A;1107 116D 11AD;
+BD6B;BD6B;1107 116D 11AE;BD6B;1107 116D 11AE;
+BD6C;BD6C;1107 116D 11AF;BD6C;1107 116D 11AF;
+BD6D;BD6D;1107 116D 11B0;BD6D;1107 116D 11B0;
+BD6E;BD6E;1107 116D 11B1;BD6E;1107 116D 11B1;
+BD6F;BD6F;1107 116D 11B2;BD6F;1107 116D 11B2;
+BD70;BD70;1107 116D 11B3;BD70;1107 116D 11B3;
+BD71;BD71;1107 116D 11B4;BD71;1107 116D 11B4;
+BD72;BD72;1107 116D 11B5;BD72;1107 116D 11B5;
+BD73;BD73;1107 116D 11B6;BD73;1107 116D 11B6;
+BD74;BD74;1107 116D 11B7;BD74;1107 116D 11B7;
+BD75;BD75;1107 116D 11B8;BD75;1107 116D 11B8;
+BD76;BD76;1107 116D 11B9;BD76;1107 116D 11B9;
+BD77;BD77;1107 116D 11BA;BD77;1107 116D 11BA;
+BD78;BD78;1107 116D 11BB;BD78;1107 116D 11BB;
+BD79;BD79;1107 116D 11BC;BD79;1107 116D 11BC;
+BD7A;BD7A;1107 116D 11BD;BD7A;1107 116D 11BD;
+BD7B;BD7B;1107 116D 11BE;BD7B;1107 116D 11BE;
+BD7C;BD7C;1107 116D 11BF;BD7C;1107 116D 11BF;
+BD7D;BD7D;1107 116D 11C0;BD7D;1107 116D 11C0;
+BD7E;BD7E;1107 116D 11C1;BD7E;1107 116D 11C1;
+BD7F;BD7F;1107 116D 11C2;BD7F;1107 116D 11C2;
+BD80;BD80;1107 116E;BD80;1107 116E;
+BD81;BD81;1107 116E 11A8;BD81;1107 116E 11A8;
+BD82;BD82;1107 116E 11A9;BD82;1107 116E 11A9;
+BD83;BD83;1107 116E 11AA;BD83;1107 116E 11AA;
+BD84;BD84;1107 116E 11AB;BD84;1107 116E 11AB;
+BD85;BD85;1107 116E 11AC;BD85;1107 116E 11AC;
+BD86;BD86;1107 116E 11AD;BD86;1107 116E 11AD;
+BD87;BD87;1107 116E 11AE;BD87;1107 116E 11AE;
+BD88;BD88;1107 116E 11AF;BD88;1107 116E 11AF;
+BD89;BD89;1107 116E 11B0;BD89;1107 116E 11B0;
+BD8A;BD8A;1107 116E 11B1;BD8A;1107 116E 11B1;
+BD8B;BD8B;1107 116E 11B2;BD8B;1107 116E 11B2;
+BD8C;BD8C;1107 116E 11B3;BD8C;1107 116E 11B3;
+BD8D;BD8D;1107 116E 11B4;BD8D;1107 116E 11B4;
+BD8E;BD8E;1107 116E 11B5;BD8E;1107 116E 11B5;
+BD8F;BD8F;1107 116E 11B6;BD8F;1107 116E 11B6;
+BD90;BD90;1107 116E 11B7;BD90;1107 116E 11B7;
+BD91;BD91;1107 116E 11B8;BD91;1107 116E 11B8;
+BD92;BD92;1107 116E 11B9;BD92;1107 116E 11B9;
+BD93;BD93;1107 116E 11BA;BD93;1107 116E 11BA;
+BD94;BD94;1107 116E 11BB;BD94;1107 116E 11BB;
+BD95;BD95;1107 116E 11BC;BD95;1107 116E 11BC;
+BD96;BD96;1107 116E 11BD;BD96;1107 116E 11BD;
+BD97;BD97;1107 116E 11BE;BD97;1107 116E 11BE;
+BD98;BD98;1107 116E 11BF;BD98;1107 116E 11BF;
+BD99;BD99;1107 116E 11C0;BD99;1107 116E 11C0;
+BD9A;BD9A;1107 116E 11C1;BD9A;1107 116E 11C1;
+BD9B;BD9B;1107 116E 11C2;BD9B;1107 116E 11C2;
+BD9C;BD9C;1107 116F;BD9C;1107 116F;
+BD9D;BD9D;1107 116F 11A8;BD9D;1107 116F 11A8;
+BD9E;BD9E;1107 116F 11A9;BD9E;1107 116F 11A9;
+BD9F;BD9F;1107 116F 11AA;BD9F;1107 116F 11AA;
+BDA0;BDA0;1107 116F 11AB;BDA0;1107 116F 11AB;
+BDA1;BDA1;1107 116F 11AC;BDA1;1107 116F 11AC;
+BDA2;BDA2;1107 116F 11AD;BDA2;1107 116F 11AD;
+BDA3;BDA3;1107 116F 11AE;BDA3;1107 116F 11AE;
+BDA4;BDA4;1107 116F 11AF;BDA4;1107 116F 11AF;
+BDA5;BDA5;1107 116F 11B0;BDA5;1107 116F 11B0;
+BDA6;BDA6;1107 116F 11B1;BDA6;1107 116F 11B1;
+BDA7;BDA7;1107 116F 11B2;BDA7;1107 116F 11B2;
+BDA8;BDA8;1107 116F 11B3;BDA8;1107 116F 11B3;
+BDA9;BDA9;1107 116F 11B4;BDA9;1107 116F 11B4;
+BDAA;BDAA;1107 116F 11B5;BDAA;1107 116F 11B5;
+BDAB;BDAB;1107 116F 11B6;BDAB;1107 116F 11B6;
+BDAC;BDAC;1107 116F 11B7;BDAC;1107 116F 11B7;
+BDAD;BDAD;1107 116F 11B8;BDAD;1107 116F 11B8;
+BDAE;BDAE;1107 116F 11B9;BDAE;1107 116F 11B9;
+BDAF;BDAF;1107 116F 11BA;BDAF;1107 116F 11BA;
+BDB0;BDB0;1107 116F 11BB;BDB0;1107 116F 11BB;
+BDB1;BDB1;1107 116F 11BC;BDB1;1107 116F 11BC;
+BDB2;BDB2;1107 116F 11BD;BDB2;1107 116F 11BD;
+BDB3;BDB3;1107 116F 11BE;BDB3;1107 116F 11BE;
+BDB4;BDB4;1107 116F 11BF;BDB4;1107 116F 11BF;
+BDB5;BDB5;1107 116F 11C0;BDB5;1107 116F 11C0;
+BDB6;BDB6;1107 116F 11C1;BDB6;1107 116F 11C1;
+BDB7;BDB7;1107 116F 11C2;BDB7;1107 116F 11C2;
+BDB8;BDB8;1107 1170;BDB8;1107 1170;
+BDB9;BDB9;1107 1170 11A8;BDB9;1107 1170 11A8;
+BDBA;BDBA;1107 1170 11A9;BDBA;1107 1170 11A9;
+BDBB;BDBB;1107 1170 11AA;BDBB;1107 1170 11AA;
+BDBC;BDBC;1107 1170 11AB;BDBC;1107 1170 11AB;
+BDBD;BDBD;1107 1170 11AC;BDBD;1107 1170 11AC;
+BDBE;BDBE;1107 1170 11AD;BDBE;1107 1170 11AD;
+BDBF;BDBF;1107 1170 11AE;BDBF;1107 1170 11AE;
+BDC0;BDC0;1107 1170 11AF;BDC0;1107 1170 11AF;
+BDC1;BDC1;1107 1170 11B0;BDC1;1107 1170 11B0;
+BDC2;BDC2;1107 1170 11B1;BDC2;1107 1170 11B1;
+BDC3;BDC3;1107 1170 11B2;BDC3;1107 1170 11B2;
+BDC4;BDC4;1107 1170 11B3;BDC4;1107 1170 11B3;
+BDC5;BDC5;1107 1170 11B4;BDC5;1107 1170 11B4;
+BDC6;BDC6;1107 1170 11B5;BDC6;1107 1170 11B5;
+BDC7;BDC7;1107 1170 11B6;BDC7;1107 1170 11B6;
+BDC8;BDC8;1107 1170 11B7;BDC8;1107 1170 11B7;
+BDC9;BDC9;1107 1170 11B8;BDC9;1107 1170 11B8;
+BDCA;BDCA;1107 1170 11B9;BDCA;1107 1170 11B9;
+BDCB;BDCB;1107 1170 11BA;BDCB;1107 1170 11BA;
+BDCC;BDCC;1107 1170 11BB;BDCC;1107 1170 11BB;
+BDCD;BDCD;1107 1170 11BC;BDCD;1107 1170 11BC;
+BDCE;BDCE;1107 1170 11BD;BDCE;1107 1170 11BD;
+BDCF;BDCF;1107 1170 11BE;BDCF;1107 1170 11BE;
+BDD0;BDD0;1107 1170 11BF;BDD0;1107 1170 11BF;
+BDD1;BDD1;1107 1170 11C0;BDD1;1107 1170 11C0;
+BDD2;BDD2;1107 1170 11C1;BDD2;1107 1170 11C1;
+BDD3;BDD3;1107 1170 11C2;BDD3;1107 1170 11C2;
+BDD4;BDD4;1107 1171;BDD4;1107 1171;
+BDD5;BDD5;1107 1171 11A8;BDD5;1107 1171 11A8;
+BDD6;BDD6;1107 1171 11A9;BDD6;1107 1171 11A9;
+BDD7;BDD7;1107 1171 11AA;BDD7;1107 1171 11AA;
+BDD8;BDD8;1107 1171 11AB;BDD8;1107 1171 11AB;
+BDD9;BDD9;1107 1171 11AC;BDD9;1107 1171 11AC;
+BDDA;BDDA;1107 1171 11AD;BDDA;1107 1171 11AD;
+BDDB;BDDB;1107 1171 11AE;BDDB;1107 1171 11AE;
+BDDC;BDDC;1107 1171 11AF;BDDC;1107 1171 11AF;
+BDDD;BDDD;1107 1171 11B0;BDDD;1107 1171 11B0;
+BDDE;BDDE;1107 1171 11B1;BDDE;1107 1171 11B1;
+BDDF;BDDF;1107 1171 11B2;BDDF;1107 1171 11B2;
+BDE0;BDE0;1107 1171 11B3;BDE0;1107 1171 11B3;
+BDE1;BDE1;1107 1171 11B4;BDE1;1107 1171 11B4;
+BDE2;BDE2;1107 1171 11B5;BDE2;1107 1171 11B5;
+BDE3;BDE3;1107 1171 11B6;BDE3;1107 1171 11B6;
+BDE4;BDE4;1107 1171 11B7;BDE4;1107 1171 11B7;
+BDE5;BDE5;1107 1171 11B8;BDE5;1107 1171 11B8;
+BDE6;BDE6;1107 1171 11B9;BDE6;1107 1171 11B9;
+BDE7;BDE7;1107 1171 11BA;BDE7;1107 1171 11BA;
+BDE8;BDE8;1107 1171 11BB;BDE8;1107 1171 11BB;
+BDE9;BDE9;1107 1171 11BC;BDE9;1107 1171 11BC;
+BDEA;BDEA;1107 1171 11BD;BDEA;1107 1171 11BD;
+BDEB;BDEB;1107 1171 11BE;BDEB;1107 1171 11BE;
+BDEC;BDEC;1107 1171 11BF;BDEC;1107 1171 11BF;
+BDED;BDED;1107 1171 11C0;BDED;1107 1171 11C0;
+BDEE;BDEE;1107 1171 11C1;BDEE;1107 1171 11C1;
+BDEF;BDEF;1107 1171 11C2;BDEF;1107 1171 11C2;
+BDF0;BDF0;1107 1172;BDF0;1107 1172;
+BDF1;BDF1;1107 1172 11A8;BDF1;1107 1172 11A8;
+BDF2;BDF2;1107 1172 11A9;BDF2;1107 1172 11A9;
+BDF3;BDF3;1107 1172 11AA;BDF3;1107 1172 11AA;
+BDF4;BDF4;1107 1172 11AB;BDF4;1107 1172 11AB;
+BDF5;BDF5;1107 1172 11AC;BDF5;1107 1172 11AC;
+BDF6;BDF6;1107 1172 11AD;BDF6;1107 1172 11AD;
+BDF7;BDF7;1107 1172 11AE;BDF7;1107 1172 11AE;
+BDF8;BDF8;1107 1172 11AF;BDF8;1107 1172 11AF;
+BDF9;BDF9;1107 1172 11B0;BDF9;1107 1172 11B0;
+BDFA;BDFA;1107 1172 11B1;BDFA;1107 1172 11B1;
+BDFB;BDFB;1107 1172 11B2;BDFB;1107 1172 11B2;
+BDFC;BDFC;1107 1172 11B3;BDFC;1107 1172 11B3;
+BDFD;BDFD;1107 1172 11B4;BDFD;1107 1172 11B4;
+BDFE;BDFE;1107 1172 11B5;BDFE;1107 1172 11B5;
+BDFF;BDFF;1107 1172 11B6;BDFF;1107 1172 11B6;
+BE00;BE00;1107 1172 11B7;BE00;1107 1172 11B7;
+BE01;BE01;1107 1172 11B8;BE01;1107 1172 11B8;
+BE02;BE02;1107 1172 11B9;BE02;1107 1172 11B9;
+BE03;BE03;1107 1172 11BA;BE03;1107 1172 11BA;
+BE04;BE04;1107 1172 11BB;BE04;1107 1172 11BB;
+BE05;BE05;1107 1172 11BC;BE05;1107 1172 11BC;
+BE06;BE06;1107 1172 11BD;BE06;1107 1172 11BD;
+BE07;BE07;1107 1172 11BE;BE07;1107 1172 11BE;
+BE08;BE08;1107 1172 11BF;BE08;1107 1172 11BF;
+BE09;BE09;1107 1172 11C0;BE09;1107 1172 11C0;
+BE0A;BE0A;1107 1172 11C1;BE0A;1107 1172 11C1;
+BE0B;BE0B;1107 1172 11C2;BE0B;1107 1172 11C2;
+BE0C;BE0C;1107 1173;BE0C;1107 1173;
+BE0D;BE0D;1107 1173 11A8;BE0D;1107 1173 11A8;
+BE0E;BE0E;1107 1173 11A9;BE0E;1107 1173 11A9;
+BE0F;BE0F;1107 1173 11AA;BE0F;1107 1173 11AA;
+BE10;BE10;1107 1173 11AB;BE10;1107 1173 11AB;
+BE11;BE11;1107 1173 11AC;BE11;1107 1173 11AC;
+BE12;BE12;1107 1173 11AD;BE12;1107 1173 11AD;
+BE13;BE13;1107 1173 11AE;BE13;1107 1173 11AE;
+BE14;BE14;1107 1173 11AF;BE14;1107 1173 11AF;
+BE15;BE15;1107 1173 11B0;BE15;1107 1173 11B0;
+BE16;BE16;1107 1173 11B1;BE16;1107 1173 11B1;
+BE17;BE17;1107 1173 11B2;BE17;1107 1173 11B2;
+BE18;BE18;1107 1173 11B3;BE18;1107 1173 11B3;
+BE19;BE19;1107 1173 11B4;BE19;1107 1173 11B4;
+BE1A;BE1A;1107 1173 11B5;BE1A;1107 1173 11B5;
+BE1B;BE1B;1107 1173 11B6;BE1B;1107 1173 11B6;
+BE1C;BE1C;1107 1173 11B7;BE1C;1107 1173 11B7;
+BE1D;BE1D;1107 1173 11B8;BE1D;1107 1173 11B8;
+BE1E;BE1E;1107 1173 11B9;BE1E;1107 1173 11B9;
+BE1F;BE1F;1107 1173 11BA;BE1F;1107 1173 11BA;
+BE20;BE20;1107 1173 11BB;BE20;1107 1173 11BB;
+BE21;BE21;1107 1173 11BC;BE21;1107 1173 11BC;
+BE22;BE22;1107 1173 11BD;BE22;1107 1173 11BD;
+BE23;BE23;1107 1173 11BE;BE23;1107 1173 11BE;
+BE24;BE24;1107 1173 11BF;BE24;1107 1173 11BF;
+BE25;BE25;1107 1173 11C0;BE25;1107 1173 11C0;
+BE26;BE26;1107 1173 11C1;BE26;1107 1173 11C1;
+BE27;BE27;1107 1173 11C2;BE27;1107 1173 11C2;
+BE28;BE28;1107 1174;BE28;1107 1174;
+BE29;BE29;1107 1174 11A8;BE29;1107 1174 11A8;
+BE2A;BE2A;1107 1174 11A9;BE2A;1107 1174 11A9;
+BE2B;BE2B;1107 1174 11AA;BE2B;1107 1174 11AA;
+BE2C;BE2C;1107 1174 11AB;BE2C;1107 1174 11AB;
+BE2D;BE2D;1107 1174 11AC;BE2D;1107 1174 11AC;
+BE2E;BE2E;1107 1174 11AD;BE2E;1107 1174 11AD;
+BE2F;BE2F;1107 1174 11AE;BE2F;1107 1174 11AE;
+BE30;BE30;1107 1174 11AF;BE30;1107 1174 11AF;
+BE31;BE31;1107 1174 11B0;BE31;1107 1174 11B0;
+BE32;BE32;1107 1174 11B1;BE32;1107 1174 11B1;
+BE33;BE33;1107 1174 11B2;BE33;1107 1174 11B2;
+BE34;BE34;1107 1174 11B3;BE34;1107 1174 11B3;
+BE35;BE35;1107 1174 11B4;BE35;1107 1174 11B4;
+BE36;BE36;1107 1174 11B5;BE36;1107 1174 11B5;
+BE37;BE37;1107 1174 11B6;BE37;1107 1174 11B6;
+BE38;BE38;1107 1174 11B7;BE38;1107 1174 11B7;
+BE39;BE39;1107 1174 11B8;BE39;1107 1174 11B8;
+BE3A;BE3A;1107 1174 11B9;BE3A;1107 1174 11B9;
+BE3B;BE3B;1107 1174 11BA;BE3B;1107 1174 11BA;
+BE3C;BE3C;1107 1174 11BB;BE3C;1107 1174 11BB;
+BE3D;BE3D;1107 1174 11BC;BE3D;1107 1174 11BC;
+BE3E;BE3E;1107 1174 11BD;BE3E;1107 1174 11BD;
+BE3F;BE3F;1107 1174 11BE;BE3F;1107 1174 11BE;
+BE40;BE40;1107 1174 11BF;BE40;1107 1174 11BF;
+BE41;BE41;1107 1174 11C0;BE41;1107 1174 11C0;
+BE42;BE42;1107 1174 11C1;BE42;1107 1174 11C1;
+BE43;BE43;1107 1174 11C2;BE43;1107 1174 11C2;
+BE44;BE44;1107 1175;BE44;1107 1175;
+BE45;BE45;1107 1175 11A8;BE45;1107 1175 11A8;
+BE46;BE46;1107 1175 11A9;BE46;1107 1175 11A9;
+BE47;BE47;1107 1175 11AA;BE47;1107 1175 11AA;
+BE48;BE48;1107 1175 11AB;BE48;1107 1175 11AB;
+BE49;BE49;1107 1175 11AC;BE49;1107 1175 11AC;
+BE4A;BE4A;1107 1175 11AD;BE4A;1107 1175 11AD;
+BE4B;BE4B;1107 1175 11AE;BE4B;1107 1175 11AE;
+BE4C;BE4C;1107 1175 11AF;BE4C;1107 1175 11AF;
+BE4D;BE4D;1107 1175 11B0;BE4D;1107 1175 11B0;
+BE4E;BE4E;1107 1175 11B1;BE4E;1107 1175 11B1;
+BE4F;BE4F;1107 1175 11B2;BE4F;1107 1175 11B2;
+BE50;BE50;1107 1175 11B3;BE50;1107 1175 11B3;
+BE51;BE51;1107 1175 11B4;BE51;1107 1175 11B4;
+BE52;BE52;1107 1175 11B5;BE52;1107 1175 11B5;
+BE53;BE53;1107 1175 11B6;BE53;1107 1175 11B6;
+BE54;BE54;1107 1175 11B7;BE54;1107 1175 11B7;
+BE55;BE55;1107 1175 11B8;BE55;1107 1175 11B8;
+BE56;BE56;1107 1175 11B9;BE56;1107 1175 11B9;
+BE57;BE57;1107 1175 11BA;BE57;1107 1175 11BA;
+BE58;BE58;1107 1175 11BB;BE58;1107 1175 11BB;
+BE59;BE59;1107 1175 11BC;BE59;1107 1175 11BC;
+BE5A;BE5A;1107 1175 11BD;BE5A;1107 1175 11BD;
+BE5B;BE5B;1107 1175 11BE;BE5B;1107 1175 11BE;
+BE5C;BE5C;1107 1175 11BF;BE5C;1107 1175 11BF;
+BE5D;BE5D;1107 1175 11C0;BE5D;1107 1175 11C0;
+BE5E;BE5E;1107 1175 11C1;BE5E;1107 1175 11C1;
+BE5F;BE5F;1107 1175 11C2;BE5F;1107 1175 11C2;
+BE60;BE60;1108 1161;BE60;1108 1161;
+BE61;BE61;1108 1161 11A8;BE61;1108 1161 11A8;
+BE62;BE62;1108 1161 11A9;BE62;1108 1161 11A9;
+BE63;BE63;1108 1161 11AA;BE63;1108 1161 11AA;
+BE64;BE64;1108 1161 11AB;BE64;1108 1161 11AB;
+BE65;BE65;1108 1161 11AC;BE65;1108 1161 11AC;
+BE66;BE66;1108 1161 11AD;BE66;1108 1161 11AD;
+BE67;BE67;1108 1161 11AE;BE67;1108 1161 11AE;
+BE68;BE68;1108 1161 11AF;BE68;1108 1161 11AF;
+BE69;BE69;1108 1161 11B0;BE69;1108 1161 11B0;
+BE6A;BE6A;1108 1161 11B1;BE6A;1108 1161 11B1;
+BE6B;BE6B;1108 1161 11B2;BE6B;1108 1161 11B2;
+BE6C;BE6C;1108 1161 11B3;BE6C;1108 1161 11B3;
+BE6D;BE6D;1108 1161 11B4;BE6D;1108 1161 11B4;
+BE6E;BE6E;1108 1161 11B5;BE6E;1108 1161 11B5;
+BE6F;BE6F;1108 1161 11B6;BE6F;1108 1161 11B6;
+BE70;BE70;1108 1161 11B7;BE70;1108 1161 11B7;
+BE71;BE71;1108 1161 11B8;BE71;1108 1161 11B8;
+BE72;BE72;1108 1161 11B9;BE72;1108 1161 11B9;
+BE73;BE73;1108 1161 11BA;BE73;1108 1161 11BA;
+BE74;BE74;1108 1161 11BB;BE74;1108 1161 11BB;
+BE75;BE75;1108 1161 11BC;BE75;1108 1161 11BC;
+BE76;BE76;1108 1161 11BD;BE76;1108 1161 11BD;
+BE77;BE77;1108 1161 11BE;BE77;1108 1161 11BE;
+BE78;BE78;1108 1161 11BF;BE78;1108 1161 11BF;
+BE79;BE79;1108 1161 11C0;BE79;1108 1161 11C0;
+BE7A;BE7A;1108 1161 11C1;BE7A;1108 1161 11C1;
+BE7B;BE7B;1108 1161 11C2;BE7B;1108 1161 11C2;
+BE7C;BE7C;1108 1162;BE7C;1108 1162;
+BE7D;BE7D;1108 1162 11A8;BE7D;1108 1162 11A8;
+BE7E;BE7E;1108 1162 11A9;BE7E;1108 1162 11A9;
+BE7F;BE7F;1108 1162 11AA;BE7F;1108 1162 11AA;
+BE80;BE80;1108 1162 11AB;BE80;1108 1162 11AB;
+BE81;BE81;1108 1162 11AC;BE81;1108 1162 11AC;
+BE82;BE82;1108 1162 11AD;BE82;1108 1162 11AD;
+BE83;BE83;1108 1162 11AE;BE83;1108 1162 11AE;
+BE84;BE84;1108 1162 11AF;BE84;1108 1162 11AF;
+BE85;BE85;1108 1162 11B0;BE85;1108 1162 11B0;
+BE86;BE86;1108 1162 11B1;BE86;1108 1162 11B1;
+BE87;BE87;1108 1162 11B2;BE87;1108 1162 11B2;
+BE88;BE88;1108 1162 11B3;BE88;1108 1162 11B3;
+BE89;BE89;1108 1162 11B4;BE89;1108 1162 11B4;
+BE8A;BE8A;1108 1162 11B5;BE8A;1108 1162 11B5;
+BE8B;BE8B;1108 1162 11B6;BE8B;1108 1162 11B6;
+BE8C;BE8C;1108 1162 11B7;BE8C;1108 1162 11B7;
+BE8D;BE8D;1108 1162 11B8;BE8D;1108 1162 11B8;
+BE8E;BE8E;1108 1162 11B9;BE8E;1108 1162 11B9;
+BE8F;BE8F;1108 1162 11BA;BE8F;1108 1162 11BA;
+BE90;BE90;1108 1162 11BB;BE90;1108 1162 11BB;
+BE91;BE91;1108 1162 11BC;BE91;1108 1162 11BC;
+BE92;BE92;1108 1162 11BD;BE92;1108 1162 11BD;
+BE93;BE93;1108 1162 11BE;BE93;1108 1162 11BE;
+BE94;BE94;1108 1162 11BF;BE94;1108 1162 11BF;
+BE95;BE95;1108 1162 11C0;BE95;1108 1162 11C0;
+BE96;BE96;1108 1162 11C1;BE96;1108 1162 11C1;
+BE97;BE97;1108 1162 11C2;BE97;1108 1162 11C2;
+BE98;BE98;1108 1163;BE98;1108 1163;
+BE99;BE99;1108 1163 11A8;BE99;1108 1163 11A8;
+BE9A;BE9A;1108 1163 11A9;BE9A;1108 1163 11A9;
+BE9B;BE9B;1108 1163 11AA;BE9B;1108 1163 11AA;
+BE9C;BE9C;1108 1163 11AB;BE9C;1108 1163 11AB;
+BE9D;BE9D;1108 1163 11AC;BE9D;1108 1163 11AC;
+BE9E;BE9E;1108 1163 11AD;BE9E;1108 1163 11AD;
+BE9F;BE9F;1108 1163 11AE;BE9F;1108 1163 11AE;
+BEA0;BEA0;1108 1163 11AF;BEA0;1108 1163 11AF;
+BEA1;BEA1;1108 1163 11B0;BEA1;1108 1163 11B0;
+BEA2;BEA2;1108 1163 11B1;BEA2;1108 1163 11B1;
+BEA3;BEA3;1108 1163 11B2;BEA3;1108 1163 11B2;
+BEA4;BEA4;1108 1163 11B3;BEA4;1108 1163 11B3;
+BEA5;BEA5;1108 1163 11B4;BEA5;1108 1163 11B4;
+BEA6;BEA6;1108 1163 11B5;BEA6;1108 1163 11B5;
+BEA7;BEA7;1108 1163 11B6;BEA7;1108 1163 11B6;
+BEA8;BEA8;1108 1163 11B7;BEA8;1108 1163 11B7;
+BEA9;BEA9;1108 1163 11B8;BEA9;1108 1163 11B8;
+BEAA;BEAA;1108 1163 11B9;BEAA;1108 1163 11B9;
+BEAB;BEAB;1108 1163 11BA;BEAB;1108 1163 11BA;
+BEAC;BEAC;1108 1163 11BB;BEAC;1108 1163 11BB;
+BEAD;BEAD;1108 1163 11BC;BEAD;1108 1163 11BC;
+BEAE;BEAE;1108 1163 11BD;BEAE;1108 1163 11BD;
+BEAF;BEAF;1108 1163 11BE;BEAF;1108 1163 11BE;
+BEB0;BEB0;1108 1163 11BF;BEB0;1108 1163 11BF;
+BEB1;BEB1;1108 1163 11C0;BEB1;1108 1163 11C0;
+BEB2;BEB2;1108 1163 11C1;BEB2;1108 1163 11C1;
+BEB3;BEB3;1108 1163 11C2;BEB3;1108 1163 11C2;
+BEB4;BEB4;1108 1164;BEB4;1108 1164;
+BEB5;BEB5;1108 1164 11A8;BEB5;1108 1164 11A8;
+BEB6;BEB6;1108 1164 11A9;BEB6;1108 1164 11A9;
+BEB7;BEB7;1108 1164 11AA;BEB7;1108 1164 11AA;
+BEB8;BEB8;1108 1164 11AB;BEB8;1108 1164 11AB;
+BEB9;BEB9;1108 1164 11AC;BEB9;1108 1164 11AC;
+BEBA;BEBA;1108 1164 11AD;BEBA;1108 1164 11AD;
+BEBB;BEBB;1108 1164 11AE;BEBB;1108 1164 11AE;
+BEBC;BEBC;1108 1164 11AF;BEBC;1108 1164 11AF;
+BEBD;BEBD;1108 1164 11B0;BEBD;1108 1164 11B0;
+BEBE;BEBE;1108 1164 11B1;BEBE;1108 1164 11B1;
+BEBF;BEBF;1108 1164 11B2;BEBF;1108 1164 11B2;
+BEC0;BEC0;1108 1164 11B3;BEC0;1108 1164 11B3;
+BEC1;BEC1;1108 1164 11B4;BEC1;1108 1164 11B4;
+BEC2;BEC2;1108 1164 11B5;BEC2;1108 1164 11B5;
+BEC3;BEC3;1108 1164 11B6;BEC3;1108 1164 11B6;
+BEC4;BEC4;1108 1164 11B7;BEC4;1108 1164 11B7;
+BEC5;BEC5;1108 1164 11B8;BEC5;1108 1164 11B8;
+BEC6;BEC6;1108 1164 11B9;BEC6;1108 1164 11B9;
+BEC7;BEC7;1108 1164 11BA;BEC7;1108 1164 11BA;
+BEC8;BEC8;1108 1164 11BB;BEC8;1108 1164 11BB;
+BEC9;BEC9;1108 1164 11BC;BEC9;1108 1164 11BC;
+BECA;BECA;1108 1164 11BD;BECA;1108 1164 11BD;
+BECB;BECB;1108 1164 11BE;BECB;1108 1164 11BE;
+BECC;BECC;1108 1164 11BF;BECC;1108 1164 11BF;
+BECD;BECD;1108 1164 11C0;BECD;1108 1164 11C0;
+BECE;BECE;1108 1164 11C1;BECE;1108 1164 11C1;
+BECF;BECF;1108 1164 11C2;BECF;1108 1164 11C2;
+BED0;BED0;1108 1165;BED0;1108 1165;
+BED1;BED1;1108 1165 11A8;BED1;1108 1165 11A8;
+BED2;BED2;1108 1165 11A9;BED2;1108 1165 11A9;
+BED3;BED3;1108 1165 11AA;BED3;1108 1165 11AA;
+BED4;BED4;1108 1165 11AB;BED4;1108 1165 11AB;
+BED5;BED5;1108 1165 11AC;BED5;1108 1165 11AC;
+BED6;BED6;1108 1165 11AD;BED6;1108 1165 11AD;
+BED7;BED7;1108 1165 11AE;BED7;1108 1165 11AE;
+BED8;BED8;1108 1165 11AF;BED8;1108 1165 11AF;
+BED9;BED9;1108 1165 11B0;BED9;1108 1165 11B0;
+BEDA;BEDA;1108 1165 11B1;BEDA;1108 1165 11B1;
+BEDB;BEDB;1108 1165 11B2;BEDB;1108 1165 11B2;
+BEDC;BEDC;1108 1165 11B3;BEDC;1108 1165 11B3;
+BEDD;BEDD;1108 1165 11B4;BEDD;1108 1165 11B4;
+BEDE;BEDE;1108 1165 11B5;BEDE;1108 1165 11B5;
+BEDF;BEDF;1108 1165 11B6;BEDF;1108 1165 11B6;
+BEE0;BEE0;1108 1165 11B7;BEE0;1108 1165 11B7;
+BEE1;BEE1;1108 1165 11B8;BEE1;1108 1165 11B8;
+BEE2;BEE2;1108 1165 11B9;BEE2;1108 1165 11B9;
+BEE3;BEE3;1108 1165 11BA;BEE3;1108 1165 11BA;
+BEE4;BEE4;1108 1165 11BB;BEE4;1108 1165 11BB;
+BEE5;BEE5;1108 1165 11BC;BEE5;1108 1165 11BC;
+BEE6;BEE6;1108 1165 11BD;BEE6;1108 1165 11BD;
+BEE7;BEE7;1108 1165 11BE;BEE7;1108 1165 11BE;
+BEE8;BEE8;1108 1165 11BF;BEE8;1108 1165 11BF;
+BEE9;BEE9;1108 1165 11C0;BEE9;1108 1165 11C0;
+BEEA;BEEA;1108 1165 11C1;BEEA;1108 1165 11C1;
+BEEB;BEEB;1108 1165 11C2;BEEB;1108 1165 11C2;
+BEEC;BEEC;1108 1166;BEEC;1108 1166;
+BEED;BEED;1108 1166 11A8;BEED;1108 1166 11A8;
+BEEE;BEEE;1108 1166 11A9;BEEE;1108 1166 11A9;
+BEEF;BEEF;1108 1166 11AA;BEEF;1108 1166 11AA;
+BEF0;BEF0;1108 1166 11AB;BEF0;1108 1166 11AB;
+BEF1;BEF1;1108 1166 11AC;BEF1;1108 1166 11AC;
+BEF2;BEF2;1108 1166 11AD;BEF2;1108 1166 11AD;
+BEF3;BEF3;1108 1166 11AE;BEF3;1108 1166 11AE;
+BEF4;BEF4;1108 1166 11AF;BEF4;1108 1166 11AF;
+BEF5;BEF5;1108 1166 11B0;BEF5;1108 1166 11B0;
+BEF6;BEF6;1108 1166 11B1;BEF6;1108 1166 11B1;
+BEF7;BEF7;1108 1166 11B2;BEF7;1108 1166 11B2;
+BEF8;BEF8;1108 1166 11B3;BEF8;1108 1166 11B3;
+BEF9;BEF9;1108 1166 11B4;BEF9;1108 1166 11B4;
+BEFA;BEFA;1108 1166 11B5;BEFA;1108 1166 11B5;
+BEFB;BEFB;1108 1166 11B6;BEFB;1108 1166 11B6;
+BEFC;BEFC;1108 1166 11B7;BEFC;1108 1166 11B7;
+BEFD;BEFD;1108 1166 11B8;BEFD;1108 1166 11B8;
+BEFE;BEFE;1108 1166 11B9;BEFE;1108 1166 11B9;
+BEFF;BEFF;1108 1166 11BA;BEFF;1108 1166 11BA;
+BF00;BF00;1108 1166 11BB;BF00;1108 1166 11BB;
+BF01;BF01;1108 1166 11BC;BF01;1108 1166 11BC;
+BF02;BF02;1108 1166 11BD;BF02;1108 1166 11BD;
+BF03;BF03;1108 1166 11BE;BF03;1108 1166 11BE;
+BF04;BF04;1108 1166 11BF;BF04;1108 1166 11BF;
+BF05;BF05;1108 1166 11C0;BF05;1108 1166 11C0;
+BF06;BF06;1108 1166 11C1;BF06;1108 1166 11C1;
+BF07;BF07;1108 1166 11C2;BF07;1108 1166 11C2;
+BF08;BF08;1108 1167;BF08;1108 1167;
+BF09;BF09;1108 1167 11A8;BF09;1108 1167 11A8;
+BF0A;BF0A;1108 1167 11A9;BF0A;1108 1167 11A9;
+BF0B;BF0B;1108 1167 11AA;BF0B;1108 1167 11AA;
+BF0C;BF0C;1108 1167 11AB;BF0C;1108 1167 11AB;
+BF0D;BF0D;1108 1167 11AC;BF0D;1108 1167 11AC;
+BF0E;BF0E;1108 1167 11AD;BF0E;1108 1167 11AD;
+BF0F;BF0F;1108 1167 11AE;BF0F;1108 1167 11AE;
+BF10;BF10;1108 1167 11AF;BF10;1108 1167 11AF;
+BF11;BF11;1108 1167 11B0;BF11;1108 1167 11B0;
+BF12;BF12;1108 1167 11B1;BF12;1108 1167 11B1;
+BF13;BF13;1108 1167 11B2;BF13;1108 1167 11B2;
+BF14;BF14;1108 1167 11B3;BF14;1108 1167 11B3;
+BF15;BF15;1108 1167 11B4;BF15;1108 1167 11B4;
+BF16;BF16;1108 1167 11B5;BF16;1108 1167 11B5;
+BF17;BF17;1108 1167 11B6;BF17;1108 1167 11B6;
+BF18;BF18;1108 1167 11B7;BF18;1108 1167 11B7;
+BF19;BF19;1108 1167 11B8;BF19;1108 1167 11B8;
+BF1A;BF1A;1108 1167 11B9;BF1A;1108 1167 11B9;
+BF1B;BF1B;1108 1167 11BA;BF1B;1108 1167 11BA;
+BF1C;BF1C;1108 1167 11BB;BF1C;1108 1167 11BB;
+BF1D;BF1D;1108 1167 11BC;BF1D;1108 1167 11BC;
+BF1E;BF1E;1108 1167 11BD;BF1E;1108 1167 11BD;
+BF1F;BF1F;1108 1167 11BE;BF1F;1108 1167 11BE;
+BF20;BF20;1108 1167 11BF;BF20;1108 1167 11BF;
+BF21;BF21;1108 1167 11C0;BF21;1108 1167 11C0;
+BF22;BF22;1108 1167 11C1;BF22;1108 1167 11C1;
+BF23;BF23;1108 1167 11C2;BF23;1108 1167 11C2;
+BF24;BF24;1108 1168;BF24;1108 1168;
+BF25;BF25;1108 1168 11A8;BF25;1108 1168 11A8;
+BF26;BF26;1108 1168 11A9;BF26;1108 1168 11A9;
+BF27;BF27;1108 1168 11AA;BF27;1108 1168 11AA;
+BF28;BF28;1108 1168 11AB;BF28;1108 1168 11AB;
+BF29;BF29;1108 1168 11AC;BF29;1108 1168 11AC;
+BF2A;BF2A;1108 1168 11AD;BF2A;1108 1168 11AD;
+BF2B;BF2B;1108 1168 11AE;BF2B;1108 1168 11AE;
+BF2C;BF2C;1108 1168 11AF;BF2C;1108 1168 11AF;
+BF2D;BF2D;1108 1168 11B0;BF2D;1108 1168 11B0;
+BF2E;BF2E;1108 1168 11B1;BF2E;1108 1168 11B1;
+BF2F;BF2F;1108 1168 11B2;BF2F;1108 1168 11B2;
+BF30;BF30;1108 1168 11B3;BF30;1108 1168 11B3;
+BF31;BF31;1108 1168 11B4;BF31;1108 1168 11B4;
+BF32;BF32;1108 1168 11B5;BF32;1108 1168 11B5;
+BF33;BF33;1108 1168 11B6;BF33;1108 1168 11B6;
+BF34;BF34;1108 1168 11B7;BF34;1108 1168 11B7;
+BF35;BF35;1108 1168 11B8;BF35;1108 1168 11B8;
+BF36;BF36;1108 1168 11B9;BF36;1108 1168 11B9;
+BF37;BF37;1108 1168 11BA;BF37;1108 1168 11BA;
+BF38;BF38;1108 1168 11BB;BF38;1108 1168 11BB;
+BF39;BF39;1108 1168 11BC;BF39;1108 1168 11BC;
+BF3A;BF3A;1108 1168 11BD;BF3A;1108 1168 11BD;
+BF3B;BF3B;1108 1168 11BE;BF3B;1108 1168 11BE;
+BF3C;BF3C;1108 1168 11BF;BF3C;1108 1168 11BF;
+BF3D;BF3D;1108 1168 11C0;BF3D;1108 1168 11C0;
+BF3E;BF3E;1108 1168 11C1;BF3E;1108 1168 11C1;
+BF3F;BF3F;1108 1168 11C2;BF3F;1108 1168 11C2;
+BF40;BF40;1108 1169;BF40;1108 1169;
+BF41;BF41;1108 1169 11A8;BF41;1108 1169 11A8;
+BF42;BF42;1108 1169 11A9;BF42;1108 1169 11A9;
+BF43;BF43;1108 1169 11AA;BF43;1108 1169 11AA;
+BF44;BF44;1108 1169 11AB;BF44;1108 1169 11AB;
+BF45;BF45;1108 1169 11AC;BF45;1108 1169 11AC;
+BF46;BF46;1108 1169 11AD;BF46;1108 1169 11AD;
+BF47;BF47;1108 1169 11AE;BF47;1108 1169 11AE;
+BF48;BF48;1108 1169 11AF;BF48;1108 1169 11AF;
+BF49;BF49;1108 1169 11B0;BF49;1108 1169 11B0;
+BF4A;BF4A;1108 1169 11B1;BF4A;1108 1169 11B1;
+BF4B;BF4B;1108 1169 11B2;BF4B;1108 1169 11B2;
+BF4C;BF4C;1108 1169 11B3;BF4C;1108 1169 11B3;
+BF4D;BF4D;1108 1169 11B4;BF4D;1108 1169 11B4;
+BF4E;BF4E;1108 1169 11B5;BF4E;1108 1169 11B5;
+BF4F;BF4F;1108 1169 11B6;BF4F;1108 1169 11B6;
+BF50;BF50;1108 1169 11B7;BF50;1108 1169 11B7;
+BF51;BF51;1108 1169 11B8;BF51;1108 1169 11B8;
+BF52;BF52;1108 1169 11B9;BF52;1108 1169 11B9;
+BF53;BF53;1108 1169 11BA;BF53;1108 1169 11BA;
+BF54;BF54;1108 1169 11BB;BF54;1108 1169 11BB;
+BF55;BF55;1108 1169 11BC;BF55;1108 1169 11BC;
+BF56;BF56;1108 1169 11BD;BF56;1108 1169 11BD;
+BF57;BF57;1108 1169 11BE;BF57;1108 1169 11BE;
+BF58;BF58;1108 1169 11BF;BF58;1108 1169 11BF;
+BF59;BF59;1108 1169 11C0;BF59;1108 1169 11C0;
+BF5A;BF5A;1108 1169 11C1;BF5A;1108 1169 11C1;
+BF5B;BF5B;1108 1169 11C2;BF5B;1108 1169 11C2;
+BF5C;BF5C;1108 116A;BF5C;1108 116A;
+BF5D;BF5D;1108 116A 11A8;BF5D;1108 116A 11A8;
+BF5E;BF5E;1108 116A 11A9;BF5E;1108 116A 11A9;
+BF5F;BF5F;1108 116A 11AA;BF5F;1108 116A 11AA;
+BF60;BF60;1108 116A 11AB;BF60;1108 116A 11AB;
+BF61;BF61;1108 116A 11AC;BF61;1108 116A 11AC;
+BF62;BF62;1108 116A 11AD;BF62;1108 116A 11AD;
+BF63;BF63;1108 116A 11AE;BF63;1108 116A 11AE;
+BF64;BF64;1108 116A 11AF;BF64;1108 116A 11AF;
+BF65;BF65;1108 116A 11B0;BF65;1108 116A 11B0;
+BF66;BF66;1108 116A 11B1;BF66;1108 116A 11B1;
+BF67;BF67;1108 116A 11B2;BF67;1108 116A 11B2;
+BF68;BF68;1108 116A 11B3;BF68;1108 116A 11B3;
+BF69;BF69;1108 116A 11B4;BF69;1108 116A 11B4;
+BF6A;BF6A;1108 116A 11B5;BF6A;1108 116A 11B5;
+BF6B;BF6B;1108 116A 11B6;BF6B;1108 116A 11B6;
+BF6C;BF6C;1108 116A 11B7;BF6C;1108 116A 11B7;
+BF6D;BF6D;1108 116A 11B8;BF6D;1108 116A 11B8;
+BF6E;BF6E;1108 116A 11B9;BF6E;1108 116A 11B9;
+BF6F;BF6F;1108 116A 11BA;BF6F;1108 116A 11BA;
+BF70;BF70;1108 116A 11BB;BF70;1108 116A 11BB;
+BF71;BF71;1108 116A 11BC;BF71;1108 116A 11BC;
+BF72;BF72;1108 116A 11BD;BF72;1108 116A 11BD;
+BF73;BF73;1108 116A 11BE;BF73;1108 116A 11BE;
+BF74;BF74;1108 116A 11BF;BF74;1108 116A 11BF;
+BF75;BF75;1108 116A 11C0;BF75;1108 116A 11C0;
+BF76;BF76;1108 116A 11C1;BF76;1108 116A 11C1;
+BF77;BF77;1108 116A 11C2;BF77;1108 116A 11C2;
+BF78;BF78;1108 116B;BF78;1108 116B;
+BF79;BF79;1108 116B 11A8;BF79;1108 116B 11A8;
+BF7A;BF7A;1108 116B 11A9;BF7A;1108 116B 11A9;
+BF7B;BF7B;1108 116B 11AA;BF7B;1108 116B 11AA;
+BF7C;BF7C;1108 116B 11AB;BF7C;1108 116B 11AB;
+BF7D;BF7D;1108 116B 11AC;BF7D;1108 116B 11AC;
+BF7E;BF7E;1108 116B 11AD;BF7E;1108 116B 11AD;
+BF7F;BF7F;1108 116B 11AE;BF7F;1108 116B 11AE;
+BF80;BF80;1108 116B 11AF;BF80;1108 116B 11AF;
+BF81;BF81;1108 116B 11B0;BF81;1108 116B 11B0;
+BF82;BF82;1108 116B 11B1;BF82;1108 116B 11B1;
+BF83;BF83;1108 116B 11B2;BF83;1108 116B 11B2;
+BF84;BF84;1108 116B 11B3;BF84;1108 116B 11B3;
+BF85;BF85;1108 116B 11B4;BF85;1108 116B 11B4;
+BF86;BF86;1108 116B 11B5;BF86;1108 116B 11B5;
+BF87;BF87;1108 116B 11B6;BF87;1108 116B 11B6;
+BF88;BF88;1108 116B 11B7;BF88;1108 116B 11B7;
+BF89;BF89;1108 116B 11B8;BF89;1108 116B 11B8;
+BF8A;BF8A;1108 116B 11B9;BF8A;1108 116B 11B9;
+BF8B;BF8B;1108 116B 11BA;BF8B;1108 116B 11BA;
+BF8C;BF8C;1108 116B 11BB;BF8C;1108 116B 11BB;
+BF8D;BF8D;1108 116B 11BC;BF8D;1108 116B 11BC;
+BF8E;BF8E;1108 116B 11BD;BF8E;1108 116B 11BD;
+BF8F;BF8F;1108 116B 11BE;BF8F;1108 116B 11BE;
+BF90;BF90;1108 116B 11BF;BF90;1108 116B 11BF;
+BF91;BF91;1108 116B 11C0;BF91;1108 116B 11C0;
+BF92;BF92;1108 116B 11C1;BF92;1108 116B 11C1;
+BF93;BF93;1108 116B 11C2;BF93;1108 116B 11C2;
+BF94;BF94;1108 116C;BF94;1108 116C;
+BF95;BF95;1108 116C 11A8;BF95;1108 116C 11A8;
+BF96;BF96;1108 116C 11A9;BF96;1108 116C 11A9;
+BF97;BF97;1108 116C 11AA;BF97;1108 116C 11AA;
+BF98;BF98;1108 116C 11AB;BF98;1108 116C 11AB;
+BF99;BF99;1108 116C 11AC;BF99;1108 116C 11AC;
+BF9A;BF9A;1108 116C 11AD;BF9A;1108 116C 11AD;
+BF9B;BF9B;1108 116C 11AE;BF9B;1108 116C 11AE;
+BF9C;BF9C;1108 116C 11AF;BF9C;1108 116C 11AF;
+BF9D;BF9D;1108 116C 11B0;BF9D;1108 116C 11B0;
+BF9E;BF9E;1108 116C 11B1;BF9E;1108 116C 11B1;
+BF9F;BF9F;1108 116C 11B2;BF9F;1108 116C 11B2;
+BFA0;BFA0;1108 116C 11B3;BFA0;1108 116C 11B3;
+BFA1;BFA1;1108 116C 11B4;BFA1;1108 116C 11B4;
+BFA2;BFA2;1108 116C 11B5;BFA2;1108 116C 11B5;
+BFA3;BFA3;1108 116C 11B6;BFA3;1108 116C 11B6;
+BFA4;BFA4;1108 116C 11B7;BFA4;1108 116C 11B7;
+BFA5;BFA5;1108 116C 11B8;BFA5;1108 116C 11B8;
+BFA6;BFA6;1108 116C 11B9;BFA6;1108 116C 11B9;
+BFA7;BFA7;1108 116C 11BA;BFA7;1108 116C 11BA;
+BFA8;BFA8;1108 116C 11BB;BFA8;1108 116C 11BB;
+BFA9;BFA9;1108 116C 11BC;BFA9;1108 116C 11BC;
+BFAA;BFAA;1108 116C 11BD;BFAA;1108 116C 11BD;
+BFAB;BFAB;1108 116C 11BE;BFAB;1108 116C 11BE;
+BFAC;BFAC;1108 116C 11BF;BFAC;1108 116C 11BF;
+BFAD;BFAD;1108 116C 11C0;BFAD;1108 116C 11C0;
+BFAE;BFAE;1108 116C 11C1;BFAE;1108 116C 11C1;
+BFAF;BFAF;1108 116C 11C2;BFAF;1108 116C 11C2;
+BFB0;BFB0;1108 116D;BFB0;1108 116D;
+BFB1;BFB1;1108 116D 11A8;BFB1;1108 116D 11A8;
+BFB2;BFB2;1108 116D 11A9;BFB2;1108 116D 11A9;
+BFB3;BFB3;1108 116D 11AA;BFB3;1108 116D 11AA;
+BFB4;BFB4;1108 116D 11AB;BFB4;1108 116D 11AB;
+BFB5;BFB5;1108 116D 11AC;BFB5;1108 116D 11AC;
+BFB6;BFB6;1108 116D 11AD;BFB6;1108 116D 11AD;
+BFB7;BFB7;1108 116D 11AE;BFB7;1108 116D 11AE;
+BFB8;BFB8;1108 116D 11AF;BFB8;1108 116D 11AF;
+BFB9;BFB9;1108 116D 11B0;BFB9;1108 116D 11B0;
+BFBA;BFBA;1108 116D 11B1;BFBA;1108 116D 11B1;
+BFBB;BFBB;1108 116D 11B2;BFBB;1108 116D 11B2;
+BFBC;BFBC;1108 116D 11B3;BFBC;1108 116D 11B3;
+BFBD;BFBD;1108 116D 11B4;BFBD;1108 116D 11B4;
+BFBE;BFBE;1108 116D 11B5;BFBE;1108 116D 11B5;
+BFBF;BFBF;1108 116D 11B6;BFBF;1108 116D 11B6;
+BFC0;BFC0;1108 116D 11B7;BFC0;1108 116D 11B7;
+BFC1;BFC1;1108 116D 11B8;BFC1;1108 116D 11B8;
+BFC2;BFC2;1108 116D 11B9;BFC2;1108 116D 11B9;
+BFC3;BFC3;1108 116D 11BA;BFC3;1108 116D 11BA;
+BFC4;BFC4;1108 116D 11BB;BFC4;1108 116D 11BB;
+BFC5;BFC5;1108 116D 11BC;BFC5;1108 116D 11BC;
+BFC6;BFC6;1108 116D 11BD;BFC6;1108 116D 11BD;
+BFC7;BFC7;1108 116D 11BE;BFC7;1108 116D 11BE;
+BFC8;BFC8;1108 116D 11BF;BFC8;1108 116D 11BF;
+BFC9;BFC9;1108 116D 11C0;BFC9;1108 116D 11C0;
+BFCA;BFCA;1108 116D 11C1;BFCA;1108 116D 11C1;
+BFCB;BFCB;1108 116D 11C2;BFCB;1108 116D 11C2;
+BFCC;BFCC;1108 116E;BFCC;1108 116E;
+BFCD;BFCD;1108 116E 11A8;BFCD;1108 116E 11A8;
+BFCE;BFCE;1108 116E 11A9;BFCE;1108 116E 11A9;
+BFCF;BFCF;1108 116E 11AA;BFCF;1108 116E 11AA;
+BFD0;BFD0;1108 116E 11AB;BFD0;1108 116E 11AB;
+BFD1;BFD1;1108 116E 11AC;BFD1;1108 116E 11AC;
+BFD2;BFD2;1108 116E 11AD;BFD2;1108 116E 11AD;
+BFD3;BFD3;1108 116E 11AE;BFD3;1108 116E 11AE;
+BFD4;BFD4;1108 116E 11AF;BFD4;1108 116E 11AF;
+BFD5;BFD5;1108 116E 11B0;BFD5;1108 116E 11B0;
+BFD6;BFD6;1108 116E 11B1;BFD6;1108 116E 11B1;
+BFD7;BFD7;1108 116E 11B2;BFD7;1108 116E 11B2;
+BFD8;BFD8;1108 116E 11B3;BFD8;1108 116E 11B3;
+BFD9;BFD9;1108 116E 11B4;BFD9;1108 116E 11B4;
+BFDA;BFDA;1108 116E 11B5;BFDA;1108 116E 11B5;
+BFDB;BFDB;1108 116E 11B6;BFDB;1108 116E 11B6;
+BFDC;BFDC;1108 116E 11B7;BFDC;1108 116E 11B7;
+BFDD;BFDD;1108 116E 11B8;BFDD;1108 116E 11B8;
+BFDE;BFDE;1108 116E 11B9;BFDE;1108 116E 11B9;
+BFDF;BFDF;1108 116E 11BA;BFDF;1108 116E 11BA;
+BFE0;BFE0;1108 116E 11BB;BFE0;1108 116E 11BB;
+BFE1;BFE1;1108 116E 11BC;BFE1;1108 116E 11BC;
+BFE2;BFE2;1108 116E 11BD;BFE2;1108 116E 11BD;
+BFE3;BFE3;1108 116E 11BE;BFE3;1108 116E 11BE;
+BFE4;BFE4;1108 116E 11BF;BFE4;1108 116E 11BF;
+BFE5;BFE5;1108 116E 11C0;BFE5;1108 116E 11C0;
+BFE6;BFE6;1108 116E 11C1;BFE6;1108 116E 11C1;
+BFE7;BFE7;1108 116E 11C2;BFE7;1108 116E 11C2;
+BFE8;BFE8;1108 116F;BFE8;1108 116F;
+BFE9;BFE9;1108 116F 11A8;BFE9;1108 116F 11A8;
+BFEA;BFEA;1108 116F 11A9;BFEA;1108 116F 11A9;
+BFEB;BFEB;1108 116F 11AA;BFEB;1108 116F 11AA;
+BFEC;BFEC;1108 116F 11AB;BFEC;1108 116F 11AB;
+BFED;BFED;1108 116F 11AC;BFED;1108 116F 11AC;
+BFEE;BFEE;1108 116F 11AD;BFEE;1108 116F 11AD;
+BFEF;BFEF;1108 116F 11AE;BFEF;1108 116F 11AE;
+BFF0;BFF0;1108 116F 11AF;BFF0;1108 116F 11AF;
+BFF1;BFF1;1108 116F 11B0;BFF1;1108 116F 11B0;
+BFF2;BFF2;1108 116F 11B1;BFF2;1108 116F 11B1;
+BFF3;BFF3;1108 116F 11B2;BFF3;1108 116F 11B2;
+BFF4;BFF4;1108 116F 11B3;BFF4;1108 116F 11B3;
+BFF5;BFF5;1108 116F 11B4;BFF5;1108 116F 11B4;
+BFF6;BFF6;1108 116F 11B5;BFF6;1108 116F 11B5;
+BFF7;BFF7;1108 116F 11B6;BFF7;1108 116F 11B6;
+BFF8;BFF8;1108 116F 11B7;BFF8;1108 116F 11B7;
+BFF9;BFF9;1108 116F 11B8;BFF9;1108 116F 11B8;
+BFFA;BFFA;1108 116F 11B9;BFFA;1108 116F 11B9;
+BFFB;BFFB;1108 116F 11BA;BFFB;1108 116F 11BA;
+BFFC;BFFC;1108 116F 11BB;BFFC;1108 116F 11BB;
+BFFD;BFFD;1108 116F 11BC;BFFD;1108 116F 11BC;
+BFFE;BFFE;1108 116F 11BD;BFFE;1108 116F 11BD;
+BFFF;BFFF;1108 116F 11BE;BFFF;1108 116F 11BE;
+C000;C000;1108 116F 11BF;C000;1108 116F 11BF;
+C001;C001;1108 116F 11C0;C001;1108 116F 11C0;
+C002;C002;1108 116F 11C1;C002;1108 116F 11C1;
+C003;C003;1108 116F 11C2;C003;1108 116F 11C2;
+C004;C004;1108 1170;C004;1108 1170;
+C005;C005;1108 1170 11A8;C005;1108 1170 11A8;
+C006;C006;1108 1170 11A9;C006;1108 1170 11A9;
+C007;C007;1108 1170 11AA;C007;1108 1170 11AA;
+C008;C008;1108 1170 11AB;C008;1108 1170 11AB;
+C009;C009;1108 1170 11AC;C009;1108 1170 11AC;
+C00A;C00A;1108 1170 11AD;C00A;1108 1170 11AD;
+C00B;C00B;1108 1170 11AE;C00B;1108 1170 11AE;
+C00C;C00C;1108 1170 11AF;C00C;1108 1170 11AF;
+C00D;C00D;1108 1170 11B0;C00D;1108 1170 11B0;
+C00E;C00E;1108 1170 11B1;C00E;1108 1170 11B1;
+C00F;C00F;1108 1170 11B2;C00F;1108 1170 11B2;
+C010;C010;1108 1170 11B3;C010;1108 1170 11B3;
+C011;C011;1108 1170 11B4;C011;1108 1170 11B4;
+C012;C012;1108 1170 11B5;C012;1108 1170 11B5;
+C013;C013;1108 1170 11B6;C013;1108 1170 11B6;
+C014;C014;1108 1170 11B7;C014;1108 1170 11B7;
+C015;C015;1108 1170 11B8;C015;1108 1170 11B8;
+C016;C016;1108 1170 11B9;C016;1108 1170 11B9;
+C017;C017;1108 1170 11BA;C017;1108 1170 11BA;
+C018;C018;1108 1170 11BB;C018;1108 1170 11BB;
+C019;C019;1108 1170 11BC;C019;1108 1170 11BC;
+C01A;C01A;1108 1170 11BD;C01A;1108 1170 11BD;
+C01B;C01B;1108 1170 11BE;C01B;1108 1170 11BE;
+C01C;C01C;1108 1170 11BF;C01C;1108 1170 11BF;
+C01D;C01D;1108 1170 11C0;C01D;1108 1170 11C0;
+C01E;C01E;1108 1170 11C1;C01E;1108 1170 11C1;
+C01F;C01F;1108 1170 11C2;C01F;1108 1170 11C2;
+C020;C020;1108 1171;C020;1108 1171;
+C021;C021;1108 1171 11A8;C021;1108 1171 11A8;
+C022;C022;1108 1171 11A9;C022;1108 1171 11A9;
+C023;C023;1108 1171 11AA;C023;1108 1171 11AA;
+C024;C024;1108 1171 11AB;C024;1108 1171 11AB;
+C025;C025;1108 1171 11AC;C025;1108 1171 11AC;
+C026;C026;1108 1171 11AD;C026;1108 1171 11AD;
+C027;C027;1108 1171 11AE;C027;1108 1171 11AE;
+C028;C028;1108 1171 11AF;C028;1108 1171 11AF;
+C029;C029;1108 1171 11B0;C029;1108 1171 11B0;
+C02A;C02A;1108 1171 11B1;C02A;1108 1171 11B1;
+C02B;C02B;1108 1171 11B2;C02B;1108 1171 11B2;
+C02C;C02C;1108 1171 11B3;C02C;1108 1171 11B3;
+C02D;C02D;1108 1171 11B4;C02D;1108 1171 11B4;
+C02E;C02E;1108 1171 11B5;C02E;1108 1171 11B5;
+C02F;C02F;1108 1171 11B6;C02F;1108 1171 11B6;
+C030;C030;1108 1171 11B7;C030;1108 1171 11B7;
+C031;C031;1108 1171 11B8;C031;1108 1171 11B8;
+C032;C032;1108 1171 11B9;C032;1108 1171 11B9;
+C033;C033;1108 1171 11BA;C033;1108 1171 11BA;
+C034;C034;1108 1171 11BB;C034;1108 1171 11BB;
+C035;C035;1108 1171 11BC;C035;1108 1171 11BC;
+C036;C036;1108 1171 11BD;C036;1108 1171 11BD;
+C037;C037;1108 1171 11BE;C037;1108 1171 11BE;
+C038;C038;1108 1171 11BF;C038;1108 1171 11BF;
+C039;C039;1108 1171 11C0;C039;1108 1171 11C0;
+C03A;C03A;1108 1171 11C1;C03A;1108 1171 11C1;
+C03B;C03B;1108 1171 11C2;C03B;1108 1171 11C2;
+C03C;C03C;1108 1172;C03C;1108 1172;
+C03D;C03D;1108 1172 11A8;C03D;1108 1172 11A8;
+C03E;C03E;1108 1172 11A9;C03E;1108 1172 11A9;
+C03F;C03F;1108 1172 11AA;C03F;1108 1172 11AA;
+C040;C040;1108 1172 11AB;C040;1108 1172 11AB;
+C041;C041;1108 1172 11AC;C041;1108 1172 11AC;
+C042;C042;1108 1172 11AD;C042;1108 1172 11AD;
+C043;C043;1108 1172 11AE;C043;1108 1172 11AE;
+C044;C044;1108 1172 11AF;C044;1108 1172 11AF;
+C045;C045;1108 1172 11B0;C045;1108 1172 11B0;
+C046;C046;1108 1172 11B1;C046;1108 1172 11B1;
+C047;C047;1108 1172 11B2;C047;1108 1172 11B2;
+C048;C048;1108 1172 11B3;C048;1108 1172 11B3;
+C049;C049;1108 1172 11B4;C049;1108 1172 11B4;
+C04A;C04A;1108 1172 11B5;C04A;1108 1172 11B5;
+C04B;C04B;1108 1172 11B6;C04B;1108 1172 11B6;
+C04C;C04C;1108 1172 11B7;C04C;1108 1172 11B7;
+C04D;C04D;1108 1172 11B8;C04D;1108 1172 11B8;
+C04E;C04E;1108 1172 11B9;C04E;1108 1172 11B9;
+C04F;C04F;1108 1172 11BA;C04F;1108 1172 11BA;
+C050;C050;1108 1172 11BB;C050;1108 1172 11BB;
+C051;C051;1108 1172 11BC;C051;1108 1172 11BC;
+C052;C052;1108 1172 11BD;C052;1108 1172 11BD;
+C053;C053;1108 1172 11BE;C053;1108 1172 11BE;
+C054;C054;1108 1172 11BF;C054;1108 1172 11BF;
+C055;C055;1108 1172 11C0;C055;1108 1172 11C0;
+C056;C056;1108 1172 11C1;C056;1108 1172 11C1;
+C057;C057;1108 1172 11C2;C057;1108 1172 11C2;
+C058;C058;1108 1173;C058;1108 1173;
+C059;C059;1108 1173 11A8;C059;1108 1173 11A8;
+C05A;C05A;1108 1173 11A9;C05A;1108 1173 11A9;
+C05B;C05B;1108 1173 11AA;C05B;1108 1173 11AA;
+C05C;C05C;1108 1173 11AB;C05C;1108 1173 11AB;
+C05D;C05D;1108 1173 11AC;C05D;1108 1173 11AC;
+C05E;C05E;1108 1173 11AD;C05E;1108 1173 11AD;
+C05F;C05F;1108 1173 11AE;C05F;1108 1173 11AE;
+C060;C060;1108 1173 11AF;C060;1108 1173 11AF;
+C061;C061;1108 1173 11B0;C061;1108 1173 11B0;
+C062;C062;1108 1173 11B1;C062;1108 1173 11B1;
+C063;C063;1108 1173 11B2;C063;1108 1173 11B2;
+C064;C064;1108 1173 11B3;C064;1108 1173 11B3;
+C065;C065;1108 1173 11B4;C065;1108 1173 11B4;
+C066;C066;1108 1173 11B5;C066;1108 1173 11B5;
+C067;C067;1108 1173 11B6;C067;1108 1173 11B6;
+C068;C068;1108 1173 11B7;C068;1108 1173 11B7;
+C069;C069;1108 1173 11B8;C069;1108 1173 11B8;
+C06A;C06A;1108 1173 11B9;C06A;1108 1173 11B9;
+C06B;C06B;1108 1173 11BA;C06B;1108 1173 11BA;
+C06C;C06C;1108 1173 11BB;C06C;1108 1173 11BB;
+C06D;C06D;1108 1173 11BC;C06D;1108 1173 11BC;
+C06E;C06E;1108 1173 11BD;C06E;1108 1173 11BD;
+C06F;C06F;1108 1173 11BE;C06F;1108 1173 11BE;
+C070;C070;1108 1173 11BF;C070;1108 1173 11BF;
+C071;C071;1108 1173 11C0;C071;1108 1173 11C0;
+C072;C072;1108 1173 11C1;C072;1108 1173 11C1;
+C073;C073;1108 1173 11C2;C073;1108 1173 11C2;
+C074;C074;1108 1174;C074;1108 1174;
+C075;C075;1108 1174 11A8;C075;1108 1174 11A8;
+C076;C076;1108 1174 11A9;C076;1108 1174 11A9;
+C077;C077;1108 1174 11AA;C077;1108 1174 11AA;
+C078;C078;1108 1174 11AB;C078;1108 1174 11AB;
+C079;C079;1108 1174 11AC;C079;1108 1174 11AC;
+C07A;C07A;1108 1174 11AD;C07A;1108 1174 11AD;
+C07B;C07B;1108 1174 11AE;C07B;1108 1174 11AE;
+C07C;C07C;1108 1174 11AF;C07C;1108 1174 11AF;
+C07D;C07D;1108 1174 11B0;C07D;1108 1174 11B0;
+C07E;C07E;1108 1174 11B1;C07E;1108 1174 11B1;
+C07F;C07F;1108 1174 11B2;C07F;1108 1174 11B2;
+C080;C080;1108 1174 11B3;C080;1108 1174 11B3;
+C081;C081;1108 1174 11B4;C081;1108 1174 11B4;
+C082;C082;1108 1174 11B5;C082;1108 1174 11B5;
+C083;C083;1108 1174 11B6;C083;1108 1174 11B6;
+C084;C084;1108 1174 11B7;C084;1108 1174 11B7;
+C085;C085;1108 1174 11B8;C085;1108 1174 11B8;
+C086;C086;1108 1174 11B9;C086;1108 1174 11B9;
+C087;C087;1108 1174 11BA;C087;1108 1174 11BA;
+C088;C088;1108 1174 11BB;C088;1108 1174 11BB;
+C089;C089;1108 1174 11BC;C089;1108 1174 11BC;
+C08A;C08A;1108 1174 11BD;C08A;1108 1174 11BD;
+C08B;C08B;1108 1174 11BE;C08B;1108 1174 11BE;
+C08C;C08C;1108 1174 11BF;C08C;1108 1174 11BF;
+C08D;C08D;1108 1174 11C0;C08D;1108 1174 11C0;
+C08E;C08E;1108 1174 11C1;C08E;1108 1174 11C1;
+C08F;C08F;1108 1174 11C2;C08F;1108 1174 11C2;
+C090;C090;1108 1175;C090;1108 1175;
+C091;C091;1108 1175 11A8;C091;1108 1175 11A8;
+C092;C092;1108 1175 11A9;C092;1108 1175 11A9;
+C093;C093;1108 1175 11AA;C093;1108 1175 11AA;
+C094;C094;1108 1175 11AB;C094;1108 1175 11AB;
+C095;C095;1108 1175 11AC;C095;1108 1175 11AC;
+C096;C096;1108 1175 11AD;C096;1108 1175 11AD;
+C097;C097;1108 1175 11AE;C097;1108 1175 11AE;
+C098;C098;1108 1175 11AF;C098;1108 1175 11AF;
+C099;C099;1108 1175 11B0;C099;1108 1175 11B0;
+C09A;C09A;1108 1175 11B1;C09A;1108 1175 11B1;
+C09B;C09B;1108 1175 11B2;C09B;1108 1175 11B2;
+C09C;C09C;1108 1175 11B3;C09C;1108 1175 11B3;
+C09D;C09D;1108 1175 11B4;C09D;1108 1175 11B4;
+C09E;C09E;1108 1175 11B5;C09E;1108 1175 11B5;
+C09F;C09F;1108 1175 11B6;C09F;1108 1175 11B6;
+C0A0;C0A0;1108 1175 11B7;C0A0;1108 1175 11B7;
+C0A1;C0A1;1108 1175 11B8;C0A1;1108 1175 11B8;
+C0A2;C0A2;1108 1175 11B9;C0A2;1108 1175 11B9;
+C0A3;C0A3;1108 1175 11BA;C0A3;1108 1175 11BA;
+C0A4;C0A4;1108 1175 11BB;C0A4;1108 1175 11BB;
+C0A5;C0A5;1108 1175 11BC;C0A5;1108 1175 11BC;
+C0A6;C0A6;1108 1175 11BD;C0A6;1108 1175 11BD;
+C0A7;C0A7;1108 1175 11BE;C0A7;1108 1175 11BE;
+C0A8;C0A8;1108 1175 11BF;C0A8;1108 1175 11BF;
+C0A9;C0A9;1108 1175 11C0;C0A9;1108 1175 11C0;
+C0AA;C0AA;1108 1175 11C1;C0AA;1108 1175 11C1;
+C0AB;C0AB;1108 1175 11C2;C0AB;1108 1175 11C2;
+C0AC;C0AC;1109 1161;C0AC;1109 1161;
+C0AD;C0AD;1109 1161 11A8;C0AD;1109 1161 11A8;
+C0AE;C0AE;1109 1161 11A9;C0AE;1109 1161 11A9;
+C0AF;C0AF;1109 1161 11AA;C0AF;1109 1161 11AA;
+C0B0;C0B0;1109 1161 11AB;C0B0;1109 1161 11AB;
+C0B1;C0B1;1109 1161 11AC;C0B1;1109 1161 11AC;
+C0B2;C0B2;1109 1161 11AD;C0B2;1109 1161 11AD;
+C0B3;C0B3;1109 1161 11AE;C0B3;1109 1161 11AE;
+C0B4;C0B4;1109 1161 11AF;C0B4;1109 1161 11AF;
+C0B5;C0B5;1109 1161 11B0;C0B5;1109 1161 11B0;
+C0B6;C0B6;1109 1161 11B1;C0B6;1109 1161 11B1;
+C0B7;C0B7;1109 1161 11B2;C0B7;1109 1161 11B2;
+C0B8;C0B8;1109 1161 11B3;C0B8;1109 1161 11B3;
+C0B9;C0B9;1109 1161 11B4;C0B9;1109 1161 11B4;
+C0BA;C0BA;1109 1161 11B5;C0BA;1109 1161 11B5;
+C0BB;C0BB;1109 1161 11B6;C0BB;1109 1161 11B6;
+C0BC;C0BC;1109 1161 11B7;C0BC;1109 1161 11B7;
+C0BD;C0BD;1109 1161 11B8;C0BD;1109 1161 11B8;
+C0BE;C0BE;1109 1161 11B9;C0BE;1109 1161 11B9;
+C0BF;C0BF;1109 1161 11BA;C0BF;1109 1161 11BA;
+C0C0;C0C0;1109 1161 11BB;C0C0;1109 1161 11BB;
+C0C1;C0C1;1109 1161 11BC;C0C1;1109 1161 11BC;
+C0C2;C0C2;1109 1161 11BD;C0C2;1109 1161 11BD;
+C0C3;C0C3;1109 1161 11BE;C0C3;1109 1161 11BE;
+C0C4;C0C4;1109 1161 11BF;C0C4;1109 1161 11BF;
+C0C5;C0C5;1109 1161 11C0;C0C5;1109 1161 11C0;
+C0C6;C0C6;1109 1161 11C1;C0C6;1109 1161 11C1;
+C0C7;C0C7;1109 1161 11C2;C0C7;1109 1161 11C2;
+C0C8;C0C8;1109 1162;C0C8;1109 1162;
+C0C9;C0C9;1109 1162 11A8;C0C9;1109 1162 11A8;
+C0CA;C0CA;1109 1162 11A9;C0CA;1109 1162 11A9;
+C0CB;C0CB;1109 1162 11AA;C0CB;1109 1162 11AA;
+C0CC;C0CC;1109 1162 11AB;C0CC;1109 1162 11AB;
+C0CD;C0CD;1109 1162 11AC;C0CD;1109 1162 11AC;
+C0CE;C0CE;1109 1162 11AD;C0CE;1109 1162 11AD;
+C0CF;C0CF;1109 1162 11AE;C0CF;1109 1162 11AE;
+C0D0;C0D0;1109 1162 11AF;C0D0;1109 1162 11AF;
+C0D1;C0D1;1109 1162 11B0;C0D1;1109 1162 11B0;
+C0D2;C0D2;1109 1162 11B1;C0D2;1109 1162 11B1;
+C0D3;C0D3;1109 1162 11B2;C0D3;1109 1162 11B2;
+C0D4;C0D4;1109 1162 11B3;C0D4;1109 1162 11B3;
+C0D5;C0D5;1109 1162 11B4;C0D5;1109 1162 11B4;
+C0D6;C0D6;1109 1162 11B5;C0D6;1109 1162 11B5;
+C0D7;C0D7;1109 1162 11B6;C0D7;1109 1162 11B6;
+C0D8;C0D8;1109 1162 11B7;C0D8;1109 1162 11B7;
+C0D9;C0D9;1109 1162 11B8;C0D9;1109 1162 11B8;
+C0DA;C0DA;1109 1162 11B9;C0DA;1109 1162 11B9;
+C0DB;C0DB;1109 1162 11BA;C0DB;1109 1162 11BA;
+C0DC;C0DC;1109 1162 11BB;C0DC;1109 1162 11BB;
+C0DD;C0DD;1109 1162 11BC;C0DD;1109 1162 11BC;
+C0DE;C0DE;1109 1162 11BD;C0DE;1109 1162 11BD;
+C0DF;C0DF;1109 1162 11BE;C0DF;1109 1162 11BE;
+C0E0;C0E0;1109 1162 11BF;C0E0;1109 1162 11BF;
+C0E1;C0E1;1109 1162 11C0;C0E1;1109 1162 11C0;
+C0E2;C0E2;1109 1162 11C1;C0E2;1109 1162 11C1;
+C0E3;C0E3;1109 1162 11C2;C0E3;1109 1162 11C2;
+C0E4;C0E4;1109 1163;C0E4;1109 1163;
+C0E5;C0E5;1109 1163 11A8;C0E5;1109 1163 11A8;
+C0E6;C0E6;1109 1163 11A9;C0E6;1109 1163 11A9;
+C0E7;C0E7;1109 1163 11AA;C0E7;1109 1163 11AA;
+C0E8;C0E8;1109 1163 11AB;C0E8;1109 1163 11AB;
+C0E9;C0E9;1109 1163 11AC;C0E9;1109 1163 11AC;
+C0EA;C0EA;1109 1163 11AD;C0EA;1109 1163 11AD;
+C0EB;C0EB;1109 1163 11AE;C0EB;1109 1163 11AE;
+C0EC;C0EC;1109 1163 11AF;C0EC;1109 1163 11AF;
+C0ED;C0ED;1109 1163 11B0;C0ED;1109 1163 11B0;
+C0EE;C0EE;1109 1163 11B1;C0EE;1109 1163 11B1;
+C0EF;C0EF;1109 1163 11B2;C0EF;1109 1163 11B2;
+C0F0;C0F0;1109 1163 11B3;C0F0;1109 1163 11B3;
+C0F1;C0F1;1109 1163 11B4;C0F1;1109 1163 11B4;
+C0F2;C0F2;1109 1163 11B5;C0F2;1109 1163 11B5;
+C0F3;C0F3;1109 1163 11B6;C0F3;1109 1163 11B6;
+C0F4;C0F4;1109 1163 11B7;C0F4;1109 1163 11B7;
+C0F5;C0F5;1109 1163 11B8;C0F5;1109 1163 11B8;
+C0F6;C0F6;1109 1163 11B9;C0F6;1109 1163 11B9;
+C0F7;C0F7;1109 1163 11BA;C0F7;1109 1163 11BA;
+C0F8;C0F8;1109 1163 11BB;C0F8;1109 1163 11BB;
+C0F9;C0F9;1109 1163 11BC;C0F9;1109 1163 11BC;
+C0FA;C0FA;1109 1163 11BD;C0FA;1109 1163 11BD;
+C0FB;C0FB;1109 1163 11BE;C0FB;1109 1163 11BE;
+C0FC;C0FC;1109 1163 11BF;C0FC;1109 1163 11BF;
+C0FD;C0FD;1109 1163 11C0;C0FD;1109 1163 11C0;
+C0FE;C0FE;1109 1163 11C1;C0FE;1109 1163 11C1;
+C0FF;C0FF;1109 1163 11C2;C0FF;1109 1163 11C2;
+C100;C100;1109 1164;C100;1109 1164;
+C101;C101;1109 1164 11A8;C101;1109 1164 11A8;
+C102;C102;1109 1164 11A9;C102;1109 1164 11A9;
+C103;C103;1109 1164 11AA;C103;1109 1164 11AA;
+C104;C104;1109 1164 11AB;C104;1109 1164 11AB;
+C105;C105;1109 1164 11AC;C105;1109 1164 11AC;
+C106;C106;1109 1164 11AD;C106;1109 1164 11AD;
+C107;C107;1109 1164 11AE;C107;1109 1164 11AE;
+C108;C108;1109 1164 11AF;C108;1109 1164 11AF;
+C109;C109;1109 1164 11B0;C109;1109 1164 11B0;
+C10A;C10A;1109 1164 11B1;C10A;1109 1164 11B1;
+C10B;C10B;1109 1164 11B2;C10B;1109 1164 11B2;
+C10C;C10C;1109 1164 11B3;C10C;1109 1164 11B3;
+C10D;C10D;1109 1164 11B4;C10D;1109 1164 11B4;
+C10E;C10E;1109 1164 11B5;C10E;1109 1164 11B5;
+C10F;C10F;1109 1164 11B6;C10F;1109 1164 11B6;
+C110;C110;1109 1164 11B7;C110;1109 1164 11B7;
+C111;C111;1109 1164 11B8;C111;1109 1164 11B8;
+C112;C112;1109 1164 11B9;C112;1109 1164 11B9;
+C113;C113;1109 1164 11BA;C113;1109 1164 11BA;
+C114;C114;1109 1164 11BB;C114;1109 1164 11BB;
+C115;C115;1109 1164 11BC;C115;1109 1164 11BC;
+C116;C116;1109 1164 11BD;C116;1109 1164 11BD;
+C117;C117;1109 1164 11BE;C117;1109 1164 11BE;
+C118;C118;1109 1164 11BF;C118;1109 1164 11BF;
+C119;C119;1109 1164 11C0;C119;1109 1164 11C0;
+C11A;C11A;1109 1164 11C1;C11A;1109 1164 11C1;
+C11B;C11B;1109 1164 11C2;C11B;1109 1164 11C2;
+C11C;C11C;1109 1165;C11C;1109 1165;
+C11D;C11D;1109 1165 11A8;C11D;1109 1165 11A8;
+C11E;C11E;1109 1165 11A9;C11E;1109 1165 11A9;
+C11F;C11F;1109 1165 11AA;C11F;1109 1165 11AA;
+C120;C120;1109 1165 11AB;C120;1109 1165 11AB;
+C121;C121;1109 1165 11AC;C121;1109 1165 11AC;
+C122;C122;1109 1165 11AD;C122;1109 1165 11AD;
+C123;C123;1109 1165 11AE;C123;1109 1165 11AE;
+C124;C124;1109 1165 11AF;C124;1109 1165 11AF;
+C125;C125;1109 1165 11B0;C125;1109 1165 11B0;
+C126;C126;1109 1165 11B1;C126;1109 1165 11B1;
+C127;C127;1109 1165 11B2;C127;1109 1165 11B2;
+C128;C128;1109 1165 11B3;C128;1109 1165 11B3;
+C129;C129;1109 1165 11B4;C129;1109 1165 11B4;
+C12A;C12A;1109 1165 11B5;C12A;1109 1165 11B5;
+C12B;C12B;1109 1165 11B6;C12B;1109 1165 11B6;
+C12C;C12C;1109 1165 11B7;C12C;1109 1165 11B7;
+C12D;C12D;1109 1165 11B8;C12D;1109 1165 11B8;
+C12E;C12E;1109 1165 11B9;C12E;1109 1165 11B9;
+C12F;C12F;1109 1165 11BA;C12F;1109 1165 11BA;
+C130;C130;1109 1165 11BB;C130;1109 1165 11BB;
+C131;C131;1109 1165 11BC;C131;1109 1165 11BC;
+C132;C132;1109 1165 11BD;C132;1109 1165 11BD;
+C133;C133;1109 1165 11BE;C133;1109 1165 11BE;
+C134;C134;1109 1165 11BF;C134;1109 1165 11BF;
+C135;C135;1109 1165 11C0;C135;1109 1165 11C0;
+C136;C136;1109 1165 11C1;C136;1109 1165 11C1;
+C137;C137;1109 1165 11C2;C137;1109 1165 11C2;
+C138;C138;1109 1166;C138;1109 1166;
+C139;C139;1109 1166 11A8;C139;1109 1166 11A8;
+C13A;C13A;1109 1166 11A9;C13A;1109 1166 11A9;
+C13B;C13B;1109 1166 11AA;C13B;1109 1166 11AA;
+C13C;C13C;1109 1166 11AB;C13C;1109 1166 11AB;
+C13D;C13D;1109 1166 11AC;C13D;1109 1166 11AC;
+C13E;C13E;1109 1166 11AD;C13E;1109 1166 11AD;
+C13F;C13F;1109 1166 11AE;C13F;1109 1166 11AE;
+C140;C140;1109 1166 11AF;C140;1109 1166 11AF;
+C141;C141;1109 1166 11B0;C141;1109 1166 11B0;
+C142;C142;1109 1166 11B1;C142;1109 1166 11B1;
+C143;C143;1109 1166 11B2;C143;1109 1166 11B2;
+C144;C144;1109 1166 11B3;C144;1109 1166 11B3;
+C145;C145;1109 1166 11B4;C145;1109 1166 11B4;
+C146;C146;1109 1166 11B5;C146;1109 1166 11B5;
+C147;C147;1109 1166 11B6;C147;1109 1166 11B6;
+C148;C148;1109 1166 11B7;C148;1109 1166 11B7;
+C149;C149;1109 1166 11B8;C149;1109 1166 11B8;
+C14A;C14A;1109 1166 11B9;C14A;1109 1166 11B9;
+C14B;C14B;1109 1166 11BA;C14B;1109 1166 11BA;
+C14C;C14C;1109 1166 11BB;C14C;1109 1166 11BB;
+C14D;C14D;1109 1166 11BC;C14D;1109 1166 11BC;
+C14E;C14E;1109 1166 11BD;C14E;1109 1166 11BD;
+C14F;C14F;1109 1166 11BE;C14F;1109 1166 11BE;
+C150;C150;1109 1166 11BF;C150;1109 1166 11BF;
+C151;C151;1109 1166 11C0;C151;1109 1166 11C0;
+C152;C152;1109 1166 11C1;C152;1109 1166 11C1;
+C153;C153;1109 1166 11C2;C153;1109 1166 11C2;
+C154;C154;1109 1167;C154;1109 1167;
+C155;C155;1109 1167 11A8;C155;1109 1167 11A8;
+C156;C156;1109 1167 11A9;C156;1109 1167 11A9;
+C157;C157;1109 1167 11AA;C157;1109 1167 11AA;
+C158;C158;1109 1167 11AB;C158;1109 1167 11AB;
+C159;C159;1109 1167 11AC;C159;1109 1167 11AC;
+C15A;C15A;1109 1167 11AD;C15A;1109 1167 11AD;
+C15B;C15B;1109 1167 11AE;C15B;1109 1167 11AE;
+C15C;C15C;1109 1167 11AF;C15C;1109 1167 11AF;
+C15D;C15D;1109 1167 11B0;C15D;1109 1167 11B0;
+C15E;C15E;1109 1167 11B1;C15E;1109 1167 11B1;
+C15F;C15F;1109 1167 11B2;C15F;1109 1167 11B2;
+C160;C160;1109 1167 11B3;C160;1109 1167 11B3;
+C161;C161;1109 1167 11B4;C161;1109 1167 11B4;
+C162;C162;1109 1167 11B5;C162;1109 1167 11B5;
+C163;C163;1109 1167 11B6;C163;1109 1167 11B6;
+C164;C164;1109 1167 11B7;C164;1109 1167 11B7;
+C165;C165;1109 1167 11B8;C165;1109 1167 11B8;
+C166;C166;1109 1167 11B9;C166;1109 1167 11B9;
+C167;C167;1109 1167 11BA;C167;1109 1167 11BA;
+C168;C168;1109 1167 11BB;C168;1109 1167 11BB;
+C169;C169;1109 1167 11BC;C169;1109 1167 11BC;
+C16A;C16A;1109 1167 11BD;C16A;1109 1167 11BD;
+C16B;C16B;1109 1167 11BE;C16B;1109 1167 11BE;
+C16C;C16C;1109 1167 11BF;C16C;1109 1167 11BF;
+C16D;C16D;1109 1167 11C0;C16D;1109 1167 11C0;
+C16E;C16E;1109 1167 11C1;C16E;1109 1167 11C1;
+C16F;C16F;1109 1167 11C2;C16F;1109 1167 11C2;
+C170;C170;1109 1168;C170;1109 1168;
+C171;C171;1109 1168 11A8;C171;1109 1168 11A8;
+C172;C172;1109 1168 11A9;C172;1109 1168 11A9;
+C173;C173;1109 1168 11AA;C173;1109 1168 11AA;
+C174;C174;1109 1168 11AB;C174;1109 1168 11AB;
+C175;C175;1109 1168 11AC;C175;1109 1168 11AC;
+C176;C176;1109 1168 11AD;C176;1109 1168 11AD;
+C177;C177;1109 1168 11AE;C177;1109 1168 11AE;
+C178;C178;1109 1168 11AF;C178;1109 1168 11AF;
+C179;C179;1109 1168 11B0;C179;1109 1168 11B0;
+C17A;C17A;1109 1168 11B1;C17A;1109 1168 11B1;
+C17B;C17B;1109 1168 11B2;C17B;1109 1168 11B2;
+C17C;C17C;1109 1168 11B3;C17C;1109 1168 11B3;
+C17D;C17D;1109 1168 11B4;C17D;1109 1168 11B4;
+C17E;C17E;1109 1168 11B5;C17E;1109 1168 11B5;
+C17F;C17F;1109 1168 11B6;C17F;1109 1168 11B6;
+C180;C180;1109 1168 11B7;C180;1109 1168 11B7;
+C181;C181;1109 1168 11B8;C181;1109 1168 11B8;
+C182;C182;1109 1168 11B9;C182;1109 1168 11B9;
+C183;C183;1109 1168 11BA;C183;1109 1168 11BA;
+C184;C184;1109 1168 11BB;C184;1109 1168 11BB;
+C185;C185;1109 1168 11BC;C185;1109 1168 11BC;
+C186;C186;1109 1168 11BD;C186;1109 1168 11BD;
+C187;C187;1109 1168 11BE;C187;1109 1168 11BE;
+C188;C188;1109 1168 11BF;C188;1109 1168 11BF;
+C189;C189;1109 1168 11C0;C189;1109 1168 11C0;
+C18A;C18A;1109 1168 11C1;C18A;1109 1168 11C1;
+C18B;C18B;1109 1168 11C2;C18B;1109 1168 11C2;
+C18C;C18C;1109 1169;C18C;1109 1169;
+C18D;C18D;1109 1169 11A8;C18D;1109 1169 11A8;
+C18E;C18E;1109 1169 11A9;C18E;1109 1169 11A9;
+C18F;C18F;1109 1169 11AA;C18F;1109 1169 11AA;
+C190;C190;1109 1169 11AB;C190;1109 1169 11AB;
+C191;C191;1109 1169 11AC;C191;1109 1169 11AC;
+C192;C192;1109 1169 11AD;C192;1109 1169 11AD;
+C193;C193;1109 1169 11AE;C193;1109 1169 11AE;
+C194;C194;1109 1169 11AF;C194;1109 1169 11AF;
+C195;C195;1109 1169 11B0;C195;1109 1169 11B0;
+C196;C196;1109 1169 11B1;C196;1109 1169 11B1;
+C197;C197;1109 1169 11B2;C197;1109 1169 11B2;
+C198;C198;1109 1169 11B3;C198;1109 1169 11B3;
+C199;C199;1109 1169 11B4;C199;1109 1169 11B4;
+C19A;C19A;1109 1169 11B5;C19A;1109 1169 11B5;
+C19B;C19B;1109 1169 11B6;C19B;1109 1169 11B6;
+C19C;C19C;1109 1169 11B7;C19C;1109 1169 11B7;
+C19D;C19D;1109 1169 11B8;C19D;1109 1169 11B8;
+C19E;C19E;1109 1169 11B9;C19E;1109 1169 11B9;
+C19F;C19F;1109 1169 11BA;C19F;1109 1169 11BA;
+C1A0;C1A0;1109 1169 11BB;C1A0;1109 1169 11BB;
+C1A1;C1A1;1109 1169 11BC;C1A1;1109 1169 11BC;
+C1A2;C1A2;1109 1169 11BD;C1A2;1109 1169 11BD;
+C1A3;C1A3;1109 1169 11BE;C1A3;1109 1169 11BE;
+C1A4;C1A4;1109 1169 11BF;C1A4;1109 1169 11BF;
+C1A5;C1A5;1109 1169 11C0;C1A5;1109 1169 11C0;
+C1A6;C1A6;1109 1169 11C1;C1A6;1109 1169 11C1;
+C1A7;C1A7;1109 1169 11C2;C1A7;1109 1169 11C2;
+C1A8;C1A8;1109 116A;C1A8;1109 116A;
+C1A9;C1A9;1109 116A 11A8;C1A9;1109 116A 11A8;
+C1AA;C1AA;1109 116A 11A9;C1AA;1109 116A 11A9;
+C1AB;C1AB;1109 116A 11AA;C1AB;1109 116A 11AA;
+C1AC;C1AC;1109 116A 11AB;C1AC;1109 116A 11AB;
+C1AD;C1AD;1109 116A 11AC;C1AD;1109 116A 11AC;
+C1AE;C1AE;1109 116A 11AD;C1AE;1109 116A 11AD;
+C1AF;C1AF;1109 116A 11AE;C1AF;1109 116A 11AE;
+C1B0;C1B0;1109 116A 11AF;C1B0;1109 116A 11AF;
+C1B1;C1B1;1109 116A 11B0;C1B1;1109 116A 11B0;
+C1B2;C1B2;1109 116A 11B1;C1B2;1109 116A 11B1;
+C1B3;C1B3;1109 116A 11B2;C1B3;1109 116A 11B2;
+C1B4;C1B4;1109 116A 11B3;C1B4;1109 116A 11B3;
+C1B5;C1B5;1109 116A 11B4;C1B5;1109 116A 11B4;
+C1B6;C1B6;1109 116A 11B5;C1B6;1109 116A 11B5;
+C1B7;C1B7;1109 116A 11B6;C1B7;1109 116A 11B6;
+C1B8;C1B8;1109 116A 11B7;C1B8;1109 116A 11B7;
+C1B9;C1B9;1109 116A 11B8;C1B9;1109 116A 11B8;
+C1BA;C1BA;1109 116A 11B9;C1BA;1109 116A 11B9;
+C1BB;C1BB;1109 116A 11BA;C1BB;1109 116A 11BA;
+C1BC;C1BC;1109 116A 11BB;C1BC;1109 116A 11BB;
+C1BD;C1BD;1109 116A 11BC;C1BD;1109 116A 11BC;
+C1BE;C1BE;1109 116A 11BD;C1BE;1109 116A 11BD;
+C1BF;C1BF;1109 116A 11BE;C1BF;1109 116A 11BE;
+C1C0;C1C0;1109 116A 11BF;C1C0;1109 116A 11BF;
+C1C1;C1C1;1109 116A 11C0;C1C1;1109 116A 11C0;
+C1C2;C1C2;1109 116A 11C1;C1C2;1109 116A 11C1;
+C1C3;C1C3;1109 116A 11C2;C1C3;1109 116A 11C2;
+C1C4;C1C4;1109 116B;C1C4;1109 116B;
+C1C5;C1C5;1109 116B 11A8;C1C5;1109 116B 11A8;
+C1C6;C1C6;1109 116B 11A9;C1C6;1109 116B 11A9;
+C1C7;C1C7;1109 116B 11AA;C1C7;1109 116B 11AA;
+C1C8;C1C8;1109 116B 11AB;C1C8;1109 116B 11AB;
+C1C9;C1C9;1109 116B 11AC;C1C9;1109 116B 11AC;
+C1CA;C1CA;1109 116B 11AD;C1CA;1109 116B 11AD;
+C1CB;C1CB;1109 116B 11AE;C1CB;1109 116B 11AE;
+C1CC;C1CC;1109 116B 11AF;C1CC;1109 116B 11AF;
+C1CD;C1CD;1109 116B 11B0;C1CD;1109 116B 11B0;
+C1CE;C1CE;1109 116B 11B1;C1CE;1109 116B 11B1;
+C1CF;C1CF;1109 116B 11B2;C1CF;1109 116B 11B2;
+C1D0;C1D0;1109 116B 11B3;C1D0;1109 116B 11B3;
+C1D1;C1D1;1109 116B 11B4;C1D1;1109 116B 11B4;
+C1D2;C1D2;1109 116B 11B5;C1D2;1109 116B 11B5;
+C1D3;C1D3;1109 116B 11B6;C1D3;1109 116B 11B6;
+C1D4;C1D4;1109 116B 11B7;C1D4;1109 116B 11B7;
+C1D5;C1D5;1109 116B 11B8;C1D5;1109 116B 11B8;
+C1D6;C1D6;1109 116B 11B9;C1D6;1109 116B 11B9;
+C1D7;C1D7;1109 116B 11BA;C1D7;1109 116B 11BA;
+C1D8;C1D8;1109 116B 11BB;C1D8;1109 116B 11BB;
+C1D9;C1D9;1109 116B 11BC;C1D9;1109 116B 11BC;
+C1DA;C1DA;1109 116B 11BD;C1DA;1109 116B 11BD;
+C1DB;C1DB;1109 116B 11BE;C1DB;1109 116B 11BE;
+C1DC;C1DC;1109 116B 11BF;C1DC;1109 116B 11BF;
+C1DD;C1DD;1109 116B 11C0;C1DD;1109 116B 11C0;
+C1DE;C1DE;1109 116B 11C1;C1DE;1109 116B 11C1;
+C1DF;C1DF;1109 116B 11C2;C1DF;1109 116B 11C2;
+C1E0;C1E0;1109 116C;C1E0;1109 116C;
+C1E1;C1E1;1109 116C 11A8;C1E1;1109 116C 11A8;
+C1E2;C1E2;1109 116C 11A9;C1E2;1109 116C 11A9;
+C1E3;C1E3;1109 116C 11AA;C1E3;1109 116C 11AA;
+C1E4;C1E4;1109 116C 11AB;C1E4;1109 116C 11AB;
+C1E5;C1E5;1109 116C 11AC;C1E5;1109 116C 11AC;
+C1E6;C1E6;1109 116C 11AD;C1E6;1109 116C 11AD;
+C1E7;C1E7;1109 116C 11AE;C1E7;1109 116C 11AE;
+C1E8;C1E8;1109 116C 11AF;C1E8;1109 116C 11AF;
+C1E9;C1E9;1109 116C 11B0;C1E9;1109 116C 11B0;
+C1EA;C1EA;1109 116C 11B1;C1EA;1109 116C 11B1;
+C1EB;C1EB;1109 116C 11B2;C1EB;1109 116C 11B2;
+C1EC;C1EC;1109 116C 11B3;C1EC;1109 116C 11B3;
+C1ED;C1ED;1109 116C 11B4;C1ED;1109 116C 11B4;
+C1EE;C1EE;1109 116C 11B5;C1EE;1109 116C 11B5;
+C1EF;C1EF;1109 116C 11B6;C1EF;1109 116C 11B6;
+C1F0;C1F0;1109 116C 11B7;C1F0;1109 116C 11B7;
+C1F1;C1F1;1109 116C 11B8;C1F1;1109 116C 11B8;
+C1F2;C1F2;1109 116C 11B9;C1F2;1109 116C 11B9;
+C1F3;C1F3;1109 116C 11BA;C1F3;1109 116C 11BA;
+C1F4;C1F4;1109 116C 11BB;C1F4;1109 116C 11BB;
+C1F5;C1F5;1109 116C 11BC;C1F5;1109 116C 11BC;
+C1F6;C1F6;1109 116C 11BD;C1F6;1109 116C 11BD;
+C1F7;C1F7;1109 116C 11BE;C1F7;1109 116C 11BE;
+C1F8;C1F8;1109 116C 11BF;C1F8;1109 116C 11BF;
+C1F9;C1F9;1109 116C 11C0;C1F9;1109 116C 11C0;
+C1FA;C1FA;1109 116C 11C1;C1FA;1109 116C 11C1;
+C1FB;C1FB;1109 116C 11C2;C1FB;1109 116C 11C2;
+C1FC;C1FC;1109 116D;C1FC;1109 116D;
+C1FD;C1FD;1109 116D 11A8;C1FD;1109 116D 11A8;
+C1FE;C1FE;1109 116D 11A9;C1FE;1109 116D 11A9;
+C1FF;C1FF;1109 116D 11AA;C1FF;1109 116D 11AA;
+C200;C200;1109 116D 11AB;C200;1109 116D 11AB;
+C201;C201;1109 116D 11AC;C201;1109 116D 11AC;
+C202;C202;1109 116D 11AD;C202;1109 116D 11AD;
+C203;C203;1109 116D 11AE;C203;1109 116D 11AE;
+C204;C204;1109 116D 11AF;C204;1109 116D 11AF;
+C205;C205;1109 116D 11B0;C205;1109 116D 11B0;
+C206;C206;1109 116D 11B1;C206;1109 116D 11B1;
+C207;C207;1109 116D 11B2;C207;1109 116D 11B2;
+C208;C208;1109 116D 11B3;C208;1109 116D 11B3;
+C209;C209;1109 116D 11B4;C209;1109 116D 11B4;
+C20A;C20A;1109 116D 11B5;C20A;1109 116D 11B5;
+C20B;C20B;1109 116D 11B6;C20B;1109 116D 11B6;
+C20C;C20C;1109 116D 11B7;C20C;1109 116D 11B7;
+C20D;C20D;1109 116D 11B8;C20D;1109 116D 11B8;
+C20E;C20E;1109 116D 11B9;C20E;1109 116D 11B9;
+C20F;C20F;1109 116D 11BA;C20F;1109 116D 11BA;
+C210;C210;1109 116D 11BB;C210;1109 116D 11BB;
+C211;C211;1109 116D 11BC;C211;1109 116D 11BC;
+C212;C212;1109 116D 11BD;C212;1109 116D 11BD;
+C213;C213;1109 116D 11BE;C213;1109 116D 11BE;
+C214;C214;1109 116D 11BF;C214;1109 116D 11BF;
+C215;C215;1109 116D 11C0;C215;1109 116D 11C0;
+C216;C216;1109 116D 11C1;C216;1109 116D 11C1;
+C217;C217;1109 116D 11C2;C217;1109 116D 11C2;
+C218;C218;1109 116E;C218;1109 116E;
+C219;C219;1109 116E 11A8;C219;1109 116E 11A8;
+C21A;C21A;1109 116E 11A9;C21A;1109 116E 11A9;
+C21B;C21B;1109 116E 11AA;C21B;1109 116E 11AA;
+C21C;C21C;1109 116E 11AB;C21C;1109 116E 11AB;
+C21D;C21D;1109 116E 11AC;C21D;1109 116E 11AC;
+C21E;C21E;1109 116E 11AD;C21E;1109 116E 11AD;
+C21F;C21F;1109 116E 11AE;C21F;1109 116E 11AE;
+C220;C220;1109 116E 11AF;C220;1109 116E 11AF;
+C221;C221;1109 116E 11B0;C221;1109 116E 11B0;
+C222;C222;1109 116E 11B1;C222;1109 116E 11B1;
+C223;C223;1109 116E 11B2;C223;1109 116E 11B2;
+C224;C224;1109 116E 11B3;C224;1109 116E 11B3;
+C225;C225;1109 116E 11B4;C225;1109 116E 11B4;
+C226;C226;1109 116E 11B5;C226;1109 116E 11B5;
+C227;C227;1109 116E 11B6;C227;1109 116E 11B6;
+C228;C228;1109 116E 11B7;C228;1109 116E 11B7;
+C229;C229;1109 116E 11B8;C229;1109 116E 11B8;
+C22A;C22A;1109 116E 11B9;C22A;1109 116E 11B9;
+C22B;C22B;1109 116E 11BA;C22B;1109 116E 11BA;
+C22C;C22C;1109 116E 11BB;C22C;1109 116E 11BB;
+C22D;C22D;1109 116E 11BC;C22D;1109 116E 11BC;
+C22E;C22E;1109 116E 11BD;C22E;1109 116E 11BD;
+C22F;C22F;1109 116E 11BE;C22F;1109 116E 11BE;
+C230;C230;1109 116E 11BF;C230;1109 116E 11BF;
+C231;C231;1109 116E 11C0;C231;1109 116E 11C0;
+C232;C232;1109 116E 11C1;C232;1109 116E 11C1;
+C233;C233;1109 116E 11C2;C233;1109 116E 11C2;
+C234;C234;1109 116F;C234;1109 116F;
+C235;C235;1109 116F 11A8;C235;1109 116F 11A8;
+C236;C236;1109 116F 11A9;C236;1109 116F 11A9;
+C237;C237;1109 116F 11AA;C237;1109 116F 11AA;
+C238;C238;1109 116F 11AB;C238;1109 116F 11AB;
+C239;C239;1109 116F 11AC;C239;1109 116F 11AC;
+C23A;C23A;1109 116F 11AD;C23A;1109 116F 11AD;
+C23B;C23B;1109 116F 11AE;C23B;1109 116F 11AE;
+C23C;C23C;1109 116F 11AF;C23C;1109 116F 11AF;
+C23D;C23D;1109 116F 11B0;C23D;1109 116F 11B0;
+C23E;C23E;1109 116F 11B1;C23E;1109 116F 11B1;
+C23F;C23F;1109 116F 11B2;C23F;1109 116F 11B2;
+C240;C240;1109 116F 11B3;C240;1109 116F 11B3;
+C241;C241;1109 116F 11B4;C241;1109 116F 11B4;
+C242;C242;1109 116F 11B5;C242;1109 116F 11B5;
+C243;C243;1109 116F 11B6;C243;1109 116F 11B6;
+C244;C244;1109 116F 11B7;C244;1109 116F 11B7;
+C245;C245;1109 116F 11B8;C245;1109 116F 11B8;
+C246;C246;1109 116F 11B9;C246;1109 116F 11B9;
+C247;C247;1109 116F 11BA;C247;1109 116F 11BA;
+C248;C248;1109 116F 11BB;C248;1109 116F 11BB;
+C249;C249;1109 116F 11BC;C249;1109 116F 11BC;
+C24A;C24A;1109 116F 11BD;C24A;1109 116F 11BD;
+C24B;C24B;1109 116F 11BE;C24B;1109 116F 11BE;
+C24C;C24C;1109 116F 11BF;C24C;1109 116F 11BF;
+C24D;C24D;1109 116F 11C0;C24D;1109 116F 11C0;
+C24E;C24E;1109 116F 11C1;C24E;1109 116F 11C1;
+C24F;C24F;1109 116F 11C2;C24F;1109 116F 11C2;
+C250;C250;1109 1170;C250;1109 1170;
+C251;C251;1109 1170 11A8;C251;1109 1170 11A8;
+C252;C252;1109 1170 11A9;C252;1109 1170 11A9;
+C253;C253;1109 1170 11AA;C253;1109 1170 11AA;
+C254;C254;1109 1170 11AB;C254;1109 1170 11AB;
+C255;C255;1109 1170 11AC;C255;1109 1170 11AC;
+C256;C256;1109 1170 11AD;C256;1109 1170 11AD;
+C257;C257;1109 1170 11AE;C257;1109 1170 11AE;
+C258;C258;1109 1170 11AF;C258;1109 1170 11AF;
+C259;C259;1109 1170 11B0;C259;1109 1170 11B0;
+C25A;C25A;1109 1170 11B1;C25A;1109 1170 11B1;
+C25B;C25B;1109 1170 11B2;C25B;1109 1170 11B2;
+C25C;C25C;1109 1170 11B3;C25C;1109 1170 11B3;
+C25D;C25D;1109 1170 11B4;C25D;1109 1170 11B4;
+C25E;C25E;1109 1170 11B5;C25E;1109 1170 11B5;
+C25F;C25F;1109 1170 11B6;C25F;1109 1170 11B6;
+C260;C260;1109 1170 11B7;C260;1109 1170 11B7;
+C261;C261;1109 1170 11B8;C261;1109 1170 11B8;
+C262;C262;1109 1170 11B9;C262;1109 1170 11B9;
+C263;C263;1109 1170 11BA;C263;1109 1170 11BA;
+C264;C264;1109 1170 11BB;C264;1109 1170 11BB;
+C265;C265;1109 1170 11BC;C265;1109 1170 11BC;
+C266;C266;1109 1170 11BD;C266;1109 1170 11BD;
+C267;C267;1109 1170 11BE;C267;1109 1170 11BE;
+C268;C268;1109 1170 11BF;C268;1109 1170 11BF;
+C269;C269;1109 1170 11C0;C269;1109 1170 11C0;
+C26A;C26A;1109 1170 11C1;C26A;1109 1170 11C1;
+C26B;C26B;1109 1170 11C2;C26B;1109 1170 11C2;
+C26C;C26C;1109 1171;C26C;1109 1171;
+C26D;C26D;1109 1171 11A8;C26D;1109 1171 11A8;
+C26E;C26E;1109 1171 11A9;C26E;1109 1171 11A9;
+C26F;C26F;1109 1171 11AA;C26F;1109 1171 11AA;
+C270;C270;1109 1171 11AB;C270;1109 1171 11AB;
+C271;C271;1109 1171 11AC;C271;1109 1171 11AC;
+C272;C272;1109 1171 11AD;C272;1109 1171 11AD;
+C273;C273;1109 1171 11AE;C273;1109 1171 11AE;
+C274;C274;1109 1171 11AF;C274;1109 1171 11AF;
+C275;C275;1109 1171 11B0;C275;1109 1171 11B0;
+C276;C276;1109 1171 11B1;C276;1109 1171 11B1;
+C277;C277;1109 1171 11B2;C277;1109 1171 11B2;
+C278;C278;1109 1171 11B3;C278;1109 1171 11B3;
+C279;C279;1109 1171 11B4;C279;1109 1171 11B4;
+C27A;C27A;1109 1171 11B5;C27A;1109 1171 11B5;
+C27B;C27B;1109 1171 11B6;C27B;1109 1171 11B6;
+C27C;C27C;1109 1171 11B7;C27C;1109 1171 11B7;
+C27D;C27D;1109 1171 11B8;C27D;1109 1171 11B8;
+C27E;C27E;1109 1171 11B9;C27E;1109 1171 11B9;
+C27F;C27F;1109 1171 11BA;C27F;1109 1171 11BA;
+C280;C280;1109 1171 11BB;C280;1109 1171 11BB;
+C281;C281;1109 1171 11BC;C281;1109 1171 11BC;
+C282;C282;1109 1171 11BD;C282;1109 1171 11BD;
+C283;C283;1109 1171 11BE;C283;1109 1171 11BE;
+C284;C284;1109 1171 11BF;C284;1109 1171 11BF;
+C285;C285;1109 1171 11C0;C285;1109 1171 11C0;
+C286;C286;1109 1171 11C1;C286;1109 1171 11C1;
+C287;C287;1109 1171 11C2;C287;1109 1171 11C2;
+C288;C288;1109 1172;C288;1109 1172;
+C289;C289;1109 1172 11A8;C289;1109 1172 11A8;
+C28A;C28A;1109 1172 11A9;C28A;1109 1172 11A9;
+C28B;C28B;1109 1172 11AA;C28B;1109 1172 11AA;
+C28C;C28C;1109 1172 11AB;C28C;1109 1172 11AB;
+C28D;C28D;1109 1172 11AC;C28D;1109 1172 11AC;
+C28E;C28E;1109 1172 11AD;C28E;1109 1172 11AD;
+C28F;C28F;1109 1172 11AE;C28F;1109 1172 11AE;
+C290;C290;1109 1172 11AF;C290;1109 1172 11AF;
+C291;C291;1109 1172 11B0;C291;1109 1172 11B0;
+C292;C292;1109 1172 11B1;C292;1109 1172 11B1;
+C293;C293;1109 1172 11B2;C293;1109 1172 11B2;
+C294;C294;1109 1172 11B3;C294;1109 1172 11B3;
+C295;C295;1109 1172 11B4;C295;1109 1172 11B4;
+C296;C296;1109 1172 11B5;C296;1109 1172 11B5;
+C297;C297;1109 1172 11B6;C297;1109 1172 11B6;
+C298;C298;1109 1172 11B7;C298;1109 1172 11B7;
+C299;C299;1109 1172 11B8;C299;1109 1172 11B8;
+C29A;C29A;1109 1172 11B9;C29A;1109 1172 11B9;
+C29B;C29B;1109 1172 11BA;C29B;1109 1172 11BA;
+C29C;C29C;1109 1172 11BB;C29C;1109 1172 11BB;
+C29D;C29D;1109 1172 11BC;C29D;1109 1172 11BC;
+C29E;C29E;1109 1172 11BD;C29E;1109 1172 11BD;
+C29F;C29F;1109 1172 11BE;C29F;1109 1172 11BE;
+C2A0;C2A0;1109 1172 11BF;C2A0;1109 1172 11BF;
+C2A1;C2A1;1109 1172 11C0;C2A1;1109 1172 11C0;
+C2A2;C2A2;1109 1172 11C1;C2A2;1109 1172 11C1;
+C2A3;C2A3;1109 1172 11C2;C2A3;1109 1172 11C2;
+C2A4;C2A4;1109 1173;C2A4;1109 1173;
+C2A5;C2A5;1109 1173 11A8;C2A5;1109 1173 11A8;
+C2A6;C2A6;1109 1173 11A9;C2A6;1109 1173 11A9;
+C2A7;C2A7;1109 1173 11AA;C2A7;1109 1173 11AA;
+C2A8;C2A8;1109 1173 11AB;C2A8;1109 1173 11AB;
+C2A9;C2A9;1109 1173 11AC;C2A9;1109 1173 11AC;
+C2AA;C2AA;1109 1173 11AD;C2AA;1109 1173 11AD;
+C2AB;C2AB;1109 1173 11AE;C2AB;1109 1173 11AE;
+C2AC;C2AC;1109 1173 11AF;C2AC;1109 1173 11AF;
+C2AD;C2AD;1109 1173 11B0;C2AD;1109 1173 11B0;
+C2AE;C2AE;1109 1173 11B1;C2AE;1109 1173 11B1;
+C2AF;C2AF;1109 1173 11B2;C2AF;1109 1173 11B2;
+C2B0;C2B0;1109 1173 11B3;C2B0;1109 1173 11B3;
+C2B1;C2B1;1109 1173 11B4;C2B1;1109 1173 11B4;
+C2B2;C2B2;1109 1173 11B5;C2B2;1109 1173 11B5;
+C2B3;C2B3;1109 1173 11B6;C2B3;1109 1173 11B6;
+C2B4;C2B4;1109 1173 11B7;C2B4;1109 1173 11B7;
+C2B5;C2B5;1109 1173 11B8;C2B5;1109 1173 11B8;
+C2B6;C2B6;1109 1173 11B9;C2B6;1109 1173 11B9;
+C2B7;C2B7;1109 1173 11BA;C2B7;1109 1173 11BA;
+C2B8;C2B8;1109 1173 11BB;C2B8;1109 1173 11BB;
+C2B9;C2B9;1109 1173 11BC;C2B9;1109 1173 11BC;
+C2BA;C2BA;1109 1173 11BD;C2BA;1109 1173 11BD;
+C2BB;C2BB;1109 1173 11BE;C2BB;1109 1173 11BE;
+C2BC;C2BC;1109 1173 11BF;C2BC;1109 1173 11BF;
+C2BD;C2BD;1109 1173 11C0;C2BD;1109 1173 11C0;
+C2BE;C2BE;1109 1173 11C1;C2BE;1109 1173 11C1;
+C2BF;C2BF;1109 1173 11C2;C2BF;1109 1173 11C2;
+C2C0;C2C0;1109 1174;C2C0;1109 1174;
+C2C1;C2C1;1109 1174 11A8;C2C1;1109 1174 11A8;
+C2C2;C2C2;1109 1174 11A9;C2C2;1109 1174 11A9;
+C2C3;C2C3;1109 1174 11AA;C2C3;1109 1174 11AA;
+C2C4;C2C4;1109 1174 11AB;C2C4;1109 1174 11AB;
+C2C5;C2C5;1109 1174 11AC;C2C5;1109 1174 11AC;
+C2C6;C2C6;1109 1174 11AD;C2C6;1109 1174 11AD;
+C2C7;C2C7;1109 1174 11AE;C2C7;1109 1174 11AE;
+C2C8;C2C8;1109 1174 11AF;C2C8;1109 1174 11AF;
+C2C9;C2C9;1109 1174 11B0;C2C9;1109 1174 11B0;
+C2CA;C2CA;1109 1174 11B1;C2CA;1109 1174 11B1;
+C2CB;C2CB;1109 1174 11B2;C2CB;1109 1174 11B2;
+C2CC;C2CC;1109 1174 11B3;C2CC;1109 1174 11B3;
+C2CD;C2CD;1109 1174 11B4;C2CD;1109 1174 11B4;
+C2CE;C2CE;1109 1174 11B5;C2CE;1109 1174 11B5;
+C2CF;C2CF;1109 1174 11B6;C2CF;1109 1174 11B6;
+C2D0;C2D0;1109 1174 11B7;C2D0;1109 1174 11B7;
+C2D1;C2D1;1109 1174 11B8;C2D1;1109 1174 11B8;
+C2D2;C2D2;1109 1174 11B9;C2D2;1109 1174 11B9;
+C2D3;C2D3;1109 1174 11BA;C2D3;1109 1174 11BA;
+C2D4;C2D4;1109 1174 11BB;C2D4;1109 1174 11BB;
+C2D5;C2D5;1109 1174 11BC;C2D5;1109 1174 11BC;
+C2D6;C2D6;1109 1174 11BD;C2D6;1109 1174 11BD;
+C2D7;C2D7;1109 1174 11BE;C2D7;1109 1174 11BE;
+C2D8;C2D8;1109 1174 11BF;C2D8;1109 1174 11BF;
+C2D9;C2D9;1109 1174 11C0;C2D9;1109 1174 11C0;
+C2DA;C2DA;1109 1174 11C1;C2DA;1109 1174 11C1;
+C2DB;C2DB;1109 1174 11C2;C2DB;1109 1174 11C2;
+C2DC;C2DC;1109 1175;C2DC;1109 1175;
+C2DD;C2DD;1109 1175 11A8;C2DD;1109 1175 11A8;
+C2DE;C2DE;1109 1175 11A9;C2DE;1109 1175 11A9;
+C2DF;C2DF;1109 1175 11AA;C2DF;1109 1175 11AA;
+C2E0;C2E0;1109 1175 11AB;C2E0;1109 1175 11AB;
+C2E1;C2E1;1109 1175 11AC;C2E1;1109 1175 11AC;
+C2E2;C2E2;1109 1175 11AD;C2E2;1109 1175 11AD;
+C2E3;C2E3;1109 1175 11AE;C2E3;1109 1175 11AE;
+C2E4;C2E4;1109 1175 11AF;C2E4;1109 1175 11AF;
+C2E5;C2E5;1109 1175 11B0;C2E5;1109 1175 11B0;
+C2E6;C2E6;1109 1175 11B1;C2E6;1109 1175 11B1;
+C2E7;C2E7;1109 1175 11B2;C2E7;1109 1175 11B2;
+C2E8;C2E8;1109 1175 11B3;C2E8;1109 1175 11B3;
+C2E9;C2E9;1109 1175 11B4;C2E9;1109 1175 11B4;
+C2EA;C2EA;1109 1175 11B5;C2EA;1109 1175 11B5;
+C2EB;C2EB;1109 1175 11B6;C2EB;1109 1175 11B6;
+C2EC;C2EC;1109 1175 11B7;C2EC;1109 1175 11B7;
+C2ED;C2ED;1109 1175 11B8;C2ED;1109 1175 11B8;
+C2EE;C2EE;1109 1175 11B9;C2EE;1109 1175 11B9;
+C2EF;C2EF;1109 1175 11BA;C2EF;1109 1175 11BA;
+C2F0;C2F0;1109 1175 11BB;C2F0;1109 1175 11BB;
+C2F1;C2F1;1109 1175 11BC;C2F1;1109 1175 11BC;
+C2F2;C2F2;1109 1175 11BD;C2F2;1109 1175 11BD;
+C2F3;C2F3;1109 1175 11BE;C2F3;1109 1175 11BE;
+C2F4;C2F4;1109 1175 11BF;C2F4;1109 1175 11BF;
+C2F5;C2F5;1109 1175 11C0;C2F5;1109 1175 11C0;
+C2F6;C2F6;1109 1175 11C1;C2F6;1109 1175 11C1;
+C2F7;C2F7;1109 1175 11C2;C2F7;1109 1175 11C2;
+C2F8;C2F8;110A 1161;C2F8;110A 1161;
+C2F9;C2F9;110A 1161 11A8;C2F9;110A 1161 11A8;
+C2FA;C2FA;110A 1161 11A9;C2FA;110A 1161 11A9;
+C2FB;C2FB;110A 1161 11AA;C2FB;110A 1161 11AA;
+C2FC;C2FC;110A 1161 11AB;C2FC;110A 1161 11AB;
+C2FD;C2FD;110A 1161 11AC;C2FD;110A 1161 11AC;
+C2FE;C2FE;110A 1161 11AD;C2FE;110A 1161 11AD;
+C2FF;C2FF;110A 1161 11AE;C2FF;110A 1161 11AE;
+C300;C300;110A 1161 11AF;C300;110A 1161 11AF;
+C301;C301;110A 1161 11B0;C301;110A 1161 11B0;
+C302;C302;110A 1161 11B1;C302;110A 1161 11B1;
+C303;C303;110A 1161 11B2;C303;110A 1161 11B2;
+C304;C304;110A 1161 11B3;C304;110A 1161 11B3;
+C305;C305;110A 1161 11B4;C305;110A 1161 11B4;
+C306;C306;110A 1161 11B5;C306;110A 1161 11B5;
+C307;C307;110A 1161 11B6;C307;110A 1161 11B6;
+C308;C308;110A 1161 11B7;C308;110A 1161 11B7;
+C309;C309;110A 1161 11B8;C309;110A 1161 11B8;
+C30A;C30A;110A 1161 11B9;C30A;110A 1161 11B9;
+C30B;C30B;110A 1161 11BA;C30B;110A 1161 11BA;
+C30C;C30C;110A 1161 11BB;C30C;110A 1161 11BB;
+C30D;C30D;110A 1161 11BC;C30D;110A 1161 11BC;
+C30E;C30E;110A 1161 11BD;C30E;110A 1161 11BD;
+C30F;C30F;110A 1161 11BE;C30F;110A 1161 11BE;
+C310;C310;110A 1161 11BF;C310;110A 1161 11BF;
+C311;C311;110A 1161 11C0;C311;110A 1161 11C0;
+C312;C312;110A 1161 11C1;C312;110A 1161 11C1;
+C313;C313;110A 1161 11C2;C313;110A 1161 11C2;
+C314;C314;110A 1162;C314;110A 1162;
+C315;C315;110A 1162 11A8;C315;110A 1162 11A8;
+C316;C316;110A 1162 11A9;C316;110A 1162 11A9;
+C317;C317;110A 1162 11AA;C317;110A 1162 11AA;
+C318;C318;110A 1162 11AB;C318;110A 1162 11AB;
+C319;C319;110A 1162 11AC;C319;110A 1162 11AC;
+C31A;C31A;110A 1162 11AD;C31A;110A 1162 11AD;
+C31B;C31B;110A 1162 11AE;C31B;110A 1162 11AE;
+C31C;C31C;110A 1162 11AF;C31C;110A 1162 11AF;
+C31D;C31D;110A 1162 11B0;C31D;110A 1162 11B0;
+C31E;C31E;110A 1162 11B1;C31E;110A 1162 11B1;
+C31F;C31F;110A 1162 11B2;C31F;110A 1162 11B2;
+C320;C320;110A 1162 11B3;C320;110A 1162 11B3;
+C321;C321;110A 1162 11B4;C321;110A 1162 11B4;
+C322;C322;110A 1162 11B5;C322;110A 1162 11B5;
+C323;C323;110A 1162 11B6;C323;110A 1162 11B6;
+C324;C324;110A 1162 11B7;C324;110A 1162 11B7;
+C325;C325;110A 1162 11B8;C325;110A 1162 11B8;
+C326;C326;110A 1162 11B9;C326;110A 1162 11B9;
+C327;C327;110A 1162 11BA;C327;110A 1162 11BA;
+C328;C328;110A 1162 11BB;C328;110A 1162 11BB;
+C329;C329;110A 1162 11BC;C329;110A 1162 11BC;
+C32A;C32A;110A 1162 11BD;C32A;110A 1162 11BD;
+C32B;C32B;110A 1162 11BE;C32B;110A 1162 11BE;
+C32C;C32C;110A 1162 11BF;C32C;110A 1162 11BF;
+C32D;C32D;110A 1162 11C0;C32D;110A 1162 11C0;
+C32E;C32E;110A 1162 11C1;C32E;110A 1162 11C1;
+C32F;C32F;110A 1162 11C2;C32F;110A 1162 11C2;
+C330;C330;110A 1163;C330;110A 1163;
+C331;C331;110A 1163 11A8;C331;110A 1163 11A8;
+C332;C332;110A 1163 11A9;C332;110A 1163 11A9;
+C333;C333;110A 1163 11AA;C333;110A 1163 11AA;
+C334;C334;110A 1163 11AB;C334;110A 1163 11AB;
+C335;C335;110A 1163 11AC;C335;110A 1163 11AC;
+C336;C336;110A 1163 11AD;C336;110A 1163 11AD;
+C337;C337;110A 1163 11AE;C337;110A 1163 11AE;
+C338;C338;110A 1163 11AF;C338;110A 1163 11AF;
+C339;C339;110A 1163 11B0;C339;110A 1163 11B0;
+C33A;C33A;110A 1163 11B1;C33A;110A 1163 11B1;
+C33B;C33B;110A 1163 11B2;C33B;110A 1163 11B2;
+C33C;C33C;110A 1163 11B3;C33C;110A 1163 11B3;
+C33D;C33D;110A 1163 11B4;C33D;110A 1163 11B4;
+C33E;C33E;110A 1163 11B5;C33E;110A 1163 11B5;
+C33F;C33F;110A 1163 11B6;C33F;110A 1163 11B6;
+C340;C340;110A 1163 11B7;C340;110A 1163 11B7;
+C341;C341;110A 1163 11B8;C341;110A 1163 11B8;
+C342;C342;110A 1163 11B9;C342;110A 1163 11B9;
+C343;C343;110A 1163 11BA;C343;110A 1163 11BA;
+C344;C344;110A 1163 11BB;C344;110A 1163 11BB;
+C345;C345;110A 1163 11BC;C345;110A 1163 11BC;
+C346;C346;110A 1163 11BD;C346;110A 1163 11BD;
+C347;C347;110A 1163 11BE;C347;110A 1163 11BE;
+C348;C348;110A 1163 11BF;C348;110A 1163 11BF;
+C349;C349;110A 1163 11C0;C349;110A 1163 11C0;
+C34A;C34A;110A 1163 11C1;C34A;110A 1163 11C1;
+C34B;C34B;110A 1163 11C2;C34B;110A 1163 11C2;
+C34C;C34C;110A 1164;C34C;110A 1164;
+C34D;C34D;110A 1164 11A8;C34D;110A 1164 11A8;
+C34E;C34E;110A 1164 11A9;C34E;110A 1164 11A9;
+C34F;C34F;110A 1164 11AA;C34F;110A 1164 11AA;
+C350;C350;110A 1164 11AB;C350;110A 1164 11AB;
+C351;C351;110A 1164 11AC;C351;110A 1164 11AC;
+C352;C352;110A 1164 11AD;C352;110A 1164 11AD;
+C353;C353;110A 1164 11AE;C353;110A 1164 11AE;
+C354;C354;110A 1164 11AF;C354;110A 1164 11AF;
+C355;C355;110A 1164 11B0;C355;110A 1164 11B0;
+C356;C356;110A 1164 11B1;C356;110A 1164 11B1;
+C357;C357;110A 1164 11B2;C357;110A 1164 11B2;
+C358;C358;110A 1164 11B3;C358;110A 1164 11B3;
+C359;C359;110A 1164 11B4;C359;110A 1164 11B4;
+C35A;C35A;110A 1164 11B5;C35A;110A 1164 11B5;
+C35B;C35B;110A 1164 11B6;C35B;110A 1164 11B6;
+C35C;C35C;110A 1164 11B7;C35C;110A 1164 11B7;
+C35D;C35D;110A 1164 11B8;C35D;110A 1164 11B8;
+C35E;C35E;110A 1164 11B9;C35E;110A 1164 11B9;
+C35F;C35F;110A 1164 11BA;C35F;110A 1164 11BA;
+C360;C360;110A 1164 11BB;C360;110A 1164 11BB;
+C361;C361;110A 1164 11BC;C361;110A 1164 11BC;
+C362;C362;110A 1164 11BD;C362;110A 1164 11BD;
+C363;C363;110A 1164 11BE;C363;110A 1164 11BE;
+C364;C364;110A 1164 11BF;C364;110A 1164 11BF;
+C365;C365;110A 1164 11C0;C365;110A 1164 11C0;
+C366;C366;110A 1164 11C1;C366;110A 1164 11C1;
+C367;C367;110A 1164 11C2;C367;110A 1164 11C2;
+C368;C368;110A 1165;C368;110A 1165;
+C369;C369;110A 1165 11A8;C369;110A 1165 11A8;
+C36A;C36A;110A 1165 11A9;C36A;110A 1165 11A9;
+C36B;C36B;110A 1165 11AA;C36B;110A 1165 11AA;
+C36C;C36C;110A 1165 11AB;C36C;110A 1165 11AB;
+C36D;C36D;110A 1165 11AC;C36D;110A 1165 11AC;
+C36E;C36E;110A 1165 11AD;C36E;110A 1165 11AD;
+C36F;C36F;110A 1165 11AE;C36F;110A 1165 11AE;
+C370;C370;110A 1165 11AF;C370;110A 1165 11AF;
+C371;C371;110A 1165 11B0;C371;110A 1165 11B0;
+C372;C372;110A 1165 11B1;C372;110A 1165 11B1;
+C373;C373;110A 1165 11B2;C373;110A 1165 11B2;
+C374;C374;110A 1165 11B3;C374;110A 1165 11B3;
+C375;C375;110A 1165 11B4;C375;110A 1165 11B4;
+C376;C376;110A 1165 11B5;C376;110A 1165 11B5;
+C377;C377;110A 1165 11B6;C377;110A 1165 11B6;
+C378;C378;110A 1165 11B7;C378;110A 1165 11B7;
+C379;C379;110A 1165 11B8;C379;110A 1165 11B8;
+C37A;C37A;110A 1165 11B9;C37A;110A 1165 11B9;
+C37B;C37B;110A 1165 11BA;C37B;110A 1165 11BA;
+C37C;C37C;110A 1165 11BB;C37C;110A 1165 11BB;
+C37D;C37D;110A 1165 11BC;C37D;110A 1165 11BC;
+C37E;C37E;110A 1165 11BD;C37E;110A 1165 11BD;
+C37F;C37F;110A 1165 11BE;C37F;110A 1165 11BE;
+C380;C380;110A 1165 11BF;C380;110A 1165 11BF;
+C381;C381;110A 1165 11C0;C381;110A 1165 11C0;
+C382;C382;110A 1165 11C1;C382;110A 1165 11C1;
+C383;C383;110A 1165 11C2;C383;110A 1165 11C2;
+C384;C384;110A 1166;C384;110A 1166;
+C385;C385;110A 1166 11A8;C385;110A 1166 11A8;
+C386;C386;110A 1166 11A9;C386;110A 1166 11A9;
+C387;C387;110A 1166 11AA;C387;110A 1166 11AA;
+C388;C388;110A 1166 11AB;C388;110A 1166 11AB;
+C389;C389;110A 1166 11AC;C389;110A 1166 11AC;
+C38A;C38A;110A 1166 11AD;C38A;110A 1166 11AD;
+C38B;C38B;110A 1166 11AE;C38B;110A 1166 11AE;
+C38C;C38C;110A 1166 11AF;C38C;110A 1166 11AF;
+C38D;C38D;110A 1166 11B0;C38D;110A 1166 11B0;
+C38E;C38E;110A 1166 11B1;C38E;110A 1166 11B1;
+C38F;C38F;110A 1166 11B2;C38F;110A 1166 11B2;
+C390;C390;110A 1166 11B3;C390;110A 1166 11B3;
+C391;C391;110A 1166 11B4;C391;110A 1166 11B4;
+C392;C392;110A 1166 11B5;C392;110A 1166 11B5;
+C393;C393;110A 1166 11B6;C393;110A 1166 11B6;
+C394;C394;110A 1166 11B7;C394;110A 1166 11B7;
+C395;C395;110A 1166 11B8;C395;110A 1166 11B8;
+C396;C396;110A 1166 11B9;C396;110A 1166 11B9;
+C397;C397;110A 1166 11BA;C397;110A 1166 11BA;
+C398;C398;110A 1166 11BB;C398;110A 1166 11BB;
+C399;C399;110A 1166 11BC;C399;110A 1166 11BC;
+C39A;C39A;110A 1166 11BD;C39A;110A 1166 11BD;
+C39B;C39B;110A 1166 11BE;C39B;110A 1166 11BE;
+C39C;C39C;110A 1166 11BF;C39C;110A 1166 11BF;
+C39D;C39D;110A 1166 11C0;C39D;110A 1166 11C0;
+C39E;C39E;110A 1166 11C1;C39E;110A 1166 11C1;
+C39F;C39F;110A 1166 11C2;C39F;110A 1166 11C2;
+C3A0;C3A0;110A 1167;C3A0;110A 1167;
+C3A1;C3A1;110A 1167 11A8;C3A1;110A 1167 11A8;
+C3A2;C3A2;110A 1167 11A9;C3A2;110A 1167 11A9;
+C3A3;C3A3;110A 1167 11AA;C3A3;110A 1167 11AA;
+C3A4;C3A4;110A 1167 11AB;C3A4;110A 1167 11AB;
+C3A5;C3A5;110A 1167 11AC;C3A5;110A 1167 11AC;
+C3A6;C3A6;110A 1167 11AD;C3A6;110A 1167 11AD;
+C3A7;C3A7;110A 1167 11AE;C3A7;110A 1167 11AE;
+C3A8;C3A8;110A 1167 11AF;C3A8;110A 1167 11AF;
+C3A9;C3A9;110A 1167 11B0;C3A9;110A 1167 11B0;
+C3AA;C3AA;110A 1167 11B1;C3AA;110A 1167 11B1;
+C3AB;C3AB;110A 1167 11B2;C3AB;110A 1167 11B2;
+C3AC;C3AC;110A 1167 11B3;C3AC;110A 1167 11B3;
+C3AD;C3AD;110A 1167 11B4;C3AD;110A 1167 11B4;
+C3AE;C3AE;110A 1167 11B5;C3AE;110A 1167 11B5;
+C3AF;C3AF;110A 1167 11B6;C3AF;110A 1167 11B6;
+C3B0;C3B0;110A 1167 11B7;C3B0;110A 1167 11B7;
+C3B1;C3B1;110A 1167 11B8;C3B1;110A 1167 11B8;
+C3B2;C3B2;110A 1167 11B9;C3B2;110A 1167 11B9;
+C3B3;C3B3;110A 1167 11BA;C3B3;110A 1167 11BA;
+C3B4;C3B4;110A 1167 11BB;C3B4;110A 1167 11BB;
+C3B5;C3B5;110A 1167 11BC;C3B5;110A 1167 11BC;
+C3B6;C3B6;110A 1167 11BD;C3B6;110A 1167 11BD;
+C3B7;C3B7;110A 1167 11BE;C3B7;110A 1167 11BE;
+C3B8;C3B8;110A 1167 11BF;C3B8;110A 1167 11BF;
+C3B9;C3B9;110A 1167 11C0;C3B9;110A 1167 11C0;
+C3BA;C3BA;110A 1167 11C1;C3BA;110A 1167 11C1;
+C3BB;C3BB;110A 1167 11C2;C3BB;110A 1167 11C2;
+C3BC;C3BC;110A 1168;C3BC;110A 1168;
+C3BD;C3BD;110A 1168 11A8;C3BD;110A 1168 11A8;
+C3BE;C3BE;110A 1168 11A9;C3BE;110A 1168 11A9;
+C3BF;C3BF;110A 1168 11AA;C3BF;110A 1168 11AA;
+C3C0;C3C0;110A 1168 11AB;C3C0;110A 1168 11AB;
+C3C1;C3C1;110A 1168 11AC;C3C1;110A 1168 11AC;
+C3C2;C3C2;110A 1168 11AD;C3C2;110A 1168 11AD;
+C3C3;C3C3;110A 1168 11AE;C3C3;110A 1168 11AE;
+C3C4;C3C4;110A 1168 11AF;C3C4;110A 1168 11AF;
+C3C5;C3C5;110A 1168 11B0;C3C5;110A 1168 11B0;
+C3C6;C3C6;110A 1168 11B1;C3C6;110A 1168 11B1;
+C3C7;C3C7;110A 1168 11B2;C3C7;110A 1168 11B2;
+C3C8;C3C8;110A 1168 11B3;C3C8;110A 1168 11B3;
+C3C9;C3C9;110A 1168 11B4;C3C9;110A 1168 11B4;
+C3CA;C3CA;110A 1168 11B5;C3CA;110A 1168 11B5;
+C3CB;C3CB;110A 1168 11B6;C3CB;110A 1168 11B6;
+C3CC;C3CC;110A 1168 11B7;C3CC;110A 1168 11B7;
+C3CD;C3CD;110A 1168 11B8;C3CD;110A 1168 11B8;
+C3CE;C3CE;110A 1168 11B9;C3CE;110A 1168 11B9;
+C3CF;C3CF;110A 1168 11BA;C3CF;110A 1168 11BA;
+C3D0;C3D0;110A 1168 11BB;C3D0;110A 1168 11BB;
+C3D1;C3D1;110A 1168 11BC;C3D1;110A 1168 11BC;
+C3D2;C3D2;110A 1168 11BD;C3D2;110A 1168 11BD;
+C3D3;C3D3;110A 1168 11BE;C3D3;110A 1168 11BE;
+C3D4;C3D4;110A 1168 11BF;C3D4;110A 1168 11BF;
+C3D5;C3D5;110A 1168 11C0;C3D5;110A 1168 11C0;
+C3D6;C3D6;110A 1168 11C1;C3D6;110A 1168 11C1;
+C3D7;C3D7;110A 1168 11C2;C3D7;110A 1168 11C2;
+C3D8;C3D8;110A 1169;C3D8;110A 1169;
+C3D9;C3D9;110A 1169 11A8;C3D9;110A 1169 11A8;
+C3DA;C3DA;110A 1169 11A9;C3DA;110A 1169 11A9;
+C3DB;C3DB;110A 1169 11AA;C3DB;110A 1169 11AA;
+C3DC;C3DC;110A 1169 11AB;C3DC;110A 1169 11AB;
+C3DD;C3DD;110A 1169 11AC;C3DD;110A 1169 11AC;
+C3DE;C3DE;110A 1169 11AD;C3DE;110A 1169 11AD;
+C3DF;C3DF;110A 1169 11AE;C3DF;110A 1169 11AE;
+C3E0;C3E0;110A 1169 11AF;C3E0;110A 1169 11AF;
+C3E1;C3E1;110A 1169 11B0;C3E1;110A 1169 11B0;
+C3E2;C3E2;110A 1169 11B1;C3E2;110A 1169 11B1;
+C3E3;C3E3;110A 1169 11B2;C3E3;110A 1169 11B2;
+C3E4;C3E4;110A 1169 11B3;C3E4;110A 1169 11B3;
+C3E5;C3E5;110A 1169 11B4;C3E5;110A 1169 11B4;
+C3E6;C3E6;110A 1169 11B5;C3E6;110A 1169 11B5;
+C3E7;C3E7;110A 1169 11B6;C3E7;110A 1169 11B6;
+C3E8;C3E8;110A 1169 11B7;C3E8;110A 1169 11B7;
+C3E9;C3E9;110A 1169 11B8;C3E9;110A 1169 11B8;
+C3EA;C3EA;110A 1169 11B9;C3EA;110A 1169 11B9;
+C3EB;C3EB;110A 1169 11BA;C3EB;110A 1169 11BA;
+C3EC;C3EC;110A 1169 11BB;C3EC;110A 1169 11BB;
+C3ED;C3ED;110A 1169 11BC;C3ED;110A 1169 11BC;
+C3EE;C3EE;110A 1169 11BD;C3EE;110A 1169 11BD;
+C3EF;C3EF;110A 1169 11BE;C3EF;110A 1169 11BE;
+C3F0;C3F0;110A 1169 11BF;C3F0;110A 1169 11BF;
+C3F1;C3F1;110A 1169 11C0;C3F1;110A 1169 11C0;
+C3F2;C3F2;110A 1169 11C1;C3F2;110A 1169 11C1;
+C3F3;C3F3;110A 1169 11C2;C3F3;110A 1169 11C2;
+C3F4;C3F4;110A 116A;C3F4;110A 116A;
+C3F5;C3F5;110A 116A 11A8;C3F5;110A 116A 11A8;
+C3F6;C3F6;110A 116A 11A9;C3F6;110A 116A 11A9;
+C3F7;C3F7;110A 116A 11AA;C3F7;110A 116A 11AA;
+C3F8;C3F8;110A 116A 11AB;C3F8;110A 116A 11AB;
+C3F9;C3F9;110A 116A 11AC;C3F9;110A 116A 11AC;
+C3FA;C3FA;110A 116A 11AD;C3FA;110A 116A 11AD;
+C3FB;C3FB;110A 116A 11AE;C3FB;110A 116A 11AE;
+C3FC;C3FC;110A 116A 11AF;C3FC;110A 116A 11AF;
+C3FD;C3FD;110A 116A 11B0;C3FD;110A 116A 11B0;
+C3FE;C3FE;110A 116A 11B1;C3FE;110A 116A 11B1;
+C3FF;C3FF;110A 116A 11B2;C3FF;110A 116A 11B2;
+C400;C400;110A 116A 11B3;C400;110A 116A 11B3;
+C401;C401;110A 116A 11B4;C401;110A 116A 11B4;
+C402;C402;110A 116A 11B5;C402;110A 116A 11B5;
+C403;C403;110A 116A 11B6;C403;110A 116A 11B6;
+C404;C404;110A 116A 11B7;C404;110A 116A 11B7;
+C405;C405;110A 116A 11B8;C405;110A 116A 11B8;
+C406;C406;110A 116A 11B9;C406;110A 116A 11B9;
+C407;C407;110A 116A 11BA;C407;110A 116A 11BA;
+C408;C408;110A 116A 11BB;C408;110A 116A 11BB;
+C409;C409;110A 116A 11BC;C409;110A 116A 11BC;
+C40A;C40A;110A 116A 11BD;C40A;110A 116A 11BD;
+C40B;C40B;110A 116A 11BE;C40B;110A 116A 11BE;
+C40C;C40C;110A 116A 11BF;C40C;110A 116A 11BF;
+C40D;C40D;110A 116A 11C0;C40D;110A 116A 11C0;
+C40E;C40E;110A 116A 11C1;C40E;110A 116A 11C1;
+C40F;C40F;110A 116A 11C2;C40F;110A 116A 11C2;
+C410;C410;110A 116B;C410;110A 116B;
+C411;C411;110A 116B 11A8;C411;110A 116B 11A8;
+C412;C412;110A 116B 11A9;C412;110A 116B 11A9;
+C413;C413;110A 116B 11AA;C413;110A 116B 11AA;
+C414;C414;110A 116B 11AB;C414;110A 116B 11AB;
+C415;C415;110A 116B 11AC;C415;110A 116B 11AC;
+C416;C416;110A 116B 11AD;C416;110A 116B 11AD;
+C417;C417;110A 116B 11AE;C417;110A 116B 11AE;
+C418;C418;110A 116B 11AF;C418;110A 116B 11AF;
+C419;C419;110A 116B 11B0;C419;110A 116B 11B0;
+C41A;C41A;110A 116B 11B1;C41A;110A 116B 11B1;
+C41B;C41B;110A 116B 11B2;C41B;110A 116B 11B2;
+C41C;C41C;110A 116B 11B3;C41C;110A 116B 11B3;
+C41D;C41D;110A 116B 11B4;C41D;110A 116B 11B4;
+C41E;C41E;110A 116B 11B5;C41E;110A 116B 11B5;
+C41F;C41F;110A 116B 11B6;C41F;110A 116B 11B6;
+C420;C420;110A 116B 11B7;C420;110A 116B 11B7;
+C421;C421;110A 116B 11B8;C421;110A 116B 11B8;
+C422;C422;110A 116B 11B9;C422;110A 116B 11B9;
+C423;C423;110A 116B 11BA;C423;110A 116B 11BA;
+C424;C424;110A 116B 11BB;C424;110A 116B 11BB;
+C425;C425;110A 116B 11BC;C425;110A 116B 11BC;
+C426;C426;110A 116B 11BD;C426;110A 116B 11BD;
+C427;C427;110A 116B 11BE;C427;110A 116B 11BE;
+C428;C428;110A 116B 11BF;C428;110A 116B 11BF;
+C429;C429;110A 116B 11C0;C429;110A 116B 11C0;
+C42A;C42A;110A 116B 11C1;C42A;110A 116B 11C1;
+C42B;C42B;110A 116B 11C2;C42B;110A 116B 11C2;
+C42C;C42C;110A 116C;C42C;110A 116C;
+C42D;C42D;110A 116C 11A8;C42D;110A 116C 11A8;
+C42E;C42E;110A 116C 11A9;C42E;110A 116C 11A9;
+C42F;C42F;110A 116C 11AA;C42F;110A 116C 11AA;
+C430;C430;110A 116C 11AB;C430;110A 116C 11AB;
+C431;C431;110A 116C 11AC;C431;110A 116C 11AC;
+C432;C432;110A 116C 11AD;C432;110A 116C 11AD;
+C433;C433;110A 116C 11AE;C433;110A 116C 11AE;
+C434;C434;110A 116C 11AF;C434;110A 116C 11AF;
+C435;C435;110A 116C 11B0;C435;110A 116C 11B0;
+C436;C436;110A 116C 11B1;C436;110A 116C 11B1;
+C437;C437;110A 116C 11B2;C437;110A 116C 11B2;
+C438;C438;110A 116C 11B3;C438;110A 116C 11B3;
+C439;C439;110A 116C 11B4;C439;110A 116C 11B4;
+C43A;C43A;110A 116C 11B5;C43A;110A 116C 11B5;
+C43B;C43B;110A 116C 11B6;C43B;110A 116C 11B6;
+C43C;C43C;110A 116C 11B7;C43C;110A 116C 11B7;
+C43D;C43D;110A 116C 11B8;C43D;110A 116C 11B8;
+C43E;C43E;110A 116C 11B9;C43E;110A 116C 11B9;
+C43F;C43F;110A 116C 11BA;C43F;110A 116C 11BA;
+C440;C440;110A 116C 11BB;C440;110A 116C 11BB;
+C441;C441;110A 116C 11BC;C441;110A 116C 11BC;
+C442;C442;110A 116C 11BD;C442;110A 116C 11BD;
+C443;C443;110A 116C 11BE;C443;110A 116C 11BE;
+C444;C444;110A 116C 11BF;C444;110A 116C 11BF;
+C445;C445;110A 116C 11C0;C445;110A 116C 11C0;
+C446;C446;110A 116C 11C1;C446;110A 116C 11C1;
+C447;C447;110A 116C 11C2;C447;110A 116C 11C2;
+C448;C448;110A 116D;C448;110A 116D;
+C449;C449;110A 116D 11A8;C449;110A 116D 11A8;
+C44A;C44A;110A 116D 11A9;C44A;110A 116D 11A9;
+C44B;C44B;110A 116D 11AA;C44B;110A 116D 11AA;
+C44C;C44C;110A 116D 11AB;C44C;110A 116D 11AB;
+C44D;C44D;110A 116D 11AC;C44D;110A 116D 11AC;
+C44E;C44E;110A 116D 11AD;C44E;110A 116D 11AD;
+C44F;C44F;110A 116D 11AE;C44F;110A 116D 11AE;
+C450;C450;110A 116D 11AF;C450;110A 116D 11AF;
+C451;C451;110A 116D 11B0;C451;110A 116D 11B0;
+C452;C452;110A 116D 11B1;C452;110A 116D 11B1;
+C453;C453;110A 116D 11B2;C453;110A 116D 11B2;
+C454;C454;110A 116D 11B3;C454;110A 116D 11B3;
+C455;C455;110A 116D 11B4;C455;110A 116D 11B4;
+C456;C456;110A 116D 11B5;C456;110A 116D 11B5;
+C457;C457;110A 116D 11B6;C457;110A 116D 11B6;
+C458;C458;110A 116D 11B7;C458;110A 116D 11B7;
+C459;C459;110A 116D 11B8;C459;110A 116D 11B8;
+C45A;C45A;110A 116D 11B9;C45A;110A 116D 11B9;
+C45B;C45B;110A 116D 11BA;C45B;110A 116D 11BA;
+C45C;C45C;110A 116D 11BB;C45C;110A 116D 11BB;
+C45D;C45D;110A 116D 11BC;C45D;110A 116D 11BC;
+C45E;C45E;110A 116D 11BD;C45E;110A 116D 11BD;
+C45F;C45F;110A 116D 11BE;C45F;110A 116D 11BE;
+C460;C460;110A 116D 11BF;C460;110A 116D 11BF;
+C461;C461;110A 116D 11C0;C461;110A 116D 11C0;
+C462;C462;110A 116D 11C1;C462;110A 116D 11C1;
+C463;C463;110A 116D 11C2;C463;110A 116D 11C2;
+C464;C464;110A 116E;C464;110A 116E;
+C465;C465;110A 116E 11A8;C465;110A 116E 11A8;
+C466;C466;110A 116E 11A9;C466;110A 116E 11A9;
+C467;C467;110A 116E 11AA;C467;110A 116E 11AA;
+C468;C468;110A 116E 11AB;C468;110A 116E 11AB;
+C469;C469;110A 116E 11AC;C469;110A 116E 11AC;
+C46A;C46A;110A 116E 11AD;C46A;110A 116E 11AD;
+C46B;C46B;110A 116E 11AE;C46B;110A 116E 11AE;
+C46C;C46C;110A 116E 11AF;C46C;110A 116E 11AF;
+C46D;C46D;110A 116E 11B0;C46D;110A 116E 11B0;
+C46E;C46E;110A 116E 11B1;C46E;110A 116E 11B1;
+C46F;C46F;110A 116E 11B2;C46F;110A 116E 11B2;
+C470;C470;110A 116E 11B3;C470;110A 116E 11B3;
+C471;C471;110A 116E 11B4;C471;110A 116E 11B4;
+C472;C472;110A 116E 11B5;C472;110A 116E 11B5;
+C473;C473;110A 116E 11B6;C473;110A 116E 11B6;
+C474;C474;110A 116E 11B7;C474;110A 116E 11B7;
+C475;C475;110A 116E 11B8;C475;110A 116E 11B8;
+C476;C476;110A 116E 11B9;C476;110A 116E 11B9;
+C477;C477;110A 116E 11BA;C477;110A 116E 11BA;
+C478;C478;110A 116E 11BB;C478;110A 116E 11BB;
+C479;C479;110A 116E 11BC;C479;110A 116E 11BC;
+C47A;C47A;110A 116E 11BD;C47A;110A 116E 11BD;
+C47B;C47B;110A 116E 11BE;C47B;110A 116E 11BE;
+C47C;C47C;110A 116E 11BF;C47C;110A 116E 11BF;
+C47D;C47D;110A 116E 11C0;C47D;110A 116E 11C0;
+C47E;C47E;110A 116E 11C1;C47E;110A 116E 11C1;
+C47F;C47F;110A 116E 11C2;C47F;110A 116E 11C2;
+C480;C480;110A 116F;C480;110A 116F;
+C481;C481;110A 116F 11A8;C481;110A 116F 11A8;
+C482;C482;110A 116F 11A9;C482;110A 116F 11A9;
+C483;C483;110A 116F 11AA;C483;110A 116F 11AA;
+C484;C484;110A 116F 11AB;C484;110A 116F 11AB;
+C485;C485;110A 116F 11AC;C485;110A 116F 11AC;
+C486;C486;110A 116F 11AD;C486;110A 116F 11AD;
+C487;C487;110A 116F 11AE;C487;110A 116F 11AE;
+C488;C488;110A 116F 11AF;C488;110A 116F 11AF;
+C489;C489;110A 116F 11B0;C489;110A 116F 11B0;
+C48A;C48A;110A 116F 11B1;C48A;110A 116F 11B1;
+C48B;C48B;110A 116F 11B2;C48B;110A 116F 11B2;
+C48C;C48C;110A 116F 11B3;C48C;110A 116F 11B3;
+C48D;C48D;110A 116F 11B4;C48D;110A 116F 11B4;
+C48E;C48E;110A 116F 11B5;C48E;110A 116F 11B5;
+C48F;C48F;110A 116F 11B6;C48F;110A 116F 11B6;
+C490;C490;110A 116F 11B7;C490;110A 116F 11B7;
+C491;C491;110A 116F 11B8;C491;110A 116F 11B8;
+C492;C492;110A 116F 11B9;C492;110A 116F 11B9;
+C493;C493;110A 116F 11BA;C493;110A 116F 11BA;
+C494;C494;110A 116F 11BB;C494;110A 116F 11BB;
+C495;C495;110A 116F 11BC;C495;110A 116F 11BC;
+C496;C496;110A 116F 11BD;C496;110A 116F 11BD;
+C497;C497;110A 116F 11BE;C497;110A 116F 11BE;
+C498;C498;110A 116F 11BF;C498;110A 116F 11BF;
+C499;C499;110A 116F 11C0;C499;110A 116F 11C0;
+C49A;C49A;110A 116F 11C1;C49A;110A 116F 11C1;
+C49B;C49B;110A 116F 11C2;C49B;110A 116F 11C2;
+C49C;C49C;110A 1170;C49C;110A 1170;
+C49D;C49D;110A 1170 11A8;C49D;110A 1170 11A8;
+C49E;C49E;110A 1170 11A9;C49E;110A 1170 11A9;
+C49F;C49F;110A 1170 11AA;C49F;110A 1170 11AA;
+C4A0;C4A0;110A 1170 11AB;C4A0;110A 1170 11AB;
+C4A1;C4A1;110A 1170 11AC;C4A1;110A 1170 11AC;
+C4A2;C4A2;110A 1170 11AD;C4A2;110A 1170 11AD;
+C4A3;C4A3;110A 1170 11AE;C4A3;110A 1170 11AE;
+C4A4;C4A4;110A 1170 11AF;C4A4;110A 1170 11AF;
+C4A5;C4A5;110A 1170 11B0;C4A5;110A 1170 11B0;
+C4A6;C4A6;110A 1170 11B1;C4A6;110A 1170 11B1;
+C4A7;C4A7;110A 1170 11B2;C4A7;110A 1170 11B2;
+C4A8;C4A8;110A 1170 11B3;C4A8;110A 1170 11B3;
+C4A9;C4A9;110A 1170 11B4;C4A9;110A 1170 11B4;
+C4AA;C4AA;110A 1170 11B5;C4AA;110A 1170 11B5;
+C4AB;C4AB;110A 1170 11B6;C4AB;110A 1170 11B6;
+C4AC;C4AC;110A 1170 11B7;C4AC;110A 1170 11B7;
+C4AD;C4AD;110A 1170 11B8;C4AD;110A 1170 11B8;
+C4AE;C4AE;110A 1170 11B9;C4AE;110A 1170 11B9;
+C4AF;C4AF;110A 1170 11BA;C4AF;110A 1170 11BA;
+C4B0;C4B0;110A 1170 11BB;C4B0;110A 1170 11BB;
+C4B1;C4B1;110A 1170 11BC;C4B1;110A 1170 11BC;
+C4B2;C4B2;110A 1170 11BD;C4B2;110A 1170 11BD;
+C4B3;C4B3;110A 1170 11BE;C4B3;110A 1170 11BE;
+C4B4;C4B4;110A 1170 11BF;C4B4;110A 1170 11BF;
+C4B5;C4B5;110A 1170 11C0;C4B5;110A 1170 11C0;
+C4B6;C4B6;110A 1170 11C1;C4B6;110A 1170 11C1;
+C4B7;C4B7;110A 1170 11C2;C4B7;110A 1170 11C2;
+C4B8;C4B8;110A 1171;C4B8;110A 1171;
+C4B9;C4B9;110A 1171 11A8;C4B9;110A 1171 11A8;
+C4BA;C4BA;110A 1171 11A9;C4BA;110A 1171 11A9;
+C4BB;C4BB;110A 1171 11AA;C4BB;110A 1171 11AA;
+C4BC;C4BC;110A 1171 11AB;C4BC;110A 1171 11AB;
+C4BD;C4BD;110A 1171 11AC;C4BD;110A 1171 11AC;
+C4BE;C4BE;110A 1171 11AD;C4BE;110A 1171 11AD;
+C4BF;C4BF;110A 1171 11AE;C4BF;110A 1171 11AE;
+C4C0;C4C0;110A 1171 11AF;C4C0;110A 1171 11AF;
+C4C1;C4C1;110A 1171 11B0;C4C1;110A 1171 11B0;
+C4C2;C4C2;110A 1171 11B1;C4C2;110A 1171 11B1;
+C4C3;C4C3;110A 1171 11B2;C4C3;110A 1171 11B2;
+C4C4;C4C4;110A 1171 11B3;C4C4;110A 1171 11B3;
+C4C5;C4C5;110A 1171 11B4;C4C5;110A 1171 11B4;
+C4C6;C4C6;110A 1171 11B5;C4C6;110A 1171 11B5;
+C4C7;C4C7;110A 1171 11B6;C4C7;110A 1171 11B6;
+C4C8;C4C8;110A 1171 11B7;C4C8;110A 1171 11B7;
+C4C9;C4C9;110A 1171 11B8;C4C9;110A 1171 11B8;
+C4CA;C4CA;110A 1171 11B9;C4CA;110A 1171 11B9;
+C4CB;C4CB;110A 1171 11BA;C4CB;110A 1171 11BA;
+C4CC;C4CC;110A 1171 11BB;C4CC;110A 1171 11BB;
+C4CD;C4CD;110A 1171 11BC;C4CD;110A 1171 11BC;
+C4CE;C4CE;110A 1171 11BD;C4CE;110A 1171 11BD;
+C4CF;C4CF;110A 1171 11BE;C4CF;110A 1171 11BE;
+C4D0;C4D0;110A 1171 11BF;C4D0;110A 1171 11BF;
+C4D1;C4D1;110A 1171 11C0;C4D1;110A 1171 11C0;
+C4D2;C4D2;110A 1171 11C1;C4D2;110A 1171 11C1;
+C4D3;C4D3;110A 1171 11C2;C4D3;110A 1171 11C2;
+C4D4;C4D4;110A 1172;C4D4;110A 1172;
+C4D5;C4D5;110A 1172 11A8;C4D5;110A 1172 11A8;
+C4D6;C4D6;110A 1172 11A9;C4D6;110A 1172 11A9;
+C4D7;C4D7;110A 1172 11AA;C4D7;110A 1172 11AA;
+C4D8;C4D8;110A 1172 11AB;C4D8;110A 1172 11AB;
+C4D9;C4D9;110A 1172 11AC;C4D9;110A 1172 11AC;
+C4DA;C4DA;110A 1172 11AD;C4DA;110A 1172 11AD;
+C4DB;C4DB;110A 1172 11AE;C4DB;110A 1172 11AE;
+C4DC;C4DC;110A 1172 11AF;C4DC;110A 1172 11AF;
+C4DD;C4DD;110A 1172 11B0;C4DD;110A 1172 11B0;
+C4DE;C4DE;110A 1172 11B1;C4DE;110A 1172 11B1;
+C4DF;C4DF;110A 1172 11B2;C4DF;110A 1172 11B2;
+C4E0;C4E0;110A 1172 11B3;C4E0;110A 1172 11B3;
+C4E1;C4E1;110A 1172 11B4;C4E1;110A 1172 11B4;
+C4E2;C4E2;110A 1172 11B5;C4E2;110A 1172 11B5;
+C4E3;C4E3;110A 1172 11B6;C4E3;110A 1172 11B6;
+C4E4;C4E4;110A 1172 11B7;C4E4;110A 1172 11B7;
+C4E5;C4E5;110A 1172 11B8;C4E5;110A 1172 11B8;
+C4E6;C4E6;110A 1172 11B9;C4E6;110A 1172 11B9;
+C4E7;C4E7;110A 1172 11BA;C4E7;110A 1172 11BA;
+C4E8;C4E8;110A 1172 11BB;C4E8;110A 1172 11BB;
+C4E9;C4E9;110A 1172 11BC;C4E9;110A 1172 11BC;
+C4EA;C4EA;110A 1172 11BD;C4EA;110A 1172 11BD;
+C4EB;C4EB;110A 1172 11BE;C4EB;110A 1172 11BE;
+C4EC;C4EC;110A 1172 11BF;C4EC;110A 1172 11BF;
+C4ED;C4ED;110A 1172 11C0;C4ED;110A 1172 11C0;
+C4EE;C4EE;110A 1172 11C1;C4EE;110A 1172 11C1;
+C4EF;C4EF;110A 1172 11C2;C4EF;110A 1172 11C2;
+C4F0;C4F0;110A 1173;C4F0;110A 1173;
+C4F1;C4F1;110A 1173 11A8;C4F1;110A 1173 11A8;
+C4F2;C4F2;110A 1173 11A9;C4F2;110A 1173 11A9;
+C4F3;C4F3;110A 1173 11AA;C4F3;110A 1173 11AA;
+C4F4;C4F4;110A 1173 11AB;C4F4;110A 1173 11AB;
+C4F5;C4F5;110A 1173 11AC;C4F5;110A 1173 11AC;
+C4F6;C4F6;110A 1173 11AD;C4F6;110A 1173 11AD;
+C4F7;C4F7;110A 1173 11AE;C4F7;110A 1173 11AE;
+C4F8;C4F8;110A 1173 11AF;C4F8;110A 1173 11AF;
+C4F9;C4F9;110A 1173 11B0;C4F9;110A 1173 11B0;
+C4FA;C4FA;110A 1173 11B1;C4FA;110A 1173 11B1;
+C4FB;C4FB;110A 1173 11B2;C4FB;110A 1173 11B2;
+C4FC;C4FC;110A 1173 11B3;C4FC;110A 1173 11B3;
+C4FD;C4FD;110A 1173 11B4;C4FD;110A 1173 11B4;
+C4FE;C4FE;110A 1173 11B5;C4FE;110A 1173 11B5;
+C4FF;C4FF;110A 1173 11B6;C4FF;110A 1173 11B6;
+C500;C500;110A 1173 11B7;C500;110A 1173 11B7;
+C501;C501;110A 1173 11B8;C501;110A 1173 11B8;
+C502;C502;110A 1173 11B9;C502;110A 1173 11B9;
+C503;C503;110A 1173 11BA;C503;110A 1173 11BA;
+C504;C504;110A 1173 11BB;C504;110A 1173 11BB;
+C505;C505;110A 1173 11BC;C505;110A 1173 11BC;
+C506;C506;110A 1173 11BD;C506;110A 1173 11BD;
+C507;C507;110A 1173 11BE;C507;110A 1173 11BE;
+C508;C508;110A 1173 11BF;C508;110A 1173 11BF;
+C509;C509;110A 1173 11C0;C509;110A 1173 11C0;
+C50A;C50A;110A 1173 11C1;C50A;110A 1173 11C1;
+C50B;C50B;110A 1173 11C2;C50B;110A 1173 11C2;
+C50C;C50C;110A 1174;C50C;110A 1174;
+C50D;C50D;110A 1174 11A8;C50D;110A 1174 11A8;
+C50E;C50E;110A 1174 11A9;C50E;110A 1174 11A9;
+C50F;C50F;110A 1174 11AA;C50F;110A 1174 11AA;
+C510;C510;110A 1174 11AB;C510;110A 1174 11AB;
+C511;C511;110A 1174 11AC;C511;110A 1174 11AC;
+C512;C512;110A 1174 11AD;C512;110A 1174 11AD;
+C513;C513;110A 1174 11AE;C513;110A 1174 11AE;
+C514;C514;110A 1174 11AF;C514;110A 1174 11AF;
+C515;C515;110A 1174 11B0;C515;110A 1174 11B0;
+C516;C516;110A 1174 11B1;C516;110A 1174 11B1;
+C517;C517;110A 1174 11B2;C517;110A 1174 11B2;
+C518;C518;110A 1174 11B3;C518;110A 1174 11B3;
+C519;C519;110A 1174 11B4;C519;110A 1174 11B4;
+C51A;C51A;110A 1174 11B5;C51A;110A 1174 11B5;
+C51B;C51B;110A 1174 11B6;C51B;110A 1174 11B6;
+C51C;C51C;110A 1174 11B7;C51C;110A 1174 11B7;
+C51D;C51D;110A 1174 11B8;C51D;110A 1174 11B8;
+C51E;C51E;110A 1174 11B9;C51E;110A 1174 11B9;
+C51F;C51F;110A 1174 11BA;C51F;110A 1174 11BA;
+C520;C520;110A 1174 11BB;C520;110A 1174 11BB;
+C521;C521;110A 1174 11BC;C521;110A 1174 11BC;
+C522;C522;110A 1174 11BD;C522;110A 1174 11BD;
+C523;C523;110A 1174 11BE;C523;110A 1174 11BE;
+C524;C524;110A 1174 11BF;C524;110A 1174 11BF;
+C525;C525;110A 1174 11C0;C525;110A 1174 11C0;
+C526;C526;110A 1174 11C1;C526;110A 1174 11C1;
+C527;C527;110A 1174 11C2;C527;110A 1174 11C2;
+C528;C528;110A 1175;C528;110A 1175;
+C529;C529;110A 1175 11A8;C529;110A 1175 11A8;
+C52A;C52A;110A 1175 11A9;C52A;110A 1175 11A9;
+C52B;C52B;110A 1175 11AA;C52B;110A 1175 11AA;
+C52C;C52C;110A 1175 11AB;C52C;110A 1175 11AB;
+C52D;C52D;110A 1175 11AC;C52D;110A 1175 11AC;
+C52E;C52E;110A 1175 11AD;C52E;110A 1175 11AD;
+C52F;C52F;110A 1175 11AE;C52F;110A 1175 11AE;
+C530;C530;110A 1175 11AF;C530;110A 1175 11AF;
+C531;C531;110A 1175 11B0;C531;110A 1175 11B0;
+C532;C532;110A 1175 11B1;C532;110A 1175 11B1;
+C533;C533;110A 1175 11B2;C533;110A 1175 11B2;
+C534;C534;110A 1175 11B3;C534;110A 1175 11B3;
+C535;C535;110A 1175 11B4;C535;110A 1175 11B4;
+C536;C536;110A 1175 11B5;C536;110A 1175 11B5;
+C537;C537;110A 1175 11B6;C537;110A 1175 11B6;
+C538;C538;110A 1175 11B7;C538;110A 1175 11B7;
+C539;C539;110A 1175 11B8;C539;110A 1175 11B8;
+C53A;C53A;110A 1175 11B9;C53A;110A 1175 11B9;
+C53B;C53B;110A 1175 11BA;C53B;110A 1175 11BA;
+C53C;C53C;110A 1175 11BB;C53C;110A 1175 11BB;
+C53D;C53D;110A 1175 11BC;C53D;110A 1175 11BC;
+C53E;C53E;110A 1175 11BD;C53E;110A 1175 11BD;
+C53F;C53F;110A 1175 11BE;C53F;110A 1175 11BE;
+C540;C540;110A 1175 11BF;C540;110A 1175 11BF;
+C541;C541;110A 1175 11C0;C541;110A 1175 11C0;
+C542;C542;110A 1175 11C1;C542;110A 1175 11C1;
+C543;C543;110A 1175 11C2;C543;110A 1175 11C2;
+C544;C544;110B 1161;C544;110B 1161;
+C545;C545;110B 1161 11A8;C545;110B 1161 11A8;
+C546;C546;110B 1161 11A9;C546;110B 1161 11A9;
+C547;C547;110B 1161 11AA;C547;110B 1161 11AA;
+C548;C548;110B 1161 11AB;C548;110B 1161 11AB;
+C549;C549;110B 1161 11AC;C549;110B 1161 11AC;
+C54A;C54A;110B 1161 11AD;C54A;110B 1161 11AD;
+C54B;C54B;110B 1161 11AE;C54B;110B 1161 11AE;
+C54C;C54C;110B 1161 11AF;C54C;110B 1161 11AF;
+C54D;C54D;110B 1161 11B0;C54D;110B 1161 11B0;
+C54E;C54E;110B 1161 11B1;C54E;110B 1161 11B1;
+C54F;C54F;110B 1161 11B2;C54F;110B 1161 11B2;
+C550;C550;110B 1161 11B3;C550;110B 1161 11B3;
+C551;C551;110B 1161 11B4;C551;110B 1161 11B4;
+C552;C552;110B 1161 11B5;C552;110B 1161 11B5;
+C553;C553;110B 1161 11B6;C553;110B 1161 11B6;
+C554;C554;110B 1161 11B7;C554;110B 1161 11B7;
+C555;C555;110B 1161 11B8;C555;110B 1161 11B8;
+C556;C556;110B 1161 11B9;C556;110B 1161 11B9;
+C557;C557;110B 1161 11BA;C557;110B 1161 11BA;
+C558;C558;110B 1161 11BB;C558;110B 1161 11BB;
+C559;C559;110B 1161 11BC;C559;110B 1161 11BC;
+C55A;C55A;110B 1161 11BD;C55A;110B 1161 11BD;
+C55B;C55B;110B 1161 11BE;C55B;110B 1161 11BE;
+C55C;C55C;110B 1161 11BF;C55C;110B 1161 11BF;
+C55D;C55D;110B 1161 11C0;C55D;110B 1161 11C0;
+C55E;C55E;110B 1161 11C1;C55E;110B 1161 11C1;
+C55F;C55F;110B 1161 11C2;C55F;110B 1161 11C2;
+C560;C560;110B 1162;C560;110B 1162;
+C561;C561;110B 1162 11A8;C561;110B 1162 11A8;
+C562;C562;110B 1162 11A9;C562;110B 1162 11A9;
+C563;C563;110B 1162 11AA;C563;110B 1162 11AA;
+C564;C564;110B 1162 11AB;C564;110B 1162 11AB;
+C565;C565;110B 1162 11AC;C565;110B 1162 11AC;
+C566;C566;110B 1162 11AD;C566;110B 1162 11AD;
+C567;C567;110B 1162 11AE;C567;110B 1162 11AE;
+C568;C568;110B 1162 11AF;C568;110B 1162 11AF;
+C569;C569;110B 1162 11B0;C569;110B 1162 11B0;
+C56A;C56A;110B 1162 11B1;C56A;110B 1162 11B1;
+C56B;C56B;110B 1162 11B2;C56B;110B 1162 11B2;
+C56C;C56C;110B 1162 11B3;C56C;110B 1162 11B3;
+C56D;C56D;110B 1162 11B4;C56D;110B 1162 11B4;
+C56E;C56E;110B 1162 11B5;C56E;110B 1162 11B5;
+C56F;C56F;110B 1162 11B6;C56F;110B 1162 11B6;
+C570;C570;110B 1162 11B7;C570;110B 1162 11B7;
+C571;C571;110B 1162 11B8;C571;110B 1162 11B8;
+C572;C572;110B 1162 11B9;C572;110B 1162 11B9;
+C573;C573;110B 1162 11BA;C573;110B 1162 11BA;
+C574;C574;110B 1162 11BB;C574;110B 1162 11BB;
+C575;C575;110B 1162 11BC;C575;110B 1162 11BC;
+C576;C576;110B 1162 11BD;C576;110B 1162 11BD;
+C577;C577;110B 1162 11BE;C577;110B 1162 11BE;
+C578;C578;110B 1162 11BF;C578;110B 1162 11BF;
+C579;C579;110B 1162 11C0;C579;110B 1162 11C0;
+C57A;C57A;110B 1162 11C1;C57A;110B 1162 11C1;
+C57B;C57B;110B 1162 11C2;C57B;110B 1162 11C2;
+C57C;C57C;110B 1163;C57C;110B 1163;
+C57D;C57D;110B 1163 11A8;C57D;110B 1163 11A8;
+C57E;C57E;110B 1163 11A9;C57E;110B 1163 11A9;
+C57F;C57F;110B 1163 11AA;C57F;110B 1163 11AA;
+C580;C580;110B 1163 11AB;C580;110B 1163 11AB;
+C581;C581;110B 1163 11AC;C581;110B 1163 11AC;
+C582;C582;110B 1163 11AD;C582;110B 1163 11AD;
+C583;C583;110B 1163 11AE;C583;110B 1163 11AE;
+C584;C584;110B 1163 11AF;C584;110B 1163 11AF;
+C585;C585;110B 1163 11B0;C585;110B 1163 11B0;
+C586;C586;110B 1163 11B1;C586;110B 1163 11B1;
+C587;C587;110B 1163 11B2;C587;110B 1163 11B2;
+C588;C588;110B 1163 11B3;C588;110B 1163 11B3;
+C589;C589;110B 1163 11B4;C589;110B 1163 11B4;
+C58A;C58A;110B 1163 11B5;C58A;110B 1163 11B5;
+C58B;C58B;110B 1163 11B6;C58B;110B 1163 11B6;
+C58C;C58C;110B 1163 11B7;C58C;110B 1163 11B7;
+C58D;C58D;110B 1163 11B8;C58D;110B 1163 11B8;
+C58E;C58E;110B 1163 11B9;C58E;110B 1163 11B9;
+C58F;C58F;110B 1163 11BA;C58F;110B 1163 11BA;
+C590;C590;110B 1163 11BB;C590;110B 1163 11BB;
+C591;C591;110B 1163 11BC;C591;110B 1163 11BC;
+C592;C592;110B 1163 11BD;C592;110B 1163 11BD;
+C593;C593;110B 1163 11BE;C593;110B 1163 11BE;
+C594;C594;110B 1163 11BF;C594;110B 1163 11BF;
+C595;C595;110B 1163 11C0;C595;110B 1163 11C0;
+C596;C596;110B 1163 11C1;C596;110B 1163 11C1;
+C597;C597;110B 1163 11C2;C597;110B 1163 11C2;
+C598;C598;110B 1164;C598;110B 1164;
+C599;C599;110B 1164 11A8;C599;110B 1164 11A8;
+C59A;C59A;110B 1164 11A9;C59A;110B 1164 11A9;
+C59B;C59B;110B 1164 11AA;C59B;110B 1164 11AA;
+C59C;C59C;110B 1164 11AB;C59C;110B 1164 11AB;
+C59D;C59D;110B 1164 11AC;C59D;110B 1164 11AC;
+C59E;C59E;110B 1164 11AD;C59E;110B 1164 11AD;
+C59F;C59F;110B 1164 11AE;C59F;110B 1164 11AE;
+C5A0;C5A0;110B 1164 11AF;C5A0;110B 1164 11AF;
+C5A1;C5A1;110B 1164 11B0;C5A1;110B 1164 11B0;
+C5A2;C5A2;110B 1164 11B1;C5A2;110B 1164 11B1;
+C5A3;C5A3;110B 1164 11B2;C5A3;110B 1164 11B2;
+C5A4;C5A4;110B 1164 11B3;C5A4;110B 1164 11B3;
+C5A5;C5A5;110B 1164 11B4;C5A5;110B 1164 11B4;
+C5A6;C5A6;110B 1164 11B5;C5A6;110B 1164 11B5;
+C5A7;C5A7;110B 1164 11B6;C5A7;110B 1164 11B6;
+C5A8;C5A8;110B 1164 11B7;C5A8;110B 1164 11B7;
+C5A9;C5A9;110B 1164 11B8;C5A9;110B 1164 11B8;
+C5AA;C5AA;110B 1164 11B9;C5AA;110B 1164 11B9;
+C5AB;C5AB;110B 1164 11BA;C5AB;110B 1164 11BA;
+C5AC;C5AC;110B 1164 11BB;C5AC;110B 1164 11BB;
+C5AD;C5AD;110B 1164 11BC;C5AD;110B 1164 11BC;
+C5AE;C5AE;110B 1164 11BD;C5AE;110B 1164 11BD;
+C5AF;C5AF;110B 1164 11BE;C5AF;110B 1164 11BE;
+C5B0;C5B0;110B 1164 11BF;C5B0;110B 1164 11BF;
+C5B1;C5B1;110B 1164 11C0;C5B1;110B 1164 11C0;
+C5B2;C5B2;110B 1164 11C1;C5B2;110B 1164 11C1;
+C5B3;C5B3;110B 1164 11C2;C5B3;110B 1164 11C2;
+C5B4;C5B4;110B 1165;C5B4;110B 1165;
+C5B5;C5B5;110B 1165 11A8;C5B5;110B 1165 11A8;
+C5B6;C5B6;110B 1165 11A9;C5B6;110B 1165 11A9;
+C5B7;C5B7;110B 1165 11AA;C5B7;110B 1165 11AA;
+C5B8;C5B8;110B 1165 11AB;C5B8;110B 1165 11AB;
+C5B9;C5B9;110B 1165 11AC;C5B9;110B 1165 11AC;
+C5BA;C5BA;110B 1165 11AD;C5BA;110B 1165 11AD;
+C5BB;C5BB;110B 1165 11AE;C5BB;110B 1165 11AE;
+C5BC;C5BC;110B 1165 11AF;C5BC;110B 1165 11AF;
+C5BD;C5BD;110B 1165 11B0;C5BD;110B 1165 11B0;
+C5BE;C5BE;110B 1165 11B1;C5BE;110B 1165 11B1;
+C5BF;C5BF;110B 1165 11B2;C5BF;110B 1165 11B2;
+C5C0;C5C0;110B 1165 11B3;C5C0;110B 1165 11B3;
+C5C1;C5C1;110B 1165 11B4;C5C1;110B 1165 11B4;
+C5C2;C5C2;110B 1165 11B5;C5C2;110B 1165 11B5;
+C5C3;C5C3;110B 1165 11B6;C5C3;110B 1165 11B6;
+C5C4;C5C4;110B 1165 11B7;C5C4;110B 1165 11B7;
+C5C5;C5C5;110B 1165 11B8;C5C5;110B 1165 11B8;
+C5C6;C5C6;110B 1165 11B9;C5C6;110B 1165 11B9;
+C5C7;C5C7;110B 1165 11BA;C5C7;110B 1165 11BA;
+C5C8;C5C8;110B 1165 11BB;C5C8;110B 1165 11BB;
+C5C9;C5C9;110B 1165 11BC;C5C9;110B 1165 11BC;
+C5CA;C5CA;110B 1165 11BD;C5CA;110B 1165 11BD;
+C5CB;C5CB;110B 1165 11BE;C5CB;110B 1165 11BE;
+C5CC;C5CC;110B 1165 11BF;C5CC;110B 1165 11BF;
+C5CD;C5CD;110B 1165 11C0;C5CD;110B 1165 11C0;
+C5CE;C5CE;110B 1165 11C1;C5CE;110B 1165 11C1;
+C5CF;C5CF;110B 1165 11C2;C5CF;110B 1165 11C2;
+C5D0;C5D0;110B 1166;C5D0;110B 1166;
+C5D1;C5D1;110B 1166 11A8;C5D1;110B 1166 11A8;
+C5D2;C5D2;110B 1166 11A9;C5D2;110B 1166 11A9;
+C5D3;C5D3;110B 1166 11AA;C5D3;110B 1166 11AA;
+C5D4;C5D4;110B 1166 11AB;C5D4;110B 1166 11AB;
+C5D5;C5D5;110B 1166 11AC;C5D5;110B 1166 11AC;
+C5D6;C5D6;110B 1166 11AD;C5D6;110B 1166 11AD;
+C5D7;C5D7;110B 1166 11AE;C5D7;110B 1166 11AE;
+C5D8;C5D8;110B 1166 11AF;C5D8;110B 1166 11AF;
+C5D9;C5D9;110B 1166 11B0;C5D9;110B 1166 11B0;
+C5DA;C5DA;110B 1166 11B1;C5DA;110B 1166 11B1;
+C5DB;C5DB;110B 1166 11B2;C5DB;110B 1166 11B2;
+C5DC;C5DC;110B 1166 11B3;C5DC;110B 1166 11B3;
+C5DD;C5DD;110B 1166 11B4;C5DD;110B 1166 11B4;
+C5DE;C5DE;110B 1166 11B5;C5DE;110B 1166 11B5;
+C5DF;C5DF;110B 1166 11B6;C5DF;110B 1166 11B6;
+C5E0;C5E0;110B 1166 11B7;C5E0;110B 1166 11B7;
+C5E1;C5E1;110B 1166 11B8;C5E1;110B 1166 11B8;
+C5E2;C5E2;110B 1166 11B9;C5E2;110B 1166 11B9;
+C5E3;C5E3;110B 1166 11BA;C5E3;110B 1166 11BA;
+C5E4;C5E4;110B 1166 11BB;C5E4;110B 1166 11BB;
+C5E5;C5E5;110B 1166 11BC;C5E5;110B 1166 11BC;
+C5E6;C5E6;110B 1166 11BD;C5E6;110B 1166 11BD;
+C5E7;C5E7;110B 1166 11BE;C5E7;110B 1166 11BE;
+C5E8;C5E8;110B 1166 11BF;C5E8;110B 1166 11BF;
+C5E9;C5E9;110B 1166 11C0;C5E9;110B 1166 11C0;
+C5EA;C5EA;110B 1166 11C1;C5EA;110B 1166 11C1;
+C5EB;C5EB;110B 1166 11C2;C5EB;110B 1166 11C2;
+C5EC;C5EC;110B 1167;C5EC;110B 1167;
+C5ED;C5ED;110B 1167 11A8;C5ED;110B 1167 11A8;
+C5EE;C5EE;110B 1167 11A9;C5EE;110B 1167 11A9;
+C5EF;C5EF;110B 1167 11AA;C5EF;110B 1167 11AA;
+C5F0;C5F0;110B 1167 11AB;C5F0;110B 1167 11AB;
+C5F1;C5F1;110B 1167 11AC;C5F1;110B 1167 11AC;
+C5F2;C5F2;110B 1167 11AD;C5F2;110B 1167 11AD;
+C5F3;C5F3;110B 1167 11AE;C5F3;110B 1167 11AE;
+C5F4;C5F4;110B 1167 11AF;C5F4;110B 1167 11AF;
+C5F5;C5F5;110B 1167 11B0;C5F5;110B 1167 11B0;
+C5F6;C5F6;110B 1167 11B1;C5F6;110B 1167 11B1;
+C5F7;C5F7;110B 1167 11B2;C5F7;110B 1167 11B2;
+C5F8;C5F8;110B 1167 11B3;C5F8;110B 1167 11B3;
+C5F9;C5F9;110B 1167 11B4;C5F9;110B 1167 11B4;
+C5FA;C5FA;110B 1167 11B5;C5FA;110B 1167 11B5;
+C5FB;C5FB;110B 1167 11B6;C5FB;110B 1167 11B6;
+C5FC;C5FC;110B 1167 11B7;C5FC;110B 1167 11B7;
+C5FD;C5FD;110B 1167 11B8;C5FD;110B 1167 11B8;
+C5FE;C5FE;110B 1167 11B9;C5FE;110B 1167 11B9;
+C5FF;C5FF;110B 1167 11BA;C5FF;110B 1167 11BA;
+C600;C600;110B 1167 11BB;C600;110B 1167 11BB;
+C601;C601;110B 1167 11BC;C601;110B 1167 11BC;
+C602;C602;110B 1167 11BD;C602;110B 1167 11BD;
+C603;C603;110B 1167 11BE;C603;110B 1167 11BE;
+C604;C604;110B 1167 11BF;C604;110B 1167 11BF;
+C605;C605;110B 1167 11C0;C605;110B 1167 11C0;
+C606;C606;110B 1167 11C1;C606;110B 1167 11C1;
+C607;C607;110B 1167 11C2;C607;110B 1167 11C2;
+C608;C608;110B 1168;C608;110B 1168;
+C609;C609;110B 1168 11A8;C609;110B 1168 11A8;
+C60A;C60A;110B 1168 11A9;C60A;110B 1168 11A9;
+C60B;C60B;110B 1168 11AA;C60B;110B 1168 11AA;
+C60C;C60C;110B 1168 11AB;C60C;110B 1168 11AB;
+C60D;C60D;110B 1168 11AC;C60D;110B 1168 11AC;
+C60E;C60E;110B 1168 11AD;C60E;110B 1168 11AD;
+C60F;C60F;110B 1168 11AE;C60F;110B 1168 11AE;
+C610;C610;110B 1168 11AF;C610;110B 1168 11AF;
+C611;C611;110B 1168 11B0;C611;110B 1168 11B0;
+C612;C612;110B 1168 11B1;C612;110B 1168 11B1;
+C613;C613;110B 1168 11B2;C613;110B 1168 11B2;
+C614;C614;110B 1168 11B3;C614;110B 1168 11B3;
+C615;C615;110B 1168 11B4;C615;110B 1168 11B4;
+C616;C616;110B 1168 11B5;C616;110B 1168 11B5;
+C617;C617;110B 1168 11B6;C617;110B 1168 11B6;
+C618;C618;110B 1168 11B7;C618;110B 1168 11B7;
+C619;C619;110B 1168 11B8;C619;110B 1168 11B8;
+C61A;C61A;110B 1168 11B9;C61A;110B 1168 11B9;
+C61B;C61B;110B 1168 11BA;C61B;110B 1168 11BA;
+C61C;C61C;110B 1168 11BB;C61C;110B 1168 11BB;
+C61D;C61D;110B 1168 11BC;C61D;110B 1168 11BC;
+C61E;C61E;110B 1168 11BD;C61E;110B 1168 11BD;
+C61F;C61F;110B 1168 11BE;C61F;110B 1168 11BE;
+C620;C620;110B 1168 11BF;C620;110B 1168 11BF;
+C621;C621;110B 1168 11C0;C621;110B 1168 11C0;
+C622;C622;110B 1168 11C1;C622;110B 1168 11C1;
+C623;C623;110B 1168 11C2;C623;110B 1168 11C2;
+C624;C624;110B 1169;C624;110B 1169;
+C625;C625;110B 1169 11A8;C625;110B 1169 11A8;
+C626;C626;110B 1169 11A9;C626;110B 1169 11A9;
+C627;C627;110B 1169 11AA;C627;110B 1169 11AA;
+C628;C628;110B 1169 11AB;C628;110B 1169 11AB;
+C629;C629;110B 1169 11AC;C629;110B 1169 11AC;
+C62A;C62A;110B 1169 11AD;C62A;110B 1169 11AD;
+C62B;C62B;110B 1169 11AE;C62B;110B 1169 11AE;
+C62C;C62C;110B 1169 11AF;C62C;110B 1169 11AF;
+C62D;C62D;110B 1169 11B0;C62D;110B 1169 11B0;
+C62E;C62E;110B 1169 11B1;C62E;110B 1169 11B1;
+C62F;C62F;110B 1169 11B2;C62F;110B 1169 11B2;
+C630;C630;110B 1169 11B3;C630;110B 1169 11B3;
+C631;C631;110B 1169 11B4;C631;110B 1169 11B4;
+C632;C632;110B 1169 11B5;C632;110B 1169 11B5;
+C633;C633;110B 1169 11B6;C633;110B 1169 11B6;
+C634;C634;110B 1169 11B7;C634;110B 1169 11B7;
+C635;C635;110B 1169 11B8;C635;110B 1169 11B8;
+C636;C636;110B 1169 11B9;C636;110B 1169 11B9;
+C637;C637;110B 1169 11BA;C637;110B 1169 11BA;
+C638;C638;110B 1169 11BB;C638;110B 1169 11BB;
+C639;C639;110B 1169 11BC;C639;110B 1169 11BC;
+C63A;C63A;110B 1169 11BD;C63A;110B 1169 11BD;
+C63B;C63B;110B 1169 11BE;C63B;110B 1169 11BE;
+C63C;C63C;110B 1169 11BF;C63C;110B 1169 11BF;
+C63D;C63D;110B 1169 11C0;C63D;110B 1169 11C0;
+C63E;C63E;110B 1169 11C1;C63E;110B 1169 11C1;
+C63F;C63F;110B 1169 11C2;C63F;110B 1169 11C2;
+C640;C640;110B 116A;C640;110B 116A;
+C641;C641;110B 116A 11A8;C641;110B 116A 11A8;
+C642;C642;110B 116A 11A9;C642;110B 116A 11A9;
+C643;C643;110B 116A 11AA;C643;110B 116A 11AA;
+C644;C644;110B 116A 11AB;C644;110B 116A 11AB;
+C645;C645;110B 116A 11AC;C645;110B 116A 11AC;
+C646;C646;110B 116A 11AD;C646;110B 116A 11AD;
+C647;C647;110B 116A 11AE;C647;110B 116A 11AE;
+C648;C648;110B 116A 11AF;C648;110B 116A 11AF;
+C649;C649;110B 116A 11B0;C649;110B 116A 11B0;
+C64A;C64A;110B 116A 11B1;C64A;110B 116A 11B1;
+C64B;C64B;110B 116A 11B2;C64B;110B 116A 11B2;
+C64C;C64C;110B 116A 11B3;C64C;110B 116A 11B3;
+C64D;C64D;110B 116A 11B4;C64D;110B 116A 11B4;
+C64E;C64E;110B 116A 11B5;C64E;110B 116A 11B5;
+C64F;C64F;110B 116A 11B6;C64F;110B 116A 11B6;
+C650;C650;110B 116A 11B7;C650;110B 116A 11B7;
+C651;C651;110B 116A 11B8;C651;110B 116A 11B8;
+C652;C652;110B 116A 11B9;C652;110B 116A 11B9;
+C653;C653;110B 116A 11BA;C653;110B 116A 11BA;
+C654;C654;110B 116A 11BB;C654;110B 116A 11BB;
+C655;C655;110B 116A 11BC;C655;110B 116A 11BC;
+C656;C656;110B 116A 11BD;C656;110B 116A 11BD;
+C657;C657;110B 116A 11BE;C657;110B 116A 11BE;
+C658;C658;110B 116A 11BF;C658;110B 116A 11BF;
+C659;C659;110B 116A 11C0;C659;110B 116A 11C0;
+C65A;C65A;110B 116A 11C1;C65A;110B 116A 11C1;
+C65B;C65B;110B 116A 11C2;C65B;110B 116A 11C2;
+C65C;C65C;110B 116B;C65C;110B 116B;
+C65D;C65D;110B 116B 11A8;C65D;110B 116B 11A8;
+C65E;C65E;110B 116B 11A9;C65E;110B 116B 11A9;
+C65F;C65F;110B 116B 11AA;C65F;110B 116B 11AA;
+C660;C660;110B 116B 11AB;C660;110B 116B 11AB;
+C661;C661;110B 116B 11AC;C661;110B 116B 11AC;
+C662;C662;110B 116B 11AD;C662;110B 116B 11AD;
+C663;C663;110B 116B 11AE;C663;110B 116B 11AE;
+C664;C664;110B 116B 11AF;C664;110B 116B 11AF;
+C665;C665;110B 116B 11B0;C665;110B 116B 11B0;
+C666;C666;110B 116B 11B1;C666;110B 116B 11B1;
+C667;C667;110B 116B 11B2;C667;110B 116B 11B2;
+C668;C668;110B 116B 11B3;C668;110B 116B 11B3;
+C669;C669;110B 116B 11B4;C669;110B 116B 11B4;
+C66A;C66A;110B 116B 11B5;C66A;110B 116B 11B5;
+C66B;C66B;110B 116B 11B6;C66B;110B 116B 11B6;
+C66C;C66C;110B 116B 11B7;C66C;110B 116B 11B7;
+C66D;C66D;110B 116B 11B8;C66D;110B 116B 11B8;
+C66E;C66E;110B 116B 11B9;C66E;110B 116B 11B9;
+C66F;C66F;110B 116B 11BA;C66F;110B 116B 11BA;
+C670;C670;110B 116B 11BB;C670;110B 116B 11BB;
+C671;C671;110B 116B 11BC;C671;110B 116B 11BC;
+C672;C672;110B 116B 11BD;C672;110B 116B 11BD;
+C673;C673;110B 116B 11BE;C673;110B 116B 11BE;
+C674;C674;110B 116B 11BF;C674;110B 116B 11BF;
+C675;C675;110B 116B 11C0;C675;110B 116B 11C0;
+C676;C676;110B 116B 11C1;C676;110B 116B 11C1;
+C677;C677;110B 116B 11C2;C677;110B 116B 11C2;
+C678;C678;110B 116C;C678;110B 116C;
+C679;C679;110B 116C 11A8;C679;110B 116C 11A8;
+C67A;C67A;110B 116C 11A9;C67A;110B 116C 11A9;
+C67B;C67B;110B 116C 11AA;C67B;110B 116C 11AA;
+C67C;C67C;110B 116C 11AB;C67C;110B 116C 11AB;
+C67D;C67D;110B 116C 11AC;C67D;110B 116C 11AC;
+C67E;C67E;110B 116C 11AD;C67E;110B 116C 11AD;
+C67F;C67F;110B 116C 11AE;C67F;110B 116C 11AE;
+C680;C680;110B 116C 11AF;C680;110B 116C 11AF;
+C681;C681;110B 116C 11B0;C681;110B 116C 11B0;
+C682;C682;110B 116C 11B1;C682;110B 116C 11B1;
+C683;C683;110B 116C 11B2;C683;110B 116C 11B2;
+C684;C684;110B 116C 11B3;C684;110B 116C 11B3;
+C685;C685;110B 116C 11B4;C685;110B 116C 11B4;
+C686;C686;110B 116C 11B5;C686;110B 116C 11B5;
+C687;C687;110B 116C 11B6;C687;110B 116C 11B6;
+C688;C688;110B 116C 11B7;C688;110B 116C 11B7;
+C689;C689;110B 116C 11B8;C689;110B 116C 11B8;
+C68A;C68A;110B 116C 11B9;C68A;110B 116C 11B9;
+C68B;C68B;110B 116C 11BA;C68B;110B 116C 11BA;
+C68C;C68C;110B 116C 11BB;C68C;110B 116C 11BB;
+C68D;C68D;110B 116C 11BC;C68D;110B 116C 11BC;
+C68E;C68E;110B 116C 11BD;C68E;110B 116C 11BD;
+C68F;C68F;110B 116C 11BE;C68F;110B 116C 11BE;
+C690;C690;110B 116C 11BF;C690;110B 116C 11BF;
+C691;C691;110B 116C 11C0;C691;110B 116C 11C0;
+C692;C692;110B 116C 11C1;C692;110B 116C 11C1;
+C693;C693;110B 116C 11C2;C693;110B 116C 11C2;
+C694;C694;110B 116D;C694;110B 116D;
+C695;C695;110B 116D 11A8;C695;110B 116D 11A8;
+C696;C696;110B 116D 11A9;C696;110B 116D 11A9;
+C697;C697;110B 116D 11AA;C697;110B 116D 11AA;
+C698;C698;110B 116D 11AB;C698;110B 116D 11AB;
+C699;C699;110B 116D 11AC;C699;110B 116D 11AC;
+C69A;C69A;110B 116D 11AD;C69A;110B 116D 11AD;
+C69B;C69B;110B 116D 11AE;C69B;110B 116D 11AE;
+C69C;C69C;110B 116D 11AF;C69C;110B 116D 11AF;
+C69D;C69D;110B 116D 11B0;C69D;110B 116D 11B0;
+C69E;C69E;110B 116D 11B1;C69E;110B 116D 11B1;
+C69F;C69F;110B 116D 11B2;C69F;110B 116D 11B2;
+C6A0;C6A0;110B 116D 11B3;C6A0;110B 116D 11B3;
+C6A1;C6A1;110B 116D 11B4;C6A1;110B 116D 11B4;
+C6A2;C6A2;110B 116D 11B5;C6A2;110B 116D 11B5;
+C6A3;C6A3;110B 116D 11B6;C6A3;110B 116D 11B6;
+C6A4;C6A4;110B 116D 11B7;C6A4;110B 116D 11B7;
+C6A5;C6A5;110B 116D 11B8;C6A5;110B 116D 11B8;
+C6A6;C6A6;110B 116D 11B9;C6A6;110B 116D 11B9;
+C6A7;C6A7;110B 116D 11BA;C6A7;110B 116D 11BA;
+C6A8;C6A8;110B 116D 11BB;C6A8;110B 116D 11BB;
+C6A9;C6A9;110B 116D 11BC;C6A9;110B 116D 11BC;
+C6AA;C6AA;110B 116D 11BD;C6AA;110B 116D 11BD;
+C6AB;C6AB;110B 116D 11BE;C6AB;110B 116D 11BE;
+C6AC;C6AC;110B 116D 11BF;C6AC;110B 116D 11BF;
+C6AD;C6AD;110B 116D 11C0;C6AD;110B 116D 11C0;
+C6AE;C6AE;110B 116D 11C1;C6AE;110B 116D 11C1;
+C6AF;C6AF;110B 116D 11C2;C6AF;110B 116D 11C2;
+C6B0;C6B0;110B 116E;C6B0;110B 116E;
+C6B1;C6B1;110B 116E 11A8;C6B1;110B 116E 11A8;
+C6B2;C6B2;110B 116E 11A9;C6B2;110B 116E 11A9;
+C6B3;C6B3;110B 116E 11AA;C6B3;110B 116E 11AA;
+C6B4;C6B4;110B 116E 11AB;C6B4;110B 116E 11AB;
+C6B5;C6B5;110B 116E 11AC;C6B5;110B 116E 11AC;
+C6B6;C6B6;110B 116E 11AD;C6B6;110B 116E 11AD;
+C6B7;C6B7;110B 116E 11AE;C6B7;110B 116E 11AE;
+C6B8;C6B8;110B 116E 11AF;C6B8;110B 116E 11AF;
+C6B9;C6B9;110B 116E 11B0;C6B9;110B 116E 11B0;
+C6BA;C6BA;110B 116E 11B1;C6BA;110B 116E 11B1;
+C6BB;C6BB;110B 116E 11B2;C6BB;110B 116E 11B2;
+C6BC;C6BC;110B 116E 11B3;C6BC;110B 116E 11B3;
+C6BD;C6BD;110B 116E 11B4;C6BD;110B 116E 11B4;
+C6BE;C6BE;110B 116E 11B5;C6BE;110B 116E 11B5;
+C6BF;C6BF;110B 116E 11B6;C6BF;110B 116E 11B6;
+C6C0;C6C0;110B 116E 11B7;C6C0;110B 116E 11B7;
+C6C1;C6C1;110B 116E 11B8;C6C1;110B 116E 11B8;
+C6C2;C6C2;110B 116E 11B9;C6C2;110B 116E 11B9;
+C6C3;C6C3;110B 116E 11BA;C6C3;110B 116E 11BA;
+C6C4;C6C4;110B 116E 11BB;C6C4;110B 116E 11BB;
+C6C5;C6C5;110B 116E 11BC;C6C5;110B 116E 11BC;
+C6C6;C6C6;110B 116E 11BD;C6C6;110B 116E 11BD;
+C6C7;C6C7;110B 116E 11BE;C6C7;110B 116E 11BE;
+C6C8;C6C8;110B 116E 11BF;C6C8;110B 116E 11BF;
+C6C9;C6C9;110B 116E 11C0;C6C9;110B 116E 11C0;
+C6CA;C6CA;110B 116E 11C1;C6CA;110B 116E 11C1;
+C6CB;C6CB;110B 116E 11C2;C6CB;110B 116E 11C2;
+C6CC;C6CC;110B 116F;C6CC;110B 116F;
+C6CD;C6CD;110B 116F 11A8;C6CD;110B 116F 11A8;
+C6CE;C6CE;110B 116F 11A9;C6CE;110B 116F 11A9;
+C6CF;C6CF;110B 116F 11AA;C6CF;110B 116F 11AA;
+C6D0;C6D0;110B 116F 11AB;C6D0;110B 116F 11AB;
+C6D1;C6D1;110B 116F 11AC;C6D1;110B 116F 11AC;
+C6D2;C6D2;110B 116F 11AD;C6D2;110B 116F 11AD;
+C6D3;C6D3;110B 116F 11AE;C6D3;110B 116F 11AE;
+C6D4;C6D4;110B 116F 11AF;C6D4;110B 116F 11AF;
+C6D5;C6D5;110B 116F 11B0;C6D5;110B 116F 11B0;
+C6D6;C6D6;110B 116F 11B1;C6D6;110B 116F 11B1;
+C6D7;C6D7;110B 116F 11B2;C6D7;110B 116F 11B2;
+C6D8;C6D8;110B 116F 11B3;C6D8;110B 116F 11B3;
+C6D9;C6D9;110B 116F 11B4;C6D9;110B 116F 11B4;
+C6DA;C6DA;110B 116F 11B5;C6DA;110B 116F 11B5;
+C6DB;C6DB;110B 116F 11B6;C6DB;110B 116F 11B6;
+C6DC;C6DC;110B 116F 11B7;C6DC;110B 116F 11B7;
+C6DD;C6DD;110B 116F 11B8;C6DD;110B 116F 11B8;
+C6DE;C6DE;110B 116F 11B9;C6DE;110B 116F 11B9;
+C6DF;C6DF;110B 116F 11BA;C6DF;110B 116F 11BA;
+C6E0;C6E0;110B 116F 11BB;C6E0;110B 116F 11BB;
+C6E1;C6E1;110B 116F 11BC;C6E1;110B 116F 11BC;
+C6E2;C6E2;110B 116F 11BD;C6E2;110B 116F 11BD;
+C6E3;C6E3;110B 116F 11BE;C6E3;110B 116F 11BE;
+C6E4;C6E4;110B 116F 11BF;C6E4;110B 116F 11BF;
+C6E5;C6E5;110B 116F 11C0;C6E5;110B 116F 11C0;
+C6E6;C6E6;110B 116F 11C1;C6E6;110B 116F 11C1;
+C6E7;C6E7;110B 116F 11C2;C6E7;110B 116F 11C2;
+C6E8;C6E8;110B 1170;C6E8;110B 1170;
+C6E9;C6E9;110B 1170 11A8;C6E9;110B 1170 11A8;
+C6EA;C6EA;110B 1170 11A9;C6EA;110B 1170 11A9;
+C6EB;C6EB;110B 1170 11AA;C6EB;110B 1170 11AA;
+C6EC;C6EC;110B 1170 11AB;C6EC;110B 1170 11AB;
+C6ED;C6ED;110B 1170 11AC;C6ED;110B 1170 11AC;
+C6EE;C6EE;110B 1170 11AD;C6EE;110B 1170 11AD;
+C6EF;C6EF;110B 1170 11AE;C6EF;110B 1170 11AE;
+C6F0;C6F0;110B 1170 11AF;C6F0;110B 1170 11AF;
+C6F1;C6F1;110B 1170 11B0;C6F1;110B 1170 11B0;
+C6F2;C6F2;110B 1170 11B1;C6F2;110B 1170 11B1;
+C6F3;C6F3;110B 1170 11B2;C6F3;110B 1170 11B2;
+C6F4;C6F4;110B 1170 11B3;C6F4;110B 1170 11B3;
+C6F5;C6F5;110B 1170 11B4;C6F5;110B 1170 11B4;
+C6F6;C6F6;110B 1170 11B5;C6F6;110B 1170 11B5;
+C6F7;C6F7;110B 1170 11B6;C6F7;110B 1170 11B6;
+C6F8;C6F8;110B 1170 11B7;C6F8;110B 1170 11B7;
+C6F9;C6F9;110B 1170 11B8;C6F9;110B 1170 11B8;
+C6FA;C6FA;110B 1170 11B9;C6FA;110B 1170 11B9;
+C6FB;C6FB;110B 1170 11BA;C6FB;110B 1170 11BA;
+C6FC;C6FC;110B 1170 11BB;C6FC;110B 1170 11BB;
+C6FD;C6FD;110B 1170 11BC;C6FD;110B 1170 11BC;
+C6FE;C6FE;110B 1170 11BD;C6FE;110B 1170 11BD;
+C6FF;C6FF;110B 1170 11BE;C6FF;110B 1170 11BE;
+C700;C700;110B 1170 11BF;C700;110B 1170 11BF;
+C701;C701;110B 1170 11C0;C701;110B 1170 11C0;
+C702;C702;110B 1170 11C1;C702;110B 1170 11C1;
+C703;C703;110B 1170 11C2;C703;110B 1170 11C2;
+C704;C704;110B 1171;C704;110B 1171;
+C705;C705;110B 1171 11A8;C705;110B 1171 11A8;
+C706;C706;110B 1171 11A9;C706;110B 1171 11A9;
+C707;C707;110B 1171 11AA;C707;110B 1171 11AA;
+C708;C708;110B 1171 11AB;C708;110B 1171 11AB;
+C709;C709;110B 1171 11AC;C709;110B 1171 11AC;
+C70A;C70A;110B 1171 11AD;C70A;110B 1171 11AD;
+C70B;C70B;110B 1171 11AE;C70B;110B 1171 11AE;
+C70C;C70C;110B 1171 11AF;C70C;110B 1171 11AF;
+C70D;C70D;110B 1171 11B0;C70D;110B 1171 11B0;
+C70E;C70E;110B 1171 11B1;C70E;110B 1171 11B1;
+C70F;C70F;110B 1171 11B2;C70F;110B 1171 11B2;
+C710;C710;110B 1171 11B3;C710;110B 1171 11B3;
+C711;C711;110B 1171 11B4;C711;110B 1171 11B4;
+C712;C712;110B 1171 11B5;C712;110B 1171 11B5;
+C713;C713;110B 1171 11B6;C713;110B 1171 11B6;
+C714;C714;110B 1171 11B7;C714;110B 1171 11B7;
+C715;C715;110B 1171 11B8;C715;110B 1171 11B8;
+C716;C716;110B 1171 11B9;C716;110B 1171 11B9;
+C717;C717;110B 1171 11BA;C717;110B 1171 11BA;
+C718;C718;110B 1171 11BB;C718;110B 1171 11BB;
+C719;C719;110B 1171 11BC;C719;110B 1171 11BC;
+C71A;C71A;110B 1171 11BD;C71A;110B 1171 11BD;
+C71B;C71B;110B 1171 11BE;C71B;110B 1171 11BE;
+C71C;C71C;110B 1171 11BF;C71C;110B 1171 11BF;
+C71D;C71D;110B 1171 11C0;C71D;110B 1171 11C0;
+C71E;C71E;110B 1171 11C1;C71E;110B 1171 11C1;
+C71F;C71F;110B 1171 11C2;C71F;110B 1171 11C2;
+C720;C720;110B 1172;C720;110B 1172;
+C721;C721;110B 1172 11A8;C721;110B 1172 11A8;
+C722;C722;110B 1172 11A9;C722;110B 1172 11A9;
+C723;C723;110B 1172 11AA;C723;110B 1172 11AA;
+C724;C724;110B 1172 11AB;C724;110B 1172 11AB;
+C725;C725;110B 1172 11AC;C725;110B 1172 11AC;
+C726;C726;110B 1172 11AD;C726;110B 1172 11AD;
+C727;C727;110B 1172 11AE;C727;110B 1172 11AE;
+C728;C728;110B 1172 11AF;C728;110B 1172 11AF;
+C729;C729;110B 1172 11B0;C729;110B 1172 11B0;
+C72A;C72A;110B 1172 11B1;C72A;110B 1172 11B1;
+C72B;C72B;110B 1172 11B2;C72B;110B 1172 11B2;
+C72C;C72C;110B 1172 11B3;C72C;110B 1172 11B3;
+C72D;C72D;110B 1172 11B4;C72D;110B 1172 11B4;
+C72E;C72E;110B 1172 11B5;C72E;110B 1172 11B5;
+C72F;C72F;110B 1172 11B6;C72F;110B 1172 11B6;
+C730;C730;110B 1172 11B7;C730;110B 1172 11B7;
+C731;C731;110B 1172 11B8;C731;110B 1172 11B8;
+C732;C732;110B 1172 11B9;C732;110B 1172 11B9;
+C733;C733;110B 1172 11BA;C733;110B 1172 11BA;
+C734;C734;110B 1172 11BB;C734;110B 1172 11BB;
+C735;C735;110B 1172 11BC;C735;110B 1172 11BC;
+C736;C736;110B 1172 11BD;C736;110B 1172 11BD;
+C737;C737;110B 1172 11BE;C737;110B 1172 11BE;
+C738;C738;110B 1172 11BF;C738;110B 1172 11BF;
+C739;C739;110B 1172 11C0;C739;110B 1172 11C0;
+C73A;C73A;110B 1172 11C1;C73A;110B 1172 11C1;
+C73B;C73B;110B 1172 11C2;C73B;110B 1172 11C2;
+C73C;C73C;110B 1173;C73C;110B 1173;
+C73D;C73D;110B 1173 11A8;C73D;110B 1173 11A8;
+C73E;C73E;110B 1173 11A9;C73E;110B 1173 11A9;
+C73F;C73F;110B 1173 11AA;C73F;110B 1173 11AA;
+C740;C740;110B 1173 11AB;C740;110B 1173 11AB;
+C741;C741;110B 1173 11AC;C741;110B 1173 11AC;
+C742;C742;110B 1173 11AD;C742;110B 1173 11AD;
+C743;C743;110B 1173 11AE;C743;110B 1173 11AE;
+C744;C744;110B 1173 11AF;C744;110B 1173 11AF;
+C745;C745;110B 1173 11B0;C745;110B 1173 11B0;
+C746;C746;110B 1173 11B1;C746;110B 1173 11B1;
+C747;C747;110B 1173 11B2;C747;110B 1173 11B2;
+C748;C748;110B 1173 11B3;C748;110B 1173 11B3;
+C749;C749;110B 1173 11B4;C749;110B 1173 11B4;
+C74A;C74A;110B 1173 11B5;C74A;110B 1173 11B5;
+C74B;C74B;110B 1173 11B6;C74B;110B 1173 11B6;
+C74C;C74C;110B 1173 11B7;C74C;110B 1173 11B7;
+C74D;C74D;110B 1173 11B8;C74D;110B 1173 11B8;
+C74E;C74E;110B 1173 11B9;C74E;110B 1173 11B9;
+C74F;C74F;110B 1173 11BA;C74F;110B 1173 11BA;
+C750;C750;110B 1173 11BB;C750;110B 1173 11BB;
+C751;C751;110B 1173 11BC;C751;110B 1173 11BC;
+C752;C752;110B 1173 11BD;C752;110B 1173 11BD;
+C753;C753;110B 1173 11BE;C753;110B 1173 11BE;
+C754;C754;110B 1173 11BF;C754;110B 1173 11BF;
+C755;C755;110B 1173 11C0;C755;110B 1173 11C0;
+C756;C756;110B 1173 11C1;C756;110B 1173 11C1;
+C757;C757;110B 1173 11C2;C757;110B 1173 11C2;
+C758;C758;110B 1174;C758;110B 1174;
+C759;C759;110B 1174 11A8;C759;110B 1174 11A8;
+C75A;C75A;110B 1174 11A9;C75A;110B 1174 11A9;
+C75B;C75B;110B 1174 11AA;C75B;110B 1174 11AA;
+C75C;C75C;110B 1174 11AB;C75C;110B 1174 11AB;
+C75D;C75D;110B 1174 11AC;C75D;110B 1174 11AC;
+C75E;C75E;110B 1174 11AD;C75E;110B 1174 11AD;
+C75F;C75F;110B 1174 11AE;C75F;110B 1174 11AE;
+C760;C760;110B 1174 11AF;C760;110B 1174 11AF;
+C761;C761;110B 1174 11B0;C761;110B 1174 11B0;
+C762;C762;110B 1174 11B1;C762;110B 1174 11B1;
+C763;C763;110B 1174 11B2;C763;110B 1174 11B2;
+C764;C764;110B 1174 11B3;C764;110B 1174 11B3;
+C765;C765;110B 1174 11B4;C765;110B 1174 11B4;
+C766;C766;110B 1174 11B5;C766;110B 1174 11B5;
+C767;C767;110B 1174 11B6;C767;110B 1174 11B6;
+C768;C768;110B 1174 11B7;C768;110B 1174 11B7;
+C769;C769;110B 1174 11B8;C769;110B 1174 11B8;
+C76A;C76A;110B 1174 11B9;C76A;110B 1174 11B9;
+C76B;C76B;110B 1174 11BA;C76B;110B 1174 11BA;
+C76C;C76C;110B 1174 11BB;C76C;110B 1174 11BB;
+C76D;C76D;110B 1174 11BC;C76D;110B 1174 11BC;
+C76E;C76E;110B 1174 11BD;C76E;110B 1174 11BD;
+C76F;C76F;110B 1174 11BE;C76F;110B 1174 11BE;
+C770;C770;110B 1174 11BF;C770;110B 1174 11BF;
+C771;C771;110B 1174 11C0;C771;110B 1174 11C0;
+C772;C772;110B 1174 11C1;C772;110B 1174 11C1;
+C773;C773;110B 1174 11C2;C773;110B 1174 11C2;
+C774;C774;110B 1175;C774;110B 1175;
+C775;C775;110B 1175 11A8;C775;110B 1175 11A8;
+C776;C776;110B 1175 11A9;C776;110B 1175 11A9;
+C777;C777;110B 1175 11AA;C777;110B 1175 11AA;
+C778;C778;110B 1175 11AB;C778;110B 1175 11AB;
+C779;C779;110B 1175 11AC;C779;110B 1175 11AC;
+C77A;C77A;110B 1175 11AD;C77A;110B 1175 11AD;
+C77B;C77B;110B 1175 11AE;C77B;110B 1175 11AE;
+C77C;C77C;110B 1175 11AF;C77C;110B 1175 11AF;
+C77D;C77D;110B 1175 11B0;C77D;110B 1175 11B0;
+C77E;C77E;110B 1175 11B1;C77E;110B 1175 11B1;
+C77F;C77F;110B 1175 11B2;C77F;110B 1175 11B2;
+C780;C780;110B 1175 11B3;C780;110B 1175 11B3;
+C781;C781;110B 1175 11B4;C781;110B 1175 11B4;
+C782;C782;110B 1175 11B5;C782;110B 1175 11B5;
+C783;C783;110B 1175 11B6;C783;110B 1175 11B6;
+C784;C784;110B 1175 11B7;C784;110B 1175 11B7;
+C785;C785;110B 1175 11B8;C785;110B 1175 11B8;
+C786;C786;110B 1175 11B9;C786;110B 1175 11B9;
+C787;C787;110B 1175 11BA;C787;110B 1175 11BA;
+C788;C788;110B 1175 11BB;C788;110B 1175 11BB;
+C789;C789;110B 1175 11BC;C789;110B 1175 11BC;
+C78A;C78A;110B 1175 11BD;C78A;110B 1175 11BD;
+C78B;C78B;110B 1175 11BE;C78B;110B 1175 11BE;
+C78C;C78C;110B 1175 11BF;C78C;110B 1175 11BF;
+C78D;C78D;110B 1175 11C0;C78D;110B 1175 11C0;
+C78E;C78E;110B 1175 11C1;C78E;110B 1175 11C1;
+C78F;C78F;110B 1175 11C2;C78F;110B 1175 11C2;
+C790;C790;110C 1161;C790;110C 1161;
+C791;C791;110C 1161 11A8;C791;110C 1161 11A8;
+C792;C792;110C 1161 11A9;C792;110C 1161 11A9;
+C793;C793;110C 1161 11AA;C793;110C 1161 11AA;
+C794;C794;110C 1161 11AB;C794;110C 1161 11AB;
+C795;C795;110C 1161 11AC;C795;110C 1161 11AC;
+C796;C796;110C 1161 11AD;C796;110C 1161 11AD;
+C797;C797;110C 1161 11AE;C797;110C 1161 11AE;
+C798;C798;110C 1161 11AF;C798;110C 1161 11AF;
+C799;C799;110C 1161 11B0;C799;110C 1161 11B0;
+C79A;C79A;110C 1161 11B1;C79A;110C 1161 11B1;
+C79B;C79B;110C 1161 11B2;C79B;110C 1161 11B2;
+C79C;C79C;110C 1161 11B3;C79C;110C 1161 11B3;
+C79D;C79D;110C 1161 11B4;C79D;110C 1161 11B4;
+C79E;C79E;110C 1161 11B5;C79E;110C 1161 11B5;
+C79F;C79F;110C 1161 11B6;C79F;110C 1161 11B6;
+C7A0;C7A0;110C 1161 11B7;C7A0;110C 1161 11B7;
+C7A1;C7A1;110C 1161 11B8;C7A1;110C 1161 11B8;
+C7A2;C7A2;110C 1161 11B9;C7A2;110C 1161 11B9;
+C7A3;C7A3;110C 1161 11BA;C7A3;110C 1161 11BA;
+C7A4;C7A4;110C 1161 11BB;C7A4;110C 1161 11BB;
+C7A5;C7A5;110C 1161 11BC;C7A5;110C 1161 11BC;
+C7A6;C7A6;110C 1161 11BD;C7A6;110C 1161 11BD;
+C7A7;C7A7;110C 1161 11BE;C7A7;110C 1161 11BE;
+C7A8;C7A8;110C 1161 11BF;C7A8;110C 1161 11BF;
+C7A9;C7A9;110C 1161 11C0;C7A9;110C 1161 11C0;
+C7AA;C7AA;110C 1161 11C1;C7AA;110C 1161 11C1;
+C7AB;C7AB;110C 1161 11C2;C7AB;110C 1161 11C2;
+C7AC;C7AC;110C 1162;C7AC;110C 1162;
+C7AD;C7AD;110C 1162 11A8;C7AD;110C 1162 11A8;
+C7AE;C7AE;110C 1162 11A9;C7AE;110C 1162 11A9;
+C7AF;C7AF;110C 1162 11AA;C7AF;110C 1162 11AA;
+C7B0;C7B0;110C 1162 11AB;C7B0;110C 1162 11AB;
+C7B1;C7B1;110C 1162 11AC;C7B1;110C 1162 11AC;
+C7B2;C7B2;110C 1162 11AD;C7B2;110C 1162 11AD;
+C7B3;C7B3;110C 1162 11AE;C7B3;110C 1162 11AE;
+C7B4;C7B4;110C 1162 11AF;C7B4;110C 1162 11AF;
+C7B5;C7B5;110C 1162 11B0;C7B5;110C 1162 11B0;
+C7B6;C7B6;110C 1162 11B1;C7B6;110C 1162 11B1;
+C7B7;C7B7;110C 1162 11B2;C7B7;110C 1162 11B2;
+C7B8;C7B8;110C 1162 11B3;C7B8;110C 1162 11B3;
+C7B9;C7B9;110C 1162 11B4;C7B9;110C 1162 11B4;
+C7BA;C7BA;110C 1162 11B5;C7BA;110C 1162 11B5;
+C7BB;C7BB;110C 1162 11B6;C7BB;110C 1162 11B6;
+C7BC;C7BC;110C 1162 11B7;C7BC;110C 1162 11B7;
+C7BD;C7BD;110C 1162 11B8;C7BD;110C 1162 11B8;
+C7BE;C7BE;110C 1162 11B9;C7BE;110C 1162 11B9;
+C7BF;C7BF;110C 1162 11BA;C7BF;110C 1162 11BA;
+C7C0;C7C0;110C 1162 11BB;C7C0;110C 1162 11BB;
+C7C1;C7C1;110C 1162 11BC;C7C1;110C 1162 11BC;
+C7C2;C7C2;110C 1162 11BD;C7C2;110C 1162 11BD;
+C7C3;C7C3;110C 1162 11BE;C7C3;110C 1162 11BE;
+C7C4;C7C4;110C 1162 11BF;C7C4;110C 1162 11BF;
+C7C5;C7C5;110C 1162 11C0;C7C5;110C 1162 11C0;
+C7C6;C7C6;110C 1162 11C1;C7C6;110C 1162 11C1;
+C7C7;C7C7;110C 1162 11C2;C7C7;110C 1162 11C2;
+C7C8;C7C8;110C 1163;C7C8;110C 1163;
+C7C9;C7C9;110C 1163 11A8;C7C9;110C 1163 11A8;
+C7CA;C7CA;110C 1163 11A9;C7CA;110C 1163 11A9;
+C7CB;C7CB;110C 1163 11AA;C7CB;110C 1163 11AA;
+C7CC;C7CC;110C 1163 11AB;C7CC;110C 1163 11AB;
+C7CD;C7CD;110C 1163 11AC;C7CD;110C 1163 11AC;
+C7CE;C7CE;110C 1163 11AD;C7CE;110C 1163 11AD;
+C7CF;C7CF;110C 1163 11AE;C7CF;110C 1163 11AE;
+C7D0;C7D0;110C 1163 11AF;C7D0;110C 1163 11AF;
+C7D1;C7D1;110C 1163 11B0;C7D1;110C 1163 11B0;
+C7D2;C7D2;110C 1163 11B1;C7D2;110C 1163 11B1;
+C7D3;C7D3;110C 1163 11B2;C7D3;110C 1163 11B2;
+C7D4;C7D4;110C 1163 11B3;C7D4;110C 1163 11B3;
+C7D5;C7D5;110C 1163 11B4;C7D5;110C 1163 11B4;
+C7D6;C7D6;110C 1163 11B5;C7D6;110C 1163 11B5;
+C7D7;C7D7;110C 1163 11B6;C7D7;110C 1163 11B6;
+C7D8;C7D8;110C 1163 11B7;C7D8;110C 1163 11B7;
+C7D9;C7D9;110C 1163 11B8;C7D9;110C 1163 11B8;
+C7DA;C7DA;110C 1163 11B9;C7DA;110C 1163 11B9;
+C7DB;C7DB;110C 1163 11BA;C7DB;110C 1163 11BA;
+C7DC;C7DC;110C 1163 11BB;C7DC;110C 1163 11BB;
+C7DD;C7DD;110C 1163 11BC;C7DD;110C 1163 11BC;
+C7DE;C7DE;110C 1163 11BD;C7DE;110C 1163 11BD;
+C7DF;C7DF;110C 1163 11BE;C7DF;110C 1163 11BE;
+C7E0;C7E0;110C 1163 11BF;C7E0;110C 1163 11BF;
+C7E1;C7E1;110C 1163 11C0;C7E1;110C 1163 11C0;
+C7E2;C7E2;110C 1163 11C1;C7E2;110C 1163 11C1;
+C7E3;C7E3;110C 1163 11C2;C7E3;110C 1163 11C2;
+C7E4;C7E4;110C 1164;C7E4;110C 1164;
+C7E5;C7E5;110C 1164 11A8;C7E5;110C 1164 11A8;
+C7E6;C7E6;110C 1164 11A9;C7E6;110C 1164 11A9;
+C7E7;C7E7;110C 1164 11AA;C7E7;110C 1164 11AA;
+C7E8;C7E8;110C 1164 11AB;C7E8;110C 1164 11AB;
+C7E9;C7E9;110C 1164 11AC;C7E9;110C 1164 11AC;
+C7EA;C7EA;110C 1164 11AD;C7EA;110C 1164 11AD;
+C7EB;C7EB;110C 1164 11AE;C7EB;110C 1164 11AE;
+C7EC;C7EC;110C 1164 11AF;C7EC;110C 1164 11AF;
+C7ED;C7ED;110C 1164 11B0;C7ED;110C 1164 11B0;
+C7EE;C7EE;110C 1164 11B1;C7EE;110C 1164 11B1;
+C7EF;C7EF;110C 1164 11B2;C7EF;110C 1164 11B2;
+C7F0;C7F0;110C 1164 11B3;C7F0;110C 1164 11B3;
+C7F1;C7F1;110C 1164 11B4;C7F1;110C 1164 11B4;
+C7F2;C7F2;110C 1164 11B5;C7F2;110C 1164 11B5;
+C7F3;C7F3;110C 1164 11B6;C7F3;110C 1164 11B6;
+C7F4;C7F4;110C 1164 11B7;C7F4;110C 1164 11B7;
+C7F5;C7F5;110C 1164 11B8;C7F5;110C 1164 11B8;
+C7F6;C7F6;110C 1164 11B9;C7F6;110C 1164 11B9;
+C7F7;C7F7;110C 1164 11BA;C7F7;110C 1164 11BA;
+C7F8;C7F8;110C 1164 11BB;C7F8;110C 1164 11BB;
+C7F9;C7F9;110C 1164 11BC;C7F9;110C 1164 11BC;
+C7FA;C7FA;110C 1164 11BD;C7FA;110C 1164 11BD;
+C7FB;C7FB;110C 1164 11BE;C7FB;110C 1164 11BE;
+C7FC;C7FC;110C 1164 11BF;C7FC;110C 1164 11BF;
+C7FD;C7FD;110C 1164 11C0;C7FD;110C 1164 11C0;
+C7FE;C7FE;110C 1164 11C1;C7FE;110C 1164 11C1;
+C7FF;C7FF;110C 1164 11C2;C7FF;110C 1164 11C2;
+C800;C800;110C 1165;C800;110C 1165;
+C801;C801;110C 1165 11A8;C801;110C 1165 11A8;
+C802;C802;110C 1165 11A9;C802;110C 1165 11A9;
+C803;C803;110C 1165 11AA;C803;110C 1165 11AA;
+C804;C804;110C 1165 11AB;C804;110C 1165 11AB;
+C805;C805;110C 1165 11AC;C805;110C 1165 11AC;
+C806;C806;110C 1165 11AD;C806;110C 1165 11AD;
+C807;C807;110C 1165 11AE;C807;110C 1165 11AE;
+C808;C808;110C 1165 11AF;C808;110C 1165 11AF;
+C809;C809;110C 1165 11B0;C809;110C 1165 11B0;
+C80A;C80A;110C 1165 11B1;C80A;110C 1165 11B1;
+C80B;C80B;110C 1165 11B2;C80B;110C 1165 11B2;
+C80C;C80C;110C 1165 11B3;C80C;110C 1165 11B3;
+C80D;C80D;110C 1165 11B4;C80D;110C 1165 11B4;
+C80E;C80E;110C 1165 11B5;C80E;110C 1165 11B5;
+C80F;C80F;110C 1165 11B6;C80F;110C 1165 11B6;
+C810;C810;110C 1165 11B7;C810;110C 1165 11B7;
+C811;C811;110C 1165 11B8;C811;110C 1165 11B8;
+C812;C812;110C 1165 11B9;C812;110C 1165 11B9;
+C813;C813;110C 1165 11BA;C813;110C 1165 11BA;
+C814;C814;110C 1165 11BB;C814;110C 1165 11BB;
+C815;C815;110C 1165 11BC;C815;110C 1165 11BC;
+C816;C816;110C 1165 11BD;C816;110C 1165 11BD;
+C817;C817;110C 1165 11BE;C817;110C 1165 11BE;
+C818;C818;110C 1165 11BF;C818;110C 1165 11BF;
+C819;C819;110C 1165 11C0;C819;110C 1165 11C0;
+C81A;C81A;110C 1165 11C1;C81A;110C 1165 11C1;
+C81B;C81B;110C 1165 11C2;C81B;110C 1165 11C2;
+C81C;C81C;110C 1166;C81C;110C 1166;
+C81D;C81D;110C 1166 11A8;C81D;110C 1166 11A8;
+C81E;C81E;110C 1166 11A9;C81E;110C 1166 11A9;
+C81F;C81F;110C 1166 11AA;C81F;110C 1166 11AA;
+C820;C820;110C 1166 11AB;C820;110C 1166 11AB;
+C821;C821;110C 1166 11AC;C821;110C 1166 11AC;
+C822;C822;110C 1166 11AD;C822;110C 1166 11AD;
+C823;C823;110C 1166 11AE;C823;110C 1166 11AE;
+C824;C824;110C 1166 11AF;C824;110C 1166 11AF;
+C825;C825;110C 1166 11B0;C825;110C 1166 11B0;
+C826;C826;110C 1166 11B1;C826;110C 1166 11B1;
+C827;C827;110C 1166 11B2;C827;110C 1166 11B2;
+C828;C828;110C 1166 11B3;C828;110C 1166 11B3;
+C829;C829;110C 1166 11B4;C829;110C 1166 11B4;
+C82A;C82A;110C 1166 11B5;C82A;110C 1166 11B5;
+C82B;C82B;110C 1166 11B6;C82B;110C 1166 11B6;
+C82C;C82C;110C 1166 11B7;C82C;110C 1166 11B7;
+C82D;C82D;110C 1166 11B8;C82D;110C 1166 11B8;
+C82E;C82E;110C 1166 11B9;C82E;110C 1166 11B9;
+C82F;C82F;110C 1166 11BA;C82F;110C 1166 11BA;
+C830;C830;110C 1166 11BB;C830;110C 1166 11BB;
+C831;C831;110C 1166 11BC;C831;110C 1166 11BC;
+C832;C832;110C 1166 11BD;C832;110C 1166 11BD;
+C833;C833;110C 1166 11BE;C833;110C 1166 11BE;
+C834;C834;110C 1166 11BF;C834;110C 1166 11BF;
+C835;C835;110C 1166 11C0;C835;110C 1166 11C0;
+C836;C836;110C 1166 11C1;C836;110C 1166 11C1;
+C837;C837;110C 1166 11C2;C837;110C 1166 11C2;
+C838;C838;110C 1167;C838;110C 1167;
+C839;C839;110C 1167 11A8;C839;110C 1167 11A8;
+C83A;C83A;110C 1167 11A9;C83A;110C 1167 11A9;
+C83B;C83B;110C 1167 11AA;C83B;110C 1167 11AA;
+C83C;C83C;110C 1167 11AB;C83C;110C 1167 11AB;
+C83D;C83D;110C 1167 11AC;C83D;110C 1167 11AC;
+C83E;C83E;110C 1167 11AD;C83E;110C 1167 11AD;
+C83F;C83F;110C 1167 11AE;C83F;110C 1167 11AE;
+C840;C840;110C 1167 11AF;C840;110C 1167 11AF;
+C841;C841;110C 1167 11B0;C841;110C 1167 11B0;
+C842;C842;110C 1167 11B1;C842;110C 1167 11B1;
+C843;C843;110C 1167 11B2;C843;110C 1167 11B2;
+C844;C844;110C 1167 11B3;C844;110C 1167 11B3;
+C845;C845;110C 1167 11B4;C845;110C 1167 11B4;
+C846;C846;110C 1167 11B5;C846;110C 1167 11B5;
+C847;C847;110C 1167 11B6;C847;110C 1167 11B6;
+C848;C848;110C 1167 11B7;C848;110C 1167 11B7;
+C849;C849;110C 1167 11B8;C849;110C 1167 11B8;
+C84A;C84A;110C 1167 11B9;C84A;110C 1167 11B9;
+C84B;C84B;110C 1167 11BA;C84B;110C 1167 11BA;
+C84C;C84C;110C 1167 11BB;C84C;110C 1167 11BB;
+C84D;C84D;110C 1167 11BC;C84D;110C 1167 11BC;
+C84E;C84E;110C 1167 11BD;C84E;110C 1167 11BD;
+C84F;C84F;110C 1167 11BE;C84F;110C 1167 11BE;
+C850;C850;110C 1167 11BF;C850;110C 1167 11BF;
+C851;C851;110C 1167 11C0;C851;110C 1167 11C0;
+C852;C852;110C 1167 11C1;C852;110C 1167 11C1;
+C853;C853;110C 1167 11C2;C853;110C 1167 11C2;
+C854;C854;110C 1168;C854;110C 1168;
+C855;C855;110C 1168 11A8;C855;110C 1168 11A8;
+C856;C856;110C 1168 11A9;C856;110C 1168 11A9;
+C857;C857;110C 1168 11AA;C857;110C 1168 11AA;
+C858;C858;110C 1168 11AB;C858;110C 1168 11AB;
+C859;C859;110C 1168 11AC;C859;110C 1168 11AC;
+C85A;C85A;110C 1168 11AD;C85A;110C 1168 11AD;
+C85B;C85B;110C 1168 11AE;C85B;110C 1168 11AE;
+C85C;C85C;110C 1168 11AF;C85C;110C 1168 11AF;
+C85D;C85D;110C 1168 11B0;C85D;110C 1168 11B0;
+C85E;C85E;110C 1168 11B1;C85E;110C 1168 11B1;
+C85F;C85F;110C 1168 11B2;C85F;110C 1168 11B2;
+C860;C860;110C 1168 11B3;C860;110C 1168 11B3;
+C861;C861;110C 1168 11B4;C861;110C 1168 11B4;
+C862;C862;110C 1168 11B5;C862;110C 1168 11B5;
+C863;C863;110C 1168 11B6;C863;110C 1168 11B6;
+C864;C864;110C 1168 11B7;C864;110C 1168 11B7;
+C865;C865;110C 1168 11B8;C865;110C 1168 11B8;
+C866;C866;110C 1168 11B9;C866;110C 1168 11B9;
+C867;C867;110C 1168 11BA;C867;110C 1168 11BA;
+C868;C868;110C 1168 11BB;C868;110C 1168 11BB;
+C869;C869;110C 1168 11BC;C869;110C 1168 11BC;
+C86A;C86A;110C 1168 11BD;C86A;110C 1168 11BD;
+C86B;C86B;110C 1168 11BE;C86B;110C 1168 11BE;
+C86C;C86C;110C 1168 11BF;C86C;110C 1168 11BF;
+C86D;C86D;110C 1168 11C0;C86D;110C 1168 11C0;
+C86E;C86E;110C 1168 11C1;C86E;110C 1168 11C1;
+C86F;C86F;110C 1168 11C2;C86F;110C 1168 11C2;
+C870;C870;110C 1169;C870;110C 1169;
+C871;C871;110C 1169 11A8;C871;110C 1169 11A8;
+C872;C872;110C 1169 11A9;C872;110C 1169 11A9;
+C873;C873;110C 1169 11AA;C873;110C 1169 11AA;
+C874;C874;110C 1169 11AB;C874;110C 1169 11AB;
+C875;C875;110C 1169 11AC;C875;110C 1169 11AC;
+C876;C876;110C 1169 11AD;C876;110C 1169 11AD;
+C877;C877;110C 1169 11AE;C877;110C 1169 11AE;
+C878;C878;110C 1169 11AF;C878;110C 1169 11AF;
+C879;C879;110C 1169 11B0;C879;110C 1169 11B0;
+C87A;C87A;110C 1169 11B1;C87A;110C 1169 11B1;
+C87B;C87B;110C 1169 11B2;C87B;110C 1169 11B2;
+C87C;C87C;110C 1169 11B3;C87C;110C 1169 11B3;
+C87D;C87D;110C 1169 11B4;C87D;110C 1169 11B4;
+C87E;C87E;110C 1169 11B5;C87E;110C 1169 11B5;
+C87F;C87F;110C 1169 11B6;C87F;110C 1169 11B6;
+C880;C880;110C 1169 11B7;C880;110C 1169 11B7;
+C881;C881;110C 1169 11B8;C881;110C 1169 11B8;
+C882;C882;110C 1169 11B9;C882;110C 1169 11B9;
+C883;C883;110C 1169 11BA;C883;110C 1169 11BA;
+C884;C884;110C 1169 11BB;C884;110C 1169 11BB;
+C885;C885;110C 1169 11BC;C885;110C 1169 11BC;
+C886;C886;110C 1169 11BD;C886;110C 1169 11BD;
+C887;C887;110C 1169 11BE;C887;110C 1169 11BE;
+C888;C888;110C 1169 11BF;C888;110C 1169 11BF;
+C889;C889;110C 1169 11C0;C889;110C 1169 11C0;
+C88A;C88A;110C 1169 11C1;C88A;110C 1169 11C1;
+C88B;C88B;110C 1169 11C2;C88B;110C 1169 11C2;
+C88C;C88C;110C 116A;C88C;110C 116A;
+C88D;C88D;110C 116A 11A8;C88D;110C 116A 11A8;
+C88E;C88E;110C 116A 11A9;C88E;110C 116A 11A9;
+C88F;C88F;110C 116A 11AA;C88F;110C 116A 11AA;
+C890;C890;110C 116A 11AB;C890;110C 116A 11AB;
+C891;C891;110C 116A 11AC;C891;110C 116A 11AC;
+C892;C892;110C 116A 11AD;C892;110C 116A 11AD;
+C893;C893;110C 116A 11AE;C893;110C 116A 11AE;
+C894;C894;110C 116A 11AF;C894;110C 116A 11AF;
+C895;C895;110C 116A 11B0;C895;110C 116A 11B0;
+C896;C896;110C 116A 11B1;C896;110C 116A 11B1;
+C897;C897;110C 116A 11B2;C897;110C 116A 11B2;
+C898;C898;110C 116A 11B3;C898;110C 116A 11B3;
+C899;C899;110C 116A 11B4;C899;110C 116A 11B4;
+C89A;C89A;110C 116A 11B5;C89A;110C 116A 11B5;
+C89B;C89B;110C 116A 11B6;C89B;110C 116A 11B6;
+C89C;C89C;110C 116A 11B7;C89C;110C 116A 11B7;
+C89D;C89D;110C 116A 11B8;C89D;110C 116A 11B8;
+C89E;C89E;110C 116A 11B9;C89E;110C 116A 11B9;
+C89F;C89F;110C 116A 11BA;C89F;110C 116A 11BA;
+C8A0;C8A0;110C 116A 11BB;C8A0;110C 116A 11BB;
+C8A1;C8A1;110C 116A 11BC;C8A1;110C 116A 11BC;
+C8A2;C8A2;110C 116A 11BD;C8A2;110C 116A 11BD;
+C8A3;C8A3;110C 116A 11BE;C8A3;110C 116A 11BE;
+C8A4;C8A4;110C 116A 11BF;C8A4;110C 116A 11BF;
+C8A5;C8A5;110C 116A 11C0;C8A5;110C 116A 11C0;
+C8A6;C8A6;110C 116A 11C1;C8A6;110C 116A 11C1;
+C8A7;C8A7;110C 116A 11C2;C8A7;110C 116A 11C2;
+C8A8;C8A8;110C 116B;C8A8;110C 116B;
+C8A9;C8A9;110C 116B 11A8;C8A9;110C 116B 11A8;
+C8AA;C8AA;110C 116B 11A9;C8AA;110C 116B 11A9;
+C8AB;C8AB;110C 116B 11AA;C8AB;110C 116B 11AA;
+C8AC;C8AC;110C 116B 11AB;C8AC;110C 116B 11AB;
+C8AD;C8AD;110C 116B 11AC;C8AD;110C 116B 11AC;
+C8AE;C8AE;110C 116B 11AD;C8AE;110C 116B 11AD;
+C8AF;C8AF;110C 116B 11AE;C8AF;110C 116B 11AE;
+C8B0;C8B0;110C 116B 11AF;C8B0;110C 116B 11AF;
+C8B1;C8B1;110C 116B 11B0;C8B1;110C 116B 11B0;
+C8B2;C8B2;110C 116B 11B1;C8B2;110C 116B 11B1;
+C8B3;C8B3;110C 116B 11B2;C8B3;110C 116B 11B2;
+C8B4;C8B4;110C 116B 11B3;C8B4;110C 116B 11B3;
+C8B5;C8B5;110C 116B 11B4;C8B5;110C 116B 11B4;
+C8B6;C8B6;110C 116B 11B5;C8B6;110C 116B 11B5;
+C8B7;C8B7;110C 116B 11B6;C8B7;110C 116B 11B6;
+C8B8;C8B8;110C 116B 11B7;C8B8;110C 116B 11B7;
+C8B9;C8B9;110C 116B 11B8;C8B9;110C 116B 11B8;
+C8BA;C8BA;110C 116B 11B9;C8BA;110C 116B 11B9;
+C8BB;C8BB;110C 116B 11BA;C8BB;110C 116B 11BA;
+C8BC;C8BC;110C 116B 11BB;C8BC;110C 116B 11BB;
+C8BD;C8BD;110C 116B 11BC;C8BD;110C 116B 11BC;
+C8BE;C8BE;110C 116B 11BD;C8BE;110C 116B 11BD;
+C8BF;C8BF;110C 116B 11BE;C8BF;110C 116B 11BE;
+C8C0;C8C0;110C 116B 11BF;C8C0;110C 116B 11BF;
+C8C1;C8C1;110C 116B 11C0;C8C1;110C 116B 11C0;
+C8C2;C8C2;110C 116B 11C1;C8C2;110C 116B 11C1;
+C8C3;C8C3;110C 116B 11C2;C8C3;110C 116B 11C2;
+C8C4;C8C4;110C 116C;C8C4;110C 116C;
+C8C5;C8C5;110C 116C 11A8;C8C5;110C 116C 11A8;
+C8C6;C8C6;110C 116C 11A9;C8C6;110C 116C 11A9;
+C8C7;C8C7;110C 116C 11AA;C8C7;110C 116C 11AA;
+C8C8;C8C8;110C 116C 11AB;C8C8;110C 116C 11AB;
+C8C9;C8C9;110C 116C 11AC;C8C9;110C 116C 11AC;
+C8CA;C8CA;110C 116C 11AD;C8CA;110C 116C 11AD;
+C8CB;C8CB;110C 116C 11AE;C8CB;110C 116C 11AE;
+C8CC;C8CC;110C 116C 11AF;C8CC;110C 116C 11AF;
+C8CD;C8CD;110C 116C 11B0;C8CD;110C 116C 11B0;
+C8CE;C8CE;110C 116C 11B1;C8CE;110C 116C 11B1;
+C8CF;C8CF;110C 116C 11B2;C8CF;110C 116C 11B2;
+C8D0;C8D0;110C 116C 11B3;C8D0;110C 116C 11B3;
+C8D1;C8D1;110C 116C 11B4;C8D1;110C 116C 11B4;
+C8D2;C8D2;110C 116C 11B5;C8D2;110C 116C 11B5;
+C8D3;C8D3;110C 116C 11B6;C8D3;110C 116C 11B6;
+C8D4;C8D4;110C 116C 11B7;C8D4;110C 116C 11B7;
+C8D5;C8D5;110C 116C 11B8;C8D5;110C 116C 11B8;
+C8D6;C8D6;110C 116C 11B9;C8D6;110C 116C 11B9;
+C8D7;C8D7;110C 116C 11BA;C8D7;110C 116C 11BA;
+C8D8;C8D8;110C 116C 11BB;C8D8;110C 116C 11BB;
+C8D9;C8D9;110C 116C 11BC;C8D9;110C 116C 11BC;
+C8DA;C8DA;110C 116C 11BD;C8DA;110C 116C 11BD;
+C8DB;C8DB;110C 116C 11BE;C8DB;110C 116C 11BE;
+C8DC;C8DC;110C 116C 11BF;C8DC;110C 116C 11BF;
+C8DD;C8DD;110C 116C 11C0;C8DD;110C 116C 11C0;
+C8DE;C8DE;110C 116C 11C1;C8DE;110C 116C 11C1;
+C8DF;C8DF;110C 116C 11C2;C8DF;110C 116C 11C2;
+C8E0;C8E0;110C 116D;C8E0;110C 116D;
+C8E1;C8E1;110C 116D 11A8;C8E1;110C 116D 11A8;
+C8E2;C8E2;110C 116D 11A9;C8E2;110C 116D 11A9;
+C8E3;C8E3;110C 116D 11AA;C8E3;110C 116D 11AA;
+C8E4;C8E4;110C 116D 11AB;C8E4;110C 116D 11AB;
+C8E5;C8E5;110C 116D 11AC;C8E5;110C 116D 11AC;
+C8E6;C8E6;110C 116D 11AD;C8E6;110C 116D 11AD;
+C8E7;C8E7;110C 116D 11AE;C8E7;110C 116D 11AE;
+C8E8;C8E8;110C 116D 11AF;C8E8;110C 116D 11AF;
+C8E9;C8E9;110C 116D 11B0;C8E9;110C 116D 11B0;
+C8EA;C8EA;110C 116D 11B1;C8EA;110C 116D 11B1;
+C8EB;C8EB;110C 116D 11B2;C8EB;110C 116D 11B2;
+C8EC;C8EC;110C 116D 11B3;C8EC;110C 116D 11B3;
+C8ED;C8ED;110C 116D 11B4;C8ED;110C 116D 11B4;
+C8EE;C8EE;110C 116D 11B5;C8EE;110C 116D 11B5;
+C8EF;C8EF;110C 116D 11B6;C8EF;110C 116D 11B6;
+C8F0;C8F0;110C 116D 11B7;C8F0;110C 116D 11B7;
+C8F1;C8F1;110C 116D 11B8;C8F1;110C 116D 11B8;
+C8F2;C8F2;110C 116D 11B9;C8F2;110C 116D 11B9;
+C8F3;C8F3;110C 116D 11BA;C8F3;110C 116D 11BA;
+C8F4;C8F4;110C 116D 11BB;C8F4;110C 116D 11BB;
+C8F5;C8F5;110C 116D 11BC;C8F5;110C 116D 11BC;
+C8F6;C8F6;110C 116D 11BD;C8F6;110C 116D 11BD;
+C8F7;C8F7;110C 116D 11BE;C8F7;110C 116D 11BE;
+C8F8;C8F8;110C 116D 11BF;C8F8;110C 116D 11BF;
+C8F9;C8F9;110C 116D 11C0;C8F9;110C 116D 11C0;
+C8FA;C8FA;110C 116D 11C1;C8FA;110C 116D 11C1;
+C8FB;C8FB;110C 116D 11C2;C8FB;110C 116D 11C2;
+C8FC;C8FC;110C 116E;C8FC;110C 116E;
+C8FD;C8FD;110C 116E 11A8;C8FD;110C 116E 11A8;
+C8FE;C8FE;110C 116E 11A9;C8FE;110C 116E 11A9;
+C8FF;C8FF;110C 116E 11AA;C8FF;110C 116E 11AA;
+C900;C900;110C 116E 11AB;C900;110C 116E 11AB;
+C901;C901;110C 116E 11AC;C901;110C 116E 11AC;
+C902;C902;110C 116E 11AD;C902;110C 116E 11AD;
+C903;C903;110C 116E 11AE;C903;110C 116E 11AE;
+C904;C904;110C 116E 11AF;C904;110C 116E 11AF;
+C905;C905;110C 116E 11B0;C905;110C 116E 11B0;
+C906;C906;110C 116E 11B1;C906;110C 116E 11B1;
+C907;C907;110C 116E 11B2;C907;110C 116E 11B2;
+C908;C908;110C 116E 11B3;C908;110C 116E 11B3;
+C909;C909;110C 116E 11B4;C909;110C 116E 11B4;
+C90A;C90A;110C 116E 11B5;C90A;110C 116E 11B5;
+C90B;C90B;110C 116E 11B6;C90B;110C 116E 11B6;
+C90C;C90C;110C 116E 11B7;C90C;110C 116E 11B7;
+C90D;C90D;110C 116E 11B8;C90D;110C 116E 11B8;
+C90E;C90E;110C 116E 11B9;C90E;110C 116E 11B9;
+C90F;C90F;110C 116E 11BA;C90F;110C 116E 11BA;
+C910;C910;110C 116E 11BB;C910;110C 116E 11BB;
+C911;C911;110C 116E 11BC;C911;110C 116E 11BC;
+C912;C912;110C 116E 11BD;C912;110C 116E 11BD;
+C913;C913;110C 116E 11BE;C913;110C 116E 11BE;
+C914;C914;110C 116E 11BF;C914;110C 116E 11BF;
+C915;C915;110C 116E 11C0;C915;110C 116E 11C0;
+C916;C916;110C 116E 11C1;C916;110C 116E 11C1;
+C917;C917;110C 116E 11C2;C917;110C 116E 11C2;
+C918;C918;110C 116F;C918;110C 116F;
+C919;C919;110C 116F 11A8;C919;110C 116F 11A8;
+C91A;C91A;110C 116F 11A9;C91A;110C 116F 11A9;
+C91B;C91B;110C 116F 11AA;C91B;110C 116F 11AA;
+C91C;C91C;110C 116F 11AB;C91C;110C 116F 11AB;
+C91D;C91D;110C 116F 11AC;C91D;110C 116F 11AC;
+C91E;C91E;110C 116F 11AD;C91E;110C 116F 11AD;
+C91F;C91F;110C 116F 11AE;C91F;110C 116F 11AE;
+C920;C920;110C 116F 11AF;C920;110C 116F 11AF;
+C921;C921;110C 116F 11B0;C921;110C 116F 11B0;
+C922;C922;110C 116F 11B1;C922;110C 116F 11B1;
+C923;C923;110C 116F 11B2;C923;110C 116F 11B2;
+C924;C924;110C 116F 11B3;C924;110C 116F 11B3;
+C925;C925;110C 116F 11B4;C925;110C 116F 11B4;
+C926;C926;110C 116F 11B5;C926;110C 116F 11B5;
+C927;C927;110C 116F 11B6;C927;110C 116F 11B6;
+C928;C928;110C 116F 11B7;C928;110C 116F 11B7;
+C929;C929;110C 116F 11B8;C929;110C 116F 11B8;
+C92A;C92A;110C 116F 11B9;C92A;110C 116F 11B9;
+C92B;C92B;110C 116F 11BA;C92B;110C 116F 11BA;
+C92C;C92C;110C 116F 11BB;C92C;110C 116F 11BB;
+C92D;C92D;110C 116F 11BC;C92D;110C 116F 11BC;
+C92E;C92E;110C 116F 11BD;C92E;110C 116F 11BD;
+C92F;C92F;110C 116F 11BE;C92F;110C 116F 11BE;
+C930;C930;110C 116F 11BF;C930;110C 116F 11BF;
+C931;C931;110C 116F 11C0;C931;110C 116F 11C0;
+C932;C932;110C 116F 11C1;C932;110C 116F 11C1;
+C933;C933;110C 116F 11C2;C933;110C 116F 11C2;
+C934;C934;110C 1170;C934;110C 1170;
+C935;C935;110C 1170 11A8;C935;110C 1170 11A8;
+C936;C936;110C 1170 11A9;C936;110C 1170 11A9;
+C937;C937;110C 1170 11AA;C937;110C 1170 11AA;
+C938;C938;110C 1170 11AB;C938;110C 1170 11AB;
+C939;C939;110C 1170 11AC;C939;110C 1170 11AC;
+C93A;C93A;110C 1170 11AD;C93A;110C 1170 11AD;
+C93B;C93B;110C 1170 11AE;C93B;110C 1170 11AE;
+C93C;C93C;110C 1170 11AF;C93C;110C 1170 11AF;
+C93D;C93D;110C 1170 11B0;C93D;110C 1170 11B0;
+C93E;C93E;110C 1170 11B1;C93E;110C 1170 11B1;
+C93F;C93F;110C 1170 11B2;C93F;110C 1170 11B2;
+C940;C940;110C 1170 11B3;C940;110C 1170 11B3;
+C941;C941;110C 1170 11B4;C941;110C 1170 11B4;
+C942;C942;110C 1170 11B5;C942;110C 1170 11B5;
+C943;C943;110C 1170 11B6;C943;110C 1170 11B6;
+C944;C944;110C 1170 11B7;C944;110C 1170 11B7;
+C945;C945;110C 1170 11B8;C945;110C 1170 11B8;
+C946;C946;110C 1170 11B9;C946;110C 1170 11B9;
+C947;C947;110C 1170 11BA;C947;110C 1170 11BA;
+C948;C948;110C 1170 11BB;C948;110C 1170 11BB;
+C949;C949;110C 1170 11BC;C949;110C 1170 11BC;
+C94A;C94A;110C 1170 11BD;C94A;110C 1170 11BD;
+C94B;C94B;110C 1170 11BE;C94B;110C 1170 11BE;
+C94C;C94C;110C 1170 11BF;C94C;110C 1170 11BF;
+C94D;C94D;110C 1170 11C0;C94D;110C 1170 11C0;
+C94E;C94E;110C 1170 11C1;C94E;110C 1170 11C1;
+C94F;C94F;110C 1170 11C2;C94F;110C 1170 11C2;
+C950;C950;110C 1171;C950;110C 1171;
+C951;C951;110C 1171 11A8;C951;110C 1171 11A8;
+C952;C952;110C 1171 11A9;C952;110C 1171 11A9;
+C953;C953;110C 1171 11AA;C953;110C 1171 11AA;
+C954;C954;110C 1171 11AB;C954;110C 1171 11AB;
+C955;C955;110C 1171 11AC;C955;110C 1171 11AC;
+C956;C956;110C 1171 11AD;C956;110C 1171 11AD;
+C957;C957;110C 1171 11AE;C957;110C 1171 11AE;
+C958;C958;110C 1171 11AF;C958;110C 1171 11AF;
+C959;C959;110C 1171 11B0;C959;110C 1171 11B0;
+C95A;C95A;110C 1171 11B1;C95A;110C 1171 11B1;
+C95B;C95B;110C 1171 11B2;C95B;110C 1171 11B2;
+C95C;C95C;110C 1171 11B3;C95C;110C 1171 11B3;
+C95D;C95D;110C 1171 11B4;C95D;110C 1171 11B4;
+C95E;C95E;110C 1171 11B5;C95E;110C 1171 11B5;
+C95F;C95F;110C 1171 11B6;C95F;110C 1171 11B6;
+C960;C960;110C 1171 11B7;C960;110C 1171 11B7;
+C961;C961;110C 1171 11B8;C961;110C 1171 11B8;
+C962;C962;110C 1171 11B9;C962;110C 1171 11B9;
+C963;C963;110C 1171 11BA;C963;110C 1171 11BA;
+C964;C964;110C 1171 11BB;C964;110C 1171 11BB;
+C965;C965;110C 1171 11BC;C965;110C 1171 11BC;
+C966;C966;110C 1171 11BD;C966;110C 1171 11BD;
+C967;C967;110C 1171 11BE;C967;110C 1171 11BE;
+C968;C968;110C 1171 11BF;C968;110C 1171 11BF;
+C969;C969;110C 1171 11C0;C969;110C 1171 11C0;
+C96A;C96A;110C 1171 11C1;C96A;110C 1171 11C1;
+C96B;C96B;110C 1171 11C2;C96B;110C 1171 11C2;
+C96C;C96C;110C 1172;C96C;110C 1172;
+C96D;C96D;110C 1172 11A8;C96D;110C 1172 11A8;
+C96E;C96E;110C 1172 11A9;C96E;110C 1172 11A9;
+C96F;C96F;110C 1172 11AA;C96F;110C 1172 11AA;
+C970;C970;110C 1172 11AB;C970;110C 1172 11AB;
+C971;C971;110C 1172 11AC;C971;110C 1172 11AC;
+C972;C972;110C 1172 11AD;C972;110C 1172 11AD;
+C973;C973;110C 1172 11AE;C973;110C 1172 11AE;
+C974;C974;110C 1172 11AF;C974;110C 1172 11AF;
+C975;C975;110C 1172 11B0;C975;110C 1172 11B0;
+C976;C976;110C 1172 11B1;C976;110C 1172 11B1;
+C977;C977;110C 1172 11B2;C977;110C 1172 11B2;
+C978;C978;110C 1172 11B3;C978;110C 1172 11B3;
+C979;C979;110C 1172 11B4;C979;110C 1172 11B4;
+C97A;C97A;110C 1172 11B5;C97A;110C 1172 11B5;
+C97B;C97B;110C 1172 11B6;C97B;110C 1172 11B6;
+C97C;C97C;110C 1172 11B7;C97C;110C 1172 11B7;
+C97D;C97D;110C 1172 11B8;C97D;110C 1172 11B8;
+C97E;C97E;110C 1172 11B9;C97E;110C 1172 11B9;
+C97F;C97F;110C 1172 11BA;C97F;110C 1172 11BA;
+C980;C980;110C 1172 11BB;C980;110C 1172 11BB;
+C981;C981;110C 1172 11BC;C981;110C 1172 11BC;
+C982;C982;110C 1172 11BD;C982;110C 1172 11BD;
+C983;C983;110C 1172 11BE;C983;110C 1172 11BE;
+C984;C984;110C 1172 11BF;C984;110C 1172 11BF;
+C985;C985;110C 1172 11C0;C985;110C 1172 11C0;
+C986;C986;110C 1172 11C1;C986;110C 1172 11C1;
+C987;C987;110C 1172 11C2;C987;110C 1172 11C2;
+C988;C988;110C 1173;C988;110C 1173;
+C989;C989;110C 1173 11A8;C989;110C 1173 11A8;
+C98A;C98A;110C 1173 11A9;C98A;110C 1173 11A9;
+C98B;C98B;110C 1173 11AA;C98B;110C 1173 11AA;
+C98C;C98C;110C 1173 11AB;C98C;110C 1173 11AB;
+C98D;C98D;110C 1173 11AC;C98D;110C 1173 11AC;
+C98E;C98E;110C 1173 11AD;C98E;110C 1173 11AD;
+C98F;C98F;110C 1173 11AE;C98F;110C 1173 11AE;
+C990;C990;110C 1173 11AF;C990;110C 1173 11AF;
+C991;C991;110C 1173 11B0;C991;110C 1173 11B0;
+C992;C992;110C 1173 11B1;C992;110C 1173 11B1;
+C993;C993;110C 1173 11B2;C993;110C 1173 11B2;
+C994;C994;110C 1173 11B3;C994;110C 1173 11B3;
+C995;C995;110C 1173 11B4;C995;110C 1173 11B4;
+C996;C996;110C 1173 11B5;C996;110C 1173 11B5;
+C997;C997;110C 1173 11B6;C997;110C 1173 11B6;
+C998;C998;110C 1173 11B7;C998;110C 1173 11B7;
+C999;C999;110C 1173 11B8;C999;110C 1173 11B8;
+C99A;C99A;110C 1173 11B9;C99A;110C 1173 11B9;
+C99B;C99B;110C 1173 11BA;C99B;110C 1173 11BA;
+C99C;C99C;110C 1173 11BB;C99C;110C 1173 11BB;
+C99D;C99D;110C 1173 11BC;C99D;110C 1173 11BC;
+C99E;C99E;110C 1173 11BD;C99E;110C 1173 11BD;
+C99F;C99F;110C 1173 11BE;C99F;110C 1173 11BE;
+C9A0;C9A0;110C 1173 11BF;C9A0;110C 1173 11BF;
+C9A1;C9A1;110C 1173 11C0;C9A1;110C 1173 11C0;
+C9A2;C9A2;110C 1173 11C1;C9A2;110C 1173 11C1;
+C9A3;C9A3;110C 1173 11C2;C9A3;110C 1173 11C2;
+C9A4;C9A4;110C 1174;C9A4;110C 1174;
+C9A5;C9A5;110C 1174 11A8;C9A5;110C 1174 11A8;
+C9A6;C9A6;110C 1174 11A9;C9A6;110C 1174 11A9;
+C9A7;C9A7;110C 1174 11AA;C9A7;110C 1174 11AA;
+C9A8;C9A8;110C 1174 11AB;C9A8;110C 1174 11AB;
+C9A9;C9A9;110C 1174 11AC;C9A9;110C 1174 11AC;
+C9AA;C9AA;110C 1174 11AD;C9AA;110C 1174 11AD;
+C9AB;C9AB;110C 1174 11AE;C9AB;110C 1174 11AE;
+C9AC;C9AC;110C 1174 11AF;C9AC;110C 1174 11AF;
+C9AD;C9AD;110C 1174 11B0;C9AD;110C 1174 11B0;
+C9AE;C9AE;110C 1174 11B1;C9AE;110C 1174 11B1;
+C9AF;C9AF;110C 1174 11B2;C9AF;110C 1174 11B2;
+C9B0;C9B0;110C 1174 11B3;C9B0;110C 1174 11B3;
+C9B1;C9B1;110C 1174 11B4;C9B1;110C 1174 11B4;
+C9B2;C9B2;110C 1174 11B5;C9B2;110C 1174 11B5;
+C9B3;C9B3;110C 1174 11B6;C9B3;110C 1174 11B6;
+C9B4;C9B4;110C 1174 11B7;C9B4;110C 1174 11B7;
+C9B5;C9B5;110C 1174 11B8;C9B5;110C 1174 11B8;
+C9B6;C9B6;110C 1174 11B9;C9B6;110C 1174 11B9;
+C9B7;C9B7;110C 1174 11BA;C9B7;110C 1174 11BA;
+C9B8;C9B8;110C 1174 11BB;C9B8;110C 1174 11BB;
+C9B9;C9B9;110C 1174 11BC;C9B9;110C 1174 11BC;
+C9BA;C9BA;110C 1174 11BD;C9BA;110C 1174 11BD;
+C9BB;C9BB;110C 1174 11BE;C9BB;110C 1174 11BE;
+C9BC;C9BC;110C 1174 11BF;C9BC;110C 1174 11BF;
+C9BD;C9BD;110C 1174 11C0;C9BD;110C 1174 11C0;
+C9BE;C9BE;110C 1174 11C1;C9BE;110C 1174 11C1;
+C9BF;C9BF;110C 1174 11C2;C9BF;110C 1174 11C2;
+C9C0;C9C0;110C 1175;C9C0;110C 1175;
+C9C1;C9C1;110C 1175 11A8;C9C1;110C 1175 11A8;
+C9C2;C9C2;110C 1175 11A9;C9C2;110C 1175 11A9;
+C9C3;C9C3;110C 1175 11AA;C9C3;110C 1175 11AA;
+C9C4;C9C4;110C 1175 11AB;C9C4;110C 1175 11AB;
+C9C5;C9C5;110C 1175 11AC;C9C5;110C 1175 11AC;
+C9C6;C9C6;110C 1175 11AD;C9C6;110C 1175 11AD;
+C9C7;C9C7;110C 1175 11AE;C9C7;110C 1175 11AE;
+C9C8;C9C8;110C 1175 11AF;C9C8;110C 1175 11AF;
+C9C9;C9C9;110C 1175 11B0;C9C9;110C 1175 11B0;
+C9CA;C9CA;110C 1175 11B1;C9CA;110C 1175 11B1;
+C9CB;C9CB;110C 1175 11B2;C9CB;110C 1175 11B2;
+C9CC;C9CC;110C 1175 11B3;C9CC;110C 1175 11B3;
+C9CD;C9CD;110C 1175 11B4;C9CD;110C 1175 11B4;
+C9CE;C9CE;110C 1175 11B5;C9CE;110C 1175 11B5;
+C9CF;C9CF;110C 1175 11B6;C9CF;110C 1175 11B6;
+C9D0;C9D0;110C 1175 11B7;C9D0;110C 1175 11B7;
+C9D1;C9D1;110C 1175 11B8;C9D1;110C 1175 11B8;
+C9D2;C9D2;110C 1175 11B9;C9D2;110C 1175 11B9;
+C9D3;C9D3;110C 1175 11BA;C9D3;110C 1175 11BA;
+C9D4;C9D4;110C 1175 11BB;C9D4;110C 1175 11BB;
+C9D5;C9D5;110C 1175 11BC;C9D5;110C 1175 11BC;
+C9D6;C9D6;110C 1175 11BD;C9D6;110C 1175 11BD;
+C9D7;C9D7;110C 1175 11BE;C9D7;110C 1175 11BE;
+C9D8;C9D8;110C 1175 11BF;C9D8;110C 1175 11BF;
+C9D9;C9D9;110C 1175 11C0;C9D9;110C 1175 11C0;
+C9DA;C9DA;110C 1175 11C1;C9DA;110C 1175 11C1;
+C9DB;C9DB;110C 1175 11C2;C9DB;110C 1175 11C2;
+C9DC;C9DC;110D 1161;C9DC;110D 1161;
+C9DD;C9DD;110D 1161 11A8;C9DD;110D 1161 11A8;
+C9DE;C9DE;110D 1161 11A9;C9DE;110D 1161 11A9;
+C9DF;C9DF;110D 1161 11AA;C9DF;110D 1161 11AA;
+C9E0;C9E0;110D 1161 11AB;C9E0;110D 1161 11AB;
+C9E1;C9E1;110D 1161 11AC;C9E1;110D 1161 11AC;
+C9E2;C9E2;110D 1161 11AD;C9E2;110D 1161 11AD;
+C9E3;C9E3;110D 1161 11AE;C9E3;110D 1161 11AE;
+C9E4;C9E4;110D 1161 11AF;C9E4;110D 1161 11AF;
+C9E5;C9E5;110D 1161 11B0;C9E5;110D 1161 11B0;
+C9E6;C9E6;110D 1161 11B1;C9E6;110D 1161 11B1;
+C9E7;C9E7;110D 1161 11B2;C9E7;110D 1161 11B2;
+C9E8;C9E8;110D 1161 11B3;C9E8;110D 1161 11B3;
+C9E9;C9E9;110D 1161 11B4;C9E9;110D 1161 11B4;
+C9EA;C9EA;110D 1161 11B5;C9EA;110D 1161 11B5;
+C9EB;C9EB;110D 1161 11B6;C9EB;110D 1161 11B6;
+C9EC;C9EC;110D 1161 11B7;C9EC;110D 1161 11B7;
+C9ED;C9ED;110D 1161 11B8;C9ED;110D 1161 11B8;
+C9EE;C9EE;110D 1161 11B9;C9EE;110D 1161 11B9;
+C9EF;C9EF;110D 1161 11BA;C9EF;110D 1161 11BA;
+C9F0;C9F0;110D 1161 11BB;C9F0;110D 1161 11BB;
+C9F1;C9F1;110D 1161 11BC;C9F1;110D 1161 11BC;
+C9F2;C9F2;110D 1161 11BD;C9F2;110D 1161 11BD;
+C9F3;C9F3;110D 1161 11BE;C9F3;110D 1161 11BE;
+C9F4;C9F4;110D 1161 11BF;C9F4;110D 1161 11BF;
+C9F5;C9F5;110D 1161 11C0;C9F5;110D 1161 11C0;
+C9F6;C9F6;110D 1161 11C1;C9F6;110D 1161 11C1;
+C9F7;C9F7;110D 1161 11C2;C9F7;110D 1161 11C2;
+C9F8;C9F8;110D 1162;C9F8;110D 1162;
+C9F9;C9F9;110D 1162 11A8;C9F9;110D 1162 11A8;
+C9FA;C9FA;110D 1162 11A9;C9FA;110D 1162 11A9;
+C9FB;C9FB;110D 1162 11AA;C9FB;110D 1162 11AA;
+C9FC;C9FC;110D 1162 11AB;C9FC;110D 1162 11AB;
+C9FD;C9FD;110D 1162 11AC;C9FD;110D 1162 11AC;
+C9FE;C9FE;110D 1162 11AD;C9FE;110D 1162 11AD;
+C9FF;C9FF;110D 1162 11AE;C9FF;110D 1162 11AE;
+CA00;CA00;110D 1162 11AF;CA00;110D 1162 11AF;
+CA01;CA01;110D 1162 11B0;CA01;110D 1162 11B0;
+CA02;CA02;110D 1162 11B1;CA02;110D 1162 11B1;
+CA03;CA03;110D 1162 11B2;CA03;110D 1162 11B2;
+CA04;CA04;110D 1162 11B3;CA04;110D 1162 11B3;
+CA05;CA05;110D 1162 11B4;CA05;110D 1162 11B4;
+CA06;CA06;110D 1162 11B5;CA06;110D 1162 11B5;
+CA07;CA07;110D 1162 11B6;CA07;110D 1162 11B6;
+CA08;CA08;110D 1162 11B7;CA08;110D 1162 11B7;
+CA09;CA09;110D 1162 11B8;CA09;110D 1162 11B8;
+CA0A;CA0A;110D 1162 11B9;CA0A;110D 1162 11B9;
+CA0B;CA0B;110D 1162 11BA;CA0B;110D 1162 11BA;
+CA0C;CA0C;110D 1162 11BB;CA0C;110D 1162 11BB;
+CA0D;CA0D;110D 1162 11BC;CA0D;110D 1162 11BC;
+CA0E;CA0E;110D 1162 11BD;CA0E;110D 1162 11BD;
+CA0F;CA0F;110D 1162 11BE;CA0F;110D 1162 11BE;
+CA10;CA10;110D 1162 11BF;CA10;110D 1162 11BF;
+CA11;CA11;110D 1162 11C0;CA11;110D 1162 11C0;
+CA12;CA12;110D 1162 11C1;CA12;110D 1162 11C1;
+CA13;CA13;110D 1162 11C2;CA13;110D 1162 11C2;
+CA14;CA14;110D 1163;CA14;110D 1163;
+CA15;CA15;110D 1163 11A8;CA15;110D 1163 11A8;
+CA16;CA16;110D 1163 11A9;CA16;110D 1163 11A9;
+CA17;CA17;110D 1163 11AA;CA17;110D 1163 11AA;
+CA18;CA18;110D 1163 11AB;CA18;110D 1163 11AB;
+CA19;CA19;110D 1163 11AC;CA19;110D 1163 11AC;
+CA1A;CA1A;110D 1163 11AD;CA1A;110D 1163 11AD;
+CA1B;CA1B;110D 1163 11AE;CA1B;110D 1163 11AE;
+CA1C;CA1C;110D 1163 11AF;CA1C;110D 1163 11AF;
+CA1D;CA1D;110D 1163 11B0;CA1D;110D 1163 11B0;
+CA1E;CA1E;110D 1163 11B1;CA1E;110D 1163 11B1;
+CA1F;CA1F;110D 1163 11B2;CA1F;110D 1163 11B2;
+CA20;CA20;110D 1163 11B3;CA20;110D 1163 11B3;
+CA21;CA21;110D 1163 11B4;CA21;110D 1163 11B4;
+CA22;CA22;110D 1163 11B5;CA22;110D 1163 11B5;
+CA23;CA23;110D 1163 11B6;CA23;110D 1163 11B6;
+CA24;CA24;110D 1163 11B7;CA24;110D 1163 11B7;
+CA25;CA25;110D 1163 11B8;CA25;110D 1163 11B8;
+CA26;CA26;110D 1163 11B9;CA26;110D 1163 11B9;
+CA27;CA27;110D 1163 11BA;CA27;110D 1163 11BA;
+CA28;CA28;110D 1163 11BB;CA28;110D 1163 11BB;
+CA29;CA29;110D 1163 11BC;CA29;110D 1163 11BC;
+CA2A;CA2A;110D 1163 11BD;CA2A;110D 1163 11BD;
+CA2B;CA2B;110D 1163 11BE;CA2B;110D 1163 11BE;
+CA2C;CA2C;110D 1163 11BF;CA2C;110D 1163 11BF;
+CA2D;CA2D;110D 1163 11C0;CA2D;110D 1163 11C0;
+CA2E;CA2E;110D 1163 11C1;CA2E;110D 1163 11C1;
+CA2F;CA2F;110D 1163 11C2;CA2F;110D 1163 11C2;
+CA30;CA30;110D 1164;CA30;110D 1164;
+CA31;CA31;110D 1164 11A8;CA31;110D 1164 11A8;
+CA32;CA32;110D 1164 11A9;CA32;110D 1164 11A9;
+CA33;CA33;110D 1164 11AA;CA33;110D 1164 11AA;
+CA34;CA34;110D 1164 11AB;CA34;110D 1164 11AB;
+CA35;CA35;110D 1164 11AC;CA35;110D 1164 11AC;
+CA36;CA36;110D 1164 11AD;CA36;110D 1164 11AD;
+CA37;CA37;110D 1164 11AE;CA37;110D 1164 11AE;
+CA38;CA38;110D 1164 11AF;CA38;110D 1164 11AF;
+CA39;CA39;110D 1164 11B0;CA39;110D 1164 11B0;
+CA3A;CA3A;110D 1164 11B1;CA3A;110D 1164 11B1;
+CA3B;CA3B;110D 1164 11B2;CA3B;110D 1164 11B2;
+CA3C;CA3C;110D 1164 11B3;CA3C;110D 1164 11B3;
+CA3D;CA3D;110D 1164 11B4;CA3D;110D 1164 11B4;
+CA3E;CA3E;110D 1164 11B5;CA3E;110D 1164 11B5;
+CA3F;CA3F;110D 1164 11B6;CA3F;110D 1164 11B6;
+CA40;CA40;110D 1164 11B7;CA40;110D 1164 11B7;
+CA41;CA41;110D 1164 11B8;CA41;110D 1164 11B8;
+CA42;CA42;110D 1164 11B9;CA42;110D 1164 11B9;
+CA43;CA43;110D 1164 11BA;CA43;110D 1164 11BA;
+CA44;CA44;110D 1164 11BB;CA44;110D 1164 11BB;
+CA45;CA45;110D 1164 11BC;CA45;110D 1164 11BC;
+CA46;CA46;110D 1164 11BD;CA46;110D 1164 11BD;
+CA47;CA47;110D 1164 11BE;CA47;110D 1164 11BE;
+CA48;CA48;110D 1164 11BF;CA48;110D 1164 11BF;
+CA49;CA49;110D 1164 11C0;CA49;110D 1164 11C0;
+CA4A;CA4A;110D 1164 11C1;CA4A;110D 1164 11C1;
+CA4B;CA4B;110D 1164 11C2;CA4B;110D 1164 11C2;
+CA4C;CA4C;110D 1165;CA4C;110D 1165;
+CA4D;CA4D;110D 1165 11A8;CA4D;110D 1165 11A8;
+CA4E;CA4E;110D 1165 11A9;CA4E;110D 1165 11A9;
+CA4F;CA4F;110D 1165 11AA;CA4F;110D 1165 11AA;
+CA50;CA50;110D 1165 11AB;CA50;110D 1165 11AB;
+CA51;CA51;110D 1165 11AC;CA51;110D 1165 11AC;
+CA52;CA52;110D 1165 11AD;CA52;110D 1165 11AD;
+CA53;CA53;110D 1165 11AE;CA53;110D 1165 11AE;
+CA54;CA54;110D 1165 11AF;CA54;110D 1165 11AF;
+CA55;CA55;110D 1165 11B0;CA55;110D 1165 11B0;
+CA56;CA56;110D 1165 11B1;CA56;110D 1165 11B1;
+CA57;CA57;110D 1165 11B2;CA57;110D 1165 11B2;
+CA58;CA58;110D 1165 11B3;CA58;110D 1165 11B3;
+CA59;CA59;110D 1165 11B4;CA59;110D 1165 11B4;
+CA5A;CA5A;110D 1165 11B5;CA5A;110D 1165 11B5;
+CA5B;CA5B;110D 1165 11B6;CA5B;110D 1165 11B6;
+CA5C;CA5C;110D 1165 11B7;CA5C;110D 1165 11B7;
+CA5D;CA5D;110D 1165 11B8;CA5D;110D 1165 11B8;
+CA5E;CA5E;110D 1165 11B9;CA5E;110D 1165 11B9;
+CA5F;CA5F;110D 1165 11BA;CA5F;110D 1165 11BA;
+CA60;CA60;110D 1165 11BB;CA60;110D 1165 11BB;
+CA61;CA61;110D 1165 11BC;CA61;110D 1165 11BC;
+CA62;CA62;110D 1165 11BD;CA62;110D 1165 11BD;
+CA63;CA63;110D 1165 11BE;CA63;110D 1165 11BE;
+CA64;CA64;110D 1165 11BF;CA64;110D 1165 11BF;
+CA65;CA65;110D 1165 11C0;CA65;110D 1165 11C0;
+CA66;CA66;110D 1165 11C1;CA66;110D 1165 11C1;
+CA67;CA67;110D 1165 11C2;CA67;110D 1165 11C2;
+CA68;CA68;110D 1166;CA68;110D 1166;
+CA69;CA69;110D 1166 11A8;CA69;110D 1166 11A8;
+CA6A;CA6A;110D 1166 11A9;CA6A;110D 1166 11A9;
+CA6B;CA6B;110D 1166 11AA;CA6B;110D 1166 11AA;
+CA6C;CA6C;110D 1166 11AB;CA6C;110D 1166 11AB;
+CA6D;CA6D;110D 1166 11AC;CA6D;110D 1166 11AC;
+CA6E;CA6E;110D 1166 11AD;CA6E;110D 1166 11AD;
+CA6F;CA6F;110D 1166 11AE;CA6F;110D 1166 11AE;
+CA70;CA70;110D 1166 11AF;CA70;110D 1166 11AF;
+CA71;CA71;110D 1166 11B0;CA71;110D 1166 11B0;
+CA72;CA72;110D 1166 11B1;CA72;110D 1166 11B1;
+CA73;CA73;110D 1166 11B2;CA73;110D 1166 11B2;
+CA74;CA74;110D 1166 11B3;CA74;110D 1166 11B3;
+CA75;CA75;110D 1166 11B4;CA75;110D 1166 11B4;
+CA76;CA76;110D 1166 11B5;CA76;110D 1166 11B5;
+CA77;CA77;110D 1166 11B6;CA77;110D 1166 11B6;
+CA78;CA78;110D 1166 11B7;CA78;110D 1166 11B7;
+CA79;CA79;110D 1166 11B8;CA79;110D 1166 11B8;
+CA7A;CA7A;110D 1166 11B9;CA7A;110D 1166 11B9;
+CA7B;CA7B;110D 1166 11BA;CA7B;110D 1166 11BA;
+CA7C;CA7C;110D 1166 11BB;CA7C;110D 1166 11BB;
+CA7D;CA7D;110D 1166 11BC;CA7D;110D 1166 11BC;
+CA7E;CA7E;110D 1166 11BD;CA7E;110D 1166 11BD;
+CA7F;CA7F;110D 1166 11BE;CA7F;110D 1166 11BE;
+CA80;CA80;110D 1166 11BF;CA80;110D 1166 11BF;
+CA81;CA81;110D 1166 11C0;CA81;110D 1166 11C0;
+CA82;CA82;110D 1166 11C1;CA82;110D 1166 11C1;
+CA83;CA83;110D 1166 11C2;CA83;110D 1166 11C2;
+CA84;CA84;110D 1167;CA84;110D 1167;
+CA85;CA85;110D 1167 11A8;CA85;110D 1167 11A8;
+CA86;CA86;110D 1167 11A9;CA86;110D 1167 11A9;
+CA87;CA87;110D 1167 11AA;CA87;110D 1167 11AA;
+CA88;CA88;110D 1167 11AB;CA88;110D 1167 11AB;
+CA89;CA89;110D 1167 11AC;CA89;110D 1167 11AC;
+CA8A;CA8A;110D 1167 11AD;CA8A;110D 1167 11AD;
+CA8B;CA8B;110D 1167 11AE;CA8B;110D 1167 11AE;
+CA8C;CA8C;110D 1167 11AF;CA8C;110D 1167 11AF;
+CA8D;CA8D;110D 1167 11B0;CA8D;110D 1167 11B0;
+CA8E;CA8E;110D 1167 11B1;CA8E;110D 1167 11B1;
+CA8F;CA8F;110D 1167 11B2;CA8F;110D 1167 11B2;
+CA90;CA90;110D 1167 11B3;CA90;110D 1167 11B3;
+CA91;CA91;110D 1167 11B4;CA91;110D 1167 11B4;
+CA92;CA92;110D 1167 11B5;CA92;110D 1167 11B5;
+CA93;CA93;110D 1167 11B6;CA93;110D 1167 11B6;
+CA94;CA94;110D 1167 11B7;CA94;110D 1167 11B7;
+CA95;CA95;110D 1167 11B8;CA95;110D 1167 11B8;
+CA96;CA96;110D 1167 11B9;CA96;110D 1167 11B9;
+CA97;CA97;110D 1167 11BA;CA97;110D 1167 11BA;
+CA98;CA98;110D 1167 11BB;CA98;110D 1167 11BB;
+CA99;CA99;110D 1167 11BC;CA99;110D 1167 11BC;
+CA9A;CA9A;110D 1167 11BD;CA9A;110D 1167 11BD;
+CA9B;CA9B;110D 1167 11BE;CA9B;110D 1167 11BE;
+CA9C;CA9C;110D 1167 11BF;CA9C;110D 1167 11BF;
+CA9D;CA9D;110D 1167 11C0;CA9D;110D 1167 11C0;
+CA9E;CA9E;110D 1167 11C1;CA9E;110D 1167 11C1;
+CA9F;CA9F;110D 1167 11C2;CA9F;110D 1167 11C2;
+CAA0;CAA0;110D 1168;CAA0;110D 1168;
+CAA1;CAA1;110D 1168 11A8;CAA1;110D 1168 11A8;
+CAA2;CAA2;110D 1168 11A9;CAA2;110D 1168 11A9;
+CAA3;CAA3;110D 1168 11AA;CAA3;110D 1168 11AA;
+CAA4;CAA4;110D 1168 11AB;CAA4;110D 1168 11AB;
+CAA5;CAA5;110D 1168 11AC;CAA5;110D 1168 11AC;
+CAA6;CAA6;110D 1168 11AD;CAA6;110D 1168 11AD;
+CAA7;CAA7;110D 1168 11AE;CAA7;110D 1168 11AE;
+CAA8;CAA8;110D 1168 11AF;CAA8;110D 1168 11AF;
+CAA9;CAA9;110D 1168 11B0;CAA9;110D 1168 11B0;
+CAAA;CAAA;110D 1168 11B1;CAAA;110D 1168 11B1;
+CAAB;CAAB;110D 1168 11B2;CAAB;110D 1168 11B2;
+CAAC;CAAC;110D 1168 11B3;CAAC;110D 1168 11B3;
+CAAD;CAAD;110D 1168 11B4;CAAD;110D 1168 11B4;
+CAAE;CAAE;110D 1168 11B5;CAAE;110D 1168 11B5;
+CAAF;CAAF;110D 1168 11B6;CAAF;110D 1168 11B6;
+CAB0;CAB0;110D 1168 11B7;CAB0;110D 1168 11B7;
+CAB1;CAB1;110D 1168 11B8;CAB1;110D 1168 11B8;
+CAB2;CAB2;110D 1168 11B9;CAB2;110D 1168 11B9;
+CAB3;CAB3;110D 1168 11BA;CAB3;110D 1168 11BA;
+CAB4;CAB4;110D 1168 11BB;CAB4;110D 1168 11BB;
+CAB5;CAB5;110D 1168 11BC;CAB5;110D 1168 11BC;
+CAB6;CAB6;110D 1168 11BD;CAB6;110D 1168 11BD;
+CAB7;CAB7;110D 1168 11BE;CAB7;110D 1168 11BE;
+CAB8;CAB8;110D 1168 11BF;CAB8;110D 1168 11BF;
+CAB9;CAB9;110D 1168 11C0;CAB9;110D 1168 11C0;
+CABA;CABA;110D 1168 11C1;CABA;110D 1168 11C1;
+CABB;CABB;110D 1168 11C2;CABB;110D 1168 11C2;
+CABC;CABC;110D 1169;CABC;110D 1169;
+CABD;CABD;110D 1169 11A8;CABD;110D 1169 11A8;
+CABE;CABE;110D 1169 11A9;CABE;110D 1169 11A9;
+CABF;CABF;110D 1169 11AA;CABF;110D 1169 11AA;
+CAC0;CAC0;110D 1169 11AB;CAC0;110D 1169 11AB;
+CAC1;CAC1;110D 1169 11AC;CAC1;110D 1169 11AC;
+CAC2;CAC2;110D 1169 11AD;CAC2;110D 1169 11AD;
+CAC3;CAC3;110D 1169 11AE;CAC3;110D 1169 11AE;
+CAC4;CAC4;110D 1169 11AF;CAC4;110D 1169 11AF;
+CAC5;CAC5;110D 1169 11B0;CAC5;110D 1169 11B0;
+CAC6;CAC6;110D 1169 11B1;CAC6;110D 1169 11B1;
+CAC7;CAC7;110D 1169 11B2;CAC7;110D 1169 11B2;
+CAC8;CAC8;110D 1169 11B3;CAC8;110D 1169 11B3;
+CAC9;CAC9;110D 1169 11B4;CAC9;110D 1169 11B4;
+CACA;CACA;110D 1169 11B5;CACA;110D 1169 11B5;
+CACB;CACB;110D 1169 11B6;CACB;110D 1169 11B6;
+CACC;CACC;110D 1169 11B7;CACC;110D 1169 11B7;
+CACD;CACD;110D 1169 11B8;CACD;110D 1169 11B8;
+CACE;CACE;110D 1169 11B9;CACE;110D 1169 11B9;
+CACF;CACF;110D 1169 11BA;CACF;110D 1169 11BA;
+CAD0;CAD0;110D 1169 11BB;CAD0;110D 1169 11BB;
+CAD1;CAD1;110D 1169 11BC;CAD1;110D 1169 11BC;
+CAD2;CAD2;110D 1169 11BD;CAD2;110D 1169 11BD;
+CAD3;CAD3;110D 1169 11BE;CAD3;110D 1169 11BE;
+CAD4;CAD4;110D 1169 11BF;CAD4;110D 1169 11BF;
+CAD5;CAD5;110D 1169 11C0;CAD5;110D 1169 11C0;
+CAD6;CAD6;110D 1169 11C1;CAD6;110D 1169 11C1;
+CAD7;CAD7;110D 1169 11C2;CAD7;110D 1169 11C2;
+CAD8;CAD8;110D 116A;CAD8;110D 116A;
+CAD9;CAD9;110D 116A 11A8;CAD9;110D 116A 11A8;
+CADA;CADA;110D 116A 11A9;CADA;110D 116A 11A9;
+CADB;CADB;110D 116A 11AA;CADB;110D 116A 11AA;
+CADC;CADC;110D 116A 11AB;CADC;110D 116A 11AB;
+CADD;CADD;110D 116A 11AC;CADD;110D 116A 11AC;
+CADE;CADE;110D 116A 11AD;CADE;110D 116A 11AD;
+CADF;CADF;110D 116A 11AE;CADF;110D 116A 11AE;
+CAE0;CAE0;110D 116A 11AF;CAE0;110D 116A 11AF;
+CAE1;CAE1;110D 116A 11B0;CAE1;110D 116A 11B0;
+CAE2;CAE2;110D 116A 11B1;CAE2;110D 116A 11B1;
+CAE3;CAE3;110D 116A 11B2;CAE3;110D 116A 11B2;
+CAE4;CAE4;110D 116A 11B3;CAE4;110D 116A 11B3;
+CAE5;CAE5;110D 116A 11B4;CAE5;110D 116A 11B4;
+CAE6;CAE6;110D 116A 11B5;CAE6;110D 116A 11B5;
+CAE7;CAE7;110D 116A 11B6;CAE7;110D 116A 11B6;
+CAE8;CAE8;110D 116A 11B7;CAE8;110D 116A 11B7;
+CAE9;CAE9;110D 116A 11B8;CAE9;110D 116A 11B8;
+CAEA;CAEA;110D 116A 11B9;CAEA;110D 116A 11B9;
+CAEB;CAEB;110D 116A 11BA;CAEB;110D 116A 11BA;
+CAEC;CAEC;110D 116A 11BB;CAEC;110D 116A 11BB;
+CAED;CAED;110D 116A 11BC;CAED;110D 116A 11BC;
+CAEE;CAEE;110D 116A 11BD;CAEE;110D 116A 11BD;
+CAEF;CAEF;110D 116A 11BE;CAEF;110D 116A 11BE;
+CAF0;CAF0;110D 116A 11BF;CAF0;110D 116A 11BF;
+CAF1;CAF1;110D 116A 11C0;CAF1;110D 116A 11C0;
+CAF2;CAF2;110D 116A 11C1;CAF2;110D 116A 11C1;
+CAF3;CAF3;110D 116A 11C2;CAF3;110D 116A 11C2;
+CAF4;CAF4;110D 116B;CAF4;110D 116B;
+CAF5;CAF5;110D 116B 11A8;CAF5;110D 116B 11A8;
+CAF6;CAF6;110D 116B 11A9;CAF6;110D 116B 11A9;
+CAF7;CAF7;110D 116B 11AA;CAF7;110D 116B 11AA;
+CAF8;CAF8;110D 116B 11AB;CAF8;110D 116B 11AB;
+CAF9;CAF9;110D 116B 11AC;CAF9;110D 116B 11AC;
+CAFA;CAFA;110D 116B 11AD;CAFA;110D 116B 11AD;
+CAFB;CAFB;110D 116B 11AE;CAFB;110D 116B 11AE;
+CAFC;CAFC;110D 116B 11AF;CAFC;110D 116B 11AF;
+CAFD;CAFD;110D 116B 11B0;CAFD;110D 116B 11B0;
+CAFE;CAFE;110D 116B 11B1;CAFE;110D 116B 11B1;
+CAFF;CAFF;110D 116B 11B2;CAFF;110D 116B 11B2;
+CB00;CB00;110D 116B 11B3;CB00;110D 116B 11B3;
+CB01;CB01;110D 116B 11B4;CB01;110D 116B 11B4;
+CB02;CB02;110D 116B 11B5;CB02;110D 116B 11B5;
+CB03;CB03;110D 116B 11B6;CB03;110D 116B 11B6;
+CB04;CB04;110D 116B 11B7;CB04;110D 116B 11B7;
+CB05;CB05;110D 116B 11B8;CB05;110D 116B 11B8;
+CB06;CB06;110D 116B 11B9;CB06;110D 116B 11B9;
+CB07;CB07;110D 116B 11BA;CB07;110D 116B 11BA;
+CB08;CB08;110D 116B 11BB;CB08;110D 116B 11BB;
+CB09;CB09;110D 116B 11BC;CB09;110D 116B 11BC;
+CB0A;CB0A;110D 116B 11BD;CB0A;110D 116B 11BD;
+CB0B;CB0B;110D 116B 11BE;CB0B;110D 116B 11BE;
+CB0C;CB0C;110D 116B 11BF;CB0C;110D 116B 11BF;
+CB0D;CB0D;110D 116B 11C0;CB0D;110D 116B 11C0;
+CB0E;CB0E;110D 116B 11C1;CB0E;110D 116B 11C1;
+CB0F;CB0F;110D 116B 11C2;CB0F;110D 116B 11C2;
+CB10;CB10;110D 116C;CB10;110D 116C;
+CB11;CB11;110D 116C 11A8;CB11;110D 116C 11A8;
+CB12;CB12;110D 116C 11A9;CB12;110D 116C 11A9;
+CB13;CB13;110D 116C 11AA;CB13;110D 116C 11AA;
+CB14;CB14;110D 116C 11AB;CB14;110D 116C 11AB;
+CB15;CB15;110D 116C 11AC;CB15;110D 116C 11AC;
+CB16;CB16;110D 116C 11AD;CB16;110D 116C 11AD;
+CB17;CB17;110D 116C 11AE;CB17;110D 116C 11AE;
+CB18;CB18;110D 116C 11AF;CB18;110D 116C 11AF;
+CB19;CB19;110D 116C 11B0;CB19;110D 116C 11B0;
+CB1A;CB1A;110D 116C 11B1;CB1A;110D 116C 11B1;
+CB1B;CB1B;110D 116C 11B2;CB1B;110D 116C 11B2;
+CB1C;CB1C;110D 116C 11B3;CB1C;110D 116C 11B3;
+CB1D;CB1D;110D 116C 11B4;CB1D;110D 116C 11B4;
+CB1E;CB1E;110D 116C 11B5;CB1E;110D 116C 11B5;
+CB1F;CB1F;110D 116C 11B6;CB1F;110D 116C 11B6;
+CB20;CB20;110D 116C 11B7;CB20;110D 116C 11B7;
+CB21;CB21;110D 116C 11B8;CB21;110D 116C 11B8;
+CB22;CB22;110D 116C 11B9;CB22;110D 116C 11B9;
+CB23;CB23;110D 116C 11BA;CB23;110D 116C 11BA;
+CB24;CB24;110D 116C 11BB;CB24;110D 116C 11BB;
+CB25;CB25;110D 116C 11BC;CB25;110D 116C 11BC;
+CB26;CB26;110D 116C 11BD;CB26;110D 116C 11BD;
+CB27;CB27;110D 116C 11BE;CB27;110D 116C 11BE;
+CB28;CB28;110D 116C 11BF;CB28;110D 116C 11BF;
+CB29;CB29;110D 116C 11C0;CB29;110D 116C 11C0;
+CB2A;CB2A;110D 116C 11C1;CB2A;110D 116C 11C1;
+CB2B;CB2B;110D 116C 11C2;CB2B;110D 116C 11C2;
+CB2C;CB2C;110D 116D;CB2C;110D 116D;
+CB2D;CB2D;110D 116D 11A8;CB2D;110D 116D 11A8;
+CB2E;CB2E;110D 116D 11A9;CB2E;110D 116D 11A9;
+CB2F;CB2F;110D 116D 11AA;CB2F;110D 116D 11AA;
+CB30;CB30;110D 116D 11AB;CB30;110D 116D 11AB;
+CB31;CB31;110D 116D 11AC;CB31;110D 116D 11AC;
+CB32;CB32;110D 116D 11AD;CB32;110D 116D 11AD;
+CB33;CB33;110D 116D 11AE;CB33;110D 116D 11AE;
+CB34;CB34;110D 116D 11AF;CB34;110D 116D 11AF;
+CB35;CB35;110D 116D 11B0;CB35;110D 116D 11B0;
+CB36;CB36;110D 116D 11B1;CB36;110D 116D 11B1;
+CB37;CB37;110D 116D 11B2;CB37;110D 116D 11B2;
+CB38;CB38;110D 116D 11B3;CB38;110D 116D 11B3;
+CB39;CB39;110D 116D 11B4;CB39;110D 116D 11B4;
+CB3A;CB3A;110D 116D 11B5;CB3A;110D 116D 11B5;
+CB3B;CB3B;110D 116D 11B6;CB3B;110D 116D 11B6;
+CB3C;CB3C;110D 116D 11B7;CB3C;110D 116D 11B7;
+CB3D;CB3D;110D 116D 11B8;CB3D;110D 116D 11B8;
+CB3E;CB3E;110D 116D 11B9;CB3E;110D 116D 11B9;
+CB3F;CB3F;110D 116D 11BA;CB3F;110D 116D 11BA;
+CB40;CB40;110D 116D 11BB;CB40;110D 116D 11BB;
+CB41;CB41;110D 116D 11BC;CB41;110D 116D 11BC;
+CB42;CB42;110D 116D 11BD;CB42;110D 116D 11BD;
+CB43;CB43;110D 116D 11BE;CB43;110D 116D 11BE;
+CB44;CB44;110D 116D 11BF;CB44;110D 116D 11BF;
+CB45;CB45;110D 116D 11C0;CB45;110D 116D 11C0;
+CB46;CB46;110D 116D 11C1;CB46;110D 116D 11C1;
+CB47;CB47;110D 116D 11C2;CB47;110D 116D 11C2;
+CB48;CB48;110D 116E;CB48;110D 116E;
+CB49;CB49;110D 116E 11A8;CB49;110D 116E 11A8;
+CB4A;CB4A;110D 116E 11A9;CB4A;110D 116E 11A9;
+CB4B;CB4B;110D 116E 11AA;CB4B;110D 116E 11AA;
+CB4C;CB4C;110D 116E 11AB;CB4C;110D 116E 11AB;
+CB4D;CB4D;110D 116E 11AC;CB4D;110D 116E 11AC;
+CB4E;CB4E;110D 116E 11AD;CB4E;110D 116E 11AD;
+CB4F;CB4F;110D 116E 11AE;CB4F;110D 116E 11AE;
+CB50;CB50;110D 116E 11AF;CB50;110D 116E 11AF;
+CB51;CB51;110D 116E 11B0;CB51;110D 116E 11B0;
+CB52;CB52;110D 116E 11B1;CB52;110D 116E 11B1;
+CB53;CB53;110D 116E 11B2;CB53;110D 116E 11B2;
+CB54;CB54;110D 116E 11B3;CB54;110D 116E 11B3;
+CB55;CB55;110D 116E 11B4;CB55;110D 116E 11B4;
+CB56;CB56;110D 116E 11B5;CB56;110D 116E 11B5;
+CB57;CB57;110D 116E 11B6;CB57;110D 116E 11B6;
+CB58;CB58;110D 116E 11B7;CB58;110D 116E 11B7;
+CB59;CB59;110D 116E 11B8;CB59;110D 116E 11B8;
+CB5A;CB5A;110D 116E 11B9;CB5A;110D 116E 11B9;
+CB5B;CB5B;110D 116E 11BA;CB5B;110D 116E 11BA;
+CB5C;CB5C;110D 116E 11BB;CB5C;110D 116E 11BB;
+CB5D;CB5D;110D 116E 11BC;CB5D;110D 116E 11BC;
+CB5E;CB5E;110D 116E 11BD;CB5E;110D 116E 11BD;
+CB5F;CB5F;110D 116E 11BE;CB5F;110D 116E 11BE;
+CB60;CB60;110D 116E 11BF;CB60;110D 116E 11BF;
+CB61;CB61;110D 116E 11C0;CB61;110D 116E 11C0;
+CB62;CB62;110D 116E 11C1;CB62;110D 116E 11C1;
+CB63;CB63;110D 116E 11C2;CB63;110D 116E 11C2;
+CB64;CB64;110D 116F;CB64;110D 116F;
+CB65;CB65;110D 116F 11A8;CB65;110D 116F 11A8;
+CB66;CB66;110D 116F 11A9;CB66;110D 116F 11A9;
+CB67;CB67;110D 116F 11AA;CB67;110D 116F 11AA;
+CB68;CB68;110D 116F 11AB;CB68;110D 116F 11AB;
+CB69;CB69;110D 116F 11AC;CB69;110D 116F 11AC;
+CB6A;CB6A;110D 116F 11AD;CB6A;110D 116F 11AD;
+CB6B;CB6B;110D 116F 11AE;CB6B;110D 116F 11AE;
+CB6C;CB6C;110D 116F 11AF;CB6C;110D 116F 11AF;
+CB6D;CB6D;110D 116F 11B0;CB6D;110D 116F 11B0;
+CB6E;CB6E;110D 116F 11B1;CB6E;110D 116F 11B1;
+CB6F;CB6F;110D 116F 11B2;CB6F;110D 116F 11B2;
+CB70;CB70;110D 116F 11B3;CB70;110D 116F 11B3;
+CB71;CB71;110D 116F 11B4;CB71;110D 116F 11B4;
+CB72;CB72;110D 116F 11B5;CB72;110D 116F 11B5;
+CB73;CB73;110D 116F 11B6;CB73;110D 116F 11B6;
+CB74;CB74;110D 116F 11B7;CB74;110D 116F 11B7;
+CB75;CB75;110D 116F 11B8;CB75;110D 116F 11B8;
+CB76;CB76;110D 116F 11B9;CB76;110D 116F 11B9;
+CB77;CB77;110D 116F 11BA;CB77;110D 116F 11BA;
+CB78;CB78;110D 116F 11BB;CB78;110D 116F 11BB;
+CB79;CB79;110D 116F 11BC;CB79;110D 116F 11BC;
+CB7A;CB7A;110D 116F 11BD;CB7A;110D 116F 11BD;
+CB7B;CB7B;110D 116F 11BE;CB7B;110D 116F 11BE;
+CB7C;CB7C;110D 116F 11BF;CB7C;110D 116F 11BF;
+CB7D;CB7D;110D 116F 11C0;CB7D;110D 116F 11C0;
+CB7E;CB7E;110D 116F 11C1;CB7E;110D 116F 11C1;
+CB7F;CB7F;110D 116F 11C2;CB7F;110D 116F 11C2;
+CB80;CB80;110D 1170;CB80;110D 1170;
+CB81;CB81;110D 1170 11A8;CB81;110D 1170 11A8;
+CB82;CB82;110D 1170 11A9;CB82;110D 1170 11A9;
+CB83;CB83;110D 1170 11AA;CB83;110D 1170 11AA;
+CB84;CB84;110D 1170 11AB;CB84;110D 1170 11AB;
+CB85;CB85;110D 1170 11AC;CB85;110D 1170 11AC;
+CB86;CB86;110D 1170 11AD;CB86;110D 1170 11AD;
+CB87;CB87;110D 1170 11AE;CB87;110D 1170 11AE;
+CB88;CB88;110D 1170 11AF;CB88;110D 1170 11AF;
+CB89;CB89;110D 1170 11B0;CB89;110D 1170 11B0;
+CB8A;CB8A;110D 1170 11B1;CB8A;110D 1170 11B1;
+CB8B;CB8B;110D 1170 11B2;CB8B;110D 1170 11B2;
+CB8C;CB8C;110D 1170 11B3;CB8C;110D 1170 11B3;
+CB8D;CB8D;110D 1170 11B4;CB8D;110D 1170 11B4;
+CB8E;CB8E;110D 1170 11B5;CB8E;110D 1170 11B5;
+CB8F;CB8F;110D 1170 11B6;CB8F;110D 1170 11B6;
+CB90;CB90;110D 1170 11B7;CB90;110D 1170 11B7;
+CB91;CB91;110D 1170 11B8;CB91;110D 1170 11B8;
+CB92;CB92;110D 1170 11B9;CB92;110D 1170 11B9;
+CB93;CB93;110D 1170 11BA;CB93;110D 1170 11BA;
+CB94;CB94;110D 1170 11BB;CB94;110D 1170 11BB;
+CB95;CB95;110D 1170 11BC;CB95;110D 1170 11BC;
+CB96;CB96;110D 1170 11BD;CB96;110D 1170 11BD;
+CB97;CB97;110D 1170 11BE;CB97;110D 1170 11BE;
+CB98;CB98;110D 1170 11BF;CB98;110D 1170 11BF;
+CB99;CB99;110D 1170 11C0;CB99;110D 1170 11C0;
+CB9A;CB9A;110D 1170 11C1;CB9A;110D 1170 11C1;
+CB9B;CB9B;110D 1170 11C2;CB9B;110D 1170 11C2;
+CB9C;CB9C;110D 1171;CB9C;110D 1171;
+CB9D;CB9D;110D 1171 11A8;CB9D;110D 1171 11A8;
+CB9E;CB9E;110D 1171 11A9;CB9E;110D 1171 11A9;
+CB9F;CB9F;110D 1171 11AA;CB9F;110D 1171 11AA;
+CBA0;CBA0;110D 1171 11AB;CBA0;110D 1171 11AB;
+CBA1;CBA1;110D 1171 11AC;CBA1;110D 1171 11AC;
+CBA2;CBA2;110D 1171 11AD;CBA2;110D 1171 11AD;
+CBA3;CBA3;110D 1171 11AE;CBA3;110D 1171 11AE;
+CBA4;CBA4;110D 1171 11AF;CBA4;110D 1171 11AF;
+CBA5;CBA5;110D 1171 11B0;CBA5;110D 1171 11B0;
+CBA6;CBA6;110D 1171 11B1;CBA6;110D 1171 11B1;
+CBA7;CBA7;110D 1171 11B2;CBA7;110D 1171 11B2;
+CBA8;CBA8;110D 1171 11B3;CBA8;110D 1171 11B3;
+CBA9;CBA9;110D 1171 11B4;CBA9;110D 1171 11B4;
+CBAA;CBAA;110D 1171 11B5;CBAA;110D 1171 11B5;
+CBAB;CBAB;110D 1171 11B6;CBAB;110D 1171 11B6;
+CBAC;CBAC;110D 1171 11B7;CBAC;110D 1171 11B7;
+CBAD;CBAD;110D 1171 11B8;CBAD;110D 1171 11B8;
+CBAE;CBAE;110D 1171 11B9;CBAE;110D 1171 11B9;
+CBAF;CBAF;110D 1171 11BA;CBAF;110D 1171 11BA;
+CBB0;CBB0;110D 1171 11BB;CBB0;110D 1171 11BB;
+CBB1;CBB1;110D 1171 11BC;CBB1;110D 1171 11BC;
+CBB2;CBB2;110D 1171 11BD;CBB2;110D 1171 11BD;
+CBB3;CBB3;110D 1171 11BE;CBB3;110D 1171 11BE;
+CBB4;CBB4;110D 1171 11BF;CBB4;110D 1171 11BF;
+CBB5;CBB5;110D 1171 11C0;CBB5;110D 1171 11C0;
+CBB6;CBB6;110D 1171 11C1;CBB6;110D 1171 11C1;
+CBB7;CBB7;110D 1171 11C2;CBB7;110D 1171 11C2;
+CBB8;CBB8;110D 1172;CBB8;110D 1172;
+CBB9;CBB9;110D 1172 11A8;CBB9;110D 1172 11A8;
+CBBA;CBBA;110D 1172 11A9;CBBA;110D 1172 11A9;
+CBBB;CBBB;110D 1172 11AA;CBBB;110D 1172 11AA;
+CBBC;CBBC;110D 1172 11AB;CBBC;110D 1172 11AB;
+CBBD;CBBD;110D 1172 11AC;CBBD;110D 1172 11AC;
+CBBE;CBBE;110D 1172 11AD;CBBE;110D 1172 11AD;
+CBBF;CBBF;110D 1172 11AE;CBBF;110D 1172 11AE;
+CBC0;CBC0;110D 1172 11AF;CBC0;110D 1172 11AF;
+CBC1;CBC1;110D 1172 11B0;CBC1;110D 1172 11B0;
+CBC2;CBC2;110D 1172 11B1;CBC2;110D 1172 11B1;
+CBC3;CBC3;110D 1172 11B2;CBC3;110D 1172 11B2;
+CBC4;CBC4;110D 1172 11B3;CBC4;110D 1172 11B3;
+CBC5;CBC5;110D 1172 11B4;CBC5;110D 1172 11B4;
+CBC6;CBC6;110D 1172 11B5;CBC6;110D 1172 11B5;
+CBC7;CBC7;110D 1172 11B6;CBC7;110D 1172 11B6;
+CBC8;CBC8;110D 1172 11B7;CBC8;110D 1172 11B7;
+CBC9;CBC9;110D 1172 11B8;CBC9;110D 1172 11B8;
+CBCA;CBCA;110D 1172 11B9;CBCA;110D 1172 11B9;
+CBCB;CBCB;110D 1172 11BA;CBCB;110D 1172 11BA;
+CBCC;CBCC;110D 1172 11BB;CBCC;110D 1172 11BB;
+CBCD;CBCD;110D 1172 11BC;CBCD;110D 1172 11BC;
+CBCE;CBCE;110D 1172 11BD;CBCE;110D 1172 11BD;
+CBCF;CBCF;110D 1172 11BE;CBCF;110D 1172 11BE;
+CBD0;CBD0;110D 1172 11BF;CBD0;110D 1172 11BF;
+CBD1;CBD1;110D 1172 11C0;CBD1;110D 1172 11C0;
+CBD2;CBD2;110D 1172 11C1;CBD2;110D 1172 11C1;
+CBD3;CBD3;110D 1172 11C2;CBD3;110D 1172 11C2;
+CBD4;CBD4;110D 1173;CBD4;110D 1173;
+CBD5;CBD5;110D 1173 11A8;CBD5;110D 1173 11A8;
+CBD6;CBD6;110D 1173 11A9;CBD6;110D 1173 11A9;
+CBD7;CBD7;110D 1173 11AA;CBD7;110D 1173 11AA;
+CBD8;CBD8;110D 1173 11AB;CBD8;110D 1173 11AB;
+CBD9;CBD9;110D 1173 11AC;CBD9;110D 1173 11AC;
+CBDA;CBDA;110D 1173 11AD;CBDA;110D 1173 11AD;
+CBDB;CBDB;110D 1173 11AE;CBDB;110D 1173 11AE;
+CBDC;CBDC;110D 1173 11AF;CBDC;110D 1173 11AF;
+CBDD;CBDD;110D 1173 11B0;CBDD;110D 1173 11B0;
+CBDE;CBDE;110D 1173 11B1;CBDE;110D 1173 11B1;
+CBDF;CBDF;110D 1173 11B2;CBDF;110D 1173 11B2;
+CBE0;CBE0;110D 1173 11B3;CBE0;110D 1173 11B3;
+CBE1;CBE1;110D 1173 11B4;CBE1;110D 1173 11B4;
+CBE2;CBE2;110D 1173 11B5;CBE2;110D 1173 11B5;
+CBE3;CBE3;110D 1173 11B6;CBE3;110D 1173 11B6;
+CBE4;CBE4;110D 1173 11B7;CBE4;110D 1173 11B7;
+CBE5;CBE5;110D 1173 11B8;CBE5;110D 1173 11B8;
+CBE6;CBE6;110D 1173 11B9;CBE6;110D 1173 11B9;
+CBE7;CBE7;110D 1173 11BA;CBE7;110D 1173 11BA;
+CBE8;CBE8;110D 1173 11BB;CBE8;110D 1173 11BB;
+CBE9;CBE9;110D 1173 11BC;CBE9;110D 1173 11BC;
+CBEA;CBEA;110D 1173 11BD;CBEA;110D 1173 11BD;
+CBEB;CBEB;110D 1173 11BE;CBEB;110D 1173 11BE;
+CBEC;CBEC;110D 1173 11BF;CBEC;110D 1173 11BF;
+CBED;CBED;110D 1173 11C0;CBED;110D 1173 11C0;
+CBEE;CBEE;110D 1173 11C1;CBEE;110D 1173 11C1;
+CBEF;CBEF;110D 1173 11C2;CBEF;110D 1173 11C2;
+CBF0;CBF0;110D 1174;CBF0;110D 1174;
+CBF1;CBF1;110D 1174 11A8;CBF1;110D 1174 11A8;
+CBF2;CBF2;110D 1174 11A9;CBF2;110D 1174 11A9;
+CBF3;CBF3;110D 1174 11AA;CBF3;110D 1174 11AA;
+CBF4;CBF4;110D 1174 11AB;CBF4;110D 1174 11AB;
+CBF5;CBF5;110D 1174 11AC;CBF5;110D 1174 11AC;
+CBF6;CBF6;110D 1174 11AD;CBF6;110D 1174 11AD;
+CBF7;CBF7;110D 1174 11AE;CBF7;110D 1174 11AE;
+CBF8;CBF8;110D 1174 11AF;CBF8;110D 1174 11AF;
+CBF9;CBF9;110D 1174 11B0;CBF9;110D 1174 11B0;
+CBFA;CBFA;110D 1174 11B1;CBFA;110D 1174 11B1;
+CBFB;CBFB;110D 1174 11B2;CBFB;110D 1174 11B2;
+CBFC;CBFC;110D 1174 11B3;CBFC;110D 1174 11B3;
+CBFD;CBFD;110D 1174 11B4;CBFD;110D 1174 11B4;
+CBFE;CBFE;110D 1174 11B5;CBFE;110D 1174 11B5;
+CBFF;CBFF;110D 1174 11B6;CBFF;110D 1174 11B6;
+CC00;CC00;110D 1174 11B7;CC00;110D 1174 11B7;
+CC01;CC01;110D 1174 11B8;CC01;110D 1174 11B8;
+CC02;CC02;110D 1174 11B9;CC02;110D 1174 11B9;
+CC03;CC03;110D 1174 11BA;CC03;110D 1174 11BA;
+CC04;CC04;110D 1174 11BB;CC04;110D 1174 11BB;
+CC05;CC05;110D 1174 11BC;CC05;110D 1174 11BC;
+CC06;CC06;110D 1174 11BD;CC06;110D 1174 11BD;
+CC07;CC07;110D 1174 11BE;CC07;110D 1174 11BE;
+CC08;CC08;110D 1174 11BF;CC08;110D 1174 11BF;
+CC09;CC09;110D 1174 11C0;CC09;110D 1174 11C0;
+CC0A;CC0A;110D 1174 11C1;CC0A;110D 1174 11C1;
+CC0B;CC0B;110D 1174 11C2;CC0B;110D 1174 11C2;
+CC0C;CC0C;110D 1175;CC0C;110D 1175;
+CC0D;CC0D;110D 1175 11A8;CC0D;110D 1175 11A8;
+CC0E;CC0E;110D 1175 11A9;CC0E;110D 1175 11A9;
+CC0F;CC0F;110D 1175 11AA;CC0F;110D 1175 11AA;
+CC10;CC10;110D 1175 11AB;CC10;110D 1175 11AB;
+CC11;CC11;110D 1175 11AC;CC11;110D 1175 11AC;
+CC12;CC12;110D 1175 11AD;CC12;110D 1175 11AD;
+CC13;CC13;110D 1175 11AE;CC13;110D 1175 11AE;
+CC14;CC14;110D 1175 11AF;CC14;110D 1175 11AF;
+CC15;CC15;110D 1175 11B0;CC15;110D 1175 11B0;
+CC16;CC16;110D 1175 11B1;CC16;110D 1175 11B1;
+CC17;CC17;110D 1175 11B2;CC17;110D 1175 11B2;
+CC18;CC18;110D 1175 11B3;CC18;110D 1175 11B3;
+CC19;CC19;110D 1175 11B4;CC19;110D 1175 11B4;
+CC1A;CC1A;110D 1175 11B5;CC1A;110D 1175 11B5;
+CC1B;CC1B;110D 1175 11B6;CC1B;110D 1175 11B6;
+CC1C;CC1C;110D 1175 11B7;CC1C;110D 1175 11B7;
+CC1D;CC1D;110D 1175 11B8;CC1D;110D 1175 11B8;
+CC1E;CC1E;110D 1175 11B9;CC1E;110D 1175 11B9;
+CC1F;CC1F;110D 1175 11BA;CC1F;110D 1175 11BA;
+CC20;CC20;110D 1175 11BB;CC20;110D 1175 11BB;
+CC21;CC21;110D 1175 11BC;CC21;110D 1175 11BC;
+CC22;CC22;110D 1175 11BD;CC22;110D 1175 11BD;
+CC23;CC23;110D 1175 11BE;CC23;110D 1175 11BE;
+CC24;CC24;110D 1175 11BF;CC24;110D 1175 11BF;
+CC25;CC25;110D 1175 11C0;CC25;110D 1175 11C0;
+CC26;CC26;110D 1175 11C1;CC26;110D 1175 11C1;
+CC27;CC27;110D 1175 11C2;CC27;110D 1175 11C2;
+CC28;CC28;110E 1161;CC28;110E 1161;
+CC29;CC29;110E 1161 11A8;CC29;110E 1161 11A8;
+CC2A;CC2A;110E 1161 11A9;CC2A;110E 1161 11A9;
+CC2B;CC2B;110E 1161 11AA;CC2B;110E 1161 11AA;
+CC2C;CC2C;110E 1161 11AB;CC2C;110E 1161 11AB;
+CC2D;CC2D;110E 1161 11AC;CC2D;110E 1161 11AC;
+CC2E;CC2E;110E 1161 11AD;CC2E;110E 1161 11AD;
+CC2F;CC2F;110E 1161 11AE;CC2F;110E 1161 11AE;
+CC30;CC30;110E 1161 11AF;CC30;110E 1161 11AF;
+CC31;CC31;110E 1161 11B0;CC31;110E 1161 11B0;
+CC32;CC32;110E 1161 11B1;CC32;110E 1161 11B1;
+CC33;CC33;110E 1161 11B2;CC33;110E 1161 11B2;
+CC34;CC34;110E 1161 11B3;CC34;110E 1161 11B3;
+CC35;CC35;110E 1161 11B4;CC35;110E 1161 11B4;
+CC36;CC36;110E 1161 11B5;CC36;110E 1161 11B5;
+CC37;CC37;110E 1161 11B6;CC37;110E 1161 11B6;
+CC38;CC38;110E 1161 11B7;CC38;110E 1161 11B7;
+CC39;CC39;110E 1161 11B8;CC39;110E 1161 11B8;
+CC3A;CC3A;110E 1161 11B9;CC3A;110E 1161 11B9;
+CC3B;CC3B;110E 1161 11BA;CC3B;110E 1161 11BA;
+CC3C;CC3C;110E 1161 11BB;CC3C;110E 1161 11BB;
+CC3D;CC3D;110E 1161 11BC;CC3D;110E 1161 11BC;
+CC3E;CC3E;110E 1161 11BD;CC3E;110E 1161 11BD;
+CC3F;CC3F;110E 1161 11BE;CC3F;110E 1161 11BE;
+CC40;CC40;110E 1161 11BF;CC40;110E 1161 11BF;
+CC41;CC41;110E 1161 11C0;CC41;110E 1161 11C0;
+CC42;CC42;110E 1161 11C1;CC42;110E 1161 11C1;
+CC43;CC43;110E 1161 11C2;CC43;110E 1161 11C2;
+CC44;CC44;110E 1162;CC44;110E 1162;
+CC45;CC45;110E 1162 11A8;CC45;110E 1162 11A8;
+CC46;CC46;110E 1162 11A9;CC46;110E 1162 11A9;
+CC47;CC47;110E 1162 11AA;CC47;110E 1162 11AA;
+CC48;CC48;110E 1162 11AB;CC48;110E 1162 11AB;
+CC49;CC49;110E 1162 11AC;CC49;110E 1162 11AC;
+CC4A;CC4A;110E 1162 11AD;CC4A;110E 1162 11AD;
+CC4B;CC4B;110E 1162 11AE;CC4B;110E 1162 11AE;
+CC4C;CC4C;110E 1162 11AF;CC4C;110E 1162 11AF;
+CC4D;CC4D;110E 1162 11B0;CC4D;110E 1162 11B0;
+CC4E;CC4E;110E 1162 11B1;CC4E;110E 1162 11B1;
+CC4F;CC4F;110E 1162 11B2;CC4F;110E 1162 11B2;
+CC50;CC50;110E 1162 11B3;CC50;110E 1162 11B3;
+CC51;CC51;110E 1162 11B4;CC51;110E 1162 11B4;
+CC52;CC52;110E 1162 11B5;CC52;110E 1162 11B5;
+CC53;CC53;110E 1162 11B6;CC53;110E 1162 11B6;
+CC54;CC54;110E 1162 11B7;CC54;110E 1162 11B7;
+CC55;CC55;110E 1162 11B8;CC55;110E 1162 11B8;
+CC56;CC56;110E 1162 11B9;CC56;110E 1162 11B9;
+CC57;CC57;110E 1162 11BA;CC57;110E 1162 11BA;
+CC58;CC58;110E 1162 11BB;CC58;110E 1162 11BB;
+CC59;CC59;110E 1162 11BC;CC59;110E 1162 11BC;
+CC5A;CC5A;110E 1162 11BD;CC5A;110E 1162 11BD;
+CC5B;CC5B;110E 1162 11BE;CC5B;110E 1162 11BE;
+CC5C;CC5C;110E 1162 11BF;CC5C;110E 1162 11BF;
+CC5D;CC5D;110E 1162 11C0;CC5D;110E 1162 11C0;
+CC5E;CC5E;110E 1162 11C1;CC5E;110E 1162 11C1;
+CC5F;CC5F;110E 1162 11C2;CC5F;110E 1162 11C2;
+CC60;CC60;110E 1163;CC60;110E 1163;
+CC61;CC61;110E 1163 11A8;CC61;110E 1163 11A8;
+CC62;CC62;110E 1163 11A9;CC62;110E 1163 11A9;
+CC63;CC63;110E 1163 11AA;CC63;110E 1163 11AA;
+CC64;CC64;110E 1163 11AB;CC64;110E 1163 11AB;
+CC65;CC65;110E 1163 11AC;CC65;110E 1163 11AC;
+CC66;CC66;110E 1163 11AD;CC66;110E 1163 11AD;
+CC67;CC67;110E 1163 11AE;CC67;110E 1163 11AE;
+CC68;CC68;110E 1163 11AF;CC68;110E 1163 11AF;
+CC69;CC69;110E 1163 11B0;CC69;110E 1163 11B0;
+CC6A;CC6A;110E 1163 11B1;CC6A;110E 1163 11B1;
+CC6B;CC6B;110E 1163 11B2;CC6B;110E 1163 11B2;
+CC6C;CC6C;110E 1163 11B3;CC6C;110E 1163 11B3;
+CC6D;CC6D;110E 1163 11B4;CC6D;110E 1163 11B4;
+CC6E;CC6E;110E 1163 11B5;CC6E;110E 1163 11B5;
+CC6F;CC6F;110E 1163 11B6;CC6F;110E 1163 11B6;
+CC70;CC70;110E 1163 11B7;CC70;110E 1163 11B7;
+CC71;CC71;110E 1163 11B8;CC71;110E 1163 11B8;
+CC72;CC72;110E 1163 11B9;CC72;110E 1163 11B9;
+CC73;CC73;110E 1163 11BA;CC73;110E 1163 11BA;
+CC74;CC74;110E 1163 11BB;CC74;110E 1163 11BB;
+CC75;CC75;110E 1163 11BC;CC75;110E 1163 11BC;
+CC76;CC76;110E 1163 11BD;CC76;110E 1163 11BD;
+CC77;CC77;110E 1163 11BE;CC77;110E 1163 11BE;
+CC78;CC78;110E 1163 11BF;CC78;110E 1163 11BF;
+CC79;CC79;110E 1163 11C0;CC79;110E 1163 11C0;
+CC7A;CC7A;110E 1163 11C1;CC7A;110E 1163 11C1;
+CC7B;CC7B;110E 1163 11C2;CC7B;110E 1163 11C2;
+CC7C;CC7C;110E 1164;CC7C;110E 1164;
+CC7D;CC7D;110E 1164 11A8;CC7D;110E 1164 11A8;
+CC7E;CC7E;110E 1164 11A9;CC7E;110E 1164 11A9;
+CC7F;CC7F;110E 1164 11AA;CC7F;110E 1164 11AA;
+CC80;CC80;110E 1164 11AB;CC80;110E 1164 11AB;
+CC81;CC81;110E 1164 11AC;CC81;110E 1164 11AC;
+CC82;CC82;110E 1164 11AD;CC82;110E 1164 11AD;
+CC83;CC83;110E 1164 11AE;CC83;110E 1164 11AE;
+CC84;CC84;110E 1164 11AF;CC84;110E 1164 11AF;
+CC85;CC85;110E 1164 11B0;CC85;110E 1164 11B0;
+CC86;CC86;110E 1164 11B1;CC86;110E 1164 11B1;
+CC87;CC87;110E 1164 11B2;CC87;110E 1164 11B2;
+CC88;CC88;110E 1164 11B3;CC88;110E 1164 11B3;
+CC89;CC89;110E 1164 11B4;CC89;110E 1164 11B4;
+CC8A;CC8A;110E 1164 11B5;CC8A;110E 1164 11B5;
+CC8B;CC8B;110E 1164 11B6;CC8B;110E 1164 11B6;
+CC8C;CC8C;110E 1164 11B7;CC8C;110E 1164 11B7;
+CC8D;CC8D;110E 1164 11B8;CC8D;110E 1164 11B8;
+CC8E;CC8E;110E 1164 11B9;CC8E;110E 1164 11B9;
+CC8F;CC8F;110E 1164 11BA;CC8F;110E 1164 11BA;
+CC90;CC90;110E 1164 11BB;CC90;110E 1164 11BB;
+CC91;CC91;110E 1164 11BC;CC91;110E 1164 11BC;
+CC92;CC92;110E 1164 11BD;CC92;110E 1164 11BD;
+CC93;CC93;110E 1164 11BE;CC93;110E 1164 11BE;
+CC94;CC94;110E 1164 11BF;CC94;110E 1164 11BF;
+CC95;CC95;110E 1164 11C0;CC95;110E 1164 11C0;
+CC96;CC96;110E 1164 11C1;CC96;110E 1164 11C1;
+CC97;CC97;110E 1164 11C2;CC97;110E 1164 11C2;
+CC98;CC98;110E 1165;CC98;110E 1165;
+CC99;CC99;110E 1165 11A8;CC99;110E 1165 11A8;
+CC9A;CC9A;110E 1165 11A9;CC9A;110E 1165 11A9;
+CC9B;CC9B;110E 1165 11AA;CC9B;110E 1165 11AA;
+CC9C;CC9C;110E 1165 11AB;CC9C;110E 1165 11AB;
+CC9D;CC9D;110E 1165 11AC;CC9D;110E 1165 11AC;
+CC9E;CC9E;110E 1165 11AD;CC9E;110E 1165 11AD;
+CC9F;CC9F;110E 1165 11AE;CC9F;110E 1165 11AE;
+CCA0;CCA0;110E 1165 11AF;CCA0;110E 1165 11AF;
+CCA1;CCA1;110E 1165 11B0;CCA1;110E 1165 11B0;
+CCA2;CCA2;110E 1165 11B1;CCA2;110E 1165 11B1;
+CCA3;CCA3;110E 1165 11B2;CCA3;110E 1165 11B2;
+CCA4;CCA4;110E 1165 11B3;CCA4;110E 1165 11B3;
+CCA5;CCA5;110E 1165 11B4;CCA5;110E 1165 11B4;
+CCA6;CCA6;110E 1165 11B5;CCA6;110E 1165 11B5;
+CCA7;CCA7;110E 1165 11B6;CCA7;110E 1165 11B6;
+CCA8;CCA8;110E 1165 11B7;CCA8;110E 1165 11B7;
+CCA9;CCA9;110E 1165 11B8;CCA9;110E 1165 11B8;
+CCAA;CCAA;110E 1165 11B9;CCAA;110E 1165 11B9;
+CCAB;CCAB;110E 1165 11BA;CCAB;110E 1165 11BA;
+CCAC;CCAC;110E 1165 11BB;CCAC;110E 1165 11BB;
+CCAD;CCAD;110E 1165 11BC;CCAD;110E 1165 11BC;
+CCAE;CCAE;110E 1165 11BD;CCAE;110E 1165 11BD;
+CCAF;CCAF;110E 1165 11BE;CCAF;110E 1165 11BE;
+CCB0;CCB0;110E 1165 11BF;CCB0;110E 1165 11BF;
+CCB1;CCB1;110E 1165 11C0;CCB1;110E 1165 11C0;
+CCB2;CCB2;110E 1165 11C1;CCB2;110E 1165 11C1;
+CCB3;CCB3;110E 1165 11C2;CCB3;110E 1165 11C2;
+CCB4;CCB4;110E 1166;CCB4;110E 1166;
+CCB5;CCB5;110E 1166 11A8;CCB5;110E 1166 11A8;
+CCB6;CCB6;110E 1166 11A9;CCB6;110E 1166 11A9;
+CCB7;CCB7;110E 1166 11AA;CCB7;110E 1166 11AA;
+CCB8;CCB8;110E 1166 11AB;CCB8;110E 1166 11AB;
+CCB9;CCB9;110E 1166 11AC;CCB9;110E 1166 11AC;
+CCBA;CCBA;110E 1166 11AD;CCBA;110E 1166 11AD;
+CCBB;CCBB;110E 1166 11AE;CCBB;110E 1166 11AE;
+CCBC;CCBC;110E 1166 11AF;CCBC;110E 1166 11AF;
+CCBD;CCBD;110E 1166 11B0;CCBD;110E 1166 11B0;
+CCBE;CCBE;110E 1166 11B1;CCBE;110E 1166 11B1;
+CCBF;CCBF;110E 1166 11B2;CCBF;110E 1166 11B2;
+CCC0;CCC0;110E 1166 11B3;CCC0;110E 1166 11B3;
+CCC1;CCC1;110E 1166 11B4;CCC1;110E 1166 11B4;
+CCC2;CCC2;110E 1166 11B5;CCC2;110E 1166 11B5;
+CCC3;CCC3;110E 1166 11B6;CCC3;110E 1166 11B6;
+CCC4;CCC4;110E 1166 11B7;CCC4;110E 1166 11B7;
+CCC5;CCC5;110E 1166 11B8;CCC5;110E 1166 11B8;
+CCC6;CCC6;110E 1166 11B9;CCC6;110E 1166 11B9;
+CCC7;CCC7;110E 1166 11BA;CCC7;110E 1166 11BA;
+CCC8;CCC8;110E 1166 11BB;CCC8;110E 1166 11BB;
+CCC9;CCC9;110E 1166 11BC;CCC9;110E 1166 11BC;
+CCCA;CCCA;110E 1166 11BD;CCCA;110E 1166 11BD;
+CCCB;CCCB;110E 1166 11BE;CCCB;110E 1166 11BE;
+CCCC;CCCC;110E 1166 11BF;CCCC;110E 1166 11BF;
+CCCD;CCCD;110E 1166 11C0;CCCD;110E 1166 11C0;
+CCCE;CCCE;110E 1166 11C1;CCCE;110E 1166 11C1;
+CCCF;CCCF;110E 1166 11C2;CCCF;110E 1166 11C2;
+CCD0;CCD0;110E 1167;CCD0;110E 1167;
+CCD1;CCD1;110E 1167 11A8;CCD1;110E 1167 11A8;
+CCD2;CCD2;110E 1167 11A9;CCD2;110E 1167 11A9;
+CCD3;CCD3;110E 1167 11AA;CCD3;110E 1167 11AA;
+CCD4;CCD4;110E 1167 11AB;CCD4;110E 1167 11AB;
+CCD5;CCD5;110E 1167 11AC;CCD5;110E 1167 11AC;
+CCD6;CCD6;110E 1167 11AD;CCD6;110E 1167 11AD;
+CCD7;CCD7;110E 1167 11AE;CCD7;110E 1167 11AE;
+CCD8;CCD8;110E 1167 11AF;CCD8;110E 1167 11AF;
+CCD9;CCD9;110E 1167 11B0;CCD9;110E 1167 11B0;
+CCDA;CCDA;110E 1167 11B1;CCDA;110E 1167 11B1;
+CCDB;CCDB;110E 1167 11B2;CCDB;110E 1167 11B2;
+CCDC;CCDC;110E 1167 11B3;CCDC;110E 1167 11B3;
+CCDD;CCDD;110E 1167 11B4;CCDD;110E 1167 11B4;
+CCDE;CCDE;110E 1167 11B5;CCDE;110E 1167 11B5;
+CCDF;CCDF;110E 1167 11B6;CCDF;110E 1167 11B6;
+CCE0;CCE0;110E 1167 11B7;CCE0;110E 1167 11B7;
+CCE1;CCE1;110E 1167 11B8;CCE1;110E 1167 11B8;
+CCE2;CCE2;110E 1167 11B9;CCE2;110E 1167 11B9;
+CCE3;CCE3;110E 1167 11BA;CCE3;110E 1167 11BA;
+CCE4;CCE4;110E 1167 11BB;CCE4;110E 1167 11BB;
+CCE5;CCE5;110E 1167 11BC;CCE5;110E 1167 11BC;
+CCE6;CCE6;110E 1167 11BD;CCE6;110E 1167 11BD;
+CCE7;CCE7;110E 1167 11BE;CCE7;110E 1167 11BE;
+CCE8;CCE8;110E 1167 11BF;CCE8;110E 1167 11BF;
+CCE9;CCE9;110E 1167 11C0;CCE9;110E 1167 11C0;
+CCEA;CCEA;110E 1167 11C1;CCEA;110E 1167 11C1;
+CCEB;CCEB;110E 1167 11C2;CCEB;110E 1167 11C2;
+CCEC;CCEC;110E 1168;CCEC;110E 1168;
+CCED;CCED;110E 1168 11A8;CCED;110E 1168 11A8;
+CCEE;CCEE;110E 1168 11A9;CCEE;110E 1168 11A9;
+CCEF;CCEF;110E 1168 11AA;CCEF;110E 1168 11AA;
+CCF0;CCF0;110E 1168 11AB;CCF0;110E 1168 11AB;
+CCF1;CCF1;110E 1168 11AC;CCF1;110E 1168 11AC;
+CCF2;CCF2;110E 1168 11AD;CCF2;110E 1168 11AD;
+CCF3;CCF3;110E 1168 11AE;CCF3;110E 1168 11AE;
+CCF4;CCF4;110E 1168 11AF;CCF4;110E 1168 11AF;
+CCF5;CCF5;110E 1168 11B0;CCF5;110E 1168 11B0;
+CCF6;CCF6;110E 1168 11B1;CCF6;110E 1168 11B1;
+CCF7;CCF7;110E 1168 11B2;CCF7;110E 1168 11B2;
+CCF8;CCF8;110E 1168 11B3;CCF8;110E 1168 11B3;
+CCF9;CCF9;110E 1168 11B4;CCF9;110E 1168 11B4;
+CCFA;CCFA;110E 1168 11B5;CCFA;110E 1168 11B5;
+CCFB;CCFB;110E 1168 11B6;CCFB;110E 1168 11B6;
+CCFC;CCFC;110E 1168 11B7;CCFC;110E 1168 11B7;
+CCFD;CCFD;110E 1168 11B8;CCFD;110E 1168 11B8;
+CCFE;CCFE;110E 1168 11B9;CCFE;110E 1168 11B9;
+CCFF;CCFF;110E 1168 11BA;CCFF;110E 1168 11BA;
+CD00;CD00;110E 1168 11BB;CD00;110E 1168 11BB;
+CD01;CD01;110E 1168 11BC;CD01;110E 1168 11BC;
+CD02;CD02;110E 1168 11BD;CD02;110E 1168 11BD;
+CD03;CD03;110E 1168 11BE;CD03;110E 1168 11BE;
+CD04;CD04;110E 1168 11BF;CD04;110E 1168 11BF;
+CD05;CD05;110E 1168 11C0;CD05;110E 1168 11C0;
+CD06;CD06;110E 1168 11C1;CD06;110E 1168 11C1;
+CD07;CD07;110E 1168 11C2;CD07;110E 1168 11C2;
+CD08;CD08;110E 1169;CD08;110E 1169;
+CD09;CD09;110E 1169 11A8;CD09;110E 1169 11A8;
+CD0A;CD0A;110E 1169 11A9;CD0A;110E 1169 11A9;
+CD0B;CD0B;110E 1169 11AA;CD0B;110E 1169 11AA;
+CD0C;CD0C;110E 1169 11AB;CD0C;110E 1169 11AB;
+CD0D;CD0D;110E 1169 11AC;CD0D;110E 1169 11AC;
+CD0E;CD0E;110E 1169 11AD;CD0E;110E 1169 11AD;
+CD0F;CD0F;110E 1169 11AE;CD0F;110E 1169 11AE;
+CD10;CD10;110E 1169 11AF;CD10;110E 1169 11AF;
+CD11;CD11;110E 1169 11B0;CD11;110E 1169 11B0;
+CD12;CD12;110E 1169 11B1;CD12;110E 1169 11B1;
+CD13;CD13;110E 1169 11B2;CD13;110E 1169 11B2;
+CD14;CD14;110E 1169 11B3;CD14;110E 1169 11B3;
+CD15;CD15;110E 1169 11B4;CD15;110E 1169 11B4;
+CD16;CD16;110E 1169 11B5;CD16;110E 1169 11B5;
+CD17;CD17;110E 1169 11B6;CD17;110E 1169 11B6;
+CD18;CD18;110E 1169 11B7;CD18;110E 1169 11B7;
+CD19;CD19;110E 1169 11B8;CD19;110E 1169 11B8;
+CD1A;CD1A;110E 1169 11B9;CD1A;110E 1169 11B9;
+CD1B;CD1B;110E 1169 11BA;CD1B;110E 1169 11BA;
+CD1C;CD1C;110E 1169 11BB;CD1C;110E 1169 11BB;
+CD1D;CD1D;110E 1169 11BC;CD1D;110E 1169 11BC;
+CD1E;CD1E;110E 1169 11BD;CD1E;110E 1169 11BD;
+CD1F;CD1F;110E 1169 11BE;CD1F;110E 1169 11BE;
+CD20;CD20;110E 1169 11BF;CD20;110E 1169 11BF;
+CD21;CD21;110E 1169 11C0;CD21;110E 1169 11C0;
+CD22;CD22;110E 1169 11C1;CD22;110E 1169 11C1;
+CD23;CD23;110E 1169 11C2;CD23;110E 1169 11C2;
+CD24;CD24;110E 116A;CD24;110E 116A;
+CD25;CD25;110E 116A 11A8;CD25;110E 116A 11A8;
+CD26;CD26;110E 116A 11A9;CD26;110E 116A 11A9;
+CD27;CD27;110E 116A 11AA;CD27;110E 116A 11AA;
+CD28;CD28;110E 116A 11AB;CD28;110E 116A 11AB;
+CD29;CD29;110E 116A 11AC;CD29;110E 116A 11AC;
+CD2A;CD2A;110E 116A 11AD;CD2A;110E 116A 11AD;
+CD2B;CD2B;110E 116A 11AE;CD2B;110E 116A 11AE;
+CD2C;CD2C;110E 116A 11AF;CD2C;110E 116A 11AF;
+CD2D;CD2D;110E 116A 11B0;CD2D;110E 116A 11B0;
+CD2E;CD2E;110E 116A 11B1;CD2E;110E 116A 11B1;
+CD2F;CD2F;110E 116A 11B2;CD2F;110E 116A 11B2;
+CD30;CD30;110E 116A 11B3;CD30;110E 116A 11B3;
+CD31;CD31;110E 116A 11B4;CD31;110E 116A 11B4;
+CD32;CD32;110E 116A 11B5;CD32;110E 116A 11B5;
+CD33;CD33;110E 116A 11B6;CD33;110E 116A 11B6;
+CD34;CD34;110E 116A 11B7;CD34;110E 116A 11B7;
+CD35;CD35;110E 116A 11B8;CD35;110E 116A 11B8;
+CD36;CD36;110E 116A 11B9;CD36;110E 116A 11B9;
+CD37;CD37;110E 116A 11BA;CD37;110E 116A 11BA;
+CD38;CD38;110E 116A 11BB;CD38;110E 116A 11BB;
+CD39;CD39;110E 116A 11BC;CD39;110E 116A 11BC;
+CD3A;CD3A;110E 116A 11BD;CD3A;110E 116A 11BD;
+CD3B;CD3B;110E 116A 11BE;CD3B;110E 116A 11BE;
+CD3C;CD3C;110E 116A 11BF;CD3C;110E 116A 11BF;
+CD3D;CD3D;110E 116A 11C0;CD3D;110E 116A 11C0;
+CD3E;CD3E;110E 116A 11C1;CD3E;110E 116A 11C1;
+CD3F;CD3F;110E 116A 11C2;CD3F;110E 116A 11C2;
+CD40;CD40;110E 116B;CD40;110E 116B;
+CD41;CD41;110E 116B 11A8;CD41;110E 116B 11A8;
+CD42;CD42;110E 116B 11A9;CD42;110E 116B 11A9;
+CD43;CD43;110E 116B 11AA;CD43;110E 116B 11AA;
+CD44;CD44;110E 116B 11AB;CD44;110E 116B 11AB;
+CD45;CD45;110E 116B 11AC;CD45;110E 116B 11AC;
+CD46;CD46;110E 116B 11AD;CD46;110E 116B 11AD;
+CD47;CD47;110E 116B 11AE;CD47;110E 116B 11AE;
+CD48;CD48;110E 116B 11AF;CD48;110E 116B 11AF;
+CD49;CD49;110E 116B 11B0;CD49;110E 116B 11B0;
+CD4A;CD4A;110E 116B 11B1;CD4A;110E 116B 11B1;
+CD4B;CD4B;110E 116B 11B2;CD4B;110E 116B 11B2;
+CD4C;CD4C;110E 116B 11B3;CD4C;110E 116B 11B3;
+CD4D;CD4D;110E 116B 11B4;CD4D;110E 116B 11B4;
+CD4E;CD4E;110E 116B 11B5;CD4E;110E 116B 11B5;
+CD4F;CD4F;110E 116B 11B6;CD4F;110E 116B 11B6;
+CD50;CD50;110E 116B 11B7;CD50;110E 116B 11B7;
+CD51;CD51;110E 116B 11B8;CD51;110E 116B 11B8;
+CD52;CD52;110E 116B 11B9;CD52;110E 116B 11B9;
+CD53;CD53;110E 116B 11BA;CD53;110E 116B 11BA;
+CD54;CD54;110E 116B 11BB;CD54;110E 116B 11BB;
+CD55;CD55;110E 116B 11BC;CD55;110E 116B 11BC;
+CD56;CD56;110E 116B 11BD;CD56;110E 116B 11BD;
+CD57;CD57;110E 116B 11BE;CD57;110E 116B 11BE;
+CD58;CD58;110E 116B 11BF;CD58;110E 116B 11BF;
+CD59;CD59;110E 116B 11C0;CD59;110E 116B 11C0;
+CD5A;CD5A;110E 116B 11C1;CD5A;110E 116B 11C1;
+CD5B;CD5B;110E 116B 11C2;CD5B;110E 116B 11C2;
+CD5C;CD5C;110E 116C;CD5C;110E 116C;
+CD5D;CD5D;110E 116C 11A8;CD5D;110E 116C 11A8;
+CD5E;CD5E;110E 116C 11A9;CD5E;110E 116C 11A9;
+CD5F;CD5F;110E 116C 11AA;CD5F;110E 116C 11AA;
+CD60;CD60;110E 116C 11AB;CD60;110E 116C 11AB;
+CD61;CD61;110E 116C 11AC;CD61;110E 116C 11AC;
+CD62;CD62;110E 116C 11AD;CD62;110E 116C 11AD;
+CD63;CD63;110E 116C 11AE;CD63;110E 116C 11AE;
+CD64;CD64;110E 116C 11AF;CD64;110E 116C 11AF;
+CD65;CD65;110E 116C 11B0;CD65;110E 116C 11B0;
+CD66;CD66;110E 116C 11B1;CD66;110E 116C 11B1;
+CD67;CD67;110E 116C 11B2;CD67;110E 116C 11B2;
+CD68;CD68;110E 116C 11B3;CD68;110E 116C 11B3;
+CD69;CD69;110E 116C 11B4;CD69;110E 116C 11B4;
+CD6A;CD6A;110E 116C 11B5;CD6A;110E 116C 11B5;
+CD6B;CD6B;110E 116C 11B6;CD6B;110E 116C 11B6;
+CD6C;CD6C;110E 116C 11B7;CD6C;110E 116C 11B7;
+CD6D;CD6D;110E 116C 11B8;CD6D;110E 116C 11B8;
+CD6E;CD6E;110E 116C 11B9;CD6E;110E 116C 11B9;
+CD6F;CD6F;110E 116C 11BA;CD6F;110E 116C 11BA;
+CD70;CD70;110E 116C 11BB;CD70;110E 116C 11BB;
+CD71;CD71;110E 116C 11BC;CD71;110E 116C 11BC;
+CD72;CD72;110E 116C 11BD;CD72;110E 116C 11BD;
+CD73;CD73;110E 116C 11BE;CD73;110E 116C 11BE;
+CD74;CD74;110E 116C 11BF;CD74;110E 116C 11BF;
+CD75;CD75;110E 116C 11C0;CD75;110E 116C 11C0;
+CD76;CD76;110E 116C 11C1;CD76;110E 116C 11C1;
+CD77;CD77;110E 116C 11C2;CD77;110E 116C 11C2;
+CD78;CD78;110E 116D;CD78;110E 116D;
+CD79;CD79;110E 116D 11A8;CD79;110E 116D 11A8;
+CD7A;CD7A;110E 116D 11A9;CD7A;110E 116D 11A9;
+CD7B;CD7B;110E 116D 11AA;CD7B;110E 116D 11AA;
+CD7C;CD7C;110E 116D 11AB;CD7C;110E 116D 11AB;
+CD7D;CD7D;110E 116D 11AC;CD7D;110E 116D 11AC;
+CD7E;CD7E;110E 116D 11AD;CD7E;110E 116D 11AD;
+CD7F;CD7F;110E 116D 11AE;CD7F;110E 116D 11AE;
+CD80;CD80;110E 116D 11AF;CD80;110E 116D 11AF;
+CD81;CD81;110E 116D 11B0;CD81;110E 116D 11B0;
+CD82;CD82;110E 116D 11B1;CD82;110E 116D 11B1;
+CD83;CD83;110E 116D 11B2;CD83;110E 116D 11B2;
+CD84;CD84;110E 116D 11B3;CD84;110E 116D 11B3;
+CD85;CD85;110E 116D 11B4;CD85;110E 116D 11B4;
+CD86;CD86;110E 116D 11B5;CD86;110E 116D 11B5;
+CD87;CD87;110E 116D 11B6;CD87;110E 116D 11B6;
+CD88;CD88;110E 116D 11B7;CD88;110E 116D 11B7;
+CD89;CD89;110E 116D 11B8;CD89;110E 116D 11B8;
+CD8A;CD8A;110E 116D 11B9;CD8A;110E 116D 11B9;
+CD8B;CD8B;110E 116D 11BA;CD8B;110E 116D 11BA;
+CD8C;CD8C;110E 116D 11BB;CD8C;110E 116D 11BB;
+CD8D;CD8D;110E 116D 11BC;CD8D;110E 116D 11BC;
+CD8E;CD8E;110E 116D 11BD;CD8E;110E 116D 11BD;
+CD8F;CD8F;110E 116D 11BE;CD8F;110E 116D 11BE;
+CD90;CD90;110E 116D 11BF;CD90;110E 116D 11BF;
+CD91;CD91;110E 116D 11C0;CD91;110E 116D 11C0;
+CD92;CD92;110E 116D 11C1;CD92;110E 116D 11C1;
+CD93;CD93;110E 116D 11C2;CD93;110E 116D 11C2;
+CD94;CD94;110E 116E;CD94;110E 116E;
+CD95;CD95;110E 116E 11A8;CD95;110E 116E 11A8;
+CD96;CD96;110E 116E 11A9;CD96;110E 116E 11A9;
+CD97;CD97;110E 116E 11AA;CD97;110E 116E 11AA;
+CD98;CD98;110E 116E 11AB;CD98;110E 116E 11AB;
+CD99;CD99;110E 116E 11AC;CD99;110E 116E 11AC;
+CD9A;CD9A;110E 116E 11AD;CD9A;110E 116E 11AD;
+CD9B;CD9B;110E 116E 11AE;CD9B;110E 116E 11AE;
+CD9C;CD9C;110E 116E 11AF;CD9C;110E 116E 11AF;
+CD9D;CD9D;110E 116E 11B0;CD9D;110E 116E 11B0;
+CD9E;CD9E;110E 116E 11B1;CD9E;110E 116E 11B1;
+CD9F;CD9F;110E 116E 11B2;CD9F;110E 116E 11B2;
+CDA0;CDA0;110E 116E 11B3;CDA0;110E 116E 11B3;
+CDA1;CDA1;110E 116E 11B4;CDA1;110E 116E 11B4;
+CDA2;CDA2;110E 116E 11B5;CDA2;110E 116E 11B5;
+CDA3;CDA3;110E 116E 11B6;CDA3;110E 116E 11B6;
+CDA4;CDA4;110E 116E 11B7;CDA4;110E 116E 11B7;
+CDA5;CDA5;110E 116E 11B8;CDA5;110E 116E 11B8;
+CDA6;CDA6;110E 116E 11B9;CDA6;110E 116E 11B9;
+CDA7;CDA7;110E 116E 11BA;CDA7;110E 116E 11BA;
+CDA8;CDA8;110E 116E 11BB;CDA8;110E 116E 11BB;
+CDA9;CDA9;110E 116E 11BC;CDA9;110E 116E 11BC;
+CDAA;CDAA;110E 116E 11BD;CDAA;110E 116E 11BD;
+CDAB;CDAB;110E 116E 11BE;CDAB;110E 116E 11BE;
+CDAC;CDAC;110E 116E 11BF;CDAC;110E 116E 11BF;
+CDAD;CDAD;110E 116E 11C0;CDAD;110E 116E 11C0;
+CDAE;CDAE;110E 116E 11C1;CDAE;110E 116E 11C1;
+CDAF;CDAF;110E 116E 11C2;CDAF;110E 116E 11C2;
+CDB0;CDB0;110E 116F;CDB0;110E 116F;
+CDB1;CDB1;110E 116F 11A8;CDB1;110E 116F 11A8;
+CDB2;CDB2;110E 116F 11A9;CDB2;110E 116F 11A9;
+CDB3;CDB3;110E 116F 11AA;CDB3;110E 116F 11AA;
+CDB4;CDB4;110E 116F 11AB;CDB4;110E 116F 11AB;
+CDB5;CDB5;110E 116F 11AC;CDB5;110E 116F 11AC;
+CDB6;CDB6;110E 116F 11AD;CDB6;110E 116F 11AD;
+CDB7;CDB7;110E 116F 11AE;CDB7;110E 116F 11AE;
+CDB8;CDB8;110E 116F 11AF;CDB8;110E 116F 11AF;
+CDB9;CDB9;110E 116F 11B0;CDB9;110E 116F 11B0;
+CDBA;CDBA;110E 116F 11B1;CDBA;110E 116F 11B1;
+CDBB;CDBB;110E 116F 11B2;CDBB;110E 116F 11B2;
+CDBC;CDBC;110E 116F 11B3;CDBC;110E 116F 11B3;
+CDBD;CDBD;110E 116F 11B4;CDBD;110E 116F 11B4;
+CDBE;CDBE;110E 116F 11B5;CDBE;110E 116F 11B5;
+CDBF;CDBF;110E 116F 11B6;CDBF;110E 116F 11B6;
+CDC0;CDC0;110E 116F 11B7;CDC0;110E 116F 11B7;
+CDC1;CDC1;110E 116F 11B8;CDC1;110E 116F 11B8;
+CDC2;CDC2;110E 116F 11B9;CDC2;110E 116F 11B9;
+CDC3;CDC3;110E 116F 11BA;CDC3;110E 116F 11BA;
+CDC4;CDC4;110E 116F 11BB;CDC4;110E 116F 11BB;
+CDC5;CDC5;110E 116F 11BC;CDC5;110E 116F 11BC;
+CDC6;CDC6;110E 116F 11BD;CDC6;110E 116F 11BD;
+CDC7;CDC7;110E 116F 11BE;CDC7;110E 116F 11BE;
+CDC8;CDC8;110E 116F 11BF;CDC8;110E 116F 11BF;
+CDC9;CDC9;110E 116F 11C0;CDC9;110E 116F 11C0;
+CDCA;CDCA;110E 116F 11C1;CDCA;110E 116F 11C1;
+CDCB;CDCB;110E 116F 11C2;CDCB;110E 116F 11C2;
+CDCC;CDCC;110E 1170;CDCC;110E 1170;
+CDCD;CDCD;110E 1170 11A8;CDCD;110E 1170 11A8;
+CDCE;CDCE;110E 1170 11A9;CDCE;110E 1170 11A9;
+CDCF;CDCF;110E 1170 11AA;CDCF;110E 1170 11AA;
+CDD0;CDD0;110E 1170 11AB;CDD0;110E 1170 11AB;
+CDD1;CDD1;110E 1170 11AC;CDD1;110E 1170 11AC;
+CDD2;CDD2;110E 1170 11AD;CDD2;110E 1170 11AD;
+CDD3;CDD3;110E 1170 11AE;CDD3;110E 1170 11AE;
+CDD4;CDD4;110E 1170 11AF;CDD4;110E 1170 11AF;
+CDD5;CDD5;110E 1170 11B0;CDD5;110E 1170 11B0;
+CDD6;CDD6;110E 1170 11B1;CDD6;110E 1170 11B1;
+CDD7;CDD7;110E 1170 11B2;CDD7;110E 1170 11B2;
+CDD8;CDD8;110E 1170 11B3;CDD8;110E 1170 11B3;
+CDD9;CDD9;110E 1170 11B4;CDD9;110E 1170 11B4;
+CDDA;CDDA;110E 1170 11B5;CDDA;110E 1170 11B5;
+CDDB;CDDB;110E 1170 11B6;CDDB;110E 1170 11B6;
+CDDC;CDDC;110E 1170 11B7;CDDC;110E 1170 11B7;
+CDDD;CDDD;110E 1170 11B8;CDDD;110E 1170 11B8;
+CDDE;CDDE;110E 1170 11B9;CDDE;110E 1170 11B9;
+CDDF;CDDF;110E 1170 11BA;CDDF;110E 1170 11BA;
+CDE0;CDE0;110E 1170 11BB;CDE0;110E 1170 11BB;
+CDE1;CDE1;110E 1170 11BC;CDE1;110E 1170 11BC;
+CDE2;CDE2;110E 1170 11BD;CDE2;110E 1170 11BD;
+CDE3;CDE3;110E 1170 11BE;CDE3;110E 1170 11BE;
+CDE4;CDE4;110E 1170 11BF;CDE4;110E 1170 11BF;
+CDE5;CDE5;110E 1170 11C0;CDE5;110E 1170 11C0;
+CDE6;CDE6;110E 1170 11C1;CDE6;110E 1170 11C1;
+CDE7;CDE7;110E 1170 11C2;CDE7;110E 1170 11C2;
+CDE8;CDE8;110E 1171;CDE8;110E 1171;
+CDE9;CDE9;110E 1171 11A8;CDE9;110E 1171 11A8;
+CDEA;CDEA;110E 1171 11A9;CDEA;110E 1171 11A9;
+CDEB;CDEB;110E 1171 11AA;CDEB;110E 1171 11AA;
+CDEC;CDEC;110E 1171 11AB;CDEC;110E 1171 11AB;
+CDED;CDED;110E 1171 11AC;CDED;110E 1171 11AC;
+CDEE;CDEE;110E 1171 11AD;CDEE;110E 1171 11AD;
+CDEF;CDEF;110E 1171 11AE;CDEF;110E 1171 11AE;
+CDF0;CDF0;110E 1171 11AF;CDF0;110E 1171 11AF;
+CDF1;CDF1;110E 1171 11B0;CDF1;110E 1171 11B0;
+CDF2;CDF2;110E 1171 11B1;CDF2;110E 1171 11B1;
+CDF3;CDF3;110E 1171 11B2;CDF3;110E 1171 11B2;
+CDF4;CDF4;110E 1171 11B3;CDF4;110E 1171 11B3;
+CDF5;CDF5;110E 1171 11B4;CDF5;110E 1171 11B4;
+CDF6;CDF6;110E 1171 11B5;CDF6;110E 1171 11B5;
+CDF7;CDF7;110E 1171 11B6;CDF7;110E 1171 11B6;
+CDF8;CDF8;110E 1171 11B7;CDF8;110E 1171 11B7;
+CDF9;CDF9;110E 1171 11B8;CDF9;110E 1171 11B8;
+CDFA;CDFA;110E 1171 11B9;CDFA;110E 1171 11B9;
+CDFB;CDFB;110E 1171 11BA;CDFB;110E 1171 11BA;
+CDFC;CDFC;110E 1171 11BB;CDFC;110E 1171 11BB;
+CDFD;CDFD;110E 1171 11BC;CDFD;110E 1171 11BC;
+CDFE;CDFE;110E 1171 11BD;CDFE;110E 1171 11BD;
+CDFF;CDFF;110E 1171 11BE;CDFF;110E 1171 11BE;
+CE00;CE00;110E 1171 11BF;CE00;110E 1171 11BF;
+CE01;CE01;110E 1171 11C0;CE01;110E 1171 11C0;
+CE02;CE02;110E 1171 11C1;CE02;110E 1171 11C1;
+CE03;CE03;110E 1171 11C2;CE03;110E 1171 11C2;
+CE04;CE04;110E 1172;CE04;110E 1172;
+CE05;CE05;110E 1172 11A8;CE05;110E 1172 11A8;
+CE06;CE06;110E 1172 11A9;CE06;110E 1172 11A9;
+CE07;CE07;110E 1172 11AA;CE07;110E 1172 11AA;
+CE08;CE08;110E 1172 11AB;CE08;110E 1172 11AB;
+CE09;CE09;110E 1172 11AC;CE09;110E 1172 11AC;
+CE0A;CE0A;110E 1172 11AD;CE0A;110E 1172 11AD;
+CE0B;CE0B;110E 1172 11AE;CE0B;110E 1172 11AE;
+CE0C;CE0C;110E 1172 11AF;CE0C;110E 1172 11AF;
+CE0D;CE0D;110E 1172 11B0;CE0D;110E 1172 11B0;
+CE0E;CE0E;110E 1172 11B1;CE0E;110E 1172 11B1;
+CE0F;CE0F;110E 1172 11B2;CE0F;110E 1172 11B2;
+CE10;CE10;110E 1172 11B3;CE10;110E 1172 11B3;
+CE11;CE11;110E 1172 11B4;CE11;110E 1172 11B4;
+CE12;CE12;110E 1172 11B5;CE12;110E 1172 11B5;
+CE13;CE13;110E 1172 11B6;CE13;110E 1172 11B6;
+CE14;CE14;110E 1172 11B7;CE14;110E 1172 11B7;
+CE15;CE15;110E 1172 11B8;CE15;110E 1172 11B8;
+CE16;CE16;110E 1172 11B9;CE16;110E 1172 11B9;
+CE17;CE17;110E 1172 11BA;CE17;110E 1172 11BA;
+CE18;CE18;110E 1172 11BB;CE18;110E 1172 11BB;
+CE19;CE19;110E 1172 11BC;CE19;110E 1172 11BC;
+CE1A;CE1A;110E 1172 11BD;CE1A;110E 1172 11BD;
+CE1B;CE1B;110E 1172 11BE;CE1B;110E 1172 11BE;
+CE1C;CE1C;110E 1172 11BF;CE1C;110E 1172 11BF;
+CE1D;CE1D;110E 1172 11C0;CE1D;110E 1172 11C0;
+CE1E;CE1E;110E 1172 11C1;CE1E;110E 1172 11C1;
+CE1F;CE1F;110E 1172 11C2;CE1F;110E 1172 11C2;
+CE20;CE20;110E 1173;CE20;110E 1173;
+CE21;CE21;110E 1173 11A8;CE21;110E 1173 11A8;
+CE22;CE22;110E 1173 11A9;CE22;110E 1173 11A9;
+CE23;CE23;110E 1173 11AA;CE23;110E 1173 11AA;
+CE24;CE24;110E 1173 11AB;CE24;110E 1173 11AB;
+CE25;CE25;110E 1173 11AC;CE25;110E 1173 11AC;
+CE26;CE26;110E 1173 11AD;CE26;110E 1173 11AD;
+CE27;CE27;110E 1173 11AE;CE27;110E 1173 11AE;
+CE28;CE28;110E 1173 11AF;CE28;110E 1173 11AF;
+CE29;CE29;110E 1173 11B0;CE29;110E 1173 11B0;
+CE2A;CE2A;110E 1173 11B1;CE2A;110E 1173 11B1;
+CE2B;CE2B;110E 1173 11B2;CE2B;110E 1173 11B2;
+CE2C;CE2C;110E 1173 11B3;CE2C;110E 1173 11B3;
+CE2D;CE2D;110E 1173 11B4;CE2D;110E 1173 11B4;
+CE2E;CE2E;110E 1173 11B5;CE2E;110E 1173 11B5;
+CE2F;CE2F;110E 1173 11B6;CE2F;110E 1173 11B6;
+CE30;CE30;110E 1173 11B7;CE30;110E 1173 11B7;
+CE31;CE31;110E 1173 11B8;CE31;110E 1173 11B8;
+CE32;CE32;110E 1173 11B9;CE32;110E 1173 11B9;
+CE33;CE33;110E 1173 11BA;CE33;110E 1173 11BA;
+CE34;CE34;110E 1173 11BB;CE34;110E 1173 11BB;
+CE35;CE35;110E 1173 11BC;CE35;110E 1173 11BC;
+CE36;CE36;110E 1173 11BD;CE36;110E 1173 11BD;
+CE37;CE37;110E 1173 11BE;CE37;110E 1173 11BE;
+CE38;CE38;110E 1173 11BF;CE38;110E 1173 11BF;
+CE39;CE39;110E 1173 11C0;CE39;110E 1173 11C0;
+CE3A;CE3A;110E 1173 11C1;CE3A;110E 1173 11C1;
+CE3B;CE3B;110E 1173 11C2;CE3B;110E 1173 11C2;
+CE3C;CE3C;110E 1174;CE3C;110E 1174;
+CE3D;CE3D;110E 1174 11A8;CE3D;110E 1174 11A8;
+CE3E;CE3E;110E 1174 11A9;CE3E;110E 1174 11A9;
+CE3F;CE3F;110E 1174 11AA;CE3F;110E 1174 11AA;
+CE40;CE40;110E 1174 11AB;CE40;110E 1174 11AB;
+CE41;CE41;110E 1174 11AC;CE41;110E 1174 11AC;
+CE42;CE42;110E 1174 11AD;CE42;110E 1174 11AD;
+CE43;CE43;110E 1174 11AE;CE43;110E 1174 11AE;
+CE44;CE44;110E 1174 11AF;CE44;110E 1174 11AF;
+CE45;CE45;110E 1174 11B0;CE45;110E 1174 11B0;
+CE46;CE46;110E 1174 11B1;CE46;110E 1174 11B1;
+CE47;CE47;110E 1174 11B2;CE47;110E 1174 11B2;
+CE48;CE48;110E 1174 11B3;CE48;110E 1174 11B3;
+CE49;CE49;110E 1174 11B4;CE49;110E 1174 11B4;
+CE4A;CE4A;110E 1174 11B5;CE4A;110E 1174 11B5;
+CE4B;CE4B;110E 1174 11B6;CE4B;110E 1174 11B6;
+CE4C;CE4C;110E 1174 11B7;CE4C;110E 1174 11B7;
+CE4D;CE4D;110E 1174 11B8;CE4D;110E 1174 11B8;
+CE4E;CE4E;110E 1174 11B9;CE4E;110E 1174 11B9;
+CE4F;CE4F;110E 1174 11BA;CE4F;110E 1174 11BA;
+CE50;CE50;110E 1174 11BB;CE50;110E 1174 11BB;
+CE51;CE51;110E 1174 11BC;CE51;110E 1174 11BC;
+CE52;CE52;110E 1174 11BD;CE52;110E 1174 11BD;
+CE53;CE53;110E 1174 11BE;CE53;110E 1174 11BE;
+CE54;CE54;110E 1174 11BF;CE54;110E 1174 11BF;
+CE55;CE55;110E 1174 11C0;CE55;110E 1174 11C0;
+CE56;CE56;110E 1174 11C1;CE56;110E 1174 11C1;
+CE57;CE57;110E 1174 11C2;CE57;110E 1174 11C2;
+CE58;CE58;110E 1175;CE58;110E 1175;
+CE59;CE59;110E 1175 11A8;CE59;110E 1175 11A8;
+CE5A;CE5A;110E 1175 11A9;CE5A;110E 1175 11A9;
+CE5B;CE5B;110E 1175 11AA;CE5B;110E 1175 11AA;
+CE5C;CE5C;110E 1175 11AB;CE5C;110E 1175 11AB;
+CE5D;CE5D;110E 1175 11AC;CE5D;110E 1175 11AC;
+CE5E;CE5E;110E 1175 11AD;CE5E;110E 1175 11AD;
+CE5F;CE5F;110E 1175 11AE;CE5F;110E 1175 11AE;
+CE60;CE60;110E 1175 11AF;CE60;110E 1175 11AF;
+CE61;CE61;110E 1175 11B0;CE61;110E 1175 11B0;
+CE62;CE62;110E 1175 11B1;CE62;110E 1175 11B1;
+CE63;CE63;110E 1175 11B2;CE63;110E 1175 11B2;
+CE64;CE64;110E 1175 11B3;CE64;110E 1175 11B3;
+CE65;CE65;110E 1175 11B4;CE65;110E 1175 11B4;
+CE66;CE66;110E 1175 11B5;CE66;110E 1175 11B5;
+CE67;CE67;110E 1175 11B6;CE67;110E 1175 11B6;
+CE68;CE68;110E 1175 11B7;CE68;110E 1175 11B7;
+CE69;CE69;110E 1175 11B8;CE69;110E 1175 11B8;
+CE6A;CE6A;110E 1175 11B9;CE6A;110E 1175 11B9;
+CE6B;CE6B;110E 1175 11BA;CE6B;110E 1175 11BA;
+CE6C;CE6C;110E 1175 11BB;CE6C;110E 1175 11BB;
+CE6D;CE6D;110E 1175 11BC;CE6D;110E 1175 11BC;
+CE6E;CE6E;110E 1175 11BD;CE6E;110E 1175 11BD;
+CE6F;CE6F;110E 1175 11BE;CE6F;110E 1175 11BE;
+CE70;CE70;110E 1175 11BF;CE70;110E 1175 11BF;
+CE71;CE71;110E 1175 11C0;CE71;110E 1175 11C0;
+CE72;CE72;110E 1175 11C1;CE72;110E 1175 11C1;
+CE73;CE73;110E 1175 11C2;CE73;110E 1175 11C2;
+CE74;CE74;110F 1161;CE74;110F 1161;
+CE75;CE75;110F 1161 11A8;CE75;110F 1161 11A8;
+CE76;CE76;110F 1161 11A9;CE76;110F 1161 11A9;
+CE77;CE77;110F 1161 11AA;CE77;110F 1161 11AA;
+CE78;CE78;110F 1161 11AB;CE78;110F 1161 11AB;
+CE79;CE79;110F 1161 11AC;CE79;110F 1161 11AC;
+CE7A;CE7A;110F 1161 11AD;CE7A;110F 1161 11AD;
+CE7B;CE7B;110F 1161 11AE;CE7B;110F 1161 11AE;
+CE7C;CE7C;110F 1161 11AF;CE7C;110F 1161 11AF;
+CE7D;CE7D;110F 1161 11B0;CE7D;110F 1161 11B0;
+CE7E;CE7E;110F 1161 11B1;CE7E;110F 1161 11B1;
+CE7F;CE7F;110F 1161 11B2;CE7F;110F 1161 11B2;
+CE80;CE80;110F 1161 11B3;CE80;110F 1161 11B3;
+CE81;CE81;110F 1161 11B4;CE81;110F 1161 11B4;
+CE82;CE82;110F 1161 11B5;CE82;110F 1161 11B5;
+CE83;CE83;110F 1161 11B6;CE83;110F 1161 11B6;
+CE84;CE84;110F 1161 11B7;CE84;110F 1161 11B7;
+CE85;CE85;110F 1161 11B8;CE85;110F 1161 11B8;
+CE86;CE86;110F 1161 11B9;CE86;110F 1161 11B9;
+CE87;CE87;110F 1161 11BA;CE87;110F 1161 11BA;
+CE88;CE88;110F 1161 11BB;CE88;110F 1161 11BB;
+CE89;CE89;110F 1161 11BC;CE89;110F 1161 11BC;
+CE8A;CE8A;110F 1161 11BD;CE8A;110F 1161 11BD;
+CE8B;CE8B;110F 1161 11BE;CE8B;110F 1161 11BE;
+CE8C;CE8C;110F 1161 11BF;CE8C;110F 1161 11BF;
+CE8D;CE8D;110F 1161 11C0;CE8D;110F 1161 11C0;
+CE8E;CE8E;110F 1161 11C1;CE8E;110F 1161 11C1;
+CE8F;CE8F;110F 1161 11C2;CE8F;110F 1161 11C2;
+CE90;CE90;110F 1162;CE90;110F 1162;
+CE91;CE91;110F 1162 11A8;CE91;110F 1162 11A8;
+CE92;CE92;110F 1162 11A9;CE92;110F 1162 11A9;
+CE93;CE93;110F 1162 11AA;CE93;110F 1162 11AA;
+CE94;CE94;110F 1162 11AB;CE94;110F 1162 11AB;
+CE95;CE95;110F 1162 11AC;CE95;110F 1162 11AC;
+CE96;CE96;110F 1162 11AD;CE96;110F 1162 11AD;
+CE97;CE97;110F 1162 11AE;CE97;110F 1162 11AE;
+CE98;CE98;110F 1162 11AF;CE98;110F 1162 11AF;
+CE99;CE99;110F 1162 11B0;CE99;110F 1162 11B0;
+CE9A;CE9A;110F 1162 11B1;CE9A;110F 1162 11B1;
+CE9B;CE9B;110F 1162 11B2;CE9B;110F 1162 11B2;
+CE9C;CE9C;110F 1162 11B3;CE9C;110F 1162 11B3;
+CE9D;CE9D;110F 1162 11B4;CE9D;110F 1162 11B4;
+CE9E;CE9E;110F 1162 11B5;CE9E;110F 1162 11B5;
+CE9F;CE9F;110F 1162 11B6;CE9F;110F 1162 11B6;
+CEA0;CEA0;110F 1162 11B7;CEA0;110F 1162 11B7;
+CEA1;CEA1;110F 1162 11B8;CEA1;110F 1162 11B8;
+CEA2;CEA2;110F 1162 11B9;CEA2;110F 1162 11B9;
+CEA3;CEA3;110F 1162 11BA;CEA3;110F 1162 11BA;
+CEA4;CEA4;110F 1162 11BB;CEA4;110F 1162 11BB;
+CEA5;CEA5;110F 1162 11BC;CEA5;110F 1162 11BC;
+CEA6;CEA6;110F 1162 11BD;CEA6;110F 1162 11BD;
+CEA7;CEA7;110F 1162 11BE;CEA7;110F 1162 11BE;
+CEA8;CEA8;110F 1162 11BF;CEA8;110F 1162 11BF;
+CEA9;CEA9;110F 1162 11C0;CEA9;110F 1162 11C0;
+CEAA;CEAA;110F 1162 11C1;CEAA;110F 1162 11C1;
+CEAB;CEAB;110F 1162 11C2;CEAB;110F 1162 11C2;
+CEAC;CEAC;110F 1163;CEAC;110F 1163;
+CEAD;CEAD;110F 1163 11A8;CEAD;110F 1163 11A8;
+CEAE;CEAE;110F 1163 11A9;CEAE;110F 1163 11A9;
+CEAF;CEAF;110F 1163 11AA;CEAF;110F 1163 11AA;
+CEB0;CEB0;110F 1163 11AB;CEB0;110F 1163 11AB;
+CEB1;CEB1;110F 1163 11AC;CEB1;110F 1163 11AC;
+CEB2;CEB2;110F 1163 11AD;CEB2;110F 1163 11AD;
+CEB3;CEB3;110F 1163 11AE;CEB3;110F 1163 11AE;
+CEB4;CEB4;110F 1163 11AF;CEB4;110F 1163 11AF;
+CEB5;CEB5;110F 1163 11B0;CEB5;110F 1163 11B0;
+CEB6;CEB6;110F 1163 11B1;CEB6;110F 1163 11B1;
+CEB7;CEB7;110F 1163 11B2;CEB7;110F 1163 11B2;
+CEB8;CEB8;110F 1163 11B3;CEB8;110F 1163 11B3;
+CEB9;CEB9;110F 1163 11B4;CEB9;110F 1163 11B4;
+CEBA;CEBA;110F 1163 11B5;CEBA;110F 1163 11B5;
+CEBB;CEBB;110F 1163 11B6;CEBB;110F 1163 11B6;
+CEBC;CEBC;110F 1163 11B7;CEBC;110F 1163 11B7;
+CEBD;CEBD;110F 1163 11B8;CEBD;110F 1163 11B8;
+CEBE;CEBE;110F 1163 11B9;CEBE;110F 1163 11B9;
+CEBF;CEBF;110F 1163 11BA;CEBF;110F 1163 11BA;
+CEC0;CEC0;110F 1163 11BB;CEC0;110F 1163 11BB;
+CEC1;CEC1;110F 1163 11BC;CEC1;110F 1163 11BC;
+CEC2;CEC2;110F 1163 11BD;CEC2;110F 1163 11BD;
+CEC3;CEC3;110F 1163 11BE;CEC3;110F 1163 11BE;
+CEC4;CEC4;110F 1163 11BF;CEC4;110F 1163 11BF;
+CEC5;CEC5;110F 1163 11C0;CEC5;110F 1163 11C0;
+CEC6;CEC6;110F 1163 11C1;CEC6;110F 1163 11C1;
+CEC7;CEC7;110F 1163 11C2;CEC7;110F 1163 11C2;
+CEC8;CEC8;110F 1164;CEC8;110F 1164;
+CEC9;CEC9;110F 1164 11A8;CEC9;110F 1164 11A8;
+CECA;CECA;110F 1164 11A9;CECA;110F 1164 11A9;
+CECB;CECB;110F 1164 11AA;CECB;110F 1164 11AA;
+CECC;CECC;110F 1164 11AB;CECC;110F 1164 11AB;
+CECD;CECD;110F 1164 11AC;CECD;110F 1164 11AC;
+CECE;CECE;110F 1164 11AD;CECE;110F 1164 11AD;
+CECF;CECF;110F 1164 11AE;CECF;110F 1164 11AE;
+CED0;CED0;110F 1164 11AF;CED0;110F 1164 11AF;
+CED1;CED1;110F 1164 11B0;CED1;110F 1164 11B0;
+CED2;CED2;110F 1164 11B1;CED2;110F 1164 11B1;
+CED3;CED3;110F 1164 11B2;CED3;110F 1164 11B2;
+CED4;CED4;110F 1164 11B3;CED4;110F 1164 11B3;
+CED5;CED5;110F 1164 11B4;CED5;110F 1164 11B4;
+CED6;CED6;110F 1164 11B5;CED6;110F 1164 11B5;
+CED7;CED7;110F 1164 11B6;CED7;110F 1164 11B6;
+CED8;CED8;110F 1164 11B7;CED8;110F 1164 11B7;
+CED9;CED9;110F 1164 11B8;CED9;110F 1164 11B8;
+CEDA;CEDA;110F 1164 11B9;CEDA;110F 1164 11B9;
+CEDB;CEDB;110F 1164 11BA;CEDB;110F 1164 11BA;
+CEDC;CEDC;110F 1164 11BB;CEDC;110F 1164 11BB;
+CEDD;CEDD;110F 1164 11BC;CEDD;110F 1164 11BC;
+CEDE;CEDE;110F 1164 11BD;CEDE;110F 1164 11BD;
+CEDF;CEDF;110F 1164 11BE;CEDF;110F 1164 11BE;
+CEE0;CEE0;110F 1164 11BF;CEE0;110F 1164 11BF;
+CEE1;CEE1;110F 1164 11C0;CEE1;110F 1164 11C0;
+CEE2;CEE2;110F 1164 11C1;CEE2;110F 1164 11C1;
+CEE3;CEE3;110F 1164 11C2;CEE3;110F 1164 11C2;
+CEE4;CEE4;110F 1165;CEE4;110F 1165;
+CEE5;CEE5;110F 1165 11A8;CEE5;110F 1165 11A8;
+CEE6;CEE6;110F 1165 11A9;CEE6;110F 1165 11A9;
+CEE7;CEE7;110F 1165 11AA;CEE7;110F 1165 11AA;
+CEE8;CEE8;110F 1165 11AB;CEE8;110F 1165 11AB;
+CEE9;CEE9;110F 1165 11AC;CEE9;110F 1165 11AC;
+CEEA;CEEA;110F 1165 11AD;CEEA;110F 1165 11AD;
+CEEB;CEEB;110F 1165 11AE;CEEB;110F 1165 11AE;
+CEEC;CEEC;110F 1165 11AF;CEEC;110F 1165 11AF;
+CEED;CEED;110F 1165 11B0;CEED;110F 1165 11B0;
+CEEE;CEEE;110F 1165 11B1;CEEE;110F 1165 11B1;
+CEEF;CEEF;110F 1165 11B2;CEEF;110F 1165 11B2;
+CEF0;CEF0;110F 1165 11B3;CEF0;110F 1165 11B3;
+CEF1;CEF1;110F 1165 11B4;CEF1;110F 1165 11B4;
+CEF2;CEF2;110F 1165 11B5;CEF2;110F 1165 11B5;
+CEF3;CEF3;110F 1165 11B6;CEF3;110F 1165 11B6;
+CEF4;CEF4;110F 1165 11B7;CEF4;110F 1165 11B7;
+CEF5;CEF5;110F 1165 11B8;CEF5;110F 1165 11B8;
+CEF6;CEF6;110F 1165 11B9;CEF6;110F 1165 11B9;
+CEF7;CEF7;110F 1165 11BA;CEF7;110F 1165 11BA;
+CEF8;CEF8;110F 1165 11BB;CEF8;110F 1165 11BB;
+CEF9;CEF9;110F 1165 11BC;CEF9;110F 1165 11BC;
+CEFA;CEFA;110F 1165 11BD;CEFA;110F 1165 11BD;
+CEFB;CEFB;110F 1165 11BE;CEFB;110F 1165 11BE;
+CEFC;CEFC;110F 1165 11BF;CEFC;110F 1165 11BF;
+CEFD;CEFD;110F 1165 11C0;CEFD;110F 1165 11C0;
+CEFE;CEFE;110F 1165 11C1;CEFE;110F 1165 11C1;
+CEFF;CEFF;110F 1165 11C2;CEFF;110F 1165 11C2;
+CF00;CF00;110F 1166;CF00;110F 1166;
+CF01;CF01;110F 1166 11A8;CF01;110F 1166 11A8;
+CF02;CF02;110F 1166 11A9;CF02;110F 1166 11A9;
+CF03;CF03;110F 1166 11AA;CF03;110F 1166 11AA;
+CF04;CF04;110F 1166 11AB;CF04;110F 1166 11AB;
+CF05;CF05;110F 1166 11AC;CF05;110F 1166 11AC;
+CF06;CF06;110F 1166 11AD;CF06;110F 1166 11AD;
+CF07;CF07;110F 1166 11AE;CF07;110F 1166 11AE;
+CF08;CF08;110F 1166 11AF;CF08;110F 1166 11AF;
+CF09;CF09;110F 1166 11B0;CF09;110F 1166 11B0;
+CF0A;CF0A;110F 1166 11B1;CF0A;110F 1166 11B1;
+CF0B;CF0B;110F 1166 11B2;CF0B;110F 1166 11B2;
+CF0C;CF0C;110F 1166 11B3;CF0C;110F 1166 11B3;
+CF0D;CF0D;110F 1166 11B4;CF0D;110F 1166 11B4;
+CF0E;CF0E;110F 1166 11B5;CF0E;110F 1166 11B5;
+CF0F;CF0F;110F 1166 11B6;CF0F;110F 1166 11B6;
+CF10;CF10;110F 1166 11B7;CF10;110F 1166 11B7;
+CF11;CF11;110F 1166 11B8;CF11;110F 1166 11B8;
+CF12;CF12;110F 1166 11B9;CF12;110F 1166 11B9;
+CF13;CF13;110F 1166 11BA;CF13;110F 1166 11BA;
+CF14;CF14;110F 1166 11BB;CF14;110F 1166 11BB;
+CF15;CF15;110F 1166 11BC;CF15;110F 1166 11BC;
+CF16;CF16;110F 1166 11BD;CF16;110F 1166 11BD;
+CF17;CF17;110F 1166 11BE;CF17;110F 1166 11BE;
+CF18;CF18;110F 1166 11BF;CF18;110F 1166 11BF;
+CF19;CF19;110F 1166 11C0;CF19;110F 1166 11C0;
+CF1A;CF1A;110F 1166 11C1;CF1A;110F 1166 11C1;
+CF1B;CF1B;110F 1166 11C2;CF1B;110F 1166 11C2;
+CF1C;CF1C;110F 1167;CF1C;110F 1167;
+CF1D;CF1D;110F 1167 11A8;CF1D;110F 1167 11A8;
+CF1E;CF1E;110F 1167 11A9;CF1E;110F 1167 11A9;
+CF1F;CF1F;110F 1167 11AA;CF1F;110F 1167 11AA;
+CF20;CF20;110F 1167 11AB;CF20;110F 1167 11AB;
+CF21;CF21;110F 1167 11AC;CF21;110F 1167 11AC;
+CF22;CF22;110F 1167 11AD;CF22;110F 1167 11AD;
+CF23;CF23;110F 1167 11AE;CF23;110F 1167 11AE;
+CF24;CF24;110F 1167 11AF;CF24;110F 1167 11AF;
+CF25;CF25;110F 1167 11B0;CF25;110F 1167 11B0;
+CF26;CF26;110F 1167 11B1;CF26;110F 1167 11B1;
+CF27;CF27;110F 1167 11B2;CF27;110F 1167 11B2;
+CF28;CF28;110F 1167 11B3;CF28;110F 1167 11B3;
+CF29;CF29;110F 1167 11B4;CF29;110F 1167 11B4;
+CF2A;CF2A;110F 1167 11B5;CF2A;110F 1167 11B5;
+CF2B;CF2B;110F 1167 11B6;CF2B;110F 1167 11B6;
+CF2C;CF2C;110F 1167 11B7;CF2C;110F 1167 11B7;
+CF2D;CF2D;110F 1167 11B8;CF2D;110F 1167 11B8;
+CF2E;CF2E;110F 1167 11B9;CF2E;110F 1167 11B9;
+CF2F;CF2F;110F 1167 11BA;CF2F;110F 1167 11BA;
+CF30;CF30;110F 1167 11BB;CF30;110F 1167 11BB;
+CF31;CF31;110F 1167 11BC;CF31;110F 1167 11BC;
+CF32;CF32;110F 1167 11BD;CF32;110F 1167 11BD;
+CF33;CF33;110F 1167 11BE;CF33;110F 1167 11BE;
+CF34;CF34;110F 1167 11BF;CF34;110F 1167 11BF;
+CF35;CF35;110F 1167 11C0;CF35;110F 1167 11C0;
+CF36;CF36;110F 1167 11C1;CF36;110F 1167 11C1;
+CF37;CF37;110F 1167 11C2;CF37;110F 1167 11C2;
+CF38;CF38;110F 1168;CF38;110F 1168;
+CF39;CF39;110F 1168 11A8;CF39;110F 1168 11A8;
+CF3A;CF3A;110F 1168 11A9;CF3A;110F 1168 11A9;
+CF3B;CF3B;110F 1168 11AA;CF3B;110F 1168 11AA;
+CF3C;CF3C;110F 1168 11AB;CF3C;110F 1168 11AB;
+CF3D;CF3D;110F 1168 11AC;CF3D;110F 1168 11AC;
+CF3E;CF3E;110F 1168 11AD;CF3E;110F 1168 11AD;
+CF3F;CF3F;110F 1168 11AE;CF3F;110F 1168 11AE;
+CF40;CF40;110F 1168 11AF;CF40;110F 1168 11AF;
+CF41;CF41;110F 1168 11B0;CF41;110F 1168 11B0;
+CF42;CF42;110F 1168 11B1;CF42;110F 1168 11B1;
+CF43;CF43;110F 1168 11B2;CF43;110F 1168 11B2;
+CF44;CF44;110F 1168 11B3;CF44;110F 1168 11B3;
+CF45;CF45;110F 1168 11B4;CF45;110F 1168 11B4;
+CF46;CF46;110F 1168 11B5;CF46;110F 1168 11B5;
+CF47;CF47;110F 1168 11B6;CF47;110F 1168 11B6;
+CF48;CF48;110F 1168 11B7;CF48;110F 1168 11B7;
+CF49;CF49;110F 1168 11B8;CF49;110F 1168 11B8;
+CF4A;CF4A;110F 1168 11B9;CF4A;110F 1168 11B9;
+CF4B;CF4B;110F 1168 11BA;CF4B;110F 1168 11BA;
+CF4C;CF4C;110F 1168 11BB;CF4C;110F 1168 11BB;
+CF4D;CF4D;110F 1168 11BC;CF4D;110F 1168 11BC;
+CF4E;CF4E;110F 1168 11BD;CF4E;110F 1168 11BD;
+CF4F;CF4F;110F 1168 11BE;CF4F;110F 1168 11BE;
+CF50;CF50;110F 1168 11BF;CF50;110F 1168 11BF;
+CF51;CF51;110F 1168 11C0;CF51;110F 1168 11C0;
+CF52;CF52;110F 1168 11C1;CF52;110F 1168 11C1;
+CF53;CF53;110F 1168 11C2;CF53;110F 1168 11C2;
+CF54;CF54;110F 1169;CF54;110F 1169;
+CF55;CF55;110F 1169 11A8;CF55;110F 1169 11A8;
+CF56;CF56;110F 1169 11A9;CF56;110F 1169 11A9;
+CF57;CF57;110F 1169 11AA;CF57;110F 1169 11AA;
+CF58;CF58;110F 1169 11AB;CF58;110F 1169 11AB;
+CF59;CF59;110F 1169 11AC;CF59;110F 1169 11AC;
+CF5A;CF5A;110F 1169 11AD;CF5A;110F 1169 11AD;
+CF5B;CF5B;110F 1169 11AE;CF5B;110F 1169 11AE;
+CF5C;CF5C;110F 1169 11AF;CF5C;110F 1169 11AF;
+CF5D;CF5D;110F 1169 11B0;CF5D;110F 1169 11B0;
+CF5E;CF5E;110F 1169 11B1;CF5E;110F 1169 11B1;
+CF5F;CF5F;110F 1169 11B2;CF5F;110F 1169 11B2;
+CF60;CF60;110F 1169 11B3;CF60;110F 1169 11B3;
+CF61;CF61;110F 1169 11B4;CF61;110F 1169 11B4;
+CF62;CF62;110F 1169 11B5;CF62;110F 1169 11B5;
+CF63;CF63;110F 1169 11B6;CF63;110F 1169 11B6;
+CF64;CF64;110F 1169 11B7;CF64;110F 1169 11B7;
+CF65;CF65;110F 1169 11B8;CF65;110F 1169 11B8;
+CF66;CF66;110F 1169 11B9;CF66;110F 1169 11B9;
+CF67;CF67;110F 1169 11BA;CF67;110F 1169 11BA;
+CF68;CF68;110F 1169 11BB;CF68;110F 1169 11BB;
+CF69;CF69;110F 1169 11BC;CF69;110F 1169 11BC;
+CF6A;CF6A;110F 1169 11BD;CF6A;110F 1169 11BD;
+CF6B;CF6B;110F 1169 11BE;CF6B;110F 1169 11BE;
+CF6C;CF6C;110F 1169 11BF;CF6C;110F 1169 11BF;
+CF6D;CF6D;110F 1169 11C0;CF6D;110F 1169 11C0;
+CF6E;CF6E;110F 1169 11C1;CF6E;110F 1169 11C1;
+CF6F;CF6F;110F 1169 11C2;CF6F;110F 1169 11C2;
+CF70;CF70;110F 116A;CF70;110F 116A;
+CF71;CF71;110F 116A 11A8;CF71;110F 116A 11A8;
+CF72;CF72;110F 116A 11A9;CF72;110F 116A 11A9;
+CF73;CF73;110F 116A 11AA;CF73;110F 116A 11AA;
+CF74;CF74;110F 116A 11AB;CF74;110F 116A 11AB;
+CF75;CF75;110F 116A 11AC;CF75;110F 116A 11AC;
+CF76;CF76;110F 116A 11AD;CF76;110F 116A 11AD;
+CF77;CF77;110F 116A 11AE;CF77;110F 116A 11AE;
+CF78;CF78;110F 116A 11AF;CF78;110F 116A 11AF;
+CF79;CF79;110F 116A 11B0;CF79;110F 116A 11B0;
+CF7A;CF7A;110F 116A 11B1;CF7A;110F 116A 11B1;
+CF7B;CF7B;110F 116A 11B2;CF7B;110F 116A 11B2;
+CF7C;CF7C;110F 116A 11B3;CF7C;110F 116A 11B3;
+CF7D;CF7D;110F 116A 11B4;CF7D;110F 116A 11B4;
+CF7E;CF7E;110F 116A 11B5;CF7E;110F 116A 11B5;
+CF7F;CF7F;110F 116A 11B6;CF7F;110F 116A 11B6;
+CF80;CF80;110F 116A 11B7;CF80;110F 116A 11B7;
+CF81;CF81;110F 116A 11B8;CF81;110F 116A 11B8;
+CF82;CF82;110F 116A 11B9;CF82;110F 116A 11B9;
+CF83;CF83;110F 116A 11BA;CF83;110F 116A 11BA;
+CF84;CF84;110F 116A 11BB;CF84;110F 116A 11BB;
+CF85;CF85;110F 116A 11BC;CF85;110F 116A 11BC;
+CF86;CF86;110F 116A 11BD;CF86;110F 116A 11BD;
+CF87;CF87;110F 116A 11BE;CF87;110F 116A 11BE;
+CF88;CF88;110F 116A 11BF;CF88;110F 116A 11BF;
+CF89;CF89;110F 116A 11C0;CF89;110F 116A 11C0;
+CF8A;CF8A;110F 116A 11C1;CF8A;110F 116A 11C1;
+CF8B;CF8B;110F 116A 11C2;CF8B;110F 116A 11C2;
+CF8C;CF8C;110F 116B;CF8C;110F 116B;
+CF8D;CF8D;110F 116B 11A8;CF8D;110F 116B 11A8;
+CF8E;CF8E;110F 116B 11A9;CF8E;110F 116B 11A9;
+CF8F;CF8F;110F 116B 11AA;CF8F;110F 116B 11AA;
+CF90;CF90;110F 116B 11AB;CF90;110F 116B 11AB;
+CF91;CF91;110F 116B 11AC;CF91;110F 116B 11AC;
+CF92;CF92;110F 116B 11AD;CF92;110F 116B 11AD;
+CF93;CF93;110F 116B 11AE;CF93;110F 116B 11AE;
+CF94;CF94;110F 116B 11AF;CF94;110F 116B 11AF;
+CF95;CF95;110F 116B 11B0;CF95;110F 116B 11B0;
+CF96;CF96;110F 116B 11B1;CF96;110F 116B 11B1;
+CF97;CF97;110F 116B 11B2;CF97;110F 116B 11B2;
+CF98;CF98;110F 116B 11B3;CF98;110F 116B 11B3;
+CF99;CF99;110F 116B 11B4;CF99;110F 116B 11B4;
+CF9A;CF9A;110F 116B 11B5;CF9A;110F 116B 11B5;
+CF9B;CF9B;110F 116B 11B6;CF9B;110F 116B 11B6;
+CF9C;CF9C;110F 116B 11B7;CF9C;110F 116B 11B7;
+CF9D;CF9D;110F 116B 11B8;CF9D;110F 116B 11B8;
+CF9E;CF9E;110F 116B 11B9;CF9E;110F 116B 11B9;
+CF9F;CF9F;110F 116B 11BA;CF9F;110F 116B 11BA;
+CFA0;CFA0;110F 116B 11BB;CFA0;110F 116B 11BB;
+CFA1;CFA1;110F 116B 11BC;CFA1;110F 116B 11BC;
+CFA2;CFA2;110F 116B 11BD;CFA2;110F 116B 11BD;
+CFA3;CFA3;110F 116B 11BE;CFA3;110F 116B 11BE;
+CFA4;CFA4;110F 116B 11BF;CFA4;110F 116B 11BF;
+CFA5;CFA5;110F 116B 11C0;CFA5;110F 116B 11C0;
+CFA6;CFA6;110F 116B 11C1;CFA6;110F 116B 11C1;
+CFA7;CFA7;110F 116B 11C2;CFA7;110F 116B 11C2;
+CFA8;CFA8;110F 116C;CFA8;110F 116C;
+CFA9;CFA9;110F 116C 11A8;CFA9;110F 116C 11A8;
+CFAA;CFAA;110F 116C 11A9;CFAA;110F 116C 11A9;
+CFAB;CFAB;110F 116C 11AA;CFAB;110F 116C 11AA;
+CFAC;CFAC;110F 116C 11AB;CFAC;110F 116C 11AB;
+CFAD;CFAD;110F 116C 11AC;CFAD;110F 116C 11AC;
+CFAE;CFAE;110F 116C 11AD;CFAE;110F 116C 11AD;
+CFAF;CFAF;110F 116C 11AE;CFAF;110F 116C 11AE;
+CFB0;CFB0;110F 116C 11AF;CFB0;110F 116C 11AF;
+CFB1;CFB1;110F 116C 11B0;CFB1;110F 116C 11B0;
+CFB2;CFB2;110F 116C 11B1;CFB2;110F 116C 11B1;
+CFB3;CFB3;110F 116C 11B2;CFB3;110F 116C 11B2;
+CFB4;CFB4;110F 116C 11B3;CFB4;110F 116C 11B3;
+CFB5;CFB5;110F 116C 11B4;CFB5;110F 116C 11B4;
+CFB6;CFB6;110F 116C 11B5;CFB6;110F 116C 11B5;
+CFB7;CFB7;110F 116C 11B6;CFB7;110F 116C 11B6;
+CFB8;CFB8;110F 116C 11B7;CFB8;110F 116C 11B7;
+CFB9;CFB9;110F 116C 11B8;CFB9;110F 116C 11B8;
+CFBA;CFBA;110F 116C 11B9;CFBA;110F 116C 11B9;
+CFBB;CFBB;110F 116C 11BA;CFBB;110F 116C 11BA;
+CFBC;CFBC;110F 116C 11BB;CFBC;110F 116C 11BB;
+CFBD;CFBD;110F 116C 11BC;CFBD;110F 116C 11BC;
+CFBE;CFBE;110F 116C 11BD;CFBE;110F 116C 11BD;
+CFBF;CFBF;110F 116C 11BE;CFBF;110F 116C 11BE;
+CFC0;CFC0;110F 116C 11BF;CFC0;110F 116C 11BF;
+CFC1;CFC1;110F 116C 11C0;CFC1;110F 116C 11C0;
+CFC2;CFC2;110F 116C 11C1;CFC2;110F 116C 11C1;
+CFC3;CFC3;110F 116C 11C2;CFC3;110F 116C 11C2;
+CFC4;CFC4;110F 116D;CFC4;110F 116D;
+CFC5;CFC5;110F 116D 11A8;CFC5;110F 116D 11A8;
+CFC6;CFC6;110F 116D 11A9;CFC6;110F 116D 11A9;
+CFC7;CFC7;110F 116D 11AA;CFC7;110F 116D 11AA;
+CFC8;CFC8;110F 116D 11AB;CFC8;110F 116D 11AB;
+CFC9;CFC9;110F 116D 11AC;CFC9;110F 116D 11AC;
+CFCA;CFCA;110F 116D 11AD;CFCA;110F 116D 11AD;
+CFCB;CFCB;110F 116D 11AE;CFCB;110F 116D 11AE;
+CFCC;CFCC;110F 116D 11AF;CFCC;110F 116D 11AF;
+CFCD;CFCD;110F 116D 11B0;CFCD;110F 116D 11B0;
+CFCE;CFCE;110F 116D 11B1;CFCE;110F 116D 11B1;
+CFCF;CFCF;110F 116D 11B2;CFCF;110F 116D 11B2;
+CFD0;CFD0;110F 116D 11B3;CFD0;110F 116D 11B3;
+CFD1;CFD1;110F 116D 11B4;CFD1;110F 116D 11B4;
+CFD2;CFD2;110F 116D 11B5;CFD2;110F 116D 11B5;
+CFD3;CFD3;110F 116D 11B6;CFD3;110F 116D 11B6;
+CFD4;CFD4;110F 116D 11B7;CFD4;110F 116D 11B7;
+CFD5;CFD5;110F 116D 11B8;CFD5;110F 116D 11B8;
+CFD6;CFD6;110F 116D 11B9;CFD6;110F 116D 11B9;
+CFD7;CFD7;110F 116D 11BA;CFD7;110F 116D 11BA;
+CFD8;CFD8;110F 116D 11BB;CFD8;110F 116D 11BB;
+CFD9;CFD9;110F 116D 11BC;CFD9;110F 116D 11BC;
+CFDA;CFDA;110F 116D 11BD;CFDA;110F 116D 11BD;
+CFDB;CFDB;110F 116D 11BE;CFDB;110F 116D 11BE;
+CFDC;CFDC;110F 116D 11BF;CFDC;110F 116D 11BF;
+CFDD;CFDD;110F 116D 11C0;CFDD;110F 116D 11C0;
+CFDE;CFDE;110F 116D 11C1;CFDE;110F 116D 11C1;
+CFDF;CFDF;110F 116D 11C2;CFDF;110F 116D 11C2;
+CFE0;CFE0;110F 116E;CFE0;110F 116E;
+CFE1;CFE1;110F 116E 11A8;CFE1;110F 116E 11A8;
+CFE2;CFE2;110F 116E 11A9;CFE2;110F 116E 11A9;
+CFE3;CFE3;110F 116E 11AA;CFE3;110F 116E 11AA;
+CFE4;CFE4;110F 116E 11AB;CFE4;110F 116E 11AB;
+CFE5;CFE5;110F 116E 11AC;CFE5;110F 116E 11AC;
+CFE6;CFE6;110F 116E 11AD;CFE6;110F 116E 11AD;
+CFE7;CFE7;110F 116E 11AE;CFE7;110F 116E 11AE;
+CFE8;CFE8;110F 116E 11AF;CFE8;110F 116E 11AF;
+CFE9;CFE9;110F 116E 11B0;CFE9;110F 116E 11B0;
+CFEA;CFEA;110F 116E 11B1;CFEA;110F 116E 11B1;
+CFEB;CFEB;110F 116E 11B2;CFEB;110F 116E 11B2;
+CFEC;CFEC;110F 116E 11B3;CFEC;110F 116E 11B3;
+CFED;CFED;110F 116E 11B4;CFED;110F 116E 11B4;
+CFEE;CFEE;110F 116E 11B5;CFEE;110F 116E 11B5;
+CFEF;CFEF;110F 116E 11B6;CFEF;110F 116E 11B6;
+CFF0;CFF0;110F 116E 11B7;CFF0;110F 116E 11B7;
+CFF1;CFF1;110F 116E 11B8;CFF1;110F 116E 11B8;
+CFF2;CFF2;110F 116E 11B9;CFF2;110F 116E 11B9;
+CFF3;CFF3;110F 116E 11BA;CFF3;110F 116E 11BA;
+CFF4;CFF4;110F 116E 11BB;CFF4;110F 116E 11BB;
+CFF5;CFF5;110F 116E 11BC;CFF5;110F 116E 11BC;
+CFF6;CFF6;110F 116E 11BD;CFF6;110F 116E 11BD;
+CFF7;CFF7;110F 116E 11BE;CFF7;110F 116E 11BE;
+CFF8;CFF8;110F 116E 11BF;CFF8;110F 116E 11BF;
+CFF9;CFF9;110F 116E 11C0;CFF9;110F 116E 11C0;
+CFFA;CFFA;110F 116E 11C1;CFFA;110F 116E 11C1;
+CFFB;CFFB;110F 116E 11C2;CFFB;110F 116E 11C2;
+CFFC;CFFC;110F 116F;CFFC;110F 116F;
+CFFD;CFFD;110F 116F 11A8;CFFD;110F 116F 11A8;
+CFFE;CFFE;110F 116F 11A9;CFFE;110F 116F 11A9;
+CFFF;CFFF;110F 116F 11AA;CFFF;110F 116F 11AA;
+D000;D000;110F 116F 11AB;D000;110F 116F 11AB;
+D001;D001;110F 116F 11AC;D001;110F 116F 11AC;
+D002;D002;110F 116F 11AD;D002;110F 116F 11AD;
+D003;D003;110F 116F 11AE;D003;110F 116F 11AE;
+D004;D004;110F 116F 11AF;D004;110F 116F 11AF;
+D005;D005;110F 116F 11B0;D005;110F 116F 11B0;
+D006;D006;110F 116F 11B1;D006;110F 116F 11B1;
+D007;D007;110F 116F 11B2;D007;110F 116F 11B2;
+D008;D008;110F 116F 11B3;D008;110F 116F 11B3;
+D009;D009;110F 116F 11B4;D009;110F 116F 11B4;
+D00A;D00A;110F 116F 11B5;D00A;110F 116F 11B5;
+D00B;D00B;110F 116F 11B6;D00B;110F 116F 11B6;
+D00C;D00C;110F 116F 11B7;D00C;110F 116F 11B7;
+D00D;D00D;110F 116F 11B8;D00D;110F 116F 11B8;
+D00E;D00E;110F 116F 11B9;D00E;110F 116F 11B9;
+D00F;D00F;110F 116F 11BA;D00F;110F 116F 11BA;
+D010;D010;110F 116F 11BB;D010;110F 116F 11BB;
+D011;D011;110F 116F 11BC;D011;110F 116F 11BC;
+D012;D012;110F 116F 11BD;D012;110F 116F 11BD;
+D013;D013;110F 116F 11BE;D013;110F 116F 11BE;
+D014;D014;110F 116F 11BF;D014;110F 116F 11BF;
+D015;D015;110F 116F 11C0;D015;110F 116F 11C0;
+D016;D016;110F 116F 11C1;D016;110F 116F 11C1;
+D017;D017;110F 116F 11C2;D017;110F 116F 11C2;
+D018;D018;110F 1170;D018;110F 1170;
+D019;D019;110F 1170 11A8;D019;110F 1170 11A8;
+D01A;D01A;110F 1170 11A9;D01A;110F 1170 11A9;
+D01B;D01B;110F 1170 11AA;D01B;110F 1170 11AA;
+D01C;D01C;110F 1170 11AB;D01C;110F 1170 11AB;
+D01D;D01D;110F 1170 11AC;D01D;110F 1170 11AC;
+D01E;D01E;110F 1170 11AD;D01E;110F 1170 11AD;
+D01F;D01F;110F 1170 11AE;D01F;110F 1170 11AE;
+D020;D020;110F 1170 11AF;D020;110F 1170 11AF;
+D021;D021;110F 1170 11B0;D021;110F 1170 11B0;
+D022;D022;110F 1170 11B1;D022;110F 1170 11B1;
+D023;D023;110F 1170 11B2;D023;110F 1170 11B2;
+D024;D024;110F 1170 11B3;D024;110F 1170 11B3;
+D025;D025;110F 1170 11B4;D025;110F 1170 11B4;
+D026;D026;110F 1170 11B5;D026;110F 1170 11B5;
+D027;D027;110F 1170 11B6;D027;110F 1170 11B6;
+D028;D028;110F 1170 11B7;D028;110F 1170 11B7;
+D029;D029;110F 1170 11B8;D029;110F 1170 11B8;
+D02A;D02A;110F 1170 11B9;D02A;110F 1170 11B9;
+D02B;D02B;110F 1170 11BA;D02B;110F 1170 11BA;
+D02C;D02C;110F 1170 11BB;D02C;110F 1170 11BB;
+D02D;D02D;110F 1170 11BC;D02D;110F 1170 11BC;
+D02E;D02E;110F 1170 11BD;D02E;110F 1170 11BD;
+D02F;D02F;110F 1170 11BE;D02F;110F 1170 11BE;
+D030;D030;110F 1170 11BF;D030;110F 1170 11BF;
+D031;D031;110F 1170 11C0;D031;110F 1170 11C0;
+D032;D032;110F 1170 11C1;D032;110F 1170 11C1;
+D033;D033;110F 1170 11C2;D033;110F 1170 11C2;
+D034;D034;110F 1171;D034;110F 1171;
+D035;D035;110F 1171 11A8;D035;110F 1171 11A8;
+D036;D036;110F 1171 11A9;D036;110F 1171 11A9;
+D037;D037;110F 1171 11AA;D037;110F 1171 11AA;
+D038;D038;110F 1171 11AB;D038;110F 1171 11AB;
+D039;D039;110F 1171 11AC;D039;110F 1171 11AC;
+D03A;D03A;110F 1171 11AD;D03A;110F 1171 11AD;
+D03B;D03B;110F 1171 11AE;D03B;110F 1171 11AE;
+D03C;D03C;110F 1171 11AF;D03C;110F 1171 11AF;
+D03D;D03D;110F 1171 11B0;D03D;110F 1171 11B0;
+D03E;D03E;110F 1171 11B1;D03E;110F 1171 11B1;
+D03F;D03F;110F 1171 11B2;D03F;110F 1171 11B2;
+D040;D040;110F 1171 11B3;D040;110F 1171 11B3;
+D041;D041;110F 1171 11B4;D041;110F 1171 11B4;
+D042;D042;110F 1171 11B5;D042;110F 1171 11B5;
+D043;D043;110F 1171 11B6;D043;110F 1171 11B6;
+D044;D044;110F 1171 11B7;D044;110F 1171 11B7;
+D045;D045;110F 1171 11B8;D045;110F 1171 11B8;
+D046;D046;110F 1171 11B9;D046;110F 1171 11B9;
+D047;D047;110F 1171 11BA;D047;110F 1171 11BA;
+D048;D048;110F 1171 11BB;D048;110F 1171 11BB;
+D049;D049;110F 1171 11BC;D049;110F 1171 11BC;
+D04A;D04A;110F 1171 11BD;D04A;110F 1171 11BD;
+D04B;D04B;110F 1171 11BE;D04B;110F 1171 11BE;
+D04C;D04C;110F 1171 11BF;D04C;110F 1171 11BF;
+D04D;D04D;110F 1171 11C0;D04D;110F 1171 11C0;
+D04E;D04E;110F 1171 11C1;D04E;110F 1171 11C1;
+D04F;D04F;110F 1171 11C2;D04F;110F 1171 11C2;
+D050;D050;110F 1172;D050;110F 1172;
+D051;D051;110F 1172 11A8;D051;110F 1172 11A8;
+D052;D052;110F 1172 11A9;D052;110F 1172 11A9;
+D053;D053;110F 1172 11AA;D053;110F 1172 11AA;
+D054;D054;110F 1172 11AB;D054;110F 1172 11AB;
+D055;D055;110F 1172 11AC;D055;110F 1172 11AC;
+D056;D056;110F 1172 11AD;D056;110F 1172 11AD;
+D057;D057;110F 1172 11AE;D057;110F 1172 11AE;
+D058;D058;110F 1172 11AF;D058;110F 1172 11AF;
+D059;D059;110F 1172 11B0;D059;110F 1172 11B0;
+D05A;D05A;110F 1172 11B1;D05A;110F 1172 11B1;
+D05B;D05B;110F 1172 11B2;D05B;110F 1172 11B2;
+D05C;D05C;110F 1172 11B3;D05C;110F 1172 11B3;
+D05D;D05D;110F 1172 11B4;D05D;110F 1172 11B4;
+D05E;D05E;110F 1172 11B5;D05E;110F 1172 11B5;
+D05F;D05F;110F 1172 11B6;D05F;110F 1172 11B6;
+D060;D060;110F 1172 11B7;D060;110F 1172 11B7;
+D061;D061;110F 1172 11B8;D061;110F 1172 11B8;
+D062;D062;110F 1172 11B9;D062;110F 1172 11B9;
+D063;D063;110F 1172 11BA;D063;110F 1172 11BA;
+D064;D064;110F 1172 11BB;D064;110F 1172 11BB;
+D065;D065;110F 1172 11BC;D065;110F 1172 11BC;
+D066;D066;110F 1172 11BD;D066;110F 1172 11BD;
+D067;D067;110F 1172 11BE;D067;110F 1172 11BE;
+D068;D068;110F 1172 11BF;D068;110F 1172 11BF;
+D069;D069;110F 1172 11C0;D069;110F 1172 11C0;
+D06A;D06A;110F 1172 11C1;D06A;110F 1172 11C1;
+D06B;D06B;110F 1172 11C2;D06B;110F 1172 11C2;
+D06C;D06C;110F 1173;D06C;110F 1173;
+D06D;D06D;110F 1173 11A8;D06D;110F 1173 11A8;
+D06E;D06E;110F 1173 11A9;D06E;110F 1173 11A9;
+D06F;D06F;110F 1173 11AA;D06F;110F 1173 11AA;
+D070;D070;110F 1173 11AB;D070;110F 1173 11AB;
+D071;D071;110F 1173 11AC;D071;110F 1173 11AC;
+D072;D072;110F 1173 11AD;D072;110F 1173 11AD;
+D073;D073;110F 1173 11AE;D073;110F 1173 11AE;
+D074;D074;110F 1173 11AF;D074;110F 1173 11AF;
+D075;D075;110F 1173 11B0;D075;110F 1173 11B0;
+D076;D076;110F 1173 11B1;D076;110F 1173 11B1;
+D077;D077;110F 1173 11B2;D077;110F 1173 11B2;
+D078;D078;110F 1173 11B3;D078;110F 1173 11B3;
+D079;D079;110F 1173 11B4;D079;110F 1173 11B4;
+D07A;D07A;110F 1173 11B5;D07A;110F 1173 11B5;
+D07B;D07B;110F 1173 11B6;D07B;110F 1173 11B6;
+D07C;D07C;110F 1173 11B7;D07C;110F 1173 11B7;
+D07D;D07D;110F 1173 11B8;D07D;110F 1173 11B8;
+D07E;D07E;110F 1173 11B9;D07E;110F 1173 11B9;
+D07F;D07F;110F 1173 11BA;D07F;110F 1173 11BA;
+D080;D080;110F 1173 11BB;D080;110F 1173 11BB;
+D081;D081;110F 1173 11BC;D081;110F 1173 11BC;
+D082;D082;110F 1173 11BD;D082;110F 1173 11BD;
+D083;D083;110F 1173 11BE;D083;110F 1173 11BE;
+D084;D084;110F 1173 11BF;D084;110F 1173 11BF;
+D085;D085;110F 1173 11C0;D085;110F 1173 11C0;
+D086;D086;110F 1173 11C1;D086;110F 1173 11C1;
+D087;D087;110F 1173 11C2;D087;110F 1173 11C2;
+D088;D088;110F 1174;D088;110F 1174;
+D089;D089;110F 1174 11A8;D089;110F 1174 11A8;
+D08A;D08A;110F 1174 11A9;D08A;110F 1174 11A9;
+D08B;D08B;110F 1174 11AA;D08B;110F 1174 11AA;
+D08C;D08C;110F 1174 11AB;D08C;110F 1174 11AB;
+D08D;D08D;110F 1174 11AC;D08D;110F 1174 11AC;
+D08E;D08E;110F 1174 11AD;D08E;110F 1174 11AD;
+D08F;D08F;110F 1174 11AE;D08F;110F 1174 11AE;
+D090;D090;110F 1174 11AF;D090;110F 1174 11AF;
+D091;D091;110F 1174 11B0;D091;110F 1174 11B0;
+D092;D092;110F 1174 11B1;D092;110F 1174 11B1;
+D093;D093;110F 1174 11B2;D093;110F 1174 11B2;
+D094;D094;110F 1174 11B3;D094;110F 1174 11B3;
+D095;D095;110F 1174 11B4;D095;110F 1174 11B4;
+D096;D096;110F 1174 11B5;D096;110F 1174 11B5;
+D097;D097;110F 1174 11B6;D097;110F 1174 11B6;
+D098;D098;110F 1174 11B7;D098;110F 1174 11B7;
+D099;D099;110F 1174 11B8;D099;110F 1174 11B8;
+D09A;D09A;110F 1174 11B9;D09A;110F 1174 11B9;
+D09B;D09B;110F 1174 11BA;D09B;110F 1174 11BA;
+D09C;D09C;110F 1174 11BB;D09C;110F 1174 11BB;
+D09D;D09D;110F 1174 11BC;D09D;110F 1174 11BC;
+D09E;D09E;110F 1174 11BD;D09E;110F 1174 11BD;
+D09F;D09F;110F 1174 11BE;D09F;110F 1174 11BE;
+D0A0;D0A0;110F 1174 11BF;D0A0;110F 1174 11BF;
+D0A1;D0A1;110F 1174 11C0;D0A1;110F 1174 11C0;
+D0A2;D0A2;110F 1174 11C1;D0A2;110F 1174 11C1;
+D0A3;D0A3;110F 1174 11C2;D0A3;110F 1174 11C2;
+D0A4;D0A4;110F 1175;D0A4;110F 1175;
+D0A5;D0A5;110F 1175 11A8;D0A5;110F 1175 11A8;
+D0A6;D0A6;110F 1175 11A9;D0A6;110F 1175 11A9;
+D0A7;D0A7;110F 1175 11AA;D0A7;110F 1175 11AA;
+D0A8;D0A8;110F 1175 11AB;D0A8;110F 1175 11AB;
+D0A9;D0A9;110F 1175 11AC;D0A9;110F 1175 11AC;
+D0AA;D0AA;110F 1175 11AD;D0AA;110F 1175 11AD;
+D0AB;D0AB;110F 1175 11AE;D0AB;110F 1175 11AE;
+D0AC;D0AC;110F 1175 11AF;D0AC;110F 1175 11AF;
+D0AD;D0AD;110F 1175 11B0;D0AD;110F 1175 11B0;
+D0AE;D0AE;110F 1175 11B1;D0AE;110F 1175 11B1;
+D0AF;D0AF;110F 1175 11B2;D0AF;110F 1175 11B2;
+D0B0;D0B0;110F 1175 11B3;D0B0;110F 1175 11B3;
+D0B1;D0B1;110F 1175 11B4;D0B1;110F 1175 11B4;
+D0B2;D0B2;110F 1175 11B5;D0B2;110F 1175 11B5;
+D0B3;D0B3;110F 1175 11B6;D0B3;110F 1175 11B6;
+D0B4;D0B4;110F 1175 11B7;D0B4;110F 1175 11B7;
+D0B5;D0B5;110F 1175 11B8;D0B5;110F 1175 11B8;
+D0B6;D0B6;110F 1175 11B9;D0B6;110F 1175 11B9;
+D0B7;D0B7;110F 1175 11BA;D0B7;110F 1175 11BA;
+D0B8;D0B8;110F 1175 11BB;D0B8;110F 1175 11BB;
+D0B9;D0B9;110F 1175 11BC;D0B9;110F 1175 11BC;
+D0BA;D0BA;110F 1175 11BD;D0BA;110F 1175 11BD;
+D0BB;D0BB;110F 1175 11BE;D0BB;110F 1175 11BE;
+D0BC;D0BC;110F 1175 11BF;D0BC;110F 1175 11BF;
+D0BD;D0BD;110F 1175 11C0;D0BD;110F 1175 11C0;
+D0BE;D0BE;110F 1175 11C1;D0BE;110F 1175 11C1;
+D0BF;D0BF;110F 1175 11C2;D0BF;110F 1175 11C2;
+D0C0;D0C0;1110 1161;D0C0;1110 1161;
+D0C1;D0C1;1110 1161 11A8;D0C1;1110 1161 11A8;
+D0C2;D0C2;1110 1161 11A9;D0C2;1110 1161 11A9;
+D0C3;D0C3;1110 1161 11AA;D0C3;1110 1161 11AA;
+D0C4;D0C4;1110 1161 11AB;D0C4;1110 1161 11AB;
+D0C5;D0C5;1110 1161 11AC;D0C5;1110 1161 11AC;
+D0C6;D0C6;1110 1161 11AD;D0C6;1110 1161 11AD;
+D0C7;D0C7;1110 1161 11AE;D0C7;1110 1161 11AE;
+D0C8;D0C8;1110 1161 11AF;D0C8;1110 1161 11AF;
+D0C9;D0C9;1110 1161 11B0;D0C9;1110 1161 11B0;
+D0CA;D0CA;1110 1161 11B1;D0CA;1110 1161 11B1;
+D0CB;D0CB;1110 1161 11B2;D0CB;1110 1161 11B2;
+D0CC;D0CC;1110 1161 11B3;D0CC;1110 1161 11B3;
+D0CD;D0CD;1110 1161 11B4;D0CD;1110 1161 11B4;
+D0CE;D0CE;1110 1161 11B5;D0CE;1110 1161 11B5;
+D0CF;D0CF;1110 1161 11B6;D0CF;1110 1161 11B6;
+D0D0;D0D0;1110 1161 11B7;D0D0;1110 1161 11B7;
+D0D1;D0D1;1110 1161 11B8;D0D1;1110 1161 11B8;
+D0D2;D0D2;1110 1161 11B9;D0D2;1110 1161 11B9;
+D0D3;D0D3;1110 1161 11BA;D0D3;1110 1161 11BA;
+D0D4;D0D4;1110 1161 11BB;D0D4;1110 1161 11BB;
+D0D5;D0D5;1110 1161 11BC;D0D5;1110 1161 11BC;
+D0D6;D0D6;1110 1161 11BD;D0D6;1110 1161 11BD;
+D0D7;D0D7;1110 1161 11BE;D0D7;1110 1161 11BE;
+D0D8;D0D8;1110 1161 11BF;D0D8;1110 1161 11BF;
+D0D9;D0D9;1110 1161 11C0;D0D9;1110 1161 11C0;
+D0DA;D0DA;1110 1161 11C1;D0DA;1110 1161 11C1;
+D0DB;D0DB;1110 1161 11C2;D0DB;1110 1161 11C2;
+D0DC;D0DC;1110 1162;D0DC;1110 1162;
+D0DD;D0DD;1110 1162 11A8;D0DD;1110 1162 11A8;
+D0DE;D0DE;1110 1162 11A9;D0DE;1110 1162 11A9;
+D0DF;D0DF;1110 1162 11AA;D0DF;1110 1162 11AA;
+D0E0;D0E0;1110 1162 11AB;D0E0;1110 1162 11AB;
+D0E1;D0E1;1110 1162 11AC;D0E1;1110 1162 11AC;
+D0E2;D0E2;1110 1162 11AD;D0E2;1110 1162 11AD;
+D0E3;D0E3;1110 1162 11AE;D0E3;1110 1162 11AE;
+D0E4;D0E4;1110 1162 11AF;D0E4;1110 1162 11AF;
+D0E5;D0E5;1110 1162 11B0;D0E5;1110 1162 11B0;
+D0E6;D0E6;1110 1162 11B1;D0E6;1110 1162 11B1;
+D0E7;D0E7;1110 1162 11B2;D0E7;1110 1162 11B2;
+D0E8;D0E8;1110 1162 11B3;D0E8;1110 1162 11B3;
+D0E9;D0E9;1110 1162 11B4;D0E9;1110 1162 11B4;
+D0EA;D0EA;1110 1162 11B5;D0EA;1110 1162 11B5;
+D0EB;D0EB;1110 1162 11B6;D0EB;1110 1162 11B6;
+D0EC;D0EC;1110 1162 11B7;D0EC;1110 1162 11B7;
+D0ED;D0ED;1110 1162 11B8;D0ED;1110 1162 11B8;
+D0EE;D0EE;1110 1162 11B9;D0EE;1110 1162 11B9;
+D0EF;D0EF;1110 1162 11BA;D0EF;1110 1162 11BA;
+D0F0;D0F0;1110 1162 11BB;D0F0;1110 1162 11BB;
+D0F1;D0F1;1110 1162 11BC;D0F1;1110 1162 11BC;
+D0F2;D0F2;1110 1162 11BD;D0F2;1110 1162 11BD;
+D0F3;D0F3;1110 1162 11BE;D0F3;1110 1162 11BE;
+D0F4;D0F4;1110 1162 11BF;D0F4;1110 1162 11BF;
+D0F5;D0F5;1110 1162 11C0;D0F5;1110 1162 11C0;
+D0F6;D0F6;1110 1162 11C1;D0F6;1110 1162 11C1;
+D0F7;D0F7;1110 1162 11C2;D0F7;1110 1162 11C2;
+D0F8;D0F8;1110 1163;D0F8;1110 1163;
+D0F9;D0F9;1110 1163 11A8;D0F9;1110 1163 11A8;
+D0FA;D0FA;1110 1163 11A9;D0FA;1110 1163 11A9;
+D0FB;D0FB;1110 1163 11AA;D0FB;1110 1163 11AA;
+D0FC;D0FC;1110 1163 11AB;D0FC;1110 1163 11AB;
+D0FD;D0FD;1110 1163 11AC;D0FD;1110 1163 11AC;
+D0FE;D0FE;1110 1163 11AD;D0FE;1110 1163 11AD;
+D0FF;D0FF;1110 1163 11AE;D0FF;1110 1163 11AE;
+D100;D100;1110 1163 11AF;D100;1110 1163 11AF;
+D101;D101;1110 1163 11B0;D101;1110 1163 11B0;
+D102;D102;1110 1163 11B1;D102;1110 1163 11B1;
+D103;D103;1110 1163 11B2;D103;1110 1163 11B2;
+D104;D104;1110 1163 11B3;D104;1110 1163 11B3;
+D105;D105;1110 1163 11B4;D105;1110 1163 11B4;
+D106;D106;1110 1163 11B5;D106;1110 1163 11B5;
+D107;D107;1110 1163 11B6;D107;1110 1163 11B6;
+D108;D108;1110 1163 11B7;D108;1110 1163 11B7;
+D109;D109;1110 1163 11B8;D109;1110 1163 11B8;
+D10A;D10A;1110 1163 11B9;D10A;1110 1163 11B9;
+D10B;D10B;1110 1163 11BA;D10B;1110 1163 11BA;
+D10C;D10C;1110 1163 11BB;D10C;1110 1163 11BB;
+D10D;D10D;1110 1163 11BC;D10D;1110 1163 11BC;
+D10E;D10E;1110 1163 11BD;D10E;1110 1163 11BD;
+D10F;D10F;1110 1163 11BE;D10F;1110 1163 11BE;
+D110;D110;1110 1163 11BF;D110;1110 1163 11BF;
+D111;D111;1110 1163 11C0;D111;1110 1163 11C0;
+D112;D112;1110 1163 11C1;D112;1110 1163 11C1;
+D113;D113;1110 1163 11C2;D113;1110 1163 11C2;
+D114;D114;1110 1164;D114;1110 1164;
+D115;D115;1110 1164 11A8;D115;1110 1164 11A8;
+D116;D116;1110 1164 11A9;D116;1110 1164 11A9;
+D117;D117;1110 1164 11AA;D117;1110 1164 11AA;
+D118;D118;1110 1164 11AB;D118;1110 1164 11AB;
+D119;D119;1110 1164 11AC;D119;1110 1164 11AC;
+D11A;D11A;1110 1164 11AD;D11A;1110 1164 11AD;
+D11B;D11B;1110 1164 11AE;D11B;1110 1164 11AE;
+D11C;D11C;1110 1164 11AF;D11C;1110 1164 11AF;
+D11D;D11D;1110 1164 11B0;D11D;1110 1164 11B0;
+D11E;D11E;1110 1164 11B1;D11E;1110 1164 11B1;
+D11F;D11F;1110 1164 11B2;D11F;1110 1164 11B2;
+D120;D120;1110 1164 11B3;D120;1110 1164 11B3;
+D121;D121;1110 1164 11B4;D121;1110 1164 11B4;
+D122;D122;1110 1164 11B5;D122;1110 1164 11B5;
+D123;D123;1110 1164 11B6;D123;1110 1164 11B6;
+D124;D124;1110 1164 11B7;D124;1110 1164 11B7;
+D125;D125;1110 1164 11B8;D125;1110 1164 11B8;
+D126;D126;1110 1164 11B9;D126;1110 1164 11B9;
+D127;D127;1110 1164 11BA;D127;1110 1164 11BA;
+D128;D128;1110 1164 11BB;D128;1110 1164 11BB;
+D129;D129;1110 1164 11BC;D129;1110 1164 11BC;
+D12A;D12A;1110 1164 11BD;D12A;1110 1164 11BD;
+D12B;D12B;1110 1164 11BE;D12B;1110 1164 11BE;
+D12C;D12C;1110 1164 11BF;D12C;1110 1164 11BF;
+D12D;D12D;1110 1164 11C0;D12D;1110 1164 11C0;
+D12E;D12E;1110 1164 11C1;D12E;1110 1164 11C1;
+D12F;D12F;1110 1164 11C2;D12F;1110 1164 11C2;
+D130;D130;1110 1165;D130;1110 1165;
+D131;D131;1110 1165 11A8;D131;1110 1165 11A8;
+D132;D132;1110 1165 11A9;D132;1110 1165 11A9;
+D133;D133;1110 1165 11AA;D133;1110 1165 11AA;
+D134;D134;1110 1165 11AB;D134;1110 1165 11AB;
+D135;D135;1110 1165 11AC;D135;1110 1165 11AC;
+D136;D136;1110 1165 11AD;D136;1110 1165 11AD;
+D137;D137;1110 1165 11AE;D137;1110 1165 11AE;
+D138;D138;1110 1165 11AF;D138;1110 1165 11AF;
+D139;D139;1110 1165 11B0;D139;1110 1165 11B0;
+D13A;D13A;1110 1165 11B1;D13A;1110 1165 11B1;
+D13B;D13B;1110 1165 11B2;D13B;1110 1165 11B2;
+D13C;D13C;1110 1165 11B3;D13C;1110 1165 11B3;
+D13D;D13D;1110 1165 11B4;D13D;1110 1165 11B4;
+D13E;D13E;1110 1165 11B5;D13E;1110 1165 11B5;
+D13F;D13F;1110 1165 11B6;D13F;1110 1165 11B6;
+D140;D140;1110 1165 11B7;D140;1110 1165 11B7;
+D141;D141;1110 1165 11B8;D141;1110 1165 11B8;
+D142;D142;1110 1165 11B9;D142;1110 1165 11B9;
+D143;D143;1110 1165 11BA;D143;1110 1165 11BA;
+D144;D144;1110 1165 11BB;D144;1110 1165 11BB;
+D145;D145;1110 1165 11BC;D145;1110 1165 11BC;
+D146;D146;1110 1165 11BD;D146;1110 1165 11BD;
+D147;D147;1110 1165 11BE;D147;1110 1165 11BE;
+D148;D148;1110 1165 11BF;D148;1110 1165 11BF;
+D149;D149;1110 1165 11C0;D149;1110 1165 11C0;
+D14A;D14A;1110 1165 11C1;D14A;1110 1165 11C1;
+D14B;D14B;1110 1165 11C2;D14B;1110 1165 11C2;
+D14C;D14C;1110 1166;D14C;1110 1166;
+D14D;D14D;1110 1166 11A8;D14D;1110 1166 11A8;
+D14E;D14E;1110 1166 11A9;D14E;1110 1166 11A9;
+D14F;D14F;1110 1166 11AA;D14F;1110 1166 11AA;
+D150;D150;1110 1166 11AB;D150;1110 1166 11AB;
+D151;D151;1110 1166 11AC;D151;1110 1166 11AC;
+D152;D152;1110 1166 11AD;D152;1110 1166 11AD;
+D153;D153;1110 1166 11AE;D153;1110 1166 11AE;
+D154;D154;1110 1166 11AF;D154;1110 1166 11AF;
+D155;D155;1110 1166 11B0;D155;1110 1166 11B0;
+D156;D156;1110 1166 11B1;D156;1110 1166 11B1;
+D157;D157;1110 1166 11B2;D157;1110 1166 11B2;
+D158;D158;1110 1166 11B3;D158;1110 1166 11B3;
+D159;D159;1110 1166 11B4;D159;1110 1166 11B4;
+D15A;D15A;1110 1166 11B5;D15A;1110 1166 11B5;
+D15B;D15B;1110 1166 11B6;D15B;1110 1166 11B6;
+D15C;D15C;1110 1166 11B7;D15C;1110 1166 11B7;
+D15D;D15D;1110 1166 11B8;D15D;1110 1166 11B8;
+D15E;D15E;1110 1166 11B9;D15E;1110 1166 11B9;
+D15F;D15F;1110 1166 11BA;D15F;1110 1166 11BA;
+D160;D160;1110 1166 11BB;D160;1110 1166 11BB;
+D161;D161;1110 1166 11BC;D161;1110 1166 11BC;
+D162;D162;1110 1166 11BD;D162;1110 1166 11BD;
+D163;D163;1110 1166 11BE;D163;1110 1166 11BE;
+D164;D164;1110 1166 11BF;D164;1110 1166 11BF;
+D165;D165;1110 1166 11C0;D165;1110 1166 11C0;
+D166;D166;1110 1166 11C1;D166;1110 1166 11C1;
+D167;D167;1110 1166 11C2;D167;1110 1166 11C2;
+D168;D168;1110 1167;D168;1110 1167;
+D169;D169;1110 1167 11A8;D169;1110 1167 11A8;
+D16A;D16A;1110 1167 11A9;D16A;1110 1167 11A9;
+D16B;D16B;1110 1167 11AA;D16B;1110 1167 11AA;
+D16C;D16C;1110 1167 11AB;D16C;1110 1167 11AB;
+D16D;D16D;1110 1167 11AC;D16D;1110 1167 11AC;
+D16E;D16E;1110 1167 11AD;D16E;1110 1167 11AD;
+D16F;D16F;1110 1167 11AE;D16F;1110 1167 11AE;
+D170;D170;1110 1167 11AF;D170;1110 1167 11AF;
+D171;D171;1110 1167 11B0;D171;1110 1167 11B0;
+D172;D172;1110 1167 11B1;D172;1110 1167 11B1;
+D173;D173;1110 1167 11B2;D173;1110 1167 11B2;
+D174;D174;1110 1167 11B3;D174;1110 1167 11B3;
+D175;D175;1110 1167 11B4;D175;1110 1167 11B4;
+D176;D176;1110 1167 11B5;D176;1110 1167 11B5;
+D177;D177;1110 1167 11B6;D177;1110 1167 11B6;
+D178;D178;1110 1167 11B7;D178;1110 1167 11B7;
+D179;D179;1110 1167 11B8;D179;1110 1167 11B8;
+D17A;D17A;1110 1167 11B9;D17A;1110 1167 11B9;
+D17B;D17B;1110 1167 11BA;D17B;1110 1167 11BA;
+D17C;D17C;1110 1167 11BB;D17C;1110 1167 11BB;
+D17D;D17D;1110 1167 11BC;D17D;1110 1167 11BC;
+D17E;D17E;1110 1167 11BD;D17E;1110 1167 11BD;
+D17F;D17F;1110 1167 11BE;D17F;1110 1167 11BE;
+D180;D180;1110 1167 11BF;D180;1110 1167 11BF;
+D181;D181;1110 1167 11C0;D181;1110 1167 11C0;
+D182;D182;1110 1167 11C1;D182;1110 1167 11C1;
+D183;D183;1110 1167 11C2;D183;1110 1167 11C2;
+D184;D184;1110 1168;D184;1110 1168;
+D185;D185;1110 1168 11A8;D185;1110 1168 11A8;
+D186;D186;1110 1168 11A9;D186;1110 1168 11A9;
+D187;D187;1110 1168 11AA;D187;1110 1168 11AA;
+D188;D188;1110 1168 11AB;D188;1110 1168 11AB;
+D189;D189;1110 1168 11AC;D189;1110 1168 11AC;
+D18A;D18A;1110 1168 11AD;D18A;1110 1168 11AD;
+D18B;D18B;1110 1168 11AE;D18B;1110 1168 11AE;
+D18C;D18C;1110 1168 11AF;D18C;1110 1168 11AF;
+D18D;D18D;1110 1168 11B0;D18D;1110 1168 11B0;
+D18E;D18E;1110 1168 11B1;D18E;1110 1168 11B1;
+D18F;D18F;1110 1168 11B2;D18F;1110 1168 11B2;
+D190;D190;1110 1168 11B3;D190;1110 1168 11B3;
+D191;D191;1110 1168 11B4;D191;1110 1168 11B4;
+D192;D192;1110 1168 11B5;D192;1110 1168 11B5;
+D193;D193;1110 1168 11B6;D193;1110 1168 11B6;
+D194;D194;1110 1168 11B7;D194;1110 1168 11B7;
+D195;D195;1110 1168 11B8;D195;1110 1168 11B8;
+D196;D196;1110 1168 11B9;D196;1110 1168 11B9;
+D197;D197;1110 1168 11BA;D197;1110 1168 11BA;
+D198;D198;1110 1168 11BB;D198;1110 1168 11BB;
+D199;D199;1110 1168 11BC;D199;1110 1168 11BC;
+D19A;D19A;1110 1168 11BD;D19A;1110 1168 11BD;
+D19B;D19B;1110 1168 11BE;D19B;1110 1168 11BE;
+D19C;D19C;1110 1168 11BF;D19C;1110 1168 11BF;
+D19D;D19D;1110 1168 11C0;D19D;1110 1168 11C0;
+D19E;D19E;1110 1168 11C1;D19E;1110 1168 11C1;
+D19F;D19F;1110 1168 11C2;D19F;1110 1168 11C2;
+D1A0;D1A0;1110 1169;D1A0;1110 1169;
+D1A1;D1A1;1110 1169 11A8;D1A1;1110 1169 11A8;
+D1A2;D1A2;1110 1169 11A9;D1A2;1110 1169 11A9;
+D1A3;D1A3;1110 1169 11AA;D1A3;1110 1169 11AA;
+D1A4;D1A4;1110 1169 11AB;D1A4;1110 1169 11AB;
+D1A5;D1A5;1110 1169 11AC;D1A5;1110 1169 11AC;
+D1A6;D1A6;1110 1169 11AD;D1A6;1110 1169 11AD;
+D1A7;D1A7;1110 1169 11AE;D1A7;1110 1169 11AE;
+D1A8;D1A8;1110 1169 11AF;D1A8;1110 1169 11AF;
+D1A9;D1A9;1110 1169 11B0;D1A9;1110 1169 11B0;
+D1AA;D1AA;1110 1169 11B1;D1AA;1110 1169 11B1;
+D1AB;D1AB;1110 1169 11B2;D1AB;1110 1169 11B2;
+D1AC;D1AC;1110 1169 11B3;D1AC;1110 1169 11B3;
+D1AD;D1AD;1110 1169 11B4;D1AD;1110 1169 11B4;
+D1AE;D1AE;1110 1169 11B5;D1AE;1110 1169 11B5;
+D1AF;D1AF;1110 1169 11B6;D1AF;1110 1169 11B6;
+D1B0;D1B0;1110 1169 11B7;D1B0;1110 1169 11B7;
+D1B1;D1B1;1110 1169 11B8;D1B1;1110 1169 11B8;
+D1B2;D1B2;1110 1169 11B9;D1B2;1110 1169 11B9;
+D1B3;D1B3;1110 1169 11BA;D1B3;1110 1169 11BA;
+D1B4;D1B4;1110 1169 11BB;D1B4;1110 1169 11BB;
+D1B5;D1B5;1110 1169 11BC;D1B5;1110 1169 11BC;
+D1B6;D1B6;1110 1169 11BD;D1B6;1110 1169 11BD;
+D1B7;D1B7;1110 1169 11BE;D1B7;1110 1169 11BE;
+D1B8;D1B8;1110 1169 11BF;D1B8;1110 1169 11BF;
+D1B9;D1B9;1110 1169 11C0;D1B9;1110 1169 11C0;
+D1BA;D1BA;1110 1169 11C1;D1BA;1110 1169 11C1;
+D1BB;D1BB;1110 1169 11C2;D1BB;1110 1169 11C2;
+D1BC;D1BC;1110 116A;D1BC;1110 116A;
+D1BD;D1BD;1110 116A 11A8;D1BD;1110 116A 11A8;
+D1BE;D1BE;1110 116A 11A9;D1BE;1110 116A 11A9;
+D1BF;D1BF;1110 116A 11AA;D1BF;1110 116A 11AA;
+D1C0;D1C0;1110 116A 11AB;D1C0;1110 116A 11AB;
+D1C1;D1C1;1110 116A 11AC;D1C1;1110 116A 11AC;
+D1C2;D1C2;1110 116A 11AD;D1C2;1110 116A 11AD;
+D1C3;D1C3;1110 116A 11AE;D1C3;1110 116A 11AE;
+D1C4;D1C4;1110 116A 11AF;D1C4;1110 116A 11AF;
+D1C5;D1C5;1110 116A 11B0;D1C5;1110 116A 11B0;
+D1C6;D1C6;1110 116A 11B1;D1C6;1110 116A 11B1;
+D1C7;D1C7;1110 116A 11B2;D1C7;1110 116A 11B2;
+D1C8;D1C8;1110 116A 11B3;D1C8;1110 116A 11B3;
+D1C9;D1C9;1110 116A 11B4;D1C9;1110 116A 11B4;
+D1CA;D1CA;1110 116A 11B5;D1CA;1110 116A 11B5;
+D1CB;D1CB;1110 116A 11B6;D1CB;1110 116A 11B6;
+D1CC;D1CC;1110 116A 11B7;D1CC;1110 116A 11B7;
+D1CD;D1CD;1110 116A 11B8;D1CD;1110 116A 11B8;
+D1CE;D1CE;1110 116A 11B9;D1CE;1110 116A 11B9;
+D1CF;D1CF;1110 116A 11BA;D1CF;1110 116A 11BA;
+D1D0;D1D0;1110 116A 11BB;D1D0;1110 116A 11BB;
+D1D1;D1D1;1110 116A 11BC;D1D1;1110 116A 11BC;
+D1D2;D1D2;1110 116A 11BD;D1D2;1110 116A 11BD;
+D1D3;D1D3;1110 116A 11BE;D1D3;1110 116A 11BE;
+D1D4;D1D4;1110 116A 11BF;D1D4;1110 116A 11BF;
+D1D5;D1D5;1110 116A 11C0;D1D5;1110 116A 11C0;
+D1D6;D1D6;1110 116A 11C1;D1D6;1110 116A 11C1;
+D1D7;D1D7;1110 116A 11C2;D1D7;1110 116A 11C2;
+D1D8;D1D8;1110 116B;D1D8;1110 116B;
+D1D9;D1D9;1110 116B 11A8;D1D9;1110 116B 11A8;
+D1DA;D1DA;1110 116B 11A9;D1DA;1110 116B 11A9;
+D1DB;D1DB;1110 116B 11AA;D1DB;1110 116B 11AA;
+D1DC;D1DC;1110 116B 11AB;D1DC;1110 116B 11AB;
+D1DD;D1DD;1110 116B 11AC;D1DD;1110 116B 11AC;
+D1DE;D1DE;1110 116B 11AD;D1DE;1110 116B 11AD;
+D1DF;D1DF;1110 116B 11AE;D1DF;1110 116B 11AE;
+D1E0;D1E0;1110 116B 11AF;D1E0;1110 116B 11AF;
+D1E1;D1E1;1110 116B 11B0;D1E1;1110 116B 11B0;
+D1E2;D1E2;1110 116B 11B1;D1E2;1110 116B 11B1;
+D1E3;D1E3;1110 116B 11B2;D1E3;1110 116B 11B2;
+D1E4;D1E4;1110 116B 11B3;D1E4;1110 116B 11B3;
+D1E5;D1E5;1110 116B 11B4;D1E5;1110 116B 11B4;
+D1E6;D1E6;1110 116B 11B5;D1E6;1110 116B 11B5;
+D1E7;D1E7;1110 116B 11B6;D1E7;1110 116B 11B6;
+D1E8;D1E8;1110 116B 11B7;D1E8;1110 116B 11B7;
+D1E9;D1E9;1110 116B 11B8;D1E9;1110 116B 11B8;
+D1EA;D1EA;1110 116B 11B9;D1EA;1110 116B 11B9;
+D1EB;D1EB;1110 116B 11BA;D1EB;1110 116B 11BA;
+D1EC;D1EC;1110 116B 11BB;D1EC;1110 116B 11BB;
+D1ED;D1ED;1110 116B 11BC;D1ED;1110 116B 11BC;
+D1EE;D1EE;1110 116B 11BD;D1EE;1110 116B 11BD;
+D1EF;D1EF;1110 116B 11BE;D1EF;1110 116B 11BE;
+D1F0;D1F0;1110 116B 11BF;D1F0;1110 116B 11BF;
+D1F1;D1F1;1110 116B 11C0;D1F1;1110 116B 11C0;
+D1F2;D1F2;1110 116B 11C1;D1F2;1110 116B 11C1;
+D1F3;D1F3;1110 116B 11C2;D1F3;1110 116B 11C2;
+D1F4;D1F4;1110 116C;D1F4;1110 116C;
+D1F5;D1F5;1110 116C 11A8;D1F5;1110 116C 11A8;
+D1F6;D1F6;1110 116C 11A9;D1F6;1110 116C 11A9;
+D1F7;D1F7;1110 116C 11AA;D1F7;1110 116C 11AA;
+D1F8;D1F8;1110 116C 11AB;D1F8;1110 116C 11AB;
+D1F9;D1F9;1110 116C 11AC;D1F9;1110 116C 11AC;
+D1FA;D1FA;1110 116C 11AD;D1FA;1110 116C 11AD;
+D1FB;D1FB;1110 116C 11AE;D1FB;1110 116C 11AE;
+D1FC;D1FC;1110 116C 11AF;D1FC;1110 116C 11AF;
+D1FD;D1FD;1110 116C 11B0;D1FD;1110 116C 11B0;
+D1FE;D1FE;1110 116C 11B1;D1FE;1110 116C 11B1;
+D1FF;D1FF;1110 116C 11B2;D1FF;1110 116C 11B2;
+D200;D200;1110 116C 11B3;D200;1110 116C 11B3;
+D201;D201;1110 116C 11B4;D201;1110 116C 11B4;
+D202;D202;1110 116C 11B5;D202;1110 116C 11B5;
+D203;D203;1110 116C 11B6;D203;1110 116C 11B6;
+D204;D204;1110 116C 11B7;D204;1110 116C 11B7;
+D205;D205;1110 116C 11B8;D205;1110 116C 11B8;
+D206;D206;1110 116C 11B9;D206;1110 116C 11B9;
+D207;D207;1110 116C 11BA;D207;1110 116C 11BA;
+D208;D208;1110 116C 11BB;D208;1110 116C 11BB;
+D209;D209;1110 116C 11BC;D209;1110 116C 11BC;
+D20A;D20A;1110 116C 11BD;D20A;1110 116C 11BD;
+D20B;D20B;1110 116C 11BE;D20B;1110 116C 11BE;
+D20C;D20C;1110 116C 11BF;D20C;1110 116C 11BF;
+D20D;D20D;1110 116C 11C0;D20D;1110 116C 11C0;
+D20E;D20E;1110 116C 11C1;D20E;1110 116C 11C1;
+D20F;D20F;1110 116C 11C2;D20F;1110 116C 11C2;
+D210;D210;1110 116D;D210;1110 116D;
+D211;D211;1110 116D 11A8;D211;1110 116D 11A8;
+D212;D212;1110 116D 11A9;D212;1110 116D 11A9;
+D213;D213;1110 116D 11AA;D213;1110 116D 11AA;
+D214;D214;1110 116D 11AB;D214;1110 116D 11AB;
+D215;D215;1110 116D 11AC;D215;1110 116D 11AC;
+D216;D216;1110 116D 11AD;D216;1110 116D 11AD;
+D217;D217;1110 116D 11AE;D217;1110 116D 11AE;
+D218;D218;1110 116D 11AF;D218;1110 116D 11AF;
+D219;D219;1110 116D 11B0;D219;1110 116D 11B0;
+D21A;D21A;1110 116D 11B1;D21A;1110 116D 11B1;
+D21B;D21B;1110 116D 11B2;D21B;1110 116D 11B2;
+D21C;D21C;1110 116D 11B3;D21C;1110 116D 11B3;
+D21D;D21D;1110 116D 11B4;D21D;1110 116D 11B4;
+D21E;D21E;1110 116D 11B5;D21E;1110 116D 11B5;
+D21F;D21F;1110 116D 11B6;D21F;1110 116D 11B6;
+D220;D220;1110 116D 11B7;D220;1110 116D 11B7;
+D221;D221;1110 116D 11B8;D221;1110 116D 11B8;
+D222;D222;1110 116D 11B9;D222;1110 116D 11B9;
+D223;D223;1110 116D 11BA;D223;1110 116D 11BA;
+D224;D224;1110 116D 11BB;D224;1110 116D 11BB;
+D225;D225;1110 116D 11BC;D225;1110 116D 11BC;
+D226;D226;1110 116D 11BD;D226;1110 116D 11BD;
+D227;D227;1110 116D 11BE;D227;1110 116D 11BE;
+D228;D228;1110 116D 11BF;D228;1110 116D 11BF;
+D229;D229;1110 116D 11C0;D229;1110 116D 11C0;
+D22A;D22A;1110 116D 11C1;D22A;1110 116D 11C1;
+D22B;D22B;1110 116D 11C2;D22B;1110 116D 11C2;
+D22C;D22C;1110 116E;D22C;1110 116E;
+D22D;D22D;1110 116E 11A8;D22D;1110 116E 11A8;
+D22E;D22E;1110 116E 11A9;D22E;1110 116E 11A9;
+D22F;D22F;1110 116E 11AA;D22F;1110 116E 11AA;
+D230;D230;1110 116E 11AB;D230;1110 116E 11AB;
+D231;D231;1110 116E 11AC;D231;1110 116E 11AC;
+D232;D232;1110 116E 11AD;D232;1110 116E 11AD;
+D233;D233;1110 116E 11AE;D233;1110 116E 11AE;
+D234;D234;1110 116E 11AF;D234;1110 116E 11AF;
+D235;D235;1110 116E 11B0;D235;1110 116E 11B0;
+D236;D236;1110 116E 11B1;D236;1110 116E 11B1;
+D237;D237;1110 116E 11B2;D237;1110 116E 11B2;
+D238;D238;1110 116E 11B3;D238;1110 116E 11B3;
+D239;D239;1110 116E 11B4;D239;1110 116E 11B4;
+D23A;D23A;1110 116E 11B5;D23A;1110 116E 11B5;
+D23B;D23B;1110 116E 11B6;D23B;1110 116E 11B6;
+D23C;D23C;1110 116E 11B7;D23C;1110 116E 11B7;
+D23D;D23D;1110 116E 11B8;D23D;1110 116E 11B8;
+D23E;D23E;1110 116E 11B9;D23E;1110 116E 11B9;
+D23F;D23F;1110 116E 11BA;D23F;1110 116E 11BA;
+D240;D240;1110 116E 11BB;D240;1110 116E 11BB;
+D241;D241;1110 116E 11BC;D241;1110 116E 11BC;
+D242;D242;1110 116E 11BD;D242;1110 116E 11BD;
+D243;D243;1110 116E 11BE;D243;1110 116E 11BE;
+D244;D244;1110 116E 11BF;D244;1110 116E 11BF;
+D245;D245;1110 116E 11C0;D245;1110 116E 11C0;
+D246;D246;1110 116E 11C1;D246;1110 116E 11C1;
+D247;D247;1110 116E 11C2;D247;1110 116E 11C2;
+D248;D248;1110 116F;D248;1110 116F;
+D249;D249;1110 116F 11A8;D249;1110 116F 11A8;
+D24A;D24A;1110 116F 11A9;D24A;1110 116F 11A9;
+D24B;D24B;1110 116F 11AA;D24B;1110 116F 11AA;
+D24C;D24C;1110 116F 11AB;D24C;1110 116F 11AB;
+D24D;D24D;1110 116F 11AC;D24D;1110 116F 11AC;
+D24E;D24E;1110 116F 11AD;D24E;1110 116F 11AD;
+D24F;D24F;1110 116F 11AE;D24F;1110 116F 11AE;
+D250;D250;1110 116F 11AF;D250;1110 116F 11AF;
+D251;D251;1110 116F 11B0;D251;1110 116F 11B0;
+D252;D252;1110 116F 11B1;D252;1110 116F 11B1;
+D253;D253;1110 116F 11B2;D253;1110 116F 11B2;
+D254;D254;1110 116F 11B3;D254;1110 116F 11B3;
+D255;D255;1110 116F 11B4;D255;1110 116F 11B4;
+D256;D256;1110 116F 11B5;D256;1110 116F 11B5;
+D257;D257;1110 116F 11B6;D257;1110 116F 11B6;
+D258;D258;1110 116F 11B7;D258;1110 116F 11B7;
+D259;D259;1110 116F 11B8;D259;1110 116F 11B8;
+D25A;D25A;1110 116F 11B9;D25A;1110 116F 11B9;
+D25B;D25B;1110 116F 11BA;D25B;1110 116F 11BA;
+D25C;D25C;1110 116F 11BB;D25C;1110 116F 11BB;
+D25D;D25D;1110 116F 11BC;D25D;1110 116F 11BC;
+D25E;D25E;1110 116F 11BD;D25E;1110 116F 11BD;
+D25F;D25F;1110 116F 11BE;D25F;1110 116F 11BE;
+D260;D260;1110 116F 11BF;D260;1110 116F 11BF;
+D261;D261;1110 116F 11C0;D261;1110 116F 11C0;
+D262;D262;1110 116F 11C1;D262;1110 116F 11C1;
+D263;D263;1110 116F 11C2;D263;1110 116F 11C2;
+D264;D264;1110 1170;D264;1110 1170;
+D265;D265;1110 1170 11A8;D265;1110 1170 11A8;
+D266;D266;1110 1170 11A9;D266;1110 1170 11A9;
+D267;D267;1110 1170 11AA;D267;1110 1170 11AA;
+D268;D268;1110 1170 11AB;D268;1110 1170 11AB;
+D269;D269;1110 1170 11AC;D269;1110 1170 11AC;
+D26A;D26A;1110 1170 11AD;D26A;1110 1170 11AD;
+D26B;D26B;1110 1170 11AE;D26B;1110 1170 11AE;
+D26C;D26C;1110 1170 11AF;D26C;1110 1170 11AF;
+D26D;D26D;1110 1170 11B0;D26D;1110 1170 11B0;
+D26E;D26E;1110 1170 11B1;D26E;1110 1170 11B1;
+D26F;D26F;1110 1170 11B2;D26F;1110 1170 11B2;
+D270;D270;1110 1170 11B3;D270;1110 1170 11B3;
+D271;D271;1110 1170 11B4;D271;1110 1170 11B4;
+D272;D272;1110 1170 11B5;D272;1110 1170 11B5;
+D273;D273;1110 1170 11B6;D273;1110 1170 11B6;
+D274;D274;1110 1170 11B7;D274;1110 1170 11B7;
+D275;D275;1110 1170 11B8;D275;1110 1170 11B8;
+D276;D276;1110 1170 11B9;D276;1110 1170 11B9;
+D277;D277;1110 1170 11BA;D277;1110 1170 11BA;
+D278;D278;1110 1170 11BB;D278;1110 1170 11BB;
+D279;D279;1110 1170 11BC;D279;1110 1170 11BC;
+D27A;D27A;1110 1170 11BD;D27A;1110 1170 11BD;
+D27B;D27B;1110 1170 11BE;D27B;1110 1170 11BE;
+D27C;D27C;1110 1170 11BF;D27C;1110 1170 11BF;
+D27D;D27D;1110 1170 11C0;D27D;1110 1170 11C0;
+D27E;D27E;1110 1170 11C1;D27E;1110 1170 11C1;
+D27F;D27F;1110 1170 11C2;D27F;1110 1170 11C2;
+D280;D280;1110 1171;D280;1110 1171;
+D281;D281;1110 1171 11A8;D281;1110 1171 11A8;
+D282;D282;1110 1171 11A9;D282;1110 1171 11A9;
+D283;D283;1110 1171 11AA;D283;1110 1171 11AA;
+D284;D284;1110 1171 11AB;D284;1110 1171 11AB;
+D285;D285;1110 1171 11AC;D285;1110 1171 11AC;
+D286;D286;1110 1171 11AD;D286;1110 1171 11AD;
+D287;D287;1110 1171 11AE;D287;1110 1171 11AE;
+D288;D288;1110 1171 11AF;D288;1110 1171 11AF;
+D289;D289;1110 1171 11B0;D289;1110 1171 11B0;
+D28A;D28A;1110 1171 11B1;D28A;1110 1171 11B1;
+D28B;D28B;1110 1171 11B2;D28B;1110 1171 11B2;
+D28C;D28C;1110 1171 11B3;D28C;1110 1171 11B3;
+D28D;D28D;1110 1171 11B4;D28D;1110 1171 11B4;
+D28E;D28E;1110 1171 11B5;D28E;1110 1171 11B5;
+D28F;D28F;1110 1171 11B6;D28F;1110 1171 11B6;
+D290;D290;1110 1171 11B7;D290;1110 1171 11B7;
+D291;D291;1110 1171 11B8;D291;1110 1171 11B8;
+D292;D292;1110 1171 11B9;D292;1110 1171 11B9;
+D293;D293;1110 1171 11BA;D293;1110 1171 11BA;
+D294;D294;1110 1171 11BB;D294;1110 1171 11BB;
+D295;D295;1110 1171 11BC;D295;1110 1171 11BC;
+D296;D296;1110 1171 11BD;D296;1110 1171 11BD;
+D297;D297;1110 1171 11BE;D297;1110 1171 11BE;
+D298;D298;1110 1171 11BF;D298;1110 1171 11BF;
+D299;D299;1110 1171 11C0;D299;1110 1171 11C0;
+D29A;D29A;1110 1171 11C1;D29A;1110 1171 11C1;
+D29B;D29B;1110 1171 11C2;D29B;1110 1171 11C2;
+D29C;D29C;1110 1172;D29C;1110 1172;
+D29D;D29D;1110 1172 11A8;D29D;1110 1172 11A8;
+D29E;D29E;1110 1172 11A9;D29E;1110 1172 11A9;
+D29F;D29F;1110 1172 11AA;D29F;1110 1172 11AA;
+D2A0;D2A0;1110 1172 11AB;D2A0;1110 1172 11AB;
+D2A1;D2A1;1110 1172 11AC;D2A1;1110 1172 11AC;
+D2A2;D2A2;1110 1172 11AD;D2A2;1110 1172 11AD;
+D2A3;D2A3;1110 1172 11AE;D2A3;1110 1172 11AE;
+D2A4;D2A4;1110 1172 11AF;D2A4;1110 1172 11AF;
+D2A5;D2A5;1110 1172 11B0;D2A5;1110 1172 11B0;
+D2A6;D2A6;1110 1172 11B1;D2A6;1110 1172 11B1;
+D2A7;D2A7;1110 1172 11B2;D2A7;1110 1172 11B2;
+D2A8;D2A8;1110 1172 11B3;D2A8;1110 1172 11B3;
+D2A9;D2A9;1110 1172 11B4;D2A9;1110 1172 11B4;
+D2AA;D2AA;1110 1172 11B5;D2AA;1110 1172 11B5;
+D2AB;D2AB;1110 1172 11B6;D2AB;1110 1172 11B6;
+D2AC;D2AC;1110 1172 11B7;D2AC;1110 1172 11B7;
+D2AD;D2AD;1110 1172 11B8;D2AD;1110 1172 11B8;
+D2AE;D2AE;1110 1172 11B9;D2AE;1110 1172 11B9;
+D2AF;D2AF;1110 1172 11BA;D2AF;1110 1172 11BA;
+D2B0;D2B0;1110 1172 11BB;D2B0;1110 1172 11BB;
+D2B1;D2B1;1110 1172 11BC;D2B1;1110 1172 11BC;
+D2B2;D2B2;1110 1172 11BD;D2B2;1110 1172 11BD;
+D2B3;D2B3;1110 1172 11BE;D2B3;1110 1172 11BE;
+D2B4;D2B4;1110 1172 11BF;D2B4;1110 1172 11BF;
+D2B5;D2B5;1110 1172 11C0;D2B5;1110 1172 11C0;
+D2B6;D2B6;1110 1172 11C1;D2B6;1110 1172 11C1;
+D2B7;D2B7;1110 1172 11C2;D2B7;1110 1172 11C2;
+D2B8;D2B8;1110 1173;D2B8;1110 1173;
+D2B9;D2B9;1110 1173 11A8;D2B9;1110 1173 11A8;
+D2BA;D2BA;1110 1173 11A9;D2BA;1110 1173 11A9;
+D2BB;D2BB;1110 1173 11AA;D2BB;1110 1173 11AA;
+D2BC;D2BC;1110 1173 11AB;D2BC;1110 1173 11AB;
+D2BD;D2BD;1110 1173 11AC;D2BD;1110 1173 11AC;
+D2BE;D2BE;1110 1173 11AD;D2BE;1110 1173 11AD;
+D2BF;D2BF;1110 1173 11AE;D2BF;1110 1173 11AE;
+D2C0;D2C0;1110 1173 11AF;D2C0;1110 1173 11AF;
+D2C1;D2C1;1110 1173 11B0;D2C1;1110 1173 11B0;
+D2C2;D2C2;1110 1173 11B1;D2C2;1110 1173 11B1;
+D2C3;D2C3;1110 1173 11B2;D2C3;1110 1173 11B2;
+D2C4;D2C4;1110 1173 11B3;D2C4;1110 1173 11B3;
+D2C5;D2C5;1110 1173 11B4;D2C5;1110 1173 11B4;
+D2C6;D2C6;1110 1173 11B5;D2C6;1110 1173 11B5;
+D2C7;D2C7;1110 1173 11B6;D2C7;1110 1173 11B6;
+D2C8;D2C8;1110 1173 11B7;D2C8;1110 1173 11B7;
+D2C9;D2C9;1110 1173 11B8;D2C9;1110 1173 11B8;
+D2CA;D2CA;1110 1173 11B9;D2CA;1110 1173 11B9;
+D2CB;D2CB;1110 1173 11BA;D2CB;1110 1173 11BA;
+D2CC;D2CC;1110 1173 11BB;D2CC;1110 1173 11BB;
+D2CD;D2CD;1110 1173 11BC;D2CD;1110 1173 11BC;
+D2CE;D2CE;1110 1173 11BD;D2CE;1110 1173 11BD;
+D2CF;D2CF;1110 1173 11BE;D2CF;1110 1173 11BE;
+D2D0;D2D0;1110 1173 11BF;D2D0;1110 1173 11BF;
+D2D1;D2D1;1110 1173 11C0;D2D1;1110 1173 11C0;
+D2D2;D2D2;1110 1173 11C1;D2D2;1110 1173 11C1;
+D2D3;D2D3;1110 1173 11C2;D2D3;1110 1173 11C2;
+D2D4;D2D4;1110 1174;D2D4;1110 1174;
+D2D5;D2D5;1110 1174 11A8;D2D5;1110 1174 11A8;
+D2D6;D2D6;1110 1174 11A9;D2D6;1110 1174 11A9;
+D2D7;D2D7;1110 1174 11AA;D2D7;1110 1174 11AA;
+D2D8;D2D8;1110 1174 11AB;D2D8;1110 1174 11AB;
+D2D9;D2D9;1110 1174 11AC;D2D9;1110 1174 11AC;
+D2DA;D2DA;1110 1174 11AD;D2DA;1110 1174 11AD;
+D2DB;D2DB;1110 1174 11AE;D2DB;1110 1174 11AE;
+D2DC;D2DC;1110 1174 11AF;D2DC;1110 1174 11AF;
+D2DD;D2DD;1110 1174 11B0;D2DD;1110 1174 11B0;
+D2DE;D2DE;1110 1174 11B1;D2DE;1110 1174 11B1;
+D2DF;D2DF;1110 1174 11B2;D2DF;1110 1174 11B2;
+D2E0;D2E0;1110 1174 11B3;D2E0;1110 1174 11B3;
+D2E1;D2E1;1110 1174 11B4;D2E1;1110 1174 11B4;
+D2E2;D2E2;1110 1174 11B5;D2E2;1110 1174 11B5;
+D2E3;D2E3;1110 1174 11B6;D2E3;1110 1174 11B6;
+D2E4;D2E4;1110 1174 11B7;D2E4;1110 1174 11B7;
+D2E5;D2E5;1110 1174 11B8;D2E5;1110 1174 11B8;
+D2E6;D2E6;1110 1174 11B9;D2E6;1110 1174 11B9;
+D2E7;D2E7;1110 1174 11BA;D2E7;1110 1174 11BA;
+D2E8;D2E8;1110 1174 11BB;D2E8;1110 1174 11BB;
+D2E9;D2E9;1110 1174 11BC;D2E9;1110 1174 11BC;
+D2EA;D2EA;1110 1174 11BD;D2EA;1110 1174 11BD;
+D2EB;D2EB;1110 1174 11BE;D2EB;1110 1174 11BE;
+D2EC;D2EC;1110 1174 11BF;D2EC;1110 1174 11BF;
+D2ED;D2ED;1110 1174 11C0;D2ED;1110 1174 11C0;
+D2EE;D2EE;1110 1174 11C1;D2EE;1110 1174 11C1;
+D2EF;D2EF;1110 1174 11C2;D2EF;1110 1174 11C2;
+D2F0;D2F0;1110 1175;D2F0;1110 1175;
+D2F1;D2F1;1110 1175 11A8;D2F1;1110 1175 11A8;
+D2F2;D2F2;1110 1175 11A9;D2F2;1110 1175 11A9;
+D2F3;D2F3;1110 1175 11AA;D2F3;1110 1175 11AA;
+D2F4;D2F4;1110 1175 11AB;D2F4;1110 1175 11AB;
+D2F5;D2F5;1110 1175 11AC;D2F5;1110 1175 11AC;
+D2F6;D2F6;1110 1175 11AD;D2F6;1110 1175 11AD;
+D2F7;D2F7;1110 1175 11AE;D2F7;1110 1175 11AE;
+D2F8;D2F8;1110 1175 11AF;D2F8;1110 1175 11AF;
+D2F9;D2F9;1110 1175 11B0;D2F9;1110 1175 11B0;
+D2FA;D2FA;1110 1175 11B1;D2FA;1110 1175 11B1;
+D2FB;D2FB;1110 1175 11B2;D2FB;1110 1175 11B2;
+D2FC;D2FC;1110 1175 11B3;D2FC;1110 1175 11B3;
+D2FD;D2FD;1110 1175 11B4;D2FD;1110 1175 11B4;
+D2FE;D2FE;1110 1175 11B5;D2FE;1110 1175 11B5;
+D2FF;D2FF;1110 1175 11B6;D2FF;1110 1175 11B6;
+D300;D300;1110 1175 11B7;D300;1110 1175 11B7;
+D301;D301;1110 1175 11B8;D301;1110 1175 11B8;
+D302;D302;1110 1175 11B9;D302;1110 1175 11B9;
+D303;D303;1110 1175 11BA;D303;1110 1175 11BA;
+D304;D304;1110 1175 11BB;D304;1110 1175 11BB;
+D305;D305;1110 1175 11BC;D305;1110 1175 11BC;
+D306;D306;1110 1175 11BD;D306;1110 1175 11BD;
+D307;D307;1110 1175 11BE;D307;1110 1175 11BE;
+D308;D308;1110 1175 11BF;D308;1110 1175 11BF;
+D309;D309;1110 1175 11C0;D309;1110 1175 11C0;
+D30A;D30A;1110 1175 11C1;D30A;1110 1175 11C1;
+D30B;D30B;1110 1175 11C2;D30B;1110 1175 11C2;
+D30C;D30C;1111 1161;D30C;1111 1161;
+D30D;D30D;1111 1161 11A8;D30D;1111 1161 11A8;
+D30E;D30E;1111 1161 11A9;D30E;1111 1161 11A9;
+D30F;D30F;1111 1161 11AA;D30F;1111 1161 11AA;
+D310;D310;1111 1161 11AB;D310;1111 1161 11AB;
+D311;D311;1111 1161 11AC;D311;1111 1161 11AC;
+D312;D312;1111 1161 11AD;D312;1111 1161 11AD;
+D313;D313;1111 1161 11AE;D313;1111 1161 11AE;
+D314;D314;1111 1161 11AF;D314;1111 1161 11AF;
+D315;D315;1111 1161 11B0;D315;1111 1161 11B0;
+D316;D316;1111 1161 11B1;D316;1111 1161 11B1;
+D317;D317;1111 1161 11B2;D317;1111 1161 11B2;
+D318;D318;1111 1161 11B3;D318;1111 1161 11B3;
+D319;D319;1111 1161 11B4;D319;1111 1161 11B4;
+D31A;D31A;1111 1161 11B5;D31A;1111 1161 11B5;
+D31B;D31B;1111 1161 11B6;D31B;1111 1161 11B6;
+D31C;D31C;1111 1161 11B7;D31C;1111 1161 11B7;
+D31D;D31D;1111 1161 11B8;D31D;1111 1161 11B8;
+D31E;D31E;1111 1161 11B9;D31E;1111 1161 11B9;
+D31F;D31F;1111 1161 11BA;D31F;1111 1161 11BA;
+D320;D320;1111 1161 11BB;D320;1111 1161 11BB;
+D321;D321;1111 1161 11BC;D321;1111 1161 11BC;
+D322;D322;1111 1161 11BD;D322;1111 1161 11BD;
+D323;D323;1111 1161 11BE;D323;1111 1161 11BE;
+D324;D324;1111 1161 11BF;D324;1111 1161 11BF;
+D325;D325;1111 1161 11C0;D325;1111 1161 11C0;
+D326;D326;1111 1161 11C1;D326;1111 1161 11C1;
+D327;D327;1111 1161 11C2;D327;1111 1161 11C2;
+D328;D328;1111 1162;D328;1111 1162;
+D329;D329;1111 1162 11A8;D329;1111 1162 11A8;
+D32A;D32A;1111 1162 11A9;D32A;1111 1162 11A9;
+D32B;D32B;1111 1162 11AA;D32B;1111 1162 11AA;
+D32C;D32C;1111 1162 11AB;D32C;1111 1162 11AB;
+D32D;D32D;1111 1162 11AC;D32D;1111 1162 11AC;
+D32E;D32E;1111 1162 11AD;D32E;1111 1162 11AD;
+D32F;D32F;1111 1162 11AE;D32F;1111 1162 11AE;
+D330;D330;1111 1162 11AF;D330;1111 1162 11AF;
+D331;D331;1111 1162 11B0;D331;1111 1162 11B0;
+D332;D332;1111 1162 11B1;D332;1111 1162 11B1;
+D333;D333;1111 1162 11B2;D333;1111 1162 11B2;
+D334;D334;1111 1162 11B3;D334;1111 1162 11B3;
+D335;D335;1111 1162 11B4;D335;1111 1162 11B4;
+D336;D336;1111 1162 11B5;D336;1111 1162 11B5;
+D337;D337;1111 1162 11B6;D337;1111 1162 11B6;
+D338;D338;1111 1162 11B7;D338;1111 1162 11B7;
+D339;D339;1111 1162 11B8;D339;1111 1162 11B8;
+D33A;D33A;1111 1162 11B9;D33A;1111 1162 11B9;
+D33B;D33B;1111 1162 11BA;D33B;1111 1162 11BA;
+D33C;D33C;1111 1162 11BB;D33C;1111 1162 11BB;
+D33D;D33D;1111 1162 11BC;D33D;1111 1162 11BC;
+D33E;D33E;1111 1162 11BD;D33E;1111 1162 11BD;
+D33F;D33F;1111 1162 11BE;D33F;1111 1162 11BE;
+D340;D340;1111 1162 11BF;D340;1111 1162 11BF;
+D341;D341;1111 1162 11C0;D341;1111 1162 11C0;
+D342;D342;1111 1162 11C1;D342;1111 1162 11C1;
+D343;D343;1111 1162 11C2;D343;1111 1162 11C2;
+D344;D344;1111 1163;D344;1111 1163;
+D345;D345;1111 1163 11A8;D345;1111 1163 11A8;
+D346;D346;1111 1163 11A9;D346;1111 1163 11A9;
+D347;D347;1111 1163 11AA;D347;1111 1163 11AA;
+D348;D348;1111 1163 11AB;D348;1111 1163 11AB;
+D349;D349;1111 1163 11AC;D349;1111 1163 11AC;
+D34A;D34A;1111 1163 11AD;D34A;1111 1163 11AD;
+D34B;D34B;1111 1163 11AE;D34B;1111 1163 11AE;
+D34C;D34C;1111 1163 11AF;D34C;1111 1163 11AF;
+D34D;D34D;1111 1163 11B0;D34D;1111 1163 11B0;
+D34E;D34E;1111 1163 11B1;D34E;1111 1163 11B1;
+D34F;D34F;1111 1163 11B2;D34F;1111 1163 11B2;
+D350;D350;1111 1163 11B3;D350;1111 1163 11B3;
+D351;D351;1111 1163 11B4;D351;1111 1163 11B4;
+D352;D352;1111 1163 11B5;D352;1111 1163 11B5;
+D353;D353;1111 1163 11B6;D353;1111 1163 11B6;
+D354;D354;1111 1163 11B7;D354;1111 1163 11B7;
+D355;D355;1111 1163 11B8;D355;1111 1163 11B8;
+D356;D356;1111 1163 11B9;D356;1111 1163 11B9;
+D357;D357;1111 1163 11BA;D357;1111 1163 11BA;
+D358;D358;1111 1163 11BB;D358;1111 1163 11BB;
+D359;D359;1111 1163 11BC;D359;1111 1163 11BC;
+D35A;D35A;1111 1163 11BD;D35A;1111 1163 11BD;
+D35B;D35B;1111 1163 11BE;D35B;1111 1163 11BE;
+D35C;D35C;1111 1163 11BF;D35C;1111 1163 11BF;
+D35D;D35D;1111 1163 11C0;D35D;1111 1163 11C0;
+D35E;D35E;1111 1163 11C1;D35E;1111 1163 11C1;
+D35F;D35F;1111 1163 11C2;D35F;1111 1163 11C2;
+D360;D360;1111 1164;D360;1111 1164;
+D361;D361;1111 1164 11A8;D361;1111 1164 11A8;
+D362;D362;1111 1164 11A9;D362;1111 1164 11A9;
+D363;D363;1111 1164 11AA;D363;1111 1164 11AA;
+D364;D364;1111 1164 11AB;D364;1111 1164 11AB;
+D365;D365;1111 1164 11AC;D365;1111 1164 11AC;
+D366;D366;1111 1164 11AD;D366;1111 1164 11AD;
+D367;D367;1111 1164 11AE;D367;1111 1164 11AE;
+D368;D368;1111 1164 11AF;D368;1111 1164 11AF;
+D369;D369;1111 1164 11B0;D369;1111 1164 11B0;
+D36A;D36A;1111 1164 11B1;D36A;1111 1164 11B1;
+D36B;D36B;1111 1164 11B2;D36B;1111 1164 11B2;
+D36C;D36C;1111 1164 11B3;D36C;1111 1164 11B3;
+D36D;D36D;1111 1164 11B4;D36D;1111 1164 11B4;
+D36E;D36E;1111 1164 11B5;D36E;1111 1164 11B5;
+D36F;D36F;1111 1164 11B6;D36F;1111 1164 11B6;
+D370;D370;1111 1164 11B7;D370;1111 1164 11B7;
+D371;D371;1111 1164 11B8;D371;1111 1164 11B8;
+D372;D372;1111 1164 11B9;D372;1111 1164 11B9;
+D373;D373;1111 1164 11BA;D373;1111 1164 11BA;
+D374;D374;1111 1164 11BB;D374;1111 1164 11BB;
+D375;D375;1111 1164 11BC;D375;1111 1164 11BC;
+D376;D376;1111 1164 11BD;D376;1111 1164 11BD;
+D377;D377;1111 1164 11BE;D377;1111 1164 11BE;
+D378;D378;1111 1164 11BF;D378;1111 1164 11BF;
+D379;D379;1111 1164 11C0;D379;1111 1164 11C0;
+D37A;D37A;1111 1164 11C1;D37A;1111 1164 11C1;
+D37B;D37B;1111 1164 11C2;D37B;1111 1164 11C2;
+D37C;D37C;1111 1165;D37C;1111 1165;
+D37D;D37D;1111 1165 11A8;D37D;1111 1165 11A8;
+D37E;D37E;1111 1165 11A9;D37E;1111 1165 11A9;
+D37F;D37F;1111 1165 11AA;D37F;1111 1165 11AA;
+D380;D380;1111 1165 11AB;D380;1111 1165 11AB;
+D381;D381;1111 1165 11AC;D381;1111 1165 11AC;
+D382;D382;1111 1165 11AD;D382;1111 1165 11AD;
+D383;D383;1111 1165 11AE;D383;1111 1165 11AE;
+D384;D384;1111 1165 11AF;D384;1111 1165 11AF;
+D385;D385;1111 1165 11B0;D385;1111 1165 11B0;
+D386;D386;1111 1165 11B1;D386;1111 1165 11B1;
+D387;D387;1111 1165 11B2;D387;1111 1165 11B2;
+D388;D388;1111 1165 11B3;D388;1111 1165 11B3;
+D389;D389;1111 1165 11B4;D389;1111 1165 11B4;
+D38A;D38A;1111 1165 11B5;D38A;1111 1165 11B5;
+D38B;D38B;1111 1165 11B6;D38B;1111 1165 11B6;
+D38C;D38C;1111 1165 11B7;D38C;1111 1165 11B7;
+D38D;D38D;1111 1165 11B8;D38D;1111 1165 11B8;
+D38E;D38E;1111 1165 11B9;D38E;1111 1165 11B9;
+D38F;D38F;1111 1165 11BA;D38F;1111 1165 11BA;
+D390;D390;1111 1165 11BB;D390;1111 1165 11BB;
+D391;D391;1111 1165 11BC;D391;1111 1165 11BC;
+D392;D392;1111 1165 11BD;D392;1111 1165 11BD;
+D393;D393;1111 1165 11BE;D393;1111 1165 11BE;
+D394;D394;1111 1165 11BF;D394;1111 1165 11BF;
+D395;D395;1111 1165 11C0;D395;1111 1165 11C0;
+D396;D396;1111 1165 11C1;D396;1111 1165 11C1;
+D397;D397;1111 1165 11C2;D397;1111 1165 11C2;
+D398;D398;1111 1166;D398;1111 1166;
+D399;D399;1111 1166 11A8;D399;1111 1166 11A8;
+D39A;D39A;1111 1166 11A9;D39A;1111 1166 11A9;
+D39B;D39B;1111 1166 11AA;D39B;1111 1166 11AA;
+D39C;D39C;1111 1166 11AB;D39C;1111 1166 11AB;
+D39D;D39D;1111 1166 11AC;D39D;1111 1166 11AC;
+D39E;D39E;1111 1166 11AD;D39E;1111 1166 11AD;
+D39F;D39F;1111 1166 11AE;D39F;1111 1166 11AE;
+D3A0;D3A0;1111 1166 11AF;D3A0;1111 1166 11AF;
+D3A1;D3A1;1111 1166 11B0;D3A1;1111 1166 11B0;
+D3A2;D3A2;1111 1166 11B1;D3A2;1111 1166 11B1;
+D3A3;D3A3;1111 1166 11B2;D3A3;1111 1166 11B2;
+D3A4;D3A4;1111 1166 11B3;D3A4;1111 1166 11B3;
+D3A5;D3A5;1111 1166 11B4;D3A5;1111 1166 11B4;
+D3A6;D3A6;1111 1166 11B5;D3A6;1111 1166 11B5;
+D3A7;D3A7;1111 1166 11B6;D3A7;1111 1166 11B6;
+D3A8;D3A8;1111 1166 11B7;D3A8;1111 1166 11B7;
+D3A9;D3A9;1111 1166 11B8;D3A9;1111 1166 11B8;
+D3AA;D3AA;1111 1166 11B9;D3AA;1111 1166 11B9;
+D3AB;D3AB;1111 1166 11BA;D3AB;1111 1166 11BA;
+D3AC;D3AC;1111 1166 11BB;D3AC;1111 1166 11BB;
+D3AD;D3AD;1111 1166 11BC;D3AD;1111 1166 11BC;
+D3AE;D3AE;1111 1166 11BD;D3AE;1111 1166 11BD;
+D3AF;D3AF;1111 1166 11BE;D3AF;1111 1166 11BE;
+D3B0;D3B0;1111 1166 11BF;D3B0;1111 1166 11BF;
+D3B1;D3B1;1111 1166 11C0;D3B1;1111 1166 11C0;
+D3B2;D3B2;1111 1166 11C1;D3B2;1111 1166 11C1;
+D3B3;D3B3;1111 1166 11C2;D3B3;1111 1166 11C2;
+D3B4;D3B4;1111 1167;D3B4;1111 1167;
+D3B5;D3B5;1111 1167 11A8;D3B5;1111 1167 11A8;
+D3B6;D3B6;1111 1167 11A9;D3B6;1111 1167 11A9;
+D3B7;D3B7;1111 1167 11AA;D3B7;1111 1167 11AA;
+D3B8;D3B8;1111 1167 11AB;D3B8;1111 1167 11AB;
+D3B9;D3B9;1111 1167 11AC;D3B9;1111 1167 11AC;
+D3BA;D3BA;1111 1167 11AD;D3BA;1111 1167 11AD;
+D3BB;D3BB;1111 1167 11AE;D3BB;1111 1167 11AE;
+D3BC;D3BC;1111 1167 11AF;D3BC;1111 1167 11AF;
+D3BD;D3BD;1111 1167 11B0;D3BD;1111 1167 11B0;
+D3BE;D3BE;1111 1167 11B1;D3BE;1111 1167 11B1;
+D3BF;D3BF;1111 1167 11B2;D3BF;1111 1167 11B2;
+D3C0;D3C0;1111 1167 11B3;D3C0;1111 1167 11B3;
+D3C1;D3C1;1111 1167 11B4;D3C1;1111 1167 11B4;
+D3C2;D3C2;1111 1167 11B5;D3C2;1111 1167 11B5;
+D3C3;D3C3;1111 1167 11B6;D3C3;1111 1167 11B6;
+D3C4;D3C4;1111 1167 11B7;D3C4;1111 1167 11B7;
+D3C5;D3C5;1111 1167 11B8;D3C5;1111 1167 11B8;
+D3C6;D3C6;1111 1167 11B9;D3C6;1111 1167 11B9;
+D3C7;D3C7;1111 1167 11BA;D3C7;1111 1167 11BA;
+D3C8;D3C8;1111 1167 11BB;D3C8;1111 1167 11BB;
+D3C9;D3C9;1111 1167 11BC;D3C9;1111 1167 11BC;
+D3CA;D3CA;1111 1167 11BD;D3CA;1111 1167 11BD;
+D3CB;D3CB;1111 1167 11BE;D3CB;1111 1167 11BE;
+D3CC;D3CC;1111 1167 11BF;D3CC;1111 1167 11BF;
+D3CD;D3CD;1111 1167 11C0;D3CD;1111 1167 11C0;
+D3CE;D3CE;1111 1167 11C1;D3CE;1111 1167 11C1;
+D3CF;D3CF;1111 1167 11C2;D3CF;1111 1167 11C2;
+D3D0;D3D0;1111 1168;D3D0;1111 1168;
+D3D1;D3D1;1111 1168 11A8;D3D1;1111 1168 11A8;
+D3D2;D3D2;1111 1168 11A9;D3D2;1111 1168 11A9;
+D3D3;D3D3;1111 1168 11AA;D3D3;1111 1168 11AA;
+D3D4;D3D4;1111 1168 11AB;D3D4;1111 1168 11AB;
+D3D5;D3D5;1111 1168 11AC;D3D5;1111 1168 11AC;
+D3D6;D3D6;1111 1168 11AD;D3D6;1111 1168 11AD;
+D3D7;D3D7;1111 1168 11AE;D3D7;1111 1168 11AE;
+D3D8;D3D8;1111 1168 11AF;D3D8;1111 1168 11AF;
+D3D9;D3D9;1111 1168 11B0;D3D9;1111 1168 11B0;
+D3DA;D3DA;1111 1168 11B1;D3DA;1111 1168 11B1;
+D3DB;D3DB;1111 1168 11B2;D3DB;1111 1168 11B2;
+D3DC;D3DC;1111 1168 11B3;D3DC;1111 1168 11B3;
+D3DD;D3DD;1111 1168 11B4;D3DD;1111 1168 11B4;
+D3DE;D3DE;1111 1168 11B5;D3DE;1111 1168 11B5;
+D3DF;D3DF;1111 1168 11B6;D3DF;1111 1168 11B6;
+D3E0;D3E0;1111 1168 11B7;D3E0;1111 1168 11B7;
+D3E1;D3E1;1111 1168 11B8;D3E1;1111 1168 11B8;
+D3E2;D3E2;1111 1168 11B9;D3E2;1111 1168 11B9;
+D3E3;D3E3;1111 1168 11BA;D3E3;1111 1168 11BA;
+D3E4;D3E4;1111 1168 11BB;D3E4;1111 1168 11BB;
+D3E5;D3E5;1111 1168 11BC;D3E5;1111 1168 11BC;
+D3E6;D3E6;1111 1168 11BD;D3E6;1111 1168 11BD;
+D3E7;D3E7;1111 1168 11BE;D3E7;1111 1168 11BE;
+D3E8;D3E8;1111 1168 11BF;D3E8;1111 1168 11BF;
+D3E9;D3E9;1111 1168 11C0;D3E9;1111 1168 11C0;
+D3EA;D3EA;1111 1168 11C1;D3EA;1111 1168 11C1;
+D3EB;D3EB;1111 1168 11C2;D3EB;1111 1168 11C2;
+D3EC;D3EC;1111 1169;D3EC;1111 1169;
+D3ED;D3ED;1111 1169 11A8;D3ED;1111 1169 11A8;
+D3EE;D3EE;1111 1169 11A9;D3EE;1111 1169 11A9;
+D3EF;D3EF;1111 1169 11AA;D3EF;1111 1169 11AA;
+D3F0;D3F0;1111 1169 11AB;D3F0;1111 1169 11AB;
+D3F1;D3F1;1111 1169 11AC;D3F1;1111 1169 11AC;
+D3F2;D3F2;1111 1169 11AD;D3F2;1111 1169 11AD;
+D3F3;D3F3;1111 1169 11AE;D3F3;1111 1169 11AE;
+D3F4;D3F4;1111 1169 11AF;D3F4;1111 1169 11AF;
+D3F5;D3F5;1111 1169 11B0;D3F5;1111 1169 11B0;
+D3F6;D3F6;1111 1169 11B1;D3F6;1111 1169 11B1;
+D3F7;D3F7;1111 1169 11B2;D3F7;1111 1169 11B2;
+D3F8;D3F8;1111 1169 11B3;D3F8;1111 1169 11B3;
+D3F9;D3F9;1111 1169 11B4;D3F9;1111 1169 11B4;
+D3FA;D3FA;1111 1169 11B5;D3FA;1111 1169 11B5;
+D3FB;D3FB;1111 1169 11B6;D3FB;1111 1169 11B6;
+D3FC;D3FC;1111 1169 11B7;D3FC;1111 1169 11B7;
+D3FD;D3FD;1111 1169 11B8;D3FD;1111 1169 11B8;
+D3FE;D3FE;1111 1169 11B9;D3FE;1111 1169 11B9;
+D3FF;D3FF;1111 1169 11BA;D3FF;1111 1169 11BA;
+D400;D400;1111 1169 11BB;D400;1111 1169 11BB;
+D401;D401;1111 1169 11BC;D401;1111 1169 11BC;
+D402;D402;1111 1169 11BD;D402;1111 1169 11BD;
+D403;D403;1111 1169 11BE;D403;1111 1169 11BE;
+D404;D404;1111 1169 11BF;D404;1111 1169 11BF;
+D405;D405;1111 1169 11C0;D405;1111 1169 11C0;
+D406;D406;1111 1169 11C1;D406;1111 1169 11C1;
+D407;D407;1111 1169 11C2;D407;1111 1169 11C2;
+D408;D408;1111 116A;D408;1111 116A;
+D409;D409;1111 116A 11A8;D409;1111 116A 11A8;
+D40A;D40A;1111 116A 11A9;D40A;1111 116A 11A9;
+D40B;D40B;1111 116A 11AA;D40B;1111 116A 11AA;
+D40C;D40C;1111 116A 11AB;D40C;1111 116A 11AB;
+D40D;D40D;1111 116A 11AC;D40D;1111 116A 11AC;
+D40E;D40E;1111 116A 11AD;D40E;1111 116A 11AD;
+D40F;D40F;1111 116A 11AE;D40F;1111 116A 11AE;
+D410;D410;1111 116A 11AF;D410;1111 116A 11AF;
+D411;D411;1111 116A 11B0;D411;1111 116A 11B0;
+D412;D412;1111 116A 11B1;D412;1111 116A 11B1;
+D413;D413;1111 116A 11B2;D413;1111 116A 11B2;
+D414;D414;1111 116A 11B3;D414;1111 116A 11B3;
+D415;D415;1111 116A 11B4;D415;1111 116A 11B4;
+D416;D416;1111 116A 11B5;D416;1111 116A 11B5;
+D417;D417;1111 116A 11B6;D417;1111 116A 11B6;
+D418;D418;1111 116A 11B7;D418;1111 116A 11B7;
+D419;D419;1111 116A 11B8;D419;1111 116A 11B8;
+D41A;D41A;1111 116A 11B9;D41A;1111 116A 11B9;
+D41B;D41B;1111 116A 11BA;D41B;1111 116A 11BA;
+D41C;D41C;1111 116A 11BB;D41C;1111 116A 11BB;
+D41D;D41D;1111 116A 11BC;D41D;1111 116A 11BC;
+D41E;D41E;1111 116A 11BD;D41E;1111 116A 11BD;
+D41F;D41F;1111 116A 11BE;D41F;1111 116A 11BE;
+D420;D420;1111 116A 11BF;D420;1111 116A 11BF;
+D421;D421;1111 116A 11C0;D421;1111 116A 11C0;
+D422;D422;1111 116A 11C1;D422;1111 116A 11C1;
+D423;D423;1111 116A 11C2;D423;1111 116A 11C2;
+D424;D424;1111 116B;D424;1111 116B;
+D425;D425;1111 116B 11A8;D425;1111 116B 11A8;
+D426;D426;1111 116B 11A9;D426;1111 116B 11A9;
+D427;D427;1111 116B 11AA;D427;1111 116B 11AA;
+D428;D428;1111 116B 11AB;D428;1111 116B 11AB;
+D429;D429;1111 116B 11AC;D429;1111 116B 11AC;
+D42A;D42A;1111 116B 11AD;D42A;1111 116B 11AD;
+D42B;D42B;1111 116B 11AE;D42B;1111 116B 11AE;
+D42C;D42C;1111 116B 11AF;D42C;1111 116B 11AF;
+D42D;D42D;1111 116B 11B0;D42D;1111 116B 11B0;
+D42E;D42E;1111 116B 11B1;D42E;1111 116B 11B1;
+D42F;D42F;1111 116B 11B2;D42F;1111 116B 11B2;
+D430;D430;1111 116B 11B3;D430;1111 116B 11B3;
+D431;D431;1111 116B 11B4;D431;1111 116B 11B4;
+D432;D432;1111 116B 11B5;D432;1111 116B 11B5;
+D433;D433;1111 116B 11B6;D433;1111 116B 11B6;
+D434;D434;1111 116B 11B7;D434;1111 116B 11B7;
+D435;D435;1111 116B 11B8;D435;1111 116B 11B8;
+D436;D436;1111 116B 11B9;D436;1111 116B 11B9;
+D437;D437;1111 116B 11BA;D437;1111 116B 11BA;
+D438;D438;1111 116B 11BB;D438;1111 116B 11BB;
+D439;D439;1111 116B 11BC;D439;1111 116B 11BC;
+D43A;D43A;1111 116B 11BD;D43A;1111 116B 11BD;
+D43B;D43B;1111 116B 11BE;D43B;1111 116B 11BE;
+D43C;D43C;1111 116B 11BF;D43C;1111 116B 11BF;
+D43D;D43D;1111 116B 11C0;D43D;1111 116B 11C0;
+D43E;D43E;1111 116B 11C1;D43E;1111 116B 11C1;
+D43F;D43F;1111 116B 11C2;D43F;1111 116B 11C2;
+D440;D440;1111 116C;D440;1111 116C;
+D441;D441;1111 116C 11A8;D441;1111 116C 11A8;
+D442;D442;1111 116C 11A9;D442;1111 116C 11A9;
+D443;D443;1111 116C 11AA;D443;1111 116C 11AA;
+D444;D444;1111 116C 11AB;D444;1111 116C 11AB;
+D445;D445;1111 116C 11AC;D445;1111 116C 11AC;
+D446;D446;1111 116C 11AD;D446;1111 116C 11AD;
+D447;D447;1111 116C 11AE;D447;1111 116C 11AE;
+D448;D448;1111 116C 11AF;D448;1111 116C 11AF;
+D449;D449;1111 116C 11B0;D449;1111 116C 11B0;
+D44A;D44A;1111 116C 11B1;D44A;1111 116C 11B1;
+D44B;D44B;1111 116C 11B2;D44B;1111 116C 11B2;
+D44C;D44C;1111 116C 11B3;D44C;1111 116C 11B3;
+D44D;D44D;1111 116C 11B4;D44D;1111 116C 11B4;
+D44E;D44E;1111 116C 11B5;D44E;1111 116C 11B5;
+D44F;D44F;1111 116C 11B6;D44F;1111 116C 11B6;
+D450;D450;1111 116C 11B7;D450;1111 116C 11B7;
+D451;D451;1111 116C 11B8;D451;1111 116C 11B8;
+D452;D452;1111 116C 11B9;D452;1111 116C 11B9;
+D453;D453;1111 116C 11BA;D453;1111 116C 11BA;
+D454;D454;1111 116C 11BB;D454;1111 116C 11BB;
+D455;D455;1111 116C 11BC;D455;1111 116C 11BC;
+D456;D456;1111 116C 11BD;D456;1111 116C 11BD;
+D457;D457;1111 116C 11BE;D457;1111 116C 11BE;
+D458;D458;1111 116C 11BF;D458;1111 116C 11BF;
+D459;D459;1111 116C 11C0;D459;1111 116C 11C0;
+D45A;D45A;1111 116C 11C1;D45A;1111 116C 11C1;
+D45B;D45B;1111 116C 11C2;D45B;1111 116C 11C2;
+D45C;D45C;1111 116D;D45C;1111 116D;
+D45D;D45D;1111 116D 11A8;D45D;1111 116D 11A8;
+D45E;D45E;1111 116D 11A9;D45E;1111 116D 11A9;
+D45F;D45F;1111 116D 11AA;D45F;1111 116D 11AA;
+D460;D460;1111 116D 11AB;D460;1111 116D 11AB;
+D461;D461;1111 116D 11AC;D461;1111 116D 11AC;
+D462;D462;1111 116D 11AD;D462;1111 116D 11AD;
+D463;D463;1111 116D 11AE;D463;1111 116D 11AE;
+D464;D464;1111 116D 11AF;D464;1111 116D 11AF;
+D465;D465;1111 116D 11B0;D465;1111 116D 11B0;
+D466;D466;1111 116D 11B1;D466;1111 116D 11B1;
+D467;D467;1111 116D 11B2;D467;1111 116D 11B2;
+D468;D468;1111 116D 11B3;D468;1111 116D 11B3;
+D469;D469;1111 116D 11B4;D469;1111 116D 11B4;
+D46A;D46A;1111 116D 11B5;D46A;1111 116D 11B5;
+D46B;D46B;1111 116D 11B6;D46B;1111 116D 11B6;
+D46C;D46C;1111 116D 11B7;D46C;1111 116D 11B7;
+D46D;D46D;1111 116D 11B8;D46D;1111 116D 11B8;
+D46E;D46E;1111 116D 11B9;D46E;1111 116D 11B9;
+D46F;D46F;1111 116D 11BA;D46F;1111 116D 11BA;
+D470;D470;1111 116D 11BB;D470;1111 116D 11BB;
+D471;D471;1111 116D 11BC;D471;1111 116D 11BC;
+D472;D472;1111 116D 11BD;D472;1111 116D 11BD;
+D473;D473;1111 116D 11BE;D473;1111 116D 11BE;
+D474;D474;1111 116D 11BF;D474;1111 116D 11BF;
+D475;D475;1111 116D 11C0;D475;1111 116D 11C0;
+D476;D476;1111 116D 11C1;D476;1111 116D 11C1;
+D477;D477;1111 116D 11C2;D477;1111 116D 11C2;
+D478;D478;1111 116E;D478;1111 116E;
+D479;D479;1111 116E 11A8;D479;1111 116E 11A8;
+D47A;D47A;1111 116E 11A9;D47A;1111 116E 11A9;
+D47B;D47B;1111 116E 11AA;D47B;1111 116E 11AA;
+D47C;D47C;1111 116E 11AB;D47C;1111 116E 11AB;
+D47D;D47D;1111 116E 11AC;D47D;1111 116E 11AC;
+D47E;D47E;1111 116E 11AD;D47E;1111 116E 11AD;
+D47F;D47F;1111 116E 11AE;D47F;1111 116E 11AE;
+D480;D480;1111 116E 11AF;D480;1111 116E 11AF;
+D481;D481;1111 116E 11B0;D481;1111 116E 11B0;
+D482;D482;1111 116E 11B1;D482;1111 116E 11B1;
+D483;D483;1111 116E 11B2;D483;1111 116E 11B2;
+D484;D484;1111 116E 11B3;D484;1111 116E 11B3;
+D485;D485;1111 116E 11B4;D485;1111 116E 11B4;
+D486;D486;1111 116E 11B5;D486;1111 116E 11B5;
+D487;D487;1111 116E 11B6;D487;1111 116E 11B6;
+D488;D488;1111 116E 11B7;D488;1111 116E 11B7;
+D489;D489;1111 116E 11B8;D489;1111 116E 11B8;
+D48A;D48A;1111 116E 11B9;D48A;1111 116E 11B9;
+D48B;D48B;1111 116E 11BA;D48B;1111 116E 11BA;
+D48C;D48C;1111 116E 11BB;D48C;1111 116E 11BB;
+D48D;D48D;1111 116E 11BC;D48D;1111 116E 11BC;
+D48E;D48E;1111 116E 11BD;D48E;1111 116E 11BD;
+D48F;D48F;1111 116E 11BE;D48F;1111 116E 11BE;
+D490;D490;1111 116E 11BF;D490;1111 116E 11BF;
+D491;D491;1111 116E 11C0;D491;1111 116E 11C0;
+D492;D492;1111 116E 11C1;D492;1111 116E 11C1;
+D493;D493;1111 116E 11C2;D493;1111 116E 11C2;
+D494;D494;1111 116F;D494;1111 116F;
+D495;D495;1111 116F 11A8;D495;1111 116F 11A8;
+D496;D496;1111 116F 11A9;D496;1111 116F 11A9;
+D497;D497;1111 116F 11AA;D497;1111 116F 11AA;
+D498;D498;1111 116F 11AB;D498;1111 116F 11AB;
+D499;D499;1111 116F 11AC;D499;1111 116F 11AC;
+D49A;D49A;1111 116F 11AD;D49A;1111 116F 11AD;
+D49B;D49B;1111 116F 11AE;D49B;1111 116F 11AE;
+D49C;D49C;1111 116F 11AF;D49C;1111 116F 11AF;
+D49D;D49D;1111 116F 11B0;D49D;1111 116F 11B0;
+D49E;D49E;1111 116F 11B1;D49E;1111 116F 11B1;
+D49F;D49F;1111 116F 11B2;D49F;1111 116F 11B2;
+D4A0;D4A0;1111 116F 11B3;D4A0;1111 116F 11B3;
+D4A1;D4A1;1111 116F 11B4;D4A1;1111 116F 11B4;
+D4A2;D4A2;1111 116F 11B5;D4A2;1111 116F 11B5;
+D4A3;D4A3;1111 116F 11B6;D4A3;1111 116F 11B6;
+D4A4;D4A4;1111 116F 11B7;D4A4;1111 116F 11B7;
+D4A5;D4A5;1111 116F 11B8;D4A5;1111 116F 11B8;
+D4A6;D4A6;1111 116F 11B9;D4A6;1111 116F 11B9;
+D4A7;D4A7;1111 116F 11BA;D4A7;1111 116F 11BA;
+D4A8;D4A8;1111 116F 11BB;D4A8;1111 116F 11BB;
+D4A9;D4A9;1111 116F 11BC;D4A9;1111 116F 11BC;
+D4AA;D4AA;1111 116F 11BD;D4AA;1111 116F 11BD;
+D4AB;D4AB;1111 116F 11BE;D4AB;1111 116F 11BE;
+D4AC;D4AC;1111 116F 11BF;D4AC;1111 116F 11BF;
+D4AD;D4AD;1111 116F 11C0;D4AD;1111 116F 11C0;
+D4AE;D4AE;1111 116F 11C1;D4AE;1111 116F 11C1;
+D4AF;D4AF;1111 116F 11C2;D4AF;1111 116F 11C2;
+D4B0;D4B0;1111 1170;D4B0;1111 1170;
+D4B1;D4B1;1111 1170 11A8;D4B1;1111 1170 11A8;
+D4B2;D4B2;1111 1170 11A9;D4B2;1111 1170 11A9;
+D4B3;D4B3;1111 1170 11AA;D4B3;1111 1170 11AA;
+D4B4;D4B4;1111 1170 11AB;D4B4;1111 1170 11AB;
+D4B5;D4B5;1111 1170 11AC;D4B5;1111 1170 11AC;
+D4B6;D4B6;1111 1170 11AD;D4B6;1111 1170 11AD;
+D4B7;D4B7;1111 1170 11AE;D4B7;1111 1170 11AE;
+D4B8;D4B8;1111 1170 11AF;D4B8;1111 1170 11AF;
+D4B9;D4B9;1111 1170 11B0;D4B9;1111 1170 11B0;
+D4BA;D4BA;1111 1170 11B1;D4BA;1111 1170 11B1;
+D4BB;D4BB;1111 1170 11B2;D4BB;1111 1170 11B2;
+D4BC;D4BC;1111 1170 11B3;D4BC;1111 1170 11B3;
+D4BD;D4BD;1111 1170 11B4;D4BD;1111 1170 11B4;
+D4BE;D4BE;1111 1170 11B5;D4BE;1111 1170 11B5;
+D4BF;D4BF;1111 1170 11B6;D4BF;1111 1170 11B6;
+D4C0;D4C0;1111 1170 11B7;D4C0;1111 1170 11B7;
+D4C1;D4C1;1111 1170 11B8;D4C1;1111 1170 11B8;
+D4C2;D4C2;1111 1170 11B9;D4C2;1111 1170 11B9;
+D4C3;D4C3;1111 1170 11BA;D4C3;1111 1170 11BA;
+D4C4;D4C4;1111 1170 11BB;D4C4;1111 1170 11BB;
+D4C5;D4C5;1111 1170 11BC;D4C5;1111 1170 11BC;
+D4C6;D4C6;1111 1170 11BD;D4C6;1111 1170 11BD;
+D4C7;D4C7;1111 1170 11BE;D4C7;1111 1170 11BE;
+D4C8;D4C8;1111 1170 11BF;D4C8;1111 1170 11BF;
+D4C9;D4C9;1111 1170 11C0;D4C9;1111 1170 11C0;
+D4CA;D4CA;1111 1170 11C1;D4CA;1111 1170 11C1;
+D4CB;D4CB;1111 1170 11C2;D4CB;1111 1170 11C2;
+D4CC;D4CC;1111 1171;D4CC;1111 1171;
+D4CD;D4CD;1111 1171 11A8;D4CD;1111 1171 11A8;
+D4CE;D4CE;1111 1171 11A9;D4CE;1111 1171 11A9;
+D4CF;D4CF;1111 1171 11AA;D4CF;1111 1171 11AA;
+D4D0;D4D0;1111 1171 11AB;D4D0;1111 1171 11AB;
+D4D1;D4D1;1111 1171 11AC;D4D1;1111 1171 11AC;
+D4D2;D4D2;1111 1171 11AD;D4D2;1111 1171 11AD;
+D4D3;D4D3;1111 1171 11AE;D4D3;1111 1171 11AE;
+D4D4;D4D4;1111 1171 11AF;D4D4;1111 1171 11AF;
+D4D5;D4D5;1111 1171 11B0;D4D5;1111 1171 11B0;
+D4D6;D4D6;1111 1171 11B1;D4D6;1111 1171 11B1;
+D4D7;D4D7;1111 1171 11B2;D4D7;1111 1171 11B2;
+D4D8;D4D8;1111 1171 11B3;D4D8;1111 1171 11B3;
+D4D9;D4D9;1111 1171 11B4;D4D9;1111 1171 11B4;
+D4DA;D4DA;1111 1171 11B5;D4DA;1111 1171 11B5;
+D4DB;D4DB;1111 1171 11B6;D4DB;1111 1171 11B6;
+D4DC;D4DC;1111 1171 11B7;D4DC;1111 1171 11B7;
+D4DD;D4DD;1111 1171 11B8;D4DD;1111 1171 11B8;
+D4DE;D4DE;1111 1171 11B9;D4DE;1111 1171 11B9;
+D4DF;D4DF;1111 1171 11BA;D4DF;1111 1171 11BA;
+D4E0;D4E0;1111 1171 11BB;D4E0;1111 1171 11BB;
+D4E1;D4E1;1111 1171 11BC;D4E1;1111 1171 11BC;
+D4E2;D4E2;1111 1171 11BD;D4E2;1111 1171 11BD;
+D4E3;D4E3;1111 1171 11BE;D4E3;1111 1171 11BE;
+D4E4;D4E4;1111 1171 11BF;D4E4;1111 1171 11BF;
+D4E5;D4E5;1111 1171 11C0;D4E5;1111 1171 11C0;
+D4E6;D4E6;1111 1171 11C1;D4E6;1111 1171 11C1;
+D4E7;D4E7;1111 1171 11C2;D4E7;1111 1171 11C2;
+D4E8;D4E8;1111 1172;D4E8;1111 1172;
+D4E9;D4E9;1111 1172 11A8;D4E9;1111 1172 11A8;
+D4EA;D4EA;1111 1172 11A9;D4EA;1111 1172 11A9;
+D4EB;D4EB;1111 1172 11AA;D4EB;1111 1172 11AA;
+D4EC;D4EC;1111 1172 11AB;D4EC;1111 1172 11AB;
+D4ED;D4ED;1111 1172 11AC;D4ED;1111 1172 11AC;
+D4EE;D4EE;1111 1172 11AD;D4EE;1111 1172 11AD;
+D4EF;D4EF;1111 1172 11AE;D4EF;1111 1172 11AE;
+D4F0;D4F0;1111 1172 11AF;D4F0;1111 1172 11AF;
+D4F1;D4F1;1111 1172 11B0;D4F1;1111 1172 11B0;
+D4F2;D4F2;1111 1172 11B1;D4F2;1111 1172 11B1;
+D4F3;D4F3;1111 1172 11B2;D4F3;1111 1172 11B2;
+D4F4;D4F4;1111 1172 11B3;D4F4;1111 1172 11B3;
+D4F5;D4F5;1111 1172 11B4;D4F5;1111 1172 11B4;
+D4F6;D4F6;1111 1172 11B5;D4F6;1111 1172 11B5;
+D4F7;D4F7;1111 1172 11B6;D4F7;1111 1172 11B6;
+D4F8;D4F8;1111 1172 11B7;D4F8;1111 1172 11B7;
+D4F9;D4F9;1111 1172 11B8;D4F9;1111 1172 11B8;
+D4FA;D4FA;1111 1172 11B9;D4FA;1111 1172 11B9;
+D4FB;D4FB;1111 1172 11BA;D4FB;1111 1172 11BA;
+D4FC;D4FC;1111 1172 11BB;D4FC;1111 1172 11BB;
+D4FD;D4FD;1111 1172 11BC;D4FD;1111 1172 11BC;
+D4FE;D4FE;1111 1172 11BD;D4FE;1111 1172 11BD;
+D4FF;D4FF;1111 1172 11BE;D4FF;1111 1172 11BE;
+D500;D500;1111 1172 11BF;D500;1111 1172 11BF;
+D501;D501;1111 1172 11C0;D501;1111 1172 11C0;
+D502;D502;1111 1172 11C1;D502;1111 1172 11C1;
+D503;D503;1111 1172 11C2;D503;1111 1172 11C2;
+D504;D504;1111 1173;D504;1111 1173;
+D505;D505;1111 1173 11A8;D505;1111 1173 11A8;
+D506;D506;1111 1173 11A9;D506;1111 1173 11A9;
+D507;D507;1111 1173 11AA;D507;1111 1173 11AA;
+D508;D508;1111 1173 11AB;D508;1111 1173 11AB;
+D509;D509;1111 1173 11AC;D509;1111 1173 11AC;
+D50A;D50A;1111 1173 11AD;D50A;1111 1173 11AD;
+D50B;D50B;1111 1173 11AE;D50B;1111 1173 11AE;
+D50C;D50C;1111 1173 11AF;D50C;1111 1173 11AF;
+D50D;D50D;1111 1173 11B0;D50D;1111 1173 11B0;
+D50E;D50E;1111 1173 11B1;D50E;1111 1173 11B1;
+D50F;D50F;1111 1173 11B2;D50F;1111 1173 11B2;
+D510;D510;1111 1173 11B3;D510;1111 1173 11B3;
+D511;D511;1111 1173 11B4;D511;1111 1173 11B4;
+D512;D512;1111 1173 11B5;D512;1111 1173 11B5;
+D513;D513;1111 1173 11B6;D513;1111 1173 11B6;
+D514;D514;1111 1173 11B7;D514;1111 1173 11B7;
+D515;D515;1111 1173 11B8;D515;1111 1173 11B8;
+D516;D516;1111 1173 11B9;D516;1111 1173 11B9;
+D517;D517;1111 1173 11BA;D517;1111 1173 11BA;
+D518;D518;1111 1173 11BB;D518;1111 1173 11BB;
+D519;D519;1111 1173 11BC;D519;1111 1173 11BC;
+D51A;D51A;1111 1173 11BD;D51A;1111 1173 11BD;
+D51B;D51B;1111 1173 11BE;D51B;1111 1173 11BE;
+D51C;D51C;1111 1173 11BF;D51C;1111 1173 11BF;
+D51D;D51D;1111 1173 11C0;D51D;1111 1173 11C0;
+D51E;D51E;1111 1173 11C1;D51E;1111 1173 11C1;
+D51F;D51F;1111 1173 11C2;D51F;1111 1173 11C2;
+D520;D520;1111 1174;D520;1111 1174;
+D521;D521;1111 1174 11A8;D521;1111 1174 11A8;
+D522;D522;1111 1174 11A9;D522;1111 1174 11A9;
+D523;D523;1111 1174 11AA;D523;1111 1174 11AA;
+D524;D524;1111 1174 11AB;D524;1111 1174 11AB;
+D525;D525;1111 1174 11AC;D525;1111 1174 11AC;
+D526;D526;1111 1174 11AD;D526;1111 1174 11AD;
+D527;D527;1111 1174 11AE;D527;1111 1174 11AE;
+D528;D528;1111 1174 11AF;D528;1111 1174 11AF;
+D529;D529;1111 1174 11B0;D529;1111 1174 11B0;
+D52A;D52A;1111 1174 11B1;D52A;1111 1174 11B1;
+D52B;D52B;1111 1174 11B2;D52B;1111 1174 11B2;
+D52C;D52C;1111 1174 11B3;D52C;1111 1174 11B3;
+D52D;D52D;1111 1174 11B4;D52D;1111 1174 11B4;
+D52E;D52E;1111 1174 11B5;D52E;1111 1174 11B5;
+D52F;D52F;1111 1174 11B6;D52F;1111 1174 11B6;
+D530;D530;1111 1174 11B7;D530;1111 1174 11B7;
+D531;D531;1111 1174 11B8;D531;1111 1174 11B8;
+D532;D532;1111 1174 11B9;D532;1111 1174 11B9;
+D533;D533;1111 1174 11BA;D533;1111 1174 11BA;
+D534;D534;1111 1174 11BB;D534;1111 1174 11BB;
+D535;D535;1111 1174 11BC;D535;1111 1174 11BC;
+D536;D536;1111 1174 11BD;D536;1111 1174 11BD;
+D537;D537;1111 1174 11BE;D537;1111 1174 11BE;
+D538;D538;1111 1174 11BF;D538;1111 1174 11BF;
+D539;D539;1111 1174 11C0;D539;1111 1174 11C0;
+D53A;D53A;1111 1174 11C1;D53A;1111 1174 11C1;
+D53B;D53B;1111 1174 11C2;D53B;1111 1174 11C2;
+D53C;D53C;1111 1175;D53C;1111 1175;
+D53D;D53D;1111 1175 11A8;D53D;1111 1175 11A8;
+D53E;D53E;1111 1175 11A9;D53E;1111 1175 11A9;
+D53F;D53F;1111 1175 11AA;D53F;1111 1175 11AA;
+D540;D540;1111 1175 11AB;D540;1111 1175 11AB;
+D541;D541;1111 1175 11AC;D541;1111 1175 11AC;
+D542;D542;1111 1175 11AD;D542;1111 1175 11AD;
+D543;D543;1111 1175 11AE;D543;1111 1175 11AE;
+D544;D544;1111 1175 11AF;D544;1111 1175 11AF;
+D545;D545;1111 1175 11B0;D545;1111 1175 11B0;
+D546;D546;1111 1175 11B1;D546;1111 1175 11B1;
+D547;D547;1111 1175 11B2;D547;1111 1175 11B2;
+D548;D548;1111 1175 11B3;D548;1111 1175 11B3;
+D549;D549;1111 1175 11B4;D549;1111 1175 11B4;
+D54A;D54A;1111 1175 11B5;D54A;1111 1175 11B5;
+D54B;D54B;1111 1175 11B6;D54B;1111 1175 11B6;
+D54C;D54C;1111 1175 11B7;D54C;1111 1175 11B7;
+D54D;D54D;1111 1175 11B8;D54D;1111 1175 11B8;
+D54E;D54E;1111 1175 11B9;D54E;1111 1175 11B9;
+D54F;D54F;1111 1175 11BA;D54F;1111 1175 11BA;
+D550;D550;1111 1175 11BB;D550;1111 1175 11BB;
+D551;D551;1111 1175 11BC;D551;1111 1175 11BC;
+D552;D552;1111 1175 11BD;D552;1111 1175 11BD;
+D553;D553;1111 1175 11BE;D553;1111 1175 11BE;
+D554;D554;1111 1175 11BF;D554;1111 1175 11BF;
+D555;D555;1111 1175 11C0;D555;1111 1175 11C0;
+D556;D556;1111 1175 11C1;D556;1111 1175 11C1;
+D557;D557;1111 1175 11C2;D557;1111 1175 11C2;
+D558;D558;1112 1161;D558;1112 1161;
+D559;D559;1112 1161 11A8;D559;1112 1161 11A8;
+D55A;D55A;1112 1161 11A9;D55A;1112 1161 11A9;
+D55B;D55B;1112 1161 11AA;D55B;1112 1161 11AA;
+D55C;D55C;1112 1161 11AB;D55C;1112 1161 11AB;
+D55D;D55D;1112 1161 11AC;D55D;1112 1161 11AC;
+D55E;D55E;1112 1161 11AD;D55E;1112 1161 11AD;
+D55F;D55F;1112 1161 11AE;D55F;1112 1161 11AE;
+D560;D560;1112 1161 11AF;D560;1112 1161 11AF;
+D561;D561;1112 1161 11B0;D561;1112 1161 11B0;
+D562;D562;1112 1161 11B1;D562;1112 1161 11B1;
+D563;D563;1112 1161 11B2;D563;1112 1161 11B2;
+D564;D564;1112 1161 11B3;D564;1112 1161 11B3;
+D565;D565;1112 1161 11B4;D565;1112 1161 11B4;
+D566;D566;1112 1161 11B5;D566;1112 1161 11B5;
+D567;D567;1112 1161 11B6;D567;1112 1161 11B6;
+D568;D568;1112 1161 11B7;D568;1112 1161 11B7;
+D569;D569;1112 1161 11B8;D569;1112 1161 11B8;
+D56A;D56A;1112 1161 11B9;D56A;1112 1161 11B9;
+D56B;D56B;1112 1161 11BA;D56B;1112 1161 11BA;
+D56C;D56C;1112 1161 11BB;D56C;1112 1161 11BB;
+D56D;D56D;1112 1161 11BC;D56D;1112 1161 11BC;
+D56E;D56E;1112 1161 11BD;D56E;1112 1161 11BD;
+D56F;D56F;1112 1161 11BE;D56F;1112 1161 11BE;
+D570;D570;1112 1161 11BF;D570;1112 1161 11BF;
+D571;D571;1112 1161 11C0;D571;1112 1161 11C0;
+D572;D572;1112 1161 11C1;D572;1112 1161 11C1;
+D573;D573;1112 1161 11C2;D573;1112 1161 11C2;
+D574;D574;1112 1162;D574;1112 1162;
+D575;D575;1112 1162 11A8;D575;1112 1162 11A8;
+D576;D576;1112 1162 11A9;D576;1112 1162 11A9;
+D577;D577;1112 1162 11AA;D577;1112 1162 11AA;
+D578;D578;1112 1162 11AB;D578;1112 1162 11AB;
+D579;D579;1112 1162 11AC;D579;1112 1162 11AC;
+D57A;D57A;1112 1162 11AD;D57A;1112 1162 11AD;
+D57B;D57B;1112 1162 11AE;D57B;1112 1162 11AE;
+D57C;D57C;1112 1162 11AF;D57C;1112 1162 11AF;
+D57D;D57D;1112 1162 11B0;D57D;1112 1162 11B0;
+D57E;D57E;1112 1162 11B1;D57E;1112 1162 11B1;
+D57F;D57F;1112 1162 11B2;D57F;1112 1162 11B2;
+D580;D580;1112 1162 11B3;D580;1112 1162 11B3;
+D581;D581;1112 1162 11B4;D581;1112 1162 11B4;
+D582;D582;1112 1162 11B5;D582;1112 1162 11B5;
+D583;D583;1112 1162 11B6;D583;1112 1162 11B6;
+D584;D584;1112 1162 11B7;D584;1112 1162 11B7;
+D585;D585;1112 1162 11B8;D585;1112 1162 11B8;
+D586;D586;1112 1162 11B9;D586;1112 1162 11B9;
+D587;D587;1112 1162 11BA;D587;1112 1162 11BA;
+D588;D588;1112 1162 11BB;D588;1112 1162 11BB;
+D589;D589;1112 1162 11BC;D589;1112 1162 11BC;
+D58A;D58A;1112 1162 11BD;D58A;1112 1162 11BD;
+D58B;D58B;1112 1162 11BE;D58B;1112 1162 11BE;
+D58C;D58C;1112 1162 11BF;D58C;1112 1162 11BF;
+D58D;D58D;1112 1162 11C0;D58D;1112 1162 11C0;
+D58E;D58E;1112 1162 11C1;D58E;1112 1162 11C1;
+D58F;D58F;1112 1162 11C2;D58F;1112 1162 11C2;
+D590;D590;1112 1163;D590;1112 1163;
+D591;D591;1112 1163 11A8;D591;1112 1163 11A8;
+D592;D592;1112 1163 11A9;D592;1112 1163 11A9;
+D593;D593;1112 1163 11AA;D593;1112 1163 11AA;
+D594;D594;1112 1163 11AB;D594;1112 1163 11AB;
+D595;D595;1112 1163 11AC;D595;1112 1163 11AC;
+D596;D596;1112 1163 11AD;D596;1112 1163 11AD;
+D597;D597;1112 1163 11AE;D597;1112 1163 11AE;
+D598;D598;1112 1163 11AF;D598;1112 1163 11AF;
+D599;D599;1112 1163 11B0;D599;1112 1163 11B0;
+D59A;D59A;1112 1163 11B1;D59A;1112 1163 11B1;
+D59B;D59B;1112 1163 11B2;D59B;1112 1163 11B2;
+D59C;D59C;1112 1163 11B3;D59C;1112 1163 11B3;
+D59D;D59D;1112 1163 11B4;D59D;1112 1163 11B4;
+D59E;D59E;1112 1163 11B5;D59E;1112 1163 11B5;
+D59F;D59F;1112 1163 11B6;D59F;1112 1163 11B6;
+D5A0;D5A0;1112 1163 11B7;D5A0;1112 1163 11B7;
+D5A1;D5A1;1112 1163 11B8;D5A1;1112 1163 11B8;
+D5A2;D5A2;1112 1163 11B9;D5A2;1112 1163 11B9;
+D5A3;D5A3;1112 1163 11BA;D5A3;1112 1163 11BA;
+D5A4;D5A4;1112 1163 11BB;D5A4;1112 1163 11BB;
+D5A5;D5A5;1112 1163 11BC;D5A5;1112 1163 11BC;
+D5A6;D5A6;1112 1163 11BD;D5A6;1112 1163 11BD;
+D5A7;D5A7;1112 1163 11BE;D5A7;1112 1163 11BE;
+D5A8;D5A8;1112 1163 11BF;D5A8;1112 1163 11BF;
+D5A9;D5A9;1112 1163 11C0;D5A9;1112 1163 11C0;
+D5AA;D5AA;1112 1163 11C1;D5AA;1112 1163 11C1;
+D5AB;D5AB;1112 1163 11C2;D5AB;1112 1163 11C2;
+D5AC;D5AC;1112 1164;D5AC;1112 1164;
+D5AD;D5AD;1112 1164 11A8;D5AD;1112 1164 11A8;
+D5AE;D5AE;1112 1164 11A9;D5AE;1112 1164 11A9;
+D5AF;D5AF;1112 1164 11AA;D5AF;1112 1164 11AA;
+D5B0;D5B0;1112 1164 11AB;D5B0;1112 1164 11AB;
+D5B1;D5B1;1112 1164 11AC;D5B1;1112 1164 11AC;
+D5B2;D5B2;1112 1164 11AD;D5B2;1112 1164 11AD;
+D5B3;D5B3;1112 1164 11AE;D5B3;1112 1164 11AE;
+D5B4;D5B4;1112 1164 11AF;D5B4;1112 1164 11AF;
+D5B5;D5B5;1112 1164 11B0;D5B5;1112 1164 11B0;
+D5B6;D5B6;1112 1164 11B1;D5B6;1112 1164 11B1;
+D5B7;D5B7;1112 1164 11B2;D5B7;1112 1164 11B2;
+D5B8;D5B8;1112 1164 11B3;D5B8;1112 1164 11B3;
+D5B9;D5B9;1112 1164 11B4;D5B9;1112 1164 11B4;
+D5BA;D5BA;1112 1164 11B5;D5BA;1112 1164 11B5;
+D5BB;D5BB;1112 1164 11B6;D5BB;1112 1164 11B6;
+D5BC;D5BC;1112 1164 11B7;D5BC;1112 1164 11B7;
+D5BD;D5BD;1112 1164 11B8;D5BD;1112 1164 11B8;
+D5BE;D5BE;1112 1164 11B9;D5BE;1112 1164 11B9;
+D5BF;D5BF;1112 1164 11BA;D5BF;1112 1164 11BA;
+D5C0;D5C0;1112 1164 11BB;D5C0;1112 1164 11BB;
+D5C1;D5C1;1112 1164 11BC;D5C1;1112 1164 11BC;
+D5C2;D5C2;1112 1164 11BD;D5C2;1112 1164 11BD;
+D5C3;D5C3;1112 1164 11BE;D5C3;1112 1164 11BE;
+D5C4;D5C4;1112 1164 11BF;D5C4;1112 1164 11BF;
+D5C5;D5C5;1112 1164 11C0;D5C5;1112 1164 11C0;
+D5C6;D5C6;1112 1164 11C1;D5C6;1112 1164 11C1;
+D5C7;D5C7;1112 1164 11C2;D5C7;1112 1164 11C2;
+D5C8;D5C8;1112 1165;D5C8;1112 1165;
+D5C9;D5C9;1112 1165 11A8;D5C9;1112 1165 11A8;
+D5CA;D5CA;1112 1165 11A9;D5CA;1112 1165 11A9;
+D5CB;D5CB;1112 1165 11AA;D5CB;1112 1165 11AA;
+D5CC;D5CC;1112 1165 11AB;D5CC;1112 1165 11AB;
+D5CD;D5CD;1112 1165 11AC;D5CD;1112 1165 11AC;
+D5CE;D5CE;1112 1165 11AD;D5CE;1112 1165 11AD;
+D5CF;D5CF;1112 1165 11AE;D5CF;1112 1165 11AE;
+D5D0;D5D0;1112 1165 11AF;D5D0;1112 1165 11AF;
+D5D1;D5D1;1112 1165 11B0;D5D1;1112 1165 11B0;
+D5D2;D5D2;1112 1165 11B1;D5D2;1112 1165 11B1;
+D5D3;D5D3;1112 1165 11B2;D5D3;1112 1165 11B2;
+D5D4;D5D4;1112 1165 11B3;D5D4;1112 1165 11B3;
+D5D5;D5D5;1112 1165 11B4;D5D5;1112 1165 11B4;
+D5D6;D5D6;1112 1165 11B5;D5D6;1112 1165 11B5;
+D5D7;D5D7;1112 1165 11B6;D5D7;1112 1165 11B6;
+D5D8;D5D8;1112 1165 11B7;D5D8;1112 1165 11B7;
+D5D9;D5D9;1112 1165 11B8;D5D9;1112 1165 11B8;
+D5DA;D5DA;1112 1165 11B9;D5DA;1112 1165 11B9;
+D5DB;D5DB;1112 1165 11BA;D5DB;1112 1165 11BA;
+D5DC;D5DC;1112 1165 11BB;D5DC;1112 1165 11BB;
+D5DD;D5DD;1112 1165 11BC;D5DD;1112 1165 11BC;
+D5DE;D5DE;1112 1165 11BD;D5DE;1112 1165 11BD;
+D5DF;D5DF;1112 1165 11BE;D5DF;1112 1165 11BE;
+D5E0;D5E0;1112 1165 11BF;D5E0;1112 1165 11BF;
+D5E1;D5E1;1112 1165 11C0;D5E1;1112 1165 11C0;
+D5E2;D5E2;1112 1165 11C1;D5E2;1112 1165 11C1;
+D5E3;D5E3;1112 1165 11C2;D5E3;1112 1165 11C2;
+D5E4;D5E4;1112 1166;D5E4;1112 1166;
+D5E5;D5E5;1112 1166 11A8;D5E5;1112 1166 11A8;
+D5E6;D5E6;1112 1166 11A9;D5E6;1112 1166 11A9;
+D5E7;D5E7;1112 1166 11AA;D5E7;1112 1166 11AA;
+D5E8;D5E8;1112 1166 11AB;D5E8;1112 1166 11AB;
+D5E9;D5E9;1112 1166 11AC;D5E9;1112 1166 11AC;
+D5EA;D5EA;1112 1166 11AD;D5EA;1112 1166 11AD;
+D5EB;D5EB;1112 1166 11AE;D5EB;1112 1166 11AE;
+D5EC;D5EC;1112 1166 11AF;D5EC;1112 1166 11AF;
+D5ED;D5ED;1112 1166 11B0;D5ED;1112 1166 11B0;
+D5EE;D5EE;1112 1166 11B1;D5EE;1112 1166 11B1;
+D5EF;D5EF;1112 1166 11B2;D5EF;1112 1166 11B2;
+D5F0;D5F0;1112 1166 11B3;D5F0;1112 1166 11B3;
+D5F1;D5F1;1112 1166 11B4;D5F1;1112 1166 11B4;
+D5F2;D5F2;1112 1166 11B5;D5F2;1112 1166 11B5;
+D5F3;D5F3;1112 1166 11B6;D5F3;1112 1166 11B6;
+D5F4;D5F4;1112 1166 11B7;D5F4;1112 1166 11B7;
+D5F5;D5F5;1112 1166 11B8;D5F5;1112 1166 11B8;
+D5F6;D5F6;1112 1166 11B9;D5F6;1112 1166 11B9;
+D5F7;D5F7;1112 1166 11BA;D5F7;1112 1166 11BA;
+D5F8;D5F8;1112 1166 11BB;D5F8;1112 1166 11BB;
+D5F9;D5F9;1112 1166 11BC;D5F9;1112 1166 11BC;
+D5FA;D5FA;1112 1166 11BD;D5FA;1112 1166 11BD;
+D5FB;D5FB;1112 1166 11BE;D5FB;1112 1166 11BE;
+D5FC;D5FC;1112 1166 11BF;D5FC;1112 1166 11BF;
+D5FD;D5FD;1112 1166 11C0;D5FD;1112 1166 11C0;
+D5FE;D5FE;1112 1166 11C1;D5FE;1112 1166 11C1;
+D5FF;D5FF;1112 1166 11C2;D5FF;1112 1166 11C2;
+D600;D600;1112 1167;D600;1112 1167;
+D601;D601;1112 1167 11A8;D601;1112 1167 11A8;
+D602;D602;1112 1167 11A9;D602;1112 1167 11A9;
+D603;D603;1112 1167 11AA;D603;1112 1167 11AA;
+D604;D604;1112 1167 11AB;D604;1112 1167 11AB;
+D605;D605;1112 1167 11AC;D605;1112 1167 11AC;
+D606;D606;1112 1167 11AD;D606;1112 1167 11AD;
+D607;D607;1112 1167 11AE;D607;1112 1167 11AE;
+D608;D608;1112 1167 11AF;D608;1112 1167 11AF;
+D609;D609;1112 1167 11B0;D609;1112 1167 11B0;
+D60A;D60A;1112 1167 11B1;D60A;1112 1167 11B1;
+D60B;D60B;1112 1167 11B2;D60B;1112 1167 11B2;
+D60C;D60C;1112 1167 11B3;D60C;1112 1167 11B3;
+D60D;D60D;1112 1167 11B4;D60D;1112 1167 11B4;
+D60E;D60E;1112 1167 11B5;D60E;1112 1167 11B5;
+D60F;D60F;1112 1167 11B6;D60F;1112 1167 11B6;
+D610;D610;1112 1167 11B7;D610;1112 1167 11B7;
+D611;D611;1112 1167 11B8;D611;1112 1167 11B8;
+D612;D612;1112 1167 11B9;D612;1112 1167 11B9;
+D613;D613;1112 1167 11BA;D613;1112 1167 11BA;
+D614;D614;1112 1167 11BB;D614;1112 1167 11BB;
+D615;D615;1112 1167 11BC;D615;1112 1167 11BC;
+D616;D616;1112 1167 11BD;D616;1112 1167 11BD;
+D617;D617;1112 1167 11BE;D617;1112 1167 11BE;
+D618;D618;1112 1167 11BF;D618;1112 1167 11BF;
+D619;D619;1112 1167 11C0;D619;1112 1167 11C0;
+D61A;D61A;1112 1167 11C1;D61A;1112 1167 11C1;
+D61B;D61B;1112 1167 11C2;D61B;1112 1167 11C2;
+D61C;D61C;1112 1168;D61C;1112 1168;
+D61D;D61D;1112 1168 11A8;D61D;1112 1168 11A8;
+D61E;D61E;1112 1168 11A9;D61E;1112 1168 11A9;
+D61F;D61F;1112 1168 11AA;D61F;1112 1168 11AA;
+D620;D620;1112 1168 11AB;D620;1112 1168 11AB;
+D621;D621;1112 1168 11AC;D621;1112 1168 11AC;
+D622;D622;1112 1168 11AD;D622;1112 1168 11AD;
+D623;D623;1112 1168 11AE;D623;1112 1168 11AE;
+D624;D624;1112 1168 11AF;D624;1112 1168 11AF;
+D625;D625;1112 1168 11B0;D625;1112 1168 11B0;
+D626;D626;1112 1168 11B1;D626;1112 1168 11B1;
+D627;D627;1112 1168 11B2;D627;1112 1168 11B2;
+D628;D628;1112 1168 11B3;D628;1112 1168 11B3;
+D629;D629;1112 1168 11B4;D629;1112 1168 11B4;
+D62A;D62A;1112 1168 11B5;D62A;1112 1168 11B5;
+D62B;D62B;1112 1168 11B6;D62B;1112 1168 11B6;
+D62C;D62C;1112 1168 11B7;D62C;1112 1168 11B7;
+D62D;D62D;1112 1168 11B8;D62D;1112 1168 11B8;
+D62E;D62E;1112 1168 11B9;D62E;1112 1168 11B9;
+D62F;D62F;1112 1168 11BA;D62F;1112 1168 11BA;
+D630;D630;1112 1168 11BB;D630;1112 1168 11BB;
+D631;D631;1112 1168 11BC;D631;1112 1168 11BC;
+D632;D632;1112 1168 11BD;D632;1112 1168 11BD;
+D633;D633;1112 1168 11BE;D633;1112 1168 11BE;
+D634;D634;1112 1168 11BF;D634;1112 1168 11BF;
+D635;D635;1112 1168 11C0;D635;1112 1168 11C0;
+D636;D636;1112 1168 11C1;D636;1112 1168 11C1;
+D637;D637;1112 1168 11C2;D637;1112 1168 11C2;
+D638;D638;1112 1169;D638;1112 1169;
+D639;D639;1112 1169 11A8;D639;1112 1169 11A8;
+D63A;D63A;1112 1169 11A9;D63A;1112 1169 11A9;
+D63B;D63B;1112 1169 11AA;D63B;1112 1169 11AA;
+D63C;D63C;1112 1169 11AB;D63C;1112 1169 11AB;
+D63D;D63D;1112 1169 11AC;D63D;1112 1169 11AC;
+D63E;D63E;1112 1169 11AD;D63E;1112 1169 11AD;
+D63F;D63F;1112 1169 11AE;D63F;1112 1169 11AE;
+D640;D640;1112 1169 11AF;D640;1112 1169 11AF;
+D641;D641;1112 1169 11B0;D641;1112 1169 11B0;
+D642;D642;1112 1169 11B1;D642;1112 1169 11B1;
+D643;D643;1112 1169 11B2;D643;1112 1169 11B2;
+D644;D644;1112 1169 11B3;D644;1112 1169 11B3;
+D645;D645;1112 1169 11B4;D645;1112 1169 11B4;
+D646;D646;1112 1169 11B5;D646;1112 1169 11B5;
+D647;D647;1112 1169 11B6;D647;1112 1169 11B6;
+D648;D648;1112 1169 11B7;D648;1112 1169 11B7;
+D649;D649;1112 1169 11B8;D649;1112 1169 11B8;
+D64A;D64A;1112 1169 11B9;D64A;1112 1169 11B9;
+D64B;D64B;1112 1169 11BA;D64B;1112 1169 11BA;
+D64C;D64C;1112 1169 11BB;D64C;1112 1169 11BB;
+D64D;D64D;1112 1169 11BC;D64D;1112 1169 11BC;
+D64E;D64E;1112 1169 11BD;D64E;1112 1169 11BD;
+D64F;D64F;1112 1169 11BE;D64F;1112 1169 11BE;
+D650;D650;1112 1169 11BF;D650;1112 1169 11BF;
+D651;D651;1112 1169 11C0;D651;1112 1169 11C0;
+D652;D652;1112 1169 11C1;D652;1112 1169 11C1;
+D653;D653;1112 1169 11C2;D653;1112 1169 11C2;
+D654;D654;1112 116A;D654;1112 116A;
+D655;D655;1112 116A 11A8;D655;1112 116A 11A8;
+D656;D656;1112 116A 11A9;D656;1112 116A 11A9;
+D657;D657;1112 116A 11AA;D657;1112 116A 11AA;
+D658;D658;1112 116A 11AB;D658;1112 116A 11AB;
+D659;D659;1112 116A 11AC;D659;1112 116A 11AC;
+D65A;D65A;1112 116A 11AD;D65A;1112 116A 11AD;
+D65B;D65B;1112 116A 11AE;D65B;1112 116A 11AE;
+D65C;D65C;1112 116A 11AF;D65C;1112 116A 11AF;
+D65D;D65D;1112 116A 11B0;D65D;1112 116A 11B0;
+D65E;D65E;1112 116A 11B1;D65E;1112 116A 11B1;
+D65F;D65F;1112 116A 11B2;D65F;1112 116A 11B2;
+D660;D660;1112 116A 11B3;D660;1112 116A 11B3;
+D661;D661;1112 116A 11B4;D661;1112 116A 11B4;
+D662;D662;1112 116A 11B5;D662;1112 116A 11B5;
+D663;D663;1112 116A 11B6;D663;1112 116A 11B6;
+D664;D664;1112 116A 11B7;D664;1112 116A 11B7;
+D665;D665;1112 116A 11B8;D665;1112 116A 11B8;
+D666;D666;1112 116A 11B9;D666;1112 116A 11B9;
+D667;D667;1112 116A 11BA;D667;1112 116A 11BA;
+D668;D668;1112 116A 11BB;D668;1112 116A 11BB;
+D669;D669;1112 116A 11BC;D669;1112 116A 11BC;
+D66A;D66A;1112 116A 11BD;D66A;1112 116A 11BD;
+D66B;D66B;1112 116A 11BE;D66B;1112 116A 11BE;
+D66C;D66C;1112 116A 11BF;D66C;1112 116A 11BF;
+D66D;D66D;1112 116A 11C0;D66D;1112 116A 11C0;
+D66E;D66E;1112 116A 11C1;D66E;1112 116A 11C1;
+D66F;D66F;1112 116A 11C2;D66F;1112 116A 11C2;
+D670;D670;1112 116B;D670;1112 116B;
+D671;D671;1112 116B 11A8;D671;1112 116B 11A8;
+D672;D672;1112 116B 11A9;D672;1112 116B 11A9;
+D673;D673;1112 116B 11AA;D673;1112 116B 11AA;
+D674;D674;1112 116B 11AB;D674;1112 116B 11AB;
+D675;D675;1112 116B 11AC;D675;1112 116B 11AC;
+D676;D676;1112 116B 11AD;D676;1112 116B 11AD;
+D677;D677;1112 116B 11AE;D677;1112 116B 11AE;
+D678;D678;1112 116B 11AF;D678;1112 116B 11AF;
+D679;D679;1112 116B 11B0;D679;1112 116B 11B0;
+D67A;D67A;1112 116B 11B1;D67A;1112 116B 11B1;
+D67B;D67B;1112 116B 11B2;D67B;1112 116B 11B2;
+D67C;D67C;1112 116B 11B3;D67C;1112 116B 11B3;
+D67D;D67D;1112 116B 11B4;D67D;1112 116B 11B4;
+D67E;D67E;1112 116B 11B5;D67E;1112 116B 11B5;
+D67F;D67F;1112 116B 11B6;D67F;1112 116B 11B6;
+D680;D680;1112 116B 11B7;D680;1112 116B 11B7;
+D681;D681;1112 116B 11B8;D681;1112 116B 11B8;
+D682;D682;1112 116B 11B9;D682;1112 116B 11B9;
+D683;D683;1112 116B 11BA;D683;1112 116B 11BA;
+D684;D684;1112 116B 11BB;D684;1112 116B 11BB;
+D685;D685;1112 116B 11BC;D685;1112 116B 11BC;
+D686;D686;1112 116B 11BD;D686;1112 116B 11BD;
+D687;D687;1112 116B 11BE;D687;1112 116B 11BE;
+D688;D688;1112 116B 11BF;D688;1112 116B 11BF;
+D689;D689;1112 116B 11C0;D689;1112 116B 11C0;
+D68A;D68A;1112 116B 11C1;D68A;1112 116B 11C1;
+D68B;D68B;1112 116B 11C2;D68B;1112 116B 11C2;
+D68C;D68C;1112 116C;D68C;1112 116C;
+D68D;D68D;1112 116C 11A8;D68D;1112 116C 11A8;
+D68E;D68E;1112 116C 11A9;D68E;1112 116C 11A9;
+D68F;D68F;1112 116C 11AA;D68F;1112 116C 11AA;
+D690;D690;1112 116C 11AB;D690;1112 116C 11AB;
+D691;D691;1112 116C 11AC;D691;1112 116C 11AC;
+D692;D692;1112 116C 11AD;D692;1112 116C 11AD;
+D693;D693;1112 116C 11AE;D693;1112 116C 11AE;
+D694;D694;1112 116C 11AF;D694;1112 116C 11AF;
+D695;D695;1112 116C 11B0;D695;1112 116C 11B0;
+D696;D696;1112 116C 11B1;D696;1112 116C 11B1;
+D697;D697;1112 116C 11B2;D697;1112 116C 11B2;
+D698;D698;1112 116C 11B3;D698;1112 116C 11B3;
+D699;D699;1112 116C 11B4;D699;1112 116C 11B4;
+D69A;D69A;1112 116C 11B5;D69A;1112 116C 11B5;
+D69B;D69B;1112 116C 11B6;D69B;1112 116C 11B6;
+D69C;D69C;1112 116C 11B7;D69C;1112 116C 11B7;
+D69D;D69D;1112 116C 11B8;D69D;1112 116C 11B8;
+D69E;D69E;1112 116C 11B9;D69E;1112 116C 11B9;
+D69F;D69F;1112 116C 11BA;D69F;1112 116C 11BA;
+D6A0;D6A0;1112 116C 11BB;D6A0;1112 116C 11BB;
+D6A1;D6A1;1112 116C 11BC;D6A1;1112 116C 11BC;
+D6A2;D6A2;1112 116C 11BD;D6A2;1112 116C 11BD;
+D6A3;D6A3;1112 116C 11BE;D6A3;1112 116C 11BE;
+D6A4;D6A4;1112 116C 11BF;D6A4;1112 116C 11BF;
+D6A5;D6A5;1112 116C 11C0;D6A5;1112 116C 11C0;
+D6A6;D6A6;1112 116C 11C1;D6A6;1112 116C 11C1;
+D6A7;D6A7;1112 116C 11C2;D6A7;1112 116C 11C2;
+D6A8;D6A8;1112 116D;D6A8;1112 116D;
+D6A9;D6A9;1112 116D 11A8;D6A9;1112 116D 11A8;
+D6AA;D6AA;1112 116D 11A9;D6AA;1112 116D 11A9;
+D6AB;D6AB;1112 116D 11AA;D6AB;1112 116D 11AA;
+D6AC;D6AC;1112 116D 11AB;D6AC;1112 116D 11AB;
+D6AD;D6AD;1112 116D 11AC;D6AD;1112 116D 11AC;
+D6AE;D6AE;1112 116D 11AD;D6AE;1112 116D 11AD;
+D6AF;D6AF;1112 116D 11AE;D6AF;1112 116D 11AE;
+D6B0;D6B0;1112 116D 11AF;D6B0;1112 116D 11AF;
+D6B1;D6B1;1112 116D 11B0;D6B1;1112 116D 11B0;
+D6B2;D6B2;1112 116D 11B1;D6B2;1112 116D 11B1;
+D6B3;D6B3;1112 116D 11B2;D6B3;1112 116D 11B2;
+D6B4;D6B4;1112 116D 11B3;D6B4;1112 116D 11B3;
+D6B5;D6B5;1112 116D 11B4;D6B5;1112 116D 11B4;
+D6B6;D6B6;1112 116D 11B5;D6B6;1112 116D 11B5;
+D6B7;D6B7;1112 116D 11B6;D6B7;1112 116D 11B6;
+D6B8;D6B8;1112 116D 11B7;D6B8;1112 116D 11B7;
+D6B9;D6B9;1112 116D 11B8;D6B9;1112 116D 11B8;
+D6BA;D6BA;1112 116D 11B9;D6BA;1112 116D 11B9;
+D6BB;D6BB;1112 116D 11BA;D6BB;1112 116D 11BA;
+D6BC;D6BC;1112 116D 11BB;D6BC;1112 116D 11BB;
+D6BD;D6BD;1112 116D 11BC;D6BD;1112 116D 11BC;
+D6BE;D6BE;1112 116D 11BD;D6BE;1112 116D 11BD;
+D6BF;D6BF;1112 116D 11BE;D6BF;1112 116D 11BE;
+D6C0;D6C0;1112 116D 11BF;D6C0;1112 116D 11BF;
+D6C1;D6C1;1112 116D 11C0;D6C1;1112 116D 11C0;
+D6C2;D6C2;1112 116D 11C1;D6C2;1112 116D 11C1;
+D6C3;D6C3;1112 116D 11C2;D6C3;1112 116D 11C2;
+D6C4;D6C4;1112 116E;D6C4;1112 116E;
+D6C5;D6C5;1112 116E 11A8;D6C5;1112 116E 11A8;
+D6C6;D6C6;1112 116E 11A9;D6C6;1112 116E 11A9;
+D6C7;D6C7;1112 116E 11AA;D6C7;1112 116E 11AA;
+D6C8;D6C8;1112 116E 11AB;D6C8;1112 116E 11AB;
+D6C9;D6C9;1112 116E 11AC;D6C9;1112 116E 11AC;
+D6CA;D6CA;1112 116E 11AD;D6CA;1112 116E 11AD;
+D6CB;D6CB;1112 116E 11AE;D6CB;1112 116E 11AE;
+D6CC;D6CC;1112 116E 11AF;D6CC;1112 116E 11AF;
+D6CD;D6CD;1112 116E 11B0;D6CD;1112 116E 11B0;
+D6CE;D6CE;1112 116E 11B1;D6CE;1112 116E 11B1;
+D6CF;D6CF;1112 116E 11B2;D6CF;1112 116E 11B2;
+D6D0;D6D0;1112 116E 11B3;D6D0;1112 116E 11B3;
+D6D1;D6D1;1112 116E 11B4;D6D1;1112 116E 11B4;
+D6D2;D6D2;1112 116E 11B5;D6D2;1112 116E 11B5;
+D6D3;D6D3;1112 116E 11B6;D6D3;1112 116E 11B6;
+D6D4;D6D4;1112 116E 11B7;D6D4;1112 116E 11B7;
+D6D5;D6D5;1112 116E 11B8;D6D5;1112 116E 11B8;
+D6D6;D6D6;1112 116E 11B9;D6D6;1112 116E 11B9;
+D6D7;D6D7;1112 116E 11BA;D6D7;1112 116E 11BA;
+D6D8;D6D8;1112 116E 11BB;D6D8;1112 116E 11BB;
+D6D9;D6D9;1112 116E 11BC;D6D9;1112 116E 11BC;
+D6DA;D6DA;1112 116E 11BD;D6DA;1112 116E 11BD;
+D6DB;D6DB;1112 116E 11BE;D6DB;1112 116E 11BE;
+D6DC;D6DC;1112 116E 11BF;D6DC;1112 116E 11BF;
+D6DD;D6DD;1112 116E 11C0;D6DD;1112 116E 11C0;
+D6DE;D6DE;1112 116E 11C1;D6DE;1112 116E 11C1;
+D6DF;D6DF;1112 116E 11C2;D6DF;1112 116E 11C2;
+D6E0;D6E0;1112 116F;D6E0;1112 116F;
+D6E1;D6E1;1112 116F 11A8;D6E1;1112 116F 11A8;
+D6E2;D6E2;1112 116F 11A9;D6E2;1112 116F 11A9;
+D6E3;D6E3;1112 116F 11AA;D6E3;1112 116F 11AA;
+D6E4;D6E4;1112 116F 11AB;D6E4;1112 116F 11AB;
+D6E5;D6E5;1112 116F 11AC;D6E5;1112 116F 11AC;
+D6E6;D6E6;1112 116F 11AD;D6E6;1112 116F 11AD;
+D6E7;D6E7;1112 116F 11AE;D6E7;1112 116F 11AE;
+D6E8;D6E8;1112 116F 11AF;D6E8;1112 116F 11AF;
+D6E9;D6E9;1112 116F 11B0;D6E9;1112 116F 11B0;
+D6EA;D6EA;1112 116F 11B1;D6EA;1112 116F 11B1;
+D6EB;D6EB;1112 116F 11B2;D6EB;1112 116F 11B2;
+D6EC;D6EC;1112 116F 11B3;D6EC;1112 116F 11B3;
+D6ED;D6ED;1112 116F 11B4;D6ED;1112 116F 11B4;
+D6EE;D6EE;1112 116F 11B5;D6EE;1112 116F 11B5;
+D6EF;D6EF;1112 116F 11B6;D6EF;1112 116F 11B6;
+D6F0;D6F0;1112 116F 11B7;D6F0;1112 116F 11B7;
+D6F1;D6F1;1112 116F 11B8;D6F1;1112 116F 11B8;
+D6F2;D6F2;1112 116F 11B9;D6F2;1112 116F 11B9;
+D6F3;D6F3;1112 116F 11BA;D6F3;1112 116F 11BA;
+D6F4;D6F4;1112 116F 11BB;D6F4;1112 116F 11BB;
+D6F5;D6F5;1112 116F 11BC;D6F5;1112 116F 11BC;
+D6F6;D6F6;1112 116F 11BD;D6F6;1112 116F 11BD;
+D6F7;D6F7;1112 116F 11BE;D6F7;1112 116F 11BE;
+D6F8;D6F8;1112 116F 11BF;D6F8;1112 116F 11BF;
+D6F9;D6F9;1112 116F 11C0;D6F9;1112 116F 11C0;
+D6FA;D6FA;1112 116F 11C1;D6FA;1112 116F 11C1;
+D6FB;D6FB;1112 116F 11C2;D6FB;1112 116F 11C2;
+D6FC;D6FC;1112 1170;D6FC;1112 1170;
+D6FD;D6FD;1112 1170 11A8;D6FD;1112 1170 11A8;
+D6FE;D6FE;1112 1170 11A9;D6FE;1112 1170 11A9;
+D6FF;D6FF;1112 1170 11AA;D6FF;1112 1170 11AA;
+D700;D700;1112 1170 11AB;D700;1112 1170 11AB;
+D701;D701;1112 1170 11AC;D701;1112 1170 11AC;
+D702;D702;1112 1170 11AD;D702;1112 1170 11AD;
+D703;D703;1112 1170 11AE;D703;1112 1170 11AE;
+D704;D704;1112 1170 11AF;D704;1112 1170 11AF;
+D705;D705;1112 1170 11B0;D705;1112 1170 11B0;
+D706;D706;1112 1170 11B1;D706;1112 1170 11B1;
+D707;D707;1112 1170 11B2;D707;1112 1170 11B2;
+D708;D708;1112 1170 11B3;D708;1112 1170 11B3;
+D709;D709;1112 1170 11B4;D709;1112 1170 11B4;
+D70A;D70A;1112 1170 11B5;D70A;1112 1170 11B5;
+D70B;D70B;1112 1170 11B6;D70B;1112 1170 11B6;
+D70C;D70C;1112 1170 11B7;D70C;1112 1170 11B7;
+D70D;D70D;1112 1170 11B8;D70D;1112 1170 11B8;
+D70E;D70E;1112 1170 11B9;D70E;1112 1170 11B9;
+D70F;D70F;1112 1170 11BA;D70F;1112 1170 11BA;
+D710;D710;1112 1170 11BB;D710;1112 1170 11BB;
+D711;D711;1112 1170 11BC;D711;1112 1170 11BC;
+D712;D712;1112 1170 11BD;D712;1112 1170 11BD;
+D713;D713;1112 1170 11BE;D713;1112 1170 11BE;
+D714;D714;1112 1170 11BF;D714;1112 1170 11BF;
+D715;D715;1112 1170 11C0;D715;1112 1170 11C0;
+D716;D716;1112 1170 11C1;D716;1112 1170 11C1;
+D717;D717;1112 1170 11C2;D717;1112 1170 11C2;
+D718;D718;1112 1171;D718;1112 1171;
+D719;D719;1112 1171 11A8;D719;1112 1171 11A8;
+D71A;D71A;1112 1171 11A9;D71A;1112 1171 11A9;
+D71B;D71B;1112 1171 11AA;D71B;1112 1171 11AA;
+D71C;D71C;1112 1171 11AB;D71C;1112 1171 11AB;
+D71D;D71D;1112 1171 11AC;D71D;1112 1171 11AC;
+D71E;D71E;1112 1171 11AD;D71E;1112 1171 11AD;
+D71F;D71F;1112 1171 11AE;D71F;1112 1171 11AE;
+D720;D720;1112 1171 11AF;D720;1112 1171 11AF;
+D721;D721;1112 1171 11B0;D721;1112 1171 11B0;
+D722;D722;1112 1171 11B1;D722;1112 1171 11B1;
+D723;D723;1112 1171 11B2;D723;1112 1171 11B2;
+D724;D724;1112 1171 11B3;D724;1112 1171 11B3;
+D725;D725;1112 1171 11B4;D725;1112 1171 11B4;
+D726;D726;1112 1171 11B5;D726;1112 1171 11B5;
+D727;D727;1112 1171 11B6;D727;1112 1171 11B6;
+D728;D728;1112 1171 11B7;D728;1112 1171 11B7;
+D729;D729;1112 1171 11B8;D729;1112 1171 11B8;
+D72A;D72A;1112 1171 11B9;D72A;1112 1171 11B9;
+D72B;D72B;1112 1171 11BA;D72B;1112 1171 11BA;
+D72C;D72C;1112 1171 11BB;D72C;1112 1171 11BB;
+D72D;D72D;1112 1171 11BC;D72D;1112 1171 11BC;
+D72E;D72E;1112 1171 11BD;D72E;1112 1171 11BD;
+D72F;D72F;1112 1171 11BE;D72F;1112 1171 11BE;
+D730;D730;1112 1171 11BF;D730;1112 1171 11BF;
+D731;D731;1112 1171 11C0;D731;1112 1171 11C0;
+D732;D732;1112 1171 11C1;D732;1112 1171 11C1;
+D733;D733;1112 1171 11C2;D733;1112 1171 11C2;
+D734;D734;1112 1172;D734;1112 1172;
+D735;D735;1112 1172 11A8;D735;1112 1172 11A8;
+D736;D736;1112 1172 11A9;D736;1112 1172 11A9;
+D737;D737;1112 1172 11AA;D737;1112 1172 11AA;
+D738;D738;1112 1172 11AB;D738;1112 1172 11AB;
+D739;D739;1112 1172 11AC;D739;1112 1172 11AC;
+D73A;D73A;1112 1172 11AD;D73A;1112 1172 11AD;
+D73B;D73B;1112 1172 11AE;D73B;1112 1172 11AE;
+D73C;D73C;1112 1172 11AF;D73C;1112 1172 11AF;
+D73D;D73D;1112 1172 11B0;D73D;1112 1172 11B0;
+D73E;D73E;1112 1172 11B1;D73E;1112 1172 11B1;
+D73F;D73F;1112 1172 11B2;D73F;1112 1172 11B2;
+D740;D740;1112 1172 11B3;D740;1112 1172 11B3;
+D741;D741;1112 1172 11B4;D741;1112 1172 11B4;
+D742;D742;1112 1172 11B5;D742;1112 1172 11B5;
+D743;D743;1112 1172 11B6;D743;1112 1172 11B6;
+D744;D744;1112 1172 11B7;D744;1112 1172 11B7;
+D745;D745;1112 1172 11B8;D745;1112 1172 11B8;
+D746;D746;1112 1172 11B9;D746;1112 1172 11B9;
+D747;D747;1112 1172 11BA;D747;1112 1172 11BA;
+D748;D748;1112 1172 11BB;D748;1112 1172 11BB;
+D749;D749;1112 1172 11BC;D749;1112 1172 11BC;
+D74A;D74A;1112 1172 11BD;D74A;1112 1172 11BD;
+D74B;D74B;1112 1172 11BE;D74B;1112 1172 11BE;
+D74C;D74C;1112 1172 11BF;D74C;1112 1172 11BF;
+D74D;D74D;1112 1172 11C0;D74D;1112 1172 11C0;
+D74E;D74E;1112 1172 11C1;D74E;1112 1172 11C1;
+D74F;D74F;1112 1172 11C2;D74F;1112 1172 11C2;
+D750;D750;1112 1173;D750;1112 1173;
+D751;D751;1112 1173 11A8;D751;1112 1173 11A8;
+D752;D752;1112 1173 11A9;D752;1112 1173 11A9;
+D753;D753;1112 1173 11AA;D753;1112 1173 11AA;
+D754;D754;1112 1173 11AB;D754;1112 1173 11AB;
+D755;D755;1112 1173 11AC;D755;1112 1173 11AC;
+D756;D756;1112 1173 11AD;D756;1112 1173 11AD;
+D757;D757;1112 1173 11AE;D757;1112 1173 11AE;
+D758;D758;1112 1173 11AF;D758;1112 1173 11AF;
+D759;D759;1112 1173 11B0;D759;1112 1173 11B0;
+D75A;D75A;1112 1173 11B1;D75A;1112 1173 11B1;
+D75B;D75B;1112 1173 11B2;D75B;1112 1173 11B2;
+D75C;D75C;1112 1173 11B3;D75C;1112 1173 11B3;
+D75D;D75D;1112 1173 11B4;D75D;1112 1173 11B4;
+D75E;D75E;1112 1173 11B5;D75E;1112 1173 11B5;
+D75F;D75F;1112 1173 11B6;D75F;1112 1173 11B6;
+D760;D760;1112 1173 11B7;D760;1112 1173 11B7;
+D761;D761;1112 1173 11B8;D761;1112 1173 11B8;
+D762;D762;1112 1173 11B9;D762;1112 1173 11B9;
+D763;D763;1112 1173 11BA;D763;1112 1173 11BA;
+D764;D764;1112 1173 11BB;D764;1112 1173 11BB;
+D765;D765;1112 1173 11BC;D765;1112 1173 11BC;
+D766;D766;1112 1173 11BD;D766;1112 1173 11BD;
+D767;D767;1112 1173 11BE;D767;1112 1173 11BE;
+D768;D768;1112 1173 11BF;D768;1112 1173 11BF;
+D769;D769;1112 1173 11C0;D769;1112 1173 11C0;
+D76A;D76A;1112 1173 11C1;D76A;1112 1173 11C1;
+D76B;D76B;1112 1173 11C2;D76B;1112 1173 11C2;
+D76C;D76C;1112 1174;D76C;1112 1174;
+D76D;D76D;1112 1174 11A8;D76D;1112 1174 11A8;
+D76E;D76E;1112 1174 11A9;D76E;1112 1174 11A9;
+D76F;D76F;1112 1174 11AA;D76F;1112 1174 11AA;
+D770;D770;1112 1174 11AB;D770;1112 1174 11AB;
+D771;D771;1112 1174 11AC;D771;1112 1174 11AC;
+D772;D772;1112 1174 11AD;D772;1112 1174 11AD;
+D773;D773;1112 1174 11AE;D773;1112 1174 11AE;
+D774;D774;1112 1174 11AF;D774;1112 1174 11AF;
+D775;D775;1112 1174 11B0;D775;1112 1174 11B0;
+D776;D776;1112 1174 11B1;D776;1112 1174 11B1;
+D777;D777;1112 1174 11B2;D777;1112 1174 11B2;
+D778;D778;1112 1174 11B3;D778;1112 1174 11B3;
+D779;D779;1112 1174 11B4;D779;1112 1174 11B4;
+D77A;D77A;1112 1174 11B5;D77A;1112 1174 11B5;
+D77B;D77B;1112 1174 11B6;D77B;1112 1174 11B6;
+D77C;D77C;1112 1174 11B7;D77C;1112 1174 11B7;
+D77D;D77D;1112 1174 11B8;D77D;1112 1174 11B8;
+D77E;D77E;1112 1174 11B9;D77E;1112 1174 11B9;
+D77F;D77F;1112 1174 11BA;D77F;1112 1174 11BA;
+D780;D780;1112 1174 11BB;D780;1112 1174 11BB;
+D781;D781;1112 1174 11BC;D781;1112 1174 11BC;
+D782;D782;1112 1174 11BD;D782;1112 1174 11BD;
+D783;D783;1112 1174 11BE;D783;1112 1174 11BE;
+D784;D784;1112 1174 11BF;D784;1112 1174 11BF;
+D785;D785;1112 1174 11C0;D785;1112 1174 11C0;
+D786;D786;1112 1174 11C1;D786;1112 1174 11C1;
+D787;D787;1112 1174 11C2;D787;1112 1174 11C2;
+D788;D788;1112 1175;D788;1112 1175;
+D789;D789;1112 1175 11A8;D789;1112 1175 11A8;
+D78A;D78A;1112 1175 11A9;D78A;1112 1175 11A9;
+D78B;D78B;1112 1175 11AA;D78B;1112 1175 11AA;
+D78C;D78C;1112 1175 11AB;D78C;1112 1175 11AB;
+D78D;D78D;1112 1175 11AC;D78D;1112 1175 11AC;
+D78E;D78E;1112 1175 11AD;D78E;1112 1175 11AD;
+D78F;D78F;1112 1175 11AE;D78F;1112 1175 11AE;
+D790;D790;1112 1175 11AF;D790;1112 1175 11AF;
+D791;D791;1112 1175 11B0;D791;1112 1175 11B0;
+D792;D792;1112 1175 11B1;D792;1112 1175 11B1;
+D793;D793;1112 1175 11B2;D793;1112 1175 11B2;
+D794;D794;1112 1175 11B3;D794;1112 1175 11B3;
+D795;D795;1112 1175 11B4;D795;1112 1175 11B4;
+D796;D796;1112 1175 11B5;D796;1112 1175 11B5;
+D797;D797;1112 1175 11B6;D797;1112 1175 11B6;
+D798;D798;1112 1175 11B7;D798;1112 1175 11B7;
+D799;D799;1112 1175 11B8;D799;1112 1175 11B8;
+D79A;D79A;1112 1175 11B9;D79A;1112 1175 11B9;
+D79B;D79B;1112 1175 11BA;D79B;1112 1175 11BA;
+D79C;D79C;1112 1175 11BB;D79C;1112 1175 11BB;
+D79D;D79D;1112 1175 11BC;D79D;1112 1175 11BC;
+D79E;D79E;1112 1175 11BD;D79E;1112 1175 11BD;
+D79F;D79F;1112 1175 11BE;D79F;1112 1175 11BE;
+D7A0;D7A0;1112 1175 11BF;D7A0;1112 1175 11BF;
+D7A1;D7A1;1112 1175 11C0;D7A1;1112 1175 11C0;
+D7A2;D7A2;1112 1175 11C1;D7A2;1112 1175 11C1;
+D7A3;D7A3;1112 1175 11C2;D7A3;1112 1175 11C2;
+F900;8C48;8C48;8C48;8C48;
+F901;66F4;66F4;66F4;66F4;
+F902;8ECA;8ECA;8ECA;8ECA;
+F903;8CC8;8CC8;8CC8;8CC8;
+F904;6ED1;6ED1;6ED1;6ED1;
+F905;4E32;4E32;4E32;4E32;
+F906;53E5;53E5;53E5;53E5;
+F907;9F9C;9F9C;9F9C;9F9C;
+F908;9F9C;9F9C;9F9C;9F9C;
+F909;5951;5951;5951;5951;
+F90A;91D1;91D1;91D1;91D1;
+F90B;5587;5587;5587;5587;
+F90C;5948;5948;5948;5948;
+F90D;61F6;61F6;61F6;61F6;
+F90E;7669;7669;7669;7669;
+F90F;7F85;7F85;7F85;7F85;
+F910;863F;863F;863F;863F;
+F911;87BA;87BA;87BA;87BA;
+F912;88F8;88F8;88F8;88F8;
+F913;908F;908F;908F;908F;
+F914;6A02;6A02;6A02;6A02;
+F915;6D1B;6D1B;6D1B;6D1B;
+F916;70D9;70D9;70D9;70D9;
+F917;73DE;73DE;73DE;73DE;
+F918;843D;843D;843D;843D;
+F919;916A;916A;916A;916A;
+F91A;99F1;99F1;99F1;99F1;
+F91B;4E82;4E82;4E82;4E82;
+F91C;5375;5375;5375;5375;
+F91D;6B04;6B04;6B04;6B04;
+F91E;721B;721B;721B;721B;
+F91F;862D;862D;862D;862D;
+F920;9E1E;9E1E;9E1E;9E1E;
+F921;5D50;5D50;5D50;5D50;
+F922;6FEB;6FEB;6FEB;6FEB;
+F923;85CD;85CD;85CD;85CD;
+F924;8964;8964;8964;8964;
+F925;62C9;62C9;62C9;62C9;
+F926;81D8;81D8;81D8;81D8;
+F927;881F;881F;881F;881F;
+F928;5ECA;5ECA;5ECA;5ECA;
+F929;6717;6717;6717;6717;
+F92A;6D6A;6D6A;6D6A;6D6A;
+F92B;72FC;72FC;72FC;72FC;
+F92C;90CE;90CE;90CE;90CE;
+F92D;4F86;4F86;4F86;4F86;
+F92E;51B7;51B7;51B7;51B7;
+F92F;52DE;52DE;52DE;52DE;
+F930;64C4;64C4;64C4;64C4;
+F931;6AD3;6AD3;6AD3;6AD3;
+F932;7210;7210;7210;7210;
+F933;76E7;76E7;76E7;76E7;
+F934;8001;8001;8001;8001;
+F935;8606;8606;8606;8606;
+F936;865C;865C;865C;865C;
+F937;8DEF;8DEF;8DEF;8DEF;
+F938;9732;9732;9732;9732;
+F939;9B6F;9B6F;9B6F;9B6F;
+F93A;9DFA;9DFA;9DFA;9DFA;
+F93B;788C;788C;788C;788C;
+F93C;797F;797F;797F;797F;
+F93D;7DA0;7DA0;7DA0;7DA0;
+F93E;83C9;83C9;83C9;83C9;
+F93F;9304;9304;9304;9304;
+F940;9E7F;9E7F;9E7F;9E7F;
+F941;8AD6;8AD6;8AD6;8AD6;
+F942;58DF;58DF;58DF;58DF;
+F943;5F04;5F04;5F04;5F04;
+F944;7C60;7C60;7C60;7C60;
+F945;807E;807E;807E;807E;
+F946;7262;7262;7262;7262;
+F947;78CA;78CA;78CA;78CA;
+F948;8CC2;8CC2;8CC2;8CC2;
+F949;96F7;96F7;96F7;96F7;
+F94A;58D8;58D8;58D8;58D8;
+F94B;5C62;5C62;5C62;5C62;
+F94C;6A13;6A13;6A13;6A13;
+F94D;6DDA;6DDA;6DDA;6DDA;
+F94E;6F0F;6F0F;6F0F;6F0F;
+F94F;7D2F;7D2F;7D2F;7D2F;
+F950;7E37;7E37;7E37;7E37;
+F951;964B;964B;964B;964B;
+F952;52D2;52D2;52D2;52D2;
+F953;808B;808B;808B;808B;
+F954;51DC;51DC;51DC;51DC;
+F955;51CC;51CC;51CC;51CC;
+F956;7A1C;7A1C;7A1C;7A1C;
+F957;7DBE;7DBE;7DBE;7DBE;
+F958;83F1;83F1;83F1;83F1;
+F959;9675;9675;9675;9675;
+F95A;8B80;8B80;8B80;8B80;
+F95B;62CF;62CF;62CF;62CF;
+F95C;6A02;6A02;6A02;6A02;
+F95D;8AFE;8AFE;8AFE;8AFE;
+F95E;4E39;4E39;4E39;4E39;
+F95F;5BE7;5BE7;5BE7;5BE7;
+F960;6012;6012;6012;6012;
+F961;7387;7387;7387;7387;
+F962;7570;7570;7570;7570;
+F963;5317;5317;5317;5317;
+F964;78FB;78FB;78FB;78FB;
+F965;4FBF;4FBF;4FBF;4FBF;
+F966;5FA9;5FA9;5FA9;5FA9;
+F967;4E0D;4E0D;4E0D;4E0D;
+F968;6CCC;6CCC;6CCC;6CCC;
+F969;6578;6578;6578;6578;
+F96A;7D22;7D22;7D22;7D22;
+F96B;53C3;53C3;53C3;53C3;
+F96C;585E;585E;585E;585E;
+F96D;7701;7701;7701;7701;
+F96E;8449;8449;8449;8449;
+F96F;8AAA;8AAA;8AAA;8AAA;
+F970;6BBA;6BBA;6BBA;6BBA;
+F971;8FB0;8FB0;8FB0;8FB0;
+F972;6C88;6C88;6C88;6C88;
+F973;62FE;62FE;62FE;62FE;
+F974;82E5;82E5;82E5;82E5;
+F975;63A0;63A0;63A0;63A0;
+F976;7565;7565;7565;7565;
+F977;4EAE;4EAE;4EAE;4EAE;
+F978;5169;5169;5169;5169;
+F979;51C9;51C9;51C9;51C9;
+F97A;6881;6881;6881;6881;
+F97B;7CE7;7CE7;7CE7;7CE7;
+F97C;826F;826F;826F;826F;
+F97D;8AD2;8AD2;8AD2;8AD2;
+F97E;91CF;91CF;91CF;91CF;
+F97F;52F5;52F5;52F5;52F5;
+F980;5442;5442;5442;5442;
+F981;5973;5973;5973;5973;
+F982;5EEC;5EEC;5EEC;5EEC;
+F983;65C5;65C5;65C5;65C5;
+F984;6FFE;6FFE;6FFE;6FFE;
+F985;792A;792A;792A;792A;
+F986;95AD;95AD;95AD;95AD;
+F987;9A6A;9A6A;9A6A;9A6A;
+F988;9E97;9E97;9E97;9E97;
+F989;9ECE;9ECE;9ECE;9ECE;
+F98A;529B;529B;529B;529B;
+F98B;66C6;66C6;66C6;66C6;
+F98C;6B77;6B77;6B77;6B77;
+F98D;8F62;8F62;8F62;8F62;
+F98E;5E74;5E74;5E74;5E74;
+F98F;6190;6190;6190;6190;
+F990;6200;6200;6200;6200;
+F991;649A;649A;649A;649A;
+F992;6F23;6F23;6F23;6F23;
+F993;7149;7149;7149;7149;
+F994;7489;7489;7489;7489;
+F995;79CA;79CA;79CA;79CA;
+F996;7DF4;7DF4;7DF4;7DF4;
+F997;806F;806F;806F;806F;
+F998;8F26;8F26;8F26;8F26;
+F999;84EE;84EE;84EE;84EE;
+F99A;9023;9023;9023;9023;
+F99B;934A;934A;934A;934A;
+F99C;5217;5217;5217;5217;
+F99D;52A3;52A3;52A3;52A3;
+F99E;54BD;54BD;54BD;54BD;
+F99F;70C8;70C8;70C8;70C8;
+F9A0;88C2;88C2;88C2;88C2;
+F9A1;8AAA;8AAA;8AAA;8AAA;
+F9A2;5EC9;5EC9;5EC9;5EC9;
+F9A3;5FF5;5FF5;5FF5;5FF5;
+F9A4;637B;637B;637B;637B;
+F9A5;6BAE;6BAE;6BAE;6BAE;
+F9A6;7C3E;7C3E;7C3E;7C3E;
+F9A7;7375;7375;7375;7375;
+F9A8;4EE4;4EE4;4EE4;4EE4;
+F9A9;56F9;56F9;56F9;56F9;
+F9AA;5BE7;5BE7;5BE7;5BE7;
+F9AB;5DBA;5DBA;5DBA;5DBA;
+F9AC;601C;601C;601C;601C;
+F9AD;73B2;73B2;73B2;73B2;
+F9AE;7469;7469;7469;7469;
+F9AF;7F9A;7F9A;7F9A;7F9A;
+F9B0;8046;8046;8046;8046;
+F9B1;9234;9234;9234;9234;
+F9B2;96F6;96F6;96F6;96F6;
+F9B3;9748;9748;9748;9748;
+F9B4;9818;9818;9818;9818;
+F9B5;4F8B;4F8B;4F8B;4F8B;
+F9B6;79AE;79AE;79AE;79AE;
+F9B7;91B4;91B4;91B4;91B4;
+F9B8;96B8;96B8;96B8;96B8;
+F9B9;60E1;60E1;60E1;60E1;
+F9BA;4E86;4E86;4E86;4E86;
+F9BB;50DA;50DA;50DA;50DA;
+F9BC;5BEE;5BEE;5BEE;5BEE;
+F9BD;5C3F;5C3F;5C3F;5C3F;
+F9BE;6599;6599;6599;6599;
+F9BF;6A02;6A02;6A02;6A02;
+F9C0;71CE;71CE;71CE;71CE;
+F9C1;7642;7642;7642;7642;
+F9C2;84FC;84FC;84FC;84FC;
+F9C3;907C;907C;907C;907C;
+F9C4;9F8D;9F8D;9F8D;9F8D;
+F9C5;6688;6688;6688;6688;
+F9C6;962E;962E;962E;962E;
+F9C7;5289;5289;5289;5289;
+F9C8;677B;677B;677B;677B;
+F9C9;67F3;67F3;67F3;67F3;
+F9CA;6D41;6D41;6D41;6D41;
+F9CB;6E9C;6E9C;6E9C;6E9C;
+F9CC;7409;7409;7409;7409;
+F9CD;7559;7559;7559;7559;
+F9CE;786B;786B;786B;786B;
+F9CF;7D10;7D10;7D10;7D10;
+F9D0;985E;985E;985E;985E;
+F9D1;516D;516D;516D;516D;
+F9D2;622E;622E;622E;622E;
+F9D3;9678;9678;9678;9678;
+F9D4;502B;502B;502B;502B;
+F9D5;5D19;5D19;5D19;5D19;
+F9D6;6DEA;6DEA;6DEA;6DEA;
+F9D7;8F2A;8F2A;8F2A;8F2A;
+F9D8;5F8B;5F8B;5F8B;5F8B;
+F9D9;6144;6144;6144;6144;
+F9DA;6817;6817;6817;6817;
+F9DB;7387;7387;7387;7387;
+F9DC;9686;9686;9686;9686;
+F9DD;5229;5229;5229;5229;
+F9DE;540F;540F;540F;540F;
+F9DF;5C65;5C65;5C65;5C65;
+F9E0;6613;6613;6613;6613;
+F9E1;674E;674E;674E;674E;
+F9E2;68A8;68A8;68A8;68A8;
+F9E3;6CE5;6CE5;6CE5;6CE5;
+F9E4;7406;7406;7406;7406;
+F9E5;75E2;75E2;75E2;75E2;
+F9E6;7F79;7F79;7F79;7F79;
+F9E7;88CF;88CF;88CF;88CF;
+F9E8;88E1;88E1;88E1;88E1;
+F9E9;91CC;91CC;91CC;91CC;
+F9EA;96E2;96E2;96E2;96E2;
+F9EB;533F;533F;533F;533F;
+F9EC;6EBA;6EBA;6EBA;6EBA;
+F9ED;541D;541D;541D;541D;
+F9EE;71D0;71D0;71D0;71D0;
+F9EF;7498;7498;7498;7498;
+F9F0;85FA;85FA;85FA;85FA;
+F9F1;96A3;96A3;96A3;96A3;
+F9F2;9C57;9C57;9C57;9C57;
+F9F3;9E9F;9E9F;9E9F;9E9F;
+F9F4;6797;6797;6797;6797;
+F9F5;6DCB;6DCB;6DCB;6DCB;
+F9F6;81E8;81E8;81E8;81E8;
+F9F7;7ACB;7ACB;7ACB;7ACB;
+F9F8;7B20;7B20;7B20;7B20;
+F9F9;7C92;7C92;7C92;7C92;
+F9FA;72C0;72C0;72C0;72C0;
+F9FB;7099;7099;7099;7099;
+F9FC;8B58;8B58;8B58;8B58;
+F9FD;4EC0;4EC0;4EC0;4EC0;
+F9FE;8336;8336;8336;8336;
+F9FF;523A;523A;523A;523A;
+FA00;5207;5207;5207;5207;
+FA01;5EA6;5EA6;5EA6;5EA6;
+FA02;62D3;62D3;62D3;62D3;
+FA03;7CD6;7CD6;7CD6;7CD6;
+FA04;5B85;5B85;5B85;5B85;
+FA05;6D1E;6D1E;6D1E;6D1E;
+FA06;66B4;66B4;66B4;66B4;
+FA07;8F3B;8F3B;8F3B;8F3B;
+FA08;884C;884C;884C;884C;
+FA09;964D;964D;964D;964D;
+FA0A;898B;898B;898B;898B;
+FA0B;5ED3;5ED3;5ED3;5ED3;
+FA0C;5140;5140;5140;5140;
+FA0D;55C0;55C0;55C0;55C0;
+FA10;585A;585A;585A;585A;
+FA12;6674;6674;6674;6674;
+FA15;51DE;51DE;51DE;51DE;
+FA16;732A;732A;732A;732A;
+FA17;76CA;76CA;76CA;76CA;
+FA18;793C;793C;793C;793C;
+FA19;795E;795E;795E;795E;
+FA1A;7965;7965;7965;7965;
+FA1B;798F;798F;798F;798F;
+FA1C;9756;9756;9756;9756;
+FA1D;7CBE;7CBE;7CBE;7CBE;
+FA1E;7FBD;7FBD;7FBD;7FBD;
+FA20;8612;8612;8612;8612;
+FA22;8AF8;8AF8;8AF8;8AF8;
+FA25;9038;9038;9038;9038;
+FA26;90FD;90FD;90FD;90FD;
+FA2A;98EF;98EF;98EF;98EF;
+FA2B;98FC;98FC;98FC;98FC;
+FA2C;9928;9928;9928;9928;
+FA2D;9DB4;9DB4;9DB4;9DB4;
+FA30;4FAE;4FAE;4FAE;4FAE;
+FA31;50E7;50E7;50E7;50E7;
+FA32;514D;514D;514D;514D;
+FA33;52C9;52C9;52C9;52C9;
+FA34;52E4;52E4;52E4;52E4;
+FA35;5351;5351;5351;5351;
+FA36;559D;559D;559D;559D;
+FA37;5606;5606;5606;5606;
+FA38;5668;5668;5668;5668;
+FA39;5840;5840;5840;5840;
+FA3A;58A8;58A8;58A8;58A8;
+FA3B;5C64;5C64;5C64;5C64;
+FA3C;5C6E;5C6E;5C6E;5C6E;
+FA3D;6094;6094;6094;6094;
+FA3E;6168;6168;6168;6168;
+FA3F;618E;618E;618E;618E;
+FA40;61F2;61F2;61F2;61F2;
+FA41;654F;654F;654F;654F;
+FA42;65E2;65E2;65E2;65E2;
+FA43;6691;6691;6691;6691;
+FA44;6885;6885;6885;6885;
+FA45;6D77;6D77;6D77;6D77;
+FA46;6E1A;6E1A;6E1A;6E1A;
+FA47;6F22;6F22;6F22;6F22;
+FA48;716E;716E;716E;716E;
+FA49;722B;722B;722B;722B;
+FA4A;7422;7422;7422;7422;
+FA4B;7891;7891;7891;7891;
+FA4C;793E;793E;793E;793E;
+FA4D;7949;7949;7949;7949;
+FA4E;7948;7948;7948;7948;
+FA4F;7950;7950;7950;7950;
+FA50;7956;7956;7956;7956;
+FA51;795D;795D;795D;795D;
+FA52;798D;798D;798D;798D;
+FA53;798E;798E;798E;798E;
+FA54;7A40;7A40;7A40;7A40;
+FA55;7A81;7A81;7A81;7A81;
+FA56;7BC0;7BC0;7BC0;7BC0;
+FA57;7DF4;7DF4;7DF4;7DF4;
+FA58;7E09;7E09;7E09;7E09;
+FA59;7E41;7E41;7E41;7E41;
+FA5A;7F72;7F72;7F72;7F72;
+FA5B;8005;8005;8005;8005;
+FA5C;81ED;81ED;81ED;81ED;
+FA5D;8279;8279;8279;8279;
+FA5E;8279;8279;8279;8279;
+FA5F;8457;8457;8457;8457;
+FA60;8910;8910;8910;8910;
+FA61;8996;8996;8996;8996;
+FA62;8B01;8B01;8B01;8B01;
+FA63;8B39;8B39;8B39;8B39;
+FA64;8CD3;8CD3;8CD3;8CD3;
+FA65;8D08;8D08;8D08;8D08;
+FA66;8FB6;8FB6;8FB6;8FB6;
+FA67;9038;9038;9038;9038;
+FA68;96E3;96E3;96E3;96E3;
+FA69;97FF;97FF;97FF;97FF;
+FA6A;983B;983B;983B;983B;
+FB00;FB00;FB00;0066 0066;0066 0066;
+FB01;FB01;FB01;0066 0069;0066 0069;
+FB02;FB02;FB02;0066 006C;0066 006C;
+FB03;FB03;FB03;0066 0066 0069;0066 0066 0069;
+FB04;FB04;FB04;0066 0066 006C;0066 0066 006C;
+FB05;FB05;FB05;0073 0074;0073 0074;
+FB06;FB06;FB06;0073 0074;0073 0074;
+FB13;FB13;FB13;0574 0576;0574 0576;
+FB14;FB14;FB14;0574 0565;0574 0565;
+FB15;FB15;FB15;0574 056B;0574 056B;
+FB16;FB16;FB16;057E 0576;057E 0576;
+FB17;FB17;FB17;0574 056D;0574 056D;
+FB1D;05D9 05B4;05D9 05B4;05D9 05B4;05D9 05B4;
+FB1F;05F2 05B7;05F2 05B7;05F2 05B7;05F2 05B7;
+FB20;FB20;FB20;05E2;05E2;
+FB21;FB21;FB21;05D0;05D0;
+FB22;FB22;FB22;05D3;05D3;
+FB23;FB23;FB23;05D4;05D4;
+FB24;FB24;FB24;05DB;05DB;
+FB25;FB25;FB25;05DC;05DC;
+FB26;FB26;FB26;05DD;05DD;
+FB27;FB27;FB27;05E8;05E8;
+FB28;FB28;FB28;05EA;05EA;
+FB29;FB29;FB29;002B;002B;
+FB2A;05E9 05C1;05E9 05C1;05E9 05C1;05E9 05C1;
+FB2B;05E9 05C2;05E9 05C2;05E9 05C2;05E9 05C2;
+FB2C;05E9 05BC 05C1;05E9 05BC 05C1;05E9 05BC 05C1;05E9 05BC 05C1;
+FB2D;05E9 05BC 05C2;05E9 05BC 05C2;05E9 05BC 05C2;05E9 05BC 05C2;
+FB2E;05D0 05B7;05D0 05B7;05D0 05B7;05D0 05B7;
+FB2F;05D0 05B8;05D0 05B8;05D0 05B8;05D0 05B8;
+FB30;05D0 05BC;05D0 05BC;05D0 05BC;05D0 05BC;
+FB31;05D1 05BC;05D1 05BC;05D1 05BC;05D1 05BC;
+FB32;05D2 05BC;05D2 05BC;05D2 05BC;05D2 05BC;
+FB33;05D3 05BC;05D3 05BC;05D3 05BC;05D3 05BC;
+FB34;05D4 05BC;05D4 05BC;05D4 05BC;05D4 05BC;
+FB35;05D5 05BC;05D5 05BC;05D5 05BC;05D5 05BC;
+FB36;05D6 05BC;05D6 05BC;05D6 05BC;05D6 05BC;
+FB38;05D8 05BC;05D8 05BC;05D8 05BC;05D8 05BC;
+FB39;05D9 05BC;05D9 05BC;05D9 05BC;05D9 05BC;
+FB3A;05DA 05BC;05DA 05BC;05DA 05BC;05DA 05BC;
+FB3B;05DB 05BC;05DB 05BC;05DB 05BC;05DB 05BC;
+FB3C;05DC 05BC;05DC 05BC;05DC 05BC;05DC 05BC;
+FB3E;05DE 05BC;05DE 05BC;05DE 05BC;05DE 05BC;
+FB40;05E0 05BC;05E0 05BC;05E0 05BC;05E0 05BC;
+FB41;05E1 05BC;05E1 05BC;05E1 05BC;05E1 05BC;
+FB43;05E3 05BC;05E3 05BC;05E3 05BC;05E3 05BC;
+FB44;05E4 05BC;05E4 05BC;05E4 05BC;05E4 05BC;
+FB46;05E6 05BC;05E6 05BC;05E6 05BC;05E6 05BC;
+FB47;05E7 05BC;05E7 05BC;05E7 05BC;05E7 05BC;
+FB48;05E8 05BC;05E8 05BC;05E8 05BC;05E8 05BC;
+FB49;05E9 05BC;05E9 05BC;05E9 05BC;05E9 05BC;
+FB4A;05EA 05BC;05EA 05BC;05EA 05BC;05EA 05BC;
+FB4B;05D5 05B9;05D5 05B9;05D5 05B9;05D5 05B9;
+FB4C;05D1 05BF;05D1 05BF;05D1 05BF;05D1 05BF;
+FB4D;05DB 05BF;05DB 05BF;05DB 05BF;05DB 05BF;
+FB4E;05E4 05BF;05E4 05BF;05E4 05BF;05E4 05BF;
+FB4F;FB4F;FB4F;05D0 05DC;05D0 05DC;
+FB50;FB50;FB50;0671;0671;
+FB51;FB51;FB51;0671;0671;
+FB52;FB52;FB52;067B;067B;
+FB53;FB53;FB53;067B;067B;
+FB54;FB54;FB54;067B;067B;
+FB55;FB55;FB55;067B;067B;
+FB56;FB56;FB56;067E;067E;
+FB57;FB57;FB57;067E;067E;
+FB58;FB58;FB58;067E;067E;
+FB59;FB59;FB59;067E;067E;
+FB5A;FB5A;FB5A;0680;0680;
+FB5B;FB5B;FB5B;0680;0680;
+FB5C;FB5C;FB5C;0680;0680;
+FB5D;FB5D;FB5D;0680;0680;
+FB5E;FB5E;FB5E;067A;067A;
+FB5F;FB5F;FB5F;067A;067A;
+FB60;FB60;FB60;067A;067A;
+FB61;FB61;FB61;067A;067A;
+FB62;FB62;FB62;067F;067F;
+FB63;FB63;FB63;067F;067F;
+FB64;FB64;FB64;067F;067F;
+FB65;FB65;FB65;067F;067F;
+FB66;FB66;FB66;0679;0679;
+FB67;FB67;FB67;0679;0679;
+FB68;FB68;FB68;0679;0679;
+FB69;FB69;FB69;0679;0679;
+FB6A;FB6A;FB6A;06A4;06A4;
+FB6B;FB6B;FB6B;06A4;06A4;
+FB6C;FB6C;FB6C;06A4;06A4;
+FB6D;FB6D;FB6D;06A4;06A4;
+FB6E;FB6E;FB6E;06A6;06A6;
+FB6F;FB6F;FB6F;06A6;06A6;
+FB70;FB70;FB70;06A6;06A6;
+FB71;FB71;FB71;06A6;06A6;
+FB72;FB72;FB72;0684;0684;
+FB73;FB73;FB73;0684;0684;
+FB74;FB74;FB74;0684;0684;
+FB75;FB75;FB75;0684;0684;
+FB76;FB76;FB76;0683;0683;
+FB77;FB77;FB77;0683;0683;
+FB78;FB78;FB78;0683;0683;
+FB79;FB79;FB79;0683;0683;
+FB7A;FB7A;FB7A;0686;0686;
+FB7B;FB7B;FB7B;0686;0686;
+FB7C;FB7C;FB7C;0686;0686;
+FB7D;FB7D;FB7D;0686;0686;
+FB7E;FB7E;FB7E;0687;0687;
+FB7F;FB7F;FB7F;0687;0687;
+FB80;FB80;FB80;0687;0687;
+FB81;FB81;FB81;0687;0687;
+FB82;FB82;FB82;068D;068D;
+FB83;FB83;FB83;068D;068D;
+FB84;FB84;FB84;068C;068C;
+FB85;FB85;FB85;068C;068C;
+FB86;FB86;FB86;068E;068E;
+FB87;FB87;FB87;068E;068E;
+FB88;FB88;FB88;0688;0688;
+FB89;FB89;FB89;0688;0688;
+FB8A;FB8A;FB8A;0698;0698;
+FB8B;FB8B;FB8B;0698;0698;
+FB8C;FB8C;FB8C;0691;0691;
+FB8D;FB8D;FB8D;0691;0691;
+FB8E;FB8E;FB8E;06A9;06A9;
+FB8F;FB8F;FB8F;06A9;06A9;
+FB90;FB90;FB90;06A9;06A9;
+FB91;FB91;FB91;06A9;06A9;
+FB92;FB92;FB92;06AF;06AF;
+FB93;FB93;FB93;06AF;06AF;
+FB94;FB94;FB94;06AF;06AF;
+FB95;FB95;FB95;06AF;06AF;
+FB96;FB96;FB96;06B3;06B3;
+FB97;FB97;FB97;06B3;06B3;
+FB98;FB98;FB98;06B3;06B3;
+FB99;FB99;FB99;06B3;06B3;
+FB9A;FB9A;FB9A;06B1;06B1;
+FB9B;FB9B;FB9B;06B1;06B1;
+FB9C;FB9C;FB9C;06B1;06B1;
+FB9D;FB9D;FB9D;06B1;06B1;
+FB9E;FB9E;FB9E;06BA;06BA;
+FB9F;FB9F;FB9F;06BA;06BA;
+FBA0;FBA0;FBA0;06BB;06BB;
+FBA1;FBA1;FBA1;06BB;06BB;
+FBA2;FBA2;FBA2;06BB;06BB;
+FBA3;FBA3;FBA3;06BB;06BB;
+FBA4;FBA4;FBA4;06C0;06D5 0654;
+FBA5;FBA5;FBA5;06C0;06D5 0654;
+FBA6;FBA6;FBA6;06C1;06C1;
+FBA7;FBA7;FBA7;06C1;06C1;
+FBA8;FBA8;FBA8;06C1;06C1;
+FBA9;FBA9;FBA9;06C1;06C1;
+FBAA;FBAA;FBAA;06BE;06BE;
+FBAB;FBAB;FBAB;06BE;06BE;
+FBAC;FBAC;FBAC;06BE;06BE;
+FBAD;FBAD;FBAD;06BE;06BE;
+FBAE;FBAE;FBAE;06D2;06D2;
+FBAF;FBAF;FBAF;06D2;06D2;
+FBB0;FBB0;FBB0;06D3;06D2 0654;
+FBB1;FBB1;FBB1;06D3;06D2 0654;
+FBD3;FBD3;FBD3;06AD;06AD;
+FBD4;FBD4;FBD4;06AD;06AD;
+FBD5;FBD5;FBD5;06AD;06AD;
+FBD6;FBD6;FBD6;06AD;06AD;
+FBD7;FBD7;FBD7;06C7;06C7;
+FBD8;FBD8;FBD8;06C7;06C7;
+FBD9;FBD9;FBD9;06C6;06C6;
+FBDA;FBDA;FBDA;06C6;06C6;
+FBDB;FBDB;FBDB;06C8;06C8;
+FBDC;FBDC;FBDC;06C8;06C8;
+FBDD;FBDD;FBDD;06C7 0674;06C7 0674;
+FBDE;FBDE;FBDE;06CB;06CB;
+FBDF;FBDF;FBDF;06CB;06CB;
+FBE0;FBE0;FBE0;06C5;06C5;
+FBE1;FBE1;FBE1;06C5;06C5;
+FBE2;FBE2;FBE2;06C9;06C9;
+FBE3;FBE3;FBE3;06C9;06C9;
+FBE4;FBE4;FBE4;06D0;06D0;
+FBE5;FBE5;FBE5;06D0;06D0;
+FBE6;FBE6;FBE6;06D0;06D0;
+FBE7;FBE7;FBE7;06D0;06D0;
+FBE8;FBE8;FBE8;0649;0649;
+FBE9;FBE9;FBE9;0649;0649;
+FBEA;FBEA;FBEA;0626 0627;064A 0654 0627;
+FBEB;FBEB;FBEB;0626 0627;064A 0654 0627;
+FBEC;FBEC;FBEC;0626 06D5;064A 0654 06D5;
+FBED;FBED;FBED;0626 06D5;064A 0654 06D5;
+FBEE;FBEE;FBEE;0626 0648;064A 0654 0648;
+FBEF;FBEF;FBEF;0626 0648;064A 0654 0648;
+FBF0;FBF0;FBF0;0626 06C7;064A 0654 06C7;
+FBF1;FBF1;FBF1;0626 06C7;064A 0654 06C7;
+FBF2;FBF2;FBF2;0626 06C6;064A 0654 06C6;
+FBF3;FBF3;FBF3;0626 06C6;064A 0654 06C6;
+FBF4;FBF4;FBF4;0626 06C8;064A 0654 06C8;
+FBF5;FBF5;FBF5;0626 06C8;064A 0654 06C8;
+FBF6;FBF6;FBF6;0626 06D0;064A 0654 06D0;
+FBF7;FBF7;FBF7;0626 06D0;064A 0654 06D0;
+FBF8;FBF8;FBF8;0626 06D0;064A 0654 06D0;
+FBF9;FBF9;FBF9;0626 0649;064A 0654 0649;
+FBFA;FBFA;FBFA;0626 0649;064A 0654 0649;
+FBFB;FBFB;FBFB;0626 0649;064A 0654 0649;
+FBFC;FBFC;FBFC;06CC;06CC;
+FBFD;FBFD;FBFD;06CC;06CC;
+FBFE;FBFE;FBFE;06CC;06CC;
+FBFF;FBFF;FBFF;06CC;06CC;
+FC00;FC00;FC00;0626 062C;064A 0654 062C;
+FC01;FC01;FC01;0626 062D;064A 0654 062D;
+FC02;FC02;FC02;0626 0645;064A 0654 0645;
+FC03;FC03;FC03;0626 0649;064A 0654 0649;
+FC04;FC04;FC04;0626 064A;064A 0654 064A;
+FC05;FC05;FC05;0628 062C;0628 062C;
+FC06;FC06;FC06;0628 062D;0628 062D;
+FC07;FC07;FC07;0628 062E;0628 062E;
+FC08;FC08;FC08;0628 0645;0628 0645;
+FC09;FC09;FC09;0628 0649;0628 0649;
+FC0A;FC0A;FC0A;0628 064A;0628 064A;
+FC0B;FC0B;FC0B;062A 062C;062A 062C;
+FC0C;FC0C;FC0C;062A 062D;062A 062D;
+FC0D;FC0D;FC0D;062A 062E;062A 062E;
+FC0E;FC0E;FC0E;062A 0645;062A 0645;
+FC0F;FC0F;FC0F;062A 0649;062A 0649;
+FC10;FC10;FC10;062A 064A;062A 064A;
+FC11;FC11;FC11;062B 062C;062B 062C;
+FC12;FC12;FC12;062B 0645;062B 0645;
+FC13;FC13;FC13;062B 0649;062B 0649;
+FC14;FC14;FC14;062B 064A;062B 064A;
+FC15;FC15;FC15;062C 062D;062C 062D;
+FC16;FC16;FC16;062C 0645;062C 0645;
+FC17;FC17;FC17;062D 062C;062D 062C;
+FC18;FC18;FC18;062D 0645;062D 0645;
+FC19;FC19;FC19;062E 062C;062E 062C;
+FC1A;FC1A;FC1A;062E 062D;062E 062D;
+FC1B;FC1B;FC1B;062E 0645;062E 0645;
+FC1C;FC1C;FC1C;0633 062C;0633 062C;
+FC1D;FC1D;FC1D;0633 062D;0633 062D;
+FC1E;FC1E;FC1E;0633 062E;0633 062E;
+FC1F;FC1F;FC1F;0633 0645;0633 0645;
+FC20;FC20;FC20;0635 062D;0635 062D;
+FC21;FC21;FC21;0635 0645;0635 0645;
+FC22;FC22;FC22;0636 062C;0636 062C;
+FC23;FC23;FC23;0636 062D;0636 062D;
+FC24;FC24;FC24;0636 062E;0636 062E;
+FC25;FC25;FC25;0636 0645;0636 0645;
+FC26;FC26;FC26;0637 062D;0637 062D;
+FC27;FC27;FC27;0637 0645;0637 0645;
+FC28;FC28;FC28;0638 0645;0638 0645;
+FC29;FC29;FC29;0639 062C;0639 062C;
+FC2A;FC2A;FC2A;0639 0645;0639 0645;
+FC2B;FC2B;FC2B;063A 062C;063A 062C;
+FC2C;FC2C;FC2C;063A 0645;063A 0645;
+FC2D;FC2D;FC2D;0641 062C;0641 062C;
+FC2E;FC2E;FC2E;0641 062D;0641 062D;
+FC2F;FC2F;FC2F;0641 062E;0641 062E;
+FC30;FC30;FC30;0641 0645;0641 0645;
+FC31;FC31;FC31;0641 0649;0641 0649;
+FC32;FC32;FC32;0641 064A;0641 064A;
+FC33;FC33;FC33;0642 062D;0642 062D;
+FC34;FC34;FC34;0642 0645;0642 0645;
+FC35;FC35;FC35;0642 0649;0642 0649;
+FC36;FC36;FC36;0642 064A;0642 064A;
+FC37;FC37;FC37;0643 0627;0643 0627;
+FC38;FC38;FC38;0643 062C;0643 062C;
+FC39;FC39;FC39;0643 062D;0643 062D;
+FC3A;FC3A;FC3A;0643 062E;0643 062E;
+FC3B;FC3B;FC3B;0643 0644;0643 0644;
+FC3C;FC3C;FC3C;0643 0645;0643 0645;
+FC3D;FC3D;FC3D;0643 0649;0643 0649;
+FC3E;FC3E;FC3E;0643 064A;0643 064A;
+FC3F;FC3F;FC3F;0644 062C;0644 062C;
+FC40;FC40;FC40;0644 062D;0644 062D;
+FC41;FC41;FC41;0644 062E;0644 062E;
+FC42;FC42;FC42;0644 0645;0644 0645;
+FC43;FC43;FC43;0644 0649;0644 0649;
+FC44;FC44;FC44;0644 064A;0644 064A;
+FC45;FC45;FC45;0645 062C;0645 062C;
+FC46;FC46;FC46;0645 062D;0645 062D;
+FC47;FC47;FC47;0645 062E;0645 062E;
+FC48;FC48;FC48;0645 0645;0645 0645;
+FC49;FC49;FC49;0645 0649;0645 0649;
+FC4A;FC4A;FC4A;0645 064A;0645 064A;
+FC4B;FC4B;FC4B;0646 062C;0646 062C;
+FC4C;FC4C;FC4C;0646 062D;0646 062D;
+FC4D;FC4D;FC4D;0646 062E;0646 062E;
+FC4E;FC4E;FC4E;0646 0645;0646 0645;
+FC4F;FC4F;FC4F;0646 0649;0646 0649;
+FC50;FC50;FC50;0646 064A;0646 064A;
+FC51;FC51;FC51;0647 062C;0647 062C;
+FC52;FC52;FC52;0647 0645;0647 0645;
+FC53;FC53;FC53;0647 0649;0647 0649;
+FC54;FC54;FC54;0647 064A;0647 064A;
+FC55;FC55;FC55;064A 062C;064A 062C;
+FC56;FC56;FC56;064A 062D;064A 062D;
+FC57;FC57;FC57;064A 062E;064A 062E;
+FC58;FC58;FC58;064A 0645;064A 0645;
+FC59;FC59;FC59;064A 0649;064A 0649;
+FC5A;FC5A;FC5A;064A 064A;064A 064A;
+FC5B;FC5B;FC5B;0630 0670;0630 0670;
+FC5C;FC5C;FC5C;0631 0670;0631 0670;
+FC5D;FC5D;FC5D;0649 0670;0649 0670;
+FC5E;FC5E;FC5E;0020 064C 0651;0020 064C 0651;
+FC5F;FC5F;FC5F;0020 064D 0651;0020 064D 0651;
+FC60;FC60;FC60;0020 064E 0651;0020 064E 0651;
+FC61;FC61;FC61;0020 064F 0651;0020 064F 0651;
+FC62;FC62;FC62;0020 0650 0651;0020 0650 0651;
+FC63;FC63;FC63;0020 0651 0670;0020 0651 0670;
+FC64;FC64;FC64;0626 0631;064A 0654 0631;
+FC65;FC65;FC65;0626 0632;064A 0654 0632;
+FC66;FC66;FC66;0626 0645;064A 0654 0645;
+FC67;FC67;FC67;0626 0646;064A 0654 0646;
+FC68;FC68;FC68;0626 0649;064A 0654 0649;
+FC69;FC69;FC69;0626 064A;064A 0654 064A;
+FC6A;FC6A;FC6A;0628 0631;0628 0631;
+FC6B;FC6B;FC6B;0628 0632;0628 0632;
+FC6C;FC6C;FC6C;0628 0645;0628 0645;
+FC6D;FC6D;FC6D;0628 0646;0628 0646;
+FC6E;FC6E;FC6E;0628 0649;0628 0649;
+FC6F;FC6F;FC6F;0628 064A;0628 064A;
+FC70;FC70;FC70;062A 0631;062A 0631;
+FC71;FC71;FC71;062A 0632;062A 0632;
+FC72;FC72;FC72;062A 0645;062A 0645;
+FC73;FC73;FC73;062A 0646;062A 0646;
+FC74;FC74;FC74;062A 0649;062A 0649;
+FC75;FC75;FC75;062A 064A;062A 064A;
+FC76;FC76;FC76;062B 0631;062B 0631;
+FC77;FC77;FC77;062B 0632;062B 0632;
+FC78;FC78;FC78;062B 0645;062B 0645;
+FC79;FC79;FC79;062B 0646;062B 0646;
+FC7A;FC7A;FC7A;062B 0649;062B 0649;
+FC7B;FC7B;FC7B;062B 064A;062B 064A;
+FC7C;FC7C;FC7C;0641 0649;0641 0649;
+FC7D;FC7D;FC7D;0641 064A;0641 064A;
+FC7E;FC7E;FC7E;0642 0649;0642 0649;
+FC7F;FC7F;FC7F;0642 064A;0642 064A;
+FC80;FC80;FC80;0643 0627;0643 0627;
+FC81;FC81;FC81;0643 0644;0643 0644;
+FC82;FC82;FC82;0643 0645;0643 0645;
+FC83;FC83;FC83;0643 0649;0643 0649;
+FC84;FC84;FC84;0643 064A;0643 064A;
+FC85;FC85;FC85;0644 0645;0644 0645;
+FC86;FC86;FC86;0644 0649;0644 0649;
+FC87;FC87;FC87;0644 064A;0644 064A;
+FC88;FC88;FC88;0645 0627;0645 0627;
+FC89;FC89;FC89;0645 0645;0645 0645;
+FC8A;FC8A;FC8A;0646 0631;0646 0631;
+FC8B;FC8B;FC8B;0646 0632;0646 0632;
+FC8C;FC8C;FC8C;0646 0645;0646 0645;
+FC8D;FC8D;FC8D;0646 0646;0646 0646;
+FC8E;FC8E;FC8E;0646 0649;0646 0649;
+FC8F;FC8F;FC8F;0646 064A;0646 064A;
+FC90;FC90;FC90;0649 0670;0649 0670;
+FC91;FC91;FC91;064A 0631;064A 0631;
+FC92;FC92;FC92;064A 0632;064A 0632;
+FC93;FC93;FC93;064A 0645;064A 0645;
+FC94;FC94;FC94;064A 0646;064A 0646;
+FC95;FC95;FC95;064A 0649;064A 0649;
+FC96;FC96;FC96;064A 064A;064A 064A;
+FC97;FC97;FC97;0626 062C;064A 0654 062C;
+FC98;FC98;FC98;0626 062D;064A 0654 062D;
+FC99;FC99;FC99;0626 062E;064A 0654 062E;
+FC9A;FC9A;FC9A;0626 0645;064A 0654 0645;
+FC9B;FC9B;FC9B;0626 0647;064A 0654 0647;
+FC9C;FC9C;FC9C;0628 062C;0628 062C;
+FC9D;FC9D;FC9D;0628 062D;0628 062D;
+FC9E;FC9E;FC9E;0628 062E;0628 062E;
+FC9F;FC9F;FC9F;0628 0645;0628 0645;
+FCA0;FCA0;FCA0;0628 0647;0628 0647;
+FCA1;FCA1;FCA1;062A 062C;062A 062C;
+FCA2;FCA2;FCA2;062A 062D;062A 062D;
+FCA3;FCA3;FCA3;062A 062E;062A 062E;
+FCA4;FCA4;FCA4;062A 0645;062A 0645;
+FCA5;FCA5;FCA5;062A 0647;062A 0647;
+FCA6;FCA6;FCA6;062B 0645;062B 0645;
+FCA7;FCA7;FCA7;062C 062D;062C 062D;
+FCA8;FCA8;FCA8;062C 0645;062C 0645;
+FCA9;FCA9;FCA9;062D 062C;062D 062C;
+FCAA;FCAA;FCAA;062D 0645;062D 0645;
+FCAB;FCAB;FCAB;062E 062C;062E 062C;
+FCAC;FCAC;FCAC;062E 0645;062E 0645;
+FCAD;FCAD;FCAD;0633 062C;0633 062C;
+FCAE;FCAE;FCAE;0633 062D;0633 062D;
+FCAF;FCAF;FCAF;0633 062E;0633 062E;
+FCB0;FCB0;FCB0;0633 0645;0633 0645;
+FCB1;FCB1;FCB1;0635 062D;0635 062D;
+FCB2;FCB2;FCB2;0635 062E;0635 062E;
+FCB3;FCB3;FCB3;0635 0645;0635 0645;
+FCB4;FCB4;FCB4;0636 062C;0636 062C;
+FCB5;FCB5;FCB5;0636 062D;0636 062D;
+FCB6;FCB6;FCB6;0636 062E;0636 062E;
+FCB7;FCB7;FCB7;0636 0645;0636 0645;
+FCB8;FCB8;FCB8;0637 062D;0637 062D;
+FCB9;FCB9;FCB9;0638 0645;0638 0645;
+FCBA;FCBA;FCBA;0639 062C;0639 062C;
+FCBB;FCBB;FCBB;0639 0645;0639 0645;
+FCBC;FCBC;FCBC;063A 062C;063A 062C;
+FCBD;FCBD;FCBD;063A 0645;063A 0645;
+FCBE;FCBE;FCBE;0641 062C;0641 062C;
+FCBF;FCBF;FCBF;0641 062D;0641 062D;
+FCC0;FCC0;FCC0;0641 062E;0641 062E;
+FCC1;FCC1;FCC1;0641 0645;0641 0645;
+FCC2;FCC2;FCC2;0642 062D;0642 062D;
+FCC3;FCC3;FCC3;0642 0645;0642 0645;
+FCC4;FCC4;FCC4;0643 062C;0643 062C;
+FCC5;FCC5;FCC5;0643 062D;0643 062D;
+FCC6;FCC6;FCC6;0643 062E;0643 062E;
+FCC7;FCC7;FCC7;0643 0644;0643 0644;
+FCC8;FCC8;FCC8;0643 0645;0643 0645;
+FCC9;FCC9;FCC9;0644 062C;0644 062C;
+FCCA;FCCA;FCCA;0644 062D;0644 062D;
+FCCB;FCCB;FCCB;0644 062E;0644 062E;
+FCCC;FCCC;FCCC;0644 0645;0644 0645;
+FCCD;FCCD;FCCD;0644 0647;0644 0647;
+FCCE;FCCE;FCCE;0645 062C;0645 062C;
+FCCF;FCCF;FCCF;0645 062D;0645 062D;
+FCD0;FCD0;FCD0;0645 062E;0645 062E;
+FCD1;FCD1;FCD1;0645 0645;0645 0645;
+FCD2;FCD2;FCD2;0646 062C;0646 062C;
+FCD3;FCD3;FCD3;0646 062D;0646 062D;
+FCD4;FCD4;FCD4;0646 062E;0646 062E;
+FCD5;FCD5;FCD5;0646 0645;0646 0645;
+FCD6;FCD6;FCD6;0646 0647;0646 0647;
+FCD7;FCD7;FCD7;0647 062C;0647 062C;
+FCD8;FCD8;FCD8;0647 0645;0647 0645;
+FCD9;FCD9;FCD9;0647 0670;0647 0670;
+FCDA;FCDA;FCDA;064A 062C;064A 062C;
+FCDB;FCDB;FCDB;064A 062D;064A 062D;
+FCDC;FCDC;FCDC;064A 062E;064A 062E;
+FCDD;FCDD;FCDD;064A 0645;064A 0645;
+FCDE;FCDE;FCDE;064A 0647;064A 0647;
+FCDF;FCDF;FCDF;0626 0645;064A 0654 0645;
+FCE0;FCE0;FCE0;0626 0647;064A 0654 0647;
+FCE1;FCE1;FCE1;0628 0645;0628 0645;
+FCE2;FCE2;FCE2;0628 0647;0628 0647;
+FCE3;FCE3;FCE3;062A 0645;062A 0645;
+FCE4;FCE4;FCE4;062A 0647;062A 0647;
+FCE5;FCE5;FCE5;062B 0645;062B 0645;
+FCE6;FCE6;FCE6;062B 0647;062B 0647;
+FCE7;FCE7;FCE7;0633 0645;0633 0645;
+FCE8;FCE8;FCE8;0633 0647;0633 0647;
+FCE9;FCE9;FCE9;0634 0645;0634 0645;
+FCEA;FCEA;FCEA;0634 0647;0634 0647;
+FCEB;FCEB;FCEB;0643 0644;0643 0644;
+FCEC;FCEC;FCEC;0643 0645;0643 0645;
+FCED;FCED;FCED;0644 0645;0644 0645;
+FCEE;FCEE;FCEE;0646 0645;0646 0645;
+FCEF;FCEF;FCEF;0646 0647;0646 0647;
+FCF0;FCF0;FCF0;064A 0645;064A 0645;
+FCF1;FCF1;FCF1;064A 0647;064A 0647;
+FCF2;FCF2;FCF2;0640 064E 0651;0640 064E 0651;
+FCF3;FCF3;FCF3;0640 064F 0651;0640 064F 0651;
+FCF4;FCF4;FCF4;0640 0650 0651;0640 0650 0651;
+FCF5;FCF5;FCF5;0637 0649;0637 0649;
+FCF6;FCF6;FCF6;0637 064A;0637 064A;
+FCF7;FCF7;FCF7;0639 0649;0639 0649;
+FCF8;FCF8;FCF8;0639 064A;0639 064A;
+FCF9;FCF9;FCF9;063A 0649;063A 0649;
+FCFA;FCFA;FCFA;063A 064A;063A 064A;
+FCFB;FCFB;FCFB;0633 0649;0633 0649;
+FCFC;FCFC;FCFC;0633 064A;0633 064A;
+FCFD;FCFD;FCFD;0634 0649;0634 0649;
+FCFE;FCFE;FCFE;0634 064A;0634 064A;
+FCFF;FCFF;FCFF;062D 0649;062D 0649;
+FD00;FD00;FD00;062D 064A;062D 064A;
+FD01;FD01;FD01;062C 0649;062C 0649;
+FD02;FD02;FD02;062C 064A;062C 064A;
+FD03;FD03;FD03;062E 0649;062E 0649;
+FD04;FD04;FD04;062E 064A;062E 064A;
+FD05;FD05;FD05;0635 0649;0635 0649;
+FD06;FD06;FD06;0635 064A;0635 064A;
+FD07;FD07;FD07;0636 0649;0636 0649;
+FD08;FD08;FD08;0636 064A;0636 064A;
+FD09;FD09;FD09;0634 062C;0634 062C;
+FD0A;FD0A;FD0A;0634 062D;0634 062D;
+FD0B;FD0B;FD0B;0634 062E;0634 062E;
+FD0C;FD0C;FD0C;0634 0645;0634 0645;
+FD0D;FD0D;FD0D;0634 0631;0634 0631;
+FD0E;FD0E;FD0E;0633 0631;0633 0631;
+FD0F;FD0F;FD0F;0635 0631;0635 0631;
+FD10;FD10;FD10;0636 0631;0636 0631;
+FD11;FD11;FD11;0637 0649;0637 0649;
+FD12;FD12;FD12;0637 064A;0637 064A;
+FD13;FD13;FD13;0639 0649;0639 0649;
+FD14;FD14;FD14;0639 064A;0639 064A;
+FD15;FD15;FD15;063A 0649;063A 0649;
+FD16;FD16;FD16;063A 064A;063A 064A;
+FD17;FD17;FD17;0633 0649;0633 0649;
+FD18;FD18;FD18;0633 064A;0633 064A;
+FD19;FD19;FD19;0634 0649;0634 0649;
+FD1A;FD1A;FD1A;0634 064A;0634 064A;
+FD1B;FD1B;FD1B;062D 0649;062D 0649;
+FD1C;FD1C;FD1C;062D 064A;062D 064A;
+FD1D;FD1D;FD1D;062C 0649;062C 0649;
+FD1E;FD1E;FD1E;062C 064A;062C 064A;
+FD1F;FD1F;FD1F;062E 0649;062E 0649;
+FD20;FD20;FD20;062E 064A;062E 064A;
+FD21;FD21;FD21;0635 0649;0635 0649;
+FD22;FD22;FD22;0635 064A;0635 064A;
+FD23;FD23;FD23;0636 0649;0636 0649;
+FD24;FD24;FD24;0636 064A;0636 064A;
+FD25;FD25;FD25;0634 062C;0634 062C;
+FD26;FD26;FD26;0634 062D;0634 062D;
+FD27;FD27;FD27;0634 062E;0634 062E;
+FD28;FD28;FD28;0634 0645;0634 0645;
+FD29;FD29;FD29;0634 0631;0634 0631;
+FD2A;FD2A;FD2A;0633 0631;0633 0631;
+FD2B;FD2B;FD2B;0635 0631;0635 0631;
+FD2C;FD2C;FD2C;0636 0631;0636 0631;
+FD2D;FD2D;FD2D;0634 062C;0634 062C;
+FD2E;FD2E;FD2E;0634 062D;0634 062D;
+FD2F;FD2F;FD2F;0634 062E;0634 062E;
+FD30;FD30;FD30;0634 0645;0634 0645;
+FD31;FD31;FD31;0633 0647;0633 0647;
+FD32;FD32;FD32;0634 0647;0634 0647;
+FD33;FD33;FD33;0637 0645;0637 0645;
+FD34;FD34;FD34;0633 062C;0633 062C;
+FD35;FD35;FD35;0633 062D;0633 062D;
+FD36;FD36;FD36;0633 062E;0633 062E;
+FD37;FD37;FD37;0634 062C;0634 062C;
+FD38;FD38;FD38;0634 062D;0634 062D;
+FD39;FD39;FD39;0634 062E;0634 062E;
+FD3A;FD3A;FD3A;0637 0645;0637 0645;
+FD3B;FD3B;FD3B;0638 0645;0638 0645;
+FD3C;FD3C;FD3C;0627 064B;0627 064B;
+FD3D;FD3D;FD3D;0627 064B;0627 064B;
+FD50;FD50;FD50;062A 062C 0645;062A 062C 0645;
+FD51;FD51;FD51;062A 062D 062C;062A 062D 062C;
+FD52;FD52;FD52;062A 062D 062C;062A 062D 062C;
+FD53;FD53;FD53;062A 062D 0645;062A 062D 0645;
+FD54;FD54;FD54;062A 062E 0645;062A 062E 0645;
+FD55;FD55;FD55;062A 0645 062C;062A 0645 062C;
+FD56;FD56;FD56;062A 0645 062D;062A 0645 062D;
+FD57;FD57;FD57;062A 0645 062E;062A 0645 062E;
+FD58;FD58;FD58;062C 0645 062D;062C 0645 062D;
+FD59;FD59;FD59;062C 0645 062D;062C 0645 062D;
+FD5A;FD5A;FD5A;062D 0645 064A;062D 0645 064A;
+FD5B;FD5B;FD5B;062D 0645 0649;062D 0645 0649;
+FD5C;FD5C;FD5C;0633 062D 062C;0633 062D 062C;
+FD5D;FD5D;FD5D;0633 062C 062D;0633 062C 062D;
+FD5E;FD5E;FD5E;0633 062C 0649;0633 062C 0649;
+FD5F;FD5F;FD5F;0633 0645 062D;0633 0645 062D;
+FD60;FD60;FD60;0633 0645 062D;0633 0645 062D;
+FD61;FD61;FD61;0633 0645 062C;0633 0645 062C;
+FD62;FD62;FD62;0633 0645 0645;0633 0645 0645;
+FD63;FD63;FD63;0633 0645 0645;0633 0645 0645;
+FD64;FD64;FD64;0635 062D 062D;0635 062D 062D;
+FD65;FD65;FD65;0635 062D 062D;0635 062D 062D;
+FD66;FD66;FD66;0635 0645 0645;0635 0645 0645;
+FD67;FD67;FD67;0634 062D 0645;0634 062D 0645;
+FD68;FD68;FD68;0634 062D 0645;0634 062D 0645;
+FD69;FD69;FD69;0634 062C 064A;0634 062C 064A;
+FD6A;FD6A;FD6A;0634 0645 062E;0634 0645 062E;
+FD6B;FD6B;FD6B;0634 0645 062E;0634 0645 062E;
+FD6C;FD6C;FD6C;0634 0645 0645;0634 0645 0645;
+FD6D;FD6D;FD6D;0634 0645 0645;0634 0645 0645;
+FD6E;FD6E;FD6E;0636 062D 0649;0636 062D 0649;
+FD6F;FD6F;FD6F;0636 062E 0645;0636 062E 0645;
+FD70;FD70;FD70;0636 062E 0645;0636 062E 0645;
+FD71;FD71;FD71;0637 0645 062D;0637 0645 062D;
+FD72;FD72;FD72;0637 0645 062D;0637 0645 062D;
+FD73;FD73;FD73;0637 0645 0645;0637 0645 0645;
+FD74;FD74;FD74;0637 0645 064A;0637 0645 064A;
+FD75;FD75;FD75;0639 062C 0645;0639 062C 0645;
+FD76;FD76;FD76;0639 0645 0645;0639 0645 0645;
+FD77;FD77;FD77;0639 0645 0645;0639 0645 0645;
+FD78;FD78;FD78;0639 0645 0649;0639 0645 0649;
+FD79;FD79;FD79;063A 0645 0645;063A 0645 0645;
+FD7A;FD7A;FD7A;063A 0645 064A;063A 0645 064A;
+FD7B;FD7B;FD7B;063A 0645 0649;063A 0645 0649;
+FD7C;FD7C;FD7C;0641 062E 0645;0641 062E 0645;
+FD7D;FD7D;FD7D;0641 062E 0645;0641 062E 0645;
+FD7E;FD7E;FD7E;0642 0645 062D;0642 0645 062D;
+FD7F;FD7F;FD7F;0642 0645 0645;0642 0645 0645;
+FD80;FD80;FD80;0644 062D 0645;0644 062D 0645;
+FD81;FD81;FD81;0644 062D 064A;0644 062D 064A;
+FD82;FD82;FD82;0644 062D 0649;0644 062D 0649;
+FD83;FD83;FD83;0644 062C 062C;0644 062C 062C;
+FD84;FD84;FD84;0644 062C 062C;0644 062C 062C;
+FD85;FD85;FD85;0644 062E 0645;0644 062E 0645;
+FD86;FD86;FD86;0644 062E 0645;0644 062E 0645;
+FD87;FD87;FD87;0644 0645 062D;0644 0645 062D;
+FD88;FD88;FD88;0644 0645 062D;0644 0645 062D;
+FD89;FD89;FD89;0645 062D 062C;0645 062D 062C;
+FD8A;FD8A;FD8A;0645 062D 0645;0645 062D 0645;
+FD8B;FD8B;FD8B;0645 062D 064A;0645 062D 064A;
+FD8C;FD8C;FD8C;0645 062C 062D;0645 062C 062D;
+FD8D;FD8D;FD8D;0645 062C 0645;0645 062C 0645;
+FD8E;FD8E;FD8E;0645 062E 062C;0645 062E 062C;
+FD8F;FD8F;FD8F;0645 062E 0645;0645 062E 0645;
+FD92;FD92;FD92;0645 062C 062E;0645 062C 062E;
+FD93;FD93;FD93;0647 0645 062C;0647 0645 062C;
+FD94;FD94;FD94;0647 0645 0645;0647 0645 0645;
+FD95;FD95;FD95;0646 062D 0645;0646 062D 0645;
+FD96;FD96;FD96;0646 062D 0649;0646 062D 0649;
+FD97;FD97;FD97;0646 062C 0645;0646 062C 0645;
+FD98;FD98;FD98;0646 062C 0645;0646 062C 0645;
+FD99;FD99;FD99;0646 062C 0649;0646 062C 0649;
+FD9A;FD9A;FD9A;0646 0645 064A;0646 0645 064A;
+FD9B;FD9B;FD9B;0646 0645 0649;0646 0645 0649;
+FD9C;FD9C;FD9C;064A 0645 0645;064A 0645 0645;
+FD9D;FD9D;FD9D;064A 0645 0645;064A 0645 0645;
+FD9E;FD9E;FD9E;0628 062E 064A;0628 062E 064A;
+FD9F;FD9F;FD9F;062A 062C 064A;062A 062C 064A;
+FDA0;FDA0;FDA0;062A 062C 0649;062A 062C 0649;
+FDA1;FDA1;FDA1;062A 062E 064A;062A 062E 064A;
+FDA2;FDA2;FDA2;062A 062E 0649;062A 062E 0649;
+FDA3;FDA3;FDA3;062A 0645 064A;062A 0645 064A;
+FDA4;FDA4;FDA4;062A 0645 0649;062A 0645 0649;
+FDA5;FDA5;FDA5;062C 0645 064A;062C 0645 064A;
+FDA6;FDA6;FDA6;062C 062D 0649;062C 062D 0649;
+FDA7;FDA7;FDA7;062C 0645 0649;062C 0645 0649;
+FDA8;FDA8;FDA8;0633 062E 0649;0633 062E 0649;
+FDA9;FDA9;FDA9;0635 062D 064A;0635 062D 064A;
+FDAA;FDAA;FDAA;0634 062D 064A;0634 062D 064A;
+FDAB;FDAB;FDAB;0636 062D 064A;0636 062D 064A;
+FDAC;FDAC;FDAC;0644 062C 064A;0644 062C 064A;
+FDAD;FDAD;FDAD;0644 0645 064A;0644 0645 064A;
+FDAE;FDAE;FDAE;064A 062D 064A;064A 062D 064A;
+FDAF;FDAF;FDAF;064A 062C 064A;064A 062C 064A;
+FDB0;FDB0;FDB0;064A 0645 064A;064A 0645 064A;
+FDB1;FDB1;FDB1;0645 0645 064A;0645 0645 064A;
+FDB2;FDB2;FDB2;0642 0645 064A;0642 0645 064A;
+FDB3;FDB3;FDB3;0646 062D 064A;0646 062D 064A;
+FDB4;FDB4;FDB4;0642 0645 062D;0642 0645 062D;
+FDB5;FDB5;FDB5;0644 062D 0645;0644 062D 0645;
+FDB6;FDB6;FDB6;0639 0645 064A;0639 0645 064A;
+FDB7;FDB7;FDB7;0643 0645 064A;0643 0645 064A;
+FDB8;FDB8;FDB8;0646 062C 062D;0646 062C 062D;
+FDB9;FDB9;FDB9;0645 062E 064A;0645 062E 064A;
+FDBA;FDBA;FDBA;0644 062C 0645;0644 062C 0645;
+FDBB;FDBB;FDBB;0643 0645 0645;0643 0645 0645;
+FDBC;FDBC;FDBC;0644 062C 0645;0644 062C 0645;
+FDBD;FDBD;FDBD;0646 062C 062D;0646 062C 062D;
+FDBE;FDBE;FDBE;062C 062D 064A;062C 062D 064A;
+FDBF;FDBF;FDBF;062D 062C 064A;062D 062C 064A;
+FDC0;FDC0;FDC0;0645 062C 064A;0645 062C 064A;
+FDC1;FDC1;FDC1;0641 0645 064A;0641 0645 064A;
+FDC2;FDC2;FDC2;0628 062D 064A;0628 062D 064A;
+FDC3;FDC3;FDC3;0643 0645 0645;0643 0645 0645;
+FDC4;FDC4;FDC4;0639 062C 0645;0639 062C 0645;
+FDC5;FDC5;FDC5;0635 0645 0645;0635 0645 0645;
+FDC6;FDC6;FDC6;0633 062E 064A;0633 062E 064A;
+FDC7;FDC7;FDC7;0646 062C 064A;0646 062C 064A;
+FDF0;FDF0;FDF0;0635 0644 06D2;0635 0644 06D2;
+FDF1;FDF1;FDF1;0642 0644 06D2;0642 0644 06D2;
+FDF2;FDF2;FDF2;0627 0644 0644 0647;0627 0644 0644 0647;
+FDF3;FDF3;FDF3;0627 0643 0628 0631;0627 0643 0628 0631;
+FDF4;FDF4;FDF4;0645 062D 0645 062F;0645 062D 0645 062F;
+FDF5;FDF5;FDF5;0635 0644 0639 0645;0635 0644 0639 0645;
+FDF6;FDF6;FDF6;0631 0633 0648 0644;0631 0633 0648 0644;
+FDF7;FDF7;FDF7;0639 0644 064A 0647;0639 0644 064A 0647;
+FDF8;FDF8;FDF8;0648 0633 0644 0645;0648 0633 0644 0645;
+FDF9;FDF9;FDF9;0635 0644 0649;0635 0644 0649;
+FDFA;FDFA;FDFA;0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;
+FDFB;FDFB;FDFB;062C 0644 0020 062C 0644 0627 0644 0647;062C 0644 0020 062C 0644 0627 0644 0647;
+FDFC;FDFC;FDFC;0631 06CC 0627 0644;0631 06CC 0627 0644;
+FE30;FE30;FE30;002E 002E;002E 002E;
+FE31;FE31;FE31;2014;2014;
+FE32;FE32;FE32;2013;2013;
+FE33;FE33;FE33;005F;005F;
+FE34;FE34;FE34;005F;005F;
+FE35;FE35;FE35;0028;0028;
+FE36;FE36;FE36;0029;0029;
+FE37;FE37;FE37;007B;007B;
+FE38;FE38;FE38;007D;007D;
+FE39;FE39;FE39;3014;3014;
+FE3A;FE3A;FE3A;3015;3015;
+FE3B;FE3B;FE3B;3010;3010;
+FE3C;FE3C;FE3C;3011;3011;
+FE3D;FE3D;FE3D;300A;300A;
+FE3E;FE3E;FE3E;300B;300B;
+FE3F;FE3F;FE3F;3008;3008;
+FE40;FE40;FE40;3009;3009;
+FE41;FE41;FE41;300C;300C;
+FE42;FE42;FE42;300D;300D;
+FE43;FE43;FE43;300E;300E;
+FE44;FE44;FE44;300F;300F;
+FE49;FE49;FE49;0020 0305;0020 0305;
+FE4A;FE4A;FE4A;0020 0305;0020 0305;
+FE4B;FE4B;FE4B;0020 0305;0020 0305;
+FE4C;FE4C;FE4C;0020 0305;0020 0305;
+FE4D;FE4D;FE4D;005F;005F;
+FE4E;FE4E;FE4E;005F;005F;
+FE4F;FE4F;FE4F;005F;005F;
+FE50;FE50;FE50;002C;002C;
+FE51;FE51;FE51;3001;3001;
+FE52;FE52;FE52;002E;002E;
+FE54;FE54;FE54;003B;003B;
+FE55;FE55;FE55;003A;003A;
+FE56;FE56;FE56;003F;003F;
+FE57;FE57;FE57;0021;0021;
+FE58;FE58;FE58;2014;2014;
+FE59;FE59;FE59;0028;0028;
+FE5A;FE5A;FE5A;0029;0029;
+FE5B;FE5B;FE5B;007B;007B;
+FE5C;FE5C;FE5C;007D;007D;
+FE5D;FE5D;FE5D;3014;3014;
+FE5E;FE5E;FE5E;3015;3015;
+FE5F;FE5F;FE5F;0023;0023;
+FE60;FE60;FE60;0026;0026;
+FE61;FE61;FE61;002A;002A;
+FE62;FE62;FE62;002B;002B;
+FE63;FE63;FE63;002D;002D;
+FE64;FE64;FE64;003C;003C;
+FE65;FE65;FE65;003E;003E;
+FE66;FE66;FE66;003D;003D;
+FE68;FE68;FE68;005C;005C;
+FE69;FE69;FE69;0024;0024;
+FE6A;FE6A;FE6A;0025;0025;
+FE6B;FE6B;FE6B;0040;0040;
+FE70;FE70;FE70;0020 064B;0020 064B;
+FE71;FE71;FE71;0640 064B;0640 064B;
+FE72;FE72;FE72;0020 064C;0020 064C;
+FE74;FE74;FE74;0020 064D;0020 064D;
+FE76;FE76;FE76;0020 064E;0020 064E;
+FE77;FE77;FE77;0640 064E;0640 064E;
+FE78;FE78;FE78;0020 064F;0020 064F;
+FE79;FE79;FE79;0640 064F;0640 064F;
+FE7A;FE7A;FE7A;0020 0650;0020 0650;
+FE7B;FE7B;FE7B;0640 0650;0640 0650;
+FE7C;FE7C;FE7C;0020 0651;0020 0651;
+FE7D;FE7D;FE7D;0640 0651;0640 0651;
+FE7E;FE7E;FE7E;0020 0652;0020 0652;
+FE7F;FE7F;FE7F;0640 0652;0640 0652;
+FE80;FE80;FE80;0621;0621;
+FE81;FE81;FE81;0622;0627 0653;
+FE82;FE82;FE82;0622;0627 0653;
+FE83;FE83;FE83;0623;0627 0654;
+FE84;FE84;FE84;0623;0627 0654;
+FE85;FE85;FE85;0624;0648 0654;
+FE86;FE86;FE86;0624;0648 0654;
+FE87;FE87;FE87;0625;0627 0655;
+FE88;FE88;FE88;0625;0627 0655;
+FE89;FE89;FE89;0626;064A 0654;
+FE8A;FE8A;FE8A;0626;064A 0654;
+FE8B;FE8B;FE8B;0626;064A 0654;
+FE8C;FE8C;FE8C;0626;064A 0654;
+FE8D;FE8D;FE8D;0627;0627;
+FE8E;FE8E;FE8E;0627;0627;
+FE8F;FE8F;FE8F;0628;0628;
+FE90;FE90;FE90;0628;0628;
+FE91;FE91;FE91;0628;0628;
+FE92;FE92;FE92;0628;0628;
+FE93;FE93;FE93;0629;0629;
+FE94;FE94;FE94;0629;0629;
+FE95;FE95;FE95;062A;062A;
+FE96;FE96;FE96;062A;062A;
+FE97;FE97;FE97;062A;062A;
+FE98;FE98;FE98;062A;062A;
+FE99;FE99;FE99;062B;062B;
+FE9A;FE9A;FE9A;062B;062B;
+FE9B;FE9B;FE9B;062B;062B;
+FE9C;FE9C;FE9C;062B;062B;
+FE9D;FE9D;FE9D;062C;062C;
+FE9E;FE9E;FE9E;062C;062C;
+FE9F;FE9F;FE9F;062C;062C;
+FEA0;FEA0;FEA0;062C;062C;
+FEA1;FEA1;FEA1;062D;062D;
+FEA2;FEA2;FEA2;062D;062D;
+FEA3;FEA3;FEA3;062D;062D;
+FEA4;FEA4;FEA4;062D;062D;
+FEA5;FEA5;FEA5;062E;062E;
+FEA6;FEA6;FEA6;062E;062E;
+FEA7;FEA7;FEA7;062E;062E;
+FEA8;FEA8;FEA8;062E;062E;
+FEA9;FEA9;FEA9;062F;062F;
+FEAA;FEAA;FEAA;062F;062F;
+FEAB;FEAB;FEAB;0630;0630;
+FEAC;FEAC;FEAC;0630;0630;
+FEAD;FEAD;FEAD;0631;0631;
+FEAE;FEAE;FEAE;0631;0631;
+FEAF;FEAF;FEAF;0632;0632;
+FEB0;FEB0;FEB0;0632;0632;
+FEB1;FEB1;FEB1;0633;0633;
+FEB2;FEB2;FEB2;0633;0633;
+FEB3;FEB3;FEB3;0633;0633;
+FEB4;FEB4;FEB4;0633;0633;
+FEB5;FEB5;FEB5;0634;0634;
+FEB6;FEB6;FEB6;0634;0634;
+FEB7;FEB7;FEB7;0634;0634;
+FEB8;FEB8;FEB8;0634;0634;
+FEB9;FEB9;FEB9;0635;0635;
+FEBA;FEBA;FEBA;0635;0635;
+FEBB;FEBB;FEBB;0635;0635;
+FEBC;FEBC;FEBC;0635;0635;
+FEBD;FEBD;FEBD;0636;0636;
+FEBE;FEBE;FEBE;0636;0636;
+FEBF;FEBF;FEBF;0636;0636;
+FEC0;FEC0;FEC0;0636;0636;
+FEC1;FEC1;FEC1;0637;0637;
+FEC2;FEC2;FEC2;0637;0637;
+FEC3;FEC3;FEC3;0637;0637;
+FEC4;FEC4;FEC4;0637;0637;
+FEC5;FEC5;FEC5;0638;0638;
+FEC6;FEC6;FEC6;0638;0638;
+FEC7;FEC7;FEC7;0638;0638;
+FEC8;FEC8;FEC8;0638;0638;
+FEC9;FEC9;FEC9;0639;0639;
+FECA;FECA;FECA;0639;0639;
+FECB;FECB;FECB;0639;0639;
+FECC;FECC;FECC;0639;0639;
+FECD;FECD;FECD;063A;063A;
+FECE;FECE;FECE;063A;063A;
+FECF;FECF;FECF;063A;063A;
+FED0;FED0;FED0;063A;063A;
+FED1;FED1;FED1;0641;0641;
+FED2;FED2;FED2;0641;0641;
+FED3;FED3;FED3;0641;0641;
+FED4;FED4;FED4;0641;0641;
+FED5;FED5;FED5;0642;0642;
+FED6;FED6;FED6;0642;0642;
+FED7;FED7;FED7;0642;0642;
+FED8;FED8;FED8;0642;0642;
+FED9;FED9;FED9;0643;0643;
+FEDA;FEDA;FEDA;0643;0643;
+FEDB;FEDB;FEDB;0643;0643;
+FEDC;FEDC;FEDC;0643;0643;
+FEDD;FEDD;FEDD;0644;0644;
+FEDE;FEDE;FEDE;0644;0644;
+FEDF;FEDF;FEDF;0644;0644;
+FEE0;FEE0;FEE0;0644;0644;
+FEE1;FEE1;FEE1;0645;0645;
+FEE2;FEE2;FEE2;0645;0645;
+FEE3;FEE3;FEE3;0645;0645;
+FEE4;FEE4;FEE4;0645;0645;
+FEE5;FEE5;FEE5;0646;0646;
+FEE6;FEE6;FEE6;0646;0646;
+FEE7;FEE7;FEE7;0646;0646;
+FEE8;FEE8;FEE8;0646;0646;
+FEE9;FEE9;FEE9;0647;0647;
+FEEA;FEEA;FEEA;0647;0647;
+FEEB;FEEB;FEEB;0647;0647;
+FEEC;FEEC;FEEC;0647;0647;
+FEED;FEED;FEED;0648;0648;
+FEEE;FEEE;FEEE;0648;0648;
+FEEF;FEEF;FEEF;0649;0649;
+FEF0;FEF0;FEF0;0649;0649;
+FEF1;FEF1;FEF1;064A;064A;
+FEF2;FEF2;FEF2;064A;064A;
+FEF3;FEF3;FEF3;064A;064A;
+FEF4;FEF4;FEF4;064A;064A;
+FEF5;FEF5;FEF5;0644 0622;0644 0627 0653;
+FEF6;FEF6;FEF6;0644 0622;0644 0627 0653;
+FEF7;FEF7;FEF7;0644 0623;0644 0627 0654;
+FEF8;FEF8;FEF8;0644 0623;0644 0627 0654;
+FEF9;FEF9;FEF9;0644 0625;0644 0627 0655;
+FEFA;FEFA;FEFA;0644 0625;0644 0627 0655;
+FEFB;FEFB;FEFB;0644 0627;0644 0627;
+FEFC;FEFC;FEFC;0644 0627;0644 0627;
+FF01;FF01;FF01;0021;0021;
+FF02;FF02;FF02;0022;0022;
+FF03;FF03;FF03;0023;0023;
+FF04;FF04;FF04;0024;0024;
+FF05;FF05;FF05;0025;0025;
+FF06;FF06;FF06;0026;0026;
+FF07;FF07;FF07;0027;0027;
+FF08;FF08;FF08;0028;0028;
+FF09;FF09;FF09;0029;0029;
+FF0A;FF0A;FF0A;002A;002A;
+FF0B;FF0B;FF0B;002B;002B;
+FF0C;FF0C;FF0C;002C;002C;
+FF0D;FF0D;FF0D;002D;002D;
+FF0E;FF0E;FF0E;002E;002E;
+FF0F;FF0F;FF0F;002F;002F;
+FF10;FF10;FF10;0030;0030;
+FF11;FF11;FF11;0031;0031;
+FF12;FF12;FF12;0032;0032;
+FF13;FF13;FF13;0033;0033;
+FF14;FF14;FF14;0034;0034;
+FF15;FF15;FF15;0035;0035;
+FF16;FF16;FF16;0036;0036;
+FF17;FF17;FF17;0037;0037;
+FF18;FF18;FF18;0038;0038;
+FF19;FF19;FF19;0039;0039;
+FF1A;FF1A;FF1A;003A;003A;
+FF1B;FF1B;FF1B;003B;003B;
+FF1C;FF1C;FF1C;003C;003C;
+FF1D;FF1D;FF1D;003D;003D;
+FF1E;FF1E;FF1E;003E;003E;
+FF1F;FF1F;FF1F;003F;003F;
+FF20;FF20;FF20;0040;0040;
+FF21;FF21;FF21;0041;0041;
+FF22;FF22;FF22;0042;0042;
+FF23;FF23;FF23;0043;0043;
+FF24;FF24;FF24;0044;0044;
+FF25;FF25;FF25;0045;0045;
+FF26;FF26;FF26;0046;0046;
+FF27;FF27;FF27;0047;0047;
+FF28;FF28;FF28;0048;0048;
+FF29;FF29;FF29;0049;0049;
+FF2A;FF2A;FF2A;004A;004A;
+FF2B;FF2B;FF2B;004B;004B;
+FF2C;FF2C;FF2C;004C;004C;
+FF2D;FF2D;FF2D;004D;004D;
+FF2E;FF2E;FF2E;004E;004E;
+FF2F;FF2F;FF2F;004F;004F;
+FF30;FF30;FF30;0050;0050;
+FF31;FF31;FF31;0051;0051;
+FF32;FF32;FF32;0052;0052;
+FF33;FF33;FF33;0053;0053;
+FF34;FF34;FF34;0054;0054;
+FF35;FF35;FF35;0055;0055;
+FF36;FF36;FF36;0056;0056;
+FF37;FF37;FF37;0057;0057;
+FF38;FF38;FF38;0058;0058;
+FF39;FF39;FF39;0059;0059;
+FF3A;FF3A;FF3A;005A;005A;
+FF3B;FF3B;FF3B;005B;005B;
+FF3C;FF3C;FF3C;005C;005C;
+FF3D;FF3D;FF3D;005D;005D;
+FF3E;FF3E;FF3E;005E;005E;
+FF3F;FF3F;FF3F;005F;005F;
+FF40;FF40;FF40;0060;0060;
+FF41;FF41;FF41;0061;0061;
+FF42;FF42;FF42;0062;0062;
+FF43;FF43;FF43;0063;0063;
+FF44;FF44;FF44;0064;0064;
+FF45;FF45;FF45;0065;0065;
+FF46;FF46;FF46;0066;0066;
+FF47;FF47;FF47;0067;0067;
+FF48;FF48;FF48;0068;0068;
+FF49;FF49;FF49;0069;0069;
+FF4A;FF4A;FF4A;006A;006A;
+FF4B;FF4B;FF4B;006B;006B;
+FF4C;FF4C;FF4C;006C;006C;
+FF4D;FF4D;FF4D;006D;006D;
+FF4E;FF4E;FF4E;006E;006E;
+FF4F;FF4F;FF4F;006F;006F;
+FF50;FF50;FF50;0070;0070;
+FF51;FF51;FF51;0071;0071;
+FF52;FF52;FF52;0072;0072;
+FF53;FF53;FF53;0073;0073;
+FF54;FF54;FF54;0074;0074;
+FF55;FF55;FF55;0075;0075;
+FF56;FF56;FF56;0076;0076;
+FF57;FF57;FF57;0077;0077;
+FF58;FF58;FF58;0078;0078;
+FF59;FF59;FF59;0079;0079;
+FF5A;FF5A;FF5A;007A;007A;
+FF5B;FF5B;FF5B;007B;007B;
+FF5C;FF5C;FF5C;007C;007C;
+FF5D;FF5D;FF5D;007D;007D;
+FF5E;FF5E;FF5E;007E;007E;
+FF5F;FF5F;FF5F;2985;2985;
+FF60;FF60;FF60;2986;2986;
+FF61;FF61;FF61;3002;3002;
+FF62;FF62;FF62;300C;300C;
+FF63;FF63;FF63;300D;300D;
+FF64;FF64;FF64;3001;3001;
+FF65;FF65;FF65;30FB;30FB;
+FF66;FF66;FF66;30F2;30F2;
+FF67;FF67;FF67;30A1;30A1;
+FF68;FF68;FF68;30A3;30A3;
+FF69;FF69;FF69;30A5;30A5;
+FF6A;FF6A;FF6A;30A7;30A7;
+FF6B;FF6B;FF6B;30A9;30A9;
+FF6C;FF6C;FF6C;30E3;30E3;
+FF6D;FF6D;FF6D;30E5;30E5;
+FF6E;FF6E;FF6E;30E7;30E7;
+FF6F;FF6F;FF6F;30C3;30C3;
+FF70;FF70;FF70;30FC;30FC;
+FF71;FF71;FF71;30A2;30A2;
+FF72;FF72;FF72;30A4;30A4;
+FF73;FF73;FF73;30A6;30A6;
+FF74;FF74;FF74;30A8;30A8;
+FF75;FF75;FF75;30AA;30AA;
+FF76;FF76;FF76;30AB;30AB;
+FF77;FF77;FF77;30AD;30AD;
+FF78;FF78;FF78;30AF;30AF;
+FF79;FF79;FF79;30B1;30B1;
+FF7A;FF7A;FF7A;30B3;30B3;
+FF7B;FF7B;FF7B;30B5;30B5;
+FF7C;FF7C;FF7C;30B7;30B7;
+FF7D;FF7D;FF7D;30B9;30B9;
+FF7E;FF7E;FF7E;30BB;30BB;
+FF7F;FF7F;FF7F;30BD;30BD;
+FF80;FF80;FF80;30BF;30BF;
+FF81;FF81;FF81;30C1;30C1;
+FF82;FF82;FF82;30C4;30C4;
+FF83;FF83;FF83;30C6;30C6;
+FF84;FF84;FF84;30C8;30C8;
+FF85;FF85;FF85;30CA;30CA;
+FF86;FF86;FF86;30CB;30CB;
+FF87;FF87;FF87;30CC;30CC;
+FF88;FF88;FF88;30CD;30CD;
+FF89;FF89;FF89;30CE;30CE;
+FF8A;FF8A;FF8A;30CF;30CF;
+FF8B;FF8B;FF8B;30D2;30D2;
+FF8C;FF8C;FF8C;30D5;30D5;
+FF8D;FF8D;FF8D;30D8;30D8;
+FF8E;FF8E;FF8E;30DB;30DB;
+FF8F;FF8F;FF8F;30DE;30DE;
+FF90;FF90;FF90;30DF;30DF;
+FF91;FF91;FF91;30E0;30E0;
+FF92;FF92;FF92;30E1;30E1;
+FF93;FF93;FF93;30E2;30E2;
+FF94;FF94;FF94;30E4;30E4;
+FF95;FF95;FF95;30E6;30E6;
+FF96;FF96;FF96;30E8;30E8;
+FF97;FF97;FF97;30E9;30E9;
+FF98;FF98;FF98;30EA;30EA;
+FF99;FF99;FF99;30EB;30EB;
+FF9A;FF9A;FF9A;30EC;30EC;
+FF9B;FF9B;FF9B;30ED;30ED;
+FF9C;FF9C;FF9C;30EF;30EF;
+FF9D;FF9D;FF9D;30F3;30F3;
+FF9E;FF9E;FF9E;3099;3099;
+FF9F;FF9F;FF9F;309A;309A;
+FFA0;FFA0;FFA0;1160;1160;
+FFA1;FFA1;FFA1;1100;1100;
+FFA2;FFA2;FFA2;1101;1101;
+FFA3;FFA3;FFA3;11AA;11AA;
+FFA4;FFA4;FFA4;1102;1102;
+FFA5;FFA5;FFA5;11AC;11AC;
+FFA6;FFA6;FFA6;11AD;11AD;
+FFA7;FFA7;FFA7;1103;1103;
+FFA8;FFA8;FFA8;1104;1104;
+FFA9;FFA9;FFA9;1105;1105;
+FFAA;FFAA;FFAA;11B0;11B0;
+FFAB;FFAB;FFAB;11B1;11B1;
+FFAC;FFAC;FFAC;11B2;11B2;
+FFAD;FFAD;FFAD;11B3;11B3;
+FFAE;FFAE;FFAE;11B4;11B4;
+FFAF;FFAF;FFAF;11B5;11B5;
+FFB0;FFB0;FFB0;111A;111A;
+FFB1;FFB1;FFB1;1106;1106;
+FFB2;FFB2;FFB2;1107;1107;
+FFB3;FFB3;FFB3;1108;1108;
+FFB4;FFB4;FFB4;1121;1121;
+FFB5;FFB5;FFB5;1109;1109;
+FFB6;FFB6;FFB6;110A;110A;
+FFB7;FFB7;FFB7;110B;110B;
+FFB8;FFB8;FFB8;110C;110C;
+FFB9;FFB9;FFB9;110D;110D;
+FFBA;FFBA;FFBA;110E;110E;
+FFBB;FFBB;FFBB;110F;110F;
+FFBC;FFBC;FFBC;1110;1110;
+FFBD;FFBD;FFBD;1111;1111;
+FFBE;FFBE;FFBE;1112;1112;
+FFC2;FFC2;FFC2;1161;1161;
+FFC3;FFC3;FFC3;1162;1162;
+FFC4;FFC4;FFC4;1163;1163;
+FFC5;FFC5;FFC5;1164;1164;
+FFC6;FFC6;FFC6;1165;1165;
+FFC7;FFC7;FFC7;1166;1166;
+FFCA;FFCA;FFCA;1167;1167;
+FFCB;FFCB;FFCB;1168;1168;
+FFCC;FFCC;FFCC;1169;1169;
+FFCD;FFCD;FFCD;116A;116A;
+FFCE;FFCE;FFCE;116B;116B;
+FFCF;FFCF;FFCF;116C;116C;
+FFD2;FFD2;FFD2;116D;116D;
+FFD3;FFD3;FFD3;116E;116E;
+FFD4;FFD4;FFD4;116F;116F;
+FFD5;FFD5;FFD5;1170;1170;
+FFD6;FFD6;FFD6;1171;1171;
+FFD7;FFD7;FFD7;1172;1172;
+FFDA;FFDA;FFDA;1173;1173;
+FFDB;FFDB;FFDB;1174;1174;
+FFDC;FFDC;FFDC;1175;1175;
+FFE0;FFE0;FFE0;00A2;00A2;
+FFE1;FFE1;FFE1;00A3;00A3;
+FFE2;FFE2;FFE2;00AC;00AC;
+FFE3;FFE3;FFE3;0020 0304;0020 0304;
+FFE4;FFE4;FFE4;00A6;00A6;
+FFE5;FFE5;FFE5;00A5;00A5;
+FFE6;FFE6;FFE6;20A9;20A9;
+FFE8;FFE8;FFE8;2502;2502;
+FFE9;FFE9;FFE9;2190;2190;
+FFEA;FFEA;FFEA;2191;2191;
+FFEB;FFEB;FFEB;2192;2192;
+FFEC;FFEC;FFEC;2193;2193;
+FFED;FFED;FFED;25A0;25A0;
+FFEE;FFEE;FFEE;25CB;25CB;
+1D15E;1D157 1D165;1D157 1D165;1D157 1D165;1D157 1D165;
+1D15F;1D158 1D165;1D158 1D165;1D158 1D165;1D158 1D165;
+1D160;1D158 1D165 1D16E;1D158 1D165 1D16E;1D158 1D165 1D16E;1D158 1D165 1D16E;
+1D161;1D158 1D165 1D16F;1D158 1D165 1D16F;1D158 1D165 1D16F;1D158 1D165 1D16F;
+1D162;1D158 1D165 1D170;1D158 1D165 1D170;1D158 1D165 1D170;1D158 1D165 1D170;
+1D163;1D158 1D165 1D171;1D158 1D165 1D171;1D158 1D165 1D171;1D158 1D165 1D171;
+1D164;1D158 1D165 1D172;1D158 1D165 1D172;1D158 1D165 1D172;1D158 1D165 1D172;
+1D1BB;1D1B9 1D165;1D1B9 1D165;1D1B9 1D165;1D1B9 1D165;
+1D1BC;1D1BA 1D165;1D1BA 1D165;1D1BA 1D165;1D1BA 1D165;
+1D1BD;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;
+1D1BE;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;
+1D1BF;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;
+1D1C0;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;
+1D400;1D400;1D400;0041;0041;
+1D401;1D401;1D401;0042;0042;
+1D402;1D402;1D402;0043;0043;
+1D403;1D403;1D403;0044;0044;
+1D404;1D404;1D404;0045;0045;
+1D405;1D405;1D405;0046;0046;
+1D406;1D406;1D406;0047;0047;
+1D407;1D407;1D407;0048;0048;
+1D408;1D408;1D408;0049;0049;
+1D409;1D409;1D409;004A;004A;
+1D40A;1D40A;1D40A;004B;004B;
+1D40B;1D40B;1D40B;004C;004C;
+1D40C;1D40C;1D40C;004D;004D;
+1D40D;1D40D;1D40D;004E;004E;
+1D40E;1D40E;1D40E;004F;004F;
+1D40F;1D40F;1D40F;0050;0050;
+1D410;1D410;1D410;0051;0051;
+1D411;1D411;1D411;0052;0052;
+1D412;1D412;1D412;0053;0053;
+1D413;1D413;1D413;0054;0054;
+1D414;1D414;1D414;0055;0055;
+1D415;1D415;1D415;0056;0056;
+1D416;1D416;1D416;0057;0057;
+1D417;1D417;1D417;0058;0058;
+1D418;1D418;1D418;0059;0059;
+1D419;1D419;1D419;005A;005A;
+1D41A;1D41A;1D41A;0061;0061;
+1D41B;1D41B;1D41B;0062;0062;
+1D41C;1D41C;1D41C;0063;0063;
+1D41D;1D41D;1D41D;0064;0064;
+1D41E;1D41E;1D41E;0065;0065;
+1D41F;1D41F;1D41F;0066;0066;
+1D420;1D420;1D420;0067;0067;
+1D421;1D421;1D421;0068;0068;
+1D422;1D422;1D422;0069;0069;
+1D423;1D423;1D423;006A;006A;
+1D424;1D424;1D424;006B;006B;
+1D425;1D425;1D425;006C;006C;
+1D426;1D426;1D426;006D;006D;
+1D427;1D427;1D427;006E;006E;
+1D428;1D428;1D428;006F;006F;
+1D429;1D429;1D429;0070;0070;
+1D42A;1D42A;1D42A;0071;0071;
+1D42B;1D42B;1D42B;0072;0072;
+1D42C;1D42C;1D42C;0073;0073;
+1D42D;1D42D;1D42D;0074;0074;
+1D42E;1D42E;1D42E;0075;0075;
+1D42F;1D42F;1D42F;0076;0076;
+1D430;1D430;1D430;0077;0077;
+1D431;1D431;1D431;0078;0078;
+1D432;1D432;1D432;0079;0079;
+1D433;1D433;1D433;007A;007A;
+1D434;1D434;1D434;0041;0041;
+1D435;1D435;1D435;0042;0042;
+1D436;1D436;1D436;0043;0043;
+1D437;1D437;1D437;0044;0044;
+1D438;1D438;1D438;0045;0045;
+1D439;1D439;1D439;0046;0046;
+1D43A;1D43A;1D43A;0047;0047;
+1D43B;1D43B;1D43B;0048;0048;
+1D43C;1D43C;1D43C;0049;0049;
+1D43D;1D43D;1D43D;004A;004A;
+1D43E;1D43E;1D43E;004B;004B;
+1D43F;1D43F;1D43F;004C;004C;
+1D440;1D440;1D440;004D;004D;
+1D441;1D441;1D441;004E;004E;
+1D442;1D442;1D442;004F;004F;
+1D443;1D443;1D443;0050;0050;
+1D444;1D444;1D444;0051;0051;
+1D445;1D445;1D445;0052;0052;
+1D446;1D446;1D446;0053;0053;
+1D447;1D447;1D447;0054;0054;
+1D448;1D448;1D448;0055;0055;
+1D449;1D449;1D449;0056;0056;
+1D44A;1D44A;1D44A;0057;0057;
+1D44B;1D44B;1D44B;0058;0058;
+1D44C;1D44C;1D44C;0059;0059;
+1D44D;1D44D;1D44D;005A;005A;
+1D44E;1D44E;1D44E;0061;0061;
+1D44F;1D44F;1D44F;0062;0062;
+1D450;1D450;1D450;0063;0063;
+1D451;1D451;1D451;0064;0064;
+1D452;1D452;1D452;0065;0065;
+1D453;1D453;1D453;0066;0066;
+1D454;1D454;1D454;0067;0067;
+1D456;1D456;1D456;0069;0069;
+1D457;1D457;1D457;006A;006A;
+1D458;1D458;1D458;006B;006B;
+1D459;1D459;1D459;006C;006C;
+1D45A;1D45A;1D45A;006D;006D;
+1D45B;1D45B;1D45B;006E;006E;
+1D45C;1D45C;1D45C;006F;006F;
+1D45D;1D45D;1D45D;0070;0070;
+1D45E;1D45E;1D45E;0071;0071;
+1D45F;1D45F;1D45F;0072;0072;
+1D460;1D460;1D460;0073;0073;
+1D461;1D461;1D461;0074;0074;
+1D462;1D462;1D462;0075;0075;
+1D463;1D463;1D463;0076;0076;
+1D464;1D464;1D464;0077;0077;
+1D465;1D465;1D465;0078;0078;
+1D466;1D466;1D466;0079;0079;
+1D467;1D467;1D467;007A;007A;
+1D468;1D468;1D468;0041;0041;
+1D469;1D469;1D469;0042;0042;
+1D46A;1D46A;1D46A;0043;0043;
+1D46B;1D46B;1D46B;0044;0044;
+1D46C;1D46C;1D46C;0045;0045;
+1D46D;1D46D;1D46D;0046;0046;
+1D46E;1D46E;1D46E;0047;0047;
+1D46F;1D46F;1D46F;0048;0048;
+1D470;1D470;1D470;0049;0049;
+1D471;1D471;1D471;004A;004A;
+1D472;1D472;1D472;004B;004B;
+1D473;1D473;1D473;004C;004C;
+1D474;1D474;1D474;004D;004D;
+1D475;1D475;1D475;004E;004E;
+1D476;1D476;1D476;004F;004F;
+1D477;1D477;1D477;0050;0050;
+1D478;1D478;1D478;0051;0051;
+1D479;1D479;1D479;0052;0052;
+1D47A;1D47A;1D47A;0053;0053;
+1D47B;1D47B;1D47B;0054;0054;
+1D47C;1D47C;1D47C;0055;0055;
+1D47D;1D47D;1D47D;0056;0056;
+1D47E;1D47E;1D47E;0057;0057;
+1D47F;1D47F;1D47F;0058;0058;
+1D480;1D480;1D480;0059;0059;
+1D481;1D481;1D481;005A;005A;
+1D482;1D482;1D482;0061;0061;
+1D483;1D483;1D483;0062;0062;
+1D484;1D484;1D484;0063;0063;
+1D485;1D485;1D485;0064;0064;
+1D486;1D486;1D486;0065;0065;
+1D487;1D487;1D487;0066;0066;
+1D488;1D488;1D488;0067;0067;
+1D489;1D489;1D489;0068;0068;
+1D48A;1D48A;1D48A;0069;0069;
+1D48B;1D48B;1D48B;006A;006A;
+1D48C;1D48C;1D48C;006B;006B;
+1D48D;1D48D;1D48D;006C;006C;
+1D48E;1D48E;1D48E;006D;006D;
+1D48F;1D48F;1D48F;006E;006E;
+1D490;1D490;1D490;006F;006F;
+1D491;1D491;1D491;0070;0070;
+1D492;1D492;1D492;0071;0071;
+1D493;1D493;1D493;0072;0072;
+1D494;1D494;1D494;0073;0073;
+1D495;1D495;1D495;0074;0074;
+1D496;1D496;1D496;0075;0075;
+1D497;1D497;1D497;0076;0076;
+1D498;1D498;1D498;0077;0077;
+1D499;1D499;1D499;0078;0078;
+1D49A;1D49A;1D49A;0079;0079;
+1D49B;1D49B;1D49B;007A;007A;
+1D49C;1D49C;1D49C;0041;0041;
+1D49E;1D49E;1D49E;0043;0043;
+1D49F;1D49F;1D49F;0044;0044;
+1D4A2;1D4A2;1D4A2;0047;0047;
+1D4A5;1D4A5;1D4A5;004A;004A;
+1D4A6;1D4A6;1D4A6;004B;004B;
+1D4A9;1D4A9;1D4A9;004E;004E;
+1D4AA;1D4AA;1D4AA;004F;004F;
+1D4AB;1D4AB;1D4AB;0050;0050;
+1D4AC;1D4AC;1D4AC;0051;0051;
+1D4AE;1D4AE;1D4AE;0053;0053;
+1D4AF;1D4AF;1D4AF;0054;0054;
+1D4B0;1D4B0;1D4B0;0055;0055;
+1D4B1;1D4B1;1D4B1;0056;0056;
+1D4B2;1D4B2;1D4B2;0057;0057;
+1D4B3;1D4B3;1D4B3;0058;0058;
+1D4B4;1D4B4;1D4B4;0059;0059;
+1D4B5;1D4B5;1D4B5;005A;005A;
+1D4B6;1D4B6;1D4B6;0061;0061;
+1D4B7;1D4B7;1D4B7;0062;0062;
+1D4B8;1D4B8;1D4B8;0063;0063;
+1D4B9;1D4B9;1D4B9;0064;0064;
+1D4BB;1D4BB;1D4BB;0066;0066;
+1D4BD;1D4BD;1D4BD;0068;0068;
+1D4BE;1D4BE;1D4BE;0069;0069;
+1D4BF;1D4BF;1D4BF;006A;006A;
+1D4C0;1D4C0;1D4C0;006B;006B;
+1D4C2;1D4C2;1D4C2;006D;006D;
+1D4C3;1D4C3;1D4C3;006E;006E;
+1D4C5;1D4C5;1D4C5;0070;0070;
+1D4C6;1D4C6;1D4C6;0071;0071;
+1D4C7;1D4C7;1D4C7;0072;0072;
+1D4C8;1D4C8;1D4C8;0073;0073;
+1D4C9;1D4C9;1D4C9;0074;0074;
+1D4CA;1D4CA;1D4CA;0075;0075;
+1D4CB;1D4CB;1D4CB;0076;0076;
+1D4CC;1D4CC;1D4CC;0077;0077;
+1D4CD;1D4CD;1D4CD;0078;0078;
+1D4CE;1D4CE;1D4CE;0079;0079;
+1D4CF;1D4CF;1D4CF;007A;007A;
+1D4D0;1D4D0;1D4D0;0041;0041;
+1D4D1;1D4D1;1D4D1;0042;0042;
+1D4D2;1D4D2;1D4D2;0043;0043;
+1D4D3;1D4D3;1D4D3;0044;0044;
+1D4D4;1D4D4;1D4D4;0045;0045;
+1D4D5;1D4D5;1D4D5;0046;0046;
+1D4D6;1D4D6;1D4D6;0047;0047;
+1D4D7;1D4D7;1D4D7;0048;0048;
+1D4D8;1D4D8;1D4D8;0049;0049;
+1D4D9;1D4D9;1D4D9;004A;004A;
+1D4DA;1D4DA;1D4DA;004B;004B;
+1D4DB;1D4DB;1D4DB;004C;004C;
+1D4DC;1D4DC;1D4DC;004D;004D;
+1D4DD;1D4DD;1D4DD;004E;004E;
+1D4DE;1D4DE;1D4DE;004F;004F;
+1D4DF;1D4DF;1D4DF;0050;0050;
+1D4E0;1D4E0;1D4E0;0051;0051;
+1D4E1;1D4E1;1D4E1;0052;0052;
+1D4E2;1D4E2;1D4E2;0053;0053;
+1D4E3;1D4E3;1D4E3;0054;0054;
+1D4E4;1D4E4;1D4E4;0055;0055;
+1D4E5;1D4E5;1D4E5;0056;0056;
+1D4E6;1D4E6;1D4E6;0057;0057;
+1D4E7;1D4E7;1D4E7;0058;0058;
+1D4E8;1D4E8;1D4E8;0059;0059;
+1D4E9;1D4E9;1D4E9;005A;005A;
+1D4EA;1D4EA;1D4EA;0061;0061;
+1D4EB;1D4EB;1D4EB;0062;0062;
+1D4EC;1D4EC;1D4EC;0063;0063;
+1D4ED;1D4ED;1D4ED;0064;0064;
+1D4EE;1D4EE;1D4EE;0065;0065;
+1D4EF;1D4EF;1D4EF;0066;0066;
+1D4F0;1D4F0;1D4F0;0067;0067;
+1D4F1;1D4F1;1D4F1;0068;0068;
+1D4F2;1D4F2;1D4F2;0069;0069;
+1D4F3;1D4F3;1D4F3;006A;006A;
+1D4F4;1D4F4;1D4F4;006B;006B;
+1D4F5;1D4F5;1D4F5;006C;006C;
+1D4F6;1D4F6;1D4F6;006D;006D;
+1D4F7;1D4F7;1D4F7;006E;006E;
+1D4F8;1D4F8;1D4F8;006F;006F;
+1D4F9;1D4F9;1D4F9;0070;0070;
+1D4FA;1D4FA;1D4FA;0071;0071;
+1D4FB;1D4FB;1D4FB;0072;0072;
+1D4FC;1D4FC;1D4FC;0073;0073;
+1D4FD;1D4FD;1D4FD;0074;0074;
+1D4FE;1D4FE;1D4FE;0075;0075;
+1D4FF;1D4FF;1D4FF;0076;0076;
+1D500;1D500;1D500;0077;0077;
+1D501;1D501;1D501;0078;0078;
+1D502;1D502;1D502;0079;0079;
+1D503;1D503;1D503;007A;007A;
+1D504;1D504;1D504;0041;0041;
+1D505;1D505;1D505;0042;0042;
+1D507;1D507;1D507;0044;0044;
+1D508;1D508;1D508;0045;0045;
+1D509;1D509;1D509;0046;0046;
+1D50A;1D50A;1D50A;0047;0047;
+1D50D;1D50D;1D50D;004A;004A;
+1D50E;1D50E;1D50E;004B;004B;
+1D50F;1D50F;1D50F;004C;004C;
+1D510;1D510;1D510;004D;004D;
+1D511;1D511;1D511;004E;004E;
+1D512;1D512;1D512;004F;004F;
+1D513;1D513;1D513;0050;0050;
+1D514;1D514;1D514;0051;0051;
+1D516;1D516;1D516;0053;0053;
+1D517;1D517;1D517;0054;0054;
+1D518;1D518;1D518;0055;0055;
+1D519;1D519;1D519;0056;0056;
+1D51A;1D51A;1D51A;0057;0057;
+1D51B;1D51B;1D51B;0058;0058;
+1D51C;1D51C;1D51C;0059;0059;
+1D51E;1D51E;1D51E;0061;0061;
+1D51F;1D51F;1D51F;0062;0062;
+1D520;1D520;1D520;0063;0063;
+1D521;1D521;1D521;0064;0064;
+1D522;1D522;1D522;0065;0065;
+1D523;1D523;1D523;0066;0066;
+1D524;1D524;1D524;0067;0067;
+1D525;1D525;1D525;0068;0068;
+1D526;1D526;1D526;0069;0069;
+1D527;1D527;1D527;006A;006A;
+1D528;1D528;1D528;006B;006B;
+1D529;1D529;1D529;006C;006C;
+1D52A;1D52A;1D52A;006D;006D;
+1D52B;1D52B;1D52B;006E;006E;
+1D52C;1D52C;1D52C;006F;006F;
+1D52D;1D52D;1D52D;0070;0070;
+1D52E;1D52E;1D52E;0071;0071;
+1D52F;1D52F;1D52F;0072;0072;
+1D530;1D530;1D530;0073;0073;
+1D531;1D531;1D531;0074;0074;
+1D532;1D532;1D532;0075;0075;
+1D533;1D533;1D533;0076;0076;
+1D534;1D534;1D534;0077;0077;
+1D535;1D535;1D535;0078;0078;
+1D536;1D536;1D536;0079;0079;
+1D537;1D537;1D537;007A;007A;
+1D538;1D538;1D538;0041;0041;
+1D539;1D539;1D539;0042;0042;
+1D53B;1D53B;1D53B;0044;0044;
+1D53C;1D53C;1D53C;0045;0045;
+1D53D;1D53D;1D53D;0046;0046;
+1D53E;1D53E;1D53E;0047;0047;
+1D540;1D540;1D540;0049;0049;
+1D541;1D541;1D541;004A;004A;
+1D542;1D542;1D542;004B;004B;
+1D543;1D543;1D543;004C;004C;
+1D544;1D544;1D544;004D;004D;
+1D546;1D546;1D546;004F;004F;
+1D54A;1D54A;1D54A;0053;0053;
+1D54B;1D54B;1D54B;0054;0054;
+1D54C;1D54C;1D54C;0055;0055;
+1D54D;1D54D;1D54D;0056;0056;
+1D54E;1D54E;1D54E;0057;0057;
+1D54F;1D54F;1D54F;0058;0058;
+1D550;1D550;1D550;0059;0059;
+1D552;1D552;1D552;0061;0061;
+1D553;1D553;1D553;0062;0062;
+1D554;1D554;1D554;0063;0063;
+1D555;1D555;1D555;0064;0064;
+1D556;1D556;1D556;0065;0065;
+1D557;1D557;1D557;0066;0066;
+1D558;1D558;1D558;0067;0067;
+1D559;1D559;1D559;0068;0068;
+1D55A;1D55A;1D55A;0069;0069;
+1D55B;1D55B;1D55B;006A;006A;
+1D55C;1D55C;1D55C;006B;006B;
+1D55D;1D55D;1D55D;006C;006C;
+1D55E;1D55E;1D55E;006D;006D;
+1D55F;1D55F;1D55F;006E;006E;
+1D560;1D560;1D560;006F;006F;
+1D561;1D561;1D561;0070;0070;
+1D562;1D562;1D562;0071;0071;
+1D563;1D563;1D563;0072;0072;
+1D564;1D564;1D564;0073;0073;
+1D565;1D565;1D565;0074;0074;
+1D566;1D566;1D566;0075;0075;
+1D567;1D567;1D567;0076;0076;
+1D568;1D568;1D568;0077;0077;
+1D569;1D569;1D569;0078;0078;
+1D56A;1D56A;1D56A;0079;0079;
+1D56B;1D56B;1D56B;007A;007A;
+1D56C;1D56C;1D56C;0041;0041;
+1D56D;1D56D;1D56D;0042;0042;
+1D56E;1D56E;1D56E;0043;0043;
+1D56F;1D56F;1D56F;0044;0044;
+1D570;1D570;1D570;0045;0045;
+1D571;1D571;1D571;0046;0046;
+1D572;1D572;1D572;0047;0047;
+1D573;1D573;1D573;0048;0048;
+1D574;1D574;1D574;0049;0049;
+1D575;1D575;1D575;004A;004A;
+1D576;1D576;1D576;004B;004B;
+1D577;1D577;1D577;004C;004C;
+1D578;1D578;1D578;004D;004D;
+1D579;1D579;1D579;004E;004E;
+1D57A;1D57A;1D57A;004F;004F;
+1D57B;1D57B;1D57B;0050;0050;
+1D57C;1D57C;1D57C;0051;0051;
+1D57D;1D57D;1D57D;0052;0052;
+1D57E;1D57E;1D57E;0053;0053;
+1D57F;1D57F;1D57F;0054;0054;
+1D580;1D580;1D580;0055;0055;
+1D581;1D581;1D581;0056;0056;
+1D582;1D582;1D582;0057;0057;
+1D583;1D583;1D583;0058;0058;
+1D584;1D584;1D584;0059;0059;
+1D585;1D585;1D585;005A;005A;
+1D586;1D586;1D586;0061;0061;
+1D587;1D587;1D587;0062;0062;
+1D588;1D588;1D588;0063;0063;
+1D589;1D589;1D589;0064;0064;
+1D58A;1D58A;1D58A;0065;0065;
+1D58B;1D58B;1D58B;0066;0066;
+1D58C;1D58C;1D58C;0067;0067;
+1D58D;1D58D;1D58D;0068;0068;
+1D58E;1D58E;1D58E;0069;0069;
+1D58F;1D58F;1D58F;006A;006A;
+1D590;1D590;1D590;006B;006B;
+1D591;1D591;1D591;006C;006C;
+1D592;1D592;1D592;006D;006D;
+1D593;1D593;1D593;006E;006E;
+1D594;1D594;1D594;006F;006F;
+1D595;1D595;1D595;0070;0070;
+1D596;1D596;1D596;0071;0071;
+1D597;1D597;1D597;0072;0072;
+1D598;1D598;1D598;0073;0073;
+1D599;1D599;1D599;0074;0074;
+1D59A;1D59A;1D59A;0075;0075;
+1D59B;1D59B;1D59B;0076;0076;
+1D59C;1D59C;1D59C;0077;0077;
+1D59D;1D59D;1D59D;0078;0078;
+1D59E;1D59E;1D59E;0079;0079;
+1D59F;1D59F;1D59F;007A;007A;
+1D5A0;1D5A0;1D5A0;0041;0041;
+1D5A1;1D5A1;1D5A1;0042;0042;
+1D5A2;1D5A2;1D5A2;0043;0043;
+1D5A3;1D5A3;1D5A3;0044;0044;
+1D5A4;1D5A4;1D5A4;0045;0045;
+1D5A5;1D5A5;1D5A5;0046;0046;
+1D5A6;1D5A6;1D5A6;0047;0047;
+1D5A7;1D5A7;1D5A7;0048;0048;
+1D5A8;1D5A8;1D5A8;0049;0049;
+1D5A9;1D5A9;1D5A9;004A;004A;
+1D5AA;1D5AA;1D5AA;004B;004B;
+1D5AB;1D5AB;1D5AB;004C;004C;
+1D5AC;1D5AC;1D5AC;004D;004D;
+1D5AD;1D5AD;1D5AD;004E;004E;
+1D5AE;1D5AE;1D5AE;004F;004F;
+1D5AF;1D5AF;1D5AF;0050;0050;
+1D5B0;1D5B0;1D5B0;0051;0051;
+1D5B1;1D5B1;1D5B1;0052;0052;
+1D5B2;1D5B2;1D5B2;0053;0053;
+1D5B3;1D5B3;1D5B3;0054;0054;
+1D5B4;1D5B4;1D5B4;0055;0055;
+1D5B5;1D5B5;1D5B5;0056;0056;
+1D5B6;1D5B6;1D5B6;0057;0057;
+1D5B7;1D5B7;1D5B7;0058;0058;
+1D5B8;1D5B8;1D5B8;0059;0059;
+1D5B9;1D5B9;1D5B9;005A;005A;
+1D5BA;1D5BA;1D5BA;0061;0061;
+1D5BB;1D5BB;1D5BB;0062;0062;
+1D5BC;1D5BC;1D5BC;0063;0063;
+1D5BD;1D5BD;1D5BD;0064;0064;
+1D5BE;1D5BE;1D5BE;0065;0065;
+1D5BF;1D5BF;1D5BF;0066;0066;
+1D5C0;1D5C0;1D5C0;0067;0067;
+1D5C1;1D5C1;1D5C1;0068;0068;
+1D5C2;1D5C2;1D5C2;0069;0069;
+1D5C3;1D5C3;1D5C3;006A;006A;
+1D5C4;1D5C4;1D5C4;006B;006B;
+1D5C5;1D5C5;1D5C5;006C;006C;
+1D5C6;1D5C6;1D5C6;006D;006D;
+1D5C7;1D5C7;1D5C7;006E;006E;
+1D5C8;1D5C8;1D5C8;006F;006F;
+1D5C9;1D5C9;1D5C9;0070;0070;
+1D5CA;1D5CA;1D5CA;0071;0071;
+1D5CB;1D5CB;1D5CB;0072;0072;
+1D5CC;1D5CC;1D5CC;0073;0073;
+1D5CD;1D5CD;1D5CD;0074;0074;
+1D5CE;1D5CE;1D5CE;0075;0075;
+1D5CF;1D5CF;1D5CF;0076;0076;
+1D5D0;1D5D0;1D5D0;0077;0077;
+1D5D1;1D5D1;1D5D1;0078;0078;
+1D5D2;1D5D2;1D5D2;0079;0079;
+1D5D3;1D5D3;1D5D3;007A;007A;
+1D5D4;1D5D4;1D5D4;0041;0041;
+1D5D5;1D5D5;1D5D5;0042;0042;
+1D5D6;1D5D6;1D5D6;0043;0043;
+1D5D7;1D5D7;1D5D7;0044;0044;
+1D5D8;1D5D8;1D5D8;0045;0045;
+1D5D9;1D5D9;1D5D9;0046;0046;
+1D5DA;1D5DA;1D5DA;0047;0047;
+1D5DB;1D5DB;1D5DB;0048;0048;
+1D5DC;1D5DC;1D5DC;0049;0049;
+1D5DD;1D5DD;1D5DD;004A;004A;
+1D5DE;1D5DE;1D5DE;004B;004B;
+1D5DF;1D5DF;1D5DF;004C;004C;
+1D5E0;1D5E0;1D5E0;004D;004D;
+1D5E1;1D5E1;1D5E1;004E;004E;
+1D5E2;1D5E2;1D5E2;004F;004F;
+1D5E3;1D5E3;1D5E3;0050;0050;
+1D5E4;1D5E4;1D5E4;0051;0051;
+1D5E5;1D5E5;1D5E5;0052;0052;
+1D5E6;1D5E6;1D5E6;0053;0053;
+1D5E7;1D5E7;1D5E7;0054;0054;
+1D5E8;1D5E8;1D5E8;0055;0055;
+1D5E9;1D5E9;1D5E9;0056;0056;
+1D5EA;1D5EA;1D5EA;0057;0057;
+1D5EB;1D5EB;1D5EB;0058;0058;
+1D5EC;1D5EC;1D5EC;0059;0059;
+1D5ED;1D5ED;1D5ED;005A;005A;
+1D5EE;1D5EE;1D5EE;0061;0061;
+1D5EF;1D5EF;1D5EF;0062;0062;
+1D5F0;1D5F0;1D5F0;0063;0063;
+1D5F1;1D5F1;1D5F1;0064;0064;
+1D5F2;1D5F2;1D5F2;0065;0065;
+1D5F3;1D5F3;1D5F3;0066;0066;
+1D5F4;1D5F4;1D5F4;0067;0067;
+1D5F5;1D5F5;1D5F5;0068;0068;
+1D5F6;1D5F6;1D5F6;0069;0069;
+1D5F7;1D5F7;1D5F7;006A;006A;
+1D5F8;1D5F8;1D5F8;006B;006B;
+1D5F9;1D5F9;1D5F9;006C;006C;
+1D5FA;1D5FA;1D5FA;006D;006D;
+1D5FB;1D5FB;1D5FB;006E;006E;
+1D5FC;1D5FC;1D5FC;006F;006F;
+1D5FD;1D5FD;1D5FD;0070;0070;
+1D5FE;1D5FE;1D5FE;0071;0071;
+1D5FF;1D5FF;1D5FF;0072;0072;
+1D600;1D600;1D600;0073;0073;
+1D601;1D601;1D601;0074;0074;
+1D602;1D602;1D602;0075;0075;
+1D603;1D603;1D603;0076;0076;
+1D604;1D604;1D604;0077;0077;
+1D605;1D605;1D605;0078;0078;
+1D606;1D606;1D606;0079;0079;
+1D607;1D607;1D607;007A;007A;
+1D608;1D608;1D608;0041;0041;
+1D609;1D609;1D609;0042;0042;
+1D60A;1D60A;1D60A;0043;0043;
+1D60B;1D60B;1D60B;0044;0044;
+1D60C;1D60C;1D60C;0045;0045;
+1D60D;1D60D;1D60D;0046;0046;
+1D60E;1D60E;1D60E;0047;0047;
+1D60F;1D60F;1D60F;0048;0048;
+1D610;1D610;1D610;0049;0049;
+1D611;1D611;1D611;004A;004A;
+1D612;1D612;1D612;004B;004B;
+1D613;1D613;1D613;004C;004C;
+1D614;1D614;1D614;004D;004D;
+1D615;1D615;1D615;004E;004E;
+1D616;1D616;1D616;004F;004F;
+1D617;1D617;1D617;0050;0050;
+1D618;1D618;1D618;0051;0051;
+1D619;1D619;1D619;0052;0052;
+1D61A;1D61A;1D61A;0053;0053;
+1D61B;1D61B;1D61B;0054;0054;
+1D61C;1D61C;1D61C;0055;0055;
+1D61D;1D61D;1D61D;0056;0056;
+1D61E;1D61E;1D61E;0057;0057;
+1D61F;1D61F;1D61F;0058;0058;
+1D620;1D620;1D620;0059;0059;
+1D621;1D621;1D621;005A;005A;
+1D622;1D622;1D622;0061;0061;
+1D623;1D623;1D623;0062;0062;
+1D624;1D624;1D624;0063;0063;
+1D625;1D625;1D625;0064;0064;
+1D626;1D626;1D626;0065;0065;
+1D627;1D627;1D627;0066;0066;
+1D628;1D628;1D628;0067;0067;
+1D629;1D629;1D629;0068;0068;
+1D62A;1D62A;1D62A;0069;0069;
+1D62B;1D62B;1D62B;006A;006A;
+1D62C;1D62C;1D62C;006B;006B;
+1D62D;1D62D;1D62D;006C;006C;
+1D62E;1D62E;1D62E;006D;006D;
+1D62F;1D62F;1D62F;006E;006E;
+1D630;1D630;1D630;006F;006F;
+1D631;1D631;1D631;0070;0070;
+1D632;1D632;1D632;0071;0071;
+1D633;1D633;1D633;0072;0072;
+1D634;1D634;1D634;0073;0073;
+1D635;1D635;1D635;0074;0074;
+1D636;1D636;1D636;0075;0075;
+1D637;1D637;1D637;0076;0076;
+1D638;1D638;1D638;0077;0077;
+1D639;1D639;1D639;0078;0078;
+1D63A;1D63A;1D63A;0079;0079;
+1D63B;1D63B;1D63B;007A;007A;
+1D63C;1D63C;1D63C;0041;0041;
+1D63D;1D63D;1D63D;0042;0042;
+1D63E;1D63E;1D63E;0043;0043;
+1D63F;1D63F;1D63F;0044;0044;
+1D640;1D640;1D640;0045;0045;
+1D641;1D641;1D641;0046;0046;
+1D642;1D642;1D642;0047;0047;
+1D643;1D643;1D643;0048;0048;
+1D644;1D644;1D644;0049;0049;
+1D645;1D645;1D645;004A;004A;
+1D646;1D646;1D646;004B;004B;
+1D647;1D647;1D647;004C;004C;
+1D648;1D648;1D648;004D;004D;
+1D649;1D649;1D649;004E;004E;
+1D64A;1D64A;1D64A;004F;004F;
+1D64B;1D64B;1D64B;0050;0050;
+1D64C;1D64C;1D64C;0051;0051;
+1D64D;1D64D;1D64D;0052;0052;
+1D64E;1D64E;1D64E;0053;0053;
+1D64F;1D64F;1D64F;0054;0054;
+1D650;1D650;1D650;0055;0055;
+1D651;1D651;1D651;0056;0056;
+1D652;1D652;1D652;0057;0057;
+1D653;1D653;1D653;0058;0058;
+1D654;1D654;1D654;0059;0059;
+1D655;1D655;1D655;005A;005A;
+1D656;1D656;1D656;0061;0061;
+1D657;1D657;1D657;0062;0062;
+1D658;1D658;1D658;0063;0063;
+1D659;1D659;1D659;0064;0064;
+1D65A;1D65A;1D65A;0065;0065;
+1D65B;1D65B;1D65B;0066;0066;
+1D65C;1D65C;1D65C;0067;0067;
+1D65D;1D65D;1D65D;0068;0068;
+1D65E;1D65E;1D65E;0069;0069;
+1D65F;1D65F;1D65F;006A;006A;
+1D660;1D660;1D660;006B;006B;
+1D661;1D661;1D661;006C;006C;
+1D662;1D662;1D662;006D;006D;
+1D663;1D663;1D663;006E;006E;
+1D664;1D664;1D664;006F;006F;
+1D665;1D665;1D665;0070;0070;
+1D666;1D666;1D666;0071;0071;
+1D667;1D667;1D667;0072;0072;
+1D668;1D668;1D668;0073;0073;
+1D669;1D669;1D669;0074;0074;
+1D66A;1D66A;1D66A;0075;0075;
+1D66B;1D66B;1D66B;0076;0076;
+1D66C;1D66C;1D66C;0077;0077;
+1D66D;1D66D;1D66D;0078;0078;
+1D66E;1D66E;1D66E;0079;0079;
+1D66F;1D66F;1D66F;007A;007A;
+1D670;1D670;1D670;0041;0041;
+1D671;1D671;1D671;0042;0042;
+1D672;1D672;1D672;0043;0043;
+1D673;1D673;1D673;0044;0044;
+1D674;1D674;1D674;0045;0045;
+1D675;1D675;1D675;0046;0046;
+1D676;1D676;1D676;0047;0047;
+1D677;1D677;1D677;0048;0048;
+1D678;1D678;1D678;0049;0049;
+1D679;1D679;1D679;004A;004A;
+1D67A;1D67A;1D67A;004B;004B;
+1D67B;1D67B;1D67B;004C;004C;
+1D67C;1D67C;1D67C;004D;004D;
+1D67D;1D67D;1D67D;004E;004E;
+1D67E;1D67E;1D67E;004F;004F;
+1D67F;1D67F;1D67F;0050;0050;
+1D680;1D680;1D680;0051;0051;
+1D681;1D681;1D681;0052;0052;
+1D682;1D682;1D682;0053;0053;
+1D683;1D683;1D683;0054;0054;
+1D684;1D684;1D684;0055;0055;
+1D685;1D685;1D685;0056;0056;
+1D686;1D686;1D686;0057;0057;
+1D687;1D687;1D687;0058;0058;
+1D688;1D688;1D688;0059;0059;
+1D689;1D689;1D689;005A;005A;
+1D68A;1D68A;1D68A;0061;0061;
+1D68B;1D68B;1D68B;0062;0062;
+1D68C;1D68C;1D68C;0063;0063;
+1D68D;1D68D;1D68D;0064;0064;
+1D68E;1D68E;1D68E;0065;0065;
+1D68F;1D68F;1D68F;0066;0066;
+1D690;1D690;1D690;0067;0067;
+1D691;1D691;1D691;0068;0068;
+1D692;1D692;1D692;0069;0069;
+1D693;1D693;1D693;006A;006A;
+1D694;1D694;1D694;006B;006B;
+1D695;1D695;1D695;006C;006C;
+1D696;1D696;1D696;006D;006D;
+1D697;1D697;1D697;006E;006E;
+1D698;1D698;1D698;006F;006F;
+1D699;1D699;1D699;0070;0070;
+1D69A;1D69A;1D69A;0071;0071;
+1D69B;1D69B;1D69B;0072;0072;
+1D69C;1D69C;1D69C;0073;0073;
+1D69D;1D69D;1D69D;0074;0074;
+1D69E;1D69E;1D69E;0075;0075;
+1D69F;1D69F;1D69F;0076;0076;
+1D6A0;1D6A0;1D6A0;0077;0077;
+1D6A1;1D6A1;1D6A1;0078;0078;
+1D6A2;1D6A2;1D6A2;0079;0079;
+1D6A3;1D6A3;1D6A3;007A;007A;
+1D6A8;1D6A8;1D6A8;0391;0391;
+1D6A9;1D6A9;1D6A9;0392;0392;
+1D6AA;1D6AA;1D6AA;0393;0393;
+1D6AB;1D6AB;1D6AB;0394;0394;
+1D6AC;1D6AC;1D6AC;0395;0395;
+1D6AD;1D6AD;1D6AD;0396;0396;
+1D6AE;1D6AE;1D6AE;0397;0397;
+1D6AF;1D6AF;1D6AF;0398;0398;
+1D6B0;1D6B0;1D6B0;0399;0399;
+1D6B1;1D6B1;1D6B1;039A;039A;
+1D6B2;1D6B2;1D6B2;039B;039B;
+1D6B3;1D6B3;1D6B3;039C;039C;
+1D6B4;1D6B4;1D6B4;039D;039D;
+1D6B5;1D6B5;1D6B5;039E;039E;
+1D6B6;1D6B6;1D6B6;039F;039F;
+1D6B7;1D6B7;1D6B7;03A0;03A0;
+1D6B8;1D6B8;1D6B8;03A1;03A1;
+1D6B9;1D6B9;1D6B9;0398;0398;
+1D6BA;1D6BA;1D6BA;03A3;03A3;
+1D6BB;1D6BB;1D6BB;03A4;03A4;
+1D6BC;1D6BC;1D6BC;03A5;03A5;
+1D6BD;1D6BD;1D6BD;03A6;03A6;
+1D6BE;1D6BE;1D6BE;03A7;03A7;
+1D6BF;1D6BF;1D6BF;03A8;03A8;
+1D6C0;1D6C0;1D6C0;03A9;03A9;
+1D6C1;1D6C1;1D6C1;2207;2207;
+1D6C2;1D6C2;1D6C2;03B1;03B1;
+1D6C3;1D6C3;1D6C3;03B2;03B2;
+1D6C4;1D6C4;1D6C4;03B3;03B3;
+1D6C5;1D6C5;1D6C5;03B4;03B4;
+1D6C6;1D6C6;1D6C6;03B5;03B5;
+1D6C7;1D6C7;1D6C7;03B6;03B6;
+1D6C8;1D6C8;1D6C8;03B7;03B7;
+1D6C9;1D6C9;1D6C9;03B8;03B8;
+1D6CA;1D6CA;1D6CA;03B9;03B9;
+1D6CB;1D6CB;1D6CB;03BA;03BA;
+1D6CC;1D6CC;1D6CC;03BB;03BB;
+1D6CD;1D6CD;1D6CD;03BC;03BC;
+1D6CE;1D6CE;1D6CE;03BD;03BD;
+1D6CF;1D6CF;1D6CF;03BE;03BE;
+1D6D0;1D6D0;1D6D0;03BF;03BF;
+1D6D1;1D6D1;1D6D1;03C0;03C0;
+1D6D2;1D6D2;1D6D2;03C1;03C1;
+1D6D3;1D6D3;1D6D3;03C2;03C2;
+1D6D4;1D6D4;1D6D4;03C3;03C3;
+1D6D5;1D6D5;1D6D5;03C4;03C4;
+1D6D6;1D6D6;1D6D6;03C5;03C5;
+1D6D7;1D6D7;1D6D7;03C6;03C6;
+1D6D8;1D6D8;1D6D8;03C7;03C7;
+1D6D9;1D6D9;1D6D9;03C8;03C8;
+1D6DA;1D6DA;1D6DA;03C9;03C9;
+1D6DB;1D6DB;1D6DB;2202;2202;
+1D6DC;1D6DC;1D6DC;03B5;03B5;
+1D6DD;1D6DD;1D6DD;03B8;03B8;
+1D6DE;1D6DE;1D6DE;03BA;03BA;
+1D6DF;1D6DF;1D6DF;03C6;03C6;
+1D6E0;1D6E0;1D6E0;03C1;03C1;
+1D6E1;1D6E1;1D6E1;03C0;03C0;
+1D6E2;1D6E2;1D6E2;0391;0391;
+1D6E3;1D6E3;1D6E3;0392;0392;
+1D6E4;1D6E4;1D6E4;0393;0393;
+1D6E5;1D6E5;1D6E5;0394;0394;
+1D6E6;1D6E6;1D6E6;0395;0395;
+1D6E7;1D6E7;1D6E7;0396;0396;
+1D6E8;1D6E8;1D6E8;0397;0397;
+1D6E9;1D6E9;1D6E9;0398;0398;
+1D6EA;1D6EA;1D6EA;0399;0399;
+1D6EB;1D6EB;1D6EB;039A;039A;
+1D6EC;1D6EC;1D6EC;039B;039B;
+1D6ED;1D6ED;1D6ED;039C;039C;
+1D6EE;1D6EE;1D6EE;039D;039D;
+1D6EF;1D6EF;1D6EF;039E;039E;
+1D6F0;1D6F0;1D6F0;039F;039F;
+1D6F1;1D6F1;1D6F1;03A0;03A0;
+1D6F2;1D6F2;1D6F2;03A1;03A1;
+1D6F3;1D6F3;1D6F3;0398;0398;
+1D6F4;1D6F4;1D6F4;03A3;03A3;
+1D6F5;1D6F5;1D6F5;03A4;03A4;
+1D6F6;1D6F6;1D6F6;03A5;03A5;
+1D6F7;1D6F7;1D6F7;03A6;03A6;
+1D6F8;1D6F8;1D6F8;03A7;03A7;
+1D6F9;1D6F9;1D6F9;03A8;03A8;
+1D6FA;1D6FA;1D6FA;03A9;03A9;
+1D6FB;1D6FB;1D6FB;2207;2207;
+1D6FC;1D6FC;1D6FC;03B1;03B1;
+1D6FD;1D6FD;1D6FD;03B2;03B2;
+1D6FE;1D6FE;1D6FE;03B3;03B3;
+1D6FF;1D6FF;1D6FF;03B4;03B4;
+1D700;1D700;1D700;03B5;03B5;
+1D701;1D701;1D701;03B6;03B6;
+1D702;1D702;1D702;03B7;03B7;
+1D703;1D703;1D703;03B8;03B8;
+1D704;1D704;1D704;03B9;03B9;
+1D705;1D705;1D705;03BA;03BA;
+1D706;1D706;1D706;03BB;03BB;
+1D707;1D707;1D707;03BC;03BC;
+1D708;1D708;1D708;03BD;03BD;
+1D709;1D709;1D709;03BE;03BE;
+1D70A;1D70A;1D70A;03BF;03BF;
+1D70B;1D70B;1D70B;03C0;03C0;
+1D70C;1D70C;1D70C;03C1;03C1;
+1D70D;1D70D;1D70D;03C2;03C2;
+1D70E;1D70E;1D70E;03C3;03C3;
+1D70F;1D70F;1D70F;03C4;03C4;
+1D710;1D710;1D710;03C5;03C5;
+1D711;1D711;1D711;03C6;03C6;
+1D712;1D712;1D712;03C7;03C7;
+1D713;1D713;1D713;03C8;03C8;
+1D714;1D714;1D714;03C9;03C9;
+1D715;1D715;1D715;2202;2202;
+1D716;1D716;1D716;03B5;03B5;
+1D717;1D717;1D717;03B8;03B8;
+1D718;1D718;1D718;03BA;03BA;
+1D719;1D719;1D719;03C6;03C6;
+1D71A;1D71A;1D71A;03C1;03C1;
+1D71B;1D71B;1D71B;03C0;03C0;
+1D71C;1D71C;1D71C;0391;0391;
+1D71D;1D71D;1D71D;0392;0392;
+1D71E;1D71E;1D71E;0393;0393;
+1D71F;1D71F;1D71F;0394;0394;
+1D720;1D720;1D720;0395;0395;
+1D721;1D721;1D721;0396;0396;
+1D722;1D722;1D722;0397;0397;
+1D723;1D723;1D723;0398;0398;
+1D724;1D724;1D724;0399;0399;
+1D725;1D725;1D725;039A;039A;
+1D726;1D726;1D726;039B;039B;
+1D727;1D727;1D727;039C;039C;
+1D728;1D728;1D728;039D;039D;
+1D729;1D729;1D729;039E;039E;
+1D72A;1D72A;1D72A;039F;039F;
+1D72B;1D72B;1D72B;03A0;03A0;
+1D72C;1D72C;1D72C;03A1;03A1;
+1D72D;1D72D;1D72D;0398;0398;
+1D72E;1D72E;1D72E;03A3;03A3;
+1D72F;1D72F;1D72F;03A4;03A4;
+1D730;1D730;1D730;03A5;03A5;
+1D731;1D731;1D731;03A6;03A6;
+1D732;1D732;1D732;03A7;03A7;
+1D733;1D733;1D733;03A8;03A8;
+1D734;1D734;1D734;03A9;03A9;
+1D735;1D735;1D735;2207;2207;
+1D736;1D736;1D736;03B1;03B1;
+1D737;1D737;1D737;03B2;03B2;
+1D738;1D738;1D738;03B3;03B3;
+1D739;1D739;1D739;03B4;03B4;
+1D73A;1D73A;1D73A;03B5;03B5;
+1D73B;1D73B;1D73B;03B6;03B6;
+1D73C;1D73C;1D73C;03B7;03B7;
+1D73D;1D73D;1D73D;03B8;03B8;
+1D73E;1D73E;1D73E;03B9;03B9;
+1D73F;1D73F;1D73F;03BA;03BA;
+1D740;1D740;1D740;03BB;03BB;
+1D741;1D741;1D741;03BC;03BC;
+1D742;1D742;1D742;03BD;03BD;
+1D743;1D743;1D743;03BE;03BE;
+1D744;1D744;1D744;03BF;03BF;
+1D745;1D745;1D745;03C0;03C0;
+1D746;1D746;1D746;03C1;03C1;
+1D747;1D747;1D747;03C2;03C2;
+1D748;1D748;1D748;03C3;03C3;
+1D749;1D749;1D749;03C4;03C4;
+1D74A;1D74A;1D74A;03C5;03C5;
+1D74B;1D74B;1D74B;03C6;03C6;
+1D74C;1D74C;1D74C;03C7;03C7;
+1D74D;1D74D;1D74D;03C8;03C8;
+1D74E;1D74E;1D74E;03C9;03C9;
+1D74F;1D74F;1D74F;2202;2202;
+1D750;1D750;1D750;03B5;03B5;
+1D751;1D751;1D751;03B8;03B8;
+1D752;1D752;1D752;03BA;03BA;
+1D753;1D753;1D753;03C6;03C6;
+1D754;1D754;1D754;03C1;03C1;
+1D755;1D755;1D755;03C0;03C0;
+1D756;1D756;1D756;0391;0391;
+1D757;1D757;1D757;0392;0392;
+1D758;1D758;1D758;0393;0393;
+1D759;1D759;1D759;0394;0394;
+1D75A;1D75A;1D75A;0395;0395;
+1D75B;1D75B;1D75B;0396;0396;
+1D75C;1D75C;1D75C;0397;0397;
+1D75D;1D75D;1D75D;0398;0398;
+1D75E;1D75E;1D75E;0399;0399;
+1D75F;1D75F;1D75F;039A;039A;
+1D760;1D760;1D760;039B;039B;
+1D761;1D761;1D761;039C;039C;
+1D762;1D762;1D762;039D;039D;
+1D763;1D763;1D763;039E;039E;
+1D764;1D764;1D764;039F;039F;
+1D765;1D765;1D765;03A0;03A0;
+1D766;1D766;1D766;03A1;03A1;
+1D767;1D767;1D767;0398;0398;
+1D768;1D768;1D768;03A3;03A3;
+1D769;1D769;1D769;03A4;03A4;
+1D76A;1D76A;1D76A;03A5;03A5;
+1D76B;1D76B;1D76B;03A6;03A6;
+1D76C;1D76C;1D76C;03A7;03A7;
+1D76D;1D76D;1D76D;03A8;03A8;
+1D76E;1D76E;1D76E;03A9;03A9;
+1D76F;1D76F;1D76F;2207;2207;
+1D770;1D770;1D770;03B1;03B1;
+1D771;1D771;1D771;03B2;03B2;
+1D772;1D772;1D772;03B3;03B3;
+1D773;1D773;1D773;03B4;03B4;
+1D774;1D774;1D774;03B5;03B5;
+1D775;1D775;1D775;03B6;03B6;
+1D776;1D776;1D776;03B7;03B7;
+1D777;1D777;1D777;03B8;03B8;
+1D778;1D778;1D778;03B9;03B9;
+1D779;1D779;1D779;03BA;03BA;
+1D77A;1D77A;1D77A;03BB;03BB;
+1D77B;1D77B;1D77B;03BC;03BC;
+1D77C;1D77C;1D77C;03BD;03BD;
+1D77D;1D77D;1D77D;03BE;03BE;
+1D77E;1D77E;1D77E;03BF;03BF;
+1D77F;1D77F;1D77F;03C0;03C0;
+1D780;1D780;1D780;03C1;03C1;
+1D781;1D781;1D781;03C2;03C2;
+1D782;1D782;1D782;03C3;03C3;
+1D783;1D783;1D783;03C4;03C4;
+1D784;1D784;1D784;03C5;03C5;
+1D785;1D785;1D785;03C6;03C6;
+1D786;1D786;1D786;03C7;03C7;
+1D787;1D787;1D787;03C8;03C8;
+1D788;1D788;1D788;03C9;03C9;
+1D789;1D789;1D789;2202;2202;
+1D78A;1D78A;1D78A;03B5;03B5;
+1D78B;1D78B;1D78B;03B8;03B8;
+1D78C;1D78C;1D78C;03BA;03BA;
+1D78D;1D78D;1D78D;03C6;03C6;
+1D78E;1D78E;1D78E;03C1;03C1;
+1D78F;1D78F;1D78F;03C0;03C0;
+1D790;1D790;1D790;0391;0391;
+1D791;1D791;1D791;0392;0392;
+1D792;1D792;1D792;0393;0393;
+1D793;1D793;1D793;0394;0394;
+1D794;1D794;1D794;0395;0395;
+1D795;1D795;1D795;0396;0396;
+1D796;1D796;1D796;0397;0397;
+1D797;1D797;1D797;0398;0398;
+1D798;1D798;1D798;0399;0399;
+1D799;1D799;1D799;039A;039A;
+1D79A;1D79A;1D79A;039B;039B;
+1D79B;1D79B;1D79B;039C;039C;
+1D79C;1D79C;1D79C;039D;039D;
+1D79D;1D79D;1D79D;039E;039E;
+1D79E;1D79E;1D79E;039F;039F;
+1D79F;1D79F;1D79F;03A0;03A0;
+1D7A0;1D7A0;1D7A0;03A1;03A1;
+1D7A1;1D7A1;1D7A1;0398;0398;
+1D7A2;1D7A2;1D7A2;03A3;03A3;
+1D7A3;1D7A3;1D7A3;03A4;03A4;
+1D7A4;1D7A4;1D7A4;03A5;03A5;
+1D7A5;1D7A5;1D7A5;03A6;03A6;
+1D7A6;1D7A6;1D7A6;03A7;03A7;
+1D7A7;1D7A7;1D7A7;03A8;03A8;
+1D7A8;1D7A8;1D7A8;03A9;03A9;
+1D7A9;1D7A9;1D7A9;2207;2207;
+1D7AA;1D7AA;1D7AA;03B1;03B1;
+1D7AB;1D7AB;1D7AB;03B2;03B2;
+1D7AC;1D7AC;1D7AC;03B3;03B3;
+1D7AD;1D7AD;1D7AD;03B4;03B4;
+1D7AE;1D7AE;1D7AE;03B5;03B5;
+1D7AF;1D7AF;1D7AF;03B6;03B6;
+1D7B0;1D7B0;1D7B0;03B7;03B7;
+1D7B1;1D7B1;1D7B1;03B8;03B8;
+1D7B2;1D7B2;1D7B2;03B9;03B9;
+1D7B3;1D7B3;1D7B3;03BA;03BA;
+1D7B4;1D7B4;1D7B4;03BB;03BB;
+1D7B5;1D7B5;1D7B5;03BC;03BC;
+1D7B6;1D7B6;1D7B6;03BD;03BD;
+1D7B7;1D7B7;1D7B7;03BE;03BE;
+1D7B8;1D7B8;1D7B8;03BF;03BF;
+1D7B9;1D7B9;1D7B9;03C0;03C0;
+1D7BA;1D7BA;1D7BA;03C1;03C1;
+1D7BB;1D7BB;1D7BB;03C2;03C2;
+1D7BC;1D7BC;1D7BC;03C3;03C3;
+1D7BD;1D7BD;1D7BD;03C4;03C4;
+1D7BE;1D7BE;1D7BE;03C5;03C5;
+1D7BF;1D7BF;1D7BF;03C6;03C6;
+1D7C0;1D7C0;1D7C0;03C7;03C7;
+1D7C1;1D7C1;1D7C1;03C8;03C8;
+1D7C2;1D7C2;1D7C2;03C9;03C9;
+1D7C3;1D7C3;1D7C3;2202;2202;
+1D7C4;1D7C4;1D7C4;03B5;03B5;
+1D7C5;1D7C5;1D7C5;03B8;03B8;
+1D7C6;1D7C6;1D7C6;03BA;03BA;
+1D7C7;1D7C7;1D7C7;03C6;03C6;
+1D7C8;1D7C8;1D7C8;03C1;03C1;
+1D7C9;1D7C9;1D7C9;03C0;03C0;
+1D7CE;1D7CE;1D7CE;0030;0030;
+1D7CF;1D7CF;1D7CF;0031;0031;
+1D7D0;1D7D0;1D7D0;0032;0032;
+1D7D1;1D7D1;1D7D1;0033;0033;
+1D7D2;1D7D2;1D7D2;0034;0034;
+1D7D3;1D7D3;1D7D3;0035;0035;
+1D7D4;1D7D4;1D7D4;0036;0036;
+1D7D5;1D7D5;1D7D5;0037;0037;
+1D7D6;1D7D6;1D7D6;0038;0038;
+1D7D7;1D7D7;1D7D7;0039;0039;
+1D7D8;1D7D8;1D7D8;0030;0030;
+1D7D9;1D7D9;1D7D9;0031;0031;
+1D7DA;1D7DA;1D7DA;0032;0032;
+1D7DB;1D7DB;1D7DB;0033;0033;
+1D7DC;1D7DC;1D7DC;0034;0034;
+1D7DD;1D7DD;1D7DD;0035;0035;
+1D7DE;1D7DE;1D7DE;0036;0036;
+1D7DF;1D7DF;1D7DF;0037;0037;
+1D7E0;1D7E0;1D7E0;0038;0038;
+1D7E1;1D7E1;1D7E1;0039;0039;
+1D7E2;1D7E2;1D7E2;0030;0030;
+1D7E3;1D7E3;1D7E3;0031;0031;
+1D7E4;1D7E4;1D7E4;0032;0032;
+1D7E5;1D7E5;1D7E5;0033;0033;
+1D7E6;1D7E6;1D7E6;0034;0034;
+1D7E7;1D7E7;1D7E7;0035;0035;
+1D7E8;1D7E8;1D7E8;0036;0036;
+1D7E9;1D7E9;1D7E9;0037;0037;
+1D7EA;1D7EA;1D7EA;0038;0038;
+1D7EB;1D7EB;1D7EB;0039;0039;
+1D7EC;1D7EC;1D7EC;0030;0030;
+1D7ED;1D7ED;1D7ED;0031;0031;
+1D7EE;1D7EE;1D7EE;0032;0032;
+1D7EF;1D7EF;1D7EF;0033;0033;
+1D7F0;1D7F0;1D7F0;0034;0034;
+1D7F1;1D7F1;1D7F1;0035;0035;
+1D7F2;1D7F2;1D7F2;0036;0036;
+1D7F3;1D7F3;1D7F3;0037;0037;
+1D7F4;1D7F4;1D7F4;0038;0038;
+1D7F5;1D7F5;1D7F5;0039;0039;
+1D7F6;1D7F6;1D7F6;0030;0030;
+1D7F7;1D7F7;1D7F7;0031;0031;
+1D7F8;1D7F8;1D7F8;0032;0032;
+1D7F9;1D7F9;1D7F9;0033;0033;
+1D7FA;1D7FA;1D7FA;0034;0034;
+1D7FB;1D7FB;1D7FB;0035;0035;
+1D7FC;1D7FC;1D7FC;0036;0036;
+1D7FD;1D7FD;1D7FD;0037;0037;
+1D7FE;1D7FE;1D7FE;0038;0038;
+1D7FF;1D7FF;1D7FF;0039;0039;
+2F800;4E3D;4E3D;4E3D;4E3D;
+2F801;4E38;4E38;4E38;4E38;
+2F802;4E41;4E41;4E41;4E41;
+2F803;20122;20122;20122;20122;
+2F804;4F60;4F60;4F60;4F60;
+2F805;4FAE;4FAE;4FAE;4FAE;
+2F806;4FBB;4FBB;4FBB;4FBB;
+2F807;5002;5002;5002;5002;
+2F808;507A;507A;507A;507A;
+2F809;5099;5099;5099;5099;
+2F80A;50E7;50E7;50E7;50E7;
+2F80B;50CF;50CF;50CF;50CF;
+2F80C;349E;349E;349E;349E;
+2F80D;2063A;2063A;2063A;2063A;
+2F80E;514D;514D;514D;514D;
+2F80F;5154;5154;5154;5154;
+2F810;5164;5164;5164;5164;
+2F811;5177;5177;5177;5177;
+2F812;2051C;2051C;2051C;2051C;
+2F813;34B9;34B9;34B9;34B9;
+2F814;5167;5167;5167;5167;
+2F815;518D;518D;518D;518D;
+2F816;2054B;2054B;2054B;2054B;
+2F817;5197;5197;5197;5197;
+2F818;51A4;51A4;51A4;51A4;
+2F819;4ECC;4ECC;4ECC;4ECC;
+2F81A;51AC;51AC;51AC;51AC;
+2F81B;51B5;51B5;51B5;51B5;
+2F81C;291DF;291DF;291DF;291DF;
+2F81D;51F5;51F5;51F5;51F5;
+2F81E;5203;5203;5203;5203;
+2F81F;34DF;34DF;34DF;34DF;
+2F820;523B;523B;523B;523B;
+2F821;5246;5246;5246;5246;
+2F822;5272;5272;5272;5272;
+2F823;5277;5277;5277;5277;
+2F824;3515;3515;3515;3515;
+2F825;52C7;52C7;52C7;52C7;
+2F826;52C9;52C9;52C9;52C9;
+2F827;52E4;52E4;52E4;52E4;
+2F828;52FA;52FA;52FA;52FA;
+2F829;5305;5305;5305;5305;
+2F82A;5306;5306;5306;5306;
+2F82B;5317;5317;5317;5317;
+2F82C;5349;5349;5349;5349;
+2F82D;5351;5351;5351;5351;
+2F82E;535A;535A;535A;535A;
+2F82F;5373;5373;5373;5373;
+2F830;537D;537D;537D;537D;
+2F831;537F;537F;537F;537F;
+2F832;537F;537F;537F;537F;
+2F833;537F;537F;537F;537F;
+2F834;20A2C;20A2C;20A2C;20A2C;
+2F835;7070;7070;7070;7070;
+2F836;53CA;53CA;53CA;53CA;
+2F837;53DF;53DF;53DF;53DF;
+2F838;20B63;20B63;20B63;20B63;
+2F839;53EB;53EB;53EB;53EB;
+2F83A;53F1;53F1;53F1;53F1;
+2F83B;5406;5406;5406;5406;
+2F83C;549E;549E;549E;549E;
+2F83D;5438;5438;5438;5438;
+2F83E;5448;5448;5448;5448;
+2F83F;5468;5468;5468;5468;
+2F840;54A2;54A2;54A2;54A2;
+2F841;54F6;54F6;54F6;54F6;
+2F842;5510;5510;5510;5510;
+2F843;5553;5553;5553;5553;
+2F844;5563;5563;5563;5563;
+2F845;5584;5584;5584;5584;
+2F846;5584;5584;5584;5584;
+2F847;5599;5599;5599;5599;
+2F848;55AB;55AB;55AB;55AB;
+2F849;55B3;55B3;55B3;55B3;
+2F84A;55C2;55C2;55C2;55C2;
+2F84B;5716;5716;5716;5716;
+2F84C;5606;5606;5606;5606;
+2F84D;5717;5717;5717;5717;
+2F84E;5651;5651;5651;5651;
+2F84F;5674;5674;5674;5674;
+2F850;5207;5207;5207;5207;
+2F851;58EE;58EE;58EE;58EE;
+2F852;57CE;57CE;57CE;57CE;
+2F853;57F4;57F4;57F4;57F4;
+2F854;580D;580D;580D;580D;
+2F855;578B;578B;578B;578B;
+2F856;5832;5832;5832;5832;
+2F857;5831;5831;5831;5831;
+2F858;58AC;58AC;58AC;58AC;
+2F859;214E4;214E4;214E4;214E4;
+2F85A;58F2;58F2;58F2;58F2;
+2F85B;58F7;58F7;58F7;58F7;
+2F85C;5906;5906;5906;5906;
+2F85D;591A;591A;591A;591A;
+2F85E;5922;5922;5922;5922;
+2F85F;5962;5962;5962;5962;
+2F860;216A8;216A8;216A8;216A8;
+2F861;216EA;216EA;216EA;216EA;
+2F862;59EC;59EC;59EC;59EC;
+2F863;5A1B;5A1B;5A1B;5A1B;
+2F864;5A27;5A27;5A27;5A27;
+2F865;59D8;59D8;59D8;59D8;
+2F866;5A66;5A66;5A66;5A66;
+2F867;36EE;36EE;36EE;36EE;
+2F868;2136A;2136A;2136A;2136A;
+2F869;5B08;5B08;5B08;5B08;
+2F86A;5B3E;5B3E;5B3E;5B3E;
+2F86B;5B3E;5B3E;5B3E;5B3E;
+2F86C;219C8;219C8;219C8;219C8;
+2F86D;5BC3;5BC3;5BC3;5BC3;
+2F86E;5BD8;5BD8;5BD8;5BD8;
+2F86F;5BE7;5BE7;5BE7;5BE7;
+2F870;5BF3;5BF3;5BF3;5BF3;
+2F871;21B18;21B18;21B18;21B18;
+2F872;5BFF;5BFF;5BFF;5BFF;
+2F873;5C06;5C06;5C06;5C06;
+2F874;5F33;5F33;5F33;5F33;
+2F875;5C22;5C22;5C22;5C22;
+2F876;3781;3781;3781;3781;
+2F877;5C60;5C60;5C60;5C60;
+2F878;5C6E;5C6E;5C6E;5C6E;
+2F879;5CC0;5CC0;5CC0;5CC0;
+2F87A;5C8D;5C8D;5C8D;5C8D;
+2F87B;21DE4;21DE4;21DE4;21DE4;
+2F87C;5D43;5D43;5D43;5D43;
+2F87D;21DE6;21DE6;21DE6;21DE6;
+2F87E;5D6E;5D6E;5D6E;5D6E;
+2F87F;5D6B;5D6B;5D6B;5D6B;
+2F880;5D7C;5D7C;5D7C;5D7C;
+2F881;5DE1;5DE1;5DE1;5DE1;
+2F882;5DE2;5DE2;5DE2;5DE2;
+2F883;382F;382F;382F;382F;
+2F884;5DFD;5DFD;5DFD;5DFD;
+2F885;5E28;5E28;5E28;5E28;
+2F886;5E3D;5E3D;5E3D;5E3D;
+2F887;5E69;5E69;5E69;5E69;
+2F888;3862;3862;3862;3862;
+2F889;22183;22183;22183;22183;
+2F88A;387C;387C;387C;387C;
+2F88B;5EB0;5EB0;5EB0;5EB0;
+2F88C;5EB3;5EB3;5EB3;5EB3;
+2F88D;5EB6;5EB6;5EB6;5EB6;
+2F88E;5ECA;5ECA;5ECA;5ECA;
+2F88F;2A392;2A392;2A392;2A392;
+2F890;5EFE;5EFE;5EFE;5EFE;
+2F891;22331;22331;22331;22331;
+2F892;22331;22331;22331;22331;
+2F893;8201;8201;8201;8201;
+2F894;5F22;5F22;5F22;5F22;
+2F895;5F22;5F22;5F22;5F22;
+2F896;38C7;38C7;38C7;38C7;
+2F897;232B8;232B8;232B8;232B8;
+2F898;261DA;261DA;261DA;261DA;
+2F899;5F62;5F62;5F62;5F62;
+2F89A;5F6B;5F6B;5F6B;5F6B;
+2F89B;38E3;38E3;38E3;38E3;
+2F89C;5F9A;5F9A;5F9A;5F9A;
+2F89D;5FCD;5FCD;5FCD;5FCD;
+2F89E;5FD7;5FD7;5FD7;5FD7;
+2F89F;5FF9;5FF9;5FF9;5FF9;
+2F8A0;6081;6081;6081;6081;
+2F8A1;393A;393A;393A;393A;
+2F8A2;391C;391C;391C;391C;
+2F8A3;6094;6094;6094;6094;
+2F8A4;226D4;226D4;226D4;226D4;
+2F8A5;60C7;60C7;60C7;60C7;
+2F8A6;6148;6148;6148;6148;
+2F8A7;614C;614C;614C;614C;
+2F8A8;614E;614E;614E;614E;
+2F8A9;614C;614C;614C;614C;
+2F8AA;617A;617A;617A;617A;
+2F8AB;618E;618E;618E;618E;
+2F8AC;61B2;61B2;61B2;61B2;
+2F8AD;61A4;61A4;61A4;61A4;
+2F8AE;61AF;61AF;61AF;61AF;
+2F8AF;61DE;61DE;61DE;61DE;
+2F8B0;61F2;61F2;61F2;61F2;
+2F8B1;61F6;61F6;61F6;61F6;
+2F8B2;6210;6210;6210;6210;
+2F8B3;621B;621B;621B;621B;
+2F8B4;625D;625D;625D;625D;
+2F8B5;62B1;62B1;62B1;62B1;
+2F8B6;62D4;62D4;62D4;62D4;
+2F8B7;6350;6350;6350;6350;
+2F8B8;22B0C;22B0C;22B0C;22B0C;
+2F8B9;633D;633D;633D;633D;
+2F8BA;62FC;62FC;62FC;62FC;
+2F8BB;6368;6368;6368;6368;
+2F8BC;6383;6383;6383;6383;
+2F8BD;63E4;63E4;63E4;63E4;
+2F8BE;22BF1;22BF1;22BF1;22BF1;
+2F8BF;6422;6422;6422;6422;
+2F8C0;63C5;63C5;63C5;63C5;
+2F8C1;63A9;63A9;63A9;63A9;
+2F8C2;3A2E;3A2E;3A2E;3A2E;
+2F8C3;6469;6469;6469;6469;
+2F8C4;647E;647E;647E;647E;
+2F8C5;649D;649D;649D;649D;
+2F8C6;6477;6477;6477;6477;
+2F8C7;3A6C;3A6C;3A6C;3A6C;
+2F8C8;654F;654F;654F;654F;
+2F8C9;656C;656C;656C;656C;
+2F8CA;2300A;2300A;2300A;2300A;
+2F8CB;65E3;65E3;65E3;65E3;
+2F8CC;66F8;66F8;66F8;66F8;
+2F8CD;6649;6649;6649;6649;
+2F8CE;3B19;3B19;3B19;3B19;
+2F8CF;6691;6691;6691;6691;
+2F8D0;3B08;3B08;3B08;3B08;
+2F8D1;3AE4;3AE4;3AE4;3AE4;
+2F8D2;5192;5192;5192;5192;
+2F8D3;5195;5195;5195;5195;
+2F8D4;6700;6700;6700;6700;
+2F8D5;669C;669C;669C;669C;
+2F8D6;80AD;80AD;80AD;80AD;
+2F8D7;43D9;43D9;43D9;43D9;
+2F8D8;6717;6717;6717;6717;
+2F8D9;671B;671B;671B;671B;
+2F8DA;6721;6721;6721;6721;
+2F8DB;675E;675E;675E;675E;
+2F8DC;6753;6753;6753;6753;
+2F8DD;233C3;233C3;233C3;233C3;
+2F8DE;3B49;3B49;3B49;3B49;
+2F8DF;67FA;67FA;67FA;67FA;
+2F8E0;6785;6785;6785;6785;
+2F8E1;6852;6852;6852;6852;
+2F8E2;6885;6885;6885;6885;
+2F8E3;2346D;2346D;2346D;2346D;
+2F8E4;688E;688E;688E;688E;
+2F8E5;681F;681F;681F;681F;
+2F8E6;6914;6914;6914;6914;
+2F8E7;3B9D;3B9D;3B9D;3B9D;
+2F8E8;6942;6942;6942;6942;
+2F8E9;69A3;69A3;69A3;69A3;
+2F8EA;69EA;69EA;69EA;69EA;
+2F8EB;6AA8;6AA8;6AA8;6AA8;
+2F8EC;236A3;236A3;236A3;236A3;
+2F8ED;6ADB;6ADB;6ADB;6ADB;
+2F8EE;3C18;3C18;3C18;3C18;
+2F8EF;6B21;6B21;6B21;6B21;
+2F8F0;238A7;238A7;238A7;238A7;
+2F8F1;6B54;6B54;6B54;6B54;
+2F8F2;3C4E;3C4E;3C4E;3C4E;
+2F8F3;6B72;6B72;6B72;6B72;
+2F8F4;6B9F;6B9F;6B9F;6B9F;
+2F8F5;6BBA;6BBA;6BBA;6BBA;
+2F8F6;6BBB;6BBB;6BBB;6BBB;
+2F8F7;23A8D;23A8D;23A8D;23A8D;
+2F8F8;21D0B;21D0B;21D0B;21D0B;
+2F8F9;23AFA;23AFA;23AFA;23AFA;
+2F8FA;6C4E;6C4E;6C4E;6C4E;
+2F8FB;23CBC;23CBC;23CBC;23CBC;
+2F8FC;6CBF;6CBF;6CBF;6CBF;
+2F8FD;6CCD;6CCD;6CCD;6CCD;
+2F8FE;6C67;6C67;6C67;6C67;
+2F8FF;6D16;6D16;6D16;6D16;
+2F900;6D3E;6D3E;6D3E;6D3E;
+2F901;6D77;6D77;6D77;6D77;
+2F902;6D41;6D41;6D41;6D41;
+2F903;6D69;6D69;6D69;6D69;
+2F904;6D78;6D78;6D78;6D78;
+2F905;6D85;6D85;6D85;6D85;
+2F906;23D1E;23D1E;23D1E;23D1E;
+2F907;6D34;6D34;6D34;6D34;
+2F908;6E2F;6E2F;6E2F;6E2F;
+2F909;6E6E;6E6E;6E6E;6E6E;
+2F90A;3D33;3D33;3D33;3D33;
+2F90B;6ECB;6ECB;6ECB;6ECB;
+2F90C;6EC7;6EC7;6EC7;6EC7;
+2F90D;23ED1;23ED1;23ED1;23ED1;
+2F90E;6DF9;6DF9;6DF9;6DF9;
+2F90F;6F6E;6F6E;6F6E;6F6E;
+2F910;23F5E;23F5E;23F5E;23F5E;
+2F911;23F8E;23F8E;23F8E;23F8E;
+2F912;6FC6;6FC6;6FC6;6FC6;
+2F913;7039;7039;7039;7039;
+2F914;701E;701E;701E;701E;
+2F915;701B;701B;701B;701B;
+2F916;3D96;3D96;3D96;3D96;
+2F917;704A;704A;704A;704A;
+2F918;707D;707D;707D;707D;
+2F919;7077;7077;7077;7077;
+2F91A;70AD;70AD;70AD;70AD;
+2F91B;20525;20525;20525;20525;
+2F91C;7145;7145;7145;7145;
+2F91D;24263;24263;24263;24263;
+2F91E;719C;719C;719C;719C;
+2F91F;43AB;43AB;43AB;43AB;
+2F920;7228;7228;7228;7228;
+2F921;7235;7235;7235;7235;
+2F922;7250;7250;7250;7250;
+2F923;24608;24608;24608;24608;
+2F924;7280;7280;7280;7280;
+2F925;7295;7295;7295;7295;
+2F926;24735;24735;24735;24735;
+2F927;24814;24814;24814;24814;
+2F928;737A;737A;737A;737A;
+2F929;738B;738B;738B;738B;
+2F92A;3EAC;3EAC;3EAC;3EAC;
+2F92B;73A5;73A5;73A5;73A5;
+2F92C;3EB8;3EB8;3EB8;3EB8;
+2F92D;3EB8;3EB8;3EB8;3EB8;
+2F92E;7447;7447;7447;7447;
+2F92F;745C;745C;745C;745C;
+2F930;7471;7471;7471;7471;
+2F931;7485;7485;7485;7485;
+2F932;74CA;74CA;74CA;74CA;
+2F933;3F1B;3F1B;3F1B;3F1B;
+2F934;7524;7524;7524;7524;
+2F935;24C36;24C36;24C36;24C36;
+2F936;753E;753E;753E;753E;
+2F937;24C92;24C92;24C92;24C92;
+2F938;7570;7570;7570;7570;
+2F939;2219F;2219F;2219F;2219F;
+2F93A;7610;7610;7610;7610;
+2F93B;24FA1;24FA1;24FA1;24FA1;
+2F93C;24FB8;24FB8;24FB8;24FB8;
+2F93D;25044;25044;25044;25044;
+2F93E;3FFC;3FFC;3FFC;3FFC;
+2F93F;4008;4008;4008;4008;
+2F940;76F4;76F4;76F4;76F4;
+2F941;250F3;250F3;250F3;250F3;
+2F942;250F2;250F2;250F2;250F2;
+2F943;25119;25119;25119;25119;
+2F944;25133;25133;25133;25133;
+2F945;771E;771E;771E;771E;
+2F946;771F;771F;771F;771F;
+2F947;771F;771F;771F;771F;
+2F948;774A;774A;774A;774A;
+2F949;4039;4039;4039;4039;
+2F94A;778B;778B;778B;778B;
+2F94B;4046;4046;4046;4046;
+2F94C;4096;4096;4096;4096;
+2F94D;2541D;2541D;2541D;2541D;
+2F94E;784E;784E;784E;784E;
+2F94F;788C;788C;788C;788C;
+2F950;78CC;78CC;78CC;78CC;
+2F951;40E3;40E3;40E3;40E3;
+2F952;25626;25626;25626;25626;
+2F953;7956;7956;7956;7956;
+2F954;2569A;2569A;2569A;2569A;
+2F955;256C5;256C5;256C5;256C5;
+2F956;798F;798F;798F;798F;
+2F957;79EB;79EB;79EB;79EB;
+2F958;412F;412F;412F;412F;
+2F959;7A40;7A40;7A40;7A40;
+2F95A;7A4A;7A4A;7A4A;7A4A;
+2F95B;7A4F;7A4F;7A4F;7A4F;
+2F95C;2597C;2597C;2597C;2597C;
+2F95D;25AA7;25AA7;25AA7;25AA7;
+2F95E;25AA7;25AA7;25AA7;25AA7;
+2F95F;7AAE;7AAE;7AAE;7AAE;
+2F960;4202;4202;4202;4202;
+2F961;25BAB;25BAB;25BAB;25BAB;
+2F962;7BC6;7BC6;7BC6;7BC6;
+2F963;7BC9;7BC9;7BC9;7BC9;
+2F964;4227;4227;4227;4227;
+2F965;25C80;25C80;25C80;25C80;
+2F966;7CD2;7CD2;7CD2;7CD2;
+2F967;42A0;42A0;42A0;42A0;
+2F968;7CE8;7CE8;7CE8;7CE8;
+2F969;7CE3;7CE3;7CE3;7CE3;
+2F96A;7D00;7D00;7D00;7D00;
+2F96B;25F86;25F86;25F86;25F86;
+2F96C;7D63;7D63;7D63;7D63;
+2F96D;4301;4301;4301;4301;
+2F96E;7DC7;7DC7;7DC7;7DC7;
+2F96F;7E02;7E02;7E02;7E02;
+2F970;7E45;7E45;7E45;7E45;
+2F971;4334;4334;4334;4334;
+2F972;26228;26228;26228;26228;
+2F973;26247;26247;26247;26247;
+2F974;4359;4359;4359;4359;
+2F975;262D9;262D9;262D9;262D9;
+2F976;7F7A;7F7A;7F7A;7F7A;
+2F977;2633E;2633E;2633E;2633E;
+2F978;7F95;7F95;7F95;7F95;
+2F979;7FFA;7FFA;7FFA;7FFA;
+2F97A;8005;8005;8005;8005;
+2F97B;264DA;264DA;264DA;264DA;
+2F97C;26523;26523;26523;26523;
+2F97D;8060;8060;8060;8060;
+2F97E;265A8;265A8;265A8;265A8;
+2F97F;8070;8070;8070;8070;
+2F980;2335F;2335F;2335F;2335F;
+2F981;43D5;43D5;43D5;43D5;
+2F982;80B2;80B2;80B2;80B2;
+2F983;8103;8103;8103;8103;
+2F984;440B;440B;440B;440B;
+2F985;813E;813E;813E;813E;
+2F986;5AB5;5AB5;5AB5;5AB5;
+2F987;267A7;267A7;267A7;267A7;
+2F988;267B5;267B5;267B5;267B5;
+2F989;23393;23393;23393;23393;
+2F98A;2339C;2339C;2339C;2339C;
+2F98B;8201;8201;8201;8201;
+2F98C;8204;8204;8204;8204;
+2F98D;8F9E;8F9E;8F9E;8F9E;
+2F98E;446B;446B;446B;446B;
+2F98F;8291;8291;8291;8291;
+2F990;828B;828B;828B;828B;
+2F991;829D;829D;829D;829D;
+2F992;52B3;52B3;52B3;52B3;
+2F993;82B1;82B1;82B1;82B1;
+2F994;82B3;82B3;82B3;82B3;
+2F995;82BD;82BD;82BD;82BD;
+2F996;82E6;82E6;82E6;82E6;
+2F997;26B3C;26B3C;26B3C;26B3C;
+2F998;82E5;82E5;82E5;82E5;
+2F999;831D;831D;831D;831D;
+2F99A;8363;8363;8363;8363;
+2F99B;83AD;83AD;83AD;83AD;
+2F99C;8323;8323;8323;8323;
+2F99D;83BD;83BD;83BD;83BD;
+2F99E;83E7;83E7;83E7;83E7;
+2F99F;8457;8457;8457;8457;
+2F9A0;8353;8353;8353;8353;
+2F9A1;83CA;83CA;83CA;83CA;
+2F9A2;83CC;83CC;83CC;83CC;
+2F9A3;83DC;83DC;83DC;83DC;
+2F9A4;26C36;26C36;26C36;26C36;
+2F9A5;26D6B;26D6B;26D6B;26D6B;
+2F9A6;26CD5;26CD5;26CD5;26CD5;
+2F9A7;452B;452B;452B;452B;
+2F9A8;84F1;84F1;84F1;84F1;
+2F9A9;84F3;84F3;84F3;84F3;
+2F9AA;8516;8516;8516;8516;
+2F9AB;273CA;273CA;273CA;273CA;
+2F9AC;8564;8564;8564;8564;
+2F9AD;26F2C;26F2C;26F2C;26F2C;
+2F9AE;455D;455D;455D;455D;
+2F9AF;4561;4561;4561;4561;
+2F9B0;26FB1;26FB1;26FB1;26FB1;
+2F9B1;270D2;270D2;270D2;270D2;
+2F9B2;456B;456B;456B;456B;
+2F9B3;8650;8650;8650;8650;
+2F9B4;865C;865C;865C;865C;
+2F9B5;8667;8667;8667;8667;
+2F9B6;8669;8669;8669;8669;
+2F9B7;86A9;86A9;86A9;86A9;
+2F9B8;8688;8688;8688;8688;
+2F9B9;870E;870E;870E;870E;
+2F9BA;86E2;86E2;86E2;86E2;
+2F9BB;8779;8779;8779;8779;
+2F9BC;8728;8728;8728;8728;
+2F9BD;876B;876B;876B;876B;
+2F9BE;8786;8786;8786;8786;
+2F9BF;4D57;4D57;4D57;4D57;
+2F9C0;87E1;87E1;87E1;87E1;
+2F9C1;8801;8801;8801;8801;
+2F9C2;45F9;45F9;45F9;45F9;
+2F9C3;8860;8860;8860;8860;
+2F9C4;8863;8863;8863;8863;
+2F9C5;27667;27667;27667;27667;
+2F9C6;88D7;88D7;88D7;88D7;
+2F9C7;88DE;88DE;88DE;88DE;
+2F9C8;4635;4635;4635;4635;
+2F9C9;88FA;88FA;88FA;88FA;
+2F9CA;34BB;34BB;34BB;34BB;
+2F9CB;278AE;278AE;278AE;278AE;
+2F9CC;27966;27966;27966;27966;
+2F9CD;46BE;46BE;46BE;46BE;
+2F9CE;46C7;46C7;46C7;46C7;
+2F9CF;8AA0;8AA0;8AA0;8AA0;
+2F9D0;8AED;8AED;8AED;8AED;
+2F9D1;8B8A;8B8A;8B8A;8B8A;
+2F9D2;8C55;8C55;8C55;8C55;
+2F9D3;27CA8;27CA8;27CA8;27CA8;
+2F9D4;8CAB;8CAB;8CAB;8CAB;
+2F9D5;8CC1;8CC1;8CC1;8CC1;
+2F9D6;8D1B;8D1B;8D1B;8D1B;
+2F9D7;8D77;8D77;8D77;8D77;
+2F9D8;27F2F;27F2F;27F2F;27F2F;
+2F9D9;20804;20804;20804;20804;
+2F9DA;8DCB;8DCB;8DCB;8DCB;
+2F9DB;8DBC;8DBC;8DBC;8DBC;
+2F9DC;8DF0;8DF0;8DF0;8DF0;
+2F9DD;208DE;208DE;208DE;208DE;
+2F9DE;8ED4;8ED4;8ED4;8ED4;
+2F9DF;8F38;8F38;8F38;8F38;
+2F9E0;285D2;285D2;285D2;285D2;
+2F9E1;285ED;285ED;285ED;285ED;
+2F9E2;9094;9094;9094;9094;
+2F9E3;90F1;90F1;90F1;90F1;
+2F9E4;9111;9111;9111;9111;
+2F9E5;2872E;2872E;2872E;2872E;
+2F9E6;911B;911B;911B;911B;
+2F9E7;9238;9238;9238;9238;
+2F9E8;92D7;92D7;92D7;92D7;
+2F9E9;92D8;92D8;92D8;92D8;
+2F9EA;927C;927C;927C;927C;
+2F9EB;93F9;93F9;93F9;93F9;
+2F9EC;9415;9415;9415;9415;
+2F9ED;28BFA;28BFA;28BFA;28BFA;
+2F9EE;958B;958B;958B;958B;
+2F9EF;4995;4995;4995;4995;
+2F9F0;95B7;95B7;95B7;95B7;
+2F9F1;28D77;28D77;28D77;28D77;
+2F9F2;49E6;49E6;49E6;49E6;
+2F9F3;96C3;96C3;96C3;96C3;
+2F9F4;5DB2;5DB2;5DB2;5DB2;
+2F9F5;9723;9723;9723;9723;
+2F9F6;29145;29145;29145;29145;
+2F9F7;2921A;2921A;2921A;2921A;
+2F9F8;4A6E;4A6E;4A6E;4A6E;
+2F9F9;4A76;4A76;4A76;4A76;
+2F9FA;97E0;97E0;97E0;97E0;
+2F9FB;2940A;2940A;2940A;2940A;
+2F9FC;4AB2;4AB2;4AB2;4AB2;
+2F9FD;29496;29496;29496;29496;
+2F9FE;980B;980B;980B;980B;
+2F9FF;980B;980B;980B;980B;
+2FA00;9829;9829;9829;9829;
+2FA01;295B6;295B6;295B6;295B6;
+2FA02;98E2;98E2;98E2;98E2;
+2FA03;4B33;4B33;4B33;4B33;
+2FA04;9929;9929;9929;9929;
+2FA05;99A7;99A7;99A7;99A7;
+2FA06;99C2;99C2;99C2;99C2;
+2FA07;99FE;99FE;99FE;99FE;
+2FA08;4BCE;4BCE;4BCE;4BCE;
+2FA09;29B30;29B30;29B30;29B30;
+2FA0A;9B12;9B12;9B12;9B12;
+2FA0B;9C40;9C40;9C40;9C40;
+2FA0C;9CFD;9CFD;9CFD;9CFD;
+2FA0D;4CCE;4CCE;4CCE;4CCE;
+2FA0E;4CED;4CED;4CED;4CED;
+2FA0F;9D67;9D67;9D67;9D67;
+2FA10;2A0CE;2A0CE;2A0CE;2A0CE;
+2FA11;4CF8;4CF8;4CF8;4CF8;
+2FA12;2A105;2A105;2A105;2A105;
+2FA13;2A20E;2A20E;2A20E;2A20E;
+2FA14;2A291;2A291;2A291;2A291;
+2FA15;9EBB;9EBB;9EBB;9EBB;
+2FA16;4D56;4D56;4D56;4D56;
+2FA17;9EF9;9EF9;9EF9;9EF9;
+2FA18;9EFE;9EFE;9EFE;9EFE;
+2FA19;9F05;9F05;9F05;9F05;
+2FA1A;9F0F;9F0F;9F0F;9F0F;
+2FA1B;9F16;9F16;9F16;9F16;
+2FA1C;9F3B;9F3B;9F3B;9F3B;
+2FA1D;2A600;2A600;2A600;2A600;
+#
+@Part2 # Canonical Order Test
+#
+0061 0315 0300 05AE 0300 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0300 0315 0300 05AE 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0315 0300 05AE 0301 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;
+0061 0301 0315 0300 05AE 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;
+0061 0315 0300 05AE 0302 0062;00E0 05AE 0302 0315 0062;0061 05AE 0300 0302 0315 0062;00E0 05AE 0302 0315 0062;0061 05AE 0300 0302 0315 0062;
+0061 0302 0315 0300 05AE 0062;1EA7 05AE 0315 0062;0061 05AE 0302 0300 0315 0062;1EA7 05AE 0315 0062;0061 05AE 0302 0300 0315 0062;
+0061 0315 0300 05AE 0303 0062;00E0 05AE 0303 0315 0062;0061 05AE 0300 0303 0315 0062;00E0 05AE 0303 0315 0062;0061 05AE 0300 0303 0315 0062;
+0061 0303 0315 0300 05AE 0062;00E3 05AE 0300 0315 0062;0061 05AE 0303 0300 0315 0062;00E3 05AE 0300 0315 0062;0061 05AE 0303 0300 0315 0062;
+0061 0315 0300 05AE 0304 0062;00E0 05AE 0304 0315 0062;0061 05AE 0300 0304 0315 0062;00E0 05AE 0304 0315 0062;0061 05AE 0300 0304 0315 0062;
+0061 0304 0315 0300 05AE 0062;0101 05AE 0300 0315 0062;0061 05AE 0304 0300 0315 0062;0101 05AE 0300 0315 0062;0061 05AE 0304 0300 0315 0062;
+0061 0315 0300 05AE 0305 0062;00E0 05AE 0305 0315 0062;0061 05AE 0300 0305 0315 0062;00E0 05AE 0305 0315 0062;0061 05AE 0300 0305 0315 0062;
+0061 0305 0315 0300 05AE 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;
+0061 0315 0300 05AE 0306 0062;00E0 05AE 0306 0315 0062;0061 05AE 0300 0306 0315 0062;00E0 05AE 0306 0315 0062;0061 05AE 0300 0306 0315 0062;
+0061 0306 0315 0300 05AE 0062;1EB1 05AE 0315 0062;0061 05AE 0306 0300 0315 0062;1EB1 05AE 0315 0062;0061 05AE 0306 0300 0315 0062;
+0061 0315 0300 05AE 0307 0062;00E0 05AE 0307 0315 0062;0061 05AE 0300 0307 0315 0062;00E0 05AE 0307 0315 0062;0061 05AE 0300 0307 0315 0062;
+0061 0307 0315 0300 05AE 0062;0227 05AE 0300 0315 0062;0061 05AE 0307 0300 0315 0062;0227 05AE 0300 0315 0062;0061 05AE 0307 0300 0315 0062;
+0061 0315 0300 05AE 0308 0062;00E0 05AE 0308 0315 0062;0061 05AE 0300 0308 0315 0062;00E0 05AE 0308 0315 0062;0061 05AE 0300 0308 0315 0062;
+0061 0308 0315 0300 05AE 0062;00E4 05AE 0300 0315 0062;0061 05AE 0308 0300 0315 0062;00E4 05AE 0300 0315 0062;0061 05AE 0308 0300 0315 0062;
+0061 0315 0300 05AE 0309 0062;00E0 05AE 0309 0315 0062;0061 05AE 0300 0309 0315 0062;00E0 05AE 0309 0315 0062;0061 05AE 0300 0309 0315 0062;
+0061 0309 0315 0300 05AE 0062;1EA3 05AE 0300 0315 0062;0061 05AE 0309 0300 0315 0062;1EA3 05AE 0300 0315 0062;0061 05AE 0309 0300 0315 0062;
+0061 0315 0300 05AE 030A 0062;00E0 05AE 030A 0315 0062;0061 05AE 0300 030A 0315 0062;00E0 05AE 030A 0315 0062;0061 05AE 0300 030A 0315 0062;
+0061 030A 0315 0300 05AE 0062;00E5 05AE 0300 0315 0062;0061 05AE 030A 0300 0315 0062;00E5 05AE 0300 0315 0062;0061 05AE 030A 0300 0315 0062;
+0061 0315 0300 05AE 030B 0062;00E0 05AE 030B 0315 0062;0061 05AE 0300 030B 0315 0062;00E0 05AE 030B 0315 0062;0061 05AE 0300 030B 0315 0062;
+0061 030B 0315 0300 05AE 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;
+0061 0315 0300 05AE 030C 0062;00E0 05AE 030C 0315 0062;0061 05AE 0300 030C 0315 0062;00E0 05AE 030C 0315 0062;0061 05AE 0300 030C 0315 0062;
+0061 030C 0315 0300 05AE 0062;01CE 05AE 0300 0315 0062;0061 05AE 030C 0300 0315 0062;01CE 05AE 0300 0315 0062;0061 05AE 030C 0300 0315 0062;
+0061 0315 0300 05AE 030D 0062;00E0 05AE 030D 0315 0062;0061 05AE 0300 030D 0315 0062;00E0 05AE 030D 0315 0062;0061 05AE 0300 030D 0315 0062;
+0061 030D 0315 0300 05AE 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;
+0061 0315 0300 05AE 030E 0062;00E0 05AE 030E 0315 0062;0061 05AE 0300 030E 0315 0062;00E0 05AE 030E 0315 0062;0061 05AE 0300 030E 0315 0062;
+0061 030E 0315 0300 05AE 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;
+0061 0315 0300 05AE 030F 0062;00E0 05AE 030F 0315 0062;0061 05AE 0300 030F 0315 0062;00E0 05AE 030F 0315 0062;0061 05AE 0300 030F 0315 0062;
+0061 030F 0315 0300 05AE 0062;0201 05AE 0300 0315 0062;0061 05AE 030F 0300 0315 0062;0201 05AE 0300 0315 0062;0061 05AE 030F 0300 0315 0062;
+0061 0315 0300 05AE 0310 0062;00E0 05AE 0310 0315 0062;0061 05AE 0300 0310 0315 0062;00E0 05AE 0310 0315 0062;0061 05AE 0300 0310 0315 0062;
+0061 0310 0315 0300 05AE 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;
+0061 0315 0300 05AE 0311 0062;00E0 05AE 0311 0315 0062;0061 05AE 0300 0311 0315 0062;00E0 05AE 0311 0315 0062;0061 05AE 0300 0311 0315 0062;
+0061 0311 0315 0300 05AE 0062;0203 05AE 0300 0315 0062;0061 05AE 0311 0300 0315 0062;0203 05AE 0300 0315 0062;0061 05AE 0311 0300 0315 0062;
+0061 0315 0300 05AE 0312 0062;00E0 05AE 0312 0315 0062;0061 05AE 0300 0312 0315 0062;00E0 05AE 0312 0315 0062;0061 05AE 0300 0312 0315 0062;
+0061 0312 0315 0300 05AE 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;
+0061 0315 0300 05AE 0313 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;
+0061 0313 0315 0300 05AE 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;
+0061 0315 0300 05AE 0314 0062;00E0 05AE 0314 0315 0062;0061 05AE 0300 0314 0315 0062;00E0 05AE 0314 0315 0062;0061 05AE 0300 0314 0315 0062;
+0061 0314 0315 0300 05AE 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;
+0061 0362 0315 0300 0315 0062;00E0 0315 0315 0362 0062;0061 0300 0315 0315 0362 0062;00E0 0315 0315 0362 0062;0061 0300 0315 0315 0362 0062;
+0061 0315 0362 0315 0300 0062;00E0 0315 0315 0362 0062;0061 0300 0315 0315 0362 0062;00E0 0315 0315 0362 0062;0061 0300 0315 0315 0362 0062;
+0061 059A 0316 302A 0316 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;
+0061 0316 059A 0316 302A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;
+0061 059A 0316 302A 0317 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;
+0061 0317 059A 0316 302A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;
+0061 059A 0316 302A 0318 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;
+0061 0318 059A 0316 302A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;
+0061 059A 0316 302A 0319 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;
+0061 0319 059A 0316 302A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;
+0061 0362 0315 0300 031A 0062;00E0 0315 031A 0362 0062;0061 0300 0315 031A 0362 0062;00E0 0315 031A 0362 0062;0061 0300 0315 031A 0362 0062;
+0061 031A 0362 0315 0300 0062;00E0 031A 0315 0362 0062;0061 0300 031A 0315 0362 0062;00E0 031A 0315 0362 0062;0061 0300 031A 0315 0362 0062;
+0061 302A 031B 0321 031B 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;
+0061 031B 302A 031B 0321 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;
+0061 059A 0316 302A 031C 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;
+0061 031C 059A 0316 302A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;
+0061 059A 0316 302A 031D 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;
+0061 031D 059A 0316 302A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;
+0061 059A 0316 302A 031E 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;
+0061 031E 059A 0316 302A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;
+0061 059A 0316 302A 031F 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;
+0061 031F 059A 0316 302A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;
+0061 059A 0316 302A 0320 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;
+0061 0320 059A 0316 302A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;
+0061 031B 0321 0F74 0321 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;
+0061 0321 031B 0321 0F74 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;
+0061 031B 0321 0F74 0322 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;
+0061 0322 031B 0321 0F74 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;
+0061 059A 0316 302A 0323 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;
+0061 0323 059A 0316 302A 0062;1EA1 302A 0316 059A 0062;0061 302A 0323 0316 059A 0062;1EA1 302A 0316 059A 0062;0061 302A 0323 0316 059A 0062;
+0061 059A 0316 302A 0324 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;
+0061 0324 059A 0316 302A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;
+0061 059A 0316 302A 0325 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;
+0061 0325 059A 0316 302A 0062;1E01 302A 0316 059A 0062;0061 302A 0325 0316 059A 0062;1E01 302A 0316 059A 0062;0061 302A 0325 0316 059A 0062;
+0061 059A 0316 302A 0326 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;
+0061 0326 059A 0316 302A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;
+0061 031B 0321 0F74 0327 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;
+0061 0327 031B 0321 0F74 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;
+0061 031B 0321 0F74 0328 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;
+0061 0328 031B 0321 0F74 0062;0105 0F74 0321 031B 0062;0061 0F74 0328 0321 031B 0062;0105 0F74 0321 031B 0062;0061 0F74 0328 0321 031B 0062;
+0061 059A 0316 302A 0329 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;
+0061 0329 059A 0316 302A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;
+0061 059A 0316 302A 032A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;
+0061 032A 059A 0316 302A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;
+0061 059A 0316 302A 032B 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;
+0061 032B 059A 0316 302A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;
+0061 059A 0316 302A 032C 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;
+0061 032C 059A 0316 302A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;
+0061 059A 0316 302A 032D 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;
+0061 032D 059A 0316 302A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;
+0061 059A 0316 302A 032E 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;
+0061 032E 059A 0316 302A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;
+0061 059A 0316 302A 032F 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;
+0061 032F 059A 0316 302A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;
+0061 059A 0316 302A 0330 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;
+0061 0330 059A 0316 302A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;
+0061 059A 0316 302A 0331 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;
+0061 0331 059A 0316 302A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;
+0061 059A 0316 302A 0332 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;
+0061 0332 059A 0316 302A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;
+0061 059A 0316 302A 0333 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;
+0061 0333 059A 0316 302A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;
+0061 093C 0334 0334 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;
+0061 0334 093C 0334 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;
+0061 093C 0334 0335 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;
+0061 0335 093C 0334 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;
+0061 093C 0334 0336 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;
+0061 0336 093C 0334 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;
+0061 093C 0334 0337 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;
+0061 0337 093C 0334 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;
+0061 093C 0334 0338 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;
+0061 0338 093C 0334 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;
+0061 059A 0316 302A 0339 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;
+0061 0339 059A 0316 302A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;
+0061 059A 0316 302A 033A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;
+0061 033A 059A 0316 302A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;
+0061 059A 0316 302A 033B 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;
+0061 033B 059A 0316 302A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;
+0061 059A 0316 302A 033C 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;
+0061 033C 059A 0316 302A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;
+0061 0315 0300 05AE 033D 0062;00E0 05AE 033D 0315 0062;0061 05AE 0300 033D 0315 0062;00E0 05AE 033D 0315 0062;0061 05AE 0300 033D 0315 0062;
+0061 033D 0315 0300 05AE 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;
+0061 0315 0300 05AE 033E 0062;00E0 05AE 033E 0315 0062;0061 05AE 0300 033E 0315 0062;00E0 05AE 033E 0315 0062;0061 05AE 0300 033E 0315 0062;
+0061 033E 0315 0300 05AE 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;
+0061 0315 0300 05AE 033F 0062;00E0 05AE 033F 0315 0062;0061 05AE 0300 033F 0315 0062;00E0 05AE 033F 0315 0062;0061 05AE 0300 033F 0315 0062;
+0061 033F 0315 0300 05AE 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;
+0061 0315 0300 05AE 0340 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0340 0315 0300 05AE 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0315 0300 05AE 0341 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;
+0061 0341 0315 0300 05AE 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;
+0061 0315 0300 05AE 0342 0062;00E0 05AE 0342 0315 0062;0061 05AE 0300 0342 0315 0062;00E0 05AE 0342 0315 0062;0061 05AE 0300 0342 0315 0062;
+0061 0342 0315 0300 05AE 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;
+0061 0315 0300 05AE 0343 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;
+0061 0343 0315 0300 05AE 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;
+0061 0315 0300 05AE 0344 0062;00E0 05AE 0308 0301 0315 0062;0061 05AE 0300 0308 0301 0315 0062;00E0 05AE 0308 0301 0315 0062;0061 05AE 0300 0308 0301 0315 0062;
+0061 0344 0315 0300 05AE 0062;00E4 05AE 0301 0300 0315 0062;0061 05AE 0308 0301 0300 0315 0062;00E4 05AE 0301 0300 0315 0062;0061 05AE 0308 0301 0300 0315 0062;
+0061 0345 0360 0345 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;
+0061 0345 0345 0360 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;
+0061 0315 0300 05AE 0346 0062;00E0 05AE 0346 0315 0062;0061 05AE 0300 0346 0315 0062;00E0 05AE 0346 0315 0062;0061 05AE 0300 0346 0315 0062;
+0061 0346 0315 0300 05AE 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;
+0061 059A 0316 302A 0347 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;
+0061 0347 059A 0316 302A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;
+0061 059A 0316 302A 0348 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;
+0061 0348 059A 0316 302A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;
+0061 059A 0316 302A 0349 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;
+0061 0349 059A 0316 302A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;
+0061 0315 0300 05AE 034A 0062;00E0 05AE 034A 0315 0062;0061 05AE 0300 034A 0315 0062;00E0 05AE 034A 0315 0062;0061 05AE 0300 034A 0315 0062;
+0061 034A 0315 0300 05AE 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;
+0061 0315 0300 05AE 034B 0062;00E0 05AE 034B 0315 0062;0061 05AE 0300 034B 0315 0062;00E0 05AE 034B 0315 0062;0061 05AE 0300 034B 0315 0062;
+0061 034B 0315 0300 05AE 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;
+0061 0315 0300 05AE 034C 0062;00E0 05AE 034C 0315 0062;0061 05AE 0300 034C 0315 0062;00E0 05AE 034C 0315 0062;0061 05AE 0300 034C 0315 0062;
+0061 034C 0315 0300 05AE 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;
+0061 059A 0316 302A 034D 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;
+0061 034D 059A 0316 302A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;
+0061 059A 0316 302A 034E 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;
+0061 034E 059A 0316 302A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;
+0061 0345 0360 0362 0360 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;
+0061 0360 0345 0360 0362 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;
+0061 0345 0360 0362 0361 0062;0061 0362 0360 0361 0345 0062;0061 0362 0360 0361 0345 0062;0061 0362 0360 0361 0345 0062;0061 0362 0360 0361 0345 0062;
+0061 0361 0345 0360 0362 0062;0061 0362 0361 0360 0345 0062;0061 0362 0361 0360 0345 0062;0061 0362 0361 0360 0345 0062;0061 0362 0361 0360 0345 0062;
+0061 0360 0362 0315 0362 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;
+0061 0362 0360 0362 0315 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;
+0061 0315 0300 05AE 0363 0062;00E0 05AE 0363 0315 0062;0061 05AE 0300 0363 0315 0062;00E0 05AE 0363 0315 0062;0061 05AE 0300 0363 0315 0062;
+0061 0363 0315 0300 05AE 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;
+0061 0315 0300 05AE 0364 0062;00E0 05AE 0364 0315 0062;0061 05AE 0300 0364 0315 0062;00E0 05AE 0364 0315 0062;0061 05AE 0300 0364 0315 0062;
+0061 0364 0315 0300 05AE 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;
+0061 0315 0300 05AE 0365 0062;00E0 05AE 0365 0315 0062;0061 05AE 0300 0365 0315 0062;00E0 05AE 0365 0315 0062;0061 05AE 0300 0365 0315 0062;
+0061 0365 0315 0300 05AE 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;
+0061 0315 0300 05AE 0366 0062;00E0 05AE 0366 0315 0062;0061 05AE 0300 0366 0315 0062;00E0 05AE 0366 0315 0062;0061 05AE 0300 0366 0315 0062;
+0061 0366 0315 0300 05AE 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;
+0061 0315 0300 05AE 0367 0062;00E0 05AE 0367 0315 0062;0061 05AE 0300 0367 0315 0062;00E0 05AE 0367 0315 0062;0061 05AE 0300 0367 0315 0062;
+0061 0367 0315 0300 05AE 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;
+0061 0315 0300 05AE 0368 0062;00E0 05AE 0368 0315 0062;0061 05AE 0300 0368 0315 0062;00E0 05AE 0368 0315 0062;0061 05AE 0300 0368 0315 0062;
+0061 0368 0315 0300 05AE 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;
+0061 0315 0300 05AE 0369 0062;00E0 05AE 0369 0315 0062;0061 05AE 0300 0369 0315 0062;00E0 05AE 0369 0315 0062;0061 05AE 0300 0369 0315 0062;
+0061 0369 0315 0300 05AE 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;
+0061 0315 0300 05AE 036A 0062;00E0 05AE 036A 0315 0062;0061 05AE 0300 036A 0315 0062;00E0 05AE 036A 0315 0062;0061 05AE 0300 036A 0315 0062;
+0061 036A 0315 0300 05AE 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;
+0061 0315 0300 05AE 036B 0062;00E0 05AE 036B 0315 0062;0061 05AE 0300 036B 0315 0062;00E0 05AE 036B 0315 0062;0061 05AE 0300 036B 0315 0062;
+0061 036B 0315 0300 05AE 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;
+0061 0315 0300 05AE 036C 0062;00E0 05AE 036C 0315 0062;0061 05AE 0300 036C 0315 0062;00E0 05AE 036C 0315 0062;0061 05AE 0300 036C 0315 0062;
+0061 036C 0315 0300 05AE 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;
+0061 0315 0300 05AE 036D 0062;00E0 05AE 036D 0315 0062;0061 05AE 0300 036D 0315 0062;00E0 05AE 036D 0315 0062;0061 05AE 0300 036D 0315 0062;
+0061 036D 0315 0300 05AE 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;
+0061 0315 0300 05AE 036E 0062;00E0 05AE 036E 0315 0062;0061 05AE 0300 036E 0315 0062;00E0 05AE 036E 0315 0062;0061 05AE 0300 036E 0315 0062;
+0061 036E 0315 0300 05AE 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;
+0061 0315 0300 05AE 036F 0062;00E0 05AE 036F 0315 0062;0061 05AE 0300 036F 0315 0062;00E0 05AE 036F 0315 0062;0061 05AE 0300 036F 0315 0062;
+0061 036F 0315 0300 05AE 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;
+0061 0315 0300 05AE 0483 0062;00E0 05AE 0483 0315 0062;0061 05AE 0300 0483 0315 0062;00E0 05AE 0483 0315 0062;0061 05AE 0300 0483 0315 0062;
+0061 0483 0315 0300 05AE 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;
+0061 0315 0300 05AE 0484 0062;00E0 05AE 0484 0315 0062;0061 05AE 0300 0484 0315 0062;00E0 05AE 0484 0315 0062;0061 05AE 0300 0484 0315 0062;
+0061 0484 0315 0300 05AE 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;
+0061 0315 0300 05AE 0485 0062;00E0 05AE 0485 0315 0062;0061 05AE 0300 0485 0315 0062;00E0 05AE 0485 0315 0062;0061 05AE 0300 0485 0315 0062;
+0061 0485 0315 0300 05AE 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;
+0061 0315 0300 05AE 0486 0062;00E0 05AE 0486 0315 0062;0061 05AE 0300 0486 0315 0062;00E0 05AE 0486 0315 0062;0061 05AE 0300 0486 0315 0062;
+0061 0486 0315 0300 05AE 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;
+0061 059A 0316 302A 0591 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;
+0061 0591 059A 0316 302A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;
+0061 0315 0300 05AE 0592 0062;00E0 05AE 0592 0315 0062;0061 05AE 0300 0592 0315 0062;00E0 05AE 0592 0315 0062;0061 05AE 0300 0592 0315 0062;
+0061 0592 0315 0300 05AE 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;
+0061 0315 0300 05AE 0593 0062;00E0 05AE 0593 0315 0062;0061 05AE 0300 0593 0315 0062;00E0 05AE 0593 0315 0062;0061 05AE 0300 0593 0315 0062;
+0061 0593 0315 0300 05AE 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;
+0061 0315 0300 05AE 0594 0062;00E0 05AE 0594 0315 0062;0061 05AE 0300 0594 0315 0062;00E0 05AE 0594 0315 0062;0061 05AE 0300 0594 0315 0062;
+0061 0594 0315 0300 05AE 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;
+0061 0315 0300 05AE 0595 0062;00E0 05AE 0595 0315 0062;0061 05AE 0300 0595 0315 0062;00E0 05AE 0595 0315 0062;0061 05AE 0300 0595 0315 0062;
+0061 0595 0315 0300 05AE 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;
+0061 059A 0316 302A 0596 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;
+0061 0596 059A 0316 302A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;
+0061 0315 0300 05AE 0597 0062;00E0 05AE 0597 0315 0062;0061 05AE 0300 0597 0315 0062;00E0 05AE 0597 0315 0062;0061 05AE 0300 0597 0315 0062;
+0061 0597 0315 0300 05AE 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;
+0061 0315 0300 05AE 0598 0062;00E0 05AE 0598 0315 0062;0061 05AE 0300 0598 0315 0062;00E0 05AE 0598 0315 0062;0061 05AE 0300 0598 0315 0062;
+0061 0598 0315 0300 05AE 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;
+0061 0315 0300 05AE 0599 0062;00E0 05AE 0599 0315 0062;0061 05AE 0300 0599 0315 0062;00E0 05AE 0599 0315 0062;0061 05AE 0300 0599 0315 0062;
+0061 0599 0315 0300 05AE 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;
+0061 302E 059A 0316 059A 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;
+0061 059A 302E 059A 0316 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;
+0061 059A 0316 302A 059B 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;
+0061 059B 059A 0316 302A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;
+0061 0315 0300 05AE 059C 0062;00E0 05AE 059C 0315 0062;0061 05AE 0300 059C 0315 0062;00E0 05AE 059C 0315 0062;0061 05AE 0300 059C 0315 0062;
+0061 059C 0315 0300 05AE 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;
+0061 0315 0300 05AE 059D 0062;00E0 05AE 059D 0315 0062;0061 05AE 0300 059D 0315 0062;00E0 05AE 059D 0315 0062;0061 05AE 0300 059D 0315 0062;
+0061 059D 0315 0300 05AE 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;
+0061 0315 0300 05AE 059E 0062;00E0 05AE 059E 0315 0062;0061 05AE 0300 059E 0315 0062;00E0 05AE 059E 0315 0062;0061 05AE 0300 059E 0315 0062;
+0061 059E 0315 0300 05AE 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;
+0061 0315 0300 05AE 059F 0062;00E0 05AE 059F 0315 0062;0061 05AE 0300 059F 0315 0062;00E0 05AE 059F 0315 0062;0061 05AE 0300 059F 0315 0062;
+0061 059F 0315 0300 05AE 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;
+0061 0315 0300 05AE 05A0 0062;00E0 05AE 05A0 0315 0062;0061 05AE 0300 05A0 0315 0062;00E0 05AE 05A0 0315 0062;0061 05AE 0300 05A0 0315 0062;
+0061 05A0 0315 0300 05AE 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;
+0061 0315 0300 05AE 05A1 0062;00E0 05AE 05A1 0315 0062;0061 05AE 0300 05A1 0315 0062;00E0 05AE 05A1 0315 0062;0061 05AE 0300 05A1 0315 0062;
+0061 05A1 0315 0300 05AE 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;
+0061 059A 0316 302A 05A3 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;
+0061 05A3 059A 0316 302A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;
+0061 059A 0316 302A 05A4 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;
+0061 05A4 059A 0316 302A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;
+0061 059A 0316 302A 05A5 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;
+0061 05A5 059A 0316 302A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;
+0061 059A 0316 302A 05A6 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;
+0061 05A6 059A 0316 302A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;
+0061 059A 0316 302A 05A7 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;
+0061 05A7 059A 0316 302A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;
+0061 0315 0300 05AE 05A8 0062;00E0 05AE 05A8 0315 0062;0061 05AE 0300 05A8 0315 0062;00E0 05AE 05A8 0315 0062;0061 05AE 0300 05A8 0315 0062;
+0061 05A8 0315 0300 05AE 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;
+0061 0315 0300 05AE 05A9 0062;00E0 05AE 05A9 0315 0062;0061 05AE 0300 05A9 0315 0062;00E0 05AE 05A9 0315 0062;0061 05AE 0300 05A9 0315 0062;
+0061 05A9 0315 0300 05AE 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;
+0061 059A 0316 302A 05AA 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;
+0061 05AA 059A 0316 302A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;
+0061 0315 0300 05AE 05AB 0062;00E0 05AE 05AB 0315 0062;0061 05AE 0300 05AB 0315 0062;00E0 05AE 05AB 0315 0062;0061 05AE 0300 05AB 0315 0062;
+0061 05AB 0315 0300 05AE 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;
+0061 0315 0300 05AE 05AC 0062;00E0 05AE 05AC 0315 0062;0061 05AE 0300 05AC 0315 0062;00E0 05AE 05AC 0315 0062;0061 05AE 0300 05AC 0315 0062;
+0061 05AC 0315 0300 05AE 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;
+0061 302E 059A 0316 05AD 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;
+0061 05AD 302E 059A 0316 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;
+0061 0300 05AE 1D16D 05AE 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;
+0061 05AE 0300 05AE 1D16D 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;
+0061 0315 0300 05AE 05AF 0062;00E0 05AE 05AF 0315 0062;0061 05AE 0300 05AF 0315 0062;00E0 05AE 05AF 0315 0062;0061 05AE 0300 05AF 0315 0062;
+0061 05AF 0315 0300 05AE 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;
+0061 05B1 05B0 094D 05B0 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;
+0061 05B0 05B1 05B0 094D 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;
+0061 05B2 05B1 05B0 05B1 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;
+0061 05B1 05B2 05B1 05B0 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;
+0061 05B3 05B2 05B1 05B2 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;
+0061 05B2 05B3 05B2 05B1 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;
+0061 05B4 05B3 05B2 05B3 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;
+0061 05B3 05B4 05B3 05B2 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;
+0061 05B5 05B4 05B3 05B4 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;
+0061 05B4 05B5 05B4 05B3 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;
+0061 05B6 05B5 05B4 05B5 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;
+0061 05B5 05B6 05B5 05B4 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;
+0061 05B7 05B6 05B5 05B6 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;
+0061 05B6 05B7 05B6 05B5 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;
+0061 05B8 05B7 05B6 05B7 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;
+0061 05B7 05B8 05B7 05B6 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;
+0061 05B9 05B8 05B7 05B8 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;
+0061 05B8 05B9 05B8 05B7 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;
+0061 05BB 05B9 05B8 05B9 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;
+0061 05B9 05BB 05B9 05B8 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;
+0061 05BC 05BB 05B9 05BB 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;
+0061 05BB 05BC 05BB 05B9 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;
+0061 05BD 05BC 05BB 05BC 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;
+0061 05BC 05BD 05BC 05BB 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;
+0061 05BF 05BD 05BC 05BD 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;
+0061 05BD 05BF 05BD 05BC 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;
+0061 05C1 05BF 05BD 05BF 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;
+0061 05BF 05C1 05BF 05BD 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;
+0061 05C2 05C1 05BF 05C1 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;
+0061 05C1 05C2 05C1 05BF 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;
+0061 FB1E 05C2 05C1 05C2 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;
+0061 05C2 FB1E 05C2 05C1 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;
+0061 0315 0300 05AE 05C4 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062;
+0061 05C4 0315 0300 05AE 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;
+0061 064C 064B FB1E 064B 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;
+0061 064B 064C 064B FB1E 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;
+0061 064D 064C 064B 064C 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;
+0061 064C 064D 064C 064B 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;
+0061 064E 064D 064C 064D 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;
+0061 064D 064E 064D 064C 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;
+0061 064F 064E 064D 064E 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;
+0061 064E 064F 064E 064D 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;
+0061 0650 064F 064E 064F 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;
+0061 064F 0650 064F 064E 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;
+0061 0651 0650 064F 0650 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;
+0061 0650 0651 0650 064F 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;
+0061 0652 0651 0650 0651 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;
+0061 0651 0652 0651 0650 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;
+0061 0670 0652 0651 0652 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;
+0061 0652 0670 0652 0651 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;
+0061 0315 0300 05AE 0653 0062;00E0 05AE 0653 0315 0062;0061 05AE 0300 0653 0315 0062;00E0 05AE 0653 0315 0062;0061 05AE 0300 0653 0315 0062;
+0061 0653 0315 0300 05AE 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;
+0061 0315 0300 05AE 0654 0062;00E0 05AE 0654 0315 0062;0061 05AE 0300 0654 0315 0062;00E0 05AE 0654 0315 0062;0061 05AE 0300 0654 0315 0062;
+0061 0654 0315 0300 05AE 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;
+0061 059A 0316 302A 0655 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;
+0061 0655 059A 0316 302A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;
+0061 0711 0670 0652 0670 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;
+0061 0670 0711 0670 0652 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;
+0061 0315 0300 05AE 06D6 0062;00E0 05AE 06D6 0315 0062;0061 05AE 0300 06D6 0315 0062;00E0 05AE 06D6 0315 0062;0061 05AE 0300 06D6 0315 0062;
+0061 06D6 0315 0300 05AE 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;
+0061 0315 0300 05AE 06D7 0062;00E0 05AE 06D7 0315 0062;0061 05AE 0300 06D7 0315 0062;00E0 05AE 06D7 0315 0062;0061 05AE 0300 06D7 0315 0062;
+0061 06D7 0315 0300 05AE 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;
+0061 0315 0300 05AE 06D8 0062;00E0 05AE 06D8 0315 0062;0061 05AE 0300 06D8 0315 0062;00E0 05AE 06D8 0315 0062;0061 05AE 0300 06D8 0315 0062;
+0061 06D8 0315 0300 05AE 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;
+0061 0315 0300 05AE 06D9 0062;00E0 05AE 06D9 0315 0062;0061 05AE 0300 06D9 0315 0062;00E0 05AE 06D9 0315 0062;0061 05AE 0300 06D9 0315 0062;
+0061 06D9 0315 0300 05AE 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;
+0061 0315 0300 05AE 06DA 0062;00E0 05AE 06DA 0315 0062;0061 05AE 0300 06DA 0315 0062;00E0 05AE 06DA 0315 0062;0061 05AE 0300 06DA 0315 0062;
+0061 06DA 0315 0300 05AE 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;
+0061 0315 0300 05AE 06DB 0062;00E0 05AE 06DB 0315 0062;0061 05AE 0300 06DB 0315 0062;00E0 05AE 06DB 0315 0062;0061 05AE 0300 06DB 0315 0062;
+0061 06DB 0315 0300 05AE 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;
+0061 0315 0300 05AE 06DC 0062;00E0 05AE 06DC 0315 0062;0061 05AE 0300 06DC 0315 0062;00E0 05AE 06DC 0315 0062;0061 05AE 0300 06DC 0315 0062;
+0061 06DC 0315 0300 05AE 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;
+0061 0315 0300 05AE 06DF 0062;00E0 05AE 06DF 0315 0062;0061 05AE 0300 06DF 0315 0062;00E0 05AE 06DF 0315 0062;0061 05AE 0300 06DF 0315 0062;
+0061 06DF 0315 0300 05AE 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;
+0061 0315 0300 05AE 06E0 0062;00E0 05AE 06E0 0315 0062;0061 05AE 0300 06E0 0315 0062;00E0 05AE 06E0 0315 0062;0061 05AE 0300 06E0 0315 0062;
+0061 06E0 0315 0300 05AE 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;
+0061 0315 0300 05AE 06E1 0062;00E0 05AE 06E1 0315 0062;0061 05AE 0300 06E1 0315 0062;00E0 05AE 06E1 0315 0062;0061 05AE 0300 06E1 0315 0062;
+0061 06E1 0315 0300 05AE 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;
+0061 0315 0300 05AE 06E2 0062;00E0 05AE 06E2 0315 0062;0061 05AE 0300 06E2 0315 0062;00E0 05AE 06E2 0315 0062;0061 05AE 0300 06E2 0315 0062;
+0061 06E2 0315 0300 05AE 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;
+0061 059A 0316 302A 06E3 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;
+0061 06E3 059A 0316 302A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;
+0061 0315 0300 05AE 06E4 0062;00E0 05AE 06E4 0315 0062;0061 05AE 0300 06E4 0315 0062;00E0 05AE 06E4 0315 0062;0061 05AE 0300 06E4 0315 0062;
+0061 06E4 0315 0300 05AE 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;
+0061 0315 0300 05AE 06E7 0062;00E0 05AE 06E7 0315 0062;0061 05AE 0300 06E7 0315 0062;00E0 05AE 06E7 0315 0062;0061 05AE 0300 06E7 0315 0062;
+0061 06E7 0315 0300 05AE 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;
+0061 0315 0300 05AE 06E8 0062;00E0 05AE 06E8 0315 0062;0061 05AE 0300 06E8 0315 0062;00E0 05AE 06E8 0315 0062;0061 05AE 0300 06E8 0315 0062;
+0061 06E8 0315 0300 05AE 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;
+0061 059A 0316 302A 06EA 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;
+0061 06EA 059A 0316 302A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;
+0061 0315 0300 05AE 06EB 0062;00E0 05AE 06EB 0315 0062;0061 05AE 0300 06EB 0315 0062;00E0 05AE 06EB 0315 0062;0061 05AE 0300 06EB 0315 0062;
+0061 06EB 0315 0300 05AE 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;
+0061 0315 0300 05AE 06EC 0062;00E0 05AE 06EC 0315 0062;0061 05AE 0300 06EC 0315 0062;00E0 05AE 06EC 0315 0062;0061 05AE 0300 06EC 0315 0062;
+0061 06EC 0315 0300 05AE 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;
+0061 059A 0316 302A 06ED 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;
+0061 06ED 059A 0316 302A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;
+0061 0C55 0711 0670 0711 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;
+0061 0711 0C55 0711 0670 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;
+0061 0315 0300 05AE 0730 0062;00E0 05AE 0730 0315 0062;0061 05AE 0300 0730 0315 0062;00E0 05AE 0730 0315 0062;0061 05AE 0300 0730 0315 0062;
+0061 0730 0315 0300 05AE 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;
+0061 059A 0316 302A 0731 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;
+0061 0731 059A 0316 302A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;
+0061 0315 0300 05AE 0732 0062;00E0 05AE 0732 0315 0062;0061 05AE 0300 0732 0315 0062;00E0 05AE 0732 0315 0062;0061 05AE 0300 0732 0315 0062;
+0061 0732 0315 0300 05AE 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;
+0061 0315 0300 05AE 0733 0062;00E0 05AE 0733 0315 0062;0061 05AE 0300 0733 0315 0062;00E0 05AE 0733 0315 0062;0061 05AE 0300 0733 0315 0062;
+0061 0733 0315 0300 05AE 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;
+0061 059A 0316 302A 0734 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;
+0061 0734 059A 0316 302A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;
+0061 0315 0300 05AE 0735 0062;00E0 05AE 0735 0315 0062;0061 05AE 0300 0735 0315 0062;00E0 05AE 0735 0315 0062;0061 05AE 0300 0735 0315 0062;
+0061 0735 0315 0300 05AE 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;
+0061 0315 0300 05AE 0736 0062;00E0 05AE 0736 0315 0062;0061 05AE 0300 0736 0315 0062;00E0 05AE 0736 0315 0062;0061 05AE 0300 0736 0315 0062;
+0061 0736 0315 0300 05AE 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;
+0061 059A 0316 302A 0737 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;
+0061 0737 059A 0316 302A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;
+0061 059A 0316 302A 0738 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;
+0061 0738 059A 0316 302A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;
+0061 059A 0316 302A 0739 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;
+0061 0739 059A 0316 302A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;
+0061 0315 0300 05AE 073A 0062;00E0 05AE 073A 0315 0062;0061 05AE 0300 073A 0315 0062;00E0 05AE 073A 0315 0062;0061 05AE 0300 073A 0315 0062;
+0061 073A 0315 0300 05AE 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;
+0061 059A 0316 302A 073B 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;
+0061 073B 059A 0316 302A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;
+0061 059A 0316 302A 073C 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;
+0061 073C 059A 0316 302A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;
+0061 0315 0300 05AE 073D 0062;00E0 05AE 073D 0315 0062;0061 05AE 0300 073D 0315 0062;00E0 05AE 073D 0315 0062;0061 05AE 0300 073D 0315 0062;
+0061 073D 0315 0300 05AE 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;
+0061 059A 0316 302A 073E 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;
+0061 073E 059A 0316 302A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;
+0061 0315 0300 05AE 073F 0062;00E0 05AE 073F 0315 0062;0061 05AE 0300 073F 0315 0062;00E0 05AE 073F 0315 0062;0061 05AE 0300 073F 0315 0062;
+0061 073F 0315 0300 05AE 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;
+0061 0315 0300 05AE 0740 0062;00E0 05AE 0740 0315 0062;0061 05AE 0300 0740 0315 0062;00E0 05AE 0740 0315 0062;0061 05AE 0300 0740 0315 0062;
+0061 0740 0315 0300 05AE 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;
+0061 0315 0300 05AE 0741 0062;00E0 05AE 0741 0315 0062;0061 05AE 0300 0741 0315 0062;00E0 05AE 0741 0315 0062;0061 05AE 0300 0741 0315 0062;
+0061 0741 0315 0300 05AE 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;
+0061 059A 0316 302A 0742 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;
+0061 0742 059A 0316 302A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;
+0061 0315 0300 05AE 0743 0062;00E0 05AE 0743 0315 0062;0061 05AE 0300 0743 0315 0062;00E0 05AE 0743 0315 0062;0061 05AE 0300 0743 0315 0062;
+0061 0743 0315 0300 05AE 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;
+0061 059A 0316 302A 0744 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;
+0061 0744 059A 0316 302A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;
+0061 0315 0300 05AE 0745 0062;00E0 05AE 0745 0315 0062;0061 05AE 0300 0745 0315 0062;00E0 05AE 0745 0315 0062;0061 05AE 0300 0745 0315 0062;
+0061 0745 0315 0300 05AE 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;
+0061 059A 0316 302A 0746 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;
+0061 0746 059A 0316 302A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;
+0061 0315 0300 05AE 0747 0062;00E0 05AE 0747 0315 0062;0061 05AE 0300 0747 0315 0062;00E0 05AE 0747 0315 0062;0061 05AE 0300 0747 0315 0062;
+0061 0747 0315 0300 05AE 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;
+0061 059A 0316 302A 0748 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;
+0061 0748 059A 0316 302A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;
+0061 0315 0300 05AE 0749 0062;00E0 05AE 0749 0315 0062;0061 05AE 0300 0749 0315 0062;00E0 05AE 0749 0315 0062;0061 05AE 0300 0749 0315 0062;
+0061 0749 0315 0300 05AE 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;
+0061 0315 0300 05AE 074A 0062;00E0 05AE 074A 0315 0062;0061 05AE 0300 074A 0315 0062;00E0 05AE 074A 0315 0062;0061 05AE 0300 074A 0315 0062;
+0061 074A 0315 0300 05AE 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;
+0061 3099 093C 0334 093C 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;
+0061 093C 3099 093C 0334 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;
+0061 05B0 094D 3099 094D 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;
+0061 094D 05B0 094D 3099 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;
+0061 0315 0300 05AE 0951 0062;00E0 05AE 0951 0315 0062;0061 05AE 0300 0951 0315 0062;00E0 05AE 0951 0315 0062;0061 05AE 0300 0951 0315 0062;
+0061 0951 0315 0300 05AE 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;
+0061 059A 0316 302A 0952 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;
+0061 0952 059A 0316 302A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;
+0061 0315 0300 05AE 0953 0062;00E0 05AE 0953 0315 0062;0061 05AE 0300 0953 0315 0062;00E0 05AE 0953 0315 0062;0061 05AE 0300 0953 0315 0062;
+0061 0953 0315 0300 05AE 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;
+0061 0315 0300 05AE 0954 0062;00E0 05AE 0954 0315 0062;0061 05AE 0300 0954 0315 0062;00E0 05AE 0954 0315 0062;0061 05AE 0300 0954 0315 0062;
+0061 0954 0315 0300 05AE 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;
+0061 3099 093C 0334 09BC 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;
+0061 09BC 3099 093C 0334 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;
+0061 05B0 094D 3099 09CD 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;
+0061 09CD 05B0 094D 3099 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;
+0061 3099 093C 0334 0A3C 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;
+0061 0A3C 3099 093C 0334 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;
+0061 05B0 094D 3099 0A4D 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;
+0061 0A4D 05B0 094D 3099 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;
+0061 3099 093C 0334 0ABC 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;
+0061 0ABC 3099 093C 0334 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;
+0061 05B0 094D 3099 0ACD 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;
+0061 0ACD 05B0 094D 3099 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;
+0061 3099 093C 0334 0B3C 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;
+0061 0B3C 3099 093C 0334 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;
+0061 05B0 094D 3099 0B4D 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;
+0061 0B4D 05B0 094D 3099 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;
+0061 05B0 094D 3099 0BCD 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;
+0061 0BCD 05B0 094D 3099 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;
+0061 05B0 094D 3099 0C4D 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;
+0061 0C4D 05B0 094D 3099 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;
+0061 0C56 0C55 0711 0C55 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;
+0061 0C55 0C56 0C55 0711 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;
+0061 0E38 0C56 0C55 0C56 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;
+0061 0C56 0E38 0C56 0C55 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;
+0061 05B0 094D 3099 0CCD 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;
+0061 0CCD 05B0 094D 3099 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;
+0061 05B0 094D 3099 0D4D 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;
+0061 0D4D 05B0 094D 3099 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;
+0061 05B0 094D 3099 0DCA 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;
+0061 0DCA 05B0 094D 3099 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;
+0061 0E48 0E38 0C56 0E38 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;
+0061 0E38 0E48 0E38 0C56 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;
+0061 0E48 0E38 0C56 0E39 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;
+0061 0E39 0E48 0E38 0C56 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;
+0061 05B0 094D 3099 0E3A 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;
+0061 0E3A 05B0 094D 3099 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;
+0061 0EB8 0E48 0E38 0E48 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;
+0061 0E48 0EB8 0E48 0E38 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E49 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;
+0061 0E49 0EB8 0E48 0E38 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E4A 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;
+0061 0E4A 0EB8 0E48 0E38 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E4B 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;
+0061 0E4B 0EB8 0E48 0E38 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;
+0061 0EC8 0EB8 0E48 0EB8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;
+0061 0EB8 0EC8 0EB8 0E48 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;
+0061 0EC8 0EB8 0E48 0EB9 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;
+0061 0EB9 0EC8 0EB8 0E48 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;
+0061 0F71 0EC8 0EB8 0EC8 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;
+0061 0EC8 0F71 0EC8 0EB8 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0EC9 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;
+0061 0EC9 0F71 0EC8 0EB8 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0ECA 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;
+0061 0ECA 0F71 0EC8 0EB8 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0ECB 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;
+0061 0ECB 0F71 0EC8 0EB8 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;
+0061 059A 0316 302A 0F18 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;
+0061 0F18 059A 0316 302A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;
+0061 059A 0316 302A 0F19 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;
+0061 0F19 059A 0316 302A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;
+0061 059A 0316 302A 0F35 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;
+0061 0F35 059A 0316 302A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;
+0061 059A 0316 302A 0F37 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;
+0061 0F37 059A 0316 302A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;
+0061 302A 031B 0321 0F39 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;
+0061 0F39 302A 031B 0321 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;
+0061 0F72 0F71 0EC8 0F71 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;
+0061 0F71 0F72 0F71 0EC8 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;
+0061 0F74 0F72 0F71 0F72 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;
+0061 0F72 0F74 0F72 0F71 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;
+0061 0321 0F74 0F72 0F74 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;
+0061 0F74 0321 0F74 0F72 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;
+0061 0F74 0F72 0F71 0F7A 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;
+0061 0F7A 0F74 0F72 0F71 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7B 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;
+0061 0F7B 0F74 0F72 0F71 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7C 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;
+0061 0F7C 0F74 0F72 0F71 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7D 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;
+0061 0F7D 0F74 0F72 0F71 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F80 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;
+0061 0F80 0F74 0F72 0F71 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;
+0061 0315 0300 05AE 0F82 0062;00E0 05AE 0F82 0315 0062;0061 05AE 0300 0F82 0315 0062;00E0 05AE 0F82 0315 0062;0061 05AE 0300 0F82 0315 0062;
+0061 0F82 0315 0300 05AE 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;
+0061 0315 0300 05AE 0F83 0062;00E0 05AE 0F83 0315 0062;0061 05AE 0300 0F83 0315 0062;00E0 05AE 0F83 0315 0062;0061 05AE 0300 0F83 0315 0062;
+0061 0F83 0315 0300 05AE 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;
+0061 05B0 094D 3099 0F84 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;
+0061 0F84 05B0 094D 3099 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;
+0061 0315 0300 05AE 0F86 0062;00E0 05AE 0F86 0315 0062;0061 05AE 0300 0F86 0315 0062;00E0 05AE 0F86 0315 0062;0061 05AE 0300 0F86 0315 0062;
+0061 0F86 0315 0300 05AE 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;
+0061 0315 0300 05AE 0F87 0062;00E0 05AE 0F87 0315 0062;0061 05AE 0300 0F87 0315 0062;00E0 05AE 0F87 0315 0062;0061 05AE 0300 0F87 0315 0062;
+0061 0F87 0315 0300 05AE 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;
+0061 059A 0316 302A 0FC6 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;
+0061 0FC6 059A 0316 302A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;
+0061 3099 093C 0334 1037 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;
+0061 1037 3099 093C 0334 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;
+0061 05B0 094D 3099 1039 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;
+0061 1039 05B0 094D 3099 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;
+0061 05B0 094D 3099 1714 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;
+0061 1714 05B0 094D 3099 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;
+0061 05B0 094D 3099 1734 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;
+0061 1734 05B0 094D 3099 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;
+0061 05B0 094D 3099 17D2 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;
+0061 17D2 05B0 094D 3099 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;
+0061 0300 05AE 1D16D 18A9 0062;00E0 1D16D 05AE 18A9 0062;0061 1D16D 05AE 18A9 0300 0062;00E0 1D16D 05AE 18A9 0062;0061 1D16D 05AE 18A9 0300 0062;
+0061 18A9 0300 05AE 1D16D 0062;00E0 1D16D 18A9 05AE 0062;0061 1D16D 18A9 05AE 0300 0062;00E0 1D16D 18A9 05AE 0062;0061 1D16D 18A9 05AE 0300 0062;
+0061 0315 0300 05AE 20D0 0062;00E0 05AE 20D0 0315 0062;0061 05AE 0300 20D0 0315 0062;00E0 05AE 20D0 0315 0062;0061 05AE 0300 20D0 0315 0062;
+0061 20D0 0315 0300 05AE 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;
+0061 0315 0300 05AE 20D1 0062;00E0 05AE 20D1 0315 0062;0061 05AE 0300 20D1 0315 0062;00E0 05AE 20D1 0315 0062;0061 05AE 0300 20D1 0315 0062;
+0061 20D1 0315 0300 05AE 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;
+0061 093C 0334 20D2 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;
+0061 20D2 093C 0334 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;
+0061 093C 0334 20D3 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;
+0061 20D3 093C 0334 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;
+0061 0315 0300 05AE 20D4 0062;00E0 05AE 20D4 0315 0062;0061 05AE 0300 20D4 0315 0062;00E0 05AE 20D4 0315 0062;0061 05AE 0300 20D4 0315 0062;
+0061 20D4 0315 0300 05AE 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;
+0061 0315 0300 05AE 20D5 0062;00E0 05AE 20D5 0315 0062;0061 05AE 0300 20D5 0315 0062;00E0 05AE 20D5 0315 0062;0061 05AE 0300 20D5 0315 0062;
+0061 20D5 0315 0300 05AE 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;
+0061 0315 0300 05AE 20D6 0062;00E0 05AE 20D6 0315 0062;0061 05AE 0300 20D6 0315 0062;00E0 05AE 20D6 0315 0062;0061 05AE 0300 20D6 0315 0062;
+0061 20D6 0315 0300 05AE 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;
+0061 0315 0300 05AE 20D7 0062;00E0 05AE 20D7 0315 0062;0061 05AE 0300 20D7 0315 0062;00E0 05AE 20D7 0315 0062;0061 05AE 0300 20D7 0315 0062;
+0061 20D7 0315 0300 05AE 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;
+0061 093C 0334 20D8 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;
+0061 20D8 093C 0334 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;
+0061 093C 0334 20D9 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;
+0061 20D9 093C 0334 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;
+0061 093C 0334 20DA 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;
+0061 20DA 093C 0334 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;
+0061 0315 0300 05AE 20DB 0062;00E0 05AE 20DB 0315 0062;0061 05AE 0300 20DB 0315 0062;00E0 05AE 20DB 0315 0062;0061 05AE 0300 20DB 0315 0062;
+0061 20DB 0315 0300 05AE 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;
+0061 0315 0300 05AE 20DC 0062;00E0 05AE 20DC 0315 0062;0061 05AE 0300 20DC 0315 0062;00E0 05AE 20DC 0315 0062;0061 05AE 0300 20DC 0315 0062;
+0061 20DC 0315 0300 05AE 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;
+0061 0315 0300 05AE 20E1 0062;00E0 05AE 20E1 0315 0062;0061 05AE 0300 20E1 0315 0062;00E0 05AE 20E1 0315 0062;0061 05AE 0300 20E1 0315 0062;
+0061 20E1 0315 0300 05AE 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;
+0061 093C 0334 20E5 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;
+0061 20E5 093C 0334 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;
+0061 093C 0334 20E6 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;
+0061 20E6 093C 0334 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;
+0061 0315 0300 05AE 20E7 0062;00E0 05AE 20E7 0315 0062;0061 05AE 0300 20E7 0315 0062;00E0 05AE 20E7 0315 0062;0061 05AE 0300 20E7 0315 0062;
+0061 20E7 0315 0300 05AE 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;
+0061 059A 0316 302A 20E8 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;
+0061 20E8 059A 0316 302A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;
+0061 0315 0300 05AE 20E9 0062;00E0 05AE 20E9 0315 0062;0061 05AE 0300 20E9 0315 0062;00E0 05AE 20E9 0315 0062;0061 05AE 0300 20E9 0315 0062;
+0061 20E9 0315 0300 05AE 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;
+0061 093C 0334 20EA 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;
+0061 20EA 093C 0334 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;
+0061 0316 302A 031B 302A 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;
+0061 302A 0316 302A 031B 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;
+0061 0300 05AE 1D16D 302B 0062;00E0 1D16D 05AE 302B 0062;0061 1D16D 05AE 302B 0300 0062;00E0 1D16D 05AE 302B 0062;0061 1D16D 05AE 302B 0300 0062;
+0061 302B 0300 05AE 1D16D 0062;00E0 1D16D 302B 05AE 0062;0061 1D16D 302B 05AE 0300 0062;00E0 1D16D 302B 05AE 0062;0061 1D16D 302B 05AE 0300 0062;
+0061 0362 0315 0300 302C 0062;00E0 0315 302C 0362 0062;0061 0300 0315 302C 0362 0062;00E0 0315 302C 0362 0062;0061 0300 0315 302C 0362 0062;
+0061 302C 0362 0315 0300 0062;00E0 302C 0315 0362 0062;0061 0300 302C 0315 0362 0062;00E0 302C 0315 0362 0062;0061 0300 302C 0315 0362 0062;
+0061 302E 059A 0316 302D 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;
+0061 302D 302E 059A 0316 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;
+0061 1D16D 302E 059A 302E 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;
+0061 302E 1D16D 302E 059A 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;
+0061 1D16D 302E 059A 302F 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;
+0061 302F 1D16D 302E 059A 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;
+0061 094D 3099 093C 3099 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;
+0061 3099 094D 3099 093C 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;
+0061 094D 3099 093C 309A 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;
+0061 309A 094D 3099 093C 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;
+0061 064B FB1E 05C2 FB1E 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;
+0061 FB1E 064B FB1E 05C2 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;
+0061 0315 0300 05AE FE20 0062;00E0 05AE FE20 0315 0062;0061 05AE 0300 FE20 0315 0062;00E0 05AE FE20 0315 0062;0061 05AE 0300 FE20 0315 0062;
+0061 FE20 0315 0300 05AE 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;
+0061 0315 0300 05AE FE21 0062;00E0 05AE FE21 0315 0062;0061 05AE 0300 FE21 0315 0062;00E0 05AE FE21 0315 0062;0061 05AE 0300 FE21 0315 0062;
+0061 FE21 0315 0300 05AE 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;
+0061 0315 0300 05AE FE22 0062;00E0 05AE FE22 0315 0062;0061 05AE 0300 FE22 0315 0062;00E0 05AE FE22 0315 0062;0061 05AE 0300 FE22 0315 0062;
+0061 FE22 0315 0300 05AE 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;
+0061 0315 0300 05AE FE23 0062;00E0 05AE FE23 0315 0062;0061 05AE 0300 FE23 0315 0062;00E0 05AE FE23 0315 0062;0061 05AE 0300 FE23 0315 0062;
+0061 FE23 0315 0300 05AE 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;
+0061 302A 031B 0321 1D165 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;
+0061 1D165 302A 031B 0321 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;
+0061 302A 031B 0321 1D166 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;
+0061 1D166 302A 031B 0321 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;
+0061 093C 0334 1D167 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;
+0061 1D167 093C 0334 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;
+0061 093C 0334 1D168 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;
+0061 1D168 093C 0334 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;
+0061 093C 0334 1D169 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;
+0061 1D169 093C 0334 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;
+0061 05AE 1D16D 302E 1D16D 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;
+0061 1D16D 05AE 1D16D 302E 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;
+0061 302A 031B 0321 1D16E 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;
+0061 1D16E 302A 031B 0321 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;
+0061 302A 031B 0321 1D16F 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;
+0061 1D16F 302A 031B 0321 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;
+0061 302A 031B 0321 1D170 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;
+0061 1D170 302A 031B 0321 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;
+0061 302A 031B 0321 1D171 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;
+0061 1D171 302A 031B 0321 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;
+0061 302A 031B 0321 1D172 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;
+0061 1D172 302A 031B 0321 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;
+0061 059A 0316 302A 1D17B 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;
+0061 1D17B 059A 0316 302A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;
+0061 059A 0316 302A 1D17C 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;
+0061 1D17C 059A 0316 302A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;
+0061 059A 0316 302A 1D17D 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;
+0061 1D17D 059A 0316 302A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;
+0061 059A 0316 302A 1D17E 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;
+0061 1D17E 059A 0316 302A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;
+0061 059A 0316 302A 1D17F 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;
+0061 1D17F 059A 0316 302A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;
+0061 059A 0316 302A 1D180 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;
+0061 1D180 059A 0316 302A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;
+0061 059A 0316 302A 1D181 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;
+0061 1D181 059A 0316 302A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;
+0061 059A 0316 302A 1D182 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;
+0061 1D182 059A 0316 302A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;
+0061 0315 0300 05AE 1D185 0062;00E0 05AE 1D185 0315 0062;0061 05AE 0300 1D185 0315 0062;00E0 05AE 1D185 0315 0062;0061 05AE 0300 1D185 0315 0062;
+0061 1D185 0315 0300 05AE 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;
+0061 0315 0300 05AE 1D186 0062;00E0 05AE 1D186 0315 0062;0061 05AE 0300 1D186 0315 0062;00E0 05AE 1D186 0315 0062;0061 05AE 0300 1D186 0315 0062;
+0061 1D186 0315 0300 05AE 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;
+0061 0315 0300 05AE 1D187 0062;00E0 05AE 1D187 0315 0062;0061 05AE 0300 1D187 0315 0062;00E0 05AE 1D187 0315 0062;0061 05AE 0300 1D187 0315 0062;
+0061 1D187 0315 0300 05AE 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;
+0061 0315 0300 05AE 1D188 0062;00E0 05AE 1D188 0315 0062;0061 05AE 0300 1D188 0315 0062;00E0 05AE 1D188 0315 0062;0061 05AE 0300 1D188 0315 0062;
+0061 1D188 0315 0300 05AE 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;
+0061 0315 0300 05AE 1D189 0062;00E0 05AE 1D189 0315 0062;0061 05AE 0300 1D189 0315 0062;00E0 05AE 1D189 0315 0062;0061 05AE 0300 1D189 0315 0062;
+0061 1D189 0315 0300 05AE 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;
+0061 059A 0316 302A 1D18A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;
+0061 1D18A 059A 0316 302A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;
+0061 059A 0316 302A 1D18B 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;
+0061 1D18B 059A 0316 302A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;
+0061 0315 0300 05AE 1D1AA 0062;00E0 05AE 1D1AA 0315 0062;0061 05AE 0300 1D1AA 0315 0062;00E0 05AE 1D1AA 0315 0062;0061 05AE 0300 1D1AA 0315 0062;
+0061 1D1AA 0315 0300 05AE 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;
+0061 0315 0300 05AE 1D1AB 0062;00E0 05AE 1D1AB 0315 0062;0061 05AE 0300 1D1AB 0315 0062;00E0 05AE 1D1AB 0315 0062;0061 05AE 0300 1D1AB 0315 0062;
+0061 1D1AB 0315 0300 05AE 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;
+0061 0315 0300 05AE 1D1AC 0062;00E0 05AE 1D1AC 0315 0062;0061 05AE 0300 1D1AC 0315 0062;00E0 05AE 1D1AC 0315 0062;0061 05AE 0300 1D1AC 0315 0062;
+0061 1D1AC 0315 0300 05AE 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;
+0061 0315 0300 05AE 1D1AD 0062;00E0 05AE 1D1AD 0315 0062;0061 05AE 0300 1D1AD 0315 0062;00E0 05AE 1D1AD 0315 0062;0061 05AE 0300 1D1AD 0315 0062;
+0061 1D1AD 0315 0300 05AE 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;
+#
+# END OF FILE
diff --git a/src/com/ibm/icu/dev/data/unicode/SpecialCasing-2.txt b/src/com/ibm/icu/dev/data/unicode/SpecialCasing-2.txt
new file mode 100755
index 0000000..af002ef
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/SpecialCasing-2.txt
@@ -0,0 +1,219 @@
+# SpecialCasing-2.txt
+#
+# Special Casing Properties
+#
+# This file is a supplement to the UnicodeData file.
+# It contains additional information about the casing of Unicode characters.
+# (For compatibility, the UnicodeData.txt file only contains case mappings for
+# characters where they are 1-1, and does not have locale-specific mappings.)
+# These are informative character properties.
+#
+# Send comments to mark@unicode.org
+#
+# ================================================================================
+# Format
+# ================================================================================
+# The entries in this file are in the following machine-readable format:
+#
+# <entry> := <case_mapping> <condition_list>? (<s>* "#" <comment>)?
+#
+# <case_mapping> := <source> <sep> <lower> <sep> <title> <sep> <upper> <sep>
+#
+# <source> := <code_point>
+# <sep> := <s>* ";" <s>*
+# <lower> := <code_point_list>
+# <title> := <code_point_list>
+# <upper> := <code_point_list>
+# <code_point_list> := <code_point> (<s>+ <code_point>)*
+# <code_point> := <hex><hex><hex><hex>
+# <hex> := [0-1A-Fa-f]
+# <s> := <space>
+#
+# <condition_list> := <locale>? (<s>+ <context>)*
+# <locale> := <ISO_3166_code> ( "_" <ISO_639_code> )? ( "_" <variant> )?
+# <ISO_3166_code> := 2-letter country code,
+#                    as in http://www.unicode.org/unicode/onlinedat/countries.html
+# <ISO_639_code> :=  2-letter code,
+#                    as in http://www.unicode.org/unicode/onlinedat/languages.html
+# <context> := "FINAL" | "NON_FINAL" | "MODERN" | "NON_MODERN"
+#
+#  A condition list overrides the normal behavior if any of the listed conditions is true.
+#   FINAL:  The letter is not followed by a letter of category L* (e.g. Ll, Lt, Lu, Lm, or Lo).
+#   MODERN: The mapping is only used for modern text.
+#  Conditions preceded by "NON_" represent the negation of the condition
+#
+# New contexts may be added in the future.
+# Parsers of this file must be prepared to deal with that situation.
+# Additional whitespace around elements is optional. Blank lines are ignored in parsing.
+# On any line, all text following "#" is a comment, and are ignored in parsing.
+# ================================================================================
+
+# ================================================================================
+# Unconditional mappings
+# ================================================================================
+
+# The German es-zed is special--the normal mapping is to SS.
+# Note: the titlecase should never occur in practice. It is equal to titlecase(uppercase(<es-zed>))
+
+00DF; 00DF; 0053 0073; 0053 0053; # LATIN SMALL LETTER SHARP S
+
+# Ligatures
+
+FB00; FB00; 0046 0066; 0046 0046; # LATIN SMALL LIGATURE FF
+FB01; FB01; 0046 0069; 0046 0049; # LATIN SMALL LIGATURE FI
+FB02; FB02; 0046 006C; 0046 004C; # LATIN SMALL LIGATURE FL
+FB03; FB03; 0046 0066 0069; 0046 0046 0049; # LATIN SMALL LIGATURE FFI
+FB04; FB04; 0046 0066 006C; 0046 0046 004C; # LATIN SMALL LIGATURE FFL
+FB05; FB05; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE LONG S T
+FB06; FB06; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE ST
+
+0587; 0587; 0535 0582; 0535 0552; # ARMENIAN SMALL LIGATURE ECH YIWN
+FB13; FB13; 0544 0576; 0544 0546; # ARMENIAN SMALL LIGATURE MEN NOW
+FB14; FB14; 0544 0565; 0544 0535; # ARMENIAN SMALL LIGATURE MEN ECH
+FB15; FB15; 0544 056B; 0544 053B; # ARMENIAN SMALL LIGATURE MEN INI
+FB16; FB16; 054E 0576; 054E 0546; # ARMENIAN SMALL LIGATURE VEW NOW
+FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH
+
+# No corresponding uppercase precomposed character
+
+0149; 0149; 02BC 006E; 02BC 004E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+0390; 0390; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03B0; 03B0; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+01F0; 01F0; 004A 030C; 004A 030C; # LATIN SMALL LETTER J WITH CARON
+1E96; 1E96; 0048 0331; 0048 0331; # LATIN SMALL LETTER H WITH LINE BELOW
+1E97; 1E97; 0054 0308; 0054 0308; # LATIN SMALL LETTER T WITH DIAERESIS
+1E98; 1E98; 0057 030A; 0057 030A; # LATIN SMALL LETTER W WITH RING ABOVE
+1E99; 1E99; 0059 030A; 0059 030A; # LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A; 1E9A; 0041 02BE; 0041 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING
+1F50; 1F50; 03A5 0313; 03A5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI
+1F52; 1F52; 03A5 0313 0300; 03A5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F54; 1F54; 03A5 0313 0301; 03A5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F56; 1F56; 03A5 0313 0342; 03A5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1FB6; 1FB6; 0391 0342; 0391 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FC6; 1FC6; 0397 0342; 0397 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FD2; 1FD2; 0399 0308 0300; 0399 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3; 1FD3; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6; 1FD6; 0399 0342; 0399 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7; 1FD7; 0399 0308 0342; 0399 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FE2; 1FE2; 03A5 0308 0300; 03A5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3; 1FE3; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4; 1FE4; 03A1 0313; 03A1 0313; # GREEK SMALL LETTER RHO WITH PSILI
+1FE6; 1FE6; 03A5 0342; 03A5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+
+# IMPORTANT-when capitalizing iota-subscript (0345)
+#  It MUST be in normalized form--moved to the end of any sequence of combining marks.
+#  This is because logically it represents a following base character!
+#  E.g. <iota_subscript> (<Mn> | <Mc> | <Me>)+ => (<Mn> | <Mc> | <Me>)+ <iota_subscript>
+# It should never be the first character in a word, so in titlecasing it can be left as is.
+
+# The following cases are already in the UnicodeData file, so are only commented here.
+
+# 0345; 0345; 0345; 0399; # COMBINING GREEK YPOGEGRAMMENI
+
+# All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript)
+# have special uppercases.
+# Note: characters with PROSGEGRAMMENI are actually titlecase, not uppercase!
+
+1F80; 1F80; 1F88; 1F08 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81; 1F81; 1F89; 1F09 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82; 1F82; 1F8A; 1F0A 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83; 1F83; 1F8B; 1F0B 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84; 1F84; 1F8C; 1F0C 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85; 1F85; 1F8D; 1F0D 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86; 1F86; 1F8E; 1F0E 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87; 1F87; 1F8F; 1F0F 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88; 1F80; 1F88; 1F08 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89; 1F81; 1F89; 1F09 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A; 1F82; 1F8A; 1F0A 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B; 1F83; 1F8B; 1F0B 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C; 1F84; 1F8C; 1F0C 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D; 1F85; 1F8D; 1F0D 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E; 1F86; 1F8E; 1F0E 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F; 1F87; 1F8F; 1F0F 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90; 1F90; 1F98; 1F28 0399; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91; 1F91; 1F99; 1F29 0399; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92; 1F92; 1F9A; 1F2A 0399; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93; 1F93; 1F9B; 1F2B 0399; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94; 1F94; 1F9C; 1F2C 0399; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95; 1F95; 1F9D; 1F2D 0399; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96; 1F96; 1F9E; 1F2E 0399; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97; 1F97; 1F9F; 1F2F 0399; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98; 1F90; 1F98; 1F28 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99; 1F91; 1F99; 1F29 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A; 1F92; 1F9A; 1F2A 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B; 1F93; 1F9B; 1F2B 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C; 1F94; 1F9C; 1F2C 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D; 1F95; 1F9D; 1F2D 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E; 1F96; 1F9E; 1F2E 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F; 1F97; 1F9F; 1F2F 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0; 1FA0; 1FA8; 1F68 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1; 1FA1; 1FA9; 1F69 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2; 1FA2; 1FAA; 1F6A 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3; 1FA3; 1FAB; 1F6B 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4; 1FA4; 1FAC; 1F6C 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5; 1FA5; 1FAD; 1F6D 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6; 1FA6; 1FAE; 1F6E 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7; 1FA7; 1FAF; 1F6F 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8; 1FA0; 1FA8; 1F68 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9; 1FA1; 1FA9; 1F69 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA; 1FA2; 1FAA; 1F6A 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB; 1FA3; 1FAB; 1F6B 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC; 1FA4; 1FAC; 1F6C 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD; 1FA5; 1FAD; 1F6D 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE; 1FA6; 1FAE; 1F6E 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF; 1FA7; 1FAF; 1F6F 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+
+1FB3; 1FB3; 1FBC; 0391 0399; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FBC; 1FB3; 1FBC; 0391 0399; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FC3; 1FC3; 1FCC; 0397 0399; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FCC; 1FC3; 1FCC; 0397 0399; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FF3; 1FF3; 1FFC; 03A9 0399; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FFC; 1FF3; 1FFC; 03A9 0399; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+
+# Some characters with YPOGEGRAMMENI are also have no corresponding titlecases
+
+1FB2; 1FB2; 1FBA 0345; 1FBA 0399; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB4; 1FB4; 0386 0345; 0386 0399; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FC2; 1FC2; 1FCA 0345; 1FCA 0399; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC4; 1FC4; 0389 0345; 0389 0399; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FF2; 1FF2; 1FFA 0345; 1FFA 0399; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF4; 1FF4; 038F 0345; 038F 0399; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+
+1FB7; 1FB7; 0391 0342 0345; 0391 0342 0399; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC7; 1FC7; 0397 0342 0345; 0397 0342 0399; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF7; 1FF7; 03A9 0342 0345; 03A9 0342 0399; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+
+# ================================================================================
+# Conditional mappings
+# ================================================================================
+
+# Special case for final form of sigma
+
+03A3; 03C2; 03A3; 03A3; FINAL; # GREEK CAPITAL LETTER SIGMA
+
+# Note: the following cases for non-final are already in the UnicodeData file.
+
+# 03A3; 03C3; 03A3; 03A3; # GREEK CAPITAL LETTER SIGMA
+# 03C3; 03C3; 03A3; 03A3; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C2; 03A3; 03A3; # GREEK SMALL LETTER FINAL SIGMA
+
+# Note: the following cases are not included, since they would normalize in lowercasing
+
+# 03C3; 03C2; 03A3; 03A3; FINAL; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C3; 03A3; 03A3; NON_FINAL; # GREEK SMALL LETTER FINAL SIGMA
+
+# ================================================================================
+# Locale-sensitive mappings
+# ================================================================================
+
+# Turkish
+
+0049; 0131; 0049; 0049; TR; # LATIN CAPITAL LETTER I
+0069; 0069; 0130; 0130; TR; # LATIN SMALL LETTER I
+
+# Note: the following cases are already in the UnicodeData file.
+
+# 0131; 0131; 0049; 0049; TR; # LATIN SMALL LETTER DOTLESS I
+# 0130; 0069; 0130; 0130; TR; # LATIN CAPITAL LETTER I WITH DOT ABOVE
diff --git a/src/com/ibm/icu/dev/data/unicode/SpecialCasing-5.txt b/src/com/ibm/icu/dev/data/unicode/SpecialCasing-5.txt
new file mode 100755
index 0000000..0ff37df
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/SpecialCasing-5.txt
@@ -0,0 +1,262 @@
+# SpecialCasing-5.txt
+#
+# Special Casing Properties
+#
+# This file is a supplement to the UnicodeData file.
+# It contains additional information about the casing of Unicode characters.
+# (For compatibility, the UnicodeData.txt file only contains case mappings for
+# characters where they are 1-1, and does not have locale-specific mappings.)
+# For more information, see
+# UTR #21 Case Mappings, at http://www.unicode.org/unicode/reports/tr21/
+#
+# ================================================================================
+# Format
+# ================================================================================
+# The entries in this file are in the following machine-readable format:
+#
+# <code>; <lower> ; <title> ; <upper> ; (<condition_list> ;)? # <comment>
+#
+# <code>, <lower>, <title>, and <upper> provide character values in hex. If there is more than
+# one character, they are separated by spaces.
+#
+# The <condition_list> is optional. Where present, it consists of one or more locales or contexts,
+# separated by spaces. In these conditions:
+# - A condition list overrides the normal behavior if all of the listed conditions are true.
+# - Case distinctions in the condition list are not significant.
+# - Conditions preceded by "NOT_" represent the negation of the condition.
+# - A cased letter is any character with general category = Ll or Lo or Lt
+# - An ignorable sequence is a sequence of *zero* or more characters from
+#    the set {HYPHEN, SOFT HYPHEN, general category = Mn}.
+#
+# A locale is defined as:
+# <locale> := <ISO_639_code> ( "_" <ISO_3166_code> ( "_" <variant> )? )?
+# <ISO_3166_code> := 2-letter ISO country code,
+# <ISO_639_code> :=  2-letter ISO language code
+#
+# A context is a locale or one of the following choices:
+#   CFINAL:      The character is not followed by a sequence consisting of
+#                an ignorable sequence and then a cased letter.
+#   CINITIAL:    The character is not preceded by a sequence consisting of
+#                a cased letter and an ignorable sequence.
+#   FINAL_SIGMA: CFINAL and NOT_CINITIAL
+#   TYPE_i:      The character is "i" (0069), "j" (006A),
+#                or has a canonical decomposition that begins with an "i" or "j"
+#                but has no combining characters above (i.e., i-ogonek (012F),
+#                i-tilde-below (1E2D), or i-dot-below (1ECB)).
+#   AFTER_i:     The last preceding base character was TYPE_i, and
+#                no combining character class 230 (above) has intervened.
+#   MORE_ABOVE:  The character is followed by one or more characters of
+#                combining class 230 (ABOVE) in the combining character sequence
+#
+# Other than as used to separate elements, spaces are to be ignored.
+#
+# Parsers of this file must be prepared to deal future additions to this format:
+#  * Additional contexts
+#  * Additional fields
+# ================================================================================
+
+# ================================================================================
+# Unconditional mappings
+# ================================================================================
+
+# The German es-zed is special--the normal mapping is to SS.
+# Note: the titlecase should never occur in practice. It is equal to titlecase(uppercase(<es-zed>))
+
+00DF; 00DF; 0053 0073; 0053 0053; # LATIN SMALL LETTER SHARP S
+
+# Ligatures
+
+FB00; FB00; 0046 0066; 0046 0046; # LATIN SMALL LIGATURE FF
+FB01; FB01; 0046 0069; 0046 0049; # LATIN SMALL LIGATURE FI
+FB02; FB02; 0046 006C; 0046 004C; # LATIN SMALL LIGATURE FL
+FB03; FB03; 0046 0066 0069; 0046 0046 0049; # LATIN SMALL LIGATURE FFI
+FB04; FB04; 0046 0066 006C; 0046 0046 004C; # LATIN SMALL LIGATURE FFL
+FB05; FB05; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE LONG S T
+FB06; FB06; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE ST
+
+0587; 0587; 0535 0582; 0535 0552; # ARMENIAN SMALL LIGATURE ECH YIWN
+FB13; FB13; 0544 0576; 0544 0546; # ARMENIAN SMALL LIGATURE MEN NOW
+FB14; FB14; 0544 0565; 0544 0535; # ARMENIAN SMALL LIGATURE MEN ECH
+FB15; FB15; 0544 056B; 0544 053B; # ARMENIAN SMALL LIGATURE MEN INI
+FB16; FB16; 054E 0576; 054E 0546; # ARMENIAN SMALL LIGATURE VEW NOW
+FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH
+
+# No corresponding uppercase precomposed character
+
+0149; 0149; 02BC 004E; 02BC 004E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+0390; 0390; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03B0; 03B0; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+01F0; 01F0; 004A 030C; 004A 030C; # LATIN SMALL LETTER J WITH CARON
+1E96; 1E96; 0048 0331; 0048 0331; # LATIN SMALL LETTER H WITH LINE BELOW
+1E97; 1E97; 0054 0308; 0054 0308; # LATIN SMALL LETTER T WITH DIAERESIS
+1E98; 1E98; 0057 030A; 0057 030A; # LATIN SMALL LETTER W WITH RING ABOVE
+1E99; 1E99; 0059 030A; 0059 030A; # LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A; 1E9A; 0041 02BE; 0041 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING
+1F50; 1F50; 03A5 0313; 03A5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI
+1F52; 1F52; 03A5 0313 0300; 03A5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F54; 1F54; 03A5 0313 0301; 03A5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F56; 1F56; 03A5 0313 0342; 03A5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1FB6; 1FB6; 0391 0342; 0391 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FC6; 1FC6; 0397 0342; 0397 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FD2; 1FD2; 0399 0308 0300; 0399 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3; 1FD3; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6; 1FD6; 0399 0342; 0399 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7; 1FD7; 0399 0308 0342; 0399 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FE2; 1FE2; 03A5 0308 0300; 03A5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3; 1FE3; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4; 1FE4; 03A1 0313; 03A1 0313; # GREEK SMALL LETTER RHO WITH PSILI
+1FE6; 1FE6; 03A5 0342; 03A5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+
+# IMPORTANT-when capitalizing iota-subscript (0345)
+#  It MUST be in normalized form--moved to the end of any sequence of combining marks.
+#  This is because logically it represents a following base character!
+#  E.g. <iota_subscript> (<Mn> | <Mc> | <Me>)+ => (<Mn> | <Mc> | <Me>)+ <iota_subscript>
+# It should never be the first character in a word, so in titlecasing it can be left as is.
+
+# The following cases are already in the UnicodeData file, so are only commented here.
+
+# 0345; 0345; 0345; 0399; # COMBINING GREEK YPOGEGRAMMENI
+
+# All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript)
+# have special uppercases.
+# Note: characters with PROSGEGRAMMENI are actually titlecase, not uppercase!
+
+1F80; 1F80; 1F88; 1F08 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81; 1F81; 1F89; 1F09 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82; 1F82; 1F8A; 1F0A 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83; 1F83; 1F8B; 1F0B 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84; 1F84; 1F8C; 1F0C 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85; 1F85; 1F8D; 1F0D 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86; 1F86; 1F8E; 1F0E 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87; 1F87; 1F8F; 1F0F 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88; 1F80; 1F88; 1F08 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89; 1F81; 1F89; 1F09 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A; 1F82; 1F8A; 1F0A 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B; 1F83; 1F8B; 1F0B 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C; 1F84; 1F8C; 1F0C 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D; 1F85; 1F8D; 1F0D 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E; 1F86; 1F8E; 1F0E 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F; 1F87; 1F8F; 1F0F 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90; 1F90; 1F98; 1F28 0399; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91; 1F91; 1F99; 1F29 0399; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92; 1F92; 1F9A; 1F2A 0399; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93; 1F93; 1F9B; 1F2B 0399; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94; 1F94; 1F9C; 1F2C 0399; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95; 1F95; 1F9D; 1F2D 0399; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96; 1F96; 1F9E; 1F2E 0399; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97; 1F97; 1F9F; 1F2F 0399; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98; 1F90; 1F98; 1F28 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99; 1F91; 1F99; 1F29 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A; 1F92; 1F9A; 1F2A 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B; 1F93; 1F9B; 1F2B 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C; 1F94; 1F9C; 1F2C 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D; 1F95; 1F9D; 1F2D 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E; 1F96; 1F9E; 1F2E 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F; 1F97; 1F9F; 1F2F 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0; 1FA0; 1FA8; 1F68 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1; 1FA1; 1FA9; 1F69 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2; 1FA2; 1FAA; 1F6A 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3; 1FA3; 1FAB; 1F6B 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4; 1FA4; 1FAC; 1F6C 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5; 1FA5; 1FAD; 1F6D 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6; 1FA6; 1FAE; 1F6E 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7; 1FA7; 1FAF; 1F6F 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8; 1FA0; 1FA8; 1F68 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9; 1FA1; 1FA9; 1F69 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA; 1FA2; 1FAA; 1F6A 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB; 1FA3; 1FAB; 1F6B 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC; 1FA4; 1FAC; 1F6C 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD; 1FA5; 1FAD; 1F6D 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE; 1FA6; 1FAE; 1F6E 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF; 1FA7; 1FAF; 1F6F 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+
+1FB3; 1FB3; 1FBC; 0391 0399; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FBC; 1FB3; 1FBC; 0391 0399; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FC3; 1FC3; 1FCC; 0397 0399; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FCC; 1FC3; 1FCC; 0397 0399; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FF3; 1FF3; 1FFC; 03A9 0399; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FFC; 1FF3; 1FFC; 03A9 0399; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+
+# Some characters with YPOGEGRAMMENI are also have no corresponding titlecases
+
+1FB2; 1FB2; 1FBA 0345; 1FBA 0399; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB4; 1FB4; 0386 0345; 0386 0399; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FC2; 1FC2; 1FCA 0345; 1FCA 0399; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC4; 1FC4; 0389 0345; 0389 0399; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FF2; 1FF2; 1FFA 0345; 1FFA 0399; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF4; 1FF4; 038F 0345; 038F 0399; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+
+1FB7; 1FB7; 0391 0342 0345; 0391 0342 0399; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC7; 1FC7; 0397 0342 0345; 0397 0342 0399; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF7; 1FF7; 03A9 0342 0345; 03A9 0342 0399; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+
+# ================================================================================
+# Conditional mappings
+# ================================================================================
+
+# Special case for final form of sigma
+
+03A3; 03C2; 03A3; 03A3; FINAL_SIGMA; # GREEK CAPITAL LETTER SIGMA
+
+# Note: the following cases for non-final are already in the UnicodeData file.
+
+# 03A3; 03C3; 03A3; 03A3; # GREEK CAPITAL LETTER SIGMA
+# 03C3; 03C3; 03A3; 03A3; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C2; 03A3; 03A3; # GREEK SMALL LETTER FINAL SIGMA
+
+# Note: the following cases are not included, since they would case-fold in lowercasing
+
+# 03C3; 03C2; 03A3; 03A3; FINAL_SIGMA; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C3; 03A3; 03A3; NOT_FINAL_SIGMA; # GREEK SMALL LETTER FINAL SIGMA
+
+# ================================================================================
+# Locale-sensitive mappings
+# ================================================================================
+
+# Lithuanian
+
+# Lithuanian retains the dot in a lowercase i when followed by accents.
+
+# Remove DOT ABOVE after "i" with upper or titlecase
+
+0307; 0307; ; ; lt AFTER_i # COMBINING DOT ABOVE
+
+# Introduce an explicit dot above when lowercasing capital I's and J's
+# whenever there are more accents above
+# (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek)
+
+0049; 0069 0307; 0049; 0049; lt MORE_ABOVE # LATIN CAPITAL LETTER I
+004A; 006A 0307; 004A; 004A; lt MORE_ABOVE # LATIN CAPITAL LETTER J
+012E; 012F 0307; 012E; 012E; lt MORE_ABOVE # LATIN CAPITAL LETTER I WITH OGONEK
+00CC; 0069 0307 0300; 00CC; 00CC; lt # LATIN CAPITAL LETTER I WITH GRAVE
+00CD; 0069 0307 0301; 00CD; 00CD; lt # LATIN CAPITAL LETTER I WITH ACUTE
+0128; 0069 0307 0303; 0128; 0128; lt # LATIN CAPITAL LETTER I WITH TILDE
+
+# ================================================================================
+
+# Turkish and Azeri
+
+# I and i-dotless; I-dot and i are case pairs in Turkish and Azeri
+# The following rules handle those cases.
+
+# Remove spurious dot above small i's when lowercasing, if there are no more accents above:
+
+0307; ; 0307; 0307; tr AFTER_i NOT_MORE_ABOVE # COMBINING DOT ABOVE
+0307; ; 0307; 0307; az AFTER_i NOT_MORE_ABOVE # COMBINING DOT ABOVE
+
+# Fix case pairs
+
+0049; 0131; 0049; 0049; tr; # LATIN CAPITAL LETTER I
+0069; 0069; 0130; 0130; tr; # LATIN SMALL LETTER I
+
+0049; 0131; 0049; 0049; az; # LATIN CAPITAL LETTER I
+0069; 0069; 0130; 0130; az; # LATIN SMALL LETTER I
+
+# Note: the following cases are already in the UnicodeData file.
+
+# 0131; 0131; 0049; 0049; tr; # LATIN SMALL LETTER DOTLESS I
+# 0130; 0069; 0130; 0130; tr; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+
diff --git a/src/com/ibm/icu/dev/data/unicode/SpecialCasing.txt b/src/com/ibm/icu/dev/data/unicode/SpecialCasing.txt
new file mode 100755
index 0000000..f25ac9b
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/SpecialCasing.txt
@@ -0,0 +1,255 @@
+# SpecialCasing-3.2.0.txt
+# Date: 2002-03-19,23:31:42 GMT [MD]
+#
+# Special Casing Properties
+#
+# This file is a supplement to the UnicodeData file.
+# It contains additional information about the casing of Unicode characters.
+# (For compatibility, the UnicodeData.txt file only contains case mappings for
+# characters where they are 1-1, and does not have locale-specific mappings.)
+# For more information, see
+# UTR #21 Case Mappings, at http://www.unicode.org/unicode/reports/tr21/
+#
+# ================================================================================
+# Format
+# ================================================================================
+# The entries in this file are in the following machine-readable format:
+#
+# <code>; <lower> ; <title> ; <upper> ; (<condition_list> ;)? # <comment>
+#
+# <code>, <lower>, <title>, and <upper> provide character values in hex. If there is more than
+# one character, they are separated by spaces. Other than as used to separate elements,
+# spaces are to be ignored.
+#
+# The <condition_list> is optional. Where present, it consists of one or more locales or contexts,
+# separated by spaces. In these conditions:
+# - A condition list overrides the normal behavior if all of the listed conditions are true.
+# - The context is always the context of the characters in the original string,
+#   NOT in the resulting string.
+# - Case distinctions in the condition list are not significant.
+# - Conditions preceded by "Not_" represent the negation of the condition.
+#
+# A locale is defined as:
+# <locale> := <ISO_639_code> ( "_" <ISO_3166_code> ( "_" <variant> )? )?
+# <ISO_3166_code> := 2-letter ISO country code,
+# <ISO_639_code> :=  2-letter ISO language code
+#
+# A context is one of the following, as defined in UAX #21: Case Mappings:
+#   Final_Sigma, After_Soft_Dotted, More_Above, Before_Dot
+#
+# Parsers of this file must be prepared to deal future additions to this format:
+#  * Additional contexts
+#  * Additional fields
+# ================================================================================
+
+# ================================================================================
+# Unconditional mappings
+# ================================================================================
+
+# The German es-zed is special--the normal mapping is to SS.
+# Note: the titlecase should never occur in practice. It is equal to titlecase(uppercase(<es-zed>))
+
+00DF; 00DF; 0053 0073; 0053 0053; # LATIN SMALL LETTER SHARP S
+
+# Preserve canonical equivalence for I with dot. Turkic is handled below.
+
+0130; 0069 0307; 0130; 0130; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+# Ligatures
+
+FB00; FB00; 0046 0066; 0046 0046; # LATIN SMALL LIGATURE FF
+FB01; FB01; 0046 0069; 0046 0049; # LATIN SMALL LIGATURE FI
+FB02; FB02; 0046 006C; 0046 004C; # LATIN SMALL LIGATURE FL
+FB03; FB03; 0046 0066 0069; 0046 0046 0049; # LATIN SMALL LIGATURE FFI
+FB04; FB04; 0046 0066 006C; 0046 0046 004C; # LATIN SMALL LIGATURE FFL
+FB05; FB05; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE LONG S T
+FB06; FB06; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE ST
+
+0587; 0587; 0535 0582; 0535 0552; # ARMENIAN SMALL LIGATURE ECH YIWN
+FB13; FB13; 0544 0576; 0544 0546; # ARMENIAN SMALL LIGATURE MEN NOW
+FB14; FB14; 0544 0565; 0544 0535; # ARMENIAN SMALL LIGATURE MEN ECH
+FB15; FB15; 0544 056B; 0544 053B; # ARMENIAN SMALL LIGATURE MEN INI
+FB16; FB16; 054E 0576; 054E 0546; # ARMENIAN SMALL LIGATURE VEW NOW
+FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH
+
+# No corresponding uppercase precomposed character
+
+0149; 0149; 02BC 004E; 02BC 004E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+0390; 0390; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03B0; 03B0; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+01F0; 01F0; 004A 030C; 004A 030C; # LATIN SMALL LETTER J WITH CARON
+1E96; 1E96; 0048 0331; 0048 0331; # LATIN SMALL LETTER H WITH LINE BELOW
+1E97; 1E97; 0054 0308; 0054 0308; # LATIN SMALL LETTER T WITH DIAERESIS
+1E98; 1E98; 0057 030A; 0057 030A; # LATIN SMALL LETTER W WITH RING ABOVE
+1E99; 1E99; 0059 030A; 0059 030A; # LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A; 1E9A; 0041 02BE; 0041 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING
+1F50; 1F50; 03A5 0313; 03A5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI
+1F52; 1F52; 03A5 0313 0300; 03A5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F54; 1F54; 03A5 0313 0301; 03A5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F56; 1F56; 03A5 0313 0342; 03A5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1FB6; 1FB6; 0391 0342; 0391 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FC6; 1FC6; 0397 0342; 0397 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FD2; 1FD2; 0399 0308 0300; 0399 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3; 1FD3; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6; 1FD6; 0399 0342; 0399 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7; 1FD7; 0399 0308 0342; 0399 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FE2; 1FE2; 03A5 0308 0300; 03A5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3; 1FE3; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4; 1FE4; 03A1 0313; 03A1 0313; # GREEK SMALL LETTER RHO WITH PSILI
+1FE6; 1FE6; 03A5 0342; 03A5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+
+# IMPORTANT-when capitalizing iota-subscript (0345)
+#  It MUST be in normalized form--moved to the end of any sequence of combining marks.
+#  This is because logically it represents a following base character!
+#  E.g. <iota_subscript> (<Mn> | <Mc> | <Me>)+ => (<Mn> | <Mc> | <Me>)+ <iota_subscript>
+# It should never be the first character in a word, so in titlecasing it can be left as is.
+
+# The following cases are already in the UnicodeData file, so are only commented here.
+
+# 0345; 0345; 0345; 0399; # COMBINING GREEK YPOGEGRAMMENI
+
+# All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript)
+# have special uppercases.
+# Note: characters with PROSGEGRAMMENI are actually titlecase, not uppercase!
+
+1F80; 1F80; 1F88; 1F08 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81; 1F81; 1F89; 1F09 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82; 1F82; 1F8A; 1F0A 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83; 1F83; 1F8B; 1F0B 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84; 1F84; 1F8C; 1F0C 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85; 1F85; 1F8D; 1F0D 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86; 1F86; 1F8E; 1F0E 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87; 1F87; 1F8F; 1F0F 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88; 1F80; 1F88; 1F08 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89; 1F81; 1F89; 1F09 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A; 1F82; 1F8A; 1F0A 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B; 1F83; 1F8B; 1F0B 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C; 1F84; 1F8C; 1F0C 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D; 1F85; 1F8D; 1F0D 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E; 1F86; 1F8E; 1F0E 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F; 1F87; 1F8F; 1F0F 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90; 1F90; 1F98; 1F28 0399; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91; 1F91; 1F99; 1F29 0399; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92; 1F92; 1F9A; 1F2A 0399; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93; 1F93; 1F9B; 1F2B 0399; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94; 1F94; 1F9C; 1F2C 0399; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95; 1F95; 1F9D; 1F2D 0399; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96; 1F96; 1F9E; 1F2E 0399; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97; 1F97; 1F9F; 1F2F 0399; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98; 1F90; 1F98; 1F28 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99; 1F91; 1F99; 1F29 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A; 1F92; 1F9A; 1F2A 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B; 1F93; 1F9B; 1F2B 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C; 1F94; 1F9C; 1F2C 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D; 1F95; 1F9D; 1F2D 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E; 1F96; 1F9E; 1F2E 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F; 1F97; 1F9F; 1F2F 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0; 1FA0; 1FA8; 1F68 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1; 1FA1; 1FA9; 1F69 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2; 1FA2; 1FAA; 1F6A 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3; 1FA3; 1FAB; 1F6B 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4; 1FA4; 1FAC; 1F6C 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5; 1FA5; 1FAD; 1F6D 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6; 1FA6; 1FAE; 1F6E 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7; 1FA7; 1FAF; 1F6F 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8; 1FA0; 1FA8; 1F68 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9; 1FA1; 1FA9; 1F69 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA; 1FA2; 1FAA; 1F6A 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB; 1FA3; 1FAB; 1F6B 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC; 1FA4; 1FAC; 1F6C 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD; 1FA5; 1FAD; 1F6D 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE; 1FA6; 1FAE; 1F6E 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF; 1FA7; 1FAF; 1F6F 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FB3; 1FB3; 1FBC; 0391 0399; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FBC; 1FB3; 1FBC; 0391 0399; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FC3; 1FC3; 1FCC; 0397 0399; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FCC; 1FC3; 1FCC; 0397 0399; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FF3; 1FF3; 1FFC; 03A9 0399; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FFC; 1FF3; 1FFC; 03A9 0399; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+
+# Some characters with YPOGEGRAMMENI are also have no corresponding titlecases
+
+1FB2; 1FB2; 1FBA 0345; 1FBA 0399; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB4; 1FB4; 0386 0345; 0386 0399; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FC2; 1FC2; 1FCA 0345; 1FCA 0399; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC4; 1FC4; 0389 0345; 0389 0399; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FF2; 1FF2; 1FFA 0345; 1FFA 0399; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF4; 1FF4; 038F 0345; 038F 0399; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+
+1FB7; 1FB7; 0391 0342 0345; 0391 0342 0399; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC7; 1FC7; 0397 0342 0345; 0397 0342 0399; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF7; 1FF7; 03A9 0342 0345; 03A9 0342 0399; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+
+# ================================================================================
+# Conditional mappings
+# ================================================================================
+
+# Special case for final form of sigma
+
+03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA
+
+# Note: the following cases for non-final are already in the UnicodeData file.
+
+# 03A3; 03C3; 03A3; 03A3; # GREEK CAPITAL LETTER SIGMA
+# 03C3; 03C3; 03A3; 03A3; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C2; 03A3; 03A3; # GREEK SMALL LETTER FINAL SIGMA
+
+# Note: the following cases are not included, since they would case-fold in lowercasing
+
+# 03C3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C3; 03A3; 03A3; Not_Final_Sigma; # GREEK SMALL LETTER FINAL SIGMA
+
+# ================================================================================
+# Locale-sensitive mappings
+# ================================================================================
+
+# Lithuanian
+
+# Lithuanian retains the dot in a lowercase i when followed by accents.
+
+# Remove DOT ABOVE after "i" with upper or titlecase
+
+0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE
+
+# Introduce an explicit dot above when lowercasing capital I's and J's
+# whenever there are more accents above.
+# (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek)
+
+0049; 0069 0307; 0049; 0049; lt More_Above; # LATIN CAPITAL LETTER I
+004A; 006A 0307; 004A; 004A; lt More_Above; # LATIN CAPITAL LETTER J
+012E; 012F 0307; 012E; 012E; lt More_Above; # LATIN CAPITAL LETTER I WITH OGONEK
+00CC; 0069 0307 0300; 00CC; 00CC; lt; # LATIN CAPITAL LETTER I WITH GRAVE
+00CD; 0069 0307 0301; 00CD; 00CD; lt; # LATIN CAPITAL LETTER I WITH ACUTE
+0128; 0069 0307 0303; 0128; 0128; lt; # LATIN CAPITAL LETTER I WITH TILDE
+
+# ================================================================================
+
+# Turkish and Azeri
+
+# I and i-dotless; I-dot and i are case pairs in Turkish and Azeri
+# The following rules handle those cases.
+
+0130; 0069; 0130; 0130; tr # LATIN CAPITAL LETTER I WITH DOT ABOVE
+0130; 0069; 0130; 0130; az # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+# When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i.
+# This matches the behavior of the canonically equivalent I-dot_above
+
+0307; ; 0307; 0307; tr After_Soft_Dotted; # COMBINING DOT ABOVE
+0307; ; 0307; 0307; az After_Soft_Dotted; # COMBINING DOT ABOVE
+
+# When lowercasing, unless an I is before a dot_above, it turns into a dotless i.
+
+0049; 0131; 0049; 0049; tr Not_Before_Dot; # LATIN CAPITAL LETTER I
+0049; 0131; 0049; 0049; az Not_Before_Dot; # LATIN CAPITAL LETTER I
+
+# When uppercasing, i turns into a dotted capital I
+
+0069; 0069; 0130; 0130; tr; # LATIN SMALL LETTER I
+0069; 0069; 0130; 0130; az; # LATIN SMALL LETTER I
+
+# Note: the following case is already in the UnicodeData file.
+
+# 0131; 0131; 0049; 0049; tr; # LATIN SMALL LETTER DOTLESS I
diff --git a/src/com/ibm/icu/dev/data/unicode/UnicodeData-2.1.2.txt b/src/com/ibm/icu/dev/data/unicode/UnicodeData-2.1.2.txt
new file mode 100755
index 0000000..bca59e6
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/UnicodeData-2.1.2.txt
@@ -0,0 +1,6590 @@
+0000;<control>;Cc;0;ON;;;;;N;NULL;;;;
+0001;<control>;Cc;0;ON;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;ON;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;ON;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;ON;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;ON;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;ON;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;ON;;;;;N;BELL;;;;
+0008;<control>;Cc;0;ON;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;HORIZONTAL TABULATION;;;;
+000A;<control>;Cc;0;ON;;;;;N;LINE FEED;;;;
+000B;<control>;Cc;0;ON;;;;;N;VERTICAL TABULATION;;;;
+000C;<control>;Cc;0;ON;;;;;N;FORM FEED;;;;
+000D;<control>;Cc;0;ON;;;;;N;CARRIAGE RETURN;;;;
+000E;<control>;Cc;0;ON;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;ON;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;ON;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;ON;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;ON;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;ON;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;ON;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;ON;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;ON;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;ON;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;ON;;;;;N;FILE SEPARATOR;;;;
+001D;<control>;Cc;0;ON;;;;;N;GROUP SEPARATOR;;;;
+001E;<control>;Cc;0;ON;;;;;N;RECORD SEPARATOR;;;;
+001F;<control>;Cc;0;ON;;;;;N;UNIT SEPARATOR;;;;
+0020;SPACE;Zs;0;WS;;;;;N;;;;;
+0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
+0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
+0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
+0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
+0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
+0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
+0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
+002A;ASTERISK;Po;0;ON;;;;;N;;;;;
+002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;;
+0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
+0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
+0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
+0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
+0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
+0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
+0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
+0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
+0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
+0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
+003A;COLON;Po;0;CS;;;;;N;;;;;
+003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
+003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
+0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
+0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
+0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
+0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
+0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
+0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
+0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
+0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
+0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
+0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
+004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
+004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
+004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
+004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
+004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
+004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
+0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
+0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
+0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
+0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
+0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
+0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
+0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
+0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
+0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
+0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
+005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
+005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
+005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
+005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
+005E;CIRCUMFLEX ACCENT;Sk;0;ON;<compat> 0020 0302;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;<compat> 0020 0332;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;<compat> 0020 0300;;;;N;SPACING GRAVE;;;;
+0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
+0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
+0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
+0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
+0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
+0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
+0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
+0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
+0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
+006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
+006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
+006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
+006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
+006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
+006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
+0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
+0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
+0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
+0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
+0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
+0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
+0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
+0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
+0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
+0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
+007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
+007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
+007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
+007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
+007E;TILDE;Sm;0;ON;;;;;N;;;;;
+007F;<control>;Cc;0;ON;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;ON;;;;;N;;;;;
+0081;<control>;Cc;0;ON;;;;;N;;;;;
+0082;<control>;Cc;0;ON;;;;;N;;;;;
+0083;<control>;Cc;0;ON;;;;;N;;;;;
+0084;<control>;Cc;0;ON;;;;;N;;;;;
+0085;<control>;Cc;0;ON;;;;;N;;;;;
+0086;<control>;Cc;0;ON;;;;;N;;;;;
+0087;<control>;Cc;0;ON;;;;;N;;;;;
+0088;<control>;Cc;0;ON;;;;;N;;;;;
+0089;<control>;Cc;0;ON;;;;;N;;;;;
+008A;<control>;Cc;0;ON;;;;;N;;;;;
+008B;<control>;Cc;0;ON;;;;;N;;;;;
+008C;<control>;Cc;0;ON;;;;;N;;;;;
+008D;<control>;Cc;0;ON;;;;;N;;;;;
+008E;<control>;Cc;0;ON;;;;;N;;;;;
+008F;<control>;Cc;0;ON;;;;;N;;;;;
+0090;<control>;Cc;0;ON;;;;;N;;;;;
+0091;<control>;Cc;0;ON;;;;;N;;;;;
+0092;<control>;Cc;0;ON;;;;;N;;;;;
+0093;<control>;Cc;0;ON;;;;;N;;;;;
+0094;<control>;Cc;0;ON;;;;;N;;;;;
+0095;<control>;Cc;0;ON;;;;;N;;;;;
+0096;<control>;Cc;0;ON;;;;;N;;;;;
+0097;<control>;Cc;0;ON;;;;;N;;;;;
+0098;<control>;Cc;0;ON;;;;;N;;;;;
+0099;<control>;Cc;0;ON;;;;;N;;;;;
+009A;<control>;Cc;0;ON;;;;;N;;;;;
+009B;<control>;Cc;0;ON;;;;;N;;;;;
+009C;<control>;Cc;0;ON;;;;;N;;;;;
+009D;<control>;Cc;0;ON;;;;;N;;;;;
+009E;<control>;Cc;0;ON;;;;;N;;;;;
+009F;<control>;Cc;0;ON;;;;;N;;;;;
+00A0;NO-BREAK SPACE;Zs;0;WS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
+00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
+00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
+00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
+00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
+00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
+00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
+00AA;FEMININE ORDINAL INDICATOR;Ll;0;ON;<super> 0061;;;;N;;;;;
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Ps;0;ON;;;;;N;LEFT POINTING GUILLEMET;;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
+00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
+00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
+00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
+00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;2;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;ON;<compat> 03BC;;;;N;;;;;
+00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
+00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;1;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;ON;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pe;0;ON;;;;;N;RIGHT POINTING GUILLEMET;;;;
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
+00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
+00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
+00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
+00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
+00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
+00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
+00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;;;00E6;
+00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
+00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
+00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
+00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
+00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
+00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
+00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
+00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
+00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
+00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
+00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
+00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
+00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
+00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
+00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
+00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
+00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
+00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
+00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
+00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
+00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
+00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
+00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
+00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
+00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
+00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
+00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
+00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
+00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
+00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
+00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;;00C6;;00C6
+00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
+00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
+00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
+00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
+00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
+00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
+00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
+00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
+00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
+00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
+00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
+00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
+00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
+00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
+00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
+00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
+00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
+00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
+00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
+00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
+00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
+00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
+00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
+00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
+0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
+0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
+0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
+0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
+0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
+0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
+0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
+0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
+0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
+0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
+010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
+010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
+010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
+010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
+010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
+010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
+0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
+0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
+0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
+0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
+0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
+0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
+0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
+0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
+0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
+0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
+011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
+011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
+011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
+011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
+011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
+011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
+0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
+0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
+0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
+0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
+0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
+0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
+0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
+0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
+0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
+0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
+012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
+012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
+012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
+012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
+012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
+012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
+0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
+0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
+0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
+0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
+0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
+0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
+0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
+0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
+0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
+013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
+013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
+013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
+013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
+013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
+013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
+0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
+0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
+0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
+0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
+0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
+0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
+0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
+0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
+0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
+014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
+014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
+014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
+014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
+0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
+0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
+0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
+0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
+0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
+0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
+0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
+0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
+0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
+0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
+015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
+015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
+015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
+015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
+015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;;;015F;
+015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;;015E;;015E
+0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
+0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
+0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;;;0163;
+0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;;0162;;0162
+0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
+0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
+0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
+0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
+0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
+0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
+016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
+016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
+016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
+016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
+016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
+016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
+0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
+0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
+0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
+0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
+0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
+0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
+0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
+0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
+0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
+0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
+017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
+017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
+017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
+017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
+017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
+017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
+0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;;
+0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
+0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
+0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
+0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
+0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
+0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
+0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
+0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
+0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;;;0256;
+018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
+018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
+018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
+018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
+018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
+018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
+0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
+0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
+0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
+0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
+0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
+0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;;;;
+0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
+0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
+0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
+0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
+019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;;;
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
+019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
+019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;;;
+019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;;;0275;
+01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
+01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
+01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;;01A2;;01A2
+01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
+01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
+01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;;;;
+01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
+01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
+01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
+01AA;LATIN LETTER REVERSED ESH LOOP;Lo;0;L;;;;;N;;;;;
+01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
+01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
+01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
+01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
+01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
+01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
+01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
+01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
+01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
+01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
+01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
+01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
+01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
+01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
+01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
+01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
+01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
+01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
+01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
+01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Lo;0;L;;;;;N;;;;;
+01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
+01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
+01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
+01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
+01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
+01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
+01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
+01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
+01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
+01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
+01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
+01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
+01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
+01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
+01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
+01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
+01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
+01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
+01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
+01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
+01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
+01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
+01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
+01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
+01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
+01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0041 0307 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0061 0307 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
+01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;;01E2;;01E2
+01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
+01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
+01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
+01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
+01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
+01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
+01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
+01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
+01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
+01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
+01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
+01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
+01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
+01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
+01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
+01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
+01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
+01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
+01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;;01FC;;01FC
+01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
+01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
+0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
+0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
+0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
+0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
+0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
+0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
+0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
+0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
+0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
+0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
+020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
+020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
+020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
+020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
+020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
+020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
+0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
+0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
+0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
+0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
+0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
+0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
+0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
+0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;;
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;;
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
+0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
+0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
+0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
+0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
+0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
+0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
+0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
+025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
+025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
+025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
+025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
+025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
+025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
+0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
+0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
+0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
+0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
+0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
+0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
+0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
+0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
+026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
+026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
+026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
+026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
+0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;;
+0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
+0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
+0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
+0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;;019F;
+0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
+0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
+0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
+0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
+027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
+027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;;
+027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
+027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
+0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;;;;
+0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
+0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
+0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
+0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
+0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
+0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
+0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
+0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
+0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;;
+028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
+028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
+028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;;
+028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
+028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
+028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
+0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
+0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
+0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
+0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
+0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
+0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
+0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
+0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
+029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
+029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
+029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
+029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
+029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
+029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
+02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
+02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
+02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
+02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
+02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
+02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
+02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
+02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
+02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
+02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
+02B9;MODIFIER LETTER PRIME;Sk;0;L;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Sk;0;L;;;;;N;;;;;
+02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
+02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
+02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
+02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;L;;;;;N;;;;;
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;L;;;;;N;;;;;
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;L;;;;;N;;;;;
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;L;;;;;N;;;;;
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Sk;0;L;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Sk;0;L;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;L;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Sk;0;L;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;L;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;L;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;L;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Sk;0;L;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;L;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;L;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;L;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;L;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
+02D4;MODIFIER LETTER UP TACK;Sk;0;L;;;;;N;;;;;
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;L;;;;;N;;;;;
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;L;;;;;N;;;;;
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;L;;;;;N;;;;;
+02D8;BREVE;Sk;0;L;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;L;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
+02DA;RING ABOVE;Sk;0;L;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;L;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;L;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;L;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;L;;;;;N;;;;;
+02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
+02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;L;;;;;N;;;;;
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;L;;;;;N;;;;;
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;L;;;;;N;;;;;
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;L;;;;;N;;;;;
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;L;;;;;N;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;L;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;L;;;;;N;NON-SPACING ACUTE;Oxia;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;L;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;L;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;L;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;L;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;L;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;L;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;L;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;L;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;L;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;L;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;L;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;L;;;;;N;NON-SPACING VERTICAL LINE ABOVE;Tonos;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;L;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;L;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;L;0306 0307;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;L;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;L;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;L;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;L;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;L;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;L;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;L;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;L;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;L;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;L;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;L;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;L;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;L;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;L;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;L;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;L;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;L;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;L;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;L;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;L;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;L;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;L;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;L;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;L;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;L;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;L;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;L;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;L;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;L;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;L;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;L;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;L;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;L;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;L;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;L;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;L;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;L;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;L;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;L;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;L;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;L;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;L;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;L;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;L;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;L;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;L;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;L;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;L;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;L;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;L;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;L;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;L;0308 030D;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;220;L;;;;;N;GREEK NON-SPACING IOTA BELOW;;;;
+0360;COMBINING DOUBLE TILDE;Mn;234;L;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;L;;;;;N;;;;;
+0374;GREEK NUMERAL SIGN;Po;0;L;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Po;0;L;;;;;N;;Aristeri keraia;;;
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037E;GREEK QUESTION MARK;Po;0;L;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;L;<compat> 0020 030D;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;L;00A8 030D;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 030D;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;L;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 030D;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 030D;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 030D;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 030D;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 030D;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 030D;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03B9 0344;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
+0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
+0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
+0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
+0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
+0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
+0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
+0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
+0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
+0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
+039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
+039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
+039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
+039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
+039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
+039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
+03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
+03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
+03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
+03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
+03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
+03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
+03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
+03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
+03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
+03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
+03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
+03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 030D;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 030D;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 030D;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 030D;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03C5 0344;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
+03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
+03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
+03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
+03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
+03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
+03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
+03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
+03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
+03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
+03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
+03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
+03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
+03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
+03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
+03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
+03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
+03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
+03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
+03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
+03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
+03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
+03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
+03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
+03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
+03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
+03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 030D;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 030D;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 030D;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03D0;GREEK BETA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;
+03D1;GREEK THETA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 030D;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
+03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
+03D5;GREEK PHI SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;
+03D6;GREEK PI SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;;
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;;
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;;
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;;
+03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
+03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
+03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
+03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
+03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
+03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
+03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
+03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
+03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
+03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
+03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
+03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
+03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
+03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
+03F0;GREEK KAPPA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;
+03F1;GREEK RHO SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;;;
+03F3;GREEK LETTER YOT;Lo;0;L;;;;;N;;;;;
+0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
+0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
+0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
+0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
+0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
+0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
+0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
+0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
+0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
+040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
+040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
+040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
+040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
+040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
+0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
+0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
+0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
+0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
+0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
+0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
+0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
+0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
+0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
+0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
+041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
+041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
+041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
+041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
+041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
+041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
+0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
+0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
+0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
+0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
+0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
+0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
+0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
+0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
+0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
+0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
+042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
+042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
+042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
+042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
+042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
+042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
+0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
+0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
+0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
+0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
+0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
+0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
+0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
+0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
+0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
+0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
+043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
+043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
+043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
+043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
+043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
+043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
+0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
+0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
+0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
+0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
+0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
+0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
+0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
+0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
+0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
+0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
+044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
+044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
+044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
+044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
+044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
+044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
+0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
+0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
+0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
+0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
+0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
+0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
+0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
+0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
+0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
+045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
+045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
+045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
+045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
+045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
+0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
+0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
+0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
+0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
+0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
+0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
+0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
+0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
+0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
+0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
+046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
+046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
+046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
+046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
+046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
+046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
+0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
+0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
+0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
+0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
+0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
+0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
+0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
+0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
+0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
+0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
+047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
+047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
+047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
+047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
+047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
+047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
+0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
+0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
+0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
+0483;COMBINING CYRILLIC TITLO;Mn;230;L;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;L;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;L;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;L;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
+0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
+0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
+0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
+0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
+0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
+0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
+0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
+0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
+0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
+049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
+049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
+049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
+049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
+049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
+049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
+04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
+04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
+04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
+04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
+04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
+04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
+04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
+04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
+04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
+04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
+04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
+04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
+04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
+04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
+04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
+04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
+04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
+04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
+04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
+04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
+04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
+04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
+04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
+04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
+04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
+04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
+04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
+04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
+04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
+04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
+04C0;CYRILLIC LETTER PALOCHKA;Lo;0;L;;;;;N;CYRILLIC LETTER I;;;;
+04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
+04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
+04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
+04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
+04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
+04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
+04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
+04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
+04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
+04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
+04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
+04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
+04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;00C6;;;;N;;;;04D5;
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;00E6;;;;N;;;04D4;;04D4
+04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
+04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
+04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;018F;;;;N;;;;04D9;
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;0259;;;;N;;;04D8;;04D8
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;018F 0308;;;;N;;;;04DB;
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;0259 0308;;;;N;;;04DA;;04DA
+04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
+04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
+04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
+04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
+04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;01B7;;;;N;;;;04E1;
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;0292;;;;N;;;04E0;;04E0
+04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
+04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
+04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
+04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
+04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
+04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
+04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;019F;;;;N;;;;04E9;
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;0275;;;;N;;;04E8;;04E8
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;019F 0308;;;;N;;;;04EB;
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;0275 0308;;;;N;;;04EA;;04EA
+04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
+04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
+04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
+04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
+04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
+04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
+04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
+04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
+04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
+04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
+0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
+0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
+0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
+0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
+0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
+0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
+0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
+0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
+0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
+053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
+053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
+053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
+053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
+053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
+053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
+0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
+0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
+0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
+0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
+0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
+0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
+0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
+0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
+0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
+0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
+054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
+054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
+054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
+054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
+054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
+054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
+0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
+0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
+0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
+0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
+0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
+0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
+0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
+0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
+055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
+055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
+055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
+055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
+055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
+0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
+0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
+0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
+0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
+0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
+0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
+0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
+0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
+056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
+056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
+056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
+056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
+056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
+056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
+0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
+0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
+0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
+0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
+0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
+0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
+0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
+0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
+0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
+0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
+057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
+057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
+057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
+057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
+057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
+057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
+0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
+0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
+0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
+0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
+0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
+0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
+0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
+0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;R;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;R;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;R;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;R;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;R;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;R;;;;;N;;;;;
+0597;HEBREW ACCENT REVIA;Mn;230;R;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;R;;;;;N;;;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;R;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;R;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;R;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;R;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;R;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;R;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;R;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;R;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;R;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;R;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;R;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;R;;;;;N;;;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;R;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;R;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;R;;;;;N;;;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;R;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;R;;;;;N;;;;;
+05AB;HEBREW ACCENT OLE;Mn;230;R;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;R;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;R;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;230;R;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;R;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;R;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;R;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;R;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;R;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;R;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;R;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;R;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;R;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;R;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;R;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;R;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;R;;;;;N;HEBREW POINT DAGESH;;;;
+05BD;HEBREW POINT METEG;Mn;22;R;;;;;N;;;;;
+05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;R;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;R;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;R;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;R;;;;;N;;;;;
+05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
+05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
+05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
+05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
+05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
+05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
+05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
+05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
+05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
+05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
+05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
+05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
+05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
+05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
+05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
+05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
+05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
+05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
+05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
+05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
+05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
+05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
+05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
+05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
+05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
+05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
+05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
+060C;ARABIC COMMA;Po;0;R;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;R;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;R;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;R;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;R;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;R;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;R;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;R;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;R;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;R;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;R;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;R;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;R;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;R;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;R;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;R;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;R;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;R;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;R;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;R;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;R;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;R;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;R;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;R;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;R;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;R;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;R;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;R;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;R;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;R;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;R;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;R;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;R;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;R;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;R;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;R;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;R;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;R;;;;;N;;;;;
+0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
+066D;ARABIC FIVE POINTED STAR;Po;0;R;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;R;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;R;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;R;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;R;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;R;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;R;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;R;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;R;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;R;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;R;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;R;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;R;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;R;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;R;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;R;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;R;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;R;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;R;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;R;;;;;N;;;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;R;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;R;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;R;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;R;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;R;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;R;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;R;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;R;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;R;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;R;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;R;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;R;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06D0;ARABIC LETTER E;Lo;0;R;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;R;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;R;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;R;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;R;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;R;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;R;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;R;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;R;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;R;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;R;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Me;0;R;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;R;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;R;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;R;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;R;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;R;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;R;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;R;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;R;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;R;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;R;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;R;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;R;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;R;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;R;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;R;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;R;;;;;N;;;;;
+06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
+06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
+06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
+06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
+06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
+06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
+06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
+06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
+06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
+06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;37;L;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;36;L;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
+0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
+0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
+0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
+0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
+090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
+090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
+090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
+090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
+0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
+0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
+0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
+0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
+0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
+0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
+0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
+0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
+091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
+091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
+0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
+0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
+0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
+0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
+092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
+092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
+092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
+092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
+0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
+0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
+0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
+0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
+0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
+0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
+0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
+093C;DEVANAGARI SIGN NUKTA;Mn;7;L;;;;;N;;;;;
+093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0941;DEVANAGARI VOWEL SIGN U;Mn;38;L;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;39;L;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;40;L;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;41;L;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;42;L;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;43;L;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;44;L;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;45;L;;;;;N;;;;;
+0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
+094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+094D;DEVANAGARI SIGN VIRAMA;Mn;9;L;;;;;N;;;;;
+0950;DEVANAGARI OM;So;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;46;L;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;47;L;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;L;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;L;;;;;N;;;;;
+0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
+0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
+095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
+095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
+095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
+095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
+095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
+095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
+0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;48;L;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;49;L;;;;;N;;;;;
+0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
+0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;50;L;;;;;N;;;;;
+0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
+0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
+0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
+0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
+0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
+098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
+098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
+0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
+0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
+0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
+0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
+0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
+0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
+099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
+099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
+099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
+099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
+099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
+099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
+09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
+09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
+09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
+09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
+09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
+09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
+09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
+09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
+09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
+09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
+09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
+09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
+09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
+09B0;BENGALI LETTER RA;Lo;0;L;09AC 09BC;;;;N;;;;;
+09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
+09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
+09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
+09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
+09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
+09BC;BENGALI SIGN NUKTA;Mn;7;L;;;;;N;;;;;
+09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+09C1;BENGALI VOWEL SIGN U;Mn;51;L;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;52;L;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;53;L;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;54;L;;;;;N;;;;;
+09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
+09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
+09CD;BENGALI SIGN VIRAMA;Mn;9;L;;;;;N;;;;;
+09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
+09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
+09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
+09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;55;L;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;56;L;;;;;N;;;;;
+09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
+09F2;BENGALI RUPEE MARK;Sc;0;L;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;L;;;;;N;;;;;
+09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;-1;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;57;L;;;;;N;;;;;
+0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
+0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
+0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
+0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
+0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
+0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
+0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
+0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
+0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
+0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
+0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
+0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
+0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
+0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
+0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
+0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
+0A33;GURMUKHI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;L;;;;;N;;;;;
+0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0A41;GURMUKHI VOWEL SIGN U;Mn;58;L;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;59;L;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;60;L;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;61;L;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;62;L;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;63;L;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;L;;;;;N;;;;;
+0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
+0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
+0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
+0A5C;GURMUKHI LETTER RRA;Lo;0;L;0A21 0A3C;;;;N;;;;;
+0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
+0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0A70;GURMUKHI TIPPI;Mn;64;L;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;65;L;;;;;N;;;;;
+0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
+0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
+0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
+0A81;GUJARATI SIGN CANDRABINDU;Mn;67;L;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;66;L;;;;;N;;;;;
+0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
+0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
+0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
+0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
+0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
+0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
+0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
+0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
+0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
+0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
+0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
+0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
+0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
+0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
+0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
+0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
+0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
+0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
+0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
+0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
+0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
+0ABC;GUJARATI SIGN NUKTA;Mn;7;L;;;;;N;;;;;
+0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0AC1;GUJARATI VOWEL SIGN U;Mn;68;L;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;69;L;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;70;L;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;71;L;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;72;L;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;73;L;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;74;L;;;;;N;;;;;
+0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+0ACD;GUJARATI SIGN VIRAMA;Mn;9;L;;;;;N;;;;;
+0AD0;GUJARATI OM;So;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;75;L;;;;;N;;;;;
+0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
+0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
+0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
+0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
+0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
+0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
+0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
+0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
+0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
+0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
+0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
+0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
+0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
+0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
+0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
+0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
+0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
+0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
+0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
+0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
+0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
+0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
+0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
+0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
+0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
+0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
+0B3C;ORIYA SIGN NUKTA;Mn;7;L;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;76;L;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;77;L;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;78;L;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;79;L;;;;;N;;;;;
+0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
+0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
+0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
+0B4D;ORIYA SIGN VIRAMA;Mn;9;L;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;230;L;;;;;N;;;;;
+0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
+0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
+0B5F;ORIYA LETTER YYA;Lo;0;L;0B2F 0B3C;;;;N;;;;;
+0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;L;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
+0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
+0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
+0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
+0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
+0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
+0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
+0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
+0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
+0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
+0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
+0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
+0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
+0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
+0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
+0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
+0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
+0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
+0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
+0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
+0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
+0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
+0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
+0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
+0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
+0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
+0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
+0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
+0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
+0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
+0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
+0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0BC0;TAMIL VOWEL SIGN II;Mn;80;L;;;;;N;;;;;
+0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
+0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
+0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
+0BCD;TAMIL SIGN VIRAMA;Mn;9;L;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
+0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
+0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
+0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
+0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
+0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
+0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
+0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
+0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
+0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
+0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
+0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
+0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
+0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
+0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
+0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
+0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
+0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
+0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
+0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
+0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
+0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
+0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
+0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
+0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
+0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
+0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
+0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
+0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
+0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
+0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
+0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
+0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
+0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
+0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
+0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
+0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
+0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
+0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
+0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
+0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+0C3E;TELUGU VOWEL SIGN AA;Mn;81;L;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;82;L;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;83;L;;;;;N;;;;;
+0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0C46;TELUGU VOWEL SIGN E;Mn;84;L;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;85;L;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;86;L;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;87;L;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;88;L;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;89;L;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;L;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;90;L;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;L;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
+0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
+0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
+0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
+0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
+0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
+0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
+0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
+0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
+0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
+0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
+0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
+0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
+0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
+0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
+0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
+0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
+0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
+0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
+0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
+0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
+0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
+0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
+0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
+0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
+0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
+0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
+0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
+0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
+0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;92;L;;;;;N;;;;;
+0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
+0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0CC6;KANNADA VOWEL SIGN E;Mn;93;L;;;;;N;;;;;
+0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
+0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
+0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
+0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CC6 0CC2 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;94;L;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;L;;;;;N;;;;;
+0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
+0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
+0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
+0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
+0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
+0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
+0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
+0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
+0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
+0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
+0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
+0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
+0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
+0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
+0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
+0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
+0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
+0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
+0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
+0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
+0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
+0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
+0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
+0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
+0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
+0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
+0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
+0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
+0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
+0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
+0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
+0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
+0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
+0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
+0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
+0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0D41;MALAYALAM VOWEL SIGN U;Mn;95;L;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;96;L;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;97;L;;;;;N;;;;;
+0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
+0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
+0D4D;MALAYALAM SIGN VIRAMA;Mn;9;L;;;;;N;;;;;
+0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
+0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
+0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
+0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
+0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
+0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
+0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
+0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
+0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
+0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
+0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
+0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
+0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
+0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
+0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
+0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
+0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
+0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
+0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
+0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
+0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
+0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
+0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
+0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
+0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
+0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
+0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
+0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
+0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
+0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
+0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
+0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
+0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
+0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
+0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
+0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
+0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
+0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
+0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
+0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
+0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
+0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
+0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
+0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
+0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
+0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
+0E2F;THAI CHARACTER PAIYANNOI;Po;0;L;;;;;N;THAI PAI YAN NOI;;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;98;L;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
+0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
+0E33;THAI CHARACTER SARA AM;Lo;0;L;0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;99;L;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;100;L;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;101;L;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;102;L;;;;;N;THAI VOWEL SIGN SARA UEE;;;;
+0E38;THAI CHARACTER SARA U;Mn;103;L;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;104;L;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;105;L;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;L;;;;;N;THAI BAHT SIGN;;;;
+0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
+0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
+0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
+0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;106;L;;;;;N;THAI VOWEL SIGN MAI TAI KHU;;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;L;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;108;L;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;109;L;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;110;L;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;111;L;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;112;L;;;;;N;THAI NIKKHAHIT;;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;128;L;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;So;0;L;;;;;N;THAI FONGMAN;;;;
+0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
+0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
+0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
+0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
+0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
+0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
+0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
+0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
+0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
+0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
+0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
+0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
+0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
+0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
+0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
+0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
+0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
+0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
+0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
+0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
+0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
+0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
+0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
+0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
+0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
+0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
+0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
+0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
+0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
+0EAF;LAO ELLIPSIS;Po;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;113;L;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;114;L;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;115;L;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;116;L;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;117;L;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;L;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;119;L;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;120;L;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;121;L;;;;;N;;;;;
+0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
+0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
+0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
+0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
+0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
+0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
+0EC8;LAO TONE MAI EK;Mn;122;L;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;123;L;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;124;L;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;125;L;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;126;L;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;127;L;;;;;N;;;;;
+0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
+0F00;TIBETAN SYLLABLE OM;So;0;L;;;;;N;;;;;
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;;yik go dun ma;;;
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;;drul shey;;;
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;;nyi shey;;;
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;;rinchen pung shey;;;
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
+0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;;ter tsek;;;
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;L;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;L;;;;;N;;dong tsu;;;
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
+0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;230;L;;;;;N;;nge zung nyi da;;;
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;230;L;;;;;N;;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;L;;;;;N;;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;L;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;L;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;L;;;;;N;;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;L;;;;;N;;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;220;L;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;220;L;;;;;N;;mar tse;;;
+0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
+0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
+0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
+0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
+0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
+0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
+0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
+0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;;;;;
+0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
+0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
+0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
+0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
+0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
+0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
+0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
+0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
+0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
+0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
+0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
+0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
+0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
+0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
+0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
+0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;;;;;
+0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
+0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;;;;
+0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
+0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;;;;;
+0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
+0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
+0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
+0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;145;L;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;L;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;131;L;0F72 0F71;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;L;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;133;L;0F74 0F71;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;134;L;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;135;L;0F76 0F71;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;136;L;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;137;L;0F78 0F71;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;138;L;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;139;L;;;;;N;;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;140;L;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;141;L;;;;;N;;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;142;L;;;;;N;;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;143;L;;;;;N;;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;144;L;0F80 0F71;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;L;;;;;N;;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;L;;;;;N;;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;L;;;;;N;;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;L;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;L;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;Mn;230;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;Mn;230;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Mn;230;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Mn;230;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;6;L;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;6;L;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;6;L;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;6;L;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;6;L;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;6;L;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;6;L;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;6;L;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;6;L;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;6;L;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;6;L;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;6;L;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;6;L;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;6;L;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;6;L;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;6;L;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;6;L;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;6;L;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;6;L;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;6;L;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;6;L;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;6;L;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;6;L;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;6;L;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;6;L;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;6;L;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;6;L;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;6;L;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;6;L;;;;;N;;;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;6;L;;;;;N;;;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;6;L;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;6;L;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;6;L;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;6;L;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;6;L;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;6;L;0F90 0FB5;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;10D0;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;10D1;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;10D2;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;10D3;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;10D4;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;10D5;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;10D6;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;10D7;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;10D8;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;10D9;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;10DA;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;10DB;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;10DC;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;10DD;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;10DE;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;10DF;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;10E0;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;10E1;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;10E2;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;10E3;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;10E4;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;10E5;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;10E6;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;10E7;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;10E8;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;10E9;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;10EA;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;10EB;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;10EC;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;10ED;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;10EE;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;10EF;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;10F0;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;10F1;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;10F2;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;10F3;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;10F4;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;10F5;
+10D0;GEORGIAN LETTER AN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;<compat> 1100 1100;;;;N;;;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;<compat> 1103 1103;;;;N;;;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;<compat> 1107 1107;;;;N;;;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;<compat> 1109 1109;;;;N;;;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;<compat> 110C 110C;;;;N;;;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;<compat> 1102 1100;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;<compat> 1102 1102;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;<compat> 1102 1103;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;<compat> 1102 1107;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;<compat> 1103 1100;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;<compat> 1105 1102;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;<compat> 1105 1105;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;<compat> 1105 1112;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;<compat> 1105 110B;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;<compat> 1106 1107;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;<compat> 1106 110B;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;<compat> 1107 1100;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;<compat> 1107 1102;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;<compat> 1107 1103;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;<compat> 1107 1109;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1107 1109 1100;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1107 1109 1103;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;<compat> 1107 1109 1107;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;<compat> 1107 1109 1109;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;<compat> 1107 1109 110C;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;<compat> 1107 110C;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;<compat> 1107 110E;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;<compat> 1107 1110;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;<compat> 1107 1111;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;<compat> 1107 110B;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 1107 1107 110B;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;<compat> 1109 1100;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;<compat> 1109 1102;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;<compat> 1109 1103;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;<compat> 1109 1105;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;<compat> 1109 1106;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;<compat> 1109 1107;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;<compat> 1109 1107 1100;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;<compat> 1109 1109 1109;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;<compat> 1109 110B;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;<compat> 1109 110C;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;<compat> 1109 110E;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;<compat> 1109 110F;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;<compat> 1109 1110;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;<compat> 1109 1111;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;<compat> 1109 1112;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;<compat> 113C 113C;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;<compat> 113E 113E;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;<compat> 110B 1100;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;<compat> 110B 1103;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;<compat> 110B 1106;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;<compat> 110B 1107;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;<compat> 110B 1109;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;<compat> 110B 1140;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;<compat> 110B 110B;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;<compat> 110B 110C;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;<compat> 110B 110E;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;<compat> 110B 1110;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;<compat> 110B 1111;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;<compat> 110C 110B;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;<compat> 114E 114E;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;<compat> 1150 1150;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;<compat> 110E 110F;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;<compat> 110E 1112;;;;N;;;;;
+1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;<compat> 1111 1107;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1111 110B;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;<compat> 1112 1112;;;;N;;;;;
+1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
+1162;HANGUL JUNGSEONG AE;Lo;0;L;<compat> 1161 1175;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;<compat> 1163 1175;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;<compat> 1165 1175;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;<compat> 1167 1175;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;<compat> 1169 1161;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;<compat> 1169 1161 1175;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;<compat> 1169 1175;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;<compat> 116E 1165;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;<compat> 116E 1165 1175;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;<compat> 116E 1175;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;<compat> 1173 1175;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;<compat> 1161 1169;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;<compat> 1161 116E;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;<compat> 1163 1169;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;<compat> 1163 116D;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;<compat> 1165 1169;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;<compat> 1165 116E;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;<compat> 1165 1173;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;<compat> 1167 1169;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;<compat> 1167 116E;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;<compat> 1169 1165;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;<compat> 1169 1166;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;<compat> 1169 1168;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;<compat> 1169 1169;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;<compat> 1169 116E;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;<compat> 116D 1163;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;<compat> 116D 1164;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;<compat> 116D 1167;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;<compat> 116D 1169;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;<compat> 116D 1175;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;<compat> 116E 1161;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;<compat> 116E 1162;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;<compat> 116E 1165 1173;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;<compat> 116E 1168;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;<compat> 116E 116E;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;<compat> 1172 1161;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;<compat> 1172 1165;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;<compat> 1172 1166;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;<compat> 1172 1167;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;<compat> 1172 1168;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;<compat> 1172 116E;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;<compat> 1172 1175;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;<compat> 1173 116E;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;<compat> 1173 1173;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;<compat> 1174 116E;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;<compat> 1175 1161;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;<compat> 1175 1163;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;<compat> 1175 1169;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;<compat> 1175 116E;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;<compat> 1175 1173;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;<compat> 1175 119E;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;<compat> 119E 1165;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;<compat> 119E 116E;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;<compat> 119E 1175;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;<compat> 119E 119E;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;<compat> 11A8 11A8;;;;N;;;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;<compat> 11A8 11BA;;;;N;;;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;<compat> 11AB 11BD;;;;N;;;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;<compat> 11AB 11C2;;;;N;;;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;<compat> 11AF 11A8;;;;N;;;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;<compat> 11AF 11B7;;;;N;;;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;<compat> 11AF 11B8;;;;N;;;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;<compat> 11AF 11BA;;;;N;;;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;<compat> 11AF 11C0;;;;N;;;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;<compat> 11AF 11C1;;;;N;;;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;<compat> 11AF 11C2;;;;N;;;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;<compat> 11B8 11BA;;;;N;;;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;<compat> 11BA 11BA;;;;N;;;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;<compat> 11A8 11AF;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;<compat> 11A8 11BA 11A8;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;<compat> 11AB 11A8;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;<compat> 11AB 11AE;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;<compat> 11AB 11BA;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;<compat> 11AB 11EB;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;<compat> 11AB 11C0;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;<compat> 11AE 11A8;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;<compat> 11AE 11AF;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11AF 11A8 11BA;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;<compat> 11AF 11AB;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;<compat> 11AF 11AE;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;<compat> 11AF 11AE 11C2;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;<compat> 11AF 11AF;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;<compat> 11AF 11B7 11A8;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;<compat> 11AF 11B7 11BA;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11AF 11B8 11BA;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;<compat> 11AF 11B8 11C2;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;<compat> 11AF 11B8 11BC;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;<compat> 11AF 11BA 11BA;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;<compat> 11AF 11EB;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;<compat> 11AF 11BF;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11AF 11F9;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;<compat> 11B7 11A8;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;<compat> 11B7 11AF;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;<compat> 11B7 11B8;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;<compat> 11B7 11BA;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;<compat> 11B7 11BA 11BA;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;<compat> 11B7 11EB;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;<compat> 11B7 11BE;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;<compat> 11B7 11C2;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;<compat> 11B7 11BC;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;<compat> 11B8 11AF;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;<compat> 11B8 11C1;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;<compat> 11B8 11C2;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;<compat> 11B8 11BC;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;<compat> 11BA 11A8;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;<compat> 11BA 11AE;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;<compat> 11BA 11AF;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;<compat> 11BA 11B8;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;<compat> 11BC 11A8;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;<compat> 11BC 11A8 11A8;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;<compat> 11BC 11BC;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;<compat> 11BC 11BF;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;<compat> 11F0 11BA;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F0 11EB;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;<compat> 11C1 11B8;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;<compat> 11C1 11BC;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;<compat> 11C2 11AB;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;<compat> 11C2 11AF;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;<compat> 11C2 11B7;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;<compat> 11C2 11B8;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
+1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
+1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
+1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
+1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
+1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
+1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
+1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
+1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
+1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
+1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
+1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
+1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
+1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
+1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
+1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
+1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
+1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
+1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
+1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
+1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
+1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
+1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
+1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
+1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
+1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
+1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
+1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
+1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0114 0327;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0115 0327;;;;N;;;1E1C;;1E1C
+1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
+1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
+1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
+1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
+1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
+1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
+1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
+1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
+1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
+1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
+1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
+1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
+1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
+1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
+1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
+1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
+1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
+1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
+1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
+1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
+1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
+1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
+1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
+1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
+1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
+1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
+1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
+1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
+1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
+1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
+1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
+1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
+1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
+1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
+1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
+1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
+1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
+1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
+1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
+1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
+1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
+1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
+1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
+1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
+1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
+1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
+1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
+1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
+1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
+1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
+1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
+1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
+1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
+1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
+1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
+1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
+1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
+1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
+1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
+1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
+1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
+1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
+1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
+1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
+1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
+1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
+1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
+1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
+1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
+1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
+1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
+1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
+1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
+1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
+1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
+1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
+1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
+1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
+1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
+1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
+1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
+1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
+1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
+1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
+1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
+1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
+1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
+1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
+1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
+1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
+1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
+1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
+1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
+1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
+1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
+1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
+1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
+1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
+1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
+1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
+1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
+1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
+1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
+1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
+1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
+1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
+1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
+1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
+1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
+1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
+1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
+1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
+1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
+1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
+1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
+1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
+1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
+1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
+1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
+1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
+1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
+1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
+1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
+1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
+1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;;;;;N;;;;;
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
+1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
+1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
+1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
+1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
+1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
+1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
+1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
+1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
+1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
+1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
+1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
+1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
+1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;00C2 0323;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00E2 0323;;;;N;;;1EAC;;1EAC
+1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
+1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
+1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
+1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
+1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
+1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
+1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
+1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
+1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;0102 0323;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;0103 0323;;;;N;;;1EB6;;1EB6
+1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
+1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
+1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
+1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
+1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
+1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
+1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
+1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
+1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
+1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
+1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
+1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
+1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
+1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
+1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;00CA 0323;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00EA 0323;;;;N;;;1EC6;;1EC6
+1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
+1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
+1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
+1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
+1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
+1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
+1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
+1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
+1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
+1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
+1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
+1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
+1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
+1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
+1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
+1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
+1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;00D4 0323;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00F4 0323;;;;N;;;1ED8;;1ED8
+1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
+1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
+1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
+1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
+1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
+1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
+1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
+1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
+1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
+1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
+1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
+1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
+1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
+1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
+1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
+1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
+1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
+1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
+1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
+1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
+1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
+1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
+1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
+1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
+1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
+1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
+1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
+1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
+1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
+1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
+1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
+1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
+1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
+1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
+1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
+1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
+1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
+1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
+1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
+1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
+1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
+1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
+1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
+1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
+1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
+1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
+1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
+1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
+1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
+1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
+1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
+1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
+1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
+1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
+1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
+1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
+1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
+1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
+1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
+1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
+1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
+1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
+1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
+1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
+1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
+1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
+1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
+1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
+1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
+1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
+1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
+1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
+1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
+1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
+1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
+1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
+1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
+1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
+1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
+1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
+1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
+1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
+1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
+1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
+1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
+1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
+1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
+1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
+1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
+1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
+1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
+1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
+1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
+1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
+1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
+1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
+1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
+1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
+1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
+1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
+1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
+1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
+1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
+1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
+1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
+1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
+1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
+1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
+1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
+1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
+1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
+1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
+1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
+1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
+1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
+1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
+1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
+1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
+1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
+1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
+1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
+1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
+1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
+1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
+1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
+1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
+1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
+1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
+1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
+1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
+1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
+1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
+1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
+1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03B1 0301;;;;N;;;1FBB;;1FBB
+1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
+1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03B5 0301;;;;N;;;1FC9;;1FC9
+1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
+1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03B7 0301;;;;N;;;1FCB;;1FCB
+1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
+1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03B9 0301;;;;N;;;1FDB;;1FDB
+1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
+1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03BF 0301;;;;N;;;1FF9;;1FF9
+1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
+1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03C5 0301;;;;N;;;1FEB;;1FEB
+1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
+1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03C9 0301;;;;N;;;1FFB;;1FFB
+1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
+1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
+1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
+1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
+1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
+1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
+1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
+1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
+1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lu;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F0F 0345;;;;N;;;;1F87;
+1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
+1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
+1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
+1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
+1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
+1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
+1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
+1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
+1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lu;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F2F 0345;;;;N;;;;1F97;
+1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
+1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
+1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
+1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
+1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
+1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
+1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
+1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
+1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lu;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F6F 0345;;;;N;;;;1FA7;
+1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
+1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
+1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
+1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
+1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;1F71 0345;;;;N;;;;;
+1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
+1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
+1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
+1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
+1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
+1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0391 0301;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lu;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;L;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Lu;0;L;03B9;;;;N;;;;;
+1FBF;GREEK PSILI;Sk;0;L;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;L;<compat> 0020 0342;;;;N;;;;;
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;L;00A8 0342;;;;N;;;;;
+1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
+1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
+1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;1F75 0345;;;;N;;;;;
+1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
+1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
+1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
+1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0395 0301;;;;N;;;;1F73;
+1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
+1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0397 0301;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lu;0;L;0397 0345;;;;N;;;;1FC3;
+1FCD;GREEK PSILI AND VARIA;Sk;0;L;1FBF 0300;;;;N;;;;;
+1FCE;GREEK PSILI AND OXIA;Sk;0;L;1FBF 0301;;;;N;;;;;
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;L;1FBF 0342;;;;N;;;;;
+1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
+1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
+1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
+1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;03CA 0301;;;;N;;;;;
+1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
+1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
+1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
+1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
+1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
+1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;0399 0301;;;;N;;;;1F77;
+1FDD;GREEK DASIA AND VARIA;Sk;0;L;1FFE 0300;;;;N;;;;;
+1FDE;GREEK DASIA AND OXIA;Sk;0;L;1FFE 0301;;;;N;;;;;
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;L;1FFE 0342;;;;N;;;;;
+1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
+1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
+1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
+1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03CB 0301;;;;N;;;;;
+1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
+1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
+1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
+1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
+1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
+1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
+1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
+1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;03A5 0301;;;;N;;;;1F7B;
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;L;00A8 0300;;;;N;;;;;
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;L;00A8 0301;;;;N;;;;;
+1FEF;GREEK VARIA;Sk;0;L;0060;;;;N;;;;;
+1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
+1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
+1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;1F79 0345;;;;N;;;;;
+1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
+1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
+1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
+1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;039F 0301;;;;N;;;;1F79;
+1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
+1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;03A9 0301;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lu;0;L;03A9 0345;;;;N;;;;1FF3;
+1FFD;GREEK OXIA;Sk;0;L;00B4;;;;N;;;;;
+1FFE;GREEK DASIA;Sk;0;L;<compat> 0020 0314;;;;N;;;;;
+2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
+2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
+2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2007;FIGURE SPACE;Zs;0;CS;<noBreak> 0020;;;;N;;;;;
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200B;ZERO WIDTH SPACE;Zs;0;WS;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;ON;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;ON;;;;;N;;;;;
+200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
+2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
+2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
+2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
+2013;EN DASH;Pd;0;ON;;;;;N;;;;;
+2014;EM DASH;Pd;0;ON;;;;;N;;;;;
+2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
+2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
+2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
+2018;LEFT SINGLE QUOTATION MARK;Ps;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pe;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Ps;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Ps;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pe;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Ps;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
+2020;DAGGER;Po;0;ON;;;;;N;;;;;
+2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
+2022;BULLET;Po;0;ON;;;;;N;;;;;
+2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
+2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
+2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
+2028;LINE SEPARATOR;Zl;0;B;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;ON;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;ON;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;ON;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;ON;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;ON;;;;;N;;;;;
+2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+2032;PRIME;Po;0;ET;;;;;N;;;;;
+2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
+2038;CARET;Po;0;ON;;;;;N;;;;;
+2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Ps;0;ON;;;;;N;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pe;0;ON;;;;;N;RIGHT POINTING SINGLE GUILLEMET;;;;
+203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
+203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
+203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
+2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
+2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
+2042;ASTERISM;Po;0;ON;;;;;N;;;;;
+2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
+2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;ON;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;ON;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;ON;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;ON;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;ON;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;ON;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;ON;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;0;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
+20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
+20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
+20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
+20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
+20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
+20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
+20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
+20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
+20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
+20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;L;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;L;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;L;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;L;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;L;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;L;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;L;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;L;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;L;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;L;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;L;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;L;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;L;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;L;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;L;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;L;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;L;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;1;L;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+2100;ACCOUNT OF;So;0;ON;;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;ON;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
+2105;CARE OF;So;0;ON;;;;;N;;;;;
+2106;CADA UNA;So;0;ON;;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;ON;<compat> 0190;;;;N;EULERS;;;;
+2108;SCRUPLE;So;0;ON;;;;;N;;;;;
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
+210A;SCRIPT SMALL G;Ll;0;ON;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;ON;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;ON;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;ON;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;ON;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;ON;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;ON;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;ON;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;ON;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;ON;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;ON;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
+2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
+2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
+2118;SCRIPT CAPITAL P;Lu;0;ON;<font> 0050;;;;N;SCRIPT P;;;;
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;ON;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;ON;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;ON;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;ON;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;ON;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
+211F;RESPONSE;So;0;ON;;;;;N;;;;;
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
+2121;TELEPHONE SIGN;So;0;ON;<super> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
+2123;VERSICLE;So;0;ON;;;;;N;;;;;
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;ON;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
+2126;OHM SIGN;Lu;0;ON;03A9;;;;N;OHM;;;;
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
+2128;BLACK-LETTER CAPITAL Z;Lu;0;ON;<font> 005A;;;;N;BLACK-LETTER Z;;;;
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
+212A;KELVIN SIGN;Lu;0;ON;004B;;;;N;DEGREES KELVIN;;;;
+212B;ANGSTROM SIGN;Lu;0;ON;00C5;;;;N;ANGSTROM UNIT;;;;
+212C;SCRIPT CAPITAL B;Lu;0;ON;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;ON;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;Ll;0;ON;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;ON;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;ON;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;ON;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;;
+2133;SCRIPT CAPITAL M;Lu;0;ON;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;ON;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;ON;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;ON;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;ON;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;ON;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
+2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
+2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
+2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
+2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
+2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
+2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
+2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
+2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
+2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
+2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
+2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
+2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
+219A;LEFTWARDS ARROW WITH STROKE;So;0;ON;;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;So;0;ON;;;;;N;RIGHT ARROW WITH STROKE;;;;
+219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
+219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
+219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
+219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
+21A0;RIGHTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
+21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
+21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
+21A3;RIGHTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
+21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
+21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
+21A6;RIGHTWARDS ARROW FROM BAR;So;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
+21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
+21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
+21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
+21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
+21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
+21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
+21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
+21AE;LEFT RIGHT ARROW WITH STROKE;So;0;ON;;;;;N;;;;;
+21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
+21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
+21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
+21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
+21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
+21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
+21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
+21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
+21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
+21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
+21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
+21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
+21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
+21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
+21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
+21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
+21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
+21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
+21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
+21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
+21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
+21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
+21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
+21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
+21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
+21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
+21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;So;0;ON;;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
+21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
+21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
+21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
+21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
+21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
+21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
+21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
+21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
+21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
+21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
+21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
+21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
+21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
+21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
+21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
+21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
+21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
+21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
+21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
+21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
+21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
+21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
+21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
+21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
+21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
+2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
+2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
+2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
+2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
+2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
+2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
+2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
+2207;NABLA;Sm;0;ON;;;;;N;;;;;
+2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
+220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
+220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
+220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
+2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
+2212;MINUS SIGN;Sm;0;ET;;;;;N;;;;;
+2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
+2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
+2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
+221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
+221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
+221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
+221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
+221E;INFINITY;Sm;0;ON;;;;;N;;;;;
+221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
+2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
+2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
+2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
+2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
+2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
+2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
+222A;UNION;Sm;0;ON;;;;;N;;;;;
+222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
+2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
+2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
+2236;RATIO;Sm;0;ON;;;;;N;;;;;
+2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
+2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
+2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
+223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
+223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
+223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;;;;
+223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
+223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
+2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2241;NOT TILDE;Sm;0;ON;007E 0338;;;;Y;;;;;
+2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
+2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
+2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
+2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
+224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
+224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
+2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
+2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
+2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
+2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
+2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
+225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
+225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
+225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
+225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
+225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
+225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
+2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
+2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
+2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
+2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
+2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
+2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
+2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
+2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
+226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
+226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
+226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
+226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
+2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
+2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
+2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
+2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
+2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
+2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
+2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
+2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
+2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
+2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
+227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
+227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
+2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
+2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
+2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
+2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
+2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
+2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
+2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
+228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
+228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
+228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
+228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
+228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
+228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
+2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
+2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
+2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
+2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
+229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
+229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
+229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
+22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
+22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
+22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
+22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
+22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
+22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
+22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
+22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
+22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
+22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
+22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
+22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
+22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
+22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
+22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
+22BB;XOR;Sm;0;ON;;;;;N;;;;;
+22BC;NAND;Sm;0;ON;;;;;N;;;;;
+22BD;NOR;Sm;0;ON;;;;;N;;;;;
+22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
+22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
+22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
+22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
+22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
+22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
+22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
+22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
+22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
+22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
+22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
+22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
+22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
+22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
+22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
+22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
+22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
+22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
+22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
+22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
+22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
+22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
+22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
+22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
+22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
+22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
+22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
+22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
+2302;HOUSE;So;0;ON;;;;;N;;;;;
+2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
+2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
+2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
+2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
+2307;WAVY LINE;So;0;ON;;;;;N;;;;;
+2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
+2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
+230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
+230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
+230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
+230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
+2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
+2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
+2312;ARC;So;0;ON;;;;;N;;;;;
+2313;SEGMENT;So;0;ON;;;;;N;;;;;
+2314;SECTOR;So;0;ON;;;;;N;;;;;
+2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
+2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
+2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
+2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
+2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
+231A;WATCH;So;0;ON;;;;;N;;;;;
+231B;HOURGLASS;So;0;ON;;;;;N;;;;;
+231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
+231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
+231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
+231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
+2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2322;FROWN;So;0;ON;;;;;N;;;;;
+2323;SMILE;So;0;ON;;;;;N;;;;;
+2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
+2325;OPTION KEY;So;0;ON;;;;;N;;;;;
+2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
+2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
+2328;KEYBOARD;So;0;ON;;;;;N;;;;;
+2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
+232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
+232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
+232C;BENZENE RING;So;0;ON;;;;;N;;;;;
+232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
+232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
+232F;SYMMETRY;So;0;ON;;;;;N;;;;;
+2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
+2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
+2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
+2333;SLOPE;So;0;ON;;;;;N;;;;;
+2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
+2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
+2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
+2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
+2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
+2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
+233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
+233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
+233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
+233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
+233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
+233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
+2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
+2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
+2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
+2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
+2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
+2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
+2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
+2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
+2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
+2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
+234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;;;;
+234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
+234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
+234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
+234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;;;;
+234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
+2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
+2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;;;;
+2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
+2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
+2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
+2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;;;;
+2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
+2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
+2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
+2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
+235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
+235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
+235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
+235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
+235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
+235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
+2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
+2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;;;;
+2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
+2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
+2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
+2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
+2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
+2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
+2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
+2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
+236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
+236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
+236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
+236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
+236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
+236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
+2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
+2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
+2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
+2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
+2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
+2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
+2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
+2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
+2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
+2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
+237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
+2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
+2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
+2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
+2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
+2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
+2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
+2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
+2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
+2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
+2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
+240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
+240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
+240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
+240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
+240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
+240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
+2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
+2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
+2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
+2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
+2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
+2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
+2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
+2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
+2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
+2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
+241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
+241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
+241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
+241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
+241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
+241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
+2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
+2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
+2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
+2423;OPEN BOX;So;0;ON;;;;;N;;;;;
+2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
+2440;OCR HOOK;So;0;ON;;;;;N;;;;;
+2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
+2442;OCR FORK;So;0;ON;;;;;N;;;;;
+2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
+2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
+2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
+2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
+2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
+2448;OCR DASH;So;0;ON;;;;;N;;;;;
+2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
+244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
+2460;CIRCLED DIGIT ONE;No;0;ON;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;ON;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;ON;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;ON;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;ON;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;ON;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;ON;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;ON;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;ON;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;ON;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;ON;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;ON;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;ON;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;ON;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;ON;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;ON;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;ON;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;ON;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;ON;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;ON;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;ON;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;ON;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;ON;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;ON;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;ON;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;ON;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;ON;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;ON;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;ON;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;ON;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;ON;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;ON;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+2488;DIGIT ONE FULL STOP;No;0;ON;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;ON;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;ON;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;ON;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;ON;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;ON;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;ON;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;ON;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;ON;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;ON;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;ON;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;ON;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;ON;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;ON;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;ON;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;ON;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;ON;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;ON;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;ON;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;ON;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;ON;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;ON;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;ON;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;ON;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;ON;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;ON;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;ON;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;ON;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;ON;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;ON;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;ON;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;ON;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;ON;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;ON;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;ON;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;ON;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;ON;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;ON;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;ON;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;ON;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;ON;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;ON;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;ON;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;ON;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;ON;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;ON;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;ON;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;ON;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;ON;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;ON;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;ON;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;ON;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;ON;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;ON;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;ON;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;ON;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;ON;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;ON;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;ON;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;ON;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;ON;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;ON;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;ON;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;ON;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;ON;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;ON;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;ON;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;ON;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;ON;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;ON;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;ON;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;ON;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;ON;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;ON;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;ON;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;ON;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;ON;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;ON;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;ON;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;ON;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;ON;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;ON;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;ON;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;ON;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;ON;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;ON;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;ON;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;ON;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;ON;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;ON;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;ON;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;ON;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;ON;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;ON;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;ON;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;ON;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;ON;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;ON;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;ON;<circle> 0030;;0;0;N;;;;;
+2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
+2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
+2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
+2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
+2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
+2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
+2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
+2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
+2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
+2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
+250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
+250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
+250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
+250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
+250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
+250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
+2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
+2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
+2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
+2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
+2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
+2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
+2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
+2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
+2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
+2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
+251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
+251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
+251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
+251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
+251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
+251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
+2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
+2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
+2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
+2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
+2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
+2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
+2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
+2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
+2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
+252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
+252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
+252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
+252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
+252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
+252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
+2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
+2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
+2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
+2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
+2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
+2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
+2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
+2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
+2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
+2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
+253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
+253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
+253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
+253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
+253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
+253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
+2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
+2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
+2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
+2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
+2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
+2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
+2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
+2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
+2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
+254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
+254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
+254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
+254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
+254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
+254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
+2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
+2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
+2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
+2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
+2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
+2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
+2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
+2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
+2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
+2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
+255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
+255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
+255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
+255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
+255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
+255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
+2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
+2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
+2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
+2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
+2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
+2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
+2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
+2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
+2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
+2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
+256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
+256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
+256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
+256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
+256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
+256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
+2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
+2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
+2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
+2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
+2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
+2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
+2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
+2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
+2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
+2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
+257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
+257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
+257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
+257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
+257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
+257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
+2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
+2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
+2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
+258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
+258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
+2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
+2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+2593;DARK SHADE;So;0;ON;;;;;N;;;;;
+2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
+25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
+25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
+25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
+25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
+25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
+25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
+25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
+25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
+25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
+25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
+25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
+25B7;WHITE RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
+25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
+25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
+25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
+25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
+25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
+25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
+25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
+25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
+25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
+25C1;WHITE LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
+25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
+25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
+25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
+25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
+25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
+25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+25C9;FISHEYE;So;0;ON;;;;;N;;;;;
+25CA;LOZENGE;So;0;ON;;;;;N;;;;;
+25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
+25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
+25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
+25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
+25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
+25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
+25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
+25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
+25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+2601;CLOUD;So;0;ON;;;;;N;;;;;
+2602;UMBRELLA;So;0;ON;;;;;N;;;;;
+2603;SNOWMAN;So;0;ON;;;;;N;;;;;
+2604;COMET;So;0;ON;;;;;N;;;;;
+2605;BLACK STAR;So;0;ON;;;;;N;;;;;
+2606;WHITE STAR;So;0;ON;;;;;N;;;;;
+2607;LIGHTNING;So;0;ON;;;;;N;;;;;
+2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
+2609;SUN;So;0;ON;;;;;N;;;;;
+260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
+260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
+260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
+260D;OPPOSITION;So;0;ON;;;;;N;;;;;
+260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
+260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
+2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
+2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
+2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
+2613;SALTIRE;So;0;ON;;;;;N;;;;;
+261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
+261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
+2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
+2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
+2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
+2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
+2624;CADUCEUS;So;0;ON;;;;;N;;;;;
+2625;ANKH;So;0;ON;;;;;N;;;;;
+2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
+2627;CHI RHO;So;0;ON;;;;;N;;;;;
+2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
+2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
+262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
+262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
+262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
+262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
+262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
+262F;YIN YANG;So;0;ON;;;;;N;;;;;
+2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
+2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
+2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
+2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
+2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
+2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
+2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
+2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
+2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
+263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
+263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
+263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263F;MERCURY;So;0;ON;;;;;N;;;;;
+2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
+2641;EARTH;So;0;ON;;;;;N;;;;;
+2642;MALE SIGN;So;0;ON;;;;;N;;;;;
+2643;JUPITER;So;0;ON;;;;;N;;;;;
+2644;SATURN;So;0;ON;;;;;N;;;;;
+2645;URANUS;So;0;ON;;;;;N;;;;;
+2646;NEPTUNE;So;0;ON;;;;;N;;;;;
+2647;PLUTO;So;0;ON;;;;;N;;;;;
+2648;ARIES;So;0;ON;;;;;N;;;;;
+2649;TAURUS;So;0;ON;;;;;N;;;;;
+264A;GEMINI;So;0;ON;;;;;N;;;;;
+264B;CANCER;So;0;ON;;;;;N;;;;;
+264C;LEO;So;0;ON;;;;;N;;;;;
+264D;VIRGO;So;0;ON;;;;;N;;;;;
+264E;LIBRA;So;0;ON;;;;;N;;;;;
+264F;SCORPIUS;So;0;ON;;;;;N;;;;;
+2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
+2651;CAPRICORN;So;0;ON;;;;;N;;;;;
+2652;AQUARIUS;So;0;ON;;;;;N;;;;;
+2653;PISCES;So;0;ON;;;;;N;;;;;
+2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
+2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
+2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
+2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
+2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
+265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
+265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
+265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
+265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
+265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
+2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
+2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
+2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
+2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
+2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
+2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
+2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
+2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
+266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
+266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
+266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
+266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
+266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
+266F;MUSIC SHARP SIGN;So;0;ON;;;;;N;SHARP;;;;
+2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
+2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
+2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
+2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
+2708;AIRPLANE;So;0;ON;;;;;N;;;;;
+2709;ENVELOPE;So;0;ON;;;;;N;;;;;
+270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
+270D;WRITING HAND;So;0;ON;;;;;N;;;;;
+270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+270F;PENCIL;So;0;ON;;;;;N;;;;;
+2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+2711;WHITE NIB;So;0;ON;;;;;N;;;;;
+2712;BLACK NIB;So;0;ON;;;;;N;;;;;
+2713;CHECK MARK;So;0;ON;;;;;N;;;;;
+2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
+2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2717;BALLOT X;So;0;ON;;;;;N;;;;;
+2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
+2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
+271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
+271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
+271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
+271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
+271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
+271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
+2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
+2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
+2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
+272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
+272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
+272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
+2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
+2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
+2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
+273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
+273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
+2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
+2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2747;SPARKLE;So;0;ON;;;;;N;;;;;
+2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
+2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
+2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
+2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
+2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
+2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
+2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
+2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
+2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
+2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
+2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
+277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
+277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
+277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
+277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
+277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
+277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
+2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
+2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
+2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
+2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
+2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
+2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
+2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
+2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
+278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
+278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
+278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
+278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
+278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
+278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
+2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
+2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
+2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
+2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
+2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
+279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
+279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
+279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
+279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
+279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
+279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
+27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
+27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
+27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
+27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
+27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
+27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
+27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
+27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
+27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
+27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
+27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
+27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
+27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
+27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
+27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
+27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
+27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
+27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
+3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
+3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
+3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
+3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
+3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
+3005;IDEOGRAPHIC ITERATION MARK;Lm;0;ON;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Po;0;ON;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;ON;;;;0;N;;;;;
+3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
+3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
+300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
+300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
+300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
+300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
+300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
+300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
+3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
+3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
+3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
+3013;GETA MARK;So;0;ON;;;;;N;;;;;
+3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
+3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
+3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
+3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
+3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
+3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
+301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
+301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
+301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
+301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
+3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
+3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
+3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
+3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
+3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
+3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
+3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
+3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
+3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
+302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;L;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;L;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;L;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;L;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;L;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;L;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;ON;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;ON;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;ON;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;ON;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;ON;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
+303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
+3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
+3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
+3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
+3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
+3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
+304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
+304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
+304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
+304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
+304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
+3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
+3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
+3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
+3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
+3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
+3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
+3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
+3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
+3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
+3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
+305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
+305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
+305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
+305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
+305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
+305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
+3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
+3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
+3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
+3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
+3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
+3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
+3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
+3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
+3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
+306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
+306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
+306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
+306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
+306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
+306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
+3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
+3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
+3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
+3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
+3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
+3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
+3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
+3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
+3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
+3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
+307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
+307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
+307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
+307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
+307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
+307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
+3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
+3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
+3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
+3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
+3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
+3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
+3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
+308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
+308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
+308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
+308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
+308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
+3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
+3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
+3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
+3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
+3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;L;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;L;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Lm;0;L;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Lm;0;L;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
+30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
+30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
+30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
+30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
+30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
+30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
+30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
+30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
+30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
+30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
+30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
+30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
+30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
+30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
+30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
+30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
+30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
+30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
+30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
+30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
+30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
+30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
+30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
+30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
+30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
+30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
+30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
+30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
+30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
+30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
+30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
+30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
+30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
+30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
+30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
+30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
+30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
+30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
+30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
+30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
+30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
+30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
+30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
+30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
+30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
+30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
+30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
+30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
+30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
+30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
+30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
+30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
+30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
+30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
+30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
+30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
+30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
+30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
+30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
+30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
+30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
+30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
+30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
+30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
+30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
+30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
+30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
+30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
+30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
+30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
+30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
+30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
+30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
+30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
+30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
+30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
+30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
+30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
+30FB;KATAKANA MIDDLE DOT;Po;0;L;;;;;N;;;;;
+30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
+30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
+3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
+3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
+3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
+3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
+3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
+310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
+310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
+310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
+310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
+310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
+310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
+3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
+3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
+3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
+3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
+3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
+3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
+3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
+3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
+3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
+3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
+311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
+311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
+311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
+311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
+311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
+311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
+3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
+3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
+3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
+3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
+3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
+3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
+3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
+3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
+3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
+3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
+312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
+312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
+312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;;N;KAERITEN SI;Kaeriten;;;
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
+3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;;N;;;;;
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Unassigned High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Unassigned High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
+F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
+F900;<CJK Compatibility Ideograph, First>;Lo;0;L;;;;;N;;;;;
+FA2D;<CJK Compatibility Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;R;;;;;N;HEBREW POINT VARIKA;;;;
+FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
+FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;R;<font> 002B;;;;N;;;;;
+FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
+FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
+FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;05E9 05BC 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;05E9 05BC 05C2;;;;N;;;;;
+FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
+FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
+FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
+FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
+FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
+FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
+FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
+FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
+FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
+FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
+FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
+FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
+FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
+FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
+FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
+FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
+FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
+FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
+FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
+FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
+FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
+FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
+FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
+FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
+FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
+FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
+FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
+FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
+FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;R;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;R;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;R;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;R;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;R;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;R;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;R;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;R;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;R;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;R;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;R;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;R;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;R;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;R;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;R;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;R;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;R;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;R;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;R;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;R;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;R;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;R;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;R;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;R;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;R;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;R;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;R;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;R;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;R;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;R;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;R;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;R;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;R;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;R;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;R;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;R;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;R;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;R;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;R;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;R;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;R;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;R;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;R;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;R;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;R;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;R;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;R;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;R;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;R;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;R;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;R;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;R;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;R;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;R;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;R;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;R;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;R;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;R;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;R;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;R;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;R;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;R;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;R;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;R;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;R;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;R;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;R;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;R;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;R;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;R;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;R;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;R;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;R;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;R;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;R;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;R;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;R;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;R;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;R;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;R;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;R;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;R;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;R;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;R;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;R;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;R;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;R;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;R;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;R;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;R;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;R;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;R;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;R;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;R;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;R;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;R;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;R;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;R;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;R;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;R;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;R;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;R;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;R;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;R;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;R;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;R;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;R;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;R;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;R;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;R;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;R;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;R;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;R;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;R;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;R;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;R;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;R;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;R;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;R;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;R;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;R;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;R;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;R;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;R;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;R;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;R;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;R;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;R;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;R;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;R;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;R;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;R;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;R;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;R;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;R;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;R;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;R;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;R;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064C;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064D;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064E;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064F;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 0650;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;R;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;R;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;R;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;R;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;R;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;R;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;R;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;R;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;R;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;R;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;R;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;R;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;R;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;R;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;R;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;R;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;R;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;R;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;R;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;R;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;R;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;R;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;R;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;R;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;R;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;R;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;R;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;R;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;R;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;R;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;R;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;R;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;R;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;R;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;R;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;R;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;R;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;R;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;R;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;R;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;R;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;R;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;R;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;R;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;R;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 064E;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 064F;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 0650;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;R;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;R;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;R;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;R;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;R;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;R;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;R;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;R;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;R;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;R;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;R;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;R;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;R;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;R;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;R;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;R;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;R;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;R;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;R;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;R;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;R;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;R;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;R;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;R;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;R;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;R;<isolated> 0627 064B;;;;N;;;;;
+FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
+FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;R;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;R;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;R;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;R;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;R;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;R;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;R;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;R;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;R;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;R;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;R;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;R;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
+FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;R;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;ON;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;ON;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;ON;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;ON;;;;;N;;;;;
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
+FE50;SMALL COMMA;Po;0;ON;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;ON;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;ON;<small> 003A;;;;N;;;;;
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ON;<small> 0023;;;;N;;;;;
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
+FE62;SMALL PLUS SIGN;Sm;0;ON;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ON;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
+FE69;SMALL DOLLAR SIGN;Sc;0;ON;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ON;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;R;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;R;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;R;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;R;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;R;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;R;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;R;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;R;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;R;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;R;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;R;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;R;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;R;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;R;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;R;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;R;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;R;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;R;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;R;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;R;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;R;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;R;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;R;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;R;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;R;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;R;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;R;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;R;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;R;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;R;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;R;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;R;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;R;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;R;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;R;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;R;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;R;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;R;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;R;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;R;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;R;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;R;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;R;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;R;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;R;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;R;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;R;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;R;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;R;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;R;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;R;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;R;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;R;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;R;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;R;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;R;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;R;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;R;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;R;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;R;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;R;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;R;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;R;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;R;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;R;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;R;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;R;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;R;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;R;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;R;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;R;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;R;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;R;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;R;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;R;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;R;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;R;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;R;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;R;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;R;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;R;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;R;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;R;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;R;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;R;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;R;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;R;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;R;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;R;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;R;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;R;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;R;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;R;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;R;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;R;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;R;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;R;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;R;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;R;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;R;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;R;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;R;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;R;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;R;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;R;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;R;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;R;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;R;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;R;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;R;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;R;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;R;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;R;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;R;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;R;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;R;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;R;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;R;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;R;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;R;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;R;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;R;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;ON;;;;;N;BYTE ORDER MARK;;;;
+FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ON;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ON;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ON;<wide> 0025;;;;N;;;;;
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;N;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;N;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ON;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;ON;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ON;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;ON;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ON;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
+FF1A;FULLWIDTH COLON;Po;0;ON;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;N;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;N;;;;;
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;N;FULLWIDTH OPENING SQUARE BRACKET;;;;
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;N;FULLWIDTH CLOSING SQUARE BRACKET;;;;
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;N;FULLWIDTH OPENING CURLY BRACKET;;;;
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;N;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;N;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;N;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;L;<narrow> 30FB;;;;N;;;;;
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 309B;;;;N;;;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309C;;;;N;;;;;
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ON;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ON;<wide> 00A3;;;;N;;;;;
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;;;;
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ON;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ON;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;Sm;0;ON;<narrow> 2502;;;;N;;;;;
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
diff --git a/src/com/ibm/icu/dev/data/unicode/UnicodeData-2.1.5.txt b/src/com/ibm/icu/dev/data/unicode/UnicodeData-2.1.5.txt
new file mode 100755
index 0000000..4e4e629
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/UnicodeData-2.1.5.txt
@@ -0,0 +1,6890 @@
+0000;<control>;Cc;0;ON;;;;;N;NULL;;;;
+0001;<control>;Cc;0;ON;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;ON;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;ON;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;ON;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;ON;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;ON;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;ON;;;;;N;BELL;;;;
+0008;<control>;Cc;0;ON;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;HORIZONTAL TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED;;;;
+000B;<control>;Cc;0;S;;;;;N;VERTICAL TABULATION;;;;
+000C;<control>;Cc;0;B;;;;;N;FORM FEED;;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN;;;;
+000E;<control>;Cc;0;ON;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;ON;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;ON;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;ON;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;ON;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;ON;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;ON;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;ON;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;ON;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;ON;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;B;;;;;N;FILE SEPARATOR;;;;
+001D;<control>;Cc;0;B;;;;;N;GROUP SEPARATOR;;;;
+001E;<control>;Cc;0;B;;;;;N;RECORD SEPARATOR;;;;
+001F;<control>;Cc;0;S;;;;;N;UNIT SEPARATOR;;;;
+0020;SPACE;Zs;0;WS;;;;;N;;;;;
+0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
+0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
+0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
+0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
+0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
+0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
+0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
+002A;ASTERISK;Po;0;ON;;;;;N;;;;;
+002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;;
+0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
+0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
+0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
+0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
+0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
+0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
+0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
+0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
+0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
+0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
+003A;COLON;Po;0;CS;;;;;N;;;;;
+003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
+003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
+0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
+0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
+0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
+0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
+0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
+0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
+0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
+0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
+0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
+0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
+004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
+004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
+004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
+004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
+004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
+004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
+0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
+0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
+0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
+0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
+0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
+0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
+0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
+0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
+0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
+0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
+005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
+005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
+005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
+005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
+005E;CIRCUMFLEX ACCENT;Sk;0;ON;<compat> 0020 0302;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;<compat> 0020 0332;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;<compat> 0020 0300;;;;N;SPACING GRAVE;;;;
+0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
+0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
+0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
+0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
+0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
+0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
+0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
+0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
+0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
+006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
+006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
+006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
+006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
+006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
+006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
+0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
+0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
+0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
+0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
+0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
+0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
+0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
+0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
+0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
+0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
+007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
+007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
+007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
+007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
+007E;TILDE;Sm;0;ON;;;;;N;;;;;
+007F;<control>;Cc;0;ON;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;ON;;;;;N;;;;;
+0081;<control>;Cc;0;ON;;;;;N;;;;;
+0082;<control>;Cc;0;ON;;;;;N;;;;;
+0083;<control>;Cc;0;ON;;;;;N;;;;;
+0084;<control>;Cc;0;ON;;;;;N;;;;;
+0085;<control>;Cc;0;ON;;;;;N;;;;;
+0086;<control>;Cc;0;ON;;;;;N;;;;;
+0087;<control>;Cc;0;ON;;;;;N;;;;;
+0088;<control>;Cc;0;ON;;;;;N;;;;;
+0089;<control>;Cc;0;ON;;;;;N;;;;;
+008A;<control>;Cc;0;ON;;;;;N;;;;;
+008B;<control>;Cc;0;ON;;;;;N;;;;;
+008C;<control>;Cc;0;ON;;;;;N;;;;;
+008D;<control>;Cc;0;ON;;;;;N;;;;;
+008E;<control>;Cc;0;ON;;;;;N;;;;;
+008F;<control>;Cc;0;ON;;;;;N;;;;;
+0090;<control>;Cc;0;ON;;;;;N;;;;;
+0091;<control>;Cc;0;ON;;;;;N;;;;;
+0092;<control>;Cc;0;ON;;;;;N;;;;;
+0093;<control>;Cc;0;ON;;;;;N;;;;;
+0094;<control>;Cc;0;ON;;;;;N;;;;;
+0095;<control>;Cc;0;ON;;;;;N;;;;;
+0096;<control>;Cc;0;ON;;;;;N;;;;;
+0097;<control>;Cc;0;ON;;;;;N;;;;;
+0098;<control>;Cc;0;ON;;;;;N;;;;;
+0099;<control>;Cc;0;ON;;;;;N;;;;;
+009A;<control>;Cc;0;ON;;;;;N;;;;;
+009B;<control>;Cc;0;ON;;;;;N;;;;;
+009C;<control>;Cc;0;ON;;;;;N;;;;;
+009D;<control>;Cc;0;ON;;;;;N;;;;;
+009E;<control>;Cc;0;ON;;;;;N;;;;;
+009F;<control>;Cc;0;ON;;;;;N;;;;;
+00A0;NO-BREAK SPACE;Zs;0;WS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
+00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
+00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
+00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
+00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
+00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
+00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
+00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;N;LEFT POINTING GUILLEMET;;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
+00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
+00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
+00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
+00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;2;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;;;
+00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
+00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;1;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;N;RIGHT POINTING GUILLEMET;;;;
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
+00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
+00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
+00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
+00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
+00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
+00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
+00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;;;00E6;
+00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
+00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
+00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
+00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
+00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
+00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
+00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
+00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
+00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
+00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
+00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
+00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
+00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
+00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
+00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
+00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
+00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
+00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
+00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
+00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
+00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
+00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
+00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
+00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
+00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
+00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
+00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
+00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
+00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
+00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
+00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;;00C6;;00C6
+00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
+00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
+00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
+00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
+00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
+00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
+00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
+00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
+00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
+00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
+00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
+00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
+00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
+00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
+00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
+00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
+00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
+00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
+00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
+00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
+00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
+00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
+00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
+00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
+0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
+0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
+0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
+0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
+0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
+0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
+0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
+0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
+0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
+0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
+010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
+010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
+010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
+010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
+010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
+010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
+0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
+0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
+0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
+0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
+0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
+0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
+0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
+0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
+0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
+0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
+011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
+011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
+011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
+011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
+011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
+011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
+0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
+0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
+0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
+0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
+0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
+0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
+0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
+0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
+0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
+0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
+012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
+012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
+012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
+012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
+012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
+012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
+0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
+0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
+0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
+0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
+0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
+0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
+0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
+0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
+0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
+013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
+013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
+013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
+013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
+013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
+013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
+0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
+0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
+0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
+0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
+0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
+0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
+0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
+0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
+0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
+014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
+014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
+014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
+014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
+0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
+0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
+0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
+0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
+0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
+0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
+0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
+0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
+0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
+0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
+015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
+015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
+015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
+015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
+015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;;;015F;
+015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;;015E;;015E
+0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
+0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
+0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;;;0163;
+0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;;0162;;0162
+0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
+0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
+0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
+0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
+0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
+0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
+016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
+016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
+016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
+016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
+016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
+016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
+0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
+0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
+0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
+0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
+0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
+0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
+0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
+0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
+0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
+0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
+017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
+017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
+017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
+017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
+017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
+017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
+0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;;
+0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
+0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
+0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
+0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
+0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
+0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
+0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
+0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
+0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;;;0256;
+018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
+018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
+018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
+018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
+018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
+018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
+0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
+0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
+0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
+0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
+0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
+0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;;;;
+0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
+0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
+0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
+0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
+019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;;;
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
+019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
+019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;;;
+019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;;;0275;
+01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
+01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
+01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;;01A2;;01A2
+01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
+01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
+01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;;;;
+01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
+01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
+01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
+01AA;LATIN LETTER REVERSED ESH LOOP;Lo;0;L;;;;;N;;;;;
+01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
+01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
+01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
+01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
+01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
+01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
+01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
+01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
+01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
+01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
+01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
+01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
+01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
+01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
+01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
+01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
+01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
+01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
+01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
+01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Lo;0;L;;;;;N;;;;;
+01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
+01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
+01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
+01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
+01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
+01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
+01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
+01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
+01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
+01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
+01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
+01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
+01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
+01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
+01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
+01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
+01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
+01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
+01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
+01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
+01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
+01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
+01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
+01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
+01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
+01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0041 0307 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0061 0307 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
+01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;;01E2;;01E2
+01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
+01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
+01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
+01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
+01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
+01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
+01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
+01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
+01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
+01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
+01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
+01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
+01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
+01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
+01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
+01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
+01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
+01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
+01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;;01FC;;01FC
+01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
+01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
+0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
+0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
+0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
+0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
+0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
+0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
+0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
+0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
+0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
+0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
+020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
+020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
+020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
+020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
+020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
+020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
+0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
+0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
+0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
+0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
+0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
+0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
+0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
+0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;;
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;;
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
+0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
+0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
+0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
+0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
+0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
+0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
+0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
+025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
+025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
+025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
+025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
+025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
+025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
+0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
+0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
+0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
+0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
+0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
+0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
+0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
+0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
+026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
+026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
+026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
+026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
+0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;;
+0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
+0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
+0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
+0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
+0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
+0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
+0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
+0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
+027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
+027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;;
+027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
+027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
+0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;;;;
+0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
+0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
+0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
+0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
+0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
+0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
+0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
+0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
+0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;;
+028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
+028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
+028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;;
+028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
+028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
+028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
+0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
+0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
+0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
+0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
+0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
+0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
+0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
+0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
+029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
+029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
+029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
+029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
+029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
+029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
+02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
+02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
+02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
+02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
+02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
+02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
+02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
+02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
+02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
+02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
+02B9;MODIFIER LETTER PRIME;Sk;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Sk;0;ON;;;;;N;;;;;
+02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
+02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
+02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
+02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;ON;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;ON;;;;;N;;;;;
+02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
+02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
+02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
+02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
+02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;ON;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;ON;;;;;N;NON-SPACING ACUTE;Oxia;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;ON;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;ON;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;ON;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;ON;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;ON;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;ON;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;ON;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;ON;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;ON;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;ON;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;ON;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;ON;;;;;N;NON-SPACING VERTICAL LINE ABOVE;Tonos;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;ON;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;ON;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;ON;0306 0307;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;ON;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;ON;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;ON;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;ON;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;ON;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;ON;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;ON;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;ON;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;ON;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;ON;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;ON;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;ON;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;ON;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;ON;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;ON;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;ON;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;ON;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;ON;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;ON;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;ON;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;ON;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;ON;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;ON;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;ON;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;ON;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;ON;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;ON;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;ON;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;ON;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;ON;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;ON;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;ON;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;ON;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;ON;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;ON;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;ON;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;ON;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;ON;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;ON;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;ON;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;ON;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;ON;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;ON;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;ON;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;ON;0308 030D;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;220;ON;;;;;N;GREEK NON-SPACING IOTA BELOW;;;;
+0360;COMBINING DOUBLE TILDE;Mn;234;ON;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;ON;;;;;N;;;;;
+0374;GREEK NUMERAL SIGN;Po;0;L;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Po;0;L;;;;;N;;Aristeri keraia;;;
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037E;GREEK QUESTION MARK;Po;0;L;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;ON;<compat> 0020 030D;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 030D;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 030D;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;L;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 030D;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 030D;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 030D;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 030D;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 030D;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 030D;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03B9 0344;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
+0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
+0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
+0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
+0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
+0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
+0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
+0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
+0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
+0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
+039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
+039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
+039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
+039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
+039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
+039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
+03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
+03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
+03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
+03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
+03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
+03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
+03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
+03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
+03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
+03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
+03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
+03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 030D;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 030D;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 030D;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 030D;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03C5 0344;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
+03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
+03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
+03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
+03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
+03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
+03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
+03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
+03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
+03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
+03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
+03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
+03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
+03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
+03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
+03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
+03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
+03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
+03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
+03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
+03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
+03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
+03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
+03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
+03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
+03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
+03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 030D;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 030D;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 030D;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03D0;GREEK BETA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 030D;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
+03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
+03D5;GREEK PHI SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;;
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;;
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;;
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;;
+03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
+03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
+03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
+03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
+03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
+03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
+03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
+03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
+03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
+03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
+03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
+03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
+03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
+03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
+03F0;GREEK KAPPA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03A3;;03A3
+03F3;GREEK LETTER YOT;Lo;0;L;;;;;N;;;;;
+0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
+0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
+0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
+0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
+0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
+0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
+0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
+0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
+0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
+040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
+040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
+040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
+040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
+040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
+0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
+0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
+0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
+0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
+0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
+0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
+0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
+0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
+0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
+0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
+041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
+041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
+041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
+041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
+041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
+041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
+0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
+0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
+0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
+0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
+0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
+0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
+0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
+0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
+0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
+0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
+042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
+042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
+042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
+042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
+042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
+042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
+0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
+0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
+0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
+0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
+0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
+0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
+0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
+0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
+0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
+0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
+043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
+043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
+043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
+043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
+043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
+043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
+0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
+0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
+0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
+0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
+0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
+0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
+0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
+0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
+0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
+0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
+044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
+044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
+044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
+044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
+044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
+044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
+0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
+0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
+0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
+0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
+0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
+0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
+0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
+0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
+0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
+045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
+045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
+045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
+045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
+045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
+0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
+0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
+0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
+0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
+0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
+0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
+0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
+0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
+0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
+0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
+046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
+046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
+046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
+046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
+046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
+046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
+0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
+0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
+0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
+0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
+0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
+0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
+0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
+0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
+0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
+0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
+047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
+047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
+047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
+047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
+047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
+047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
+0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
+0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
+0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
+0483;COMBINING CYRILLIC TITLO;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
+0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
+0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
+0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
+0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
+0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
+0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
+0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
+0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
+0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
+049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
+049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
+049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
+049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
+049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
+049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
+04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
+04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
+04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
+04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
+04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
+04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
+04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
+04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
+04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
+04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
+04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
+04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
+04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
+04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
+04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
+04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
+04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
+04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
+04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
+04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
+04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
+04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
+04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
+04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
+04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
+04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
+04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
+04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
+04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
+04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
+04C0;CYRILLIC LETTER PALOCHKA;Lo;0;L;;;;;N;CYRILLIC LETTER I;;;;
+04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
+04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
+04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
+04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
+04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
+04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
+04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
+04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
+04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
+04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
+04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
+04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
+04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
+04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
+04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
+04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
+04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
+04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
+04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
+04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
+04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
+04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
+04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
+04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
+04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
+04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
+04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
+04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
+04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
+04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
+04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
+04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
+04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
+04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
+04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
+04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
+04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
+04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
+0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
+0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
+0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
+0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
+0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
+0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
+0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
+0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
+0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
+053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
+053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
+053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
+053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
+053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
+053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
+0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
+0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
+0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
+0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
+0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
+0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
+0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
+0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
+0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
+0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
+054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
+054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
+054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
+054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
+054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
+054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
+0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
+0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
+0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
+0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
+0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
+0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
+0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
+0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
+055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
+055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
+055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
+055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
+055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
+0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
+0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
+0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
+0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
+0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
+0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
+0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
+0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
+056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
+056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
+056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
+056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
+056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
+056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
+0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
+0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
+0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
+0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
+0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
+0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
+0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
+0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
+0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
+0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
+057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
+057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
+057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
+057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
+057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
+057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
+0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
+0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
+0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
+0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
+0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
+0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
+0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
+0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;ON;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;ON;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;ON;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;ON;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;ON;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;ON;;;;;N;;;;;
+0597;HEBREW ACCENT REVIA;Mn;230;ON;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;ON;;;;;N;;;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;ON;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;ON;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;ON;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;ON;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;ON;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;ON;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;ON;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;ON;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;ON;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;ON;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;ON;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;ON;;;;;N;;;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;ON;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;ON;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;ON;;;;;N;;;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;ON;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;ON;;;;;N;;;;;
+05AB;HEBREW ACCENT OLE;Mn;230;ON;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;ON;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;ON;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;230;ON;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;ON;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;ON;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;ON;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;ON;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;ON;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;ON;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;ON;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;ON;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;ON;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;ON;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;ON;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;ON;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;ON;;;;;N;HEBREW POINT DAGESH;;;;
+05BD;HEBREW POINT METEG;Mn;22;ON;;;;;N;;;;;
+05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;ON;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;ON;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;ON;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;ON;;;;;N;;;;;
+05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
+05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
+05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
+05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
+05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
+05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
+05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
+05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
+05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
+05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
+05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
+05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
+05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
+05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
+05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
+05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
+05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
+05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
+05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
+05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
+05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
+05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
+05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
+05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
+05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
+05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
+05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;R;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;R;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;R;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;R;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;R;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;R;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;R;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;R;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;R;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;R;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;R;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;R;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;R;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;R;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;R;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;R;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;R;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;R;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;R;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;R;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;R;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;R;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;R;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;R;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;R;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;R;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;R;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;R;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;R;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;R;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;ON;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;ON;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;ON;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;ON;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;ON;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;ON;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;ON;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;ON;;;;;N;;;;;
+0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
+066D;ARABIC FIVE POINTED STAR;Po;0;R;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;ON;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;R;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;R;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;R;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;R;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;R;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;R;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;R;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;R;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;R;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;R;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;R;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;R;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;R;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;R;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;R;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;R;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;R;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;R;;;;;N;;;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;R;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;R;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;R;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;R;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;R;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;R;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;R;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;R;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;R;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;R;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;R;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;R;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06D0;ARABIC LETTER E;Lo;0;R;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;R;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;R;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;R;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;ON;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;ON;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;ON;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;ON;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;ON;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;ON;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;ON;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Me;0;ON;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;ON;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;ON;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;ON;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;ON;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;ON;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;ON;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;ON;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;R;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;R;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;ON;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;ON;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;ON;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;ON;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;ON;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;ON;;;;;N;;;;;
+06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
+06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
+06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
+06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
+06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
+06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
+06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
+06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
+06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
+06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;37;ON;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;36;ON;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
+0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
+0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
+0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
+0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
+090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
+090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
+090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
+090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
+0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
+0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
+0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
+0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
+0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
+0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
+0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
+0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
+091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
+091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
+0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
+0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
+0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
+0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
+092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
+092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
+092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
+092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
+0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
+0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
+0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
+0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
+0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
+0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
+0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
+093C;DEVANAGARI SIGN NUKTA;Mn;7;ON;;;;;N;;;;;
+093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0941;DEVANAGARI VOWEL SIGN U;Mn;38;ON;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;39;ON;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;40;ON;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;41;ON;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;42;ON;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;43;ON;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;44;ON;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;45;ON;;;;;N;;;;;
+0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
+094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+094D;DEVANAGARI SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0950;DEVANAGARI OM;So;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;46;ON;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;47;ON;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;ON;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;ON;;;;;N;;;;;
+0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
+0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
+095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
+095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
+095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
+095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
+095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
+095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
+0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;48;ON;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;49;ON;;;;;N;;;;;
+0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
+0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;50;ON;;;;;N;;;;;
+0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
+0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
+0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
+0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
+0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
+098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
+098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
+0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
+0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
+0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
+0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
+0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
+0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
+099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
+099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
+099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
+099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
+099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
+099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
+09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
+09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
+09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
+09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
+09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
+09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
+09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
+09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
+09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
+09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
+09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
+09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
+09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
+09B0;BENGALI LETTER RA;Lo;0;L;09AC 09BC;;;;N;;;;;
+09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
+09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
+09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
+09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
+09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
+09BC;BENGALI SIGN NUKTA;Mn;7;ON;;;;;N;;;;;
+09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+09C1;BENGALI VOWEL SIGN U;Mn;51;ON;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;52;ON;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;53;ON;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;54;ON;;;;;N;;;;;
+09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
+09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
+09CD;BENGALI SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
+09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
+09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
+09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;55;ON;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;56;ON;;;;;N;;;;;
+09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
+09F2;BENGALI RUPEE MARK;Sc;0;L;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;L;;;;;N;;;;;
+09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;-1;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;57;ON;;;;;N;;;;;
+0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
+0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
+0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
+0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
+0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
+0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
+0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
+0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
+0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
+0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
+0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
+0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
+0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
+0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
+0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
+0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
+0A33;GURMUKHI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;ON;;;;;N;;;;;
+0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0A41;GURMUKHI VOWEL SIGN U;Mn;58;ON;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;59;ON;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;60;ON;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;61;ON;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;62;ON;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;63;ON;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
+0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
+0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
+0A5C;GURMUKHI LETTER RRA;Lo;0;L;0A21 0A3C;;;;N;;;;;
+0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
+0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0A70;GURMUKHI TIPPI;Mn;64;ON;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;65;ON;;;;;N;;;;;
+0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
+0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
+0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
+0A81;GUJARATI SIGN CANDRABINDU;Mn;67;ON;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;66;ON;;;;;N;;;;;
+0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
+0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
+0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
+0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
+0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
+0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
+0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
+0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
+0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
+0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
+0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
+0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
+0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
+0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
+0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
+0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
+0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
+0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
+0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
+0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
+0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
+0ABC;GUJARATI SIGN NUKTA;Mn;7;ON;;;;;N;;;;;
+0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0AC1;GUJARATI VOWEL SIGN U;Mn;68;ON;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;69;ON;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;70;ON;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;71;ON;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;72;ON;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;73;ON;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;74;ON;;;;;N;;;;;
+0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+0ACD;GUJARATI SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0AD0;GUJARATI OM;So;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;75;ON;;;;;N;;;;;
+0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
+0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
+0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
+0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
+0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
+0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
+0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
+0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
+0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
+0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
+0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
+0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
+0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
+0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
+0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
+0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
+0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
+0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
+0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
+0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
+0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
+0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
+0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
+0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
+0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
+0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
+0B3C;ORIYA SIGN NUKTA;Mn;7;ON;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;76;ON;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;77;ON;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;78;ON;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;79;ON;;;;;N;;;;;
+0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
+0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
+0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
+0B4D;ORIYA SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;230;ON;;;;;N;;;;;
+0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
+0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
+0B5F;ORIYA LETTER YYA;Lo;0;L;0B2F 0B3C;;;;N;;;;;
+0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;ON;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
+0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
+0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
+0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
+0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
+0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
+0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
+0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
+0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
+0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
+0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
+0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
+0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
+0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
+0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
+0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
+0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
+0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
+0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
+0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
+0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
+0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
+0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
+0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
+0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
+0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
+0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
+0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
+0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
+0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
+0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
+0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0BC0;TAMIL VOWEL SIGN II;Mn;80;ON;;;;;N;;;;;
+0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
+0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
+0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
+0BCD;TAMIL SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
+0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
+0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
+0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
+0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
+0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
+0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
+0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
+0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
+0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
+0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
+0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
+0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
+0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
+0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
+0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
+0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
+0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
+0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
+0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
+0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
+0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
+0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
+0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
+0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
+0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
+0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
+0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
+0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
+0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
+0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
+0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
+0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
+0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
+0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
+0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
+0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
+0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
+0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
+0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
+0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+0C3E;TELUGU VOWEL SIGN AA;Mn;81;ON;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;82;ON;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;83;ON;;;;;N;;;;;
+0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0C46;TELUGU VOWEL SIGN E;Mn;84;ON;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;85;ON;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;86;ON;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;87;ON;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;88;ON;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;89;ON;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;90;ON;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;ON;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
+0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
+0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
+0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
+0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
+0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
+0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
+0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
+0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
+0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
+0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
+0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
+0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
+0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
+0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
+0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
+0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
+0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
+0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
+0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
+0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
+0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
+0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
+0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
+0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
+0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
+0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
+0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
+0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
+0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;92;ON;;;;;N;;;;;
+0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
+0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0CC6;KANNADA VOWEL SIGN E;Mn;93;ON;;;;;N;;;;;
+0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
+0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
+0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
+0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CC6 0CC2 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;94;ON;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
+0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
+0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
+0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
+0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
+0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
+0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
+0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
+0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
+0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
+0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
+0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
+0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
+0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
+0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
+0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
+0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
+0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
+0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
+0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
+0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
+0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
+0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
+0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
+0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
+0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
+0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
+0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
+0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
+0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
+0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
+0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
+0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
+0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
+0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
+0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0D41;MALAYALAM VOWEL SIGN U;Mn;95;ON;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;96;ON;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;97;ON;;;;;N;;;;;
+0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
+0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
+0D4D;MALAYALAM SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
+0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
+0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
+0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
+0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
+0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
+0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
+0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
+0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
+0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
+0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
+0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
+0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
+0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
+0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
+0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
+0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
+0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
+0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
+0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
+0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
+0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
+0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
+0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
+0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
+0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
+0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
+0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
+0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
+0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
+0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
+0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
+0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
+0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
+0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
+0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
+0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
+0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
+0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
+0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
+0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
+0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
+0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
+0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
+0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
+0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
+0E2F;THAI CHARACTER PAIYANNOI;Po;0;L;;;;;N;THAI PAI YAN NOI;;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;98;ON;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
+0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
+0E33;THAI CHARACTER SARA AM;Lo;0;L;0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;99;ON;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;100;ON;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;101;ON;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;102;ON;;;;;N;THAI VOWEL SIGN SARA UEE;;;;
+0E38;THAI CHARACTER SARA U;Mn;103;ON;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;104;ON;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;105;ON;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
+0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
+0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
+0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
+0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;106;ON;;;;;N;THAI VOWEL SIGN MAI TAI KHU;;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;ON;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;108;ON;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;109;ON;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;110;ON;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;111;ON;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;112;ON;;;;;N;THAI NIKKHAHIT;;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;128;ON;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;So;0;L;;;;;N;THAI FONGMAN;;;;
+0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
+0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
+0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
+0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
+0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
+0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
+0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
+0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
+0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
+0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
+0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
+0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
+0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
+0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
+0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
+0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
+0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
+0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
+0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
+0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
+0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
+0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
+0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
+0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
+0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
+0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
+0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
+0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
+0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
+0EAF;LAO ELLIPSIS;Po;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;113;ON;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;114;ON;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;115;ON;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;116;ON;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;117;ON;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;ON;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;119;ON;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;120;ON;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;121;ON;;;;;N;;;;;
+0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
+0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
+0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
+0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
+0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
+0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
+0EC8;LAO TONE MAI EK;Mn;122;ON;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;123;ON;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;124;ON;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;125;ON;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;126;ON;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;127;ON;;;;;N;;;;;
+0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
+0F00;TIBETAN SYLLABLE OM;So;0;L;;;;;N;;;;;
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;;yik go dun ma;;;
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;;drul shey;;;
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;;nyi shey;;;
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;;rinchen pung shey;;;
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
+0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;;ter tsek;;;
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;ON;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;ON;;;;;N;;dong tsu;;;
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
+0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;230;ON;;;;;N;;nge zung nyi da;;;
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;230;ON;;;;;N;;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;ON;;;;;N;;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;L;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;L;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;L;;;;;N;;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;L;;;;;N;;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Ps;0;L;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Pe;0;L;;;;;N;;mar tse;;;
+0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
+0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
+0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
+0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
+0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
+0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
+0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
+0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;;;;;
+0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
+0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
+0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
+0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
+0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
+0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
+0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
+0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
+0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
+0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
+0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
+0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
+0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
+0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
+0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
+0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;;;;;
+0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
+0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;;;;
+0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
+0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;;;;;
+0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
+0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
+0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
+0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;145;ON;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;ON;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;131;ON;0F72 0F71;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;ON;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;133;ON;0F71 0F74;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;134;ON;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;135;ON;0F76 0F71;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;136;ON;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;137;ON;0F78 0F71;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;138;ON;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;139;ON;;;;;N;;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;140;ON;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;141;ON;;;;;N;;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;142;ON;;;;;N;;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;143;ON;;;;;N;;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;144;ON;0F80 0F71;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;ON;;;;;N;;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;ON;;;;;N;;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;ON;;;;;N;;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;ON;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;ON;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;So;0;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;So;0;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;So;0;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;So;0;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;6;ON;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;6;ON;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;6;ON;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;6;ON;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;6;ON;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;6;ON;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;6;ON;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;6;ON;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;6;ON;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;6;ON;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;6;ON;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;6;ON;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;6;ON;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;6;ON;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;6;ON;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;6;ON;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;6;ON;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;6;ON;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;6;ON;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;6;ON;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;6;ON;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;6;ON;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;6;ON;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;6;ON;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;6;ON;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;6;ON;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;6;ON;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;6;ON;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;6;ON;;;;;N;;;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;6;ON;;;;;N;;;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;6;ON;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;6;ON;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;6;ON;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;6;ON;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;6;ON;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;6;ON;0F90 0FB5;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;10D0;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;10D1;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;10D2;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;10D3;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;10D4;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;10D5;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;10D6;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;10D7;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;10D8;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;10D9;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;10DA;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;10DB;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;10DC;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;10DD;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;10DE;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;10DF;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;10E0;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;10E1;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;10E2;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;10E3;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;10E4;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;10E5;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;10E6;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;10E7;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;10E8;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;10E9;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;10EA;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;10EB;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;10EC;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;10ED;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;10EE;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;10EF;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;10F0;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;10F1;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;10F2;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;10F3;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;10F4;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;10F5;
+10D0;GEORGIAN LETTER AN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;<compat> 1100 1100;;;;N;;;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;<compat> 1103 1103;;;;N;;;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;<compat> 1107 1107;;;;N;;;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;<compat> 1109 1109;;;;N;;;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;<compat> 110C 110C;;;;N;;;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;<compat> 1102 1100;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;<compat> 1102 1102;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;<compat> 1102 1103;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;<compat> 1102 1107;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;<compat> 1103 1100;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;<compat> 1105 1102;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;<compat> 1105 1105;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;<compat> 1105 1112;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;<compat> 1105 110B;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;<compat> 1106 1107;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;<compat> 1106 110B;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;<compat> 1107 1100;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;<compat> 1107 1102;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;<compat> 1107 1103;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;<compat> 1107 1109;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1107 1109 1100;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1107 1109 1103;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;<compat> 1107 1109 1107;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;<compat> 1107 1109 1109;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;<compat> 1107 1109 110C;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;<compat> 1107 110C;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;<compat> 1107 110E;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;<compat> 1107 1110;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;<compat> 1107 1111;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;<compat> 1107 110B;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 1107 1107 110B;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;<compat> 1109 1100;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;<compat> 1109 1102;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;<compat> 1109 1103;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;<compat> 1109 1105;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;<compat> 1109 1106;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;<compat> 1109 1107;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;<compat> 1109 1107 1100;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;<compat> 1109 1109 1109;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;<compat> 1109 110B;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;<compat> 1109 110C;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;<compat> 1109 110E;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;<compat> 1109 110F;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;<compat> 1109 1110;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;<compat> 1109 1111;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;<compat> 1109 1112;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;<compat> 113C 113C;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;<compat> 113E 113E;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;<compat> 110B 1100;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;<compat> 110B 1103;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;<compat> 110B 1106;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;<compat> 110B 1107;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;<compat> 110B 1109;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;<compat> 110B 1140;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;<compat> 110B 110B;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;<compat> 110B 110C;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;<compat> 110B 110E;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;<compat> 110B 1110;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;<compat> 110B 1111;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;<compat> 110C 110B;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;<compat> 114E 114E;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;<compat> 1150 1150;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;<compat> 110E 110F;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;<compat> 110E 1112;;;;N;;;;;
+1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;<compat> 1111 1107;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1111 110B;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;<compat> 1112 1112;;;;N;;;;;
+1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
+1162;HANGUL JUNGSEONG AE;Lo;0;L;<compat> 1161 1175;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;<compat> 1163 1175;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;<compat> 1165 1175;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;<compat> 1167 1175;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;<compat> 1169 1161;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;<compat> 1169 1161 1175;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;<compat> 1169 1175;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;<compat> 116E 1165;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;<compat> 116E 1165 1175;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;<compat> 116E 1175;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;<compat> 1173 1175;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;<compat> 1161 1169;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;<compat> 1161 116E;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;<compat> 1163 1169;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;<compat> 1163 116D;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;<compat> 1165 1169;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;<compat> 1165 116E;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;<compat> 1165 1173;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;<compat> 1167 1169;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;<compat> 1167 116E;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;<compat> 1169 1165;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;<compat> 1169 1166;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;<compat> 1169 1168;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;<compat> 1169 1169;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;<compat> 1169 116E;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;<compat> 116D 1163;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;<compat> 116D 1164;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;<compat> 116D 1167;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;<compat> 116D 1169;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;<compat> 116D 1175;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;<compat> 116E 1161;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;<compat> 116E 1162;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;<compat> 116E 1165 1173;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;<compat> 116E 1168;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;<compat> 116E 116E;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;<compat> 1172 1161;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;<compat> 1172 1165;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;<compat> 1172 1166;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;<compat> 1172 1167;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;<compat> 1172 1168;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;<compat> 1172 116E;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;<compat> 1172 1175;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;<compat> 1173 116E;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;<compat> 1173 1173;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;<compat> 1174 116E;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;<compat> 1175 1161;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;<compat> 1175 1163;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;<compat> 1175 1169;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;<compat> 1175 116E;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;<compat> 1175 1173;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;<compat> 1175 119E;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;<compat> 119E 1165;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;<compat> 119E 116E;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;<compat> 119E 1175;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;<compat> 119E 119E;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;<compat> 11A8 11A8;;;;N;;;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;<compat> 11A8 11BA;;;;N;;;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;<compat> 11AB 11BD;;;;N;;;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;<compat> 11AB 11C2;;;;N;;;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;<compat> 11AF 11A8;;;;N;;;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;<compat> 11AF 11B7;;;;N;;;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;<compat> 11AF 11B8;;;;N;;;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;<compat> 11AF 11BA;;;;N;;;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;<compat> 11AF 11C0;;;;N;;;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;<compat> 11AF 11C1;;;;N;;;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;<compat> 11AF 11C2;;;;N;;;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;<compat> 11B8 11BA;;;;N;;;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;<compat> 11BA 11BA;;;;N;;;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;<compat> 11A8 11AF;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;<compat> 11A8 11BA 11A8;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;<compat> 11AB 11A8;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;<compat> 11AB 11AE;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;<compat> 11AB 11BA;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;<compat> 11AB 11EB;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;<compat> 11AB 11C0;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;<compat> 11AE 11A8;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;<compat> 11AE 11AF;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11AF 11A8 11BA;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;<compat> 11AF 11AB;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;<compat> 11AF 11AE;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;<compat> 11AF 11AE 11C2;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;<compat> 11AF 11AF;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;<compat> 11AF 11B7 11A8;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;<compat> 11AF 11B7 11BA;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11AF 11B8 11BA;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;<compat> 11AF 11B8 11C2;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;<compat> 11AF 11B8 11BC;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;<compat> 11AF 11BA 11BA;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;<compat> 11AF 11EB;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;<compat> 11AF 11BF;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11AF 11F9;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;<compat> 11B7 11A8;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;<compat> 11B7 11AF;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;<compat> 11B7 11B8;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;<compat> 11B7 11BA;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;<compat> 11B7 11BA 11BA;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;<compat> 11B7 11EB;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;<compat> 11B7 11BE;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;<compat> 11B7 11C2;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;<compat> 11B7 11BC;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;<compat> 11B8 11AF;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;<compat> 11B8 11C1;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;<compat> 11B8 11C2;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;<compat> 11B8 11BC;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;<compat> 11BA 11A8;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;<compat> 11BA 11AE;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;<compat> 11BA 11AF;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;<compat> 11BA 11B8;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;<compat> 11BC 11A8;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;<compat> 11BC 11A8 11A8;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;<compat> 11BC 11BC;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;<compat> 11BC 11BF;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;<compat> 11F0 11BA;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F0 11EB;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;<compat> 11C1 11B8;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;<compat> 11C1 11BC;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;<compat> 11C2 11AB;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;<compat> 11C2 11AF;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;<compat> 11C2 11B7;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;<compat> 11C2 11B8;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
+1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
+1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
+1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
+1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
+1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
+1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
+1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
+1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
+1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
+1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
+1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
+1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
+1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
+1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
+1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
+1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
+1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
+1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
+1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
+1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
+1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
+1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
+1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
+1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
+1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
+1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
+1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
+1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0114 0327;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0115 0327;;;;N;;;1E1C;;1E1C
+1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
+1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
+1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
+1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
+1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
+1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
+1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
+1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
+1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
+1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
+1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
+1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
+1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
+1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
+1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
+1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
+1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
+1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
+1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
+1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
+1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
+1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
+1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
+1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
+1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
+1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
+1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
+1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
+1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
+1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
+1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
+1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
+1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
+1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
+1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
+1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
+1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
+1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
+1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
+1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
+1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
+1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
+1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
+1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
+1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
+1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
+1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
+1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
+1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
+1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
+1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
+1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
+1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
+1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
+1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
+1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
+1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
+1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
+1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
+1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
+1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
+1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
+1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
+1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
+1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
+1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
+1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
+1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
+1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
+1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
+1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
+1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
+1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
+1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
+1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
+1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
+1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
+1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
+1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
+1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
+1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
+1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
+1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
+1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
+1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
+1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
+1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
+1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
+1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
+1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
+1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
+1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
+1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
+1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
+1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
+1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
+1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
+1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
+1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
+1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
+1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
+1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
+1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
+1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
+1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
+1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
+1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
+1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
+1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
+1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
+1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
+1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
+1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
+1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
+1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
+1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
+1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
+1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
+1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
+1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
+1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
+1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
+1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
+1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
+1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;;;;;N;;;;;
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
+1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
+1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
+1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
+1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
+1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
+1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
+1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
+1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
+1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
+1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
+1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
+1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
+1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;00C2 0323;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00E2 0323;;;;N;;;1EAC;;1EAC
+1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
+1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
+1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
+1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
+1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
+1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
+1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
+1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
+1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;0102 0323;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;0103 0323;;;;N;;;1EB6;;1EB6
+1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
+1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
+1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
+1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
+1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
+1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
+1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
+1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
+1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
+1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
+1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
+1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
+1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
+1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
+1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;00CA 0323;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00EA 0323;;;;N;;;1EC6;;1EC6
+1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
+1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
+1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
+1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
+1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
+1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
+1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
+1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
+1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
+1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
+1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
+1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
+1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
+1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
+1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
+1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
+1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;00D4 0323;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00F4 0323;;;;N;;;1ED8;;1ED8
+1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
+1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
+1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
+1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
+1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
+1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
+1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
+1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
+1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
+1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
+1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
+1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
+1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
+1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
+1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
+1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
+1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
+1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
+1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
+1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
+1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
+1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
+1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
+1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
+1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
+1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
+1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
+1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
+1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
+1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
+1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
+1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
+1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
+1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
+1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
+1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
+1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
+1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
+1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
+1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
+1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
+1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
+1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
+1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
+1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
+1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
+1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
+1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
+1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
+1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
+1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
+1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
+1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
+1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
+1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
+1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
+1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
+1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
+1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
+1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
+1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
+1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
+1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
+1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
+1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
+1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
+1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
+1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
+1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
+1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
+1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
+1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
+1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
+1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
+1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
+1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
+1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
+1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
+1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
+1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
+1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
+1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
+1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
+1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
+1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
+1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
+1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
+1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
+1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
+1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
+1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
+1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
+1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
+1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
+1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
+1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
+1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
+1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
+1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
+1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
+1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
+1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
+1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
+1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
+1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
+1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
+1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
+1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
+1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
+1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
+1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
+1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
+1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
+1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
+1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
+1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
+1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
+1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
+1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
+1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
+1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
+1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
+1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
+1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
+1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
+1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
+1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
+1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
+1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
+1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
+1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
+1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
+1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
+1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03B1 0301;;;;N;;;1FBB;;1FBB
+1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
+1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03B5 0301;;;;N;;;1FC9;;1FC9
+1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
+1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03B7 0301;;;;N;;;1FCB;;1FCB
+1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
+1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03B9 0301;;;;N;;;1FDB;;1FDB
+1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
+1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03BF 0301;;;;N;;;1FF9;;1FF9
+1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
+1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03C5 0301;;;;N;;;1FEB;;1FEB
+1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
+1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03C9 0301;;;;N;;;1FFB;;1FFB
+1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
+1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
+1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
+1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
+1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
+1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
+1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
+1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
+1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lu;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F0F 0345;;;;N;;;;1F87;
+1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
+1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
+1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
+1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
+1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
+1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
+1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
+1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
+1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lu;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F2F 0345;;;;N;;;;1F97;
+1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
+1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
+1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
+1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
+1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
+1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
+1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
+1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
+1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lu;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F6F 0345;;;;N;;;;1FA7;
+1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
+1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
+1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
+1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
+1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;1F71 0345;;;;N;;;;;
+1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
+1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
+1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
+1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
+1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
+1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0391 0301;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lu;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Lu;0;L;03B9;;;;N;;;;;
+1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
+1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
+1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
+1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;1F75 0345;;;;N;;;;;
+1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
+1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
+1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
+1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0395 0301;;;;N;;;;1F73;
+1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
+1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0397 0301;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lu;0;L;0397 0345;;;;N;;;;1FC3;
+1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
+1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
+1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
+1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
+1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
+1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;03CA 0301;;;;N;;;;;
+1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
+1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
+1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
+1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
+1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
+1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;0399 0301;;;;N;;;;1F77;
+1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
+1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
+1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
+1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
+1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
+1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03CB 0301;;;;N;;;;;
+1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
+1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
+1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
+1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
+1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
+1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
+1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
+1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;03A5 0301;;;;N;;;;1F7B;
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;00A8 0301;;;;N;;;;;
+1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
+1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
+1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
+1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;1F79 0345;;;;N;;;;;
+1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
+1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
+1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
+1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;039F 0301;;;;N;;;;1F79;
+1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
+1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;03A9 0301;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lu;0;L;03A9 0345;;;;N;;;;1FF3;
+1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
+1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
+2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
+2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
+2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2007;FIGURE SPACE;Zs;0;CS;<noBreak> 0020;;;;N;;;;;
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200B;ZERO WIDTH SPACE;Zs;0;WS;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;ON;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;ON;;;;;N;;;;;
+200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
+2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
+2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
+2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
+2013;EN DASH;Pd;0;ON;;;;;N;;;;;
+2014;EM DASH;Pd;0;ON;;;;;N;;;;;
+2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
+2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
+2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
+2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
+2020;DAGGER;Po;0;ON;;;;;N;;;;;
+2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
+2022;BULLET;Po;0;ON;;;;;N;;;;;
+2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
+2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
+2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
+2028;LINE SEPARATOR;Zl;0;B;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;L;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;R;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;ON;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;L;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;R;;;;;N;;;;;
+2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+2032;PRIME;Po;0;ET;;;;;N;;;;;
+2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
+2038;CARET;Po;0;ON;;;;;N;;;;;
+2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;N;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;N;RIGHT POINTING SINGLE GUILLEMET;;;;
+203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
+203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
+203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
+2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
+2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
+2042;ASTERISM;Po;0;ON;;;;;N;;;;;
+2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
+2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;ON;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;ON;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;ON;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;ON;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;ON;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;ON;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;0;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
+20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
+20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
+20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
+20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
+20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
+20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
+20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
+20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
+20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
+20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;ON;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;ON;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;ON;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;ON;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;ON;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;ON;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;ON;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;ON;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;ON;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;ON;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;ON;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;1;ON;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+2100;ACCOUNT OF;So;0;ON;;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
+2105;CARE OF;So;0;ON;;;;;N;;;;;
+2106;CADA UNA;So;0;ON;;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
+2108;SCRUPLE;So;0;ON;;;;;N;;;;;
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
+210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
+2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
+2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
+2118;SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;SCRIPT P;;;;
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
+211F;RESPONSE;So;0;ON;;;;;N;;;;;
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
+2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
+2123;VERSICLE;So;0;ON;;;;;N;;;;;
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
+2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;;
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
+2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
+212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;;
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;;
+212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;Ll;0;L;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;;
+2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
+2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
+2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
+2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
+2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
+2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
+2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
+2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
+2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
+2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
+2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
+2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
+2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
+219A;LEFTWARDS ARROW WITH STROKE;So;0;ON;;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;So;0;ON;;;;;N;RIGHT ARROW WITH STROKE;;;;
+219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
+219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
+219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
+219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
+21A0;RIGHTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
+21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
+21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
+21A3;RIGHTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
+21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
+21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
+21A6;RIGHTWARDS ARROW FROM BAR;So;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
+21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
+21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
+21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
+21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
+21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
+21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
+21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
+21AE;LEFT RIGHT ARROW WITH STROKE;So;0;ON;;;;;N;;;;;
+21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
+21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
+21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
+21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
+21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
+21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
+21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
+21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
+21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
+21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
+21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
+21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
+21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
+21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
+21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
+21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
+21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
+21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
+21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
+21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
+21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
+21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
+21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
+21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
+21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
+21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
+21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;So;0;ON;;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
+21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
+21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
+21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
+21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
+21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
+21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
+21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
+21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
+21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
+21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
+21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
+21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
+21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
+21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
+21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
+21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
+21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
+21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
+21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
+21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
+21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
+21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
+21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
+21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
+21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
+2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
+2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
+2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
+2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
+2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
+2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
+2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
+2207;NABLA;Sm;0;ON;;;;;N;;;;;
+2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
+220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
+220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
+220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
+2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
+2212;MINUS SIGN;Sm;0;ET;;;;;N;;;;;
+2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
+2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
+2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
+221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
+221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
+221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
+221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
+221E;INFINITY;Sm;0;ON;;;;;N;;;;;
+221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
+2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
+2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
+2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
+2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
+2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
+2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
+222A;UNION;Sm;0;ON;;;;;N;;;;;
+222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
+2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
+2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
+2236;RATIO;Sm;0;ON;;;;;N;;;;;
+2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
+2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
+2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
+223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
+223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
+223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;;;;
+223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
+223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
+2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2241;NOT TILDE;Sm;0;ON;007E 0338;;;;Y;;;;;
+2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
+2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
+2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
+2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
+224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
+224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
+2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
+2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
+2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
+2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
+2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
+225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
+225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
+225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
+225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
+225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
+225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
+2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
+2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
+2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
+2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
+2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
+2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
+2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
+2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
+226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
+226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
+226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
+226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
+2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
+2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
+2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
+2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
+2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
+2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
+2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
+2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
+2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
+2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
+227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
+227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
+2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
+2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
+2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
+2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
+2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
+2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
+2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
+228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
+228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
+228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
+228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
+228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
+228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
+2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
+2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
+2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
+2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
+229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
+229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
+229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
+22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
+22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
+22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
+22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
+22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
+22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
+22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
+22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
+22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
+22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
+22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
+22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
+22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
+22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
+22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
+22BB;XOR;Sm;0;ON;;;;;N;;;;;
+22BC;NAND;Sm;0;ON;;;;;N;;;;;
+22BD;NOR;Sm;0;ON;;;;;N;;;;;
+22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
+22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
+22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
+22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
+22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
+22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
+22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
+22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
+22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
+22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
+22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
+22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
+22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
+22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
+22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
+22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
+22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
+22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
+22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
+22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
+22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
+22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
+22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
+22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
+22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
+22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
+22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
+22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
+2302;HOUSE;So;0;ON;;;;;N;;;;;
+2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
+2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
+2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
+2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
+2307;WAVY LINE;So;0;ON;;;;;N;;;;;
+2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
+2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
+230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
+230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
+230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
+230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
+2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
+2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
+2312;ARC;So;0;ON;;;;;N;;;;;
+2313;SEGMENT;So;0;ON;;;;;N;;;;;
+2314;SECTOR;So;0;ON;;;;;N;;;;;
+2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
+2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
+2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
+2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
+2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
+231A;WATCH;So;0;ON;;;;;N;;;;;
+231B;HOURGLASS;So;0;ON;;;;;N;;;;;
+231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
+231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
+231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
+231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
+2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2322;FROWN;So;0;ON;;;;;N;;;;;
+2323;SMILE;So;0;ON;;;;;N;;;;;
+2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
+2325;OPTION KEY;So;0;ON;;;;;N;;;;;
+2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
+2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
+2328;KEYBOARD;So;0;ON;;;;;N;;;;;
+2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
+232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
+232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
+232C;BENZENE RING;So;0;ON;;;;;N;;;;;
+232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
+232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
+232F;SYMMETRY;So;0;ON;;;;;N;;;;;
+2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
+2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
+2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
+2333;SLOPE;So;0;ON;;;;;N;;;;;
+2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
+2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
+2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
+2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
+2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
+2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
+233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
+233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
+233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
+233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
+233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
+233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
+2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
+2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
+2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
+2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
+2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
+2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
+2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
+2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
+2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
+2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
+234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;;;;
+234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
+234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
+234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
+234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;;;;
+234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
+2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
+2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;;;;
+2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
+2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
+2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
+2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;;;;
+2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
+2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
+2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
+2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
+235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
+235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
+235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
+235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
+235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
+235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
+2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
+2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;;;;
+2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
+2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
+2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
+2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
+2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
+2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
+2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
+2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
+236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
+236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
+236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
+236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
+236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
+236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
+2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
+2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
+2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
+2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
+2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
+2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
+2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
+2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
+2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
+2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
+237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
+2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
+2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
+2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
+2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
+2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
+2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
+2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
+2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
+2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
+2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
+240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
+240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
+240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
+240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
+240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
+240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
+2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
+2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
+2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
+2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
+2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
+2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
+2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
+2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
+2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
+2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
+241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
+241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
+241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
+241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
+241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
+241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
+2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
+2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
+2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
+2423;OPEN BOX;So;0;ON;;;;;N;;;;;
+2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
+2440;OCR HOOK;So;0;ON;;;;;N;;;;;
+2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
+2442;OCR FORK;So;0;ON;;;;;N;;;;;
+2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
+2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
+2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
+2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
+2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
+2448;OCR DASH;So;0;ON;;;;;N;;;;;
+2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
+244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
+2460;CIRCLED DIGIT ONE;No;0;EN;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;EN;<circle> 0030;;0;0;N;;;;;
+2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
+2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
+2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
+2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
+2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
+2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
+2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
+2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
+2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
+2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
+250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
+250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
+250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
+250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
+250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
+250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
+2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
+2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
+2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
+2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
+2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
+2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
+2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
+2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
+2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
+2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
+251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
+251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
+251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
+251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
+251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
+251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
+2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
+2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
+2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
+2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
+2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
+2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
+2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
+2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
+2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
+252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
+252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
+252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
+252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
+252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
+252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
+2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
+2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
+2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
+2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
+2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
+2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
+2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
+2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
+2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
+2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
+253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
+253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
+253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
+253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
+253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
+253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
+2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
+2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
+2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
+2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
+2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
+2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
+2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
+2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
+2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
+254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
+254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
+254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
+254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
+254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
+254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
+2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
+2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
+2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
+2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
+2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
+2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
+2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
+2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
+2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
+2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
+255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
+255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
+255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
+255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
+255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
+255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
+2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
+2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
+2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
+2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
+2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
+2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
+2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
+2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
+2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
+2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
+256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
+256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
+256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
+256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
+256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
+256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
+2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
+2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
+2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
+2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
+2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
+2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
+2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
+2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
+2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
+2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
+257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
+257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
+257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
+257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
+257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
+257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
+2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
+2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
+2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
+258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
+258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
+2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
+2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+2593;DARK SHADE;So;0;ON;;;;;N;;;;;
+2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
+25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
+25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
+25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
+25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
+25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
+25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
+25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
+25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
+25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
+25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
+25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
+25B7;WHITE RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
+25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
+25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
+25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
+25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
+25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
+25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
+25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
+25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
+25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
+25C1;WHITE LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
+25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
+25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
+25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
+25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
+25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
+25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+25C9;FISHEYE;So;0;ON;;;;;N;;;;;
+25CA;LOZENGE;So;0;ON;;;;;N;;;;;
+25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
+25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
+25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
+25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
+25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
+25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
+25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
+25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
+25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+2601;CLOUD;So;0;ON;;;;;N;;;;;
+2602;UMBRELLA;So;0;ON;;;;;N;;;;;
+2603;SNOWMAN;So;0;ON;;;;;N;;;;;
+2604;COMET;So;0;ON;;;;;N;;;;;
+2605;BLACK STAR;So;0;ON;;;;;N;;;;;
+2606;WHITE STAR;So;0;ON;;;;;N;;;;;
+2607;LIGHTNING;So;0;ON;;;;;N;;;;;
+2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
+2609;SUN;So;0;ON;;;;;N;;;;;
+260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
+260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
+260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
+260D;OPPOSITION;So;0;ON;;;;;N;;;;;
+260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
+260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
+2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
+2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
+2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
+2613;SALTIRE;So;0;ON;;;;;N;;;;;
+261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
+261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
+2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
+2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
+2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
+2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
+2624;CADUCEUS;So;0;ON;;;;;N;;;;;
+2625;ANKH;So;0;ON;;;;;N;;;;;
+2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
+2627;CHI RHO;So;0;ON;;;;;N;;;;;
+2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
+2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
+262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
+262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
+262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
+262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
+262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
+262F;YIN YANG;So;0;ON;;;;;N;;;;;
+2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
+2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
+2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
+2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
+2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
+2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
+2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
+2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
+2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
+263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
+263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
+263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263F;MERCURY;So;0;ON;;;;;N;;;;;
+2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
+2641;EARTH;So;0;ON;;;;;N;;;;;
+2642;MALE SIGN;So;0;ON;;;;;N;;;;;
+2643;JUPITER;So;0;ON;;;;;N;;;;;
+2644;SATURN;So;0;ON;;;;;N;;;;;
+2645;URANUS;So;0;ON;;;;;N;;;;;
+2646;NEPTUNE;So;0;ON;;;;;N;;;;;
+2647;PLUTO;So;0;ON;;;;;N;;;;;
+2648;ARIES;So;0;ON;;;;;N;;;;;
+2649;TAURUS;So;0;ON;;;;;N;;;;;
+264A;GEMINI;So;0;ON;;;;;N;;;;;
+264B;CANCER;So;0;ON;;;;;N;;;;;
+264C;LEO;So;0;ON;;;;;N;;;;;
+264D;VIRGO;So;0;ON;;;;;N;;;;;
+264E;LIBRA;So;0;ON;;;;;N;;;;;
+264F;SCORPIUS;So;0;ON;;;;;N;;;;;
+2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
+2651;CAPRICORN;So;0;ON;;;;;N;;;;;
+2652;AQUARIUS;So;0;ON;;;;;N;;;;;
+2653;PISCES;So;0;ON;;;;;N;;;;;
+2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
+2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
+2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
+2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
+2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
+265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
+265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
+265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
+265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
+265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
+2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
+2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
+2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
+2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
+2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
+2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
+2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
+2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
+266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
+266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
+266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
+266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
+266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
+266F;MUSIC SHARP SIGN;So;0;ON;;;;;N;SHARP;;;;
+2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
+2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
+2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
+2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
+2708;AIRPLANE;So;0;ON;;;;;N;;;;;
+2709;ENVELOPE;So;0;ON;;;;;N;;;;;
+270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
+270D;WRITING HAND;So;0;ON;;;;;N;;;;;
+270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+270F;PENCIL;So;0;ON;;;;;N;;;;;
+2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+2711;WHITE NIB;So;0;ON;;;;;N;;;;;
+2712;BLACK NIB;So;0;ON;;;;;N;;;;;
+2713;CHECK MARK;So;0;ON;;;;;N;;;;;
+2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
+2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2717;BALLOT X;So;0;ON;;;;;N;;;;;
+2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
+2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
+271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
+271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
+271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
+271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
+271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
+271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
+2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
+2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
+2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
+272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
+272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
+272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
+2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
+2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
+2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
+273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
+273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
+2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
+2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2747;SPARKLE;So;0;ON;;;;;N;;;;;
+2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
+2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
+2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
+2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
+2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
+2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
+2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
+2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
+2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
+2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
+2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
+277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
+277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
+277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
+277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
+277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
+277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
+2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
+2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
+2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
+2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
+2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
+2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
+2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
+2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
+278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
+278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
+278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
+278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
+278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
+278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
+2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
+2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
+2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
+2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
+2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
+279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
+279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
+279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
+279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
+279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
+279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
+27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
+27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
+27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
+27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
+27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
+27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
+27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
+27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
+27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
+27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
+27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
+27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
+27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
+27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
+27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
+27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
+27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
+27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
+3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
+3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
+3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
+3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
+3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
+3005;IDEOGRAPHIC ITERATION MARK;Lm;0;ON;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Po;0;ON;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;ON;;;;0;N;;;;;
+3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
+3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
+300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
+300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
+300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
+300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
+300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
+300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
+3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
+3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
+3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
+3013;GETA MARK;So;0;ON;;;;;N;;;;;
+3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
+3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
+3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
+3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
+3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
+3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
+301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
+301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
+301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
+301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
+3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
+3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
+3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
+3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
+3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
+3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
+3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
+3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
+3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
+302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;ON;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;ON;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;ON;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;ON;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;ON;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;ON;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;ON;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;ON;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;ON;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;ON;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;ON;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
+303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
+3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
+3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
+3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
+3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
+3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
+304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
+304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
+304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
+304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
+304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
+3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
+3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
+3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
+3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
+3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
+3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
+3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
+3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
+3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
+3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
+305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
+305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
+305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
+305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
+305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
+305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
+3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
+3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
+3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
+3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
+3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
+3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
+3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
+3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
+3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
+306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
+306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
+306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
+306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
+306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
+306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
+3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
+3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
+3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
+3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
+3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
+3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
+3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
+3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
+3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
+3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
+307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
+307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
+307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
+307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
+307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
+307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
+3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
+3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
+3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
+3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
+3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
+3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
+3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
+308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
+308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
+308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
+308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
+308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
+3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
+3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
+3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
+3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
+3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;ON;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;ON;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Lm;0;L;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Lm;0;L;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
+30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
+30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
+30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
+30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
+30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
+30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
+30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
+30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
+30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
+30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
+30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
+30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
+30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
+30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
+30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
+30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
+30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
+30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
+30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
+30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
+30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
+30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
+30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
+30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
+30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
+30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
+30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
+30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
+30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
+30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
+30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
+30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
+30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
+30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
+30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
+30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
+30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
+30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
+30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
+30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
+30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
+30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
+30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
+30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
+30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
+30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
+30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
+30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
+30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
+30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
+30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
+30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
+30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
+30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
+30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
+30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
+30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
+30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
+30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
+30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
+30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
+30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
+30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
+30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
+30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
+30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
+30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
+30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
+30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
+30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
+30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
+30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
+30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
+30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
+30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
+30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
+30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
+30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
+30FB;KATAKANA MIDDLE DOT;Po;0;L;;;;;N;;;;;
+30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
+30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
+3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
+3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
+3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
+3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
+3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
+310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
+310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
+310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
+310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
+310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
+310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
+3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
+3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
+3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
+3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
+3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
+3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
+3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
+3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
+3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
+3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
+311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
+311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
+311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
+311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
+311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
+311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
+3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
+3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
+3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
+3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
+3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
+3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
+3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
+3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
+3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
+3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
+312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
+312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
+312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;;N;KAERITEN SI;Kaeriten;;;
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
+3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;;N;;;;;
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Unassigned High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Unassigned High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
+F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
+F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
+F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
+F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
+F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
+F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
+F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
+F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
+F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
+F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
+F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
+F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
+F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
+F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
+F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
+F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
+F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
+F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
+F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
+F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
+F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
+F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
+F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
+F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
+F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
+F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
+F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
+F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
+F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
+F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
+F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
+F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
+F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
+F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
+F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
+F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
+F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
+F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
+F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
+F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
+F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
+F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
+F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
+F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
+F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
+F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
+F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
+F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
+F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
+F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
+F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
+F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
+F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
+F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
+F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
+F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
+F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
+F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
+F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
+F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
+F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
+F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
+F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
+F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
+F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
+F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
+F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
+F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
+F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
+F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
+F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
+F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
+F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
+F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
+F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
+F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
+F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
+F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
+F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
+F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
+F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
+F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
+F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;96FB;;;;N;;;;;
+F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
+F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
+F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
+F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
+F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
+F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
+F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
+F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
+F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
+F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
+F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
+F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
+F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
+F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
+F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
+F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
+F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
+F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
+F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
+F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
+F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
+F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
+F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
+F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
+F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
+F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;;
+F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
+F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
+F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
+F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
+F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
+F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
+F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
+F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;;
+F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
+F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
+F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
+F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
+F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;;
+F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
+F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
+F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
+F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
+F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
+F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
+F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
+F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
+F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
+F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
+F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
+F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
+F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
+F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
+F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
+F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
+F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
+F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
+F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
+F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
+F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
+F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
+F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
+F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
+F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
+F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
+F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
+F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
+F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
+F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
+F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
+F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
+F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
+F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
+F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
+F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
+F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
+F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
+F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
+F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
+F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
+F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
+F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
+F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
+F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
+F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
+F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
+F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
+F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
+F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
+F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
+F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
+F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
+F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
+F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
+F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
+F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
+F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;;
+F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
+F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
+F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
+F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
+F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
+F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
+F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
+F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
+F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
+F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
+F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
+F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
+F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
+F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
+F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
+F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
+F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
+F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
+F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
+F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
+F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
+F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
+F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
+F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
+F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
+F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
+F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
+F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
+F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
+F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
+F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;;
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;;
+F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
+F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
+F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
+F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
+F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
+F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
+F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
+F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
+F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
+F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
+F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
+F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
+F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
+F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
+F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
+F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
+F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
+F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
+F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
+F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
+F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
+F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
+F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
+F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
+F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
+F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
+F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
+F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
+F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
+F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
+F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
+F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
+F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
+F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
+F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
+F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
+F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
+F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
+F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
+F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
+F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
+F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;;
+F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
+F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
+FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
+FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
+FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
+FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
+FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
+FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
+FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
+FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
+FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
+FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
+FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
+FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
+FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
+FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
+FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
+FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
+FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
+FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
+FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
+FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
+FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
+FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
+FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
+FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
+FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
+FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
+FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
+FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
+FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
+FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
+FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
+FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;;;;
+FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
+FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
+FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
+FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;;;;
+FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
+FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
+FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
+FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
+FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
+FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
+FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
+FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
+FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
+FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
+FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;ON;;;;;N;HEBREW POINT VARIKA;;;;
+FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
+FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ET;<font> 002B;;;;N;;;;;
+FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
+FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
+FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;05E9 05BC 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;05E9 05BC 05C2;;;;N;;;;;
+FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
+FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
+FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
+FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
+FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
+FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
+FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
+FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
+FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
+FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
+FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
+FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
+FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
+FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
+FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
+FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
+FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
+FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
+FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
+FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
+FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
+FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
+FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
+FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
+FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
+FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
+FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
+FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
+FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;R;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;R;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;R;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;R;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;R;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;R;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;R;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;R;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;R;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;R;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;R;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;R;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;R;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;R;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;R;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;R;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;R;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;R;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;R;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;R;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;R;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;R;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;R;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;R;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;R;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;R;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;R;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;R;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;R;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;R;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;R;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;R;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;R;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;R;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;R;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;R;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;R;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;R;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;R;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;R;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;R;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;R;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;R;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;R;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;R;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;R;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;R;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;R;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;R;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;R;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;R;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;R;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;R;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;R;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;R;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;R;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;R;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;R;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;R;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;R;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;R;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;R;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;R;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;R;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;R;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;R;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;R;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;R;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;R;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;R;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;R;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;R;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;R;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;R;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;R;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;R;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;R;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;R;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;R;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;R;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;R;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;R;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;R;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;R;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;R;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;R;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;R;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;R;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;R;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;R;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;R;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;R;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;R;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;R;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;R;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;R;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;R;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;R;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;R;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;R;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;R;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;R;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;R;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;R;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;R;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;R;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;R;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;R;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;R;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;R;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;R;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;R;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;R;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;R;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;R;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;R;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;R;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;R;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;R;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;R;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;R;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;R;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;R;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;R;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;R;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;R;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;R;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;R;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;R;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;R;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;R;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;R;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;R;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;R;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;R;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;R;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;R;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;R;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064C;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064D;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064E;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064F;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 0650;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;R;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;R;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;R;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;R;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;R;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;R;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;R;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;R;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;R;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;R;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;R;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;R;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;R;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;R;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;R;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;R;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;R;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;R;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;R;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;R;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;R;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;R;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;R;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;R;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;R;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;R;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;R;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;R;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;R;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;R;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;R;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;R;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;R;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;R;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;R;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;R;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;R;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;R;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;R;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;R;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;R;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;R;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;R;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;R;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;R;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 064E;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 064F;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 0650;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;R;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;R;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;R;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;R;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;R;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;R;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;R;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;R;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;R;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;R;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;R;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;R;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;R;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;R;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;R;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;R;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;R;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;R;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;R;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;R;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;R;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;R;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;R;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;R;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;R;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;R;<isolated> 0627 064B;;;;N;;;;;
+FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
+FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;R;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;R;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;R;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;R;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;R;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;R;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;R;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;R;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;R;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;R;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;R;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;R;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
+FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;R;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;ON;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;ON;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;ON;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;ON;;;;;N;;;;;
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
+FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
+FE62;SMALL PLUS SIGN;Sm;0;ET;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
+FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;R;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;R;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;R;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;R;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;R;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;R;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;R;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;R;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;R;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;R;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;R;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;R;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;R;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;R;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;R;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;R;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;R;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;R;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;R;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;R;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;R;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;R;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;R;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;R;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;R;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;R;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;R;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;R;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;R;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;R;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;R;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;R;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;R;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;R;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;R;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;R;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;R;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;R;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;R;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;R;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;R;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;R;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;R;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;R;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;R;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;R;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;R;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;R;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;R;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;R;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;R;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;R;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;R;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;R;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;R;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;R;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;R;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;R;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;R;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;R;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;R;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;R;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;R;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;R;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;R;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;R;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;R;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;R;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;R;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;R;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;R;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;R;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;R;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;R;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;R;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;R;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;R;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;R;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;R;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;R;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;R;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;R;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;R;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;R;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;R;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;R;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;R;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;R;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;R;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;R;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;R;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;R;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;R;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;R;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;R;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;R;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;R;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;R;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;R;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;R;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;R;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;R;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;R;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;R;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;R;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;R;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;R;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;R;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;R;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;R;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;R;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;R;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;R;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;R;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;R;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;R;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;R;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;R;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;R;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;R;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;R;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;R;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;ON;;;;;N;BYTE ORDER MARK;;;;
+FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;N;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;N;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
+FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;N;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;N;;;;;
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;N;FULLWIDTH OPENING SQUARE BRACKET;;;;
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;N;FULLWIDTH CLOSING SQUARE BRACKET;;;;
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;N;FULLWIDTH OPENING CURLY BRACKET;;;;
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;N;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;N;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;N;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;L;<narrow> 30FB;;;;N;;;;;
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;;;;
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;;;;
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;Sm;0;ON;<narrow> 2502;;;;N;;;;;
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
diff --git a/src/com/ibm/icu/dev/data/unicode/UnicodeData-2.1.8.txt b/src/com/ibm/icu/dev/data/unicode/UnicodeData-2.1.8.txt
new file mode 100755
index 0000000..6c2f693
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/UnicodeData-2.1.8.txt
@@ -0,0 +1,6890 @@
+0000;<control>;Cc;0;ON;;;;;N;NULL;;;;
+0001;<control>;Cc;0;ON;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;ON;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;ON;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;ON;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;ON;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;ON;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;ON;;;;;N;BELL;;;;
+0008;<control>;Cc;0;ON;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;HORIZONTAL TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED;;;;
+000B;<control>;Cc;0;S;;;;;N;VERTICAL TABULATION;;;;
+000C;<control>;Cc;0;B;;;;;N;FORM FEED;;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN;;;;
+000E;<control>;Cc;0;ON;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;ON;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;ON;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;ON;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;ON;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;ON;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;ON;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;ON;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;ON;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;ON;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;B;;;;;N;FILE SEPARATOR;;;;
+001D;<control>;Cc;0;B;;;;;N;GROUP SEPARATOR;;;;
+001E;<control>;Cc;0;B;;;;;N;RECORD SEPARATOR;;;;
+001F;<control>;Cc;0;S;;;;;N;UNIT SEPARATOR;;;;
+0020;SPACE;Zs;0;WS;;;;;N;;;;;
+0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
+0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
+0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
+0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
+0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
+0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
+0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
+002A;ASTERISK;Po;0;ON;;;;;N;;;;;
+002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;;
+0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
+0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
+0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
+0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
+0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
+0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
+0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
+0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
+0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
+0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
+003A;COLON;Po;0;CS;;;;;N;;;;;
+003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
+003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
+0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
+0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
+0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
+0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
+0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
+0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
+0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
+0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
+0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
+0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
+004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
+004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
+004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
+004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
+004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
+004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
+0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
+0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
+0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
+0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
+0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
+0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
+0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
+0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
+0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
+0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
+005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
+005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
+005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
+005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
+005E;CIRCUMFLEX ACCENT;Sk;0;ON;<compat> 0020 0302;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;<compat> 0020 0332;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;<compat> 0020 0300;;;;N;SPACING GRAVE;;;;
+0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
+0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
+0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
+0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
+0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
+0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
+0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
+0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
+0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
+006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
+006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
+006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
+006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
+006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
+006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
+0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
+0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
+0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
+0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
+0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
+0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
+0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
+0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
+0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
+0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
+007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
+007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
+007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
+007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
+007E;TILDE;Sm;0;ON;;;;;N;;;;;
+007F;<control>;Cc;0;ON;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;ON;;;;;N;;;;;
+0081;<control>;Cc;0;ON;;;;;N;;;;;
+0082;<control>;Cc;0;ON;;;;;N;;;;;
+0083;<control>;Cc;0;ON;;;;;N;;;;;
+0084;<control>;Cc;0;ON;;;;;N;;;;;
+0085;<control>;Cc;0;ON;;;;;N;;;;;
+0086;<control>;Cc;0;ON;;;;;N;;;;;
+0087;<control>;Cc;0;ON;;;;;N;;;;;
+0088;<control>;Cc;0;ON;;;;;N;;;;;
+0089;<control>;Cc;0;ON;;;;;N;;;;;
+008A;<control>;Cc;0;ON;;;;;N;;;;;
+008B;<control>;Cc;0;ON;;;;;N;;;;;
+008C;<control>;Cc;0;ON;;;;;N;;;;;
+008D;<control>;Cc;0;ON;;;;;N;;;;;
+008E;<control>;Cc;0;ON;;;;;N;;;;;
+008F;<control>;Cc;0;ON;;;;;N;;;;;
+0090;<control>;Cc;0;ON;;;;;N;;;;;
+0091;<control>;Cc;0;ON;;;;;N;;;;;
+0092;<control>;Cc;0;ON;;;;;N;;;;;
+0093;<control>;Cc;0;ON;;;;;N;;;;;
+0094;<control>;Cc;0;ON;;;;;N;;;;;
+0095;<control>;Cc;0;ON;;;;;N;;;;;
+0096;<control>;Cc;0;ON;;;;;N;;;;;
+0097;<control>;Cc;0;ON;;;;;N;;;;;
+0098;<control>;Cc;0;ON;;;;;N;;;;;
+0099;<control>;Cc;0;ON;;;;;N;;;;;
+009A;<control>;Cc;0;ON;;;;;N;;;;;
+009B;<control>;Cc;0;ON;;;;;N;;;;;
+009C;<control>;Cc;0;ON;;;;;N;;;;;
+009D;<control>;Cc;0;ON;;;;;N;;;;;
+009E;<control>;Cc;0;ON;;;;;N;;;;;
+009F;<control>;Cc;0;ON;;;;;N;;;;;
+00A0;NO-BREAK SPACE;Zs;0;WS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
+00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
+00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
+00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
+00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
+00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
+00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
+00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
+00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
+00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
+00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
+00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;2;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;;;
+00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
+00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;1;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;;;;
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
+00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
+00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
+00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
+00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
+00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
+00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
+00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;;;00E6;
+00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
+00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
+00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
+00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
+00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
+00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
+00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
+00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
+00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
+00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
+00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
+00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
+00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
+00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
+00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
+00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
+00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
+00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
+00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
+00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
+00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
+00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
+00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
+00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
+00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
+00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
+00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
+00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
+00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
+00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
+00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;;00C6;;00C6
+00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
+00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
+00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
+00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
+00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
+00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
+00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
+00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
+00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
+00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
+00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
+00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
+00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
+00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
+00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
+00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
+00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
+00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
+00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
+00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
+00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
+00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
+00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
+00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
+0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
+0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
+0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
+0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
+0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
+0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
+0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
+0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
+0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
+0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
+010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
+010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
+010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
+010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
+010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
+010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
+0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
+0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
+0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
+0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
+0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
+0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
+0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
+0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
+0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
+0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
+011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
+011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
+011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
+011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
+011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
+011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
+0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
+0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
+0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
+0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
+0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
+0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
+0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
+0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
+0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
+0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
+012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
+012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
+012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
+012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
+012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
+012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
+0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
+0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
+0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
+0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
+0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
+0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
+0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
+0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
+0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
+013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
+013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
+013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
+013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
+013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
+013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
+0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
+0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
+0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
+0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
+0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
+0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
+0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
+0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
+0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
+014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
+014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
+014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
+014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
+0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
+0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
+0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
+0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
+0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
+0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
+0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
+0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
+0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
+0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
+015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
+015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
+015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
+015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
+015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;;;015F;
+015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;;015E;;015E
+0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
+0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
+0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;;;0163;
+0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;;0162;;0162
+0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
+0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
+0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
+0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
+0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
+0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
+016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
+016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
+016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
+016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
+016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
+016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
+0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
+0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
+0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
+0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
+0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
+0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
+0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
+0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
+0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
+0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
+017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
+017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
+017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
+017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
+017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
+017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
+0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;;
+0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
+0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
+0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
+0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
+0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
+0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
+0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
+0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
+0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;;;0256;
+018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
+018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
+018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
+018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
+018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
+018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
+0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
+0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
+0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
+0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
+0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
+0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;;;;
+0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
+0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
+0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
+0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
+019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;;;
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
+019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
+019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;;;
+019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;;;0275;
+01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
+01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
+01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;;01A2;;01A2
+01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
+01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
+01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;;;0280;
+01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
+01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
+01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
+01AA;LATIN LETTER REVERSED ESH LOOP;Lo;0;L;;;;;N;;;;;
+01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
+01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
+01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
+01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
+01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
+01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
+01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
+01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
+01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
+01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
+01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
+01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
+01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
+01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
+01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
+01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
+01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
+01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
+01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
+01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Lo;0;L;;;;;N;;;;;
+01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
+01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
+01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
+01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
+01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
+01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
+01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
+01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
+01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
+01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
+01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
+01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
+01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
+01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
+01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
+01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
+01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
+01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
+01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
+01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
+01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
+01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
+01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
+01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
+01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
+01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0041 0307 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0061 0307 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
+01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;;01E2;;01E2
+01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
+01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
+01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
+01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
+01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
+01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
+01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
+01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
+01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
+01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
+01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
+01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
+01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
+01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
+01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
+01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
+01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
+01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
+01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;;01FC;;01FC
+01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
+01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
+0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
+0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
+0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
+0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
+0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
+0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
+0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
+0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
+0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
+0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
+020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
+020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
+020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
+020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
+020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
+020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
+0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
+0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
+0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
+0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
+0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
+0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
+0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
+0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;;
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;;
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
+0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
+0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
+0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
+0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
+0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
+0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
+0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
+025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
+025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
+025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
+025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
+025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
+025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
+0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
+0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
+0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
+0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
+0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
+0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
+0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
+0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
+026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
+026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
+026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
+026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
+0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;;
+0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
+0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
+0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
+0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
+0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
+0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
+0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
+0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
+027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
+027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;;
+027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
+027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
+0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;;01A6;;01A6
+0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
+0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
+0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
+0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
+0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
+0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
+0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
+0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
+0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;;
+028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
+028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
+028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;;
+028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
+028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
+028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
+0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
+0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
+0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
+0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
+0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
+0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
+0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
+0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
+029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
+029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
+029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
+029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
+029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
+029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
+02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
+02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
+02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
+02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
+02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
+02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
+02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
+02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
+02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
+02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
+02B9;MODIFIER LETTER PRIME;Sk;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Sk;0;ON;;;;;N;;;;;
+02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
+02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
+02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
+02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;ON;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;ON;;;;;N;;;;;
+02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
+02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
+02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
+02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
+02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;ON;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;ON;;;;;N;NON-SPACING ACUTE;Oxia;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;ON;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;ON;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;ON;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;ON;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;ON;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;ON;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;ON;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;ON;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;ON;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;ON;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;ON;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;ON;;;;;N;NON-SPACING VERTICAL LINE ABOVE;Tonos;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;ON;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;ON;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;ON;;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;ON;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;ON;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;ON;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;ON;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;ON;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;ON;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;ON;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;ON;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;ON;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;ON;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;ON;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;ON;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;ON;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;ON;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;ON;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;ON;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;ON;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;ON;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;ON;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;ON;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;ON;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;ON;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;ON;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;ON;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;ON;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;ON;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;ON;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;ON;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;ON;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;ON;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;ON;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;ON;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;ON;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;ON;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;ON;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;ON;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;ON;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;ON;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;ON;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;ON;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;ON;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;ON;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;ON;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;ON;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;ON;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;ON;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;
+0360;COMBINING DOUBLE TILDE;Mn;234;ON;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;ON;;;;;N;;;;;
+0374;GREEK NUMERAL SIGN;Po;0;L;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Po;0;L;;;;;N;;Aristeri keraia;;;
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
+0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
+0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
+0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
+0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
+0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
+0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
+0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
+0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
+0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
+039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
+039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
+039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
+039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
+039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
+039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
+03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
+03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
+03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
+03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
+03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
+03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
+03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
+03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
+03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
+03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
+03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
+03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
+03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
+03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
+03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
+03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
+03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
+03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
+03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
+03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
+03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
+03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
+03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
+03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
+03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
+03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
+03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
+03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
+03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
+03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
+03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
+03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
+03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
+03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
+03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
+03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
+03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
+03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03D0;GREEK BETA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
+03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
+03D5;GREEK PHI SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;;
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;;
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;;
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;;
+03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
+03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
+03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
+03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
+03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
+03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
+03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
+03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
+03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
+03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
+03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
+03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
+03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
+03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
+03F0;GREEK KAPPA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03A3;;03A3
+03F3;GREEK LETTER YOT;Lo;0;L;;;;;N;;;;;
+0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
+0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
+0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
+0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
+0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
+0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
+0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
+0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
+0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
+040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
+040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
+040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
+040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
+040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
+0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
+0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
+0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
+0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
+0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
+0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
+0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
+0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
+0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
+0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
+041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
+041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
+041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
+041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
+041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
+041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
+0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
+0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
+0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
+0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
+0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
+0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
+0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
+0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
+0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
+0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
+042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
+042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
+042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
+042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
+042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
+042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
+0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
+0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
+0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
+0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
+0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
+0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
+0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
+0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
+0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
+0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
+043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
+043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
+043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
+043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
+043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
+043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
+0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
+0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
+0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
+0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
+0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
+0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
+0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
+0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
+0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
+0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
+044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
+044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
+044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
+044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
+044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
+044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
+0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
+0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
+0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
+0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
+0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
+0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
+0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
+0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
+0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
+045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
+045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
+045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
+045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
+045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
+0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
+0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
+0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
+0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
+0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
+0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
+0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
+0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
+0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
+0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
+046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
+046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
+046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
+046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
+046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
+046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
+0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
+0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
+0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
+0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
+0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
+0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
+0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
+0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
+0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
+0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
+047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
+047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
+047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
+047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
+047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
+047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
+0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
+0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
+0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
+0483;COMBINING CYRILLIC TITLO;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
+0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
+0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
+0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
+0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
+0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
+0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
+0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
+0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
+0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
+049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
+049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
+049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
+049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
+049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
+049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
+04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
+04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
+04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
+04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
+04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
+04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
+04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
+04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
+04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
+04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
+04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
+04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
+04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
+04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
+04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
+04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
+04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
+04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
+04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
+04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
+04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
+04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
+04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
+04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
+04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
+04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
+04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
+04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
+04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
+04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
+04C0;CYRILLIC LETTER PALOCHKA;Lo;0;L;;;;;N;CYRILLIC LETTER I;;;;
+04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
+04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
+04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
+04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
+04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
+04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
+04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
+04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
+04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
+04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
+04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
+04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
+04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
+04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
+04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
+04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
+04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
+04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
+04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
+04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
+04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
+04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
+04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
+04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
+04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
+04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
+04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
+04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
+04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
+04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
+04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
+04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
+04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
+04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
+04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
+04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
+04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
+04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
+0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
+0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
+0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
+0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
+0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
+0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
+0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
+0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
+0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
+053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
+053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
+053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
+053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
+053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
+053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
+0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
+0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
+0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
+0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
+0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
+0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
+0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
+0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
+0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
+0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
+054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
+054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
+054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
+054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
+054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
+054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
+0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
+0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
+0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
+0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
+0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
+0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
+0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
+0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
+055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
+055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
+055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
+055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
+055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
+0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
+0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
+0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
+0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
+0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
+0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
+0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
+0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
+056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
+056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
+056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
+056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
+056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
+056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
+0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
+0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
+0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
+0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
+0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
+0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
+0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
+0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
+0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
+0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
+057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
+057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
+057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
+057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
+057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
+057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
+0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
+0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
+0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
+0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
+0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
+0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
+0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
+0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;ON;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;ON;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;ON;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;ON;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;ON;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;ON;;;;;N;;;;;
+0597;HEBREW ACCENT REVIA;Mn;230;ON;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;ON;;;;;N;;;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;ON;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;ON;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;ON;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;ON;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;ON;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;ON;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;ON;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;ON;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;ON;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;ON;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;ON;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;ON;;;;;N;;;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;ON;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;ON;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;ON;;;;;N;;;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;ON;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;ON;;;;;N;;;;;
+05AB;HEBREW ACCENT OLE;Mn;230;ON;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;ON;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;ON;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;230;ON;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;ON;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;ON;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;ON;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;ON;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;ON;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;ON;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;ON;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;ON;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;ON;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;ON;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;ON;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;ON;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;ON;;;;;N;HEBREW POINT DAGESH;;;;
+05BD;HEBREW POINT METEG;Mn;22;ON;;;;;N;;;;;
+05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;ON;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;ON;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;ON;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;ON;;;;;N;;;;;
+05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
+05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
+05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
+05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
+05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
+05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
+05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
+05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
+05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
+05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
+05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
+05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
+05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
+05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
+05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
+05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
+05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
+05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
+05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
+05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
+05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
+05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
+05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
+05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
+05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
+05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
+05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;R;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;R;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;R;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;R;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;R;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;R;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;R;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;R;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;R;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;R;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;R;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;R;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;R;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;R;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;R;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;R;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;R;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;R;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;R;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;R;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;R;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;R;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;R;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;R;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;R;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;R;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;R;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;R;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;R;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;R;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;ON;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;ON;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;ON;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;ON;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;ON;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;ON;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;ON;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;ON;;;;;N;;;;;
+0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
+066D;ARABIC FIVE POINTED STAR;Po;0;R;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;ON;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;R;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;R;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;R;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;R;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;R;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;R;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;R;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;R;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;R;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;R;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;R;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;R;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;R;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;R;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;R;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;R;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;R;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;R;;;;;N;;;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;R;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;R;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;R;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;R;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;R;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;R;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;R;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;R;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;R;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;R;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;R;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;R;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06D0;ARABIC LETTER E;Lo;0;R;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;R;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;R;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;R;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;ON;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;ON;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;ON;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;ON;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;ON;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;ON;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;ON;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Me;0;ON;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;ON;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;ON;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;ON;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;ON;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;ON;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;ON;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;ON;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;R;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;R;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;ON;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;ON;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;ON;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;ON;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;ON;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;ON;;;;;N;;;;;
+06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
+06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
+06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
+06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
+06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
+06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
+06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
+06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
+06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
+06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;ON;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;ON;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
+0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
+0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
+0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
+0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
+090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
+090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
+090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
+090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
+0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
+0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
+0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
+0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
+0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
+0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
+0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
+0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
+091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
+091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
+0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
+0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
+0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
+0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
+092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
+092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
+092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
+092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
+0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
+0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
+0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
+0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
+0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
+0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
+0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
+093C;DEVANAGARI SIGN NUKTA;Mn;7;ON;;;;;N;;;;;
+093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0941;DEVANAGARI VOWEL SIGN U;Mn;0;ON;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;ON;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;ON;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;ON;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;ON;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;0;ON;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;0;ON;;;;;N;;;;;
+0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
+094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+094D;DEVANAGARI SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;ON;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;ON;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;ON;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;ON;;;;;N;;;;;
+0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
+0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
+095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
+095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
+095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
+095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
+095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
+095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
+0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;ON;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;ON;;;;;N;;;;;
+0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
+0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;0;ON;;;;;N;;;;;
+0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
+0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
+0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
+0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
+0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
+098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
+098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
+0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
+0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
+0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
+0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
+0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
+0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
+099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
+099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
+099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
+099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
+099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
+099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
+09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
+09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
+09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
+09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
+09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
+09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
+09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
+09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
+09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
+09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
+09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
+09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
+09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
+09B0;BENGALI LETTER RA;Lo;0;L;09AC 09BC;;;;N;;;;;
+09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
+09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
+09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
+09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
+09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
+09BC;BENGALI SIGN NUKTA;Mn;7;ON;;;;;N;;;;;
+09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+09C1;BENGALI VOWEL SIGN U;Mn;0;ON;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;ON;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;ON;;;;;N;;;;;
+09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
+09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
+09CD;BENGALI SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
+09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
+09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
+09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;ON;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;ON;;;;;N;;;;;
+09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
+09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;-1;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;0;ON;;;;;N;;;;;
+0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
+0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
+0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
+0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
+0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
+0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
+0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
+0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
+0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
+0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
+0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
+0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
+0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
+0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
+0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
+0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
+0A33;GURMUKHI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;ON;;;;;N;;;;;
+0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0A41;GURMUKHI VOWEL SIGN U;Mn;0;ON;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;0;ON;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;0;ON;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;ON;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;ON;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
+0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
+0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
+0A5C;GURMUKHI LETTER RRA;Lo;0;L;0A21 0A3C;;;;N;;;;;
+0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
+0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0A70;GURMUKHI TIPPI;Mn;0;ON;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;0;ON;;;;;N;;;;;
+0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
+0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
+0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
+0A81;GUJARATI SIGN CANDRABINDU;Mn;0;ON;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;0;ON;;;;;N;;;;;
+0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
+0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
+0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
+0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
+0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
+0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
+0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
+0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
+0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
+0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
+0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
+0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
+0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
+0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
+0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
+0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
+0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
+0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
+0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
+0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
+0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
+0ABC;GUJARATI SIGN NUKTA;Mn;7;ON;;;;;N;;;;;
+0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0AC1;GUJARATI VOWEL SIGN U;Mn;0;ON;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;ON;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;ON;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;ON;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;0;ON;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;0;ON;;;;;N;;;;;
+0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+0ACD;GUJARATI SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;0;ON;;;;;N;;;;;
+0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
+0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
+0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
+0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
+0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
+0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
+0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
+0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
+0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
+0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
+0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
+0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
+0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
+0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
+0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
+0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
+0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
+0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
+0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
+0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
+0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
+0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
+0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
+0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
+0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
+0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
+0B3C;ORIYA SIGN NUKTA;Mn;7;ON;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;0;ON;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;0;ON;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;ON;;;;;N;;;;;
+0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
+0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
+0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
+0B4D;ORIYA SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;0;ON;;;;;N;;;;;
+0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
+0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
+0B5F;ORIYA LETTER YYA;Lo;0;L;0B2F 0B3C;;;;N;;;;;
+0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;ON;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
+0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
+0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
+0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
+0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
+0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
+0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
+0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
+0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
+0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
+0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
+0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
+0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
+0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
+0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
+0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
+0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
+0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
+0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
+0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
+0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
+0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
+0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
+0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
+0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
+0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
+0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
+0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
+0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
+0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
+0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
+0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0BC0;TAMIL VOWEL SIGN II;Mn;0;ON;;;;;N;;;;;
+0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
+0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
+0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
+0BCD;TAMIL SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
+0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
+0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
+0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
+0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
+0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
+0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
+0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
+0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
+0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
+0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
+0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
+0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
+0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
+0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
+0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
+0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
+0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
+0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
+0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
+0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
+0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
+0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
+0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
+0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
+0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
+0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
+0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
+0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
+0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
+0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
+0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
+0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
+0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
+0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
+0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
+0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
+0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
+0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
+0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
+0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+0C3E;TELUGU VOWEL SIGN AA;Mn;0;ON;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;0;ON;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;0;ON;;;;;N;;;;;
+0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0C46;TELUGU VOWEL SIGN E;Mn;84;ON;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;0;ON;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;0;ON;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;0;ON;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;0;ON;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;0;ON;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;84;ON;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;ON;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
+0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
+0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
+0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
+0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
+0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
+0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
+0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
+0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
+0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
+0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
+0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
+0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
+0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
+0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
+0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
+0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
+0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
+0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
+0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
+0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
+0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
+0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
+0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
+0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
+0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
+0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
+0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
+0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
+0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;0;ON;;;;;N;;;;;
+0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
+0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0CC6;KANNADA VOWEL SIGN E;Mn;0;ON;;;;;N;;;;;
+0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
+0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
+0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
+0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;0;ON;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
+0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
+0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
+0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
+0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
+0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
+0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
+0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
+0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
+0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
+0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
+0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
+0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
+0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
+0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
+0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
+0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
+0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
+0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
+0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
+0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
+0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
+0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
+0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
+0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
+0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
+0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
+0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
+0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
+0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
+0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
+0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
+0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
+0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
+0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
+0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0D41;MALAYALAM VOWEL SIGN U;Mn;0;ON;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;ON;;;;;N;;;;;
+0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
+0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
+0D4D;MALAYALAM SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
+0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
+0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
+0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
+0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
+0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
+0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
+0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
+0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
+0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
+0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
+0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
+0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
+0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
+0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
+0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
+0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
+0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
+0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
+0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
+0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
+0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
+0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
+0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
+0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
+0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
+0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
+0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
+0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
+0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
+0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
+0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
+0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
+0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
+0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
+0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
+0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
+0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
+0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
+0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
+0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
+0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
+0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
+0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
+0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
+0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
+0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;ON;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
+0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
+0E33;THAI CHARACTER SARA AM;Lo;0;L;0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;0;ON;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;0;ON;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;0;ON;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;0;ON;;;;;N;THAI VOWEL SIGN SARA UEE;;;;
+0E38;THAI CHARACTER SARA U;Mn;103;ON;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;103;ON;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;9;ON;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
+0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
+0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
+0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
+0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;0;ON;;;;;N;THAI VOWEL SIGN MAI TAI KHU;;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;ON;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;107;ON;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;107;ON;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;ON;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;ON;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;107;ON;;;;;N;THAI NIKKHAHIT;;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;0;ON;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;So;0;L;;;;;N;THAI FONGMAN;;;;
+0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
+0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
+0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
+0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
+0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
+0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
+0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
+0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
+0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
+0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
+0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
+0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
+0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
+0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
+0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
+0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
+0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
+0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
+0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
+0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
+0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
+0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
+0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
+0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
+0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
+0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
+0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
+0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
+0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
+0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;ON;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;0;ON;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;0;ON;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;0;ON;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;0;ON;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;ON;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;118;ON;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;0;ON;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;ON;;;;;N;;;;;
+0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
+0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
+0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
+0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
+0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
+0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
+0EC8;LAO TONE MAI EK;Mn;122;ON;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;122;ON;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;122;ON;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;122;ON;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;0;ON;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;122;ON;;;;;N;;;;;
+0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
+0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;;yik go dun ma;;;
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;;drul shey;;;
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;;nyi shey;;;
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;;rinchen pung shey;;;
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
+0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;;ter tsek;;;
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;ON;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;ON;;;;;N;;dong tsu;;;
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
+0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;230;ON;;;;;N;;nge zung nyi da;;;
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;230;ON;;;;;N;;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;ON;;;;;N;;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;0;ON;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;0;ON;;;;;N;;mar tse;;;
+0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
+0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
+0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
+0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
+0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
+0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
+0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
+0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;;;;;
+0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
+0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
+0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
+0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
+0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
+0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
+0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
+0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
+0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
+0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
+0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
+0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
+0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
+0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
+0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
+0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;;;;;
+0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
+0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;;;;
+0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
+0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;;;;;
+0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
+0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
+0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
+0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;0;ON;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;ON;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;0;ON;0F72 0F71;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;ON;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;0;ON;0F71 0F74;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;ON;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;ON;0F76 0F71;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;ON;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;ON;0F78 0F71;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;130;ON;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;130;ON;;;;;N;;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;130;ON;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;130;ON;;;;;N;;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;ON;;;;;N;;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;ON;;;;;N;;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;ON;0F80 0F71;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;ON;;;;;N;;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;ON;;;;;N;;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;ON;;;;;N;;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;ON;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;ON;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;ON;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;ON;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;ON;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;ON;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;ON;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;ON;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;ON;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;ON;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;ON;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;ON;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;ON;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;ON;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;ON;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;ON;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;ON;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;ON;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;ON;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;ON;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;ON;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;ON;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;ON;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;ON;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;ON;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;ON;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;ON;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;ON;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;ON;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;ON;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;ON;;;;;N;;;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;ON;;;;;N;;;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;ON;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;ON;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;ON;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;ON;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;ON;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;ON;0F90 0FB5;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;10D0;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;10D1;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;10D2;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;10D3;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;10D4;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;10D5;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;10D6;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;10D7;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;10D8;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;10D9;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;10DA;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;10DB;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;10DC;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;10DD;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;10DE;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;10DF;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;10E0;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;10E1;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;10E2;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;10E3;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;10E4;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;10E5;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;10E6;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;10E7;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;10E8;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;10E9;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;10EA;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;10EB;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;10EC;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;10ED;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;10EE;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;10EF;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;10F0;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;10F1;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;10F2;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;10F3;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;10F4;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;10F5;
+10D0;GEORGIAN LETTER AN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;<compat> 1100 1100;;;;N;;;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;<compat> 1103 1103;;;;N;;;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;<compat> 1107 1107;;;;N;;;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;<compat> 1109 1109;;;;N;;;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;<compat> 110C 110C;;;;N;;;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;<compat> 1102 1100;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;<compat> 1102 1102;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;<compat> 1102 1103;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;<compat> 1102 1107;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;<compat> 1103 1100;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;<compat> 1105 1102;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;<compat> 1105 1105;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;<compat> 1105 1112;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;<compat> 1105 110B;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;<compat> 1106 1107;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;<compat> 1106 110B;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;<compat> 1107 1100;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;<compat> 1107 1102;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;<compat> 1107 1103;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;<compat> 1107 1109;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1107 1109 1100;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1107 1109 1103;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;<compat> 1107 1109 1107;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;<compat> 1107 1109 1109;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;<compat> 1107 1109 110C;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;<compat> 1107 110C;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;<compat> 1107 110E;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;<compat> 1107 1110;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;<compat> 1107 1111;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;<compat> 1107 110B;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 1107 1107 110B;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;<compat> 1109 1100;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;<compat> 1109 1102;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;<compat> 1109 1103;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;<compat> 1109 1105;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;<compat> 1109 1106;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;<compat> 1109 1107;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;<compat> 1109 1107 1100;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;<compat> 1109 1109 1109;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;<compat> 1109 110B;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;<compat> 1109 110C;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;<compat> 1109 110E;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;<compat> 1109 110F;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;<compat> 1109 1110;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;<compat> 1109 1111;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;<compat> 1109 1112;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;<compat> 113C 113C;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;<compat> 113E 113E;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;<compat> 110B 1100;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;<compat> 110B 1103;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;<compat> 110B 1106;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;<compat> 110B 1107;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;<compat> 110B 1109;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;<compat> 110B 1140;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;<compat> 110B 110B;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;<compat> 110B 110C;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;<compat> 110B 110E;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;<compat> 110B 1110;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;<compat> 110B 1111;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;<compat> 110C 110B;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;<compat> 114E 114E;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;<compat> 1150 1150;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;<compat> 110E 110F;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;<compat> 110E 1112;;;;N;;;;;
+1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;<compat> 1111 1107;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1111 110B;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;<compat> 1112 1112;;;;N;;;;;
+1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
+1162;HANGUL JUNGSEONG AE;Lo;0;L;<compat> 1161 1175;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;<compat> 1163 1175;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;<compat> 1165 1175;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;<compat> 1167 1175;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;<compat> 1169 1161;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;<compat> 1169 1161 1175;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;<compat> 1169 1175;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;<compat> 116E 1165;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;<compat> 116E 1165 1175;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;<compat> 116E 1175;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;<compat> 1173 1175;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;<compat> 1161 1169;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;<compat> 1161 116E;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;<compat> 1163 1169;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;<compat> 1163 116D;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;<compat> 1165 1169;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;<compat> 1165 116E;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;<compat> 1165 1173;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;<compat> 1167 1169;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;<compat> 1167 116E;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;<compat> 1169 1165;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;<compat> 1169 1166;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;<compat> 1169 1168;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;<compat> 1169 1169;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;<compat> 1169 116E;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;<compat> 116D 1163;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;<compat> 116D 1164;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;<compat> 116D 1167;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;<compat> 116D 1169;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;<compat> 116D 1175;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;<compat> 116E 1161;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;<compat> 116E 1162;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;<compat> 116E 1165 1173;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;<compat> 116E 1168;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;<compat> 116E 116E;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;<compat> 1172 1161;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;<compat> 1172 1165;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;<compat> 1172 1166;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;<compat> 1172 1167;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;<compat> 1172 1168;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;<compat> 1172 116E;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;<compat> 1172 1175;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;<compat> 1173 116E;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;<compat> 1173 1173;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;<compat> 1174 116E;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;<compat> 1175 1161;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;<compat> 1175 1163;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;<compat> 1175 1169;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;<compat> 1175 116E;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;<compat> 1175 1173;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;<compat> 1175 119E;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;<compat> 119E 1165;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;<compat> 119E 116E;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;<compat> 119E 1175;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;<compat> 119E 119E;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;<compat> 11A8 11A8;;;;N;;;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;<compat> 11A8 11BA;;;;N;;;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;<compat> 11AB 11BD;;;;N;;;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;<compat> 11AB 11C2;;;;N;;;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;<compat> 11AF 11A8;;;;N;;;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;<compat> 11AF 11B7;;;;N;;;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;<compat> 11AF 11B8;;;;N;;;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;<compat> 11AF 11BA;;;;N;;;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;<compat> 11AF 11C0;;;;N;;;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;<compat> 11AF 11C1;;;;N;;;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;<compat> 11AF 11C2;;;;N;;;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;<compat> 11B8 11BA;;;;N;;;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;<compat> 11BA 11BA;;;;N;;;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;<compat> 11A8 11AF;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;<compat> 11A8 11BA 11A8;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;<compat> 11AB 11A8;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;<compat> 11AB 11AE;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;<compat> 11AB 11BA;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;<compat> 11AB 11EB;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;<compat> 11AB 11C0;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;<compat> 11AE 11A8;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;<compat> 11AE 11AF;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11AF 11A8 11BA;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;<compat> 11AF 11AB;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;<compat> 11AF 11AE;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;<compat> 11AF 11AE 11C2;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;<compat> 11AF 11AF;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;<compat> 11AF 11B7 11A8;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;<compat> 11AF 11B7 11BA;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11AF 11B8 11BA;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;<compat> 11AF 11B8 11C2;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;<compat> 11AF 11B8 11BC;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;<compat> 11AF 11BA 11BA;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;<compat> 11AF 11EB;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;<compat> 11AF 11BF;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11AF 11F9;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;<compat> 11B7 11A8;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;<compat> 11B7 11AF;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;<compat> 11B7 11B8;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;<compat> 11B7 11BA;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;<compat> 11B7 11BA 11BA;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;<compat> 11B7 11EB;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;<compat> 11B7 11BE;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;<compat> 11B7 11C2;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;<compat> 11B7 11BC;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;<compat> 11B8 11AF;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;<compat> 11B8 11C1;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;<compat> 11B8 11C2;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;<compat> 11B8 11BC;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;<compat> 11BA 11A8;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;<compat> 11BA 11AE;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;<compat> 11BA 11AF;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;<compat> 11BA 11B8;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;<compat> 11BC 11A8;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;<compat> 11BC 11A8 11A8;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;<compat> 11BC 11BC;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;<compat> 11BC 11BF;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;<compat> 11F0 11BA;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F0 11EB;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;<compat> 11C1 11B8;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;<compat> 11C1 11BC;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;<compat> 11C2 11AB;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;<compat> 11C2 11AF;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;<compat> 11C2 11B7;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;<compat> 11C2 11B8;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
+1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
+1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
+1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
+1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
+1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
+1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
+1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
+1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
+1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
+1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
+1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
+1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
+1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
+1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
+1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
+1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
+1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
+1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
+1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
+1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
+1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
+1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
+1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
+1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
+1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
+1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
+1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
+1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0114 0327;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0115 0327;;;;N;;;1E1C;;1E1C
+1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
+1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
+1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
+1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
+1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
+1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
+1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
+1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
+1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
+1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
+1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
+1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
+1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
+1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
+1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
+1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
+1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
+1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
+1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
+1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
+1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
+1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
+1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
+1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
+1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
+1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
+1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
+1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
+1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
+1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
+1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
+1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
+1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
+1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
+1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
+1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
+1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
+1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
+1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
+1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
+1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
+1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
+1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
+1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
+1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
+1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
+1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
+1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
+1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
+1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
+1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
+1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
+1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
+1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
+1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
+1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
+1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
+1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
+1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
+1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
+1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
+1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
+1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
+1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
+1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
+1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
+1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
+1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
+1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
+1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
+1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
+1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
+1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
+1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
+1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
+1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
+1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
+1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
+1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
+1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
+1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
+1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
+1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
+1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
+1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
+1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
+1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
+1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
+1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
+1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
+1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
+1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
+1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
+1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
+1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
+1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
+1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
+1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
+1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
+1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
+1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
+1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
+1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
+1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
+1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
+1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
+1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
+1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
+1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
+1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
+1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
+1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
+1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
+1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
+1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
+1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
+1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
+1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
+1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
+1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
+1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
+1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
+1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
+1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
+1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
+1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
+1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
+1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
+1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
+1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
+1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
+1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
+1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
+1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
+1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
+1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
+1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
+1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;00C2 0323;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00E2 0323;;;;N;;;1EAC;;1EAC
+1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
+1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
+1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
+1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
+1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
+1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
+1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
+1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
+1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;0102 0323;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;0103 0323;;;;N;;;1EB6;;1EB6
+1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
+1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
+1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
+1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
+1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
+1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
+1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
+1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
+1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
+1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
+1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
+1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
+1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
+1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
+1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;00CA 0323;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00EA 0323;;;;N;;;1EC6;;1EC6
+1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
+1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
+1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
+1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
+1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
+1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
+1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
+1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
+1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
+1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
+1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
+1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
+1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
+1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
+1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
+1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
+1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;00D4 0323;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00F4 0323;;;;N;;;1ED8;;1ED8
+1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
+1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
+1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
+1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
+1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
+1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
+1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
+1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
+1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
+1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
+1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
+1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
+1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
+1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
+1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
+1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
+1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
+1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
+1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
+1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
+1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
+1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
+1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
+1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
+1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
+1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
+1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
+1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
+1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
+1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
+1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
+1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
+1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
+1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
+1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
+1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
+1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
+1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
+1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
+1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
+1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
+1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
+1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
+1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
+1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
+1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
+1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
+1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
+1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
+1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
+1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
+1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
+1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
+1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
+1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
+1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
+1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
+1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
+1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
+1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
+1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
+1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
+1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
+1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
+1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
+1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
+1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
+1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
+1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
+1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
+1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
+1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
+1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
+1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
+1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
+1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
+1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
+1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
+1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
+1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
+1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
+1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
+1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
+1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
+1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
+1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
+1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
+1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
+1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
+1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
+1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
+1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
+1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
+1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
+1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
+1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
+1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
+1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
+1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
+1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
+1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
+1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
+1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
+1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
+1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
+1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
+1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
+1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
+1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
+1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
+1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
+1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
+1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
+1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
+1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
+1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
+1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
+1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
+1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
+1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
+1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
+1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
+1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
+1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
+1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
+1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
+1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
+1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
+1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
+1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
+1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
+1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
+1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
+1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
+1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
+1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
+1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
+1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
+1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
+1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
+1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
+1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
+1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
+1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
+1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
+1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
+1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
+1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
+1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
+1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
+1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
+1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
+1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
+1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
+1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lu;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F0F 0345;;;;N;;;;1F87;
+1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
+1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
+1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
+1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
+1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
+1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
+1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
+1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
+1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lu;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F2F 0345;;;;N;;;;1F97;
+1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
+1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
+1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
+1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
+1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
+1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
+1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
+1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
+1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lu;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F6F 0345;;;;N;;;;1FA7;
+1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
+1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
+1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
+1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
+1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
+1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
+1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
+1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
+1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
+1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
+1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lu;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;
+1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
+1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
+1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
+1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
+1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
+1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
+1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
+1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
+1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
+1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lu;0;L;0397 0345;;;;N;;;;1FC3;
+1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
+1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
+1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
+1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
+1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
+1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
+1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
+1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
+1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
+1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
+1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
+1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
+1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
+1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
+1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
+1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
+1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
+1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
+1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
+1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
+1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
+1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
+1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
+1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
+1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
+1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
+1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
+1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
+1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
+1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
+1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
+1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
+1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
+1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
+1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
+1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lu;0;L;03A9 0345;;;;N;;;;1FF3;
+1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
+1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
+2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
+2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
+2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2007;FIGURE SPACE;Zs;0;CS;<noBreak> 0020;;;;N;;;;;
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200B;ZERO WIDTH SPACE;Zs;0;WS;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;ON;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;ON;;;;;N;;;;;
+200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
+2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
+2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
+2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
+2013;EN DASH;Pd;0;ON;;;;;N;;;;;
+2014;EM DASH;Pd;0;ON;;;;;N;;;;;
+2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
+2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
+2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
+2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
+2020;DAGGER;Po;0;ON;;;;;N;;;;;
+2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
+2022;BULLET;Po;0;ON;;;;;N;;;;;
+2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
+2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
+2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
+2028;LINE SEPARATOR;Zl;0;B;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;L;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;R;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;ON;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;L;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;R;;;;;N;;;;;
+2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+2032;PRIME;Po;0;ET;;;;;N;;;;;
+2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
+2038;CARET;Po;0;ON;;;;;N;;;;;
+2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
+203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
+203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
+203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
+2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
+2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
+2042;ASTERISM;Po;0;ON;;;;;N;;;;;
+2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
+2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;ON;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;ON;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;ON;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;ON;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;ON;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;ON;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;0;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
+20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
+20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
+20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
+20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
+20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
+20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
+20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
+20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
+20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
+20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;ON;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;ON;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;ON;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;ON;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;ON;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;ON;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;ON;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;ON;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;ON;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;ON;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;ON;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;1;ON;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
+2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
+2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
+2108;SCRUPLE;So;0;ON;;;;;N;;;;;
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
+210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
+2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
+2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
+2118;SCRIPT CAPITAL P;Ll;0;L;;;;;N;SCRIPT P;;;;
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
+211F;RESPONSE;So;0;ON;;;;;N;;;;;
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
+2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
+2123;VERSICLE;So;0;ON;;;;;N;;;;;
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
+2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;;
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
+2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
+212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;;
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;;
+212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;Ll;0;L;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;;
+2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
+2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
+2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
+2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
+2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
+2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
+2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
+2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
+2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
+2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
+2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
+2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
+2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
+219A;LEFTWARDS ARROW WITH STROKE;So;0;ON;;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;So;0;ON;;;;;N;RIGHT ARROW WITH STROKE;;;;
+219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
+219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
+219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
+219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
+21A0;RIGHTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
+21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
+21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
+21A3;RIGHTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
+21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
+21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
+21A6;RIGHTWARDS ARROW FROM BAR;So;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
+21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
+21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
+21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
+21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
+21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
+21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
+21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
+21AE;LEFT RIGHT ARROW WITH STROKE;So;0;ON;;;;;N;;;;;
+21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
+21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
+21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
+21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
+21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
+21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
+21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
+21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
+21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
+21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
+21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
+21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
+21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
+21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
+21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
+21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
+21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
+21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
+21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
+21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
+21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
+21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
+21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
+21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
+21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
+21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
+21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;So;0;ON;;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
+21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
+21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
+21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
+21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
+21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
+21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
+21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
+21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
+21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
+21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
+21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
+21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
+21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
+21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
+21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
+21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
+21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
+21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
+21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
+21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
+21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
+21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
+21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
+21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
+21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
+2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
+2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
+2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
+2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
+2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
+2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
+2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
+2207;NABLA;Sm;0;ON;;;;;N;;;;;
+2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
+220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
+220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
+220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
+2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
+2212;MINUS SIGN;Sm;0;ET;;;;;N;;;;;
+2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
+2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
+2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
+221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
+221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
+221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
+221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
+221E;INFINITY;Sm;0;ON;;;;;N;;;;;
+221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
+2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
+2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
+2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
+2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
+2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
+2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
+222A;UNION;Sm;0;ON;;;;;N;;;;;
+222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
+2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
+2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
+2236;RATIO;Sm;0;ON;;;;;N;;;;;
+2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
+2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
+2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
+223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
+223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
+223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;;;;
+223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
+223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
+2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2241;NOT TILDE;Sm;0;ON;007E 0338;;;;Y;;;;;
+2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
+2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
+2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
+2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
+224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
+224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
+2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
+2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
+2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
+2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
+2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
+225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
+225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
+225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
+225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
+225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
+225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
+2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
+2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
+2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
+2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
+2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
+2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
+2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
+2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
+226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
+226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
+226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
+226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
+2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
+2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
+2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
+2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
+2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
+2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
+2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
+2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
+2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
+2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
+227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
+227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
+2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
+2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
+2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
+2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
+2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
+2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
+2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
+228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
+228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
+228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
+228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
+228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
+228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
+2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
+2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
+2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
+2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
+229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
+229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
+229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
+22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
+22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
+22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
+22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
+22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
+22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
+22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
+22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
+22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
+22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
+22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
+22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
+22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
+22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
+22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
+22BB;XOR;Sm;0;ON;;;;;N;;;;;
+22BC;NAND;Sm;0;ON;;;;;N;;;;;
+22BD;NOR;Sm;0;ON;;;;;N;;;;;
+22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
+22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
+22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
+22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
+22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
+22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
+22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
+22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
+22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
+22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
+22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
+22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
+22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
+22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
+22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
+22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
+22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
+22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
+22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
+22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
+22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
+22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
+22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
+22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
+22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
+22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
+22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
+22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
+2302;HOUSE;So;0;ON;;;;;N;;;;;
+2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
+2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
+2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
+2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
+2307;WAVY LINE;So;0;ON;;;;;N;;;;;
+2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
+2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
+230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
+230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
+230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
+230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
+2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
+2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
+2312;ARC;So;0;ON;;;;;N;;;;;
+2313;SEGMENT;So;0;ON;;;;;N;;;;;
+2314;SECTOR;So;0;ON;;;;;N;;;;;
+2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
+2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
+2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
+2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
+2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
+231A;WATCH;So;0;ON;;;;;N;;;;;
+231B;HOURGLASS;So;0;ON;;;;;N;;;;;
+231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
+231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
+231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
+231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
+2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2322;FROWN;So;0;ON;;;;;N;;;;;
+2323;SMILE;So;0;ON;;;;;N;;;;;
+2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
+2325;OPTION KEY;So;0;ON;;;;;N;;;;;
+2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
+2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
+2328;KEYBOARD;So;0;ON;;;;;N;;;;;
+2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
+232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
+232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
+232C;BENZENE RING;So;0;ON;;;;;N;;;;;
+232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
+232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
+232F;SYMMETRY;So;0;ON;;;;;N;;;;;
+2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
+2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
+2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
+2333;SLOPE;So;0;ON;;;;;N;;;;;
+2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
+2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
+2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
+2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
+2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
+2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
+233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
+233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
+233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
+233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
+233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
+233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
+2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
+2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
+2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
+2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
+2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
+2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
+2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
+2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
+2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
+2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
+234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;;;;
+234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
+234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
+234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
+234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;;;;
+234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
+2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
+2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;;;;
+2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
+2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
+2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
+2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;;;;
+2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
+2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
+2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
+2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
+235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
+235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
+235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
+235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
+235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
+235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
+2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
+2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;;;;
+2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
+2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
+2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
+2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
+2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
+2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
+2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
+2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
+236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
+236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
+236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
+236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
+236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
+236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
+2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
+2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
+2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
+2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
+2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
+2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
+2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
+2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
+2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
+2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
+237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
+2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
+2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
+2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
+2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
+2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
+2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
+2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
+2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
+2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
+2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
+240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
+240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
+240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
+240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
+240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
+240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
+2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
+2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
+2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
+2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
+2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
+2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
+2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
+2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
+2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
+2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
+241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
+241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
+241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
+241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
+241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
+241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
+2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
+2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
+2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
+2423;OPEN BOX;So;0;ON;;;;;N;;;;;
+2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
+2440;OCR HOOK;So;0;ON;;;;;N;;;;;
+2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
+2442;OCR FORK;So;0;ON;;;;;N;;;;;
+2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
+2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
+2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
+2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
+2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
+2448;OCR DASH;So;0;ON;;;;;N;;;;;
+2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
+244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
+2460;CIRCLED DIGIT ONE;No;0;EN;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;EN;<circle> 0030;;0;0;N;;;;;
+2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
+2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
+2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
+2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
+2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
+2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
+2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
+2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
+2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
+2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
+250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
+250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
+250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
+250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
+250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
+250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
+2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
+2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
+2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
+2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
+2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
+2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
+2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
+2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
+2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
+2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
+251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
+251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
+251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
+251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
+251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
+251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
+2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
+2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
+2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
+2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
+2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
+2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
+2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
+2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
+2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
+252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
+252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
+252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
+252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
+252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
+252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
+2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
+2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
+2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
+2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
+2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
+2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
+2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
+2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
+2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
+2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
+253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
+253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
+253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
+253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
+253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
+253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
+2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
+2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
+2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
+2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
+2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
+2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
+2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
+2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
+2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
+254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
+254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
+254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
+254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
+254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
+254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
+2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
+2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
+2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
+2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
+2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
+2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
+2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
+2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
+2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
+2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
+255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
+255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
+255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
+255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
+255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
+255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
+2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
+2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
+2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
+2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
+2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
+2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
+2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
+2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
+2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
+2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
+256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
+256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
+256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
+256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
+256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
+256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
+2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
+2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
+2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
+2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
+2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
+2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
+2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
+2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
+2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
+2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
+257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
+257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
+257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
+257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
+257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
+257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
+2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
+2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
+2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
+258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
+258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
+2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
+2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+2593;DARK SHADE;So;0;ON;;;;;N;;;;;
+2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
+25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
+25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
+25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
+25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
+25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
+25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
+25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
+25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
+25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
+25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
+25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
+25B7;WHITE RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
+25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
+25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
+25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
+25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
+25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
+25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
+25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
+25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
+25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
+25C1;WHITE LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
+25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
+25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
+25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
+25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
+25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
+25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+25C9;FISHEYE;So;0;ON;;;;;N;;;;;
+25CA;LOZENGE;So;0;ON;;;;;N;;;;;
+25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
+25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
+25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
+25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
+25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
+25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
+25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
+25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
+25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+2601;CLOUD;So;0;ON;;;;;N;;;;;
+2602;UMBRELLA;So;0;ON;;;;;N;;;;;
+2603;SNOWMAN;So;0;ON;;;;;N;;;;;
+2604;COMET;So;0;ON;;;;;N;;;;;
+2605;BLACK STAR;So;0;ON;;;;;N;;;;;
+2606;WHITE STAR;So;0;ON;;;;;N;;;;;
+2607;LIGHTNING;So;0;ON;;;;;N;;;;;
+2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
+2609;SUN;So;0;ON;;;;;N;;;;;
+260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
+260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
+260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
+260D;OPPOSITION;So;0;ON;;;;;N;;;;;
+260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
+260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
+2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
+2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
+2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
+2613;SALTIRE;So;0;ON;;;;;N;;;;;
+261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
+261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
+2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
+2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
+2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
+2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
+2624;CADUCEUS;So;0;ON;;;;;N;;;;;
+2625;ANKH;So;0;ON;;;;;N;;;;;
+2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
+2627;CHI RHO;So;0;ON;;;;;N;;;;;
+2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
+2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
+262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
+262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
+262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
+262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
+262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
+262F;YIN YANG;So;0;ON;;;;;N;;;;;
+2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
+2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
+2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
+2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
+2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
+2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
+2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
+2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
+2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
+263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
+263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
+263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263F;MERCURY;So;0;ON;;;;;N;;;;;
+2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
+2641;EARTH;So;0;ON;;;;;N;;;;;
+2642;MALE SIGN;So;0;ON;;;;;N;;;;;
+2643;JUPITER;So;0;ON;;;;;N;;;;;
+2644;SATURN;So;0;ON;;;;;N;;;;;
+2645;URANUS;So;0;ON;;;;;N;;;;;
+2646;NEPTUNE;So;0;ON;;;;;N;;;;;
+2647;PLUTO;So;0;ON;;;;;N;;;;;
+2648;ARIES;So;0;ON;;;;;N;;;;;
+2649;TAURUS;So;0;ON;;;;;N;;;;;
+264A;GEMINI;So;0;ON;;;;;N;;;;;
+264B;CANCER;So;0;ON;;;;;N;;;;;
+264C;LEO;So;0;ON;;;;;N;;;;;
+264D;VIRGO;So;0;ON;;;;;N;;;;;
+264E;LIBRA;So;0;ON;;;;;N;;;;;
+264F;SCORPIUS;So;0;ON;;;;;N;;;;;
+2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
+2651;CAPRICORN;So;0;ON;;;;;N;;;;;
+2652;AQUARIUS;So;0;ON;;;;;N;;;;;
+2653;PISCES;So;0;ON;;;;;N;;;;;
+2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
+2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
+2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
+2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
+2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
+265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
+265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
+265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
+265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
+265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
+2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
+2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
+2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
+2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
+2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
+2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
+2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
+2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
+266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
+266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
+266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
+266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
+266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
+266F;MUSIC SHARP SIGN;So;0;ON;;;;;N;SHARP;;;;
+2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
+2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
+2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
+2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
+2708;AIRPLANE;So;0;ON;;;;;N;;;;;
+2709;ENVELOPE;So;0;ON;;;;;N;;;;;
+270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
+270D;WRITING HAND;So;0;ON;;;;;N;;;;;
+270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+270F;PENCIL;So;0;ON;;;;;N;;;;;
+2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+2711;WHITE NIB;So;0;ON;;;;;N;;;;;
+2712;BLACK NIB;So;0;ON;;;;;N;;;;;
+2713;CHECK MARK;So;0;ON;;;;;N;;;;;
+2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
+2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2717;BALLOT X;So;0;ON;;;;;N;;;;;
+2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
+2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
+271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
+271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
+271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
+271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
+271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
+271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
+2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
+2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
+2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
+272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
+272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
+272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
+2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
+2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
+2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
+273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
+273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
+2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
+2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2747;SPARKLE;So;0;ON;;;;;N;;;;;
+2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
+2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
+2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
+2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
+2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
+2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
+2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
+2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
+2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
+2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
+2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
+277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
+277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
+277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
+277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
+277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
+277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
+2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
+2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
+2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
+2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
+2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
+2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
+2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
+2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
+278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
+278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
+278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
+278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
+278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
+278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
+2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
+2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
+2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
+2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
+2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
+279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
+279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
+279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
+279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
+279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
+279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
+27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
+27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
+27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
+27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
+27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
+27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
+27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
+27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
+27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
+27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
+27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
+27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
+27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
+27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
+27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
+27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
+27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
+27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
+3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
+3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
+3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
+3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
+3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
+3005;IDEOGRAPHIC ITERATION MARK;Lm;0;ON;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
+3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
+3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
+300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
+300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
+300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
+300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
+300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
+300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
+3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
+3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
+3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
+3013;GETA MARK;So;0;ON;;;;;N;;;;;
+3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
+3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
+3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
+3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
+3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
+3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
+301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
+301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
+301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
+301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
+3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
+3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
+3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
+3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
+3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
+3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
+3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
+3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
+3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
+302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;ON;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;ON;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;ON;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;ON;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;ON;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;ON;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;ON;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;ON;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;ON;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;ON;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;ON;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
+303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
+3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
+3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
+3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
+3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
+3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
+304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
+304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
+304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
+304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
+304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
+3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
+3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
+3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
+3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
+3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
+3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
+3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
+3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
+3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
+3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
+305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
+305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
+305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
+305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
+305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
+305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
+3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
+3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
+3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
+3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
+3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
+3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
+3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
+3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
+3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
+306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
+306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
+306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
+306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
+306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
+306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
+3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
+3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
+3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
+3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
+3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
+3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
+3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
+3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
+3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
+3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
+307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
+307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
+307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
+307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
+307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
+307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
+3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
+3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
+3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
+3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
+3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
+3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
+3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
+308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
+308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
+308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
+308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
+308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
+3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
+3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
+3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
+3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
+3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;ON;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;ON;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
+30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
+30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
+30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
+30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
+30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
+30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
+30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
+30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
+30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
+30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
+30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
+30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
+30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
+30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
+30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
+30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
+30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
+30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
+30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
+30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
+30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
+30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
+30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
+30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
+30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
+30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
+30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
+30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
+30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
+30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
+30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
+30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
+30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
+30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
+30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
+30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
+30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
+30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
+30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
+30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
+30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
+30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
+30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
+30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
+30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
+30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
+30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
+30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
+30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
+30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
+30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
+30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
+30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
+30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
+30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
+30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
+30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
+30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
+30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
+30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
+30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
+30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
+30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
+30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
+30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
+30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
+30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
+30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
+30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
+30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
+30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
+30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
+30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
+30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
+30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
+30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
+30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
+30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
+30FB;KATAKANA MIDDLE DOT;Pc;0;L;;;;;N;;;;;
+30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
+30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
+3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
+3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
+3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
+3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
+3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
+310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
+310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
+310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
+310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
+310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
+310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
+3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
+3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
+3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
+3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
+3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
+3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
+3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
+3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
+3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
+3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
+311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
+311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
+311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
+311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
+311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
+311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
+3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
+3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
+3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
+3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
+3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
+3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
+3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
+3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
+3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
+3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
+312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
+312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
+312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;;N;KAERITEN SI;Kaeriten;;;
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
+3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;;N;;;;;
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Unassigned High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Unassigned High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
+F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
+F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
+F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
+F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
+F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
+F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
+F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
+F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
+F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
+F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
+F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
+F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
+F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
+F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
+F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
+F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
+F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
+F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
+F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
+F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
+F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
+F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
+F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
+F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
+F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
+F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
+F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
+F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
+F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
+F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
+F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
+F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
+F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
+F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
+F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
+F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
+F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
+F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
+F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
+F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
+F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
+F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
+F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
+F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
+F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
+F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
+F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
+F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
+F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
+F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
+F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
+F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
+F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
+F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
+F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
+F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
+F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
+F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
+F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
+F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
+F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
+F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
+F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
+F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
+F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
+F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
+F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
+F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
+F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
+F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
+F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
+F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
+F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
+F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
+F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
+F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
+F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
+F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
+F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
+F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
+F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
+F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
+F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;96FB;;;;N;;;;;
+F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
+F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
+F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
+F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
+F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
+F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
+F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
+F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
+F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
+F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
+F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
+F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
+F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
+F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
+F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
+F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
+F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
+F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
+F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
+F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
+F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
+F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
+F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
+F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
+F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
+F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;;
+F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
+F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
+F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
+F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
+F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
+F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
+F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
+F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;;
+F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
+F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
+F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
+F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
+F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;;
+F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
+F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
+F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
+F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
+F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
+F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
+F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
+F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
+F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
+F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
+F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
+F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
+F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
+F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
+F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
+F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
+F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
+F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
+F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
+F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
+F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
+F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
+F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
+F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
+F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
+F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
+F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
+F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
+F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
+F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
+F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
+F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
+F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
+F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
+F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
+F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
+F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
+F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
+F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
+F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
+F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
+F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
+F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
+F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
+F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
+F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
+F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
+F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
+F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
+F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
+F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
+F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
+F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
+F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
+F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
+F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
+F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
+F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;;
+F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
+F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
+F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
+F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
+F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
+F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
+F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
+F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
+F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
+F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
+F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
+F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
+F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
+F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
+F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
+F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
+F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
+F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
+F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
+F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
+F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
+F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
+F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
+F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
+F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
+F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
+F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
+F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
+F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
+F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
+F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;;
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;;
+F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
+F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
+F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
+F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
+F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
+F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
+F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
+F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
+F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
+F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
+F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
+F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
+F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
+F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
+F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
+F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
+F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
+F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
+F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
+F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
+F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
+F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
+F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
+F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
+F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
+F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
+F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
+F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
+F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
+F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
+F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
+F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
+F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
+F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
+F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
+F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
+F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
+F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
+F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
+F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
+F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
+F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;;
+F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
+F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
+FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
+FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
+FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
+FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
+FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
+FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
+FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
+FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
+FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
+FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
+FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
+FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
+FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
+FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
+FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
+FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
+FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
+FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
+FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
+FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
+FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
+FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
+FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
+FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
+FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
+FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
+FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
+FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
+FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
+FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
+FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
+FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;;;;
+FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
+FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
+FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
+FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;;;;
+FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
+FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
+FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
+FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
+FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
+FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
+FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
+FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
+FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
+FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
+FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;ON;;;;;N;HEBREW POINT VARIKA;;;;
+FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
+FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ET;<font> 002B;;;;N;;;;;
+FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
+FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
+FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
+FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
+FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
+FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
+FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
+FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
+FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
+FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
+FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
+FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
+FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
+FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
+FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
+FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
+FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
+FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
+FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
+FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
+FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
+FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
+FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
+FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
+FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
+FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
+FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
+FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
+FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
+FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
+FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
+FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;R;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;R;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;R;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;R;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;R;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;R;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;R;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;R;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;R;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;R;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;R;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;R;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;R;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;R;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;R;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;R;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;R;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;R;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;R;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;R;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;R;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;R;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;R;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;R;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;R;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;R;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;R;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;R;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;R;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;R;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;R;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;R;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;R;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;R;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;R;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;R;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;R;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;R;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;R;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;R;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;R;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;R;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;R;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;R;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;R;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;R;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;R;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;R;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;R;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;R;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;R;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;R;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;R;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;R;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;R;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;R;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;R;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;R;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;R;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;R;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;R;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;R;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;R;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;R;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;R;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;R;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;R;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;R;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;R;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;R;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;R;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;R;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;R;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;R;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;R;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;R;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;R;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;R;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;R;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;R;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;R;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;R;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;R;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;R;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;R;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;R;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;R;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;R;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;R;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;R;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;R;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;R;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;R;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;R;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;R;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;R;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;R;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;R;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;R;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;R;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;R;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;R;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;R;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;R;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;R;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;R;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;R;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;R;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;R;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;R;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;R;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;R;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;R;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;R;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;R;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;R;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;R;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;R;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;R;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;R;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;R;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;R;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;R;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;R;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;R;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;R;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;R;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;R;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;R;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;R;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;R;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;R;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;R;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;R;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;R;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;R;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;R;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;R;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064C;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064D;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064E;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064F;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 0650;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;R;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;R;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;R;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;R;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;R;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;R;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;R;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;R;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;R;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;R;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;R;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;R;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;R;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;R;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;R;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;R;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;R;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;R;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;R;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;R;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;R;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;R;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;R;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;R;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;R;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;R;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;R;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;R;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;R;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;R;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;R;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;R;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;R;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;R;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;R;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;R;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;R;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;R;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;R;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;R;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;R;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;R;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;R;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;R;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;R;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 064E;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 064F;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 0650;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;R;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;R;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;R;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;R;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;R;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;R;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;R;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;R;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;R;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;R;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;R;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;R;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;R;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;R;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;R;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;R;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;R;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;R;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;R;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;R;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;R;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;R;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;R;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;R;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;R;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;R;<isolated> 0627 064B;;;;N;;;;;
+FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
+FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;R;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;R;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;R;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;R;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;R;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;R;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;R;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;R;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;R;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;R;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;R;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;R;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
+FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;R;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;ON;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;ON;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;ON;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;ON;;;;;N;;;;;
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
+FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
+FE62;SMALL PLUS SIGN;Sm;0;ET;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
+FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;R;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;R;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;R;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;R;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;R;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;R;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;R;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;R;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;R;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;R;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;R;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;R;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;R;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;R;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;R;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;R;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;R;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;R;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;R;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;R;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;R;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;R;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;R;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;R;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;R;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;R;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;R;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;R;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;R;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;R;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;R;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;R;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;R;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;R;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;R;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;R;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;R;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;R;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;R;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;R;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;R;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;R;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;R;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;R;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;R;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;R;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;R;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;R;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;R;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;R;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;R;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;R;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;R;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;R;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;R;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;R;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;R;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;R;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;R;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;R;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;R;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;R;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;R;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;R;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;R;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;R;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;R;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;R;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;R;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;R;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;R;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;R;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;R;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;R;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;R;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;R;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;R;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;R;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;R;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;R;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;R;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;R;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;R;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;R;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;R;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;R;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;R;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;R;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;R;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;R;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;R;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;R;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;R;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;R;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;R;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;R;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;R;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;R;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;R;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;R;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;R;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;R;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;R;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;R;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;R;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;R;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;R;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;R;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;R;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;R;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;R;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;R;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;R;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;R;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;R;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;R;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;R;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;R;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;R;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;R;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;R;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;R;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;ON;;;;;N;BYTE ORDER MARK;;;;
+FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;N;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;N;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
+FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;N;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;N;;;;;
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;N;FULLWIDTH OPENING SQUARE BRACKET;;;;
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;N;FULLWIDTH CLOSING SQUARE BRACKET;;;;
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;N;FULLWIDTH OPENING CURLY BRACKET;;;;
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;N;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;N;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;N;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;0;L;<narrow> 30FB;;;;N;;;;;
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;ON;<narrow> 3099;;;;N;;;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;ON;<narrow> 309A;;;;N;;;;;
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;;;;
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;Sm;0;ON;<narrow> 2502;;;;N;;;;;
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
diff --git a/src/com/ibm/icu/dev/data/unicode/UnicodeData-3.0.0.txt b/src/com/ibm/icu/dev/data/unicode/UnicodeData-3.0.0.txt
new file mode 100755
index 0000000..6a54d3d
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/UnicodeData-3.0.0.txt
@@ -0,0 +1,10617 @@
+0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
+0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
+0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;HORIZONTAL TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED;;;;
+000B;<control>;Cc;0;S;;;;;N;VERTICAL TABULATION;;;;
+000C;<control>;Cc;0;WS;;;;;N;FORM FEED;;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN;;;;
+000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;B;;;;;N;FILE SEPARATOR;;;;
+001D;<control>;Cc;0;B;;;;;N;GROUP SEPARATOR;;;;
+001E;<control>;Cc;0;B;;;;;N;RECORD SEPARATOR;;;;
+001F;<control>;Cc;0;S;;;;;N;UNIT SEPARATOR;;;;
+0020;SPACE;Zs;0;WS;;;;;N;;;;;
+0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
+0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
+0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
+0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
+0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
+0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
+0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
+002A;ASTERISK;Po;0;ON;;;;;N;;;;;
+002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;;
+0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
+0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
+0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
+0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
+0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
+0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
+0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
+0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
+0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
+0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
+003A;COLON;Po;0;CS;;;;;N;;;;;
+003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
+003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
+0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
+0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
+0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
+0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
+0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
+0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
+0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
+0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
+0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
+0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
+004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
+004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
+004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
+004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
+004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
+004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
+0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
+0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
+0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
+0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
+0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
+0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
+0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
+0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
+0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
+0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
+005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
+005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
+005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
+005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
+005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
+0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
+0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
+0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
+0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
+0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
+0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
+0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
+0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
+0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
+006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
+006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
+006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
+006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
+006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
+006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
+0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
+0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
+0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
+0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
+0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
+0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
+0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
+0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
+0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
+0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
+007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
+007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
+007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
+007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
+007E;TILDE;Sm;0;ON;;;;;N;;;;;
+007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;BN;;;;;N;;;;;
+0081;<control>;Cc;0;BN;;;;;N;;;;;
+0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
+0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
+0084;<control>;Cc;0;BN;;;;;N;INDEX;;;;
+0085;<control>;Cc;0;B;;;;;N;NEXT LINE;;;;
+0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
+0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
+0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
+0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
+008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
+008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE DOWN;;;;
+008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE UP;;;;
+008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
+008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
+008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
+0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
+0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
+0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
+0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
+0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
+0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
+0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
+0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
+0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
+0099;<control>;Cc;0;BN;;;;;N;;;;;
+009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
+009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
+009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
+009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
+009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
+009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
+00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
+00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
+00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
+00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
+00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
+00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
+00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
+00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
+00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
+00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
+00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
+00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;2;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
+00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
+00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;1;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;;
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
+00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
+00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
+00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
+00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
+00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
+00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
+00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6;
+00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
+00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
+00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
+00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
+00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
+00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
+00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
+00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
+00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
+00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
+00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
+00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
+00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
+00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
+00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
+00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
+00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
+00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
+00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
+00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
+00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
+00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
+00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
+00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
+00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
+00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
+00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
+00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
+00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
+00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
+00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6
+00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
+00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
+00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
+00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
+00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
+00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
+00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
+00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
+00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
+00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
+00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
+00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
+00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
+00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
+00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
+00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
+00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
+00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
+00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
+00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
+00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
+00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
+00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
+00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
+0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
+0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
+0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
+0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
+0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
+0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
+0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
+0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
+0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
+0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
+010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
+010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
+010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
+010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
+010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
+010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
+0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
+0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
+0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
+0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
+0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
+0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
+0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
+0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
+0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
+0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
+011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
+011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
+011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
+011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
+011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
+011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
+0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
+0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
+0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
+0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
+0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
+0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
+0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
+0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
+0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
+0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
+012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
+012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
+012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
+012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
+012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
+012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
+0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
+0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
+0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
+0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
+0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
+0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
+0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
+0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
+0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
+013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
+013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
+013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
+013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
+013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
+013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
+0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
+0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
+0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
+0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
+0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
+0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
+0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
+0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
+0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
+014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
+014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
+014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
+014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
+0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
+0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
+0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
+0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
+0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
+0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
+0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
+0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
+0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
+0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
+015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
+015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
+015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
+015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
+015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F;
+015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E
+0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
+0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
+0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163;
+0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162
+0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
+0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
+0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
+0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
+0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
+0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
+016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
+016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
+016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
+016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
+016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
+016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
+0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
+0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
+0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
+0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
+0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
+0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
+0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
+0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
+0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
+0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
+017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
+017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
+017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
+017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
+017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
+017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
+0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;;
+0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
+0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
+0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
+0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
+0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
+0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
+0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
+0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
+0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256;
+018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
+018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
+018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
+018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
+018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
+018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
+0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
+0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
+0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
+0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
+0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
+0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6
+0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
+0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
+0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
+0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
+019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;;;
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
+019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
+019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;;;
+019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275;
+01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
+01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
+01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2
+01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
+01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
+01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;;;0280;
+01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
+01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
+01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
+01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;
+01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
+01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
+01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
+01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
+01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
+01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
+01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
+01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
+01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
+01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
+01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
+01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
+01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
+01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
+01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
+01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
+01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
+01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
+01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
+01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7
+01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
+01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
+01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
+01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
+01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
+01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
+01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
+01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
+01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
+01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
+01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
+01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
+01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
+01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
+01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
+01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
+01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
+01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
+01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
+01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
+01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
+01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
+01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
+01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
+01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
+01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
+01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2
+01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
+01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
+01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
+01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
+01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
+01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
+01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
+01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
+01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
+01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
+01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
+01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
+01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
+01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
+01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
+01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
+01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;
+01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;
+01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;
+01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8
+01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
+01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
+01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC
+01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
+01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
+0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
+0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
+0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
+0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
+0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
+0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
+0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
+0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
+0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
+0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
+020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
+020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
+020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
+020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
+020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
+020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
+0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
+0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
+0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
+0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
+0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
+0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
+0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
+0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
+0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219;
+0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218
+021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B;
+021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A
+021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;
+021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C
+021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;
+021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E
+0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223;
+0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222
+0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225;
+0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224
+0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227;
+0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226
+0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229;
+0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228
+022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B;
+022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A
+022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D;
+022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C
+022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F;
+022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E
+0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231;
+0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230
+0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233;
+0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;;
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;;
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
+0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
+0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
+0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
+0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
+0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
+0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
+0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
+025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
+025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
+025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
+025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
+025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
+025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
+0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
+0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
+0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
+0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
+0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
+0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
+0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
+0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
+026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
+026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
+026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
+026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
+0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;;
+0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
+0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
+0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
+0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
+0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
+0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
+0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
+0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
+027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
+027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;;
+027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
+027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
+0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;;01A6;;01A6
+0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
+0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
+0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
+0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
+0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
+0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
+0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
+0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
+0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;;
+028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
+028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
+028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;;
+028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
+028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
+028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
+0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
+0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
+0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
+0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
+0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
+0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
+0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
+0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
+029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
+029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
+029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
+029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
+029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
+029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
+02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
+02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
+02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
+02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
+02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
+02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
+02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
+02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
+02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
+02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
+02B9;MODIFIER LETTER PRIME;Sk;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Sk;0;ON;;;;;N;;;;;
+02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
+02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
+02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
+02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
+02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
+02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
+02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
+02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
+02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EC;MODIFIER LETTER VOICING;Sk;0;ON;;;;;N;;;;;
+02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
+02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;Tonos;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399
+0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
+0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;
+034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;
+034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;
+034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;
+034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;
+0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;
+0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;;
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
+0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
+0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
+0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
+0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
+0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
+0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
+0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
+0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
+0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
+039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
+039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
+039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
+039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
+039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
+039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
+03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
+03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
+03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
+03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
+03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
+03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
+03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
+03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
+03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
+03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
+03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
+03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
+03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
+03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
+03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
+03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
+03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
+03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
+03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
+03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
+03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
+03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
+03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
+03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
+03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
+03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
+03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
+03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
+03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
+03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
+03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
+03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
+03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
+03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
+03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
+03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
+03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
+03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
+03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
+03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;;
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;
+03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;
+03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;
+03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;
+03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0
+03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
+03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
+03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
+03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
+03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
+03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
+03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
+03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
+03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
+03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
+03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
+03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
+03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
+03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
+03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03A3;;03A3
+03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
+0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450;
+0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
+0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
+0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
+0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
+0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
+0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
+0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
+0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
+0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
+040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
+040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
+040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
+040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D;
+040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
+040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
+0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
+0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
+0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
+0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
+0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
+0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
+0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
+0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
+0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
+0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
+041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
+041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
+041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
+041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
+041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
+041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
+0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
+0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
+0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
+0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
+0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
+0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
+0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
+0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
+0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
+0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
+042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
+042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
+042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
+042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
+042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
+042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
+0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
+0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
+0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
+0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
+0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
+0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
+0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
+0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
+0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
+0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
+043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
+043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
+043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
+043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
+043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
+043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
+0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
+0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
+0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
+0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
+0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
+0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
+0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
+0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
+0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
+0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
+044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
+044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
+044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
+044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
+044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
+044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
+0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400
+0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
+0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
+0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
+0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
+0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
+0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
+0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
+0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
+0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
+045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
+045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
+045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
+045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D
+045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
+045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
+0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
+0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
+0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
+0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
+0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
+0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
+0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
+0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
+0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
+0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
+046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
+046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
+046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
+046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
+046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
+046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
+0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
+0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
+0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
+0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
+0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
+0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
+0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
+0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
+0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
+0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
+047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
+047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
+047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
+047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
+047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
+047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
+0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
+0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
+0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
+0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;;
+0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;
+048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C
+048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;
+048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E
+0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
+0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
+0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
+0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
+0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
+0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
+0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
+0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
+0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
+0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
+049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
+049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
+049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
+049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
+049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
+049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
+04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
+04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
+04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
+04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
+04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
+04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
+04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
+04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
+04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
+04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
+04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
+04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
+04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
+04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
+04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
+04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
+04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
+04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
+04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
+04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
+04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
+04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
+04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
+04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
+04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
+04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
+04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
+04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
+04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
+04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
+04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;;
+04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
+04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
+04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
+04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
+04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
+04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
+04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
+04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
+04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
+04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
+04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
+04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
+04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
+04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
+04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
+04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
+04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
+04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
+04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
+04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
+04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
+04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
+04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
+04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
+04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
+04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
+04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
+04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
+04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;
+04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC
+04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
+04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
+04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
+04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
+04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
+04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
+04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
+04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
+04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
+04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
+0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
+0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
+0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
+0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
+0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
+0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
+0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
+0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
+0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
+053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
+053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
+053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
+053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
+053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
+053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
+0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
+0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
+0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
+0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
+0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
+0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
+0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
+0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
+0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
+0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
+054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
+054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
+054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
+054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
+054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
+054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
+0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
+0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
+0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
+0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
+0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
+0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
+0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
+0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
+055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
+055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
+055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
+055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
+055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
+0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
+0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
+0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
+0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
+0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
+0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
+0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
+0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
+056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
+056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
+056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
+056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
+056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
+056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
+0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
+0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
+0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
+0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
+0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
+0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
+0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
+0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
+0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
+0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
+057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
+057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
+057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
+057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
+057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
+057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
+0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
+0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
+0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
+0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
+0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
+0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
+0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
+0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
+058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;;
+0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;;
+05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;;
+05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;;
+05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;;
+05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
+05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
+05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
+05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
+05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
+05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
+05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
+05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
+05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
+05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
+05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
+05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
+05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
+05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
+05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
+05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
+05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
+05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
+05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
+05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
+05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
+05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
+05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
+05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
+05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
+05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
+05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
+0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;;
+0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;
+0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
+066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Me;0;NSM;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;
+06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
+06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
+06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
+06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
+06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
+06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
+06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
+06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
+06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
+06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
+06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;;
+06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;;
+0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;;
+0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;;
+0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;;
+0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;;
+0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;;
+070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;;
+070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;;
+070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;;
+070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;;
+0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;;
+0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;;
+0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;;
+0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;;
+0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;;
+0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;;
+0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;;
+0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;;
+0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;;
+071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;;
+071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;;
+071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;;
+071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;;
+071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;;
+0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;;
+0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;;
+0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;;
+0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;;
+0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;;
+0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;;
+0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;;
+0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;;
+0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;;
+0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;;
+072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;;
+072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;;
+072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;;
+0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;;
+0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;;
+073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;;
+073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;;
+0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;;
+0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;;
+0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;;
+0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;;
+074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;;
+0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;
+0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;
+0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;
+0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;
+0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;
+0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;
+0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;
+0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;
+078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;
+078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;
+078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;
+078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;
+078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;
+078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;
+0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;
+0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;
+0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;
+0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;
+0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;
+0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;
+0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;
+0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;
+0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;
+079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;
+079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;
+079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;
+079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;
+079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;
+079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;
+07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;
+07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;
+07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;
+07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;
+07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;
+07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;
+07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;
+07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;
+07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;
+07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;
+07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;
+07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;
+07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;
+07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;
+07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;
+07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;
+07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
+0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
+0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
+0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
+0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
+090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
+090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
+090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
+090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
+0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
+0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
+0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
+0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
+0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
+0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
+0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
+0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
+091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
+091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
+0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
+0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
+0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
+0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
+092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
+092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
+092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
+092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
+0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
+0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
+0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
+0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
+0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
+0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
+0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
+093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
+094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
+0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
+095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
+095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
+095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
+095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
+095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
+095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
+0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
+0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
+0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
+0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
+0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
+0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
+098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
+098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
+0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
+0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
+0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
+0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
+0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
+0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
+099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
+099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
+099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
+099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
+099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
+099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
+09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
+09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
+09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
+09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
+09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
+09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
+09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
+09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
+09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
+09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
+09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
+09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
+09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
+09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;;
+09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
+09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
+09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
+09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
+09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
+09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
+09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
+09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
+09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
+09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
+09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
+09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
+0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
+0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
+0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
+0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
+0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
+0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
+0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
+0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
+0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
+0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
+0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
+0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
+0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
+0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
+0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
+0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
+0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
+0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
+0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
+0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;;
+0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
+0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;;
+0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
+0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
+0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
+0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
+0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
+0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
+0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
+0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
+0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
+0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
+0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
+0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
+0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
+0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
+0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
+0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
+0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
+0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
+0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
+0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
+0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
+0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
+0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
+0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
+0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
+0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
+0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
+0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
+0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
+0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
+0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
+0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
+0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
+0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
+0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
+0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
+0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
+0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
+0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
+0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
+0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
+0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
+0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
+0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
+0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
+0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
+0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
+0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
+0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
+0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
+0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
+0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
+0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
+0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
+0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
+0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;;
+0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
+0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
+0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
+0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
+0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
+0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
+0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
+0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
+0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
+0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
+0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
+0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
+0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
+0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
+0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
+0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
+0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
+0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
+0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
+0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
+0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
+0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
+0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
+0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
+0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
+0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
+0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
+0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
+0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
+0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
+0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
+0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
+0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
+0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
+0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
+0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
+0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
+0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
+0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
+0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
+0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
+0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
+0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
+0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
+0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
+0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
+0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
+0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
+0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
+0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
+0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
+0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
+0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
+0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
+0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
+0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
+0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
+0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
+0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
+0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
+0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
+0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
+0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
+0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
+0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
+0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
+0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
+0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
+0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
+0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
+0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
+0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
+0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
+0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
+0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
+0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
+0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
+0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
+0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
+0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
+0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
+0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
+0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
+0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
+0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
+0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
+0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
+0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
+0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
+0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
+0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
+0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
+0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
+0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
+0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
+0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
+0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
+0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
+0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
+0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
+0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
+0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
+0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
+0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
+0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0CC6;KANNADA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
+0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
+0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
+0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
+0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
+0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
+0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
+0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
+0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
+0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
+0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
+0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
+0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
+0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
+0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
+0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
+0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
+0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
+0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
+0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
+0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
+0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
+0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
+0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
+0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
+0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
+0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
+0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
+0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
+0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
+0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
+0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
+0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
+0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
+0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
+0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
+0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
+0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
+0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
+0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
+0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
+0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
+0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
+0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;
+0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;
+0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;
+0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;
+0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;
+0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;
+0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;
+0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;
+0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;
+0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;
+0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;
+0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;
+0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;
+0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;
+0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;
+0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;
+0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;
+0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;
+0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;
+0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;
+0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;
+0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;
+0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;
+0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;
+0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;
+0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;
+0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;
+0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;
+0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;
+0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;
+0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;
+0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;
+0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
+0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
+0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
+0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
+0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
+0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
+0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
+0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
+0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
+0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
+0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
+0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
+0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
+0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
+0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
+0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
+0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
+0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
+0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
+0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
+0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
+0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
+0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
+0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
+0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
+0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
+0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
+0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
+0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
+0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
+0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
+0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
+0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
+0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
+0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
+0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
+0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
+0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
+0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
+0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
+0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
+0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
+0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
+0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
+0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
+0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
+0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
+0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
+0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;;
+0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
+0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
+0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
+0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
+0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
+0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
+0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
+0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
+0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
+0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
+0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
+0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
+0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
+0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
+0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
+0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
+0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
+0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
+0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
+0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
+0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
+0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
+0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
+0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
+0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
+0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
+0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
+0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
+0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
+0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
+0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
+0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
+0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
+0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
+0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
+0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
+0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
+0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
+0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
+0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
+0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
+0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
+0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
+0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;;
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;;
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;;
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;;
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
+0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;;
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;;
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
+0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;;
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;TIBETAN RIGHT BRACE;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;;
+0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
+0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
+0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
+0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
+0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
+0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
+0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
+0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;
+0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
+0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
+0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
+0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
+0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
+0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
+0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
+0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
+0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
+0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
+0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
+0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
+0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
+0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
+0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
+0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;
+0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
+0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;;
+0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
+0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;
+0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
+0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
+0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
+0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
+0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
+0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;;
+0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
+0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
+0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
+0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;
+0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;;
+0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;;
+0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;;
+0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;;
+0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;;
+0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;
+0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;
+0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;;
+0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;;
+0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;;
+0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;;
+0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;;
+0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;;
+0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;;
+0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;;
+0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;;
+0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;;
+0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;;
+0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;;;;
+1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;;
+1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;;
+1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;;
+1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;;
+1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;;
+1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;;
+1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;;
+1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;;
+1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;;
+1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;;
+100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;;
+100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;;
+100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;;
+100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;;
+100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;;
+100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;;
+1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;;
+1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;;
+1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;;
+1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;;
+1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;;
+1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;;
+1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;;
+1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;;
+1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;;
+1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;;
+101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;;
+101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;;
+101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;;
+101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;;
+101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;;
+101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;;
+1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;;
+1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;;
+1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;;
+1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;;
+1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;;
+1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;;
+1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;;
+1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
+102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
+102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;;
+1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;;
+104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;;
+104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;;
+104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;;
+104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;;
+104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;;
+1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;;
+1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;;
+1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;;
+10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;;
+1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;;
+1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
+1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;;
+1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;;
+1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;;
+1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
+1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;;
+120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
+120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;;
+1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;;
+1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;;
+1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;;
+1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;;
+1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;;
+1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;;
+1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;;
+1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;;
+1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;;
+121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
+121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;;
+1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;;
+1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;;
+1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;;
+1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;;
+1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;;
+1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;;
+1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;;
+1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;;
+1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;;
+122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;;
+122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;;
+122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;;
+1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;;
+1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
+1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;;
+1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
+123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;;
+123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
+123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;;
+1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;;
+1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;;
+1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;;
+1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;;
+1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;;
+124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;;
+124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;;
+124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;;
+124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;;
+1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;;
+1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;;
+1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;;
+1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;;
+1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;;
+1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;;
+1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;;
+1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;;
+125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;;
+125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;;
+125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;;
+125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;;
+1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;;
+1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
+1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;;
+1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;;
+126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
+126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;;
+126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;;
+1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;;
+1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
+1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;;
+1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;;
+127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
+127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;;
+1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;;
+1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;;
+1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;;
+1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;;
+1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;;
+1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;;
+128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;;
+128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;;
+128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;;
+128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;;
+1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;;
+1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
+1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;;
+1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
+1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;;
+129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
+129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
+129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;;
+12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;;
+12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;;
+12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;;
+12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;;
+12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;;
+12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;;
+12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;;
+12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;;
+12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;;
+12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
+12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;;
+12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;;
+12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;;
+12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;;
+12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;;
+12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;;
+12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;;
+12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;;
+12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;;
+12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;;
+12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;;
+12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;;
+12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;;
+12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;;
+12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;;
+12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;;
+12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;;
+12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;;
+12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;;
+12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
+12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;;
+12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;;
+12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;;
+12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;;
+12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;;
+12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;;
+12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;;
+12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;;
+12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
+12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;;
+12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
+12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;;
+12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
+12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;;
+12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;;
+12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;;
+12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
+12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;;
+12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;;
+12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
+12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;;
+12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;;
+12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;;
+12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;
+1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;;
+1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;;
+1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
+1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;;
+1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;;
+1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;;
+130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
+130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;;
+1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;;
+1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;;
+1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;;
+1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;;
+1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;;
+131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;;
+131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;;
+1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;;
+1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;;
+1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;;
+1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
+1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;;
+1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;;
+1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;;
+1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;;
+132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;;
+132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;;
+132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;;
+1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;;
+1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;;
+1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;;
+1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;;
+1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;;
+1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;;
+1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;;
+1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;;
+1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;;
+1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;;
+133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;;
+133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;;
+133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;;
+133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;;
+133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;;
+133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;;
+1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;;
+1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;;
+1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;;
+1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;;
+1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;;
+1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;;
+1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;;
+1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;;
+134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
+134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;;
+134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;;
+1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;;
+1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
+1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;;
+1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;;
+1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;;
+1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;;
+135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;;
+1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;;
+1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;;
+1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;;
+1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;;
+1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;;
+1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;;
+1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;;
+1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1369;ETHIOPIC DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+136A;ETHIOPIC DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+136B;ETHIOPIC DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+136C;ETHIOPIC DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+136D;ETHIOPIC DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+136E;ETHIOPIC DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+136F;ETHIOPIC DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1370;ETHIOPIC DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1371;ETHIOPIC DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;;
+1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;;
+1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;;
+137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;;
+137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
+13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;;
+13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;;
+13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;;
+13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;;
+13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;;
+13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;;
+13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;;
+13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;;
+13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;;
+13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;;
+13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;;
+13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;;
+13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;;
+13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;;
+13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;;
+13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;;
+13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;;
+13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;;
+13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;;
+13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;;
+13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;;
+13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;;
+13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;;
+13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;;
+13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;;
+13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;;
+13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;;
+13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;;
+13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;;
+13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;;
+13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;;
+13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;;
+13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;;
+13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;;
+13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;;
+13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;;
+13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;;
+13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;;
+13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;;
+13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;;
+13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;;
+13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;;
+13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;;
+13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;;
+13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;;
+13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;;
+13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;;
+13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;;
+13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;;
+13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;;
+13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;;
+13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;;
+13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;;
+13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;;
+13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;;
+13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;;
+13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;;
+13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;;
+13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;;
+13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;;
+13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;;
+13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;;
+13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;;
+13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;;
+13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;;
+13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;;
+13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;;
+13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;;
+13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;;
+13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;;
+13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;;
+13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;;
+13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;;
+13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;;
+13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;;
+13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;;
+13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;;
+13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;;
+13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;;
+13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;;
+13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;;
+13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;;
+13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;;
+13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;;
+13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;;
+1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;
+1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;
+1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;
+1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;
+1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;
+1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;
+1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;
+1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;
+1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;
+140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;
+140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;
+140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;
+140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;
+140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;
+140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;
+1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;
+1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;
+1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;
+1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;
+1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;
+1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;
+1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;
+1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;
+1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;
+1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;
+141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;
+141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;
+141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;
+141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;
+141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;
+1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;
+1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;
+1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;
+1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;
+1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;
+1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;
+1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;
+1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;
+1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;
+1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;
+142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;
+142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;
+142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;
+142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;
+142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;
+142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;
+1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;
+1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;
+1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;
+1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;
+1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;
+1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;
+1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;
+1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;
+1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;
+1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;
+143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;
+143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;
+143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;
+143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;
+143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;
+143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;
+1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;
+1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;
+1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;
+1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;
+1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;
+1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;
+1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;
+1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;
+144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;
+144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;
+144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;
+144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;
+144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;
+144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;
+1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;
+1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;
+1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;
+1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;
+1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;
+1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;
+1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;
+1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;
+1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;
+1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;
+145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;
+145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;
+145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;
+145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;
+145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;
+145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;
+1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;
+1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;
+1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;
+1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;
+1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;
+1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;
+1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;
+1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;
+1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;
+1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;
+146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;
+146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;
+146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;
+146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;
+146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;
+146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;
+1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;
+1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;
+1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;
+1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;
+1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;
+1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;
+1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;
+1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;
+1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;
+1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;
+147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;
+147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;
+147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;
+147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;
+147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;
+147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;
+1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;
+1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;
+1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;
+1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;
+1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;
+1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;
+1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;
+1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;
+1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;
+1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;
+148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;
+148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;
+148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;
+148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;
+148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;
+148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;
+1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;
+1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;
+1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;
+1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;
+1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;
+1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;
+1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;
+1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;
+1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;
+1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;
+149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;
+149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;
+149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;
+149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;
+149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;
+149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;
+14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;
+14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;
+14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;
+14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;
+14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;
+14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;
+14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;
+14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;
+14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;
+14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;
+14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;
+14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;
+14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;
+14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;
+14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;
+14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;
+14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;
+14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;
+14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;
+14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;
+14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;
+14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;
+14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;
+14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;
+14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;
+14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;
+14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;
+14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;
+14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;
+14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;
+14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;
+14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;
+14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;
+14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;
+14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;
+14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;
+14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;
+14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;
+14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;
+14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;
+14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;
+14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;
+14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;
+14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;
+14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;
+14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;
+14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;
+14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;
+14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;
+14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;
+14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;
+14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;
+14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;
+14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;
+14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;
+14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;
+14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;
+14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;
+14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;
+14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;
+14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;
+14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;
+14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;
+14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;
+14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;
+14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;
+14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;
+14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;
+14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;
+14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;
+14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;
+14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;
+14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;
+14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;
+14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;
+14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;
+14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;
+14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;
+14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;
+14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;
+14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;
+14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;
+14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;
+14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;
+14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;
+14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;
+14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;
+14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;
+14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;
+14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;
+14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;
+14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;
+14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;
+14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;
+14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;
+14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;
+1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;
+1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;
+1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;
+1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;
+1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;
+1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;
+1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;
+1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;
+1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;
+1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;
+150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;
+150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;
+150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;
+150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;
+150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;
+150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;
+1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;
+1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;
+1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;
+1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;
+1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;
+1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;
+1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;
+1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;
+1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;
+1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;
+151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;
+151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;
+151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;
+151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;
+151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;
+151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;
+1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;
+1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;
+1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;
+1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;
+1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;
+1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;
+1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;
+1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;
+1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;
+1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;
+152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;
+152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;
+152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;
+152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;
+152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;
+152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;
+1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;
+1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;
+1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;
+1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;
+1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;
+1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;
+1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;
+1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;
+1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;
+1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;
+153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;
+153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;
+153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;
+153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;
+153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;
+153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;
+1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;
+1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;
+1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;
+1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;
+1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;
+1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;
+1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;
+1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;
+1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;
+1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;
+154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;
+154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;
+154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;
+154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;
+154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;
+154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;
+1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;
+1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;
+1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;
+1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;
+1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;
+1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;
+1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;
+1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;
+1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;
+1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;
+155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;
+155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;
+155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;
+155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;
+155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;
+155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;
+1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;
+1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;
+1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;
+1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;
+1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;
+1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;
+1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;
+1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;
+1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;
+1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;
+156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;
+156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;
+156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;
+156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;
+156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;
+156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;
+1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;
+1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;
+1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;
+1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;
+1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;
+1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;
+1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;
+1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;
+1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;
+1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;
+157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;
+157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;
+157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;
+157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;
+157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;
+157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;
+1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;
+1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;
+1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;
+1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;
+1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;
+1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;
+1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;
+1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;
+1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;
+1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;
+158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;
+158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;
+158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;
+158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;
+158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;
+158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;
+1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;
+1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;
+1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;
+1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;
+1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;
+1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;
+1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;
+1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;
+1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;
+1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;
+159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;
+159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;
+159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;
+159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;
+159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;
+159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;
+15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;
+15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;
+15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;
+15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;
+15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;
+15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;
+15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;
+15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;
+15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;
+15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;
+15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;
+15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;
+15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;
+15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;
+15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;
+15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;
+15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;
+15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;
+15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;
+15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;
+15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;
+15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;
+15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;
+15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;
+15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;
+15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;
+15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;
+15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;
+15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;
+15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;
+15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;
+15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;
+15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;
+15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;
+15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;
+15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;
+15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;
+15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;
+15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;
+15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;
+15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;
+15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;
+15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;
+15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;
+15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;
+15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;
+15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;
+15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;
+15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;
+15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;
+15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;
+15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;
+15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;
+15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;
+15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;
+15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;
+15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;
+15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;
+15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;
+15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;
+15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;
+15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;
+15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;
+15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;
+15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;
+15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;
+15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;
+15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;
+15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;
+15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;
+15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;
+15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;
+15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;
+15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;
+15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;
+15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;
+15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;
+15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;
+15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;
+15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;
+15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;
+15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;
+15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;
+15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;
+15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;
+15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;
+15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;
+15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;
+15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;
+15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;
+15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;
+15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;
+15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;
+15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;
+15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;
+15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;
+1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;
+1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;
+1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;
+1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;
+1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;
+1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;
+1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;
+1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;
+1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;
+1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;
+160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;
+160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;
+160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;
+160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;
+160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;
+160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;
+1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;
+1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;
+1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;
+1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;
+1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;
+1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;
+1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;
+1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;
+1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;
+1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;
+161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;
+161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;
+161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;
+161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;
+161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;
+161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;
+1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;
+1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;
+1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;
+1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;
+1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;
+1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;
+1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;
+1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;
+1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;
+1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;
+162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;
+162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;
+162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;
+162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;
+162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;
+162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;
+1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;
+1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;
+1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;
+1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;
+1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;
+1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;
+1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;
+1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;
+1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;
+1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;
+163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;
+163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;
+163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;
+163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;
+163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;
+163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;
+1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;
+1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;
+1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;
+1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;
+1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;
+1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;
+1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;
+1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;
+1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;
+1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;
+164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;
+164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;
+164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;
+164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;
+164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;
+164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;
+1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;
+1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;
+1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;
+1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;
+1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;
+1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;
+1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;
+1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;
+1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;
+1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;
+165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;
+165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;
+165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;
+165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;
+165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;
+165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;
+1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;
+1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;
+1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;
+1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;
+1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;
+1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;
+1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;
+1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;
+1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;
+1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;
+166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
+166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
+166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
+166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
+166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
+166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
+1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
+1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;
+1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;
+1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;
+1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;
+1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;
+1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;
+1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;
+1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;
+1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;
+1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;
+1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;
+1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;
+1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;
+1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;
+1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;
+1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;
+168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;
+168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;
+168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;
+168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;
+168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;
+168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;
+1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;
+1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;
+1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;
+1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;
+1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;
+1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;
+1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;
+1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;
+1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;
+1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;
+169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;
+169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;N;;;;;
+169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;;
+16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;
+16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;
+16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;
+16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;
+16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;
+16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;
+16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;
+16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;
+16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;
+16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;
+16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;
+16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;
+16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;
+16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;
+16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;
+16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;
+16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;
+16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;
+16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;
+16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;
+16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;
+16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;
+16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;
+16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;
+16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;
+16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;
+16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;
+16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;
+16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;
+16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;
+16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;
+16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;
+16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;
+16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;
+16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;
+16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;
+16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;
+16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;
+16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;
+16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;
+16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;
+16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;
+16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;
+16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;
+16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;
+16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;
+16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;
+16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;
+16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;
+16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;
+16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;
+16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;
+16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;
+16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;
+16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;
+16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;
+16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;
+16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;
+16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;
+16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;
+16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;
+16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;
+16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;
+16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;
+16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;
+16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;
+16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;
+16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;
+16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;
+16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;
+16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;
+16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EE;RUNIC ARLAUG SYMBOL;No;0;L;;;;17;N;;golden number 17;;;
+16EF;RUNIC TVIMADUR SYMBOL;No;0;L;;;;18;N;;golden number 18;;;
+16F0;RUNIC BELGTHOR SYMBOL;No;0;L;;;;19;N;;golden number 19;;;
+1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;
+1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;
+1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;
+1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;
+1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;
+1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;
+1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;
+1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;
+1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;
+1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;
+178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;
+178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;
+178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;
+178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;
+178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;
+178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;
+1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;
+1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;
+1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;
+1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;
+1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;
+1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;
+1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;
+1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;
+1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;
+1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;
+179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;
+179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;
+179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;
+179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;
+179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;
+179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;
+17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;
+17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;
+17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;
+17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;;;;
+17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;;;;
+17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;
+17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;
+17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;
+17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;
+17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;
+17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;
+17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;
+17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;
+17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;
+17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;
+17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;
+17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;
+17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;
+17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;
+17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;
+17B4;KHMER VOWEL INHERENT AQ;Mc;0;L;;;;;N;;;;;
+17B5;KHMER VOWEL INHERENT AA;Mc;0;L;;;;;N;;;;;
+17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;
+17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;
+17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;
+17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;
+17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;
+17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;
+17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;
+17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;
+17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;
+17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;
+17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;
+17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;
+17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;
+17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;
+17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;
+17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;
+17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;
+17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;;;;
+17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;
+17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;
+17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;
+17D7;KHMER SIGN LEK TOO;Po;0;L;;;;;N;;;;;
+17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;;
+17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;
+17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;
+17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;
+17DC;KHMER SIGN AVAKRAHASANYA;Po;0;L;;;;;N;;;;;
+17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;
+1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;
+1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;
+1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;
+1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;
+1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;
+1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;
+1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;
+1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;
+180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;
+180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Cf;0;BN;;;;;N;;;;;
+180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Cf;0;BN;;;;;N;;;;;
+180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Cf;0;BN;;;;;N;;;;;
+180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;;
+1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;;
+1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;;
+1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;;
+1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;;
+1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;;
+1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;;
+1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;;
+1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;;
+1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;;
+1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;;
+182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;;
+182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;;
+182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;;
+182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;;
+182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;;
+182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;;
+1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;;
+1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;;
+1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;;
+1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;;
+1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;;
+1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;;
+1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;;
+1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;;
+183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;;
+183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;;
+183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;;
+1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;;
+1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;;
+1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;;
+1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;;
+1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;;
+1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;;
+1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;;
+1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;;
+1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;;
+1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;;
+184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;;
+184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;;
+184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;;
+184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;;
+184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;;
+184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;;
+1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;;
+1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;;
+1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;;
+1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;;
+1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;;
+1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;;
+1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;;
+1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;;
+1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;;
+1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;;
+185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;;
+185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;;
+185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;;
+185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;;
+185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;;
+185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;;
+1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;;
+1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;;
+1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;;
+1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;;
+1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;;
+1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;;
+1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;;
+1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;;
+1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;;
+1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;;
+186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;;
+186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;;
+186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;;
+186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;;
+186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;;
+186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;;
+1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;;
+1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;;
+1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;;
+1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;;
+1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;;
+1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
+1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
+1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
+1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
+1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
+1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
+1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;
+1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;
+1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;;
+1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;;
+1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;
+1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;
+1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;
+188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;;
+188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;;
+188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;;
+188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;;
+1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;;
+1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;;
+1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;;
+1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;;
+1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;;
+189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;;
+189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;;
+189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;;
+18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;;
+18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;;
+18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;;
+18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;;
+18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;;
+18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;;
+18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;;
+1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
+1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
+1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
+1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
+1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
+1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
+1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
+1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
+1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
+1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
+1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
+1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
+1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
+1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
+1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
+1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
+1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
+1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
+1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
+1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
+1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
+1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
+1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
+1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
+1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
+1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
+1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
+1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
+1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C
+1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
+1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
+1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
+1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
+1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
+1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
+1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
+1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
+1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
+1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
+1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
+1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
+1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
+1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
+1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
+1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
+1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
+1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
+1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
+1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
+1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
+1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
+1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
+1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
+1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
+1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
+1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
+1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
+1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
+1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
+1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
+1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
+1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
+1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
+1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
+1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
+1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
+1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
+1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
+1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
+1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
+1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
+1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
+1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
+1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
+1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
+1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
+1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
+1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
+1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
+1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
+1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
+1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
+1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
+1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
+1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
+1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
+1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
+1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
+1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
+1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
+1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
+1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
+1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
+1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
+1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
+1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
+1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
+1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
+1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
+1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
+1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
+1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
+1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
+1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
+1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
+1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
+1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
+1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
+1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
+1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
+1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
+1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
+1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
+1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
+1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
+1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
+1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
+1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
+1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
+1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
+1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
+1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
+1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
+1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
+1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
+1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
+1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
+1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
+1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
+1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
+1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
+1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
+1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
+1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
+1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
+1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
+1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
+1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
+1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
+1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
+1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
+1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
+1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
+1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
+1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
+1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
+1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
+1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
+1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
+1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
+1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
+1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
+1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
+1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
+1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
+1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
+1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
+1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
+1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
+1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
+1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
+1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
+1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
+1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
+1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
+1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
+1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC
+1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
+1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
+1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
+1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
+1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
+1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
+1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
+1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
+1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6
+1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
+1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
+1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
+1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
+1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
+1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
+1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
+1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
+1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
+1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
+1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
+1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
+1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
+1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
+1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6
+1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
+1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
+1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
+1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
+1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
+1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
+1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
+1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
+1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
+1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
+1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
+1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
+1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
+1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
+1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
+1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
+1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8
+1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
+1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
+1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
+1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
+1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
+1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
+1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
+1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
+1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
+1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
+1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
+1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
+1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
+1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
+1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
+1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
+1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
+1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
+1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
+1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
+1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
+1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
+1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
+1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
+1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
+1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
+1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
+1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
+1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
+1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
+1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
+1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
+1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
+1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
+1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
+1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
+1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
+1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
+1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
+1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
+1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
+1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
+1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
+1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
+1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
+1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
+1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
+1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
+1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
+1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
+1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
+1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
+1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
+1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
+1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
+1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
+1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
+1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
+1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
+1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
+1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
+1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
+1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
+1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
+1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
+1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
+1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
+1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
+1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
+1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
+1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
+1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
+1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
+1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
+1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
+1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
+1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
+1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
+1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
+1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
+1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
+1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
+1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
+1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
+1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
+1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
+1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
+1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
+1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
+1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
+1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
+1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
+1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
+1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
+1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
+1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
+1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
+1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
+1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
+1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
+1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
+1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
+1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
+1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
+1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
+1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
+1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
+1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
+1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
+1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
+1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
+1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
+1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
+1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
+1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
+1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
+1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
+1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
+1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
+1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
+1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
+1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
+1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
+1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
+1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
+1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
+1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
+1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
+1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
+1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
+1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
+1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
+1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
+1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
+1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
+1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
+1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
+1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
+1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
+1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
+1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
+1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
+1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
+1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
+1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
+1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
+1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
+1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
+1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
+1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
+1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
+1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
+1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
+1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
+1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87;
+1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
+1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
+1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
+1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
+1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
+1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
+1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
+1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
+1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97;
+1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
+1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
+1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
+1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
+1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
+1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
+1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
+1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
+1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7;
+1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
+1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
+1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
+1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
+1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
+1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
+1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
+1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
+1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
+1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
+1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399
+1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
+1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
+1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
+1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
+1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
+1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
+1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
+1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
+1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
+1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3;
+1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
+1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
+1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
+1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
+1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
+1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
+1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
+1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
+1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
+1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
+1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
+1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
+1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
+1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
+1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
+1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
+1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
+1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
+1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
+1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
+1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
+1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
+1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
+1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
+1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
+1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
+1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
+1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
+1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
+1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
+1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
+1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
+1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
+1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
+1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
+1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3;
+1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
+1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
+2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
+2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
+2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200B;ZERO WIDTH SPACE;Zs;0;BN;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
+200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
+2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
+2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
+2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
+2013;EN DASH;Pd;0;ON;;;;;N;;;;;
+2014;EM DASH;Pd;0;ON;;;;;N;;;;;
+2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
+2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
+2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
+2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
+2020;DAGGER;Po;0;ON;;;;;N;;;;;
+2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
+2022;BULLET;Po;0;ON;;;;;N;;;;;
+2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
+2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
+2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
+2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;;
+202F;NARROW NO-BREAK SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+2032;PRIME;Po;0;ET;;;;;N;;;;;
+2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
+2038;CARET;Po;0;ON;;;;;N;;;;;
+2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
+203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
+203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
+203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
+2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
+2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
+2042;ASTERISM;Po;0;ON;;;;;N;;;;;
+2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
+2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
+2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;
+204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;
+204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;
+204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;0;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
+20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
+20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
+20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
+20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
+20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
+20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
+20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
+20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
+20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
+20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
+20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;
+20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;
+20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;
+20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;
+2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
+2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
+2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
+2108;SCRUPLE;So;0;ON;;;;;N;;;;;
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
+210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
+2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
+2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
+2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;;
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
+211F;RESPONSE;So;0;ON;;;;;N;;;;;
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
+2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
+2123;VERSICLE;So;0;ON;;;;;N;;;;;
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
+2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
+2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
+212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;
+212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;;
+2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
+213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
+2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
+2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
+2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
+2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Nl;0;L;;;;;N;;;;;
+2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
+2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
+2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
+2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
+2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
+2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
+2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
+2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
+2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
+219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;;
+219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
+219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
+219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
+219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
+21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
+21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
+21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
+21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
+21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
+21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
+21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
+21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
+21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
+21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
+21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
+21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
+21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
+21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
+21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;;
+21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
+21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
+21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
+21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
+21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
+21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
+21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
+21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
+21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
+21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
+21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
+21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
+21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
+21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
+21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
+21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
+21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
+21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
+21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
+21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
+21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
+21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
+21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
+21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
+21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
+21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
+21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
+21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
+21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
+21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
+21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
+21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
+21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
+21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
+21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
+21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
+21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
+21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
+21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
+21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
+21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
+21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
+21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
+21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
+21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
+21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
+21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
+21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
+21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
+21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
+21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
+21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
+21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
+21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;
+21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;;
+21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;;
+2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
+2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
+2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
+2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
+2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
+2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
+2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
+2207;NABLA;Sm;0;ON;;;;;N;;;;;
+2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
+220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
+220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
+220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
+2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
+2212;MINUS SIGN;Sm;0;ET;;;;;N;;;;;
+2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
+2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
+2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
+221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
+221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
+221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
+221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
+221E;INFINITY;Sm;0;ON;;;;;N;;;;;
+221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
+2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
+2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
+2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
+2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
+2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
+2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
+222A;UNION;Sm;0;ON;;;;;N;;;;;
+222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
+2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
+2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
+2236;RATIO;Sm;0;ON;;;;;N;;;;;
+2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
+2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
+2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
+223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
+223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
+223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;;
+223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
+223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
+2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;
+2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
+2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
+2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
+2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
+224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
+224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
+2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
+2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
+2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
+2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
+2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
+225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
+225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
+225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
+225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
+225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
+225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
+2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
+2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
+2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
+2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
+2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
+2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
+2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
+2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
+226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
+226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
+226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
+226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
+2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
+2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
+2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
+2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
+2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
+2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
+2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
+2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
+2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
+2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
+227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
+227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
+2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
+2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
+2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
+2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
+2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
+2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
+2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
+228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
+228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
+228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
+228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
+228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
+228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
+2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
+2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
+2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
+2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
+229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
+229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
+229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
+22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
+22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
+22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
+22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
+22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
+22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
+22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
+22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
+22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
+22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
+22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
+22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
+22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
+22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
+22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
+22BB;XOR;Sm;0;ON;;;;;N;;;;;
+22BC;NAND;Sm;0;ON;;;;;N;;;;;
+22BD;NOR;Sm;0;ON;;;;;N;;;;;
+22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
+22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
+22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
+22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
+22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
+22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
+22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
+22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
+22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
+22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
+22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
+22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
+22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
+22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
+22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
+22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
+22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
+22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
+22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
+22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
+22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
+22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
+22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
+22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
+22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
+22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
+22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
+22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
+2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;
+2302;HOUSE;So;0;ON;;;;;N;;;;;
+2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
+2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
+2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
+2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
+2307;WAVY LINE;So;0;ON;;;;;N;;;;;
+2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
+2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
+230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
+230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
+230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
+230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
+2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
+2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
+2312;ARC;So;0;ON;;;;;N;;;;;
+2313;SEGMENT;So;0;ON;;;;;N;;;;;
+2314;SECTOR;So;0;ON;;;;;N;;;;;
+2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
+2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
+2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
+2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
+2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
+231A;WATCH;So;0;ON;;;;;N;;;;;
+231B;HOURGLASS;So;0;ON;;;;;N;;;;;
+231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
+231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
+231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
+231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
+2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2322;FROWN;So;0;ON;;;;;N;;;;;
+2323;SMILE;So;0;ON;;;;;N;;;;;
+2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
+2325;OPTION KEY;So;0;ON;;;;;N;;;;;
+2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
+2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
+2328;KEYBOARD;So;0;ON;;;;;N;;;;;
+2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
+232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
+232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
+232C;BENZENE RING;So;0;ON;;;;;N;;;;;
+232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
+232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
+232F;SYMMETRY;So;0;ON;;;;;N;;;;;
+2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
+2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
+2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
+2333;SLOPE;So;0;ON;;;;;N;;;;;
+2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
+2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
+2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
+2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
+2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
+2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
+233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
+233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
+233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
+233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
+233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
+233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
+2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
+2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
+2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
+2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
+2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
+2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
+2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
+2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
+2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
+2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
+234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;;
+234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
+234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
+234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
+234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;;
+234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
+2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
+2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;;
+2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
+2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
+2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
+2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;;
+2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
+2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
+2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
+2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
+235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
+235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
+235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
+235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
+235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
+235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
+2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
+2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;;
+2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
+2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
+2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
+2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
+2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
+2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
+2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
+2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
+236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
+236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
+236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
+236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
+236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
+236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
+2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
+2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
+2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
+2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
+2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
+2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
+2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
+2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
+2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
+2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
+237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
+237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;
+237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;
+237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;
+237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
+2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;
+2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;
+2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;
+2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;
+2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;
+2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2388;HELM SYMBOL;So;0;ON;;;;;N;;;;;
+2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;;
+238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;;
+238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;;
+238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;
+238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;
+238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;
+238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;
+2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;
+2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;
+2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;
+2398;NEXT PAGE;So;0;ON;;;;;N;;;;;
+2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
+2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
+2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
+2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
+2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
+2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
+2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
+2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
+2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
+2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
+240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
+240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
+240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
+240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
+240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
+240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
+2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
+2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
+2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
+2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
+2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
+2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
+2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
+2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
+2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
+2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
+241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
+241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
+241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
+241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
+241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
+241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
+2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
+2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
+2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
+2423;OPEN BOX;So;0;ON;;;;;N;;;;;
+2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
+2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
+2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
+2440;OCR HOOK;So;0;ON;;;;;N;;;;;
+2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
+2442;OCR FORK;So;0;ON;;;;;N;;;;;
+2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
+2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
+2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
+2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
+2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
+2448;OCR DASH;So;0;ON;;;;;N;;;;;
+2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
+244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
+2460;CIRCLED DIGIT ONE;No;0;EN;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;EN;<circle> 0030;;0;0;N;;;;;
+2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
+2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
+2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
+2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
+2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
+2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
+2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
+2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
+2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
+2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
+250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
+250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
+250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
+250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
+250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
+250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
+2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
+2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
+2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
+2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
+2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
+2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
+2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
+2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
+2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
+2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
+251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
+251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
+251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
+251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
+251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
+251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
+2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
+2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
+2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
+2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
+2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
+2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
+2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
+2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
+2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
+252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
+252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
+252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
+252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
+252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
+252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
+2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
+2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
+2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
+2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
+2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
+2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
+2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
+2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
+2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
+2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
+253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
+253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
+253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
+253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
+253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
+253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
+2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
+2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
+2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
+2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
+2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
+2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
+2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
+2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
+2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
+254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
+254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
+254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
+254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
+254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
+254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
+2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
+2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
+2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
+2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
+2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
+2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
+2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
+2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
+2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
+2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
+255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
+255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
+255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
+255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
+255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
+255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
+2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
+2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
+2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
+2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
+2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
+2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
+2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
+2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
+2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
+2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
+256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
+256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
+256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
+256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
+256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
+256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
+2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
+2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
+2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
+2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
+2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
+2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
+2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
+2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
+2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
+2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
+257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
+257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
+257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
+257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
+257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
+257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
+2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
+2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
+2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
+258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
+258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
+2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
+2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+2593;DARK SHADE;So;0;ON;;;;;N;;;;;
+2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
+25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
+25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
+25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
+25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
+25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
+25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
+25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
+25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
+25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
+25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
+25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
+25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
+25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
+25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
+25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
+25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
+25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
+25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
+25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
+25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
+25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
+25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
+25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
+25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
+25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
+25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
+25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
+25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+25C9;FISHEYE;So;0;ON;;;;;N;;;;;
+25CA;LOZENGE;So;0;ON;;;;;N;;;;;
+25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
+25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
+25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
+25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
+25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
+25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
+25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
+25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
+25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+2601;CLOUD;So;0;ON;;;;;N;;;;;
+2602;UMBRELLA;So;0;ON;;;;;N;;;;;
+2603;SNOWMAN;So;0;ON;;;;;N;;;;;
+2604;COMET;So;0;ON;;;;;N;;;;;
+2605;BLACK STAR;So;0;ON;;;;;N;;;;;
+2606;WHITE STAR;So;0;ON;;;;;N;;;;;
+2607;LIGHTNING;So;0;ON;;;;;N;;;;;
+2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
+2609;SUN;So;0;ON;;;;;N;;;;;
+260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
+260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
+260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
+260D;OPPOSITION;So;0;ON;;;;;N;;;;;
+260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
+260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
+2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
+2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
+2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
+2613;SALTIRE;So;0;ON;;;;;N;;;;;
+2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
+261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
+2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
+2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
+2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
+2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
+2624;CADUCEUS;So;0;ON;;;;;N;;;;;
+2625;ANKH;So;0;ON;;;;;N;;;;;
+2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
+2627;CHI RHO;So;0;ON;;;;;N;;;;;
+2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
+2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
+262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
+262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
+262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
+262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
+262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
+262F;YIN YANG;So;0;ON;;;;;N;;;;;
+2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
+2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
+2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
+2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
+2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
+2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
+2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
+2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
+2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
+263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
+263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
+263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263F;MERCURY;So;0;ON;;;;;N;;;;;
+2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
+2641;EARTH;So;0;ON;;;;;N;;;;;
+2642;MALE SIGN;So;0;ON;;;;;N;;;;;
+2643;JUPITER;So;0;ON;;;;;N;;;;;
+2644;SATURN;So;0;ON;;;;;N;;;;;
+2645;URANUS;So;0;ON;;;;;N;;;;;
+2646;NEPTUNE;So;0;ON;;;;;N;;;;;
+2647;PLUTO;So;0;ON;;;;;N;;;;;
+2648;ARIES;So;0;ON;;;;;N;;;;;
+2649;TAURUS;So;0;ON;;;;;N;;;;;
+264A;GEMINI;So;0;ON;;;;;N;;;;;
+264B;CANCER;So;0;ON;;;;;N;;;;;
+264C;LEO;So;0;ON;;;;;N;;;;;
+264D;VIRGO;So;0;ON;;;;;N;;;;;
+264E;LIBRA;So;0;ON;;;;;N;;;;;
+264F;SCORPIUS;So;0;ON;;;;;N;;;;;
+2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
+2651;CAPRICORN;So;0;ON;;;;;N;;;;;
+2652;AQUARIUS;So;0;ON;;;;;N;;;;;
+2653;PISCES;So;0;ON;;;;;N;;;;;
+2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
+2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
+2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
+2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
+2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
+265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
+265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
+265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
+265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
+265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
+2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
+2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
+2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
+2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
+2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
+2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
+2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
+2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
+266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
+266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
+266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
+266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
+266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
+266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;
+2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
+2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
+2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
+2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
+2708;AIRPLANE;So;0;ON;;;;;N;;;;;
+2709;ENVELOPE;So;0;ON;;;;;N;;;;;
+270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
+270D;WRITING HAND;So;0;ON;;;;;N;;;;;
+270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+270F;PENCIL;So;0;ON;;;;;N;;;;;
+2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+2711;WHITE NIB;So;0;ON;;;;;N;;;;;
+2712;BLACK NIB;So;0;ON;;;;;N;;;;;
+2713;CHECK MARK;So;0;ON;;;;;N;;;;;
+2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
+2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2717;BALLOT X;So;0;ON;;;;;N;;;;;
+2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
+2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
+271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
+271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
+271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
+271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
+271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
+271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
+2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
+2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
+2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
+272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
+272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
+272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
+2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
+2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
+2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
+273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
+273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
+2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
+2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2747;SPARKLE;So;0;ON;;;;;N;;;;;
+2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
+2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
+2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
+2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
+2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
+2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
+2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
+2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
+2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
+2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
+2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
+277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
+277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
+277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
+277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
+277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
+277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
+2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
+2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
+2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
+2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
+2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
+2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
+2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
+2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
+278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
+278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
+278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
+278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
+278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
+278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
+2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
+2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
+2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
+2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
+2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
+279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
+279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
+279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
+279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
+279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
+279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
+27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
+27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
+27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
+27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
+27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
+27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
+27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
+27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
+27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
+27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
+27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
+27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
+27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
+27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
+27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
+27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
+27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
+27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
+2800;BRAILLE PATTERN BLANK;So;0;ON;;;;;N;;;;;
+2801;BRAILLE PATTERN DOTS-1;So;0;ON;;;;;N;;;;;
+2802;BRAILLE PATTERN DOTS-2;So;0;ON;;;;;N;;;;;
+2803;BRAILLE PATTERN DOTS-12;So;0;ON;;;;;N;;;;;
+2804;BRAILLE PATTERN DOTS-3;So;0;ON;;;;;N;;;;;
+2805;BRAILLE PATTERN DOTS-13;So;0;ON;;;;;N;;;;;
+2806;BRAILLE PATTERN DOTS-23;So;0;ON;;;;;N;;;;;
+2807;BRAILLE PATTERN DOTS-123;So;0;ON;;;;;N;;;;;
+2808;BRAILLE PATTERN DOTS-4;So;0;ON;;;;;N;;;;;
+2809;BRAILLE PATTERN DOTS-14;So;0;ON;;;;;N;;;;;
+280A;BRAILLE PATTERN DOTS-24;So;0;ON;;;;;N;;;;;
+280B;BRAILLE PATTERN DOTS-124;So;0;ON;;;;;N;;;;;
+280C;BRAILLE PATTERN DOTS-34;So;0;ON;;;;;N;;;;;
+280D;BRAILLE PATTERN DOTS-134;So;0;ON;;;;;N;;;;;
+280E;BRAILLE PATTERN DOTS-234;So;0;ON;;;;;N;;;;;
+280F;BRAILLE PATTERN DOTS-1234;So;0;ON;;;;;N;;;;;
+2810;BRAILLE PATTERN DOTS-5;So;0;ON;;;;;N;;;;;
+2811;BRAILLE PATTERN DOTS-15;So;0;ON;;;;;N;;;;;
+2812;BRAILLE PATTERN DOTS-25;So;0;ON;;;;;N;;;;;
+2813;BRAILLE PATTERN DOTS-125;So;0;ON;;;;;N;;;;;
+2814;BRAILLE PATTERN DOTS-35;So;0;ON;;;;;N;;;;;
+2815;BRAILLE PATTERN DOTS-135;So;0;ON;;;;;N;;;;;
+2816;BRAILLE PATTERN DOTS-235;So;0;ON;;;;;N;;;;;
+2817;BRAILLE PATTERN DOTS-1235;So;0;ON;;;;;N;;;;;
+2818;BRAILLE PATTERN DOTS-45;So;0;ON;;;;;N;;;;;
+2819;BRAILLE PATTERN DOTS-145;So;0;ON;;;;;N;;;;;
+281A;BRAILLE PATTERN DOTS-245;So;0;ON;;;;;N;;;;;
+281B;BRAILLE PATTERN DOTS-1245;So;0;ON;;;;;N;;;;;
+281C;BRAILLE PATTERN DOTS-345;So;0;ON;;;;;N;;;;;
+281D;BRAILLE PATTERN DOTS-1345;So;0;ON;;;;;N;;;;;
+281E;BRAILLE PATTERN DOTS-2345;So;0;ON;;;;;N;;;;;
+281F;BRAILLE PATTERN DOTS-12345;So;0;ON;;;;;N;;;;;
+2820;BRAILLE PATTERN DOTS-6;So;0;ON;;;;;N;;;;;
+2821;BRAILLE PATTERN DOTS-16;So;0;ON;;;;;N;;;;;
+2822;BRAILLE PATTERN DOTS-26;So;0;ON;;;;;N;;;;;
+2823;BRAILLE PATTERN DOTS-126;So;0;ON;;;;;N;;;;;
+2824;BRAILLE PATTERN DOTS-36;So;0;ON;;;;;N;;;;;
+2825;BRAILLE PATTERN DOTS-136;So;0;ON;;;;;N;;;;;
+2826;BRAILLE PATTERN DOTS-236;So;0;ON;;;;;N;;;;;
+2827;BRAILLE PATTERN DOTS-1236;So;0;ON;;;;;N;;;;;
+2828;BRAILLE PATTERN DOTS-46;So;0;ON;;;;;N;;;;;
+2829;BRAILLE PATTERN DOTS-146;So;0;ON;;;;;N;;;;;
+282A;BRAILLE PATTERN DOTS-246;So;0;ON;;;;;N;;;;;
+282B;BRAILLE PATTERN DOTS-1246;So;0;ON;;;;;N;;;;;
+282C;BRAILLE PATTERN DOTS-346;So;0;ON;;;;;N;;;;;
+282D;BRAILLE PATTERN DOTS-1346;So;0;ON;;;;;N;;;;;
+282E;BRAILLE PATTERN DOTS-2346;So;0;ON;;;;;N;;;;;
+282F;BRAILLE PATTERN DOTS-12346;So;0;ON;;;;;N;;;;;
+2830;BRAILLE PATTERN DOTS-56;So;0;ON;;;;;N;;;;;
+2831;BRAILLE PATTERN DOTS-156;So;0;ON;;;;;N;;;;;
+2832;BRAILLE PATTERN DOTS-256;So;0;ON;;;;;N;;;;;
+2833;BRAILLE PATTERN DOTS-1256;So;0;ON;;;;;N;;;;;
+2834;BRAILLE PATTERN DOTS-356;So;0;ON;;;;;N;;;;;
+2835;BRAILLE PATTERN DOTS-1356;So;0;ON;;;;;N;;;;;
+2836;BRAILLE PATTERN DOTS-2356;So;0;ON;;;;;N;;;;;
+2837;BRAILLE PATTERN DOTS-12356;So;0;ON;;;;;N;;;;;
+2838;BRAILLE PATTERN DOTS-456;So;0;ON;;;;;N;;;;;
+2839;BRAILLE PATTERN DOTS-1456;So;0;ON;;;;;N;;;;;
+283A;BRAILLE PATTERN DOTS-2456;So;0;ON;;;;;N;;;;;
+283B;BRAILLE PATTERN DOTS-12456;So;0;ON;;;;;N;;;;;
+283C;BRAILLE PATTERN DOTS-3456;So;0;ON;;;;;N;;;;;
+283D;BRAILLE PATTERN DOTS-13456;So;0;ON;;;;;N;;;;;
+283E;BRAILLE PATTERN DOTS-23456;So;0;ON;;;;;N;;;;;
+283F;BRAILLE PATTERN DOTS-123456;So;0;ON;;;;;N;;;;;
+2840;BRAILLE PATTERN DOTS-7;So;0;ON;;;;;N;;;;;
+2841;BRAILLE PATTERN DOTS-17;So;0;ON;;;;;N;;;;;
+2842;BRAILLE PATTERN DOTS-27;So;0;ON;;;;;N;;;;;
+2843;BRAILLE PATTERN DOTS-127;So;0;ON;;;;;N;;;;;
+2844;BRAILLE PATTERN DOTS-37;So;0;ON;;;;;N;;;;;
+2845;BRAILLE PATTERN DOTS-137;So;0;ON;;;;;N;;;;;
+2846;BRAILLE PATTERN DOTS-237;So;0;ON;;;;;N;;;;;
+2847;BRAILLE PATTERN DOTS-1237;So;0;ON;;;;;N;;;;;
+2848;BRAILLE PATTERN DOTS-47;So;0;ON;;;;;N;;;;;
+2849;BRAILLE PATTERN DOTS-147;So;0;ON;;;;;N;;;;;
+284A;BRAILLE PATTERN DOTS-247;So;0;ON;;;;;N;;;;;
+284B;BRAILLE PATTERN DOTS-1247;So;0;ON;;;;;N;;;;;
+284C;BRAILLE PATTERN DOTS-347;So;0;ON;;;;;N;;;;;
+284D;BRAILLE PATTERN DOTS-1347;So;0;ON;;;;;N;;;;;
+284E;BRAILLE PATTERN DOTS-2347;So;0;ON;;;;;N;;;;;
+284F;BRAILLE PATTERN DOTS-12347;So;0;ON;;;;;N;;;;;
+2850;BRAILLE PATTERN DOTS-57;So;0;ON;;;;;N;;;;;
+2851;BRAILLE PATTERN DOTS-157;So;0;ON;;;;;N;;;;;
+2852;BRAILLE PATTERN DOTS-257;So;0;ON;;;;;N;;;;;
+2853;BRAILLE PATTERN DOTS-1257;So;0;ON;;;;;N;;;;;
+2854;BRAILLE PATTERN DOTS-357;So;0;ON;;;;;N;;;;;
+2855;BRAILLE PATTERN DOTS-1357;So;0;ON;;;;;N;;;;;
+2856;BRAILLE PATTERN DOTS-2357;So;0;ON;;;;;N;;;;;
+2857;BRAILLE PATTERN DOTS-12357;So;0;ON;;;;;N;;;;;
+2858;BRAILLE PATTERN DOTS-457;So;0;ON;;;;;N;;;;;
+2859;BRAILLE PATTERN DOTS-1457;So;0;ON;;;;;N;;;;;
+285A;BRAILLE PATTERN DOTS-2457;So;0;ON;;;;;N;;;;;
+285B;BRAILLE PATTERN DOTS-12457;So;0;ON;;;;;N;;;;;
+285C;BRAILLE PATTERN DOTS-3457;So;0;ON;;;;;N;;;;;
+285D;BRAILLE PATTERN DOTS-13457;So;0;ON;;;;;N;;;;;
+285E;BRAILLE PATTERN DOTS-23457;So;0;ON;;;;;N;;;;;
+285F;BRAILLE PATTERN DOTS-123457;So;0;ON;;;;;N;;;;;
+2860;BRAILLE PATTERN DOTS-67;So;0;ON;;;;;N;;;;;
+2861;BRAILLE PATTERN DOTS-167;So;0;ON;;;;;N;;;;;
+2862;BRAILLE PATTERN DOTS-267;So;0;ON;;;;;N;;;;;
+2863;BRAILLE PATTERN DOTS-1267;So;0;ON;;;;;N;;;;;
+2864;BRAILLE PATTERN DOTS-367;So;0;ON;;;;;N;;;;;
+2865;BRAILLE PATTERN DOTS-1367;So;0;ON;;;;;N;;;;;
+2866;BRAILLE PATTERN DOTS-2367;So;0;ON;;;;;N;;;;;
+2867;BRAILLE PATTERN DOTS-12367;So;0;ON;;;;;N;;;;;
+2868;BRAILLE PATTERN DOTS-467;So;0;ON;;;;;N;;;;;
+2869;BRAILLE PATTERN DOTS-1467;So;0;ON;;;;;N;;;;;
+286A;BRAILLE PATTERN DOTS-2467;So;0;ON;;;;;N;;;;;
+286B;BRAILLE PATTERN DOTS-12467;So;0;ON;;;;;N;;;;;
+286C;BRAILLE PATTERN DOTS-3467;So;0;ON;;;;;N;;;;;
+286D;BRAILLE PATTERN DOTS-13467;So;0;ON;;;;;N;;;;;
+286E;BRAILLE PATTERN DOTS-23467;So;0;ON;;;;;N;;;;;
+286F;BRAILLE PATTERN DOTS-123467;So;0;ON;;;;;N;;;;;
+2870;BRAILLE PATTERN DOTS-567;So;0;ON;;;;;N;;;;;
+2871;BRAILLE PATTERN DOTS-1567;So;0;ON;;;;;N;;;;;
+2872;BRAILLE PATTERN DOTS-2567;So;0;ON;;;;;N;;;;;
+2873;BRAILLE PATTERN DOTS-12567;So;0;ON;;;;;N;;;;;
+2874;BRAILLE PATTERN DOTS-3567;So;0;ON;;;;;N;;;;;
+2875;BRAILLE PATTERN DOTS-13567;So;0;ON;;;;;N;;;;;
+2876;BRAILLE PATTERN DOTS-23567;So;0;ON;;;;;N;;;;;
+2877;BRAILLE PATTERN DOTS-123567;So;0;ON;;;;;N;;;;;
+2878;BRAILLE PATTERN DOTS-4567;So;0;ON;;;;;N;;;;;
+2879;BRAILLE PATTERN DOTS-14567;So;0;ON;;;;;N;;;;;
+287A;BRAILLE PATTERN DOTS-24567;So;0;ON;;;;;N;;;;;
+287B;BRAILLE PATTERN DOTS-124567;So;0;ON;;;;;N;;;;;
+287C;BRAILLE PATTERN DOTS-34567;So;0;ON;;;;;N;;;;;
+287D;BRAILLE PATTERN DOTS-134567;So;0;ON;;;;;N;;;;;
+287E;BRAILLE PATTERN DOTS-234567;So;0;ON;;;;;N;;;;;
+287F;BRAILLE PATTERN DOTS-1234567;So;0;ON;;;;;N;;;;;
+2880;BRAILLE PATTERN DOTS-8;So;0;ON;;;;;N;;;;;
+2881;BRAILLE PATTERN DOTS-18;So;0;ON;;;;;N;;;;;
+2882;BRAILLE PATTERN DOTS-28;So;0;ON;;;;;N;;;;;
+2883;BRAILLE PATTERN DOTS-128;So;0;ON;;;;;N;;;;;
+2884;BRAILLE PATTERN DOTS-38;So;0;ON;;;;;N;;;;;
+2885;BRAILLE PATTERN DOTS-138;So;0;ON;;;;;N;;;;;
+2886;BRAILLE PATTERN DOTS-238;So;0;ON;;;;;N;;;;;
+2887;BRAILLE PATTERN DOTS-1238;So;0;ON;;;;;N;;;;;
+2888;BRAILLE PATTERN DOTS-48;So;0;ON;;;;;N;;;;;
+2889;BRAILLE PATTERN DOTS-148;So;0;ON;;;;;N;;;;;
+288A;BRAILLE PATTERN DOTS-248;So;0;ON;;;;;N;;;;;
+288B;BRAILLE PATTERN DOTS-1248;So;0;ON;;;;;N;;;;;
+288C;BRAILLE PATTERN DOTS-348;So;0;ON;;;;;N;;;;;
+288D;BRAILLE PATTERN DOTS-1348;So;0;ON;;;;;N;;;;;
+288E;BRAILLE PATTERN DOTS-2348;So;0;ON;;;;;N;;;;;
+288F;BRAILLE PATTERN DOTS-12348;So;0;ON;;;;;N;;;;;
+2890;BRAILLE PATTERN DOTS-58;So;0;ON;;;;;N;;;;;
+2891;BRAILLE PATTERN DOTS-158;So;0;ON;;;;;N;;;;;
+2892;BRAILLE PATTERN DOTS-258;So;0;ON;;;;;N;;;;;
+2893;BRAILLE PATTERN DOTS-1258;So;0;ON;;;;;N;;;;;
+2894;BRAILLE PATTERN DOTS-358;So;0;ON;;;;;N;;;;;
+2895;BRAILLE PATTERN DOTS-1358;So;0;ON;;;;;N;;;;;
+2896;BRAILLE PATTERN DOTS-2358;So;0;ON;;;;;N;;;;;
+2897;BRAILLE PATTERN DOTS-12358;So;0;ON;;;;;N;;;;;
+2898;BRAILLE PATTERN DOTS-458;So;0;ON;;;;;N;;;;;
+2899;BRAILLE PATTERN DOTS-1458;So;0;ON;;;;;N;;;;;
+289A;BRAILLE PATTERN DOTS-2458;So;0;ON;;;;;N;;;;;
+289B;BRAILLE PATTERN DOTS-12458;So;0;ON;;;;;N;;;;;
+289C;BRAILLE PATTERN DOTS-3458;So;0;ON;;;;;N;;;;;
+289D;BRAILLE PATTERN DOTS-13458;So;0;ON;;;;;N;;;;;
+289E;BRAILLE PATTERN DOTS-23458;So;0;ON;;;;;N;;;;;
+289F;BRAILLE PATTERN DOTS-123458;So;0;ON;;;;;N;;;;;
+28A0;BRAILLE PATTERN DOTS-68;So;0;ON;;;;;N;;;;;
+28A1;BRAILLE PATTERN DOTS-168;So;0;ON;;;;;N;;;;;
+28A2;BRAILLE PATTERN DOTS-268;So;0;ON;;;;;N;;;;;
+28A3;BRAILLE PATTERN DOTS-1268;So;0;ON;;;;;N;;;;;
+28A4;BRAILLE PATTERN DOTS-368;So;0;ON;;;;;N;;;;;
+28A5;BRAILLE PATTERN DOTS-1368;So;0;ON;;;;;N;;;;;
+28A6;BRAILLE PATTERN DOTS-2368;So;0;ON;;;;;N;;;;;
+28A7;BRAILLE PATTERN DOTS-12368;So;0;ON;;;;;N;;;;;
+28A8;BRAILLE PATTERN DOTS-468;So;0;ON;;;;;N;;;;;
+28A9;BRAILLE PATTERN DOTS-1468;So;0;ON;;;;;N;;;;;
+28AA;BRAILLE PATTERN DOTS-2468;So;0;ON;;;;;N;;;;;
+28AB;BRAILLE PATTERN DOTS-12468;So;0;ON;;;;;N;;;;;
+28AC;BRAILLE PATTERN DOTS-3468;So;0;ON;;;;;N;;;;;
+28AD;BRAILLE PATTERN DOTS-13468;So;0;ON;;;;;N;;;;;
+28AE;BRAILLE PATTERN DOTS-23468;So;0;ON;;;;;N;;;;;
+28AF;BRAILLE PATTERN DOTS-123468;So;0;ON;;;;;N;;;;;
+28B0;BRAILLE PATTERN DOTS-568;So;0;ON;;;;;N;;;;;
+28B1;BRAILLE PATTERN DOTS-1568;So;0;ON;;;;;N;;;;;
+28B2;BRAILLE PATTERN DOTS-2568;So;0;ON;;;;;N;;;;;
+28B3;BRAILLE PATTERN DOTS-12568;So;0;ON;;;;;N;;;;;
+28B4;BRAILLE PATTERN DOTS-3568;So;0;ON;;;;;N;;;;;
+28B5;BRAILLE PATTERN DOTS-13568;So;0;ON;;;;;N;;;;;
+28B6;BRAILLE PATTERN DOTS-23568;So;0;ON;;;;;N;;;;;
+28B7;BRAILLE PATTERN DOTS-123568;So;0;ON;;;;;N;;;;;
+28B8;BRAILLE PATTERN DOTS-4568;So;0;ON;;;;;N;;;;;
+28B9;BRAILLE PATTERN DOTS-14568;So;0;ON;;;;;N;;;;;
+28BA;BRAILLE PATTERN DOTS-24568;So;0;ON;;;;;N;;;;;
+28BB;BRAILLE PATTERN DOTS-124568;So;0;ON;;;;;N;;;;;
+28BC;BRAILLE PATTERN DOTS-34568;So;0;ON;;;;;N;;;;;
+28BD;BRAILLE PATTERN DOTS-134568;So;0;ON;;;;;N;;;;;
+28BE;BRAILLE PATTERN DOTS-234568;So;0;ON;;;;;N;;;;;
+28BF;BRAILLE PATTERN DOTS-1234568;So;0;ON;;;;;N;;;;;
+28C0;BRAILLE PATTERN DOTS-78;So;0;ON;;;;;N;;;;;
+28C1;BRAILLE PATTERN DOTS-178;So;0;ON;;;;;N;;;;;
+28C2;BRAILLE PATTERN DOTS-278;So;0;ON;;;;;N;;;;;
+28C3;BRAILLE PATTERN DOTS-1278;So;0;ON;;;;;N;;;;;
+28C4;BRAILLE PATTERN DOTS-378;So;0;ON;;;;;N;;;;;
+28C5;BRAILLE PATTERN DOTS-1378;So;0;ON;;;;;N;;;;;
+28C6;BRAILLE PATTERN DOTS-2378;So;0;ON;;;;;N;;;;;
+28C7;BRAILLE PATTERN DOTS-12378;So;0;ON;;;;;N;;;;;
+28C8;BRAILLE PATTERN DOTS-478;So;0;ON;;;;;N;;;;;
+28C9;BRAILLE PATTERN DOTS-1478;So;0;ON;;;;;N;;;;;
+28CA;BRAILLE PATTERN DOTS-2478;So;0;ON;;;;;N;;;;;
+28CB;BRAILLE PATTERN DOTS-12478;So;0;ON;;;;;N;;;;;
+28CC;BRAILLE PATTERN DOTS-3478;So;0;ON;;;;;N;;;;;
+28CD;BRAILLE PATTERN DOTS-13478;So;0;ON;;;;;N;;;;;
+28CE;BRAILLE PATTERN DOTS-23478;So;0;ON;;;;;N;;;;;
+28CF;BRAILLE PATTERN DOTS-123478;So;0;ON;;;;;N;;;;;
+28D0;BRAILLE PATTERN DOTS-578;So;0;ON;;;;;N;;;;;
+28D1;BRAILLE PATTERN DOTS-1578;So;0;ON;;;;;N;;;;;
+28D2;BRAILLE PATTERN DOTS-2578;So;0;ON;;;;;N;;;;;
+28D3;BRAILLE PATTERN DOTS-12578;So;0;ON;;;;;N;;;;;
+28D4;BRAILLE PATTERN DOTS-3578;So;0;ON;;;;;N;;;;;
+28D5;BRAILLE PATTERN DOTS-13578;So;0;ON;;;;;N;;;;;
+28D6;BRAILLE PATTERN DOTS-23578;So;0;ON;;;;;N;;;;;
+28D7;BRAILLE PATTERN DOTS-123578;So;0;ON;;;;;N;;;;;
+28D8;BRAILLE PATTERN DOTS-4578;So;0;ON;;;;;N;;;;;
+28D9;BRAILLE PATTERN DOTS-14578;So;0;ON;;;;;N;;;;;
+28DA;BRAILLE PATTERN DOTS-24578;So;0;ON;;;;;N;;;;;
+28DB;BRAILLE PATTERN DOTS-124578;So;0;ON;;;;;N;;;;;
+28DC;BRAILLE PATTERN DOTS-34578;So;0;ON;;;;;N;;;;;
+28DD;BRAILLE PATTERN DOTS-134578;So;0;ON;;;;;N;;;;;
+28DE;BRAILLE PATTERN DOTS-234578;So;0;ON;;;;;N;;;;;
+28DF;BRAILLE PATTERN DOTS-1234578;So;0;ON;;;;;N;;;;;
+28E0;BRAILLE PATTERN DOTS-678;So;0;ON;;;;;N;;;;;
+28E1;BRAILLE PATTERN DOTS-1678;So;0;ON;;;;;N;;;;;
+28E2;BRAILLE PATTERN DOTS-2678;So;0;ON;;;;;N;;;;;
+28E3;BRAILLE PATTERN DOTS-12678;So;0;ON;;;;;N;;;;;
+28E4;BRAILLE PATTERN DOTS-3678;So;0;ON;;;;;N;;;;;
+28E5;BRAILLE PATTERN DOTS-13678;So;0;ON;;;;;N;;;;;
+28E6;BRAILLE PATTERN DOTS-23678;So;0;ON;;;;;N;;;;;
+28E7;BRAILLE PATTERN DOTS-123678;So;0;ON;;;;;N;;;;;
+28E8;BRAILLE PATTERN DOTS-4678;So;0;ON;;;;;N;;;;;
+28E9;BRAILLE PATTERN DOTS-14678;So;0;ON;;;;;N;;;;;
+28EA;BRAILLE PATTERN DOTS-24678;So;0;ON;;;;;N;;;;;
+28EB;BRAILLE PATTERN DOTS-124678;So;0;ON;;;;;N;;;;;
+28EC;BRAILLE PATTERN DOTS-34678;So;0;ON;;;;;N;;;;;
+28ED;BRAILLE PATTERN DOTS-134678;So;0;ON;;;;;N;;;;;
+28EE;BRAILLE PATTERN DOTS-234678;So;0;ON;;;;;N;;;;;
+28EF;BRAILLE PATTERN DOTS-1234678;So;0;ON;;;;;N;;;;;
+28F0;BRAILLE PATTERN DOTS-5678;So;0;ON;;;;;N;;;;;
+28F1;BRAILLE PATTERN DOTS-15678;So;0;ON;;;;;N;;;;;
+28F2;BRAILLE PATTERN DOTS-25678;So;0;ON;;;;;N;;;;;
+28F3;BRAILLE PATTERN DOTS-125678;So;0;ON;;;;;N;;;;;
+28F4;BRAILLE PATTERN DOTS-35678;So;0;ON;;;;;N;;;;;
+28F5;BRAILLE PATTERN DOTS-135678;So;0;ON;;;;;N;;;;;
+28F6;BRAILLE PATTERN DOTS-235678;So;0;ON;;;;;N;;;;;
+28F7;BRAILLE PATTERN DOTS-1235678;So;0;ON;;;;;N;;;;;
+28F8;BRAILLE PATTERN DOTS-45678;So;0;ON;;;;;N;;;;;
+28F9;BRAILLE PATTERN DOTS-145678;So;0;ON;;;;;N;;;;;
+28FA;BRAILLE PATTERN DOTS-245678;So;0;ON;;;;;N;;;;;
+28FB;BRAILLE PATTERN DOTS-1245678;So;0;ON;;;;;N;;;;;
+28FC;BRAILLE PATTERN DOTS-345678;So;0;ON;;;;;N;;;;;
+28FD;BRAILLE PATTERN DOTS-1345678;So;0;ON;;;;;N;;;;;
+28FE;BRAILLE PATTERN DOTS-2345678;So;0;ON;;;;;N;;;;;
+28FF;BRAILLE PATTERN DOTS-12345678;So;0;ON;;;;;N;;;;;
+2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
+2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
+2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
+2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;
+2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;
+2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;
+2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;
+2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;
+2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;
+2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;
+2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;
+2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;
+2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;
+2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;
+2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;
+2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;
+2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;
+2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;
+2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;
+2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;
+2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;
+2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;
+2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;
+2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;
+2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;
+2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;
+2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;
+2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;
+2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;
+2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;
+2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;
+2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;
+2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;
+2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;
+2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;
+2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;
+2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;
+2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;
+2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;
+2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;
+2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;
+2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;
+2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;
+2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;
+2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;
+2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;
+2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;
+2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;
+2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;
+2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;
+2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;
+2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;
+2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;
+2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;
+2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;
+2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;
+2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;
+2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;
+2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;
+2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;
+2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;
+2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;
+2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;
+2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;
+2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;
+2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;
+2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;
+2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;
+2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;
+2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;
+2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;
+2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;
+2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;
+2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;
+2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;
+2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;
+2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;
+2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;
+2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;
+2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;
+2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;
+2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;
+2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;
+2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;
+2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;
+2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;
+2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;
+2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;
+2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;
+2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;
+2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;
+2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;
+2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;
+2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;
+2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;
+2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;
+2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;
+2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;
+2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;
+2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;
+2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;
+2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;
+2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;
+2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;
+2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;
+2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;
+2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;
+2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;
+2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;
+2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
+2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
+2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
+2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
+2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
+2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
+2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
+2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
+2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
+2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
+2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
+2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
+2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
+2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
+2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
+2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
+2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
+2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
+2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
+2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
+2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
+2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
+2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
+2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
+2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
+2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
+2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
+2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
+2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
+2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
+2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
+2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
+2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
+2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
+2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
+2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
+2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
+2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
+2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
+2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
+2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
+2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
+2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
+2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
+2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
+2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
+2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
+2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
+2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
+2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
+2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
+2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
+2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
+2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
+2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
+2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
+2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
+2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
+2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
+2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
+2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
+2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
+2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
+2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
+2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
+2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
+2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
+2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
+2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
+2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
+2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
+2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
+2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
+2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
+2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
+2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
+2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
+2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
+2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
+2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
+2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
+2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
+2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
+2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
+2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
+2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
+2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
+2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
+2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
+2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
+2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
+2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
+2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
+2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
+2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
+2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
+2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
+2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
+2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
+2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
+2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
+2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
+2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
+2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
+2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
+2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
+2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
+2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
+2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
+2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
+2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
+2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
+2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
+2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
+2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
+2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
+2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
+2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
+2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
+2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
+2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
+2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
+2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
+2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
+2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
+2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
+2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
+2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
+2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
+2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
+2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
+2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
+2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
+2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
+2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
+2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
+2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
+2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
+2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
+2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
+2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
+2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
+2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
+2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
+2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
+2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
+2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
+2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
+2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
+2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
+2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
+2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
+2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
+2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
+2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
+2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
+2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
+2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
+2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
+2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
+2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
+2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
+2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
+2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
+2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
+2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
+2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
+2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
+2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
+2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
+2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
+2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
+2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
+2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
+2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
+2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
+2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
+2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
+2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
+2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
+2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
+2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
+2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
+2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
+2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
+2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
+2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
+2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
+2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
+2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
+2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
+2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
+2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
+2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
+2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
+2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
+2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
+2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
+2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
+2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
+2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
+2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
+2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
+2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
+2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
+2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
+2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
+2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
+2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
+2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
+2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
+2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
+2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
+2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;
+2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;
+2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;
+2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;
+2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;
+2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;
+2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;
+2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;
+2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;
+2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;
+2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
+2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
+2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
+3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
+3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
+3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
+3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
+3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
+3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
+3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
+3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
+300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
+300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
+300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
+300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
+300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
+300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
+3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
+3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
+3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
+3013;GETA MARK;So;0;ON;;;;;N;;;;;
+3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
+3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
+3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
+3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
+3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
+3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
+301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
+301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
+301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
+301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
+3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
+3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
+3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
+3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
+3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
+3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
+3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
+3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
+3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
+302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
+3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
+3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
+303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;
+303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;
+303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
+3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
+3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
+3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
+3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
+3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
+304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
+304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
+304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
+304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
+304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
+3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
+3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
+3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
+3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
+3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
+3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
+3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
+3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
+3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
+3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
+305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
+305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
+305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
+305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
+305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
+305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
+3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
+3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
+3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
+3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
+3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
+3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
+3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
+3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
+3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
+306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
+306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
+306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
+306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
+306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
+306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
+3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
+3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
+3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
+3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
+3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
+3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
+3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
+3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
+3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
+3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
+307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
+307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
+307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
+307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
+307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
+307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
+3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
+3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
+3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
+3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
+3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
+3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
+3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
+308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
+308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
+308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
+308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
+308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
+3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
+3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
+3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
+3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
+3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
+30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
+30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
+30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
+30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
+30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
+30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
+30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
+30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
+30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
+30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
+30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
+30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
+30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
+30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
+30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
+30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
+30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
+30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
+30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
+30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
+30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
+30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
+30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
+30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
+30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
+30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
+30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
+30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
+30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
+30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
+30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
+30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
+30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
+30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
+30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
+30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
+30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
+30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
+30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
+30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
+30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
+30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
+30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
+30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
+30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
+30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
+30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
+30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
+30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
+30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
+30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
+30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
+30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
+30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
+30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
+30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
+30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
+30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
+30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
+30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
+30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
+30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
+30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
+30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
+30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
+30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
+30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
+30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
+30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
+30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
+30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
+30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
+30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
+30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
+30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
+30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
+30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
+30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
+30FB;KATAKANA MIDDLE DOT;Pc;0;ON;;;;;N;;;;;
+30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
+30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
+3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
+3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
+3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
+3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
+3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
+310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
+310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
+310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
+310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
+310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
+310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
+3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
+3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
+3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
+3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
+3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
+3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
+3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
+3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
+3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
+3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
+311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
+311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
+311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
+311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
+311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
+311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
+3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
+3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
+3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
+3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
+3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
+3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
+3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
+3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
+3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
+3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
+312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
+312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
+312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;;N;KAERITEN SI;Kaeriten;;;
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
+31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;
+31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;
+31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;
+31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;
+31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;
+31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;
+31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;
+31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;
+31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;
+31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;
+31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;
+31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;
+31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;
+31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;
+31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;
+31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;
+31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;
+31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;
+31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;
+31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;
+31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;
+31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;
+31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;
+31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;
+3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;;N;;;;;
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
+3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
+4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
+A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
+A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
+A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;;
+A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;;
+A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;;
+A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;;
+A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;;
+A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;;
+A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;;
+A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;;
+A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;;
+A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;;
+A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;;
+A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;;
+A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;;
+A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;;
+A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;;
+A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;;
+A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;;
+A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;;
+A015;YI SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
+A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;
+A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
+A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;
+A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;
+A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;
+A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;
+A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
+A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;
+A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
+A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;
+A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;
+A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;
+A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
+A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;
+A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
+A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;
+A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
+A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
+A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;
+A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
+A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;
+A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;
+A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;
+A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;
+A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;
+A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;
+A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;
+A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;
+A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
+A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;
+A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
+A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;
+A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;
+A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;
+A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
+A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;
+A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
+A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;
+A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;
+A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;
+A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;
+A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;
+A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;
+A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
+A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;
+A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
+A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;
+A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;
+A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;
+A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;
+A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;
+A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;
+A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;
+A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;
+A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
+A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;
+A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
+A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
+A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;
+A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;
+A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;
+A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;
+A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
+A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;
+A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
+A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
+A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;
+A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;
+A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;
+A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
+A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;
+A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
+A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
+A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;
+A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
+A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
+A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
+A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;
+A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
+A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
+A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;
+A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;
+A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;
+A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;
+A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;
+A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;
+A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;
+A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;
+A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;
+A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;
+A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;
+A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;
+A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;
+A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;
+A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;
+A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;
+A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;
+A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;
+A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;
+A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;
+A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;
+A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;
+A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;
+A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;
+A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;
+A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;
+A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;
+A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;
+A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;
+A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;
+A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;
+A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;
+A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;
+A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;
+A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;
+A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;
+A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;
+A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;
+A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;
+A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;
+A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;
+A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;
+A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;
+A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;
+A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;
+A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;
+A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;
+A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;
+A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;
+A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;
+A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;
+A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;
+A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;
+A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;
+A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;
+A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;
+A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;
+A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;
+A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;
+A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;
+A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;
+A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;
+A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
+A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;
+A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
+A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;
+A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;
+A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;
+A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
+A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;
+A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
+A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;
+A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;
+A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;
+A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;
+A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
+A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;
+A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
+A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;
+A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
+A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;
+A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
+A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;
+A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;
+A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;
+A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;
+A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;
+A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;
+A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;
+A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;
+A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;
+A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;
+A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;
+A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;
+A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;
+A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;
+A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;
+A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;
+A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;
+A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;
+A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;
+A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;
+A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;
+A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;
+A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;
+A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;
+A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;
+A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;
+A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;
+A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;
+A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;
+A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;
+A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;
+A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;
+A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;
+A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;
+A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;
+A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;
+A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;
+A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;
+A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;
+A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;
+A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;
+A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;
+A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;
+A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;
+A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;
+A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;
+A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;
+A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;
+A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;
+A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
+A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;
+A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
+A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;
+A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;
+A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;
+A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
+A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;
+A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
+A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;
+A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;
+A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
+A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;
+A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
+A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;
+A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
+A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
+A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;
+A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
+A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;
+A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;
+A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
+A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;
+A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
+A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;
+A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;
+A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;
+A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
+A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;
+A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
+A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;
+A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;
+A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;
+A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;
+A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
+A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;
+A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
+A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;
+A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
+A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
+A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;
+A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
+A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;
+A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;
+A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
+A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;
+A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
+A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;
+A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;
+A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;
+A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
+A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;
+A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
+A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;
+A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;
+A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;
+A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
+A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;
+A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
+A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;
+A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
+A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
+A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;
+A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
+A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;
+A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;
+A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;
+A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;
+A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
+A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;
+A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;
+A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;
+A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;
+A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;
+A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
+A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;
+A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;
+A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;
+A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
+A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;
+A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;
+A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
+A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;
+A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;
+A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;
+A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
+A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;
+A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;
+A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;
+A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;
+A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;
+A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;
+A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;
+A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;
+A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;
+A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;
+A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;
+A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;
+A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;
+A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;
+A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;
+A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;
+A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;
+A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;
+A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;
+A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;
+A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;
+A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;
+A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;
+A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;
+A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
+A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;
+A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
+A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;
+A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;
+A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;
+A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;
+A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
+A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;
+A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;
+A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;
+A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
+A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;
+A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
+A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;
+A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
+A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
+A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;
+A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
+A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;
+A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;
+A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;
+A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;
+A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;
+A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;
+A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;
+A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;
+A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;
+A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;
+A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;
+A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;
+A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;
+A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;
+A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;
+A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;
+A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;
+A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;
+A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;
+A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;
+A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;
+A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;
+A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;
+A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;
+A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;
+A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;
+A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;
+A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;
+A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;
+A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;
+A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;
+A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;
+A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;
+A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;
+A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;
+A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;
+A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;
+A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;
+A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;
+A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;
+A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;
+A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;
+A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;
+A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;
+A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;
+A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;
+A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;
+A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;
+A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;
+A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;
+A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;
+A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;
+A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;
+A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;
+A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;
+A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;
+A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;
+A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;
+A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;
+A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;
+A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;
+A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;
+A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;
+A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;
+A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
+A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;
+A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
+A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;
+A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;
+A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;
+A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;
+A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
+A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;
+A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
+A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;
+A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;
+A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;
+A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;
+A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
+A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;
+A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
+A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;
+A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;
+A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
+A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
+A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;
+A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
+A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;
+A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;
+A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
+A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;
+A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
+A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;
+A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;
+A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;
+A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
+A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;
+A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
+A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;
+A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;
+A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;
+A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
+A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;
+A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
+A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;
+A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;
+A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
+A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
+A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;
+A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
+A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;
+A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;
+A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
+A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;
+A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;
+A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;
+A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;
+A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
+A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;
+A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
+A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;
+A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;
+A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;
+A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;
+A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
+A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;
+A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
+A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
+A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;
+A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
+A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
+A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;
+A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
+A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;
+A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;
+A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;
+A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;
+A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;
+A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;
+A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;
+A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;
+A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;
+A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;
+A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;
+A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;
+A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;
+A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;
+A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;
+A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;
+A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;
+A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;
+A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;
+A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;
+A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;
+A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;
+A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;
+A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;
+A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;
+A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;
+A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;
+A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;
+A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;
+A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;
+A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;
+A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;
+A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;
+A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;
+A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;
+A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;
+A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;
+A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;
+A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;
+A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;
+A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;
+A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;
+A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;
+A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;
+A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;
+A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;
+A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;
+A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;
+A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;
+A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;
+A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;
+A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;
+A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;
+A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;
+A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;
+A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;
+A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;
+A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;
+A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;
+A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;
+A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;
+A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;
+A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;
+A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;
+A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
+A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;
+A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;
+A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
+A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;
+A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
+A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;
+A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;
+A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;
+A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;
+A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
+A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;
+A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
+A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;
+A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
+A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
+A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;
+A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
+A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;
+A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;
+A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;
+A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;
+A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;
+A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;
+A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
+A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;
+A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;
+A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;
+A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;
+A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;
+A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;
+A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;
+A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;
+A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;
+A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;
+A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;
+A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;
+A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;
+A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;
+A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;
+A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;
+A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;
+A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;
+A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;
+A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;
+A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;
+A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;
+A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;
+A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;
+A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;
+A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;
+A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;
+A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;
+A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
+A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;
+A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
+A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;
+A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;
+A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;
+A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;
+A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
+A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;
+A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
+A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;
+A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;
+A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;
+A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;
+A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;
+A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;
+A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;
+A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
+A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
+A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;
+A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
+A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;
+A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;
+A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;
+A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;
+A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;
+A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;
+A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;
+A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;
+A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;
+A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;
+A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
+A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;
+A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;
+A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;
+A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;
+A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;
+A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;
+A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;
+A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
+A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;
+A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;
+A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
+A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;
+A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;
+A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
+A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;
+A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;
+A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
+A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;
+A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;
+A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;
+A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;
+A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;
+A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;
+A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;
+A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;
+A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;
+A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;
+A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;
+A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;
+A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;
+A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;
+A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;
+A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;
+A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;
+A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;
+A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;
+A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;
+A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;
+A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;
+A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;
+A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;
+A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;
+A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;
+A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;
+A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;
+A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;
+A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;
+A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;
+A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;
+A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;
+A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;
+A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;
+A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;
+A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;
+A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
+A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;
+A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
+A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;
+A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;
+A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;
+A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
+A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;
+A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
+A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;
+A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;
+A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;
+A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
+A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;
+A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
+A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;
+A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
+A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
+A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;
+A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
+A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;
+A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;
+A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;
+A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;
+A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;
+A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;
+A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;
+A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;
+A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
+A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;
+A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
+A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
+A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;
+A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;
+A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;
+A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
+A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;
+A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
+A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
+A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
+A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;
+A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
+A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
+A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;
+A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
+A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
+A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
+A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;
+A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
+A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
+A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;
+A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;
+A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;
+A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;
+A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;
+A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;
+A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;
+A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;
+A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;
+A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;
+A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;
+A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;
+A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;
+A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;
+A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;
+A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;
+A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;
+A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;
+A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;
+A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;
+A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;
+A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;
+A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;
+A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;
+A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;
+A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;
+A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;
+A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;
+A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;
+A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;
+A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;
+A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;
+A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;
+A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;
+A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;
+A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;
+A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;
+A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;
+A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;
+A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;
+A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;
+A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;
+A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;
+A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;
+A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;
+A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;
+A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;
+A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;
+A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;
+A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;
+A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;
+A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;
+A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;
+A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;
+A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;
+A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;
+A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;
+A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;
+A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;
+A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;
+A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;
+A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;
+A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;
+A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;
+A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;
+A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;
+A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;
+A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;
+A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;
+A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;
+A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;
+A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;
+A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;
+A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;
+A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;
+A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;
+A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;
+A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;
+A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;
+A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;
+A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;
+A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;
+A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;
+A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;
+A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;
+A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;
+A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;
+A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;
+A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;
+A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;
+A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;
+A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;
+A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;
+A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;
+A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;
+A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;
+A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;
+A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;
+A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;
+A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;
+A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;
+A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;
+A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;
+A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;
+A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;
+A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;
+A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;
+A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;
+A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;
+A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;
+A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;
+A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;
+A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;
+A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;
+A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;
+A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;
+A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;
+A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;
+A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;
+A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;
+A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;
+A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;
+A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
+A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;
+A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
+A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;
+A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;
+A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;
+A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
+A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;
+A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
+A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;
+A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;
+A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
+A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;
+A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
+A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;
+A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;
+A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;
+A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;
+A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;
+A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;
+A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;
+A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;
+A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
+A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;
+A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
+A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;
+A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;
+A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;
+A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;
+A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;
+A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;
+A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;
+A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;
+A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
+A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;
+A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
+A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
+A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;
+A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
+A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;
+A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;
+A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;
+A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;
+A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;
+A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;
+A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;
+A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;
+A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;
+A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;
+A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;
+A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;
+A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;
+A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;
+A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;
+A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;
+A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;
+A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;
+A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;
+A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;
+A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;
+A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;
+A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;
+A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;
+A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;
+A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;
+A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;
+A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;
+A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;
+A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;
+A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;
+A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;
+A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;
+A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
+A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;
+A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
+A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
+A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;
+A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;
+A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;
+A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;
+A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;
+A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;
+A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;
+A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
+A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;
+A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
+A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
+A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
+A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;
+A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
+A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
+A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;
+A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;
+A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;
+A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;
+A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;
+A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;
+A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;
+A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;
+A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
+A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;
+A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;
+A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;
+A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;
+A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;
+A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;
+A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;
+A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;
+A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;
+A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
+A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;
+A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;
+A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
+A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;
+A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;
+A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;
+A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;
+A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;
+A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;
+A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;
+A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;
+A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;
+A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
+A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;
+A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
+A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;
+A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;
+A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;
+A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;
+A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;
+A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;
+A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;
+A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
+A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;
+A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
+A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
+A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;
+A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
+A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;
+A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;
+A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;
+A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;
+A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;
+A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;
+A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;
+A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;
+A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;
+A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;
+A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;
+A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;
+A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;
+A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;
+A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;
+A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;
+A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;
+A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;
+A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
+A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;
+A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
+A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;
+A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;
+A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;
+A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;
+A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;
+A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;
+A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;
+A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;
+A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
+A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;
+A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
+A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
+A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;
+A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
+A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;
+A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;
+A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;
+A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;
+A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;
+A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;
+A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;
+A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;
+A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;
+A491;YI RADICAL LI;So;0;ON;;;;;N;;;;;
+A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;
+A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;
+A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;
+A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;
+A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;
+A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;
+A498;YI RADICAL MI;So;0;ON;;;;;N;;;;;
+A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;
+A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;
+A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;
+A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;
+A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;
+A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;
+A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;
+A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;
+A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;
+A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;
+A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;
+A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;
+A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;
+A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;
+A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;
+A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;
+A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;
+A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;
+A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;
+A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;
+A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;
+A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;
+A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;
+A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;
+A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;
+A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;
+A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;
+A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;
+A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;
+A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;
+A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;
+A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;
+A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;
+A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;
+A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;
+A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;
+A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;
+A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
+A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
+A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
+A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
+F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
+F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
+F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
+F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
+F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
+F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
+F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
+F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
+F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
+F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
+F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
+F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
+F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
+F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
+F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
+F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
+F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
+F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
+F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
+F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
+F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
+F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
+F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
+F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
+F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
+F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
+F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
+F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
+F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
+F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
+F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
+F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
+F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
+F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
+F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
+F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
+F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
+F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
+F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
+F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
+F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
+F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
+F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
+F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
+F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
+F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
+F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
+F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
+F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
+F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
+F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
+F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
+F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
+F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
+F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
+F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
+F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
+F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
+F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
+F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
+F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
+F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
+F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
+F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
+F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
+F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
+F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
+F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
+F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
+F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
+F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
+F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
+F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
+F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
+F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
+F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
+F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
+F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
+F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
+F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
+F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
+F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
+F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;96FB;;;;N;;;;;
+F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
+F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
+F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
+F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
+F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
+F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
+F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
+F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
+F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
+F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
+F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
+F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
+F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
+F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
+F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
+F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
+F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
+F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
+F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
+F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
+F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
+F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
+F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
+F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
+F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
+F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;;
+F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
+F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
+F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
+F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
+F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
+F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
+F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
+F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;;
+F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
+F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
+F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
+F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
+F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;;
+F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
+F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
+F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
+F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
+F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
+F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
+F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
+F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
+F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
+F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
+F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
+F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
+F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
+F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
+F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
+F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
+F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
+F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
+F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
+F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
+F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
+F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
+F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
+F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
+F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
+F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
+F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
+F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
+F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
+F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
+F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
+F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
+F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
+F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
+F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
+F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
+F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
+F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
+F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
+F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
+F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
+F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
+F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
+F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
+F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
+F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
+F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
+F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
+F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
+F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
+F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
+F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
+F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
+F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
+F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
+F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
+F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
+F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;;
+F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
+F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
+F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
+F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
+F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
+F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
+F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
+F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
+F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
+F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
+F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
+F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
+F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
+F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
+F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
+F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
+F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
+F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
+F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
+F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
+F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
+F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
+F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
+F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
+F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
+F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
+F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
+F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
+F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
+F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
+F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;;
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;;
+F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
+F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
+F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
+F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
+F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
+F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
+F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
+F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
+F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
+F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
+F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
+F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
+F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
+F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
+F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
+F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
+F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
+F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
+F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
+F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
+F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
+F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
+F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
+F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
+F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
+F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
+F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
+F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
+F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
+F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
+F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
+F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
+F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
+F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
+F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
+F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
+F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
+F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
+F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
+F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
+F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
+F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;;
+F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
+F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
+FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
+FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
+FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
+FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
+FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
+FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
+FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
+FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
+FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
+FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
+FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
+FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
+FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
+FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
+FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
+FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
+FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
+FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
+FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
+FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
+FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
+FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
+FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
+FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
+FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
+FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
+FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
+FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
+FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
+FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
+FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
+FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;;
+FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
+FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
+FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
+FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;;
+FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
+FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
+FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
+FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
+FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
+FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
+FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
+FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
+FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
+FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
+FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
+FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;;
+FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
+FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ET;<font> 002B;;;;N;;;;;
+FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
+FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
+FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
+FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
+FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
+FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
+FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
+FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
+FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
+FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
+FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
+FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
+FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
+FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
+FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
+FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
+FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
+FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
+FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
+FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
+FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
+FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
+FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
+FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
+FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
+FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
+FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
+FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
+FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
+FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
+FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
+FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
+FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
+FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
+FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
+FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
+FE62;SMALL PLUS SIGN;Sm;0;ET;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
+FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;
+FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;N;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;N;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
+FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;N;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;N;;;;;
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;N;FULLWIDTH OPENING SQUARE BRACKET;;;;
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;N;FULLWIDTH CLOSING SQUARE BRACKET;;;;
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;N;FULLWIDTH OPENING CURLY BRACKET;;;;
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;N;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;N;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;N;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;0;ON;<narrow> 30FB;;;;N;;;;;
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;;
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;;
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
+FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;BN;;;;;N;;;;;
+FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;BN;;;;;N;;;;;
+FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;BN;;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
diff --git a/src/com/ibm/icu/dev/data/unicode/UnicodeData-3.1.0.txt b/src/com/ibm/icu/dev/data/unicode/UnicodeData-3.1.0.txt
new file mode 100755
index 0000000..90f047a
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/UnicodeData-3.1.0.txt
@@ -0,0 +1,12858 @@
+0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
+0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
+0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;HORIZONTAL TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED;;;;
+000B;<control>;Cc;0;S;;;;;N;VERTICAL TABULATION;;;;
+000C;<control>;Cc;0;WS;;;;;N;FORM FEED;;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN;;;;
+000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;B;;;;;N;FILE SEPARATOR;;;;
+001D;<control>;Cc;0;B;;;;;N;GROUP SEPARATOR;;;;
+001E;<control>;Cc;0;B;;;;;N;RECORD SEPARATOR;;;;
+001F;<control>;Cc;0;S;;;;;N;UNIT SEPARATOR;;;;
+0020;SPACE;Zs;0;WS;;;;;N;;;;;
+0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
+0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
+0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
+0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
+0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
+0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
+0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
+002A;ASTERISK;Po;0;ON;;;;;N;;;;;
+002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;;
+0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
+0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
+0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
+0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
+0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
+0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
+0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
+0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
+0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
+0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
+003A;COLON;Po;0;CS;;;;;N;;;;;
+003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
+003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
+0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
+0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
+0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
+0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
+0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
+0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
+0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
+0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
+0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
+0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
+004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
+004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
+004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
+004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
+004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
+004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
+0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
+0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
+0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
+0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
+0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
+0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
+0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
+0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
+0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
+0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
+005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
+005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
+005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
+005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
+005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
+0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
+0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
+0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
+0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
+0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
+0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
+0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
+0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
+0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
+006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
+006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
+006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
+006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
+006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
+006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
+0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
+0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
+0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
+0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
+0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
+0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
+0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
+0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
+0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
+0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
+007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
+007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
+007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
+007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
+007E;TILDE;Sm;0;ON;;;;;N;;;;;
+007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;BN;;;;;N;;;;;
+0081;<control>;Cc;0;BN;;;;;N;;;;;
+0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
+0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
+0084;<control>;Cc;0;BN;;;;;N;;;;;
+0085;<control>;Cc;0;B;;;;;N;NEXT LINE;;;;
+0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
+0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
+0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
+0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
+008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
+008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE DOWN;;;;
+008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE UP;;;;
+008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
+008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
+008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
+0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
+0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
+0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
+0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
+0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
+0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
+0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
+0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
+0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
+0099;<control>;Cc;0;BN;;;;;N;;;;;
+009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
+009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
+009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
+009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
+009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
+009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
+00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
+00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
+00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
+00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
+00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
+00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
+00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
+00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
+00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
+00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
+00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
+00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;2;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
+00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
+00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;1;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;;
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
+00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
+00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
+00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
+00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
+00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
+00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
+00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6;
+00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
+00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
+00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
+00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
+00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
+00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
+00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
+00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
+00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
+00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
+00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
+00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
+00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
+00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
+00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
+00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
+00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
+00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
+00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
+00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
+00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
+00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
+00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
+00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
+00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
+00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
+00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
+00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
+00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
+00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
+00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6
+00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
+00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
+00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
+00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
+00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
+00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
+00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
+00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
+00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
+00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
+00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
+00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
+00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
+00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
+00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
+00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
+00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
+00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
+00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
+00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
+00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
+00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
+00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
+00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
+0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
+0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
+0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
+0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
+0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
+0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
+0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
+0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
+0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
+0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
+010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
+010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
+010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
+010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
+010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
+010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
+0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
+0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
+0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
+0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
+0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
+0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
+0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
+0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
+0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
+0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
+011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
+011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
+011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
+011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
+011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
+011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
+0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
+0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
+0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
+0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
+0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
+0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
+0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
+0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
+0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
+0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
+012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
+012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
+012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
+012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
+012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
+012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
+0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
+0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
+0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
+0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
+0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
+0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
+0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
+0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
+0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
+013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
+013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
+013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
+013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
+013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
+013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
+0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
+0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
+0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
+0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
+0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
+0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
+0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
+0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
+0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
+014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
+014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
+014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
+014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
+0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
+0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
+0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
+0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
+0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
+0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
+0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
+0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
+0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
+0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
+015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
+015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
+015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
+015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
+015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F;
+015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E
+0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
+0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
+0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163;
+0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162
+0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
+0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
+0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
+0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
+0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
+0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
+016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
+016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
+016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
+016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
+016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
+016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
+0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
+0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
+0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
+0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
+0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
+0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
+0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
+0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
+0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
+0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
+017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
+017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
+017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
+017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
+017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
+017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
+0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;;
+0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
+0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
+0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
+0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
+0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
+0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
+0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
+0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
+0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256;
+018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
+018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
+018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
+018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
+018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
+018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
+0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
+0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
+0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
+0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
+0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
+0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6
+0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
+0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
+0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
+0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
+019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;;;
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
+019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
+019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;;;
+019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275;
+01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
+01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
+01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2
+01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
+01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
+01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280;
+01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
+01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
+01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
+01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;
+01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
+01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
+01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
+01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
+01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
+01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
+01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
+01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
+01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
+01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
+01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
+01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
+01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
+01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
+01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
+01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
+01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
+01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
+01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
+01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7
+01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
+01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
+01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
+01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
+01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
+01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
+01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
+01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
+01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
+01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
+01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
+01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
+01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
+01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
+01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
+01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
+01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
+01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
+01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
+01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
+01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
+01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
+01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
+01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
+01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
+01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
+01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2
+01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
+01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
+01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
+01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
+01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
+01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
+01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
+01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
+01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
+01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
+01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
+01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
+01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
+01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
+01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
+01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
+01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;
+01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;
+01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;
+01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8
+01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
+01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
+01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC
+01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
+01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
+0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
+0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
+0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
+0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
+0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
+0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
+0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
+0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
+0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
+0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
+020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
+020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
+020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
+020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
+020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
+020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
+0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
+0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
+0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
+0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
+0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
+0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
+0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
+0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
+0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219;
+0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218
+021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B;
+021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A
+021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;
+021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C
+021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;
+021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E
+0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223;
+0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222
+0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225;
+0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224
+0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227;
+0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226
+0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229;
+0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228
+022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B;
+022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A
+022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D;
+022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C
+022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F;
+022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E
+0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231;
+0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230
+0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233;
+0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;;
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;;
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
+0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
+0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
+0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
+0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
+0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
+0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
+0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
+025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
+025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
+025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
+025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
+025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
+025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
+0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
+0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
+0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
+0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
+0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
+0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
+0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
+0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
+026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
+026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
+026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
+026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
+0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;;
+0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
+0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
+0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
+0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
+0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
+0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
+0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
+0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
+027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
+027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;;
+027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
+027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
+0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;*;01A6;;01A6
+0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
+0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
+0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
+0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
+0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
+0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
+0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
+0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
+0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;;
+028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
+028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
+028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;;
+028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
+028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
+028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
+0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
+0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
+0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
+0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
+0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
+0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
+0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
+0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
+029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
+029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
+029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
+029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
+029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
+029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
+02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
+02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
+02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
+02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
+02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
+02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
+02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
+02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
+02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
+02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
+02B9;MODIFIER LETTER PRIME;Sk;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Sk;0;ON;;;;;N;;;;;
+02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
+02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
+02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
+02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
+02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
+02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
+02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
+02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
+02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EC;MODIFIER LETTER VOICING;Sk;0;ON;;;;;N;;;;;
+02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
+02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;Tonos;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399
+0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
+0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;
+034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;
+034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;
+034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;
+034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;
+0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;
+0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;;
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
+0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
+0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
+0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
+0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
+0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
+0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
+0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
+0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
+0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
+039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
+039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
+039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
+039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
+039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
+039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
+03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
+03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
+03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
+03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
+03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
+03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
+03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
+03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
+03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
+03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
+03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
+03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
+03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
+03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
+03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
+03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
+03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
+03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
+03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
+03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
+03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
+03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
+03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
+03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
+03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
+03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
+03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
+03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
+03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
+03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
+03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
+03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
+03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
+03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
+03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
+03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
+03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
+03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
+03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
+03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;;
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;
+03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;
+03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;
+03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;
+03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0
+03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
+03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
+03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
+03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
+03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
+03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
+03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
+03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
+03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
+03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
+03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
+03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
+03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
+03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
+03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03A3;;03A3
+03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
+03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;
+03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395
+0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450;
+0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
+0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
+0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
+0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
+0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
+0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
+0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
+0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
+0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
+040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
+040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
+040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
+040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D;
+040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
+040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
+0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
+0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
+0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
+0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
+0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
+0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
+0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
+0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
+0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
+0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
+041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
+041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
+041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
+041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
+041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
+041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
+0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
+0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
+0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
+0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
+0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
+0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
+0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
+0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
+0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
+0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
+042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
+042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
+042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
+042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
+042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
+042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
+0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
+0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
+0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
+0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
+0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
+0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
+0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
+0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
+0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
+0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
+043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
+043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
+043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
+043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
+043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
+043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
+0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
+0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
+0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
+0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
+0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
+0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
+0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
+0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
+0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
+0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
+044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
+044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
+044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
+044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
+044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
+044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
+0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400
+0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
+0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
+0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
+0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
+0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
+0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
+0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
+0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
+0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
+045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
+045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
+045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
+045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D
+045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
+045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
+0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
+0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
+0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
+0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
+0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
+0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
+0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
+0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
+0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
+0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
+046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
+046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
+046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
+046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
+046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
+046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
+0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
+0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
+0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
+0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
+0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
+0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
+0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
+0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
+0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
+0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
+047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
+047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
+047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
+047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
+047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
+047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
+0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
+0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
+0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
+0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;;
+0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;
+048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C
+048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;
+048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E
+0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
+0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
+0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
+0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
+0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
+0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
+0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
+0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
+0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
+0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
+049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
+049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
+049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
+049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
+049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
+049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
+04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
+04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
+04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
+04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
+04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
+04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
+04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
+04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
+04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
+04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
+04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
+04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
+04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
+04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
+04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
+04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
+04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
+04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
+04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
+04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
+04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
+04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
+04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
+04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
+04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
+04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
+04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
+04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
+04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
+04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
+04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;;
+04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
+04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
+04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
+04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
+04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
+04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
+04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
+04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
+04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
+04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
+04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
+04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
+04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
+04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
+04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
+04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
+04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
+04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
+04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
+04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
+04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
+04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
+04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
+04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
+04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
+04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
+04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
+04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
+04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;
+04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC
+04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
+04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
+04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
+04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
+04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
+04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
+04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
+04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
+04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
+04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
+0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
+0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
+0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
+0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
+0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
+0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
+0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
+0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
+0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
+053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
+053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
+053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
+053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
+053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
+053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
+0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
+0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
+0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
+0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
+0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
+0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
+0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
+0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
+0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
+0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
+054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
+054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
+054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
+054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
+054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
+054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
+0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
+0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
+0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
+0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
+0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
+0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
+0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
+0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
+055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
+055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
+055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
+055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
+055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
+0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
+0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
+0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
+0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
+0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
+0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
+0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
+0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
+056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
+056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
+056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
+056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
+056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
+056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
+0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
+0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
+0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
+0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
+0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
+0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
+0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
+0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
+0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
+0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
+057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
+057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
+057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
+057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
+057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
+057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
+0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
+0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
+0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
+0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
+0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
+0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
+0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
+0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
+058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;;
+0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;;
+05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;;
+05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;;
+05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;;
+05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
+05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
+05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
+05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
+05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
+05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
+05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
+05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
+05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
+05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
+05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
+05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
+05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
+05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
+05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
+05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
+05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
+05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
+05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
+05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
+05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
+05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
+05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
+05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
+05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
+05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
+05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
+0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;;
+0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;
+0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
+066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Me;0;NSM;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;
+06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
+06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
+06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
+06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
+06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
+06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
+06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
+06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
+06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
+06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
+06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;;
+06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;;
+0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;;
+0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;;
+0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;;
+0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;;
+0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;;
+070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;;
+070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;;
+070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;;
+070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;;
+0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;;
+0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;;
+0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;;
+0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;;
+0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;;
+0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;;
+0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;;
+0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;;
+0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;;
+071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;;
+071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;;
+071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;;
+071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;;
+071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;;
+0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;;
+0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;;
+0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;;
+0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;;
+0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;;
+0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;;
+0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;;
+0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;;
+0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;;
+0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;;
+072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;;
+072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;;
+072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;;
+0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;;
+0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;;
+073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;;
+073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;;
+0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;;
+0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;;
+0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;;
+0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;;
+074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;;
+0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;
+0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;
+0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;
+0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;
+0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;
+0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;
+0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;
+0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;
+078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;
+078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;
+078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;
+078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;
+078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;
+078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;
+0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;
+0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;
+0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;
+0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;
+0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;
+0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;
+0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;
+0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;
+0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;
+079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;
+079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;
+079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;
+079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;
+079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;
+079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;
+07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;
+07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;
+07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;
+07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;
+07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;
+07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;
+07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;
+07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;
+07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;
+07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;
+07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;
+07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;
+07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;
+07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;
+07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;
+07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;
+07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
+0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
+0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
+0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
+0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
+090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
+090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
+090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
+090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
+0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
+0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
+0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
+0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
+0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
+0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
+0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
+0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
+091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
+091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
+0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
+0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
+0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
+0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
+092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
+092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
+092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
+092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
+0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
+0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
+0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
+0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
+0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
+0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
+0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
+093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
+094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
+0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
+095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
+095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
+095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
+095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
+095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
+095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
+0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
+0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
+0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
+0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
+0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
+0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
+098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
+098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
+0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
+0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
+0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
+0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
+0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
+0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
+099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
+099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
+099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
+099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
+099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
+099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
+09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
+09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
+09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
+09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
+09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
+09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
+09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
+09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
+09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
+09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
+09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
+09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
+09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
+09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;;
+09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
+09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
+09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
+09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
+09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
+09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
+09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
+09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
+09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
+09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
+09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
+09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
+0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
+0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
+0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
+0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
+0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
+0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
+0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
+0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
+0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
+0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
+0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
+0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
+0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
+0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
+0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
+0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
+0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
+0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
+0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
+0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;;
+0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
+0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;;
+0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
+0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
+0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
+0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
+0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
+0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
+0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
+0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
+0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
+0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
+0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
+0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
+0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
+0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
+0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
+0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
+0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
+0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
+0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
+0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
+0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
+0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
+0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
+0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
+0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
+0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
+0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
+0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
+0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
+0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
+0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
+0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
+0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
+0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
+0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
+0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
+0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
+0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
+0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
+0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
+0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
+0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
+0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
+0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
+0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
+0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
+0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
+0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
+0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
+0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
+0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
+0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
+0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
+0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
+0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
+0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;;
+0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
+0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
+0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
+0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
+0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
+0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
+0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
+0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
+0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
+0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
+0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
+0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
+0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
+0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
+0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
+0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
+0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
+0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
+0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
+0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
+0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
+0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
+0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
+0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
+0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
+0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
+0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
+0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
+0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
+0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
+0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
+0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
+0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
+0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
+0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
+0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
+0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
+0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
+0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
+0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
+0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
+0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
+0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
+0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
+0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
+0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
+0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
+0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
+0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
+0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
+0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
+0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
+0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
+0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
+0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
+0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
+0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
+0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
+0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
+0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
+0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
+0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
+0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
+0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
+0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
+0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
+0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
+0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
+0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
+0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
+0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
+0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
+0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
+0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
+0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
+0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
+0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
+0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
+0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
+0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
+0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
+0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
+0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
+0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
+0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
+0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
+0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
+0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
+0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
+0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
+0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
+0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
+0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
+0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
+0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
+0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
+0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
+0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
+0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
+0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
+0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
+0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
+0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
+0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
+0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0CC6;KANNADA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
+0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
+0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
+0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
+0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
+0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
+0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
+0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
+0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
+0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
+0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
+0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
+0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
+0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
+0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
+0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
+0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
+0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
+0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
+0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
+0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
+0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
+0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
+0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
+0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
+0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
+0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
+0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
+0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
+0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
+0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
+0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
+0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
+0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
+0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
+0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
+0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
+0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
+0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
+0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
+0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
+0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
+0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
+0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;
+0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;
+0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;
+0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;
+0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;
+0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;
+0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;
+0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;
+0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;
+0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;
+0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;
+0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;
+0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;
+0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;
+0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;
+0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;
+0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;
+0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;
+0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;
+0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;
+0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;
+0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;
+0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;
+0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;
+0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;
+0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;
+0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;
+0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;
+0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;
+0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;
+0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;
+0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;
+0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
+0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
+0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
+0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
+0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
+0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
+0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
+0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
+0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
+0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
+0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
+0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
+0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
+0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
+0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
+0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
+0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
+0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
+0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
+0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
+0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
+0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
+0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
+0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
+0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
+0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
+0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
+0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
+0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
+0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
+0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
+0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
+0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
+0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
+0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
+0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
+0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
+0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
+0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
+0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
+0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
+0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
+0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
+0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
+0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
+0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
+0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
+0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
+0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;;
+0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
+0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
+0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
+0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
+0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
+0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
+0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
+0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
+0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
+0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
+0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
+0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
+0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
+0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
+0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
+0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
+0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
+0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
+0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
+0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
+0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
+0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
+0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
+0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
+0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
+0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
+0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
+0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
+0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
+0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
+0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
+0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
+0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
+0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
+0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
+0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
+0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
+0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
+0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
+0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
+0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
+0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
+0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
+0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;;
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;;
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;;
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;;
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
+0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;;
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;;
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
+0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;;
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;TIBETAN RIGHT BRACE;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;;
+0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
+0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
+0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
+0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
+0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
+0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
+0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
+0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;
+0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
+0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
+0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
+0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
+0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
+0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
+0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
+0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
+0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
+0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
+0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
+0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
+0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
+0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
+0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
+0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;
+0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
+0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;;
+0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
+0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;
+0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
+0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
+0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
+0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
+0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
+0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;;
+0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
+0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
+0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
+0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;
+0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;;
+0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;;
+0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;;
+0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;;
+0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;;
+0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;
+0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;
+0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;;
+0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;;
+0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;;
+0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;;
+0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;;
+0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;;
+0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;;
+0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;;
+0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;;
+0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;;
+0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;;
+0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;;
+1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;;
+1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;;
+1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;;
+1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;;
+1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;;
+1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;;
+1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;;
+1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;;
+1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;;
+1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;;
+100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;;
+100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;;
+100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;;
+100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;;
+100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;;
+100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;;
+1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;;
+1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;;
+1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;;
+1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;;
+1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;;
+1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;;
+1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;;
+1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;;
+1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;;
+1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;;
+101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;;
+101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;;
+101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;;
+101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;;
+101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;;
+101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;;
+1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;;
+1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;;
+1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;;
+1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;;
+1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;;
+1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;;
+1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;;
+1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
+102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
+102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;;
+1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;;
+104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;;
+104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;;
+104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;;
+104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;;
+104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;;
+1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;;
+1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;;
+1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;;
+10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;;
+1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;;
+1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
+1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;;
+1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;;
+1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;;
+1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
+1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;;
+120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
+120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;;
+1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;;
+1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;;
+1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;;
+1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;;
+1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;;
+1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;;
+1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;;
+1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;;
+1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;;
+121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
+121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;;
+1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;;
+1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;;
+1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;;
+1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;;
+1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;;
+1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;;
+1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;;
+1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;;
+1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;;
+122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;;
+122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;;
+122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;;
+1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;;
+1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
+1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;;
+1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
+123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;;
+123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
+123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;;
+1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;;
+1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;;
+1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;;
+1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;;
+1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;;
+124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;;
+124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;;
+124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;;
+124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;;
+1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;;
+1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;;
+1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;;
+1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;;
+1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;;
+1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;;
+1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;;
+1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;;
+125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;;
+125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;;
+125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;;
+125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;;
+1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;;
+1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
+1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;;
+1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;;
+126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
+126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;;
+126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;;
+1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;;
+1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
+1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;;
+1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;;
+127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
+127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;;
+1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;;
+1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;;
+1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;;
+1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;;
+1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;;
+1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;;
+128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;;
+128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;;
+128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;;
+128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;;
+1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;;
+1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
+1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;;
+1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
+1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;;
+129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
+129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
+129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;;
+12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;;
+12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;;
+12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;;
+12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;;
+12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;;
+12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;;
+12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;;
+12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;;
+12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;;
+12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
+12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;;
+12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;;
+12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;;
+12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;;
+12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;;
+12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;;
+12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;;
+12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;;
+12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;;
+12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;;
+12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;;
+12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;;
+12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;;
+12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;;
+12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;;
+12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;;
+12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;;
+12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;;
+12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;;
+12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
+12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;;
+12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;;
+12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;;
+12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;;
+12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;;
+12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;;
+12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;;
+12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;;
+12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
+12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;;
+12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
+12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;;
+12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
+12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;;
+12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;;
+12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;;
+12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
+12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;;
+12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;;
+12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
+12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;;
+12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;;
+12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;;
+12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;
+1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;;
+1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;;
+1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
+1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;;
+1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;;
+1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;;
+130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
+130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;;
+1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;;
+1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;;
+1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;;
+1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;;
+1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;;
+131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;;
+131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;;
+1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;;
+1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;;
+1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;;
+1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
+1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;;
+1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;;
+1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;;
+1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;;
+132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;;
+132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;;
+132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;;
+1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;;
+1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;;
+1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;;
+1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;;
+1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;;
+1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;;
+1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;;
+1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;;
+1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;;
+1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;;
+133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;;
+133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;;
+133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;;
+133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;;
+133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;;
+133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;;
+1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;;
+1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;;
+1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;;
+1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;;
+1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;;
+1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;;
+1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;;
+1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;;
+134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
+134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;;
+134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;;
+1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;;
+1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
+1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;;
+1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;;
+1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;;
+1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;;
+135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;;
+1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;;
+1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;;
+1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;;
+1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;;
+1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;;
+1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;;
+1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;;
+1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1369;ETHIOPIC DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+136A;ETHIOPIC DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+136B;ETHIOPIC DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+136C;ETHIOPIC DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+136D;ETHIOPIC DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+136E;ETHIOPIC DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+136F;ETHIOPIC DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1370;ETHIOPIC DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1371;ETHIOPIC DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;;
+1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;;
+1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;;
+137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;;
+137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
+13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;;
+13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;;
+13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;;
+13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;;
+13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;;
+13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;;
+13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;;
+13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;;
+13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;;
+13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;;
+13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;;
+13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;;
+13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;;
+13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;;
+13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;;
+13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;;
+13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;;
+13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;;
+13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;;
+13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;;
+13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;;
+13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;;
+13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;;
+13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;;
+13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;;
+13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;;
+13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;;
+13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;;
+13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;;
+13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;;
+13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;;
+13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;;
+13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;;
+13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;;
+13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;;
+13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;;
+13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;;
+13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;;
+13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;;
+13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;;
+13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;;
+13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;;
+13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;;
+13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;;
+13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;;
+13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;;
+13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;;
+13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;;
+13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;;
+13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;;
+13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;;
+13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;;
+13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;;
+13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;;
+13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;;
+13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;;
+13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;;
+13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;;
+13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;;
+13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;;
+13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;;
+13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;;
+13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;;
+13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;;
+13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;;
+13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;;
+13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;;
+13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;;
+13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;;
+13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;;
+13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;;
+13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;;
+13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;;
+13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;;
+13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;;
+13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;;
+13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;;
+13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;;
+13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;;
+13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;;
+13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;;
+13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;;
+13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;;
+13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;;
+13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;;
+1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;
+1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;
+1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;
+1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;
+1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;
+1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;
+1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;
+1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;
+1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;
+140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;
+140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;
+140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;
+140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;
+140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;
+140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;
+1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;
+1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;
+1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;
+1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;
+1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;
+1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;
+1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;
+1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;
+1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;
+1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;
+141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;
+141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;
+141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;
+141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;
+141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;
+1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;
+1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;
+1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;
+1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;
+1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;
+1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;
+1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;
+1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;
+1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;
+1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;
+142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;
+142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;
+142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;
+142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;
+142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;
+142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;
+1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;
+1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;
+1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;
+1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;
+1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;
+1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;
+1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;
+1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;
+1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;
+1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;
+143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;
+143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;
+143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;
+143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;
+143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;
+143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;
+1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;
+1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;
+1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;
+1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;
+1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;
+1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;
+1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;
+1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;
+144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;
+144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;
+144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;
+144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;
+144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;
+144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;
+1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;
+1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;
+1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;
+1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;
+1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;
+1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;
+1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;
+1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;
+1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;
+1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;
+145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;
+145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;
+145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;
+145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;
+145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;
+145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;
+1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;
+1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;
+1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;
+1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;
+1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;
+1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;
+1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;
+1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;
+1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;
+1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;
+146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;
+146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;
+146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;
+146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;
+146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;
+146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;
+1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;
+1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;
+1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;
+1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;
+1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;
+1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;
+1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;
+1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;
+1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;
+1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;
+147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;
+147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;
+147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;
+147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;
+147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;
+147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;
+1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;
+1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;
+1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;
+1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;
+1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;
+1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;
+1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;
+1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;
+1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;
+1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;
+148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;
+148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;
+148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;
+148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;
+148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;
+148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;
+1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;
+1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;
+1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;
+1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;
+1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;
+1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;
+1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;
+1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;
+1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;
+1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;
+149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;
+149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;
+149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;
+149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;
+149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;
+149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;
+14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;
+14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;
+14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;
+14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;
+14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;
+14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;
+14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;
+14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;
+14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;
+14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;
+14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;
+14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;
+14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;
+14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;
+14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;
+14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;
+14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;
+14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;
+14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;
+14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;
+14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;
+14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;
+14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;
+14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;
+14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;
+14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;
+14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;
+14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;
+14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;
+14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;
+14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;
+14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;
+14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;
+14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;
+14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;
+14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;
+14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;
+14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;
+14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;
+14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;
+14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;
+14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;
+14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;
+14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;
+14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;
+14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;
+14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;
+14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;
+14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;
+14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;
+14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;
+14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;
+14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;
+14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;
+14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;
+14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;
+14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;
+14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;
+14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;
+14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;
+14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;
+14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;
+14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;
+14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;
+14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;
+14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;
+14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;
+14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;
+14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;
+14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;
+14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;
+14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;
+14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;
+14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;
+14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;
+14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;
+14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;
+14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;
+14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;
+14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;
+14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;
+14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;
+14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;
+14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;
+14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;
+14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;
+14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;
+14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;
+14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;
+14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;
+14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;
+14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;
+14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;
+14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;
+14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;
+14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;
+1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;
+1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;
+1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;
+1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;
+1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;
+1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;
+1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;
+1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;
+1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;
+1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;
+150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;
+150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;
+150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;
+150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;
+150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;
+150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;
+1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;
+1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;
+1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;
+1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;
+1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;
+1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;
+1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;
+1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;
+1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;
+1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;
+151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;
+151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;
+151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;
+151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;
+151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;
+151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;
+1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;
+1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;
+1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;
+1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;
+1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;
+1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;
+1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;
+1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;
+1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;
+1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;
+152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;
+152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;
+152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;
+152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;
+152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;
+152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;
+1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;
+1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;
+1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;
+1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;
+1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;
+1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;
+1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;
+1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;
+1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;
+1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;
+153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;
+153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;
+153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;
+153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;
+153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;
+153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;
+1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;
+1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;
+1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;
+1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;
+1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;
+1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;
+1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;
+1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;
+1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;
+1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;
+154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;
+154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;
+154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;
+154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;
+154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;
+154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;
+1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;
+1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;
+1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;
+1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;
+1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;
+1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;
+1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;
+1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;
+1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;
+1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;
+155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;
+155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;
+155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;
+155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;
+155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;
+155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;
+1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;
+1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;
+1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;
+1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;
+1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;
+1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;
+1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;
+1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;
+1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;
+1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;
+156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;
+156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;
+156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;
+156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;
+156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;
+156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;
+1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;
+1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;
+1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;
+1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;
+1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;
+1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;
+1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;
+1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;
+1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;
+1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;
+157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;
+157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;
+157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;
+157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;
+157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;
+157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;
+1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;
+1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;
+1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;
+1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;
+1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;
+1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;
+1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;
+1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;
+1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;
+1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;
+158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;
+158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;
+158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;
+158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;
+158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;
+158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;
+1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;
+1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;
+1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;
+1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;
+1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;
+1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;
+1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;
+1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;
+1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;
+1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;
+159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;
+159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;
+159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;
+159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;
+159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;
+159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;
+15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;
+15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;
+15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;
+15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;
+15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;
+15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;
+15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;
+15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;
+15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;
+15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;
+15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;
+15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;
+15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;
+15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;
+15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;
+15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;
+15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;
+15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;
+15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;
+15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;
+15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;
+15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;
+15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;
+15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;
+15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;
+15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;
+15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;
+15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;
+15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;
+15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;
+15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;
+15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;
+15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;
+15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;
+15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;
+15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;
+15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;
+15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;
+15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;
+15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;
+15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;
+15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;
+15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;
+15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;
+15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;
+15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;
+15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;
+15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;
+15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;
+15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;
+15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;
+15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;
+15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;
+15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;
+15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;
+15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;
+15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;
+15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;
+15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;
+15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;
+15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;
+15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;
+15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;
+15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;
+15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;
+15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;
+15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;
+15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;
+15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;
+15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;
+15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;
+15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;
+15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;
+15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;
+15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;
+15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;
+15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;
+15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;
+15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;
+15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;
+15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;
+15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;
+15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;
+15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;
+15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;
+15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;
+15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;
+15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;
+15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;
+15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;
+15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;
+15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;
+15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;
+15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;
+15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;
+15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;
+1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;
+1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;
+1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;
+1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;
+1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;
+1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;
+1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;
+1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;
+1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;
+1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;
+160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;
+160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;
+160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;
+160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;
+160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;
+160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;
+1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;
+1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;
+1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;
+1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;
+1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;
+1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;
+1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;
+1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;
+1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;
+1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;
+161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;
+161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;
+161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;
+161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;
+161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;
+161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;
+1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;
+1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;
+1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;
+1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;
+1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;
+1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;
+1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;
+1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;
+1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;
+1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;
+162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;
+162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;
+162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;
+162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;
+162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;
+162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;
+1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;
+1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;
+1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;
+1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;
+1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;
+1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;
+1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;
+1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;
+1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;
+1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;
+163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;
+163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;
+163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;
+163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;
+163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;
+163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;
+1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;
+1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;
+1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;
+1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;
+1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;
+1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;
+1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;
+1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;
+1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;
+1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;
+164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;
+164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;
+164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;
+164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;
+164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;
+164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;
+1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;
+1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;
+1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;
+1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;
+1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;
+1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;
+1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;
+1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;
+1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;
+1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;
+165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;
+165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;
+165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;
+165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;
+165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;
+165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;
+1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;
+1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;
+1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;
+1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;
+1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;
+1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;
+1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;
+1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;
+1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;
+1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;
+166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
+166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
+166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
+166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
+166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
+166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
+1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
+1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;
+1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;
+1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;
+1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;
+1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;
+1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;
+1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;
+1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;
+1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;
+1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;
+1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;
+1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;
+1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;
+1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;
+1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;
+1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;
+168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;
+168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;
+168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;
+168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;
+168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;
+168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;
+1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;
+1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;
+1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;
+1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;
+1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;
+1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;
+1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;
+1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;
+1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;
+1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;
+169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;
+169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;N;;;;;
+169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;;
+16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;
+16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;
+16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;
+16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;
+16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;
+16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;
+16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;
+16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;
+16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;
+16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;
+16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;
+16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;
+16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;
+16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;
+16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;
+16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;
+16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;
+16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;
+16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;
+16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;
+16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;
+16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;
+16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;
+16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;
+16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;
+16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;
+16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;
+16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;
+16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;
+16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;
+16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;
+16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;
+16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;
+16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;
+16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;
+16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;
+16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;
+16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;
+16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;
+16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;
+16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;
+16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;
+16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;
+16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;
+16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;
+16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;
+16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;
+16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;
+16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;
+16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;
+16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;
+16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;
+16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;
+16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;
+16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;
+16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;
+16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;
+16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;
+16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;
+16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;
+16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;
+16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;
+16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;
+16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;
+16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;
+16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;
+16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;
+16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;
+16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;
+16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;
+16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;
+16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;;
+16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;;
+16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;;
+1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;
+1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;
+1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;
+1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;
+1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;
+1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;
+1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;
+1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;
+1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;
+1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;
+178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;
+178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;
+178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;
+178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;
+178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;
+178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;
+1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;
+1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;
+1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;
+1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;
+1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;
+1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;
+1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;
+1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;
+1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;
+1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;
+179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;
+179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;
+179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;
+179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;
+179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;
+179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;
+17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;
+17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;
+17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;
+17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;;;;
+17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;;;;
+17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;
+17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;
+17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;
+17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;
+17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;
+17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;
+17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;
+17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;
+17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;
+17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;
+17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;
+17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;
+17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;
+17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;
+17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;
+17B4;KHMER VOWEL INHERENT AQ;Mc;0;L;;;;;N;;;;;
+17B5;KHMER VOWEL INHERENT AA;Mc;0;L;;;;;N;;;;;
+17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;
+17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;
+17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;
+17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;
+17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;
+17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;
+17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;
+17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;
+17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;
+17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;
+17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;
+17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;
+17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;
+17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;
+17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;
+17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;
+17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;
+17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;;;;
+17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;
+17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;
+17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;
+17D7;KHMER SIGN LEK TOO;Po;0;L;;;;;N;;;;;
+17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;;
+17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;
+17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;
+17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;
+17DC;KHMER SIGN AVAKRAHASANYA;Po;0;L;;;;;N;;;;;
+17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;
+1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;
+1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;
+1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;
+1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;
+1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;
+1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;
+1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;
+1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;
+180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;
+180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Cf;0;BN;;;;;N;;;;;
+180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Cf;0;BN;;;;;N;;;;;
+180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Cf;0;BN;;;;;N;;;;;
+180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;;
+1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;;
+1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;;
+1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;;
+1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;;
+1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;;
+1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;;
+1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;;
+1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;;
+1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;;
+1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;;
+182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;;
+182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;;
+182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;;
+182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;;
+182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;;
+182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;;
+1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;;
+1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;;
+1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;;
+1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;;
+1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;;
+1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;;
+1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;;
+1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;;
+183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;;
+183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;;
+183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;;
+1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;;
+1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;;
+1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;;
+1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;;
+1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;;
+1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;;
+1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;;
+1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;;
+1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;;
+1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;;
+184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;;
+184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;;
+184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;;
+184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;;
+184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;;
+184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;;
+1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;;
+1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;;
+1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;;
+1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;;
+1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;;
+1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;;
+1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;;
+1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;;
+1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;;
+1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;;
+185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;;
+185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;;
+185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;;
+185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;;
+185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;;
+185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;;
+1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;;
+1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;;
+1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;;
+1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;;
+1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;;
+1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;;
+1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;;
+1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;;
+1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;;
+1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;;
+186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;;
+186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;;
+186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;;
+186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;;
+186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;;
+186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;;
+1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;;
+1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;;
+1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;;
+1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;;
+1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;;
+1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
+1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
+1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
+1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
+1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
+1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
+1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;
+1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;
+1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;;
+1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;;
+1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;
+1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;
+1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;
+188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;;
+188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;;
+188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;;
+188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;;
+1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;;
+1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;;
+1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;;
+1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;;
+1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;;
+189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;;
+189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;;
+189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;;
+18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;;
+18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;;
+18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;;
+18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;;
+18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;;
+18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;;
+18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;;
+1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
+1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
+1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
+1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
+1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
+1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
+1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
+1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
+1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
+1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
+1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
+1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
+1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
+1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
+1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
+1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
+1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
+1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
+1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
+1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
+1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
+1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
+1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
+1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
+1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
+1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
+1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
+1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
+1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C
+1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
+1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
+1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
+1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
+1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
+1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
+1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
+1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
+1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
+1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
+1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
+1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
+1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
+1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
+1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
+1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
+1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
+1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
+1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
+1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
+1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
+1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
+1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
+1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
+1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
+1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
+1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
+1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
+1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
+1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
+1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
+1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
+1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
+1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
+1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
+1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
+1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
+1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
+1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
+1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
+1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
+1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
+1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
+1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
+1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
+1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
+1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
+1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
+1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
+1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
+1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
+1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
+1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
+1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
+1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
+1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
+1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
+1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
+1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
+1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
+1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
+1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
+1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
+1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
+1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
+1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
+1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
+1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
+1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
+1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
+1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
+1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
+1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
+1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
+1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
+1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
+1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
+1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
+1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
+1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
+1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
+1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
+1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
+1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
+1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
+1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
+1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
+1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
+1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
+1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
+1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
+1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
+1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
+1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
+1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
+1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
+1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
+1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
+1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
+1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
+1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
+1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
+1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
+1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
+1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
+1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
+1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
+1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
+1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
+1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
+1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
+1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
+1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
+1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
+1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
+1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
+1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
+1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
+1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
+1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
+1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
+1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
+1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
+1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
+1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
+1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
+1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
+1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
+1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
+1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
+1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
+1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
+1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
+1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
+1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
+1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
+1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
+1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC
+1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
+1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
+1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
+1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
+1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
+1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
+1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
+1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
+1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6
+1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
+1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
+1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
+1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
+1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
+1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
+1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
+1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
+1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
+1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
+1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
+1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
+1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
+1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
+1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6
+1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
+1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
+1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
+1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
+1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
+1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
+1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
+1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
+1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
+1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
+1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
+1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
+1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
+1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
+1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
+1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
+1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8
+1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
+1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
+1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
+1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
+1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
+1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
+1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
+1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
+1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
+1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
+1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
+1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
+1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
+1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
+1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
+1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
+1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
+1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
+1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
+1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
+1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
+1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
+1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
+1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
+1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
+1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
+1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
+1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
+1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
+1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
+1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
+1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
+1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
+1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
+1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
+1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
+1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
+1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
+1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
+1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
+1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
+1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
+1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
+1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
+1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
+1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
+1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
+1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
+1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
+1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
+1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
+1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
+1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
+1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
+1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
+1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
+1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
+1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
+1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
+1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
+1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
+1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
+1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
+1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
+1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
+1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
+1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
+1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
+1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
+1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
+1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
+1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
+1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
+1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
+1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
+1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
+1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
+1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
+1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
+1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
+1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
+1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
+1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
+1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
+1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
+1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
+1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
+1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
+1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
+1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
+1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
+1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
+1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
+1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
+1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
+1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
+1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
+1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
+1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
+1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
+1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
+1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
+1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
+1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
+1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
+1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
+1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
+1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
+1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
+1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
+1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
+1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
+1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
+1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
+1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
+1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
+1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
+1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
+1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
+1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
+1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
+1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
+1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
+1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
+1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
+1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
+1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
+1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
+1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
+1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
+1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
+1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
+1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
+1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
+1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
+1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
+1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
+1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
+1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
+1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
+1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
+1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
+1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
+1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
+1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
+1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
+1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
+1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
+1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
+1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
+1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
+1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
+1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
+1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
+1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87;
+1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
+1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
+1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
+1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
+1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
+1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
+1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
+1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
+1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97;
+1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
+1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
+1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
+1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
+1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
+1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
+1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
+1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
+1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7;
+1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
+1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
+1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
+1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
+1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
+1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
+1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
+1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
+1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
+1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
+1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399
+1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
+1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
+1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
+1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
+1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
+1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
+1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
+1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
+1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
+1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3;
+1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
+1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
+1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
+1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
+1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
+1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
+1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
+1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
+1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
+1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
+1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
+1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
+1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
+1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
+1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
+1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
+1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
+1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
+1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
+1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
+1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
+1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
+1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
+1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
+1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
+1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
+1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
+1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
+1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
+1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
+1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
+1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
+1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
+1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
+1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
+1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3;
+1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
+1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
+2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
+2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
+2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200B;ZERO WIDTH SPACE;Zs;0;BN;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
+200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
+2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
+2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
+2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
+2013;EN DASH;Pd;0;ON;;;;;N;;;;;
+2014;EM DASH;Pd;0;ON;;;;;N;;;;;
+2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
+2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
+2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
+2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
+2020;DAGGER;Po;0;ON;;;;;N;;;;;
+2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
+2022;BULLET;Po;0;ON;;;;;N;;;;;
+2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
+2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
+2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
+2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;;
+202F;NARROW NO-BREAK SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+2032;PRIME;Po;0;ET;;;;;N;;;;;
+2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
+2038;CARET;Po;0;ON;;;;;N;;;;;
+2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
+203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
+203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
+203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
+2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
+2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
+2042;ASTERISM;Po;0;ON;;;;;N;;;;;
+2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
+2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
+2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;
+204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;
+204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;
+204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;0;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
+20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
+20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
+20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
+20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
+20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
+20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
+20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
+20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
+20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
+20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
+20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;
+20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;
+20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;
+20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;
+2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
+2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
+2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
+2108;SCRUPLE;So;0;ON;;;;;N;;;;;
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
+210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
+2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
+2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
+2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;;
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
+211F;RESPONSE;So;0;ON;;;;;N;;;;;
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
+2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
+2123;VERSICLE;So;0;ON;;;;;N;;;;;
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
+2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
+2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
+212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;
+212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;;
+2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
+213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
+2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
+2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
+2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
+2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Nl;0;L;;;;;N;;;;;
+2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
+2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
+2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
+2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
+2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
+2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
+2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
+2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
+2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
+219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;;
+219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
+219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
+219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
+219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
+21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
+21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
+21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
+21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
+21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
+21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
+21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
+21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
+21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
+21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
+21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
+21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
+21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
+21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
+21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;;
+21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
+21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
+21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
+21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
+21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
+21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
+21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
+21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
+21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
+21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
+21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
+21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
+21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
+21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
+21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
+21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
+21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
+21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
+21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
+21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
+21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
+21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
+21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
+21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
+21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
+21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
+21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
+21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
+21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
+21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
+21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
+21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
+21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
+21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
+21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
+21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
+21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
+21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
+21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
+21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
+21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
+21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
+21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
+21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
+21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
+21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
+21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
+21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
+21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
+21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
+21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
+21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
+21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
+21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;
+21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;;
+21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;;
+2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
+2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
+2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
+2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
+2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
+2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
+2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
+2207;NABLA;Sm;0;ON;;;;;N;;;;;
+2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
+220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
+220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
+220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
+2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
+2212;MINUS SIGN;Sm;0;ET;;;;;N;;;;;
+2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
+2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
+2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
+221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
+221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
+221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
+221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
+221E;INFINITY;Sm;0;ON;;;;;N;;;;;
+221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
+2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
+2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
+2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
+2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
+2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
+2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
+222A;UNION;Sm;0;ON;;;;;N;;;;;
+222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
+2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
+2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
+2236;RATIO;Sm;0;ON;;;;;N;;;;;
+2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
+2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
+2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
+223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
+223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
+223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;;
+223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
+223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
+2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;
+2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
+2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
+2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
+2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
+224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
+224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
+2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
+2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
+2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
+2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
+2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
+225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
+225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
+225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
+225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
+225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
+225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
+2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
+2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
+2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
+2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
+2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
+2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
+2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
+2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
+226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
+226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
+226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
+226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
+2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
+2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
+2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
+2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
+2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
+2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
+2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
+2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
+2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
+2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
+227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
+227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
+2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
+2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
+2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
+2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
+2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
+2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
+2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
+228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
+228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
+228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
+228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
+228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
+228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
+2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
+2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
+2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
+2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
+229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
+229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
+229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
+22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
+22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
+22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
+22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
+22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
+22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
+22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
+22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
+22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
+22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
+22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
+22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
+22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
+22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
+22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
+22BB;XOR;Sm;0;ON;;;;;N;;;;;
+22BC;NAND;Sm;0;ON;;;;;N;;;;;
+22BD;NOR;Sm;0;ON;;;;;N;;;;;
+22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
+22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
+22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
+22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
+22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
+22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
+22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
+22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
+22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
+22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
+22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
+22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
+22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
+22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
+22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
+22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
+22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
+22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
+22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
+22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
+22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
+22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
+22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
+22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
+22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
+22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
+22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
+22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
+2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;
+2302;HOUSE;So;0;ON;;;;;N;;;;;
+2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
+2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
+2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
+2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
+2307;WAVY LINE;So;0;ON;;;;;N;;;;;
+2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
+2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
+230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
+230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
+230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
+230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
+2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
+2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
+2312;ARC;So;0;ON;;;;;N;;;;;
+2313;SEGMENT;So;0;ON;;;;;N;;;;;
+2314;SECTOR;So;0;ON;;;;;N;;;;;
+2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
+2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
+2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
+2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
+2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
+231A;WATCH;So;0;ON;;;;;N;;;;;
+231B;HOURGLASS;So;0;ON;;;;;N;;;;;
+231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
+231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
+231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
+231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
+2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2322;FROWN;So;0;ON;;;;;N;;;;;
+2323;SMILE;So;0;ON;;;;;N;;;;;
+2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
+2325;OPTION KEY;So;0;ON;;;;;N;;;;;
+2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
+2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
+2328;KEYBOARD;So;0;ON;;;;;N;;;;;
+2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
+232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
+232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
+232C;BENZENE RING;So;0;ON;;;;;N;;;;;
+232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
+232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
+232F;SYMMETRY;So;0;ON;;;;;N;;;;;
+2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
+2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
+2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
+2333;SLOPE;So;0;ON;;;;;N;;;;;
+2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
+2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
+2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
+2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
+2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
+2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
+233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
+233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
+233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
+233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
+233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
+233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
+2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
+2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
+2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
+2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
+2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
+2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
+2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
+2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
+2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
+2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
+234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;;
+234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
+234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
+234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
+234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;;
+234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
+2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
+2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;;
+2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
+2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
+2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
+2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;;
+2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
+2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
+2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
+2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
+235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
+235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
+235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
+235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
+235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
+235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
+2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
+2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;;
+2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
+2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
+2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
+2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
+2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
+2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
+2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
+2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
+236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
+236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
+236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
+236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
+236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
+236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
+2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
+2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
+2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
+2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
+2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
+2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
+2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
+2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
+2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
+2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
+237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
+237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;
+237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;
+237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;
+237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
+2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;
+2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;
+2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;
+2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;
+2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;
+2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2388;HELM SYMBOL;So;0;ON;;;;;N;;;;;
+2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;;
+238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;;
+238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;;
+238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;
+238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;
+238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;
+238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;
+2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;
+2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;
+2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;
+2398;NEXT PAGE;So;0;ON;;;;;N;;;;;
+2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
+2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
+2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
+2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
+2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
+2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
+2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
+2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
+2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
+2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
+240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
+240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
+240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
+240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
+240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
+240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
+2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
+2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
+2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
+2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
+2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
+2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
+2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
+2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
+2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
+2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
+241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
+241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
+241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
+241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
+241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
+241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
+2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
+2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
+2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
+2423;OPEN BOX;So;0;ON;;;;;N;;;;;
+2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
+2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
+2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
+2440;OCR HOOK;So;0;ON;;;;;N;;;;;
+2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
+2442;OCR FORK;So;0;ON;;;;;N;;;;;
+2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
+2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
+2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
+2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
+2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
+2448;OCR DASH;So;0;ON;;;;;N;;;;;
+2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
+244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
+2460;CIRCLED DIGIT ONE;No;0;EN;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;EN;<circle> 0030;;0;0;N;;;;;
+2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
+2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
+2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
+2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
+2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
+2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
+2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
+2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
+2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
+2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
+250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
+250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
+250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
+250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
+250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
+250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
+2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
+2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
+2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
+2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
+2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
+2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
+2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
+2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
+2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
+2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
+251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
+251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
+251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
+251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
+251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
+251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
+2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
+2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
+2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
+2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
+2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
+2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
+2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
+2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
+2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
+252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
+252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
+252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
+252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
+252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
+252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
+2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
+2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
+2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
+2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
+2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
+2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
+2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
+2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
+2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
+2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
+253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
+253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
+253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
+253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
+253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
+253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
+2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
+2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
+2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
+2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
+2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
+2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
+2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
+2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
+2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
+254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
+254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
+254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
+254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
+254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
+254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
+2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
+2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
+2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
+2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
+2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
+2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
+2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
+2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
+2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
+2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
+255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
+255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
+255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
+255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
+255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
+255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
+2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
+2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
+2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
+2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
+2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
+2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
+2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
+2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
+2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
+2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
+256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
+256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
+256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
+256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
+256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
+256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
+2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
+2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
+2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
+2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
+2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
+2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
+2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
+2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
+2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
+2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
+257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
+257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
+257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
+257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
+257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
+257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
+2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
+2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
+2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
+258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
+258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
+2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
+2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+2593;DARK SHADE;So;0;ON;;;;;N;;;;;
+2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
+25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
+25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
+25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
+25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
+25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
+25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
+25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
+25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
+25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
+25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
+25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
+25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
+25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
+25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
+25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
+25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
+25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
+25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
+25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
+25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
+25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
+25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
+25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
+25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
+25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
+25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
+25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
+25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+25C9;FISHEYE;So;0;ON;;;;;N;;;;;
+25CA;LOZENGE;So;0;ON;;;;;N;;;;;
+25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
+25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
+25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
+25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
+25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
+25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
+25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
+25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
+25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+2601;CLOUD;So;0;ON;;;;;N;;;;;
+2602;UMBRELLA;So;0;ON;;;;;N;;;;;
+2603;SNOWMAN;So;0;ON;;;;;N;;;;;
+2604;COMET;So;0;ON;;;;;N;;;;;
+2605;BLACK STAR;So;0;ON;;;;;N;;;;;
+2606;WHITE STAR;So;0;ON;;;;;N;;;;;
+2607;LIGHTNING;So;0;ON;;;;;N;;;;;
+2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
+2609;SUN;So;0;ON;;;;;N;;;;;
+260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
+260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
+260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
+260D;OPPOSITION;So;0;ON;;;;;N;;;;;
+260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
+260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
+2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
+2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
+2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
+2613;SALTIRE;So;0;ON;;;;;N;;;;;
+2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
+261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
+2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
+2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
+2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
+2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
+2624;CADUCEUS;So;0;ON;;;;;N;;;;;
+2625;ANKH;So;0;ON;;;;;N;;;;;
+2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
+2627;CHI RHO;So;0;ON;;;;;N;;;;;
+2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
+2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
+262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
+262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
+262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
+262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
+262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
+262F;YIN YANG;So;0;ON;;;;;N;;;;;
+2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
+2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
+2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
+2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
+2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
+2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
+2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
+2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
+2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
+263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
+263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
+263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263F;MERCURY;So;0;ON;;;;;N;;;;;
+2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
+2641;EARTH;So;0;ON;;;;;N;;;;;
+2642;MALE SIGN;So;0;ON;;;;;N;;;;;
+2643;JUPITER;So;0;ON;;;;;N;;;;;
+2644;SATURN;So;0;ON;;;;;N;;;;;
+2645;URANUS;So;0;ON;;;;;N;;;;;
+2646;NEPTUNE;So;0;ON;;;;;N;;;;;
+2647;PLUTO;So;0;ON;;;;;N;;;;;
+2648;ARIES;So;0;ON;;;;;N;;;;;
+2649;TAURUS;So;0;ON;;;;;N;;;;;
+264A;GEMINI;So;0;ON;;;;;N;;;;;
+264B;CANCER;So;0;ON;;;;;N;;;;;
+264C;LEO;So;0;ON;;;;;N;;;;;
+264D;VIRGO;So;0;ON;;;;;N;;;;;
+264E;LIBRA;So;0;ON;;;;;N;;;;;
+264F;SCORPIUS;So;0;ON;;;;;N;;;;;
+2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
+2651;CAPRICORN;So;0;ON;;;;;N;;;;;
+2652;AQUARIUS;So;0;ON;;;;;N;;;;;
+2653;PISCES;So;0;ON;;;;;N;;;;;
+2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
+2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
+2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
+2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
+2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
+265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
+265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
+265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
+265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
+265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
+2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
+2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
+2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
+2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
+2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
+2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
+2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
+2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
+266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
+266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
+266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
+266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
+266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
+266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;
+2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
+2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
+2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
+2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
+2708;AIRPLANE;So;0;ON;;;;;N;;;;;
+2709;ENVELOPE;So;0;ON;;;;;N;;;;;
+270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
+270D;WRITING HAND;So;0;ON;;;;;N;;;;;
+270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+270F;PENCIL;So;0;ON;;;;;N;;;;;
+2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+2711;WHITE NIB;So;0;ON;;;;;N;;;;;
+2712;BLACK NIB;So;0;ON;;;;;N;;;;;
+2713;CHECK MARK;So;0;ON;;;;;N;;;;;
+2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
+2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2717;BALLOT X;So;0;ON;;;;;N;;;;;
+2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
+2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
+271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
+271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
+271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
+271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
+271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
+271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
+2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
+2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
+2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
+272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
+272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
+272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
+2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
+2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
+2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
+273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
+273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
+2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
+2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2747;SPARKLE;So;0;ON;;;;;N;;;;;
+2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
+2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
+2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
+2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
+2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
+2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
+2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
+2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
+2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
+2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
+2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
+277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
+277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
+277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
+277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
+277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
+277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
+2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
+2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
+2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
+2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
+2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
+2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
+2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
+2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
+278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
+278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
+278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
+278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
+278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
+278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
+2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
+2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
+2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
+2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
+2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
+279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
+279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
+279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
+279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
+279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
+279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
+27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
+27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
+27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
+27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
+27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
+27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
+27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
+27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
+27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
+27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
+27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
+27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
+27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
+27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
+27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
+27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
+27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
+27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
+2800;BRAILLE PATTERN BLANK;So;0;ON;;;;;N;;;;;
+2801;BRAILLE PATTERN DOTS-1;So;0;ON;;;;;N;;;;;
+2802;BRAILLE PATTERN DOTS-2;So;0;ON;;;;;N;;;;;
+2803;BRAILLE PATTERN DOTS-12;So;0;ON;;;;;N;;;;;
+2804;BRAILLE PATTERN DOTS-3;So;0;ON;;;;;N;;;;;
+2805;BRAILLE PATTERN DOTS-13;So;0;ON;;;;;N;;;;;
+2806;BRAILLE PATTERN DOTS-23;So;0;ON;;;;;N;;;;;
+2807;BRAILLE PATTERN DOTS-123;So;0;ON;;;;;N;;;;;
+2808;BRAILLE PATTERN DOTS-4;So;0;ON;;;;;N;;;;;
+2809;BRAILLE PATTERN DOTS-14;So;0;ON;;;;;N;;;;;
+280A;BRAILLE PATTERN DOTS-24;So;0;ON;;;;;N;;;;;
+280B;BRAILLE PATTERN DOTS-124;So;0;ON;;;;;N;;;;;
+280C;BRAILLE PATTERN DOTS-34;So;0;ON;;;;;N;;;;;
+280D;BRAILLE PATTERN DOTS-134;So;0;ON;;;;;N;;;;;
+280E;BRAILLE PATTERN DOTS-234;So;0;ON;;;;;N;;;;;
+280F;BRAILLE PATTERN DOTS-1234;So;0;ON;;;;;N;;;;;
+2810;BRAILLE PATTERN DOTS-5;So;0;ON;;;;;N;;;;;
+2811;BRAILLE PATTERN DOTS-15;So;0;ON;;;;;N;;;;;
+2812;BRAILLE PATTERN DOTS-25;So;0;ON;;;;;N;;;;;
+2813;BRAILLE PATTERN DOTS-125;So;0;ON;;;;;N;;;;;
+2814;BRAILLE PATTERN DOTS-35;So;0;ON;;;;;N;;;;;
+2815;BRAILLE PATTERN DOTS-135;So;0;ON;;;;;N;;;;;
+2816;BRAILLE PATTERN DOTS-235;So;0;ON;;;;;N;;;;;
+2817;BRAILLE PATTERN DOTS-1235;So;0;ON;;;;;N;;;;;
+2818;BRAILLE PATTERN DOTS-45;So;0;ON;;;;;N;;;;;
+2819;BRAILLE PATTERN DOTS-145;So;0;ON;;;;;N;;;;;
+281A;BRAILLE PATTERN DOTS-245;So;0;ON;;;;;N;;;;;
+281B;BRAILLE PATTERN DOTS-1245;So;0;ON;;;;;N;;;;;
+281C;BRAILLE PATTERN DOTS-345;So;0;ON;;;;;N;;;;;
+281D;BRAILLE PATTERN DOTS-1345;So;0;ON;;;;;N;;;;;
+281E;BRAILLE PATTERN DOTS-2345;So;0;ON;;;;;N;;;;;
+281F;BRAILLE PATTERN DOTS-12345;So;0;ON;;;;;N;;;;;
+2820;BRAILLE PATTERN DOTS-6;So;0;ON;;;;;N;;;;;
+2821;BRAILLE PATTERN DOTS-16;So;0;ON;;;;;N;;;;;
+2822;BRAILLE PATTERN DOTS-26;So;0;ON;;;;;N;;;;;
+2823;BRAILLE PATTERN DOTS-126;So;0;ON;;;;;N;;;;;
+2824;BRAILLE PATTERN DOTS-36;So;0;ON;;;;;N;;;;;
+2825;BRAILLE PATTERN DOTS-136;So;0;ON;;;;;N;;;;;
+2826;BRAILLE PATTERN DOTS-236;So;0;ON;;;;;N;;;;;
+2827;BRAILLE PATTERN DOTS-1236;So;0;ON;;;;;N;;;;;
+2828;BRAILLE PATTERN DOTS-46;So;0;ON;;;;;N;;;;;
+2829;BRAILLE PATTERN DOTS-146;So;0;ON;;;;;N;;;;;
+282A;BRAILLE PATTERN DOTS-246;So;0;ON;;;;;N;;;;;
+282B;BRAILLE PATTERN DOTS-1246;So;0;ON;;;;;N;;;;;
+282C;BRAILLE PATTERN DOTS-346;So;0;ON;;;;;N;;;;;
+282D;BRAILLE PATTERN DOTS-1346;So;0;ON;;;;;N;;;;;
+282E;BRAILLE PATTERN DOTS-2346;So;0;ON;;;;;N;;;;;
+282F;BRAILLE PATTERN DOTS-12346;So;0;ON;;;;;N;;;;;
+2830;BRAILLE PATTERN DOTS-56;So;0;ON;;;;;N;;;;;
+2831;BRAILLE PATTERN DOTS-156;So;0;ON;;;;;N;;;;;
+2832;BRAILLE PATTERN DOTS-256;So;0;ON;;;;;N;;;;;
+2833;BRAILLE PATTERN DOTS-1256;So;0;ON;;;;;N;;;;;
+2834;BRAILLE PATTERN DOTS-356;So;0;ON;;;;;N;;;;;
+2835;BRAILLE PATTERN DOTS-1356;So;0;ON;;;;;N;;;;;
+2836;BRAILLE PATTERN DOTS-2356;So;0;ON;;;;;N;;;;;
+2837;BRAILLE PATTERN DOTS-12356;So;0;ON;;;;;N;;;;;
+2838;BRAILLE PATTERN DOTS-456;So;0;ON;;;;;N;;;;;
+2839;BRAILLE PATTERN DOTS-1456;So;0;ON;;;;;N;;;;;
+283A;BRAILLE PATTERN DOTS-2456;So;0;ON;;;;;N;;;;;
+283B;BRAILLE PATTERN DOTS-12456;So;0;ON;;;;;N;;;;;
+283C;BRAILLE PATTERN DOTS-3456;So;0;ON;;;;;N;;;;;
+283D;BRAILLE PATTERN DOTS-13456;So;0;ON;;;;;N;;;;;
+283E;BRAILLE PATTERN DOTS-23456;So;0;ON;;;;;N;;;;;
+283F;BRAILLE PATTERN DOTS-123456;So;0;ON;;;;;N;;;;;
+2840;BRAILLE PATTERN DOTS-7;So;0;ON;;;;;N;;;;;
+2841;BRAILLE PATTERN DOTS-17;So;0;ON;;;;;N;;;;;
+2842;BRAILLE PATTERN DOTS-27;So;0;ON;;;;;N;;;;;
+2843;BRAILLE PATTERN DOTS-127;So;0;ON;;;;;N;;;;;
+2844;BRAILLE PATTERN DOTS-37;So;0;ON;;;;;N;;;;;
+2845;BRAILLE PATTERN DOTS-137;So;0;ON;;;;;N;;;;;
+2846;BRAILLE PATTERN DOTS-237;So;0;ON;;;;;N;;;;;
+2847;BRAILLE PATTERN DOTS-1237;So;0;ON;;;;;N;;;;;
+2848;BRAILLE PATTERN DOTS-47;So;0;ON;;;;;N;;;;;
+2849;BRAILLE PATTERN DOTS-147;So;0;ON;;;;;N;;;;;
+284A;BRAILLE PATTERN DOTS-247;So;0;ON;;;;;N;;;;;
+284B;BRAILLE PATTERN DOTS-1247;So;0;ON;;;;;N;;;;;
+284C;BRAILLE PATTERN DOTS-347;So;0;ON;;;;;N;;;;;
+284D;BRAILLE PATTERN DOTS-1347;So;0;ON;;;;;N;;;;;
+284E;BRAILLE PATTERN DOTS-2347;So;0;ON;;;;;N;;;;;
+284F;BRAILLE PATTERN DOTS-12347;So;0;ON;;;;;N;;;;;
+2850;BRAILLE PATTERN DOTS-57;So;0;ON;;;;;N;;;;;
+2851;BRAILLE PATTERN DOTS-157;So;0;ON;;;;;N;;;;;
+2852;BRAILLE PATTERN DOTS-257;So;0;ON;;;;;N;;;;;
+2853;BRAILLE PATTERN DOTS-1257;So;0;ON;;;;;N;;;;;
+2854;BRAILLE PATTERN DOTS-357;So;0;ON;;;;;N;;;;;
+2855;BRAILLE PATTERN DOTS-1357;So;0;ON;;;;;N;;;;;
+2856;BRAILLE PATTERN DOTS-2357;So;0;ON;;;;;N;;;;;
+2857;BRAILLE PATTERN DOTS-12357;So;0;ON;;;;;N;;;;;
+2858;BRAILLE PATTERN DOTS-457;So;0;ON;;;;;N;;;;;
+2859;BRAILLE PATTERN DOTS-1457;So;0;ON;;;;;N;;;;;
+285A;BRAILLE PATTERN DOTS-2457;So;0;ON;;;;;N;;;;;
+285B;BRAILLE PATTERN DOTS-12457;So;0;ON;;;;;N;;;;;
+285C;BRAILLE PATTERN DOTS-3457;So;0;ON;;;;;N;;;;;
+285D;BRAILLE PATTERN DOTS-13457;So;0;ON;;;;;N;;;;;
+285E;BRAILLE PATTERN DOTS-23457;So;0;ON;;;;;N;;;;;
+285F;BRAILLE PATTERN DOTS-123457;So;0;ON;;;;;N;;;;;
+2860;BRAILLE PATTERN DOTS-67;So;0;ON;;;;;N;;;;;
+2861;BRAILLE PATTERN DOTS-167;So;0;ON;;;;;N;;;;;
+2862;BRAILLE PATTERN DOTS-267;So;0;ON;;;;;N;;;;;
+2863;BRAILLE PATTERN DOTS-1267;So;0;ON;;;;;N;;;;;
+2864;BRAILLE PATTERN DOTS-367;So;0;ON;;;;;N;;;;;
+2865;BRAILLE PATTERN DOTS-1367;So;0;ON;;;;;N;;;;;
+2866;BRAILLE PATTERN DOTS-2367;So;0;ON;;;;;N;;;;;
+2867;BRAILLE PATTERN DOTS-12367;So;0;ON;;;;;N;;;;;
+2868;BRAILLE PATTERN DOTS-467;So;0;ON;;;;;N;;;;;
+2869;BRAILLE PATTERN DOTS-1467;So;0;ON;;;;;N;;;;;
+286A;BRAILLE PATTERN DOTS-2467;So;0;ON;;;;;N;;;;;
+286B;BRAILLE PATTERN DOTS-12467;So;0;ON;;;;;N;;;;;
+286C;BRAILLE PATTERN DOTS-3467;So;0;ON;;;;;N;;;;;
+286D;BRAILLE PATTERN DOTS-13467;So;0;ON;;;;;N;;;;;
+286E;BRAILLE PATTERN DOTS-23467;So;0;ON;;;;;N;;;;;
+286F;BRAILLE PATTERN DOTS-123467;So;0;ON;;;;;N;;;;;
+2870;BRAILLE PATTERN DOTS-567;So;0;ON;;;;;N;;;;;
+2871;BRAILLE PATTERN DOTS-1567;So;0;ON;;;;;N;;;;;
+2872;BRAILLE PATTERN DOTS-2567;So;0;ON;;;;;N;;;;;
+2873;BRAILLE PATTERN DOTS-12567;So;0;ON;;;;;N;;;;;
+2874;BRAILLE PATTERN DOTS-3567;So;0;ON;;;;;N;;;;;
+2875;BRAILLE PATTERN DOTS-13567;So;0;ON;;;;;N;;;;;
+2876;BRAILLE PATTERN DOTS-23567;So;0;ON;;;;;N;;;;;
+2877;BRAILLE PATTERN DOTS-123567;So;0;ON;;;;;N;;;;;
+2878;BRAILLE PATTERN DOTS-4567;So;0;ON;;;;;N;;;;;
+2879;BRAILLE PATTERN DOTS-14567;So;0;ON;;;;;N;;;;;
+287A;BRAILLE PATTERN DOTS-24567;So;0;ON;;;;;N;;;;;
+287B;BRAILLE PATTERN DOTS-124567;So;0;ON;;;;;N;;;;;
+287C;BRAILLE PATTERN DOTS-34567;So;0;ON;;;;;N;;;;;
+287D;BRAILLE PATTERN DOTS-134567;So;0;ON;;;;;N;;;;;
+287E;BRAILLE PATTERN DOTS-234567;So;0;ON;;;;;N;;;;;
+287F;BRAILLE PATTERN DOTS-1234567;So;0;ON;;;;;N;;;;;
+2880;BRAILLE PATTERN DOTS-8;So;0;ON;;;;;N;;;;;
+2881;BRAILLE PATTERN DOTS-18;So;0;ON;;;;;N;;;;;
+2882;BRAILLE PATTERN DOTS-28;So;0;ON;;;;;N;;;;;
+2883;BRAILLE PATTERN DOTS-128;So;0;ON;;;;;N;;;;;
+2884;BRAILLE PATTERN DOTS-38;So;0;ON;;;;;N;;;;;
+2885;BRAILLE PATTERN DOTS-138;So;0;ON;;;;;N;;;;;
+2886;BRAILLE PATTERN DOTS-238;So;0;ON;;;;;N;;;;;
+2887;BRAILLE PATTERN DOTS-1238;So;0;ON;;;;;N;;;;;
+2888;BRAILLE PATTERN DOTS-48;So;0;ON;;;;;N;;;;;
+2889;BRAILLE PATTERN DOTS-148;So;0;ON;;;;;N;;;;;
+288A;BRAILLE PATTERN DOTS-248;So;0;ON;;;;;N;;;;;
+288B;BRAILLE PATTERN DOTS-1248;So;0;ON;;;;;N;;;;;
+288C;BRAILLE PATTERN DOTS-348;So;0;ON;;;;;N;;;;;
+288D;BRAILLE PATTERN DOTS-1348;So;0;ON;;;;;N;;;;;
+288E;BRAILLE PATTERN DOTS-2348;So;0;ON;;;;;N;;;;;
+288F;BRAILLE PATTERN DOTS-12348;So;0;ON;;;;;N;;;;;
+2890;BRAILLE PATTERN DOTS-58;So;0;ON;;;;;N;;;;;
+2891;BRAILLE PATTERN DOTS-158;So;0;ON;;;;;N;;;;;
+2892;BRAILLE PATTERN DOTS-258;So;0;ON;;;;;N;;;;;
+2893;BRAILLE PATTERN DOTS-1258;So;0;ON;;;;;N;;;;;
+2894;BRAILLE PATTERN DOTS-358;So;0;ON;;;;;N;;;;;
+2895;BRAILLE PATTERN DOTS-1358;So;0;ON;;;;;N;;;;;
+2896;BRAILLE PATTERN DOTS-2358;So;0;ON;;;;;N;;;;;
+2897;BRAILLE PATTERN DOTS-12358;So;0;ON;;;;;N;;;;;
+2898;BRAILLE PATTERN DOTS-458;So;0;ON;;;;;N;;;;;
+2899;BRAILLE PATTERN DOTS-1458;So;0;ON;;;;;N;;;;;
+289A;BRAILLE PATTERN DOTS-2458;So;0;ON;;;;;N;;;;;
+289B;BRAILLE PATTERN DOTS-12458;So;0;ON;;;;;N;;;;;
+289C;BRAILLE PATTERN DOTS-3458;So;0;ON;;;;;N;;;;;
+289D;BRAILLE PATTERN DOTS-13458;So;0;ON;;;;;N;;;;;
+289E;BRAILLE PATTERN DOTS-23458;So;0;ON;;;;;N;;;;;
+289F;BRAILLE PATTERN DOTS-123458;So;0;ON;;;;;N;;;;;
+28A0;BRAILLE PATTERN DOTS-68;So;0;ON;;;;;N;;;;;
+28A1;BRAILLE PATTERN DOTS-168;So;0;ON;;;;;N;;;;;
+28A2;BRAILLE PATTERN DOTS-268;So;0;ON;;;;;N;;;;;
+28A3;BRAILLE PATTERN DOTS-1268;So;0;ON;;;;;N;;;;;
+28A4;BRAILLE PATTERN DOTS-368;So;0;ON;;;;;N;;;;;
+28A5;BRAILLE PATTERN DOTS-1368;So;0;ON;;;;;N;;;;;
+28A6;BRAILLE PATTERN DOTS-2368;So;0;ON;;;;;N;;;;;
+28A7;BRAILLE PATTERN DOTS-12368;So;0;ON;;;;;N;;;;;
+28A8;BRAILLE PATTERN DOTS-468;So;0;ON;;;;;N;;;;;
+28A9;BRAILLE PATTERN DOTS-1468;So;0;ON;;;;;N;;;;;
+28AA;BRAILLE PATTERN DOTS-2468;So;0;ON;;;;;N;;;;;
+28AB;BRAILLE PATTERN DOTS-12468;So;0;ON;;;;;N;;;;;
+28AC;BRAILLE PATTERN DOTS-3468;So;0;ON;;;;;N;;;;;
+28AD;BRAILLE PATTERN DOTS-13468;So;0;ON;;;;;N;;;;;
+28AE;BRAILLE PATTERN DOTS-23468;So;0;ON;;;;;N;;;;;
+28AF;BRAILLE PATTERN DOTS-123468;So;0;ON;;;;;N;;;;;
+28B0;BRAILLE PATTERN DOTS-568;So;0;ON;;;;;N;;;;;
+28B1;BRAILLE PATTERN DOTS-1568;So;0;ON;;;;;N;;;;;
+28B2;BRAILLE PATTERN DOTS-2568;So;0;ON;;;;;N;;;;;
+28B3;BRAILLE PATTERN DOTS-12568;So;0;ON;;;;;N;;;;;
+28B4;BRAILLE PATTERN DOTS-3568;So;0;ON;;;;;N;;;;;
+28B5;BRAILLE PATTERN DOTS-13568;So;0;ON;;;;;N;;;;;
+28B6;BRAILLE PATTERN DOTS-23568;So;0;ON;;;;;N;;;;;
+28B7;BRAILLE PATTERN DOTS-123568;So;0;ON;;;;;N;;;;;
+28B8;BRAILLE PATTERN DOTS-4568;So;0;ON;;;;;N;;;;;
+28B9;BRAILLE PATTERN DOTS-14568;So;0;ON;;;;;N;;;;;
+28BA;BRAILLE PATTERN DOTS-24568;So;0;ON;;;;;N;;;;;
+28BB;BRAILLE PATTERN DOTS-124568;So;0;ON;;;;;N;;;;;
+28BC;BRAILLE PATTERN DOTS-34568;So;0;ON;;;;;N;;;;;
+28BD;BRAILLE PATTERN DOTS-134568;So;0;ON;;;;;N;;;;;
+28BE;BRAILLE PATTERN DOTS-234568;So;0;ON;;;;;N;;;;;
+28BF;BRAILLE PATTERN DOTS-1234568;So;0;ON;;;;;N;;;;;
+28C0;BRAILLE PATTERN DOTS-78;So;0;ON;;;;;N;;;;;
+28C1;BRAILLE PATTERN DOTS-178;So;0;ON;;;;;N;;;;;
+28C2;BRAILLE PATTERN DOTS-278;So;0;ON;;;;;N;;;;;
+28C3;BRAILLE PATTERN DOTS-1278;So;0;ON;;;;;N;;;;;
+28C4;BRAILLE PATTERN DOTS-378;So;0;ON;;;;;N;;;;;
+28C5;BRAILLE PATTERN DOTS-1378;So;0;ON;;;;;N;;;;;
+28C6;BRAILLE PATTERN DOTS-2378;So;0;ON;;;;;N;;;;;
+28C7;BRAILLE PATTERN DOTS-12378;So;0;ON;;;;;N;;;;;
+28C8;BRAILLE PATTERN DOTS-478;So;0;ON;;;;;N;;;;;
+28C9;BRAILLE PATTERN DOTS-1478;So;0;ON;;;;;N;;;;;
+28CA;BRAILLE PATTERN DOTS-2478;So;0;ON;;;;;N;;;;;
+28CB;BRAILLE PATTERN DOTS-12478;So;0;ON;;;;;N;;;;;
+28CC;BRAILLE PATTERN DOTS-3478;So;0;ON;;;;;N;;;;;
+28CD;BRAILLE PATTERN DOTS-13478;So;0;ON;;;;;N;;;;;
+28CE;BRAILLE PATTERN DOTS-23478;So;0;ON;;;;;N;;;;;
+28CF;BRAILLE PATTERN DOTS-123478;So;0;ON;;;;;N;;;;;
+28D0;BRAILLE PATTERN DOTS-578;So;0;ON;;;;;N;;;;;
+28D1;BRAILLE PATTERN DOTS-1578;So;0;ON;;;;;N;;;;;
+28D2;BRAILLE PATTERN DOTS-2578;So;0;ON;;;;;N;;;;;
+28D3;BRAILLE PATTERN DOTS-12578;So;0;ON;;;;;N;;;;;
+28D4;BRAILLE PATTERN DOTS-3578;So;0;ON;;;;;N;;;;;
+28D5;BRAILLE PATTERN DOTS-13578;So;0;ON;;;;;N;;;;;
+28D6;BRAILLE PATTERN DOTS-23578;So;0;ON;;;;;N;;;;;
+28D7;BRAILLE PATTERN DOTS-123578;So;0;ON;;;;;N;;;;;
+28D8;BRAILLE PATTERN DOTS-4578;So;0;ON;;;;;N;;;;;
+28D9;BRAILLE PATTERN DOTS-14578;So;0;ON;;;;;N;;;;;
+28DA;BRAILLE PATTERN DOTS-24578;So;0;ON;;;;;N;;;;;
+28DB;BRAILLE PATTERN DOTS-124578;So;0;ON;;;;;N;;;;;
+28DC;BRAILLE PATTERN DOTS-34578;So;0;ON;;;;;N;;;;;
+28DD;BRAILLE PATTERN DOTS-134578;So;0;ON;;;;;N;;;;;
+28DE;BRAILLE PATTERN DOTS-234578;So;0;ON;;;;;N;;;;;
+28DF;BRAILLE PATTERN DOTS-1234578;So;0;ON;;;;;N;;;;;
+28E0;BRAILLE PATTERN DOTS-678;So;0;ON;;;;;N;;;;;
+28E1;BRAILLE PATTERN DOTS-1678;So;0;ON;;;;;N;;;;;
+28E2;BRAILLE PATTERN DOTS-2678;So;0;ON;;;;;N;;;;;
+28E3;BRAILLE PATTERN DOTS-12678;So;0;ON;;;;;N;;;;;
+28E4;BRAILLE PATTERN DOTS-3678;So;0;ON;;;;;N;;;;;
+28E5;BRAILLE PATTERN DOTS-13678;So;0;ON;;;;;N;;;;;
+28E6;BRAILLE PATTERN DOTS-23678;So;0;ON;;;;;N;;;;;
+28E7;BRAILLE PATTERN DOTS-123678;So;0;ON;;;;;N;;;;;
+28E8;BRAILLE PATTERN DOTS-4678;So;0;ON;;;;;N;;;;;
+28E9;BRAILLE PATTERN DOTS-14678;So;0;ON;;;;;N;;;;;
+28EA;BRAILLE PATTERN DOTS-24678;So;0;ON;;;;;N;;;;;
+28EB;BRAILLE PATTERN DOTS-124678;So;0;ON;;;;;N;;;;;
+28EC;BRAILLE PATTERN DOTS-34678;So;0;ON;;;;;N;;;;;
+28ED;BRAILLE PATTERN DOTS-134678;So;0;ON;;;;;N;;;;;
+28EE;BRAILLE PATTERN DOTS-234678;So;0;ON;;;;;N;;;;;
+28EF;BRAILLE PATTERN DOTS-1234678;So;0;ON;;;;;N;;;;;
+28F0;BRAILLE PATTERN DOTS-5678;So;0;ON;;;;;N;;;;;
+28F1;BRAILLE PATTERN DOTS-15678;So;0;ON;;;;;N;;;;;
+28F2;BRAILLE PATTERN DOTS-25678;So;0;ON;;;;;N;;;;;
+28F3;BRAILLE PATTERN DOTS-125678;So;0;ON;;;;;N;;;;;
+28F4;BRAILLE PATTERN DOTS-35678;So;0;ON;;;;;N;;;;;
+28F5;BRAILLE PATTERN DOTS-135678;So;0;ON;;;;;N;;;;;
+28F6;BRAILLE PATTERN DOTS-235678;So;0;ON;;;;;N;;;;;
+28F7;BRAILLE PATTERN DOTS-1235678;So;0;ON;;;;;N;;;;;
+28F8;BRAILLE PATTERN DOTS-45678;So;0;ON;;;;;N;;;;;
+28F9;BRAILLE PATTERN DOTS-145678;So;0;ON;;;;;N;;;;;
+28FA;BRAILLE PATTERN DOTS-245678;So;0;ON;;;;;N;;;;;
+28FB;BRAILLE PATTERN DOTS-1245678;So;0;ON;;;;;N;;;;;
+28FC;BRAILLE PATTERN DOTS-345678;So;0;ON;;;;;N;;;;;
+28FD;BRAILLE PATTERN DOTS-1345678;So;0;ON;;;;;N;;;;;
+28FE;BRAILLE PATTERN DOTS-2345678;So;0;ON;;;;;N;;;;;
+28FF;BRAILLE PATTERN DOTS-12345678;So;0;ON;;;;;N;;;;;
+2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
+2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
+2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
+2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;
+2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;
+2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;
+2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;
+2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;
+2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;
+2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;
+2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;
+2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;
+2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;
+2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;
+2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;
+2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;
+2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;
+2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;
+2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;
+2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;
+2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;
+2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;
+2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;
+2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;
+2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;
+2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;
+2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;
+2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;
+2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;
+2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;
+2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;
+2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;
+2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;
+2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;
+2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;
+2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;
+2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;
+2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;
+2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;
+2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;
+2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;
+2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;
+2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;
+2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;
+2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;
+2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;
+2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;
+2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;
+2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;
+2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;
+2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;
+2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;
+2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;
+2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;
+2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;
+2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;
+2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;
+2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;
+2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;
+2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;
+2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;
+2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;
+2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;
+2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;
+2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;
+2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;
+2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;
+2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;
+2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;
+2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;
+2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;
+2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;
+2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;
+2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;
+2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;
+2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;
+2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;
+2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;
+2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;
+2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;
+2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;
+2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;
+2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;
+2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;
+2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;
+2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;
+2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;
+2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;
+2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;
+2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;
+2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;
+2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;
+2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;
+2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;
+2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;
+2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;
+2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;
+2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;
+2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;
+2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;
+2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;
+2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;
+2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;
+2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;
+2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;
+2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;
+2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;
+2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;
+2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;
+2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
+2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
+2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
+2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
+2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
+2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
+2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
+2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
+2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
+2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
+2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
+2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
+2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
+2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
+2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
+2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
+2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
+2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
+2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
+2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
+2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
+2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
+2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
+2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
+2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
+2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
+2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
+2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
+2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
+2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
+2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
+2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
+2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
+2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
+2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
+2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
+2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
+2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
+2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
+2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
+2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
+2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
+2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
+2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
+2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
+2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
+2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
+2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
+2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
+2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
+2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
+2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
+2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
+2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
+2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
+2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
+2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
+2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
+2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
+2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
+2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
+2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
+2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
+2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
+2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
+2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
+2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
+2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
+2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
+2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
+2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
+2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
+2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
+2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
+2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
+2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
+2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
+2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
+2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
+2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
+2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
+2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
+2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
+2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
+2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
+2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
+2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
+2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
+2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
+2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
+2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
+2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
+2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
+2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
+2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
+2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
+2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
+2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
+2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
+2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
+2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
+2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
+2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
+2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
+2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
+2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
+2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
+2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
+2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
+2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
+2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
+2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
+2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
+2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
+2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
+2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
+2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
+2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
+2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
+2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
+2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
+2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
+2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
+2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
+2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
+2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
+2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
+2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
+2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
+2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
+2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
+2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
+2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
+2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
+2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
+2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
+2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
+2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
+2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
+2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
+2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
+2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
+2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
+2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
+2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
+2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
+2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
+2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
+2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
+2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
+2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
+2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
+2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
+2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
+2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
+2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
+2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
+2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
+2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
+2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
+2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
+2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
+2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
+2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
+2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
+2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
+2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
+2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
+2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
+2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
+2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
+2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
+2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
+2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
+2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
+2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
+2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
+2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
+2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
+2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
+2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
+2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
+2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
+2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
+2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
+2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
+2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
+2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
+2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
+2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
+2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
+2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
+2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
+2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
+2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
+2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
+2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
+2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
+2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
+2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
+2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
+2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
+2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
+2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
+2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
+2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
+2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
+2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
+2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
+2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
+2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
+2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
+2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
+2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;
+2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;
+2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;
+2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;
+2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;
+2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;
+2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;
+2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;
+2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;
+2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;
+2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
+2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
+2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
+3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
+3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
+3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
+3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
+3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
+3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
+3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
+3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
+300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
+300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
+300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
+300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
+300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
+300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
+3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
+3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
+3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
+3013;GETA MARK;So;0;ON;;;;;N;;;;;
+3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
+3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
+3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
+3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
+3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
+3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
+301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
+301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
+301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
+301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
+3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
+3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
+3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
+3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
+3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
+3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
+3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
+3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
+3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
+302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
+3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
+3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
+303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;
+303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;
+303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
+3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
+3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
+3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
+3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
+3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
+304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
+304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
+304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
+304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
+304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
+3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
+3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
+3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
+3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
+3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
+3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
+3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
+3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
+3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
+3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
+305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
+305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
+305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
+305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
+305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
+305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
+3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
+3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
+3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
+3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
+3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
+3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
+3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
+3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
+3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
+306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
+306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
+306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
+306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
+306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
+306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
+3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
+3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
+3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
+3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
+3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
+3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
+3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
+3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
+3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
+3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
+307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
+307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
+307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
+307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
+307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
+307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
+3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
+3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
+3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
+3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
+3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
+3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
+3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
+308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
+308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
+308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
+308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
+308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
+3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
+3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
+3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
+3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
+3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
+30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
+30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
+30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
+30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
+30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
+30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
+30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
+30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
+30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
+30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
+30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
+30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
+30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
+30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
+30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
+30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
+30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
+30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
+30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
+30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
+30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
+30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
+30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
+30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
+30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
+30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
+30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
+30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
+30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
+30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
+30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
+30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
+30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
+30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
+30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
+30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
+30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
+30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
+30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
+30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
+30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
+30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
+30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
+30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
+30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
+30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
+30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
+30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
+30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
+30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
+30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
+30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
+30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
+30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
+30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
+30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
+30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
+30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
+30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
+30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
+30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
+30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
+30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
+30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
+30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
+30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
+30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
+30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
+30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
+30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
+30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
+30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
+30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
+30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
+30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
+30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
+30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
+30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
+30FB;KATAKANA MIDDLE DOT;Pc;0;ON;;;;;N;;;;;
+30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
+30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
+3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
+3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
+3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
+3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
+3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
+310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
+310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
+310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
+310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
+310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
+310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
+3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
+3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
+3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
+3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
+3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
+3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
+3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
+3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
+3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
+3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
+311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
+311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
+311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
+311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
+311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
+311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
+3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
+3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
+3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
+3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
+3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
+3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
+3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
+3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
+3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
+3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
+312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
+312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
+312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;Kaeriten;;;
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
+31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;
+31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;
+31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;
+31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;
+31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;
+31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;
+31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;
+31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;
+31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;
+31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;
+31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;
+31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;
+31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;
+31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;
+31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;
+31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;
+31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;
+31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;
+31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;
+31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;
+31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;
+31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;
+31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;
+31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;
+3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;;
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
+3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
+4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
+A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
+A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
+A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;;
+A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;;
+A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;;
+A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;;
+A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;;
+A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;;
+A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;;
+A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;;
+A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;;
+A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;;
+A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;;
+A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;;
+A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;;
+A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;;
+A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;;
+A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;;
+A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;;
+A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;;
+A015;YI SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
+A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;
+A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
+A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;
+A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;
+A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;
+A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;
+A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
+A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;
+A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
+A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;
+A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;
+A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;
+A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
+A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;
+A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
+A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;
+A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
+A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
+A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;
+A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
+A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;
+A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;
+A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;
+A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;
+A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;
+A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;
+A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;
+A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;
+A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
+A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;
+A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
+A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;
+A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;
+A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;
+A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
+A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;
+A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
+A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;
+A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;
+A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;
+A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;
+A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;
+A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;
+A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
+A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;
+A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
+A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;
+A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;
+A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;
+A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;
+A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;
+A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;
+A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;
+A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;
+A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
+A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;
+A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
+A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
+A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;
+A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;
+A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;
+A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;
+A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
+A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;
+A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
+A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
+A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;
+A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;
+A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;
+A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
+A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;
+A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
+A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
+A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;
+A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
+A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
+A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
+A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;
+A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
+A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
+A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;
+A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;
+A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;
+A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;
+A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;
+A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;
+A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;
+A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;
+A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;
+A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;
+A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;
+A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;
+A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;
+A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;
+A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;
+A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;
+A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;
+A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;
+A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;
+A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;
+A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;
+A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;
+A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;
+A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;
+A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;
+A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;
+A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;
+A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;
+A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;
+A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;
+A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;
+A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;
+A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;
+A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;
+A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;
+A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;
+A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;
+A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;
+A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;
+A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;
+A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;
+A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;
+A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;
+A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;
+A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;
+A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;
+A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;
+A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;
+A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;
+A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;
+A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;
+A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;
+A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;
+A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;
+A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;
+A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;
+A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;
+A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;
+A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;
+A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;
+A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;
+A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;
+A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
+A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;
+A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
+A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;
+A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;
+A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;
+A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
+A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;
+A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
+A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;
+A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;
+A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;
+A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;
+A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
+A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;
+A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
+A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;
+A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
+A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;
+A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
+A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;
+A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;
+A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;
+A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;
+A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;
+A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;
+A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;
+A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;
+A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;
+A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;
+A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;
+A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;
+A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;
+A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;
+A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;
+A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;
+A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;
+A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;
+A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;
+A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;
+A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;
+A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;
+A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;
+A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;
+A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;
+A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;
+A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;
+A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;
+A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;
+A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;
+A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;
+A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;
+A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;
+A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;
+A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;
+A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;
+A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;
+A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;
+A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;
+A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;
+A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;
+A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;
+A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;
+A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;
+A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;
+A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;
+A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;
+A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;
+A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;
+A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
+A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;
+A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
+A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;
+A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;
+A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;
+A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
+A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;
+A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
+A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;
+A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;
+A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
+A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;
+A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
+A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;
+A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
+A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
+A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;
+A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
+A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;
+A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;
+A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
+A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;
+A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
+A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;
+A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;
+A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;
+A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
+A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;
+A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
+A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;
+A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;
+A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;
+A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;
+A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
+A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;
+A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
+A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;
+A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
+A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
+A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;
+A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
+A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;
+A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;
+A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
+A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;
+A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
+A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;
+A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;
+A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;
+A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
+A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;
+A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
+A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;
+A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;
+A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;
+A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
+A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;
+A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
+A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;
+A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
+A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
+A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;
+A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
+A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;
+A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;
+A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;
+A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;
+A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
+A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;
+A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;
+A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;
+A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;
+A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;
+A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
+A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;
+A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;
+A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;
+A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
+A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;
+A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;
+A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
+A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;
+A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;
+A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;
+A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
+A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;
+A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;
+A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;
+A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;
+A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;
+A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;
+A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;
+A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;
+A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;
+A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;
+A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;
+A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;
+A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;
+A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;
+A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;
+A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;
+A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;
+A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;
+A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;
+A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;
+A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;
+A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;
+A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;
+A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;
+A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
+A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;
+A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
+A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;
+A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;
+A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;
+A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;
+A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
+A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;
+A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;
+A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;
+A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
+A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;
+A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
+A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;
+A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
+A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
+A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;
+A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
+A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;
+A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;
+A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;
+A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;
+A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;
+A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;
+A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;
+A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;
+A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;
+A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;
+A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;
+A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;
+A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;
+A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;
+A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;
+A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;
+A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;
+A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;
+A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;
+A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;
+A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;
+A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;
+A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;
+A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;
+A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;
+A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;
+A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;
+A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;
+A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;
+A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;
+A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;
+A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;
+A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;
+A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;
+A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;
+A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;
+A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;
+A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;
+A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;
+A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;
+A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;
+A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;
+A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;
+A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;
+A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;
+A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;
+A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;
+A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;
+A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;
+A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;
+A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;
+A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;
+A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;
+A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;
+A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;
+A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;
+A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;
+A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;
+A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;
+A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;
+A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;
+A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;
+A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;
+A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;
+A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
+A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;
+A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
+A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;
+A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;
+A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;
+A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;
+A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
+A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;
+A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
+A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;
+A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;
+A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;
+A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;
+A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
+A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;
+A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
+A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;
+A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;
+A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
+A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
+A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;
+A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
+A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;
+A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;
+A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
+A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;
+A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
+A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;
+A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;
+A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;
+A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
+A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;
+A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
+A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;
+A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;
+A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;
+A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
+A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;
+A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
+A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;
+A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;
+A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
+A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
+A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;
+A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
+A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;
+A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;
+A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
+A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;
+A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;
+A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;
+A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;
+A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
+A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;
+A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
+A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;
+A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;
+A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;
+A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;
+A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
+A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;
+A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
+A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
+A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;
+A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
+A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
+A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;
+A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
+A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;
+A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;
+A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;
+A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;
+A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;
+A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;
+A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;
+A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;
+A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;
+A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;
+A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;
+A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;
+A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;
+A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;
+A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;
+A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;
+A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;
+A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;
+A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;
+A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;
+A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;
+A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;
+A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;
+A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;
+A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;
+A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;
+A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;
+A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;
+A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;
+A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;
+A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;
+A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;
+A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;
+A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;
+A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;
+A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;
+A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;
+A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;
+A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;
+A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;
+A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;
+A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;
+A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;
+A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;
+A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;
+A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;
+A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;
+A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;
+A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;
+A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;
+A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;
+A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;
+A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;
+A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;
+A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;
+A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;
+A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;
+A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;
+A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;
+A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;
+A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;
+A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;
+A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;
+A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;
+A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
+A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;
+A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;
+A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
+A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;
+A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
+A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;
+A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;
+A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;
+A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;
+A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
+A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;
+A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
+A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;
+A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
+A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
+A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;
+A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
+A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;
+A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;
+A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;
+A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;
+A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;
+A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;
+A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
+A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;
+A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;
+A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;
+A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;
+A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;
+A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;
+A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;
+A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;
+A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;
+A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;
+A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;
+A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;
+A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;
+A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;
+A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;
+A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;
+A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;
+A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;
+A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;
+A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;
+A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;
+A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;
+A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;
+A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;
+A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;
+A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;
+A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;
+A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;
+A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
+A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;
+A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
+A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;
+A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;
+A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;
+A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;
+A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
+A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;
+A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
+A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;
+A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;
+A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;
+A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;
+A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;
+A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;
+A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;
+A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
+A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
+A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;
+A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
+A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;
+A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;
+A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;
+A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;
+A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;
+A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;
+A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;
+A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;
+A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;
+A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;
+A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
+A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;
+A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;
+A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;
+A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;
+A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;
+A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;
+A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;
+A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
+A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;
+A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;
+A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
+A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;
+A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;
+A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
+A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;
+A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;
+A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
+A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;
+A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;
+A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;
+A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;
+A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;
+A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;
+A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;
+A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;
+A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;
+A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;
+A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;
+A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;
+A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;
+A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;
+A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;
+A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;
+A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;
+A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;
+A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;
+A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;
+A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;
+A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;
+A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;
+A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;
+A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;
+A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;
+A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;
+A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;
+A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;
+A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;
+A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;
+A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;
+A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;
+A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;
+A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;
+A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;
+A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;
+A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
+A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;
+A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
+A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;
+A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;
+A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;
+A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
+A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;
+A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
+A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;
+A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;
+A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;
+A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
+A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;
+A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
+A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;
+A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
+A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
+A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;
+A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
+A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;
+A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;
+A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;
+A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;
+A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;
+A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;
+A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;
+A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;
+A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
+A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;
+A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
+A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
+A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;
+A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;
+A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;
+A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
+A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;
+A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
+A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
+A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
+A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;
+A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
+A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
+A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;
+A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
+A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
+A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
+A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;
+A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
+A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
+A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;
+A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;
+A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;
+A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;
+A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;
+A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;
+A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;
+A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;
+A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;
+A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;
+A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;
+A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;
+A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;
+A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;
+A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;
+A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;
+A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;
+A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;
+A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;
+A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;
+A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;
+A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;
+A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;
+A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;
+A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;
+A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;
+A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;
+A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;
+A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;
+A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;
+A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;
+A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;
+A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;
+A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;
+A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;
+A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;
+A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;
+A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;
+A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;
+A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;
+A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;
+A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;
+A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;
+A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;
+A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;
+A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;
+A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;
+A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;
+A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;
+A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;
+A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;
+A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;
+A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;
+A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;
+A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;
+A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;
+A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;
+A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;
+A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;
+A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;
+A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;
+A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;
+A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;
+A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;
+A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;
+A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;
+A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;
+A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;
+A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;
+A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;
+A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;
+A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;
+A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;
+A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;
+A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;
+A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;
+A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;
+A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;
+A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;
+A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;
+A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;
+A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;
+A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;
+A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;
+A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;
+A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;
+A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;
+A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;
+A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;
+A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;
+A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;
+A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;
+A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;
+A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;
+A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;
+A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;
+A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;
+A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;
+A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;
+A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;
+A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;
+A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;
+A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;
+A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;
+A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;
+A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;
+A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;
+A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;
+A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;
+A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;
+A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;
+A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;
+A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;
+A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;
+A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;
+A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;
+A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;
+A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;
+A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;
+A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;
+A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;
+A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;
+A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
+A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;
+A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
+A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;
+A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;
+A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;
+A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
+A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;
+A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
+A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;
+A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;
+A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
+A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;
+A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
+A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;
+A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;
+A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;
+A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;
+A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;
+A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;
+A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;
+A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;
+A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
+A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;
+A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
+A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;
+A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;
+A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;
+A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;
+A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;
+A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;
+A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;
+A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;
+A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
+A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;
+A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
+A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
+A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;
+A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
+A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;
+A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;
+A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;
+A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;
+A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;
+A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;
+A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;
+A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;
+A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;
+A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;
+A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;
+A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;
+A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;
+A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;
+A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;
+A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;
+A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;
+A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;
+A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;
+A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;
+A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;
+A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;
+A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;
+A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;
+A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;
+A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;
+A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;
+A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;
+A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;
+A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;
+A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;
+A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;
+A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;
+A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
+A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;
+A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
+A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
+A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;
+A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;
+A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;
+A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;
+A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;
+A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;
+A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;
+A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
+A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;
+A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
+A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
+A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
+A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;
+A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
+A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
+A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;
+A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;
+A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;
+A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;
+A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;
+A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;
+A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;
+A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;
+A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
+A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;
+A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;
+A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;
+A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;
+A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;
+A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;
+A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;
+A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;
+A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;
+A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
+A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;
+A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;
+A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
+A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;
+A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;
+A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;
+A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;
+A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;
+A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;
+A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;
+A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;
+A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;
+A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
+A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;
+A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
+A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;
+A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;
+A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;
+A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;
+A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;
+A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;
+A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;
+A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
+A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;
+A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
+A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
+A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;
+A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
+A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;
+A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;
+A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;
+A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;
+A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;
+A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;
+A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;
+A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;
+A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;
+A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;
+A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;
+A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;
+A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;
+A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;
+A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;
+A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;
+A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;
+A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;
+A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
+A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;
+A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
+A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;
+A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;
+A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;
+A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;
+A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;
+A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;
+A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;
+A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;
+A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
+A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;
+A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
+A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
+A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;
+A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
+A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;
+A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;
+A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;
+A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;
+A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;
+A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;
+A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;
+A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;
+A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;
+A491;YI RADICAL LI;So;0;ON;;;;;N;;;;;
+A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;
+A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;
+A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;
+A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;
+A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;
+A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;
+A498;YI RADICAL MI;So;0;ON;;;;;N;;;;;
+A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;
+A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;
+A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;
+A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;
+A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;
+A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;
+A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;
+A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;
+A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;
+A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;
+A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;
+A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;
+A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;
+A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;
+A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;
+A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;
+A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;
+A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;
+A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;
+A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;
+A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;
+A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;
+A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;
+A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;
+A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;
+A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;
+A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;
+A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;
+A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;
+A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;
+A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;
+A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;
+A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;
+A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;
+A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;
+A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;
+A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;
+A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
+A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
+A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
+A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
+F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
+F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
+F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
+F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
+F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
+F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
+F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
+F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
+F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
+F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
+F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
+F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
+F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
+F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
+F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
+F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
+F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
+F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
+F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
+F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
+F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
+F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
+F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
+F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
+F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
+F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
+F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
+F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
+F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
+F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
+F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
+F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
+F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
+F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
+F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
+F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
+F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
+F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
+F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
+F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
+F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
+F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
+F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
+F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
+F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
+F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
+F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
+F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
+F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
+F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
+F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
+F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
+F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
+F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
+F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
+F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
+F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
+F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
+F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
+F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
+F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
+F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
+F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
+F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
+F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
+F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
+F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
+F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
+F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
+F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
+F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
+F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
+F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
+F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
+F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
+F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
+F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
+F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
+F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
+F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
+F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
+F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
+F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;96FB;;;;N;;;;;
+F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
+F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
+F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
+F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
+F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
+F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
+F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
+F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
+F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
+F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
+F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
+F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
+F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
+F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
+F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
+F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
+F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
+F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
+F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
+F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
+F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
+F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
+F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
+F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
+F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
+F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;;
+F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
+F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
+F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
+F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
+F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
+F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
+F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
+F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;;
+F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
+F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
+F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
+F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
+F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;;
+F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
+F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
+F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
+F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
+F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
+F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
+F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
+F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
+F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
+F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
+F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
+F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
+F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
+F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
+F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
+F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
+F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
+F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
+F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
+F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
+F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
+F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
+F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
+F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
+F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
+F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
+F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
+F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
+F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
+F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
+F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
+F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
+F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
+F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
+F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
+F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
+F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
+F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
+F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
+F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
+F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
+F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
+F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
+F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
+F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
+F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
+F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
+F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
+F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
+F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
+F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
+F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
+F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
+F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
+F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
+F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
+F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
+F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;;
+F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
+F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
+F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
+F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
+F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
+F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
+F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
+F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
+F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
+F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
+F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
+F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
+F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
+F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
+F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
+F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
+F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
+F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
+F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
+F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
+F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
+F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
+F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
+F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
+F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
+F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
+F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
+F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
+F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
+F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
+F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;;
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;;
+F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
+F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
+F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
+F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
+F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
+F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
+F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
+F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
+F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
+F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
+F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
+F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
+F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
+F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
+F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
+F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
+F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
+F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
+F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
+F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
+F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
+F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
+F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
+F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
+F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
+F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
+F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
+F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
+F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
+F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
+F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
+F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
+F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
+F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
+F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
+F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
+F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
+F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
+F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
+F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
+F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
+F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;;
+F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
+F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
+FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
+FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
+FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
+FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
+FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
+FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
+FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
+FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
+FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
+FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
+FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
+FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
+FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
+FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
+FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
+FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
+FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
+FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
+FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
+FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
+FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
+FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
+FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
+FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
+FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
+FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
+FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
+FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
+FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
+FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
+FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
+FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;;
+FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
+FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
+FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
+FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;;
+FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
+FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
+FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
+FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
+FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
+FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
+FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
+FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
+FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
+FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
+FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
+FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;;
+FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
+FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ET;<font> 002B;;;;N;;;;;
+FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
+FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
+FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
+FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
+FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
+FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
+FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
+FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
+FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
+FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
+FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
+FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
+FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
+FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
+FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
+FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
+FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
+FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
+FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
+FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
+FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
+FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
+FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
+FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
+FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
+FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
+FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
+FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
+FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
+FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
+FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
+FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
+FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
+FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
+FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
+FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
+FE62;SMALL PLUS SIGN;Sm;0;ET;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
+FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;
+FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;N;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;N;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
+FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;N;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;N;;;;;
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;N;FULLWIDTH OPENING SQUARE BRACKET;;;;
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;N;FULLWIDTH CLOSING SQUARE BRACKET;;;;
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;N;FULLWIDTH OPENING CURLY BRACKET;;;;
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;N;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;N;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;N;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;0;ON;<narrow> 30FB;;;;N;;;;;
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;;
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;;
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
+FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;BN;;;;;N;;;;;
+FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;BN;;;;;N;;;;;
+FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;BN;;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;;
+10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;;
+10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;;
+10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;;
+10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;;
+10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;;
+10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;;
+10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;;
+10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;;
+10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;;
+1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;;
+1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;;
+1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;;
+1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;;
+1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;;
+1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;Faliscan;;;
+10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;;
+10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;;
+10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;;
+10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;;
+10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;;
+10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;;
+10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;;
+10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;Faliscan;;;
+10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;;
+10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;;
+1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;;
+1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;Umbrian;;;
+1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;Umbrian;;;
+1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;Oscan;;;
+1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;Oscan;;;
+10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;;
+10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;;
+10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;;
+10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;;
+10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;;
+10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;;
+10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;;
+10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;;
+10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;;
+10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;;
+10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;;
+10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;;
+10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;;
+10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;;
+1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;;
+1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;;
+1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;;
+1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;;
+1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;;
+1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;;
+10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;;
+10341;GOTHIC LETTER NINETY;Lo;0;L;;;;;N;;;;;
+10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;;
+10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;;
+10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;;
+10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;;
+10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;;
+10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;;
+10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;;
+10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;;
+1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;;N;;;;;
+10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428;
+10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429;
+10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A;
+10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B;
+10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C;
+10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D;
+10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E;
+10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F;
+10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430;
+10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431;
+1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432;
+1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433;
+1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434;
+1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435;
+1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436;
+1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437;
+10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438;
+10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439;
+10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A;
+10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B;
+10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C;
+10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D;
+10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E;
+10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F;
+10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440;
+10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441;
+1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442;
+1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443;
+1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444;
+1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445;
+1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446;
+1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447;
+10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448;
+10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449;
+10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A;
+10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B;
+10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C;
+10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D;
+10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400
+10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401
+1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402
+1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403
+1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404
+1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405
+1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406
+1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407
+10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408
+10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409
+10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A
+10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B
+10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C
+10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D
+10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E
+10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F
+10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410
+10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411
+1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412
+1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413
+1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414
+1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415
+1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416
+1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417
+10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418
+10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419
+10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A
+10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B
+10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C
+10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D
+10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E
+10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F
+10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420
+10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421
+1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422
+1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423
+1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424
+1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425
+1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;;
+1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;;
+1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;;
+1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;;
+1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;;
+1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;;
+1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;;
+1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;;
+1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;;
+1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;;
+1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;;
+1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;;
+1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;;
+1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;;
+1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;;
+1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;;
+1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;;
+1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;;
+1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;;
+1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;;
+1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;;
+1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;;
+1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;;
+1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;;
+1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;;
+1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;;
+1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;;
+1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;;
+1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;;
+1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;;
+1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;;
+1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;;
+1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;;
+1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;;
+1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;;
+1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;;
+1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;;
+1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;;
+1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;;
+1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;;
+1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;;
+1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;;
+1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;;
+1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;;
+1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;;
+1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;;
+1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;;
+1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;;
+1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;;
+1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;;
+1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;;
+1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;;
+1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;;
+1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;;
+1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;;
+1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;;
+1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;;
+1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;;
+1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;;
+1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;;
+1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;;
+1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;;
+1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;;
+1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;;
+1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;;
+1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;;
+1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;;
+1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;;
+1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;;
+1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;;
+1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;;
+1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;;
+1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;;
+1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;;
+1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;;
+1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;;
+1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;;
+1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;;
+1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;;
+1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;;
+1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;;
+1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;;
+1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;;
+1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;;
+1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;;
+1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;;
+1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;;
+1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;;
+1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;;
+1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;;
+1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;;
+1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;;
+1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;;
+1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;;
+1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;;
+1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;;
+1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;;
+1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;;
+1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;;
+1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;;
+1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;;
+1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;;
+1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;;
+1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;;
+1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;;
+1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;;
+1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;;
+1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;;
+1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;;
+1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;;
+1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;;
+1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;;
+1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;;
+1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;;
+1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;;
+1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;;
+1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;;
+1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;;
+1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;;
+1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;;
+1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;;
+1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;;
+1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;;
+1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;;
+1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;;
+1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;;
+1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;;
+1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;;
+1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;;
+1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;;
+1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;;
+1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;;
+1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;;
+1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;;
+1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;;
+1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;;
+1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;;
+1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;;
+1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;;
+1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;;
+1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;;
+1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;;
+1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
+1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;;
+1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;;
+1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;;
+1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
+1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;;
+1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;;
+1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;;
+1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;;
+1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;;
+1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;;
+1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;;
+1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;;
+1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;;
+1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;;
+1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;;
+1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;;
+1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
+1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
+1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;;
+1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
+1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
+1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;;
+1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;;
+1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;;
+1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;;
+1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;;
+1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;;
+1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;;
+1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;;
+1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;;
+1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;;
+1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;;
+1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;;
+1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;;
+1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;;
+1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;;
+1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;;
+1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;;
+1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;;
+1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;;
+1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;;
+1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;;
+1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;;
+1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;;
+1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;;
+1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;;
+1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;;
+1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;;
+1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;;
+1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;;
+1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;;
+1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;;
+1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;;
+1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;;
+1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
+1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
+1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
+1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
+1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;;
+1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;;
+1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;;
+1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;;
+1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;;
+1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;;
+1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;;
+1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;;
+1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;;
+1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;;
+1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;;
+1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;;
+1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;;
+1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;;
+1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;;
+1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;;
+1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;;
+1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;;
+1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;;
+1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;;
+1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;;
+1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;;
+1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;;
+1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;;
+1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;;
+1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;;
+1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;;
+1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;;
+1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;;
+1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;;
+1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;;
+1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;;
+1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;;
+1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;;
+1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;;
+1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;;
+1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;;
+1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;;
+1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;;
+1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;;
+1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;;
+1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;;
+1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;;
+1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;;
+1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;;
+1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;;
+1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;;
+1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;;
+1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;;
+1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;;
+1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;;
+1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;;
+1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;;
+1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;;
+1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;;
+1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;;
+1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;;
+1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;;
+1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;;
+1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;;
+1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;;
+1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;;
+1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;;
+1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;;
+1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;;
+1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;;
+1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;;
+1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;;
+1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;;
+1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;;
+1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;;
+1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;;
+1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;;
+1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;;
+1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;;
+1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;;
+1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;;
+1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;;
+1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;;
+1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;;
+1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;;
+1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;;
+1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;;
+1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;;
+1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;;
+1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;;
+1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;;
+1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;;
+1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;;
+1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;;
+1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;;
+1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;;
+1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
+1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
+1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;;
+1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;;
+1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
+1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
+1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;;
+1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;;
+1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;;
+1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;;
+1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;;
+1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;;
+1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;;
+1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;;
+1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;;
+1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;;
+1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;;
+1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;;
+1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;;
+1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;;
+1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;;
+1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;;
+1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;;
+1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;;
+1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;;
+1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;;
+1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;;
+1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;;
+1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;;
+1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;;
+1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;;
+1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;;
+1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;;
+1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;;
+1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;;
+1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;;
+1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;;
+1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;;
+1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;;
+1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;;
+1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;;
+1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;;
+1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;;
+1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;;
+1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;;
+1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;;
+1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;;
+1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;;
+1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;;
+1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;;
+1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;;
+1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;;
+1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;;
+1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;;
+1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;;
+1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;;
+1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;;
+1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;;
+1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;;
+1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;;
+1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;;
+1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;;
+1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;;
+1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;;
+1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;;
+1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;;
+1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;;
+1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;;
+1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;;
+1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;;
+1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;;
+1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;;
+1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;;
+1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;;
+1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;;
+1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;;
+1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;;
+1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;;
+1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;;
+1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;;
+1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;;
+1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;;
+1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;;
+1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;;
+1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;;
+1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;;
+1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;;
+1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;;
+1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;;
+1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;;
+1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;;
+1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;;
+1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;;
+1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;;
+1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;;
+1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;;
+1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;;
+1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;;
+1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;;
+1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;;
+1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;;
+1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;;
+1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;;
+1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;;
+1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;;
+1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;;
+1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;;
+1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;;
+1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;;
+1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;;
+1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;;
+1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;;
+1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;;
+1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
+1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
+1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
+1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
+1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
+1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
+1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;;
+1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;;
+1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;;
+1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;;
+1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;;
+1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;;
+1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;;
+1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;;
+1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;;
+1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;;
+1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;;
+1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;;
+1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;;
+1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;;
+1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;;
+1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;;
+1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;;
+1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
+2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
+2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;;
+2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;;
+2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;;
+2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;;
+2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;;
+2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;;
+2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;;
+2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;;
+2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;;
+2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;;
+2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;;
+2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;;
+2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;;
+2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;;
+2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;;
+2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;;
+2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;;
+2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;;
+2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;;
+2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;;
+2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;;
+2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;;
+2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;;
+2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;;
+2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;;
+2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;;
+2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;;
+2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;;
+2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;;
+2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;;
+2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;;
+2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;;
+2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;;
+2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;;
+2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;;
+2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;;
+2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;;
+2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;;
+2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;;
+2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;;
+2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;;
+2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;;
+2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;;
+2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;;
+2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;;
+2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;;
+2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;;
+2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;;
+2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;;
+2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;;
+2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;;
+2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;;
+2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;;
+2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;;
+2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;;
+2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;;
+2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;;
+2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;;
+2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;;
+2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;;
+2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;;
+2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;;
+2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;;
+2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;;
+2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;;
+2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;;
+2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;;
+2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;;
+2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;;
+2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;;
+2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;;
+2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;;
+2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;;
+2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;;
+2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;;
+2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;;
+2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;;
+2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;;
+2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;;
+2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;;
+2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;;
+2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;;
+2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;;
+2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;;
+2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;;
+2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;;
+2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;;
+2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;;
+2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;;
+2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;;
+2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;;
+2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;;
+2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;;
+2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;;
+2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;;
+2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;;
+2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;;
+2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;;
+2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;;
+2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;;
+2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;;
+2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;;
+2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;;
+2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;;
+2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;2136A;;;;N;;;;;
+2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;;
+2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;;
+2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;;
+2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;;
+2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;;
+2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;;
+2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;;
+2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;;
+2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;;
+2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;;
+2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;;
+2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F33;;;;N;;;;;
+2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;;
+2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;;
+2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;;
+2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;;
+2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;;
+2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;;
+2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;;
+2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;;
+2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;;
+2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;;
+2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;;
+2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;;
+2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;;
+2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;;
+2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;;
+2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;;
+2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;;
+2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;;
+2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;;
+2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;;
+2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;;
+2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;;
+2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;;
+2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;;
+2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;;
+2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;;
+2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;;
+2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;;N;;;;;
+2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;;
+2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;;
+2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;;
+2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;;
+2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;;
+2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;;
+2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;;
+2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;;
+2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;;
+2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;;
+2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;;
+2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;;
+2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;;
+2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;;
+2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;;
+2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;;
+2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;;
+2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;;
+2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;;
+2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;;
+2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;;
+2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;;
+2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;;
+2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;;
+2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;;
+2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;;
+2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;;
+2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;;
+2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;;
+2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;;
+2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;;
+2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;;
+2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;;
+2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;;
+2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;;
+2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;;
+2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;;
+2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;;
+2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;;
+2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;;
+2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;;
+2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;;
+2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;;
+2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;;
+2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;;
+2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;;
+2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;;
+2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;;
+2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;;
+2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;;
+2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;;
+2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;;
+2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;;
+2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;;
+2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;;
+2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;;
+2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;;
+2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;;
+2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;;
+2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;;
+2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;;
+2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;;
+2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;;
+2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;;
+2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;;
+2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;;
+2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;;
+2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;;
+2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;;
+2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;;
+2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;;
+2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;;
+2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;;
+2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;;
+2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;;
+2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;;
+2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;;
+2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;;
+2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;;
+2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;;
+2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;;
+2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;;
+2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;;
+2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;;
+2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;;
+2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;;
+2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;;
+2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;;
+2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;;
+2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;;
+2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;;
+2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;;
+2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;;
+2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;;
+2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;;
+2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;;
+2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;;
+2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;;
+2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;;
+2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;;
+2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;;
+2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;;
+2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;;
+2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;;
+2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;;
+2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;;
+2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;;
+2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;;
+2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;;
+2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;;
+2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;;
+2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;;
+2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;;
+2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;;
+2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;;
+2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;;
+2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;;
+2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;;
+2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;;
+2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;;
+2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;;
+2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;;
+2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;;
+2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;;
+2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;;
+2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;;
+2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;;
+2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;;
+2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;;
+2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;;
+2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;;
+2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;;
+2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;;
+2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;;
+2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;;
+2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;;
+2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;;
+2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;;
+2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;;
+2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;;
+2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;;
+2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;;
+2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;43AB;;;;N;;;;;
+2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;;
+2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;;
+2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;;
+2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;;
+2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;;
+2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;;
+2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;;
+2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;;
+2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;;
+2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;;
+2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;;
+2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;;
+2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;;
+2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;;
+2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;;
+2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;;
+2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;;
+2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;;
+2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;;
+2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;;
+2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;;
+2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;;
+2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;;
+2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;;
+2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;;
+2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;;
+2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;;
+2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;;
+2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;;
+2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;;
+2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;;
+2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;;
+2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;;
+2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;;
+2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;;
+2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;;
+2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;;
+2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;;
+2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;;
+2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;;
+2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;;
+2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;;
+2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;;
+2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;;
+2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;;
+2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;;
+2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;;
+2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;;
+2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;;
+2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;;
+2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;;
+2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;;
+2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;;
+2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;;
+2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;;
+2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;;
+2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;;
+2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;;
+2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;;
+2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;;
+2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;;
+2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;;
+2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;;
+2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AAE;;;;N;;;;;
+2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;;
+2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;;
+2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;;
+2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;;
+2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;;
+2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;;
+2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;;
+2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;;
+2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;;
+2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;;
+2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;;
+2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;;
+2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;;
+2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;;
+2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;;
+2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;;
+2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;;
+2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;;
+2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;;
+2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;;
+2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;;
+2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;;
+2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;;
+2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;;
+2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;;
+2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;;
+2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;;
+2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;;
+2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;;
+2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;;
+2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;;
+2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;;
+2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;;
+2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;;
+2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;;
+2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;;
+2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;;
+2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;;
+2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;;
+2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;;
+2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;;
+2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;;
+2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;;
+2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;;
+2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;;
+2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;;
+2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;;
+2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;;
+2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;;
+2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;;
+2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;;
+2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;;
+2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;;
+2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;;
+2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;;
+2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;;
+2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;;
+2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;;
+2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;;
+2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;;
+2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;;
+2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;;
+2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;;
+2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;;
+2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;;
+2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;;
+2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;;
+2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;;
+2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;;
+2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;;
+2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;;
+2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;;
+2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;;
+2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;;
+2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;;
+2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;;
+2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;;
+2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;;
+2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;;
+2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;;
+2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;;
+2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;;
+2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;;
+2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;;
+2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;;
+2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;;
+2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;;
+2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;;
+2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;;
+2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;;
+2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;;
+2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;;
+2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;;
+2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;;
+2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;;
+2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;4D57;;;;N;;;;;
+2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;;
+2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;;
+2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;;
+2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;;
+2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;;
+2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;;
+2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;;
+2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;;
+2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;;
+2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;;
+2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;;
+2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;;
+2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;;
+2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;;
+2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;;
+2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;;
+2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;;
+2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;;
+2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;;
+2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;;
+2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;;
+2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;;
+2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;;
+2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;;
+2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;;
+2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;;
+2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;;
+2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;;
+2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;;
+2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;;
+2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;;
+2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;;
+2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;;
+2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;;
+2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;;
+2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;;
+2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;;
+2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;;
+2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;;
+2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;;
+2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;;
+2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;;
+2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;;
+2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;;
+2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;;
+2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;;
+2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;;
+2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;;
+2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;;
+2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;;
+2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;;
+2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;;
+2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;;
+2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;;
+2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;;
+2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;;
+2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;;
+2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;;
+2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;;
+2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;;
+2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;;
+2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;;
+2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;;
+2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;;
+2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;;
+2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;;
+2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;;
+2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;;
+2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;;
+2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;;
+2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;;
+2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;;
+2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;;
+2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;;
+2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;;
+2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;;
+2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;;
+2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;;
+2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;;
+2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;;
+2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;;
+2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;;
+2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;;
+2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;;
+2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;;
+2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;;
+2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;;
+2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;;
+2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;;
+2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;;
+2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;;
+2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;;
+2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;;
+2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;;
+E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;;
+E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;;
+E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;;
+E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;;
+E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;;
+E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;;
+E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;;
+E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;;
+E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;;
+E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
+E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
+E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;;
+E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;;
+E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;;
+E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;;
+E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;;
+E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;;
+E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;;
+E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;;
+E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;;
+E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;;
+E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;;
+E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;;
+E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;;
+E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;;
+E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;;
+E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;;
+E003A;TAG COLON;Cf;0;BN;;;;;N;;;;;
+E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;;
+E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;;
+E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;;
+E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;;
+E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;;
+E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;;
+E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;;
+E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;;
+E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;;
+E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;;
+E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;;
+E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;;
+E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;;
+E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;;
+E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;;
+E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;;
+E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;;
+E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;;
+E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;;
+E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;;
+E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;;
+E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;;
+E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;;
+E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;;
+E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;;
+E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;;
+E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;;
+E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;;
+E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;;
+E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;;
+E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;;
+E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;;
+E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
+E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;;
+E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
+E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;;
+E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;;
+E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;;
+E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;;
+E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;;
+E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;;
+E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;;
+E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;;
+E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;;
+E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;;
+E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;;
+E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;;
+E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;;
+E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;;
+E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;;
+E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;;
+E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;;
+E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;;
+E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;;
+E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;;
+E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;;
+E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;;
+E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;;
+E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;;
+E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;;
+E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;;
+E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;;
+E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;;
+E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;;
+E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
+E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;;
+E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
+E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;;
+E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;;
+F0000;<Plane 15 Private Use, First>;Co;0;L;;;;;N;;;;;
+FFFFD;<Plane 15 Private Use, Last>;Co;0;L;;;;;N;;;;;
+100000;<Plane 16 Private Use, First>;Co;0;L;;;;;N;;;;;
+10FFFD;<Plane 16 Private Use, Last>;Co;0;L;;;;;N;;;;;
diff --git a/src/com/ibm/icu/dev/data/unicode/UnicodeData.txt b/src/com/ibm/icu/dev/data/unicode/UnicodeData.txt
new file mode 100755
index 0000000..125a692
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/UnicodeData.txt
@@ -0,0 +1,13874 @@
+0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
+0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
+0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;;
+000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;;
+000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;;
+000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;;
+001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;;
+001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;;
+001F;<control>;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;;
+0020;SPACE;Zs;0;WS;;;;;N;;;;;
+0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
+0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
+0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
+0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
+0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
+0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
+0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
+002A;ASTERISK;Po;0;ON;;;;;N;;;;;
+002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;;
+0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
+0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
+0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
+0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
+0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
+0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
+0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
+0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
+0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
+0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
+003A;COLON;Po;0;CS;;;;;N;;;;;
+003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
+003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
+0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
+0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
+0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
+0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
+0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
+0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
+0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
+0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
+0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
+0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
+004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
+004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
+004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
+004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
+004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
+004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
+0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
+0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
+0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
+0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
+0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
+0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
+0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
+0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
+0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
+0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
+005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
+005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
+005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
+005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
+005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
+0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
+0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
+0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
+0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
+0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
+0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
+0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
+0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
+0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
+006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
+006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
+006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
+006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
+006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
+006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
+0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
+0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
+0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
+0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
+0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
+0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
+0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
+0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
+0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
+0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
+007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
+007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
+007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
+007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
+007E;TILDE;Sm;0;ON;;;;;N;;;;;
+007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;BN;;;;;N;;;;;
+0081;<control>;Cc;0;BN;;;;;N;;;;;
+0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
+0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
+0084;<control>;Cc;0;BN;;;;;N;;;;;
+0085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;;
+0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
+0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
+0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
+0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
+008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
+008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;;
+008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;;
+008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
+008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
+008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
+0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
+0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
+0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
+0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
+0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
+0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
+0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
+0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
+0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
+0099;<control>;Cc;0;BN;;;;;N;;;;;
+009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
+009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
+009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
+009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
+009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
+009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
+00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
+00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
+00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
+00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
+00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
+00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
+00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
+00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
+00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
+00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
+00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
+00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;2;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
+00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
+00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;1;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;;
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
+00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
+00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
+00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
+00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
+00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
+00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
+00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6;
+00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
+00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
+00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
+00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
+00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
+00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
+00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
+00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
+00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
+00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
+00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
+00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
+00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
+00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
+00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
+00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
+00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
+00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
+00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
+00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
+00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
+00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
+00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
+00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
+00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
+00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
+00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
+00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
+00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
+00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
+00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6
+00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
+00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
+00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
+00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
+00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
+00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
+00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
+00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
+00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
+00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
+00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
+00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
+00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
+00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
+00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
+00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
+00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
+00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
+00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
+00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
+00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
+00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
+00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
+00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
+0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
+0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
+0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
+0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
+0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
+0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
+0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
+0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
+0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
+0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
+010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
+010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
+010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
+010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
+010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
+010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
+0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
+0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
+0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
+0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
+0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
+0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
+0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
+0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
+0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
+0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
+011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
+011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
+011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
+011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
+011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
+011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
+0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
+0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
+0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
+0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
+0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
+0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
+0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
+0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
+0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
+0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
+012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
+012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
+012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
+012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
+012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
+012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
+0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
+0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
+0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
+0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
+0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
+0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
+0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
+0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
+0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
+013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
+013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
+013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
+013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
+013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
+013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
+0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
+0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
+0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
+0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
+0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
+0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
+0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
+0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
+0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
+014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
+014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
+014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
+014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
+0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
+0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
+0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
+0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
+0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
+0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
+0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
+0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
+0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
+0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
+015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
+015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
+015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
+015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
+015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F;
+015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E
+0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
+0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
+0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163;
+0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162
+0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
+0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
+0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
+0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
+0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
+0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
+016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
+016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
+016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
+016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
+016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
+016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
+0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
+0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
+0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
+0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
+0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
+0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
+0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
+0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
+0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
+0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
+017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
+017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
+017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
+017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
+017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
+017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
+0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;;
+0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
+0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
+0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
+0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
+0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
+0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
+0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
+0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
+0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256;
+018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
+018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
+018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
+018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
+018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
+018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
+0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
+0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
+0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
+0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
+0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
+0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6
+0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
+0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
+0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
+0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
+019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;;;
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
+019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
+019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220
+019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275;
+01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
+01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
+01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2
+01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
+01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
+01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280;
+01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
+01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
+01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
+01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;
+01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
+01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
+01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
+01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
+01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
+01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
+01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
+01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
+01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
+01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
+01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
+01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
+01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
+01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
+01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
+01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
+01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
+01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
+01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
+01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7
+01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
+01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
+01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
+01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
+01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
+01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
+01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
+01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
+01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
+01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
+01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
+01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
+01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
+01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
+01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
+01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
+01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
+01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
+01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
+01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
+01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
+01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
+01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
+01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
+01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
+01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
+01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2
+01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
+01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
+01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
+01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
+01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
+01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
+01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
+01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
+01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
+01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
+01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
+01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
+01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
+01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
+01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
+01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
+01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;
+01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;
+01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;
+01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8
+01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
+01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
+01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC
+01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
+01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
+0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
+0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
+0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
+0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
+0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
+0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
+0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
+0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
+0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
+0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
+020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
+020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
+020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
+020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
+020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
+020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
+0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
+0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
+0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
+0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
+0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
+0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
+0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
+0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
+0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219;
+0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218
+021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B;
+021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A
+021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;
+021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C
+021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;
+021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E
+0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E;
+0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223;
+0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222
+0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225;
+0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224
+0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227;
+0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226
+0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229;
+0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228
+022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B;
+022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A
+022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D;
+022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C
+022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F;
+022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E
+0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231;
+0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230
+0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233;
+0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;;
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;;
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
+0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
+0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
+0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
+0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
+0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
+0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
+0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
+025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
+025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
+025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
+025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
+025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
+025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
+0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
+0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
+0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
+0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
+0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
+0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
+0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
+0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
+026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
+026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
+026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
+026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
+0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;;
+0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
+0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
+0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
+0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
+0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
+0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
+0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
+0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
+027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
+027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;;
+027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
+027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
+0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;*;01A6;;01A6
+0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
+0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
+0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
+0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
+0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
+0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
+0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
+0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
+0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;;
+028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
+028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
+028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;;
+028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
+028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
+028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
+0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
+0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
+0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
+0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
+0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
+0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
+0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
+0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
+029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
+029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
+029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
+029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
+029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
+029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
+02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
+02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
+02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
+02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
+02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
+02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
+02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
+02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
+02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
+02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
+02B9;MODIFIER LETTER PRIME;Sk;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Sk;0;ON;;;;;N;;;;;
+02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
+02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
+02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
+02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
+02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
+02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
+02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
+02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
+02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EC;MODIFIER LETTER VOICING;Sk;0;ON;;;;;N;;;;;
+02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
+02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399
+0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
+0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;
+034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;
+034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;
+034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;
+034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;;
+0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;
+0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;
+0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;;
+0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;;
+0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;;
+0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;;
+0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;;
+0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;;
+0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;;
+036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;;
+036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;;
+036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;;
+036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;;
+036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;;
+036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;;
+0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;;
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
+0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
+0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
+0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
+0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
+0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
+0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
+0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
+0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
+0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
+039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
+039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
+039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
+039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
+039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
+039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
+03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
+03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
+03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
+03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
+03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
+03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
+03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
+03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
+03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
+03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
+03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
+03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
+03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
+03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
+03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
+03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
+03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
+03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
+03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
+03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
+03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
+03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
+03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
+03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
+03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
+03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
+03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
+03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
+03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
+03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
+03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
+03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
+03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
+03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
+03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
+03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
+03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
+03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
+03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
+03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;;
+03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;*;;03D9;
+03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;*;03D8;;03D8
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;
+03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;
+03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;
+03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;
+03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0
+03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
+03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
+03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
+03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
+03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
+03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
+03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
+03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
+03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
+03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
+03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
+03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
+03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
+03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
+03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03A3;;03A3
+03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
+03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;
+03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395
+03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;;
+0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450;
+0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
+0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
+0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
+0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
+0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
+0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
+0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
+0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
+0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
+040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
+040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
+040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
+040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D;
+040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
+040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
+0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
+0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
+0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
+0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
+0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
+0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
+0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
+0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
+0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
+0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
+041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
+041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
+041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
+041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
+041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
+041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
+0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
+0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
+0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
+0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
+0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
+0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
+0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
+0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
+0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
+0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
+042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
+042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
+042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
+042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
+042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
+042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
+0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
+0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
+0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
+0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
+0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
+0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
+0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
+0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
+0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
+0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
+043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
+043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
+043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
+043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
+043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
+043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
+0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
+0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
+0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
+0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
+0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
+0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
+0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
+0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
+0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
+0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
+044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
+044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
+044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
+044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
+044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
+044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
+0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400
+0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
+0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
+0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
+0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
+0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
+0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
+0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
+0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
+0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
+045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
+045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
+045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
+045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D
+045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
+045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
+0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
+0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
+0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
+0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
+0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
+0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
+0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
+0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
+0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
+0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
+046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
+046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
+046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
+046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
+046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
+046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
+0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
+0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
+0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
+0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
+0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
+0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
+0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
+0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
+0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
+0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
+047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
+047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
+047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
+047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
+047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
+047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
+0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
+0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
+0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
+0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;;
+0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B;
+048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A
+048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;
+048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C
+048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;
+048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E
+0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
+0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
+0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
+0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
+0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
+0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
+0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
+0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
+0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
+0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
+049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
+049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
+049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
+049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
+049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
+049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
+04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
+04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
+04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
+04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
+04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
+04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
+04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
+04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
+04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
+04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
+04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
+04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
+04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
+04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
+04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
+04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
+04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
+04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
+04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
+04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
+04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
+04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
+04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
+04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
+04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
+04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
+04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
+04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
+04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
+04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
+04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;;
+04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
+04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
+04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
+04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
+04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6;
+04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5
+04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
+04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
+04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA;
+04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9
+04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
+04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
+04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE;
+04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD
+04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
+04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
+04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
+04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
+04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
+04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
+04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
+04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
+04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
+04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
+04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
+04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
+04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
+04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
+04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
+04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
+04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
+04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
+04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
+04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
+04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;
+04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC
+04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
+04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
+04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
+04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
+04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
+04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
+04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
+04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
+04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
+04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
+0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501;
+0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500
+0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503;
+0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502
+0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505;
+0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504
+0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507;
+0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506
+0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509;
+0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508
+050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B;
+050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A
+050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D;
+050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C
+050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F;
+050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E
+0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
+0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
+0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
+0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
+0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
+0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
+0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
+0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
+0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
+053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
+053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
+053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
+053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
+053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
+053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
+0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
+0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
+0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
+0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
+0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
+0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
+0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
+0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
+0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
+0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
+054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
+054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
+054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
+054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
+054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
+054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
+0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
+0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
+0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
+0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
+0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
+0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
+0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
+0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
+055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
+055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
+055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
+055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
+055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
+0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
+0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
+0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
+0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
+0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
+0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
+0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
+0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
+056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
+056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
+056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
+056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
+056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
+056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
+0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
+0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
+0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
+0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
+0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
+0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
+0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
+0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
+0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
+0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
+057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
+057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
+057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
+057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
+057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
+057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
+0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
+0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
+0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
+0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
+0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
+0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
+0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
+0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
+058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;;
+0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;;
+05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;;
+05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;;
+05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;;
+05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
+05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
+05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
+05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
+05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
+05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
+05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
+05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
+05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
+05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
+05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
+05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
+05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
+05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
+05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
+05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
+05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
+05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
+05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
+05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
+05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
+05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
+05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
+05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
+05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
+05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
+05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
+0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;;
+0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;
+0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
+066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;
+066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;;
+066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Cf;0;AL;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;
+06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
+06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
+06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
+06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
+06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
+06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
+06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
+06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
+06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
+06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
+06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;;
+06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;;
+0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;;
+0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;;
+0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;;
+0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;;
+0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;;
+070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;;
+070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;;
+070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;;
+070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;;
+0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;;
+0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;;
+0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;;
+0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;;
+0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;;
+0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;;
+0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;;
+0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;;
+0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;;
+071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;;
+071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;;
+071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;;
+071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;;
+071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;;
+0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;;
+0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;;
+0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;;
+0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;;
+0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;;
+0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;;
+0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;;
+0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;;
+0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;;
+0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;;
+072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;;
+072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;;
+072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;;
+0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;;
+0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;;
+073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;;
+073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;;
+0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;;
+0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;;
+0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;;
+0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;;
+074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;;
+0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;
+0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;
+0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;
+0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;
+0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;
+0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;
+0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;
+0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;
+078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;
+078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;
+078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;
+078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;
+078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;
+078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;
+0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;
+0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;
+0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;
+0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;
+0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;
+0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;
+0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;
+0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;
+0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;
+079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;
+079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;
+079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;
+079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;
+079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;
+079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;
+07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;
+07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;
+07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;
+07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;
+07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;
+07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;
+07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;
+07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;
+07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;
+07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;
+07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;
+07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;
+07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;
+07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;
+07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;
+07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;
+07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;
+07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
+0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
+0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
+0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
+0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
+090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
+090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
+090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
+090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
+0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
+0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
+0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
+0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
+0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
+0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
+0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
+0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
+091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
+091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
+0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
+0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
+0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
+0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
+092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
+092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
+092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
+092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
+0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
+0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
+0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
+0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
+0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
+0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
+0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
+093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
+094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
+0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
+095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
+095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
+095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
+095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
+095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
+095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
+0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
+0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
+0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
+0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
+0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
+0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
+098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
+098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
+0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
+0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
+0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
+0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
+0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
+0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
+099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
+099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
+099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
+099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
+099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
+099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
+09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
+09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
+09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
+09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
+09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
+09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
+09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
+09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
+09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
+09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
+09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
+09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
+09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
+09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;;
+09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
+09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
+09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
+09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
+09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
+09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
+09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
+09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
+09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
+09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
+09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
+09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
+0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
+0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
+0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
+0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
+0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
+0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
+0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
+0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
+0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
+0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
+0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
+0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
+0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
+0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
+0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
+0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
+0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
+0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
+0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
+0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;;
+0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
+0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;;
+0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
+0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
+0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
+0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
+0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
+0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
+0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
+0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
+0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
+0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
+0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
+0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
+0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
+0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
+0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
+0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
+0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
+0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
+0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
+0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
+0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
+0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
+0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
+0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
+0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
+0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
+0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
+0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
+0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
+0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
+0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
+0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
+0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
+0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
+0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
+0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
+0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
+0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
+0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
+0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
+0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
+0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
+0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
+0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
+0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
+0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
+0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
+0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
+0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
+0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
+0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
+0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
+0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
+0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
+0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
+0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;;
+0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;;
+0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
+0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
+0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
+0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
+0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
+0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
+0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
+0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
+0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
+0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
+0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
+0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
+0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
+0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
+0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
+0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
+0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
+0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
+0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
+0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
+0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
+0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
+0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
+0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
+0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
+0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
+0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
+0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
+0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
+0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
+0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
+0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
+0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
+0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
+0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
+0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
+0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
+0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
+0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
+0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
+0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
+0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
+0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
+0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
+0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
+0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
+0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
+0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
+0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
+0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
+0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
+0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
+0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
+0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
+0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
+0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
+0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
+0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
+0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
+0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
+0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
+0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
+0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
+0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
+0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
+0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
+0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
+0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
+0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
+0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
+0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
+0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
+0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
+0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
+0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
+0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
+0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
+0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
+0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
+0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
+0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
+0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
+0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
+0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
+0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
+0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
+0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
+0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
+0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
+0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
+0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
+0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
+0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
+0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
+0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
+0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
+0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
+0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
+0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
+0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
+0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
+0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
+0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
+0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
+0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0CC6;KANNADA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
+0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
+0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
+0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
+0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
+0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
+0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
+0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
+0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
+0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
+0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
+0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
+0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
+0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
+0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
+0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
+0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
+0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
+0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
+0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
+0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
+0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
+0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
+0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
+0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
+0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
+0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
+0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
+0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
+0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
+0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
+0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
+0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
+0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
+0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
+0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
+0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
+0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
+0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
+0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
+0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
+0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
+0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
+0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;
+0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;
+0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;
+0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;
+0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;
+0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;
+0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;
+0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;
+0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;
+0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;
+0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;
+0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;
+0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;
+0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;
+0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;
+0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;
+0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;
+0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;
+0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;
+0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;
+0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;
+0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;
+0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;
+0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;
+0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;
+0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;
+0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;
+0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;
+0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;
+0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;
+0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;
+0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;
+0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
+0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
+0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
+0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
+0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
+0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
+0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
+0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
+0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
+0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
+0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
+0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
+0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
+0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
+0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
+0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
+0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
+0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
+0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
+0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
+0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
+0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
+0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
+0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
+0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
+0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
+0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
+0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
+0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
+0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
+0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
+0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
+0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
+0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
+0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
+0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
+0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
+0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
+0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
+0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
+0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
+0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
+0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
+0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
+0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
+0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
+0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
+0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
+0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;;
+0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
+0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
+0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
+0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
+0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
+0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
+0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
+0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
+0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
+0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
+0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
+0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
+0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
+0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
+0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
+0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
+0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
+0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
+0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
+0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
+0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
+0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
+0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
+0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
+0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
+0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
+0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
+0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
+0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
+0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
+0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
+0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
+0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
+0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
+0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
+0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
+0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
+0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
+0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
+0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
+0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
+0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
+0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
+0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;;
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;;
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;;
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;;
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
+0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;;
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;;
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
+0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;;
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;TIBETAN RIGHT BRACE;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;;
+0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
+0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
+0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
+0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
+0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
+0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
+0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
+0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;
+0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
+0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
+0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
+0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
+0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
+0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
+0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
+0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
+0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
+0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
+0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
+0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
+0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
+0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
+0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
+0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;
+0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
+0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;;
+0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
+0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;
+0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
+0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
+0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
+0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
+0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
+0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;;
+0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
+0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
+0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
+0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;
+0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;;
+0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;;
+0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;;
+0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;;
+0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;;
+0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;
+0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;
+0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;;
+0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;;
+0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;;
+0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;;
+0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;;
+0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;;
+0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;;
+0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;;
+0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;;
+0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;;
+0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;;
+0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;;
+1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;;
+1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;;
+1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;;
+1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;;
+1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;;
+1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;;
+1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;;
+1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;;
+1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;;
+1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;;
+100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;;
+100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;;
+100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;;
+100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;;
+100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;;
+100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;;
+1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;;
+1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;;
+1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;;
+1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;;
+1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;;
+1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;;
+1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;;
+1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;;
+1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;;
+1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;;
+101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;;
+101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;;
+101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;;
+101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;;
+101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;;
+101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;;
+1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;;
+1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;;
+1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;;
+1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;;
+1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;;
+1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;;
+1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;;
+1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
+102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
+102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;;
+1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;;
+104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;;
+104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;;
+104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;;
+104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;;
+104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;;
+1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;;
+1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;;
+1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;;
+10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;;
+10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;;
+1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;;
+1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
+1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;;
+1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;;
+1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;;
+1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
+1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;;
+120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
+120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;;
+1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;;
+1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;;
+1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;;
+1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;;
+1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;;
+1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;;
+1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;;
+1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;;
+1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;;
+121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
+121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;;
+1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;;
+1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;;
+1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;;
+1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;;
+1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;;
+1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;;
+1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;;
+1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;;
+1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;;
+122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;;
+122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;;
+122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;;
+1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;;
+1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
+1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;;
+1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
+123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;;
+123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
+123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;;
+1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;;
+1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;;
+1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;;
+1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;;
+1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;;
+124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;;
+124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;;
+124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;;
+124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;;
+1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;;
+1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;;
+1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;;
+1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;;
+1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;;
+1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;;
+1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;;
+1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;;
+125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;;
+125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;;
+125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;;
+125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;;
+1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;;
+1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
+1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;;
+1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;;
+126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
+126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;;
+126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;;
+1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;;
+1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
+1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;;
+1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;;
+127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
+127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;;
+1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;;
+1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;;
+1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;;
+1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;;
+1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;;
+1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;;
+128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;;
+128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;;
+128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;;
+128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;;
+1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;;
+1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
+1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;;
+1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
+1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;;
+129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
+129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
+129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;;
+12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;;
+12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;;
+12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;;
+12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;;
+12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;;
+12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;;
+12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;;
+12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;;
+12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;;
+12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
+12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;;
+12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;;
+12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;;
+12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;;
+12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;;
+12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;;
+12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;;
+12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;;
+12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;;
+12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;;
+12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;;
+12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;;
+12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;;
+12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;;
+12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;;
+12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;;
+12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;;
+12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;;
+12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;;
+12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
+12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;;
+12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;;
+12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;;
+12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;;
+12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;;
+12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;;
+12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;;
+12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;;
+12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
+12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;;
+12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
+12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;;
+12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
+12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;;
+12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;;
+12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;;
+12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
+12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;;
+12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;;
+12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
+12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;;
+12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;;
+12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;;
+12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;
+1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;;
+1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;;
+1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
+1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;;
+1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;;
+1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;;
+130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
+130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;;
+1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;;
+1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;;
+1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;;
+1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;;
+1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;;
+131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;;
+131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;;
+1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;;
+1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;;
+1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;;
+1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
+1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;;
+1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;;
+1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;;
+1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;;
+132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;;
+132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;;
+132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;;
+1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;;
+1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;;
+1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;;
+1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;;
+1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;;
+1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;;
+1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;;
+1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;;
+1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;;
+1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;;
+133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;;
+133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;;
+133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;;
+133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;;
+133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;;
+133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;;
+1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;;
+1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;;
+1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;;
+1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;;
+1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;;
+1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;;
+1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;;
+1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;;
+134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
+134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;;
+134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;;
+1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;;
+1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
+1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;;
+1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;;
+1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;;
+1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;;
+135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;;
+1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;;
+1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;;
+1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;;
+1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;;
+1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;;
+1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;;
+1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;;
+1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1369;ETHIOPIC DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+136A;ETHIOPIC DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+136B;ETHIOPIC DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+136C;ETHIOPIC DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+136D;ETHIOPIC DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+136E;ETHIOPIC DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+136F;ETHIOPIC DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1370;ETHIOPIC DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1371;ETHIOPIC DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;;
+1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;;
+1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;;
+137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;;
+137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
+13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;;
+13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;;
+13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;;
+13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;;
+13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;;
+13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;;
+13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;;
+13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;;
+13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;;
+13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;;
+13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;;
+13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;;
+13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;;
+13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;;
+13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;;
+13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;;
+13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;;
+13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;;
+13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;;
+13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;;
+13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;;
+13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;;
+13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;;
+13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;;
+13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;;
+13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;;
+13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;;
+13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;;
+13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;;
+13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;;
+13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;;
+13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;;
+13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;;
+13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;;
+13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;;
+13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;;
+13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;;
+13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;;
+13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;;
+13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;;
+13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;;
+13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;;
+13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;;
+13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;;
+13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;;
+13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;;
+13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;;
+13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;;
+13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;;
+13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;;
+13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;;
+13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;;
+13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;;
+13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;;
+13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;;
+13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;;
+13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;;
+13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;;
+13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;;
+13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;;
+13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;;
+13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;;
+13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;;
+13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;;
+13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;;
+13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;;
+13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;;
+13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;;
+13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;;
+13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;;
+13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;;
+13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;;
+13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;;
+13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;;
+13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;;
+13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;;
+13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;;
+13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;;
+13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;;
+13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;;
+13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;;
+13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;;
+13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;;
+13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;;
+13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;;
+1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;
+1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;
+1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;
+1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;
+1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;
+1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;
+1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;
+1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;
+1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;
+140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;
+140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;
+140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;
+140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;
+140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;
+140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;
+1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;
+1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;
+1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;
+1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;
+1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;
+1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;
+1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;
+1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;
+1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;
+1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;
+141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;
+141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;
+141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;
+141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;
+141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;
+1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;
+1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;
+1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;
+1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;
+1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;
+1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;
+1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;
+1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;
+1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;
+1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;
+142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;
+142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;
+142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;
+142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;
+142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;
+142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;
+1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;
+1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;
+1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;
+1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;
+1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;
+1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;
+1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;
+1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;
+1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;
+1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;
+143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;
+143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;
+143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;
+143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;
+143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;
+143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;
+1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;
+1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;
+1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;
+1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;
+1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;
+1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;
+1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;
+1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;
+144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;
+144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;
+144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;
+144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;
+144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;
+144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;
+1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;
+1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;
+1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;
+1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;
+1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;
+1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;
+1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;
+1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;
+1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;
+1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;
+145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;
+145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;
+145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;
+145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;
+145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;
+145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;
+1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;
+1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;
+1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;
+1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;
+1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;
+1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;
+1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;
+1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;
+1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;
+1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;
+146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;
+146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;
+146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;
+146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;
+146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;
+146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;
+1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;
+1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;
+1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;
+1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;
+1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;
+1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;
+1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;
+1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;
+1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;
+1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;
+147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;
+147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;
+147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;
+147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;
+147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;
+147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;
+1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;
+1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;
+1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;
+1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;
+1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;
+1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;
+1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;
+1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;
+1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;
+1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;
+148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;
+148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;
+148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;
+148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;
+148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;
+148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;
+1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;
+1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;
+1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;
+1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;
+1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;
+1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;
+1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;
+1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;
+1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;
+1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;
+149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;
+149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;
+149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;
+149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;
+149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;
+149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;
+14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;
+14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;
+14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;
+14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;
+14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;
+14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;
+14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;
+14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;
+14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;
+14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;
+14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;
+14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;
+14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;
+14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;
+14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;
+14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;
+14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;
+14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;
+14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;
+14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;
+14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;
+14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;
+14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;
+14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;
+14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;
+14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;
+14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;
+14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;
+14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;
+14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;
+14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;
+14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;
+14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;
+14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;
+14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;
+14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;
+14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;
+14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;
+14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;
+14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;
+14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;
+14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;
+14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;
+14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;
+14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;
+14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;
+14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;
+14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;
+14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;
+14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;
+14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;
+14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;
+14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;
+14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;
+14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;
+14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;
+14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;
+14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;
+14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;
+14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;
+14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;
+14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;
+14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;
+14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;
+14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;
+14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;
+14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;
+14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;
+14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;
+14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;
+14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;
+14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;
+14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;
+14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;
+14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;
+14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;
+14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;
+14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;
+14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;
+14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;
+14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;
+14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;
+14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;
+14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;
+14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;
+14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;
+14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;
+14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;
+14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;
+14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;
+14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;
+14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;
+14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;
+14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;
+14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;
+14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;
+1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;
+1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;
+1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;
+1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;
+1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;
+1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;
+1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;
+1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;
+1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;
+1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;
+150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;
+150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;
+150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;
+150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;
+150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;
+150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;
+1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;
+1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;
+1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;
+1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;
+1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;
+1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;
+1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;
+1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;
+1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;
+1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;
+151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;
+151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;
+151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;
+151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;
+151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;
+151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;
+1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;
+1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;
+1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;
+1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;
+1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;
+1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;
+1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;
+1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;
+1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;
+1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;
+152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;
+152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;
+152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;
+152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;
+152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;
+152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;
+1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;
+1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;
+1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;
+1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;
+1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;
+1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;
+1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;
+1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;
+1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;
+1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;
+153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;
+153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;
+153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;
+153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;
+153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;
+153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;
+1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;
+1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;
+1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;
+1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;
+1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;
+1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;
+1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;
+1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;
+1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;
+1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;
+154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;
+154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;
+154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;
+154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;
+154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;
+154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;
+1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;
+1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;
+1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;
+1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;
+1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;
+1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;
+1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;
+1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;
+1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;
+1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;
+155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;
+155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;
+155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;
+155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;
+155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;
+155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;
+1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;
+1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;
+1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;
+1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;
+1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;
+1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;
+1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;
+1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;
+1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;
+1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;
+156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;
+156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;
+156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;
+156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;
+156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;
+156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;
+1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;
+1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;
+1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;
+1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;
+1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;
+1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;
+1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;
+1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;
+1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;
+1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;
+157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;
+157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;
+157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;
+157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;
+157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;
+157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;
+1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;
+1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;
+1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;
+1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;
+1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;
+1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;
+1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;
+1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;
+1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;
+1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;
+158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;
+158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;
+158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;
+158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;
+158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;
+158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;
+1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;
+1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;
+1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;
+1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;
+1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;
+1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;
+1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;
+1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;
+1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;
+1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;
+159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;
+159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;
+159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;
+159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;
+159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;
+159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;
+15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;
+15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;
+15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;
+15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;
+15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;
+15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;
+15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;
+15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;
+15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;
+15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;
+15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;
+15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;
+15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;
+15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;
+15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;
+15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;
+15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;
+15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;
+15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;
+15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;
+15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;
+15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;
+15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;
+15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;
+15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;
+15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;
+15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;
+15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;
+15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;
+15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;
+15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;
+15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;
+15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;
+15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;
+15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;
+15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;
+15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;
+15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;
+15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;
+15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;
+15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;
+15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;
+15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;
+15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;
+15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;
+15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;
+15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;
+15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;
+15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;
+15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;
+15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;
+15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;
+15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;
+15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;
+15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;
+15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;
+15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;
+15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;
+15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;
+15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;
+15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;
+15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;
+15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;
+15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;
+15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;
+15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;
+15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;
+15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;
+15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;
+15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;
+15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;
+15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;
+15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;
+15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;
+15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;
+15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;
+15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;
+15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;
+15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;
+15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;
+15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;
+15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;
+15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;
+15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;
+15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;
+15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;
+15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;
+15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;
+15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;
+15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;
+15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;
+15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;
+15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;
+15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;
+15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;
+15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;
+1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;
+1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;
+1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;
+1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;
+1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;
+1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;
+1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;
+1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;
+1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;
+1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;
+160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;
+160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;
+160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;
+160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;
+160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;
+160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;
+1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;
+1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;
+1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;
+1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;
+1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;
+1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;
+1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;
+1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;
+1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;
+1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;
+161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;
+161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;
+161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;
+161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;
+161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;
+161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;
+1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;
+1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;
+1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;
+1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;
+1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;
+1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;
+1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;
+1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;
+1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;
+1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;
+162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;
+162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;
+162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;
+162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;
+162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;
+162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;
+1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;
+1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;
+1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;
+1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;
+1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;
+1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;
+1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;
+1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;
+1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;
+1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;
+163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;
+163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;
+163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;
+163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;
+163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;
+163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;
+1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;
+1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;
+1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;
+1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;
+1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;
+1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;
+1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;
+1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;
+1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;
+1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;
+164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;
+164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;
+164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;
+164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;
+164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;
+164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;
+1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;
+1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;
+1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;
+1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;
+1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;
+1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;
+1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;
+1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;
+1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;
+1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;
+165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;
+165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;
+165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;
+165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;
+165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;
+165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;
+1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;
+1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;
+1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;
+1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;
+1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;
+1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;
+1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;
+1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;
+1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;
+1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;
+166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
+166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
+166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
+166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
+166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
+166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
+1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
+1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;
+1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;
+1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;
+1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;
+1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;
+1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;
+1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;
+1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;
+1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;
+1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;
+1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;
+1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;
+1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;
+1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;
+1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;
+1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;
+168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;
+168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;
+168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;
+168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;
+168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;
+168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;
+1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;
+1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;
+1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;
+1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;
+1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;
+1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;
+1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;
+1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;
+1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;
+1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;
+169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;
+169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;N;;;;;
+169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;;
+16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;
+16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;
+16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;
+16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;
+16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;
+16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;
+16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;
+16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;
+16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;
+16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;
+16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;
+16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;
+16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;
+16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;
+16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;
+16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;
+16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;
+16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;
+16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;
+16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;
+16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;
+16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;
+16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;
+16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;
+16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;
+16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;
+16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;
+16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;
+16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;
+16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;
+16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;
+16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;
+16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;
+16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;
+16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;
+16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;
+16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;
+16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;
+16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;
+16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;
+16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;
+16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;
+16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;
+16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;
+16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;
+16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;
+16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;
+16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;
+16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;
+16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;
+16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;
+16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;
+16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;
+16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;
+16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;
+16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;
+16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;
+16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;
+16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;
+16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;
+16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;
+16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;
+16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;
+16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;
+16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;
+16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;
+16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;
+16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;
+16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;
+16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;
+16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;
+16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;;
+16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;;
+16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;;
+1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;;
+1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;;
+1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;;
+1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;;
+1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;;
+1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;;
+1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;;
+1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;;
+1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;;
+1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;;
+170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;;
+170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;;
+170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;;
+170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;;
+170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;;
+1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;;
+1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;;
+1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;;
+1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;;
+1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;;
+1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;;
+1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;;
+1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;;
+1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;;
+1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;;
+1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;;
+1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;;
+172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;;
+172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;;
+172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;;
+172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;;
+172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;;
+172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;;
+1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;;
+1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;;
+1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;;
+1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;;
+1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;;
+1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;;
+1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;;
+1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;;
+1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;;
+1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;;
+1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;;
+1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;;
+1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;;
+174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;;
+174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;;
+174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;;
+174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;;
+174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;;
+174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;;
+1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;;
+1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;;
+1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;;
+1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;;
+1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;;
+1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;;
+1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;;
+1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;;
+1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;;
+1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;;
+1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;;
+1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;;
+176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;;
+176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;;
+176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;;
+176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;;
+176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;;
+1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;;
+1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;
+1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;
+1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;
+1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;
+1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;
+1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;
+1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;
+1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;
+1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;
+1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;
+178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;
+178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;
+178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;
+178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;
+178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;
+178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;
+1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;
+1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;
+1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;
+1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;
+1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;
+1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;
+1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;
+1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;
+1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;
+1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;
+179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;
+179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;
+179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;
+179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;
+179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;
+179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;
+17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;
+17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;
+17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;
+17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;;;;
+17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;;;;
+17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;
+17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;
+17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;
+17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;
+17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;
+17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;
+17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;
+17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;
+17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;
+17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;
+17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;
+17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;
+17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;
+17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;
+17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;
+17B4;KHMER VOWEL INHERENT AQ;Mc;0;L;;;;;N;;;;;
+17B5;KHMER VOWEL INHERENT AA;Mc;0;L;;;;;N;;;;;
+17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;
+17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;
+17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;
+17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;
+17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;
+17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;
+17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;
+17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;
+17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;
+17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;
+17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;
+17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;
+17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;
+17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;
+17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;
+17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;
+17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;
+17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;;;;
+17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;
+17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;
+17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;
+17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;;
+17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;;
+17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;
+17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;
+17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;
+17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;;
+17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;
+1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;
+1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;
+1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;
+1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;
+1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;
+1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;
+1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;
+1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;
+180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;
+180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;;
+180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;;
+180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;;
+180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;;
+1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;;
+1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;;
+1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;;
+1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;;
+1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;;
+1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;;
+1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;;
+1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;;
+1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;;
+1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;;
+182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;;
+182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;;
+182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;;
+182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;;
+182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;;
+182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;;
+1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;;
+1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;;
+1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;;
+1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;;
+1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;;
+1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;;
+1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;;
+1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;;
+183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;;
+183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;;
+183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;;
+1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;;
+1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;;
+1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;;
+1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;;
+1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;;
+1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;;
+1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;;
+1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;;
+1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;;
+1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;;
+184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;;
+184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;;
+184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;;
+184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;;
+184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;;
+184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;;
+1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;;
+1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;;
+1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;;
+1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;;
+1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;;
+1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;;
+1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;;
+1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;;
+1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;;
+1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;;
+185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;;
+185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;;
+185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;;
+185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;;
+185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;;
+185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;;
+1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;;
+1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;;
+1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;;
+1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;;
+1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;;
+1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;;
+1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;;
+1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;;
+1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;;
+1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;;
+186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;;
+186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;;
+186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;;
+186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;;
+186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;;
+186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;;
+1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;;
+1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;;
+1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;;
+1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;;
+1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;;
+1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
+1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
+1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
+1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
+1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
+1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
+1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;
+1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;
+1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;;
+1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;;
+1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;
+1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;
+1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;
+188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;;
+188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;;
+188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;;
+188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;;
+1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;;
+1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;;
+1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;;
+1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;;
+1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;;
+189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;;
+189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;;
+189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;;
+18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;;
+18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;;
+18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;;
+18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;;
+18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;;
+18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;;
+18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;;
+1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
+1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
+1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
+1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
+1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
+1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
+1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
+1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
+1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
+1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
+1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
+1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
+1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
+1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
+1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
+1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
+1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
+1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
+1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
+1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
+1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
+1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
+1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
+1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
+1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
+1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
+1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
+1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
+1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C
+1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
+1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
+1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
+1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
+1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
+1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
+1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
+1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
+1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
+1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
+1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
+1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
+1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
+1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
+1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
+1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
+1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
+1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
+1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
+1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
+1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
+1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
+1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
+1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
+1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
+1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
+1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
+1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
+1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
+1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
+1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
+1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
+1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
+1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
+1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
+1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
+1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
+1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
+1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
+1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
+1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
+1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
+1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
+1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
+1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
+1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
+1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
+1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
+1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
+1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
+1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
+1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
+1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
+1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
+1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
+1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
+1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
+1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
+1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
+1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
+1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
+1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
+1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
+1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
+1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
+1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
+1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
+1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
+1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
+1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
+1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
+1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
+1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
+1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
+1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
+1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
+1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
+1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
+1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
+1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
+1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
+1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
+1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
+1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
+1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
+1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
+1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
+1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
+1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
+1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
+1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
+1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
+1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
+1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
+1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
+1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
+1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
+1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
+1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
+1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
+1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
+1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
+1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
+1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
+1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
+1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
+1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
+1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
+1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
+1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
+1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
+1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
+1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
+1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
+1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
+1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
+1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
+1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
+1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
+1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
+1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
+1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
+1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
+1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
+1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
+1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
+1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
+1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
+1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
+1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
+1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
+1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
+1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
+1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
+1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
+1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
+1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
+1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC
+1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
+1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
+1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
+1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
+1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
+1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
+1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
+1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
+1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6
+1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
+1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
+1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
+1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
+1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
+1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
+1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
+1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
+1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
+1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
+1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
+1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
+1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
+1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
+1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6
+1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
+1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
+1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
+1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
+1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
+1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
+1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
+1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
+1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
+1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
+1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
+1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
+1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
+1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
+1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
+1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
+1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8
+1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
+1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
+1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
+1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
+1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
+1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
+1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
+1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
+1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
+1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
+1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
+1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
+1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
+1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
+1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
+1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
+1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
+1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
+1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
+1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
+1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
+1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
+1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
+1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
+1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
+1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
+1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
+1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
+1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
+1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
+1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
+1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
+1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
+1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
+1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
+1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
+1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
+1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
+1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
+1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
+1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
+1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
+1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
+1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
+1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
+1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
+1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
+1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
+1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
+1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
+1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
+1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
+1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
+1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
+1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
+1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
+1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
+1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
+1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
+1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
+1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
+1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
+1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
+1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
+1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
+1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
+1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
+1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
+1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
+1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
+1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
+1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
+1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
+1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
+1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
+1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
+1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
+1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
+1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
+1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
+1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
+1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
+1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
+1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
+1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
+1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
+1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
+1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
+1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
+1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
+1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
+1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
+1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
+1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
+1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
+1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
+1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
+1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
+1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
+1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
+1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
+1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
+1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
+1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
+1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
+1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
+1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
+1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
+1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
+1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
+1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
+1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
+1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
+1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
+1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
+1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
+1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
+1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
+1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
+1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
+1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
+1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
+1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
+1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
+1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
+1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
+1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
+1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
+1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
+1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
+1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
+1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
+1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
+1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
+1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
+1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
+1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
+1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
+1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
+1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
+1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
+1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
+1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
+1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
+1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
+1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
+1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
+1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
+1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
+1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
+1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
+1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
+1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
+1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
+1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87;
+1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
+1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
+1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
+1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
+1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
+1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
+1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
+1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
+1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97;
+1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
+1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
+1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
+1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
+1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
+1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
+1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
+1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
+1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7;
+1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
+1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
+1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
+1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
+1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
+1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
+1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
+1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
+1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
+1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
+1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399
+1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
+1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
+1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
+1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
+1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
+1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
+1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
+1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
+1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
+1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3;
+1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
+1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
+1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
+1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
+1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
+1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
+1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
+1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
+1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
+1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
+1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
+1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
+1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
+1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
+1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
+1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
+1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
+1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
+1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
+1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
+1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
+1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
+1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
+1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
+1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
+1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
+1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
+1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
+1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
+1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
+1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
+1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
+1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
+1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
+1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
+1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3;
+1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
+1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
+2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
+2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
+2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200B;ZERO WIDTH SPACE;Zs;0;BN;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
+200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
+2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
+2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
+2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
+2013;EN DASH;Pd;0;ON;;;;;N;;;;;
+2014;EM DASH;Pd;0;ON;;;;;N;;;;;
+2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
+2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
+2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
+2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
+2020;DAGGER;Po;0;ON;;;;;N;;;;;
+2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
+2022;BULLET;Po;0;ON;;;;;N;;;;;
+2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
+2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
+2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
+2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;;
+202F;NARROW NO-BREAK SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+2032;PRIME;Po;0;ET;;;;;N;;;;;
+2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
+2038;CARET;Po;0;ON;;;;;N;;;;;
+2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
+203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
+203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
+203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
+2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
+2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
+2042;ASTERISM;Po;0;ON;;;;;N;;;;;
+2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
+2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+2047;DOUBLE QUESTION MARK;Po;0;ON;<compat> 003F 003F;;;;N;;;;;
+2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
+2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;
+204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;
+204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;
+204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;;
+204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;;
+2050;CLOSE UP;Po;0;ON;;;;;N;;;;;
+2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;;
+2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;;
+2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;;
+205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2060;WORD JOINER;Cf;0;BN;;;;;N;;;;;
+2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;;
+2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;;
+2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2071;SUPERSCRIPT LATIN SMALL LETTER I;Ll;0;L;<super> 0069;;;;N;;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;0;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
+20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
+20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
+20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
+20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
+20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
+20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
+20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
+20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
+20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
+20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
+20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;
+20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;
+20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
+20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;;
+20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;
+20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;
+20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;;
+20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;;
+20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;;
+20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;;
+2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
+2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
+2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
+2108;SCRUPLE;So;0;ON;;;;;N;;;;;
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
+210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
+2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
+2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
+2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;;
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
+211F;RESPONSE;So;0;ON;;;;;N;;;;;
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
+2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
+2123;VERSICLE;So;0;ON;;;;;N;;;;;
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
+2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
+2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
+212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;
+212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;;
+2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
+213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
+213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 2211;;;;Y;;;;;
+2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;;
+2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
+2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
+2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;;
+2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+214A;PROPERTY LINE;So;0;ON;;;;;N;;;;;
+214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;;
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
+2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
+2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
+2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
+2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Nl;0;L;;;;;N;;;;;
+2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
+2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
+2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
+2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
+2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
+2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
+2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
+2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
+2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
+219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;;
+219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
+219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
+219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
+219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
+21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
+21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
+21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
+21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
+21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
+21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
+21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
+21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
+21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
+21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
+21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
+21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
+21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
+21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
+21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;;
+21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
+21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
+21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
+21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
+21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
+21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
+21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
+21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
+21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
+21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
+21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
+21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
+21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
+21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
+21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
+21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
+21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
+21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
+21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
+21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
+21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
+21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
+21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
+21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
+21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
+21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
+21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
+21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
+21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
+21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
+21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
+21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
+21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
+21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
+21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
+21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
+21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
+21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
+21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
+21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
+21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
+21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
+21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
+21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
+21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
+21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
+21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
+21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
+21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
+21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
+21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
+21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
+21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
+21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;
+21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;;
+21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;;
+21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;
+21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
+2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
+2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
+2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
+2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
+2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
+2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
+2207;NABLA;Sm;0;ON;;;;;N;;;;;
+2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
+220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
+220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
+220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
+2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
+2212;MINUS SIGN;Sm;0;ET;;;;;N;;;;;
+2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
+2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
+2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
+221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
+221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
+221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
+221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
+221E;INFINITY;Sm;0;ON;;;;;N;;;;;
+221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
+2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
+2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
+2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
+2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
+2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
+2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
+222A;UNION;Sm;0;ON;;;;;N;;;;;
+222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
+2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
+2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
+2236;RATIO;Sm;0;ON;;;;;N;;;;;
+2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
+2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
+2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
+223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
+223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
+223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;;
+223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
+223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
+2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;
+2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
+2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
+2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
+2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
+224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
+224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
+2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
+2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
+2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
+2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
+2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
+225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
+225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
+225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
+225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
+225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
+225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
+2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
+2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
+2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
+2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
+2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
+2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
+2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
+2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
+226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
+226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
+226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
+226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
+2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
+2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
+2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
+2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
+2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
+2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
+2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
+2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
+2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
+2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
+227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
+227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
+2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
+2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
+2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
+2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
+2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
+2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
+2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
+228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
+228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
+228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
+228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
+228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
+228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
+2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
+2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
+2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
+2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
+229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
+229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
+229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
+22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
+22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
+22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
+22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
+22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
+22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
+22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
+22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
+22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
+22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
+22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
+22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
+22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
+22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
+22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
+22BB;XOR;Sm;0;ON;;;;;N;;;;;
+22BC;NAND;Sm;0;ON;;;;;N;;;;;
+22BD;NOR;Sm;0;ON;;;;;N;;;;;
+22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
+22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
+22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
+22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
+22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
+22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
+22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
+22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
+22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
+22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
+22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
+22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
+22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
+22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
+22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
+22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
+22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
+22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
+22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
+22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
+22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
+22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
+22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
+22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
+22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
+22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
+22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
+22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;;
+22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;;
+2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
+2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;
+2302;HOUSE;So;0;ON;;;;;N;;;;;
+2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
+2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
+2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
+2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
+2307;WAVY LINE;So;0;ON;;;;;N;;;;;
+2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
+2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
+230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
+230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
+230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
+230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
+2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
+2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
+2312;ARC;So;0;ON;;;;;N;;;;;
+2313;SEGMENT;So;0;ON;;;;;N;;;;;
+2314;SECTOR;So;0;ON;;;;;N;;;;;
+2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
+2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
+2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
+2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
+2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
+231A;WATCH;So;0;ON;;;;;N;;;;;
+231B;HOURGLASS;So;0;ON;;;;;N;;;;;
+231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
+231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
+231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
+231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
+2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2322;FROWN;So;0;ON;;;;;N;;;;;
+2323;SMILE;So;0;ON;;;;;N;;;;;
+2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
+2325;OPTION KEY;So;0;ON;;;;;N;;;;;
+2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
+2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
+2328;KEYBOARD;So;0;ON;;;;;N;;;;;
+2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
+232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
+232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
+232C;BENZENE RING;So;0;ON;;;;;N;;;;;
+232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
+232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
+232F;SYMMETRY;So;0;ON;;;;;N;;;;;
+2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
+2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
+2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
+2333;SLOPE;So;0;ON;;;;;N;;;;;
+2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
+2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
+2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
+2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
+2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
+2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
+233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
+233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
+233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
+233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
+233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
+233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
+2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
+2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
+2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
+2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
+2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
+2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
+2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
+2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
+2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
+2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
+234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;;
+234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
+234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
+234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
+234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;;
+234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
+2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
+2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;;
+2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
+2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
+2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
+2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;;
+2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
+2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
+2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
+2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
+235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
+235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
+235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
+235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
+235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
+235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
+2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
+2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;;
+2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
+2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
+2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
+2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
+2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
+2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
+2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
+2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
+236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
+236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
+236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
+236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
+236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
+236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
+2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
+2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
+2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
+2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
+2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
+2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
+2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
+2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
+2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
+2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
+237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
+237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;
+237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;;
+237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;
+237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;
+237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
+2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;
+2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;
+2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;
+2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;
+2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;
+2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2388;HELM SYMBOL;So;0;ON;;;;;N;;;;;
+2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;;
+238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;;
+238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;;
+238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;
+238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;
+238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;
+238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;
+2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;
+2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;
+2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;
+2398;NEXT PAGE;So;0;ON;;;;;N;;;;;
+2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
+239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
+23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
+23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
+23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
+23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
+23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
+23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;;
+23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;;
+23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
+23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
+23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;;
+23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;;
+23B4;TOP SQUARE BRACKET;Ps;0;ON;;;;;N;;;;;
+23B5;BOTTOM SQUARE BRACKET;Pe;0;ON;;;;;N;;;;;
+23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;Po;0;ON;;;;;N;;;;;
+23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;;
+23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
+23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
+23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;;
+23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;;
+23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;;
+23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;;
+23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;;
+23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;;
+23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;;
+23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
+23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
+23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;;
+23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;;
+23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;;
+23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;;
+23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;;
+23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;;
+2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
+2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
+2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
+2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
+2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
+2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
+2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
+2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
+2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
+2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
+240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
+240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
+240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
+240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
+240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
+240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
+2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
+2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
+2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
+2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
+2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
+2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
+2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
+2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
+2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
+2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
+241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
+241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
+241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
+241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
+241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
+241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
+2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
+2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
+2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
+2423;OPEN BOX;So;0;ON;;;;;N;;;;;
+2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
+2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
+2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
+2440;OCR HOOK;So;0;ON;;;;;N;;;;;
+2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
+2442;OCR FORK;So;0;ON;;;;;N;;;;;
+2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
+2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
+2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
+2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
+2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
+2448;OCR DASH;So;0;ON;;;;;N;;;;;
+2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
+244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
+2460;CIRCLED DIGIT ONE;No;0;EN;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;EN;<circle> 0030;;0;0;N;;;;;
+24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;;
+24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;;
+24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;;
+24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;;
+24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;;
+24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;;
+24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;;
+24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;;
+24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;;
+24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;;
+24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;;
+24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;;
+24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;;
+24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;;
+24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;;
+24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;;
+24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;;
+24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;;
+24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;;
+24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;;
+2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
+2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
+2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
+2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
+2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
+2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
+2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
+2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
+2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
+2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
+250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
+250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
+250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
+250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
+250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
+250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
+2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
+2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
+2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
+2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
+2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
+2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
+2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
+2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
+2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
+2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
+251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
+251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
+251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
+251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
+251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
+251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
+2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
+2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
+2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
+2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
+2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
+2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
+2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
+2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
+2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
+252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
+252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
+252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
+252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
+252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
+252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
+2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
+2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
+2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
+2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
+2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
+2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
+2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
+2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
+2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
+2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
+253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
+253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
+253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
+253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
+253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
+253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
+2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
+2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
+2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
+2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
+2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
+2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
+2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
+2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
+2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
+254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
+254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
+254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
+254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
+254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
+254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
+2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
+2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
+2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
+2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
+2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
+2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
+2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
+2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
+2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
+2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
+255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
+255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
+255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
+255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
+255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
+255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
+2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
+2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
+2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
+2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
+2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
+2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
+2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
+2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
+2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
+2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
+256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
+256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
+256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
+256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
+256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
+256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
+2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
+2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
+2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
+2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
+2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
+2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
+2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
+2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
+2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
+2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
+257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
+257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
+257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
+257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
+257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
+257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
+2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
+2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
+2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
+258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
+258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
+2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
+2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+2593;DARK SHADE;So;0;ON;;;;;N;;;;;
+2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;;
+2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;;
+2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;;
+2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;;
+259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
+25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
+25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
+25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
+25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
+25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
+25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
+25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
+25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
+25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
+25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
+25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
+25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
+25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
+25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
+25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
+25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
+25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
+25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
+25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
+25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
+25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
+25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
+25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
+25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
+25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
+25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
+25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
+25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+25C9;FISHEYE;So;0;ON;;;;;N;;;;;
+25CA;LOZENGE;So;0;ON;;;;;N;;;;;
+25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
+25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
+25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
+25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
+25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
+25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
+25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
+25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
+25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
+25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
+25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
+25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
+25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+2601;CLOUD;So;0;ON;;;;;N;;;;;
+2602;UMBRELLA;So;0;ON;;;;;N;;;;;
+2603;SNOWMAN;So;0;ON;;;;;N;;;;;
+2604;COMET;So;0;ON;;;;;N;;;;;
+2605;BLACK STAR;So;0;ON;;;;;N;;;;;
+2606;WHITE STAR;So;0;ON;;;;;N;;;;;
+2607;LIGHTNING;So;0;ON;;;;;N;;;;;
+2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
+2609;SUN;So;0;ON;;;;;N;;;;;
+260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
+260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
+260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
+260D;OPPOSITION;So;0;ON;;;;;N;;;;;
+260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
+260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
+2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
+2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
+2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
+2613;SALTIRE;So;0;ON;;;;;N;;;;;
+2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;;
+2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;;
+2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
+261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
+2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
+2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
+2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
+2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
+2624;CADUCEUS;So;0;ON;;;;;N;;;;;
+2625;ANKH;So;0;ON;;;;;N;;;;;
+2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
+2627;CHI RHO;So;0;ON;;;;;N;;;;;
+2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
+2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
+262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
+262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
+262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
+262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
+262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
+262F;YIN YANG;So;0;ON;;;;;N;;;;;
+2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
+2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
+2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
+2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
+2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
+2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
+2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
+2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
+2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
+263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
+263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
+263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263F;MERCURY;So;0;ON;;;;;N;;;;;
+2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
+2641;EARTH;So;0;ON;;;;;N;;;;;
+2642;MALE SIGN;So;0;ON;;;;;N;;;;;
+2643;JUPITER;So;0;ON;;;;;N;;;;;
+2644;SATURN;So;0;ON;;;;;N;;;;;
+2645;URANUS;So;0;ON;;;;;N;;;;;
+2646;NEPTUNE;So;0;ON;;;;;N;;;;;
+2647;PLUTO;So;0;ON;;;;;N;;;;;
+2648;ARIES;So;0;ON;;;;;N;;;;;
+2649;TAURUS;So;0;ON;;;;;N;;;;;
+264A;GEMINI;So;0;ON;;;;;N;;;;;
+264B;CANCER;So;0;ON;;;;;N;;;;;
+264C;LEO;So;0;ON;;;;;N;;;;;
+264D;VIRGO;So;0;ON;;;;;N;;;;;
+264E;LIBRA;So;0;ON;;;;;N;;;;;
+264F;SCORPIUS;So;0;ON;;;;;N;;;;;
+2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
+2651;CAPRICORN;So;0;ON;;;;;N;;;;;
+2652;AQUARIUS;So;0;ON;;;;;N;;;;;
+2653;PISCES;So;0;ON;;;;;N;;;;;
+2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
+2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
+2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
+2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
+2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
+265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
+265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
+265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
+265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
+265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
+2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
+2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
+2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
+2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
+2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
+2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
+2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
+2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
+266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
+266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
+266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
+266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
+266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
+266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;
+2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
+2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;pete;;;
+2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;hdpe;;;
+2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;pvc;;;
+2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;ldpe;;;
+2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;pp;;;
+2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;ps;;;
+2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;other;;;
+267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;;
+267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
+267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
+267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
+2680;DIE FACE-1;So;0;ON;;;;;N;;;;;
+2681;DIE FACE-2;So;0;ON;;;;;N;;;;;
+2682;DIE FACE-3;So;0;ON;;;;;N;;;;;
+2683;DIE FACE-4;So;0;ON;;;;;N;;;;;
+2684;DIE FACE-5;So;0;ON;;;;;N;;;;;
+2685;DIE FACE-6;So;0;ON;;;;;N;;;;;
+2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;;
+2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;;
+2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;;
+2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;;
+2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
+2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
+2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
+2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
+2708;AIRPLANE;So;0;ON;;;;;N;;;;;
+2709;ENVELOPE;So;0;ON;;;;;N;;;;;
+270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
+270D;WRITING HAND;So;0;ON;;;;;N;;;;;
+270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+270F;PENCIL;So;0;ON;;;;;N;;;;;
+2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+2711;WHITE NIB;So;0;ON;;;;;N;;;;;
+2712;BLACK NIB;So;0;ON;;;;;N;;;;;
+2713;CHECK MARK;So;0;ON;;;;;N;;;;;
+2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
+2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2717;BALLOT X;So;0;ON;;;;;N;;;;;
+2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
+2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
+271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
+271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
+271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
+271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
+271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
+271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
+2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
+2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
+2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
+272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
+272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
+272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
+2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
+2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
+2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
+273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
+273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
+2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
+2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2747;SPARKLE;So;0;ON;;;;;N;;;;;
+2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
+2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
+2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
+2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
+2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
+2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
+2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
+2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
+2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
+2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
+2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
+277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
+277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
+277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
+277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
+277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
+277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
+2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
+2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
+2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
+2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
+2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
+2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
+2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
+2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
+278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
+278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
+278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
+278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
+278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
+278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
+2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
+2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
+2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
+2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
+2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
+279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
+279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
+279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
+279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
+279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
+279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
+27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
+27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
+27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
+27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
+27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
+27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
+27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
+27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
+27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
+27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
+27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
+27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
+27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
+27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
+27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
+27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
+27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
+27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
+27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;;
+27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;;
+27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;;
+27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
+27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
+27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
+27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
+27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;;
+27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;;
+27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;;
+27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;;
+27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;;
+27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;;
+27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;;
+27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;
+2800;BRAILLE PATTERN BLANK;So;0;ON;;;;;N;;;;;
+2801;BRAILLE PATTERN DOTS-1;So;0;ON;;;;;N;;;;;
+2802;BRAILLE PATTERN DOTS-2;So;0;ON;;;;;N;;;;;
+2803;BRAILLE PATTERN DOTS-12;So;0;ON;;;;;N;;;;;
+2804;BRAILLE PATTERN DOTS-3;So;0;ON;;;;;N;;;;;
+2805;BRAILLE PATTERN DOTS-13;So;0;ON;;;;;N;;;;;
+2806;BRAILLE PATTERN DOTS-23;So;0;ON;;;;;N;;;;;
+2807;BRAILLE PATTERN DOTS-123;So;0;ON;;;;;N;;;;;
+2808;BRAILLE PATTERN DOTS-4;So;0;ON;;;;;N;;;;;
+2809;BRAILLE PATTERN DOTS-14;So;0;ON;;;;;N;;;;;
+280A;BRAILLE PATTERN DOTS-24;So;0;ON;;;;;N;;;;;
+280B;BRAILLE PATTERN DOTS-124;So;0;ON;;;;;N;;;;;
+280C;BRAILLE PATTERN DOTS-34;So;0;ON;;;;;N;;;;;
+280D;BRAILLE PATTERN DOTS-134;So;0;ON;;;;;N;;;;;
+280E;BRAILLE PATTERN DOTS-234;So;0;ON;;;;;N;;;;;
+280F;BRAILLE PATTERN DOTS-1234;So;0;ON;;;;;N;;;;;
+2810;BRAILLE PATTERN DOTS-5;So;0;ON;;;;;N;;;;;
+2811;BRAILLE PATTERN DOTS-15;So;0;ON;;;;;N;;;;;
+2812;BRAILLE PATTERN DOTS-25;So;0;ON;;;;;N;;;;;
+2813;BRAILLE PATTERN DOTS-125;So;0;ON;;;;;N;;;;;
+2814;BRAILLE PATTERN DOTS-35;So;0;ON;;;;;N;;;;;
+2815;BRAILLE PATTERN DOTS-135;So;0;ON;;;;;N;;;;;
+2816;BRAILLE PATTERN DOTS-235;So;0;ON;;;;;N;;;;;
+2817;BRAILLE PATTERN DOTS-1235;So;0;ON;;;;;N;;;;;
+2818;BRAILLE PATTERN DOTS-45;So;0;ON;;;;;N;;;;;
+2819;BRAILLE PATTERN DOTS-145;So;0;ON;;;;;N;;;;;
+281A;BRAILLE PATTERN DOTS-245;So;0;ON;;;;;N;;;;;
+281B;BRAILLE PATTERN DOTS-1245;So;0;ON;;;;;N;;;;;
+281C;BRAILLE PATTERN DOTS-345;So;0;ON;;;;;N;;;;;
+281D;BRAILLE PATTERN DOTS-1345;So;0;ON;;;;;N;;;;;
+281E;BRAILLE PATTERN DOTS-2345;So;0;ON;;;;;N;;;;;
+281F;BRAILLE PATTERN DOTS-12345;So;0;ON;;;;;N;;;;;
+2820;BRAILLE PATTERN DOTS-6;So;0;ON;;;;;N;;;;;
+2821;BRAILLE PATTERN DOTS-16;So;0;ON;;;;;N;;;;;
+2822;BRAILLE PATTERN DOTS-26;So;0;ON;;;;;N;;;;;
+2823;BRAILLE PATTERN DOTS-126;So;0;ON;;;;;N;;;;;
+2824;BRAILLE PATTERN DOTS-36;So;0;ON;;;;;N;;;;;
+2825;BRAILLE PATTERN DOTS-136;So;0;ON;;;;;N;;;;;
+2826;BRAILLE PATTERN DOTS-236;So;0;ON;;;;;N;;;;;
+2827;BRAILLE PATTERN DOTS-1236;So;0;ON;;;;;N;;;;;
+2828;BRAILLE PATTERN DOTS-46;So;0;ON;;;;;N;;;;;
+2829;BRAILLE PATTERN DOTS-146;So;0;ON;;;;;N;;;;;
+282A;BRAILLE PATTERN DOTS-246;So;0;ON;;;;;N;;;;;
+282B;BRAILLE PATTERN DOTS-1246;So;0;ON;;;;;N;;;;;
+282C;BRAILLE PATTERN DOTS-346;So;0;ON;;;;;N;;;;;
+282D;BRAILLE PATTERN DOTS-1346;So;0;ON;;;;;N;;;;;
+282E;BRAILLE PATTERN DOTS-2346;So;0;ON;;;;;N;;;;;
+282F;BRAILLE PATTERN DOTS-12346;So;0;ON;;;;;N;;;;;
+2830;BRAILLE PATTERN DOTS-56;So;0;ON;;;;;N;;;;;
+2831;BRAILLE PATTERN DOTS-156;So;0;ON;;;;;N;;;;;
+2832;BRAILLE PATTERN DOTS-256;So;0;ON;;;;;N;;;;;
+2833;BRAILLE PATTERN DOTS-1256;So;0;ON;;;;;N;;;;;
+2834;BRAILLE PATTERN DOTS-356;So;0;ON;;;;;N;;;;;
+2835;BRAILLE PATTERN DOTS-1356;So;0;ON;;;;;N;;;;;
+2836;BRAILLE PATTERN DOTS-2356;So;0;ON;;;;;N;;;;;
+2837;BRAILLE PATTERN DOTS-12356;So;0;ON;;;;;N;;;;;
+2838;BRAILLE PATTERN DOTS-456;So;0;ON;;;;;N;;;;;
+2839;BRAILLE PATTERN DOTS-1456;So;0;ON;;;;;N;;;;;
+283A;BRAILLE PATTERN DOTS-2456;So;0;ON;;;;;N;;;;;
+283B;BRAILLE PATTERN DOTS-12456;So;0;ON;;;;;N;;;;;
+283C;BRAILLE PATTERN DOTS-3456;So;0;ON;;;;;N;;;;;
+283D;BRAILLE PATTERN DOTS-13456;So;0;ON;;;;;N;;;;;
+283E;BRAILLE PATTERN DOTS-23456;So;0;ON;;;;;N;;;;;
+283F;BRAILLE PATTERN DOTS-123456;So;0;ON;;;;;N;;;;;
+2840;BRAILLE PATTERN DOTS-7;So;0;ON;;;;;N;;;;;
+2841;BRAILLE PATTERN DOTS-17;So;0;ON;;;;;N;;;;;
+2842;BRAILLE PATTERN DOTS-27;So;0;ON;;;;;N;;;;;
+2843;BRAILLE PATTERN DOTS-127;So;0;ON;;;;;N;;;;;
+2844;BRAILLE PATTERN DOTS-37;So;0;ON;;;;;N;;;;;
+2845;BRAILLE PATTERN DOTS-137;So;0;ON;;;;;N;;;;;
+2846;BRAILLE PATTERN DOTS-237;So;0;ON;;;;;N;;;;;
+2847;BRAILLE PATTERN DOTS-1237;So;0;ON;;;;;N;;;;;
+2848;BRAILLE PATTERN DOTS-47;So;0;ON;;;;;N;;;;;
+2849;BRAILLE PATTERN DOTS-147;So;0;ON;;;;;N;;;;;
+284A;BRAILLE PATTERN DOTS-247;So;0;ON;;;;;N;;;;;
+284B;BRAILLE PATTERN DOTS-1247;So;0;ON;;;;;N;;;;;
+284C;BRAILLE PATTERN DOTS-347;So;0;ON;;;;;N;;;;;
+284D;BRAILLE PATTERN DOTS-1347;So;0;ON;;;;;N;;;;;
+284E;BRAILLE PATTERN DOTS-2347;So;0;ON;;;;;N;;;;;
+284F;BRAILLE PATTERN DOTS-12347;So;0;ON;;;;;N;;;;;
+2850;BRAILLE PATTERN DOTS-57;So;0;ON;;;;;N;;;;;
+2851;BRAILLE PATTERN DOTS-157;So;0;ON;;;;;N;;;;;
+2852;BRAILLE PATTERN DOTS-257;So;0;ON;;;;;N;;;;;
+2853;BRAILLE PATTERN DOTS-1257;So;0;ON;;;;;N;;;;;
+2854;BRAILLE PATTERN DOTS-357;So;0;ON;;;;;N;;;;;
+2855;BRAILLE PATTERN DOTS-1357;So;0;ON;;;;;N;;;;;
+2856;BRAILLE PATTERN DOTS-2357;So;0;ON;;;;;N;;;;;
+2857;BRAILLE PATTERN DOTS-12357;So;0;ON;;;;;N;;;;;
+2858;BRAILLE PATTERN DOTS-457;So;0;ON;;;;;N;;;;;
+2859;BRAILLE PATTERN DOTS-1457;So;0;ON;;;;;N;;;;;
+285A;BRAILLE PATTERN DOTS-2457;So;0;ON;;;;;N;;;;;
+285B;BRAILLE PATTERN DOTS-12457;So;0;ON;;;;;N;;;;;
+285C;BRAILLE PATTERN DOTS-3457;So;0;ON;;;;;N;;;;;
+285D;BRAILLE PATTERN DOTS-13457;So;0;ON;;;;;N;;;;;
+285E;BRAILLE PATTERN DOTS-23457;So;0;ON;;;;;N;;;;;
+285F;BRAILLE PATTERN DOTS-123457;So;0;ON;;;;;N;;;;;
+2860;BRAILLE PATTERN DOTS-67;So;0;ON;;;;;N;;;;;
+2861;BRAILLE PATTERN DOTS-167;So;0;ON;;;;;N;;;;;
+2862;BRAILLE PATTERN DOTS-267;So;0;ON;;;;;N;;;;;
+2863;BRAILLE PATTERN DOTS-1267;So;0;ON;;;;;N;;;;;
+2864;BRAILLE PATTERN DOTS-367;So;0;ON;;;;;N;;;;;
+2865;BRAILLE PATTERN DOTS-1367;So;0;ON;;;;;N;;;;;
+2866;BRAILLE PATTERN DOTS-2367;So;0;ON;;;;;N;;;;;
+2867;BRAILLE PATTERN DOTS-12367;So;0;ON;;;;;N;;;;;
+2868;BRAILLE PATTERN DOTS-467;So;0;ON;;;;;N;;;;;
+2869;BRAILLE PATTERN DOTS-1467;So;0;ON;;;;;N;;;;;
+286A;BRAILLE PATTERN DOTS-2467;So;0;ON;;;;;N;;;;;
+286B;BRAILLE PATTERN DOTS-12467;So;0;ON;;;;;N;;;;;
+286C;BRAILLE PATTERN DOTS-3467;So;0;ON;;;;;N;;;;;
+286D;BRAILLE PATTERN DOTS-13467;So;0;ON;;;;;N;;;;;
+286E;BRAILLE PATTERN DOTS-23467;So;0;ON;;;;;N;;;;;
+286F;BRAILLE PATTERN DOTS-123467;So;0;ON;;;;;N;;;;;
+2870;BRAILLE PATTERN DOTS-567;So;0;ON;;;;;N;;;;;
+2871;BRAILLE PATTERN DOTS-1567;So;0;ON;;;;;N;;;;;
+2872;BRAILLE PATTERN DOTS-2567;So;0;ON;;;;;N;;;;;
+2873;BRAILLE PATTERN DOTS-12567;So;0;ON;;;;;N;;;;;
+2874;BRAILLE PATTERN DOTS-3567;So;0;ON;;;;;N;;;;;
+2875;BRAILLE PATTERN DOTS-13567;So;0;ON;;;;;N;;;;;
+2876;BRAILLE PATTERN DOTS-23567;So;0;ON;;;;;N;;;;;
+2877;BRAILLE PATTERN DOTS-123567;So;0;ON;;;;;N;;;;;
+2878;BRAILLE PATTERN DOTS-4567;So;0;ON;;;;;N;;;;;
+2879;BRAILLE PATTERN DOTS-14567;So;0;ON;;;;;N;;;;;
+287A;BRAILLE PATTERN DOTS-24567;So;0;ON;;;;;N;;;;;
+287B;BRAILLE PATTERN DOTS-124567;So;0;ON;;;;;N;;;;;
+287C;BRAILLE PATTERN DOTS-34567;So;0;ON;;;;;N;;;;;
+287D;BRAILLE PATTERN DOTS-134567;So;0;ON;;;;;N;;;;;
+287E;BRAILLE PATTERN DOTS-234567;So;0;ON;;;;;N;;;;;
+287F;BRAILLE PATTERN DOTS-1234567;So;0;ON;;;;;N;;;;;
+2880;BRAILLE PATTERN DOTS-8;So;0;ON;;;;;N;;;;;
+2881;BRAILLE PATTERN DOTS-18;So;0;ON;;;;;N;;;;;
+2882;BRAILLE PATTERN DOTS-28;So;0;ON;;;;;N;;;;;
+2883;BRAILLE PATTERN DOTS-128;So;0;ON;;;;;N;;;;;
+2884;BRAILLE PATTERN DOTS-38;So;0;ON;;;;;N;;;;;
+2885;BRAILLE PATTERN DOTS-138;So;0;ON;;;;;N;;;;;
+2886;BRAILLE PATTERN DOTS-238;So;0;ON;;;;;N;;;;;
+2887;BRAILLE PATTERN DOTS-1238;So;0;ON;;;;;N;;;;;
+2888;BRAILLE PATTERN DOTS-48;So;0;ON;;;;;N;;;;;
+2889;BRAILLE PATTERN DOTS-148;So;0;ON;;;;;N;;;;;
+288A;BRAILLE PATTERN DOTS-248;So;0;ON;;;;;N;;;;;
+288B;BRAILLE PATTERN DOTS-1248;So;0;ON;;;;;N;;;;;
+288C;BRAILLE PATTERN DOTS-348;So;0;ON;;;;;N;;;;;
+288D;BRAILLE PATTERN DOTS-1348;So;0;ON;;;;;N;;;;;
+288E;BRAILLE PATTERN DOTS-2348;So;0;ON;;;;;N;;;;;
+288F;BRAILLE PATTERN DOTS-12348;So;0;ON;;;;;N;;;;;
+2890;BRAILLE PATTERN DOTS-58;So;0;ON;;;;;N;;;;;
+2891;BRAILLE PATTERN DOTS-158;So;0;ON;;;;;N;;;;;
+2892;BRAILLE PATTERN DOTS-258;So;0;ON;;;;;N;;;;;
+2893;BRAILLE PATTERN DOTS-1258;So;0;ON;;;;;N;;;;;
+2894;BRAILLE PATTERN DOTS-358;So;0;ON;;;;;N;;;;;
+2895;BRAILLE PATTERN DOTS-1358;So;0;ON;;;;;N;;;;;
+2896;BRAILLE PATTERN DOTS-2358;So;0;ON;;;;;N;;;;;
+2897;BRAILLE PATTERN DOTS-12358;So;0;ON;;;;;N;;;;;
+2898;BRAILLE PATTERN DOTS-458;So;0;ON;;;;;N;;;;;
+2899;BRAILLE PATTERN DOTS-1458;So;0;ON;;;;;N;;;;;
+289A;BRAILLE PATTERN DOTS-2458;So;0;ON;;;;;N;;;;;
+289B;BRAILLE PATTERN DOTS-12458;So;0;ON;;;;;N;;;;;
+289C;BRAILLE PATTERN DOTS-3458;So;0;ON;;;;;N;;;;;
+289D;BRAILLE PATTERN DOTS-13458;So;0;ON;;;;;N;;;;;
+289E;BRAILLE PATTERN DOTS-23458;So;0;ON;;;;;N;;;;;
+289F;BRAILLE PATTERN DOTS-123458;So;0;ON;;;;;N;;;;;
+28A0;BRAILLE PATTERN DOTS-68;So;0;ON;;;;;N;;;;;
+28A1;BRAILLE PATTERN DOTS-168;So;0;ON;;;;;N;;;;;
+28A2;BRAILLE PATTERN DOTS-268;So;0;ON;;;;;N;;;;;
+28A3;BRAILLE PATTERN DOTS-1268;So;0;ON;;;;;N;;;;;
+28A4;BRAILLE PATTERN DOTS-368;So;0;ON;;;;;N;;;;;
+28A5;BRAILLE PATTERN DOTS-1368;So;0;ON;;;;;N;;;;;
+28A6;BRAILLE PATTERN DOTS-2368;So;0;ON;;;;;N;;;;;
+28A7;BRAILLE PATTERN DOTS-12368;So;0;ON;;;;;N;;;;;
+28A8;BRAILLE PATTERN DOTS-468;So;0;ON;;;;;N;;;;;
+28A9;BRAILLE PATTERN DOTS-1468;So;0;ON;;;;;N;;;;;
+28AA;BRAILLE PATTERN DOTS-2468;So;0;ON;;;;;N;;;;;
+28AB;BRAILLE PATTERN DOTS-12468;So;0;ON;;;;;N;;;;;
+28AC;BRAILLE PATTERN DOTS-3468;So;0;ON;;;;;N;;;;;
+28AD;BRAILLE PATTERN DOTS-13468;So;0;ON;;;;;N;;;;;
+28AE;BRAILLE PATTERN DOTS-23468;So;0;ON;;;;;N;;;;;
+28AF;BRAILLE PATTERN DOTS-123468;So;0;ON;;;;;N;;;;;
+28B0;BRAILLE PATTERN DOTS-568;So;0;ON;;;;;N;;;;;
+28B1;BRAILLE PATTERN DOTS-1568;So;0;ON;;;;;N;;;;;
+28B2;BRAILLE PATTERN DOTS-2568;So;0;ON;;;;;N;;;;;
+28B3;BRAILLE PATTERN DOTS-12568;So;0;ON;;;;;N;;;;;
+28B4;BRAILLE PATTERN DOTS-3568;So;0;ON;;;;;N;;;;;
+28B5;BRAILLE PATTERN DOTS-13568;So;0;ON;;;;;N;;;;;
+28B6;BRAILLE PATTERN DOTS-23568;So;0;ON;;;;;N;;;;;
+28B7;BRAILLE PATTERN DOTS-123568;So;0;ON;;;;;N;;;;;
+28B8;BRAILLE PATTERN DOTS-4568;So;0;ON;;;;;N;;;;;
+28B9;BRAILLE PATTERN DOTS-14568;So;0;ON;;;;;N;;;;;
+28BA;BRAILLE PATTERN DOTS-24568;So;0;ON;;;;;N;;;;;
+28BB;BRAILLE PATTERN DOTS-124568;So;0;ON;;;;;N;;;;;
+28BC;BRAILLE PATTERN DOTS-34568;So;0;ON;;;;;N;;;;;
+28BD;BRAILLE PATTERN DOTS-134568;So;0;ON;;;;;N;;;;;
+28BE;BRAILLE PATTERN DOTS-234568;So;0;ON;;;;;N;;;;;
+28BF;BRAILLE PATTERN DOTS-1234568;So;0;ON;;;;;N;;;;;
+28C0;BRAILLE PATTERN DOTS-78;So;0;ON;;;;;N;;;;;
+28C1;BRAILLE PATTERN DOTS-178;So;0;ON;;;;;N;;;;;
+28C2;BRAILLE PATTERN DOTS-278;So;0;ON;;;;;N;;;;;
+28C3;BRAILLE PATTERN DOTS-1278;So;0;ON;;;;;N;;;;;
+28C4;BRAILLE PATTERN DOTS-378;So;0;ON;;;;;N;;;;;
+28C5;BRAILLE PATTERN DOTS-1378;So;0;ON;;;;;N;;;;;
+28C6;BRAILLE PATTERN DOTS-2378;So;0;ON;;;;;N;;;;;
+28C7;BRAILLE PATTERN DOTS-12378;So;0;ON;;;;;N;;;;;
+28C8;BRAILLE PATTERN DOTS-478;So;0;ON;;;;;N;;;;;
+28C9;BRAILLE PATTERN DOTS-1478;So;0;ON;;;;;N;;;;;
+28CA;BRAILLE PATTERN DOTS-2478;So;0;ON;;;;;N;;;;;
+28CB;BRAILLE PATTERN DOTS-12478;So;0;ON;;;;;N;;;;;
+28CC;BRAILLE PATTERN DOTS-3478;So;0;ON;;;;;N;;;;;
+28CD;BRAILLE PATTERN DOTS-13478;So;0;ON;;;;;N;;;;;
+28CE;BRAILLE PATTERN DOTS-23478;So;0;ON;;;;;N;;;;;
+28CF;BRAILLE PATTERN DOTS-123478;So;0;ON;;;;;N;;;;;
+28D0;BRAILLE PATTERN DOTS-578;So;0;ON;;;;;N;;;;;
+28D1;BRAILLE PATTERN DOTS-1578;So;0;ON;;;;;N;;;;;
+28D2;BRAILLE PATTERN DOTS-2578;So;0;ON;;;;;N;;;;;
+28D3;BRAILLE PATTERN DOTS-12578;So;0;ON;;;;;N;;;;;
+28D4;BRAILLE PATTERN DOTS-3578;So;0;ON;;;;;N;;;;;
+28D5;BRAILLE PATTERN DOTS-13578;So;0;ON;;;;;N;;;;;
+28D6;BRAILLE PATTERN DOTS-23578;So;0;ON;;;;;N;;;;;
+28D7;BRAILLE PATTERN DOTS-123578;So;0;ON;;;;;N;;;;;
+28D8;BRAILLE PATTERN DOTS-4578;So;0;ON;;;;;N;;;;;
+28D9;BRAILLE PATTERN DOTS-14578;So;0;ON;;;;;N;;;;;
+28DA;BRAILLE PATTERN DOTS-24578;So;0;ON;;;;;N;;;;;
+28DB;BRAILLE PATTERN DOTS-124578;So;0;ON;;;;;N;;;;;
+28DC;BRAILLE PATTERN DOTS-34578;So;0;ON;;;;;N;;;;;
+28DD;BRAILLE PATTERN DOTS-134578;So;0;ON;;;;;N;;;;;
+28DE;BRAILLE PATTERN DOTS-234578;So;0;ON;;;;;N;;;;;
+28DF;BRAILLE PATTERN DOTS-1234578;So;0;ON;;;;;N;;;;;
+28E0;BRAILLE PATTERN DOTS-678;So;0;ON;;;;;N;;;;;
+28E1;BRAILLE PATTERN DOTS-1678;So;0;ON;;;;;N;;;;;
+28E2;BRAILLE PATTERN DOTS-2678;So;0;ON;;;;;N;;;;;
+28E3;BRAILLE PATTERN DOTS-12678;So;0;ON;;;;;N;;;;;
+28E4;BRAILLE PATTERN DOTS-3678;So;0;ON;;;;;N;;;;;
+28E5;BRAILLE PATTERN DOTS-13678;So;0;ON;;;;;N;;;;;
+28E6;BRAILLE PATTERN DOTS-23678;So;0;ON;;;;;N;;;;;
+28E7;BRAILLE PATTERN DOTS-123678;So;0;ON;;;;;N;;;;;
+28E8;BRAILLE PATTERN DOTS-4678;So;0;ON;;;;;N;;;;;
+28E9;BRAILLE PATTERN DOTS-14678;So;0;ON;;;;;N;;;;;
+28EA;BRAILLE PATTERN DOTS-24678;So;0;ON;;;;;N;;;;;
+28EB;BRAILLE PATTERN DOTS-124678;So;0;ON;;;;;N;;;;;
+28EC;BRAILLE PATTERN DOTS-34678;So;0;ON;;;;;N;;;;;
+28ED;BRAILLE PATTERN DOTS-134678;So;0;ON;;;;;N;;;;;
+28EE;BRAILLE PATTERN DOTS-234678;So;0;ON;;;;;N;;;;;
+28EF;BRAILLE PATTERN DOTS-1234678;So;0;ON;;;;;N;;;;;
+28F0;BRAILLE PATTERN DOTS-5678;So;0;ON;;;;;N;;;;;
+28F1;BRAILLE PATTERN DOTS-15678;So;0;ON;;;;;N;;;;;
+28F2;BRAILLE PATTERN DOTS-25678;So;0;ON;;;;;N;;;;;
+28F3;BRAILLE PATTERN DOTS-125678;So;0;ON;;;;;N;;;;;
+28F4;BRAILLE PATTERN DOTS-35678;So;0;ON;;;;;N;;;;;
+28F5;BRAILLE PATTERN DOTS-135678;So;0;ON;;;;;N;;;;;
+28F6;BRAILLE PATTERN DOTS-235678;So;0;ON;;;;;N;;;;;
+28F7;BRAILLE PATTERN DOTS-1235678;So;0;ON;;;;;N;;;;;
+28F8;BRAILLE PATTERN DOTS-45678;So;0;ON;;;;;N;;;;;
+28F9;BRAILLE PATTERN DOTS-145678;So;0;ON;;;;;N;;;;;
+28FA;BRAILLE PATTERN DOTS-245678;So;0;ON;;;;;N;;;;;
+28FB;BRAILLE PATTERN DOTS-1245678;So;0;ON;;;;;N;;;;;
+28FC;BRAILLE PATTERN DOTS-345678;So;0;ON;;;;;N;;;;;
+28FD;BRAILLE PATTERN DOTS-1345678;So;0;ON;;;;;N;;;;;
+28FE;BRAILLE PATTERN DOTS-2345678;So;0;ON;;;;;N;;;;;
+28FF;BRAILLE PATTERN DOTS-12345678;So;0;ON;;;;;N;;;;;
+2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
+290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
+290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;
+2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
+2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
+2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;
+2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;;
+292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;;
+292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;;
+2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;;
+2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
+2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;;
+2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;;
+2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;;
+293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;;
+293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
+2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
+2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;
+2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
+294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
+294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
+294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
+294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
+294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
+2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
+2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
+2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
+2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
+2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
+2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
+2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
+2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
+2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
+2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
+295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
+295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
+295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
+295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
+295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
+295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
+2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
+2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
+2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
+2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
+2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
+296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
+296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
+296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
+296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;;
+2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;;
+297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;;
+2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;;
+2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;;
+2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;;
+2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;;
+2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;;
+2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;;
+2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;;
+2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;;
+298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;;
+298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;;
+298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;;
+298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;;
+298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;;
+298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;;
+2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;;
+2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;;
+2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;;
+2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
+2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
+2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
+2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
+2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;
+2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;
+2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;;
+299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;;
+299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
+299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;;
+299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;;
+299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;;
+299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
+29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
+29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
+29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;;
+29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;;
+29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;;
+29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;;
+29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;;
+29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;;
+29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;;
+29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;;
+29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;;
+29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;;
+29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
+29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
+29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;;
+29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;;
+29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
+29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;;
+29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;;
+29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;;
+29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;;
+29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
+29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
+29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
+29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
+29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;;
+29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;;
+29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;;
+29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;;
+29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;;
+29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;;
+29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;;
+29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;;
+29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
+29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
+29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
+29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
+29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;;
+29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;;
+29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;;
+29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;;
+29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;;
+29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;;
+29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
+29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
+29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
+29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;;
+29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;;
+29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;;
+29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;;
+29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;;
+29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;;
+29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;;
+29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;;
+29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;;
+29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
+29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;;
+29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;;
+29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+29FE;TINY;Sm;0;ON;;;;;N;;;;;
+29FF;MINY;Sm;0;ON;;;;;N;;;;;
+2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;;
+2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;;
+2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;;
+2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON;<compat> 222B 222B 222B 222B;;;;Y;;;;;
+2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;;
+2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;;
+2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;;
+2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;;
+2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
+2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
+2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;;
+2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;;
+2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;;
+2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;;
+2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;;
+2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+2A1D;JOIN;Sm;0;ON;;;;;N;;;;;
+2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;;
+2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;;
+2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;;
+2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;;
+2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;;
+2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;;
+2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;;
+2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;;
+2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;;
+2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;;
+2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;;
+2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;;
+2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;;
+2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;;
+2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
+2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
+2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;;
+2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;;
+2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;;
+2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
+2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
+2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
+2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
+2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
+2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
+2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;;
+2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;;
+2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;;
+2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;;
+2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A74;DOUBLE COLON EQUAL;Sm;0;ON;<compat> 003A 003A 003D;;;;Y;;;;;
+2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;;
+2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D 003D;;;;N;;;;;
+2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;;
+2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;;
+2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;;
+2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;;
+2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
+2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
+2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;;
+2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;;
+2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;;
+2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;;
+2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
+2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
+2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;;
+2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;;
+2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
+2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;;
+2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;not independent;;;
+2ADD;NONFORKING;Sm;0;ON;;;;;N;;independent;;;
+2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;;
+2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;;
+2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;;
+2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;;
+2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
+2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
+2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;;
+2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
+2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
+2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;;
+2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;;
+2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;;
+2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
+2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
+2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
+2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;
+2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;
+2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;
+2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;
+2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;
+2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;
+2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;
+2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;
+2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;
+2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;
+2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;
+2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;
+2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;
+2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;
+2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;
+2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;
+2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;
+2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;
+2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;
+2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;
+2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;
+2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;
+2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;
+2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;
+2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;
+2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;
+2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;
+2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;
+2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;
+2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;
+2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;
+2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;
+2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;
+2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;
+2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;
+2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;
+2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;
+2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;
+2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;
+2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;
+2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;
+2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;
+2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;
+2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;
+2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;
+2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;
+2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;
+2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;
+2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;
+2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;
+2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;
+2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;
+2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;
+2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;
+2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;
+2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;
+2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;
+2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;
+2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;
+2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;
+2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;
+2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;
+2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;
+2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;
+2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;
+2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;
+2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;
+2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;
+2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;
+2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;
+2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;
+2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;
+2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;
+2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;
+2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;
+2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;
+2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;
+2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;
+2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;
+2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;
+2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;
+2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;
+2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;
+2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;
+2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;
+2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;
+2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;
+2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;
+2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;
+2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;
+2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;
+2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;
+2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;
+2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;
+2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;
+2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;
+2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;
+2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;
+2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;
+2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;
+2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;
+2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;
+2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;
+2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;
+2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;
+2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;
+2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
+2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
+2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
+2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
+2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
+2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
+2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
+2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
+2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
+2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
+2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
+2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
+2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
+2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
+2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
+2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
+2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
+2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
+2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
+2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
+2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
+2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
+2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
+2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
+2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
+2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
+2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
+2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
+2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
+2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
+2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
+2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
+2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
+2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
+2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
+2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
+2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
+2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
+2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
+2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
+2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
+2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
+2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
+2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
+2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
+2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
+2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
+2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
+2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
+2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
+2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
+2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
+2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
+2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
+2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
+2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
+2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
+2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
+2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
+2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
+2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
+2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
+2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
+2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
+2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
+2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
+2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
+2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
+2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
+2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
+2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
+2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
+2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
+2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
+2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
+2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
+2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
+2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
+2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
+2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
+2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
+2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
+2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
+2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
+2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
+2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
+2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
+2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
+2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
+2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
+2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
+2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
+2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
+2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
+2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
+2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
+2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
+2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
+2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
+2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
+2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
+2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
+2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
+2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
+2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
+2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
+2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
+2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
+2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
+2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
+2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
+2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
+2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
+2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
+2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
+2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
+2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
+2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
+2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
+2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
+2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
+2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
+2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
+2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
+2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
+2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
+2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
+2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
+2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
+2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
+2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
+2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
+2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
+2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
+2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
+2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
+2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
+2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
+2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
+2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
+2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
+2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
+2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
+2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
+2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
+2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
+2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
+2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
+2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
+2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
+2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
+2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
+2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
+2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
+2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
+2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
+2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
+2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
+2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
+2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
+2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
+2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
+2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
+2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
+2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
+2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
+2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
+2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
+2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
+2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
+2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
+2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
+2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
+2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
+2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
+2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
+2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
+2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
+2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
+2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
+2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
+2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
+2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
+2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
+2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
+2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
+2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
+2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
+2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
+2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
+2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
+2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
+2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
+2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
+2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
+2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
+2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
+2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
+2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
+2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
+2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
+2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
+2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
+2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
+2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
+2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
+2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
+2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
+2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
+2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
+2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
+2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
+2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
+2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;
+2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;
+2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;
+2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;
+2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;
+2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;
+2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;
+2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;
+2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;
+2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;
+2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
+2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
+2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
+3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
+3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
+3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
+3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
+3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
+3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
+3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
+3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
+300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
+300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
+300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
+300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
+300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
+300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
+3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
+3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
+3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
+3013;GETA MARK;So;0;ON;;;;;N;;;;;
+3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
+3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
+3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
+3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
+3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
+3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
+301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
+301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
+301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
+301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
+3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
+3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
+3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
+3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
+3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
+3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
+3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
+3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
+3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
+302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
+3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
+3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
+303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;
+303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+303C;MASU MARK;Lo;0;L;;;;;N;;;;;
+303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;;
+303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;
+303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
+3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
+3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
+3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
+3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
+3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
+304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
+304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
+304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
+304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
+304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
+3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
+3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
+3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
+3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
+3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
+3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
+3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
+3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
+3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
+3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
+305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
+305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
+305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
+305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
+305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
+305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
+3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
+3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
+3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
+3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
+3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
+3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
+3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
+3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
+3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
+306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
+306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
+306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
+306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
+306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
+306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
+3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
+3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
+3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
+3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
+3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
+3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
+3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
+3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
+3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
+3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
+307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
+307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
+307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
+307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
+307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
+307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
+3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
+3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
+3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
+3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
+3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
+3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
+3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
+308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
+308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
+308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
+308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
+308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
+3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
+3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
+3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
+3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
+3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
+3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
+309F;HIRAGANA DIGRAPH YORI;Lo;0;L;<vertical> 3088 308A;;;;N;;;;;
+30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;;
+30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
+30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
+30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
+30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
+30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
+30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
+30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
+30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
+30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
+30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
+30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
+30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
+30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
+30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
+30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
+30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
+30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
+30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
+30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
+30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
+30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
+30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
+30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
+30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
+30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
+30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
+30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
+30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
+30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
+30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
+30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
+30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
+30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
+30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
+30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
+30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
+30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
+30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
+30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
+30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
+30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
+30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
+30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
+30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
+30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
+30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
+30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
+30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
+30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
+30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
+30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
+30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
+30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
+30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
+30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
+30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
+30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
+30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
+30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
+30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
+30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
+30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
+30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
+30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
+30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
+30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
+30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
+30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
+30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
+30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
+30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
+30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
+30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
+30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
+30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
+30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
+30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
+30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
+30FB;KATAKANA MIDDLE DOT;Pc;0;ON;;;;;N;;;;;
+30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
+30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
+30FF;KATAKANA DIGRAPH KOTO;Lo;0;L;<vertical> 30B3 30C8;;;;N;;;;;
+3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
+3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
+3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
+3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
+3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
+310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
+310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
+310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
+310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
+310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
+310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
+3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
+3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
+3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
+3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
+3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
+3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
+3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
+3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
+3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
+3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
+311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
+311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
+311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
+311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
+311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
+311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
+3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
+3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
+3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
+3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
+3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
+3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
+3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
+3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
+3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
+3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
+312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
+312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
+312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;Kaeriten;;;
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
+31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;
+31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;
+31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;
+31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;
+31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;
+31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;
+31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;
+31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;
+31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;
+31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;
+31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;
+31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;
+31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;
+31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;
+31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;
+31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;
+31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;
+31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;
+31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;
+31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;
+31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;
+31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;
+31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;
+31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;
+31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;;
+31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;;
+31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;;
+31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;;
+31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;;
+31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;;
+31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;;
+31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;;
+31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;;
+31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;;
+31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;;
+31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;;
+31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;;
+31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;;
+31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;;
+31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;;
+3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;;
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
+3251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;;
+3252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;;
+3253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;;
+3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;;
+3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;;
+3256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;;
+3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;;
+3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;;
+3259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;;
+325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;;
+325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;;
+325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;;
+325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;;
+325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;;
+325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;;
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
+32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;;
+32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;;
+32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;;
+32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;;
+32B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;;
+32B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;;
+32B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;;
+32B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;;
+32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;;
+32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;;
+32BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;;
+32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;;
+32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;;
+32BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;;
+32BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;;
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
+3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
+4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
+A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
+A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
+A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;;
+A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;;
+A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;;
+A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;;
+A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;;
+A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;;
+A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;;
+A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;;
+A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;;
+A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;;
+A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;;
+A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;;
+A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;;
+A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;;
+A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;;
+A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;;
+A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;;
+A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;;
+A015;YI SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
+A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;
+A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
+A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;
+A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;
+A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;
+A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;
+A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
+A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;
+A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
+A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;
+A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;
+A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;
+A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
+A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;
+A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
+A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;
+A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
+A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
+A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;
+A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
+A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;
+A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;
+A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;
+A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;
+A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;
+A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;
+A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;
+A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;
+A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
+A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;
+A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
+A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;
+A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;
+A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;
+A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
+A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;
+A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
+A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;
+A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;
+A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;
+A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;
+A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;
+A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;
+A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
+A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;
+A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
+A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;
+A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;
+A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;
+A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;
+A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;
+A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;
+A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;
+A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;
+A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
+A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;
+A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
+A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
+A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;
+A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;
+A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;
+A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;
+A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
+A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;
+A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
+A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
+A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;
+A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;
+A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;
+A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
+A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;
+A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
+A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
+A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;
+A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
+A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
+A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
+A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;
+A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
+A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
+A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;
+A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;
+A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;
+A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;
+A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;
+A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;
+A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;
+A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;
+A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;
+A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;
+A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;
+A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;
+A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;
+A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;
+A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;
+A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;
+A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;
+A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;
+A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;
+A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;
+A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;
+A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;
+A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;
+A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;
+A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;
+A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;
+A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;
+A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;
+A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;
+A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;
+A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;
+A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;
+A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;
+A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;
+A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;
+A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;
+A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;
+A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;
+A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;
+A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;
+A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;
+A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;
+A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;
+A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;
+A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;
+A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;
+A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;
+A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;
+A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;
+A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;
+A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;
+A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;
+A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;
+A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;
+A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;
+A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;
+A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;
+A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;
+A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;
+A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;
+A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;
+A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;
+A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
+A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;
+A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
+A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;
+A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;
+A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;
+A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
+A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;
+A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
+A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;
+A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;
+A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;
+A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;
+A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
+A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;
+A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
+A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;
+A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
+A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;
+A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
+A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;
+A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;
+A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;
+A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;
+A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;
+A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;
+A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;
+A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;
+A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;
+A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;
+A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;
+A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;
+A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;
+A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;
+A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;
+A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;
+A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;
+A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;
+A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;
+A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;
+A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;
+A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;
+A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;
+A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;
+A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;
+A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;
+A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;
+A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;
+A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;
+A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;
+A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;
+A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;
+A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;
+A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;
+A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;
+A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;
+A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;
+A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;
+A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;
+A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;
+A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;
+A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;
+A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;
+A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;
+A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;
+A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;
+A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;
+A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;
+A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;
+A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
+A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;
+A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
+A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;
+A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;
+A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;
+A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
+A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;
+A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
+A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;
+A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;
+A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
+A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;
+A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
+A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;
+A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
+A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
+A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;
+A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
+A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;
+A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;
+A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
+A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;
+A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
+A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;
+A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;
+A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;
+A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
+A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;
+A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
+A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;
+A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;
+A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;
+A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;
+A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
+A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;
+A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
+A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;
+A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
+A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
+A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;
+A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
+A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;
+A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;
+A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
+A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;
+A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
+A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;
+A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;
+A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;
+A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
+A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;
+A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
+A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;
+A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;
+A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;
+A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
+A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;
+A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
+A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;
+A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
+A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
+A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;
+A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
+A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;
+A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;
+A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;
+A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;
+A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
+A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;
+A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;
+A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;
+A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;
+A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;
+A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
+A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;
+A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;
+A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;
+A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
+A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;
+A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;
+A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
+A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;
+A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;
+A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;
+A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
+A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;
+A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;
+A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;
+A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;
+A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;
+A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;
+A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;
+A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;
+A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;
+A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;
+A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;
+A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;
+A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;
+A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;
+A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;
+A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;
+A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;
+A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;
+A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;
+A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;
+A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;
+A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;
+A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;
+A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;
+A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
+A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;
+A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
+A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;
+A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;
+A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;
+A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;
+A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
+A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;
+A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;
+A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;
+A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
+A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;
+A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
+A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;
+A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
+A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
+A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;
+A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
+A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;
+A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;
+A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;
+A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;
+A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;
+A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;
+A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;
+A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;
+A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;
+A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;
+A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;
+A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;
+A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;
+A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;
+A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;
+A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;
+A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;
+A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;
+A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;
+A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;
+A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;
+A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;
+A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;
+A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;
+A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;
+A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;
+A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;
+A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;
+A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;
+A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;
+A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;
+A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;
+A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;
+A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;
+A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;
+A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;
+A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;
+A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;
+A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;
+A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;
+A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;
+A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;
+A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;
+A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;
+A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;
+A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;
+A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;
+A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;
+A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;
+A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;
+A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;
+A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;
+A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;
+A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;
+A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;
+A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;
+A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;
+A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;
+A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;
+A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;
+A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;
+A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;
+A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;
+A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;
+A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
+A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;
+A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
+A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;
+A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;
+A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;
+A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;
+A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
+A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;
+A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
+A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;
+A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;
+A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;
+A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;
+A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
+A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;
+A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
+A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;
+A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;
+A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
+A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
+A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;
+A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
+A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;
+A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;
+A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
+A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;
+A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
+A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;
+A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;
+A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;
+A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
+A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;
+A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
+A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;
+A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;
+A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;
+A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
+A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;
+A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
+A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;
+A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;
+A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
+A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
+A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;
+A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
+A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;
+A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;
+A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
+A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;
+A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;
+A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;
+A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;
+A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
+A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;
+A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
+A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;
+A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;
+A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;
+A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;
+A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
+A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;
+A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
+A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
+A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;
+A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
+A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
+A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;
+A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
+A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;
+A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;
+A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;
+A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;
+A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;
+A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;
+A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;
+A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;
+A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;
+A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;
+A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;
+A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;
+A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;
+A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;
+A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;
+A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;
+A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;
+A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;
+A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;
+A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;
+A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;
+A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;
+A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;
+A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;
+A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;
+A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;
+A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;
+A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;
+A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;
+A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;
+A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;
+A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;
+A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;
+A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;
+A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;
+A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;
+A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;
+A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;
+A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;
+A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;
+A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;
+A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;
+A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;
+A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;
+A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;
+A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;
+A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;
+A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;
+A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;
+A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;
+A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;
+A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;
+A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;
+A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;
+A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;
+A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;
+A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;
+A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;
+A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;
+A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;
+A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;
+A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;
+A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;
+A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;
+A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
+A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;
+A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;
+A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
+A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;
+A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
+A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;
+A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;
+A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;
+A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;
+A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
+A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;
+A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
+A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;
+A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
+A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
+A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;
+A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
+A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;
+A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;
+A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;
+A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;
+A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;
+A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;
+A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
+A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;
+A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;
+A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;
+A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;
+A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;
+A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;
+A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;
+A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;
+A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;
+A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;
+A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;
+A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;
+A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;
+A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;
+A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;
+A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;
+A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;
+A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;
+A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;
+A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;
+A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;
+A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;
+A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;
+A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;
+A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;
+A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;
+A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;
+A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;
+A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
+A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;
+A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
+A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;
+A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;
+A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;
+A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;
+A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
+A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;
+A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
+A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;
+A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;
+A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;
+A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;
+A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;
+A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;
+A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;
+A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
+A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
+A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;
+A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
+A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;
+A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;
+A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;
+A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;
+A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;
+A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;
+A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;
+A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;
+A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;
+A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;
+A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
+A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;
+A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;
+A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;
+A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;
+A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;
+A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;
+A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;
+A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
+A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;
+A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;
+A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
+A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;
+A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;
+A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
+A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;
+A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;
+A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
+A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;
+A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;
+A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;
+A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;
+A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;
+A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;
+A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;
+A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;
+A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;
+A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;
+A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;
+A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;
+A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;
+A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;
+A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;
+A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;
+A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;
+A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;
+A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;
+A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;
+A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;
+A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;
+A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;
+A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;
+A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;
+A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;
+A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;
+A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;
+A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;
+A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;
+A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;
+A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;
+A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;
+A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;
+A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;
+A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;
+A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;
+A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
+A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;
+A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
+A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;
+A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;
+A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;
+A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
+A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;
+A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
+A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;
+A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;
+A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;
+A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
+A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;
+A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
+A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;
+A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
+A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
+A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;
+A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
+A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;
+A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;
+A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;
+A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;
+A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;
+A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;
+A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;
+A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;
+A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
+A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;
+A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
+A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
+A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;
+A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;
+A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;
+A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
+A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;
+A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
+A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
+A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
+A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;
+A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
+A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
+A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;
+A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
+A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
+A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
+A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;
+A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
+A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
+A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;
+A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;
+A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;
+A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;
+A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;
+A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;
+A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;
+A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;
+A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;
+A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;
+A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;
+A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;
+A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;
+A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;
+A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;
+A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;
+A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;
+A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;
+A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;
+A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;
+A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;
+A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;
+A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;
+A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;
+A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;
+A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;
+A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;
+A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;
+A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;
+A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;
+A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;
+A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;
+A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;
+A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;
+A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;
+A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;
+A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;
+A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;
+A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;
+A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;
+A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;
+A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;
+A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;
+A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;
+A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;
+A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;
+A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;
+A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;
+A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;
+A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;
+A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;
+A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;
+A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;
+A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;
+A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;
+A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;
+A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;
+A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;
+A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;
+A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;
+A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;
+A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;
+A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;
+A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;
+A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;
+A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;
+A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;
+A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;
+A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;
+A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;
+A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;
+A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;
+A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;
+A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;
+A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;
+A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;
+A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;
+A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;
+A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;
+A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;
+A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;
+A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;
+A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;
+A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;
+A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;
+A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;
+A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;
+A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;
+A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;
+A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;
+A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;
+A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;
+A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;
+A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;
+A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;
+A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;
+A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;
+A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;
+A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;
+A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;
+A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;
+A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;
+A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;
+A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;
+A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;
+A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;
+A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;
+A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;
+A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;
+A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;
+A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;
+A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;
+A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;
+A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;
+A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;
+A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;
+A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;
+A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;
+A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;
+A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;
+A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;
+A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;
+A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
+A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;
+A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
+A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;
+A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;
+A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;
+A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
+A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;
+A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
+A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;
+A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;
+A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
+A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;
+A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
+A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;
+A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;
+A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;
+A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;
+A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;
+A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;
+A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;
+A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;
+A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
+A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;
+A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
+A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;
+A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;
+A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;
+A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;
+A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;
+A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;
+A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;
+A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;
+A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
+A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;
+A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
+A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
+A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;
+A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
+A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;
+A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;
+A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;
+A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;
+A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;
+A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;
+A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;
+A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;
+A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;
+A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;
+A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;
+A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;
+A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;
+A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;
+A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;
+A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;
+A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;
+A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;
+A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;
+A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;
+A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;
+A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;
+A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;
+A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;
+A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;
+A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;
+A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;
+A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;
+A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;
+A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;
+A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;
+A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;
+A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;
+A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
+A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;
+A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
+A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
+A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;
+A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;
+A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;
+A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;
+A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;
+A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;
+A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;
+A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
+A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;
+A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
+A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
+A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
+A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;
+A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
+A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
+A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;
+A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;
+A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;
+A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;
+A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;
+A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;
+A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;
+A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;
+A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
+A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;
+A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;
+A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;
+A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;
+A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;
+A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;
+A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;
+A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;
+A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;
+A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
+A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;
+A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;
+A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
+A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;
+A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;
+A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;
+A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;
+A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;
+A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;
+A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;
+A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;
+A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;
+A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
+A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;
+A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
+A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;
+A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;
+A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;
+A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;
+A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;
+A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;
+A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;
+A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
+A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;
+A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
+A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
+A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;
+A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
+A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;
+A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;
+A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;
+A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;
+A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;
+A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;
+A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;
+A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;
+A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;
+A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;
+A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;
+A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;
+A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;
+A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;
+A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;
+A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;
+A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;
+A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;
+A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
+A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;
+A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
+A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;
+A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;
+A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;
+A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;
+A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;
+A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;
+A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;
+A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;
+A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
+A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;
+A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
+A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
+A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;
+A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
+A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;
+A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;
+A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;
+A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;
+A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;
+A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;
+A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;
+A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;
+A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;
+A491;YI RADICAL LI;So;0;ON;;;;;N;;;;;
+A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;
+A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;
+A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;
+A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;
+A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;
+A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;
+A498;YI RADICAL MI;So;0;ON;;;;;N;;;;;
+A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;
+A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;
+A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;
+A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;
+A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;
+A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;
+A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;
+A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;
+A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;
+A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;;
+A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;;
+A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;
+A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;
+A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;
+A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;
+A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;
+A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;
+A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;
+A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;
+A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;
+A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;
+A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;
+A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;
+A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;
+A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;
+A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;
+A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;
+A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;;
+A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;
+A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;
+A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;
+A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;
+A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;
+A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;
+A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;
+A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;
+A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;
+A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;
+A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;
+A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;
+A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;;
+A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
+A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
+A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
+A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;;
+A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
+F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
+F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
+F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
+F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
+F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
+F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
+F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
+F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
+F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
+F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
+F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
+F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
+F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
+F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
+F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
+F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
+F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
+F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
+F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
+F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
+F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
+F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
+F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
+F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
+F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
+F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
+F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
+F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
+F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
+F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
+F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
+F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
+F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
+F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
+F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
+F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
+F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
+F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
+F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
+F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
+F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
+F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
+F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
+F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
+F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
+F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
+F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
+F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
+F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
+F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
+F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
+F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
+F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
+F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
+F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
+F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
+F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
+F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
+F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
+F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
+F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
+F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
+F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
+F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
+F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
+F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
+F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
+F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
+F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
+F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
+F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
+F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
+F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
+F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
+F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
+F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
+F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
+F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
+F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
+F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
+F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
+F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
+F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;;
+F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
+F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
+F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
+F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
+F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
+F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
+F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
+F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
+F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
+F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
+F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
+F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
+F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
+F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
+F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
+F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
+F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
+F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
+F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
+F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
+F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
+F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
+F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
+F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
+F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
+F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;;
+F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
+F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
+F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
+F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
+F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
+F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
+F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
+F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;;
+F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
+F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
+F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
+F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
+F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;;
+F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
+F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
+F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
+F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
+F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
+F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
+F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
+F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
+F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
+F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
+F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
+F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
+F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
+F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
+F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
+F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
+F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
+F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
+F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
+F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
+F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
+F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
+F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
+F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
+F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
+F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
+F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
+F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
+F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
+F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
+F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
+F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
+F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
+F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
+F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
+F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
+F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
+F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
+F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
+F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
+F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
+F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
+F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
+F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
+F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
+F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
+F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
+F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
+F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
+F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
+F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
+F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
+F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
+F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
+F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
+F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
+F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
+F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;;
+F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
+F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
+F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
+F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
+F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
+F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
+F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
+F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
+F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
+F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
+F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
+F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
+F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
+F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
+F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
+F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
+F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
+F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
+F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
+F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
+F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
+F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
+F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
+F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
+F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
+F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
+F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
+F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
+F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
+F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
+F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;;
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;;
+F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
+F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
+F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
+F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
+F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
+F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
+F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
+F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
+F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
+F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
+F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
+F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
+F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
+F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
+F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
+F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
+F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
+F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
+F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
+F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
+F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
+F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
+F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
+F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
+F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
+F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
+F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
+F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
+F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
+F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
+F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
+F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
+F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
+F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
+F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
+F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
+F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
+F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
+F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
+F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
+F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
+F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;;
+F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
+F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
+FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
+FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
+FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
+FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
+FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
+FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
+FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
+FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
+FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
+FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
+FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
+FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
+FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
+FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
+FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
+FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
+FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
+FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
+FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
+FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
+FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
+FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
+FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
+FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
+FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
+FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
+FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
+FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
+FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
+FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
+FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
+FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;;
+FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
+FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
+FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
+FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;;
+FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
+FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
+FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
+FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
+FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
+FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
+FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
+FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
+FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
+FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
+FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;;
+FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;;
+FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;;
+FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;;
+FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;;
+FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;;
+FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;;
+FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;;
+FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;;
+FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;;
+FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;;
+FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;;
+FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;;
+FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;;
+FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;;
+FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;;
+FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;;
+FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;;
+FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;;
+FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;;
+FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;;
+FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;;
+FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;;
+FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;;
+FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;;
+FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;;
+FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;;
+FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;;
+FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;;
+FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;;
+FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;;
+FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;;
+FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;;
+FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;;
+FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;;
+FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;;
+FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;;
+FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;;
+FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;;
+FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;;
+FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;;
+FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;;
+FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;;
+FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;;
+FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;;
+FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;;
+FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;;
+FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;;
+FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;;
+FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;;
+FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;;
+FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;;
+FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;;
+FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;;
+FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;;
+FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;;
+FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;;
+FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;;
+FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;;
+FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
+FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;;
+FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
+FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ET;<font> 002B;;;;N;;;;;
+FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
+FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
+FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
+FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
+FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
+FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
+FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
+FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
+FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
+FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
+FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
+FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
+FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
+FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
+FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
+FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
+FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
+FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
+FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
+FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
+FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
+FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
+FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
+FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
+FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
+FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
+FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
+FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
+FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
+FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
+FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
+FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
+FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
+FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
+FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;;
+FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;;
+FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;;
+FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;;
+FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;;
+FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;;
+FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;;
+FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;;
+FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;;
+FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;;
+FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;;
+FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;;
+FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;;
+FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;;
+FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;;
+FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;;
+FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
+FE45;SESAME DOT;Po;0;ON;;;;;N;;;;;
+FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;;
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
+FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
+FE62;SMALL PLUS SIGN;Sm;0;ET;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
+FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;
+FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
+FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;;
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;;
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;;
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;;
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;*;;;
+FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;*;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;0;ON;<narrow> 30FB;;;;N;;;;;
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;;
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;;
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
+FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;BN;;;;;N;;;;;
+FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;BN;;;;;N;;;;;
+FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;BN;;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;;
+10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;;
+10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;;
+10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;;
+10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;;
+10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;;
+10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;;
+10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;;
+10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;;
+10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;;
+1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;;
+1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;;
+1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;;
+1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;;
+1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;;
+1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;Faliscan;;;
+10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;;
+10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;;
+10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;;
+10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;;
+10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;;
+10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;;
+10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;;
+10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;Faliscan;;;
+10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;;
+10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;;
+1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;;
+1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;Umbrian;;;
+1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;Umbrian;;;
+1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;Oscan;;;
+1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;Oscan;;;
+10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;;
+10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;;
+10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;;
+10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;;
+10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;;
+10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;;
+10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;;
+10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;;
+10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;;
+10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;;
+10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;;
+10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;;
+10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;;
+10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;;
+1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;;
+1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;;
+1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;;
+1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;;
+1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;;
+1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;;
+10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;;
+10341;GOTHIC LETTER NINETY;Lo;0;L;;;;;N;;;;;
+10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;;
+10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;;
+10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;;
+10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;;
+10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;;
+10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;;
+10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;;
+10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;;
+1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;;N;;;;;
+10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428;
+10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429;
+10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A;
+10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B;
+10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C;
+10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D;
+10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E;
+10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F;
+10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430;
+10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431;
+1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432;
+1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433;
+1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434;
+1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435;
+1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436;
+1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437;
+10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438;
+10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439;
+10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A;
+10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B;
+10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C;
+10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D;
+10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E;
+10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F;
+10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440;
+10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441;
+1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442;
+1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443;
+1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444;
+1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445;
+1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446;
+1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447;
+10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448;
+10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449;
+10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A;
+10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B;
+10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C;
+10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D;
+10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400
+10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401
+1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402
+1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403
+1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404
+1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405
+1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406
+1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407
+10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408
+10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409
+10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A
+10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B
+10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C
+10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D
+10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E
+10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F
+10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410
+10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411
+1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412
+1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413
+1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414
+1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415
+1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416
+1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417
+10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418
+10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419
+10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A
+10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B
+10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C
+10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D
+10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E
+10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F
+10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420
+10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421
+1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422
+1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423
+1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424
+1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425
+1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;;
+1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;;
+1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;;
+1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;;
+1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;;
+1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;;
+1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;;
+1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;;
+1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;;
+1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;;
+1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;;
+1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;;
+1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;;
+1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;;
+1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;;
+1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;;
+1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;;
+1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;;
+1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;;
+1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;;
+1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;;
+1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;;
+1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;;
+1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;;
+1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;;
+1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;;
+1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;;
+1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;;
+1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;;
+1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;;
+1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;;
+1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;;
+1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;;
+1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;;
+1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;;
+1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;;
+1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;;
+1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;;
+1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;;
+1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;;
+1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;;
+1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;;
+1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;;
+1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;;
+1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;;
+1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;;
+1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;;
+1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;;
+1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;;
+1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;;
+1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;;
+1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;;
+1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;;
+1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;;
+1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;;
+1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;;
+1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;;
+1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;;
+1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;;
+1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;;
+1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;;
+1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;;
+1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;;
+1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;;
+1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;;
+1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;;
+1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;;
+1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;;
+1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;;
+1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;;
+1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;;
+1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;;
+1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;;
+1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;;
+1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;;
+1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;;
+1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;;
+1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;;
+1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;;
+1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;;
+1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;;
+1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;;
+1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;;
+1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;;
+1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;;
+1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;;
+1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;;
+1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;;
+1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;;
+1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;;
+1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;;
+1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;;
+1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;;
+1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;;
+1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;;
+1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;;
+1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;;
+1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;;
+1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;;
+1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;;
+1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;;
+1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;;
+1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;;
+1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;;
+1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;;
+1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;;
+1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;;
+1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;;
+1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;;
+1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;;
+1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;;
+1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;;
+1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;;
+1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;;
+1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;;
+1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;;
+1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;;
+1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;;
+1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;;
+1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;;
+1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;;
+1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;;
+1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;;
+1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;;
+1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;;
+1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;;
+1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;;
+1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;;
+1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;;
+1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;;
+1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;;
+1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;;
+1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;;
+1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;;
+1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;;
+1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;;
+1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;;
+1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;;
+1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;;
+1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;;
+1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;;
+1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;;
+1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
+1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;;
+1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;;
+1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;;
+1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
+1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;;
+1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;;
+1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;;
+1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;;
+1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;;
+1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;;
+1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;;
+1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;;
+1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;;
+1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;;
+1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;;
+1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;;
+1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
+1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
+1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;;
+1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
+1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
+1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;;
+1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;;
+1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;;
+1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;;
+1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;;
+1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;;
+1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;;
+1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;;
+1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;;
+1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;;
+1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;;
+1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;;
+1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;;
+1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;;
+1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;;
+1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;;
+1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;;
+1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;;
+1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;;
+1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;;
+1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;;
+1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;;
+1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;;
+1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;;
+1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;;
+1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;;
+1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;;
+1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;;
+1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;;
+1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;;
+1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;;
+1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;;
+1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;;
+1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
+1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
+1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
+1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
+1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;;
+1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;;
+1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;;
+1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;;
+1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;;
+1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;;
+1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;;
+1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;;
+1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;;
+1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;;
+1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;;
+1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;;
+1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;;
+1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;;
+1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;;
+1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;;
+1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;;
+1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;;
+1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;;
+1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;;
+1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;;
+1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;;
+1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;;
+1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;;
+1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;;
+1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;;
+1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;;
+1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;;
+1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;;
+1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;;
+1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;;
+1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;;
+1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;;
+1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;;
+1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;;
+1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;;
+1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;;
+1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;;
+1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;;
+1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;;
+1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;;
+1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;;
+1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;;
+1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;;
+1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;;
+1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;;
+1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;;
+1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;;
+1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;;
+1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;;
+1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;;
+1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;;
+1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;;
+1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;;
+1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;;
+1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;;
+1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;;
+1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;;
+1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;;
+1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;;
+1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;;
+1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;;
+1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;;
+1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;;
+1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;;
+1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;;
+1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;;
+1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;;
+1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;;
+1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;;
+1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;;
+1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;;
+1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;;
+1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;;
+1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;;
+1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;;
+1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;;
+1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;;
+1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;;
+1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;;
+1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;;
+1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;;
+1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;;
+1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;;
+1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;;
+1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;;
+1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;;
+1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;;
+1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;;
+1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;;
+1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;;
+1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;;
+1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
+1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
+1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;;
+1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;;
+1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
+1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
+1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;;
+1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;;
+1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;;
+1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;;
+1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;;
+1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;;
+1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;;
+1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;;
+1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;;
+1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;;
+1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;;
+1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;;
+1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;;
+1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;;
+1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;;
+1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;;
+1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;;
+1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;;
+1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;;
+1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;;
+1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;;
+1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;;
+1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;;
+1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;;
+1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;;
+1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;;
+1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;;
+1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;;
+1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;;
+1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;;
+1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;;
+1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;;
+1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;;
+1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;;
+1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;;
+1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;;
+1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;;
+1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;;
+1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;;
+1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;;
+1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;;
+1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;;
+1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;;
+1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;;
+1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;;
+1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;;
+1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;;
+1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;;
+1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;;
+1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;;
+1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;;
+1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;;
+1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;;
+1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;;
+1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;;
+1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;;
+1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;;
+1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;;
+1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;;
+1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;;
+1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;;
+1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;;
+1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;;
+1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;;
+1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;;
+1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;;
+1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;;
+1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;;
+1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;;
+1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;;
+1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;;
+1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;;
+1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;;
+1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;;
+1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;;
+1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;;
+1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;;
+1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;;
+1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;;
+1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;;
+1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;;
+1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;;
+1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;;
+1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;;
+1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;;
+1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;;
+1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;;
+1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;;
+1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;;
+1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;;
+1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;;
+1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;;
+1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;;
+1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;;
+1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;;
+1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;;
+1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;;
+1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;;
+1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;;
+1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;;
+1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;;
+1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;;
+1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;;
+1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;;
+1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;;
+1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;;
+1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;;
+1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
+1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
+1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
+1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
+1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
+1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
+1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;;
+1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;;
+1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;;
+1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;;
+1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;;
+1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;;
+1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;;
+1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;;
+1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;;
+1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;;
+1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;;
+1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;;
+1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;;
+1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;;
+1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;;
+1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;;
+1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;;
+1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;;
+1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
+2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
+2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;;
+2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;;
+2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;;
+2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;;
+2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;;
+2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;;
+2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;;
+2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;;
+2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;;
+2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;;
+2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;;
+2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;;
+2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;;
+2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;;
+2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;;
+2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;;
+2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;;
+2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;;
+2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;;
+2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;;
+2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;;
+2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;;
+2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;;
+2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;;
+2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;;
+2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;;
+2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;;
+2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;;
+2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;;
+2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;;
+2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;;
+2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;;
+2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;;
+2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;;
+2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;;
+2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;;
+2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;;
+2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;;
+2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;;
+2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;;
+2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;;
+2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;;
+2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;;
+2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;;
+2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;;
+2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;;
+2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;;
+2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;;
+2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;;
+2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;;
+2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;;
+2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;;
+2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;;
+2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;;
+2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;;
+2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;;
+2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;;
+2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;;
+2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;;
+2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;;
+2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;;
+2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;;
+2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;;
+2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;;
+2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;;
+2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;;
+2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;;
+2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;;
+2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;;
+2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;;
+2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;;
+2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;;
+2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;;
+2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;;
+2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;;
+2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;;
+2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;;
+2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;;
+2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;;
+2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;;
+2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;;
+2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;;
+2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;;
+2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;;
+2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;;
+2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;;
+2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;;
+2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;;
+2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;;
+2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;;
+2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;;
+2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;;
+2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;;
+2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;;
+2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;;
+2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;;
+2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;;
+2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;;
+2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;;
+2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;;
+2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;;
+2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;;
+2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;;
+2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;;
+2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;2136A;;;;N;;;;;
+2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;;
+2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;;
+2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;;
+2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;;
+2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;;
+2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;;
+2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;;
+2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;;
+2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;;
+2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;;
+2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;;
+2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F33;;;;N;;;;;
+2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;;
+2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;;
+2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;;
+2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;;
+2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;;
+2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;;
+2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;;
+2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;;
+2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;;
+2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;;
+2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;;
+2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;;
+2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;;
+2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;;
+2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;;
+2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;;
+2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;;
+2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;;
+2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;;
+2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;;
+2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;;
+2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;;
+2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;;
+2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;;
+2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;;
+2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;;
+2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;;
+2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;;N;;;;;
+2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;;
+2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;;
+2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;;
+2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;;
+2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;;
+2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;;
+2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;;
+2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;;
+2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;;
+2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;;
+2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;;
+2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;;
+2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;;
+2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;;
+2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;;
+2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;;
+2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;;
+2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;;
+2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;;
+2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;;
+2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;;
+2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;;
+2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;;
+2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;;
+2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;;
+2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;;
+2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;;
+2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;;
+2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;;
+2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;;
+2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;;
+2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;;
+2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;;
+2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;;
+2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;;
+2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;;
+2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;;
+2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;;
+2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;;
+2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;;
+2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;;
+2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;;
+2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;;
+2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;;
+2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;;
+2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;;
+2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;;
+2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;;
+2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;;
+2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;;
+2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;;
+2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;;
+2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;;
+2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;;
+2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;;
+2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;;
+2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;;
+2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;;
+2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;;
+2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;;
+2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;;
+2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;;
+2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;;
+2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;;
+2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;;
+2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;;
+2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;;
+2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;;
+2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;;
+2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;;
+2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;;
+2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;;
+2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;;
+2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;;
+2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;;
+2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;;
+2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;;
+2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;;
+2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;;
+2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;;
+2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;;
+2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;;
+2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;;
+2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;;
+2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;;
+2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;;
+2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;;
+2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;;
+2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;;
+2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;;
+2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;;
+2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;;
+2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;;
+2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;;
+2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;;
+2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;;
+2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;;
+2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;;
+2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;;
+2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;;
+2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;;
+2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;;
+2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;;
+2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;;
+2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;;
+2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;;
+2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;;
+2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;;
+2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;;
+2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;;
+2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;;
+2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;;
+2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;;
+2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;;
+2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;;
+2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;;
+2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;;
+2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;;
+2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;;
+2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;;
+2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;;
+2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;;
+2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;;
+2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;;
+2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;;
+2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;;
+2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;;
+2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;;
+2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;;
+2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;;
+2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;;
+2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;;
+2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;;
+2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;;
+2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;;
+2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;;
+2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;;
+2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;;
+2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;;
+2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;;
+2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;;
+2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;;
+2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;43AB;;;;N;;;;;
+2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;;
+2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;;
+2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;;
+2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;;
+2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;;
+2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;;
+2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;;
+2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;;
+2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;;
+2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;;
+2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;;
+2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;;
+2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;;
+2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;;
+2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;;
+2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;;
+2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;;
+2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;;
+2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;;
+2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;;
+2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;;
+2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;;
+2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;;
+2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;;
+2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;;
+2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;;
+2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;;
+2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;;
+2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;;
+2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;;
+2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;;
+2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;;
+2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;;
+2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;;
+2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;;
+2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;;
+2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;;
+2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;;
+2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;;
+2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;;
+2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;;
+2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;;
+2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;;
+2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;;
+2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;;
+2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;;
+2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;;
+2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;;
+2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;;
+2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;;
+2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;;
+2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;;
+2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;;
+2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;;
+2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;;
+2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;;
+2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;;
+2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;;
+2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;;
+2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;;
+2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;;
+2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;;
+2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;;
+2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AAE;;;;N;;;;;
+2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;;
+2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;;
+2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;;
+2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;;
+2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;;
+2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;;
+2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;;
+2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;;
+2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;;
+2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;;
+2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;;
+2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;;
+2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;;
+2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;;
+2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;;
+2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;;
+2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;;
+2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;;
+2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;;
+2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;;
+2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;;
+2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;;
+2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;;
+2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;;
+2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;;
+2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;;
+2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;;
+2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;;
+2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;;
+2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;;
+2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;;
+2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;;
+2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;;
+2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;;
+2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;;
+2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;;
+2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;;
+2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;;
+2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;;
+2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;;
+2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;;
+2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;;
+2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;;
+2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;;
+2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;;
+2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;;
+2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;;
+2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;;
+2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;;
+2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;;
+2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;;
+2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;;
+2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;;
+2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;;
+2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;;
+2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;;
+2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;;
+2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;;
+2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;;
+2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;;
+2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;;
+2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;;
+2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;;
+2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;;
+2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;;
+2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;;
+2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;;
+2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;;
+2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;;
+2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;;
+2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;;
+2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;;
+2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;;
+2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;;
+2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;;
+2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;;
+2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;;
+2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;;
+2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;;
+2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;;
+2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;;
+2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;;
+2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;;
+2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;;
+2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;;
+2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;;
+2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;;
+2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;;
+2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;;
+2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;;
+2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;;
+2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;;
+2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;;
+2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;;
+2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;;
+2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;4D57;;;;N;;;;;
+2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;;
+2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;;
+2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;;
+2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;;
+2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;;
+2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;;
+2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;;
+2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;;
+2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;;
+2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;;
+2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;;
+2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;;
+2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;;
+2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;;
+2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;;
+2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;;
+2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;;
+2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;;
+2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;;
+2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;;
+2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;;
+2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;;
+2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;;
+2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;;
+2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;;
+2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;;
+2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;;
+2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;;
+2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;;
+2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;;
+2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;;
+2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;;
+2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;;
+2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;;
+2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;;
+2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;;
+2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;;
+2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;;
+2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;;
+2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;;
+2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;;
+2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;;
+2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;;
+2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;;
+2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;;
+2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;;
+2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;;
+2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;;
+2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;;
+2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;;
+2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;;
+2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;;
+2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;;
+2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;;
+2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;;
+2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;;
+2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;;
+2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;;
+2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;;
+2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;;
+2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;;
+2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;;
+2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;;
+2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;;
+2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;;
+2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;;
+2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;;
+2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;;
+2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;;
+2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;;
+2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;;
+2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;;
+2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;;
+2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;;
+2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;;
+2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;;
+2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;;
+2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;;
+2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;;
+2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;;
+2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;;
+2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;;
+2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;;
+2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;;
+2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;;
+2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;;
+2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;;
+2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;;
+2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;;
+2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;;
+2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;;
+2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;;
+2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;;
+2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;;
+E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;;
+E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;;
+E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;;
+E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;;
+E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;;
+E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;;
+E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;;
+E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;;
+E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;;
+E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
+E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
+E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;;
+E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;;
+E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;;
+E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;;
+E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;;
+E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;;
+E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;;
+E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;;
+E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;;
+E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;;
+E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;;
+E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;;
+E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;;
+E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;;
+E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;;
+E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;;
+E003A;TAG COLON;Cf;0;BN;;;;;N;;;;;
+E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;;
+E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;;
+E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;;
+E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;;
+E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;;
+E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;;
+E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;;
+E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;;
+E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;;
+E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;;
+E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;;
+E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;;
+E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;;
+E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;;
+E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;;
+E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;;
+E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;;
+E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;;
+E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;;
+E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;;
+E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;;
+E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;;
+E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;;
+E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;;
+E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;;
+E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;;
+E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;;
+E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;;
+E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;;
+E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;;
+E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;;
+E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;;
+E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
+E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;;
+E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
+E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;;
+E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;;
+E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;;
+E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;;
+E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;;
+E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;;
+E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;;
+E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;;
+E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;;
+E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;;
+E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;;
+E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;;
+E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;;
+E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;;
+E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;;
+E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;;
+E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;;
+E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;;
+E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;;
+E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;;
+E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;;
+E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;;
+E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;;
+E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;;
+E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;;
+E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;;
+E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;;
+E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;;
+E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;;
+E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
+E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;;
+E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
+E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;;
+E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;;
+F0000;<Plane 15 Private Use, First>;Co;0;L;;;;;N;;;;;
+FFFFD;<Plane 15 Private Use, Last>;Co;0;L;;;;;N;;;;;
+100000;<Plane 16 Private Use, First>;Co;0;L;;;;;N;;;;;
+10FFFD;<Plane 16 Private Use, Last>;Co;0;L;;;;;N;;;;;
diff --git a/src/com/ibm/icu/dev/demo/calendar/CalendarApp.java b/src/com/ibm/icu/dev/demo/calendar/CalendarApp.java
new file mode 100755
index 0000000..2961926
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/calendar/CalendarApp.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/calendar/CalendarApp.java,v $ 
+ * $Date: 2002/02/19 04:10:23 $ 
+ * $Revision: 1.7 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.calendar;
+
+import com.ibm.icu.dev.demo.*;
+
+import java.applet.Applet;
+import java.awt.*;
+import java.awt.event.*;
+import java.net.*;
+import java.io.*;
+
+import com.ibm.icu.util.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.demo.impl.*;
+
+/**
+ * CalendarApp demonstrates how Calendar works.
+ */
+public class CalendarApp extends DemoApplet
+{
+    /**
+     * The main function which defines the behavior of the CalendarDemo
+     * applet when an applet is started.
+     */
+    public static void main(String argv[]) {
+
+        new CalendarApp().showDemo();
+    }
+
+    /* This creates a CalendarFrame for the demo applet. */
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new CalendarFrame(applet);
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/calendar/CalendarCalc.java b/src/com/ibm/icu/dev/demo/calendar/CalendarCalc.java
new file mode 100755
index 0000000..0cb7f74
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/calendar/CalendarCalc.java
@@ -0,0 +1,586 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/calendar/CalendarCalc.java,v $ 
+ * $Date: 2002/02/19 04:10:23 $ 
+ * $Revision: 1.11 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.calendar;
+
+import com.ibm.icu.dev.demo.*;
+
+import java.applet.Applet;
+import java.util.Date;
+import java.awt.*;
+import java.awt.event.*;
+
+//import java.text.DateFormat;
+import com.ibm.icu.text.DateFormat;
+import java.text.ParsePosition;
+
+//import java.util.Calendar;
+import com.ibm.icu.util.Calendar;
+//import java.util.GregorianCalendar;
+import com.ibm.icu.util.GregorianCalendar;
+//import java.util.TimeZone;
+import com.ibm.icu.util.TimeZone;
+import java.util.Locale;
+
+import com.ibm.icu.util.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.demo.impl.*;
+
+import javax.swing.*;
+
+/**
+ * CalendarCalc demonstrates how Date/Time formatter works.
+ */
+public class CalendarCalc extends DemoApplet
+{
+    /**
+     * The main function which defines the behavior of the MultiCalendarDemo
+     * applet when an applet is started.
+     */
+    public static void main(String argv[]) {
+        new CalendarCalc().showDemo();
+    }
+
+    /**
+     * This creates a CalendarCalcFrame for the demo applet.
+     */
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new CalendarCalcFrame(applet);
+    }
+}
+
+/**
+ * A Frame is a top-level window with a title. The default layout for a frame
+ * is BorderLayout.  The CalendarCalcFrame class defines the window layout of
+ * MultiCalendarDemo.
+ */
+class CalendarCalcFrame extends Frame implements ActionListener
+{
+    private static final String     creditString = "";
+
+    static final Locale[] locales = DemoUtility.getG7Locales();
+
+    private static final boolean    DEBUG = false;
+
+    private DemoApplet              applet;
+    private long                    time = System.currentTimeMillis();
+
+    private static final RollAddField kRollAddFields[] = {
+        new RollAddField(Calendar.YEAR,                 "Year" ),
+        new RollAddField(Calendar.MONTH,                "Month" ),
+        new RollAddField(Calendar.WEEK_OF_MONTH,        "Week of Month" ),
+        new RollAddField(Calendar.WEEK_OF_YEAR,         "Week of Year" ),
+        new RollAddField(Calendar.DAY_OF_MONTH,         "Day of Month" ),
+        new RollAddField(Calendar.DAY_OF_WEEK,          "Day of Week" ),
+        new RollAddField(Calendar.DAY_OF_WEEK_IN_MONTH, "Day of Week in Month" ),
+        new RollAddField(Calendar.DAY_OF_YEAR,          "Day of Year" ),
+        new RollAddField(Calendar.AM_PM,                "AM/PM" ),
+        new RollAddField(Calendar.HOUR_OF_DAY,          "Hour of day" ),
+        new RollAddField(Calendar.HOUR,                 "Hour" ),
+        new RollAddField(Calendar.MINUTE,               "Minute" ),
+        new RollAddField(Calendar.SECOND,               "Second" ),
+    };
+
+    /**
+     * Constructs a new CalendarCalcFrame that is initially invisible.
+     */
+    public CalendarCalcFrame(DemoApplet applet)
+    {
+        super("Multiple Calendar Demo");
+        this.applet = applet;
+        init();
+        start();
+    }
+
+    /**
+     * Initializes the applet. You never need to call this directly, it
+     * is called automatically by the system once the applet is created.
+     */
+    public void init()
+    {
+        buildGUI();
+
+        patternText.setText( calendars[0].toPattern() );
+
+        // Force an update of the display
+        cityChanged();
+        millisFormat();
+        enableEvents(KeyEvent.KEY_RELEASED);
+        enableEvents(WindowEvent.WINDOW_CLOSING);
+    }
+
+    //------------------------------------------------------------
+    // package private
+    //------------------------------------------------------------
+    void addWithFont(Container container, Component foo, Font font) {
+        if (font != null)
+            foo.setFont(font);
+        container.add(foo);
+    }
+
+    /**
+     * Called to start the applet. You never need to call this method
+     * directly, it is called when the applet's document is visited.
+     */
+    public void start()
+    {
+        // do nothing
+    }
+
+    TextField patternText;
+
+    Choice dateMenu;
+    Choice localeMenu;
+
+    Button up;
+    Button down;
+
+    Checkbox getRoll;
+    Checkbox getAdd;
+
+    public void buildGUI()
+    {
+        setBackground(DemoUtility.bgColor);
+        setLayout(new FlowLayout()); // shouldn't be necessary, but it is.
+
+// TITLE
+        Label label1=new Label("Calendar Converter", Label.CENTER);
+        label1.setFont(DemoUtility.titleFont);
+        add(label1);
+        add(DemoUtility.createSpacer());
+
+// IO Panel
+        Panel topPanel = new Panel();
+        topPanel.setLayout(new FlowLayout());
+
+        CheckboxGroup group1= new CheckboxGroup();
+
+        // Set up the controls for each calendar we're demonstrating
+        for (int i = 0; i < calendars.length; i++)
+        {
+            Label label = new Label(calendars[i].name, Label.RIGHT);
+            label.setFont(DemoUtility.labelFont);
+            topPanel.add(label);
+
+            topPanel.add(calendars[i].text);
+
+            final int j = i;
+            calendars[i].text.addActionListener( new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    textChanged(j);
+                }
+            } );
+
+            calendars[i].rollAdd.setCheckboxGroup(group1);
+            topPanel.add(calendars[i].rollAdd);
+        }
+        calendars[0].rollAdd.setState(true);    // Make the first one selected
+
+        Label label4=new Label("Pattern", Label.RIGHT);
+        label4.setFont(DemoUtility.labelFont);
+        topPanel.add(label4);
+
+        patternText=new TextField(FIELD_COLUMNS);
+        patternText.setFont(DemoUtility.editFont);
+        topPanel.add(patternText);
+        topPanel.add(new Label(""));
+
+        DemoUtility.fixGrid(topPanel,3);
+        add(topPanel);
+        add(DemoUtility.createSpacer());
+
+// ROLL / ADD
+        Panel rollAddPanel=new Panel();
+        {
+            rollAddPanel.setLayout(new FlowLayout());
+
+            Panel rollAddBoxes = new Panel();
+            {
+                rollAddBoxes.setLayout(new GridLayout(2,1));
+                CheckboxGroup group2= new CheckboxGroup();
+                getRoll = new Checkbox("Roll",group2, false);
+                getAdd = new Checkbox("Add",group2, true);
+
+                rollAddBoxes.add(getRoll);
+                rollAddBoxes.add(getAdd);
+            }
+
+            Label dateLabel=new Label("Date Fields");
+            dateLabel.setFont(DemoUtility.labelFont);
+
+            dateMenu= new Choice();
+            dateMenu.setBackground(DemoUtility.choiceColor);
+            for (int i = 0; i < kRollAddFields.length; i++) {
+                dateMenu.addItem(kRollAddFields[i].name);
+                if (kRollAddFields[i].field == Calendar.MONTH) {
+                    dateMenu.select(i);
+                }
+            }
+
+            Panel upDown = new Panel();
+            {
+                upDown.setLayout(new GridLayout(2,1));
+
+                // *** If the images are not found, we use the label.
+                up = new Button("^");
+                down = new Button("v");
+                up.setBackground(DemoUtility.bgColor);
+                down.setBackground(DemoUtility.bgColor);
+                upDown.add(up);
+                upDown.add(down);
+                up.addActionListener(this);
+                down.addActionListener(this);
+            }
+
+            rollAddPanel.add(dateLabel);
+            rollAddPanel.add(dateMenu);
+            rollAddPanel.add(rollAddBoxes);
+            rollAddPanel.add(upDown);
+
+        }
+        Panel localePanel = new Panel();
+        {
+            // Make the locale popup menus
+            localeMenu= new Choice();
+            Locale defaultLocale = Locale.getDefault();
+            int bestMatch = -1, thisMatch = -1;
+            int selectMe = 0;
+            
+            for (int i = 0; i < locales.length; i++) {
+                if (i > 0 && locales[i].getLanguage().equals(locales[i-1].getLanguage()) ||
+                    i < locales.length - 1 &&
+                        locales[i].getLanguage().equals(locales[i+1].getLanguage()))
+                {
+                    localeMenu.addItem( locales[i].getDisplayName() );
+                } else {
+                    localeMenu.addItem( locales[i].getDisplayLanguage());
+                }
+                
+                thisMatch = DemoUtility.compareLocales(locales[i], defaultLocale);
+                
+                if (thisMatch >= bestMatch) {
+                    bestMatch = thisMatch;
+                    selectMe = i;
+                }
+            }
+            
+            localeMenu.setBackground(DemoUtility.choiceColor);
+            localeMenu.select(selectMe);
+
+            Label localeLabel =new Label("Display Locale");
+            localeLabel.setFont(DemoUtility.labelFont);
+
+            localePanel.add(localeLabel);
+            localePanel.add(localeMenu);
+            DemoUtility.fixGrid(localePanel,2);
+
+            localeMenu.addItemListener( new ItemListener() {
+                public void itemStateChanged(ItemEvent e) {
+                    Locale loc = locales[localeMenu.getSelectedIndex()];
+                    System.out.println("Change locale to " + loc.getDisplayName());
+
+                    for (int i = 0; i < calendars.length; i++) {
+                        calendars[i].setLocale(loc);
+                    }
+                    millisFormat();
+                }
+            } );
+        }
+        add(rollAddPanel);
+        add(DemoUtility.createSpacer());
+        add(localePanel);
+        add(DemoUtility.createSpacer());
+
+// COPYRIGHT
+        Panel copyrightPanel = new Panel();
+        addWithFont (copyrightPanel,new Label(DemoUtility.copyright1, Label.LEFT),
+            DemoUtility.creditFont);
+        DemoUtility.fixGrid(copyrightPanel,1);
+        add(copyrightPanel);
+    }
+
+    /**
+     * This function is called when users change the pattern text.
+     */
+    public void setFormatFromPattern() {
+        String timePattern = patternText.getText();
+
+        for (int i = 0; i < calendars.length; i++) {
+            calendars[i].applyPattern(timePattern);
+        }
+
+        millisFormat();
+    }
+
+    /**
+     * This function is called when it is necessary to parse the time
+     * string in one of the formatted date fields
+     */
+    public void textChanged(int index) {
+        String rightString = calendars[index].text.getText();
+
+        ParsePosition status = new ParsePosition(0);
+
+        if (rightString.length() == 0)
+        {
+            errorText("Error: no input to parse!");
+            return;
+        }
+
+        try {
+            Date date = calendars[index].format.parse(rightString, status);
+            time = date.getTime();
+        }
+        catch (Exception e) {
+            for (int i = 0; i < calendars.length; i++) {
+                if (i != index) {
+                    calendars[i].text.setText("ERROR");
+                }
+            }
+            errorText("Exception: " + e.getClass().toString() + " parsing: "+rightString);
+            return;
+        }
+
+        int start = calendars[index].text.getSelectionStart();
+        int end = calendars[index].text.getSelectionEnd();
+
+        millisFormat();
+
+        calendars[index].text.select(start,end);
+    }
+
+    /**
+     * This function is called when it is necessary to format the time
+     * in the "Millis" text field.
+     */
+    public void millisFormat() {
+        String out = "";
+
+        for (int i = 0; i < calendars.length; i++) {
+            try {
+                out = calendars[i].format.format(new Date(time));
+                calendars[i].text.setText(out);
+            }
+            catch (Exception e) {
+                calendars[i].text.setText("ERROR");
+                errorText("Exception: " + e.getClass().toString() + " formatting "
+                            + calendars[i].name + " " + time);
+            }
+        }
+    }
+
+
+    /**
+     * This function is called when users change the pattern text.
+     */
+    public void patternTextChanged() {
+        setFormatFromPattern();
+    }
+
+    /**
+     * This function is called when users select a new representative city.
+     */
+    public void cityChanged() {
+        TimeZone timeZone = TimeZone.getDefault();
+
+        for (int i = 0; i < calendars.length; i++) {
+            calendars[i].format.setTimeZone(timeZone);
+        }
+        millisFormat();
+    }
+
+    /**
+     * This function is called when users select a new time field
+     * to add or roll its value.
+     */
+    public void dateFieldChanged(boolean up) {
+        int field = kRollAddFields[dateMenu.getSelectedIndex()].field;
+
+        for (int i = 0; i < calendars.length; i++)
+        {
+            if (calendars[i].rollAdd.getState())
+            {
+                Calendar c = calendars[i].calendar;
+                c.setTime(new Date(time));
+
+                if (getAdd.getState()) {
+                    c.add(field, up ? 1 : -1);
+                } else {
+                    c.roll(field, up);
+                }
+
+                time = c.getTime().getTime();
+                millisFormat();
+                break;
+            }
+        }
+    }
+
+    /**
+     * Print out the error message while debugging this program.
+     */
+    public void errorText(String s)
+    {
+        if (true) {
+            System.out.println(s);
+        }
+    }
+    
+    /**
+     * Called if an action occurs in the CalendarCalcFrame object.
+     */
+    public void actionPerformed(ActionEvent evt)
+    {
+        // *** Button events are handled here.
+        Object obj = evt.getSource();
+        System.out.println("action " + obj);
+        if (obj instanceof Button) {
+            if (evt.getSource() == up) {
+                dateFieldChanged(false);
+            } else
+                if (evt.getSource() == down) {
+                    dateFieldChanged(true);
+            }
+        }
+    }
+    
+    /**
+     * Handles the event. Returns true if the event is handled and should not
+     * be passed to the parent of this component. The default event handler
+     * calls some helper methods to make life easier on the programmer.
+     */
+    protected void processKeyEvent(KeyEvent evt)
+    {
+        System.out.println("key " + evt);
+        if (evt.getID() == KeyEvent.KEY_RELEASED) { 
+            if (evt.getSource() == patternText) {
+                patternTextChanged();
+            }
+            else {
+                for (int i = 0; i < calendars.length; i++) {
+                    if (evt.getSource() == calendars[i].text) {
+                        textChanged(i);
+                    }
+                }
+            }
+        }
+    }
+    
+    protected void processWindowEvent(WindowEvent evt) 
+    {
+        System.out.println("window " + evt);
+        if (evt.getID() == WindowEvent.WINDOW_CLOSING && 
+            evt.getSource() == this) {
+            this.hide();
+            this.dispose();
+
+            if (applet != null) {
+               applet.demoClosed();
+            } else System.exit(0);
+        }
+    }
+    
+    /*
+    protected void processEvent(AWTEvent evt)
+    {
+        if (evt.getID() == AWTEvent. Event.ACTION_EVENT && evt.target == up) {
+            dateFieldChanged(true);
+            return true;
+        }
+        else if (evt.id == Event.ACTION_EVENT && evt.target == down) {
+            dateFieldChanged(false);
+            return true;
+        }
+    }
+    */
+
+    private static final int        FIELD_COLUMNS = 35;
+    private static final String     DEFAULT_FORMAT = "EEEE MMMM d, yyyy G";
+
+
+    class CalendarRec {
+        public CalendarRec(String nameStr, Calendar cal)
+        {
+            name = nameStr;
+            calendar = cal;
+            rollAdd = new Checkbox();
+
+            text = new JTextField("",FIELD_COLUMNS);
+            text.setFont(DemoUtility.editFont);
+
+            format = DateFormat.getDateInstance(cal, DateFormat.FULL,
+                                                Locale.getDefault());
+            //format.applyPattern(DEFAULT_FORMAT);
+        }
+
+        public void setLocale(Locale loc) {
+            String pattern = toPattern();
+
+            format = DateFormat.getDateInstance(calendar, DateFormat.FULL,
+                                                loc);
+            applyPattern(pattern);
+        }
+
+        public void applyPattern(String pattern) {
+            if (format instanceof SimpleDateFormat) {
+                ((SimpleDateFormat)format).applyPattern(pattern);
+//hey {al} - 
+//            } else if (format instanceof java.text.SimpleDateFormat) {
+//                ((java.text.SimpleDateFormat)format).applyPattern(pattern);
+            }
+        }
+        
+        private String toPattern() {
+            if (format instanceof SimpleDateFormat) {
+                return ((SimpleDateFormat)format).toPattern();
+//hey {al} - 
+//            } else if (format instanceof java.text.SimpleDateFormat) {
+//                return ((java.text.SimpleDateFormat)format).toPattern();
+            } else {
+                return "";
+            }
+        }
+
+        Calendar  calendar;
+        DateFormat          format;
+        String              name;
+        JTextField           text;
+        Checkbox            rollAdd;
+    };
+
+    private final CalendarRec[] calendars = {
+        new CalendarRec("Gregorian",        new GregorianCalendar()),
+        new CalendarRec("Hebrew",           new HebrewCalendar()),
+        new CalendarRec("Islamic (civil)",  makeIslamic(true)),
+        new CalendarRec("Islamic (true)",   makeIslamic(false)),
+        new CalendarRec("Buddhist",         new BuddhistCalendar()),
+        new CalendarRec("Japanese",         new JapaneseCalendar()),
+//        new CalendarRec("Chinese",          new ChineseCalendar()),
+    };
+
+    static private final Calendar makeIslamic(boolean civil) {
+        IslamicCalendar cal = new IslamicCalendar();
+        cal.setCivil(civil);
+        return cal;
+    };
+};
+
+class RollAddField {
+    RollAddField(int field, String name) {
+        this.field = field;
+        this.name = name;
+    }
+    int field;
+    String name;
+};
diff --git a/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java b/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java
new file mode 100755
index 0000000..6f04907
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java
@@ -0,0 +1,436 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java,v $ 
+ * $Date: 2002/02/19 04:10:23 $ 
+ * $Revision: 1.10 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.calendar;
+
+import com.ibm.icu.dev.demo.*;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.HebrewCalendar;
+import com.ibm.icu.util.BuddhistCalendar;
+import com.ibm.icu.util.JapaneseCalendar;
+import com.ibm.icu.util.IslamicCalendar;
+import com.ibm.icu.text.SimpleDateFormat;
+//import java.util.SimpleTimeZone;
+import com.ibm.icu.util.SimpleTimeZone;
+import java.applet.Applet;
+import java.awt.*;
+import java.awt.event.*;
+import java.net.*;
+import java.io.*;
+//import java.text.DateFormat;
+import com.ibm.icu.text.DateFormat;
+import java.text.MessageFormat;
+//import java.util.Calendar;
+import com.ibm.icu.util.Calendar;
+import java.util.Date;
+//import java.util.GregorianCalendar;
+import com.ibm.icu.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+//import java.util.TimeZone;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.dev.demo.impl.*;
+
+/**
+ * A Frame is a top-level window with a title. The default layout for a frame
+ * is BorderLayout.  The CalendarFrame class defines the window layout of
+ * CalendarDemo.
+ */
+class CalendarFrame extends Frame
+{
+    private static final boolean DEBUG = false;
+
+    private DemoApplet applet;
+
+    /**
+     * Constructs a new CalendarFrame that is initially invisible.
+     */
+    public CalendarFrame(DemoApplet myApplet)
+    {
+        super("Calendar Demo");
+        this.applet = myApplet;
+        init();
+
+        // When the window is closed, we want to shut down the applet or application
+        addWindowListener(
+            new WindowAdapter() {
+                public void windowClosing(WindowEvent e) {
+                    setVisible(false);
+                    dispose();
+
+                    if (applet != null) {
+                        applet.demoClosed();
+                    } else System.exit(0);
+                }
+            } );
+    }
+
+    private Choice          displayMenu;
+    private Locale[]        locales = DemoUtility.getG7Locales();
+
+    private Calendar        calendars[]   = new Calendar[2];
+    private Choice          calMenu[]     = new Choice[2];
+    private ColoredLabel    monthLabel[]  = new ColoredLabel[2];
+    private DateFormat      monthFormat[] = new DateFormat[2];
+
+    private Button          prevYear;
+    private Button          prevMonth;
+    private Button          gotoToday;
+    private Button          nextMonth;
+    private Button          nextYear;
+    private CalendarPanel   calendarPanel;
+
+    private static void add(Container container, Component component,
+                            GridBagLayout g, GridBagConstraints c,
+                            int gridwidth, int weightx)
+    {
+        c.gridwidth = gridwidth;
+        c.weightx = weightx;
+        g.setConstraints(component, c);
+        container.add(component);
+    }
+
+    /**
+     * Initializes the applet. You never need to call this directly, it
+     * is called automatically by the system once the applet is created.
+     */
+    public void init() {
+        setBackground(DemoUtility.bgColor);
+        setLayout(new BorderLayout(10,10));
+
+        Panel topPanel = new Panel();
+        GridBagLayout g = new GridBagLayout();
+        topPanel.setLayout(g);
+        GridBagConstraints c = new GridBagConstraints();
+        c.fill = GridBagConstraints.HORIZONTAL;
+
+        // Build the two menus for selecting which calendar is displayed,
+        // plus the month/year label for each calendar
+        for (int i = 0; i < 2; i++) {
+            calMenu[i] = new Choice();
+            for (int j = 0; j < CALENDARS.length; j++) {
+                calMenu[i].addItem(CALENDARS[j].name);
+            }
+            calMenu[i].setBackground(DemoUtility.choiceColor);
+            calMenu[i].select(i);
+            calMenu[i].addItemListener(new CalMenuListener());
+
+            // Label for the current month name
+            monthLabel[i] = new ColoredLabel("", COLORS[i]);
+            monthLabel[i].setFont(DemoUtility.titleFont);
+
+            // And the default calendar to use for this slot
+            calendars[i] = CALENDARS[i].calendar;
+
+            add(topPanel, calMenu[i], g, c, 5, 0);
+            add(topPanel, monthLabel[i], g, c, GridBagConstraints.REMAINDER, 1);
+        }
+
+        // Now add the next/previous year/month buttons:
+        prevYear = new Button("<<");
+        prevYear.addActionListener(new AddAction(Calendar.YEAR, -1));
+
+        prevMonth = new Button("<");
+        prevMonth.addActionListener(new AddAction(Calendar.MONTH, -1));
+
+        gotoToday = new Button("Today");
+        gotoToday.addActionListener( new ActionListener()
+        {
+            public void actionPerformed(ActionEvent e) {
+                calendarPanel.setDate( new Date() );
+                updateMonthName();
+            }
+        } );
+
+        nextMonth = new Button(">");
+        nextMonth.addActionListener(new AddAction(Calendar.MONTH, 1));
+
+        nextYear = new Button(">>");
+        nextYear.addActionListener(new AddAction(Calendar.YEAR, 1));
+
+        c.fill = GridBagConstraints.NONE;
+        add(topPanel, prevYear,  g, c, 1, 0);
+        add(topPanel, prevMonth, g, c, 1, 0);
+        add(topPanel, gotoToday, g, c, 1, 0);
+        add(topPanel, nextMonth, g, c, 1, 0);
+        add(topPanel, nextYear,  g, c, 1, 0);
+
+        // Now add the menu for selecting the display language
+        Panel displayPanel = new Panel();
+        {
+            displayMenu = new Choice();
+            Locale defaultLocale = Locale.getDefault();
+            int bestMatch = -1, thisMatch = -1;
+            int selectMe = 0;
+            
+            for (int i = 0; i < locales.length; i++) {
+                if (i > 0 &&
+                        locales[i].getLanguage().equals(locales[i-1].getLanguage()) ||
+                    i < locales.length - 1 &&
+                        locales[i].getLanguage().equals(locales[i+1].getLanguage()))
+                {
+                    displayMenu.addItem( locales[i].getDisplayName() );
+                } else {
+                    displayMenu.addItem( locales[i].getDisplayLanguage());
+                }
+
+                thisMatch = DemoUtility.compareLocales(locales[i], defaultLocale);
+                
+                if (thisMatch >= bestMatch) {
+                    bestMatch = thisMatch;
+                    selectMe = i;
+                }
+            }
+            
+            displayMenu.setBackground(DemoUtility.choiceColor);
+            displayMenu.select(selectMe);
+
+            displayMenu.addItemListener( new ItemListener()
+            {
+                 public void itemStateChanged(ItemEvent e) {
+                    Locale loc = locales[displayMenu.getSelectedIndex()];
+                    calendarPanel.setLocale( loc );
+                    monthFormat[0] = monthFormat[1] = null;
+                    updateMonthName();
+                    repaint();
+                }
+            } );
+
+            Label l1 = new Label("Display Language:", Label.RIGHT);
+            l1.setFont(DemoUtility.labelFont);
+
+            displayPanel.setLayout(new FlowLayout());
+            displayPanel.add(l1);
+            displayPanel.add(displayMenu);
+
+        }
+        c.fill = GridBagConstraints.NONE;
+        c.anchor = GridBagConstraints.EAST;
+
+        add(topPanel, displayPanel, g, c, GridBagConstraints.REMAINDER, 0);
+
+        // The title, buttons, etc. go in a panel at the top of the window
+        add("North", topPanel);
+
+        // The copyright notice goes at the bottom of the window
+        Label copyright = new Label(DemoUtility.copyright1, Label.LEFT);
+        copyright.setFont(DemoUtility.creditFont);
+        add("South", copyright);
+
+        // Now create the big calendar panel and stick it in the middle
+        calendarPanel = new CalendarPanel( locales[displayMenu.getSelectedIndex()] );
+        add("Center", calendarPanel);
+
+        for (int i = 0; i < 2; i++) {
+            calendarPanel.setCalendar(i, calendars[i]);
+            calendarPanel.setColor(i, COLORS[i]);
+        }
+
+        updateMonthName();
+    };
+
+
+    private void updateMonthName()
+    {
+            for (int i = 0; i < 2; i++) {
+                try {
+                    if (monthFormat[i] == null) {     // TODO: optimize
+                        DateFormat f = DateFormat.getDateTimeInstance(
+                                                calendars[i], DateFormat.MEDIUM, -1,
+                                                locales[displayMenu.getSelectedIndex()]);
+                        if (f instanceof com.ibm.icu.text.SimpleDateFormat) {
+                            com.ibm.icu.text.SimpleDateFormat f1 = (com.ibm.icu.text.SimpleDateFormat) f;
+                            f1.applyPattern("MMMM, yyyy G");
+                            f1.setTimeZone(new SimpleTimeZone(0, "UTC"));
+//hey {al} -
+//                        } else if (f instanceof java.text.SimpleDateFormat) {
+//                            java.text.SimpleDateFormat f1 = (java.text.SimpleDateFormat) f;
+//                            f1.applyPattern("MMMM, yyyy G");
+//                            f1.setTimeZone(new SimpleTimeZone(0, "UTC"));
+                        }
+                        monthFormat[i] = f;
+                    }
+                } catch (ClassCastException e) {
+                    //hey {lw} - there's something wrong in this routine that cuases exceptions.
+                    System.out.println(e);
+                }
+
+                monthLabel[i].setText( monthFormat[i].format( calendarPanel.firstOfMonth() ));
+            }
+    }
+
+    /**
+     * CalMenuListener responds to events in the two popup menus that select
+     * the calendar systems to be used in the display.  It figures out which
+     * of the two menus the event occurred in and updates the corresponding
+     * element of the calendars[] array to match the new selection.
+     */
+    private class CalMenuListener implements ItemListener
+    {
+         public void itemStateChanged(ItemEvent e)
+         {
+            for (int i = 0; i < calMenu.length; i++)
+            {
+                if (e.getItemSelectable() == calMenu[i])
+                {
+                    // We found the menu that the event happened in.
+                    // Figure out which new calendar they selected.
+                    Calendar newCal = CALENDARS[ calMenu[i].getSelectedIndex() ].calendar;
+
+                    if (newCal != calendars[i])
+                    {
+                        // If any of the other menus are set to the same new calendar
+                        // we're about to use for this menu, set them to the current
+                        // calendar from *this* menu so we won't have two the same
+                        for (int j = 0; j < calendars.length; j++) {
+                            if (j != i && calendars[j] == newCal) {
+                                calendars[j] = calendars[i];
+                                calendarPanel.setCalendar(j, calendars[j]);
+                                monthFormat[j] = null;
+
+                                for (int k = 0; k < CALENDARS.length; k++) {
+                                    if (calendars[j] == CALENDARS[k].calendar) {
+                                        calMenu[j].select(k);
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                        // Now update this menu to use the new calendar the user selected
+                        calendars[i] = newCal;
+                        calendarPanel.setCalendar(i, newCal);
+                        monthFormat[i] = null;
+
+                        updateMonthName();
+                    }
+                    break;
+                }
+            }
+         }
+    };
+
+    /**
+     * AddAction handles the next/previous year/month buttons...
+     */
+    private class AddAction implements ActionListener {
+        AddAction(int field, int amount) {
+            this.field = field;
+            this.amount = amount;
+        }
+
+        public void actionPerformed(ActionEvent e) {
+            calendarPanel.add(field, amount);
+            updateMonthName();
+        }
+
+        private int field, amount;
+    }
+
+    /**
+     * ColoredLabel is similar to java.awt.Label, with two differences:
+     *
+     *  - You can set its text color
+     *
+     *  - It draws text using drawString rather than using a host-specific
+     *    "Peer" object like AWT does.  On 1.2, using drawString gives
+     *    us Bidi reordering for free.
+     */
+    static private class ColoredLabel extends Component {
+        public ColoredLabel(String label) {
+            text = label;
+        }
+
+        public ColoredLabel(String label, Color c) {
+            text = label;
+            color = c;
+        }
+
+        public void setText(String label) {
+            text = label;
+            repaint();
+        }
+
+        public void setFont(Font f) {
+            font = f;
+            repaint();
+        }
+
+        public void paint(Graphics g) {
+            FontMetrics fm = g.getFontMetrics(font);
+
+            Rectangle bounds = getBounds();
+
+            g.setColor(color);
+            g.setFont(font);
+            g.drawString(text, fm.stringWidth("\u00a0"),
+                         bounds.height/2 + fm.getHeight()
+                         - fm.getAscent() + fm.getLeading()/2);
+        }
+
+        public Dimension getPreferredSize() {
+            return getMinimumSize();
+        }
+
+        public Dimension getMinimumSize() {
+            FontMetrics fm = getFontMetrics(font);
+
+            return new Dimension( fm.stringWidth(text) + 2*fm.stringWidth("\u00a0"),
+                                  fm.getHeight() + fm.getLeading()*2);
+        }
+
+        String text;
+        Color color = Color.black;
+        Font font = DemoUtility.labelFont;
+    }
+
+    /**
+     * Print out the error message while debugging this program.
+     */
+    public void errorText(String s)
+    {
+        if (DEBUG)
+        {
+            System.out.println(s);
+        }
+    }
+
+    class CalendarRec {
+        public CalendarRec(String nameStr, Calendar cal)
+        {
+            name = nameStr;
+            calendar = cal;
+        }
+
+        Calendar  calendar;
+        String              name;
+    };
+
+    private final CalendarRec[] CALENDARS = {
+        new CalendarRec("Gregorian Calendar",       new GregorianCalendar()),
+        new CalendarRec("Hebrew Calendar",          new HebrewCalendar()),
+        new CalendarRec("Islamic Calendar",         makeIslamic(false)),
+        new CalendarRec("Islamic Civil Calendar ",  makeIslamic(true)),
+        new CalendarRec("Buddhist Calendar",        new BuddhistCalendar()),
+        new CalendarRec("Japanese Calendar",        new JapaneseCalendar()),
+    };
+
+    static private final Calendar makeIslamic(boolean civil) {
+        IslamicCalendar cal = new IslamicCalendar();
+        cal.setCivil(civil);
+        return cal;
+    };
+
+    static final Color[] COLORS = { Color.blue, Color.black };
+}
+
diff --git a/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java b/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java
new file mode 100755
index 0000000..1d05c59
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java
@@ -0,0 +1,371 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java,v $ 
+ * $Date: 2002/02/19 04:10:23 $ 
+ * $Revision: 1.9 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.calendar;
+
+import com.ibm.icu.dev.demo.*;
+
+import java.applet.Applet;
+import java.awt.*;
+import java.awt.event.*;
+//import java.util.*;
+import java.net.*;
+import java.io.*;
+
+//import java.text.DateFormat;
+import com.ibm.icu.text.DateFormat;
+//import java.util.SimpleTimeZone;
+import com.ibm.icu.util.SimpleTimeZone;
+//import java.util.*;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.util.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.demo.impl.*;
+
+class CalendarPanel extends Canvas {
+
+    public CalendarPanel( Locale locale ) {
+        setLocale(locale);
+    }
+
+    public void setLocale(Locale locale) {
+        if (fDisplayLocale == null || !fDisplayLocale.equals(locale)) {
+            fDisplayLocale = locale;
+            dirty = true;
+
+            for (int i = 0; i < fCalendar.length; i++) {
+                if (fCalendar[i] != null) {
+                    fSymbols[i] = new DateFormatSymbols(fCalendar[i],
+                                                        fDisplayLocale);
+                }
+            }
+            String lang = locale.getLanguage();
+            leftToRight = !(lang.equals("iw") || lang.equals("ar"));
+
+            repaint();
+        }
+    }
+
+    public void setDate(Date date) {
+        fStartOfMonth = date;
+        dirty = true;
+        repaint();
+    }
+
+    public void add(int field, int delta)
+    {
+        synchronized(fCalendar) {
+            fCalendar[0].setTime(fStartOfMonth);
+            fCalendar[0].add(field, delta);
+            fStartOfMonth = fCalendar[0].getTime();
+        }
+        dirty = true;
+        repaint();
+    }
+
+    public void setColor(int index, Color c) {
+        fColor[index] = c;
+        repaint();
+    }
+
+    public void setCalendar(int index, Calendar c) {
+        Date date = (fCalendar[index] == null) ? new Date()
+                                               : fCalendar[index].getTime();
+
+        fCalendar[index] = c;
+        fCalendar[index].setTime(date);
+
+        fSymbols[index] = new DateFormatSymbols(c, fDisplayLocale);
+        dirty = true;
+        repaint();
+    }
+
+    public Calendar getCalendar(int index) {
+        return fCalendar[index];
+    }
+
+    public Locale getDisplayLocale() {
+        return fDisplayLocale;
+    }
+
+    public Date firstOfMonth() {
+        return fStartOfMonth;
+    }
+
+    private Date startOfMonth(Date dateInMonth)
+    {
+        synchronized(fCalendar) {
+            fCalendar[0].setTime(dateInMonth);
+
+            int era = fCalendar[0].get(Calendar.ERA);
+            int year = fCalendar[0].get(Calendar.YEAR);
+            int month = fCalendar[0].get(Calendar.MONTH);
+
+            fCalendar[0].clear();
+            fCalendar[0].set(Calendar.ERA, era);
+            fCalendar[0].set(Calendar.YEAR, year);
+            fCalendar[0].set(Calendar.MONTH, month);
+            fCalendar[0].set(Calendar.DATE, 1);
+
+            return fCalendar[0].getTime();
+        }
+    }
+
+    private void calculate()
+    {
+        //
+        // As a workaround for JDK 1.1.3 and below, where Calendars and time
+        // zones are a bit goofy, always set my calendar's time zone to UTC.
+        // You would think I would want to do this in the "set" function above,
+        // but if I do that, the program hangs when this class is loaded,
+        // perhaps due to some sort of static initialization ordering problem.
+        // So I do it here instead.
+        //
+        fCalendar[0].setTimeZone(new SimpleTimeZone(0, "UTC"));
+
+        Calendar c = (Calendar)fCalendar[0].clone(); // Temporary copy
+
+        fStartOfMonth = startOfMonth(fStartOfMonth);
+
+        // Stash away a few useful constants for this calendar and display
+        minDay = c.getMinimum(Calendar.DAY_OF_WEEK);
+        daysInWeek = c.getMaximum(Calendar.DAY_OF_WEEK) - minDay + 1;
+
+        firstDayOfWeek = Calendar.getInstance(fDisplayLocale).getFirstDayOfWeek();
+
+        // Stash away a Date for the start of this month
+
+        // Find the day of week of the first day in this month
+        c.setTime(fStartOfMonth);
+        firstDayInMonth = c.get(Calendar.DAY_OF_WEEK);
+        int firstWeek = c.get(Calendar.WEEK_OF_MONTH);
+
+        // Now find the # of days in the month
+        c.roll(Calendar.DATE, false);
+        daysInMonth = c.get(Calendar.DATE);
+
+        // Finally, find the end of the month, i.e. the start of the next one
+        c.roll(Calendar.DATE, true);
+        c.add(Calendar.MONTH, 1);
+        c.getTime();        // JDK 1.1.2 bug workaround
+        c.add(Calendar.SECOND, -1);
+        Date endOfMonth = c.getTime();
+        endOfMonth = null;
+        int lastWeek = c.get(Calendar.WEEK_OF_MONTH);
+
+        // Calculate the number of full or partial weeks in this month.
+        numWeeks = lastWeek - firstWeek + 1;
+
+        dirty = false;
+    }
+
+    static final int XINSET = 4;
+    static final int YINSET = 2;
+
+    /*
+     * Convert from the day number within a month (1-based)
+     * to the cell coordinates on the calendar (0-based)
+     */
+    private void dateToCell(int date, Point pos)
+    {
+        int cell = (date + firstDayInMonth - firstDayOfWeek - minDay);
+        if (firstDayInMonth < firstDayOfWeek) {
+            cell += daysInWeek;
+        }
+
+        pos.x = cell % daysInWeek;
+        pos.y = cell / daysInWeek;
+    }
+    private Point dateToCell(int date) {
+        Point p = new Point(0,0);
+        dateToCell(date, p);
+        return p;
+    }
+
+    public void paint(Graphics g) {
+
+        if (dirty) {
+            calculate();
+        }
+
+        Point cellPos = new Point(0,0);     // Temporary variable
+        Dimension d = this.getSize();
+
+        g.setColor(Color.lightGray);
+        g.fillRect(0,0,d.width,d.height);
+
+        // Draw the day names at the top
+        g.setColor(Color.black);
+        g.setFont(DemoUtility.labelFont);
+        FontMetrics fm = g.getFontMetrics();
+        int labelHeight = fm.getHeight() + YINSET * 2;
+
+        int v = fm.getAscent() + YINSET;
+        for (int i = 0; i < daysInWeek; i++) {
+            int dayNum = (i + minDay + firstDayOfWeek - 2) % daysInWeek + 1;
+            String dayName = fSymbols[0].getWeekdays()[dayNum];
+
+
+            double h;
+            if (leftToRight) {
+                h = d.width*(i + 0.5) / daysInWeek;
+            } else {
+                h = d.width*(daysInWeek - i - 0.5) / daysInWeek;
+            }
+            h -= fm.stringWidth(dayName) / 2;
+
+            g.drawString(dayName, (int)h, v);
+        }
+
+        double cellHeight = (d.height - labelHeight - 1) / numWeeks;
+        double cellWidth = (double)(d.width - 1) / daysInWeek;
+
+        // Draw a white background in the part of the calendar
+        // that displays this month.
+        // First figure out how much of the first week should be shaded.
+        {
+            g.setColor(Color.white);
+            dateToCell(1, cellPos);
+            int width = (int)(cellPos.x*cellWidth);  // Width of unshaded area
+
+            if (leftToRight) {
+                g.fillRect((int)(width), labelHeight ,
+                           d.width - width, (int)cellHeight);
+            } else {
+                g.fillRect(0, labelHeight ,
+                           d.width - width, (int)cellHeight);
+            }
+
+            // All of the intermediate weeks get shaded completely
+            g.fillRect(0, (int)(labelHeight + cellHeight),
+                        d.width, (int)(cellHeight * (numWeeks - 2)));
+
+            // Now figure out the last week.
+            dateToCell(daysInMonth, cellPos);
+            width = (int)((cellPos.x+1)*cellWidth);  // Width of shaded area
+
+            if (leftToRight) {
+                g.fillRect(0, (int)(labelHeight + (numWeeks-1) * cellHeight),
+                           width, (int)cellHeight);
+            } else {
+                g.fillRect(d.width - width, (int)(labelHeight + (numWeeks-1) * cellHeight),
+                           width, (int)cellHeight);
+            }
+
+        }
+        // Draw the X/Y grid lines
+        g.setColor(Color.black);
+        for (int i = 0; i <= numWeeks; i++) {
+            int y = (int)(labelHeight + i * cellHeight);
+            g.drawLine(0, y, d.width - 1, y);
+        }
+        for (int i = 0; i <= daysInWeek; i++) {
+            int x = (int)(i * cellWidth);
+            g.drawLine(x, labelHeight, x, d.height - 1);
+        }
+
+        // Now loop through all of the days in the month, figure out where
+        // they go in the grid, and draw the day # for each one
+
+        // Figure out the date of the first cell in the calendar display
+        int cell = (1 + firstDayInMonth - firstDayOfWeek - minDay);
+        if (firstDayInMonth < firstDayOfWeek) {
+            cell += daysInWeek;
+        }
+
+        Calendar c = (Calendar)fCalendar[0].clone();
+        c.setTime(fStartOfMonth);
+        c.add(Calendar.DATE, -cell);
+
+        StringBuffer buffer = new StringBuffer();
+
+        for (int row = 0; row < numWeeks; row++) {
+            for (int col = 0; col < daysInWeek; col++) {
+
+                g.setFont(DemoUtility.numberFont);
+                g.setColor(Color.black);
+                fm = g.getFontMetrics();
+
+                int cellx;
+                if (leftToRight) {
+                    cellx = (int)((col) * cellWidth);
+                } else {
+                    cellx = (int)((daysInWeek - col - 1) * cellWidth);
+                }
+
+                int celly = (int)(row * cellHeight + labelHeight);
+
+                for (int i = 0; i < 2; i++) {
+                    fCalendar[i].setTime(c.getTime());
+
+                    int date = fCalendar[i].get(Calendar.DATE);
+                    buffer.setLength(0);
+                    buffer.append(date);
+                    String dayNum = buffer.toString();
+
+                    int x;
+
+                    if (leftToRight) {
+                        x = cellx + (int)cellWidth - XINSET - fm.stringWidth(dayNum);
+                    } else {
+                        x = cellx + XINSET;
+                    }
+                    int y = celly + + fm.getAscent() + YINSET + i * fm.getHeight();
+
+                    if (fColor[i] != null) {
+                        g.setColor(fColor[i]);
+                    }
+                    g.drawString(dayNum, x, y);
+
+                    if (date == 1 || row == 0 && col == 0) {
+                        g.setFont(DemoUtility.numberFont);
+                        String month = fSymbols[i].getMonths()[
+                                            fCalendar[i].get(Calendar.MONTH)];
+
+                        if (leftToRight) {
+                            x = cellx + XINSET;
+                        } else {
+                            x = cellx + (int)cellWidth - XINSET - fm.stringWidth(month);
+                        }
+                        g.drawString(month, x, y);
+                    }
+                }
+
+                c.add(Calendar.DATE, 1);
+            }
+        }
+    }
+
+    // Important state variables
+    private Calendar[]          fCalendar = new Calendar[4];
+    private Color[]             fColor = new Color[4];
+
+    private Locale              fDisplayLocale;
+    private DateFormatSymbols[] fSymbols = new DateFormatSymbols[4];
+
+    private Date                fStartOfMonth = new Date();     // 00:00:00 on first day of month
+
+    // Cached calculations to make drawing faster.
+    private transient int       minDay;           // Minimum legal day #
+    private transient int       daysInWeek;       // # of days in a week
+    private transient int       firstDayOfWeek;   // First day to display in week
+    private transient int       numWeeks;         // # full or partial weeks in month
+    private transient int       daysInMonth;      // # days in this month
+    private transient int       firstDayInMonth;  // Day of week of first day in month
+    private transient boolean   leftToRight;
+
+    private transient boolean dirty = true;
+}
diff --git a/src/com/ibm/icu/dev/demo/calendar/package.html b/src/com/ibm/icu/dev/demo/calendar/package.html
new file mode 100755
index 0000000..d652001
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/calendar/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/calendar/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 06:28:48 $
+-->
+</head>
+<body bgcolor="white">
+Calendar demo applications including date/time arithmetic.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java b/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java
new file mode 100755
index 0000000..62b121b
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java
@@ -0,0 +1,551 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java,v $ 
+ * $Date: 2002/02/16 03:04:55 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.demo.holiday;
+
+import com.ibm.icu.dev.demo.*;
+import java.awt.*;
+
+/**
+ * Various graphical borders. The border itself is a Panel so that it can
+ * contain other Components (i.e. it borders something). You use the
+ * HolidayBorderPanel like any other Panel: you set the layout that you prefer and
+ * add Components to it. Beware that a null layout does not obey the insets
+ * of the panel so if you use null layouts, adjust your measurements to
+ * handle the border by calling insets().
+ *
+ * @author  Andy Clark, Taligent Inc.
+ * @version 1.0
+ */
+public class HolidayBorderPanel extends Panel {
+    // Constants
+
+    /** Solid border. */
+    public final static int SOLID = 0;
+    /** A raised border. */
+    public final static int RAISED = 1;
+    /** A lowered border. */
+    public final static int LOWERED = 2;
+    /** An etched in border. */
+    public final static int IN = 3;
+    /** An etched out border. */
+    public final static int OUT = 4;
+
+    /** Left alignment. */
+    public final static int LEFT = 0;
+    /** Center alignment. */
+    public final static int CENTER = 1;
+    /** Right alignment. */
+    public final static int RIGHT = 2;
+
+    /** Default style (IN). */
+    public final static int DEFAULT_STYLE = IN;
+    /** Default thickness (10). */
+    public final static int DEFAULT_THICKNESS = 10;
+    /** Default thickness for solid borders (4). */
+    public final static int DEFAULT_SOLID_THICKNESS = 4;
+    /** Default thickness for raised borders (2). */
+    public final static int DEFAULT_RAISED_THICKNESS = 2;
+    /** Default thickness for lowered borders (2). */
+    public final static int DEFAULT_LOWERED_THICKNESS = 2;
+    /** Default thickness for etched-in borders (10). */
+    public final static int DEFAULT_IN_THICKNESS = 10;
+    /** Default thickness for etched-out borders (10). */
+    public final static int DEFAULT_OUT_THICKNESS = 10;
+    /** Default gap between border and contained component (5). */
+    public final static int DEFAULT_GAP = 5;
+    /** Default color (black). Applies to SOLID and etched borders. */
+    public final static Color DEFAULT_COLOR = Color.black;
+
+    /** Default font (TimesRoman,PLAIN,14). Only applies to etched borders. */
+    public final static Font DEFAULT_FONT = new Font("TimesRoman", Font.PLAIN, 14);
+    /** Default alignment (LEFT). Only applies to etched borders. */
+    public final static int DEFAULT_ALIGNMENT = LEFT;
+
+    // Data
+    private int style;
+    private int thickness;
+    private int gap;
+    private Color color;
+
+    private Font font;
+    private String text;
+    private int alignment;
+
+    /**
+     * Constructor. Makes default border.
+     */
+    public HolidayBorderPanel() {
+
+        // initialize data
+        style       = DEFAULT_STYLE;
+        thickness   = DEFAULT_THICKNESS;
+        gap         = DEFAULT_GAP;
+        color       = DEFAULT_COLOR;
+
+        text        = null;
+        font        = DEFAULT_FONT;
+        alignment   = DEFAULT_ALIGNMENT;
+
+        }
+
+    /**
+     * Constructor. Makes an etched IN border with given text caption.
+     *
+     * @param text  Text caption
+     */
+    public HolidayBorderPanel(String text) {
+        this();
+
+        style = IN;
+        this.text = text;
+        }
+
+    /**
+     * Constructor. Makes SOLID border with color and thickness given.
+     *
+     * @param color     The color for the border.
+     * @param thickness The thickness of the border.
+     */
+    public HolidayBorderPanel(Color color, int thickness) {
+        this();
+
+        style = SOLID;
+        this.color = color;
+        this.thickness = thickness;
+        }
+
+    /**
+     * Constructor. Makes a border of the given style with the default
+     * thickness for that style.
+     *
+     * @param style The style for this border.
+     */
+    public HolidayBorderPanel(int style) {
+        this();
+
+        // set thickness appropriate to this style
+        int thickness;
+        switch (style) {
+            case SOLID: thickness = DEFAULT_SOLID_THICKNESS; break;
+            case RAISED: thickness = DEFAULT_RAISED_THICKNESS; break;
+            case LOWERED: thickness = DEFAULT_LOWERED_THICKNESS; break;
+            case IN: thickness = DEFAULT_IN_THICKNESS; break;
+            case OUT: thickness = DEFAULT_OUT_THICKNESS; break;
+            default:
+                thickness = DEFAULT_THICKNESS;
+            }
+
+        this.style = style;
+        this.thickness = thickness;
+        }
+
+    /**
+     * Constructor. Makes border with given style and thickness.
+     *
+     * @param style     The style for this border.
+     * @param thickness The thickness for this border.
+     */
+    public HolidayBorderPanel(int style, int thickness) {
+        this();
+
+        this.style = style;
+        this.thickness = thickness;
+        }
+
+    /**
+     * Returns the insets of this panel..
+     */
+    public Insets getInsets() {
+        int adjustment = 0;
+
+        // adjust for text string
+        if (style == IN || style == OUT) {
+            if (text != null && text.length() > 0) {
+                try {
+                    // set font and get info
+                    int height = getGraphics().getFontMetrics(font).getHeight();
+                    if (height > thickness)
+                        adjustment = height - thickness;
+                    }
+                catch (Exception e) {
+                    // nothing: just in case there is no graphics context
+                    //   at the beginning.
+                    System.out.print("");
+                    }
+                }
+            }
+
+        // return appropriate insets
+        int dist = thickness + gap;
+        return new Insets(dist + adjustment, dist, dist, dist);
+        }
+
+    /**
+     * Sets the style of the border
+     *
+     * @param style The new style.
+     */
+    public HolidayBorderPanel setStyle(int style) {
+
+        // set the style and re-layout the panel
+        this.style = style;
+        doLayout();
+        repaint();
+
+        return this;
+        }
+
+    /**
+     * Gets the style of the border
+     */
+    public int getStyle() {
+
+        return style;
+        }
+
+    /**
+     * Sets the thickness of the border.
+     *
+     * @param thickness The new thickness
+     */
+    public HolidayBorderPanel setThickness(int thickness) {
+
+        if (thickness > 0) {
+            this.thickness = thickness;
+            doLayout();
+            repaint();
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the thickness of the border.
+     */
+    public int getThickness() {
+
+        return thickness;
+        }
+
+    /**
+     * Sets the gap between the border and the contained Component.
+     *
+     * @param gap The new gap, in pixels.
+     */
+    public HolidayBorderPanel setGap(int gap) {
+
+        if (gap > -1) {
+            this.gap = gap;
+            doLayout();
+            repaint();
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the gap between the border and the contained Component.
+     */
+    public int getGap() {
+
+        return gap;
+        }
+
+    /**
+     * Sets the current color for SOLID borders and the caption text
+     * color for etched borders.
+     *
+     * @param color The new color.
+     */
+    public HolidayBorderPanel setColor(Color color) {
+
+        this.color = color;
+        if (style == SOLID || style == IN || style == OUT)
+            repaint();
+
+        return this;
+        }
+
+    /**
+     * Gets the current color for SOLID borders and the caption
+     * text color for etched borders.
+     */
+    public Color getColor() {
+
+        return color;
+        }
+
+    /**
+     * Sets the font. Only applies to etched borders.
+     */
+    public HolidayBorderPanel setTextFont(Font font) {
+
+        // set font
+        if (font != null) {
+            this.font = font;
+            if (style == IN || style == OUT) {
+                doLayout();
+                repaint();
+                }
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the font of the text. Only applies to etched borders.
+     */
+    public Font getTextFont() {
+
+        return font;
+        }
+
+    /**
+     * Sets the text. Only applies to etched borders.
+     *
+     * @param text  The new text.
+     */
+    public HolidayBorderPanel setText(String text) {
+
+        this.text = text;
+        if (style == IN || style == OUT) {
+            doLayout();
+            repaint();
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the text. Only applies to etched borders.
+     */
+    public String getText() {
+
+        return text;
+        }
+
+    /**
+     * Sets the text alignment. Only applies to etched borders.
+     *
+     * @param alignment The new alignment.
+     */
+    public HolidayBorderPanel setAlignment(int alignment) {
+
+        this.alignment = alignment;
+        if (style == IN || style == OUT) {
+            doLayout();
+            repaint();
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the text alignment.
+     */
+    public int getAlignment() {
+
+        return alignment;
+        }
+
+    /**
+     * Repaints the border.
+     *
+     * @param g The graphics context.
+     */
+    public void paint(Graphics g) {
+
+        // get current dimensions
+        Dimension size = getSize();
+        int width = size.width;
+        int height = size.height;
+
+        // set colors
+        Color light = getBackground().brighter().brighter().brighter();
+        Color dark = getBackground().darker().darker().darker();
+
+        // Draw border
+        switch (style) {
+            case RAISED:    // 3D Border (in or out)
+            case LOWERED:
+                Color topleft = null;
+                Color bottomright = null;
+
+                // set colors
+                if (style == RAISED) {
+                    topleft = light;
+                    bottomright = dark;
+                    }
+                else {
+                    topleft = dark;
+                    bottomright = light;
+                    }
+
+                // draw border
+                g.setColor(topleft);
+                for (int i = 0; i < thickness; i++) {
+                    g.drawLine(i, i, width - i - 2, i);
+                    g.drawLine(i, i + 1, i, height - i - 1);
+                    }
+                g.setColor(bottomright);
+                for (int i = 0; i < thickness; i++) {
+                    g.drawLine(i + 1, height - i - 1, width - i - 1, height - i - 1);
+                    g.drawLine(width - i - 1, i, width - i - 1, height - i - 2);
+                    }
+                break;
+
+            case IN:    // Etched Border (in or out)
+            case OUT:
+                int adjust1 = 0;
+                int adjust2 = 0;
+
+                // set font and get info
+                Font oldfont = g.getFont();
+                g.setFont(font);
+                FontMetrics fm = g.getFontMetrics();
+                int ascent = fm.getAscent();
+
+                // set adjustment
+                if (style == IN)
+                    adjust1 = 1;
+                else
+                    adjust2 = 1;
+
+                // Calculate adjustment for text
+                int adjustment = 0;
+                if (text != null && text.length() > 0) {
+                    if (ascent > thickness)
+                        adjustment = (ascent - thickness) / 2;
+                    }
+
+                // The adjustment is there so that we always draw the
+                // light rectangle first. Otherwise, your eye picks up
+                // the discrepancy where the light rect. passes over
+                // the darker rect.
+                int x = thickness / 2;
+                int y = thickness / 2 + adjustment;
+                int w = width - thickness - 1;
+                int h = height - thickness - 1 - adjustment;
+
+                // draw rectangles
+                g.setColor(light);
+                g.drawRect(x + adjust1, y + adjust1, w, h);
+                g.setColor(dark);
+                g.drawRect(x + adjust2, y + adjust2, w, h);
+
+                // draw text, if applicable
+                if (text != null && text.length() > 0) {
+                    // calculate drawing area
+                    int fontheight = fm.getHeight();
+                    int strwidth = fm.stringWidth(text);
+
+                    int textwidth = width - 2 * (thickness + 5);
+                    if (strwidth > textwidth)
+                        strwidth = textwidth;
+
+                    // calculate offset for alignment
+                    int offset;
+                    switch (alignment) {
+                        case CENTER:
+                            offset = (width - strwidth) / 2;
+                            break;
+                        case RIGHT:
+                            offset = width - strwidth - thickness - 5;
+                            break;
+                        case LEFT:
+                        default: // assume left alignment if invalid
+                            offset = thickness + 5;
+                            break;
+                        }
+
+                    // clear drawing area and set clipping region
+                    g.clearRect(offset - 5, 0, strwidth  + 10, fontheight);
+                    g.clipRect(offset, 0, strwidth, fontheight);
+
+                    // draw text
+                    g.setColor(color);
+                    g.drawString(text, offset, ascent);
+
+                    // restore old clipping area
+                    g.clipRect(0, 0, width, height);
+                    }
+
+                g.setFont(oldfont);
+                break;
+
+            case SOLID:
+            default: // assume SOLID
+                g.setColor(color);
+                for (int i = 0; i < thickness; i++)
+                    g.drawRect(i, i, width - 2 * i - 1, height - 2 * i - 1);
+            }
+
+        }
+
+    /**
+     * Returns the settings of this HolidayBorderPanel instance as a string.
+     */
+    public String toString() {
+        StringBuffer str = new StringBuffer("HolidayBorderPanel[");
+
+        // style
+        str.append("style=");
+        switch (style) {
+            case SOLID: str.append("SOLID"); break;
+            case RAISED: str.append("RAISED"); break;
+            case LOWERED: str.append("LOWERED"); break;
+            case IN: str.append("IN"); break;
+            case OUT: str.append("OUT"); break;
+            default: str.append("unknown");
+            }
+        str.append(",");
+
+        // thickness
+        str.append("thickness=");
+        str.append(thickness);
+        str.append(",");
+
+        // gap
+        str.append("gap=");
+        str.append(gap);
+        str.append(",");
+
+        // color
+        str.append(color);
+        str.append(",");
+
+        // font
+        str.append(font);
+        str.append(",");
+
+        // text
+        str.append("text=");
+        str.append(text);
+        str.append(",");
+
+        // alignment
+        str.append("alignment=");
+        switch (alignment) {
+            case LEFT: str.append("LEFT"); break;
+            case CENTER: str.append("CENTER"); break;
+            case RIGHT: str.append("RIGHT"); break;
+            default: str.append("unknown");
+            }
+
+        str.append("]");
+
+        return str.toString();
+        }
+
+    }
+
diff --git a/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java b/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java
new file mode 100755
index 0000000..57af305
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java
@@ -0,0 +1,722 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java,v $ 
+ * $Date: 2002/02/19 04:10:23 $ 
+ * $Revision: 1.9 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.holiday;
+
+import com.ibm.icu.dev.demo.*;
+import java.applet.Applet;
+import java.awt.*;
+import java.awt.event.*;
+//import java.util.*;
+import java.net.*;
+import java.io.*;
+
+//import java.text.SimpleDateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import java.text.DateFormatSymbols;
+//import java.util.SimpleTimeZone;
+import com.ibm.icu.util.SimpleTimeZone;
+import java.util.Locale;
+import java.util.Vector;
+import java.util.Date;
+
+import com.ibm.icu.util.*;
+import com.ibm.icu.dev.demo.impl.*;
+
+/**
+ * CalendarDemo demonstrates how Calendar works.
+ */
+public class HolidayCalendarDemo extends DemoApplet 
+{
+    /**
+     * The main function which defines the behavior of the CalendarDemo
+     * applet when an applet is started.
+     */
+    public static void main(String argv[]) {
+
+        new HolidayCalendarDemo().showDemo();
+    }
+
+    /* This creates a CalendarFrame for the demo applet. */
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new CalendarFrame(applet);
+    }
+
+	/**
+	* A Frame is a top-level window with a title. The default layout for a frame
+	* is BorderLayout.  The CalendarFrame class defines the window layout of
+	* CalendarDemo.
+	*/
+	private static class CalendarFrame extends Frame implements ActionListener,
+                                                                ItemListener
+	{
+    	private static final String creditString = "";
+
+    	private static final boolean DEBUG = false;
+
+    	private Locale curLocale = Locale.US;
+
+    	private DemoApplet applet;
+
+    	private static final Locale[] calendars = {
+        	//new Locale("de","AT"),
+        	Locale.CANADA,
+        	Locale.CANADA_FRENCH,
+        	Locale.FRANCE,
+        	Locale.GERMANY,
+        	new Locale("iw","IL"),
+        	new Locale("el","GR"),
+        	//new Locale("es","MX"),
+        	Locale.UK,
+        	Locale.US,
+    	};
+    	private static final Locale[] displays = {
+        	Locale.CANADA,
+        	Locale.UK,
+        	Locale.US,
+        	Locale.FRANCE,
+        	Locale.CANADA_FRENCH,
+        	//new Locale("de","AT"),
+        	Locale.GERMAN,
+        	new Locale("el","GR"),
+        	//new Locale("iw","IL"),
+        	new Locale("es","MX"),
+    	};
+
+    	/**
+    	* Constructs a new CalendarFrame that is initially invisible.
+    	*/
+    	public CalendarFrame(DemoApplet applet)
+    	{
+        	super("Calendar Demo");
+        	this.applet = applet;
+        	init();
+        	start();
+        	enableEvents(WindowEvent.WINDOW_CLOSING);
+    	}
+
+    	/**
+    	* Initializes the applet. You never need to call this directly, it
+    	* is called automatically by the system once the applet is created.
+    	*/
+    	public void init()
+    	{
+        	// Get G7 locales only for demo purpose. To get all the locales
+        	// supported, switch to calling Calendar.getAvailableLocales().
+        	// commented
+        	locales = displays;
+
+        	buildGUI();
+    	}
+
+    	//------------------------------------------------------------
+    	// package private
+    	//------------------------------------------------------------
+    	void addWithFont(Container container, Component foo, Font font) {
+        	if (font != null)
+            	foo.setFont(font);
+        	container.add(foo);
+    	}
+
+    	/**
+    	* Called to start the applet. You never need to call this method
+    	* directly, it is called when the applet's document is visited.
+    	*/
+    	public void start()
+    	{
+        	// do nothing
+    	}
+
+    	private Choice          localeMenu;
+    	private Choice          displayMenu;
+    	private Locale[]        locales;
+
+    	private Label           monthLabel;
+    	private Button          prevYear;
+    	private Button          prevMonth;
+    	private Button          gotoToday;
+    	private Button          nextMonth;
+    	private Button          nextYear;
+    	private CalendarPanel   calendarPanel;
+
+    	private static final Locale kFirstLocale = Locale.US;
+
+    	private static void add(Container container, Component component,
+                            	GridBagLayout g, GridBagConstraints c)
+    	{
+        	g.setConstraints(component, c);
+        	container.add(component);
+    	}
+
+    	public void buildGUI()
+    	{
+        	setBackground(DemoUtility.bgColor);
+        	setLayout(new BorderLayout(10,10));
+
+        	// Label for the demo's title
+        	Label titleLabel = new Label("Calendar Demo", Label.CENTER);
+        	titleLabel.setFont(DemoUtility.titleFont);
+
+        	// Label for the current month name
+        	monthLabel = new Label("", Label.LEFT);
+        	monthLabel.setFont(new Font(DemoUtility.titleFont.getName(),
+                                    	DemoUtility.titleFont.getStyle(),
+                                    	(DemoUtility.titleFont.getSize() * 3)/2));
+
+        	// Make the locale popup menus
+        	localeMenu= new Choice();
+        	localeMenu.addItemListener(this);
+        	int selectMe = 0;
+        	
+        	for (int i = 0; i < calendars.length; i++) {
+            	if (i > 0 &&
+                    	calendars[i].getCountry().equals(calendars[i-1].getCountry()) ||
+                	i < calendars.length - 1 &&
+                    	calendars[i].getCountry().equals(calendars[i+1].getCountry()))
+            	{
+                	localeMenu.addItem(calendars[i].getDisplayCountry() + " (" +
+                                	calendars[i].getDisplayLanguage() + ")");
+            	} else {
+                	localeMenu.addItem( calendars[i].getDisplayCountry() );
+            	}
+            	
+            	if (calendars[i].equals(kFirstLocale)) {
+                	selectMe = i;
+            	}
+        	}
+        	
+        	localeMenu.setBackground(DemoUtility.choiceColor);
+        	localeMenu.select(selectMe);
+
+        	displayMenu = new Choice();
+        	displayMenu.addItemListener(this);
+        	
+        	selectMe = 0;
+        	for (int i = 0; i < locales.length; i++) {
+            	if (i > 0 &&
+                    	locales[i].getLanguage().equals(locales[i-1].getLanguage()) ||
+                	i < locales.length - 1 &&
+                    	locales[i].getLanguage().equals(locales[i+1].getLanguage()))
+            	{
+                	displayMenu.addItem( locales[i].getDisplayName() );
+            	} else {
+                	displayMenu.addItem( locales[i].getDisplayLanguage());
+            	}
+            	
+            	if (locales[i].equals(kFirstLocale)) {
+            	    selectMe = i;
+            	}
+        	}
+        	
+        	displayMenu.setBackground(DemoUtility.choiceColor);
+        	displayMenu.select(selectMe);
+
+        	// Make all the next/previous/today buttons
+        	prevYear = new Button("<<");
+        	prevYear.addActionListener(this);
+        	prevMonth = new Button("<");
+        	prevMonth.addActionListener(this);
+        	gotoToday = new Button("Today");
+        	gotoToday.addActionListener(this);
+        	nextMonth = new Button(">");
+        	nextMonth.addActionListener(this);
+        	nextYear = new Button(">>");
+        	nextYear.addActionListener(this);
+
+        	// The month name and the control buttons are bunched together
+        	Panel monthPanel = new Panel();
+        	{
+            	GridBagLayout g = new GridBagLayout();
+            	GridBagConstraints c = new GridBagConstraints();
+            	monthPanel.setLayout(g);
+
+            	c.weightx = 1;
+            	c.weighty = 1;
+
+            	c.gridwidth = 1;
+            	c.fill = GridBagConstraints.HORIZONTAL;
+            	c.gridwidth = GridBagConstraints.REMAINDER;
+            	add(monthPanel, monthLabel, g, c);
+
+            	c.gridwidth = 1;
+            	add(monthPanel, prevYear, g, c);
+            	add(monthPanel, prevMonth, g, c);
+            	add(monthPanel, gotoToday, g, c);
+            	add(monthPanel, nextMonth, g, c);
+            	c.gridwidth = GridBagConstraints.REMAINDER;
+            	add(monthPanel, nextYear, g, c);
+        	}
+
+        	// Stick the menu and buttons in a little "control panel"
+        	Panel menuPanel = new Panel();
+        	{
+            	GridBagLayout g = new GridBagLayout();
+            	GridBagConstraints c = new GridBagConstraints();
+            	menuPanel.setLayout(g);
+
+            	c.weightx = 1;
+            	c.weighty = 1;
+
+            	c.fill = GridBagConstraints.HORIZONTAL;
+
+            	c.gridwidth = GridBagConstraints.RELATIVE;
+            	Label l1 = new Label("Holidays");
+            	l1.setFont(DemoUtility.labelFont);
+            	add(menuPanel, l1, g, c);
+
+            	c.gridwidth = GridBagConstraints.REMAINDER;
+            	add(menuPanel, localeMenu, g, c);
+
+            	c.gridwidth = GridBagConstraints.RELATIVE;
+            	Label l2 = new Label("Display:");
+            	l2.setFont(DemoUtility.labelFont);
+            	add(menuPanel, l2, g, c);
+
+            	c.gridwidth = GridBagConstraints.REMAINDER;
+            	add(menuPanel, displayMenu, g, c);
+        	}
+
+        	// The title, buttons, etc. go in a panel at the top of the window
+        	Panel topPanel = new Panel();
+        	{
+            	topPanel.setLayout(new BorderLayout());
+
+            	//topPanel.add("North", titleLabel);
+            	topPanel.add("Center", monthPanel);
+            	topPanel.add("East", menuPanel);
+        	}
+        	add("North", topPanel);
+
+        	// The copyright notice goes at the bottom of the window
+        	Label copyright = new Label(DemoUtility.copyright1, Label.LEFT);
+        	copyright.setFont(DemoUtility.creditFont);
+        	add("South", copyright);
+
+        	// Now create the big calendar panel and stick it in the middle
+        	calendarPanel = new CalendarPanel( kFirstLocale );
+        	add("Center", calendarPanel);
+
+        	updateMonthName();
+    	}
+
+    	private void updateMonthName()
+    	{
+        	SimpleDateFormat f = new SimpleDateFormat("MMMM yyyyy",
+                                                    	calendarPanel.getDisplayLocale());
+        	f.setCalendar(calendarPanel.getCalendar());
+        	f.setTimeZone(new SimpleTimeZone(0, "UTC"));        // JDK 1.1.2 workaround
+        	monthLabel.setText( f.format( calendarPanel.firstOfMonth() ));
+    	}
+    	
+    	/**
+    	* Handles the event. Returns true if the event is handled and should not
+    	* be passed to the parent of this component. The default event handler
+    	* calls some helper methods to make life easier on the programmer.
+    	*/
+    	public void actionPerformed(ActionEvent e)
+    	{
+    	    Object obj = e.getSource();
+    	    
+    	    // *** Button events are handled here.
+        	if (obj instanceof Button) {
+            	if (obj == nextMonth) {
+                	calendarPanel.add(Calendar.MONTH, +1);
+            	}
+            	else
+            	if (obj == prevMonth) {
+                	calendarPanel.add(Calendar.MONTH, -1);
+            	}
+            	else
+            	if (obj == prevYear) {
+                	calendarPanel.add(Calendar.YEAR, -1);
+            	}
+            	else
+            	if (obj == nextYear) {
+                	calendarPanel.add(Calendar.YEAR, +1);
+            	}
+            	else
+            	if (obj == gotoToday) {
+                	calendarPanel.set( new Date() );
+            	}
+            	updateMonthName();
+        	}
+    	}
+    	
+    	public void itemStateChanged(ItemEvent e)
+        {
+            Object obj = e.getSource();
+            if (obj == localeMenu) {
+            	calendarPanel.setCalendarLocale(calendars[localeMenu.getSelectedIndex()]);
+            	updateMonthName();
+        	}
+        	else 
+        	    if (obj == displayMenu) {
+            	    calendarPanel.setDisplayLocale(locales[displayMenu.getSelectedIndex()]);
+            	    updateMonthName();
+            	}
+        }
+        
+        /**
+    	* Print out the error message while debugging this program.
+    	*/
+    	public void errorText(String s)
+    	{
+        	if (DEBUG)
+        	{
+            	System.out.println(s);
+        	}
+    	}
+    	
+    	protected void processWindowEvent(WindowEvent e)
+        {
+            System.out.println("event " + e);
+            if (e.getID() == WindowEvent.WINDOW_CLOSING) {
+            	this.hide();
+            	this.dispose();
+
+            	if (applet != null) {
+            	    applet.demoClosed();
+            	} else {
+                    System.exit(0);
+            	}
+        	}
+        }
+	}
+
+
+	private static class CalendarPanel extends Canvas {
+
+    	public CalendarPanel( Locale locale ) {
+        	set(locale, locale, new Date());
+    	}
+
+    	public void setCalendarLocale(Locale locale) {
+        	set(locale, fDisplayLocale, fCalendar.getTime());
+    	}
+
+    	public void setDisplayLocale(Locale locale) {
+        	set(fCalendarLocale, locale, fCalendar.getTime());
+    	}
+
+    	public void set(Date date) {
+        	set(fCalendarLocale, fDisplayLocale, date);
+    	}
+
+    	public void set(Locale loc, Locale display, Date date)
+    	{
+        	if (fCalendarLocale == null || !loc.equals(fCalendarLocale)) {
+            	fCalendarLocale = loc;
+            	fCalendar = Calendar.getInstance(fCalendarLocale);
+            	fAllHolidays = Holiday.getHolidays(fCalendarLocale);
+        	}
+        	if (fDisplayLocale == null || !display.equals(fDisplayLocale)) {
+            	fDisplayLocale = display;
+            	fSymbols = new DateFormatSymbols(fDisplayLocale);
+        	}
+
+        	fStartOfMonth = date;
+
+        	dirty = true;
+        	repaint();
+    	}
+
+    	public void add(int field, int delta)
+    	{
+        	synchronized(fCalendar) {
+            	fCalendar.setTime(fStartOfMonth);
+            	fCalendar.add(field, delta);
+            	fStartOfMonth = fCalendar.getTime();
+        	}
+        	dirty = true;
+        	repaint();
+    	}
+
+    	public com.ibm.icu.util.Calendar getCalendar() {
+        	return fCalendar;
+    	}
+
+    	public Locale getCalendarLocale() {
+        	return fCalendarLocale;
+    	}
+
+    	public Locale getDisplayLocale() {
+        	return fDisplayLocale;
+    	}
+
+
+    	public Date firstOfMonth() {
+        	return fStartOfMonth;
+    	}
+
+    	private Date startOfMonth(Date dateInMonth)
+    	{
+        	synchronized(fCalendar) {
+            	fCalendar.setTime(dateInMonth);             // TODO: synchronization
+
+            	int era = fCalendar.get(Calendar.ERA);
+            	int year = fCalendar.get(Calendar.YEAR);
+            	int month = fCalendar.get(Calendar.MONTH);
+
+            	fCalendar.clear();
+            	fCalendar.set(Calendar.ERA, era);
+            	fCalendar.set(Calendar.YEAR, year);
+            	fCalendar.set(Calendar.MONTH, month);
+            	fCalendar.set(Calendar.DATE, 1);
+
+            	return fCalendar.getTime();
+        	}
+    	}
+
+    	private void calculate()
+    	{
+        	//
+        	// As a workaround for JDK 1.1.3 and below, where Calendars and time
+        	// zones are a bit goofy, always set my calendar's time zone to UTC.
+        	// You would think I would want to do this in the "set" function above,
+        	// but if I do that, the program hangs when this class is loaded,
+        	// perhaps due to some sort of static initialization ordering problem.
+        	// So I do it here instead.
+        	//
+        	fCalendar.setTimeZone(new SimpleTimeZone(0, "UTC"));
+
+        	Calendar c = (Calendar)fCalendar.clone(); // Temporary copy
+
+        	fStartOfMonth = startOfMonth(fStartOfMonth);
+
+        	// Stash away a few useful constants for this calendar and display
+        	minDay = c.getMinimum(Calendar.DAY_OF_WEEK);
+        	daysInWeek = c.getMaximum(Calendar.DAY_OF_WEEK) - minDay + 1;
+
+        	firstDayOfWeek = Calendar.getInstance(fDisplayLocale).getFirstDayOfWeek();
+
+        	// Stash away a Date for the start of this month
+
+        	// Find the day of week of the first day in this month
+        	c.setTime(fStartOfMonth);
+        	firstDayInMonth = c.get(Calendar.DAY_OF_WEEK);
+
+        	// Now find the # of days in the month
+        	c.roll(Calendar.DATE, false);
+        	daysInMonth = c.get(Calendar.DATE);
+
+        	// Finally, find the end of the month, i.e. the start of the next one
+        	c.roll(Calendar.DATE, true);
+        	c.add(Calendar.MONTH, 1);
+        	c.getTime();        // JDK 1.1.2 bug workaround
+        	c.add(Calendar.SECOND, -1);
+        	Date endOfMonth = c.getTime();
+
+        	//
+        	// Calculate the number of full or partial weeks in this month.
+        	// To do this I can just reuse the code that calculates which
+        	// calendar cell contains a given date.
+        	//
+        	numWeeks = dateToCell(daysInMonth).y - dateToCell(1).y + 1;
+
+        	// Remember which holidays fall on which days in this month,
+        	// to save the trouble of having to do it later
+        	fHolidays.setSize(0);
+
+        	for (int h = 0; h < fAllHolidays.length; h++)
+        	{
+            	Date d = fStartOfMonth;
+            	while ( (d = fAllHolidays[h].firstBetween(d, endOfMonth) ) != null)
+            	{
+                	c.setTime(d);
+                	fHolidays.addElement( new HolidayInfo(c.get(Calendar.DATE),
+                                        	fAllHolidays[h],
+                                        	fAllHolidays[h].getDisplayName(fDisplayLocale) ));
+
+                	d.setTime( d.getTime() + 1000 );    // "d++"
+            	}
+        	}
+        	dirty = false;
+    	}
+
+    	static final int INSET = 2;
+
+    	/*
+    	* Convert from the day number within a month (1-based)
+    	* to the cell coordinates on the calendar (0-based)
+    	*/
+    	private void dateToCell(int date, Point pos)
+    	{
+        	int cell = (date + firstDayInMonth - firstDayOfWeek - minDay);
+        	if (firstDayInMonth < firstDayOfWeek) {
+            	cell += daysInWeek;
+        	}
+
+        	pos.x = cell % daysInWeek;
+        	pos.y = cell / daysInWeek;
+    	}
+    	private Point dateToCell(int date) {
+        	Point p = new Point(0,0);
+        	dateToCell(date, p);
+        	return p;
+    	}
+
+    	public void paint(Graphics g) {
+
+        	if (dirty) {
+            	calculate();
+        	}
+
+        	Point cellPos = new Point(0,0);     // Temporary variable
+        	Dimension d = getSize();
+
+        	g.setColor(DemoUtility.bgColor);
+        	g.fillRect(0,0,d.width,d.height);
+
+        	// Draw the day names at the top
+        	g.setColor(Color.black);
+        	g.setFont(DemoUtility.labelFont);
+        	FontMetrics fm = g.getFontMetrics();
+        	int labelHeight = fm.getHeight() + INSET * 2;
+
+        	int v = fm.getAscent() + INSET;
+        	for (int i = 0; i < daysInWeek; i++) {
+            	int dayNum = (i + minDay + firstDayOfWeek - 2) % daysInWeek + 1;
+            	String dayName = fSymbols.getWeekdays()[dayNum];
+
+            	int h = (int) (d.width * (i + 0.5)) / daysInWeek;
+            	h -= fm.stringWidth(dayName) / 2;
+
+            	g.drawString(dayName, h, v);
+        	}
+
+        	double cellHeight = (d.height - labelHeight - 1) / numWeeks;
+        	double cellWidth = (double)(d.width - 1) / daysInWeek;
+
+        	// Draw a white background in the part of the calendar
+        	// that displays this month.
+        	// First figure out how much of the first week should be shaded.
+        	{
+            	g.setColor(Color.white);
+            	dateToCell(1, cellPos);
+            	int width = (int)(cellPos.x*cellWidth);  // Width of unshaded area
+
+            	g.fillRect((int)(width), labelHeight ,
+                    	(int)(d.width - width), (int)cellHeight);
+
+            	// All of the intermediate weeks get shaded completely
+            	g.fillRect(0, (int)(labelHeight + cellHeight),
+                        	d.width, (int)(cellHeight * (numWeeks - 2)));
+
+            	// Now figure out the last week.
+            	dateToCell(daysInMonth, cellPos);
+            	width = (int)((cellPos.x+1)*cellWidth);  // Width of shaded area
+
+            	g.fillRect(0, (int)(labelHeight + (numWeeks-1) * cellHeight),
+                        	width, (int)(cellHeight));
+
+        	}
+        	// Draw the X/Y grid lines
+        	g.setColor(Color.black);
+        	for (int i = 0; i <= numWeeks; i++) {
+            	int y = (int)(labelHeight + i * cellHeight);
+            	g.drawLine(0, y, d.width - 1, y);
+        	}
+        	for (int i = 0; i <= daysInWeek; i++) {
+            	int x = (int)(i * cellWidth);
+            	g.drawLine(x, labelHeight, x, d.height - 1);
+        	}
+
+        	// Now loop through all of the days in the month, figure out where
+        	// they go in the grid, and draw the day # for each one
+        	Font numberFont = new Font("Helvetica",Font.PLAIN,12);
+        	// not used Font holidayFont = DemoUtility.creditFont;
+
+        	Calendar c = (Calendar)fCalendar.clone();
+        	c.setTime(fStartOfMonth);
+
+        	for (int i = 1, h = 0; i <= daysInMonth; i++) {
+            	g.setFont(numberFont);
+            	g.setColor(Color.black);
+            	fm = g.getFontMetrics();
+
+            	dateToCell(i, cellPos);
+            	int x = (int)((cellPos.x + 1) * cellWidth);
+            	int y = (int)(cellPos.y * cellHeight + labelHeight);
+
+            	StringBuffer buffer = new StringBuffer();
+            	buffer.append(i);
+            	String dayNum = buffer.toString();
+
+            	x = x - INSET - fm.stringWidth(dayNum);
+            	y = y + fm.getAscent() + INSET;
+
+            	g.drawString(dayNum, x, y);
+
+            	// See if any of the holidays land on this day....
+            	HolidayInfo info = null;
+            	int count = 0;
+
+            	// Coordinates of lower-left corner of cell.
+            	x = (int)((cellPos.x) * cellWidth);
+            	y = (int)((cellPos.y+1) * cellHeight) + labelHeight;
+
+            	while (h < fHolidays.size() &&
+                    	(info = (HolidayInfo)fHolidays.elementAt(h)).date <= i)
+            	{
+                	if (info.date == i) {
+                    	// Draw the holiday here.
+                    	g.setFont(numberFont);
+                    	g.setColor(Color.red);
+
+                    	DemoTextBox box = new DemoTextBox(g, info.name, (int)(cellWidth - INSET));
+                    	box.draw(g, x + INSET, y - INSET - box.getHeight());
+
+                    	y -= (box.getHeight() + INSET);
+                    	count++;
+                	}
+                	h++;
+            	}
+        	}
+    	}
+
+    	// Important state variables
+    	private Locale              fCalendarLocale;    // Whose calendar
+    	private Calendar            fCalendar;          // Calendar for calculations
+
+    	private Locale              fDisplayLocale;     // How to display it
+    	private DateFormatSymbols   fSymbols;           // Symbols for drawing
+
+    	private Date                fStartOfMonth;      // 00:00:00 on first day of month
+
+    	// Cached calculations to make drawing faster.
+    	private transient int minDay;           // Minimum legal day #
+    	private transient int daysInWeek;       // # of days in a week
+    	private transient int firstDayOfWeek;   // First day to display in week
+    	private transient int numWeeks;         // # full or partial weeks in month
+    	private transient int daysInMonth;      // # days in this month
+    	private transient int firstDayInMonth;  // Day of week of first day in month
+
+    	private transient Holiday[] fAllHolidays;
+    	private transient Vector    fHolidays = new Vector(5,5);
+
+    	private transient boolean dirty = true;
+	}
+
+	private static class HolidayInfo {
+    	public HolidayInfo(int date, Holiday holiday, String name) {
+        	this.date = date;
+        	this.holiday = holiday;
+        	this.name = name;
+    	}
+
+    	public Holiday holiday;
+    	public int date;
+    	public String name;
+	}
+}
+
diff --git a/src/com/ibm/icu/dev/demo/holiday/package.html b/src/com/ibm/icu/dev/demo/holiday/package.html
new file mode 100755
index 0000000..efa3e4a
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/holiday/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/holiday/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 06:54:50 $
+-->
+</head>
+<body bgcolor="white">
+Holiday demo application.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/impl/AppletFrame.java b/src/com/ibm/icu/dev/demo/impl/AppletFrame.java
new file mode 100755
index 0000000..89d678d
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/AppletFrame.java
@@ -0,0 +1,152 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/impl/AppletFrame.java,v $ 
+ * $Date: 2002/02/16 03:04:56 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+import java.applet.*;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.awt.*;
+import java.awt.event.*;
+import java.io.InputStream;
+import java.io.IOException;
+
+/**
+ * <p>A Frame that runs an Applet within itself, making it possible
+ * for an applet to run as an application.  Usage:
+ *
+ * <pre>
+ * public class MyApplet extends Applet {
+ *     public static void main(String args[]) {
+ *         MyApplet applet = new MyApplet();
+ *         new AppletFrame("My Applet Running As An App", applet, 640, 480);
+ *     }
+ *     ...
+ * }
+ * <pre>
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: AppletFrame.java,v $ $Revision: 1.4 $ $Date: 2002/02/16 03:04:56 $
+ */
+public class AppletFrame extends Frame implements AppletStub, AppletContext {
+
+    Applet applet;
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+    
+    /**
+     * Construct a Frame running the given Applet with the default size
+     * of 640 by 480.
+     * When the Frame is closed, the applet's stop() method is called,
+     * the Frame is dispose()d of, and System.exit(0) is called.
+     *
+     * @param name the Frame title
+     * @param applet the applet to be run
+     */
+    public AppletFrame(String name, Applet applet) {
+        this(name, applet, 640, 480);
+    }
+
+    /**
+     * Construct a Frame running the given Applet with the given size.
+     * When the Frame is closed, the applet's stop() method is called,
+     * the Frame is dispose()d of, and System.exit(0) is called.
+     *
+     * @param name the Frame title
+     * @param applet the applet to be run
+     * @param width width of the Frame
+     * @param height height of the Frame
+     */
+    public AppletFrame(String name, Applet applet, int width, int height) {
+        super(name);
+        this.applet = applet;
+        applet.setStub(this);
+
+        setSize(width, height);
+        add("Center", applet);
+        show();
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                AppletFrame.this.applet.stop();
+                dispose();
+                System.exit(0);
+            }
+        });
+
+        applet.init();
+        applet.start();
+    }
+
+    // AppletStub API
+    public void appletResize(int width, int height) {
+        setSize(width, height);
+    }
+
+    public AppletContext getAppletContext() {
+        return this;
+    }
+
+    public URL getCodeBase() {
+        return null;
+    }
+
+    public URL getDocumentBase() {
+        return null;
+    }
+    
+    public String getParameter(String name) {
+        return "PARAMETER";
+    }
+
+    public boolean isActive() {
+        return true;
+    }
+    
+    
+    // AppletContext API
+    public Applet getApplet(String name) {
+        return applet;
+    }
+
+    public Enumeration getApplets() {
+        return null;
+    }
+
+    public AudioClip getAudioClip(URL url) {
+        return null;
+    }
+
+    public Image getImage(URL url) {
+        return null;
+    }
+
+    public void showDocument(URL url) {}
+    public void showDocument(URL url, String target) {}
+
+    public void showStatus(String status) {
+        System.out.println(status);
+    }
+    
+    public void setStream(String key, InputStream stream) throws IOException {
+    }
+    
+    public InputStream getStream(String key) {
+        return null;
+    }
+    
+    public Iterator getStreamKeys() {
+        return null;
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/impl/DemoApplet.java b/src/com/ibm/icu/dev/demo/impl/DemoApplet.java
new file mode 100755
index 0000000..2153e42
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/DemoApplet.java
@@ -0,0 +1,80 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/impl/DemoApplet.java,v $ 
+ * $Date: 2002/02/19 04:10:23 $ 
+ * $Revision: 1.6 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.impl;
+
+import java.applet.Applet;
+import java.util.Locale;
+import java.awt.*;
+import java.awt.event.*;
+
+public abstract class DemoApplet extends java.applet.Applet {
+    private Button   demoButton;
+    private Frame    demoFrame;
+	private static int demoFrameCount = 0;
+
+    protected abstract Frame createDemoFrame(DemoApplet applet);
+    protected Dimension getDefaultFrameSize(DemoApplet applet, Frame f) {
+    	return new Dimension(700, 550);
+    }
+
+    //Create a button that will display the demo
+    public void init()
+    {
+        setBackground(Color.white);
+        demoButton = new Button("Demo");
+        demoButton.setBackground(Color.yellow);
+        add( demoButton );
+
+        demoButton.addActionListener( new ActionListener() {
+             public void actionPerformed(ActionEvent e) {
+                if (e.getID() == ActionEvent.ACTION_PERFORMED) {
+                    demoButton.setLabel("loading");
+
+                    if (demoFrame == null) {
+                       demoFrame = createDemoFrame(DemoApplet.this);
+                       showDemo();
+                    }
+
+                    demoButton.setLabel("Demo");
+                }
+             }
+        } );
+    }
+
+    public void showDemo()
+    {
+    	demoFrame = createDemoFrame(this);
+        demoFrame.doLayout();
+        Dimension d = getDefaultFrameSize(this, demoFrame);
+        demoFrame.setSize(d.width, d.height);
+        demoFrame.show();
+		demoFrameOpened();
+    }
+
+    public void demoClosed()
+    {
+        demoFrame = null;
+		demoFrameClosed();
+    }
+
+	protected static void demoFrameOpened() {
+		demoFrameCount++;
+    }
+	protected static void demoFrameClosed() {
+		if (--demoFrameCount == 0) {
+			System.exit(0);
+		}
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java b/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java
new file mode 100755
index 0000000..2bf53e3
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java
@@ -0,0 +1,101 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java,v $ 
+ * $Date: 2002/02/19 04:10:23 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+
+
+import java.text.BreakIterator;
+import java.awt.*;
+
+public class DemoTextBox {
+
+    public DemoTextBox(Graphics g, String text, int width)
+    {
+        this.text = text;
+        this.chars = new char[text.length()];
+        text.getChars(0, text.length(), chars, 0);
+
+        this.width = width;
+        this.port = g;
+        this.metrics = g.getFontMetrics();
+
+        breakText();
+    }
+
+    public  int getHeight() {
+        return (nbreaks + 1) * metrics.getHeight();
+    }
+
+    public  void draw(Graphics g, int x, int y)
+    {
+        int index = 0;
+
+        y += metrics.getAscent();
+
+        for (int i = 0; i < nbreaks; i++)
+        {
+            g.drawChars(chars, index, breakPos[i] - index, x, y);
+            index = breakPos[i];
+            y += metrics.getHeight();
+        }
+
+        g.drawChars(chars, index, chars.length - index, x, y);
+    }
+
+
+    private void breakText()
+    {
+        if (metrics.charsWidth(chars, 0, chars.length) > width)
+        {
+            BreakIterator iter = BreakIterator.getWordInstance();
+            iter.setText(text);
+
+            int start = iter.first();
+            int end = start;
+            int pos;
+
+            while ( (pos = iter.next()) != BreakIterator.DONE )
+            {
+                int w = metrics.charsWidth(chars, start, pos - start);
+                if (w > width)
+                {
+                    // We've gone past the maximum width, so break the line
+                    if (end > start) {
+                        // There was at least one break position before this point
+                        breakPos[nbreaks++] = end;
+                        start = end;
+                        end = pos;
+                    } else {
+                        // There weren't any break positions before this one, so
+                        // let this word overflow the margin (yuck)
+                        breakPos[nbreaks++] = pos;
+                        start = end = pos;
+                    }
+                } else {
+                    // the current position still fits on the line; it's the best
+                    // tentative break position we have so far.
+                    end = pos;
+                }
+
+            }
+        }
+    }
+
+    private String          text;
+    private char[]          chars;
+    private Graphics        port;
+    private FontMetrics     metrics;
+    private int             width;
+
+    private int[]           breakPos = new int[10]; // TODO: get real
+    private int             nbreaks = 0;
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/impl/DemoUtility.java b/src/com/ibm/icu/dev/demo/impl/DemoUtility.java
new file mode 100755
index 0000000..cf5afdd
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/DemoUtility.java
@@ -0,0 +1,134 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/impl/DemoUtility.java,v $ 
+ * $Date: 2002/08/01 20:27:20 $ 
+ * $Revision: 1.8 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+
+import java.awt.*;
+import java.lang.*;
+import java.util.*;
+
+public class DemoUtility
+{
+    public static final Font titleFont = new Font("TimesRoman",Font.BOLD,18);
+    public static final Font labelFont = new Font("TimesRoman",Font.BOLD,14);
+    public static final Font choiceFont = new Font("Helvetica",Font.BOLD,12);
+    public static final Font editFont = new Font("Helvetica",Font.PLAIN,14);
+    public static final Font creditFont = new Font("Helvetica",Font.PLAIN,10);
+    public static final Font numberFont = new Font("sansserif", Font.PLAIN, 14);
+
+    public static final Color bgColor = Color.lightGray;
+    public static final Color choiceColor = Color.white;
+
+    public static final String copyright1 =
+        "Copyright (C) IBM Corp and others. 1997 - 2002 All Rights Reserved";
+
+    /**
+    Provides easy way to use basic functions of GridBagLayout, without
+    the complications. After building a panel, and inserting all the
+    * subcomponents, call this to lay it out in the desired number of columns.
+    */
+    public static void fixGrid(Container cont, int columns) {
+        GridBagLayout gridbag = new GridBagLayout();
+        cont.setLayout(gridbag);
+
+        GridBagConstraints c = new GridBagConstraints();
+        c.fill = GridBagConstraints.VERTICAL;
+        c.weightx = 1.0;
+        c.insets = new Insets(2,2,2,2);
+
+        Component[] components = cont.getComponents();
+        for (int i = 0; i < components.length; ++i) {
+            // not used int colNumber = i%columns;
+            c.gridwidth = 1;    // default
+            if ((i%columns) == columns - 1)
+                c.gridwidth = GridBagConstraints.REMAINDER;    // last in grid
+            if (components[i] instanceof Label) {
+                switch (((Label)components[i]).getAlignment()) {
+                case Label.CENTER: c.anchor = GridBagConstraints.CENTER; break;
+                case Label.LEFT: c.anchor = GridBagConstraints.WEST; break;
+                case Label.RIGHT: c.anchor = GridBagConstraints.EAST; break;
+                }
+            }
+            gridbag.setConstraints(components[i], c);
+        }
+
+    }
+
+    /**
+    Provides easy way to change the spacing around an object in a GridBagLayout.
+    Call AFTER fixGridBag, passing in the container, the component, and the
+    new insets.
+    */
+    public static void setInsets(Container cont, Component comp, Insets insets) {
+        GridBagLayout gbl = (GridBagLayout)cont.getLayout();
+        GridBagConstraints g = gbl.getConstraints(comp);
+        g.insets = insets;
+        gbl.setConstraints(comp,g);
+    }
+
+    public static Panel createSpacer() {
+        Panel spacer = new Panel();
+        spacer.setLayout(null);
+        spacer.setSize(1000, 1);
+        return spacer;
+    }
+
+    // to avoid goofy updates and misplaced cursors
+    public static void setText(TextComponent area, String newText) {
+        String foo = area.getText();
+        if (foo.equals(newText)) return;
+        area.setText(newText);
+    }
+    
+    /**
+     * Compares two locals. Return value is negative
+     * if they're different, and more positive the more
+     * fields that match.
+     */
+     
+    public static int compareLocales(Locale l1, Locale l2)
+    {
+        int result = -1;
+        
+        if (l1.getLanguage().equals(l2.getLanguage())) {
+            result += 1;
+            
+            if (l1.getCountry().equals(l2.getCountry())) {
+                result += 1;
+                
+                if (l1.getVariant().equals(l2.getVariant())) {
+                    result += 1;
+                }
+            }
+        }
+        
+        return result;
+    }
+    
+    /**
+     * Get the G7 locale list for demos.
+     */
+    public static Locale[] getG7Locales() {
+        return localeList;
+    }
+    private static Locale[] localeList = {
+        new Locale("DA", "DK", ""),
+        new Locale("EN", "US", ""),
+        new Locale("EN", "GB", ""),
+        new Locale("EN", "CA", ""),
+        new Locale("FR", "FR", ""),
+        new Locale("FR", "CA", ""),
+        new Locale("DE", "DE", ""),
+        new Locale("IT", "IT", ""),
+    //new Locale("JA", "JP", ""),
+    };
+}
diff --git a/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java b/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java
new file mode 100755
index 0000000..2fc4184
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java
@@ -0,0 +1,804 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java,v $ 
+ * $Date: 2002/03/19 00:17:01 $ 
+ * $Revision: 1.6 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+import java.awt.*;
+import java.awt.event.*;
+import java.text.*;
+import java.awt.datatransfer.*;
+
+// LIU: Changed from final to non-final
+public class DumbTextComponent extends Canvas
+  implements KeyListener, MouseListener, MouseMotionListener, FocusListener
+  {
+    private transient static final String copyright =
+      "Copyright \u00A9 1998, Mark Davis. All Rights Reserved.";
+    private transient static boolean DEBUG = false;
+
+    private String contents = "";
+    private Selection selection = new Selection();
+    private int activeStart = -1;
+    private boolean editable = true;
+
+    private transient Selection tempSelection = new Selection();
+    private transient boolean focus;
+    private transient BreakIterator lineBreaker = BreakIterator.getLineInstance();
+    private transient BreakIterator wordBreaker = BreakIterator.getWordInstance();
+    private transient BreakIterator charBreaker = BreakIterator.getCharacterInstance();
+    private transient int lineAscent;
+    private transient int lineHeight;
+    private transient int lineLeading;
+    private transient int lastHeight = 10;
+    private transient int lastWidth = 50;
+    private static final int MAX_LINES = 200; // LIU: Use symbolic name
+    private transient int[] lineStarts = new int[MAX_LINES]; // LIU
+    private transient int lineCount = 1;
+
+    private transient boolean valid = false;
+    private transient FontMetrics fm;
+    private transient boolean redoLines = true;
+    private transient boolean doubleClick = false;
+    private transient TextListener textListener;
+    private transient ActionListener selectionListener;
+    private transient Image cacheImage;
+    private transient Dimension mySize;
+    private transient int xInset = 5;
+    private transient int yInset = 5;
+    private transient Point startPoint = new Point();
+    private transient Point endPoint = new Point();
+    private transient Point caretPoint = new Point();
+    private transient Point activePoint = new Point();
+    
+    //private transient static String clipBoard;
+
+    private static final char CR = '\015'; // LIU
+
+    // ============================================
+
+    public DumbTextComponent() {
+        addMouseListener(this);
+        addMouseMotionListener(this);
+        addKeyListener(this);
+        addFocusListener(this);
+        setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR));
+
+    }
+
+// ================ Events ====================
+
+    public boolean isFocusTraversable() { return true; }
+
+	public void addActionListener(ActionListener l) {
+        selectionListener = AWTEventMulticaster.add(selectionListener, l);
+	}
+
+	public void removeActionListener(ActionListener l) {
+        selectionListener = AWTEventMulticaster.remove(selectionListener, l);
+	}
+
+	public void addTextListener(TextListener l) {
+        textListener = AWTEventMulticaster.add(textListener, l);
+	}
+
+	public void removeTextListener(TextListener l) {
+        textListener = AWTEventMulticaster.remove(textListener, l);
+	}
+
+    private transient boolean pressed;
+
+	public void mousePressed(MouseEvent e) {
+	    if (DEBUG) System.out.println("mousePressed");
+	    if (pressed) {
+	        select(e,false);
+	    } else {
+            doubleClick = e.getClickCount() > 1;
+            requestFocus();
+            select(e, true);
+    	    pressed = true;
+	    }
+	}
+
+	public void mouseDragged(MouseEvent e) {
+	    if (DEBUG) System.out.println("mouseDragged");
+	    select(e, false);
+	}
+
+	public void mouseReleased(MouseEvent e) {
+	    if (DEBUG) System.out.println("mouseReleased");
+	    pressed = false;
+	}
+
+	public void mouseEntered(MouseEvent e) {
+	    //if (pressed) select(e, false);
+	}
+
+	public void mouseExited(MouseEvent e){
+	    //if (pressed) select(e, false);
+	}
+
+	public void mouseClicked(MouseEvent e) {}
+	public void mouseMoved(MouseEvent e) {}
+
+
+    public void focusGained(FocusEvent e) {
+	    if (DEBUG) System.out.println("focusGained");
+	    focus = true;
+	    valid = false;
+	    repaint(16);
+	}
+	public void focusLost(FocusEvent e) {
+	    if (DEBUG) System.out.println("focusLost");
+	    focus = false;
+	    valid = false;
+	    repaint(16);
+	}
+
+    public void select(MouseEvent e, boolean first) {
+        setKeyStart(-1);
+	    point2Offset(e.getPoint(), tempSelection);
+        if (first) {
+            if ((e.getModifiers() & InputEvent.SHIFT_MASK) == 0) {
+                tempSelection.anchor = tempSelection.caret;
+            }
+	    }
+	    // fix words
+	    if (doubleClick) {
+	        tempSelection.expand(wordBreaker);
+	    }
+	    select(tempSelection);
+    }
+    
+	public void keyPressed(KeyEvent e) {
+        int code = e.getKeyCode();
+        if (DEBUG) System.out.println("keyPressed "
+          + hex((char)code) + ", " + hex((char)e.getModifiers()));
+        int start = selection.getStart();
+        int end = selection.getEnd();
+        boolean shift = (e.getModifiers() & KeyEvent.SHIFT_MASK) != 0;
+        boolean ctrl = (e.getModifiers() & KeyEvent.CTRL_MASK) != 0;
+                
+        switch (code) {
+        case KeyEvent.VK_Q:
+            if (!ctrl || !editable) break;
+            setKeyStart(-1);
+            fixHex();
+            break;
+        case KeyEvent.VK_V:
+            if (!ctrl) break;
+            if (!editable) {
+                this.getToolkit().beep();
+            } else {
+                paste();
+            }
+            break;
+        case KeyEvent.VK_C:
+            if (!ctrl) break;
+            copy();
+            break;
+        case KeyEvent.VK_X:
+            if (!ctrl) break;
+            if (!editable) {
+                this.getToolkit().beep();
+            } else {
+                copy();
+                insertText("");
+            }
+            break;
+        case KeyEvent.VK_A:
+            if (!ctrl) break;
+            setKeyStart(-1);
+            select(Integer.MAX_VALUE, 0, false);
+            break;
+        case KeyEvent.VK_RIGHT:
+            setKeyStart(-1);
+            tempSelection.set(selection);
+            tempSelection.nextBound(ctrl ? wordBreaker : charBreaker, +1, shift);
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_LEFT:
+            setKeyStart(-1);
+            tempSelection.set(selection);
+            tempSelection.nextBound(ctrl ? wordBreaker : charBreaker, -1, shift);
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_UP: // LIU: Add support for up arrow
+            setKeyStart(-1);
+            tempSelection.set(selection);
+            tempSelection.caret = lineDelta(tempSelection.caret, -1);
+            if (!shift) {
+                tempSelection.anchor = tempSelection.caret;
+            }
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_DOWN: // LIU: Add support for down arrow
+            setKeyStart(-1);
+            tempSelection.set(selection);
+            tempSelection.caret = lineDelta(tempSelection.caret, +1);
+            if (!shift) {
+                tempSelection.anchor = tempSelection.caret;
+            }
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_DELETE: // LIU: Add delete key support
+            if (!editable) break;
+            setKeyStart(-1);
+            if (contents.length() == 0) break;
+            start = selection.getStart();
+            end = selection.getEnd();
+            if (start == end) {
+                ++end;
+                if (end > contents.length()) {
+                    getToolkit().beep();
+                    return;
+                }
+            }
+            replaceRange("", start, end);
+            break;            
+        }
+    }
+
+    void copy() {
+        Clipboard cb = this.getToolkit().getSystemClipboard();
+        StringSelection ss = new StringSelection(
+            contents.substring(selection.getStart(), selection.getEnd()));
+        cb.setContents(ss, ss);
+    }
+    
+    void paste () {
+        Clipboard cb = this.getToolkit().getSystemClipboard();
+        Transferable t = cb.getContents(this);
+        if (t == null) {
+            this.getToolkit().beep();
+            return;
+        }
+        try {
+            String temp = (String) t.getTransferData(DataFlavor.stringFlavor);
+            insertText(temp);
+        } catch (Exception e) {
+            this.getToolkit().beep();
+        }            
+    }
+
+    /**
+     * LIU: Given an offset into contents, moves up or down by lines,
+     * according to lineStarts[].
+     * @param off the offset into contents
+     * @param delta how many lines to move up (< 0) or down (> 0)
+     * @return the new offset into contents
+     */
+    private int lineDelta(int off, int delta) {
+        int line = findLine(off, false);
+        int posInLine = off - lineStarts[line];
+        // System.out.println("off=" + off + " at " + line + ":" + posInLine);
+        line += delta;
+        if (line < 0) {
+            line = posInLine = 0;
+        } else if (line >= lineCount) {
+            return contents.length();
+        }
+        off = lineStarts[line] + posInLine;
+        if (off >= lineStarts[line+1]) {
+            off = lineStarts[line+1] - 1;
+        }
+        return off;
+    }
+      
+	public void keyReleased(KeyEvent e) {
+        int code = e.getKeyCode();
+        if (DEBUG) System.out.println("keyReleased "
+          + hex((char)code) + ", " + hex((char)e.getModifiers()));
+    }
+
+	public void keyTyped(KeyEvent e) {
+        char ch = e.getKeyChar();
+        if (DEBUG) System.out.println("keyTyped "
+          + hex((char)ch) + ", " + hex((char)e.getModifiers()));
+        if ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0) return;
+        int start, end;
+        switch (ch) {
+        case KeyEvent.CHAR_UNDEFINED:
+            break;
+        case KeyEvent.VK_BACK_SPACE:
+            //setKeyStart(-1);
+            if (!editable) break;
+            if (contents.length() == 0) break;
+            start = selection.getStart();
+            end = selection.getEnd();
+            if (start == end) {
+                --start;
+                if (start < 0) {
+                    getToolkit().beep(); // LIU: Add audio feedback of NOP
+                    return;
+                }
+            }
+            replaceRange("", start, end);
+            break;        
+        case KeyEvent.VK_DELETE:
+            //setKeyStart(-1);
+            if (!editable) break;
+            if (contents.length() == 0) break;
+            start = selection.getStart();
+            end = selection.getEnd();
+            if (start == end) {
+                ++end;
+                if (end > contents.length()) {
+                    getToolkit().beep(); // LIU: Add audio feedback of NOP
+                    return;
+                }
+            }
+            replaceRange("", start, end);
+            break;
+        default:
+            if (!editable) break;
+            // LIU: Dispatch to subclass API
+            handleKeyTyped(e);
+            break;
+        }
+    }
+
+    // LIU: Subclass API for handling of key typing
+    protected void handleKeyTyped(KeyEvent e) {
+        insertText(String.valueOf(e.getKeyChar()));
+    }
+    
+    protected void setKeyStart(int keyStart) {
+        if (activeStart != keyStart) {
+            activeStart = keyStart;
+            repaint(10);
+        }
+    }
+    
+    protected void validateKeyStart() {
+    	if (activeStart > selection.getStart()) {
+            activeStart = selection.getStart();
+            repaint(10);
+        }
+    }
+    
+    protected int getKeyStart() {
+        return activeStart;
+    }
+
+// ===================== Control ======================
+
+    public synchronized void setEditable(boolean b) {
+        editable = b;
+    }
+
+    public boolean isEditable() {
+        return editable;
+    }
+
+    public void select(Selection newSelection) {
+        newSelection.pin(contents);
+        if (!selection.equals(newSelection)) {
+            selection.set(newSelection);
+            if (selectionListener != null) {
+                selectionListener.actionPerformed(
+                  new ActionEvent(this, ActionEvent.ACTION_PERFORMED,
+                    "Selection Changed", 0));
+            }
+            repaint(10);
+            valid = false;
+        }
+    }
+
+    public void select(int start, int end) {
+        select(start, end, false);
+    }
+
+    public void select(int start, int end, boolean clickAfter) {
+        tempSelection.set(start, end, clickAfter);
+        select(tempSelection);
+    }
+
+    public int getSelectionStart() {
+        return selection.getStart();
+    }
+
+    public int getSelectionEnd() {
+        return selection.getEnd();
+    }
+
+    public void setBounds(int x, int y, int w, int h) {
+        super.setBounds(x,y,w,h);
+        redoLines = true;
+    }
+
+    public Dimension getPreferredSize() {
+        return new Dimension(lastWidth,lastHeight);
+    }
+
+    public Dimension getMaximumSize() {
+        return new Dimension(lastWidth,lastHeight);
+    }
+
+    public Dimension getMinimumSize() {
+        return new Dimension(lastHeight,lastHeight);
+    }
+
+    public void setText(String text) {
+        setText2(text);
+        select(tempSelection.set(selection).pin(contents));
+    }
+
+    public void setText2(String text) {
+        contents = text;
+        charBreaker.setText(text);
+        wordBreaker.setText(text);
+        lineBreaker.setText(text);
+        redoLines = true;
+        if (textListener != null)
+            textListener.textValueChanged(
+              new TextEvent(this, TextEvent.TEXT_VALUE_CHANGED));
+        repaint(16);
+    }
+
+    public void insertText(String text) {
+        if (activeStart == -1) activeStart = selection.getStart();
+        replaceRange(text, selection.getStart(), selection.getEnd());
+    }
+
+    public void replaceRange(String s, int start, int end) {
+        setText2(contents.substring(0,start) + s
+          + contents.substring(end));
+        select(tempSelection.set(selection).
+          fixAfterReplace(start, end, s.length()));
+        validateKeyStart();
+    }
+
+    public String getText() {
+        return contents;
+    }
+
+    public void setFont(Font font) {
+        super.setFont(font);
+        redoLines = true;
+        repaint(16);
+    }
+
+    // ================== Graphics ======================
+
+    public void update(Graphics g) {
+        if (DEBUG) System.out.println("update");
+        paint(g);
+    }
+
+    public void paint(Graphics g) {
+        mySize = getSize();
+        if (cacheImage == null
+          || cacheImage.getHeight(this) != mySize.height
+          || cacheImage.getWidth(this) != mySize.width) {
+            cacheImage = createImage(mySize.width, mySize.height);
+            valid = false;
+        }
+        if (!valid || redoLines) {
+            if (DEBUG) System.out.println("painting");
+            paint2(cacheImage.getGraphics());
+            valid = true;
+        }
+        //getToolkit().sync();
+        if (DEBUG) System.out.println("copying");
+        g.drawImage(cacheImage,
+          0, 0, mySize.width, mySize.height,
+          0, 0, mySize.width, mySize.height,
+          this);
+    }
+
+    public void paint2(Graphics g) {
+        g.clearRect(0, 0, mySize.width, mySize.height);
+        if (DEBUG) System.out.println("print");
+        if (focus) g.setColor(Color.black);
+        else g.setColor(Color.gray);
+        g.drawRect(0,0,mySize.width-1,mySize.height-1);
+        g.setClip(1,1,
+          mySize.width-2,mySize.height-2);
+        g.setColor(Color.black);
+        g.setFont(getFont());
+        fm = g.getFontMetrics();
+        lineAscent = fm.getAscent();
+        lineLeading = fm.getLeading();
+        lineHeight = lineAscent + fm.getDescent() + lineLeading;
+        int y = yInset + lineAscent;
+        String lastSubstring = "";
+        if (redoLines) fixLineStarts(mySize.width-xInset-xInset);
+        for (int i = 0; i < lineCount; y += lineHeight, ++i) {
+            // LIU: Don't display terminating ^M characters
+            int lim = lineStarts[i+1];
+            if (lim > 0 && contents.length() > 0 &&
+                contents.charAt(lim-1) == CR) --lim;
+            lastSubstring = contents.substring(lineStarts[i],lim);
+            g.drawString(lastSubstring, xInset, y);
+        }
+        drawSelection(g, lastSubstring);
+        lastHeight = y + yInset - lineHeight + yInset;
+        lastWidth = mySize.width-xInset-xInset;
+    }
+
+    void paintRect(Graphics g, int x, int y, int w, int h) {
+        if (focus) {
+            g.fillRect(x, y, w, h);
+        } else {
+            g.drawRect(x, y, w-1, h-1);
+        }
+    }
+
+    public void drawSelection(Graphics g, String lastSubstring) {
+        g.setXORMode(Color.black);
+        if (activeStart != -1) {
+            offset2Point(activeStart, false, activePoint);
+            g.setColor(Color.magenta);
+            int line = activePoint.x - 1;
+            g.fillRect(line, activePoint.y, 1, lineHeight);
+        }
+        if (selection.isCaret()) {
+            offset2Point(selection.caret, selection.clickAfter, caretPoint);
+        } else {
+            if (focus) g.setColor(Color.blue);
+            else g.setColor(Color.yellow);
+            offset2Point(selection.getStart(), true, startPoint);
+            offset2Point(selection.getEnd(), false, endPoint);
+            if (selection.getStart() == selection.caret)
+                caretPoint.setLocation(startPoint);
+            else caretPoint.setLocation(endPoint);
+            if (startPoint.y == endPoint.y) {
+                paintRect(g, startPoint.x, startPoint.y,
+                  Math.max(1,endPoint.x-startPoint.x), lineHeight);
+            } else {
+                paintRect(g, startPoint.x, startPoint.y,
+                  (mySize.width-xInset)-startPoint.x, lineHeight);
+                if (startPoint.y + lineHeight < endPoint.y)
+                  paintRect(g, xInset, startPoint.y + lineHeight,
+                  (mySize.width-xInset)-xInset, endPoint.y - startPoint.y - lineHeight);
+                paintRect(g, xInset, endPoint.y, endPoint.x-xInset, lineHeight);
+            }
+        }
+        if (focus || selection.isCaret()) {
+            if (focus) g.setColor(Color.green);
+            else g.setColor(Color.red);
+            int line = caretPoint.x - (selection.clickAfter ? 0 : 1);
+            g.fillRect(line, caretPoint.y, 1, lineHeight);
+            int w = lineHeight/12 + 1;
+            int braces = line - (selection.clickAfter ? -1 : w);
+            g.fillRect(braces, caretPoint.y, w, 1);
+            g.fillRect(braces, caretPoint.y + lineHeight - 1, w, 1);
+        }
+    }
+
+    public Point offset2Point(int off, boolean start, Point p) {
+        int line = findLine(off, start);
+        int width = 0;
+        try {
+            width = fm.stringWidth(
+              contents.substring(lineStarts[line], off));
+        } catch (Exception e) {
+            System.out.println(e);
+        }
+        p.x = width + xInset;
+        if (p.x > mySize.width - xInset)
+            p.x = mySize.width - xInset;
+        p.y = lineHeight * line + yInset;
+        return p;
+    }
+
+    private int findLine(int off, boolean start) {
+        // if it is start, then go to the next line!
+        if (start) ++off;
+        for (int i = 1; i < lineCount; ++i) {
+            // LIU: This was <= ; changed to < to make caret after
+            // final CR in line appear at START of next line.
+            if (off < lineStarts[i]) return i-1;
+        }
+        // LIU: Check for special case; after CR at end of the last line
+        if (off == lineStarts[lineCount] &&
+            off > 0 && contents.length() > 0 && contents.charAt(off-1) == CR) {
+            return lineCount;
+        }
+        return lineCount-1;
+    }
+
+    // offsets on any line will go from start,true to end,false
+    // excluding start,false and end,true
+    public Selection point2Offset(Point p, Selection o) {
+        if (p.y < yInset) {
+            o.caret = 0;
+            o.clickAfter = true;
+            return o;
+        }
+        int line = (p.y - yInset)/lineHeight;
+        if (line >= lineCount) {
+            o.caret = contents.length();
+            o.clickAfter = false;
+            return o;
+        }
+        int target = p.x - xInset;
+        if (target <= 0) {
+            o.caret = lineStarts[line];
+            o.clickAfter = true;
+            return o;
+        }
+        int lowGuess = lineStarts[line];
+        int lowWidth = 0;
+        int highGuess = lineStarts[line+1];
+        int highWidth = fm.stringWidth(contents.substring(lineStarts[line],highGuess));
+        if (target >= highWidth) {
+            o.caret = lineStarts[line+1];
+            o.clickAfter = false;
+            return o;
+        }
+        while (lowGuess < highGuess - 1) {
+            int guess = (lowGuess + highGuess)/2;
+            int width = fm.stringWidth(contents.substring(lineStarts[line],guess));
+            if (width <= target) {
+                lowGuess = guess;
+                lowWidth = width;
+                if (width == target) break;
+            } else {
+                highGuess = guess;
+                highWidth = width;
+            }
+        }
+        // at end, either lowWidth < target < width(low+1), or lowWidth = target
+        int highBound = charBreaker.following(lowGuess);
+        int lowBound = charBreaker.previous();
+        // we are now at character boundaries
+        if (lowBound != lowGuess)
+            lowWidth = fm.stringWidth(contents.substring(lineStarts[line],lowBound));
+        if (highBound != highGuess)
+            highWidth = fm.stringWidth(contents.substring(lineStarts[line],highBound));
+        // we now have the right widths
+        if (target - lowWidth < highWidth - target) {
+            o.caret = lowBound;
+            o.clickAfter = true;
+        } else {
+            o.caret = highBound;
+            o.clickAfter = false;
+        }
+        // we now have the closest!
+        return o;
+    }
+
+    private void fixLineStarts(int width) {
+        lineCount = 1;
+        lineStarts[0] = 0;
+        if (contents.length() == 0) {
+            lineStarts[1] = 0;
+            return;
+        }
+        int end = 0;
+        // LIU: Add check for MAX_LINES
+        for (int start = 0; start < contents.length() && lineCount < MAX_LINES;
+             start = end) {
+            end = nextLine(fm, start, width);
+            lineStarts[lineCount++] = end;
+            if (end == start) { // LIU: Assertion
+                throw new RuntimeException("nextLine broken");
+            }
+        }
+        --lineCount;
+        redoLines = false;
+    }
+
+    // LIU: Enhanced to wrap long lines.  Bug with return of start fixed.
+    public int nextLine(FontMetrics fm, int start, int width) {
+        int len = contents.length();
+        for (int i = start; i < len; ++i) {
+            // check for line separator
+            char ch = (contents.charAt(i));
+            if (ch >= 0x000A && ch <= 0x000D || ch == 0x2028 || ch == 0x2029) {
+                len = i + 1;
+                if (ch == 0x000D && i+1 < len && contents.charAt(i+1) == 0x000A) // crlf
+                    ++len; // grab extra char
+                break;
+            }
+        }
+        String subject = contents.substring(start,len);
+        if (visibleWidth(fm, subject) <= width)
+          return len;
+
+        // LIU: Remainder of this method rewritten to accomodate lines
+        // longer than the component width by first trying to break
+        // into lines; then words; finally chars.
+        int n = findFittingBreak(fm, subject, width, lineBreaker);
+        if (n == 0) {
+            n = findFittingBreak(fm, subject, width, wordBreaker);
+        }
+        if (n == 0) {
+            n = findFittingBreak(fm, subject, width, charBreaker);
+        }
+        return n > 0 ? start + n : len;
+    }
+
+    /**
+     * LIU: Finds the longest substring that fits a given width
+     * composed of subunits returned by a BreakIterator.  If the smallest
+     * subunit is too long, returns 0.
+     * @param fm metrics to use
+     * @param line the string to be fix into width
+     * @param width line.substring(0, result) must be <= width
+     * @param breaker the BreakIterator that will be used to find subunits
+     * @return maximum characters, at boundaries returned by breaker,
+     * that fit into width, or zero on failure
+     */
+    private int findFittingBreak(FontMetrics fm, String line, int width,
+                                 BreakIterator breaker) {
+        breaker.setText(line);
+        int last = breaker.first();
+        int end = breaker.next();
+        while (end != BreakIterator.DONE &&
+               visibleWidth(fm, line.substring(0, end)) <= width) {
+            last = end;
+            end = breaker.next();
+        }
+        return last;
+    }
+
+    public int visibleWidth(FontMetrics fm, String s) {
+        int i;
+        for (i = s.length()-1; i >= 0; --i) {
+            char ch = s.charAt(i);
+            if (!(ch == ' ' || ch >= 0x000A && ch <= 0x000D || ch == 0x2028 || ch == 0x2029))
+              return fm.stringWidth(s.substring(0,i+1));;
+        }
+        return 0;
+    }
+
+// =============== Utility ====================
+
+    private void fixHex() {
+        if (selection.getEnd() == 0) return;
+        int store = 0;
+        int places = 1;
+        int count = 0;
+        int min = Math.min(8,selection.getEnd());
+        for (int i = 0; i < min; ++i) {
+            char ch = contents.charAt(selection.getEnd()-1-i);
+            int value = Character.getNumericValue(ch);
+            if (value < 0 || value > 15) break;
+            store += places * value;
+            ++count;
+            places *= 16;
+        }
+        String add = "";
+        int bottom = store & 0xFFFF;
+        if (store >= 0xD8000000 && store < 0xDC000000
+          && bottom >= 0xDC00 && bottom < 0xE000) { // surrogates
+            add = "" + (char)(store >> 16) + (char)bottom;
+        } else if (store > 0xFFFF && store <= 0x10FFFF) {
+            store -= 0x10000;
+            add = "" + (char)(((store >> 10) & 0x3FF) + 0xD800)
+              + (char)((store & 0x3FF) + 0xDC00);
+              
+        } else if (count >= 4) {
+            count = 4;
+            add = ""+(char)(store & 0xFFFF);
+        } else {
+            count = 1;
+            char ch = contents.charAt(selection.getEnd()-1);
+            add = hex(ch);
+            if (ch >= 0xDC00 && ch <= 0xDFFF && selection.getEnd() > 1) {
+                ch = contents.charAt(selection.getEnd()-2);
+                if (ch >= 0xD800 && ch <= 0xDBFF) {
+                    count = 2;
+                    add = hex(ch) + add;
+                }
+            }
+        }
+        replaceRange(add, selection.getEnd()-count, selection.getEnd());
+    }
+
+    public static String hex(char ch) {
+        String result = Integer.toString(ch,16).toUpperCase();
+        result = "0000".substring(result.length(),4) + result;
+        return result;
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/impl/Selection.java b/src/com/ibm/icu/dev/demo/impl/Selection.java
new file mode 100755
index 0000000..59c13cd
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/Selection.java
@@ -0,0 +1,167 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/impl/Selection.java,v $ 
+ * $Date: 2002/02/16 03:04:57 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+import java.text.*;
+
+public final class Selection {
+
+    public int anchor;
+    public int caret;
+    public boolean clickAfter;
+
+    public int getStart() {
+        return anchor < caret ? anchor : caret;
+    }
+
+    public int getEnd() {
+        return anchor > caret ? anchor : caret;
+    }
+
+    public boolean isCaret() {
+        return anchor == caret;
+    }
+
+    public Selection set(Selection other) {
+        anchor = other.anchor;
+        caret = other.caret;
+        clickAfter = other.clickAfter;
+        return this;
+    }
+
+    public Selection set(int anchor, int caret, boolean clickAfter) {
+        this.anchor = anchor;
+        this.caret = caret;
+        this.clickAfter = clickAfter;
+        return this;
+    }
+
+    public boolean equals(Object other) {
+        Selection other2 = (Selection)other;
+        return anchor == other2.anchor
+          && caret == other2.caret
+          && clickAfter == other2.clickAfter;
+    }
+
+    public boolean isLessThan(Selection other) {
+        return getStart() < other.getEnd();
+    }
+
+    public Selection pin(String text) {
+        if (anchor > text.length()) {
+            anchor = text.length();
+        } else if (anchor < 0) {
+            anchor = 0;
+        }
+        if (caret > text.length()) {
+            caret = text.length();
+            clickAfter = true;
+        } else if (caret < 0) {
+            caret = 0;
+            clickAfter = false;
+        }
+        return this;
+    }
+
+    public Selection swap(Selection after) {
+        int temp = anchor;
+        anchor = after.anchor;
+        after.anchor = temp;
+        temp = caret;
+        caret = after.caret;
+        after.caret = temp;
+        boolean b = clickAfter;
+        clickAfter = after.clickAfter;
+        after.clickAfter = b;
+        return this;
+    }
+
+    public Selection fixAfterReplace(int start, int end, int len) {
+        if (anchor >= start) {
+            if (anchor < end) anchor = end;
+            anchor = start + len + anchor - end;
+        }
+        if (caret >= start) {
+            if (caret < end) caret = end;
+            caret = start + len + caret - end;
+        }
+        return this;
+    }
+
+        // Mac & Windows considerably different
+        // Mac: end++. If start!=end, start=end
+        //  SHIFT: move end right
+        //  CTL: no different
+        // Windows:
+        //  UNSHIFTED: if start!=end, start = end, else start=end=end+1;
+        //       anchor = tip = start
+        //  SHIFT: tip++
+        //  CTL: if start!=end, start = end = nextbound(end-1),
+        //   else start=end=nextbound(end)
+        //       anchor = tip = start
+        //  CTL/SHIFT: tip = nextbound(tip)
+
+    public Selection nextBound(BreakIterator breaker,
+      int direction, boolean extend) {
+        if (!extend && anchor != caret) caret -= direction;
+        caret = next(caret, breaker, direction, true);
+        if (!extend) anchor = caret;
+        clickAfter = false;
+        return this;
+    }
+
+    // expand start and end to word breaks--if they are not already on one
+    public void expand(BreakIterator breaker) {
+        if (anchor <= caret) {
+            anchor = next(anchor,breaker,-1,false);
+            caret = next(caret,breaker,1,false);
+            /*
+            try {
+                breaker.following(anchor);
+                anchor = breaker.previous();
+            } catch (Exception e) {}
+            try {
+                caret = breaker.following(caret-1);
+            } catch (Exception e) {}
+            */
+        } else {
+            anchor = next(anchor,breaker,1,false);
+            caret = next(caret,breaker,-1,false);
+            /*
+            try {
+                breaker.following(caret);
+                caret = breaker.previous();
+            } catch (Exception e) {}
+            try {
+                anchor = breaker.following(anchor-1);
+            } catch (Exception e) {}
+            */
+        }
+    }
+
+    // different = false - move to next boundary, unless on one
+    // true - move to next boundary, even if on one
+    public static int next(int position, BreakIterator breaker,
+      int direction, boolean different) {
+        if (!different) position -= direction;
+        try {
+            if (direction > 0) {
+                position = breaker.following(position);
+            } else {
+                breaker.following(position-1);
+                position = breaker.previous();
+            }
+        } catch (Exception e) {}
+        return position;
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/demo/impl/package.html b/src/com/ibm/icu/dev/demo/impl/package.html
new file mode 100755
index 0000000..7498c6b
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/impl/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 17:43:40 $
+-->
+</head>
+<body bgcolor="white">
+Shared utilities for demo applications and Applets.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/rbbi/BreakIteratorRules_en_US_DEMO.java b/src/com/ibm/icu/dev/demo/rbbi/BreakIteratorRules_en_US_DEMO.java
new file mode 100755
index 0000000..ded2552
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/rbbi/BreakIteratorRules_en_US_DEMO.java
@@ -0,0 +1,223 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/rbbi/BreakIteratorRules_en_US_DEMO.java,v $ 
+ * $Date: 2002/02/19 04:10:23 $ 
+ * $Revision: 1.8 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.demo.rbbi;
+
+import java.util.ListResourceBundle;
+import java.net.URL;
+
+/**
+ * This resource bundle is included for testing and demonstration purposes only.
+ * It applies the dictionary-based algorithm to English text that has had all the
+ * spaces removed.  Once we have good test cases for Thai, we will replace this
+ * with good resource data (and a good dictionary file) for Thai
+ */
+public class BreakIteratorRules_en_US_DEMO extends ListResourceBundle {
+    
+    private static final URL url =
+        BreakIteratorRules_en_US_DEMO.class.getResource("/com/ibm/data/misc/english.dict");
+    
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    static final Object[][] contents = {
+        // names of classes to instantiate for the different kinds of break
+        // iterator.  Notice we're now using DictionaryBasedBreakIterator
+        // for word and line breaking.
+        { "BreakIteratorClasses",
+            new String[] { "RuleBasedBreakIterator",           // character-break iterator class
+                           "DictionaryBasedBreakIterator",     // word-break iterator class
+                           "DictionaryBasedBreakIterator",     // line-break iterator class
+                           "RuleBasedBreakIterator" }          // sentence-break iterator class
+        },
+        
+        // These are the same word-breaking rules as are specified in the default
+        // resource, except that the Latin letters, apostrophe, and hyphen are
+        // specified as dictionary characters
+        { "WordBreakRules",
+            // ignore non-spacing marks, enclosing marks, and format characters,
+            // all of which should not influence the algorithm
+            "$_ignore_=[[:Mn:][:Me:][:Cf:]];"
+
+            // lower and upper case Roman letters, apostrophy and dash are
+            // in the English dictionary
+            + "$_dictionary_=[a-zA-Z\\'\\-];"
+
+            // Hindi phrase separator, kanji, katakana, hiragana, CJK diacriticals,
+            // other letters, and digits
+            + "$danda=[\u0964\u0965];"
+            + "$kanji=[\u3005\u4e00-\u9fa5\uf900-\ufa2d];"
+            + "$kata=[\u3099-\u309c\u30a1-\u30fe];"
+            + "$hira=[\u3041-\u309e\u30fc];"
+            + "$let=[[[:L:][:Mc:]]-[$kanji$kata$hira]];"
+            + "$dgt=[:N:];"
+
+            // punctuation that can occur in the middle of a word: currently
+            // dashes, apostrophes, and quotation marks
+            + "$mid_word=[[:Pd:]\u00ad\u2027\\\"\\\'];"
+
+            // punctuation that can occur in the middle of a number: currently
+            // apostrophes, qoutation marks, periods, commas, and the Arabic
+            // decimal point
+            + "$mid_num=[\\\"\\\'\\,\u066b\\.];"
+
+            // punctuation that can occur at the beginning of a number: currently
+            // the period, the number sign, and all currency symbols except the cents sign
+            + "$pre_num=[[[:Sc:]-[\u00a2]]\\#\\.];"
+
+            // punctuation that can occur at the end of a number: currently
+            // the percent, per-thousand, per-ten-thousand, and Arabic percent
+            // signs, the cents sign, and the ampersand
+            + "$post_num=[\\%\\&\u00a2\u066a\u2030\u2031];"
+
+            // line separators: currently LF, FF, PS, and LS
+            + "$ls=[\n\u000c\u2028\u2029];"
+
+            // whitespace: all space separators and the tab character
+            + "$ws=[[:Zs:]\t];"
+
+            // a word is a sequence of letters that may contain internal
+            // punctuation, as long as it begins and ends with a letter and
+            // never contains two punctuation marks in a row
+            + "$word=($let+($mid_word$let+)*$danda?);"
+
+            // a number is a sequence of digits that may contain internal
+            // punctuation, as long as it begins and ends with a digit and
+            // never contains two punctuation marks in a row.
+            + "$number=($dgt+($mid_num$dgt+)*);"
+
+            // break after every character, with the following exceptions
+            // (this will cause punctuation marks that aren't considered
+            // part of words or numbers to be treated as words unto themselves)
+            + ".;"
+
+            // keep together any sequence of contiguous words and numbers
+            // (including just one of either), plus an optional trailing
+            // number-suffix character
+            + "$word?($number$word)*($number$post_num?)?;"
+
+            // keep together and sequence of contiguous words and numbers
+            // that starts with a number-prefix character and a number,
+            // and may end with a number-suffix character
+            + "$pre_num($number$word)*($number$post_num?)?;"
+
+            // keep together runs of whitespace (optionally with a single trailing
+            // line separator or CRLF sequence)
+            + "$ws*\r?$ls?;"
+
+            // keep together runs of Katakana
+            + "$kata*;"
+
+            // keep together runs of Hiragana
+            + "$hira*;"
+
+            // keep together runs of Kanji
+            + "$kanji*;"},
+        
+        // These are the same line-breaking rules as are specified in the default
+        // resource, except that the Latin letters, apostrophe, and hyphen are
+        // specified as dictionary characters
+        { "LineBreakRules",
+            // ignore non-spacing marks, enclosing marks, and format characters
+            "$_ignore_=[[:Mn:][:Me:][:Cf:]];"
+
+            // lower and upper case Roman letters, apostrophy and dash
+            // are in the English dictionary
+            + "$_dictionary_=[a-zA-Z\\'\\-];"
+
+            // Hindi phrase separators
+            + "$danda=[\u0964\u0965];"
+
+            // characters that always cause a break: ETX, tab, LF, FF, LS, and PS
+            + "$break=[\u0003\t\n\f\u2028\u2029];"
+
+            // characters that always prevent a break: the non-breaking space
+            // and similar characters
+            + "$nbsp=[\u00a0\u2007\u2011\ufeff];"
+
+            // whitespace: space separators and control characters, except for
+            // CR and the other characters mentioned above
+            + "$space=[[[:Zs:][:Cc:]]-[$nbsp$break\r]];"
+
+            // dashes: dash punctuation and the discretionary hyphen, except for
+            // non-breaking hyphens
+            + "$dash=[[[:Pd:]\u00ad]-[$nbsp]];"
+
+            // characters that stick to a word if they precede it: currency symbols
+            // (except the cents sign) and starting punctuation
+            + "$pre_word=[[[:Sc:]-[\u00a2]][:Ps:]\\\"\\\'];"
+
+            // characters that stick to a word if they follow it: ending punctuation,
+            // other punctuation that usually occurs at the end of a sentence,
+            // small Kana characters, some CJK diacritics, etc.
+            + "$post_word=[[:Pe:]\\!\\\"\\\'\\%\\.\\,\\:\\;\\?\u00a2\u00b0\u066a\u2030-\u2034"
+                    + "\u2103\u2105\u2109\u3001\u3002\u3005\u3041\u3043\u3045\u3047\u3049\u3063"
+                    + "\u3083\u3085\u3087\u308e\u3099-\u309e\u30a1\u30a3\u30a5\u30a7\u30a9"
+                    + "\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u30fc-\u30fe\uff01\uff0c"
+                    + "\uff0e\uff1f];"
+
+            // Kanji: actually includes both Kanji and Kana, except for small Kana and
+            // CJK diacritics
+            + "$kanji=[[\u4e00-\u9fa5\uf900-\ufa2d\u3041-\u3094\u30a1-\u30fa]-[$post_word$_ignore_]];"
+
+            // digits
+            + "$digit=[[:Nd:][:No:]];"
+
+            // punctuation that can occur in the middle of a number: periods and commas
+            + "$mid_num=[\\.\\,];"
+
+            // everything not mentioned above, plus the quote marks (which are both
+            // <pre-word>, <post-word>, and <char>)
+            + "$char=[^$break$space$dash$kanji$nbsp$_ignore_$pre_word$post_word$mid_num$danda\r\\\"\\\'];"
+
+            // a "number" is a run of prefix characters and dashes, followed by one or
+            // more digits with isolated number-punctuation characters interspersed
+            + "$number=([$pre_word$dash]*$digit+($mid_num$digit+)*);"
+
+            // the basic core of a word can be either a "number" as defined above, a single
+            // "Kanji" character, or a run of any number of not-explicitly-mentioned
+            // characters (this includes Latin letters)
+            + "$word_core=([$pre_word$char]*|$kanji|$number);"
+
+            // a word may end with an optional suffix that be either a run of one or
+            // more dashes or a run of word-suffix characters, followed by an optional
+            // run of whitespace
+            + "$word_suffix=(($dash+|$post_word*)$space*);"
+
+            // a word, thus, is an optional run of word-prefix characters, followed by
+            // a word core and a word suffix (the syntax of <word-core> and <word-suffix>
+            // actually allows either of them to match the empty string, putting a break
+            // between things like ")(" or "aaa(aaa"
+            + "$word=($pre_word*$word_core$word_suffix);"
+
+            // finally, the rule that does the work: Keep together any run of words that
+            // are joined by runs of one of more non-spacing mark.  Also keep a trailing
+            // line-break character or CRLF combination with the word.  (line separators
+            // "win" over nbsp's)
+            + "$word($nbsp+$word)*\r?$break?;" },
+            
+        // these two resources specify the pathnames of the dictionary files to
+        // use for word breaking and line breaking.  Both currently refer to 
+        // a file called english.dict placed in com.ibm.icu.impl.data
+        // somewhere in the class path.  It's important to note that
+        // english.dict was created for testing purposes only, and doesn't
+        // come anywhere close to being an exhaustive dictionary of English
+        // words (basically, it contains all the words in the Declaration of
+        // Independence, and the Revised Standard Version of the book of Genesis,
+        // plus a few other words thrown in to show more interesting cases).
+        // { "WordBreakDictionary", "com\\ibm\\text\\resources\\english.dict" },
+        // { "LineBreakDictionary", "com\\ibm\\text\\resources\\english.dict" }
+        { "WordBreakDictionary", url },
+        { "LineBreakDictionary", url }
+    };
+}
diff --git a/src/com/ibm/icu/dev/demo/rbbi/DBBIDemo.java b/src/com/ibm/icu/dev/demo/rbbi/DBBIDemo.java
new file mode 100755
index 0000000..650bd2d
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/rbbi/DBBIDemo.java
@@ -0,0 +1,469 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/rbbi/DBBIDemo.java,v $ 
+ * $Date: 2002/08/01 20:27:20 $ 
+ * $Revision: 1.12 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.demo.rbbi;
+
+
+import com.ibm.icu.dev.demo.*;
+import java.applet.Applet;
+import java.awt.*;
+import java.awt.event.WindowEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.ItemEvent;
+import javax.swing.JTextArea;
+import javax.swing.JScrollPane;
+import javax.swing.BorderFactory;
+import java.util.*;
+import com.ibm.icu.dev.demo.impl.*;
+import com.ibm.icu.text.BreakIterator;
+
+public class DBBIDemo extends DemoApplet
+{
+    public static void main(String argv[]) {
+        Locale.setDefault(new Locale("en", "US", "DEMO"));
+		new DBBIDemo().showDemo();
+    }
+
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new DBBIFrame(applet);
+    }
+}
+
+
+
+class DBBIFrame extends Frame implements ItemListener
+{
+    private static final String creditString =
+        "v1.1a9, Demo";
+
+    private static final int FIELD_COLUMNS = 45;
+    private static final Font choiceFont = null;
+    private static final boolean DEBUG = false;
+    private DemoApplet applet;
+
+    final String right = "-->";
+    final String left = "<--";
+
+    private BreakIterator enum;
+    private static boolean isctrldown_ = false;
+
+JTextArea text;
+//    TextArea text;
+    Choice bound;
+
+    public DBBIFrame(DemoApplet applet)
+    {
+        this.applet = applet;
+        init();
+        start();
+    }
+
+
+
+    public void run()
+    {
+        /*
+        while (true) {
+            try {
+                checkChange();
+                Thread.sleep(250);
+            }
+            catch (InterruptedException e) {
+            }
+            catch (Exception e) {
+            }
+            catch (Throwable e) {
+            }
+        }
+        */
+    }
+
+    int s, e;
+    int ts, te;
+
+    public void checkChange()
+    {
+//        System.out.println("checkChange...");
+        if ((text.getSelectionStart() & 0x7FFF) != ts ||
+            (text.getSelectionEnd() & 0x7FFF) != te) {
+
+            // not used int tempS = text.getSelectionStart() & 0x7FFF;
+            // not used int tempE = text.getSelectionEnd() & 0x7FFF;
+
+//          System.out.println(">");
+//          select(0, 0);
+//          select(tempS, tempE);
+            //select(tempS - (ts - s), tempE - (te - e));
+//          System.out.println("<");
+
+
+//          if (s != ts || e != te) System.out.println("     s("+s+") ts("+ts+") e("+e+") te("+te+")");
+//          if (tempS != ts || tempE != te) System.out.println(">s("+s+") tempS("+tempS+") e("+e+") tempE("+tempE+")");
+//          select(s - (ts - s), e - (te - e));
+//          if (tempS != ts || tempE != te) System.out.println("s("+s+") tempS("+tempS+") e("+e+") tempE("+tempE+")");
+
+//          System.out.println("lkdslksj");
+        }
+    }
+
+    public void select(int sIn, int eIn)
+    {
+        s = sIn;
+        e = eIn;
+        text.select(s, e);
+        ts = text.getSelectionStart() & 0x7FFF;
+        te = text.getSelectionEnd() & 0x7FFF;
+//        if (s != ts || e != te) {
+//            System.out.println(">s("+s+") ts("+ts+") e("+e+") te("+te+")");
+//            System.out.println("   "+(ts-s)+","+(te-e));
+//        }
+    }
+
+    public int getSelectionStart()
+    {
+        checkChange();
+//      return s;
+        return text.getSelectionStart() & 0x7FFF;
+    }
+
+
+    public int getSelectionEnd()
+    {
+        checkChange();
+//      return e;
+        return text.getSelectionEnd() & 0x7FFF;
+    }
+
+    public final synchronized void selectRange(int s, int e)
+    {
+        try {
+            //if (getSelectionStart() != s || getSelectionEnd() != e) {
+                //text.select(s, e);
+                select(s,e);
+            //}
+//          if (getSelectionStart() != s || getSelectionEnd() != e) {
+//              System.out.println("AGH! select("+s+","+e+") -> ("+
+//              getSelectionStart()+","+getSelectionEnd()+")");
+//              text.select(s - (getSelectionStart() - s), e - (getSelectionEnd() - e));
+//          }
+        } catch (Exception exp) {
+            errorText(exp.toString());
+        }
+    }
+
+
+
+    public void init()
+    {
+        buildGUI();
+    }
+
+
+    public void start()
+    {
+    }
+
+
+    void addWithFont(Container container, Component foo, Font font) {
+        if (font != null)
+            foo.setFont(font);
+        container.add(foo);
+    }
+
+
+
+   public void buildGUI()
+    {
+        setBackground(DemoUtility.bgColor);
+        setLayout(new BorderLayout());
+
+       Panel topPanel = new Panel();
+
+            Label titleLabel =
+                new Label("Text Boundary Demo", Label.CENTER);
+            titleLabel.setFont(DemoUtility.titleFont);
+            topPanel.add(titleLabel);
+
+            //Label demo=new Label(creditString, Label.CENTER);
+            //demo.setFont(DemoUtility.creditFont);
+            //topPanel.add(demo);
+
+            Panel choicePanel = new Panel();
+
+            Label demo1=new Label("Boundaries", Label.LEFT);
+            demo1.setFont(DemoUtility.labelFont);
+            choicePanel.add(demo1);
+
+            bound = new Choice();
+                bound.setBackground(DemoUtility.choiceColor);
+            bound.addItem("Sentence");
+            bound.addItem("Line Break");
+            bound.addItem("Word");
+            bound.addItem("Char");
+            
+            bound.addItemListener(this);
+            if (choiceFont != null)
+                bound.setFont(choiceFont);
+
+            choicePanel.add(bound);
+            topPanel.add(choicePanel);
+
+            DemoUtility.fixGrid(topPanel,1);
+
+
+        add("North", topPanel);
+
+
+            int ROWS = 15;
+            int COLUMNS = 50;
+//            text = new TextArea(getInitialText(), ROWS, COLUMNS);
+text = new JTextArea(getInitialText(), ROWS, COLUMNS);
+text.setLineWrap(true);
+text.setWrapStyleWord(true);
+            text.setEditable(true);
+            text.selectAll();
+            text.setFont(DemoUtility.editFont);
+            text.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
+
+        add("Center", new JScrollPane(text, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
+
+        Panel copyrightPanel = new Panel();
+        addWithFont (copyrightPanel,
+            new Label(DemoUtility.copyright1, Label.LEFT),DemoUtility.creditFont);
+        DemoUtility.fixGrid(copyrightPanel,1);
+        add("South", copyrightPanel);
+
+        //layout();
+        handleEnumChanged();
+        
+        enableEvents(WindowEvent.WINDOW_CLOSING);
+        enableEvents(KeyEvent.KEY_PRESSED);
+        enableEvents(KeyEvent.KEY_RELEASED);
+
+        // (new Thread(this)).start();
+    }
+
+
+
+    public String getInitialText()
+    {
+        return
+"When,inthecourseofhumanevents,itbecomesnecessaryforonepeopletodissolvethepoliticalbondswhichhave"
++ "connectedthemwithanother,andtoassumeamongthepowersoftheearth,theseparateandequalstationtowhichthelaws"
++ "ofnatureandofnature'sGodentitlethem,adecentrespecttotheopinionsofmankindrequiresthattheyshoulddeclarethe"
++ "causeswhichimpelthemtotheseparation.\n"
++ "Weholdthesetruthstobeself-evident,thatallmenarecreatedequal,thattheyareendowedbytheirCreatorwithcertain"
++ "unalienablerights,thatamongthesearelife,libertyandthepursuitofhappiness.Thattosecuretheserights,governmentsare"
++ "institutedamongmen,derivingtheirjustpowersfromtheconsentofthegoverned.Thatwheneveranyformofgovernment"
++ "becomesdestructivetotheseends,itistherightofthepeopletoalterortoabolishit,andtoinstitutenewgovernment,laying"
++ "itsfoundationonsuchprinciplesandorganizingitspowersinsuchform,astothemshallseemmostlikelytoeffecttheirsafety"
++ "andhappiness.Prudence,indeed,willdictatethatgovernmentslongestablishedshouldnotbechangedforlightandtransient"
++ "causes;andaccordinglyallexperiencehathshownthatmankindaremoredisposedtosuffer,whileevilsaresufferable,than"
++ "torightthemselvesbyabolishingtheformstowhichtheyareaccustomed.Butwhenalongtrainofabusesandusurpations,"
++ "pursuinginvariablythesameobjectevincesadesigntoreducethemunderabsolutedespotism,itistheirright,itistheirduty,"
++ "tothrowoffsuchgovernment,andtoprovidenewguardsfortheirfuturesecurity.--Suchhasbeenthepatientsufferanceof"
++ "thesecolonies;andsuchisnowthenecessitywhichconstrainsthemtoaltertheirformersystemsofgovernment.Thehistory"
++ "ofthepresentKingofGreatBritainisahistoryofrepeatedinjuriesandusurpations,allhavingindirectobjectthe"
++ "establishmentofanabsolutetyrannyoverthesestates.Toprovethis,letfactsbesubmittedtoacandidworld.\n"
++ "Hehasrefusedhisassenttolaws,themostwholesomeandnecessaryforthepublicgood.\n"
++ "Hehasforbiddenhisgovernorstopasslawsofimmediateandpressingimportance,unlesssuspendedintheiroperationtill"
++ "hisassentshouldbeobtained;andwhensosuspended,hehasutterlyneglectedtoattendtothem.\n"
++ "Hehasrefusedtopassotherlawsfortheaccommodationoflargedistrictsofpeople,unlessthosepeoplewouldrelinquish"
++ "therightofrepresentationinthelegislature,arightinestimabletothemandformidabletotyrantsonly.\n"
++ "Hehascalledtogetherlegislativebodiesatplacesunusual,uncomfortable,anddistantfromthedepositoryoftheirpublic"
++ "records,forthesolepurposeoffatiguingthemintocompliancewithhismeasures.\n"
++ "Hehasdissolvedrepresentativehousesrepeatedly,foropposingwithmanlyfirmnesshisinvasionsontherightsofthepeople.\n"
++ "Hehasrefusedforalongtime,aftersuchdissolutions,tocauseotherstobeelected;wherebythelegislativepowers,"
++ "incapableofannihilation,havereturnedtothepeopleatlargefortheirexercise;thestateremaininginthemeantimeexposed"
++ "toallthedangersofinvasionfromwithout,andconvulsionswithin.\n"
++ "Hehasendeavoredtopreventthepopulationofthesestates;forthatpurposeobstructingthelawsfornaturalizationof"
++ "foreigners;refusingtopassotherstoencouragetheirmigrationhither,andraisingtheconditionsofnewappropriationsof"
++ "lands.\n"
++ "Hehasobstructedtheadministrationofjustice,byrefusinghisassenttolawsforestablishingjudiciarypowers.\n"
++ "Hehasmadejudgesdependentonhiswillalone,forthetenureoftheiroffices,andtheamountandpaymentoftheirsalaries.\n"
++ "Hehaserectedamultitudeofnewoffices,andsenthitherswarmsofofficerstoharassourpeople,andeatouttheir"
++ "substance.\n"
++ "Hehaskeptamongus,intimesofpeace,standingarmieswithouttheconsentofourlegislature.\n"
++ "Hehasaffectedtorenderthemilitaryindependentofandsuperiortocivilpower.\n"
++ "Hehascombinedwithotherstosubjectustoajurisdictionforeigntoourconstitution,andunacknowledgedbyourlaws;"
++ "givinghisassenttotheiractsofpretendedlegislation:\n"
++ "Forquarteringlargebodiesofarmedtroopsamongus:\n"
++ "Forprotectingthem,bymocktrial,frompunishmentforanymurderswhichtheyshouldcommitontheinhabitantsofthese"
++ "states:\n"
++ "Forcuttingoffourtradewithallpartsoftheworld:\n"
++ "Forimposingtaxesonuswithoutourconsent:\n"
++ "Fordeprivingusinmanycases,ofthebenefitsoftrialbyjury:\n"
++ "Fortransportingusbeyondseastobetriedforpretendedoffenses:\n"
++ "ForabolishingthefreesystemofEnglishlawsinaneighboringprovince,establishingthereinanarbitrarygovernment,and"
++ "enlargingitsboundariessoastorenderitatonceanexampleandfitinstrumentforintroducingthesameabsoluteruleinthese"
++ "colonies:\n"
++ "Fortakingawayourcharters,abolishingourmostvaluablelaws,andalteringfundamentallytheformsofourgovernments:\n"
++ "Forsuspendingourownlegislatures,anddeclaringthemselvesinvestedwithpowertolegislateforusinallcaseswhatsoever.\n"
++ "Hehasabdicatedgovernmenthere,bydeclaringusoutofhisprotectionandwagingwaragainstus.\n"
++ "Hehasplunderedourseas,ravagedourcoasts,burnedourtowns,anddestroyedthelivesofourpeople.\n"
++ "Heisatthistimetransportinglargearmiesofforeignmercenariestocompletetheworksofdeath,desolationandtyranny,"
++ "alreadybegunwithcircumstancesofcrueltyandperfidyscarcelyparalleledinthemostbarbarousages,andtotallyunworthy"
++ "theheadofacivilizednation.\n"
++ "Hehasconstrainedourfellowcitizenstakencaptiveonthehighseastobeararmsagainsttheircountry,tobecomethe"
++ "executionersoftheirfriendsandbrethren,ortofallthemselvesbytheirhands.\n"
++ "Hehasexciteddomesticinsurrectionsamongstus,andhasendeavoredtobringontheinhabitantsofourfrontiers,the"
++ "mercilessIndiansavages,whoseknownruleofwarfare,isundistinguisheddestructionofallages,sexesandconditions.\n"
++ "Ineverystageoftheseoppressionswehavepetitionedforredressinthemosthumbleterms:ourrepeatedpetitionshave"
++ "beenansweredonlybyrepeatedinjury.Aprince,whosecharacteristhusmarkedbyeveryactwhichmaydefineatyrant,is"
++ "unfittobetherulerofafreepeople.\n"
++ "NorhavewebeenwantinginattentiontoourBritishbrethren.Wehavewarnedthemfromtimetotimeofattemptsbytheir"
++ "legislaturetoextendanunwarrantablejurisdictionoverus.Wehaveremindedthemofthecircumstancesofouremigration"
++ "andsettlementhere.Wehaveappealedtotheirnativejusticeandmagnanimity,andwehaveconjuredthembythetiesofour"
++ "commonkindredtodisavowtheseusurpations,which,wouldinevitablyinterruptourconnectionsandcorrespondence.We"
++ "must,therefore,acquiesceinthenecessity,whichdenouncesourseparation,andholdthem,asweholdtherestofmankind,"
++ "enemiesinwar,inpeacefriends.\n"
++ "We,therefore,therepresentativesoftheUnitedStatesofAmerica,inGeneralCongress,assembled,appealingtothe"
++ "SupremeJudgeoftheworldfortherectitudeofourintentions,do,inthename,andbytheauthorityofthegoodpeopleof"
++ "thesecolonies,solemnlypublishanddeclare,thattheseunitedcoloniesare,andofrightoughttobefreeandindependent"
++ "states;thattheyareabsolvedfromallallegiancetotheBritishCrown,andthatallpoliticalconnectionbetweenthemandthe"
++ "stateofGreatBritain,isandoughttobetotallydissolved;andthatasfreeandindependentstates,theyhavefullpowerto"
++ "leveywar,concludepeace,contractalliances,establishcommerce,andtodoallotheractsandthingswhichindependent"
++ "statesmayofrightdo.Andforthesupportofthisdeclaration,withafirmrelianceontheprotectionofDivineProvidence,we"
++ "mutuallypledgetoeachotherourlives,ourfortunesandoursacredhonor.\n";
+    }
+
+
+    public void handleEnumChanged()
+    {
+        String s = bound.getSelectedItem();
+        if (s.equals("Char")) {
+            errorText("getCharacterInstance");
+            enum = BreakIterator.getCharacterInstance();
+        }
+        else if (s.equals("Word")) {
+            errorText("getWordInstance");
+            enum = BreakIterator.getWordInstance();
+        }
+        else if (s.equals("Line Break")) {
+            errorText("getLineInstance");
+            enum = BreakIterator.getLineInstance();
+        }
+        else /* if (s.equals("Sentence")) */ {
+            errorText("getSentenceInstance");
+            enum = BreakIterator.getSentenceInstance();
+        }
+        enum.setText(text.getText());
+        selectRange(0, 0);
+        //text.select(0,0);
+    }
+
+    public void handleForward()
+    {
+        try {
+//          System.out.println("entering handleForward");
+            enum.setText(text.getText());
+            int oldStart = getSelectionStart();
+            int oldEnd = getSelectionEnd();
+
+//          System.out.println("handleForward: oldStart=" + oldStart + ", oldEnd=" + oldEnd);
+
+            if (oldEnd < 1) {
+                selectRange(0, enum.following(0));
+            }
+            else {
+                int s = enum.following(oldEnd-1);
+                int e = enum.next();
+                if (e == -1) {
+                    e = s;
+                }
+                selectRange(s, e);
+            }
+            //text.select(s, e);
+            errorText("<" + oldStart + "," + oldEnd + "> -> <" +
+                s + "," + e + ">");
+        }
+        catch (Exception exp) {
+            errorText(exp.toString());
+        }
+    }
+
+    public void handleBackward()
+    {
+        try {
+            enum.setText(text.getText());
+            int oldStart = getSelectionStart();
+            int oldEnd = getSelectionEnd();
+            if (oldStart < 1) {
+                selectRange(0, 0);
+            }
+            else {
+                int e = enum.following(oldStart-1);
+                int s = enum.previous();
+                selectRange(s, e);
+            }
+            //text.select(s, e);
+            errorText("<" + oldStart + "," + oldEnd + "> -> <" + s + "," + e + ">");
+        }
+        catch (Exception exp) {
+            errorText(exp.toString());
+        }
+    }
+
+    public void itemStateChanged(ItemEvent evt)
+    {
+        if (evt.getSource() instanceof Choice) {
+            handleEnumChanged();
+        }
+    }
+
+    public void errorText(String s)
+    {
+       if (DEBUG)
+           System.out.println(s);
+    }
+    
+    protected void processWindowEvent(WindowEvent evt)
+    {
+        if (evt.getID() == WindowEvent.WINDOW_CLOSING && 
+            evt.getWindow() == this) {
+            hide();
+            dispose();
+            if (applet != null) {
+                applet.demoClosed();
+            } else System.exit(0);
+        }
+    }
+    
+    protected void processKeyEvent(KeyEvent evt)
+    {
+        switch (evt.getID()) {
+            case KeyEvent.KEY_PRESSED :
+                if (evt.getKeyCode() == KeyEvent.VK_CONTROL) {
+                    isctrldown_ = true;
+                }
+                break;
+            case KeyEvent.KEY_RELEASED :
+                // key detection for left and right buttons are removed
+                // to emulate the old release behaviour
+                int key = evt.getKeyCode();
+                if (key == KeyEvent.VK_N && isctrldown_) {
+                    handleForward();
+                }
+                else 
+                if (key == KeyEvent.VK_P && isctrldown_) {
+                    handleBackward();
+                }
+                else 
+                if (key == KeyEvent.VK_CONTROL) {
+                    isctrldown_ = false;
+                }
+                break;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/rbbi/RBBIDemo.java b/src/com/ibm/icu/dev/demo/rbbi/RBBIDemo.java
new file mode 100755
index 0000000..8d2b380
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/rbbi/RBBIDemo.java
@@ -0,0 +1,452 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/rbbi/RBBIDemo.java,v $ 
+ * $Date: 2002/08/01 20:27:21 $ 
+ * $Revision: 1.7 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.demo.rbbi;
+
+import com.ibm.icu.dev.demo.*;
+import java.applet.Applet;
+import java.awt.*;
+import java.awt.event.WindowEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.ItemEvent;
+import javax.swing.JTextArea;
+import javax.swing.JScrollPane;
+import javax.swing.BorderFactory;
+import java.util.*;
+import com.ibm.icu.dev.demo.impl.*;
+import com.ibm.icu.text.BreakIterator;
+
+public class RBBIDemo extends DemoApplet
+{
+    public static void main(String argv[]) {
+        Locale.setDefault(new Locale("en", "US"));
+		new RBBIDemo().showDemo();
+    }
+
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new RBBIFrame(applet);
+    }
+}
+
+
+
+class RBBIFrame extends Frame implements ItemListener
+{
+    private static final String creditString =
+        "v1.1a9, Demo";
+
+    private static final int FIELD_COLUMNS = 45;
+    private static final Font choiceFont = null;
+    private static final boolean DEBUG = false;
+    private DemoApplet applet;
+
+    final String right = "-->";
+    final String left = "<--";
+
+    private BreakIterator enum;
+    private boolean       isctrldown_ = false;
+
+JTextArea text;
+//    TextArea text;
+    Choice bound;
+
+    public RBBIFrame(DemoApplet applet)
+    {
+        this.applet = applet;
+        init();
+        start();
+    }
+
+
+
+    public void run()
+    {
+        /*
+        while (true) {
+            try {
+                checkChange();
+                Thread.sleep(250);
+            }
+            catch (InterruptedException e) {
+            }
+            catch (Exception e) {
+            }
+            catch (Throwable e) {
+            }
+        }
+        */
+    }
+
+    int s, e;
+    int ts, te;
+
+    public void checkChange()
+    {
+//        System.out.println("checkChange...");
+        if ((text.getSelectionStart() & 0x7FFF) != ts ||
+            (text.getSelectionEnd() & 0x7FFF) != te) {
+
+            // not used int tempS = text.getSelectionStart() & 0x7FFF;
+            // not used int tempE = text.getSelectionEnd() & 0x7FFF;
+
+//          System.out.println(">");
+//          select(0, 0);
+//          select(tempS, tempE);
+            //select(tempS - (ts - s), tempE - (te - e));
+//          System.out.println("<");
+
+
+//          if (s != ts || e != te) System.out.println("     s("+s+") ts("+ts+") e("+e+") te("+te+")");
+//          if (tempS != ts || tempE != te) System.out.println(">s("+s+") tempS("+tempS+") e("+e+") tempE("+tempE+")");
+//          select(s - (ts - s), e - (te - e));
+//          if (tempS != ts || tempE != te) System.out.println("s("+s+") tempS("+tempS+") e("+e+") tempE("+tempE+")");
+
+//          System.out.println("lkdslksj");
+        }
+    }
+
+    public void select(int sIn, int eIn)
+    {
+        s = sIn;
+        e = eIn;
+        text.select(s, e);
+        ts = text.getSelectionStart() & 0x7FFF;
+        te = text.getSelectionEnd() & 0x7FFF;
+//        if (s != ts || e != te) {
+//            System.out.println(">s("+s+") ts("+ts+") e("+e+") te("+te+")");
+//            System.out.println("   "+(ts-s)+","+(te-e));
+//        }
+    }
+
+    public int getSelectionStart()
+    {
+        checkChange();
+//      return s;
+        return text.getSelectionStart() & 0x7FFF;
+    }
+
+
+    public int getSelectionEnd()
+    {
+        checkChange();
+//      return e;
+        return text.getSelectionEnd() & 0x7FFF;
+    }
+
+    public final synchronized void selectRange(int s, int e)
+    {
+        try {
+            //if (getSelectionStart() != s || getSelectionEnd() != e) {
+                //text.select(s, e);
+                select(s,e);
+            //}
+//          if (getSelectionStart() != s || getSelectionEnd() != e) {
+//              System.out.println("AGH! select("+s+","+e+") -> ("+
+//              getSelectionStart()+","+getSelectionEnd()+")");
+//              text.select(s - (getSelectionStart() - s), e - (getSelectionEnd() - e));
+//          }
+        } catch (Exception exp) {
+            errorText(exp.toString());
+        }
+    }
+
+
+
+    public void init()
+    {
+        buildGUI();
+    }
+
+
+    public void start()
+    {
+    }
+
+
+    void addWithFont(Container container, Component foo, Font font) {
+        if (font != null)
+            foo.setFont(font);
+        container.add(foo);
+    }
+
+
+
+   public void buildGUI()
+    {
+        setBackground(DemoUtility.bgColor);
+        setLayout(new BorderLayout());
+
+       Panel topPanel = new Panel();
+
+            Label titleLabel =
+                new Label("Deva Text Boundary Demo", Label.CENTER);
+            titleLabel.setFont(DemoUtility.titleFont);
+            topPanel.add(titleLabel);
+
+            //Label demo=new Label(creditString, Label.CENTER);
+            //demo.setFont(DemoUtility.creditFont);
+            //topPanel.add(demo);
+
+            Panel choicePanel = new Panel();
+
+            Label demo1=new Label("Boundaries", Label.LEFT);
+            demo1.setFont(DemoUtility.labelFont);
+            choicePanel.add(demo1);
+
+            bound = new Choice();
+                bound.setBackground(DemoUtility.choiceColor);
+            bound.addItem("Sentence");
+            bound.addItem("Line Break");
+            bound.addItem("Word");
+            bound.addItem("Char");
+            bound.addItemListener(this);
+            if (choiceFont != null)
+                bound.setFont(choiceFont);
+
+            choicePanel.add(bound);
+            topPanel.add(choicePanel);
+
+            DemoUtility.fixGrid(topPanel,1);
+
+
+        add("North", topPanel);
+
+
+            int ROWS = 15;
+            int COLUMNS = 50;
+//            text = new TextArea(getInitialText(), ROWS, COLUMNS);
+            text = new JTextArea(getInitialText(), ROWS, COLUMNS);
+            text.setLineWrap(true);
+            text.setWrapStyleWord(true);
+            text.setEditable(true);
+            text.selectAll();
+            text.setFont(new Font("Devanagari MT for IBM", Font.PLAIN, 48));
+            text.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
+
+        add("Center", new JScrollPane(text, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
+
+        Panel copyrightPanel = new Panel();
+        addWithFont (copyrightPanel,
+            new Label(DemoUtility.copyright1, Label.LEFT),DemoUtility.creditFont);
+        DemoUtility.fixGrid(copyrightPanel,1);
+        add("South", copyrightPanel);
+
+        //layout();
+        handleEnumChanged();
+        
+        enableEvents(WindowEvent.WINDOW_CLOSING);
+        enableEvents(KeyEvent.KEY_PRESSED);
+        enableEvents(KeyEvent.KEY_RELEASED);    
+
+        // (new Thread(this)).start();
+    }
+
+
+
+    public String getInitialText()
+    {
+        return
+            "\u0936\u094d\u0930\u0940\u092e\u0926\u094d " +
+            "\u092d\u0917\u0935\u0926\u094d\u0917\u0940\u0924\u093e " +
+            "\u0905\u0927\u094d\u092f\u093e\u092f " +
+            "\u0905\u0930\u094d\u091c\u0941\u0928 " +
+            "\u0935\u093f\u0937\u093e\u0926 " +
+            "\u092f\u094b\u0917 " +
+            "\u0927\u0943\u0924\u0930\u093e\u0937\u094d\u091f\u094d\u0930 " +
+            "\u0909\u0935\u093E\u091A\u0943 " +
+            "\u0927\u0930\u094d\u092e\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947 " +
+            "\u0915\u0941\u0930\u0941\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947 " +
+            "\u0938\u092e\u0935\u0947\u0924\u093e " +
+            "\u092f\u0941\u092f\u0941\u0924\u094d\u0938\u0935\u0903 " +
+            "\u092e\u093e\u092e\u0915\u093e\u0903 " +
+            "\u092a\u093e\u0923\u094d\u0921\u0935\u093e\u0936\u094d\u091a\u0948\u0935 " +
+            "\u0915\u093f\u092e\u0915\u0941\u0930\u094d\u0935\u0924 " +
+            "\u0938\u0902\u091c\u0935";
+    }
+
+
+    public void handleEnumChanged()
+    {
+        String s = bound.getSelectedItem();
+        if (s.equals("Char")) {
+            errorText("getCharacterInstance");
+            enum = BreakIterator.getCharacterInstance();
+        }
+        else if (s.equals("Word")) {
+            errorText("tWordBreak");
+            enum = BreakIterator.getWordInstance();
+        }
+        else if (s.equals("Line Break")) {
+            errorText("getLineInstance");
+            enum = BreakIterator.getLineInstance();
+        }
+        else /* if (s.equals("Sentence")) */ {
+            errorText("getSentenceInstance");
+            enum = BreakIterator.getSentenceInstance();
+        }
+        enum.setText(text.getText());
+        selectRange(0, 0);
+        //text.select(0,0);
+    }
+
+    public void handleForward()
+    {
+        try {
+//          System.out.println("entering handleForward");
+            enum.setText(text.getText());
+            int oldStart = getSelectionStart();
+            int oldEnd = getSelectionEnd();
+
+//          System.out.println("handleForward: oldStart=" + oldStart + ", oldEnd=" + oldEnd);
+
+            if (oldEnd < 1) {
+                selectRange(0, enum.following(0));
+            }
+            else {
+                int s = enum.following(oldEnd-1);
+                int e = enum.next();
+                if (e == -1) {
+                    e = s;
+                }
+                selectRange(s, e);
+            }
+            //text.select(s, e);
+            errorText("<" + oldStart + "," + oldEnd + "> -> <" +
+                s + "," + e + ">");
+        }
+        catch (Exception exp) {
+            errorText(exp.toString());
+        }
+    }
+
+    public void handleBackward()
+    {
+        try {
+            enum.setText(text.getText());
+            int oldStart = getSelectionStart();
+            int oldEnd = getSelectionEnd();
+            if (oldStart < 1) {
+                selectRange(0, 0);
+            }
+            else {
+                int e = enum.following(oldStart-1);
+                int s = enum.previous();
+                selectRange(s, e);
+            }
+            //text.select(s, e);
+            errorText("<" + oldStart + "," + oldEnd + "> -> <" + s + "," + e + ">");
+        }
+        catch (Exception exp) {
+            errorText(exp.toString());
+        }
+    }
+
+    /*
+    public boolean action(Event evt, Object obj)
+    {
+
+        if(evt.target instanceof Button && left.equals(obj))
+        {
+            handleBackward();
+            return true;
+        }
+        else if(evt.target instanceof Button && right.equals(obj))
+        {
+            handleForward();
+            return true;
+        }
+        else if(evt.target instanceof Choice)
+        {
+            handleEnumChanged();
+            return true;
+        }
+        return false;
+    }
+
+    public boolean handleEvent(Event evt)
+    {
+        if (evt.id == Event.KEY_PRESS || evt.id == Event.KEY_ACTION) {
+            if (evt.key == Event.RIGHT || (evt.key == 0x0E && evt.controlDown())) {
+                handleForward();
+                return true;
+            }
+            else if (evt.key == Event.LEFT || (evt.key == 0x10 && evt.controlDown())) {
+                handleBackward();
+                return true;
+            }
+        }
+        else
+        if (evt.id == Event.WINDOW_DESTROY && evt.target == this) {
+            this.hide();
+            this.dispose();
+                if (applet != null) {
+                  applet.demoClosed();
+               } else System.exit(0);
+            return true;
+        }
+        return super.handleEvent(evt);
+    }*/
+
+    public void itemStateChanged(ItemEvent evt)
+    {
+        if (evt.getSource() instanceof Choice) {
+            handleEnumChanged();
+        }
+    }
+
+    public void errorText(String s)
+    {
+       if (DEBUG)
+           System.out.println(s);
+    }
+    
+    protected void processWindowEvent(WindowEvent evt)
+    {
+        if (evt.getID() == WindowEvent.WINDOW_CLOSING && 
+            evt.getWindow() == this) {
+            hide();
+            dispose();
+            if (applet != null) {
+                applet.demoClosed();
+            } else System.exit(0);
+        }
+    }
+    
+    protected void processKeyEvent(KeyEvent evt)
+    {
+        switch (evt.getID()) {
+            case KeyEvent.KEY_PRESSED :
+                if (evt.getKeyCode() == KeyEvent.VK_CONTROL) {
+                    isctrldown_ = true;
+                }
+                break;
+            case KeyEvent.KEY_RELEASED :
+                // key detection for left and right buttons are removed
+                // to emulate the old release behaviour
+                int key = evt.getKeyCode();
+                if (key == KeyEvent.VK_N && isctrldown_) {
+                    handleForward();
+                }
+                else 
+                if (key == KeyEvent.VK_P && isctrldown_) {
+                    handleBackward();
+                }
+                else 
+                if (key == KeyEvent.VK_CONTROL) {
+                    isctrldown_ = false;
+                }
+                break;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/rbbi/TextBoundDemo.java b/src/com/ibm/icu/dev/demo/rbbi/TextBoundDemo.java
new file mode 100755
index 0000000..6aab93c
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/rbbi/TextBoundDemo.java
@@ -0,0 +1,433 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/rbbi/TextBoundDemo.java,v $ 
+ * $Date: 2002/08/01 20:27:21 $ 
+ * $Revision: 1.9 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.demo.rbbi;
+
+import com.ibm.icu.dev.demo.*;
+import java.applet.Applet;
+import java.awt.*;
+import java.awt.event.ItemListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowEvent;
+import javax.swing.JTextArea;
+import javax.swing.JScrollPane;
+import javax.swing.BorderFactory;
+import java.util.*;
+import com.ibm.icu.dev.demo.impl.*;
+import com.ibm.icu.text.BreakIterator;
+
+public class TextBoundDemo extends DemoApplet
+{
+    public static void main(String argv[]) {
+        new TextBoundDemo().showDemo();
+    }
+
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new TextBoundFrame(applet);
+    }
+}
+
+
+
+class TextBoundFrame extends Frame implements ItemListener
+{
+    private static final String creditString =
+        "v1.1a9, Demo";
+
+    private static final int FIELD_COLUMNS = 45;
+    private static final Font choiceFont = null;
+    private static final boolean DEBUG = false;
+    private DemoApplet applet;
+
+    final String right = "-->";
+    final String left = "<--";
+
+    private BreakIterator enum;
+    private boolean isctrldown_ = false;
+
+JTextArea text;
+//    TextArea text;
+    Choice bound;
+
+    public TextBoundFrame(DemoApplet applet)
+    {
+        this.applet = applet;
+        init();
+        start();
+    }
+
+
+
+    public void run()
+    {
+        /*
+        while (true) {
+            try {
+                checkChange();
+                Thread.sleep(250);
+            }
+            catch (InterruptedException e) {
+            }
+            catch (Exception e) {
+            }
+            catch (Throwable e) {
+            }
+        }
+        */
+    }
+
+    int s, e;
+    int ts, te;
+
+    public void checkChange()
+    {
+//        System.out.println("checkChange...");
+        if ((text.getSelectionStart() & 0x7FFF) != ts ||
+            (text.getSelectionEnd() & 0x7FFF) != te) {
+
+            // not used int tempS = text.getSelectionStart() & 0x7FFF;
+            // not used int tempE = text.getSelectionEnd() & 0x7FFF;
+
+//          System.out.println(">");
+//          select(0, 0);
+//          select(tempS, tempE);
+            //select(tempS - (ts - s), tempE - (te - e));
+//          System.out.println("<");
+
+
+//          if (s != ts || e != te) System.out.println("     s("+s+") ts("+ts+") e("+e+") te("+te+")");
+//          if (tempS != ts || tempE != te) System.out.println(">s("+s+") tempS("+tempS+") e("+e+") tempE("+tempE+")");
+//          select(s - (ts - s), e - (te - e));
+//          if (tempS != ts || tempE != te) System.out.println("s("+s+") tempS("+tempS+") e("+e+") tempE("+tempE+")");
+
+//          System.out.println("lkdslksj");
+        }
+    }
+
+    public void select(int sIn, int eIn)
+    {
+        s = sIn;
+        e = eIn;
+        text.select(s, e);
+        ts = text.getSelectionStart() & 0x7FFF;
+        te = text.getSelectionEnd() & 0x7FFF;
+//        if (s != ts || e != te) {
+//            System.out.println(">s("+s+") ts("+ts+") e("+e+") te("+te+")");
+//            System.out.println("   "+(ts-s)+","+(te-e));
+//        }
+    }
+
+    public int getSelectionStart()
+    {
+        checkChange();
+//      return s;
+        return text.getSelectionStart() & 0x7FFF;
+    }
+
+
+    public int getSelectionEnd()
+    {
+        checkChange();
+//      return e;
+        return text.getSelectionEnd() & 0x7FFF;
+    }
+
+    public final synchronized void selectRange(int s, int e)
+    {
+        try {
+            //if (getSelectionStart() != s || getSelectionEnd() != e) {
+                //text.select(s, e);
+                select(s,e);
+            //}
+//          if (getSelectionStart() != s || getSelectionEnd() != e) {
+//              System.out.println("AGH! select("+s+","+e+") -> ("+
+//              getSelectionStart()+","+getSelectionEnd()+")");
+//              text.select(s - (getSelectionStart() - s), e - (getSelectionEnd() - e));
+//          }
+        } catch (Exception exp) {
+            errorText(exp.toString());
+        }
+    }
+
+
+
+    public void init()
+    {
+        buildGUI();
+    }
+
+
+    public void start()
+    {
+    }
+
+
+    void addWithFont(Container container, Component foo, Font font) {
+        if (font != null)
+            foo.setFont(font);
+        container.add(foo);
+    }
+
+
+
+   public void buildGUI()
+    {
+        setBackground(DemoUtility.bgColor);
+        setLayout(new BorderLayout());
+
+       Panel topPanel = new Panel();
+
+            Label titleLabel =
+                new Label("Text Boundary Demo", Label.CENTER);
+            titleLabel.setFont(DemoUtility.titleFont);
+            topPanel.add(titleLabel);
+
+            //Label demo=new Label(creditString, Label.CENTER);
+            //demo.setFont(DemoUtility.creditFont);
+            //topPanel.add(demo);
+
+            Panel choicePanel = new Panel();
+
+            Label demo1=new Label("Boundaries", Label.LEFT);
+            demo1.setFont(DemoUtility.labelFont);
+            choicePanel.add(demo1);
+
+            bound = new Choice();
+                bound.setBackground(DemoUtility.choiceColor);
+            bound.addItem("Sentence");
+            bound.addItem("Line Break");
+            bound.addItem("Word");
+            bound.addItem("Char");
+            bound.addItemListener(this);
+            if (choiceFont != null)
+                bound.setFont(choiceFont);
+
+            choicePanel.add(bound);
+            topPanel.add(choicePanel);
+
+            DemoUtility.fixGrid(topPanel,1);
+
+
+        add("North", topPanel);
+
+
+            int ROWS = 15;
+            int COLUMNS = 50;
+//            text = new TextArea(getInitialText(), ROWS, COLUMNS);
+text = new JTextArea(getInitialText(), ROWS, COLUMNS);
+text.setLineWrap(true);
+text.setWrapStyleWord(true);
+            text.setEditable(true);
+            text.selectAll();
+            text.setFont(DemoUtility.editFont);
+            text.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
+
+        add("Center", new JScrollPane(text, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
+
+        Panel copyrightPanel = new Panel();
+        addWithFont (copyrightPanel,
+            new Label(DemoUtility.copyright1, Label.LEFT),DemoUtility.creditFont);
+        DemoUtility.fixGrid(copyrightPanel,1);
+        add("South", copyrightPanel);
+
+        //layout();
+        handleEnumChanged();
+        
+        enableEvents(WindowEvent.WINDOW_CLOSING);
+        enableEvents(KeyEvent.KEY_PRESSED);
+        enableEvents(KeyEvent.KEY_RELEASED);
+
+        // (new Thread(this)).start();
+    }
+
+
+
+    public String getInitialText()
+    {
+        return
+    /*
+            "\"This is a sentence.\" This is not.\" \"because. And go. " +
+            "This is a simple 012.566,5 sample sentence. \n"+
+            "It does not have to make any sense as you can see. \n"+
+            "Nel mezzo del cammin di nostra vita, mi ritrovai in "+
+                "una selva oscura. \n"+
+            "Che la dritta via aveo smarrita. \n"+
+            "He said, that I said, that you said!! \n"+
+            "Don't rock the boat.\n\n"+
+            "Because I am the daddy, that is why. \n"+
+            "Not on my time (el timo.)! \n"+
+            "Tab\tTab\rTab\tWow."+
+            "So what!!\n\n"+
+            "Is this a question???  " +
+            "I wonder...Hmm.\n" +
+            "Harris thumbed down several, including \"Away We Go\" "+
+                "(which became the huge success Oklahoma!). \n"+
+            "One species, B. anthracis, is highly virulent.\n"+
+            "Wolf said about Sounder: \"Beautifully thought-out and "+
+                "directed.\"\n"+
+            "Have you ever said, \"This is where I shall live\"? \n"+
+            "He 1000,233,456.000 answered, \"You may not!\" \n"+
+            "Another popular saying is: \"How do you do?\". \n"+
+            "What is the proper use of the abbreviation pp.? \n"+
+            "Yes, I am 1,23.322% definatelly 12\" tall!!";
+    */
+            "(\"This is a complete sentence.\") This is (\"not.\") also.  "
+            +"An abbreviation in the middle, etc. and one at the end, etc. "+
+                "This "
+            +"is a simple sample 012.566,5 sentence. It doesn't "
+            +"have to make any sense, as you can see. Nel mezzo del  c"
+            +"ammin di nostra vita, mi ritrovai in una selva oscura. Che "
+            +"la dritta via aveo smarrita. Not on my time (el timo.)! And "
+            +"tabulated columns: \tCol1\tCol2\t3,456%.\t "
+            +"Is this a question???  I wonder... Hmm. Harris thumbed "
+            +"down several, including \"Away We Go\" (which became the  "
+            +"huge success Oklahoma!). One species, B. anthracis, is  "
+            +"highly virulent. Wolf said about Sounder: \"Beautifully  "
+            +"thought-out and directed.\" Have you ever said, \"This is "+
+                "where I "
+            +"shall live\"? He said 1000,233,456.000 and answered, \"You "+
+                "may not!\"  "
+            +"Another popular saying is: \"How do you do?\". What is the  "
+            +"proper use of the abbreviation pp.? Yes, I am 12\' 3\" tall!!";
+    }
+
+
+    public void handleEnumChanged()
+    {
+        String s = bound.getSelectedItem();
+        if (s.equals("Char")) {
+            errorText("getCharacterInstance");
+            enum = BreakIterator.getCharacterInstance();
+        }
+        else if (s.equals("Word")) {
+            errorText("tWordBreak");
+            enum = BreakIterator.getWordInstance();
+        }
+        else if (s.equals("Line Break")) {
+            errorText("getLineInstance");
+            enum = BreakIterator.getLineInstance();
+        }
+        else /* if (s.equals("Sentence")) */ {
+            errorText("getSentenceInstance");
+            enum = BreakIterator.getSentenceInstance();
+        }
+        enum.setText(text.getText());
+        selectRange(0, 0);
+        //text.select(0,0);
+    }
+
+    public void handleForward()
+    {
+        try {
+//          System.out.println("entering handleForward");
+            enum.setText(text.getText());
+            int oldStart = getSelectionStart();
+            int oldEnd = getSelectionEnd();
+
+//          System.out.println("handleForward: oldStart=" + oldStart + ", oldEnd=" + oldEnd);
+
+            if (oldEnd < 1) {
+                selectRange(0, enum.following(0));
+            }
+            else {
+                int s = enum.following(oldEnd-1);
+                int e = enum.next();
+                if (e == -1) {
+                    e = s;
+                }
+                selectRange(s, e);
+            }
+            //text.select(s, e);
+            errorText("<" + oldStart + "," + oldEnd + "> -> <" +
+                s + "," + e + ">");
+        }
+        catch (Exception exp) {
+            errorText(exp.toString());
+        }
+    }
+
+    public void handleBackward()
+    {
+        try {
+            enum.setText(text.getText());
+            int oldStart = getSelectionStart();
+            int oldEnd = getSelectionEnd();
+            if (oldStart < 1) {
+                selectRange(0, 0);
+            }
+            else {
+                int e = enum.following(oldStart-1);
+                int s = enum.previous();
+                selectRange(s, e);
+            }
+            //text.select(s, e);
+            errorText("<" + oldStart + "," + oldEnd + "> -> <" + s + "," + e + ">");
+        }
+        catch (Exception exp) {
+            errorText(exp.toString());
+        }
+    }
+
+    public void itemStateChanged(ItemEvent evt)
+    {
+        if (evt.getSource() instanceof Choice) {
+            handleEnumChanged();
+        }
+    }
+
+    public void errorText(String s)
+    {
+       if (DEBUG)
+           System.out.println(s);
+    }
+    
+    protected void processWindowEvent(WindowEvent evt)
+    {
+        if (evt.getID() == WindowEvent.WINDOW_CLOSING && 
+            evt.getWindow() == this) {
+            hide();
+            dispose();
+            if (applet != null) {
+                applet.demoClosed();
+            } else System.exit(0);
+        }
+    }
+    
+    protected void processKeyEvent(KeyEvent evt)
+    {
+        switch (evt.getID()) {
+            case KeyEvent.KEY_PRESSED :
+                if (evt.getKeyCode() == KeyEvent.VK_CONTROL) {
+                    isctrldown_ = true;
+                }
+                break;
+            case KeyEvent.KEY_RELEASED :
+                // key detection for left and right buttons are removed
+                // to emulate the old release behaviour
+                int key = evt.getKeyCode();
+                if (key == KeyEvent.VK_N && isctrldown_) {
+                    handleForward();
+                }
+                else 
+                if (key == KeyEvent.VK_P && isctrldown_) {
+                    handleBackward();
+                }
+                else
+                if (key == KeyEvent.VK_CONTROL) {
+                    isctrldown_ = false;
+                }
+                break;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/rbbi/package.html b/src/com/ibm/icu/dev/demo/rbbi/package.html
new file mode 100755
index 0000000..95d6fa0
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/rbbi/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/rbbi/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 17:43:53 $
+-->
+</head>
+<body bgcolor="white">
+RuleBasedBreakIterator and DictionaryBasedBreakIterator demo applications.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/rbnf/RbnfDemo.java b/src/com/ibm/icu/dev/demo/rbnf/RbnfDemo.java
new file mode 100755
index 0000000..4722302
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/rbnf/RbnfDemo.java
@@ -0,0 +1,533 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/rbnf/RbnfDemo.java,v $ 
+ * $Date: 2002/02/19 04:10:24 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.demo.rbnf;
+
+import com.ibm.icu.dev.demo.*;
+import java.applet.Applet;
+import java.awt.*;
+import java.awt.event.*;
+import java.text.DecimalFormat;
+import java.text.BreakIterator;
+import java.text.ParsePosition;
+import java.util.Locale;
+import com.ibm.icu.dev.demo.impl.*;
+import com.ibm.icu.text.RuleBasedNumberFormat;
+
+public class RbnfDemo extends DemoApplet {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    /*
+     * code to run the demo as an application
+     */
+    public static void main(String[] argv) {
+    	new RbnfDemo().showDemo();
+    }
+
+    protected Dimension getDefaultFrameSize(DemoApplet applet, Frame f) {
+    	return new Dimension(430,270);
+    }
+
+    protected Frame createDemoFrame(DemoApplet applet) {
+        final Frame window = new Frame("Number Spellout Demo");
+        window.setSize(800, 600);
+        window.setLayout(new BorderLayout());
+
+        Panel mainPanel = new Panel();
+        mainPanel.setLayout(new GridLayout(1,2));
+
+        commentaryField = new TextArea("", 0, 0, TextArea.SCROLLBARS_VERTICAL_ONLY);
+        commentaryField.setSize(800, 50);
+        commentaryField.setText(RbnfSampleRuleSets.sampleRuleSetCommentary[0]);
+        commentaryField.setEditable(false);
+        commentaryField.setFont(new Font("Helvetica", Font.PLAIN, 14));
+
+        spelloutFormatter = new RuleBasedNumberFormat(RbnfSampleRuleSets.usEnglish, Locale.US);
+        spelloutFormatter.setLenientParseMode(lenientParse);
+        populateRuleSetMenu();
+        numberFormatter = new DecimalFormat("#,##0.##########");
+        parsePosition = new ParsePosition(0);
+        theNumber = 0;
+
+        numberField = new TextField();
+        numberField.setFont(new Font("Serif", Font.PLAIN, 24));
+        textField = new DemoTextFieldHolder();
+        textField.setFont(new Font("Serif", Font.PLAIN, 24));
+        rulesField = new DemoTextFieldHolder();
+        rulesField.setFont(new Font("Serif", Font.PLAIN, 14));
+        lenientParseButton = new Checkbox("Lenient parse", lenientParse);
+
+        numberField.addTextListener(new TextListener() {
+            public void textValueChanged(TextEvent e) {
+                if (!numberFieldHasFocus)
+                    return;
+
+                String fieldText = ((TextComponent)(e.getSource())).getText();
+                parsePosition.setIndex(0);
+                Number temp = numberFormatter.parse(fieldText, parsePosition);
+                if (temp == null || parsePosition.getIndex() == 0) {
+                    theNumber = 0;
+                    textField.setText("PARSE ERROR");
+                }
+                else {
+                    theNumber = temp.doubleValue();
+                    textField.setText(spelloutFormatter.format(theNumber, ruleSetName));
+                }
+            }
+        } );
+
+        numberField.addFocusListener(new FocusAdapter() {
+            public void focusLost(FocusEvent e) {
+                numberFieldHasFocus = false;
+                numberField.setText(numberFormatter.format(theNumber));
+            }
+
+            public void focusGained(FocusEvent e) {
+                numberFieldHasFocus = true;
+                numberField.selectAll();
+            }
+        } );
+
+        textField.addKeyListener(new KeyAdapter() {
+            public void keyTyped(KeyEvent e) {
+                if (e.getKeyChar() == '\t') {
+                    String fieldText = ((TextComponent)(e.getSource())).getText();
+                    parsePosition.setIndex(0);
+                    theNumber = spelloutFormatter.parse(fieldText, parsePosition)
+                                        .doubleValue();
+                    if (parsePosition.getIndex() == 0) {
+                        theNumber = 0;
+                        numberField.setText("PARSE ERROR");
+                        textField.selectAll();
+                    }
+                    else if (parsePosition.getIndex() < fieldText.length()) {
+                        textField.select(parsePosition.getIndex(), fieldText.length());
+                        numberField.setText(numberFormatter.format(theNumber));
+                    }
+                    else {
+                        textField.selectAll();
+                        numberField.setText(numberFormatter.format(theNumber));
+                    }
+                    e.consume();
+                }
+            }
+        } );
+
+        textField.addFocusListener(new FocusAdapter() {
+            public void focusLost(FocusEvent e) {
+                String fieldText = ((TextComponent)(e.getSource())).getText();
+                parsePosition.setIndex(0);
+                theNumber = spelloutFormatter.parse(fieldText, parsePosition)
+                                .doubleValue();
+                if (parsePosition.getIndex() == 0)
+                    numberField.setText("PARSE ERROR");
+                else
+                    numberField.setText(numberFormatter.format(theNumber));
+                textField.setText(textField.getText()); // textField.repaint() didn't work right
+            }
+
+            public void focusGained(FocusEvent e) {
+                textField.selectAll();
+            }
+        } );
+
+        rulesField.addKeyListener(new KeyAdapter() {
+            public void keyTyped(KeyEvent e) {
+                if (e.getKeyChar() == '\t') {
+                    String fieldText = ((TextComponent)(e.getSource())).getText();
+                    if (formatterMenu.getSelectedItem().equals("Custom") || !fieldText.equals(
+                                    RbnfSampleRuleSets.sampleRuleSets[formatterMenu.getSelectedIndex()])) {
+                        try {
+                            RuleBasedNumberFormat temp = new RuleBasedNumberFormat(fieldText);
+                            temp.setLenientParseMode(lenientParse);
+                            populateRuleSetMenu();
+                            spelloutFormatter = temp;
+                            customRuleSet = fieldText;
+                            formatterMenu.select("Custom");
+                            commentaryField.setText(RbnfSampleRuleSets.
+                                sampleRuleSetCommentary[RbnfSampleRuleSets.
+                                sampleRuleSetCommentary.length - 1]);
+                            redisplay();
+                        }
+                        catch (Exception x) {
+                            textField.setText(x.toString());
+                        }
+                    }
+                    e.consume();
+                }
+            }
+        } );
+
+        rulesField.addFocusListener(new FocusAdapter() {
+            public void focusLost(FocusEvent e) {
+                String fieldText = ((TextComponent)(e.getSource())).getText();
+                if (formatterMenu.getSelectedItem().equals("Custom") || !fieldText.equals(
+                                RbnfSampleRuleSets.sampleRuleSets[formatterMenu.getSelectedIndex()])) {
+                    try {
+                        RuleBasedNumberFormat temp = new RuleBasedNumberFormat(fieldText);
+                        temp.setLenientParseMode(lenientParse);
+                        populateRuleSetMenu();
+                        spelloutFormatter = temp;
+                        customRuleSet = fieldText;
+                        formatterMenu.select("Custom");
+                        redisplay();
+                    }
+                    catch (Exception x) {
+                        textField.setText(x.toString());
+                    }
+                }
+                rulesField.setText(rulesField.getText()); // rulesField.repaint() didn't work right
+            }
+        } );
+
+        lenientParseButton.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                lenientParse = lenientParseButton.getState();
+                spelloutFormatter.setLenientParseMode(lenientParse);
+            }
+        } );
+
+        numberField.setText(numberFormatter.format(theNumber));
+        numberField.selectAll();
+        textField.setText(spelloutFormatter.format(theNumber, ruleSetName));
+
+        Panel leftPanel = new Panel();
+        leftPanel.setLayout(new BorderLayout());
+        Panel panel = new Panel();
+        panel.setLayout(new BorderLayout());
+        Panel panel1 = new Panel();
+        panel1.setLayout(new GridLayout(3, 1));
+        panel1.add(new Panel());
+        panel1.add(numberField, "Center");
+        panel1.add(lenientParseButton);
+        panel.add(panel1, "Center");
+        Panel panel2 = new Panel();
+        panel2.setLayout(new GridLayout(3, 3));
+        Button button = new Button("+100");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(100);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("+10");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(10);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("+1");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(1);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("<");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                theNumber *= 10;
+                redisplay();
+            }
+        } );
+        panel2.add(button);
+        panel2.add(new Panel());
+        button = new Button(">");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                theNumber /= 10;
+                redisplay();
+            }
+        } );
+        panel2.add(button);
+        button = new Button("-100");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(-100);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("-10");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(-10);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("-1");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(-1);
+            }
+        } );
+        panel2.add(button);
+        panel.add(panel2, "East");
+        leftPanel.add(panel, "North");
+        leftPanel.add(textField, "Center");
+
+        Panel rightPanel = new Panel();
+        rightPanel.setLayout(new BorderLayout());
+        formatterMenu = new Choice();
+        for (int i = 0; i < RbnfSampleRuleSets.sampleRuleSetNames.length; i++)
+            formatterMenu.addItem(RbnfSampleRuleSets.sampleRuleSetNames[i]);
+        formatterMenu.addItem("Custom");
+        formatterMenu.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                Choice source = (Choice)(e.getSource());
+                int item = source.getSelectedIndex();
+                Locale locale = RbnfSampleRuleSets.sampleRuleSetLocales[item];
+
+                commentaryField.setText(RbnfSampleRuleSets.
+                                sampleRuleSetCommentary[item]);
+
+                if (locale != null && (locale.getLanguage().equals("iw")
+                        || locale.getLanguage().equals("ru") || locale.getLanguage().equals("ja")
+                        || locale.getLanguage().equals("el")
+                        || locale.getLanguage().equals("zh"))) {
+                    textField.togglePanes(false);
+                    rulesField.togglePanes(false);
+                }
+                else {
+                    textField.togglePanes(true);
+                    rulesField.togglePanes(true);
+                }
+
+                makeNewSpelloutFormatter();
+                redisplay();
+            }
+        } );
+
+        ruleSetMenu = new Choice();
+        populateRuleSetMenu();
+
+        ruleSetMenu.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                ruleSetName = ruleSetMenu.getSelectedItem();
+                redisplay();
+            }
+        } );
+
+        Panel menuPanel = new Panel();
+        menuPanel.setLayout(new GridLayout(1, 2));
+        menuPanel.add(formatterMenu);
+        menuPanel.add(ruleSetMenu);
+        rightPanel.add(menuPanel, "North");
+
+        rulesField.setText(RbnfSampleRuleSets.sampleRuleSets[formatterMenu.getSelectedIndex()]);
+        rightPanel.add(rulesField, "Center");
+
+        mainPanel.add(leftPanel);
+        mainPanel.add(rightPanel);
+
+        window.add(mainPanel, "Center");
+        window.add(commentaryField, "South");
+
+        window.doLayout();
+        window.show();
+        return window;
+    }
+
+    void roll(int delta) {
+        theNumber += delta;
+        redisplay();
+    }
+
+    void redisplay() {
+        numberField.setText(numberFormatter.format(theNumber));
+        textField.setText(spelloutFormatter.format(theNumber, ruleSetName));
+    }
+
+    void makeNewSpelloutFormatter() {
+        int item = formatterMenu.getSelectedIndex();
+        String formatterMenuItem = formatterMenu.getSelectedItem();
+
+        if (formatterMenuItem.equals("Custom")) {
+            rulesField.setText(customRuleSet);
+            spelloutFormatter = new RuleBasedNumberFormat(customRuleSet);
+        }
+        else {
+            rulesField.setText(RbnfSampleRuleSets.sampleRuleSets[item]);
+
+            Locale locale = RbnfSampleRuleSets.sampleRuleSetLocales[item];
+            if (locale == null)
+                locale = Locale.getDefault();
+
+            spelloutFormatter = new RuleBasedNumberFormat(RbnfSampleRuleSets.
+                            sampleRuleSets[item], locale);
+        }
+        spelloutFormatter.setLenientParseMode(lenientParse);
+        populateRuleSetMenu();
+    }
+
+    void populateRuleSetMenu() {
+        String[] ruleSetNames = spelloutFormatter.getRuleSetNames();
+
+        if (ruleSetMenu != null) {
+            ruleSetMenu.removeAll();
+            for (int i = 0; i < ruleSetNames.length; i++)
+                ruleSetMenu.addItem(ruleSetNames[i]);
+
+            ruleSetName = ruleSetMenu.getSelectedItem();
+        }
+        else
+            ruleSetName = ruleSetNames[0];
+    }
+
+    private Frame demoWindow = null;
+
+    private TextComponent numberField;
+    private DemoTextFieldHolder textField;
+    private DemoTextFieldHolder rulesField;
+    private TextComponent commentaryField;
+    private Checkbox lenientParseButton;
+
+    private boolean numberFieldHasFocus = true;
+
+    private RuleBasedNumberFormat spelloutFormatter;
+    private DecimalFormat numberFormatter;
+    private ParsePosition parsePosition;
+
+    private boolean lenientParse = true;
+
+    private double theNumber = 0;
+    private boolean canEdit = true;
+
+    private Choice formatterMenu;
+    private Choice ruleSetMenu;
+    private String ruleSetName;
+
+    private String customRuleSet = "NO RULES!";
+}
+
+class DemoTextField extends Component {
+    public DemoTextField() {
+    }
+
+    public void setText(String text) {
+        this.text = text;
+        this.repaint();
+    }
+
+    public String getText() {
+        return text;
+    }
+
+    public void paint(Graphics g) {
+        Font font = getFont();
+        FontMetrics fm = g.getFontMetrics();
+        g.setFont(font);
+        String text = getText();
+        BreakIterator bi = BreakIterator.getLineInstance();
+        bi.setText(text);
+        int lineHeight = fm.getHeight();
+        int width = getSize().width;
+        int penY = fm.getAscent();
+        int lineStart = 0;
+        int tempLineEnd = bi.first();
+        int lineEnd = 0;
+        int maxLineEnd = 0;
+        totalHeight = 0;
+
+        while (lineStart < text.length()) {
+            maxLineEnd = text.indexOf('\n', lineStart);
+            if (maxLineEnd == -1)
+                maxLineEnd = Integer.MAX_VALUE;
+            while (tempLineEnd != BreakIterator.DONE && fm.stringWidth(text.substring(
+                            lineStart, tempLineEnd)) < width) {
+                lineEnd = tempLineEnd;
+                tempLineEnd = bi.next();
+            }
+            if (lineStart >= lineEnd) {
+                if (tempLineEnd == BreakIterator.DONE)
+                    lineEnd = text.length();
+                else
+                    lineEnd = tempLineEnd;
+            }
+            if (lineEnd > maxLineEnd)
+                lineEnd = maxLineEnd;
+            g.drawString(text.substring(lineStart, lineEnd), 0, penY);
+            penY += lineHeight;
+            totalHeight += lineHeight;
+            lineStart = lineEnd;
+            if (lineStart < text.length() && text.charAt(lineStart) == '\n')
+                ++lineStart;
+        }
+    }
+
+/*
+    public Dimension getPreferredSize() {
+        Dimension size = getParent().getSize();
+        return new Dimension(size.width, totalHeight);
+    }
+*/
+
+    private String text;
+    private int totalHeight;
+}
+
+class DemoTextFieldHolder extends Panel {
+    public DemoTextFieldHolder() {
+        tf1 = new TextArea("", 0, 0, TextArea.SCROLLBARS_VERTICAL_ONLY);
+        tf2 = new DemoTextField();
+        sp = new ScrollPane();
+
+        setLayout(new CardLayout());
+
+        sp.add(tf2, "TextField1");
+        sp.setVisible(false);
+        add(tf1, "TestField2");
+        add(sp, "ScrollPane");
+    }
+
+    public void addFocusListener(FocusListener l) {
+        tf1.addFocusListener(l);
+    }
+
+    public void addKeyListener(KeyListener l) {
+        tf1.addKeyListener(l);
+    }
+
+    public void setText(String text) {
+        tf1.setText(text);
+        tf2.setText(text);
+    }
+
+    public String getText() {
+        return tf1.getText();
+    }
+
+    public void select(int start, int end) {
+        tf1.select(start, end);
+    }
+
+    public void selectAll() {
+        tf1.selectAll();
+    }
+
+    public void togglePanes(boolean canShowRealTextField) {
+        if (canShowRealTextField != showingRealTextField) {
+            CardLayout layout = (CardLayout)(getLayout());
+            layout.next(this);
+            showingRealTextField = canShowRealTextField;
+        }
+    }
+
+    private TextArea tf1 = null;
+    private DemoTextField tf2 = null;
+    private ScrollPane sp = null;
+    private boolean showingRealTextField = true;
+}
diff --git a/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java b/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java
new file mode 100755
index 0000000..9f8a69b
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java
@@ -0,0 +1,1949 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java,v $ 
+ * $Date: 2002/02/16 03:04:59 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.demo.rbnf;
+
+import com.ibm.icu.dev.demo.*;
+import java.util.Locale;
+
+/**
+ * A collection of example rule sets for use with RuleBasedNumberFormat.
+ * These examples are intended to serve both as demonstrations of what can
+ * be done with this framework, and as starting points for designing new
+ * rule sets.
+ *
+ * For those that claim to represent number-spellout rules for languages
+ * other than U.S. English, we make no claims of either accuracy or
+ * completeness.  In fact, we know them to be incomplete, and suspect
+ * most have mistakes in them.  If you see something that you know is wrong,
+ * please tell us!
+ *
+ * @author Richard Gillam
+ * @version $Version$ $Date: 2002/02/16 03:04:59 $
+ */
+public class RbnfSampleRuleSets {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //========================================================================
+    // Spellout rules for various languages
+    //
+    // The following RuleBasedNumberFormat descriptions show the rules for
+    // spelling out numeric values in various languages.  As mentioned
+    // before, we cannot vouch for the accuracy or completeness of this
+    // data, although we believe it's pretty close.  Basically, this
+    // represents one day's worth of Web-surfing.  If you can supply the
+    // missing information in any of these rule sets, or if you find errors,
+    // or if you can supply spellout rules for languages that aren't shown
+    // here, we want to hear from you!
+    //========================================================================
+
+    /**
+     * Spellout rules for U.S. English.  This demonstration version of the
+     * U.S. English spellout rules has four variants: 1) %simplified is a
+     * set of rules showing the simple method of spelling out numbers in
+     * English: 289 is formatted as "two hundred eighty-nine".  2) %alt-teens
+     * is the same as %simplified, except that values between 1,000 and 9,999
+     * whose hundreds place isn't zero are formatted in hundreds.  For example,
+     * 1,983 is formatted as "nineteen hundred eighty-three," and 2,183 is
+     * formatted as "twenty-one hundred eighty-three," but 2,083 is still
+     * formatted as "two thousand eighty-three."  3) %ordinal formats the
+     * values as ordinal numbers in English (e.g., 289 is "two hundred eighty-
+     * ninth").  4) %default uses a more complicated algorithm to format
+     * numbers in a more natural way: 289 is formatted as "two hundred AND
+     * eighty-nine" and commas are inserted between the thousands groups for
+     * values above 100,000.
+     */
+    public static final String usEnglish =
+        // This rule set shows the normal simple formatting rules for English
+        "%simplified:\n"
+               // negative number rule.  This rule is used to format negative
+               // numbers.  The result of formatting the number's absolute
+               // value is placed where the >> is.
+        + "    -x: minus >>;\n"
+               // faction rule.  This rule is used for formatting numbers
+               // with fractional parts.  The result of formatting the
+               // number's integral part is substituted for the <<, and
+               // the result of formatting the number's fractional part
+               // (one digit at a time, e.g., 0.123 is "zero point one two
+               // three") replaces the >>.
+        + "    x.x: << point >>;\n"
+               // the rules for the values from 0 to 19 are simply the
+               // words for those numbers
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+               // beginning at 20, we use the >> to mark the position where
+               // the result of formatting the number's ones digit.  Thus,
+               // we only need a new rule at every multiple of 10.  Text in
+               // backets is omitted if the value being formatted is an
+               // even multiple of 10.
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+               // beginning at 100, we can use << to mark the position where
+               // the result of formatting the multiple of 100 is to be
+               // inserted.  Notice also that the meaning of >> has shifted:
+               // here, it refers to both the ones place and the tens place.
+               // The meanings of the << and >> tokens depend on the base value
+               // of the rule.  A rule's divisor is (usually) the highest
+               // power of 10 that is less than or equal to the rule's base
+               // value.  The value being formatted is divided by the rule's
+               // divisor, and the integral quotient is used to get the text
+               // for <<, while the remainder is used to produce the text
+               // for >>.  Again, text in brackets is omitted if the value
+               // being formatted is an even multiple of the rule's divisor
+               // (in this case, an even multiple of 100)
+        + "    100: << hundred[ >>];\n"
+               // The rules for the higher numbers work the same way as the
+               // rule for 100: Again, the << and >> tokens depend on the
+               // rule's divisor, which for all these rules is also the rule's
+               // base value.  To group by thousand, we simply don't have any
+               // rules between 1,000 and 1,000,000.
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000: << trillion[ >>];\n"
+               // overflow rule.  This rule specifies that values of a
+               // quadrillion or more are shown in numerals rather than words.
+               // The == token means to format (with new rules) the value
+               // being formatted by this rule and place the result where
+               // the == is.  The #,##0 inside the == signs is a
+               // DecimalFormat pattern.  It specifies that the value should
+               // be formatted with a DecimalFormat object, and that it
+               // should be formatted with no decimal places, at least one
+               // digit, and a thousands separator.
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+
+        // This rule set formats numbers between 1,000 and 9,999 somewhat
+        // differently: If the hundreds digit is not zero, the first two
+        // digits are treated as a number of hundreds.  For example, 2,197
+        // would come out as "twenty-one hundred ninety-seven."
+        + "%alt-teens:\n"
+               // just use %simplified to format values below 1,000
+        + "    =%simplified=;\n"
+               // values between 1,000 and 9,999 are delegated to %%alt-hundreds
+               // for formatting.  The > after "1000" decreases the exponent
+               // of the rule's radix by one, causing the rule's divisor
+               // to be 100 instead of 1,000.  This causes the first TWO
+               // digits of the number, instead of just the first digit,
+               // to be sent to %%alt-hundreds
+        + "    1000>: <%%alt-hundreds<[ >>];\n"
+               // for values of 10,000 and more, we again just use %simplified
+        + "    10,000: =%simplified=;\n"
+        // This rule set uses some obscure voodoo of the description language
+        // to format the first two digits of a value in the thousands.
+        // The rule at 10 formats the first two digits as a multiple of 1,000
+        // and the rule at 11 formats the first two digits as a multiple of
+        // 100.  This works because of something known as the "rollback rule":
+        // if the rule applicable to the value being formatted has two
+        // substitutions, the value being formatted is an even multiple of
+        // the rule's divisor, and the rule's base value ISN'T an even multiple
+        // if the rule's divisor, then the rule that precedes this one in the
+        // list is used instead.  (The [] notation is implemented internally
+        // using this notation: a rule containing [] is split into two rules,
+        // and the right one is chosen using the rollback rule.) In this case,
+        // it means that if the first two digits are an even multiple of 10,
+        // they're formatted with the 10 rule (containing "thousand"), and if
+        // they're not, they're formatted with the 11 rule (containing
+        // "hundred").  %%empty is a hack to cause the rollback rule to be
+        // invoked: it makes the 11 rule have two substitutions, even though
+        // the second substitution (calling %%empty) doesn't actually do
+        // anything.
+        + "%%alt-hundreds:\n"
+        + "    0: SHOULD NEVER GET HERE!;\n"
+        + "    10: <%simplified< thousand;\n"
+        + "    11: =%simplified= hundred>%%empty>;\n"
+        + "%%empty:\n"
+        + "    0:;"
+
+        // this rule set is the same as %simplified, except that it formats
+        // the value as an ordinal number: 234 is formatted as "two hundred
+        // thirty-fourth".  Notice the calls to ^simplified: we have to
+        // call %simplified to avoid getting "second hundred thirty-fourth."
+        + "%ordinal:\n"
+        + "    zeroth; first; second; third; fourth; fifth; sixth; seventh;\n"
+        + "        eighth; ninth;\n"
+        + "    tenth; eleventh; twelfth; thirteenth; fourteenth;\n"
+        + "        fifteenth; sixteenth; seventeenth; eighteenth;\n"
+        + "        nineteenth;\n"
+        + "    twentieth; twenty->>;\n"
+        + "    30: thirtieth; thirty->>;\n"
+        + "    40: fortieth; forty->>;\n"
+        + "    50: fiftieth; fifty->>;\n"
+        + "    60: sixtieth; sixty->>;\n"
+        + "    70: seventieth; seventy->>;\n"
+        + "    80: eightieth; eighty->>;\n"
+        + "    90: ninetieth; ninety->>;\n"
+        + "    100: <%simplified< hundredth; <%simplified< hundred >>;\n"
+        + "    1000: <%simplified< thousandth; <%simplified< thousand >>;\n"
+        + "    1,000,000: <%simplified< millionth; <%simplified< million >>;\n"
+        + "    1,000,000,000: <%simplified< billionth;\n"
+        + "        <%simplified< billion >>;\n"
+        + "    1,000,000,000,000: <%simplified< trillionth;\n"
+        + "        <%simplified< trillion >>;\n"
+        + "    1,000,000,000,000,000: =#,##0=;"
+
+        // %default is a more elaborate form of %simplified;  It is basically
+        // the same, except that it introduces "and" before the ones digit
+        // when appropriate (basically, between the tens and ones digits) and
+        // separates the thousands groups with commas in values over 100,000.
+        + "%default:\n"
+               // negative-number and fraction rules.  These are the same
+               // as those for %simplified, but ave to be stated here too
+               // because this is an entry point
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+               // just use %simplified for values below 100
+        + "    =%simplified=;\n"
+               // for values from 100 to 9,999 use %%and to decide whether or
+               // not to interpose the "and"
+        + "    100: << hundred[ >%%and>];\n"
+        + "    1000: << thousand[ >%%and>];\n"
+               // for values of 100,000 and up, use %%commas to interpose the
+               // commas in the right places (and also to interpose the "and")
+        + "    100,000>>: << thousand[>%%commas>];\n"
+        + "    1,000,000: << million[>%%commas>];\n"
+        + "    1,000,000,000: << billion[>%%commas>];\n"
+        + "    1,000,000,000,000: << trillion[>%%commas>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // if the value passed to this rule set is greater than 100, don't
+        // add the "and"; if it's less than 100, add "and" before the last
+        // digits
+        + "%%and:\n"
+        + "    and =%default=;\n"
+        + "    100: =%default=;\n"
+        // this rule set is used to place the commas
+        + "%%commas:\n"
+               // for values below 100, add "and" (the apostrophe at the
+               // beginning is ignored, but causes the space that follows it
+               // to be significant: this is necessary because the rules
+               // calling %%commas don't put a space before it)
+        + "    ' and =%default=;\n"
+               // put a comma after the thousands (or whatever preceded the
+               // hundreds)
+        + "    100: , =%default=;\n"
+               // put a comma after the millions (or whatever precedes the
+               // thousands)
+        + "    1000: , <%default< thousand, >%default>;\n"
+               // and so on...
+        + "    1,000,000: , =%default=;"
+        // %%lenient-parse isn't really a set of number formatting rules;
+        // it's a set of collation rules.  Lenient-parse mode uses a Collator
+        // object to compare fragments of the text being parsed to the text
+        // in the rules, allowing more leeway in the matching text.  This set
+        // of rules tells the formatter to ignore commas when parsing (it
+        // already ignores spaces, which is why we refer to the space; it also
+        // ignores hyphens, making "twenty one" and "twenty-one" parse
+        // identically)
+        + "%%lenient-parse:\n"
+        + "    & ' ' , ',' ;\n";
+
+    /**
+     * Spellout rules for U.K. English.  U.K. English has one significant
+     * difference from U.S. English: the names for values of 1,000,000,000
+     * and higher.  In American English, each successive "-illion" is 1,000
+     * times greater than the preceding one: 1,000,000,000 is "one billion"
+     * and 1,000,000,000,000 is "one trillion."  In British English, each
+     * successive "-illion" is one million times greater than the one before:
+     * "one billion" is 1,000,000,000,000 (or what Americans would call a
+     * "trillion"), and "one trillion" is 1,000,000,000,000,000,000.
+     * 1,000,000,000 in British English is "one thousand million."  (This
+     * value is sometimes called a "milliard," but this word seems to have
+     * fallen into disuse.)
+     */
+    public static final String ukEnglish =
+        "%simplified:\n"
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%alt-teens:\n"
+        + "    =%simplified=;\n"
+        + "    1000>: <%%alt-hundreds<[ >>];\n"
+        + "    10,000: =%simplified=;\n"
+        + "    1,000,000: << million[ >%simplified>];\n"
+        + "    1,000,000,000,000: << billion[ >%simplified>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%alt-hundreds:\n"
+        + "    0: SHOULD NEVER GET HERE!;\n"
+        + "    10: <%simplified< thousand;\n"
+        + "    11: =%simplified= hundred>%%empty>;\n"
+        + "%%empty:\n"
+        + "    0:;"
+        + "%ordinal:\n"
+        + "    zeroth; first; second; third; fourth; fifth; sixth; seventh;\n"
+        + "        eighth; ninth;\n"
+        + "    tenth; eleventh; twelfth; thirteenth; fourteenth;\n"
+        + "        fifteenth; sixteenth; seventeenth; eighteenth;\n"
+        + "        nineteenth;\n"
+        + "    twentieth; twenty->>;\n"
+        + "    30: thirtieth; thirty->>;\n"
+        + "    40: fortieth; forty->>;\n"
+        + "    50: fiftieth; fifty->>;\n"
+        + "    60: sixtieth; sixty->>;\n"
+        + "    70: seventieth; seventy->>;\n"
+        + "    80: eightieth; eighty->>;\n"
+        + "    90: ninetieth; ninety->>;\n"
+        + "    100: <%simplified< hundredth; <%simplified< hundred >>;\n"
+        + "    1000: <%simplified< thousandth; <%simplified< thousand >>;\n"
+        + "    1,000,000: <%simplified< millionth; <%simplified< million >>;\n"
+        + "    1,000,000,000,000: <%simplified< billionth;\n"
+        + "        <%simplified< billion >>;\n"
+        + "    1,000,000,000,000,000: =#,##0=;"
+        + "%default:\n"
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+        + "    =%simplified=;\n"
+        + "    100: << hundred[ >%%and>];\n"
+        + "    1000: << thousand[ >%%and>];\n"
+        + "    100,000>>: << thousand[>%%commas>];\n"
+        + "    1,000,000: << million[>%%commas>];\n"
+        + "    1,000,000,000,000: << billion[>%%commas>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%and:\n"
+        + "    and =%default=;\n"
+        + "    100: =%default=;\n"
+        + "%%commas:\n"
+        + "    ' and =%default=;\n"
+        + "    100: , =%default=;\n"
+        + "    1000: , <%default< thousand, >%default>;\n"
+        + "    1,000,000: , =%default=;"
+        + "%%lenient-parse:\n"
+        + "    & ' ' , ',' ;\n";
+    // Could someone please correct me if I'm wrong about "milliard" falling
+    // into disuse, or have missed any other details of how large numbers
+    // are rendered.  Also, could someone please provide me with information
+    // on which other English-speaking countries use which system?  Right now,
+    // I'm assuming that the U.S. system is used in Canada and that all the
+    // other English-speaking countries follow the British system.  Can
+    // someone out there confirm this?
+
+    /**
+     * Spellout rules for Spanish.  The Spanish rules are quite similar to
+     * the English rules, but there are some important differences:
+     * First, we have to provide separate rules for most of the twenties
+     * because the ones digit frequently picks up an accent mark that it
+     * doesn't have when standing alone.  Second, each multiple of 100 has
+     * to be specified separately because the multiplier on 100 very often
+     * changes form in the contraction: 500 is "quinientos," not
+     * "cincocientos."  In addition, the word for 100 is "cien" when
+     * standing alone, but changes to "ciento" when followed by more digits.
+     * There also some other differences.
+     */
+    public static final String spanish =
+        // negative-number and fraction rules
+        "-x: menos >>;\n"
+        + "x.x: << punto >>;\n"
+        // words for values from 0 to 19
+        + "cero; uno; dos; tres; cuatro; cinco; seis; siete; ocho; nueve;\n"
+        + "diez; once; doce; trece; catorce; quince; diecis\u00e9is;\n"
+        + "    diecisiete; dieciocho; diecinueve;\n"
+        // words for values from 20 to 29 (necessary because the ones digit
+        // often picks up an accent mark it doesn't have when standing alone)
+        + "veinte; veintiuno; veintid\u00f3s; veintitr\u00e9s; veinticuatro;\n"
+        + "    veinticinco; veintis\u00e9is; veintisiete; veintiocho;\n"
+        + "    veintinueve;\n"
+        // words for multiples of 10 (notice that the tens digit is separated
+        // from the ones digit by the word "y".)
+        + "30: treinta[ y >>];\n"
+        + "40: cuarenta[ y >>];\n"
+        + "50: cincuenta[ y >>];\n"
+        + "60: sesenta[ y >>];\n"
+        + "70: setenta[ y >>];\n"
+        + "80: ochenta[ y >>];\n"
+        + "90: noventa[ y >>];\n"
+        // 100 by itself is "cien," but 100 followed by something is "cineto"
+        + "100: cien;\n"
+        + "101: ciento >>;\n"
+        // words for multiples of 100 (must be stated because they're
+        // rarely simple concatenations)
+        + "200: doscientos[ >>];\n"
+        + "300: trescientos[ >>];\n"
+        + "400: cuatrocientos[ >>];\n"
+        + "500: quinientos[ >>];\n"
+        + "600: seiscientos[ >>];\n"
+        + "700: setecientos[ >>];\n"
+        + "800: ochocientos[ >>];\n"
+        + "900: novecientos[ >>];\n"
+        // for 1,000, the multiplier on "mil" is omitted: 2,000 is "dos mil,"
+        // but 1,000 is just "mil."
+        + "1000: mil[ >>];\n"
+        + "2000: << mil[ >>];\n"
+        // 1,000,000 is "un millon," not "uno millon"
+        + "1,000,000: un mill\u00f3n[ >>];\n"
+        + "2,000,000: << mill\u00f3n[ >>];\n"
+        // overflow rule
+        + "1,000,000,000: =#,##0= (incomplete data);";
+    // The Spanish rules are incomplete.  I'm missing information on negative
+    // numbers and numbers with fractional parts.  I also don't have
+    // information on numbers higher than the millions
+
+    /**
+     * Spellout rules for French.  French adds some interesting quirks of its
+     * own: 1) The word "et" is interposed between the tens and ones digits,
+     * but only if the ones digit if 1: 20 is "vingt," and 2 is "vingt-deux,"
+     * but 21 is "vingt-et-un."  2)  There are no words for 70, 80, or 90.
+     * "quatre-vingts" ("four twenties") is used for 80, and values proceed
+     * by score from 60 to 99 (e.g., 73 is "soixante-treize" ["sixty-thirteen"]).
+     * Numbers from 1,100 to 1,199 are rendered as hundreds rather than
+     * thousands: 1,100 is "onze cents" ("eleven hundred"), rather than
+     * "mille cent" ("one thousand one hundred")
+     */
+    public static final String french =
+        // the main rule set
+        "%main:\n"
+               // negative-number and fraction rules
+        + "    -x: moins >>;\n"
+        + "    x.x: << virgule >>;\n"
+               // words for numbers from 0 to 10
+        + "    z\u00e9ro; un; deux; trois; quatre; cinq; six; sept; huit; neuf;\n"
+        + "    dix; onze; douze; treize; quatorze; quinze; seize;\n"
+        + "        dix-sept; dix-huit; dix-neuf;\n"
+               // ords for the multiples of 10: %%alt-ones inserts "et"
+               // when needed
+        + "    20: vingt[->%%alt-ones>];\n"
+        + "    30: trente[->%%alt-ones>];\n"
+        + "    40: quarante[->%%alt-ones>];\n"
+        + "    50: cinquante[->%%alt-ones>];\n"
+               // rule for 60.  The /20 causes this rule's multiplier to be
+               // 20 rather than 10, allowinhg us to recurse for all values
+               // from 60 to 79...
+        + "    60/20: soixante[->%%alt-ones>];\n"
+               // ...except for 71, which must be special-cased
+        + "    71: soixante et onze;\n"
+               // at 72, we have to repeat the rule for 60 to get us to 79
+        + "    72/20: soixante->%%alt-ones>;\n"
+               // at 80, we state a new rule with the phrase for 80.  Since
+               // it changes form when there's a ones digit, we need a second
+               // rule at 81.  This rule also includes "/20," allowing it to
+               // be used correctly for all values up to 99
+        + "    80: quatre-vingts; 81/20: quatre-vingt->>;\n"
+               // "cent" becomes plural when preceded by a multiplier, and
+               // the multiplier is omitted from the singular form
+        + "    100: cent[ >>];\n"
+        + "    200: << cents[ >>];\n"
+        + "    1000: mille[ >>];\n"
+               // values from 1,100 to 1,199 are rendered as "onze cents..."
+               // instead of "mille cent..."  The > after "1000" decreases
+               // the rule's exponent, causing its multiplier to be 100 instead
+               // of 1,000.  This prevents us from getting "onze cents cent
+               // vingt-deux" ("eleven hundred one hundred twenty-two").
+        + "    1100>: onze cents[ >>];\n"
+               // at 1,200, we go back to formating in thousands, so we
+               // repeat the rule for 1,000
+        + "    1200: mille >>;\n"
+               // at 2,000, the multiplier is added
+        + "    2000: << mille[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << milliarde[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // %%alt-ones is used to insert "et" when the ones digit is 1
+        + "%%alt-ones:\n"
+        + "    ; et-un; =%main=;";
+
+    /**
+     * Spellout rules for Swiss French.  Swiss French differs from French French
+     * in that it does have words for 70, 80, and 90.  This rule set shows them,
+     * and is simpler as a result.
+     */
+    public static final String swissFrench =
+        "%main:\n"
+        + "    -x: moins >>;\n"
+        + "    x.x: << virgule >>;\n"
+        + "    z\u00e9ro; un; deux; trois; quatre; cinq; six; sept; huit; neuf;\n"
+        + "    dix; onze; douze; treize; quatorze; quinze; seize;\n"
+        + "        dix-sept; dix-huit; dix-neuf;\n"
+        + "    20: vingt[->%%alt-ones>];\n"
+        + "    30: trente[->%%alt-ones>];\n"
+        + "    40: quarante[->%%alt-ones>];\n"
+        + "    50: cinquante[->%%alt-ones>];\n"
+        + "    60: soixante[->%%alt-ones>];\n"
+               // notice new words for 70, 80, and 90
+        + "    70: septante[->%%alt-ones>];\n"
+        + "    80: octante[->%%alt-ones>];\n"
+        + "    90: nonante[->%%alt-ones>];\n"
+        + "    100: cent[ >>];\n"
+        + "    200: << cents[ >>];\n"
+        + "    1000: mille[ >>];\n"
+        + "    1100>: onze cents[ >>];\n"
+        + "    1200: mille >>;\n"
+        + "    2000: << mille[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << milliarde[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%alt-ones:\n"
+        + "    ; et-un; =%main=;";
+    // I'm not 100% sure about Swiss French.  Is
+    // this correct?  Is "onze cents" commonly used for 1,100 in both France
+    // and Switzerland?  Can someone fill me in on the rules for the other
+    // French-speaking countries?  I've heard conflicting opinions on which
+    // version is used in Canada, and I understand there's an alternate set
+    // of words for 70, 80, and 90 that is used somewhere, but I don't know
+    // what those words are or where they're used.
+
+    /**
+     * Spellout rules for German.  German also adds some interesting
+     * characteristics.  For values below 1,000,000, numbers are customarily
+     * written out as a single word.  And the ones digit PRECEDES the tens
+     * digit (e.g., 23 is "dreiundzwanzig," not "zwanzigunddrei").
+     */
+    public static final String german =
+        // 1 is "eins" when by itself, but turns into "ein" in most
+        // combinations
+        "%alt-ones:\n"
+        + "    null; eins; =%%main=;\n"
+        + "%%main:\n"
+               // words for numbers from 0 to 12.  Notice that the values
+               // from 13 to 19 can derived algorithmically, unlike in most
+               // other languages
+        + "    null; ein; zwei; drei; vier; f\u00fcnf; sechs; sieben; acht; neun;\n"
+        + "    zehn; elf; zw\u00f6lf; >>zehn;\n"
+               // rules for the multiples of 10.  Notice that the ones digit
+               // goes on the front
+        + "    20: [>>und]zwanzig;\n"
+        + "    30: [>>und]drei\u00dfig;\n"
+        + "    40: [>>und]vierzig;\n"
+        + "    50: [>>und]f\u00fcnfzig;\n"
+        + "    60: [>>und]sechzig;\n"
+        + "    70: [>>und]siebzig;\n"
+        + "    80: [>>und]achtzig;\n"
+        + "    90: [>>und]neunzig;\n"
+        + "    100: hundert[>%alt-ones>];\n"
+        + "    200: <<hundert[>%alt-ones>];\n"
+        + "    1000: tausend[>%alt-ones>];\n"
+        + "    2000: <<tausend[>%alt-ones>];\n"
+        + "    1,000,000: eine Million[ >%alt-ones>];\n"
+        + "    2,000,000: << Millionen[ >%alt-ones>];\n"
+        + "    1,000,000,000: eine Milliarde[ >%alt-ones>];\n"
+        + "    2,000,000,000: << Milliarden[ >%alt-ones>];\n"
+        + "    1,000,000,000,000: eine Billion[ >%alt-ones>];\n"
+        + "    2,000,000,000,000: << Billionen[ >%alt-ones>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;";
+    // again, I'm not 100% sure of these rules.  I think both "hundert" and
+    // "einhundert" are correct or 100, but I'm not sure which is preferable
+    // in situations where this framework is likely to be used.  Also, is it
+    // really true that numbers are run together into compound words all the
+    // time?  And again, I'm missing information on negative numbers and
+    // decimas.
+
+    /**
+     * Spellout rules for Italian.  Like German, most Italian numbers are
+     * written as single words.  What makes these rules complicated is the rule
+     * that says that when a word ending in a vowel and a word beginning with
+     * a vowel are combined into a compound, the vowel is dropped from the
+     * end of the first word: 180 is "centottanta," not "centoottanta."
+     * The complexity of this rule set is to produce this behavior.
+     */
+    public static final String italian =
+        // main rule set.  Follows the patterns of the preceding rule sets,
+        // except that the final vowel is omitted from words ending in
+        // vowels when they are followed by another word; instead, we have
+        // separate rule sets that are identical to this one, except that
+        // all the words that don't begin with a vowel have a vowel tacked
+        // onto them at the front.  A word ending in a vowel calls a
+        // substitution that will supply that vowel, unless that vowel is to
+        // be elided.
+        "%main:\n"
+        + "    -x: meno >>;\n"
+        + "    x.x: << virgola >>;\n"
+        + "    zero; uno; due; tre; quattro; cinque; sei; sette; otto;\n"
+        + "        nove;\n"
+        + "    dieci; undici; dodici; tredici; quattordici; quindici; sedici;\n"
+        + "        diciasette; diciotto; diciannove;\n"
+        + "    20: venti; vent>%%with-i>;\n"
+        + "    30: trenta; trent>%%with-i>;\n"
+        + "    40: quaranta; quarant>%%with-a>;\n"
+        + "    50: cinquanta; cinquant>%%with-a>;\n"
+        + "    60: sessanta; sessant>%%with-a>;\n"
+        + "    70: settanta; settant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: novanta; novant>%%with-a>;\n"
+        + "    100: cento; cent[>%%with-o>];\n"
+        + "    200: <<cento; <<cent[>%%with-o>];\n"
+        + "    1000: mille; mill[>%%with-i>];\n"
+        + "    2000: <<mila; <<mil[>%%with-a>];\n"
+        + "    100,000>>: <<mila[ >>];\n"
+        + "    1,000,000: =#,##0= (incomplete data);\n"
+        + "%%with-a:\n"
+        + "    azero; uno; adue; atre; aquattro; acinque; asei; asette; otto;\n"
+        + "        anove;\n"
+        + "    adieci; undici; adodici; atredici; aquattordici; aquindici; asedici;\n"
+        + "        adiciasette; adiciotto; adiciannove;\n"
+        + "    20: aventi; avent>%%with-i>;\n"
+        + "    30: atrenta; atrent>%%with-i>;\n"
+        + "    40: aquaranta; aquarant>%%with-a>;\n"
+        + "    50: acinquanta; acinquant>%%with-a>;\n"
+        + "    60: asessanta; asessant>%%with-a>;\n"
+        + "    70: asettanta; asettant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: anovanta; anovant>%%with-a>;\n"
+        + "    100: acento; acent[>%%with-o>];\n"
+        + "    200: <%%with-a<cento; <%%with-a<cent[>%%with-o>];\n"
+        + "    1000: amille; amill[>%%with-i>];\n"
+        + "    2000: <%%with-a<mila; <%%with-a<mil[>%%with-a>];\n"
+        + "    100,000: =%main=;\n"
+        + "%%with-i:\n"
+        + "    izero; uno; idue; itre; iquattro; icinque; isei; isette; otto;\n"
+        + "        inove;\n"
+        + "    idieci; undici; idodici; itredici; iquattordici; iquindici; isedici;\n"
+        + "        idiciasette; idiciotto; idiciannove;\n"
+        + "    20: iventi; ivent>%%with-i>;\n"
+        + "    30: itrenta; itrent>%%with-i>;\n"
+        + "    40: iquaranta; iquarant>%%with-a>;\n"
+        + "    50: icinquanta; icinquant>%%with-a>;\n"
+        + "    60: isessanta; isessant>%%with-a>;\n"
+        + "    70: isettanta; isettant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: inovanta; inovant>%%with-a>;\n"
+        + "    100: icento; icent[>%%with-o>];\n"
+        + "    200: <%%with-i<cento; <%%with-i<cent[>%%with-o>];\n"
+        + "    1000: imille; imill[>%%with-i>];\n"
+        + "    2000: <%%with-i<mila; <%%with-i<mil[>%%with-a>];\n"
+        + "    100,000: =%main=;\n"
+        + "%%with-o:\n"
+        + "    ozero; uno; odue; otre; oquattro; ocinque; osei; osette; otto;\n"
+        + "        onove;\n"
+        + "    odieci; undici; ododici; otredici; oquattordici; oquindici; osedici;\n"
+        + "        odiciasette; odiciotto; odiciannove;\n"
+        + "    20: oventi; ovent>%%with-i>;\n"
+        + "    30: otrenta; otrent>%%with-i>;\n"
+        + "    40: oquaranta; oquarant>%%with-a>;\n"
+        + "    50: ocinquanta; ocinquant>%%with-a>;\n"
+        + "    60: osessanta; osessant>%%with-a>;\n"
+        + "    70: osettanta; osettant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: onovanta; onovant>%%with-a>;\n"
+        + "    100: ocento; ocent[>%%with-o>];\n"
+        + "    200: <%%with-o<cento; <%%with-o<cent[>%%with-o>];\n"
+        + "    1000: omille; omill[>%%with-i>];\n"
+        + "    2000: <%%with-o<mila; <%%with-o<mil[>%%with-a>];\n"
+        + "    100,000: =%main=;\n";
+    // Can someone confirm that I did the vowel-eliding thing right?  I'm
+    // not 100% sure I'm doing it in all the right places, or completely
+    // correctly.  Also, I don't have information for negatives and decimals,
+    // and I lack words fror values from 1,000,000 on up.
+
+    /**
+     * Spellout rules for Swedish.
+     */
+    public static final String swedish =
+        "noll; ett; tv\u00e5; tre; fyra; fem; sex; sjo; \u00e5tta; nio;\n"
+        + "tio; elva; tolv; tretton; fjorton; femton; sexton; sjutton; arton; nitton;\n"
+        + "20: tjugo[>>];\n"
+        + "30: trettio[>>];\n"
+        + "40: fyrtio[>>];\n"
+        + "50: femtio[>>];\n"
+        + "60: sextio[>>];\n"
+        + "70: sjuttio[>>];\n"
+        + "80: \u00e5ttio[>>];\n"
+        + "90: nittio[>>];\n"
+        + "100: hundra[>>];\n"
+        + "200: <<hundra[>>];\n"
+        + "1000: tusen[ >>];\n"
+        + "2000: << tusen[ >>];\n"
+        + "1,000,000: en miljon[ >>];\n"
+        + "2,000,000: << miljon[ >>];\n"
+        + "1,000,000,000: en miljard[ >>];\n"
+        + "2,000,000,000: << miljard[ >>];\n"
+        + "1,000,000,000,000: en biljon[ >>];\n"
+        + "2,000,000,000,000: << biljon[ >>];\n"
+        + "1,000,000,000,000,000: =#,##0=";
+    // can someone supply me with information on negatives and decimals?
+
+    /**
+     * Spellout rules for Dutch.  Notice that in Dutch, as in German,
+     * the ones digit precedes the tens digit.
+     */
+    public static final String dutch =
+        " -x: min >>;\n"
+        + "x.x: << komma >>;\n"
+        + "(zero?); een; twee; drie; vier; vijf; zes; zeven; acht; negen;\n"
+        + "tien; elf; twaalf; dertien; veertien; vijftien; zestien;\n"
+        + "zeventien; achtien; negentien;\n"
+        + "20: [>> en ]twintig;\n"
+        + "30: [>> en ]dertig;\n"
+        + "40: [>> en ]veertig;\n"
+        + "50: [>> en ]vijftig;\n"
+        + "60: [>> en ]zestig;\n"
+        + "70: [>> en ]zeventig;\n"
+        + "80: [>> en ]tachtig;\n"
+        + "90: [>> en ]negentig;\n"
+        + "100: << honderd[ >>];\n"
+        + "1000: << duizend[ >>];\n"
+        + "1,000,000: << miljoen[ >>];\n"
+        + "1,000,000,000: << biljoen[ >>];\n"
+        + "1,000,000,000,000: =#,##0=";
+
+    /**
+     * Spellout rules for Japanese.  In Japanese, there really isn't any
+     * distinction between a number written out in digits and a number
+     * written out in words: the ideographic characters are both digits
+     * and words.  This rule set provides two variants:  %traditional
+     * uses the traditional CJK numerals (which are also used in China
+     * and Korea).  %financial uses alternate ideographs for many numbers
+     * that are harder to alter than the traditional numerals (one could
+     * fairly easily change a one to
+     * a three just by adding two strokes, for example).  This is also done in
+     * the other countries using Chinese idographs, but different ideographs
+     * are used in those places.
+     */
+    public static final String japanese =
+        "%financial:\n"
+        + "    \u96f6; \u58f1; \u5f10; \u53c2; \u56db; \u4f0d; \u516d; \u4e03; \u516b; \u4e5d;\n"
+        + "    \u62fe[>>];\n"
+        + "    20: <<\u62fe[>>];\n"
+        + "    100: <<\u767e[>>];\n"
+        + "    1000: <<\u5343[>>];\n"
+        + "    10,000: <<\u4e07[>>];\n"
+        + "    100,000,000: <<\u5104[>>];\n"
+        + "    1,000,000,000,000: <<\u5146[>>];\n"
+        + "    10,000,000,000,000,000: =#,##0=;\n"
+        + "%traditional:\n"
+        + "    \u96f6; \u4e00; \u4e8c; \u4e09; \u56db; \u4e94; \u516d; \u4e03; \u516b; \u4e5d;\n"
+        + "    \u5341[>>];\n"
+        + "    20: <<\u5341[>>];\n"
+        + "    100: <<\u767e[>>];\n"
+        + "    1000: <<\u5343[>>];\n"
+        + "    10,000: <<\u4e07[>>];\n"
+        + "    100,000,000: <<\u5104[>>];\n"
+        + "    1,000,000,000,000: <<\u5146[>>];\n"
+        + "    10,000,000,000,000,000: =#,##0=;";
+    // Can someone supply me with the right fraud-proof ideographs for
+    // Simplified and Traditional Chinese, and for Korean?  Can someone
+    // supply me with information on negatives and decimals?
+
+    /**
+     * Spellout rules for Greek.  Again in Greek we have to supply the words
+     * for the multiples of 100 because they can't be derived algorithmically.
+     * Also, the tens dgit changes form when followed by a ones digit: an
+     * accent mark disappears from the tens digit and moves to the ones digit.
+     * Therefore, instead of using the [] notation, we actually have to use
+     * two separate rules for each multiple of 10 to show the two forms of
+     * the word.
+     */
+    public static final String greek =
+        "zero (incomplete data); \u03ad\u03bd\u03b1; \u03b4\u03cd\u03bf; \u03b4\u03c1\u03af\u03b1; "
+        + "\u03c4\u03ad\u03c3\u03c3\u03b5\u03c1\u03b1; \u03c0\u03ad\u03bd\u03c4\u03b5; "
+        + "\u03ad\u03be\u03b9; \u03b5\u03c0\u03c4\u03ac; \u03bf\u03ba\u03c4\u03ce; "
+        + "\u03b5\u03bd\u03bd\u03ad\u03b1;\n"
+        + "10: \u03b4\u03ad\u03ba\u03b1; "
+        + "\u03ad\u03bd\u03b4\u03b5\u03ba\u03b1; \u03b4\u03ce\u03b4\u03b5\u03ba\u03b1; "
+        + "\u03b4\u03b5\u03ba\u03b1>>;\n"
+        + "20: \u03b5\u03af\u03ba\u03bf\u03c3\u03b9; \u03b5\u03b9\u03ba\u03bf\u03c3\u03b9>>;\n"
+        + "30: \u03c4\u03c1\u03b9\u03ac\u03bd\u03c4\u03b1; \u03c4\u03c1\u03b9\u03b1\u03bd\u03c4\u03b1>>;\n"
+        + "40: \u03c3\u03b1\u03c1\u03ac\u03bd\u03c4\u03b1; \u03c3\u03b1\u03c1\u03b1\u03bd\u03c4\u03b1>>;\n"
+        + "50: \u03c0\u03b5\u03bd\u03ae\u03bd\u03c4\u03b1; \u03c0\u03b5\u03bd\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "60: \u03b5\u03be\u03ae\u03bd\u03c4\u03b1; \u03b5\u03be\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "70: \u03b5\u03b2\u03b4\u03bf\u03bc\u03ae\u03bd\u03c4\u03b1; "
+        + "\u03b5\u03b2\u03b4\u03bf\u03bc\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "80: \u03bf\u03b3\u03b4\u03cc\u03bd\u03c4\u03b1; \u03bf\u03b3\u03b4\u03bf\u03bd\u03c4\u03b1>>;\n"
+        + "90: \u03b5\u03bd\u03bd\u03b5\u03bd\u03ae\u03bd\u03c4\u03b1; "
+        + "\u03b5\u03bd\u03bd\u03b5\u03bd\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "100: \u03b5\u03ba\u03b1\u03c4\u03cc[\u03bd >>];\n"
+        + "200: \u03b4\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "300: \u03c4\u03c1\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "400: \u03c4\u03b5\u03c4\u03c1\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "500: \u03c0\u03b5\u03bd\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "600: \u03b5\u03be\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "700: \u03b5\u03c0\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "800: \u03bf\u03ba\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "900: \u03b5\u03bd\u03bd\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "1000: \u03c7\u03af\u03bb\u03b9\u03b1[ >>];\n"
+        + "2000: << \u03c7\u03af\u03bb\u03b9\u03b1[ >>];\n"
+        + "1,000,000: << \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03b9\u03cc\u03c1\u03b9\u03bf[ >>];\n"
+        + "1,000,000,000: << \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03b9\u03cc\u03c1\u03b9\u03bf[ >>];\n"
+        + "1,000,000,000,000: =#,##0=";
+    // Can someone supply me with information on negatives and decimals?
+    // I'm also missing the word for zero.  Can someone clue me in?
+
+    /**
+     * Spellout rules for Russian.
+     */
+    public static final String russian =
+        "\u043d\u043e\u043b\u044c; \u043e\u0434\u0438\u043d; \u0434\u0432\u0430; \u0442\u0440\u0438; "
+        + "\u0447\u0435\u0442\u044b\u0440\u0435; \u043f\u044f\u0442; \u0448\u0435\u0441\u0442; "
+        + "\u0441\u0435\u043c\u044c; \u0432\u043e\u0441\u0435\u043c\u044c; \u0434\u0435\u0432\u044f\u0442;\n"
+        + "10: \u0434\u0435\u0441\u044f\u0442; "
+        + "\u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+        + "\u0434\u0432\u0435\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0442\u0440\u0438\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0447\u0435\u0442\u044b\u0440\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+        + "15: \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0441\u0435\u043c\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0432\u043e\u0441\u0435\u043c\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0434\u0435\u0432\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+        + "20: \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c[ >>];\n"
+        + "30: \u0442\u0440\u043b\u0434\u0446\u0430\u0442\u044c[ >>];\n"
+        + "40: \u0441\u043e\u0440\u043e\u043a[ >>];\n"
+        + "50: \u043f\u044f\u0442\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "60: \u0448\u0435\u0441\u0442\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "70: \u0441\u0435\u043c\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "80: \u0432\u043e\u0441\u0435\u043c\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "90: \u0434\u0435\u0432\u044f\u043d\u043e\u0441\u0442\u043e[ >>];\n"
+        + "100: \u0441\u0442\u043e[ >>];\n"
+        + "200: << \u0441\u0442\u043e[ >>];\n"
+        + "1000: \u0442\u044b\u0441\u044f\u0447\u0430[ >>];\n"
+        + "2000: << \u0442\u044b\u0441\u044f\u0447\u0430[ >>];\n"
+        + "1,000,000: \u043c\u0438\u043b\u043b\u0438\u043e\u043d[ >>];\n"
+        + "2,000,000: << \u043c\u0438\u043b\u043b\u0438\u043e\u043d[ >>];\n"
+        + "1,000,000,000: =#,##0=;";
+    // Can someone supply me with information on negatives and decimals?
+    // How about words for billions and trillions?
+
+    /**
+     * Spellout rules for Hebrew.  Hebrew actually has inflected forms for
+     * most of the lower-order numbers.  The masculine forms are shown
+     * here.
+     */
+    public static final String hebrew =
+        "zero (incomplete data); \u05d0\u05d4\u05d3; \u05e9\u05d2\u05d9\u05d9\u05dd; \u05e9\u05dc\u05d5\u05e9\u05d4;\n"
+        + "4: \u05d0\u05d3\u05d1\u05e6\u05d4; \u05d7\u05d2\u05d5\u05d9\u05e9\u05d4; \u05e9\u05e9\u05d4;\n"
+        + "7: \u05e9\u05d1\u05e6\u05d4; \u05e9\u05de\u05d5\u05d2\u05d4; \u05ea\u05e9\u05e6\u05d4;\n"
+        + "10: \u05e6\u05e9\u05d3\u05d4[ >>];\n"
+        + "20: \u05e6\u05e9\u05d3\u05d9\u05dd[ >>];\n"
+        + "30: \u05e9\u05dc\u05d5\u05e9\u05d9\u05dd[ >>];\n"
+        + "40: \u05d0\u05d3\u05d1\u05e6\u05d9\u05dd[ >>];\n"
+        + "50: \u05d7\u05de\u05d9\u05e9\u05d9\u05dd[ >>];\n"
+        + "60: \u05e9\u05e9\u05d9\u05dd[ >>];\n"
+        + "70: \u05e9\u05d1\u05e6\u05d9\u05dd[ >>];\n"
+        + "80: \u05e9\u05de\u05d5\u05d2\u05d9\u05dd[ >>];\n"
+        + "90: \u05ea\u05e9\u05e6\u05d9\u05dd[ >>];\n"
+        + "100: \u05de\u05d0\u05d4[ >>];\n"
+        + "200: << \u05de\u05d0\u05d4[ >>];\n"
+        + "1000: \u05d0\u05dc\u05e3[ >>];\n"
+        + "2000: << \u05d0\u05dc\u05e3[ >>];\n"
+        + "1,000,000: =#,##0= (incomplete data);";
+    // This data is woefully incomplete.  Can someone fill me in on the
+    // various inflected forms of the numbers, which seem to be necessary
+    // to do Hebrew correctly?  Can somone supply me with data for values
+    // from 1,000,000 on up?  What about the word for zero?  What about
+    // information on negatives and decimals?
+
+    //========================================================================
+    // Simple examples
+    //========================================================================
+
+    /**
+     * This rule set adds an English ordinal abbreviation to the end of a
+     * number.  For example, 2 is formatted as "2nd".  Parsing doesn't work with
+     * this rule set.  To parse, use DecimalFormat on the numeral.
+     */
+    public static final String ordinal =
+        // this rule set formats the numeral and calls %%abbrev to
+        // supply the abbreviation
+        "%main:\n"
+        + "    =#,##0==%%abbrev=;\n"
+        // this rule set supplies the abbreviation
+        + "%%abbrev:\n"
+               // the abbreviations.  Everything from 4 to 19 ends in "th"
+        + "    th; st; nd; rd; th;\n"
+               // at 20, we begin repeating the cycle every 10 (13 is "13th",
+               // but 23 and 33 are "23rd" and "33rd")  We do this by
+               // ignoring all bug the ones digit in selecting the abbreviation
+        + "    20: >>;\n"
+               // at 100, we repeat the whole cycle by considering only the
+               // tens and ones digits in picking an abbreviation
+        + "    100: >>;\n";
+
+    /**
+     * This is a simple message-formatting example.  Normally one would
+     * use ChoiceFormat and MessageFormat to do something this simple,
+     * but this shows it could be done with RuleBasedNumberFormat too.
+     * A message-formatting example that might work better with
+     * RuleBasedNumberFormat appears later.
+     */
+    public static final String message1 =
+        // this rule surrounds whatever the other rules produce with the
+        // rest of the sentence
+        "x.0: The search found <<.;\n"
+        // use words for values below 10 (and change to "file" for 1)
+        + "no files; one file; two files; three files; four files; five files;\n"
+        + "    six files; seven files; eight files; nine files;\n"
+        // use numerals for values higher than 10
+        + "=#,##0= files;";
+
+    //========================================================================
+    // Fraction handling
+    //
+    // The next few examples show how RuleBasedNumberFormat can be used for
+    // more flexible handling of fractions
+    //========================================================================
+
+    /**
+     * This example formats a number in one of the two styles often used
+     * on checks.  %dollars-and-hundredths formats cents as hundredths of
+     * a dollar (23.40 comes out as "twenty-three and 40/100 dollars").
+     * %dollars-and-cents formats in dollars and cents (23.40 comes out as
+     * "twenty-three dollars and forty cents")
+     */
+    public static final String dollarsAndCents =
+        // this rule set formats numbers as dollars and cents
+        "%dollars-and-cents:\n"
+               // if the value is 1 or more, put "xx dollars and yy cents".
+               // the "and y cents" part is suppressed if the value is an
+               // even number of dollars
+        + "    x.0: << [and >%%cents>];\n"
+               // if the value is between 0 and 1, put "xx cents"
+        + "    0.x: >%%cents>;\n"
+               // these three rules take care of the singular and plural
+               // forms of "dollar" and use %%main to format the number
+        + "    0: zero dollars; one dollar; =%%main= dollars;\n"
+        // these are the regular U.S. English number spellout rules
+        + "%%main:\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000: << trillion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // this rule takes care of the fractional part of the value.  It
+        // multiplies the fractional part of the number being formatted by
+        // 100, formats it with %%main, and then addes the word "cent" or
+        // "cents" to the end.  (The text in brackets is omitted if the
+        // numerator of the fraction is 1.)
+        + "%%cents:\n"
+        + "    100: <%%main< cent[s];\n"
+
+        // this rule set formats numbers as dollars and hundredths of dollars
+        + "%dollars-and-hundredths:\n"
+               // this rule takes care of the general shell of the output
+               // string.  We always show the cents, even when there aren't
+               // any.  Because of this, the word is always "dollars"--
+               // we don't have to worry about the singular form.  We use
+               // %%main to format the number of dollars and %%hundredths to
+               // format the number of cents
+        + "    x.0: <%%main< and >%%hundredths>/100 dollars;\n"
+        // this rule set formats the cents for %dollars-and-hundredths.
+        // It multiplies the fractional part of the number by 100 and formats
+        // the result using a DecimalFormat ("00" tells the DecimalFormat to
+        // always use two digits, even for numbers under 10)
+        + "%%hundredths:\n"
+        + "    100: <00<;\n";
+
+    /**
+     * This rule set shows the fractional part of the number as a fraction
+     * with a power of 10 as the denominator.  Some languages don't spell
+     * out the fractional part of a number as "point one two three," but
+     * always render it as a fraction.  If we still want to treat the fractional
+     * part of the number as a decimal, then the fraction's denominator
+     * is always a power of 10.  This example does that: 23.125 is formatted
+     * as "twenty-three and one hundred twenty-five thousandths" (as opposed
+     * to "twenty-three point one two five" or "twenty-three and one eighth").
+     */
+    public static final String decimalAsFraction =
+        // the regular U.S. English spellout rules, with one difference
+        "%main:\n"
+        + "    -x: minus >>;\n"
+               // the difference.  This rule uses %%frac to show the fractional
+               // part of the number.  Text in brackets is omitted when the
+               // value is between 0 and 1 (causing 0.3 to come out as "three
+               // tenths" instead of "zero and three tenths").
+        + "    x.x: [<< and ]>%%frac>;\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000: << trillion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // the rule set that formats the fractional part of the number.
+        // The rule that is used is the one that, when its baase value is
+        // multiplied by the fractional part of the number being formatted,
+        // produces the result closest to zero.  Thus, the base values are
+        // prospective denominators of the fraction.  The << marks the place
+        // where the numerator of the fraction (the result of multiplying the
+        // fractional part of the number by the rule's base value) is
+        // placed.  Text in brackets is omitted when the numerator is 1, giving
+        // us the singular and plural forms of the words.
+        // [In languages where the singular and plural are completely different
+        // words, the rule can just be stated twice: the second time with
+        // the plural form.]
+        + "%%frac:\n"
+        + "    10: << tenth[s];\n"
+        + "    100: << hundredth[s];\n"
+        + "    1000: << thousandth[s];\n"
+        + "    10,000: << ten-thousandth[s];\n"
+        + "    100,000: << hundred-thousandth[s];\n"
+        + "    1,000,000: << millionth[s];";
+
+    /**
+     * Number with closest fraction.  This example formats a value using
+     * numerals, but shows the fractional part as a ratio (fraction) rather
+     * than a decimal.  The fraction always has a denominator between 2 and 10.
+     */
+    public static final String closestFraction =
+        "%main:\n"
+               // this rule formats the number if it's 1 or more.  It formats
+               // the integral part using a DecimalFormat ("#,##0" puts
+               // thousands separators in the right places) and the fractional
+               // part using %%frac.  If there is no fractional part, it
+               // just shows the integral part.
+        + "    x.0: <#,##0<[ >%%frac>];\n"
+               // this rule formats the number if it's between 0 and 1.  It
+               // shows only the fractional part (0.5 shows up as "1/2," not
+               // "0 1/2")
+        + "    0.x: >%%frac>;\n"
+        // the fraction rule set.  This works the same way as the one in the
+        // preceding example: We multiply the fractional part of the number
+        // being formatted by each rule's base value and use the rule that
+        // produces the result closest to 0 (or the first rule that produces 0).
+        // Since we only provide rules for the numbers from 2 to 10, we know
+        // we'll get a fraction with a denominator between 2 and 10.
+        // "<0<" causes the numerator of the fraction to be formatted
+        // using numerals
+        + "%%frac:\n"
+        + "    2: 1/2;\n"
+        + "    3: <0</3;\n"
+        + "    4: <0</4;\n"
+        + "    5: <0</5;\n"
+        + "    6: <0</6;\n"
+        + "    7: <0</7;\n"
+        + "    8: <0</8;\n"
+        + "    9: <0</9;\n"
+        + "    10: <0</10;\n";
+
+    /**
+     * American stock-price formatting.  Non-integral stock prices are still
+     * generally shown in eighths or sixteenths of dollars instead of dollars
+     * and cents.  This example formats stock prices in this way if possible,
+     * and in dollars and cents if not.
+     */
+    public static final String stock =
+        "%main:\n"
+               // this rule formats the integral part of the number in numerals
+               // and (if necessary) the fractional part using %%frac1
+        + "    x.0: <#,##0<[>%%frac1>];\n"
+               // this rule is used for values between 0 and 1 and omits the
+               // integral part
+        + "    0.x: >%%frac2>;\n"
+        // this rule set is used to format the fractional part of the number when
+        // there's an integral part before it (again, we try all denominators
+        // and use the "best" one)
+        + "%%frac1:\n"
+               // for even multiples of 1/4, format the fraction using the
+               // typographer's fractions
+        + "    4: <%%quarters<;\n"
+               // format the value as a number of eighths, sixteenths, or
+               // thirty-seconds, whichever produces the most accurate value.
+               // The apostrophe at the front of these rules is ignored, but
+               // it makes the space that follows it significant.  This puts a
+               // space between the value's integral and fractional parts so
+               // you can read it
+        + "    8: ' <0</8;\n"
+        + "    16: ' <0</16;\n"
+        + "    32: ' <0</32;\n"
+               // if we can't reasonably format the number in powers of 2,
+               // then show it as dollars and cents
+        + "    100: .<00<;\n"
+        // this rule set is used when the fractional part of the value stands
+        // alone
+        + "%%frac2:\n"
+        + "    4: <%%quarters<;\n"
+               // for fractions that we can't show using typographer's fractions,
+               // we don't have to put a space before the fraction
+        + "    8: <0</8;\n"
+        + "    16: <0</16;\n"
+        + "    32: <0</32;\n"
+               // but dollars and cents look better with a leading 0
+        + "    100: 0.<00<;\n"
+        // this rule set formats 1/4, 1/2, and 3/4 using typographer's fractions
+        + "%%quarters:\n"
+        + "    ; \u00bc; \u00bd; \u00be;\n"
+        // there are the lenient-parse rules.  These allow the user to type
+        // "1/4," "1/2," and "3/4" instead of their typographical counterparts
+        // and still have them be understood by the formatter
+        + "%%lenient-parse:\n"
+        + "    & '1/4' , \u00bc\n"
+        + "    & '1/2' , \u00bd\n"
+        + "    & '3/4' , \u00be\n;";
+
+    //========================================================================
+    // Changing dimensions
+    //
+    // The next few examples demonstrate using a RuleBasedNumberFormat to
+    // change the units a value is denominated in depending on its magnitude
+    //========================================================================
+
+    /**
+     * The example shows large numbers the way they often appear is nwespapers:
+     * 1,200,000 is formatted as "1.2 million".
+     */
+    public static final String abbEnglish =
+        "=#,##0=;\n"
+        // this is fairly self-explanatory, but note that the << substitution
+        // can show the fractional part of the substitution value if the user
+        // wants it
+        + "1,000,000: <##0.###< million;\n"
+        + "1,000,000,000: <##0.###< billion;\n"
+        + "1,000,000,000,000: <##0.###< trillion;\n";
+
+    /**
+     * This example takes a number of meters and formats it in whatever unit
+     * will produce a number with from one to three digits before the decimal
+     * point.  For example, 230,000 is formatted as "230 km".
+     */
+    public static final String units =
+        "%main:\n"
+               // for values between 0 and 1, delegate to %%small
+        + "    0.x: >%%small>;\n"
+               // otherwise, show between 3 and 6 significant digits of the value
+               // along with the most appropriate unit
+        + "    0: =##0.###= m;\n"
+        + "    1,000: <##0.###< km;\n"
+        + "    1,000,000: <##0.###< Mm;\n"
+        + "    1,000,000,000: <##0.###< Gm;\n"
+        + "    1,000,000,000,000: <#,##0.###< Tm;\n"
+        // %%small formats the number when it's less then 1.  It multiplies the
+        // value by one billion, and then uses %%small2 to actually do the
+        // formatting.
+        + "%%small:\n"
+        + "    1,000,000,000,000: <%%small2<;\n"
+        // this rule set actually formats small values.  %%small passes this
+        // rule set a number of picometers, and it takes care of scaling up as
+        // appropriate in exactly the same way %main does (we can't normally
+        // handle fractional values this way: here, we're concerned about
+        // magnitude; most of the time, we're concerned about precsion)
+        + "%%small2:\n"
+        + "    0: =##0= pm;\n"
+        + "    1,000: <##0.###< nm;\n"
+        + "    1,000,000: <##0.###< \u00b5m;\n"
+        + "    1,000,000,000: <##0.###< mm;\n";
+
+    /**
+     * A more complicated message-formatting example.  Here, in addition to
+     * handling the singular and plural versions of the word, the value is
+     * denominated in bytes, kilobytes, or megabytes depending on its magnitude.
+     * Also notice that it correctly treats a kilobyte as 1,024 bytes (not 1,000),
+     * and a megabyte as 1,024 kilobytes (not 1,000).
+     */
+    public static final String message2 =
+        // this rule supplies the shell of the sentence
+        "x.0: There << free space on the disk.;\n"
+        // handle singular and plural forms of "byte" (and format 0 as
+        // "There is no free space...")
+        + "0: is no;\n"
+        + "is one byte of;\n"
+        + "are =0= bytes of;\n"
+        // for values above 1,024, format the number in K (since "K" is usually
+        // promounced "K" regardless of whether it's singular or plural, we
+        // don't worry about the plural form).  The "/1024" here causes us to
+        // treat a K as 1,024 bytes rather than 1,000 bytes.
+        + "1024/1024: is <0<K of;\n"
+        // for values about 1,048,576, format the number in Mb.  Since "Mb" is
+        // usually promounced "meg" in singular and "megs" in plural, we do have
+        // both singular and plural forms.  Again, notice we treat a megabyte
+        // as 1,024 kilobytes.
+        + "1,048,576/1024: is 1 Mb of;\n"
+        + "2,097,152/1024: are <0< Mb of;";
+
+    //========================================================================
+    // Alternate radices
+    //========================================================================
+
+    /**
+     * This example formats a number in dozens and gross.  This is intended to
+     * demonstrate how this rule set can be used to format numbers in systems
+     * other than base 10.  The "/12" after the rules' base values controls this.
+     * Also notice that the base doesn't have to be consistent throughout the
+     * whole rule set: we go back to base 10 for values over 1,000.
+     */
+    public static final String dozens =
+        // words for numbers...
+        "zero; one; two; three; four; five; six;\n"
+        + "seven; eight; nine; ten; eleven;\n"
+        // format values over 12 in dozens
+        + "12/12: << dozen[ and >>];\n"
+        // format values over 144 in gross
+        + "144/12: << gross[, >>];\n"
+        // format values over 1,000 in thousands
+        + "1000: << thousand[, >>];\n"
+        // overflow rule.  Format values over 10,000 in numerals
+        + "10,000: =#,##0=;\n";
+
+    //========================================================================
+    // Major and minor units
+    //
+    // These examples show how a single value can be divided up into major
+    // and minor units that don't relate to each other by a factor of 10.
+    //========================================================================
+
+    /**
+     * This example formats a number of seconds in sexagesimal notation
+     * (i.e., hours, minutes, and seconds).  %with-words formats it with
+     * words (3740 is "1 hour, 2 minutes, 20 seconds") and %in-numerals
+     * formats it entirely in numerals (3740 is "1:02:20").
+     */
+    public static final String durationInSeconds =
+        // main rule set for formatting with words
+        "%with-words:\n"
+               // take care of singular and plural forms of "second"
+        + "    0 seconds; 1 second; =0= seconds;\n"
+               // use %%min to format values greater than 60 seconds
+        + "    60/60: <%%min<[, >>];\n"
+               // use %%hr to format values greater than 3,600 seconds
+               // (the ">>>" below causes us to see the number of minutes
+               // when when there are zero minutes)
+        + "    3600/60: <%%hr<[, >>>];\n"
+        // this rule set takes care of the singular and plural forms
+        // of "minute"
+        + "%%min:\n"
+        + "    0 minutes; 1 minute; =0= minutes;\n"
+        // this rule set takes care of the singular and plural forms
+        // of "hour"
+        + "%%hr:\n"
+        + "    0 hours; 1 hour; =0= hours;\n"
+
+        // main rule set for formatting in numerals
+        + "%in-numerals:\n"
+               // values below 60 seconds are shown with "sec."
+        + "    =0= sec.;\n"
+               // higher values are shown with colons: %%min-sec is used for
+               // values below 3,600 seconds...
+        + "    60: =%%min-sec=;\n"
+               // ...and %%hr-min-sec is used for values of 3,600 seconds
+               // and above
+        + "    3600: =%%hr-min-sec=;\n"
+        // this rule causes values of less than 10 minutes to show without
+        // a leading zero
+        + "%%min-sec:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <0<>>;\n"
+        // this rule set is used for values of 3,600 or more.  Minutes are always
+        // shown, and always shown with two digits
+        + "%%hr-min-sec:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <00<>>;\n"
+        + "    3600/60: <#,##0<:>>>;\n"
+        // the lenient-parse rules allow several different characters to be used
+        // as delimiters between hours, minutes, and seconds
+        + "%%lenient-parse:\n"
+        + "    & : = . = ' ' = -;\n";
+
+    /**
+     * This example formats a number of hours in sexagesimal notation (i.e.,
+     * hours, minutes, and seconds).  %with-words formats the value using
+     * words for the units, and %in-numerals formats the value using only
+     * numerals.
+     */
+    public static final String durationInHours =
+        // main entry point for formatting with words
+        "%with-words:\n"
+               // this rule omits minutes and seconds when the value is
+               // an even number of hours
+        + "    x.0: <<[, >%%min-sec>];\n"
+               // these rules take care of the singular and plural forms
+               // of hours
+        + "    0 hours; 1 hour; =#,##0= hours;\n"
+        // this rule set takes the fractional part of the number and multiplies
+        // it by 3,600 (turning it into a number of seconds).  Then it delegates
+        // to %%min-sec-implementation to format the resulting value
+        + "%%min-sec:\n"
+        + "    3600: =%%min-sec-implementation=;\n"
+        // this rule set formats the seconds as either seconds or minutes and
+        // seconds, and takes care of the singular and plural forms of
+        // "minute" and "second"
+        + "%%min-sec-implementation:\n"
+        + "    0 seconds; 1 second; =0= seconds;\n"
+        + "    60/60: 1 minute[, >>];\n"
+        + "    120/60: <0< minutes[, >>];\n"
+
+        // main entry point for formatting in numerals
+        + "%in-numerals:\n"
+               // show minutes even for even numbers of hours
+        + "    x.0: <#,##0<:00;\n"
+               // delegate to %%min-sec2 to format minutes and seconds
+        + "    x.x: <#,##0<:>%%min-sec2>;\n"
+        // this rule set formats minutes when there is an even number of
+        // minutes, and delegates to %%min-sec2-implementation when there
+        // are seconds
+        + "%%min-sec2:\n"
+        + "    60: <00<;\n"
+        + "    3600: <%%min-sec2-implementation<;\n"
+        // these two rule sets are used to format the minutes and seconds
+        + "%%min-sec2-implementation:\n"
+               // if there are fewer than 60 seconds, show the minutes anyway
+        + "    0: 00:=00=;\n"
+               // if there are minutes, format them too, and always use 2 digits
+               // for both minutes and seconds
+        + "    60: =%%min-sec3=;\n"
+        + "%%min-sec3:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <00<>>;\n"
+        // the lenient-parse rules allow the user to use any of several
+        // characters as delimiters between hours, minutes, and seconds
+        + "%%lenient-parse:\n"
+        + "    & : = . = ' ' = -;\n";
+
+    /**
+     * This rule set formats a number of pounds as pounds, shillings, and
+     * pence in the old English system of currency.
+     */
+    public static final String poundsShillingsAndPence =
+        // for values of 1 or more, format the integral part with a pound
+        // sign in front, and show shillings and pence if necessary
+        "%main:\n"
+        + "    x.0: \u00a3<#,##0<[ >%%shillings-and-pence>];\n"
+        // for values between 0 and 1, omit the number of pounds
+        + "    0.x: >%%pence-alone>;\n"
+        // this rule set is used to show shillings and pence.  It multiplies
+        // the fractional part of the number by 240 (the number of pence in a
+        // pound) and uses %%shillings-and-pence-implementation to format
+        // the result
+        + "%%shillings-and-pence:\n"
+        + "    240: <%%shillings-and-pence-implementation<;\n"
+        // this rule set is used to show shillings and pence when there are
+        // no pounds.  It also multiplies the value by 240, and then it uses
+        // %%pence-alone-implementation to format the result.
+        + "%%pence-alone:\n"
+        + "    240: <%%pence-alone-implementation<;\n"
+        // this rule set formats a number of pence when we know we also
+        // have pounds.  We always show shillings (with a 0 if necessary),
+        // but only show pence if the value isn't an even number of shillings
+        + "%%shillings-and-pence-implementation:\n"
+        + "    0/; 0/=0=;\n"
+        + "    12/12: <0</[>0>];\n"
+        // this rule set formats a number of pence when we know there are
+        // no pounds.  Values less than a shilling are shown with "d." (the
+        // abbreviation for pence), and values greater than a shilling are
+        // shown with a shilling bar (and without pence when the value is
+        // an even number of shillings)
+        + "%%pence-alone-implementation:\n"
+        + "    =0= d.;\n"
+        + "    12/12: <0</[>0>];\n";
+
+    //========================================================================
+    // Alternate numeration systems
+    //
+    // These examples show how RuleBasedNumberFormat can be used to format
+    // numbers using non-positional numeration systems.
+    //========================================================================
+
+    /**
+     * Arabic digits.  This example formats numbers in Arabic numerals.
+     * Normally, you'd do this with DecimalFormat, but this shows that
+     * RuleBasedNumberFormat can handle it too.
+     */
+    public static final String arabicNumerals =
+        "0; 1; 2; 3; 4; 5; 6; 7; 8; 9;\n"
+        + "10: <<>>;\n"
+        + "100: <<>>>;\n"
+        + "1000: <<,>>>;\n"
+        + "1,000,000: <<,>>>;\n"
+        + "1,000,000,000: <<,>>>;\n"
+        + "1,000,000,000,000: <<,>>>;\n"
+        + "1,000,000,000,000,000: =#,##0=;\n"
+        + "-x: ->>;\n"
+        + "x.x: <<.>>;";
+
+    /**
+     * Words for digits.  Follows the same pattern as the Arabic-numerals
+     * example above, but uses words for the various digits (e.g., 123 comes
+     * out as "one two three").
+     */
+    public static final String wordsForDigits =
+        "-x: minus >>;\n"
+        + "x.x: << point >>;\n"
+        + "zero; one; two; three; four; five; six;\n"
+        + "    seven; eight; nine;\n"
+        + "10: << >>;\n"
+        + "100: << >>>;\n"
+        + "1000: <<, >>>;\n"
+        + "1,000,000: <<, >>>;\n"
+        + "1,000,000,000: <<, >>>;\n"
+        + "1,000,000,000,000: <<, >>>;\n"
+        + "1,000,000,000,000,000: =#,##0=;\n";
+
+    /**
+     * This example formats numbers using Chinese characters in the Arabic
+     * place-value method.  This was used historically in China for a while.
+     */
+    public static final String chinesePlaceValue =
+        "\u3007; \u4e00; \u4e8c; \u4e09; \u56db; \u4e94; \u516d; \u4e03; \u516b; \u4e5d;\n"
+        + "10: <<>>;\n"
+        + "100: <<>>>;\n"
+        + "1000: <<>>>;\n"
+        + "1,000,000: <<>>>;\n"
+        + "1,000,000,000: <<>>>;\n"
+        + "1,000,000,000,000: <<>>>;\n"
+        + "1,000,000,000,000,000: =#,##0=;\n";
+
+    /**
+     * Roman numerals.  This example has two variants: %modern shows how large
+     * numbers are usually handled today; %historical ses the older symbols for
+     * thousands.
+     */
+    public static final String romanNumerals =
+        "%historical:\n"
+        + "    =%modern=;\n"
+               // in early Roman numerals, 1,000 was shown with a circle
+               // bisected by a vertical line.  Additional thousands were
+               // shown by adding more concentric circles, and fives were
+               // shown by cutting the symbol for next-higher power of 10
+               // in half (the letter D for 500 evolved from this).
+               // We could go beyond 40,000, but Unicode doesn't encode
+               // the symbols for higher numbers/
+        + "    1000: \u2180[>>]; 2000: \u2180\u2180[>>]; 3000: \u2180\u2180\u2180[>>]; 4000: \u2180\u2181[>>];\n"
+        + "    5000: \u2181[>>]; 6000: \u2181\u2180[>>]; 7000: \u2181\u2180\u2180[>>];\n"
+        + "    8000: \u2181\u2180\u2180\u2180[>>]; 9000: \u2180\u2182[>>];\n"
+        + "    10,000: \u2182[>>]; 20,000: \u2182\u2182[>>]; 30,000: \u2182\u2182\u2182[>>];\n"
+        + "    40,000: =#,##0=;\n"
+        + "%modern:\n"
+        + "    ; I; II; III; IV; V; VI; VII; VIII; IX;\n"
+        + "    10: X[>>]; 20: XX[>>]; 30: XXX[>>]; 40: XL[>>]; 50: L[>>];\n"
+        + "    60: LX[>>]; 70: LXX[>>]; 80: LXXX[>>]; 90: XC[>>];\n"
+        + "    100: C[>>]; 200: CC[>>]; 300: CCC[>>]; 400: CD[>>]; 500: D[>>];\n"
+        + "    600: DC[>>]; 700: DCC[>>]; 800: DCCC[>>]; 900: CM[>>];\n"
+               // in modern Roman numerals, high numbers are generally shown
+               // by placing a bar over the letters for the lower numbers:
+               // the bar multiplied a letter's value by 1,000
+        + "    1000: M[>>]; 2000: MM[>>]; 3000: MMM[>>]; 4000: MV\u0306[>>];\n"
+        + "    5000: V\u0306[>>]; 6000: V\u0306M[>>]; 7000: V\u0306MM[>>];\n"
+        + "    8000: V\u0306MMM[>>]; 9000: MX\u0306[>>];\n"
+        + "    10,000: X\u0306[>>]; 20,000: X\u0306X\u0306[>>]; 30,000: X\u0306X\u0306X\u0306[>>];\n"
+        + "    40,000: X\u0306L\u0306[>>]; 50,000: L\u0306[>>]; 60,000: L\u0306X\u0306[>>];\n"
+        + "    70,000: L\u0306X\u0306X\u0306[>>]; 80,000: L\u0306X\u0306X\u0306X\u0306[>>];\n"
+        + "    90,000: X\u0306C\u0306[>>];\n"
+        + "    100,000: C\u0306[>>]; 200,000: C\u0306C\u0306[>>]; 300,000: C\u0306C\u0306[>>];\n"
+        + "    400,000: C\u0306D\u0306[>>]; 500,000: D\u0306[>>]; 600,000: D\u0306C\u0306[>>];\n"
+        + "    700,000: D\u0306C\u0306C\u0306[>>]; 800,000: D\u0306C\u0306C\u0306C\u0306[>>];\n"
+        + "    900,000: =#,##0=;\n";
+
+    /**
+     * Hebrew alphabetic numerals.  Before adoption of Arabic numerals, Hebrew speakers
+     * used the letter of their alphabet as numerals.  The first nine letters of
+     * the alphabet repesented the values from 1 to 9, the second nine letters the
+     * multiples of 10, and the remaining letters the multiples of 100.  Since they
+     * ran out of letters at 400, the remaining multiples of 100 were represented
+     * using combinations of the existing letters for the hundreds.  Numbers were
+     * distinguished from words in a number of different ways: the way shown here
+     * uses a single mark after a number consisting of one letter, and a double
+     * mark between the last two letters of a number consisting of two or more
+     * letters.  Two dots over a letter multiplied its value by 1,000.  Also, since
+     * the letter for 10 is the first letter of God's name and the letters for 5 and 6
+     * are letters in God's name, which wasn't supposed to be written or spoken, 15 and
+     * 16 were usually written as 9 + 6 and 9 + 7 instead of 10 + 5 and 10 + 6.
+     */
+    public static final String hebrewAlphabetic =
+        // letters for the ones
+        "%%ones:\n"
+        + "    (no zero); \u05d0; \u05d1; \u05d2; \u05d3; \u05d4; \u05d5; \u05d6; \u05d7; \u05d8;\n"
+        // letters for the tens
+        + "%%tens:\n"
+        + "    ; \u05d9; \u05db; \u05dc; \u05de; \u05e0; \u05e1; \u05e2; \u05e4; \u05e6;\n"
+        // letters for the first four hundreds
+        + "%%hundreds:\n"
+        + "    ; \u05e7; \u05e8; \u05e9; \u05ea;\n"
+        // this rule set is used to write the combination of the tens and ones digits
+        // when we know that no other digits precede them: they put the numeral marks
+        // in the right place and properly handle 15 and 16 (I'm using the mathematical
+        // prime characters for the numeral marks because my Unicode font doesn't
+        // include the real Hebrew characters, which look just like the prime marks)
+        + "%%tens-and-ones:\n"
+               // for values less than 10, just use %%ones and put the numeral mark
+               // afterward
+        + "    =%%ones=\u2032;\n"
+               // put the numeral mark at the end for 10, but in the middle for
+               // 11 through 14
+        + "    10: <%%tens<\u2032; <%%tens<\u2033>%%ones>;\n"
+               // special-case 15 and 16
+        + "    15: \u05d8\u2033\u05d5; 16: \u05d8\u2033\u05d6;\n"
+               // go back to the normal method at 17
+        + "    17: <%%tens<\u2033>%%ones>;\n"
+               // repeat the rules for 10 and 11 to cover the values from 20 to 99
+        + "    20: <%%tens<\u2032; <%%tens<\u2033>%%ones>;\n"
+        // this rule set is used to format numbers below 1,000.  It relies on
+        // %%tens-and-ones to format the tens and ones places, and adds logic
+        // to handle the high hundreds and the numeral marks when there is no
+        // tens digit.  Notice how the rules are paired: all of these pairs of
+        // rules take advantage of the rollback rule: if the value (between 100
+        // and 499) is an even multiple of 100, the rule for 100 is used; otherwise,
+        // the rule for 101 (the following rule) is used.  The first rule in each
+        // pair (the one for the even multiple) places the numeral mark in a different
+        // spot than the second rule in each pair (which knows there are more digits
+        // and relies on the rule supplying them to also supply the numeral mark).
+        // The call to %%null in line 10 is there simply to invoke the rollback
+        // rule.
+        + "%%low-order:\n"
+               // this rule is only called when there are other characters before.
+               // It places the numeral mark before the last digit
+        + "    \u2033=%%ones=;\n"
+               // the rule for 10 places the numeral mark before the 10 character
+               // (because we know it's the last character); the rule for 11 relies
+               // on %%tens-and-ones to place the numeral mark
+        + "    10: \u2033<%%tens<; =%%tens-and-ones=>%%null>;\n"
+               // the rule for 100 places the numeral mark before the 100 character
+               // (we know it's the last character); the rule for 101 recurses to
+               // fill in the remaining digits and the numeral mark
+        + "    100: <%%hundreds<\u2032; <%%hundreds<>>;\n"
+               // special-case the hundreds from 500 to 900 because they consist of
+               // more than one character
+        + "    500: \u05ea\u2033\u05e7; \u05ea\u05e7>>;\n"
+        + "    600: \u05ea\u2033\u05e8; \u05ea\u05e8>>;\n"
+        + "    700: \u05ea\u2033\u05e9; \u05ea\u05e9>>;\n"
+        + "    800: \u05ea\u2033\u05ea; \u05ea\u05ea>>;\n"
+        + "    900: \u05ea\u05ea\u2033\u05e7; \u05ea\u05ea\u05e7>>;\n"
+        // this rule set is used to format values of 1,000 or more.  Here, we don't
+        // worry about the numeral mark, and we add two dots (the Unicode combining
+        // diaeresis character) to ever letter
+        + "%%high-order:\n"
+               // put the ones digit, followed by the diaeresis
+        + "    =%%ones=\u0308;\n"
+               // the tens can be handled with recursion
+        + "    10: <%%tens<\u0308[>>];\n"
+               // still have to special-case 15 and 16
+        + "    15: \u05d8\u0308\u05d5\u0308; 16: \u05d8\u003078\u05d6\u0308;\n"
+               // back to the regular rules at 17
+        + "    17: <%%tens<\u0308[>>];\n"
+               // the hundreds with the dots added (and without worrying about
+               // placing the numeral mark)
+        + "    100: <%%hundreds<\u0308[>>];\n"
+        + "    500: \u05ea\u0308\u05e7\u0308[>>];\n"
+        + "    600: \u05ea\u0308\u05e8\u0308[>>];\n"
+        + "    700: \u05ea\u0308\u05e9\u0308[>>];\n"
+        + "    800: \u05ea\u0308\u05ea\u0308[>>];\n"
+        + "    900: \u05ea\u0308\u05ea\u0308\u05e7\u0308[>>];\n"
+        // this rule set doesn't do anything; it's used by some other rules to
+        // invoke the rollback rule
+        + " %%null:\n"
+        + "    ;\n"
+        // the main rule set.
+        + "%main:\n"
+               // for values below 10, just output the letter and the numeral mark
+        + "    =%%ones=\u2032;\n"
+               // for values from 10 to 99, use %%tens-and-ones to do the formatting
+        + "    10: =%%tens-and-ones=;\n"
+               // for values from 100 to 999, use %%low-order to do the formatting
+        + "    100: =%%low-order=;\n"
+               // for values of 1,000 and over, use %%high-order to do the formatting
+        + "    1000: <%%high-order<[>%%low-order>];\n";
+
+    /**
+     * Greek alphabetic numerals.  The Greeks, before adopting the Arabic numerals,
+     * also used the letters of their alphabet as numerals.  There are three now-
+     * obsolete Greek letters that are used as numerals; many fonts don't have them.
+     * Large numbers were handled many different ways; the way shown here divides
+     * large numbers into groups of four letters (factors of 10,000), and separates
+     * the groups with the capital letter mu (for myriad).  Capital letters are used
+     * for values below 10,000; small letters for higher numbers (to make the capital
+     * mu stand out).
+     */
+    public static final String greekAlphabetic =
+        // this rule set is used for formatting numbers below 10,000.  It uses
+        // capital letters.
+        "%%low-order:\n"
+        + "    (no zero); \u0391; \u0392; \u0393; \u0394; \u0395; \u03dc; \u0396; \u0397; \u0398;\n"
+        + "    10: \u0399[>>]; 20: \u039a[>>]; 30: \u039b[>>]; 40: \u039c[>>]; 50: \u039d[>>];\n"
+        + "    60: \u039e[>>]; 70: \u039f[>>]; 80: \u03a0[>>]; 90: \u03de[>>];\n"
+        + "    100: \u03a1[>>]; 200: \u03a3[>>]; 300: \u03a4[>>]; 400: \u03a5[>>];\n"
+        + "    500: \u03a6[>>]; 600: \u03a7[>>]; 700: \u03a8[>>]; 800: \u03a9[>>];\n"
+        + "    900: \u03e0[>>];\n"
+               // the thousands are represented by the same numbers as the ones, but
+               // with a comma-like mark added to their left shoulder
+        + "    1000: \u0391\u0313[>>]; 2000: \u0392\u0313[>>]; 3000: \u0393\u0313[>>];\n"
+        + "    4000: \u0394\u0313[>>]; 5000: \u0395\u0313[>>]; 6000: \u03dc\u0313[>>];\n"
+        + "    7000: \u0396\u0313[>>]; 8000: \u0397\u0313[>>]; 9000: \u0398\u0313[>>];\n"
+        // this rule set is the same as above, but uses lowercase letters.  It is used
+        // for formatting the groups in numbers above 10,000.
+        + "%%high-order:\n"
+        + "    (no zero); \u03b1; \u03b2; \u03b3; \u03b4; \u03b5; \u03dc; \u03b6; \u03b7; \u03b8;\n"
+        + "    10: \u03b9[>>]; 20: \u03ba[>>]; 30: \u03bb[>>]; 40: \u03bc[>>]; 50: \u03bd[>>];\n"
+        + "    60: \u03be[>>]; 70: \u03bf[>>]; 80: \u03c0[>>]; 90: \u03de[>>];\n"
+        + "    100: \u03c1[>>]; 200: \u03c3[>>]; 300: \u03c4[>>]; 400: \u03c5[>>];\n"
+        + "    500: \u03c6[>>]; 600: \u03c7[>>]; 700: \u03c8[>>]; 800: \u03c9[>>];\n"
+        + "    900: \u03c0[>>];\n"
+        + "    1000: \u03b1\u0313[>>]; 2000: \u03b2\u0313[>>]; 3000: \u03b3\u0313[>>];\n"
+        + "    4000: \u03b4\u0313[>>]; 5000: \u03b5\u0313[>>]; 6000: \u03dc\u0313[>>];\n"
+        + "    7000: \u03b6\u0313[>>]; 8000: \u03b7\u0313[>>]; 9000: \u03b8\u0313[>>];\n"
+        // the main rule set
+        + "%main:\n"
+               // for values below 10,000, just use %%low-order
+        + "    =%%low-order=;\n"
+               // for values above 10,000, split into two groups of four digits
+               // and format each with %%high-order (putting an M in betwen)
+        + "    10,000: <%%high-order<\u039c>%%high-order>;\n"
+               // for values above 100,000,000, add another group onto the front
+               // and another M
+        + "    100,000,000: <%%high-order<\u039c>>\n";
+
+    /**
+     * A list of all the sample rule sets, used by the demo program.
+     */
+    public static final String[] sampleRuleSets =
+        { usEnglish,
+          ukEnglish,
+          spanish,
+          french,
+          swissFrench,
+          german,
+          italian,
+          swedish,
+          dutch,
+          japanese,
+          greek,
+          russian,
+          hebrew,
+          ordinal,
+          message1,
+          dollarsAndCents,
+          decimalAsFraction,
+          closestFraction,
+          stock,
+          abbEnglish,
+          units,
+          message2,
+          dozens,
+          durationInSeconds,
+          durationInHours,
+          poundsShillingsAndPence,
+          arabicNumerals,
+          wordsForDigits,
+          chinesePlaceValue,
+          romanNumerals,
+          hebrewAlphabetic,
+          greekAlphabetic };
+
+    /**
+     * The displayable names for all the sample rule sets, in the same order as
+     * the preceding array.
+     */
+    public static final String[] sampleRuleSetNames =
+        { "English (US)",
+          "English (UK)",
+          "Spanish",
+          "French (France)",
+          "French (Switzerland)",
+          "German",
+          "Italian",
+          "Swedish",
+          "Dutch",
+          "Japanese",
+          "Greek",
+          "Russian",
+          "Hebrew",
+          "English ordinal abbreviations",
+          "Simple message formatting",
+          "Dollars and cents",
+          "Decimals as fractions",
+          "Closest fraction",
+          "Stock prices",
+          "Abbreviated US English",
+          "Changing dimensions",
+          "Complex message formatting",
+          "Dozens",
+          "Duration (value in seconds)",
+          "Duration (value in hours)",
+          "Pounds, shillings, and pence",
+          "Arabic numerals",
+          "Words for digits",
+          "Chinese place-value notation",
+          "Roman numerals",
+          "Hebrew ahlphabetic numerals",
+          "Greek alphabetic numerals" };
+
+    /**
+     * The base locale for each of the sample rule sets.  The locale is used to
+     * determine DecimalFormat behavior, lenient-parse behavior, and text-display
+     * selection (we have a hack in here to allow display of non-Latin scripts).
+     * Null means the locale setting is irrelevant and the default can be used.
+     */
+    public static final Locale[] sampleRuleSetLocales =
+        { Locale.US,
+          Locale.UK,
+          new Locale("es", "", ""),
+          Locale.FRANCE,
+          new Locale("fr", "CH", ""),
+          Locale.GERMAN,
+          Locale.ITALIAN,
+          new Locale("sv", "", ""),
+          new Locale("nl", "", ""),
+          Locale.JAPANESE,
+          new Locale("el", "", ""),
+          new Locale("ru", "", ""),
+          new Locale("iw", "", ""),
+          Locale.ENGLISH,
+          Locale.ENGLISH,
+          Locale.US,
+          Locale.ENGLISH,
+          null,
+          null,
+          Locale.ENGLISH,
+          null,
+          Locale.ENGLISH,
+          Locale.ENGLISH,
+          null,
+          null,
+          Locale.UK,
+          null,
+          Locale.ENGLISH,
+          new Locale("zh", "", ""),
+          null,
+          new Locale("iw", "", ""),
+          new Locale("el", "", ""),
+          null };
+
+        public static final String[] sampleRuleSetCommentary = {
+            "This demonstration version of the "
+            + "U.S. English spellout rules has four variants: 1) %simplified is a "
+            + "set of rules showing the simple method of spelling out numbers in "
+            + "English: 289 is formatted as \"two hundred eighty-nine\".  2) %alt-teens "
+            + "is the same as %simplified, except that values between 1,000 and 9,999 "
+            + "whose hundreds place isn't zero are formatted in hundreds.  For example, "
+            + "1,983 is formatted as \"nineteen hundred eighty-three,\" and 2,183 is "
+            + "formatted as \"twenty-one hundred eighty-three,\" but 2,083 is still "
+            + "formatted as \"two thousand eighty-three.\"  3) %ordinal formats the "
+            + "values as ordinal numbers in English (e.g., 289 is \"two hundred eighty-"
+            + "ninth\").  4) %default uses a more complicated algorithm to format "
+            + "numbers in a more natural way: 289 is formatted as \"two hundred AND "
+            + "eighty-nine\" and commas are inserted between the thousands groups for "
+            + "values above 100,000.",
+
+            "U.K. English has one significant "
+            + "difference from U.S. English: the names for values of 1,000,000,000 "
+            + "and higher.  In American English, each successive \"-illion\" is 1,000 "
+            + "times greater than the preceding one: 1,000,000,000 is \"one billion\" "
+            + "and 1,000,000,000,000 is \"one trillion.\"  In British English, each "
+            + "successive \"-illion\" is one million times greater than the one before: "
+            + "\"one billion\" is 1,000,000,000,000 (or what Americans would call a "
+            + "\"trillion\"), and \"one trillion\" is 1,000,000,000,000,000,000.  "
+            + "1,000,000,000 in British English is \"one thousand million.\"  (This "
+            + "value is sometimes called a \"milliard,\" but this word seems to have "
+            + "fallen into disuse.)",
+
+            "The Spanish rules are quite similar to "
+            + "the English rules, but there are some important differences: "
+            + "First, we have to provide separate rules for most of the twenties "
+            + "because the ones digit frequently picks up an accent mark that it "
+            + "doesn't have when standing alone.  Second, each multiple of 100 has "
+            + "to be specified separately because the multiplier on 100 very often "
+            + "changes form in the contraction: 500 is \"quinientos,\" not "
+            + "\"cincocientos.\"  In addition, the word for 100 is \"cien\" when "
+            + "standing alone, but changes to \"ciento\" when followed by more digits.  "
+            + "There also some other differences.",
+
+            "French adds some interesting quirks of its "
+            + "own: 1) The word \"et\" is interposed between the tens and ones digits, "
+            + "but only if the ones digit if 1: 20 is \"vingt,\" and 2 is \"vingt-deux,\" "
+            + "but 21 is \"vingt-et-un.\"  2)  There are no words for 70, 80, or 90.  "
+            + "\"quatre-vingts\" (\"four twenties\") is used for 80, and values proceed "
+            + "by score from 60 to 99 (e.g., 73 is \"soixante-treize\" [\"sixty-thirteen\"]).  "
+            + "Numbers from 1,100 to 1,199 are rendered as hundreds rather than "
+            + "thousands: 1,100 is \"onze cents\" (\"eleven hundred\"), rather than "
+            + "\"mille cent\" (\"one thousand one hundred\")",
+
+            "Swiss French differs from French French "
+            + "in that it does have words for 70, 80, and 90.  This rule set shows them, "
+            + "and is simpler as a result.",
+
+            "German also adds some interesting "
+            + "characteristics.  For values below 1,000,000, numbers are customarily "
+            + "written out as a single word.  And the ones digit PRECEDES the tens "
+            + "digit (e.g., 23 is \"dreiundzwanzig,\" not \"zwanzigunddrei\").",
+
+            "Like German, most Italian numbers are "
+            + "written as single words.  What makes these rules complicated is the rule "
+            + "that says that when a word ending in a vowel and a word beginning with "
+            + "a vowel are combined into a compound, the vowel is dropped from the "
+            + "end of the first word: 180 is \"centottanta,\" not \"centoottanta.\"  "
+            + "The complexity of this rule set is to produce this behavior.",
+
+            "Spellout rules for Swedish.",
+
+            "Spellout rules for Dutch.  Notice that in Dutch, as in German,"
+            + "the ones digit precedes the tens digit.",
+
+            "In Japanese, there really isn't any "
+            + "distinction between a number written out in digits and a number "
+            + "written out in words: the ideographic characters are both digits "
+            + "and words.  This rule set provides two variants:  %traditional "
+            + "uses the traditional CJK numerals (which are also used in China "
+            + "and Korea).  %financial uses alternate ideographs for many numbers "
+            + "that are harder to alter than the traditional numerals (one could "
+            + "fairly easily change a one to "
+            + "a three just by adding two strokes, for example).  This is also done in "
+            + "the other countries using Chinese idographs, but different ideographs "
+            + "are used in those places.",
+
+            "Again in Greek we have to supply the words "
+            + "for the multiples of 100 because they can't be derived algorithmically.  "
+            + "Also, the tens dgit changes form when followed by a ones digit: an "
+            + "accent mark disappears from the tens digit and moves to the ones digit.  "
+            + "Therefore, instead of using the [] notation, we actually have to use "
+            + "two separate rules for each multiple of 10 to show the two forms of "
+            + "the word.",
+
+            "Spellout rules for Russian.",
+
+            "Spellout rules for Hebrew.  Hebrew actually has inflected forms for "
+            + "most of the lower-order numbers.  The masculine forms are shown "
+            + "here.",
+
+            "This rule set adds an English ordinal abbreviation to the end of a "
+            + "number.  For example, 2 is formatted as \"2nd\".  Parsing doesn't work with "
+            + "this rule set.  To parse, use DecimalFormat on the numeral.",
+
+            "This is a simple message-formatting example.  Normally one would "
+            + "use ChoiceFormat and MessageFormat to do something this simple, "
+            + "but this shows it could be done with RuleBasedNumberFormat too.  "
+            + "A message-formatting example that might work better with "
+            + "RuleBasedNumberFormat appears later.",
+
+            "The next few examples demonstrate fraction handling.  "
+            + "This example formats a number in one of the two styles often used "
+            + "on checks.  %dollars-and-hundredths formats cents as hundredths of "
+            + "a dollar (23.40 comes out as \"twenty-three and 40/100 dollars\").  "
+            + "%dollars-and-cents formats in dollars and cents (23.40 comes out as "
+            + "\"twenty-three dollars and forty cents\")",
+
+            "This rule set shows the fractional part of the number as a fraction "
+            + "with a power of 10 as the denominator.  Some languages don't spell "
+            + "out the fractional part of a number as \"point one two three,\" but "
+            + "always render it as a fraction.  If we still want to treat the fractional "
+            + "part of the number as a decimal, then the fraction's denominator "
+            + "is always a power of 10.  This example does that: 23.125 is formatted "
+            + "as \"twenty-three and one hundred twenty-five thousandths\" (as opposed "
+            + "to \"twenty-three point one two five\" or \"twenty-three and one eighth\").",
+
+            "Number with closest fraction.  This example formats a value using "
+            + "numerals, but shows the fractional part as a ratio (fraction) rather "
+            + "than a decimal.  The fraction always has a denominator between 2 and 10.",
+
+            "American stock-price formatting.  Non-integral stock prices are still "
+            + "generally shown in eighths or sixteenths of dollars instead of dollars "
+            + "and cents.  This example formats stock prices in this way if possible, "
+            + "and in dollars and cents if not.",
+
+            "The next few examples demonstrate using a RuleBasedNumberFormat to "
+            + "change the units a value is denominated in depending on its magnitude.  "
+            + "The example shows large numbers the way they often appear is nwespapers: "
+            + "1,200,000 is formatted as \"1.2 million\".",
+
+            "This example takes a number of meters and formats it in whatever unit "
+            + "will produce a number with from one to three digits before the decimal "
+            + "point.  For example, 230,000 is formatted as \"230 km\".",
+
+            "A more complicated message-formatting example.  Here, in addition to "
+            + "handling the singular and plural versions of the word, the value is "
+            + "denominated in bytes, kilobytes, or megabytes depending on its magnitude.  "
+            + "Also notice that it correctly treats a kilobyte as 1,024 bytes (not 1,000), "
+            + "and a megabyte as 1,024 kilobytes (not 1,000).",
+
+            "This example formats a number in dozens and gross.  This is intended to "
+            + "demonstrate how this rule set can be used to format numbers in systems "
+            + "other than base 10.  The \"/12\" after the rules' base values controls this.  "
+            + "Also notice that the base doesn't have to be consistent throughout the "
+            + "whole rule set: we go back to base 10 for values over 1,000.",
+
+            "The next few examples show how a single value can be divided up into major "
+            + "and minor units that don't relate to each other by a factor of 10.  "
+            + "This example formats a number of seconds in sexagesimal notation "
+            + "(i.e., hours, minutes, and seconds).  %with-words formats it with "
+            + "words (3740 is \"1 hour, 2 minutes, 20 seconds\") and %in-numerals "
+            + "formats it entirely in numerals (3740 is \"1:02:20\").",
+
+            "This example formats a number of hours in sexagesimal notation (i.e., "
+            + "hours, minutes, and seconds).  %with-words formats the value using "
+            + "words for the units, and %in-numerals formats the value using only "
+            + "numerals.",
+
+            "This rule set formats a number of pounds as pounds, shillings, and "
+            + "pence in the old English system of currency.",
+
+            "These examples show how RuleBasedNumberFormat can be used to format "
+            + "numbers using non-positional numeration systems.  "
+            + "This example formats numbers in Arabic numerals.  "
+            + "Normally, you'd do this with DecimalFormat, but this shows that "
+            + "RuleBasedNumberFormat can handle it too.",
+
+            "This example follows the same pattern as the Arabic-numerals "
+            + "example, but uses words for the various digits (e.g., 123 comes "
+            + "out as \"one two three\").",
+
+            "This example formats numbers using Chinese characters in the Arabic "
+            + "place-value method.  This was used historically in China for a while.",
+
+            "Roman numerals.  This example has two variants: %modern shows how large "
+            + "numbers are usually handled today; %historical ses the older symbols for "
+            + "thousands.  Not all of the characters are displayable with most fonts.",
+
+            "Hebrew alphabetic numerals.  Before adoption of Arabic numerals, Hebrew speakers "
+            + "used the letter of their alphabet as numerals.  The first nine letters of "
+            + "the alphabet repesented the values from 1 to 9, the second nine letters the "
+            + "multiples of 10, and the remaining letters the multiples of 100.  Since they "
+            + "ran out of letters at 400, the remaining multiples of 100 were represented "
+            + "using combinations of the existing letters for the hundreds.  Numbers were "
+            + "distinguished from words in a number of different ways: the way shown here "
+            + "uses a single mark after a number consisting of one letter, and a double "
+            + "mark between the last two letters of a number consisting of two or more "
+            + "letters.  Two dots over a letter multiplied its value by 1,000.  Also, since "
+            + "the letter for 10 is the first letter of God's name and the letters for 5 and 6 "
+            + "are letters in God's name, which wasn't supposed to be written or spoken, 15 and "
+            + "16 were usually written as 9 + 6 and 9 + 7 instead of 10 + 5 and 10 + 6.",
+
+            "Greek alphabetic numerals.  The Greeks, before adopting the Arabic numerals, "
+            + "also used the letters of their alphabet as numerals.  There are three now-"
+            + "obsolete Greek letters that are used as numerals; many fonts don't have them.  "
+            + "Large numbers were handled many different ways; the way shown here divides "
+            + "large numbers into groups of four letters (factors of 10,000), and separates "
+            + "the groups with the capital letter mu (for myriad).  Capital letters are used "
+            + "for values below 10,000; small letters for higher numbers (to make the capital "
+            + "mu stand out).",
+
+            "This is a custom (user-defined) rule set."
+        };
+}
diff --git a/src/com/ibm/icu/dev/demo/rbnf/package.html b/src/com/ibm/icu/dev/demo/rbnf/package.html
new file mode 100755
index 0000000..30b8484
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/rbnf/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/rbnf/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 17:44:02 $
+-->
+</head>
+<body bgcolor="white">
+RuleBasedNumberFormat demo appliation.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java b/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java
new file mode 100644
index 0000000..340f1c7
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java
@@ -0,0 +1,306 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java,v $
+ * $Date: 2002/08/13 21:50:44 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+import com.ibm.icu.dev.demo.impl.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.util.*;
+
+public class AnyTransliterator extends Transliterator {
+	
+	static final boolean DEBUG = false;
+	private String targetName;
+	private RunIterator it;
+	private Position run;
+	
+	
+	public AnyTransliterator(String targetName, UnicodeFilter filter, RunIterator it){
+		super("Any-" + targetName, filter);
+		this.targetName = targetName;
+		this.it = it;
+		run = new Position();
+	}
+	
+	public AnyTransliterator(String targetName, UnicodeFilter filter){
+		this(targetName, filter, new ScriptRunIterator());
+	}
+	
+	static private Transliterator hex = Transliterator.getInstance("[^\\u0020-\\u007E] hex");
+	
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+    	if (DEBUG) {
+    		System.out.println("- handleTransliterate " + hex.transliterate(text.toString())
+    			+ ", " + toString(offsets));
+    	}
+		it.reset(text, offsets);
+		
+        while (it.next(run)) {
+			if (targetName.equalsIgnoreCase(it.getName())) {
+				if (DEBUG) System.out.println("Skipping identical: " + targetName);
+				run.start = run.limit; // show we processed
+				continue; // skip if same
+			}
+        	
+			Transliterator t;
+			String id = it.getName() + '-' + targetName;
+			try {
+        		t = Transliterator.getInstance(id);
+        	} catch (IllegalArgumentException ex) {
+        		if (DEBUG) System.out.println("Couldn't find: " + id + ", Trying Latin as Pivot");
+				id = it.getName() + "-Latin; Latin-" + targetName;
+				try {
+        			t = Transliterator.getInstance(id);
+        		} catch (IllegalArgumentException ex2) {
+        			if (DEBUG) System.out.println("Couldn't find: " + id);
+        			continue;
+        		}
+        	}
+        	// TODO catch error later!!
+        		
+        	if (DEBUG) {
+        		System.out.println(t.getID());
+        		System.out.println("input: " + hex.transliterate(text.toString())
+        		 + ", " + toString(run));
+        	}
+        	
+        	if (isIncremental && it.atEnd()) {
+        		t.transliterate(text, run);
+        	} else {
+        		t.finishTransliteration(text, run);
+        	}
+        	// adjust the offsets in line with the changes
+        	it.adjust(run.limit);
+        	
+        	if (DEBUG) {
+        		System.out.println("output: " + hex.transliterate(text.toString())
+        		 + ", " + toString(run));
+        	}
+        }
+
+		// show how far we got!
+		it.getExpanse(offsets);
+		if (run.start == run.limit) offsets.start = offsets.limit;
+		else offsets.start = run.start;
+    	if (DEBUG) {
+    		System.out.println("+ handleTransliterate: " + ", " + toString(offsets));
+        	System.out.println();
+    	}
+    }
+    
+    // should be method on Position
+    public static String toString(Position offsets) {
+    	return "[cs: " + offsets.contextStart
+    			+ ", s: " + offsets.start
+    			+ ", l: " + offsets.limit
+    			+ ", cl: " + offsets.contextLimit
+    			+ "]";
+    }
+    
+    public interface RunIterator {
+    	public void reset(Replaceable text, Position expanse);
+    	public void getExpanse(Position run);
+    	public void reset();
+    	public boolean next(Position run);
+    	public void getCurrent(Position run);
+    	public String getName();
+    	public void adjust(int newCurrentLimit);
+    	public boolean atEnd();
+    }
+    
+    /**
+     * Returns a series of ranges corresponding to scripts. They will be of the form:
+     * ccccSScSSccccTTcTcccc	- where c is common, S is the first script and T is the second
+     *|            |			- first run
+     *         |            |	- second run
+     * That is, the runs will overlap. The reason for this is so that a transliterator can
+     * consider common characters both before and after the scripts.
+     * The only time that contextStart != start is for the first run 
+     *	(the context is the start context of the entire expanse)
+     * The only time that contextLimit != limit is for the last run 
+     *	(the context is the end context of the entire expanse)
+     */
+    public static class ScriptRunIterator implements RunIterator {
+    	private Replaceable text;
+    	private Position expanse = new Position();
+    	private Position current = new Position();
+    	private int script;
+    	private boolean done = true;
+    	
+
+    	public void reset(Replaceable text, Position expanse) {
+    		set(this.expanse, expanse);
+    		this.text = text;
+    		reset();
+    	}
+    		
+    	public void reset() {
+    		done = false;
+    		this.expanse = expanse;
+    		script = UScript.INVALID_CODE;
+    		// set up first range to be empty, at beginning
+    		current.contextStart = expanse.contextStart;
+    		current.start = current.limit = current.contextLimit = expanse.start;    		
+    	}
+    		
+    	public boolean next(Position run) {
+    		if (done) return false;
+    		if (DEBUG) {
+    			System.out.println("+cs: " + current.contextStart
+    				+ ", s: " + current.start
+    				+ ", l: " + current.limit
+    				+ ", cl: " + current.contextLimit);
+    		}
+    		// reset start context run to the last end
+    		current.start = current.limit;
+    		
+    		// Phase 1. Backup the START value through COMMON until we get to expanse.start or a real script.
+    		int i, cp;
+    		int limit = expanse.start;
+    		for (i = current.start; i > limit; i -= UTF16.getCharCount(cp)) {
+    			cp = text.char32At(i);
+    			int script = UScript.getScript(cp);
+    			if (script != UScript.COMMON && script != UScript.INHERITED) break;
+    		}
+    		current.start = i;
+    		current.contextStart = (i == limit) ? expanse.contextStart : i; // extend at start
+    		
+    		// PHASE 2. Move up the LIMIT value through COMMON or single script until we get to expanse.limit
+    		int lastScript = UScript.COMMON;
+    		int veryLastScript = UScript.COMMON;
+    		limit = expanse.limit; 
+    		for (i = current.limit; i < limit; i += UTF16.getCharCount(cp)) {
+    			cp = text.char32At(i);
+    			int script = UScript.getScript(cp);
+    			if (script == UScript.INHERITED) script = UScript.COMMON;
+    			if (script != UScript.COMMON) {
+    				// if we find a real script:
+    				//   if we already had a script, bail
+    				//   otherwise set our script
+    				if (lastScript == UScript.COMMON) lastScript = script;
+    				else if (lastScript != script) break;
+    			}
+    		}
+    		current.limit = i;
+    		current.contextLimit = (i == limit) ? expanse.contextLimit : i; // extend at end
+    		done = (i == limit);
+    		script = lastScript;
+    		
+    		if (DEBUG) {
+    			System.out.println("-cs: " + current.contextStart
+    				+ ", s: " + current.start
+    				+ ", l: " + current.limit
+    				+ ", cl: " + current.contextLimit);
+    		}
+    		
+    		set(run, current);
+    		return true;
+    	}
+    	
+    	// SHOULD BE METHOD ON POSITION
+    	public static void set(Position run, Position current) {
+    		run.contextStart = current.contextStart;
+    		run.start = current.start;
+    		run.limit = current.limit;
+    		run.contextLimit = current.contextLimit;
+    	}
+    	
+    	public boolean atEnd() {
+    		return current.limit == expanse.limit;
+    	}
+    	
+    	public void getCurrent(Position run) {
+    		set(run, current);
+    	}
+    	
+    	public void getExpanse(Position run) {
+    		set(run, expanse);
+    	}
+    	
+    	public String getName() {
+    		return UScript.getName(script);
+    	}
+    	
+    	public void adjust(int newCurrentLimit) {
+    		if (expanse == null) {
+    			throw new IllegalArgumentException("Must reset() before calling");
+    		}
+    		int delta = newCurrentLimit - current.limit;
+    		current.limit += delta;
+    		current.contextLimit += delta;
+    		expanse.limit += delta;
+    		expanse.contextLimit += delta;
+    	}
+    	
+    	// register Any-Script for every script.
+    	
+    	private static Set scriptList = new HashSet();
+    	
+    	public static void registerAnyToScript() {
+    		synchronized (scriptList) {
+        		Enumeration sources = Transliterator.getAvailableSources();
+        		while(sources.hasMoreElements()) {
+            		String source = (String) sources.nextElement();
+            		if (source.equals("Any")) continue; // to keep from looping
+	            	
+            		Enumeration targets = Transliterator.getAvailableTargets(source);
+            		while(targets.hasMoreElements()) {
+                		String target = (String) targets.nextElement();
+            			if (UScript.getCode(target) == null) continue; // SKIP unless we have a script (or locale)
+            			if (scriptList.contains(target)) continue; // already encountered
+            			scriptList.add(target); // otherwise add for later testing
+	            		
+                		Set variantSet = add(new TreeSet(), Transliterator.getAvailableVariants(source, target));
+                		if (variantSet.size() < 2) {
+    						AnyTransliterator at = new AnyTransliterator(target, null);
+    						DummyFactory.add(at.getID(), at);
+                		} else {
+                    		Iterator variants = variantSet.iterator();
+                    		while(variants.hasNext()) {
+                        		String variant = (String) variants.next();
+    							AnyTransliterator at = new AnyTransliterator(
+    								(variant.length() > 0) ? target + "/" + variant : target, null);
+    							DummyFactory.add(at.getID(), at);
+                    		}
+                		}
+            		}
+        		}
+        	}
+    	}
+    	
+    	static class DummyFactory implements Transliterator.Factory {
+        	static DummyFactory singleton = new DummyFactory();
+        	static HashMap m = new HashMap();
+
+        	// Since Transliterators are immutable, we don't have to clone on set & get
+        	static void add(String ID, Transliterator t) {
+            	m.put(ID, t);
+            	System.out.println("Registering: " + ID + ", " + t.toRules(true));
+            	Transliterator.registerFactory(ID, singleton);
+        	}
+        	public Transliterator getInstance(String ID) {
+            	return (Transliterator) m.get(ID);
+        	}
+    	}
+    	
+    	// Nice little Utility for converting Enumeration to collection
+    	static Set add(Set s, Enumeration enum) {
+        	while(enum.hasMoreElements()) {
+            	s.add(enum.nextElement());
+        	}
+        	return s;
+    	}
+    	
+    	
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/Demo.java b/src/com/ibm/icu/dev/demo/translit/Demo.java
new file mode 100755
index 0000000..283238f
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Demo.java
@@ -0,0 +1,1381 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/translit/Demo.java,v $ 
+ * $Date: 2002/07/26 19:56:58 $ 
+ * $Revision: 1.24 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+import java.applet.*;
+import java.awt.*;
+import java.awt.event.*;
+import java.util.*;
+import java.text.CharacterIterator;
+import com.ibm.icu.dev.demo.impl.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.*;
+import java.io.*;
+
+/**
+ * A frame that allows the user to experiment with keyboard
+ * transliteration.  This class has a main() method so it can be run
+ * as an application.  The frame contains an editable text component
+ * and uses keyboard transliteration to process keyboard events.
+ *
+ * <p>Copyright (c) IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: Demo.java,v $ $Revision: 1.24 $ $Date: 2002/07/26 19:56:58 $
+ */
+public class Demo extends Frame {
+
+    static final boolean DEBUG = false;
+    static final String START_TEXT = "(cut,\u03BA\u03C5\u03C4,\u05D0,\u30AF\u30C8,\u4E80,\u091A\u0941\u0924\u094D)";
+
+    Transliterator translit = null;
+    String fontName = "Arial Unicode MS";
+    int fontSize = 18;
+    
+    
+
+    /*
+    boolean compound = false;
+    Transliterator[] compoundTranslit = new Transliterator[MAX_COMPOUND];
+    static final int MAX_COMPOUND = 128;
+    int compoundCount = 0;
+    */
+
+    TransliteratingTextComponent text = null;
+
+    Menu translitMenu;
+    CheckboxMenuItem translitItem;
+    CheckboxMenuItem noTranslitItem;
+
+    static final String NO_TRANSLITERATOR = "None";
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    public static void main(String[] args) {
+        Frame f = new Demo(600, 200);
+        f.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
+        f.setVisible(true);
+    }
+
+	public Demo(int width, int height) {
+        super("Transliteration Demo");
+
+        initMenus();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                handleClose();
+            }
+        });
+        
+        text = new TransliteratingTextComponent();
+        Font font = new Font(fontName, Font.PLAIN, fontSize);
+        text.setFont(font);
+        text.setSize(width, height);
+        text.setVisible(true);
+        text.setText(START_TEXT);
+        add(text);
+
+        setSize(width, height);
+        setTransliterator("Latin-Greek", null);
+    }
+
+    private void initMenus() {
+        MenuBar mbar;
+        Menu menu;
+        MenuItem mitem;
+        CheckboxMenuItem citem;
+        
+        setMenuBar(mbar = new MenuBar());
+        mbar.add(menu = new Menu("File"));
+        menu.add(mitem = new MenuItem("Quit"));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                handleClose();
+            }
+        });
+/*
+        final ItemListener setTransliteratorListener = new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                CheckboxMenuItem item = (CheckboxMenuItem) e.getSource();
+                if (e.getStateChange() == ItemEvent.DESELECTED) {
+                    // Don't let the current transliterator be deselected.
+                    // Just reselect it.
+                    item.setState(true);
+                } else if (compound) {
+                    // Adding an item to a compound transliterator
+                    handleAddToCompound(item.getLabel());
+                } else if (item != translitItem) {
+                    // Deselect previous choice.  Don't need to call
+                    // setState(true) on new choice.
+                    translitItem.setState(false);
+                    translitItem = item;
+                    handleSetTransliterator(item.getLabel());
+                }
+            }
+        };
+*/
+        /*
+        translitMenu.add(translitItem = noTranslitItem =
+                         new CheckboxMenuItem(NO_TRANSLITERATOR, true));
+        noTranslitItem.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                // Can't uncheck None -- any action here sets None to true
+                setNoTransliterator();
+            }
+        });
+
+        translitMenu.addSeparator();
+        */
+
+/*
+        translitMenu.add(citem = new CheckboxMenuItem("Compound"));
+        citem.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                CheckboxMenuItem item = (CheckboxMenuItem) e.getSource();
+                if (e.getStateChange() == ItemEvent.DESELECTED) {
+                    // If compound gets deselected, then select NONE
+                    setNoTransliterator();
+                } else if (!compound) {
+                    // Switching from non-compound to compound
+                    translitItem.setState(false);
+                    translitItem = item;
+                    translit = null;
+                    compound = true;
+                    compoundCount = 0;
+                    for (int i=0; i<MAX_COMPOUND; ++i) {
+                        compoundTranslit[i] = null;
+                    }
+                }
+            }
+        });
+      
+        translitMenu.addSeparator();
+       */
+
+        /*
+        for (Enumeration e=getSystemTransliteratorNames().elements();
+             e.hasMoreElements(); ) {
+            String s = (String) e.nextElement();
+            translitMenu.add(citem = new CheckboxMenuItem(s));
+            citem.addItemListener(setTransliteratorListener);
+        }
+        */
+        
+        Menu fontMenu = new Menu("Font");
+        String[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
+        for (int i = 0; i < fonts.length; ++i) {
+            MenuItem mItem = new MenuItem(fonts[i]);
+            mItem.addActionListener(new FontActionListener(fonts[i]));
+            fontMenu.add(mItem);
+        }
+        mbar.add(fontMenu);
+        
+        Menu sizeMenu = new Menu("Size");
+        int[] sizes = {9, 10, 12, 14, 18, 24, 36, 48, 72};
+        for (int i = 0; i < sizes.length; ++i) {
+            MenuItem mItem = new MenuItem("" + sizes[i]);
+            mItem.addActionListener(new SizeActionListener(sizes[i]));
+            sizeMenu.add(mItem);
+        }
+        mbar.add(sizeMenu);
+        
+        translit = null;
+        
+        mbar.add(translitMenu = new Menu("Transliterator"));
+        
+        translitMenu.add(convertSelectionItem = new MenuItem("Transliterate", 
+            new MenuShortcut(KeyEvent.VK_K)));
+        convertSelectionItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                handleBatchTransliterate(translit);
+            }
+        });
+        
+        translitMenu.add(swapSelectionItem = new MenuItem("Reverse", 
+            new MenuShortcut(KeyEvent.VK_S)));
+        swapSelectionItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+            	Transliterator inv;
+            	try {
+                	inv = translit.getInverse();
+                } catch (Exception x) {
+                	inv = new NullTransliterator();
+                }
+            	setTransliterator(inv.getID(), null);
+            }
+        });
+        
+        translitMenu.add(convertTypingItem = new MenuItem("No Typing Conversion",
+            new MenuShortcut(KeyEvent.VK_T)));
+        convertTypingItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                if (!transliterateTyping) {
+                    text.setTransliterator(translit);
+                    convertTypingItem.setLabel("No Typing Conversion");
+                } else {
+                    text.flush();
+                    text.setTransliterator(null);
+                    convertTypingItem.setLabel("Convert Typing");
+                }
+                transliterateTyping = !transliterateTyping;
+            }
+        });
+        
+        translitMenu.add(historyMenu = new Menu("Recent"));
+        
+        helpDialog = new InfoDialog(this, "Simple Demo", "Instructions",
+           "CTL A, X, C, V have customary meanings.\n"
+         + "Arrow keys, delete and backspace work.\n"
+         + "To get a character from its control point, type the hex, then hit CTL Q"
+        );
+        helpDialog.getArea().setEditable(false);
+        
+       
+        Menu helpMenu;
+        mbar.add(helpMenu = new Menu("Extras"));
+        helpMenu.add(mitem = new MenuItem("Help"));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                helpDialog.show();
+            }
+        });   
+        
+        hexDialog = new InfoDialog(this, "Hex Entry", "Use U+..., \\u..., \\x{...}, or &#x...;",
+           "\\u00E1"
+        );
+        Button button = new Button("Insert");
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                String hexValue = hexDialog.getArea().getText();
+                text.insertText(fromHex.transliterate(hexValue));
+            }
+        });
+        hexDialog.getBottom().add(button);
+        
+        helpMenu.add(mitem = new MenuItem("Hex...", 
+            new MenuShortcut(KeyEvent.VK_H)));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                hexDialog.show();
+            }
+        });
+        
+        // Compound Transliterator
+        
+        compoundDialog = new InfoDialog(this, "Compound Transliterator", "",
+           "[^\\u0000-\\u00FF] hex"
+        );
+        button = new Button("Set");
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                String compound = "";
+                try {
+                    compound = compoundDialog.getArea().getText();
+                    setTransliterator(compound, null);
+                } catch (RuntimeException ex) {
+                    compoundDialog.getArea().setText(compound + "\n" + ex.getMessage());
+                }
+            }
+        });
+        compoundDialog.getBottom().add(button);
+        
+        translitMenu.add(mitem = new MenuItem("Multiple...", 
+            new MenuShortcut(KeyEvent.VK_M)));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                compoundDialog.show();
+            }
+        });
+        
+        // RuleBased Transliterator
+        
+        rulesDialog = new InfoDialog(this, "Rule-Based Transliterator", "",
+           "([A-Z]) > &Hex($1) &Name($1);\r\n" 
+            + "&Hex-Any($1) < ('\\' [uU] [a-fA-F0-9]*);\r\n" 
+			+ "&Name-Any($1) < ('{' [^\\}]* '}');"
+        );
+        button = new Button("Set");
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                String compound = "";
+                try {
+                    compound = rulesDialog.getArea().getText();
+                    String id = ruleId.getText();
+                    setTransliterator(compound, id);
+                } catch (RuntimeException ex) {
+                    rulesDialog.getArea().setText(compound + "\n#" + ex.getMessage());
+                }
+            }
+        });
+        rulesDialog.getBottom().add(button);
+        ruleId = new TextField("test1", 20);
+        Label temp = new Label(" Name:");
+        rulesDialog.getBottom().add(temp);
+        rulesDialog.getBottom().add(ruleId);
+        
+        
+        translitMenu.add(mitem = new MenuItem("From Rules...", 
+            new MenuShortcut(KeyEvent.VK_R)));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                rulesDialog.show();
+            }
+        });
+        
+        
+        translitMenu.add(mitem = new MenuItem("From File...", 
+            new MenuShortcut(KeyEvent.VK_F)));
+        mitem.addActionListener(new FileListener(this, RULE_FILE));
+        
+        translitMenu.add(mitem = new MenuItem("Test File..."));
+        mitem.addActionListener(new FileListener(this, TEST_FILE));
+        
+        // Flesh out the menu with the installed transliterators
+        
+        translitMenu.addSeparator();
+        
+        Iterator sources = add(new TreeSet(), Transliterator.getAvailableSources()).iterator();
+        while(sources.hasNext()) {
+            String source = (String) sources.next();
+            Iterator targets = add(new TreeSet(), Transliterator.getAvailableTargets(source)).iterator();
+            Menu targetMenu = new Menu(source);
+            while(targets.hasNext()) {
+                String target = (String) targets.next();
+                Set variantSet = add(new TreeSet(), Transliterator.getAvailableVariants(source, target));
+                if (variantSet.size() < 2) {
+                    mitem = new MenuItem(target);
+                    mitem.addActionListener(new TransliterationListener(source + "-" + target));
+                    targetMenu.add(mitem);
+                } else {
+                    Iterator variants = variantSet.iterator();
+                    Menu variantMenu = new Menu(target);
+                    while(variants.hasNext()) {
+                        String variant = (String) variants.next();
+                        String menuName = variant.length() == 0 ? "<default>" : variant;
+                        //System.out.println("<" + source + "-" + target + "/" + variant + ">, <" + menuName + ">");
+                        mitem = new MenuItem(menuName);
+                        mitem.addActionListener(new TransliterationListener(source + "-" + target + "/" + variant));
+                        variantMenu.add(mitem);
+                    }
+                    targetMenu.add(variantMenu);
+                }
+            }
+            translitMenu.add(targetMenu);
+        }
+        
+        
+    }
+    
+    static final int RULE_FILE = 0, TEST_FILE = 1;
+    //
+    static class FileListener implements ActionListener {
+        Demo frame;
+        int choice;
+        
+        FileListener(Demo frame, int choice) {
+            this.frame = frame;
+            this.choice = choice;
+        }
+        
+        public void actionPerformed(ActionEvent e) {
+            String id = frame.translit.getID();
+            int slashPos = id.indexOf('/');
+            String variant = "";
+            if (slashPos >= 0) {
+                variant = "_" + id.substring(slashPos+1);
+                id = id.substring(0, slashPos);
+            }
+            
+            FileDialog fileDialog = new FileDialog(frame, "Input File");
+            fileDialog.setFile("Test_" + id + ".txt");
+            fileDialog.show();
+            String fileName = fileDialog.getFile();
+            String fileDirectory = fileDialog.getDirectory();
+            if (fileName != null) {
+                try {
+                    File f = new File(fileDirectory, fileName);
+                    if (choice == RULE_FILE) {
+                        
+                        // read stuff into buffer
+                        
+                        StringBuffer buffer = new StringBuffer();
+                        FileInputStream fis = new FileInputStream(f);
+                        InputStreamReader isr = new InputStreamReader(fis, "UTF8");
+                        BufferedReader br = new BufferedReader(isr, 32*1024);
+                        while (true) {
+                            String line = br.readLine();
+                            if (line == null) break;
+                            if (line.length() > 0 && line.charAt(0) == '\uFEFF') line = line.substring(1); // strip BOM
+                            buffer.append('\n');
+                            buffer.append(line);
+                        }
+                        br.close();
+                        
+                        // Transform file name into id
+                        if (fileName.startsWith("Transliterator_")) {
+                            fileName = fileName.substring("Transliterator_".length());
+                        }
+                        int pos = fileName.indexOf('_');
+                        if (pos < 0) {
+                            id = fileName;
+                        } else {
+                            id = fileName.substring(0, pos) + "-";
+                            int pos2 = fileName.indexOf('_', pos+1);
+                            if (pos2 < 0) {
+                                id += fileName.substring(pos+1);
+                            } else {
+                                id += fileName.substring(pos+1, pos2) + "/" + fileName.substring(pos2 + 1);
+                            }
+                        }                        
+                        pos = id.lastIndexOf('.');
+                        if (pos >= 0) id = id.substring(0, pos);
+                        
+                        // Now set
+                        
+                        frame.setTransliterator(buffer.toString(), id);
+                    } else if (choice == TEST_FILE) {
+                        genTestFile(f, frame.translit, variant);
+                    }
+                } catch (Exception e2) {
+                    e2.printStackTrace();
+                    System.out.println("Problem opening/reading: " + fileDirectory + ", " + fileName);
+                }
+            }
+            fileDialog.dispose();
+        }
+    }
+    
+
+    boolean transliterateTyping = true;
+    Transliterator fromHex = Transliterator.getInstance("Hex-Any");
+    InfoDialog helpDialog;
+    InfoDialog hexDialog;
+    InfoDialog compoundDialog;
+    InfoDialog rulesDialog;
+    TextField ruleId;
+    MenuItem convertSelectionItem = null;
+    MenuItem swapSelectionItem = null;
+    MenuItem convertTypingItem = null;
+    Menu historyMenu;
+    Map historyMap = new HashMap();
+    Set historySet = new TreeSet(new Comparator() {
+            public int compare(Object a, Object b) {
+                MenuItem aa = (MenuItem)a;
+                MenuItem bb = (MenuItem)b;
+                return aa.getLabel().compareTo(bb.getLabel());
+            }
+        });
+        
+    // ADD Factory since otherwise getInverse blows out
+    static class DummyFactory implements Transliterator.Factory {
+        static DummyFactory singleton = new DummyFactory();
+        static HashMap m = new HashMap();
+
+        // Since Transliterators are immutable, we don't have to clone on set & get
+        static void add(String ID, Transliterator t) {
+            m.put(ID, t);
+            System.out.println("Registering: " + ID + ", " + t.toRules(true));
+            Transliterator.registerFactory(ID, singleton);
+        }
+        public Transliterator getInstance(String ID) {
+            return (Transliterator) m.get(ID);
+        }
+    }
+    
+    static void printBreaks(int num, String testSource, BreakIterator bi) {
+        String result = "";
+        int lastPos = 0;
+    	while (true) {
+    	    int pos = bi.next();
+    	    if (pos == bi.DONE) break;
+    	    result += testSource.substring(lastPos, pos) + "&";
+    	    lastPos = pos;
+    	    System.out.println(pos);
+    	}
+    	System.out.println("Test" + num + ": " + result);
+    }
+    
+    static void printIteration(int num, String testSource, CharacterIterator ci) {
+        String result = "";
+    	while (true) {
+    	    char ch = ci.next();
+    	    if (ch == ci.DONE) break;
+    	    result += ch + "(" + ci.getIndex() + ")";
+    	}
+    	System.out.println("Test" + num + ": " + result);
+    }
+    
+    static void printSources() {
+        String[] list = {"Latin-ThaiLogical", "ThaiLogical-Latin", "Thai-ThaiLogical", "ThaiLogical-Thai"};
+        UnicodeSet all = new UnicodeSet();
+        for (int i = 0; i < list.length; ++i) {
+            Transliterator tr = Transliterator.getInstance(list[i]);
+            UnicodeSet src = tr.getSourceSet();
+            System.out.println(list[i] + ": " + src.toPattern(true));
+            all.addAll(src);
+        }
+        System.out.println("All: " + all.toPattern(true));
+        UnicodeSet rem = new UnicodeSet("[[:latin:][:thai:]]");
+        System.out.println("missing from [:latin:][:thai:]: " + all.removeAll(rem).toPattern(true));
+    }
+    
+    // 200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+
+    static Transliterator title = Transliterator.getInstance("title");
+    static String hexAndNameRules = "    ([:c:]) > \\u200E &hex/unicode($1) ' ( ) ' &name($1) \\u200E ' ';"
+        + "([:mark:]) > \\u200E &hex/unicode($1) ' ( ' \\u200E \u25CC $1 \\u200E ' ) ' &name($1) \\u200E ' ';"
+        + "(.) > \\u200E &hex/unicode($1) ' ( ' \\u200E $1 \\u200E ' ) ' &name($1) ' ' \\u200E;";
+
+    static Transliterator hexAndName = Transliterator.createFromRules("any-hexAndName", 
+        hexAndNameRules, Transliterator.FORWARD);
+    
+
+
+    //static Transliterator upper = Transliterator.getInstance("upper");
+     
+    static final byte NONE = 0, TITLEWORD = 1, TITLELINE = 2;
+    
+    static void genTestFile(File sourceFile, Transliterator translit, String variant) {
+        try {
+            
+            System.out.println("Reading: " + sourceFile.getCanonicalPath());
+            BufferedReader in = new BufferedReader(
+                new InputStreamReader(
+                    new FileInputStream(sourceFile), "UTF-8"));
+            String targetFile = sourceFile.getCanonicalPath();
+            int dotPos = targetFile.lastIndexOf('.');
+            if (dotPos >= 0) targetFile = targetFile.substring(0,dotPos);
+            targetFile += variant;
+            
+            File outFile = new File(targetFile + ".html");
+            System.out.println("Writing: " + outFile.getCanonicalPath());
+            
+            PrintWriter out = new PrintWriter(
+                new BufferedWriter(
+                    new OutputStreamWriter(
+                        new FileOutputStream(outFile), "UTF-8")));
+                        
+            String direction = "";
+            String id = translit.getID();
+            if (id.indexOf("Arabic") >= 0 || id.indexOf("Hebrew") >= 0) {
+                direction = " direction: rtl;";
+            }
+            boolean testRoundTrip = true;
+            boolean generateSets = true;
+            if (id.startsWith("Han-") || id.startsWith("ja-")) {
+                testRoundTrip = false;
+                generateSets = false;
+            }
+            out.println("<head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>");
+            out.println("<style><!--");
+            out.println("td, th       { vertical-align: top; border: 1px solid black }");
+            out.println("td.s       { background-color: #EEEEEE;" + direction + " }");
+            out.println("td.r       { background-color: #CCCCCC;" + direction + " }");
+            out.println("td.n       { background-color: #FFFFCC; }");
+            out.println("td.title       { border: 0px solid black}");
+            out.println("span.d       { background-color: #FF6666 }");
+            out.println("span.r       { background-color: #66FF66 }");
+
+            out.println("body         { font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', Arial, sans-serif; margin: 5 }");
+            out.println("--></style>");
+            out.println("<title>" + id + " Transliteration Check</title></head>");
+            out.println("<body bgcolor='#FFFFFF'><p>See <a href='Test_Instructions.html'>Test_Instructions.html</a> for details.</p>");
+            out.println("<table>");
+            
+            //out.println("<tr><th width='33%'>Thai</th><th width='33%'>Latin</th><th width='33%'>Thai</th></tr>");
+  
+            Transliterator tl = translit;
+            Transliterator lt = tl.getInverse();
+            
+            Transliterator ltFilter = tl.getInverse();
+            ltFilter.setFilter(new UnicodeSet("[:^Lu:]"));
+            Transliterator tlFilter = lt.getInverse();
+            tlFilter.setFilter(new UnicodeSet("[:^Lu:]"));
+            
+            //Transliterator.getInstance("[:^Lu:]" +  lt.getID());
+            
+            BreakIterator sentenceBreak = BreakIterator.getSentenceInstance();
+            
+            byte titleSetting = TITLELINE;
+            boolean upperfilter = false;
+            boolean first = true;
+            while (true) {
+                String line = in.readLine();
+                if (line == null) break;
+                line = line.trim();
+                if (line.length() == 0) continue;
+                if (line.charAt(0) == '\uFEFF') line = line.substring(1); // remove BOM
+                
+                if (line.charAt(0) == '#') continue; // comments
+                
+                if (line.equals("@TITLECASE@")) {
+                    titleSetting = TITLEWORD;
+                    out.println("<tr><td colspan='2' class='title'><b>Names</b></td></tr>");
+                    continue;
+                } else if (line.equals("@UPPERFILTER@")) {
+                    upperfilter = true;
+                    continue;
+                } else if (line.startsWith("@SET")) {
+                    UnicodeSet s = new UnicodeSet(line.substring(4).trim());
+                    out.println("<tr><td colspan='2' class='title'><b>Characters</b></td></tr>");
+                    UnicodeSetIterator it = new UnicodeSetIterator(s);
+                    while (it.next()) {
+                        addSentenceToTable(out, it.codepoint != it.IS_STRING 
+                            ? UTF16.valueOf(it.codepoint)
+                            : it.string,
+                            NONE, true, testRoundTrip, first, tl, lt);
+                    }
+                    continue;
+                }
+                        
+                sentenceBreak.setText(line);
+                int start = 0;
+                while (true) {
+                    int end = sentenceBreak.next();
+                    if (end == sentenceBreak.DONE) break;
+                    String coreSentence = line.substring(start, end);
+                    //System.out.println("Core: " + hex.transliterate(coreSentence));
+                    end = start;
+                    
+                    int oldPos = 0;
+                    while (oldPos < coreSentence.length()) {
+                        // hack, because sentence doesn't seem to be working right
+                        int pos = coreSentence.indexOf(". ", oldPos);
+                        if (pos < 0) pos = coreSentence.length(); else pos = pos+2;
+                        int pos2 = coreSentence.indexOf('\u3002', oldPos);
+                        if (pos2 < 0) pos2 = coreSentence.length(); else pos2 = pos2 + 1;
+                        if (pos > pos2) pos = pos2;
+                        String sentence = coreSentence.substring(oldPos, pos).trim();
+                        //System.out.println("Sentence: " + hex.transliterate(coreSentence));
+                        oldPos = pos;
+                        
+                        addSentenceToTable(out, sentence,
+                            titleSetting, false, testRoundTrip, first, tl, lt);
+                        
+                        first = false;
+                    }
+                }
+            }
+            out.println("</table></body>");
+            out.close();
+            
+            // Now write the source/target sets
+            if (generateSets) {
+                outFile = new File(targetFile + "_Sets.html");
+                System.out.println("Writing: " + outFile.getCanonicalPath());
+                
+                out = new PrintWriter(
+                    new BufferedWriter(
+                        new OutputStreamWriter(
+                            new FileOutputStream(outFile), "UTF-8")));
+                out.println("<head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>");
+                out.println("<style><!--");
+                out.println("body         { font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', Arial, sans-serif; margin: 5 }");
+                out.println("--></style>");
+                out.println("<title>" + id + " Transliteration Sets</title></head>");
+                out.println("<body bgcolor='#FFFFFF'>");
+                
+                int dashPos = id.indexOf('-');
+                int slashPos = id.indexOf('/');
+                if (slashPos < 0) slashPos = id.length();
+                UnicodeSet sourceSuper = null;
+                try {
+                    String temp = id.substring(0,dashPos);
+                    if (temp.equals("ja")) sourceSuper = new UnicodeSet("[[:Han:][:hiragana:][:katakana:]]");
+                    else sourceSuper = new UnicodeSet("[[:" + temp + ":][:Mn:][:Me:]]");
+                } catch (Exception e) {}
+                
+                UnicodeSet targetSuper = null;
+                try {
+                    targetSuper = new UnicodeSet("[[:" + id.substring(dashPos+1, slashPos) + ":][:Mn:][:Me:]]");
+                } catch (Exception e) {}
+                
+                int nfdStyle = CLOSE_CASE | CLOSE_FLATTEN | CLOSE_CANONICAL;
+                int nfkdStyle = nfdStyle | CLOSE_COMPATIBILITY;
+                out.println("<ul>");
+                out.println("<p><b>None</b></p>");
+                showSets(out, translit, lt, null, null, 0);
+                out.println("<p><b>NFD</b></p>");
+                showSets(out, translit, lt, sourceSuper, targetSuper, nfdStyle);
+                out.println("<p><b>NFKD</b></p>");
+                showSets(out, translit, lt, sourceSuper, targetSuper, nfkdStyle);
+                out.println("</ul></body>");
+                out.close();
+            }
+            System.out.println("Done Writing");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    
+    static void addSentenceToTable(PrintWriter out, String sentence, 
+            byte titleSetting, boolean addName, boolean testRoundTrip, boolean first,
+            Transliterator tl, Transliterator lt) {
+        if (sentence.length() == 0) return; // skip empty lines
+        
+        String originalShow = sentence;
+        String latin;
+        latin = tl.transliterate(saveAscii.transliterate(sentence));
+
+        String latinShow = latin;
+        if (titleSetting == TITLEWORD) {
+            latinShow = title.transliterate(latin);
+        } else if (titleSetting == TITLELINE) {
+            latinShow = titlecaseFirstWord(latinShow);
+        }
+        latinShow = restoreAscii.transliterate(latinShow);
+                        
+        String reverse;
+        reverse = restoreAscii.transliterate(lt.transliterate(latin));
+                        
+        String NFKDSentence = Normalizer.normalize(sentence, Normalizer.NFKD);
+        String NFKDLatin = Normalizer.normalize(latin, Normalizer.NFKD);
+        String NFKDReverse = Normalizer.normalize(reverse, Normalizer.NFKD);
+        
+        if (latinShow.length() == 0) {
+            latinShow = "<i>empty</i>";
+        } else if (NFKDSentence.equals(NFKDLatin)) {
+            latinShow = "<span class='r'>" + latinShow + "</span>";
+        }
+        String reverseShow = reverse;
+        
+        if (testRoundTrip && !NFKDReverse.equals(NFKDSentence)) {
+            int minLen = reverse.length();
+            if (minLen > sentence.length()) minLen = sentence.length();
+            int i;
+            for (i = 0; i < minLen; ++i) {
+                if (reverse.charAt(i) != sentence.charAt(i)) break;
+            }
+            //originalShow = sentence.substring(0,i) + "<span class='d'>" + sentence.substring(i) + "</span>";
+            reverseShow = reverseShow.length() == 0 
+                ? "<i>empty</i>" 
+                //: reverse.substring(0,i) + "<span class='d'>" + reverse.substring(i) + "</span>";
+                : showDifference(sentence, reverse);
+            out.println("<tr><td class='s'" + (first ? " width='50%'>" : ">") + originalShow 
+                + "</td><td rowSpan='2'>" + latinShow
+                + "</td></tr><tr><td class='r'>" + reverseShow
+                + "</td></tr>");
+        } else {
+            out.println("<tr><td class='s'" + (first ? " width='50%'>" : ">") + originalShow 
+                + "</td><td>" + latinShow
+                + "</td></tr>");
+        }
+        if (addName) {
+            latinShow = hexAndName.transliterate(latin);
+            if (latinShow.length() == 0) latinShow = "<i>empty</i>";
+            originalShow = hexAndName.transliterate(sentence);
+            if (originalShow.length() == 0) originalShow = "<i>empty</i>";
+
+            out.println("<tr><td class='n'>" + originalShow
+                + "</td><td class='n'>" + latinShow
+                + "</td></tr>");
+        }
+        out.println("<tr><td></td></tr>");
+        
+    }
+    
+    static String showDifference(String as, String bs) {
+        Differ differ = new Differ(300, 3);
+        StringBuffer out = new StringBuffer();
+        int max = as.length();
+        if (max < bs.length()) max = bs.length();
+        for (int j = 0; j <= max; ++j) {
+            if (j < as.length()) differ.addA(as.substring(j, j+1));
+            if (j < bs.length()) differ.addB(bs.substring(j, j+1));
+            differ.checkMatch(j == max);
+
+            if (differ.getACount() != 0 || differ.getBCount() != 0) {
+                out.append("...");
+                if (differ.getACount() != 0) {
+                    out.append("<span class='r'>");
+                    for (int i = 0; i < differ.getACount(); ++i) {
+                        out.append(differ.getA(i));
+                    }
+                    out.append("</span>");
+                }
+                if (differ.getBCount() != 0) {
+                    out.append("<span class='d'>");
+                    for (int i = 0; i < differ.getBCount(); ++i) {
+                        out.append(differ.getB(i));
+                    }
+                    out.append("</span>");
+                }
+                out.append("...");
+            }
+        }
+        return out.toString();
+    }
+    
+    static void showSets(PrintWriter out, Transliterator translit, Transliterator inverse,
+      UnicodeSet sourceSuper, UnicodeSet targetSuper, int options) {
+        out.println("<li>Source Set:<ul><li>" +         toPattern(closeUnicodeSet(translit.getSourceSet(), options), sourceSuper) + "</li></ul></li>");
+        out.println("<li>Reverse Target Set:<ul><li>" + toPattern(closeUnicodeSet(inverse.getTargetSet(),  options), sourceSuper) + "</li></ul></li>");
+        out.println("<li>Target Set:<ul><li>" +         toPattern(closeUnicodeSet(translit.getTargetSet(), options), targetSuper) + "</li></ul></li>");
+        out.println("<li>Reverse Source Set:<ul><li>" + toPattern(closeUnicodeSet(inverse.getSourceSet(),  options), targetSuper) + "</li></ul></li>");
+    }
+        
+    static final int CLOSE_CASE = 1, CLOSE_FLATTEN = 2, CLOSE_CANONICAL = 4, CLOSE_COMPATIBILITY = 8;
+    
+    static UnicodeSet closeUnicodeSet(UnicodeSet source, int options) {
+        if (options == 0) return source;
+        
+        UnicodeSetIterator it = new UnicodeSetIterator(source);
+        UnicodeSet additions = new UnicodeSet(); // to avoid messing up iterator
+        UnicodeSet removals = new UnicodeSet(); // to avoid messing up iterator
+        String base;
+        int cp;
+        
+        // Add all case equivalents
+        if ((options & CLOSE_CASE) != 0) {
+            while (it.next()) {
+                cp = it.codepoint;
+                if (cp == it.IS_STRING) continue;
+                int type = UCharacter.getType(cp);
+                if (type == Character.UPPERCASE_LETTER || type == Character.LOWERCASE_LETTER || type == Character.TITLECASE_LETTER) {
+                    additions.add(UCharacter.toLowerCase(UTF16.valueOf(cp)));
+                    additions.add(UCharacter.toUpperCase(UTF16.valueOf(cp)));
+                }
+            }
+            source.addAll(additions);
+        }
+       
+        // Add the canonical closure of all strings and characters in source
+        if ((options & CLOSE_CANONICAL) != 0) {
+            it.reset();
+            additions.clear();
+            CanonicalIterator ci = new CanonicalIterator(".");
+            while (it.next()) {
+                if (it.codepoint == it.IS_STRING) base = it.string;
+                else base = UTF16.valueOf(it.codepoint);
+                ci.setSource(base);
+                while (true) {
+                    String trial = ci.next();
+                    if (trial == null) break;
+                    if (trial.equals(base)) continue;
+                    additions.add(trial);
+                }
+            }
+            source.addAll(additions);
+        }
+
+        // flatten strings
+        if ((options & CLOSE_FLATTEN) != 0) {
+            it.reset();
+            additions.clear();
+            while (it.next()) {
+                if (it.codepoint != it.IS_STRING) continue;
+                additions.addAll(it.string);
+                removals.add(it.string);
+                //System.out.println("flattening '" + hex.transliterate(it.string) + "'");
+            }
+            source.addAll(additions);
+            source.removeAll(removals);
+        }
+       
+        // Now add decompositions of characters in source
+        if ((options & CLOSE_COMPATIBILITY) != 0) {
+            it.reset(source);
+            additions.clear();
+            while (it.next()) {
+                if (it.codepoint == it.IS_STRING) base = it.string;
+                else base = UTF16.valueOf(it.codepoint);
+                if (Normalizer.isNormalized(base, Normalizer.NFKD)) continue;
+                String decomp = Normalizer.normalize(base, Normalizer.NFKD);
+                additions.add(decomp);
+            }
+            source.addAll(additions);
+            
+            // Now add any other character that decomposes to a character in source
+            for (cp = 0; cp < 0x10FFFF; ++cp) {
+                if (!UCharacter.isDefined(cp)) continue;
+                if (Normalizer.isNormalized(cp, Normalizer.NFKD)) continue;
+                if (source.contains(cp)) continue;
+                
+                String decomp = Normalizer.normalize(cp, Normalizer.NFKD);
+                if (source.containsAll(decomp)) {
+                    // System.out.println("Adding: " + Integer.toString(cp,16) + " " + UCharacter.getName(cp));
+                    source.add(cp);
+                }
+            }
+        }
+        
+        return source;
+    }
+    
+    static String toPattern(UnicodeSet source, UnicodeSet superset) {
+        if (superset != null) {
+            source.removeAll(superset);
+            return "[" + superset.toPattern(true) + " " + source.toPattern(true) + "]";
+        }
+        return source.toPattern(true);
+    }
+    
+    static BreakIterator bi = BreakIterator.getWordInstance();
+    
+    static String titlecaseFirstWord(String line) {
+        // search for first word with letters. If the first letter is lower, then titlecase it.
+        bi.setText(line);
+        int start = 0;
+        while (true) {
+            int end = bi.next();
+            if (end == bi.DONE) break;
+            int firstLetterType = getFirstLetterType(line, start, end);
+            if (firstLetterType != Character.UNASSIGNED) {
+                if (firstLetterType != Character.LOWERCASE_LETTER) break;
+                line = line.substring(0, start) 
+                    + UCharacter.toTitleCase(line.substring(start, end), bi)
+                    + line.substring(end);
+                break;
+            }
+            end = start;
+        }
+        return line;
+    }
+    
+    static final int LETTER_MASK = 
+          (1<<Character.UPPERCASE_LETTER)
+        | (1<<Character.LOWERCASE_LETTER)
+        | (1<<Character.TITLECASE_LETTER)
+        | (1<<Character.MODIFIER_LETTER)
+        | (1<<Character.OTHER_LETTER)
+        ;
+    
+    static int getFirstLetterType(String line, int start, int end) {
+        int cp;
+        for (int i = start; i < end; i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(line, i);
+            int type = UCharacter.getType(cp);
+            if (((1<<type) & LETTER_MASK) != 0) return type;
+        }
+        return Character.UNASSIGNED;
+    }
+    
+    static void printNames(UnicodeSet s, String targetFile) {
+        try {
+            File outFile = new File(targetFile);
+            System.out.println("Writing: " + outFile.getCanonicalPath());
+                
+            PrintWriter out = new PrintWriter(
+                new BufferedWriter(
+                    new OutputStreamWriter(
+                        new FileOutputStream(outFile), "UTF-8")));
+            UnicodeSet main = new UnicodeSet();
+            
+            UnicodeSet others = new UnicodeSet();
+            UnicodeSetIterator it = new UnicodeSetIterator(s);
+            while (it.next()) {
+                if (!UCharacter.isDefined(it.codepoint)) continue;
+                if (!Normalizer.isNormalized(it.codepoint, Normalizer.NFD)) {
+                    String decomp = Normalizer.normalize(it.codepoint, Normalizer.NFD);
+                    others.addAll(decomp);
+                    continue;
+                }
+                out.println(" " + UTF16.valueOf(it.codepoint) + " <> XXX # " + UCharacter.getName(it.codepoint));
+                main.add(it.codepoint);
+            }
+            
+            if (others.size() != 0) {
+                out.println("Decomposed characters found above: ");
+                others.removeAll(main);
+                it.reset(others);
+                while (it.next()) {
+                    out.println(" " + UTF16.valueOf(it.codepoint) + " <> XXX # " + UCharacter.getName(it.codepoint));
+                }
+            }
+            
+            out.close();
+            System.out.println("Done Writing");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    
+    static Transliterator hex = Transliterator.getInstance("[^\\u0020-\\u007E] hex");
+    static final String saveRules = 
+          "A <> \uEA41; B <> \uEA42; C <> \uEA43; D <> \uEA44; E <> \uEA45; F <> \uEA46; G <> \uEA47; H <> \uEA48; I <> \uEA49; "
+        + "J <> \uEA4A; K <> \uEA4B; L <> \uEA4C; M <> \uEA4D; N <> \uEA4E; O <> \uEA4F; P <> \uEA50; Q <> \uEA51; R <> \uEA52; "
+        + "S <> \uEA53; T <> \uEA54; U <> \uEA55; V <> \uEA56; W <> \uEA57; X <> \uEA58; Y <> \uEA59; Z <> \uEA5A; "
+        + "a <> \uEA61; b <> \uEA62; c <> \uEA63; d <> \uEA64; e <> \uEA65; f <> \uEA66; g <> \uEA67; h <> \uEA68; i <> \uEA69; "
+        + "j <> \uEA6A; k <> \uEA6B; l <> \uEA6C; m <> \uEA6D; n <> \uEA6E; o <> \uEA6F; p <> \uEA70; q <> \uEA71; r <> \uEA72; "
+        + "s <> \uEA73; t <> \uEA74; u <> \uEA75; v <> \uEA76; w <> \uEA77; x <> \uEA78; y <> \uEA79; z <> \uEA7A;";
+        
+    static Transliterator saveAscii = Transliterator.createFromRules("ascii-saved", saveRules, Transliterator.FORWARD);
+    static Transliterator restoreAscii = Transliterator.createFromRules("ascii-saved", saveRules, Transliterator.REVERSE);
+    
+    static {
+        
+        if (false) {
+        
+        for (char i = 'A'; i <= 'z'; ++i) {
+            System.out.print(i + " <> " + hex.transliterate(String.valueOf((char)(0xEA00 + i))) + "; ");
+        }
+
+        UnicodeSet x = new UnicodeSet("[[:^ccc=0:]&[:^ccc=230:]]");
+        x = x.complement();
+        x = x.complement();
+        System.out.println("Test: " + x.toPattern(true));
+        
+        Transliterator y = Transliterator.createFromRules("xxx", "$notAbove = [[:^ccc=0:]&[:^ccc=230:]]; u ($notAbove*) \u0308 > XXX | $1; ", Transliterator.FORWARD);
+        
+        String[] testList = {"u\u0308", "u\u0316\u0308", "u\u0308\u0316", "u\u0301\u0308", "u\u0308\u0301"};
+        for (int i = 0; i < testList.length; ++i) {
+            String yy = y.transliterate(testList[i]);
+            System.out.println(hex.transliterate(testList[i]) + " => " + hex.transliterate(yy));
+        }
+        
+        //printNames(new UnicodeSet("[\u0600-\u06FF]"), "Arabic-Latin.txt");
+        
+        
+        /*  
+        BreakTransliterator.register();
+        
+    	BreakTransliterator testTrans = new BreakTransliterator("Any-XXX", null, null, "$");
+    	String testSource = "The Quick:   Brown fox--jumped.";
+    	BreakIterator bi = testTrans.getBreakIterator();
+        bi.setText(new StringCharacterIterator(testSource));
+        printBreaks(0, testSource, bi);
+        //bi.setText(UCharacterIterator.getInstance(testSource));
+        //printBreaks(1, testSource, bi);
+        
+        printIteration(2, testSource, new StringCharacterIterator(testSource));
+        //printIteration(3, testSource, UCharacterIterator.getInstance(testSource));
+        
+    	
+    	
+    	String test = testTrans.transliterate(testSource);
+    	System.out.println("Test3: " + test);
+    	DummyFactory.add(testTrans.getID(), testTrans);
+    	*/
+    	
+    	// AnyTransliterator.ScriptRunIterator.registerAnyToScript();
+    	
+    	AnyTransliterator at = new AnyTransliterator("Greek", null);
+    	at.transliterate("(cat,\u03b1,\u0915)");
+    	DummyFactory.add(at.getID(), at);
+    	
+    	at = new AnyTransliterator("Devanagari", null);
+    	at.transliterate("(cat,\u03b1,\u0915)");
+    	DummyFactory.add(at.getID(), at);
+    	
+    	at = new AnyTransliterator("Latin", null);
+    	at.transliterate("(cat,\u03b1,\u0915)");
+    	DummyFactory.add(at.getID(), at);
+    	
+        DummyFactory.add("Any-gif", Transliterator.createFromRules("gif", "'\\'u(..)(..) > '<img src=\"http://www.unicode.org/gifs/24/' $1 '/U' $1$2 '.gif\">';", Transliterator.FORWARD));    	
+        DummyFactory.add("gif-Any", Transliterator.getInstance("Any-Null"));    	
+
+        DummyFactory.add("Any-RemoveCurly", Transliterator.createFromRules("RemoveCurly", "[\\{\\}] > ;", Transliterator.FORWARD));    	
+        DummyFactory.add("RemoveCurly-Any", Transliterator.getInstance("Any-Null"));
+        
+        System.out.println("Trying &hex");
+        Transliterator t = Transliterator.createFromRules("hex2", "(.) > &hex($1);", Transliterator.FORWARD);
+        System.out.println("Registering");
+        DummyFactory.add("Any-hex2", t);    	
+        
+        System.out.println("Trying &gif");
+        t = Transliterator.createFromRules("gif2", "(.) > &any-gif($1);", Transliterator.FORWARD);
+        System.out.println("Registering");
+        DummyFactory.add("Any-gif2", t);    
+        }
+    }
+    
+    
+    void setTransliterator(String name, String id) {
+        if (DEBUG) System.out.println("Got: " + name);
+        if (id == null) {
+        	translit = Transliterator.getInstance(name);
+        } else {
+            String reverseId = "";
+            int pos = id.indexOf('-');
+            if (pos < 0) {
+            	reverseId = id + "-Any";
+            	id = "Any-" + id;
+            } else {
+                int pos2 = id.indexOf("/", pos);
+                if (pos2 < 0) {
+            	    reverseId = id.substring(pos+1) + "-" + id.substring(0,pos);
+            	} else {
+            	    reverseId = id.substring(pos+1, pos2) + "-" + id.substring(0,pos) + id.substring(pos2);
+            	}
+            }
+            
+        	
+        	translit = Transliterator.createFromRules(id, name, Transliterator.FORWARD);
+        	if (DEBUG) {
+        	    System.out.println("***Forward Rules");
+        	    System.out.println(((RuleBasedTransliterator)translit).toRules(true));
+        	    System.out.println("***Source Set");
+        	    System.out.println(translit.getSourceSet().toPattern(true));
+        	}
+        	    System.out.println("***Target Set");
+        	    UnicodeSet target = translit.getTargetSet();
+        	    System.out.println(target.toPattern(true));
+        	    UnicodeSet rest = new UnicodeSet("[a-z]").removeAll(target);
+        	    System.out.println("***ASCII - Target Set");
+        	    System.out.println(rest.toPattern(true));
+        	    
+            DummyFactory.add(id, translit);
+            
+        	Transliterator translit2 = Transliterator.createFromRules(reverseId, name, Transliterator.REVERSE);
+        	if (DEBUG) {
+        	    System.out.println("***Backward Rules");
+        	    System.out.println(((RuleBasedTransliterator)translit2).toRules(true));
+        	}
+            DummyFactory.add(reverseId, translit2);
+            
+            Transliterator rev = translit.getInverse();
+        	if (DEBUG) System.out.println("***Inverse Rules");
+        	if (DEBUG) System.out.println(((RuleBasedTransliterator)rev).toRules(true));
+            
+        }
+        text.flush();
+        text.setTransliterator(translit);
+        convertSelectionItem.setLabel(Transliterator.getDisplayName(translit.getID()));
+        
+        addHistory(translit);
+        
+        Transliterator inv;
+        try {
+        	inv = translit.getInverse();
+        } catch (Exception ex) {
+        	inv = null;
+        }
+        if (inv != null) {
+            addHistory(inv);
+            swapSelectionItem.setEnabled(true);
+        } else {
+            swapSelectionItem.setEnabled(false);
+        }
+        System.out.println("Set transliterator: " + translit.getID()
+            + (inv == null ? " and " + inv.getID() : ""));
+    }
+    
+    void addHistory(Transliterator translit) {
+        String name = translit.getID();
+        MenuItem cmi = (MenuItem) historyMap.get(name);
+        if (cmi == null) {
+            cmi = new MenuItem(translit.getDisplayName(name));
+            cmi.addActionListener(new TransliterationListener(name));
+            historyMap.put(name, cmi);
+            historySet.add(cmi);
+            historyMenu.removeAll();
+            Iterator it = historySet.iterator();
+            while (it.hasNext()) {
+                historyMenu.add((MenuItem)it.next());
+            }
+        }
+    }
+    
+    class TransliterationListener implements ActionListener, ItemListener {
+        String name;
+        public TransliterationListener(String name) {
+            this.name = name;
+        }
+        public void actionPerformed(ActionEvent e) {
+            setTransliterator(name, null);
+        }
+        public void itemStateChanged(ItemEvent e) {
+            if (e.getStateChange() == e.SELECTED) {
+                setTransliterator(name, null);
+            } else {
+                setTransliterator("Any-Null", null);
+            }
+        }
+    }
+    
+    class FontActionListener implements ActionListener {
+        String name;
+        public FontActionListener(String name) {
+            this.name = name;
+        }
+        public void actionPerformed(ActionEvent e) {
+            if (DEBUG) System.out.println("Font: " + name);
+            fontName = name;
+            text.setFont(new Font(fontName, Font.PLAIN, fontSize));
+        }
+    }
+    
+    class SizeActionListener implements ActionListener {
+        int size;
+        public SizeActionListener(int size) {
+            this.size = size;
+        }
+        public void actionPerformed(ActionEvent e) {
+            if (DEBUG) System.out.println("Size: " + size);
+            fontSize = size;
+            text.setFont(new Font(fontName, Font.PLAIN, fontSize));
+        }
+    }
+    
+    Set add(Set s, Enumeration enum) {
+        while(enum.hasMoreElements()) {
+            s.add(enum.nextElement());
+        }
+        return s;
+    }
+
+    /**
+     * Get a sorted list of the system transliterators.
+     */
+     /*
+    private static Vector getSystemTransliteratorNames() {
+        Vector v = new Vector();
+        for (Enumeration e=Transliterator.getAvailableIDs();
+             e.hasMoreElements(); ) {
+            v.addElement(e.nextElement());
+        }
+        // Insertion sort, O(n^2) acceptable for small n
+        for (int i=0; i<(v.size()-1); ++i) {
+            String a = (String) v.elementAt(i);
+            for (int j=i+1; j<v.size(); ++j) {
+                String b = (String) v.elementAt(j);
+                if (a.compareTo(b) > 0) {
+                    v.setElementAt(b, i);
+                    v.setElementAt(a, j);
+                    a = b;
+                }
+            }
+        }
+        return v;
+    }
+    */
+
+/*
+    private void setNoTransliterator() {
+        translitItem = noTranslitItem;
+        noTranslitItem.setState(true);
+        handleSetTransliterator(noTranslitItem.getLabel());
+        compound = false;
+        for (int i=0; i<translitMenu.getItemCount(); ++i) {
+            MenuItem it = translitMenu.getItem(i);
+            if (it != noTranslitItem && it instanceof CheckboxMenuItem) {
+                ((CheckboxMenuItem) it).setState(false);
+            }
+        }
+    }
+*/
+/*
+    private void handleAddToCompound(String name) {
+        if (compoundCount < MAX_COMPOUND) {
+            compoundTranslit[compoundCount] = decodeTranslitItem(name);
+            ++compoundCount;
+            Transliterator t[] = new Transliterator[compoundCount];
+            System.arraycopy(compoundTranslit, 0, t, 0, compoundCount);
+            translit = new CompoundTransliterator(t);
+            text.setTransliterator(translit);
+        }
+    }
+*/
+/*
+    private void handleSetTransliterator(String name) {
+        translit = decodeTranslitItem(name);
+        text.setTransliterator(translit);
+    }
+    */
+
+    /**
+     * Decode a menu item that looks like <translit name>.
+     */
+     /*
+    private static Transliterator decodeTranslitItem(String name) {
+        return (name.equals(NO_TRANSLITERATOR))
+            ? null : Transliterator.getInstance(name);
+    }
+    */
+
+    private void handleBatchTransliterate(Transliterator translit) {
+        if (translit == null) {
+            return;
+        }
+
+        int start = text.getSelectionStart();
+        int end = text.getSelectionEnd();
+        ReplaceableString s =
+            new ReplaceableString(text.getText().substring(start, end));
+
+        StringBuffer log = null;
+        if (DEBUG) {
+            log = new StringBuffer();
+            log.append('"' + s.toString() + "\" (start " + start +
+                       ", end " + end + ") -> \"");
+        }
+
+        translit.transliterate(s);
+        String str = s.toString();
+
+        if (DEBUG) {
+            log.append(str + "\"");
+            System.out.println("Batch " + translit.getID() + ": " + log.toString());
+        }
+
+        text.replaceRange(str, start, end);
+        text.select(start, start + str.length());
+    }
+
+    private void handleClose() {
+        helpDialog.dispose();
+        dispose();
+    }
+    
+    /*
+    class InfoDialog extends Dialog {
+        protected Button button;
+        protected TextArea area;
+        protected Dialog me;
+        protected Panel bottom;
+        
+        public TextArea getArea() {
+            return area;
+        }
+        
+        public Panel getBottom() {
+            return bottom;
+        }
+        
+        InfoDialog(Frame parent, String title, String label, String message) {
+            super(parent, title, false);
+            me = this;
+            this.setLayout(new BorderLayout());
+            if (label.length() != 0) {
+                this.add("North", new Label(label));
+            }
+            
+            area = new TextArea(message, 8, 80, TextArea.SCROLLBARS_VERTICAL_ONLY);
+            this.add("Center", area);
+            
+            button = new Button("Hide");
+            button.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    me.hide();
+                }
+            });
+            bottom = new Panel();
+            bottom.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
+            bottom.add(button);
+            this.add("South", bottom);
+            this.pack();
+            addWindowListener(new WindowAdapter() {
+                public void windowClosing(WindowEvent e) {
+                    me.hide();
+                }
+            });
+        }
+    }
+    */
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/DemoApplet.java b/src/com/ibm/icu/dev/demo/translit/DemoApplet.java
new file mode 100755
index 0000000..cc6f06d
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/DemoApplet.java
@@ -0,0 +1,74 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/translit/DemoApplet.java,v $ 
+ * $Date: 2002/02/16 03:05:00 $ 
+ * $Revision: 1.6 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+import java.awt.*;
+import java.awt.event.*;
+import java.applet.*;
+import com.ibm.icu.dev.demo.impl.AppletFrame;
+
+/**
+ * A simple Applet that shows a button.  When pressed, the button
+ * shows the DemoAppletFrame.  This Applet is meant to be embedded
+ * in a web page.
+ *
+ * <p>Copyright (c) IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: DemoApplet.java,v $ $Revision: 1.6 $ $Date: 2002/02/16 03:05:00 $
+ */
+public class DemoApplet extends Applet {
+
+    Demo frame = null;
+    
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    public static void main(String args[]) {
+        final DemoApplet applet = new DemoApplet();
+        new AppletFrame("Transliteration Demo", applet, 640, 480);
+    }
+
+	public void init() {
+
+		Button button = new Button("Transliteration Demo");
+		button.addActionListener(new ActionListener() {
+		    public void actionPerformed(ActionEvent e) {
+		        if (frame == null) {
+                    frame = new Demo(600, 200);
+                    frame.addWindowListener(new WindowAdapter() {
+                        public void windowClosing(WindowEvent we) {
+                            frame = null;
+                        }
+                    });
+                }
+                frame.setVisible(true);
+                frame.toFront();
+		    }
+		});
+
+		add(button);
+
+        Dimension size = button.getPreferredSize();
+        size.width += 10;
+        size.height += 10;
+
+		resize(size);
+	}
+	
+    public void stop() {
+        if (frame != null) {
+            frame.dispose();
+        }
+        frame = null;
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/Differ.java b/src/com/ibm/icu/dev/demo/translit/Differ.java
new file mode 100644
index 0000000..19c883b
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Differ.java
@@ -0,0 +1,177 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/translit/Differ.java,v $
+* $Date: 2002/07/26 20:09:01 $
+* $Revision: 1.1 $
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.demo.translit;
+
+/** VERY Basic Diff program. Compares two sequences of objects fed into it, and
+ * lets you know where they are different.
+ * @author Mark Davis
+ * @version 1.0
+ */
+
+final public class Differ {
+    public static final String copyright =
+      "Copyright (C) 2000, International Business Machines Corporation and others. All Rights Reserved.";
+
+    /**
+     * @param stackSize The size of the largest difference you expect.
+     * @param matchCount The number of items that have to be the same to count as a match
+     */
+    public Differ(int stackSize, int matchCount) {
+        this.STACKSIZE = stackSize;
+        this.EQUALSIZE = matchCount;
+        a = new Object[stackSize+matchCount];
+        b = new Object[stackSize+matchCount];
+    }
+
+    public void add (Object aStr, Object bStr) {
+        addA(aStr);
+        addB(bStr);
+    }
+
+    public void addA (Object aStr) {
+        flush();
+        a[aCount++] = aStr;
+    }
+
+    public void addB (Object bStr) {
+        flush();
+        b[bCount++] = bStr;
+    }
+
+    public int getALine(int offset) {
+        return aLine + maxSame + offset;
+    }
+
+    public Object getA(int offset) {
+        if (offset < 0) return last;
+        if (offset > aTop-maxSame) return next;
+        return a[offset];
+    }
+
+    public int getACount() {
+        return aTop-maxSame;
+    }
+
+    public int getBCount() {
+        return bTop-maxSame;
+    }
+
+    public int getBLine(int offset) {
+        return bLine + maxSame + offset;
+    }
+
+    public Object getB(int offset) {
+        if (offset < 0) return last;
+        if (offset > bTop-maxSame) return next;
+        return b[offset];
+    }
+
+    public void checkMatch(boolean finalPass) {
+        // find the initial strings that are the same
+        int max = aCount;
+        if (max > bCount) max = bCount;
+        int i;
+        for (i = 0; i < max; ++i) {
+            if (!a[i].equals(b[i])) break;
+        }
+        // at this point, all items up to i are equal
+        maxSame = i;
+        aTop = bTop = maxSame;
+        if (maxSame > 0) last = a[maxSame-1];
+        next = "";
+
+        if (finalPass) {
+            aTop = aCount;
+            bTop = bCount;
+            next = "";
+            return;
+        }
+
+        if (aCount - maxSame < EQUALSIZE || bCount - maxSame < EQUALSIZE) return;
+
+        // now see if the last few a's occur anywhere in the b's, or vice versa
+        int match = find (a, aCount-EQUALSIZE, aCount, b, maxSame, bCount);
+        if (match != -1) {
+            aTop = aCount-EQUALSIZE;
+            bTop = match;
+            next = a[aTop];
+            return;
+        }
+        match = find (b, bCount-EQUALSIZE, bCount, a, maxSame, aCount);
+        if (match != -1) {
+            bTop = bCount-EQUALSIZE;
+            aTop = match;
+            next = b[bTop];
+            return;
+        }
+        if (aCount >= STACKSIZE || bCount >= STACKSIZE) {
+            // flush some of them
+            aCount = (aCount + maxSame) / 2;
+            bCount = (bCount + maxSame) / 2;
+            next = "";
+        }
+    }
+
+    /** Convenient utility
+     * finds a segment of the first array in the second array.
+     * @return -1 if not found, otherwise start position in b
+     */
+
+    public int find (Object[] a, int aStart, int aEnd, Object[] b, int bStart, int bEnd) {
+        int len = aEnd - aStart;
+        int bEndMinus = bEnd - len;
+        tryA:
+        for (int i = bStart; i <= bEndMinus; ++i) {
+            for (int j = 0; j < len; ++j) {
+                if (!b[i + j].equals(a[aStart + j])) continue tryA;
+            }
+            return i; // we have a match!
+        }
+        return -1;
+    }
+
+    // ====================== PRIVATES ======================
+
+    private void flush() {
+        if (aTop != 0) {
+            int newCount = aCount-aTop;
+            System.arraycopy(a, aTop, a, 0, newCount);
+            aCount = newCount;
+            aLine += aTop;
+            aTop = 0;
+        }
+
+        if (bTop != 0) {
+            int newCount = bCount-bTop;
+            System.arraycopy(b, bTop, b, 0, newCount);
+            bCount = newCount;
+            bLine += bTop;
+            bTop = 0;
+        }
+    }
+
+    private int STACKSIZE;
+    private int EQUALSIZE;
+
+    private Object [] a;
+    private Object [] b;
+    private Object last = "";
+    private Object next = "";
+    private int aCount = 0;
+    private int bCount = 0;
+    private int aLine = 1;
+    private int bLine = 1;
+    private int maxSame = 0, aTop = 0, bTop = 0;
+
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/InfoDialog.java b/src/com/ibm/icu/dev/demo/translit/InfoDialog.java
new file mode 100644
index 0000000..01b9110
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/InfoDialog.java
@@ -0,0 +1,58 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/translit/InfoDialog.java,v $
+ * $Date: 2002/08/13 21:50:44 $
+ * $Revision: 1.2 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+import java.awt.event.*;
+import java.awt.*;
+public class InfoDialog extends Dialog {
+    protected Button button;
+    protected TextArea area;
+    protected Dialog me;
+    protected Panel bottom;
+        
+    public TextArea getArea() {
+        return area;
+    }
+        
+    public Panel getBottom() {
+        return bottom;
+    }
+        
+    InfoDialog(Frame parent, String title, String label, String message) {
+        super(parent, title, false);
+        me = this;
+        this.setLayout(new BorderLayout());
+        if (label.length() != 0) {
+            this.add("North", new Label(label));
+        }
+            
+        area = new TextArea(message, 8, 80, TextArea.SCROLLBARS_VERTICAL_ONLY);
+        this.add("Center", area);
+            
+        button = new Button("Hide");
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                me.hide();
+            }
+        });
+        bottom = new Panel();
+        bottom.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
+        bottom.add(button);
+        this.add("South", bottom);
+        this.pack();
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                me.hide();
+            }
+        });
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt b/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt
new file mode 100644
index 0000000..aeb19f5
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt
@@ -0,0 +1,28 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt,v $
+# $Date: 2002/07/26 20:09:01 $
+# $Revision: 1.1 $
+#--------------------------------------------------------------------
+@UPPERFILTER@
+ما هي الشفرة الموحدة "يونِكود" ؟
+
+أساسًا، تتعامل الحواسيب فقط مع الأرقام، وتقوم بتخزين الأحرف والمحارف الأخرى بعد أن تُعطي رقما معينا لكل واحد منها. وقبل اختراع "يونِكود"، كان هناك مئات الأنظمة للتشفير وتخصيص هذه الأرقام للمحارف، ولم يوجد نظام تشفير واحد يحتوي على جميع المحارف الضرورية. وعلى سبيل المثال، فإن الاتحاد الأوروبي لوحده، احتوى العديد من الشفرات المختلفة ليغطي جميع اللغات المستخدمة في الاتحاد. وحتى لو اعتبرنا لغة واحدة، كاللغة الإنجليزية، فإن جدول شفرة واحد لم يكف لاستيعاب جميع الأحرف وعلامات الترقيم والرموز الفنية والعلمية الشائعة الاستعمال.
+
+ 
+
+وتجدر الملاحظة أن أنظمة التشفير المختلفة تتعارض مع بعضها البعض. وبعبارة أخرى، يمكن أن يستخدِم جدولي شفرة نفس الرقم لتمثيل محرفين مختلفين، أو رقمين مختلفين لتمثيل نفس المحرف. ولو أخذنا أي جهاز حاسوب، وبخاصة جهاز النادل (server)، فيجب أن تكون لديه القدرة على التعامل مع عدد كبير من الشفرات المختلفة، ويتم تصميمه على هذا الأساس. ومع ذلك، فعندما تمر البيانات عبر أنظمة مختلفة، توجد هناك خطورة لضياع أو تحريف بعض هذه البيانات.
+
+ 
+
+"يونِكود" تغير هذا كليا !
+
+تخصص الشفرة الموحدة "يونِكود" رقما وحيدا لكل محرف في جميع اللغات العالمية، وذلك بغض النظر عن نوع الحاسوب أو البرامج المستخدمة. وقد تم تبني مواصفة "يونِكود" من قبل قادة الصانعين لأنظمة الحواسيب في العالم، مثل شركات آي.بي.إم. (IBM)، أبل (APPLE)، هِيْولِت باكرد (Hewlett-Packard) ، مايكروسوفت (Microsoft)، أوراكِل (Oracle) ، صن (Sun) وغيرها. كما أن المواصفات والمقاييس الحديثة (مثل لغة البرمجة "جافا" "JAVA" ولغة "إكس إم إل" "XML" التي تستخدم لبرمجة الانترنيت) تتطلب استخدام "يونِكود". علاوة على ذلك ، فإن "يونِكود" هي الطريقة الرسمية لتطبيق المقياس العالمي إيزو ١٠٦٤٦  (ISO 10646) .
+
+ 
+
+إن بزوغ مواصفة "يونِكود" وتوفُّر الأنظمة التي تستخدمه وتدعمه، يعتبر من أهم الاختراعات الحديثة في عولمة البرمجيات لجميع اللغات في العالم. وإن استخدام "يونِكود" في عالم الانترنيت سيؤدي إلى توفير كبير مقارنة مع استخدام المجموعات التقليدية للمحارف المشفرة. كما أن استخدام "يونِكود" سيُمكِّن المبرمج من كتابة البرنامج مرة واحدة، واستخدامه على أي نوع من الأجهزة أو الأنظمة، ولأي لغة أو دولة في العالم أينما كانت، دون الحاجة لإعادة البرمجة أو إجراء أي تعديل. وأخيرا، فإن استخدام "يونِكود" سيمكن البيانات من الانتقال عبر الأنظمة والأجهزة المختلفة دون أي خطورة لتحريفها، مهما تعددت الشركات الصانعة للأنظمة واللغات، والدول التي تمر من خلالها هذه البيانات. 
+
+@SET [[[:Arabic:] & [\u0600-\u06FF]] [‎\u060C\u061B\u061F\u0640\u064B-\u0655\u0660-\u066C\u06F0-\u06F9]]
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt b/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt
new file mode 100644
index 0000000..4dac6a3
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt
@@ -0,0 +1,77 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt,v $
+# $Date: 2002/07/26 20:09:01 $
+# $Revision: 1.1 $
+#--------------------------------------------------------------------
+
+Τι είναι το Unicode? 
+
+Η κωδικοσελίδα Unicode προτείνει έναν και μοναδικό αριθμό για κάθε χαρακτήρα, ανεξάρτητα από το λειτουργικό σύστημα, ανεξάρτητα από το λογισμικό, ανεξάρτητα από την γλώσσα.
+
+Οι ηλεκτρονικοί υπολογιστές, σε τελική ανάλυση, χειρίζονται απλώς αριθμούς. Αποθηκεύουν γράμματα και άλλους χαρακτήρες αντιστοιχώντας στο καθένα τους από έναν αριθμό (ονομάζουμε μία τέτοια αντιστοιχία κωδικοσελίδα). Πριν την εφεύρεση του Unicode, υπήρχαν εκατοντάδες διαφορετικές κωδικοσελίδες. Λόγω περιορισμών μεγέθους όμως, σε καμία κωδικοσελίδα δεν χωρούσαν αρκετοί χαρακτήρες: λόγου χάριν, η Ευρωπαϊκή Ένωση χρειαζόταν πλήθος διαφορετικών κωδικοσελίδων για να καλύψει όλες τις γλώσσες των χωρών-μελών της. Ακόμα και για μία και μόνη γλώσσα, όπως π.χ. τα Αγγλικά, μία κωδικοσελίδα δεν επαρκούσε για να καλύψει όλα τα γράμματα, σημεία στίξης και τεχνικά σύμβολα ευρείας χρήσης.
+
+Εκτός αυτού, οι κωδικοσελίδες αυτές διαφωνούσαν μεταξύ τους. Έτσι, δύο κωδικοσελίδες μπορούσαν κάλλιστα να χρησιμοποιούν τον ίδιο αριθμό για δύο διαφορετικούς χαρακτήρες, ή να χρησιμοποιούν διαφορετικούς αριθμούς για τον ίδιο χαρακτήρα. Κάθε υπολογιστής (και ιδίως εάν ήταν διακομιστής) έπρεπε να υποστηρίζει πλήθος διαφορετικών κωδικοσελίδων· ταυτόχρονα κάθε φορά που δεδομένα μεταφέρονταν μεταξύ διαφορετικών κωδικοσελίδων ή λειτουργικών συστημάτων, τα δεδομένα αυτά κινδύνευαν να αλλοιωθούν.
+
+Το Unicode αλλάζει αυτή την κατάσταση!
+Το Unicode προτείνει έναν μοναδικό αριθμό για κάθε χαρακτήρα, ανεξάρτητα από το λειτουργικό σύστημα, ανεξάρτητα από το λογισμικό, ανεξάρτητα από την γλώσσα. Την κωδικοσελίδα Unicode έχουν ασπασθεί κορυφαίοι παράγοντες του χώρου των λογισμικών όπως οι: Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys και πολλοί άλλοι. Το Unicode απαιτούν πολλές σύγχρονες τυποποιήσεις όπως οι: XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, κ.λπ., και είναι η επίσημη μέθοδος εφαρμογής της τυποποίησης ISO/IEC 10646. Υποστηρίζεται από πολλά λειτουργικά συστήματα, όλους τους σύχρονους περιηγητές Διαδικτύου, και πολλά άλλα προϊόντα. Η εμφάνιση της κωδικοσελίδας Unicode, και η διαθεσιμότητα εργαλείων που να την υποστηρίζουν είναι από τις σημαντικότερες εξελίξεις της πρόσφατης τεχνολογίας λογισμικών.
+
+Η ενσωμάτωση του Unicode σε εφαρμογές πελάτη-διακομιστή ή "multi-tiered" προσφέρει σημαντικές οικονομίες σε σχέση με τις ως τώρα υπάρχουσες κωδικοσελίδες. Χάρις στο Unicode ένα και μόνο προϊόν ή μία και μόνη τοποθεσία Διαδικτύου μπορεί να επικοινωνεί με διάφορα λειτουργικά συστήματα, σε διάφορες γλώσσες και χώρες, χωρίς την ανάγκη επαναπρογραμματισμού. Γίνεται έτσι δυνατή η μεταφορά δεδομένων ανάμεσα σε πλήθος διαφορετικών συστημάτων δίχως κίνδυνο αλλοίωσης.
+
+Σχετικά με το Κονσόρτιουμ Unicode
+Tο Κονσόρτιουμ Unicode είναι ένας κοινωφελής οργανισμός· ιδρύθηκε για να αναπτύξει, να επεκτείνει και να μεταδώσει την χρήση της κωδικοσελίδας Unicode που καθορίζει την αναπαράσταση κειμένου σε σύγχρονα λογισμικά προϊόντα και τυποποιήσεις. Μεγάλος αριθμός εταιρειών και οργανισμών της διεθνούς βιομηχανίας υπολογιστών και λογισμικών είναι μέλη του Κονσόρτιουμ Unicode. Το Κονσόρτιουμ χρηματοδοτείται μόνο από τις συνδρομές των μελών του. Μέλος του κονσόρτιουμ Unicode μπορεί να γίνει οιοσδήποτε (οργανισμός, εταιρεία ή ιδιώτης, οπουδήποτε στον κόσμο) που να υποστηρίζει την κωδικοσελίδα Unicode και να επιθυμεί να συνδράμει στην επέκταση και στην εφαρμογή της.
+
+Για περαιτέρω πληροφορίες, βλέπε τις εξής ιστοσελίδες: Γλωσσάρι, Δείγματα προϊόντων συμβατών με το Unicode, Τεχνική Εισαγωγή και Χρήσιμες πηγές πληροφοριών.
+
+(ANCIENT)
+
+ἄνδρα μοι ἔννεπε, μοῦσα, πολύτροπον, ὃς μάλα πολλὰ
+πλάγχθη, ἐπεὶ Τροίης ἱερὸν πτολίεθρον ἔπερσεν:
+πολλῶν δ’ ἀνθρώπων ἴδεν ἄστεα καὶ νόον ἔγνω,
+πολλὰ δ’ ὅ γ’ ἐν πόντῳ πάθεν ἄλγεα ὃν κατὰ θυμόν,
+ἀρνύμενος ἥν τε ψυχὴν καὶ νόστον ἑταίρων.
+ἀλλ’ οὐδ’ ὣς ἑτάρους ἐρρύσατο, ἱέμενός περ:
+αὐτῶν γὰρ σφετέρῃσιν ἀτασθαλίῃσιν ὄλοντο,
+νήπιοι, οἳ κατὰ βοῦς Ὑπερίονος Ἠελίοιο
+ἤσθιον: αὐτὰρ ὁ τοῖσιν ἀφείλετο νόστιμον ἦμαρ.
+τῶν ἁμόθεν γε, θεά, θύγατερ Διός, εἰπὲ καὶ ἡμῖν.
+*
+ἔνθ’ ἄλλοι μὲν πάντες, ὅσοι φύγον αἰπὺν ὄλεθρον,
+οἴκοι ἔσαν, πόλεμόν τε πεφευγότες ἠδὲ θάλασσαν:
+τὸν δ’ οἶον νόστου κεχρημένον ἠδὲ γυναικὸς
+νύμφη πότνι’ ἔρυκε Καλυψὼ δῖα θεάων
+ἐν σπέσσι γλαφυροῖσι, λιλαιομένη πόσιν εἶναι.
+ἀλλ’ ὅτε δὴ ἔτος ἦλθε περιπλομένων ἐνιαυτῶν,
+τῷ οἱ ἐπεκλώσαντο θεοὶ οἶκόνδε νέεσθαι
+εἰς Ἰθάκην, οὐδ’ ἔνθα πεφυγμένος ἦεν ἀέθλων
+καὶ μετὰ οἷσι φίλοισι. θεοὶ δ’ ἐλέαιρον ἅπαντες
+νόσφι Ποσειδάωνος: ὁ δ’ ἀσπερχὲς μενέαινεν
+ἀντιθέῳ Ὀδυσῆι πάρος ἣν γαῖαν ἱκέσθαι.
+*
+ἀλλ’ ὁ μὲν Αἰθίοπας μετεκίαθε τηλόθ’ ἐόντας,
+Αἰθίοπας τοὶ διχθὰ δεδαίαται, ἔσχατοι ἀνδρῶν,
+οἱ μὲν δυσομένου Ὑπερίονος οἱ δ’ ἀνιόντος,
+ἀντιόων ταύρων τε καὶ ἀρνειῶν ἑκατόμβης.
+ἔνθ’ ὅ γ’ ἐτέρπετο δαιτὶ παρήμενος: οἱ δὲ δὴ ἄλλοι
+Ζηνὸς ἐνὶ μεγάροισιν Ὀλυμπίου ἁθρόοι ἦσαν.
+τοῖσι δὲ μύθων ἦρχε πατὴρ ἀνδρῶν τε θεῶν τε:
+μνήσατο γὰρ κατὰ θυμὸν ἀμύμονος Αἰγίσθοιο,
+τόν ῥ’ Ἀγαμεμνονίδης τηλεκλυτὸς ἔκταν’ Ὀρέστης:
+τοῦ ὅ γ’ ἐπιμνησθεὶς ἔπε’ ἀθανάτοισι μετηύδα:
+*
+“ὢ πόποι, οἷον δή νυ θεοὺς βροτοὶ αἰτιόωνται:
+ἐξ ἡμέων γάρ φασι κάκ’ ἔμμεναι, οἱ δὲ καὶ αὐτοὶ
+σφῇσιν ἀτασθαλίῃσιν ὑπὲρ μόρον ἄλγε’ ἔχουσιν,
+ὡς καὶ νῦν Αἴγισθος ὑπὲρ μόρον Ἀτρεί̈δαο
+γῆμ’ ἄλοχον μνηστήν, τὸν δ’ ἔκτανε νοστήσαντα,
+εἰδὼς αἰπὺν ὄλεθρον, ἐπεὶ πρό οἱ εἴπομεν ἡμεῖς,
+Ἑρμείαν πέμψαντες, ἐύσκοπον ἀργεϊφόντην,
+μήτ’ αὐτὸν κτείνειν μήτε μνάασθαι ἄκοιτιν:
+ἐκ γὰρ Ὀρέσταο τίσις ἔσσεται Ἀτρεί̈δαο,
+ὁππότ’ ἂν ἡβήσῃ τε καὶ ἧς ἱμείρεται αἴης.
+ὣς ἔφαθ’ Ἑρμείας, ἀλλ’ οὐ φρένας Αἰγίσθοιο
+πεῖθ’ ἀγαθὰ φρονέων: νῦν δ’ ἁθρόα πάντ’ ἀπέτισεν.”
+
+@SET [[[:Greek:]&[\u0370-\u03E1 \u03F0-\u03FF]] [\:-;?\u00B7\u037E\u0387]]
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt b/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt
new file mode 100644
index 0000000..2d48065
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt
@@ -0,0 +1,30 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt,v $
+# $Date: 2002/07/26 20:09:01 $
+# $Revision: 1.1 $
+#--------------------------------------------------------------------
+@UPPERFILTER@
+什么是Unicode(统一码)?
+Unicode给每个字符提供了一个唯一的数字,
+不论是什么平台,
+不论是什么程序,
+不论是什么语言。
+
+基本上,计算机只是处理数字。它们指定一个数字,来储存字母或其他字符。在创造Unicode之前,有数百种指定这些数字的编码系统。没有一个编码可以包含足够的字符:例如,单单欧州共同体就需要好几种不同的编码来包括所有的语言。即使是单一种语言,例如英语,也没有哪一个编码可以适用于所有的字母,标点符号,和常用的技术符号。
+
+这些编码系统也会互相冲突。也就是说,两种编码可能使用相同的数字代表两个不同的字符,或使用不同的数字代表相同的字符。任何一台特定的计算机(特别是服务器)都需要支持许多不同的编码,但是,不论什么时候数据通过不同的编码或平台之间,那些数据总会有损坏的危险。
+
+Unicode正在改变所有这一切!
+Unicode给每个字符提供了一个唯一的数字,不论是什么平台,不论是什么程序,不论什么语言。Unicode标准已经被这些工业界的领导们所采用,例如:Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys和其它许多公司。最新的标准都需要Unicode,例如XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML等等,并且,Unicode是实现ISO/IEC 10646的正规方式。许多操作系统,所有最新的浏览器和许多其他产品都支持它。Unicode标准的出现和支持它工具的存在,是近来全球软件技术最重要的发展趋势。
+
+将Unicode与客户服务器或多层应用程序和网站结合,比使用传统字符集节省费用。Unicode使单一软件产品或单一网站能够贯穿多个平台,语言和国家,而不需要重建。它可将数据传输到许多不同的系统,而无损坏。
+
+关于Unicode学术学会
+Unicode学术学会是一个非盈利的组织,是为发展,扩展和推广使用Unicode标准而建立的,Unicode学术学会设立了现代软件产品和标准文本的表示法。学术学会的会员代表了广泛领域的计算机和资讯工业的公司和组织。学术学会只由会员提供资金。Unicode学术学会的会员资格开放给世界上任何支持Unicode标准和希望协助其扩展和执行的组织及个人。
+
+欲知更多信息,请参阅术语词汇表,Unicode产品样本,技术简介和参考资料。
+
+Chinese translation by  黎國珍, Xerox
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt b/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt
new file mode 100644
index 0000000..9bbe914
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt
@@ -0,0 +1,30 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt,v $
+# $Date: 2002/07/26 20:09:01 $
+# $Revision: 1.1 $
+#--------------------------------------------------------------------
+@UPPERFILTER@
+מה זה יוניקוד (Unicode)?
+יוניקוד מקצה מספר ייחודי לכל תו, 
+לא משנה על איזו פלטפורמה, 
+לא משנה באיזו תוכנית, 
+ולא משנה באיזו שפה.
+
+באופן בסיסי, מחשבים עוסקים רק במספרים. הם מאחסנים אותיות ותווים אחרים על-ידי הקצאת מספר לכל אחד מהם. בטרם הומצא היוניקוד, היו מאות מערכות קידוד שונות להקצאת המספרים הללו. אף לא אחת מהן יכלה להכיל כמות תווים מספקת. לדוגמא: רק לאיחוד האירופאי נדרשים כמה סוגי קידודים שונים על מנת לכסות את כל השפות המדוברות בו. יתירה מזאת אף לשפה בודדת, כמו אנגלית למשל, לא היה די במערכת קידוד אחת בעבור כל האותיות, סימני הפיסוק והסמלים הטכניים שבשימוש שוטף. 
+
+מערכות קידוד אלו אף סותרות זו את זו. כלומר, שני קידודים יכולים להשתמש באותו מספר לשני תוים נבדלים, או להשתמש במספרים שונים לאותו תו. על כל מחשב (ובמיוחד שרתים) לתמוך במספר רב של מערכות קידוד שונות; אולם כל אימת שנתונים עוברים בין מערכות קידוד או פלטפורמות שונות קיים הסיכון שייפגמו.
+
+יוניקוד משנה את כל זה!
+יוניקוד מקצה מספר ייחודי לכל תו, ללא תלות בפלטפורמה, בתוכנית, או בשפה. תקן היוניקוד אומץ על-ידי המובילים בתעשייה כמו Apple‏, HP‏, IBM‏, JustSystem‏, Microsoft‏, Oracle‏, SAP‏, Sun‏, Sybase‏, Unisys‏ ורבים אחרים. יוניקוד נדרש על-ידי תקנים מודרניים כמו XML‏, Java‏, ECMAScript (JavaScript)‎‏, LDAP‏, CORBA 3.0‎‏, WML‏ וכדומה, ומהווה למעשה את היישום הרשמי של תקן ISO/IEC 10646. הוא נתמך על ידי מערכות הפעלה רבות, כל הדפדפנים החדישים, ומוצרים רבים אחרים. הופעת תקן היוניקוד וזמינות הכלים התומכים בו נמנות עם המגמות הכלל-עולמיות החשובות ביותר, אשר מסתמנות לאחרונה בטכנולוגיית התוכנה.
+
+שילוב יוניקוד ביישומי שרת-לקוח או ביישומים רבי-שכבות ובאתרי אינטרנט מאפשר חיסכון ניכר בעלויות לעומת השימוש בסדרות התווים המסורתיות. הודות ליוניקוד, מוצר תוכנה אחד או אתר יחיד ברשת יכול להרחיב את יעדיו למגוון פלטפורמות, ארצות ושפות ללא צורך בשינויים מרחיקים. יוניקוד מאפשר מעבר נתונים דרך מערכות רבות ושונות מבלי שייפגמו.
+
+פרטים אודות הקונסורציום של יוניקוד (Unicode Consortium) 
+הקונסורציום של יוניקוד הוא ארגון ללא מטרת רווח שנוסד כדי לפתח, להרחיב ולקדם את השימוש בתקן יוניקוד, אשר מגדיר את ייצוג הטקסט במוצרי תוכנה ותקנים מודרניים. חברים בקונסורציום מגוון רחב של תאגידים וארגונים בתעשיית המחשבים ועיבוד המידע. הקונסורציום ממומן על-ידי דמי-חבר בלבד. החברות בקונסורציום יוניקוד פתוחה לארגונים ולאנשים פרטיים, בכל רחבי העולם, אשר תומכים בתקן יוניקוד ומעוניינים לסייע בהתפתחותו והטמעתו.
+
+למידע נוסף, ראה מילון מונחים, רשימה חלקית של מוצרים מותאמים ליוניקוד, מבוא טכני ו- חומרי עזר [קישורים באנגלית].
+
+@SET [[:Hebrew:] [\u05B0-\u05B9\u05BB-\u05BC\u05C1-\u05C2\u2135-\u2138]]
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html b/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html
new file mode 100644
index 0000000..d6601df
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html
@@ -0,0 +1,156 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>New Transliteration Test Files</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+
+<h2>New Transliteration Test Files</h2>
+<p>The Test_*.html files show the transliteration of characters for given
+languages. The sample for each language consists of &quot;What Is Unicode&quot;
+in Thai, followed by other available text. The text is broken apart into
+sentences for ease of viewing (note: we know of some problems with the sentence
+rules for Japanese and Chinese). The left column is the original, and the right
+is the romanization. The program also converts back to the original script. If
+there is a discrepancy between the source and the reverse transformation, that
+is indicated by making the background <font color="#FF0000"><b>red</b></font>
+from that point on.</p>
+<blockquote>
+  <p><i><b>Note: </b>If you have some more text that you would like added to the
+  sample, just let me know. I am particularly interested in name lists, since
+  they are the typical source.</i></p>
+</blockquote>
+<h3>Standards</h3>
+<p>The goal is to follow a given standard, such as ISO* or UNGEGN wherever
+possible. We also need to round-trip, so in some cases, that means adding some
+additional accent marks to disambiguate characters. And often the source
+standards are missing some characters, such as characters with combining Hamzas
+in Arabic. Remember that the goal for these is transliteration (unambiguously
+representing all the letters in the original), not transcription (representing
+the best pronunciation).</p>
+<ul>
+  <li><b><a href="Test_Thai-Latin.html">Thai</a>:</b> ISO 11940 &lt; <a href="http://homepage.mac.com/sirbinks/pdf/Thai.r2.pdf">http://homepage.mac.com/sirbinks/pdf/Thai.r2.pdf</a>
+    &gt; plus a few items:
+    <ul>
+      <li>Accents may be added to the Latin for disambiguation.</li>
+      <li>In the next release, we'd like to do the UNGEGN version &lt; <a href="http://www.eki.ee/wgrs/rom1_th.pdf">http://www.eki.ee/wgrs/rom1_th.pdf</a>
+        &gt; which is probably more useful (and readable), and follows more
+        closely the Thai standard.</li>
+      <li>Spaces are provided at word-breaks, using the Thai BreakIterator.</li>
+      <li>An inherent vowel (&#7885;) is added, as in UNGEGN. The dot is for
+        disambiguation.
+        <ul>
+          <li><i>Note: if the inherent vowel positions cannot be algorithmically
+            determined, let me know and I will remove them.</i></li>
+        </ul>
+      </li>
+    </ul>
+  </li>
+  <li><b><a href="Test_Arabic-Latin.html">Arabic</a>: </b>Generally follows
+    UNGEGN &lt; <a href="http://www.eki.ee/wgrs/rom1_ar.pdf">http://www.eki.ee/wgrs/rom1_ar.pdf</a>
+    &gt;
+    <ul>
+      <li>Accents may be added to the Latin for disambiguation.</li>
+      <li>Occasionally deviates in the direction of ISO 233 &lt; <a href="http://homepage.mac.com/sirbinks/pdf/Arabic.pdf">http://homepage.mac.com/sirbinks/pdf/Arabic.pdf</a>
+        &gt;
+        <ul>
+          <li>with underdot instead of cedilla for letter like SAD, since those
+            are explicitly in Unicode for transliteration of Arabic</li>
+          <li>adding extra non-Arabic-language letters, like PEH. Note: not all
+            extended Arabic characters are handled yet.</li>
+        </ul>
+      </li>
+      <li>Does <i>not</i> do assimilation of &quot;al&quot;, nor hyphenation of
+        it.
+        <ul>
+          <li>While it could be done, we need to determine whether a prefix
+            &quot;al&quot; could occur other than as the definite article (since
+            no space is used).</li>
+        </ul>
+      </li>
+      <li>This is transliteration. For <i>transcription</i> one would want an
+        engine that added points appropriately to the Hebrew.</li>
+    </ul>
+  </li>
+  <li><b><a href="Test_Hebrew-Latin.html">Hebrew</a></b><b>: </b>Generally
+    follows UNGEGN &lt; <a href="http://www.eki.ee/wgrs/rom1_he.pdf">http://www.eki.ee/wgrs/rom1_he.pdf</a>
+    &gt;, with some exceptions:
+    <ul>
+      <li>Accents may be added to the Latin for disambiguation.</li>
+      <li>Combinations of dagesh, shin/sin dot that would produce different
+        letters are not yet called out.</li>
+      <li>Note that the final forms are not preserved. Thus, when going from
+        Latin to Hebrew, a character is given final form depending on its
+        position.
+        <ul>
+          <li>E.g. &#1502;&#1501;&#1502;&#1501; =&gt; mmmm =&gt;
+            &#1502;&#1502;&#1502;&#1501;</li>
+        </ul>
+      </li>
+      <li>This is transliteration. For <i>transcription</i> one would want an
+        engine that added points appropriately to the Hebrew.</li>
+      <li>See also &lt; <a href="http://homepage.mac.com/sirbinks/pdf/Hebrew.r1.pdf">http://homepage.mac.com/sirbinks/pdf/Hebrew.r1.pdf</a>
+        &gt; for the ISO version. The Chicago Manual of Style has a clear table
+        of mappings for the vowel marks.</li>
+    </ul>
+  </li>
+  <li><b><a href="Test_Han-Latin.html">Han</a>:</b> Uses the <a href="http://www.mandarintools.com/cedict.html">CEDICT</a>
+    data plus Unicode Unihan <i>kMandarin</i> values for pinyin. Doesn't
+    roundtrip!
+    <ul>
+      <li><i>Note: </i>the Chinese pronunciation of Han characters varies by
+        context and grammar, though nowhere near as much a Japanese.
+        <ul>
+          <li>Ideally we'd have an underlying engine for this. In 2.4 we will
+            have a plug-in interface so that people could add one, such as the
+            IBM engine.</li>
+          <li>The data from CEDICT and Unihan don't list the most frequent
+            choice first, so we will be updating that.</li>
+        </ul>
+      </li>
+    </ul>
+  </li>
+  <li><a href="Test_Greek-Latin_UNGEGN.html"><b>Greek/UNGEGN</b></a>: Uses a
+    modern Greek transliteration, based on the UNGEGN rules at &lt; <a href="http://www.eki.ee/wgrs/rom1_el.pdf">http://www.eki.ee/wgrs/rom1_el.pdf</a>
+    &gt;. This version will not roundtrip ancient Greek.</li>
+  <li><a href="Test_Greek-Latin.html"><b>Greek</b></a>: Uses a classic Greek
+    transliteration. This version will not roundtrip modern Greek.</li>
+</ul>
+<h3><b>Notes</b></h3>
+<ol>
+  <li>For readability, the files have a few other things besides just the
+    transliteration:
+    <ul>
+      <li>The first word of the sentences are titlecased, as are names (where we
+        have a name-list, such as in Thai).</li>
+      <li>The Latin in the original is mapped to the private-use zone before
+        conversion, and then again after conversion. This does have the downside
+        that any rules (such as in Han) that need to know the context (e.g. for
+        inserting spaces or capitalization) will gum up a little bit. This is
+        just an artifact of the test display.</li>
+    </ul>
+  </li>
+  <li>I don't think that ISO 11940 is a particularly good way to romanize, but
+    it is at least complete and a standard. So what I am interested in just for
+    now is whether the samples in the file follow it (with the above
+    exceptions).</li>
+  <li>Some of the files also have a set of characters at the end, one character
+    per row, with a following row listing the hex and name.</li>
+  <li>The source rules for all of these is in the following URL. So if you want
+    to know the details of how the characters are handled, that is the place to
+    look.
+    <ul>
+      <li>&nbsp;<a href="http://oss.software.ibm.com/cvs/icu4j/icu4j/src/com/ibm/icu/impl/data/">http://oss.software.ibm.com/cvs/icu4j/icu4j/src/com/ibm/icu/impl/data/</a><br>
+      </li>
+    </ul>
+  </li>
+</ol>
+
+</body>
+
+</html>
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt b/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt
new file mode 100644
index 0000000..68ff80e
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt
@@ -0,0 +1,73 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt,v $
+# $Date: 2002/07/26 20:09:01 $
+# $Revision: 1.1 $
+#--------------------------------------------------------------------
+@UPPERFILTER@
+Unicode คืออะไร?
+Unicode กำหนดหมายเลขเฉพาะสำหรับทุกอักขระ
+โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด
+ไม่ขึ้นกับว่าจะเป็นโปรแกรมใด
+และไม่ว่าจะเป็นภาษาใด
+
+โดยพื้นฐานแล้ว, คอมพิวเตอร์จะเกี่ยวข้องกับเรื่องของตัวเลข. คอมพิวเตอร์จัดเก็บตัวอักษรและอักขระอื่นๆ โดยการกำหนดหมายเลขให้สำหรับแต่ละตัว. ก่อนหน้าที่๊ Unicode จะถูกสร้างขึ้น, ได้มีระบบ encoding อยู่หลายร้อยระบบสำหรับการกำหนดหมายเลขเหล่านี้. ไม่มี encoding ใดที่มีจำนวนตัวอักขระมากเพียงพอ: ยกตัวอย่างเช่น, เฉพาะในกลุ่มสหภาพยุโรปเพียงแห่งเดียว ก็ต้องการหลาย encoding ในการครอบคลุมทุกภาษาในกลุ่ม. หรือแม้แต่ในภาษาเดี่ยว เช่น ภาษาอังกฤษ ก็ไม่มี encoding ใดที่เพียงพอสำหรับทุกตัวอักษร, เครื่องหมายวรรคตอน และสัญลักษณ์ทางเทคนิคที่ใช้กันอยู่ทั่วไป. 
+
+ระบบ encoding เหล่านี้ยังขัดแย้งซึ่งกันและกัน. นั่นก็คือ, ในสอง encoding สามารถใช้หมายเลขเดียวกันสำหรับตัวอักขระสองตัวที่แตกต่างกัน,หรือใช้หมายเลขต่างกันสำหรับอักขระตัวเดียวกัน. ในระบบคอมพิวเตอร์ (โดยเฉพาะเซิร์ฟเวอร์) ต้องมีการสนับสนุนหลาย encoding; และเมื่อข้อมูลที่ผ่านไปมาระหว่างการเข้ารหัสหรือแพล็ตฟอร์มที่ต่างกัน, ข้อมูลนั้นจะเสี่ยงต่อการผิดพลาดเสียหาย.
+
+Unicode จะเปลี่ยนแปลงสิ่งเหล่านั้นทั้งหมด!
+Unicode กำหนดหมายเลขเฉพาะสำหรับแต่ละอักขระ, โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด, ไม่ขึ้นกับว่าจะเป็นโปรแกรมใดและไม่ว่าจะเป็นภาษาใด. มาตรฐาน Unicode ได้ถูกนำไปใช้โดยผู้นำในอุตสาหกรรม เช่น Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys และอื่นๆ อีกมาก. Unicode เป็นสิ่งที่จำเป็นสำหรับมาตรฐานใหม่ๆ เช่น XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML ฯลฯ., และเป็นแนวทางอย่างเป็นทางการในการทำ ISO/IEC 10646. Unicode ได้รับการสนับสนุนในระบบปฏิบัติการจำนวนมาก, บราวเซอร์ใหม่ๆ ทกตัว, และผลิตภัณฑ์อื่นๆ อีกมาก. การเกิดขึ้นของ Unicode Standard และทูลส์ต่างๆ ที่มีในการสนับสนุน Unicode, เป็นหนึ่งในแนวโน้มทางเทคโนโลยีซอฟต์แวร์ระดับโลกที่มีความสำคัญที่สุด.
+
+การรวม Unicode เข้าไปในระบบไคลเอ็นต์-เซิร์ฟเวอร์ หรือแอ็พพลิเคชันแบบ multi-tiered และเว็บไซต์ จะทำให้เกิดการประหยัดค่าใช้จ่ายมากกว่าการใช้ชุดอักขระแบบเดิม. Unicode ทำให้ผลิตภัณฑ์ซอฟต์แวร์หนึ่งเดียว หรือเว็บไซต์แห่งเดียว รองรับได้หลายแพล็ตฟอร์ม, หลายภาษาและหลายประเทศโดยไม่ต้องทำการรื้อปรับระบบ. Unicode ยังทำให้ข้อมูลสามารถเคลื่อนย้ายไปมาในหลายๆ ระบบโดยไม่เกิดความผิดพลาดเสียหาย.
+
+เกี่ยวกับ Unicode Consortium
+Unicode Consortium เป็นองค์กรไม่แสวงหากำไรที่ก่อตั้งขึ้นเพื่อพัฒนา, ขยายและส่งเสริมการใช้ Unicode Standard, ซึ่งกำหนดรูปแบบการแทนค่าของข้อความในผลิตภัณฑ์ซอฟต์แวร์และมาตรฐานใหม่ๆ. สมาชิกของสมาคมเป็นตัวแทนจากบริษัทและองค์กรในอุตสาหกรรมคอมพิวเตอร์และการประมวลผลสารสนเทศ. สมาคมได้รับการสนับสนุนทางการเงินผ่านทางค่าธรรมเนียมของการเป็นสมาชิกเท่านั้น. สมาชิกภาพของ Unicode Consortium เปิดกว้างสำหรับองค์กรหรือบุคคลใดๆ ในโลกที่ต้องการสนับสนุน Unicode Standard และช่วยเหลือการขยายตัวและการนำ Unicode ไปใช้งาน. 
+
+สำหรับข้อมูลเพิ่มเติม, ให้ดูที่ Glossary, Sample Unicode-Enabled Products, Technical Introduction และ Useful Resources.
+
+เป็นมนุษย์สุดประเสริฐเลิศคุณค่า
+กว่าบรรดาฝูงสัตว์เดรัจฉาน
+จงฝ่าฟันพัฒนาวิชาการ
+อย่าล้างผลาญฤๅเข่นฆ่าบีฑาใคร
+ไม่ถือโทษโกรธแช่งซัดฮึดฮัดด่า
+หัดอภัยเหมือนกีฬาอัชฌาสัย
+ปฏิบัติประพฤติกฎกำหนดใจ
+พูดจาให้จ๊ะ ๆ จ๋า ๆ น่าฟังเอยฯ
+
+แหล่งที่มา : สมาคมคอมพิวเตอร์แห่งประเทศไทย
+
+ฅนฃวด kho khuat and kho khon
+@TITLECASE@
+ก๊กเฮง แซ่แต้
+กชกร ศราทธทัต
+กติกา อังคสุภณ
+กนก ธรรมประทีป
+กนก วงศ์ทองศรี
+กนกกร ช้างเย็นฉ่ำ
+กนกฉัตร์ ถาวรนันท์
+กนกนวล โปษยะนันทน์
+กนกพร คมคาย
+กนกพร ตีรเลิศพานิช
+กนกพร พันทร
+กนกพร ศรีบัณฑิต
+กนกพร อติวรรณาพัฒน์
+กนกพรรณ ศรีวนาภิรมย์
+กนกรัตน์ เกียรติยิ่งอังศุลี
+กนกรัตน์ สุธรรมพิทักษ์
+กนกวรรณ คงคาประเสริฐ
+กนกวรรณ แซ่เตียว
+กนกวรรณ บุญประเสริฐ
+กนกวรรณ รักทรัพย์
+กนกวรรณ สัจจพงษ์
+กนกวรรณ อุ้ยวงศ์ไพศาล
+กนกศักดิ์ ยิ่งยง
+กนกแก้ว กรสมิต
+กนิษฐา ทนุถนอมราษฎร์
+กนิษฐา หวังวิบูลย์กิจ
+กมล กาญจนโรจน์
+กมล คัมภีร์
+กมล เจตน์มงคลรัตน์
+กมล ชูตระกูลธรรม
+@SET [[:thai:] \u0E01-\u0E3A\u0E40-\u0E5B]
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java b/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java
new file mode 100755
index 0000000..7d66972
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java
@@ -0,0 +1,263 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java,v $ 
+ * $Date: 2002/03/19 00:17:27 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.text.*;
+import java.awt.datatransfer.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.demo.impl.*;
+
+/**
+ * A subclass of {@link DumbTextComponent} that passes key events through
+ * a {@link com.ibm.icu.text.Transliterator}.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: TransliteratingTextComponent.java,v $ $Revision: 1.5 $ $Date: 2002/03/19 00:17:27 $
+ */
+public class TransliteratingTextComponent extends DumbTextComponent {
+
+    private static boolean DEBUG = false;
+
+    private Transliterator translit = null;
+    
+    // NOTE: DISABLE THE START AND CURSOR UNTIL WE CAN GET IT TO WORK AT ALL
+
+    // Index into getText() where the start of transliteration is.
+    // As we commit text during transliteration, we advance
+    // this.
+    //private int start = 0;
+
+    // Index into getText() where the cursor is; cursor >= start
+    //private int cursor = 0;
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Constructor.
+     */
+    public TransliteratingTextComponent() {
+        super();
+        /*
+        addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                // We get an ActionEvent only when the selection changes
+                resetTransliterationStart();
+            }
+        });
+        */
+    }
+
+    /**
+     * {@link DumbTextComponent} API.  Framework method that is called
+     * when a <code>KeyEvent</code> is received.  This implementation
+     * runs the new character through the current
+     * <code>Transliterator</code>, if one is set, and inserts the
+     * transliterated text into the buffer.
+     */
+	protected void handleKeyTyped(KeyEvent e) {
+        char ch = e.getKeyChar();
+        
+        if (translit == null) {
+            setKeyStart(-1);
+            super.handleKeyTyped(e);
+            return;
+        }
+
+        transliterate(ch, false);
+    }
+    
+    public void flush() {
+        if (translit != null) transliterate('\uFFFF', true);
+    }
+    
+    
+    protected void transliterate(char ch, boolean flush) {
+
+        // ------------------------------------------------------------
+        // The following case motivates the two lines that recompute
+        // start and cursor below.
+
+        //      "     "   
+        // a b c q r|s t u m m
+        // 0 1 2 3 4 5 6 7 8 9
+        //       0 1 2
+
+        // start 3, cursor 5, sel 6 -> { 0, 3, 2 }
+        // : new int[] { 0, sel - start, cursor - start };
+        
+        // sz>99|9
+
+        //      "     {   "
+        // a b c q r 9 9|9 t u m m
+        // 0 1 2 3 4 5 6 7 8 9 a b
+        //       0 1 2 3 4
+
+        // { 3, 5, 4 } -> start 6, cursor 7, sel 8
+        // : start += index[0];
+        // : cursor = start + index[2] - index[0];
+        // ------------------------------------------------------------
+
+        // Need to save start because calls to replaceRange will update
+        // start and cursor.
+        //int saveStart = start;
+
+        int end = flush ? getSelectionEnd() : getSelectionStart();
+        String sourceText = getText().substring(0,end);
+        ReplaceableString buf = new ReplaceableString(sourceText);
+        /*buf.replace(0, 1, getText().substring(start,
+                                              getSelectionStart()));*/
+
+        Transliterator.Position index = new Transliterator.Position();
+        index.contextLimit = buf.length();
+        index.contextStart = 0;
+        index.start = getKeyStart();
+        if (index.start == -1) index.start = getSelectionStart();
+        index.limit = buf.length();
+
+        StringBuffer log = null;
+        if (DEBUG) {
+            System.out.println("Transliterator: " + translit.getID());
+            System.out.println("From:\t" + '"' + buf.toString() + '"'
+                + "; {cs: " + index.contextStart
+                + ", s: " + index.start
+                + ", l: " + index.limit
+                + ", cl: " + index.contextLimit 
+                + "}" + "; '" + ch + "'"
+                + " " + getKeyStart()
+            );
+        }
+
+        if (flush) {
+            translit.finishTransliteration(buf, index);
+        } else {
+            translit.transliterate(buf, index, ch);
+        }
+        
+        if (DEBUG) {
+            System.out.println("To:\t" + '"' + buf.toString() + '"'
+                + "; {cs: " + index.contextStart
+                + ", s: " + index.start
+                + ", l: " + index.limit
+                + ", cl: " + index.contextLimit 
+                + "}"
+                );
+            System.out.println();
+        }
+        /*
+        buf.replace(buf.length(), buf.length(), String.valueOf(ch));
+        translit.transliterate(buf);
+        */
+        
+        String result = buf.toString();
+        //if (result.equals(sourceText + ch)) return;
+        
+        replaceRange(result, 0, getSelectionEnd());
+        setKeyStart(index.start);
+        
+        // At this point start has been changed by the callback to
+        // resetTransliteratorStart() via replaceRange() -- so use our
+        // local copy, saveStart.
+
+        // The START index is zero-based.  On entry to transliterate(),
+        // it was zero.  We can therefore just add it to our original
+        // getText()-based index value of start (in saveStart) to get
+        // the new getText()-based start.
+//        start = saveStart + index.contextStart;
+
+        // Make the cursor getText()-based.  The CURSOR index is zero-based.
+//        cursor = start + index.start - index.contextStart;
+
+/*
+        if (DEBUG) {
+            String out = buf.toString();
+            log.append(out.substring(0, index.contextStart)).
+                append('{').
+                append(out.substring(index.contextStart, index.start)).
+                append('|').
+                append(out.substring(index.start)).
+                append('"');
+            log.append(", {" + index.contextStart + ", " + index.contextLimit + ", " + index.start + "}, ");
+//            log.append("start " + start + ", cursor " + cursor);
+            log.append(", sel " + getSelectionStart());
+            System.out.println(escape(log.toString()));
+        }
+        */
+    }
+    
+    /**
+     * Set the {@link com.ibm.icu.text.Transliterator} and direction to
+     * use to process incoming <code>KeyEvent</code>s.
+     * @param t the {@link com.ibm.icu.text.Transliterator} to use
+     */
+    public void setTransliterator(Transliterator t) {
+        /*
+        if (translit != t) { // [sic] pointer compare ok; singletons
+            resetTransliterationStart();
+        }
+        */
+        translit = t;
+    }
+
+    public Transliterator getTransliterator() {
+        return translit;
+    }
+
+    /**
+     * Reset the start point at which transliteration begins.  This
+     * needs to be done when the user moves the cursor or when the
+     * current {@link com.ibm.icu.text.Transliterator} is changed. 
+     */
+     /*
+    private void resetTransliterationStart() {
+        start = getSelectionStart();
+        cursor = start;
+    }
+    */
+
+    /**
+     * Escape non-ASCII characters as Unicode.
+     * JUST FOR DEBUGGING OUTPUT.
+     */
+    public static final String escape(String s) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<s.length(); ++i) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c <= 0x007F) {
+                if (c == '\\') {
+                    buf.append("\\\\"); // That is, "\\"
+                } else {
+                    buf.append(c);
+                }
+            } else {
+                buf.append("\\u");
+                if (c < 0x1000) {
+                    buf.append('0');
+                    if (c < 0x100) {
+                        buf.append('0');
+                        if (c < 0x10) {
+                            buf.append('0');
+                        }
+                    }
+                }
+                buf.append(Integer.toHexString(c));
+            }
+        }
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/demo.bat b/src/com/ibm/icu/dev/demo/translit/demo.bat
new file mode 100755
index 0000000..80759bc
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/demo.bat
@@ -0,0 +1,19 @@
+REM /*
+REM *******************************************************************************
+REM  * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+REM  * others. All Rights Reserved.                                                *
+REM  *******************************************************************************
+REM  *
+REM  * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/translit/demo.bat,v $ 
+REM  * $Date: 2000/03/10 03:47:44 $ 
+REM  * $Revision: 1.2 $
+REM  *
+REM  *****************************************************************************************
+REM  */
+REM For best results, run the demo as an applet inside of Netscape
+REM with Bitstream Cyberbit installed.
+
+REM setup your JDK 1.1.x path and classpath here:
+call JDK11
+set CLASSPATH=../translit.jar;%CLASSPATH%
+javaw Demo
diff --git a/src/com/ibm/icu/dev/demo/translit/demo.html b/src/com/ibm/icu/dev/demo/translit/demo.html
new file mode 100755
index 0000000..c655dc9
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/demo.html
@@ -0,0 +1,27 @@
+<HTML>
+<HEAD>
+<TITLE>Transliteration Demo</TITLE>
+</HEAD>
+<BODY>
+
+<APPLET CODE="com.ibm.demo.translit.DemoApplet.class" WIDTH=140 HEIGHT=33></APPLET>
+
+<HR>
+
+If you don't see a button above, then your browser is failing to
+locate the necessary Java class files.
+
+<P>
+
+One way to make this work is to copy this HTML file to
+<code>icu4j/src</code>, and make sure the Java files in the directories
+under <code>icu4j/src/com</code> are built.  Then open this HTML file
+using a browser or appletviewer.
+
+<P>
+
+For best results, run this demo as an applet within Netscape with
+Bitstream Cyberbit installed.
+
+</BODY>
+</HTML>
diff --git a/src/com/ibm/icu/dev/demo/translit/package.html b/src/com/ibm/icu/dev/demo/translit/package.html
new file mode 100755
index 0000000..f014649
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/demo/translit/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 17:44:12 $
+-->
+</head>
+<body bgcolor="white">
+Transliterator demo appliation.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt
new file mode 100755
index 0000000..8f7c21d
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt
@@ -0,0 +1,20365 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others.  All Rights Reserved.
+#--------------------------------------------------------------------
+# Generated: Fri Jan 26 15:14:48 2001
+# Tool: ..\..\tools\translit\hanpinyin.pl
+#--------------------------------------------------------------------
+
+# Han-Pinyin
+
+# Mechanically derived from \desk\Unihan.txt (ftp.unicode.org), version:
+#
+#	Name:             Unihan database
+#	Unicode version:  3.0b1
+#	Table version:    1.1
+#	Date:             2 July 1999
+#
+#	Copyright (c) 1996-1999 Unicode, Inc.  All Rights reserved.
+
+丁 > dīng; #4E01
+丂 > kăo; #4E02
+七 > qī; #4E03
+丄 > shàng; #4E04
+丅 > xià; #4E05
+万 > mò; #4E07
+丈 > zhàng; #4E08
+三 > sān; #4E09
+上 > shàng; #4E0A
+下 > xià; #4E0B
+丌 > jī; #4E0C
+不 > bù; #4E0D
+与 > yŭ; #4E0E
+丏 > miăn; #4E0F
+丐 > gài; #4E10
+丑 > chŏu; #4E11
+丒 > chŏu; #4E12
+专 > zhuān; #4E13
+且 > qiĕ; #4E14
+丕 > pī; #4E15
+世 > shì; #4E16
+丗 > shì; #4E17
+丘 > qīu; #4E18
+丙 > bĭng; #4E19
+业 > yè; #4E1A
+丛 > cóng; #4E1B
+东 > dōng; #4E1C
+丝 > sī; #4E1D
+丞 > chéng; #4E1E
+丟 > dīu; #4E1F
+丠 > qīu; #4E20
+両 > liăng; #4E21
+丢 > dīu; #4E22
+丣 > yŏu; #4E23
+两 > liăng; #4E24
+严 > yán; #4E25
+並 > bìng; #4E26
+丧 > sāng; #4E27
+丨 > gŭn; #4E28
+丩 > jīu; #4E29
+个 > gè; #4E2A
+丫 > yā; #4E2B
+丬 > qiáng; #4E2C
+中 > zhōng; #4E2D
+丮 > jĭ; #4E2E
+丯 > jiè; #4E2F
+丰 > fēng; #4E30
+丱 > guàn; #4E31
+串 > chuàn; #4E32
+丳 > chăn; #4E33
+临 > lín; #4E34
+丵 > zhŭo; #4E35
+丶 > zhŭ; #4E36
+丸 > wán; #4E38
+丹 > dān; #4E39
+为 > wèi; #4E3A
+主 > zhŭ; #4E3B
+丼 > jĭng; #4E3C
+丽 > lì; #4E3D
+举 > jŭ; #4E3E
+丿 > piĕ; #4E3F
+乀 > fú; #4E40
+乁 > yí; #4E41
+乂 > yì; #4E42
+乃 > năi; #4E43
+久 > jĭu; #4E45
+乆 > jĭu; #4E46
+乇 > zhé; #4E47
+么 > yāo; #4E48
+义 > yì; #4E49
+之 > zhī; #4E4B
+乌 > wū; #4E4C
+乍 > zhà; #4E4D
+乎 > hū; #4E4E
+乏 > fá; #4E4F
+乐 > lè; #4E50
+乑 > zhòng; #4E51
+乒 > pīng; #4E52
+乓 > pang; #4E53
+乔 > qiáo; #4E54
+乕 > hŭ; #4E55
+乖 > guāi; #4E56
+乗 > chéng; #4E57
+乘 > chéng; #4E58
+乙 > yĭ; #4E59
+乚 > yĭn; #4E5A
+乜 > miē; #4E5C
+九 > jĭu; #4E5D
+乞 > qĭ; #4E5E
+也 > yĕ; #4E5F
+习 > xí; #4E60
+乡 > xiāng; #4E61
+乢 > gài; #4E62
+乣 > dīu; #4E63
+书 > shū; #4E66
+乨 > shĭ; #4E68
+乩 > jī; #4E69
+乪 > nāng; #4E6A
+乫 > jiā; #4E6B
+乭 > shí; #4E6D
+买 > măi; #4E70
+乱 > luàn; #4E71
+乳 > rŭ; #4E73
+乴 > xué; #4E74
+乵 > yăn; #4E75
+乶 > fŭ; #4E76
+乷 > shā; #4E77
+乸 > nă; #4E78
+乹 > gān; #4E79
+乾 > gān; #4E7E
+乿 > chì; #4E7F
+亀 > gūi; #4E80
+亁 > gān; #4E81
+亂 > luàn; #4E82
+亃 > lín; #4E83
+亄 > yì; #4E84
+亅 > jué; #4E85
+了 > liăo; #4E86
+予 > yú; #4E88
+争 > zhēng; #4E89
+亊 > shì; #4E8A
+事 > shì; #4E8B
+二 > èr; #4E8C
+亍 > chù; #4E8D
+于 > yú; #4E8E
+亏 > yú; #4E8F
+亐 > yú; #4E90
+云 > yún; #4E91
+互 > hù; #4E92
+亓 > qí; #4E93
+五 > wŭ; #4E94
+井 > jĭng; #4E95
+亖 > sì; #4E96
+亗 > sùi; #4E97
+亘 > gèn; #4E98
+亙 > gèn; #4E99
+亚 > yà; #4E9A
+些 > xiē; #4E9B
+亜 > yà; #4E9C
+亝 > qí; #4E9D
+亞 > yà; #4E9E
+亟 > jí; #4E9F
+亠 > tóu; #4EA0
+亡 > wáng; #4EA1
+亢 > kàng; #4EA2
+亣 > tà; #4EA3
+交 > jiāo; #4EA4
+亥 > hài; #4EA5
+亦 > yì; #4EA6
+产 > chăn; #4EA7
+亨 > hēng; #4EA8
+亩 > mŭ; #4EA9
+享 > xiăng; #4EAB
+京 > jīng; #4EAC
+亭 > tíng; #4EAD
+亮 > liàng; #4EAE
+亯 > xiăng; #4EAF
+亰 > jīng; #4EB0
+亱 > yè; #4EB1
+亲 > qīn; #4EB2
+亳 > bó; #4EB3
+亴 > yòu; #4EB4
+亵 > xiè; #4EB5
+亶 > dăn; #4EB6
+亷 > lián; #4EB7
+亸 > dŭo; #4EB8
+亹 > wĕi; #4EB9
+人 > rén; #4EBA
+亻 > rén; #4EBB
+亼 > jí; #4EBC
+亾 > wáng; #4EBE
+亿 > yì; #4EBF
+什 > shí; #4EC0
+仁 > rén; #4EC1
+仂 > lè; #4EC2
+仃 > dīng; #4EC3
+仄 > zè; #4EC4
+仅 > jĭn; #4EC5
+仆 > pū; #4EC6
+仇 > chóu; #4EC7
+仈 > bā; #4EC8
+仉 > zhăng; #4EC9
+今 > jīn; #4ECA
+介 > jiè; #4ECB
+仌 > bīng; #4ECC
+仍 > réng; #4ECD
+从 > cóng; #4ECE
+仏 > fó; #4ECF
+仐 > săn; #4ED0
+仑 > lún; #4ED1
+仓 > cāng; #4ED3
+仔 > zĭ; #4ED4
+仕 > shì; #4ED5
+他 > tā; #4ED6
+仗 > zhàng; #4ED7
+付 > fù; #4ED8
+仙 > xiān; #4ED9
+仚 > xiān; #4EDA
+仛 > tūo; #4EDB
+仜 > hóng; #4EDC
+仝 > tóng; #4EDD
+仞 > rèn; #4EDE
+仟 > qiān; #4EDF
+仠 > gán; #4EE0
+仡 > yì; #4EE1
+仢 > dí; #4EE2
+代 > dài; #4EE3
+令 > lìng; #4EE4
+以 > yĭ; #4EE5
+仦 > chào; #4EE6
+仧 > cháng; #4EE7
+仨 > sā; #4EE8
+仪 > yí; #4EEA
+仫 > mù; #4EEB
+们 > men; #4EEC
+仭 > rèn; #4EED
+仮 > jiă; #4EEE
+仯 > chào; #4EEF
+仰 > yăng; #4EF0
+仱 > qián; #4EF1
+仲 > zhòng; #4EF2
+仳 > pĭ; #4EF3
+仴 > wàn; #4EF4
+仵 > wŭ; #4EF5
+件 > jiàn; #4EF6
+价 > jiè; #4EF7
+仸 > yăo; #4EF8
+仹 > fēng; #4EF9
+仺 > cāng; #4EFA
+任 > rèn; #4EFB
+仼 > wáng; #4EFC
+份 > fèn; #4EFD
+仾 > dī; #4EFE
+仿 > făng; #4EFF
+伀 > zhōng; #4F00
+企 > qĭ; #4F01
+伂 > pèi; #4F02
+伃 > yú; #4F03
+伄 > diào; #4F04
+伅 > dùn; #4F05
+伆 > wèn; #4F06
+伇 > yì; #4F07
+伈 > xĭn; #4F08
+伉 > kàng; #4F09
+伊 > yī; #4F0A
+伋 > jí; #4F0B
+伌 > ài; #4F0C
+伍 > wŭ; #4F0D
+伎 > jì; #4F0E
+伏 > fú; #4F0F
+伐 > fá; #4F10
+休 > xīu; #4F11
+伒 > jìn; #4F12
+伓 > bēi; #4F13
+伔 > dăn; #4F14
+伕 > fū; #4F15
+伖 > tăng; #4F16
+众 > zhòng; #4F17
+优 > yōu; #4F18
+伙 > hŭo; #4F19
+会 > hùi; #4F1A
+伛 > yŭ; #4F1B
+伜 > cùi; #4F1C
+伝 > chuán; #4F1D
+伞 > săn; #4F1E
+伟 > wĕi; #4F1F
+传 > chuán; #4F20
+伡 > chē; #4F21
+伢 > yá; #4F22
+伣 > xiàn; #4F23
+伤 > shāng; #4F24
+伥 > chāng; #4F25
+伦 > lún; #4F26
+伧 > cāng; #4F27
+伨 > xùn; #4F28
+伩 > xìn; #4F29
+伪 > wĕi; #4F2A
+伫 > zhù; #4F2B
+伭 > xuán; #4F2D
+伮 > nú; #4F2E
+伯 > bó; #4F2F
+估 > gū; #4F30
+伱 > nĭ; #4F31
+伲 > nĭ; #4F32
+伳 > xiè; #4F33
+伴 > bàn; #4F34
+伵 > xù; #4F35
+伶 > líng; #4F36
+伷 > zhòu; #4F37
+伸 > shēn; #4F38
+伹 > qū; #4F39
+伺 > sì; #4F3A
+伻 > bēng; #4F3B
+似 > sì; #4F3C
+伽 > jiā; #4F3D
+伾 > pī; #4F3E
+伿 > yì; #4F3F
+佀 > sì; #4F40
+佁 > ăi; #4F41
+佂 > zhēng; #4F42
+佃 > diàn; #4F43
+佄 > hán; #4F44
+佅 > mài; #4F45
+但 > dàn; #4F46
+佇 > zhù; #4F47
+佈 > bù; #4F48
+佉 > qū; #4F49
+佊 > bĭ; #4F4A
+佋 > shào; #4F4B
+佌 > cĭ; #4F4C
+位 > wèi; #4F4D
+低 > dī; #4F4E
+住 > zhù; #4F4F
+佐 > zŭo; #4F50
+佑 > yòu; #4F51
+佒 > yāng; #4F52
+体 > tĭ; #4F53
+佔 > zhàn; #4F54
+何 > hé; #4F55
+佖 > bì; #4F56
+佗 > tūo; #4F57
+佘 > shé; #4F58
+余 > yú; #4F59
+佚 > yì; #4F5A
+佛 > fó; #4F5B
+作 > zùo; #4F5C
+佝 > kòu; #4F5D
+佞 > nìng; #4F5E
+佟 > tóng; #4F5F
+你 > nĭ; #4F60
+佡 > xuān; #4F61
+佢 > qú; #4F62
+佣 > yòng; #4F63
+佤 > wă; #4F64
+佥 > qiān; #4F65
+佧 > kă; #4F67
+佩 > pèi; #4F69
+佪 > huái; #4F6A
+佫 > hè; #4F6B
+佬 > lăo; #4F6C
+佭 > xiáng; #4F6D
+佮 > gé; #4F6E
+佯 > yáng; #4F6F
+佰 > băi; #4F70
+佱 > fă; #4F71
+佲 > míng; #4F72
+佳 > jia; #4F73
+佴 > èr; #4F74
+併 > bìng; #4F75
+佶 > jí; #4F76
+佷 > hĕn; #4F77
+佸 > húo; #4F78
+佹 > gŭi; #4F79
+佺 > quán; #4F7A
+佻 > tiāo; #4F7B
+佼 > jiăo; #4F7C
+佽 > cì; #4F7D
+佾 > yì; #4F7E
+使 > shĭ; #4F7F
+侀 > xíng; #4F80
+侁 > shēn; #4F81
+侂 > tūo; #4F82
+侃 > kăn; #4F83
+侄 > zhí; #4F84
+侅 > gāi; #4F85
+來 > lái; #4F86
+侇 > yí; #4F87
+侈 > chĭ; #4F88
+侉 > kuā; #4F89
+侊 > guāng; #4F8A
+例 > lì; #4F8B
+侌 > yīn; #4F8C
+侍 > shì; #4F8D
+侎 > mĭ; #4F8E
+侏 > zhū; #4F8F
+侐 > xù; #4F90
+侑 > yòu; #4F91
+侒 > ān; #4F92
+侓 > lù; #4F93
+侔 > móu; #4F94
+侕 > ér; #4F95
+侖 > lún; #4F96
+侗 > tóng; #4F97
+侘 > chà; #4F98
+侙 > chì; #4F99
+侚 > xùn; #4F9A
+供 > gōng; #4F9B
+侜 > zhōu; #4F9C
+依 > yī; #4F9D
+侞 > rŭ; #4F9E
+侟 > jiàn; #4F9F
+侠 > xiá; #4FA0
+価 > jià; #4FA1
+侢 > zài; #4FA2
+侣 > lǚ; #4FA3
+侥 > jiăo; #4FA5
+侦 > zhēn; #4FA6
+侧 > cè; #4FA7
+侨 > qiáo; #4FA8
+侩 > kuài; #4FA9
+侪 > chái; #4FAA
+侫 > nìng; #4FAB
+侬 > nóng; #4FAC
+侭 > jĭn; #4FAD
+侮 > wŭ; #4FAE
+侯 > hóu; #4FAF
+侰 > jĭong; #4FB0
+侱 > chĕng; #4FB1
+侲 > zhèn; #4FB2
+侳 > zùo; #4FB3
+侴 > chŏu; #4FB4
+侵 > qīn; #4FB5
+侶 > lǚ; #4FB6
+侷 > jú; #4FB7
+侸 > shù; #4FB8
+侹 > tĭng; #4FB9
+侺 > shèn; #4FBA
+侻 > tūo; #4FBB
+侼 > bó; #4FBC
+侽 > nán; #4FBD
+侾 > hāo; #4FBE
+便 > biàn; #4FBF
+俀 > tŭi; #4FC0
+俁 > yŭ; #4FC1
+係 > xì; #4FC2
+促 > cù; #4FC3
+俄 > é; #4FC4
+俅 > qíu; #4FC5
+俆 > xú; #4FC6
+俇 > kuăng; #4FC7
+俈 > kù; #4FC8
+俉 > wù; #4FC9
+俊 > jùn; #4FCA
+俋 > yì; #4FCB
+俌 > fŭ; #4FCC
+俍 > láng; #4FCD
+俎 > zŭ; #4FCE
+俏 > qiào; #4FCF
+俐 > lì; #4FD0
+俑 > yŏng; #4FD1
+俒 > hùn; #4FD2
+俓 > jìng; #4FD3
+俔 > xiàn; #4FD4
+俕 > sàn; #4FD5
+俖 > păi; #4FD6
+俗 > sú; #4FD7
+俘 > fú; #4FD8
+俙 > xī; #4FD9
+俚 > lĭ; #4FDA
+俛 > fŭ; #4FDB
+俜 > pīng; #4FDC
+保 > băo; #4FDD
+俞 > yú; #4FDE
+俟 > sì; #4FDF
+俠 > xiá; #4FE0
+信 > xìn; #4FE1
+俢 > xīu; #4FE2
+俣 > yŭ; #4FE3
+俤 > tì; #4FE4
+俥 > chē; #4FE5
+俦 > chóu; #4FE6
+俨 > yăn; #4FE8
+俩 > liă; #4FE9
+俪 > lì; #4FEA
+俫 > lái; #4FEB
+俭 > jiăn; #4FED
+修 > xīu; #4FEE
+俯 > fŭ; #4FEF
+俰 > hè; #4FF0
+俱 > jù; #4FF1
+俲 > xiào; #4FF2
+俳 > pái; #4FF3
+俴 > jiàn; #4FF4
+俵 > biào; #4FF5
+俶 > chù; #4FF6
+俷 > fèi; #4FF7
+俸 > fèng; #4FF8
+俹 > yà; #4FF9
+俺 > ăn; #4FFA
+俻 > bèi; #4FFB
+俼 > yù; #4FFC
+俽 > xīn; #4FFD
+俾 > bĭ; #4FFE
+俿 > jiàn; #4FFF
+倀 > chāng; #5000
+倁 > chí; #5001
+倂 > bìng; #5002
+倃 > zán; #5003
+倄 > yáo; #5004
+倅 > cùi; #5005
+倆 > liă; #5006
+倇 > wăn; #5007
+倈 > lái; #5008
+倉 > cāng; #5009
+倊 > zòng; #500A
+個 > gè; #500B
+倌 > guān; #500C
+倍 > bèi; #500D
+倎 > tiān; #500E
+倏 > shū; #500F
+倐 > shū; #5010
+們 > men; #5011
+倒 > dăo; #5012
+倓 > tán; #5013
+倔 > jué; #5014
+倕 > chúi; #5015
+倖 > xìng; #5016
+倗 > péng; #5017
+倘 > tăng; #5018
+候 > hòu; #5019
+倚 > yĭ; #501A
+倛 > qī; #501B
+倜 > tì; #501C
+倝 > gàn; #501D
+倞 > jìng; #501E
+借 > jiè; #501F
+倠 > sūi; #5020
+倡 > chàng; #5021
+倢 > jié; #5022
+倣 > făng; #5023
+値 > zhí; #5024
+倥 > kōng; #5025
+倦 > juàn; #5026
+倧 > zōng; #5027
+倨 > jù; #5028
+倩 > qiàn; #5029
+倪 > ní; #502A
+倫 > lún; #502B
+倬 > zhūo; #502C
+倭 > wēi; #502D
+倮 > lŭo; #502E
+倯 > sōng; #502F
+倰 > léng; #5030
+倱 > hùn; #5031
+倲 > dōng; #5032
+倳 > zì; #5033
+倴 > bèn; #5034
+倵 > wŭ; #5035
+倶 > jù; #5036
+倷 > nài; #5037
+倸 > căi; #5038
+倹 > jiăn; #5039
+债 > zhài; #503A
+倻 > yē; #503B
+值 > zhí; #503C
+倽 > shà; #503D
+倾 > qīng; #503E
+偀 > yīng; #5040
+偁 > chēng; #5041
+偂 > jiān; #5042
+偃 > yăn; #5043
+偄 > nuàn; #5044
+偅 > zhòng; #5045
+偆 > chŭn; #5046
+假 > jiă; #5047
+偈 > jié; #5048
+偉 > wĕi; #5049
+偊 > yŭ; #504A
+偋 > bĭng; #504B
+偌 > rùo; #504C
+偍 > tí; #504D
+偎 > wēi; #504E
+偏 > piān; #504F
+偐 > yàn; #5050
+偑 > fēng; #5051
+偒 > tăng; #5052
+偓 > wò; #5053
+偔 > è; #5054
+偕 > xié; #5055
+偖 > chĕ; #5056
+偗 > shĕng; #5057
+偘 > kăn; #5058
+偙 > dì; #5059
+做 > zùo; #505A
+偛 > chā; #505B
+停 > tíng; #505C
+偝 > bèi; #505D
+偞 > yè; #505E
+偟 > huáng; #505F
+偠 > yăo; #5060
+偡 > zhàn; #5061
+偢 > chŏu; #5062
+偣 > yān; #5063
+偤 > yŏu; #5064
+健 > jiàn; #5065
+偦 > xū; #5066
+偧 > zhā; #5067
+偨 > cī; #5068
+偩 > fù; #5069
+偪 > bī; #506A
+偫 > zhì; #506B
+偬 > zŏng; #506C
+偭 > miăn; #506D
+偮 > jí; #506E
+偯 > yĭ; #506F
+偰 > xiè; #5070
+偱 > xún; #5071
+偲 > sī; #5072
+偳 > duān; #5073
+側 > cè; #5074
+偵 > zhēn; #5075
+偶 > ŏu; #5076
+偷 > tōu; #5077
+偸 > tōu; #5078
+偹 > bèi; #5079
+偺 > zá; #507A
+偻 > lǚ; #507B
+偼 > jié; #507C
+偽 > wĕi; #507D
+偾 > fèn; #507E
+偿 > cháng; #507F
+傀 > gūi; #5080
+傁 > sŏu; #5081
+傂 > zhì; #5082
+傃 > sù; #5083
+傄 > xiā; #5084
+傅 > fù; #5085
+傆 > yuàn; #5086
+傇 > rŏng; #5087
+傈 > lì; #5088
+傉 > rù; #5089
+傊 > yŭn; #508A
+傋 > gòu; #508B
+傌 > mà; #508C
+傍 > bàng; #508D
+傎 > diān; #508E
+傏 > táng; #508F
+傐 > hào; #5090
+傑 > jié; #5091
+傒 > xī; #5092
+傓 > shàn; #5093
+傔 > qiàn; #5094
+傕 > jué; #5095
+傖 > cāng; #5096
+傗 > chù; #5097
+傘 > săn; #5098
+備 > bèi; #5099
+傚 > xiào; #509A
+傛 > yŏng; #509B
+傜 > yáo; #509C
+傝 > tàn; #509D
+傞 > sūo; #509E
+傟 > yăng; #509F
+傠 > fā; #50A0
+傡 > bìng; #50A1
+傢 > jiā; #50A2
+傣 > dăi; #50A3
+傤 > zài; #50A4
+傥 > tăng; #50A5
+傧 > bìn; #50A7
+储 > chŭ; #50A8
+傩 > núo; #50A9
+傪 > cān; #50AA
+傫 > lĕi; #50AB
+催 > cūi; #50AC
+傭 > yōng; #50AD
+傮 > zāo; #50AE
+傯 > zŏng; #50AF
+傰 > péng; #50B0
+傱 > sŏng; #50B1
+傲 > ào; #50B2
+傳 > chuán; #50B3
+傴 > yŭ; #50B4
+債 > zhài; #50B5
+傶 > còu; #50B6
+傷 > shāng; #50B7
+傸 > qiăng; #50B8
+傹 > jìng; #50B9
+傺 > chì; #50BA
+傻 > shă; #50BB
+傼 > hàn; #50BC
+傽 > zhāng; #50BD
+傾 > qīng; #50BE
+傿 > yàn; #50BF
+僀 > dì; #50C0
+僁 > xī; #50C1
+僂 > lǚ; #50C2
+僃 > bèi; #50C3
+僄 > piào; #50C4
+僅 > jĭn; #50C5
+僆 > lián; #50C6
+僇 > lù; #50C7
+僈 > màn; #50C8
+僉 > qiān; #50C9
+僊 > xiān; #50CA
+僋 > tàn; #50CB
+僌 > yíng; #50CC
+働 > dòng; #50CD
+僎 > zhuàn; #50CE
+像 > xiàng; #50CF
+僐 > shàn; #50D0
+僑 > qiáo; #50D1
+僒 > jĭong; #50D2
+僓 > tŭi; #50D3
+僔 > zŭn; #50D4
+僕 > pú; #50D5
+僖 > xī; #50D6
+僗 > láo; #50D7
+僘 > chăng; #50D8
+僙 > guāng; #50D9
+僚 > liáo; #50DA
+僛 > qī; #50DB
+僜 > dèng; #50DC
+僝 > chán; #50DD
+僞 > wĕi; #50DE
+僟 > jī; #50DF
+僠 > fān; #50E0
+僡 > hùi; #50E1
+僢 > chuăn; #50E2
+僣 > jiàn; #50E3
+僤 > dàn; #50E4
+僥 > jiăo; #50E5
+僦 > jìu; #50E6
+僧 > sēng; #50E7
+僨 > fèn; #50E8
+僩 > xiàn; #50E9
+僪 > jué; #50EA
+僫 > è; #50EB
+僬 > jiāo; #50EC
+僭 > jiàn; #50ED
+僮 > tóng; #50EE
+僯 > lĭn; #50EF
+僰 > bó; #50F0
+僱 > gù; #50F1
+僳 > sù; #50F3
+僴 > xiàn; #50F4
+僵 > jiāng; #50F5
+僶 > mĭn; #50F6
+僷 > yè; #50F7
+僸 > jìn; #50F8
+價 > jià; #50F9
+僺 > qiào; #50FA
+僻 > pì; #50FB
+僼 > fēng; #50FC
+僽 > zhòu; #50FD
+僾 > ài; #50FE
+僿 > sài; #50FF
+儀 > yí; #5100
+儁 > jùn; #5101
+儂 > nóng; #5102
+儃 > chán; #5103
+億 > yì; #5104
+儅 > dāng; #5105
+儆 > jĭng; #5106
+儇 > xuān; #5107
+儈 > kuài; #5108
+儉 > jiăn; #5109
+儊 > chù; #510A
+儋 > dān; #510B
+儌 > jiăo; #510C
+儍 > shă; #510D
+儎 > zài; #510E
+儐 > bìn; #5110
+儑 > àn; #5111
+儒 > rú; #5112
+儓 > tái; #5113
+儔 > chóu; #5114
+儕 > chái; #5115
+儖 > lán; #5116
+儗 > nĭ; #5117
+儘 > jĭn; #5118
+儙 > qiàn; #5119
+儚 > méng; #511A
+儛 > wŭ; #511B
+儜 > níng; #511C
+儝 > qíong; #511D
+儞 > nĭ; #511E
+償 > cháng; #511F
+儠 > liè; #5120
+儡 > lĕi; #5121
+儢 > lǚ; #5122
+儣 > kuàng; #5123
+儤 > bào; #5124
+儥 > dú; #5125
+儦 > biāo; #5126
+儧 > zăn; #5127
+儨 > zhí; #5128
+儩 > sì; #5129
+優 > yōu; #512A
+儫 > háo; #512B
+儬 > chèn; #512C
+儭 > chèn; #512D
+儮 > lì; #512E
+儯 > téng; #512F
+儰 > wĕi; #5130
+儱 > lŏng; #5131
+儲 > chŭ; #5132
+儳 > chàn; #5133
+儴 > ráng; #5134
+儵 > shū; #5135
+儶 > hùi; #5136
+儷 > lì; #5137
+儸 > lúo; #5138
+儹 > zăn; #5139
+儺 > núo; #513A
+儻 > tăng; #513B
+儼 > yăn; #513C
+儽 > lĕi; #513D
+儾 > nàng; #513E
+儿 > ér; #513F
+兀 > wù; #5140
+允 > yŭn; #5141
+兂 > zān; #5142
+元 > yuán; #5143
+兄 > xīong; #5144
+充 > chōng; #5145
+兆 > zhào; #5146
+兇 > xīong; #5147
+先 > xiān; #5148
+光 > guāng; #5149
+兊 > dùi; #514A
+克 > kè; #514B
+兌 > dùi; #514C
+免 > miăn; #514D
+兎 > tù; #514E
+兏 > cháng; #514F
+児 > ér; #5150
+兑 > dùi; #5151
+兒 > ér; #5152
+兓 > xīn; #5153
+兔 > tù; #5154
+兕 > sì; #5155
+兖 > yăn; #5156
+兗 > yăn; #5157
+兘 > shĭ; #5158
+兙 > shí' 'kè; #5159
+党 > dăng; #515A
+兛 > qiān; #515B
+兜 > dōu; #515C
+兝 > fēn; #515D
+兞 > máo; #515E
+兟 > shēn; #515F
+兠 > dōu; #5160
+兡 > băi' 'kè; #5161
+兢 > jīng; #5162
+兣 > lĭ; #5163
+兤 > huáng; #5164
+入 > rù; #5165
+兦 > wáng; #5166
+內 > nèi; #5167
+全 > quán; #5168
+兩 > liăng; #5169
+兪 > yú; #516A
+八 > bā; #516B
+公 > gōng; #516C
+六 > lìu; #516D
+兮 > xī; #516E
+兰 > lán; #5170
+共 > gòng; #5171
+兲 > tiān; #5172
+关 > guān; #5173
+兴 > xīng; #5174
+兵 > bīng; #5175
+其 > qí; #5176
+具 > jù; #5177
+典 > diăn; #5178
+兹 > zī; #5179
+养 > yăng; #517B
+兼 > jiān; #517C
+兽 > shòu; #517D
+兾 > jì; #517E
+兿 > yì; #517F
+冀 > jì; #5180
+冁 > chăn; #5181
+冂 > jīong; #5182
+冃 > mao; #5183
+冄 > răn; #5184
+内 > nèi; #5185
+円 > yuan; #5186
+冇 > măo; #5187
+冈 > gāng; #5188
+冉 > răn; #5189
+冊 > cè; #518A
+冋 > jīong; #518B
+册 > cè; #518C
+再 > zài; #518D
+冎 > guă; #518E
+冏 > jĭong; #518F
+冐 > mào; #5190
+冑 > zhòu; #5191
+冒 > mòu; #5192
+冓 > gòu; #5193
+冔 > xŭ; #5194
+冕 > miăn; #5195
+冖 > mì; #5196
+冗 > rŏng; #5197
+冘 > yín; #5198
+写 > xiĕ; #5199
+冚 > kăn; #519A
+军 > jūn; #519B
+农 > nóng; #519C
+冝 > yí; #519D
+冞 > mí; #519E
+冟 > shì; #519F
+冠 > guān; #51A0
+冡 > méng; #51A1
+冢 > zhŏng; #51A2
+冣 > jù; #51A3
+冤 > yuān; #51A4
+冥 > míng; #51A5
+冦 > kòu; #51A6
+冨 > fù; #51A8
+冩 > xiĕ; #51A9
+冪 > mì; #51AA
+冫 > bīng; #51AB
+冬 > dōng; #51AC
+冭 > tái; #51AD
+冮 > gāng; #51AE
+冯 > féng; #51AF
+冰 > bīng; #51B0
+冱 > hù; #51B1
+冲 > chōng; #51B2
+决 > jué; #51B3
+冴 > hù; #51B4
+况 > kuàng; #51B5
+冶 > yĕ; #51B6
+冷 > lĕng; #51B7
+冸 > pàn; #51B8
+冹 > fú; #51B9
+冺 > mĭn; #51BA
+冻 > dòng; #51BB
+冼 > xiăn; #51BC
+冽 > liè; #51BD
+冾 > xiá; #51BE
+冿 > jiān; #51BF
+净 > jìng; #51C0
+凁 > shù; #51C1
+凂 > mĕi; #51C2
+凃 > tú; #51C3
+凄 > qī; #51C4
+凅 > gù; #51C5
+准 > zhŭn; #51C6
+凇 > sòng; #51C7
+凈 > jìng; #51C8
+凉 > liáng; #51C9
+凊 > qìng; #51CA
+凋 > diāo; #51CB
+凌 > líng; #51CC
+凍 > dòng; #51CD
+凎 > gàn; #51CE
+减 > jiăn; #51CF
+凐 > yīn; #51D0
+凑 > còu; #51D1
+凒 > yí; #51D2
+凓 > lì; #51D3
+凔 > cāng; #51D4
+凕 > mĭng; #51D5
+凖 > zhuĕn; #51D6
+凗 > cúi; #51D7
+凘 > sī; #51D8
+凙 > dúo; #51D9
+凚 > jìn; #51DA
+凛 > lĭn; #51DB
+凜 > lĭn; #51DC
+凝 > níng; #51DD
+凞 > xī; #51DE
+凟 > dú; #51DF
+几 > jī; #51E0
+凡 > fán; #51E1
+凢 > fán; #51E2
+凣 > fán; #51E3
+凤 > fèng; #51E4
+凥 > jū; #51E5
+処 > chŭ; #51E6
+凨 > fēng; #51E8
+凫 > fú; #51EB
+凬 > fēng; #51EC
+凭 > píng; #51ED
+凮 > fēng; #51EE
+凯 > kăi; #51EF
+凰 > huáng; #51F0
+凱 > kăi; #51F1
+凲 > gān; #51F2
+凳 > dèng; #51F3
+凴 > píng; #51F4
+凵 > qū; #51F5
+凶 > xīong; #51F6
+凷 > kuài; #51F7
+凸 > tū; #51F8
+凹 > āo; #51F9
+出 > chū; #51FA
+击 > jí; #51FB
+凼 > dàng; #51FC
+函 > hán; #51FD
+凾 > hán; #51FE
+凿 > záo; #51FF
+刀 > dāo; #5200
+刁 > diāo; #5201
+刂 > dāo; #5202
+刃 > rèn; #5203
+刄 > rèn; #5204
+刅 > chuāng; #5205
+分 > fēn; #5206
+切 > qiē; #5207
+刈 > yì; #5208
+刉 > jī; #5209
+刊 > kān; #520A
+刋 > qiàn; #520B
+刌 > cŭn; #520C
+刍 > chú; #520D
+刎 > wĕn; #520E
+刏 > jī; #520F
+刐 > dăn; #5210
+刑 > xíng; #5211
+划 > huá; #5212
+刓 > wán; #5213
+刔 > jué; #5214
+刕 > lí; #5215
+刖 > yuè; #5216
+列 > liè; #5217
+刘 > líu; #5218
+则 > zé; #5219
+刚 > gāng; #521A
+创 > chuàng; #521B
+刜 > fú; #521C
+初 > chū; #521D
+刞 > qù; #521E
+刟 > jū; #521F
+删 > shān; #5220
+刡 > mĭn; #5221
+刢 > líng; #5222
+刣 > zhōng; #5223
+判 > pàn; #5224
+別 > bié; #5225
+刦 > jié; #5226
+刧 > jié; #5227
+刨 > bào; #5228
+利 > lì; #5229
+刪 > shān; #522A
+别 > bié; #522B
+刬 > chăn; #522C
+刭 > jĭng; #522D
+刮 > guā; #522E
+刯 > gēn; #522F
+到 > dào; #5230
+刱 > chuàng; #5231
+刲 > kūi; #5232
+刳 > kū; #5233
+刴 > dùo; #5234
+刵 > èr; #5235
+制 > zhì; #5236
+刷 > shuā; #5237
+券 > quàn; #5238
+刹 > chà; #5239
+刺 > cì; #523A
+刻 > kè; #523B
+刼 > jié; #523C
+刽 > gùi; #523D
+刾 > cì; #523E
+刿 > gùi; #523F
+剀 > kăi; #5240
+剁 > dùo; #5241
+剂 > jì; #5242
+剃 > tì; #5243
+剄 > jĭng; #5244
+剅 > lóu; #5245
+剆 > gēn; #5246
+則 > zé; #5247
+剈 > yuān; #5248
+剉 > cùo; #5249
+削 > xuē; #524A
+剋 > kè; #524B
+剌 > là; #524C
+前 > qián; #524D
+剎 > chà; #524E
+剏 > chuàng; #524F
+剐 > guă; #5250
+剑 > jiàn; #5251
+剒 > cùo; #5252
+剓 > lí; #5253
+剔 > tī; #5254
+剕 > fèi; #5255
+剖 > pōu; #5256
+剗 > chăn; #5257
+剘 > qí; #5258
+剙 > chuàng; #5259
+剚 > zì; #525A
+剛 > gāng; #525B
+剜 > wān; #525C
+剝 > bō; #525D
+剞 > jī; #525E
+剟 > dūo; #525F
+剠 > qíng; #5260
+剡 > yăn; #5261
+剢 > zhúo; #5262
+剣 > jiàn; #5263
+剤 > jì; #5264
+剥 > bō; #5265
+剦 > yān; #5266
+剧 > jù; #5267
+剨 > hùo; #5268
+剩 > shèng; #5269
+剪 > jiăn; #526A
+剫 > dúo; #526B
+剬 > duān; #526C
+剭 > wū; #526D
+剮 > guă; #526E
+副 > fù; #526F
+剰 > shèng; #5270
+剱 > jiàn; #5271
+割 > gē; #5272
+剳 > zhā; #5273
+剴 > kăi; #5274
+創 > chuàng; #5275
+剶 > juān; #5276
+剷 > chăn; #5277
+剸 > tuán; #5278
+剹 > lù; #5279
+剺 > lí; #527A
+剻 > fóu; #527B
+剼 > shān; #527C
+剽 > piào; #527D
+剾 > kōu; #527E
+剿 > jiăo; #527F
+劀 > guā; #5280
+劁 > qiāo; #5281
+劂 > jué; #5282
+劃 > huà; #5283
+劄 > zhá; #5284
+劅 > zhùo; #5285
+劆 > lián; #5286
+劇 > jù; #5287
+劈 > pī; #5288
+劉 > líu; #5289
+劊 > gùi; #528A
+劋 > jiăo; #528B
+劌 > gùi; #528C
+劍 > jiàn; #528D
+劎 > jiàn; #528E
+劏 > tāng; #528F
+劐 > hūo; #5290
+劑 > jì; #5291
+劒 > jiàn; #5292
+劓 > yì; #5293
+劔 > jiàn; #5294
+劕 > zhí; #5295
+劖 > chán; #5296
+劗 > cuán; #5297
+劘 > mó; #5298
+劙 > lí; #5299
+劚 > zhú; #529A
+力 > lì; #529B
+劜 > yā; #529C
+劝 > quàn; #529D
+办 > bàn; #529E
+功 > gōng; #529F
+加 > jiā; #52A0
+务 > wù; #52A1
+劢 > mài; #52A2
+劣 > liè; #52A3
+劤 > jìn; #52A4
+劥 > kēng; #52A5
+劦 > xié; #52A6
+劧 > zhĭ; #52A7
+动 > dòng; #52A8
+助 > zhù; #52A9
+努 > nŭ; #52AA
+劫 > jié; #52AB
+劬 > qú; #52AC
+劭 > shào; #52AD
+劮 > yì; #52AE
+劯 > zhū; #52AF
+劰 > miăo; #52B0
+励 > lì; #52B1
+劲 > jìng; #52B2
+劳 > láo; #52B3
+労 > láo; #52B4
+劵 > juàn; #52B5
+劶 > kŏu; #52B6
+劷 > yáng; #52B7
+劸 > wā; #52B8
+効 > xiào; #52B9
+劺 > móu; #52BA
+劻 > kuāng; #52BB
+劼 > jié; #52BC
+劽 > liè; #52BD
+劾 > hé; #52BE
+势 > shì; #52BF
+勀 > kè; #52C0
+勁 > jìng; #52C1
+勂 > háo; #52C2
+勃 > bó; #52C3
+勄 > mĭn; #52C4
+勅 > chì; #52C5
+勆 > láng; #52C6
+勇 > yŏng; #52C7
+勈 > yŏng; #52C8
+勉 > miăn; #52C9
+勊 > kè; #52CA
+勋 > xūn; #52CB
+勌 > juàn; #52CC
+勍 > qíng; #52CD
+勎 > lù; #52CE
+勏 > pŏu; #52CF
+勐 > mĕng; #52D0
+勑 > lài; #52D1
+勒 > lè; #52D2
+勓 > kài; #52D3
+勔 > miăn; #52D4
+動 > dòng; #52D5
+勖 > xù; #52D6
+勗 > xù; #52D7
+勘 > kān; #52D8
+務 > wù; #52D9
+勚 > yì; #52DA
+勛 > xūn; #52DB
+勜 > wĕng; #52DC
+勝 > shèng; #52DD
+勞 > láo; #52DE
+募 > mù; #52DF
+勠 > lù; #52E0
+勡 > piào; #52E1
+勢 > shì; #52E2
+勣 > jī; #52E3
+勤 > qín; #52E4
+勥 > qiăng; #52E5
+勦 > jiăo; #52E6
+勧 > quàn; #52E7
+勨 > yăng; #52E8
+勩 > yì; #52E9
+勪 > jué; #52EA
+勫 > fán; #52EB
+勬 > juàn; #52EC
+勭 > tóng; #52ED
+勮 > jù; #52EE
+勯 > dān; #52EF
+勰 > xié; #52F0
+勱 > mài; #52F1
+勲 > xūn; #52F2
+勳 > xūn; #52F3
+勴 > lǜ; #52F4
+勵 > lì; #52F5
+勶 > chè; #52F6
+勷 > ráng; #52F7
+勸 > quàn; #52F8
+勹 > bāo; #52F9
+勺 > sháo; #52FA
+勻 > yún; #52FB
+勼 > jīu; #52FC
+勽 > bào; #52FD
+勾 > gōu; #52FE
+勿 > wù; #52FF
+匀 > yún; #5300
+匃 > gài; #5303
+匄 > gài; #5304
+包 > bāo; #5305
+匆 > cōng; #5306
+匈 > xīong; #5308
+匉 > pēng; #5309
+匊 > jú; #530A
+匋 > táo; #530B
+匌 > gé; #530C
+匍 > pú; #530D
+匎 > àn; #530E
+匏 > páo; #530F
+匐 > fú; #5310
+匑 > gōng; #5311
+匒 > dá; #5312
+匓 > jìu; #5313
+匔 > qīong; #5314
+匕 > bĭ; #5315
+化 > huà; #5316
+北 > bĕi; #5317
+匘 > năo; #5318
+匙 > chí; #5319
+匚 > fāng; #531A
+匛 > jìu; #531B
+匜 > yí; #531C
+匝 > zā; #531D
+匞 > jiàng; #531E
+匟 > kàng; #531F
+匠 > jiàng; #5320
+匡 > kuāng; #5321
+匢 > hū; #5322
+匣 > xiá; #5323
+匤 > qū; #5324
+匥 > biàn; #5325
+匦 > gŭi; #5326
+匧 > qiè; #5327
+匨 > zāng; #5328
+匩 > kuāng; #5329
+匪 > fĕi; #532A
+匫 > hū; #532B
+匬 > tóu; #532C
+匭 > gŭi; #532D
+匮 > gùi; #532E
+匯 > hùi; #532F
+匰 > dān; #5330
+匱 > gùi; #5331
+匲 > lián; #5332
+匳 > lián; #5333
+匴 > suăn; #5334
+匵 > dú; #5335
+匶 > jìu; #5336
+匷 > qú; #5337
+匸 > xĭ; #5338
+匹 > pĭ; #5339
+区 > qū; #533A
+医 > yì; #533B
+匼 > qià; #533C
+匽 > yăn; #533D
+匾 > biăn; #533E
+匿 > nì; #533F
+區 > qū; #5340
+十 > shí; #5341
+卂 > xìn; #5342
+千 > qiān; #5343
+卄 > niàn; #5344
+卅 > sà; #5345
+卆 > zú; #5346
+升 > shēng; #5347
+午 > wŭ; #5348
+卉 > hùi; #5349
+半 > bàn; #534A
+卋 > shì; #534B
+卌 > xì; #534C
+卍 > wàn; #534D
+华 > huá; #534E
+协 > xié; #534F
+卐 > wàn; #5350
+卑 > bēi; #5351
+卒 > zú; #5352
+卓 > zhūo; #5353
+協 > xié; #5354
+单 > dān; #5355
+卖 > mài; #5356
+南 > nán; #5357
+単 > dān; #5358
+卙 > jí; #5359
+博 > bó; #535A
+卛 > shuài; #535B
+卜 > bŭ; #535C
+卝 > kuàng; #535D
+卞 > biàn; #535E
+卟 > bŭ; #535F
+占 > zhān; #5360
+卡 > qiă; #5361
+卢 > lú; #5362
+卣 > yŏu; #5363
+卤 > lŭ; #5364
+卥 > xī; #5365
+卦 > guà; #5366
+卧 > wò; #5367
+卨 > xiè; #5368
+卩 > jié; #5369
+卪 > jié; #536A
+卫 > wèi; #536B
+卬 > áng; #536C
+卭 > qíong; #536D
+卮 > zhī; #536E
+卯 > măo; #536F
+印 > yìn; #5370
+危 > wēi; #5371
+卲 > shào; #5372
+即 > jí; #5373
+却 > què; #5374
+卵 > luăn; #5375
+卶 > shì; #5376
+卷 > juàn; #5377
+卸 > xiè; #5378
+卹 > xù; #5379
+卺 > jĭn; #537A
+卻 > què; #537B
+卼 > wù; #537C
+卽 > jí; #537D
+卾 > è; #537E
+卿 > qīng; #537F
+厀 > xī; #5380
+厂 > hàn; #5382
+厃 > zhān; #5383
+厄 > è; #5384
+厅 > tīng; #5385
+历 > lì; #5386
+厇 > zhé; #5387
+厈 > hăn; #5388
+厉 > lì; #5389
+厊 > yă; #538A
+压 > yā; #538B
+厌 > yàn; #538C
+厍 > shè; #538D
+厎 > zhĭ; #538E
+厏 > zhă; #538F
+厐 > páng; #5390
+厒 > hé; #5392
+厓 > yá; #5393
+厔 > zhì; #5394
+厕 > cè; #5395
+厖 > páng; #5396
+厗 > tí; #5397
+厘 > lí; #5398
+厙 > shè; #5399
+厚 > hòu; #539A
+厛 > tīng; #539B
+厜 > zūi; #539C
+厝 > cùo; #539D
+厞 > fèi; #539E
+原 > yuán; #539F
+厠 > cè; #53A0
+厡 > yuán; #53A1
+厢 > xiāng; #53A2
+厣 > yăn; #53A3
+厤 > lì; #53A4
+厥 > jué; #53A5
+厦 > shà; #53A6
+厧 > diān; #53A7
+厨 > chú; #53A8
+厩 > jìu; #53A9
+厪 > qín; #53AA
+厫 > áo; #53AB
+厬 > gŭi; #53AC
+厭 > yàn; #53AD
+厮 > sī; #53AE
+厯 > lì; #53AF
+厰 > chăng; #53B0
+厱 > lán; #53B1
+厲 > lì; #53B2
+厳 > yán; #53B3
+厴 > yăn; #53B4
+厵 > yuán; #53B5
+厶 > sī; #53B6
+厷 > gōng; #53B7
+厸 > lín; #53B8
+厹 > qíu; #53B9
+厺 > qù; #53BA
+去 > qù; #53BB
+厽 > lĕi; #53BD
+厾 > dū; #53BE
+县 > xiàn; #53BF
+叀 > zhuān; #53C0
+叁 > sān; #53C1
+参 > cān; #53C2
+參 > cān; #53C3
+叄 > cān; #53C4
+叅 > cān; #53C5
+叆 > ài; #53C6
+叇 > dài; #53C7
+又 > yòu; #53C8
+叉 > cha; #53C9
+及 > jí; #53CA
+友 > yŏu; #53CB
+双 > shuāng; #53CC
+反 > făn; #53CD
+収 > shōu; #53CE
+叏 > guài; #53CF
+叐 > bá; #53D0
+发 > fā; #53D1
+叒 > rùo; #53D2
+叓 > shì; #53D3
+叔 > shū; #53D4
+叕 > zhúo; #53D5
+取 > qū; #53D6
+受 > shòu; #53D7
+变 > biàn; #53D8
+叙 > xù; #53D9
+叚 > jiă; #53DA
+叛 > pàn; #53DB
+叜 > sŏu; #53DC
+叝 > gào; #53DD
+叞 > wèi; #53DE
+叟 > sŏu; #53DF
+叠 > dié; #53E0
+叡 > rùi; #53E1
+叢 > cóng; #53E2
+口 > kŏu; #53E3
+古 > gŭ; #53E4
+句 > jù; #53E5
+另 > lìng; #53E6
+叧 > guă; #53E7
+叨 > tāo; #53E8
+叩 > kòu; #53E9
+只 > zhĭ; #53EA
+叫 > jiào; #53EB
+召 > zhào; #53EC
+叭 > bā; #53ED
+叮 > dīng; #53EE
+可 > kĕ; #53EF
+台 > tái; #53F0
+叱 > chì; #53F1
+史 > shĭ; #53F2
+右 > yòu; #53F3
+叴 > qíu; #53F4
+叵 > pŏ; #53F5
+叶 > xié; #53F6
+号 > hào; #53F7
+司 > sī; #53F8
+叹 > tàn; #53F9
+叺 > chĭ; #53FA
+叻 > lè; #53FB
+叼 > diāo; #53FC
+叽 > jī; #53FD
+叿 > hōng; #53FF
+吀 > miē; #5400
+吁 > xū; #5401
+吂 > máng; #5402
+吃 > chī; #5403
+各 > gè; #5404
+吅 > xuān; #5405
+吆 > yāo; #5406
+吇 > zĭ; #5407
+合 > hé; #5408
+吉 > jí; #5409
+吊 > diào; #540A
+吋 > cùn; #540B
+同 > tóng; #540C
+名 > míng; #540D
+后 > hòu; #540E
+吏 > lì; #540F
+吐 > tŭ; #5410
+向 > xiàng; #5411
+吒 > zhà; #5412
+吓 > xià; #5413
+吔 > yĕ; #5414
+吕 > lǚ; #5415
+吖 > ā; #5416
+吗 > ma; #5417
+吘 > ŏu; #5418
+吙 > xuē; #5419
+吚 > yī; #541A
+君 > jūn; #541B
+吜 > chŏu; #541C
+吝 > lìn; #541D
+吞 > tūn; #541E
+吟 > yín; #541F
+吠 > fèi; #5420
+吡 > bĭ; #5421
+吢 > qìn; #5422
+吣 > qìn; #5423
+吤 > jiè; #5424
+吥 > bù; #5425
+否 > fŏu; #5426
+吧 > ba; #5427
+吨 > dūn; #5428
+吩 > fēn; #5429
+吪 > é; #542A
+含 > hán; #542B
+听 > tīng; #542C
+吭 > háng; #542D
+吮 > shŭn; #542E
+启 > qĭ; #542F
+吰 > hóng; #5430
+吱 > zhī; #5431
+吲 > shĕn; #5432
+吳 > wú; #5433
+吴 > wú; #5434
+吵 > chăo; #5435
+吶 > nè; #5436
+吷 > xuè; #5437
+吸 > xī; #5438
+吹 > chūi; #5439
+吺 > dōu; #543A
+吻 > wĕn; #543B
+吼 > hŏu; #543C
+吽 > óu; #543D
+吾 > wú; #543E
+吿 > gào; #543F
+呀 > yā; #5440
+呁 > jùn; #5441
+呂 > lǚ; #5442
+呃 > è; #5443
+呄 > gé; #5444
+呅 > méi; #5445
+呆 > ái; #5446
+呇 > qĭ; #5447
+呈 > chéng; #5448
+呉 > wú; #5449
+告 > gào; #544A
+呋 > fū; #544B
+呌 > jiào; #544C
+呍 > hōng; #544D
+呎 > chĭ; #544E
+呏 > shēng; #544F
+呐 > nè; #5450
+呑 > tūn; #5451
+呒 > fŭ; #5452
+呓 > yì; #5453
+呔 > dāi; #5454
+呕 > ōu; #5455
+呖 > lì; #5456
+呗 > bài; #5457
+员 > yuán; #5458
+呙 > kuāi; #5459
+呛 > qiāng; #545B
+呜 > wū; #545C
+呝 > è; #545D
+呞 > shī; #545E
+呟 > quăn; #545F
+呠 > pēn; #5460
+呡 > wĕn; #5461
+呢 > ní; #5462
+呣 > ḿ; #5463
+呤 > lĭng; #5464
+呥 > răn; #5465
+呦 > yōu; #5466
+呧 > dĭ; #5467
+周 > zhōu; #5468
+呩 > shì; #5469
+呪 > zhòu; #546A
+呫 > tiē; #546B
+呬 > xì; #546C
+呭 > yì; #546D
+呮 > qì; #546E
+呯 > píng; #546F
+呰 > zĭ; #5470
+呱 > gū; #5471
+呲 > zī; #5472
+味 > wèi; #5473
+呴 > xū; #5474
+呵 > hē; #5475
+呶 > náo; #5476
+呷 > xiā; #5477
+呸 > pēi; #5478
+呹 > yì; #5479
+呺 > xiāo; #547A
+呻 > shēn; #547B
+呼 > hū; #547C
+命 > mìng; #547D
+呾 > dá; #547E
+呿 > qū; #547F
+咀 > jŭ; #5480
+咁 > gèm; #5481
+咂 > zā; #5482
+咃 > tūo; #5483
+咄 > dūo; #5484
+咅 > pòu; #5485
+咆 > páo; #5486
+咇 > bì; #5487
+咈 > fú; #5488
+咉 > yāng; #5489
+咊 > hé; #548A
+咋 > zhà; #548B
+和 > hé; #548C
+咍 > hāi; #548D
+咎 > jìu; #548E
+咏 > yŏng; #548F
+咐 > fù; #5490
+咑 > què; #5491
+咒 > zhòu; #5492
+咓 > wă; #5493
+咔 > kă; #5494
+咕 > gū; #5495
+咖 > kā; #5496
+咗 > zŭo; #5497
+咘 > bù; #5498
+咙 > lóng; #5499
+咚 > dōng; #549A
+咛 > níng; #549B
+咝 > sī; #549D
+咞 > xiàn; #549E
+咟 > hùo; #549F
+咠 > qì; #54A0
+咡 > èr; #54A1
+咢 > è; #54A2
+咣 > guāng; #54A3
+咤 > zhà; #54A4
+咥 > xì; #54A5
+咦 > yí; #54A6
+咧 > liĕ; #54A7
+咨 > zī; #54A8
+咩 > miē; #54A9
+咪 > mī; #54AA
+咫 > zhĭ; #54AB
+咬 > yăo; #54AC
+咭 > jī; #54AD
+咮 > zhòu; #54AE
+咯 > gē; #54AF
+咰 > shuài; #54B0
+咱 > zán; #54B1
+咲 > xiào; #54B2
+咳 > ké; #54B3
+咴 > hūi; #54B4
+咵 > kuā; #54B5
+咶 > huài; #54B6
+咷 > táo; #54B7
+咸 > xián; #54B8
+咹 > è; #54B9
+咺 > xuān; #54BA
+咻 > xīu; #54BB
+咼 > wāi; #54BC
+咽 > yān; #54BD
+咾 > lăo; #54BE
+咿 > yī; #54BF
+哀 > āi; #54C0
+品 > pĭn; #54C1
+哂 > shĕn; #54C2
+哃 > tóng; #54C3
+哄 > hōng; #54C4
+哅 > xīong; #54C5
+哆 > chĭ; #54C6
+哇 > wā; #54C7
+哈 > hā; #54C8
+哉 > zāi; #54C9
+哊 > yù; #54CA
+哋 > dì; #54CB
+哌 > pài; #54CC
+响 > xiăng; #54CD
+哎 > āi; #54CE
+哏 > hĕn; #54CF
+哐 > kuāng; #54D0
+哑 > yă; #54D1
+哒 > dā; #54D2
+哓 > xiāo; #54D3
+哔 > bì; #54D4
+哕 > yuĕ; #54D5
+哗 > huā; #54D7
+哙 > kuài; #54D9
+哚 > dŭo; #54DA
+哜 > jì; #54DC
+哝 > nóng; #54DD
+哞 > mōu; #54DE
+哟 > yo; #54DF
+哠 > hào; #54E0
+員 > yuán; #54E1
+哢 > lòng; #54E2
+哣 > pŏu; #54E3
+哤 > máng; #54E4
+哥 > gē; #54E5
+哦 > é; #54E6
+哧 > chī; #54E7
+哨 > shào; #54E8
+哩 > lī; #54E9
+哪 > nă; #54EA
+哫 > zú; #54EB
+哬 > hé; #54EC
+哭 > kū; #54ED
+哮 > xiāo; #54EE
+哯 > xiàn; #54EF
+哰 > láo; #54F0
+哱 > bō; #54F1
+哲 > zhé; #54F2
+哳 > zhā; #54F3
+哴 > liàng; #54F4
+哵 > bā; #54F5
+哶 > miē; #54F6
+哷 > lè; #54F7
+哸 > sūi; #54F8
+哹 > fóu; #54F9
+哺 > bŭ; #54FA
+哻 > hàn; #54FB
+哼 > hēng; #54FC
+哽 > gĕng; #54FD
+哾 > shūo; #54FE
+哿 > gĕ; #54FF
+唀 > yŏu; #5500
+唁 > yàn; #5501
+唂 > gŭ; #5502
+唃 > gŭ; #5503
+唄 > bài; #5504
+唅 > hān; #5505
+唆 > sūo; #5506
+唇 > chún; #5507
+唈 > yì; #5508
+唉 > āi; #5509
+唊 > jiá; #550A
+唋 > tŭ; #550B
+唌 > xián; #550C
+唍 > huăn; #550D
+唎 > lī; #550E
+唏 > xī; #550F
+唐 > táng; #5510
+唑 > zùo; #5511
+唒 > qíu; #5512
+唓 > chē; #5513
+唔 > wú; #5514
+唕 > zào; #5515
+唖 > yă; #5516
+唗 > dōu; #5517
+唘 > qĭ; #5518
+唙 > dí; #5519
+唚 > qìn; #551A
+唛 > mà; #551B
+唝 > hŏng; #551D
+唞 > dŏu; #551E
+唠 > láo; #5520
+唡 > liăng; #5521
+唢 > sŭo; #5522
+唣 > zào; #5523
+唤 > huàn; #5524
+唦 > shā; #5526
+唧 > jī; #5527
+唨 > zŭo; #5528
+唩 > wō; #5529
+唪 > fĕng; #552A
+唫 > yín; #552B
+唬 > hŭ; #552C
+唭 > qī; #552D
+售 > shòu; #552E
+唯 > wéi; #552F
+唰 > shuā; #5530
+唱 > chàng; #5531
+唲 > ér; #5532
+唳 > lì; #5533
+唴 > qiàng; #5534
+唵 > ăn; #5535
+唶 > jiè; #5536
+唷 > yō; #5537
+唸 > niàn; #5538
+唹 > yū; #5539
+唺 > tiăn; #553A
+唻 > lăi; #553B
+唼 > shà; #553C
+唽 > xī; #553D
+唾 > tùo; #553E
+唿 > hū; #553F
+啀 > ái; #5540
+啁 > zhōu; #5541
+啂 > nòu; #5542
+啃 > kĕn; #5543
+啄 > zhúo; #5544
+啅 > zhúo; #5545
+商 > shāng; #5546
+啇 > dí; #5547
+啈 > hèng; #5548
+啉 > lán; #5549
+啊 > a; #554A
+啋 > xiāo; #554B
+啌 > xiāng; #554C
+啍 > tūn; #554D
+啎 > wŭ; #554E
+問 > wèn; #554F
+啐 > cùi; #5550
+啑 > shà; #5551
+啒 > hū; #5552
+啓 > qĭ; #5553
+啔 > qĭ; #5554
+啕 > táo; #5555
+啖 > dàn; #5556
+啗 > dàn; #5557
+啘 > yè; #5558
+啙 > zĭ; #5559
+啚 > bĭ; #555A
+啛 > cùi; #555B
+啜 > chùo; #555C
+啝 > hé; #555D
+啞 > yă; #555E
+啟 > qĭ; #555F
+啠 > zhé; #5560
+啡 > pēi; #5561
+啢 > liăng; #5562
+啣 > xián; #5563
+啤 > pí; #5564
+啥 > shà; #5565
+啦 > la; #5566
+啧 > zé; #5567
+啨 > qīng; #5568
+啩 > guà; #5569
+啪 > pā; #556A
+啫 > zhĕ; #556B
+啬 > sè; #556C
+啭 > zhuàn; #556D
+啮 > niè; #556E
+啯 > guo; #556F
+啰 > lūo; #5570
+啱 > yān; #5571
+啲 > dì; #5572
+啳 > quán; #5573
+啴 > tān; #5574
+啵 > bo; #5575
+啶 > dìng; #5576
+啷 > lāng; #5577
+啸 > xiào; #5578
+啺 > táng; #557A
+啻 > chì; #557B
+啼 > tí; #557C
+啽 > án; #557D
+啾 > jīu; #557E
+啿 > dàn; #557F
+喀 > kè; #5580
+喁 > yóng; #5581
+喂 > wèi; #5582
+喃 > nán; #5583
+善 > shàn; #5584
+喅 > yù; #5585
+喆 > zhé; #5586
+喇 > lă; #5587
+喈 > jiē; #5588
+喉 > hóu; #5589
+喊 > hăn; #558A
+喋 > dié; #558B
+喌 > zhōu; #558C
+喍 > chái; #558D
+喎 > wāi; #558E
+喏 > rĕ; #558F
+喐 > yù; #5590
+喑 > yīn; #5591
+喒 > zán; #5592
+喓 > yāo; #5593
+喔 > wō; #5594
+喕 > miăn; #5595
+喖 > hú; #5596
+喗 > yŭn; #5597
+喘 > chuăn; #5598
+喙 > hùi; #5599
+喚 > huàn; #559A
+喛 > huàn; #559B
+喜 > xĭ; #559C
+喝 > hē; #559D
+喞 > jī; #559E
+喟 > kùi; #559F
+喠 > zhŏng; #55A0
+喡 > wĕi; #55A1
+喢 > shà; #55A2
+喣 > xŭ; #55A3
+喤 > huáng; #55A4
+喥 > dù; #55A5
+喦 > niè; #55A6
+喧 > 1xuān; #55A7
+喨 > liàng; #55A8
+喩 > yù; #55A9
+喪 > sāng; #55AA
+喫 > chī; #55AB
+喬 > qiáo; #55AC
+喭 > yàn; #55AD
+單 > dān; #55AE
+喯 > pēn; #55AF
+喰 > cān; #55B0
+喱 > lí; #55B1
+喲 > yo; #55B2
+喳 > zhā; #55B3
+喴 > wēi; #55B4
+喵 > miāo; #55B5
+営 > yíng; #55B6
+喷 > pēn; #55B7
+喹 > kúi; #55B9
+喺 > xì; #55BA
+喻 > yù; #55BB
+喼 > jié; #55BC
+喽 > lou; #55BD
+喾 > kù; #55BE
+喿 > sào; #55BF
+嗀 > hùo; #55C0
+嗁 > tí; #55C1
+嗂 > yáo; #55C2
+嗃 > hè; #55C3
+嗄 > á; #55C4
+嗅 > xìu; #55C5
+嗆 > qiāng; #55C6
+嗇 > sè; #55C7
+嗈 > yōng; #55C8
+嗉 > sù; #55C9
+嗊 > hŏng; #55CA
+嗋 > xié; #55CB
+嗌 > yì; #55CC
+嗍 > sūo; #55CD
+嗎 > ma; #55CE
+嗏 > chā; #55CF
+嗐 > hài; #55D0
+嗑 > kè; #55D1
+嗒 > tà; #55D2
+嗓 > săng; #55D3
+嗔 > tián; #55D4
+嗕 > rù; #55D5
+嗖 > sōu; #55D6
+嗗 > wā; #55D7
+嗘 > jī; #55D8
+嗙 > păng; #55D9
+嗚 > wū; #55DA
+嗛 > xián; #55DB
+嗜 > shì; #55DC
+嗝 > gé; #55DD
+嗞 > zī; #55DE
+嗟 > jiē; #55DF
+嗠 > lùo; #55E0
+嗡 > wēng; #55E1
+嗢 > wà; #55E2
+嗣 > sì; #55E3
+嗤 > chī; #55E4
+嗥 > háo; #55E5
+嗦 > sūo; #55E6
+嗧 > jiā' 'lún; #55E7
+嗨 > hăi; #55E8
+嗩 > sŭo; #55E9
+嗪 > qín; #55EA
+嗫 > niè; #55EB
+嗬 > hē; #55EC
+嗮 > sài; #55EE
+嗯 > ǹg; #55EF
+嗰 > gè; #55F0
+嗱 > ná; #55F1
+嗲 > diă; #55F2
+嗳 > ài; #55F3
+嗵 > tōng; #55F5
+嗶 > bì; #55F6
+嗷 > áo; #55F7
+嗸 > áo; #55F8
+嗹 > lián; #55F9
+嗺 > cūi; #55FA
+嗻 > zhē; #55FB
+嗼 > mò; #55FC
+嗽 > sòu; #55FD
+嗾 > sŏu; #55FE
+嗿 > tăn; #55FF
+嘀 > dí; #5600
+嘁 > qī; #5601
+嘂 > jiào; #5602
+嘃 > chōng; #5603
+嘄 > jiāo; #5604
+嘅 > kăi; #5605
+嘆 > tàn; #5606
+嘇 > sān; #5607
+嘈 > cáo; #5608
+嘉 > jiā; #5609
+嘊 > ái; #560A
+嘋 > xiāo; #560B
+嘌 > piāo; #560C
+嘍 > lou; #560D
+嘎 > gā; #560E
+嘏 > gŭ; #560F
+嘐 > xiāo; #5610
+嘑 > hū; #5611
+嘒 > hùi; #5612
+嘓 > guo; #5613
+嘔 > ōu; #5614
+嘕 > xiān; #5615
+嘖 > zé; #5616
+嘗 > cháng; #5617
+嘘 > xū; #5618
+嘙 > pó; #5619
+嘚 > dé; #561A
+嘛 > ma; #561B
+嘜 > mà; #561C
+嘝 > hú; #561D
+嘞 > lei; #561E
+嘟 > dū; #561F
+嘠 > gā; #5620
+嘡 > tāng; #5621
+嘢 > yĕ; #5622
+嘣 > bēng; #5623
+嘤 > yīng; #5624
+嘦 > jiào; #5626
+嘧 > mī; #5627
+嘨 > xiào; #5628
+嘩 > huā; #5629
+嘪 > măi; #562A
+嘫 > rán; #562B
+嘬 > zūo; #562C
+嘭 > pēng; #562D
+嘮 > láo; #562E
+嘯 > xiào; #562F
+嘰 > jī; #5630
+嘱 > zhŭ; #5631
+嘲 > cháo; #5632
+嘳 > kùi; #5633
+嘴 > zŭi; #5634
+嘵 > xiāo; #5635
+嘶 > sī; #5636
+嘷 > háo; #5637
+嘸 > fŭ; #5638
+嘹 > liáo; #5639
+嘺 > qiáo; #563A
+嘻 > xī; #563B
+嘼 > xìu; #563C
+嘽 > tān; #563D
+嘾 > tán; #563E
+嘿 > mò; #563F
+噀 > xùn; #5640
+噁 > ĕ; #5641
+噂 > zŭn; #5642
+噃 > fān; #5643
+噄 > chī; #5644
+噅 > hūi; #5645
+噆 > zăn; #5646
+噇 > chuáng; #5647
+噈 > cù; #5648
+噉 > dàn; #5649
+噊 > yù; #564A
+噋 > tūn; #564B
+噌 > chēng; #564C
+噍 > jiào; #564D
+噎 > yē; #564E
+噏 > xī; #564F
+噐 > qì; #5650
+噑 > háo; #5651
+噒 > lián; #5652
+噓 > xū; #5653
+噔 > dēng; #5654
+噕 > hūi; #5655
+噖 > yín; #5656
+噗 > pū; #5657
+噘 > juē; #5658
+噙 > qín; #5659
+噚 > xún; #565A
+噛 > niè; #565B
+噜 > lū; #565C
+噝 > sī; #565D
+噞 > yăn; #565E
+噟 > yìng; #565F
+噠 > dā; #5660
+噡 > dān; #5661
+噢 > yŭ; #5662
+噣 > zhòu; #5663
+噤 > jìn; #5664
+噥 > nóng; #5665
+噦 > yuĕ; #5666
+噧 > hùi; #5667
+器 > qì; #5668
+噩 > è; #5669
+噪 > zào; #566A
+噫 > yī; #566B
+噬 > shì; #566C
+噭 > jiào; #566D
+噮 > yuān; #566E
+噯 > ài; #566F
+噰 > yōng; #5670
+噱 > jué; #5671
+噲 > kuài; #5672
+噳 > yŭ; #5673
+噴 > pēn; #5674
+噵 > dào; #5675
+噶 > gé; #5676
+噷 > xīn; #5677
+噸 > dūn; #5678
+噹 > dāng; #5679
+噻 > sai; #567B
+噼 > pī; #567C
+噽 > pĭ; #567D
+噾 > yīn; #567E
+噿 > zŭi; #567F
+嚀 > níng; #5680
+嚁 > dí; #5681
+嚂 > làn; #5682
+嚃 > tā; #5683
+嚄 > hùo; #5684
+嚅 > rú; #5685
+嚆 > hāo; #5686
+嚇 > xià; #5687
+嚈 > yà; #5688
+嚉 > dūo; #5689
+嚊 > xì; #568A
+嚋 > chóu; #568B
+嚌 > jì; #568C
+嚍 > jìn; #568D
+嚎 > háo; #568E
+嚏 > tì; #568F
+嚐 > cháng; #5690
+嚓 > cā; #5693
+嚔 > tì; #5694
+嚕 > lū; #5695
+嚖 > hùi; #5696
+嚗 > bó; #5697
+嚘 > yōu; #5698
+嚙 > niè; #5699
+嚚 > yín; #569A
+嚛 > hù; #569B
+嚜 > mò; #569C
+嚝 > huāng; #569D
+嚞 > zhé; #569E
+嚟 > lí; #569F
+嚠 > líu; #56A0
+嚢 > náng; #56A2
+嚣 > xiāo; #56A3
+嚤 > mó; #56A4
+嚥 > yàn; #56A5
+嚦 > lì; #56A6
+嚧 > lú; #56A7
+嚨 > lóng; #56A8
+嚩 > fú; #56A9
+嚪 > dàn; #56AA
+嚫 > chèn; #56AB
+嚬 > pín; #56AC
+嚭 > pĭ; #56AD
+嚮 > xiàng; #56AE
+嚯 > hùo; #56AF
+嚰 > mó; #56B0
+嚱 > xì; #56B1
+嚲 > dŭo; #56B2
+嚳 > kù; #56B3
+嚴 > yán; #56B4
+嚵 > chán; #56B5
+嚶 > yīng; #56B6
+嚷 > răng; #56B7
+嚸 > diăn; #56B8
+嚹 > lā; #56B9
+嚺 > tà; #56BA
+嚻 > xiāo; #56BB
+嚼 > jiáo; #56BC
+嚽 > chùo; #56BD
+嚾 > huān; #56BE
+嚿 > hùo; #56BF
+囀 > zhuàn; #56C0
+囁 > niè; #56C1
+囂 > xiāo; #56C2
+囃 > cà; #56C3
+囄 > lí; #56C4
+囅 > chăn; #56C5
+囆 > chài; #56C6
+囇 > lì; #56C7
+囈 > yì; #56C8
+囉 > lūo; #56C9
+囊 > náng; #56CA
+囋 > zàn; #56CB
+囌 > sū; #56CC
+囍 > xĭ; #56CD
+囏 > jiān; #56CF
+囐 > zá; #56D0
+囑 > zhŭ; #56D1
+囒 > lán; #56D2
+囓 > niè; #56D3
+囔 > nāng; #56D4
+囗 > wéi; #56D7
+囘 > húi; #56D8
+囙 > yīn; #56D9
+囚 > qíu; #56DA
+四 > sì; #56DB
+囜 > nín; #56DC
+囝 > jiăn; #56DD
+回 > húi; #56DE
+囟 > xìn; #56DF
+因 > yīn; #56E0
+囡 > nān; #56E1
+团 > tuán; #56E2
+団 > tuán; #56E3
+囤 > dùn; #56E4
+囥 > kàng; #56E5
+囦 > yuān; #56E6
+囧 > jĭong; #56E7
+囨 > piān; #56E8
+囩 > yùn; #56E9
+囪 > cōng; #56EA
+囫 > hú; #56EB
+囬 > húi; #56EC
+园 > yuán; #56ED
+囮 > yóu; #56EE
+囯 > gúo; #56EF
+困 > kùn; #56F0
+囱 > cōng; #56F1
+囲 > wéi; #56F2
+図 > tú; #56F3
+围 > wéi; #56F4
+囵 > lún; #56F5
+囶 > gúo; #56F6
+囷 > qūn; #56F7
+囸 > rì; #56F8
+囹 > líng; #56F9
+固 > gù; #56FA
+囻 > gúo; #56FB
+囼 > tāi; #56FC
+国 > gúo; #56FD
+图 > tú; #56FE
+囿 > yòu; #56FF
+圀 > gúo; #5700
+圁 > yín; #5701
+圂 > hùn; #5702
+圃 > pŭ; #5703
+圄 > yŭ; #5704
+圅 > hán; #5705
+圆 > yuán; #5706
+圇 > lún; #5707
+圈 > quān; #5708
+圉 > yŭ; #5709
+圊 > qīng; #570A
+國 > gúo; #570B
+圌 > chuán; #570C
+圍 > wéi; #570D
+圎 > yuán; #570E
+圏 > quān; #570F
+圐 > kū; #5710
+圑 > fù; #5711
+園 > yuán; #5712
+圓 > yuán; #5713
+圔 > è; #5714
+圕 > tú' 'shū' 'guăn; #5715
+圖 > tú; #5716
+圗 > tú; #5717
+團 > tuán; #5718
+圙 > lǜe; #5719
+圚 > hùi; #571A
+圛 > yì; #571B
+圜 > yuán; #571C
+圝 > luán; #571D
+圞 > luán; #571E
+土 > tŭ; #571F
+圠 > yà; #5720
+圡 > tŭ; #5721
+圢 > tīng; #5722
+圣 > shèng; #5723
+圤 > pŭ; #5724
+圥 > lù; #5725
+圧 > yā; #5727
+在 > zài; #5728
+圩 > wéi; #5729
+圪 > gē; #572A
+圫 > yù; #572B
+圬 > wū; #572C
+圭 > gūi; #572D
+圮 > pĭ; #572E
+圯 > yí; #572F
+地 > dì; #5730
+圱 > qiān; #5731
+圲 > qiān; #5732
+圳 > zhèn; #5733
+圴 > zhúo; #5734
+圵 > dàng; #5735
+圶 > qià; #5736
+圹 > kuàng; #5739
+场 > cháng; #573A
+圻 > qí; #573B
+圼 > niè; #573C
+圽 > mò; #573D
+圾 > jí; #573E
+圿 > jiá; #573F
+址 > zhĭ; #5740
+坁 > zhĭ; #5741
+坂 > băn; #5742
+坃 > xūn; #5743
+坄 > tóu; #5744
+坅 > qĭn; #5745
+坆 > fén; #5746
+均 > jūn; #5747
+坈 > kēng; #5748
+坉 > tún; #5749
+坊 > fāng; #574A
+坋 > fèn; #574B
+坌 > bèn; #574C
+坍 > tān; #574D
+坎 > kăn; #574E
+坏 > pī; #574F
+坐 > zùo; #5750
+坑 > kēng; #5751
+坒 > bì; #5752
+坓 > xíng; #5753
+坔 > dì; #5754
+坕 > jīng; #5755
+坖 > jì; #5756
+块 > kuài; #5757
+坘 > dĭ; #5758
+坙 > jīng; #5759
+坚 > jiān; #575A
+坛 > tán; #575B
+坜 > lì; #575C
+坝 > bà; #575D
+坞 > wù; #575E
+坟 > fén; #575F
+坠 > zhùi; #5760
+坡 > pō; #5761
+坢 > păn; #5762
+坣 > tāng; #5763
+坤 > kūn; #5764
+坥 > qū; #5765
+坦 > tăn; #5766
+坧 > zhī; #5767
+坨 > túo; #5768
+坩 > gān; #5769
+坪 > píng; #576A
+坫 > diàn; #576B
+坬 > guà; #576C
+坭 > ní; #576D
+坮 > tái; #576E
+坯 > pī; #576F
+坰 > jīong; #5770
+坱 > yăng; #5771
+坲 > fó; #5772
+坳 > ào; #5773
+坴 > lìu; #5774
+坵 > qīu; #5775
+坶 > mù; #5776
+坷 > kĕ; #5777
+坸 > gòu; #5778
+坹 > xuè; #5779
+坺 > bá; #577A
+坻 > chí; #577B
+坼 > chè; #577C
+坽 > líng; #577D
+坾 > zhù; #577E
+坿 > fù; #577F
+垀 > hū; #5780
+垁 > zhì; #5781
+垂 > chúi; #5782
+垃 > lā; #5783
+垄 > lŏng; #5784
+垅 > lŏng; #5785
+垆 > lú; #5786
+垇 > ào; #5787
+垉 > páo; #5789
+型 > xíng; #578B
+垌 > dòng; #578C
+垍 > jì; #578D
+垎 > kè; #578E
+垏 > lù; #578F
+垐 > cí; #5790
+垑 > chĭ; #5791
+垒 > lĕi; #5792
+垓 > gāi; #5793
+垔 > yīn; #5794
+垕 > hòu; #5795
+垖 > dūi; #5796
+垗 > zhào; #5797
+垘 > fú; #5798
+垙 > guāng; #5799
+垚 > yáo; #579A
+垛 > dŭo; #579B
+垜 > dŭo; #579C
+垝 > gŭi; #579D
+垞 > chá; #579E
+垟 > yáng; #579F
+垠 > yín; #57A0
+垡 > fá; #57A1
+垢 > gòu; #57A2
+垣 > yuán; #57A3
+垤 > dié; #57A4
+垥 > xié; #57A5
+垦 > kĕn; #57A6
+垧 > jīong; #57A7
+垨 > shŏu; #57A8
+垩 > è; #57A9
+垫 > diàn; #57AB
+垬 > hóng; #57AC
+垭 > wù; #57AD
+垮 > kuă; #57AE
+垱 > dàng; #57B1
+垲 > kăi; #57B2
+垴 > năo; #57B4
+垵 > ăn; #57B5
+垶 > xīng; #57B6
+垷 > xiàn; #57B7
+垸 > huàn; #57B8
+垹 > bāng; #57B9
+垺 > pēi; #57BA
+垻 > bà; #57BB
+垼 > yì; #57BC
+垽 > yìn; #57BD
+垾 > hàn; #57BE
+垿 > xù; #57BF
+埀 > chúi; #57C0
+埁 > cén; #57C1
+埂 > gĕng; #57C2
+埃 > āi; #57C3
+埄 > péng; #57C4
+埅 > fáng; #57C5
+埆 > què; #57C6
+埇 > yŏng; #57C7
+埈 > xùn; #57C8
+埉 > jiá; #57C9
+埊 > dì; #57CA
+埋 > mái; #57CB
+埌 > làng; #57CC
+埍 > xuàn; #57CD
+城 > chéng; #57CE
+埏 > yán; #57CF
+埐 > jīn; #57D0
+埑 > zhé; #57D1
+埒 > lèi; #57D2
+埓 > liè; #57D3
+埔 > bù; #57D4
+埕 > chéng; #57D5
+埗 > bù; #57D7
+埘 > shí; #57D8
+埙 > xūn; #57D9
+埚 > gūo; #57DA
+埛 > jīong; #57DB
+埜 > yĕ; #57DC
+埝 > niàn; #57DD
+埞 > dĭ; #57DE
+域 > yù; #57DF
+埠 > bù; #57E0
+埡 > yà; #57E1
+埢 > juăn; #57E2
+埣 > sùi; #57E3
+埤 > pí; #57E4
+埥 > chēng; #57E5
+埦 > wăn; #57E6
+埧 > jù; #57E7
+埨 > lŭn; #57E8
+埩 > zhēng; #57E9
+埪 > kōng; #57EA
+埫 > chŏng; #57EB
+埬 > dōng; #57EC
+埭 > dài; #57ED
+埮 > tàn; #57EE
+埯 > ăn; #57EF
+埰 > cài; #57F0
+埱 > shú; #57F1
+埲 > bĕng; #57F2
+埳 > kăn; #57F3
+埴 > zhí; #57F4
+埵 > dŭo; #57F5
+埶 > yì; #57F6
+執 > zhí; #57F7
+埸 > yì; #57F8
+培 > péi; #57F9
+基 > jī; #57FA
+埻 > zhŭn; #57FB
+埼 > qí; #57FC
+埽 > sào; #57FD
+埾 > jù; #57FE
+埿 > ní; #57FF
+堀 > kū; #5800
+堁 > kè; #5801
+堂 > táng; #5802
+堃 > kūn; #5803
+堄 > nì; #5804
+堅 > jiān; #5805
+堆 > dūi; #5806
+堇 > jĭn; #5807
+堈 > gāng; #5808
+堉 > yù; #5809
+堊 > è; #580A
+堋 > péng; #580B
+堌 > gù; #580C
+堍 > tù; #580D
+堎 > lèng; #580E
+堐 > yá; #5810
+堑 > qiàn; #5811
+堓 > àn; #5813
+堕 > dùo; #5815
+堖 > năo; #5816
+堗 > tū; #5817
+堘 > chéng; #5818
+堙 > yīn; #5819
+堚 > hún; #581A
+堛 > bì; #581B
+堜 > liàn; #581C
+堝 > gūo; #581D
+堞 > dié; #581E
+堟 > zhuàn; #581F
+堠 > hòu; #5820
+堡 > băo; #5821
+堢 > băo; #5822
+堣 > yú; #5823
+堤 > dī; #5824
+堥 > máo; #5825
+堦 > jiē; #5826
+堧 > ruán; #5827
+堨 > è; #5828
+堩 > gèng; #5829
+堪 > kān; #582A
+堫 > zōng; #582B
+堬 > yú; #582C
+堭 > huáng; #582D
+堮 > è; #582E
+堯 > yáo; #582F
+堰 > yàn; #5830
+報 > bào; #5831
+堲 > jí; #5832
+堳 > méi; #5833
+場 > cháng; #5834
+堵 > dŭ; #5835
+堶 > túo; #5836
+堷 > yìn; #5837
+堸 > féng; #5838
+堹 > zhòng; #5839
+堺 > jiè; #583A
+堻 > zhēn; #583B
+堼 > fēng; #583C
+堽 > gāng; #583D
+堾 > chuăn; #583E
+堿 > jiăn; #583F
+塂 > xiàng; #5842
+塃 > huāng; #5843
+塄 > léng; #5844
+塅 > duàn; #5845
+塇 > xuān; #5847
+塈 > jì; #5848
+塉 > jí; #5849
+塊 > kuài; #584A
+塋 > yíng; #584B
+塌 > tā; #584C
+塍 > chéng; #584D
+塎 > yŏng; #584E
+塏 > kăi; #584F
+塐 > sù; #5850
+塑 > sù; #5851
+塒 > shí; #5852
+塓 > mì; #5853
+塔 > tă; #5854
+塕 > wĕng; #5855
+塖 > chéng; #5856
+塗 > tú; #5857
+塘 > táng; #5858
+塙 > què; #5859
+塚 > zhŏng; #585A
+塛 > lì; #585B
+塜 > péng; #585C
+塝 > bàng; #585D
+塞 > sāi; #585E
+塟 > zàng; #585F
+塠 > dūi; #5860
+塡 > tián; #5861
+塢 > wù; #5862
+塣 > chĕng; #5863
+塤 > xūn; #5864
+塥 > gé; #5865
+塦 > zhèn; #5866
+塧 > ài; #5867
+塨 > gōng; #5868
+塩 > yán; #5869
+塪 > kăn; #586A
+填 > tián; #586B
+塬 > yuán; #586C
+塭 > wēn; #586D
+塮 > xiè; #586E
+塯 > lìu; #586F
+塱 > lăng; #5871
+塲 > cháng; #5872
+塳 > péng; #5873
+塴 > bèng; #5874
+塵 > chén; #5875
+塶 > cù; #5876
+塷 > lŭ; #5877
+塸 > ŏu; #5878
+塹 > qiàn; #5879
+塺 > méi; #587A
+塻 > mò; #587B
+塼 > zhuān; #587C
+塽 > shuăng; #587D
+塾 > shú; #587E
+塿 > lŏu; #587F
+墀 > chí; #5880
+墁 > màn; #5881
+墂 > biāo; #5882
+境 > jìng; #5883
+墄 > qī; #5884
+墅 > shù; #5885
+墆 > dì; #5886
+墇 > zhāng; #5887
+墈 > kàn; #5888
+墉 > yōng; #5889
+墊 > diàn; #588A
+墋 > chĕn; #588B
+墌 > zhī; #588C
+墍 > xì; #588D
+墎 > gūo; #588E
+墏 > qiăng; #588F
+墐 > jìn; #5890
+墑 > dī; #5891
+墒 > shāng; #5892
+墓 > mù; #5893
+墔 > cūi; #5894
+墕 > yàn; #5895
+墖 > tă; #5896
+増 > zēng; #5897
+墘 > qí; #5898
+墙 > qiáng; #5899
+墚 > liáng; #589A
+墜 > zhùi; #589C
+墝 > qiāo; #589D
+增 > zēng; #589E
+墟 > xū; #589F
+墠 > shàn; #58A0
+墡 > shàn; #58A1
+墢 > bá; #58A2
+墣 > pū; #58A3
+墤 > kuài; #58A4
+墥 > dŏng; #58A5
+墦 > fán; #58A6
+墧 > què; #58A7
+墨 > mò; #58A8
+墩 > dūn; #58A9
+墪 > dūn; #58AA
+墫 > dūn; #58AB
+墬 > dì; #58AC
+墭 > shèng; #58AD
+墮 > dùo; #58AE
+墯 > dùo; #58AF
+墰 > tán; #58B0
+墱 > dèng; #58B1
+墲 > wŭ; #58B2
+墳 > fén; #58B3
+墴 > huáng; #58B4
+墵 > tán; #58B5
+墶 > dā; #58B6
+墷 > yè; #58B7
+墺 > yù; #58BA
+墻 > qiáng; #58BB
+墼 > jī; #58BC
+墽 > qiāo; #58BD
+墾 > kĕn; #58BE
+墿 > yì; #58BF
+壀 > pí; #58C0
+壁 > bì; #58C1
+壂 > diàn; #58C2
+壃 > jiāng; #58C3
+壄 > yĕ; #58C4
+壅 > yōng; #58C5
+壆 > bó; #58C6
+壇 > tán; #58C7
+壈 > lăn; #58C8
+壉 > jù; #58C9
+壊 > huài; #58CA
+壋 > dàng; #58CB
+壌 > răng; #58CC
+壍 > qiàn; #58CD
+壎 > xūn; #58CE
+壏 > làn; #58CF
+壐 > xĭ; #58D0
+壑 > hè; #58D1
+壒 > ài; #58D2
+壓 > yā; #58D3
+壔 > dăo; #58D4
+壕 > háo; #58D5
+壖 > ruán; #58D6
+壘 > lĕi; #58D8
+壙 > kuàng; #58D9
+壚 > lú; #58DA
+壛 > yán; #58DB
+壜 > tán; #58DC
+壝 > wéi; #58DD
+壞 > huài; #58DE
+壟 > lŏng; #58DF
+壠 > lŏng; #58E0
+壡 > rùi; #58E1
+壢 > lì; #58E2
+壣 > lín; #58E3
+壤 > răng; #58E4
+壦 > xūn; #58E6
+壧 > yán; #58E7
+壨 > léi; #58E8
+壩 > bà; #58E9
+士 > shì; #58EB
+壬 > rén; #58EC
+壮 > zhuàng; #58EE
+壯 > zhuàng; #58EF
+声 > shēng; #58F0
+壱 > yī; #58F1
+売 > mài; #58F2
+壳 > ké; #58F3
+壴 > zhŭ; #58F4
+壵 > zhuàng; #58F5
+壶 > hú; #58F6
+壷 > hú; #58F7
+壸 > kŭn; #58F8
+壹 > yī; #58F9
+壺 > hú; #58FA
+壻 > xù; #58FB
+壼 > kŭn; #58FC
+壽 > shòu; #58FD
+壾 > măng; #58FE
+壿 > zŭn; #58FF
+夀 > shòu; #5900
+夁 > yī; #5901
+夂 > zhĭ; #5902
+夃 > gū; #5903
+处 > chù; #5904
+夅 > jiàng; #5905
+夆 > fēng; #5906
+备 > bèi; #5907
+変 > biàn; #5909
+夊 > sūi; #590A
+夋 > qūn; #590B
+夌 > líng; #590C
+复 > fù; #590D
+夎 > zùo; #590E
+夏 > xià; #590F
+夐 > xìong; #5910
+夒 > náo; #5912
+夓 > xià; #5913
+夔 > kúi; #5914
+夕 > xī; #5915
+外 > wài; #5916
+夗 > yuàn; #5917
+夘 > măo; #5918
+夙 > sù; #5919
+多 > dūo; #591A
+夛 > dūo; #591B
+夜 > yè; #591C
+夝 > qíng; #591D
+够 > gòu; #591F
+夠 > gòu; #5920
+夡 > qì; #5921
+夢 > mèng; #5922
+夣 > mèng; #5923
+夤 > yín; #5924
+夥 > hŭo; #5925
+夦 > chèn; #5926
+大 > dà; #5927
+夨 > zè; #5928
+天 > tiān; #5929
+太 > tài; #592A
+夫 > fū; #592B
+夬 > guài; #592C
+夭 > yăo; #592D
+央 > yāng; #592E
+夯 > hāng; #592F
+夰 > găo; #5930
+失 > shī; #5931
+夲 > bĕn; #5932
+夳 > tài; #5933
+头 > tóu; #5934
+夵 > yăn; #5935
+夶 > bĭ; #5936
+夷 > yí; #5937
+夸 > kuā; #5938
+夹 > jiā; #5939
+夺 > dúo; #593A
+夼 > kuăng; #593C
+夽 > yùn; #593D
+夾 > jiā; #593E
+夿 > pā; #593F
+奀 > ēn; #5940
+奁 > lián; #5941
+奂 > huàn; #5942
+奃 > dì; #5943
+奄 > yăn; #5944
+奅 > pào; #5945
+奆 > quăn; #5946
+奇 > qí; #5947
+奈 > nài; #5948
+奉 > fèng; #5949
+奊 > xié; #594A
+奋 > fèn; #594B
+奌 > diăn; #594C
+奎 > kúi; #594E
+奏 > zòu; #594F
+奐 > huàn; #5950
+契 > qì; #5951
+奒 > kāi; #5952
+奓 > zhà; #5953
+奔 > bēn; #5954
+奕 > yì; #5955
+奖 > jiăng; #5956
+套 > tào; #5957
+奘 > zàng; #5958
+奙 > bĕn; #5959
+奚 > xī; #595A
+奛 > xiăng; #595B
+奜 > fĕi; #595C
+奝 > diāo; #595D
+奞 > xùn; #595E
+奟 > kēng; #595F
+奠 > diàn; #5960
+奡 > ào; #5961
+奢 > shē; #5962
+奣 > wĕng; #5963
+奤 > păn; #5964
+奥 > ào; #5965
+奦 > wù; #5966
+奧 > ào; #5967
+奨 > jiăng; #5968
+奩 > lián; #5969
+奪 > dúo; #596A
+奫 > yūn; #596B
+奬 > jiăng; #596C
+奭 > shì; #596D
+奮 > fèn; #596E
+奯 > hùo; #596F
+奰 > bì; #5970
+奱 > lián; #5971
+奲 > dŭo; #5972
+女 > nǚ; #5973
+奴 > nú; #5974
+奵 > dīng; #5975
+奶 > năi; #5976
+奷 > qiān; #5977
+奸 > jiān; #5978
+她 > tā; #5979
+奺 > jĭu; #597A
+奻 > nán; #597B
+奼 > chà; #597C
+好 > hăo; #597D
+奾 > xiān; #597E
+奿 > fàn; #597F
+妀 > jĭ; #5980
+妁 > shùo; #5981
+如 > rú; #5982
+妃 > fēi; #5983
+妄 > wàng; #5984
+妅 > hóng; #5985
+妆 > zhuāng; #5986
+妇 > fù; #5987
+妈 > mā; #5988
+妉 > dān; #5989
+妊 > rèn; #598A
+妋 > fū; #598B
+妌 > jìng; #598C
+妍 > yán; #598D
+妎 > xiè; #598E
+妏 > wèn; #598F
+妐 > zhōng; #5990
+妑 > pā; #5991
+妒 > dù; #5992
+妓 > jì; #5993
+妔 > kēng; #5994
+妕 > zhòng; #5995
+妖 > yāo; #5996
+妗 > jìn; #5997
+妘 > yún; #5998
+妙 > miào; #5999
+妚 > pēi; #599A
+妜 > yuè; #599C
+妝 > zhuāng; #599D
+妞 > nīu; #599E
+妟 > yàn; #599F
+妠 > nà; #59A0
+妡 > xīn; #59A1
+妢 > fén; #59A2
+妣 > bĭ; #59A3
+妤 > yú; #59A4
+妥 > tŭo; #59A5
+妦 > fēng; #59A6
+妧 > yuán; #59A7
+妨 > fáng; #59A8
+妩 > wŭ; #59A9
+妪 > yù; #59AA
+妫 > gūi; #59AB
+妬 > dù; #59AC
+妭 > bá; #59AD
+妮 > nī; #59AE
+妯 > zhóu; #59AF
+妰 > zhúo; #59B0
+妱 > zhāo; #59B1
+妲 > dá; #59B2
+妳 > năi; #59B3
+妴 > yuăn; #59B4
+妵 > tŏu; #59B5
+妶 > xuán; #59B6
+妷 > zhí; #59B7
+妸 > ē; #59B8
+妹 > mèi; #59B9
+妺 > mò; #59BA
+妻 > qī; #59BB
+妼 > bì; #59BC
+妽 > shēn; #59BD
+妾 > qiè; #59BE
+妿 > ē; #59BF
+姀 > hé; #59C0
+姁 > xŭ; #59C1
+姂 > fá; #59C2
+姃 > zhēng; #59C3
+姄 > mín; #59C4
+姅 > bàn; #59C5
+姆 > mŭ; #59C6
+姇 > fū; #59C7
+姈 > líng; #59C8
+姉 > zĭ; #59C9
+姊 > zĭ; #59CA
+始 > shĭ; #59CB
+姌 > răn; #59CC
+姍 > shān; #59CD
+姎 > yāng; #59CE
+姏 > mán; #59CF
+姐 > jiĕ; #59D0
+姑 > gū; #59D1
+姒 > sì; #59D2
+姓 > xìng; #59D3
+委 > wĕi; #59D4
+姕 > zī; #59D5
+姖 > jù; #59D6
+姗 > shān; #59D7
+姘 > pīn; #59D8
+姙 > rèn; #59D9
+姚 > yáo; #59DA
+姛 > tŏng; #59DB
+姜 > jiāng; #59DC
+姝 > shū; #59DD
+姞 > jí; #59DE
+姟 > gāi; #59DF
+姠 > shàng; #59E0
+姡 > kùo; #59E1
+姢 > juān; #59E2
+姣 > jiāo; #59E3
+姤 > gòu; #59E4
+姥 > mŭ; #59E5
+姦 > jiān; #59E6
+姧 > jiān; #59E7
+姨 > yí; #59E8
+姩 > niàn; #59E9
+姪 > zhí; #59EA
+姫 > jī; #59EB
+姬 > jī; #59EC
+姭 > xiàn; #59ED
+姮 > héng; #59EE
+姯 > guāng; #59EF
+姰 > jūn; #59F0
+姱 > kuā; #59F1
+姲 > yàn; #59F2
+姳 > mĭng; #59F3
+姴 > liè; #59F4
+姵 > pèi; #59F5
+姶 > yăn; #59F6
+姷 > yòu; #59F7
+姸 > yán; #59F8
+姹 > chà; #59F9
+姺 > shēn; #59FA
+姻 > yīn; #59FB
+姼 > chĭ; #59FC
+姽 > gŭi; #59FD
+姾 > quān; #59FE
+姿 > zī; #59FF
+娀 > sōng; #5A00
+威 > wēi; #5A01
+娂 > hóng; #5A02
+娃 > wá; #5A03
+娄 > lóu; #5A04
+娅 > yà; #5A05
+娆 > răo; #5A06
+娇 > jiāo; #5A07
+娈 > luán; #5A08
+娉 > pīng; #5A09
+娊 > xiàn; #5A0A
+娋 > shào; #5A0B
+娌 > lĭ; #5A0C
+娍 > chéng; #5A0D
+娎 > xiào; #5A0E
+娏 > máng; #5A0F
+娐 > fu; #5A10
+娑 > sūo; #5A11
+娒 > wŭ; #5A12
+娓 > wĕi; #5A13
+娔 > kè; #5A14
+娕 > lài; #5A15
+娖 > chùo; #5A16
+娗 > dìng; #5A17
+娘 > niáng; #5A18
+娙 > xíng; #5A19
+娚 > nán; #5A1A
+娛 > yú; #5A1B
+娜 > núo; #5A1C
+娝 > pēi; #5A1D
+娞 > nĕi; #5A1E
+娟 > juān; #5A1F
+娠 > shēn; #5A20
+娡 > zhì; #5A21
+娢 > hán; #5A22
+娣 > dì; #5A23
+娤 > zhuāng; #5A24
+娥 > é; #5A25
+娦 > pín; #5A26
+娧 > tùi; #5A27
+娨 > hàn; #5A28
+娩 > miăn; #5A29
+娪 > wú; #5A2A
+娫 > yán; #5A2B
+娬 > wŭ; #5A2C
+娭 > xī; #5A2D
+娮 > yán; #5A2E
+娯 > yú; #5A2F
+娰 > sì; #5A30
+娱 > yú; #5A31
+娲 > wā; #5A32
+娴 > xián; #5A34
+娵 > jū; #5A35
+娶 > qŭ; #5A36
+娷 > shùi; #5A37
+娸 > qī; #5A38
+娹 > xián; #5A39
+娺 > zhūi; #5A3A
+娻 > dōng; #5A3B
+娼 > chāng; #5A3C
+娽 > lù; #5A3D
+娾 > ăi; #5A3E
+娿 > ē; #5A3F
+婀 > ē; #5A40
+婁 > lóu; #5A41
+婂 > mián; #5A42
+婃 > cóng; #5A43
+婄 > pŏu; #5A44
+婅 > jú; #5A45
+婆 > pó; #5A46
+婇 > căi; #5A47
+婈 > díng; #5A48
+婉 > wăn; #5A49
+婊 > biăo; #5A4A
+婋 > xiāo; #5A4B
+婌 > shŭ; #5A4C
+婍 > qĭ; #5A4D
+婎 > hūi; #5A4E
+婏 > fù; #5A4F
+婐 > ē; #5A50
+婑 > wŏ; #5A51
+婒 > tán; #5A52
+婓 > fēi; #5A53
+婔 > wei; #5A54
+婕 > jié; #5A55
+婖 > tiān; #5A56
+婗 > ní; #5A57
+婘 > quán; #5A58
+婙 > jìng; #5A59
+婚 > hūn; #5A5A
+婛 > jīng; #5A5B
+婜 > qiān; #5A5C
+婝 > diàn; #5A5D
+婞 > xìng; #5A5E
+婟 > hù; #5A5F
+婠 > wà; #5A60
+婡 > lái; #5A61
+婢 > bì; #5A62
+婣 > yīn; #5A63
+婤 > chōu; #5A64
+婥 > chùo; #5A65
+婦 > fù; #5A66
+婧 > jìng; #5A67
+婨 > lún; #5A68
+婩 > yàn; #5A69
+婪 > lán; #5A6A
+婫 > kūn; #5A6B
+婬 > yín; #5A6C
+婭 > yà; #5A6D
+婮 > ju; #5A6E
+婯 > lì; #5A6F
+婰 > diăn; #5A70
+婱 > xián; #5A71
+婳 > huà; #5A73
+婴 > yīng; #5A74
+婵 > chán; #5A75
+婶 > shĕn; #5A76
+婷 > tíng; #5A77
+婸 > dàng; #5A78
+婹 > yăo; #5A79
+婺 > wù; #5A7A
+婻 > nàn; #5A7B
+婼 > rùo; #5A7C
+婽 > jiă; #5A7D
+婾 > tōu; #5A7E
+婿 > xù; #5A7F
+媀 > yú; #5A80
+媁 > wēi; #5A81
+媂 > tí; #5A82
+媃 > róu; #5A83
+媄 > mĕi; #5A84
+媅 > dān; #5A85
+媆 > ruăn; #5A86
+媇 > qīn; #5A87
+媈 > hui; #5A88
+媉 > wū; #5A89
+媊 > qián; #5A8A
+媋 > chūn; #5A8B
+媌 > máo; #5A8C
+媍 > fù; #5A8D
+媎 > jiĕ; #5A8E
+媏 > duān; #5A8F
+媐 > xī; #5A90
+媑 > zhòng; #5A91
+媒 > méi; #5A92
+媓 > huáng; #5A93
+媔 > mián; #5A94
+媕 > ān; #5A95
+媖 > yīng; #5A96
+媗 > xuān; #5A97
+媘 > jie; #5A98
+媙 > wēi; #5A99
+媚 > mèi; #5A9A
+媛 > yuàn; #5A9B
+媜 > zhēn; #5A9C
+媝 > qīu; #5A9D
+媞 > tí; #5A9E
+媟 > xiè; #5A9F
+媠 > tŭo; #5AA0
+媡 > liàn; #5AA1
+媢 > mào; #5AA2
+媣 > răn; #5AA3
+媤 > sī; #5AA4
+媥 > piān; #5AA5
+媦 > wèi; #5AA6
+媧 > wā; #5AA7
+媨 > jìu; #5AA8
+媩 > hú; #5AA9
+媪 > ăo; #5AAA
+媭 > xū; #5AAD
+媮 > tōu; #5AAE
+媯 > gūi; #5AAF
+媰 > zōu; #5AB0
+媱 > yáo; #5AB1
+媲 > pì; #5AB2
+媳 > xí; #5AB3
+媴 > yuán; #5AB4
+媵 > yìng; #5AB5
+媶 > róng; #5AB6
+媷 > rù; #5AB7
+媸 > chī; #5AB8
+媹 > líu; #5AB9
+媺 > mĕi; #5ABA
+媻 > pán; #5ABB
+媼 > ăo; #5ABC
+媽 > mā; #5ABD
+媾 > gòu; #5ABE
+媿 > kùi; #5ABF
+嫀 > qín; #5AC0
+嫁 > jià; #5AC1
+嫂 > săo; #5AC2
+嫃 > zhēn; #5AC3
+嫄 > yuán; #5AC4
+嫅 > chā; #5AC5
+嫆 > yóng; #5AC6
+嫇 > míng; #5AC7
+嫈 > yīng; #5AC8
+嫉 > jí; #5AC9
+嫊 > sù; #5ACA
+嫋 > niăo; #5ACB
+嫌 > xián; #5ACC
+嫍 > tāo; #5ACD
+嫎 > páng; #5ACE
+嫏 > láng; #5ACF
+嫐 > năo; #5AD0
+嫑 > báo; #5AD1
+嫒 > ài; #5AD2
+嫓 > pì; #5AD3
+嫔 > pín; #5AD4
+嫕 > yì; #5AD5
+嫖 > piào; #5AD6
+嫗 > yù; #5AD7
+嫘 > léi; #5AD8
+嫙 > xuán; #5AD9
+嫚 > màn; #5ADA
+嫛 > yī; #5ADB
+嫜 > zhāng; #5ADC
+嫝 > kāng; #5ADD
+嫞 > yóng; #5ADE
+嫟 > nì; #5ADF
+嫠 > lí; #5AE0
+嫡 > dí; #5AE1
+嫢 > gūi; #5AE2
+嫣 > yān; #5AE3
+嫤 > jìn; #5AE4
+嫥 > zhuān; #5AE5
+嫦 > cháng; #5AE6
+嫧 > cè; #5AE7
+嫨 > hān; #5AE8
+嫩 > nèn; #5AE9
+嫪 > lào; #5AEA
+嫫 > mó; #5AEB
+嫬 > zhē; #5AEC
+嫭 > hù; #5AED
+嫮 > hù; #5AEE
+嫯 > ào; #5AEF
+嫰 > nèn; #5AF0
+嫱 > qiáng; #5AF1
+嫳 > piè; #5AF3
+嫴 > gū; #5AF4
+嫵 > wŭ; #5AF5
+嫶 > jiáo; #5AF6
+嫷 > tŭo; #5AF7
+嫸 > zhăn; #5AF8
+嫹 > máo; #5AF9
+嫺 > xián; #5AFA
+嫻 > xián; #5AFB
+嫼 > mò; #5AFC
+嫽 > liáo; #5AFD
+嫾 > lián; #5AFE
+嫿 > huà; #5AFF
+嬀 > gūi; #5B00
+嬁 > dēng; #5B01
+嬂 > zhī; #5B02
+嬃 > xū; #5B03
+嬄 > yi; #5B04
+嬅 > huá; #5B05
+嬆 > xī; #5B06
+嬇 > hùi; #5B07
+嬈 > răo; #5B08
+嬉 > xī; #5B09
+嬊 > yàn; #5B0A
+嬋 > chán; #5B0B
+嬌 > jiāo; #5B0C
+嬍 > mĕi; #5B0D
+嬎 > fàn; #5B0E
+嬏 > fān; #5B0F
+嬐 > xiān; #5B10
+嬑 > yì; #5B11
+嬒 > wèi; #5B12
+嬓 > jiào; #5B13
+嬔 > fù; #5B14
+嬕 > shì; #5B15
+嬖 > bì; #5B16
+嬗 > shàn; #5B17
+嬘 > sùi; #5B18
+嬙 > qiáng; #5B19
+嬚 > liăn; #5B1A
+嬛 > huán; #5B1B
+嬜 > xin; #5B1C
+嬝 > niăo; #5B1D
+嬞 > dŏng; #5B1E
+嬟 > yì; #5B1F
+嬠 > cán; #5B20
+嬡 > ài; #5B21
+嬢 > niáng; #5B22
+嬣 > néng; #5B23
+嬤 > mā; #5B24
+嬥 > tiăo; #5B25
+嬦 > chóu; #5B26
+嬧 > jìn; #5B27
+嬨 > cí; #5B28
+嬩 > yú; #5B29
+嬪 > pín; #5B2A
+嬫 > yong; #5B2B
+嬬 > xū; #5B2C
+嬭 > năi; #5B2D
+嬮 > yān; #5B2E
+嬯 > tái; #5B2F
+嬰 > yīng; #5B30
+嬱 > cán; #5B31
+嬲 > niăo; #5B32
+嬳 > wo; #5B33
+嬴 > yíng; #5B34
+嬵 > mián; #5B35
+嬷 > mā; #5B37
+嬸 > shĕn; #5B38
+嬹 > xìng; #5B39
+嬺 > nì; #5B3A
+嬻 > dú; #5B3B
+嬼 > lĭu; #5B3C
+嬽 > yuān; #5B3D
+嬾 > lăn; #5B3E
+嬿 > yàn; #5B3F
+孀 > shuāng; #5B40
+孁 > líng; #5B41
+孂 > jiăo; #5B42
+孃 > niáng; #5B43
+孄 > lăn; #5B44
+孅 > xiān; #5B45
+孆 > yīng; #5B46
+孇 > shuāng; #5B47
+孈 > shuāi; #5B48
+孉 > quán; #5B49
+孊 > mĭ; #5B4A
+孋 > lí; #5B4B
+孌 > luán; #5B4C
+孍 > yán; #5B4D
+孎 > zhŭ; #5B4E
+孏 > lăn; #5B4F
+子 > zĭ; #5B50
+孑 > jié; #5B51
+孒 > jué; #5B52
+孓 > jué; #5B53
+孔 > kŏng; #5B54
+孕 > yùn; #5B55
+孖 > zī; #5B56
+字 > zì; #5B57
+存 > cún; #5B58
+孙 > sūn; #5B59
+孚 > fú; #5B5A
+孛 > bèi; #5B5B
+孜 > zī; #5B5C
+孝 > xiào; #5B5D
+孞 > xìn; #5B5E
+孟 > mèng; #5B5F
+孠 > sì; #5B60
+孡 > tāi; #5B61
+孢 > bāo; #5B62
+季 > jì; #5B63
+孤 > gū; #5B64
+孥 > nú; #5B65
+学 > xué; #5B66
+孨 > zhuăn; #5B68
+孩 > hái; #5B69
+孪 > luán; #5B6A
+孫 > sūn; #5B6B
+孬 > huài; #5B6C
+孭 > miē; #5B6D
+孮 > cóng; #5B6E
+孯 > qiān; #5B6F
+孰 > shú; #5B70
+孱 > chán; #5B71
+孲 > yā; #5B72
+孳 > zī; #5B73
+孴 > nĭ; #5B74
+孵 > fū; #5B75
+孶 > zī; #5B76
+孷 > lí; #5B77
+學 > xué; #5B78
+孹 > bò; #5B79
+孺 > rú; #5B7A
+孻 > lái; #5B7B
+孼 > niè; #5B7C
+孽 > niè; #5B7D
+孾 > yīng; #5B7E
+孿 > luán; #5B7F
+宀 > mián; #5B80
+宁 > zhù; #5B81
+宂 > rŏng; #5B82
+它 > tā; #5B83
+宄 > gŭi; #5B84
+宅 > zhái; #5B85
+宆 > qíong; #5B86
+宇 > yŭ; #5B87
+守 > shŏu; #5B88
+安 > ān; #5B89
+宊 > tú; #5B8A
+宋 > sòng; #5B8B
+完 > wán; #5B8C
+宍 > ròu; #5B8D
+宎 > yăo; #5B8E
+宏 > hóng; #5B8F
+宐 > yí; #5B90
+宑 > jĭng; #5B91
+宒 > zhūn; #5B92
+宓 > mì; #5B93
+宔 > zhŭ; #5B94
+宕 > dàng; #5B95
+宖 > hóng; #5B96
+宗 > zōng; #5B97
+官 > guān; #5B98
+宙 > zhòu; #5B99
+定 > dìng; #5B9A
+宛 > wăn; #5B9B
+宜 > yí; #5B9C
+宝 > băo; #5B9D
+实 > shí; #5B9E
+実 > shí; #5B9F
+宠 > chŏng; #5BA0
+审 > shĕn; #5BA1
+客 > kè; #5BA2
+宣 > xuān; #5BA3
+室 > shì; #5BA4
+宥 > yòu; #5BA5
+宦 > huàn; #5BA6
+宧 > yí; #5BA7
+宨 > tiăo; #5BA8
+宩 > shĭ; #5BA9
+宪 > xiàn; #5BAA
+宫 > gōng; #5BAB
+宬 > chéng; #5BAC
+宭 > qún; #5BAD
+宮 > gōng; #5BAE
+宯 > xiāo; #5BAF
+宰 > zăi; #5BB0
+宱 > zhà; #5BB1
+宲 > băo; #5BB2
+害 > hài; #5BB3
+宴 > yàn; #5BB4
+宵 > xiāo; #5BB5
+家 > jiā; #5BB6
+宷 > shĕn; #5BB7
+宸 > chén; #5BB8
+容 > róng; #5BB9
+宺 > huăng; #5BBA
+宻 > mì; #5BBB
+宼 > kòu; #5BBC
+宽 > kuān; #5BBD
+宾 > bīn; #5BBE
+宿 > sù; #5BBF
+寀 > cài; #5BC0
+寁 > zăn; #5BC1
+寂 > jì; #5BC2
+寃 > yuān; #5BC3
+寄 > jì; #5BC4
+寅 > yín; #5BC5
+密 > mì; #5BC6
+寇 > kòu; #5BC7
+寈 > qīng; #5BC8
+寉 > què; #5BC9
+寊 > zhēn; #5BCA
+寋 > jiăn; #5BCB
+富 > fù; #5BCC
+寍 > níng; #5BCD
+寎 > bìng; #5BCE
+寏 > huán; #5BCF
+寐 > mèi; #5BD0
+寑 > qĭn; #5BD1
+寒 > hán; #5BD2
+寓 > yù; #5BD3
+寔 > shí; #5BD4
+寕 > níng; #5BD5
+寖 > qìn; #5BD6
+寗 > níng; #5BD7
+寘 > zhì; #5BD8
+寙 > yŭ; #5BD9
+寚 > băo; #5BDA
+寛 > kuān; #5BDB
+寜 > níng; #5BDC
+寝 > qĭn; #5BDD
+寞 > mò; #5BDE
+察 > chá; #5BDF
+寠 > jù; #5BE0
+寡 > guă; #5BE1
+寢 > qĭn; #5BE2
+寣 > hū; #5BE3
+寤 > wù; #5BE4
+寥 > liáo; #5BE5
+實 > shí; #5BE6
+寧 > zhù; #5BE7
+寨 > zhài; #5BE8
+審 > shĕn; #5BE9
+寪 > wĕi; #5BEA
+寫 > xiĕ; #5BEB
+寬 > kuān; #5BEC
+寭 > hùi; #5BED
+寮 > liáo; #5BEE
+寯 > jùn; #5BEF
+寰 > huán; #5BF0
+寱 > yì; #5BF1
+寲 > yí; #5BF2
+寳 > băo; #5BF3
+寴 > qìn; #5BF4
+寵 > chŏng; #5BF5
+寶 > băo; #5BF6
+寷 > fēng; #5BF7
+寸 > cùn; #5BF8
+对 > dùi; #5BF9
+寺 > sì; #5BFA
+寻 > xún; #5BFB
+导 > dăo; #5BFC
+寽 > lǜ; #5BFD
+対 > dùi; #5BFE
+寿 > shòu; #5BFF
+尀 > pŏ; #5C00
+封 > fēng; #5C01
+専 > zhuān; #5C02
+尃 > fū; #5C03
+射 > shè; #5C04
+尅 > kè; #5C05
+将 > jiāng; #5C06
+將 > jiāng; #5C07
+專 > zhuān; #5C08
+尉 > wèi; #5C09
+尊 > zūn; #5C0A
+尋 > xún; #5C0B
+尌 > shù; #5C0C
+對 > dùi; #5C0D
+導 > dăo; #5C0E
+小 > xiăo; #5C0F
+尐 > jī; #5C10
+少 > shăo; #5C11
+尒 > ĕr; #5C12
+尓 > ĕr; #5C13
+尔 > ĕr; #5C14
+尕 > gă; #5C15
+尖 > jiān; #5C16
+尗 > shú; #5C17
+尘 > chén; #5C18
+尙 > shàng; #5C19
+尚 > shàng; #5C1A
+尛 > mo; #5C1B
+尜 > gá; #5C1C
+尝 > cháng; #5C1D
+尞 > liào; #5C1E
+尟 > xiăn; #5C1F
+尠 > xiăn; #5C20
+尢 > wāng; #5C22
+尣 > wāng; #5C23
+尤 > yóu; #5C24
+尥 > liào; #5C25
+尦 > liào; #5C26
+尧 > yáo; #5C27
+尨 > máng; #5C28
+尩 > wāng; #5C29
+尪 > wāng; #5C2A
+尫 > wāng; #5C2B
+尬 > gà; #5C2C
+尭 > yáo; #5C2D
+尮 > dùo; #5C2E
+尯 > kùi; #5C2F
+尰 > zhŏng; #5C30
+就 > jìu; #5C31
+尲 > gān; #5C32
+尳 > gŭ; #5C33
+尴 > gān; #5C34
+尵 > túi; #5C35
+尶 > gān; #5C36
+尷 > gān; #5C37
+尸 > shī; #5C38
+尹 > yĭn; #5C39
+尺 > chĭ; #5C3A
+尻 > kāo; #5C3B
+尼 > ní; #5C3C
+尽 > jĭn; #5C3D
+尾 > wĕi; #5C3E
+尿 > niào; #5C3F
+局 > jú; #5C40
+屁 > pì; #5C41
+层 > céng; #5C42
+屃 > xì; #5C43
+屄 > bī; #5C44
+居 > jū; #5C45
+屆 > jiè; #5C46
+屇 > tián; #5C47
+屈 > qū; #5C48
+屉 > tì; #5C49
+届 > jiè; #5C4A
+屋 > wū; #5C4B
+屌 > diăo; #5C4C
+屍 > shī; #5C4D
+屎 > shĭ; #5C4E
+屏 > píng; #5C4F
+屐 > jī; #5C50
+屑 > xiè; #5C51
+屒 > chén; #5C52
+屓 > xì; #5C53
+屔 > ní; #5C54
+展 > zhăn; #5C55
+屖 > xī; #5C56
+屘 > măn; #5C58
+屙 > ē; #5C59
+屚 > lòu; #5C5A
+屛 > píng; #5C5B
+屜 > tì; #5C5C
+屝 > fèi; #5C5D
+属 > shŭ; #5C5E
+屟 > xiè; #5C5F
+屠 > tú; #5C60
+屡 > lǚ; #5C61
+屢 > lǚ; #5C62
+屣 > xĭ; #5C63
+層 > céng; #5C64
+履 > lǚ; #5C65
+屦 > jù; #5C66
+屧 > xiè; #5C67
+屨 > jù; #5C68
+屩 > juē; #5C69
+屪 > liáo; #5C6A
+屫 > jué; #5C6B
+屬 > shŭ; #5C6C
+屭 > xì; #5C6D
+屮 > chè; #5C6E
+屯 > tún; #5C6F
+屰 > nì; #5C70
+山 > shān; #5C71
+屳 > xiān; #5C73
+屴 > lì; #5C74
+屵 > xuē; #5C75
+屸 > lóng; #5C78
+屹 > yì; #5C79
+屺 > qĭ; #5C7A
+屻 > rèn; #5C7B
+屼 > wù; #5C7C
+屽 > hàn; #5C7D
+屾 > shēn; #5C7E
+屿 > yŭ; #5C7F
+岀 > chū; #5C80
+岁 > sùi; #5C81
+岂 > qĭ; #5C82
+岄 > yuè; #5C84
+岅 > băn; #5C85
+岆 > yăo; #5C86
+岇 > áng; #5C87
+岈 > yá; #5C88
+岉 > wù; #5C89
+岊 > jié; #5C8A
+岋 > è; #5C8B
+岌 > jí; #5C8C
+岍 > qiān; #5C8D
+岎 > fēn; #5C8E
+岏 > yuán; #5C8F
+岐 > qí; #5C90
+岑 > cén; #5C91
+岒 > qián; #5C92
+岓 > qí; #5C93
+岔 > chà; #5C94
+岕 > jiè; #5C95
+岖 > qū; #5C96
+岗 > găng; #5C97
+岘 > xiàn; #5C98
+岙 > ào; #5C99
+岚 > lán; #5C9A
+岛 > dăo; #5C9B
+岜 > bā; #5C9C
+岝 > zùo; #5C9D
+岞 > zùo; #5C9E
+岟 > yăng; #5C9F
+岠 > jù; #5CA0
+岡 > gāng; #5CA1
+岢 > kĕ; #5CA2
+岣 > gŏu; #5CA3
+岤 > xuè; #5CA4
+岥 > bēi; #5CA5
+岦 > lì; #5CA6
+岧 > tiáo; #5CA7
+岨 > jū; #5CA8
+岩 > yán; #5CA9
+岪 > fú; #5CAA
+岫 > xìu; #5CAB
+岬 > jiă; #5CAC
+岭 > líng; #5CAD
+岮 > túo; #5CAE
+岯 > pēi; #5CAF
+岰 > yŏu; #5CB0
+岱 > dài; #5CB1
+岲 > kuàng; #5CB2
+岳 > yuè; #5CB3
+岴 > qū; #5CB4
+岵 > hù; #5CB5
+岶 > pò; #5CB6
+岷 > mín; #5CB7
+岸 > àn; #5CB8
+岹 > tiáo; #5CB9
+岺 > líng; #5CBA
+岻 > chí; #5CBB
+岽 > dōng; #5CBD
+岿 > kūi; #5CBF
+峀 > xìu; #5CC0
+峁 > măo; #5CC1
+峂 > tóng; #5CC2
+峃 > xué; #5CC3
+峄 > yì; #5CC4
+峆 > hē; #5CC6
+峇 > kē; #5CC7
+峈 > lùo; #5CC8
+峉 > ē; #5CC9
+峊 > fù; #5CCA
+峋 > xún; #5CCB
+峌 > dié; #5CCC
+峍 > lù; #5CCD
+峎 > ān; #5CCE
+峏 > ĕr; #5CCF
+峐 > gāi; #5CD0
+峑 > quán; #5CD1
+峒 > tóng; #5CD2
+峓 > yí; #5CD3
+峔 > mŭ; #5CD4
+峕 > shí; #5CD5
+峖 > ān; #5CD6
+峗 > wéi; #5CD7
+峘 > hū; #5CD8
+峙 > zhì; #5CD9
+峚 > mì; #5CDA
+峛 > lĭ; #5CDB
+峜 > jī; #5CDC
+峝 > tóng; #5CDD
+峞 > wéi; #5CDE
+峟 > yòu; #5CDF
+峡 > xiá; #5CE1
+峢 > lĭ; #5CE2
+峣 > yáo; #5CE3
+峤 > jiào; #5CE4
+峥 > zhēng; #5CE5
+峦 > luán; #5CE6
+峧 > jiāo; #5CE7
+峨 > é; #5CE8
+峩 > é; #5CE9
+峪 > yù; #5CEA
+峫 > yé; #5CEB
+峬 > bū; #5CEC
+峭 > qiào; #5CED
+峮 > qūn; #5CEE
+峯 > fēng; #5CEF
+峰 > fēng; #5CF0
+峱 > náo; #5CF1
+峲 > lĭ; #5CF2
+峳 > yóu; #5CF3
+峴 > xiàn; #5CF4
+峵 > hóng; #5CF5
+島 > dăo; #5CF6
+峷 > shēn; #5CF7
+峸 > chéng; #5CF8
+峹 > tú; #5CF9
+峺 > gĕng; #5CFA
+峻 > jùn; #5CFB
+峼 > hào; #5CFC
+峽 > xiá; #5CFD
+峾 > yīn; #5CFE
+峿 > yŭ; #5CFF
+崀 > làng; #5D00
+崁 > kăn; #5D01
+崂 > láo; #5D02
+崃 > lái; #5D03
+崄 > xiăn; #5D04
+崅 > què; #5D05
+崆 > kōng; #5D06
+崇 > chóng; #5D07
+崈 > chóng; #5D08
+崉 > tà; #5D09
+崊 > lin; #5D0A
+崋 > huá; #5D0B
+崌 > jū; #5D0C
+崍 > lái; #5D0D
+崎 > qí; #5D0E
+崏 > mín; #5D0F
+崐 > kūn; #5D10
+崑 > kūn; #5D11
+崒 > zú; #5D12
+崓 > gù; #5D13
+崔 > cūi; #5D14
+崕 > yá; #5D15
+崖 > yá; #5D16
+崗 > găng; #5D17
+崘 > lún; #5D18
+崙 > lún; #5D19
+崚 > léng; #5D1A
+崛 > jué; #5D1B
+崜 > dūo; #5D1C
+崝 > zhēng; #5D1D
+崞 > gūo; #5D1E
+崟 > yín; #5D1F
+崠 > dōng; #5D20
+崡 > hán; #5D21
+崢 > zhēng; #5D22
+崣 > wĕi; #5D23
+崤 > yáo; #5D24
+崥 > pĭ; #5D25
+崦 > yān; #5D26
+崧 > sōng; #5D27
+崨 > jié; #5D28
+崩 > bēng; #5D29
+崪 > zú; #5D2A
+崫 > jué; #5D2B
+崬 > dōng; #5D2C
+崭 > zhăn; #5D2D
+崮 > gù; #5D2E
+崯 > yín; #5D2F
+崱 > zé; #5D31
+崲 > huáng; #5D32
+崳 > yú; #5D33
+崴 > wēi; #5D34
+崵 > yáng; #5D35
+崶 > fēng; #5D36
+崷 > qíu; #5D37
+崸 > dùn; #5D38
+崹 > tí; #5D39
+崺 > yĭ; #5D3A
+崻 > zhì; #5D3B
+崼 > shì; #5D3C
+崽 > zăi; #5D3D
+崾 > yăo; #5D3E
+崿 > è; #5D3F
+嵀 > zhù; #5D40
+嵁 > kān; #5D41
+嵂 > lǜ; #5D42
+嵃 > yăn; #5D43
+嵄 > mĕi; #5D44
+嵅 > gān; #5D45
+嵆 > jī; #5D46
+嵇 > jī; #5D47
+嵈 > huăn; #5D48
+嵉 > tíng; #5D49
+嵊 > shèng; #5D4A
+嵋 > méi; #5D4B
+嵌 > qiàn; #5D4C
+嵍 > wù; #5D4D
+嵎 > yú; #5D4E
+嵏 > zōng; #5D4F
+嵐 > lán; #5D50
+嵑 > jué; #5D51
+嵒 > yán; #5D52
+嵓 > yán; #5D53
+嵔 > wĕi; #5D54
+嵕 > zōng; #5D55
+嵖 > chá; #5D56
+嵗 > sùi; #5D57
+嵘 > róng; #5D58
+嵚 > qīn; #5D5A
+嵛 > yú; #5D5B
+嵝 > lŏu; #5D5D
+嵞 > tú; #5D5E
+嵟 > dūi; #5D5F
+嵠 > xī; #5D60
+嵡 > wēng; #5D61
+嵢 > cāng; #5D62
+嵣 > dāng; #5D63
+嵤 > hóng; #5D64
+嵥 > jié; #5D65
+嵦 > ái; #5D66
+嵧 > líu; #5D67
+嵨 > wŭ; #5D68
+嵩 > sōng; #5D69
+嵪 > qiāo; #5D6A
+嵫 > zī; #5D6B
+嵬 > wéi; #5D6C
+嵭 > bēng; #5D6D
+嵮 > diān; #5D6E
+嵯 > cúo; #5D6F
+嵰 > qiăn; #5D70
+嵱 > yŏng; #5D71
+嵲 > niè; #5D72
+嵳 > cúo; #5D73
+嵴 > jí; #5D74
+嵷 > sŏng; #5D77
+嵸 > zōng; #5D78
+嵹 > jiàng; #5D79
+嵺 > liáo; #5D7A
+嵻 > kang; #5D7B
+嵼 > chăn; #5D7C
+嵽 > dié; #5D7D
+嵾 > cēn; #5D7E
+嵿 > dĭng; #5D7F
+嶀 > tū; #5D80
+嶁 > lŏu; #5D81
+嶂 > zhàng; #5D82
+嶃 > zhăn; #5D83
+嶄 > zhăn; #5D84
+嶅 > áo; #5D85
+嶆 > cáo; #5D86
+嶇 > qū; #5D87
+嶈 > qiāng; #5D88
+嶉 > zūi; #5D89
+嶊 > zŭi; #5D8A
+嶋 > dăo; #5D8B
+嶌 > dăo; #5D8C
+嶍 > xí; #5D8D
+嶎 > yù; #5D8E
+嶏 > bó; #5D8F
+嶐 > lóng; #5D90
+嶑 > xiăng; #5D91
+嶒 > céng; #5D92
+嶓 > bō; #5D93
+嶔 > qīn; #5D94
+嶕 > jiāo; #5D95
+嶖 > yăn; #5D96
+嶗 > láo; #5D97
+嶘 > zhàn; #5D98
+嶙 > lín; #5D99
+嶚 > liáo; #5D9A
+嶛 > liáo; #5D9B
+嶜 > jīn; #5D9C
+嶝 > dèng; #5D9D
+嶞 > dùo; #5D9E
+嶟 > zūn; #5D9F
+嶠 > jiào; #5DA0
+嶡 > gùi; #5DA1
+嶢 > yáo; #5DA2
+嶣 > qiáo; #5DA3
+嶤 > yáo; #5DA4
+嶥 > jué; #5DA5
+嶦 > zhān; #5DA6
+嶧 > yì; #5DA7
+嶨 > xué; #5DA8
+嶩 > náo; #5DA9
+嶪 > yè; #5DAA
+嶫 > yè; #5DAB
+嶬 > yí; #5DAC
+嶭 > è; #5DAD
+嶮 > xiăn; #5DAE
+嶯 > jí; #5DAF
+嶰 > xiè; #5DB0
+嶱 > kĕ; #5DB1
+嶲 > xī; #5DB2
+嶳 > dì; #5DB3
+嶴 > ào; #5DB4
+嶵 > zŭi; #5DB5
+嶷 > nì; #5DB7
+嶸 > róng; #5DB8
+嶹 > dăo; #5DB9
+嶺 > lĭng; #5DBA
+嶻 > zá; #5DBB
+嶼 > yŭ; #5DBC
+嶽 > yuè; #5DBD
+嶾 > yĭn; #5DBE
+巀 > jiē; #5DC0
+巁 > lì; #5DC1
+巂 > sŭi; #5DC2
+巃 > lóng; #5DC3
+巄 > lóng; #5DC4
+巅 > diān; #5DC5
+巆 > yíng; #5DC6
+巇 > xī; #5DC7
+巈 > jú; #5DC8
+巉 > chán; #5DC9
+巊 > yĭng; #5DCA
+巋 > kūi; #5DCB
+巌 > yán; #5DCC
+巍 > wēi; #5DCD
+巎 > náo; #5DCE
+巏 > quán; #5DCF
+巐 > chăo; #5DD0
+巑 > cuán; #5DD1
+巒 > luán; #5DD2
+巓 > diān; #5DD3
+巔 > diān; #5DD4
+巖 > yán; #5DD6
+巗 > yán; #5DD7
+巘 > yăn; #5DD8
+巙 > náo; #5DD9
+巚 > yăn; #5DDA
+巛 > chuān; #5DDB
+巜 > gùi; #5DDC
+川 > chuān; #5DDD
+州 > zhōu; #5DDE
+巟 > huāng; #5DDF
+巠 > jīng; #5DE0
+巡 > xún; #5DE1
+巢 > cháo; #5DE2
+巣 > cháo; #5DE3
+巤 > liē; #5DE4
+工 > gōng; #5DE5
+左 > zŭo; #5DE6
+巧 > qiăo; #5DE7
+巨 > jù; #5DE8
+巩 > gŏng; #5DE9
+巫 > wū; #5DEB
+差 > chāi; #5DEE
+巯 > qíu; #5DEF
+巰 > qíu; #5DF0
+己 > jĭ; #5DF1
+已 > yĭ; #5DF2
+巳 > sì; #5DF3
+巴 > bā; #5DF4
+巵 > zhī; #5DF5
+巶 > zhāo; #5DF6
+巷 > xiàng; #5DF7
+巸 > yí; #5DF8
+巹 > jĭn; #5DF9
+巺 > xùn; #5DFA
+巻 > juàn; #5DFB
+巽 > xùn; #5DFD
+巾 > jīn; #5DFE
+巿 > fú; #5DFF
+帀 > zā; #5E00
+币 > bì; #5E01
+市 > shì; #5E02
+布 > bù; #5E03
+帄 > dīng; #5E04
+帅 > shuài; #5E05
+帆 > fān; #5E06
+帇 > niè; #5E07
+师 > shī; #5E08
+帉 > fēn; #5E09
+帊 > pà; #5E0A
+帋 > zhĭ; #5E0B
+希 > xī; #5E0C
+帍 > hù; #5E0D
+帎 > dàn; #5E0E
+帏 > wéi; #5E0F
+帐 > zhàng; #5E10
+帑 > tăng; #5E11
+帒 > dài; #5E12
+帓 > mà; #5E13
+帔 > pèi; #5E14
+帕 > pà; #5E15
+帖 > tiē; #5E16
+帗 > fú; #5E17
+帘 > lián; #5E18
+帙 > zhì; #5E19
+帚 > zhŏu; #5E1A
+帛 > bó; #5E1B
+帜 > zhì; #5E1C
+帝 > dì; #5E1D
+帞 > mò; #5E1E
+帟 > yì; #5E1F
+帠 > yì; #5E20
+帡 > píng; #5E21
+帢 > qià; #5E22
+帣 > juàn; #5E23
+帤 > rú; #5E24
+帥 > shuài; #5E25
+带 > dài; #5E26
+帧 > zhèng; #5E27
+帨 > shùi; #5E28
+帩 > qiào; #5E29
+帪 > zhēn; #5E2A
+師 > shī; #5E2B
+帬 > qún; #5E2C
+席 > xí; #5E2D
+帮 > bāng; #5E2E
+帯 > dài; #5E2F
+帰 > gūi; #5E30
+帱 > chóu; #5E31
+帲 > píng; #5E32
+帳 > zhàng; #5E33
+帴 > shā; #5E34
+帵 > wān; #5E35
+帶 > dài; #5E36
+帷 > wéi; #5E37
+常 > cháng; #5E38
+帹 > shà; #5E39
+帺 > qí; #5E3A
+帻 > zé; #5E3B
+帼 > gúo; #5E3C
+帽 > mào; #5E3D
+帾 > dŭ; #5E3E
+帿 > hóu; #5E3F
+幀 > zhèng; #5E40
+幁 > xū; #5E41
+幂 > mì; #5E42
+幃 > wéi; #5E43
+幄 > wò; #5E44
+幅 > fú; #5E45
+幆 > yì; #5E46
+幇 > bāng; #5E47
+幈 > píng; #5E48
+幊 > gōng; #5E4A
+幋 > pán; #5E4B
+幌 > huăng; #5E4C
+幍 > dāo; #5E4D
+幎 > mì; #5E4E
+幏 > jiā; #5E4F
+幐 > téng; #5E50
+幑 > hūi; #5E51
+幒 > zhōng; #5E52
+幓 > shān; #5E53
+幔 > màn; #5E54
+幕 > mù; #5E55
+幖 > biāo; #5E56
+幗 > gúo; #5E57
+幘 > zé; #5E58
+幙 > mù; #5E59
+幚 > bāng; #5E5A
+幛 > zhàng; #5E5B
+幜 > jĭong; #5E5C
+幝 > chăn; #5E5D
+幞 > fú; #5E5E
+幟 > zhì; #5E5F
+幠 > hū; #5E60
+幡 > fān; #5E61
+幢 > chuáng; #5E62
+幣 > bì; #5E63
+幦 > mì; #5E66
+幧 > qiāo; #5E67
+幨 > chān; #5E68
+幩 > fén; #5E69
+幪 > méng; #5E6A
+幫 > bāng; #5E6B
+幬 > chóu; #5E6C
+幭 > miè; #5E6D
+幮 > chú; #5E6E
+幯 > jié; #5E6F
+幰 > xiăn; #5E70
+幱 > lán; #5E71
+干 > gān; #5E72
+平 > píng; #5E73
+年 > nián; #5E74
+幵 > qiān; #5E75
+并 > bìng; #5E76
+幷 > bìng; #5E77
+幸 > xìng; #5E78
+幹 > gàn; #5E79
+幺 > yāo; #5E7A
+幻 > huàn; #5E7B
+幼 > yòu; #5E7C
+幽 > yōu; #5E7D
+幾 > jĭ; #5E7E
+广 > yăn; #5E7F
+庀 > pĭ; #5E80
+庁 > tīng; #5E81
+庂 > zè; #5E82
+広 > guăng; #5E83
+庄 > zhuāng; #5E84
+庅 > mo; #5E85
+庆 > qìng; #5E86
+庇 > bì; #5E87
+庈 > qín; #5E88
+庉 > dùn; #5E89
+床 > chuáng; #5E8A
+庋 > gŭi; #5E8B
+庌 > yă; #5E8C
+庍 > bài; #5E8D
+庎 > jiè; #5E8E
+序 > xù; #5E8F
+庐 > lú; #5E90
+庑 > wŭ; #5E91
+库 > kù; #5E93
+应 > yìng; #5E94
+底 > dĭ; #5E95
+庖 > páo; #5E96
+店 > diàn; #5E97
+庘 > yā; #5E98
+庙 > miào; #5E99
+庚 > gēng; #5E9A
+庛 > cī; #5E9B
+府 > fŭ; #5E9C
+庝 > tóng; #5E9D
+庞 > páng; #5E9E
+废 > fèi; #5E9F
+庠 > xiáng; #5EA0
+庡 > yĭ; #5EA1
+庢 > zhì; #5EA2
+庣 > tiāo; #5EA3
+庤 > zhì; #5EA4
+庥 > xīu; #5EA5
+度 > dù; #5EA6
+座 > zùo; #5EA7
+庨 > xiāo; #5EA8
+庩 > tú; #5EA9
+庪 > gŭi; #5EAA
+庫 > kù; #5EAB
+庬 > páng; #5EAC
+庭 > tíng; #5EAD
+庮 > yŏu; #5EAE
+庯 > bū; #5EAF
+庰 > dīng; #5EB0
+庱 > chĕng; #5EB1
+庲 > lái; #5EB2
+庳 > bēi; #5EB3
+庴 > jí; #5EB4
+庵 > ān; #5EB5
+庶 > shù; #5EB6
+康 > kāng; #5EB7
+庸 > yōng; #5EB8
+庹 > tŭo; #5EB9
+庺 > sōng; #5EBA
+庻 > shù; #5EBB
+庼 > qĭng; #5EBC
+庽 > yù; #5EBD
+庾 > yŭ; #5EBE
+庿 > miào; #5EBF
+廀 > sōu; #5EC0
+廁 > cè; #5EC1
+廂 > xiāng; #5EC2
+廃 > fèi; #5EC3
+廄 > jìu; #5EC4
+廅 > hé; #5EC5
+廆 > hùi; #5EC6
+廇 > lìu; #5EC7
+廈 > shà; #5EC8
+廉 > lián; #5EC9
+廊 > láng; #5ECA
+廋 > sōu; #5ECB
+廌 > jiàn; #5ECC
+廍 > pŏu; #5ECD
+廎 > qĭng; #5ECE
+廏 > jìu; #5ECF
+廐 > jìu; #5ED0
+廑 > qín; #5ED1
+廒 > áo; #5ED2
+廓 > kùo; #5ED3
+廔 > lóu; #5ED4
+廕 > yīn; #5ED5
+廖 > liào; #5ED6
+廗 > dài; #5ED7
+廘 > lù; #5ED8
+廙 > yì; #5ED9
+廚 > chú; #5EDA
+廛 > chán; #5EDB
+廜 > tū; #5EDC
+廝 > sī; #5EDD
+廞 > xīn; #5EDE
+廟 > miào; #5EDF
+廠 > chăng; #5EE0
+廡 > wŭ; #5EE1
+廢 > fèi; #5EE2
+廣 > guăng; #5EE3
+廥 > kuài; #5EE5
+廦 > bì; #5EE6
+廧 > qiáng; #5EE7
+廨 > xiè; #5EE8
+廩 > lĭn; #5EE9
+廪 > lĭn; #5EEA
+廫 > liáo; #5EEB
+廬 > lú; #5EEC
+廮 > yíng; #5EEE
+廯 > xiān; #5EEF
+廰 > tīng; #5EF0
+廱 > yōng; #5EF1
+廲 > lí; #5EF2
+廳 > tīng; #5EF3
+廴 > yĭn; #5EF4
+廵 > xún; #5EF5
+延 > yán; #5EF6
+廷 > tíng; #5EF7
+廸 > dí; #5EF8
+廹 > pò; #5EF9
+建 > jiàn; #5EFA
+廻 > húi; #5EFB
+廼 > năi; #5EFC
+廽 > húi; #5EFD
+廾 > gòng; #5EFE
+廿 > niàn; #5EFF
+开 > kāi; #5F00
+弁 > biàn; #5F01
+异 > yì; #5F02
+弃 > qì; #5F03
+弄 > nòng; #5F04
+弅 > fén; #5F05
+弆 > jŭ; #5F06
+弇 > yăn; #5F07
+弈 > yì; #5F08
+弉 > zàng; #5F09
+弊 > bì; #5F0A
+弋 > yì; #5F0B
+弌 > yī; #5F0C
+弍 > èr; #5F0D
+弎 > sān; #5F0E
+式 > shì; #5F0F
+弐 > èr; #5F10
+弑 > shì; #5F11
+弒 > shì; #5F12
+弓 > gōng; #5F13
+弔 > diào; #5F14
+引 > yĭn; #5F15
+弖 > hù; #5F16
+弗 > fú; #5F17
+弘 > hóng; #5F18
+弙 > wū; #5F19
+弚 > túi; #5F1A
+弛 > chí; #5F1B
+弜 > jiàng; #5F1C
+弝 > bà; #5F1D
+弞 > shĕn; #5F1E
+弟 > dì; #5F1F
+张 > zhāng; #5F20
+弡 > jué; #5F21
+弢 > tāo; #5F22
+弣 > fŭ; #5F23
+弤 > dĭ; #5F24
+弥 > mí; #5F25
+弦 > xián; #5F26
+弧 > hú; #5F27
+弨 > chāo; #5F28
+弩 > nŭ; #5F29
+弪 > jìng; #5F2A
+弫 > zhĕn; #5F2B
+弬 > yí; #5F2C
+弭 > mĭ; #5F2D
+弮 > quān; #5F2E
+弯 > wān; #5F2F
+弰 > shāo; #5F30
+弱 > rùo; #5F31
+弲 > xuān; #5F32
+弳 > jìng; #5F33
+弴 > dūn; #5F34
+張 > zhāng; #5F35
+弶 > jiàng; #5F36
+強 > qiáng; #5F37
+弸 > péng; #5F38
+弹 > dàn; #5F39
+强 > qiáng; #5F3A
+弻 > bì; #5F3B
+弼 > bì; #5F3C
+弽 > shè; #5F3D
+弾 > dàn; #5F3E
+弿 > jiăn; #5F3F
+彀 > gòu; #5F40
+彂 > fā; #5F42
+彃 > bì; #5F43
+彄 > kōu; #5F44
+彆 > biè; #5F46
+彇 > xiāo; #5F47
+彈 > dàn; #5F48
+彉 > kùo; #5F49
+彊 > qiáng; #5F4A
+彋 > hóng; #5F4B
+彌 > mí; #5F4C
+彍 > kùo; #5F4D
+彎 > wān; #5F4E
+彏 > jué; #5F4F
+彐 > jì; #5F50
+彑 > jì; #5F51
+归 > gūi; #5F52
+当 > dāng; #5F53
+彔 > lù; #5F54
+录 > lù; #5F55
+彖 > tuàn; #5F56
+彗 > hùi; #5F57
+彘 > zhì; #5F58
+彙 > hùi; #5F59
+彚 > hùi; #5F5A
+彛 > yí; #5F5B
+彜 > yí; #5F5C
+彝 > yí; #5F5D
+彞 > yí; #5F5E
+彟 > hùo; #5F5F
+彠 > hùo; #5F60
+彡 > shān; #5F61
+形 > xíng; #5F62
+彣 > wén; #5F63
+彤 > tóng; #5F64
+彥 > yàn; #5F65
+彦 > yàn; #5F66
+彧 > yù; #5F67
+彨 > chī; #5F68
+彩 > căi; #5F69
+彪 > biāo; #5F6A
+彫 > diāo; #5F6B
+彬 > bīn; #5F6C
+彭 > péng; #5F6D
+彮 > yŏng; #5F6E
+彯 > piāo; #5F6F
+彰 > zhāng; #5F70
+影 > yĭng; #5F71
+彲 > chī; #5F72
+彳 > chì; #5F73
+彴 > zhúo; #5F74
+彵 > tŭo; #5F75
+彶 > jí; #5F76
+彷 > páng; #5F77
+彸 > zhōng; #5F78
+役 > yì; #5F79
+彺 > wáng; #5F7A
+彻 > chè; #5F7B
+彼 > bĭ; #5F7C
+彽 > chí; #5F7D
+彾 > lĭng; #5F7E
+彿 > fú; #5F7F
+往 > wăng; #5F80
+征 > zhēng; #5F81
+徂 > cú; #5F82
+徃 > wăng; #5F83
+径 > jìng; #5F84
+待 > dài; #5F85
+徆 > xī; #5F86
+徇 > xùn; #5F87
+很 > hĕn; #5F88
+徉 > yáng; #5F89
+徊 > huái; #5F8A
+律 > lǜ; #5F8B
+後 > hòu; #5F8C
+徍 > wā; #5F8D
+徎 > chĕng; #5F8E
+徏 > zhì; #5F8F
+徐 > xú; #5F90
+徑 > jìng; #5F91
+徒 > tú; #5F92
+従 > cóng; #5F93
+徕 > lái; #5F95
+徖 > cóng; #5F96
+得 > dé; #5F97
+徘 > pái; #5F98
+徙 > xĭ; #5F99
+徛 > qì; #5F9B
+徜 > cháng; #5F9C
+徝 > zhì; #5F9D
+從 > cóng; #5F9E
+徟 > zhōu; #5F9F
+徠 > lái; #5FA0
+御 > yù; #5FA1
+徢 > xiè; #5FA2
+徣 > jiè; #5FA3
+徤 > jiàn; #5FA4
+徥 > chí; #5FA5
+徦 > jiă; #5FA6
+徧 > biàn; #5FA7
+徨 > huáng; #5FA8
+復 > fù; #5FA9
+循 > xún; #5FAA
+徫 > wĕi; #5FAB
+徬 > páng; #5FAC
+徭 > yáo; #5FAD
+微 > wēi; #5FAE
+徯 > xī; #5FAF
+徰 > zhēng; #5FB0
+徱 > piào; #5FB1
+徲 > chí; #5FB2
+徳 > dé; #5FB3
+徴 > zhēng; #5FB4
+徵 > zhēng; #5FB5
+徶 > biè; #5FB6
+德 > dé; #5FB7
+徸 > chōng; #5FB8
+徹 > chè; #5FB9
+徺 > jiăo; #5FBA
+徻 > wèi; #5FBB
+徼 > jiào; #5FBC
+徽 > hūi; #5FBD
+徾 > méi; #5FBE
+徿 > lòng; #5FBF
+忀 > xiāng; #5FC0
+忁 > bào; #5FC1
+忂 > qú; #5FC2
+心 > xīn; #5FC3
+忄 > shù' 'xīn' 'páng; #5FC4
+必 > bì; #5FC5
+忆 > yì; #5FC6
+忇 > lè; #5FC7
+忈 > rén; #5FC8
+忉 > dāo; #5FC9
+忊 > dìng; #5FCA
+忋 > găi; #5FCB
+忌 > jì; #5FCC
+忍 > rĕn; #5FCD
+忎 > rén; #5FCE
+忏 > chàn; #5FCF
+忐 > tăn; #5FD0
+忑 > tè; #5FD1
+忒 > tè; #5FD2
+忓 > gān; #5FD3
+忔 > qì; #5FD4
+忕 > shì; #5FD5
+忖 > cŭn; #5FD6
+志 > zhì; #5FD7
+忘 > wàng; #5FD8
+忙 > máng; #5FD9
+忚 > xī; #5FDA
+忛 > fán; #5FDB
+応 > yīng; #5FDC
+忝 > tiăn; #5FDD
+忞 > mín; #5FDE
+忟 > mín; #5FDF
+忠 > zhōng; #5FE0
+忡 > chōng; #5FE1
+忢 > wù; #5FE2
+忣 > jí; #5FE3
+忤 > wŭ; #5FE4
+忥 > xì; #5FE5
+忦 > yè; #5FE6
+忧 > yōu; #5FE7
+忨 > wàn; #5FE8
+忩 > cōng; #5FE9
+忪 > zhōng; #5FEA
+快 > kuài; #5FEB
+忬 > yù; #5FEC
+忭 > biàn; #5FED
+忮 > zhì; #5FEE
+忯 > qí; #5FEF
+忰 > cùi; #5FF0
+忱 > chén; #5FF1
+忲 > tài; #5FF2
+忳 > tún; #5FF3
+忴 > qián; #5FF4
+念 > niàn; #5FF5
+忶 > hún; #5FF6
+忷 > xīong; #5FF7
+忸 > nĭu; #5FF8
+忹 > wăng; #5FF9
+忺 > xiān; #5FFA
+忻 > xīn; #5FFB
+忼 > kāng; #5FFC
+忽 > hū; #5FFD
+忾 > kài; #5FFE
+忿 > fèn; #5FFF
+怀 > huái; #6000
+态 > tài; #6001
+怂 > sŏng; #6002
+怃 > wŭ; #6003
+怄 > òu; #6004
+怅 > chàng; #6005
+怆 > chuàng; #6006
+怇 > jù; #6007
+怈 > yì; #6008
+怉 > băo; #6009
+怊 > chāo; #600A
+怋 > mín; #600B
+怌 > pēi; #600C
+怍 > zùo; #600D
+怎 > zĕn; #600E
+怏 > yàng; #600F
+怐 > kòu; #6010
+怑 > bàn; #6011
+怒 > nù; #6012
+怓 > náo; #6013
+怔 > zhēng; #6014
+怕 > pà; #6015
+怖 > bù; #6016
+怗 > tiē; #6017
+怘 > gù; #6018
+怙 > hù; #6019
+怚 > jù; #601A
+怛 > dá; #601B
+怜 > lián; #601C
+思 > sī; #601D
+怞 > chōu; #601E
+怟 > dì; #601F
+怠 > dài; #6020
+怡 > yí; #6021
+怢 > tú; #6022
+怣 > yóu; #6023
+怤 > fū; #6024
+急 > jí; #6025
+怦 > pēng; #6026
+性 > xìng; #6027
+怨 > yuàn; #6028
+怩 > ní; #6029
+怪 > guài; #602A
+怫 > fú; #602B
+怬 > xì; #602C
+怭 > bì; #602D
+怮 > yōu; #602E
+怯 > qiè; #602F
+怰 > xuàn; #6030
+怱 > cōng; #6031
+怲 > bĭng; #6032
+怳 > huăng; #6033
+怴 > xù; #6034
+怵 > chù; #6035
+怶 > pī; #6036
+怷 > xī; #6037
+怸 > xī; #6038
+怹 > tān; #6039
+总 > zŏng; #603B
+怼 > dùi; #603C
+怿 > yì; #603F
+恀 > chĭ; #6040
+恁 > rèn; #6041
+恂 > xún; #6042
+恃 > shì; #6043
+恄 > xì; #6044
+恅 > lăo; #6045
+恆 > héng; #6046
+恇 > kuāng; #6047
+恈 > mú; #6048
+恉 > zhĭ; #6049
+恊 > xié; #604A
+恋 > liàn; #604B
+恌 > tiāo; #604C
+恍 > huăng; #604D
+恎 > dié; #604E
+恏 > hăo; #604F
+恐 > kŏng; #6050
+恑 > gŭi; #6051
+恒 > héng; #6052
+恓 > xī; #6053
+恔 > xiào; #6054
+恕 > shù; #6055
+恖 > sī; #6056
+恗 > kuă; #6057
+恘 > qīu; #6058
+恙 > yàng; #6059
+恚 > hùi; #605A
+恛 > húi; #605B
+恜 > chì; #605C
+恝 > jiá; #605D
+恞 > yí; #605E
+恟 > xīong; #605F
+恠 > guài; #6060
+恡 > lìn; #6061
+恢 > hūi; #6062
+恣 > zì; #6063
+恤 > xù; #6064
+恥 > chĭ; #6065
+恦 > xiàng; #6066
+恧 > nǜ; #6067
+恨 > hèn; #6068
+恩 > ēn; #6069
+恪 > kè; #606A
+恫 > tōng; #606B
+恬 > tián; #606C
+恭 > gōng; #606D
+恮 > quán; #606E
+息 > xī; #606F
+恰 > qià; #6070
+恱 > yuè; #6071
+恲 > pēng; #6072
+恳 > kĕn; #6073
+恴 > dé; #6074
+恵 > hùi; #6075
+恶 > è; #6076
+恸 > tòng; #6078
+恹 > yàn; #6079
+恺 > kăi; #607A
+恻 > cè; #607B
+恼 > năo; #607C
+恽 > yùn; #607D
+恾 > máng; #607E
+恿 > yŏng; #607F
+悀 > yŏng; #6080
+悁 > yuān; #6081
+悂 > pī; #6082
+悃 > kŭn; #6083
+悄 > qiăo; #6084
+悅 > yuè; #6085
+悆 > yù; #6086
+悇 > yù; #6087
+悈 > jiè; #6088
+悉 > xī; #6089
+悊 > zhé; #608A
+悋 > lìn; #608B
+悌 > tì; #608C
+悍 > hàn; #608D
+悎 > hào; #608E
+悏 > qiè; #608F
+悐 > tì; #6090
+悑 > bù; #6091
+悒 > yì; #6092
+悓 > qiàn; #6093
+悔 > hŭi; #6094
+悕 > xī; #6095
+悖 > bèi; #6096
+悗 > mán; #6097
+悘 > yī; #6098
+悙 > hēng; #6099
+悚 > sŏng; #609A
+悛 > quān; #609B
+悜 > chĕng; #609C
+悝 > hūi; #609D
+悞 > wù; #609E
+悟 > wù; #609F
+悠 > yōu; #60A0
+悡 > lí; #60A1
+悢 > liàng; #60A2
+患 > huàn; #60A3
+悤 > cōng; #60A4
+悥 > yì; #60A5
+悦 > yuè; #60A6
+悧 > lì; #60A7
+您 > nín; #60A8
+悩 > năo; #60A9
+悪 > è; #60AA
+悫 > què; #60AB
+悬 > xuán; #60AC
+悭 > qiān; #60AD
+悮 > wù; #60AE
+悯 > mĭn; #60AF
+悰 > cóng; #60B0
+悱 > fĕi; #60B1
+悲 > bēi; #60B2
+悳 > dúo; #60B3
+悴 > cùi; #60B4
+悵 > chàng; #60B5
+悶 > mèn; #60B6
+悷 > lì; #60B7
+悸 > jì; #60B8
+悹 > guàn; #60B9
+悺 > guàn; #60BA
+悻 > xìng; #60BB
+悼 > dào; #60BC
+悽 > qī; #60BD
+悾 > kōng; #60BE
+悿 > tiăn; #60BF
+惀 > lún; #60C0
+惁 > xī; #60C1
+惂 > kăn; #60C2
+惃 > kūn; #60C3
+惄 > nì; #60C4
+情 > qíng; #60C5
+惆 > chóu; #60C6
+惇 > dūn; #60C7
+惈 > gŭo; #60C8
+惉 > chān; #60C9
+惊 > liáng; #60CA
+惋 > wăn; #60CB
+惌 > yuān; #60CC
+惍 > jīn; #60CD
+惎 > jì; #60CE
+惏 > lín; #60CF
+惐 > yù; #60D0
+惑 > hùo; #60D1
+惒 > hé; #60D2
+惓 > quán; #60D3
+惔 > tán; #60D4
+惕 > tì; #60D5
+惖 > tì; #60D6
+惗 > niē; #60D7
+惘 > wăng; #60D8
+惙 > chùo; #60D9
+惚 > bū; #60DA
+惛 > hūn; #60DB
+惜 > xī; #60DC
+惝 > tăng; #60DD
+惞 > xīn; #60DE
+惟 > wéi; #60DF
+惠 > hùi; #60E0
+惡 > è; #60E1
+惢 > rŭi; #60E2
+惣 > zŏng; #60E3
+惤 > jiān; #60E4
+惥 > yŏng; #60E5
+惦 > diàn; #60E6
+惧 > jù; #60E7
+惨 > căn; #60E8
+惩 > chéng; #60E9
+惪 > dé; #60EA
+惫 > bèi; #60EB
+惬 > qiè; #60EC
+惭 > cán; #60ED
+惮 > dàn; #60EE
+惯 > guàn; #60EF
+惰 > dùo; #60F0
+惱 > năo; #60F1
+惲 > yùn; #60F2
+想 > xiăng; #60F3
+惴 > zhùi; #60F4
+惵 > diè; #60F5
+惶 > huáng; #60F6
+惷 > chŭn; #60F7
+惸 > qíong; #60F8
+惹 > rĕ; #60F9
+惺 > xīng; #60FA
+惻 > cè; #60FB
+惼 > biăn; #60FC
+惽 > hūn; #60FD
+惾 > zōng; #60FE
+惿 > tí; #60FF
+愀 > qiăo; #6100
+愁 > chóu; #6101
+愂 > bèi; #6102
+愃 > xuān; #6103
+愄 > wēi; #6104
+愅 > gé; #6105
+愆 > qiān; #6106
+愇 > wĕi; #6107
+愈 > yù; #6108
+愉 > yú; #6109
+愊 > bì; #610A
+愋 > xuān; #610B
+愌 > huàn; #610C
+愍 > mĭn; #610D
+愎 > bì; #610E
+意 > yì; #610F
+愐 > miăn; #6110
+愑 > yŏng; #6111
+愒 > kài; #6112
+愓 > dàng; #6113
+愔 > yīn; #6114
+愕 > è; #6115
+愖 > chén; #6116
+愗 > mòu; #6117
+愘 > kè; #6118
+愙 > kè; #6119
+愚 > yú; #611A
+愛 > ài; #611B
+愜 > qiè; #611C
+愝 > yăn; #611D
+愞 > nùo; #611E
+感 > găn; #611F
+愠 > yùn; #6120
+愡 > zŏng; #6121
+愢 > sāi; #6122
+愣 > léng; #6123
+愤 > fèn; #6124
+愦 > kùi; #6126
+愧 > kùi; #6127
+愨 > què; #6128
+愩 > gōng; #6129
+愪 > yún; #612A
+愫 > sù; #612B
+愬 > sù; #612C
+愭 > qí; #612D
+愮 > yáo; #612E
+愯 > sŏng; #612F
+愰 > huăng; #6130
+愱 > jí; #6131
+愲 > gŭ; #6132
+愳 > jù; #6133
+愴 > chuàng; #6134
+愵 > nì; #6135
+愶 > xié; #6136
+愷 > kăi; #6137
+愸 > zhĕng; #6138
+愹 > yŏng; #6139
+愺 > căo; #613A
+愻 > sùn; #613B
+愼 > shèn; #613C
+愽 > bó; #613D
+愾 > kài; #613E
+愿 > yuàn; #613F
+慀 > xié; #6140
+慁 > hùn; #6141
+慂 > yŏng; #6142
+慃 > yăng; #6143
+慄 > lì; #6144
+慅 > sāo; #6145
+慆 > tāo; #6146
+慇 > yīn; #6147
+慈 > cí; #6148
+慉 > xù; #6149
+慊 > qiàn; #614A
+態 > tài; #614B
+慌 > huāng; #614C
+慍 > yùn; #614D
+慎 > shèn; #614E
+慏 > mĭng; #614F
+慑 > shè; #6151
+慒 > cóng; #6152
+慓 > piào; #6153
+慔 > mò; #6154
+慕 > mù; #6155
+慖 > gúo; #6156
+慗 > chì; #6157
+慘 > căn; #6158
+慙 > cán; #6159
+慚 > cán; #615A
+慛 > cúi; #615B
+慜 > mĭn; #615C
+慝 > tè; #615D
+慞 > zhāng; #615E
+慟 > tòng; #615F
+慠 > ào; #6160
+慡 > shuăng; #6161
+慢 > màn; #6162
+慣 > guàn; #6163
+慤 > què; #6164
+慥 > zào; #6165
+慦 > jìu; #6166
+慧 > hùi; #6167
+慨 > kăi; #6168
+慩 > lián; #6169
+慪 > òu; #616A
+慫 > sŏng; #616B
+慬 > jĭn; #616C
+慭 > yìn; #616D
+慮 > lǜ; #616E
+慯 > shāng; #616F
+慰 > wèi; #6170
+慱 > tuán; #6171
+慲 > mán; #6172
+慳 > qiān; #6173
+慴 > shè; #6174
+慵 > yōng; #6175
+慶 > qìng; #6176
+慷 > kāng; #6177
+慸 > dì; #6178
+慹 > zhí; #6179
+慺 > lóu; #617A
+慻 > juàn; #617B
+慼 > qī; #617C
+慽 > qī; #617D
+慾 > yù; #617E
+慿 > píng; #617F
+憀 > liáo; #6180
+憁 > cōng; #6181
+憂 > yōu; #6182
+憃 > chōng; #6183
+憄 > zhì; #6184
+憅 > tòng; #6185
+憆 > chēng; #6186
+憇 > qì; #6187
+憈 > qū; #6188
+憉 > péng; #6189
+憊 > bèi; #618A
+憋 > biē; #618B
+憌 > chún; #618C
+憍 > jiāo; #618D
+憎 > zēng; #618E
+憏 > chì; #618F
+憐 > lián; #6190
+憑 > píng; #6191
+憒 > kùi; #6192
+憓 > hùi; #6193
+憔 > qiáo; #6194
+憕 > chéng; #6195
+憖 > yìn; #6196
+憗 > yìn; #6197
+憘 > xĭ; #6198
+憙 > xĭ; #6199
+憚 > dàn; #619A
+憛 > tán; #619B
+憜 > dŭo; #619C
+憝 > dùi; #619D
+憞 > dùi; #619E
+憟 > sù; #619F
+憠 > jué; #61A0
+憡 > cè; #61A1
+憢 > xiāo; #61A2
+憣 > fán; #61A3
+憤 > fèn; #61A4
+憥 > láo; #61A5
+憦 > lào; #61A6
+憧 > chōng; #61A7
+憨 > hān; #61A8
+憩 > qì; #61A9
+憪 > xián; #61AA
+憫 > mĭn; #61AB
+憬 > jĭng; #61AC
+憭 > liăo; #61AD
+憮 > wŭ; #61AE
+憯 > căn; #61AF
+憰 > jué; #61B0
+憱 > cù; #61B1
+憲 > xiàn; #61B2
+憳 > tăn; #61B3
+憴 > shéng; #61B4
+憵 > pī; #61B5
+憶 > yì; #61B6
+憷 > chŭ; #61B7
+憸 > xiān; #61B8
+憹 > náo; #61B9
+憺 > dàn; #61BA
+憻 > tăn; #61BB
+憼 > jĭng; #61BC
+憽 > sōng; #61BD
+憾 > hàn; #61BE
+憿 > jiāo; #61BF
+懀 > wài; #61C0
+懁 > huán; #61C1
+懂 > dŏng; #61C2
+懃 > qín; #61C3
+懄 > qín; #61C4
+懅 > qú; #61C5
+懆 > căo; #61C6
+懇 > kĕn; #61C7
+懈 > xiè; #61C8
+應 > yìng; #61C9
+懊 > ào; #61CA
+懋 > mào; #61CB
+懌 > yì; #61CC
+懍 > lĭn; #61CD
+懎 > sè; #61CE
+懏 > jùn; #61CF
+懐 > huái; #61D0
+懑 > mèn; #61D1
+懒 > lăn; #61D2
+懓 > ài; #61D3
+懔 > lĭn; #61D4
+懕 > yān; #61D5
+懖 > guā; #61D6
+懗 > xià; #61D7
+懘 > chì; #61D8
+懙 > yŭ; #61D9
+懚 > yìn; #61DA
+懛 > dāi; #61DB
+懜 > mèng; #61DC
+懝 > ài; #61DD
+懞 > méng; #61DE
+懟 > dùi; #61DF
+懠 > qí; #61E0
+懡 > mŏ; #61E1
+懢 > lán; #61E2
+懣 > mèn; #61E3
+懤 > chóu; #61E4
+懥 > zhì; #61E5
+懦 > nùo; #61E6
+懧 > nùo; #61E7
+懨 > yān; #61E8
+懩 > yăng; #61E9
+懪 > bó; #61EA
+懫 > zhí; #61EB
+懬 > kuàng; #61EC
+懭 > kuàng; #61ED
+懮 > yŏu; #61EE
+懯 > fū; #61EF
+懰 > líu; #61F0
+懱 > miè; #61F1
+懲 > chéng; #61F2
+懴 > chàn; #61F4
+懵 > méng; #61F5
+懶 > lăn; #61F6
+懷 > huái; #61F7
+懸 > xuán; #61F8
+懹 > ràng; #61F9
+懺 > chàn; #61FA
+懻 > jì; #61FB
+懼 > jù; #61FC
+懽 > huān; #61FD
+懾 > shè; #61FE
+懿 > yì; #61FF
+戀 > liàn; #6200
+戁 > năn; #6201
+戂 > mí; #6202
+戃 > tăng; #6203
+戄 > jué; #6204
+戅 > gàng; #6205
+戆 > gàng; #6206
+戇 > gàng; #6207
+戈 > gē; #6208
+戉 > yuè; #6209
+戊 > wù; #620A
+戋 > jiān; #620B
+戌 > xū; #620C
+戍 > shù; #620D
+戎 > róng; #620E
+戏 > xì; #620F
+成 > chéng; #6210
+我 > wŏ; #6211
+戒 > jiè; #6212
+戓 > gē; #6213
+戔 > jiān; #6214
+戕 > qiāng; #6215
+或 > hùo; #6216
+戗 > qiāng; #6217
+战 > zhàn; #6218
+戙 > dòng; #6219
+戚 > qī; #621A
+戛 > jiá; #621B
+戜 > dié; #621C
+戝 > zéi; #621D
+戞 > jiá; #621E
+戟 > jĭ; #621F
+戠 > shì; #6220
+戡 > kān; #6221
+戢 > jí; #6222
+戣 > kúi; #6223
+戤 > gài; #6224
+戥 > dĕng; #6225
+戦 > zhàn; #6226
+戧 > chuāng; #6227
+戨 > gē; #6228
+戩 > jiăn; #6229
+截 > jié; #622A
+戫 > yù; #622B
+戬 > jiăn; #622C
+戭 > yăn; #622D
+戮 > lù; #622E
+戯 > xì; #622F
+戰 > zhàn; #6230
+戱 > xì; #6231
+戲 > xì; #6232
+戳 > chūo; #6233
+戴 > dài; #6234
+戵 > qú; #6235
+戶 > hù; #6236
+户 > hù; #6237
+戸 > hù; #6238
+戹 > è; #6239
+戺 > shì; #623A
+戻 > lì; #623B
+戼 > măo; #623C
+戽 > hù; #623D
+戾 > lì; #623E
+房 > fáng; #623F
+所 > sŭo; #6240
+扁 > biăn; #6241
+扂 > diàn; #6242
+扃 > jīong; #6243
+扄 > shăng; #6244
+扅 > yí; #6245
+扆 > yĭ; #6246
+扇 > shàn; #6247
+扈 > hù; #6248
+扉 > fēi; #6249
+扊 > yăn; #624A
+手 > shŏu; #624B
+扌 > t̄' 'shŏu' 'páng; #624C
+才 > cái; #624D
+扎 > zhā; #624E
+扏 > qíu; #624F
+扐 > lè; #6250
+扑 > bū; #6251
+扒 > bā; #6252
+打 > dă; #6253
+扔 > rēng; #6254
+払 > fú; #6255
+扗 > zài; #6257
+托 > tūo; #6258
+扙 > zhàng; #6259
+扚 > diāo; #625A
+扛 > káng; #625B
+扜 > yū; #625C
+扝 > kū; #625D
+扞 > hàn; #625E
+扟 > shēn; #625F
+扠 > chā; #6260
+扡 > yĭ; #6261
+扢 > gŭ; #6262
+扣 > kòu; #6263
+扤 > wù; #6264
+扥 > tūo; #6265
+扦 > qiān; #6266
+执 > zhí; #6267
+扨 > rèn; #6268
+扩 > kùo; #6269
+扪 > mén; #626A
+扫 > săo; #626B
+扬 > yáng; #626C
+扭 > nĭu; #626D
+扮 > bàn; #626E
+扯 > chĕ; #626F
+扰 > răo; #6270
+扱 > xī; #6271
+扲 > qián; #6272
+扳 > bān; #6273
+扴 > jiá; #6274
+扵 > yú; #6275
+扶 > fú; #6276
+扷 > ào; #6277
+扸 > xī; #6278
+批 > pī; #6279
+扺 > zhĭ; #627A
+扻 > zì; #627B
+扼 > è; #627C
+扽 > dùn; #627D
+找 > zhăo; #627E
+承 > chéng; #627F
+技 > jì; #6280
+抁 > yăn; #6281
+抂 > kuáng; #6282
+抃 > biàn; #6283
+抄 > chāo; #6284
+抅 > jū; #6285
+抆 > wèn; #6286
+抇 > hú; #6287
+抈 > yuè; #6288
+抉 > jué; #6289
+把 > bă; #628A
+抋 > qìn; #628B
+抌 > zhĕn; #628C
+抍 > zhĕng; #628D
+抎 > yŭn; #628E
+抏 > wán; #628F
+抐 > nù; #6290
+抑 > yì; #6291
+抒 > shū; #6292
+抓 > zhuā; #6293
+抔 > póu; #6294
+投 > tóu; #6295
+抖 > dŏu; #6296
+抗 > kàng; #6297
+折 > zhé; #6298
+抙 > póu; #6299
+抚 > fŭ; #629A
+抛 > pāo; #629B
+抜 > bá; #629C
+抝 > ăo; #629D
+択 > zé; #629E
+抟 > tuán; #629F
+抠 > kōu; #62A0
+抡 > lún; #62A1
+抢 > qiăng; #62A2
+护 > hù; #62A4
+报 > bào; #62A5
+抦 > bĭng; #62A6
+抧 > zhĭ; #62A7
+抨 > pēng; #62A8
+抩 > tān; #62A9
+抪 > pū; #62AA
+披 > pī; #62AB
+抬 > tái; #62AC
+抭 > yăo; #62AD
+抮 > zhĕn; #62AE
+抯 > zhā; #62AF
+抰 > yăng; #62B0
+抱 > bào; #62B1
+抲 > hē; #62B2
+抳 > nĭ; #62B3
+抴 > yì; #62B4
+抵 > dĭ; #62B5
+抶 > chì; #62B6
+抷 > pī; #62B7
+抸 > zā; #62B8
+抹 > mŏ; #62B9
+抺 > mŏ; #62BA
+抻 > shèn; #62BB
+押 > yā; #62BC
+抽 > chōu; #62BD
+抾 > qū; #62BE
+抿 > mĭn; #62BF
+拀 > chù; #62C0
+拁 > jiā; #62C1
+拂 > fú; #62C2
+拃 > zhăn; #62C3
+拄 > zhŭ; #62C4
+担 > dàn; #62C5
+拆 > chāi; #62C6
+拇 > mŭ; #62C7
+拈 > nián; #62C8
+拉 > lā; #62C9
+拊 > fŭ; #62CA
+拋 > pāo; #62CB
+拌 > bàn; #62CC
+拍 > pāi; #62CD
+拎 > līng; #62CE
+拏 > ná; #62CF
+拐 > guăi; #62D0
+拑 > qián; #62D1
+拒 > jù; #62D2
+拓 > tùo; #62D3
+拔 > bá; #62D4
+拕 > tūo; #62D5
+拖 > tūo; #62D6
+拗 > ăo; #62D7
+拘 > jū; #62D8
+拙 > zhúo; #62D9
+拚 > pàn; #62DA
+招 > zhāo; #62DB
+拜 > bài; #62DC
+拝 > bài; #62DD
+拞 > dĭ; #62DE
+拟 > nĭ; #62DF
+拠 > jù; #62E0
+拡 > kùo; #62E1
+拢 > lŏng; #62E2
+拣 > jiăn; #62E3
+拥 > yŏng; #62E5
+拦 > lán; #62E6
+拧 > níng; #62E7
+拨 > bō; #62E8
+择 > zé; #62E9
+拪 > qiān; #62EA
+拫 > hén; #62EB
+括 > guā; #62EC
+拭 > shì; #62ED
+拮 > jié; #62EE
+拯 > zhĕng; #62EF
+拰 > nĭn; #62F0
+拱 > gŏng; #62F1
+拲 > gŏng; #62F2
+拳 > quán; #62F3
+拴 > shuān; #62F4
+拵 > cún; #62F5
+拶 > zăn; #62F6
+拷 > kăo; #62F7
+拸 > chĭ; #62F8
+拹 > xié; #62F9
+拺 > cè; #62FA
+拻 > hūi; #62FB
+拼 > pīn; #62FC
+拽 > zhuāi; #62FD
+拾 > shí; #62FE
+拿 > ná; #62FF
+挀 > bò; #6300
+持 > chí; #6301
+挂 > guà; #6302
+挃 > zhì; #6303
+挄 > kùo; #6304
+挅 > dŭo; #6305
+挆 > dŭo; #6306
+指 > zhĭ; #6307
+挈 > qiè; #6308
+按 > àn; #6309
+挊 > nòng; #630A
+挋 > zhèn; #630B
+挌 > gé; #630C
+挍 > jiào; #630D
+挎 > kū; #630E
+挏 > dòng; #630F
+挐 > rú; #6310
+挑 > tiāo; #6311
+挒 > liè; #6312
+挓 > zhā; #6313
+挔 > lǚ; #6314
+挕 > dié; #6315
+挖 > wā; #6316
+挗 > jué; #6317
+挙 > jŭ; #6319
+挚 > zhì; #631A
+挛 > luán; #631B
+挜 > yà; #631C
+挝 > zhuā; #631D
+挞 > tà; #631E
+挟 > xié; #631F
+挠 > náo; #6320
+挡 > dăng; #6321
+挢 > jiăo; #6322
+挣 > zhēng; #6323
+挤 > jĭ; #6324
+挥 > hūi; #6325
+挦 > xún; #6326
+挨 > āi; #6328
+挩 > tūo; #6329
+挪 > núo; #632A
+挫 > cùo; #632B
+挬 > bó; #632C
+挭 > gĕng; #632D
+挮 > tĭ; #632E
+振 > zhèn; #632F
+挰 > chéng; #6330
+挱 > sūo; #6331
+挲 > sūo; #6332
+挳 > kēng; #6333
+挴 > mĕi; #6334
+挵 > lòng; #6335
+挶 > jú; #6336
+挷 > péng; #6337
+挸 > jiăn; #6338
+挹 > yì; #6339
+挺 > tĭng; #633A
+挻 > shān; #633B
+挼 > nùo; #633C
+挽 > wăn; #633D
+挾 > xié; #633E
+挿 > chā; #633F
+捀 > fēng; #6340
+捁 > jiăo; #6341
+捂 > wŭ; #6342
+捃 > jùn; #6343
+捄 > jìu; #6344
+捅 > tŏng; #6345
+捆 > kŭn; #6346
+捇 > hùo; #6347
+捈 > tú; #6348
+捉 > zhūo; #6349
+捊 > póu; #634A
+捋 > lè; #634B
+捌 > bā; #634C
+捍 > hàn; #634D
+捎 > shāo; #634E
+捏 > niē; #634F
+捐 > juān; #6350
+捑 > zé; #6351
+捒 > sŏng; #6352
+捓 > yé; #6353
+捔 > jué; #6354
+捕 > bŭ; #6355
+捖 > huán; #6356
+捗 > bù; #6357
+捘 > zùn; #6358
+捙 > yì; #6359
+捚 > zhāi; #635A
+捛 > lǚ; #635B
+捜 > sōu; #635C
+捝 > tūo; #635D
+捞 > lāo; #635E
+损 > sŭn; #635F
+捠 > bāng; #6360
+捡 > jiăn; #6361
+换 > huàn; #6362
+捣 > dăo; #6363
+捥 > wàn; #6365
+捦 > qín; #6366
+捧 > pĕng; #6367
+捨 > shĕ; #6368
+捩 > liè; #6369
+捪 > mín; #636A
+捫 > mén; #636B
+捬 > fŭ; #636C
+捭 > băi; #636D
+据 > jù; #636E
+捯 > dăo; #636F
+捰 > wŏ; #6370
+捱 > ái; #6371
+捲 > juăn; #6372
+捳 > yuè; #6373
+捴 > zŏng; #6374
+捵 > chĕn; #6375
+捶 > chúi; #6376
+捷 > jié; #6377
+捸 > tū; #6378
+捹 > bèn; #6379
+捺 > nà; #637A
+捻 > niăn; #637B
+捼 > núo; #637C
+捽 > zú; #637D
+捾 > wò; #637E
+捿 > xī; #637F
+掀 > xiān; #6380
+掁 > chéng; #6381
+掂 > diān; #6382
+掃 > săo; #6383
+掄 > lún; #6384
+掅 > qìng; #6385
+掆 > gāng; #6386
+掇 > dúo; #6387
+授 > shòu; #6388
+掉 > diào; #6389
+掊 > póu; #638A
+掋 > dĭ; #638B
+掌 > zhăng; #638C
+掍 > gŭn; #638D
+掎 > jĭ; #638E
+掏 > tāo; #638F
+掐 > qiā; #6390
+掑 > qí; #6391
+排 > pái; #6392
+掓 > shú; #6393
+掔 > qiān; #6394
+掕 > lìng; #6395
+掖 > yì; #6396
+掗 > yà; #6397
+掘 > jué; #6398
+掙 > zhēng; #6399
+掚 > liăng; #639A
+掛 > guà; #639B
+掜 > yĭ; #639C
+掝 > hùo; #639D
+掞 > shàn; #639E
+掟 > zhĕng; #639F
+掠 > lǜe; #63A0
+採 > căi; #63A1
+探 > tàn; #63A2
+掣 > chè; #63A3
+掤 > bīng; #63A4
+接 > jiē; #63A5
+掦 > tì; #63A6
+控 > kòng; #63A7
+推 > tūi; #63A8
+掩 > yăn; #63A9
+措 > cùo; #63AA
+掫 > zōu; #63AB
+掬 > jú; #63AC
+掭 > tiàn; #63AD
+掮 > qián; #63AE
+掯 > kèn; #63AF
+掰 > bāi; #63B0
+掱 > shŏu; #63B1
+掲 > jiē; #63B2
+掳 > lŭ; #63B3
+掴 > gúo; #63B4
+掷 > zhí; #63B7
+掸 > dăn; #63B8
+掺 > xiān; #63BA
+掻 > sāo; #63BB
+掼 > guàn; #63BC
+掽 > pèng; #63BD
+掾 > yuàn; #63BE
+掿 > nùo; #63BF
+揀 > jiăn; #63C0
+揁 > zhēn; #63C1
+揂 > jīu; #63C2
+揃 > jiān; #63C3
+揄 > yú; #63C4
+揅 > yán; #63C5
+揆 > kúi; #63C6
+揇 > năn; #63C7
+揈 > hōng; #63C8
+揉 > róu; #63C9
+揊 > pì; #63CA
+揋 > wēi; #63CB
+揌 > sāi; #63CC
+揍 > zòu; #63CD
+揎 > xuān; #63CE
+描 > miáo; #63CF
+提 > tí; #63D0
+揑 > niē; #63D1
+插 > chā; #63D2
+揓 > shì; #63D3
+揔 > zŏng; #63D4
+揕 > zhèn; #63D5
+揖 > yī; #63D6
+揗 > shŭn; #63D7
+揘 > héng; #63D8
+揙 > biàn; #63D9
+揚 > yáng; #63DA
+換 > huàn; #63DB
+揜 > yăn; #63DC
+揝 > zuàn; #63DD
+揞 > ăn; #63DE
+揟 > xū; #63DF
+揠 > yà; #63E0
+握 > wò; #63E1
+揢 > kè; #63E2
+揣 > chuăi; #63E3
+揤 > jí; #63E4
+揥 > tì; #63E5
+揦 > lá; #63E6
+揧 > là; #63E7
+揨 > chéng; #63E8
+揩 > kāi; #63E9
+揪 > jīu; #63EA
+揫 > jīu; #63EB
+揬 > tú; #63EC
+揭 > jiē; #63ED
+揮 > hūi; #63EE
+揯 > gēng; #63EF
+揰 > chòng; #63F0
+揱 > shùo; #63F1
+揲 > shé; #63F2
+揳 > xiè; #63F3
+援 > yuán; #63F4
+揵 > qián; #63F5
+揶 > yé; #63F6
+揷 > chā; #63F7
+揸 > zhā; #63F8
+揹 > bēi; #63F9
+揺 > yáo; #63FA
+揽 > lăn; #63FD
+揾 > wèn; #63FE
+揿 > qìn; #63FF
+搀 > chān; #6400
+搁 > gē; #6401
+搂 > lŏu; #6402
+搃 > zŏng; #6403
+搄 > gēng; #6404
+搅 > jiăo; #6405
+搆 > gòu; #6406
+搇 > qìn; #6407
+搈 > yŏng; #6408
+搉 > què; #6409
+搊 > chōu; #640A
+搋 > chĭ; #640B
+搌 > zhăn; #640C
+損 > sŭn; #640D
+搎 > sūn; #640E
+搏 > bó; #640F
+搐 > chù; #6410
+搑 > rŏng; #6411
+搒 > bèng; #6412
+搓 > cūo; #6413
+搔 > sāo; #6414
+搕 > kè; #6415
+搖 > yáo; #6416
+搗 > dăo; #6417
+搘 > zhī; #6418
+搙 > nù; #6419
+搚 > xié; #641A
+搛 > jiān; #641B
+搜 > sōu; #641C
+搝 > qĭu; #641D
+搞 > găo; #641E
+搟 > xiăn; #641F
+搠 > shùo; #6420
+搡 > săng; #6421
+搢 > jìn; #6422
+搣 > miè; #6423
+搤 > è; #6424
+搥 > chúi; #6425
+搦 > nùo; #6426
+搧 > shān; #6427
+搨 > tà; #6428
+搩 > jié; #6429
+搪 > táng; #642A
+搫 > pán; #642B
+搬 > bān; #642C
+搭 > dā; #642D
+搮 > lì; #642E
+搯 > tāo; #642F
+搰 > hú; #6430
+搱 > zhì; #6431
+搲 > wā; #6432
+搳 > xiá; #6433
+搴 > qiān; #6434
+搵 > wèn; #6435
+搶 > qiăng; #6436
+搷 > tián; #6437
+搸 > zhēn; #6438
+搹 > è; #6439
+携 > xī; #643A
+搻 > nùo; #643B
+搼 > quán; #643C
+搽 > chá; #643D
+搾 > zhà; #643E
+搿 > gé; #643F
+摀 > wŭ; #6440
+摁 > èn; #6441
+摂 > shè; #6442
+摃 > káng; #6443
+摄 > shè; #6444
+摅 > shū; #6445
+摆 > băi; #6446
+摇 > yáo; #6447
+摈 > bìn; #6448
+摉 > sōu; #6449
+摊 > tān; #644A
+摋 > sà; #644B
+摌 > chăn; #644C
+摍 > sūo; #644D
+摎 > liáo; #644E
+摏 > chōng; #644F
+摐 > chuāng; #6450
+摑 > gúo; #6451
+摒 > bìng; #6452
+摓 > féng; #6453
+摔 > shuāi; #6454
+摕 > dì; #6455
+摖 > qì; #6456
+摗 > sou; #6457
+摘 > zhāi; #6458
+摙 > liăn; #6459
+摚 > táng; #645A
+摛 > chī; #645B
+摜 > guàn; #645C
+摝 > lù; #645D
+摞 > lúo; #645E
+摟 > lŏu; #645F
+摠 > zŏng; #6460
+摡 > gài; #6461
+摢 > hù; #6462
+摣 > zhā; #6463
+摤 > chuăng; #6464
+摥 > tàng; #6465
+摦 > huà; #6466
+摧 > cūi; #6467
+摨 > nái; #6468
+摩 > mó; #6469
+摪 > jiāng; #646A
+摫 > gūi; #646B
+摬 > yìng; #646C
+摭 > zhí; #646D
+摮 > áo; #646E
+摯 > zhì; #646F
+摰 > niè; #6470
+摱 > mán; #6471
+摲 > shàn; #6472
+摳 > kōu; #6473
+摴 > shū; #6474
+摵 > sŭo; #6475
+摶 > tuán; #6476
+摷 > jiăo; #6477
+摸 > mō; #6478
+摹 > mó; #6479
+摺 > zhé; #647A
+摻 > xiān; #647B
+摼 > kēng; #647C
+摽 > piăo; #647D
+摾 > jiàng; #647E
+摿 > yīn; #647F
+撀 > gòu; #6480
+撁 > qiān; #6481
+撂 > lǜe; #6482
+撃 > jí; #6483
+撄 > yīng; #6484
+撅 > juē; #6485
+撆 > piē; #6486
+撇 > piĕ; #6487
+撈 > lāo; #6488
+撉 > dūn; #6489
+撊 > xiàn; #648A
+撋 > ruán; #648B
+撌 > kùi; #648C
+撍 > zăn; #648D
+撎 > yì; #648E
+撏 > xún; #648F
+撐 > chēng; #6490
+撑 > chēng; #6491
+撒 > să; #6492
+撓 > náo; #6493
+撔 > hèng; #6494
+撕 > sī; #6495
+撖 > qiăn; #6496
+撗 > huáng; #6497
+撘 > dā; #6498
+撙 > zŭn; #6499
+撚 > niăn; #649A
+撛 > lĭn; #649B
+撜 > zhĕng; #649C
+撝 > hūi; #649D
+撞 > zhuàng; #649E
+撟 > jiăo; #649F
+撠 > jĭ; #64A0
+撡 > cāo; #64A1
+撢 > dăn; #64A2
+撣 > dăn; #64A3
+撤 > chè; #64A4
+撥 > bō; #64A5
+撦 > chĕ; #64A6
+撧 > jué; #64A7
+撨 > xiāo; #64A8
+撩 > liáo; #64A9
+撪 > bèn; #64AA
+撫 > fŭ; #64AB
+撬 > qiào; #64AC
+播 > bò; #64AD
+撮 > cūo; #64AE
+撯 > zhúo; #64AF
+撰 > zhuàn; #64B0
+撱 > tŭo; #64B1
+撲 > pū; #64B2
+撳 > qìn; #64B3
+撴 > dūn; #64B4
+撵 > niăn; #64B5
+撷 > xié; #64B7
+撸 > lŭ; #64B8
+撹 > jiăo; #64B9
+撺 > cuān; #64BA
+撻 > tà; #64BB
+撼 > hàn; #64BC
+撽 > qiào; #64BD
+撾 > zhuā; #64BE
+撿 > jiăn; #64BF
+擀 > găn; #64C0
+擁 > yŏng; #64C1
+擂 > léi; #64C2
+擃 > kŭo; #64C3
+擄 > lŭ; #64C4
+擅 > shàn; #64C5
+擆 > zhúo; #64C6
+擇 > zé; #64C7
+擈 > pū; #64C8
+擉 > chùo; #64C9
+擊 > jí; #64CA
+擋 > dăng; #64CB
+擌 > sŭo; #64CC
+操 > cāo; #64CD
+擎 > qíng; #64CE
+擏 > jìng; #64CF
+擐 > huàn; #64D0
+擑 > jiē; #64D1
+擒 > qín; #64D2
+擓 > kuăi; #64D3
+擔 > dān; #64D4
+擕 > xī; #64D5
+擖 > gĕ; #64D6
+擗 > pì; #64D7
+擘 > bò; #64D8
+擙 > ào; #64D9
+據 > jù; #64DA
+擛 > yè; #64DB
+擞 > sŏu; #64DE
+擟 > mí; #64DF
+擠 > jĭ; #64E0
+擡 > tái; #64E1
+擢 > zhúo; #64E2
+擣 > dăo; #64E3
+擤 > xĭng; #64E4
+擥 > lăn; #64E5
+擦 > cā; #64E6
+擧 > jŭ; #64E7
+擨 > yé; #64E8
+擩 > rŭ; #64E9
+擪 > yè; #64EA
+擫 > yè; #64EB
+擬 > nĭ; #64EC
+擭 > hù; #64ED
+擮 > jí; #64EE
+擯 > bìn; #64EF
+擰 > níng; #64F0
+擱 > gē; #64F1
+擲 > zhí; #64F2
+擳 > jié; #64F3
+擴 > kùo; #64F4
+擵 > mó; #64F5
+擶 > jiàn; #64F6
+擷 > xié; #64F7
+擸 > liè; #64F8
+擹 > tān; #64F9
+擺 > băi; #64FA
+擻 > sŏu; #64FB
+擼 > lŭ; #64FC
+擽 > lǜe; #64FD
+擾 > răo; #64FE
+擿 > zhí; #64FF
+攀 > pān; #6500
+攁 > yăng; #6501
+攂 > lèi; #6502
+攃 > sà; #6503
+攄 > shū; #6504
+攅 > zăn; #6505
+攆 > niăn; #6506
+攇 > xiăn; #6507
+攈 > jùn; #6508
+攉 > hùo; #6509
+攊 > lì; #650A
+攋 > là; #650B
+攌 > hàn; #650C
+攍 > yíng; #650D
+攎 > lú; #650E
+攏 > lŏng; #650F
+攐 > qiān; #6510
+攑 > qiān; #6511
+攒 > zăn; #6512
+攓 > qiān; #6513
+攔 > lán; #6514
+攕 > sān; #6515
+攖 > yīng; #6516
+攗 > méi; #6517
+攘 > ráng; #6518
+攙 > chān; #6519
+攛 > cuān; #651B
+攜 > xī; #651C
+攝 > shè; #651D
+攞 > lŭo; #651E
+攟 > jùn; #651F
+攠 > mí; #6520
+攡 > lí; #6521
+攢 > zăn; #6522
+攣 > lǘan; #6523
+攤 > tān; #6524
+攥 > zuàn; #6525
+攦 > lì; #6526
+攧 > diān; #6527
+攨 > wā; #6528
+攩 > dăng; #6529
+攪 > jiăo; #652A
+攫 > jué; #652B
+攬 > lăn; #652C
+攭 > lì; #652D
+攮 > năng; #652E
+支 > zhī; #652F
+攰 > gùi; #6530
+攱 > gŭi; #6531
+攲 > qī; #6532
+攳 > xín; #6533
+攴 > pū; #6534
+攵 > sūi; #6535
+收 > shōu; #6536
+攷 > káo; #6537
+攸 > yōu; #6538
+改 > găi; #6539
+攺 > yĭ; #653A
+攻 > gōng; #653B
+攼 > gān; #653C
+攽 > bān; #653D
+放 > fàng; #653E
+政 > zhèng; #653F
+敀 > bó; #6540
+敁 > diān; #6541
+敂 > kòu; #6542
+敃 > mĭn; #6543
+敄 > wù; #6544
+故 > gù; #6545
+敆 > hé; #6546
+敇 > cè; #6547
+效 > xiào; #6548
+敉 > mĭ; #6549
+敊 > chù; #654A
+敋 > gé; #654B
+敌 > dí; #654C
+敍 > xù; #654D
+敎 > jiào; #654E
+敏 > mĭn; #654F
+敐 > chén; #6550
+救 > jìu; #6551
+敒 > zhèn; #6552
+敓 > dúo; #6553
+敔 > yŭ; #6554
+敕 > chì; #6555
+敖 > áo; #6556
+敗 > bài; #6557
+敘 > xù; #6558
+教 > jiào; #6559
+敚 > dúo; #655A
+敛 > liàn; #655B
+敜 > niè; #655C
+敝 > bì; #655D
+敞 > chăng; #655E
+敟 > diăn; #655F
+敠 > dúo; #6560
+敡 > yì; #6561
+敢 > găn; #6562
+散 > sàn; #6563
+敤 > kĕ; #6564
+敥 > yàn; #6565
+敦 > dūn; #6566
+敧 > qĭ; #6567
+敨 > dŏu; #6568
+敩 > xiào; #6569
+敪 > dúo; #656A
+敫 > jiào; #656B
+敬 > jìng; #656C
+敭 > yáng; #656D
+敮 > xiá; #656E
+敯 > mín; #656F
+数 > shù; #6570
+敱 > ái; #6571
+敲 > qiāo; #6572
+敳 > ái; #6573
+整 > zhĕng; #6574
+敵 > dí; #6575
+敶 > zhèn; #6576
+敷 > fū; #6577
+數 > shù; #6578
+敹 > liáo; #6579
+敺 > qū; #657A
+敻 > xìong; #657B
+敼 > xĭ; #657C
+敽 > jiăo; #657D
+敿 > jiăo; #657F
+斀 > zhúo; #6580
+斁 > yì; #6581
+斂 > liàn; #6582
+斃 > bì; #6583
+斄 > lì; #6584
+斅 > xiào; #6585
+斆 > xiào; #6586
+文 > wén; #6587
+斈 > xué; #6588
+斉 > qí; #6589
+斊 > qí; #658A
+斋 > zhāi; #658B
+斌 > bīn; #658C
+斍 > jué; #658D
+斎 > zhāi; #658E
+斐 > fĕi; #6590
+斑 > bān; #6591
+斒 > bān; #6592
+斓 > lán; #6593
+斔 > yŭ; #6594
+斕 > lán; #6595
+斖 > wĕi; #6596
+斗 > dŏu; #6597
+斘 > shēng; #6598
+料 > liào; #6599
+斚 > jiă; #659A
+斛 > hú; #659B
+斜 > xié; #659C
+斝 > jiă; #659D
+斞 > yŭ; #659E
+斟 > zhēn; #659F
+斠 > jiào; #65A0
+斡 > wò; #65A1
+斢 > tŏu; #65A2
+斣 > chù; #65A3
+斤 > jīn; #65A4
+斥 > chì; #65A5
+斦 > yín; #65A6
+斧 > fŭ; #65A7
+斨 > qiāng; #65A8
+斩 > zhăn; #65A9
+斪 > qú; #65AA
+斫 > zhúo; #65AB
+斬 > zhăn; #65AC
+断 > duàn; #65AD
+斮 > zhúo; #65AE
+斯 > sī; #65AF
+新 > xīn; #65B0
+斱 > zhúo; #65B1
+斲 > zhúo; #65B2
+斳 > qín; #65B3
+斴 > lín; #65B4
+斵 > zhúo; #65B5
+斶 > chù; #65B6
+斷 > duàn; #65B7
+斸 > zhŭ; #65B8
+方 > fāng; #65B9
+斺 > xiè; #65BA
+斻 > háng; #65BB
+於 > yú; #65BC
+施 > shī; #65BD
+斾 > pèi; #65BE
+斿 > yóu; #65BF
+旁 > páng; #65C1
+旂 > qí; #65C2
+旃 > zhān; #65C3
+旄 > máo; #65C4
+旅 > lǚ; #65C5
+旆 > pèi; #65C6
+旇 > pī; #65C7
+旈 > líu; #65C8
+旉 > fū; #65C9
+旊 > făng; #65CA
+旋 > xuán; #65CB
+旌 > jīng; #65CC
+旍 > jīng; #65CD
+旎 > nĭ; #65CE
+族 > zú; #65CF
+旐 > zhào; #65D0
+旑 > yĭ; #65D1
+旒 > líu; #65D2
+旓 > shāo; #65D3
+旔 > jiàn; #65D4
+旖 > yĭ; #65D6
+旗 > qí; #65D7
+旘 > zhì; #65D8
+旙 > fān; #65D9
+旚 > piāo; #65DA
+旛 > fān; #65DB
+旜 > zhān; #65DC
+旝 > guài; #65DD
+旞 > sùi; #65DE
+旟 > yú; #65DF
+无 > wú; #65E0
+旡 > jì; #65E1
+既 > jì; #65E2
+旣 > jì; #65E3
+旤 > hùo; #65E4
+日 > rì; #65E5
+旦 > dàn; #65E6
+旧 > jìu; #65E7
+旨 > zhĭ; #65E8
+早 > zăo; #65E9
+旪 > xié; #65EA
+旫 > tiāo; #65EB
+旬 > xún; #65EC
+旭 > xù; #65ED
+旮 > xù; #65EE
+旯 > xù; #65EF
+旰 > gàn; #65F0
+旱 > hàn; #65F1
+旲 > tái; #65F2
+旳 > dì; #65F3
+旴 > xū; #65F4
+旵 > chăn; #65F5
+时 > shí; #65F6
+旷 > kuàng; #65F7
+旸 > yáng; #65F8
+旹 > shí; #65F9
+旺 > wàng; #65FA
+旻 > mín; #65FB
+旼 > mín; #65FC
+旽 > tūn; #65FD
+旾 > chūn; #65FE
+旿 > wŭ; #65FF
+昀 > yún; #6600
+昁 > bèi; #6601
+昂 > áng; #6602
+昃 > zè; #6603
+昄 > băn; #6604
+昅 > jié; #6605
+昆 > kūn; #6606
+昇 > shēng; #6607
+昈 > hù; #6608
+昉 > făng; #6609
+昊 > hào; #660A
+昋 > gùi; #660B
+昌 > chāng; #660C
+昍 > xuān; #660D
+明 > míng; #660E
+昏 > hūn; #660F
+昐 > fēn; #6610
+昑 > qĭn; #6611
+昒 > hū; #6612
+易 > yì; #6613
+昔 > xí; #6614
+昕 > xīn; #6615
+昖 > yán; #6616
+昗 > zè; #6617
+昘 > făng; #6618
+昙 > tán; #6619
+昚 > shèn; #661A
+昛 > jù; #661B
+昜 > yáng; #661C
+昝 > zăn; #661D
+昞 > bĭng; #661E
+星 > xīng; #661F
+映 > yìng; #6620
+昡 > xuàn; #6621
+昢 > pĕi; #6622
+昣 > zhĕn; #6623
+昤 > līng; #6624
+春 > chūn; #6625
+昦 > hào; #6626
+昧 > mèi; #6627
+昨 > zúo; #6628
+昩 > mò; #6629
+昪 > biàn; #662A
+昫 > xŭ; #662B
+昬 > hūn; #662C
+昭 > zhāo; #662D
+昮 > zòng; #662E
+是 > shì; #662F
+昰 > shì; #6630
+昱 > yù; #6631
+昲 > fèi; #6632
+昳 > dié; #6633
+昴 > măo; #6634
+昵 > nì; #6635
+昶 > chăng; #6636
+昷 > wēn; #6637
+昸 > dōng; #6638
+昹 > ăi; #6639
+昺 > bĭng; #663A
+昻 > áng; #663B
+昼 > zhòu; #663C
+昽 > lóng; #663D
+显 > xiăn; #663E
+昿 > kuàng; #663F
+晀 > tiăo; #6640
+晁 > cháo; #6641
+時 > shí; #6642
+晃 > huăng; #6643
+晄 > huăng; #6644
+晅 > xuān; #6645
+晆 > kúi; #6646
+晇 > xū; #6647
+晈 > jiăo; #6648
+晉 > jìn; #6649
+晊 > zhĭ; #664A
+晋 > jìn; #664B
+晌 > shăng; #664C
+晍 > tóng; #664D
+晎 > hŏng; #664E
+晏 > yàn; #664F
+晐 > gāi; #6650
+晑 > xiăng; #6651
+晒 > shài; #6652
+晓 > xiăo; #6653
+晔 > yē; #6654
+晕 > yūn; #6655
+晖 > hūi; #6656
+晗 > hán; #6657
+晘 > hàn; #6658
+晙 > jùn; #6659
+晚 > wăn; #665A
+晛 > xiàn; #665B
+晜 > kūn; #665C
+晝 > zhòu; #665D
+晞 > xī; #665E
+晟 > chéng; #665F
+晠 > shéng; #6660
+晡 > bū; #6661
+晢 > zhē; #6662
+晣 > zhē; #6663
+晤 > wù; #6664
+晥 > hàn; #6665
+晦 > hùi; #6666
+晧 > hào; #6667
+晨 > chén; #6668
+晩 > wăn; #6669
+晪 > tiăn; #666A
+晫 > zhúo; #666B
+晬 > zùi; #666C
+晭 > zhŏu; #666D
+普 > pŭ; #666E
+景 > jĭng; #666F
+晰 > xī; #6670
+晱 > shăn; #6671
+晲 > yĭ; #6672
+晳 > xì; #6673
+晴 > qíng; #6674
+晵 > qĭ; #6675
+晶 > jīng; #6676
+晷 > gŭi; #6677
+晸 > zhĕn; #6678
+晹 > yì; #6679
+智 > zhì; #667A
+晻 > ăn; #667B
+晼 > wăn; #667C
+晽 > lín; #667D
+晾 > liàng; #667E
+晿 > chāng; #667F
+暀 > wăng; #6680
+暁 > xiăo; #6681
+暂 > zàn; #6682
+暄 > xuān; #6684
+暅 > xuăn; #6685
+暆 > yí; #6686
+暇 > xiá; #6687
+暈 > yūn; #6688
+暉 > hūi; #6689
+暊 > fŭ; #668A
+暋 > mĭn; #668B
+暌 > kúi; #668C
+暍 > hè; #668D
+暎 > yìng; #668E
+暏 > dŭ; #668F
+暐 > wĕi; #6690
+暑 > shŭ; #6691
+暒 > qíng; #6692
+暓 > mào; #6693
+暔 > nán; #6694
+暕 > jiăn; #6695
+暖 > nuăn; #6696
+暗 > àn; #6697
+暘 > yáng; #6698
+暙 > chūn; #6699
+暚 > yáo; #669A
+暛 > sŭo; #669B
+暜 > jìn; #669C
+暝 > míng; #669D
+暞 > jiăo; #669E
+暟 > kăi; #669F
+暠 > găo; #66A0
+暡 > wĕng; #66A1
+暢 > chàng; #66A2
+暣 > qì; #66A3
+暤 > hào; #66A4
+暥 > yàn; #66A5
+暦 > lì; #66A6
+暧 > ài; #66A7
+暨 > jì; #66A8
+暩 > gùi; #66A9
+暪 > mĕn; #66AA
+暫 > zàn; #66AB
+暬 > xiè; #66AC
+暭 > hào; #66AD
+暮 > mù; #66AE
+暯 > mò; #66AF
+暰 > cōng; #66B0
+暱 > nì; #66B1
+暲 > zhāng; #66B2
+暳 > hùi; #66B3
+暴 > bào; #66B4
+暵 > hàn; #66B5
+暶 > xuán; #66B6
+暷 > chuán; #66B7
+暸 > liáo; #66B8
+暹 > xiān; #66B9
+暺 > dàn; #66BA
+暻 > jĭng; #66BB
+暼 > piē; #66BC
+暽 > lín; #66BD
+暾 > tūn; #66BE
+暿 > xĭ; #66BF
+曀 > yì; #66C0
+曁 > jì; #66C1
+曂 > huàng; #66C2
+曃 > tài; #66C3
+曄 > yè; #66C4
+曅 > yè; #66C5
+曆 > lì; #66C6
+曇 > tán; #66C7
+曈 > tóng; #66C8
+曉 > xiăo; #66C9
+曊 > fèi; #66CA
+曋 > qĭn; #66CB
+曌 > zhào; #66CC
+曍 > hào; #66CD
+曎 > yì; #66CE
+曏 > xiàng; #66CF
+曐 > xīng; #66D0
+曑 > sēn; #66D1
+曒 > jiăo; #66D2
+曓 > bào; #66D3
+曔 > jìng; #66D4
+曕 > yiàn; #66D5
+曖 > ài; #66D6
+曗 > yè; #66D7
+曘 > rú; #66D8
+曙 > shù; #66D9
+曚 > méng; #66DA
+曛 > xūn; #66DB
+曜 > yào; #66DC
+曝 > pù; #66DD
+曞 > lì; #66DE
+曟 > chén; #66DF
+曠 > kuàng; #66E0
+曡 > dié; #66E1
+曣 > yàn; #66E3
+曤 > hùo; #66E4
+曥 > lú; #66E5
+曦 > xī; #66E6
+曧 > róng; #66E7
+曨 > lóng; #66E8
+曩 > năng; #66E9
+曪 > lŭo; #66EA
+曫 > luán; #66EB
+曬 > shài; #66EC
+曭 > tăng; #66ED
+曮 > yăn; #66EE
+曯 > chú; #66EF
+曰 > yuē; #66F0
+曱 > yuē; #66F1
+曲 > qŭ; #66F2
+曳 > yì; #66F3
+更 > gèng; #66F4
+曵 > yè; #66F5
+曶 > hū; #66F6
+曷 > hé; #66F7
+書 > shū; #66F8
+曹 > cáo; #66F9
+曺 > cáo; #66FA
+曼 > màn; #66FC
+曽 > cēng; #66FD
+曾 > céng; #66FE
+替 > tì; #66FF
+最 > zùi; #6700
+朁 > căn; #6701
+朂 > xù; #6702
+會 > hùi; #6703
+朄 > yìn; #6704
+朅 > qiè; #6705
+朆 > fēn; #6706
+朇 > pí; #6707
+月 > yuè; #6708
+有 > yŏu; #6709
+朊 > ruăn; #670A
+朋 > péng; #670B
+朌 > bān; #670C
+服 > fú; #670D
+朎 > líng; #670E
+朏 > fĕi; #670F
+朐 > qú; #6710
+朒 > nǜ; #6712
+朓 > tiào; #6713
+朔 > shùo; #6714
+朕 > zhèn; #6715
+朖 > lăng; #6716
+朗 > lăng; #6717
+朘 > juān; #6718
+朙 > míng; #6719
+朚 > huāng; #671A
+望 > wàng; #671B
+朜 > tūn; #671C
+朝 > zhāo; #671D
+朞 > jī; #671E
+期 > qí; #671F
+朠 > yīng; #6720
+朡 > zōng; #6721
+朢 > wàng; #6722
+朣 > tóng; #6723
+朤 > lăng; #6724
+朦 > méng; #6726
+朧 > lóng; #6727
+木 > mù; #6728
+朩 > dĕng; #6729
+未 > wèi; #672A
+末 > mò; #672B
+本 > bĕn; #672C
+札 > zhá; #672D
+朮 > zhú; #672E
+术 > zhú; #672F
+朱 > zhū; #6731
+朲 > rén; #6732
+朳 > bā; #6733
+朴 > pò; #6734
+朵 > dŭo; #6735
+朶 > dŭo; #6736
+朷 > dāo; #6737
+朸 > lì; #6738
+朹 > qíu; #6739
+机 > jī; #673A
+朻 > jīu; #673B
+朼 > bĭ; #673C
+朽 > xĭu; #673D
+朾 > tíng; #673E
+朿 > cì; #673F
+杀 > shā; #6740
+杂 > zá; #6742
+权 > quán; #6743
+杄 > qiān; #6744
+杅 > yú; #6745
+杆 > gān; #6746
+杇 > wū; #6747
+杈 > chā; #6748
+杉 > shān; #6749
+杊 > xún; #674A
+杋 > fān; #674B
+杌 > wù; #674C
+杍 > zĭ; #674D
+李 > lĭ; #674E
+杏 > xìng; #674F
+材 > cái; #6750
+村 > cūn; #6751
+杒 > rèn; #6752
+杓 > sháo; #6753
+杔 > tūo; #6754
+杕 > dì; #6755
+杖 > zhàng; #6756
+杗 > máng; #6757
+杘 > chì; #6758
+杙 > yì; #6759
+杚 > gŭ; #675A
+杛 > gōng; #675B
+杜 > dù; #675C
+杝 > yí; #675D
+杞 > qĭ; #675E
+束 > shù; #675F
+杠 > gāng; #6760
+条 > tiáo; #6761
+来 > lái; #6765
+杧 > máng; #6767
+杨 > yáng; #6768
+杩 > mà; #6769
+杪 > miăo; #676A
+杫 > sì; #676B
+杬 > yuán; #676C
+杭 > háng; #676D
+杮 > fèi; #676E
+杯 > bēi; #676F
+杰 > jié; #6770
+東 > dōng; #6771
+杲 > găo; #6772
+杳 > yăo; #6773
+杴 > xiān; #6774
+杵 > chŭ; #6775
+杶 > qūn; #6776
+杷 > pá; #6777
+杸 > shū; #6778
+杹 > huà; #6779
+杺 > xīn; #677A
+杻 > chŏu; #677B
+杼 > zhù; #677C
+杽 > chŏu; #677D
+松 > sōng; #677E
+板 > băn; #677F
+枀 > sōng; #6780
+极 > jí; #6781
+枂 > yuè; #6782
+枃 > jìn; #6783
+构 > gōu; #6784
+枅 > jī; #6785
+枆 > máo; #6786
+枇 > pí; #6787
+枈 > bì; #6788
+枉 > wăng; #6789
+枊 > àng; #678A
+枋 > fāng; #678B
+枌 > fén; #678C
+枍 > yì; #678D
+枎 > fú; #678E
+枏 > nán; #678F
+析 > xī; #6790
+枑 > hù; #6791
+枒 > yá; #6792
+枓 > dŏu; #6793
+枔 > xún; #6794
+枕 > zhĕn; #6795
+枖 > yāo; #6796
+林 > lín; #6797
+枘 > rùi; #6798
+枙 > é; #6799
+枚 > méi; #679A
+枛 > zhào; #679B
+果 > gŭo; #679C
+枝 > zhī; #679D
+枞 > cōng; #679E
+枟 > yùn; #679F
+枡 > dŏu; #67A1
+枢 > shū; #67A2
+枣 > zăo; #67A3
+枥 > lì; #67A5
+枧 > jiàn; #67A7
+枨 > chéng; #67A8
+枪 > qiāng; #67AA
+枫 > fēng; #67AB
+枬 > nán; #67AC
+枭 > xiāo; #67AD
+枮 > xiān; #67AE
+枯 > kū; #67AF
+枰 > píng; #67B0
+枱 > yí; #67B1
+枲 > xĭ; #67B2
+枳 > zhī; #67B3
+枴 > guăi; #67B4
+枵 > xiāo; #67B5
+架 > jià; #67B6
+枷 > jiā; #67B7
+枸 > gŏu; #67B8
+枹 > fū; #67B9
+枺 > mò; #67BA
+枻 > yì; #67BB
+枼 > yè; #67BC
+枽 > yè; #67BD
+枾 > shì; #67BE
+枿 > niè; #67BF
+柀 > bĭ; #67C0
+柁 > dùo; #67C1
+柂 > yí; #67C2
+柃 > líng; #67C3
+柄 > bĭng; #67C4
+柅 > nĭ; #67C5
+柆 > lā; #67C6
+柇 > hé; #67C7
+柈 > pán; #67C8
+柉 > fán; #67C9
+柊 > zhōng; #67CA
+柋 > dài; #67CB
+柌 > cí; #67CC
+柍 > yāng; #67CD
+柎 > fū; #67CE
+柏 > bó; #67CF
+某 > mŏu; #67D0
+柑 > gān; #67D1
+柒 > qī; #67D2
+染 > răn; #67D3
+柔 > róu; #67D4
+柕 > mào; #67D5
+柖 > zhāo; #67D6
+柗 > sōng; #67D7
+柘 > zhè; #67D8
+柙 > xiá; #67D9
+柚 > yòu; #67DA
+柛 > shēn; #67DB
+柜 > jŭ; #67DC
+柝 > tùo; #67DD
+柞 > zùo; #67DE
+柟 > nán; #67DF
+柠 > níng; #67E0
+柡 > yŏng; #67E1
+柢 > dĭ; #67E2
+柣 > zhí; #67E3
+柤 > zhā; #67E4
+查 > chá; #67E5
+柦 > dàn; #67E6
+柧 > gū; #67E7
+柨 > pu; #67E8
+柩 > jìu; #67E9
+柪 > āo; #67EA
+柫 > fú; #67EB
+柬 > jiăn; #67EC
+柭 > bō; #67ED
+柮 > dùo; #67EE
+柯 > kē; #67EF
+柰 > nài; #67F0
+柱 > zhù; #67F1
+柲 > bì; #67F2
+柳 > lĭu; #67F3
+柴 > chái; #67F4
+柵 > zhà; #67F5
+柶 > sì; #67F6
+柷 > zhù; #67F7
+柸 > pēi; #67F8
+柹 > shì; #67F9
+柺 > guăi; #67FA
+査 > chá; #67FB
+柼 > yăo; #67FC
+柽 > jué; #67FD
+柾 > jìu; #67FE
+柿 > shì; #67FF
+栀 > zhī; #6800
+栁 > lĭu; #6801
+栂 > méi; #6802
+栄 > róng; #6804
+栅 > zhà; #6805
+标 > biāo; #6807
+栈 > zhàn; #6808
+栉 > jié; #6809
+栊 > lóng; #680A
+栋 > dòng; #680B
+栌 > lú; #680C
+栎 > lì; #680E
+栏 > lán; #680F
+栐 > yŏng; #6810
+树 > shù; #6811
+栒 > xún; #6812
+栓 > shuān; #6813
+栔 > qì; #6814
+栕 > zhēn; #6815
+栖 > qī; #6816
+栗 > lì; #6817
+栘 > yĭ; #6818
+栙 > xiáng; #6819
+栚 > zhèn; #681A
+栛 > lì; #681B
+栜 > sù; #681C
+栝 > guā; #681D
+栞 > kān; #681E
+栟 > bīng; #681F
+栠 > rĕn; #6820
+校 > xiào; #6821
+栢 > bó; #6822
+栣 > rĕn; #6823
+栤 > bìng; #6824
+栥 > zī; #6825
+栦 > chóu; #6826
+栧 > yì; #6827
+栨 > jié; #6828
+栩 > xŭ; #6829
+株 > zhū; #682A
+栫 > jiàn; #682B
+栬 > zùi; #682C
+栭 > ér; #682D
+栮 > ĕr; #682E
+栯 > yŏu; #682F
+栰 > fá; #6830
+栱 > gŏng; #6831
+栲 > kăo; #6832
+栳 > lăo; #6833
+栴 > zhān; #6834
+栵 > lì; #6835
+栶 > yin; #6836
+样 > yáng; #6837
+核 > hé; #6838
+根 > gēn; #6839
+栺 > zhĭ; #683A
+栻 > chì; #683B
+格 > gé; #683C
+栽 > zāi; #683D
+栾 > luán; #683E
+栿 > fú; #683F
+桀 > jié; #6840
+桁 > háng; #6841
+桂 > gùi; #6842
+桃 > táo; #6843
+桄 > guàng; #6844
+桅 > wéi; #6845
+框 > kuàng; #6846
+桇 > rú; #6847
+案 > àn; #6848
+桉 > àn; #6849
+桊 > juàn; #684A
+桋 > yí; #684B
+桌 > zhūo; #684C
+桍 > kū; #684D
+桎 > zhí; #684E
+桏 > qíong; #684F
+桐 > tóng; #6850
+桑 > sāng; #6851
+桒 > sāng; #6852
+桓 > huán; #6853
+桔 > jié; #6854
+桕 > jìu; #6855
+桖 > xuè; #6856
+桗 > dùo; #6857
+桘 > zhùi; #6858
+桙 > yú; #6859
+桚 > zăn; #685A
+桜 > yīng; #685C
+桟 > zhàn; #685F
+桠 > yá; #6860
+桡 > náo; #6861
+桢 > zhēn; #6862
+档 > dăng; #6863
+桤 > qī; #6864
+桥 > qiáo; #6865
+桦 > huà; #6866
+桧 > kuài; #6867
+桨 > jiăng; #6868
+桩 > zhuāng; #6869
+桪 > xún; #686A
+桫 > sūo; #686B
+桬 > shā; #686C
+桭 > zhēn; #686D
+桮 > bēi; #686E
+桯 > tīng; #686F
+桰 > guā; #6870
+桱 > jìng; #6871
+桲 > bó; #6872
+桳 > bèn; #6873
+桴 > fú; #6874
+桵 > rŭi; #6875
+桶 > tŏng; #6876
+桷 > jué; #6877
+桸 > xī; #6878
+桹 > láng; #6879
+桺 > lĭu; #687A
+桻 > fēng; #687B
+桼 > qī; #687C
+桽 > wĕn; #687D
+桾 > jūn; #687E
+桿 > găn; #687F
+梀 > cù; #6880
+梁 > liáng; #6881
+梂 > qíu; #6882
+梃 > tĭng; #6883
+梄 > yŏu; #6884
+梅 > méi; #6885
+梆 > bāng; #6886
+梇 > lòng; #6887
+梈 > pēng; #6888
+梉 > zhuāng; #6889
+梊 > dì; #688A
+梋 > xuān; #688B
+梌 > tú; #688C
+梍 > zào; #688D
+梎 > āo; #688E
+梏 > gù; #688F
+梐 > bì; #6890
+梑 > dí; #6891
+梒 > hán; #6892
+梓 > zĭ; #6893
+梔 > zhī; #6894
+梕 > rèn; #6895
+梖 > bèi; #6896
+梗 > gĕng; #6897
+梘 > jiàn; #6898
+梙 > huàn; #6899
+梚 > wăn; #689A
+梛 > núo; #689B
+梜 > jiá; #689C
+條 > tiáo; #689D
+梞 > jì; #689E
+梟 > xiāo; #689F
+梠 > lǚ; #68A0
+梡 > huán; #68A1
+梢 > shāo; #68A2
+梣 > cén; #68A3
+梤 > fén; #68A4
+梥 > sōng; #68A5
+梦 > mèng; #68A6
+梧 > wú; #68A7
+梨 > lí; #68A8
+梩 > lí; #68A9
+梪 > dòu; #68AA
+梫 > cēn; #68AB
+梬 > yĭng; #68AC
+梭 > sūo; #68AD
+梮 > jú; #68AE
+梯 > tī; #68AF
+械 > jiè; #68B0
+梱 > kŭn; #68B1
+梲 > zhúo; #68B2
+梳 > shū; #68B3
+梴 > chān; #68B4
+梵 > fàn; #68B5
+梶 > wĕi; #68B6
+梷 > jìng; #68B7
+梸 > lí; #68B8
+梹 > bīng; #68B9
+梼 > táo; #68BC
+梽 > zhì; #68BD
+梾 > lái; #68BE
+梿 > lián; #68BF
+检 > jiăn; #68C0
+棁 > zhúo; #68C1
+棂 > líng; #68C2
+棃 > lí; #68C3
+棄 > qì; #68C4
+棅 > bìng; #68C5
+棆 > zhūn; #68C6
+棇 > cōng; #68C7
+棈 > qiàn; #68C8
+棉 > mián; #68C9
+棊 > qí; #68CA
+棋 > qí; #68CB
+棌 > căi; #68CC
+棍 > gùn; #68CD
+棎 > chán; #68CE
+棏 > tè; #68CF
+棐 > fĕi; #68D0
+棑 > pái; #68D1
+棒 > bàng; #68D2
+棓 > pŏu; #68D3
+棔 > hūn; #68D4
+棕 > zōng; #68D5
+棖 > chéng; #68D6
+棗 > zăo; #68D7
+棘 > jí; #68D8
+棙 > lì; #68D9
+棚 > péng; #68DA
+棛 > yù; #68DB
+棜 > yù; #68DC
+棝 > gù; #68DD
+棞 > hún; #68DE
+棟 > dòng; #68DF
+棠 > táng; #68E0
+棡 > gāng; #68E1
+棢 > wăng; #68E2
+棣 > dì; #68E3
+棤 > xí; #68E4
+棥 > fán; #68E5
+棦 > chēng; #68E6
+棧 > zhàn; #68E7
+棨 > qĭ; #68E8
+棩 > yuān; #68E9
+棪 > yăn; #68EA
+棫 > yù; #68EB
+棬 > quān; #68EC
+棭 > yì; #68ED
+森 > sēn; #68EE
+棯 > rĕn; #68EF
+棰 > chúi; #68F0
+棱 > léng; #68F1
+棲 > qī; #68F2
+棳 > zhúo; #68F3
+棴 > fú; #68F4
+棵 > kē; #68F5
+棶 > lái; #68F6
+棷 > zōu; #68F7
+棸 > zōu; #68F8
+棹 > zhūo; #68F9
+棺 > guān; #68FA
+棻 > fén; #68FB
+棼 > fén; #68FC
+棽 > chēn; #68FD
+棾 > qíong; #68FE
+棿 > niè; #68FF
+椀 > wăn; #6900
+椁 > gŭo; #6901
+椂 > lù; #6902
+椃 > háo; #6903
+椄 > jiē; #6904
+椅 > yĭ; #6905
+椆 > chóu; #6906
+椇 > jŭ; #6907
+椈 > jú; #6908
+椉 > chéng; #6909
+椊 > zúo; #690A
+椋 > liáng; #690B
+椌 > qiāng; #690C
+植 > zhí; #690D
+椎 > zhūi; #690E
+椏 > yā; #690F
+椐 > jū; #6910
+椑 > bēi; #6911
+椒 > jiāo; #6912
+椓 > zhúo; #6913
+椔 > zī; #6914
+椕 > bīn; #6915
+椖 > péng; #6916
+椗 > dìng; #6917
+椘 > chŭ; #6918
+検 > jiăn; #691C
+椝 > gūi; #691D
+椞 > xì; #691E
+椟 > dú; #691F
+椠 > qiàn; #6920
+椤 > lúo; #6924
+椥 > zhī; #6925
+椪 > pèng; #692A
+椫 > zhăn; #692B
+椭 > tŭo; #692D
+椮 > sēn; #692E
+椯 > dúo; #692F
+椰 > yé; #6930
+椱 > fòu; #6931
+椲 > wĕi; #6932
+椳 > wēi; #6933
+椴 > duàn; #6934
+椵 > jiă; #6935
+椶 > zōng; #6936
+椷 > jiān; #6937
+椸 > yí; #6938
+椹 > shèn; #6939
+椺 > xí; #693A
+椻 > yàn; #693B
+椼 > yăn; #693C
+椽 > chuán; #693D
+椾 > zhàn; #693E
+椿 > chūn; #693F
+楀 > yŭ; #6940
+楁 > hé; #6941
+楂 > zhā; #6942
+楃 > wò; #6943
+楄 > pián; #6944
+楅 > bì; #6945
+楆 > yāo; #6946
+楇 > hùo; #6947
+楈 > xū; #6948
+楉 > rùo; #6949
+楊 > yáng; #694A
+楋 > là; #694B
+楌 > yán; #694C
+楍 > bĕn; #694D
+楎 > hún; #694E
+楏 > kúi; #694F
+楐 > jiè; #6950
+楑 > kúi; #6951
+楒 > sī; #6952
+楓 > fēng; #6953
+楔 > xiè; #6954
+楕 > tŭo; #6955
+楖 > zhì; #6956
+楗 > jiàn; #6957
+楘 > mù; #6958
+楙 > mào; #6959
+楚 > chŭ; #695A
+楛 > hù; #695B
+楜 > hú; #695C
+楝 > liàn; #695D
+楞 > léng; #695E
+楟 > tíng; #695F
+楠 > nán; #6960
+楡 > yú; #6961
+楢 > yóu; #6962
+楣 > méi; #6963
+楤 > sŏng; #6964
+楥 > xuàn; #6965
+楦 > xuàn; #6966
+楧 > yīng; #6967
+楨 > zhēn; #6968
+楩 > pián; #6969
+楪 > yè; #696A
+楫 > jí; #696B
+楬 > jié; #696C
+業 > yè; #696D
+楮 > chŭ; #696E
+楯 > shŭn; #696F
+楰 > yú; #6970
+楱 > còu; #6971
+楲 > wēi; #6972
+楳 > méi; #6973
+楴 > dì; #6974
+極 > jí; #6975
+楶 > jié; #6976
+楷 > kăi; #6977
+楸 > qīu; #6978
+楹 > yíng; #6979
+楺 > róu; #697A
+楻 > héng; #697B
+楼 > lóu; #697C
+楽 > lè; #697D
+榀 > pĭn; #6980
+概 > gài; #6982
+榃 > tán; #6983
+榄 > lăn; #6984
+榅 > yún; #6985
+榆 > yú; #6986
+榇 > chèn; #6987
+榈 > lǘ; #6988
+榉 > jŭ; #6989
+榍 > xiè; #698D
+榎 > jiă; #698E
+榏 > yì; #698F
+榐 > zhăn; #6990
+榑 > fù; #6991
+榒 > nài; #6992
+榓 > mì; #6993
+榔 > láng; #6994
+榕 > róng; #6995
+榖 > gŭ; #6996
+榗 > jiàn; #6997
+榘 > jŭ; #6998
+榙 > tă; #6999
+榚 > yăo; #699A
+榛 > zhēn; #699B
+榜 > băng; #699C
+榝 > shā; #699D
+榞 > yuán; #699E
+榟 > zĭ; #699F
+榠 > mīng; #69A0
+榡 > sù; #69A1
+榢 > jià; #69A2
+榣 > yáo; #69A3
+榤 > jié; #69A4
+榥 > huăng; #69A5
+榦 > gàn; #69A6
+榧 > fĕi; #69A7
+榨 > zhà; #69A8
+榩 > qián; #69A9
+榪 > mà; #69AA
+榫 > sŭn; #69AB
+榬 > yuán; #69AC
+榭 > xiè; #69AD
+榮 > róng; #69AE
+榯 > shí; #69AF
+榰 > zhī; #69B0
+榱 > cūi; #69B1
+榲 > yún; #69B2
+榳 > tíng; #69B3
+榴 > líu; #69B4
+榵 > róng; #69B5
+榶 > táng; #69B6
+榷 > què; #69B7
+榸 > zhāi; #69B8
+榹 > sī; #69B9
+榺 > shèng; #69BA
+榻 > tà; #69BB
+榼 > kè; #69BC
+榽 > xī; #69BD
+榾 > gù; #69BE
+榿 > qī; #69BF
+槀 > kăo; #69C0
+槁 > găo; #69C1
+槂 > sūn; #69C2
+槃 > pán; #69C3
+槄 > tāo; #69C4
+槅 > gé; #69C5
+槆 > xún; #69C6
+槇 > diān; #69C7
+槈 > nòu; #69C8
+槉 > jí; #69C9
+槊 > shùo; #69CA
+構 > gòu; #69CB
+槌 > chúi; #69CC
+槍 > qiāng; #69CD
+槎 > chā; #69CE
+槏 > qiăn; #69CF
+槐 > huái; #69D0
+槑 > méi; #69D1
+槒 > xù; #69D2
+槓 > gàng; #69D3
+槔 > gāo; #69D4
+槕 > zhúo; #69D5
+槖 > tùo; #69D6
+様 > yàng; #69D8
+槙 > diān; #69D9
+槚 > jiă; #69DA
+槛 > jiàn; #69DB
+槜 > zùi; #69DC
+槟 > bīn; #69DF
+槠 > zhū; #69E0
+槢 > xí; #69E2
+槣 > qĭ; #69E3
+槤 > lián; #69E4
+槥 > hùi; #69E5
+槦 > yóng; #69E6
+槧 > qiàn; #69E7
+槨 > gŭo; #69E8
+槩 > gài; #69E9
+槪 > gài; #69EA
+槫 > tuán; #69EB
+槬 > huà; #69EC
+槭 > cù; #69ED
+槮 > sēn; #69EE
+槯 > cūi; #69EF
+槰 > bèng; #69F0
+槱 > yŏu; #69F1
+槲 > hú; #69F2
+槳 > jiăng; #69F3
+槴 > hù; #69F4
+槵 > huàn; #69F5
+槶 > kùi; #69F6
+槷 > yì; #69F7
+槸 > niè; #69F8
+槹 > gāo; #69F9
+槺 > kāng; #69FA
+槻 > gūi; #69FB
+槼 > gūi; #69FC
+槽 > cáo; #69FD
+槾 > mán; #69FE
+槿 > jĭn; #69FF
+樀 > dì; #6A00
+樁 > zhuāng; #6A01
+樂 > lè; #6A02
+樃 > láng; #6A03
+樄 > chén; #6A04
+樅 > cōng; #6A05
+樆 > lí; #6A06
+樇 > xīu; #6A07
+樈 > qíng; #6A08
+樉 > shuăng; #6A09
+樊 > fán; #6A0A
+樋 > tōng; #6A0B
+樌 > guàn; #6A0C
+樍 > jī; #6A0D
+樎 > sūo; #6A0E
+樏 > lĕi; #6A0F
+樐 > lŭ; #6A10
+樑 > liáng; #6A11
+樒 > mì; #6A12
+樓 > lóu; #6A13
+樔 > cháo; #6A14
+樕 > sù; #6A15
+樖 > kē; #6A16
+樗 > shū; #6A17
+樘 > táng; #6A18
+標 > biāo; #6A19
+樚 > lù; #6A1A
+樛 > jīu; #6A1B
+樜 > shù; #6A1C
+樝 > zhā; #6A1D
+樞 > shū; #6A1E
+樟 > zhāng; #6A1F
+樠 > mén; #6A20
+模 > mó; #6A21
+樢 > niăo; #6A22
+樣 > yàng; #6A23
+樤 > tiáo; #6A24
+樥 > péng; #6A25
+樦 > zhù; #6A26
+樧 > shā; #6A27
+樨 > xī; #6A28
+権 > quán; #6A29
+横 > héng; #6A2A
+樫 > jiān; #6A2B
+樬 > cōng; #6A2C
+樯 > qiáng; #6A2F
+樱 > yīng; #6A31
+樲 > èr; #6A32
+樳 > xín; #6A33
+樴 > zhí; #6A34
+樵 > qiáo; #6A35
+樶 > zūi; #6A36
+樷 > cōng; #6A37
+樸 > pú; #6A38
+樹 > shù; #6A39
+樺 > huà; #6A3A
+樻 > kùi; #6A3B
+樼 > zhēn; #6A3C
+樽 > zūn; #6A3D
+樾 > yuè; #6A3E
+樿 > zhăn; #6A3F
+橀 > xī; #6A40
+橁 > xún; #6A41
+橂 > diàn; #6A42
+橃 > fā; #6A43
+橄 > găn; #6A44
+橅 > mó; #6A45
+橆 > wŭ; #6A46
+橇 > qiāo; #6A47
+橈 > náo; #6A48
+橉 > lìn; #6A49
+橊 > líu; #6A4A
+橋 > qiáo; #6A4B
+橌 > xiàn; #6A4C
+橍 > rùn; #6A4D
+橎 > fán; #6A4E
+橏 > zhăn; #6A4F
+橐 > tùo; #6A50
+橑 > lăo; #6A51
+橒 > yún; #6A52
+橓 > shùn; #6A53
+橔 > túi; #6A54
+橕 > chēng; #6A55
+橖 > táng; #6A56
+橗 > méng; #6A57
+橘 > jú; #6A58
+橙 > chéng; #6A59
+橚 > sù; #6A5A
+橛 > jué; #6A5B
+橜 > jué; #6A5C
+橝 > tān; #6A5D
+橞 > hùi; #6A5E
+機 > jī; #6A5F
+橠 > nŭo; #6A60
+橡 > xiàng; #6A61
+橢 > tŭo; #6A62
+橣 > nĭng; #6A63
+橤 > rŭi; #6A64
+橥 > zhū; #6A65
+橦 > chuáng; #6A66
+橧 > zēng; #6A67
+橨 > fén; #6A68
+橩 > qíong; #6A69
+橪 > răn; #6A6A
+橫 > héng; #6A6B
+橬 > cén; #6A6C
+橭 > gū; #6A6D
+橮 > lĭu; #6A6E
+橯 > lào; #6A6F
+橰 > gāo; #6A70
+橱 > chú; #6A71
+橶 > jí; #6A76
+橷 > dōu; #6A77
+橹 > lŭ; #6A79
+橼 > yuán; #6A7C
+橽 > tà; #6A7D
+橾 > shū; #6A7E
+橿 > jiāng; #6A7F
+檀 > tán; #6A80
+檁 > lĭn; #6A81
+檂 > nóng; #6A82
+檃 > yĭn; #6A83
+檄 > xí; #6A84
+檅 > sùi; #6A85
+檆 > shān; #6A86
+檇 > zùi; #6A87
+檈 > xuán; #6A88
+檉 > chēng; #6A89
+檊 > gàn; #6A8A
+檋 > jū; #6A8B
+檌 > zùi; #6A8C
+檍 > yì; #6A8D
+檎 > qín; #6A8E
+檏 > pŭ; #6A8F
+檐 > yán; #6A90
+檑 > léi; #6A91
+檒 > fēng; #6A92
+檓 > hŭi; #6A93
+檔 > dăng; #6A94
+檕 > jì; #6A95
+檖 > sùi; #6A96
+檗 > bò; #6A97
+檘 > bì; #6A98
+檙 > dĭng; #6A99
+檚 > chŭ; #6A9A
+檛 > zhuā; #6A9B
+檜 > kuài; #6A9C
+檝 > jí; #6A9D
+檞 > jiĕ; #6A9E
+檟 > jiă; #6A9F
+檠 > qíng; #6AA0
+檡 > zhè; #6AA1
+檢 > jiăn; #6AA2
+檣 > qiáng; #6AA3
+檤 > dào; #6AA4
+檥 > yĭ; #6AA5
+檦 > biăo; #6AA6
+檧 > sōng; #6AA7
+檨 > shē; #6AA8
+檩 > lĭn; #6AA9
+檫 > chá; #6AAB
+檬 > méng; #6AAC
+檭 > yín; #6AAD
+檮 > táo; #6AAE
+檯 > tái; #6AAF
+檰 > mián; #6AB0
+檱 > qí; #6AB1
+檲 > tóan; #6AB2
+檳 > bīn; #6AB3
+檴 > hùo; #6AB4
+檵 > jì; #6AB5
+檶 > qiān; #6AB6
+檷 > mí; #6AB7
+檸 > níng; #6AB8
+檹 > yī; #6AB9
+檺 > găo; #6ABA
+檻 > jiàn; #6ABB
+檼 > yìn; #6ABC
+檽 > ér; #6ABD
+檾 > qĭng; #6ABE
+檿 > yăn; #6ABF
+櫀 > qí; #6AC0
+櫁 > mì; #6AC1
+櫂 > zhào; #6AC2
+櫃 > gùi; #6AC3
+櫄 > chūn; #6AC4
+櫅 > jī; #6AC5
+櫆 > kúi; #6AC6
+櫇 > pó; #6AC7
+櫈 > dèng; #6AC8
+櫉 > chú; #6AC9
+櫋 > mián; #6ACB
+櫌 > yōu; #6ACC
+櫍 > zhì; #6ACD
+櫎 > guàng; #6ACE
+櫏 > qiān; #6ACF
+櫐 > lĕi; #6AD0
+櫑 > lĕi; #6AD1
+櫒 > sà; #6AD2
+櫓 > lŭ; #6AD3
+櫔 > lì; #6AD4
+櫕 > cuán; #6AD5
+櫖 > lǘ; #6AD6
+櫗 > miè; #6AD7
+櫘 > hùi; #6AD8
+櫙 > ōu; #6AD9
+櫚 > lǘ; #6ADA
+櫛 > jié; #6ADB
+櫜 > gāo; #6ADC
+櫝 > dú; #6ADD
+櫞 > yuán; #6ADE
+櫟 > lì; #6ADF
+櫠 > fèi; #6AE0
+櫡 > zhúo; #6AE1
+櫢 > sŏu; #6AE2
+櫣 > lián; #6AE3
+櫥 > chú; #6AE5
+櫧 > zhū; #6AE7
+櫨 > lú; #6AE8
+櫩 > yán; #6AE9
+櫪 > lì; #6AEA
+櫫 > zhū; #6AEB
+櫬 > chèn; #6AEC
+櫭 > jié; #6AED
+櫮 > è; #6AEE
+櫯 > sū; #6AEF
+櫰 > huái; #6AF0
+櫱 > niè; #6AF1
+櫲 > yù; #6AF2
+櫳 > lóng; #6AF3
+櫴 > lài; #6AF4
+櫶 > xiăn; #6AF6
+櫸 > jŭ; #6AF8
+櫹 > xiāo; #6AF9
+櫺 > líng; #6AFA
+櫻 > yīng; #6AFB
+櫼 > jiān; #6AFC
+櫽 > yĭn; #6AFD
+櫾 > yóu; #6AFE
+櫿 > yíng; #6AFF
+欀 > xiāng; #6B00
+欁 > nóng; #6B01
+欂 > bó; #6B02
+欃 > chán; #6B03
+欄 > lán; #6B04
+欅 > jŭ; #6B05
+欆 > shuāng; #6B06
+欇 > shè; #6B07
+欈 > wéi; #6B08
+欉 > còng; #6B09
+權 > quán; #6B0A
+欋 > qú; #6B0B
+欎 > yù; #6B0E
+欏 > lúo; #6B0F
+欐 > lĭ; #6B10
+欑 > zàn; #6B11
+欒 > luán; #6B12
+欓 > dăng; #6B13
+欔 > jué; #6B14
+欖 > lăn; #6B16
+欗 > lán; #6B17
+欘 > zhŭ; #6B18
+欙 > léi; #6B19
+欚 > lĭ; #6B1A
+欛 > bà; #6B1B
+欜 > náng; #6B1C
+欝 > yù; #6B1D
+欞 > líng; #6B1E
+欠 > qiàn; #6B20
+次 > cì; #6B21
+欢 > huān; #6B22
+欣 > xīn; #6B23
+欤 > yú; #6B24
+欥 > yù; #6B25
+欦 > qiān; #6B26
+欧 > ōu; #6B27
+欨 > xū; #6B28
+欩 > chāo; #6B29
+欪 > chù; #6B2A
+欫 > chī; #6B2B
+欬 > kài; #6B2C
+欭 > yì; #6B2D
+欮 > jué; #6B2E
+欯 > xí; #6B2F
+欰 > xū; #6B30
+欱 > xià; #6B31
+欲 > yù; #6B32
+欳 > kuài; #6B33
+欴 > láng; #6B34
+欵 > kuăn; #6B35
+欶 > shùo; #6B36
+欷 > xī; #6B37
+欸 > ăi; #6B38
+欹 > yī; #6B39
+欺 > qī; #6B3A
+欻 > hū; #6B3B
+欼 > chĭ; #6B3C
+欽 > qīn; #6B3D
+款 > kuăn; #6B3E
+欿 > kăn; #6B3F
+歀 > kuăn; #6B40
+歁 > kăn; #6B41
+歂 > chuán; #6B42
+歃 > shà; #6B43
+歄 > gua; #6B44
+歅 > yīn; #6B45
+歆 > xīn; #6B46
+歇 > xiē; #6B47
+歈 > yú; #6B48
+歉 > qiàn; #6B49
+歊 > xiāo; #6B4A
+歋 > yí; #6B4B
+歌 > gē; #6B4C
+歍 > wū; #6B4D
+歎 > tàn; #6B4E
+歏 > jìn; #6B4F
+歐 > ōu; #6B50
+歑 > hū; #6B51
+歒 > tì; #6B52
+歓 > huān; #6B53
+歔 > xū; #6B54
+歕 > pèn; #6B55
+歖 > xī; #6B56
+歗 > xiào; #6B57
+歘 > xū; #6B58
+歙 > xì; #6B59
+歛 > liàn; #6B5B
+歜 > chù; #6B5C
+歝 > yì; #6B5D
+歞 > kăn; #6B5E
+歟 > yú; #6B5F
+歠 > chùo; #6B60
+歡 > huān; #6B61
+止 > zhĭ; #6B62
+正 > zhèng; #6B63
+此 > cĭ; #6B64
+步 > bù; #6B65
+武 > wŭ; #6B66
+歧 > qí; #6B67
+歨 > bù; #6B68
+歩 > bù; #6B69
+歪 > wāi; #6B6A
+歫 > jù; #6B6B
+歬 > qián; #6B6C
+歭 > chí; #6B6D
+歮 > sè; #6B6E
+歯 > chĭ; #6B6F
+歰 > sè; #6B70
+歱 > zhŏng; #6B71
+歲 > sùi; #6B72
+歳 > sùi; #6B73
+歴 > lì; #6B74
+歵 > cùo; #6B75
+歶 > yú; #6B76
+歷 > lì; #6B77
+歸 > gūi; #6B78
+歹 > dăi; #6B79
+歺 > dăi; #6B7A
+死 > sĭ; #6B7B
+歼 > jiān; #6B7C
+歽 > zhé; #6B7D
+歾 > mò; #6B7E
+歿 > mò; #6B7F
+殀 > yăo; #6B80
+殁 > mò; #6B81
+殂 > cú; #6B82
+殃 > yāng; #6B83
+殄 > tiăn; #6B84
+殅 > shēng; #6B85
+殆 > dài; #6B86
+殇 > shāng; #6B87
+殈 > xù; #6B88
+殉 > xùn; #6B89
+殊 > shū; #6B8A
+残 > cán; #6B8B
+殌 > jué; #6B8C
+殍 > piăo; #6B8D
+殎 > qià; #6B8E
+殏 > qìu; #6B8F
+殐 > sù; #6B90
+殑 > qíng; #6B91
+殒 > yŭn; #6B92
+殓 > liàn; #6B93
+殔 > yì; #6B94
+殕 > fŏu; #6B95
+殖 > zhí; #6B96
+殗 > yè; #6B97
+殘 > cán; #6B98
+殙 > hūn; #6B99
+殚 > dān; #6B9A
+殛 > jí; #6B9B
+殜 > yè; #6B9C
+殝 > zhen; #6B9D
+殞 > yŭn; #6B9E
+殟 > wēn; #6B9F
+殠 > chòu; #6BA0
+殡 > bìn; #6BA1
+殢 > tì; #6BA2
+殣 > jĭn; #6BA3
+殤 > shāng; #6BA4
+殥 > yín; #6BA5
+殦 > diāo; #6BA6
+殧 > cù; #6BA7
+殨 > hùi; #6BA8
+殩 > cuàn; #6BA9
+殪 > yì; #6BAA
+殫 > dān; #6BAB
+殬 > dù; #6BAC
+殭 > jiāng; #6BAD
+殮 > liàn; #6BAE
+殯 > bìn; #6BAF
+殰 > dú; #6BB0
+殲 > jiān; #6BB2
+殳 > shū; #6BB3
+殴 > ōu; #6BB4
+段 > duàn; #6BB5
+殶 > zhù; #6BB6
+殷 > yīn; #6BB7
+殸 > qìng; #6BB8
+殹 > yì; #6BB9
+殺 > shā; #6BBA
+殻 > què; #6BBB
+殼 > ké; #6BBC
+殽 > yáo; #6BBD
+殾 > jùn; #6BBE
+殿 > diàn; #6BBF
+毀 > hŭi; #6BC0
+毁 > hŭi; #6BC1
+毂 > gŭ; #6BC2
+毃 > què; #6BC3
+毄 > jī; #6BC4
+毅 > yì; #6BC5
+毆 > ōu; #6BC6
+毇 > hŭi; #6BC7
+毈 > duàn; #6BC8
+毉 > yī; #6BC9
+毊 > xiāo; #6BCA
+毋 > wú; #6BCB
+毌 > guàn; #6BCC
+母 > mŭ; #6BCD
+毎 > mĕi; #6BCE
+每 > mĕi; #6BCF
+毐 > ăi; #6BD0
+毑 > zŭo; #6BD1
+毒 > dú; #6BD2
+毓 > yù; #6BD3
+比 > bĭ; #6BD4
+毕 > bì; #6BD5
+毖 > bì; #6BD6
+毗 > pí; #6BD7
+毘 > pí; #6BD8
+毙 > bì; #6BD9
+毚 > chán; #6BDA
+毛 > máo; #6BDB
+毞 > pú; #6BDE
+毠 > jiā; #6BE0
+毡 > zhān; #6BE1
+毢 > sāi; #6BE2
+毣 > mù; #6BE3
+毤 > tùo; #6BE4
+毥 > xún; #6BE5
+毦 > èr; #6BE6
+毧 > róng; #6BE7
+毨 > xiăn; #6BE8
+毩 > jú; #6BE9
+毪 > mú; #6BEA
+毫 > háo; #6BEB
+毬 > qíu; #6BEC
+毭 > dòu; #6BED
+毯 > tăn; #6BEF
+毰 > péi; #6BF0
+毱 > jú; #6BF1
+毲 > dúo; #6BF2
+毳 > cùi; #6BF3
+毴 > bī; #6BF4
+毵 > sān; #6BF5
+毷 > mào; #6BF7
+毸 > sūi; #6BF8
+毹 > yū; #6BF9
+毺 > yū; #6BFA
+毻 > tùo; #6BFB
+毼 > hé; #6BFC
+毽 > jiàn; #6BFD
+毾 > tà; #6BFE
+毿 > sān; #6BFF
+氀 > lǘ; #6C00
+氁 > mú; #6C01
+氂 > lí; #6C02
+氃 > tóng; #6C03
+氄 > rŏng; #6C04
+氅 > chăng; #6C05
+氆 > pŭ; #6C06
+氇 > lúo; #6C07
+氈 > zhān; #6C08
+氉 > sào; #6C09
+氊 > zhān; #6C0A
+氋 > méng; #6C0B
+氌 > lúo; #6C0C
+氍 > qú; #6C0D
+氎 > dié; #6C0E
+氏 > shì; #6C0F
+氐 > dĭ; #6C10
+民 > mín; #6C11
+氒 > jué; #6C12
+氓 > máng; #6C13
+气 > qì; #6C14
+氕 > piē; #6C15
+氖 > năi; #6C16
+気 > qì; #6C17
+氘 > dāo; #6C18
+氙 > xiān; #6C19
+氚 > chuān; #6C1A
+氛 > fēn; #6C1B
+氜 > rì; #6C1C
+氝 > nèi; #6C1D
+氟 > fú; #6C1F
+氠 > shēn; #6C20
+氡 > dōng; #6C21
+氢 > qīng; #6C22
+氣 > qì; #6C23
+氤 > yīn; #6C24
+氥 > xī; #6C25
+氦 > hài; #6C26
+氧 > yăng; #6C27
+氨 > ān; #6C28
+氩 > yà; #6C29
+氪 > kè; #6C2A
+氫 > qīng; #6C2B
+氬 > yà; #6C2C
+氭 > dōng; #6C2D
+氮 > dàn; #6C2E
+氯 > lǜ; #6C2F
+氰 > qīng; #6C30
+氱 > yăng; #6C31
+氲 > yūn; #6C32
+氳 > yūn; #6C33
+水 > shŭi; #6C34
+氵 > sān' 'diăn' 'shŭi; #6C35
+氶 > zhĕng; #6C36
+氷 > bīng; #6C37
+永 > yŏng; #6C38
+氹 > dàng; #6C39
+氻 > lè; #6C3B
+氼 > nì; #6C3C
+氽 > tŭn; #6C3D
+氾 > fàn; #6C3E
+氿 > gŭi; #6C3F
+汀 > tīng; #6C40
+汁 > zhī; #6C41
+求 > qíu; #6C42
+汃 > bīn; #6C43
+汄 > zè; #6C44
+汅 > miăn; #6C45
+汆 > cuān; #6C46
+汇 > hùi; #6C47
+汈 > diāo; #6C48
+汉 > yì; #6C49
+汊 > chà; #6C4A
+汋 > zhúo; #6C4B
+汌 > chuàn; #6C4C
+汍 > wán; #6C4D
+汎 > fàn; #6C4E
+汏 > dài; #6C4F
+汐 > xì; #6C50
+汑 > tūo; #6C51
+汒 > máng; #6C52
+汓 > qíu; #6C53
+汔 > qì; #6C54
+汕 > shàn; #6C55
+汖 > pài; #6C56
+汗 > hàn; #6C57
+汘 > qiān; #6C58
+汙 > wū; #6C59
+汚 > wū; #6C5A
+汛 > xùn; #6C5B
+汜 > sì; #6C5C
+汝 > rŭ; #6C5D
+汞 > gŏng; #6C5E
+江 > jiāng; #6C5F
+池 > chí; #6C60
+污 > wū; #6C61
+汤 > tāng; #6C64
+汥 > zhī; #6C65
+汦 > chí; #6C66
+汧 > qiān; #6C67
+汨 > mì; #6C68
+汩 > yù; #6C69
+汪 > wāng; #6C6A
+汫 > qìng; #6C6B
+汬 > jĭng; #6C6C
+汭 > rùi; #6C6D
+汮 > jūn; #6C6E
+汯 > hóng; #6C6F
+汰 > tài; #6C70
+汱 > quăn; #6C71
+汲 > jí; #6C72
+汳 > biàn; #6C73
+汴 > biàn; #6C74
+汵 > gàn; #6C75
+汶 > wèn; #6C76
+汷 > zhōng; #6C77
+汸 > fāng; #6C78
+汹 > xīong; #6C79
+決 > jué; #6C7A
+汻 > hăng; #6C7B
+汼 > niōu; #6C7C
+汽 > qì; #6C7D
+汾 > fén; #6C7E
+汿 > xù; #6C7F
+沀 > xù; #6C80
+沁 > qìn; #6C81
+沂 > yí; #6C82
+沃 > wò; #6C83
+沄 > yún; #6C84
+沅 > yuán; #6C85
+沆 > háng; #6C86
+沇 > yăn; #6C87
+沈 > chén; #6C88
+沉 > chén; #6C89
+沊 > dàn; #6C8A
+沋 > yóu; #6C8B
+沌 > dùn; #6C8C
+沍 > hù; #6C8D
+沎 > hùo; #6C8E
+沏 > qiē; #6C8F
+沐 > mù; #6C90
+沑 > róu; #6C91
+沒 > méi; #6C92
+沓 > tà; #6C93
+沔 > miăn; #6C94
+沕 > wù; #6C95
+沖 > chōng; #6C96
+沗 > tiān; #6C97
+沘 > bĭ; #6C98
+沙 > shā; #6C99
+沚 > zhĭ; #6C9A
+沛 > pèi; #6C9B
+沜 > pàn; #6C9C
+沝 > zhŭi; #6C9D
+沞 > zā; #6C9E
+沟 > gōu; #6C9F
+沠 > líu; #6CA0
+没 > méi; #6CA1
+沢 > zé; #6CA2
+沣 > fēng; #6CA3
+沤 > òu; #6CA4
+沥 > lì; #6CA5
+沦 > lún; #6CA6
+沧 > cāng; #6CA7
+沨 > féng; #6CA8
+沩 > wéi; #6CA9
+沪 > hù; #6CAA
+沫 > mò; #6CAB
+沬 > mèi; #6CAC
+沭 > shù; #6CAD
+沮 > jū; #6CAE
+沯 > zăn; #6CAF
+沰 > tūo; #6CB0
+沱 > túo; #6CB1
+沲 > túo; #6CB2
+河 > hé; #6CB3
+沴 > lì; #6CB4
+沵 > mĭ; #6CB5
+沶 > yí; #6CB6
+沷 > fā; #6CB7
+沸 > fèi; #6CB8
+油 > yóu; #6CB9
+沺 > tián; #6CBA
+治 > zhì; #6CBB
+沼 > zhăo; #6CBC
+沽 > gū; #6CBD
+沾 > zhān; #6CBE
+沿 > yán; #6CBF
+泀 > sī; #6CC0
+況 > kuàng; #6CC1
+泂 > jĭong; #6CC2
+泃 > jù; #6CC3
+泄 > xiè; #6CC4
+泅 > qíu; #6CC5
+泆 > yī; #6CC6
+泇 > jiā; #6CC7
+泈 > zhōng; #6CC8
+泉 > quán; #6CC9
+泊 > bó; #6CCA
+泋 > hùi; #6CCB
+泌 > mì; #6CCC
+泍 > bēn; #6CCD
+泎 > zhúo; #6CCE
+泏 > chù; #6CCF
+泐 > lè; #6CD0
+泑 > yŏu; #6CD1
+泒 > gū; #6CD2
+泓 > hóng; #6CD3
+泔 > gān; #6CD4
+法 > fă; #6CD5
+泖 > măo; #6CD6
+泗 > sì; #6CD7
+泘 > hū; #6CD8
+泙 > píng; #6CD9
+泚 > cĭ; #6CDA
+泛 > fàn; #6CDB
+泜 > chí; #6CDC
+泝 > sù; #6CDD
+泞 > nìng; #6CDE
+泟 > chēng; #6CDF
+泠 > líng; #6CE0
+泡 > pào; #6CE1
+波 > bō; #6CE2
+泣 > qì; #6CE3
+泤 > sì; #6CE4
+泥 > ní; #6CE5
+泦 > jú; #6CE6
+泧 > yuè; #6CE7
+注 > zhù; #6CE8
+泩 > shēng; #6CE9
+泪 > lèi; #6CEA
+泫 > xuàn; #6CEB
+泬 > xuè; #6CEC
+泭 > fū; #6CED
+泮 > pàn; #6CEE
+泯 > mĭn; #6CEF
+泰 > tài; #6CF0
+泱 > yāng; #6CF1
+泲 > jĭ; #6CF2
+泳 > yŏng; #6CF3
+泴 > guàn; #6CF4
+泵 > bèng; #6CF5
+泶 > xué; #6CF6
+泷 > lóng; #6CF7
+泸 > lú; #6CF8
+泺 > bó; #6CFA
+泻 > xiè; #6CFB
+泼 > pō; #6CFC
+泽 > zé; #6CFD
+泾 > jīng; #6CFE
+泿 > yín; #6CFF
+洀 > zhōu; #6D00
+洁 > jí; #6D01
+洂 > yì; #6D02
+洃 > hūi; #6D03
+洄 > húi; #6D04
+洅 > zŭi; #6D05
+洆 > chéng; #6D06
+洇 > yīn; #6D07
+洈 > wéi; #6D08
+洉 > hòu; #6D09
+洊 > jiàn; #6D0A
+洋 > yáng; #6D0B
+洌 > liè; #6D0C
+洍 > sì; #6D0D
+洎 > jì; #6D0E
+洏 > ér; #6D0F
+洐 > xíng; #6D10
+洑 > fú; #6D11
+洒 > să; #6D12
+洓 > sŭo; #6D13
+洔 > zhĭ; #6D14
+洕 > yīn; #6D15
+洖 > wú; #6D16
+洗 > xĭ; #6D17
+洘 > kăo; #6D18
+洙 > zhū; #6D19
+洚 > jiàng; #6D1A
+洛 > lùo; #6D1B
+洝 > àn; #6D1D
+洞 > dòng; #6D1E
+洟 > yí; #6D1F
+洠 > móu; #6D20
+洡 > lĕi; #6D21
+洢 > yī; #6D22
+洣 > mĭ; #6D23
+洤 > quán; #6D24
+津 > jīn; #6D25
+洦 > mò; #6D26
+洧 > wĕi; #6D27
+洨 > xiáo; #6D28
+洩 > xiè; #6D29
+洪 > hóng; #6D2A
+洫 > xù; #6D2B
+洬 > shùo; #6D2C
+洭 > kuāng; #6D2D
+洮 > tāo; #6D2E
+洯 > qiè; #6D2F
+洰 > jù; #6D30
+洱 > ĕr; #6D31
+洲 > zhōu; #6D32
+洳 > rù; #6D33
+洴 > píng; #6D34
+洵 > xún; #6D35
+洶 > xīong; #6D36
+洷 > zhì; #6D37
+洸 > guāng; #6D38
+洹 > huán; #6D39
+洺 > míng; #6D3A
+活 > húo; #6D3B
+洼 > wā; #6D3C
+洽 > qià; #6D3D
+派 > pài; #6D3E
+洿 > wū; #6D3F
+浀 > qŭ; #6D40
+流 > líu; #6D41
+浂 > yì; #6D42
+浃 > jiá; #6D43
+浄 > jìng; #6D44
+浅 > qiăn; #6D45
+浆 > jiāng; #6D46
+浇 > jiāo; #6D47
+浈 > chéng; #6D48
+浉 > shī; #6D49
+浊 > zhúo; #6D4A
+测 > cè; #6D4B
+浍 > kuài; #6D4D
+济 > jì; #6D4E
+浏 > líu; #6D4F
+浐 > chăn; #6D50
+浑 > hún; #6D51
+浒 > hŭ; #6D52
+浓 > nóng; #6D53
+浔 > xún; #6D54
+浕 > jìn; #6D55
+浖 > liè; #6D56
+浗 > qíu; #6D57
+浘 > wĕi; #6D58
+浙 > zhè; #6D59
+浚 > jùn; #6D5A
+浛 > hàn; #6D5B
+浜 > bāng; #6D5C
+浝 > máng; #6D5D
+浞 > zhúo; #6D5E
+浟 > yóu; #6D5F
+浠 > xī; #6D60
+浡 > bó; #6D61
+浢 > dòu; #6D62
+浣 > wăn; #6D63
+浤 > hóng; #6D64
+浥 > yì; #6D65
+浦 > pŭ; #6D66
+浧 > yĭng; #6D67
+浨 > lăn; #6D68
+浩 > hào; #6D69
+浪 > làng; #6D6A
+浫 > hăn; #6D6B
+浬 > lĭ; #6D6C
+浭 > gēng; #6D6D
+浮 > fú; #6D6E
+浯 > wú; #6D6F
+浰 > liàn; #6D70
+浱 > chún; #6D71
+浲 > féng; #6D72
+浳 > yì; #6D73
+浴 > yù; #6D74
+浵 > tóng; #6D75
+浶 > láo; #6D76
+海 > hăi; #6D77
+浸 > jìn; #6D78
+浹 > jiá; #6D79
+浺 > chōng; #6D7A
+浻 > wĕng; #6D7B
+浼 > mĕi; #6D7C
+浽 > sūi; #6D7D
+浾 > chēng; #6D7E
+浿 > pèi; #6D7F
+涀 > xiàn; #6D80
+涁 > shèn; #6D81
+涂 > tú; #6D82
+涃 > kùn; #6D83
+涄 > pīn; #6D84
+涅 > niè; #6D85
+涆 > hàn; #6D86
+涇 > jīng; #6D87
+消 > xiāo; #6D88
+涉 > shè; #6D89
+涊 > niàn; #6D8A
+涋 > tū; #6D8B
+涌 > yŏng; #6D8C
+涍 > xiào; #6D8D
+涎 > xián; #6D8E
+涏 > tĭng; #6D8F
+涐 > é; #6D90
+涑 > sù; #6D91
+涒 > tūn; #6D92
+涓 > juān; #6D93
+涔 > cén; #6D94
+涕 > tì; #6D95
+涖 > lì; #6D96
+涗 > shùi; #6D97
+涘 > sì; #6D98
+涙 > lèi; #6D99
+涚 > shùi; #6D9A
+涛 > tāo; #6D9B
+涜 > dú; #6D9C
+涝 > lào; #6D9D
+涞 > lái; #6D9E
+涟 > lián; #6D9F
+涠 > wéi; #6DA0
+涡 > wō; #6DA1
+涢 > yún; #6DA2
+涣 > huàn; #6DA3
+涤 > dí; #6DA4
+润 > rùn; #6DA6
+涧 > jiàn; #6DA7
+涨 > zhăng; #6DA8
+涩 > sè; #6DA9
+涪 > fú; #6DAA
+涫 > guàn; #6DAB
+涬 > xìng; #6DAC
+涭 > shòu; #6DAD
+涮 > shuàn; #6DAE
+涯 > yá; #6DAF
+涰 > chùo; #6DB0
+涱 > zhàng; #6DB1
+液 > yè; #6DB2
+涳 > kōng; #6DB3
+涴 > wò; #6DB4
+涵 > hán; #6DB5
+涶 > tūo; #6DB6
+涷 > dōng; #6DB7
+涸 > hé; #6DB8
+涹 > wō; #6DB9
+涺 > jū; #6DBA
+涻 > gàn; #6DBB
+涼 > liáng; #6DBC
+涽 > hūn; #6DBD
+涾 > tà; #6DBE
+涿 > zhúo; #6DBF
+淀 > diàn; #6DC0
+淁 > qiè; #6DC1
+淂 > dé; #6DC2
+淃 > juàn; #6DC3
+淄 > zī; #6DC4
+淅 > xī; #6DC5
+淆 > yáo; #6DC6
+淇 > qí; #6DC7
+淈 > gŭ; #6DC8
+淉 > gŭo; #6DC9
+淊 > hàn; #6DCA
+淋 > lín; #6DCB
+淌 > tăng; #6DCC
+淍 > zhōu; #6DCD
+淎 > pĕng; #6DCE
+淏 > hào; #6DCF
+淐 > chāng; #6DD0
+淑 > shú; #6DD1
+淒 > qī; #6DD2
+淓 > fāng; #6DD3
+淔 > chì; #6DD4
+淕 > lù; #6DD5
+淖 > nào; #6DD6
+淗 > jú; #6DD7
+淘 > táo; #6DD8
+淙 > cóng; #6DD9
+淚 > lèi; #6DDA
+淛 > zhì; #6DDB
+淜 > péng; #6DDC
+淝 > féi; #6DDD
+淞 > sōng; #6DDE
+淟 > tiăn; #6DDF
+淠 > pì; #6DE0
+淡 > dàn; #6DE1
+淢 > yù; #6DE2
+淣 > ní; #6DE3
+淤 > yū; #6DE4
+淥 > lù; #6DE5
+淦 > gàn; #6DE6
+淧 > mì; #6DE7
+淨 > jìng; #6DE8
+淩 > líng; #6DE9
+淪 > lún; #6DEA
+淫 > yín; #6DEB
+淬 > cùi; #6DEC
+淭 > qú; #6DED
+淮 > huái; #6DEE
+淯 > yù; #6DEF
+淰 > niàn; #6DF0
+深 > shēn; #6DF1
+淲 > piáo; #6DF2
+淳 > chún; #6DF3
+淴 > wà; #6DF4
+淵 > yuān; #6DF5
+淶 > lái; #6DF6
+混 > hŭn; #6DF7
+淸 > qīng; #6DF8
+淹 > yān; #6DF9
+淺 > qiăn; #6DFA
+添 > tiān; #6DFB
+淼 > miăo; #6DFC
+淽 > zhĭ; #6DFD
+淾 > yĭn; #6DFE
+淿 > mì; #6DFF
+渀 > bēn; #6E00
+渁 > yuān; #6E01
+渂 > wèn; #6E02
+渃 > rè; #6E03
+渄 > fēi; #6E04
+清 > qīng; #6E05
+渆 > yuān; #6E06
+渇 > kĕ; #6E07
+済 > jì; #6E08
+渉 > shè; #6E09
+渊 > yuān; #6E0A
+渌 > lù; #6E0C
+渍 > zì; #6E0D
+渎 > dú; #6E0E
+渐 > jiàn; #6E10
+渑 > mĭn; #6E11
+渒 > pì; #6E12
+渔 > yú; #6E14
+渕 > yuān; #6E15
+渖 > shĕn; #6E16
+渗 > shèn; #6E17
+渘 > róu; #6E18
+渙 > huàn; #6E19
+渚 > zhŭ; #6E1A
+減 > jiăn; #6E1B
+渜 > nuăn; #6E1C
+渝 > yú; #6E1D
+渞 > qíu; #6E1E
+渟 > tíng; #6E1F
+渠 > qú; #6E20
+渡 > dù; #6E21
+渢 > féng; #6E22
+渣 > zhā; #6E23
+渤 > bó; #6E24
+渥 > wò; #6E25
+渦 > wō; #6E26
+渧 > dì; #6E27
+渨 > wēi; #6E28
+温 > wēn; #6E29
+渪 > rú; #6E2A
+渫 > xiè; #6E2B
+測 > cè; #6E2C
+渭 > wèi; #6E2D
+渮 > gē; #6E2E
+港 > găng; #6E2F
+渰 > yăn; #6E30
+渱 > hóng; #6E31
+渲 > xuàn; #6E32
+渳 > mĭ; #6E33
+渴 > kĕ; #6E34
+渵 > máo; #6E35
+渶 > yīng; #6E36
+渷 > yăn; #6E37
+游 > yóu; #6E38
+渹 > hōng; #6E39
+渺 > miăo; #6E3A
+渻 > xĭng; #6E3B
+渼 > mĕi; #6E3C
+渽 > zāi; #6E3D
+渾 > hún; #6E3E
+渿 > nài; #6E3F
+湀 > kúi; #6E40
+湁 > shí; #6E41
+湂 > è; #6E42
+湃 > pài; #6E43
+湄 > méi; #6E44
+湅 > liàn; #6E45
+湆 > qì; #6E46
+湇 > qì; #6E47
+湈 > méi; #6E48
+湉 > tián; #6E49
+湊 > còu; #6E4A
+湋 > wéi; #6E4B
+湌 > cān; #6E4C
+湍 > tuān; #6E4D
+湎 > miăn; #6E4E
+湏 > hùi; #6E4F
+湐 > mò; #6E50
+湑 > xŭ; #6E51
+湒 > jí; #6E52
+湓 > pén; #6E53
+湔 > jiān; #6E54
+湕 > jiăn; #6E55
+湖 > hú; #6E56
+湗 > fèng; #6E57
+湘 > xiāng; #6E58
+湙 > yì; #6E59
+湚 > yìn; #6E5A
+湛 > zhàn; #6E5B
+湜 > shí; #6E5C
+湝 > jiē; #6E5D
+湞 > chéng; #6E5E
+湟 > huáng; #6E5F
+湠 > tàn; #6E60
+湡 > yú; #6E61
+湢 > bì; #6E62
+湣 > mĭn; #6E63
+湤 > shī; #6E64
+湥 > tú; #6E65
+湦 > shēng; #6E66
+湧 > yŏng; #6E67
+湨 > qù; #6E68
+湩 > zhòng; #6E69
+湪 > suèi; #6E6A
+湫 > jīu; #6E6B
+湬 > jiăo; #6E6C
+湭 > qióu; #6E6D
+湮 > yīn; #6E6E
+湯 > tāng; #6E6F
+湰 > lóng; #6E70
+湱 > hùo; #6E71
+湲 > yuán; #6E72
+湳 > năn; #6E73
+湴 > bàn; #6E74
+湵 > yŏu; #6E75
+湶 > quán; #6E76
+湷 > chúi; #6E77
+湸 > liàng; #6E78
+湹 > chán; #6E79
+湺 > yán; #6E7A
+湻 > chún; #6E7B
+湼 > niè; #6E7C
+湽 > zī; #6E7D
+湾 > wān; #6E7E
+湿 > shī; #6E7F
+満 > măn; #6E80
+溁 > yíng; #6E81
+溃 > kùi; #6E83
+溅 > jiàn; #6E85
+溆 > xù; #6E86
+溇 > lǚ; #6E87
+溈 > gūi; #6E88
+溉 > gài; #6E89
+溌 > pō; #6E8C
+溍 > jìn; #6E8D
+溎 > gùi; #6E8E
+溏 > táng; #6E8F
+源 > yuán; #6E90
+溑 > sŭo; #6E91
+溒 > yuán; #6E92
+溓 > lián; #6E93
+溔 > yăo; #6E94
+溕 > mèng; #6E95
+準 > zhŭn; #6E96
+溗 > shéng; #6E97
+溘 > kè; #6E98
+溙 > tài; #6E99
+溚 > dá; #6E9A
+溛 > wā; #6E9B
+溜 > līu; #6E9C
+溝 > gōu; #6E9D
+溞 > sāo; #6E9E
+溟 > míng; #6E9F
+溠 > zhà; #6EA0
+溡 > shí; #6EA1
+溢 > yì; #6EA2
+溣 > lún; #6EA3
+溤 > mă; #6EA4
+溥 > pŭ; #6EA5
+溦 > wéi; #6EA6
+溧 > lì; #6EA7
+溨 > cái; #6EA8
+溩 > wù; #6EA9
+溪 > xī; #6EAA
+溫 > wēn; #6EAB
+溬 > qiāng; #6EAC
+溭 > zé; #6EAD
+溮 > shī; #6EAE
+溯 > sù; #6EAF
+溰 > yī; #6EB0
+溱 > zhēn; #6EB1
+溲 > sōu; #6EB2
+溳 > yún; #6EB3
+溴 > xìu; #6EB4
+溵 > yīn; #6EB5
+溶 > róng; #6EB6
+溷 > hùn; #6EB7
+溸 > sù; #6EB8
+溹 > sù; #6EB9
+溺 > nì; #6EBA
+溻 > tà; #6EBB
+溼 > shī; #6EBC
+溽 > rù; #6EBD
+溾 > wēi; #6EBE
+溿 > pàn; #6EBF
+滀 > chù; #6EC0
+滁 > chú; #6EC1
+滂 > pāng; #6EC2
+滃 > wĕng; #6EC3
+滄 > cāng; #6EC4
+滅 > miè; #6EC5
+滆 > hé; #6EC6
+滇 > diān; #6EC7
+滈 > hào; #6EC8
+滉 > huăng; #6EC9
+滊 > xì; #6ECA
+滋 > zī; #6ECB
+滌 > dí; #6ECC
+滍 > zhĭ; #6ECD
+滎 > yíng; #6ECE
+滏 > fŭ; #6ECF
+滐 > jié; #6ED0
+滑 > huá; #6ED1
+滒 > gē; #6ED2
+滓 > zĭ; #6ED3
+滔 > tāo; #6ED4
+滕 > téng; #6ED5
+滖 > sūi; #6ED6
+滗 > bĭ; #6ED7
+滘 > jiào; #6ED8
+滙 > hùi; #6ED9
+滚 > gŭn; #6EDA
+滛 > yín; #6EDB
+滜 > gāo; #6EDC
+滝 > lóng; #6EDD
+滞 > zhì; #6EDE
+滟 > yàn; #6EDF
+滠 > shè; #6EE0
+满 > măn; #6EE1
+滢 > yìng; #6EE2
+滣 > chún; #6EE3
+滤 > lǜ; #6EE4
+滥 > làn; #6EE5
+滦 > luán; #6EE6
+滨 > bīn; #6EE8
+滩 > tān; #6EE9
+滪 > yù; #6EEA
+滫 > sŏu; #6EEB
+滬 > hù; #6EEC
+滭 > bì; #6EED
+滮 > biāo; #6EEE
+滯 > zhì; #6EEF
+滰 > jiăng; #6EF0
+滱 > kòu; #6EF1
+滲 > shèn; #6EF2
+滳 > shāng; #6EF3
+滴 > dī; #6EF4
+滵 > mì; #6EF5
+滶 > áo; #6EF6
+滷 > lŭ; #6EF7
+滸 > hŭ; #6EF8
+滹 > hū; #6EF9
+滺 > yóu; #6EFA
+滻 > chăn; #6EFB
+滼 > fàn; #6EFC
+滽 > yóng; #6EFD
+滾 > gŭn; #6EFE
+滿 > măn; #6EFF
+漀 > qìng; #6F00
+漁 > yú; #6F01
+漂 > piāo; #6F02
+漃 > jí; #6F03
+漄 > yá; #6F04
+漅 > jiăo; #6F05
+漆 > qī; #6F06
+漇 > xĭ; #6F07
+漈 > jì; #6F08
+漉 > lù; #6F09
+漊 > lǚ; #6F0A
+漋 > lóng; #6F0B
+漌 > jĭn; #6F0C
+漍 > gúo; #6F0D
+漎 > cóng; #6F0E
+漏 > lòu; #6F0F
+漐 > zhí; #6F10
+漑 > gài; #6F11
+漒 > qiáng; #6F12
+漓 > lí; #6F13
+演 > yăn; #6F14
+漕 > cáo; #6F15
+漖 > jiào; #6F16
+漗 > cōng; #6F17
+漘 > qún; #6F18
+漙 > tuán; #6F19
+漚 > òu; #6F1A
+漛 > téng; #6F1B
+漜 > yĕ; #6F1C
+漝 > xí; #6F1D
+漞 > mì; #6F1E
+漟 > táng; #6F1F
+漠 > mò; #6F20
+漡 > shāng; #6F21
+漢 > hàn; #6F22
+漣 > lián; #6F23
+漤 > lăn; #6F24
+漥 > wā; #6F25
+漦 > lí; #6F26
+漧 > qián; #6F27
+漨 > féng; #6F28
+漩 > xuán; #6F29
+漪 > yī; #6F2A
+漫 > màn; #6F2B
+漬 > zì; #6F2C
+漭 > măng; #6F2D
+漮 > kāng; #6F2E
+漯 > lĕi; #6F2F
+漰 > pēng; #6F30
+漱 > shù; #6F31
+漲 > zhăng; #6F32
+漳 > zhāng; #6F33
+漴 > chóng; #6F34
+漵 > xù; #6F35
+漶 > huàn; #6F36
+漷 > kùo; #6F37
+漸 > jiàn; #6F38
+漹 > yān; #6F39
+漺 > chuăng; #6F3A
+漻 > liáo; #6F3B
+漼 > cŭi; #6F3C
+漽 > tí; #6F3D
+漾 > yàng; #6F3E
+漿 > jiāng; #6F3F
+潀 > cóng; #6F40
+潁 > yĭng; #6F41
+潂 > hóng; #6F42
+潃 > xún; #6F43
+潄 > shù; #6F44
+潅 > guàn; #6F45
+潆 > yíng; #6F46
+潇 > xiāo; #6F47
+潊 > xù; #6F4A
+潋 > liàn; #6F4B
+潌 > zhì; #6F4C
+潍 > wéi; #6F4D
+潎 > pì; #6F4E
+潏 > jué; #6F4F
+潐 > jiào; #6F50
+潑 > pō; #6F51
+潒 > dàng; #6F52
+潓 > hùi; #6F53
+潔 > jié; #6F54
+潕 > wŭ; #6F55
+潖 > pá; #6F56
+潗 > jí; #6F57
+潘 > pān; #6F58
+潙 > gúi; #6F59
+潚 > xiāo; #6F5A
+潛 > qián; #6F5B
+潜 > qián; #6F5C
+潝 > xī; #6F5D
+潞 > lù; #6F5E
+潟 > xì; #6F5F
+潠 > xuàn; #6F60
+潡 > dùn; #6F61
+潢 > huáng; #6F62
+潣 > mĭn; #6F63
+潤 > rùn; #6F64
+潥 > sù; #6F65
+潦 > liáo; #6F66
+潧 > zhēn; #6F67
+潨 > zhōng; #6F68
+潩 > yì; #6F69
+潪 > dí; #6F6A
+潫 > wān; #6F6B
+潬 > dàn; #6F6C
+潭 > tán; #6F6D
+潮 > cháo; #6F6E
+潯 > xún; #6F6F
+潰 > kùi; #6F70
+潱 > yie; #6F71
+潲 > shào; #6F72
+潳 > tú; #6F73
+潴 > zhū; #6F74
+潵 > sàn; #6F75
+潶 > hēi; #6F76
+潷 > bĭ; #6F77
+潸 > shān; #6F78
+潹 > chán; #6F79
+潺 > chán; #6F7A
+潻 > shŭ; #6F7B
+潼 > tóng; #6F7C
+潽 > pŭ; #6F7D
+潾 > lín; #6F7E
+潿 > wéi; #6F7F
+澀 > sè; #6F80
+澁 > sè; #6F81
+澂 > chéng; #6F82
+澃 > jìong; #6F83
+澄 > chéng; #6F84
+澅 > huà; #6F85
+澆 > jiāo; #6F86
+澇 > lào; #6F87
+澈 > chè; #6F88
+澉 > găn; #6F89
+澊 > cūn; #6F8A
+澋 > hèng; #6F8B
+澌 > sī; #6F8C
+澍 > shù; #6F8D
+澎 > péng; #6F8E
+澏 > hàn; #6F8F
+澐 > yún; #6F90
+澑 > lìu; #6F91
+澒 > hòng; #6F92
+澓 > fú; #6F93
+澔 > hào; #6F94
+澕 > hé; #6F95
+澖 > xiān; #6F96
+澗 > jiàn; #6F97
+澘 > shān; #6F98
+澙 > xì; #6F99
+澜 > lán; #6F9C
+澞 > yú; #6F9E
+澟 > lĭn; #6F9F
+澠 > mĭn; #6FA0
+澡 > zăo; #6FA1
+澢 > dāng; #6FA2
+澣 > wăn; #6FA3
+澤 > zé; #6FA4
+澥 > xiè; #6FA5
+澦 > yù; #6FA6
+澧 > lĭ; #6FA7
+澨 > shì; #6FA8
+澩 > xué; #6FA9
+澪 > líng; #6FAA
+澫 > màn; #6FAB
+澬 > zī; #6FAC
+澭 > yōng; #6FAD
+澮 > kuài; #6FAE
+澯 > càn; #6FAF
+澰 > liàn; #6FB0
+澱 > diàn; #6FB1
+澲 > yè; #6FB2
+澳 > ào; #6FB3
+澴 > huán; #6FB4
+澵 > zhēn; #6FB5
+澶 > chán; #6FB6
+澷 > màn; #6FB7
+澸 > dăn; #6FB8
+澹 > dàn; #6FB9
+澺 > yì; #6FBA
+澻 > sùi; #6FBB
+澼 > pì; #6FBC
+澽 > jù; #6FBD
+澾 > tà; #6FBE
+澿 > qín; #6FBF
+激 > jī; #6FC0
+濁 > zhúo; #6FC1
+濂 > lián; #6FC2
+濃 > nóng; #6FC3
+濄 > gūo; #6FC4
+濅 > jìn; #6FC5
+濆 > fén; #6FC6
+濇 > sè; #6FC7
+濈 > jí; #6FC8
+濉 > sūi; #6FC9
+濊 > hùi; #6FCA
+濋 > chŭ; #6FCB
+濌 > tà; #6FCC
+濍 > sōng; #6FCD
+濎 > dĭng; #6FCE
+濐 > zhŭ; #6FD0
+濑 > lài; #6FD1
+濒 > bīn; #6FD2
+濓 > lián; #6FD3
+濔 > mĭ; #6FD4
+濕 > shī; #6FD5
+濖 > shù; #6FD6
+濗 > mì; #6FD7
+濘 > nìng; #6FD8
+濙 > yíng; #6FD9
+濚 > yíng; #6FDA
+濛 > méng; #6FDB
+濜 > jìn; #6FDC
+濝 > qí; #6FDD
+濞 > pì; #6FDE
+濟 > jì; #6FDF
+濠 > háo; #6FE0
+濡 > rú; #6FE1
+濢 > zŭi; #6FE2
+濣 > wò; #6FE3
+濤 > tāo; #6FE4
+濥 > yìn; #6FE5
+濦 > yĭn; #6FE6
+濧 > dùi; #6FE7
+濨 > cí; #6FE8
+濩 > hùo; #6FE9
+濪 > jìng; #6FEA
+濫 > làn; #6FEB
+濬 > jùn; #6FEC
+濭 > ài; #6FED
+濮 > pū; #6FEE
+濯 > zhúo; #6FEF
+濰 > wéi; #6FF0
+濱 > bīn; #6FF1
+濲 > gŭ; #6FF2
+濳 > qián; #6FF3
+濴 > xíng; #6FF4
+濶 > kùo; #6FF6
+濷 > fèi; #6FF7
+濺 > jiàn; #6FFA
+濻 > wĕi; #6FFB
+濼 > lùo; #6FFC
+濽 > zàn; #6FFD
+濾 > lǜ; #6FFE
+濿 > lì; #6FFF
+瀀 > yōu; #7000
+瀁 > yàng; #7001
+瀂 > lŭ; #7002
+瀃 > sì; #7003
+瀄 > jié; #7004
+瀅 > yìng; #7005
+瀆 > dú; #7006
+瀇 > wăng; #7007
+瀈 > hūi; #7008
+瀉 > xiè; #7009
+瀊 > pán; #700A
+瀋 > shĕn; #700B
+瀌 > biāo; #700C
+瀍 > chán; #700D
+瀎 > mò; #700E
+瀏 > líu; #700F
+瀐 > jiān; #7010
+瀑 > pù; #7011
+瀒 > sè; #7012
+瀓 > chéng; #7013
+瀔 > gŭ; #7014
+瀕 > bīn; #7015
+瀖 > hùo; #7016
+瀗 > xiàn; #7017
+瀘 > lú; #7018
+瀙 > qīn; #7019
+瀚 > hàn; #701A
+瀛 > yíng; #701B
+瀜 > yōng; #701C
+瀝 > lì; #701D
+瀞 > jìng; #701E
+瀟 > xiāo; #701F
+瀠 > yíng; #7020
+瀡 > sŭi; #7021
+瀢 > wéi; #7022
+瀣 > xiè; #7023
+瀤 > huái; #7024
+瀥 > hào; #7025
+瀦 > zhū; #7026
+瀧 > lóng; #7027
+瀨 > lài; #7028
+瀩 > dùi; #7029
+瀪 > fán; #702A
+瀫 > hú; #702B
+瀬 > lài; #702C
+瀯 > yíng; #702F
+瀰 > mí; #7030
+瀱 > jì; #7031
+瀲 > liàn; #7032
+瀳 > jiàn; #7033
+瀴 > yĭng; #7034
+瀵 > fèn; #7035
+瀶 > lín; #7036
+瀷 > yì; #7037
+瀸 > jiān; #7038
+瀹 > yuè; #7039
+瀺 > chán; #703A
+瀻 > dài; #703B
+瀼 > ráng; #703C
+瀽 > jiăn; #703D
+瀾 > lán; #703E
+瀿 > fán; #703F
+灀 > shuàng; #7040
+灁 > yuān; #7041
+灂 > zhúo; #7042
+灃 > fēng; #7043
+灄 > shè; #7044
+灅 > lĕi; #7045
+灆 > lán; #7046
+灇 > cóng; #7047
+灈 > qú; #7048
+灉 > yōng; #7049
+灊 > qián; #704A
+灋 > fă; #704B
+灌 > guàn; #704C
+灍 > què; #704D
+灎 > yàn; #704E
+灏 > hào; #704F
+灑 > să; #7051
+灒 > zàn; #7052
+灓 > luán; #7053
+灔 > yàn; #7054
+灕 > lí; #7055
+灖 > mĭ; #7056
+灗 > shàn; #7057
+灘 > tān; #7058
+灙 > dăng; #7059
+灚 > jiăo; #705A
+灛 > chăn; #705B
+灝 > hào; #705D
+灞 > bà; #705E
+灟 > zhú; #705F
+灠 > lăn; #7060
+灡 > lán; #7061
+灢 > năng; #7062
+灣 > wān; #7063
+灤 > luán; #7064
+灥 > xún; #7065
+灦 > xiăn; #7066
+灧 > yàn; #7067
+灨 > găn; #7068
+灩 > yàn; #7069
+灪 > yù; #706A
+火 > hŭo; #706B
+灬 > sì' 'diăn' 'hŭo; #706C
+灭 > miè; #706D
+灮 > guāng; #706E
+灯 > dēng; #706F
+灰 > hūi; #7070
+灱 > xiāo; #7071
+灲 > xiāo; #7072
+灳 > hū1; #7073
+灴 > hóng; #7074
+灵 > líng; #7075
+灶 > zào; #7076
+灷 > zhuàn; #7077
+灸 > jĭu; #7078
+灹 > zhà; #7079
+灺 > xiè; #707A
+灻 > chì; #707B
+灼 > zhúo; #707C
+災 > zāi; #707D
+灾 > zāi; #707E
+灿 > càn; #707F
+炀 > yáng; #7080
+炁 > qì; #7081
+炂 > zhōng; #7082
+炃 > fén; #7083
+炄 > nĭu; #7084
+炅 > jĭong; #7085
+炆 > wén; #7086
+炇 > pò; #7087
+炈 > yì; #7088
+炉 > lú; #7089
+炊 > chūi; #708A
+炋 > pī; #708B
+炌 > kài; #708C
+炍 > pàn; #708D
+炎 > yán; #708E
+炏 > kài; #708F
+炐 > pàng; #7090
+炑 > mù; #7091
+炒 > chăo; #7092
+炓 > liào; #7093
+炔 > gùi; #7094
+炕 > kàng; #7095
+炖 > tūn; #7096
+炗 > guāng; #7097
+炘 > xīn; #7098
+炙 > zhì; #7099
+炚 > guang; #709A
+炛 > guāng; #709B
+炜 > wĕi; #709C
+炝 > qiàng; #709D
+炟 > dá; #709F
+炠 > xiá; #70A0
+炡 > zhēng; #70A1
+炢 > zhú; #70A2
+炣 > kĕ; #70A3
+炤 > zhào; #70A4
+炥 > fú; #70A5
+炦 > bá; #70A6
+炧 > dùo; #70A7
+炨 > dùo; #70A8
+炩 > lìng; #70A9
+炪 > zhúo; #70AA
+炫 > xuàn; #70AB
+炬 > jù; #70AC
+炭 > tàn; #70AD
+炮 > pào; #70AE
+炯 > jĭong; #70AF
+炰 > páo; #70B0
+炱 > tái; #70B1
+炲 > tái; #70B2
+炳 > bĭng; #70B3
+炴 > yăng; #70B4
+炵 > tōng; #70B5
+炶 > hān; #70B6
+炷 > zhù; #70B7
+炸 > zhà; #70B8
+点 > diăn; #70B9
+為 > wèi; #70BA
+炻 > shí; #70BB
+炼 > liàn; #70BC
+炽 > chì; #70BD
+炾 > huăng; #70BE
+烀 > hū; #70C0
+烁 > shùo; #70C1
+烂 > làn; #70C2
+烃 > jĭng; #70C3
+烄 > jiăo; #70C4
+烅 > xù; #70C5
+烆 > xíng; #70C6
+烇 > quàn; #70C7
+烈 > liè; #70C8
+烉 > huàn; #70C9
+烊 > yáng; #70CA
+烋 > xiāo; #70CB
+烌 > xīu; #70CC
+烍 > xiăn; #70CD
+烎 > yín; #70CE
+烏 > wū; #70CF
+烐 > zhōu; #70D0
+烑 > yáo; #70D1
+烒 > shì; #70D2
+烓 > wēi; #70D3
+烔 > tóng; #70D4
+烕 > xuè; #70D5
+烖 > zāi; #70D6
+烗 > kài; #70D7
+烘 > hōng; #70D8
+烙 > lùo; #70D9
+烚 > xiá; #70DA
+烛 > zhú; #70DB
+烜 > xuăn; #70DC
+烝 > zhēng; #70DD
+烞 > pò; #70DE
+烟 > yān; #70DF
+烠 > hŭi; #70E0
+烡 > guāng; #70E1
+烢 > zhè; #70E2
+烣 > hūi; #70E3
+烤 > kăo; #70E4
+烦 > fán; #70E6
+烧 > shāo; #70E7
+烨 > yè; #70E8
+烩 > hùi; #70E9
+烫 > tàng; #70EB
+烬 > jìn; #70EC
+热 > rè; #70ED
+烯 > xī; #70EF
+烰 > fú; #70F0
+烱 > jĭong; #70F1
+烲 > chè; #70F2
+烳 > pŭ; #70F3
+烴 > jĭng; #70F4
+烵 > zhúo; #70F5
+烶 > tĭng; #70F6
+烷 > wán; #70F7
+烸 > hăi; #70F8
+烹 > pēng; #70F9
+烺 > lăng; #70FA
+烻 > shān; #70FB
+烼 > hū; #70FC
+烽 > fēng; #70FD
+烾 > chì; #70FE
+烿 > róng; #70FF
+焀 > hú; #7100
+焁 > xi; #7101
+焂 > shú; #7102
+焃 > hè; #7103
+焄 > xūn; #7104
+焅 > kù; #7105
+焆 > jué; #7106
+焇 > xiāo; #7107
+焈 > xī; #7108
+焉 > yān; #7109
+焊 > hàn; #710A
+焋 > zhuàng; #710B
+焌 > jùn; #710C
+焍 > dì; #710D
+焎 > xiè; #710E
+焏 > jí; #710F
+焐 > wù; #7110
+焓 > hán; #7113
+焔 > yàn; #7114
+焕 > huàn; #7115
+焖 > mèn; #7116
+焗 > jú; #7117
+焘 > chóu; #7118
+焙 > bèi; #7119
+焚 > fén; #711A
+焛 > lìn; #711B
+焜 > kūn; #711C
+焝 > hùn; #711D
+焞 > tūn; #711E
+焟 > xí; #711F
+焠 > cùi; #7120
+無 > wú; #7121
+焢 > hōng; #7122
+焣 > jù; #7123
+焤 > fŭ; #7124
+焥 > wò; #7125
+焦 > jiāo; #7126
+焧 > cōng; #7127
+焨 > fèng; #7128
+焩 > pīng; #7129
+焪 > qīong; #712A
+焫 > rùo; #712B
+焬 > xí; #712C
+焭 > qíong; #712D
+焮 > xìn; #712E
+焯 > zhúo; #712F
+焰 > yàn; #7130
+焱 > yàn; #7131
+焲 > yì; #7132
+焳 > jué; #7133
+焴 > yù; #7134
+焵 > gàng; #7135
+然 > rán; #7136
+焷 > pí; #7137
+焸 > gŭ; #7138
+焺 > shēng; #713A
+焻 > chàng; #713B
+焼 > shāo; #713C
+煁 > chén; #7141
+煂 > hè; #7142
+煃 > kŭi; #7143
+煄 > zhōng; #7144
+煅 > duàn; #7145
+煆 > xiā; #7146
+煇 > hūi; #7147
+煈 > fèng; #7148
+煉 > liàn; #7149
+煊 > xuān; #714A
+煋 > xīng; #714B
+煌 > huáng; #714C
+煍 > jiăo; #714D
+煎 > jiān; #714E
+煏 > bì; #714F
+煐 > yīng; #7150
+煑 > zhŭ; #7151
+煒 > wĕi; #7152
+煓 > tuān; #7153
+煔 > tiàn; #7154
+煕 > xī; #7155
+煖 > nuăn; #7156
+煗 > nuăn; #7157
+煘 > chán; #7158
+煙 > yān; #7159
+煚 > jĭong; #715A
+煛 > jĭong; #715B
+煜 > yù; #715C
+煝 > mèi; #715D
+煞 > shà; #715E
+煟 > wèi; #715F
+煠 > yè; #7160
+煡 > xìn; #7161
+煢 > qíong; #7162
+煣 > rŏu; #7163
+煤 > méi; #7164
+煥 > huàn; #7165
+煦 > xŭ; #7166
+照 > zhào; #7167
+煨 > wēi; #7168
+煩 > fán; #7169
+煪 > qíu; #716A
+煫 > sùi; #716B
+煬 > yáng; #716C
+煭 > liè; #716D
+煮 > zhŭ; #716E
+煯 > jie; #716F
+煰 > gào; #7170
+煱 > guā; #7171
+煲 > bào; #7172
+煳 > hú; #7173
+煴 > yūn; #7174
+煵 > xiā; #7175
+煸 > biān; #7178
+煹 > gòu; #7179
+煺 > tùi; #717A
+煻 > táng; #717B
+煼 > chăo; #717C
+煽 > shān; #717D
+煾 > n; #717E
+煿 > bó; #717F
+熀 > huăng; #7180
+熁 > xié; #7181
+熂 > xì; #7182
+熃 > wù; #7183
+熄 > xí; #7184
+熅 > yún; #7185
+熆 > hé; #7186
+熇 > hè; #7187
+熈 > xī; #7188
+熉 > yún; #7189
+熊 > xíong; #718A
+熋 > nái; #718B
+熌 > shàn; #718C
+熍 > qiong; #718D
+熎 > yào; #718E
+熏 > xūn; #718F
+熐 > mì; #7190
+熑 > lián; #7191
+熒 > yíng; #7192
+熓 > wèn; #7193
+熔 > róng; #7194
+熗 > qiàng; #7197
+熘 > līu; #7198
+熙 > xī; #7199
+熚 > bì; #719A
+熛 > biāo; #719B
+熜 > zŏng; #719C
+熝 > lù; #719D
+熞 > jiān; #719E
+熟 > shóu; #719F
+熠 > yì; #71A0
+熡 > lóu; #71A1
+熢 > fēng; #71A2
+熣 > sūi; #71A3
+熤 > yì; #71A4
+熥 > tōng; #71A5
+熦 > jué; #71A6
+熧 > zōng; #71A7
+熨 > yùn; #71A8
+熩 > hù; #71A9
+熪 > yí; #71AA
+熫 > zhì; #71AB
+熬 > áo; #71AC
+熭 > wèi; #71AD
+熮 > liáo; #71AE
+熯 > hàn; #71AF
+熰 > ōu; #71B0
+熱 > rè; #71B1
+熲 > jĭong; #71B2
+熳 > màn; #71B3
+熵 > shāng; #71B5
+熶 > cuàn; #71B6
+熷 > zēng; #71B7
+熸 > jiān; #71B8
+熹 > xī; #71B9
+熺 > xī; #71BA
+熻 > xī; #71BB
+熼 > yì; #71BC
+熽 > xiào; #71BD
+熾 > chì; #71BE
+熿 > huáng; #71BF
+燀 > chăn; #71C0
+燁 > yè; #71C1
+燂 > qián; #71C2
+燃 > rán; #71C3
+燄 > yàn; #71C4
+燅 > xián; #71C5
+燆 > qiáo; #71C6
+燇 > zùn; #71C7
+燈 > dēng; #71C8
+燉 > dùn; #71C9
+燊 > shēn; #71CA
+燋 > jiāo; #71CB
+燌 > fén; #71CC
+燍 > sī; #71CD
+燎 > liào; #71CE
+燏 > yù; #71CF
+燐 > lín; #71D0
+燑 > tóng; #71D1
+燒 > shāo; #71D2
+燓 > fēn; #71D3
+燔 > fán; #71D4
+燕 > yàn; #71D5
+燖 > xún; #71D6
+燗 > làn; #71D7
+燘 > mĕi; #71D8
+燙 > tàng; #71D9
+燚 > yī; #71DA
+燛 > jĭng; #71DB
+燜 > mèn; #71DC
+營 > yíng; #71DF
+燠 > yù; #71E0
+燡 > yì; #71E1
+燢 > xué; #71E2
+燣 > lán; #71E3
+燤 > tài; #71E4
+燥 > zào; #71E5
+燦 > càn; #71E6
+燧 > sùi; #71E7
+燨 > xī; #71E8
+燩 > què; #71E9
+燪 > cōng; #71EA
+燫 > lián; #71EB
+燬 > hŭi; #71EC
+燭 > zhú; #71ED
+燮 > xiè; #71EE
+燯 > líng; #71EF
+燰 > wēi; #71F0
+燱 > yì; #71F1
+燲 > xié; #71F2
+燳 > zhào; #71F3
+燴 > hùi; #71F4
+燷 > lán; #71F7
+燸 > rú; #71F8
+燹 > xiăn; #71F9
+燺 > kăo; #71FA
+燻 > xūn; #71FB
+燼 > jìn; #71FC
+燽 > chóu; #71FD
+燾 > chóu; #71FE
+燿 > yào; #71FF
+爀 > hè; #7200
+爁 > làn; #7201
+爂 > biāo; #7202
+爃 > róng; #7203
+爄 > lì; #7204
+爅 > mò; #7205
+爆 > bào; #7206
+爇 > rùo; #7207
+爈 > lǘ; #7208
+爉 > là; #7209
+爊 > áo; #720A
+爋 > xùn; #720B
+爌 > kuàng; #720C
+爍 > shùo; #720D
+爏 > lì; #720F
+爐 > lú; #7210
+爑 > jué; #7211
+爒 > liào; #7212
+爓 > yàn; #7213
+爔 > xī; #7214
+爕 > xiè; #7215
+爖 > lóng; #7216
+爗 > yè; #7217
+爙 > răng; #7219
+爚 > yuè; #721A
+爛 > làn; #721B
+爜 > cóng; #721C
+爝 > jué; #721D
+爞 > tóng; #721E
+爟 > guàn; #721F
+爡 > chè; #7221
+爢 > mí; #7222
+爣 > tăng; #7223
+爤 > làn; #7224
+爥 > zhú; #7225
+爧 > líng; #7227
+爨 > cuàn; #7228
+爩 > yù; #7229
+爪 > zhuă; #722A
+爬 > pá; #722C
+爭 > zhēng; #722D
+爮 > páo; #722E
+爯 > chēng; #722F
+爰 > yuán; #7230
+爱 > ài; #7231
+爲 > wèi; #7232
+爴 > jué; #7234
+爵 > jué; #7235
+父 > fù; #7236
+爷 > yé; #7237
+爸 > bà; #7238
+爹 > diē; #7239
+爺 > yé; #723A
+爻 > yáo; #723B
+爼 > zŭ; #723C
+爽 > shuăng; #723D
+爾 > ĕr; #723E
+爿 > qiáng; #723F
+牀 > chuáng; #7240
+牁 > gē; #7241
+牂 > zāng; #7242
+牃 > dié; #7243
+牄 > qiāng; #7244
+牅 > yóng; #7245
+牆 > qiáng; #7246
+片 > piàn; #7247
+版 > băn; #7248
+牉 > pàn; #7249
+牊 > sháo; #724A
+牋 > jiān; #724B
+牌 > pái; #724C
+牍 > dú; #724D
+牎 > chuāng; #724E
+牏 > tóu; #724F
+牐 > zhá; #7250
+牑 > biān; #7251
+牒 > dié; #7252
+牓 > băng; #7253
+牔 > bó; #7254
+牕 > chuāng; #7255
+牖 > yŏu; #7256
+牘 > dú; #7258
+牙 > yá; #7259
+牚 > chèng; #725A
+牛 > níu; #725B
+牝 > pìn; #725D
+牞 > jīu; #725E
+牟 > móu; #725F
+牠 > tūo; #7260
+牡 > mŭ; #7261
+牢 > láo; #7262
+牣 > rèn; #7263
+牤 > máng; #7264
+牥 > fāng; #7265
+牦 > máo; #7266
+牧 > mù; #7267
+牨 > gāng; #7268
+物 > wù; #7269
+牪 > yàn; #726A
+牫 > gē; #726B
+牬 > bèi; #726C
+牭 > sì; #726D
+牮 > jiàn; #726E
+牯 > gŭ; #726F
+牰 > yòu; #7270
+牱 > gē; #7271
+牲 > shēng; #7272
+牳 > mŭ; #7273
+牴 > dĭ; #7274
+牵 > qiān; #7275
+牶 > quàn; #7276
+牷 > quán; #7277
+牸 > zì; #7278
+特 > tè; #7279
+牺 > xī; #727A
+牻 > máng; #727B
+牼 > kēng; #727C
+牽 > qiān; #727D
+牾 > wú; #727E
+牿 > gù; #727F
+犀 > xī; #7280
+犁 > lí; #7281
+犂 > lí; #7282
+犃 > pŏu; #7283
+犄 > jī; #7284
+犅 > gāng; #7285
+犆 > zhí; #7286
+犇 > bēn; #7287
+犈 > quán; #7288
+犉 > rún; #7289
+犊 > dú; #728A
+犋 > jù; #728B
+犌 > jiā; #728C
+犍 > jiān; #728D
+犎 > fēng; #728E
+犏 > piān; #728F
+犐 > kē; #7290
+犑 > jú; #7291
+犒 > kào; #7292
+犓 > chú; #7293
+犔 > xì; #7294
+犕 > bèi; #7295
+犖 > lùo; #7296
+犗 > jiè; #7297
+犘 > má; #7298
+犙 > sān; #7299
+犚 > wèi; #729A
+犛 > lí; #729B
+犜 > dūn; #729C
+犝 > tóng; #729D
+犟 > jiàng; #729F
+犡 > lì; #72A1
+犢 > dú; #72A2
+犣 > liè; #72A3
+犤 > pí; #72A4
+犥 > piăo; #72A5
+犦 > bào; #72A6
+犧 > xī; #72A7
+犨 > chōu; #72A8
+犩 > wèi; #72A9
+犪 > kúi; #72AA
+犫 > chōu; #72AB
+犬 > quăn; #72AC
+犭 > făn' 'quăn' 'páng; #72AD
+犮 > bá; #72AE
+犯 > fàn; #72AF
+犰 > qíu; #72B0
+犱 > jĭ; #72B1
+犲 > cái; #72B2
+犳 > chúo; #72B3
+犴 > àn; #72B4
+犵 > jié; #72B5
+状 > zhuàng; #72B6
+犷 > guăng; #72B7
+犸 > mà; #72B8
+犹 > yóu; #72B9
+犺 > kàng; #72BA
+犻 > bó; #72BB
+犼 > hŏu; #72BC
+犽 > yá; #72BD
+犾 > yín; #72BE
+犿 > huān; #72BF
+狀 > zhuàng; #72C0
+狁 > yŭn; #72C1
+狂 > kuáng; #72C2
+狃 > nĭu; #72C3
+狄 > dí; #72C4
+狅 > qīng; #72C5
+狆 > zhòng; #72C6
+狇 > mù; #72C7
+狈 > bèi; #72C8
+狉 > pī; #72C9
+狊 > jú; #72CA
+狋 > ní; #72CB
+狌 > shēng; #72CC
+狍 > páo; #72CD
+狎 > xiá; #72CE
+狏 > túo; #72CF
+狐 > hú; #72D0
+狑 > líng; #72D1
+狒 > fèi; #72D2
+狓 > pī; #72D3
+狔 > nĭ; #72D4
+狕 > ăo; #72D5
+狖 > yòu; #72D6
+狗 > gŏu; #72D7
+狘 > yuè; #72D8
+狙 > jū; #72D9
+狚 > dàn; #72DA
+狛 > pò; #72DB
+狜 > gŭ; #72DC
+狝 > xiăn; #72DD
+狞 > níng; #72DE
+狟 > huán; #72DF
+狠 > hĕn; #72E0
+狡 > jiăo; #72E1
+狢 > hé; #72E2
+狣 > zhào; #72E3
+狤 > jí; #72E4
+狥 > xùn; #72E5
+狦 > shān; #72E6
+狧 > tà; #72E7
+狨 > róng; #72E8
+狩 > shòu; #72E9
+狪 > tōng; #72EA
+狫 > lăo; #72EB
+独 > dú; #72EC
+狭 > xiá; #72ED
+狮 > shī; #72EE
+狯 > huá; #72EF
+狰 > zhēng; #72F0
+狱 > yù; #72F1
+狲 > sūn; #72F2
+狳 > yú; #72F3
+狴 > bì; #72F4
+狵 > máng; #72F5
+狶 > xĭ; #72F6
+狷 > juàn; #72F7
+狸 > lí; #72F8
+狹 > xiá; #72F9
+狺 > yín; #72FA
+狻 > suān; #72FB
+狼 > láng; #72FC
+狽 > bèi; #72FD
+狾 > zhì; #72FE
+狿 > yán; #72FF
+猀 > shā; #7300
+猁 > lì; #7301
+猂 > hàn; #7302
+猃 > xiăn; #7303
+猄 > jīng; #7304
+猅 > pái; #7305
+猆 > fēi; #7306
+猇 > yáo; #7307
+猈 > bà; #7308
+猉 > qí; #7309
+猊 > ní; #730A
+猋 > biāo; #730B
+猌 > yìn; #730C
+猍 > lái; #730D
+猎 > xí; #730E
+猏 > jiān; #730F
+猐 > qiāng; #7310
+猑 > kūn; #7311
+猒 > yān; #7312
+猓 > gŭo; #7313
+猔 > zòng; #7314
+猕 > mí; #7315
+猖 > chāng; #7316
+猗 > yī; #7317
+猘 > zhì; #7318
+猙 > zhēng; #7319
+猚 > yá; #731A
+猛 > mĕng; #731B
+猜 > cāi; #731C
+猝 > cù; #731D
+猞 > shè; #731E
+猡 > lúo; #7321
+猢 > hú; #7322
+猣 > zōng; #7323
+猤 > jì; #7324
+猥 > wĕi; #7325
+猦 > fēng; #7326
+猧 > wō; #7327
+猨 > yuán; #7328
+猩 > xīng; #7329
+猪 > zhū; #732A
+猫 > māo; #732B
+猬 > wèi; #732C
+猭 > yuán; #732D
+献 > xiàn; #732E
+猯 > tuān; #732F
+猰 > yà; #7330
+猱 > náo; #7331
+猲 > xiē; #7332
+猳 > jiā; #7333
+猴 > hóu; #7334
+猵 > biān; #7335
+猶 > yóu; #7336
+猷 > yóu; #7337
+猸 > méi; #7338
+猹 > zhā; #7339
+猺 > yáo; #733A
+猻 > sūn; #733B
+猼 > bó; #733C
+猽 > míng; #733D
+猾 > huá; #733E
+猿 > yuán; #733F
+獀 > sōu; #7340
+獁 > mà; #7341
+獂 > yuán; #7342
+獃 > dāi; #7343
+獄 > yù; #7344
+獅 > shī; #7345
+獆 > háo; #7346
+獈 > yì; #7348
+獉 > zhēn; #7349
+獊 > chuàng; #734A
+獋 > háo; #734B
+獌 > màn; #734C
+獍 > jìng; #734D
+獎 > jiăng; #734E
+獏 > mú; #734F
+獐 > zhāng; #7350
+獑 > chán; #7351
+獒 > áo; #7352
+獓 > áo; #7353
+獔 > háo; #7354
+獕 > cūi; #7355
+獖 > fén; #7356
+獗 > jué; #7357
+獘 > bì; #7358
+獙 > bì; #7359
+獚 > huáng; #735A
+獛 > pú; #735B
+獜 > lín; #735C
+獝 > yù; #735D
+獞 > tóng; #735E
+獟 > yào; #735F
+獠 > liáo; #7360
+獡 > shùo; #7361
+獢 > xiāo; #7362
+獥 > xí; #7365
+獦 > gé; #7366
+獧 > juàn; #7367
+獨 > dú; #7368
+獩 > hùi; #7369
+獪 > kuài; #736A
+獫 > xiăn; #736B
+獬 > xiè; #736C
+獭 > tà; #736D
+獮 > xiăn; #736E
+獯 > xūn; #736F
+獰 > níng; #7370
+獱 > pín; #7371
+獲 > hùo; #7372
+獳 > nòu; #7373
+獴 > méng; #7374
+獵 > liè; #7375
+獶 > náo; #7376
+獷 > guăng; #7377
+獸 > shòu; #7378
+獹 > lú; #7379
+獺 > tà; #737A
+獻 > xiàn; #737B
+獼 > mí; #737C
+獽 > ráng; #737D
+獾 > huān; #737E
+獿 > náo; #737F
+玀 > lúo; #7380
+玁 > xiăn; #7381
+玂 > qí; #7382
+玃 > jué; #7383
+玄 > xuán; #7384
+玅 > miào; #7385
+玆 > zī; #7386
+率 > lǜ; #7387
+玈 > lú; #7388
+玉 > yù; #7389
+玊 > sù; #738A
+王 > wáng; #738B
+玌 > qíu; #738C
+玍 > gă; #738D
+玎 > dīng; #738E
+玏 > lè; #738F
+玐 > bā; #7390
+玑 > jī; #7391
+玒 > hóng; #7392
+玓 > dì; #7393
+玔 > quàn; #7394
+玕 > gān; #7395
+玖 > jĭu; #7396
+玗 > yú; #7397
+玘 > jĭ; #7398
+玙 > yú; #7399
+玚 > yáng; #739A
+玛 > mă; #739B
+玜 > gōng; #739C
+玝 > wŭ; #739D
+玞 > fū; #739E
+玟 > wén; #739F
+玠 > jiè; #73A0
+玡 > yà; #73A1
+玢 > fén; #73A2
+玣 > biàn; #73A3
+玤 > bĕng; #73A4
+玥 > yuè; #73A5
+玦 > jué; #73A6
+玧 > yŭn; #73A7
+玨 > jué; #73A8
+玩 > wán; #73A9
+玪 > jiān; #73AA
+玫 > méi; #73AB
+玬 > dăn; #73AC
+玭 > pí; #73AD
+玮 > wĕi; #73AE
+环 > huán; #73AF
+现 > xiàn; #73B0
+玱 > qiāng; #73B1
+玲 > líng; #73B2
+玳 > dài; #73B3
+玴 > yì; #73B4
+玵 > án; #73B5
+玶 > píng; #73B6
+玷 > diàn; #73B7
+玸 > fú; #73B8
+玹 > xuán; #73B9
+玺 > xĭ; #73BA
+玻 > bō; #73BB
+玼 > cĭ; #73BC
+玽 > gŏu; #73BD
+玾 > jiă; #73BE
+玿 > sháo; #73BF
+珀 > pò; #73C0
+珁 > cí; #73C1
+珂 > kē; #73C2
+珃 > răn; #73C3
+珄 > shēng; #73C4
+珅 > shēn; #73C5
+珆 > yí; #73C6
+珇 > zŭ; #73C7
+珈 > jiā; #73C8
+珉 > mín; #73C9
+珊 > shān; #73CA
+珋 > lĭu; #73CB
+珌 > bì; #73CC
+珍 > zhēn; #73CD
+珎 > zhēn; #73CE
+珏 > jué; #73CF
+珐 > fà; #73D0
+珑 > lóng; #73D1
+珒 > jīn; #73D2
+珓 > jiào; #73D3
+珔 > jiàn; #73D4
+珕 > lì; #73D5
+珖 > guāng; #73D6
+珗 > xiān; #73D7
+珘 > zhōu; #73D8
+珙 > gŏng; #73D9
+珚 > yān; #73DA
+珛 > xìu; #73DB
+珜 > yáng; #73DC
+珝 > xŭ; #73DD
+珞 > lùo; #73DE
+珟 > sù; #73DF
+珠 > zhū; #73E0
+珡 > qín; #73E1
+珢 > kèn; #73E2
+珣 > xún; #73E3
+珤 > băo; #73E4
+珥 > ĕr; #73E5
+珦 > xiàng; #73E6
+珧 > yáo; #73E7
+珨 > xiá; #73E8
+珩 > héng; #73E9
+珪 > gūi; #73EA
+珫 > chōng; #73EB
+珬 > xù; #73EC
+班 > bān; #73ED
+珮 > pèi; #73EE
+珰 > dāng; #73F0
+珲 > hún; #73F2
+珳 > wén; #73F3
+珴 > é; #73F4
+珵 > chéng; #73F5
+珶 > tí; #73F6
+珷 > wŭ; #73F7
+珸 > wú; #73F8
+珹 > chéng; #73F9
+珺 > jùn; #73FA
+珻 > méi; #73FB
+珼 > bèi; #73FC
+珽 > tĭng; #73FD
+現 > xiàn; #73FE
+珿 > chùo; #73FF
+琀 > hán; #7400
+琁 > xuan; #7401
+琂 > yán; #7402
+球 > qíu; #7403
+琄 > quăn; #7404
+琅 > láng; #7405
+理 > lĭ; #7406
+琇 > xìu; #7407
+琈 > fú; #7408
+琉 > líu; #7409
+琊 > yé; #740A
+琋 > xī; #740B
+琌 > líng; #740C
+琍 > lì; #740D
+琎 > jìn; #740E
+琏 > lián; #740F
+琐 > sŭo; #7410
+琓 > wán; #7413
+琔 > diàn; #7414
+琕 > pín; #7415
+琖 > zhăn; #7416
+琗 > cùi; #7417
+琘 > mín; #7418
+琙 > yù; #7419
+琚 > jū; #741A
+琛 > chēn; #741B
+琜 > lái; #741C
+琝 > wén; #741D
+琞 > shèng; #741E
+琟 > wéi; #741F
+琠 > diăn; #7420
+琡 > chù; #7421
+琢 > zhúo; #7422
+琣 > pĕi; #7423
+琤 > chēng; #7424
+琥 > hŭ; #7425
+琦 > qí; #7426
+琧 > è; #7427
+琨 > kūn; #7428
+琩 > chāng; #7429
+琪 > qí; #742A
+琫 > bĕng; #742B
+琬 > wăn; #742C
+琭 > lù; #742D
+琮 > cóng; #742E
+琯 > guăn; #742F
+琰 > yăn; #7430
+琱 > diāo; #7431
+琲 > bèi; #7432
+琳 > lín; #7433
+琴 > qín; #7434
+琵 > pí; #7435
+琶 > pá; #7436
+琷 > què; #7437
+琸 > zhúo; #7438
+琹 > qín; #7439
+琺 > fà; #743A
+琼 > qíong; #743C
+琽 > dŭ; #743D
+琾 > jiè; #743E
+琿 > hún; #743F
+瑀 > yŭ; #7440
+瑁 > mào; #7441
+瑂 > méi; #7442
+瑃 > chun; #7443
+瑄 > xuān; #7444
+瑅 > tí; #7445
+瑆 > xīng; #7446
+瑇 > dài; #7447
+瑈 > róu; #7448
+瑉 > mín; #7449
+瑊 > zhēn; #744A
+瑋 > wĕi; #744B
+瑌 > ruăn; #744C
+瑍 > huàn; #744D
+瑎 > jiē; #744E
+瑏 > chuān; #744F
+瑐 > jiăn; #7450
+瑑 > zhuàn; #7451
+瑒 > yáng; #7452
+瑓 > liàn; #7453
+瑔 > quán; #7454
+瑕 > xiá; #7455
+瑖 > duàn; #7456
+瑗 > yuàn; #7457
+瑘 > yé; #7458
+瑙 > năo; #7459
+瑚 > hú; #745A
+瑛 > yīng; #745B
+瑜 > yú; #745C
+瑝 > huáng; #745D
+瑞 > rùi; #745E
+瑟 > sè; #745F
+瑠 > líu; #7460
+瑡 > shi; #7461
+瑢 > róng; #7462
+瑣 > sŭo; #7463
+瑤 > yáo; #7464
+瑥 > wēn; #7465
+瑦 > wū; #7466
+瑧 > jīn; #7467
+瑨 > jìn; #7468
+瑩 > yíng; #7469
+瑪 > mă; #746A
+瑫 > tāo; #746B
+瑬 > líu; #746C
+瑭 > táng; #746D
+瑮 > lì; #746E
+瑯 > láng; #746F
+瑰 > gūi; #7470
+瑱 > zhèn; #7471
+瑲 > qiāng; #7472
+瑳 > cŭo; #7473
+瑴 > jué; #7474
+瑵 > zhăo; #7475
+瑶 > yáo; #7476
+瑷 > ài; #7477
+瑸 > bīn; #7478
+瑹 > tú; #7479
+瑺 > cháng; #747A
+瑻 > kūn; #747B
+瑼 > zhuān; #747C
+瑽 > cōng; #747D
+瑾 > jĭn; #747E
+瑿 > yī; #747F
+璀 > cŭi; #7480
+璁 > cōng; #7481
+璂 > qí; #7482
+璃 > lí; #7483
+璄 > yĭng; #7484
+璅 > sŭo; #7485
+璆 > qíu; #7486
+璇 > xuán; #7487
+璈 > áo; #7488
+璉 > lián; #7489
+璊 > mán; #748A
+璋 > zhāng; #748B
+璌 > yín; #748C
+璎 > yīng; #748E
+璏 > zhì; #748F
+璐 > lù; #7490
+璑 > wú; #7491
+璒 > dēng; #7492
+璓 > xiòu; #7493
+璔 > zēng; #7494
+璕 > xún; #7495
+璖 > qú; #7496
+璗 > dàng; #7497
+璘 > lín; #7498
+璙 > liáo; #7499
+璚 > qíong; #749A
+璛 > sù; #749B
+璜 > huáng; #749C
+璝 > gūi; #749D
+璞 > pú; #749E
+璟 > jĭng; #749F
+璠 > fán; #74A0
+璡 > jìn; #74A1
+璢 > líu; #74A2
+璣 > jī; #74A3
+璥 > jĭng; #74A5
+璦 > ài; #74A6
+璧 > bì; #74A7
+璨 > càn; #74A8
+璩 > qú; #74A9
+璪 > zăo; #74AA
+璫 > dāng; #74AB
+璬 > jiăo; #74AC
+璭 > gùn; #74AD
+璮 > tăn; #74AE
+璯 > hùi; #74AF
+環 > huán; #74B0
+璱 > sè; #74B1
+璲 > sùi; #74B2
+璳 > tián; #74B3
+璵 > yú; #74B5
+璶 > jìn; #74B6
+璷 > lú; #74B7
+璸 > bīn; #74B8
+璹 > shòu; #74B9
+璺 > wèn; #74BA
+璻 > zŭi; #74BB
+璼 > lán; #74BC
+璽 > xĭ; #74BD
+璾 > jì; #74BE
+璿 > xuán; #74BF
+瓀 > ruăn; #74C0
+瓁 > hùo; #74C1
+瓂 > gài; #74C2
+瓃 > léi; #74C3
+瓄 > dú; #74C4
+瓅 > lì; #74C5
+瓆 > zhí; #74C6
+瓇 > róu; #74C7
+瓈 > lí; #74C8
+瓉 > zàn; #74C9
+瓊 > qíong; #74CA
+瓋 > zhé; #74CB
+瓌 > gūi; #74CC
+瓍 > sùi; #74CD
+瓎 > là; #74CE
+瓏 > lóng; #74CF
+瓐 > lú; #74D0
+瓑 > lì; #74D1
+瓒 > zàn; #74D2
+瓓 > làn; #74D3
+瓔 > yīng; #74D4
+瓕 > mí; #74D5
+瓖 > xiāng; #74D6
+瓗 > xī; #74D7
+瓘 > guàn; #74D8
+瓙 > dào; #74D9
+瓚 > zàn; #74DA
+瓛 > huán; #74DB
+瓜 > guā; #74DC
+瓝 > bó; #74DD
+瓞 > dié; #74DE
+瓟 > báo; #74DF
+瓠 > hù; #74E0
+瓡 > zhí; #74E1
+瓢 > piáo; #74E2
+瓣 > bàn; #74E3
+瓤 > ráng; #74E4
+瓥 > lì; #74E5
+瓦 > wă; #74E6
+瓨 > jiāng; #74E8
+瓩 > qián' 'wă; #74E9
+瓪 > făn; #74EA
+瓫 > pén; #74EB
+瓬 > făng; #74EC
+瓭 > dăn; #74ED
+瓮 > wèng; #74EE
+瓯 > ōu; #74EF
+瓳 > hú; #74F3
+瓴 > líng; #74F4
+瓵 > yí; #74F5
+瓶 > píng; #74F6
+瓷 > cí; #74F7
+瓹 > juàn; #74F9
+瓺 > cháng; #74FA
+瓻 > chī; #74FB
+瓽 > dàng; #74FD
+瓾 > mĕng; #74FE
+瓿 > pŏu; #74FF
+甀 > zhùi; #7500
+甁 > píng; #7501
+甂 > biān; #7502
+甃 > zhòu; #7503
+甄 > zhēn; #7504
+甆 > cí; #7506
+甇 > yīng; #7507
+甈 > qì; #7508
+甉 > xián; #7509
+甊 > lŏu; #750A
+甋 > dì; #750B
+甌 > ōu; #750C
+甍 > méng; #750D
+甎 > zhuān; #750E
+甏 > pèng; #750F
+甐 > lín; #7510
+甑 > zèng; #7511
+甒 > wŭ; #7512
+甓 > pì; #7513
+甔 > dān; #7514
+甕 > wèng; #7515
+甖 > yīng; #7516
+甗 > yăn; #7517
+甘 > gān; #7518
+甙 > dài; #7519
+甚 > shén; #751A
+甛 > tián; #751B
+甜 > tián; #751C
+甝 > hān; #751D
+甞 > cháng; #751E
+生 > shēng; #751F
+甠 > qíng; #7520
+甡 > shēng; #7521
+產 > chăn; #7522
+産 > chăn; #7523
+甤 > rúi; #7524
+甥 > shēng; #7525
+甦 > sū; #7526
+甧 > sēn; #7527
+用 > yòng; #7528
+甩 > shuăi; #7529
+甪 > lù; #752A
+甫 > fŭ; #752B
+甬 > yŏng; #752C
+甭 > béng; #752D
+甮 > fèng; #752E
+甯 > níng; #752F
+田 > tián; #7530
+由 > yóu; #7531
+甲 > jiă; #7532
+申 > shēn; #7533
+甴 > zhá; #7534
+电 > diàn; #7535
+甶 > fú; #7536
+男 > nán; #7537
+甸 > diàn; #7538
+甹 > píng; #7539
+町 > tĭng; #753A
+画 > huà; #753B
+甼 > tĭng; #753C
+甽 > quăn; #753D
+甾 > zī; #753E
+甿 > méng; #753F
+畀 > bì; #7540
+畁 > qí; #7541
+畂 > lìu; #7542
+畃 > xún; #7543
+畄 > líu; #7544
+畅 > chàng; #7545
+畆 > mŭ; #7546
+畇 > yún; #7547
+畈 > fàn; #7548
+畉 > fú; #7549
+畊 > gēng; #754A
+畋 > tián; #754B
+界 > jiè; #754C
+畍 > jiè; #754D
+畎 > quăn; #754E
+畏 > wèi; #754F
+畐 > fú; #7550
+畑 > tián; #7551
+畒 > mŭ; #7552
+畔 > pàn; #7554
+畕 > jiāng; #7555
+畖 > wā; #7556
+畗 > dá; #7557
+畘 > nán; #7558
+留 > líu; #7559
+畚 > bĕn; #755A
+畛 > zhĕn; #755B
+畜 > chù; #755C
+畝 > mŭ; #755D
+畞 > mŭ; #755E
+畟 > cè; #755F
+畡 > gāi; #7561
+畢 > bì; #7562
+畣 > dá; #7563
+畤 > zhì; #7564
+略 > lǜe; #7565
+畦 > qí; #7566
+畧 > lǜe; #7567
+畨 > pān; #7568
+番 > fān; #756A
+畫 > huà; #756B
+畬 > yú; #756C
+畭 > yú; #756D
+畮 > mŭ; #756E
+畯 > jùn; #756F
+異 > yì; #7570
+畱 > líu; #7571
+畲 > yú; #7572
+畳 > dié; #7573
+畴 > chóu; #7574
+畵 > huà; #7575
+當 > dāng; #7576
+畷 > chùo; #7577
+畸 > jī; #7578
+畹 > wăn; #7579
+畺 > jiāng; #757A
+畻 > shéng; #757B
+畼 > chàng; #757C
+畽 > tuăn; #757D
+畾 > léi; #757E
+畿 > jī; #757F
+疀 > chā; #7580
+疁 > líu; #7581
+疃 > tuăn; #7583
+疄 > lín; #7584
+疅 > jiāng; #7585
+疆 > jiāng; #7586
+疇 > chóu; #7587
+疈 > bò; #7588
+疉 > dié; #7589
+疊 > dié; #758A
+疋 > pĭ; #758B
+疌 > niè; #758C
+疍 > dàn; #758D
+疎 > shū; #758E
+疏 > shū; #758F
+疐 > zhì; #7590
+疑 > yí; #7591
+疒 > chuáng; #7592
+疓 > năi; #7593
+疔 > dīng; #7594
+疕 > bĭ; #7595
+疖 > jié; #7596
+疗 > liáo; #7597
+疘 > gōng; #7598
+疙 > gē; #7599
+疚 > jìu; #759A
+疛 > zhŏu; #759B
+疜 > xià; #759C
+疝 > shàn; #759D
+疞 > xū; #759E
+疟 > nǜe; #759F
+疠 > lì; #75A0
+疡 > yáng; #75A1
+疢 > chèn; #75A2
+疣 > yóu; #75A3
+疤 > bā; #75A4
+疥 > jiè; #75A5
+疦 > jué; #75A6
+疧 > zhī; #75A7
+疨 > xiā; #75A8
+疩 > cùi; #75A9
+疪 > bì; #75AA
+疫 > yì; #75AB
+疬 > lì; #75AC
+疭 > zòng; #75AD
+疮 > chuāng; #75AE
+疯 > fēng; #75AF
+疰 > zhù; #75B0
+疱 > pào; #75B1
+疲 > pí; #75B2
+疳 > gān; #75B3
+疴 > kē; #75B4
+疵 > cī; #75B5
+疶 > xiè; #75B6
+疷 > qí; #75B7
+疸 > dăn; #75B8
+疹 > zhĕn; #75B9
+疺 > fá; #75BA
+疻 > zhĭ; #75BB
+疼 > téng; #75BC
+疽 > jū; #75BD
+疾 > jí; #75BE
+疿 > fèi; #75BF
+痀 > qú; #75C0
+痁 > diàn; #75C1
+痂 > jiā; #75C2
+痃 > xián; #75C3
+痄 > chá; #75C4
+病 > bìng; #75C5
+痆 > nì; #75C6
+症 > zhèng; #75C7
+痈 > yōng; #75C8
+痉 > jìng; #75C9
+痊 > quán; #75CA
+痋 > chóng; #75CB
+痌 > tōng; #75CC
+痍 > yí; #75CD
+痎 > kāi; #75CE
+痏 > wĕi; #75CF
+痐 > húi; #75D0
+痑 > dŭo; #75D1
+痒 > yăng; #75D2
+痓 > chì; #75D3
+痔 > zhì; #75D4
+痕 > hén; #75D5
+痖 > yă; #75D6
+痗 > mèi; #75D7
+痘 > dòu; #75D8
+痙 > jìng; #75D9
+痚 > xiāo; #75DA
+痛 > tòng; #75DB
+痜 > tū; #75DC
+痝 > máng; #75DD
+痞 > pĭ; #75DE
+痟 > xiāo; #75DF
+痠 > suān; #75E0
+痡 > pū; #75E1
+痢 > lì; #75E2
+痣 > zhì; #75E3
+痤 > cúo; #75E4
+痥 > dúo; #75E5
+痦 > wù; #75E6
+痧 > shā; #75E7
+痨 > láo; #75E8
+痩 > shòu; #75E9
+痪 > huàn; #75EA
+痫 > xián; #75EB
+痬 > yì; #75EC
+痭 > péng; #75ED
+痮 > zhàng; #75EE
+痯 > guăn; #75EF
+痰 > tán; #75F0
+痱 > fèi; #75F1
+痲 > má; #75F2
+痳 > lín; #75F3
+痴 > chī; #75F4
+痵 > jì; #75F5
+痶 > diăn; #75F6
+痷 > ān; #75F7
+痸 > chì; #75F8
+痹 > bì; #75F9
+痺 > bēi; #75FA
+痻 > mín; #75FB
+痼 > gū; #75FC
+痽 > dūi; #75FD
+痾 > ē; #75FE
+痿 > wĕi; #75FF
+瘀 > yū; #7600
+瘁 > cùi; #7601
+瘂 > yă; #7602
+瘃 > zhŭ; #7603
+瘄 > cù; #7604
+瘅 > dàn; #7605
+瘆 > shèn; #7606
+瘇 > zhŭng; #7607
+瘈 > jì; #7608
+瘉 > yù; #7609
+瘊 > hóu; #760A
+瘋 > fēng; #760B
+瘌 > là; #760C
+瘍 > yáng; #760D
+瘎 > shèn; #760E
+瘏 > tú; #760F
+瘐 > yŭ; #7610
+瘑 > guā; #7611
+瘒 > wén; #7612
+瘓 > huàn; #7613
+瘔 > kù; #7614
+瘕 > jiă; #7615
+瘖 > yīn; #7616
+瘗 > yì; #7617
+瘘 > lǘ; #7618
+瘙 > sāo; #7619
+瘚 > jué; #761A
+瘛 > chì; #761B
+瘜 > xí; #761C
+瘝 > guān; #761D
+瘞 > yì; #761E
+瘟 > wēn; #761F
+瘠 > jí; #7620
+瘡 > chuāng; #7621
+瘢 > bān; #7622
+瘣 > lĕi; #7623
+瘤 > líu; #7624
+瘥 > chài; #7625
+瘦 > shòu; #7626
+瘧 > nǜe; #7627
+瘨 > diān; #7628
+瘩 > dā; #7629
+瘪 > piē; #762A
+瘫 > tān; #762B
+瘬 > zhàng; #762C
+瘭 > biāo; #762D
+瘮 > shen; #762E
+瘯 > cù; #762F
+瘰 > lŭo; #7630
+瘱 > yì; #7631
+瘲 > zòng; #7632
+瘳 > chōu; #7633
+瘴 > zhàng; #7634
+瘵 > zhài; #7635
+瘶 > sòu; #7636
+瘷 > sŭo; #7637
+瘸 > qué; #7638
+瘹 > diào; #7639
+瘺 > lòu; #763A
+瘻 > lǘ; #763B
+瘼 > mò; #763C
+瘽 > jìn; #763D
+瘾 > yĭn; #763E
+瘿 > yĭng; #763F
+癀 > huáng; #7640
+癁 > fú; #7641
+療 > liáo; #7642
+癃 > lóng; #7643
+癄 > qiáo; #7644
+癅 > líu; #7645
+癆 > láo; #7646
+癇 > xián; #7647
+癈 > fèi; #7648
+癉 > dàn; #7649
+癊 > yìn; #764A
+癋 > hè; #764B
+癌 > yán; #764C
+癍 > bān; #764D
+癎 > xián; #764E
+癏 > guān; #764F
+癐 > guài; #7650
+癑 > nóng; #7651
+癒 > yù; #7652
+癓 > wéi; #7653
+癔 > yì; #7654
+癕 > yōng; #7655
+癖 > pĭ; #7656
+癗 > lĕi; #7657
+癘 > lì; #7658
+癙 > shŭ; #7659
+癚 > dàn; #765A
+癛 > lĭn; #765B
+癜 > diàn; #765C
+癝 > lĭn; #765D
+癞 > lài; #765E
+癟 > piē; #765F
+癠 > jì; #7660
+癡 > chī; #7661
+癢 > yăng; #7662
+癣 > xiăn; #7663
+癤 > jié; #7664
+癥 > zhēng; #7665
+癧 > lì; #7667
+癨 > hùo; #7668
+癩 > lài; #7669
+癫 > diān; #766B
+癬 > xiăn; #766C
+癭 > yĭng; #766D
+癮 > yĭn; #766E
+癯 > qú; #766F
+癰 > yōng; #7670
+癱 > tān; #7671
+癲 > diān; #7672
+癳 > lŭo; #7673
+癴 > lǘan; #7674
+癵 > luán; #7675
+癶 > bō; #7676
+癸 > gŭi; #7678
+癹 > pō; #7679
+発 > fā; #767A
+登 > dēng; #767B
+發 > fā; #767C
+白 > bái; #767D
+百 > băi; #767E
+癿 > qié; #767F
+皀 > bī; #7680
+皁 > zào; #7681
+皂 > zào; #7682
+皃 > mào; #7683
+的 > de; #7684
+皅 > pā; #7685
+皆 > jiē; #7686
+皇 > huáng; #7687
+皈 > gūi; #7688
+皉 > cĭ; #7689
+皊 > líng; #768A
+皋 > gāo; #768B
+皌 > mò; #768C
+皍 > jí; #768D
+皎 > jiăo; #768E
+皏 > pĕng; #768F
+皐 > gāo; #7690
+皑 > ái; #7691
+皒 > é; #7692
+皓 > hào; #7693
+皔 > hàn; #7694
+皕 > bī; #7695
+皖 > wăn; #7696
+皗 > chóu; #7697
+皘 > qiàn; #7698
+皙 > xī; #7699
+皚 > ái; #769A
+皛 > jĭong; #769B
+皜 > hào; #769C
+皝 > huăng; #769D
+皞 > hào; #769E
+皟 > zé; #769F
+皠 > cŭi; #76A0
+皡 > hào; #76A1
+皢 > xiăo; #76A2
+皣 > yè; #76A3
+皤 > pó; #76A4
+皥 > hào; #76A5
+皦 > jiăo; #76A6
+皧 > ài; #76A7
+皨 > xīng; #76A8
+皩 > huàng; #76A9
+皪 > lì; #76AA
+皫 > piăo; #76AB
+皬 > hè; #76AC
+皭 > jiào; #76AD
+皮 > pí; #76AE
+皯 > găn; #76AF
+皰 > pào; #76B0
+皱 > zhòu; #76B1
+皲 > jūn; #76B2
+皳 > qíu; #76B3
+皴 > cūn; #76B4
+皵 > què; #76B5
+皶 > zhā; #76B6
+皷 > gŭ; #76B7
+皸 > jūn; #76B8
+皹 > jūn; #76B9
+皺 > zhòu; #76BA
+皻 > zhā; #76BB
+皼 > gŭ; #76BC
+皽 > zhăn; #76BD
+皾 > dú; #76BE
+皿 > mĭn; #76BF
+盀 > qĭ; #76C0
+盁 > yíng; #76C1
+盂 > yú; #76C2
+盃 > bēi; #76C3
+盄 > zhāo; #76C4
+盅 > zhōng; #76C5
+盆 > pén; #76C6
+盇 > hé; #76C7
+盈 > yíng; #76C8
+盉 > hé; #76C9
+益 > yì; #76CA
+盋 > bō; #76CB
+盌 > wăn; #76CC
+盍 > hé; #76CD
+盎 > àng; #76CE
+盏 > zhăn; #76CF
+盐 > yán; #76D0
+监 > jiān; #76D1
+盒 > hé; #76D2
+盓 > yū; #76D3
+盔 > kūi; #76D4
+盕 > fàn; #76D5
+盖 > gài; #76D6
+盗 > dào; #76D7
+盘 > pán; #76D8
+盙 > fŭ; #76D9
+盚 > qíu; #76DA
+盛 > shèng; #76DB
+盜 > dào; #76DC
+盝 > lù; #76DD
+盞 > zhăn; #76DE
+盟 > méng; #76DF
+盠 > lĭ; #76E0
+盡 > jìn; #76E1
+盢 > xù; #76E2
+監 > jiān; #76E3
+盤 > pán; #76E4
+盥 > guàn; #76E5
+盦 > ān; #76E6
+盧 > lú; #76E7
+盨 > shŭ; #76E8
+盩 > zhōu; #76E9
+盪 > dàng; #76EA
+盫 > ān; #76EB
+盬 > gŭ; #76EC
+盭 > lì; #76ED
+目 > mù; #76EE
+盯 > chéng; #76EF
+盰 > găn; #76F0
+盱 > xū; #76F1
+盲 > máng; #76F2
+盳 > máng; #76F3
+直 > zhí; #76F4
+盵 > qì; #76F5
+盶 > ruăn; #76F6
+盷 > tián; #76F7
+相 > xiāng; #76F8
+盹 > dùn; #76F9
+盺 > xīn; #76FA
+盻 > xì; #76FB
+盼 > pàn; #76FC
+盽 > fēng; #76FD
+盾 > dùn; #76FE
+盿 > mín; #76FF
+眀 > míng; #7700
+省 > shĕng; #7701
+眂 > shì; #7702
+眃 > yún; #7703
+眄 > miăn; #7704
+眅 > pān; #7705
+眆 > făng; #7706
+眇 > miăo; #7707
+眈 > dān; #7708
+眉 > méi; #7709
+眊 > mào; #770A
+看 > kàn; #770B
+県 > xiàn; #770C
+眍 > ōu; #770D
+眎 > shì; #770E
+眏 > yāng; #770F
+眐 > zhēng; #7710
+眑 > yăo; #7711
+眒 > shèn; #7712
+眓 > hùo; #7713
+眔 > dà; #7714
+眕 > zhĕn; #7715
+眖 > kuàng; #7716
+眗 > jū; #7717
+眘 > shèn; #7718
+眙 > chì; #7719
+眚 > shĕng; #771A
+眛 > mèi; #771B
+眜 > mò; #771C
+眝 > zhù; #771D
+眞 > zhēn; #771E
+真 > zhēn; #771F
+眠 > mián; #7720
+眡 > dī; #7721
+眢 > yuān; #7722
+眣 > dié; #7723
+眤 > yí; #7724
+眥 > zì; #7725
+眦 > zì; #7726
+眧 > chăo; #7727
+眨 > zhă; #7728
+眩 > xuàn; #7729
+眪 > bĭng; #772A
+眫 > mĭ; #772B
+眬 > lóng; #772C
+眭 > sūi; #772D
+眮 > dòng; #772E
+眯 > mĭ; #772F
+眰 > dié; #7730
+眱 > yí; #7731
+眲 > èr; #7732
+眳 > mĭng; #7733
+眴 > xuàn; #7734
+眵 > chī; #7735
+眶 > kuàng; #7736
+眷 > juàn; #7737
+眸 > móu; #7738
+眹 > zhèn; #7739
+眺 > tiào; #773A
+眻 > yáng; #773B
+眼 > yăn; #773C
+眽 > mò; #773D
+眾 > zhòng; #773E
+眿 > mài; #773F
+着 > zháo; #7740
+睁 > zhēng; #7741
+睂 > méi; #7742
+睃 > jùn; #7743
+睄 > shào; #7744
+睅 > hàn; #7745
+睆 > huăn; #7746
+睇 > dì; #7747
+睈 > chĕng; #7748
+睉 > cūo; #7749
+睊 > juàn; #774A
+睋 > é; #774B
+睌 > wăn; #774C
+睍 > xiàn; #774D
+睎 > xī; #774E
+睏 > kùn; #774F
+睐 > lài; #7750
+睑 > jiăn; #7751
+睒 > shăn; #7752
+睓 > tiăn; #7753
+睔 > hŭn; #7754
+睕 > wăn; #7755
+睖 > líng; #7756
+睗 > shì; #7757
+睘 > qíong; #7758
+睙 > liè; #7759
+睚 > yái; #775A
+睛 > jīng; #775B
+睜 > zhēng; #775C
+睝 > lí; #775D
+睞 > lài; #775E
+睟 > sùi; #775F
+睠 > juàn; #7760
+睡 > shùi; #7761
+睢 > sūi; #7762
+督 > dū; #7763
+睤 > bì; #7764
+睥 > bì; #7765
+睦 > mù; #7766
+睧 > hūn; #7767
+睨 > nì; #7768
+睩 > lù; #7769
+睪 > yì; #776A
+睫 > jié; #776B
+睬 > căi; #776C
+睭 > zhŏu; #776D
+睮 > yú; #776E
+睯 > hūn; #776F
+睰 > mà; #7770
+睱 > xià; #7771
+睲 > xĭng; #7772
+睳 > xī; #7773
+睴 > gùn; #7774
+睵 > cai; #7775
+睶 > chŭn; #7776
+睷 > jiān; #7777
+睸 > mèi; #7778
+睹 > dŭ; #7779
+睺 > hóu; #777A
+睻 > xuān; #777B
+睼 > tì; #777C
+睽 > kúi; #777D
+睾 > gāo; #777E
+睿 > rùi; #777F
+瞀 > mòu; #7780
+瞁 > xù; #7781
+瞂 > fā; #7782
+瞃 > wēn; #7783
+瞄 > miáo; #7784
+瞅 > chŏu; #7785
+瞆 > kùi; #7786
+瞇 > mī; #7787
+瞈 > wĕng; #7788
+瞉 > kòu; #7789
+瞊 > dàng; #778A
+瞋 > chēn; #778B
+瞌 > kē; #778C
+瞍 > sŏu; #778D
+瞎 > xiā; #778E
+瞏 > qíong; #778F
+瞐 > mào; #7790
+瞑 > míng; #7791
+瞒 > mán; #7792
+瞓 > shùi; #7793
+瞔 > zé; #7794
+瞕 > zhàng; #7795
+瞖 > yì; #7796
+瞗 > diāo; #7797
+瞘 > ōu; #7798
+瞙 > mò; #7799
+瞚 > shùn; #779A
+瞛 > cōng; #779B
+瞜 > lōu; #779C
+瞝 > chī; #779D
+瞞 > mán; #779E
+瞟 > piăo; #779F
+瞠 > chēng; #77A0
+瞡 > jì; #77A1
+瞢 > méng; #77A2
+瞤 > rún; #77A4
+瞥 > piē; #77A5
+瞦 > xī; #77A6
+瞧 > qiáo; #77A7
+瞨 > pú; #77A8
+瞩 > zhŭ; #77A9
+瞪 > dèng; #77AA
+瞫 > shĕn; #77AB
+瞬 > shùn; #77AC
+瞭 > liăo; #77AD
+瞮 > chè; #77AE
+瞯 > xián; #77AF
+瞰 > kàn; #77B0
+瞱 > yè; #77B1
+瞲 > xù; #77B2
+瞳 > tóng; #77B3
+瞴 > móu; #77B4
+瞵 > lín; #77B5
+瞶 > kùi; #77B6
+瞷 > xián; #77B7
+瞸 > yè; #77B8
+瞹 > ài; #77B9
+瞺 > hùi; #77BA
+瞻 > zhān; #77BB
+瞼 > jiăn; #77BC
+瞽 > gŭ; #77BD
+瞾 > zhào; #77BE
+瞿 > qū; #77BF
+矀 > wéi; #77C0
+矁 > chŏu; #77C1
+矂 > sào; #77C2
+矃 > nĭng; #77C3
+矄 > xūn; #77C4
+矅 > yào; #77C5
+矆 > hùo; #77C6
+矇 > méng; #77C7
+矈 > mián; #77C8
+矉 > bīn; #77C9
+矊 > mián; #77CA
+矋 > lì; #77CB
+矌 > kuàng; #77CC
+矍 > jué; #77CD
+矎 > xuān; #77CE
+矏 > mián; #77CF
+矐 > hùo; #77D0
+矑 > lú; #77D1
+矒 > méng; #77D2
+矓 > lóng; #77D3
+矔 > guàn; #77D4
+矕 > măn; #77D5
+矖 > xĭ; #77D6
+矗 > chù; #77D7
+矘 > tăng; #77D8
+矙 > kàn; #77D9
+矚 > zhŭ; #77DA
+矛 > máo; #77DB
+矜 > jīn; #77DC
+矝 > lín; #77DD
+矞 > yù; #77DE
+矟 > shùo; #77DF
+矠 > cè; #77E0
+矡 > jué; #77E1
+矢 > shĭ; #77E2
+矣 > yĭ; #77E3
+矤 > shĕn; #77E4
+知 > zhī; #77E5
+矦 > hóu; #77E6
+矧 > shĕn; #77E7
+矨 > yĭng; #77E8
+矩 > jŭ; #77E9
+矪 > zhōu; #77EA
+矫 > jiăo; #77EB
+矬 > cúo; #77EC
+短 > duăn; #77ED
+矮 > ăi; #77EE
+矯 > jiăo; #77EF
+矰 > zēng; #77F0
+矱 > hùo; #77F1
+矲 > băi; #77F2
+石 > shí; #77F3
+矴 > dìng; #77F4
+矵 > qì; #77F5
+矶 > jī; #77F6
+矷 > zĭ; #77F7
+矸 > gān; #77F8
+矹 > wù; #77F9
+矺 > tūo; #77FA
+矻 > kù; #77FB
+矼 > qiāng; #77FC
+矽 > xì; #77FD
+矾 > fán; #77FE
+矿 > kuàng; #77FF
+砀 > dàng; #7800
+码 > mă; #7801
+砂 > shā; #7802
+砃 > dān; #7803
+砄 > jué; #7804
+砅 > lì; #7805
+砆 > fū; #7806
+砇 > mín; #7807
+砈 > nŭo; #7808
+砉 > hùo; #7809
+砊 > kàng; #780A
+砋 > zhĭ; #780B
+砌 > qì; #780C
+砍 > kăn; #780D
+砎 > jiè; #780E
+砏 > fēn; #780F
+砐 > è; #7810
+砑 > yà; #7811
+砒 > pī; #7812
+砓 > zhé; #7813
+研 > yán; #7814
+砕 > sùi; #7815
+砖 > zhuān; #7816
+砗 > chē; #7817
+砘 > dùn; #7818
+砙 > pān; #7819
+砚 > yàn; #781A
+砜 > fēng; #781C
+砝 > fá; #781D
+砞 > mò; #781E
+砟 > zhà; #781F
+砠 > qū; #7820
+砡 > yù; #7821
+砢 > lŭo; #7822
+砣 > túo; #7823
+砤 > túo; #7824
+砥 > dĭ; #7825
+砦 > zhài; #7826
+砧 > zhēn; #7827
+砨 > ài; #7828
+砩 > fèi; #7829
+砪 > mŭ; #782A
+砫 > zhŭ; #782B
+砬 > lì; #782C
+砭 > biān; #782D
+砮 > nŭ; #782E
+砯 > pīng; #782F
+砰 > pēng; #7830
+砱 > líng; #7831
+砲 > pào; #7832
+砳 > lè; #7833
+破 > pò; #7834
+砵 > bō; #7835
+砶 > pò; #7836
+砷 > shēn; #7837
+砸 > zá; #7838
+砹 > nŭo; #7839
+砺 > lì; #783A
+砻 > lóng; #783B
+砼 > tóng; #783C
+砾 > lì; #783E
+础 > chŭ; #7840
+硁 > kēng; #7841
+硂 > quán; #7842
+硃 > zhū; #7843
+硄 > kuāng; #7844
+硅 > hùo; #7845
+硆 > è; #7846
+硇 > náo; #7847
+硈 > jiá; #7848
+硉 > lù; #7849
+硊 > wĕi; #784A
+硋 > ài; #784B
+硌 > lùo; #784C
+硍 > kèn; #784D
+硎 > xíng; #784E
+硏 > yán; #784F
+硐 > tóng; #7850
+硑 > pēng; #7851
+硒 > xī; #7852
+硔 > hóng; #7854
+硕 > shùo; #7855
+硖 > xiá; #7856
+硗 > qiāo; #7857
+硙 > wèi; #7859
+硚 > qiáo; #785A
+硜 > kēng; #785C
+硝 > xiāo; #785D
+硞 > què; #785E
+硟 > chàn; #785F
+硠 > lăng; #7860
+硡 > hóng; #7861
+硢 > yú; #7862
+硣 > xiāo; #7863
+硤 > xiá; #7864
+硥 > măng; #7865
+硦 > lòng; #7866
+硧 > ĭong; #7867
+硨 > chē; #7868
+硩 > chè; #7869
+硪 > é; #786A
+硫 > líu; #786B
+硬 > yìng; #786C
+硭 > máng; #786D
+确 > què; #786E
+硯 > yàn; #786F
+硰 > shā; #7870
+硱 > kŭn; #7871
+硲 > yù; #7872
+硵 > lŭ; #7875
+硶 > chĕn; #7876
+硷 > jiăn; #7877
+硸 > nuè; #7878
+硹 > sōng; #7879
+硺 > zhúo; #787A
+硻 > kēng; #787B
+硼 > péng; #787C
+硽 > yăn; #787D
+硾 > zhùi; #787E
+硿 > kōng; #787F
+碀 > céng; #7880
+碁 > qí; #7881
+碂 > zòng; #7882
+碃 > qìng; #7883
+碄 > lín; #7884
+碅 > jūn; #7885
+碆 > bō; #7886
+碇 > dìng; #7887
+碈 > mín; #7888
+碉 > diāo; #7889
+碊 > jiān; #788A
+碋 > hè; #788B
+碌 > lù; #788C
+碍 > ài; #788D
+碎 > sùi; #788E
+碏 > què; #788F
+碐 > líng; #7890
+碑 > bēi; #7891
+碒 > yín; #7892
+碓 > dùi; #7893
+碔 > wŭ; #7894
+碕 > qí; #7895
+碖 > lùn; #7896
+碗 > wăn; #7897
+碘 > diăn; #7898
+碙 > gāng; #7899
+碚 > péi; #789A
+碛 > qì; #789B
+碜 > chĕn; #789C
+碝 > ruăn; #789D
+碞 > yán; #789E
+碟 > dié; #789F
+碠 > dìng; #78A0
+碡 > dú; #78A1
+碢 > túo; #78A2
+碣 > jié; #78A3
+碤 > yīng; #78A4
+碥 > biăn; #78A5
+碦 > kè; #78A6
+碧 > bì; #78A7
+碨 > wēi; #78A8
+碩 > shùo; #78A9
+碪 > zhēn; #78AA
+碫 > duàn; #78AB
+碬 > xiá; #78AC
+碭 > dàng; #78AD
+碮 > tí; #78AE
+碯 > năo; #78AF
+碰 > pèng; #78B0
+碱 > jiăn; #78B1
+碲 > dì; #78B2
+碳 > tàn; #78B3
+碴 > chá; #78B4
+碶 > qì; #78B6
+碸 > fēng; #78B8
+碹 > xuàn; #78B9
+確 > què; #78BA
+碻 > què; #78BB
+碼 > mă; #78BC
+碽 > gōng; #78BD
+碾 > niàn; #78BE
+碿 > sù; #78BF
+磀 > é; #78C0
+磁 > cí; #78C1
+磂 > lìu; #78C2
+磃 > sī; #78C3
+磄 > táng; #78C4
+磅 > bàng; #78C5
+磆 > huá; #78C6
+磇 > pī; #78C7
+磈 > wĕi; #78C8
+磉 > săng; #78C9
+磊 > lĕi; #78CA
+磋 > cūo; #78CB
+磌 > zhēn; #78CC
+磍 > xiá; #78CD
+磎 > qī; #78CE
+磏 > lián; #78CF
+磐 > pán; #78D0
+磑 > wèi; #78D1
+磒 > yŭn; #78D2
+磓 > dūi; #78D3
+磔 > zhé; #78D4
+磕 > kē; #78D5
+磖 > lā; #78D6
+磘 > qìng; #78D8
+磙 > gŭn; #78D9
+磚 > zhuān; #78DA
+磛 > chán; #78DB
+磜 > qì; #78DC
+磝 > áo; #78DD
+磞 > pēng; #78DE
+磟 > lù; #78DF
+磠 > lŭ; #78E0
+磡 > kàn; #78E1
+磢 > qiăng; #78E2
+磣 > chĕn; #78E3
+磤 > yĭn; #78E4
+磥 > lĕi; #78E5
+磦 > biāo; #78E6
+磧 > qì; #78E7
+磨 > mó; #78E8
+磩 > qī; #78E9
+磪 > cūi; #78EA
+磫 > zōng; #78EB
+磬 > qìng; #78EC
+磭 > chùo; #78ED
+磯 > jī; #78EF
+磰 > shàn; #78F0
+磱 > láo; #78F1
+磲 > qú; #78F2
+磳 > zēng; #78F3
+磴 > dèng; #78F4
+磵 > jiàn; #78F5
+磶 > xì; #78F6
+磷 > lìn; #78F7
+磸 > dìng; #78F8
+磹 > diàn; #78F9
+磺 > huáng; #78FA
+磻 > pán; #78FB
+磼 > zá; #78FC
+磽 > qiāo; #78FD
+磾 > dī; #78FE
+磿 > lì; #78FF
+礁 > jiāo; #7901
+礃 > zhăng; #7903
+礄 > qiáo; #7904
+礅 > dūn; #7905
+礆 > xiăn; #7906
+礇 > yù; #7907
+礈 > zhùi; #7908
+礉 > hé; #7909
+礊 > hùo; #790A
+礋 > zhái; #790B
+礌 > lèi; #790C
+礍 > kĕ; #790D
+礎 > chŭ; #790E
+礏 > jí; #790F
+礐 > què; #7910
+礑 > dàng; #7911
+礒 > yĭ; #7912
+礓 > jiāng; #7913
+礔 > pì; #7914
+礕 > pī; #7915
+礖 > yù; #7916
+礗 > pīn; #7917
+礘 > qì; #7918
+礙 > ài; #7919
+礚 > kài; #791A
+礛 > jiān; #791B
+礜 > yù; #791C
+礝 > ruăn; #791D
+礞 > méng; #791E
+礟 > pào; #791F
+礠 > cí; #7920
+礣 > miè; #7923
+礤 > că; #7924
+礥 > xián; #7925
+礦 > kuàng; #7926
+礧 > lèi; #7927
+礨 > lĕi; #7928
+礩 > zhì; #7929
+礪 > lì; #792A
+礫 > lì; #792B
+礬 > fán; #792C
+礭 > què; #792D
+礮 > pào; #792E
+礯 > yīng; #792F
+礰 > lì; #7930
+礱 > lóng; #7931
+礲 > lóng; #7932
+礳 > mò; #7933
+礴 > bó; #7934
+礵 > shuāng; #7935
+礶 > guàn; #7936
+礷 > lán; #7937
+礸 > zăn; #7938
+礹 > yán; #7939
+示 > shì; #793A
+礻 > shì' 'zì' 'páng; #793B
+礼 > lĭ; #793C
+礽 > réng; #793D
+社 > shè; #793E
+礿 > yuè; #793F
+祀 > sì; #7940
+祁 > qí; #7941
+祂 > tā; #7942
+祃 > mà; #7943
+祄 > xiè; #7944
+祅 > xiān; #7945
+祆 > xiān; #7946
+祇 > zhī; #7947
+祈 > qí; #7948
+祉 > zhĭ; #7949
+祊 > bēng; #794A
+祋 > dùi; #794B
+祌 > zhòng; #794C
+祎 > yī; #794E
+祏 > shí; #794F
+祐 > yòu; #7950
+祑 > zhì; #7951
+祒 > tiáo; #7952
+祓 > fú; #7953
+祔 > fù; #7954
+祕 > mì; #7955
+祖 > zŭ; #7956
+祗 > zhī; #7957
+祘 > suàn; #7958
+祙 > mèi; #7959
+祚 > zùo; #795A
+祛 > qū; #795B
+祜 > hù; #795C
+祝 > zhù; #795D
+神 > shén; #795E
+祟 > sùi; #795F
+祠 > cí; #7960
+祡 > chái; #7961
+祢 > mí; #7962
+祣 > lǚ; #7963
+祤 > yŭ; #7964
+祥 > xiáng; #7965
+祦 > wú; #7966
+祧 > tiāo; #7967
+票 > piào; #7968
+祩 > zhū; #7969
+祪 > gŭi; #796A
+祫 > xiá; #796B
+祬 > zhī; #796C
+祭 > jì; #796D
+祮 > gào; #796E
+祯 > zhēn; #796F
+祰 > gào; #7970
+祱 > shùi; #7971
+祲 > jīn; #7972
+祳 > chĕn; #7973
+祴 > gāi; #7974
+祵 > kŭn; #7975
+祶 > dì; #7976
+祷 > dăo; #7977
+祸 > hùo; #7978
+祹 > táo; #7979
+祺 > qí; #797A
+祻 > gù; #797B
+祼 > guàn; #797C
+祽 > zùi; #797D
+祾 > líng; #797E
+祿 > lù; #797F
+禀 > bĭng; #7980
+禁 > jìn; #7981
+禂 > dăo; #7982
+禃 > zhí; #7983
+禄 > lù; #7984
+禅 > shàn; #7985
+禆 > bēi; #7986
+禇 > zhĕ; #7987
+禈 > hūi; #7988
+禉 > yŏu; #7989
+禊 > xì; #798A
+禋 > yīn; #798B
+禌 > zī; #798C
+禍 > hùo; #798D
+禎 > zhēn; #798E
+福 > fú; #798F
+禐 > yuàn; #7990
+禑 > wú; #7991
+禒 > xiăn; #7992
+禓 > yáng; #7993
+禔 > tí; #7994
+禕 > yī; #7995
+禖 > méi; #7996
+禗 > sī; #7997
+禘 > dì; #7998
+禚 > zhúo; #799A
+禛 > zhēn; #799B
+禜 > yŏng; #799C
+禝 > jí; #799D
+禞 > gào; #799E
+禟 > táng; #799F
+禠 > sī; #79A0
+禡 > mà; #79A1
+禢 > tā; #79A2
+禤 > xuān; #79A4
+禥 > qí; #79A5
+禦 > yù; #79A6
+禧 > xī; #79A7
+禨 > jī; #79A8
+禩 > sì; #79A9
+禪 > chán; #79AA
+禫 > tăn; #79AB
+禬 > kuài; #79AC
+禭 > sùi; #79AD
+禮 > lĭ; #79AE
+禯 > nóng; #79AF
+禰 > nĭ; #79B0
+禱 > dăo; #79B1
+禲 > lì; #79B2
+禳 > ráng; #79B3
+禴 > yuè; #79B4
+禵 > tí; #79B5
+禶 > zăn; #79B6
+禷 > lèi; #79B7
+禸 > róu; #79B8
+禹 > yŭ; #79B9
+禺 > yú; #79BA
+离 > chī; #79BB
+禼 > xiè; #79BC
+禽 > qín; #79BD
+禾 > hé; #79BE
+禿 > tū; #79BF
+秀 > xìu; #79C0
+私 > sī; #79C1
+秂 > rén; #79C2
+秃 > tū; #79C3
+秄 > zĭ; #79C4
+秅 > chá; #79C5
+秆 > găn; #79C6
+秇 > yì; #79C7
+秈 > xiān; #79C8
+秉 > bĭng; #79C9
+秊 > nián; #79CA
+秋 > qīu; #79CB
+秌 > qīu; #79CC
+种 > chóng; #79CD
+秎 > fén; #79CE
+秏 > hào; #79CF
+秐 > yún; #79D0
+科 > kē; #79D1
+秒 > miăo; #79D2
+秓 > zhī; #79D3
+秔 > gēng; #79D4
+秕 > bĭ; #79D5
+秖 > zhī; #79D6
+秗 > yù; #79D7
+秘 > mì; #79D8
+秙 > kù; #79D9
+秚 > bàn; #79DA
+秛 > pī; #79DB
+秜 > ní; #79DC
+秝 > lì; #79DD
+秞 > yóu; #79DE
+租 > zū; #79DF
+秠 > pī; #79E0
+秡 > bá; #79E1
+秢 > líng; #79E2
+秣 > mò; #79E3
+秤 > chèng; #79E4
+秥 > nián; #79E5
+秦 > qín; #79E6
+秧 > yāng; #79E7
+秨 > zúo; #79E8
+秩 > zhì; #79E9
+秪 > zhī; #79EA
+秫 > shú; #79EB
+秬 > jù; #79EC
+秭 > zĭ; #79ED
+秮 > húo; #79EE
+积 > jī; #79EF
+称 > chēng; #79F0
+秱 > tóng; #79F1
+秲 > zhì; #79F2
+秳 > húo; #79F3
+秴 > hé; #79F4
+秵 > yīn; #79F5
+秶 > zī; #79F6
+秷 > zhí; #79F7
+秸 > jiē; #79F8
+秹 > rĕn; #79F9
+秺 > dù; #79FA
+移 > yí; #79FB
+秼 > zhū; #79FC
+秽 > hùi; #79FD
+秾 > nóng; #79FE
+秿 > fŭ; #79FF
+稀 > xī; #7A00
+稁 > kăo; #7A01
+稂 > láng; #7A02
+稃 > fū; #7A03
+稄 > zè; #7A04
+稅 > shùi; #7A05
+稆 > lǚ; #7A06
+稇 > kŭn; #7A07
+稈 > găn; #7A08
+稉 > gēng; #7A09
+稊 > tí; #7A0A
+程 > chéng; #7A0B
+稌 > tú; #7A0C
+稍 > shāo; #7A0D
+税 > shùi; #7A0E
+稏 > yà; #7A0F
+稐 > lŭn; #7A10
+稑 > lù; #7A11
+稒 > gù; #7A12
+稓 > zúo; #7A13
+稔 > rĕn; #7A14
+稕 > zhùn; #7A15
+稖 > bàng; #7A16
+稗 > bài; #7A17
+稘 > jī; #7A18
+稙 > zhí; #7A19
+稚 > zhì; #7A1A
+稛 > kŭn; #7A1B
+稜 > léng; #7A1C
+稝 > péng; #7A1D
+稞 > kē; #7A1E
+稟 > bĭng; #7A1F
+稠 > chóu; #7A20
+稡 > zú; #7A21
+稢 > yù; #7A22
+稣 > sū; #7A23
+稤 > lǜe; #7A24
+稦 > yī; #7A26
+稧 > xì; #7A27
+稨 > biān; #7A28
+稩 > jì; #7A29
+稪 > fù; #7A2A
+稫 > bī; #7A2B
+稬 > nùo; #7A2C
+稭 > jiē; #7A2D
+種 > zhŏng; #7A2E
+稯 > zōng; #7A2F
+稰 > xū; #7A30
+稱 > chēng; #7A31
+稲 > dào; #7A32
+稳 > wĕn; #7A33
+稴 > lián; #7A34
+稵 > zī; #7A35
+稶 > yù; #7A36
+稷 > jì; #7A37
+稸 > xù; #7A38
+稹 > zhĕn; #7A39
+稺 > zhì; #7A3A
+稻 > dào; #7A3B
+稼 > jià; #7A3C
+稽 > jī; #7A3D
+稾 > găo; #7A3E
+稿 > găo; #7A3F
+穀 > gŭ; #7A40
+穁 > róng; #7A41
+穂 > sùi; #7A42
+穄 > jì; #7A44
+穅 > kāng; #7A45
+穆 > mù; #7A46
+穇 > shān; #7A47
+穈 > mén; #7A48
+穉 > zhì; #7A49
+穊 > jì; #7A4A
+穋 > lù; #7A4B
+穌 > sū; #7A4C
+積 > jī; #7A4D
+穎 > yĭng; #7A4E
+穏 > wĕn; #7A4F
+穐 > qīu; #7A50
+穑 > sè; #7A51
+穓 > yì; #7A53
+穔 > huáng; #7A54
+穕 > qiè; #7A55
+穖 > jĭ; #7A56
+穗 > sùi; #7A57
+穘 > xiāo; #7A58
+穙 > pú; #7A59
+穚 > jiāo; #7A5A
+穛 > zhūo; #7A5B
+穜 > tóng; #7A5C
+穞 > lǚ; #7A5E
+穟 > sùi; #7A5F
+穠 > nóng; #7A60
+穡 > sè; #7A61
+穢 > hùi; #7A62
+穣 > ráng; #7A63
+穤 > nùo; #7A64
+穥 > yù; #7A65
+穦 > bin; #7A66
+穧 > jì; #7A67
+穨 > túi; #7A68
+穩 > wĕn; #7A69
+穪 > chēng; #7A6A
+穫 > hùo; #7A6B
+穬 > gŏng; #7A6C
+穭 > lǚ; #7A6D
+穮 > biāo; #7A6E
+穰 > ráng; #7A70
+穱 > zhūo; #7A71
+穲 > lí; #7A72
+穳 > zàn; #7A73
+穴 > xuè; #7A74
+穵 > wā; #7A75
+究 > jìu; #7A76
+穷 > qíong; #7A77
+穸 > xì; #7A78
+穹 > qīong; #7A79
+空 > kōng; #7A7A
+穻 > yū; #7A7B
+穼 > sēn; #7A7C
+穽 > jĭng; #7A7D
+穾 > yào; #7A7E
+穿 > chuān; #7A7F
+窀 > zhūn; #7A80
+突 > tú; #7A81
+窂 > láo; #7A82
+窃 > qiè; #7A83
+窄 > zhăi; #7A84
+窅 > yăo; #7A85
+窆 > biăn; #7A86
+窇 > báo; #7A87
+窈 > yăo; #7A88
+窉 > bĭng; #7A89
+窊 > wā; #7A8A
+窋 > zhú; #7A8B
+窌 > jiào; #7A8C
+窍 > qiào; #7A8D
+窎 > diào; #7A8E
+窏 > wū; #7A8F
+窐 > gūi; #7A90
+窑 > yáo; #7A91
+窒 > zhì; #7A92
+窓 > chuāng; #7A93
+窔 > yăo; #7A94
+窕 > tiăo; #7A95
+窖 > jiào; #7A96
+窗 > chuāng; #7A97
+窘 > jĭong; #7A98
+窙 > xiāo; #7A99
+窚 > chéng; #7A9A
+窛 > kòu; #7A9B
+窜 > cuàn; #7A9C
+窝 > wō; #7A9D
+窞 > dàn; #7A9E
+窟 > kū; #7A9F
+窠 > kē; #7AA0
+窡 > zhùi; #7AA1
+窢 > xù; #7AA2
+窣 > sù; #7AA3
+窤 > guan; #7AA4
+窥 > kūi; #7AA5
+窦 > dòu; #7AA6
+窨 > yìn; #7AA8
+窩 > wō; #7AA9
+窪 > wā; #7AAA
+窫 > yà; #7AAB
+窬 > yú; #7AAC
+窭 > jù; #7AAD
+窮 > qíong; #7AAE
+窯 > yáo; #7AAF
+窰 > yáo; #7AB0
+窱 > tiào; #7AB1
+窲 > cháo; #7AB2
+窳 > yŭ; #7AB3
+窴 > tián; #7AB4
+窵 > diào; #7AB5
+窶 > jù; #7AB6
+窷 > liáo; #7AB7
+窸 > xī; #7AB8
+窹 > wù; #7AB9
+窺 > kūi; #7ABA
+窻 > chuāng; #7ABB
+窼 > zhāo; #7ABC
+窾 > kuăn; #7ABE
+窿 > lóng; #7ABF
+竀 > chēng; #7AC0
+竁 > cùi; #7AC1
+竂 > piáo; #7AC2
+竃 > zào; #7AC3
+竄 > cuàn; #7AC4
+竅 > qiào; #7AC5
+竆 > qíong; #7AC6
+竇 > dòu; #7AC7
+竈 > zào; #7AC8
+竉 > lŏng; #7AC9
+竊 > qiè; #7ACA
+立 > lì; #7ACB
+竌 > chù; #7ACC
+竍 > shí' 'gōng' 'shēng; #7ACD
+竎 > fòu; #7ACE
+竏 > qiān' 'gōng' 'shēng; #7ACF
+竐 > chù; #7AD0
+竑 > hóng; #7AD1
+竒 > qí; #7AD2
+竓 > qiān' 'fēn' 'zhī' 'yī' 'gōng' 'shēng; #7AD3
+竔 > gōng' 'shēng; #7AD4
+竕 > shí' 'fēn' 'zhī' 'yī' 'gōng' 'shēng; #7AD5
+竖 > shù; #7AD6
+竗 > miào; #7AD7
+竘 > jŭ; #7AD8
+站 > zhàn; #7AD9
+竚 > zhù; #7ADA
+竛 > líng; #7ADB
+竜 > lóng; #7ADC
+竝 > bìng; #7ADD
+竞 > jìng; #7ADE
+竟 > jìng; #7ADF
+章 > zhāng; #7AE0
+竡 > yī' 'gōng' 'shēng' 'de' 'yī' 'băi' 'bèi; #7AE1
+竢 > sì; #7AE2
+竣 > jùn; #7AE3
+竤 > hóng; #7AE4
+童 > tóng; #7AE5
+竦 > sŏng; #7AE6
+竧 > jìng; #7AE7
+竨 > diào; #7AE8
+竩 > yì; #7AE9
+竪 > shù; #7AEA
+竫 > jìng; #7AEB
+竬 > qŭ; #7AEC
+竭 > jié; #7AED
+竮 > píng; #7AEE
+端 > duān; #7AEF
+竰 > sháo; #7AF0
+竱 > zhuăn; #7AF1
+竲 > céng; #7AF2
+竳 > dēng; #7AF3
+竴 > cūi; #7AF4
+竵 > huāi; #7AF5
+競 > jìng; #7AF6
+竷 > kàn; #7AF7
+竸 > jìng; #7AF8
+竹 > zhú; #7AF9
+竺 > zhú; #7AFA
+竻 > lè; #7AFB
+竼 > péng; #7AFC
+竽 > yú; #7AFD
+竾 > chí; #7AFE
+竿 > gān; #7AFF
+笀 > máng; #7B00
+笁 > zhú; #7B01
+笃 > dŭ; #7B03
+笄 > jī; #7B04
+笅 > xiáo; #7B05
+笆 > bā; #7B06
+笇 > suàn; #7B07
+笈 > jí; #7B08
+笉 > zhĕn; #7B09
+笊 > zhào; #7B0A
+笋 > sŭn; #7B0B
+笌 > yá; #7B0C
+笍 > zhùi; #7B0D
+笎 > yuán; #7B0E
+笏 > hù; #7B0F
+笐 > gāng; #7B10
+笑 > xiào; #7B11
+笒 > cén; #7B12
+笓 > pí; #7B13
+笔 > bĭ; #7B14
+笕 > jiăn; #7B15
+笖 > yĭ; #7B16
+笗 > dōng; #7B17
+笘 > shān; #7B18
+笙 > shēng; #7B19
+笚 > xiá; #7B1A
+笛 > dí; #7B1B
+笜 > zhú; #7B1C
+笝 > nà; #7B1D
+笞 > chī; #7B1E
+笟 > gū; #7B1F
+笠 > lì; #7B20
+笡 > qiè; #7B21
+笢 > mĭn; #7B22
+笣 > bāo; #7B23
+笤 > tiáo; #7B24
+笥 > sì; #7B25
+符 > fú; #7B26
+笧 > cè; #7B27
+笨 > bèn; #7B28
+笩 > pèi; #7B29
+笪 > dá; #7B2A
+笫 > zĭ; #7B2B
+第 > dì; #7B2C
+笭 > líng; #7B2D
+笮 > zé; #7B2E
+笯 > nú; #7B2F
+笰 > fú; #7B30
+笱 > gŏu; #7B31
+笲 > fān; #7B32
+笳 > jiā; #7B33
+笴 > gĕ; #7B34
+笵 > fàn; #7B35
+笶 > shĭ; #7B36
+笷 > măo; #7B37
+笸 > pŏ; #7B38
+笺 > jiān; #7B3A
+笻 > qíong; #7B3B
+笼 > lóng; #7B3C
+笾 > biān; #7B3E
+笿 > lùo; #7B3F
+筀 > gùi; #7B40
+筁 > qŭ; #7B41
+筂 > chí; #7B42
+筃 > yīn; #7B43
+筄 > yào; #7B44
+筅 > xiăn; #7B45
+筆 > bĭ; #7B46
+筇 > qíong; #7B47
+筈 > guā; #7B48
+等 > dĕng; #7B49
+筊 > jiăo; #7B4A
+筋 > jīn; #7B4B
+筌 > quán; #7B4C
+筍 > sŭn; #7B4D
+筎 > rú; #7B4E
+筏 > fá; #7B4F
+筐 > kuāng; #7B50
+筑 > zhú; #7B51
+筒 > tŏng; #7B52
+筓 > jī; #7B53
+答 > dá; #7B54
+筕 > xíng; #7B55
+策 > cè; #7B56
+筗 > zhòng; #7B57
+筘 > kòu; #7B58
+筙 > lái; #7B59
+筚 > bì; #7B5A
+筛 > shāi; #7B5B
+筜 > dāng; #7B5C
+筝 > zhēng; #7B5D
+筞 > cè; #7B5E
+筟 > fū; #7B5F
+筠 > yún; #7B60
+筡 > tú; #7B61
+筢 > pá; #7B62
+筣 > lì; #7B63
+筤 > láng; #7B64
+筥 > jŭ; #7B65
+筦 > guăn; #7B66
+筧 > jiăn; #7B67
+筨 > hán; #7B68
+筩 > tóng; #7B69
+筪 > xiá; #7B6A
+筫 > zhì; #7B6B
+筬 > chéng; #7B6C
+筭 > suàn; #7B6D
+筮 > shì; #7B6E
+筯 > zhù; #7B6F
+筰 > zúo; #7B70
+筱 > xiăo; #7B71
+筲 > shāo; #7B72
+筳 > tíng; #7B73
+筴 > cè; #7B74
+筵 > yán; #7B75
+筶 > găo; #7B76
+筷 > kuài; #7B77
+筸 > gān; #7B78
+筹 > chóu; #7B79
+筻 > gàng; #7B7B
+筼 > yún; #7B7C
+签 > qiān; #7B7E
+筿 > xiăo; #7B7F
+简 > jiăn; #7B80
+箁 > pú; #7B81
+箂 > lái; #7B82
+箃 > zōu; #7B83
+箄 > bì; #7B84
+箅 > bì; #7B85
+箆 > bì; #7B86
+箇 > gè; #7B87
+箈 > chí; #7B88
+箉 > guăi; #7B89
+箊 > yū; #7B8A
+箋 > jiān; #7B8B
+箌 > zhào; #7B8C
+箍 > gū; #7B8D
+箎 > chí; #7B8E
+箏 > zhēng; #7B8F
+箐 > jīng; #7B90
+箑 > shà; #7B91
+箒 > zhŏu; #7B92
+箓 > lù; #7B93
+箔 > bó; #7B94
+箕 > jī; #7B95
+箖 > lín; #7B96
+算 > suàn; #7B97
+箘 > jùn; #7B98
+箙 > fú; #7B99
+箚 > zhá; #7B9A
+箛 > gū; #7B9B
+箜 > kōng; #7B9C
+箝 > qián; #7B9D
+箞 > quān; #7B9E
+箟 > jùn; #7B9F
+箠 > chúi; #7BA0
+管 > guăn; #7BA1
+箢 > yuān; #7BA2
+箣 > cè; #7BA3
+箤 > jú; #7BA4
+箥 > bŏ; #7BA5
+箦 > zé; #7BA6
+箧 > qiè; #7BA7
+箨 > tùo; #7BA8
+箩 > lúo; #7BA9
+箪 > dān; #7BAA
+箫 > xiāo; #7BAB
+箬 > rùo; #7BAC
+箭 > jiàn; #7BAD
+箮 > xuan; #7BAE
+箯 > biān; #7BAF
+箰 > sŭn; #7BB0
+箱 > xiāng; #7BB1
+箲 > xiăn; #7BB2
+箳 > píng; #7BB3
+箴 > zhēn; #7BB4
+箵 > shĕng; #7BB5
+箶 > hú; #7BB6
+箷 > shī; #7BB7
+箸 > zhù; #7BB8
+箹 > yuē; #7BB9
+箺 > chŭn; #7BBA
+箻 > lǜ; #7BBB
+箼 > wū; #7BBC
+箽 > dŏng; #7BBD
+箾 > xiāo; #7BBE
+箿 > jí; #7BBF
+節 > jié; #7BC0
+篁 > huáng; #7BC1
+篂 > xīng; #7BC2
+篃 > méi; #7BC3
+範 > fàn; #7BC4
+篅 > chúi; #7BC5
+篆 > zhuàn; #7BC6
+篇 > piān; #7BC7
+篈 > fēng; #7BC8
+築 > zhú; #7BC9
+篊 > hóng; #7BCA
+篋 > qiè; #7BCB
+篌 > hóu; #7BCC
+篍 > qīu; #7BCD
+篎 > miăo; #7BCE
+篏 > qiàn; #7BCF
+篑 > kùi; #7BD1
+篓 > lŏu; #7BD3
+篔 > yún; #7BD4
+篕 > hé; #7BD5
+篖 > táng; #7BD6
+篗 > yuè; #7BD7
+篘 > chōu; #7BD8
+篙 > gāo; #7BD9
+篚 > fĕi; #7BDA
+篛 > rùo; #7BDB
+篜 > zhēng; #7BDC
+篝 > gōu; #7BDD
+篞 > niè; #7BDE
+篟 > qiàn; #7BDF
+篠 > xiăo; #7BE0
+篡 > cuàn; #7BE1
+篢 > gōng; #7BE2
+篣 > páng; #7BE3
+篤 > dŭ; #7BE4
+篥 > lì; #7BE5
+篦 > bì; #7BE6
+篧 > zhúo; #7BE7
+篨 > chú; #7BE8
+篩 > shāi; #7BE9
+篪 > chí; #7BEA
+篫 > zhú; #7BEB
+篬 > qiāng; #7BEC
+篭 > lóng; #7BED
+篮 > lán; #7BEE
+篯 > jiān; #7BEF
+篰 > bù; #7BF0
+篱 > lí; #7BF1
+篲 > hùi; #7BF2
+篳 > bì; #7BF3
+篴 > dí; #7BF4
+篵 > cōng; #7BF5
+篶 > yān; #7BF6
+篷 > péng; #7BF7
+篸 > sēn; #7BF8
+篹 > zhuàn; #7BF9
+篺 > pái; #7BFA
+篻 > piào; #7BFB
+篼 > dōu; #7BFC
+篽 > yŭ; #7BFD
+篾 > miè; #7BFE
+篿 > zhuān; #7BFF
+簀 > zé; #7C00
+簁 > xĭ; #7C01
+簂 > gúo; #7C02
+簃 > yí; #7C03
+簄 > hù; #7C04
+簅 > chăn; #7C05
+簆 > kòu; #7C06
+簇 > cù; #7C07
+簈 > píng; #7C08
+簉 > chòu; #7C09
+簊 > jī; #7C0A
+簋 > gŭi; #7C0B
+簌 > sù; #7C0C
+簍 > lŏu; #7C0D
+簎 > zhà; #7C0E
+簏 > lù; #7C0F
+簐 > niăn; #7C10
+簑 > sūo; #7C11
+簒 > cuàn; #7C12
+簔 > sūo; #7C14
+簕 > lè; #7C15
+簖 > duàn; #7C16
+簘 > xiāo; #7C18
+簙 > bó; #7C19
+簚 > mì; #7C1A
+簛 > sī; #7C1B
+簜 > dàng; #7C1C
+簝 > liáo; #7C1D
+簞 > dān; #7C1E
+簟 > diàn; #7C1F
+簠 > fŭ; #7C20
+簡 > jiăn; #7C21
+簢 > mĭn; #7C22
+簣 > kùi; #7C23
+簤 > dài; #7C24
+簥 > qiáo; #7C25
+簦 > dēng; #7C26
+簧 > huáng; #7C27
+簨 > sŭn; #7C28
+簩 > láo; #7C29
+簪 > zān; #7C2A
+簫 > xiāo; #7C2B
+簬 > dù; #7C2C
+簭 > shì; #7C2D
+簮 > zān; #7C2E
+簰 > pái; #7C30
+簲 > pái; #7C32
+簳 > gàn; #7C33
+簴 > jù; #7C34
+簵 > dù; #7C35
+簶 > lù; #7C36
+簷 > yán; #7C37
+簸 > bò; #7C38
+簹 > dāng; #7C39
+簺 > sài; #7C3A
+簻 > kē; #7C3B
+簼 > lóng; #7C3C
+簽 > qiān; #7C3D
+簾 > lián; #7C3E
+簿 > bó; #7C3F
+籀 > zhòu; #7C40
+籁 > lài; #7C41
+籃 > lán; #7C43
+籄 > kùi; #7C44
+籅 > yú; #7C45
+籆 > yuè; #7C46
+籇 > háo; #7C47
+籈 > zhēn; #7C48
+籉 > tái; #7C49
+籊 > tì; #7C4A
+籋 > mí; #7C4B
+籌 > chóu; #7C4C
+籍 > jí; #7C4D
+籐 > téng; #7C50
+籑 > zhuàn; #7C51
+籒 > zhòu; #7C52
+籓 > fān; #7C53
+籔 > sŏu; #7C54
+籕 > zhòu; #7C55
+籗 > zhúo; #7C57
+籘 > téng; #7C58
+籙 > lù; #7C59
+籚 > lú; #7C5A
+籛 > jiān; #7C5B
+籜 > tùo; #7C5C
+籝 > yíng; #7C5D
+籞 > yù; #7C5E
+籟 > lài; #7C5F
+籠 > lóng; #7C60
+籢 > lián; #7C62
+籣 > lán; #7C63
+籤 > qiān; #7C64
+籥 > yuè; #7C65
+籦 > zhōng; #7C66
+籧 > qú; #7C67
+籨 > lián; #7C68
+籩 > biān; #7C69
+籪 > duàn; #7C6A
+籫 > zuăn; #7C6B
+籬 > lí; #7C6C
+籭 > sī; #7C6D
+籮 > lúo; #7C6E
+籯 > yíng; #7C6F
+籰 > yuè; #7C70
+籱 > zhúo; #7C71
+籲 > xū; #7C72
+米 > mĭ; #7C73
+籴 > dí; #7C74
+籵 > fán; #7C75
+籶 > shēn; #7C76
+籷 > zhé; #7C77
+籸 > shēn; #7C78
+籹 > nǚ; #7C79
+籺 > xié; #7C7A
+类 > lèi; #7C7B
+籼 > xiān; #7C7C
+籽 > zĭ; #7C7D
+籾 > ní; #7C7E
+籿 > cùn; #7C7F
+粁 > qiān; #7C81
+粃 > bĭ; #7C83
+粄 > băn; #7C84
+粅 > wù; #7C85
+粆 > shā; #7C86
+粇 > kāng; #7C87
+粈 > rŏu; #7C88
+粉 > fĕn; #7C89
+粊 > bì; #7C8A
+粋 > cùi; #7C8B
+粍 > lí; #7C8D
+粎 > chĭ; #7C8E
+粑 > bā; #7C91
+粒 > lì; #7C92
+粓 > gān; #7C93
+粔 > jù; #7C94
+粕 > pò; #7C95
+粖 > mò; #7C96
+粗 > cū; #7C97
+粘 > nián; #7C98
+粙 > zhòu; #7C99
+粚 > lí; #7C9A
+粛 > sù; #7C9B
+粜 > tiào; #7C9C
+粝 > lì; #7C9D
+粞 > qī; #7C9E
+粟 > sù; #7C9F
+粠 > hóng; #7CA0
+粡 > tóng; #7CA1
+粢 > zī; #7CA2
+粣 > cè; #7CA3
+粤 > yuè; #7CA4
+粥 > zhōu; #7CA5
+粦 > lìn; #7CA6
+粧 > zhuāng; #7CA7
+粨 > băi; #7CA8
+粪 > fèn; #7CAA
+粮 > liáng; #7CAE
+粯 > xiàn; #7CAF
+粰 > fú; #7CB0
+粱 > liáng; #7CB1
+粲 > càn; #7CB2
+粳 > gēng; #7CB3
+粴 > lĭ; #7CB4
+粵 > yuè; #7CB5
+粶 > lù; #7CB6
+粷 > jú; #7CB7
+粸 > qí; #7CB8
+粹 > cùi; #7CB9
+粺 > bài; #7CBA
+粻 > zhāng; #7CBB
+粼 > lín; #7CBC
+粽 > zòng; #7CBD
+精 > jīng; #7CBE
+粿 > gŭo; #7CBF
+糁 > sān; #7CC1
+糂 > săn; #7CC2
+糃 > táng; #7CC3
+糄 > biān; #7CC4
+糅 > rŏu; #7CC5
+糆 > miàn; #7CC6
+糇 > hóu; #7CC7
+糈 > xŭ; #7CC8
+糉 > zòng; #7CC9
+糊 > hú; #7CCA
+糋 > jiàn; #7CCB
+糌 > zán; #7CCC
+糍 > cí; #7CCD
+糎 > lí; #7CCE
+糏 > xiè; #7CCF
+糐 > fū; #7CD0
+糑 > nì; #7CD1
+糒 > bèi; #7CD2
+糓 > gŭ; #7CD3
+糔 > xĭu; #7CD4
+糕 > gāo; #7CD5
+糖 > táng; #7CD6
+糗 > qĭu; #7CD7
+糙 > cāo; #7CD9
+糚 > zhuāng; #7CDA
+糛 > táng; #7CDB
+糜 > mí; #7CDC
+糝 > sān; #7CDD
+糞 > fèn; #7CDE
+糟 > zāo; #7CDF
+糠 > kāng; #7CE0
+糡 > jiàng; #7CE1
+糢 > mó; #7CE2
+糣 > săn; #7CE3
+糤 > săn; #7CE4
+糥 > nùo; #7CE5
+糦 > xī; #7CE6
+糧 > liáng; #7CE7
+糨 > jiàng; #7CE8
+糩 > kuài; #7CE9
+糪 > bó; #7CEA
+糫 > huán; #7CEB
+糭 > zòng; #7CED
+糮 > xiàn; #7CEE
+糯 > nùo; #7CEF
+糰 > tuán; #7CF0
+糱 > niè; #7CF1
+糲 > lì; #7CF2
+糳 > zùo; #7CF3
+糴 > dí; #7CF4
+糵 > niè; #7CF5
+糶 > tiào; #7CF6
+糷 > lán; #7CF7
+糸 > mì; #7CF8
+糹 > jiăo' 'sī' 'páng; #7CF9
+糺 > jīu; #7CFA
+系 > xì; #7CFB
+糼 > gōng; #7CFC
+糽 > zhĕng; #7CFD
+糾 > jīu; #7CFE
+糿 > yòu; #7CFF
+紀 > jì; #7D00
+紁 > chà; #7D01
+紂 > zhòu; #7D02
+紃 > xún; #7D03
+約 > yuē; #7D04
+紅 > hóng; #7D05
+紆 > yū; #7D06
+紇 > hé; #7D07
+紈 > wán; #7D08
+紉 > rèn; #7D09
+紊 > wèn; #7D0A
+紋 > wén; #7D0B
+紌 > qíu; #7D0C
+納 > nà; #7D0D
+紎 > zī; #7D0E
+紏 > tŏu; #7D0F
+紐 > nĭu; #7D10
+紑 > fóu; #7D11
+紒 > jiè; #7D12
+紓 > shū; #7D13
+純 > chún; #7D14
+紕 > pí; #7D15
+紖 > yĭn; #7D16
+紗 > shā; #7D17
+紘 > hóng; #7D18
+紙 > zhĭ; #7D19
+級 > jí; #7D1A
+紛 > fēn; #7D1B
+紜 > yún; #7D1C
+紝 > rén; #7D1D
+紞 > dăn; #7D1E
+紟 > jīn; #7D1F
+素 > sù; #7D20
+紡 > făng; #7D21
+索 > sŭo; #7D22
+紣 > cùi; #7D23
+紤 > jĭu; #7D24
+紥 > zhá; #7D25
+紧 > jĭn; #7D27
+紨 > fù; #7D28
+紩 > zhì; #7D29
+紪 > cĭ; #7D2A
+紫 > zĭ; #7D2B
+紬 > chóu; #7D2C
+紭 > hóng; #7D2D
+紮 > zhá; #7D2E
+累 > lèi; #7D2F
+細 > xì; #7D30
+紱 > fú; #7D31
+紲 > xiè; #7D32
+紳 > shēn; #7D33
+紴 > bèi; #7D34
+紵 > zhù; #7D35
+紶 > qŭ; #7D36
+紷 > líng; #7D37
+紸 > zhù; #7D38
+紹 > shào; #7D39
+紺 > gàn; #7D3A
+紻 > yāng; #7D3B
+紼 > fú; #7D3C
+紽 > túo; #7D3D
+紾 > zhĕn; #7D3E
+紿 > dài; #7D3F
+絀 > zhúo; #7D40
+絁 > shī; #7D41
+終 > zhōng; #7D42
+絃 > xián; #7D43
+組 > zŭ; #7D44
+絅 > jĭong; #7D45
+絆 > bàn; #7D46
+絇 > jù; #7D47
+絈 > mò; #7D48
+絉 > shù; #7D49
+絊 > zùi; #7D4A
+経 > jīng; #7D4C
+絍 > rén; #7D4D
+絎 > hèng; #7D4E
+絏 > xiè; #7D4F
+結 > jié; #7D50
+絑 > zhū; #7D51
+絒 > chóu; #7D52
+絓 > guà; #7D53
+絔 > băi; #7D54
+絕 > jué; #7D55
+絖 > kuàng; #7D56
+絗 > hú; #7D57
+絘 > cì; #7D58
+絙 > gēng; #7D59
+絚 > gēng; #7D5A
+絛 > tāo; #7D5B
+絜 > xié; #7D5C
+絝 > kù; #7D5D
+絞 > jiăo; #7D5E
+絟 > quān; #7D5F
+絠 > găi; #7D60
+絡 > lùo; #7D61
+絢 > xuàn; #7D62
+絣 > bīng; #7D63
+絤 > xiàn; #7D64
+絥 > fú; #7D65
+給 > gĕi; #7D66
+絧 > tóng; #7D67
+絨 > róng; #7D68
+絩 > tiào; #7D69
+絪 > yīn; #7D6A
+絫 > lĕi; #7D6B
+絬 > xiè; #7D6C
+絭 > quàn; #7D6D
+絮 > xù; #7D6E
+絯 > lǜn; #7D6F
+絰 > dié; #7D70
+統 > tŏng; #7D71
+絲 > sī; #7D72
+絳 > jiàng; #7D73
+絴 > xiáng; #7D74
+絵 > hùi; #7D75
+絶 > jué; #7D76
+絷 > zhí; #7D77
+絸 > jiăn; #7D78
+絹 > juàn; #7D79
+絺 > chī; #7D7A
+絻 > miăn; #7D7B
+絼 > zhĕn; #7D7C
+絽 > lǚ; #7D7D
+絾 > chéng; #7D7E
+絿 > qíu; #7D7F
+綀 > shū; #7D80
+綁 > băng; #7D81
+綂 > tŏng; #7D82
+綃 > xiāo; #7D83
+綄 > wàn; #7D84
+綅 > qīn; #7D85
+綆 > gĕng; #7D86
+綇 > xĭu; #7D87
+綈 > tí; #7D88
+綉 > xìu; #7D89
+綊 > xié; #7D8A
+綋 > hóng; #7D8B
+綌 > xì; #7D8C
+綍 > fú; #7D8D
+綎 > tīng; #7D8E
+綏 > sūi; #7D8F
+綐 > dùi; #7D90
+綑 > kŭn; #7D91
+綒 > fū; #7D92
+經 > jīng; #7D93
+綔 > hù; #7D94
+綕 > zhī; #7D95
+綖 > yán; #7D96
+綗 > jĭong; #7D97
+綘 > féng; #7D98
+継 > jì; #7D99
+綜 > zòng; #7D9C
+綝 > lín; #7D9D
+綞 > dŭo; #7D9E
+綟 > lì; #7D9F
+綠 > lǜ; #7DA0
+綡 > liáng; #7DA1
+綢 > chóu; #7DA2
+綣 > quăn; #7DA3
+綤 > shào; #7DA4
+綥 > qì; #7DA5
+綦 > qí; #7DA6
+綧 > zhŭn; #7DA7
+綨 > qí; #7DA8
+綩 > wăn; #7DA9
+綪 > qiàn; #7DAA
+綫 > xiàn; #7DAB
+綬 > shòu; #7DAC
+維 > wéi; #7DAD
+綮 > qĭ; #7DAE
+綯 > táo; #7DAF
+綰 > wăn; #7DB0
+綱 > gāng; #7DB1
+網 > wăng; #7DB2
+綳 > bēng; #7DB3
+綴 > zhùi; #7DB4
+綵 > căi; #7DB5
+綶 > gŭo; #7DB6
+綷 > cùi; #7DB7
+綸 > lún; #7DB8
+綹 > lĭu; #7DB9
+綺 > qĭ; #7DBA
+綻 > zhàn; #7DBB
+綼 > bēi; #7DBC
+綽 > chùo; #7DBD
+綾 > líng; #7DBE
+綿 > mián; #7DBF
+緀 > qī; #7DC0
+緁 > qiè; #7DC1
+緂 > tān; #7DC2
+緃 > zōng; #7DC3
+緄 > gŭn; #7DC4
+緅 > zōu; #7DC5
+緆 > yì; #7DC6
+緇 > zī; #7DC7
+緈 > xìng; #7DC8
+緉 > liăng; #7DC9
+緊 > jĭn; #7DCA
+緋 > fēi; #7DCB
+緌 > rúi; #7DCC
+緍 > mín; #7DCD
+緎 > yù; #7DCE
+総 > zŏng; #7DCF
+緐 > fán; #7DD0
+緑 > lǜ; #7DD1
+緒 > xù; #7DD2
+緓 > yingl; #7DD3
+緔 > zhàng; #7DD4
+緖 > xù; #7DD6
+緗 > xiāng; #7DD7
+緘 > jiān; #7DD8
+緙 > kè; #7DD9
+線 > xiàn; #7DDA
+緛 > ruăn; #7DDB
+緜 > mián; #7DDC
+緝 > qì; #7DDD
+緞 > duàn; #7DDE
+緟 > zhòng; #7DDF
+締 > dì; #7DE0
+緡 > mín; #7DE1
+緢 > miáo; #7DE2
+緣 > yuán; #7DE3
+緤 > xiè; #7DE4
+緥 > băo; #7DE5
+緦 > sī; #7DE6
+緧 > qīu; #7DE7
+編 > biān; #7DE8
+緩 > huăn; #7DE9
+緪 > gēng; #7DEA
+緫 > cōng; #7DEB
+緬 > miăn; #7DEC
+緭 > wèi; #7DED
+緮 > fù; #7DEE
+緯 > wĕi; #7DEF
+緰 > yú; #7DF0
+緱 > gōu; #7DF1
+緲 > miăo; #7DF2
+緳 > xié; #7DF3
+練 > liàn; #7DF4
+緵 > zōng; #7DF5
+緶 > biàn; #7DF6
+緷 > yùn; #7DF7
+緸 > yīn; #7DF8
+緹 > tí; #7DF9
+緺 > guā; #7DFA
+緻 > zhì; #7DFB
+緼 > yūn; #7DFC
+緽 > chēng; #7DFD
+緾 > chán; #7DFE
+緿 > dài; #7DFF
+縀 > xiá; #7E00
+縁 > yuán; #7E01
+縂 > zŏng; #7E02
+縃 > xū; #7E03
+縆 > gēng; #7E06
+縈 > yíng; #7E08
+縉 > jìn; #7E09
+縊 > yì; #7E0A
+縋 > zhùi; #7E0B
+縌 > nì; #7E0C
+縍 > bāng; #7E0D
+縎 > gŭ; #7E0E
+縏 > pán; #7E0F
+縐 > zhòu; #7E10
+縑 > jiān; #7E11
+縒 > cŭo; #7E12
+縓 > quăn; #7E13
+縔 > shuăng; #7E14
+縕 > yūn; #7E15
+縖 > xiá; #7E16
+縗 > shuāi; #7E17
+縘 > xī; #7E18
+縙 > róng; #7E19
+縚 > tāo; #7E1A
+縛 > fú; #7E1B
+縜 > yún; #7E1C
+縝 > zhēn; #7E1D
+縞 > găo; #7E1E
+縟 > rù; #7E1F
+縠 > hú; #7E20
+縡 > zăi; #7E21
+縢 > téng; #7E22
+縣 > xiàn; #7E23
+縤 > sù; #7E24
+縥 > zhĕn; #7E25
+縦 > zòng; #7E26
+縧 > tāo; #7E27
+縩 > cài; #7E29
+縪 > bì; #7E2A
+縫 > féng; #7E2B
+縬 > cù; #7E2C
+縭 > lí; #7E2D
+縮 > sūo; #7E2E
+縯 > yĭn; #7E2F
+縰 > xĭ; #7E30
+縱 > zòng; #7E31
+縲 > léi; #7E32
+縳 > zhuàn; #7E33
+縴 > qiān; #7E34
+縵 > màn; #7E35
+縶 > zhí; #7E36
+縷 > lǚ; #7E37
+縸 > mò; #7E38
+縹 > piăo; #7E39
+縺 > lián; #7E3A
+縻 > mí; #7E3B
+縼 > xuàn; #7E3C
+總 > zŏng; #7E3D
+績 > jī; #7E3E
+縿 > shān; #7E3F
+繀 > sùi; #7E40
+繁 > fán; #7E41
+繂 > shuài; #7E42
+繃 > bēng; #7E43
+繄 > yī; #7E44
+繅 > sāo; #7E45
+繆 > móu; #7E46
+繇 > zhòu; #7E47
+繈 > qiăng; #7E48
+繉 > hún; #7E49
+繋 > xì; #7E4B
+繍 > xìu; #7E4D
+繎 > rán; #7E4E
+繏 > xuàn; #7E4F
+繐 > hùi; #7E50
+繑 > qiāo; #7E51
+繒 > zēng; #7E52
+繓 > zŭo; #7E53
+織 > zhī; #7E54
+繕 > shàn; #7E55
+繖 > săn; #7E56
+繗 > lín; #7E57
+繘 > yù; #7E58
+繙 > fān; #7E59
+繚 > liáo; #7E5A
+繛 > chùo; #7E5B
+繜 > zūn; #7E5C
+繝 > jiàn; #7E5D
+繞 > rào; #7E5E
+繟 > chăn; #7E5F
+繠 > rŭi; #7E60
+繡 > xìu; #7E61
+繢 > hùi; #7E62
+繣 > huà; #7E63
+繤 > zuăn; #7E64
+繥 > xī; #7E65
+繦 > qiăng; #7E66
+繨 > dá; #7E68
+繩 > shéng; #7E69
+繪 > hùi; #7E6A
+繫 > xì; #7E6B
+繬 > sè; #7E6C
+繭 > jiăn; #7E6D
+繮 > jiāng; #7E6E
+繯 > huán; #7E6F
+繰 > zăo; #7E70
+繱 > cōng; #7E71
+繲 > jiè; #7E72
+繳 > jiăo; #7E73
+繴 > bò; #7E74
+繵 > chán; #7E75
+繶 > yì; #7E76
+繷 > náo; #7E77
+繸 > sùi; #7E78
+繹 > yì; #7E79
+繺 > shăi; #7E7A
+繻 > xū; #7E7B
+繼 > jì; #7E7C
+繽 > bīn; #7E7D
+繾 > qiăn; #7E7E
+繿 > lán; #7E7F
+纀 > pú; #7E80
+纁 > xūn; #7E81
+纂 > zuăn; #7E82
+纃 > qí; #7E83
+纄 > péng; #7E84
+纅 > lì; #7E85
+纆 > mò; #7E86
+纇 > lèi; #7E87
+纈 > xié; #7E88
+纉 > zuăn; #7E89
+纊 > kuàng; #7E8A
+纋 > yōu; #7E8B
+續 > xù; #7E8C
+纍 > léi; #7E8D
+纎 > xiān; #7E8E
+纏 > chán; #7E8F
+纑 > lú; #7E91
+纒 > chán; #7E92
+纓 > yīng; #7E93
+纔 > cái; #7E94
+纕 > xiāng; #7E95
+纖 > xiān; #7E96
+纗 > zūi; #7E97
+纘 > zuăn; #7E98
+纙 > lùo; #7E99
+纚 > xĭ; #7E9A
+纛 > dào; #7E9B
+纜 > làn; #7E9C
+纝 > léi; #7E9D
+纞 > liàn; #7E9E
+纟 > sī; #7E9F
+纠 > jīu; #7EA0
+纡 > yū; #7EA1
+红 > hóng; #7EA2
+纣 > zhòu; #7EA3
+纤 > xiān; #7EA4
+纥 > hé; #7EA5
+约 > yuē; #7EA6
+级 > jí; #7EA7
+纨 > wán; #7EA8
+纩 > kuàng; #7EA9
+纪 > jì; #7EAA
+纫 > rèn; #7EAB
+纬 > wĕi; #7EAC
+纭 > yún; #7EAD
+纮 > hóng; #7EAE
+纯 > chún; #7EAF
+纰 > pí; #7EB0
+纱 > shā; #7EB1
+纲 > gāng; #7EB2
+纳 > nà; #7EB3
+纴 > rén; #7EB4
+纵 > zòng; #7EB5
+纶 > lún; #7EB6
+纷 > fēn; #7EB7
+纸 > zhĭ; #7EB8
+纹 > wén; #7EB9
+纺 > făng; #7EBA
+纻 > zhù; #7EBB
+纼 > yĭn; #7EBC
+纽 > nĭu; #7EBD
+纾 > shū; #7EBE
+线 > xiàn; #7EBF
+绀 > gàn; #7EC0
+绁 > xiè; #7EC1
+绂 > fú; #7EC2
+练 > liàn; #7EC3
+组 > zŭ; #7EC4
+绅 > shēn; #7EC5
+细 > xì; #7EC6
+织 > zhī; #7EC7
+终 > zhōng; #7EC8
+绉 > zhòu; #7EC9
+绊 > bàn; #7ECA
+绋 > fú; #7ECB
+绌 > zhúo; #7ECC
+绍 > shào; #7ECD
+绎 > yì; #7ECE
+经 > jīng; #7ECF
+绐 > dài; #7ED0
+绑 > băng; #7ED1
+绒 > róng; #7ED2
+结 > jié; #7ED3
+绔 > kù; #7ED4
+绕 > rào; #7ED5
+绖 > dié; #7ED6
+绗 > hèng; #7ED7
+绘 > hùi; #7ED8
+给 > gĕi; #7ED9
+绚 > xuàn; #7EDA
+绛 > jiàng; #7EDB
+络 > lùo; #7EDC
+绝 > jué; #7EDD
+绞 > jiăo; #7EDE
+统 > tŏng; #7EDF
+绠 > gĕng; #7EE0
+绡 > xiāo; #7EE1
+绢 > juàn; #7EE2
+绣 > xìu; #7EE3
+绤 > xì; #7EE4
+绥 > sūi; #7EE5
+绦 > tāo; #7EE6
+继 > jì; #7EE7
+绨 > tí; #7EE8
+绩 > jī; #7EE9
+绪 > xù; #7EEA
+绫 > líng; #7EEB
+续 > xù; #7EED
+绮 > qĭ; #7EEE
+绯 > fēi; #7EEF
+绰 > chùo; #7EF0
+绱 > zhăng; #7EF1
+绲 > gŭn; #7EF2
+绳 > shéng; #7EF3
+维 > wéi; #7EF4
+绵 > mián; #7EF5
+绶 > shòu; #7EF6
+绷 > bēng; #7EF7
+绸 > chóu; #7EF8
+绹 > táo; #7EF9
+绺 > lĭu; #7EFA
+绻 > quăn; #7EFB
+综 > zòng; #7EFC
+绽 > zhàn; #7EFD
+绾 > wăn; #7EFE
+绿 > lǜ; #7EFF
+缀 > zhùi; #7F00
+缁 > zī; #7F01
+缂 > kè; #7F02
+缃 > xiāng; #7F03
+缄 > jiān; #7F04
+缅 > miăn; #7F05
+缆 > làn; #7F06
+缇 > tí; #7F07
+缈 > miăo; #7F08
+缉 > qì; #7F09
+缊 > yūn; #7F0A
+缋 > hùi; #7F0B
+缌 > sī; #7F0C
+缍 > dŭo; #7F0D
+缎 > duàn; #7F0E
+缏 > biàn; #7F0F
+缐 > xiàn; #7F10
+缑 > gōu; #7F11
+缒 > zhùi; #7F12
+缓 > huăn; #7F13
+缔 > dì; #7F14
+缕 > lǚ; #7F15
+编 > biān; #7F16
+缗 > mín; #7F17
+缘 > yuán; #7F18
+缙 > jìn; #7F19
+缚 > fú; #7F1A
+缛 > rù; #7F1B
+缜 > zhēn; #7F1C
+缝 > féng; #7F1D
+缞 > shuāi; #7F1E
+缟 > găo; #7F1F
+缠 > chán; #7F20
+缡 > lí; #7F21
+缢 > yì; #7F22
+缣 > jiān; #7F23
+缤 > bīn; #7F24
+缥 > piăo; #7F25
+缦 > màn; #7F26
+缧 > léi; #7F27
+缨 > yīng; #7F28
+缩 > sūo; #7F29
+缪 > móu; #7F2A
+缫 > sāo; #7F2B
+缬 > xié; #7F2C
+缭 > liáo; #7F2D
+缮 > shàn; #7F2E
+缯 > zēng; #7F2F
+缰 > jiāng; #7F30
+缱 > qiăn; #7F31
+缲 > zăo; #7F32
+缳 > huán; #7F33
+缴 > jiăo; #7F34
+缵 > zuăn; #7F35
+缶 > fŏu; #7F36
+缷 > xiè; #7F37
+缸 > gāng; #7F38
+缹 > fŏu; #7F39
+缺 > quē; #7F3A
+缻 > fŏu; #7F3B
+缽 > bō; #7F3D
+缾 > píng; #7F3E
+缿 > hòu; #7F3F
+罁 > gāng; #7F41
+罂 > yīng; #7F42
+罃 > yīng; #7F43
+罄 > qìng; #7F44
+罅 > xià; #7F45
+罆 > guàn; #7F46
+罇 > zūn; #7F47
+罈 > tán; #7F48
+罊 > qì; #7F4A
+罋 > wèng; #7F4B
+罌 > yīng; #7F4C
+罍 > léi; #7F4D
+罎 > tán; #7F4E
+罏 > lú; #7F4F
+罐 > guàn; #7F50
+网 > wăng; #7F51
+罒 > wăng; #7F52
+罓 > gāng; #7F53
+罔 > wăng; #7F54
+罕 > hăn; #7F55
+罗 > lūo; #7F57
+罘 > fú; #7F58
+罙 > mí; #7F59
+罚 > fá; #7F5A
+罛 > gū; #7F5B
+罜 > zhŭ; #7F5C
+罝 > jū; #7F5D
+罞 > máo; #7F5E
+罟 > gŭ; #7F5F
+罠 > mín; #7F60
+罡 > gāng; #7F61
+罢 > bà; #7F62
+罣 > guà; #7F63
+罤 > tí; #7F64
+罥 > juàn; #7F65
+罦 > fū; #7F66
+罧 > lín; #7F67
+罨 > yăn; #7F68
+罩 > zhào; #7F69
+罪 > zùi; #7F6A
+罫 > guà; #7F6B
+罬 > zhúo; #7F6C
+罭 > yù; #7F6D
+置 > zhì; #7F6E
+罯 > ăn; #7F6F
+罰 > fá; #7F70
+罱 > năn; #7F71
+署 > shŭ; #7F72
+罳 > sī; #7F73
+罴 > pí; #7F74
+罵 > mà; #7F75
+罶 > lĭu; #7F76
+罷 > bà; #7F77
+罸 > fá; #7F78
+罹 > lí; #7F79
+罺 > chāo; #7F7A
+罻 > wèi; #7F7B
+罼 > bì; #7F7C
+罽 > jì; #7F7D
+罾 > zēng; #7F7E
+罿 > tóng; #7F7F
+羀 > lĭu; #7F80
+羁 > jī; #7F81
+羂 > juàn; #7F82
+羃 > mì; #7F83
+羄 > zhào; #7F84
+羅 > lúo; #7F85
+羆 > pí; #7F86
+羇 > jī; #7F87
+羈 > jī; #7F88
+羉 > luán; #7F89
+羊 > yáng; #7F8A
+羋 > miē; #7F8B
+羌 > qiāng; #7F8C
+羍 > tà; #7F8D
+美 > mĕi; #7F8E
+羏 > yáng; #7F8F
+羐 > yŏu; #7F90
+羑 > yŏu; #7F91
+羒 > fén; #7F92
+羓 > bā; #7F93
+羔 > gāo; #7F94
+羕 > yàng; #7F95
+羖 > gŭ; #7F96
+羗 > qiāng; #7F97
+羘 > zāng; #7F98
+羙 > gāo; #7F99
+羚 > líng; #7F9A
+羛 > yì; #7F9B
+羜 > zhù; #7F9C
+羝 > dī; #7F9D
+羞 > xīu; #7F9E
+羟 > qiān; #7F9F
+羠 > yí; #7FA0
+羡 > xiàn; #7FA1
+羢 > róng; #7FA2
+羣 > qún; #7FA3
+群 > qún; #7FA4
+羥 > qiān; #7FA5
+羦 > huán; #7FA6
+羧 > zūi; #7FA7
+羨 > xiàn; #7FA8
+義 > yì; #7FA9
+羫 > qiāng; #7FAB
+羬 > xián; #7FAC
+羭 > yú; #7FAD
+羮 > gēng; #7FAE
+羯 > jié; #7FAF
+羰 > tāng; #7FB0
+羱 > yuán; #7FB1
+羲 > xī; #7FB2
+羳 > fán; #7FB3
+羴 > shān; #7FB4
+羵 > fĕn; #7FB5
+羶 > shān; #7FB6
+羷 > liăn; #7FB7
+羸 > léi; #7FB8
+羹 > gēng; #7FB9
+羺 > nóu; #7FBA
+羻 > qiàng; #7FBB
+羼 > chàn; #7FBC
+羽 > yŭ; #7FBD
+羾 > gòng; #7FBE
+羿 > yì; #7FBF
+翀 > chóng; #7FC0
+翁 > wēng; #7FC1
+翂 > fēn; #7FC2
+翃 > hóng; #7FC3
+翄 > chì; #7FC4
+翅 > chì; #7FC5
+翆 > cùi; #7FC6
+翇 > fú; #7FC7
+翈 > xiá; #7FC8
+翉 > pĕn; #7FC9
+翊 > yì; #7FCA
+翋 > lā; #7FCB
+翌 > yì; #7FCC
+翍 > pī; #7FCD
+翎 > líng; #7FCE
+翏 > lìu; #7FCF
+翐 > zhì; #7FD0
+翑 > qú; #7FD1
+習 > xí; #7FD2
+翓 > xié; #7FD3
+翔 > xiáng; #7FD4
+翕 > xì; #7FD5
+翖 > xì; #7FD6
+翗 > qí; #7FD7
+翘 > qiáo; #7FD8
+翙 > hùi; #7FD9
+翚 > hūi; #7FDA
+翛 > xiāo; #7FDB
+翜 > sè; #7FDC
+翝 > hóng; #7FDD
+翞 > jiāng; #7FDE
+翟 > dí; #7FDF
+翠 > cùi; #7FE0
+翡 > fĕi; #7FE1
+翢 > tāo; #7FE2
+翣 > shà; #7FE3
+翤 > chì; #7FE4
+翥 > zhù; #7FE5
+翦 > jiăn; #7FE6
+翧 > xuān; #7FE7
+翨 > shì; #7FE8
+翩 > piān; #7FE9
+翪 > zōng; #7FEA
+翫 > wàn; #7FEB
+翬 > hūi; #7FEC
+翭 > hóu; #7FED
+翮 > hé; #7FEE
+翯 > hè; #7FEF
+翰 > hàn; #7FF0
+翱 > áo; #7FF1
+翲 > piāo; #7FF2
+翳 > yì; #7FF3
+翴 > lián; #7FF4
+翵 > qú; #7FF5
+翷 > lín; #7FF7
+翸 > pĕn; #7FF8
+翹 > qiáo; #7FF9
+翺 > áo; #7FFA
+翻 > fān; #7FFB
+翼 > yì; #7FFC
+翽 > hùi; #7FFD
+翾 > xuān; #7FFE
+翿 > dào; #7FFF
+耀 > yào; #8000
+老 > lăo; #8001
+考 > kăo; #8003
+耄 > mào; #8004
+者 > zhĕ; #8005
+耆 > qí; #8006
+耇 > gŏu; #8007
+耈 > gŏu; #8008
+耉 > gŏu; #8009
+耊 > diè; #800A
+耋 > diè; #800B
+而 > ér; #800C
+耍 > shuă; #800D
+耎 > ruăn; #800E
+耏 > ér; #800F
+耐 > nài; #8010
+耑 > zhuān; #8011
+耒 > lĕi; #8012
+耓 > tīng; #8013
+耔 > zĭ; #8014
+耕 > gēng; #8015
+耖 > chào; #8016
+耗 > hào; #8017
+耘 > yún; #8018
+耙 > pá; #8019
+耚 > pī; #801A
+耛 > chí; #801B
+耜 > sì; #801C
+耝 > chú; #801D
+耞 > jiā; #801E
+耟 > jù; #801F
+耠 > hé; #8020
+耡 > chú; #8021
+耢 > lào; #8022
+耣 > lŭn; #8023
+耤 > jí; #8024
+耥 > tăng; #8025
+耦 > ŏu; #8026
+耧 > lóu; #8027
+耨 > nòu; #8028
+耩 > gōu; #8029
+耪 > păng; #802A
+耫 > zé; #802B
+耬 > lóu; #802C
+耭 > jī; #802D
+耮 > lào; #802E
+耯 > hùo; #802F
+耰 > yōu; #8030
+耱 > mò; #8031
+耲 > huái; #8032
+耳 > ĕr; #8033
+耴 > zhé; #8034
+耵 > tīng; #8035
+耶 > yé; #8036
+耷 > dā; #8037
+耸 > sŏng; #8038
+耹 > qín; #8039
+耺 > yún; #803A
+耻 > chĭ; #803B
+耼 > dān; #803C
+耽 > dān; #803D
+耾 > hóng; #803E
+耿 > gĕng; #803F
+聀 > zhí; #8040
+聂 > niè; #8042
+聃 > dān; #8043
+聄 > zhĕn; #8044
+聅 > chè; #8045
+聆 > líng; #8046
+聇 > zhēng; #8047
+聈 > yŏu; #8048
+聉 > wā; #8049
+聊 > liáo; #804A
+聋 > lóng; #804B
+职 > zhí; #804C
+聍 > níng; #804D
+聎 > tiāo; #804E
+聏 > ér; #804F
+聐 > yà; #8050
+聑 > dié; #8051
+聒 > guā; #8052
+联 > lián; #8054
+聕 > hào; #8055
+聖 > shèng; #8056
+聗 > liè; #8057
+聘 > pìn; #8058
+聙 > jīng; #8059
+聚 > jù; #805A
+聛 > bì; #805B
+聜 > dĭ; #805C
+聝 > gúo; #805D
+聞 > wén; #805E
+聟 > xù; #805F
+聠 > píng; #8060
+聡 > cōng; #8061
+聤 > tíng; #8064
+聥 > yŭ; #8065
+聦 > cōng; #8066
+聧 > kúi; #8067
+聩 > kùi; #8069
+聪 > cōng; #806A
+聫 > lián; #806B
+聬 > wĕng; #806C
+聭 > kùi; #806D
+聮 > lián; #806E
+聯 > lián; #806F
+聰 > cōng; #8070
+聱 > áo; #8071
+聲 > shēng; #8072
+聳 > sŏng; #8073
+聴 > tīng; #8074
+聵 > kùi; #8075
+聶 > niè; #8076
+職 > zhí; #8077
+聸 > dān; #8078
+聹 > níng; #8079
+聺 > qie; #807A
+聻 > jī; #807B
+聼 > tīng; #807C
+聽 > tīng; #807D
+聾 > lóng; #807E
+聿 > yù; #807F
+肀 > yù; #8080
+肁 > zhào; #8081
+肂 > sì; #8082
+肃 > sù; #8083
+肄 > yì; #8084
+肅 > sù; #8085
+肆 > sì; #8086
+肇 > zhào; #8087
+肈 > zhào; #8088
+肉 > ròu; #8089
+肊 > yì; #808A
+肋 > lè; #808B
+肌 > jī; #808C
+肍 > qíu; #808D
+肎 > kĕn; #808E
+肏 > cào; #808F
+肐 > gē; #8090
+肑 > dì; #8091
+肒 > huán; #8092
+肓 > huāng; #8093
+肔 > yĭ; #8094
+肕 > rèn; #8095
+肖 > xiào; #8096
+肗 > rŭ; #8097
+肘 > zhŏu; #8098
+肙 > yuān; #8099
+肚 > dù; #809A
+肛 > gāng; #809B
+肜 > róng; #809C
+肝 > gān; #809D
+肞 > chā; #809E
+肟 > wò; #809F
+肠 > cháng; #80A0
+股 > gŭ; #80A1
+肢 > zhī; #80A2
+肣 > hán; #80A3
+肤 > fū; #80A4
+肥 > féi; #80A5
+肦 > fén; #80A6
+肧 > pēi; #80A7
+肨 > pàng; #80A8
+肩 > jiān; #80A9
+肪 > fáng; #80AA
+肫 > zhūn; #80AB
+肬 > yóu; #80AC
+肭 > nà; #80AD
+肮 > háng; #80AE
+肯 > kĕn; #80AF
+肰 > rán; #80B0
+肱 > gōng; #80B1
+育 > yù; #80B2
+肳 > wĕn; #80B3
+肴 > yáo; #80B4
+肵 > jìn; #80B5
+肶 > pí; #80B6
+肷 > qiān; #80B7
+肸 > xì; #80B8
+肹 > xī; #80B9
+肺 > fèi; #80BA
+肻 > kĕn; #80BB
+肼 > jĭng; #80BC
+肽 > tài; #80BD
+肾 > shèn; #80BE
+肿 > zhŏng; #80BF
+胀 > zhàng; #80C0
+胁 > xié; #80C1
+胂 > shēn; #80C2
+胃 > wèi; #80C3
+胄 > zhòu; #80C4
+胅 > dié; #80C5
+胆 > dăn; #80C6
+胇 > fèi; #80C7
+胈 > bá; #80C8
+胉 > bó; #80C9
+胊 > qú; #80CA
+胋 > tián; #80CB
+背 > bèi; #80CC
+胍 > guā; #80CD
+胎 > tāi; #80CE
+胏 > zĭ; #80CF
+胐 > kū; #80D0
+胑 > zhī; #80D1
+胒 > nì; #80D2
+胓 > píng; #80D3
+胔 > zì; #80D4
+胕 > fù; #80D5
+胖 > pàng; #80D6
+胗 > zhēn; #80D7
+胘 > xián; #80D8
+胙 > zùo; #80D9
+胚 > pēi; #80DA
+胛 > jiă; #80DB
+胜 > shèng; #80DC
+胝 > zhī; #80DD
+胞 > bāo; #80DE
+胟 > mŭ; #80DF
+胠 > qū; #80E0
+胡 > hú; #80E1
+胢 > kē; #80E2
+胣 > yĭ; #80E3
+胤 > yìn; #80E4
+胥 > xū; #80E5
+胦 > yāng; #80E6
+胧 > lóng; #80E7
+胨 > dòng; #80E8
+胩 > kă; #80E9
+胪 > lú; #80EA
+胫 > jìng; #80EB
+胬 > nŭ; #80EC
+胭 > yān; #80ED
+胮 > páng; #80EE
+胯 > kuà; #80EF
+胰 > yí; #80F0
+胱 > guāng; #80F1
+胲 > gāi; #80F2
+胳 > gē; #80F3
+胴 > dòng; #80F4
+胵 > zhì; #80F5
+胶 > xiáo; #80F6
+胷 > xīong; #80F7
+胸 > xīong; #80F8
+胹 > ér; #80F9
+胺 > è; #80FA
+胻 > xíng; #80FB
+胼 > pián; #80FC
+能 > néng; #80FD
+胾 > zì; #80FE
+胿 > gui; #80FF
+脀 > chéng; #8100
+脁 > tiào; #8101
+脂 > zhī; #8102
+脃 > cùi; #8103
+脄 > méi; #8104
+脅 > xié; #8105
+脆 > cùi; #8106
+脇 > xié; #8107
+脈 > mò; #8108
+脉 > mài; #8109
+脊 > jí; #810A
+脍 > kuài; #810D
+脎 > sà; #810E
+脏 > zāng; #810F
+脐 > qí; #8110
+脑 > năo; #8111
+脒 > mĭ; #8112
+脓 > nóng; #8113
+脔 > luán; #8114
+脕 > wăn; #8115
+脖 > bó; #8116
+脗 > wĕn; #8117
+脘 > guăn; #8118
+脙 > qíu; #8119
+脚 > jiăo; #811A
+脛 > jìng; #811B
+脜 > róu; #811C
+脝 > hēng; #811D
+脞 > cŭo; #811E
+脟 > liè; #811F
+脠 > shān; #8120
+脡 > tĭng; #8121
+脢 > méi; #8122
+脣 > chún; #8123
+脤 > shèn; #8124
+脥 > xié; #8125
+脦 > de; #8126
+脧 > zūi; #8127
+脨 > cù; #8128
+脩 > xīu; #8129
+脪 > xìn; #812A
+脫 > tūo; #812B
+脬 > pāo; #812C
+脭 > chéng; #812D
+脮 > nĕi; #812E
+脯 > fŭ; #812F
+脰 > dòu; #8130
+脱 > tūo; #8131
+脲 > niào; #8132
+脴 > pĭ; #8134
+脵 > gŭ; #8135
+脶 > guā; #8136
+脷 > lì; #8137
+脸 > liăn; #8138
+脹 > zhàng; #8139
+脺 > cùi; #813A
+脻 > jié; #813B
+脼 > liăng; #813C
+脽 > zhōu; #813D
+脾 > pí; #813E
+脿 > biāo; #813F
+腀 > lún; #8140
+腁 > pián; #8141
+腂 > gùo; #8142
+腃 > kùi; #8143
+腄 > chúi; #8144
+腅 > dàn; #8145
+腆 > tiăn; #8146
+腇 > nĕi; #8147
+腈 > jīng; #8148
+腉 > jiē; #8149
+腊 > là; #814A
+腋 > yì; #814B
+腌 > ān; #814C
+腍 > rĕn; #814D
+腎 > shèn; #814E
+腏 > chùo; #814F
+腐 > fŭ; #8150
+腑 > fŭ; #8151
+腒 > jū; #8152
+腓 > féi; #8153
+腔 > qiāng; #8154
+腕 > wàn; #8155
+腖 > dòng; #8156
+腗 > pí; #8157
+腘 > gúo; #8158
+腙 > zōng; #8159
+腚 > dìng; #815A
+腛 > wū; #815B
+腜 > méi; #815C
+腝 > ruăn; #815D
+腞 > zhuàn; #815E
+腟 > zhì; #815F
+腠 > còu; #8160
+腡 > guā; #8161
+腢 > ŏu; #8162
+腣 > dì; #8163
+腤 > ān; #8164
+腥 > xīng; #8165
+腦 > năo; #8166
+腧 > yú; #8167
+腨 > chuăn; #8168
+腩 > năn; #8169
+腪 > yùn; #816A
+腫 > zhŏng; #816B
+腬 > róu; #816C
+腭 > è; #816D
+腮 > sāi; #816E
+腯 > tú; #816F
+腰 > yāo; #8170
+腱 > jiàn; #8171
+腲 > wĕi; #8172
+腳 > jiăo; #8173
+腴 > yú; #8174
+腵 > jiā; #8175
+腶 > duàn; #8176
+腷 > bì; #8177
+腸 > cháng; #8178
+腹 > fù; #8179
+腺 > xiàn; #817A
+腻 > nì; #817B
+腼 > miăn; #817C
+腽 > wà; #817D
+腾 > téng; #817E
+腿 > tŭi; #817F
+膀 > băng; #8180
+膁 > qiān; #8181
+膂 > lǚ; #8182
+膃 > wà; #8183
+膄 > sòu; #8184
+膅 > táng; #8185
+膆 > sù; #8186
+膇 > zhùi; #8187
+膈 > gé; #8188
+膉 > yì; #8189
+膊 > bó; #818A
+膋 > liáo; #818B
+膌 > jí; #818C
+膍 > pí; #818D
+膎 > xié; #818E
+膏 > gāo; #818F
+膐 > lǚ; #8190
+膑 > bìn; #8191
+膒 > ou; #8192
+膓 > cháng; #8193
+膔 > lù; #8194
+膕 > gúo; #8195
+膖 > pāng; #8196
+膗 > chuái; #8197
+膘 > piăo; #8198
+膙 > jiăng; #8199
+膚 > fū; #819A
+膛 > táng; #819B
+膜 > mò; #819C
+膝 > xī; #819D
+膞 > zhuān; #819E
+膟 > lǜ; #819F
+膠 > jiāo; #81A0
+膡 > yìng; #81A1
+膢 > lǘ; #81A2
+膣 > zhì; #81A3
+膥 > chūn; #81A5
+膦 > liăn; #81A6
+膧 > tóng; #81A7
+膨 > péng; #81A8
+膩 > nì; #81A9
+膪 > zhà; #81AA
+膫 > liáo; #81AB
+膬 > cùi; #81AC
+膭 > gūi; #81AD
+膮 > xiāo; #81AE
+膯 > tēng; #81AF
+膰 > fán; #81B0
+膱 > zhí; #81B1
+膲 > jiāo; #81B2
+膳 > shàn; #81B3
+膴 > wú; #81B4
+膵 > cùi; #81B5
+膶 > rùn; #81B6
+膷 > xiāng; #81B7
+膸 > sŭi; #81B8
+膹 > fèn; #81B9
+膺 > yīng; #81BA
+膻 > tăn; #81BB
+膼 > zhuā; #81BC
+膽 > dăn; #81BD
+膾 > kuài; #81BE
+膿 > nóng; #81BF
+臀 > tún; #81C0
+臁 > lián; #81C1
+臂 > bì; #81C2
+臃 > yŏng; #81C3
+臄 > jué; #81C4
+臅 > chù; #81C5
+臆 > yì; #81C6
+臇 > juăn; #81C7
+臈 > là; #81C8
+臉 > liăn; #81C9
+臊 > sāo; #81CA
+臋 > tún; #81CB
+臌 > gŭ; #81CC
+臍 > qí; #81CD
+臎 > cùi; #81CE
+臏 > bìn; #81CF
+臐 > xūn; #81D0
+臑 > rú; #81D1
+臒 > hùo; #81D2
+臓 > zàng; #81D3
+臔 > xiàn; #81D4
+臕 > biāo; #81D5
+臖 > xìng; #81D6
+臗 > kuān; #81D7
+臘 > là; #81D8
+臙 > yān; #81D9
+臚 > lú; #81DA
+臛 > hùo; #81DB
+臜 > zāng; #81DC
+臝 > lŭo; #81DD
+臞 > qú; #81DE
+臟 > zàng; #81DF
+臠 > luán; #81E0
+臡 > ní; #81E1
+臢 > zāng; #81E2
+臣 > chén; #81E3
+臤 > qiān; #81E4
+臥 > wò; #81E5
+臦 > guàng; #81E6
+臧 > záng; #81E7
+臨 > lín; #81E8
+臩 > guàng; #81E9
+自 > zì; #81EA
+臫 > jiăo; #81EB
+臬 > niè; #81EC
+臭 > chòu; #81ED
+臮 > jì; #81EE
+臯 > gāo; #81EF
+臰 > chòu; #81F0
+臱 > mián; #81F1
+臲 > niè; #81F2
+至 > zhì; #81F3
+致 > zhì; #81F4
+臵 > gé; #81F5
+臶 > jiàn; #81F6
+臷 > dié; #81F7
+臸 > zhì; #81F8
+臹 > xīu; #81F9
+臺 > tái; #81FA
+臻 > zhēn; #81FB
+臼 > jìu; #81FC
+臽 > xiàn; #81FD
+臾 > yú; #81FE
+臿 > chā; #81FF
+舀 > yăo; #8200
+舁 > yú; #8201
+舂 > chōng; #8202
+舃 > xì; #8203
+舄 > xì; #8204
+舅 > jìu; #8205
+舆 > yú; #8206
+與 > yŭ; #8207
+興 > xīng; #8208
+舉 > jŭ; #8209
+舊 > jìu; #820A
+舋 > xìn; #820B
+舌 > shé; #820C
+舍 > shè; #820D
+舏 > jĭu; #820F
+舐 > shì; #8210
+舑 > tān; #8211
+舒 > shū; #8212
+舓 > shì; #8213
+舔 > tiăn; #8214
+舕 > dàn; #8215
+舖 > pù; #8216
+舗 > pù; #8217
+舘 > guăn; #8218
+舙 > huà; #8219
+舚 > tān; #821A
+舛 > chuăn; #821B
+舜 > shùn; #821C
+舝 > xiá; #821D
+舞 > wŭ; #821E
+舟 > zhōu; #821F
+舠 > dāo; #8220
+舡 > gāng; #8221
+舢 > shān; #8222
+舣 > yĭ; #8223
+舥 > pā; #8225
+舦 > tài; #8226
+舧 > fán; #8227
+舨 > băn; #8228
+舩 > chuán; #8229
+航 > háng; #822A
+舫 > făng; #822B
+般 > bān; #822C
+舭 > què; #822D
+舯 > zhōng; #822F
+舰 > jiàn; #8230
+舱 > cāng; #8231
+舲 > líng; #8232
+舳 > zhú; #8233
+舴 > zé; #8234
+舵 > dùo; #8235
+舶 > bó; #8236
+舷 > xián; #8237
+舸 > gĕ; #8238
+船 > chuán; #8239
+舺 > jiá; #823A
+舻 > lŭ; #823B
+舼 > hóng; #823C
+舽 > páng; #823D
+舾 > xī; #823E
+艀 > fú; #8240
+艁 > zào; #8241
+艂 > féng; #8242
+艃 > lí; #8243
+艄 > shāo; #8244
+艅 > yú; #8245
+艆 > láng; #8246
+艇 > tĭng; #8247
+艉 > wĕi; #8249
+艊 > bó; #824A
+艋 > mĕng; #824B
+艌 > niàn; #824C
+艍 > jū; #824D
+艎 > huáng; #824E
+艏 > shŏu; #824F
+艐 > zōng; #8250
+艑 > biàn; #8251
+艒 > mào; #8252
+艓 > dié; #8253
+艕 > bàng; #8255
+艖 > chā; #8256
+艗 > yì; #8257
+艘 > sāo; #8258
+艙 > cāng; #8259
+艚 > cáo; #825A
+艛 > lóu; #825B
+艜 > dài; #825C
+艞 > yào; #825E
+艟 > tóng; #825F
+艡 > dāng; #8261
+艢 > tán; #8262
+艣 > lŭ; #8263
+艤 > yĭ; #8264
+艥 > jiè; #8265
+艦 > jiàn; #8266
+艧 > hùo; #8267
+艨 > méng; #8268
+艩 > qí; #8269
+艪 > lŭ; #826A
+艫 > lú; #826B
+艬 > chán; #826C
+艭 > shuāng; #826D
+艮 > gèn; #826E
+良 > liáng; #826F
+艰 > jiān; #8270
+艱 > jiān; #8271
+色 > sè; #8272
+艳 > yàn; #8273
+艴 > fú; #8274
+艵 > píng; #8275
+艶 > yàn; #8276
+艷 > yàn; #8277
+艸 > căo; #8278
+艹 > căo' 'zì' 'tóu; #8279
+艺 > yì; #827A
+艻 > lè; #827B
+艼 > tīng; #827C
+艽 > qíu; #827D
+艾 > ài; #827E
+艿 > năi; #827F
+芀 > tiáo; #8280
+芁 > jiāo; #8281
+节 > jié; #8282
+芃 > péng; #8283
+芄 > wán; #8284
+芅 > yì; #8285
+芆 > chāi; #8286
+芇 > mián; #8287
+芈 > miē; #8288
+芉 > gān; #8289
+芊 > qiān; #828A
+芋 > yù; #828B
+芌 > yù; #828C
+芍 > shùo; #828D
+芎 > qīong; #828E
+芏 > tŭ; #828F
+芐 > xià; #8290
+芑 > qĭ; #8291
+芒 > máng; #8292
+芓 > zĭ; #8293
+芔 > hŭi; #8294
+芕 > sūi; #8295
+芖 > zhì; #8296
+芗 > xiāng; #8297
+芘 > bī; #8298
+芙 > fú; #8299
+芚 > tún; #829A
+芛 > wĕi; #829B
+芜 > wú; #829C
+芝 > zhī; #829D
+芞 > qĭ; #829E
+芟 > shān; #829F
+芠 > wén; #82A0
+芡 > qiàn; #82A1
+芢 > rén; #82A2
+芣 > fŏu; #82A3
+芤 > kōu; #82A4
+芥 > jiè; #82A5
+芦 > lú; #82A6
+芧 > xù; #82A7
+芨 > jí; #82A8
+芩 > qín; #82A9
+芪 > qí; #82AA
+芫 > yuán; #82AB
+芬 > fēn; #82AC
+芭 > bā; #82AD
+芮 > rùi; #82AE
+芯 > xīn; #82AF
+芰 > jì; #82B0
+花 > huā; #82B1
+芲 > huā; #82B2
+芳 > fāng; #82B3
+芴 > wù; #82B4
+芵 > jué; #82B5
+芶 > gōu; #82B6
+芷 > zhĭ; #82B7
+芸 > yún; #82B8
+芹 > qín; #82B9
+芺 > ăo; #82BA
+芻 > chú; #82BB
+芼 > mào; #82BC
+芽 > yá; #82BD
+芾 > fèi; #82BE
+芿 > rèng; #82BF
+苀 > háng; #82C0
+苁 > cōng; #82C1
+苂 > yín; #82C2
+苃 > yŏu; #82C3
+苄 > biàn; #82C4
+苅 > yì; #82C5
+苇 > wĕi; #82C7
+苈 > lì; #82C8
+苉 > pĭ; #82C9
+苊 > è; #82CA
+苋 > xiàn; #82CB
+苌 > cháng; #82CC
+苍 > cāng; #82CD
+苎 > méng; #82CE
+苏 > sū; #82CF
+苐 > yí; #82D0
+苑 > yuàn; #82D1
+苒 > răn; #82D2
+苓 > líng; #82D3
+苔 > tái; #82D4
+苕 > tiáo; #82D5
+苖 > dĭ; #82D6
+苗 > miáo; #82D7
+苘 > qĭong; #82D8
+苙 > lì; #82D9
+苚 > yòng; #82DA
+苛 > kē; #82DB
+苜 > mù; #82DC
+苝 > pèi; #82DD
+苞 > bāo; #82DE
+苟 > gŏu; #82DF
+苠 > mín; #82E0
+苡 > yĭ; #82E1
+苢 > yĭ; #82E2
+苣 > jù; #82E3
+苤 > pĭ; #82E4
+若 > rùo; #82E5
+苦 > kŭ; #82E6
+苧 > zhù; #82E7
+苨 > nĭ; #82E8
+苩 > bó; #82E9
+苪 > bĭng; #82EA
+苫 > shān; #82EB
+苬 > qíu; #82EC
+苭 > yăo; #82ED
+苮 > xiān; #82EE
+苯 > bĕn; #82EF
+苰 > hóng; #82F0
+英 > yīng; #82F1
+苲 > zhă; #82F2
+苳 > dōng; #82F3
+苴 > jū; #82F4
+苵 > dié; #82F5
+苶 > nié; #82F6
+苷 > gān; #82F7
+苸 > hū; #82F8
+苹 > píng; #82F9
+苺 > méi; #82FA
+苻 > fú; #82FB
+苼 > shēng; #82FC
+苽 > gū; #82FD
+苾 > bì; #82FE
+苿 > wèi; #82FF
+茀 > fú; #8300
+茁 > zhúo; #8301
+茂 > mào; #8302
+范 > fàn; #8303
+茄 > qié; #8304
+茅 > máo; #8305
+茆 > măo; #8306
+茇 > bá; #8307
+茈 > zĭ; #8308
+茉 > mò; #8309
+茊 > zī; #830A
+茋 > dĭ; #830B
+茌 > chí; #830C
+茍 > jì; #830D
+茎 > jīng; #830E
+茏 > lóng; #830F
+茑 > niăo; #8311
+茓 > xué; #8313
+茔 > yíng; #8314
+茕 > qíong; #8315
+茖 > gé; #8316
+茗 > mĭng; #8317
+茘 > lì; #8318
+茙 > róng; #8319
+茚 > yìn; #831A
+茛 > gèn; #831B
+茜 > qiàn; #831C
+茝 > chăi; #831D
+茞 > chén; #831E
+茟 > yù; #831F
+茠 > xīu; #8320
+茡 > zì; #8321
+茢 > liè; #8322
+茣 > wú; #8323
+茤 > jì; #8324
+茥 > kūi; #8325
+茦 > cè; #8326
+茧 > chóng; #8327
+茨 > cí; #8328
+茩 > gŏu; #8329
+茪 > guāng; #832A
+茫 > máng; #832B
+茬 > chí; #832C
+茭 > jiāo; #832D
+茮 > jiāo; #832E
+茯 > fú; #832F
+茰 > yú; #8330
+茱 > zhū; #8331
+茲 > zī; #8332
+茳 > jiāng; #8333
+茴 > húi; #8334
+茵 > yīn; #8335
+茶 > chá; #8336
+茷 > fá; #8337
+茸 > róng; #8338
+茹 > rú; #8339
+茺 > chōng; #833A
+茻 > măng; #833B
+茼 > tóng; #833C
+茽 > zhòng; #833D
+茿 > zhú; #833F
+荀 > xún; #8340
+荁 > huán; #8341
+荂 > kuā; #8342
+荃 > quán; #8343
+荄 > gāi; #8344
+荅 > dā; #8345
+荆 > jīng; #8346
+荇 > xìng; #8347
+荈 > quàn; #8348
+草 > căo; #8349
+荊 > jīng; #834A
+荋 > ér; #834B
+荌 > àn; #834C
+荍 > shōu; #834D
+荎 > chí; #834E
+荏 > rĕn; #834F
+荐 > jiàn; #8350
+荑 > tí; #8351
+荒 > huāng; #8352
+荓 > píng; #8353
+荔 > lì; #8354
+荕 > jīn; #8355
+荖 > lăo; #8356
+荗 > shù; #8357
+荘 > zhuāng; #8358
+荙 > dá; #8359
+荚 > jiá; #835A
+荛 > ráo; #835B
+荜 > bì; #835C
+荝 > zé; #835D
+荞 > qiáo; #835E
+荟 > hùi; #835F
+荠 > qí; #8360
+荡 > dàng; #8361
+荣 > róng; #8363
+荤 > hūn; #8364
+荥 > yíng; #8365
+荦 > lùo; #8366
+荧 > yíng; #8367
+荨 > xún; #8368
+荩 > jìn; #8369
+荪 > sūn; #836A
+荫 > yìn; #836B
+荬 > măi; #836C
+荭 > hóng; #836D
+荮 > zhòu; #836E
+药 > yào; #836F
+荰 > dù; #8370
+荱 > wĕi; #8371
+荲 > chù; #8372
+荳 > dòu; #8373
+荴 > fū; #8374
+荵 > rĕn; #8375
+荶 > yín; #8376
+荷 > hé; #8377
+荸 > bí; #8378
+荹 > bù; #8379
+荺 > yún; #837A
+荻 > dí; #837B
+荼 > tú; #837C
+荽 > sūi; #837D
+荾 > sūi; #837E
+荿 > chéng; #837F
+莀 > chén; #8380
+莁 > wú; #8381
+莂 > bié; #8382
+莃 > xī; #8383
+莄 > gĕng; #8384
+莅 > lì; #8385
+莆 > fŭ; #8386
+莇 > zhù; #8387
+莈 > mò; #8388
+莉 > lì; #8389
+莊 > zhuāng; #838A
+莋 > jí; #838B
+莌 > dúo; #838C
+莍 > qíu; #838D
+莎 > shā; #838E
+莏 > sūo; #838F
+莐 > chén; #8390
+莑 > fēng; #8391
+莒 > jŭ; #8392
+莓 > méi; #8393
+莔 > méng; #8394
+莕 > xìng; #8395
+莖 > jīng; #8396
+莗 > chē; #8397
+莘 > xīn; #8398
+莙 > jūn; #8399
+莚 > yán; #839A
+莛 > tíng; #839B
+莜 > diào; #839C
+莝 > cùo; #839D
+莞 > wăn; #839E
+莟 > hàn; #839F
+莠 > yŏu; #83A0
+莡 > cùo; #83A1
+莢 > jiá; #83A2
+莣 > wáng; #83A3
+莤 > yóu; #83A4
+莥 > nĭu; #83A5
+莦 > shāo; #83A6
+莧 > xiàn; #83A7
+莨 > láng; #83A8
+莩 > fú; #83A9
+莪 > é; #83AA
+莫 > mò; #83AB
+莬 > wèn; #83AC
+莭 > jié; #83AD
+莮 > nán; #83AE
+莯 > mù; #83AF
+莰 > kăn; #83B0
+莱 > lái; #83B1
+莲 > lián; #83B2
+莳 > shí; #83B3
+莴 > wō; #83B4
+莶 > liăn; #83B6
+获 > hùo; #83B7
+莸 > yóu; #83B8
+莹 > yíng; #83B9
+莺 > yīng; #83BA
+莼 > chún; #83BC
+莽 > măng; #83BD
+莾 > măng; #83BE
+莿 > cì; #83BF
+菀 > wăn; #83C0
+菁 > jīng; #83C1
+菂 > dī; #83C2
+菃 > qú; #83C3
+菄 > dōng; #83C4
+菅 > jiān; #83C5
+菆 > zōu; #83C6
+菇 > gū; #83C7
+菈 > lā; #83C8
+菉 > lù; #83C9
+菊 > jú; #83CA
+菋 > wèi; #83CB
+菌 > jùn; #83CC
+菍 > niè; #83CD
+菎 > kūn; #83CE
+菏 > hé; #83CF
+菐 > pú; #83D0
+菑 > zī; #83D1
+菒 > găo; #83D2
+菓 > gŭo; #83D3
+菔 > fú; #83D4
+菕 > lún; #83D5
+菖 > chāng; #83D6
+菗 > chóu; #83D7
+菘 > sōng; #83D8
+菙 > chúi; #83D9
+菚 > zhàn; #83DA
+菛 > mén; #83DB
+菜 > cài; #83DC
+菝 > bá; #83DD
+菞 > lí; #83DE
+菟 > tù; #83DF
+菠 > bō; #83E0
+菡 > hàn; #83E1
+菢 > bào; #83E2
+菣 > qìn; #83E3
+菤 > juăn; #83E4
+菥 > xī; #83E5
+菦 > qín; #83E6
+菧 > dĭ; #83E7
+菨 > jiē; #83E8
+菩 > pú; #83E9
+菪 > dàng; #83EA
+菫 > jĭn; #83EB
+菬 > zhăo; #83EC
+菭 > tái; #83ED
+菮 > gēng; #83EE
+華 > huá; #83EF
+菰 > gū; #83F0
+菱 > líng; #83F1
+菲 > fēi; #83F2
+菳 > jīn; #83F3
+菴 > ān; #83F4
+菵 > wăng; #83F5
+菶 > bĕng; #83F6
+菷 > zhŏu; #83F7
+菸 > yān; #83F8
+菹 > jū; #83F9
+菺 > jiān; #83FA
+菻 > lĭn; #83FB
+菼 > tăn; #83FC
+菽 > shú; #83FD
+菾 > tián; #83FE
+菿 > dào; #83FF
+萀 > hŭ; #8400
+萁 > qí; #8401
+萂 > hé; #8402
+萃 > cùi; #8403
+萄 > táo; #8404
+萅 > chūn; #8405
+萆 > bēi; #8406
+萇 > cháng; #8407
+萈 > huán; #8408
+萉 > féi; #8409
+萊 > lái; #840A
+萋 > qī; #840B
+萌 > méng; #840C
+萍 > píng; #840D
+萎 > wēi; #840E
+萏 > dàn; #840F
+萐 > shà; #8410
+萑 > huán; #8411
+萒 > yăn; #8412
+萓 > yí; #8413
+萔 > tiáo; #8414
+萕 > qí; #8415
+萖 > wăn; #8416
+萗 > cè; #8417
+萘 > nài; #8418
+萚 > tùo; #841A
+萛 > jīu; #841B
+萜 > tiē; #841C
+萝 > lúo; #841D
+萠 > méng; #8420
+萤 > yíng; #8424
+营 > yíng; #8425
+萦 > yíng; #8426
+萧 > xiāo; #8427
+萨 > sà; #8428
+萩 > qīu; #8429
+萪 > kē; #842A
+萫 > xiàng; #842B
+萬 > wàn; #842C
+萭 > yŭ; #842D
+萮 > yù; #842E
+萯 > fù; #842F
+萰 > liàn; #8430
+萱 > xuān; #8431
+萲 > yuán; #8432
+萳 > nán; #8433
+萴 > zé; #8434
+萵 > wō; #8435
+萶 > chŭn; #8436
+萷 > xiāo; #8437
+萸 > yú; #8438
+萹 > piān; #8439
+萺 > mào; #843A
+萻 > ān; #843B
+萼 > è; #843C
+落 > lùo; #843D
+萾 > yíng; #843E
+萿 > húo; #843F
+葀 > guā; #8440
+葁 > jiāng; #8441
+葂 > miăn; #8442
+葃 > zúo; #8443
+葄 > zùo; #8444
+葅 > jū; #8445
+葆 > băo; #8446
+葇 > róu; #8447
+葈 > xĭ; #8448
+葉 > xié; #8449
+葊 > ān; #844A
+葋 > qú; #844B
+葌 > jiān; #844C
+葍 > fú; #844D
+葎 > lǜ; #844E
+葏 > jīng; #844F
+葐 > pén; #8450
+葑 > fēng; #8451
+葒 > hóng; #8452
+葓 > hóng; #8453
+葔 > hóu; #8454
+葕 > yán; #8455
+葖 > tú; #8456
+著 > zhù; #8457
+葘 > zī; #8458
+葙 > xiāng; #8459
+葚 > shèn; #845A
+葛 > gĕ; #845B
+葜 > jié; #845C
+葝 > jìng; #845D
+葞 > mĭ; #845E
+葟 > huáng; #845F
+葠 > shēn; #8460
+葡 > pú; #8461
+葢 > gài; #8462
+董 > dŏng; #8463
+葤 > zhòu; #8464
+葥 > qián; #8465
+葦 > wĕi; #8466
+葧 > bó; #8467
+葨 > wēi; #8468
+葩 > pā; #8469
+葪 > jì; #846A
+葫 > hú; #846B
+葬 > zàng; #846C
+葭 > jiā; #846D
+葮 > duàn; #846E
+葯 > yào; #846F
+葰 > jùn; #8470
+葱 > cōng; #8471
+葲 > quán; #8472
+葳 > wēi; #8473
+葴 > xián; #8474
+葵 > kúi; #8475
+葶 > tíng; #8476
+葷 > hūn; #8477
+葸 > xĭ; #8478
+葹 > shī; #8479
+葺 > qì; #847A
+葻 > lán; #847B
+葼 > zōng; #847C
+葽 > yāo; #847D
+葾 > yuān; #847E
+葿 > méi; #847F
+蒀 > yūn; #8480
+蒁 > shù; #8481
+蒂 > dì; #8482
+蒃 > zhuàn; #8483
+蒄 > guān; #8484
+蒆 > xuē; #8486
+蒇 > chăn; #8487
+蒈 > kăi; #8488
+蒉 > kùi; #8489
+蒋 > jiăng; #848B
+蒌 > lóu; #848C
+蒍 > wéi; #848D
+蒎 > pài; #848E
+蒐 > sōu; #8490
+蒑 > yīn; #8491
+蒒 > shī; #8492
+蒓 > chún; #8493
+蒔 > shí; #8494
+蒕 > yūn; #8495
+蒖 > zhēn; #8496
+蒗 > làng; #8497
+蒘 > nú; #8498
+蒙 > méng; #8499
+蒚 > hé; #849A
+蒛 > quē; #849B
+蒜 > suàn; #849C
+蒝 > yuán; #849D
+蒞 > lì; #849E
+蒟 > jŭ; #849F
+蒠 > xí; #84A0
+蒡 > páng; #84A1
+蒢 > chú; #84A2
+蒣 > xú; #84A3
+蒤 > tú; #84A4
+蒥 > líu; #84A5
+蒦 > wò; #84A6
+蒧 > zhēn; #84A7
+蒨 > qiàn; #84A8
+蒩 > zū; #84A9
+蒪 > pò; #84AA
+蒫 > cūo; #84AB
+蒬 > yuān; #84AC
+蒭 > chú; #84AD
+蒮 > yù; #84AE
+蒯 > kuăi; #84AF
+蒰 > pán; #84B0
+蒱 > pú; #84B1
+蒲 > pú; #84B2
+蒳 > nà; #84B3
+蒴 > shùo; #84B4
+蒵 > xī; #84B5
+蒶 > fén; #84B6
+蒷 > yún; #84B7
+蒸 > zhēng; #84B8
+蒹 > jiān; #84B9
+蒺 > jí; #84BA
+蒻 > rùo; #84BB
+蒼 > cāng; #84BC
+蒽 > ēn; #84BD
+蒾 > mí; #84BE
+蒿 > hāo; #84BF
+蓀 > sūn; #84C0
+蓁 > zhēn; #84C1
+蓂 > míng; #84C2
+蓃 > sou; #84C3
+蓄 > xù; #84C4
+蓅 > líu; #84C5
+蓆 > xí; #84C6
+蓇 > gŭ; #84C7
+蓈 > láng; #84C8
+蓉 > róng; #84C9
+蓊 > wĕng; #84CA
+蓋 > gài; #84CB
+蓌 > cùo; #84CC
+蓍 > shī; #84CD
+蓎 > táng; #84CE
+蓏 > lŭo; #84CF
+蓐 > rù; #84D0
+蓑 > sūo; #84D1
+蓒 > xiān; #84D2
+蓓 > bèi; #84D3
+蓔 > yăo; #84D4
+蓕 > gùi; #84D5
+蓖 > bī; #84D6
+蓗 > zŏng; #84D7
+蓘 > gŭn; #84D8
+蓚 > xīu; #84DA
+蓛 > cè; #84DB
+蓝 > lán; #84DD
+蓟 > jì; #84DF
+蓠 > lí; #84E0
+蓡 > cān; #84E1
+蓢 > láng; #84E2
+蓣 > yù; #84E3
+蓥 > yìng; #84E5
+蓦 > mò; #84E6
+蓧 > diào; #84E7
+蓨 > tiāo; #84E8
+蓩 > mào; #84E9
+蓪 > tōng; #84EA
+蓫 > zhú; #84EB
+蓬 > péng; #84EC
+蓭 > ān; #84ED
+蓮 > lián; #84EE
+蓯 > cōng; #84EF
+蓰 > xĭ; #84F0
+蓱 > píng; #84F1
+蓲 > qīu; #84F2
+蓳 > jìn; #84F3
+蓴 > chún; #84F4
+蓵 > jié; #84F5
+蓶 > wĕi; #84F6
+蓷 > tūi; #84F7
+蓸 > cáo; #84F8
+蓹 > yŭ; #84F9
+蓺 > yì; #84FA
+蓻 > jí; #84FB
+蓼 > liăo; #84FC
+蓽 > bì; #84FD
+蓾 > lŭ; #84FE
+蓿 > sù; #84FF
+蔀 > bù; #8500
+蔁 > zhāng; #8501
+蔂 > lúo; #8502
+蔃 > jiàng; #8503
+蔄 > màn; #8504
+蔅 > yán; #8505
+蔆 > líng; #8506
+蔇 > jì; #8507
+蔈 > piăo; #8508
+蔉 > gŭn; #8509
+蔊 > hăn; #850A
+蔋 > dí; #850B
+蔌 > sù; #850C
+蔍 > lù; #850D
+蔎 > shè; #850E
+蔏 > shāng; #850F
+蔐 > dí; #8510
+蔑 > miè; #8511
+蔒 > xūn; #8512
+蔓 > màn; #8513
+蔔 > bó; #8514
+蔕 > dì; #8515
+蔖 > cúo; #8516
+蔗 > zhè; #8517
+蔘 > sēn; #8518
+蔙 > xuàn; #8519
+蔚 > wèi; #851A
+蔛 > hú; #851B
+蔜 > áo; #851C
+蔝 > mĭ; #851D
+蔞 > lóu; #851E
+蔟 > cù; #851F
+蔠 > zhōng; #8520
+蔡 > cài; #8521
+蔢 > pó; #8522
+蔣 > jiăng; #8523
+蔤 > mì; #8524
+蔥 > cōng; #8525
+蔦 > niăo; #8526
+蔧 > hùi; #8527
+蔨 > jùn; #8528
+蔩 > yín; #8529
+蔪 > jiàn; #852A
+蔫 > yān; #852B
+蔬 > shū; #852C
+蔭 > yìn; #852D
+蔮 > kùi; #852E
+蔯 > chén; #852F
+蔰 > hù; #8530
+蔱 > shā; #8531
+蔲 > kòu; #8532
+蔳 > qiàn; #8533
+蔴 > má; #8534
+蔵 > zāng; #8535
+蔷 > qiáng; #8537
+蔸 > dōu; #8538
+蔹 > liàn; #8539
+蔺 > lìn; #853A
+蔻 > kòu; #853B
+蔼 > ăi; #853C
+蔽 > bì; #853D
+蔾 > lí; #853E
+蔿 > wéi; #853F
+蕀 > jí; #8540
+蕁 > xún; #8541
+蕂 > shèng; #8542
+蕃 > fán; #8543
+蕄 > méng; #8544
+蕅 > ŏu; #8545
+蕆 > chăn; #8546
+蕇 > diăn; #8547
+蕈 > xùn; #8548
+蕉 > jiāo; #8549
+蕊 > rŭi; #854A
+蕋 > rŭi; #854B
+蕌 > lĕi; #854C
+蕍 > yú; #854D
+蕎 > qiáo; #854E
+蕏 > chú; #854F
+蕐 > huá; #8550
+蕑 > jiān; #8551
+蕒 > măi; #8552
+蕓 > yún; #8553
+蕔 > bāo; #8554
+蕕 > yóu; #8555
+蕖 > qú; #8556
+蕗 > lù; #8557
+蕘 > ráo; #8558
+蕙 > hùi; #8559
+蕚 > è; #855A
+蕛 > téng; #855B
+蕜 > fĕi; #855C
+蕝 > jué; #855D
+蕞 > zùi; #855E
+蕟 > fà; #855F
+蕠 > rú; #8560
+蕡 > fén; #8561
+蕢 > kùi; #8562
+蕣 > shùn; #8563
+蕤 > rúi; #8564
+蕥 > yă; #8565
+蕦 > xū; #8566
+蕧 > fù; #8567
+蕨 > jué; #8568
+蕩 > dàng; #8569
+蕪 > wú; #856A
+蕫 > tóng; #856B
+蕬 > sī; #856C
+蕭 > xiāo; #856D
+蕮 > xì; #856E
+蕯 > lóng; #856F
+蕰 > yùn; #8570
+蕲 > qí; #8572
+蕳 > jiān; #8573
+蕴 > yùn; #8574
+蕵 > sūn; #8575
+蕶 > líng; #8576
+蕷 > yù; #8577
+蕸 > xiá; #8578
+蕹 > yōng; #8579
+蕺 > jí; #857A
+蕻 > hòng; #857B
+蕼 > sì; #857C
+蕽 > nóng; #857D
+蕾 > lĕi; #857E
+蕿 > xuān; #857F
+薀 > yùn; #8580
+薁 > yù; #8581
+薂 > xí; #8582
+薃 > hào; #8583
+薄 > bó; #8584
+薅 > hāo; #8585
+薆 > ài; #8586
+薇 > wéi; #8587
+薈 > hùi; #8588
+薉 > wèi; #8589
+薊 > jì; #858A
+薋 > cī; #858B
+薌 > xiāng; #858C
+薍 > luàn; #858D
+薎 > miè; #858E
+薏 > yì; #858F
+薐 > léng; #8590
+薑 > jiāng; #8591
+薒 > càn; #8592
+薓 > shēn; #8593
+薔 > qiáng; #8594
+薕 > lián; #8595
+薖 > kē; #8596
+薗 > yuán; #8597
+薘 > dá; #8598
+薙 > tì; #8599
+薚 > táng; #859A
+薛 > xiē; #859B
+薜 > bì; #859C
+薝 > zhán; #859D
+薞 > sūn; #859E
+薟 > liăn; #859F
+薠 > fán; #85A0
+薡 > dĭng; #85A1
+薢 > jiē; #85A2
+薣 > gŭ; #85A3
+薤 > xiè; #85A4
+薥 > shŭ; #85A5
+薦 > jiàn; #85A6
+薧 > kăo; #85A7
+薨 > hōng; #85A8
+薩 > sà; #85A9
+薪 > xīn; #85AA
+薫 > xūn; #85AB
+薬 > yào; #85AC
+薮 > sŏu; #85AE
+薯 > shŭ; #85AF
+薰 > xūn; #85B0
+薱 > dùi; #85B1
+薲 > pín; #85B2
+薳 > wĕi; #85B3
+薴 > néng; #85B4
+薵 > chóu; #85B5
+薶 > mái; #85B6
+薷 > rú; #85B7
+薸 > piāo; #85B8
+薹 > tái; #85B9
+薺 > qí; #85BA
+薻 > zăo; #85BB
+薼 > chén; #85BC
+薽 > zhēn; #85BD
+薾 > ĕr; #85BE
+薿 > nĭ; #85BF
+藀 > yíng; #85C0
+藁 > găo; #85C1
+藂 > còng; #85C2
+藃 > xiāo; #85C3
+藄 > qí; #85C4
+藅 > fá; #85C5
+藆 > jiăn; #85C6
+藇 > xù; #85C7
+藈 > kūi; #85C8
+藉 > jiè; #85C9
+藊 > biăn; #85CA
+藋 > diào; #85CB
+藌 > mì; #85CC
+藍 > lán; #85CD
+藎 > jìn; #85CE
+藏 > cáng; #85CF
+藐 > miăo; #85D0
+藑 > qíong; #85D1
+藒 > qiè; #85D2
+藓 > xiăn; #85D3
+藕 > ŏu; #85D5
+藖 > xián; #85D6
+藗 > sù; #85D7
+藘 > lǘ; #85D8
+藙 > yì; #85D9
+藚 > xù; #85DA
+藛 > xiĕ; #85DB
+藜 > lí; #85DC
+藝 > yì; #85DD
+藞 > lă; #85DE
+藟 > lĕi; #85DF
+藠 > xiào; #85E0
+藡 > dí; #85E1
+藢 > zhĭ; #85E2
+藣 > bēi; #85E3
+藤 > téng; #85E4
+藥 > yào; #85E5
+藦 > mò; #85E6
+藧 > huăn; #85E7
+藨 > piăo; #85E8
+藩 > fán; #85E9
+藪 > sŏu; #85EA
+藫 > tán; #85EB
+藬 > tūi; #85EC
+藭 > qíong; #85ED
+藮 > qiáo; #85EE
+藯 > wèi; #85EF
+藰 > líu; #85F0
+藱 > hùi; #85F1
+藳 > găo; #85F3
+藴 > yùn; #85F4
+藶 > lì; #85F6
+藷 > shŭ; #85F7
+藸 > chú; #85F8
+藹 > ăi; #85F9
+藺 > lìn; #85FA
+藻 > zăo; #85FB
+藼 > xuān; #85FC
+藽 > chèn; #85FD
+藾 > lài; #85FE
+藿 > hùo; #85FF
+蘀 > tùo; #8600
+蘁 > wù; #8601
+蘂 > rŭi; #8602
+蘃 > rŭi; #8603
+蘄 > qí; #8604
+蘅 > héng; #8605
+蘆 > lú; #8606
+蘇 > sū; #8607
+蘈 > túi; #8608
+蘉 > máng; #8609
+蘊 > yùn; #860A
+蘋 > pín; #860B
+蘌 > yŭ; #860C
+蘍 > xūn; #860D
+蘎 > jì; #860E
+蘏 > jīong; #860F
+蘐 > xiān; #8610
+蘑 > mó; #8611
+蘓 > sū; #8613
+蘔 > jīong; #8614
+蘖 > niè; #8616
+蘗 > bò; #8617
+蘘 > ráng; #8618
+蘙 > yì; #8619
+蘚 > xiăn; #861A
+蘛 > yú; #861B
+蘜 > jú; #861C
+蘝 > liàn; #861D
+蘞 > liàn; #861E
+蘟 > yĭn; #861F
+蘠 > qiáng; #8620
+蘡 > yīng; #8621
+蘢 > lóng; #8622
+蘣 > tòng; #8623
+蘤 > wĕi; #8624
+蘥 > yuè; #8625
+蘦 > líng; #8626
+蘧 > qú; #8627
+蘨 > yáo; #8628
+蘩 > fán; #8629
+蘪 > mí; #862A
+蘫 > lán; #862B
+蘬 > kūi; #862C
+蘭 > lán; #862D
+蘮 > jì; #862E
+蘯 > dàng; #862F
+蘱 > lèi; #8631
+蘲 > léi; #8632
+蘳 > huă; #8633
+蘴 > fēng; #8634
+蘵 > zhí; #8635
+蘶 > wèi; #8636
+蘷 > kúi; #8637
+蘸 > zhàn; #8638
+蘹 > huài; #8639
+蘺 > lí; #863A
+蘻 > jì; #863B
+蘼 > mí; #863C
+蘽 > lĕi; #863D
+蘾 > huài; #863E
+蘿 > lúo; #863F
+虀 > jī; #8640
+虁 > kúi; #8641
+虂 > lù; #8642
+虃 > jiān; #8643
+虆 > léi; #8646
+虇 > quăn; #8647
+虈 > xiāo; #8648
+虉 > yì; #8649
+虊 > luán; #864A
+虋 > mén; #864B
+虌 > biē; #864C
+虍 > hū; #864D
+虎 > hŭ; #864E
+虏 > lŭ; #864F
+虐 > nǜe; #8650
+虑 > lǜ; #8651
+虒 > sī; #8652
+虓 > xiāo; #8653
+虔 > qián; #8654
+處 > chù; #8655
+虖 > hū; #8656
+虗 > xū; #8657
+虘 > cúo; #8658
+虙 > fú; #8659
+虚 > xū; #865A
+虛 > xū; #865B
+虜 > lŭ; #865C
+虝 > hŭ; #865D
+虞 > yú; #865E
+號 > hào; #865F
+虠 > jiăo; #8660
+虡 > jù; #8661
+虢 > gúo; #8662
+虣 > bào; #8663
+虤 > yán; #8664
+虥 > zhàn; #8665
+虦 > zhàn; #8666
+虧 > kūi; #8667
+虨 > bān; #8668
+虩 > xì; #8669
+虪 > shú; #866A
+虫 > chóng; #866B
+虬 > qíu; #866C
+虭 > diāo; #866D
+虮 > jī; #866E
+虯 > qíu; #866F
+虰 > chéng; #8670
+虱 > shī; #8671
+虳 > dì; #8673
+虴 > zhé; #8674
+虵 > shé; #8675
+虶 > yū; #8676
+虷 > gān; #8677
+虸 > zĭ; #8678
+虹 > hóng; #8679
+虺 > hŭi; #867A
+虻 > méng; #867B
+虼 > gè; #867C
+虽 > sūi; #867D
+虾 > xiā; #867E
+虿 > chài; #867F
+蚀 > shí; #8680
+蚁 > yĭ; #8681
+蚂 > mă; #8682
+蚃 > xiàng; #8683
+蚄 > fāng; #8684
+蚅 > è; #8685
+蚆 > pā; #8686
+蚇 > chĭ; #8687
+蚈 > qiān; #8688
+蚉 > wén; #8689
+蚊 > wén; #868A
+蚋 > rùi; #868B
+蚌 > bàng; #868C
+蚍 > bĭ; #868D
+蚎 > yuè; #868E
+蚏 > yuè; #868F
+蚐 > jūn; #8690
+蚑 > qí; #8691
+蚒 > rán; #8692
+蚓 > yĭn; #8693
+蚔 > qí; #8694
+蚕 > tiăn; #8695
+蚖 > yuán; #8696
+蚗 > jué; #8697
+蚘 > húi; #8698
+蚙 > qín; #8699
+蚚 > qí; #869A
+蚛 > zhòng; #869B
+蚜 > yá; #869C
+蚝 > cì; #869D
+蚞 > mù; #869E
+蚟 > wáng; #869F
+蚠 > fén; #86A0
+蚡 > fén; #86A1
+蚢 > háng; #86A2
+蚣 > gōng; #86A3
+蚤 > zăo; #86A4
+蚥 > fŭ; #86A5
+蚦 > rán; #86A6
+蚧 > jiè; #86A7
+蚨 > fú; #86A8
+蚩 > chī; #86A9
+蚪 > dŏu; #86AA
+蚫 > piáo; #86AB
+蚬 > xiàn; #86AC
+蚭 > ní; #86AD
+蚮 > tè; #86AE
+蚯 > qīu; #86AF
+蚰 > yóu; #86B0
+蚱 > zhà; #86B1
+蚲 > píng; #86B2
+蚳 > chí; #86B3
+蚴 > yŏu; #86B4
+蚵 > hé; #86B5
+蚶 > hān; #86B6
+蚷 > jù; #86B7
+蚸 > lì; #86B8
+蚹 > fù; #86B9
+蚺 > rán; #86BA
+蚻 > zhá; #86BB
+蚼 > gŏu; #86BC
+蚽 > pí; #86BD
+蚾 > bŏ; #86BE
+蚿 > xián; #86BF
+蛀 > zhù; #86C0
+蛁 > diāo; #86C1
+蛂 > biĕ; #86C2
+蛃 > bĭng; #86C3
+蛄 > gū; #86C4
+蛅 > rán; #86C5
+蛆 > qū; #86C6
+蛇 > shé; #86C7
+蛈 > tiè; #86C8
+蛉 > líng; #86C9
+蛊 > gŭ; #86CA
+蛋 > dàn; #86CB
+蛌 > gŭ; #86CC
+蛍 > yíng; #86CD
+蛎 > lì; #86CE
+蛏 > chēng; #86CF
+蛐 > qū; #86D0
+蛑 > móu; #86D1
+蛒 > gé; #86D2
+蛓 > cì; #86D3
+蛔 > húi; #86D4
+蛕 > húi; #86D5
+蛖 > máng; #86D6
+蛗 > fù; #86D7
+蛘 > yáng; #86D8
+蛙 > wā; #86D9
+蛚 > liè; #86DA
+蛛 > zhū; #86DB
+蛜 > yī; #86DC
+蛝 > xián; #86DD
+蛞 > kùo; #86DE
+蛟 > jiāo; #86DF
+蛠 > lì; #86E0
+蛡 > yì; #86E1
+蛢 > píng; #86E2
+蛣 > jī; #86E3
+蛤 > há; #86E4
+蛥 > shé; #86E5
+蛦 > yí; #86E6
+蛧 > wăng; #86E7
+蛨 > mò; #86E8
+蛩 > qíong; #86E9
+蛪 > qiè; #86EA
+蛫 > gŭi; #86EB
+蛬 > gŏng; #86EC
+蛭 > zhì; #86ED
+蛮 > mán; #86EE
+蛰 > zhí; #86F0
+蛱 > jiá; #86F1
+蛲 > ráo; #86F2
+蛳 > sī; #86F3
+蛴 > qí; #86F4
+蛵 > xīng; #86F5
+蛶 > liè; #86F6
+蛷 > qíu; #86F7
+蛸 > shāo; #86F8
+蛹 > yŏng; #86F9
+蛺 > jiá; #86FA
+蛻 > shùi; #86FB
+蛼 > chē; #86FC
+蛽 > bài; #86FD
+蛾 > é; #86FE
+蛿 > hàn; #86FF
+蜀 > shŭ; #8700
+蜁 > xuán; #8701
+蜂 > fēng; #8702
+蜃 > shèn; #8703
+蜄 > zhèn; #8704
+蜅 > fŭ; #8705
+蜆 > xiàn; #8706
+蜇 > zhé; #8707
+蜈 > wú; #8708
+蜉 > fú; #8709
+蜊 > lí; #870A
+蜋 > láng; #870B
+蜌 > bì; #870C
+蜍 > chú; #870D
+蜎 > yuān; #870E
+蜏 > yŏu; #870F
+蜐 > jié; #8710
+蜑 > dàn; #8711
+蜒 > yán; #8712
+蜓 > tíng; #8713
+蜔 > diàn; #8714
+蜕 > shùi; #8715
+蜖 > húi; #8716
+蜗 > guā; #8717
+蜘 > zhī; #8718
+蜙 > sōng; #8719
+蜚 > fēi; #871A
+蜛 > jū; #871B
+蜜 > mì; #871C
+蜝 > qí; #871D
+蜞 > qí; #871E
+蜟 > yù; #871F
+蜠 > jŭn; #8720
+蜡 > zhà; #8721
+蜢 > mĕng; #8722
+蜣 > qiāng; #8723
+蜤 > sī; #8724
+蜥 > xī; #8725
+蜦 > lún; #8726
+蜧 > lì; #8727
+蜨 > dié; #8728
+蜩 > tiáo; #8729
+蜪 > tāo; #872A
+蜫 > kūn; #872B
+蜬 > gān; #872C
+蜭 > hàn; #872D
+蜮 > yù; #872E
+蜯 > bàng; #872F
+蜰 > féi; #8730
+蜱 > pí; #8731
+蜲 > wĕi; #8732
+蜳 > dūn; #8733
+蜴 > yì; #8734
+蜵 > yuān; #8735
+蜶 > sù; #8736
+蜷 > quán; #8737
+蜸 > qiăn; #8738
+蜹 > rùi; #8739
+蜺 > ní; #873A
+蜻 > qīng; #873B
+蜼 > wèi; #873C
+蜽 > liăng; #873D
+蜾 > gŭo; #873E
+蜿 > wān; #873F
+蝀 > dōng; #8740
+蝁 > è; #8741
+蝂 > băn; #8742
+蝃 > dì; #8743
+蝄 > wăng; #8744
+蝅 > cán; #8745
+蝆 > yăng; #8746
+蝇 > yíng; #8747
+蝈 > gūo; #8748
+蝉 > chán; #8749
+蝋 > là; #874B
+蝌 > kē; #874C
+蝍 > jí; #874D
+蝎 > hé; #874E
+蝏 > tíng; #874F
+蝐 > mài; #8750
+蝑 > xū; #8751
+蝒 > mián; #8752
+蝓 > yú; #8753
+蝔 > jiē; #8754
+蝕 > shí; #8755
+蝖 > xuān; #8756
+蝗 > huáng; #8757
+蝘 > yăn; #8758
+蝙 > biān; #8759
+蝚 > róu; #875A
+蝛 > wēi; #875B
+蝜 > fù; #875C
+蝝 > yuán; #875D
+蝞 > mèi; #875E
+蝟 > wèi; #875F
+蝠 > fú; #8760
+蝡 > ruăn; #8761
+蝢 > xié; #8762
+蝣 > yóu; #8763
+蝤 > qíu; #8764
+蝥 > máo; #8765
+蝦 > xiā; #8766
+蝧 > yīng; #8767
+蝨 > shī; #8768
+蝩 > chóng; #8769
+蝪 > tāng; #876A
+蝫 > zhū; #876B
+蝬 > zōng; #876C
+蝭 > tí; #876D
+蝮 > fù; #876E
+蝯 > yuán; #876F
+蝰 > hŭi; #8770
+蝱 > méng; #8771
+蝲 > là; #8772
+蝳 > dú; #8773
+蝴 > hú; #8774
+蝵 > qīu; #8775
+蝶 > dié; #8776
+蝷 > lì; #8777
+蝸 > guā; #8778
+蝹 > yūn; #8779
+蝺 > jŭ; #877A
+蝻 > năn; #877B
+蝼 > lóu; #877C
+蝽 > qŭn; #877D
+蝾 > róng; #877E
+蝿 > yíng; #877F
+螀 > jiāng; #8780
+螂 > láng; #8782
+螃 > páng; #8783
+螄 > sī; #8784
+螅 > xī; #8785
+螆 > cì; #8786
+螇 > xī; #8787
+螈 > yuán; #8788
+螉 > wēng; #8789
+螊 > lián; #878A
+螋 > sōu; #878B
+螌 > bān; #878C
+融 > róng; #878D
+螎 > róng; #878E
+螏 > jí; #878F
+螐 > wū; #8790
+螑 > qìu; #8791
+螒 > hàn; #8792
+螓 > qín; #8793
+螔 > yí; #8794
+螕 > bī; #8795
+螖 > huá; #8796
+螗 > táng; #8797
+螘 > yĭ; #8798
+螙 > dù; #8799
+螚 > nài; #879A
+螛 > hé; #879B
+螜 > hú; #879C
+螝 > hùi; #879D
+螞 > mă; #879E
+螟 > míng; #879F
+螠 > yì; #87A0
+螡 > wén; #87A1
+螢 > yíng; #87A2
+螣 > téng; #87A3
+螤 > yŭ; #87A4
+螥 > cāng; #87A5
+螨 > măn; #87A8
+螪 > shāng; #87AA
+螫 > zhē; #87AB
+螬 > cáo; #87AC
+螭 > chī; #87AD
+螮 > dì; #87AE
+螯 > áo; #87AF
+螰 > lù; #87B0
+螱 > wèi; #87B1
+螲 > zhì; #87B2
+螳 > táng; #87B3
+螴 > chén; #87B4
+螵 > piāo; #87B5
+螶 > qú; #87B6
+螷 > pí; #87B7
+螸 > yú; #87B8
+螹 > jiàn; #87B9
+螺 > lúo; #87BA
+螻 > lóu; #87BB
+螼 > qĭn; #87BC
+螽 > zhōng; #87BD
+螾 > yĭn; #87BE
+螿 > jiāng; #87BF
+蟀 > shuài; #87C0
+蟁 > wén; #87C1
+蟂 > jiāo; #87C2
+蟃 > wàn; #87C3
+蟄 > zhí; #87C4
+蟅 > zhè; #87C5
+蟆 > má; #87C6
+蟇 > má; #87C7
+蟈 > gūo; #87C8
+蟉 > líu; #87C9
+蟊 > máo; #87CA
+蟋 > xī; #87CB
+蟌 > cōng; #87CC
+蟍 > lí; #87CD
+蟎 > măn; #87CE
+蟏 > xiāo; #87CF
+蟑 > zhāng; #87D1
+蟒 > măng; #87D2
+蟓 > xiàng; #87D3
+蟔 > mò; #87D4
+蟕 > zūi; #87D5
+蟖 > sī; #87D6
+蟗 > qīu; #87D7
+蟘 > tè; #87D8
+蟙 > zhí; #87D9
+蟚 > péng; #87DA
+蟛 > péng; #87DB
+蟜 > jiăo; #87DC
+蟝 > qú; #87DD
+蟞 > bié; #87DE
+蟟 > liáo; #87DF
+蟠 > pán; #87E0
+蟡 > gŭi; #87E1
+蟢 > xĭ; #87E2
+蟣 > jĭ; #87E3
+蟤 > zhuān; #87E4
+蟥 > huáng; #87E5
+蟦 > fèi; #87E6
+蟧 > láo; #87E7
+蟨 > jué; #87E8
+蟩 > jué; #87E9
+蟪 > hùi; #87EA
+蟫 > yín; #87EB
+蟬 > chán; #87EC
+蟭 > jiāo; #87ED
+蟮 > shàn; #87EE
+蟯 > ráo; #87EF
+蟰 > xiāo; #87F0
+蟱 > móu; #87F1
+蟲 > chóng; #87F2
+蟳 > xún; #87F3
+蟴 > sī; #87F4
+蟶 > chēng; #87F6
+蟷 > dāng; #87F7
+蟸 > lĭ; #87F8
+蟹 > xiè; #87F9
+蟺 > shàn; #87FA
+蟻 > yĭ; #87FB
+蟼 > jĭng; #87FC
+蟽 > dá; #87FD
+蟾 > chán; #87FE
+蟿 > qì; #87FF
+蠀 > cī; #8800
+蠁 > xiàng; #8801
+蠂 > shè; #8802
+蠃 > lŭo; #8803
+蠄 > qín; #8804
+蠅 > yíng; #8805
+蠆 > chài; #8806
+蠇 > lì; #8807
+蠈 > zé; #8808
+蠉 > xuān; #8809
+蠊 > lián; #880A
+蠋 > zhú; #880B
+蠌 > zé; #880C
+蠍 > xiē; #880D
+蠎 > măng; #880E
+蠏 > xiè; #880F
+蠐 > qí; #8810
+蠑 > róng; #8811
+蠒 > jiăn; #8812
+蠓 > mĕng; #8813
+蠔 > háo; #8814
+蠕 > ruăn; #8815
+蠖 > hùo; #8816
+蠗 > zhúo; #8817
+蠘 > jié; #8818
+蠙 > bīn; #8819
+蠚 > hè; #881A
+蠛 > miè; #881B
+蠜 > fán; #881C
+蠝 > léi; #881D
+蠞 > jié; #881E
+蠟 > là; #881F
+蠠 > mì; #8820
+蠡 > lĭ; #8821
+蠢 > chŭn; #8822
+蠣 > lì; #8823
+蠤 > qīu; #8824
+蠥 > niè; #8825
+蠦 > lú; #8826
+蠧 > dù; #8827
+蠨 > xiāo; #8828
+蠩 > zhū; #8829
+蠪 > lóng; #882A
+蠫 > lì; #882B
+蠬 > lóng; #882C
+蠭 > fēng; #882D
+蠮 > yē; #882E
+蠯 > bèng; #882F
+蠰 > shàng; #8830
+蠱 > gŭ; #8831
+蠲 > juān; #8832
+蠳 > yīng; #8833
+蠵 > xī; #8835
+蠶 > cán; #8836
+蠷 > qú; #8837
+蠸 > quán; #8838
+蠹 > dù; #8839
+蠺 > cán; #883A
+蠻 > mán; #883B
+蠼 > jué; #883C
+蠽 > jié; #883D
+蠾 > zhú; #883E
+蠿 > zhá; #883F
+血 > xiĕ; #8840
+衁 > huāng; #8841
+衂 > nìu; #8842
+衃 > pēi; #8843
+衄 > nǜ; #8844
+衅 > xìn; #8845
+衆 > zhòng; #8846
+衇 > mò; #8847
+衈 > èr; #8848
+衉 > kè; #8849
+衊 > miè; #884A
+衋 > xì; #884B
+行 > xíng; #884C
+衍 > yăn; #884D
+衎 > kàn; #884E
+衏 > yuàn; #884F
+衑 > líng; #8851
+衒 > xuàn; #8852
+術 > shù; #8853
+衔 > xián; #8854
+衕 > tòng; #8855
+衖 > lòng; #8856
+街 > jiē; #8857
+衘 > xián; #8858
+衙 > yá; #8859
+衚 > hú; #885A
+衛 > wèi; #885B
+衜 > dào; #885C
+衝 > chōng; #885D
+衞 > wèi; #885E
+衟 > dào; #885F
+衠 > zhūn; #8860
+衡 > héng; #8861
+衢 > qú; #8862
+衣 > yī; #8863
+衤 > yī' 'zì' 'páng; #8864
+补 > bŭ; #8865
+衦 > găn; #8866
+衧 > yú; #8867
+表 > biăo; #8868
+衩 > chà; #8869
+衪 > yĭ; #886A
+衫 > shān; #886B
+衬 > chèn; #886C
+衭 > fū; #886D
+衮 > gŭn; #886E
+衯 > fēn; #886F
+衰 > shuāi; #8870
+衱 > jié; #8871
+衲 > nà; #8872
+衳 > zhōng; #8873
+衴 > dăn; #8874
+衵 > rì; #8875
+衶 > zhòng; #8876
+衷 > zhōng; #8877
+衸 > xiè; #8878
+衹 > qí; #8879
+衺 > xié; #887A
+衻 > rán; #887B
+衼 > zhī; #887C
+衽 > rèn; #887D
+衾 > qīn; #887E
+衿 > jīn; #887F
+袀 > jūn; #8880
+袁 > yuán; #8881
+袂 > mèi; #8882
+袃 > chài; #8883
+袄 > ăo; #8884
+袅 > niăo; #8885
+袆 > hūi; #8886
+袇 > rán; #8887
+袈 > jiā; #8888
+袉 > túo; #8889
+袊 > lĭng; #888A
+袋 > dài; #888B
+袌 > bào; #888C
+袍 > páo; #888D
+袎 > yào; #888E
+袏 > zùo; #888F
+袐 > bì; #8890
+袑 > shào; #8891
+袒 > tăn; #8892
+袓 > jŭ; #8893
+袔 > hè; #8894
+袕 > shù; #8895
+袖 > xìu; #8896
+袗 > zhĕn; #8897
+袘 > yí; #8898
+袙 > pà; #8899
+袚 > bō; #889A
+袛 > dī; #889B
+袜 > wà; #889C
+袝 > fù; #889D
+袞 > gŭn; #889E
+袟 > zhì; #889F
+袠 > zhì; #88A0
+袡 > rán; #88A1
+袢 > pàn; #88A2
+袣 > yì; #88A3
+袤 > mào; #88A4
+袥 > tuo; #88A5
+袦 > nà; #88A6
+袧 > kōu; #88A7
+袨 > xiàn; #88A8
+袩 > chān; #88A9
+袪 > qū; #88AA
+被 > bèi; #88AB
+袬 > gŭn; #88AC
+袭 > xí; #88AD
+袯 > bó; #88AF
+袱 > fú; #88B1
+袲 > yí; #88B2
+袳 > chĭ; #88B3
+袴 > kù; #88B4
+袵 > rèn; #88B5
+袶 > jiàng; #88B6
+袷 > jiá; #88B7
+袸 > cún; #88B8
+袹 > mò; #88B9
+袺 > jié; #88BA
+袻 > ér; #88BB
+袼 > lùo; #88BC
+袽 > rú; #88BD
+袾 > zhū; #88BE
+袿 > gūi; #88BF
+裀 > yīn; #88C0
+裁 > cái; #88C1
+裂 > liè; #88C2
+装 > zhuāng; #88C5
+裆 > dāng; #88C6
+裈 > kūn; #88C8
+裉 > kèn; #88C9
+裊 > niăo; #88CA
+裋 > shù; #88CB
+裌 > jiá; #88CC
+裍 > kŭn; #88CD
+裎 > chéng; #88CE
+裏 > lĭ; #88CF
+裐 > juān; #88D0
+裑 > shēn; #88D1
+裒 > póu; #88D2
+裓 > gé; #88D3
+裔 > yì; #88D4
+裕 > yù; #88D5
+裖 > zhĕn; #88D6
+裗 > líu; #88D7
+裘 > qíu; #88D8
+裙 > qún; #88D9
+裚 > jì; #88DA
+裛 > yì; #88DB
+補 > bŭ; #88DC
+裝 > zhuāng; #88DD
+裞 > shùi; #88DE
+裟 > shā; #88DF
+裠 > qún; #88E0
+裡 > lĭ; #88E1
+裢 > lián; #88E2
+裣 > liàn; #88E3
+裤 > kù; #88E4
+裥 > jiăn; #88E5
+裦 > fóu; #88E6
+裧 > chān; #88E7
+裨 > bì; #88E8
+裩 > gūn; #88E9
+裪 > táo; #88EA
+裫 > yuàn; #88EB
+裬 > líng; #88EC
+裭 > chĭ; #88ED
+裮 > chāng; #88EE
+裯 > chóu; #88EF
+裰 > dúo; #88F0
+裱 > biăo; #88F1
+裲 > liăng; #88F2
+裳 > cháng; #88F3
+裴 > péi; #88F4
+裵 > péi; #88F5
+裶 > fēi; #88F6
+裷 > yuān; #88F7
+裸 > lŭo; #88F8
+裹 > gŭo; #88F9
+裺 > yăn; #88FA
+裻 > dŭ; #88FB
+裼 > xí; #88FC
+製 > zhì; #88FD
+裾 > jū; #88FE
+裿 > qĭ; #88FF
+褀 > jì; #8900
+褁 > zhí; #8901
+褂 > guà; #8902
+褃 > kèn; #8903
+褅 > tì; #8905
+褆 > tí; #8906
+複 > fù; #8907
+褈 > chóng; #8908
+褉 > xiē; #8909
+褊 > biăn; #890A
+褋 > dié; #890B
+褌 > kūn; #890C
+褍 > duān; #890D
+褎 > xìu; #890E
+褏 > xìu; #890F
+褐 > hé; #8910
+褑 > yuàn; #8911
+褒 > bāo; #8912
+褓 > băo; #8913
+褔 > fù; #8914
+褕 > yú; #8915
+褖 > tuàn; #8916
+褗 > yăn; #8917
+褘 > hūi; #8918
+褙 > bèi; #8919
+褚 > chŭ; #891A
+褛 > lǚ; #891B
+褞 > yŭn; #891E
+褟 > dá; #891F
+褠 > gōu; #8920
+褡 > dā; #8921
+褢 > huái; #8922
+褣 > róng; #8923
+褤 > yuàn; #8924
+褥 > rù; #8925
+褦 > nài; #8926
+褧 > jĭong; #8927
+褨 > sŭo; #8928
+褩 > bān; #8929
+褪 > tùn; #892A
+褫 > chĭ; #892B
+褬 > săng; #892C
+褭 > niăo; #892D
+褮 > yīng; #892E
+褯 > jiè; #892F
+褰 > qiān; #8930
+褱 > huái; #8931
+褲 > kù; #8932
+褳 > lián; #8933
+褴 > băo; #8934
+褵 > lí; #8935
+褶 > zhé; #8936
+褷 > shī; #8937
+褸 > lǚ; #8938
+褹 > yì; #8939
+褺 > dié; #893A
+褻 > xiè; #893B
+褼 > xiān; #893C
+褽 > wèi; #893D
+褾 > biăo; #893E
+褿 > cáo; #893F
+襀 > jī; #8940
+襁 > jiăng; #8941
+襂 > sēn; #8942
+襃 > bāo; #8943
+襄 > xiāng; #8944
+襆 > pú; #8946
+襇 > jiăn; #8947
+襈 > zhuàn; #8948
+襉 > jiàn; #8949
+襊 > zùi; #894A
+襋 > jí; #894B
+襌 > dān; #894C
+襍 > zá; #894D
+襎 > fán; #894E
+襏 > bó; #894F
+襐 > xiàng; #8950
+襑 > xín; #8951
+襒 > bié; #8952
+襓 > ráo; #8953
+襔 > măn; #8954
+襕 > lán; #8955
+襖 > ăo; #8956
+襗 > dúo; #8957
+襘 > gùi; #8958
+襙 > cào; #8959
+襚 > sùi; #895A
+襛 > nóng; #895B
+襜 > chān; #895C
+襝 > liàn; #895D
+襞 > bì; #895E
+襟 > jīn; #895F
+襠 > dāng; #8960
+襡 > shú; #8961
+襢 > tăn; #8962
+襣 > bì; #8963
+襤 > lán; #8964
+襥 > pú; #8965
+襦 > rú; #8966
+襧 > zhĭ; #8967
+襩 > shŭ; #8969
+襪 > wà; #896A
+襫 > shì; #896B
+襬 > băi; #896C
+襭 > xié; #896D
+襮 > bó; #896E
+襯 > chèn; #896F
+襰 > lài; #8970
+襱 > lóng; #8971
+襲 > xí; #8972
+襳 > xiān; #8973
+襴 > lán; #8974
+襵 > zhé; #8975
+襶 > dài; #8976
+襸 > zàn; #8978
+襹 > shī; #8979
+襺 > jiăn; #897A
+襻 > pàn; #897B
+襼 > yì; #897C
+襾 > yà; #897E
+西 > xī; #897F
+覀 > xī; #8980
+要 > yào; #8981
+覂 > fĕng; #8982
+覃 > tán; #8983
+覅 > biào; #8985
+覆 > fù; #8986
+覇 > bà; #8987
+覈 > hé; #8988
+覉 > jī; #8989
+覊 > jī; #898A
+見 > jiàn; #898B
+覌 > guān; #898C
+覍 > biàn; #898D
+覎 > yàn; #898E
+規 > gūi; #898F
+覐 > jué; #8990
+覑 > piăn; #8991
+覒 > máo; #8992
+覓 > mì; #8993
+覔 > mì; #8994
+覕 > miè; #8995
+視 > shì; #8996
+覗 > sī; #8997
+覘 > zhān; #8998
+覙 > lúo; #8999
+覚 > jué; #899A
+覛 > mì; #899B
+覜 > tiào; #899C
+覝 > lián; #899D
+覞 > yào; #899E
+覟 > zhì; #899F
+覠 > jūn; #89A0
+覡 > xí; #89A1
+覢 > shăn; #89A2
+覣 > wēi; #89A3
+覤 > xì; #89A4
+覥 > tiăn; #89A5
+覦 > yú; #89A6
+覧 > lăn; #89A7
+覨 > è; #89A8
+覩 > dŭ; #89A9
+親 > qīn; #89AA
+覫 > păng; #89AB
+覬 > jì; #89AC
+覭 > míng; #89AD
+覮 > yíng; #89AE
+覯 > gòu; #89AF
+覰 > qù; #89B0
+覱 > zhàn; #89B1
+覲 > jĭn; #89B2
+観 > guān; #89B3
+覴 > dēng; #89B4
+覵 > jiàn; #89B5
+覶 > lúo; #89B6
+覷 > qù; #89B7
+覸 > jiàn; #89B8
+覹 > wéi; #89B9
+覺 > jué; #89BA
+覻 > qù; #89BB
+覼 > lúo; #89BC
+覽 > lăn; #89BD
+覾 > shĕn; #89BE
+覿 > dí; #89BF
+觀 > guān; #89C0
+见 > jiàn; #89C1
+观 > guān; #89C2
+觃 > yàn; #89C3
+规 > gūi; #89C4
+觅 > mì; #89C5
+视 > shì; #89C6
+觇 > zhān; #89C7
+览 > lăn; #89C8
+觉 > jué; #89C9
+觊 > jì; #89CA
+觋 > xí; #89CB
+觌 > dí; #89CC
+觍 > tiăn; #89CD
+觎 > yú; #89CE
+觏 > gòu; #89CF
+觐 > jĭn; #89D0
+觑 > qù; #89D1
+角 > jiăo; #89D2
+觓 > jīu; #89D3
+觔 > jīn; #89D4
+觕 > cū; #89D5
+觖 > jué; #89D6
+觗 > zhì; #89D7
+觘 > chào; #89D8
+觙 > jí; #89D9
+觚 > gū; #89DA
+觛 > dàn; #89DB
+觜 > zŭi; #89DC
+觝 > dĭ; #89DD
+觞 > shāng; #89DE
+觟 > huà; #89DF
+觠 > quán; #89E0
+觡 > gé; #89E1
+觢 > chì; #89E2
+解 > jiĕ; #89E3
+觤 > gŭi; #89E4
+觥 > gōng; #89E5
+触 > hóng; #89E6
+觧 > jiĕ; #89E7
+觨 > hùn; #89E8
+觩 > qíu; #89E9
+觪 > xīng; #89EA
+觫 > sù; #89EB
+觬 > ní; #89EC
+觭 > jī; #89ED
+觮 > lù; #89EE
+觯 > zhì; #89EF
+觰 > zhā; #89F0
+觱 > bì; #89F1
+觲 > xīng; #89F2
+觳 > hú; #89F3
+觴 > shāng; #89F4
+觵 > gōng; #89F5
+觶 > zhì; #89F6
+觷 > xué; #89F7
+觸 > chù; #89F8
+觹 > xī; #89F9
+觺 > yí; #89FA
+觻 > lù; #89FB
+觼 > jué; #89FC
+觽 > xī; #89FD
+觾 > yàn; #89FE
+觿 > xī; #89FF
+言 > yán; #8A00
+訁 > yán' 'zì' 'páng; #8A01
+訂 > dìng; #8A02
+訃 > fù; #8A03
+訄 > qíu; #8A04
+訅 > qíu; #8A05
+訆 > jiào; #8A06
+訇 > hōng; #8A07
+計 > jì; #8A08
+訉 > fàn; #8A09
+訊 > xùn; #8A0A
+訋 > diào; #8A0B
+訌 > hóng; #8A0C
+訍 > chà; #8A0D
+討 > tăo; #8A0E
+訏 > xū; #8A0F
+訐 > jié; #8A10
+訑 > yí; #8A11
+訒 > rèn; #8A12
+訓 > xùn; #8A13
+訔 > yín; #8A14
+訕 > shàn; #8A15
+訖 > qì; #8A16
+託 > tūo; #8A17
+記 > jì; #8A18
+訙 > xùn; #8A19
+訚 > yín; #8A1A
+訛 > é; #8A1B
+訜 > fēn; #8A1C
+訝 > yà; #8A1D
+訞 > yāo; #8A1E
+訟 > sòng; #8A1F
+訠 > shĕn; #8A20
+訡 > yín; #8A21
+訢 > xīn; #8A22
+訣 > jué; #8A23
+訤 > xiáo; #8A24
+訥 > nè; #8A25
+訦 > chén; #8A26
+訧 > yóu; #8A27
+訨 > zhĭ; #8A28
+訩 > xīong; #8A29
+訪 > făng; #8A2A
+訫 > xìn; #8A2B
+訬 > chāo; #8A2C
+設 > shè; #8A2D
+訮 > xiān; #8A2E
+訯 > shă; #8A2F
+訰 > tún; #8A30
+許 > xŭ; #8A31
+訲 > yì; #8A32
+訳 > yì; #8A33
+訴 > sù; #8A34
+訵 > chī; #8A35
+訶 > hē; #8A36
+訷 > shēn; #8A37
+訸 > hé; #8A38
+訹 > xù; #8A39
+診 > zhĕn; #8A3A
+註 > zhù; #8A3B
+証 > zhèng; #8A3C
+訽 > gòu; #8A3D
+訾 > zĭ; #8A3E
+訿 > zĭ; #8A3F
+詀 > zhān; #8A40
+詁 > gŭ; #8A41
+詂 > fù; #8A42
+詃 > quăn; #8A43
+詄 > dié; #8A44
+詅 > líng; #8A45
+詆 > dĭ; #8A46
+詇 > yàng; #8A47
+詈 > lì; #8A48
+詉 > náo; #8A49
+詊 > pàn; #8A4A
+詋 > zhòu; #8A4B
+詌 > gàn; #8A4C
+詍 > yì; #8A4D
+詎 > jù; #8A4E
+詏 > ào; #8A4F
+詐 > zhà; #8A50
+詑 > túo; #8A51
+詒 > yí; #8A52
+詓 > qŭ; #8A53
+詔 > zhào; #8A54
+評 > píng; #8A55
+詖 > bì; #8A56
+詗 > xìong; #8A57
+詘 > qù; #8A58
+詙 > bá; #8A59
+詚 > dá; #8A5A
+詛 > zŭ; #8A5B
+詜 > tāo; #8A5C
+詝 > zhŭ; #8A5D
+詞 > cí; #8A5E
+詟 > zhé; #8A5F
+詠 > yŏng; #8A60
+詡 > xŭ; #8A61
+詢 > xún; #8A62
+詣 > yì; #8A63
+詤 > huăng; #8A64
+詥 > hé; #8A65
+試 > shì; #8A66
+詧 > chá; #8A67
+詨 > jiāo; #8A68
+詩 > shī; #8A69
+詪 > hĕn; #8A6A
+詫 > chà; #8A6B
+詬 > gòu; #8A6C
+詭 > gŭi; #8A6D
+詮 > quán; #8A6E
+詯 > hùi; #8A6F
+詰 > jié; #8A70
+話 > huà; #8A71
+該 > gāi; #8A72
+詳 > xiáng; #8A73
+詴 > wēi; #8A74
+詵 > shēn; #8A75
+詶 > chóu; #8A76
+詷 > tóng; #8A77
+詸 > mí; #8A78
+詹 > zhān; #8A79
+詺 > mìng; #8A7A
+詻 > è; #8A7B
+詼 > hūi; #8A7C
+詽 > yán; #8A7D
+詾 > xīong; #8A7E
+詿 > guà; #8A7F
+誀 > èr; #8A80
+誁 > bĕng; #8A81
+誂 > tiăo; #8A82
+誃 > chĭ; #8A83
+誄 > lĕi; #8A84
+誅 > zhū; #8A85
+誆 > kuāng; #8A86
+誇 > kuā; #8A87
+誈 > wú; #8A88
+誉 > yù; #8A89
+誊 > téng; #8A8A
+誋 > jì; #8A8B
+誌 > zhì; #8A8C
+認 > rèn; #8A8D
+誎 > sù; #8A8E
+誏 > lăng; #8A8F
+誐 > é; #8A90
+誑 > kuáng; #8A91
+誒 > è; #8A92
+誓 > shì; #8A93
+誔 > tĭng; #8A94
+誕 > dàn; #8A95
+誖 > bó; #8A96
+誗 > chán; #8A97
+誘 > yòu; #8A98
+誙 > héng; #8A99
+誚 > qiào; #8A9A
+誛 > qīn; #8A9B
+誜 > shuà; #8A9C
+誝 > ān; #8A9D
+語 > yŭ; #8A9E
+誟 > xiào; #8A9F
+誠 > chéng; #8AA0
+誡 > jiè; #8AA1
+誢 > xiàn; #8AA2
+誣 > wú; #8AA3
+誤 > wù; #8AA4
+誥 > gào; #8AA5
+誦 > sòng; #8AA6
+誧 > pŭ; #8AA7
+誨 > hùi; #8AA8
+誩 > jìng; #8AA9
+說 > shūo; #8AAA
+誫 > zhèn; #8AAB
+説 > shūo; #8AAC
+読 > dú; #8AAD
+誯 > chàng; #8AAF
+誰 > shúi; #8AB0
+誱 > jié; #8AB1
+課 > kè; #8AB2
+誳 > qū; #8AB3
+誴 > cóng; #8AB4
+誵 > xiáo; #8AB5
+誶 > sùi; #8AB6
+誷 > wăng; #8AB7
+誸 > xuán; #8AB8
+誹 > fĕi; #8AB9
+誺 > chī; #8ABA
+誻 > tà; #8ABB
+誼 > yí; #8ABC
+誽 > ná; #8ABD
+誾 > yín; #8ABE
+調 > diào; #8ABF
+諀 > pĭ; #8AC0
+諁 > chùo; #8AC1
+諂 > chăn; #8AC2
+諃 > chēn; #8AC3
+諄 > zhūn; #8AC4
+諅 > jī; #8AC5
+諆 > qī; #8AC6
+談 > tán; #8AC7
+諈 > zhùi; #8AC8
+諉 > wĕi; #8AC9
+諊 > jú; #8ACA
+請 > qĭng; #8ACB
+諌 > jiàn; #8ACC
+諍 > zhēng; #8ACD
+諎 > zé; #8ACE
+諏 > zōu; #8ACF
+諐 > qiān; #8AD0
+諑 > zhúo; #8AD1
+諒 > liàng; #8AD2
+諓 > jiàn; #8AD3
+諔 > zhù; #8AD4
+諕 > háo; #8AD5
+論 > lùn; #8AD6
+諗 > shĕn; #8AD7
+諘 > biăo; #8AD8
+諙 > huài; #8AD9
+諚 > pián; #8ADA
+諛 > yú; #8ADB
+諜 > dié; #8ADC
+諝 > xŭ; #8ADD
+諞 > pián; #8ADE
+諟 > shì; #8ADF
+諠 > xuān; #8AE0
+諡 > shì; #8AE1
+諢 > hùn; #8AE2
+諣 > huà; #8AE3
+諤 > è; #8AE4
+諥 > zhòng; #8AE5
+諦 > dì; #8AE6
+諧 > xié; #8AE7
+諨 > fú; #8AE8
+諩 > pŭ; #8AE9
+諪 > tíng; #8AEA
+諫 > jiàn; #8AEB
+諬 > qĭ; #8AEC
+諭 > yù; #8AED
+諮 > zī; #8AEE
+諯 > chuán; #8AEF
+諰 > xĭ; #8AF0
+諱 > hùi; #8AF1
+諲 > yīn; #8AF2
+諳 > ān; #8AF3
+諴 > xián; #8AF4
+諵 > nán; #8AF5
+諶 > chén; #8AF6
+諷 > fēng; #8AF7
+諸 > zhū; #8AF8
+諹 > yáng; #8AF9
+諺 > yàn; #8AFA
+諻 > hēng; #8AFB
+諼 > xuān; #8AFC
+諽 > gé; #8AFD
+諾 > nùo; #8AFE
+諿 > qì; #8AFF
+謀 > móu; #8B00
+謁 > yè; #8B01
+謂 > wèi; #8B02
+謄 > téng; #8B04
+謅 > zōu; #8B05
+謆 > shàn; #8B06
+謇 > jiăn; #8B07
+謈 > bó; #8B08
+謉 > kù1; #8B09
+謊 > huăng; #8B0A
+謋 > hùo; #8B0B
+謌 > gē; #8B0C
+謍 > yíng; #8B0D
+謎 > mí; #8B0E
+謏 > xiăo; #8B0F
+謐 > mì; #8B10
+謑 > xì; #8B11
+謒 > qiāng; #8B12
+謓 > chēn; #8B13
+謔 > nǜe; #8B14
+謕 > tí; #8B15
+謖 > sù; #8B16
+謗 > bàng; #8B17
+謘 > chí; #8B18
+謙 > qiān; #8B19
+謚 > shì; #8B1A
+講 > jiăng; #8B1B
+謜 > yuàn; #8B1C
+謝 > xiè; #8B1D
+謞 > xuè; #8B1E
+謟 > tāo; #8B1F
+謠 > yáo; #8B20
+謡 > yáo; #8B21
+謣 > yú; #8B23
+謤 > biāo; #8B24
+謥 > còng; #8B25
+謦 > qìng; #8B26
+謧 > lí; #8B27
+謨 > mó; #8B28
+謩 > mò; #8B29
+謪 > shāng; #8B2A
+謫 > zhé; #8B2B
+謬 > mìu; #8B2C
+謭 > jiăn; #8B2D
+謮 > zé; #8B2E
+謯 > jiē; #8B2F
+謰 > lián; #8B30
+謱 > lóu; #8B31
+謲 > cān; #8B32
+謳 > ōu; #8B33
+謴 > guàn; #8B34
+謵 > xí; #8B35
+謶 > zhúo; #8B36
+謷 > áo; #8B37
+謸 > áo; #8B38
+謹 > jĭn; #8B39
+謺 > zhé; #8B3A
+謻 > yí; #8B3B
+謼 > hù; #8B3C
+謽 > jiàng; #8B3D
+謾 > mán; #8B3E
+謿 > cháo; #8B3F
+譀 > hàn; #8B40
+譁 > huá; #8B41
+譂 > chăn; #8B42
+譃 > xū; #8B43
+譄 > zēng; #8B44
+譅 > sè; #8B45
+譆 > xī; #8B46
+譇 > shē; #8B47
+譈 > dùi; #8B48
+證 > zhèng; #8B49
+譊 > náo; #8B4A
+譋 > lán; #8B4B
+譌 > é; #8B4C
+譍 > yìng; #8B4D
+譎 > jué; #8B4E
+譏 > jī; #8B4F
+譐 > zŭn; #8B50
+譑 > jiăo; #8B51
+譒 > bò; #8B52
+譓 > hùi; #8B53
+譔 > zhuàn; #8B54
+譕 > mú; #8B55
+譖 > zèn; #8B56
+譗 > zhá; #8B57
+識 > shì; #8B58
+譙 > qiáo; #8B59
+譚 > tán; #8B5A
+譛 > zèn; #8B5B
+譜 > pŭ; #8B5C
+譝 > shéng; #8B5D
+譞 > xuān; #8B5E
+譟 > zào; #8B5F
+譠 > tān; #8B60
+譡 > dăng; #8B61
+譢 > sùi; #8B62
+譣 > qiān; #8B63
+譤 > jī; #8B64
+譥 > jiào; #8B65
+警 > jĭng; #8B66
+譧 > lián; #8B67
+譨 > nóu; #8B68
+譩 > yī; #8B69
+譪 > ài; #8B6A
+譫 > zhān; #8B6B
+譬 > pì; #8B6C
+譭 > hŭi; #8B6D
+譮 > huà; #8B6E
+譯 > yì; #8B6F
+議 > yì; #8B70
+譱 > shàn; #8B71
+譲 > ràng; #8B72
+譳 > nòu; #8B73
+譴 > qiăn; #8B74
+譵 > zhùi; #8B75
+譶 > tà; #8B76
+護 > hù; #8B77
+譸 > zhōu; #8B78
+譹 > háo; #8B79
+譺 > yè; #8B7A
+譻 > yīng; #8B7B
+譼 > jiàn; #8B7C
+譽 > yù; #8B7D
+譾 > jiăn; #8B7E
+譿 > hùi; #8B7F
+讀 > dú; #8B80
+讁 > zhé; #8B81
+讂 > xuàn; #8B82
+讃 > zàn; #8B83
+讄 > lĕi; #8B84
+讅 > shĕn; #8B85
+讆 > wèi; #8B86
+讇 > chăn; #8B87
+讈 > lì; #8B88
+讉 > yí; #8B89
+變 > biàn; #8B8A
+讋 > zhé; #8B8B
+讌 > yàn; #8B8C
+讍 > è; #8B8D
+讎 > chóu; #8B8E
+讏 > wèi; #8B8F
+讐 > chóu; #8B90
+讑 > yào; #8B91
+讒 > chán; #8B92
+讓 > ràng; #8B93
+讔 > yĭn; #8B94
+讕 > lán; #8B95
+讖 > chèn; #8B96
+讗 > hùo; #8B97
+讘 > zhé; #8B98
+讙 > huān; #8B99
+讚 > zàn; #8B9A
+讛 > yì; #8B9B
+讜 > dăng; #8B9C
+讝 > zhān; #8B9D
+讞 > yàn; #8B9E
+讟 > dú; #8B9F
+讠 > yán; #8BA0
+计 > jì; #8BA1
+订 > dìng; #8BA2
+讣 > fù; #8BA3
+认 > rèn; #8BA4
+讥 > jī; #8BA5
+讦 > jié; #8BA6
+讧 > hóng; #8BA7
+讨 > tăo; #8BA8
+让 > ràng; #8BA9
+讪 > shàn; #8BAA
+讫 > qì; #8BAB
+讬 > tūo; #8BAC
+训 > xùn; #8BAD
+议 > yì; #8BAE
+讯 > xùn; #8BAF
+记 > jì; #8BB0
+讱 > rèn; #8BB1
+讲 > jiăng; #8BB2
+讳 > hùi; #8BB3
+讴 > ōu; #8BB4
+讵 > jù; #8BB5
+讶 > yà; #8BB6
+讷 > nè; #8BB7
+许 > xŭ; #8BB8
+讹 > é; #8BB9
+论 > lùn; #8BBA
+讻 > xīong; #8BBB
+讼 > sòng; #8BBC
+讽 > fēng; #8BBD
+设 > shè; #8BBE
+访 > făng; #8BBF
+诀 > jué; #8BC0
+证 > zhèng; #8BC1
+诂 > gŭ; #8BC2
+诃 > hē; #8BC3
+评 > píng; #8BC4
+诅 > zŭ; #8BC5
+识 > shì; #8BC6
+诇 > xìong; #8BC7
+诈 > zhà; #8BC8
+诉 > sù; #8BC9
+诊 > zhĕn; #8BCA
+诋 > dĭ; #8BCB
+诌 > zōu; #8BCC
+词 > cí; #8BCD
+诎 > qù; #8BCE
+诏 > zhào; #8BCF
+诐 > bì; #8BD0
+译 > yì; #8BD1
+诒 > yí; #8BD2
+诓 > kuāng; #8BD3
+诔 > lĕi; #8BD4
+试 > shì; #8BD5
+诖 > guà; #8BD6
+诗 > shī; #8BD7
+诘 > jié; #8BD8
+诙 > hūi; #8BD9
+诚 > chéng; #8BDA
+诛 > zhū; #8BDB
+诜 > shēn; #8BDC
+话 > huà; #8BDD
+诞 > dàn; #8BDE
+诟 > gòu; #8BDF
+诠 > quán; #8BE0
+诡 > gŭi; #8BE1
+询 > xún; #8BE2
+诣 > yì; #8BE3
+诤 > zhēng; #8BE4
+该 > gāi; #8BE5
+详 > xiáng; #8BE6
+诧 > chà; #8BE7
+诨 > hùn; #8BE8
+诩 > xŭ; #8BE9
+诪 > zhōu; #8BEA
+诫 > jiè; #8BEB
+诬 > wú; #8BEC
+语 > yŭ; #8BED
+诮 > qiào; #8BEE
+误 > wù; #8BEF
+诰 > gào; #8BF0
+诱 > yòu; #8BF1
+诲 > hùi; #8BF2
+诳 > kuáng; #8BF3
+说 > shūo; #8BF4
+诵 > sòng; #8BF5
+诶 > āi; #8BF6
+请 > qĭng; #8BF7
+诸 > zhū; #8BF8
+诹 > zōu; #8BF9
+诺 > nùo; #8BFA
+读 > dú; #8BFB
+诼 > zhúo; #8BFC
+诽 > fĕi; #8BFD
+课 > kè; #8BFE
+诿 > wĕi; #8BFF
+谀 > yú; #8C00
+谁 > shúi; #8C01
+谂 > shĕn; #8C02
+调 > diào; #8C03
+谄 > chăn; #8C04
+谅 > liàng; #8C05
+谆 > zhūn; #8C06
+谇 > sùi; #8C07
+谈 > tán; #8C08
+谉 > shĕn; #8C09
+谊 > yí; #8C0A
+谋 > móu; #8C0B
+谌 > chén; #8C0C
+谍 > dié; #8C0D
+谎 > huăng; #8C0E
+谏 > jiàn; #8C0F
+谐 > xié; #8C10
+谑 > nǜe; #8C11
+谒 > yè; #8C12
+谓 > wèi; #8C13
+谔 > è; #8C14
+谕 > yù; #8C15
+谖 > xuān; #8C16
+谗 > chán; #8C17
+谘 > zī; #8C18
+谙 > ān; #8C19
+谚 > yàn; #8C1A
+谛 > dì; #8C1B
+谜 > mí; #8C1C
+谝 > pián; #8C1D
+谞 > xŭ; #8C1E
+谟 > mó; #8C1F
+谠 > dăng; #8C20
+谡 > sù; #8C21
+谢 > xiè; #8C22
+谣 > yáo; #8C23
+谤 > bàng; #8C24
+谥 > shì; #8C25
+谦 > qiān; #8C26
+谧 > mì; #8C27
+谨 > jĭn; #8C28
+谩 > mán; #8C29
+谪 > zhé; #8C2A
+谫 > jiăn; #8C2B
+谬 > mìu; #8C2C
+谭 > tán; #8C2D
+谮 > zèn; #8C2E
+谯 > qiáo; #8C2F
+谰 > lán; #8C30
+谱 > pŭ; #8C31
+谲 > jué; #8C32
+谳 > yàn; #8C33
+谴 > qiăn; #8C34
+谵 > zhān; #8C35
+谶 > chèn; #8C36
+谷 > gŭ; #8C37
+谸 > qiān; #8C38
+谹 > hóng; #8C39
+谺 > xiā; #8C3A
+谻 > jué; #8C3B
+谼 > hóng; #8C3C
+谽 > hān; #8C3D
+谾 > hōng; #8C3E
+谿 > xī; #8C3F
+豀 > xī; #8C40
+豁 > hùo; #8C41
+豂 > liáo; #8C42
+豃 > hăn; #8C43
+豄 > dú; #8C44
+豅 > lóng; #8C45
+豆 > dòu; #8C46
+豇 > jiāng; #8C47
+豈 > qĭ; #8C48
+豉 > shì; #8C49
+豊 > lĭ; #8C4A
+豋 > dēng; #8C4B
+豌 > wān; #8C4C
+豍 > bī; #8C4D
+豎 > shù; #8C4E
+豏 > xiàn; #8C4F
+豐 > fēng; #8C50
+豑 > zhì; #8C51
+豒 > zhì; #8C52
+豓 > yàn; #8C53
+豔 > yàn; #8C54
+豕 > shĭ; #8C55
+豖 > chù; #8C56
+豗 > hūi; #8C57
+豘 > tún; #8C58
+豙 > yì; #8C59
+豚 > tún; #8C5A
+豛 > yì; #8C5B
+豜 > jiān; #8C5C
+豝 > bā; #8C5D
+豞 > hòu; #8C5E
+豟 > è; #8C5F
+豠 > cú; #8C60
+象 > xiàng; #8C61
+豢 > huàn; #8C62
+豣 > jiān; #8C63
+豤 > kĕn; #8C64
+豥 > gāi; #8C65
+豦 > qú; #8C66
+豧 > fū; #8C67
+豨 > xī; #8C68
+豩 > bīn; #8C69
+豪 > háo; #8C6A
+豫 > yù; #8C6B
+豬 > zhū; #8C6C
+豭 > jiā; #8C6D
+豯 > xī; #8C6F
+豰 > bó; #8C70
+豱 > wēn; #8C71
+豲 > huán; #8C72
+豳 > bīn; #8C73
+豴 > dí; #8C74
+豵 > zōng; #8C75
+豶 > fén; #8C76
+豷 > yì; #8C77
+豸 > zhì; #8C78
+豹 > bào; #8C79
+豺 > chái; #8C7A
+豻 > hàn; #8C7B
+豼 > pí; #8C7C
+豽 > nà; #8C7D
+豾 > pī; #8C7E
+豿 > gŏu; #8C7F
+貀 > nà; #8C80
+貁 > yòu; #8C81
+貂 > diāo; #8C82
+貃 > mò; #8C83
+貄 > sì; #8C84
+貅 > xīu; #8C85
+貆 > huán; #8C86
+貇 > kūn; #8C87
+貈 > hé; #8C88
+貉 > hé; #8C89
+貊 > mò; #8C8A
+貋 > hàn; #8C8B
+貌 > mào; #8C8C
+貍 > lí; #8C8D
+貎 > ní; #8C8E
+貏 > bĭ; #8C8F
+貐 > yŭ; #8C90
+貑 > jiā; #8C91
+貒 > tuān; #8C92
+貓 > māo; #8C93
+貔 > pí; #8C94
+貕 > xī; #8C95
+貖 > è; #8C96
+貗 > jù; #8C97
+貘 > mò; #8C98
+貙 > chū; #8C99
+貚 > tán; #8C9A
+貛 > huān; #8C9B
+貜 > jué; #8C9C
+貝 > bèi; #8C9D
+貞 > zhēn; #8C9E
+貟 > yuán; #8C9F
+負 > fù; #8CA0
+財 > cái; #8CA1
+貢 > gòng; #8CA2
+貣 > tè; #8CA3
+貤 > yí; #8CA4
+貥 > háng; #8CA5
+貦 > wàn; #8CA6
+貧 > pín; #8CA7
+貨 > hùo; #8CA8
+販 > fàn; #8CA9
+貪 > tān; #8CAA
+貫 > guàn; #8CAB
+責 > zé; #8CAC
+貭 > zhí; #8CAD
+貮 > èr; #8CAE
+貯 > zhŭ; #8CAF
+貰 > shì; #8CB0
+貱 > bì; #8CB1
+貲 > zī; #8CB2
+貳 > èr; #8CB3
+貴 > gùi; #8CB4
+貵 > piăn; #8CB5
+貶 > biăn; #8CB6
+買 > măi; #8CB7
+貸 > dài; #8CB8
+貹 > shèng; #8CB9
+貺 > kuàng; #8CBA
+費 > fèi; #8CBB
+貼 > tiē; #8CBC
+貽 > yí; #8CBD
+貾 > chí; #8CBE
+貿 > mào; #8CBF
+賀 > hè; #8CC0
+賁 > bì; #8CC1
+賂 > lù; #8CC2
+賃 > rèn; #8CC3
+賄 > hùi; #8CC4
+賅 > gāi; #8CC5
+賆 > pián; #8CC6
+資 > zī; #8CC7
+賈 > jiă; #8CC8
+賉 > xù; #8CC9
+賊 > zéi; #8CCA
+賋 > jiăo; #8CCB
+賌 > gài; #8CCC
+賍 > zāng; #8CCD
+賎 > jiàn; #8CCE
+賏 > yìng; #8CCF
+賐 > xùn; #8CD0
+賑 > zhèn; #8CD1
+賒 > shē; #8CD2
+賓 > bīn; #8CD3
+賔 > bīn; #8CD4
+賕 > qíu; #8CD5
+賖 > shē; #8CD6
+賗 > chuàn; #8CD7
+賘 > zāng; #8CD8
+賙 > zhōu; #8CD9
+賚 > lài; #8CDA
+賛 > zàn; #8CDB
+賜 > sì; #8CDC
+賝 > chēn; #8CDD
+賞 > shăng; #8CDE
+賟 > tiăn; #8CDF
+賠 > péi; #8CE0
+賡 > gēng; #8CE1
+賢 > xián; #8CE2
+賣 > mài; #8CE3
+賤 > jiàn; #8CE4
+賥 > sùi; #8CE5
+賦 > fù; #8CE6
+賧 > tàn; #8CE7
+賨 > cóng; #8CE8
+賩 > cóng; #8CE9
+質 > zhí; #8CEA
+賫 > jī; #8CEB
+賬 > zhàng; #8CEC
+賭 > dŭ; #8CED
+賮 > jìn; #8CEE
+賯 > xīong; #8CEF
+賰 > shŭn; #8CF0
+賱 > yŭn; #8CF1
+賲 > băo; #8CF2
+賳 > zāi; #8CF3
+賴 > lài; #8CF4
+賵 > fèng; #8CF5
+賶 > càng; #8CF6
+賷 > jī; #8CF7
+賸 > shèng; #8CF8
+賹 > ài; #8CF9
+賺 > zhuàn; #8CFA
+賻 > fù; #8CFB
+購 > gòu; #8CFC
+賽 > sài; #8CFD
+賾 > zé; #8CFE
+賿 > liáo; #8CFF
+贀 > wèi; #8D00
+贁 > bài; #8D01
+贂 > chĕn; #8D02
+贃 > zhuàn; #8D03
+贄 > zhì; #8D04
+贅 > zhùi; #8D05
+贆 > biāo; #8D06
+贇 > yūn; #8D07
+贈 > zèng; #8D08
+贉 > tăn; #8D09
+贊 > zàn; #8D0A
+贋 > yàn; #8D0B
+贍 > shàn; #8D0D
+贎 > wàn; #8D0E
+贏 > yíng; #8D0F
+贐 > jìn; #8D10
+贑 > găn; #8D11
+贒 > xián; #8D12
+贓 > zāng; #8D13
+贔 > bì; #8D14
+贕 > dú; #8D15
+贖 > shú; #8D16
+贗 > yàn; #8D17
+贙 > xuàn; #8D19
+贚 > lòng; #8D1A
+贛 > gàn; #8D1B
+贜 > zāng; #8D1C
+贝 > bèi; #8D1D
+贞 > zhēn; #8D1E
+负 > fù; #8D1F
+贠 > yuán; #8D20
+贡 > gòng; #8D21
+财 > cái; #8D22
+责 > zé; #8D23
+贤 > xián; #8D24
+败 > bài; #8D25
+账 > zhàng; #8D26
+货 > hùo; #8D27
+质 > zhí; #8D28
+贩 > fàn; #8D29
+贪 > tān; #8D2A
+贫 > pín; #8D2B
+贬 > biăn; #8D2C
+购 > gòu; #8D2D
+贮 > zhŭ; #8D2E
+贯 > guàn; #8D2F
+贰 > èr; #8D30
+贱 > jiàn; #8D31
+贲 > bì; #8D32
+贳 > shì; #8D33
+贴 > tiē; #8D34
+贵 > gùi; #8D35
+贶 > kuàng; #8D36
+贷 > dài; #8D37
+贸 > mào; #8D38
+费 > fèi; #8D39
+贺 > hè; #8D3A
+贻 > yí; #8D3B
+贼 > zéi; #8D3C
+贽 > zhì; #8D3D
+贾 > jiă; #8D3E
+贿 > hùi; #8D3F
+赀 > zī; #8D40
+赁 > rèn; #8D41
+赂 > lù; #8D42
+赃 > zāng; #8D43
+资 > zī; #8D44
+赅 > gāi; #8D45
+赆 > jìn; #8D46
+赇 > qíu; #8D47
+赈 > zhèn; #8D48
+赉 > lài; #8D49
+赊 > shē; #8D4A
+赋 > fù; #8D4B
+赌 > dŭ; #8D4C
+赍 > jī; #8D4D
+赎 > shú; #8D4E
+赏 > shăng; #8D4F
+赐 > sì; #8D50
+赑 > bì; #8D51
+赒 > zhōu; #8D52
+赓 > gēng; #8D53
+赔 > péi; #8D54
+赕 > tàn; #8D55
+赖 > lài; #8D56
+赗 > fèng; #8D57
+赘 > zhùi; #8D58
+赙 > fù; #8D59
+赚 > zhuàn; #8D5A
+赛 > sài; #8D5B
+赜 > zé; #8D5C
+赝 > yàn; #8D5D
+赞 > zàn; #8D5E
+赟 > yūn; #8D5F
+赠 > zèng; #8D60
+赡 > shàn; #8D61
+赢 > yíng; #8D62
+赣 > gàn; #8D63
+赤 > chì; #8D64
+赥 > xì; #8D65
+赦 > shè; #8D66
+赧 > năn; #8D67
+赨 > xíong; #8D68
+赩 > xì; #8D69
+赪 > chēng; #8D6A
+赫 > hè; #8D6B
+赬 > chēng; #8D6C
+赭 > zhĕ; #8D6D
+赮 > xiá; #8D6E
+赯 > táng; #8D6F
+走 > zŏu; #8D70
+赱 > zŏu; #8D71
+赲 > lì; #8D72
+赳 > jĭu; #8D73
+赴 > fù; #8D74
+赵 > zhào; #8D75
+赶 > găn; #8D76
+起 > qĭ; #8D77
+赸 > shàn; #8D78
+赹 > qíong; #8D79
+赺 > qín; #8D7A
+赻 > xiăn; #8D7B
+赼 > cī; #8D7C
+赽 > jué; #8D7D
+赾 > qĭn; #8D7E
+赿 > chí; #8D7F
+趀 > cī; #8D80
+趁 > chèn; #8D81
+趂 > chèn; #8D82
+趃 > dié; #8D83
+趄 > jū; #8D84
+超 > chāo; #8D85
+趆 > dī; #8D86
+趇 > sè; #8D87
+趈 > zhān; #8D88
+趉 > zhú; #8D89
+越 > yuè; #8D8A
+趋 > qū; #8D8B
+趌 > jié; #8D8C
+趍 > chí; #8D8D
+趎 > chú; #8D8E
+趏 > guā; #8D8F
+趐 > xuè; #8D90
+趑 > cī; #8D91
+趒 > tiáo; #8D92
+趓 > dŭo; #8D93
+趔 > liè; #8D94
+趕 > găn; #8D95
+趖 > sūo; #8D96
+趗 > cù; #8D97
+趘 > xí; #8D98
+趙 > zhào; #8D99
+趚 > sù; #8D9A
+趛 > yĭn; #8D9B
+趜 > jú; #8D9C
+趝 > jiàn; #8D9D
+趞 > què; #8D9E
+趟 > tàng; #8D9F
+趠 > chùo; #8DA0
+趡 > cŭi; #8DA1
+趢 > lù; #8DA2
+趣 > qù; #8DA3
+趤 > dàng; #8DA4
+趥 > qīu; #8DA5
+趦 > zī; #8DA6
+趧 > tí; #8DA7
+趨 > qū; #8DA8
+趩 > chì; #8DA9
+趪 > huáng; #8DAA
+趫 > qiáo; #8DAB
+趬 > qiáo; #8DAC
+趭 > yào; #8DAD
+趮 > zào; #8DAE
+趯 > tì; #8DAF
+趱 > zăn; #8DB1
+趲 > zăn; #8DB2
+足 > zú; #8DB3
+趴 > pā; #8DB4
+趵 > bào; #8DB5
+趶 > kù; #8DB6
+趷 > kē; #8DB7
+趸 > dŭn; #8DB8
+趹 > jué; #8DB9
+趺 > fū; #8DBA
+趻 > chĕn; #8DBB
+趼 > jiăn; #8DBC
+趽 > fàng; #8DBD
+趾 > zhĭ; #8DBE
+趿 > sà; #8DBF
+跀 > yuè; #8DC0
+跁 > pá; #8DC1
+跂 > qí; #8DC2
+跃 > yuè; #8DC3
+跄 > qiāng; #8DC4
+跅 > tùo; #8DC5
+跆 > tái; #8DC6
+跇 > yì; #8DC7
+跈 > niăn; #8DC8
+跉 > líng; #8DC9
+跊 > mèi; #8DCA
+跋 > bá; #8DCB
+跌 > diē; #8DCC
+跍 > kū; #8DCD
+跎 > túo; #8DCE
+跏 > jiā; #8DCF
+跐 > cĭ; #8DD0
+跑 > păo; #8DD1
+跒 > qiă; #8DD2
+跓 > zhù; #8DD3
+跔 > jū; #8DD4
+跕 > dié; #8DD5
+跖 > zhī; #8DD6
+跗 > fū; #8DD7
+跘 > pán; #8DD8
+跙 > jŭ; #8DD9
+跚 > shān; #8DDA
+跛 > bŏ; #8DDB
+跜 > ní; #8DDC
+距 > jù; #8DDD
+跞 > lì; #8DDE
+跟 > gēn; #8DDF
+跠 > yí; #8DE0
+跡 > jī; #8DE1
+跢 > dài; #8DE2
+跣 > xiăn; #8DE3
+跤 > jiāo; #8DE4
+跥 > dùo; #8DE5
+跦 > zhū; #8DE6
+跧 > zhuān; #8DE7
+跨 > kuà; #8DE8
+跩 > zhuăi; #8DE9
+跪 > gùi; #8DEA
+跫 > qíong; #8DEB
+跬 > kŭi; #8DEC
+跭 > xiáng; #8DED
+跮 > chì; #8DEE
+路 > lù; #8DEF
+跰 > bèng; #8DF0
+跱 > zhì; #8DF1
+跲 > jiá; #8DF2
+跳 > tiào; #8DF3
+跴 > căi; #8DF4
+践 > jiàn; #8DF5
+跶 > tà; #8DF6
+跷 > qiāo; #8DF7
+跸 > bì; #8DF8
+跹 > xiān; #8DF9
+跺 > dùo; #8DFA
+跻 > jī; #8DFB
+跼 > jú; #8DFC
+跽 > jì; #8DFD
+跾 > shú; #8DFE
+跿 > tú; #8DFF
+踀 > chù; #8E00
+踁 > jìng; #8E01
+踂 > niè; #8E02
+踃 > xiāo; #8E03
+踄 > bó; #8E04
+踅 > chì; #8E05
+踆 > qūn; #8E06
+踇 > mŏu; #8E07
+踈 > shū; #8E08
+踉 > láng; #8E09
+踊 > yŏng; #8E0A
+踋 > jiăo; #8E0B
+踌 > chóu; #8E0C
+踍 > qiāo; #8E0D
+踏 > tà; #8E0F
+踐 > jiàn; #8E10
+踑 > qí; #8E11
+踒 > wō; #8E12
+踓 > wĕi; #8E13
+踔 > zhúo; #8E14
+踕 > jié; #8E15
+踖 > jí; #8E16
+踗 > niē; #8E17
+踘 > jú; #8E18
+踙 > jū; #8E19
+踚 > lún; #8E1A
+踛 > lù; #8E1B
+踜 > lèng; #8E1C
+踝 > huái; #8E1D
+踞 > jù; #8E1E
+踟 > chí; #8E1F
+踠 > wăn; #8E20
+踡 > quán; #8E21
+踢 > tī; #8E22
+踣 > bó; #8E23
+踤 > zú; #8E24
+踥 > qiè; #8E25
+踦 > jĭ; #8E26
+踧 > cù; #8E27
+踨 > zōng; #8E28
+踩 > căi; #8E29
+踪 > zōng; #8E2A
+踫 > pèng; #8E2B
+踬 > zhì; #8E2C
+踭 > zhēng; #8E2D
+踮 > diăn; #8E2E
+踯 > zhí; #8E2F
+踰 > yú; #8E30
+踱 > dùo; #8E31
+踲 > dùn; #8E32
+踳 > chŭn; #8E33
+踴 > yŏng; #8E34
+踵 > zhŏng; #8E35
+踶 > dì; #8E36
+踷 > zhĕ; #8E37
+踸 > chĕn; #8E38
+踹 > chuài; #8E39
+踺 > jiàn; #8E3A
+踻 > guā; #8E3B
+踼 > táng; #8E3C
+踽 > jŭ; #8E3D
+踾 > fú; #8E3E
+踿 > zú; #8E3F
+蹀 > dié; #8E40
+蹁 > pián; #8E41
+蹂 > róu; #8E42
+蹃 > nùo; #8E43
+蹄 > tí; #8E44
+蹅 > chă; #8E45
+蹆 > tŭi; #8E46
+蹇 > jiăn; #8E47
+蹈 > dào; #8E48
+蹉 > cūo; #8E49
+蹊 > xī; #8E4A
+蹋 > tà; #8E4B
+蹌 > qiāng; #8E4C
+蹍 > zhăn; #8E4D
+蹎 > diān; #8E4E
+蹏 > tí; #8E4F
+蹐 > jí; #8E50
+蹑 > niè; #8E51
+蹒 > mán; #8E52
+蹓 > līu; #8E53
+蹔 > zhàn; #8E54
+蹕 > bì; #8E55
+蹖 > chōng; #8E56
+蹗 > lù; #8E57
+蹘 > liáo; #8E58
+蹙 > cù; #8E59
+蹚 > tāng; #8E5A
+蹛 > dài; #8E5B
+蹜 > sūo; #8E5C
+蹝 > xĭ; #8E5D
+蹞 > kŭi; #8E5E
+蹟 > jī; #8E5F
+蹠 > zhí; #8E60
+蹡 > qiāng; #8E61
+蹢 > dí; #8E62
+蹣 > mán; #8E63
+蹤 > zōng; #8E64
+蹥 > lián; #8E65
+蹦 > bèng; #8E66
+蹧 > zāo; #8E67
+蹨 > niăn; #8E68
+蹩 > bié; #8E69
+蹪 > túi; #8E6A
+蹫 > jú; #8E6B
+蹬 > dèng; #8E6C
+蹭 > cèng; #8E6D
+蹮 > xiān; #8E6E
+蹯 > fán; #8E6F
+蹰 > chú; #8E70
+蹱 > zhōng; #8E71
+蹲 > dūn; #8E72
+蹳 > bō; #8E73
+蹴 > cù; #8E74
+蹵 > zú; #8E75
+蹶 > jué; #8E76
+蹷 > jué; #8E77
+蹸 > lìn; #8E78
+蹹 > tà; #8E79
+蹺 > qiāo; #8E7A
+蹻 > qiāo; #8E7B
+蹼 > pú; #8E7C
+蹽 > liāo; #8E7D
+蹾 > dūn; #8E7E
+蹿 > cuān; #8E7F
+躀 > kuàng; #8E80
+躁 > zào; #8E81
+躂 > tà; #8E82
+躃 > bì; #8E83
+躄 > bì; #8E84
+躅 > zhú; #8E85
+躆 > jù; #8E86
+躇 > chú; #8E87
+躈 > qiào; #8E88
+躉 > dŭn; #8E89
+躊 > chóu; #8E8A
+躋 > jī; #8E8B
+躌 > wŭ; #8E8C
+躍 > yuè; #8E8D
+躎 > niăn; #8E8E
+躏 > lìn; #8E8F
+躐 > liè; #8E90
+躑 > zhí; #8E91
+躒 > lì; #8E92
+躓 > zhì; #8E93
+躔 > chán; #8E94
+躕 > chú; #8E95
+躖 > duàn; #8E96
+躗 > wèi; #8E97
+躘 > lóng; #8E98
+躙 > lìn; #8E99
+躚 > xiān; #8E9A
+躛 > wèi; #8E9B
+躜 > zuān; #8E9C
+躝 > lán; #8E9D
+躞 > xiè; #8E9E
+躟 > ráng; #8E9F
+躠 > xiĕ; #8EA0
+躡 > niè; #8EA1
+躢 > tà; #8EA2
+躣 > qú; #8EA3
+躤 > jiè; #8EA4
+躥 > cuān; #8EA5
+躦 > zuān; #8EA6
+躧 > xĭ; #8EA7
+躨 > kúi; #8EA8
+躩 > jué; #8EA9
+躪 > lìn; #8EAA
+身 > shēn; #8EAB
+躬 > gōng; #8EAC
+躭 > dān; #8EAD
+躯 > qū; #8EAF
+躰 > tĭ; #8EB0
+躱 > dŭo; #8EB1
+躲 > dŭo; #8EB2
+躳 > gōng; #8EB3
+躴 > láng; #8EB4
+躶 > lŭo; #8EB6
+躷 > ăi; #8EB7
+躸 > jī; #8EB8
+躹 > jú; #8EB9
+躺 > tăng; #8EBA
+躽 > yăn; #8EBD
+躿 > kāng; #8EBF
+軀 > qū; #8EC0
+軁 > lóu; #8EC1
+軂 > lào; #8EC2
+軃 > tŭo; #8EC3
+軄 > zhí; #8EC4
+軆 > tĭ; #8EC6
+軇 > dào; #8EC7
+軉 > yù; #8EC9
+車 > chē; #8ECA
+軋 > yà; #8ECB
+軌 > gŭi; #8ECC
+軍 > jūn; #8ECD
+軎 > wèi; #8ECE
+軏 > yuè; #8ECF
+軐 > xìn; #8ED0
+軑 > dì; #8ED1
+軒 > xuān; #8ED2
+軓 > fàn; #8ED3
+軔 > rèn; #8ED4
+軕 > shān; #8ED5
+軖 > qiáng; #8ED6
+軗 > shū; #8ED7
+軘 > tún; #8ED8
+軙 > chén; #8ED9
+軚 > dài; #8EDA
+軛 > è; #8EDB
+軜 > nà; #8EDC
+軝 > qí; #8EDD
+軞 > máo; #8EDE
+軟 > ruăn; #8EDF
+軠 > rèn; #8EE0
+軡 > făn; #8EE1
+転 > zhuăn; #8EE2
+軣 > hōng; #8EE3
+軤 > hū; #8EE4
+軥 > qú; #8EE5
+軦 > huàng; #8EE6
+軧 > dĭ; #8EE7
+軨 > líng; #8EE8
+軩 > dài; #8EE9
+軪 > āo; #8EEA
+軫 > zhĕn; #8EEB
+軬 > fàn; #8EEC
+軭 > kuāng; #8EED
+軮 > ăng; #8EEE
+軯 > pēng; #8EEF
+軰 > bèi; #8EF0
+軱 > gū; #8EF1
+軲 > kū; #8EF2
+軳 > páo; #8EF3
+軴 > zhù; #8EF4
+軵 > rŏng; #8EF5
+軶 > è; #8EF6
+軷 > bá; #8EF7
+軸 > zhóu; #8EF8
+軹 > zhĭ; #8EF9
+軺 > yáo; #8EFA
+軻 > kē; #8EFB
+軼 > yì; #8EFC
+軽 > qīng; #8EFD
+軾 > shì; #8EFE
+軿 > píng; #8EFF
+輀 > ér; #8F00
+輁 > qíong; #8F01
+輂 > jú; #8F02
+較 > jiào; #8F03
+輄 > guāng; #8F04
+輅 > lù; #8F05
+輆 > kăi; #8F06
+輇 > quán; #8F07
+輈 > zhōu; #8F08
+載 > zài; #8F09
+輊 > zhì; #8F0A
+輋 > shē; #8F0B
+輌 > liàng; #8F0C
+輍 > yù; #8F0D
+輎 > shāo; #8F0E
+輏 > yóu; #8F0F
+輐 > huăn; #8F10
+輑 > yŭn; #8F11
+輒 > zhé; #8F12
+輓 > wăn; #8F13
+輔 > fŭ; #8F14
+輕 > qīng; #8F15
+輖 > zhōu; #8F16
+輗 > ní; #8F17
+輘 > líng; #8F18
+輙 > zhé; #8F19
+輚 > zhàn; #8F1A
+輛 > liàng; #8F1B
+輜 > zī; #8F1C
+輝 > hūi; #8F1D
+輞 > wăng; #8F1E
+輟 > chùo; #8F1F
+輠 > gŭo; #8F20
+輡 > kăn; #8F21
+輢 > yĭ; #8F22
+輣 > péng; #8F23
+輤 > qiàn; #8F24
+輥 > gŭn; #8F25
+輦 > niăn; #8F26
+輧 > pián; #8F27
+輨 > guăn; #8F28
+輩 > bèi; #8F29
+輪 > lún; #8F2A
+輫 > pái; #8F2B
+輬 > liáng; #8F2C
+輭 > ruăn; #8F2D
+輮 > róu; #8F2E
+輯 > jí; #8F2F
+輰 > yáng; #8F30
+輱 > xián; #8F31
+輲 > chuán; #8F32
+輳 > còu; #8F33
+輴 > qūn; #8F34
+輵 > gé; #8F35
+輶 > yóu; #8F36
+輷 > hōng; #8F37
+輸 > shū; #8F38
+輹 > fù; #8F39
+輺 > zī; #8F3A
+輻 > fú; #8F3B
+輼 > wēn; #8F3C
+輽 > bèn; #8F3D
+輾 > zhăn; #8F3E
+輿 > yú; #8F3F
+轀 > wēn; #8F40
+轁 > tāo; #8F41
+轂 > gŭ; #8F42
+轃 > zhēn; #8F43
+轄 > xiá; #8F44
+轅 > yuán; #8F45
+轆 > lù; #8F46
+轇 > jīu; #8F47
+轈 > cháo; #8F48
+轉 > zhuăn; #8F49
+轊 > wèi; #8F4A
+轋 > hún; #8F4B
+轍 > chè; #8F4D
+轎 > jiào; #8F4E
+轏 > zhàn; #8F4F
+轐 > pú; #8F50
+轑 > lăo; #8F51
+轒 > fén; #8F52
+轓 > fān; #8F53
+轔 > lín; #8F54
+轕 > gé; #8F55
+轖 > sè; #8F56
+轗 > kăn; #8F57
+轘 > huàn; #8F58
+轙 > yĭ; #8F59
+轚 > jí; #8F5A
+轛 > dùi; #8F5B
+轜 > ér; #8F5C
+轝 > yú; #8F5D
+轞 > xiàn; #8F5E
+轟 > hōng; #8F5F
+轠 > lĕi; #8F60
+轡 > pèi; #8F61
+轢 > lì; #8F62
+轣 > lì; #8F63
+轤 > lú; #8F64
+轥 > lìn; #8F65
+车 > chē; #8F66
+轧 > yà; #8F67
+轨 > gŭi; #8F68
+轩 > xuān; #8F69
+轪 > dì; #8F6A
+轫 > rèn; #8F6B
+转 > zhuăn; #8F6C
+轭 > è; #8F6D
+轮 > lún; #8F6E
+软 > ruăn; #8F6F
+轰 > hōng; #8F70
+轱 > kū; #8F71
+轲 > kē; #8F72
+轳 > lú; #8F73
+轴 > zhóu; #8F74
+轵 > zhĭ; #8F75
+轶 > yì; #8F76
+轷 > hū; #8F77
+轸 > zhĕn; #8F78
+轹 > lì; #8F79
+轺 > yáo; #8F7A
+轻 > qīng; #8F7B
+轼 > shì; #8F7C
+载 > zài; #8F7D
+轾 > zhì; #8F7E
+轿 > jiào; #8F7F
+辀 > zhōu; #8F80
+辁 > quán; #8F81
+辂 > lù; #8F82
+较 > jiào; #8F83
+辄 > zhé; #8F84
+辅 > fŭ; #8F85
+辆 > liàng; #8F86
+辇 > niăn; #8F87
+辈 > bèi; #8F88
+辉 > hūi; #8F89
+辊 > gŭn; #8F8A
+辋 > wăng; #8F8B
+辌 > liáng; #8F8C
+辍 > chùo; #8F8D
+辎 > zī; #8F8E
+辏 > còu; #8F8F
+辐 > fú; #8F90
+辑 > jí; #8F91
+辒 > wēn; #8F92
+输 > shū; #8F93
+辔 > pèi; #8F94
+辕 > yuán; #8F95
+辖 > xiá; #8F96
+辗 > zhăn; #8F97
+辘 > lù; #8F98
+辙 > chè; #8F99
+辚 > lín; #8F9A
+辛 > xīn; #8F9B
+辜 > gū; #8F9C
+辝 > cí; #8F9D
+辞 > cí; #8F9E
+辟 > pì; #8F9F
+辠 > zùi; #8FA0
+辡 > biàn; #8FA1
+辢 > là; #8FA2
+辣 > là; #8FA3
+辤 > cí; #8FA4
+辥 > xuē; #8FA5
+辦 > bàn; #8FA6
+辧 > biàn; #8FA7
+辨 > biàn; #8FA8
+辩 > biàn; #8FA9
+辫 > biàn; #8FAB
+辬 > bān; #8FAC
+辭 > cí; #8FAD
+辮 > biàn; #8FAE
+辯 > biàn; #8FAF
+辰 > chén; #8FB0
+辱 > rù; #8FB1
+農 > nóng; #8FB2
+辳 > nóng; #8FB3
+辴 > zhĕn; #8FB4
+辵 > chùo; #8FB5
+辶 > chùo; #8FB6
+辸 > réng; #8FB8
+边 > biān; #8FB9
+辺 > biān; #8FBA
+辽 > liáo; #8FBD
+达 > dá; #8FBE
+辿 > chān; #8FBF
+迀 > gān; #8FC0
+迁 > qiān; #8FC1
+迂 > yū; #8FC2
+迃 > yū; #8FC3
+迄 > qì; #8FC4
+迅 > xùn; #8FC5
+迆 > yĭ; #8FC6
+过 > gùo; #8FC7
+迈 > mài; #8FC8
+迉 > qí; #8FC9
+迊 > zā; #8FCA
+迋 > wàng; #8FCB
+迌 > jia; #8FCC
+迍 > zhūn; #8FCD
+迎 > yíng; #8FCE
+迏 > tì; #8FCF
+运 > yùn; #8FD0
+近 > jìn; #8FD1
+迒 > háng; #8FD2
+迓 > yà; #8FD3
+返 > făn; #8FD4
+迕 > wù; #8FD5
+迖 > dá; #8FD6
+迗 > é; #8FD7
+还 > huán; #8FD8
+这 > zhè; #8FD9
+进 > jìn; #8FDB
+远 > yuăn; #8FDC
+违 > wéi; #8FDD
+连 > lián; #8FDE
+迟 > chí; #8FDF
+迠 > chè; #8FE0
+迡 > nì; #8FE1
+迢 > tiáo; #8FE2
+迣 > zhì; #8FE3
+迤 > yĭ; #8FE4
+迥 > jĭong; #8FE5
+迦 > jiā; #8FE6
+迧 > chén; #8FE7
+迨 > dài; #8FE8
+迩 > ĕr; #8FE9
+迪 > dí; #8FEA
+迫 > pò; #8FEB
+迬 > wăng; #8FEC
+迭 > dié; #8FED
+迮 > zé; #8FEE
+迯 > táo; #8FEF
+述 > shù; #8FF0
+迱 > túo; #8FF1
+迳 > jìng; #8FF3
+迴 > húi; #8FF4
+迵 > tóng; #8FF5
+迶 > yòu; #8FF6
+迷 > mí; #8FF7
+迸 > bèng; #8FF8
+迹 > jī; #8FF9
+迺 > năi; #8FFA
+迻 > yí; #8FFB
+迼 > jié; #8FFC
+追 > zhūi; #8FFD
+迾 > liè; #8FFE
+迿 > xùn; #8FFF
+退 > tùi; #9000
+送 > sòng; #9001
+适 > guā; #9002
+逃 > táo; #9003
+逄 > páng; #9004
+逅 > hòu; #9005
+逆 > nì; #9006
+逇 > dùn; #9007
+逈 > jĭong; #9008
+选 > xuăn; #9009
+逊 > xùn; #900A
+逋 > bū; #900B
+逌 > yóu; #900C
+逍 > xiāo; #900D
+逎 > qíu; #900E
+透 > tòu; #900F
+逐 > zhú; #9010
+逑 > qíu; #9011
+递 > dì; #9012
+逓 > dì; #9013
+途 > tú; #9014
+逕 > jìng; #9015
+逖 > tì; #9016
+逗 > dòu; #9017
+逘 > yĭ; #9018
+這 > zhè; #9019
+通 > tōng; #901A
+逛 > guàng; #901B
+逜 > wù; #901C
+逝 > shì; #901D
+逞 > chĕng; #901E
+速 > sù; #901F
+造 > zào; #9020
+逡 > qūn; #9021
+逢 > féng; #9022
+連 > lián; #9023
+逤 > sùo; #9024
+逥 > húi; #9025
+逦 > lĭ; #9026
+逨 > lái; #9028
+逩 > bèn; #9029
+逪 > cùo; #902A
+逫 > jué; #902B
+逬 > bèng; #902C
+逭 > huàn; #902D
+逮 > dài; #902E
+逯 > lù; #902F
+逰 > yóu; #9030
+週 > zhōu; #9031
+進 > jìn; #9032
+逳 > yù; #9033
+逴 > chùo; #9034
+逵 > kúi; #9035
+逶 > wēi; #9036
+逷 > tì; #9037
+逸 > yì; #9038
+逹 > dá; #9039
+逺 > yuăn; #903A
+逻 > lúo; #903B
+逼 > bī; #903C
+逽 > nùo; #903D
+逾 > yú; #903E
+逿 > dàng; #903F
+遀 > súi; #9040
+遁 > dùn; #9041
+遂 > sùi; #9042
+遃 > yăn; #9043
+遄 > chuán; #9044
+遅 > chí; #9045
+遆 > tí; #9046
+遇 > yù; #9047
+遈 > shí; #9048
+遉 > zhēn; #9049
+遊 > yóu; #904A
+運 > yùn; #904B
+遌 > è; #904C
+遍 > biàn; #904D
+過 > gùo; #904E
+遏 > è; #904F
+遐 > xiá; #9050
+遑 > huáng; #9051
+遒 > qíu; #9052
+道 > dào; #9053
+達 > dá; #9054
+違 > wéi; #9055
+遗 > yí; #9057
+遘 > gòu; #9058
+遙 > yáo; #9059
+遚 > chù; #905A
+遛 > líu; #905B
+遜 > xùn; #905C
+遝 > tà; #905D
+遞 > dì; #905E
+遟 > chí; #905F
+遠 > yuăn; #9060
+遡 > sù; #9061
+遢 > tà; #9062
+遣 > qiăn; #9063
+遥 > yáo; #9065
+遦 > guàn; #9066
+遧 > zhāng; #9067
+遨 > áo; #9068
+適 > shì; #9069
+遪 > cè; #906A
+遫 > chì; #906B
+遬 > sù; #906C
+遭 > zāo; #906D
+遮 > zhē; #906E
+遯 > dùn; #906F
+遰 > dì; #9070
+遱 > lóu; #9071
+遲 > chí; #9072
+遳 > cūo; #9073
+遴 > lín; #9074
+遵 > zūn; #9075
+遶 > rào; #9076
+遷 > qiān; #9077
+選 > xuăn; #9078
+遹 > yù; #9079
+遺 > yí; #907A
+遻 > wù; #907B
+遼 > liáo; #907C
+遽 > jù; #907D
+遾 > shì; #907E
+避 > bì; #907F
+邀 > yāo; #9080
+邁 > mài; #9081
+邂 > xiè; #9082
+邃 > sùi; #9083
+還 > huán; #9084
+邅 > zhān; #9085
+邆 > téng; #9086
+邇 > ĕr; #9087
+邈 > miăo; #9088
+邉 > biān; #9089
+邊 > biān; #908A
+邋 > lá; #908B
+邌 > lí; #908C
+邍 > yuán; #908D
+邎 > yáo; #908E
+邏 > lúo; #908F
+邐 > lĭ; #9090
+邑 > yì; #9091
+邒 > tíng; #9092
+邓 > dèng; #9093
+邔 > qĭ; #9094
+邕 > yōng; #9095
+邖 > shān; #9096
+邗 > hán; #9097
+邘 > yú; #9098
+邙 > máng; #9099
+邚 > rú; #909A
+邛 > qíong; #909B
+邝 > kuàng; #909D
+邞 > fū; #909E
+邟 > kàng; #909F
+邠 > bīn; #90A0
+邡 > fāng; #90A1
+邢 > xíng; #90A2
+那 > nà; #90A3
+邤 > xin; #90A4
+邥 > shĕn; #90A5
+邦 > bāng; #90A6
+邧 > yuán; #90A7
+邨 > cūn; #90A8
+邩 > hŭo; #90A9
+邪 > xié; #90AA
+邫 > bāng; #90AB
+邬 > wū; #90AC
+邭 > jù; #90AD
+邮 > yóu; #90AE
+邯 > hán; #90AF
+邰 > tái; #90B0
+邱 > qīu; #90B1
+邲 > bì; #90B2
+邳 > péi; #90B3
+邴 > bĭng; #90B4
+邵 > shào; #90B5
+邶 > bèi; #90B6
+邷 > wă; #90B7
+邸 > dĭ; #90B8
+邹 > zōu; #90B9
+邺 > yè; #90BA
+邻 > lín; #90BB
+邼 > kuāng; #90BC
+邽 > gūi; #90BD
+邾 > zhū; #90BE
+邿 > shī; #90BF
+郀 > kū; #90C0
+郁 > yù; #90C1
+郂 > gāi; #90C2
+郃 > gé; #90C3
+郄 > xì; #90C4
+郅 > zhì; #90C5
+郆 > jí; #90C6
+郇 > xún; #90C7
+郈 > hòu; #90C8
+郉 > xíng; #90C9
+郊 > jiāo; #90CA
+郋 > xí; #90CB
+郌 > gūi; #90CC
+郍 > núo; #90CD
+郎 > láng; #90CE
+郏 > jiá; #90CF
+郐 > kuài; #90D0
+郑 > zhèng; #90D1
+郓 > yùn; #90D3
+郔 > yán; #90D4
+郕 > chéng; #90D5
+郖 > dōu; #90D6
+郗 > chī; #90D7
+郘 > lǚ; #90D8
+郙 > fŭ; #90D9
+郚 > wú; #90DA
+郛 > fú; #90DB
+郜 > gào; #90DC
+郝 > hăo; #90DD
+郞 > láng; #90DE
+郟 > jiá; #90DF
+郠 > gĕng; #90E0
+郡 > jùn; #90E1
+郢 > yĭng; #90E2
+郣 > bó; #90E3
+郤 > xì; #90E4
+郥 > bèi; #90E5
+郦 > lì; #90E6
+郧 > yún; #90E7
+部 > bù; #90E8
+郩 > xiáo; #90E9
+郪 > qī; #90EA
+郫 > pí; #90EB
+郬 > qīng; #90EC
+郭 > gūo; #90ED
+郮 > zhou; #90EE
+郯 > tán; #90EF
+郰 > zōu; #90F0
+郱 > píng; #90F1
+郲 > lái; #90F2
+郳 > ní; #90F3
+郴 > chēn; #90F4
+郵 > yóu; #90F5
+郶 > bù; #90F6
+郷 > xiāng; #90F7
+郸 > dān; #90F8
+郹 > jú; #90F9
+郺 > yōng; #90FA
+郻 > qiāo; #90FB
+郼 > yī; #90FC
+都 > dū; #90FD
+郾 > yăn; #90FE
+郿 > méi; #90FF
+鄀 > rùo; #9100
+鄁 > bèi; #9101
+鄂 > è; #9102
+鄃 > yú; #9103
+鄄 > juàn; #9104
+鄅 > yŭ; #9105
+鄆 > yùn; #9106
+鄇 > hòu; #9107
+鄈 > kúi; #9108
+鄉 > xiāng; #9109
+鄊 > xiāng; #910A
+鄋 > sōu; #910B
+鄌 > táng; #910C
+鄍 > míng; #910D
+鄎 > xì; #910E
+鄏 > rù; #910F
+鄐 > chù; #9110
+鄑 > zī; #9111
+鄒 > zōu; #9112
+鄓 > jú; #9113
+鄔 > wū; #9114
+鄕 > xiāng; #9115
+鄖 > yún; #9116
+鄗 > hào; #9117
+鄘 > yōng; #9118
+鄙 > bĭ; #9119
+鄚 > mò; #911A
+鄛 > cháo; #911B
+鄜 > fū; #911C
+鄝 > liăo; #911D
+鄞 > yín; #911E
+鄟 > zhuān; #911F
+鄠 > hù; #9120
+鄡 > qiāo; #9121
+鄢 > yān; #9122
+鄣 > zhāng; #9123
+鄤 > fàn; #9124
+鄥 > qiāo; #9125
+鄦 > xŭ; #9126
+鄧 > dèng; #9127
+鄨 > bì; #9128
+鄩 > xín; #9129
+鄪 > bì; #912A
+鄫 > céng; #912B
+鄬 > wéi; #912C
+鄭 > zhèng; #912D
+鄮 > mào; #912E
+鄯 > shàn; #912F
+鄰 > lín; #9130
+鄱 > pó; #9131
+鄲 > dān; #9132
+鄳 > méng; #9133
+鄴 > yè; #9134
+鄵 > cāo; #9135
+鄶 > kuài; #9136
+鄷 > fēng; #9137
+鄸 > méng; #9138
+鄹 > zōu; #9139
+鄺 > kuàng; #913A
+鄻 > lián; #913B
+鄼 > zàn; #913C
+鄽 > chán; #913D
+鄾 > yōu; #913E
+鄿 > qí; #913F
+酀 > yān; #9140
+酁 > chán; #9141
+酂 > zàn; #9142
+酃 > líng; #9143
+酄 > huān; #9144
+酅 > xī; #9145
+酆 > fēng; #9146
+酇 > zàn; #9147
+酈 > lì; #9148
+酉 > yŏu; #9149
+酊 > dĭng; #914A
+酋 > qíu; #914B
+酌 > zhúo; #914C
+配 > pèi; #914D
+酎 > zhòu; #914E
+酏 > yí; #914F
+酐 > hăng; #9150
+酑 > yŭ; #9151
+酒 > jĭu; #9152
+酓 > yăn; #9153
+酔 > zùi; #9154
+酕 > máo; #9155
+酖 > dān; #9156
+酗 > xù; #9157
+酘 > tóu; #9158
+酙 > zhēn; #9159
+酚 > fēn; #915A
+酝 > yùn; #915D
+酞 > tài; #915E
+酟 > tiān; #915F
+酠 > qiă; #9160
+酡 > túo; #9161
+酢 > zùo; #9162
+酣 > hān; #9163
+酤 > gū; #9164
+酥 > sū; #9165
+酦 > pò; #9166
+酧 > chóu; #9167
+酨 > zài; #9168
+酩 > míng; #9169
+酪 > lùo; #916A
+酫 > chùo; #916B
+酬 > chóu; #916C
+酭 > yòu; #916D
+酮 > tóng; #916E
+酯 > zhĭ; #916F
+酰 > xiān; #9170
+酱 > jiàng; #9171
+酲 > chéng; #9172
+酳 > yìn; #9173
+酴 > tú; #9174
+酵 > xiào; #9175
+酶 > méi; #9176
+酷 > kù; #9177
+酸 > suān; #9178
+酹 > lèi; #9179
+酺 > pú; #917A
+酻 > zùi; #917B
+酼 > hăi; #917C
+酽 > yàn; #917D
+酾 > xĭ; #917E
+酿 > niàng; #917F
+醀 > wéi; #9180
+醁 > lù; #9181
+醂 > lăn; #9182
+醃 > yān; #9183
+醄 > táo; #9184
+醅 > pēi; #9185
+醆 > zhăn; #9186
+醇 > chún; #9187
+醈 > tán; #9188
+醉 > zùi; #9189
+醊 > chùo; #918A
+醋 > cù; #918B
+醌 > kūn; #918C
+醍 > tí; #918D
+醎 > mián; #918E
+醏 > dū; #918F
+醐 > hú; #9190
+醑 > xŭ; #9191
+醒 > xĭng; #9192
+醓 > tăn; #9193
+醔 > jīu; #9194
+醕 > chún; #9195
+醖 > yùn; #9196
+醗 > pò; #9197
+醘 > kè; #9198
+醙 > sōu; #9199
+醚 > mí; #919A
+醛 > quán; #919B
+醜 > chŏu; #919C
+醝 > cúo; #919D
+醞 > yùn; #919E
+醟 > yòng; #919F
+醠 > àng; #91A0
+醡 > zhà; #91A1
+醢 > hăi; #91A2
+醣 > táng; #91A3
+醤 > jiàng; #91A4
+醥 > piăo; #91A5
+醦 > shăn; #91A6
+醧 > yù; #91A7
+醨 > lí; #91A8
+醩 > záo; #91A9
+醪 > láo; #91AA
+醫 > yī; #91AB
+醬 > jiàng; #91AC
+醭 > pū; #91AD
+醮 > jiào; #91AE
+醯 > xī; #91AF
+醰 > tán; #91B0
+醱 > pò; #91B1
+醲 > nóng; #91B2
+醳 > yì; #91B3
+醴 > lĭ; #91B4
+醵 > jù; #91B5
+醶 > jiào; #91B6
+醷 > yì; #91B7
+醸 > niàng; #91B8
+醹 > rú; #91B9
+醺 > xūn; #91BA
+醻 > chóu; #91BB
+醼 > yàn; #91BC
+醽 > líng; #91BD
+醾 > mí; #91BE
+醿 > mí; #91BF
+釀 > niàng; #91C0
+釁 > xìn; #91C1
+釂 > jiào; #91C2
+釃 > xĭ; #91C3
+釄 > mí; #91C4
+釅 > yàn; #91C5
+釆 > biàn; #91C6
+采 > căi; #91C7
+釈 > shì; #91C8
+釉 > yòu; #91C9
+释 > shì; #91CA
+釋 > shì; #91CB
+里 > lĭ; #91CC
+重 > zhòng; #91CD
+野 > yĕ; #91CE
+量 > liàng; #91CF
+釐 > lí; #91D0
+金 > jīn; #91D1
+釒 > jīn' 'zì' 'páng; #91D2
+釓 > qíu; #91D3
+釔 > yĭ; #91D4
+釕 > diăo; #91D5
+釖 > dāo; #91D6
+釗 > zhāo; #91D7
+釘 > dīng; #91D8
+釙 > pò; #91D9
+釚 > qíu; #91DA
+釛 > hé; #91DB
+釜 > fŭ; #91DC
+針 > zhēn; #91DD
+釞 > zhí; #91DE
+釟 > bā; #91DF
+釠 > luàn; #91E0
+釡 > fŭ; #91E1
+釢 > nái; #91E2
+釣 > diào; #91E3
+釤 > shàn; #91E4
+釥 > qiăo; #91E5
+釦 > kòu; #91E6
+釧 > chuàn; #91E7
+釨 > zĭ; #91E8
+釩 > fán; #91E9
+釪 > yú; #91EA
+釫 > huá; #91EB
+釬 > hàn; #91EC
+釭 > gōng; #91ED
+釮 > qí; #91EE
+釯 > máng; #91EF
+釰 > rì; #91F0
+釱 > dì; #91F1
+釲 > sì; #91F2
+釳 > xì; #91F3
+釴 > yì; #91F4
+釵 > chāi; #91F5
+釶 > shī; #91F6
+釷 > tŭ; #91F7
+釸 > xì; #91F8
+釹 > nǚ; #91F9
+釺 > qiān; #91FA
+釼 > jiàn; #91FC
+釽 > pī; #91FD
+釾 > yé; #91FE
+釿 > yín; #91FF
+鈀 > bă; #9200
+鈁 > fāng; #9201
+鈂 > chén; #9202
+鈃 > xíng; #9203
+鈄 > tŏu; #9204
+鈅 > yuè; #9205
+鈆 > yán; #9206
+鈇 > fū; #9207
+鈈 > pī; #9208
+鈉 > nà; #9209
+鈊 > xīn; #920A
+鈋 > é; #920B
+鈌 > jué; #920C
+鈍 > dùn; #920D
+鈎 > gōu; #920E
+鈏 > yĭn; #920F
+鈐 > qián; #9210
+鈑 > băn; #9211
+鈒 > jí; #9212
+鈓 > rén; #9213
+鈔 > chāo; #9214
+鈕 > nĭu; #9215
+鈖 > fēn; #9216
+鈗 > yŭn; #9217
+鈘 > jĭ; #9218
+鈙 > qín; #9219
+鈚 > pí; #921A
+鈛 > gūo; #921B
+鈜 > hóng; #921C
+鈝 > yín; #921D
+鈞 > jūn; #921E
+鈟 > shī; #921F
+鈠 > yì; #9220
+鈡 > zhōng; #9221
+鈢 > niē; #9222
+鈣 > gài; #9223
+鈤 > rì; #9224
+鈥 > húo; #9225
+鈦 > tài; #9226
+鈧 > kàng; #9227
+鈬 > dúo; #922C
+鈭 > zī; #922D
+鈮 > nĭ; #922E
+鈯 > tú; #922F
+鈰 > shì; #9230
+鈱 > mín; #9231
+鈲 > gū; #9232
+鈳 > ē; #9233
+鈴 > líng; #9234
+鈵 > bìng; #9235
+鈶 > yí; #9236
+鈷 > gū; #9237
+鈸 > bá; #9238
+鈹 > pī; #9239
+鈺 > yù; #923A
+鈻 > sì; #923B
+鈼 > zúo; #923C
+鈽 > bù; #923D
+鈾 > yóu; #923E
+鈿 > diàn; #923F
+鉀 > jiă; #9240
+鉁 > zhēn; #9241
+鉂 > shĭ; #9242
+鉃 > shì; #9243
+鉄 > tiĕ; #9244
+鉅 > jù; #9245
+鉆 > zhān; #9246
+鉇 > shī; #9247
+鉈 > shé; #9248
+鉉 > xuàn; #9249
+鉊 > zhāo; #924A
+鉋 > bào; #924B
+鉌 > hé; #924C
+鉍 > bì; #924D
+鉎 > shēng; #924E
+鉏 > chú; #924F
+鉐 > shí; #9250
+鉑 > bó; #9251
+鉒 > zhù; #9252
+鉓 > chì; #9253
+鉔 > zā; #9254
+鉕 > pō; #9255
+鉖 > tóng; #9256
+鉗 > qián; #9257
+鉘 > fú; #9258
+鉙 > zhăi; #9259
+鉚 > lĭu; #925A
+鉛 > qiān; #925B
+鉜 > fú; #925C
+鉝 > lì; #925D
+鉞 > yuè; #925E
+鉟 > pī; #925F
+鉠 > yāng; #9260
+鉡 > bàn; #9261
+鉢 > bō; #9262
+鉣 > jié; #9263
+鉤 > gōu; #9264
+鉥 > shù; #9265
+鉦 > zhēng; #9266
+鉧 > mŭ; #9267
+鉨 > nĭ; #9268
+鉩 > niē; #9269
+鉪 > dì; #926A
+鉫 > jiā; #926B
+鉬 > mù; #926C
+鉭 > dàn; #926D
+鉮 > shēn; #926E
+鉯 > yĭ; #926F
+鉰 > sī; #9270
+鉱 > kuàng; #9271
+鉲 > kă; #9272
+鉳 > bĕi; #9273
+鉴 > jiàn; #9274
+鉵 > tóng; #9275
+鉶 > xíng; #9276
+鉷 > hóng; #9277
+鉸 > jiăo; #9278
+鉹 > chĭ; #9279
+鉺 > èr; #927A
+鉻 > gè; #927B
+鉼 > bĭng; #927C
+鉽 > shì; #927D
+鉾 > móu; #927E
+鉿 > jiá; #927F
+銀 > yín; #9280
+銁 > jūn; #9281
+銂 > zhōu; #9282
+銃 > chòng; #9283
+銄 > shàng; #9284
+銅 > tóng; #9285
+銆 > mò; #9286
+銇 > lèi; #9287
+銈 > jī; #9288
+銉 > yù; #9289
+銊 > xù; #928A
+銋 > rén; #928B
+銌 > zùn; #928C
+銍 > zhì; #928D
+銎 > qīong; #928E
+銏 > shàn; #928F
+銐 > chì; #9290
+銑 > xiăn; #9291
+銒 > xíng; #9292
+銓 > quán; #9293
+銔 > pī; #9294
+銕 > tiĕ; #9295
+銖 > zhū; #9296
+銗 > hóu; #9297
+銘 > míng; #9298
+銙 > kuă; #9299
+銚 > yáo; #929A
+銛 > xiān; #929B
+銜 > xián; #929C
+銝 > xīu; #929D
+銞 > jūn; #929E
+銟 > chā; #929F
+銠 > lăo; #92A0
+銡 > jí; #92A1
+銢 > pĭ; #92A2
+銣 > rŭ; #92A3
+銤 > mĭ; #92A4
+銥 > yĭ; #92A5
+銦 > yīn; #92A6
+銧 > guāng; #92A7
+銨 > ān; #92A8
+銩 > diōu; #92A9
+銪 > yŏu; #92AA
+銫 > sè; #92AB
+銬 > kào; #92AC
+銭 > qián; #92AD
+銮 > luán; #92AE
+銰 > āi; #92B0
+銱 > diào; #92B1
+銲 > hàn; #92B2
+銳 > rùi; #92B3
+銴 > shì; #92B4
+銵 > kēng; #92B5
+銶 > qíu; #92B6
+銷 > xiāo; #92B7
+銸 > zhé; #92B8
+銹 > xìu; #92B9
+銺 > zàng; #92BA
+銻 > tì; #92BB
+銼 > cùo; #92BC
+銽 > guā; #92BD
+銾 > gŏng; #92BE
+銿 > zhōng; #92BF
+鋀 > dòu; #92C0
+鋁 > lǚ; #92C1
+鋂 > méi; #92C2
+鋃 > láng; #92C3
+鋄 > wăn; #92C4
+鋅 > xīn; #92C5
+鋆 > yún; #92C6
+鋇 > bèi; #92C7
+鋈 > wù; #92C8
+鋉 > sù; #92C9
+鋊 > yù; #92CA
+鋋 > chán; #92CB
+鋌 > tĭng; #92CC
+鋍 > bó; #92CD
+鋎 > hàn; #92CE
+鋏 > jiá; #92CF
+鋐 > hóng; #92D0
+鋑 > cuān; #92D1
+鋒 > fēng; #92D2
+鋓 > chān; #92D3
+鋔 > wăn; #92D4
+鋕 > zhì; #92D5
+鋖 > sī; #92D6
+鋗 > xuān; #92D7
+鋘 > wú; #92D8
+鋙 > wú; #92D9
+鋚 > tiáo; #92DA
+鋛 > gŏng; #92DB
+鋜 > zhúo; #92DC
+鋝 > lǜe; #92DD
+鋞 > xíng; #92DE
+鋟 > qiān; #92DF
+鋠 > shèn; #92E0
+鋡 > hán; #92E1
+鋢 > lǜe; #92E2
+鋣 > xié; #92E3
+鋤 > chú; #92E4
+鋥 > zhèng; #92E5
+鋦 > jú; #92E6
+鋧 > xiàn; #92E7
+鋨 > tiĕ; #92E8
+鋩 > máng; #92E9
+鋪 > pū; #92EA
+鋫 > lí; #92EB
+鋬 > pàn; #92EC
+鋭 > rùi; #92ED
+鋮 > chéng; #92EE
+鋯 > gào; #92EF
+鋰 > lĭ; #92F0
+鋱 > tè; #92F1
+鋳 > zhù; #92F3
+鋵 > tū; #92F5
+鋶 > lĭu; #92F6
+鋷 > zùi; #92F7
+鋸 > jù; #92F8
+鋹 > chăng; #92F9
+鋺 > yuān; #92FA
+鋻 > jiàn; #92FB
+鋼 > gāng; #92FC
+鋽 > diào; #92FD
+鋾 > táo; #92FE
+鋿 > cháng; #92FF
+錀 > lún; #9300
+錁 > kuă; #9301
+錂 > líng; #9302
+錃 > bēi; #9303
+錄 > lù; #9304
+錅 > lí; #9305
+錆 > qiāng; #9306
+錇 > póu; #9307
+錈 > juàn; #9308
+錉 > mín; #9309
+錊 > zùi; #930A
+錋 > péng; #930B
+錌 > àn; #930C
+錍 > pí; #930D
+錎 > xiàn; #930E
+錏 > yà; #930F
+錐 > zhūi; #9310
+錑 > lèi; #9311
+錒 > ā; #9312
+錓 > kōng; #9313
+錔 > tà; #9314
+錕 > kūn; #9315
+錖 > dŭ; #9316
+錗 > wèi; #9317
+錘 > chúi; #9318
+錙 > zī; #9319
+錚 > zhēng; #931A
+錛 > bēn; #931B
+錜 > niē; #931C
+錝 > cóng; #931D
+錞 > qún; #931E
+錟 > tán; #931F
+錠 > dìng; #9320
+錡 > qí; #9321
+錢 > qián; #9322
+錣 > zhúo; #9323
+錤 > qí; #9324
+錥 > yù; #9325
+錦 > jĭn; #9326
+錧 > guăn; #9327
+錨 > máo; #9328
+錩 > chāng; #9329
+錪 > tiăn; #932A
+錫 > xí; #932B
+錬 > liàn; #932C
+錭 > táo; #932D
+錮 > gù; #932E
+錯 > cùo; #932F
+錰 > shù; #9330
+錱 > zhēn; #9331
+録 > lù; #9332
+錳 > mĕng; #9333
+錴 > lù; #9334
+錵 > huā; #9335
+錶 > biăo; #9336
+錷 > gá; #9337
+錸 > lái; #9338
+錹 > kĕn; #9339
+錼 > nài; #933C
+錽 > wăn; #933D
+錾 > zàn; #933E
+鍀 > dé; #9340
+鍁 > xiān; #9341
+鍃 > hūo; #9343
+鍄 > liàng; #9344
+鍆 > mén; #9346
+鍇 > kăi; #9347
+鍈 > yīng; #9348
+鍉 > dī; #9349
+鍊 > liàn; #934A
+鍋 > gūo; #934B
+鍌 > xiăn; #934C
+鍍 > dù; #934D
+鍎 > tú; #934E
+鍏 > wéi; #934F
+鍐 > cōng; #9350
+鍑 > fù; #9351
+鍒 > róu; #9352
+鍓 > jí; #9353
+鍔 > è; #9354
+鍕 > róu; #9355
+鍖 > chĕn; #9356
+鍗 > tí; #9357
+鍘 > zhá; #9358
+鍙 > hòng; #9359
+鍚 > yáng; #935A
+鍛 > duàn; #935B
+鍜 > xiā; #935C
+鍝 > yú; #935D
+鍞 > kēng; #935E
+鍟 > xīng; #935F
+鍠 > huáng; #9360
+鍡 > wĕi; #9361
+鍢 > fù; #9362
+鍣 > zhāo; #9363
+鍤 > chá; #9364
+鍥 > qiè; #9365
+鍦 > shé; #9366
+鍧 > hōng; #9367
+鍨 > kúi; #9368
+鍩 > tiăn; #9369
+鍪 > móu; #936A
+鍫 > qiāo; #936B
+鍬 > qiāo; #936C
+鍭 > hóu; #936D
+鍮 > tōu; #936E
+鍯 > cōng; #936F
+鍰 > huán; #9370
+鍱 > yè; #9371
+鍲 > mín; #9372
+鍳 > jiàn; #9373
+鍴 > duān; #9374
+鍵 > jiàn; #9375
+鍶 > sōng; #9376
+鍷 > kūi; #9377
+鍸 > hú; #9378
+鍹 > xuān; #9379
+鍺 > dŭo; #937A
+鍻 > jié; #937B
+鍼 > zhēn; #937C
+鍽 > biān; #937D
+鍾 > zhōng; #937E
+鍿 > zī; #937F
+鎀 > xīu; #9380
+鎁 > yé; #9381
+鎂 > mĕi; #9382
+鎃 > pài; #9383
+鎄 > āi; #9384
+鎅 > jiè; #9385
+鎇 > méi; #9387
+鎈 > chūo; #9388
+鎉 > tà; #9389
+鎊 > bàng; #938A
+鎋 > xiá; #938B
+鎌 > lián; #938C
+鎍 > sŭo; #938D
+鎎 > xì; #938E
+鎏 > líu; #938F
+鎐 > zú; #9390
+鎑 > yè; #9391
+鎒 > nòu; #9392
+鎓 > wēng; #9393
+鎔 > róng; #9394
+鎕 > táng; #9395
+鎖 > sŭo; #9396
+鎗 > qiāng; #9397
+鎘 > gé; #9398
+鎙 > shùo; #9399
+鎚 > chúi; #939A
+鎛 > bó; #939B
+鎜 > pán; #939C
+鎝 > sà; #939D
+鎞 > bì; #939E
+鎟 > săng; #939F
+鎠 > gāng; #93A0
+鎡 > zī; #93A1
+鎢 > wù; #93A2
+鎣 > yìng; #93A3
+鎤 > huăng; #93A4
+鎥 > tiáo; #93A5
+鎦 > líu; #93A6
+鎧 > kăi; #93A7
+鎨 > sŭn; #93A8
+鎩 > shā; #93A9
+鎪 > sōu; #93AA
+鎫 > wàn; #93AB
+鎬 > hào; #93AC
+鎭 > zhèn; #93AD
+鎮 > zhèn; #93AE
+鎯 > lŭo; #93AF
+鎰 > yì; #93B0
+鎱 > yuán; #93B1
+鎲 > tăng; #93B2
+鎳 > niè; #93B3
+鎴 > xí; #93B4
+鎵 > jiā; #93B5
+鎶 > gē; #93B6
+鎷 > mă; #93B7
+鎸 > juān; #93B8
+鎻 > sŭo; #93BB
+鎿 > ná; #93BF
+鏀 > lŭ; #93C0
+鏁 > sŭo; #93C1
+鏂 > ōu; #93C2
+鏃 > zú; #93C3
+鏄 > tuán; #93C4
+鏅 > xīu; #93C5
+鏆 > guàn; #93C6
+鏇 > xuàn; #93C7
+鏈 > liàn; #93C8
+鏉 > shòu; #93C9
+鏊 > áo; #93CA
+鏋 > măn; #93CB
+鏌 > mò; #93CC
+鏍 > lúo; #93CD
+鏎 > bì; #93CE
+鏏 > wèi; #93CF
+鏐 > líu; #93D0
+鏑 > dí; #93D1
+鏒 > qiāo; #93D2
+鏓 > cōng; #93D3
+鏔 > yí; #93D4
+鏕 > lù; #93D5
+鏖 > áo; #93D6
+鏗 > kēng; #93D7
+鏘 > qiāng; #93D8
+鏙 > cūi; #93D9
+鏚 > qì; #93DA
+鏛 > cháng; #93DB
+鏜 > tāng; #93DC
+鏝 > màn; #93DD
+鏞 > yōng; #93DE
+鏟 > chăn; #93DF
+鏠 > fēng; #93E0
+鏡 > jìng; #93E1
+鏢 > biāo; #93E2
+鏣 > shù; #93E3
+鏤 > lòu; #93E4
+鏥 > xìu; #93E5
+鏦 > cōng; #93E6
+鏧 > lóng; #93E7
+鏨 > zàn; #93E8
+鏩 > jiàn; #93E9
+鏪 > cáo; #93EA
+鏫 > lí; #93EB
+鏬 > xià; #93EC
+鏭 > xī; #93ED
+鏮 > kāng; #93EE
+鏰 > bèng; #93F0
+鏳 > zhēng; #93F3
+鏴 > lù; #93F4
+鏵 > huá; #93F5
+鏶 > jí; #93F6
+鏷 > pú; #93F7
+鏸 > hùi; #93F8
+鏹 > qiāng; #93F9
+鏺 > pō; #93FA
+鏻 > lín; #93FB
+鏼 > sŭo; #93FC
+鏽 > xìu; #93FD
+鏾 > săn; #93FE
+鏿 > chēng; #93FF
+鐀 > kùi; #9400
+鐁 > sī; #9401
+鐂 > lìu; #9402
+鐃 > náo; #9403
+鐄 > héng; #9404
+鐅 > piĕ; #9405
+鐆 > sùi; #9406
+鐇 > fán; #9407
+鐈 > qiáo; #9408
+鐉 > quān; #9409
+鐊 > yáng; #940A
+鐋 > tàng; #940B
+鐌 > xiàng; #940C
+鐍 > jué; #940D
+鐎 > jiāo; #940E
+鐏 > zūn; #940F
+鐐 > liáo; #9410
+鐑 > jié; #9411
+鐒 > láo; #9412
+鐓 > dùi; #9413
+鐔 > tán; #9414
+鐕 > zān; #9415
+鐖 > jī; #9416
+鐗 > jiăn; #9417
+鐘 > zhōng; #9418
+鐙 > dēng; #9419
+鐚 > yà; #941A
+鐛 > yìng; #941B
+鐜 > dùi; #941C
+鐝 > jué; #941D
+鐞 > nòu; #941E
+鐟 > tì; #941F
+鐠 > pŭ; #9420
+鐡 > tiĕ; #9421
+鐤 > dĭng; #9424
+鐥 > shàn; #9425
+鐦 > kāi; #9426
+鐧 > jiăn; #9427
+鐨 > fèi; #9428
+鐩 > sùi; #9429
+鐪 > lŭ; #942A
+鐫 > juān; #942B
+鐬 > hùi; #942C
+鐭 > yù; #942D
+鐮 > lián; #942E
+鐯 > zhúo; #942F
+鐰 > qiāo; #9430
+鐱 > qiān; #9431
+鐲 > zhúo; #9432
+鐳 > léi; #9433
+鐴 > bì; #9434
+鐵 > tiĕ; #9435
+鐶 > huán; #9436
+鐷 > yè; #9437
+鐸 > dúo; #9438
+鐹 > gŭo; #9439
+鐺 > dāng; #943A
+鐻 > jù; #943B
+鐼 > fén; #943C
+鐽 > dá; #943D
+鐾 > bèi; #943E
+鐿 > yì; #943F
+鑀 > ài; #9440
+鑁 > zōng; #9441
+鑂 > xùn; #9442
+鑃 > diào; #9443
+鑄 > zhù; #9444
+鑅 > héng; #9445
+鑆 > zhùi; #9446
+鑇 > jī; #9447
+鑈 > niē; #9448
+鑉 > tà; #9449
+鑊 > hùo; #944A
+鑋 > qìng; #944B
+鑌 > bīn; #944C
+鑍 > yīng; #944D
+鑎 > kùi; #944E
+鑏 > níng; #944F
+鑐 > xū; #9450
+鑑 > jiàn; #9451
+鑒 > jiàn; #9452
+鑔 > chă; #9454
+鑕 > zhì; #9455
+鑖 > miè; #9456
+鑗 > lí; #9457
+鑘 > léi; #9458
+鑙 > jī; #9459
+鑚 > zuàn; #945A
+鑛 > kuàng; #945B
+鑜 > shàng; #945C
+鑝 > péng; #945D
+鑞 > là; #945E
+鑟 > dú; #945F
+鑠 > shùo; #9460
+鑡 > chùo; #9461
+鑢 > lǜ; #9462
+鑣 > biāo; #9463
+鑤 > bào; #9464
+鑥 > lŭ; #9465
+鑨 > lóng; #9468
+鑩 > è; #9469
+鑪 > lú; #946A
+鑫 > xīn; #946B
+鑬 > jiàn; #946C
+鑭 > làn; #946D
+鑮 > bó; #946E
+鑯 > jiān; #946F
+鑰 > yào; #9470
+鑱 > chán; #9471
+鑲 > xiāng; #9472
+鑳 > jiàn; #9473
+鑴 > xī; #9474
+鑵 > guàn; #9475
+鑶 > cáng; #9476
+鑷 > niè; #9477
+鑸 > lĕi; #9478
+鑹 > cuàn; #9479
+鑺 > qú; #947A
+鑻 > pàn; #947B
+鑼 > lúo; #947C
+鑽 > zuàn; #947D
+鑾 > luán; #947E
+鑿 > záo; #947F
+钀 > niè; #9480
+钁 > jué; #9481
+钂 > tăng; #9482
+钃 > shŭ; #9483
+钄 > lán; #9484
+钅 > jīn; #9485
+钆 > qíu; #9486
+钇 > yĭ; #9487
+针 > zhēn; #9488
+钉 > dīng; #9489
+钊 > zhāo; #948A
+钋 > pò; #948B
+钌 > diăo; #948C
+钍 > tŭ; #948D
+钎 > qiān; #948E
+钏 > chuàn; #948F
+钐 > shàn; #9490
+钑 > jí; #9491
+钒 > fán; #9492
+钓 > diào; #9493
+钔 > mén; #9494
+钕 > nǚ; #9495
+钖 > xí; #9496
+钗 > chāi; #9497
+钘 > xíng; #9498
+钙 > gài; #9499
+钚 > bù; #949A
+钛 > tài; #949B
+钜 > jù; #949C
+钝 > dùn; #949D
+钞 > chāo; #949E
+钟 > zhōng; #949F
+钠 > nà; #94A0
+钡 > bèi; #94A1
+钢 > gāng; #94A2
+钣 > băn; #94A3
+钤 > qián; #94A4
+钥 > yào; #94A5
+钦 > qīn; #94A6
+钧 > jūn; #94A7
+钨 > wù; #94A8
+钩 > gōu; #94A9
+钪 > kàng; #94AA
+钫 > fāng; #94AB
+钬 > húo; #94AC
+钭 > tŏu; #94AD
+钮 > nĭu; #94AE
+钯 > bă; #94AF
+钰 > yù; #94B0
+钱 > qián; #94B1
+钲 > zhēng; #94B2
+钳 > qián; #94B3
+钴 > gū; #94B4
+钵 > bō; #94B5
+钶 > ē; #94B6
+钷 > pō; #94B7
+钸 > bù; #94B8
+钹 > bá; #94B9
+钺 > yuè; #94BA
+钻 > zuàn; #94BB
+钼 > mù; #94BC
+钽 > dàn; #94BD
+钾 > jiă; #94BE
+钿 > diàn; #94BF
+铀 > yóu; #94C0
+铁 > tiĕ; #94C1
+铂 > bó; #94C2
+铃 > líng; #94C3
+铄 > shùo; #94C4
+铅 > qiān; #94C5
+铆 > lĭu; #94C6
+铇 > bào; #94C7
+铈 > shì; #94C8
+铉 > xuàn; #94C9
+铊 > shé; #94CA
+铋 > bì; #94CB
+铌 > nĭ; #94CC
+铍 > pī; #94CD
+铎 > dúo; #94CE
+铏 > xíng; #94CF
+铐 > kào; #94D0
+铑 > lăo; #94D1
+铒 > èr; #94D2
+铓 > máng; #94D3
+铔 > yà; #94D4
+铕 > yŏu; #94D5
+铖 > chéng; #94D6
+铗 > jiá; #94D7
+铘 > yé; #94D8
+铙 > náo; #94D9
+铚 > zhì; #94DA
+铛 > dāng; #94DB
+铜 > tóng; #94DC
+铝 > lǚ; #94DD
+铞 > diào; #94DE
+铟 > yīn; #94DF
+铠 > kăi; #94E0
+铡 > zhá; #94E1
+铢 > zhū; #94E2
+铣 > xiăn; #94E3
+铤 > tĭng; #94E4
+铥 > dīu; #94E5
+铦 > xiān; #94E6
+铧 > huá; #94E7
+铨 > quán; #94E8
+铩 > shā; #94E9
+铪 > jiá; #94EA
+铫 > yáo; #94EB
+铬 > gè; #94EC
+铭 > míng; #94ED
+铮 > zhēng; #94EE
+铯 > sè; #94EF
+铰 > jiăo; #94F0
+铱 > yĭ; #94F1
+铲 > chăn; #94F2
+铳 > chòng; #94F3
+铴 > tàng; #94F4
+铵 > ān; #94F5
+银 > yín; #94F6
+铷 > rŭ; #94F7
+铸 > zhù; #94F8
+铹 > láo; #94F9
+铺 > pū; #94FA
+铻 > wú; #94FB
+铼 > lái; #94FC
+铽 > tè; #94FD
+链 > liàn; #94FE
+铿 > kēng; #94FF
+销 > xiāo; #9500
+锁 > sŭo; #9501
+锂 > lĭ; #9502
+锃 > zhèng; #9503
+锄 > chú; #9504
+锅 > gūo; #9505
+锆 > gào; #9506
+锇 > tiĕ; #9507
+锈 > xìu; #9508
+锉 > cùo; #9509
+锊 > lǜe; #950A
+锋 > fēng; #950B
+锌 > xīn; #950C
+锍 > lĭu; #950D
+锎 > kāi; #950E
+锏 > jiăn; #950F
+锐 > rùi; #9510
+锑 > tì; #9511
+锒 > láng; #9512
+锓 > qiān; #9513
+锔 > jú; #9514
+锕 > ā; #9515
+锖 > qiāng; #9516
+锗 > dŭo; #9517
+锘 > tiăn; #9518
+错 > cùo; #9519
+锚 > máo; #951A
+锛 > bēn; #951B
+锜 > qí; #951C
+锝 > dé; #951D
+锞 > kuă; #951E
+锟 > kūn; #951F
+锠 > chāng; #9520
+锡 > xí; #9521
+锢 > gù; #9522
+锣 > lúo; #9523
+锤 > chúi; #9524
+锥 > zhūi; #9525
+锦 > jĭn; #9526
+锧 > zhì; #9527
+锨 > xiān; #9528
+锩 > juàn; #9529
+锪 > hūo; #952A
+锫 > póu; #952B
+锬 > tán; #952C
+锭 > dìng; #952D
+键 > jiàn; #952E
+锯 > jù; #952F
+锰 > mĕng; #9530
+锱 > zī; #9531
+锲 > qiè; #9532
+锳 > yīng; #9533
+锴 > kăi; #9534
+锵 > qiāng; #9535
+锶 > sōng; #9536
+锷 > è; #9537
+锸 > chá; #9538
+锹 > qiāo; #9539
+锺 > zhōng; #953A
+锻 > duàn; #953B
+锼 > sōu; #953C
+锽 > huáng; #953D
+锾 > huán; #953E
+锿 > āi; #953F
+镀 > dù; #9540
+镁 > mĕi; #9541
+镂 > lòu; #9542
+镃 > zī; #9543
+镄 > fèi; #9544
+镅 > méi; #9545
+镆 > mò; #9546
+镇 > zhèn; #9547
+镈 > bó; #9548
+镉 > gé; #9549
+镊 > niè; #954A
+镋 > tăng; #954B
+镌 > juān; #954C
+镍 > niè; #954D
+镎 > ná; #954E
+镏 > líu; #954F
+镐 > hào; #9550
+镑 > bàng; #9551
+镒 > yì; #9552
+镓 > jiā; #9553
+镔 > bīn; #9554
+镕 > róng; #9555
+镖 > biāo; #9556
+镗 > tāng; #9557
+镘 > màn; #9558
+镙 > lúo; #9559
+镚 > bèng; #955A
+镛 > yōng; #955B
+镜 > jìng; #955C
+镝 > dí; #955D
+镞 > zú; #955E
+镟 > xuàn; #955F
+镠 > líu; #9560
+镡 > tán; #9561
+镢 > jué; #9562
+镣 > liáo; #9563
+镤 > pú; #9564
+镥 > lŭ; #9565
+镦 > dùi; #9566
+镧 > làn; #9567
+镨 > pŭ; #9568
+镩 > cuàn; #9569
+镪 > qiāng; #956A
+镫 > dēng; #956B
+镬 > hùo; #956C
+镭 > léi; #956D
+镮 > huán; #956E
+镯 > zhúo; #956F
+镰 > lián; #9570
+镱 > yì; #9571
+镲 > chă; #9572
+镳 > biāo; #9573
+镴 > là; #9574
+镵 > chán; #9575
+镶 > xiāng; #9576
+長 > cháng; #9577
+镸 > cháng; #9578
+镹 > jĭu; #9579
+镺 > ăo; #957A
+镻 > dié; #957B
+镼 > qū; #957C
+镽 > liăo; #957D
+镾 > mí; #957E
+长 > cháng; #957F
+門 > mén; #9580
+閁 > mà; #9581
+閂 > shuān; #9582
+閃 > shăn; #9583
+閄 > hùo; #9584
+閅 > mén; #9585
+閆 > yàn; #9586
+閇 > bì; #9587
+閈 > hàn; #9588
+閉 > bì; #9589
+開 > kāi; #958B
+閌 > kàng; #958C
+閍 > bēng; #958D
+閎 > hóng; #958E
+閏 > rùn; #958F
+閐 > sàn; #9590
+閑 > xián; #9591
+閒 > xián; #9592
+間 > jiān; #9593
+閔 > mĭn; #9594
+閕 > xiā; #9595
+閗 > dòu; #9597
+閘 > zhá; #9598
+閙 > nào; #9599
+閚 > jian; #959A
+閛 > pēng; #959B
+閜 > xiă; #959C
+閝 > líng; #959D
+閞 > biàn; #959E
+閟 > bì; #959F
+閠 > rùn; #95A0
+閡 > hé; #95A1
+関 > guān; #95A2
+閣 > gé; #95A3
+閤 > gé; #95A4
+閥 > fá; #95A5
+閦 > chù; #95A6
+閧 > hòng; #95A7
+閨 > gūi; #95A8
+閩 > mĭn; #95A9
+閫 > kŭn; #95AB
+閬 > lăng; #95AC
+閭 > lǘ; #95AD
+閮 > tíng; #95AE
+閯 > shà; #95AF
+閰 > jú; #95B0
+閱 > yuè; #95B1
+閲 > yuè; #95B2
+閳 > chăn; #95B3
+閴 > qù; #95B4
+閵 > lìn; #95B5
+閶 > chāng; #95B6
+閷 > shài; #95B7
+閸 > kŭn; #95B8
+閹 > yān; #95B9
+閺 > mín; #95BA
+閻 > yán; #95BB
+閼 > è; #95BC
+閽 > hūn; #95BD
+閾 > yù; #95BE
+閿 > wén; #95BF
+闀 > xiàng; #95C0
+闁 > bao; #95C1
+闂 > xiàng; #95C2
+闃 > qù; #95C3
+闄 > yăo; #95C4
+闅 > wén; #95C5
+闆 > băn; #95C6
+闇 > àn; #95C7
+闈 > wéi; #95C8
+闉 > yīn; #95C9
+闊 > kùo; #95CA
+闋 > què; #95CB
+闌 > lán; #95CC
+闍 > dū; #95CD
+闐 > tián; #95D0
+闑 > niè; #95D1
+闒 > tà; #95D2
+闓 > kăi; #95D3
+闔 > hé; #95D4
+闕 > què; #95D5
+闖 > chuăng; #95D6
+闗 > guān; #95D7
+闘 > dòu; #95D8
+闙 > qĭ; #95D9
+闚 > kūi; #95DA
+闛 > táng; #95DB
+關 > guān; #95DC
+闝 > piáo; #95DD
+闞 > kàn; #95DE
+闟 > xì; #95DF
+闠 > hùi; #95E0
+闡 > chăn; #95E1
+闢 > pì; #95E2
+闣 > dàng; #95E3
+闤 > huán; #95E4
+闥 > tà; #95E5
+闦 > wén; #95E6
+门 > mén; #95E8
+闩 > shuān; #95E9
+闪 > shăn; #95EA
+闫 > yàn; #95EB
+闬 > hàn; #95EC
+闭 > bì; #95ED
+问 > wèn; #95EE
+闯 > chuăng; #95EF
+闰 > rùn; #95F0
+闱 > wéi; #95F1
+闲 > xián; #95F2
+闳 > hóng; #95F3
+间 > jiān; #95F4
+闵 > mĭn; #95F5
+闶 > kàng; #95F6
+闷 > mèn; #95F7
+闸 > zhá; #95F8
+闹 > nào; #95F9
+闺 > gūi; #95FA
+闻 > wén; #95FB
+闼 > tà; #95FC
+闽 > mĭn; #95FD
+闾 > lǘ; #95FE
+闿 > kăi; #95FF
+阀 > fá; #9600
+阁 > gé; #9601
+阂 > hé; #9602
+阃 > kŭn; #9603
+阄 > jīu; #9604
+阅 > yuè; #9605
+阆 > lăng; #9606
+阇 > dū; #9607
+阈 > yù; #9608
+阉 > yān; #9609
+阊 > chāng; #960A
+阋 > xì; #960B
+阌 > wén; #960C
+阍 > hūn; #960D
+阎 > yán; #960E
+阏 > è; #960F
+阐 > chăn; #9610
+阑 > lán; #9611
+阒 > qù; #9612
+阓 > hùi; #9613
+阔 > kùo; #9614
+阕 > què; #9615
+阖 > gé; #9616
+阗 > tián; #9617
+阘 > tà; #9618
+阙 > què; #9619
+阚 > kàn; #961A
+阛 > huán; #961B
+阜 > fù; #961C
+阝 > fù; #961D
+阞 > lè; #961E
+队 > dùi; #961F
+阠 > xìn; #9620
+阡 > qiān; #9621
+阢 > wù; #9622
+阣 > yì; #9623
+阤 > túo; #9624
+阥 > yīn; #9625
+阦 > yáng; #9626
+阧 > dŏu; #9627
+阨 > è; #9628
+阩 > shēng; #9629
+阪 > băn; #962A
+阫 > péi; #962B
+阬 > kēng; #962C
+阭 > yŭn; #962D
+阮 > ruăn; #962E
+阯 > zhĭ; #962F
+阰 > pí; #9630
+阱 > jĭng; #9631
+防 > fáng; #9632
+阳 > yáng; #9633
+阴 > yīn; #9634
+阵 > zhèn; #9635
+阶 > jiē; #9636
+阷 > chēng; #9637
+阸 > è; #9638
+阹 > qū; #9639
+阺 > dĭ; #963A
+阻 > zŭ; #963B
+阼 > zùo; #963C
+阽 > diàn; #963D
+阾 > lĭng; #963E
+阿 > ā; #963F
+陀 > túo; #9640
+陁 > túo; #9641
+陂 > pō; #9642
+陃 > bĭng; #9643
+附 > fù; #9644
+际 > jì; #9645
+陆 > lù; #9646
+陇 > lŏng; #9647
+陈 > chén; #9648
+陉 > xíng; #9649
+陊 > dùo; #964A
+陋 > lòu; #964B
+陌 > mò; #964C
+降 > jiàng; #964D
+陎 > shū; #964E
+陏 > dùo; #964F
+限 > xiàn; #9650
+陑 > ér; #9651
+陒 > gŭi; #9652
+陓 > yū; #9653
+陔 > gāi; #9654
+陕 > shăn; #9655
+陖 > xùn; #9656
+陗 > qiào; #9657
+陘 > xíng; #9658
+陙 > chún; #9659
+陚 > fù; #965A
+陛 > bì; #965B
+陜 > xiá; #965C
+陝 > shăn; #965D
+陞 > shēng; #965E
+陟 > zhì; #965F
+陠 > pū; #9660
+陡 > dŏu; #9661
+院 > yuàn; #9662
+陣 > zhèn; #9663
+除 > chú; #9664
+陥 > xiàn; #9665
+陧 > niè; #9667
+陨 > yŭn; #9668
+险 > xiăn; #9669
+陪 > péi; #966A
+陫 > péi; #966B
+陬 > zōu; #966C
+陭 > yī; #966D
+陮 > dŭi; #966E
+陯 > lún; #966F
+陰 > yīn; #9670
+陱 > jū; #9671
+陲 > chúi; #9672
+陳 > chén; #9673
+陴 > pí; #9674
+陵 > líng; #9675
+陶 > táo; #9676
+陷 > xiàn; #9677
+陸 > lù; #9678
+陹 > sheng; #9679
+険 > xiăn; #967A
+陻 > yīn; #967B
+陼 > zhŭ; #967C
+陽 > yáng; #967D
+陾 > réng; #967E
+陿 > shăn; #967F
+隀 > chóng; #9680
+隁 > yàn; #9681
+隂 > yīn; #9682
+隃 > yú; #9683
+隄 > tí; #9684
+隅 > yú; #9685
+隆 > lóng; #9686
+隇 > wēi; #9687
+隈 > wēi; #9688
+隉 > niè; #9689
+隊 > dùi; #968A
+隋 > súi; #968B
+隌 > ăn; #968C
+隍 > huáng; #968D
+階 > jiē; #968E
+随 > súi; #968F
+隐 > yĭn; #9690
+隑 > gāi; #9691
+隒 > yăn; #9692
+隓 > hūi; #9693
+隔 > gé; #9694
+隕 > yŭn; #9695
+隖 > wù; #9696
+隗 > wĕi; #9697
+隘 > ài; #9698
+隙 > xì; #9699
+隚 > táng; #969A
+際 > jì; #969B
+障 > zhàng; #969C
+隝 > dăo; #969D
+隞 > áo; #969E
+隟 > xì; #969F
+隠 > yĭn; #96A0
+隢 > rào; #96A2
+隣 > lín; #96A3
+隤 > túi; #96A4
+隥 > dèng; #96A5
+隦 > pĭ; #96A6
+隧 > sùi; #96A7
+隨 > súi; #96A8
+隩 > yù; #96A9
+險 > xiăn; #96AA
+隫 > fēn; #96AB
+隬 > nĭ; #96AC
+隭 > ér; #96AD
+隮 > jī; #96AE
+隯 > dăo; #96AF
+隰 > xí; #96B0
+隱 > yĭn; #96B1
+隲 > é; #96B2
+隳 > hūi; #96B3
+隴 > lŏng; #96B4
+隵 > xī; #96B5
+隶 > lì; #96B6
+隷 > lì; #96B7
+隸 > lì; #96B8
+隹 > zhūi; #96B9
+隺 > hè; #96BA
+隻 > zhī; #96BB
+隼 > zhŭn; #96BC
+隽 > jùn; #96BD
+难 > nán; #96BE
+隿 > yì; #96BF
+雀 > què; #96C0
+雁 > yàn; #96C1
+雂 > qián; #96C2
+雃 > yă; #96C3
+雄 > xíong; #96C4
+雅 > yă; #96C5
+集 > jí; #96C6
+雇 > gù; #96C7
+雈 > huán; #96C8
+雉 > zhì; #96C9
+雊 > gòu; #96CA
+雋 > jùn; #96CB
+雌 > cí; #96CC
+雍 > yōng; #96CD
+雎 > jū; #96CE
+雏 > chú; #96CF
+雐 > hū; #96D0
+雑 > zá; #96D1
+雒 > lùo; #96D2
+雓 > yú; #96D3
+雔 > chóu; #96D4
+雕 > diāo; #96D5
+雖 > sūi; #96D6
+雗 > hàn; #96D7
+雘 > hùo; #96D8
+雙 > shuāng; #96D9
+雚 > guàn; #96DA
+雛 > chú; #96DB
+雜 > zá; #96DC
+雝 > yōng; #96DD
+雞 > jī; #96DE
+雟 > xī; #96DF
+雠 > chóu; #96E0
+雡 > lìu; #96E1
+離 > lí; #96E2
+難 > nán; #96E3
+雤 > xué; #96E4
+雥 > zá; #96E5
+雦 > jí; #96E6
+雧 > jí; #96E7
+雨 > yŭ; #96E8
+雩 > yú; #96E9
+雪 > xuĕ; #96EA
+雫 > nă; #96EB
+雬 > fŏu; #96EC
+雭 > sè; #96ED
+雮 > mù; #96EE
+雯 > wén; #96EF
+雰 > fēn; #96F0
+雱 > páng; #96F1
+雲 > yún; #96F2
+雳 > lì; #96F3
+雴 > lì; #96F4
+雵 > ăng; #96F5
+零 > líng; #96F6
+雷 > léi; #96F7
+雸 > án; #96F8
+雹 > báo; #96F9
+雺 > méng; #96FA
+電 > diàn; #96FB
+雼 > dàng; #96FC
+雽 > xíng; #96FD
+雾 > wù; #96FE
+雿 > zhào; #96FF
+需 > xū; #9700
+霁 > jì; #9701
+霂 > mù; #9702
+霃 > chén; #9703
+霄 > xiāo; #9704
+霅 > zhá; #9705
+霆 > tíng; #9706
+震 > zhèn; #9707
+霈 > pèi; #9708
+霉 > méi; #9709
+霊 > líng; #970A
+霋 > qī; #970B
+霌 > chōu; #970C
+霍 > hùo; #970D
+霎 > shà; #970E
+霏 > fēi; #970F
+霐 > wēng; #9710
+霑 > zhān; #9711
+霒 > yīn; #9712
+霓 > ní; #9713
+霔 > chòu; #9714
+霕 > tún; #9715
+霖 > lín; #9716
+霘 > dòng; #9718
+霙 > yīng; #9719
+霚 > wù; #971A
+霛 > líng; #971B
+霜 > shuāng; #971C
+霝 > líng; #971D
+霞 > xiá; #971E
+霟 > hóng; #971F
+霠 > yīn; #9720
+霡 > mò; #9721
+霢 > mài; #9722
+霣 > yŭn; #9723
+霤 > lìu; #9724
+霥 > mèng; #9725
+霦 > bīn; #9726
+霧 > wù; #9727
+霨 > wèi; #9728
+霩 > hùo; #9729
+霪 > yín; #972A
+霫 > xí; #972B
+霬 > yì; #972C
+霭 > ăi; #972D
+霮 > dàn; #972E
+霯 > dèng; #972F
+霰 > xiàn; #9730
+霱 > yù; #9731
+露 > lù; #9732
+霳 > lóng; #9733
+霴 > dài; #9734
+霵 > jí; #9735
+霶 > páng; #9736
+霷 > yáng; #9737
+霸 > bà; #9738
+霹 > pī; #9739
+霺 > wéi; #973A
+霼 > xĭ; #973C
+霽 > jì; #973D
+霾 > mái; #973E
+霿 > mèng; #973F
+靀 > méng; #9740
+靁 > léi; #9741
+靂 > lì; #9742
+靃 > hùo; #9743
+靄 > ăi; #9744
+靅 > fèi; #9745
+靆 > dài; #9746
+靇 > lóng; #9747
+靈 > líng; #9748
+靉 > ài; #9749
+靊 > fēng; #974A
+靋 > lì; #974B
+靌 > băo; #974C
+靎 > hè; #974E
+靏 > hè; #974F
+靐 > bìng; #9750
+靑 > qīng; #9751
+青 > qīng; #9752
+靓 > jìng; #9753
+靔 > tiān; #9754
+靕 > zhēn; #9755
+靖 > jìng; #9756
+靗 > chèng; #9757
+靘 > qìng; #9758
+静 > jìng; #9759
+靚 > jìng; #975A
+靛 > diàn; #975B
+靜 > jìng; #975C
+靝 > tiān; #975D
+非 > fēi; #975E
+靟 > fēi; #975F
+靠 > kào; #9760
+靡 > mĭ; #9761
+面 > miàn; #9762
+靣 > miàn; #9763
+靤 > pào; #9764
+靥 > yè; #9765
+靦 > tiăn; #9766
+靧 > hùi; #9767
+靨 > yè; #9768
+革 > gé; #9769
+靪 > dīng; #976A
+靫 > chā; #976B
+靬 > jiān; #976C
+靭 > rèn; #976D
+靮 > dí; #976E
+靯 > dù; #976F
+靰 > wù; #9770
+靱 > rèn; #9771
+靲 > qín; #9772
+靳 > jìn; #9773
+靴 > xuē; #9774
+靵 > nĭu; #9775
+靶 > bă; #9776
+靷 > yĭn; #9777
+靸 > să; #9778
+靹 > nà; #9779
+靺 > mò; #977A
+靻 > zŭ; #977B
+靼 > dá; #977C
+靽 > bàn; #977D
+靾 > yì; #977E
+靿 > yào; #977F
+鞀 > táo; #9780
+鞁 > túo; #9781
+鞂 > jiá; #9782
+鞃 > hóng; #9783
+鞄 > páo; #9784
+鞅 > yăng; #9785
+鞇 > yīn; #9787
+鞈 > jiá; #9788
+鞉 > táo; #9789
+鞊 > jí; #978A
+鞋 > xié; #978B
+鞌 > ān; #978C
+鞍 > ān; #978D
+鞎 > hén; #978E
+鞏 > gŏng; #978F
+鞑 > dá; #9791
+鞒 > qiāo; #9792
+鞓 > tīng; #9793
+鞔 > wăn; #9794
+鞕 > yìng; #9795
+鞖 > sūi; #9796
+鞗 > tiáo; #9797
+鞘 > qiào; #9798
+鞙 > xuàn; #9799
+鞚 > kòng; #979A
+鞛 > bĕng; #979B
+鞜 > tà; #979C
+鞝 > zhăng; #979D
+鞞 > bĭng; #979E
+鞟 > kùo; #979F
+鞠 > jú; #97A0
+鞡 > la; #97A1
+鞢 > xiè; #97A2
+鞣 > róu; #97A3
+鞤 > bāng; #97A4
+鞥 > yì; #97A5
+鞦 > qīu; #97A6
+鞧 > qīu; #97A7
+鞨 > hé; #97A8
+鞩 > xiào; #97A9
+鞪 > mù; #97AA
+鞫 > jú; #97AB
+鞬 > jiān; #97AC
+鞭 > biān; #97AD
+鞮 > dī; #97AE
+鞯 > jiān; #97AF
+鞱 > tāo; #97B1
+鞲 > gōu; #97B2
+鞳 > tà; #97B3
+鞴 > bèi; #97B4
+鞵 > xié; #97B5
+鞶 > pán; #97B6
+鞷 > gé; #97B7
+鞸 > bì; #97B8
+鞹 > kùo; #97B9
+鞺 > tang; #97BA
+鞻 > lóu; #97BB
+鞼 > gùi; #97BC
+鞽 > qiáo; #97BD
+鞾 > xuē; #97BE
+鞿 > jī; #97BF
+韀 > jiān; #97C0
+韁 > jiāng; #97C1
+韂 > chàn; #97C2
+韃 > dá; #97C3
+韄 > hùo; #97C4
+韅 > xiăn; #97C5
+韆 > qiān; #97C6
+韇 > dú; #97C7
+韈 > wà; #97C8
+韉 > jiān; #97C9
+韊 > lán; #97CA
+韋 > wéi; #97CB
+韌 > rèn; #97CC
+韍 > fú; #97CD
+韎 > mèi; #97CE
+韏 > juàn; #97CF
+韐 > gé; #97D0
+韑 > wĕi; #97D1
+韒 > qiào; #97D2
+韓 > hán; #97D3
+韔 > chàng; #97D4
+韖 > róu; #97D6
+韗 > xùn; #97D7
+韘 > shè; #97D8
+韙 > wĕi; #97D9
+韚 > gé; #97DA
+韛 > bèi; #97DB
+韜 > tāo; #97DC
+韝 > gōu; #97DD
+韞 > yùn; #97DE
+韠 > bì; #97E0
+韡 > wĕi; #97E1
+韢 > hùi; #97E2
+韣 > dú; #97E3
+韤 > wà; #97E4
+韥 > dú; #97E5
+韦 > wéi; #97E6
+韧 > rèn; #97E7
+韨 > fú; #97E8
+韩 > hán; #97E9
+韪 > wĕi; #97EA
+韫 > yùn; #97EB
+韬 > tāo; #97EC
+韭 > jĭu; #97ED
+韮 > jĭu; #97EE
+韯 > xiān; #97EF
+韰 > xiè; #97F0
+韱 > xiān; #97F1
+韲 > jī; #97F2
+音 > yīn; #97F3
+韴 > zá; #97F4
+韵 > yùn; #97F5
+韶 > sháo; #97F6
+韷 > lè; #97F7
+韸 > péng; #97F8
+韹 > héng; #97F9
+韺 > yīng; #97FA
+韻 > yùn; #97FB
+韼 > péng; #97FC
+韽 > yīn; #97FD
+韾 > yīn; #97FE
+響 > xiăng; #97FF
+頀 > hù; #9800
+頁 > yè; #9801
+頂 > dĭng; #9802
+頃 > qĭng; #9803
+頄 > pàn; #9804
+項 > xiàng; #9805
+順 > shùn; #9806
+頇 > hān; #9807
+須 > xū; #9808
+頉 > yí; #9809
+頊 > xù; #980A
+頋 > gù; #980B
+頌 > sòng; #980C
+頍 > kŭi; #980D
+頎 > qí; #980E
+頏 > háng; #980F
+預 > yù; #9810
+頑 > wán; #9811
+頒 > bān; #9812
+頓 > dùn; #9813
+頔 > dí; #9814
+頕 > dān; #9815
+頖 > pàn; #9816
+頗 > pŏ; #9817
+領 > lĭng; #9818
+頙 > cè; #9819
+頚 > jĭng; #981A
+頛 > lĕi; #981B
+頜 > hé; #981C
+頝 > qiāo; #981D
+頞 > è; #981E
+頟 > é; #981F
+頠 > wĕi; #9820
+頡 > jié; #9821
+頢 > guā; #9822
+頣 > shĕn; #9823
+頤 > yí; #9824
+頥 > shĕn; #9825
+頦 > hái; #9826
+頧 > dūi; #9827
+頨 > piān; #9828
+頩 > pīng; #9829
+頪 > lèi; #982A
+頫 > fŭ; #982B
+頬 > jiá; #982C
+頭 > tóu; #982D
+頮 > hùi; #982E
+頯 > kúi; #982F
+頰 > jiá; #9830
+頱 > lè; #9831
+頲 > tian; #9832
+頳 > chēng; #9833
+頴 > yĭng; #9834
+頵 > jūn; #9835
+頶 > hú; #9836
+頷 > hàn; #9837
+頸 > jĭng; #9838
+頹 > túi; #9839
+頺 > túi; #983A
+頻 > pín; #983B
+頼 > lài; #983C
+頽 > túi; #983D
+頾 > zī; #983E
+頿 > zī; #983F
+顀 > chúi; #9840
+顁 > dìng; #9841
+顂 > lài; #9842
+顃 > yán; #9843
+顄 > hàn; #9844
+顅 > jiān; #9845
+顆 > kē; #9846
+顇 > cùi; #9847
+顈 > jĭong; #9848
+顉 > qīn; #9849
+顊 > yí; #984A
+顋 > sāi; #984B
+題 > tí; #984C
+額 > é; #984D
+顎 > è; #984E
+顏 > yán; #984F
+顐 > hún; #9850
+顑 > kăn; #9851
+顒 > yóng; #9852
+顓 > zhuān; #9853
+顔 > yán; #9854
+顕 > xiăn; #9855
+顖 > xìn; #9856
+顗 > yĭ; #9857
+願 > yuàn; #9858
+顙 > săng; #9859
+顚 > diān; #985A
+顛 > diān; #985B
+顜 > jiăng; #985C
+顝 > kū; #985D
+類 > lèi; #985E
+顟 > liáo; #985F
+顠 > piào; #9860
+顡 > yì; #9861
+顢 > mán; #9862
+顣 > qī; #9863
+顤 > rào; #9864
+顥 > hào; #9865
+顦 > qiáo; #9866
+顧 > gù; #9867
+顨 > xùn; #9868
+顩 > qiān; #9869
+顪 > hūi; #986A
+顫 > zhàn; #986B
+顬 > rú; #986C
+顭 > hōng; #986D
+顮 > bīn; #986E
+顯 > xiăn; #986F
+顰 > pín; #9870
+顱 > lú; #9871
+顲 > lăn; #9872
+顳 > niè; #9873
+顴 > quán; #9874
+页 > yè; #9875
+顶 > dĭng; #9876
+顷 > qĭng; #9877
+顸 > hān; #9878
+项 > xiàng; #9879
+顺 > shùn; #987A
+须 > xū; #987B
+顼 > xù; #987C
+顽 > wán; #987D
+顾 > gù; #987E
+顿 > dùn; #987F
+颀 > qí; #9880
+颁 > bān; #9881
+颂 > sòng; #9882
+颃 > háng; #9883
+预 > yù; #9884
+颅 > lú; #9885
+领 > lĭng; #9886
+颇 > pŏ; #9887
+颈 > jĭng; #9888
+颉 > jié; #9889
+颊 > jiá; #988A
+颋 > tian; #988B
+颌 > hàn; #988C
+颍 > yĭng; #988D
+颎 > jĭong; #988E
+颏 > hái; #988F
+颐 > yí; #9890
+频 > pín; #9891
+颒 > hùi; #9892
+颓 > túi; #9893
+颔 > hàn; #9894
+颕 > yĭng; #9895
+颖 > yĭng; #9896
+颗 > kē; #9897
+题 > tí; #9898
+颙 > yóng; #9899
+颚 > è; #989A
+颛 > zhuān; #989B
+颜 > yán; #989C
+额 > é; #989D
+颞 > niè; #989E
+颟 > mán; #989F
+颠 > diān; #98A0
+颡 > săng; #98A1
+颢 > hào; #98A2
+颣 > lèi; #98A3
+颤 > zhàn; #98A4
+颥 > rú; #98A5
+颦 > pín; #98A6
+颧 > quán; #98A7
+風 > fēng; #98A8
+颩 > biāo; #98A9
+颫 > fú; #98AB
+颬 > xiā; #98AC
+颭 > zhăn; #98AD
+颮 > biāo; #98AE
+颯 > sà; #98AF
+颰 > bá; #98B0
+颱 > tái; #98B1
+颲 > liè; #98B2
+颳 > guā; #98B3
+颴 > xuàn; #98B4
+颵 > shào; #98B5
+颶 > jù; #98B6
+颷 > bī; #98B7
+颸 > sī; #98B8
+颹 > wĕi; #98B9
+颺 > yáng; #98BA
+颻 > yáo; #98BB
+颼 > sōu; #98BC
+颽 > kăi; #98BD
+颾 > sāo; #98BE
+颿 > fán; #98BF
+飀 > líu; #98C0
+飁 > xí; #98C1
+飂 > liáo; #98C2
+飃 > piāo; #98C3
+飄 > piāo; #98C4
+飅 > líu; #98C5
+飆 > biāo; #98C6
+飇 > biāo; #98C7
+飈 > biăo; #98C8
+飉 > liáo; #98C9
+飋 > sè; #98CB
+飌 > fēng; #98CC
+飍 > biāo; #98CD
+风 > fēng; #98CE
+飏 > yáng; #98CF
+飐 > zhăn; #98D0
+飑 > biāo; #98D1
+飒 > sà; #98D2
+飓 > jù; #98D3
+飔 > sī; #98D4
+飕 > sōu; #98D5
+飖 > yáo; #98D6
+飗 > líu; #98D7
+飘 > piāo; #98D8
+飙 > biāo; #98D9
+飚 > biāo; #98DA
+飛 > fēi; #98DB
+飜 > fān; #98DC
+飝 > fēi; #98DD
+飞 > fēi; #98DE
+食 > shí; #98DF
+飠 > shí; #98E0
+飡 > cān; #98E1
+飢 > jī; #98E2
+飣 > dìng; #98E3
+飤 > sì; #98E4
+飥 > tūo; #98E5
+飦 > zhān; #98E6
+飧 > sūn; #98E7
+飨 > xiăng; #98E8
+飩 > tún; #98E9
+飪 > rèn; #98EA
+飫 > yù; #98EB
+飬 > juàn; #98EC
+飭 > chì; #98ED
+飮 > yĭn; #98EE
+飯 > fàn; #98EF
+飰 > fàn; #98F0
+飱 > sūn; #98F1
+飲 > yĭn; #98F2
+飳 > zhù; #98F3
+飴 > yí; #98F4
+飵 > zhăi; #98F5
+飶 > bì; #98F6
+飷 > jiĕ; #98F7
+飸 > tāo; #98F8
+飹 > lĭu; #98F9
+飺 > cí; #98FA
+飻 > tiè; #98FB
+飼 > sì; #98FC
+飽 > băo; #98FD
+飾 > shì; #98FE
+飿 > dùo; #98FF
+餀 > hài; #9900
+餁 > rèn; #9901
+餂 > tiăn; #9902
+餃 > jiăo; #9903
+餄 > jiá; #9904
+餅 > bĭng; #9905
+餆 > yáo; #9906
+餇 > tóng; #9907
+餈 > cí; #9908
+餉 > xiăng; #9909
+養 > yăng; #990A
+餋 > yăng; #990B
+餌 > ĕr; #990C
+餍 > yàn; #990D
+餎 > le; #990E
+餏 > yī; #990F
+餐 > cān; #9910
+餑 > bó; #9911
+餒 > nĕi; #9912
+餓 > è; #9913
+餔 > bū; #9914
+餕 > jùn; #9915
+餖 > dòu; #9916
+餗 > sù; #9917
+餘 > yú; #9918
+餙 > shì; #9919
+餚 > yáo; #991A
+餛 > hún; #991B
+餜 > gŭo; #991C
+餝 > shì; #991D
+餞 > jiàn; #991E
+餟 > zhùi; #991F
+餠 > bĭng; #9920
+餡 > xiàn; #9921
+餢 > bù; #9922
+餣 > yè; #9923
+餤 > tán; #9924
+餥 > fĕi; #9925
+餦 > zhāng; #9926
+餧 > wèi; #9927
+館 > guăn; #9928
+餩 > è; #9929
+餪 > nuăn; #992A
+餫 > hún; #992B
+餬 > hú; #992C
+餭 > huáng; #992D
+餮 > tiè; #992E
+餯 > hùi; #992F
+餰 > jiān; #9930
+餱 > hóu; #9931
+餲 > hé; #9932
+餳 > xíng; #9933
+餴 > fēn; #9934
+餵 > wèi; #9935
+餶 > gŭ; #9936
+餷 > chā; #9937
+餸 > sòng; #9938
+餹 > táng; #9939
+餺 > bó; #993A
+餻 > gāo; #993B
+餼 > xì; #993C
+餽 > kùi; #993D
+餾 > lìu; #993E
+餿 > sōu; #993F
+饀 > táo; #9940
+饁 > yè; #9941
+饂 > yún; #9942
+饃 > mó; #9943
+饄 > táng; #9944
+饅 > mán; #9945
+饆 > bì; #9946
+饇 > yù; #9947
+饈 > xīu; #9948
+饉 > jĭn; #9949
+饊 > săn; #994A
+饋 > kùi; #994B
+饌 > zhuàn; #994C
+饍 > shàn; #994D
+饎 > chì; #994E
+饏 > dàn; #994F
+饐 > yì; #9950
+饑 > jī; #9951
+饒 > ráo; #9952
+饓 > chēng; #9953
+饔 > yōng; #9954
+饕 > tāo; #9955
+饖 > hùi; #9956
+饗 > xiăng; #9957
+饘 > zhān; #9958
+饙 > fēn; #9959
+饚 > hài; #995A
+饛 > méng; #995B
+饜 > yàn; #995C
+饝 > mó; #995D
+饞 > chán; #995E
+饟 > xiăng; #995F
+饠 > lúo; #9960
+饡 > zuàn; #9961
+饢 > năng; #9962
+饣 > shí; #9963
+饤 > dìng; #9964
+饥 > jī; #9965
+饦 > tūo; #9966
+饧 > xíng; #9967
+饨 > tún; #9968
+饩 > xì; #9969
+饪 > rèn; #996A
+饫 > yù; #996B
+饬 > chì; #996C
+饭 > fàn; #996D
+饮 > yĭn; #996E
+饯 > jiàn; #996F
+饰 > shì; #9970
+饱 > băo; #9971
+饲 > sì; #9972
+饳 > dùo; #9973
+饴 > yí; #9974
+饵 > ĕr; #9975
+饶 > ráo; #9976
+饷 > xiăng; #9977
+饸 > jiá; #9978
+饹 > le; #9979
+饺 > jiăo; #997A
+饻 > yī; #997B
+饼 > bĭng; #997C
+饽 > bó; #997D
+饾 > dòu; #997E
+饿 > è; #997F
+馀 > yú; #9980
+馁 > nĕi; #9981
+馂 > jùn; #9982
+馃 > gŭo; #9983
+馄 > hún; #9984
+馅 > xiàn; #9985
+馆 > guăn; #9986
+馇 > chā; #9987
+馈 > kùi; #9988
+馉 > gŭ; #9989
+馊 > sōu; #998A
+馋 > chán; #998B
+馌 > yè; #998C
+馍 > mó; #998D
+馎 > bó; #998E
+馏 > lìu; #998F
+馐 > xīu; #9990
+馑 > jĭn; #9991
+馒 > mán; #9992
+馓 > săn; #9993
+馔 > zhuàn; #9994
+馕 > năng; #9995
+首 > shŏu; #9996
+馗 > kúi; #9997
+馘 > gúo; #9998
+香 > xiāng; #9999
+馚 > fén; #999A
+馛 > bá; #999B
+馜 > nĭ; #999C
+馝 > bì; #999D
+馞 > bó; #999E
+馟 > tú; #999F
+馠 > hān; #99A0
+馡 > fēi; #99A1
+馢 > jiān; #99A2
+馣 > ān; #99A3
+馤 > ăi; #99A4
+馥 > fù; #99A5
+馦 > xiān; #99A6
+馧 > wēn; #99A7
+馨 > xīn; #99A8
+馩 > fén; #99A9
+馪 > bīn; #99AA
+馫 > xīng; #99AB
+馬 > mă; #99AC
+馭 > yù; #99AD
+馮 > féng; #99AE
+馯 > hàn; #99AF
+馰 > dì; #99B0
+馱 > túo; #99B1
+馲 > tūo; #99B2
+馳 > chí; #99B3
+馴 > xún; #99B4
+馵 > zhù; #99B5
+馶 > zhī; #99B6
+馷 > pèi; #99B7
+馸 > xìn; #99B8
+馹 > rì; #99B9
+馺 > sà; #99BA
+馻 > yĭn; #99BB
+馼 > wén; #99BC
+馽 > zhí; #99BD
+馾 > dàn; #99BE
+馿 > lǘ; #99BF
+駀 > yóu; #99C0
+駁 > bó; #99C1
+駂 > băo; #99C2
+駃 > kuài; #99C3
+駄 > túo; #99C4
+駅 > yì; #99C5
+駆 > qū; #99C6
+駈 > qū; #99C8
+駉 > jīong; #99C9
+駊 > bŏ; #99CA
+駋 > zhāo; #99CB
+駌 > yuān; #99CC
+駍 > pēng; #99CD
+駎 > zhòu; #99CE
+駏 > jù; #99CF
+駐 > zhù; #99D0
+駑 > nú; #99D1
+駒 > jū; #99D2
+駓 > pí; #99D3
+駔 > zăng; #99D4
+駕 > jià; #99D5
+駖 > líng; #99D6
+駗 > zhēn; #99D7
+駘 > tái; #99D8
+駙 > fù; #99D9
+駚 > yăng; #99DA
+駛 > shĭ; #99DB
+駜 > bì; #99DC
+駝 > túo; #99DD
+駞 > túo; #99DE
+駟 > sì; #99DF
+駠 > líu; #99E0
+駡 > mà; #99E1
+駢 > pián; #99E2
+駣 > táo; #99E3
+駤 > zhì; #99E4
+駥 > róng; #99E5
+駦 > téng; #99E6
+駧 > dòng; #99E7
+駨 > xún; #99E8
+駩 > quán; #99E9
+駪 > shēn; #99EA
+駫 > jīong; #99EB
+駬 > ĕr; #99EC
+駭 > hài; #99ED
+駮 > bó; #99EE
+駯 > zhu; #99EF
+駰 > yīn; #99F0
+駱 > lùo; #99F1
+駳 > dàn; #99F3
+駴 > xiè; #99F4
+駵 > líu; #99F5
+駶 > jú; #99F6
+駷 > sŏng; #99F7
+駸 > qīn; #99F8
+駹 > máng; #99F9
+駺 > liáng; #99FA
+駻 > hàn; #99FB
+駼 > tú; #99FC
+駽 > xuàn; #99FD
+駾 > tùi; #99FE
+駿 > jùn; #99FF
+騀 > é; #9A00
+騁 > chĕng; #9A01
+騂 > xīn; #9A02
+騃 > ái; #9A03
+騄 > lù; #9A04
+騅 > zhūi; #9A05
+騆 > zhōu; #9A06
+騇 > shĕ; #9A07
+騈 > pián; #9A08
+騉 > kūn; #9A09
+騊 > táo; #9A0A
+騋 > lái; #9A0B
+騌 > zōng; #9A0C
+騍 > kè; #9A0D
+騎 > qí; #9A0E
+騏 > qí; #9A0F
+騐 > yàn; #9A10
+騑 > fēi; #9A11
+騒 > sāo; #9A12
+験 > yăn; #9A13
+騔 > jié; #9A14
+騕 > yăo; #9A15
+騖 > wù; #9A16
+騗 > piàn; #9A17
+騘 > cōng; #9A18
+騙 > piàn; #9A19
+騚 > qián; #9A1A
+騛 > fēi; #9A1B
+騜 > huáng; #9A1C
+騝 > jiān; #9A1D
+騞 > hùo; #9A1E
+騟 > yù; #9A1F
+騠 > tí; #9A20
+騡 > quán; #9A21
+騢 > xiá; #9A22
+騣 > zōng; #9A23
+騤 > kúi; #9A24
+騥 > róu; #9A25
+騦 > sī; #9A26
+騧 > guā; #9A27
+騨 > túo; #9A28
+騩 > kùi; #9A29
+騪 > sōu; #9A2A
+騫 > qiān; #9A2B
+騬 > chéng; #9A2C
+騭 > zhì; #9A2D
+騮 > líu; #9A2E
+騯 > páng; #9A2F
+騰 > téng; #9A30
+騱 > xī; #9A31
+騲 > căo; #9A32
+騳 > dú; #9A33
+騴 > yàn; #9A34
+騵 > yuán; #9A35
+騶 > zōu; #9A36
+騷 > sāo; #9A37
+騸 > shàn; #9A38
+騹 > lí; #9A39
+騺 > zhì; #9A3A
+騻 > shuăng; #9A3B
+騼 > lù; #9A3C
+騽 > xí; #9A3D
+騾 > lúo; #9A3E
+騿 > zhāng; #9A3F
+驀 > mò; #9A40
+驁 > áo; #9A41
+驂 > cān; #9A42
+驃 > piào; #9A43
+驄 > cōng; #9A44
+驅 > qū; #9A45
+驆 > bì; #9A46
+驇 > zhì; #9A47
+驈 > yù; #9A48
+驉 > xū; #9A49
+驊 > huá; #9A4A
+驋 > bō; #9A4B
+驌 > sù; #9A4C
+驍 > xiāo; #9A4D
+驎 > lín; #9A4E
+驏 > chăn; #9A4F
+驐 > dūn; #9A50
+驑 > líu; #9A51
+驒 > túo; #9A52
+驓 > zēng; #9A53
+驔 > tán; #9A54
+驕 > jiāo; #9A55
+驖 > tiĕ; #9A56
+驗 > yàn; #9A57
+驘 > lúo; #9A58
+驙 > zhān; #9A59
+驚 > jīng; #9A5A
+驛 > yì; #9A5B
+驜 > yè; #9A5C
+驝 > tūo; #9A5D
+驞 > bīn; #9A5E
+驟 > zòu; #9A5F
+驠 > yàn; #9A60
+驡 > péng; #9A61
+驢 > lǘ; #9A62
+驣 > téng; #9A63
+驤 > xiāng; #9A64
+驥 > jì; #9A65
+驦 > shuāng; #9A66
+驧 > jú; #9A67
+驨 > xī; #9A68
+驩 > huān; #9A69
+驪 > lí; #9A6A
+驫 > biāo; #9A6B
+马 > mă; #9A6C
+驭 > yù; #9A6D
+驮 > túo; #9A6E
+驯 > xún; #9A6F
+驰 > chí; #9A70
+驱 > qū; #9A71
+驲 > rì; #9A72
+驳 > bó; #9A73
+驴 > lǘ; #9A74
+驵 > zăng; #9A75
+驶 > shĭ; #9A76
+驷 > sì; #9A77
+驸 > fù; #9A78
+驹 > jū; #9A79
+驺 > zōu; #9A7A
+驻 > zhù; #9A7B
+驼 > túo; #9A7C
+驽 > nú; #9A7D
+驾 > jià; #9A7E
+驿 > yì; #9A7F
+骀 > tái; #9A80
+骁 > xiāo; #9A81
+骂 > mà; #9A82
+骃 > yīn; #9A83
+骄 > jiāo; #9A84
+骅 > huá; #9A85
+骆 > lùo; #9A86
+骇 > hài; #9A87
+骈 > pián; #9A88
+骉 > biāo; #9A89
+骊 > lí; #9A8A
+骋 > chĕng; #9A8B
+验 > yàn; #9A8C
+骍 > xīn; #9A8D
+骎 > qīn; #9A8E
+骏 > jùn; #9A8F
+骐 > qí; #9A90
+骑 > qí; #9A91
+骒 > kè; #9A92
+骓 > zhūi; #9A93
+骔 > zōng; #9A94
+骕 > sù; #9A95
+骖 > cān; #9A96
+骗 > piàn; #9A97
+骘 > zhì; #9A98
+骙 > kúi; #9A99
+骚 > sāo; #9A9A
+骛 > wù; #9A9B
+骜 > áo; #9A9C
+骝 > líu; #9A9D
+骞 > qiān; #9A9E
+骟 > shàn; #9A9F
+骠 > piào; #9AA0
+骡 > lúo; #9AA1
+骢 > cōng; #9AA2
+骣 > chăn; #9AA3
+骤 > zòu; #9AA4
+骥 > jì; #9AA5
+骦 > shuāng; #9AA6
+骧 > xiāng; #9AA7
+骨 > gŭ; #9AA8
+骩 > wĕi; #9AA9
+骪 > wĕi; #9AAA
+骫 > wĕi; #9AAB
+骬 > yú; #9AAC
+骭 > gàn; #9AAD
+骮 > yì; #9AAE
+骯 > āng; #9AAF
+骰 > tóu; #9AB0
+骱 > xiè; #9AB1
+骲 > bāo; #9AB2
+骳 > bì; #9AB3
+骴 > chī; #9AB4
+骵 > tĭ; #9AB5
+骶 > dĭ; #9AB6
+骷 > kū; #9AB7
+骸 > hái; #9AB8
+骹 > qiāo; #9AB9
+骺 > gòu; #9ABA
+骻 > kuà; #9ABB
+骼 > gé; #9ABC
+骽 > tŭi; #9ABD
+骾 > gĕng; #9ABE
+骿 > pián; #9ABF
+髀 > bì; #9AC0
+髁 > kē; #9AC1
+髂 > kà; #9AC2
+髃 > yú; #9AC3
+髄 > sŭi; #9AC4
+髅 > lóu; #9AC5
+髆 > bó; #9AC6
+髇 > xiāo; #9AC7
+髈 > páng; #9AC8
+髉 > bō; #9AC9
+髊 > cī; #9ACA
+髋 > kuān; #9ACB
+髌 > bìn; #9ACC
+髍 > mó; #9ACD
+髎 > liáo; #9ACE
+髏 > lóu; #9ACF
+髐 > náo; #9AD0
+髑 > dú; #9AD1
+髒 > zāng; #9AD2
+髓 > sŭi; #9AD3
+體 > tĭ; #9AD4
+髕 > bìn; #9AD5
+髖 > kuān; #9AD6
+髗 > lú; #9AD7
+高 > gāo; #9AD8
+髙 > gāo; #9AD9
+髚 > qiào; #9ADA
+髛 > kāo; #9ADB
+髜 > qiāo; #9ADC
+髝 > lào; #9ADD
+髞 > zào; #9ADE
+髟 > biāo; #9ADF
+髠 > kūn; #9AE0
+髡 > kūn; #9AE1
+髢 > tì; #9AE2
+髣 > făng; #9AE3
+髤 > xīu; #9AE4
+髥 > rán; #9AE5
+髦 > máo; #9AE6
+髧 > dàn; #9AE7
+髨 > kūn; #9AE8
+髩 > bìn; #9AE9
+髪 > fà; #9AEA
+髫 > tiáo; #9AEB
+髬 > peng; #9AEC
+髭 > zī; #9AED
+髮 > fă; #9AEE
+髯 > rán; #9AEF
+髰 > tì; #9AF0
+髱 > pào; #9AF1
+髲 > pī; #9AF2
+髳 > máo; #9AF3
+髴 > fú; #9AF4
+髵 > ér; #9AF5
+髶 > róng; #9AF6
+髷 > qū; #9AF7
+髸 > gong; #9AF8
+髹 > xīu; #9AF9
+髺 > guà; #9AFA
+髻 > jì; #9AFB
+髼 > péng; #9AFC
+髽 > zhuā; #9AFD
+髾 > shāo; #9AFE
+髿 > shā; #9AFF
+鬀 > tì; #9B00
+鬁 > lì; #9B01
+鬂 > bìn; #9B02
+鬃 > zōng; #9B03
+鬄 > tì; #9B04
+鬅 > péng; #9B05
+鬆 > sōng; #9B06
+鬇 > zhēng; #9B07
+鬈 > quán; #9B08
+鬉 > zōng; #9B09
+鬊 > shùn; #9B0A
+鬋 > jiān; #9B0B
+鬌 > dŭo; #9B0C
+鬍 > hú; #9B0D
+鬎 > là; #9B0E
+鬏 > jīu; #9B0F
+鬐 > qí; #9B10
+鬑 > lián; #9B11
+鬒 > zhĕn; #9B12
+鬓 > bìn; #9B13
+鬔 > péng; #9B14
+鬕 > mò; #9B15
+鬖 > sān; #9B16
+鬗 > màn; #9B17
+鬘 > mán; #9B18
+鬙 > sēng; #9B19
+鬚 > xū; #9B1A
+鬛 > liè; #9B1B
+鬜 > qiān; #9B1C
+鬝 > qiān; #9B1D
+鬞 > nóng; #9B1E
+鬟 > huán; #9B1F
+鬠 > kuài; #9B20
+鬡 > níng; #9B21
+鬢 > bìn; #9B22
+鬣 > liè; #9B23
+鬤 > ráng; #9B24
+鬥 > dòu; #9B25
+鬦 > dòu; #9B26
+鬧 > nào; #9B27
+鬨 > hōng; #9B28
+鬩 > xì; #9B29
+鬪 > dòu; #9B2A
+鬫 > hăn; #9B2B
+鬬 > dòu; #9B2C
+鬭 > dòu; #9B2D
+鬮 > jīu; #9B2E
+鬯 > chàng; #9B2F
+鬰 > yù; #9B30
+鬱 > yù; #9B31
+鬲 > lì; #9B32
+鬳 > juàn; #9B33
+鬴 > fŭ; #9B34
+鬵 > qián; #9B35
+鬶 > gūi; #9B36
+鬷 > zōng; #9B37
+鬸 > lìu; #9B38
+鬹 > gūi; #9B39
+鬺 > shāng; #9B3A
+鬻 > yù; #9B3B
+鬼 > gŭi; #9B3C
+鬽 > mèi; #9B3D
+鬾 > jì; #9B3E
+鬿 > qí; #9B3F
+魀 > jiè; #9B40
+魁 > kúi; #9B41
+魂 > hún; #9B42
+魃 > bá; #9B43
+魄 > pò; #9B44
+魅 > mèi; #9B45
+魆 > xù; #9B46
+魇 > yăn; #9B47
+魈 > xiāo; #9B48
+魉 > liăng; #9B49
+魊 > yù; #9B4A
+魋 > túi; #9B4B
+魌 > qī; #9B4C
+魍 > wăng; #9B4D
+魎 > liăng; #9B4E
+魏 > wèi; #9B4F
+魐 > jiān; #9B50
+魑 > chī; #9B51
+魒 > piāo; #9B52
+魓 > bì; #9B53
+魔 > mó; #9B54
+魕 > jĭ; #9B55
+魖 > xū; #9B56
+魗 > chŏu; #9B57
+魘 > yăn; #9B58
+魙 > zhăn; #9B59
+魚 > yú; #9B5A
+魛 > dāo; #9B5B
+魜 > rén; #9B5C
+魝 > jì; #9B5D
+魟 > gōng; #9B5F
+魠 > túo; #9B60
+魡 > diào; #9B61
+魢 > jĭ; #9B62
+魣 > xù; #9B63
+魤 > é; #9B64
+魥 > è; #9B65
+魦 > shā; #9B66
+魧 > háng; #9B67
+魨 > tún; #9B68
+魩 > mò; #9B69
+魪 > jiè; #9B6A
+魫 > shĕn; #9B6B
+魬 > făn; #9B6C
+魭 > yuán; #9B6D
+魮 > bí; #9B6E
+魯 > lŭ; #9B6F
+魰 > wén; #9B70
+魱 > hú; #9B71
+魲 > lú; #9B72
+魳 > zá; #9B73
+魴 > fáng; #9B74
+魵 > fén; #9B75
+魶 > nà; #9B76
+魷 > yóu; #9B77
+魺 > hé; #9B7A
+魻 > xiá; #9B7B
+魼 > qū; #9B7C
+魽 > hān; #9B7D
+魾 > pí; #9B7E
+魿 > líng; #9B7F
+鮀 > túo; #9B80
+鮁 > bō; #9B81
+鮂 > qíu; #9B82
+鮃 > píng; #9B83
+鮄 > fú; #9B84
+鮅 > bì; #9B85
+鮆 > jì; #9B86
+鮇 > wèi; #9B87
+鮈 > jū; #9B88
+鮉 > diāo; #9B89
+鮊 > bó; #9B8A
+鮋 > yóu; #9B8B
+鮌 > gŭn; #9B8C
+鮍 > pī; #9B8D
+鮎 > nián; #9B8E
+鮏 > xīng; #9B8F
+鮐 > tái; #9B90
+鮑 > bào; #9B91
+鮒 > fù; #9B92
+鮓 > zhă; #9B93
+鮔 > jù; #9B94
+鮕 > gū; #9B95
+鮙 > tà; #9B99
+鮚 > jié; #9B9A
+鮛 > shù; #9B9B
+鮜 > hòu; #9B9C
+鮝 > xiăng; #9B9D
+鮞 > ér; #9B9E
+鮟 > àn; #9B9F
+鮠 > wéi; #9BA0
+鮡 > tiāo; #9BA1
+鮢 > zhū; #9BA2
+鮣 > yìn; #9BA3
+鮤 > liè; #9BA4
+鮥 > lùo; #9BA5
+鮦 > tóng; #9BA6
+鮧 > yí; #9BA7
+鮨 > qí; #9BA8
+鮩 > bìng; #9BA9
+鮪 > wĕi; #9BAA
+鮫 > jiăo; #9BAB
+鮬 > bù; #9BAC
+鮭 > gūi; #9BAD
+鮮 > xiān; #9BAE
+鮯 > gé; #9BAF
+鮰 > húi; #9BB0
+鮳 > kăo; #9BB3
+鮵 > dúo; #9BB5
+鮶 > jūn; #9BB6
+鮷 > tí; #9BB7
+鮸 > măn; #9BB8
+鮹 > xiāo; #9BB9
+鮺 > ză; #9BBA
+鮻 > shā; #9BBB
+鮼 > qīn; #9BBC
+鮽 > yú; #9BBD
+鮾 > nĕi; #9BBE
+鮿 > zhé; #9BBF
+鯀 > gŭn; #9BC0
+鯁 > gĕng; #9BC1
+鯂 > su; #9BC2
+鯃 > wú; #9BC3
+鯄 > qíu; #9BC4
+鯅 > tíng; #9BC5
+鯆 > fŭ; #9BC6
+鯇 > wăn; #9BC7
+鯈 > yóu; #9BC8
+鯉 > lĭ; #9BC9
+鯊 > shā; #9BCA
+鯋 > shā; #9BCB
+鯌 > gào; #9BCC
+鯍 > méng; #9BCD
+鯒 > yŏng; #9BD2
+鯓 > ní; #9BD3
+鯔 > zī; #9BD4
+鯕 > qí; #9BD5
+鯖 > qīng; #9BD6
+鯗 > xiăng; #9BD7
+鯘 > nĕi; #9BD8
+鯙 > chún; #9BD9
+鯚 > jì; #9BDA
+鯛 > diāo; #9BDB
+鯜 > qiè; #9BDC
+鯝 > gù; #9BDD
+鯞 > zhŏu; #9BDE
+鯟 > dōng; #9BDF
+鯠 > lái; #9BE0
+鯡 > fēi; #9BE1
+鯢 > ní; #9BE2
+鯣 > yì; #9BE3
+鯤 > kūn; #9BE4
+鯥 > lù; #9BE5
+鯦 > jìu; #9BE6
+鯧 > chāng; #9BE7
+鯨 > jīng; #9BE8
+鯩 > lún; #9BE9
+鯪 > líng; #9BEA
+鯫 > zōu; #9BEB
+鯬 > lí; #9BEC
+鯭 > mĕng; #9BED
+鯮 > zōng; #9BEE
+鯯 > zhì; #9BEF
+鯰 > nián; #9BF0
+鯴 > shī; #9BF4
+鯵 > shēn; #9BF5
+鯶 > hŭn; #9BF6
+鯷 > shì; #9BF7
+鯸 > hóu; #9BF8
+鯹 > xīng; #9BF9
+鯺 > zhū; #9BFA
+鯻 > là; #9BFB
+鯼 > zōng; #9BFC
+鯽 > jì; #9BFD
+鯾 > biān; #9BFE
+鯿 > biān; #9BFF
+鰀 > huàn; #9C00
+鰁 > quán; #9C01
+鰂 > zé; #9C02
+鰃 > wēi; #9C03
+鰄 > wēi; #9C04
+鰅 > yú; #9C05
+鰆 > qūn; #9C06
+鰇 > róu; #9C07
+鰈 > dié; #9C08
+鰉 > huáng; #9C09
+鰊 > liàn; #9C0A
+鰋 > yăn; #9C0B
+鰌 > qíu; #9C0C
+鰍 > qīu; #9C0D
+鰎 > jiàn; #9C0E
+鰏 > bì; #9C0F
+鰐 > è; #9C10
+鰑 > yáng; #9C11
+鰒 > fù; #9C12
+鰓 > sāi; #9C13
+鰔 > jiăn; #9C14
+鰕 > xiá; #9C15
+鰖 > tŭo; #9C16
+鰗 > hú; #9C17
+鰙 > rùo; #9C19
+鰛 > wēn; #9C1B
+鰜 > jiān; #9C1C
+鰝 > hào; #9C1D
+鰞 > wū; #9C1E
+鰟 > fáng; #9C1F
+鰠 > sāo; #9C20
+鰡 > líu; #9C21
+鰢 > mă; #9C22
+鰣 > shí; #9C23
+鰤 > shī; #9C24
+鰥 > yín; #9C25
+鰦 > z̄; #9C26
+鰧 > téng; #9C27
+鰨 > tà; #9C28
+鰩 > yáo; #9C29
+鰪 > gé; #9C2A
+鰫 > róng; #9C2B
+鰬 > qián; #9C2C
+鰭 > qí; #9C2D
+鰮 > wēn; #9C2E
+鰯 > rùo; #9C2F
+鰱 > lián; #9C31
+鰲 > áo; #9C32
+鰳 > lè; #9C33
+鰴 > hūi; #9C34
+鰵 > mĭn; #9C35
+鰶 > jì; #9C36
+鰷 > tiáo; #9C37
+鰸 > qū; #9C38
+鰹 > jiān; #9C39
+鰺 > sāo; #9C3A
+鰻 > mán; #9C3B
+鰼 > xí; #9C3C
+鰽 > qíu; #9C3D
+鰾 > biào; #9C3E
+鰿 > jī; #9C3F
+鱀 > jì; #9C40
+鱁 > zhú; #9C41
+鱂 > jiāng; #9C42
+鱃 > qīu; #9C43
+鱄 > zhuān; #9C44
+鱅 > yóng; #9C45
+鱆 > zhāng; #9C46
+鱇 > kāng; #9C47
+鱈 > xuĕ; #9C48
+鱉 > biē; #9C49
+鱊 > jué; #9C4A
+鱋 > qū; #9C4B
+鱌 > xiàng; #9C4C
+鱍 > bō; #9C4D
+鱎 > jiāo; #9C4E
+鱏 > xún; #9C4F
+鱐 > sù; #9C50
+鱑 > huáng; #9C51
+鱒 > zùn; #9C52
+鱓 > shàn; #9C53
+鱔 > shàn; #9C54
+鱕 > fān; #9C55
+鱖 > jué; #9C56
+鱗 > lín; #9C57
+鱘 > xún; #9C58
+鱙 > miáo; #9C59
+鱚 > xĭ; #9C5A
+鱝 > fèn; #9C5D
+鱞 > guān; #9C5E
+鱟 > hòu; #9C5F
+鱠 > kuài; #9C60
+鱡 > zéi; #9C61
+鱢 > sāo; #9C62
+鱣 > zhān; #9C63
+鱤 > găn; #9C64
+鱥 > gùi; #9C65
+鱦 > shéng; #9C66
+鱧 > lĭ; #9C67
+鱨 > cháng; #9C68
+鱬 > rú; #9C6C
+鱭 > jì; #9C6D
+鱮 > xù; #9C6E
+鱯 > hùo; #9C6F
+鱱 > lì; #9C71
+鱲 > liè; #9C72
+鱳 > lì; #9C73
+鱴 > miè; #9C74
+鱵 > zhēn; #9C75
+鱶 > xiăng; #9C76
+鱷 > è; #9C77
+鱸 > lú; #9C78
+鱹 > guàn; #9C79
+鱺 > lí; #9C7A
+鱻 > xiān; #9C7B
+鱼 > yú; #9C7C
+鱽 > dāo; #9C7D
+鱾 > jĭ; #9C7E
+鱿 > yóu; #9C7F
+鲀 > tún; #9C80
+鲁 > lŭ; #9C81
+鲂 > fáng; #9C82
+鲃 > bā; #9C83
+鲄 > hé; #9C84
+鲅 > bō; #9C85
+鲆 > píng; #9C86
+鲇 > nián; #9C87
+鲈 > lú; #9C88
+鲉 > yóu; #9C89
+鲊 > zhă; #9C8A
+鲋 > fù; #9C8B
+鲌 > bó; #9C8C
+鲍 > bào; #9C8D
+鲎 > hòu; #9C8E
+鲏 > pī; #9C8F
+鲐 > tái; #9C90
+鲑 > gūi; #9C91
+鲒 > jié; #9C92
+鲓 > kăo; #9C93
+鲔 > wĕi; #9C94
+鲕 > ér; #9C95
+鲖 > tóng; #9C96
+鲗 > zé; #9C97
+鲘 > hòu; #9C98
+鲙 > kuài; #9C99
+鲚 > jì; #9C9A
+鲛 > jiăo; #9C9B
+鲜 > xiān; #9C9C
+鲝 > ză; #9C9D
+鲞 > xiăng; #9C9E
+鲟 > xún; #9C9F
+鲠 > gĕng; #9CA0
+鲡 > lí; #9CA1
+鲢 > lián; #9CA2
+鲣 > jiān; #9CA3
+鲤 > lĭ; #9CA4
+鲥 > shí; #9CA5
+鲦 > tiáo; #9CA6
+鲧 > gŭn; #9CA7
+鲨 > shā; #9CA8
+鲩 > wăn; #9CA9
+鲪 > jūn; #9CAA
+鲫 > jì; #9CAB
+鲬 > yŏng; #9CAC
+鲭 > qīng; #9CAD
+鲮 > líng; #9CAE
+鲯 > qí; #9CAF
+鲰 > zōu; #9CB0
+鲱 > fēi; #9CB1
+鲲 > kūn; #9CB2
+鲳 > chāng; #9CB3
+鲴 > gù; #9CB4
+鲵 > ní; #9CB5
+鲶 > nián; #9CB6
+鲷 > diāo; #9CB7
+鲸 > jīng; #9CB8
+鲹 > shēn; #9CB9
+鲺 > shī; #9CBA
+鲻 > zī; #9CBB
+鲼 > fèn; #9CBC
+鲽 > dié; #9CBD
+鲾 > bì; #9CBE
+鲿 > cháng; #9CBF
+鳀 > shì; #9CC0
+鳁 > wēn; #9CC1
+鳂 > wēi; #9CC2
+鳃 > sāi; #9CC3
+鳄 > è; #9CC4
+鳅 > qīu; #9CC5
+鳆 > fù; #9CC6
+鳇 > huáng; #9CC7
+鳈 > quán; #9CC8
+鳉 > jiāng; #9CC9
+鳊 > biān; #9CCA
+鳋 > sāo; #9CCB
+鳌 > áo; #9CCC
+鳍 > qí; #9CCD
+鳎 > tà; #9CCE
+鳏 > yín; #9CCF
+鳐 > yáo; #9CD0
+鳑 > fáng; #9CD1
+鳒 > jiān; #9CD2
+鳓 > lè; #9CD3
+鳔 > biào; #9CD4
+鳕 > xuĕ; #9CD5
+鳖 > biē; #9CD6
+鳗 > mán; #9CD7
+鳘 > mĭn; #9CD8
+鳙 > yóng; #9CD9
+鳚 > wèi; #9CDA
+鳛 > xí; #9CDB
+鳜 > jué; #9CDC
+鳝 > shàn; #9CDD
+鳞 > lín; #9CDE
+鳟 > zùn; #9CDF
+鳠 > hùo; #9CE0
+鳡 > găn; #9CE1
+鳢 > lĭ; #9CE2
+鳣 > zhān; #9CE3
+鳤 > guăn; #9CE4
+鳥 > niăo; #9CE5
+鳦 > yĭ; #9CE6
+鳧 > fú; #9CE7
+鳨 > lì; #9CE8
+鳩 > jīu; #9CE9
+鳪 > bŭ; #9CEA
+鳫 > yàn; #9CEB
+鳬 > fú; #9CEC
+鳭 > diāo; #9CED
+鳮 > jī; #9CEE
+鳯 > fèng; #9CEF
+鳱 > gān; #9CF1
+鳲 > shī; #9CF2
+鳳 > fèng; #9CF3
+鳴 > míng; #9CF4
+鳵 > băo; #9CF5
+鳶 > yuān; #9CF6
+鳷 > zhī; #9CF7
+鳸 > hù; #9CF8
+鳹 > qín; #9CF9
+鳺 > fū; #9CFA
+鳻 > fēn; #9CFB
+鳼 > wén; #9CFC
+鳽 > jiān; #9CFD
+鳾 > shī; #9CFE
+鳿 > yù; #9CFF
+鴀 > fŏu; #9D00
+鴁 > yiāo; #9D01
+鴂 > juè; #9D02
+鴃 > jué; #9D03
+鴄 > pī; #9D04
+鴅 > huān; #9D05
+鴆 > zhèn; #9D06
+鴇 > băo; #9D07
+鴈 > yàn; #9D08
+鴉 > yā; #9D09
+鴊 > zhèng; #9D0A
+鴋 > fāng; #9D0B
+鴌 > fèng; #9D0C
+鴍 > wén; #9D0D
+鴎 > ōu; #9D0E
+鴏 > tè; #9D0F
+鴐 > jiā; #9D10
+鴑 > nú; #9D11
+鴒 > líng; #9D12
+鴓 > miè; #9D13
+鴔 > fú; #9D14
+鴕 > túo; #9D15
+鴖 > wén; #9D16
+鴗 > lì; #9D17
+鴘 > biàn; #9D18
+鴙 > zhì; #9D19
+鴚 > gē; #9D1A
+鴛 > yuān; #9D1B
+鴜 > zī; #9D1C
+鴝 > qú; #9D1D
+鴞 > xiāo; #9D1E
+鴟 > zhī; #9D1F
+鴠 > dàn; #9D20
+鴡 > jū; #9D21
+鴢 > yòu; #9D22
+鴣 > gū; #9D23
+鴤 > zhōng; #9D24
+鴥 > yù; #9D25
+鴦 > yāng; #9D26
+鴧 > ròng; #9D27
+鴨 > yā; #9D28
+鴩 > tiĕ; #9D29
+鴪 > yù; #9D2A
+鴬 > yīng; #9D2C
+鴭 > zhūi; #9D2D
+鴮 > wū; #9D2E
+鴯 > ér; #9D2F
+鴰 > guā; #9D30
+鴱 > ài; #9D31
+鴲 > zhī; #9D32
+鴳 > yàn; #9D33
+鴴 > héng; #9D34
+鴵 > jiāo; #9D35
+鴶 > jí; #9D36
+鴷 > liè; #9D37
+鴸 > zhū; #9D38
+鴹 > rén; #9D39
+鴺 > yí; #9D3A
+鴻 > hóng; #9D3B
+鴼 > lùo; #9D3C
+鴽 > rú; #9D3D
+鴾 > móu; #9D3E
+鴿 > gē; #9D3F
+鵀 > rèn; #9D40
+鵁 > jiāo; #9D41
+鵂 > xīu; #9D42
+鵃 > zhōu; #9D43
+鵄 > zhī; #9D44
+鵅 > lùo; #9D45
+鵉 > luán; #9D49
+鵊 > jiá; #9D4A
+鵋 > jì; #9D4B
+鵌 > yú; #9D4C
+鵍 > huān; #9D4D
+鵎 > tŭo; #9D4E
+鵏 > bū; #9D4F
+鵐 > wú; #9D50
+鵑 > juān; #9D51
+鵒 > yù; #9D52
+鵓 > bó; #9D53
+鵔 > xùn; #9D54
+鵕 > xùn; #9D55
+鵖 > bì; #9D56
+鵗 > xī; #9D57
+鵘 > jùn; #9D58
+鵙 > jú; #9D59
+鵚 > tú; #9D5A
+鵛 > jīng; #9D5B
+鵜 > tí; #9D5C
+鵝 > é; #9D5D
+鵞 > é; #9D5E
+鵟 > kuáng; #9D5F
+鵠 > hú; #9D60
+鵡 > wŭ; #9D61
+鵢 > shēn; #9D62
+鵣 > lài; #9D63
+鵦 > lù; #9D66
+鵧 > píng; #9D67
+鵨 > shū; #9D68
+鵩 > fú; #9D69
+鵪 > ān; #9D6A
+鵫 > zhào; #9D6B
+鵬 > péng; #9D6C
+鵭 > qín; #9D6D
+鵮 > qiān; #9D6E
+鵯 > bēi; #9D6F
+鵰 > diāo; #9D70
+鵱 > lù; #9D71
+鵲 > què; #9D72
+鵳 > jiān; #9D73
+鵴 > jú; #9D74
+鵵 > tù; #9D75
+鵶 > yā; #9D76
+鵷 > yuān; #9D77
+鵸 > qí; #9D78
+鵹 > lí; #9D79
+鵺 > yè; #9D7A
+鵻 > zhūi; #9D7B
+鵼 > kōng; #9D7C
+鵽 > zhùi; #9D7D
+鵾 > kūn; #9D7E
+鵿 > shēng; #9D7F
+鶀 > qí; #9D80
+鶁 > jīng; #9D81
+鶂 > yì; #9D82
+鶃 > yì; #9D83
+鶄 > jīng; #9D84
+鶅 > zī; #9D85
+鶆 > lái; #9D86
+鶇 > dōng; #9D87
+鶈 > qī; #9D88
+鶉 > chún; #9D89
+鶊 > gēng; #9D8A
+鶋 > jū; #9D8B
+鶌 > qū; #9D8C
+鶏 > jī; #9D8F
+鶐 > shù; #9D90
+鶒 > chì; #9D92
+鶓 > miáo; #9D93
+鶔 > róu; #9D94
+鶕 > ān; #9D95
+鶖 > qīu; #9D96
+鶗 > tí; #9D97
+鶘 > hú; #9D98
+鶙 > tí; #9D99
+鶚 > è; #9D9A
+鶛 > jiē; #9D9B
+鶜 > máo; #9D9C
+鶝 > fú; #9D9D
+鶞 > chūn; #9D9E
+鶟 > tú; #9D9F
+鶠 > yăn; #9DA0
+鶡 > hé; #9DA1
+鶢 > yuán; #9DA2
+鶣 > piān; #9DA3
+鶤 > yùn; #9DA4
+鶥 > méi; #9DA5
+鶦 > hú; #9DA6
+鶧 > yīng; #9DA7
+鶨 > dùn; #9DA8
+鶩 > mù; #9DA9
+鶪 > jú; #9DAA
+鶬 > cāng; #9DAC
+鶭 > făng; #9DAD
+鶮 > gù; #9DAE
+鶯 > yīng; #9DAF
+鶰 > yuán; #9DB0
+鶱 > xuān; #9DB1
+鶲 > wēng; #9DB2
+鶳 > shī; #9DB3
+鶴 > hè; #9DB4
+鶵 > chú; #9DB5
+鶶 > táng; #9DB6
+鶷 > xià; #9DB7
+鶸 > rùo; #9DB8
+鶹 > líu; #9DB9
+鶺 > jí; #9DBA
+鶻 > gú; #9DBB
+鶼 > jiān; #9DBC
+鶽 > zhŭn; #9DBD
+鶾 > hàn; #9DBE
+鶿 > zī; #9DBF
+鷀 > zī; #9DC0
+鷁 > nì; #9DC1
+鷂 > yào; #9DC2
+鷃 > yàn; #9DC3
+鷄 > jī; #9DC4
+鷅 > lì; #9DC5
+鷆 > tián; #9DC6
+鷇 > kòu; #9DC7
+鷈 > tī; #9DC8
+鷉 > tī; #9DC9
+鷊 > nì; #9DCA
+鷋 > tú; #9DCB
+鷌 > mă; #9DCC
+鷍 > jiāo; #9DCD
+鷎 > gāo; #9DCE
+鷏 > tián; #9DCF
+鷐 > chén; #9DD0
+鷑 > lì; #9DD1
+鷒 > zhuān; #9DD2
+鷓 > zhè; #9DD3
+鷔 > áo; #9DD4
+鷕 > yăo; #9DD5
+鷖 > yī; #9DD6
+鷗 > ōu; #9DD7
+鷘 > chì; #9DD8
+鷙 > zhì; #9DD9
+鷚 > liáo; #9DDA
+鷛 > róng; #9DDB
+鷜 > lóu; #9DDC
+鷝 > bì; #9DDD
+鷞 > shuāng; #9DDE
+鷟 > zhúo; #9DDF
+鷠 > yú; #9DE0
+鷡 > wú; #9DE1
+鷢 > jué; #9DE2
+鷣 > yín; #9DE3
+鷤 > quán; #9DE4
+鷥 > sī; #9DE5
+鷦 > jiāo; #9DE6
+鷧 > yì; #9DE7
+鷨 > huā; #9DE8
+鷩 > bì; #9DE9
+鷪 > yīng; #9DEA
+鷫 > sù; #9DEB
+鷬 > huáng; #9DEC
+鷭 > fán; #9DED
+鷮 > jiāo; #9DEE
+鷯 > liáo; #9DEF
+鷰 > yàn; #9DF0
+鷱 > kāo; #9DF1
+鷲 > jìu; #9DF2
+鷳 > xián; #9DF3
+鷴 > xián; #9DF4
+鷵 > tú; #9DF5
+鷶 > măi; #9DF6
+鷷 > zūn; #9DF7
+鷸 > yù; #9DF8
+鷹 > yīng; #9DF9
+鷺 > lù; #9DFA
+鷻 > tuán; #9DFB
+鷼 > xián; #9DFC
+鷽 > xué; #9DFD
+鷾 > yì; #9DFE
+鷿 > pì; #9DFF
+鸀 > shú; #9E00
+鸁 > lúo; #9E01
+鸂 > qī; #9E02
+鸃 > yí; #9E03
+鸄 > jí; #9E04
+鸅 > zhé; #9E05
+鸆 > yú; #9E06
+鸇 > zhān; #9E07
+鸈 > yè; #9E08
+鸉 > yáng; #9E09
+鸊 > pì; #9E0A
+鸋 > níng; #9E0B
+鸌 > hùo; #9E0C
+鸍 > mí; #9E0D
+鸎 > yīng; #9E0E
+鸏 > méng; #9E0F
+鸐 > dí; #9E10
+鸑 > yuè; #9E11
+鸒 > yú; #9E12
+鸓 > lĕi; #9E13
+鸔 > bào; #9E14
+鸕 > lú; #9E15
+鸖 > hè; #9E16
+鸗 > lóng; #9E17
+鸘 > shuāng; #9E18
+鸙 > yuè; #9E19
+鸚 > yīng; #9E1A
+鸛 > guàn; #9E1B
+鸜 > qú; #9E1C
+鸝 > lí; #9E1D
+鸞 > luán; #9E1E
+鸟 > niăo; #9E1F
+鸠 > jīu; #9E20
+鸡 > jī; #9E21
+鸢 > yuān; #9E22
+鸣 > míng; #9E23
+鸤 > shī; #9E24
+鸥 > ōu; #9E25
+鸦 > yā; #9E26
+鸧 > cāng; #9E27
+鸨 > băo; #9E28
+鸩 > zhèn; #9E29
+鸪 > gū; #9E2A
+鸫 > dōng; #9E2B
+鸬 > lú; #9E2C
+鸭 > yā; #9E2D
+鸮 > xiāo; #9E2E
+鸯 > yāng; #9E2F
+鸰 > líng; #9E30
+鸱 > zhī; #9E31
+鸲 > qú; #9E32
+鸳 > yuān; #9E33
+鸴 > xué; #9E34
+鸵 > túo; #9E35
+鸶 > sī; #9E36
+鸷 > zhì; #9E37
+鸸 > ér; #9E38
+鸹 > guā; #9E39
+鸺 > xīu; #9E3A
+鸻 > héng; #9E3B
+鸼 > zhōu; #9E3C
+鸽 > gē; #9E3D
+鸾 > luán; #9E3E
+鸿 > hóng; #9E3F
+鹀 > wú; #9E40
+鹁 > bó; #9E41
+鹂 > lí; #9E42
+鹃 > juān; #9E43
+鹄 > hú; #9E44
+鹅 > é; #9E45
+鹆 > yù; #9E46
+鹇 > xián; #9E47
+鹈 > tí; #9E48
+鹉 > wŭ; #9E49
+鹊 > què; #9E4A
+鹋 > miáo; #9E4B
+鹌 > ān; #9E4C
+鹍 > kūn; #9E4D
+鹎 > bēi; #9E4E
+鹏 > péng; #9E4F
+鹐 > qiān; #9E50
+鹑 > chún; #9E51
+鹒 > gēng; #9E52
+鹓 > yuān; #9E53
+鹔 > sù; #9E54
+鹕 > hú; #9E55
+鹖 > hé; #9E56
+鹗 > è; #9E57
+鹘 > gú; #9E58
+鹙 > qīu; #9E59
+鹚 > zī; #9E5A
+鹛 > méi; #9E5B
+鹜 > mù; #9E5C
+鹝 > nì; #9E5D
+鹞 > yào; #9E5E
+鹟 > wēng; #9E5F
+鹠 > líu; #9E60
+鹡 > jí; #9E61
+鹢 > nì; #9E62
+鹣 > jiān; #9E63
+鹤 > hè; #9E64
+鹥 > yī; #9E65
+鹦 > yīng; #9E66
+鹧 > zhè; #9E67
+鹨 > liáo; #9E68
+鹩 > liáo; #9E69
+鹪 > jiāo; #9E6A
+鹫 > jìu; #9E6B
+鹬 > yù; #9E6C
+鹭 > lù; #9E6D
+鹮 > xuán; #9E6E
+鹯 > zhān; #9E6F
+鹰 > yīng; #9E70
+鹱 > hùo; #9E71
+鹲 > méng; #9E72
+鹳 > guàn; #9E73
+鹴 > shuāng; #9E74
+鹵 > lŭ; #9E75
+鹶 > jīn; #9E76
+鹷 > líng; #9E77
+鹸 > jiăn; #9E78
+鹹 > xián; #9E79
+鹺 > cúo; #9E7A
+鹻 > jiăn; #9E7B
+鹼 > jiăn; #9E7C
+鹽 > yán; #9E7D
+鹾 > cúo; #9E7E
+鹿 > lù; #9E7F
+麀 > yōu; #9E80
+麁 > cū; #9E81
+麂 > jĭ; #9E82
+麃 > biāo; #9E83
+麄 > cū; #9E84
+麅 > biāo; #9E85
+麆 > zhù; #9E86
+麇 > jūn; #9E87
+麈 > zhŭ; #9E88
+麉 > jiān; #9E89
+麊 > mí; #9E8A
+麋 > mí; #9E8B
+麌 > wú; #9E8C
+麍 > líu; #9E8D
+麎 > chén; #9E8E
+麏 > jūn; #9E8F
+麐 > lín; #9E90
+麑 > ní; #9E91
+麒 > qí; #9E92
+麓 > lù; #9E93
+麔 > jìu; #9E94
+麕 > jūn; #9E95
+麖 > jīng; #9E96
+麗 > lì; #9E97
+麘 > xiāng; #9E98
+麙 > yán; #9E99
+麚 > jiā; #9E9A
+麛 > mí; #9E9B
+麜 > lì; #9E9C
+麝 > shè; #9E9D
+麞 > zhāng; #9E9E
+麟 > lín; #9E9F
+麠 > jīng; #9EA0
+麡 > jī; #9EA1
+麢 > líng; #9EA2
+麣 > yán; #9EA3
+麤 > cū; #9EA4
+麥 > mài; #9EA5
+麦 > mài; #9EA6
+麧 > gē; #9EA7
+麨 > chăo; #9EA8
+麩 > fū; #9EA9
+麪 > miăn; #9EAA
+麫 > miăn; #9EAB
+麬 > fū; #9EAC
+麭 > pào; #9EAD
+麮 > qù; #9EAE
+麯 > qú; #9EAF
+麰 > móu; #9EB0
+麱 > fū; #9EB1
+麲 > xiàn; #9EB2
+麳 > lái; #9EB3
+麴 > qú; #9EB4
+麵 > miàn; #9EB5
+麷 > fēng; #9EB7
+麸 > fū; #9EB8
+麹 > qú; #9EB9
+麺 > miàn; #9EBA
+麻 > má; #9EBB
+麼 > mo; #9EBC
+麽 > mo; #9EBD
+麾 > hūi; #9EBE
+黀 > zōu; #9EC0
+黁 > nēn; #9EC1
+黂 > fén; #9EC2
+黃 > huáng; #9EC3
+黄 > huáng; #9EC4
+黅 > jīn; #9EC5
+黆 > guāng; #9EC6
+黇 > tiān; #9EC7
+黈 > tŏu; #9EC8
+黉 > héng; #9EC9
+黊 > xī; #9ECA
+黋 > kuăng; #9ECB
+黌 > héng; #9ECC
+黍 > shŭ; #9ECD
+黎 > lí; #9ECE
+黏 > nián; #9ECF
+黐 > chī; #9ED0
+黑 > hēi; #9ED1
+黒 > hēi; #9ED2
+黓 > yì; #9ED3
+黔 > qián; #9ED4
+黕 > dān; #9ED5
+黖 > xì; #9ED6
+黗 > tuăn; #9ED7
+默 > mò; #9ED8
+黙 > mò; #9ED9
+黚 > qián; #9EDA
+黛 > dài; #9EDB
+黜 > chù; #9EDC
+黝 > yŏu; #9EDD
+點 > diăn; #9EDE
+黟 > yī; #9EDF
+黠 > xiá; #9EE0
+黡 > yăn; #9EE1
+黢 > qū; #9EE2
+黣 > mĕi; #9EE3
+黤 > yăn; #9EE4
+黥 > jīng; #9EE5
+黦 > yù; #9EE6
+黧 > lí; #9EE7
+黨 > dăng; #9EE8
+黩 > dú; #9EE9
+黪 > căn; #9EEA
+黫 > yīn; #9EEB
+黬 > àn; #9EEC
+黭 > yān; #9EED
+黮 > tăn; #9EEE
+黯 > àn; #9EEF
+黰 > zhĕn; #9EF0
+黱 > dài; #9EF1
+黲 > căn; #9EF2
+黳 > yī; #9EF3
+黴 > méi; #9EF4
+黵 > dăn; #9EF5
+黶 > yăn; #9EF6
+黷 > dú; #9EF7
+黸 > lú; #9EF8
+黹 > zhĭ; #9EF9
+黺 > fĕn; #9EFA
+黻 > fù; #9EFB
+黼 > fŭ; #9EFC
+黽 > mĭn; #9EFD
+黾 > mĭn; #9EFE
+黿 > yuán; #9EFF
+鼀 > cù; #9F00
+鼁 > qù; #9F01
+鼂 > cháo; #9F02
+鼃 > wā; #9F03
+鼄 > zhū; #9F04
+鼅 > zhī; #9F05
+鼆 > máng; #9F06
+鼇 > áo; #9F07
+鼈 > biē; #9F08
+鼉 > túo; #9F09
+鼊 > bì; #9F0A
+鼋 > yuán; #9F0B
+鼌 > cháo; #9F0C
+鼍 > túo; #9F0D
+鼎 > dĭng; #9F0E
+鼏 > mì; #9F0F
+鼐 > nài; #9F10
+鼑 > dĭng; #9F11
+鼒 > zī; #9F12
+鼓 > gŭ; #9F13
+鼔 > gŭ; #9F14
+鼕 > dōng; #9F15
+鼖 > fén; #9F16
+鼗 > táo; #9F17
+鼘 > yuān; #9F18
+鼙 > pí; #9F19
+鼚 > chāng; #9F1A
+鼛 > gāo; #9F1B
+鼜 > qì; #9F1C
+鼝 > yuān; #9F1D
+鼞 > tāng; #9F1E
+鼟 > tēng; #9F1F
+鼠 > shŭ; #9F20
+鼡 > shŭ; #9F21
+鼢 > fén; #9F22
+鼣 > fèi; #9F23
+鼤 > wén; #9F24
+鼥 > bá; #9F25
+鼦 > diāo; #9F26
+鼧 > túo; #9F27
+鼨 > tóng; #9F28
+鼩 > qú; #9F29
+鼪 > shēng; #9F2A
+鼫 > shí; #9F2B
+鼬 > yòu; #9F2C
+鼭 > shí; #9F2D
+鼮 > tíng; #9F2E
+鼯 > wú; #9F2F
+鼰 > niàn; #9F30
+鼱 > jīng; #9F31
+鼲 > hún; #9F32
+鼳 > jú; #9F33
+鼴 > yăn; #9F34
+鼵 > tú; #9F35
+鼶 > tí; #9F36
+鼷 > xī; #9F37
+鼸 > xiăn; #9F38
+鼹 > yăn; #9F39
+鼺 > léi; #9F3A
+鼻 > bí; #9F3B
+鼼 > yăo; #9F3C
+鼽 > qíu; #9F3D
+鼾 > hān; #9F3E
+鼿 > wū; #9F3F
+齀 > wù; #9F40
+齁 > hóu; #9F41
+齂 > xì; #9F42
+齃 > gé; #9F43
+齄 > zhā; #9F44
+齅 > xìu; #9F45
+齆 > wèng; #9F46
+齇 > zhā; #9F47
+齈 > nóng; #9F48
+齉 > nàng; #9F49
+齊 > qí; #9F4A
+齋 > zhāi; #9F4B
+齌 > jì; #9F4C
+齍 > zī; #9F4D
+齎 > jī; #9F4E
+齏 > jī; #9F4F
+齐 > qí; #9F50
+齑 > jī; #9F51
+齒 > chĭ; #9F52
+齓 > chèn; #9F53
+齔 > chèn; #9F54
+齕 > hé; #9F55
+齖 > yá; #9F56
+齗 > kĕn; #9F57
+齘 > xiè; #9F58
+齙 > páo; #9F59
+齚 > cùo; #9F5A
+齛 > shì; #9F5B
+齜 > zī; #9F5C
+齝 > chī; #9F5D
+齞 > niàn; #9F5E
+齟 > jŭ; #9F5F
+齠 > tiáo; #9F60
+齡 > líng; #9F61
+齢 > líng; #9F62
+齣 > chū; #9F63
+齤 > quán; #9F64
+齥 > xiè; #9F65
+齦 > kĕn; #9F66
+齧 > niè; #9F67
+齨 > jìu; #9F68
+齩 > yăo; #9F69
+齪 > chùo; #9F6A
+齫 > kŭn; #9F6B
+齬 > yŭ; #9F6C
+齭 > chŭ; #9F6D
+齮 > yĭ; #9F6E
+齯 > ní; #9F6F
+齰 > cùo; #9F70
+齱 > zōu; #9F71
+齲 > qŭ; #9F72
+齳 > nĕn; #9F73
+齴 > xiăn; #9F74
+齵 > óu; #9F75
+齶 > è; #9F76
+齷 > wò; #9F77
+齸 > yì; #9F78
+齹 > chūo; #9F79
+齺 > zōu; #9F7A
+齻 > diān; #9F7B
+齼 > chŭ; #9F7C
+齽 > jìn; #9F7D
+齾 > yà; #9F7E
+齿 > chĭ; #9F7F
+龀 > chèn; #9F80
+龁 > hé; #9F81
+龂 > kĕn; #9F82
+龃 > jŭ; #9F83
+龄 > líng; #9F84
+龅 > páo; #9F85
+龆 > tiáo; #9F86
+龇 > zī; #9F87
+龈 > kĕn; #9F88
+龉 > yŭ; #9F89
+龊 > chùo; #9F8A
+龋 > qŭ; #9F8B
+龌 > wò; #9F8C
+龍 > lóng; #9F8D
+龎 > páng; #9F8E
+龏 > gōng; #9F8F
+龐 > páng; #9F90
+龑 > yăn; #9F91
+龒 > lóng; #9F92
+龓 > lóng; #9F93
+龔 > gōng; #9F94
+龕 > kān; #9F95
+龖 > tà; #9F96
+龗 > líng; #9F97
+龘 > tà; #9F98
+龙 > lóng; #9F99
+龚 > gōng; #9F9A
+龛 > kān; #9F9B
+龜 > gūi; #9F9C
+龝 > qīu; #9F9D
+龞 > biē; #9F9E
+龟 > gūi; #9F9F
+龠 > yuè; #9FA0
+龡 > chùi; #9FA1
+龢 > hé; #9FA2
+龣 > jué; #9FA3
+龤 > xié; #9FA4
+龥 > yù; #9FA5
+癩 > là; #F90E
+兀 > wù; #FA0C
+嗀 > hùo; #FA0D
+塚 > zhŏng; #FA10
+晴 > qíng; #FA12
+凞 > xī; #FA15
+猪 > zhū; #FA16
+益 > yì; #FA17
+礼 > lĭ; #FA18
+神 > shén; #FA19
+祥 > xiáng; #FA1A
+福 > fú; #FA1B
+靖 > jìng; #FA1C
+精 > jīng; #FA1D
+羽 > yŭ; #FA1E
+諸 > zhū; #FA22
+逸 > yì; #FA25
+都 > dū; #FA26
+飯 > fàn; #FA2A
+飼 > sì; #FA2B
+館 > guăn; #FA2C
+鶴 > hè; #FA2D
+
+# eof
diff --git a/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt
new file mode 100755
index 0000000..fe353f3
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt
@@ -0,0 +1,6366 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others.  All Rights Reserved.
+#--------------------------------------------------------------------
+# Date: Tue Jan 23 12:42:02 2001
+#--------------------------------------------------------------------
+
+# Kanji-English
+
+丁>'[male adult]';
+七>'[seven]';
+万>'[ten thousand]';
+丈>'[unit of length equal 3.3 meters]';
+三>'[three]';
+上>'[top]';
+下>'[under]';
+不>'[no]';
+与>'[and]';
+丐>'[beggar]';
+丑>'[clown]';
+且>'[moreover]';
+丕>'[great]';
+世>'[generation]';
+丗>'[thirty]';
+丘>'[hill]';
+丙>'[third of heavenly stems]';
+丞>'[assist]';
+両>'[two]';
+並>'[equal to]';
+个>'[numerary adjunct]';
+中>'[central]';
+丱>'[child''s hairstyle bound in two tufts]';
+串>'[string]';
+丶>'[dot]';
+丸>'[small round object]';
+丹>'[cinnabar (native HgS)]';
+主>'[master]';
+丼>'[bowl of food]';
+丿>'[line]';
+乂>'[govern]';
+乃>'[then]';
+久>'[long time (ago)]';
+之>'[''s (marks preceding phrase as modifier of following phrase)]';
+乍>'[suddenly]';
+乎>'[interrogative or exclamatory final particle]';
+乏>'[lack]';
+乕>'[tiger]';
+乖>'[rebel]';
+乗>'[ride]';
+乘>'[ride]';
+乙>'[second heaven''s stem]';
+九>'[nine]';
+乞>'[beg]';
+也>'[also]';
+乢>'[lid]';
+乱>'[confusion]';
+乳>'[breast]';
+乾>'[dry]';
+亀>'[turtle or tortoise]';
+亂>'[confusion]';
+亅>'[hook]';
+了>'[to finish]';
+予>'[I]';
+争>'[dispute]';
+亊>'[affair]';
+事>'[affair]';
+二>'[two]';
+于>'[in]';
+云>'[say]';
+互>'[mutually]';
+五>'[five]';
+井>'[well]';
+亘>'[extend across]';
+亙>'[extend across]';
+些>'[little]';
+亜>'[asia]';
+亞>'[asia]';
+亟>'[urgently]';
+亠>'[head]';
+亡>'[death]';
+亢>'[high]';
+交>'[mix]';
+亥>'[last of 12 earth branches]';
+亦>'[also]';
+亨>'[smoothly]';
+享>'[enjoy]';
+京>'[capital city]';
+亭>'[pavilion]';
+亮>'[bright]';
+亰>'[capital city]';
+亳>'[name of district in Anhui]';
+亶>'[sincere]';
+人>'[man]';
+什>'[file of ten soldiers]';
+仁>'[humaneness]';
+仂>'[surplus or excess]';
+仄>'[slanting]';
+仆>'[fall forward]';
+仇>'[enemy]';
+今>'[now]';
+介>'[forerunner]';
+仍>'[yet]';
+从>'[from]';
+仏>'[buddha]';
+仔>'[small thing]';
+仕>'[official]';
+他>'[other]';
+仗>'[rely upon]';
+付>'[give]';
+仙>'[Taoist super-being]';
+仝>'[together]';
+仞>'[ancient unit of measure (8 feet)]';
+仟>'[one thousand]';
+代>'[replace]';
+令>'[command]';
+以>'[by means of]';
+仭>'[ancient unit of measure (8 feet)]';
+仮>'[falsehood]';
+仰>'[raise the head to look]';
+仲>'[middle brother]';
+件>'[numerary adjunct for article]';
+价>'[price]';
+任>'[trust to]';
+企>'[plan a project]';
+伉>'[compare]';
+伊>'[third person pronoun]';
+伍>'[five]';
+伎>'[talent]';
+伏>'[crouch]';
+伐>'[cut down]';
+休>'[rest]';
+会>'[assemble]';
+伜>'[deputy]';
+伝>'[summon]';
+伯>'[older brother]';
+估>'[merchant]';
+伴>'[companion]';
+伶>'[lonely]';
+伸>'[extend]';
+伺>'[serve]';
+似>'[resemble]';
+伽>'[transcription of sanskrit gha in buddhist texts ('ëmâæ' \"samgha\")]';
+佃>'[tenant farmer]';
+但>'[only]';
+佇>'[wait]';
+位>'[throne]';
+低>'[low]';
+住>'[reside]';
+佐>'[assist]';
+佑>'[help]';
+体>'[body]';
+何>'[what]';
+佗>'[other]';
+余>'[I]';
+佚>'[indulge in pleasures]';
+佛>'[buddha (contraction of MC 'bhiêtdha')]';
+作>'[make]';
+佝>'[rickets]';
+佞>'[flattery]';
+佩>'[belt ornament]';
+佯>'[pretend]';
+佰>'[hundred]';
+佳>'[good]';
+併>'[combine]';
+佶>'[strong]';
+佻>'[frivolous]';
+佼>'[beautiful]';
+使>'[cause]';
+侃>'[upright and strong]';
+來>'[come]';
+侈>'[luxurious]';
+例>'[precedent]';
+侍>'[serve]';
+侏>'[small]';
+侑>'[help]';
+侖>'[logical reasons]';
+侘>'[disappointed]';
+供>'[supply]';
+依>'[rely on]';
+侠>'[chivalrous person]';
+価>'[price]';
+侫>'[flattery]';
+侭>'[complete]';
+侮>'[insult]';
+侯>'[marquis]';
+侵>'[invade]';
+侶>'[companion]';
+便>'[convenience]';
+係>'[bind]';
+促>'[urge]';
+俄>'[sudden(ly)]';
+俊>'[talented]';
+俎>'[chopping board or block]';
+俐>'[smooth]';
+俑>'[wooden figure buried with dead]';
+俔>'[like]';
+俗>'[social customs]';
+俘>'[prisoner of war]';
+俚>'[rustic]';
+俛>'[make effort]';
+保>'[protect]';
+俟>'[wait for]';
+信>'[trust]';
+俣>'[big]';
+#"俣>'[big]'",
+俥>'[rickshaw]';
+修>'[study]';
+俯>'[bow down]';
+俳>'[actor]';
+俵>'[divide]';
+俶>'[start]';
+俸>'[wages]';
+俺>'[personal pronoun]';
+俾>'[so that]';
+倅>'[deputy]';
+倆>'[clever]';
+倉>'[granary]';
+個>'[numerary adjunct]';
+倍>'[times]';
+倏>'[hastily]';
+們>'[adjunct pronoun indicate plural]';
+倒>'[fall over]';
+倔>'[stubborn]';
+倖>'[lucky]';
+候>'[wait]';
+倚>'[rely on]';
+借>'[borrow]';
+倡>'[guide]';
+倣>'[imitate]';
+値>'[price]';
+倥>'[boorish]';
+倦>'[be tired of]';
+倨>'[arrogant]';
+倩>'[beautiful]';
+倪>'[feeble]';
+倫>'[normal human relationships]';
+倬>'[noticeable]';
+倭>'[dwarf]';
+倶>'[all]';
+倹>'[temperate]';
+偃>'[cease]';
+假>'[falsehood]';
+偈>'[brave]';
+偉>'[great]';
+偏>'[inclined one side]';
+偐>'[false]';
+偕>'[together]';
+偖>'[rip up]';
+做>'[work]';
+停>'[stop]';
+健>'[strong]';
+偬>'[urgent]';
+偲>'[talented]';
+側>'[side]';
+偵>'[spy]';
+偶>'[accidentally]';
+偸>'[to steal]';
+偽>'[false]';
+傀>'[great]';
+傅>'[tutor]';
+傍>'[by side of]';
+傑>'[hero]';
+傘>'[umbrella]';
+備>'[prepare]';
+傚>'[imitate]';
+催>'[press]';
+傭>'[hire]';
+傲>'[proud]';
+傳>'[summon]';
+傴>'[humpback]';
+債>'[debt]';
+傷>'[wound]';
+傾>'[upset]';
+僂>'[humpback]';
+僅>'[only]';
+僉>'[all]';
+僊>'[Taoist super-being]';
+働>'[labor]';
+像>'[picture]';
+僑>'[sojourn]';
+僕>'[slave]';
+僖>'[joy]';
+僚>'[companion]';
+僞>'[false]';
+僣>'[assume]';
+僥>'[be lucky]';
+僧>'[buddhist priest]';
+僭>'[assume]';
+僮>'[page]';
+僵>'[stiff and motionless]';
+價>'[price]';
+僻>'[out-of-the-way]';
+儀>'[ceremony]';
+儁>'[outstanding]';
+儂>'[I]';
+億>'[hundred million]';
+儉>'[temperate]';
+儒>'[confucian scholar]';
+儔>'[companion]';
+儕>'[a company]';
+#"儕>'[a company]'",
+儘>'[utmost]';
+#"儘>'[utmost]'",
+償>'[repay]';
+儡>'[puppet]';
+優>'[superior]';
+儲>'[save money]';
+儷>'[spouse]';
+儺>'[rich]';
+儻>'[if]';
+儼>'[grave]';
+儿>'[son]';
+兀>'[to cut off the feet]';
+允>'[to grant]';
+元>'[first]';
+兄>'[elder brother]';
+充>'[fill]';
+兆>'[omen]';
+兇>'[atrocious]';
+先>'[first]';
+光>'[light]';
+克>'[gram]';
+兌>'[cash]';
+免>'[spare]';
+兎>'[rabbit]';
+児>'[son]';
+兒>'[son]';
+兔>'[rabbit]';
+党>'[political party]';
+兜>'[pouch]';
+兢>'[fearful]';
+入>'[enter]';
+全>'[maintain]';
+兩>'[two]';
+兪>'[surname]';
+八>'[eight]';
+公>'[fair]';
+六>'[number six]';
+兮>'[exclamatory particle]';
+共>'[together with]';
+兵>'[soldier]';
+其>'[his]';
+具>'[tool]';
+典>'[law]';
+兼>'[unite]';
+冀>'[hope for]';
+冂>'[wide]';
+内>'[inside]';
+円>'[yen]';
+冉>'[tender]';
+冊>'[book]';
+册>'[book]';
+再>'[again]';
+冏>'[[not found in dictionary]]';
+冐>'[risk]';
+冑>'[helmet]';
+冒>'[risk]';
+冓>'[a secluded place]';
+冕>'[crown]';
+冖>'[cover]';
+冗>'[excessive]';
+写>'[write]';
+冠>'[cap]';
+冢>'[burial mound]';
+冤>'[grievance]';
+冥>'[dark]';
+冦>'[bandits]';
+冨>'[abundant]';
+冩>'[write]';
+冪>'[cover-cloth]';
+冫>'[ice]';
+冬>'[winter]';
+冰>'[ice]';
+冱>'[freezing]';
+冲>'[soar]';
+决>'[decide]';
+冴>'[freezing]';
+况>'[condition]';
+冶>'[smelt]';
+冷>'[cold]';
+冽>'[cold and raw]';
+凄>'[bitter cold]';
+凅>'[dried up]';
+准>'[approve]';
+凉>'[cool]';
+凋>'[be withered]';
+凌>'[pure]';
+凍>'[freeze]';
+凖>'[rule]';
+凛>'[to shiver with cold or fear]';
+凜>'[shiver with cold or fear]';
+凝>'[coagulate]';
+几>'[small table]';
+凡>'[all]';
+処>'[place]';
+凧>'[kite]';
+凩>'[wintry wind]';
+凪>'[calm]';
+凭>'[lean on]';
+凰>'[female phoenix]';
+凱>'[triumphant]';
+凵>'[receptacle]';
+凶>'[culprit]';
+凸>'[protrude]';
+凹>'[concave]';
+出>'[go out]';
+函>'[correspondence]';
+凾>'[correspondence]';
+刀>'[knife]';
+刃>'[edged tool]';
+刄>'[edged tool]';
+分>'[divide]';
+切>'[cut]';
+刈>'[cut off]';
+刊>'[publication]';
+刋>'[publication]';
+刎>'[behead]';
+刑>'[punishment]';
+刔>'[scoop out]';
+列>'[line]';
+初>'[beginning]';
+判>'[judge]';
+別>'[separate]';
+刧>'[disaster]';
+利>'[gains]';
+刪>'[to cut]';
+刮>'[shave]';
+到>'[go to]';
+刳>'[cut out]';
+制>'[system]';
+刷>'[brush]';
+券>'[certificate]';
+刹>'[temple]';
+刺>'[stab]';
+刻>'[carve]';
+剃>'[shave]';
+剄>'[cut throat]';
+則>'[rule]';
+削>'[scrape off]';
+剋>'[subdue]';
+剌>'[slash]';
+前>'[in front]';
+剏>'[establish]';
+剔>'[pick out]';
+剖>'[split in two]';
+剛>'[hard]';
+剞>'[carving or engraving knife]';
+剣>'[sword]';
+剤>'[medicinal preparation]';
+剥>'[peel]';
+剩>'[leftovers]';
+剪>'[scissors]';
+副>'[assist]';
+剰>'[leftovers]';
+剱>'[sword]';
+割>'[cut]';
+剳>'[brief note]';
+剴>'[sharpen]';
+創>'[establish]';
+剽>'[rob]';
+剿>'[destroy]';
+劃>'[divide]';
+劇>'[theatrical plays]';
+劈>'[cut apart]';
+劉>'[surname]';
+劍>'[sword]';
+劑>'[medicinal preparation]';
+劒>'[sword]';
+劔>'[sword]';
+力>'[power]';
+功>'[achievement]';
+加>'[add to]';
+劣>'[bad]';
+助>'[help]';
+努>'[exert]';
+劫>'[take by force]';
+劬>'[be diligent]';
+劭>'[encourage]';
+励>'[strive]';
+労>'[labor]';
+劵>'[certificate]';
+効>'[efficacious]';
+劼>'[be discreet]';
+劾>'[examine into]';
+勁>'[strong]';
+勃>'[suddenly]';
+勅>'[imperial degree]';
+勇>'[brave]';
+勉>'[endeavor]';
+勍>'[strong]';
+勒>'[strangle]';
+動>'[move]';
+勗>'[enjoin]';
+勘>'[investigate]';
+務>'[affairs]';
+勝>'[victory]';
+勞>'[labor]';
+募>'[levy]';
+勠>'[join forces]';
+勢>'[power]';
+勣>'[achievements]';
+勤>'[industrious]';
+勦>'[destroy]';
+勧>'[recommend]';
+勲>'[meritorious deed]';
+勳>'[meritorious deed]';
+勵>'[strive]';
+勸>'[recommend]';
+勹>'[wrap]';
+勺>'[spoon]';
+勾>'[hook]';
+勿>'[must not]';
+匁>'[Japanese unit of weight (1/1000 of a kan)]';
+匂>'[fragrance]';
+包>'[wrap]';
+匆>'[hastily]';
+匈>'[breast]';
+匍>'[crawl]';
+匏>'[gourd]';
+匐>'[fall prostrate]';
+匕>'[spoon]';
+化>'[change]';
+北>'[north]';
+匙>'[spoon]';
+匚>'[box]';
+匝>'[full circle]';
+匠>'[craftsman]';
+匡>'[correct]';
+匣>'[small box]';
+匪>'[bandits]';
+匯>'[concourse]';
+匱>'[to lack]';
+匳>'[ladies toilet case with mirror]';
+匸>'[box]';
+匹>'[bolt of cloth]';
+区>'[area]';
+医>'[cure]';
+匿>'[hide]';
+區>'[area]';
+十>'[ten]';
+千>'[thousand]';
+卅>'[thirty]';
+卆>'[soldier]';
+升>'[arise]';
+午>'[noon]';
+卉>'[general term for plants]';
+半>'[half]';
+卍>'[swastika - fourth of auspicious]';
+卑>'[humble]';
+卒>'[soldier]';
+卓>'[profound]';
+協>'[be united]';
+南>'[south]';
+#"南>'[south]'",
+博>'[gamble]';
+卜>'[fortune telling]';
+卞>'[be impatient]';
+占>'[divine]';
+卦>'[fortune telling]';
+卩>'[seal]';
+卮>'[measuring cup]';
+卯>'[4th of Earth Branches]';
+印>'[print]';
+危>'[dangerous]';
+即>'[promptly]';
+却>'[still]';
+卵>'[egg]';
+卷>'[scroll]';
+卸>'[lay down]';
+卻>'[still]';
+卿>'[noble]';
+厂>'[factory]';
+厄>'[adversity]';
+厖>'[bulky]';
+厘>'[thousandth part of tael]';
+厚>'[thick]';
+原>'[source]';
+厠>'[mingle with]';
+厥>'[personal pronoun - he]';
+厦>'[big building]';
+厨>'[kitchen]';
+厩>'[stable]';
+厭>'[dislike]';
+厮>'[servant]';
+厰>'[factory]';
+厳>'[strict]';
+厶>'[private]';
+去>'[go away]';
+参>'[take part in]';
+參>'[take part in]';
+又>'[and]';
+叉>'[crotch]';
+及>'[extend]';
+友>'[friend]';
+双>'[set of two]';
+反>'[reverse]';
+収>'[gather together]';
+叔>'[father''s younger brother]';
+取>'[take]';
+受>'[receive]';
+叙>'[express]';
+叛>'[rebel]';
+叟>'[old man]';
+叡>'[astute]';
+叢>'[bush]';
+口>'[mouth]';
+古>'[old]';
+句>'[sentence]';
+叨>'[talkative]';
+叩>'[knock]';
+只>'[only]';
+叫>'[cry]';
+召>'[imperial decree]';
+叭>'[trumpet]';
+叮>'[exhort or enjoin repeatedly]';
+可>'[may]';
+台>'[platform]';
+叱>'[scold]';
+史>'[history]';
+右>'[right]';
+叶>'[to harmonize]';
+号>'[mark]';
+司>'[take charge of]';
+#"叹>'[sigh]'",
+吁>'[interjection \"Alas!\"]';
+吃>'[eat]';
+各>'[each]';
+合>'[combine]';
+吉>'[lucky]';
+吊>'[condole]';
+吋>'[inch]';
+同>'[same]';
+名>'[name]';
+后>'[queen]';
+吏>'[government official]';
+吐>'[vomit]';
+向>'[toward]';
+君>'[sovereign]';
+吝>'[stingy]';
+吟>'[sing]';
+吠>'[bark]';
+否>'[not]';
+吩>'[order]';
+含>'[hold in mouth]';
+听>'[hear]';
+吭>'[throat]';
+吮>'[suck with mouth]';
+吶>'[raise voice]';
+吸>'[inhale]';
+吹>'[blow]';
+吻>'[kiss]';
+吼>'[roar]';
+吽>'[\"OM\"]';
+吾>'[i]';
+呀>'[particle used express surprise]';
+呂>'[surname]';
+呆>'[dull]';
+呈>'[submit]';
+呉>'[one of warring states]';
+告>'[tell]';
+呎>'[foot]';
+呑>'[swallow]';
+#"呜>'[sound of crying]'",
+周>'[zhou dynasty]';
+呪>'[curse]';
+#"呰>'[................................]'",
+呱>'[wail]';
+味>'[taste]';
+呵>'[scold]';
+呶>'[talkative]';
+呷>'[suck]';
+呻>'[groan]';
+呼>'[breathe sigh]';
+命>'[life]';
+咀>'[suck]';
+咄>'[noise of rage]';
+咆>'[roar]';
+咋>'[why? how? what?]';
+和>'[harmony]';
+咎>'[fault]';
+咏>'[sing song or poem]';
+咐>'[instruct]';
+咒>'[curse]';
+咢>'[sound]';
+咤>'[scold]';
+咥>'[sound of cat]';
+咨>'[inquire]';
+咫>'[foot measure of Zhou dynasty]';
+咬>'[bite]';
+咯>'[final particle]';
+咲>'[smile]';
+咳>'[cough]';
+咸>'[together]';
+咼>'[chat]';
+咽>'[throat]';
+咾>'[a noise]';
+哀>'[sad]';
+品>'[article]';
+哂>'[smile]';
+哄>'[coax]';
+哇>'[vomit]';
+哈>'[sound of laughter]';
+哉>'[final exclamatory particle]';
+#"哗>'[rushing sound]'",
+員>'[member]';
+哢>'[syllable]';
+哥>'[elder brother]';
+哦>'[oh? really? is that so?]';
+哨>'[whistle]';
+哩>'[mile]';
+哭>'[weep]';
+哮>'[cough]';
+哲>'[wise]';
+哺>'[chew food]';
+哽>'[choke]';
+唄>'[final particle of assertion pathaka]';
+唆>'[make mischief]';
+唇>'[lips]';
+唏>'[weep or sob]';
+唐>'[tang dynasty]';
+唔>'[hold in mouth]';
+唖>'[dumb]';
+售>'[sell]';
+唯>'[only]';
+唱>'[sing]';
+唳>'[cry of bird]';
+唸>'[recite]';
+唹>'[to smile at]';
+唾>'[spit]';
+啀>'[gnaw]';
+啄>'[to peck]';
+#"啄>'[to peck]'",
+商>'[commerce]';
+啌>'[animal disease]';
+問>'[ask (about)]';
+啓>'[open]';
+啖>'[eat]';
+啗>'[eat]';
+啜>'[sip]';
+#"啜>'[sip]'",
+啣>'[hold in mouth]';
+啻>'[only]';
+啼>'[weep]';
+啾>'[wailing of child]';
+喀>'[vomit]';
+喃>'[keep talking]';
+善>'[good]';
+喇>'[horn]';
+喉>'[throat]';
+喊>'[shout]';
+喋>'[nag]';
+喘>'[pant]';
+喙>'[beak]';
+喚>'[call]';
+喜>'[like]';
+喝>'[drink]';
+喞>'[chirping of insects]';
+喟>'[heave sigh]';
+喧>'[lively]';
+喨>'[wail]';
+喩>'[metaphor]';
+喪>'[mourning]';
+喫>'[eat]';
+喬>'[tall]';
+單>'[single]';
+喰>'[to eat]';
+営>'[encampment]';
+嗄>'[hoarse of voice]';
+嗅>'[smell]';
+嗇>'[miserly]';
+嗔>'[be angry at]';
+嗚>'[sound of crying]';
+嗜>'[be fond of]';
+嗟>'[sigh]';
+嗣>'[to connect]';
+嗤>'[laugh at]';
+嗷>'[loud clamor]';
+嗹>'[chatter]';
+嗽>'[cough]';
+嗾>'[to set a dog on]';
+嘆>'[sigh]';
+嘉>'[excellent]';
+嘔>'[vomit]';
+嘖>'[interjection of approval or admi]';
+嘗>'[taste]';
+嘘>'[exhale]';
+嘛>'[final exclamatory particle]';
+嘩>'[rushing sound]';
+嘯>'[roar]';
+嘱>'[order]';
+嘲>'[ridicule]';
+嘴>'[mouth]';
+嘶>'[neighing of a horse]';
+嘸>'[unclear]';
+噂>'[meet]';
+噌>'[scold]';
+噎>'[choke]';
+噐>'[receptacle]';
+噛>'[bite]';
+噤>'[close]';
+器>'[receptacle]';
+噪>'[be noisy]';
+噫>'[belch]';
+噬>'[bite]';
+噴>'[spurt]';
+噸>'[metric ton]';
+噺>'[story]';
+嚀>'[enjoin]';
+嚆>'[give forth sound]';
+嚇>'[scare]';
+嚊>'[to pant]';
+嚏>'[sneeze]';
+嚔>'[sneeze]';
+#"嚜>'[be silent]'",
+嚢>'[bag]';
+嚥>'[swallow]';
+嚮>'[guide]';
+嚴>'[strict]';
+嚶>'[seek friends]';
+嚼>'[prattle]';
+囀>'[sing]';
+囁>'[move lip when speaking]';
+囂>'[be noisy]';
+#"囂>'[be noisy]'",
+囈>'[talk in one''s sleep]';
+#"囍>'[double happiness]'",
+囑>'[order]';
+囓>'[gnaw]';
+囗>'[erect]';
+囘>'[return]';
+囚>'[prisoner]';
+四>'[four]';
+回>'[return]';
+因>'[cause]';
+団>'[sphere]';
+囮>'[inveigle]';
+困>'[surround]';
+囲>'[surround]';
+図>'[diagram]';
+囹>'[prison]';
+固>'[become solid]';
+国>'[nation]';
+囿>'[pen up]';
+圀>'[nation]';
+圃>'[garden]';
+圄>'[prison]';
+圈>'[to circle]';
+圉>'[stable]';
+國>'[nation]';
+圍>'[surround]';
+圏>'[to circle]';
+園>'[garden]';
+圓>'[circle]';
+圖>'[diagram]';
+團>'[sphere]';
+圜>'[circle]';
+土>'[soil]';
+圦>'[(kokuji) water gate]';
+#"圦>'[(kokuji) water gate]'",
+在>'[be at]';
+圭>'[jade pointed at top]';
+地>'[earth]';
+#"圳>'[furrow in field]'",
+#"圳>'[furrow in field]'",
+圻>'[border]';
+址>'[site]';
+坂>'[hillside]';
+均>'[equal]';
+坊>'[neighborhood]';
+坎>'[pit]';
+坏>'[rotten]';
+坐>'[sit]';
+坑>'[pit]';
+坡>'[slope]';
+坤>'[earth]';
+坦>'[flat]';
+坩>'[earthenware]';
+坪>'[level ground]';
+坿>'[mound]';
+垂>'[let down]';
+#"垆>'[black clods of earth]'",
+#"垉>'[................................]'",
+型>'[pattern]';
+垓>'[border]';
+垠>'[boundary]';
+垢>'[dirt]';
+垣>'[low wall]';
+垤>'[ant-hill]';
+#"垩>'[holy]'",
+#"垮>'[be defeated]'",
+#"垲>'[high and dry place]'",
+埀>'[let down]';
+埃>'[fine dust]';
+埆>'[stony]';
+埋>'[bury]';
+城>'[castle]';
+埒>'[enclosure]';
+埓>'[enclosure]';
+埔>'[plain]';
+#"埔>'[plain]'",
+埜>'[open country]';
+域>'[district]';
+埠>'[port city]';
+#"埣>'[................................]'",
+埴>'[soil with large clay content]';
+執>'[hold in hand]';
+培>'[bank up with dirt]';
+基>'[foundation]';
+埼>'[headland]';
+堀>'[cave]';
+堂>'[hall]';
+堅>'[hard]';
+堆>'[heap]';
+堊>'[white earth]';
+堋>'[bury]';
+堕>'[fall]';
+堙>'[bury]';
+堝>'[crucible]';
+堡>'[fort]';
+堤>'[dike]';
+堪>'[adequately capable of]';
+堯>'[a legendary ancient emperor-sage]';
+堰>'[dam]';
+報>'[report]';
+場>'[open space]';
+堵>'[wall]';
+堺>'[person''s name]';
+堽>'[mound]';
+塀>'[wall]';
+塁>'[rampart]';
+塊>'[piece]';
+塋>'[grave]';
+塑>'[model in clay]';
+塒>'[roost]';
+塔>'[tower]';
+塗>'[smear]';
+塘>'[pond]';
+塙>'[truly]';
+塚>'[cemetery]';
+塞>'[stop up]';
+塢>'[entrenchment]';
+塩>'[salt]';
+填>'[fill in]';
+#"塭>'[[not found in any dictionary]]'",
+塲>'[open space]';
+塵>'[dust]';
+塹>'[moat]';
+塾>'[village school]';
+境>'[boundery]';
+墅>'[villa]';
+墓>'[grave]';
+増>'[increase]';
+墜>'[fall down]';
+墟>'[high mound]';
+墨>'[ink]';
+墫>'[cup]';
+墮>'[fall]';
+墳>'[grave]';
+#"墳>'[grave]'",
+#"墳>'[grave]'",
+墺>'[4 walls]';
+墻>'[wall]';
+墾>'[cultivate]';
+壁>'[partition wall]';
+壅>'[to obstruct]';
+壇>'[altar]';
+壊>'[bad]';
+壌>'[soil]';
+壑>'[bed of torrent]';
+壓>'[press]';
+壕>'[trench]';
+#"壖>'[open space along water]'",
+壘>'[rampart]';
+壙>'[tomb]';
+壜>'[earthen jar or jug]';
+壞>'[bad]';
+壟>'[grave]';
+壤>'[soil]';
+#"壥>'[................................]'",
+士>'[scholar]';
+壬>'[ninth of ten celestial stems]';
+壮>'[big]';
+壯>'[big]';
+声>'[sound]';
+壱>'[number one]';
+売>'[sell]';
+壷>'[jar]';
+壹>'[number one]';
+壺>'[jar]';
+壻>'[son-in-law]';
+壼>'[palace corridor or passageway]';
+壽>'[old age]';
+夂>'[go]';
+変>'[change]';
+夊>'[Radical No. 35]';
+夏>'[summer]';
+夐>'[long]';
+夕>'[evening]';
+外>'[out]';
+夘>'[4th of Earth Branches]';
+夙>'[early in morning]';
+多>'[much]';
+夛>'[much]';
+夜>'[night]';
+夢>'[dream]';
+夥>'[companion]';
+大>'[big]';
+天>'[sky]';
+太>'[very]';
+夫>'[man]';
+夬>'[parted]';
+夭>'[young]';
+央>'[center]';
+失>'[lose]';
+夲>'[advance quickly]';
+夷>'[ancient barbarian tribes]';
+夸>'[extravagant]';
+夾>'[be wedged or inserted between]';
+奄>'[ere long]';
+奇>'[strange]';
+奈>'[but]';
+奉>'[offer]';
+奎>'[stride of man]';
+奏>'[memorialize emperor]';
+奐>'[be numerous]';
+契>'[deed]';
+奔>'[run fast]';
+奕>'[in sequence]';
+套>'[case]';
+奘>'[large]';
+奚>'[where? what? how? why?]';
+奠>'[pay respect]';
+奢>'[extravagant]';
+奥>'[mysterious]';
+奧>'[mysterious]';
+奨>'[prize]';
+奩>'[lady''s vanity case]';
+奪>'[take by force]';
+奬>'[prize]';
+奮>'[strive]';
+女>'[woman]';
+奴>'[slave]';
+奸>'[crafty]';
+好>'[good]';
+妁>'[act as go-between]';
+如>'[if]';
+妃>'[wife]';
+妄>'[absurd]';
+妊>'[conceive]';
+妍>'[beautiful]';
+妓>'[prostitute]';
+妖>'[strange]';
+妙>'[mysterious]';
+#"妙>'[mysterious]'",
+妝>'[adorn oneself]';
+妣>'[one''s deceased mother]';
+妥>'[satisfactory]';
+妨>'[interfere with]';
+妬>'[jealous]';
+妲>'[concubine of last ruler of shang]';
+妹>'[younger sister]';
+妻>'[wife]';
+妾>'[concubine]';
+姆>'[child''s governess]';
+姉>'[elder sister]';
+始>'[begin]';
+姐>'[elder sister]';
+姑>'[father''s sister]';
+姓>'[one''s family name]';
+委>'[appoint]';
+姙>'[conceive]';
+姚>'[handsome]';
+姜>'[surname]';
+姥>'[maternal grandmother]';
+姦>'[adultery]';
+姨>'[mother/wife''s sister]';
+姪>'[niece]';
+姫>'[beauty]';
+#"姱>'[beautiful]'",
+姻>'[relatives by marriage]';
+姿>'[one''s manner]';
+威>'[pomp]';
+娃>'[baby]';
+娉>'[beautiful]';
+娑>'[dance]';
+娘>'[mother]';
+#"娚>'[................................]'",
+娜>'[elegant]';
+娟>'[beautiful]';
+娠>'[pregnant]';
+娥>'[be beautiful]';
+娩>'[give birth child]';
+娯>'[pleasure]';
+娵>'[star]';
+娶>'[marry]';
+娼>'[prostitute]';
+婀>'[be beautiful]';
+婁>'[surname]';
+婆>'[old woman]';
+婉>'[amiable]';
+婚>'[get married]';
+婢>'[servant girl]';
+婦>'[married women]';
+婪>'[covet]';
+婬>'[obscene]';
+婿>'[son-in-law]';
+媒>'[go-between]';
+媚>'[charming]';
+媛>'[beauty]';
+媼>'[old woman]';
+媽>'[mother]';
+媾>'[marry]';
+嫁>'[marry]';
+嫂>'[sister-in-law]';
+嫉>'[jealousy]';
+嫋>'[slender and delicate]';
+嫌>'[hate]';
+嫐>'[frolic]';
+嫖>'[patronize prostitutes]';
+嫗>'[old woman]';
+嫡>'[legal wife]';
+嫣>'[charming]';
+嫦>'[name of a moon goddess]';
+嫩>'[soft]';
+嫺>'[refined]';
+嫻>'[elegant]';
+嬉>'[enjoy]';
+嬋>'[beautiful]';
+嬌>'[seductive and loveable]';
+嬖>'[favorite]';
+嬢>'[troubled]';
+嬪>'[court lady]';
+嬬>'[mistress]';
+嬰>'[baby]';
+嬲>'[frolic]';
+#"嬴>'[to win]'",
+嬾>'[lazy]';
+孀>'[widow]';
+孃>'[troubled]';
+孅>'[slender]';
+子>'[offspring]';
+孑>'[remaining]';
+孔>'[opening]';
+孕>'[be pregnant]';
+字>'[letter]';
+存>'[exist]';
+孚>'[brood over eggs]';
+孛>'[comet]';
+孜>'[be as diligent as possible]';
+孝>'[filial piety]';
+孟>'[first in series]';
+季>'[quarter of year]';
+孤>'[orphan]';
+孥>'[one''s children]';
+学>'[learning]';
+孩>'[baby]';
+孫>'[grandchild]';
+孰>'[who? which? what? which one?]';
+孱>'[weak]';
+孳>'[breed in large numbers]';
+孵>'[sit on eggs]';
+學>'[learning]';
+孺>'[child]';
+宀>'[roof]';
+它>'[it]';
+宅>'[residence]';
+宇>'[house]';
+守>'[defend]';
+安>'[peaceful]';
+宋>'[Song dynasty]';
+完>'[complete]';
+宍>'[flesh]';
+宏>'[wide]';
+宕>'[stone quarry]';
+宗>'[lineage]';
+官>'[official]';
+宙>'[time as concept]';
+定>'[decide]';
+宛>'[seem]';
+宜>'[suitable]';
+宝>'[treasure]';
+実>'[real]';
+客>'[guest]';
+宣>'[declare]';
+室>'[room]';
+宥>'[forgive]';
+宦>'[officialdom]';
+宮>'[palace]';
+宰>'[to slaughter]';
+害>'[injure]';
+宴>'[entertain]';
+宵>'[night]';
+家>'[house]';
+宸>'[imperial]';
+容>'[looks]';
+宿>'[stop]';
+寂>'[still]';
+寃>'[grievance]';
+寄>'[send]';
+寅>'[respect]';
+密>'[dense]';
+寇>'[bandits]';
+#"寉>'[................................]'",
+富>'[abundant]';
+寐>'[sleep]';
+寒>'[cold]';
+寓>'[residence]';
+寔>'[real]';
+寛>'[broad]';
+寝>'[sleep]';
+寞>'[silent]';
+察>'[examine]';
+寡>'[widowed]';
+寢>'[sleep]';
+寤>'[few]';
+寥>'[few]';
+實>'[real]';
+寧>'[repose]';
+寨>'[stockade]';
+審>'[examine]';
+寫>'[write]';
+寮>'[shanty]';
+寰>'[great domain]';
+寳>'[treasure]';
+寵>'[favorite]';
+寶>'[treasure]';
+寸>'[inch]';
+寺>'[court]';
+対>'[correct]';
+寿>'[old age]';
+封>'[letter]';
+専>'[monopolize]';
+射>'[shoot]';
+尅>'[subdue]';
+将>'[will]';
+將>'[will]';
+專>'[monopolize]';
+尉>'[officer]';
+尊>'[respect]';
+尋>'[seek]';
+對>'[correct]';
+導>'[direct]';
+小>'[small]';
+少>'[few]';
+尓>'[you]';
+尖>'[sharp]';
+尚>'[still]';
+尠>'[very few]';
+尢>'[weak]';
+尤>'[especially]';
+尨>'[shaggy haired dog]';
+尭>'[a legendary ancient emperor-sage]';
+就>'[just]';
+尸>'[corpse]';
+尹>'[govern]';
+尺>'[chinese measure approx. \"foot\"]';
+尻>'[end of spine]';
+尼>'[buddhist nun]';
+尽>'[exhaust]';
+尾>'[tail]';
+尿>'[urine]';
+局>'[bureau]';
+屁>'[break wind]';
+居>'[live]';
+屆>'[numerary adjunct for time]';
+屈>'[bend]';
+届>'[numerary adjunct for time]';
+屋>'[house]';
+屍>'[corpse]';
+屎>'[excrement]';
+屏>'[folding screen]';
+屐>'[wooden shoes]';
+屑>'[bits]';
+屓>'[gigantic strength]';
+展>'[open]';
+属>'[class]';
+屠>'[butcher]';
+屡>'[frequently]';
+層>'[storey]';
+履>'[footwear]';
+屬>'[class]';
+屮>'[sprout]';
+屯>'[village]';
+山>'[mountain]';
+屶>'[lofty]';
+屹>'[to rise high]';
+岌>'[perilous]';
+岐>'[high]';
+岑>'[steep]';
+岔>'[diverge]';
+岡>'[ridge or crest of hill]';
+岨>'[uneven]';
+岩>'[cliff]';
+岫>'[mountain peak]';
+岬>'[cape]';
+岱>'[daishan one of five sacred mount]';
+岳>'[mountain peak]';
+#"岶>'[................................]'",
+岷>'[min mountain]';
+岸>'[bank]';
+#"岺>'[mountain ridge]'",
+#"岺>'[mountain ridge]'",
+岾>'[mountain pass (korean)]';
+#"峄>'[range of peaks]'",
+峇>'[cave]';
+峙>'[stand erect]';
+峠>'[mountain pass]';
+峡>'[gorge]';
+峨>'[lofty]';
+峩>'[lofty]';
+峪>'[valley]';
+峭>'[steep]';
+峯>'[peak]';
+峰>'[peak]';
+島>'[island]';
+#"峺>'[................................]'",
+峻>'[high]';
+峽>'[gorge]';
+崇>'[esteem]';
+崋>'[flowery]';
+崎>'[rough]';
+崑>'[Kunlun mountains in Jiang Su province.]';
+崔>'[high]';
+崕>'[cliff]';
+崖>'[cliff]';
+崗>'[post]';
+崘>'[kunlun mountains in jiangsu]';
+崙>'[kunlun mountains in jiangsu]';
+崚>'[hilly]';
+崛>'[towering]';
+崟>'[cliffs]';
+崢>'[high]';
+崩>'[rupture]';
+嵋>'[omei mountain in sichuan]';
+嵌>'[inlay]';
+嵎>'[mountain recess]';
+嵐>'[mountain mist]';
+嵒>'[cliff]';
+嵜>'[rough]';
+嵩>'[high]';
+嵬>'[high]';
+嵯>'[high]';
+嵳>'[high]';
+嵶>'[low part of a mountain]';
+嶂>'[cliff]';
+嶄>'[high]';
+嶇>'[steep]';
+嶋>'[island]';
+嶌>'[island]';
+#"嶐>'[................................]'",
+嶝>'[path leading up a mountain]';
+嶢>'[high or tall]';
+#"嶬>'[................................]'",
+嶮>'[high]';
+嶷>'[range of mountains in hunan prov]';
+嶺>'[mountain ridge]';
+嶼>'[island]';
+嶽>'[mountain peak]';
+巉>'[steep]';
+巌>'[cliff]';
+巍>'[high]';
+巒>'[mountain range]';
+巓>'[summit of mountain]';
+巖>'[cliff]';
+巛>'[river]';
+川>'[stream]';
+州>'[administrative division]';
+巡>'[patrol]';
+巣>'[nest]';
+工>'[labor]';
+左>'[left]';
+巧>'[skillful]';
+巨>'[large]';
+巫>'[wizard]';
+差>'[differ]';
+己>'[self]';
+已>'[already]';
+巳>'[sixth of twelve branches]';
+巴>'[greatly desire]';
+巵>'[measuring cup]';
+巷>'[alley]';
+巻>'[scroll]';
+巽>'[5th of the 8 trigrams]';
+巾>'[kerchief]';
+市>'[market]';
+布>'[cotton cloth]';
+帆>'[sail]';
+帋>'[paper]';
+希>'[rare]';
+帑>'[a treasury]';
+帖>'[invitation card]';
+帙>'[book cover]';
+帚>'[broom]';
+帛>'[silks]';
+帝>'[supreme ruler]';
+帥>'[commander]';
+師>'[teacher]';
+席>'[seat]';
+帯>'[belt]';
+帰>'[return]';
+帳>'[tent]';
+帶>'[belt]';
+帷>'[tent]';
+常>'[common]';
+帽>'[hat]';
+幀>'[picture]';
+幃>'[curtain that forms wall]';
+幄>'[tent]';
+幅>'[piece]';
+幇>'[help]';
+幌>'[curtain]';
+幎>'[cover-cloth]';
+幔>'[curtain]';
+幕>'[curtain]';
+幗>'[women''s headgear]';
+幟>'[flag]';
+幡>'[pennant]';
+幢>'[carriage curtain]';
+幣>'[currency]';
+幤>'[evil]';
+干>'[oppose]';
+平>'[flat]';
+年>'[year]';
+幵>'[even level. to raise in both hands]';
+并>'[combine]';
+幸>'[luck(ily)]';
+幹>'[trunk of tree or of human body]';
+幺>'[one]';
+幻>'[illusion]';
+幼>'[infant]';
+幽>'[quiet]';
+幾>'[how many? how much? (a)few]';
+广>'[wide]';
+庁>'[hall]';
+広>'[broad]';
+庄>'[village]';
+庇>'[cover]';
+床>'[bed]';
+序>'[series]';
+底>'[bottom]';
+庖>'[kitchen]';
+店>'[shop]';
+庚>'[seventh of ten cyclical stems]';
+府>'[prefecture]';
+庠>'[village school]';
+度>'[degree]';
+座>'[seat]';
+庫>'[armory]';
+庭>'[courtyard]';
+庵>'[buddhist monastery or nunnery]';
+庶>'[numerous]';
+康>'[peaceful]';
+庸>'[usual]';
+廁>'[toilet]';
+廂>'[side-room]';
+廃>'[abrogate]';
+廈>'[big building]';
+廉>'[upright]';
+廊>'[corridor]';
+廏>'[stable]';
+廐>'[stable]';
+廓>'[broad]';
+廖>'[surname]';
+廚>'[kitchen]';
+廛>'[store]';
+廝>'[servant]';
+廟>'[temple]';
+廠>'[factory]';
+廡>'[corridor]';
+廢>'[abrogate]';
+廣>'[broad]';
+廨>'[government office]';
+廩>'[granary]';
+廬>'[hut]';
+廰>'[hall]';
+廱>'[harmonious]';
+廳>'[hall]';
+廴>'[go]';
+延>'[delay]';
+廷>'[court]';
+廸>'[enlighten]';
+建>'[build]';
+廻>'[circle around]';
+廼>'[then]';
+廾>'[two hands]';
+廿>'[twenty]';
+弁>'[conical cap worn under zhou dyna]';
+弃>'[reject]';
+弄>'[do]';
+弉>'[large]';
+弊>'[evil]';
+弋>'[catch]';
+弌>'[number one]';
+弍>'[number two]';
+式>'[style]';
+弐>'[number two]';
+弑>'[to kill one''s superior]';
+弓>'[bow]';
+弔>'[condole]';
+引>'[pull]';
+弖>'[phonetic for \"te\" (Japanese)]';
+弗>'[not]';
+弘>'[enlarge]';
+弛>'[loosen]';
+弟>'[young brother]';
+弥>'[extensive]';
+弦>'[string]';
+弧>'[wooden bow]';
+弩>'[cross-bow]';
+弭>'[stop]';
+弯>'[bend]';
+弱>'[weak]';
+張>'[stretch]';
+強>'[strong]';
+弸>'[bow stretched full]';
+弼>'[aid]';
+#"弼>'[aid]'",
+#"彁>'[................................]'",
+彈>'[pellet]';
+彊>'[stubborn]';
+彌>'[extensive]';
+彎>'[bend]';
+彑>'[snout]';
+当>'[bear]';
+彖>'[a hog]';
+彗>'[broomstick]';
+彙>'[collect]';
+彜>'[yi]';
+彝>'[yi]';
+彡>'[hair]';
+形>'[form]';
+彦>'[elegant]';
+彩>'[hue]';
+彪>'[tiger]';
+彫>'[carve]';
+彬>'[cultivated]';
+彭>'[name of ancient country]';
+彰>'[clear]';
+影>'[shadow]';
+彳>'[step with left foot]';
+彷>'[like]';
+役>'[service]';
+彼>'[that]';
+彿>'[resembling]';
+往>'[go]';
+征>'[invade]';
+徂>'[go]';
+徃>'[go]';
+径>'[narrow path]';
+待>'[treat]';
+徇>'[comply with]';
+很>'[very]';
+徊>'[linger]';
+律>'[statute]';
+後>'[behind]';
+徐>'[slowly]';
+徑>'[narrow path]';
+徒>'[disciple]';
+従>'[from]';
+得>'[obtain]';
+徘>'[walk back and forth]';
+徙>'[move one''s abode]';
+從>'[from]';
+徠>'[induce]';
+御>'[drive]';
+徨>'[doubtful]';
+復>'[return]';
+循>'[obey]';
+徭>'[conscript labor]';
+微>'[small]';
+徳>'[virtue]';
+徴>'[summon]';
+徹>'[penetrate]';
+徼>'[frontier]';
+徽>'[a badge]';
+心>'[heart]';
+必>'[surely]';
+忌>'[jealous]';
+忍>'[endure]';
+忖>'[guess]';
+志>'[purpose]';
+忘>'[forget]';
+忙>'[busy]';
+応>'[should]';
+忝>'[disgrace]';
+忠>'[loyalty]';
+忤>'[insubordinate]';
+快>'[rapid]';
+忰>'[suffer]';
+忱>'[truth]';
+念>'[think of]';
+忸>'[blush]';
+忻>'[delightful]';
+忽>'[suddenly]';
+忿>'[get angry]';
+怎>'[what? why? how?]';
+怏>'[discontented]';
+#"怐>'[................................]'",
+怒>'[anger]';
+怕>'[fear]';
+怖>'[terror]';
+怙>'[rely on]';
+怛>'[grieved]';
+怜>'[pity]';
+思>'[think]';
+怠>'[idle]';
+怡>'[harmony]';
+急>'[quick]';
+怦>'[eager]';
+性>'[nature]';
+怨>'[hatred]';
+怩>'[shy]';
+怪>'[strange]';
+怫>'[sorry]';
+怯>'[lacking in courage]';
+怱>'[hastily]';
+怺>'[to endure]';
+恁>'[that]';
+恂>'[careful]';
+恃>'[rely on]';
+恆>'[constant]';
+恊>'[be united]';
+恋>'[love]';
+恍>'[seemingly]';
+恐>'[fear]';
+恒>'[constant]';
+恕>'[forgive]';
+恙>'[illness]';
+恚>'[anger]';
+恟>'[scared]';
+恠>'[strange]';
+恢>'[restore]';
+恣>'[indulge oneself]';
+恤>'[show pity]';
+恥>'[shame]';
+恨>'[hatred]';
+恩>'[kindness]';
+恪>'[respectful]';
+恫>'[in pain]';
+恬>'[quiet]';
+恭>'[respectful]';
+息>'[rest]';
+恰>'[just]';
+恵>'[favor]';
+#"恶>'[evil]'",
+悁>'[irritable]';
+悃>'[sincere]';
+悄>'[silent]';
+悉>'[know]';
+悋>'[stingy]';
+悌>'[brotherly]';
+悍>'[courageous]';
+悒>'[sorrowful]';
+悔>'[repent]';
+悖>'[be contradictory to]';
+#"悖>'[be contradictory to]'",
+悚>'[be afraid]';
+悛>'[repent]';
+悟>'[apprehend]';
+悠>'[long]';
+患>'[suffer]';
+悦>'[pleased]';
+悧>'[smooth]';
+悩>'[angered]';
+悪>'[evil]';
+悲>'[sorrow]';
+悳>'[ethics]';
+悴>'[suffer]';
+悵>'[disappointed]';
+悶>'[gloomy]';
+悸>'[fearful]';
+悼>'[grieve]';
+悽>'[sorrowful]';
+情>'[feeling]';
+惆>'[distressed]';
+惇>'[be kind]';
+惑>'[confuse]';
+惓>'[careful]';
+惘>'[disconcerted]';
+惚>'[absent-minded]';
+惜>'[pity]';
+惟>'[but]';
+惠>'[favor]';
+惡>'[evil]';
+惣>'[overall [questionable variant]]';
+惧>'[fear]';
+惨>'[sad]';
+惰>'[indolent]';
+惱>'[angered]';
+想>'[think]';
+惴>'[afraid]';
+惶>'[fearful]';
+惷>'[wriggle]';
+惹>'[irritate]';
+惺>'[intelligent]';
+惻>'[feel anguish]';
+愀>'[change one''s countenance]';
+愁>'[anxiety]';
+愃>'[relax]';
+愆>'[fault]';
+愈>'[more and more]';
+愉>'[pleasant]';
+愍>'[pity]';
+愎>'[obstinate]';
+意>'[thought]';
+愕>'[startled]';
+愚>'[stupid]';
+愛>'[love]';
+感>'[feel]';
+愡>'[absent-minded]';
+愧>'[ashamed]';
+愨>'[sincerity]';
+愬>'[accuse]';
+愴>'[sad]';
+愼>'[act with care]';
+愽>'[gamble]';
+愾>'[anger]';
+愿>'[sincere]';
+慂>'[urge]';
+慄>'[shiver]';
+慇>'[careful]';
+慈>'[kind]';
+慊>'[to resent]';
+態>'[manner]';
+慌>'[nervous]';
+慍>'[angry]';
+慎>'[act with care]';
+#"慓>'[................................]'",
+慕>'[long for]';
+慘>'[sad]';
+慙>'[ashamed]';
+慚>'[ashamed]';
+慝>'[do evil in secret]';
+慟>'[sadness]';
+慢>'[slow(ly)]';
+慣>'[habit]';
+慥>'[sincere]';
+慧>'[bright]';
+慨>'[sigh]';
+慫>'[to alarm]';
+慮>'[be concerned]';
+#"慯>'[................................]'",
+慰>'[comfort]';
+慱>'[sad]';
+慳>'[miserly]';
+慴>'[fear]';
+慵>'[indolent]';
+慶>'[congratulate]';
+慷>'[ardent]';
+慾>'[lust]';
+憂>'[sad]';
+憇>'[rest]';
+憊>'[tired]';
+憎>'[hate]';
+憐>'[pity]';
+憑>'[lean on]';
+憔>'[be worn-out]';
+憖>'[cautious]';
+憙>'[like]';
+憚>'[dread]';
+憤>'[resent]';
+憧>'[irresolute]';
+憩>'[rest]';
+憫>'[pity]';
+憬>'[rouse]';
+憮>'[regretful]';
+憲>'[constitution]';
+憶>'[remember]';
+憺>'[peace]';
+憾>'[regret]';
+懃>'[courteous]';
+懆>'[anxious]';
+懇>'[sincere]';
+懈>'[idle]';
+應>'[should]';
+懊>'[vexed]';
+懋>'[splendid]';
+懌>'[enjoy]';
+懍>'[be afraid of]';
+懐>'[bosom]';
+懣>'[be sick at heart]';
+懦>'[weak]';
+懲>'[punish]';
+懴>'[regret]';
+懶>'[lazy]';
+懷>'[bosom]';
+懸>'[hang]';
+懺>'[regret]';
+懼>'[fear]';
+懽>'[happy]';
+懾>'[afraid]';
+懿>'[virtuous]';
+戀>'[love]';
+戈>'[halberd]';
+戉>'[a battle-axe]';
+戊>'[fifth of ten celestial stems]';
+戌>'[eleventh of terrestrial branches]';
+戍>'[defend borders]';
+戎>'[arms]';
+成>'[completed]';
+我>'[our]';
+戒>'[warn]';
+戔>'[small]';
+或>'[or]';
+戚>'[relative]';
+戛>'[lance]';
+戝>'[pirate]';
+戞>'[lance]';
+戟>'[halberd with crescent blade]';
+戡>'[subjugate]';
+戦>'[war]';
+截>'[cut off]';
+戮>'[kill]';
+戯>'[theatrical play]';
+戰>'[war]';
+戲>'[theatrical play]';
+戳>'[prick]';
+戴>'[wear on top]';
+戸>'[door]';
+戻>'[perverse]';
+房>'[house]';
+所>'[place]';
+扁>'[flat]';
+扇>'[fan]';
+扈>'[escort]';
+扉>'[door panel]';
+手>'[hand]';
+才>'[talent]';
+扎>'[pull up]';
+打>'[strike]';
+払>'[shake off]';
+托>'[hold up with palm]';
+扛>'[carry on shoulders]';
+扞>'[ward off]';
+扠>'[pick up with fork or pincers]';
+扣>'[knock]';
+扨>'[pick up with fork or pincers]';
+扮>'[dress up]';
+扱>'[collect]';
+扶>'[support]';
+批>'[comment]';
+扼>'[grasp]';
+找>'[search]';
+承>'[inherit]';
+技>'[skill]';
+#"抂>'[................................]'",
+抃>'[to clap hands]';
+抄>'[copy]';
+抉>'[choose]';
+把>'[hold]';
+抑>'[press down]';
+抒>'[express]';
+抓>'[scratch]';
+抔>'[take or hold up in both hands]';
+投>'[throw]';
+抖>'[tremble]';
+抗>'[resist]';
+折>'[break off]';
+抛>'[throw (away)]';
+抜>'[uproot]';
+択>'[select]';
+披>'[wear]';
+抬>'[lift]';
+抱>'[embrace]';
+抵>'[resist]';
+抹>'[smear]';
+抻>'[pull]';
+押>'[mortgage]';
+抽>'[draw out]';
+拂>'[shake off]';
+担>'[carry]';
+拆>'[break up]';
+拇>'[thumb]';
+拈>'[pick up with fingers]';
+拉>'[pull]';
+拊>'[slap]';
+拌>'[mix]';
+拍>'[clap]';
+拏>'[take]';
+拐>'[kidnap]';
+拑>'[to clamp]';
+拒>'[ward off with hand]';
+拓>'[expand]';
+拔>'[uproot]';
+拗>'[obstinate]';
+拘>'[restrain]';
+拙>'[stupid]';
+招>'[beckon]';
+拜>'[do obeisance]';
+拝>'[do obeisance]';
+拠>'[occupy]';
+拡>'[expand]';
+括>'[include]';
+拭>'[wipe away stains with cloth]';
+拮>'[laboring hard]';
+拯>'[help]';
+拱>'[fold hands on breast]';
+拳>'[fist]';
+#"拴>'[bind with rope]'",
+拶>'[press]';
+拷>'[torture and interrogate]';
+拾>'[pick up]';
+拿>'[take]';
+持>'[sustain]';
+挂>'[hang]';
+指>'[finger]';
+挈>'[assist]';
+按>'[put hand on]';
+挌>'[fight]';
+挑>'[load carried on shoulders]';
+挙>'[raise]';
+挟>'[clasp under arm]';
+#"挥>'[direct]'",
+挨>'[near]';
+挫>'[push down]';
+振>'[raise]';
+挺>'[stand upright]';
+挽>'[pull]';
+挾>'[clasp under arm]';
+挿>'[insert]';
+捉>'[grasp]';
+捌>'[break open]';
+捍>'[ward off]';
+捏>'[pick with fingers]';
+捐>'[contribute]';
+捕>'[arrest]';
+捗>'[make progress]';
+捜>'[search]';
+捧>'[hold up in two hands]';
+捨>'[discard]';
+捩>'[twist with hands]';
+捫>'[stoke]';
+据>'[occupy]';
+捲>'[curl]';
+捶>'[strike with stick]';
+捷>'[win]';
+捺>'[press down heavily with fringers]';
+捻>'[twist with fingers]';
+掀>'[lift]';
+掃>'[sweep]';
+授>'[give to]';
+掉>'[turn]';
+掌>'[palm of hand]';
+掎>'[drag aside]';
+掏>'[take out]';
+排>'[row]';
+掖>'[stick in]';
+掘>'[dig]';
+掛>'[hang]';
+#"掟>'[................................]'",
+掠>'[rob]';
+採>'[gather]';
+探>'[find]';
+掣>'[drag]';
+接>'[receive]';
+控>'[accuse]';
+推>'[push]';
+掩>'[cover]';
+措>'[place]';
+掫>'[be on night watch]';
+掬>'[grasp with both hands]';
+#"掱>'[pickpocket]'",
+掴>'[box one''s ears]';
+#"掴>'[box one''s ears]'",
+掻>'[scratch lightly]';
+掾>'[a general designation of officials]';
+揀>'[choose]';
+揃>'[shear]';
+揄>'[lift]';
+揆>'[prime minister]';
+揉>'[rub]';
+描>'[copy]';
+提>'[hold in hand]';
+插>'[insert]';
+揖>'[salute]';
+揚>'[scatter]';
+換>'[change]';
+握>'[grasp]';
+揣>'[put things under clothes]';
+揩>'[rub and wipe]';
+揮>'[direct]';
+援>'[aid]';
+揶>'[make fun of]';
+揺>'[wag]';
+搆>'[pull]';
+損>'[diminish]';
+搏>'[seize]';
+搓>'[trample]';
+搖>'[wag]';
+搗>'[hull]';
+搜>'[search]';
+搦>'[grasp]';
+搨>'[rub]';
+搬>'[transfer]';
+搭>'[join together]';
+搴>'[extract]';
+搶>'[plunder]';
+携>'[lead by hand]';
+搾>'[press]';
+摂>'[take in]';
+摎>'[to strangle]';
+摘>'[pluck]';
+摧>'[destroy]';
+摩>'[rub]';
+摯>'[sincere]';
+摶>'[roll around with hand]';
+摸>'[gently touch with hand]';
+摺>'[fold]';
+撃>'[strike]';
+撈>'[scoop out of water]';
+撒>'[release]';
+撓>'[scratch]';
+撕>'[rip]';
+撚>'[twirl in fingers]';
+撞>'[knock against]';
+撤>'[omit]';
+撥>'[move]';
+撩>'[lift up]';
+撫>'[pat]';
+播>'[sow]';
+撮>'[little bit]';
+撰>'[compose]';
+撲>'[pound]';
+撹>'[disturb]';
+撻>'[flog]';
+撼>'[move]';
+擁>'[embrace]';
+擂>'[rub]';
+擅>'[monopolize]';
+擇>'[select]';
+操>'[conduct]';
+擒>'[catch]';
+擔>'[carry]';
+擘>'[thumb]';
+據>'[occupy]';
+擠>'[crowd]';
+擡>'[carry]';
+擢>'[pull up]';
+擣>'[hull]';
+擦>'[wipe]';
+擧>'[raise]';
+擬>'[draft]';
+擯>'[exclude]';
+擱>'[place]';
+擲>'[throw]';
+擴>'[expand]';
+#"擶>'[................................]'",
+擺>'[put]';
+擽>'[tickle]';
+擾>'[disturb]';
+攀>'[climb]';
+攅>'[save]';
+攘>'[seize]';
+攜>'[lead by hand]';
+攝>'[take in]';
+攣>'[tangled]';
+攤>'[spread out]';
+攪>'[disturb]';
+攫>'[snatch away]';
+攬>'[grasp]';
+支>'[disperse]';
+攴>'[rap]';
+攵>'[rap]';
+收>'[gather together]';
+攷>'[examine]';
+攸>'[distant]';
+改>'[change]';
+攻>'[attack]';
+放>'[put]';
+政>'[government]';
+故>'[ancient]';
+效>'[result]';
+敍>'[express]';
+敏>'[fast]';
+救>'[save]';
+敕>'[an imperial order or decree]';
+敖>'[ramble]';
+敗>'[be defeated]';
+敘>'[express]';
+教>'[teach]';
+敝>'[break]';
+敞>'[roomy]';
+敢>'[dare]';
+散>'[scatter]';
+敦>'[esteem]';
+敬>'[respect]';
+数>'[number]';
+敲>'[strike]';
+整>'[orderly]';
+敵>'[enemy]';
+敷>'[spread]';
+數>'[number]';
+斂>'[draw back]';
+斃>'[kill]';
+文>'[literature]';
+斈>'[learning]';
+斉>'[even]';
+斌>'[refined]';
+斎>'[vegetarian diet]';
+斐>'[graceful]';
+斑>'[mottled]';
+斗>'[chinese peck]';
+料>'[consider]';
+斛>'[dry measure 10 or 5 times of dou]';
+斜>'[slanting]';
+斟>'[pour wine or tea into cup]';
+斡>'[revolve]';
+斤>'[catty]';
+斥>'[scold]';
+斧>'[axe]';
+斫>'[cut]';
+斬>'[cut]';
+断>'[sever]';
+斯>'[this]';
+新>'[new]';
+斷>'[sever]';
+方>'[square]';
+於>'[in]';
+施>'[grant]';
+旁>'[side]';
+旃>'[silk banner with bent pole]';
+旄>'[a kind of ancient flag]';
+旅>'[trip]';
+旆>'[flag ornament]';
+旋>'[revolve]';
+旌>'[banner or flag adorned with feat]';
+族>'[family clan]';
+旒>'[fringes of pearls on crowns]';
+旗>'[banner]';
+旙>'[a pennant]';
+旛>'[a pennant]';
+无>'[negative]';
+旡>'[choke on something eaten]';
+既>'[already]';
+日>'[sun]';
+旦>'[dawn]';
+旧>'[old]';
+旨>'[purpose]';
+早>'[early]';
+旬>'[ten-day period]';
+旭>'[rising sun]';
+旱>'[drought]';
+旺>'[prosper]';
+旻>'[heaven]';
+昂>'[rise]';
+昃>'[afternoon]';
+昆>'[elder brother]';
+昇>'[rise]';
+昊>'[summer time]';
+昌>'[light of sun]';
+明>'[bright]';
+昏>'[dusk]';
+易>'[change]';
+昔>'[formerly]';
+昜>'[to open out]';
+星>'[star]';
+映>'[project]';
+春>'[spring]';
+昧>'[obscure]';
+昨>'[yesterday]';
+昭>'[bright]';
+是>'[indeed]';
+昴>'[one of the 28 constellations]';
+昵>'[intimate]';
+昶>'[a long day. bright. extended. clear]';
+昼>'[daytime]';
+昿>'[extensive]';
+晁>'[morning]';
+時>'[time]';
+晃>'[bright]';
+晄>'[bright]';
+晉>'[advance]';
+晋>'[advance]';
+晏>'[peaceful]';
+晒>'[dry in sun]';
+晝>'[daytime]';
+晞>'[dry]';
+晟>'[clear]';
+晢>'[light of stars]';
+晤>'[have interview with]';
+晦>'[dark]';
+晧>'[daybreak]';
+晨>'[early morning]';
+晩>'[night]';
+普>'[universal]';
+景>'[scenery]';
+晰>'[clear]';
+晴>'[clear weather]';
+晶>'[crystal]';
+智>'[wisdom]';
+暁>'[dawn]';
+#"暂>'[temporary]'",
+暄>'[warm]';
+暇>'[leisure]';
+暈>'[halo in sky]';
+暉>'[sunshine]';
+暎>'[sun beginning decline]';
+暑>'[hot]';
+暖>'[warm]';
+暗>'[dark]';
+暘>'[rising sun]';
+暝>'[dark]';
+暢>'[smoothly]';
+暦>'[calendar]';
+暫>'[temporary]';
+暮>'[evening]';
+暴>'[violent]';
+暸>'[bright]';
+暹>'[rise]';
+暼>'[take fleeting glance at]';
+暾>'[morning sun]';
+曁>'[and]';
+曄>'[bright]';
+曇>'[become cloudy]';
+曉>'[dawn]';
+曖>'[obscure]';
+曙>'[bright]';
+曚>'[twilight just before sun rises]';
+曜>'[glorious]';
+曝>'[sun]';
+曠>'[extensive]';
+曦>'[sunlight]';
+曩>'[in ancient times]';
+曰>'[say]';
+曲>'[crooked]';
+曳>'[trail]';
+更>'[more]';
+曵>'[trail]';
+曷>'[why? what? where?]';
+書>'[book]';
+曹>'[ministry officials]';
+曼>'[long]';
+曽>'[already]';
+曾>'[already]';
+替>'[change]';
+最>'[most]';
+會>'[assemble]';
+月>'[moon]';
+有>'[have]';
+朋>'[friend]';
+服>'[clothes]';
+朏>'[light of crescent moon]';
+朔>'[first day of lunar month]';
+朕>'[pronoun \"i\"]';
+朖>'[clear]';
+朗>'[clear]';
+望>'[look at or forward]';
+朝>'[dynasty]';
+朞>'[full year]';
+期>'[period of time]';
+朦>'[condition or appearance of moon]';
+朧>'[condition or appearance of moon]';
+木>'[tree]';
+未>'[not yet]';
+末>'[final]';
+本>'[root]';
+札>'[letter]';
+朮>'[skill]';
+朱>'[cinnabar]';
+朴>'[simple]';
+朶>'[cluster of flowers]';
+#"朶>'[cluster of flowers]'",
+#"朶>'[cluster of flowers]'",
+机>'[desk]';
+朽>'[decayed]';
+朿>'[stab]';
+#"杀>'[kill]'",
+杆>'[pole]';
+杉>'[various species of pine and fir]';
+李>'[plum]';
+杏>'[apricot]';
+材>'[material]';
+村>'[village]';
+杓>'[handle of cup]';
+杖>'[cane]';
+杙>'[a tiny wooden post]';
+杜>'[stop]';
+杞>'[willow]';
+束>'[bind]';
+杠>'[lever]';
+条>'[clause]';
+杢>'[woodworker]';
+#"杢>'[woodworker]'",
+杤>'[type of oak]';
+来>'[come]';
+杪>'[tip of twig]';
+杭>'[cross stream]';
+杯>'[cup]';
+杰>'[hero]';
+東>'[east]';
+杲>'[bright sun]';
+杳>'[obscure]';
+杵>'[pestle]';
+杷>'[loquat]';
+杼>'[shuttle of loom]';
+松>'[pine tree]';
+板>'[plank]';
+#"枅>'[................................]'",
+枇>'[loquat]';
+枉>'[useless]';
+枋>'[sandalwood]';
+枌>'[variety of elm with small seeds]';
+析>'[split wood]';
+枕>'[pillow]';
+林>'[forest]';
+枚>'[stalk of shrub]';
+果>'[fruit]';
+枝>'[branches]';
+#"枟>'[wood streaks]'",
+#"枟>'[wood streaks]'",
+枢>'[door hinge]';
+#"枦>'[................................]'",
+枩>'[pine tree]';
+枯>'[dried out]';
+枳>'[trifoliate orange]';
+枴>'[cane]';
+架>'[rack]';
+枷>'[cangue scaffold]';
+枸>'[kind of aspen found in sichuan]';
+枹>'[drumstick]';
+柁>'[large tie-beams]';
+柄>'[handle]';
+#"柆>'[................................]'",
+#"柈>'[container]'",
+柎>'[calyx of flower]';
+柏>'[cypress]';
+某>'[certain thing or person]';
+柑>'[tangerine]';
+染>'[dye]';
+柔>'[soft]';
+柘>'[a thorny tree]';
+柚>'[pumelo]';
+柝>'[watchman''s rattle]';
+柞>'[oak]';
+柢>'[root]';
+柤>'[hawthorn]';
+#"柧>'[................................]'",
+柩>'[coffin which contains corpse]';
+柬>'[letter]';
+柮>'[flat pieces of wood]';
+柯>'[axe-handle]';
+柱>'[pillar]';
+柳>'[willow tree]';
+柴>'[firewood]';
+柵>'[fence]';
+査>'[investigate]';
+柾>'[straight grain]';
+柿>'[persimmon]';
+栂>'[a kind of evergreen tree]';
+栃>'[type of oak]';
+栄>'[glory]';
+栓>'[wooden peg]';
+栖>'[perch]';
+栗>'[chestnut tree]';
+栞>'[publication]';
+校>'[school]';
+栢>'[cypress]';
+栩>'[species of oak]';
+株>'[numerary adjunct for trees]';
+栫>'[fence]';
+栲>'[mangrove]';
+栴>'[sandalwood]';
+核>'[seed]';
+根>'[root]';
+格>'[pattern]';
+栽>'[cultivate]';
+桀>'[chicken roost]';
+桁>'[cross-beams of roof]';
+桂>'[cassia or cinnamon]';
+桃>'[peach]';
+框>'[frame]';
+案>'[table]';
+#"桍>'[................................]'",
+桎>'[fetters]';
+桐>'[name applied various trees]';
+桑>'[mulberry tree]';
+桓>'[variety of tree]';
+桔>'[chinese bellflower]';
+#"桙>'[................................]'",
+桜>'[cherry]';
+桝>'[................]';
+#"桝>'[................]'",
+档>'[shelf]';
+桧>'[chinese cypress]';
+桴>'[raft]';
+桶>'[pail]';
+桷>'[rafter]';
+#"桾>'[................................]'",
+桿>'[pole]';
+梁>'[bridge]';
+梃>'[a club]';
+梅>'[plums]';
+梍>'[tree name]';
+梏>'[handcuffs]';
+梓>'[catalpa ovata]';
+梔>'[gardenia]';
+梗>'[stem of flower]';
+#"梘>'[bamboo tube]'",
+條>'[clause]';
+梟>'[owl thus]';
+梠>'[small beam supporting rafters at]';
+梢>'[pointed tip of something long like a branch]';
+梦>'[dream]';
+梧>'[sterculia platanifolia]';
+梨>'[pear]';
+梭>'[weaver''s shuttle]';
+梯>'[ladder]';
+械>'[weapons]';
+梱>'[doorsill]';
+梳>'[comb]';
+梵>'[buddhist]';
+梶>'[oar]';
+梹>'[the areca-nut]';
+#"梹>'[the areca-nut]'",
+梼>'[block of wood]';
+棄>'[reject]';
+#"棆>'[................................]'",
+棉>'[cotton]';
+棊>'[chess]';
+棋>'[chess]';
+棍>'[stick]';
+棒>'[stick]';
+#"棔>'[................................]'",
+棕>'[hemp palm]';
+棗>'[date tree]';
+棘>'[jujube tree]';
+棚>'[tent]';
+棟>'[main beams supporting house]';
+棠>'[crab apple tree]';
+#"棡>'[................................]'",
+棣>'[kerria japonica plant]';
+棧>'[warehouse]';
+森>'[forest]';
+棯>'[jujube tree]';
+棲>'[perch]';
+棹>'[oar]';
+棺>'[coffin]';
+椀>'[bowl]';
+椁>'[outer-coffin]';
+椄>'[to graft]';
+椅>'[chair]';
+椈>'[cedar]';
+椋>'[fruit]';
+椌>'[instrument]';
+植>'[plant]';
+椎>'[hammer]';
+椏>'[the forking branch of a tree]';
+椒>'[pepper]';
+#"椓>'[strike]'",
+#"椚>'[................................]'",
+椛>'[type of birch]';
+検>'[check]';
+#"椡>'[................................]'",
+#"椢>'[................................]'",
+#"椣>'[................................]'",
+#"椥>'[................................]'",
+#"椦>'[................................]'",
+#"椨>'[................................]'",
+椪>'[machilus nanmu]';
+椰>'[palm tree]';
+椴>'[poplar]';
+椶>'[palm tree]';
+椹>'[a chopping board]';
+椽>'[beams]';
+椿>'[father]';
+楊>'[willow]';
+楓>'[maple tree]';
+楔>'[wedge]';
+楕>'[oval-shaped]';
+楙>'[name of plant]';
+楚>'[name of feudal state]';
+#"楜>'[................................]'",
+楝>'[melia japonica]';
+楞>'[used for ceylon in buddhist text]';
+楠>'[name of tree]';
+楡>'[elm tree]';
+楢>'[tinder]';
+楪>'[small dish]';
+楫>'[oar]';
+業>'[profession]';
+楮>'[mulberry]';
+楯>'[shield]';
+楳>'[plums]';
+#"楴>'[................................]'",
+極>'[extreme]';
+楷>'[model style of chinese writing]';
+楸>'[mallotus japonicus]';
+楹>'[column]';
+楼>'[building of two or more stories]';
+楽>'[happy]';
+#"楽>'[happy]'",
+#"榀>'[[not found in dictionary]]'",
+概>'[generally]';
+#"榉>'[type of elm]'",
+榎>'[small evergreen shrub]';
+#"榑>'[................................]'",
+榔>'[betel-nut tree]';
+榕>'[banyan tree]';
+榛>'[hazelnut]';
+榜>'[placard]';
+#"榠>'[................................]'",
+榧>'[type of yew]';
+榮>'[glory]';
+榱>'[rafter]';
+榲>'[pillar]';
+榴>'[pomegranate]';
+榻>'[cot]';
+榾>'[pieces of wood]';
+榿>'[alder]';
+槁>'[wither]';
+槃>'[tray]';
+槇>'[tip of a tree]';
+槊>'[spear]';
+構>'[frame]';
+槌>'[hammer]';
+槍>'[spear]';
+槎>'[raft]';
+槐>'[locust tree]';
+槓>'[lever]';
+様>'[shape]';
+#"様>'[shape]'",
+#"槛>'[threshold]'",
+#"槛>'[threshold]'",
+槧>'[wooden tablet]';
+槨>'[outer-coffin]';
+#"槫>'[................................]'",
+槭>'[maple]';
+槲>'[type of oak]';
+槹>'[spar]';
+槻>'[zelkova tree]';
+槽>'[trough]';
+槿>'[hibiscus]';
+樂>'[happy]';
+樅>'[fir tree]';
+樊>'[a railing]';
+樋>'[tree name]';
+#"樌>'[................................]'",
+#"樒>'[................................]'",
+樓>'[building of two or more stories]';
+#"樓>'[building of two or more stories]'",
+樗>'[kind of tree with useless timber]';
+標>'[mark]';
+樛>'[bending branches]';
+樞>'[door hinge]';
+樟>'[camphor tree]';
+模>'[model]';
+#"樢>'[................................]'",
+樣>'[shape]';
+権>'[power]';
+横>'[across]';
+#"横>'[across]'",
+#"横>'[across]'",
+樵>'[woodcutter]';
+樶>'[c]';
+樸>'[simple]';
+樹>'[tree]';
+樺>'[type of birch]';
+樽>'[goblet]';
+橄>'[olive]';
+橇>'[a sledge for transportation]';
+橈>'[bent or twisted piece of wood]';
+橋>'[bridge]';
+橘>'[orange]';
+橙>'[orange]';
+機>'[machine]';
+橡>'[chestnut oak]';
+橢>'[oval-shaped]';
+橦>'[tree]';
+#"橱>'[cabinet]'",
+#"橵>'[wood placed under roof tiles]'",
+#"橿>'[................................]'",
+檀>'[sandalwood]';
+檄>'[call arms]';
+檍>'[ilex]';
+檎>'[small red apple]';
+檐>'[eaves of house]';
+檗>'[tree]';
+檜>'[chinese cypress]';
+檠>'[stand for lamp]';
+檢>'[check]';
+檣>'[mast]';
+檪>'[chestnut-leaved oak]';
+檬>'[type of locust oracacia]';
+檮>'[block of wood]';
+檳>'[betelnut]';
+檸>'[lemon]';
+檻>'[threshold]';
+#"櫁>'[................................]'",
+櫂>'[oar]';
+櫃>'[cupboard]';
+#"櫑>'[................................]'",
+櫓>'[oar]';
+櫚>'[palm]';
+櫛>'[comb out]';
+櫞>'[citrus]';
+櫟>'[chestnut-leaved oak]';
+櫨>'[supporting block]';
+櫪>'[type of oak]';
+櫺>'[carved or patterned window sills]';
+櫻>'[cherry]';
+欄>'[railing]';
+欅>'[zelkova]';
+權>'[power]';
+欒>'[name of tree]';
+欖>'[olive]';
+欝>'[luxuriant]';
+#"欞>'[the lattice of a window a sill]'",
+欠>'[owe]';
+次>'[order]';
+欣>'[happy]';
+欧>'[translit.: europe]';
+欲>'[desire]';
+欷>'[sob]';
+欸>'[sighs]';
+欹>'[fierce dog]';
+欺>'[cheat]';
+欽>'[respect]';
+款>'[item]';
+歃>'[smear one''s mouth with blood of a victim when taking an oath]';
+歇>'[rest]';
+歉>'[deficient]';
+歌>'[song]';
+歎>'[sigh]';
+歐>'[translit.: europe]';
+歓>'[happy]';
+歔>'[blow through nose]';
+歙>'[to suck]';
+歛>'[draw back]';
+歟>'[final particle used express ques]';
+歡>'[happy]';
+止>'[stop]';
+正>'[right]';
+此>'[this]';
+武>'[military]';
+歩>'[step]';
+歪>'[slant]';
+歯>'[teeth]';
+歳>'[year]';
+歴>'[take place]';
+歸>'[return]';
+歹>'[bad]';
+死>'[die]';
+歿>'[die]';
+殀>'[die young]';
+殃>'[misfortune]';
+殄>'[to end]';
+殆>'[dangerous]';
+殉>'[die for cause]';
+殊>'[different]';
+残>'[injure]';
+殍>'[to starve to death]';
+殕>'[[not found in dictionary]]';
+殖>'[breed]';
+殘>'[injure]';
+殞>'[die]';
+殤>'[die young]';
+殪>'[die]';
+殫>'[utmost]';
+殯>'[encoffin]';
+殱>'[annihilate]';
+殲>'[annihilate]';
+殳>'[name of old weapon]';
+殴>'[beat]';
+段>'[section]';
+殷>'[many]';
+殺>'[kill]';
+殻>'[casing]';
+殼>'[casing]';
+殿>'[hall]';
+毀>'[destroy]';
+毅>'[resolute]';
+毆>'[beat]';
+毋>'[do not]';
+母>'[mother]';
+毎>'[every]';
+毒>'[poison]';
+毓>'[give birth to]';
+比>'[compare]';
+毘>'[help]';
+毛>'[hair]';
+#"毟>'[................................]'",
+毫>'[fine hair]';
+毬>'[ball]';
+毯>'[rug]';
+毳>'[fine hair or fur on animals]';
+氈>'[felt]';
+氏>'[clan]';
+民>'[people]';
+氓>'[people]';
+气>'[steam]';
+気>'[air]';
+氛>'[gas]';
+氣>'[air]';
+氤>'[hanging fog]';
+水>'[water]';
+氷>'[ice]';
+永>'[long]';
+氾>'[overflow]';
+汀>'[sandbar]';
+汁>'[juice]';
+求>'[seek]';
+汎>'[float]';
+汐>'[night tides]';
+汕>'[basket for catching fish]';
+汗>'[perspiration]';
+汚>'[filthy]';
+汝>'[you]';
+汞>'[element mercury]';
+江>'[large river]';
+池>'[pool]';
+#"汢>'[................................]'",
+汨>'[Mi(luo) river in hunan province where Qu Yuan drowned himself]';
+汪>'[vast]';
+汰>'[excessive]';
+汲>'[draw water from well]';
+#"汲>'[draw water from well]'",
+決>'[decide]';
+汽>'[steam]';
+汾>'[river in shanxi province]';
+沁>'[soak into]';
+沂>'[river in southeast shandong flow]';
+沃>'[water]';
+沈>'[sink]';
+沌>'[chaotic]';
+沍>'[freezing]';
+沐>'[bathe]';
+沒>'[not]';
+沓>'[connected]';
+沖>'[pour]';
+沙>'[sand]';
+沚>'[islet in stream]';
+沛>'[abundant]';
+没>'[not]';
+沢>'[marsh]';
+沫>'[froth]';
+沮>'[stop]';
+沱>'[rivers]';
+河>'[river]';
+沸>'[boil]';
+油>'[oil]';
+沺>'[turbulent]';
+治>'[govern]';
+沼>'[lake]';
+沽>'[buy and sell]';
+沾>'[moisten]';
+沿>'[follow course]';
+況>'[condition]';
+泄>'[leak]';
+泅>'[swim]';
+泉>'[spring]';
+泊>'[anchor vessel]';
+泌>'[to seep out]';
+泓>'[clear]';
+法>'[law]';
+泗>'[mucous]';
+泙>'[roar]';
+泛>'[drift]';
+泝>'[go upstream]';
+泡>'[bubbles]';
+波>'[waves]';
+泣>'[cry]';
+泥>'[mud]';
+注>'[concentrate]';
+泪>'[tears]';
+泯>'[destroy]';
+泰>'[great]';
+泱>'[great]';
+泳>'[dive]';
+洋>'[ocean]';
+洌>'[clear]';
+洒>'[sprinkle]';
+洗>'[wash]';
+洙>'[name of a river in shandong]';
+洛>'[river in shaanxi province]';
+洞>'[cave]';
+洟>'[snivel]';
+津>'[ferry]';
+洩>'[leak]';
+洪>'[vast]';
+洫>'[to ditch]';
+洲>'[continent]';
+洳>'[damp]';
+洵>'[true]';
+洶>'[the rush of water]';
+洸>'[sparkle]';
+活>'[live]';
+洽>'[spread]';
+派>'[school of thought]';
+流>'[flow]';
+浄>'[pure]';
+浅>'[shallow]';
+浙>'[zhejiang province]';
+浚>'[dredge]';
+浜>'[creek]';
+浣>'[to wash]';
+浤>'[beating of ocean]';
+浦>'[bank of river]';
+浩>'[great]';
+浪>'[wave]';
+浬>'[nautical mile]';
+浮>'[float]';
+浴>'[bathe]';
+海>'[sea]';
+浸>'[soak]';
+浹>'[saturate]';
+涅>'[blacken]';
+消>'[vanish]';
+涌>'[surge up]';
+涎>'[saliva]';
+涓>'[brook]';
+涕>'[tear]';
+涙>'[tears]';
+涛>'[large waves]';
+涜>'[ditch]';
+涯>'[shore]';
+液>'[sap]';
+涵>'[soak]';
+涸>'[dried up]';
+涼>'[cool]';
+淀>'[shallow water]';
+淅>'[water used wash rice]';
+淆>'[confused]';
+淇>'[river in henan province]';
+淋>'[drip]';
+淌>'[trickle]';
+淑>'[good]';
+淒>'[bitter cold]';
+#"淕>'[................................]'",
+淘>'[wash in sieve]';
+淙>'[gurgling sound of water]';
+淞>'[name of a river in Jiangsu]';
+淡>'[weak]';
+淤>'[mud]';
+淦>'[river in jiangxi province: water]';
+淨>'[pure]';
+淪>'[be lost]';
+淫>'[obscene]';
+淬>'[temper]';
+淮>'[river in anhui province]';
+深>'[deep]';
+淳>'[cyanogen]';
+淵>'[gulf]';
+混>'[mix]';
+淹>'[drown]';
+淺>'[shallow]';
+添>'[append]';
+清>'[clear]';
+渇>'[thirsty]';
+済>'[help]';
+渉>'[ford stream]';
+渊>'[surge up]';
+渋>'[astringent]';
+渓>'[mountain stream]';
+渕>'[surge up]';
+渙>'[scatter]';
+渚>'[small sand bank]';
+減>'[decrease]';
+渝>'[change]';
+渟>'[(of water) not flowing]';
+渠>'[ditch]';
+渡>'[cross]';
+渣>'[refuse]';
+渤>'[swelling]';
+渥>'[moisten]';
+渦>'[swirl]';
+温>'[lukewarm]';
+渫>'[beating of ocean]';
+測>'[measure]';
+渭>'[name of a river in shaanxi]';
+渮>'[river in shandong province]';
+港>'[port]';
+游>'[swim]';
+渺>'[endlessly long]';
+渾>'[muddy]';
+湃>'[sound of waves]';
+湊>'[piece together]';
+湍>'[rapid water current]';
+湎>'[flushed with drink]';
+湖>'[lake]';
+湘>'[hunan province]';
+湛>'[deep]';
+湟>'[river in qinghai province]';
+湧>'[well up]';
+湫>'[a small pond]';
+湮>'[bury]';
+湯>'[hot water]';
+湲>'[flow]';
+#"湳>'[[not found in dictionary]]'",
+湾>'[bay]';
+湿>'[wet]';
+#"湿>'[wet]'",
+#"湿>'[wet]'",
+溌>'[pour]';
+溏>'[pool]';
+源>'[spring]';
+準>'[rule]';
+溘>'[abruptly]';
+溜>'[slide]';
+溝>'[ditch]';
+溟>'[drizzling rain]';
+溢>'[overflow]';
+溥>'[big]';
+溪>'[mountain stream]';
+溯>'[go upstream]';
+溲>'[urinate]';
+溶>'[melt]';
+溷>'[privy]';
+溺>'[drown]';
+溽>'[moist]';
+滂>'[torrential]';
+滄>'[blue]';
+滅>'[extinguish]';
+滉>'[deep]';
+滋>'[grow]';
+滌>'[wash]';
+滑>'[slip]';
+滓>'[sediment]';
+滔>'[overflow]';
+滕>'[<arch> county in shandong province]';
+滝>'[raining]';
+滞>'[block up]';
+滬>'[shanghai]';
+滯>'[block up]';
+滲>'[soak through]';
+滴>'[drip]';
+滷>'[thick gravy]';
+滸>'[riverbank]';
+滾>'[turn]';
+滿>'[fill]';
+漁>'[to fish]';
+漂>'[float]';
+漆>'[varnish]';
+漉>'[filter]';
+漏>'[leak]';
+漑>'[water]';
+漓>'[river in guangxi province]';
+演>'[perform]';
+漕>'[transport by water]';
+漠>'[desert]';
+漢>'[chinese people]';
+漣>'[flowing water]';
+漫>'[overflow of water]';
+漬>'[soak]';
+漱>'[gargle]';
+漲>'[rise in price]';
+漸>'[gradually]';
+漾>'[overflow]';
+漿>'[any thick fluid]';
+潁>'[river in anhui]';
+潅>'[pour]';
+潔>'[clean]';
+潘>'[surname]';
+潛>'[hide]';
+潜>'[hide]';
+潟>'[land inundated with salt from ti]';
+潤>'[soft]';
+潦>'[to flood]';
+潭>'[deep pool]';
+潮>'[tide]';
+潯>'[steep bank by stream]';
+潰>'[flooding river]';
+潴>'[pond]';
+潸>'[weep]';
+潺>'[sound of flowing water]';
+潼>'[high]';
+澀>'[astringent]';
+澁>'[astringent]';
+澂>'[clear and still water]';
+澄>'[purify water by allowing sedimen]';
+澆>'[spray]';
+澎>'[splatter]';
+澑>'[slide]';
+澗>'[brook]';
+澡>'[wash]';
+澣>'[cleanse]';
+澤>'[marsh]';
+#"澪>'[................................]'",
+澱>'[sediment]';
+澳>'[inlet]';
+澹>'[calm]';
+激>'[arouse]';
+濁>'[muddy]';
+濂>'[waterfall]';
+濃>'[thick]';
+濆>'[river bank]';
+濔>'[many]';
+濕>'[wet]';
+濘>'[mud]';
+濛>'[drizzling]';
+濟>'[help]';
+濠>'[moat]';
+濡>'[immerse]';
+濤>'[large waves]';
+濫>'[flood]';
+濬>'[dredge]';
+濮>'[county in Henan province]';
+濯>'[wash out]';
+濱>'[beach]';
+濳>'[hide]';
+濶>'[broad]';
+濺>'[sprinkle]';
+濾>'[strain out]';
+瀁>'[waves]';
+瀉>'[drain off]';
+瀋>'[juice]';
+瀏>'[clear]';
+瀑>'[waterfall]';
+瀕>'[approach]';
+瀘>'[river in jiangxi province]';
+瀚>'[vast]';
+瀛>'[sea]';
+瀝>'[trickle]';
+瀞>'[pool in a river]';
+瀟>'[sound of beating wind and rain]';
+瀦>'[pond]';
+瀧>'[raining]';
+瀬>'[swift current]';
+瀰>'[overflow]';
+瀲>'[waves]';
+瀾>'[overflowing]';
+灌>'[pour]';
+灑>'[sprinkle]';
+灘>'[bank]';
+灣>'[bay]';
+火>'[fire]';
+灯>'[lantern]';
+灰>'[ashes]';
+灸>'[cauterize with moxa]';
+灼>'[burn]';
+災>'[calamity]';
+炉>'[fireplace]';
+炊>'[cook]';
+炎>'[flame]';
+炒>'[fry]';
+炙>'[roast]';
+炬>'[torch]';
+炭>'[charcoal]';
+炮>'[large gun]';
+炯>'[bright]';
+炳>'[bright]';
+炸>'[fry in oil]';
+点>'[dot]';
+為>'[do]';
+烈>'[fiery]';
+烋>'[boast]';
+烏>'[crow]';
+烙>'[brand]';
+烝>'[rise]';
+烟>'[smoke]';
+烱>'[bright]';
+烹>'[boil]';
+烽>'[signal fire]';
+焉>'[thereupon]';
+焔>'[flame]';
+焙>'[dry over slow fire]';
+焚>'[burn]';
+焜>'[fire]';
+無>'[negative]';
+焦>'[burned]';
+然>'[yes]';
+焼>'[burn]';
+煉>'[smelt]';
+煌>'[bright]';
+煎>'[fry in fat or oil]';
+煕>'[bright]';
+煖>'[warm]';
+煙>'[smoke]';
+煢>'[alone]';
+煤>'[coal]';
+煥>'[shining]';
+煦>'[kind]';
+照>'[shine]';
+煩>'[bother]';
+煬>'[roast]';
+煮>'[cook]';
+煽>'[stir up]';
+熄>'[put out]';
+熈>'[bright]';
+熊>'[bear]';
+熏>'[smoke]';
+熔>'[melt]';
+#"熕>'[................................]'",
+熙>'[bright]';
+熟>'[well cooked]';
+熨>'[iron]';
+熬>'[cook down]';
+熱>'[hot]';
+熹>'[dim light]';
+熾>'[burning hot]';
+燃>'[burn]';
+燈>'[lantern]';
+燉>'[heat with fire]';
+燎>'[burn]';
+燐>'[phosphorus]';
+燒>'[burn]';
+燔>'[to roast]';
+燕>'[swallow (bird)]';
+#"燗>'[................................]'",
+營>'[encampment]';
+燠>'[warm]';
+燥>'[dry]';
+燦>'[vivid]';
+燧>'[flintstone]';
+燬>'[burn down]';
+燭>'[candle]';
+燮>'[harmonize]';
+#"燵>'[................................]'",
+燹>'[fire]';
+燻>'[smoke]';
+燼>'[cinders]';
+燿>'[shine]';
+爆>'[crackle]';
+爍>'[shine]';
+爐>'[fireplace]';
+爛>'[rotten]';
+爨>'[oven]';
+爪>'[claw]';
+爬>'[crawl]';
+爭>'[dispute]';
+爰>'[lead on to]';
+爲>'[do]';
+爵>'[feudal title or rank]';
+父>'[father]';
+爺>'[father]';
+爻>'[diagrams for divination]';
+爼>'[chopping board or block]';
+爽>'[happy]';
+爾>'[you]';
+爿>'[half of tree trunk]';
+牀>'[bed]';
+牆>'[wall]';
+片>'[slice]';
+版>'[printing blocks]';
+牋>'[memorandum]';
+牌>'[signboard]';
+牒>'[documents]';
+牘>'[writing tablet]';
+牙>'[tooth]';
+牛>'[cow]';
+牝>'[female of species]';
+牟>'[make]';
+牡>'[male of animals]';
+牢>'[prison]';
+牧>'[tend cattle]';
+物>'[thing]';
+牲>'[sacrificial animal]';
+牴>'[gore]';
+特>'[special]';
+牽>'[drag]';
+牾>'[to oppose]';
+犀>'[rhinoceros]';
+犁>'[plow]';
+犂>'[plow]';
+犇>'[run fast]';
+犒>'[entertain victorious soldiers]';
+犖>'[brindled ox]';
+犠>'[sacrifice]';
+犢>'[calf]';
+犧>'[sacrifice]';
+犬>'[dog]';
+犯>'[commit crime]';
+犲>'[wolf]';
+状>'[form]';
+犹>'[like]';
+狂>'[insane]';
+狃>'[to covet]';
+狄>'[tribe from northern china]';
+狆>'[pekinese dog]';
+狎>'[be familiar with]';
+狐>'[species of fox]';
+狒>'[baboon]';
+狗>'[dog]';
+狙>'[ape]';
+#"狛>'[................................]'",
+狠>'[vicious]';
+狡>'[cunning]';
+狢>'[animal name]';
+狩>'[winter hunting]';
+独>'[alone]';
+狭>'[narrow]';
+狷>'[rash]';
+狸>'[fox]';
+狹>'[narrow]';
+狼>'[wolf]';
+狽>'[legendary animal with short fore]';
+猊>'[lion]';
+猖>'[mad]';
+猗>'[exclamation of admiration]';
+猛>'[violent]';
+猜>'[guess]';
+猝>'[abruptly]';
+猟>'[hunt]';
+猥>'[vulgar]';
+猩>'[species of orangutan]';
+猪>'[pig]';
+猫>'[cat]';
+献>'[offer]';
+#"猯>'[................................]'",
+猴>'[monkey]';
+猶>'[like]';
+猷>'[plan]';
+猾>'[crafty]';
+猿>'[ape]';
+獄>'[prison]';
+獅>'[lion]';
+獎>'[prize]';
+獏>'[the panther]';
+獗>'[unruly]';
+獣>'[beast]';
+獨>'[alone]';
+獪>'[sly]';
+獰>'[ferocious appearance]';
+獲>'[obtain]';
+獵>'[hunt]';
+獸>'[beast]';
+獺>'[otter]';
+獻>'[offer]';
+玄>'[deep]';
+率>'[to lead]';
+玉>'[jade]';
+王>'[king]';
+玖>'[black-colored jade]';
+玩>'[play with]';
+玲>'[tinkling of jade]';
+玳>'[tortoise shell]';
+玻>'[glass]';
+珀>'[amber]';
+珂>'[inferior kind of jade]';
+珈>'[ornament attached woman''s hairpi]';
+珊>'[coral]';
+珍>'[precious]';
+珎>'[precious]';
+珞>'[kind of necklace]';
+珠>'[precious stone]';
+珥>'[ear ornament]';
+珪>'[jade table conferred upon feudal]';
+班>'[class]';
+珮>'[jade ornament]';
+珱>'[necklace made of precious stones]';
+#"珸>'[................................]'",
+現>'[appear]';
+球>'[ball]';
+琅>'[variety of white carnelian]';
+理>'[reason]';
+琉>'[sparkling stone]';
+琢>'[polish jade]';
+琥>'[jewel in shape of tiger]';
+琲>'[necklace]';
+琳>'[beautiful jade]';
+琴>'[chinese lute or guitar]';
+琵>'[guitar-like instrument]';
+琶>'[guitar-like instrument]';
+琺>'[enamel]';
+琿>'[bright]';
+瑁>'[fine piece of jade]';
+瑕>'[flaw in gem]';
+瑙>'[agate]';
+瑚>'[coral]';
+瑛>'[luster of gem]';
+瑜>'[flawless gem or jewel]';
+瑞>'[felicitous omen]';
+瑟>'[large stringed musical instrument]';
+瑠>'[precious stone]';
+瑣>'[fragments]';
+瑤>'[precious jade]';
+瑩>'[lustre of gems]';
+瑪>'[agate]';
+瑯>'[kind of white cornelian]';
+瑰>'[extraordinary]';
+瑳>'[luster of gem]';
+瑶>'[precious jade]';
+瑾>'[brilliance of gems]';
+璃>'[glass]';
+璋>'[jade plaything]';
+璞>'[unpolished gem]';
+璢>'[precious stone]';
+璧>'[piece of jade with hole in it]';
+環>'[jade ring or bracelet]';
+璽>'[imperial signet]';
+瓊>'[jade]';
+瓏>'[gem cut like dragon]';
+瓔>'[necklace made of precious stones]';
+瓜>'[melon]';
+瓠>'[bottle gourd]';
+瓢>'[ladle made from dried gourd]';
+瓣>'[petal]';
+瓦>'[tile]';
+瓧>'[decagram]';
+瓩>'[kilowatt]';
+瓮>'[earthen jar]';
+瓰>'[[not found in dictionary]]';
+瓱>'[milligram]';
+#"瓲>'[................................]'",
+瓶>'[jug]';
+瓷>'[crockery]';
+瓸>'[hectogram]';
+甃>'[brick wall of a well]';
+甄>'[examine]';
+甅>'[centigram]';
+甌>'[bowl]';
+甍>'[rafters supporting roof tiles]';
+甎>'[brick]';
+甑>'[boiler for steaming rice]';
+甓>'[glazed tiles]';
+甕>'[earthen jar]';
+甘>'[sweetness]';
+甚>'[great extent]';
+甜>'[sweet]';
+甞>'[taste]';
+生>'[life]';
+産>'[give birth]';
+甥>'[sister''s child]';
+甦>'[be reborn]';
+用>'[use]';
+甫>'[begin]';
+甬>'[path]';
+田>'[field]';
+由>'[cause]';
+甲>'[armor]';
+申>'[to state to a superior]';
+男>'[male]';
+甸>'[suburbs of capital]';
+町>'[raised path between fields]';
+画>'[painting]';
+甼>'[raised path between fields]';
+畄>'[stop]';
+畆>'[chinese land measure]';
+#"畉>'[................................]'",
+畊>'[plow]';
+畋>'[till land]';
+界>'[boundary]';
+#"畍>'[................................]'",
+畏>'[fear]';
+畑>'[dry (as opposed to rice) field]';
+畔>'[boundary path dividing fields]';
+留>'[stop]';
+畚>'[straw basket]';
+畛>'[border]';
+畜>'[livestock]';
+畝>'[chinese land measure]';
+畠>'[garden]';
+畢>'[end]';
+畤>'[place for worshipping the haven]';
+略>'[approximately]';
+畦>'[sections in vegetable farm]';
+畧>'[approximately]';
+#"畩>'[................................]'",
+番>'[take turns]';
+畫>'[delineate]';
+#"畭>'[................................]'",
+異>'[different]';
+畳>'[repeat]';
+畴>'[farmland]';
+當>'[bear]';
+畷>'[raised path between fields]';
+畸>'[odd]';
+畿>'[imperial domain]';
+疂>'[repeat]';
+疆>'[boundary]';
+疇>'[farmland]';
+疉>'[repeat]';
+疊>'[repeat]';
+疋>'[roll]';
+疎>'[neglect]';
+疏>'[neglect]';
+疑>'[doubt]';
+疔>'[carbuncle]';
+疚>'[chronic disease]';
+疝>'[hernia]';
+疣>'[wart]';
+疥>'[scabies]';
+疫>'[epidemic]';
+疱>'[acne]';
+疲>'[feel tired]';
+疳>'[childhood diseases]';
+疵>'[flaw]';
+疸>'[jaundice]';
+疹>'[measles]';
+疼>'[aches]';
+疽>'[ulcer]';
+疾>'[illness]';
+痂>'[scab]';
+痃>'[indigestion]';
+病>'[illness]';
+症>'[disease]';
+痊>'[be healed]';
+痍>'[wound]';
+痒>'[itch]';
+痔>'[hemorrhoids]';
+痕>'[scar]';
+痘>'[smallpox]';
+痙>'[convulsions]';
+痛>'[pain]';
+痞>'[dyspepsia]';
+痢>'[dysentry]';
+痣>'[spots]';
+痩>'[thin]';
+痰>'[phlegm]';
+痲>'[pock-marked]';
+痳>'[pock-marked]';
+痴>'[foolish]';
+痺>'[paralysis]';
+痼>'[chronic disease]';
+痾>'[chronic illness]';
+痿>'[paralysis]';
+瘁>'[feel tired]';
+瘉>'[get well]';
+瘋>'[crazy]';
+瘍>'[ulcers]';
+瘟>'[epidemic]';
+瘠>'[thin]';
+瘡>'[tumor]';
+瘢>'[scar]';
+瘤>'[tumor]';
+瘧>'[intermittent fever]';
+瘰>'[scrofula]';
+瘴>'[malaria pestilential vapors]';
+瘻>'[fistula]';
+療>'[be healed]';
+癆>'[consumption]';
+癇>'[epilepsy]';
+癈>'[abrogate]';
+癌>'[cancer]';
+癒>'[get well]';
+癖>'[craving]';
+癘>'[sore]';
+癜>'[erythema]';
+癡>'[silly]';
+癢>'[itch]';
+癧>'[scrofulous lumps or swellings]';
+癨>'[quickly]';
+癩>'[leprosy]';
+癪>'[spasms]';
+癬>'[ringworms]';
+癰>'[carbuncle]';
+癲>'[crazy]';
+癶>'[legs]';
+癸>'[last of ten celestial stems]';
+発>'[issue]';
+登>'[rise]';
+發>'[issue]';
+白>'[white]';
+百>'[one hundred]';
+皀>'[kernel]';
+皃>'[countenance]';
+的>'[possessive]';
+皆>'[all]';
+皇>'[royal]';
+皈>'[follow]';
+皋>'[the high land along a river]';
+皎>'[white]';
+皐>'[the high land along a river]';
+皓>'[bright]';
+皖>'[anhui province]';
+皙>'[white]';
+皚>'[brilliant white]';
+皮>'[skin]';
+皰>'[pimples]';
+皴>'[chapped]';
+皷>'[drum]';
+皸>'[crack]';
+皹>'[crack]';
+皺>'[wrinkles]';
+皿>'[shallow container]';
+盂>'[basin]';
+盃>'[glass]';
+盆>'[basin]';
+盈>'[fill]';
+益>'[profit]';
+盍>'[what? why not? correspond]';
+盒>'[small box or case]';
+盖>'[cover]';
+盗>'[rob]';
+盛>'[abundant]';
+盜>'[rob]';
+盞>'[small cup or container]';
+盟>'[swear]';
+盡>'[exhaust]';
+監>'[supervise]';
+盤>'[tray]';
+盥>'[wash]';
+盧>'[cottage]';
+盪>'[to toss about]';
+目>'[eye]';
+盲>'[blind]';
+直>'[straight]';
+相>'[mutual]';
+盻>'[glare]';
+盾>'[shield]';
+省>'[province]';
+眄>'[to look askance]';
+眇>'[blind in one eye]';
+眈>'[gloat]';
+眉>'[eyebrows]';
+看>'[look]';
+県>'[county]';
+眛>'[dim]';
+#"眞>'[real]'",
+真>'[real]';
+眠>'[close eyes]';
+#"眤>'[................................]'",
+眥>'[eye sockets]';
+眦>'[corner of the eyes]';
+眩>'[confuse]';
+眷>'[take interest in]';
+眸>'[pupil of eye]';
+眺>'[look at]';
+眼>'[eye]';
+着>'[make move]';
+睇>'[look at]';
+睚>'[corner of eye]';
+睛>'[eyeball]';
+睡>'[sleep]';
+督>'[supervise]';
+睥>'[look askance at]';
+睦>'[friendly]';
+睨>'[look askance at]';
+睫>'[eyelashes]';
+睹>'[look at]';
+睾>'[testicle]';
+睿>'[shrewd]';
+瞋>'[glare with anger]';
+瞎>'[blind]';
+瞑>'[close eyes]';
+瞞>'[deceive]';
+瞠>'[look at]';
+瞥>'[take fleeting glance at]';
+瞬>'[wink]';
+瞭>'[bright]';
+瞰>'[watch]';
+瞳>'[pupil of eye]';
+瞶>'[dim]';
+#"瞶>'[dim]'",
+瞻>'[look]';
+瞼>'[eyelid]';
+瞽>'[blind]';
+瞿>'[surname]';
+矇>'[stupid]';
+矍>'[look about in firght or alarm]';
+矗>'[straight]';
+矚>'[watch carefully]';
+矛>'[spear]';
+矜>'[pity]';
+矢>'[arrow]';
+矣>'[particle of completed action]';
+知>'[know]';
+矧>'[much more]';
+矩>'[carpenter''s square]';
+短>'[short]';
+矮>'[short]';
+矯>'[correct]';
+石>'[stone]';
+矼>'[stone bridge]';
+砂>'[sand]';
+砌>'[stone steps]';
+砒>'[arsenic]';
+研>'[grind]';
+砕>'[break]';
+砠>'[rocky]';
+砥>'[whetstone]';
+砦>'[stockade]';
+砧>'[anvil]';
+砲>'[gun]';
+破>'[break]';
+砺>'[whetstone]';
+砿>'[mine]';
+硅>'[silicon]';
+硝>'[saltpeter]';
+硫>'[sulfur]';
+硬>'[hard]';
+硯>'[inkstone]';
+#"硲>'[................................]'",
+#"硴>'[................................]'",
+硼>'[borax]';
+碁>'[chess]';
+碆>'[arrow-tip]';
+碇>'[anchor]';
+碌>'[rough]';
+碍>'[obstruct]';
+碎>'[break]';
+碑>'[stone tablet]';
+碓>'[pestle]';
+#"碕>'[................................]'",
+碗>'[bowl]';
+碚>'[suburb]';
+碣>'[stone tablet]';
+碧>'[jade]';
+碩>'[great]';
+碪>'[stone slab used for washing clot]';
+碯>'[agate]';
+#"碵>'[................................]'",
+確>'[sure]';
+碼>'[number]';
+碾>'[roller]';
+磁>'[magnetic]';
+磅>'[pound]';
+#"磆>'[................................]'",
+磊>'[pile of rocks or stones]';
+磋>'[polish]';
+磐>'[large rock]';
+磑>'[stone mill]';
+磔>'[downward stroke slanting righ]';
+磚>'[tile]';
+磧>'[sand and gravel]';
+磨>'[grind]';
+磬>'[musical instrument]';
+磯>'[jetty]';
+磴>'[steps on ledge]';
+磽>'[barren land]';
+礁>'[reef]';
+#"礇>'[................................]'",
+礎>'[foundation stone]';
+#"礎>'[foundation stone]'",
+#"礒>'[................................]'",
+礙>'[obstruct]';
+礦>'[mine]';
+礪>'[whetstone]';
+礫>'[gravel]';
+礬>'[alum]';
+示>'[show]';
+礼>'[social custom]';
+社>'[god of the soil and altars to him]';
+祀>'[to sacrifice]';
+祁>'[pray]';
+祇>'[only]';
+祈>'[pray]';
+祉>'[happiness]';
+祐>'[divine intervention]';
+祓>'[exorcise]';
+祕>'[mysterious]';
+祖>'[ancestor]';
+祗>'[respect]';
+祚>'[throne]';
+祝>'[pray for happiness or blessings]';
+神>'[spirit]';
+祟>'[evil spirit]';
+祠>'[ancestral temple]';
+祢>'[one''s deceased father]';
+祥>'[good luck]';
+票>'[slip of paper or bamboo]';
+祭>'[sacrifice to]';
+祷>'[pray]';
+祺>'[good luck]';
+祿>'[blessing]';
+禀>'[report to]';
+禁>'[restrict]';
+禄>'[blessing]';
+禅>'[meditation]';
+禊>'[semi-annual ceremony of purifica]';
+禍>'[misfortune]';
+禎>'[lucky]';
+福>'[happiness]';
+禝>'[[not found in dictionary]]';
+禦>'[defend]';
+禧>'[happiness]';
+禪>'[meditation]';
+禮>'[social custom]';
+禰>'[one''s deceased father]';
+禳>'[pray or sacrifice]';
+禹>'[legendary hsia dynasty founder]';
+禺>'[district]';
+禽>'[birds]';
+禾>'[grain still on stalk]';
+禿>'[bald]';
+秀>'[ear of grain]';
+私>'[private]';
+秉>'[grasp]';
+秋>'[autumn]';
+科>'[section]';
+秒>'[beard of grain or corn]';
+秕>'[empty grain or rice husk]';
+秘>'[secret]';
+租>'[rent]';
+#"秡>'[................................]'",
+秣>'[fodder]';
+秤>'[balance]';
+秦>'[feudal state of qin]';
+秧>'[rice seedlings]';
+秩>'[order]';
+秬>'[black millet]';
+称>'[call]';
+移>'[change place]';
+稀>'[rare]';
+稈>'[stalk of grain]';
+程>'[journey]';
+稍>'[little]';
+税>'[taxes]';
+稔>'[ripe grain]';
+稗>'[darnels]';
+#"稘>'[................................]'",
+稙>'[grain ready for grinding]';
+稚>'[young]';
+稜>'[corner]';
+稟>'[report to]';
+稠>'[dense]';
+種>'[seed]';
+稱>'[call]';
+稲>'[rice growing in field]';
+稷>'[god of cereals]';
+稻>'[rice growing in field]';
+稼>'[sow grain]';
+稽>'[examine]';
+稾>'[draft]';
+稿>'[draft]';
+穀>'[corn]';
+穂>'[ear of grain]';
+#"穃>'[................................]'",
+穆>'[majestic]';
+穉>'[young grain]';
+積>'[accumulate]';
+穎>'[rice tassel]';
+#"穎>'[rice tassel]'",
+穐>'[fall]';
+穗>'[ear of grain]';
+穡>'[farm]';
+穢>'[dirty]';
+穣>'[stalks of grain]';
+穩>'[stable]';
+穫>'[harvest]';
+穰>'[stalks of grain]';
+穴>'[cave]';
+究>'[examine]';
+穹>'[high and vast]';
+空>'[empty]';
+穽>'[hole]';
+穿>'[penetrate]';
+突>'[suddenly]';
+窃>'[secretly]';
+窄>'[narrow]';
+窈>'[obscure]';
+窒>'[stop up]';
+窓>'[window]';
+窕>'[slender]';
+窖>'[pit]';
+窗>'[window]';
+窘>'[embrassassed]';
+窟>'[hole]';
+窩>'[nest]';
+窪>'[hollow]';
+窮>'[poor]';
+窯>'[kiln]';
+窰>'[kiln]';
+窶>'[poor]';
+窺>'[peep]';
+窿>'[mine shaft]';
+竃>'[furnace]';
+竄>'[run away]';
+竅>'[hole]';
+竇>'[surname]';
+竈>'[furnace]';
+竊>'[secretly]';
+立>'[stand]';
+竍>'[decaliter]';
+竏>'[kiloliter]';
+竒>'[strange]';
+竓>'[milliliter]';
+竕>'[deciliter]';
+站>'[stand up]';
+竚>'[stand and wait for long time]';
+竜>'[dragon]';
+竝>'[combine]';
+竟>'[finally]';
+章>'[composition]';
+竡>'[hectoliter]';
+竢>'[wait for]';
+竣>'[terminate]';
+童>'[child]';
+竦>'[revere]';
+竪>'[perpendicular]';
+竭>'[put forth great effort]';
+端>'[end]';
+竰>'[centiliter]';
+競>'[contend]';
+竸>'[contend]';
+竹>'[bamboo]';
+竺>'[india]';
+竿>'[bamboo pole]';
+#"笂>'[................................]'",
+笄>'[hairpin]';
+笆>'[bamboo fence]';
+笈>'[bamboo box used carry books]';
+笊>'[ladle]';
+笋>'[bamboo shoots]';
+笏>'[tablet held by someone having au]';
+笑>'[smile]';
+#"笘>'[................................]'",
+笙>'[small gourd-shaped musical instrument]';
+笛>'[bamboo flute]';
+笞>'[bamboo rod used for beatings]';
+笠>'[bamboo hat]';
+笥>'[a hamper]';
+符>'[i.d. tag]';
+笨>'[foolish]';
+第>'[sequence]';
+笳>'[a reed leaf whistle]';
+笵>'[a bamboo form]';
+#"笶>'[................................]'",
+笹>'[small bamboo]';
+筅>'[bamboo brush]';
+筆>'[writing brush]';
+筈>'[arrow end]';
+等>'[rank]';
+筋>'[muscles]';
+筌>'[bamboo fish trap]';
+筍>'[bamboo shoot]';
+筏>'[raft]';
+筐>'[bamboo basket or chest]';
+筑>'[ancient lute]';
+筒>'[thick piece of bamboo]';
+答>'[answer]';
+策>'[scheme]';
+筝>'[stringed musical instrument]';
+筥>'[round-shaped bamboo basket for]';
+筧>'[bamboo water pipe]';
+筬>'[reed of a loom]';
+筮>'[divination with stalks of plants]';
+筰>'[cable]';
+筱>'[dwarf bamboo]';
+筴>'[type of grass used in divination]';
+筵>'[bamboo mat]';
+筺>'[bamboo basket or chest]';
+箆>'[fine-toothed comb]';
+箇>'[numerary adjunct]';
+箋>'[note]';
+箍>'[hoop]';
+箏>'[stringed musical instrument]';
+箒>'[broom]';
+箔>'[reed screen]';
+箕>'[sieve]';
+算>'[count]';
+箘>'[fine bamboo]';
+箙>'[quiver]';
+箚>'[brief note]';
+箜>'[ancient string music instrument]';
+箝>'[tweezers]';
+#"箟>'[................................]'",
+管>'[pipe]';
+箪>'[small bamboo basket for holding]';
+箭>'[arrow]';
+箱>'[case]';
+箴>'[needle]';
+箸>'[chopsticks]';
+節>'[knot]';
+篁>'[bamboo grove]';
+範>'[pattern]';
+篆>'[seal script]';
+篇>'[chapter]';
+築>'[build]';
+篋>'[ratton box]';
+篌>'[ancient music instrument]';
+篏>'[inlay]';
+篝>'[bamboo basket]';
+篠>'[dwarf bamboo]';
+篤>'[deep]';
+篥>'[bulgle]';
+篦>'[fine-toothed comb]';
+篩>'[sieve]';
+篭>'[cage]';
+篳>'[wicker]';
+#"篶>'[................................]'",
+篷>'[awning]';
+簀>'[bed mat]';
+簇>'[swarm]';
+簍>'[bamboo basket]';
+簑>'[a coir raincoat]';
+簒>'[usurp]';
+#"簓>'[................................]'",
+簔>'[a coir raincoat]';
+#"簗>'[................................]'",
+簟>'[bamboo mat]';
+簡>'[simple]';
+簣>'[bamboo basket for carrying earth]';
+簧>'[reed of woodwind instrument]';
+簪>'[hairpin]';
+簫>'[musical instrument like pan-pipes]';
+簷>'[eaves of house]';
+簸>'[winnower]';
+簽>'[sign]';
+簾>'[a blind]';
+簿>'[register]';
+籀>'[recite]';
+籃>'[basket]';
+籌>'[chip]';
+籍>'[record]';
+籏>'[flag]';
+籐>'[climbing plants]';
+籔>'[bamboo basket]';
+籖>'[tally]';
+籘>'[climbing plants]';
+籟>'[bamboo flute]';
+籠>'[cage]';
+籤>'[tally]';
+籥>'[key]';
+籬>'[bamboo or wooden fence]';
+米>'[hulled or husked uncooked rice]';
+籵>'[dm]';
+籾>'[unhulled rice]';
+粁>'[km]';
+粂>'[surname]';
+粃>'[empty husks of grain]';
+粉>'[powder]';
+粋>'[pure]';
+粍>'[mm]';
+#"粐>'[................................]'",
+粒>'[grain]';
+粕>'[lees]';
+粗>'[rough]';
+粘>'[viscous]';
+粛>'[pay respects]';
+粟>'[unhusked millet]';
+#"粡>'[................................]'",
+粢>'[grain offered in ritual sacrific]';
+粤>'[Guangdong and Guangxi provinces]';
+粥>'[rice gruel]';
+粧>'[toilet]';
+粨>'[hm]';
+#"粫>'[................................]'",
+#"粭>'[................................]'",
+粮>'[food]';
+粱>'[better varieties of millet]';
+粲>'[polish]';
+粳>'[non-glutinous rice]';
+粹>'[pure]';
+粽>'[dumpling made of glutinous rice]';
+精>'[essence]';
+#"糀>'[................................]'",
+#"糂>'[................................]'",
+糅>'[blend]';
+糊>'[paste]';
+糎>'[mm]';
+糒>'[food for a journey]';
+糖>'[sugar]';
+#"糘>'[................................]'",
+糜>'[rice gruel]';
+糞>'[manure]';
+糟>'[sediment]';
+糠>'[chaff]';
+糢>'[rice snacks]';
+糧>'[food]';
+糯>'[glutinous rice]';
+糲>'[unpolished rice]';
+糴>'[purchase grains]';
+糶>'[sell grains]';
+糸>'[silk]';
+糺>'[to collaborate]';
+系>'[system]';
+糾>'[investigate]';
+紀>'[record]';
+紂>'[name of an emperor]';
+約>'[treaty]';
+紅>'[red]';
+紆>'[bend]';
+紊>'[confused]';
+紋>'[line]';
+納>'[admit]';
+紐>'[knot]';
+純>'[pure]';
+紕>'[spoiled silk]';
+紗>'[gauze]';
+紘>'[string]';
+紙>'[paper]';
+級>'[level]';
+紛>'[in disorder]';
+紜>'[confused]';
+素>'[white (silk)]';
+紡>'[spin]';
+索>'[large rope]';
+紫>'[purple]';
+紬>'[kind of thin silk]';
+紮>'[tie]';
+累>'[tired]';
+細>'[fine]';
+紲>'[bridle]';
+紳>'[girdle]';
+紵>'[ramie]';
+紹>'[continue]';
+紺>'[dark blue color]';
+紿>'[cheat]';
+終>'[end]';
+絃>'[string on musical instrument]';
+組>'[class]';
+絅>'[unlined garment]';
+絆>'[loop]';
+#"絋>'[................................]'",
+経>'[classic works]';
+絎>'[baste]';
+絏>'[rope]';
+結>'[knot]';
+絖>'[fine silks]';
+絛>'[silk braid]';
+絞>'[twist]';
+絡>'[enmesh]';
+絢>'[variegated]';
+絣>'[to baste for sewing]';
+給>'[give]';
+絨>'[silk]';
+絮>'[waste cotton]';
+統>'[govern]';
+絲>'[silk]';
+絳>'[deep red]';
+絵>'[draw]';
+絶>'[cut]';
+絹>'[kind of thick stiff silk]';
+#"絽>'[................................]'",
+綉>'[embroider]';
+綏>'[soothe]';
+經>'[classic works]';
+継>'[continue]';
+続>'[continue]';
+#"綛>'[................................]'",
+綜>'[arrange threads for weaving]';
+#"綟>'[................................]'",
+綢>'[silk cloth]';
+綣>'[affectionate]';
+綫>'[line]';
+綬>'[silk ribbon attached as a seal]';
+維>'[maintain]';
+綮>'[embroidered banner]';
+綯>'[braid]';
+綰>'[to string together]';
+綱>'[heavy rope]';
+網>'[net]';
+綴>'[patch together]';
+綵>'[varicolored silk]';
+綸>'[green silk thread or tassel]';
+綺>'[fine thin silk]';
+綻>'[ripped seam]';
+綽>'[graceful]';
+綾>'[thin silk]';
+綿>'[cotton wad]';
+緇>'[black silk]';
+緊>'[tense]';
+緋>'[scarlet]';
+総>'[collect]';
+緑>'[green]';
+緒>'[end of thread]';
+#"緕>'[................................]'",
+緘>'[seal]';
+線>'[thread]';
+緜>'[cotton wad]';
+緝>'[to sew in close stitches]';
+緞>'[satin]';
+締>'[tie]';
+緡>'[fishing-line]';
+緤>'[cord]';
+編>'[knit]';
+緩>'[slow]';
+緬>'[distant]';
+緯>'[woof]';
+緲>'[indistinct]';
+練>'[practice]';
+緻>'[delicate]';
+縁>'[hem]';
+縄>'[rope]';
+#"縄>'[rope]'",
+縉>'[red silk]';
+縊>'[hang]';
+縋>'[climd down rope]';
+#"縑>'[fine silk]'",
+縛>'[to tie]';
+縞>'[white raw silk]';
+縟>'[decorative]';
+縡>'[matter]';
+縢>'[bind]';
+縣>'[county]';
+縦>'[indulge in]';
+縫>'[sew]';
+縮>'[contract]';
+縱>'[indulge in]';
+縲>'[chain or rope used bind criminal]';
+縵>'[plain silk]';
+縷>'[thread]';
+縹>'[light blue silk]';
+#"縺>'[................................]'",
+縻>'[halter for ox]';
+總>'[collect]';
+績>'[spin]';
+繁>'[complicated]';
+繃>'[bind]';
+繆>'[wind around]';
+繊>'[fine]';
+繋>'[attach]';
+繍>'[embroider]';
+織>'[weave]';
+繕>'[repair]';
+繖>'[umbrella]';
+繙>'[interpret]';
+繚>'[wind round]';
+#"繝>'[................................]'",
+繞>'[entwine]';
+繦>'[string of copper coins]';
+#"繧>'[................................]'",
+繩>'[rope]';
+繪>'[draw]';
+繭>'[cocoon]';
+繰>'[to reel silk from cocoons]';
+繹>'[unravel or unreel silk]';
+繻>'[fine silk guaze]';
+繼>'[continue]';
+繽>'[flourishing]';
+#"繿>'[................................]'",
+纂>'[edit]';
+#"纃>'[................................]'",
+纈>'[patterned silk]';
+#"纉>'[................................]'",
+續>'[continue]';
+纎>'[fine]';
+纏>'[wrap]';
+#"纐>'[................................]'",
+纒>'[wrap]';
+纓>'[chin strap]';
+纔>'[talent]';
+纖>'[fine]';
+纛>'[a banner]';
+纜>'[hawser]';
+缶>'[earthen crock or jar]';
+缸>'[earthen jug]';
+缺>'[be short of]';
+罅>'[crack]';
+罌>'[long necked jar or bottle]';
+罍>'[large earthenware wine jar]';
+罎>'[an earthenware jar]';
+罐>'[jar]';
+网>'[net]';
+罔>'[net]';
+罕>'[rare]';
+罘>'[screen used in ancient times]';
+罟>'[net]';
+罠>'[animal trap]';
+#"罧>'[................................]'",
+罨>'[medical compress]';
+罩>'[basket for catching fish]';
+罪>'[crime]';
+罫>'[hinder]';
+置>'[place]';
+罰>'[penalty]';
+署>'[public office]';
+罵>'[accuse]';
+罷>'[cease]';
+罸>'[penalty]';
+罹>'[sorrow]';
+#"羂>'[................................]'",
+羃>'[cover-cloth]';
+羅>'[net for catching birds]';
+羆>'[brown bear]';
+羇>'[inn]';
+羈>'[halter]';
+羊>'[sheep]';
+羌>'[qiang nationality]';
+美>'[beautiful]';
+羔>'[lamb]';
+羚>'[species of antelope]';
+羝>'[ram]';
+羞>'[disgrace]';
+羣>'[group]';
+群>'[group]';
+羨>'[envy]';
+義>'[right conduct]';
+羮>'[soup]';
+羯>'[wether]';
+羲>'[ancient emperor]';
+羶>'[rank odor]';
+羸>'[weak]';
+羹>'[soup]';
+羽>'[feather]';
+翁>'[old man]';
+翅>'[wings]';
+翆>'[color green]';
+翊>'[flying]';
+翌>'[bright]';
+習>'[practice]';
+翔>'[soar]';
+翕>'[agree]';
+翠>'[color green]';
+翡>'[kingfisher]';
+翦>'[scissors]';
+翩>'[fly]';
+翫>'[careless]';
+翰>'[writing brush]';
+翳>'[shade]';
+翹>'[turn up]';
+翻>'[flip over]';
+翼>'[wings]';
+耀>'[shine]';
+老>'[old]';
+考>'[examine]';
+耄>'[elderly person]';
+者>'[that which]';
+耆>'[man of sixty]';
+耋>'[aged]';
+而>'[and]';
+耐>'[endure]';
+耒>'[handle of plow]';
+耕>'[plow]';
+耗>'[consume]';
+耘>'[weed]';
+耙>'[rake]';
+耜>'[spade-shaped tool]';
+耡>'[hoe]';
+耨>'[hoe]';
+耳>'[ear]';
+耶>'[used in transliteration]';
+耻>'[shame]';
+耽>'[indulge in]';
+耿>'[bright]';
+聆>'[listen]';
+聊>'[somewhat]';
+聒>'[clamor]';
+聖>'[holy]';
+聘>'[engage]';
+聚>'[assemble]';
+聞>'[hear]';
+聟>'[son-in-law]';
+聡>'[intelligent]';
+#"聢>'[................................]'",
+聨>'[connect]';
+聯>'[connect]';
+聰>'[intelligent]';
+聲>'[sound]';
+聳>'[urge on]';
+聴>'[hear]';
+聶>'[whisper]';
+職>'[duty]';
+聹>'[earwax]';
+聽>'[hear]';
+聾>'[deaf]';
+聿>'[writing brush]';
+肄>'[learn]';
+肅>'[pay respects]';
+肆>'[indulge]';
+肇>'[begin]';
+肉>'[flesh]';
+肋>'[ribs]';
+肌>'[muscle tissue]';
+肓>'[region between heart and diaphragm]';
+肖>'[look like]';
+肘>'[elbow]';
+肚>'[belly]';
+肛>'[anus]';
+肝>'[liver]';
+股>'[thighs]';
+肢>'[human limbs]';
+肥>'[fat]';
+肩>'[shoulders]';
+肪>'[animal fat]';
+肬>'[wart]';
+肭>'[fat]';
+肯>'[willing]';
+肱>'[forearm]';
+育>'[produce]';
+肴>'[cooked or prepared meat]';
+肺>'[lungs]';
+胃>'[stomach]';
+胄>'[helmet]';
+胆>'[gall bladder]';
+背>'[back]';
+胎>'[unborn child]';
+胖>'[fat]';
+胙>'[food offered in sacrificial serv]';
+胚>'[embryo]';
+胛>'[the shoulder]';
+胝>'[callous]';
+胞>'[womb]';
+胡>'[recklessly]';
+胤>'[heir]';
+胥>'[all]';
+胯>'[pelvis]';
+胱>'[bladder]';
+胴>'[the large intestine]';
+胸>'[breast]';
+胼>'[callus]';
+能>'[be able]';
+脂>'[fat]';
+脅>'[ribs]';
+脆>'[crisp]';
+脇>'[ribs]';
+脈>'[blood vessels]';
+脉>'[blood vessels]';
+脊>'[spine]';
+脚>'[leg]';
+脛>'[shinbone]';
+脣>'[lips]';
+脩>'[dried meat (used as teachers payment in ancient times)]';
+脯>'[dried meat]';
+脱>'[take off]';
+脳>'[brain]';
+脹>'[swell]';
+脾>'[spleen]';
+腆>'[prosperous]';
+腋>'[armpit]';
+腎>'[kidneys]';
+腐>'[rot]';
+腑>'[bowels]';
+腓>'[calf]';
+腔>'[chest cavity]';
+腕>'[wrist]';
+腟>'[vagina]';
+腥>'[raw meat]';
+腦>'[brain]';
+腫>'[swell]';
+腮>'[lower part of face]';
+腰>'[waist]';
+腱>'[tendons]';
+腴>'[fat]';
+腸>'[intestines]';
+腹>'[stomach]';
+腺>'[gland]';
+腿>'[legs]';
+膀>'[upper arm]';
+膂>'[backbone]';
+膃>'[fat]';
+膈>'[diaphragm]';
+膊>'[shoulders]';
+膏>'[grease]';
+膓>'[intestines]';
+膕>'[hollow]';
+膚>'[skin]';
+膜>'[membrane]';
+膝>'[knee]';
+膠>'[glue]';
+膣>'[vagina]';
+#"膤>'[................................]'",
+膨>'[swell]';
+膩>'[greasy]';
+膰>'[cook meat for sacrifice or offer]';
+膳>'[meals]';
+膵>'[pancreas]';
+#"膸>'[................................]'",
+膺>'[breast]';
+膽>'[gall bladder]';
+膾>'[minced meat or fish]';
+膿>'[pus]';
+臀>'[buttocks]';
+臂>'[arm]';
+臆>'[chest]';
+臈>'[year end sacrifice]';
+臉>'[face]';
+臍>'[abdominal area of crab]';
+臑>'[soft]';
+臓>'[internal organs]';
+臘>'[year end sacrifice]';
+臙>'[rouge]';
+臚>'[arrange in order]';
+臟>'[internal organs]';
+臠>'[small lump of meat]';
+臣>'[minister]';
+臥>'[lie down]';
+臧>'[good]';
+臨>'[draw near]';
+自>'[self]';
+臭>'[smell]';
+至>'[reach]';
+致>'[send]';
+臺>'[tower]';
+臻>'[reach]';
+臼>'[mortar]';
+臾>'[moment]';
+舁>'[carry on one''s shoulder]';
+舂>'[grind in mortar]';
+舅>'[mother''s brother]';
+與>'[and]';
+興>'[thrive]';
+舉>'[raise]';
+舊>'[old]';
+舌>'[tongue]';
+舍>'[house]';
+舎>'[house]';
+舐>'[lick with tongue]';
+舒>'[open up]';
+舖>'[store]';
+舗>'[store]';
+舘>'[a mansion]';
+舛>'[oppose]';
+舜>'[legendary ruler]';
+舞>'[dance]';
+舟>'[boat]';
+舩>'[boat]';
+航>'[sail]';
+舫>'[fancy boat]';
+般>'[sort]';
+舮>'[bow or prow of boat]';
+舳>'[stern of ship]';
+舵>'[rudder]';
+舶>'[large]';
+舷>'[sides of boat]';
+舸>'[large boat]';
+船>'[ship]';
+艀>'[[not found in dictionary]]';
+艇>'[small boat]';
+艘>'[counter for ships]';
+艙>'[hold of ship]';
+艚>'[ship]';
+#"艝>'[................................]'",
+艟>'[ancient warship]';
+艢>'[a mast]';
+艤>'[to moor a boat to the bank]';
+艦>'[warship]';
+艨>'[long and narrow war-boat]';
+艪>'[oar]';
+艫>'[bow or prow of boat]';
+艮>'[seventh of eight diagrams]';
+良>'[good]';
+艱>'[difficult]';
+色>'[color]';
+艶>'[beautiful]';
+艷>'[beautiful]';
+艸>'[grass]';
+艾>'[artemisia]';
+芋>'[taro]';
+芍>'[peony]';
+芒>'[miscanthus sinensis]';
+芙>'[hibiscus]';
+芝>'[purplish mushroom thought promot]';
+芟>'[mow]';
+芥>'[mustard plant]';
+芦>'[rushes]';
+芫>'[daphne genkwa]';
+芬>'[fragrance]';
+芭>'[plantain or banana palm]';
+芯>'[pith from rush (juncus effusus)]';
+花>'[flower]';
+芳>'[fragrant]';
+芸>'[rue]';
+芹>'[celery]';
+芻>'[mow]';
+芽>'[bud]';
+苅>'[cut off]';
+苑>'[pasture]';
+苒>'[lush]';
+苓>'[fungus]';
+苔>'[moss]';
+苗>'[sprouts]';
+苙>'[pigsty]';
+苛>'[small]';
+苜>'[clover]';
+苞>'[variety of rush]';
+苟>'[careless]';
+苡>'[barley]';
+苣>'[kind of lettuce]';
+若>'[if]';
+苦>'[bitter]';
+苧>'[china grass]';
+苫>'[rush or straw matting]';
+英>'[petal]';
+#"苳>'[................................]'",
+苴>'[sackcloth]';
+苹>'[artemisia]';
+苺>'[berries]';
+苻>'[kind of herb]';
+茂>'[thick]';
+范>'[surname]';
+茄>'[eggplant]';
+茅>'[reeds]';
+茆>'[species of grass]';
+茉>'[white jasmine]';
+茎>'[stem]';
+茖>'[allium victorialis]';
+茗>'[tea]';
+#"茗>'[tea]'",
+茜>'[madder]';
+#"茣>'[................................]'",
+茨>'[caltrop]';
+茫>'[vast]';
+茯>'[china root]';
+茱>'[dogwood]';
+茲>'[now]';
+茴>'[fennel]';
+茵>'[cushion]';
+茶>'[tea]';
+茸>'[soft]';
+茹>'[roots]';
+荀>'[surname]';
+荅>'[answer: small bean]';
+草>'[grass]';
+荊>'[thorns]';
+荏>'[beans]';
+荐>'[repeat]';
+荒>'[wasteland]';
+荘>'[village]';
+荳>'[beans]';
+#"荵>'[................................]'",
+荷>'[lotus]';
+荻>'[reed]';
+荼>'[bitter vegetable]';
+莅>'[attend]';
+#"莇>'[................................]'",
+莉>'[white jasmine]';
+莊>'[village]';
+莎>'[kind of sedge grass]';
+莓>'[moss]';
+莖>'[stem]';
+莚>'[bamboo mat]';
+莞>'[smiling]';
+#"莟>'[................................]'",
+莠>'[weeds]';
+莢>'[pods of leguminous plants]';
+莨>'[herb]';
+莪>'[artemisia]';
+莫>'[do not]';
+莱>'[goosefoot]';
+莵>'[dodder]';
+莽>'[thicket]';
+菁>'[flower of leek family]';
+菅>'[coarse grass]';
+菊>'[chrysanthemum]';
+菌>'[mushroom]';
+菎>'[beautiful jade]';
+菓>'[fruits]';
+菖>'[iris]';
+菘>'[celery]';
+菜>'[vegetables]';
+菟>'[dodder]';
+菠>'[spinach and similar greens]';
+菩>'[herb]';
+菫>'[celery]';
+華>'[flowery]';
+菰>'[wild rice]';
+菱>'[water-chestnut]';
+菲>'[fragrant]';
+菴>'[small buddhist monastery]';
+#"菷>'[................................]'",
+菻>'[artemisia]';
+菽>'[beans and peas]';
+萃>'[dense]';
+萄>'[grapes]';
+萇>'[averrhora carambola]';
+萋>'[luxuriant foliage]';
+萌>'[bud]';
+萍>'[duckweed]';
+萎>'[wither]';
+#"萓>'[................................]'",
+萠>'[bud]';
+#"萢>'[................................]'",
+萩>'[scandent hop]';
+#"萪>'[................................]'",
+萬>'[ten thousand]';
+萱>'[day-lily]';
+萵>'[lettuce]';
+萸>'[dogwood]';
+萼>'[calyx of flower]';
+落>'[fall]';
+葆>'[reserve]';
+葉>'[leaf]';
+#"葎>'[................................]'",
+著>'[manifest]';
+葛>'[edible bean]';
+葡>'[grapes]';
+葢>'[cover]';
+董>'[direct]';
+葦>'[reed]';
+葩>'[flowers]';
+葫>'[bottle-gourd]';
+葬>'[bury]';
+葭>'[bulrush]';
+#"葭>'[bulrush]'",
+葯>'[leaf of angelica plant]';
+葱>'[scallions]';
+葵>'[sunflower]';
+葷>'[meat diet]';
+葹>'[kind of chrysanthemum]';
+葺>'[thatch]';
+蒂>'[peduncle or stem of plants]';
+#"蒄>'[................................]'",
+蒋>'[surname]';
+蒐>'[collect]';
+蒔>'[transplant]';
+蒙>'[cover]';
+蒜>'[garlic]';
+蒟>'[betel pepper]';
+蒡>'[burdock]';
+蒭>'[to cutgrass]';
+蒲>'[type of rush]';
+蒸>'[steam]';
+蒹>'[reed]';
+蒻>'[rushes]';
+蒼>'[blue]';
+蒿>'[mugwort]';
+蓁>'[abundant]';
+蓄>'[store]';
+蓆>'[straw mat]';
+蓉>'[hibiscus]';
+蓊>'[luxuriant vegetation]';
+蓋>'[cover]';
+蓍>'[milfoil]';
+蓐>'[straw bed mat]';
+蓑>'[rain coat made of straw]';
+蓖>'[castor-oil plant]';
+#"蓙>'[................................]'",
+蓚>'[oxalic (used in compounds)]';
+蓬>'[type of raspberry]';
+蓮>'[lotus]';
+蓴>'[edible water plant]';
+蓼>'[smartweed]';
+蓿>'[clover]';
+蔀>'[screen]';
+蔆>'[water-chestnut]';
+蔑>'[disdain]';
+蔓>'[creeping plants]';
+蔔>'[radish]';
+蔕>'[peduncle or stem of plants]';
+蔗>'[sugar cane]';
+蔘>'[ginsen]';
+蔚>'[luxuriant]';
+蔟>'[frame on which silkworms spin]';
+蔡>'[surname]';
+蔦>'[parasitic plants]';
+蔬>'[vegetables]';
+蔭>'[shade]';
+蔵>'[hide]';
+蔽>'[cover]';
+#"蕀>'[................................]'",
+蕁>'[nettle]';
+蕃>'[foreign things]';
+蕈>'[mushrooms]';
+蕉>'[banana]';
+蕊>'[unopened flowers]';
+蕋>'[unopened flowers]';
+蕎>'[buckwheat]';
+蕕>'[caryopteris divaricata]';
+#"蕗>'[................................]'",
+蕘>'[fuel]';
+蕚>'[calyx of flower]';
+蕣>'[hibiscus]';
+蕨>'[pteris aquilina]';
+蕩>'[pond]';
+蕪>'[luxurious growth of weeds]';
+蕭>'[common artemisia]';
+蕷>'[yam]';
+蕾>'[buds]';
+薀>'[the hippuris or mare''s tail plant]';
+薄>'[thin]';
+薇>'[osmunda regalis]';
+薈>'[luxuriant]';
+薊>'[circium]';
+薐>'[spinach]';
+薑>'[ginger]';
+薔>'[rose]';
+薗>'[garden]';
+薙>'[weed]';
+薛>'[kind of marsh grass]';
+薜>'[evergreen shrubs]';
+薤>'[allium bakeri]';
+薦>'[offer]';
+薨>'[death of prince]';
+薩>'[transliteration of \"sat\" of boddhisattva etc.]';
+薪>'[fuel]';
+薫>'[a medicinal herb]';
+薬>'[drugs]';
+薮>'[marsh]';
+薯>'[yam]';
+薹>'[cyperus rotundus]';
+薺>'[water-chestnuts]';
+藁>'[straw]';
+藉>'[mat]';
+藍>'[blue]';
+藏>'[hide]';
+藐>'[disregard]';
+藕>'[lotus root]';
+藜>'[chenopodium album]';
+藝>'[art]';
+藤>'[rattan]';
+藥>'[drugs]';
+藩>'[fence]';
+藪>'[marsh]';
+藷>'[yam]';
+藹>'[lush]';
+藺>'[rush used in making mats]';
+藻>'[splendid]';
+藾>'[shade]';
+蘂>'[stamen or pistil]';
+蘆>'[rushes]';
+蘇>'[thyme]';
+蘊>'[collect]';
+蘋>'[apple]';
+蘓>'[thyme]';
+蘖>'[stump]';
+蘗>'[stump]';
+蘚>'[moss]';
+蘢>'[tall grass]';
+蘭>'[orchid]';
+蘯>'[to toss about]';
+#"蘯>'[to toss about]'",
+蘿>'[type of creeping plant]';
+虍>'[tiger]';
+虎>'[tiger]';
+虐>'[cruel]';
+虔>'[act with reverence]';
+處>'[place]';
+虚>'[false]';
+虜>'[capture]';
+虞>'[concerned about]';
+號>'[mark]';
+虧>'[lose]';
+虫>'[insects]';
+虱>'[louse]';
+虹>'[rainbow]';
+虻>'[horsefly]';
+蚊>'[mosquito]';
+蚋>'[gnat]';
+蚌>'[oysters]';
+蚓>'[earthworm]';
+蚕>'[silkworms]';
+蚣>'[centipede]';
+蚤>'[flea]';
+蚩>'[worm]';
+蚪>'[tadpole]';
+蚫>'[abalone]';
+蚯>'[earthworm]';
+蚰>'[millipede]';
+蚶>'[kind of clam]';
+蛄>'[mole cricket]';
+蛆>'[maggots]';
+蛇>'[snake]';
+蛉>'[dragonfly]';
+蛋>'[eggs]';
+蛍>'[glow-worm]';
+蛎>'[oyster]';
+蛔>'[tapeworm]';
+蛙>'[frog]';
+蛛>'[spider]';
+蛞>'[snail]';
+蛟>'[scaly dragon with four legs]';
+蛤>'[clam]';
+蛩>'[cricket]';
+#"蛩>'[cricket]'",
+蛭>'[leech]';
+蛮>'[barbarians]';
+蛯>'[shrimp]';
+蛸>'[long legged spider]';
+蛹>'[chrysalis]';
+蛻>'[molt]';
+蛾>'[moth]';
+蜀>'[name of an ancient state]';
+蜂>'[bee]';
+蜃>'[marine monster which can change its shape]';
+蜆>'[a variety of bivalves]';
+蜈>'[centipede]';
+蜉>'[mayfly]';
+蜊>'[clam]';
+蜍>'[toad]';
+蜑>'[egg]';
+蜒>'[millipede]';
+蜘>'[spider]';
+蜚>'[cockroach]';
+蜜>'[honey]';
+蜥>'[lizard]';
+蜩>'[cicada]';
+蜴>'[lizard]';
+蜷>'[creep like worm]';
+蜻>'[dragonfly]';
+蜿>'[creep]';
+蝉>'[cicada]';
+蝋>'[wax]';
+蝌>'[tadpole]';
+蝎>'[scorpion]';
+蝓>'[snail]';
+蝕>'[nibble away]';
+蝗>'[kind of locust]';
+蝙>'[bat]';
+蝟>'[hedgehog]';
+蝠>'[kind of bat]';
+蝣>'[mayfly]';
+蝦>'[shrimp]';
+蝨>'[louse]';
+#"蝨>'[louse]'",
+蝮>'[venomous snake]';
+蝴>'[butterfly]';
+蝶>'[butterfly]';
+蝸>'[snail]';
+蝿>'[flies]';
+螂>'[mantis]';
+融>'[melt]';
+螟>'[kind of caterpillar]';
+螢>'[glow-worm]';
+螫>'[poison]';
+螯>'[nippers]';
+螳>'[mantis]';
+螺>'[spiral shell]';
+螻>'[gryllotalpa africana]';
+螽>'[katydid]';
+蟀>'[cricket]';
+蟄>'[to hibernate]';
+蟆>'[frog]';
+蟇>'[frog]';
+蟋>'[cricket]';
+#"蟋>'[cricket]'",
+蟒>'[python]';
+蟠>'[coil]';
+蟯>'[worms]';
+蟲>'[worms]';
+蟶>'[razor clam]';
+蟷>'[mantis]';
+蟹>'[crab]';
+蟻>'[ants]';
+蟾>'[toad]';
+蠅>'[flies]';
+蠍>'[scorpion]';
+蠎>'[python]';
+蠏>'[crab]';
+蠑>'[lizard]';
+蠕>'[eumenes polifomis]';
+蠖>'[measuring worm]';
+蠡>'[wood-boring insect]';
+蠢>'[wriggle]';
+蠣>'[oyster]';
+蠧>'[moth]';
+蠱>'[posion]';
+蠶>'[silkworms]';
+蠹>'[moth]';
+蠻>'[barbarians]';
+血>'[blood]';
+衂>'[to be defeated]';
+衄>'[epistaxis]';
+衆>'[multitude]';
+行>'[go]';
+衍>'[overflow]';
+衒>'[brag]';
+術>'[art]';
+街>'[street]';
+衙>'[public office]';
+衛>'[guard]';
+衝>'[rush against]';
+衞>'[guard]';
+衡>'[measure]';
+衢>'[highway]';
+衣>'[clothes]';
+表>'[show]';
+衫>'[shirt]';
+衰>'[decline]';
+衲>'[mend]';
+衵>'[chemise]';
+衷>'[heart]';
+衽>'[lapel]';
+衾>'[coverlet]';
+衿>'[collar or lapel of garment]';
+袁>'[robe]';
+袂>'[sleeves]';
+袈>'[buddhist cassock]';
+袋>'[pocket]';
+袍>'[long gown]';
+袒>'[strip]';
+袖>'[sleeve]';
+袗>'[unlined garments]';
+#"袙>'[................................]'",
+袞>'[ceremonial dress worn by emperor]';
+袢>'[robe]';
+袤>'[longitude]';
+被>'[passive indicator \"by\"]';
+#"袮>'[................................]'",
+#"袰>'[................................]'",
+袱>'[piece of cloth used wrap bundles]';
+袴>'[pants]';
+袵>'[lapel]';
+袷>'[lined garment]';
+袿>'[gown]';
+裁>'[cut out]';
+裂>'[split]';
+#"裂>'[split]'",
+#"裂>'[split]'",
+装>'[dress]';
+裏>'[inside]';
+裔>'[progeny]';
+裕>'[abundant]';
+裘>'[fur garments]';
+裙>'[skirt]';
+補>'[mend]';
+裝>'[dress]';
+裟>'[a cassock or robe of a monk]';
+裡>'[inside]';
+裨>'[aid]';
+裲>'[waistcoat]';
+裳>'[clothes]';
+裴>'[surname]';
+裸>'[bare]';
+裹>'[wrap]';
+裼>'[to take off one''s top]';
+製>'[make]';
+裾>'[lapel]';
+褂>'[jacket]';
+#"褃>'[a seam in a garment]'",
+複>'[repeat]';
+褊>'[cramped]';
+褌>'[trousers]';
+褐>'[coarse woolen cloth]';
+褒>'[praise]';
+褓>'[swaddling cloth]';
+褝>'[unlined garment]';
+#"褞>'[................................]'",
+褥>'[mattress]';
+褪>'[strip]';
+褫>'[strip]';
+褶>'[pleat]';
+褸>'[lapel]';
+褻>'[dirty]';
+襁>'[swaddling clothes]';
+襃>'[commend]';
+襄>'[aid]';
+襌>'[unlined garment]';
+襍>'[mixed]';
+襖>'[outer garments]';
+襞>'[fold]';
+襟>'[lapel]';
+襠>'[crotch or seat of pants]';
+襤>'[ragged]';
+襦>'[short coat]';
+襪>'[socks]';
+襭>'[tuck up hem of garment and wrap]';
+襯>'[underwear]';
+襲>'[raid]';
+襴>'[a one piece garment]';
+#"襶>'[ignorant]'",
+襾>'[cover]';
+西>'[west(ern)]';
+要>'[necessary]';
+覃>'[reach to]';
+覆>'[cover]';
+覇>'[rule by might rather than right]';
+覈>'[investigate]';
+覊>'[halter]';
+見>'[see]';
+規>'[rules]';
+覓>'[seek]';
+視>'[look at]';
+覗>'[peek]';
+覘>'[peek]';
+覚>'[wake up from sleep]';
+覡>'[wizard]';
+覦>'[desire strongly]';
+覧>'[look at]';
+覩>'[see]';
+親>'[relatives]';
+覬>'[covet]';
+覯>'[meet or see unexpectedly]';
+覲>'[have imperial audience]';
+観>'[see]';
+覺>'[wake up from sleep]';
+覽>'[look at]';
+覿>'[see]';
+觀>'[see]';
+角>'[horn]';
+觚>'[jug]';
+觜>'[beak]';
+觝>'[gore]';
+解>'[loosen]';
+触>'[butt]';
+觧>'[loosen]';
+觴>'[wine vessel]';
+觸>'[touch]';
+言>'[words]';
+訂>'[draw up agreement]';
+訃>'[obituary]';
+計>'[plan]';
+訊>'[inquire]';
+訌>'[confusion]';
+討>'[ask for]';
+訐>'[expose other''s secrets]';
+訓>'[teach]';
+訖>'[finish]';
+託>'[entrust]';
+記>'[record]';
+訛>'[swindle]';
+訝>'[express surprise]';
+訟>'[accuse]';
+訣>'[take leave of]';
+訥>'[slow of speech]';
+訪>'[visit]';
+設>'[build]';
+許>'[allow]';
+訳>'[translate]';
+訴>'[accuse]';
+訶>'[scold loudly]';
+診>'[examine patient]';
+註>'[explain]';
+証>'[prove]';
+詁>'[exegesis]';
+詆>'[slander]';
+詈>'[scold]';
+詐>'[cheat]';
+詑>'[cheat]';
+詒>'[bequeath]';
+詔>'[decree]';
+評>'[appraise]';
+詛>'[curse]';
+詞>'[words]';
+詠>'[sing]';
+詢>'[inquire into]';
+詣>'[reach]';
+試>'[test]';
+詩>'[poetry]';
+詫>'[be surprised]';
+詬>'[abuse]';
+詭>'[deceive]';
+詮>'[explain]';
+詰>'[question]';
+話>'[speech]';
+該>'[should]';
+詳>'[detailed]';
+詼>'[tease]';
+誂>'[tempt]';
+誄>'[eulogize]';
+誅>'[execute]';
+誇>'[exaggerate]';
+誉>'[fame]';
+誌>'[write down]';
+認>'[recognize]';
+誑>'[deceive]';
+誓>'[swear]';
+誕>'[bear children]';
+誘>'[persuade]';
+誚>'[criticize]';
+語>'[language]';
+誠>'[sincere]';
+誡>'[warn]';
+誣>'[make false accusation]';
+誤>'[err]';
+誥>'[inform]';
+誦>'[recite]';
+誨>'[teach]';
+説>'[speak]';
+読>'[read]';
+誰>'[who? whom? whose? anyone?]';
+課>'[lesson]';
+誹>'[slander]';
+誼>'[friendship]';
+調>'[transfer]';
+諂>'[flatter]';
+諄>'[patient]';
+談>'[talk]';
+請>'[ask]';
+諌>'[remonstrate]';
+諍>'[to expostulate]';
+諏>'[consult]';
+諒>'[excuse]';
+論>'[debate]';
+諚>'[(kokuji) command]';
+諛>'[flatter]';
+諜>'[intelligence report]';
+諞>'[brag]';
+諠>'[noisy]';
+諡>'[posthumous name]';
+諢>'[jokes]';
+諤>'[honest speech]';
+諦>'[careful]';
+諧>'[harmonize]';
+諫>'[remonstrate]';
+諭>'[proclaim]';
+諮>'[consult]';
+諱>'[conceal]';
+諳>'[versed in]';
+諷>'[recite]';
+諸>'[several]';
+諺>'[proverb]';
+諾>'[promise]';
+謀>'[plan]';
+謁>'[visit]';
+謂>'[say]';
+謄>'[copy]';
+謇>'[stutter]';
+謌>'[slander]';
+謎>'[riddle]';
+謐>'[calm]';
+謔>'[jeer]';
+謖>'[rise up]';
+謗>'[slander]';
+謙>'[humble]';
+謚>'[to confer posthumous titles]';
+講>'[explain]';
+謝>'[thank]';
+謠>'[sing]';
+謡>'[sing]';
+謦>'[t speak softly]';
+謨>'[scheme]';
+謫>'[charge]';
+謬>'[error]';
+謳>'[sing]';
+謹>'[prudent]';
+謾>'[deceive]';
+譁>'[noise]';
+證>'[proof]';
+譌>'[false]';
+譎>'[cunning]';
+譏>'[ridicule]';
+譖>'[to slander]';
+識>'[recognize]';
+譚>'[surname]';
+譛>'[to slander]';
+譜>'[register]';
+譟>'[clamor]';
+警>'[guard]';
+譫>'[talkative]';
+譬>'[metaphor]';
+譯>'[translate]';
+議>'[consult]';
+#"譱>'[................................]'",
+譲>'[allow]';
+譴>'[reprimand]';
+護>'[protect]';
+譽>'[fame]';
+讀>'[read]';
+讃>'[praise]';
+變>'[change]';
+讌>'[feast]';
+讎>'[enemy]';
+讐>'[enemy]';
+讒>'[slander]';
+讓>'[allow]';
+讖>'[prophecy]';
+讙>'[cheer]';
+讚>'[praise]';
+谷>'[valley]';
+谺>'[the mouth of a valley]';
+谿>'[valley]';
+豁>'[open up]';
+豆>'[beans]';
+豈>'[how? what?]';
+豊>'[abundant]';
+豌>'[peas]';
+豎>'[vertical]';
+豐>'[abundant]';
+豕>'[pigs]';
+豚>'[small pig]';
+象>'[elephant]';
+豢>'[domestic animals]';
+豪>'[brave]';
+豫>'[relaxed]';
+豬>'[pig]';
+豸>'[radical 153]';
+豹>'[leopard]';
+豺>'[wolf]';
+豼>'[fox]';
+貂>'[marten]';
+貅>'[brave]';
+貉>'[badger]';
+貊>'[leopard]';
+貌>'[countenance]';
+貍>'[a fox-like animal]';
+貎>'[lion]';
+貔>'[fox]';
+貘>'[the panther]';
+貝>'[sea shell]';
+貞>'[virtuous]';
+負>'[load]';
+財>'[wealth]';
+貢>'[offer tribute]';
+貧>'[poor]';
+貨>'[goods]';
+販>'[peddler]';
+貪>'[greedy]';
+貫>'[string of 1000 coins]';
+責>'[one''s responsibility]';
+貭>'[matter]';
+貮>'[number two]';
+貯>'[store]';
+貰>'[borrow]';
+貲>'[property]';
+貳>'[number two]';
+貴>'[expensive]';
+貶>'[decrease]';
+買>'[buy]';
+貸>'[lend]';
+費>'[expenses]';
+貼>'[paste to]';
+貽>'[give to]';
+貿>'[trade]';
+賀>'[congratulate]';
+賁>'[forge ahead]';
+賂>'[bribe]';
+賃>'[rent]';
+賄>'[bribe]';
+資>'[property]';
+賈>'[surname]';
+賊>'[thief]';
+賍>'[booty]';
+賎>'[mean]';
+賑>'[relieve]';
+賓>'[guest]';
+賚>'[give]';
+賛>'[help]';
+賜>'[give]';
+賞>'[reward]';
+賠>'[indemnify]';
+賢>'[virtuous]';
+賣>'[sell]';
+賤>'[mean]';
+賦>'[tax]';
+質>'[matter]';
+賭>'[bet]';
+賺>'[make money]';
+賻>'[gift of money help pay funeral]';
+購>'[buy]';
+賽>'[compete]';
+贄>'[gift superior]';
+贅>'[unnecessary]';
+贇>'[affable]';
+贈>'[give present]';
+贊>'[help]';
+贋>'[false]';
+贍>'[support]';
+贏>'[win]';
+贐>'[farewell present]';
+贓>'[booty]';
+贔>'[strong]';
+贖>'[buy]';
+赤>'[red]';
+赦>'[forgive]';
+赧>'[blush]';
+赫>'[bright]';
+赭>'[reddish brown]';
+走>'[walk]';
+赱>'[walk]';
+赳>'[grand]';
+赴>'[go to]';
+起>'[rise]';
+趁>'[take advantage of]';
+超>'[jump over]';
+越>'[exceed]';
+趙>'[surname]';
+趣>'[what attracts one''s attention]';
+趨>'[hasten]';
+足>'[foot]';
+趺>'[sit cross-legged]';
+趾>'[toe]';
+跂>'[creeping]';
+跋>'[go by foot]';
+跌>'[stumble]';
+跏>'[sit cross-legged]';
+跖>'[sole (of the foot)]';
+跚>'[stagger]';
+跛>'[lame]';
+距>'[distance]';
+跟>'[heel]';
+跡>'[search]';
+跣>'[bare footed]';
+跨>'[straddle]';
+跪>'[kneel]';
+跫>'[sound of footsteps]';
+路>'[road]';
+跳>'[jump]';
+践>'[trample]';
+跼>'[bent]';
+#"跿>'[................................]'",
+踈>'[neglect]';
+踉>'[hop]';
+踊>'[leap]';
+踏>'[step on]';
+踐>'[trample]';
+踝>'[ankle]';
+踞>'[crouch]';
+踟>'[hesitate]';
+踪>'[footprints]';
+踰>'[exceed]';
+踴>'[leap]';
+踵>'[heel]';
+蹂>'[trample under foot]';
+蹄>'[hoof]';
+蹇>'[lame]';
+蹈>'[stamp feet]';
+蹉>'[error]';
+蹊>'[footpath]';
+蹌>'[walk rapidly]';
+蹐>'[take short steps]';
+蹕>'[clear way]';
+蹙>'[urgent]';
+蹟>'[trace]';
+蹠>'[step on]';
+蹣>'[to jump over]';
+蹤>'[footprints]';
+蹲>'[squat]';
+蹴>'[kick]';
+蹶>'[stumble]';
+蹼>'[webbed feet of waterfowl]';
+躁>'[tense]';
+躄>'[cripple]';
+躅>'[walk carefully]';
+躇>'[hesitate]';
+躊>'[hesitate]';
+躋>'[ascend]';
+躍>'[skip]';
+躑>'[waver]';
+躓>'[stumble]';
+躔>'[follow in]';
+躙>'[trample down]';
+躡>'[tread]';
+躪>'[trample down]';
+身>'[body]';
+躬>'[body]';
+躯>'[body]';
+躰>'[body]';
+躱>'[hide]';
+#"躺>'[lie down]'",
+#"軄>'[to govern]'",
+軆>'[body]';
+#"軆>'[body]'",
+車>'[cart]';
+軋>'[crush by weight]';
+軌>'[track]';
+軍>'[army]';
+軒>'[carriage]';
+軛>'[yoke]';
+軟>'[soft]';
+転>'[shift]';
+軣>'[rumble]';
+軫>'[cross board at rear of carriage]';
+軸>'[axle]';
+軻>'[axle]';
+軼>'[rush forth]';
+軽>'[light]';
+軾>'[horizontal wooden bar in front of a sedan chair]';
+較>'[compare]';
+輅>'[chariot]';
+載>'[load]';
+輊>'[low rear portion of cart]';
+輌>'[numerary adjunct for vehicles]';
+輒>'[sides of chariot where weapons]';
+輓>'[mourn]';
+輔>'[cheek bone]';
+輕>'[light]';
+輙>'[sides of chariot were weapons]';
+輛>'[numerary adjunct for vehicles]';
+輜>'[supply cart]';
+輝>'[brightness]';
+輟>'[stop]';
+輦>'[hand-cart]';
+輩>'[generation]';
+輪>'[wheel]';
+輯>'[gather up]';
+輳>'[hubs of wheel]';
+輸>'[transport]';
+輹>'[two pieces of wood underneath ca]';
+輻>'[spokes of wheel]';
+輾>'[turn over]';
+輿>'[cart]';
+轂>'[hub of wheel]';
+轄>'[linchpin of wheel]';
+轅>'[axle]';
+轆>'[windlass]';
+轉>'[shift]';
+轌>'[sled]';
+轍>'[wagon ruts]';
+轎>'[sedan-chair]';
+轗>'[fail]';
+轜>'[hearse]';
+轟>'[rumble]';
+轡>'[bridle of horse]';
+轢>'[run over something with vehicle]';
+#"轣>'[................................]'",
+轤>'[pulley]';
+辛>'[bitter]';
+辜>'[crime]';
+辞>'[words]';
+辟>'[law]';
+辣>'[peppery]';
+辧>'[manage]';
+辨>'[distinguish]';
+辭>'[words]';
+辮>'[braid]';
+辯>'[dispute]';
+辰>'[early morning]';
+辱>'[humiliate]';
+農>'[agriculture]';
+辷>'[smooth]';
+辺>'[edge]';
+辻>'[crossroads]';
+込>'[crowd into]';
+辿>'[follow]';
+迂>'[doctrinaire]';
+迄>'[extend]';
+迅>'[quick]';
+迎>'[receive]';
+近>'[near]';
+返>'[return]';
+迚>'[very]';
+迢>'[far]';
+迥>'[distant]';
+迦>'[character for transliteration]';
+迩>'[be near]';
+迪>'[enlighten]';
+迫>'[coerce]';
+迭>'[repeatedly]';
+迯>'[escape]';
+述>'[narrate]';
+迴>'[revolve]';
+迷>'[bewitch]';
+迸>'[gush out]';
+迹>'[traces]';
+迺>'[then]';
+追>'[pursue]';
+退>'[step back]';
+送>'[see off]';
+逃>'[escape]';
+逅>'[meet unexpectedly]';
+逆>'[disobey]';
+逋>'[flee]';
+逍>'[ramble]';
+逎>'[strong]';
+透>'[penetrate]';
+逐>'[chase]';
+逑>'[collect]';
+逓>'[hand over]';
+途>'[way]';
+逕>'[pass by]';
+逖>'[far]';
+逗>'[tempt]';
+這>'[this]';
+通>'[pass through]';
+逝>'[pass away]';
+逞>'[indulge oneself]';
+速>'[quick]';
+造>'[construct]';
+逡>'[retreat]';
+逢>'[come upon]';
+連>'[join]';
+#"逦>'[meandering]'",
+逮>'[seize]';
+週>'[week]';
+進>'[advance]';
+逵>'[thoroughfare]';
+逶>'[winding]';
+逸>'[flee]';
+逹>'[arrive at]';
+逼>'[compel]';
+逾>'[go over]';
+遁>'[hide]';
+遂>'[comply with]';
+遅>'[late]';
+遇>'[meet]';
+遉>'[spy]';
+遊>'[wander]';
+運>'[luck]';
+遍>'[everywhere]';
+過>'[pass]';
+遏>'[stop]';
+遐>'[afar]';
+遑>'[leisure]';
+遒>'[strong]';
+道>'[path]';
+達>'[arrive at]';
+違>'[disobey]';
+#"違>'[disobey]'",
+遘>'[to meet]';
+遙>'[far away]';
+遜>'[humble]';
+遞>'[hand over]';
+遠>'[distant]';
+遡>'[go upstream]';
+遣>'[send]';
+遥>'[far away]';
+遨>'[ramble]';
+適>'[match]';
+遭>'[come across]';
+遮>'[cover]';
+遯>'[deceive]';
+遲>'[late]';
+遵>'[obey]';
+遶>'[entwine]';
+遷>'[move]';
+選>'[choose]';
+遺>'[lose]';
+遼>'[distant]';
+遽>'[suddenly]';
+避>'[avoid]';
+邀>'[invite]';
+邁>'[take a big stride]';
+邂>'[unexpected meeting]';
+邃>'[profound]';
+還>'[still]';
+邇>'[be near]';
+邉>'[edge]';
+邊>'[edge]';
+邏>'[patrol]';
+邑>'[area]';
+那>'[that]';
+邦>'[nation]';
+邨>'[village]';
+邪>'[wrong]';
+邯>'[city in hebei province]';
+邱>'[surname]';
+邵>'[surname]';
+邸>'[official residence]';
+郁>'[sweet smelling]';
+郊>'[suburbs]';
+郎>'[gentleman]';
+郛>'[outer walls of city]';
+郡>'[administrative division]';
+郢>'[state in today''s hubei province]';
+郤>'[crack]';
+部>'[part]';
+郭>'[outer part (of a city)]';
+郵>'[postal]';
+郷>'[country]';
+都>'[metropolis]';
+鄂>'[hubei province]';
+鄒>'[name of an ancient state]';
+鄙>'[mean]';
+鄭>'[state in today''s henan]';
+鄰>'[neighbor]';
+鄲>'[county in hebei proincev]';
+酉>'[tenth in series of twelve cyclic]';
+酊>'[drunk]';
+酋>'[chief of tribe]';
+酌>'[serve wine]';
+配>'[match]';
+酎>'[double-fermented wine]';
+酒>'[wine]';
+酔>'[intoxicated]';
+酖>'[wine with bird poison added]';
+#"酘>'[................................]'",
+酢>'[toast one''s host with wine]';
+酣>'[enjoy intoxicants]';
+酥>'[butter]';
+酩>'[drunk]';
+酪>'[cream]';
+酬>'[toast]';
+酲>'[hangover]';
+#"酲>'[hangover]'",
+酵>'[yeast]';
+酷>'[strong]';
+酸>'[tart]';
+#"醁>'[a kind of green-colored wine]'",
+醇>'[rich]';
+醉>'[intoxicated]';
+醋>'[vinegar]';
+醍>'[essential oil of butter]';
+醐>'[purest cream]';
+醒>'[wake up]';
+醗>'[to brew for the second time]';
+醜>'[ugly looking]';
+醢>'[minced pickled meat]';
+醤>'[any jam-like or paste-like food]';
+醪>'[unclear wine]';
+醫>'[cure]';
+醯>'[vinegar]';
+醴>'[sweet wine]';
+醵>'[contribute for drinks]';
+醸>'[brew]';
+醺>'[get drunk]';
+釀>'[brew]';
+釁>'[smear with blood in sacrifice]';
+釆>'[distinguish]';
+采>'[collect]';
+釈>'[interprete]';
+釉>'[glaze]';
+釋>'[interprete]';
+里>'[unit of distance]';
+重>'[heavy]';
+野>'[open country]';
+量>'[measure]';
+釐>'[manage]';
+金>'[gold]';
+釖>'[knife]';
+釘>'[nail]';
+#"釛>'[................................]'",
+釜>'[cauldron]';
+針>'[needle]';
+#"釟>'[................................]'",
+釡>'[cauldron]';
+釣>'[fish]';
+釦>'[button]';
+釧>'[bracelet]';
+釵>'[ornamental hairpin]';
+#"釶>'[................................]'",
+釼>'[sword]';
+#"釿>'[................................]'",
+鈍>'[blunt]';
+鈎>'[hook]';
+鈑>'[plate]';
+鈔>'[paper money]';
+鈕>'[button]';
+鈞>'[unit of measure equivalent thirt]';
+鈩>'[fireplace]';
+鈬>'[bell]';
+鈴>'[bell]';
+鈷>'[cobalt]';
+鈿>'[hairpin]';
+鉄>'[iron]';
+鉅>'[steel]';
+鉈>'[thallium]';
+鉉>'[device for carrying a tripod]';
+鉋>'[carpenter''s plane]';
+#"鉐>'[................................]'",
+鉗>'[pincers]';
+鉚>'[rivet]';
+鉛>'[lead plumbum]';
+鉞>'[broad-axe]';
+鉢>'[earthenware basin]';
+鉤>'[hook]';
+鉦>'[kind of gong used in ancient tim]';
+鉱>'[mine]';
+鉾>'[spear]';
+銀>'[silver]';
+銃>'[ancient weapon]';
+銅>'[copper]';
+銑>'[mill]';
+銓>'[weigh]';
+銕>'[iron]';
+銖>'[unit of weight]';
+銘>'[inscribe]';
+銚>'[large hoe]';
+銛>'[sharp]';
+銜>'[bit]';
+銭>'[money]';
+銷>'[melt]';
+銹>'[rust]';
+鋏>'[tongs]';
+鋒>'[point of spear]';
+鋤>'[hoe]';
+鋩>'[point of sword]';
+鋪>'[spread out]';
+鋭>'[sharp]';
+鋲>'[rivet]';
+鋳>'[melt]';
+鋸>'[a saw]';
+#"鋺>'[................................]'",
+鋼>'[steel]';
+錆>'[the color of a mineral]';
+錏>'[soft steel]';
+錐>'[gimlet]';
+錘>'[balance weight on scale]';
+錙>'[8 oz]';
+錚>'[clanging sound]';
+錠>'[spindle]';
+錢>'[money]';
+#"錣>'[................................]'",
+錦>'[brocade]';
+錨>'[anchor]';
+錫>'[tin]';
+錬>'[smelt metals]';
+錮>'[run metal into cracks]';
+錯>'[error]';
+録>'[copy]';
+#"錵>'[................................]'",
+#"錺>'[................................]'",
+#"錻>'[................................]'",
+#"鍄>'[................................]'",
+鍋>'[cooking-pot]';
+鍍>'[plate]';
+鍔>'[high]';
+#"鍖>'[................................]'",
+鍛>'[forge metal]';
+#"鍜>'[................................]'",
+鍠>'[weapon]';
+鍬>'[shovel]';
+鍮>'[brass]';
+鍵>'[door bolt]';
+鍼>'[needle]';
+鍾>'[cup]';
+鎌>'[sickle]';
+鎔>'[fuse]';
+鎖>'[lock]';
+鎗>'[rifle]';
+鎚>'[hammer]';
+鎧>'[armor]';
+鎬>'[stove]';
+鎭>'[town]';
+鎮>'[town]';
+鎰>'[measure of weight for gold]';
+#"鎹>'[................................]'",
+鏃>'[arrowhead]';
+鏈>'[chain]';
+鏐>'[pure gold]';
+鏑>'[dysprosium the barb of an arrow]';
+鏖>'[fight end]';
+鏗>'[strike]';
+鏘>'[tinkle]';
+鏝>'[trowel]';
+鏡>'[mirror]';
+鏤>'[carve]';
+鏥>'[rust]';
+鏨>'[engraving tool]';
+鐃>'[cymbals]';
+鐇>'[vanadium]';
+鐐>'[fetters]';
+鐓>'[ferrule]';
+鐔>'[dagger]';
+鐘>'[clock]';
+鐙>'[lamp]';
+鐚>'[soft steel]';
+鐡>'[iron]';
+鐫>'[engraving tool]';
+鐵>'[iron]';
+鐶>'[metal ring]';
+鐸>'[bell]';
+鐺>'[frying pan]';
+#"鑁>'[................................]'",
+鑄>'[melt]';
+鑑>'[mirror]';
+鑒>'[mirror]';
+鑓>'[spear]';
+鑚>'[drill]';
+鑛>'[mine]';
+鑞>'[solder]';
+鑠>'[melt]';
+鑢>'[file]';
+鑪>'[fireplace]';
+鑰>'[key]';
+鑵>'[jar]';
+鑷>'[tweezers]';
+鑼>'[gong]';
+鑽>'[drill]';
+鑾>'[bells hung on horse]';
+鑿>'[chisel]';
+钁>'[a mattock]';
+長>'[long]';
+門>'[gate]';
+閂>'[bolt]';
+閃>'[flash]';
+閇>'[shut]';
+閉>'[shut]';
+#"閉>'[shut]'",
+開>'[open]';
+閏>'[intercalary]';
+閑>'[fence]';
+間>'[interval]';
+閔>'[mourn]';
+#"閔>'[mourn]'",
+閘>'[sluice]';
+閙>'[quarrel]';
+閠>'[intercalary]';
+関>'[frontier pass]';
+閣>'[chamber]';
+閤>'[small side door]';
+閥>'[powerful and influential group]';
+閧>'[boisterous]';
+閨>'[small entrance]';
+閭>'[village of twenty-five families]';
+閲>'[examine]';
+閹>'[castrate]';
+閻>'[village gate]';
+閼>'[block]';
+閾>'[threshold]';
+闃>'[alone]';
+闇>'[close]';
+闊>'[broad]';
+闌>'[door screen]';
+闍>'[tower over city gate]';
+闔>'[close]';
+闕>'[watch tower]';
+闖>'[rush in]';
+闘>'[struggle]';
+關>'[frontier pass]';
+闡>'[explain]';
+闢>'[open]';
+闥>'[door]';
+阜>'[mound]';
+阡>'[footpaths between fields]';
+阨>'[in distress]';
+阪>'[hillside farmland]';
+阮>'[ancient musical instrument: surname]';
+阯>'[foundation]';
+防>'[defend]';
+阻>'[impede]';
+阿>'[prefix to name]';
+陀>'[steep bank]';
+陂>'[dam]';
+附>'[adhere to]';
+陋>'[narrow]';
+陌>'[foot path between rice fields]';
+降>'[descend]';
+#"降>'[descend]'",
+限>'[boundary]';
+陛>'[steps leading throne]';
+陜>'[narrow]';
+陝>'[mountain pass]';
+陞>'[promote]';
+陟>'[climb]';
+院>'[courtyard]';
+陣>'[column]';
+除>'[eliminate]';
+陥>'[submerge]';
+#"陥>'[submerge]'",
+陪>'[accompany]';
+陬>'[corner]';
+陰>'[\"female\" principle]';
+陲>'[frontier]';
+陳>'[exhibit]';
+陵>'[hill]';
+陶>'[pottery]';
+陷>'[submerge]';
+陸>'[land]';
+険>'[narrow pass]';
+陽>'[\"male\" principle]';
+隅>'[corner]';
+隆>'[prosperous]';
+隈>'[cove]';
+隊>'[team]';
+隋>'[Sui dynasty]';
+隍>'[dry ditch]';
+階>'[stairs]';
+随>'[follow]';
+隔>'[separate]';
+隕>'[fall]';
+隗>'[high]';
+隘>'[narrow]';
+隙>'[crack]';
+際>'[border]';
+障>'[separate]';
+#"障>'[separate]'",
+隣>'[neighbor]';
+隧>'[tunnel]';
+隨>'[follow]';
+險>'[narrow pass]';
+隰>'[low]';
+隱>'[hide]';
+隲>'[stallion]';
+隴>'[mountain located between shaanxi]';
+隶>'[subservient]';
+隷>'[be subservient to]';
+隸>'[be subservient to]';
+隹>'[bird]';
+隻>'[single]';
+隼>'[aquiline (nose)]';
+雀>'[sparrow]';
+雁>'[wild goose]';
+雄>'[male of species]';
+雅>'[elegant]';
+集>'[assemble]';
+雇>'[employ]';
+雉>'[pheasant]';
+雋>'[superior]';
+雌>'[female]';
+雍>'[harmony]';
+雎>'[osprey]';
+雑>'[mixed]';
+雕>'[engrave]';
+雖>'[although]';
+雙>'[set of two]';
+雛>'[chick]';
+雜>'[mixed]';
+離>'[leave]';
+難>'[difficult]';
+雨>'[rain]';
+雪>'[snow]';
+#"雫>'[................................]'",
+雰>'[atmosphere]';
+雲>'[clouds]';
+零>'[zero]';
+雷>'[thunder]';
+雹>'[hail]';
+電>'[electricity]';
+需>'[need]';
+霄>'[sky]';
+霆>'[a sudden peal of thunder]';
+震>'[shake]';
+霈>'[torrential rains]';
+霊>'[spirit]';
+霍>'[quickly]';
+霎>'[light rain]';
+霏>'[falling of snow and rain]';
+霑>'[be moistened]';
+霓>'[rainbow]';
+霖>'[long spell of rain]';
+霙>'[sleet]';
+霜>'[frost]';
+霞>'[rosy clouds]';
+霤>'[drip]';
+霧>'[fog]';
+霪>'[long and heavy rain]';
+霰>'[hail]';
+露>'[dew]';
+霸>'[rule by might rather than right]';
+霹>'[thunder]';
+霽>'[clear up after rain cease be ang]';
+霾>'[misty]';
+靂>'[thunderclap]';
+靄>'[cloudy sky]';
+靆>'[cloudy sky]';
+靈>'[spirit]';
+靉>'[cloudy sky]';
+青>'[blue]';
+靖>'[pacify]';
+静>'[quiet]';
+靜>'[quiet]';
+非>'[not]';
+靠>'[lean on]';
+靡>'[divide]';
+面>'[face]';
+#"靤>'[................................]'",
+靦>'[timid]';
+靨>'[dimples]';
+革>'[leather]';
+靫>'[strong and pliable]';
+靭>'[strong and pliable]';
+靱>'[strong and pliable]';
+靴>'[boots]';
+#"靹>'[................................]'",
+靺>'[stocking]';
+靼>'[tartars]';
+#"鞁>'[................................]'",
+鞄>'[to work hides]';
+鞅>'[leather strap over horse''s neck]';
+#"鞅>'[leather strap over horse''s neck]'",
+鞋>'[shoes]';
+鞍>'[saddle]';
+鞏>'[bind]';
+#"鞏>'[bind]'",
+鞘>'[scabbard]';
+#"鞜>'[................................]'",
+鞠>'[bow]';
+鞣>'[tan]';
+鞦>'[leather stap]';
+鞨>'[tribe]';
+鞫>'[interrogate]';
+鞭>'[whip]';
+#"鞳>'[................................]'",
+鞴>'[saddle up horse]';
+韃>'[tatars]';
+韆>'[swing]';
+韈>'[socks]';
+韋>'[tanned leather]';
+韓>'[fence]';
+韜>'[sheath]';
+韭>'[scallion]';
+韮>'[scallion]';
+韲>'[break or smash into pieces]';
+音>'[sound]';
+韵>'[rhyme]';
+韶>'[music of emperor Shun]';
+韻>'[rhyme]';
+響>'[make sound]';
+頁>'[page]';
+頂>'[top]';
+頃>'[moment]';
+項>'[neck]';
+順>'[obey]';
+須>'[must]';
+頌>'[laud]';
+頏>'[fly down or downward]';
+預>'[prepare]';
+頑>'[obstinate]';
+頒>'[confer]';
+頓>'[pause]';
+頗>'[lean one side]';
+領>'[neck]';
+頚>'[neck]';
+頡>'[fly upward]';
+頤>'[cheeks]';
+頬>'[cheeks]';
+頭>'[head]';
+頴>'[rice tassel]';
+頷>'[chin]';
+頸>'[neck]';
+頻>'[frequently]';
+頼>'[rely]';
+頽>'[ruined]';
+顆>'[grain]';
+顋>'[lower part of face]';
+題>'[forehead]';
+額>'[forehead]';
+顎>'[jaw]';
+顏>'[face]';
+顔>'[face]';
+顕>'[manifest]';
+願>'[desire]';
+顛>'[top]';
+類>'[class]';
+顧>'[look back]';
+顫>'[shiver]';
+顯>'[manifest]';
+顰>'[frown]';
+顱>'[skull]';
+顳>'[the temporal bone]';
+顴>'[cheek bones]';
+風>'[wind]';
+#"風>'[wind]'",
+颯>'[sound of wind]';
+颱>'[taiphoon]';
+颶>'[cyclone]';
+飃>'[whirlwind]';
+飄>'[whirlwind]';
+飆>'[whirlwind]';
+飛>'[fly]';
+飜>'[flip over]';
+食>'[eat]';
+飢>'[hunger]';
+飩>'[stuffed dumplings]';
+飫>'[surfeited]';
+飭>'[order]';
+飮>'[drink]';
+飯>'[cooked rice]';
+飲>'[drink]';
+飴>'[sweet-meats]';
+飼>'[raise animals]';
+飽>'[eat heartily]';
+飾>'[decorate]';
+餃>'[stuffed dumplings]';
+餅>'[rice-cakes]';
+餉>'[rations and pay for soldiers]';
+養>'[raise]';
+餌>'[bait]';
+餐>'[eat]';
+餒>'[hungry]';
+餓>'[be hungry]';
+餔>'[eat]';
+餘>'[surplus]';
+#"餝>'[................................]'",
+餞>'[farewell party]';
+餠>'[rice-cakes]';
+餡>'[pastry filling]';
+餤>'[incite]';
+館>'[public building]';
+餬>'[porridge]';
+餮>'[a legendary animal]';
+餽>'[make present of food]';
+餾>'[distill]';
+#"饁>'[carry meal to workers in field]'",
+饅>'[steamed bread]';
+饉>'[time of famine or crop failure]';
+饋>'[offer food superior]';
+饌>'[feed]';
+饐>'[spoiled]';
+饑>'[starve]';
+饒>'[bountiful]';
+饕>'[gluttonous]';
+饗>'[host banquet]';
+首>'[head]';
+馗>'[cheekbone]';
+馘>'[cut off left ear]';
+香>'[fragrant]';
+馥>'[fragrance]';
+馨>'[fragrant]';
+馬>'[horse]';
+馭>'[drive]';
+馮>'[surname]';
+馳>'[go quickly or swiftly]';
+馴>'[tame]';
+#"馼>'[................................]'",
+駁>'[varicolored]';
+#"駃>'[gallop]'",
+駅>'[relay station]';
+駆>'[spur horse on]';
+駈>'[spur horse on]';
+駐>'[to be stationed at]';
+駑>'[tired]';
+駒>'[colt]';
+駕>'[drive]';
+駘>'[tired]';
+駛>'[sail]';
+駝>'[camel]';
+駟>'[team of four horses]';
+駢>'[team of horses]';
+駭>'[terrify]';
+駮>'[a kind of fierce animal]';
+駱>'[white horse w. black mane]';
+#"駱>'[white horse w. black mane]'",
+駸>'[galloping]';
+#"駻>'[................................]'",
+駿>'[excellent horse]';
+騁>'[gallop horse]';
+騅>'[piebald horse]';
+騎>'[ride horseback]';
+騏>'[piebald horse]';
+騒>'[harass]';
+験>'[test]';
+騙>'[swindle]';
+騨>'[dappled]';
+騫>'[raise]';
+騰>'[fly]';
+騷>'[harass]';
+騾>'[mule]';
+驀>'[suddenly]';
+驂>'[two outside ones in three horse]';
+驃>'[charger]';
+驅>'[spur horse on]';
+驍>'[excellent horse]';
+驕>'[spirited horse]';
+驗>'[test]';
+驚>'[frighten]';
+驛>'[relay station]';
+驟>'[procedure]';
+驢>'[donkey]';
+驤>'[gallop about with head uplifted]';
+驥>'[thoroughbred horse]';
+驩>'[happy]';
+驪>'[pure black horse]';
+驫>'[horses]';
+骨>'[bone]';
+骭>'[shin bone]';
+骰>'[die]';
+骸>'[skelton]';
+骼>'[bone]';
+髀>'[buttocks]';
+髄>'[bone marrow]';
+髏>'[skull]';
+髑>'[skull]';
+髓>'[bone marrow]';
+體>'[body]';
+高>'[high]';
+髞>'[high]';
+髟>'[hair]';
+髢>'[wig]';
+髣>'[similar to]';
+髦>'[flowing hair of young child]';
+髪>'[hair]';
+髫>'[children''s hair style]';
+髭>'[mustache]';
+髮>'[hair]';
+髯>'[beard]';
+#"髱>'[................................]'",
+髴>'[disheveled hair]';
+#"髷>'[................................]'",
+髻>'[hair rolled up in a bun]';
+鬆>'[lax]';
+鬘>'[beautiful hair]';
+鬚>'[beard]';
+鬟>'[dress hair in coiled knot]';
+鬢>'[hair on temples]';
+鬣>'[horse''s mane]';
+鬥>'[struggle]';
+鬧>'[quarrel]';
+鬨>'[boisterous]';
+鬩>'[feud]';
+鬪>'[struggle]';
+鬮>'[lots (to be drawn)]';
+鬯>'[sacrificial wine]';
+鬱>'[luxuriant]';
+鬲>'[type of caldron]';
+鬻>'[sell]';
+鬼>'[ghost]';
+魁>'[chief]';
+魂>'[soul]';
+魃>'[drought demon]';
+魄>'[vigor]';
+魅>'[kind of forest demon]';
+魍>'[demons]';
+魎>'[a kind of monster]';
+魏>'[kingdom of wei]';
+魑>'[a montain demon resembling tiger]';
+魔>'[demon]';
+魘>'[nightmare]';
+魚>'[fish]';
+魯>'[foolish]';
+魴>'[bream]';
+#"鮁>'[the bonito]'",
+鮎>'[sheatfish]';
+鮑>'[abalone]';
+鮒>'[carp]';
+鮓>'[minced and salted fish]';
+#"鮓>'[minced and salted fish]'",
+#"鮓>'[minced and salted fish]'",
+鮟>'[anglerfish]';
+鮠>'[a kind of shad with a head like a sturgeon]';
+#"鮨>'[................................]'",
+鮪>'[kind of sturgeon]';
+鮫>'[shark]';
+鮭>'[salmon]';
+鮮>'[fresh]';
+#"鮴>'[................................]'",
+#"鮹>'[................................]'",
+鯀>'[giant fish]';
+鯆>'[the skate or ray]';
+鯉>'[carp]';
+鯊>'[shark]';
+鯏>'[a dialect........ name of fish]';
+#"鯑>'[................................]'",
+#"鯒>'[................................]'",
+鯔>'[mullet]';
+鯖>'[mackerel]';
+鯛>'[pagrosomus major]';
+鯡>'[herring]';
+鯢>'[cryptobranchus japonicus]';
+#"鯣>'[................................]'",
+鯤>'[spawn]';
+鯨>'[whale]';
+鯰>'[sheat]';
+#"鯱>'[................................]'",
+#"鯱>'[................................]'",
+#"鯱>'[................................]'",
+#"鰄>'[................................]'",
+#"鰆>'[................................]'",
+鰈>'[flatfish]';
+鰉>'[sturgeon]';
+#"鰊>'[................................]'",
+鰌>'[loach]';
+鰍>'[loach]';
+鰐>'[alligator]';
+鰒>'[abalone]';
+鰓>'[fish gills]';
+#"鰔>'[................................]'",
+鰕>'[shrimp]';
+鰛>'[sardine]';
+#"鰡>'[................................]'",
+#"鰤>'[................................]'",
+鰥>'[huge fish]';
+鰭>'[fin]';
+鰮>'[sardine]';
+#"鰯>'[................................]'",
+#"鰯>'[................................]'",
+鰲>'[huge sea turtle]';
+鰹>'[skipjack]';
+#"鰺>'[................................]'",
+鰻>'[eel]';
+鰾>'[swimming bladder of fish]';
+#"鱆>'[................................]'",
+鱇>'[anglerfish]';
+鱈>'[codfish]';
+鱒>'[barbel]';
+鱗>'[fish scales]';
+#"鱘>'[sturgeon]'",
+鱠>'[minced fish]';
+鱧>'[snakehead]';
+#"鱶>'[................................]'",
+鱸>'[sea perch]';
+鳥>'[bird]';
+鳧>'[wild duck]';
+鳩>'[pigeon]';
+鳫>'[wild goose]';
+鳬>'[wild duck]';
+#"鳰>'[................................]'",
+鳳>'[male phoenix]';
+鳴>'[cry of bird or animal]';
+鳶>'[kite]';
+鴃>'[shrike]';
+鴆>'[bird resembling secretary falcon]';
+鴇>'[bustard]';
+鴈>'[wild goose]';
+鴉>'[crow]';
+鴎>'[seagull]';
+鴒>'[species of lark]';
+鴕>'[ostrich]';
+鴛>'[male mandarin duck]';
+鴟>'[kite]';
+鴣>'[species of taiwan pigeon]';
+鴦>'[female mandarin duck]';
+鴨>'[duck]';
+鴪>'[swoop]';
+鴫>'[a snipe]';
+鴬>'[oriole]';
+鴻>'[species of wild swan]';
+#"鴾>'[................................]'",
+鴿>'[pigeon]';
+#"鵁>'[................................]'",
+鵄>'[kite]';
+#"鵄>'[kite]'",
+#"鵄>'[kite]'",
+#"鵐>'[................................]'",
+鵑>'[cuckoo]';
+鵙>'[a shrike]';
+鵜>'[pelican]';
+鵝>'[goose]';
+鵞>'[goose]';
+鵠>'[target]';
+鵡>'[species of parrot]';
+#"鵡>'[species of parrot]'",
+鵬>'[fabulous bird of enormous size]';
+鵯>'[bird]';
+鵲>'[magpie]';
+#"鵺>'[................................]'",
+鶇>'[thrush]';
+鶉>'[quail]';
+鶏>'[chicken]';
+鶚>'[osprey]';
+#"鶤>'[................................]'",
+鶩>'[duck]';
+鶫>'[thrush]';
+鶯>'[oriole]';
+#"鶱>'[soar]'",
+鶴>'[crane]';
+鶸>'[[not found in any dictionary]]';
+鶺>'[wagtail]';
+鶻>'[a kind of pigeon]';
+鷁>'[fishhawk bow or prow]';
+鷂>'[sparrow hawk]';
+鷄>'[chicken]';
+鷆>'[bird name]';
+鷏>'[bird name]';
+鷓>'[partridge]';
+鷙>'[hawk]';
+鷦>'[wren]';
+#"鷫>'[turquoise kingfisher]'",
+鷯>'[wren]';
+鷲>'[condor]';
+鷸>'[snipe]';
+鷹>'[eagle]';
+鷺>'[heron]';
+鷽>'[oriental bullfinch]';
+鸚>'[species of parrot]';
+鸛>'[crane]';
+鸞>'[fabulous bird]';
+鹵>'[saline soil]';
+鹸>'[alkaline]';
+鹹>'[salty]';
+鹽>'[salt]';
+鹿>'[deer]';
+麁>'[rough]';
+麈>'[species of deer]';
+麋>'[elk]';
+麌>'[stag]';
+麑>'[fawn]';
+麒>'[legendary auspicious animal]';
+麓>'[foot of hill]';
+麕>'[muntjac deer]';
+麗>'[beautiful]';
+麝>'[musk deer]';
+麟>'[female of chinese unicorn]';
+麥>'[wheat]';
+麦>'[wheat]';
+麩>'[bran]';
+麪>'[flour]';
+#"麫>'[flour]'",
+麸>'[bran]';
+麹>'[yeast]';
+麺>'[flour]';
+麻>'[hemp]';
+麼>'[interrogative final particle]';
+麾>'[pennant]';
+麿>'[I]';
+黄>'[yellow]';
+黌>'[school]';
+黍>'[glutinous millet]';
+黎>'[surname]';
+黏>'[stick to]';
+黐>'[stick]';
+黒>'[black]';
+黔>'[black]';
+默>'[silent]';
+黙>'[silent]';
+黛>'[blacken eyebrows]';
+黜>'[dismiss]';
+黝>'[black]';
+點>'[dot]';
+黠>'[sly]';
+黥>'[tattooing face]';
+黨>'[political party]';
+黯>'[dark]';
+黴>'[mold]';
+黶>'[mole]';
+黷>'[dishonor]';
+黹>'[embroidery]';
+黻>'[special pattern of embroidery]';
+黼>'[embroidered official or sacrific]';
+黽>'[to strive]';
+鼇>'[huge sea turtle]';
+鼈>'[fresh water turtle]';
+鼎>'[large]';
+鼓>'[drum]';
+鼕>'[rattle of drums]';
+鼠>'[rat]';
+鼡>'[rat]';
+鼬>'[weasel]';
+鼻>'[nose]';
+鼾>'[snore loudly]';
+齊>'[even]';
+齋>'[vegetarian diet]';
+齎>'[take in both hands and offer to]';
+齏>'[break or smash into pieces]';
+齒>'[teeth]';
+齔>'[lose baby teeth and get adult te]';
+齟>'[irregular teeth]';
+齠>'[lose baby teeth and get adult teeth]';
+齡>'[age]';
+齢>'[age]';
+齣>'[act]';
+齦>'[gums]';
+齧>'[bite]';
+齪>'[narrow]';
+齬>'[uneven teeth]';
+齲>'[tooth decay]';
+齶>'[palate]';
+齷>'[narrow]';
+龍>'[dragon]';
+龕>'[niche]';
+龜>'[turtle or tortoise]';
+龝>'[autumn]';
+龠>'[flute]';
+
+# eof
diff --git a/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt
new file mode 100755
index 0000000..7435913
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt
@@ -0,0 +1,6216 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others.  All Rights Reserved.
+#--------------------------------------------------------------------
+# Date: Tue Jan 23 12:42:03 2001
+#--------------------------------------------------------------------
+
+# Kanji-OnRomaji
+
+丁>Tei;
+七>Shichi;
+万>Man;
+丈>Jou;
+三>San;
+上>Jou;
+下>Ka;
+不>Fu;
+与>Yo;
+丐>Kai;
+丑>Chuu;
+且>Sha;
+丕>Hi;
+世>Se;
+丗>Sei;
+丘>Kyuu;
+丙>Hei;
+丞>Shou;
+両>Ryou;
+並>Hei;
+个>Ka;
+中>Chuu;
+丱>Kan;
+串>Sen;
+丶>Chu;
+丸>Gan;
+丹>Tan;
+主>Shu;
+丼>Sei;
+丿>Hetsu;
+乂>Gai;
+乃>Dai;
+久>Kyuu;
+之>Shi;
+乍>Saku;
+乎>Ko;
+乏>Bou;
+乕>Ko;
+乖>Kai;
+乗>Jou;
+乘>Jou;
+乙>Otsu;
+九>Kyuu;
+乞>Kotsu;
+也>Ya;
+乢>Gai;
+乱>Ran;
+乳>Nyuu;
+乾>Kan;
+亀>Ki;
+亂>Ran;
+亅>Ketsu;
+了>Ryou;
+予>Yo;
+争>Sou;
+亊>Ji;
+事>Ji;
+二>Ni;
+于>U;
+云>Un;
+互>Go;
+五>Go;
+井>Sei;
+亘>Sen;
+亙>Kou;
+些>Sa;
+亜>A;
+亞>A;
+亟>Kyoku;
+亠>Tou;
+亡>Bou;
+亢>Kou;
+交>Kou;
+亥>Gai;
+亦>Eki;
+亨>Kyou;
+享>Kyou;
+京>Kyou;
+亭>Tei;
+亮>Ryou;
+亰>Kei;
+亳>Haku;
+亶>Tan;
+人>Jin;
+什>Shuu;
+仁>Jin;
+仂>Roku;
+仄>Soku;
+仆>Fu;
+仇>Kyuu;
+今>Kon;
+介>Kai;
+仍>Jou;
+从>Juu;
+仏>Butsu;
+仔>Shi;
+仕>Shi;
+他>Ta;
+仗>Jou;
+付>Fu;
+仙>Sen;
+仝>Dou;
+仞>Jin;
+仟>Sen;
+代>Dai;
+令>Rei;
+以>I;
+仭>Jin;
+仮>Ka;
+仰>Gyou;
+仲>Chuu;
+件>Ken;
+价>Kai;
+任>Nin;
+企>Ki;
+伉>Kou;
+伊>I;
+伍>Go;
+伎>Ki;
+伏>Fuku;
+伐>Batsu;
+休>Kyuu;
+会>Kai;
+伜>Sai;
+伝>Den;
+伯>Haku;
+估>Ko;
+伴>Han;
+伶>Rei;
+伸>Shin;
+伺>Shi;
+似>Ji;
+伽>Kya;
+佃>Ten;
+但>Tan;
+佇>Cho;
+位>I;
+低>Tei;
+住>Juu;
+佐>Sa;
+佑>Yuu;
+体>Tei;
+何>Ka;
+佗>Ta;
+余>Yo;
+佚>Itsu;
+佛>Butsu;
+作>Saku;
+佝>Kou;
+佞>Nei;
+佩>Hai;
+佯>You;
+佰>Haku;
+佳>Ka;
+併>Hei;
+佶>Kitsu;
+佻>Chou;
+佼>Kou;
+使>Shi;
+侃>Kan;
+來>Rai;
+侈>Shi;
+例>Rei;
+侍>Ji;
+侏>Shu;
+侑>Yuu;
+侖>Ron;
+侘>Ta;
+供>Kyou;
+依>I;
+侠>Kyou;
+価>Ka;
+侫>Nei;
+侭>Jin;
+侮>Bu;
+侯>Kou;
+侵>Shin;
+侶>Ryo;
+便>Ben;
+係>Kei;
+促>Soku;
+俄>Ga;
+俊>Shun;
+俎>Sho;
+俐>Ri;
+俑>You;
+俔>Ken;
+俗>Zoku;
+俘>Fu;
+俚>Ri;
+俛>Ben;
+保>Ho;
+俟>Shi;
+信>Shin;
+修>Shuu;
+俯>Fu;
+俳>Hai;
+俵>Hyou;
+俶>Shuku;
+俸>Hou;
+俺>En;
+俾>Hi;
+倅>Sai;
+倆>Ryou;
+倉>Sou;
+個>Ko;
+倍>Bai;
+倏>Shuku;
+們>Mon;
+倒>Tou;
+倔>Kutsu;
+倖>Kou;
+候>Kou;
+倚>I;
+借>Shaku;
+倡>Shou;
+倣>Hou;
+値>Chi;
+倥>Kou;
+倦>Ken;
+倨>Kyo;
+倩>Sen;
+倪>Gei;
+倫>Rin;
+倬>Taku;
+倭>I;
+倶>Ku;
+倹>Ken;
+偃>En;
+假>Ka;
+偈>Ketsu;
+偉>I;
+偏>Hen;
+偐>Gan;
+偕>Kai;
+偖>Sha;
+做>Saku;
+停>Tei;
+健>Ken;
+偬>Sou;
+偲>Shi;
+側>Soku;
+偵>Tei;
+偶>Guu;
+偸>Chuu;
+偽>Gi;
+傀>Kai;
+傅>Fu;
+傍>Bou;
+傑>Ketsu;
+傘>San;
+備>Bi;
+傚>Kou;
+催>Sai;
+傭>You;
+傲>Gou;
+傳>Den;
+傴>U;
+債>Sai;
+傷>Shou;
+傾>Kei;
+僂>Rou;
+僅>Kin;
+僉>Sen;
+僊>Sen;
+働>Dou;
+像>Zou;
+僑>Kyou;
+僕>Boku;
+僖>Ki;
+僚>Ryou;
+僞>Gi;
+僣>Sen;
+僥>Kyou;
+僧>Sou;
+僭>Sen;
+僮>Dou;
+僵>Kyou;
+價>Ka;
+僻>Heki;
+儀>Gi;
+儁>Shun;
+儂>Dou;
+億>Oku;
+儉>Ken;
+儒>Ju;
+儔>Chuu;
+儕>Sei;
+儖>Ran;
+儘>Jin;
+儚>Bou;
+償>Shou;
+儡>Rai;
+優>Yuu;
+儲>Cho;
+儷>Rei;
+儺>Da;
+儻>Tou;
+儼>Gen;
+儿>Jin;
+兀>Kotsu;
+允>In;
+元>Gen;
+兄>Kei;
+充>Juu;
+兆>Chou;
+兇>Kyou;
+先>Sen;
+光>Kou;
+克>Koku;
+兌>Da;
+免>Men;
+兎>To;
+児>Ji;
+兒>Ji;
+兔>To;
+党>Tou;
+兜>Tou;
+兢>Kyou;
+入>Nyuu;
+全>Zen;
+兩>Ryou;
+兪>Yu;
+八>Hachi;
+公>Kou;
+六>Roku;
+兮>Kei;
+共>Kyou;
+兵>Hei;
+其>Ki;
+具>Gu;
+典>Ten;
+兼>Ken;
+冀>Ki;
+冂>Kei;
+内>Dai;
+円>En;
+冉>Nen;
+冊>Satsu;
+册>Satsu;
+再>Sai;
+冏>Kei;
+冐>Bou;
+冑>Chuu;
+冒>Bou;
+冓>Kou;
+冕>Ben;
+冖>Beki;
+冗>Jou;
+写>Sha;
+冠>Kan;
+冢>Chou;
+冤>En;
+冥>Mei;
+冦>Kou;
+冨>Fu;
+冩>Sha;
+冪>Beki;
+冫>Hyou;
+冬>Tou;
+冰>Hyou;
+冱>Go;
+冲>Chuu;
+决>Ketsu;
+冴>Go;
+况>Kyou;
+冶>Ya;
+冷>Rei;
+冽>Retsu;
+凄>Sei;
+凅>Ko;
+准>Jun;
+凉>Ryou;
+凋>Chou;
+凌>Ryou;
+凍>Tou;
+凖>Jun;
+凛>Rin;
+凜>Rin;
+凝>Gyou;
+几>Ki;
+凡>Bon;
+処>Sho;
+凭>Hyou;
+凰>Kou;
+凱>Gai;
+凵>Kan;
+凶>Kyou;
+凸>Totsu;
+凹>Ou;
+出>Shutsu;
+函>Kan;
+凾>Kan;
+刀>Tou;
+刃>Jin;
+刄>Jin;
+分>Bun;
+切>Setsu;
+刈>Gai;
+刊>Kan;
+刋>Sen;
+刎>Fun;
+刑>Kei;
+刔>Ketsu;
+列>Retsu;
+初>Sho;
+判>Han;
+別>Betsu;
+刧>Gou;
+利>Ri;
+刪>San;
+刮>Katsu;
+到>Tou;
+刳>Ko;
+制>Sei;
+刷>Satsu;
+券>Ken;
+刹>Satsu;
+刺>Shi;
+刻>Koku;
+剃>Tei;
+剄>Kei;
+則>Soku;
+削>Saku;
+剋>Koku;
+剌>Ratsu;
+前>Zen;
+剏>Sou;
+剔>Teki;
+剖>Bou;
+剛>Gou;
+剞>Ki;
+剣>Ken;
+剤>Zai;
+剥>Haku;
+剩>Jou;
+剪>Sen;
+副>Fuku;
+剰>Jou;
+剱>Ken;
+割>Katsu;
+剳>Tou;
+剴>Gai;
+創>Sou;
+剽>Hyou;
+剿>Shou;
+劃>Kaku;
+劇>Geki;
+劈>Heki;
+劉>Ru;
+劍>Ken;
+劑>Zai;
+劒>Ken;
+劔>Ken;
+力>Ryoku;
+功>Kou;
+加>Ka;
+劣>Retsu;
+助>Jo;
+努>Do;
+劫>Gou;
+劬>Ku;
+劭>Shou;
+励>Rei;
+労>Rou;
+劵>Ken;
+効>Kou;
+劼>Katsu;
+劾>Gai;
+勁>Kei;
+勃>Botsu;
+勅>Choku;
+勇>Yuu;
+勉>Ben;
+勍>Kei;
+勒>Roku;
+動>Dou;
+勗>Bou;
+勘>Kan;
+務>Mu;
+勝>Shou;
+勞>Rou;
+募>Bo;
+勠>Riku;
+勢>Sei;
+勣>Seki;
+勤>Kin;
+勦>Sou;
+勧>Kan;
+勲>Kun;
+勳>Kun;
+勵>Rei;
+勸>Kan;
+勹>Hou;
+勺>Shaku;
+勾>Kou;
+勿>Butsu;
+包>Hou;
+匆>Sou;
+匈>Kyou;
+匍>Ho;
+匏>Hou;
+匐>Hoku;
+匕>Hi;
+化>Ka;
+北>Hoku;
+匙>Shi;
+匚>Hou;
+匝>Sou;
+匠>Shou;
+匡>Kyou;
+匣>Kou;
+匪>Hi;
+匯>Wai;
+匱>Ki;
+匳>Ren;
+匸>Kei;
+匹>Hitsu;
+区>Ku;
+医>I;
+匿>Toku;
+區>Ku;
+十>Juu;
+千>Sen;
+卅>Sou;
+卆>Sotsu;
+升>Shou;
+午>Go;
+卉>Ki;
+半>Han;
+卍>Ban;
+卑>Hi;
+卒>Sotsu;
+卓>Taku;
+協>Kyou;
+南>Nan;
+単>Tan;
+博>Haku;
+卜>Boku;
+卞>Hen;
+占>Sen;
+卦>Ka;
+卩>Setsu;
+卮>Shi;
+卯>Bou;
+印>In;
+危>Ki;
+即>Soku;
+却>Kyaku;
+卵>Ran;
+卷>Kan;
+卸>Sha;
+卻>Kyaku;
+卿>Kyou;
+厂>Kan;
+厄>Yaku;
+厖>Bou;
+厘>Rin;
+厚>Kou;
+原>Gen;
+厠>Shi;
+厥>Ketsu;
+厦>Ka;
+厨>Zu;
+厩>Kyuu;
+厭>En;
+厮>Shi;
+厰>Shou;
+厳>Gen;
+厶>Shi;
+去>Kyo;
+参>San;
+參>San;
+又>Yuu;
+叉>Sha;
+及>Kyuu;
+友>Yuu;
+双>Sou;
+反>Han;
+収>Shuu;
+叔>Shuku;
+取>Shu;
+受>Ju;
+叙>Jo;
+叛>Han;
+叟>Sou;
+叡>Ei;
+叢>Sou;
+口>Kou;
+古>Ko;
+句>Ku;
+叨>Tou;
+叩>Kou;
+只>Shi;
+叫>Kyou;
+召>Shou;
+叭>Hatsu;
+叮>Tei;
+可>Ka;
+台>Dai;
+叱>Shitsu;
+史>Shi;
+右>U;
+叶>Kyou;
+号>Gou;
+司>Shi;
+吁>Ku;
+吃>Kitsu;
+各>Kaku;
+合>Gou;
+吉>Kichi;
+吊>Chou;
+吋>Sun;
+同>Dou;
+名>Mei;
+后>Kou;
+吏>Ri;
+吐>To;
+向>Kou;
+君>Kun;
+吝>Rin;
+吟>Gin;
+吠>Hai;
+否>Hi;
+吩>Fun;
+含>Gan;
+听>Kin;
+吭>Kou;
+吮>Sen;
+吶>Totsu;
+吸>Kyuu;
+吹>Sui;
+吻>Fun;
+吼>Kou;
+吽>In;
+吾>Go;
+呀>Ga;
+呂>Ryo;
+呆>Bou;
+呈>Tei;
+呉>Go;
+告>Koku;
+呎>Seki;
+呑>Don;
+呟>Gen;
+周>Shuu;
+呪>Ju;
+呰>Shi;
+呱>Ko;
+味>Mi;
+呵>Ka;
+呶>Do;
+呷>Kou;
+呻>Shin;
+呼>Ko;
+命>Mei;
+咀>So;
+咄>Totsu;
+咆>Hou;
+咋>Saku;
+和>Wa;
+咎>Kyuu;
+咏>Ei;
+咐>Ho;
+咒>Shu;
+咢>Gaku;
+咤>Ta;
+咥>Ki;
+咨>Shi;
+咫>Shi;
+咬>Kou;
+咯>Kaku;
+咲>Shou;
+咳>Gai;
+咸>Kan;
+咼>Ka;
+咽>In;
+咾>Rou;
+哀>Ai;
+品>Hin;
+哂>Shin;
+哄>Kou;
+哇>Ai;
+哈>Gou;
+哉>Sai;
+員>In;
+哢>Rou;
+哥>Ka;
+哦>Ga;
+哨>Shou;
+哩>Ri;
+哭>Koku;
+哮>Kou;
+哲>Tetsu;
+哺>Ho;
+哽>Kou;
+唄>Bai;
+唆>Sa;
+唇>Shin;
+唏>Ki;
+唐>Tou;
+唔>Go;
+唖>A;
+售>Shuu;
+唯>Yui;
+唱>Shou;
+唳>Rei;
+唸>Ten;
+唹>Yo;
+唾>Da;
+啀>Gai;
+啄>Taku;
+啅>Taku;
+商>Shou;
+啌>Kou;
+問>Mon;
+啓>Kei;
+啖>Tan;
+啗>Tan;
+啜>Setsu;
+啝>Ka;
+啣>Kan;
+啻>Shi;
+啼>Tei;
+啾>Shuu;
+喀>Kaku;
+喃>Nan;
+善>Zen;
+喇>Ratsu;
+喉>Kou;
+喊>Kan;
+喋>Chou;
+喘>Zen;
+喙>Kai;
+喚>Kan;
+喜>Ki;
+喝>Katsu;
+喞>Soku;
+喟>Ki;
+喧>Ken;
+喨>Ryou;
+喩>Yu;
+喪>Sou;
+喫>Kitsu;
+喬>Kyou;
+單>Tan;
+営>Ei;
+嗄>Sa;
+嗅>Kyuu;
+嗇>Shoku;
+嗔>Shin;
+嗚>O;
+嗜>Shi;
+嗟>Sa;
+嗣>Shi;
+嗤>Shi;
+嗷>Gou;
+嗹>Ren;
+嗽>Soku;
+嗾>Sou;
+嘆>Tan;
+嘉>Ka;
+嘔>Ou;
+嘖>Saku;
+嘗>Shou;
+嘘>Kyo;
+嘛>Ma;
+嘩>Ka;
+嘯>Shou;
+嘱>Shoku;
+嘲>Tou;
+嘴>Shi;
+嘶>Sei;
+嘸>Bu;
+噂>Son;
+噌>Sou;
+噎>Itsu;
+噐>Ki;
+噛>Gou;
+噤>Kin;
+器>Ki;
+噪>Sou;
+噫>I;
+噬>Zei;
+噴>Fun;
+噸>Ton;
+嚀>Dei;
+嚆>Kou;
+嚇>Kaku;
+嚊>Hi;
+嚏>Tei;
+嚔>Tei;
+嚠>Ryuu;
+嚢>Nou;
+嚥>En;
+嚮>Kou;
+嚴>Gen;
+嚶>Ou;
+嚼>Shaku;
+囀>Ten;
+囁>Shou;
+囂>Gou;
+囃>Sou;
+囈>Gei;
+囎>So;
+囑>Shoku;
+囓>Ketsu;
+囗>I;
+囘>Kai;
+囚>Shuu;
+四>Shi;
+回>Kai;
+因>In;
+団>Dan;
+囮>Ka;
+困>Kon;
+囲>I;
+図>To;
+囹>Rei;
+固>Ko;
+国>Koku;
+囿>Yuu;
+圀>Koku;
+圃>Ho;
+圄>Gyo;
+圈>Ken;
+圉>Gyo;
+國>Koku;
+圍>I;
+圏>Ken;
+園>En;
+圓>En;
+圖>To;
+團>Dan;
+圜>Kan;
+土>Do;
+圧>Atsu;
+在>Zai;
+圭>Kei;
+地>Chi;
+圻>Ki;
+址>Shi;
+坂>Han;
+均>Kin;
+坊>Bou;
+坎>Kan;
+坏>Hai;
+坐>Za;
+坑>Kou;
+坡>Ha;
+坤>Kon;
+坦>Tan;
+坩>Kan;
+坪>Hei;
+坿>Fu;
+垂>Sui;
+垈>Tai;
+垉>Hou;
+型>Kei;
+垓>Gai;
+垠>Gin;
+垢>Kou;
+垣>En;
+垤>Tetsu;
+埀>Sui;
+埃>Ai;
+埆>Kaku;
+埋>Mai;
+城>Jou;
+埒>Rachi;
+埓>Rachi;
+埔>Ho;
+埜>Sho;
+域>Iki;
+埠>Fu;
+埣>Sai;
+埴>Shoku;
+執>Shitsu;
+培>Bai;
+基>Ki;
+埼>Ki;
+堀>Kutsu;
+堂>Dou;
+堅>Ken;
+堆>Tai;
+堊>A;
+堋>Hou;
+堕>Da;
+堙>In;
+堝>Ka;
+堡>Hou;
+堤>Tei;
+堪>Kan;
+堯>Gyou;
+堰>En;
+報>Hou;
+場>Jou;
+堵>To;
+堺>Kai;
+堽>Kou;
+塁>Rui;
+塊>Kai;
+塋>Ei;
+塑>So;
+塒>Shi;
+塔>Tou;
+塗>To;
+塘>Tou;
+塙>Kaku;
+塚>Chou;
+塞>Soku;
+塢>O;
+塩>En;
+填>Ten;
+塲>Jou;
+塵>Jin;
+塹>Zan;
+塾>Juku;
+境>Kyou;
+墅>Sho;
+墓>Bo;
+増>Zou;
+墜>Tsui;
+墟>Kyo;
+墨>Boku;
+墫>Shun;
+墮>Da;
+墳>Fun;
+墸>Sho;
+墺>Ou;
+墻>Shou;
+墾>Kon;
+壁>Heki;
+壅>You;
+壇>Dan;
+壊>Kai;
+壌>Jou;
+壑>Gaku;
+壓>Atsu;
+壕>Gou;
+壘>Rui;
+壙>Kou;
+壜>Tan;
+壞>Kai;
+壟>Ryou;
+壤>Jou;
+壥>Ten;
+士>Shi;
+壬>Jin;
+壮>Sou;
+壯>Sou;
+声>Sei;
+壱>Ichi;
+売>Bai;
+壷>Ko;
+壹>Ichi;
+壺>Ko;
+壻>Sei;
+壼>Kon;
+壽>Ju;
+夂>Chi;
+変>Hen;
+夊>Sui;
+夏>Ka;
+夐>Kei;
+夕>Seki;
+外>Gai;
+夘>Bou;
+夙>Shuku;
+多>Ta;
+夛>Ta;
+夜>Ya;
+夢>Mu;
+夥>Ka;
+大>Tai;
+天>Ten;
+太>Ta;
+夫>Fu;
+夬>Ketsu;
+夭>You;
+央>Ou;
+失>Shitsu;
+夲>Tou;
+夷>I;
+夸>Ko;
+夾>Kou;
+奄>En;
+奇>Ki;
+奈>Na;
+奉>Hou;
+奎>Kei;
+奏>Sou;
+奐>Kan;
+契>Setsu;
+奔>Hon;
+奕>Eki;
+套>Tou;
+奘>Jou;
+奚>Kei;
+奠>Ten;
+奢>Sha;
+奥>Ou;
+奧>Ou;
+奨>Shou;
+奩>Ren;
+奪>Datsu;
+奬>Shou;
+奮>Fun;
+女>Jo;
+奴>Do;
+奸>Kan;
+好>Kou;
+妁>Shaku;
+如>Jo;
+妃>Hi;
+妄>Bou;
+妊>Nin;
+妍>Ken;
+妓>Ki;
+妖>You;
+妙>Myou;
+妛>Shi;
+妝>Sou;
+妣>Hi;
+妥>Da;
+妨>Bou;
+妬>To;
+妲>Datsu;
+妹>Mai;
+妻>Sai;
+妾>Shou;
+姆>Bo;
+姉>Shi;
+始>Shi;
+姐>So;
+姑>Ko;
+姓>Sei;
+委>I;
+姙>Nin;
+姚>You;
+姜>Kyou;
+姥>Bo;
+姦>Kan;
+姨>I;
+姪>Tetsu;
+姫>Ki;
+姶>Ou;
+姻>In;
+姿>Shi;
+威>I;
+娃>A;
+娉>Hei;
+娑>Sha;
+娘>Jou;
+娚>Nan;
+娜>Da;
+娟>Ken;
+娠>Shin;
+娥>Ga;
+娩>Ben;
+娯>Go;
+娵>Shu;
+娶>Shu;
+娼>Shou;
+婀>A;
+婁>Rou;
+婆>Ba;
+婉>En;
+婚>Kon;
+婢>Hi;
+婦>Fu;
+婪>Ran;
+婬>In;
+婿>Sei;
+媒>Bai;
+媚>Bi;
+媛>En;
+媼>Ou;
+媽>Bo;
+媾>Kou;
+嫁>Ka;
+嫂>Sou;
+嫉>Shitsu;
+嫋>Jou;
+嫌>Ken;
+嫐>Jou;
+嫖>Hyou;
+嫗>Ou;
+嫡>Chaku;
+嫣>En;
+嫦>Kou;
+嫩>Don;
+嫺>Kan;
+嫻>Kan;
+嬉>Ki;
+嬋>Sen;
+嬌>Kyou;
+嬖>Hei;
+嬢>Jou;
+嬪>Hin;
+嬬>Shu;
+嬰>Ei;
+嬲>Jou;
+嬾>Ran;
+孀>Sou;
+孃>Jou;
+孅>Sen;
+子>Shi;
+孑>Getsu;
+孔>Kou;
+孕>You;
+字>Ji;
+存>Son;
+孚>Fu;
+孛>Botsu;
+孜>Shi;
+孝>Kou;
+孟>Mou;
+季>Ki;
+孤>Ko;
+孥>Do;
+学>Gaku;
+孩>Kai;
+孫>Son;
+孰>Juku;
+孱>Sen;
+孳>Shi;
+孵>Fu;
+學>Gaku;
+孺>Ju;
+宀>Ben;
+它>Ta;
+宅>Taku;
+宇>U;
+守>Shu;
+安>An;
+宋>Sou;
+完>Kan;
+宍>Niku;
+宏>Kou;
+宕>Tou;
+宗>Shuu;
+官>Kan;
+宙>Chuu;
+定>Tei;
+宛>En;
+宜>Gi;
+宝>Hou;
+実>Jitsu;
+客>Kyaku;
+宣>Sen;
+室>Shitsu;
+宥>Yuu;
+宦>Kan;
+宮>Kyuu;
+宰>Sai;
+害>Gai;
+宴>En;
+宵>Shou;
+家>Ka;
+宸>Shin;
+容>You;
+宿>Shuku;
+寂>Jaku;
+寃>En;
+寄>Ki;
+寅>In;
+密>Mitsu;
+寇>Kou;
+寉>Kaku;
+富>Fu;
+寐>Bi;
+寒>Kan;
+寓>Guu;
+寔>Shoku;
+寛>Kan;
+寝>Shin;
+寞>Baku;
+察>Satsu;
+寡>Ka;
+寢>Shin;
+寤>Go;
+寥>Ryou;
+實>Jitsu;
+寧>Nei;
+寨>Sai;
+審>Shin;
+寫>Sha;
+寮>Ryou;
+寰>Kan;
+寳>Hou;
+寵>Chou;
+寶>Hou;
+寸>Sun;
+寺>Ji;
+対>Tai;
+寿>Ju;
+封>Fuu;
+専>Sen;
+射>Sha;
+尅>Koku;
+将>Shou;
+將>Shou;
+專>Sen;
+尉>I;
+尊>Son;
+尋>Jin;
+對>Tai;
+導>Dou;
+小>Shou;
+少>Shou;
+尓>Ji;
+尖>Sen;
+尚>Shou;
+尠>Sen;
+尢>Ou;
+尤>Yuu;
+尨>Bou;
+尭>Gyou;
+就>Shuu;
+尸>Shi;
+尹>In;
+尺>Shaku;
+尻>Kou;
+尼>Ni;
+尽>Jin;
+尾>Bi;
+尿>Nyou;
+局>Kyoku;
+屁>Hi;
+居>Kyo;
+屆>Kai;
+屈>Kutsu;
+届>Kai;
+屋>Oku;
+屍>Shi;
+屎>Shi;
+屏>Hei;
+屐>Geki;
+屑>Setsu;
+屓>Ki;
+展>Ten;
+属>Zoku;
+屠>To;
+屡>Ru;
+層>Sou;
+履>Ri;
+屬>Zoku;
+屮>Sa;
+屯>Ton;
+山>San;
+屹>Kitsu;
+岌>Kyuu;
+岐>Ki;
+岑>Shin;
+岔>Sa;
+岡>Kou;
+岨>So;
+岩>Gan;
+岫>Shuu;
+岬>Kou;
+岱>Tai;
+岳>Gaku;
+岶>Haku;
+岷>Bin;
+岸>Gan;
+岻>Ji;
+岾>Sen;
+峇>Kou;
+峙>Ji;
+峡>Kyou;
+峨>Ga;
+峩>Ga;
+峪>Yoku;
+峭>Shou;
+峯>Hou;
+峰>Hou;
+島>Tou;
+峺>Kou;
+峻>Shun;
+峽>Kyou;
+崇>Suu;
+崋>Ka;
+崎>Ki;
+崑>Kon;
+崔>Sai;
+崕>Gai;
+崖>Gai;
+崗>Kou;
+崘>Ron;
+崙>Ron;
+崚>Ryou;
+崛>Kutsu;
+崟>Gin;
+崢>Sou;
+崩>Hou;
+嵋>Bi;
+嵌>Kan;
+嵎>Guu;
+嵐>Ran;
+嵒>Gan;
+嵜>Ki;
+嵩>Suu;
+嵬>Kai;
+嵯>Sa;
+嵳>Sa;
+嶂>Shou;
+嶄>San;
+嶇>Ku;
+嶋>Tou;
+嶌>Tou;
+嶐>Ryuu;
+嶝>Tou;
+嶢>Gyou;
+嶬>Gi;
+嶮>Ken;
+嶷>Gi;
+嶺>Rei;
+嶼>Sho;
+嶽>Gaku;
+巉>San;
+巌>Gan;
+巍>Gi;
+巒>Ran;
+巓>Ten;
+巖>Gan;
+巛>Sen;
+川>Sen;
+州>Shuu;
+巡>Jun;
+巣>Sou;
+工>Kou;
+左>Sa;
+巧>Kou;
+巨>Kyo;
+巫>Fu;
+差>Shi;
+己>Ki;
+已>I;
+巳>Shi;
+巴>Ha;
+巵>Shi;
+巷>Kou;
+巻>Kan;
+巽>Son;
+巾>Kin;
+市>Shi;
+布>Fu;
+帆>Han;
+帋>Shi;
+希>Ki;
+帑>Do;
+帖>Jou;
+帙>Chitsu;
+帚>Sou;
+帛>Haku;
+帝>Tei;
+帥>Sotsu;
+師>Shi;
+席>Seki;
+帯>Tai;
+帰>Ki;
+帳>Chou;
+帶>Tai;
+帷>I;
+常>Jou;
+帽>Bou;
+幀>Tei;
+幃>I;
+幄>Aku;
+幅>Fuku;
+幇>Hou;
+幌>Kou;
+幎>Beki;
+幔>Ban;
+幕>Maku;
+幗>Kaku;
+幟>Shi;
+幡>Han;
+幢>Tou;
+幣>Hei;
+幤>Hei;
+干>Kan;
+平>Hei;
+年>Nen;
+幵>Ken;
+并>Hei;
+幸>Kou;
+幹>Kan;
+幺>You;
+幻>Gen;
+幼>You;
+幽>Yuu;
+幾>Ki;
+广>Gen;
+庁>Chou;
+広>Kou;
+庄>Sou;
+庇>Hi;
+床>Shou;
+序>Jo;
+底>Tei;
+庖>Hou;
+店>Ten;
+庚>Kou;
+府>Fu;
+庠>Shou;
+度>Taku;
+座>Za;
+庫>Ko;
+庭>Tei;
+庵>An;
+庶>Sho;
+康>Kou;
+庸>You;
+廁>Shi;
+廂>Shou;
+廃>Hai;
+廈>Ka;
+廉>Ren;
+廊>Rou;
+廐>Kyuu;
+廓>Kaku;
+廖>Ryou;
+廚>Zu;
+廛>Ten;
+廝>Shi;
+廟>Byou;
+廠>Shou;
+廡>Bu;
+廢>Hai;
+廣>Kou;
+廨>Kai;
+廩>Rin;
+廬>Ryo;
+廰>Chou;
+廱>You;
+廳>Chou;
+廴>In;
+延>En;
+廷>Tei;
+廸>Teki;
+建>Ken;
+廻>Kai;
+廼>Dai;
+廾>Kyou;
+廿>Juu;
+弁>Ben;
+弃>Ki;
+弄>Rou;
+弉>Jou;
+弊>Hei;
+弋>Yoku;
+弌>Itsu;
+弍>Ni;
+式>Shiki;
+弐>Ni;
+弑>Shi;
+弓>Kyuu;
+弔>Chou;
+引>In;
+弗>Futsu;
+弘>Kou;
+弛>Shi;
+弟>Tei;
+弥>Mi;
+弦>Gen;
+弧>Ko;
+弩>Do;
+弭>Bi;
+弯>Wan;
+弱>Jaku;
+張>Chou;
+強>Kyou;
+弸>Hou;
+弼>Hitsu;
+弾>Dan;
+彁>Sei;
+彈>Dan;
+彊>Kyou;
+彌>Bi;
+彎>Wan;
+彑>Kei;
+当>Tou;
+彖>Tan;
+彗>Sui;
+彙>I;
+彜>I;
+彝>I;
+彡>San;
+形>Kei;
+彦>Gen;
+彩>Sai;
+彪>Hyou;
+彫>Chou;
+彬>Hin;
+彭>Hou;
+彰>Shou;
+影>Ei;
+彳>Teki;
+彷>Hou;
+役>Yaku;
+彼>Hi;
+彿>Futsu;
+往>Ou;
+征>Sei;
+徂>So;
+徃>Ou;
+径>Kei;
+待>Tai;
+徇>Shun;
+很>Kon;
+徊>Kai;
+律>Ritsu;
+後>Go;
+徐>Jo;
+徑>Kei;
+徒>To;
+従>Juu;
+得>Toku;
+徘>Hai;
+徙>Shi;
+從>Juu;
+徠>Rai;
+御>Gyo;
+徨>Kou;
+復>Fuku;
+循>Jun;
+徭>You;
+微>Bi;
+徳>Toku;
+徴>Chou;
+徹>Tetsu;
+徼>Kyou;
+徽>Ki;
+心>Shin;
+必>Hitsu;
+忌>Ki;
+忍>Nin;
+忖>Son;
+志>Shi;
+忘>Bou;
+忙>Bou;
+応>Ou;
+忝>Ten;
+忠>Chuu;
+忤>Go;
+快>Kai;
+忰>Sui;
+忱>Shin;
+念>Nen;
+忸>Jiku;
+忻>Kin;
+忽>Kotsu;
+忿>Fun;
+怎>Shin;
+怏>You;
+怐>Kou;
+怒>Do;
+怕>Ha;
+怖>Fu;
+怙>Ko;
+怛>Datsu;
+怜>Rei;
+思>Shi;
+怠>Tai;
+怡>I;
+急>Kyuu;
+怦>Hou;
+性>Sei;
+怨>En;
+怩>Ji;
+怪>Kai;
+怫>Futsu;
+怯>Kyou;
+怱>Sou;
+恁>In;
+恂>Jun;
+恃>Ji;
+恆>Kou;
+恊>Kyou;
+恋>Ren;
+恍>Kou;
+恐>Kyou;
+恒>Kou;
+恕>Jo;
+恙>You;
+恚>I;
+恟>Kyou;
+恠>Kai;
+恢>Kai;
+恣>Shi;
+恤>Jutsu;
+恥>Chi;
+恨>Kon;
+恩>On;
+恪>Kaku;
+恫>Dou;
+恬>Ten;
+恭>Kyou;
+息>Soku;
+恰>Kou;
+恵>Kei;
+恷>Kyuu;
+悁>En;
+悃>Kon;
+悄>Shou;
+悉>Shitsu;
+悋>Rin;
+悌>Tei;
+悍>Kan;
+悒>Yuu;
+悔>Kai;
+悖>Hai;
+悗>Ban;
+悚>Shou;
+悛>Sen;
+悟>Go;
+悠>Yuu;
+患>Kan;
+悦>Etsu;
+悧>Ri;
+悩>Nou;
+悪>Aku;
+悲>Hi;
+悳>Toku;
+悴>Sui;
+悵>Chou;
+悶>Mon;
+悸>Ki;
+悼>Tou;
+悽>Sei;
+情>Jou;
+惆>Chuu;
+惇>Ton;
+惑>Waku;
+惓>Ken;
+惘>Bou;
+惚>Kotsu;
+惜>Seki;
+惟>I;
+惠>Kei;
+惡>O;
+惣>Sou;
+惧>Ku;
+惨>San;
+惰>Da;
+惱>Nou;
+想>Sou;
+惴>Zui;
+惶>Kou;
+惷>Shun;
+惹>Ja;
+惺>Sei;
+惻>Soku;
+愀>Shou;
+愁>Shuu;
+愃>Ken;
+愆>Ken;
+愈>Yu;
+愉>Yu;
+愍>Bin;
+愎>Hyoku;
+意>I;
+愕>Gaku;
+愚>Gu;
+愛>Ai;
+感>Kan;
+愡>Sou;
+愧>Ki;
+愨>Kaku;
+愬>So;
+愴>Sou;
+愼>Shin;
+愽>Haku;
+愾>Ki;
+愿>Gen;
+慂>You;
+慄>Ritsu;
+慇>In;
+慈>Ji;
+慊>Ken;
+態>Tai;
+慌>Kou;
+慍>Un;
+慎>Shin;
+慓>Hyou;
+慕>Bo;
+慘>San;
+慙>Zan;
+慚>Zan;
+慝>Toku;
+慟>Dou;
+慢>Man;
+慣>Kan;
+慥>Zou;
+慧>Kei;
+慨>Gai;
+慫>Shou;
+慮>Ryo;
+慯>Shou;
+慰>I;
+慱>Tan;
+慳>Kan;
+慴>Shou;
+慵>You;
+慶>Kei;
+慷>Kou;
+慾>Yoku;
+憂>Yuu;
+憇>Kei;
+憊>Hai;
+憎>Zou;
+憐>Ren;
+憑>Hyou;
+憔>Shou;
+憖>Gin;
+憙>Ki;
+憚>Tan;
+憤>Fun;
+憧>Dou;
+憩>Kei;
+憫>Bin;
+憬>Kei;
+憮>Bu;
+憲>Ken;
+憶>Oku;
+憺>Tan;
+憾>Kan;
+懃>Kin;
+懆>Sou;
+懇>Kon;
+懈>Kai;
+應>You;
+懊>Ou;
+懋>Bou;
+懌>Eki;
+懍>Rin;
+懐>Kai;
+懣>Mon;
+懦>Da;
+懲>Chou;
+懴>Zan;
+懶>Ran;
+懷>Kai;
+懸>Ken;
+懺>Zan;
+懼>Ku;
+懽>Kan;
+懾>Shou;
+懿>I;
+戀>Ren;
+戈>Ka;
+戉>Etsu;
+戊>Bo;
+戌>Jutsu;
+戍>Ju;
+戎>Juu;
+成>Sei;
+我>Ga;
+戒>Kai;
+戔>San;
+或>Waku;
+戚>Seki;
+戛>Katsu;
+戝>Zoku;
+戞>Katsu;
+戟>Geki;
+戡>Kan;
+戦>Sen;
+截>Setsu;
+戮>Riku;
+戯>Gi;
+戰>Sen;
+戲>Gi;
+戳>Taku;
+戴>Tai;
+戸>Ko;
+戻>Rei;
+房>Bou;
+所>Sho;
+扁>Hen;
+扇>Sen;
+扈>Ko;
+扉>Hi;
+手>Shu;
+才>Sai;
+扎>Satsu;
+打>Da;
+払>Futsu;
+托>Taku;
+扛>Kou;
+扞>Kan;
+扠>Sa;
+扣>Kou;
+扮>Fun;
+扱>Sou;
+扶>Fu;
+批>Hi;
+扼>Aku;
+找>Ka;
+承>Shou;
+技>Gi;
+抂>Kyou;
+抃>Ben;
+抄>Shou;
+抉>Ketsu;
+把>Ha;
+抑>Yoku;
+抒>Jo;
+抓>Sou;
+抔>Hou;
+投>Tou;
+抖>Tou;
+抗>Kou;
+折>Setsu;
+抛>Hou;
+抜>Batsu;
+択>Taku;
+披>Hi;
+抬>Tai;
+抱>Hou;
+抵>Tei;
+抹>Matsu;
+抻>Shin;
+押>Ou;
+抽>Chuu;
+拂>Futsu;
+担>Tan;
+拆>Taku;
+拇>Bo;
+拈>Den;
+拉>Ratsu;
+拊>Fu;
+拌>Han;
+拍>Haku;
+拏>Da;
+拐>Kai;
+拑>Kan;
+拒>Kyo;
+拓>Taku;
+拔>Batsu;
+拗>Ou;
+拘>Kou;
+拙>Setsu;
+招>Shou;
+拜>Hai;
+拝>Hai;
+拠>Kyo;
+拡>Kaku;
+括>Katsu;
+拭>Shiki;
+拮>Kitsu;
+拯>Jou;
+拱>Kyou;
+拳>Ken;
+拵>Son;
+拶>Satsu;
+拷>Gou;
+拾>Shuu;
+拿>Da;
+持>Ji;
+挂>Kei;
+指>Shi;
+挈>Ketsu;
+按>An;
+挌>Kaku;
+挑>Chou;
+挙>Kyo;
+挟>Kyou;
+挧>Ku;
+挨>Ai;
+挫>Za;
+振>Shin;
+挺>Tei;
+挽>Ban;
+挾>Kyou;
+挿>Sou;
+捉>Soku;
+捌>Hatsu;
+捍>Kan;
+捏>Detsu;
+捐>En;
+捕>Ho;
+捗>Ho;
+捜>Sou;
+捧>Hou;
+捨>Sha;
+捩>Retsu;
+捫>Mon;
+据>Kyo;
+捲>Ken;
+捶>Sui;
+捷>Shou;
+捺>Natsu;
+捻>Nen;
+掀>Kin;
+掃>Sou;
+授>Ju;
+掉>Tou;
+掌>Shou;
+掎>Ki;
+掏>Tou;
+排>Hai;
+掖>Eki;
+掘>Kutsu;
+掛>Ka;
+掟>Tou;
+掠>Ryaku;
+採>Sai;
+探>Tan;
+掣>Sei;
+接>Setsu;
+控>Kou;
+推>Sui;
+掩>En;
+措>So;
+掫>Sou;
+掬>Kiku;
+掲>Kei;
+掴>Kaku;
+掻>Sou;
+掾>En;
+揀>Kan;
+揃>Sen;
+揄>Yu;
+揆>Ki;
+揉>Juu;
+描>Byou;
+提>Tei;
+插>Sou;
+揖>Yuu;
+揚>You;
+換>Kan;
+握>Aku;
+揣>Shi;
+揩>Kai;
+揮>Ki;
+援>En;
+揶>Ya;
+揺>You;
+搆>Kou;
+損>Son;
+搏>Haku;
+搓>Sa;
+搖>You;
+搗>Tou;
+搜>Sou;
+搦>Jaku;
+搨>Tou;
+搬>Han;
+搭>Tou;
+搴>Ken;
+搶>Shou;
+携>Kei;
+搾>Saku;
+摂>Setsu;
+摎>Kyuu;
+摘>Teki;
+摧>Sai;
+摩>Ma;
+摯>Shi;
+摶>Tan;
+摸>Mo;
+摺>Shou;
+撃>Geki;
+撈>Rou;
+撒>San;
+撓>Dou;
+撕>Sei;
+撚>Nen;
+撞>Shu;
+撤>Tetsu;
+撥>Hatsu;
+撩>Ryou;
+撫>Bu;
+播>Ha;
+撮>Satsu;
+撰>San;
+撲>Boku;
+撹>Kaku;
+撻>Tachi;
+撼>Kan;
+擁>You;
+擂>Rai;
+擅>Sen;
+擇>Taku;
+操>Sou;
+擒>Kin;
+擔>Tan;
+擘>Haku;
+據>Kyo;
+擠>Sei;
+擡>Tai;
+擢>Teki;
+擣>Tou;
+擦>Satsu;
+擧>Kyo;
+擬>Gi;
+擯>Hin;
+擱>Kaku;
+擲>Teki;
+擴>Kaku;
+擶>Sen;
+擺>Hai;
+擽>Ryaku;
+擾>Jou;
+攀>Han;
+攅>San;
+攘>Jou;
+攜>Kei;
+攝>Setsu;
+攣>Ren;
+攤>Tan;
+攪>Kaku;
+攫>Kaku;
+攬>Ran;
+支>Shi;
+攴>Hoku;
+攵>Boku;
+收>Shuu;
+攷>Kou;
+攸>Yuu;
+改>Kai;
+攻>Kou;
+放>Hou;
+政>Sei;
+故>Ko;
+效>Kou;
+敍>Jo;
+敏>Bin;
+救>Kyuu;
+敕>Choku;
+敖>Gou;
+敗>Hai;
+敘>Jo;
+教>Kyou;
+敝>Hei;
+敞>Shou;
+敢>Kan;
+散>San;
+敦>Ton;
+敬>Kei;
+数>Suu;
+敲>Kou;
+整>Sei;
+敵>Teki;
+敷>Fu;
+數>Suu;
+斂>Ren;
+斃>Hei;
+文>Bun;
+斈>Gaku;
+斉>Sei;
+斌>Hin;
+斎>Sai;
+斐>Hi;
+斑>Han;
+斗>To;
+料>Ryou;
+斛>Koku;
+斜>Sha;
+斟>Shin;
+斡>Atsu;
+斤>Kin;
+斥>Seki;
+斧>Fu;
+斫>Shaku;
+斬>Zan;
+断>Dan;
+斯>Shi;
+新>Shin;
+斷>Dan;
+方>Hou;
+於>O;
+施>Shi;
+旁>Hou;
+旃>Sen;
+旄>Bou;
+旅>Ryo;
+旆>Hai;
+旋>Sen;
+旌>Sei;
+族>Zoku;
+旒>Ryuu;
+旗>Ki;
+旙>Han;
+旛>Han;
+无>Bu;
+旡>Ki;
+既>Ki;
+日>Nichi;
+旦>Tan;
+旧>Kyuu;
+旨>Shi;
+早>Sou;
+旬>Jun;
+旭>Kyoku;
+旱>Kan;
+旺>Ou;
+旻>Bin;
+昂>Kou;
+昃>Soku;
+昆>Kon;
+昇>Shou;
+昊>Kou;
+昌>Shou;
+明>Mei;
+昏>Kon;
+易>Eki;
+昔>Seki;
+昜>You;
+星>Sei;
+映>Ei;
+春>Shun;
+昧>Mai;
+昨>Saku;
+昭>Shou;
+是>Ze;
+昴>Bou;
+昵>Jitsu;
+昶>Chou;
+昼>Chuu;
+昿>Kou;
+晁>Chou;
+時>Ji;
+晃>Kou;
+晄>Kou;
+晉>Shin;
+晋>Shin;
+晏>An;
+晒>Sai;
+晝>Chuu;
+晞>Ki;
+晟>Sei;
+晢>Setsu;
+晤>Go;
+晦>Kai;
+晧>Kou;
+晨>Shin;
+晩>Ban;
+普>Fu;
+景>Kei;
+晰>Seki;
+晴>Sei;
+晶>Shou;
+智>Chi;
+暁>Gyou;
+暃>Hi;
+暄>Ken;
+暇>Ka;
+暈>Un;
+暉>Ki;
+暎>Ei;
+暑>Sho;
+暖>Dan;
+暗>An;
+暘>You;
+暝>Mei;
+暢>Chou;
+暦>Reki;
+暫>Zan;
+暮>Bo;
+暴>Bou;
+暸>Ryou;
+暹>Sen;
+暼>Hetsu;
+暾>Ton;
+曁>Ki;
+曄>You;
+曇>Don;
+曉>Gyou;
+曖>Ai;
+曙>Sho;
+曚>Bou;
+曜>You;
+曝>Baku;
+曠>Kou;
+曦>Gi;
+曩>Dou;
+曰>Etsu;
+曲>Kyoku;
+曳>Ei;
+更>Kou;
+曵>Ei;
+曷>Katsu;
+書>Sho;
+曹>Sou;
+曼>Ban;
+曽>Zo;
+曾>So;
+替>Tai;
+最>Sai;
+會>Kai;
+月>Getsu;
+有>Yuu;
+朋>Hou;
+服>Fuku;
+朏>Hi;
+朔>Saku;
+朕>Chin;
+朖>Rou;
+朗>Rou;
+望>Bou;
+朝>Chou;
+朞>Ki;
+期>Ki;
+朦>Bou;
+朧>Rou;
+木>Boku;
+未>Mi;
+末>Matsu;
+本>Hon;
+札>Satsu;
+朮>Jutsu;
+朱>Shu;
+朴>Boku;
+朶>Da;
+朷>Tou;
+朸>Ryoku;
+机>Ki;
+朽>Kyuu;
+朿>Shi;
+杆>Kan;
+杉>San;
+李>Ri;
+杏>Kyou;
+材>Zai;
+村>Son;
+杓>Hyou;
+杖>Jou;
+杙>Yoku;
+杜>Do;
+杞>Ko;
+束>Soku;
+杠>Kou;
+条>Jou;
+来>Rai;
+杪>Byou;
+杭>Kou;
+杯>Hai;
+杰>Ketsu;
+東>Tou;
+杲>Kou;
+杳>You;
+杵>Sho;
+杷>Ha;
+杼>Cho;
+松>Shou;
+板>Han;
+枅>Kei;
+枇>Hi;
+枉>Ou;
+枋>Hou;
+枌>Fun;
+析>Seki;
+枕>Chin;
+林>Rin;
+枚>Mai;
+果>Ka;
+枝>Shi;
+枢>Suu;
+枦>Ro;
+枩>Shou;
+枯>Ko;
+枳>Ki;
+枴>Kai;
+架>Ka;
+枷>Ka;
+枸>Ku;
+枹>Hou;
+柁>Ta;
+柄>Hei;
+柆>Rou;
+柊>Shuu;
+柎>Fu;
+柏>Haku;
+某>Bou;
+柑>Kan;
+染>Sen;
+柔>Nyuu;
+柘>Sha;
+柚>Yuu;
+柝>Taku;
+柞>Saku;
+柢>Tei;
+柤>Sa;
+柧>Ko;
+柩>Kyuu;
+柬>Kan;
+柮>Totsu;
+柯>Ka;
+柱>Chuu;
+柳>Ryuu;
+柴>Sai;
+柵>Saku;
+査>Sa;
+柾>Kyuu;
+柿>Shi;
+栄>Ei;
+栓>Sen;
+栖>Sei;
+栗>Ritsu;
+栞>Kan;
+校>Kou;
+栢>Haku;
+栩>Ku;
+株>Chu;
+栫>Son;
+栲>Gou;
+栴>Sen;
+核>Kaku;
+根>Kon;
+格>Kou;
+栽>Sai;
+桀>Ketsu;
+桁>Kou;
+桂>Kei;
+桃>Tou;
+框>Kyou;
+案>An;
+桍>Ko;
+桎>Shitsu;
+桐>Dou;
+桑>Sou;
+桓>Kan;
+桔>Kitsu;
+桙>U;
+桜>Ou;
+桟>San;
+档>Tou;
+桧>Kai;
+桴>Fu;
+桶>Tou;
+桷>Kaku;
+桾>Kun;
+桿>Kan;
+梁>Ryou;
+梃>Tei;
+梅>Bai;
+梍>Sou;
+梏>Koku;
+梓>Shi;
+梔>Shi;
+梗>Kou;
+梛>Da;
+條>Jou;
+梟>Kyou;
+梠>Ryo;
+梢>Shou;
+梦>Mu;
+梧>Go;
+梨>Ri;
+梭>Sa;
+梯>Tei;
+械>Kai;
+梱>Kon;
+梳>So;
+梵>Fuu;
+梶>Bi;
+梹>Bin;
+梼>Tou;
+棄>Ki;
+棆>Rin;
+棉>Men;
+棊>Ki;
+棋>Ki;
+棍>Kon;
+棒>Bou;
+棔>Kon;
+棕>Shu;
+棗>Sou;
+棘>Kyoku;
+棚>Hou;
+棟>Tou;
+棠>Tou;
+棡>Kou;
+棣>Tei;
+棧>San;
+森>Shin;
+棯>Jin;
+棲>Sei;
+棹>Tou;
+棺>Kan;
+椀>Wan;
+椁>Kaku;
+椄>Setsu;
+椅>I;
+椈>Kiku;
+椋>Ryou;
+椌>Kou;
+植>Shoku;
+椎>Tsui;
+椏>A;
+椒>Shou;
+検>Ken;
+椢>Kai;
+椦>Ken;
+椰>Ya;
+椴>Tan;
+椶>Shu;
+椹>Chin;
+椽>Ten;
+椿>Chin;
+楊>You;
+楓>Fuu;
+楔>Setsu;
+楕>Da;
+楙>Bou;
+楚>So;
+楜>Ko;
+楝>Ren;
+楞>Rou;
+楠>Nan;
+楡>Yu;
+楢>Shuu;
+楪>You;
+楫>Shuu;
+業>Gyou;
+楮>Cho;
+楯>Jun;
+楳>Bai;
+楴>Tei;
+極>Goku;
+楷>Kai;
+楸>Shuu;
+楹>Ei;
+楼>Rou;
+楽>Gaku;
+概>Gai;
+榎>Ka;
+榑>Fu;
+榔>Rou;
+榕>You;
+榛>Shin;
+榜>Bou;
+榠>Bei;
+榧>Hi;
+榮>Ei;
+榱>Sui;
+榲>Otsu;
+榴>Ryuu;
+榻>Tou;
+榾>Kotsu;
+榿>Ki;
+槁>Kou;
+槃>Han;
+槇>Ten;
+槊>Saku;
+構>Kou;
+槌>Tsui;
+槍>Sou;
+槎>Sa;
+槐>Kai;
+槓>Kou;
+様>You;
+槙>Ten;
+槝>Tou;
+槞>Rou;
+槧>San;
+槨>Kaku;
+槫>Tan;
+槭>Shuku;
+槲>Koku;
+槹>Kou;
+槻>Ki;
+槽>Sou;
+槿>Kin;
+樂>Gaku;
+樅>Shou;
+樊>Han;
+樋>Tou;
+樌>Kan;
+樒>Mitsu;
+樓>Rou;
+樔>Sou;
+樗>Cho;
+標>Hyou;
+樛>Kyuu;
+樞>Suu;
+樟>Shou;
+模>Mo;
+樢>Boku;
+樣>You;
+権>Ken;
+横>Ou;
+樵>Shou;
+樶>Sai;
+樸>Boku;
+樹>Ju;
+樺>Ka;
+樽>Son;
+橄>Kan;
+橇>Zei;
+橈>Dou;
+橋>Kyou;
+橘>Kitsu;
+橙>Tou;
+機>Ki;
+橡>Shou;
+橢>Da;
+橦>Tou;
+橸>Shou;
+橿>Kyou;
+檀>Tan;
+檄>Geki;
+檍>Yoku;
+檎>Go;
+檐>En;
+檗>Haku;
+檜>Kai;
+檠>Kei;
+檢>Ken;
+檣>Shou;
+檪>Reki;
+檬>Bou;
+檮>Tou;
+檳>Bin;
+檸>Nei;
+檻>Kan;
+櫁>Mitsu;
+櫂>Tou;
+櫃>Ki;
+櫑>Rai;
+櫓>Ro;
+櫚>Ryo;
+櫛>Shitsu;
+櫞>En;
+櫟>Reki;
+櫨>Ro;
+櫪>Reki;
+櫺>Rei;
+櫻>Ou;
+欄>Ran;
+欅>Kyo;
+權>Ken;
+欒>Ran;
+欖>Ran;
+欝>Utsu;
+欠>Ketsu;
+次>Ji;
+欣>Gon;
+欧>Ou;
+欲>Yoku;
+欷>Ki;
+欸>Ai;
+欹>I;
+欺>Gi;
+欽>Kin;
+款>Kan;
+歃>Sou;
+歇>Ketsu;
+歉>Ken;
+歌>Ka;
+歎>Tan;
+歐>Ou;
+歓>Kan;
+歔>Kyo;
+歙>Kyuu;
+歛>Kan;
+歟>Yo;
+歡>Kan;
+止>Shi;
+正>Sei;
+此>Shi;
+武>Bu;
+歩>Ho;
+歪>Wai;
+歯>Shi;
+歳>Sei;
+歴>Reki;
+歸>Ki;
+歹>Gatsu;
+死>Shi;
+歿>Botsu;
+殀>You;
+殃>You;
+殄>Ten;
+殆>Tai;
+殉>Jun;
+殊>Shu;
+残>Zan;
+殍>Hyou;
+殕>Fuu;
+殖>Shoku;
+殘>Zan;
+殞>In;
+殤>Shou;
+殪>Ei;
+殫>Tan;
+殯>Hin;
+殱>Sen;
+殲>Sen;
+殳>Shu;
+殴>Ou;
+段>Dan;
+殷>In;
+殺>Satsu;
+殻>Kaku;
+殼>Kaku;
+殿>Ten;
+毀>Ki;
+毅>Ki;
+毆>Ou;
+毋>Bu;
+母>Bo;
+毎>Mai;
+毒>Doku;
+毓>Iku;
+比>Hi;
+毘>Hi;
+毛>Mou;
+毫>Kou;
+毬>Kyuu;
+毯>Tan;
+毳>Zei;
+氈>Sen;
+氏>Shi;
+民>Min;
+氓>Bou;
+气>Ki;
+気>Ki;
+氛>Fun;
+氣>Ki;
+氤>In;
+水>Sui;
+氷>Hyou;
+永>Ei;
+氾>Han;
+汀>Tei;
+汁>Juu;
+求>Kyuu;
+汎>Han;
+汐>Seki;
+汕>San;
+汗>Kan;
+汚>O;
+汝>Jo;
+汞>Kou;
+江>Kou;
+池>Chi;
+汨>Beki;
+汪>Ou;
+汰>Ta;
+汲>Kyuu;
+汳>Hen;
+決>Ketsu;
+汽>Ki;
+汾>Fun;
+沁>Shin;
+沂>Ki;
+沃>Yoku;
+沈>Chin;
+沌>Ton;
+沍>Go;
+沐>Boku;
+沒>Botsu;
+沓>Tou;
+沖>Chuu;
+沙>Sa;
+沚>Shi;
+沛>Hai;
+没>Botsu;
+沢>Taku;
+沫>Matsu;
+沮>Sho;
+沱>Ta;
+河>Ka;
+沸>Futsu;
+油>Yu;
+沺>Ten;
+治>Ji;
+沼>Shou;
+沽>Ko;
+沾>Ten;
+沿>En;
+況>Kyou;
+泄>Ei;
+泅>Shuu;
+泉>Sen;
+泊>Haku;
+泌>Hitsu;
+泓>Ou;
+法>Hou;
+泗>Shi;
+泙>Hou;
+泛>Han;
+泝>So;
+泡>Hou;
+波>Ha;
+泣>Kyuu;
+泥>Dei;
+注>Chuu;
+泪>Rui;
+泯>Bin;
+泰>Tai;
+泱>Ou;
+泳>Ei;
+洋>You;
+洌>Retsu;
+洒>Sei;
+洗>Sen;
+洙>Shu;
+洛>Raku;
+洞>Dou;
+洟>I;
+津>Shin;
+洩>Ei;
+洪>Kou;
+洫>Kyoku;
+洲>Shuu;
+洳>Jo;
+洵>Shun;
+洶>Kyou;
+洸>Kou;
+活>Katsu;
+洽>Kou;
+派>Ha;
+流>Ryuu;
+浄>Jou;
+浅>Sen;
+浙>Setsu;
+浚>Shun;
+浜>Hin;
+浣>Kan;
+浤>Kou;
+浦>Ho;
+浩>Kou;
+浪>Rou;
+浬>Ri;
+浮>Fu;
+浴>Yoku;
+海>Kai;
+浸>Shin;
+浹>Shou;
+涅>Netsu;
+消>Shou;
+涌>Yuu;
+涎>Sen;
+涓>Ken;
+涕>Tei;
+涙>Rui;
+涛>Tou;
+涜>Toku;
+涯>Gai;
+液>Eki;
+涵>Kan;
+涸>Ko;
+涼>Ryou;
+淀>Ten;
+淅>Seki;
+淆>Kou;
+淇>Ki;
+淋>Rin;
+淌>Shou;
+淑>Shuku;
+淒>Sei;
+淕>Riku;
+淘>Tou;
+淙>Sou;
+淞>Shou;
+淡>Tan;
+淤>Yo;
+淦>Kan;
+淨>Jou;
+淪>Rin;
+淫>In;
+淬>Sai;
+淮>Wai;
+深>Shin;
+淳>Shun;
+淵>En;
+混>Kon;
+淹>En;
+淺>Sen;
+添>Ten;
+清>Sei;
+渇>Katsu;
+済>Sai;
+渉>Shou;
+渊>En;
+渋>Juu;
+渓>Kei;
+渕>En;
+渙>Kan;
+渚>Sho;
+減>Gen;
+渝>Yu;
+渟>Tei;
+渠>Kyo;
+渡>To;
+渣>Sa;
+渤>Botsu;
+渥>Aku;
+渦>Ka;
+温>On;
+渫>Setsu;
+測>Soku;
+渭>I;
+渮>Ka;
+港>Kou;
+游>Yuu;
+渺>Byou;
+渾>Kon;
+湃>Hai;
+湊>Sou;
+湍>Tan;
+湎>Ben;
+湖>Ko;
+湘>Shou;
+湛>Tan;
+湟>Kou;
+湧>Yuu;
+湫>Shou;
+湮>In;
+湯>Tou;
+湲>Kan;
+湶>Sen;
+湾>Wan;
+湿>Shitsu;
+満>Man;
+溂>Ratsu;
+溌>Hatsu;
+溏>Tou;
+源>Gen;
+準>Jun;
+溘>Kou;
+溜>Ryuu;
+溝>Kou;
+溟>Mei;
+溢>Itsu;
+溥>Ho;
+溪>Kei;
+溯>So;
+溲>Sou;
+溶>You;
+溷>Kon;
+溺>Deki;
+溽>Joku;
+滂>Bou;
+滄>Sou;
+滅>Metsu;
+滉>Kou;
+滋>Ji;
+滌>Deki;
+滑>Katsu;
+滓>Sai;
+滔>Tou;
+滕>Tou;
+滝>Sou;
+滞>Tai;
+滬>Ko;
+滯>Tai;
+滲>Shin;
+滴>Teki;
+滷>Ro;
+滸>Ko;
+滾>Kon;
+滿>Man;
+漁>Ryou;
+漂>Hyou;
+漆>Shitsu;
+漉>Roku;
+漏>Rou;
+漑>Gai;
+漓>Ri;
+演>En;
+漕>Sou;
+漠>Baku;
+漢>Kan;
+漣>Ran;
+漫>Man;
+漬>Shi;
+漱>Sou;
+漲>Chou;
+漸>Zen;
+漾>You;
+漿>Shou;
+潁>Ei;
+潅>Kan;
+潔>Ketsu;
+潘>Han;
+潛>Sen;
+潜>Sen;
+潟>Seki;
+潤>Jun;
+潦>Rou;
+潭>Tan;
+潮>Chou;
+潯>Jin;
+潰>Kai;
+潴>Cho;
+潸>San;
+潺>San;
+潼>Dou;
+澀>Juu;
+澁>Juu;
+澂>Chou;
+澄>Chou;
+澆>Gyou;
+澎>Hou;
+澑>Ryuu;
+澗>Kan;
+澡>Sou;
+澣>Kan;
+澤>Taku;
+澪>Rei;
+澱>Ten;
+澳>Iku;
+澹>Tan;
+激>Geki;
+濁>Daku;
+濂>Ren;
+濃>Nou;
+濆>Fun;
+濔>Dei;
+濕>Shitsu;
+濘>Nei;
+濟>Sai;
+濠>Gou;
+濡>Ju;
+濤>Tou;
+濫>Ran;
+濬>Shun;
+濮>Hoku;
+濯>Taku;
+濱>Hin;
+濳>Sen;
+濶>Katsu;
+濺>Sen;
+濾>Ryo;
+瀁>You;
+瀉>Sha;
+瀋>Shin;
+瀏>Ryuu;
+瀑>Baku;
+瀕>Hin;
+瀘>Ro;
+瀚>Kan;
+瀛>Ei;
+瀝>Reki;
+瀞>Jou;
+瀟>Shou;
+瀦>Cho;
+瀧>Sou;
+瀬>Rai;
+瀰>Bi;
+瀲>Ren;
+瀾>Ran;
+灌>Kan;
+灑>Sai;
+灘>Dan;
+灣>Wan;
+火>Ka;
+灯>Tou;
+灰>Kai;
+灸>Kyuu;
+灼>Shaku;
+災>Sai;
+炉>Ro;
+炊>Sui;
+炎>En;
+炒>Sou;
+炙>Sha;
+炬>Ko;
+炭>Tan;
+炮>Hou;
+炯>Kei;
+炳>Hei;
+炸>Saku;
+点>Ten;
+為>I;
+烈>Retsu;
+烋>Kou;
+烏>U;
+烙>Raku;
+烝>Jou;
+烟>En;
+烱>Kei;
+烹>Hou;
+烽>Hou;
+焉>En;
+焔>En;
+焙>Hou;
+焚>Fun;
+焜>Kon;
+無>Mu;
+焦>Shou;
+然>Zen;
+焼>Shou;
+煉>Ren;
+煌>Kou;
+煎>Sen;
+煕>Ki;
+煖>Dan;
+煙>En;
+煢>Kei;
+煤>Bai;
+煥>Kan;
+煦>Ku;
+照>Shou;
+煩>Han;
+煬>You;
+煮>Sha;
+煽>Sen;
+熄>Soku;
+熈>Ki;
+熊>Yuu;
+熏>Kun;
+熔>You;
+熕>Kou;
+熙>Ki;
+熟>Juku;
+熨>I;
+熬>Gou;
+熱>Netsu;
+熹>Ki;
+熾>Shi;
+燃>Nen;
+燈>Tou;
+燉>Ton;
+燎>Ryou;
+燐>Rin;
+燒>Shou;
+燔>Han;
+燕>En;
+燗>Ran;
+營>Ei;
+燠>Iku;
+燥>Sou;
+燦>San;
+燧>Sui;
+燬>Ki;
+燭>Shoku;
+燮>Shou;
+燵>Tatsu;
+燹>Sen;
+燻>Kun;
+燼>Jin;
+燿>You;
+爆>Baku;
+爍>Shaku;
+爐>Ro;
+爛>Ran;
+爨>San;
+爪>Sou;
+爬>Ha;
+爭>Sou;
+爰>En;
+爲>I;
+爵>Shaku;
+父>Fu;
+爺>Ya;
+爻>Kou;
+爼>Sho;
+爽>Sou;
+爾>Ji;
+爿>Shou;
+牀>Sou;
+牆>Shou;
+片>Hen;
+版>Han;
+牋>Sen;
+牌>Hai;
+牒>Chou;
+牘>Toku;
+牙>Ga;
+牛>Gyuu;
+牝>Hin;
+牟>Bou;
+牡>Bo;
+牢>Rou;
+牧>Boku;
+物>Motsu;
+牲>Sei;
+牴>Tei;
+特>Toku;
+牽>Ken;
+牾>Go;
+犀>Sei;
+犁>Ri;
+犂>Ri;
+犇>Hon;
+犒>Kou;
+犖>Raku;
+犠>Gi;
+犢>Toku;
+犧>Gi;
+犬>Ken;
+犯>Han;
+犲>Sai;
+状>Jou;
+犹>Yuu;
+狂>Kyou;
+狃>Juu;
+狄>Teki;
+狆>Chuu;
+狎>Kou;
+狐>Ko;
+狒>Hi;
+狗>Kou;
+狙>Sho;
+狛>Haku;
+狠>Gan;
+狡>Kou;
+狢>Kaku;
+狩>Shu;
+独>Doku;
+狭>Kyou;
+狷>Ken;
+狸>Ri;
+狹>Kyou;
+狼>Rou;
+狽>Hai;
+猊>Gei;
+猖>Shou;
+猗>I;
+猛>Mou;
+猜>Sai;
+猝>Sotsu;
+猟>Ryou;
+猥>Wai;
+猩>Sei;
+猪>Cho;
+猫>Byou;
+献>Ken;
+猯>Tan;
+猴>Kou;
+猶>Yuu;
+猷>Yuu;
+猾>Katsu;
+猿>En;
+獄>Goku;
+獅>Shi;
+獎>Shou;
+獏>Baku;
+獗>Ketsu;
+獣>Juu;
+獨>Doku;
+獪>Kai;
+獰>Dou;
+獲>Kaku;
+獵>Ryou;
+獸>Juu;
+獺>Datsu;
+獻>Ken;
+玄>Gen;
+率>Ritsu;
+玉>Gyoku;
+王>Ou;
+玖>Kyuu;
+玩>Gan;
+玲>Rei;
+玳>Tai;
+玻>Ha;
+珀>Haku;
+珂>Ka;
+珈>Ka;
+珊>San;
+珍>Chin;
+珎>Chin;
+珞>Raku;
+珠>Shu;
+珥>Ji;
+珪>Kei;
+班>Han;
+珮>Hai;
+珱>Ei;
+珸>Go;
+現>Gen;
+球>Kyuu;
+琅>Rou;
+理>Ri;
+琉>Ryuu;
+琢>Taku;
+琥>Ko;
+琲>Hai;
+琳>Rin;
+琴>Kin;
+琵>Bi;
+琶>Ha;
+琺>Hou;
+琿>Kon;
+瑁>Bou;
+瑕>Ka;
+瑙>Dou;
+瑚>Ko;
+瑛>Ei;
+瑜>Yu;
+瑞>Zui;
+瑟>Shitsu;
+瑠>Ryuu;
+瑣>Sa;
+瑤>You;
+瑩>Ei;
+瑪>Ba;
+瑯>Rou;
+瑰>Kai;
+瑳>Sa;
+瑶>You;
+瑾>Kin;
+璃>Ri;
+璋>Shou;
+璞>Haku;
+璢>Ryuu;
+璧>Heki;
+環>Kan;
+璽>Ji;
+瓊>Kei;
+瓏>Rou;
+瓔>Ei;
+瓜>Ka;
+瓠>Ko;
+瓢>Hyou;
+瓣>Ben;
+瓦>Ga;
+瓮>Ou;
+瓶>Hei;
+瓷>Shi;
+甃>Shuu;
+甄>Ken;
+甌>Ou;
+甍>Bou;
+甎>Sen;
+甑>Sou;
+甓>Heki;
+甕>Ou;
+甘>Kan;
+甚>Shin;
+甜>Ten;
+甞>Shou;
+生>Sei;
+産>San;
+甥>Sei;
+甦>So;
+用>You;
+甫>Ho;
+甬>You;
+田>Den;
+由>Yuu;
+甲>Kou;
+申>Shin;
+男>Dan;
+甸>Ten;
+町>Chou;
+画>Ga;
+甼>Chou;
+畄>Ryuu;
+畆>Ho;
+畉>Fu;
+畊>Kou;
+畋>Ten;
+界>Kai;
+畍>Kai;
+畏>I;
+畔>Han;
+留>Ryuu;
+畚>Hon;
+畛>Shin;
+畜>Chiku;
+畝>Ho;
+畢>Hitsu;
+畤>Shi;
+略>Ryaku;
+畦>Kei;
+畧>Ryaku;
+番>Ban;
+畫>Kaku;
+畭>Yo;
+異>I;
+畳>Jou;
+畴>Chuu;
+當>Tou;
+畷>Tetsu;
+畸>Ki;
+畿>Ki;
+疂>Jou;
+疆>Kyou;
+疇>Chuu;
+疉>Jou;
+疊>Jou;
+疋>So;
+疎>So;
+疏>So;
+疑>Gi;
+疔>Chou;
+疚>Kyuu;
+疝>San;
+疣>Yuu;
+疥>Kai;
+疫>Eki;
+疱>Hou;
+疲>Hi;
+疳>Kan;
+疵>Shi;
+疸>Tan;
+疹>Shin;
+疼>Tou;
+疽>Sho;
+疾>Shitsu;
+痂>Ka;
+痃>Ken;
+病>Byou;
+症>Shou;
+痊>Sen;
+痍>I;
+痒>You;
+痔>Ji;
+痕>Kon;
+痘>Tou;
+痙>Kei;
+痛>Ts;
+痞>Hi;
+痢>Ri;
+痣>Shi;
+痩>Sou;
+痰>Tan;
+痲>Ma;
+痳>Rin;
+痴>Chi;
+痺>Hi;
+痼>Ko;
+痾>A;
+痿>I;
+瘁>Sui;
+瘉>Yu;
+瘋>Fuu;
+瘍>You;
+瘟>On;
+瘠>Seki;
+瘡>Sou;
+瘢>Han;
+瘤>Ryuu;
+瘧>Gyaku;
+瘰>Rui;
+瘴>Shou;
+瘻>Rou;
+療>Ryou;
+癆>Rou;
+癇>Kan;
+癈>Hai;
+癌>Gan;
+癒>Yu;
+癖>Heki;
+癘>Rei;
+癜>Den;
+癡>Chi;
+癢>You;
+癧>Reki;
+癨>Kaku;
+癩>Rai;
+癪>Shaku;
+癬>Sen;
+癰>You;
+癲>Ten;
+癶>Hatsu;
+癸>Ki;
+発>Hotsu;
+登>Tou;
+發>Hotsu;
+白>Haku;
+百>Hyaku;
+皀>Hyuu;
+皃>Bou;
+的>Teki;
+皆>Kai;
+皇>Kou;
+皈>Ki;
+皋>Kou;
+皎>Kou;
+皐>Kou;
+皓>Kou;
+皖>Kan;
+皙>Seki;
+皚>Gai;
+皮>Hi;
+皰>Hou;
+皴>Shun;
+皷>Ko;
+皸>Kun;
+皹>Kun;
+皺>Suu;
+皿>Bai;
+盂>U;
+盃>Hai;
+盆>Bon;
+盈>Ei;
+益>Eki;
+盍>Kou;
+盒>Kou;
+盖>Gai;
+盗>Tou;
+盛>Sei;
+盜>Tou;
+盞>San;
+盟>Mei;
+盡>Jin;
+監>Kan;
+盤>Ban;
+盥>Kan;
+盧>Ro;
+盪>Tou;
+目>Moku;
+盲>Mou;
+直>Choku;
+相>Shou;
+盻>Kei;
+盾>Jun;
+省>Sei;
+眄>Ben;
+眇>Byou;
+眈>Tan;
+眉>Bi;
+看>Kan;
+県>Ken;
+眛>Mai;
+眞>Shin;
+真>Shin;
+眠>Min;
+眤>Tei;
+眥>Sei;
+眦>Sei;
+眩>Gen;
+眷>Ken;
+眸>Bou;
+眺>Chou;
+眼>Gan;
+着>Chaku;
+睇>Tei;
+睚>Gai;
+睛>Sei;
+睡>Sui;
+督>Toku;
+睥>Hei;
+睦>Boku;
+睨>Gei;
+睫>Shou;
+睹>To;
+睾>Kou;
+睿>Ei;
+瞋>Shin;
+瞎>Katsu;
+瞑>Mei;
+瞞>Ban;
+瞠>Dou;
+瞥>Betsu;
+瞬>Shun;
+瞭>Ryou;
+瞰>Kan;
+瞳>Dou;
+瞶>Ki;
+瞹>Ai;
+瞻>Sen;
+瞼>Ken;
+瞽>Ko;
+瞿>Ku;
+矇>Mou;
+矍>Kaku;
+矗>Chiku;
+矚>Shoku;
+矛>Mu;
+矜>Kin;
+矢>Shi;
+矣>I;
+知>Chi;
+矧>Shin;
+矩>Ku;
+短>Tan;
+矮>Wai;
+矯>Kyou;
+石>Shaku;
+矼>Kou;
+砂>Sa;
+砌>Sei;
+砒>Hi;
+研>Ken;
+砕>Sai;
+砠>Sho;
+砥>Shi;
+砦>Sai;
+砧>Chin;
+砲>Hou;
+破>Ha;
+砺>Rei;
+砿>Kou;
+硅>Kei;
+硝>Shou;
+硫>Ryuu;
+硬>Kou;
+硯>Ken;
+硼>Hou;
+碁>Go;
+碆>Ha;
+碇>Tei;
+碌>Roku;
+碍>Gai;
+碎>Sai;
+碑>Hi;
+碓>Tai;
+碕>Ki;
+碗>Wan;
+碚>Hai;
+碣>Ketsu;
+碧>Heki;
+碩>Seki;
+碪>Chin;
+碯>Dou;
+碵>Seki;
+確>Kaku;
+碼>Ba;
+碾>Ten;
+磁>Ji;
+磅>Hou;
+磆>Katsu;
+磊>Rai;
+磋>Sa;
+磐>Han;
+磑>Gai;
+磔>Taku;
+磚>Sen;
+磧>Seki;
+磨>Ma;
+磬>Kei;
+磯>Ki;
+磴>Tou;
+磽>Kou;
+礁>Shou;
+礇>Iku;
+礎>So;
+礑>Tou;
+礒>Gi;
+礙>Gai;
+礦>Kou;
+礪>Rei;
+礫>Reki;
+礬>Ban;
+示>Shi;
+礼>Rei;
+社>Sha;
+祀>Shi;
+祁>Ki;
+祇>Ki;
+祈>Ki;
+祉>Shi;
+祐>Yuu;
+祓>Futsu;
+祕>Hi;
+祖>So;
+祗>Shi;
+祚>So;
+祝>Shuku;
+神>Shin;
+祟>Sui;
+祠>Shi;
+祢>Dei;
+祥>Shou;
+票>Hyou;
+祭>Sai;
+祷>Tou;
+祺>Ki;
+祿>Roku;
+禀>Rin;
+禁>Kin;
+禄>Roku;
+禅>Zen;
+禊>Kei;
+禍>Ka;
+禎>Tei;
+福>Fuku;
+禝>Shoku;
+禦>Gyo;
+禧>Ki;
+禪>Zen;
+禮>Rei;
+禰>Dei;
+禳>Jou;
+禹>U;
+禺>Guu;
+禽>Kin;
+禾>Ka;
+禿>Toku;
+秀>Shuu;
+私>Shi;
+秉>Hei;
+秋>Shuu;
+科>Ka;
+秒>Byou;
+秕>Hi;
+秘>Hi;
+租>So;
+秡>Hatsu;
+秣>Matsu;
+秤>Shou;
+秦>Shin;
+秧>Ou;
+秩>Chitsu;
+秬>Kyo;
+称>Shou;
+移>I;
+稀>Ki;
+稈>Kan;
+程>Tei;
+稍>Sou;
+税>Zei;
+稔>Jin;
+稗>Hai;
+稘>Ki;
+稙>Choku;
+稚>Chi;
+稜>Ryou;
+稟>Rin;
+稠>Chuu;
+種>Shu;
+稱>Shou;
+稲>Tou;
+稷>Shoku;
+稻>Tou;
+稼>Ka;
+稽>Kei;
+稾>Kou;
+稿>Kou;
+穀>Koku;
+穂>Sui;
+穃>You;
+穆>Boku;
+穉>Chi;
+積>Seki;
+穎>Ei;
+穏>On;
+穐>Shuu;
+穗>Sui;
+穡>Shoku;
+穢>Ai;
+穣>Jou;
+穩>On;
+穫>Kaku;
+穰>Jou;
+穴>Ketsu;
+究>Kyuu;
+穹>Kyuu;
+空>Kuu;
+穽>Sei;
+穿>Sen;
+突>Totsu;
+窃>Setsu;
+窄>Saku;
+窈>You;
+窒>Chitsu;
+窓>Sou;
+窕>Chou;
+窖>Kou;
+窗>Sou;
+窘>Kin;
+窟>Kutsu;
+窩>Ka;
+窪>Wa;
+窮>Kyuu;
+窯>You;
+窰>You;
+窶>Ku;
+窺>Ki;
+窿>Ryuu;
+竃>Sou;
+竄>Zan;
+竅>Kyou;
+竇>Tou;
+竈>Sou;
+竊>Setsu;
+立>Ritsu;
+竒>Ki;
+站>Tan;
+竚>Cho;
+竜>Ryuu;
+竝>Hei;
+竟>Kei;
+章>Shou;
+竢>Shi;
+竣>Shun;
+童>Dou;
+竦>Shou;
+竪>Ju;
+竭>Ketsu;
+端>Tan;
+競>Kyou;
+竸>Kei;
+竹>Chiku;
+竺>Toku;
+竿>Kan;
+笄>Kei;
+笆>Ha;
+笈>Kyuu;
+笊>Sou;
+笋>Jun;
+笏>Kotsu;
+笑>Shou;
+笘>Sen;
+笙>Sou;
+笛>Teki;
+笞>Chi;
+笠>Ryuu;
+笥>Shi;
+符>Fu;
+笨>Hon;
+第>Dai;
+笳>Ka;
+笵>Han;
+笶>Shi;
+筅>Sen;
+筆>Hitsu;
+筈>Katsu;
+等>Tou;
+筋>Kin;
+筌>Sen;
+筍>Jun;
+筏>Batsu;
+筐>Kyou;
+筑>Chiku;
+筒>Tou;
+答>Tou;
+策>Saku;
+筝>Sou;
+筥>Kyo;
+筧>Ken;
+筬>Sei;
+筮>Sei;
+筰>Saku;
+筱>Shou;
+筴>Kyou;
+筵>En;
+筺>Kyou;
+箆>Hei;
+箇>Ka;
+箋>Sen;
+箍>Ko;
+箏>Sou;
+箒>Sou;
+箔>Haku;
+箕>Ki;
+算>San;
+箘>Kin;
+箙>Fuku;
+箚>Satsu;
+箜>Kou;
+箝>Kan;
+箟>Kin;
+管>Kan;
+箪>Tan;
+箭>Sen;
+箱>Shou;
+箴>Shin;
+箸>Cho;
+節>Setsu;
+篁>Kou;
+範>Han;
+篆>Ten;
+篇>Hen;
+築>Chiku;
+篋>Kyou;
+篌>Kou;
+篏>Kan;
+篝>Kou;
+篠>Shou;
+篤>Toku;
+篥>Ritsu;
+篦>Hei;
+篩>Shi;
+篭>Rou;
+篳>Hitsu;
+篶>En;
+篷>Hou;
+簀>Saku;
+簇>Sou;
+簍>Rou;
+簑>Sa;
+簒>San;
+簓>Sen;
+簔>Sa;
+簟>Ten;
+簡>Kan;
+簣>Ki;
+簧>Kou;
+簪>Shin;
+簫>Shou;
+簷>En;
+簸>Ha;
+簽>Sen;
+簾>Ren;
+簿>Bo;
+籀>Chuu;
+籃>Ran;
+籌>Chuu;
+籍>Seki;
+籐>Tou;
+籔>Su;
+籖>Sen;
+籘>Tou;
+籟>Rai;
+籠>Rou;
+籤>Sen;
+籥>Yaku;
+籬>Ri;
+米>Bei;
+粃>Hi;
+粉>Fun;
+粋>Sui;
+粐>Ro;
+粒>Ryuu;
+粕>Haku;
+粗>So;
+粘>Nen;
+粛>Shuku;
+粟>Zoku;
+粡>Tou;
+粢>Shi;
+粤>Etsu;
+粥>Shuku;
+粧>Shou;
+粫>Ji;
+粮>Ryou;
+粱>Ryou;
+粲>San;
+粳>Kou;
+粹>Sui;
+粽>Sou;
+精>Sei;
+糂>San;
+糅>Juu;
+糊>Ko;
+糒>Hi;
+糖>Tou;
+糜>Bi;
+糞>Fun;
+糟>Sou;
+糠>Kou;
+糢>Bo;
+糧>Ryou;
+糯>Da;
+糲>Rei;
+糴>Teki;
+糶>Chou;
+糸>Shi;
+糺>Kyuu;
+系>Kei;
+糾>Kyuu;
+紀>Ki;
+紂>Chuu;
+約>Yaku;
+紅>Ku;
+紆>U;
+紊>Bin;
+紋>Mon;
+納>Tou;
+紐>Chuu;
+純>Shun;
+紕>Hi;
+紗>Sa;
+紘>Kou;
+紙>Shi;
+級>Kyuu;
+紛>Fun;
+紜>Un;
+素>So;
+紡>Bou;
+索>Saku;
+紫>Shi;
+紬>Chuu;
+紮>Satsu;
+累>Rui;
+細>Sei;
+紲>Setsu;
+紳>Shin;
+紵>Cho;
+紹>Shou;
+紺>Kon;
+紿>Tai;
+終>Shuu;
+絃>Gen;
+組>So;
+絅>Kei;
+絆>Ban;
+絋>Kou;
+経>Kei;
+絎>Kou;
+絏>Setsu;
+結>Ketsu;
+絖>Kou;
+絛>Jou;
+絞>Kou;
+絡>Raku;
+絢>Ken;
+絣>Hou;
+給>Kyuu;
+絨>Juu;
+絮>Jo;
+統>Tou;
+絲>Shi;
+絳>Kou;
+絵>Kai;
+絶>Zetsu;
+絹>Ken;
+絽>Ryo;
+綉>Tou;
+綏>Sui;
+經>Kei;
+継>Kei;
+続>Zoku;
+綜>Sou;
+綟>Rei;
+綢>Chuu;
+綣>Ken;
+綫>Sen;
+綬>Ju;
+維>I;
+綮>Kei;
+綯>Tou;
+綰>Wan;
+綱>Kou;
+網>Mou;
+綴>Tei;
+綵>Sai;
+綸>Rin;
+綺>Ki;
+綻>Tan;
+綽>Shaku;
+綾>Ryou;
+綿>Men;
+緇>Shi;
+緊>Kin;
+緋>Hi;
+総>Sou;
+緑>Ryoku;
+緒>Sho;
+緘>Kan;
+線>Sen;
+緜>Ben;
+緝>Shuu;
+緞>Tan;
+締>Tei;
+緡>Bin;
+緤>Setsu;
+編>Hen;
+緩>Kan;
+緬>Men;
+緯>I;
+緲>Byou;
+練>Ren;
+緻>Chi;
+縁>En;
+縄>Jou;
+縉>Shin;
+縊>Ei;
+縋>Tsui;
+縒>Shi;
+縛>Baku;
+縞>Kou;
+縟>Joku;
+縡>Sai;
+縢>Tou;
+縣>Ken;
+縦>Juu;
+縫>Hou;
+縮>Shuku;
+縱>Juu;
+縲>Rui;
+縵>Ban;
+縷>Ru;
+縹>Hyou;
+縺>Ren;
+縻>Bi;
+總>Sou;
+績>Seki;
+繁>Han;
+繃>Hou;
+繆>Kyuu;
+繊>Sen;
+繋>Kei;
+繍>Shuu;
+織>Shoku;
+繕>Zen;
+繖>San;
+繙>Han;
+繚>Ryou;
+繝>Kan;
+繞>Jou;
+繦>Kyou;
+繧>Un;
+繩>Jou;
+繪>Kai;
+繭>Ken;
+繰>Sou;
+繹>Eki;
+繻>Ju;
+繼>Kei;
+繽>Hin;
+繿>Ran;
+纂>San;
+纈>Ketsu;
+纉>San;
+續>Zoku;
+纎>Sen;
+纏>Ten;
+纒>Ten;
+纓>Ei;
+纔>San;
+纖>Sen;
+纛>Tou;
+纜>Ran;
+缶>Kan;
+缸>Kou;
+缺>Ketsu;
+罅>Ka;
+罌>Ou;
+罍>Rai;
+罎>Tan;
+罐>Kan;
+网>Bou;
+罔>Bou;
+罕>Kan;
+罘>Fu;
+罟>Ko;
+罠>Bin;
+罧>Shin;
+罨>An;
+罩>Tou;
+罪>Zai;
+罫>Kei;
+置>Chi;
+罰>Batsu;
+署>Sho;
+罵>Ba;
+罷>Hi;
+罸>Batsu;
+罹>Ri;
+羂>Ken;
+羃>Beki;
+羅>Ra;
+羆>Hi;
+羇>Ki;
+羈>Ki;
+羊>You;
+羌>Kyou;
+美>Bi;
+羔>Kou;
+羚>Rei;
+羝>Tei;
+羞>Shuu;
+羣>Gun;
+群>Gun;
+羨>Sen;
+義>Gi;
+羮>Kou;
+羯>Katsu;
+羲>Gi;
+羶>Sen;
+羸>Rui;
+羹>Kou;
+羽>U;
+翁>Ou;
+翅>Shi;
+翆>Sui;
+翊>Yoku;
+翌>Yoku;
+習>Shuu;
+翔>Shou;
+翕>Kyuu;
+翠>Sui;
+翡>Hi;
+翦>Sen;
+翩>Hen;
+翫>Gan;
+翰>Kan;
+翳>Ei;
+翹>Gyou;
+翻>Hon;
+翼>Yoku;
+耀>You;
+老>Rou;
+考>Kou;
+耄>Mou;
+者>Sha;
+耆>Ki;
+耋>Tetsu;
+而>Ji;
+耐>Tai;
+耒>Rai;
+耕>Kou;
+耗>Mou;
+耘>Un;
+耙>Ha;
+耜>Shi;
+耡>Jo;
+耨>Dou;
+耳>Ji;
+耶>Ya;
+耻>Chi;
+耽>Tan;
+耿>Kou;
+聆>Rei;
+聊>Ryou;
+聒>Katsu;
+聖>Sei;
+聘>Hei;
+聚>Shuu;
+聞>Bun;
+聟>Sei;
+聡>Sou;
+聨>Ren;
+聯>Ren;
+聰>Sou;
+聲>Sei;
+聳>Shou;
+聴>Chou;
+聶>Jou;
+職>Shoku;
+聹>Dei;
+聽>Chou;
+聾>Rou;
+聿>Itsu;
+肄>I;
+肅>Shuku;
+肆>Shi;
+肇>Chou;
+肉>Niku;
+肋>Roku;
+肌>Ki;
+肓>Kou;
+肖>Shou;
+肘>Chuu;
+肚>To;
+肛>Kou;
+肝>Kan;
+股>Ko;
+肢>Shi;
+肥>Hi;
+肩>Ken;
+肪>Bou;
+肬>Yuu;
+肭>Dotsu;
+肯>Kou;
+肱>Kou;
+育>Iku;
+肴>Kou;
+肺>Hai;
+胃>I;
+胄>Chuu;
+胆>Tan;
+背>Hai;
+胎>Tai;
+胖>Han;
+胙>So;
+胚>Hai;
+胛>Kou;
+胝>Chi;
+胞>Hou;
+胡>Ko;
+胤>In;
+胥>Sho;
+胯>Ko;
+胱>Kou;
+胴>Dou;
+胸>Kyou;
+胼>Hen;
+能>Nou;
+脂>Shi;
+脅>Kyou;
+脆>Zei;
+脇>Kyou;
+脈>Myaku;
+脉>Myaku;
+脊>Seki;
+脚>Kyaku;
+脛>Kei;
+脣>Shin;
+脩>Shuu;
+脯>Ho;
+脱>Datsu;
+脳>Nou;
+脹>Chou;
+脾>Hi;
+腆>Ten;
+腋>Eki;
+腎>Jin;
+腐>Fu;
+腑>Fu;
+腓>Hi;
+腔>Kou;
+腕>Wan;
+腟>Chitsu;
+腥>Sei;
+腦>Nou;
+腫>Shou;
+腮>Sai;
+腰>You;
+腱>Ken;
+腴>Yu;
+腸>Chou;
+腹>Fuku;
+腺>Sen;
+腿>Tai;
+膀>Hou;
+膂>Ryo;
+膃>Otsu;
+膈>Kaku;
+膊>Haku;
+膏>Kou;
+膓>Chou;
+膕>Kaku;
+膚>Fu;
+膜>Maku;
+膝>Shitsu;
+膠>Kou;
+膣>Chitsu;
+膨>Bou;
+膩>Ji;
+膰>Han;
+膳>Sen;
+膵>Sui;
+膸>Zui;
+膺>You;
+膽>Tan;
+膾>Kai;
+膿>Dou;
+臀>Den;
+臂>Hi;
+臆>Oku;
+臈>Rou;
+臉>Ren;
+臍>Sei;
+臑>Dau;
+臓>Zou;
+臘>Rou;
+臙>En;
+臚>Ryo;
+臟>Zou;
+臠>Ren;
+臣>Shin;
+臥>Ga;
+臧>Zou;
+臨>Rin;
+自>Shi;
+臭>Shuu;
+至>Shi;
+致>Chi;
+臺>Tai;
+臻>Shin;
+臼>Kyuu;
+臾>Yu;
+舁>Yo;
+舂>Shou;
+舅>Kyuu;
+與>Yo;
+興>Kyou;
+舉>Kyo;
+舊>Kyuu;
+舌>Zetsu;
+舍>Sha;
+舎>Sha;
+舐>Shi;
+舒>Jo;
+舖>Ho;
+舗>Ho;
+舘>Kan;
+舛>Sen;
+舜>Shun;
+舞>Bu;
+舟>Shuu;
+舩>Sen;
+航>Kou;
+舫>Hou;
+般>Han;
+舮>Ro;
+舳>Chiku;
+舵>Ta;
+舶>Haku;
+舷>Ken;
+舸>Ka;
+船>Sen;
+艀>Fu;
+艇>Tei;
+艘>Sou;
+艙>Sou;
+艚>Sou;
+艟>Dou;
+艢>Shou;
+艤>Gi;
+艦>Kan;
+艨>Mou;
+艪>Ro;
+艫>Ro;
+艮>Kon;
+良>Ryou;
+艱>Kan;
+色>Shoku;
+艶>En;
+艷>En;
+艸>Sou;
+艾>Gai;
+芋>U;
+芍>Shaku;
+芒>Bou;
+芙>Fu;
+芝>Shi;
+芟>San;
+芥>Kai;
+芦>Ro;
+芫>Gen;
+芬>Fun;
+芭>Ba;
+芯>Shin;
+花>Ka;
+芳>Hou;
+芸>Gei;
+芹>Kin;
+芻>Suu;
+芽>Ga;
+苅>Gai;
+苑>En;
+苒>Zen;
+苓>Rei;
+苔>Tai;
+苗>Byou;
+苙>Ryuu;
+苛>Ka;
+苜>Boku;
+苞>Hou;
+苟>Kou;
+苡>I;
+苣>Kyo;
+若>Jaku;
+苦>Ku;
+苧>Cho;
+苫>Sen;
+英>Ei;
+苳>Tou;
+苴>So;
+苹>Hei;
+苺>Mai;
+苻>Fu;
+茂>Mo;
+范>Han;
+茄>Ka;
+茅>Bou;
+茆>Bou;
+茉>Matsu;
+茎>Kei;
+茖>Kaku;
+茗>Mei;
+茘>Ri;
+茜>Sen;
+茣>Go;
+茨>Shi;
+茫>Bou;
+茯>Fuku;
+茱>Shu;
+茲>Ji;
+茴>Kai;
+茵>In;
+茶>Cha;
+茸>Jou;
+茹>Jo;
+荀>Jun;
+荅>Tou;
+草>Sou;
+荊>Kei;
+荏>Jin;
+荐>Sen;
+荒>Kou;
+荘>Sou;
+荳>Tou;
+荵>Jin;
+荷>Ka;
+荻>Teki;
+荼>To;
+莅>Ri;
+莇>Cho;
+莉>Chi;
+莊>Sou;
+莎>Sa;
+莓>Mai;
+莖>Kei;
+莚>En;
+莞>Kan;
+莟>Kan;
+莠>Yuu;
+莢>Kyou;
+莨>Rou;
+莪>Ga;
+莫>Bo;
+莱>Rai;
+莵>To;
+莽>Bou;
+菁>Sei;
+菅>Kan;
+菊>Kiku;
+菌>Kin;
+菎>Kon;
+菓>Ka;
+菖>Shou;
+菘>Suu;
+菜>Sai;
+菟>To;
+菠>Ha;
+菩>Hai;
+菫>Kin;
+華>Ka;
+菰>Ko;
+菱>Ryou;
+菲>Hi;
+菴>An;
+菷>Sou;
+菻>Rin;
+菽>Shuku;
+萃>Sui;
+萄>Tou;
+萇>Chou;
+萋>Sei;
+萌>Hou;
+萍>Hei;
+萎>I;
+萓>Gi;
+萠>Hou;
+萩>Shuu;
+萪>Kuwa;
+萬>Man;
+萱>Ken;
+萵>Wa;
+萸>Yu;
+萼>Gaku;
+落>Raku;
+葆>Ho;
+葉>You;
+葎>Ritsu;
+著>Cho;
+葛>Katsu;
+葡>Ho;
+葢>Gai;
+董>Tou;
+葦>I;
+葩>Ha;
+葫>Ko;
+葬>Sou;
+葭>Ka;
+葮>Tan;
+葯>Yaku;
+葱>Sou;
+葵>Ki;
+葷>Gun;
+葹>Shi;
+葺>Shuu;
+蒂>Tei;
+蒄>Kan;
+蒋>Shou;
+蒐>Shuu;
+蒔>Shi;
+蒙>Bou;
+蒜>San;
+蒟>Kon;
+蒡>Hou;
+蒭>Suu;
+蒲>Ho;
+蒸>Jou;
+蒹>Ken;
+蒻>Jaku;
+蒼>Sou;
+蒿>Kou;
+蓁>Shin;
+蓄>Chiku;
+蓆>Seki;
+蓉>You;
+蓊>Ou;
+蓋>Gai;
+蓍>Shi;
+蓐>Joku;
+蓑>Sa;
+蓖>Hi;
+蓚>Chou;
+蓬>Hou;
+蓮>Ren;
+蓴>Shun;
+蓼>Ryou;
+蓿>Shuku;
+蔀>Hou;
+蔆>Ryou;
+蔑>Betsu;
+蔓>Ban;
+蔔>Fuku;
+蔕>Tei;
+蔗>Sho;
+蔘>Shin;
+蔚>Utsu;
+蔟>Zoku;
+蔡>Sai;
+蔦>Chou;
+蔬>So;
+蔭>In;
+蔵>Zou;
+蔽>Hei;
+蕀>Kyoku;
+蕁>Jin;
+蕃>Ban;
+蕈>Shin;
+蕉>Shou;
+蕊>Zui;
+蕋>Zui;
+蕎>Kyou;
+蕕>Yuu;
+蕗>Ro;
+蕘>Jou;
+蕚>Gaku;
+蕣>Shun;
+蕨>Ketsu;
+蕩>Tou;
+蕪>Bu;
+蕭>Shou;
+蕷>Yo;
+蕾>Rai;
+薀>Un;
+薄>Haku;
+薇>Bi;
+薈>Kai;
+薊>Kei;
+薐>Rou;
+薑>Kyou;
+薔>Shoku;
+薗>En;
+薙>Tei;
+薛>Setsu;
+薜>Heki;
+薤>Kai;
+薦>Sen;
+薨>Kou;
+薩>Satsu;
+薪>Shin;
+薫>Kun;
+薬>Yaku;
+薮>Sou;
+薯>Sho;
+薹>Tai;
+薺>Sei;
+藁>Kou;
+藉>Sha;
+藍>Ran;
+藏>Zou;
+藐>Baku;
+藕>Guu;
+藜>Rei;
+藝>Gei;
+藤>Tou;
+藥>Yaku;
+藩>Han;
+藪>Sou;
+藷>Sho;
+藹>Ai;
+藺>Rin;
+藻>Sou;
+藾>Rai;
+蘂>Zui;
+蘆>Ro;
+蘇>So;
+蘊>Un;
+蘋>Hin;
+蘓>So;
+蘖>Getsu;
+蘗>Haku;
+蘚>Sen;
+蘢>Rou;
+蘭>Ran;
+蘯>Tou;
+蘿>Ra;
+虍>Ko;
+虎>Ko;
+虐>Gyaku;
+虔>Ken;
+處>Sho;
+虚>Kyo;
+虜>Ryo;
+虞>Gu;
+號>Gou;
+虧>Ki;
+虫>Chuu;
+虱>Shitsu;
+虹>Kou;
+虻>Bou;
+蚊>Bun;
+蚋>Zei;
+蚌>Hou;
+蚓>In;
+蚕>San;
+蚣>Kou;
+蚤>Sou;
+蚩>Shi;
+蚪>Tou;
+蚫>Hou;
+蚯>Kyuu;
+蚰>Yuu;
+蚶>Kan;
+蛄>Ko;
+蛆>Sho;
+蛇>Ja;
+蛉>Rei;
+蛋>Tan;
+蛍>Kei;
+蛎>Rei;
+蛔>Kai;
+蛙>A;
+蛛>Shu;
+蛞>Katsu;
+蛟>Kou;
+蛤>Kou;
+蛩>Kyou;
+蛬>Kyou;
+蛭>Shitsu;
+蛮>Ban;
+蛸>Sou;
+蛹>You;
+蛻>Zei;
+蛾>Ga;
+蜀>Shoku;
+蜂>Hou;
+蜃>Shin;
+蜆>Ken;
+蜈>Go;
+蜉>Fu;
+蜊>Ri;
+蜍>Sho;
+蜑>Tan;
+蜒>En;
+蜘>Chi;
+蜚>Hi;
+蜜>Mitsu;
+蜥>Seki;
+蜩>Chou;
+蜴>Eki;
+蜷>Ken;
+蜻>Sei;
+蜿>En;
+蝉>Sen;
+蝋>Rou;
+蝌>Ka;
+蝎>Katsu;
+蝓>Yu;
+蝕>Shoku;
+蝗>Kou;
+蝙>Hen;
+蝟>I;
+蝠>Fuku;
+蝣>Yuu;
+蝦>Ka;
+蝨>Shitsu;
+蝪>Tou;
+蝮>Fuku;
+蝴>Ko;
+蝶>Chou;
+蝸>Ka;
+蝿>You;
+螂>Rou;
+融>Yuu;
+螟>Mei;
+螢>Kei;
+螫>Seki;
+螯>Gou;
+螳>Tou;
+螺>Ra;
+螻>Rou;
+螽>Shuu;
+蟀>Shutsu;
+蟄>Chitsu;
+蟆>Ba;
+蟇>Ba;
+蟋>Shitsu;
+蟐>Tou;
+蟒>Bou;
+蟠>Han;
+蟯>Gyou;
+蟲>Ki;
+蟶>Tei;
+蟷>Tou;
+蟹>Kai;
+蟻>Gi;
+蟾>Sen;
+蠅>You;
+蠍>Katsu;
+蠎>Bou;
+蠏>Kai;
+蠑>Ei;
+蠕>Da;
+蠖>Kaku;
+蠡>Rei;
+蠢>Shun;
+蠣>Rei;
+蠧>To;
+蠱>Ko;
+蠶>San;
+蠹>To;
+蠻>Ban;
+血>Ketsu;
+衂>Jiku;
+衄>Jiku;
+衆>Shuu;
+行>Kou;
+衍>En;
+衒>Ken;
+術>Jutsu;
+街>Gai;
+衙>Gyo;
+衛>Ei;
+衝>Shou;
+衞>Ei;
+衡>Kou;
+衢>Ku;
+衣>I;
+表>Hyou;
+衫>San;
+衰>Sa;
+衲>Dou;
+衵>Jitsu;
+衷>Chuu;
+衽>Jin;
+衾>Kin;
+衿>Kin;
+袁>En;
+袂>Bei;
+袈>Ka;
+袋>Tai;
+袍>Hou;
+袒>Tan;
+袖>Shuu;
+袗>Shin;
+袙>Ha;
+袞>Kon;
+袢>Han;
+袤>Bou;
+被>Hi;
+袮>Ne;
+袱>Fuku;
+袴>Ko;
+袵>Jin;
+袷>Kou;
+袿>Kei;
+裁>Sai;
+裂>Retsu;
+装>Sou;
+裏>Ri;
+裔>Ei;
+裕>Yuu;
+裘>Kyuu;
+裙>Kun;
+補>Ho;
+裝>Sou;
+裟>Sa;
+裡>Ri;
+裨>Hi;
+裲>Ryou;
+裳>Shou;
+裴>Hai;
+裸>Ra;
+裹>Ka;
+裼>Seki;
+製>Sei;
+裾>Kyo;
+褂>Kai;
+複>Fuku;
+褊>Hen;
+褌>Kon;
+褐>Katsu;
+褒>Hou;
+褓>Ho;
+褝>Tan;
+褞>On;
+褥>Joku;
+褪>Tai;
+褫>Chi;
+褶>Chou;
+褸>Rou;
+褻>Setsu;
+襁>Kyou;
+襃>Hou;
+襄>Jou;
+襌>Tan;
+襍>Zatsu;
+襖>Ou;
+襞>Heki;
+襟>Kin;
+襠>Tou;
+襤>Ran;
+襦>Ju;
+襪>Betsu;
+襭>Ketsu;
+襯>Shin;
+襲>Shuu;
+襴>Ran;
+襾>Aka;
+西>Sei;
+要>You;
+覃>Tan;
+覆>Fuku;
+覇>Ha;
+覈>Kaku;
+覊>Ki;
+見>Ken;
+規>Ki;
+覓>Beki;
+視>Shi;
+覗>Shi;
+覘>Ten;
+覚>Kaku;
+覡>Geki;
+覦>Yu;
+覧>Ran;
+覩>To;
+親>Shin;
+覬>Ki;
+覯>Kou;
+覲>Kin;
+観>Kan;
+覺>Kaku;
+覽>Ran;
+覿>Teki;
+觀>Kan;
+角>Kaku;
+觚>Ko;
+觜>Shi;
+觝>Tei;
+解>Kai;
+触>Shoku;
+觧>Kai;
+觴>Shou;
+觸>Shoku;
+言>Gen;
+訂>Tei;
+訃>Fu;
+計>Kei;
+訊>Jin;
+訌>Kou;
+討>Tou;
+訐>Ketsu;
+訓>Kun;
+訖>Kitsu;
+託>Taku;
+記>Ki;
+訛>Ka;
+訝>Ga;
+訟>Shou;
+訣>Ketsu;
+訥>Totsu;
+訪>Hou;
+設>Setsu;
+許>Kyo;
+訳>Yaku;
+訴>So;
+訶>Ka;
+診>Shin;
+註>Chuu;
+証>Shou;
+詁>Ko;
+詆>Tei;
+詈>Ri;
+詐>Sa;
+詑>Ta;
+詒>Tai;
+詔>Shou;
+評>Hyou;
+詛>So;
+詞>Shi;
+詠>Ei;
+詢>Jun;
+詣>Kei;
+試>Shi;
+詩>Shi;
+詫>Ta;
+詬>Kou;
+詭>Ki;
+詮>Sen;
+詰>Kitsu;
+話>Wa;
+該>Gai;
+詳>Shou;
+詼>Kai;
+誂>Chou;
+誄>Rui;
+誅>Chuu;
+誇>Ko;
+誉>Yo;
+誌>Shi;
+認>Nin;
+誑>Kyou;
+誓>Sei;
+誕>Tan;
+誘>Yuu;
+誚>Shou;
+語>Go;
+誠>Sei;
+誡>Kai;
+誣>Fu;
+誤>Go;
+誥>Kou;
+誦>Shou;
+誨>Kai;
+説>Setsu;
+読>Toku;
+誰>Sui;
+課>Ka;
+誹>Hi;
+誼>Gi;
+調>Chou;
+諂>Ten;
+諄>Jun;
+談>Dan;
+請>Sei;
+諌>Kan;
+諍>Sou;
+諏>Shu;
+諒>Ryou;
+論>Ron;
+諚>Jou;
+諛>Yu;
+諜>Chou;
+諞>Hen;
+諠>Ken;
+諡>Shi;
+諢>Kon;
+諤>Gaku;
+諦>Tei;
+諧>Kai;
+諫>Kan;
+諭>Yu;
+諮>Shi;
+諱>Ki;
+諳>An;
+諷>Fuu;
+諸>Sho;
+諺>Gen;
+諾>Daku;
+謀>Bou;
+謁>Etsu;
+謂>I;
+謄>Tou;
+謇>Ken;
+謌>Ka;
+謎>Mei;
+謐>Hitsu;
+謔>Gyaku;
+謖>Shoku;
+謗>Bou;
+謙>Ken;
+謚>Shi;
+講>Kou;
+謝>Sha;
+謠>You;
+謡>You;
+謦>Kei;
+謨>Bo;
+謫>Taku;
+謬>Byou;
+謳>Ou;
+謹>Kin;
+謾>Ban;
+譁>Ka;
+證>Shou;
+譌>Ka;
+譎>Kitsu;
+譏>Ki;
+譖>Shin;
+識>Shiki;
+譚>Tan;
+譛>Shin;
+譜>Fu;
+譟>Sou;
+警>Kei;
+譫>Sen;
+譬>Hi;
+譯>Yaku;
+議>Gi;
+譱>Zen;
+譲>Jou;
+譴>Ken;
+護>Go;
+譽>Yo;
+讀>Toku;
+讃>San;
+變>Hen;
+讌>En;
+讎>Shuu;
+讐>Shuu;
+讒>San;
+讓>Jou;
+讖>Shin;
+讙>Kan;
+讚>San;
+谷>Koku;
+谺>Ka;
+谿>Kei;
+豁>Katsu;
+豆>Tou;
+豈>Ki;
+豊>Hou;
+豌>En;
+豎>Ju;
+豐>Hou;
+豕>Shi;
+豚>Ton;
+象>Shou;
+豢>Ken;
+豪>Gou;
+豫>Yo;
+豬>Cho;
+豸>Chi;
+豹>Hou;
+豺>Sai;
+豼>Hi;
+貂>Chou;
+貅>Kyuu;
+貉>Kaku;
+貊>Haku;
+貌>Bou;
+貍>Ri;
+貎>Gei;
+貔>Hi;
+貘>Baku;
+貝>Bai;
+貞>Tei;
+負>Fu;
+財>Zai;
+貢>Kou;
+貧>Hin;
+貨>Ka;
+販>Han;
+貪>Don;
+貫>Kan;
+責>Seki;
+貭>Shitsu;
+貮>Ni;
+貯>Cho;
+貰>Sei;
+貲>Shi;
+貳>Ni;
+貴>Ki;
+貶>Hen;
+買>Bai;
+貸>Tai;
+費>Hi;
+貼>Ten;
+貽>I;
+貿>Bou;
+賀>Ga;
+賁>Hi;
+賂>Ro;
+賃>Chin;
+賄>Wai;
+資>Shi;
+賈>Ko;
+賊>Zoku;
+賍>Sou;
+賎>Sen;
+賑>Shin;
+賓>Hin;
+賚>Rai;
+賛>San;
+賜>Shi;
+賞>Shou;
+賠>Bai;
+賢>Ken;
+賣>Bai;
+賤>Sen;
+賦>Fu;
+質>Shitsu;
+賭>To;
+賺>Tan;
+賻>Fu;
+購>Kou;
+賽>Sai;
+贄>Shi;
+贅>Zei;
+贇>In;
+贈>Zou;
+贊>San;
+贋>Gan;
+贍>Sen;
+贏>Ei;
+贐>Shin;
+贓>Zou;
+贔>Hi;
+贖>Shoku;
+赤>Seki;
+赦>Sha;
+赧>Tan;
+赫>Kaku;
+赭>Sha;
+走>Sou;
+赱>Sou;
+赳>Kyuu;
+赴>Fu;
+起>Ki;
+趁>Chin;
+超>Chou;
+越>Etsu;
+趙>Chou;
+趣>Shu;
+趨>Suu;
+足>Soku;
+趺>Fu;
+趾>Shi;
+跂>Ki;
+跋>Batsu;
+跌>Tetsu;
+跏>Ka;
+跖>Seki;
+跚>San;
+跛>Ha;
+距>Kyo;
+跟>Kon;
+跡>Seki;
+跣>Sen;
+跨>Ko;
+跪>Ki;
+跫>Kyou;
+路>Ro;
+跳>Chou;
+践>Sen;
+跼>Kyoku;
+跿>To;
+踈>Sho;
+踉>Ryou;
+踊>You;
+踏>Tou;
+踐>Sen;
+踝>Ka;
+踞>Kyo;
+踟>Chi;
+踪>Shou;
+踰>Yu;
+踴>You;
+踵>Shou;
+蹂>Juu;
+蹄>Tei;
+蹇>Ken;
+蹈>Tou;
+蹉>Sa;
+蹊>Kei;
+蹌>Shou;
+蹐>Seki;
+蹕>Hitsu;
+蹙>Shuku;
+蹟>Seki;
+蹠>Seki;
+蹣>Man;
+蹤>Shou;
+蹲>Son;
+蹴>Shuu;
+蹶>Ketsu;
+蹼>Boku;
+躁>Sou;
+躄>Heki;
+躅>Choku;
+躇>Cho;
+躊>Chuu;
+躋>Sei;
+躍>Yaku;
+躑>Teki;
+躓>Chi;
+躔>Ten;
+躙>Rin;
+躡>Jou;
+躪>Rin;
+身>Shin;
+躬>Kyuu;
+躯>Ku;
+躰>Tei;
+躱>Ta;
+軆>Tei;
+車>Sha;
+軋>Atsu;
+軌>Ki;
+軍>Gun;
+軒>Ken;
+軛>Aku;
+軟>Nan;
+転>Ten;
+軣>Gou;
+軫>Shin;
+軸>Jiku;
+軻>Ka;
+軼>Itsu;
+軽>Kei;
+軾>Shoku;
+較>Kaku;
+輅>Ro;
+載>Sai;
+輊>Chi;
+輌>Ryou;
+輒>Chou;
+輓>Ban;
+輔>Fu;
+輕>Kei;
+輙>Chou;
+輛>Ryou;
+輜>Shi;
+輝>Ki;
+輟>Tetsu;
+輦>Ren;
+輩>Hai;
+輪>Rin;
+輯>Shuu;
+輳>Sou;
+輸>Yu;
+輹>Fuku;
+輻>Fuku;
+輾>Ten;
+輿>Yo;
+轂>Koku;
+轄>Katsu;
+轅>En;
+轆>Roku;
+轉>Ten;
+轍>Tetsu;
+轎>Kyou;
+轗>Kan;
+轜>Ji;
+轟>Gou;
+轡>Hi;
+轢>Reki;
+轣>Reki;
+轤>Ro;
+辛>Shin;
+辜>Ko;
+辞>Ji;
+辟>Heki;
+辣>Ratsu;
+辧>Ben;
+辨>Ben;
+辭>Ji;
+辮>Hen;
+辯>Ben;
+辰>Shin;
+辱>Joku;
+農>Nou;
+辺>Hen;
+辿>Ten;
+迂>U;
+迄>Kitsu;
+迅>Jin;
+迎>Gei;
+近>Kin;
+返>Hen;
+迢>Chou;
+迥>Kei;
+迦>Ka;
+迩>Ji;
+迪>Teki;
+迫>Haku;
+迭>Tetsu;
+迯>Tou;
+述>Jutsu;
+迴>Kai;
+迷>Mei;
+迸>Hou;
+迹>Seki;
+迺>Dai;
+追>Tsui;
+退>Tai;
+送>Sou;
+逃>Tou;
+逅>Kou;
+逆>Gyaku;
+逋>Ho;
+逍>Shou;
+逎>Shuu;
+透>Tou;
+逐>Chiku;
+逑>Kyuu;
+逓>Tei;
+途>To;
+逕>Kei;
+逖>Teki;
+逗>Tou;
+這>Gen;
+通>Ts;
+逝>Sei;
+逞>Tei;
+速>Soku;
+造>Zou;
+逡>Shun;
+逢>Hou;
+連>Ren;
+逮>Tai;
+週>Shuu;
+進>Shin;
+逵>Ki;
+逶>I;
+逸>Itsu;
+逹>Tatsu;
+逼>Hitsu;
+逾>Yu;
+遁>Ton;
+遂>Sui;
+遅>Chi;
+遇>Guu;
+遉>Tei;
+遊>Yuu;
+運>Un;
+遍>Hen;
+過>Ka;
+遏>Atsu;
+遐>Ka;
+遑>Kou;
+遒>Shuu;
+道>Dou;
+達>Tatsu;
+違>I;
+遘>Kou;
+遙>You;
+遜>Son;
+遞>Tei;
+遠>En;
+遡>So;
+遣>Ken;
+遥>You;
+遨>Gou;
+適>Teki;
+遭>Sou;
+遮>Sha;
+遯>Ton;
+遲>Chi;
+遵>Jun;
+遶>Jou;
+遷>Sen;
+選>Sen;
+遺>I;
+遼>Ryou;
+遽>Kyo;
+避>Hi;
+邀>You;
+邁>Bai;
+邂>Kai;
+邃>Sui;
+還>Kan;
+邇>Ji;
+邉>Hen;
+邊>Hen;
+邏>Ra;
+邑>Yuu;
+那>Da;
+邦>Hou;
+邨>Son;
+邪>Ya;
+邯>Kan;
+邱>Kyuu;
+邵>Shou;
+邸>Tei;
+郁>Iku;
+郊>Kou;
+郎>Rou;
+郛>Fu;
+郡>Gun;
+郢>Ei;
+郤>Geki;
+部>Bu;
+郭>Kaku;
+郵>Yuu;
+郷>Kyou;
+都>To;
+鄂>Gaku;
+鄒>Suu;
+鄙>Hi;
+鄭>Tei;
+鄰>Rin;
+鄲>Tan;
+酉>Yuu;
+酊>Tei;
+酋>Shuu;
+酌>Shaku;
+配>Hai;
+酎>Chuu;
+酒>Shu;
+酔>Sui;
+酖>Tan;
+酘>Tou;
+酢>Saku;
+酣>Kan;
+酥>So;
+酩>Mei;
+酪>Raku;
+酬>Shuu;
+酲>Tei;
+酳>In;
+酵>Kou;
+酷>Koku;
+酸>San;
+醂>Rin;
+醇>Shun;
+醉>Sui;
+醋>Saku;
+醍>Tei;
+醐>Ko;
+醒>Sei;
+醗>Hatsu;
+醜>Shuu;
+醢>Kai;
+醤>Shou;
+醪>Rou;
+醫>I;
+醯>Kei;
+醴>Rei;
+醵>Kyo;
+醸>Jou;
+醺>Kun;
+釀>Jou;
+釁>Kin;
+釆>Han;
+采>Sai;
+釈>Shaku;
+釉>Yuu;
+釋>Shaku;
+里>Ri;
+重>Chou;
+野>Ya;
+量>Ryou;
+釐>Ri;
+金>Kin;
+釖>Tou;
+釘>Tei;
+釛>Koku;
+釜>Fu;
+針>Shin;
+釟>Hatsu;
+釡>Fu;
+釣>Chou;
+釦>Kou;
+釧>Sen;
+釵>Sa;
+釶>Shi;
+釼>Ken;
+釿>Kin;
+鈍>Don;
+鈎>Kou;
+鈑>Han;
+鈔>Shou;
+鈕>Chuu;
+鈞>Kin;
+鈩>Ro;
+鈬>Taku;
+鈴>Rei;
+鈷>Ko;
+鈿>Ten;
+鉄>Tetsu;
+鉅>Kyo;
+鉈>Sha;
+鉉>Ken;
+鉋>Hou;
+鉐>Seki;
+鉗>Kan;
+鉚>Ryuu;
+鉛>En;
+鉞>Etsu;
+鉢>Hachi;
+鉤>Kou;
+鉦>Sei;
+鉱>Kou;
+鉾>Bou;
+銀>Gin;
+銃>Juu;
+銅>Dou;
+銑>Sen;
+銓>Sen;
+銕>Tetsu;
+銖>Shu;
+銘>Mei;
+銚>You;
+銛>Sen;
+銜>Kan;
+銭>Sen;
+銷>Shou;
+銹>Shuu;
+鋏>Kyou;
+鋒>Hou;
+鋤>Jo;
+鋩>Bou;
+鋪>Ho;
+鋭>Ei;
+鋳>Chuu;
+鋸>Kyo;
+鋺>En;
+鋼>Kou;
+錆>Sei;
+錏>A;
+錐>Sui;
+錘>Tsui;
+錙>Shi;
+錚>Sou;
+錠>Jou;
+錢>Sen;
+錣>Tei;
+錦>Kin;
+錨>Byou;
+錫>Seki;
+錬>Ren;
+錮>Ko;
+錯>Saku;
+録>Roku;
+錻>Bu;
+鍄>Kei;
+鍋>Ka;
+鍍>To;
+鍔>Gaku;
+鍖>Chin;
+鍛>Tan;
+鍜>Ka;
+鍠>Kou;
+鍬>Shuu;
+鍮>Chuu;
+鍵>Ken;
+鍼>Shin;
+鍾>Shou;
+鎌>Ren;
+鎔>You;
+鎖>Sa;
+鎗>Sou;
+鎚>Tsui;
+鎧>Gai;
+鎬>Kou;
+鎭>Chin;
+鎮>Chin;
+鎰>Itsu;
+鏃>Zoku;
+鏈>Ren;
+鏐>Ryuu;
+鏑>Teki;
+鏖>Ou;
+鏗>Kou;
+鏘>Shou;
+鏝>Man;
+鏡>Kyou;
+鏤>Rou;
+鏥>Shuu;
+鏨>San;
+鐃>Dou;
+鐇>Han;
+鐐>Ryou;
+鐓>Tai;
+鐔>Shin;
+鐘>Shou;
+鐙>Tou;
+鐚>A;
+鐡>Tetsu;
+鐫>Sen;
+鐵>Tetsu;
+鐶>Kan;
+鐸>Taku;
+鐺>Tou;
+鑁>Ban;
+鑄>Chuu;
+鑑>Kan;
+鑒>Kan;
+鑚>San;
+鑛>Kou;
+鑞>Rou;
+鑠>Shaku;
+鑢>Ryo;
+鑪>Ro;
+鑰>Yaku;
+鑵>Kan;
+鑷>Jou;
+鑼>Ra;
+鑽>San;
+鑾>Ran;
+鑿>Saku;
+钁>Kaku;
+長>Chou;
+門>Mon;
+閂>San;
+閃>Sen;
+閇>Hei;
+閉>Hei;
+開>Kai;
+閏>Jun;
+閑>Kan;
+間>Kan;
+閔>Bin;
+閘>Kou;
+閙>Tou;
+関>Kan;
+閣>Kaku;
+閤>Kou;
+閥>Batsu;
+閧>Kou;
+閨>Kei;
+閭>Ro;
+閲>Etsu;
+閹>En;
+閻>En;
+閼>A;
+閾>Yoku;
+闃>Geki;
+闇>An;
+闊>Katsu;
+闌>Ran;
+闍>To;
+闔>Kou;
+闕>Ketsu;
+闖>Chin;
+闘>Tou;
+關>Kan;
+闡>Sen;
+闢>Heki;
+闥>Tatsu;
+阜>Fu;
+阡>Sen;
+阨>Aku;
+阪>Han;
+阮>Gen;
+阯>Shi;
+防>Bou;
+阻>So;
+阿>A;
+陀>Da;
+陂>Ha;
+附>Fu;
+陋>Rou;
+陌>Haku;
+降>Kou;
+陏>Ta;
+限>Gen;
+陛>Hei;
+陜>Kou;
+陝>Sen;
+陞>Shou;
+陟>Choku;
+院>In;
+陣>Jin;
+除>Jo;
+陥>Kan;
+陦>Tou;
+陪>Bai;
+陬>Suu;
+陰>In;
+陲>Sui;
+陳>Chin;
+陵>Ryou;
+陶>Tou;
+陷>Kan;
+陸>Riku;
+険>Ken;
+陽>You;
+隅>Guu;
+隆>Ryuu;
+隈>Wai;
+隊>Tai;
+隋>Ta;
+隍>Kou;
+階>Kai;
+随>Zui;
+隔>Kaku;
+隕>In;
+隗>Kai;
+隘>Ai;
+隙>Geki;
+際>Sai;
+障>Shou;
+隠>In;
+隣>Rin;
+隧>Sui;
+隨>Zui;
+險>Ken;
+隰>Shitsu;
+隱>In;
+隲>Shitsu;
+隴>Rou;
+隶>Tai;
+隷>Rei;
+隸>Rei;
+隹>Sui;
+隻>Seki;
+隼>Jun;
+雀>Jaku;
+雁>Gan;
+雄>Yuu;
+雅>Ga;
+集>Shuu;
+雇>Ko;
+雉>Chi;
+雋>Sen;
+雌>Shi;
+雍>You;
+雎>Sho;
+雑>Zatsu;
+雕>Chou;
+雖>Sui;
+雙>Sou;
+雛>Suu;
+雜>Zatsu;
+離>Ri;
+難>Nan;
+雨>U;
+雪>Setsu;
+雫>Da;
+雰>Fun;
+雲>Un;
+零>Rei;
+雷>Rai;
+雹>Haku;
+電>Den;
+需>Ju;
+霄>Shou;
+霆>Tei;
+震>Shin;
+霈>Hai;
+霊>Rei;
+霍>Kaku;
+霎>Sou;
+霏>Hi;
+霑>Ten;
+霓>Gei;
+霖>Rin;
+霙>Ei;
+霜>Sou;
+霞>Ka;
+霤>Ryuu;
+霧>Mu;
+霪>In;
+霰>San;
+露>Ro;
+霸>Haku;
+霹>Heki;
+霽>Sei;
+霾>Bai;
+靂>Reki;
+靄>Ai;
+靆>Tai;
+靈>Rei;
+靉>Ai;
+青>Sei;
+靖>Sei;
+静>Sei;
+靜>Sei;
+非>Hi;
+靠>Kou;
+靡>Hi;
+面>Men;
+靤>Hou;
+靦>Ten;
+靨>You;
+革>Kaku;
+靫>Sai;
+靭>Jin;
+靱>Jin;
+靴>Ka;
+靹>Ketsu;
+靺>Matsu;
+靼>Tan;
+鞁>Hi;
+鞄>Hou;
+鞅>Ou;
+鞋>Ai;
+鞍>An;
+鞏>Kyou;
+鞘>Sou;
+鞜>Tou;
+鞠>Kiku;
+鞣>Juu;
+鞦>Shuu;
+鞨>Katsu;
+鞫>Kiku;
+鞭>Hen;
+鞳>Tou;
+鞴>Fuku;
+韃>Datsu;
+韆>Sen;
+韈>Betsu;
+韋>I;
+韓>Kan;
+韜>Tou;
+韭>Kyuu;
+韮>Kyou;
+韲>Sei;
+音>On;
+韵>In;
+韶>Shou;
+韻>In;
+響>Kyou;
+頁>Ketsu;
+頂>Chou;
+頃>Kei;
+項>Kou;
+順>Jun;
+須>Shu;
+頌>Shou;
+頏>Kou;
+預>Yo;
+頑>Gan;
+頒>Han;
+頓>Ton;
+頗>Ha;
+領>Ryou;
+頚>Kei;
+頡>Kitsu;
+頤>I;
+頬>Kyou;
+頭>Tou;
+頴>Ei;
+頷>Kan;
+頸>Kei;
+頻>Hin;
+頼>Rai;
+頽>Tai;
+顆>Ka;
+顋>Sai;
+題>Dai;
+額>Gaku;
+顎>Gaku;
+顏>Gan;
+顔>Gan;
+顕>Ken;
+願>Gan;
+顛>Ten;
+類>Rui;
+顧>Ko;
+顫>Sen;
+顯>Ken;
+顰>Hin;
+顱>Ro;
+顳>Shou;
+顴>Kan;
+風>Fuu;
+颯>Satsu;
+颱>Tai;
+颶>Ku;
+飃>Hyou;
+飄>Hyou;
+飆>Hyou;
+飛>Hi;
+飜>Hon;
+食>Shoku;
+飢>Ki;
+飩>Ton;
+飫>Yo;
+飭>Choku;
+飮>In;
+飯>Han;
+飲>In;
+飴>I;
+飼>Shi;
+飽>Hou;
+飾>Shoku;
+餃>Kou;
+餅>Hei;
+餉>Shou;
+養>You;
+餌>Ji;
+餐>San;
+餒>Dai;
+餓>Ga;
+餔>Ho;
+餘>Yo;
+餝>Shoku;
+餞>Sen;
+餠>Hei;
+餡>Kan;
+餤>Tan;
+館>Kan;
+餬>Ko;
+餮>Tetsu;
+餽>Ki;
+餾>Ryuu;
+饂>Un;
+饅>Man;
+饉>Kin;
+饋>Ki;
+饌>Sen;
+饐>I;
+饑>Ki;
+饒>Jou;
+饕>Tou;
+饗>Kyou;
+首>Shu;
+馗>Ki;
+馘>Kaku;
+香>Kou;
+馥>Fuku;
+馨>Kei;
+馬>Ba;
+馭>Gyo;
+馮>Hyou;
+馳>Chi;
+馴>Shun;
+馼>Bun;
+駁>Baku;
+駄>Ta;
+駅>Eki;
+駆>Ku;
+駈>Ku;
+駐>Chuu;
+駑>Do;
+駒>Ku;
+駕>Ga;
+駘>Tai;
+駛>Shi;
+駝>Ta;
+駟>Shi;
+駢>Hen;
+駭>Kai;
+駮>Haku;
+駱>Raku;
+駸>Shin;
+駻>Kan;
+駿>Shun;
+騁>Tei;
+騅>Sui;
+騎>Ki;
+騏>Ki;
+騒>Sou;
+験>Ken;
+騙>Hen;
+騨>Tan;
+騫>Ken;
+騰>Tou;
+騷>Sou;
+騾>Ra;
+驀>Baku;
+驂>San;
+驃>Hyou;
+驅>Ku;
+驍>Gyou;
+驕>Kyou;
+驗>Ken;
+驚>Kyou;
+驛>Eki;
+驟>Shuu;
+驢>Ryo;
+驤>Jou;
+驥>Ki;
+驩>Kan;
+驪>Ri;
+驫>Hyuu;
+骨>Kotsu;
+骭>Kan;
+骰>Tou;
+骸>Kai;
+骼>Kaku;
+髀>Hi;
+髄>Zui;
+髏>Rou;
+髑>Toku;
+髓>Zui;
+體>Tei;
+高>Kou;
+髞>Sou;
+髟>Hyou;
+髢>Tei;
+髣>Hou;
+髦>Bou;
+髪>Hatsu;
+髫>Chou;
+髭>Shi;
+髮>Hatsu;
+髯>Zen;
+髱>Hou;
+髴>Futsu;
+髷>Kyoku;
+髻>Kei;
+鬆>Shou;
+鬘>Ban;
+鬚>Shu;
+鬟>Kan;
+鬢>Hin;
+鬣>Ryou;
+鬥>Tou;
+鬧>Tou;
+鬨>Kou;
+鬩>Geki;
+鬪>Tou;
+鬮>Kyuu;
+鬯>Chou;
+鬱>Utsu;
+鬲>Reki;
+鬻>Shuku;
+鬼>Ki;
+魁>Kai;
+魂>Kon;
+魃>Batsu;
+魄>Haku;
+魅>Mi;
+魍>Bou;
+魎>Ryou;
+魏>Gi;
+魑>Chi;
+魔>Ma;
+魘>En;
+魚>Gyo;
+魯>Ro;
+魴>Hou;
+鮃>Hyou;
+鮎>Nen;
+鮑>Hou;
+鮒>Fu;
+鮓>Sa;
+鮟>An;
+鮠>Gai;
+鮨>Shi;
+鮪>I;
+鮫>Kou;
+鮭>Kei;
+鮮>Sen;
+鮹>Sou;
+鯀>Kon;
+鯆>Ho;
+鯉>Ri;
+鯊>Sa;
+鯔>Shi;
+鯖>Sei;
+鯛>Chou;
+鯡>Hi;
+鯢>Gei;
+鯣>Eki;
+鯤>Kon;
+鯨>Gei;
+鯰>Nen;
+鯵>Sou;
+鰄>I;
+鰆>Shun;
+鰈>Chou;
+鰉>Kou;
+鰊>Ren;
+鰌>Shuu;
+鰍>Shuu;
+鰐>Gaku;
+鰒>Fuku;
+鰓>Sai;
+鰔>Kan;
+鰕>Ka;
+鰛>On;
+鰡>Ryuu;
+鰤>Shi;
+鰥>Kan;
+鰭>Ki;
+鰮>On;
+鰲>Gou;
+鰹>Ken;
+鰺>Sou;
+鰻>Ban;
+鰾>Hyou;
+鱆>Shou;
+鱇>Kou;
+鱈>Setsu;
+鱒>Son;
+鱗>Rin;
+鱠>Kai;
+鱧>Rei;
+鱶>Shou;
+鱸>Ro;
+鳥>Chou;
+鳧>Fu;
+鳩>Kyuu;
+鳫>Gan;
+鳬>Fu;
+鳳>Hou;
+鳴>Mei;
+鳶>En;
+鴃>Ketsu;
+鴆>Chin;
+鴇>Hou;
+鴈>Gan;
+鴉>A;
+鴎>Ou;
+鴒>Rei;
+鴕>Ta;
+鴛>En;
+鴟>Shi;
+鴣>Ko;
+鴦>You;
+鴨>Ou;
+鴪>Itsu;
+鴬>Ou;
+鴻>Kou;
+鴾>Bou;
+鴿>Kou;
+鵁>Kou;
+鵄>Shi;
+鵐>Bu;
+鵑>Ken;
+鵙>Geki;
+鵜>Tei;
+鵝>Ga;
+鵞>Ga;
+鵠>Koku;
+鵡>Bu;
+鵬>Hou;
+鵯>Hi;
+鵲>Jaku;
+鵺>Ya;
+鶇>Tou;
+鶉>Shun;
+鶏>Kei;
+鶚>Gaku;
+鶤>Kon;
+鶩>Boku;
+鶯>Ou;
+鶲>Ou;
+鶴>Kaku;
+鶸>Jaku;
+鶺>Seki;
+鶻>Kotsu;
+鷁>Geki;
+鷂>You;
+鷄>Kei;
+鷆>Ten;
+鷏>Ten;
+鷓>Sha;
+鷙>Shi;
+鷦>Shou;
+鷭>Ban;
+鷯>Ryou;
+鷲>Shuu;
+鷸>Itsu;
+鷹>You;
+鷺>Ro;
+鷽>Kaku;
+鸚>Ou;
+鸛>Kan;
+鸞>Ran;
+鹵>Ro;
+鹸>Ken;
+鹹>Kan;
+鹽>En;
+鹿>Roku;
+麁>So;
+麈>Shu;
+麋>Bi;
+麌>Gu;
+麑>Gei;
+麒>Ki;
+麓>Roku;
+麕>Kin;
+麗>Rei;
+麝>Sha;
+麟>Rin;
+麥>Baku;
+麦>Baku;
+麩>Fu;
+麪>Men;
+麭>Hou;
+麸>Fu;
+麹>Kiku;
+麺>Men;
+麻>Ma;
+麼>Ma;
+麾>Ki;
+麿>Ro;
+黄>Kou;
+黌>Kou;
+黍>Sho;
+黎>Rei;
+黏>Nen;
+黐>Chi;
+黒>Koku;
+黔>Ken;
+默>Moku;
+黙>Moku;
+黛>Tai;
+黜>Chutsu;
+黝>Yuu;
+點>Ten;
+黠>Katsu;
+黥>Gei;
+黨>Tou;
+黯>An;
+黴>Bai;
+黶>En;
+黷>Toku;
+黹>Chi;
+黻>Futsu;
+黼>Ho;
+黽>Bou;
+鼇>Gou;
+鼈>Betsu;
+鼎>Tei;
+鼓>Ko;
+鼕>Tou;
+鼠>So;
+鼡>Sho;
+鼬>Yuu;
+鼻>Bi;
+鼾>Kan;
+齊>Sei;
+齋>Sai;
+齎>Sei;
+齏>Sei;
+齒>Shi;
+齔>Shin;
+齟>So;
+齠>Chou;
+齡>Rei;
+齢>Rei;
+齣>Shutsu;
+齦>Gin;
+齧>Ketsu;
+齪>Soku;
+齬>Gyo;
+齲>Ku;
+齶>Gaku;
+齷>Aku;
+龍>Ryuu;
+龕>Gan;
+龜>Ki;
+龝>Shuu;
+龠>Yaku;
+
+# eof
diff --git a/src/com/ibm/icu/dev/demo/translit/thai_test.txt b/src/com/ibm/icu/dev/demo/translit/thai_test.txt
new file mode 100644
index 0000000..d7b6a5d
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/thai_test.txt
@@ -0,0 +1,51 @@
+@UPPERFILTER@
+Unicode คืออะไร?
+Unicode กำหนดหมายเลขเฉพาะสำหรับทุกอักขระ
+โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด
+ไม่ขึ้นกับว่าจะเป็นโปรแกรมใด
+และไม่ว่าจะเป็นภาษาใด
+
+โดยพื้นฐานแล้ว, คอมพิวเตอร์จะเกี่ยวข้องกับเรื่องของตัวเลข. คอมพิวเตอร์จัดเก็บตัวอักษรและอักขระอื่นๆ โดยการกำหนดหมายเลขให้สำหรับแต่ละตัว. ก่อนหน้าที่๊ Unicode จะถูกสร้างขึ้น, ได้มีระบบ encoding อยู่หลายร้อยระบบสำหรับการกำหนดหมายเลขเหล่านี้. ไม่มี encoding ใดที่มีจำนวนตัวอักขระมากเพียงพอ: ยกตัวอย่างเช่น, เฉพาะในกลุ่มสหภาพยุโรปเพียงแห่งเดียว ก็ต้องการหลาย encoding ในการครอบคลุมทุกภาษาในกลุ่ม. หรือแม้แต่ในภาษาเดี่ยว เช่น ภาษาอังกฤษ ก็ไม่มี encoding ใดที่เพียงพอสำหรับทุกตัวอักษร, เครื่องหมายวรรคตอน และสัญลักษณ์ทางเทคนิคที่ใช้กันอยู่ทั่วไป. 
+
+ระบบ encoding เหล่านี้ยังขัดแย้งซึ่งกันและกัน. นั่นก็คือ, ในสอง encoding สามารถใช้หมายเลขเดียวกันสำหรับตัวอักขระสองตัวที่แตกต่างกัน,หรือใช้หมายเลขต่างกันสำหรับอักขระตัวเดียวกัน. ในระบบคอมพิวเตอร์ (โดยเฉพาะเซิร์ฟเวอร์) ต้องมีการสนับสนุนหลาย encoding; และเมื่อข้อมูลที่ผ่านไปมาระหว่างการเข้ารหัสหรือแพล็ตฟอร์มที่ต่างกัน, ข้อมูลนั้นจะเสี่ยงต่อการผิดพลาดเสียหาย.
+
+Unicode จะเปลี่ยนแปลงสิ่งเหล่านั้นทั้งหมด!
+Unicode กำหนดหมายเลขเฉพาะสำหรับแต่ละอักขระ, โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด, ไม่ขึ้นกับว่าจะเป็นโปรแกรมใดและไม่ว่าจะเป็นภาษาใด. มาตรฐาน Unicode ได้ถูกนำไปใช้โดยผู้นำในอุตสาหกรรม เช่น Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys และอื่นๆ อีกมาก. Unicode เป็นสิ่งที่จำเป็นสำหรับมาตรฐานใหม่ๆ เช่น XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML ฯลฯ., และเป็นแนวทางอย่างเป็นทางการในการทำ ISO/IEC 10646. Unicode ได้รับการสนับสนุนในระบบปฏิบัติการจำนวนมาก, บราวเซอร์ใหม่ๆ ทกตัว, และผลิตภัณฑ์อื่นๆ อีกมาก. การเกิดขึ้นของ Unicode Standard และทูลส์ต่างๆ ที่มีในการสนับสนุน Unicode, เป็นหนึ่งในแนวโน้มทางเทคโนโลยีซอฟต์แวร์ระดับโลกที่มีความสำคัญที่สุด.
+
+การรวม Unicode เข้าไปในระบบไคลเอ็นต์-เซิร์ฟเวอร์ หรือแอ็พพลิเคชันแบบ multi-tiered และเว็บไซต์ จะทำให้เกิดการประหยัดค่าใช้จ่ายมากกว่าการใช้ชุดอักขระแบบเดิม. Unicode ทำให้ผลิตภัณฑ์ซอฟต์แวร์หนึ่งเดียว หรือเว็บไซต์แห่งเดียว รองรับได้หลายแพล็ตฟอร์ม, หลายภาษาและหลายประเทศโดยไม่ต้องทำการรื้อปรับระบบ. Unicode ยังทำให้ข้อมูลสามารถเคลื่อนย้ายไปมาในหลายๆ ระบบโดยไม่เกิดความผิดพลาดเสียหาย.
+
+เกี่ยวกับ Unicode Consortium
+Unicode Consortium เป็นองค์กรไม่แสวงหากำไรที่ก่อตั้งขึ้นเพื่อพัฒนา, ขยายและส่งเสริมการใช้ Unicode Standard, ซึ่งกำหนดรูปแบบการแทนค่าของข้อความในผลิตภัณฑ์ซอฟต์แวร์และมาตรฐานใหม่ๆ. สมาชิกของสมาคมเป็นตัวแทนจากบริษัทและองค์กรในอุตสาหกรรมคอมพิวเตอร์และการประมวลผลสารสนเทศ. สมาคมได้รับการสนับสนุนทางการเงินผ่านทางค่าธรรมเนียมของการเป็นสมาชิกเท่านั้น. สมาชิกภาพของ Unicode Consortium เปิดกว้างสำหรับองค์กรหรือบุคคลใดๆ ในโลกที่ต้องการสนับสนุน Unicode Standard และช่วยเหลือการขยายตัวและการนำ Unicode ไปใช้งาน. 
+
+สำหรับข้อมูลเพิ่มเติม, ให้ดูที่ Glossary, Sample Unicode-Enabled Products, Technical Introduction และ Useful Resources.
+@TITLECASE@
+ก๊กเฮง แซ่แต้
+กชกร ศราทธทัต
+กติกา อังคสุภณ
+กนก ธรรมประทีป
+กนก วงศ์ทองศรี
+กนกกร ช้างเย็นฉ่ำ
+กนกฉัตร์ ถาวรนันท์
+กนกนวล โปษยะนันทน์
+กนกพร คมคาย
+กนกพร ตีรเลิศพานิช
+กนกพร พันทร
+กนกพร ศรีบัณฑิต
+กนกพร อติวรรณาพัฒน์
+กนกพรรณ ศรีวนาภิรมย์
+กนกรัตน์ เกียรติยิ่งอังศุลี
+กนกรัตน์ สุธรรมพิทักษ์
+กนกวรรณ คงคาประเสริฐ
+กนกวรรณ แซ่เตียว
+กนกวรรณ บุญประเสริฐ
+กนกวรรณ รักทรัพย์
+กนกวรรณ สัจจพงษ์
+กนกวรรณ อุ้ยวงศ์ไพศาล
+กนกศักดิ์ ยิ่งยง
+กนกแก้ว กรสมิต
+กนิษฐา ทนุถนอมราษฎร์
+กนิษฐา หวังวิบูลย์กิจ
+กมล กาญจนโรจน์
+กมล คัมภีร์
+กมล เจตน์มงคลรัตน์
+กมล ชูตระกูลธรรม
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/ModuleTest.java b/src/com/ibm/icu/dev/test/ModuleTest.java
new file mode 100644
index 0000000..6a98b3a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/ModuleTest.java
@@ -0,0 +1,172 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/ModuleTest.java,v $
+ * $Date: 2002/08/13 21:59:54 $
+ * $Revision: 1.2 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import com.ibm.icu.dev.test.TestDataModule.TestData;
+import com.ibm.icu.dev.test.TestDataModule.DataMap;
+
+/**
+ * A convenience extension of TestFmwk for use by data module-driven
+ * tests.  Tests can implement this if they make extensive use of
+ * information in a TestDataModule.  The module should be openable
+ * using TestDataModule.open() passing in the class name of this test
+ * + "Data".  For example, a test named MyTest would have a module
+ * named MyTestData.  Each test method should also have a
+ * corresponding test data in the module whose name matches the test
+ * method name.
+ *
+ * Subclasses can allow for test methods that don't use data from the
+ * modeul by overriding validateMethod to return true for these
+ * methods.  Tests are also free to instantiate their own modules and
+ * run from them, though care should be taken not to interfere with
+ * the methods in this class.
+ *
+ * See ModuleTestSample for an example.  */
+public class ModuleTest extends TestFmwk {
+    private TestDataModule m;
+    private TestData t;
+
+    /**
+     * Subclasses access this after calling nextSettings and getting
+     * a true result.
+     */
+    protected DataMap settings;
+
+    /**
+     * Subclasses access this after calling nextCase and getting a
+     * true result.
+     */
+    protected DataMap testcase;
+
+    /**
+     * TestFmwk calls this before trying to run a suite of tests.
+     * The test suite if valid if a module whose name is the name of
+     * this class + "Data" can be opened.  Subclasses can override
+     * this if there are different or additional data required.  
+     */
+    protected boolean validate() {
+	return openModule(getClass().getName()+"Data");
+    }
+
+    /**
+     * TestFmwk calls this before trying to invoke a test method.
+     * The method is valid if there is test data with the name of this
+     * method in the module.  Subclasses can override this to allow
+     * for tests that do not require test data from the module, or
+     * if there are different or additional data required.
+     */
+    protected boolean validateMethod(String methodName) {
+	return openTestData(methodName);
+    }
+
+    /**
+     * Override of TestFmwk method to get the test suite description
+     * from the DESCRIPTION field of the module info.  
+     */
+    protected String getDescription() {
+	DataMap info = moduleInfo();
+	if (info != null) {
+	    return info.getString(TestDataModule.DESCRIPTION);
+	}
+	return null;
+    }
+
+    /**
+     * Override of TestFmwk method to get the test method description
+     * from the DESCRIPTION field of the test info.  
+     */
+    protected String getMethodDescription(String methodName) {
+	if (openTestData(methodName)) {
+	    DataMap info = testInfo();
+	    if (info != null) {
+		return info.getString(TestDataModule.DESCRIPTION);
+	    }
+	}
+	return null;
+    }
+
+    /**
+     * Opens the module with the given name, and return true if success.
+     * All contents are reset.
+     */
+    protected boolean openModule(String name) {
+	t = null;
+	m = TestDataModule.open(name, this);
+	return m != null;
+    }
+
+    /**
+     * Open the test data in the module with the given name, and return
+     * true if success.  The current test is reset.
+     */
+    protected boolean openTestData(String name) {
+	t = m == null ? null : m.createTestData(name);
+	return t != null;
+    }
+
+    /**
+     * Get information on this module.  Returns null if no module
+     * open or no info for the module.
+     */
+    protected DataMap moduleInfo() {
+	return m == null ? null : m.getInfo();
+    }
+
+    /**
+     * Get information on this test.  Returns null if no module
+     * open or no test open or not info for this test.
+     */
+    protected DataMap testInfo() {
+	return t == null ? null : t.getInfo();
+    }
+
+    /**
+     * Advance test to the next settings, and return true if 
+     * there are more settings.  The protected member variable
+     * 'settings' holds the new settings data.
+     */
+    protected boolean nextSettings() {
+	settings = t == null ? null : t.nextSettings();
+	return settings != null;
+    }
+
+    /**
+     * Advance test to the next case, and return true if there
+     * is another case.  The protected member variable
+     * 'testcase' holds the new case data.
+     */
+    protected boolean nextCase() {
+	testcase = t == null ? null : t.nextCase();
+	return testcase != null;
+    }
+
+    /**
+     * Report an error, and stop iteration of the current test.
+     */
+    public void err(String message) {
+	if (t != null) {
+	    t.stopIteration();
+	}
+	super.err(message);
+    }
+
+    /**
+     * Report an error, and stop iteration of the current test.
+     */
+    public void errln(String message) {
+	if (t != null) {
+	    t.stopIteration();
+	}
+	super.errln(message);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/ResourceModule.java b/src/com/ibm/icu/dev/test/ResourceModule.java
new file mode 100644
index 0000000..a0b4e8c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/ResourceModule.java
@@ -0,0 +1,578 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/ResourceModule.java,v $
+ * $Date: 2002/08/13 21:59:54 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.util.ResourceBundle;
+
+/**
+ * Resource-based module.
+ */
+public class ResourceModule extends TestDataModule {
+    private NamedArray tests;
+    private RBDataMap info;
+    private String[] defaultHeaders;
+
+    /**
+     * For internal use.
+     */
+    static final String TESTS = "TestData";
+
+    /**
+     * For internal use.
+     */
+    static final String INFO = "Info";
+
+    /**
+     * For internal use.
+     */
+    static final String SETTINGS = "Settings";
+
+    /**
+     * For internal use.
+     */
+    static final String CASES = "Cases";
+
+    public ResourceModule(String name, TestLog log, ResourceBundle b) {
+	super(name, log);
+
+	if (b == null) {
+	    log.errln("ResourceModule must have non-null bundle");
+	    return;
+	}
+
+	Object[][] data = (Object[][])b.getObject(TESTS);
+	if (data == null) {
+	    log.errln("ResourceModule does not contain tests!");
+	    return;
+	}
+	this.tests = NamedArray.create(data);
+
+	Object[][] temp = (Object[][])b.getObject(INFO);
+	if (temp != null) {
+	    NamedArray na = NamedArray.create(temp);
+	    if (na.count() < 0) {
+		log.errln("Bad data for " + INFO);
+	    } else {
+		this.info = new RBDataMap(log, na, false);	
+		this.defaultHeaders = info.getStringArray(HEADERS);	
+	    }
+	}
+    }
+
+    /**
+     * Get additional data related to the module.
+     * Returns true if successfully got info.
+     */
+    public DataMap getInfo() {
+	return info;
+    }
+
+    /**
+     * Returns the Test object corresponding to name, 
+     * or null if name not found in this module.
+     */
+    public TestData createTestData(String name) {
+	if (tests != null) {
+	    Object[] td = tests.getEntry(name);
+	    if (td != null) {
+		return createTestData(td);
+	    }
+	}
+
+	return null;
+    }
+
+    /**
+     * Returns the Test object corresponding to index,
+     * or null if index is out of range for this module.
+     * No error logged if index is out of bounds, the assumption is that
+     * iteration is being used and proceeds until a null return.
+     */
+    public TestData createTestData(int index) {
+	if (tests != null) {
+	    Object[] td = tests.getEntry(index);
+	    if (td != null) {
+		return createTestData(td);
+	    }
+	}
+	return null;
+    }
+
+    private TestData createTestData(Object[] d) {
+	return new RBTestData(this, (String)d[0], (Object[][])d[1], defaultHeaders);
+    }
+
+    /**
+     * Provides access to values either by index or by case-insensitive search on 
+     * the name.  Poor man's Map with index.
+     */
+    static abstract class NamedArray {
+	int txcache;
+	int count;
+
+	static NamedArray create(Object[][] pairs) {
+	    return new NamedArrayOfPairs(pairs);
+	}
+
+	static NamedArray create(String[] names, Object[] values) {
+	    return new NamedArrayTwoLists(names, values);
+	}
+
+	protected NamedArray(int count) {
+	    this.count = count;
+	}
+
+	public final int count() {
+	    return count;
+	}
+
+	public final boolean isDefined(String name) {
+	    int ix = nameToIndex(name);
+	    if (ix != -1) {
+		txcache = (ix == 0 ? count : ix) - 1;
+		return true;
+	    }
+	    return false;
+	}
+
+	public final Object[] getEntry(String name) {
+	    return getEntry(nameToIndex(name));
+	}
+
+	public final Object getValue(String name) {
+	    return getValue(nameToIndex(name));
+	}
+	
+	public final Object[] getEntry(int index) {
+	    if (index >= 0 && index < count) {
+		return entryAtIndex(index);
+	    }
+	    return null;
+	}
+
+	public final Object getValue(int index) {
+	    if (index >= 0 && index < count) {
+		return valueAtIndex(index);
+	    }
+	    return null;
+	}
+
+	public String[] names() {
+	    if (count > 0) {
+		String[] result = new String[count];
+		for (int i = 0; i < count; ++i) {
+		    result[i] = nameAtIndex(i);
+		}
+		return result;
+	    }
+	    return null;
+	}
+
+	public Object[] values() {
+	    if (count > 0) {
+		Object[] result = new Object[count];
+		for (int i = 0; i < count; ++i) {
+		    result[i] = valueAtIndex(i);
+		}
+		return result;
+	    }
+	    return null;
+	}
+
+	public String toString() {
+	    StringBuffer buf = new StringBuffer(super.toString());
+	    buf.append("count: " + count + "{");
+	    for (int i = 0; i < count; ++i) {
+		buf.append("\n  { " + nameAtIndex(i) + ", " + valueAtIndex(i) + " }");
+	    }
+	    buf.append("}");
+	    return buf.toString();
+	}
+
+	protected int nameToIndex(String name) {
+	    if (name != null && count > 0) {
+		int i = txcache;
+		do {
+		    if (++i == count) {
+			i = 0;
+		    }
+		    if (name.equalsIgnoreCase(nameAtIndex(i))) {
+			txcache = i;
+			return i;
+		    }
+		} while (i != txcache);
+	    }
+	    return -1;
+	}
+
+	protected Object[] entryAtIndex(int index) {
+	    return new Object[] { nameAtIndex(index), valueAtIndex(index) };
+	}
+
+	protected abstract String nameAtIndex(int index);
+	protected abstract Object valueAtIndex(int index);
+    }
+
+    /**
+     * NamedArray implemented using an array of name/value
+     * pairs, represented by an Object[][].
+     */
+    static final class NamedArrayOfPairs extends NamedArray {
+	private Object[][] data;
+
+	public NamedArrayOfPairs(Object[][] data) {
+	    super(data == null ? -1 : data.length);
+	    this.data = data;
+	}
+
+	protected Object[] entryAtIndex(int index) {
+	    return data[index];
+	}
+
+	protected String nameAtIndex(int index) {
+	    return (String)data[index][0];
+	}
+
+	protected Object valueAtIndex(int index) {
+	    return data[index][1];
+	}
+    }
+
+    /**
+     * NamedArray implemented using two arrays, one of String and one of Object.
+     */
+    static final class NamedArrayTwoLists extends NamedArray {
+	String[] names;
+	Object[] values;
+
+	public NamedArrayTwoLists(String[] names, Object[] values) {
+	    super (values != null && names != null && names.length == values.length ?
+		   names.length :
+		   -1);
+	    this.names = names;
+	    this.values = values;
+	}
+	    
+	public String[] names() {
+	    return names;
+	}
+
+	public Object[] values() {
+	    return values;
+	}
+
+	protected String nameAtIndex(int index) {
+	    return names[index];
+	}
+
+	protected Object valueAtIndex(int index) {
+	    return values[index];
+	}
+    }
+
+    static class RBTestData extends TestData {
+	ResourceModule m;
+	RBDataMap info;
+	Object[] settings;
+    /** 
+     * changed to fit the c genrb format. this is actually Object[] {Object[]}
+     */
+	Object[] cases; 
+	String[] headers;
+	int sx;
+	int cx;
+
+	RBTestData(ResourceModule m, String name, Object[][] data, String[] defaultHeaders) {
+	    super(name);
+	    this.m = m;
+
+	    NamedArray namedData = NamedArray.create(data);
+
+	    try {
+		Object[][] temp = (Object[][])namedData.getValue(INFO);
+		if (temp != null) {
+		    NamedArray na = NamedArray.create(temp);
+		    if (na.count() < 1) {
+			m.log.errln("Bad data for " + INFO);
+		    } else {
+			this.info = new RBDataMap(m.log, na, false);
+		    }
+		}
+	    } 
+	    catch (ClassCastException e) {
+		m.log.errln("Test " + name + " in module " + m.getName() + " has bad type for " + INFO);
+	    }
+
+	    try {
+		this.settings = (Object[])namedData.getValue(SETTINGS);
+	    }
+	    catch (ClassCastException e) {
+		m.log.errln("Test " + name + " in module " + m.getName() + " has bad type for " + SETTINGS);
+	    }
+
+	    try {
+		this.cases = (Object[])namedData.getValue(CASES);
+	    }
+	    catch (ClassCastException e) {
+		m.log.errln("Test " + name + " in module " + m.getName() + " has bad type for " + CASES);
+	    }
+
+	    if (info != null) {
+		this.headers = info.getStringArray(HEADERS);
+	    }
+	    if (this.headers == null) {
+		this.headers = defaultHeaders;
+	    }
+	}
+
+	/**
+	 * Get additional data related to the test.
+	 */
+	public DataMap getInfo() {
+	    return info;
+	}
+
+	/**
+	 * Returns DataMap with next settings and resets case iteration.
+	 * If no more settings, terminates iteration and returns null.
+	 */
+	public DataMap nextSettings() {
+	    if (settings != null && sx < settings.length) {
+		cx = 0;
+		NamedArray na = NamedArray.create((Object[][])settings[sx++]);
+		if (na.count() < 0) {
+		    m.log.errln("Bad settings data for settings " + (sx-1));
+		    return null;
+		} else {
+		    return new RBDataMap(m.log, na, false);
+		}
+	    }
+	    stopIteration();
+
+	    return null;
+	}
+
+	/**
+	 * Returns DataMap with next case.  If no next case, returns null.
+	 */
+	public DataMap nextCase() {
+	    if (cases != null && cx < cases.length) {
+		NamedArray na = NamedArray.create(headers, (Object[])cases[cx++]);
+		if (na.count() < 0) {
+		    m.log.errln("Bad cases data for case " + (cx-1));
+		} else {
+		    return new RBDataMap(m.log, na, true);
+		}
+	    }
+	    return null;
+	}
+
+	/**
+	 * Stops iteration.
+	 */
+	public void stopIteration() {
+	    sx = cx = Integer.MAX_VALUE;
+	}
+    }
+    
+    static final class RBDataMap extends DataMap {
+	TestLog log;
+	NamedArray na;
+	boolean required;
+
+	RBDataMap(TestLog log, NamedArray na, boolean required) {
+	    this.log = log;
+	    this.na = na;
+	    this.required = required;
+	}
+
+	public boolean isDefined(String key) {
+	    return na.isDefined(key);
+	}
+
+	public Object getObject(String key) { 
+	    Object result = na.getValue(key);
+	    if (required && result == null) {
+		reportNullError(key);
+	    }
+	    return result;
+	}
+
+	public String getString(String key) { 
+	    String result = null;
+	    try {
+		result = (String)getObject(key);
+	    }
+	    catch (ClassCastException e) {
+		reportTypeError("String", key);
+	    }
+	    return result;
+	}
+
+	public char getChar(String key) { 
+	    try {
+		String s = getString(key);
+		if (s != null) {
+		    return s.charAt(0);
+		}
+	    }
+	    catch (IndexOutOfBoundsException e) {
+		reportTypeError("char", key);
+	    }
+	    return 0xffff;
+	}
+
+	public int getInt(String key) { 
+	    try {
+		String s = getString(key);
+		if (s != null) {
+		    return Integer.parseInt(s);
+		}
+	    }
+	    catch (NumberFormatException e) {
+		reportTypeError("int", key);
+	    }
+	    return -1;
+	}
+
+	public byte getByte(String key) { 
+	    try {
+		String s = getString(key);
+		if (s != null) {
+		    return Byte.parseByte(s);
+		}
+	    }
+	    catch (NumberFormatException e) {
+		reportTypeError("byte", key);
+	    }
+	    return (byte)-1;
+	}
+
+	public boolean getBoolean(String key) { 
+	    String s = getString(key);
+	    if (s != null) {
+		if (s.equalsIgnoreCase("true")) {
+		    return true;
+		} else if (!s.equalsIgnoreCase("false")) {
+		    reportTypeError("boolean", key);
+		}
+	    }
+	    return false;
+	}
+
+	public Object[] getObjectArray(String key) {
+	    try {
+		Object[] result = (Object[])na.getValue(key);
+		if (result == null && required) {
+		    reportNullError(key);
+		}
+	    } catch (ClassCastException e) {
+		reportTypeError("Object[]", key);
+	    }
+	    return null;
+	}
+
+	public String[] getStringArray(String key) { 
+	    try {
+		String[] result = (String[])na.getValue(key);
+		if (result == null && required) {
+		    reportNullError(key);
+		}
+		return result;
+	    }
+	    catch (ClassCastException e) {
+		reportTypeError("String[]", key);
+	    }
+	    return null;
+	}
+
+	public char[] getCharArray(String key) { 
+	    try {
+		String temp = (String)na.getValue(key);
+		if (temp == null) {
+		    if (required) {
+			reportNullError(key);
+		    }
+		} else {
+		    return temp.toCharArray();
+		}
+	    }
+	    catch (ClassCastException e) {
+		reportTypeError("char[]", key);
+	    }
+	    return null;
+	}
+
+	public int[] getIntArray(String key) {
+	    String[] data = getStringArray(key);
+	    if (data != null) {
+		try {
+		    int[] result = new int[data.length];
+		    for (int i = 0; i < data.length; ++i) {
+			result[i] = Integer.parseInt(data[i]);
+		    }
+		    return result;
+		}
+		catch (NumberFormatException e) {
+		    reportTypeError("int[]", key);
+		}
+	    }
+	    return null;
+	}
+
+	public byte[] getByteArray(String key) { 
+	    String[] data = getStringArray(key);
+	    if (data != null) {
+		try {
+		    byte[] result = new byte[data.length];
+		    for (int i = 0; i < result.length; ++i) {
+			result[i] = Byte.parseByte(data[i]);
+		    }
+		    return result;
+		}
+		catch (NumberFormatException e) {
+		    reportTypeError("byte[]", key);
+		}
+	    }
+	    return null;
+	}
+
+	public boolean[] getBooleanArray(String key) {
+	    String[] data = getStringArray(key);
+	    if (data != null) {
+		boolean[] result = new boolean[data.length];
+		for (int i = 0; i < result.length; ++i) {
+		    String s = data[i];
+		    if (s.equalsIgnoreCase("true")) {
+			result[i] = true;
+		    } else if (s.equalsIgnoreCase("false")) {
+			result[i] = false;
+		    } else {
+			reportTypeError("boolean[]", key);
+			return null;
+		    }
+		}
+		return result;
+	    }
+	    return null;
+	}
+
+	private void reportNullError(String key) {
+	    log.errln("Missing required value for '" + key + "'");
+	}
+
+	private void reportTypeError(String typeName, String key) {
+	    log.errln("Could not return value of '" + key + "' (" + getObject(key) + ") as type '" + typeName + "'");
+	}
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/TestAll.java b/src/com/ibm/icu/dev/test/TestAll.java
new file mode 100755
index 0000000..c81b133
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestAll.java
@@ -0,0 +1,221 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/TestAll.java,v $ 
+ * $Date: 2002/08/12 20:26:38 $ 
+ * $Revision: 1.37 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.bigdec.DiagBigDecimal;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+ 
+public class TestAll extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+
+    public void TestBigNumberFormat() throws Exception{
+        run(new com.ibm.icu.dev.test.format.BigNumberFormatTest());
+    }
+    
+    public void TestCompression() throws Exception{
+        run(new TestFmwk[] {
+            new com.ibm.icu.dev.test.compression.DecompressionTest(),
+            new com.ibm.icu.dev.test.compression.ExhaustiveTest()
+                });
+    }
+
+    public void TestRuleBasedNumberFormat() throws Exception {
+        run(new TestFmwk[] {
+            new com.ibm.icu.dev.test.format.RbnfTest(),
+            new com.ibm.icu.dev.test.format.RbnfRoundTripTest()
+                });
+    }
+
+    public void TestRuleBasedBreakIterator() throws Exception {
+        run(new TestFmwk[] {
+            new com.ibm.icu.dev.test.rbbi.SimpleBITest(),
+            new com.ibm.icu.dev.test.rbbi.BreakIteratorTest(),
+            new com.ibm.icu.dev.test.rbbi.RBBITest(),
+            new com.ibm.icu.dev.test.rbbi.RBBIAPITest()
+                });
+    }
+
+    public void TestTranslit() throws Exception {
+        run(new TestFmwk[] {
+            new com.ibm.icu.dev.test.translit.TransliteratorTest(),
+            new com.ibm.icu.dev.test.translit.UnicodeSetTest(),
+            new com.ibm.icu.dev.test.translit.UnicodeFilterLogicTest(),
+            new com.ibm.icu.dev.test.translit.CompoundTransliteratorTest(),
+            new com.ibm.icu.dev.test.translit.UnicodeToHexTransliteratorTest(),
+            new com.ibm.icu.dev.test.translit.HexToUnicodeTransliteratorTest(),
+            new com.ibm.icu.dev.test.translit.JamoTest(),
+            new com.ibm.icu.dev.test.translit.ErrorTest(),
+            new com.ibm.icu.dev.test.translit.RoundTripTest(),
+            new com.ibm.icu.dev.test.translit.ReplaceableTest()
+                });
+    }
+
+    public void TestSearch() throws Exception {
+        run(
+            new com.ibm.icu.dev.test.search.SearchTest());
+    }
+    
+    public void TestCollator() throws Exception {
+        run(new TestFmwk[] {
+            new com.ibm.icu.dev.test.collator.CollationTest(),
+            new com.ibm.icu.dev.test.collator.CollationAPITest(),
+            new com.ibm.icu.dev.test.collator.CollationCurrencyTest(),
+            new com.ibm.icu.dev.test.collator.CollationDanishTest(),
+            new com.ibm.icu.dev.test.collator.CollationDummyTest(),
+            new com.ibm.icu.dev.test.collator.CollationEnglishTest(),
+            new com.ibm.icu.dev.test.collator.CollationFinnishTest(),
+            new com.ibm.icu.dev.test.collator.CollationFrenchTest(),
+            new com.ibm.icu.dev.test.collator.CollationGermanTest(),
+            new com.ibm.icu.dev.test.collator.CollationIteratorTest(),
+            new com.ibm.icu.dev.test.collator.CollationKanaTest(),
+            new com.ibm.icu.dev.test.collator.CollationMonkeyTest(),
+            new com.ibm.icu.dev.test.collator.CollationRegressionTest(),
+            new com.ibm.icu.dev.test.collator.CollationSpanishTest(),
+            new com.ibm.icu.dev.test.collator.CollationThaiTest(),
+            new com.ibm.icu.dev.test.collator.CollationTurkishTest(),
+            new com.ibm.icu.dev.test.collator.G7CollationTest(),
+            new com.ibm.icu.dev.test.collator.LotusCollationKoreanTest(),
+            new com.ibm.icu.dev.test.collator.CollationMiscTest()
+                });
+    }
+	
+    public void TestArabicShaping() throws Exception {
+        run(new com.ibm.icu.dev.test.shaping.ArabicShapingRegTest());
+    }
+
+    public void TestCalendar() throws Exception {
+        run(new TestFmwk[] {
+            new com.ibm.icu.dev.test.calendar.AstroTest(),
+            new com.ibm.icu.dev.test.calendar.CalendarRegression(),
+            new com.ibm.icu.dev.test.calendar.CompatibilityTest(),
+            new com.ibm.icu.dev.test.calendar.HebrewTest(),
+            new com.ibm.icu.dev.test.calendar.IBMCalendarTest(),
+            new com.ibm.icu.dev.test.calendar.IslamicTest(),
+            new com.ibm.icu.dev.test.calendar.JapaneseTest(),
+            new com.ibm.icu.dev.test.calendar.ChineseTest(),
+            new com.ibm.icu.dev.test.calendar.HolidayTest()
+                });
+    }
+
+    public void TestTimeZone() throws Exception {
+        run(new TestFmwk[] {
+            new com.ibm.icu.dev.test.timezone.TimeZoneTest(),
+            new com.ibm.icu.dev.test.timezone.TimeZoneRegression(),
+            new com.ibm.icu.dev.test.timezone.TimeZoneBoundaryTest()
+                });
+    }
+
+    public void TestCharacter() throws Exception {
+        run(new TestFmwk[] {
+            new com.ibm.icu.dev.test.lang.UCharacterTest(),
+            new com.ibm.icu.dev.test.lang.UCharacterCaseTest(),
+            new com.ibm.icu.dev.test.lang.UCharacterIteratorTest(),
+            new com.ibm.icu.dev.test.lang.UCharacterCategoryTest(),
+            new com.ibm.icu.dev.test.lang.UCharacterDirectionTest(),
+            new com.ibm.icu.dev.test.lang.UTF16Test()
+                });
+    }
+    
+    public void TestTrie() throws Exception {
+        run(new TestFmwk[] {
+            new com.ibm.icu.dev.test.util.TrieTest()
+            });
+    }
+    
+    public void TestUScript() throws Exception {
+        run( new TestFmwk[] {
+            new com.ibm.icu.dev.test.lang.TestUScript(),
+        });
+    }
+    
+    public void TestNormalizer() throws Exception {
+        run( new TestFmwk[] {
+            new com.ibm.icu.dev.test.normalizer.ConformanceTest(),
+            new com.ibm.icu.dev.test.normalizer.BasicTest(),
+            new com.ibm.icu.dev.test.normalizer.ExhaustiveTest(),
+        });
+    }
+    
+    public void TestUScriptRun() throws Exception {
+        run( new TestFmwk[] {
+            new com.ibm.icu.dev.test.lang.TestUScriptRun(),
+        });
+    }
+    
+    public void TestNumberFormat() throws Exception {
+        run(new TestFmwk[] {
+            new com.ibm.icu.dev.test.format.IntlTestNumberFormat(),
+            new com.ibm.icu.dev.test.format.IntlTestNumberFormatAPI(),
+            new com.ibm.icu.dev.test.format.NumberFormatTest(),
+            new com.ibm.icu.dev.test.format.NumberFormatRoundTripTest(),
+            new com.ibm.icu.dev.test.format.NumberRegression(),
+            new com.ibm.icu.dev.test.format.NumberFormatRegressionTest(),
+            new com.ibm.icu.dev.test.format.IntlTestDecimalFormatAPI(),
+            new com.ibm.icu.dev.test.format.IntlTestDecimalFormatAPIC(),
+            new com.ibm.icu.dev.test.format.IntlTestDecimalFormatSymbols(),
+            new com.ibm.icu.dev.test.format.IntlTestDecimalFormatSymbolsC()
+                });
+    }
+    
+    public void TestDateFormat() throws Exception {
+        run(new TestFmwk[] {
+            new com.ibm.icu.dev.test.format.DateFormatMiscTests(),
+            new com.ibm.icu.dev.test.format.DateFormatRegressionTest(),
+            new com.ibm.icu.dev.test.format.DateFormatRoundTripTest(),
+            new com.ibm.icu.dev.test.format.DateFormatTest(),
+            new com.ibm.icu.dev.test.format.IntlTestDateFormat(),
+            new com.ibm.icu.dev.test.format.IntlTestDateFormatAPI(),
+            new com.ibm.icu.dev.test.format.IntlTestDateFormatAPIC(),
+            new com.ibm.icu.dev.test.format.IntlTestDateFormatSymbols(),
+            new com.ibm.icu.dev.test.format.IntlTestSimpleDateFormatAPI(),
+            new com.ibm.icu.dev.test.format.DateFormatRegressionTestJ()
+                });
+    }
+
+    public void TestService() throws Exception {
+	run(new TestFmwk[] {
+	    new com.ibm.icu.dev.test.util.ICUServiceTest(),
+	    new com.ibm.icu.dev.test.util.ICUServiceThreadTest()
+		});
+    }
+    
+    public void TestVersionInfo() throws Exception {
+        run(new TestFmwk[] {
+        new com.ibm.icu.dev.test.util.VersionInfoTest()
+        });        
+    }
+    
+    public void TestIterator() throws Exception {
+        run(new TestFmwk[] {
+            new com.ibm.icu.dev.test.iterator.TestUCharacterIterator(),
+        });
+    }
+    
+    public void TestUtil() throws Exception {
+        run(new TestFmwk[] {
+            new com.ibm.icu.dev.test.util.ICUListResourceBundleTest(),
+	    new com.ibm.icu.dev.test.util.CompactArrayTest(),
+            });
+    }
+    public void TestMath() throws Exception{
+        run( new TestFmwk[]{
+                new DiagBigDecimal(),
+              });
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/TestDataModule.java b/src/com/ibm/icu/dev/test/TestDataModule.java
new file mode 100644
index 0000000..edbeb8c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestDataModule.java
@@ -0,0 +1,167 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/TestDataModule.java,v $
+ * $Date: 2002/08/13 22:02:16 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.util.ResourceBundle;
+
+/**
+ * Represents a collection of test data described in a file.
+ */
+public abstract class TestDataModule {
+    protected final String name;
+    protected final TestLog log;
+
+    /**
+     * Looks for file with corresponding name, either xml or resource
+     * bundle.  Returns module or null if not present.  
+     */
+    static final TestDataModule open(String name, TestLog log) {
+	ResourceBundle bundle = ResourceBundle.getBundle(name);
+	if (bundle != null) {
+	    return new ResourceModule(name, log, bundle);
+	}
+	return null;
+    }
+
+    /**
+     * Subclass constructors call this.
+     */
+    protected TestDataModule(String name, TestLog log) {
+	this.name = name;
+	this.log = log;
+    }
+
+    
+    /**
+     * Return the name of this test module.
+     */
+    public final String getName() {
+	return name;
+    }
+
+    /**
+     * Return the log used by this module.  Errors logged to this
+     * log will terminate settings and cases iteration for the
+     * current test.
+     */
+    public final TestLog getLog() {
+	return log;
+    }
+
+    /**
+     * Get additional data related to the module, e.g. DESCRIPTION,
+     * global settings.  Might be null.
+     */
+    public abstract DataMap getInfo();
+
+    /**
+     * A standard datum that can be found in the DataMap returned by getInfo.
+     * DESCRIPTION provides a one-line description.  The corresponding type
+     * is a String.
+     */
+    public static final String DESCRIPTION = "Description";
+
+    /**
+     * A standard datum that can be found in the DataMap returned by
+     * getInfo.  LONG_DESCRIPTION provides an extended description.
+     * The corresponding type is a String.  
+     */
+    public static final String LONG_DESCRIPTION = "Long_Description";
+
+    /**
+     * The names of the columns of test data.  This can be found in
+     * either the module INFO or the test INFO.  If the test INFO
+     * does not define the headers then they are taken from the
+     * module.  If test cases are used by the test, then the headers
+     * must be defined.  Most clients will not need this information,
+     * since it is handled by the framework.
+     */
+    public static final String HEADERS = "Headers";
+
+    /**
+     * Returns the Test object corresponding to index, or null if
+     * index is out of range for this module.  No error logged if
+     * index is out of bounds, the assumption is that iteration is
+     * being used.  
+     */
+    public abstract TestData createTestData(int index);
+
+    /**
+     * Returns the TestData corresponding to name, or null if name not
+     * found in this module.  Logs error if name is not found.  
+     */
+    public abstract TestData createTestData(String name);
+
+    /**
+     * Represents a single test in the module.
+     */
+    public abstract static class TestData {
+	String name;
+
+	protected TestData(String name) {
+	    this.name = name;
+	}
+
+	public final String name() {
+	    return name;
+	}
+
+	/**
+	 * Get additional data related to the test, e.g. DESCRIPTION,
+	 * LONG_DESCRIPTION, HEADERS, or other test-specific
+	 * information.  
+	 */
+	public abstract DataMap getInfo();
+
+	/**
+	 * Returns new DataMap for next settings, and resets test case
+	 * iteration.  Returns null if no more settings.  
+	 */
+	public abstract DataMap nextSettings();
+
+	/**
+	 * Returns new DataMap for next cases.  
+	 * Returns null if no more cases.
+	 */
+	public abstract DataMap nextCase();
+
+	/**
+	 * Stops iteration of the test.  Usually called if some
+	 * condition detects an error.
+	 */
+	public abstract void stopIteration();
+    }
+
+    /**
+     * DataMap provides named access to typed data.  Lookup data by
+     * key and attempt to cast to indicated type.  If data not found
+     * or cast fails, log error and return null.  */
+    public abstract static class DataMap {
+	public abstract boolean    isDefined(String key);
+
+	public abstract Object     getObject(String key);
+	public abstract String     getString(String key);
+	public abstract char       getChar(String key);
+	public abstract int        getInt(String key);
+	public abstract byte       getByte(String key);
+	public abstract boolean    getBoolean(String key);
+
+	public abstract Object[]   getObjectArray(String key);
+	public abstract String[]   getStringArray(String key);
+	public abstract char[]     getCharArray(String key);
+	public abstract int[]      getIntArray(String key);
+	public abstract byte[]     getByteArray(String key);
+	public abstract boolean[]  getBooleanArray(String key);
+    }
+}
+    
diff --git a/src/com/ibm/icu/dev/test/TestFmwk.java b/src/com/ibm/icu/dev/test/TestFmwk.java
new file mode 100755
index 0000000..92c10ce
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestFmwk.java
@@ -0,0 +1,490 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/TestFmwk.java,v $ 
+ * $Date: 2002/06/05 23:00:58 $ 
+ * $Revision: 1.30 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.lang.reflect.*;
+import java.util.Hashtable;
+import java.util.Enumeration;
+import java.util.Vector;
+import java.util.Comparator;
+import java.io.*;
+import java.text.*;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UnicodeSet;
+
+
+/**
+ * TestFmwk is a base class for tests that can be run conveniently from
+ * the command line as well as under the Java test harness.
+ * <p>
+ * Sub-classes implement a set of methods named Test<something>. Each
+ * of these methods performs some test. Test methods should indicate
+ * errors by calling either err or errln.  This will increment the
+ * errorCount field and may optionally print a message to the log.
+ * Debugging information may also be added to the log via the log
+ * and logln methods.  These methods will add their arguments to the
+ * log only if the test is being run in verbose mode.
+ */
+
+public class TestFmwk implements TestLog {
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //------------------------------------------------------------------------
+    // Everything below here is boilerplate code that makes it possible
+    // to add a new test by simply adding a function to an existing class
+    //------------------------------------------------------------------------
+
+    protected TestFmwk() {
+        // Create a hashtable containing all the test methods.
+        testMethods = new Hashtable();
+        Method[] methods = getClass().getDeclaredMethods();
+        for( int i=0; i<methods.length; i++ ) {
+            if( methods[i].getName().startsWith("Test") 
+                || methods[i].getName().startsWith("test")) {
+                testMethods.put( methods[i].getName(), methods[i] );
+            }
+        }
+    }
+
+    private void _run() throws Exception {
+        writeTestName(getClass().getName());
+        params.indentLevel++;
+        int oldClassCount = params.errorCount;
+        int oldClassInvalidCount = params.invalidCount;
+
+        if (validate()) {
+                        
+            Enumeration methodsToRun;
+                
+            if (testsToRun != null && testsToRun.size() >= 1) {
+                methodsToRun = testsToRun.elements();
+            } else {
+                methodsToRun = testMethods.elements();
+            }
+
+            methodsToRun = new SortedEnumeration(methodsToRun,
+                                                 new Comparator() {
+                                                     public int compare(Object a, Object b) {
+                                                         return ((Method)a).getName().compareToIgnoreCase(
+                                                                                                          ((Method)b).getName());
+                                                     }
+                                                     public boolean equals(Object o) {
+                                                         return false;
+                                                     }
+                                                 });
+
+            // Run the list of tests given in the test arguments
+	    final Object[] NO_ARGS = new Object[0];
+            while (methodsToRun.hasMoreElements()) {
+                int oldCount = params.errorCount;
+                int oldInvalidCount = params.invalidCount;
+
+                Method testMethod = (Method)methodsToRun.nextElement();
+		String testName = testMethod.getName();
+
+                writeTestName(testName);
+
+		if (validateMethod(testName)) {
+		    try {
+			testMethod.invoke(this, NO_ARGS);
+		    } catch( IllegalAccessException e ) {
+			errln("Can't access test method " + testName);
+		    } catch( InvocationTargetException e ) {
+			errln("Uncaught exception \""+e+"\" thrown in test method "
+			      + testName);
+			e.getTargetException().printStackTrace(this.params.log);
+		    }
+		} else {
+		    params.invalidCount++;
+		}
+                writeTestResult(params.errorCount - oldCount, params.invalidCount - oldInvalidCount);
+            }
+        } else {
+            params.invalidCount++;
+        }
+        params.indentLevel--;
+
+        writeTestResult(params.errorCount - oldClassCount, params.invalidCount - oldClassInvalidCount);
+    }
+    
+    public void run(String[] args) throws Exception {
+        if (params == null) params = new TestParams();
+
+        // Parse the test arguments.  They can be either the flag
+        // "-verbose" or names of test methods. Create a list of
+        // tests to be run.
+	boolean printUsage = false;
+        testsToRun = new Vector(args.length);
+        for (int i = 0; i < args.length; i++) {
+            if (args[i].equals("-verbose") || args[i].equals("-v")) {
+                params.verbose = true;
+            }
+            else if (args[i].equals("-prompt")) {
+                params.prompt = true;
+            } else if (args[i].equals("-nothrow")) {
+                params.nothrow = true;
+	    } else if (args[i].equals("-describe")) {
+		params.describe = true;
+            } else if (args[i].startsWith("-e")) {
+                params.inclusion = (args[i].length() == 2) ? 5 : Integer.parseInt(args[i].substring(2));
+            } else if (args[i].toLowerCase().startsWith("-filter:")) {
+                params.filter = args[i].substring(8);
+            } else {
+                Object m = testMethods.get(args[i]);
+                if (m != null) {
+                    testsToRun.addElement(m);
+                } else {
+		    printUsage = true;
+                }
+            }
+        }
+	if (printUsage) {
+	    usage();
+	    return;
+	}
+
+        _run();
+
+        if (params.prompt) {
+            System.out.println("Hit RETURN to exit...");
+            try {
+                System.in.read();
+            } catch (IOException e) {
+                System.out.println("Exception: " + e.toString() + e.getMessage());
+            }
+        }
+        if (params.nothrow) {
+            System.exit(params.errorCount);
+        }
+    }
+
+    /**
+     * Return true if we can run this test (allows test to inspect jvm, environment, params before running)
+     */
+    protected boolean validate() {
+        return true;
+    }
+
+    protected String getDescription() {
+	return null;
+    }
+
+    protected boolean validateMethod(String name) {
+	return true;
+    }
+
+    protected String getMethodDescription(String name) {
+	return null;
+    }
+
+    protected void run(TestFmwk childTest) throws Exception {
+        run(new TestFmwk[] { childTest });
+    }
+
+    protected void run(TestFmwk[] tests) throws Exception {
+        for (int i=0; i<tests.length; ++i) {
+            tests[i].params = this.params;
+            params.indentLevel++;
+            tests[i]._run();
+            params.indentLevel--;
+        }
+    }
+
+    protected boolean isVerbose() {
+        return params.verbose;
+    }
+
+    /**
+     * 0 = fewest tests, 5 is normal build, 10 is most tests
+     */
+    public int getInclusion() {
+        return params.inclusion;
+    }
+
+    public boolean isQuick() {
+        return params.inclusion == 0;
+    }
+
+    public String getFilter() {
+        return params.filter;
+    }
+
+    /**
+     * Adds given string to the log if we are in verbose mode.
+     */
+    public void log( String message ) {
+        log(message, true, false);
+    }
+
+    public void logln( String message ) {
+        log(message + System.getProperty("line.separator"), true, false);
+    }
+
+    /**
+     * Add a given string to the log.
+     * @param message text to add
+     * @param pass if true and if in verbose mode, or if false, then add
+     * the text; otherwise suppress it
+     * @param incrementCount if pass if false and incrementCount is true,
+     * then increment the failure count; if pass is true, then this param
+     * is ignored
+     */
+    public void log( String message, boolean pass, boolean incrementCount ) {
+        if (!pass && incrementCount) {
+            params.errorCount++;
+        }
+
+        if (!pass || params.verbose) {
+            indent(params.indentLevel + 1);
+            params.log.print( message );
+            params.log.flush();
+        }
+
+        if (!pass && !params.nothrow) {
+            throw new RuntimeException(message);
+        }
+    }
+
+    public void logln( String message, boolean pass, boolean incrementCount ) {
+        log(message + System.getProperty("line.separator"), pass, incrementCount);
+    }
+
+    /**
+     * Convenience overloads
+     */
+    public void log( String message, boolean pass ) {
+        log(message, pass, true);
+    }
+
+    public void logln( String message, boolean pass ) {
+        logln(message, pass, true);
+    }
+
+    /**
+     * Report an error
+     */
+    public void err( String message ) {
+        log(message, false, true);
+    }
+
+    public void errln( String message ) {
+        logln(message, false, true);
+    }
+
+    protected int getErrorCount() {
+        return params.errorCount;
+    }
+
+    protected void writeTestName(String testName) {
+        indent(params.indentLevel);
+        params.log.print(testName);
+        params.log.flush();
+        params.needLineFeed = true;
+    }
+
+    protected void writeTestResult(int failCount, int invalidCount) {
+        if (!params.needLineFeed) {
+            indent(params.indentLevel);
+            params.log.print("}");
+        }
+        params.needLineFeed = false;
+
+        if (failCount != 0) {
+            params.log.println(" FAILED (" + failCount + " failures" +
+                               ((invalidCount != 0) ?
+                                ", " + invalidCount + " tests skipped)" :
+                                ")"));
+        } else if (invalidCount != 0) {
+            params.log.println(" Qualified (" + invalidCount + " tests skipped)");
+        } else {
+            params.log.println(" Passed");
+        }
+    }
+
+    private final void indent(int distance) {
+        if (params.needLineFeed) {
+            params.log.println(" {");
+            params.needLineFeed = false;
+        }
+        params.log.print(spaces.substring(0, distance * 2));
+    }
+
+    /**
+     * Print a usage message for this test class.
+     */
+    void usage() {
+        System.out.println(getClass().getName() +
+                           ": [-verbose] [-nothrow] [-prompt] [-describe] [test names]");
+
+        Enumeration methodNames = new SortedEnumeration(testMethods.keys(),
+                                                        new Comparator() {
+                                                            public int compare(Object a, Object b) {
+                                                                return ((String)a).compareToIgnoreCase(
+                                                                                                       ((String)b));
+                                                            }
+                                                            public boolean equals(Object o) {
+                                                                return false;
+                                                            }
+                                                        });
+	boolean valid = params.describe && validate();
+	if (valid) {
+	    String testDescription = getDescription();
+	    if (testDescription != null) {
+		System.out.println("-- " + testDescription);
+	    }
+	}
+        System.out.println("test names:");
+        while( methodNames.hasMoreElements() ) {
+	    String methodName = (String)methodNames.nextElement();
+            System.out.print("\t" + methodName );
+	    if (valid) {
+		String methodDescription = getMethodDescription(methodName);
+		if (methodDescription != null) {
+		    System.out.print(" -- " + methodDescription);
+		}
+	    }
+	    System.out.println();
+        }
+    }
+
+    public static String hex(char ch) {
+        StringBuffer result = new StringBuffer();
+        String foo = Integer.toString(ch,16).toUpperCase();
+        for (int i = foo.length(); i < 4; ++i) {
+            result.append('0');
+        }
+        return result + foo;
+    }
+    
+    public static String hex(int ch) {
+        StringBuffer result = new StringBuffer();
+        String foo = Integer.toString(ch,16).toUpperCase();
+        for (int i = foo.length(); i < 4; ++i) {
+            result.append('0');
+        }
+        return result + foo;
+    }
+
+    public static String hex(String s) {
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < s.length(); ++i) {
+            if (i != 0) result.append(',');
+            result.append(hex(s.charAt(i)));
+        }
+        return result.toString();
+    }
+
+    public static String hex(StringBuffer s) {
+        return hex(s.toString());
+    }
+
+    private static class ASCIIWriter extends PrintWriter {
+        private Writer w;
+        private StringBuffer buffer = new StringBuffer();
+        
+        // Characters that we think are printable but that escapeUnprintable
+        // doesn't
+        private static final UnicodeSet S =
+            new UnicodeSet("[\\u0009\\u000A\\u000D]");
+
+        public ASCIIWriter(Writer w, boolean autoFlush) {
+            super(w, autoFlush);
+        }
+
+        public ASCIIWriter(OutputStream os, boolean autoFlush) {
+            super(os, autoFlush);
+        }
+
+        public void write(int c) {
+            synchronized(lock) {
+                buffer.setLength(0);
+                if (!S.contains(c) && Utility.escapeUnprintable(buffer, c)) {
+                    super.write(buffer.toString());
+                } else {
+                    super.write(c);
+                }
+            }
+        }
+        
+        public void write(char[] buf, int off, int len) {
+            synchronized (lock) {
+                buffer.setLength(0);
+                int limit = off + len;
+                while (off < limit) {
+                    int c = UTF16.charAt(buf, 0, buf.length, off);
+                    off += UTF16.getCharCount(c);
+                    if (!S.contains(c) && Utility.escapeUnprintable(buffer, c)) {
+                        super.write(buffer.toString());
+                        buffer.setLength(0);
+                    } else {
+                        super.write(c);
+                    }
+                }
+            }
+        }
+    
+        public void write(String s, int off, int len) {
+            write(s.substring(off, off + len).toCharArray(), 0, len);
+        }
+    }
+
+    private static class TestParams {
+        public boolean   prompt = false;
+        public boolean   nothrow = false;
+        public boolean   verbose = false;
+	public boolean   describe = false;
+        public int      inclusion = 0;
+        public String    filter = null;
+
+        public PrintWriter log = new ASCIIWriter(System.out, true);
+        public int         indentLevel = 0;
+        public boolean     needLineFeed = false;
+        public int         errorCount = 0;
+        public int         invalidCount = 0;
+    }
+
+    private static class SortedEnumeration implements Enumeration {
+        private Object[] sorted;
+        private int pos;
+
+        public SortedEnumeration(Enumeration unsorted, Comparator c) {
+            Vector v = new Vector();
+            while (unsorted.hasMoreElements()) {
+                v.addElement(unsorted.nextElement());
+            }
+            sorted = new Object[v.size()];
+            v.copyInto(sorted);
+            java.util.Arrays.sort(sorted, c);
+            pos = 0;
+        }
+
+        public boolean hasMoreElements() {
+            return pos < sorted.length;
+        }
+
+        public Object nextElement() {
+            return pos < sorted.length ? sorted[pos++] : null;
+        }
+    }
+
+    private TestParams params = null;
+    private Hashtable testMethods;
+    private Vector testsToRun;
+    private final String spaces = "                                          ";
+}
diff --git a/src/com/ibm/icu/dev/test/TestLog.java b/src/com/ibm/icu/dev/test/TestLog.java
new file mode 100755
index 0000000..c1a88e8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestLog.java
@@ -0,0 +1,30 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/TestLog.java,v $
+ * $Date: 2002/08/13 22:02:16 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+public interface TestLog {
+
+    /**
+     * Adds given string to the log if we are in verbose mode.
+     */
+    void log(String message);
+
+    void logln(String message);
+
+    /**
+     * Report an error
+     */
+    void err(String message);
+
+    void errln(String message);
+}
diff --git a/src/com/ibm/icu/dev/test/TestUtil.java b/src/com/ibm/icu/dev/test/TestUtil.java
new file mode 100644
index 0000000..38dc0bc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestUtil.java
@@ -0,0 +1,85 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/TestUtil.java,v $
+ * $Date: 2002/08/13 22:02:16 $
+ * $Revision: 1.2 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+public class TestUtil {
+	/**
+	 * Standard path to the test data.
+	 */
+	public static final String DATA_PATH = "/src/com/ibm/icu/dev/data";
+
+	/**
+	 * Property for user-defined data path.
+	 */
+	public static final String DATA_PATH_PROPERTY = "ICUDataPath";
+
+	/**
+	 * Get path to test data.<p>
+	 * 
+	 * path is provided relative to the src path, however the user could 
+	 * set a system property to change the directory path.<br>
+	 */
+
+	public static final File getDataPathRoot() {
+		String s = System.getProperty(DATA_PATH_PROPERTY);
+		if (s == null) {
+			// assume user.dir is directly above src directory
+			s = System.getProperty("user.dir");
+			s = s + DATA_PATH;
+		}
+		
+		File f = new File(s);
+		if (!f.exists()) {
+			throw new InternalError("cannot find ICU data root '" + f.getAbsolutePath() + "', try definining " + DATA_PATH_PROPERTY);
+		}
+
+		return f;
+	}
+
+	/**
+	 * Return the data file at path 'name' rooted at the data path.
+	 * For example, <pre>getDataFile("unicode/UnicodeData.txt");</pre>
+	 */
+	public static final File getDataFile(String name) {
+		File f = new File(getDataPathRoot(), name);
+		if (!f.exists()) {
+			throw new InternalError("cannot find ICU data file '" + f.getAbsolutePath() + "'");
+		}
+
+		return f;
+	}
+
+	/**
+	 * Return a buffered reader on the data file at path 'name' rooted at the data path
+	 * with initial buffer size 'bufSize'.
+	 */
+	public static final BufferedReader getDataReader(String name, int bufSize) throws IOException {
+		File f = getDataFile(name);
+		FileReader fr = new FileReader(f);
+		BufferedReader br = new BufferedReader(fr, bufSize);
+		return br;
+	}
+
+	/**
+	 * Return a buffered reader on the data file at path 'name' rooted at the data path.
+	 */
+	public static final BufferedReader getDataReader(String name) throws IOException {
+		return getDataReader(name, 1024);
+	}
+
+}
diff --git a/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java b/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java
new file mode 100755
index 0000000..fce8933
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java
@@ -0,0 +1,5342 @@
+/* Generated from 'DiagBigDecimal.nrx' 27 Mar 2000 22:38:44 [v1.162] */
+/* Options: Binary Comments Crossref Format Java Logo Trace1 Verbose3 */
+package com.ibm.icu.dev.test.bigdec;
+import java.math.BigInteger;
+import com.ibm.icu.math.*;
+import com.ibm.icu.dev.test.TestFmwk;
+
+/* ------------------------------------------------------------------ */
+/* Decimal diagnostic tests                                       mfc */
+/* Copyright (c) IBM Corporation 1996, 2000.  All Rights Reserved.    */
+/* ------------------------------------------------------------------ */
+/* DiagBigDecimal                                                     */
+/*                                                                    */
+/*   A class that tests the BigDecimal and MathContext classes.       */
+/*                                                                    */
+/*   The tests here are derived from or cover the same paths as:      */
+/*      -- ANSI X3-274 testcases                                      */
+/*      -- Java JCK testcases                                         */
+/*      -- NetRexx testcases                                          */
+/*      -- VM/CMS S/370 REXX implementation testcases [1981+]         */
+/*      -- IBM Vienna Laboratory Rexx compiler testcases [1988+]      */
+/*      -- New testcases                                              */
+/*                                                                    */
+/*   The authoritative sources for how the underlying technology      */
+/*   (arithmetic) should work are:                                    */
+/*      -- for digits=0 (fixed point): java.math.BigDecimal           */
+/*      -- for digits>0 (floating point): ANSI X3.274-1996 + errata   */
+/*                                                                    */
+/* ------------------------------------------------------------------ */
+/* Change list                                                        */
+/* 1997.09.05 Initial implementation, from DiagRexx [NetRexx tests]   */
+/* 1998.05.02 0.07 changes (e.g., compareTo)                          */
+/* 1998.06.06 Rounding modes and format additions                     */
+/* 1998.06.25 Rename from DiagDecimal; make stand-alone [add          */
+/*            DiagException as a Minor class]                         */
+/* 1998.06.27 Start adding testcases for DIGITS=0/FORM=PLAIN cases    */
+/*            Reorganize for faster trace compilation                 */
+/* 1998.06.28 new: valueof, scale, movePointX, unscaledValue, etc.    */
+/* 1998.07.07 Scaled divide                                           */
+/* 1998.07.08 setScale                                                */
+/* 1998.07.15 new scaffolding (Minor Test class) -- see diagabs       */
+/* 1998.12.14 add toBigDecimal and BigDecimal(java.math.BigDecimal)   */
+/* 1999.02.04 number preparation rounds instead of digits+1 trunc     */
+/* 1999.02.09 format method now only has two signatures               */
+/* 1999.02.27 no longer use Rexx class or RexxIO class                */
+/* 1999.03.05 add MathContext tests                                   */
+/* 1999.03.05 update for 0.96 [no null settings, etc.]                */
+/*            drop sundry constructors; no blanks; char[] gets ints   */
+/*            drop sundry converters, add Exact converters            */
+/* 1999.05.27 additional tests for scaled arithmetic                  */
+/* 1999.06.29 additional tests for exponent overflows                 */
+/* 1999.07.03 add 'continue' option                                   */
+/* 1999.07.10 additional tests for scaled arithmetic                  */
+/* 1999.07.18 randomly-generated tests added for base operators       */
+/* 1999.10.28 weird intValueExact bad cases                           */
+/* 1999.12.21 multiplication fast path failure and edge cases         */
+/* 2000.01.01 copyright update                                        */
+/* 2000.03.26 cosmetic updates; add extra format() testcases          */
+/* 2000.03.27 1.00 move to com.ibm.icu.math package; open source release; */
+/*                 change to javadoc comments                         */
+/* ------------------------------------------------------------------ */
+
+// note BINARY for conversions checking
+
+
+
+
+/**
+ * The <code>DiagBigDecimal</code> class forms a standalone test suite
+ * for the <code>com.ibm.icu.math.BigDecimal</code> and
+ * <code>com.ibm.icu.math.MathContext</code> classes (or, by changing the
+ * <code>package</code> statement, other classes of the same names and
+ * definition in other packages).  It may also be used as a constructed
+ * object to embed the tests in an external test harness.
+ * <p>
+ * The tests are collected into <i>groups</i>, each corresponding to a
+ * tested method or a more general grouping.  By default, when run from
+ * the static {@link #main(java.lang.String[])} method, the run will end
+ * if any test fails in a group.  The <code>continue</code> argument may
+ * be specified to force the tests to run to completion.
+ * <p>
+ * Two minor (inner) classes are used; {@link
+ * DiagBigDecimal.DiagException} is used to signal the failure of a test
+ * group, and {@link DiagBigDecimal.Test}, a dependent minor class, is
+ * used to register tests so that a summary of failures (or success) can be
+ * presented as each group is completed.
+ *
+ * @see     com.ibm.icu.math.BigDecimal
+ * @see     com.ibm.icu.math.MathContext
+ * @version 1.00 2000.03.27
+ * @author  Mike Cowlishaw
+ */
+
+public class DiagBigDecimal extends TestFmwk{
+ private static final java.lang.String $0="DiagBigDecimal.nrx";
+ 
+ /* properties shared */
+ java.util.Vector Tests=new java.util.Vector(100); // scaffolding
+ 
+ /* properties private */
+ private int totalcount=0; // counts tests run
+ 
+ /* properties constant private */
+ 
+ /* Count of test groups */
+ private static final int testcount=38;
+ 
+ private static final com.ibm.icu.math.BigDecimal zero=com.ibm.icu.math.BigDecimal.ZERO;
+ private static final com.ibm.icu.math.BigDecimal one=com.ibm.icu.math.BigDecimal.ONE;
+ private static final com.ibm.icu.math.BigDecimal two=new com.ibm.icu.math.BigDecimal(2);
+ private static final com.ibm.icu.math.BigDecimal ten=com.ibm.icu.math.BigDecimal.TEN;
+ private static final com.ibm.icu.math.BigDecimal tenlong=new com.ibm.icu.math.BigDecimal((long)1234554321); // 10-digiter
+ 
+ /* Some context objects -- [some of these are checked later] */
+ private static final com.ibm.icu.math.MathContext mcdef=com.ibm.icu.math.MathContext.DEFAULT;
+ private static final com.ibm.icu.math.MathContext mc3=new com.ibm.icu.math.MathContext(3);
+ private static final com.ibm.icu.math.MathContext mc6=new com.ibm.icu.math.MathContext(6);
+ private static final com.ibm.icu.math.MathContext mc9=new com.ibm.icu.math.MathContext(9);
+ private static final com.ibm.icu.math.MathContext mc50=new com.ibm.icu.math.MathContext(50);
+ private static final com.ibm.icu.math.MathContext mcs=new com.ibm.icu.math.MathContext(9,com.ibm.icu.math.MathContext.SCIENTIFIC);
+ private static final com.ibm.icu.math.MathContext mce=new com.ibm.icu.math.MathContext(9,com.ibm.icu.math.MathContext.ENGINEERING);
+ private static final com.ibm.icu.math.MathContext mcld=new com.ibm.icu.math.MathContext(9,com.ibm.icu.math.MathContext.SCIENTIFIC,true); // lost digits
+ private static final com.ibm.icu.math.MathContext mcld0=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.SCIENTIFIC,true); // lost digits, digits=0
+ private static final com.ibm.icu.math.MathContext mcfd=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN); // fixed decimal style
+ 
+ /* boundary primitive values */
+ private static final byte bmin=-128;
+ private static final byte bmax=127;
+ private static final byte bzer=0;
+ private static final byte bneg=-1;
+ private static final byte bpos=1;
+ private static final int imin=-2147483648;
+ private static final int imax=2147483647;
+ private static final int izer=0;
+ private static final int ineg=-1;
+ private static final int ipos=1;
+ private static final long lmin=-9223372036854775808L;
+ private static final long lmax=9223372036854775807L;
+ private static final long lzer=(long)0;
+ private static final long lneg=(long)-1;
+ private static final long lpos=(long)1;
+ private static final short smin=-32768;
+ private static final short smax=32767;
+ private static final short szer=(short)0;
+ private static final short sneg=(short)(-1);
+ private static final short spos=(short)1;
+ 
+ 
+ /* properties constant private unused */ // present but not referenced
+ private static final java.lang.String copyright=" Copyright (c) IBM Corporation 1996, 2000.  All rights reserved. ";
+
+ 
+ /** Constructs a <code>DiagBigDecimal</code> test suite.
+   * <p>
+   * Invoke its {@link #diagrun} method to run the tests.
+   */
+ 
+ public DiagBigDecimal(){super();
+  return;
+  }
+
+ /** Run the tests in the test suite.
+  *
+  * @param isContinue The <code>boolean</code> which determines whether
+  *                   to stop running after a group fails.  If 1 (true)
+  *                   then the tests should be run to completion if
+  *                   possible; if 0 (false) then the run will end if a
+  *                   group fails.
+  * @return an <code>int</code> which is 0 if all tests were
+  * successful, >0 (the count of failures) if some failures were
+  * detected, or <0 if an unexpected Exception was signalled.
+  */
+ 
+ public int diagrun(boolean isContinue){
+  int fails;
+  int num=0;
+  DiagException de=null;
+  java.lang.RuntimeException e=null;
+  java.lang.String rest=null;
+  
+  fails=0; // count of failures
+  try{num=1;num:for(;num<=testcount;num++){ // [testcount is constant set above]
+   try{
+    dotest(num);
+   }
+   catch (DiagException $1){de=$1;
+    say();
+    errln("**** Failed:"+" "+de.getMessage()+" "+"****");
+    say();
+    fails=fails+de.failcount;
+    if ((!isContinue)) 
+     break num;
+   }
+   }
+  }
+  catch (java.lang.RuntimeException $2){e=$2; // any other exception is total failure; just show trace and quit
+   say();
+   errln("**** Failed: unexpected exception ****");
+   e.printStackTrace();
+   return -1;
+  }/*num*/
+  
+  if (fails==0) 
+   say("--- All OK ---"+" "+right("["+totalcount+" "+"tests]",15));
+  else 
+   {
+    if (isContinue) 
+     {
+      if (fails>1) 
+       rest="tests";
+      else 
+       rest="test";
+      say("--- All run ---"+" "+right("["+totalcount+" "+"tests,",14)+" "+"failed"+" "+fails+" "+rest+"]");
+     
+     }
+   }
+  
+  return fails;
+  }
+
+ /* Run test by number -- method for development/private switching */
+ 
+ private void dotest(int num){
+  {/*select*/switch(num){
+   /* -------------------------------------------------------------- */
+   /* MathContext                                                    */
+   /* -------------------------------------------------------------- */
+  case 1:
+   diagmathcontext();break;
+   
+   /* -------------------------------------------------------------- */
+   /* Constructors                                                   */
+   /* -------------------------------------------------------------- */
+  case 2:
+   diagconstructors();break;
+   
+   /* -------------------------------------------------------------- */
+   /* Operator methods                                               */
+   /* -------------------------------------------------------------- */
+  case 3:
+   diagabs();break;
+  case 4:
+   diagadd();break;
+  case 5:
+   diagcompareto();break;
+  case 6:
+   diagdivide();break;
+  case 7:
+   diagdivideInteger();break;
+  case 8:
+   diagmax();break;
+  case 9:
+   diagmin();break;
+  case 10:
+   diagmultiply();break;
+  case 11:
+   diagnegate();break;
+  case 12:
+   diagplus();break;
+  case 13:
+   diagpow();break;
+  case 14:
+   diagremainder();break;
+  case 15:
+   diagsubtract();break;
+  case 16:
+   diagmath();break; // general math
+   
+   /* -------------------------------------------------------------- */
+   /* Other methods                                                  */
+   /* -------------------------------------------------------------- */
+  case 17:
+   diagbyteValue();break;
+  case 18:
+   diagcomparetoObj();break;
+  case 19:
+   diagdoublevalue();break;
+  case 20:
+   diagequals();break;
+  case 21:
+   diagfloatvalue();break;
+  case 22:
+   diagformat();break;
+  case 23:
+   diaghashcode();break;
+  case 24:
+   diagintvalue();break;
+  case 25:
+   diaglongvalue();break;
+  case 26:
+   diagmovepointleft();break;
+  case 27:
+   diagmovepointright();break;
+  case 28:
+   diagscale();break;
+  case 29:
+   diagsetscale();break;
+  case 30:
+   diagshortvalue();break;
+  case 31:
+   diagsignum();break;
+  case 32:
+   diagtobigdecimal();break;
+  case 33:
+   diagtobiginteger();break;
+  case 34:
+   diagtochararray();break;
+  case 35:
+   diagtostring();break;
+  case 36:
+   diagunscaledvalue();break;
+  case 37:
+   diagvalueof();break;
+   
+   /* -------------------------------------------------------------- */
+   /* Mutation test [must be the last test]                          */
+   /* -------------------------------------------------------------- */
+  case 38:
+   diagmutation();break;
+   // if any more, increase testcount above
+  default:{
+   say("*** dotest case not found:"+" "+num+" "+"***");
+  }}
+  }
+  return;
+  }
+
+ /*--------------------------------------------------------------------*/
+ /* Diagnostic group methods                                           */
+ /*--------------------------------------------------------------------*/
+ 
+ /** Test constructors (and {@link #toString()} for equalities). */
+ 
+ public void diagconstructors(){
+  boolean flag=false;
+  java.lang.String num;
+  java.math.BigInteger bip;
+  java.math.BigInteger biz;
+  java.math.BigInteger bin;
+  com.ibm.icu.math.BigDecimal bda;
+  com.ibm.icu.math.BigDecimal bdb;
+  com.ibm.icu.math.BigDecimal bmc;
+  com.ibm.icu.math.BigDecimal bmd;
+  com.ibm.icu.math.BigDecimal bme;
+  java.lang.RuntimeException e=null;
+  char ca[];
+  double dzer;
+  double dpos;
+  double dneg;
+  double dpos5;
+  double dneg5;
+  double dmin;
+  double dmax;
+  double d;
+  java.lang.String badstrings[];
+  int i=0;
+  
+  // constants [statically-called constructors]
+  (new Test("con001")).ok=(com.ibm.icu.math.BigDecimal.ZERO.toString()).equals("0");
+  (new Test("con002")).ok=(com.ibm.icu.math.BigDecimal.ONE.toString()).equals("1");
+  (new Test("con003")).ok=(com.ibm.icu.math.BigDecimal.TEN.toString()).equals("10");
+  (new Test("con004")).ok=(com.ibm.icu.math.BigDecimal.ZERO.intValueExact())==0;
+  (new Test("con005")).ok=(com.ibm.icu.math.BigDecimal.ONE.intValueExact())==1;
+  (new Test("con006")).ok=(com.ibm.icu.math.BigDecimal.TEN.intValueExact())==10;
+  
+  // [java.math.] BigDecimal
+  (new Test("cbd001")).ok=((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("0"))).toString()).equals("0");
+  (new Test("cbd002")).ok=((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("1"))).toString()).equals("1");
+  (new Test("cbd003")).ok=((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10"))).toString()).equals("10");
+  (new Test("cbd004")).ok=((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("1000"))).toString()).equals("1000");
+  (new Test("cbd005")).ok=((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10.0"))).toString()).equals("10.0");
+  (new Test("cbd006")).ok=((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10.1"))).toString()).equals("10.1");
+  (new Test("cbd007")).ok=((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("-1.1"))).toString()).equals("-1.1");
+  (new Test("cbd008")).ok=((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("-9.0"))).toString()).equals("-9.0");
+  (new Test("cbd009")).ok=((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("0.9"))).toString()).equals("0.9");
+  
+  num="123456789.123456789";
+  (new Test("cbd010")).ok=((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
+  num="123456789.000000000";
+  (new Test("cbd011")).ok=((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
+  num="123456789000000000";
+  (new Test("cbd012")).ok=((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
+  num="0.00000123456789";
+  (new Test("cbd013")).ok=((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
+  num="0.000000123456789";
+  (new Test("cbd014")).ok=((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
+  
+  try{checknull:do{
+   new com.ibm.icu.math.BigDecimal((java.math.BigDecimal)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $3){
+   flag=true;
+  }/*checknull*/
+  (new Test("cbi015")).ok=flag;
+  
+  // BigInteger
+  bip=new BigInteger("987654321987654321987654321"); // biggie +ve
+  biz=new BigInteger("0"); // biggie 0
+  bin=new BigInteger("-12345678998765432112345678"); // biggie -ve
+  (new Test("cbi001")).ok=((new com.ibm.icu.math.BigDecimal(bip)).toString()).equals(bip.toString());
+  (new Test("cbi002")).ok=((new com.ibm.icu.math.BigDecimal(biz)).toString()).equals("0");
+  (new Test("cbi003")).ok=((new com.ibm.icu.math.BigDecimal(bin)).toString()).equals(bin.toString());
+  try{checknull:do{
+   new com.ibm.icu.math.BigDecimal((java.math.BigInteger)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $4){
+   flag=true;
+  }/*checknull*/
+  (new Test("cbi004")).ok=flag;
+  
+  // BigInteger with scale
+  bip=new BigInteger("123456789"); // bigish
+  bda=new com.ibm.icu.math.BigDecimal(bip);
+  bdb=new com.ibm.icu.math.BigDecimal(bip,5);
+  bmc=new com.ibm.icu.math.BigDecimal(bip,15);
+  (new Test("cbs001")).ok=(bda.toString()).equals("123456789");
+  (new Test("cbs002")).ok=(bdb.toString()).equals("1234.56789");
+  (new Test("cbs003")).ok=(bmc.toString()).equals("0.000000123456789");
+  bip=new BigInteger("123456789123456789123456789"); // biggie
+  bda=new com.ibm.icu.math.BigDecimal(bip);
+  bdb=new com.ibm.icu.math.BigDecimal(bip,7);
+  bmc=new com.ibm.icu.math.BigDecimal(bip,13);
+  bmd=new com.ibm.icu.math.BigDecimal(bip,19);
+  bme=new com.ibm.icu.math.BigDecimal(bip,29);
+  (new Test("cbs011")).ok=(bda.toString()).equals("123456789123456789123456789");
+  (new Test("cbs012")).ok=(bdb.toString()).equals("12345678912345678912.3456789");
+  (new Test("cbs013")).ok=(bmc.toString()).equals("12345678912345.6789123456789");
+  (new Test("cbs014")).ok=(bmd.toString()).equals("12345678.9123456789123456789");
+  (new Test("cbs015")).ok=(bme.toString()).equals("0.00123456789123456789123456789");
+  try{checknull:do{
+   new com.ibm.icu.math.BigDecimal((java.math.BigInteger)null,1);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $5){
+   flag=true;
+  }/*checknull*/
+  (new Test("cbs004")).ok=flag;
+  try{checkscale:do{
+   new com.ibm.icu.math.BigDecimal(bip,-8);
+   flag=false;
+  }while(false);}
+  catch (java.lang.RuntimeException $6){e=$6;
+   flag=(e.getMessage()).equals("Negative scale: -8");
+  }/*checkscale*/
+  (new Test("cbs005")).ok=flag;
+  
+  // char[]
+  // We just test it's there
+  // Functionality is tested by BigDecimal(String).
+  ca=("123.45").toCharArray();
+  (new Test("cca001")).ok=((new com.ibm.icu.math.BigDecimal(ca)).toString()).equals("123.45");
+  try{checknull:do{
+   new com.ibm.icu.math.BigDecimal((char[])null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $7){
+   flag=true;
+  }/*checknull*/
+  (new Test("cca010")).ok=flag;
+  
+  // char[],int,int
+  // We just test it's there, and that offsets work.
+  // Functionality is tested by BigDecimal(String).
+  ca=("123.45").toCharArray();
+  (new Test("cca101")).ok=((new com.ibm.icu.math.BigDecimal(ca,0,6)).toString()).equals("123.45");
+  (new Test("cca102")).ok=((new com.ibm.icu.math.BigDecimal(ca,1,5)).toString()).equals("23.45");
+  (new Test("cca103")).ok=((new com.ibm.icu.math.BigDecimal(ca,2,4)).toString()).equals("3.45");
+  (new Test("cca104")).ok=((new com.ibm.icu.math.BigDecimal(ca,3,3)).toString()).equals("0.45");
+  (new Test("cca105")).ok=((new com.ibm.icu.math.BigDecimal(ca,4,2)).toString()).equals("45");
+  (new Test("cca106")).ok=((new com.ibm.icu.math.BigDecimal(ca,5,1)).toString()).equals("5");
+  
+  (new Test("cca110")).ok=((new com.ibm.icu.math.BigDecimal(ca,0,1)).toString()).equals("1");
+  (new Test("cca111")).ok=((new com.ibm.icu.math.BigDecimal(ca,1,1)).toString()).equals("2");
+  (new Test("cca112")).ok=((new com.ibm.icu.math.BigDecimal(ca,2,1)).toString()).equals("3");
+  (new Test("cca113")).ok=((new com.ibm.icu.math.BigDecimal(ca,4,1)).toString()).equals("4");
+  
+  (new Test("cca120")).ok=((new com.ibm.icu.math.BigDecimal(ca,0,2)).toString()).equals("12");
+  (new Test("cca121")).ok=((new com.ibm.icu.math.BigDecimal(ca,1,2)).toString()).equals("23");
+  (new Test("cca122")).ok=((new com.ibm.icu.math.BigDecimal(ca,2,2)).toString()).equals("3");
+  (new Test("cca123")).ok=((new com.ibm.icu.math.BigDecimal(ca,3,2)).toString()).equals("0.4");
+  
+  (new Test("cca130")).ok=((new com.ibm.icu.math.BigDecimal(ca,0,3)).toString()).equals("123");
+  (new Test("cca131")).ok=((new com.ibm.icu.math.BigDecimal(ca,1,3)).toString()).equals("23");
+  (new Test("cca132")).ok=((new com.ibm.icu.math.BigDecimal(ca,2,3)).toString()).equals("3.4");
+  
+  (new Test("cca140")).ok=((new com.ibm.icu.math.BigDecimal(ca,0,4)).toString()).equals("123");
+  (new Test("cca141")).ok=((new com.ibm.icu.math.BigDecimal(ca,1,4)).toString()).equals("23.4");
+  
+  (new Test("cca150")).ok=((new com.ibm.icu.math.BigDecimal(ca,0,5)).toString()).equals("123.4");
+  
+  // a couple of oddies
+  ca=("x23.4x").toCharArray();
+  (new Test("cca160")).ok=((new com.ibm.icu.math.BigDecimal(ca,1,4)).toString()).equals("23.4");
+  (new Test("cca161")).ok=((new com.ibm.icu.math.BigDecimal(ca,1,1)).toString()).equals("2");
+  (new Test("cca162")).ok=((new com.ibm.icu.math.BigDecimal(ca,4,1)).toString()).equals("4");
+  
+  ca=("0123456789.9876543210").toCharArray();
+  (new Test("cca163")).ok=((new com.ibm.icu.math.BigDecimal(ca,0,21)).toString()).equals("123456789.9876543210");
+  (new Test("cca164")).ok=((new com.ibm.icu.math.BigDecimal(ca,1,20)).toString()).equals("123456789.9876543210");
+  (new Test("cca165")).ok=((new com.ibm.icu.math.BigDecimal(ca,2,19)).toString()).equals("23456789.9876543210");
+  (new Test("cca166")).ok=((new com.ibm.icu.math.BigDecimal(ca,2,18)).toString()).equals("23456789.987654321");
+  (new Test("cca167")).ok=((new com.ibm.icu.math.BigDecimal(ca,2,17)).toString()).equals("23456789.98765432");
+  (new Test("cca168")).ok=((new com.ibm.icu.math.BigDecimal(ca,2,16)).toString()).equals("23456789.9876543");
+  
+  try{checknull:do{
+   new com.ibm.icu.math.BigDecimal((char[])null,0,1);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $8){
+   flag=true;
+  }/*checknull*/
+  (new Test("cca200")).ok=flag;
+  
+  try{checklen:do{
+   new com.ibm.icu.math.BigDecimal("123".toCharArray(),0,0);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NumberFormatException $9){
+   flag=true;
+  }/*checklen*/
+  (new Test("cca201")).ok=flag;
+  
+  try{checkbound:do{
+   new com.ibm.icu.math.BigDecimal("123".toCharArray(),2,4);
+   flag=false;
+  }while(false);}
+  catch (java.lang.RuntimeException $10){ // anything OK
+   flag=true;
+  }/*checkbound*/
+  (new Test("cca202")).ok=flag;
+  try{checkbound2:do{
+   new com.ibm.icu.math.BigDecimal("123".toCharArray(),-1,2);
+   flag=false;
+  }while(false);}
+  catch (java.lang.RuntimeException $11){ // anything OK
+   flag=true;
+  }/*checkbound2*/
+  (new Test("cca203")).ok=flag;
+  try{checkbound3:do{
+   new com.ibm.icu.math.BigDecimal("123".toCharArray(),1,-2);
+   flag=false;
+  }while(false);}
+  catch (java.lang.RuntimeException $12){ // anything OK
+   flag=true;
+  }/*checkbound3*/
+  (new Test("cca204")).ok=flag;
+  
+  // double [deprecated]
+  // Note that many of these differ from the valueOf(double) results.
+  dzer=(double)0;
+  dpos=(double)1;
+  dpos=dpos/((double)10);
+  dneg=(double)-dpos;
+  (new Test("cdo001")).ok=((new com.ibm.icu.math.BigDecimal(dneg)).toString()).equals("-0.1000000000000000055511151231257827021181583404541015625");
+  
+  (new Test("cdo002")).ok=((new com.ibm.icu.math.BigDecimal(dzer)).toString()).equals("0"); // NB, not '0.0'
+  (new Test("cdo003")).ok=((new com.ibm.icu.math.BigDecimal(dpos)).toString()).equals("0.1000000000000000055511151231257827021181583404541015625");
+  
+  dpos5=(double)0.5D;
+  dneg5=(double)-dpos5;
+  (new Test("cdo004")).ok=((new com.ibm.icu.math.BigDecimal(dneg5)).toString()).equals("-0.5");
+  (new Test("cdo005")).ok=((new com.ibm.icu.math.BigDecimal(dpos5)).toString()).equals("0.5");
+  dmin=java.lang.Double.MIN_VALUE;
+  dmax=java.lang.Double.MAX_VALUE;
+  (new Test("cdo006")).ok=((new com.ibm.icu.math.BigDecimal(dmin)).toString()).equals("0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625");
+  
+  (new Test("cdo007")).ok=((new com.ibm.icu.math.BigDecimal(dmax)).toString()).equals("179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368");
+  
+  
+  // nasties
+  d=(double)9;
+  d=d/((double)10);
+  (new Test("cdo010")).ok=((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.90000000000000002220446049250313080847263336181640625");
+  
+  d=d/((double)10);
+  (new Test("cdo011")).ok=((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.0899999999999999966693309261245303787291049957275390625");
+  
+  d=d/((double)10);
+  (new Test("cdo012")).ok=((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00899999999999999931998839741709161899052560329437255859375");
+  
+  d=d/((double)10);
+  (new Test("cdo013")).ok=((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00089999999999999997536692664112933925935067236423492431640625");
+  
+  d=d/((double)10);
+  (new Test("cdo014")).ok=((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00008999999999999999211568180168541175589780323207378387451171875");
+  
+  d=d/((double)10);
+  (new Test("cdo015")).ok=((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00000899999999999999853394182236510090433512232266366481781005859375");
+  
+  d=d/((double)10);
+  (new Test("cdo016")).ok=((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.000000899999999999999853394182236510090433512232266366481781005859375");
+  
+  d=d/((double)10);
+  (new Test("cdo017")).ok=((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.0000000899999999999999853394182236510090433512232266366481781005859375");
+  
+  d=d/((double)10);
+  (new Test("cdo018")).ok=((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.000000008999999999999997872197332322678764437995369007694534957408905029296875");
+  
+  
+  try{checkpin:do{
+   new com.ibm.icu.math.BigDecimal(java.lang.Double.POSITIVE_INFINITY);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NumberFormatException $13){
+   flag=true;
+  }/*checkpin*/
+  (new Test("cdo101")).ok=flag;
+  try{checknin:do{
+   new com.ibm.icu.math.BigDecimal(java.lang.Double.NEGATIVE_INFINITY);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NumberFormatException $14){
+   flag=true;
+  }/*checknin*/
+  (new Test("cdo102")).ok=flag;
+  try{checknan:do{
+   new com.ibm.icu.math.BigDecimal(java.lang.Double.NaN);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NumberFormatException $15){
+   flag=true;
+  }/*checknan*/
+  (new Test("cdo103")).ok=flag;
+  
+  // int
+  (new Test("cin001")).ok=((new com.ibm.icu.math.BigDecimal(imin)).toString()).equals("-2147483648");
+  (new Test("cin002")).ok=((new com.ibm.icu.math.BigDecimal(imax)).toString()).equals("2147483647");
+  (new Test("cin003")).ok=((new com.ibm.icu.math.BigDecimal(ineg)).toString()).equals("-1");
+  (new Test("cin004")).ok=((new com.ibm.icu.math.BigDecimal(izer)).toString()).equals("0");
+  (new Test("cin005")).ok=((new com.ibm.icu.math.BigDecimal(ipos)).toString()).equals("1");
+  (new Test("cin006")).ok=((new com.ibm.icu.math.BigDecimal(10)).toString()).equals("10");
+  (new Test("cin007")).ok=((new com.ibm.icu.math.BigDecimal(9)).toString()).equals("9");
+  (new Test("cin008")).ok=((new com.ibm.icu.math.BigDecimal(5)).toString()).equals("5");
+  (new Test("cin009")).ok=((new com.ibm.icu.math.BigDecimal(2)).toString()).equals("2");
+  (new Test("cin010")).ok=((new com.ibm.icu.math.BigDecimal(-2)).toString()).equals("-2");
+  (new Test("cin011")).ok=((new com.ibm.icu.math.BigDecimal(-5)).toString()).equals("-5");
+  (new Test("cin012")).ok=((new com.ibm.icu.math.BigDecimal(-9)).toString()).equals("-9");
+  (new Test("cin013")).ok=((new com.ibm.icu.math.BigDecimal(-10)).toString()).equals("-10");
+  (new Test("cin014")).ok=((new com.ibm.icu.math.BigDecimal(-11)).toString()).equals("-11");
+  (new Test("cin015")).ok=((new com.ibm.icu.math.BigDecimal(-99)).toString()).equals("-99");
+  (new Test("cin016")).ok=((new com.ibm.icu.math.BigDecimal(-100)).toString()).equals("-100");
+  (new Test("cin017")).ok=((new com.ibm.icu.math.BigDecimal(-999)).toString()).equals("-999");
+  (new Test("cin018")).ok=((new com.ibm.icu.math.BigDecimal(-1000)).toString()).equals("-1000");
+  
+  (new Test("cin019")).ok=((new com.ibm.icu.math.BigDecimal(11)).toString()).equals("11");
+  (new Test("cin020")).ok=((new com.ibm.icu.math.BigDecimal(99)).toString()).equals("99");
+  (new Test("cin021")).ok=((new com.ibm.icu.math.BigDecimal(100)).toString()).equals("100");
+  (new Test("cin022")).ok=((new com.ibm.icu.math.BigDecimal(999)).toString()).equals("999");
+  (new Test("cin023")).ok=((new com.ibm.icu.math.BigDecimal(1000)).toString()).equals("1000");
+  
+  // long
+  (new Test("clo001")).ok=((new com.ibm.icu.math.BigDecimal(lmin)).toString()).equals("-9223372036854775808");
+  (new Test("clo002")).ok=((new com.ibm.icu.math.BigDecimal(lmax)).toString()).equals("9223372036854775807");
+  (new Test("clo003")).ok=((new com.ibm.icu.math.BigDecimal(lneg)).toString()).equals("-1");
+  (new Test("clo004")).ok=((new com.ibm.icu.math.BigDecimal(lzer)).toString()).equals("0");
+  (new Test("clo005")).ok=((new com.ibm.icu.math.BigDecimal(lpos)).toString()).equals("1");
+  
+  // String [many more examples are elsewhere]
+  // strings without E cannot generate E in result
+  (new Test("cst001")).ok=((new com.ibm.icu.math.BigDecimal("12")).toString()).equals("12");
+  (new Test("cst002")).ok=((new com.ibm.icu.math.BigDecimal("-76")).toString()).equals("-76");
+  (new Test("cst003")).ok=((new com.ibm.icu.math.BigDecimal("12.76")).toString()).equals("12.76");
+  (new Test("cst004")).ok=((new com.ibm.icu.math.BigDecimal("+12.76")).toString()).equals("12.76");
+  (new Test("cst005")).ok=((new com.ibm.icu.math.BigDecimal("012.76")).toString()).equals("12.76");
+  (new Test("cst006")).ok=((new com.ibm.icu.math.BigDecimal("+0.003")).toString()).equals("0.003");
+  (new Test("cst007")).ok=((new com.ibm.icu.math.BigDecimal("17.")).toString()).equals("17");
+  (new Test("cst008")).ok=((new com.ibm.icu.math.BigDecimal(".5")).toString()).equals("0.5");
+  (new Test("cst009")).ok=((new com.ibm.icu.math.BigDecimal("044")).toString()).equals("44");
+  (new Test("cst010")).ok=((new com.ibm.icu.math.BigDecimal("0044")).toString()).equals("44");
+  (new Test("cst011")).ok=((new com.ibm.icu.math.BigDecimal("0.0005")).toString()).equals("0.0005");
+  (new Test("cst012")).ok=((new com.ibm.icu.math.BigDecimal("00.00005")).toString()).equals("0.00005");
+  (new Test("cst013")).ok=((new com.ibm.icu.math.BigDecimal("0.000005")).toString()).equals("0.000005");
+  (new Test("cst014")).ok=((new com.ibm.icu.math.BigDecimal("0.0000005")).toString()).equals("0.0000005"); // \NR
+  (new Test("cst015")).ok=((new com.ibm.icu.math.BigDecimal("0.00000005")).toString()).equals("0.00000005"); // \NR
+  (new Test("cst016")).ok=((new com.ibm.icu.math.BigDecimal("12345678.876543210")).toString()).equals("12345678.876543210");
+  (new Test("cst017")).ok=((new com.ibm.icu.math.BigDecimal("2345678.876543210")).toString()).equals("2345678.876543210");
+  (new Test("cst018")).ok=((new com.ibm.icu.math.BigDecimal("345678.876543210")).toString()).equals("345678.876543210");
+  (new Test("cst019")).ok=((new com.ibm.icu.math.BigDecimal("0345678.87654321")).toString()).equals("345678.87654321");
+  (new Test("cst020")).ok=((new com.ibm.icu.math.BigDecimal("345678.8765432")).toString()).equals("345678.8765432");
+  (new Test("cst021")).ok=((new com.ibm.icu.math.BigDecimal("+345678.8765432")).toString()).equals("345678.8765432");
+  (new Test("cst022")).ok=((new com.ibm.icu.math.BigDecimal("+0345678.8765432")).toString()).equals("345678.8765432");
+  (new Test("cst023")).ok=((new com.ibm.icu.math.BigDecimal("+00345678.8765432")).toString()).equals("345678.8765432");
+  (new Test("cst024")).ok=((new com.ibm.icu.math.BigDecimal("-345678.8765432")).toString()).equals("-345678.8765432");
+  (new Test("cst025")).ok=((new com.ibm.icu.math.BigDecimal("-0345678.8765432")).toString()).equals("-345678.8765432");
+  (new Test("cst026")).ok=((new com.ibm.icu.math.BigDecimal("-00345678.8765432")).toString()).equals("-345678.8765432");
+  
+  // exotics --
+  (new Test("cst035")).ok=((new com.ibm.icu.math.BigDecimal("\u0e57.\u0e50")).toString()).equals("7.0");
+  (new Test("cst036")).ok=((new com.ibm.icu.math.BigDecimal("\u0b66.\u0b67")).toString()).equals("0.1");
+  (new Test("cst037")).ok=((new com.ibm.icu.math.BigDecimal("\u0b66\u0b66")).toString()).equals("0");
+  (new Test("cst038")).ok=((new com.ibm.icu.math.BigDecimal("\u0b6a\u0b66")).toString()).equals("40");
+  
+  // strings with E
+  (new Test("cst040")).ok=((new com.ibm.icu.math.BigDecimal("1E+9")).toString()).equals("1E+9");
+  (new Test("cst041")).ok=((new com.ibm.icu.math.BigDecimal("1e+09")).toString()).equals("1E+9");
+  (new Test("cst042")).ok=((new com.ibm.icu.math.BigDecimal("1E+90")).toString()).equals("1E+90");
+  (new Test("cst043")).ok=((new com.ibm.icu.math.BigDecimal("+1E+009")).toString()).equals("1E+9");
+  (new Test("cst044")).ok=((new com.ibm.icu.math.BigDecimal("0E+9")).toString()).equals("0");
+  (new Test("cst045")).ok=((new com.ibm.icu.math.BigDecimal("1E+9")).toString()).equals("1E+9");
+  (new Test("cst046")).ok=((new com.ibm.icu.math.BigDecimal("1E+09")).toString()).equals("1E+9");
+  (new Test("cst047")).ok=((new com.ibm.icu.math.BigDecimal("1e+90")).toString()).equals("1E+90");
+  (new Test("cst048")).ok=((new com.ibm.icu.math.BigDecimal("1E+009")).toString()).equals("1E+9");
+  (new Test("cst049")).ok=((new com.ibm.icu.math.BigDecimal("0E+9")).toString()).equals("0");
+  (new Test("cst050")).ok=((new com.ibm.icu.math.BigDecimal("1E9")).toString()).equals("1E+9");
+  (new Test("cst051")).ok=((new com.ibm.icu.math.BigDecimal("1e09")).toString()).equals("1E+9");
+  (new Test("cst052")).ok=((new com.ibm.icu.math.BigDecimal("1E90")).toString()).equals("1E+90");
+  (new Test("cst053")).ok=((new com.ibm.icu.math.BigDecimal("1E009")).toString()).equals("1E+9");
+  (new Test("cst054")).ok=((new com.ibm.icu.math.BigDecimal("0E9")).toString()).equals("0");
+  (new Test("cst055")).ok=((new com.ibm.icu.math.BigDecimal("0.000e+0")).toString()).equals("0");
+  (new Test("cst056")).ok=((new com.ibm.icu.math.BigDecimal("0.000E-1")).toString()).equals("0");
+  (new Test("cst057")).ok=((new com.ibm.icu.math.BigDecimal("4E+9")).toString()).equals("4E+9");
+  (new Test("cst058")).ok=((new com.ibm.icu.math.BigDecimal("44E+9")).toString()).equals("4.4E+10");
+  (new Test("cst059")).ok=((new com.ibm.icu.math.BigDecimal("0.73e-7")).toString()).equals("7.3E-8");
+  (new Test("cst060")).ok=((new com.ibm.icu.math.BigDecimal("00E+9")).toString()).equals("0");
+  (new Test("cst061")).ok=((new com.ibm.icu.math.BigDecimal("00E-9")).toString()).equals("0");
+  (new Test("cst062")).ok=((new com.ibm.icu.math.BigDecimal("10E+9")).toString()).equals("1.0E+10");
+  (new Test("cst063")).ok=((new com.ibm.icu.math.BigDecimal("10E+09")).toString()).equals("1.0E+10");
+  (new Test("cst064")).ok=((new com.ibm.icu.math.BigDecimal("10e+90")).toString()).equals("1.0E+91");
+  (new Test("cst065")).ok=((new com.ibm.icu.math.BigDecimal("10E+009")).toString()).equals("1.0E+10");
+  (new Test("cst066")).ok=((new com.ibm.icu.math.BigDecimal("100e+9")).toString()).equals("1.00E+11");
+  (new Test("cst067")).ok=((new com.ibm.icu.math.BigDecimal("100e+09")).toString()).equals("1.00E+11");
+  (new Test("cst068")).ok=((new com.ibm.icu.math.BigDecimal("100E+90")).toString()).equals("1.00E+92");
+  (new Test("cst069")).ok=((new com.ibm.icu.math.BigDecimal("100e+009")).toString()).equals("1.00E+11");
+  
+  (new Test("cst070")).ok=((new com.ibm.icu.math.BigDecimal("1.265")).toString()).equals("1.265");
+  (new Test("cst071")).ok=((new com.ibm.icu.math.BigDecimal("1.265E-20")).toString()).equals("1.265E-20");
+  (new Test("cst072")).ok=((new com.ibm.icu.math.BigDecimal("1.265E-8")).toString()).equals("1.265E-8");
+  (new Test("cst073")).ok=((new com.ibm.icu.math.BigDecimal("1.265E-4")).toString()).equals("1.265E-4");
+  (new Test("cst074")).ok=((new com.ibm.icu.math.BigDecimal("1.265E-3")).toString()).equals("1.265E-3");
+  (new Test("cst075")).ok=((new com.ibm.icu.math.BigDecimal("1.265E-2")).toString()).equals("1.265E-2");
+  (new Test("cst076")).ok=((new com.ibm.icu.math.BigDecimal("1.265E-1")).toString()).equals("1.265E-1");
+  (new Test("cst077")).ok=((new com.ibm.icu.math.BigDecimal("1.265E-0")).toString()).equals("1.265");
+  (new Test("cst078")).ok=((new com.ibm.icu.math.BigDecimal("1.265E+1")).toString()).equals("1.265E+1");
+  (new Test("cst079")).ok=((new com.ibm.icu.math.BigDecimal("1.265E+2")).toString()).equals("1.265E+2");
+  (new Test("cst080")).ok=((new com.ibm.icu.math.BigDecimal("1.265E+3")).toString()).equals("1.265E+3");
+  (new Test("cst081")).ok=((new com.ibm.icu.math.BigDecimal("1.265E+4")).toString()).equals("1.265E+4");
+  (new Test("cst082")).ok=((new com.ibm.icu.math.BigDecimal("1.265E+8")).toString()).equals("1.265E+8");
+  (new Test("cst083")).ok=((new com.ibm.icu.math.BigDecimal("1.265E+20")).toString()).equals("1.265E+20");
+  
+  (new Test("cst090")).ok=((new com.ibm.icu.math.BigDecimal("12.65")).toString()).equals("12.65");
+  (new Test("cst091")).ok=((new com.ibm.icu.math.BigDecimal("12.65E-20")).toString()).equals("1.265E-19");
+  (new Test("cst092")).ok=((new com.ibm.icu.math.BigDecimal("12.65E-8")).toString()).equals("1.265E-7");
+  (new Test("cst093")).ok=((new com.ibm.icu.math.BigDecimal("12.65E-4")).toString()).equals("1.265E-3");
+  (new Test("cst094")).ok=((new com.ibm.icu.math.BigDecimal("12.65E-3")).toString()).equals("1.265E-2");
+  (new Test("cst095")).ok=((new com.ibm.icu.math.BigDecimal("12.65E-2")).toString()).equals("1.265E-1");
+  (new Test("cst096")).ok=((new com.ibm.icu.math.BigDecimal("12.65E-1")).toString()).equals("1.265");
+  (new Test("cst097")).ok=((new com.ibm.icu.math.BigDecimal("12.65E-0")).toString()).equals("1.265E+1");
+  (new Test("cst098")).ok=((new com.ibm.icu.math.BigDecimal("12.65E+1")).toString()).equals("1.265E+2");
+  (new Test("cst099")).ok=((new com.ibm.icu.math.BigDecimal("12.65E+2")).toString()).equals("1.265E+3");
+  (new Test("cst100")).ok=((new com.ibm.icu.math.BigDecimal("12.65E+3")).toString()).equals("1.265E+4");
+  (new Test("cst101")).ok=((new com.ibm.icu.math.BigDecimal("12.65E+4")).toString()).equals("1.265E+5");
+  (new Test("cst102")).ok=((new com.ibm.icu.math.BigDecimal("12.65E+8")).toString()).equals("1.265E+9");
+  (new Test("cst103")).ok=((new com.ibm.icu.math.BigDecimal("12.65E+20")).toString()).equals("1.265E+21");
+  
+  (new Test("cst110")).ok=((new com.ibm.icu.math.BigDecimal("126.5")).toString()).equals("126.5");
+  (new Test("cst111")).ok=((new com.ibm.icu.math.BigDecimal("126.5E-20")).toString()).equals("1.265E-18");
+  (new Test("cst112")).ok=((new com.ibm.icu.math.BigDecimal("126.5E-8")).toString()).equals("1.265E-6");
+  (new Test("cst113")).ok=((new com.ibm.icu.math.BigDecimal("126.5E-4")).toString()).equals("1.265E-2");
+  (new Test("cst114")).ok=((new com.ibm.icu.math.BigDecimal("126.5E-3")).toString()).equals("1.265E-1");
+  (new Test("cst115")).ok=((new com.ibm.icu.math.BigDecimal("126.5E-2")).toString()).equals("1.265");
+  (new Test("cst116")).ok=((new com.ibm.icu.math.BigDecimal("126.5E-1")).toString()).equals("1.265E+1");
+  (new Test("cst117")).ok=((new com.ibm.icu.math.BigDecimal("126.5E-0")).toString()).equals("1.265E+2");
+  (new Test("cst118")).ok=((new com.ibm.icu.math.BigDecimal("126.5E+1")).toString()).equals("1.265E+3");
+  (new Test("cst119")).ok=((new com.ibm.icu.math.BigDecimal("126.5E+2")).toString()).equals("1.265E+4");
+  (new Test("cst120")).ok=((new com.ibm.icu.math.BigDecimal("126.5E+3")).toString()).equals("1.265E+5");
+  (new Test("cst121")).ok=((new com.ibm.icu.math.BigDecimal("126.5E+4")).toString()).equals("1.265E+6");
+  (new Test("cst122")).ok=((new com.ibm.icu.math.BigDecimal("126.5E+8")).toString()).equals("1.265E+10");
+  (new Test("cst123")).ok=((new com.ibm.icu.math.BigDecimal("126.5E+20")).toString()).equals("1.265E+22");
+  
+  (new Test("cst130")).ok=((new com.ibm.icu.math.BigDecimal("1265")).toString()).equals("1265");
+  (new Test("cst131")).ok=((new com.ibm.icu.math.BigDecimal("1265E-20")).toString()).equals("1.265E-17");
+  (new Test("cst132")).ok=((new com.ibm.icu.math.BigDecimal("1265E-8")).toString()).equals("1.265E-5");
+  (new Test("cst133")).ok=((new com.ibm.icu.math.BigDecimal("1265E-4")).toString()).equals("1.265E-1");
+  (new Test("cst134")).ok=((new com.ibm.icu.math.BigDecimal("1265E-3")).toString()).equals("1.265");
+  (new Test("cst135")).ok=((new com.ibm.icu.math.BigDecimal("1265E-2")).toString()).equals("1.265E+1");
+  (new Test("cst136")).ok=((new com.ibm.icu.math.BigDecimal("1265E-1")).toString()).equals("1.265E+2");
+  (new Test("cst137")).ok=((new com.ibm.icu.math.BigDecimal("1265E-0")).toString()).equals("1.265E+3");
+  (new Test("cst138")).ok=((new com.ibm.icu.math.BigDecimal("1265E+1")).toString()).equals("1.265E+4");
+  (new Test("cst139")).ok=((new com.ibm.icu.math.BigDecimal("1265E+2")).toString()).equals("1.265E+5");
+  (new Test("cst140")).ok=((new com.ibm.icu.math.BigDecimal("1265E+3")).toString()).equals("1.265E+6");
+  (new Test("cst141")).ok=((new com.ibm.icu.math.BigDecimal("1265E+4")).toString()).equals("1.265E+7");
+  (new Test("cst142")).ok=((new com.ibm.icu.math.BigDecimal("1265E+8")).toString()).equals("1.265E+11");
+  (new Test("cst143")).ok=((new com.ibm.icu.math.BigDecimal("1265E+20")).toString()).equals("1.265E+23");
+  
+  (new Test("cst150")).ok=((new com.ibm.icu.math.BigDecimal("0.1265")).toString()).equals("0.1265");
+  (new Test("cst151")).ok=((new com.ibm.icu.math.BigDecimal("0.1265E-20")).toString()).equals("1.265E-21");
+  (new Test("cst152")).ok=((new com.ibm.icu.math.BigDecimal("0.1265E-8")).toString()).equals("1.265E-9");
+  (new Test("cst153")).ok=((new com.ibm.icu.math.BigDecimal("0.1265E-4")).toString()).equals("1.265E-5");
+  (new Test("cst154")).ok=((new com.ibm.icu.math.BigDecimal("0.1265E-3")).toString()).equals("1.265E-4");
+  (new Test("cst155")).ok=((new com.ibm.icu.math.BigDecimal("0.1265E-2")).toString()).equals("1.265E-3");
+  (new Test("cst156")).ok=((new com.ibm.icu.math.BigDecimal("0.1265E-1")).toString()).equals("1.265E-2");
+  (new Test("cst157")).ok=((new com.ibm.icu.math.BigDecimal("0.1265E-0")).toString()).equals("1.265E-1");
+  (new Test("cst158")).ok=((new com.ibm.icu.math.BigDecimal("0.1265E+1")).toString()).equals("1.265");
+  (new Test("cst159")).ok=((new com.ibm.icu.math.BigDecimal("0.1265E+2")).toString()).equals("1.265E+1");
+  (new Test("cst160")).ok=((new com.ibm.icu.math.BigDecimal("0.1265E+3")).toString()).equals("1.265E+2");
+  (new Test("cst161")).ok=((new com.ibm.icu.math.BigDecimal("0.1265E+4")).toString()).equals("1.265E+3");
+  (new Test("cst162")).ok=((new com.ibm.icu.math.BigDecimal("0.1265E+8")).toString()).equals("1.265E+7");
+  (new Test("cst163")).ok=((new com.ibm.icu.math.BigDecimal("0.1265E+20")).toString()).equals("1.265E+19");
+  
+  (new Test("cst170")).ok=((new com.ibm.icu.math.BigDecimal("0.09e999999999")).toString()).equals("9E+999999997");
+  (new Test("cst171")).ok=((new com.ibm.icu.math.BigDecimal("0.9e999999999")).toString()).equals("9E+999999998");
+  (new Test("cst172")).ok=((new com.ibm.icu.math.BigDecimal("9e999999999")).toString()).equals("9E+999999999");
+  (new Test("cst173")).ok=((new com.ibm.icu.math.BigDecimal("9.9e999999999")).toString()).equals("9.9E+999999999");
+  (new Test("cst174")).ok=((new com.ibm.icu.math.BigDecimal("9.99e999999999")).toString()).equals("9.99E+999999999");
+  (new Test("cst175")).ok=((new com.ibm.icu.math.BigDecimal("9.99e-999999999")).toString()).equals("9.99E-999999999");
+  (new Test("cst176")).ok=((new com.ibm.icu.math.BigDecimal("9.9e-999999999")).toString()).equals("9.9E-999999999");
+  (new Test("cst177")).ok=((new com.ibm.icu.math.BigDecimal("9e-999999999")).toString()).equals("9E-999999999");
+  (new Test("cst179")).ok=((new com.ibm.icu.math.BigDecimal("99e-999999999")).toString()).equals("9.9E-999999998");
+  (new Test("cst180")).ok=((new com.ibm.icu.math.BigDecimal("999e-999999999")).toString()).equals("9.99E-999999997");
+  
+  // baddies --
+  badstrings=new java.lang.String[]{"1..2",".","..","++1","--1","-+1","+-1","12e","12e++","12f4"," +1","+ 1","12 "," + 1"," - 1 ","x","-1-","12-","3+","","1e-","7e1000000000","","e100","\u0e5a","\u0b65","99e999999999","999e999999999","0.9e-999999999","0.09e-999999999","0.1e1000000000","10e-1000000000","0.9e9999999999","99e-9999999999","111e9999999999","1111e-9999999999"+" "+"111e*123","111e123-","111e+12+","111e1-3-","111e1*23","111e1e+3","1e1.0","1e123e","ten","ONE","1e.1","1e1.","1ee","e+1"}; // 200-203
+  // 204-207
+  // 208-211
+  // 211-214
+  // 215-219
+  // 220-222
+  // 223-224
+  // 225-226
+  // 227-228
+  // 229-230
+  // 231-232
+  // 233-234
+  // 235-237
+  // 238-240
+  // 241-244
+  // 245-248
+  
+  // watch out for commas on continuation lines
+  
+  {int $16=badstrings.length;i=0;i:for(;$16>0;$16--,i++){
+   try{
+    new com.ibm.icu.math.BigDecimal(badstrings[i]);
+    say(">>> cst"+(200+i)+":"+" "+badstrings[i]+" "+(new com.ibm.icu.math.BigDecimal(badstrings[i])).toString());
+    flag=false;
+   }
+   catch (java.lang.NumberFormatException $17){
+    flag=true;
+   }
+   (new Test("cst"+(200+i))).ok=flag;
+   }
+  }/*i*/
+  
+  try{checknull:do{
+   new com.ibm.icu.math.BigDecimal((java.lang.String)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $18){
+   flag=true;
+  }/*checknull*/
+  (new Test("cst301")).ok=flag;
+  
+  summary("Constructors");
+  return;
+  }
+
+ /** Mutation tests (checks that contents of constant objects are unchanged). */
+ 
+ public void diagmutation(){
+  /* ---------------------------------------------------------------- */
+  /* Final tests -- check constants haven't mutated                   */
+  /*             -- also that MC objects haven't mutated              */
+  /* ---------------------------------------------------------------- */
+  (new Test("cuc001")).ok=(com.ibm.icu.math.BigDecimal.ZERO.toString()).equals("0");
+  (new Test("cuc002")).ok=(com.ibm.icu.math.BigDecimal.ONE.toString()).equals("1");
+  (new Test("cuc003")).ok=(com.ibm.icu.math.BigDecimal.TEN.toString()).equals("10");
+  
+  (new Test("cuc010")).ok=com.ibm.icu.math.BigDecimal.ROUND_CEILING==com.ibm.icu.math.MathContext.ROUND_CEILING;
+  (new Test("cuc011")).ok=com.ibm.icu.math.BigDecimal.ROUND_DOWN==com.ibm.icu.math.MathContext.ROUND_DOWN;
+  (new Test("cuc012")).ok=com.ibm.icu.math.BigDecimal.ROUND_FLOOR==com.ibm.icu.math.MathContext.ROUND_FLOOR;
+  (new Test("cuc013")).ok=com.ibm.icu.math.BigDecimal.ROUND_HALF_DOWN==com.ibm.icu.math.MathContext.ROUND_HALF_DOWN;
+  (new Test("cuc014")).ok=com.ibm.icu.math.BigDecimal.ROUND_HALF_EVEN==com.ibm.icu.math.MathContext.ROUND_HALF_EVEN;
+  (new Test("cuc015")).ok=com.ibm.icu.math.BigDecimal.ROUND_HALF_UP==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+  (new Test("cuc016")).ok=com.ibm.icu.math.BigDecimal.ROUND_UNNECESSARY==com.ibm.icu.math.MathContext.ROUND_UNNECESSARY;
+  (new Test("cuc017")).ok=com.ibm.icu.math.BigDecimal.ROUND_UP==com.ibm.icu.math.MathContext.ROUND_UP;
+  
+  (new Test("cuc020")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getDigits())==9;
+  (new Test("cuc021")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())==com.ibm.icu.math.MathContext.SCIENTIFIC;
+  (new Test("cuc022")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getLostDigits()?1:0)==0;
+  (new Test("cuc023")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+  
+  // mc9  =MathContext(9)
+  // mcld =MathContext(9, SCIENTIFIC, 1)
+  // mcfd =MathContext(0, PLAIN)
+  (new Test("cuc030")).ok=(mc9.getDigits())==9;
+  (new Test("cuc031")).ok=(mc9.getForm())==com.ibm.icu.math.MathContext.SCIENTIFIC;
+  (new Test("cuc032")).ok=(mc9.getLostDigits()?1:0)==0;
+  (new Test("cuc033")).ok=(mc9.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+  (new Test("cuc034")).ok=(mcld.getDigits())==9;
+  (new Test("cuc035")).ok=(mcld.getForm())==com.ibm.icu.math.MathContext.SCIENTIFIC;
+  (new Test("cuc036")).ok=(mcld.getLostDigits()?1:0)==1;
+  (new Test("cuc037")).ok=(mcld.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+  (new Test("cuc038")).ok=(mcfd.getDigits())==0;
+  (new Test("cuc039")).ok=(mcfd.getForm())==com.ibm.icu.math.MathContext.PLAIN;
+  (new Test("cuc040")).ok=(mcfd.getLostDigits()?1:0)==0;
+  (new Test("cuc041")).ok=(mcfd.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+  
+  summary("No mutation");
+  return;}
+
+ 
+ /* ----------------------------------------------------------------- */
+ /* Operator test methods                                             */
+ /* ----------------------------------------------------------------- */
+ // The use of context in these tests are primarily to show that they
+ // are correctly passed to the methods, except that we check that
+ // each method checks for lostDigits.
+ 
+ /** Test the {@link BigDecimal#abs} method. */
+ 
+ public void diagabs(){
+  boolean flag=false;
+  java.lang.ArithmeticException ae=null;
+  
+  // most of the function of this is tested by add
+  (new Test("abs001")).ok=((new com.ibm.icu.math.BigDecimal("2")).abs().toString()).equals("2");
+  (new Test("abs002")).ok=((new com.ibm.icu.math.BigDecimal("-2")).abs().toString()).equals("2");
+  (new Test("abs003")).ok=((new com.ibm.icu.math.BigDecimal("+0.000")).abs().toString()).equals("0.000");
+  (new Test("abs004")).ok=((new com.ibm.icu.math.BigDecimal("00.000")).abs().toString()).equals("0.000");
+  (new Test("abs005")).ok=((new com.ibm.icu.math.BigDecimal("-0.000")).abs().toString()).equals("0.000");
+  (new Test("abs006")).ok=((new com.ibm.icu.math.BigDecimal("+0.000")).abs(mcdef).toString()).equals("0");
+  (new Test("abs007")).ok=((new com.ibm.icu.math.BigDecimal("00.000")).abs(mcdef).toString()).equals("0");
+  (new Test("abs008")).ok=((new com.ibm.icu.math.BigDecimal("-0.000")).abs(mcdef).toString()).equals("0");
+  (new Test("abs009")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).abs().toString()).equals("2000000");
+  (new Test("abs010")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).abs(mcdef).toString()).equals("2000000");
+  (new Test("abs011")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).abs(mc6).toString()).equals("2.00000E+6");
+  (new Test("abs012")).ok=((new com.ibm.icu.math.BigDecimal("2000000")).abs(mc6).toString()).equals("2.00000E+6");
+  (new Test("abs013")).ok=((new com.ibm.icu.math.BigDecimal("0.2")).abs().toString()).equals("0.2");
+  (new Test("abs014")).ok=((new com.ibm.icu.math.BigDecimal("-0.2")).abs().toString()).equals("0.2");
+  (new Test("abs015")).ok=((new com.ibm.icu.math.BigDecimal("0.01")).abs().toString()).equals("0.01");
+  (new Test("abs016")).ok=((new com.ibm.icu.math.BigDecimal("-0.01")).abs().toString()).equals("0.01");
+  try{checkdigits:do{
+   tenlong.abs(mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $19){ae=$19;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("abs020")).ok=flag;
+  // check lostdigits not raised if digits=0 [monadic method]
+  try{checkdigits:do{
+   tenlong.abs(mcld0);
+   flag=true;
+  }while(false);}
+  catch (java.lang.ArithmeticException $20){ae=$20;
+   flag=false;
+  }/*checkdigits*/
+  (new Test("abs021")).ok=flag;
+  try{checknull:do{
+   com.ibm.icu.math.BigDecimal.TEN.abs((com.ibm.icu.math.MathContext)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $21){
+   flag=true;
+  }/*checknull*/
+  (new Test("abs022")).ok=flag;
+  
+  summary("abs");
+  return;}
+/* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#add} method. */
+ 
+ public void diagadd(){
+  boolean flag=false;
+  com.ibm.icu.math.BigDecimal alhs;
+  com.ibm.icu.math.BigDecimal arhs;
+  java.lang.ArithmeticException ae=null;
+  
+  // [first group are 'quick confidence check']
+  (new Test("add001")).ok=((new com.ibm.icu.math.BigDecimal(2)).add(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("5");
+  (new Test("add003")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).add(new com.ibm.icu.math.BigDecimal("3.3"),mcdef).toString()).equals("9.05");
+  (new Test("add004")).ok=((new com.ibm.icu.math.BigDecimal("5")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("2");
+  (new Test("add005")).ok=((new com.ibm.icu.math.BigDecimal("-5")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("-8");
+  (new Test("add006")).ok=((new com.ibm.icu.math.BigDecimal("-7")).add(new com.ibm.icu.math.BigDecimal("2.5"),mcdef).toString()).equals("-4.5");
+  (new Test("add007")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).add(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("1.0");
+  (new Test("add008")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).add(new com.ibm.icu.math.BigDecimal("1.25"),mcdef).toString()).equals("2.50");
+  (new Test("add009")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000000"),mcdef).toString()).equals("2.23456789");
+  
+  (new Test("add010")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000011"),mcdef).toString()).equals("2.23456800");
+  
+  
+  (new Test("add011")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555555"),mcdef).toString()).equals("1.00000000");
+  
+  (new Test("add012")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444440")).add(new com.ibm.icu.math.BigDecimal("0.5555555555"),mcdef).toString()).equals("1.00000000");
+  
+  (new Test("add013")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555550"),mcdef).toString()).equals("0.999999999");
+  
+  (new Test("add014")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).add(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444444");
+  
+  (new Test("add015")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).add(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444445");
+  
+  
+  (new Test("add016")).ok=((new com.ibm.icu.math.BigDecimal("70")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000000E+13");
+  
+  (new Test("add017")).ok=((new com.ibm.icu.math.BigDecimal("700")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000000E+13");
+  
+  (new Test("add018")).ok=((new com.ibm.icu.math.BigDecimal("7000")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000000E+13");
+  
+  (new Test("add019")).ok=((new com.ibm.icu.math.BigDecimal("70000")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000001E+13");
+  
+  (new Test("add020")).ok=((new com.ibm.icu.math.BigDecimal("700000")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000007E+13");
+  
+  
+  // [Now the same group with fixed arithmetic]
+  (new Test("add030")).ok=((new com.ibm.icu.math.BigDecimal(2)).add(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("5");
+  (new Test("add031")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).add(new com.ibm.icu.math.BigDecimal("3.3")).toString()).equals("9.05");
+  (new Test("add032")).ok=((new com.ibm.icu.math.BigDecimal("5")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("2");
+  (new Test("add033")).ok=((new com.ibm.icu.math.BigDecimal("-5")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("-8");
+  (new Test("add034")).ok=((new com.ibm.icu.math.BigDecimal("-7")).add(new com.ibm.icu.math.BigDecimal("2.5")).toString()).equals("-4.5");
+  (new Test("add035")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).add(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("1.0");
+  (new Test("add036")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).add(new com.ibm.icu.math.BigDecimal("1.25")).toString()).equals("2.50");
+  (new Test("add037")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000000")).toString()).equals("2.23456789");
+  
+  (new Test("add038")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000011")).toString()).equals("2.23456800");
+  
+  
+  (new Test("add039")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555555")).toString()).equals("0.9999999999");
+  
+  (new Test("add040")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444440")).add(new com.ibm.icu.math.BigDecimal("0.5555555555")).toString()).equals("0.9999999995");
+  
+  (new Test("add041")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555550")).toString()).equals("0.9999999994");
+  
+  (new Test("add042")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).add(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444444999");
+  
+  (new Test("add043")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).add(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444445000");
+  
+  
+  (new Test("add044")).ok=((new com.ibm.icu.math.BigDecimal("70")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000000070");
+  
+  (new Test("add045")).ok=((new com.ibm.icu.math.BigDecimal("700")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000000700");
+  
+  (new Test("add046")).ok=((new com.ibm.icu.math.BigDecimal("7000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000007000");
+  
+  (new Test("add047")).ok=((new com.ibm.icu.math.BigDecimal("70000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000070000");
+  
+  (new Test("add048")).ok=((new com.ibm.icu.math.BigDecimal("700000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000700000");
+  
+  
+  // symmetry:
+  (new Test("add049")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70"),mcdef).toString()).equals("1.00000000E+13");
+  
+  (new Test("add050")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700"),mcdef).toString()).equals("1.00000000E+13");
+  
+  (new Test("add051")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("7000"),mcdef).toString()).equals("1.00000000E+13");
+  
+  (new Test("add052")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("1.00000001E+13");
+  
+  (new Test("add053")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700000"),mcdef).toString()).equals("1.00000007E+13");
+  
+  
+  (new Test("add054")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70")).toString()).equals("10000000000070");
+  
+  (new Test("add055")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700")).toString()).equals("10000000000700");
+  
+  (new Test("add056")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("7000")).toString()).equals("10000000007000");
+  
+  (new Test("add057")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000")).toString()).equals("10000000070000");
+  
+  (new Test("add058")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700000")).toString()).equals("10000000700000");
+  
+  // some rounding effects
+  (new Test("add059")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0000")).toString()).equals("0.9998");
+  
+  (new Test("add060")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0001")).toString()).equals("0.9999");
+  
+  (new Test("add061")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0002")).toString()).equals("1.0000");
+  
+  (new Test("add062")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0003")).toString()).equals("1.0001");
+  
+  
+  // MC
+  (new Test("add070")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mcfd).toString()).equals("10000000070000");
+  
+  (new Test("add071")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("1.00000001E+13");
+  
+  (new Test("add072")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mc6).toString()).equals("1.00000E+13");
+  
+  
+  // zero preservation
+  (new Test("add080")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.0001"),mc6).toString()).equals("1.0001");
+  
+  (new Test("add081")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.00001"),mc6).toString()).equals("1.00001");
+  
+  (new Test("add082")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.000001"),mc6).toString()).equals("1.00000");
+  
+  (new Test("add083")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.0000001"),mc6).toString()).equals("1.00000");
+  
+  (new Test("add084")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.00000001"),mc6).toString()).equals("1.00000");
+  
+  
+  // more fixed, LHS swaps
+  (new Test("add090")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).add(zero).toString()).equals("-0.0000056267");
+  (new Test("add091")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-6")).add(zero).toString()).equals("-0.056267");
+  (new Test("add092")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).add(zero).toString()).equals("-0.56267");
+  (new Test("add093")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-4")).add(zero).toString()).equals("-5.6267");
+  (new Test("add094")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-3")).add(zero).toString()).equals("-56.267");
+  (new Test("add095")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).add(zero).toString()).equals("-562.67");
+  (new Test("add096")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).add(zero).toString()).equals("-5626.7");
+  (new Test("add097")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).add(zero).toString()).equals("-56267");
+  (new Test("add098")).ok=((new com.ibm.icu.math.BigDecimal("-5E-10")).add(zero).toString()).equals("-0.0000000005");
+  (new Test("add099")).ok=((new com.ibm.icu.math.BigDecimal("-5E-5")).add(zero).toString()).equals("-0.00005");
+  (new Test("add100")).ok=((new com.ibm.icu.math.BigDecimal("-5E-1")).add(zero).toString()).equals("-0.5");
+  (new Test("add101")).ok=((new com.ibm.icu.math.BigDecimal("-5E-10")).add(zero).toString()).equals("-0.0000000005");
+  (new Test("add102")).ok=((new com.ibm.icu.math.BigDecimal("-5E-5")).add(zero).toString()).equals("-0.00005");
+  (new Test("add103")).ok=((new com.ibm.icu.math.BigDecimal("-5E-1")).add(zero).toString()).equals("-0.5");
+  (new Test("add104")).ok=((new com.ibm.icu.math.BigDecimal("-5E10")).add(zero).toString()).equals("-50000000000");
+  (new Test("add105")).ok=((new com.ibm.icu.math.BigDecimal("-5E5")).add(zero).toString()).equals("-500000");
+  (new Test("add106")).ok=((new com.ibm.icu.math.BigDecimal("-5E1")).add(zero).toString()).equals("-50");
+  (new Test("add107")).ok=((new com.ibm.icu.math.BigDecimal("-5E0")).add(zero).toString()).equals("-5");
+  
+  // more fixed, RHS swaps
+  (new Test("add108")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-10")).toString()).equals("-0.0000056267");
+  (new Test("add109")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-6")).toString()).equals("-0.056267");
+  (new Test("add110")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-5")).toString()).equals("-0.56267");
+  (new Test("add111")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-4")).toString()).equals("-5.6267");
+  (new Test("add112")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-3")).toString()).equals("-56.267");
+  (new Test("add113")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-2")).toString()).equals("-562.67");
+  (new Test("add114")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-1")).toString()).equals("-5626.7");
+  (new Test("add115")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-0")).toString()).equals("-56267");
+  (new Test("add116")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-10")).toString()).equals("-0.0000000005");
+  (new Test("add117")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-5")).toString()).equals("-0.00005");
+  (new Test("add118")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-1")).toString()).equals("-0.5");
+  (new Test("add129")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-10")).toString()).equals("-0.0000000005");
+  (new Test("add130")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-5")).toString()).equals("-0.00005");
+  (new Test("add131")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-1")).toString()).equals("-0.5");
+  (new Test("add132")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E10")).toString()).equals("-50000000000");
+  (new Test("add133")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E5")).toString()).equals("-500000");
+  (new Test("add134")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E1")).toString()).equals("-50");
+  (new Test("add135")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E0")).toString()).equals("-5");
+  
+  // [some of the next group are really constructor tests]
+  (new Test("add140")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).add(new com.ibm.icu.math.BigDecimal("0.00"),mcdef).toString()).equals("0");
+  (new Test("add141")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).add(new com.ibm.icu.math.BigDecimal("00.0"),mcdef).toString()).equals("0");
+  (new Test("add142")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.3");
+  (new Test("add143")).ok=((new com.ibm.icu.math.BigDecimal("3.")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.3");
+  (new Test("add144")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.3");
+  (new Test("add145")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.30");
+  (new Test("add146")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("6");
+  (new Test("add147")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("+3"),mcdef).toString()).equals("6");
+  (new Test("add148")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("0");
+  (new Test("add149")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).add(new com.ibm.icu.math.BigDecimal("-0.03"),mcdef).toString()).equals("0");
+  
+  (new Test("add150")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).add(new com.ibm.icu.math.BigDecimal("0.00")).toString()).equals("0.00");
+  (new Test("add151")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).add(new com.ibm.icu.math.BigDecimal("00.0")).toString()).equals("0.00");
+  (new Test("add152")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");
+  (new Test("add153")).ok=((new com.ibm.icu.math.BigDecimal("3.")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");
+  (new Test("add154")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");
+  (new Test("add155")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.30");
+  (new Test("add156")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("6");
+  (new Test("add157")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("+3")).toString()).equals("6");
+  (new Test("add158")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("0");
+  (new Test("add159")).ok=((new com.ibm.icu.math.BigDecimal("0.3")).add(new com.ibm.icu.math.BigDecimal("-0.3")).toString()).equals("0.0");
+  (new Test("add160")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).add(new com.ibm.icu.math.BigDecimal("-0.03")).toString()).equals("0.00");
+  (new Test("add161")).ok=((new com.ibm.icu.math.BigDecimal("7E+12")).add(new com.ibm.icu.math.BigDecimal("-1"),mcfd).toString()).equals("6999999999999");
+  
+  (new Test("add162")).ok=((new com.ibm.icu.math.BigDecimal("7E+12")).add(new com.ibm.icu.math.BigDecimal("1.11"),mcfd).toString()).equals("7000000000001.11");
+  
+  (new Test("add163")).ok=((new com.ibm.icu.math.BigDecimal("1.11")).add(new com.ibm.icu.math.BigDecimal("7E+12"),mcfd).toString()).equals("7000000000001.11");
+  
+  
+  // input preparation tests
+  alhs=new com.ibm.icu.math.BigDecimal("12345678900000");
+  arhs=new com.ibm.icu.math.BigDecimal("9999999999999");
+  (new Test("add170")).ok=(alhs.add(arhs,mc3).toString()).equals("2.23E+13");
+  (new Test("add171")).ok=(arhs.add(alhs,mc3).toString()).equals("2.23E+13");
+  (new Test("add172")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3456"),mc3).toString()).equals("1.55E+4");
+  // next was 1.54E+4 under old [truncate to digits+1] rules
+  (new Test("add173")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3446"),mc3).toString()).equals("1.55E+4");
+  (new Test("add174")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3454"),mc3).toString()).equals("1.55E+4");
+  (new Test("add175")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3444"),mc3).toString()).equals("1.54E+4");
+  
+  (new Test("add176")).ok=((new com.ibm.icu.math.BigDecimal("3456")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.55E+4");
+  // next was 1.54E+4 under old [truncate to digits+1] rules
+  (new Test("add177")).ok=((new com.ibm.icu.math.BigDecimal("3446")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.55E+4");
+  (new Test("add178")).ok=((new com.ibm.icu.math.BigDecimal("3454")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.55E+4");
+  (new Test("add179")).ok=((new com.ibm.icu.math.BigDecimal("3444")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.54E+4");
+  
+  try{checknull:do{
+   ten.add((com.ibm.icu.math.BigDecimal)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $22){
+   flag=true;
+  }/*checknull*/
+  (new Test("add200")).ok=flag;
+  try{checknull2:do{
+   ten.add(ten,(com.ibm.icu.math.MathContext)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $23){
+   flag=true;
+  }/*checknull2*/
+  (new Test("add201")).ok=flag;
+  
+  try{checkdigits:do{
+   tenlong.add(com.ibm.icu.math.BigDecimal.ZERO,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $24){ae=$24;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("add202")).ok=flag;
+  try{checkdigits:do{
+   com.ibm.icu.math.BigDecimal.ZERO.add(tenlong,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $25){ae=$25;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("add203")).ok=flag;
+  
+  // check lostdigits not raised if digits=0 [dyadic method]
+  try{checkdigits:do{
+   tenlong.add(com.ibm.icu.math.BigDecimal.ZERO,mcld0);
+   flag=true;
+  }while(false);}
+  catch (java.lang.ArithmeticException $26){ae=$26;
+   flag=false;
+  }/*checkdigits*/
+  (new Test("add204")).ok=flag;
+  try{checkdigits:do{
+   com.ibm.icu.math.BigDecimal.ZERO.add(tenlong,mcld0);
+   flag=true;
+  }while(false);}
+  catch (java.lang.ArithmeticException $27){ae=$27;
+   flag=false;
+  }/*checkdigits*/
+  (new Test("add205")).ok=flag;
+  
+  summary("add");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ /** Test the {@link BigDecimal#compareTo(BigDecimal)} method. */
+ 
+ public void diagcompareto(){
+  boolean flag=false;
+  java.lang.ArithmeticException ae=null;
+  // we assume add/subtract test function; this just
+  // tests existence, exceptions, and possible results
+  
+  (new Test("cpt001")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("2")))==1;
+  (new Test("cpt002")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("5")))==0;
+  (new Test("cpt003")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("5.00")))==0;
+  (new Test("cpt004")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).compareTo(new com.ibm.icu.math.BigDecimal("0.5")))==0;
+  (new Test("cpt005")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5")))==(-1);
+  (new Test("cpt006")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mcdef))==(-1);
+  (new Test("cpt007")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mc6))==(-1);
+  (new Test("cpt008")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mcfd))==(-1);
+  try{checknull:do{
+   ten.compareTo((com.ibm.icu.math.BigDecimal)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $28){
+   flag=true;
+  }/*checknull*/
+  (new Test("cpt100")).ok=flag;
+  try{checknull2:do{
+   ten.compareTo(ten,(com.ibm.icu.math.MathContext)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $29){
+   flag=true;
+  }/*checknull2*/
+  (new Test("cpt101")).ok=flag;
+  
+  try{checkdigits:do{
+   tenlong.compareTo(com.ibm.icu.math.BigDecimal.ONE,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $30){ae=$30;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("cpt102")).ok=flag;
+  try{checkdigits:do{
+   com.ibm.icu.math.BigDecimal.ONE.compareTo(tenlong,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $31){ae=$31;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("cpt103")).ok=flag;
+  
+  summary("compareTo");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#divide} method. */
+ 
+ public void diagdivide(){
+  boolean flag=false;
+  com.ibm.icu.math.MathContext rmcd;
+  int rhu;
+  int rd;
+  int ru;
+  java.lang.RuntimeException e=null;
+  java.lang.ArithmeticException ae=null;
+  
+  (new Test("div301")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("0.333333333");
+  (new Test("div302")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("0.666666667");
+  (new Test("div303")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2.4");
+  (new Test("div304")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString()).equals("-2.4");
+  (new Test("div305")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("-2.4");
+  (new Test("div306")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString()).equals("2.4");
+  (new Test("div307")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2.4");
+  (new Test("div308")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2.4");
+  (new Test("div309")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1.2");
+  (new Test("div310")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1.2");
+  (new Test("div311")).ok=((new com.ibm.icu.math.BigDecimal("2.")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
+  (new Test("div312")).ok=((new com.ibm.icu.math.BigDecimal("20")).divide(new com.ibm.icu.math.BigDecimal("20"),mcdef).toString()).equals("1");
+  (new Test("div313")).ok=((new com.ibm.icu.math.BigDecimal("187")).divide(new com.ibm.icu.math.BigDecimal("187"),mcdef).toString()).equals("1");
+  (new Test("div314")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("2.5");
+  (new Test("div315")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.0"),mcdef).toString()).equals("2.5");
+  (new Test("div316")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.000"),mcdef).toString()).equals("2.5");
+  (new Test("div317")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("0.200"),mcdef).toString()).equals("25");
+  (new Test("div318")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");
+  (new Test("div319")).ok=((new com.ibm.icu.math.BigDecimal("999999999.4")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");
+  (new Test("div320")).ok=((new com.ibm.icu.math.BigDecimal("999999999.5")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1E+9");
+  (new Test("div321")).ok=((new com.ibm.icu.math.BigDecimal("999999999.9")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1E+9");
+  (new Test("div322")).ok=((new com.ibm.icu.math.BigDecimal("999999999.999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1E+9");
+  (new Test("div323")).ok=((new com.ibm.icu.math.BigDecimal("0.0000E-50")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("0");
+  // MC
+  (new Test("div325")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");
+  (new Test("div326")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mc6).toString()).equals("1E+9");
+  (new Test("div327")).ok=((new com.ibm.icu.math.BigDecimal("9999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mc6).toString()).equals("1E+7");
+  (new Test("div328")).ok=((new com.ibm.icu.math.BigDecimal("999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mc6).toString()).equals("999999");
+  
+  // check rounding explicitly [note: digits+1 truncation]
+  rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_CEILING);
+  (new Test("div330")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
+  (new Test("div331")).ok=((new com.ibm.icu.math.BigDecimal("1.51")).divide(one,rmcd).toString()).equals("1.6");
+  (new Test("div332")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");
+  rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_DOWN);
+  (new Test("div333")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");
+  (new Test("div334")).ok=((new com.ibm.icu.math.BigDecimal("1.59")).divide(one,rmcd).toString()).equals("1.5");
+  rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);
+  (new Test("div335")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");
+  (new Test("div336")).ok=((new com.ibm.icu.math.BigDecimal("1.59")).divide(one,rmcd).toString()).equals("1.5");
+  rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN);
+  (new Test("div337")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.4");
+  (new Test("div338")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
+  (new Test("div339")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");
+  rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);
+  (new Test("div340")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.4");
+  (new Test("div341")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
+  (new Test("div342")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");
+  rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_UP);
+  (new Test("div343")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.5");
+  (new Test("div344")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
+  (new Test("div345")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");
+  rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_UP);
+  (new Test("div346")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
+  (new Test("div347")).ok=((new com.ibm.icu.math.BigDecimal("1.51")).divide(one,rmcd).toString()).equals("1.6");
+  (new Test("div348")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");
+  
+  // fixed point...
+  (new Test("div350")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");
+  (new Test("div351")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");
+  (new Test("div352")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2.4");
+  (new Test("div353")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("-1")).toString()).equals("-2.4");
+  (new Test("div354")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("-2.4");
+  (new Test("div355")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("-1")).toString()).equals("2.4");
+  (new Test("div356")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2.40");
+  (new Test("div357")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2.400");
+  (new Test("div358")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1.2");
+  (new Test("div359")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1.200");
+  (new Test("div360")).ok=((new com.ibm.icu.math.BigDecimal("2.")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
+  (new Test("div361")).ok=((new com.ibm.icu.math.BigDecimal("20")).divide(new com.ibm.icu.math.BigDecimal("20")).toString()).equals("1");
+  (new Test("div362")).ok=((new com.ibm.icu.math.BigDecimal("187")).divide(new com.ibm.icu.math.BigDecimal("187")).toString()).equals("1");
+  (new Test("div363")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("3");
+  (new Test("div364")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.0")).toString()).equals("3");
+  (new Test("div365")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.000")).toString()).equals("3");
+  (new Test("div366")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("0.200")).toString()).equals("25");
+  (new Test("div367")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2.5");
+  (new Test("div368")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("2.0")).toString()).equals("2.5");
+  (new Test("div369")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("2.000")).toString()).equals("2.5");
+  (new Test("div370")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("0.200")).toString()).equals("25.0");
+  (new Test("div371")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999");
+  (new Test("div372")).ok=((new com.ibm.icu.math.BigDecimal("999999999.4")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.4");
+  (new Test("div373")).ok=((new com.ibm.icu.math.BigDecimal("999999999.5")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.5");
+  (new Test("div374")).ok=((new com.ibm.icu.math.BigDecimal("999999999.9")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.9");
+  (new Test("div375")).ok=((new com.ibm.icu.math.BigDecimal("999999999.999")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.999");
+  (new Test("div376")).ok=((new com.ibm.icu.math.BigDecimal("0.0000E-5")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("0");
+  (new Test("div377")).ok=((new com.ibm.icu.math.BigDecimal("0.000000000")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("0.000000000");
+  
+  //- Fixed point; explicit scales & rounds [old BigDecimal divides]
+  rhu=com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+  rd=com.ibm.icu.math.MathContext.ROUND_DOWN;
+  (new Test("div001")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");
+  (new Test("div002")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("0");
+  (new Test("div003")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rhu).toString()).equals("0");
+  (new Test("div004")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rhu).toString()).equals("0.0");
+  (new Test("div005")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rhu).toString()).equals("0.00");
+  (new Test("div006")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rhu).toString()).equals("0.000");
+  (new Test("div007")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rhu).toString()).equals("0.0000");
+  (new Test("div008")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");
+  (new Test("div009")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("0");
+  (new Test("div010")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rhu).toString()).equals("0");
+  (new Test("div011")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rhu).toString()).equals("0.3");
+  (new Test("div012")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rhu).toString()).equals("0.33");
+  (new Test("div013")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rhu).toString()).equals("0.333");
+  (new Test("div014")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rhu).toString()).equals("0.3333");
+  (new Test("div015")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");
+  (new Test("div016")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("1");
+  (new Test("div017")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rhu).toString()).equals("1");
+  (new Test("div018")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rhu).toString()).equals("0.7");
+  (new Test("div019")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rhu).toString()).equals("0.67");
+  (new Test("div020")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rhu).toString()).equals("0.667");
+  (new Test("div021")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rhu).toString()).equals("0.6667");
+  
+  (new Test("div030")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),4,rhu).toString()).equals("0.5000");
+  (new Test("div031")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),3,rhu).toString()).equals("0.500");
+  (new Test("div032")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),2,rhu).toString()).equals("0.50");
+  (new Test("div033")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),1,rhu).toString()).equals("0.5");
+  (new Test("div034")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),0,rhu).toString()).equals("1");
+  
+  (new Test("div035")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),4,rhu).toString()).equals("0.0200");
+  (new Test("div036")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),3,rhu).toString()).equals("0.020");
+  (new Test("div037")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),2,rhu).toString()).equals("0.02");
+  (new Test("div038")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),1,rhu).toString()).equals("0.0");
+  (new Test("div039")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),0,rhu).toString()).equals("0");
+  
+  (new Test("div040")).ok=((new com.ibm.icu.math.BigDecimal("9.99999999")).divide(new com.ibm.icu.math.BigDecimal("9.77777777"),4,rhu).toString()).equals("1.0227");
+  (new Test("div041")).ok=((new com.ibm.icu.math.BigDecimal("9.9999999")).divide(new com.ibm.icu.math.BigDecimal("9.7777777"),4,rhu).toString()).equals("1.0227");
+  (new Test("div042")).ok=((new com.ibm.icu.math.BigDecimal("9.999999")).divide(new com.ibm.icu.math.BigDecimal("9.777777"),4,rhu).toString()).equals("1.0227");
+  (new Test("div043")).ok=((new com.ibm.icu.math.BigDecimal("9.77777777")).divide(new com.ibm.icu.math.BigDecimal("9.99999999"),4,rhu).toString()).equals("0.9778");
+  (new Test("div044")).ok=((new com.ibm.icu.math.BigDecimal("9.7777777")).divide(new com.ibm.icu.math.BigDecimal("9.9999999"),4,rhu).toString()).equals("0.9778");
+  (new Test("div045")).ok=((new com.ibm.icu.math.BigDecimal("9.777777")).divide(new com.ibm.icu.math.BigDecimal("9.999999"),4,rhu).toString()).equals("0.9778");
+  (new Test("div046")).ok=((new com.ibm.icu.math.BigDecimal("9.77777")).divide(new com.ibm.icu.math.BigDecimal("9.99999"),4,rhu).toString()).equals("0.9778");
+  (new Test("div047")).ok=((new com.ibm.icu.math.BigDecimal("9.7777")).divide(new com.ibm.icu.math.BigDecimal("9.9999"),4,rhu).toString()).equals("0.9778");
+  (new Test("div048")).ok=((new com.ibm.icu.math.BigDecimal("9.777")).divide(new com.ibm.icu.math.BigDecimal("9.999"),4,rhu).toString()).equals("0.9778");
+  (new Test("div049")).ok=((new com.ibm.icu.math.BigDecimal("9.77")).divide(new com.ibm.icu.math.BigDecimal("9.99"),4,rhu).toString()).equals("0.9780");
+  (new Test("div050")).ok=((new com.ibm.icu.math.BigDecimal("9.7")).divide(new com.ibm.icu.math.BigDecimal("9.9"),4,rhu).toString()).equals("0.9798");
+  (new Test("div051")).ok=((new com.ibm.icu.math.BigDecimal("9.")).divide(new com.ibm.icu.math.BigDecimal("9."),4,rhu).toString()).equals("1.0000");
+  
+  (new Test("div060")).ok=((new com.ibm.icu.math.BigDecimal("9.99999999")).divide(new com.ibm.icu.math.BigDecimal("9.77777777"),rhu).toString()).equals("1.02272727");
+  (new Test("div061")).ok=((new com.ibm.icu.math.BigDecimal("9.9999999")).divide(new com.ibm.icu.math.BigDecimal("9.7777777"),rhu).toString()).equals("1.0227273");
+  (new Test("div062")).ok=((new com.ibm.icu.math.BigDecimal("9.999999")).divide(new com.ibm.icu.math.BigDecimal("9.777777"),rhu).toString()).equals("1.022727");
+  (new Test("div063")).ok=((new com.ibm.icu.math.BigDecimal("9.77777777")).divide(new com.ibm.icu.math.BigDecimal("9.99999999"),rhu).toString()).equals("0.97777778");
+  (new Test("div064")).ok=((new com.ibm.icu.math.BigDecimal("9.7777777")).divide(new com.ibm.icu.math.BigDecimal("9.9999999"),rhu).toString()).equals("0.9777778");
+  (new Test("div065")).ok=((new com.ibm.icu.math.BigDecimal("9.777777")).divide(new com.ibm.icu.math.BigDecimal("9.999999"),rhu).toString()).equals("0.977778");
+  (new Test("div066")).ok=((new com.ibm.icu.math.BigDecimal("9.77777")).divide(new com.ibm.icu.math.BigDecimal("9.99999"),rhu).toString()).equals("0.97778");
+  (new Test("div067")).ok=((new com.ibm.icu.math.BigDecimal("9.7777")).divide(new com.ibm.icu.math.BigDecimal("9.9999"),rhu).toString()).equals("0.9778");
+  (new Test("div068")).ok=((new com.ibm.icu.math.BigDecimal("9.777")).divide(new com.ibm.icu.math.BigDecimal("9.999"),rhu).toString()).equals("0.978");
+  (new Test("div069")).ok=((new com.ibm.icu.math.BigDecimal("9.77")).divide(new com.ibm.icu.math.BigDecimal("9.99"),rhu).toString()).equals("0.98");
+  (new Test("div070")).ok=((new com.ibm.icu.math.BigDecimal("9.7")).divide(new com.ibm.icu.math.BigDecimal("9.9"),rhu).toString()).equals("1.0");
+  (new Test("div071")).ok=((new com.ibm.icu.math.BigDecimal("9.")).divide(new com.ibm.icu.math.BigDecimal("9."),rhu).toString()).equals("1");
+  
+  rd=com.ibm.icu.math.MathContext.ROUND_DOWN; // test this is actually being used
+  (new Test("div080")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rd).toString()).equals("0");
+  (new Test("div081")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rd).toString()).equals("0.6");
+  (new Test("div082")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rd).toString()).equals("0.66");
+  (new Test("div083")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rd).toString()).equals("0.666");
+  (new Test("div084")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rd).toString()).equals("0.6666");
+  
+  ru=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY; // check for some 0 residues
+  (new Test("div090")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5"),4,ru).toString()).equals("200.0000");
+  (new Test("div091")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("50"),4,ru).toString()).equals("20.0000");
+  (new Test("div092")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("500"),4,ru).toString()).equals("2.0000");
+  (new Test("div093")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),4,ru).toString()).equals("0.2000");
+  (new Test("div094")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),3,ru).toString()).equals("0.200");
+  (new Test("div095")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),2,ru).toString()).equals("0.20");
+  (new Test("div096")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),1,ru).toString()).equals("0.2");
+  
+  // check rounding explicitly
+  (new Test("div101")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.06");
+  (new Test("div102")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.1");
+  (new Test("div103")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("1");
+  (new Test("div104")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.05");
+  (new Test("div105")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.0");
+  (new Test("div106")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0");
+  (new Test("div107")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.05");
+  (new Test("div108")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.0");
+  (new Test("div109")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0");
+  
+  (new Test("div110")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.04");
+  (new Test("div111")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.0");
+  (new Test("div112")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");
+  (new Test("div113")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.05");
+  (new Test("div114")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.0");
+  (new Test("div115")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");
+  (new Test("div116")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.05");
+  (new Test("div117")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.1");
+  (new Test("div118")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");
+  
+  (new Test("div120")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.04");
+  (new Test("div121")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");
+  (new Test("div122")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+  (new Test("div123")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.05");
+  (new Test("div124")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");
+  (new Test("div125")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+  (new Test("div126")).ok=((new com.ibm.icu.math.BigDecimal("0.150")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.15");
+  (new Test("div127")).ok=((new com.ibm.icu.math.BigDecimal("0.150")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.2");
+  (new Test("div128")).ok=((new com.ibm.icu.math.BigDecimal("0.150")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+  (new Test("div129")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.06");
+  (new Test("div130")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.1");
+  (new Test("div131")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+  
+  (new Test("div140")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.05");
+  (new Test("div141")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.0");
+  (new Test("div142")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+  (new Test("div143")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.05");
+  (new Test("div144")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.1");
+  (new Test("div145")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+  (new Test("div146")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.06");
+  (new Test("div147")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.1");
+  (new Test("div148")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+  
+  (new Test("div150")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.06");
+  (new Test("div151")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.1");
+  (new Test("div52.")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("1");
+  
+  //- error conditions ---
+  try{checknull:do{
+   ten.divide((com.ibm.icu.math.BigDecimal)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $32){
+   flag=true;
+  }/*checknull*/
+  (new Test("div201")).ok=flag;
+  try{checknull2:do{
+   ten.divide(ten,(com.ibm.icu.math.MathContext)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $33){
+   flag=true;
+  }/*checknull2*/
+  (new Test("div202")).ok=flag;
+  
+  try{checkscale:do{
+   (new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),-8,0);
+   flag=false;
+  }while(false);}
+  catch (java.lang.RuntimeException $34){e=$34;
+   flag=flag&(e.getMessage()).equals("Negative scale: -8");
+  }/*checkscale*/
+  (new Test("div203")).ok=flag;
+  
+  try{rounn:do{
+   (new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),0,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $35){ae=$35;
+   flag=(ae.getMessage()).equals("Rounding necessary");
+  }/*rounn*/
+  (new Test("div204")).ok=flag;
+  try{rounn:do{
+   (new com.ibm.icu.math.BigDecimal("1001")).divide(new com.ibm.icu.math.BigDecimal("10"),0,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $36){ae=$36;
+   flag=(ae.getMessage()).equals("Rounding necessary");
+  }/*rounn*/
+  (new Test("div205")).ok=flag;
+  try{rounn:do{
+   (new com.ibm.icu.math.BigDecimal("1001")).divide(new com.ibm.icu.math.BigDecimal("100"),1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $37){ae=$37;
+   flag=(ae.getMessage()).equals("Rounding necessary");
+  }/*rounn*/
+  (new Test("div206")).ok=flag;
+  try{rounn:do{
+   (new com.ibm.icu.math.BigDecimal("10001")).divide(new com.ibm.icu.math.BigDecimal("10000"),1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $38){ae=$38;
+   flag=(ae.getMessage()).equals("Rounding necessary");
+  }/*rounn*/
+  (new Test("div207")).ok=flag;
+  try{rounn:do{
+   (new com.ibm.icu.math.BigDecimal("1.0001")).divide(new com.ibm.icu.math.BigDecimal("1"),1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $39){ae=$39;
+   flag=(ae.getMessage()).equals("Rounding necessary");
+  }/*rounn*/
+  (new Test("div208")).ok=flag;
+  
+  try{div0:do{
+   (new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("0.00"));
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $40){ae=$40;
+   flag=(ae.getMessage()).equals("Divide by 0");
+  }/*div0*/
+  (new Test("div209")).ok=flag;
+  
+  try{checkdigits:do{
+   tenlong.divide(com.ibm.icu.math.BigDecimal.ONE,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $41){ae=$41;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("div210")).ok=flag;
+  try{checkdigits:do{
+   com.ibm.icu.math.BigDecimal.ONE.divide(tenlong,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $42){ae=$42;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("div211")).ok=flag;
+  
+  summary("divide");
+  return;}
+/* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#divideInteger} method. */
+ 
+ public void diagdivideInteger(){
+  boolean flag=false;
+  java.lang.ArithmeticException ae=null;
+  
+  (new Test("dvI001")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("101");
+  (new Test("dvI002")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("101");
+  (new Test("dvI003")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("33");
+  (new Test("dvI004")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("33");
+  (new Test("dvI005")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2");
+  (new Test("dvI006")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2");
+  (new Test("dvI007")).ok=((new com.ibm.icu.math.BigDecimal("18")).divideInteger(new com.ibm.icu.math.BigDecimal("18"),mcdef).toString()).equals("1");
+  (new Test("dvI008")).ok=((new com.ibm.icu.math.BigDecimal("1120")).divideInteger(new com.ibm.icu.math.BigDecimal("1000"),mcdef).toString()).equals("1");
+  (new Test("dvI009")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
+  (new Test("dvI010")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
+  (new Test("dvI011")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).divideInteger(new com.ibm.icu.math.BigDecimal("2.000"),mcdef).toString()).equals("0");
+  (new Test("dvI012")).ok=((new com.ibm.icu.math.BigDecimal("8.005")).divideInteger(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("1");
+  (new Test("dvI013")).ok=((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("2");
+  (new Test("dvI014")).ok=((new com.ibm.icu.math.BigDecimal("0")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");
+  (new Test("dvI015")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");
+  // MC
+  (new Test("dvI016")).ok=((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mce).toString()).equals("2");
+  (new Test("dvI017")).ok=((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mc6).toString()).equals("2");
+  
+  // Fixed --
+  (new Test("dvI021")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("101");
+  (new Test("dvI022")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("101");
+  (new Test("dvI023")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("33");
+  (new Test("dvI024")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("33");
+  (new Test("dvI025")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2");
+  (new Test("dvI026")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2");
+  (new Test("dvI027")).ok=((new com.ibm.icu.math.BigDecimal("18")).divideInteger(new com.ibm.icu.math.BigDecimal("18")).toString()).equals("1");
+  (new Test("dvI028")).ok=((new com.ibm.icu.math.BigDecimal("1120")).divideInteger(new com.ibm.icu.math.BigDecimal("1000")).toString()).equals("1");
+  (new Test("dvI029")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
+  (new Test("dvI030")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
+  (new Test("dvI031")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).divideInteger(new com.ibm.icu.math.BigDecimal("2.000")).toString()).equals("0");
+  (new Test("dvI032")).ok=((new com.ibm.icu.math.BigDecimal("8.005")).divideInteger(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("1");
+  (new Test("dvI033")).ok=((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2");
+  (new Test("dvI034")).ok=((new com.ibm.icu.math.BigDecimal("0")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");
+  (new Test("dvI035")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");
+  
+  try{checknull:do{
+   ten.divideInteger((com.ibm.icu.math.BigDecimal)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $43){
+   flag=true;
+  }/*checknull*/
+  (new Test("dvI101")).ok=flag;
+  try{checknull2:do{
+   ten.divideInteger(ten,(com.ibm.icu.math.MathContext)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $44){
+   flag=true;
+  }/*checknull2*/
+  (new Test("dvI102")).ok=flag;
+  
+  try{checkdigits:do{
+   com.ibm.icu.math.BigDecimal.ONE.divideInteger(tenlong,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $45){ae=$45;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("dvI103")).ok=flag;
+  
+  try{checkdigits:do{
+   tenlong.divideInteger(com.ibm.icu.math.BigDecimal.ONE,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $46){ae=$46;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("dvI104")).ok=flag;
+  
+  summary("divideInteger");
+  return;}
+/* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#max} method. */
+ 
+ public void diagmax(){
+  boolean flag=false;
+  java.lang.ArithmeticException ae=null;
+  
+  // we assume add/subtract test function; this and min just
+  // test existence and test the truth table
+  (new Test("max001")).ok=((new com.ibm.icu.math.BigDecimal("5")).max(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("5");
+  (new Test("max002")).ok=((new com.ibm.icu.math.BigDecimal("5")).max(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("5");
+  (new Test("max003")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("7");
+  (new Test("max004")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("7");
+  (new Test("max005")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7"),mc6).toString()).equals("7");
+  (new Test("max006")).ok=((new com.ibm.icu.math.BigDecimal("2E+3")).max(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("2000");
+  (new Test("max007")).ok=((new com.ibm.icu.math.BigDecimal("2E+3")).max(new com.ibm.icu.math.BigDecimal("7"),mc3).toString()).equals("2E+3");
+  (new Test("max008")).ok=((new com.ibm.icu.math.BigDecimal("7")).max(new com.ibm.icu.math.BigDecimal("2E+3")).toString()).equals("2000");
+  (new Test("max009")).ok=((new com.ibm.icu.math.BigDecimal("7")).max(new com.ibm.icu.math.BigDecimal("2E+3"),mc3).toString()).equals("2E+3");
+  try{checknull:do{
+   ten.max((com.ibm.icu.math.BigDecimal)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $47){
+   flag=true;
+  }/*checknull*/
+  (new Test("max010")).ok=flag;
+  try{checknull2:do{
+   ten.max(ten,(com.ibm.icu.math.MathContext)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $48){
+   flag=true;
+  }/*checknull2*/
+  (new Test("max011")).ok=flag;
+  try{checkdigits:do{
+   tenlong.max(com.ibm.icu.math.BigDecimal.ONE,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $49){ae=$49;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("max012")).ok=flag;
+  try{checkdigits:do{
+   com.ibm.icu.math.BigDecimal.ONE.max(tenlong,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $50){ae=$50;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("max013")).ok=flag;
+  summary("max");
+  return;}
+
+ /** Test the {@link BigDecimal#min} method. */
+ 
+ public void diagmin(){
+  boolean flag=false;
+  com.ibm.icu.math.BigDecimal minx=null;
+  java.lang.ArithmeticException ae=null;
+  // we assume add/subtract test function; this and max just
+  // test existence and test the truth table
+  
+  (new Test("min001")).ok=((new com.ibm.icu.math.BigDecimal("5")).min(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2");
+  (new Test("min002")).ok=((new com.ibm.icu.math.BigDecimal("5")).min(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("5");
+  (new Test("min003")).ok=((new com.ibm.icu.math.BigDecimal("2")).min(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("2");
+  (new Test("min004")).ok=((new com.ibm.icu.math.BigDecimal("2")).min(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("2");
+  (new Test("min005")).ok=((new com.ibm.icu.math.BigDecimal("1")).min(new com.ibm.icu.math.BigDecimal("7"),mc6).toString()).equals("1");
+  (new Test("min006")).ok=((new com.ibm.icu.math.BigDecimal("-2E+3")).min(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("-2000");
+  (new Test("min007")).ok=((new com.ibm.icu.math.BigDecimal("-2E+3")).min(new com.ibm.icu.math.BigDecimal("7"),mc3).toString()).equals("-2E+3");
+  (new Test("min008")).ok=((new com.ibm.icu.math.BigDecimal("7")).min(new com.ibm.icu.math.BigDecimal("-2E+3")).toString()).equals("-2000");
+  (new Test("min009")).ok=((new com.ibm.icu.math.BigDecimal("7")).min(new com.ibm.icu.math.BigDecimal("-2E+3"),mc3).toString()).equals("-2E+3");
+  try{checknull:do{
+   minx=ten;
+   minx.min((com.ibm.icu.math.BigDecimal)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $51){
+   flag=true;
+  }/*checknull*/
+  (new Test("min010")).ok=flag;
+  try{checknull2:do{
+   minx=ten;
+   minx.min(ten,(com.ibm.icu.math.MathContext)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $52){
+   flag=true;
+  }/*checknull2*/
+  (new Test("min011")).ok=flag;
+  
+  try{checkdigits:do{
+   tenlong.min(com.ibm.icu.math.BigDecimal.ONE,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $53){ae=$53;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("min012")).ok=flag;
+  try{checkdigits:do{
+   (new com.ibm.icu.math.BigDecimal(9)).min(tenlong,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $54){ae=$54;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("min013")).ok=flag;
+  summary("min");
+  return;}
+/* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#multiply} method. */
+ 
+ public void diagmultiply(){
+  boolean flag=false;
+  com.ibm.icu.math.BigDecimal l9;
+  com.ibm.icu.math.BigDecimal l77e;
+  com.ibm.icu.math.BigDecimal l12345;
+  com.ibm.icu.math.BigDecimal edge;
+  com.ibm.icu.math.BigDecimal tenedge;
+  com.ibm.icu.math.BigDecimal hunedge;
+  com.ibm.icu.math.BigDecimal opo;
+  com.ibm.icu.math.BigDecimal d1=null;
+  com.ibm.icu.math.BigDecimal d2=null;
+  java.lang.ArithmeticException oe=null;
+  java.lang.ArithmeticException ae=null;
+  
+  (new Test("mul001")).ok=((new com.ibm.icu.math.BigDecimal("2")).multiply(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("6");
+  (new Test("mul002")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("5");
+  (new Test("mul003")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("10");
+  (new Test("mul004")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("2.40");
+  (new Test("mul005")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0");
+  (new Test("mul006")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString()).equals("-2.40");
+  (new Test("mul007")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("-2.40");
+  (new Test("mul008")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0");
+  (new Test("mul009")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString()).equals("2.40");
+  (new Test("mul010")).ok=((new com.ibm.icu.math.BigDecimal("5.09")).multiply(new com.ibm.icu.math.BigDecimal("7.1"),mcdef).toString()).equals("36.139");
+  (new Test("mul011")).ok=((new com.ibm.icu.math.BigDecimal("2.5")).multiply(new com.ibm.icu.math.BigDecimal("4"),mcdef).toString()).equals("10.0");
+  (new Test("mul012")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4"),mcdef).toString()).equals("10.00");
+  (new Test("mul013")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).multiply(new com.ibm.icu.math.BigDecimal("1.00000000"),mcdef).toString()).equals("1.23456789");
+  
+  (new Test("mul014")).ok=((new com.ibm.icu.math.BigDecimal("9.999999999")).multiply(new com.ibm.icu.math.BigDecimal("9.999999999"),mcdef).toString()).equals("100.000000");
+  
+  (new Test("mul015")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4"),mcdef).toString()).equals("10.00");
+  (new Test("mul016")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4"),mc6).toString()).equals("10.00");
+  (new Test("mul017")).ok=((new com.ibm.icu.math.BigDecimal("9.999999999")).multiply(new com.ibm.icu.math.BigDecimal("9.999999999"),mc6).toString()).equals("100.000");
+  
+  
+  (new Test("mul020")).ok=((new com.ibm.icu.math.BigDecimal("2")).multiply(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("6");
+  (new Test("mul021")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("5");
+  (new Test("mul022")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("10");
+  (new Test("mul023")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2.40");
+  (new Test("mul024")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.00");
+  (new Test("mul025")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2")).toString()).equals("-2.40");
+  (new Test("mul026")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("-2.40");
+  (new Test("mul027")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.00");
+  (new Test("mul028")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2")).toString()).equals("2.40");
+  (new Test("mul029")).ok=((new com.ibm.icu.math.BigDecimal("5.09")).multiply(new com.ibm.icu.math.BigDecimal("7.1")).toString()).equals("36.139");
+  (new Test("mul030")).ok=((new com.ibm.icu.math.BigDecimal("2.5")).multiply(new com.ibm.icu.math.BigDecimal("4")).toString()).equals("10.0");
+  (new Test("mul031")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4")).toString()).equals("10.00");
+  (new Test("mul032")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).multiply(new com.ibm.icu.math.BigDecimal("1.00000000")).toString()).equals("1.2345678900000000");
+  
+  (new Test("mul033")).ok=((new com.ibm.icu.math.BigDecimal("1234.56789")).multiply(new com.ibm.icu.math.BigDecimal("-1000.00000")).toString()).equals("-1234567.8900000000");
+  
+  (new Test("mul034")).ok=((new com.ibm.icu.math.BigDecimal("-1234.56789")).multiply(new com.ibm.icu.math.BigDecimal("1000.00000")).toString()).equals("-1234567.8900000000");
+  
+  (new Test("mul035")).ok=((new com.ibm.icu.math.BigDecimal("9.999999999")).multiply(new com.ibm.icu.math.BigDecimal("9.999999999")).toString()).equals("99.999999980000000001");
+  
+  (new Test("mul036")).ok=((new com.ibm.icu.math.BigDecimal("5.00")).multiply(new com.ibm.icu.math.BigDecimal("1E-3")).toString()).equals("0.00500");
+  (new Test("mul037")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).multiply(new com.ibm.icu.math.BigDecimal("0.000")).toString()).equals("0.00000");
+  (new Test("mul038")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).multiply(new com.ibm.icu.math.BigDecimal("0E-3")).toString()).equals("0.00"); // rhs is '0'
+  // 1999.12.21: next one is a edge case if intermediate longs are used
+  (new Test("mul039")).ok=((new com.ibm.icu.math.BigDecimal("999999999999")).multiply(new com.ibm.icu.math.BigDecimal("9765625")).toString()).equals("9765624999990234375");
+  
+  l9=new com.ibm.icu.math.BigDecimal("123456789E+10");
+  l77e=new com.ibm.icu.math.BigDecimal("77E-20");
+  (new Test("mul040")).ok=(l9.multiply(new com.ibm.icu.math.BigDecimal("3456757")).toString()).equals("4267601195732730000000000");
+  (new Test("mul041")).ok=(l9.multiply(new com.ibm.icu.math.BigDecimal("3456757"),mc3).toString()).equals("4.26E+24");
+  (new Test("mul042")).ok=(l9.multiply(l77e).toString()).equals("0.95061727530000000000");
+  (new Test("mul043")).ok=(l9.multiply(l77e,mc3).toString()).equals("0.947");
+  (new Test("mul044")).ok=(l77e.multiply(l9,mc3).toString()).equals("0.947");
+  
+  l12345=new com.ibm.icu.math.BigDecimal("123.45");
+  (new Test("mul050")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mcdef).toString()).equals("1.2345E+13");
+  (new Test("mul051")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mcs).toString()).equals("1.2345E+13");
+  (new Test("mul052")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e+9"),mce).toString()).equals("123.45E+9");
+  (new Test("mul053")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e10"),mce).toString()).equals("1.2345E+12");
+  (new Test("mul054")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mce).toString()).equals("12.345E+12");
+  (new Test("mul055")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e12"),mce).toString()).equals("123.45E+12");
+  (new Test("mul056")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e13"),mce).toString()).equals("1.2345E+15");
+  
+  // test some cases that are close to exponent overflow
+  (new Test("mul060")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9e999999999"),mcs).toString()).equals("9E+999999999");
+  (new Test("mul061")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9.9e999999999"),mcs).toString()).equals("9.9E+999999999");
+  (new Test("mul062")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9.99e999999999"),mcs).toString()).equals("9.99E+999999999");
+  (new Test("mul063")).ok=(ten.multiply(new com.ibm.icu.math.BigDecimal("9e999999999"),mce).toString()).equals("90E+999999999");
+  (new Test("mul064")).ok=(ten.multiply(new com.ibm.icu.math.BigDecimal("9.9e999999999"),mce).toString()).equals("99.0E+999999999");
+  edge=new com.ibm.icu.math.BigDecimal("9.999e999999999");
+  tenedge=ten.multiply(edge,mce);
+  (new Test("mul065")).ok=(tenedge.toString()).equals("99.990E+999999999");
+  hunedge=ten.multiply(tenedge,mce);
+  (new Test("mul066")).ok=(hunedge.toString()).equals("999.900E+999999999");
+  opo=new com.ibm.icu.math.BigDecimal("0.1"); // one tenth
+  (new Test("mul067")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9e-999999998"),mcs).toString()).equals("9E-999999999");
+  (new Test("mul068")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99e-999999998"),mcs).toString()).equals("9.9E-999999998");
+  (new Test("mul069")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999998"),mcs).toString()).equals("9.99E-999999997");
+  
+  (new Test("mul070")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9e-999999998"),mce).toString()).equals("9E-999999999");
+  (new Test("mul071")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99e-999999998"),mce).toString()).equals("99E-999999999");
+  (new Test("mul072")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999998"),mce).toString()).equals("999E-999999999");
+  (new Test("mul073")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999997"),mce).toString()).equals("9.99E-999999996");
+  (new Test("mul074")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9999e-999999997"),mce).toString()).equals("99.99E-999999996");
+  (new Test("mul074")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99999e-999999997"),mce).toString()).equals("999.99E-999999996");
+  
+  // test some intermediate lengths
+  (new Test("mul080")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789"),mcs).toString()).equals("12345678.9");
+  (new Test("mul081")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("12345678901234"),mcs).toString()).equals("1.23456789E+12");
+  (new Test("mul082")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789123456789"),mcs).toString()).equals("1.23456789E+16");
+  (new Test("mul083")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789"),mcfd).toString()).equals("12345678.9");
+  (new Test("mul084")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("12345678901234"),mcfd).toString()).equals("1234567890123.4");
+  (new Test("mul085")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789123456789"),mcfd).toString()).equals("12345678912345678.9");
+  
+  (new Test("mul090")).ok=((new com.ibm.icu.math.BigDecimal("123456789")).multiply(opo,mcs).toString()).equals("12345678.9");
+  (new Test("mul091")).ok=((new com.ibm.icu.math.BigDecimal("12345678901234")).multiply(opo,mcs).toString()).equals("1.23456789E+12");
+  (new Test("mul092")).ok=((new com.ibm.icu.math.BigDecimal("123456789123456789")).multiply(opo,mcs).toString()).equals("1.23456789E+16");
+  (new Test("mul093")).ok=((new com.ibm.icu.math.BigDecimal("123456789")).multiply(opo,mcfd).toString()).equals("12345678.9");
+  (new Test("mul094")).ok=((new com.ibm.icu.math.BigDecimal("12345678901234")).multiply(opo,mcfd).toString()).equals("1234567890123.4");
+  (new Test("mul095")).ok=((new com.ibm.icu.math.BigDecimal("123456789123456789")).multiply(opo,mcfd).toString()).equals("12345678912345678.9");
+  
+  // test some more edge cases and carries
+  (new Test("mul101")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9")).toString()).equals("81");
+  (new Test("mul102")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90")).toString()).equals("810");
+  (new Test("mul103")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900")).toString()).equals("8100");
+  (new Test("mul104")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000")).toString()).equals("81000");
+  (new Test("mul105")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000")).toString()).equals("810000");
+  (new Test("mul106")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000")).toString()).equals("8100000");
+  (new Test("mul107")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000")).toString()).equals("81000000");
+  (new Test("mul108")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000")).toString()).equals("810000000");
+  (new Test("mul109")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000")).toString()).equals("8100000000");
+  (new Test("mul110")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000")).toString()).equals("81000000000");
+  (new Test("mul111")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000")).toString()).equals("810000000000");
+  (new Test("mul112")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000")).toString()).equals("8100000000000");
+  (new Test("mul113")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000")).toString()).equals("81000000000000");
+  (new Test("mul114")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000")).toString()).equals("810000000000000");
+  (new Test("mul115")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000")).toString()).equals("8100000000000000");
+  (new Test("mul116")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000")).toString()).equals("81000000000000000");
+  (new Test("mul117")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000")).toString()).equals("810000000000000000");
+  (new Test("mul118")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000000")).toString()).equals("8100000000000000000");
+  (new Test("mul119")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000000")).toString()).equals("81000000000000000000");
+  (new Test("mul120")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000000")).toString()).equals("810000000000000000000");
+  (new Test("mul121")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000000000")).toString()).equals("8100000000000000000000");
+  (new Test("mul122")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000000000")).toString()).equals("81000000000000000000000");
+  (new Test("mul123")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000000000")).toString()).equals("810000000000000000000000");
+  // test some more edge cases without carries
+  (new Test("mul131")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("9");
+  (new Test("mul132")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30")).toString()).equals("90");
+  (new Test("mul133")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300")).toString()).equals("900");
+  (new Test("mul134")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000")).toString()).equals("9000");
+  (new Test("mul135")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000")).toString()).equals("90000");
+  (new Test("mul136")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000")).toString()).equals("900000");
+  (new Test("mul137")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000")).toString()).equals("9000000");
+  (new Test("mul138")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000")).toString()).equals("90000000");
+  (new Test("mul139")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000")).toString()).equals("900000000");
+  (new Test("mul140")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000")).toString()).equals("9000000000");
+  (new Test("mul141")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000")).toString()).equals("90000000000");
+  (new Test("mul142")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000")).toString()).equals("900000000000");
+  (new Test("mul143")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000")).toString()).equals("9000000000000");
+  (new Test("mul144")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000")).toString()).equals("90000000000000");
+  (new Test("mul145")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000")).toString()).equals("900000000000000");
+  (new Test("mul146")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000")).toString()).equals("9000000000000000");
+  (new Test("mul147")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000")).toString()).equals("90000000000000000");
+  (new Test("mul148")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000000")).toString()).equals("900000000000000000");
+  (new Test("mul149")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000000")).toString()).equals("9000000000000000000");
+  (new Test("mul150")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000000")).toString()).equals("90000000000000000000");
+  (new Test("mul151")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000000000")).toString()).equals("900000000000000000000");
+  (new Test("mul152")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000000000")).toString()).equals("9000000000000000000000");
+  (new Test("mul153")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000000000")).toString()).equals("90000000000000000000000");
+  
+  try{checknull:do{
+   ten.multiply((com.ibm.icu.math.BigDecimal)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $55){
+   flag=true;
+  }/*checknull*/
+  (new Test("mul200")).ok=flag;
+  try{checknull2:do{
+   ten.multiply(ten,(com.ibm.icu.math.MathContext)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $56){
+   flag=true;
+  }/*checknull2*/
+  (new Test("mul201")).ok=flag;
+  
+  try{checkover:do{
+   d1=new com.ibm.icu.math.BigDecimal("-1.23456789012345E-0");
+   d2=new com.ibm.icu.math.BigDecimal("9E+999999999");
+   d1.multiply(d2,mcdef); // marginal overflow
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $57){oe=$57;
+   flag=(oe.getMessage()).equals("Exponent Overflow: 1000000000");
+  }/*checkover*/
+  (new Test("mul202")).ok=flag;
+  try{checkover:do{
+   d1=new com.ibm.icu.math.BigDecimal("112");
+   d2=new com.ibm.icu.math.BigDecimal("9E+999999999");
+   d1.multiply(d2,mce); // marginal overflow, engineering
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $58){oe=$58;
+   flag=(oe.getMessage()).equals("Exponent Overflow: 1000000002");
+  }/*checkover*/
+  (new Test("mul203")).ok=flag;
+  
+  try{checkover:do{
+   d1=new com.ibm.icu.math.BigDecimal("0.9");
+   d2=new com.ibm.icu.math.BigDecimal("1E-999999999");
+   d1.multiply(d2,mcdef); // marginal negative overflow
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $59){oe=$59;
+   flag=(oe.getMessage()).equals("Exponent Overflow: -1000000000");
+  }/*checkover*/
+  (new Test("mul204")).ok=flag;
+  try{checkover:do{
+   d1=new com.ibm.icu.math.BigDecimal("0.9");
+   d2=new com.ibm.icu.math.BigDecimal("1E-999999999");
+   d1.multiply(d2,mce); // marginal negative overflow, engineering
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $60){oe=$60;
+   flag=(oe.getMessage()).equals("Exponent Overflow: -1000000002");
+  }/*checkover*/
+  (new Test("mul205")).ok=flag;
+  
+  try{checkdigits:do{
+   tenlong.multiply(com.ibm.icu.math.BigDecimal.ONE,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $61){ae=$61;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("mul206")).ok=flag;
+  try{checkdigits:do{
+   com.ibm.icu.math.BigDecimal.TEN.multiply(tenlong,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $62){ae=$62;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("mul207")).ok=flag;
+  
+  summary("multiply");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#negate} method. */
+ 
+ public void diagnegate(){
+  boolean flag=false;
+  java.lang.ArithmeticException ae=null;
+  
+  (new Test("neg001")).ok=((new com.ibm.icu.math.BigDecimal("2")).negate().toString()).equals("-2");
+  (new Test("neg002")).ok=((new com.ibm.icu.math.BigDecimal("-2")).negate().toString()).equals("2");
+  (new Test("neg003")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).negate(mcdef).toString()).equals("-2.00");
+  (new Test("neg004")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).negate(mcdef).toString()).equals("2.00");
+  (new Test("neg005")).ok=((new com.ibm.icu.math.BigDecimal("0")).negate(mcdef).toString()).equals("0");
+  (new Test("neg006")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).negate(mcdef).toString()).equals("0");
+  (new Test("neg007")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).negate(mcdef).toString()).equals("0");
+  (new Test("neg008")).ok=((new com.ibm.icu.math.BigDecimal("00")).negate(mcdef).toString()).equals("0");
+  
+  (new Test("neg010")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).negate().toString()).equals("-2.00");
+  (new Test("neg011")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).negate().toString()).equals("2.00");
+  (new Test("neg012")).ok=((new com.ibm.icu.math.BigDecimal("0")).negate().toString()).equals("0");
+  (new Test("neg013")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).negate().toString()).equals("0.00");
+  (new Test("neg014")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).negate().toString()).equals("0.0");
+  (new Test("neg015")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).negate().toString()).equals("0.00");
+  (new Test("neg016")).ok=((new com.ibm.icu.math.BigDecimal("00")).negate().toString()).equals("0");
+  
+  (new Test("neg020")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate().toString()).equals("2000000");
+  (new Test("neg021")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate(mcdef).toString()).equals("2000000");
+  (new Test("neg022")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate(mc6).toString()).equals("2.00000E+6");
+  (new Test("neg023")).ok=((new com.ibm.icu.math.BigDecimal("2000000")).negate(mc6).toString()).equals("-2.00000E+6");
+  
+  try{checknull:do{
+   ten.negate((com.ibm.icu.math.MathContext)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $63){
+   flag=true;
+  }/*checknull*/
+  (new Test("neg100")).ok=flag;
+  
+  try{checkdigits:do{
+   tenlong.negate(mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $64){ae=$64;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("neg101")).ok=flag;
+  summary("negate");
+  return;}
+/* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#plus} method. */
+ 
+ public void diagplus(){
+  boolean flag=false;
+  com.ibm.icu.math.MathContext mche1;
+  java.lang.ArithmeticException ae=null;
+  
+  (new Test("plu001")).ok=((new com.ibm.icu.math.BigDecimal("2")).plus(mcdef).toString()).equals("2");
+  (new Test("plu002")).ok=((new com.ibm.icu.math.BigDecimal("-2")).plus(mcdef).toString()).equals("-2");
+  (new Test("plu003")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).plus(mcdef).toString()).equals("2.00");
+  (new Test("plu004")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).plus(mcdef).toString()).equals("-2.00");
+  (new Test("plu005")).ok=((new com.ibm.icu.math.BigDecimal("0")).plus(mcdef).toString()).equals("0");
+  (new Test("plu006")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).plus(mcdef).toString()).equals("0");
+  (new Test("plu007")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).plus(mcdef).toString()).equals("0");
+  (new Test("plu008")).ok=((new com.ibm.icu.math.BigDecimal("00")).plus(mcdef).toString()).equals("0");
+  
+  (new Test("plu010")).ok=((new com.ibm.icu.math.BigDecimal("2")).plus().toString()).equals("2");
+  (new Test("plu011")).ok=((new com.ibm.icu.math.BigDecimal("-2")).plus().toString()).equals("-2");
+  (new Test("plu012")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).plus().toString()).equals("2.00");
+  (new Test("plu013")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).plus().toString()).equals("-2.00");
+  (new Test("plu014")).ok=((new com.ibm.icu.math.BigDecimal("0")).plus().toString()).equals("0");
+  (new Test("plu015")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).plus().toString()).equals("0.00");
+  (new Test("plu016")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).plus().toString()).equals("0.0");
+  (new Test("plu017")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).plus().toString()).equals("0.00");
+  (new Test("plu018")).ok=((new com.ibm.icu.math.BigDecimal("00")).plus().toString()).equals("0");
+  
+  (new Test("plu020")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus().toString()).equals("-2000000");
+  (new Test("plu021")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus(mcdef).toString()).equals("-2000000");
+  (new Test("plu022")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus(mc6).toString()).equals("-2.00000E+6");
+  (new Test("plu023")).ok=((new com.ibm.icu.math.BigDecimal("2000000")).plus(mc6).toString()).equals("2.00000E+6");
+  
+  // try some exotic but silly rounding [format checks more varieties]
+  // [this mostly ensures we can set up and pass the setting]
+  mche1=new com.ibm.icu.math.MathContext(1,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);
+  (new Test("plu030")).ok=((new com.ibm.icu.math.BigDecimal("0.24")).plus(mche1).toString()).equals("0.2");
+  (new Test("plu031")).ok=((new com.ibm.icu.math.BigDecimal("0.25")).plus(mche1).toString()).equals("0.2");
+  (new Test("plu032")).ok=((new com.ibm.icu.math.BigDecimal("0.26")).plus(mche1).toString()).equals("0.3");
+  (new Test("plu033")).ok=((new com.ibm.icu.math.BigDecimal("0.14")).plus(mche1).toString()).equals("0.1");
+  (new Test("plu034")).ok=((new com.ibm.icu.math.BigDecimal("0.15")).plus(mche1).toString()).equals("0.2");
+  (new Test("plu035")).ok=((new com.ibm.icu.math.BigDecimal("0.16")).plus(mche1).toString()).equals("0.2");
+  
+  (new Test("plu040")).ok=((new com.ibm.icu.math.BigDecimal("0.251")).plus(mche1).toString()).equals("0.3");
+  (new Test("plu041")).ok=((new com.ibm.icu.math.BigDecimal("0.151")).plus(mche1).toString()).equals("0.2");
+  
+  (new Test("plu050")).ok=((new com.ibm.icu.math.BigDecimal("-0.24")).plus(mche1).toString()).equals("-0.2");
+  (new Test("plu051")).ok=((new com.ibm.icu.math.BigDecimal("-0.25")).plus(mche1).toString()).equals("-0.2");
+  (new Test("plu052")).ok=((new com.ibm.icu.math.BigDecimal("-0.26")).plus(mche1).toString()).equals("-0.3");
+  (new Test("plu053")).ok=((new com.ibm.icu.math.BigDecimal("-0.14")).plus(mche1).toString()).equals("-0.1");
+  (new Test("plu054")).ok=((new com.ibm.icu.math.BigDecimal("-0.15")).plus(mche1).toString()).equals("-0.2");
+  (new Test("plu055")).ok=((new com.ibm.icu.math.BigDecimal("-0.16")).plus(mche1).toString()).equals("-0.2");
+  
+  // more fixed, potential LHS swaps if done by add 0
+  (new Test("plu060")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).plus().toString()).equals("-0.0000056267");
+  (new Test("plu061")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).plus().toString()).equals("-0.56267");
+  (new Test("plu062")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).plus().toString()).equals("-562.67");
+  (new Test("plu063")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).plus().toString()).equals("-5626.7");
+  (new Test("plu065")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).plus().toString()).equals("-56267");
+  
+  try{checknull:do{
+   ten.plus((com.ibm.icu.math.MathContext)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $65){
+   flag=true;
+  }/*checknull*/
+  (new Test("plu100")).ok=flag;
+  
+  try{checkdigits:do{
+   tenlong.plus(mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $66){ae=$66;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("plu101")).ok=flag;
+  summary("plus");
+  return;}
+/* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#pow} method. */
+ 
+ public void diagpow(){
+  boolean flag;
+  com.ibm.icu.math.BigDecimal x;
+  com.ibm.icu.math.BigDecimal temp;
+  int n=0;
+  com.ibm.icu.math.BigDecimal vx;
+  com.ibm.icu.math.BigDecimal vn;
+  java.lang.ArithmeticException ae=null;
+  flag=true;
+  (new Test("pow001")).ok="1".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString());
+  (new Test("pow002")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString());
+  (new Test("pow003")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1.00"),mcdef).toString());
+  (new Test("pow004")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2.00"),mcdef).toString());
+  (new Test("pow005")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2.000000000"),mcdef).toString());
+  (new Test("pow006")).ok=("1E-8").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-8"),mcdef).toString());
+  (new Test("pow007")).ok=("1E-7").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-7"),mcdef).toString());
+  (new Test("pow008")).ok="0.000001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-6"),mcdef).toString());
+  (new Test("pow009")).ok="0.00001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-5"),mcdef).toString());
+  (new Test("pow010")).ok="0.0001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-4"),mcdef).toString());
+  (new Test("pow011")).ok="0.001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString());
+  (new Test("pow012")).ok="0.01".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString());
+  (new Test("pow013")).ok="0.1".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString());
+  (new Test("pow014")).ok="1".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString());
+  (new Test("pow015")).ok="10".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString());
+  (new Test("pow016")).ok="100000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("8"),mcdef).toString());
+  (new Test("pow017")).ok=("1E+9").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("9"),mcdef).toString());
+  (new Test("pow018")).ok=("1E+99").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("99"),mcdef).toString());
+  (new Test("pow019")).ok=("1E+999999999").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999999"),mcdef).toString());
+  (new Test("pow020")).ok=("1E+999999998").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999998"),mcdef).toString());
+  (new Test("pow021")).ok=("1E+999999997").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999997"),mcdef).toString());
+  (new Test("pow022")).ok=("1E+333333333").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("333333333"),mcdef).toString());
+  (new Test("pow023")).ok=("1E-333333333").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-333333333"),mcdef).toString());
+  (new Test("pow024")).ok=("1E-999999998").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-999999998"),mcdef).toString());
+  (new Test("pow025")).ok=("1E-999999999").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-999999999"),mcdef).toString());
+  (new Test("pow026")).ok="0.5".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString());
+  (new Test("pow027")).ok="0.25".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString());
+  (new Test("pow028")).ok="0.0625".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-4"),mcdef).toString());
+  
+  (new Test("pow050")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");
+  (new Test("pow051")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("0");
+  (new Test("pow052")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");
+  (new Test("pow053")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");
+  (new Test("pow054")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1");
+  (new Test("pow055")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
+  (new Test("pow056")).ok=((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");
+  (new Test("pow057")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999999"),mcdef).toString()).equals("1E+999999999");
+  (new Test("pow058")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999998"),mcdef).toString()).equals("1E+999999998");
+  (new Test("pow059")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999997"),mcdef).toString()).equals("1E+999999997");
+  (new Test("pow060")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("333333333"),mcdef).toString()).equals("1E+333333333");
+  (new Test("pow061")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("77"),mcdef).toString()).equals("1E+77");
+  (new Test("pow062")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("22"),mcdef).toString()).equals("1E+22");
+  (new Test("pow063")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-77"),mcdef).toString()).equals("1E-77");
+  (new Test("pow064")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-22"),mcdef).toString()).equals("1E-22");
+  (new Test("pow065")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString()).equals("0.5");
+  (new Test("pow066")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString()).equals("0.25");
+  (new Test("pow067")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-4"),mcdef).toString()).equals("0.0625");
+  (new Test("pow068")).ok=((new com.ibm.icu.math.BigDecimal("6.0")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("36");
+  (new Test("pow069")).ok=((new com.ibm.icu.math.BigDecimal("-3")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("9");/* from book */
+  (new Test("pow070")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).pow(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("64");/* from book */
+  
+  // 1998.12.14 Next test removed as pow() no longer rounds RHS [as per ANSI]
+  // Test('pow071').ok=BigDecimal('2').pow(BigDecimal('2.000000001'),mcdef).toString == '4'/* check input rounding */
+  
+  /* General tests from original Rexx diagnostics */
+  x=new com.ibm.icu.math.BigDecimal("0.5");
+  temp=com.ibm.icu.math.BigDecimal.ONE;
+  flag=true;
+  {n=1;n:for(;n<=10;n++){
+   temp=temp.multiply(x).divide(com.ibm.icu.math.BigDecimal.ONE);
+   flag=flag&(x.pow(new com.ibm.icu.math.BigDecimal(n),mcdef).toString()).equals(temp.toString());
+   }
+  }/*n*/
+  (new Test("pow080")).ok=flag;
+  
+  x=new com.ibm.icu.math.BigDecimal("2");
+  temp=com.ibm.icu.math.BigDecimal.ONE;
+  flag=true;
+  {n=1;n:for(;n<=29;n++){
+   temp=temp.multiply(x).divide(com.ibm.icu.math.BigDecimal.ONE);
+   flag=flag&(x.pow(new com.ibm.icu.math.BigDecimal(n),mcdef).toString()).equals(temp.toString());
+   flag=flag&(x.pow(new com.ibm.icu.math.BigDecimal((int)-n),mcdef).toString()).equals(com.ibm.icu.math.BigDecimal.ONE.divide(temp,mcdef).toString());
+   /* Note that rounding errors are possible for larger "n" */
+   /* due to the information content of the exponent        */
+   }
+  }/*n*/
+  (new Test("pow081")).ok=flag;
+  
+  /* The Vienna case.  Checks both setup and 1/acc working precision */
+  // Modified 1998.12.14 as RHS no longer rounded before use (must fit)
+  // Modified 1990.02.04 as LHS is now rounded (instead of truncated to guard)
+  vx=new com.ibm.icu.math.BigDecimal("123456789E+10"); // lhs .. rounded to 1.23E+18
+  vn=new com.ibm.icu.math.BigDecimal("-1.23000e+2"); // rhs .. [was: -1.23455e+2, rounds to -123]
+  (new Test("pow090")).ok=(vx.pow(vn,mc3).toString()).equals("8.74E-2226");
+  
+  //- fixed point versions ---
+  (new Test("pow101")).ok="1".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0")).toString());
+  (new Test("pow102")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1")).toString());
+  (new Test("pow103")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1.00")).toString());
+  (new Test("pow104")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2")).toString());
+  (new Test("pow105")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2.00")).toString());
+  (new Test("pow106")).ok="10".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("1")).toString());
+  (new Test("pow107")).ok="100000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("8")).toString());
+  (new Test("pow108")).ok="1000000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("9")).toString());
+  (new Test("pow109")).ok="10000000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("10")).toString());
+  (new Test("pow110")).ok="1".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("0")).toString());
+  (new Test("pow111")).ok="16".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("4")).toString());
+  (new Test("pow112")).ok="256".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("8")).toString());
+  (new Test("pow113")).ok="1024".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("10")).toString());
+  (new Test("pow114")).ok="1.0510100501".equals((new com.ibm.icu.math.BigDecimal("1.01")).pow(new com.ibm.icu.math.BigDecimal("5")).toString());
+  
+  (new Test("pow120")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");
+  (new Test("pow121")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("0");
+  (new Test("pow122")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");
+  (new Test("pow123")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");
+  (new Test("pow144")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("1");
+  (new Test("pow125")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
+  (new Test("pow126")).ok=((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");
+  (new Test("pow127")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("10000000");
+  (new Test("pow128")).ok=((new com.ibm.icu.math.BigDecimal("6.0")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("36.00");
+  (new Test("pow129")).ok=((new com.ibm.icu.math.BigDecimal("6.00")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("36.0000");
+  (new Test("pow130")).ok=((new com.ibm.icu.math.BigDecimal("6.000")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("36.000000");
+  (new Test("pow131")).ok=((new com.ibm.icu.math.BigDecimal("-3")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("9");
+  (new Test("pow132")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("64");
+  
+  /* errors */
+  try{checknull:do{
+   ten.pow((com.ibm.icu.math.BigDecimal)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $67){
+   flag=true;
+  }/*checknull*/
+  (new Test("pow150")).ok=flag;
+  try{checknull2:do{
+   ten.pow(ten,(com.ibm.icu.math.MathContext)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $68){
+   flag=true;
+  }/*checknull2*/
+  (new Test("pow151")).ok=flag;
+  
+  flag=true;
+  try{checkdigits:do{
+   tenlong.pow(com.ibm.icu.math.BigDecimal.ONE,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $69){ae=$69;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("pow152")).ok=flag;
+  
+  try{checkdigits:do{
+   com.ibm.icu.math.BigDecimal.ONE.pow(tenlong,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $70){ae=$70;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("pow153")).ok=flag;
+  
+  try{checkpos:do{
+   com.ibm.icu.math.BigDecimal.ONE.pow(new com.ibm.icu.math.BigDecimal("-71"));
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $71){ae=$71;
+   flag=(ae.getMessage()).equals("Negative power: -71");
+  }/*checkpos*/
+  (new Test("pow154")).ok=flag;
+  
+  try{checkwhole:do{
+   com.ibm.icu.math.BigDecimal.ONE.pow(new com.ibm.icu.math.BigDecimal("1234"),mc3);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $72){ae=$72;
+   flag=(ae.getMessage()).equals("Too many digits: 1234");
+  }/*checkwhole*/
+  (new Test("pow155")).ok=flag;
+  
+  try{checkwhole1:do{
+   com.ibm.icu.math.BigDecimal.ONE.pow(new com.ibm.icu.math.BigDecimal("12.34e+2"),mc3);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $73){ae=$73;
+   flag=(ae.getMessage()).equals("Too many digits: 1.234E+3");
+  }/*checkwhole1*/
+  (new Test("pow156")).ok=flag;
+  
+  try{checkwhole2:do{
+   com.ibm.icu.math.BigDecimal.ONE.pow(new com.ibm.icu.math.BigDecimal("12.4"),mcdef);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $74){ae=$74;
+   flag=(ae.getMessage()).equals("Decimal part non-zero: 12.4");
+  }/*checkwhole2*/
+  (new Test("pow157")).ok=flag;
+  
+  try{checkwhole3:do{
+   com.ibm.icu.math.BigDecimal.ONE.pow(new com.ibm.icu.math.BigDecimal("1.01"),mcdef);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $75){ae=$75;
+   flag=(ae.getMessage()).equals("Decimal part non-zero: 1.01");
+  }/*checkwhole3*/
+  (new Test("pow158")).ok=flag;
+  
+  try{checkwhole4:do{
+   com.ibm.icu.math.BigDecimal.ONE.pow(new com.ibm.icu.math.BigDecimal("1.000000001"),mcdef);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $76){ae=$76;
+   flag=(ae.getMessage()).equals("Decimal part non-zero: 1.000000001");
+  }/*checkwhole4*/
+  (new Test("pow159")).ok=flag;
+  
+  try{checkwhole5:do{
+   com.ibm.icu.math.BigDecimal.ONE.pow(new com.ibm.icu.math.BigDecimal("1.000000001"),mc3);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $77){ae=$77;
+   flag=(ae.getMessage()).equals("Decimal part non-zero: 1.000000001");
+  }/*checkwhole5*/
+  (new Test("pow160")).ok=flag;
+  
+  try{checkwhole6:do{
+   com.ibm.icu.math.BigDecimal.ONE.pow(new com.ibm.icu.math.BigDecimal("5.67E-987654321"),mc3);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $78){ae=$78;
+   flag=(ae.getMessage()).equals("Decimal part non-zero: 5.67E-987654321");
+  }/*checkwhole6*/
+  (new Test("pow161")).ok=flag;
+  
+  summary("pow");
+  return;}
+
+ /*--------------------------------------------------------------------*/
+ 
+ /** Test the {@link BigDecimal#remainder} method. */
+ 
+ public void diagremainder(){
+  boolean flag=false;
+  java.lang.ArithmeticException ae=null;
+  
+  (new Test("rem001")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("1");
+  (new Test("rem002")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("5"),mcdef).toString()).equals("0");
+  (new Test("rem003")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("10"),mcdef).toString()).equals("3");
+  (new Test("rem004")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("50"),mcdef).toString()).equals("13");
+  (new Test("rem005")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("100"),mcdef).toString()).equals("13");
+  (new Test("rem006")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("1000"),mcdef).toString()).equals("13");
+  (new Test("rem007")).ok=((new com.ibm.icu.math.BigDecimal(".13")).remainder(one).toString()).equals("0.13");
+  (new Test("rem008")).ok=((new com.ibm.icu.math.BigDecimal("0.133")).remainder(one).toString()).equals("0.133");
+  (new Test("rem009")).ok=((new com.ibm.icu.math.BigDecimal("0.1033")).remainder(one).toString()).equals("0.1033");
+  (new Test("rem010")).ok=((new com.ibm.icu.math.BigDecimal("1.033")).remainder(one).toString()).equals("0.033");
+  (new Test("rem011")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(one).toString()).equals("0.33");
+  (new Test("rem012")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("0.33");
+  (new Test("rem013")).ok=((new com.ibm.icu.math.BigDecimal("103.3")).remainder(com.ibm.icu.math.BigDecimal.ONE).toString()).equals("0.3");
+  (new Test("rem014")).ok=((new com.ibm.icu.math.BigDecimal("133")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");
+  (new Test("rem015")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");
+  (new Test("rem016")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(new com.ibm.icu.math.BigDecimal(50),mcdef).toString()).equals("33");
+  (new Test("rem017")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).remainder(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("2.0");
+  (new Test("rem018")).ok=((new com.ibm.icu.math.BigDecimal("102.0")).remainder(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("0");
+  (new Test("rem019")).ok=((new com.ibm.icu.math.BigDecimal("103.0")).remainder(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("1.0");
+  (new Test("rem020")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).remainder(one).toString()).equals("0.40");
+  (new Test("rem021")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(one).toString()).equals("0.400");
+  (new Test("rem022")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(one).toString()).equals("0.4");
+  (new Test("rem023")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.4");
+  (new Test("rem024")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.400");
+  (new Test("rem025")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.1");
+  (new Test("rem026")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.30"),mcdef).toString()).equals("0.10");
+  (new Test("rem027")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.300"),mcdef).toString()).equals("0.100");
+  (new Test("rem028")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3000"),mcdef).toString()).equals("0.1000");
+  (new Test("rem029")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.1");
+  (new Test("rem030")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.10");
+  (new Test("rem031")).ok=((new com.ibm.icu.math.BigDecimal("1.000")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.100");
+  (new Test("rem032")).ok=((new com.ibm.icu.math.BigDecimal("1.0000")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.1000");
+  (new Test("rem033")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("2.001"),mcdef).toString()).equals("0.5");
+  
+  (new Test("rem040")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.5000001"),mcdef).toString()).equals("0.5");
+  (new Test("rem041")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.50000001"),mcdef).toString()).equals("0.5");
+  (new Test("rem042")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.500000001"),mcdef).toString()).equals("0.5");
+  (new Test("rem043")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.5000000001"),mcdef).toString()).equals("0");
+  (new Test("rem044")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.50000000001"),mcdef).toString()).equals("0");
+  (new Test("rem045")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.4999999"),mcdef).toString()).equals("1E-7");
+  (new Test("rem046")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.49999999"),mcdef).toString()).equals("1E-8");
+  (new Test("rem047")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.499999999"),mcdef).toString()).equals("1E-9");
+  (new Test("rem048")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.4999999999"),mcdef).toString()).equals("0");
+  (new Test("rem049")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.49999999999"),mcdef).toString()).equals("0");
+  
+  (new Test("rem050")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).remainder(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("0.03");
+  (new Test("rem051")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
+  (new Test("rem052")).ok=((new com.ibm.icu.math.BigDecimal("4.1")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.1");
+  (new Test("rem053")).ok=((new com.ibm.icu.math.BigDecimal("4.01")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.01");
+  (new Test("rem054")).ok=((new com.ibm.icu.math.BigDecimal("4.001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.001");
+  (new Test("rem055")).ok=((new com.ibm.icu.math.BigDecimal("4.0001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.0001");
+  (new Test("rem056")).ok=((new com.ibm.icu.math.BigDecimal("4.00001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.00001");
+  (new Test("rem057")).ok=((new com.ibm.icu.math.BigDecimal("4.000001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.000001");
+  (new Test("rem058")).ok=((new com.ibm.icu.math.BigDecimal("4.0000001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1E-7");
+  
+  (new Test("rem060")).ok=((new com.ibm.icu.math.BigDecimal("1.2")).remainder(new com.ibm.icu.math.BigDecimal("0.7345"),mcdef).toString()).equals("0.4655");
+  (new Test("rem061")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("12"),mcdef).toString()).equals("0.8");
+  (new Test("rem062")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.2"),mcdef).toString()).equals("0");
+  (new Test("rem063")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.2");
+  (new Test("rem064")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("12"),mcdef).toString()).equals("0.800");
+  (new Test("rem065")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("1.7"),mcdef).toString()).equals("0.800");
+  (new Test("rem066")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.400");
+  
+  // MC --
+  (new Test("rem071")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mc6).toString()).equals("0.400");
+  (new Test("rem072")).ok=((new com.ibm.icu.math.BigDecimal("12345678900000")).remainder(new com.ibm.icu.math.BigDecimal("12e+12"),mc3).toString()).equals("3E+11");
+  
+  // Fixed --
+  (new Test("rem101")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");
+  (new Test("rem102")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("0");
+  (new Test("rem103")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("10")).toString()).equals("3");
+  (new Test("rem104")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("50")).toString()).equals("13");
+  (new Test("rem105")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("100")).toString()).equals("13");
+  (new Test("rem106")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("1000")).toString()).equals("13");
+  (new Test("rem107")).ok=((new com.ibm.icu.math.BigDecimal(".13")).remainder(one).toString()).equals("0.13");
+  (new Test("rem108")).ok=((new com.ibm.icu.math.BigDecimal("0.133")).remainder(one).toString()).equals("0.133");
+  (new Test("rem109")).ok=((new com.ibm.icu.math.BigDecimal("0.1033")).remainder(one).toString()).equals("0.1033");
+  (new Test("rem110")).ok=((new com.ibm.icu.math.BigDecimal("1.033")).remainder(one).toString()).equals("0.033");
+  (new Test("rem111")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(one).toString()).equals("0.33");
+  (new Test("rem112")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("0.33");
+  (new Test("rem113")).ok=((new com.ibm.icu.math.BigDecimal("103.3")).remainder(com.ibm.icu.math.BigDecimal.ONE).toString()).equals("0.3");
+  (new Test("rem114")).ok=((new com.ibm.icu.math.BigDecimal("133")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");
+  (new Test("rem115")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");
+  (new Test("rem116")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(new com.ibm.icu.math.BigDecimal(50)).toString()).equals("33");
+  (new Test("rem117")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).remainder(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("2.0");
+  (new Test("rem118")).ok=((new com.ibm.icu.math.BigDecimal("102.0")).remainder(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("0");
+  (new Test("rem119")).ok=((new com.ibm.icu.math.BigDecimal("103.0")).remainder(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("1.0");
+  (new Test("rem120")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).remainder(one).toString()).equals("0.40");
+  (new Test("rem121")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(one).toString()).equals("0.400");
+  (new Test("rem122")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(one).toString()).equals("0.4");
+  (new Test("rem123")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(new com.ibm.icu.math.BigDecimal(2)).toString()).equals("0.4");
+  (new Test("rem124")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2)).toString()).equals("0.400");
+  (new Test("rem125")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.1");
+  (new Test("rem126")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.30")).toString()).equals("0.10");
+  (new Test("rem127")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.300")).toString()).equals("0.100");
+  (new Test("rem128")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3000")).toString()).equals("0.1000");
+  (new Test("rem129")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.1");
+  (new Test("rem130")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.10");
+  (new Test("rem131")).ok=((new com.ibm.icu.math.BigDecimal("1.000")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.100");
+  (new Test("rem132")).ok=((new com.ibm.icu.math.BigDecimal("1.0000")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.1000");
+  (new Test("rem133")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("2.001")).toString()).equals("0.5");
+  (new Test("rem134")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.500000001")).toString()).equals("0.5");
+  (new Test("rem135")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.5000000001")).toString()).equals("0.5");
+  (new Test("rem136")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).remainder(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("0.03");
+  (new Test("rem137")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
+  (new Test("rem138")).ok=((new com.ibm.icu.math.BigDecimal("4.1")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.1");
+  (new Test("rem139")).ok=((new com.ibm.icu.math.BigDecimal("4.01")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.01");
+  (new Test("rem140")).ok=((new com.ibm.icu.math.BigDecimal("4.001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.001");
+  (new Test("rem141")).ok=((new com.ibm.icu.math.BigDecimal("4.0001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.0001");
+  (new Test("rem142")).ok=((new com.ibm.icu.math.BigDecimal("4.00001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.00001");
+  (new Test("rem143")).ok=((new com.ibm.icu.math.BigDecimal("4.000001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.000001");
+  (new Test("rem144")).ok=((new com.ibm.icu.math.BigDecimal("4.0000001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.0000001"); // 1E-7, plain
+  (new Test("rem145")).ok=((new com.ibm.icu.math.BigDecimal("1.2")).remainder(new com.ibm.icu.math.BigDecimal("0.7345")).toString()).equals("0.4655");
+  (new Test("rem146")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("12")).toString()).equals("0.8");
+  (new Test("rem147")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.2")).toString()).equals("0");
+  (new Test("rem148")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.2");
+  (new Test("rem149")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("12")).toString()).equals("0.800");
+  (new Test("rem150")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("1.7")).toString()).equals("0.800");
+  (new Test("rem151")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.400");
+  
+  try{checknull:do{
+   ten.remainder((com.ibm.icu.math.BigDecimal)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $79){
+   flag=true;
+  }/*checknull*/
+  (new Test("rem200")).ok=flag;
+  try{checknull2:do{
+   ten.remainder(ten,(com.ibm.icu.math.MathContext)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $80){
+   flag=true;
+  }/*checknull2*/
+  (new Test("rem201")).ok=flag;
+  
+  try{checkdigits:do{
+   com.ibm.icu.math.BigDecimal.ONE.remainder(tenlong,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $81){ae=$81;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("rem202")).ok=flag;
+  
+  try{checkdigits:do{
+   tenlong.remainder(one,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $82){ae=$82;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("rem203")).ok=flag;
+  
+  summary("remainder");
+  return;}
+/*--------------------------------------------------------------------*/
+ 
+ /** Test the {@link BigDecimal#subtract} method. */
+ 
+ public void diagsubtract(){
+  boolean flag=false;
+  com.ibm.icu.math.BigDecimal alhs;
+  com.ibm.icu.math.BigDecimal arhs;
+  java.lang.ArithmeticException ae=null;
+  
+  // [first group are 'quick confidence check']
+  (new Test("sub301")).ok=((new com.ibm.icu.math.BigDecimal(2)).subtract(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("-1");
+  (new Test("sub302")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).subtract(new com.ibm.icu.math.BigDecimal("3.3"),mcdef).toString()).equals("2.45");
+  (new Test("sub303")).ok=((new com.ibm.icu.math.BigDecimal("5")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("8");
+  (new Test("sub304")).ok=((new com.ibm.icu.math.BigDecimal("-5")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("-2");
+  (new Test("sub305")).ok=((new com.ibm.icu.math.BigDecimal("-7")).subtract(new com.ibm.icu.math.BigDecimal("2.5"),mcdef).toString()).equals("-9.5");
+  (new Test("sub306")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).subtract(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.4");
+  (new Test("sub307")).ok=((new com.ibm.icu.math.BigDecimal("1.3")).subtract(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("1.0");
+  (new Test("sub308")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).subtract(new com.ibm.icu.math.BigDecimal("1.25"),mcdef).toString()).equals("0");
+  (new Test("sub309")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000000"),mcdef).toString()).equals("0.23456789");
+  
+  (new Test("sub310")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000089"),mcdef).toString()).equals("0.23456700");
+  
+  (new Test("sub311")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000001"),mcdef).toString()).equals("0.555555556");
+  
+  (new Test("sub312")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000005"),mcdef).toString()).equals("0.555555556");
+  
+  (new Test("sub313")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).subtract(new com.ibm.icu.math.BigDecimal("0.1111111111"),mcdef).toString()).equals("0.333333333");
+  
+  (new Test("sub314")).ok=((new com.ibm.icu.math.BigDecimal("1.0000000000")).subtract(new com.ibm.icu.math.BigDecimal("0.00000001"),mcdef).toString()).equals("0.99999999");
+  
+  (new Test("sub315")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).subtract(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444444");
+  
+  (new Test("sub316")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).subtract(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444445");
+  
+  
+  (new Test("sub317")).ok=((new com.ibm.icu.math.BigDecimal("70")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-1.00000000E+13");
+  
+  (new Test("sub318")).ok=((new com.ibm.icu.math.BigDecimal("700")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-1.00000000E+13");
+  
+  (new Test("sub319")).ok=((new com.ibm.icu.math.BigDecimal("7000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-1.00000000E+13");
+  
+  (new Test("sub320")).ok=((new com.ibm.icu.math.BigDecimal("70000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-9.9999999E+12");
+  
+  (new Test("sub321")).ok=((new com.ibm.icu.math.BigDecimal("700000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-9.9999993E+12");
+  
+  // symmetry:
+  (new Test("sub322")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70"),mcdef).toString()).equals("1.00000000E+13");
+  
+  (new Test("sub323")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700"),mcdef).toString()).equals("1.00000000E+13");
+  
+  (new Test("sub324")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("7000"),mcdef).toString()).equals("1.00000000E+13");
+  
+  (new Test("sub325")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("9.9999999E+12");
+  
+  (new Test("sub326")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700000"),mcdef).toString()).equals("9.9999993E+12");
+  
+  
+  // [same with fixed point arithmetic]
+  (new Test("sub001")).ok=((new com.ibm.icu.math.BigDecimal(2)).subtract(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("-1");
+  (new Test("sub002")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).subtract(new com.ibm.icu.math.BigDecimal("3.3")).toString()).equals("2.45");
+  (new Test("sub003")).ok=((new com.ibm.icu.math.BigDecimal("5")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("8");
+  (new Test("sub004")).ok=((new com.ibm.icu.math.BigDecimal("-5")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("-2");
+  (new Test("sub005")).ok=((new com.ibm.icu.math.BigDecimal("-7")).subtract(new com.ibm.icu.math.BigDecimal("2.5")).toString()).equals("-9.5");
+  (new Test("sub006")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).subtract(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.4");
+  (new Test("sub007")).ok=((new com.ibm.icu.math.BigDecimal("1.3")).subtract(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("1.0");
+  (new Test("sub008")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).subtract(new com.ibm.icu.math.BigDecimal("1.25")).toString()).equals("0.00");
+  (new Test("sub009")).ok=((new com.ibm.icu.math.BigDecimal("0.02")).subtract(new com.ibm.icu.math.BigDecimal("0.02")).toString()).equals("0.00");
+  
+  (new Test("sub010")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000000")).toString()).equals("0.23456789");
+  
+  (new Test("sub011")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000089")).toString()).equals("0.23456700");
+  
+  (new Test("sub012")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000001")).toString()).equals("0.5555555558");
+  
+  (new Test("sub013")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000005")).toString()).equals("0.5555555554");
+  
+  (new Test("sub014")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).subtract(new com.ibm.icu.math.BigDecimal("0.1111111111")).toString()).equals("0.3333333333");
+  
+  (new Test("sub015")).ok=((new com.ibm.icu.math.BigDecimal("1.0000000000")).subtract(new com.ibm.icu.math.BigDecimal("0.00000001")).toString()).equals("0.9999999900");
+  
+  (new Test("sub016")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).subtract(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444444999");
+  
+  (new Test("sub017")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).subtract(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444445000");
+  
+  
+  (new Test("sub018")).ok=((new com.ibm.icu.math.BigDecimal("70")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999999930");
+  
+  (new Test("sub019")).ok=((new com.ibm.icu.math.BigDecimal("700")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999999300");
+  
+  (new Test("sub020")).ok=((new com.ibm.icu.math.BigDecimal("7000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999993000");
+  
+  (new Test("sub021")).ok=((new com.ibm.icu.math.BigDecimal("70000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999930000");
+  
+  (new Test("sub022")).ok=((new com.ibm.icu.math.BigDecimal("700000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999300000");
+  
+  // symmetry:
+  (new Test("sub023")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70")).toString()).equals("9999999999930");
+  
+  (new Test("sub024")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700")).toString()).equals("9999999999300");
+  
+  (new Test("sub025")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("7000")).toString()).equals("9999999993000");
+  
+  (new Test("sub026")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000")).toString()).equals("9999999930000");
+  
+  (new Test("sub027")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700000")).toString()).equals("9999999300000");
+  
+  // MC
+  (new Test("sub030")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("9.9999999E+12");
+  
+  (new Test("sub031")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000"),mc6).toString()).equals("1.00000E+13");
+  
+  
+  // some of the next group are really constructor tests
+  (new Test("sub040")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).subtract(new com.ibm.icu.math.BigDecimal("0.0")).toString()).equals("0.0");
+  (new Test("sub041")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).subtract(new com.ibm.icu.math.BigDecimal("0.00")).toString()).equals("0.00");
+  (new Test("sub042")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("00.0")).toString()).equals("0.00");
+  (new Test("sub043")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).subtract(new com.ibm.icu.math.BigDecimal("0.00"),mcdef).toString()).equals("0");
+  (new Test("sub044")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("00.0"),mcdef).toString()).equals("0");
+  (new Test("sub045")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.7");
+  (new Test("sub046")).ok=((new com.ibm.icu.math.BigDecimal("3.")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.7");
+  (new Test("sub047")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.7");
+  (new Test("sub048")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.70");
+  (new Test("sub049")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("0");
+  (new Test("sub050")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("+3"),mcdef).toString()).equals("0");
+  (new Test("sub051")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("6");
+  (new Test("sub052")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");
+  (new Test("sub053")).ok=((new com.ibm.icu.math.BigDecimal("3.")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");
+  (new Test("sub054")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");
+  (new Test("sub055")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.70");
+  (new Test("sub056")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");
+  (new Test("sub057")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("+3")).toString()).equals("0");
+  (new Test("sub058")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("6");
+  
+  // the above all from add; massaged and extended.  Now some new ones...
+  // [particularly important for comparisons]
+  // NB: -1E-7 below were non-exponents pre-ANSI
+  (new Test("sub080")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456784")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+  (new Test("sub081")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456785")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+  (new Test("sub082")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456786")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+  (new Test("sub083")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456787")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+  (new Test("sub084")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456788")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+  (new Test("sub085")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456789")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+  (new Test("sub086")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456790")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+  (new Test("sub087")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456791")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+  (new Test("sub088")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456792")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+  (new Test("sub089")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456793")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+  (new Test("sub090")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456794")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+  (new Test("sub091")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456781")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+  (new Test("sub092")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456782")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+  (new Test("sub093")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456783")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+  (new Test("sub094")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456784")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+  (new Test("sub095")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456785")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+  (new Test("sub096")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456786")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+  (new Test("sub097")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456787")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+  (new Test("sub098")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456788")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+  (new Test("sub099")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456789")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+  (new Test("sub100")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456790")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+  (new Test("sub101")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456791")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+  (new Test("sub102")).ok="0".equals(com.ibm.icu.math.BigDecimal.ONE.subtract(new com.ibm.icu.math.BigDecimal("0.999999999"),mcdef).toString());
+  (new Test("sub103")).ok="0".equals((new com.ibm.icu.math.BigDecimal("0.999999999")).subtract(com.ibm.icu.math.BigDecimal.ONE,mcdef).toString());
+  
+  alhs=new com.ibm.icu.math.BigDecimal("12345678900000");
+  arhs=new com.ibm.icu.math.BigDecimal("9999999999999");
+  (new Test("sub110")).ok=(alhs.subtract(arhs,mc3).toString()).equals("2.3E+12");
+  (new Test("sub111")).ok=(arhs.subtract(alhs,mc3).toString()).equals("-2.3E+12");
+  (new Test("sub112")).ok=(alhs.subtract(arhs).toString()).equals("2345678900001");
+  (new Test("sub113")).ok=(arhs.subtract(alhs).toString()).equals("-2345678900001");
+  
+  // additional scaled arithmetic tests [0.97 problem]
+  (new Test("sub120")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".1")).toString()).equals("-0.1");
+  (new Test("sub121")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal(".97983")).toString()).equals("-0.97983");
+  (new Test("sub122")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".9")).toString()).equals("-0.9");
+  (new Test("sub123")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("0.102")).toString()).equals("-0.102");
+  (new Test("sub124")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".4")).toString()).equals("-0.4");
+  (new Test("sub125")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".307")).toString()).equals("-0.307");
+  (new Test("sub126")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".43822")).toString()).equals("-0.43822");
+  (new Test("sub127")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".911")).toString()).equals("-0.911");
+  (new Test("sub128")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal(".02")).toString()).equals("-0.02");
+  (new Test("sub129")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal(".392")).toString()).equals("-0.392");
+  (new Test("sub130")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".26")).toString()).equals("-0.26");
+  (new Test("sub131")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("0.51")).toString()).equals("-0.51");
+  (new Test("sub132")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".2234")).toString()).equals("-0.2234");
+  (new Test("sub133")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".2")).toString()).equals("-0.2");
+  (new Test("sub134")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal(".0008")).toString()).equals("-0.0008");
+  // 0. on left
+  (new Test("sub140")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.1")).toString()).equals("0.1");
+  (new Test("sub141")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("-.97983")).toString()).equals("0.97983");
+  (new Test("sub142")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.9")).toString()).equals("0.9");
+  (new Test("sub143")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-0.102")).toString()).equals("0.102");
+  (new Test("sub144")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.4")).toString()).equals("0.4");
+  (new Test("sub145")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.307")).toString()).equals("0.307");
+  (new Test("sub146")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.43822")).toString()).equals("0.43822");
+  (new Test("sub147")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.911")).toString()).equals("0.911");
+  (new Test("sub148")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.02")).toString()).equals("0.02");
+  (new Test("sub149")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("-.392")).toString()).equals("0.392");
+  (new Test("sub150")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.26")).toString()).equals("0.26");
+  (new Test("sub151")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-0.51")).toString()).equals("0.51");
+  (new Test("sub152")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.2234")).toString()).equals("0.2234");
+  (new Test("sub153")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.2")).toString()).equals("0.2");
+  (new Test("sub154")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.0008")).toString()).equals("0.0008");
+  // negatives of same
+  (new Test("sub160")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.1")).toString()).equals("0.1");
+  (new Test("sub161")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal("-.97983")).toString()).equals("0.97983");
+  (new Test("sub162")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.9")).toString()).equals("0.9");
+  (new Test("sub163")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-0.102")).toString()).equals("0.102");
+  (new Test("sub164")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.4")).toString()).equals("0.4");
+  (new Test("sub165")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.307")).toString()).equals("0.307");
+  (new Test("sub166")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.43822")).toString()).equals("0.43822");
+  (new Test("sub167")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.911")).toString()).equals("0.911");
+  (new Test("sub168")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal("-.02")).toString()).equals("0.02");
+  (new Test("sub169")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal("-.392")).toString()).equals("0.392");
+  (new Test("sub170")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.26")).toString()).equals("0.26");
+  (new Test("sub171")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-0.51")).toString()).equals("0.51");
+  (new Test("sub172")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.2234")).toString()).equals("0.2234");
+  (new Test("sub173")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.2")).toString()).equals("0.2");
+  (new Test("sub174")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal("-.0008")).toString()).equals("0.0008");
+  
+  // more fixed, LHS swaps [really same as testcases under add]
+  (new Test("sub180")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).subtract(zero).toString()).equals("-0.0000056267");
+  (new Test("sub181")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).subtract(zero).toString()).equals("-0.56267");
+  (new Test("sub182")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).subtract(zero).toString()).equals("-562.67");
+  (new Test("sub183")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).subtract(zero).toString()).equals("-5626.7");
+  (new Test("sub185")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).subtract(zero).toString()).equals("-56267");
+  
+  try{checknull:do{
+   ten.subtract((com.ibm.icu.math.BigDecimal)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $83){
+   flag=true;
+  }/*checknull*/
+  (new Test("sub200")).ok=flag;
+  try{checknull2:do{
+   ten.subtract(ten,(com.ibm.icu.math.MathContext)null);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NullPointerException $84){
+   flag=true;
+  }/*checknull2*/
+  (new Test("sub201")).ok=flag;
+  
+  try{checkdigits:do{
+   com.ibm.icu.math.BigDecimal.ONE.subtract(tenlong,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $85){ae=$85;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("sub202")).ok=flag;
+  try{checkdigits:do{
+   tenlong.subtract(com.ibm.icu.math.BigDecimal.ONE,mcld);
+   flag=false;
+  }while(false);}
+  catch (java.lang.ArithmeticException $86){ae=$86;
+   flag=(ae.getMessage()).equals("Too many digits:"+" "+tenlong.toString());
+  }/*checkdigits*/
+  (new Test("sub203")).ok=flag;
+  summary("subtract");
+  return;}
+/* ----------------------------------------------------------------- */
+ 
+ /* ----------------------------------------------------------------- */
+ /* Other methods                                                     */
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test the <code>BigDecimal.byteValue()</code> method. */
+ 
+ public void diagbyteValue(){
+  boolean flag=false;
+  java.lang.String v=null;
+  java.lang.ArithmeticException ae=null;
+  java.lang.String badstrings[];
+  int i=0;
+  java.lang.String norm=null;
+  
+  
+  (new Test("byv001")).ok=((((byte)-128)))==((new com.ibm.icu.math.BigDecimal("-128")).byteValue());
+  (new Test("byv002")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).byteValue());
+  (new Test("byv003")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).byteValue());
+  (new Test("byv004")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).byteValue());
+  (new Test("byv005")).ok=((127))==((new com.ibm.icu.math.BigDecimal("127")).byteValue());
+  (new Test("byv006")).ok=((-128))==((new com.ibm.icu.math.BigDecimal("128")).byteValue());
+  (new Test("byv007")).ok=((-127))==((new com.ibm.icu.math.BigDecimal("129")).byteValue());
+  (new Test("byv008")).ok=((127))==((new com.ibm.icu.math.BigDecimal("-129")).byteValue());
+  (new Test("byv009")).ok=((126))==((new com.ibm.icu.math.BigDecimal("-130")).byteValue());
+  (new Test("byv010")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmax)).byteValue());
+  (new Test("byv011")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmin)).byteValue());
+  (new Test("byv012")).ok=((bneg))==((new com.ibm.icu.math.BigDecimal(bneg)).byteValue());
+  (new Test("byv013")).ok=((bzer))==((new com.ibm.icu.math.BigDecimal(bzer)).byteValue());
+  (new Test("byv014")).ok=((bpos))==((new com.ibm.icu.math.BigDecimal(bpos)).byteValue());
+  (new Test("byv015")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmax+1)).byteValue());
+  (new Test("byv016")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmin-1)).byteValue());
+  
+  (new Test("byv021")).ok=((((byte)-128)))==((new com.ibm.icu.math.BigDecimal("-128")).byteValueExact());
+  (new Test("byv022")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).byteValueExact());
+  (new Test("byv023")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).byteValueExact());
+  (new Test("byv024")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).byteValueExact());
+  (new Test("byv025")).ok=((127))==((new com.ibm.icu.math.BigDecimal("127")).byteValueExact());
+  (new Test("byv026")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmax)).byteValueExact());
+  (new Test("byv027")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmin)).byteValueExact());
+  (new Test("byv028")).ok=((bneg))==((new com.ibm.icu.math.BigDecimal(bneg)).byteValueExact());
+  (new Test("byv029")).ok=((bzer))==((new com.ibm.icu.math.BigDecimal(bzer)).byteValueExact());
+  (new Test("byv030")).ok=((bpos))==((new com.ibm.icu.math.BigDecimal(bpos)).byteValueExact());
+  try{
+   v="-129";
+   (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();
+   flag=false;
+  }
+  catch (java.lang.ArithmeticException $87){ae=$87;
+   flag=(ae.getMessage()).equals("Conversion overflow:"+" "+v);
+  }
+  (new Test("byv100")).ok=flag;
+  try{
+   v="128";
+   (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();
+   flag=false;
+  }
+  catch (java.lang.ArithmeticException $88){ae=$88;
+   flag=(ae.getMessage()).equals("Conversion overflow:"+" "+v);
+  }
+  (new Test("byv101")).ok=flag;
+  try{
+   v="1.5";
+   (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();
+   flag=false;
+  }
+  catch (java.lang.ArithmeticException $89){ae=$89;
+   flag=(ae.getMessage()).equals("Decimal part non-zero:"+" "+v);
+  }
+  (new Test("byv102")).ok=flag;
+  
+  badstrings=new java.lang.String[]{"1234",(new com.ibm.icu.math.BigDecimal(bmax)).add(one).toString(),(new com.ibm.icu.math.BigDecimal(bmin)).subtract(one).toString(),"170","270","370","470","570","670","770","870","970","-170","-270","-370","-470","-570","-670","-770","-870","-970",(new com.ibm.icu.math.BigDecimal(bmin)).multiply(two).toString(),(new com.ibm.icu.math.BigDecimal(bmax)).multiply(two).toString(),(new com.ibm.icu.math.BigDecimal(bmin)).multiply(ten).toString(),(new com.ibm.icu.math.BigDecimal(bmax)).multiply(ten).toString(),"-1234"}; // 220
+  // 221
+  // 222
+  // 223
+  // 224
+  // 225
+  // 226
+  // 227
+  // 228
+  // 229
+  // 230
+  // 231
+  // 232
+  // 233
+  // 234
+  // 235
+  // 236
+  // 237
+  // 238
+  // 239
+  // 240
+  // 241
+  // 242
+  // 243
+  // 244
+  // 245
+  {int $90=badstrings.length;i=0;i:for(;$90>0;$90--,i++){
+   try{
+    v=badstrings[i];
+    (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();
+    flag=false;
+   }
+   catch (java.lang.ArithmeticException $91){ae=$91;
+    norm=(new com.ibm.icu.math.BigDecimal(v)).toString();
+    flag=(ae.getMessage()).equals("Conversion overflow:"+" "+norm);
+   }
+   (new Test("byv"+(220+i))).ok=flag;
+   }
+  }/*i*/
+  
+  summary("byteValue+");
+  return;}
+/* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#compareTo(java.lang.Object)} method. */
+ 
+ public void diagcomparetoObj(){
+  boolean flag=false;
+  com.ibm.icu.math.BigDecimal d;
+  com.ibm.icu.math.BigDecimal long1;
+  com.ibm.icu.math.BigDecimal long2;
+  
+  d=new com.ibm.icu.math.BigDecimal(17);
+  (new Test("cto001")).ok=(d.compareTo((java.lang.Object)(new com.ibm.icu.math.BigDecimal(66))))==(-1);
+  (new Test("cto002")).ok=(d.compareTo((java.lang.Object)((new com.ibm.icu.math.BigDecimal(10)).add(new com.ibm.icu.math.BigDecimal(7)))))==0;
+  (new Test("cto003")).ok=(d.compareTo((java.lang.Object)(new com.ibm.icu.math.BigDecimal(10))))==1;
+  long1=new com.ibm.icu.math.BigDecimal("12345678903");
+  long2=new com.ibm.icu.math.BigDecimal("12345678900");
+  (new Test("cto004")).ok=(long1.compareTo((java.lang.Object)long2))==1;
+  (new Test("cto005")).ok=(long2.compareTo((java.lang.Object)long1))==(-1);
+  (new Test("cto006")).ok=(long2.compareTo((java.lang.Object)long2))==0;
+  try{
+   d.compareTo((java.lang.Object)null);
+   flag=false;
+  }
+  catch (java.lang.NullPointerException $92){
+   flag=true; // should get here
+  }
+  (new Test("cto101")).ok=flag;
+  try{
+   d.compareTo((java.lang.Object)"foo");
+   flag=false;
+  }
+  catch (java.lang.ClassCastException $93){
+   flag=true; // should get here
+  }
+  (new Test("cto102")).ok=flag;
+  summary("compareTo(Obj)");
+  return;}
+/* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#doubleValue} method. */
+ 
+ public void diagdoublevalue(){
+  java.lang.String val;
+  // 1999.03.07 Infinities no longer errors
+  val="-1";
+  (new Test("dov001")).ok=((new com.ibm.icu.math.BigDecimal(val)).doubleValue())==((new java.lang.Double(val)).doubleValue());
+  val="-0.1";
+  (new Test("dov002")).ok=((new com.ibm.icu.math.BigDecimal(val)).doubleValue())==((new java.lang.Double(val)).doubleValue());
+  val="0";
+  (new Test("dov003")).ok=((new com.ibm.icu.math.BigDecimal(val)).doubleValue())==((new java.lang.Double(val)).doubleValue());
+  val="0.1";
+  (new Test("dov004")).ok=((new com.ibm.icu.math.BigDecimal(val)).doubleValue())==((new java.lang.Double(val)).doubleValue());
+  val="1";
+  (new Test("dov005")).ok=((new com.ibm.icu.math.BigDecimal(val)).doubleValue())==((new java.lang.Double(val)).doubleValue());
+  val="1e1000";
+  (new Test("dov006")).ok=((new com.ibm.icu.math.BigDecimal(val)).doubleValue())==java.lang.Double.POSITIVE_INFINITY;
+  val="-1e1000";
+  (new Test("dov007")).ok=((new com.ibm.icu.math.BigDecimal(val)).doubleValue())==java.lang.Double.NEGATIVE_INFINITY;
+  summary("doubleValue");
+  return;}
+/* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#equals} method. */
+ 
+ public void diagequals(){
+  com.ibm.icu.math.BigDecimal d;
+  d=new com.ibm.icu.math.BigDecimal(17);
+  (new Test("equ001")).ok=(!(d.equals((java.lang.Object)null)));
+  (new Test("equ002")).ok=(!(d.equals((java.lang.Object)"foo")));
+  (new Test("equ003")).ok=(!(d.equals((java.lang.Object)(new com.ibm.icu.math.BigDecimal(66)))));
+  (new Test("equ004")).ok=d.equals((java.lang.Object)d);
+  (new Test("equ005")).ok=d.equals((java.lang.Object)((new com.ibm.icu.math.BigDecimal(10)).add(new com.ibm.icu.math.BigDecimal(7))));
+  summary("equals");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#floatValue} method. */
+ 
+ public void diagfloatvalue(){
+  java.lang.String val;
+  // 1999.03.07 Infinities no longer errors
+  val="-1";
+  (new Test("flv001")).ok=((new com.ibm.icu.math.BigDecimal(val)).floatValue())==((new java.lang.Float(val)).floatValue());
+  val="-0.1";
+  (new Test("flv002")).ok=((new com.ibm.icu.math.BigDecimal(val)).floatValue())==((new java.lang.Float(val)).floatValue());
+  val="0";
+  (new Test("flv003")).ok=((new com.ibm.icu.math.BigDecimal(val)).floatValue())==((new java.lang.Float(val)).floatValue());
+  val="0.1";
+  (new Test("flv004")).ok=((new com.ibm.icu.math.BigDecimal(val)).floatValue())==((new java.lang.Float(val)).floatValue());
+  val="1";
+  (new Test("flv005")).ok=((new com.ibm.icu.math.BigDecimal(val)).floatValue())==((new java.lang.Float(val)).floatValue());
+  val="1e200";
+  (new Test("flv006")).ok=((new com.ibm.icu.math.BigDecimal(val)).floatValue())==java.lang.Float.POSITIVE_INFINITY;
+  val="-1e200";
+  (new Test("flv007")).ok=((new com.ibm.icu.math.BigDecimal(val)).floatValue())==java.lang.Float.NEGATIVE_INFINITY;
+  val="1e1000";
+  (new Test("flv008")).ok=((new com.ibm.icu.math.BigDecimal(val)).floatValue())==java.lang.Float.POSITIVE_INFINITY;
+  val="-1e1000";
+  (new Test("flv009")).ok=((new com.ibm.icu.math.BigDecimal(val)).floatValue())==java.lang.Float.NEGATIVE_INFINITY;
+  summary("floatValue");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#format} method. */
+ 
+ public void diagformat(){
+  boolean flag=false;
+  int eng;
+  int sci;
+  com.ibm.icu.math.BigDecimal d04;
+  com.ibm.icu.math.BigDecimal d05;
+  com.ibm.icu.math.BigDecimal d06;
+  com.ibm.icu.math.BigDecimal d15;
+  java.lang.IllegalArgumentException iae=null;
+  com.ibm.icu.math.BigDecimal d050;
+  com.ibm.icu.math.BigDecimal d150;
+  com.ibm.icu.math.BigDecimal m050;
+  com.ibm.icu.math.BigDecimal m150;
+  com.ibm.icu.math.BigDecimal d051;
+  com.ibm.icu.math.BigDecimal d151;
+  com.ibm.icu.math.BigDecimal d000;
+  com.ibm.icu.math.BigDecimal d500;
+  java.lang.ArithmeticException ae=null;
+  // 1999.02.09 now only two signatures for format(), so some tests below
+  //            may now be redundant
+  
+  (new Test("for001")).ok=((new com.ibm.icu.math.BigDecimal("12.3")).format(-1,-1)).equals("12.3");
+  (new Test("for002")).ok=((new com.ibm.icu.math.BigDecimal("-12.73")).format(-1,-1)).equals("-12.73");
+  (new Test("for003")).ok=((new com.ibm.icu.math.BigDecimal("0.000")).format(-1,-1)).equals("0.000");
+  (new Test("for004")).ok=((new com.ibm.icu.math.BigDecimal("3E+3")).format(-1,-1)).equals("3000");
+  (new Test("for005")).ok=((new com.ibm.icu.math.BigDecimal("3")).format(4,-1)).equals("   3");
+  (new Test("for006")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,0)).equals("   2");
+  (new Test("for007")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,1)).equals("   1.7");
+  (new Test("for008")).ok=((new com.ibm.icu.math.BigDecimal("1.75")).format(4,1)).equals("   1.8");
+  (new Test("for009")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).format(4,1)).equals("   0.5");
+  (new Test("for010")).ok=((new com.ibm.icu.math.BigDecimal("0.05")).format(4,1)).equals("   0.1");
+  (new Test("for011")).ok=((new com.ibm.icu.math.BigDecimal("0.04")).format(4,1)).equals("   0.0");
+  (new Test("for012")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,0)).equals("   0");
+  (new Test("for013")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,1)).equals("   0.0");
+  (new Test("for014")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,2)).equals("   0.00");
+  (new Test("for015")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,3)).equals("   0.000");
+  (new Test("for016")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,4)).equals("   0.0000");
+  (new Test("for017")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,0)).equals("   0");
+  (new Test("for018")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,1)).equals("   0.0");
+  (new Test("for019")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,2)).equals("   0.01");
+  (new Test("for020")).ok=((new com.ibm.icu.math.BigDecimal("0.004")).format(4,2)).equals("   0.00");
+  (new Test("for021")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,3)).equals("   0.005");
+  (new Test("for022")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,4)).equals("   0.0050");
+  
+  (new Test("for023")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,2)).equals("   1.73");
+  (new Test("for024")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,3)).equals("   1.730");
+  (new Test("for025")).ok=((new com.ibm.icu.math.BigDecimal("-.76")).format(4,1)).equals("  -0.8");
+  (new Test("for026")).ok=((new com.ibm.icu.math.BigDecimal("-12.73")).format(-1,4)).equals("-12.7300");
+  
+  (new Test("for027")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,-1)).equals("   3.03");
+  (new Test("for028")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,1)).equals("   3.0");
+  (new Test("for029")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,-1,3,-1,-1,-1)).equals("   3.03     ");
+  (new Test("for030")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(-1,-1,3,-1,-1,-1)).equals("3.03     ");
+  (new Test("for031")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,4,-1,-1)).equals("1.234573E+4");
+  (new Test("for032")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,5,-1,-1)).equals("12345.73");
+  (new Test("for033")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,6,-1,-1)).equals("12345.73");
+  
+  (new Test("for034")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,8,-1,3,-1,-1)).equals("1.23457300E+4");
+  (new Test("for035")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,7,-1,3,-1,-1)).equals("1.2345730E+4");
+  (new Test("for036")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,6,-1,3,-1,-1)).equals("1.234573E+4");
+  (new Test("for037")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,5,-1,3,-1,-1)).equals("1.23457E+4");
+  (new Test("for038")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,4,-1,3,-1,-1)).equals("1.2346E+4");
+  (new Test("for039")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,3,-1,3,-1,-1)).equals("1.235E+4");
+  (new Test("for040")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,2,-1,3,-1,-1)).equals("1.23E+4");
+  (new Test("for041")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,1,-1,3,-1,-1)).equals("1.2E+4");
+  (new Test("for042")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,0,-1,3,-1,-1)).equals("1E+4");
+  
+  (new Test("for043")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,6,-1,3,-1,-1)).equals("9.999999E+4");
+  (new Test("for044")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,5,-1,3,-1,-1)).equals("1.00000E+5");
+  (new Test("for045")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,2,-1,3,-1,-1)).equals("1.00E+5");
+  (new Test("for046")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,0,-1,3,-1,-1)).equals("1E+5");
+  (new Test("for047")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(3,0,-1,3,-1,-1)).equals("  1E+5");
+  
+  (new Test("for048")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,2,2,-1,-1)).equals("1.234573E+04");
+  (new Test("for049")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,3,-1,0,-1,-1)).equals("1.235E+4");
+  (new Test("for050")).ok=((new com.ibm.icu.math.BigDecimal("1.234573")).format(-1,3,-1,0,-1,-1)).equals("1.235");
+  (new Test("for051")).ok=((new com.ibm.icu.math.BigDecimal("123.45")).format(-1,3,2,0,-1,-1)).equals("1.235E+02");
+  
+  (new Test("for052")).ok=((new com.ibm.icu.math.BigDecimal("0.444")).format(-1,0)).equals("0");
+  (new Test("for053")).ok=((new com.ibm.icu.math.BigDecimal("-0.444")).format(-1,0)).equals("0");
+  (new Test("for054")).ok=((new com.ibm.icu.math.BigDecimal("0.4")).format(-1,0)).equals("0");
+  (new Test("for055")).ok=((new com.ibm.icu.math.BigDecimal("-0.4")).format(-1,0)).equals("0");
+  
+  eng=com.ibm.icu.math.MathContext.ENGINEERING;
+  sci=com.ibm.icu.math.MathContext.SCIENTIFIC;
+  (new Test("for060")).ok=((new com.ibm.icu.math.BigDecimal("1234.5")).format(-1,3,2,0,eng,-1)).equals("1.235E+03");
+  (new Test("for061")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(-1,3,3,0,eng,-1)).equals("12.345E+003");
+  (new Test("for062")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(-1,3,3,0,sci,-1)).equals("1.235E+004");
+  (new Test("for063")).ok=((new com.ibm.icu.math.BigDecimal("1234.5")).format(4,3,2,0,eng,-1)).equals("   1.235E+03");
+  (new Test("for064")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(5,3,3,0,eng,-1)).equals("   12.345E+003");
+  (new Test("for065")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(6,3,3,0,sci,-1)).equals("     1.235E+004");
+  
+  (new Test("for066")).ok=((new com.ibm.icu.math.BigDecimal("1.2345")).format(-1,3,2,0,-1,-1)).equals("1.235    ");
+  (new Test("for067")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,3,6,-1,-1)).equals("12345.73     ");
+  (new Test("for068")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,0)).equals("1234500000");
+  (new Test("for069")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,1)).equals("1234500000.0");
+  (new Test("for070")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,2)).equals("1234500000.00");
+  (new Test("for071")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,3)).equals("1234500000.000");
+  (new Test("for072")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,4)).equals("1234500000.0000");
+  
+  // some from ANSI Dallas [Nov 1998]
+  (new Test("for073")).ok=((new com.ibm.icu.math.BigDecimal("99.999")).format(-1,2,-1,2,-1,-1)).equals("100.00");
+  (new Test("for074")).ok=((new com.ibm.icu.math.BigDecimal("0.99999")).format(-1,4,2,2,-1,-1)).equals("1.0000    ");
+  
+  // try some rounding modes [default ROUND_HALF_UP widely tested above]
+  // the first few also tests that defaults are accepted for the others
+  d04=new com.ibm.icu.math.BigDecimal("0.04");
+  d05=new com.ibm.icu.math.BigDecimal("0.05");
+  d06=new com.ibm.icu.math.BigDecimal("0.06");
+  d15=new com.ibm.icu.math.BigDecimal("0.15");
+  (new Test("for080")).ok=(d05.format(-1,1)).equals("0.1");
+  (new Test("for081")).ok=(d05.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_UP)).equals("0.1");
+  (new Test("for082")).ok=(d05.format(-1,1,-1,-1,-1,-1)).equals("0.1");
+  (new Test("for083")).ok=(d05.format(-1,-1,-1,-1,-1,-1)).equals("0.05");
+  (new Test("for084")).ok=(d05.format(-1,-1)).equals("0.05");
+  try{
+   d05.format(-1,-1,-1,-1,-1,30); // bad mode
+   flag=false; // shouldn't get here
+  }
+  catch (java.lang.IllegalArgumentException $94){iae=$94;
+   flag=(iae.getMessage()).equals("Bad argument 6 to format: 30");
+  }
+  (new Test("for085")).ok=flag;
+  
+  (new Test("for090")).ok=(d04.format(-1,1)).equals("0.0");
+  (new Test("for091")).ok=(d06.format(-1,1)).equals("0.1");
+  (new Test("for092")).ok=(d04.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.0");
+  (new Test("for093")).ok=(d05.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.0");
+  (new Test("for094")).ok=(d06.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.1");
+  
+  (new Test("for095")).ok=(d04.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");
+  (new Test("for096")).ok=(d05.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");
+  (new Test("for097")).ok=(d06.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.1");
+  (new Test("for098")).ok=(d15.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");
+  d050=new com.ibm.icu.math.BigDecimal("0.050");
+  d150=new com.ibm.icu.math.BigDecimal("0.150");
+  (new Test("for099")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");
+  (new Test("for100")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");
+  m050=new com.ibm.icu.math.BigDecimal("-0.050");
+  m150=new com.ibm.icu.math.BigDecimal("-0.150");
+  (new Test("for101")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");
+  (new Test("for102")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("-0.2");
+  d051=new com.ibm.icu.math.BigDecimal("0.051");
+  d151=new com.ibm.icu.math.BigDecimal("0.151");
+  (new Test("for103")).ok=(d051.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.1");
+  (new Test("for104")).ok=(d151.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");
+  
+  (new Test("for105")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.0");
+  (new Test("for106")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("-0.1");
+  (new Test("for107")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.1");
+  (new Test("for108")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.2");
+  
+  (new Test("for109")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("-0.1");
+  (new Test("for110")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("-0.2");
+  (new Test("for111")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("0.0");
+  (new Test("for112")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("0.1");
+  
+  (new Test("for113")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("-0.1");
+  (new Test("for114")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("-0.2");
+  (new Test("for115")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("0.1");
+  (new Test("for116")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("0.2");
+  
+  (new Test("for117")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.0");
+  (new Test("for118")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("-0.1");
+  (new Test("for119")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.0");
+  (new Test("for120")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.1");
+  
+  d000=new com.ibm.icu.math.BigDecimal("0.000");
+  d500=new com.ibm.icu.math.BigDecimal("0.500");
+  (new Test("for121")).ok=(d000.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.0");
+  (new Test("for122")).ok=(d000.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.00");
+  (new Test("for123")).ok=(d000.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.000");
+  try{ // this should trap..
+   d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+   flag=false;
+  }
+  catch (java.lang.ArithmeticException $95){ae=$95;
+   flag=(ae.getMessage()).equals("Rounding necessary");
+  }
+  (new Test("for124")).ok=flag;
+  (new Test("for125")).ok=(d050.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.05");
+  (new Test("for126")).ok=(d050.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.050");
+  (new Test("for127")).ok=(d500.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.5");
+  (new Test("for128")).ok=(d500.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.50");
+  (new Test("for129")).ok=(d500.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.500");
+  
+  // bad negs --
+  try{
+   d050.format(-2,-1,-1,-1,-1,-1);
+   flag=false;
+  }
+  catch (java.lang.IllegalArgumentException $96){
+   flag=true;
+  }
+  (new Test("for131")).ok=flag;
+  try{
+   d050.format(-1,-2,-1,-1,-1,-1);
+   flag=false;
+  }
+  catch (java.lang.IllegalArgumentException $97){
+   flag=true;
+  }
+  (new Test("for132")).ok=flag;
+  try{
+   d050.format(-1,-1,-2,-1,-1,-1);
+   flag=false;
+  }
+  catch (java.lang.IllegalArgumentException $98){
+   flag=true;
+  }
+  (new Test("for133")).ok=flag;
+  try{
+   d050.format(-1,-1,-1,-2,-1,-1);
+   flag=false;
+  }
+  catch (java.lang.IllegalArgumentException $99){
+   flag=true;
+  }
+  (new Test("for134")).ok=flag;
+  try{
+   d050.format(-1,-1,-1,-1,-2,-1);
+   flag=false;
+  }
+  catch (java.lang.IllegalArgumentException $100){
+   flag=true;
+  }
+  (new Test("for135")).ok=flag;
+  try{
+   d050.format(-1,-1,-1,-1,-1,-2);
+   flag=false;
+  }
+  catch (java.lang.IllegalArgumentException $101){
+   flag=true;
+  }
+  (new Test("for136")).ok=flag;
+  
+  summary("format");
+  return;}
+/* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#hashCode} method. */
+ 
+ public void diaghashcode(){
+  java.lang.String hs;
+  com.ibm.icu.math.BigDecimal d;
+  hs="27827817";
+  d=new com.ibm.icu.math.BigDecimal(hs);
+  (new Test("has001")).ok=(d.hashCode())==(hs.hashCode());
+  hs="1.265E+200";
+  d=new com.ibm.icu.math.BigDecimal(hs);
+  (new Test("has002")).ok=(d.hashCode())==(hs.hashCode());
+  hs="126.5E+200";
+  d=new com.ibm.icu.math.BigDecimal(hs);
+  (new Test("has003")).ok=(d.hashCode())!=(hs.hashCode());
+  summary("hashCode");
+  return;}
+/* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#intValue} method. */
+ 
+ public void diagintvalue(){
+  boolean flag=false;
+  java.lang.String v=null;
+  java.lang.ArithmeticException ae=null;
+  java.lang.String badstrings[];
+  int i=0;
+  java.lang.String norm=null;
+  com.ibm.icu.math.BigDecimal dimax;
+  com.ibm.icu.math.BigDecimal num=null;
+  com.ibm.icu.math.BigDecimal dv=null;
+  com.ibm.icu.math.BigDecimal dimin;
+  
+  
+  // intValue --
+  
+  (new Test("inv001")).ok=imin==((new com.ibm.icu.math.BigDecimal(imin)).intValue());
+  (new Test("inv002")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).intValue());
+  (new Test("inv003")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).intValue());
+  (new Test("inv004")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).intValue());
+  (new Test("inv005")).ok=((-1))==((new com.ibm.icu.math.BigDecimal("-1")).intValue());
+  (new Test("inv006")).ok=((-99))==((new com.ibm.icu.math.BigDecimal("-99")).intValue());
+  (new Test("inv007")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValue());
+  (new Test("inv008")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.0")).intValue());
+  (new Test("inv009")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.3")).intValue());
+  (new Test("inv010")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.5")).intValue());
+  (new Test("inv011")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.7")).intValue());
+  (new Test("inv012")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.9")).intValue());
+  (new Test("inv013")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).intValue());
+  (new Test("inv014")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.3")).intValue());
+  (new Test("inv015")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.5")).intValue());
+  (new Test("inv016")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.7")).intValue());
+  (new Test("inv017")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.9")).intValue());
+  (new Test("inv018")).ok=((new com.ibm.icu.math.BigDecimal("88888888888")).intValue())==(-1305424328); // ugh
+  (new Test("inv019")).ok=((new com.ibm.icu.math.BigDecimal("-88888888888")).intValue())==1305424328; // ugh
+  (new Test("inv020")).ok=((imin))==((new com.ibm.icu.math.BigDecimal((((long)imax))+1)).intValue());
+  (new Test("inv021")).ok=((imax))==((new com.ibm.icu.math.BigDecimal((((long)imin))-1)).intValue());
+  
+  // intValueExact --
+  
+  (new Test("inv101")).ok=imin==((new com.ibm.icu.math.BigDecimal(imin)).intValueExact());
+  (new Test("inv102")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).intValue());
+  (new Test("inv103")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).intValue());
+  (new Test("inv104")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).intValue());
+  (new Test("inv105")).ok=((-1))==((new com.ibm.icu.math.BigDecimal("-1")).intValue());
+  (new Test("inv106")).ok=((-99))==((new com.ibm.icu.math.BigDecimal("-99")).intValue());
+  (new Test("inv107")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValue());
+  (new Test("inv108")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.0")).intValue());
+  (new Test("inv109")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).intValue());
+  (new Test("inv110")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValueExact());
+  
+  try{
+   v="-88588688888";
+   (new com.ibm.icu.math.BigDecimal(v)).intValueExact();
+   flag=false;
+  }
+  catch (java.lang.ArithmeticException $102){ae=$102;
+   flag=(ae.getMessage()).equals("Conversion overflow:"+" "+v);
+  }
+  (new Test("inv200")).ok=flag;
+  
+  // this one could raise either overflow or bad decimal part
+  try{
+   v="88088818888.00001";
+   (new com.ibm.icu.math.BigDecimal(v)).intValueExact();
+   flag=false;
+  }
+  catch (java.lang.ArithmeticException $103){
+   flag=true;
+  }
+  (new Test("inv201")).ok=flag;
+  
+  // 1999.10.28: the testcases marked '*' failed
+  badstrings=new java.lang.String[]{"12345678901",(new com.ibm.icu.math.BigDecimal(imax)).add(one).toString(),(new com.ibm.icu.math.BigDecimal(imin)).subtract(one).toString(),"3731367293","4731367293","5731367293","6731367293","7731367293","8731367293","9731367293","-3731367293","-4731367293","-5731367293","-6731367293","-7731367293","-8731367293","-9731367293",(new com.ibm.icu.math.BigDecimal(imin)).multiply(two).toString(),(new com.ibm.icu.math.BigDecimal(imax)).multiply(two).toString(),(new com.ibm.icu.math.BigDecimal(imin)).multiply(ten).toString(),(new com.ibm.icu.math.BigDecimal(imax)).multiply(ten).toString(),"4731367293","4831367293","4931367293","5031367293","5131367293","5231367293","5331367293","5431367293","5531367293","5631367293","5731367293","5831367293","5931367293","6031367293","6131367293","6231367293","6331367293","6431367293","6531367293","6631367293","6731367293","2200000000","2300000000","2400000000","2500000000","2600000000","2700000000","2800000000","2900000000","-2200000000","-2300000000","-2400000000","-2500000000","-2600000000","-2700000000","-2800000000","-2900000000","25E+8","-25E+8","-12345678901"}; // 220
+  // 221
+  // 222
+  // 223
+  // 224
+  // 225  *
+  // 226
+  // 227
+  // 228
+  // 229  *
+  // 230
+  // 231
+  // 232  *
+  // 233
+  // 234
+  // 235
+  // 236  *
+  // 237
+  // 238
+  // 239
+  // 240
+  // 241
+  // 242  *
+  // 243  *
+  // 244  *
+  // 245  *
+  // 246  *
+  // 247  *
+  // 248  *
+  // 249  *
+  // 250  *
+  // 251  *
+  // 252  *
+  // 253  *
+  // 254  *
+  // 255  *
+  // 256  *
+  // 257  *
+  // 258  *
+  // 259
+  // 260
+  // 261
+  // 262
+  // 263
+  // 264
+  // 265
+  // 266
+  // 267
+  // 268
+  // 269
+  // 270
+  // 271
+  // 272
+  // 273
+  // 274
+  // 275
+  // 276
+  // 277
+  // 278
+  // 279
+  // 280
+  {int $104=badstrings.length;i=0;i:for(;$104>0;$104--,i++){
+   try{
+    v=badstrings[i];
+    (new com.ibm.icu.math.BigDecimal(v)).intValueExact();
+    flag=false;
+   }
+   catch (java.lang.ArithmeticException $105){ae=$105;
+    norm=(new com.ibm.icu.math.BigDecimal(v)).toString();
+    flag=(ae.getMessage()).equals("Conversion overflow:"+" "+norm);
+   }
+   (new Test("inv"+(220+i))).ok=flag;
+   }
+  }/*i*/
+  
+  // now slip in some single bits...
+  dimax=new com.ibm.icu.math.BigDecimal(imax);
+  {i=0;i:for(;i<=49;i++){
+   try{
+    num=two.pow(new com.ibm.icu.math.BigDecimal(i),mc50);
+    dv=dimax.add(num,mc50);
+    dv.intValueExact();
+    flag=false;
+   }
+   catch (java.lang.ArithmeticException $106){ae=$106;
+    norm=dv.toString();
+    flag=(ae.getMessage()).equals("Conversion overflow:"+" "+norm);
+   }
+   (new Test("inv"+(300+i))).ok=flag;
+   }
+  }/*i*/
+  dimin=new com.ibm.icu.math.BigDecimal(imin);
+  {i=50;i:for(;i<=99;i++){
+   try{
+    num=two.pow(new com.ibm.icu.math.BigDecimal(i),mc50);
+    dv=dimin.subtract(num,mc50);
+    dv.intValueExact();
+    flag=false;
+   }
+   catch (java.lang.ArithmeticException $107){ae=$107;
+    norm=dv.toString();
+    flag=(ae.getMessage()).equals("Conversion overflow:"+" "+norm);
+   }
+   (new Test("inv"+(300+i))).ok=flag;
+   }
+  }/*i*/
+  
+  // the following should all raise bad-decimal-part exceptions
+  badstrings=new java.lang.String[]{"0.09","0.9","0.01","0.1","-0.01","-0.1","1.01","-1.01","-1.1","-111.111","+111.111","1.09","1.05","1.04","1.99","1.9","1.5","1.4","-1.09","-1.05","-1.04","-1.99","-1.9","-1.5","-1.4","1E-1000","-1E-1000","11E-1","1.5"}; // 400-403
+  // 404-407
+  // 408-411
+  // 412-416
+  // 417-420
+  // 421-424
+  // 425-428
+  
+  {int $108=badstrings.length;i=0;i:for(;$108>0;$108--,i++){
+   try{
+    v=badstrings[i];
+    (new com.ibm.icu.math.BigDecimal(v)).intValueExact();
+    flag=false;
+   }
+   catch (java.lang.ArithmeticException $109){ae=$109;
+    norm=(new com.ibm.icu.math.BigDecimal(v)).toString();
+    flag=(ae.getMessage()).equals("Decimal part non-zero:"+" "+norm);
+   }
+   (new Test("inv"+(400+i))).ok=flag;
+   }
+  }/*i*/
+  
+  summary("intValue+");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#longValue} method. */
+ 
+ public void diaglongvalue(){
+  boolean flag=false;
+  java.lang.String v=null;
+  java.lang.ArithmeticException ae=null;
+  java.lang.String badstrings[];
+  int i=0;
+  java.lang.String norm=null;
+  com.ibm.icu.math.BigDecimal dlmax;
+  com.ibm.icu.math.BigDecimal num=null;
+  com.ibm.icu.math.BigDecimal dv=null;
+  com.ibm.icu.math.BigDecimal dlmin;
+  
+  
+  // longValue --
+  
+  (new Test("lov001")).ok=lmin==((new com.ibm.icu.math.BigDecimal(lmin)).longValue());
+  (new Test("lov002")).ok=(((long)99))==((new com.ibm.icu.math.BigDecimal("99")).longValue());
+  (new Test("lov003")).ok=(((long)1))==((new com.ibm.icu.math.BigDecimal("1")).longValue());
+  (new Test("lov004")).ok=(((long)0))==((new com.ibm.icu.math.BigDecimal("0")).longValue());
+  (new Test("lov005")).ok=(((long)-1))==((new com.ibm.icu.math.BigDecimal("-1")).longValue());
+  (new Test("lov006")).ok=(((long)-99))==((new com.ibm.icu.math.BigDecimal("-99")).longValue());
+  (new Test("lov007")).ok=lmax==((new com.ibm.icu.math.BigDecimal(lmax)).longValue());
+  (new Test("lov008")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.0")).longValue());
+  (new Test("lov009")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.3")).longValue());
+  (new Test("lov010")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.5")).longValue());
+  (new Test("lov011")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.7")).longValue());
+  (new Test("lov012")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.9")).longValue());
+  (new Test("lov013")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).longValue());
+  (new Test("lov014")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.3")).longValue());
+  (new Test("lov015")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.5")).longValue());
+  (new Test("lov016")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.7")).longValue());
+  (new Test("lov017")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.9")).longValue());
+  (new Test("lov018")).ok=((new com.ibm.icu.math.BigDecimal("888888888899999999998")).longValue())==3445173361941522430L; // ugh
+  (new Test("lov019")).ok=((new com.ibm.icu.math.BigDecimal("-888888888899999999998")).longValue())==(-3445173361941522430L); // ugh
+  
+  // longValueExact --
+  
+  (new Test("lov101")).ok=lmin==((new com.ibm.icu.math.BigDecimal(lmin)).longValue());
+  (new Test("lov102")).ok=(((long)99))==((new com.ibm.icu.math.BigDecimal("99")).longValue());
+  (new Test("lov103")).ok=(((long)1))==((new com.ibm.icu.math.BigDecimal("1")).longValue());
+  (new Test("lov104")).ok=(((long)0))==((new com.ibm.icu.math.BigDecimal("0")).longValue());
+  (new Test("lov105")).ok=(((long)-1))==((new com.ibm.icu.math.BigDecimal("-1")).longValue());
+  (new Test("lov106")).ok=(((long)-99))==((new com.ibm.icu.math.BigDecimal("-99")).longValue());
+  (new Test("lov107")).ok=lmax==((new com.ibm.icu.math.BigDecimal(lmax)).longValue());
+  (new Test("lov108")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.0")).longValue());
+  (new Test("lov109")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).longValue());
+  
+  try{
+   v="-888888888899999999998";
+   (new com.ibm.icu.math.BigDecimal(v)).longValueExact();
+   flag=false;
+  }
+  catch (java.lang.ArithmeticException $110){ae=$110;
+   flag=(ae.getMessage()).equals("Conversion overflow:"+" "+v);
+  }
+  (new Test("lov200")).ok=flag;
+  try{
+   v="88888887487487479488888";
+   (new com.ibm.icu.math.BigDecimal(v)).longValueExact();
+   flag=false;
+  }
+  catch (java.lang.ArithmeticException $111){ae=$111;
+   flag=(ae.getMessage()).equals("Conversion overflow:"+" "+v);
+  }
+  (new Test("lov201")).ok=flag;
+  try{
+   v="1.5";
+   (new com.ibm.icu.math.BigDecimal(v)).longValueExact();
+   flag=false;
+  }
+  catch (java.lang.ArithmeticException $112){ae=$112;
+   flag=(ae.getMessage()).equals("Decimal part non-zero:"+" "+v);
+  }
+  (new Test("lov202")).ok=flag;
+  
+  badstrings=new java.lang.String[]{"1234567890110987654321","-1234567890110987654321",(new com.ibm.icu.math.BigDecimal(lmax)).add(one).toString(),(new com.ibm.icu.math.BigDecimal(lmin)).subtract(one).toString(),(new com.ibm.icu.math.BigDecimal(lmin)).multiply(two).toString(),(new com.ibm.icu.math.BigDecimal(lmax)).multiply(two).toString(),(new com.ibm.icu.math.BigDecimal(lmin)).multiply(ten).toString(),(new com.ibm.icu.math.BigDecimal(lmax)).multiply(ten).toString(),"9223372036854775818","9323372036854775818","9423372036854775818","9523372036854775818","9623372036854775818","9723372036854775818","9823372036854775818","9923372036854775818","-9223372036854775818","-9323372036854775818","-9423372036854775818","-9523372036854775818","-9623372036854775818","-9723372036854775818","-9823372036854775818","-9923372036854775818","12345678901234567890"}; // 220
+  // 221
+  // 222
+  // 223
+  // 224
+  // 225
+  // 226
+  // 227
+  // 228
+  // 229
+  // 230
+  // 231
+  // 232
+  // 233
+  // 234
+  // 235
+  // 236
+  // 237
+  // 238
+  // 239
+  // 240
+  // 241
+  // 242
+  // 243
+  // 244
+  {int $113=badstrings.length;i=0;i:for(;$113>0;$113--,i++){
+   try{
+    v=badstrings[i];
+    (new com.ibm.icu.math.BigDecimal(v)).longValueExact();
+    flag=false;
+   }
+   catch (java.lang.ArithmeticException $114){ae=$114;
+    norm=(new com.ibm.icu.math.BigDecimal(v)).toString();
+    flag=(ae.getMessage()).equals("Conversion overflow:"+" "+norm);
+   }
+   (new Test("lov"+(220+i))).ok=flag;
+   }
+  }/*i*/
+  
+  // now slip in some single bits...
+  dlmax=new com.ibm.icu.math.BigDecimal(lmax);
+  {i=0;i:for(;i<=99;i++){
+   try{
+    num=two.pow(new com.ibm.icu.math.BigDecimal(i),mc50);
+    dv=dlmax.add(num,mc50);
+    dv.longValueExact();
+    flag=false;
+   }
+   catch (java.lang.ArithmeticException $115){ae=$115;
+    norm=dv.toString();
+    flag=(ae.getMessage()).equals("Conversion overflow:"+" "+norm);
+   }
+   (new Test("lov"+(300+i))).ok=flag;
+   }
+  }/*i*/
+  dlmin=new com.ibm.icu.math.BigDecimal(lmin);
+  {i=0;i:for(;i<=99;i++){
+   try{
+    num=two.pow(new com.ibm.icu.math.BigDecimal(i),mc50);
+    dv=dlmin.subtract(num,mc50);
+    dv.longValueExact();
+    flag=false;
+   }
+   catch (java.lang.ArithmeticException $116){ae=$116;
+    norm=dv.toString();
+    flag=(ae.getMessage()).equals("Conversion overflow:"+" "+norm);
+   }
+   (new Test("lov"+(400+i))).ok=flag;
+   }
+  }/*i*/
+  
+  summary("longValue+");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#movePointLeft} method. */
+ 
+ public void diagmovepointleft(){
+  (new Test("mpl001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-10).toString()).equals("-10000000000");
+  (new Test("mpl002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-5).toString()).equals("-100000");
+  (new Test("mpl003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-1).toString()).equals("-10");
+  (new Test("mpl004")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(0).toString()).equals("-1");
+  (new Test("mpl005")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+1).toString()).equals("-0.1");
+  (new Test("mpl006")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+5).toString()).equals("-0.00001");
+  (new Test("mpl007")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+10).toString()).equals("-0.0000000001");
+  
+  (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-10).toString()).equals("0");
+  (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-5).toString()).equals("0");
+  (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-1).toString()).equals("0");
+  (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(0).toString()).equals("0");
+  (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+1).toString()).equals("0.0");
+  (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+5).toString()).equals("0.00000");
+  (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+10).toString()).equals("0.0000000000");
+  
+  (new Test("mpl020")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-10).toString()).equals("10000000000");
+  (new Test("mpl021")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-5).toString()).equals("100000");
+  (new Test("mpl022")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-1).toString()).equals("10");
+  (new Test("mpl023")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(0).toString()).equals("1");
+  (new Test("mpl024")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+1).toString()).equals("0.1");
+  (new Test("mpl025")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+5).toString()).equals("0.00001");
+  (new Test("mpl026")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+10).toString()).equals("0.0000000001");
+  
+  (new Test("mpl030")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-10).toString()).equals("50000000000");
+  (new Test("mpl031")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-5).toString()).equals("500000");
+  (new Test("mpl032")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-1).toString()).equals("50");
+  (new Test("mpl033")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(0).toString()).equals("5");
+  (new Test("mpl034")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+1).toString()).equals("0.5");
+  (new Test("mpl035")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+5).toString()).equals("0.00005");
+  (new Test("mpl036")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+10).toString()).equals("0.0000000005");
+  
+  summary("movePointLeft");
+  return;}
+/* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#movePointRight} method. */
+ 
+ public void diagmovepointright(){
+  (new Test("mpr001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+10).toString()).equals("-10000000000");
+  (new Test("mpr002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+5).toString()).equals("-100000");
+  (new Test("mpr003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+1).toString()).equals("-10");
+  (new Test("mpr004")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(0).toString()).equals("-1");
+  (new Test("mpr005")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-1).toString()).equals("-0.1");
+  (new Test("mpr006")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-5).toString()).equals("-0.00001");
+  (new Test("mpr007")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-10).toString()).equals("-0.0000000001");
+  
+  (new Test("mpr010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+10).toString()).equals("0");
+  (new Test("mpr011")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+5).toString()).equals("0");
+  (new Test("mpr012")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+1).toString()).equals("0");
+  (new Test("mpr013")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(0).toString()).equals("0");
+  (new Test("mpr014")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-1).toString()).equals("0.0");
+  (new Test("mpr015")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-5).toString()).equals("0.00000");
+  (new Test("mpr016")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-10).toString()).equals("0.0000000000");
+  
+  (new Test("mpr020")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+10).toString()).equals("10000000000");
+  (new Test("mpr021")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+5).toString()).equals("100000");
+  (new Test("mpr022")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+1).toString()).equals("10");
+  (new Test("mpr023")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(0).toString()).equals("1");
+  (new Test("mpr024")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-1).toString()).equals("0.1");
+  (new Test("mpr025")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-5).toString()).equals("0.00001");
+  (new Test("mpr026")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-10).toString()).equals("0.0000000001");
+  
+  (new Test("mpr030")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+10).toString()).equals("50000000000");
+  (new Test("mpr031")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+5).toString()).equals("500000");
+  (new Test("mpr032")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+1).toString()).equals("50");
+  (new Test("mpr033")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(0).toString()).equals("5");
+  (new Test("mpr034")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-1).toString()).equals("0.5");
+  (new Test("mpr035")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-5).toString()).equals("0.00005");
+  (new Test("mpr036")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-10).toString()).equals("0.0000000005");
+  
+  summary("movePointRight");
+  return;}
+/* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#scale} method. */
+ 
+ public void diagscale(){
+  (new Test("sca001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).scale())==0;
+  (new Test("sca002")).ok=((new com.ibm.icu.math.BigDecimal("-10")).scale())==0;
+  (new Test("sca003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).scale())==0;
+  (new Test("sca004")).ok=((new com.ibm.icu.math.BigDecimal("+10")).scale())==0;
+  (new Test("sca005")).ok=((new com.ibm.icu.math.BigDecimal("1E+10")).scale())==0;
+  (new Test("sca006")).ok=((new com.ibm.icu.math.BigDecimal("1E-10")).scale())==10;
+  (new Test("sca007")).ok=((new com.ibm.icu.math.BigDecimal("0E-10")).scale())==0;
+  (new Test("sca008")).ok=((new com.ibm.icu.math.BigDecimal("0.000")).scale())==3;
+  (new Test("sca009")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).scale())==2;
+  (new Test("sca010")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).scale())==1;
+  (new Test("sca011")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).scale())==1;
+  (new Test("sca012")).ok=((new com.ibm.icu.math.BigDecimal("0.12")).scale())==2;
+  (new Test("sca013")).ok=((new com.ibm.icu.math.BigDecimal("0.123")).scale())==3;
+  (new Test("sca014")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).scale())==1;
+  (new Test("sca015")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).scale())==1;
+  (new Test("sca016")).ok=((new com.ibm.icu.math.BigDecimal("-0.12")).scale())==2;
+  (new Test("sca017")).ok=((new com.ibm.icu.math.BigDecimal("-0.123")).scale())==3;
+  summary("scale");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#setScale} method. */
+ 
+ public void diagsetscale(){
+  boolean flag=false;
+  java.lang.RuntimeException e=null;
+  
+  (new Test("ssc001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(0).toString()).equals("-1");
+  (new Test("ssc002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(1).toString()).equals("-1.0");
+  (new Test("ssc003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(2).toString()).equals("-1.00");
+  (new Test("ssc004")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(0).toString()).equals("0");
+  (new Test("ssc005")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(1).toString()).equals("0.0");
+  (new Test("ssc006")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(2).toString()).equals("0.00");
+  (new Test("ssc007")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(0).toString()).equals("1");
+  (new Test("ssc008")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(1).toString()).equals("1.0");
+  (new Test("ssc009")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(2).toString()).equals("1.00");
+  (new Test("ssc010")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-1");
+  (new Test("ssc011")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-1.0");
+  (new Test("ssc012")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-1.00");
+  (new Test("ssc013")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+  (new Test("ssc014")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.0");
+  (new Test("ssc015")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.00");
+  (new Test("ssc016")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");
+  (new Test("ssc017")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.0");
+  (new Test("ssc018")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.00");
+  
+  (new Test("ssc020")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.040");
+  (new Test("ssc021")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.04");
+  (new Test("ssc022")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.0");
+  (new Test("ssc023")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");
+  (new Test("ssc024")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.050");
+  (new Test("ssc025")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.05");
+  (new Test("ssc026")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.1");
+  (new Test("ssc027")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");
+  (new Test("ssc028")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1.050");
+  (new Test("ssc029")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1.05");
+  (new Test("ssc030")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1.0");
+  (new Test("ssc031")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1");
+  (new Test("ssc032")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.060");
+  (new Test("ssc033")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.06");
+  (new Test("ssc034")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.1");
+  (new Test("ssc035")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");
+  
+  (new Test("ssc040")).ok=((new com.ibm.icu.math.BigDecimal("-10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-10.00");
+  (new Test("ssc041")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.00");
+  (new Test("ssc042")).ok=((new com.ibm.icu.math.BigDecimal("+10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("10.00");
+  (new Test("ssc043")).ok=((new com.ibm.icu.math.BigDecimal("1E+10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("10000000000.00");
+  (new Test("ssc044")).ok=((new com.ibm.icu.math.BigDecimal("1E-10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.00");
+  (new Test("ssc045")).ok=((new com.ibm.icu.math.BigDecimal("1E-2")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.01");
+  (new Test("ssc046")).ok=((new com.ibm.icu.math.BigDecimal("0E-10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.00");
+  
+  // check rounding
+  (new Test("ssc050")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.01");
+  (new Test("ssc051")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.1");
+  (new Test("ssc052")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("1");
+  (new Test("ssc053")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.00");
+  (new Test("ssc054")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.0");
+  (new Test("ssc055")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0");
+  (new Test("ssc056")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.00");
+  (new Test("ssc057")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.0");
+  (new Test("ssc058")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0");
+  (new Test("ssc059")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.00");
+  (new Test("ssc060")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.0");
+  (new Test("ssc061")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");
+  (new Test("ssc062")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.00");
+  (new Test("ssc063")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");
+  (new Test("ssc064")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+  (new Test("ssc065")).ok=((new com.ibm.icu.math.BigDecimal("0.015")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.02");
+  (new Test("ssc066")).ok=((new com.ibm.icu.math.BigDecimal("0.015")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");
+  (new Test("ssc067")).ok=((new com.ibm.icu.math.BigDecimal("0.015")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+  (new Test("ssc068")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.01");
+  (new Test("ssc069")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.0");
+  (new Test("ssc070")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+  (new Test("ssc071")).ok=((new com.ibm.icu.math.BigDecimal("0.095")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.10");
+  (new Test("ssc072")).ok=((new com.ibm.icu.math.BigDecimal("0.095")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.1");
+  (new Test("ssc073")).ok=((new com.ibm.icu.math.BigDecimal("0.095")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+  (new Test("ssc074")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.01");
+  (new Test("ssc075")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.1");
+  (new Test("ssc076")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("1");
+  
+  try{checkscale:do{
+   (new com.ibm.icu.math.BigDecimal(1)).setScale(-8);
+   flag=false;
+  }while(false);}
+  catch (java.lang.RuntimeException $117){e=$117;
+   flag=(e.getMessage()).equals("Negative scale: -8");
+  }/*checkscale*/
+  (new Test("ssc100")).ok=flag;
+  try{checkrunn:do{
+   (new com.ibm.icu.math.BigDecimal(1.0001D)).setScale(3);
+   flag=false;
+  }while(false);}
+  catch (java.lang.RuntimeException $118){e=$118;
+   flag=(e.getMessage()).equals("Rounding necessary");
+  }/*checkrunn*/
+  (new Test("ssc101")).ok=flag;
+  try{checkrunn:do{
+   (new com.ibm.icu.math.BigDecimal(1E-8D)).setScale(3);
+   flag=false;
+  }while(false);}
+  catch (java.lang.RuntimeException $119){e=$119;
+   flag=(e.getMessage()).equals("Rounding necessary");
+  }/*checkrunn*/
+  (new Test("ssc102")).ok=flag;
+  summary("setScale");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test the <code>BigDecimal.shortValue()</code> method. */
+ 
+ public void diagshortvalue(){
+  boolean flag=false;
+  java.lang.String v=null;
+  java.lang.ArithmeticException ae=null;
+  java.lang.String badstrings[];
+  int i=0;
+  java.lang.String norm=null;
+  
+  (new Test("shv002")).ok=(((short)0))==((new com.ibm.icu.math.BigDecimal("0")).shortValue());
+  (new Test("shv003")).ok=(((short)1))==((new com.ibm.icu.math.BigDecimal("1")).shortValue());
+  (new Test("shv004")).ok=(((short)99))==((new com.ibm.icu.math.BigDecimal("99")).shortValue());
+  (new Test("shv006")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smax)).shortValue());
+  (new Test("shv007")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smin)).shortValue());
+  (new Test("shv008")).ok=((sneg))==((new com.ibm.icu.math.BigDecimal(sneg)).shortValue());
+  (new Test("shv009")).ok=((szer))==((new com.ibm.icu.math.BigDecimal(szer)).shortValue());
+  (new Test("shv010")).ok=((spos))==((new com.ibm.icu.math.BigDecimal(spos)).shortValue());
+  (new Test("shv011")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smax+1)).shortValue());
+  (new Test("shv012")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smin-1)).shortValue());
+  
+  (new Test("shv022")).ok=(((short)0))==((new com.ibm.icu.math.BigDecimal("0")).shortValueExact());
+  (new Test("shv023")).ok=(((short)1))==((new com.ibm.icu.math.BigDecimal("1")).shortValueExact());
+  (new Test("shv024")).ok=(((short)99))==((new com.ibm.icu.math.BigDecimal("99")).shortValueExact());
+  (new Test("shv026")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smax)).shortValueExact());
+  (new Test("shv027")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smin)).shortValueExact());
+  (new Test("shv028")).ok=((sneg))==((new com.ibm.icu.math.BigDecimal(sneg)).shortValueExact());
+  (new Test("shv029")).ok=((szer))==((new com.ibm.icu.math.BigDecimal(szer)).shortValueExact());
+  (new Test("shv030")).ok=((spos))==((new com.ibm.icu.math.BigDecimal(spos)).shortValueExact());
+  try{
+   v="-88888888888";
+   (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();
+   flag=false;
+  }
+  catch (java.lang.ArithmeticException $120){ae=$120;
+   flag=(ae.getMessage()).equals("Conversion overflow:"+" "+v);
+  }
+  (new Test("shv100")).ok=flag;
+  try{
+   v="88888888888";
+   (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();
+   flag=false;
+  }
+  catch (java.lang.ArithmeticException $121){ae=$121;
+   flag=(ae.getMessage()).equals("Conversion overflow:"+" "+v);
+  }
+  (new Test("shv101")).ok=flag;
+  try{
+   v="1.5";
+   (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();
+   flag=false;
+  }
+  catch (java.lang.ArithmeticException $122){ae=$122;
+   flag=(ae.getMessage()).equals("Decimal part non-zero:"+" "+v);
+  }
+  (new Test("shv102")).ok=flag;
+  
+  badstrings=new java.lang.String[]{"123456",(new com.ibm.icu.math.BigDecimal(smax)).add(one).toString(),(new com.ibm.icu.math.BigDecimal(smin)).subtract(one).toString(),"71111","81111","91111","-71111","-81111","-91111",(new com.ibm.icu.math.BigDecimal(smin)).multiply(two).toString(),(new com.ibm.icu.math.BigDecimal(smax)).multiply(two).toString(),(new com.ibm.icu.math.BigDecimal(smin)).multiply(ten).toString(),(new com.ibm.icu.math.BigDecimal(smax)).multiply(ten).toString(),"-123456"}; // 220
+  // 221
+  // 222
+  // 223
+  // 224
+  // 225
+  // 226
+  // 227
+  // 228
+  // 229
+  // 230
+  // 231
+  // 232
+  // 233
+  {int $123=badstrings.length;i=0;i:for(;$123>0;$123--,i++){
+   try{
+    v=badstrings[i];
+    (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();
+    flag=false;
+   }
+   catch (java.lang.ArithmeticException $124){ae=$124;
+    norm=(new com.ibm.icu.math.BigDecimal(v)).toString();
+    flag=(ae.getMessage()).equals("Conversion overflow:"+" "+norm);
+   }
+   (new Test("shv"+(220+i))).ok=flag;
+   }
+  }/*i*/
+  
+  
+  summary("shortValue+");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#signum} method. */
+ 
+ public void diagsignum(){
+  // necessarily checks some obscure constructions, too
+  (new Test("sig001")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-1")).signum());
+  (new Test("sig002")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-0.0010")).signum());
+  (new Test("sig003")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-0.001")).signum());
+  (new Test("sig004")).ok=0==((new com.ibm.icu.math.BigDecimal("-0.00")).signum());
+  (new Test("sig005")).ok=0==((new com.ibm.icu.math.BigDecimal("-0")).signum());
+  (new Test("sig006")).ok=0==((new com.ibm.icu.math.BigDecimal("0")).signum());
+  (new Test("sig007")).ok=0==((new com.ibm.icu.math.BigDecimal("00")).signum());
+  (new Test("sig008")).ok=0==((new com.ibm.icu.math.BigDecimal("00.0")).signum());
+  (new Test("sig009")).ok=1==((new com.ibm.icu.math.BigDecimal("00.01")).signum());
+  (new Test("sig010")).ok=1==((new com.ibm.icu.math.BigDecimal("00.01")).signum());
+  (new Test("sig011")).ok=1==((new com.ibm.icu.math.BigDecimal("00.010")).signum());
+  (new Test("sig012")).ok=1==((new com.ibm.icu.math.BigDecimal("01.01")).signum());
+  (new Test("sig013")).ok=1==((new com.ibm.icu.math.BigDecimal("+0.01")).signum());
+  (new Test("sig014")).ok=1==((new com.ibm.icu.math.BigDecimal("+0.001")).signum());
+  (new Test("sig015")).ok=1==((new com.ibm.icu.math.BigDecimal("1")).signum());
+  (new Test("sig016")).ok=1==((new com.ibm.icu.math.BigDecimal("1e+12")).signum());
+  (new Test("sig017")).ok=0==((new com.ibm.icu.math.BigDecimal("00e+12")).signum());
+  summary("signum");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#toBigDecimal} method. */
+ 
+ public void diagtobigdecimal(){
+  (new Test("tbd001")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigDecimal().toString()).equals("0");
+  (new Test("tbd002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigDecimal().toString()).equals("-1");
+  (new Test("tbd003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigDecimal().toString()).equals("1");
+  (new Test("tbd004")).ok=((new com.ibm.icu.math.BigDecimal("1")).toBigDecimal().toString()).equals("1");
+  (new Test("tbd005")).ok=((new com.ibm.icu.math.BigDecimal("1E+2")).toBigDecimal().toString()).equals("100");
+  (new Test("tbd006")).ok=((new com.ibm.icu.math.BigDecimal("1E-2")).toBigDecimal().toString()).equals("0.01");
+  (new Test("tbd007")).ok=((new com.ibm.icu.math.BigDecimal("1E-8")).toBigDecimal().toString()).equals("0.00000001");
+  (new Test("tbd008")).ok=((new com.ibm.icu.math.BigDecimal("1E-9")).toBigDecimal().toString()).equals("0.000000001");
+  (new Test("tbd009")).ok=((new com.ibm.icu.math.BigDecimal("1E10")).toBigDecimal().toString()).equals("10000000000");
+  (new Test("tbd010")).ok=((new com.ibm.icu.math.BigDecimal("1E12")).toBigDecimal().toString()).equals("1000000000000");
+  summary("toBigDecimal");
+  return;}
+/* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#toBigInteger} method. */
+ 
+ public void diagtobiginteger(){
+  boolean flag=false;
+  java.lang.String badstrings[];
+  int i=0;
+  (new Test("tbi001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigInteger().toString()).equals("-1");
+  (new Test("tbi002")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigInteger().toString()).equals("0");
+  (new Test("tbi003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigInteger().toString()).equals("1");
+  (new Test("tbi004")).ok=((new com.ibm.icu.math.BigDecimal("10")).toBigInteger().toString()).equals("10");
+  (new Test("tbi005")).ok=((new com.ibm.icu.math.BigDecimal("1000")).toBigInteger().toString()).equals("1000");
+  (new Test("tbi006")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).toBigInteger().toString()).equals("-1");
+  (new Test("tbi007")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).toBigInteger().toString()).equals("0");
+  (new Test("tbi008")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).toBigInteger().toString()).equals("1");
+  (new Test("tbi009")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).toBigInteger().toString()).equals("10");
+  (new Test("tbi010")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).toBigInteger().toString()).equals("1000");
+  (new Test("tbi011")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).toBigInteger().toString()).equals("0");
+  (new Test("tbi012")).ok=((new com.ibm.icu.math.BigDecimal("0.01")).toBigInteger().toString()).equals("0");
+  (new Test("tbi013")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).toBigInteger().toString()).equals("0");
+  (new Test("tbi014")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).toBigInteger().toString()).equals("0");
+  (new Test("tbi015")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).toBigInteger().toString()).equals("0");
+  (new Test("tbi016")).ok=((new com.ibm.icu.math.BigDecimal("-0.01")).toBigInteger().toString()).equals("0");
+  (new Test("tbi017")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).toBigInteger().toString()).equals("0");
+  (new Test("tbi018")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).toBigInteger().toString()).equals("0");
+  (new Test("tbi019")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).toBigInteger().toString()).equals("1");
+  (new Test("tbi020")).ok=((new com.ibm.icu.math.BigDecimal("1.01")).toBigInteger().toString()).equals("1");
+  (new Test("tbi021")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).toBigInteger().toString()).equals("1");
+  (new Test("tbi022")).ok=((new com.ibm.icu.math.BigDecimal("1.1")).toBigInteger().toString()).equals("1");
+  (new Test("tbi023")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).toBigInteger().toString()).equals("-1");
+  (new Test("tbi024")).ok=((new com.ibm.icu.math.BigDecimal("-1.01")).toBigInteger().toString()).equals("-1");
+  (new Test("tbi025")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).toBigInteger().toString()).equals("-1");
+  (new Test("tbi026")).ok=((new com.ibm.icu.math.BigDecimal("-1.1")).toBigInteger().toString()).equals("-1");
+  (new Test("tbi027")).ok=((new com.ibm.icu.math.BigDecimal("-111.111")).toBigInteger().toString()).equals("-111");
+  (new Test("tbi028")).ok=((new com.ibm.icu.math.BigDecimal("+111.111")).toBigInteger().toString()).equals("111");
+  (new Test("tbi029")).ok=((new com.ibm.icu.math.BigDecimal("0.09")).toBigInteger().toString()).equals("0");
+  (new Test("tbi030")).ok=((new com.ibm.icu.math.BigDecimal("0.9")).toBigInteger().toString()).equals("0");
+  (new Test("tbi031")).ok=((new com.ibm.icu.math.BigDecimal("1.09")).toBigInteger().toString()).equals("1");
+  (new Test("tbi032")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).toBigInteger().toString()).equals("1");
+  (new Test("tbi033")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).toBigInteger().toString()).equals("1");
+  (new Test("tbi034")).ok=((new com.ibm.icu.math.BigDecimal("1.99")).toBigInteger().toString()).equals("1");
+  (new Test("tbi034")).ok=((new com.ibm.icu.math.BigDecimal("1.9")).toBigInteger().toString()).equals("1");
+  (new Test("tbi035")).ok=((new com.ibm.icu.math.BigDecimal("1.5")).toBigInteger().toString()).equals("1");
+  (new Test("tbi036")).ok=((new com.ibm.icu.math.BigDecimal("1.4")).toBigInteger().toString()).equals("1");
+  (new Test("tbi037")).ok=((new com.ibm.icu.math.BigDecimal("-1.09")).toBigInteger().toString()).equals("-1");
+  (new Test("tbi038")).ok=((new com.ibm.icu.math.BigDecimal("-1.05")).toBigInteger().toString()).equals("-1");
+  (new Test("tbi039")).ok=((new com.ibm.icu.math.BigDecimal("-1.04")).toBigInteger().toString()).equals("-1");
+  (new Test("tbi040")).ok=((new com.ibm.icu.math.BigDecimal("-1.99")).toBigInteger().toString()).equals("-1");
+  (new Test("tbi041")).ok=((new com.ibm.icu.math.BigDecimal("-1.9")).toBigInteger().toString()).equals("-1");
+  (new Test("tbi042")).ok=((new com.ibm.icu.math.BigDecimal("-1.5")).toBigInteger().toString()).equals("-1");
+  (new Test("tbi043")).ok=((new com.ibm.icu.math.BigDecimal("-1.4")).toBigInteger().toString()).equals("-1");
+  (new Test("tbi044")).ok=((new com.ibm.icu.math.BigDecimal("1E-1000")).toBigInteger().toString()).equals("0");
+  (new Test("tbi045")).ok=((new com.ibm.icu.math.BigDecimal("-1E-1000")).toBigInteger().toString()).equals("0");
+  
+  // Exact variety --
+  (new Test("tbi101")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigIntegerExact().toString()).equals("-1");
+  (new Test("tbi102")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigIntegerExact().toString()).equals("0");
+  (new Test("tbi103")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigIntegerExact().toString()).equals("1");
+  (new Test("tbi104")).ok=((new com.ibm.icu.math.BigDecimal("10")).toBigIntegerExact().toString()).equals("10");
+  (new Test("tbi105")).ok=((new com.ibm.icu.math.BigDecimal("1000")).toBigIntegerExact().toString()).equals("1000");
+  (new Test("tbi106")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).toBigIntegerExact().toString()).equals("-1");
+  (new Test("tbi107")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).toBigIntegerExact().toString()).equals("0");
+  (new Test("tbi108")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).toBigIntegerExact().toString()).equals("1");
+  (new Test("tbi109")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).toBigIntegerExact().toString()).equals("10");
+  (new Test("tbi110")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).toBigIntegerExact().toString()).equals("1000");
+  (new Test("tbi111")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).toBigIntegerExact().toString()).equals("0");
+  (new Test("tbi112")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).toBigIntegerExact().toString()).equals("0");
+  (new Test("tbi113")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).toBigIntegerExact().toString()).equals("0");
+  (new Test("tbi114")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).toBigIntegerExact().toString()).equals("0");
+  (new Test("tbi115")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).toBigIntegerExact().toString()).equals("1");
+  (new Test("tbi116")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).toBigIntegerExact().toString()).equals("1");
+  (new Test("tbi117")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).toBigIntegerExact().toString()).equals("-1");
+  (new Test("tbi118")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).toBigIntegerExact().toString()).equals("-1");
+  (new Test("tbi119")).ok=((new com.ibm.icu.math.BigDecimal("1.00000000000000000000000000000")).toBigIntegerExact().toString()).equals("1");
+  
+  // the following should all raise exceptions
+  
+  badstrings=new java.lang.String[]{"0.09","0.9","0.01","0.1","-0.01","-0.1","1.01","-1.01","-1.1","-111.111","+111.111","1.09","1.05","1.04","1.99","1.9","1.5","1.4","-1.09","-1.05","-1.04","-1.99","-1.9","-1.5","-1.4","1E-1000","-1E-1000","11E-1","1.1","127623156123656561356123512315631231551312356.000001","0.000000000000000000000000000000000000000000000001"}; // 300-303
+  // 304-307
+  // 308-311
+  // 312-316
+  // 317-320
+  // 321-324
+  // 325-328
+  // 329
+  // 330
+  
+  {int $125=badstrings.length;i=0;i:for(;$125>0;$125--,i++){
+   try{
+    (new com.ibm.icu.math.BigDecimal(badstrings[i])).toBigIntegerExact();
+    flag=false;
+   }
+   catch (java.lang.ArithmeticException $126){
+    flag=true;
+   }
+   (new Test("tbi"+(300+i))).ok=flag;
+   }
+  }/*i*/
+  
+  summary("toBigInteger+");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#toCharArray} method. */
+ 
+ public void diagtochararray(){
+  java.lang.String str;
+  char car[];
+  com.ibm.icu.math.BigDecimal d;
+  char ca[];
+  // the function of this has been tested above, this is simply an
+  // existence proof and type-check
+  str="-123.45";
+  car=(str).toCharArray();
+  d=new com.ibm.icu.math.BigDecimal(str);
+  ca=d.toCharArray();
+  (new Test("tca001")).ok=ca.length==car.length;
+  (new Test("tca002")).ok=(new java.lang.String(ca)).equals((java.lang.Object)(new java.lang.String(car)));
+  (new Test("tca003")).ok=(d.toCharArray() instanceof char[]);
+  (new Test("tca004")).ok=(ca instanceof char[]);
+  summary("toCharArray");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#toString} method. */
+ 
+ public void diagtostring(){
+  java.lang.String str;
+  char car[];
+  com.ibm.icu.math.BigDecimal d;
+  char ca[];
+  java.lang.String cs;
+  // the function of this has been tested above, this is simply an
+  // existence proof and type-check
+  str="123.45";
+  car=(str).toCharArray();
+  d=new com.ibm.icu.math.BigDecimal(car,0,car.length);
+  ca=d.toCharArray();
+  cs=d.toString();
+  (new Test("tos001")).ok=(str.toCharArray().length)==ca.length;
+  (new Test("tos002")).ok=(str.length())==(cs.length());
+  (new Test("tos003")).ok=str.equals((java.lang.Object)(new java.lang.String(ca)));
+  (new Test("tos004")).ok=str.equals((java.lang.Object)cs);
+  (new Test("tos005")).ok=(cs instanceof java.lang.String);
+  (new Test("tos006")).ok=(d.toString() instanceof java.lang.String);
+  summary("toString");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#unscaledValue} method. */
+ 
+ public void diagunscaledvalue(){
+  // just like toBigInteger, but scaly bits are preserved [without dots]
+  (new Test("uns001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).unscaledValue().toString()).equals("-1");
+  (new Test("uns002")).ok=((new com.ibm.icu.math.BigDecimal("0")).unscaledValue().toString()).equals("0");
+  (new Test("uns003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).unscaledValue().toString()).equals("1");
+  (new Test("uns004")).ok=((new com.ibm.icu.math.BigDecimal("10")).unscaledValue().toString()).equals("10");
+  (new Test("uns005")).ok=((new com.ibm.icu.math.BigDecimal("1000")).unscaledValue().toString()).equals("1000");
+  (new Test("uns006")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).unscaledValue().toString()).equals("-1");
+  (new Test("uns007")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).unscaledValue().toString()).equals("0");
+  (new Test("uns008")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).unscaledValue().toString()).equals("1");
+  (new Test("uns009")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).unscaledValue().toString()).equals("10");
+  (new Test("uns010")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).unscaledValue().toString()).equals("1000");
+  (new Test("uns011")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).unscaledValue().toString()).equals("0");
+  (new Test("uns012")).ok=((new com.ibm.icu.math.BigDecimal("0.01")).unscaledValue().toString()).equals("1");
+  (new Test("uns013")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).unscaledValue().toString()).equals("0");
+  (new Test("uns014")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).unscaledValue().toString()).equals("1");
+  (new Test("uns015")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).unscaledValue().toString()).equals("0");
+  (new Test("uns016")).ok=((new com.ibm.icu.math.BigDecimal("-0.01")).unscaledValue().toString()).equals("-1");
+  (new Test("uns017")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).unscaledValue().toString()).equals("0");
+  (new Test("uns018")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).unscaledValue().toString()).equals("-1");
+  (new Test("uns019")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).unscaledValue().toString()).equals("100");
+  (new Test("uns020")).ok=((new com.ibm.icu.math.BigDecimal("1.01")).unscaledValue().toString()).equals("101");
+  (new Test("uns021")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).unscaledValue().toString()).equals("10");
+  (new Test("uns022")).ok=((new com.ibm.icu.math.BigDecimal("1.1")).unscaledValue().toString()).equals("11");
+  (new Test("uns023")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).unscaledValue().toString()).equals("-100");
+  (new Test("uns024")).ok=((new com.ibm.icu.math.BigDecimal("-1.01")).unscaledValue().toString()).equals("-101");
+  (new Test("uns025")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).unscaledValue().toString()).equals("-10");
+  (new Test("uns026")).ok=((new com.ibm.icu.math.BigDecimal("-1.1")).unscaledValue().toString()).equals("-11");
+  (new Test("uns027")).ok=((new com.ibm.icu.math.BigDecimal("-111.111")).unscaledValue().toString()).equals("-111111");
+  (new Test("uns028")).ok=((new com.ibm.icu.math.BigDecimal("+111.111")).unscaledValue().toString()).equals("111111");
+  summary("unscaledValue");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link BigDecimal#valueOf} method [long and double]. */
+ 
+ public void diagvalueof(){
+  boolean flag=false;
+  java.lang.NumberFormatException e=null;
+  double dzer;
+  double dpos;
+  double dneg;
+  double dpos5;
+  double dneg5;
+  double dmin;
+  double dmax;
+  double d;
+  
+  // valueOf(long [,scale]) --
+  
+  (new Test("val001")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-2)).toString()).equals("-2");
+  (new Test("val002")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-1)).toString()).equals("-1");
+  (new Test("val003")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-0)).toString()).equals("0");
+  (new Test("val004")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)+1)).toString()).equals("1");
+  (new Test("val005")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)+2)).toString()).equals("2");
+  (new Test("val006")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)10)).toString()).equals("10");
+  (new Test("val007")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)11)).toString()).equals("11");
+  (new Test("val008")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin).toString()).equals("-9223372036854775808");
+  (new Test("val009")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax).toString()).equals("9223372036854775807");
+  (new Test("val010")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lneg).toString()).equals("-1");
+  (new Test("val011")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer).toString()).equals("0");
+  (new Test("val012")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lpos).toString()).equals("1");
+  (new Test("val013")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin,0).toString()).equals("-9223372036854775808");
+  (new Test("val014")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax,0).toString()).equals("9223372036854775807");
+  (new Test("val015")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lneg,0).toString()).equals("-1");
+  (new Test("val016")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lpos,0).toString()).equals("1");
+  
+  (new Test("val017")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,0).toString()).equals("0");
+  (new Test("val018")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,1).toString()).equals("0.0");
+  (new Test("val019")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,2).toString()).equals("0.00");
+  (new Test("val020")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,3).toString()).equals("0.000");
+  (new Test("val021")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,10).toString()).equals("0.0000000000");
+  
+  (new Test("val022")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin,7).toString()).equals("-922337203685.4775808");
+  (new Test("val023")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax,11).toString()).equals("92233720.36854775807");
+  
+  
+  try{checkscale:do{
+   com.ibm.icu.math.BigDecimal.valueOf((long)23,-8);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NumberFormatException $127){e=$127;
+   flag=(e.getMessage()).equals("Negative scale: -8");
+  }/*checkscale*/
+  (new Test("val100")).ok=flag;
+  
+  // valueOf(double) --
+  
+  dzer=(double)0;
+  dpos=(double)1;
+  dpos=dpos/((double)10);
+  dneg=(double)-dpos;
+  (new Test("val201")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dneg).toString()).equals("-0.1");
+  (new Test("val202")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dzer).toString()).equals("0.0"); // cf. constructor
+  (new Test("val203")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dpos).toString()).equals("0.1");
+  dpos5=(double)0.5D;
+  dneg5=(double)-dpos5;
+  (new Test("val204")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dneg5).toString()).equals("-0.5");
+  (new Test("val205")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dpos5).toString()).equals("0.5");
+  dmin=java.lang.Double.MIN_VALUE;
+  dmax=java.lang.Double.MAX_VALUE;
+  (new Test("val206")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dmin).toString()).equals("4.9E-324");
+  (new Test("val207")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dmax).toString()).equals("1.7976931348623157E+308");
+  
+  // nasties
+  d=(double)9;
+  d=d/((double)10);
+  (new Test("val210")).ok=(com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.9");
+  d=d/((double)10);
+  (new Test("val211")).ok=(com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.09");
+  d=d/((double)10);
+  (new Test("val212")).ok=(com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.0090");
+  d=d/((double)10);
+  (new Test("val213")).ok=(com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("9.0E-4");
+  d=d/((double)10);
+  (new Test("val214")).ok=(com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-5");
+  d=d/((double)10);
+  (new Test("val215")).ok=(com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-6");
+  d=d/((double)10);
+  (new Test("val216")).ok=(com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-7");
+  d=d/((double)10);
+  (new Test("val217")).ok=(com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-8");
+  d=d/((double)10);
+  (new Test("val218")).ok=(com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999998E-9");
+  
+  try{checkpin:do{
+   com.ibm.icu.math.BigDecimal.valueOf(java.lang.Double.POSITIVE_INFINITY);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NumberFormatException $128){
+   flag=true;
+  }/*checkpin*/
+  (new Test("val301")).ok=flag;
+  try{checknin:do{
+   com.ibm.icu.math.BigDecimal.valueOf(java.lang.Double.NEGATIVE_INFINITY);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NumberFormatException $129){
+   flag=true;
+  }/*checknin*/
+  (new Test("val302")).ok=flag;
+  try{checknan:do{
+   com.ibm.icu.math.BigDecimal.valueOf(java.lang.Double.NaN);
+   flag=false;
+  }while(false);}
+  catch (java.lang.NumberFormatException $130){
+   flag=true;
+  }/*checknan*/
+  (new Test("val303")).ok=flag;
+  
+  summary("valueOf");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test the {@link MathContext} class. */
+ 
+ public void diagmathcontext(){
+  com.ibm.icu.math.MathContext mccon1;
+  com.ibm.icu.math.MathContext mccon2;
+  com.ibm.icu.math.MathContext mccon3;
+  com.ibm.icu.math.MathContext mccon4;
+  com.ibm.icu.math.MathContext mcrmc;
+  com.ibm.icu.math.MathContext mcrmd;
+  com.ibm.icu.math.MathContext mcrmf;
+  com.ibm.icu.math.MathContext mcrmhd;
+  com.ibm.icu.math.MathContext mcrmhe;
+  com.ibm.icu.math.MathContext mcrmhu;
+  com.ibm.icu.math.MathContext mcrmun;
+  com.ibm.icu.math.MathContext mcrmu;
+  boolean flag=false;
+  java.lang.IllegalArgumentException e=null;
+  // these tests are mostly existence checks
+  (new Test("mcn001")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getDigits())==9;
+  (new Test("mcn002")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())==com.ibm.icu.math.MathContext.SCIENTIFIC;
+  (new Test("mcn003")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())!=com.ibm.icu.math.MathContext.ENGINEERING;
+  (new Test("mcn004")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())!=com.ibm.icu.math.MathContext.PLAIN;
+  (new Test("mcn005")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getLostDigits()?1:0)==0;
+  (new Test("mcn006")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+  
+  (new Test("mcn010")).ok=com.ibm.icu.math.MathContext.ROUND_CEILING>=0;
+  (new Test("mcn011")).ok=com.ibm.icu.math.MathContext.ROUND_DOWN>=0;
+  (new Test("mcn012")).ok=com.ibm.icu.math.MathContext.ROUND_FLOOR>=0;
+  (new Test("mcn013")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_DOWN>=0;
+  (new Test("mcn014")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_EVEN>=0;
+  (new Test("mcn015")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_UP>=0;
+  (new Test("mcn016")).ok=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY>=0;
+  (new Test("mcn017")).ok=com.ibm.icu.math.MathContext.ROUND_UP>=0;
+  
+  mccon1=new com.ibm.icu.math.MathContext(111);
+  (new Test("mcn021")).ok=(mccon1.getDigits())==111;
+  (new Test("mcn022")).ok=(mccon1.getForm())==com.ibm.icu.math.MathContext.SCIENTIFIC;
+  (new Test("mcn023")).ok=(mccon1.getLostDigits()?1:0)==0;
+  (new Test("mcn024")).ok=(mccon1.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+  
+  mccon2=new com.ibm.icu.math.MathContext(78,com.ibm.icu.math.MathContext.ENGINEERING);
+  (new Test("mcn031")).ok=(mccon2.getDigits())==78;
+  (new Test("mcn032")).ok=(mccon2.getForm())==com.ibm.icu.math.MathContext.ENGINEERING;
+  (new Test("mcn033")).ok=(mccon2.getLostDigits()?1:0)==0;
+  (new Test("mcn034")).ok=(mccon2.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+  
+  mccon3=new com.ibm.icu.math.MathContext(5,com.ibm.icu.math.MathContext.PLAIN,true);
+  (new Test("mcn041")).ok=(mccon3.getDigits())==5;
+  (new Test("mcn042")).ok=(mccon3.getForm())==com.ibm.icu.math.MathContext.PLAIN;
+  (new Test("mcn043")).ok=(mccon3.getLostDigits()?1:0)==1;
+  (new Test("mcn044")).ok=(mccon3.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+  
+  mccon4=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);
+  (new Test("mcn051")).ok=(mccon4.getDigits())==0;
+  (new Test("mcn052")).ok=(mccon4.getForm())==com.ibm.icu.math.MathContext.SCIENTIFIC;
+  (new Test("mcn053")).ok=(mccon4.getLostDigits()?1:0)==0;
+  (new Test("mcn054")).ok=(mccon4.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_FLOOR;
+  
+  (new Test("mcn061")).ok=(mccon1.toString()).equals("digits=111 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_HALF_UP");
+  
+  (new Test("mcn062")).ok=(mccon2.toString()).equals("digits=78 form=ENGINEERING lostDigits=0 roundingMode=ROUND_HALF_UP");
+  
+  (new Test("mcn063")).ok=(mccon3.toString()).equals("digits=5 form=PLAIN lostDigits=1 roundingMode=ROUND_HALF_UP");
+  
+  (new Test("mcn064")).ok=(mccon4.toString()).equals("digits=0 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_FLOOR");
+  
+  
+  // complete testing rounding modes round trips
+  mcrmc=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_CEILING);
+  mcrmd=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_DOWN);
+  mcrmf=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);
+  mcrmhd=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN);
+  mcrmhe=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);
+  mcrmhu=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_UP);
+  mcrmun=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+  mcrmu=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_UP);
+  
+  (new Test("mcn071")).ok=(mcrmc.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_CEILING");
+  
+  (new Test("mcn072")).ok=(mcrmd.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_DOWN");
+  
+  (new Test("mcn073")).ok=(mcrmf.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_FLOOR");
+  
+  (new Test("mcn074")).ok=(mcrmhd.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_DOWN");
+  
+  (new Test("mcn075")).ok=(mcrmhe.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_EVEN");
+  
+  (new Test("mcn076")).ok=(mcrmhu.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_UP");
+  
+  (new Test("mcn077")).ok=(mcrmun.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_UNNECESSARY");
+  
+  (new Test("mcn078")).ok=(mcrmu.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_UP");
+  
+  
+  // [get methods tested already]
+  
+  // errors...
+  
+  try{checkdig:do{
+   new com.ibm.icu.math.MathContext(-1);
+   flag=false;
+  }while(false);}
+  catch (java.lang.IllegalArgumentException $131){e=$131;
+   flag=(e.getMessage()).equals("Digits too small: -1");
+  }/*checkdig*/
+  (new Test("mcn101")).ok=flag;
+  try{checkdigbig:do{
+   new com.ibm.icu.math.MathContext(1000000000);
+   flag=false;
+  }while(false);}
+  catch (java.lang.IllegalArgumentException $132){e=$132;
+   flag=(e.getMessage()).equals("Digits too large: 1000000000");
+  }/*checkdigbig*/
+  (new Test("mcn102")).ok=flag;
+  
+  try{checkform:do{
+   new com.ibm.icu.math.MathContext(0,5);
+   flag=false;
+  }while(false);}
+  catch (java.lang.IllegalArgumentException $133){e=$133;
+   flag=(e.getMessage()).equals("Bad form value: 5");
+  }/*checkform*/
+  (new Test("mcn111")).ok=flag;
+  try{checkformneg:do{
+   new com.ibm.icu.math.MathContext(0,-1);
+   flag=false;
+  }while(false);}
+  catch (java.lang.IllegalArgumentException $134){e=$134;
+   flag=(e.getMessage()).equals("Bad form value: -1");
+  }/*checkformneg*/
+  (new Test("mcn112")).ok=flag;
+  
+  // [lostDigits cannot be invalid]
+  
+  try{checkround:do{
+   new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,12);
+   flag=false;
+  }while(false);}
+  catch (java.lang.IllegalArgumentException $135){e=$135;
+   flag=(e.getMessage()).equals("Bad roundingMode value: 12");
+  }/*checkround*/
+  (new Test("mcn121")).ok=flag;
+  try{checkroundneg:do{
+   new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,-1);
+   flag=false;
+  }while(false);}
+  catch (java.lang.IllegalArgumentException $136){e=$136;
+   flag=(e.getMessage()).equals("Bad roundingMode value: -1");
+  }/*checkroundneg*/
+  (new Test("mcn122")).ok=flag;
+  
+  summary("MathContext");
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ 
+ /** Test general arithmetic (base operators).
+  * <p>Unlike the specific method tests, these tests were randomly
+  * generated by an IBM Object Rexx procedure, then manually corrected
+  * for known differences from ANSI X3-274.  These differences are:
+  * <ol>
+  * <li>the trigger point in exponential notation is fixed in ANSI
+  *     X3-274 but varies with DIGITS in Classic and Object Rexx
+  * <li>some trailing zeros were missing (e.g., 1.3 + 1E-60 should show
+  *     seven trailing zeros)
+  * <li>the power operator is less accurate in Object Rexx
+  * <li>ANSI X3-274 [errata 1999] rounds input numbers to DIGITS (rather
+  *     than truncating to DIGITS+1).
+  * </ol>
+  */
+ 
+ public void diagmath(){
+  com.ibm.icu.math.MathContext def;
+  def=com.ibm.icu.math.MathContext.DEFAULT;
+  mathtest(1,def,"-9375284.42","5516.99832E+27276984","5.51699832E+27276987","-5.51699832E+27276987","-5.17234284E+27276994","-1.69934516E-27276981","0","-9375284.42","6.79057752E+41");
+  mathtest(2,def,"-410.832710","99.3588243E-502740862","-410.832710","-410.832710","-4.08198550E-502740858","-4.13483868E+502740862","","","1.36977786E+26");
+  mathtest(3,def,"80025.2340","-8.03097581","80017.2030","80033.2650","-642680.718","-9964.57167","-9964","4.59102916","5.94544517E-40");
+  mathtest(4,def,"81052020.2","-464525495","-383473475","545577515","-3.76507298E+16","-0.17448347","0","81052020.2","");
+  mathtest(5,def,"715.069294E-26923151","85.4404128E+796388557","8.54404128E+796388558","-8.54404128E+796388558","6.10958157E+769465410","8.36921628E-823311708","0","7.15069294E-26923149","4.88802213E-242308334");
+  mathtest(6,def,"-21971575.0E+31454441","-70944960.3E+111238221","-7.09449603E+111238228","7.09449603E+111238228","1.55877252E+142692677","3.09698884E-79783781","0","-2.19715750E+31454448","-4.04549502E-220181139");
+  mathtest(7,def,"682.25316","54470185.6","54470867.9","-54469503.4","3.71624563E+10","0.0000125252586","0","682.25316","3.48578699E+154365541");
+  mathtest(8,def,"-257586757.","2082888.71","-255503868","-259669646","-5.36524548E+14","-123.668036","-123","-1391445.67","-1.26879515E+17519020");
+  mathtest(9,def,"319577540.E+242599761","60.7124561","3.19577540E+242599769","3.19577540E+242599769","1.94023374E+242599771","5.26378869E+242599767","","","");
+  mathtest(10,def,"-13769977.0","24371.3381","-13745605.7","-13794348.3","-3.35592765E+11","-565.007015","-565","-170.9735","-8.73734001E+173982");
+  mathtest(11,def,"-475.434972E-725464311","-3.22214066E-865476836","-4.75434972E-725464309","-4.75434972E-725464309","","1.47552519E+140012527","","","");
+  mathtest(12,def,"842.01250","197199893","197200735","-197199051","1.66044775E+11","0.00000426984258","0","842.01250","7.00674164E+576872502");
+  mathtest(13,def,"572.173103E+280128428","-7140.19428","5.72173103E+280128430","5.72173103E+280128430","-4.08542712E+280128434","-8.01341085E+280128426","","","");
+  mathtest(14,def,"674235.954E+476135291","9684.82245","6.74235954E+476135296","6.74235954E+476135296","6.52985550E+476135300","6.96177919E+476135292","","","");
+  mathtest(15,def,"-360557.921E+437116514","930428850","-3.60557921E+437116519","-3.60557921E+437116519","-3.35473492E+437116528","-3.87517993E+437116510","","","");
+  mathtest(16,def,"957165918E-394595705","1676.59073E-829618944","9.57165918E-394595697","9.57165918E-394595697","","5.70900161E+435023244","","","9.16166595E-789191393");
+  mathtest(17,def,"-2610864.40","31245912.7","28635048.3","-33856777.1","-8.15788411E+13","-0.0835585897","0","-2610864.40","-3.12008905E+200498284");
+  mathtest(18,def,"959.548461","98.994577E+776775426","9.89945770E+776775427","-9.89945770E+776775427","9.49900940E+776775430","9.69293965E-776775426","0","959.548461","6.61712185E+29");
+  mathtest(19,def,"-41085.0268","3115477.61","3074392.58","-3156562.64","-1.27999481E+11","-0.0131873927","0","-41085.0268","4.73844173E+14373829");
+  mathtest(20,def,"-723420285.","2681660.35","-720738625","-726101945","-1.93996749E+15","-269.765813","-269","-2053650.85","4.14324113E+23757873");
+  mathtest(21,def,"63542018.0E-817732230","-8836243.22","-8836243.22","8836243.22","-5.61472726E-817732216","-7.19106711E-817732230","0","6.35420180E-817732223","");
+  mathtest(22,def,"-96051.7108","-291201.955","-387253.666","195150.244","2.79704460E+10","0.329845694","0","-96051.7108","3.53617153E-1450916");
+  mathtest(23,def,"108490.853","91685996.5","91794487.4","-91577505.7","9.94709197E+12","0.00118328706","0","108490.853","6.98124265E+461675038");
+  mathtest(24,def,"-27489.1735","-9835835.4E-506411649","-27489.1735","-27489.1735","2.70378986E-506411638","2.79479804E+506411646","","","4.05866472E-45");
+  mathtest(25,def,"-89220406.6","993391.008E-611041175","-89220406.6","-89220406.6","-8.86307496E-611041162","-8.98139865E+611041176","","","3.19625913E+79");
+  mathtest(26,def,"4.75502020","-17089144.9","-17089140.2","17089149.7","-81259229.2","-2.78247989E-7","0","4.75502020","1.0630191E-11571955");
+  mathtest(27,def,"68027916.2","-796883.839","67231032.4","68824800.0","-5.42103470E+13","-85.3674185","-85","292789.885","8.29415374E-6241744");
+  mathtest(28,def,"-8.01969439E+788605478","92154156.0","-8.01969439E+788605478","-8.01969439E+788605478","-7.39048168E+788605486","-8.70247717E+788605470","","","");
+  mathtest(29,def,"-8012.98341","96188.8651","88175.8817","-104201.849","-770759780","-0.0833046881","0","-8012.98341","-1.16010156E+375502");
+  mathtest(30,def,"21761476E+592330677","-9.70744506","2.17614760E+592330684","2.17614760E+592330684","-2.11248333E+592330685","-2.24173053E+592330683","","","");
+  mathtest(31,def,"-9840778.51","-17907.219","-9858685.73","-9822871.29","1.76220976E+11","549.542534","549","-9715.279","-6.62997437E-125225");
+  mathtest(32,def,"-4.1097614","-819.225776E-145214751","-4.10976140","-4.10976140","3.36682247E-145214748","5.01664074E+145214748","","","0.0000122876018");
+  mathtest(33,def,"-448.880985","-394.087374E-442511435","-448.880985","-448.880985","1.76898329E-442511430","1.13903925E+442511435","","","2.46306099E-11");
+  mathtest(34,def,"779.445304E+882688544","-797868519","7.79445304E+882688546","7.79445304E+882688546","-6.21894870E+882688555","-9.7690946E+882688537","","","");
+  mathtest(35,def,"799995477","-6.23675208E+156309440","-6.23675208E+156309440","6.23675208E+156309440","-4.98937346E+156309449","-1.28271169E-156309432","0","799995477","3.81482667E-54");
+  mathtest(36,def,"-51932.8170","591840275E-278480289","-51932.8170","-51932.8170","-3.07359327E-278480276","-8.7748028E+278480284","","","1.96178443E+28");
+  mathtest(37,def,"70.3552392","-4228656.73","-4228586.38","4228727.09","-297508156","-0.0000166377277","0","70.3552392","9.14742382E-7811584");
+  mathtest(38,def,"1588359.34","-12232799.2","-10644439.9","13821158.5","-1.94300809E+13","-0.129844307","0","1588359.34","1.56910086E-75854960");
+  mathtest(39,def,"2842.16206","-3.23234345","2838.92972","2845.39440","-9186.84392","-879.288388","-879","0.93216745","4.35565514E-11");
+  mathtest(40,def,"29960.2305","45.2735747E-95205475","29960.2305","29960.2305","1.35640673E-95205469","6.61759773E+95205477","","","2.413936E+22");
+  mathtest(41,def,"2916565.77","1151935.43E-787118724","2916565.77","2916565.77","3.35969544E-787118712","2.53188303E+787118724","","","2916565.77");
+  mathtest(42,def,"-52723012.9E-967143787","79.4088237","79.4088237","-79.4088237","-4.18667244E-967143778","-6.63944011E-967143782","0","-5.27230129E-967143780","");
+  mathtest(43,def,"-167473465","793646.597","-166679819","-168267112","-1.32914746E+14","-211.017682","-211","-14033.033","-1.19053789E+6526910");
+  mathtest(44,def,"-31769071.0","133.4360","-31768937.6","-31769204.4","-4.23913776E+9","-238084.707","-238084","-94.3760","-5.84252432E+997");
+  mathtest(45,def,"45960.6383","-93352.7468","-47392.1085","139313.385","-4.29055183E+9","-0.492333004","0","45960.6383","1.88335323E-435248");
+  mathtest(46,def,"606.175648","5.28528458E-981983620","606.175648","606.175648","3.20381081E-981983617","1.14691203E+981983622","","","8.18450516E+13");
+  mathtest(47,def,"171578.617E+643006110","-407774.293","1.71578617E+643006115","1.71578617E+643006115","-6.99653492E+643006120","-4.20768597E+643006109","","","");
+  mathtest(48,def,"-682286332.","-464.871699","-682286797","-682285867","3.17175606E+11","1467687.39","1467687","-182.709787","-1.6050843E-4108");
+  mathtest(49,def,"492088.428","653.72170","492742.150","491434.706","321688884","752.74911","752","489.70960","3.94658596E+3722");
+  mathtest(50,def,"74303782.5","1141.68058","74304924.2","74302640.8","8.48311855E+10","65082.812","65082","926.99244","4.94849869E+8988");
+  mathtest(51,def,"74.7794084E+119375329","-34799355.6","7.47794084E+119375330","7.47794084E+119375330","-2.60227522E+119375338","-2.14887337E+119375323","","","");
+  mathtest(52,def,"-9432.08369","33735.5058","24303.4221","-43167.5895","-318196114","-0.279589218","0","-9432.08369","2.309567E+134087");
+  mathtest(53,def,"4249198.78E-112433155","418673051.","418673051","-418673051","1.77902502E-112433140","1.01492054E-112433157","0","4.24919878E-112433149","");
+  mathtest(54,def,"-2960933.02","-207933.38","-3168866.40","-2752999.64","6.15676811E+11","14.2398158","14","-49865.70","-2.75680397E-1345624");
+  mathtest(55,def,"29317.7519E+945600035","1.43555750","2.93177519E+945600039","2.93177519E+945600039","4.20873186E+945600039","2.04225549E+945600039","","","2.93177519E+945600039");
+  mathtest(56,def,"-51.1693770","-638055.414","-638106.583","638004.245","32648898.0","0.0000801958198","0","-51.1693770","-3.48266075E-1090443");
+  mathtest(57,def,"-756343055.","-68.9248344E+217100975","-6.89248344E+217100976","6.89248344E+217100976","5.21308198E+217100985","1.09734475E-217100968","0","-756343055","-7.06265897E-63");
+  mathtest(58,def,"2538.80406E+694185197","-3386499.65","2.53880406E+694185200","2.53880406E+694185200","-8.59765906E+694185206","-7.49683839E+694185193","","","");
+  mathtest(59,def,"-54344.0672","-8086.45235","-62430.5196","-46257.6149","439450710","6.72038427","6","-5825.35310","3.62916861E-38289");
+  mathtest(60,def,"3.31600054","217481648","217481651","-217481645","721169262","1.5247266E-8","0","3.31600054","3.73134969E+113224119");
+  mathtest(61,def,"681832.671","320341.161E+629467560","3.20341161E+629467565","-3.20341161E+629467565","2.18419069E+629467571","2.12845789E-629467560","0","681832.671","3.16981139E+17");
+  mathtest(62,def,"832689481","348040024E-882122501","832689481","832689481","2.89809267E-882122484","2.3925107E+882122501","","","5.77363381E+26");
+  mathtest(63,def,"14.5512326E+257500811","60.9979577E-647314724","1.45512326E+257500812","1.45512326E+257500812","8.87595471E-389813911","2.38552784E+904815534","","","");
+  mathtest(64,def,"-901.278844","449461667.","449460766","-449462568","-4.05090292E+11","-0.00000200524074","0","-901.278844","");
+  mathtest(65,def,"-5.32627675","-738860216E-238273224","-5.32627675","-5.32627675","3.93537399E-238273215","7.20877459E+238273215","","","-0.00000822306838");
+  mathtest(66,def,"-505383463.","3.18756328","-505383460","-505383466","-1.61094177E+9","-158548527","-158548527","-0.23671144","-1.29081226E+26");
+  mathtest(67,def,"769241.44E-720927320","-145382631.","-145382631","145382631","-1.11834344E-720927306","-5.29115091E-720927323","0","7.6924144E-720927315","");
+  mathtest(68,def,"-6.45038910","56736.4411E+440937167","5.67364411E+440937171","-5.67364411E+440937171","-3.65972121E+440937172","-1.13690407E-440937171","0","-6.45038910","72030.3421");
+  mathtest(69,def,"58.4721075","-712186829","-712186771","712186887","-4.16430648E+10","-8.21022028E-8","0","58.4721075","");
+  mathtest(70,def,"8244.08357","245.302828E+652007959","2.45302828E+652007961","-2.45302828E+652007961","2.02229701E+652007965","3.36077804E-652007958","0","8244.08357","67964913.9");
+  mathtest(71,def,"45.5361397","-76579063.9","-76579018.4","76579109.4","-3.48711495E+9","-5.94629098E-7","0","45.5361397","3.98335374E-126995367");
+  mathtest(72,def,"594420.54E+685263039","-952420.179","5.94420540E+685263044","5.94420540E+685263044","-5.66138117E+685263050","-6.24115861E+685263038","","","");
+  mathtest(73,def,"-841310701.","9398110.4","-831912591","-850708811","-7.90673085E+15","-89.5191337","-89","-4878875.4","1.30001466E+83877722");
+  mathtest(74,def,"904392146E-140100276","168116093.","168116093","-168116093","1.52042874E-140100259","5.37956914E-140100276","0","9.04392146E-140100268","");
+  mathtest(75,def,"-907324792E+685539670","-15.6902171","-9.07324792E+685539678","-9.07324792E+685539678","1.42361230E+685539680","5.78274211E+685539677","","","");
+  mathtest(76,def,"987013606.","-26818.3572E+560907442","-2.68183572E+560907446","2.68183572E+560907446","-2.64700834E+560907455","-3.68036565E-560907438","0","987013606","1.0399934E-27");
+  mathtest(77,def,"-741317564","630.241530E-212782946","-741317564","-741317564","-4.67209116E-212782935","-1.1762436E+212782952","","","1.65968527E+53");
+  mathtest(78,def,"61867907.2","-139204670","-77336763","201072577","-8.61230161E+15","-0.444438446","0","61867907.2","");
+  mathtest(79,def,"-273.622743E+531282717","-4543.68684","-2.73622743E+531282719","-2.73622743E+531282719","1.24325606E+531282723","6.02204229E+531282715","","","");
+  mathtest(80,def,"-383588949.","-428640583.","-812229532","45051634","1.64421791E+17","0.89489648","0","-383588949","");
+  mathtest(81,def,"-56182.2686","32.7741649","-56149.4944","-56215.0428","-1841326.94","-1714.22426","-1714","-7.3499614","-5.45476402E+156");
+  mathtest(82,def,"-6366384.30","332014.980","-6034369.32","-6698399.28","-2.11373496E+12","-19.1749911","-19","-58099.680","-3.05392399E+2258994");
+  mathtest(83,def,"-1.27897702","-8213776.03E-686519123","-1.27897702","-1.27897702","1.05052308E-686519116","1.55711212E+686519116","","","0.139668371");
+  mathtest(84,def,"65.4059036","401162145E+884155506","4.01162145E+884155514","-4.01162145E+884155514","2.62383726E+884155516","1.63041066E-884155513","0","65.4059036","18300704.1");
+  mathtest(85,def,"-20630916.8","158987411.E-480500612","-20630916.8","-20630916.8","-3.28005605E-480500597","-1.29764468E+480500611","","","4.25634728E+14");
+  mathtest(86,def,"-4.72705853","-97626742.4","-97626747.1","97626737.7","461487325","4.84197097E-8","0","-4.72705853","2.92654449E-65858120");
+  mathtest(87,def,"8.43528169","-4573.45752","-4565.02224","4581.89280","-38578.4025","-0.00184439927","0","8.43528169","8.84248688E-4236");
+  mathtest(88,def,"1.91075189","-704247089.","-704247087","704247091","-1.34564146E+9","-2.71318394E-9","0","1.91075189","6.84547494E-198037309");
+  mathtest(89,def,"31997198E-551746308","326.892584","326.892584","-326.892584","1.04596467E-551746298","9.78829119E-551746304","0","3.1997198E-551746301","");
+  mathtest(90,def,"127589.213","84184304.","84311893.2","-84056714.8","1.07410091E+13","0.00151559385","0","127589.213","2.87917042E+429829394");
+  mathtest(91,def,"714494248","-7025063.59","707469185","721519312","-5.01936753E+15","-101.706446","-101","4962825.41","1.65018516E-62199908");
+  mathtest(92,def,"-52987680.2E+279533503","-42014114.8","-5.29876802E+279533510","-5.29876802E+279533510","2.22623048E+279533518","1.26118759E+279533503","","","");
+  mathtest(93,def,"-8795.0513","-225294.394E-884414238","-8795.05130","-8795.05130","1.98147575E-884414229","3.90380388E+884414236","","","1.2927759E-8");
+  mathtest(94,def,"83280.1394","161566354.","161649634","-161483074","1.34552685E+13","0.000515454718","0","83280.1394","5.30774809E+794993940");
+  mathtest(95,def,"112.877897","-9.96481666","102.913080","122.842714","-1124.80755","-11.3276441","-11","3.26491374","2.97790545E-21");
+  mathtest(96,def,"-572542.121E+847487397","433.843420","-5.72542121E+847487402","-5.72542121E+847487402","-2.48393632E+847487405","-1.3196976E+847487400","","","");
+  mathtest(97,def,"4709649.89","20949266.4","25658916.3","-16239616.5","9.86637102E+13","0.224812163","0","4709649.89","4.85293644E+139794213");
+  mathtest(98,def,"-9475.19322","-30885.2475E+584487341","-3.08852475E+584487345","3.08852475E+584487345","2.92643688E+584487349","3.06787026E-584487342","0","-9475.19322","-1.17553557E-12");
+  mathtest(99,def,"-213230447.","864.815822E+127783046","8.64815822E+127783048","-8.64815822E+127783048","-1.84405064E+127783057","-2.46561686E-127783041","0","-213230447","-9.11261361E+74");
+  mathtest(100,def,"-89.1168786E+403375873","6464.05744","-8.91168786E+403375874","-8.91168786E+403375874","-5.76056622E+403375878","-1.37865233E+403375871","","","");
+  mathtest(101,def,"61774.4958","-14000.7706","47773.7252","75775.2664","-864890545","-4.41222112","-4","5771.4134","7.59030407E-67077");
+  mathtest(102,def,"1.60731414","7.04330293E-427033419","1.60731414","1.60731414","1.13208004E-427033418","2.28204602E+427033418","","","27.7143921");
+  mathtest(103,def,"7955012.51","-230117662.","-222162650","238072675","-1.83058888E+15","-0.0345693261","0","7955012.51","");
+  mathtest(104,def,"4086661.08","1.77621994","4086662.86","4086659.30","7258808.90","2300762.98","2300762","1.73840572","1.67007988E+13");
+  mathtest(105,def,"-610.076931","-207.658306","-817.735237","-402.418625","126687.542","2.93788841","2","-194.760319","4.36518377E-580");
+  mathtest(106,def,"-98.6353697","-99253.3899E-716309653","-98.6353697","-98.6353697","9.78989481E-716309647","9.93773309E+716309649","","","1.14729007E-20");
+  mathtest(107,def,"-959923730","409.125542E-900295528","-959923730","-959923730","-3.92729316E-900295517","-2.3462816E+900295534","","","8.49076677E+35");
+  mathtest(108,def,"379965133","-8.15869657","379965125","379965141","-3.10002023E+9","-46571793.6","-46571793","5.19214999","2.30170697E-69");
+  mathtest(109,def,"833.646797","1389499.46E-443407251","833.646797","833.646797","1.15835177E-443407242","5.99961944E+443407247","","","833.646797");
+  mathtest(110,def,"2314933.4E-646489194","-7401538.17","-7401538.17","7401538.17","-1.71340679E-646489181","-3.12763826E-646489195","0","2.3149334E-646489188","");
+  mathtest(111,def,"808525347","-5959.74667E+58232168","-5.95974667E+58232171","5.95974667E+58232171","-4.81860624E+58232180","-1.35664382E-58232163","0","808525347","3.5796302E-54");
+  mathtest(112,def,"-17220490.6E+726428704","19.9855688","-1.72204906E+726428711","-1.72204906E+726428711","-3.44161300E+726428712","-8.61646259E+726428709","","","");
+  mathtest(113,def,"59015.9705","-72070405.4E+322957279","-7.20704054E+322957286","7.20704054E+322957286","-4.25330492E+322957291","-8.18865527E-322957283","0","59015.9705","4.01063488E-34");
+  mathtest(114,def,"16411470E+578192008","497470.005E-377473621","1.64114700E+578192015","1.64114700E+578192015","8.16421406E+200718399","3.29898684E+955665630","","","");
+  mathtest(115,def,"-107.353544E+609689808","-659.50136E-456711743","-1.07353544E+609689810","-1.07353544E+609689810","7.07998083E+152978069","","","","");
+  mathtest(116,def,"786.134163","-53.0292275E-664419768","786.134163","786.134163","-4.16880874E-664419764","-1.48245449E+664419769","","","3.33055532E-15");
+  mathtest(117,def,"23.5414714","5000786.91","5000810.45","-5000763.37","117725882","0.0000047075534","0","23.5414714","4.4895618E+6860247");
+  mathtest(118,def,"-69775.6113","561292120.","561222344","-561361896","-3.91645008E+13","-0.000124312473","0","-69775.6113","");
+  mathtest(119,def,"919043.871","-71606613.7","-70687569.8","72525657.6","-6.58096194E+13","-0.0128346227","0","919043.871","3.05862429E-427014317");
+  mathtest(120,def,"-27667.1915","-293455.107E-789181924","-27667.1915","-27667.1915","8.11907864E-789181915","9.42808315E+789181922","","","-4.72176938E-14");
+  mathtest(121,def,"-908603625.","-982.409273E+449441134","-9.82409273E+449441136","9.82409273E+449441136","8.92620627E+449441145","9.2487281E-449441129","0","-908603625","2.60768632E-90");
+  mathtest(122,def,"847.113351","5.71511268","852.828464","841.398238","4841.34825","148.223386","148","1.27667436","3.69529538E+17");
+  mathtest(123,def,"-992140475","3.82918218","-992140471","-992140479","-3.79908663E+9","-259099836","-259099836","-0.14787752","9.68930595E+35");
+  mathtest(124,def,"-12606437.5","268123145E+362798858","2.68123145E+362798866","-2.68123145E+362798866","-3.38007767E+362798873","-4.70173416E-362798860","0","-12606437.5","-2.00344362E+21");
+  mathtest(125,def,"3799470.64","-264.703992","3799205.94","3799735.34","-1.00573505E+9","-14353.6583","-14353","174.242824","2.3625466E-1744");
+  mathtest(126,def,"-8.11070247","-931284056.E-654288974","-8.11070247","-8.11070247","7.55336789E-654288965","8.70916067E+654288965","","","-6.58375662E-9");
+  mathtest(127,def,"-242660177.","-6.09832715E-943742415","-242660177","-242660177","1.47982115E-943742406","3.97912692E+943742422","","","4.89788901E-51");
+  mathtest(128,def,"76.1463803","-45.6758006E-636907996","76.1463803","76.1463803","-3.47804688E-636907993","-1.66710554E+636907996","","","3.90619287E-10");
+  mathtest(129,def,"761185.862","-70878470.9E+221214712","-7.08784709E+221214719","7.08784709E+221214719","-5.39516900E+221214725","-1.07393099E-221214714","0","761185.862","6.75406144E-42");
+  mathtest(130,def,"6203606.54","-195.92748E-833512061","6203606.54","6203606.54","-1.21545700E-833512052","-3.1662769E+833512065","","","2.59843292E-14");
+  mathtest(131,def,"-163274837.","95.0448550E+887876533","9.50448550E+887876534","-9.50448550E+887876534","-1.55184332E+887876543","-1.71787139E-887876527","0","-163274837","1.34645731E+82");
+  mathtest(132,def,"2.38638190","-807986179.","-807986177","807986181","-1.92816359E+9","-2.95349347E-9","0","2.38638190","1.19029305E-305208656");
+  mathtest(133,def,"-109022296E-811981158","7.19685680","7.19685680","-7.19685680","-7.84617852E-811981150","-1.51485988E-811981151","0","-1.09022296E-811981150","");
+  mathtest(134,def,"-559250.780E-273710421","-393780811.","-393780811","393780811","2.20222226E-273710407","1.42020831E-273710424","0","-5.59250780E-273710416","");
+  mathtest(135,def,"-88021.9966E+555334642","7599686.64E+818884053","7.59968664E+818884059","-7.59968664E+818884059","","-1.15823192E-263549413","0","-8.80219966E+555334646","");
+  mathtest(136,def,"194.317648E-197450009","-930.979064","-930.979064","930.979064","-1.80905662E-197450004","-2.08723972E-197450010","0","1.94317648E-197450007","");
+  mathtest(137,def,"9495479.65","7405697.96","16901177.6","2089781.69","7.03206543E+13","1.28218565","1","2089781.69","1.0135446E+51673383");
+  mathtest(138,def,"-1656.28925","-163050511E-682882380","-1656.28925","-1656.28925","2.70058809E-682882369","1.01581359E+682882375","","","3.64525265E-7");
+  mathtest(139,def,"95581.3784E+64262149","-99.2879365","9.55813784E+64262153","9.55813784E+64262153","-9.49007783E+64262155","-9.62668596E+64262151","","","");
+  mathtest(140,def,"643761.452","3.73446939","643765.186","643757.718","2404107.44","172383.647","172383","2.41514363","1.71751236E+23");
+  mathtest(141,def,"7960.49866E-129827423","3220.22850","3220.22850","-3220.22850","2.56346247E-129827416","2.47202913E-129827423","0","7.96049866E-129827420","");
+  mathtest(142,def,"-6356.64112E-707203818","1805054.98","1805054.98","-1805054.98","-1.14740867E-707203808","-3.52157756E-707203821","0","-6.35664112E-707203815","");
+  mathtest(143,def,"2.3904042","8476.52006","8478.91046","-8474.12966","20262.3092","0.000282003013","0","2.3904042","2.00251752E+3208");
+  mathtest(144,def,"-713298.658","-957.782729","-714256.441","-712340.875","683185135","744.739528","744","-708.307624","3.68122321E-5608");
+  mathtest(145,def,"607779233.E-820497365","-20.1188742E-857318323","6.07779233E-820497357","6.07779233E-820497357","","-3.02094057E+36820965","","","");
+  mathtest(146,def,"-205888251","-908.792922E+250680613","-9.08792922E+250680615","9.08792922E+250680615","1.87109785E+250680624","2.26551336E-250680608","0","-205888251","-1.5042358E-75");
+  mathtest(147,def,"51542399.1","-23212.2414","51519186.9","51565611.3","-1.19641461E+12","-2220.4835","-2220","11223.1920","1.71641348E-179015");
+  mathtest(148,def,"4.44287230","158923023","158923027","-158923019","706074697","2.79561275E-8","0","4.44287230","7.12573416E+102928693");
+  mathtest(149,def,"-79123682.6","-3.8571770","-79123686.5","-79123678.8","305194049","20513365.8","20513365","-2.9293950","2.55137345E-32");
+  mathtest(150,def,"-80.3324347E-569715030","883142.351","883142.351","-883142.351","-7.09449752E-569715023","-9.09620455E-569715035","0","-8.03324347E-569715029","");
+  mathtest(151,def,"13637.483","-52798.5631","-39161.0801","66436.0461","-720039507","-0.258292692","0","13637.483","1.47163791E-218310");
+  mathtest(152,def,"6.42934843E-276476458","84057440.0E-388039782","6.42934843E-276476458","6.42934843E-276476458","5.40434570E-664516232","7.64875593E+111563316","","","");
+  mathtest(153,def,"-5.64133087","-17401297.","-17401302.6","17401291.4","98166473.9","3.24190253E-7","0","-5.64133087","-1.25908916E-13075014");
+  mathtest(154,def,"95469.7057E+865733824","198.829749","9.54697057E+865733828","9.54697057E+865733828","1.89822176E+865733831","4.80158056E+865733826","","","");
+  mathtest(155,def,"-416466.209","-930153427","-930569893","929736961","3.87377472E+14","0.000447739262","0","-416466.209","");
+  mathtest(156,def,"-1541733.85","-1.99208708","-1541735.84","-1541731.86","3071268.08","773928.944","773928","-1.88034976","4.20708401E-13");
+  mathtest(157,def,"-39152691.8","-645131748.","-684284440","605979056","2.52586445E+16","0.0606894513","0","-39152691.8","");
+  mathtest(158,def,"113.939979","-58282550.4","-58282436.5","58282664.3","-6.64071257E+9","-0.0000019549587","0","113.939979","2.106557E-119868330");
+  mathtest(159,def,"-324971.736","-9517.15154","-334488.888","-315454.585","3.09280526E+9","34.1459033","34","-1388.58364","-5.82795263E-52457");
+  mathtest(160,def,"-76.9436744","-9548122.75E-273599728","-76.9436744","-76.9436744","7.34667648E-273599720","8.05851332E+273599722","","","1.37489895E-19");
+  mathtest(161,def,"-430393.282","-70.2551505","-430463.537","-430323.027","30237344.8","6126.14561","6126","-10.2300370","4.26006409E-395");
+  mathtest(162,def,"-3308051.90","-349433799.E+397813188","-3.49433799E+397813196","3.49433799E+397813196","1.15594514E+397813203","9.46689161E-397813191","0","-3308051.90","-2.76237768E-20");
+  mathtest(163,def,"23.1543212E-655822712","5848.20853","5848.20853","-5848.20853","1.35411299E-655822707","3.95921607E-655822715","0","2.31543212E-655822711","");
+  mathtest(164,def,"-174.261308E-82902077","-200096204.","-200096204","200096204","3.48690262E-82902067","8.70887626E-82902084","0","-1.74261308E-82902075","");
+  mathtest(165,def,"-50669105.2","9105789.01E+609889700","9.10578901E+609889706","-9.10578901E+609889706","-4.61382181E+609889714","-5.56449366E-609889700","0","-50669105.2","-2.20135008E+69");
+  mathtest(166,def,"424768856.","-971.71757","424767884","424769828","-4.12755361E+11","-437132.012","-437132","11.19076","2.72651473E-8387");
+  mathtest(167,def,"7181.2767","999117.918","1006299.19","-991936.641","7.17494223E+9","0.00718761677","0","7181.2767","3.09655124E+3852800");
+  mathtest(168,def,"8096417.07E-433694528","-68.4863363","-68.4863363","68.4863363","-5.54493942E-433694520","-1.18219451E-433694523","0","8.09641707E-433694522","");
+  mathtest(169,def,"1236287.5","-7119.97299E-176200498","1236287.50","1236287.50","-8.80233361E-176200489","-1.73636544E+176200500","","","2.26549784E-43");
+  mathtest(170,def,"-752995833E-654401067","-15.2736930E+803939983","-1.52736930E+803939984","1.52736930E+803939984","1.15010272E+149538926","","0","-7.52995833E-654401059","");
+  mathtest(171,def,"702992.459","-312.689474","702679.770","703305.148","-219818342","-2248.21274","-2248","66.521448","8.02493322E-1831");
+  mathtest(172,def,"-4414.38805","-17680.4630E-584364536","-4414.38805","-4414.38805","7.80484246E-584364529","2.49676044E+584364535","","","5.13167312E-8");
+  mathtest(173,def,"9.46350807","7826.65424","7836.11775","-7817.19073","74067.6056","0.00120913839","0","9.46350807","3.63271495E+7639");
+  mathtest(174,def,"2078153.7","-16934607.3E+233594439","-1.69346073E+233594446","1.69346073E+233594446","-3.51927168E+233594452","-1.2271638E-233594440","0","2078153.7","2.31549939E-13");
+  mathtest(175,def,"-9359.74629","7.07761788E+252457696","7.07761788E+252457696","-7.07761788E+252457696","-6.62447077E+252457700","-1.32244301E-252457693","0","-9359.74629","-6.29286677E+27");
+  mathtest(176,def,"66.2319284E+730468479","25.9391685E+221147044","6.62319284E+730468480","6.62319284E+730468480","1.71800115E+951615526","2.55335588E+509321435","","","");
+  mathtest(177,def,"317997088.E-90968742","-977426.461","-977426.461","977426.461","-3.10818768E-90968728","-3.2534119E-90968740","0","3.17997088E-90968734","");
+  mathtest(178,def,"227473386","-6759.61390","227466626","227480146","-1.53763226E+12","-33651.8312","-33651","5618.65110","1.40992627E-56493");
+  mathtest(179,def,"-392019.462","-245456.503","-637475.965","-146562.959","9.62237263E+10","1.59710359","1","-146562.959","-3.08656533E-1372917");
+  mathtest(180,def,"-3619556.28E+587673583","-3.45236972","-3.61955628E+587673589","-3.61955628E+587673589","1.24960465E+587673590","1.04842661E+587673589","","","");
+  mathtest(181,def,"-249.400704E-923930848","831102.919","831102.919","-831102.919","-2.07277653E-923930840","-3.00084019E-923930852","0","-2.49400704E-923930846","");
+  mathtest(182,def,"65234.2739E+154949914","-694581895","6.52342739E+154949918","6.52342739E+154949918","-4.53105456E+154949927","-9.39187652E+154949909","","","");
+  mathtest(183,def,"45.2316213","-88775083.4","-88775038.2","88775128.6","-4.01544095E+9","-5.09508069E-7","0","45.2316213","1.92314254E-146962015");
+  mathtest(184,def,"331100375.","442.343378","331100817","331099933","1.46460058E+11","748514.37","748514","163.759708","6.64011043E+3765");
+  mathtest(185,def,"81.8162765","5.61239515E+467372163","5.61239515E+467372163","-5.61239515E+467372163","4.59185273E+467372165","1.45777826E-467372162","0","81.8162765","2.99942677E+11");
+  mathtest(186,def,"-5738.13069E+789464078","33969715.0","-5.73813069E+789464081","-5.73813069E+789464081","-1.94922664E+789464089","-1.68919012E+789464074","","","");
+  mathtest(187,def,"-7413.03911","2.70630320E-254858264","-7413.03911","-7413.03911","-2.00619315E-254858260","-2.73917539E+254858267","","","-4.07369842E+11");
+  mathtest(188,def,"-417696.182","27400.6002","-390295.582","-445096.782","-1.14451261E+10","-15.2440523","-15","-6687.1790","-1.58020334E+154017");
+  mathtest(189,def,"68.8538735E+655647287","3198.17933E-132454826","6.88538735E+655647288","6.88538735E+655647288","2.20207035E+523192466","2.15290846E+788102111","","","");
+  mathtest(190,def,"-6817.04246","434420.439","427603.397","-441237.481","-2.96146258E+9","-0.0156922692","0","-6817.04246","5.94143518E+1665390");
+  mathtest(191,def,"8578.27511","647042.341E-490924334","8578.27511","8578.27511","5.55050721E-490924325","1.3257672E+490924332","","","3.98473846E+23");
+  mathtest(192,def,"4124.11615E+733109424","597385828E+375928745","4.12411615E+733109427","4.12411615E+733109427","","6.9036056E+357180673","","","");
+  mathtest(193,def,"102.714400","-919017.468","-918914.754","919120.182","-94396327.8","-0.000111765449","0","102.714400","4.04295689E-1848724");
+  mathtest(194,def,"-4614.33015E+996778733","-433.560812E+22860599","-4.61433015E+996778736","-4.61433015E+996778736","","1.06428672E+973918135","","","");
+  mathtest(195,def,"457455170.","3709230.48E+677010879","3.70923048E+677010885","-3.70923048E+677010885","1.69680666E+677010894","1.23328861E-677010877","0","457455170","4.37919376E+34");
+  mathtest(196,def,"-2522468.15","-48482043.5","-51004511.7","45959575.4","1.22294411E+14","0.0520289156","0","-2522468.15","1.42348178E-310373595");
+  mathtest(197,def,"-659811384","62777.6118","-659748606","-659874162","-4.14213829E+13","-10510.2976","-10510","-18683.9820","3.4393524E+553665");
+  mathtest(198,def,"4424.94176","-825848.20","-821423.258","830273.142","-3.65433019E+9","-0.00535805704","0","4424.94176","3.42152775E-3010966");
+  mathtest(199,def,"43.6441884","-6509.89663E-614169377","43.6441884","43.6441884","-2.84119155E-614169372","-6.70428286E+614169374","","","3.31524056E-12");
+  mathtest(200,def,"897.388381E-843864876","84195.1369","84195.1369","-84195.1369","7.55557376E-843864869","1.06584348E-843864878","0","8.97388381E-843864874","");
+  mathtest(201,def,"796199825","496.76834","796200322","796199328","3.95526865E+11","1602758.79","1602758","393.91828","6.42647264E+4423");
+  mathtest(202,def,"573583582","1598.69521","573585181","573581983","9.16985325E+11","358782.323","358782","517.16578","9.91156302E+14004");
+  mathtest(203,def,"-783144270.","6347.71496","-783137922","-783150618","-4.97117660E+12","-123374.202","-123374","-1284.52496","1.28110803E+56458");
+  mathtest(204,def,"26909234.7","52411.5081","26961646.2","26856823.2","1.41035357E+12","513.422255","513","22131.0447","9.75836528E+389415");
+  mathtest(205,def,"8.21915282","24859.7841E-843282959","8.21915282","8.21915282","2.04326365E-843282954","3.30620443E+843282955","","","67.5544731");
+  mathtest(206,def,"-688.387710","82783.5207E-831870858","-688.387710","-688.387710","-5.69871582E-831870851","-8.31551623E+831870855","","","5.04272012E+22");
+  mathtest(207,def,"-9792232.","-1749.01166","-9793981.01","-9790482.99","1.71267279E+10","5598.72311","5598","-1264.72732","-8.86985674E-12228");
+  mathtest(208,def,"-130.765600","8.67437427","-122.091226","-139.439974","-1134.30976","-15.0749317","-15","-0.64998595","-1.11799947E+19");
+  mathtest(209,def,"917.259102","-368640.426","-367723.167","369557.685","-338138786","-0.00248822169","0","917.259102","8.67104255E-1092094");
+  mathtest(210,def,"-4.9725631","-294563717.","-294563722","294563712","1.46473667E+9","1.6881112E-8","0","-4.9725631","-6.27962584E-205187284");
+  mathtest(211,def,"-60962887.2E-514249661","-243021.407","-243021.407","243021.407","1.48152866E-514249648","2.5085398E-514249659","0","-6.09628872E-514249654","");
+  mathtest(212,def,"-55389219.8","-3772200E+981866393","-3.77220000E+981866399","3.77220000E+981866399","2.08939215E+981866407","1.46835321E-981866392","0","-55389219.8","1.06242678E-31");
+  mathtest(213,def,"681.666010","626886700","626887382","-626886018","4.27327356E+11","0.00000108738311","0","681.666010","");
+  mathtest(214,def,"6.42652138","53465894.5","53465900.9","-53465888.1","343599714","1.2019852E-7","0","6.42652138","4.61155532E+43199157");
+  mathtest(215,def,"561546656","651408.476","562198064","560895248","3.65796251E+14","862.049968","862","32549.688","8.6052377E+5699419");
+  mathtest(216,def,"7845778.36E-79951139","9.45859047","9.45859047","-9.45859047","7.42100044E-79951132","8.29487056E-79951134","0","7.84577836E-79951133","1.12648216E-719560189");
+  mathtest(217,def,"54486.2112","10.7565078","54496.9677","54475.4547","586081.356","5065.41828","5065","4.4991930","1.25647168E+52");
+  mathtest(218,def,"16576482.5","-2217720.83","14358761.7","18794203.3","-3.67620105E+13","-7.47455779","-7","1052436.69","1.38259374E-16010820");
+  mathtest(219,def,"61.2793787E-392070111","6.22575651","6.22575651","-6.22575651","3.81510491E-392070109","9.84288072E-392070111","0","6.12793787E-392070110","");
+  mathtest(220,def,"5115136.39","-653674372.","-648559236","658789508","-3.34363357E+15","-0.00782520565","0","5115136.39","");
+  mathtest(221,def,"-7.84238366E-416477339","-37432758.9E+97369393","-3.74327589E+97369400","3.74327589E+97369400","2.93562057E-319107938","2.09505895E-513846739","0","-7.84238366E-416477339","");
+  mathtest(222,def,"-387781.3E+284108380","-218085.592","-3.87781300E+284108385","-3.87781300E+284108385","8.45695144E+284108390","1.77811517E+284108380","","","");
+  mathtest(223,def,"-5353.17736","3.39332346E+546685359","3.39332346E+546685359","-3.39332346E+546685359","-1.81650623E+546685363","-1.57756177E-546685356","0","-5353.17736","-1.53403369E+11");
+  mathtest(224,def,"-20837.2900E-168652772","-8236.78305E-712819173","-2.08372900E-168652768","-2.08372900E-168652768","1.71632237E-881471937","2.52978497E+544166401","","","");
+  mathtest(225,def,"-98573.8722E+829022366","309011.007","-9.85738722E+829022370","-9.85738722E+829022370","-3.04604115E+829022376","-3.18997932E+829022365","","","");
+  mathtest(226,def,"49730750.7","-5315.10636E-299586991","49730750.7","49730750.7","-2.64324229E-299586980","-9.35649211E+299586994","","","3.28756936E-39");
+  mathtest(227,def,"1539523.40","-962388.581","577134.82","2501911.98","-1.48161974E+12","-1.59969001","-1","577134.819","3.10144834E-5954673");
+  mathtest(228,def,"81596.2121","-37600.9653","43995.2468","119197.177","-3.06809634E+9","-2.17005631","-2","6394.2815","1.97878299E-184684");
+  mathtest(229,def,"590146199","-1425404.61","588720794","591571604","-8.41197113E+14","-414.020128","-414","28690.46","2.04650994E-12502170");
+  mathtest(230,def,"196.05543","505.936305","701.991735","-309.880875","99191.5598","0.387510104","0","196.05543","8.78437397E+1159");
+  mathtest(231,def,"77.8058449","-642.275274","-564.469429","720.081119","-49972.7704","-0.121140963","0","77.8058449","9.33582626E-1215");
+  mathtest(232,def,"1468.60684","10068.138","11536.7448","-8599.5312","14786136.3","0.145866777","0","1468.60684","2.54122484E+31884");
+  mathtest(233,def,"4.98774767E-387968632","4.41731439E-578812376","4.98774767E-387968632","4.98774767E-387968632","2.20324496E-966781007","1.12913577E+190843744","","","");
+  mathtest(234,def,"981.091059","-92238.9930","-91257.9020","93220.0841","-90494851.3","-0.0106364025","0","981.091059","5.29943342E-275953");
+  mathtest(235,def,"-3606.24992","8290224.70","8286618.45","-8293830.95","-2.98966222E+10","-0.000435000262","0","-3606.24992","-1.23747107E+29488793");
+  mathtest(236,def,"-8978571.35","92243.4796","-8886327.87","-9070814.83","-8.28214663E+11","-97.3355666","-97","-30953.8288","-4.95762813E+641384");
+  mathtest(237,def,"-61968.1992E+810060478","474294671.E+179263414","-6.19681992E+810060482","-6.19681992E+810060482","-2.93911867E+989323905","-1.30653374E+630797060","","","");
+  mathtest(238,def,"61298431.6E-754429041","-2584862.79","-2584862.79","2584862.79","-1.58448035E-754429027","-2.37143851E-754429040","0","6.12984316E-754429034","");
+  mathtest(239,def,"621039.064","-5351539.62","-4730500.56","5972578.68","-3.32351516E+12","-0.116048672","0","621039.064","2.41163312E-31002108");
+  mathtest(240,def,"-19.6007605","-57905696.","-57905715.6","57905676.4","1.13499568E+9","3.38494515E-7","0","-19.6007605","1.05663646E-74829963");
+  mathtest(241,def,"3626.13109E+687030346","189.896004","3.62613109E+687030349","3.62613109E+687030349","6.88587804E+687030351","1.90953523E+687030347","","","");
+  mathtest(242,def,"-249334.026","-7.54735834E-14137188","-249334.026","-249334.026","1.88181324E-14137182","3.30359332E+14137192","","","6.69495408E-44");
+  mathtest(243,def,"417613928.","-925213.216","416688715","418539141","-3.86381925E+14","-451.370474","-451","342767.584","8.38430085E-7976054");
+  mathtest(244,def,"23.8320309","-50074996.1","-50074972.3","50075019.9","-1.19338885E+9","-4.75926765E-7","0","23.8320309","5.81466387E-68961335");
+  mathtest(245,def,"49789677.7","-131827812E+156412534","-1.31827812E+156412542","1.31827812E+156412542","-6.56366427E+156412549","-3.77687204E-156412535","0","49789677.7","2.00844843E-8");
+  mathtest(246,def,"-8907163.61E-741867246","773651.288E-472033282","7.73651288E-472033277","-7.73651288E-472033277","","-1.15131504E-269833963","0","-8.90716361E-741867240","");
+  mathtest(247,def,"514021711.E+463536646","617441659.","5.14021711E+463536654","5.14021711E+463536654","3.17378418E+463536663","8.32502478E+463536645","","","");
+  mathtest(248,def,"998175750","2.39285478","998175752","998175748","2.38848961E+9","417148487","417148486","1.30513692","9.96354828E+17");
+  mathtest(249,def,"873575426.","647853.152E+497450781","6.47853152E+497450786","-6.47853152E+497450786","5.65948593E+497450795","1.3484158E-497450778","0","873575426","4.44429064E+53");
+  mathtest(250,def,"4352626.8","-130338048.E-744560911","4352626.80","4352626.80","-5.67312881E-744560897","-3.33949055E+744560909","","","2.29746322E-7");
+  mathtest(251,def,"437.286960","7.37560835","444.662568","429.911352","3225.25735","59.2882565","59","2.12606735","3.05749452E+18");
+  mathtest(252,def,"8498280.45E+220511522","588617612","8.49828045E+220511528","8.49828045E+220511528","5.00223754E+220511537","1.44376931E+220511520","","","");
+  mathtest(253,def,"-5320387.77","-7673237.46","-12993625.2","2352849.69","4.08245987E+13","0.693369363","0","-5320387.77","-1.30113745E-51609757");
+  mathtest(254,def,"587655375","-4.9748366","587655370","587655380","-2.92348947E+9","-118125563","-118125563","0.7919942","1.42687667E-44");
+  mathtest(255,def,"1266098.44","-2661.64904E-642601142","1266098.44","1266098.44","-3.36990970E-642601133","-4.75681963E+642601144","","","4.92717036E-19");
+  mathtest(256,def,"3.92737463E+482873483","-685.522747","3.92737463E+482873483","3.92737463E+482873483","-2.69230464E+482873486","-5.72902161E+482873480","","","");
+  mathtest(257,def,"22826494.1","986189474.","1.00901597E+9","-963362980","2.25112482E+16","0.0231461547","0","22826494.1","");
+  mathtest(258,def,"-647342.380","-498816386","-499463728","498169044","3.22904986E+14","0.00129775685","0","-647342.380","");
+  mathtest(259,def,"393092373.","-25.7226822","393092347","393092399","-1.01113902E+10","-15281935.6","-15281935","15.5939430","3.49252839E-224");
+  mathtest(260,def,"2.96253492","20.7444888","23.7070237","-17.7819539","61.4562725","0.142810698","0","2.96253492","8.03402246E+9");
+  mathtest(261,def,"53553.3750E+386955423","-732470876","5.35533750E+386955427","5.35533750E+386955427","-3.92262875E+386955436","-7.31133165E+386955418","","","");
+  mathtest(262,def,"-696451.406E-286535917","-73086090.8","-73086090.8","73086090.8","5.09009107E-286535904","9.52919219E-286535920","0","-6.96451406E-286535912","");
+  mathtest(263,def,"1551.29957","-580358622.E+117017265","-5.80358622E+117017273","5.80358622E+117017273","-9.00310081E+117017276","-2.67300168E-117017271","0","1551.29957","7.17506711E-20");
+  mathtest(264,def,"-205123006.E-213752799","-78638468.6","-78638468.6","78638468.6","1.61305591E-213752783","2.60843083E-213752799","0","-2.05123006E-213752791","");
+  mathtest(265,def,"77632.8073","-3378542.88E+677441319","-3.37854288E+677441325","3.37854288E+677441325","-2.62285768E+677441330","-2.29781921E-677441321","0","77632.8073","2.13729331E-15");
+  mathtest(266,def,"3068999.37","2.21006212","3069001.58","3068997.16","6782679.25","1388648.46","1388648","1.02718624","9.41875713E+12");
+  mathtest(267,def,"625524274.","55.2468624","625524329","625524219","3.45582535E+10","11322349.3","11322349","16.7522224","6.21482943E+483");
+  mathtest(268,def,"61269134.9","-845761303.","-784492168","907030438","-5.18190634E+16","-0.0724425848","0","61269134.9","");
+  mathtest(269,def,"-2840.12099","-2856.76731E-82743650","-2840.12099","-2840.12099","8.11356480E-82743644","9.94173022E+82743649","","","-4.36505254E-11");
+  mathtest(270,def,"8.9538781","-7.56603391","1.38784419","16.5199120","-67.7453453","-1.18343087","-1","1.38784419","2.42053061E-8");
+  mathtest(271,def,"-56233547.2","509752530","453518983","-565986077","-2.86651930E+16","-0.110315386","0","-56233547.2","");
+  mathtest(272,def,"-3167.47853E-854859497","-110852115","-110852115","110852115","3.51121694E-854859486","2.85739116E-854859502","0","-3.16747853E-854859494","");
+  mathtest(273,def,"-5652.52092","-632243244.","-632248897","632237592","3.57376816E+12","0.00000894042123","0","-5652.52092","");
+  mathtest(274,def,"-946.009928","820090.66E-589278015","-946.009928","-946.009928","-7.75813906E-589278007","-1.15354311E+589278012","","","6.41454053E+23");
+  mathtest(275,def,"-367.757758","-959.626016","-1327.38377","591.868258","352909.912","0.383230292","0","-367.757758","1.14982199E-2463");
+  mathtest(276,def,"809926721.E-744611554","-67.6560549","-67.6560549","67.6560549","-5.47964467E-744611544","-1.19712378E-744611547","0","8.09926721E-744611546","");
+  mathtest(277,def,"-1725.08555","75586.3031","73861.2176","-77311.3887","-130392839","-0.0228227269","0","-1725.08555","3.70540587E+244657");
+  mathtest(278,def,"2659.84191E+29314492","-74372.4551E+518196680","-7.43724551E+518196684","7.43724551E+518196684","-1.97818973E+547511180","-3.5763804E-488882190","0","2.65984191E+29314495","1.06171811E-205201468");
+  mathtest(279,def,"-91.1431113","12147507.0","12147415.9","-12147598.1","-1.10716158E+9","-0.00000750303015","0","-91.1431113","-1.52417006E+23805759");
+  mathtest(280,def,"-1136778.91E+697783878","-801552569.","-1.13677891E+697783884","-1.13677891E+697783884","9.11188056E+697783892","1.41822128E+697783875","","","");
+  mathtest(281,def,"73123773.0E+433334149","63.3548930","7.31237730E+433334156","7.31237730E+433334156","4.63274881E+433334158","1.15419298E+433334155","","","");
+  mathtest(282,def,"-9765484.8","7979.90802E-234029715","-9765484.80","-9765484.80","-7.79276705E-234029705","-1.22375907E+234029718","","","8.27085614E+55");
+  mathtest(283,def,"-695010288","-8.26582820","-695010296","-695010280","5.74483564E+9","84082353.4","84082353","-3.45024540","1.83683495E-71");
+  mathtest(284,def,"23975643.3E-155955264","-505547.692E+137258948","-5.05547692E+137258953","5.05547692E+137258953","-1.21208311E-18696303","-4.7425087E-293214211","0","2.39756433E-155955257","1.26225952E+779776283");
+  mathtest(285,def,"2862.95921","-32601248.6E-605861333","2862.95921","2862.95921","-9.33360449E-605861323","-8.78174712E+605861328","","","4.26142175E-11");
+  mathtest(286,def,"-13.133518E+246090516","-8.71269925E-945092108","-1.31335180E+246090517","-1.31335180E+246090517","1.14428392E-699001590","","","","");
+  mathtest(287,def,"-34671.2232","817710.762","783039.539","-852381.985","-2.83510323E+10","-0.0424003508","0","-34671.2232","-5.30788828E+3712382");
+  mathtest(288,def,"-22464769","62.4366060","-22464706.6","-22464831.4","-1.40262393E+9","-359801.252","-359801","-15.7245940","6.21042536E+455");
+  mathtest(289,def,"-9458.60887E-563051963","5676056.01","5676056.01","-5676056.01","-5.36875937E-563051953","-1.66640513E-563051966","0","-9.45860887E-563051960","");
+  mathtest(290,def,"-591.924123E-95331874","-134.596188","-134.596188","134.596188","7.96707305E-95331870","4.39777777E-95331874","0","-5.91924123E-95331872","");
+  mathtest(291,def,"-182566085.E+68870646","-960345993.","-1.82566085E+68870654","-1.82566085E+68870654","1.75326608E+68870663","1.9010449E+68870645","","","");
+  mathtest(292,def,"8232.54893","-99822004E+891979845","-9.98220040E+891979852","9.98220040E+891979852","-8.21789532E+891979856","-8.24722867E-891979850","0","8232.54893","6.99289156E-40");
+  mathtest(293,def,"-4336.94317","-819373.601E+563233430","-8.19373601E+563233435","8.19373601E+563233435","3.55357674E+563233439","5.29299841E-563233433","0","-4336.94317","7.98969405E-30");
+  mathtest(294,def,"-2.09044362E-876527908","-6515463.33","-6515463.33","6515463.33","1.36202087E-876527901","3.20843433E-876527915","0","-2.09044362E-876527908","");
+  mathtest(295,def,"-194343.344","1.95929977","-194341.385","-194345.303","-380776.869","-99190.2041","-99190","-0.39981370","3.77693354E+10");
+  mathtest(296,def,"-326002.927","4215.99030","-321786.937","-330218.917","-1.37442518E+9","-77.3253503","-77","-1371.67390","5.51875821E+23243");
+  mathtest(297,def,"-12037.8590E+876429044","314.81827","-1.20378590E+876429048","-1.20378590E+876429048","-3.78973794E+876429050","-3.82374854E+876429045","","","");
+  mathtest(298,def,"21036045.4E-162804809","-91.7149219","-91.7149219","91.7149219","-1.92931926E-162804800","-2.2936339E-162804804","0","2.10360454E-162804802","");
+  mathtest(299,def,"-947019.534","9916.29280","-937103.241","-956935.827","-9.39092299E+9","-95.5013686","-95","-4971.71800","3.76029022E+59261");
+  mathtest(300,def,"-5985.84136","-12.4090184E-12364204","-5985.84136","-5985.84136","7.42784156E-12364200","4.82378313E+12364206","","","-0.000167060893");
+  mathtest(301,def,"-85344379.4","-6783.08669E+218840215","-6.78308669E+218840218","6.78308669E+218840218","5.78898324E+218840226","1.25819385E-218840211","0","-85344379.4","-3.03232347E-56");
+  mathtest(302,def,"-94.1947070E-938257103","15003.240","15003.2400","-15003.2400","-1.41322580E-938257097","-6.27829102E-938257106","0","-9.41947070E-938257102","");
+  mathtest(303,def,"-4846233.6","-8289769.76","-13136003.4","3443536.16","4.01741607E+13","0.584604125","0","-4846233.6","4.25077524E-55420465");
+  mathtest(304,def,"67.9147198","-108373645.E+291715415","-1.08373645E+291715423","1.08373645E+291715423","-7.36016573E+291715424","-6.26671916E-291715422","0","67.9147198","0.0147243485");
+  mathtest(305,def,"1958.77994","5.57285137E+690137826","5.57285137E+690137826","-5.57285137E+690137826","1.09159895E+690137830","3.51486126E-690137824","0","1958.77994","5.64824968E+19");
+  mathtest(306,def,"22780314.3","8805279.83","31585594.1","13975034.5","2.00587042E+14","2.58711986","2","5169754.64","2.39132169E+64785373");
+  mathtest(307,def,"596745.184","197602423.","198199168","-197005678","1.17918294E+14","0.00301992848","0","596745.184","");
+  mathtest(308,def,"171.340497","-480349.924","-480178.584","480521.264","-82303394.7","-0.000356699332","0","171.340497","2.17914102E-1073035");
+  mathtest(309,def,"824.65555","-379287.530","-378462.875","380112.186","-312781567","-0.00217422268","0","824.65555","6.35829256E-1106108");
+  mathtest(310,def,"19.3164031","-9207644.24E+988115069","-9.20764424E+988115075","9.20764424E+988115075","-1.77858568E+988115077","-2.09786592E-988115075","0","19.3164031","2.67093711E-12");
+  mathtest(311,def,"-3123.77646E+177814265","973284435.E+383256112","9.73284435E+383256120","-9.73284435E+383256120","-3.04032301E+561070389","-3.20952062E-205441853","0","-3.12377646E+177814268","");
+  mathtest(312,def,"-850.123915E+662955309","6774849.81E-846576865","-8.50123915E+662955311","-8.50123915E+662955311","-5.75946184E-183621547","","","","");
+  mathtest(313,def,"-23349.7724","2921.35355","-20428.4189","-26271.1260","-68212940.5","-7.99279238","-7","-2900.29755","-5.6705546E+12759");
+  mathtest(314,def,"18886653.3","568707476.","587594129","-549820823","1.07409809E+16","0.0332097855","0","18886653.3","");
+  mathtest(315,def,"-90552818.0","-542.03563E-986606878","-90552818.0","-90552818.0","4.90828538E-986606868","1.67060638E+986606883","","","-1.64244241E-40");
+  mathtest(316,def,"41501126.1E+791838765","-69.6651675E+204268348","4.15011261E+791838772","4.15011261E+791838772","-2.89118290E+996107122","-5.95722763E+587570422","","","");
+  mathtest(317,def,"76783193.3E-271488154","3765.01829E-520346003","7.67831933E-271488147","7.67831933E-271488147","2.89090127E-791834146","2.03938434E+248857853","","","");
+  mathtest(318,def,"4192.9928","987822007E-146560989","4192.99280","4192.99280","4.14193056E-146560977","4.24468454E+146560983","","","1.67973653E+36");
+  mathtest(319,def,"-891845.629","48277955.","47386109.4","-49169800.6","-4.30564831E+13","-0.0184731443","0","-891845.629","-6.32964147E+287267817");
+  mathtest(320,def,"334.901176","-7609296.55E+447340228","-7.60929655E+447340234","7.60929655E+447340234","-2.54836236E+447340237","-4.40121073E-447340233","0","334.901176","6.31926575E-21");
+  mathtest(321,def,"4.49868636","-341880896E-447251873","4.49868636","4.49868636","-1.53801492E-447251864","-1.31586363E+447251865","","","0.010983553");
+  mathtest(322,def,"807615.58","-314286480","-313478865","315094096","-2.53822658E+14","-0.00256967968","0","807615.58","");
+  mathtest(323,def,"-37.7457954","53277.8129E-859225538","-37.7457954","-37.7457954","-2.01101343E-859225532","-7.08471188E+859225534","","","-76620134.1");
+  mathtest(324,def,"-28671081.","98.8819623","-28670982.1","-28671179.9","-2.83505275E+9","-289952.589","-289952","-58.2671904","-1.93625566E+738");
+  mathtest(325,def,"-89752.2106E-469496896","99.9879961","99.9879961","-99.9879961","-8.97414368E-469496890","-8.97629857E-469496894","0","-8.97522106E-469496892","");
+  mathtest(326,def,"-497983567E-13538052","39.4578742","39.4578742","-39.4578742","-1.96493729E-13538042","-1.26206385E-13538045","0","-4.97983567E-13538044","-1.55376543E-527983689");
+  mathtest(327,def,"845739221E-654202565","-33313.1551","-33313.1551","33313.1551","-2.81742418E-654202552","-2.53875449E-654202561","0","8.45739221E-654202557","");
+  mathtest(328,def,"742.332067E+537827843","-4532.70023E-855387414","7.42332067E+537827845","7.42332067E+537827845","-3.36476873E-317559565","","","","");
+  mathtest(329,def,"-893.48654","670389960","670389067","-670390853","-5.98984406E+11","-0.00000133278628","0","-893.48654","");
+  mathtest(330,def,"1.37697162","-915.737474E-351578724","1.37697162","1.37697162","-1.26094451E-351578721","-1.50367508E+351578721","","","0.0561920784");
+  mathtest(331,def,"-65.2839808E+550288403","-121389.306","-6.52839808E+550288404","-6.52839808E+550288404","7.92477712E+550288409","5.37806689E+550288399","","","");
+  mathtest(332,def,"-30346603.E+346067390","792661.544","-3.03466030E+346067397","-3.03466030E+346067397","-2.40545852E+346067403","-3.82844396E+346067391","","","");
+  mathtest(333,def,"-61170.7065","-453731131.","-453792302","453669960","2.77550538E+13","0.000134817081","0","-61170.7065","");
+  mathtest(334,def,"6569.51133","13.8706351E+399434914","1.38706351E+399434915","-1.38706351E+399434915","9.11232944E+399434918","4.73627291E-399434912","0","6569.51133","6569.51133");
+  mathtest(335,def,"300703925.","-3156736.8","297547188","303860662","-9.49243146E+14","-95.2578387","-95","813929.0","4.18609114E-26763256");
+  mathtest(336,def,"192138216E+353011592","-473.080633","1.92138216E+353011600","1.92138216E+353011600","-9.08968688E+353011602","-4.06142637E+353011597","","","");
+  mathtest(337,def,"8607.64794","-34740.3367","-26132.6888","43347.9846","-299032588","-0.247770999","0","8607.64794","1.29604519E-136698");
+  mathtest(338,def,"-67913.8241","-93815.4229","-161729.247","25901.5988","6.37136413E+9","0.723908948","0","-67913.8241","-6.96355203E-453311");
+  mathtest(339,def,"34.5559455","-998799398.","-998799364","998799433","-3.45144576E+10","-3.45974833E-8","0","34.5559455","");
+  mathtest(340,def,"387995.328","990199543.E-124623607","387995.328","387995.328","3.84192796E-124623593","3.91835495E+124623603","","","7.73152138E+55");
+  mathtest(341,def,"-471.09166E-83521919","-441222368","-441222368","441222368","2.07856178E-83521908","1.06769669E-83521925","0","-4.7109166E-83521917","");
+  mathtest(342,def,"-97834.3858","70779789.8E+502166065","7.07797898E+502166072","-7.07797898E+502166072","-6.92469726E+502166077","-1.38223617E-502166068","0","-97834.3858","-8.57907886E+34");
+  mathtest(343,def,"7732331.06","-952719.482E+115325505","-9.52719482E+115325510","9.52719482E+115325510","-7.36674244E+115325517","-8.11606271E-115325505","0","7732331.06","1.30886724E-69");
+  mathtest(344,def,"23.2745547","2.23194245E-221062592","23.2745547","23.2745547","5.19474666E-221062591","1.04279368E+221062593","","","541.704896");
+  mathtest(345,def,"671.083363E-218324205","-787150031","-787150031","787150031","-5.28243290E-218324194","-8.52548227E-218324212","0","6.71083363E-218324203","");
+  mathtest(346,def,"365167.80","-80263.6516","284904.148","445431.452","-2.93097011E+10","-4.54960362","-4","44113.1936","1.27052227E-446468");
+  mathtest(347,def,"-1.43297604E-65129780","56.598733E-135581942","-1.43297604E-65129780","-1.43297604E-65129780","-8.11046283E-200711721","-2.53181646E+70452160","","","8.65831881E-390778680");
+  mathtest(348,def,"416998859.","260.220323E-349285593","416998859","416998859","1.08511578E-349285582","1.60248383E+349285599","","","7.25111178E+25");
+  mathtest(349,def,"7267.17611E+862630607","4021.56861","7.26717611E+862630610","7.26717611E+862630610","2.92254473E+862630614","1.80705014E+862630607","","","");
+  mathtest(350,def,"12.2142434E+593908740","5.27236571E-396050748","1.22142434E+593908741","1.22142434E+593908741","6.43979581E+197857993","2.3166533E+989959488","","","");
+  mathtest(351,def,"-28.591932","-1.79153238E-817064576","-28.5919320","-28.5919320","5.12233720E-817064575","1.59594838E+817064577","","","0.00122324372");
+  mathtest(352,def,"590.849666","753424.306E+277232744","7.53424306E+277232749","-7.53424306E+277232749","4.45160500E+277232752","7.84219014E-277232748","0","590.849666","1.48530607E+22");
+  mathtest(353,def,"1.7270628","-1325026.67","-1325024.94","1325028.40","-2288404.27","-0.00000130341739","0","1.7270628","2.09260036E-314440");
+  mathtest(354,def,"33402118.","-5534.83745","33396583.2","33407652.8","-1.84875294E+11","-6034.8869","-6034","4908.82670","8.14473913E-41645");
+  mathtest(355,def,"-439842.506","-775110.807","-1214953.31","335268.301","3.40926680E+11","0.567457584","0","-439842.506","-1.84678472E-4374182");
+  mathtest(356,def,"-248664.779","-440890.44E+666433944","-4.40890440E+666433949","4.40890440E+666433949","1.09633924E+666433955","5.64005831E-666433945","0","-248664.779","2.61542877E-22");
+  mathtest(357,def,"-14161.9142","8306.49493","-5855.4193","-22468.4091","-117635869","-1.70492059","-1","-5855.41927","1.65573372E+34479");
+  mathtest(358,def,"-6417227.13","16679.8842","-6400547.25","-6433907.01","-1.07038605E+11","-384.728518","-384","-12151.5972","3.58767978E+113546");
+  mathtest(359,def,"514825024.","-25.0446345E-103809457","514825024","514825024","-1.28936046E-103809447","-2.05563002E+103809464","","","7.32860062E-27");
+  mathtest(360,def,"525948196","219450390","745398586","306497806","1.15419537E+17","2.39666102","2","87047416","");
+  mathtest(361,def,"-638509.181","45580189.0E+269212559","4.55801890E+269212566","-4.55801890E+269212566","-2.91033691E+269212572","-1.40084803E-269212561","0","-638509.181","-1.06129405E+29");
+  mathtest(362,def,"330590422","74.359928E+535377965","7.43599280E+535377966","-7.43599280E+535377966","2.45826800E+535377975","4.44581418E-535377959","0","330590422","4.31550742E+59");
+  mathtest(363,def,"-3.48593871E-940579904","-20265.9640E-322988987","-2.02659640E-322988983","2.02659640E-322988983","","1.72009519E-617590921","0","-3.48593871E-940579904","");
+  mathtest(364,def,"-328103480.","-721.949371E-923938665","-328103480","-328103480","2.36874101E-923938654","4.54468822E+923938670","","","-2.4430038E-60");
+  mathtest(365,def,"-1857.01448","19081578.1","19079721.1","-19083435.1","-3.54347668E+10","-0.0000973197537","0","-1857.01448","8.44397087E+62374153");
+  mathtest(366,def,"347.28720E+145930771","-62821.9906E-676564106","3.47287200E+145930773","3.47287200E+145930773","-2.18172732E-530633328","-5.52811518E+822494874","","","5.69990135E-875584642");
+  mathtest(367,def,"-643.211399E+441807003","-50733419.2","-6.43211399E+441807005","-6.43211399E+441807005","3.26323135E+441807013","1.26782584E+441806998","","","");
+  mathtest(368,def,"-53991661.4E-843339554","20718.7346","20718.7346","-20718.7346","-1.11863890E-843339542","-2.60593431E-843339551","0","-5.39916614E-843339547","");
+  mathtest(369,def,"-900181424","-105763982.","-1.00594541E+9","-794417442","9.52067719E+16","8.51122856","8","-54069568","1.32627061E-947045602");
+  mathtest(370,def,"94218.7462E+563233951","19262.6382E+765263890","1.92626382E+765263894","-1.92626382E+765263894","","4.89126906E-202029939","0","9.42187462E+563233955","");
+  mathtest(371,def,"28549.271E+921331828","-2150590.40","2.85492710E+921331832","2.85492710E+921331832","-6.13977881E+921331838","-1.32750853E+921331826","","","");
+  mathtest(372,def,"810.7080E+779625763","5957.94044","8.10708000E+779625765","8.10708000E+779625765","4.83014998E+779625769","1.36071854E+779625762","","","");
+  mathtest(373,def,"-23.7357549E+77116908","351.100649E+864348022","3.51100649E+864348024","-3.51100649E+864348024","-8.33363895E+941464933","-6.7603848E-787231116","0","-2.37357549E+77116909","3.17403853E+308467637");
+  mathtest(374,def,"40216102.2E+292724544","661.025962","4.02161022E+292724551","4.02161022E+292724551","2.65838876E+292724554","6.08389148E+292724548","","","");
+  mathtest(375,def,"22785024.3E+783719168","399.505989E+137478666","2.27850243E+783719175","2.27850243E+783719175","9.10275367E+921197843","5.70329981E+646240506","","","");
+  mathtest(376,def,"515.591819E+821371364","-692137914.E-149498690","5.15591819E+821371366","5.15591819E+821371366","-3.56860646E+671872685","-7.44926421E+970870047","","","");
+  mathtest(377,def,"-536883072E+477911251","624996.301","-5.36883072E+477911259","-5.36883072E+477911259","-3.35549934E+477911265","-8.59017999E+477911253","","","");
+  mathtest(378,def,"-399492.914E-334369192","5202119.87E+442442258","5.20211987E+442442264","-5.20211987E+442442264","-2.07821003E+108073078","-7.67942539E-776811452","0","-3.99492914E-334369187","");
+  mathtest(379,def,"762.071184","9851631.37","9852393.44","-9850869.30","7.50764438E+9","0.0000773548213","0","762.071184","4.02198436E+28392356");
+  mathtest(380,def,"5626.12471","72989818.3","72995444.4","-72984192.2","4.10649820E+11","0.0000770809524","0","5626.12471","1.79814757E+273727098");
+  mathtest(381,def,"-47207260.1","-2073.3152","-47209333.4","-47205186.8","9.78755299E+10","22768.9741","22768","-2019.6264","-6.02238319E-15909");
+  mathtest(382,def,"207.740860","-51.0390090","156.701851","258.779869","-10602.8876","-4.07023694","-4","3.5848240","6.40297515E-119");
+  mathtest(383,def,"-572.812464E-745934021","-182805872.E+604508681","-1.82805872E+604508689","1.82805872E+604508689","1.04713482E-141425329","","0","-5.72812464E-745934019","");
+  mathtest(384,def,"-6418504E+3531407","8459416.1","-6.41850400E+3531413","-6.41850400E+3531413","-5.42967961E+3531420","-7.58740784E+3531406","","","");
+  mathtest(385,def,"280689.531","-128212543","-127931854","128493233","-3.59879186E+13","-0.00218925173","0","280689.531","1.42173809E-698530938");
+  mathtest(386,def,"15.803551E-783422793","239108038E-489186308","2.39108038E-489186300","-2.39108038E-489186300","","6.60937672E-294236493","0","1.5803551E-783422792","");
+  mathtest(387,def,"26.515922","-9418242.96E-105481628","26.5159220","26.5159220","-2.49733396E-105481620","-2.81537885E+105481622","","","1.54326108E-13");
+  mathtest(388,def,"-88.1094557","-54029934.1","-54030022.2","54029846.0","4.76054809E+9","0.0000016307526","0","-88.1094557","5.05289826E-105089439");
+  mathtest(389,def,"6770.68602E-498420397","-6.11248908E-729616908","6.77068602E-498420394","6.77068602E-498420394","","-1.10768067E+231196514","","","");
+  mathtest(390,def,"-892973818.E-781904441","555201299.","555201299","-555201299","-4.95780224E-781904424","-1.60837847E-781904441","0","-8.92973818E-781904433","");
+  mathtest(391,def,"670175802E+135430680","27355195.4","6.70175802E+135430688","6.70175802E+135430688","1.83327900E+135430696","2.44990318E+135430681","","","");
+  mathtest(392,def,"-440950.26","205.477469E-677345561","-440950.260","-440950.260","-9.06053434E-677345554","-2.14597864E+677345564","","","1.94437132E+11");
+  mathtest(393,def,"-8.2335779","573665010E+742722075","5.73665010E+742722083","-5.73665010E+742722083","-4.72331555E+742722084","-1.43525886E-742722083","0","-8.2335779","311552.753");
+  mathtest(394,def,"452943.863","7022.23629","459966.099","445921.627","3.18067883E+9","64.5013703","64","3520.74044","5.54158976E+39716");
+  mathtest(395,def,"62874.1079","-52719654.1","-52656780.0","52782528.2","-3.31470122E+12","-0.0011926123","0","62874.1079","1.18819936E-252973775");
+  mathtest(396,def,"-7428.41741E+609772037","-46024819.3","-7.42841741E+609772040","-7.42841741E+609772040","3.41891569E+609772048","1.61400251E+609772033","","","");
+  mathtest(397,def,"2.27959297","41937.019","41939.2986","-41934.7394","95599.3337","0.0000543575348","0","2.27959297","2.89712423E+15007");
+  mathtest(398,def,"508692408E-671967782","8491989.20","8491989.20","-8491989.20","4.31981043E-671967767","5.99026207E-671967781","0","5.08692408E-671967774","");
+  mathtest(399,def,"940.533705E-379310421","-4.01176961E+464620037","-4.01176961E+464620037","4.01176961E+464620037","-3.77320453E+85309619","-2.34443599E-843930456","0","9.40533705E-379310419","");
+  mathtest(400,def,"97.0649652","-92.4485649E-151989098","97.0649652","97.0649652","-8.97351673E-151989095","-1.0499348E+151989098","","","1.30748728E-18");
+  mathtest(401,def,"297544.536E+360279473","8.80275007","2.97544536E+360279478","2.97544536E+360279478","2.61921019E+360279479","3.38013159E+360279477","","","");
+  mathtest(402,def,"-28861028.","82818.820E+138368758","8.28188200E+138368762","-8.28188200E+138368762","-2.39023628E+138368770","-3.48483932E-138368756","0","-28861028","4.81387013E+59");
+  mathtest(403,def,"36.2496238E+68828039","49243.00","3.62496238E+68828040","3.62496238E+68828040","1.78504022E+68828045","7.36137599E+68828035","","","");
+  mathtest(404,def,"22.447828E-476014683","-56067.5520","-56067.5520","56067.5520","-1.25859476E-476014677","-4.00371109E-476014687","0","2.2447828E-476014682","");
+  mathtest(405,def,"282688.791E+75011952","5.99789051","2.82688791E+75011957","2.82688791E+75011957","1.69553642E+75011958","4.7131369E+75011956","","","5.10330507E+450071744");
+  mathtest(406,def,"-981.860310E-737387002","-994046289","-994046289","994046289","9.76014597E-737386991","9.87741035E-737387009","0","-9.81860310E-737387000","");
+  mathtest(407,def,"-702.91210","-6444903.55","-6445606.46","6444200.64","4.53020069E+9","0.000109064797","0","-702.91210","1.70866703E-18348004");
+  mathtest(408,def,"972456720E-17536823","16371.2590","16371.2590","-16371.2590","1.59203408E-17536810","5.94002404E-17536819","0","9.72456720E-17536815","");
+  mathtest(409,def,"71471.2045","-74303278.4","-74231807.2","74374749.6","-5.31054481E+12","-0.00096188494","0","71471.2045","2.14535374E-360677853");
+  mathtest(410,def,"643.103951E+439708441","788251925.","6.43103951E+439708443","6.43103951E+439708443","5.06927927E+439708452","8.15860933E+439708434","","","");
+  mathtest(411,def,"4.30838663","-7.43110827","-3.12272164","11.7394949","-32.0160875","-0.579777131","0","4.30838663","0.0000362908645");
+  mathtest(412,def,"823.678025","-513.581840E-324453141","823.678025","823.678025","-4.23026076E-324453136","-1.60379118E+324453141","","","2.63762228E-15");
+  mathtest(413,def,"4461.81162","3.22081680","4465.03244","4458.59080","14370.6778","1385.30438","1385","0.98035200","8.8824688E+10");
+  mathtest(414,def,"-4458527.10","-99072605","-103531132","94614077.9","4.41717894E+14","0.0450026231","0","-4458527.10","-6.23928099E-658752715");
+  mathtest(415,def,"-577964618","487424368.","-90540250","-1.06538899E+9","-2.81714039E+17","-1.18575241","-1","-90540250","");
+  mathtest(416,def,"-867.036184","-57.1768608","-924.213045","-809.859323","49574.4072","15.1641096","15","-9.3832720","-3.40312837E-168");
+  mathtest(417,def,"771871921E-330504770","5.34285236","5.34285236","-5.34285236","4.12399771E-330504761","1.44468136E-330504762","0","7.71871921E-330504762","");
+  mathtest(418,def,"-338683.062E-728777518","166441931","166441931","-166441931","-5.63710628E-728777505","-2.03484218E-728777521","0","-3.38683062E-728777513","");
+  mathtest(419,def,"-512568743","-416376887.E-965945295","-512568743","-512568743","2.13421778E-965945278","1.23102112E+965945295","","","1.44874358E-35");
+  mathtest(420,def,"7447181.99","5318438.52","12765620.5","2128743.47","3.96073796E+13","1.40025723","1","2128743.47","1.21634782E+36548270");
+  mathtest(421,def,"54789.8207","93165435.2","93220225.0","-93110645.4","5.10451749E+12","0.000588091716","0","54789.8207","3.80769825E+441483035");
+  mathtest(422,def,"41488.5960","146.797094","41635.3931","41341.7989","6090405.33","282.625459","282","91.815492","6.84738153E+678");
+  mathtest(423,def,"785741.663E+56754529","-461.531732","7.85741663E+56754534","7.85741663E+56754534","-3.62644711E+56754537","-1.70246509E+56754532","","","");
+  mathtest(424,def,"-4.95436786","-3132.4233","-3137.37767","3127.46893","15519.1773","0.0015816406","0","-4.95436786","1.98062422E-2177");
+  mathtest(425,def,"77321.8478E+404626874","82.4797688","7.73218478E+404626878","7.73218478E+404626878","6.37748813E+404626880","9.3746441E+404626876","","","");
+  mathtest(426,def,"-7.99307725","-29153.7273","-29161.7204","29145.7342","233027.994","0.000274169994","0","-7.99307725","1.88688028E-26318");
+  mathtest(427,def,"-61.6337401E+474999517","5254.87092","-6.16337401E+474999518","-6.16337401E+474999518","-3.23877349E+474999522","-1.1728878E+474999515","","","");
+  mathtest(428,def,"-16.4043088","35.0064812","18.6021724","-51.4107900","-574.257128","-0.468607762","0","-16.4043088","-3.33831843E+42");
+  mathtest(429,def,"-8.41156520","-56508958.9","-56508967.3","56508950.5","475328792","1.48853657E-7","0","-8.41156520","-8.86365458E-52263827");
+  mathtest(430,def,"-360165.79E+503559835","-196688.515","-3.60165790E+503559840","-3.60165790E+503559840","7.08404744E+503559845","1.83114805E+503559835","","","");
+  mathtest(431,def,"-653236480.E+565648495","-930.445274","-6.53236480E+565648503","-6.53236480E+565648503","6.07800796E+565648506","7.02068674E+565648500","","","");
+  mathtest(432,def,"-3.73342903","855.029289","851.295860","-858.762718","-3192.19117","-0.00436643408","0","-3.73342903","-1.41988961E+489");
+  mathtest(433,def,"-5.14890532E+562048011","10847127.8E-390918910","-5.14890532E+562048011","-5.14890532E+562048011","-5.58508340E+171129108","-4.74679142E+952966914","","","-5.14890532E+562048011");
+  mathtest(434,def,"653311907","-810.036965E+744537823","-8.10036965E+744537825","8.10036965E+744537825","-5.29206794E+744537834","-8.06521104E-744537818","0","653311907","3.01325171E-71");
+  mathtest(435,def,"-1.31557907","98.9139300E-579281802","-1.31557907","-1.31557907","-1.30129096E-579281800","-1.33002406E+579281800","","","15.529932");
+  mathtest(436,def,"-875192389","-72071565.6","-947263955","-803120823","6.30764857E+16","12.1433797","12","-10333601.8","1.25564408E-644471405");
+  mathtest(437,def,"-72838078.8","-391.398423","-72838470.2","-72837687.4","2.85087092E+10","186097.017","186097","-6.474969","-6.574057E-3075");
+  mathtest(438,def,"29186560.9","-79.7419988","29186481.2","29186640.6","-2.32739470E+9","-366012.407","-366012","32.4352144","6.10050869E-598");
+  mathtest(439,def,"-329801660E-730249465","-6489.9256","-6489.92560","6489.92560","2.14038824E-730249453","5.08174793E-730249461","0","-3.29801660E-730249457","");
+  mathtest(440,def,"91.8429117E+103164883","7131455.16","9.18429117E+103164884","9.18429117E+103164884","6.54973607E+103164891","1.28785654E+103164878","","","");
+  mathtest(441,def,"3943866.38E+150855113","-31927007.3","3.94386638E+150855119","3.94386638E+150855119","-1.25915851E+150855127","-1.23527594E+150855112","","","");
+  mathtest(442,def,"-7002.0468E-795962156","-5937891.05","-5937891.05","5937891.05","4.15773910E-795962146","1.17921443E-795962159","0","-7.0020468E-795962153","");
+  mathtest(443,def,"696504605.","54506.4617","696559111","696450099","3.79640016E+13","12778.386","12778","21037.3974","2.6008532E+481992");
+  mathtest(444,def,"-5115.76467","690.960979E+815126701","6.90960979E+815126703","-6.90960979E+815126703","-3.53479376E+815126707","-7.4038402E-815126701","0","-5115.76467","-9.17009655E+25");
+  mathtest(445,def,"-261.279392","-613.079357","-874.358749","351.799965","160185.002","0.426175484","0","-261.279392","-2.06318841E-1482");
+  mathtest(446,def,"-591407763","-80145822.8","-671553586","-511261940","4.73988618E+16","7.37914644","7","-30387003.4","-2.79334522E-703030105");
+  mathtest(447,def,"615630407","-69.4661869","615630338","615630476","-4.27654969E+10","-8862303.15","-8862303","10.4375693","3.44283102E-607");
+  mathtest(448,def,"1078757.50","27402569.0E-713742082","1078757.50","1078757.50","2.95607268E-713742069","3.93670207E+713742080","","","1.25536924E+18");
+  mathtest(449,def,"-4865.60358E-401116515","66952.5315","66952.5315","-66952.5315","-3.25764477E-401116507","-7.26724363E-401116517","0","-4.86560358E-401116512","");
+  mathtest(450,def,"-87805.3921E-934896690","-1875.14745","-1875.14745","1875.14745","1.64648057E-934896682","4.68258601E-934896689","0","-8.78053921E-934896686","");
+  mathtest(451,def,"-232540609.E+602702520","68.0834223","-2.32540609E+602702528","-2.32540609E+602702528","-1.58321605E+602702530","-3.41552468E+602702526","","","");
+  mathtest(452,def,"-320610803.","-863871235.","-1.18448204E+9","543260432","2.76966450E+17","0.37113263","0","-320610803","");
+  mathtest(453,def,"-303956364E+278139979","229537.920E+479603725","2.29537920E+479603730","-2.29537920E+479603730","-6.97695116E+757743717","-1.3242098E-201463743","0","-3.03956364E+278139987","9.23894712E+556279974");
+  mathtest(454,def,"-439.747348","74.9494457E-353117582","-439.747348","-439.747348","-3.29588200E-353117578","-5.86725284E+353117582","","","-3.17996693E+18");
+  mathtest(455,def,"-89702231.9","1.28993993","-89702230.6","-89702233.2","-115710491","-69539852.1","-69539852","-0.07890964","-89702231.9");
+  mathtest(456,def,"-5856939.14","-6743375.34","-12600314.5","886436.20","3.94955390E+13","0.868547107","0","-5856939.14","-3.29213248E-45636942");
+  mathtest(457,def,"733317.669E+100381349","-13832.6792E+174055607","-1.38326792E+174055611","1.38326792E+174055611","-1.01437481E+274436966","-5.30134227E-73674257","0","7.33317669E+100381354","1.36366549E-100381355");
+  mathtest(458,def,"87.4798787E-80124704","108497.32","108497.320","-108497.320","9.49133239E-80124698","8.06286079E-80124708","0","8.74798787E-80124703","");
+  mathtest(459,def,"-694562052","310681.319E+549445264","3.10681319E+549445269","-3.10681319E+549445269","-2.15787454E+549445278","-2.23560932E-549445261","0","-694562052","-3.35068155E+26");
+  mathtest(460,def,"-9744135.85","1797016.04","-7947119.81","-11541151.9","-1.75103684E+13","-5.42239782","-5","-759055.65","3.83848006E+12558883");
+  mathtest(461,def,"3625.87308","-50.2208536E+658627487","-5.02208536E+658627488","5.02208536E+658627488","-1.82094441E+658627492","-7.21985554E-658627486","0","3625.87308","1.5956477E-18");
+  mathtest(462,def,"365347.52","-3655414.47","-3290066.95","4020761.99","-1.33549661E+12","-0.099946948","0","365347.52","1.02663257E-20333994");
+  mathtest(463,def,"-19706333.6E-816923050","-383858032.","-383858032","383858032","7.56443443E-816923035","5.1337557E-816923052","0","-1.97063336E-816923043","");
+  mathtest(464,def,"-86346.2616","-98.8063785","-86445.0680","-86247.4552","8531561.41","873.893598","873","-88.2931695","-2.05064086E-489");
+  mathtest(465,def,"-445588.160E-496592215","328.822976","328.822976","-328.822976","-1.46519625E-496592207","-1.35510044E-496592212","0","-4.45588160E-496592210","");
+  mathtest(466,def,"-9709213.71","-34.6690137","-9709248.38","-9709179.04","336608863","280054.512","280054","-17.7472602","-2.80903974E-245");
+  mathtest(467,def,"742395536.","-43533.6889","742352002","742439070","-3.23192163E+13","-17053.3569","-17053","15539.1883","5.7622734E-386175");
+  mathtest(468,def,"-878849193.","-5842982.47E-972537342","-878849193","-878849193","5.13510043E-972537327","1.50411061E+972537344","","","2.17027042E-54");
+  mathtest(469,def,"-78014142.1","-624658.522","-78638800.6","-77389483.6","4.87321987E+13","124.890863","124","-556485.372","-7.86063865E-4929918");
+  mathtest(470,def,"857039.371","454.379672","857493.751","856584.991","389421268","1886.17454","1886","79.309608","3.82253101E+2693");
+  mathtest(471,def,"166534010.","-173.012236","166533837","166534183","-2.88124214E+10","-962556.255","-962556","44.164784","4.78620664E-1423");
+  mathtest(472,def,"-810.879063","43776.610","42965.7309","-44587.4891","-35497536.5","-0.0185231123","0","-810.879063","-2.34758691E+127345");
+  mathtest(473,def,"-327.127935","93458944","93458616.9","-93459271.1","-3.05730314E+10","-0.00000350023145","0","-327.127935","2.29323021E+235022854");
+  mathtest(474,def,"539295218.","-9587941.10E-309643098","539295218","539295218","-5.17073079E-309643083","-5.62472394E+309643099","","","4.80545269E-88");
+  mathtest(475,def,"-3862702.65","879616.733","-2983085.92","-4742319.38","-3.39769789E+12","-4.3913474","-4","-344235.718","-3.50650167E+5793941");
+  mathtest(476,def,"-8.25290500","992.091584E+256070257","9.92091584E+256070259","-9.92091584E+256070259","-8.18763759E+256070260","-8.31869268E-256070260","0","-8.25290500","1.46577888E+9");
+  mathtest(477,def,"546875205.","447.52857E+557357101","4.47528570E+557357103","-4.47528570E+557357103","2.44742278E+557357112","1.22198948E-557357095","0","546875205","8.94443542E+34");
+  mathtest(478,def,"177623437","-7779116.14","169844321","185402553","-1.38175335E+15","-22.83337","-22","6482881.92","2.90085309E-64173820");
+  mathtest(479,def,"377204735.","13768.1401","377218503","377190967","5.19340764E+12","27396.9274","27396","12768.8204","2.06065297E+118082");
+  mathtest(480,def,"-2435.49239","-11732.0640E-23331504","-2435.49239","-2435.49239","2.85733526E-23331497","2.07592832E+23331503","","","-0.00041059459");
+  mathtest(481,def,"-6128465.14E-137123294","-5742264.27","-5742264.27","5742264.27","3.51912664E-137123281","1.06725585E-137123294","0","-6.12846514E-137123288","");
+  mathtest(482,def,"-2898065.44","-5.11638105","-2898070.56","-2898060.32","14827607.1","566428.773","566428","-3.95461060","-4.89169151E-33");
+  mathtest(483,def,"1851395.31E+594383160","-550301.475","1.85139531E+594383166","1.85139531E+594383166","-1.01882557E+594383172","-3.36432918E+594383160","","","");
+  mathtest(484,def,"536412589.E+379583977","899.601161","5.36412589E+379583985","5.36412589E+379583985","4.82557388E+379583988","5.96278231E+379583982","","","");
+  mathtest(485,def,"185.85297","867419480.","867419666","-867419294","1.61212487E+11","2.14259622E-7","0","185.85297","");
+  mathtest(486,def,"-5.26631053","-3815941.35E+183291763","-3.81594135E+183291769","3.81594135E+183291769","2.00959321E+183291770","1.38008162E-183291769","0","-5.26631053","0.00130009218");
+  mathtest(487,def,"-8.11587021E-245942806","4553.06753E+943412048","4.55306753E+943412051","-4.55306753E+943412051","-3.69521051E+697469246","","0","-8.11587021E-245942806","");
+  mathtest(488,def,"-405765.352","854963231","854557466","-855368996","-3.46914456E+14","-0.000474599769","0","-405765.352","");
+  mathtest(489,def,"-159.609757","-43356.7567","-43516.3665","43197.1470","6920161.40","0.00368131219","0","-159.609757","-8.95397849E-95519");
+  mathtest(490,def,"-564240.241E-501316672","-557.781977","-557.781977","557.781977","3.14723037E-501316664","1.01157847E-501316669","0","-5.64240241E-501316667","");
+  mathtest(491,def,"318847.270","582107878.E+399633412","5.82107878E+399633420","-5.82107878E+399633420","1.85603508E+399633426","5.47746014E-399633416","0","318847.270","1.0507423E+33");
+  mathtest(492,def,"-4426.59663","95.1096765","-4331.48695","-4521.70631","-421012.173","-46.5420217","-46","-51.5515110","-2.38037379E+346");
+  mathtest(493,def,"6037.28310","578264.105","584301.388","-572226.822","3.49114411E+9","0.010440356","0","6037.28310","3.57279483E+2186324");
+  mathtest(494,def,"-66.9556692","-53.8519404","-120.807610","-13.1037288","3605.69271","1.24332881","1","-13.1037288","2.55554086E-99");
+  mathtest(495,def,"-92486.0222","-59935.8544","-152421.877","-32550.1678","5.54322876E+9","1.5430834","1","-32550.1678","1.83152656E-297647");
+  mathtest(496,def,"852136219.E+917787351","9246221.91","8.52136219E+917787359","8.52136219E+917787359","7.87904058E+917787366","9.21604767E+917787352","","","");
+  mathtest(497,def,"-2120096.16E-269253718","9437.00514","9437.00514","-9437.00514","-2.00073584E-269253708","-2.24657731E-269253716","0","-2.12009616E-269253712","");
+  mathtest(498,def,"-524653.169E-865784226","228054.698","228054.698","-228054.698","-1.19649620E-865784215","-2.30055848E-865784226","0","-5.24653169E-865784221","");
+  mathtest(499,def,"-288193133","-312268737.","-600461870","24075604","8.99937057E+16","0.922901011","0","-288193133","");
+  mathtest(500,def,"-373484759E-113589964","844101958E-852538240","-3.73484759E-113589956","-3.73484759E-113589956","-3.15259216E-966128187","-4.42464036E+738948275","","","3.78602147E-908719644");
+  
+  summary("Arithmetic");
+  return;}
+
+ /* mathtest -- general arithmetic test routine
+    Arg1  is test number
+    Arg2  is MathContext
+    Arg3  is left hand side (LHS)
+    Arg4  is right hand side (RHS)
+    Arg5  is the expected result for add
+    Arg6  is the expected result for subtract
+    Arg7  is the expected result for multiply
+    Arg8  is the expected result for divide
+    Arg9  is the expected result for integerDivide
+    Arg10 is the expected result for remainder
+    Arg11 is the expected result for power
+ 
+  For power RHS, 0 is added to the number, any exponent is removed and
+  the number is then rounded to an integer, using format(rhs+0,,0)
+ 
+  If an error should result for an operation, the 'expected result' is
+  an empty string.
+  */
+ 
+ private void mathtest(int test,com.ibm.icu.math.MathContext mc,java.lang.String slhs,java.lang.String srhs,java.lang.String add,java.lang.String sub,java.lang.String mul,java.lang.String div,java.lang.String idv,java.lang.String rem,java.lang.String pow){
+  com.ibm.icu.math.BigDecimal lhs;
+  com.ibm.icu.math.BigDecimal rhs;
+  java.lang.String res=null;
+  java.lang.String sn=null;
+  int e=0;
+  
+  
+  
+  lhs=new com.ibm.icu.math.BigDecimal(slhs);
+  rhs=new com.ibm.icu.math.BigDecimal(srhs);
+  
+  try{
+   res=lhs.add(rhs,mc).toString();
+  }
+  catch (java.lang.ArithmeticException $137){
+   res="";
+  }
+  mathtestcheck(test,lhs,rhs,"add",res,add);
+  
+  try{
+   res=lhs.subtract(rhs,mc).toString();
+  }
+  catch (java.lang.ArithmeticException $138){
+   res="";
+  }
+  mathtestcheck(test,lhs,rhs,"sub",res,sub);
+  
+  try{
+   res=lhs.multiply(rhs,mc).toString();
+  }
+  catch (java.lang.ArithmeticException $139){
+   res="";
+  }
+  mathtestcheck(test,lhs,rhs,"mul",res,mul);
+  
+  try{
+   res=lhs.divide(rhs,mc).toString();
+  }
+  catch (java.lang.ArithmeticException $140){
+   res="";
+  }
+  mathtestcheck(test,lhs,rhs,"div",res,div);
+  
+  try{
+   res=lhs.divideInteger(rhs,mc).toString();
+  }
+  catch (java.lang.ArithmeticException $141){
+   res="";
+  }
+  mathtestcheck(test,lhs,rhs,"idv",res,idv);
+  
+  try{
+   res=lhs.remainder(rhs,mc).toString();
+  }
+  catch (java.lang.ArithmeticException $142){
+   res="";
+  }
+  mathtestcheck(test,lhs,rhs,"rem",res,rem);
+  
+  try{
+   // prepare an integer from the rhs
+   // in Rexx:
+   //   n=rhs+0
+   //   e=pos('E', n)
+   //   if e>0 then n=left(n,e-1)
+   //   n=format(n,,0)
+   
+   sn=rhs.plus(mc).toString();
+   e=sn.indexOf("E",0);
+   if (e>0) 
+    sn=sn.substring(0,e);
+   sn=(new com.ibm.icu.math.BigDecimal(sn)).format(-1,0);
+   
+   res=lhs.pow(new com.ibm.icu.math.BigDecimal(sn),mc).toString();
+  }
+  catch (java.lang.ArithmeticException $143){
+   res="";
+  }
+  mathtestcheck(test,lhs,rhs,"pow",res,pow);
+  return;
+  }
+
+ /* mathtestcheck -- check for general mathtest error
+    Arg1  is test number
+    Arg2  is left hand side (LHS)
+    Arg3  is right hand side (RHS)
+    Arg4  is the operation
+    Arg5  is the actual result
+    Arg6  is the expected result
+    Show error message if a problem, otherwise return quietly
+    */
+ 
+ private void mathtestcheck(int test,com.ibm.icu.math.BigDecimal lhs,com.ibm.icu.math.BigDecimal rhs,java.lang.String op,java.lang.String got,java.lang.String want){
+  boolean flag;
+  java.lang.String testnum;
+  
+  flag=want.equals((java.lang.Object)got);
+  
+  if ((!flag)) 
+   say(">"+test+">"+" "+lhs.toString()+" "+op+" "+rhs.toString()+" "+"="+" "+want+" "+"[got"+" "+got+"]");
+  
+  testnum="gen"+right((new com.ibm.icu.math.BigDecimal(test+1000)).toString(),3);
+  
+  (new Test(testnum)).ok=flag;
+  return;
+  }
+
+ 
+ /* ------------------------------------------------------------------ */
+ /* Support routines and minor classes follow                          */
+ /* ------------------------------------------------------------------ */
+ 
+ /* ----------------------------------------------------------------- */
+ /* Method called to summarise pending tests                          */
+ /* ----------------------------------------------------------------- */
+ /* Arg1 is section name */
+ 
+ private void summary(java.lang.String section){
+  int bad;
+  int count;
+  int i=0;
+  Test item=null;
+  bad=0;
+  count=Tests.size();
+  {int $144=count;i=0;i:for(;$144>0;$144--,i++){
+   item=(Test)(Tests.elementAt(i));
+   if ((!item.ok)) 
+    {
+     bad++;
+     errln("Failed:"+" "+item.name);
+    }
+   }
+  }/*i*/
+  totalcount=totalcount+count;
+  Tests=new java.util.Vector(100); // reinitialize
+  if (bad==0) 
+   say("OK"+" "+left(section,14)+" "+right("["+count+" "+"tests]",12));
+  else 
+   throw new DiagException(section+" "+"[failed"+" "+bad+" "+"of"+" "+count+" "+"tests]",bad);
+  return;}
+
+ 
+ /* ----------------------------------------------------------------- */
+ /* right - Utility to do a 'right' on a Java String                  */
+ /* ----------------------------------------------------------------- */
+ /* Arg1 is string to right-justify */
+ /* Arg2 is desired length */
+ 
+ private static java.lang.String right(java.lang.String s,int len){
+  int slen;
+  slen=s.length();
+  if (slen==len) 
+   return s; // length just right
+  if (slen>len) 
+   return s.substring(slen-len); // truncate on left
+  // too short
+  return (new java.lang.String(new char[len-slen])).replace('\000',' ').concat(s);
+  }
+
+ /* ----------------------------------------------------------------- */
+ /* left - Utility to do a 'left' on a Java String                    */
+ /* ----------------------------------------------------------------- */
+ /* Arg1 is string to left-justify */
+ /* Arg2 is desired length */
+ 
+ private static java.lang.String left(java.lang.String s,int len){
+  int slen;
+  slen=s.length();
+  if (slen==len) 
+   return s; // length just right
+  if (slen>len) 
+   return s.substring(0,len); // truncate on right
+  // too short
+  return s.concat((new java.lang.String(new char[len-slen])).replace('\000',' '));
+  }
+
+ /* ----------------------------------------------------------------- */
+ /* say - Utility to do a display                                     */
+ /* ----------------------------------------------------------------- */
+ /* Arg1 is string to display, omitted if none */
+ /*         [null or omitted gives blank line] */
+ // this version doesn't heed continuation final character
+ 
+ private void say(){
+  say((java.lang.String)null);return;
+  }
+ private void say(java.lang.String s){
+  if (s==null) 
+   s="  ";
+  logln(s);
+  return;}
+
+ /* ----------------------------------------------------------------- */
+ /* Scaffolding for stand-alone run                                   */
+ /* ----------------------------------------------------------------- */
+ /** Entry point for stand-alone run.  It constructs a
+  *  <code>DiagBigDecimal</code> object and then invokes its
+  *  {@link #diagrun(boolean)} method to run the test
+  *  suite.
+  *
+  * @param args The command line argument string array.
+  *   if the first word is '<code>continue</code>' then try and run
+  *   all tests, otherwise stop after the first failing test group.
+  */
+ public static void main(String[] args) throws Exception{
+    new DiagBigDecimal().run(args);
+ }
+ public void TestBigDecimal(){
+	  boolean $continue;
+	  int fails;
+	  $continue=false;
+	  fails=diagrun($continue); // and run the tests
+	  if(fails!=0) {
+         errln("Diagnostic Tests for math failed. Number of errors: " +fails);
+	  }
+  }
+
+/* ------------------------------------------------------------------ */
+/* Test -- represents a test and its status                           */
+/* ------------------------------------------------------------------ */
+/* Copyright IBM Corporation 1998, 2000.  All rights reserved.        */
+/* Author: Mike Cowlishaw                                             */
+/* ------------------------------------------------------------------ */
+/* 1998.07.15 Initial version                                         */
+/* 2000.03.27 Change to javadoc comments                              */
+
+/**
+ * The <code>Test</code> class is used to record a specific test.
+ * When constructed, it notes the name of the test and adds the test
+ * to the list of tests held by the parent.
+ *
+ * Its <code>ok</flag> is assigned directly to record whether the
+ * test succeeded (1) or failed (0).
+ *
+ * @see     com.ibm.icu.math.DiagBigDecimal
+ * @version 1.00 2000.03.27
+ * @author  Mike Cowlishaw
+ */
+ 
+ public class Test{
+  private final transient java.lang.String $0="DiagBigDecimal.nrx";
+  /* properties shared transient */
+ /** The name of the test. */
+  transient java.lang.String name;
+ /** Success flag; will be set to 1 (true) if the test succeeded, or 0
+  * (false) if the test failed.
+  */
+  transient boolean ok;
+
+ 
+ /**
+  * Constructs a new <code>Test</code> with a specified name.
+  *
+  * @param testname The <code>String</code> naming the test.
+  */
+  
+  public Test(java.lang.String testname){super();
+   name=testname; // save the name
+   DiagBigDecimal.this.Tests.addElement((java.lang.Object)this); // and add to parent's list
+   return;}
+  }
+
+ /* ------------------------------------------------------------------ */
+ /* DiagException                                                      */
+ /* ------------------------------------------------------------------ */
+ /* Copyright IBM Corporation 1996, 2000.  All rights reserved.        */
+ /* Author: Mike Cowlishaw                                             */
+ /* ------------------------------------------------------------------ */
+ /* 1996.05.27 Initial version in NetRexx (as DiagX)                   */
+ /* 1998.06.25 Copied from NetRexx test suite                          */
+ /* 1999.07.03 Add fail count                                          */
+ /* 2000.03.27 Change to javadoc comments                              */
+ 
+ /**
+  * The <code>DiagException</code> class is used to signal the failure
+  * of a test group.  It records the number of failures in the group.
+  *
+  * @see     com.ibm.icu.math.DiagBigDecimal
+  * @version 1.00 2000.03.27
+  * @author  Mike Cowlishaw
+  */
+ 
+ public static class DiagException extends java.lang.RuntimeException{
+  private final transient java.lang.String $0="DiagBigDecimal.nrx";
+ 
+  /* properties shared transient */
+ /** the count of failed tests in the group which signalled this
+   * exception.
+   */
+  transient int failcount=0;
+ // number of tests which failed
+ 
+ /**
+  * Constructs a new <code>DiagException</code> with a message and
+  * failure count.  This is thrown when a group of tests fails.
+  *
+  * @param message The <code>String</code> message describing the group.
+  * @param fails   The <code>int</code> number of failed tests in the  group.
+  */
+  
+  public DiagException(java.lang.String message,int fails){
+   super(message);
+   failcount=fails;
+   return;}
+ }}
diff --git a/src/com/ibm/icu/dev/test/calendar/AstroTest.java b/src/com/ibm/icu/dev/test/calendar/AstroTest.java
new file mode 100755
index 0000000..60c679a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/AstroTest.java
@@ -0,0 +1,122 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/calendar/AstroTest.java,v $ 
+ * $Date: 2002/08/08 22:02:27 $ 
+ * $Revision: 1.7 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+// AstroTest
+
+import java.util.Date;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.util.*;
+
+import com.ibm.icu.util.CalendarAstronomer.*;
+
+// TODO: try finding next new moon after  07/28/1984 16:00 GMT
+
+public class AstroTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new AstroTest().run(args);
+    }
+
+    static final double PI = Math.PI;
+    
+    static GregorianCalendar gc = new GregorianCalendar(new SimpleTimeZone(0, "UTC"));
+    static CalendarAstronomer astro = new CalendarAstronomer();
+    
+    public void TestSolarLongitude() {
+        final double tests[][] = {
+            { 1980, 7, 27, 00, 00, 124.114347 },
+            { 1988, 7, 27, 00, 00, 124.187732 },
+        };
+        logln("");
+        for (int i = 0; i < tests.length; i++) {
+            gc.clear();
+            gc.set((int)tests[i][0], (int)tests[i][1]-1, (int)tests[i][2], (int)tests[i][3], (int) tests[i][4]);
+            
+            astro.setDate(gc.getTime());
+            
+            double longitude = astro.getSunLongitude();
+            longitude = 0;
+            Equatorial result = astro.getSunPosition();
+            result = null;
+        }
+    }
+    
+    public void TestLunarPosition() {
+        final double tests[][] = {
+            { 1979, 2, 26, 16, 00,  0, 0 },
+        };
+        logln("");
+        
+        for (int i = 0; i < tests.length; i++) {
+            gc.clear();
+            gc.set((int)tests[i][0], (int)tests[i][1]-1, (int)tests[i][2], (int)tests[i][3], (int) tests[i][4]);
+            astro.setDate(gc.getTime());
+            
+            Equatorial result = astro.getMoonPosition();
+            result = null;
+        }
+
+    }
+    
+    public void TestCoordinates() {
+        Equatorial result = astro.eclipticToEquatorial(139.686111 * PI/ 180.0, 4.875278* PI / 180.0);
+        logln("result is " + result + ";  " + result.toHmsString());
+    }
+    
+    public void TestCoverage() {
+	GregorianCalendar cal = new GregorianCalendar(1958, Calendar.AUGUST, 15);
+	Date then = cal.getTime();
+	CalendarAstronomer myastro = new CalendarAstronomer(then);
+
+	//Latitude:  34 degrees 05' North  
+	//Longitude:  118 degrees 22' West  
+	double laLat = 34 + 5d/60, laLong = 360 - (118 + 22d/60);
+	CalendarAstronomer myastro2 = new CalendarAstronomer(laLong, laLat);
+
+	double eclLat = laLat * Math.PI / 360;
+	double eclLong = laLong * Math.PI / 360;
+	Ecliptic ecl = new Ecliptic(eclLat, eclLong);
+	logln("ecliptic: " + ecl);
+
+	CalendarAstronomer myastro3 = new CalendarAstronomer();
+	myastro3.setJulianDay((4713 + 2000) * 365.25);
+
+	CalendarAstronomer[] astronomers = {
+	    myastro, myastro2, myastro3, myastro2 // check cache
+	};
+
+	for (int i = 0; i < astronomers.length; ++i) {
+	    CalendarAstronomer astro = astronomers[i];
+
+	    logln("astro: " + astro);
+	    logln("   time: " + astro.getTime());
+	    logln("   date: " + astro.getDate());
+	    logln("   cent: " + astro.getJulianCentury());
+	    logln("   gw sidereal: " + astro.getGreenwichSidereal());
+	    logln("   loc sidereal: " + astro.getLocalSidereal());
+	    logln("   equ ecl: " + astro.eclipticToEquatorial(ecl));
+	    logln("   equ long: " + astro.eclipticToEquatorial(eclLong));
+	    logln("   horiz: " + astro.eclipticToHorizon(eclLong));
+	    logln("   sunrise: " + new Date(astro.getSunRiseSet(true)));
+	    logln("   sunset: " + new Date(astro.getSunRiseSet(false)));
+	    logln("   moon phase: " + astro.getMoonPhase());
+	    logln("   moonrise: " + new Date(astro.getMoonRiseSet(true)));
+	    logln("   moonset: " + new Date(astro.getMoonRiseSet(false)));
+	    logln("   prev summer solstice: " + new Date(astro.getSunTime(astro.SUMMER_SOLSTICE, false)));
+	    logln("   next summer solstice: " + new Date(astro.getSunTime(astro.SUMMER_SOLSTICE, true)));
+	    logln("   prev full moon: " + new Date(astro.getMoonTime(astro.FULL_MOON, false)));
+	    logln("   next full moon: " + new Date(astro.getMoonTime(astro.FULL_MOON, true)));
+	}
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/CalendarRegression.java b/src/com/ibm/icu/dev/test/calendar/CalendarRegression.java
new file mode 100755
index 0000000..bc3df1e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/CalendarRegression.java
@@ -0,0 +1,1839 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/calendar/CalendarRegression.java,v $
+ * $Date: 2002/08/13 21:53:38 $
+ * $Revision: 1.12 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+import com.ibm.icu.util.*;
+import java.util.Date;
+import java.util.Locale;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+
+/**
+ * @test 1.32 99/11/14
+ * @bug 4031502 4035301 4040996 4051765 4059654 4061476 4070502 4071197 4071385
+ * 4073929 4083167 4086724 4092362 4095407 4096231 4096539 4100311 4103271
+ * 4106136 4108764 4114578 4118384 4125881 4125892 4136399 4141665 4142933
+ * 4145158 4145983 4147269 4149677 4162587 4165343 4166109 4167060 4173516
+ * 4174361 4177484 4197699 4209071 4288792
+ */
+public class CalendarRegression extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new CalendarRegression().run(args);
+    }
+
+    static final String[] FIELD_NAME = {
+        "ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH",
+        "DAY_OF_MONTH", "DAY_OF_YEAR", "DAY_OF_WEEK",
+        "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR", "HOUR_OF_DAY",
+        "MINUTE", "SECOND", "MILLISECOND", "ZONE_OFFSET",
+        "DST_OFFSET", "YEAR_WOY", "DOW_LOCAL", "EXTENDED_YEAR",
+        "JULIAN_DAY", "MILLISECONDS_IN_DAY",
+    };
+
+    /*
+      Synopsis: java.sql.Timestamp constructor works wrong on Windows 95
+
+      ==== Here is the test ==== 
+      public static void main (String args[]) { 
+        java.sql.Timestamp t= new java.sql.Timestamp(0,15,5,5,8,13,123456700); 
+        logln("expected=1901-04-05 05:08:13.1234567"); 
+        logln(" result="+t); 
+      } 
+      
+      ==== Here is the output of the test on Solaris or NT ==== 
+      expected=1901-04-05 05:08:13.1234567 
+      result=1901-04-05 05:08:13.1234567 
+      
+      ==== Here is the output of the test on Windows95 ==== 
+      expected=1901-04-05 05:08:13.1234567 
+      result=1901-04-05 06:08:13.1234567 
+      */
+
+    public void Test4031502() {
+        // This bug actually occurs on Windows NT as well, and doesn't
+        // require the host zone to be set; it can be set in Java.
+        String[] ids = TimeZone.getAvailableIDs();
+        boolean bad = false;
+        for (int i=0; i<ids.length; ++i) {
+            TimeZone zone = TimeZone.getTimeZone(ids[i]);
+            GregorianCalendar cal = new GregorianCalendar(zone);
+            cal.clear();
+            cal.set(1900, 15, 5, 5, 8, 13);
+            if (cal.get(Calendar.HOUR) != 5) {
+                logln("Fail: " + zone.getID() + " " +
+                      zone.useDaylightTime() + " " +
+                      cal.get(Calendar.DST_OFFSET) / (60*60*1000) + " " +
+                      zone.getRawOffset() / (60*60*1000) +
+                      ": HOUR = " + cal.get(Calendar.HOUR));
+                bad = true;
+            } else if (false) { // Change to true to debug
+                logln("OK: " + zone.getID() + " " +
+                      zone.useDaylightTime() + " " +
+                      cal.get(Calendar.DST_OFFSET) / (60*60*1000) + " " +
+                      zone.getRawOffset() / (60*60*1000) +
+                      ": HOUR = " + cal.get(Calendar.HOUR));
+            }
+        }
+        if (bad) errln("TimeZone problems with GC");
+    }
+
+    public void Test4035301() {
+        GregorianCalendar c = new GregorianCalendar(98, 8, 7);
+        GregorianCalendar d = new GregorianCalendar(98, 8, 7);
+        if (c.after(d) ||
+            c.after(c) ||
+            c.before(d) ||
+            c.before(c) ||
+            !c.equals(c) ||
+            !c.equals(d))
+            errln("Fail");
+    }
+
+    public void Test4040996() {
+        String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
+        SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);
+        pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
+        pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
+        Calendar calendar = new GregorianCalendar(pdt);
+
+        calendar.set(Calendar.MONTH,3);
+        calendar.set(Calendar.DAY_OF_MONTH,18);
+        calendar.set(Calendar.SECOND, 30);
+
+        logln("MONTH: " + calendar.get(Calendar.MONTH));
+        logln("DAY_OF_MONTH: " + 
+                           calendar.get(Calendar.DAY_OF_MONTH));
+        logln("MINUTE: " + calendar.get(Calendar.MINUTE));
+        logln("SECOND: " + calendar.get(Calendar.SECOND));
+
+        calendar.add(Calendar.SECOND,6);
+        //This will print out todays date for MONTH and DAY_OF_MONTH
+        //instead of the date it was set to.
+        //This happens when adding MILLISECOND or MINUTE also
+        logln("MONTH: " + calendar.get(Calendar.MONTH));
+        logln("DAY_OF_MONTH: " + 
+                           calendar.get(Calendar.DAY_OF_MONTH));
+        logln("MINUTE: " + calendar.get(Calendar.MINUTE));
+        logln("SECOND: " + calendar.get(Calendar.SECOND));
+        if (calendar.get(Calendar.MONTH) != 3 ||
+            calendar.get(Calendar.DAY_OF_MONTH) != 18 ||
+            calendar.get(Calendar.SECOND) != 36)
+            errln("Fail: Calendar.add misbehaves");
+    }
+
+    public void Test4051765() {
+        Calendar cal = Calendar.getInstance();
+        cal.setLenient(false);
+        cal.set(Calendar.DAY_OF_WEEK, 0);
+        try {
+            cal.getTime();
+            errln("Fail: DAY_OF_WEEK 0 should be disallowed");
+        }
+        catch (IllegalArgumentException e) {
+            return;
+        }
+    }
+    
+    /* User error - no bug here
+    public void Test4059524() {
+        // Create calendar for April 10, 1997
+        GregorianCalendar calendar  = new GregorianCalendar();
+        // print out a bunch of interesting things
+        logln("ERA: " + calendar.get(calendar.ERA));
+        logln("YEAR: " + calendar.get(calendar.YEAR));
+        logln("MONTH: " + calendar.get(calendar.MONTH));
+        logln("WEEK_OF_YEAR: " + 
+                           calendar.get(calendar.WEEK_OF_YEAR));
+        logln("WEEK_OF_MONTH: " + 
+                           calendar.get(calendar.WEEK_OF_MONTH));
+        logln("DATE: " + calendar.get(calendar.DATE));
+        logln("DAY_OF_MONTH: " + 
+                           calendar.get(calendar.DAY_OF_MONTH));
+        logln("DAY_OF_YEAR: " + calendar.get(calendar.DAY_OF_YEAR));
+        logln("DAY_OF_WEEK: " + calendar.get(calendar.DAY_OF_WEEK));
+        logln("DAY_OF_WEEK_IN_MONTH: " +
+                           calendar.get(calendar.DAY_OF_WEEK_IN_MONTH));
+        logln("AM_PM: " + calendar.get(calendar.AM_PM));
+        logln("HOUR: " + calendar.get(calendar.HOUR));
+        logln("HOUR_OF_DAY: " + calendar.get(calendar.HOUR_OF_DAY));
+        logln("MINUTE: " + calendar.get(calendar.MINUTE));
+        logln("SECOND: " + calendar.get(calendar.SECOND));
+        logln("MILLISECOND: " + calendar.get(calendar.MILLISECOND));
+        logln("ZONE_OFFSET: "
+                           + (calendar.get(calendar.ZONE_OFFSET)/(60*60*1000)));
+        logln("DST_OFFSET: "
+                           + (calendar.get(calendar.DST_OFFSET)/(60*60*1000)));
+        calendar  = new GregorianCalendar(1997,3,10); 
+        calendar.getTime();                        
+        logln("April 10, 1997");
+        logln("ERA: " + calendar.get(calendar.ERA));
+        logln("YEAR: " + calendar.get(calendar.YEAR));
+        logln("MONTH: " + calendar.get(calendar.MONTH));
+        logln("WEEK_OF_YEAR: " + 
+                           calendar.get(calendar.WEEK_OF_YEAR));
+        logln("WEEK_OF_MONTH: " + 
+                           calendar.get(calendar.WEEK_OF_MONTH));
+        logln("DATE: " + calendar.get(calendar.DATE));
+        logln("DAY_OF_MONTH: " + 
+                           calendar.get(calendar.DAY_OF_MONTH));
+        logln("DAY_OF_YEAR: " + calendar.get(calendar.DAY_OF_YEAR));
+        logln("DAY_OF_WEEK: " + calendar.get(calendar.DAY_OF_WEEK));
+        logln("DAY_OF_WEEK_IN_MONTH: " + calendar.get(calendar.DAY_OF_WEEK_IN_MONTH));
+        logln("AM_PM: " + calendar.get(calendar.AM_PM));
+        logln("HOUR: " + calendar.get(calendar.HOUR));
+        logln("HOUR_OF_DAY: " + calendar.get(calendar.HOUR_OF_DAY));
+        logln("MINUTE: " + calendar.get(calendar.MINUTE));
+        logln("SECOND: " + calendar.get(calendar.SECOND));
+        logln("MILLISECOND: " + calendar.get(calendar.MILLISECOND));
+        logln("ZONE_OFFSET: "
+                           + (calendar.get(calendar.ZONE_OFFSET)/(60*60*1000))); // in hours
+        logln("DST_OFFSET: "
+                           + (calendar.get(calendar.DST_OFFSET)/(60*60*1000))); // in hours
+    }
+    */
+
+    public void Test4059654() {
+	// work around bug for jdk1.4 on solaris 2.6, which uses funky timezone names
+	// jdk1.4.1 will drop support for 2.6 so we should be ok when it comes out
+	java.util.TimeZone javazone = java.util.TimeZone.getTimeZone("GMT");
+	TimeZone icuzone = TimeZone.getTimeZone("GMT");
+
+        GregorianCalendar gc = new GregorianCalendar(icuzone);
+        
+        gc.set(1997, 3, 1, 15, 16, 17); // April 1, 1997
+
+        gc.set(Calendar.HOUR, 0);
+        gc.set(Calendar.AM_PM, Calendar.AM);
+        gc.set(Calendar.MINUTE, 0);
+        gc.set(Calendar.SECOND, 0);
+        gc.set(Calendar.MILLISECOND, 0);
+
+        Date cd = gc.getTime();
+        java.util.Calendar cal = java.util.Calendar.getInstance(javazone);
+        cal.clear();
+        cal.set(1997, 3, 1, 0, 0, 0);
+        Date exp = cal.getTime();
+        if (!cd.equals(exp))
+            errln("Fail: Calendar.set broken. Got " + cd + " Want " + exp);
+    }
+
+    public void Test4061476() {
+        SimpleDateFormat fmt = new SimpleDateFormat("ddMMMyy", Locale.UK);
+        Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT"), 
+                                                     Locale.UK);
+        fmt.setCalendar(cal);
+        try
+            {
+                Date date = fmt.parse("29MAY97");
+                cal.setTime(date);
+            }
+        catch (Exception e) {
+            System.out.print("");
+        }
+        cal.set(Calendar.HOUR_OF_DAY, 13);
+        logln("Hour: "+cal.get(Calendar.HOUR_OF_DAY));
+        cal.add(Calendar.HOUR_OF_DAY, 6);
+        logln("Hour: "+cal.get(Calendar.HOUR_OF_DAY));
+        if (cal.get(Calendar.HOUR_OF_DAY) != 19)
+            errln("Fail: Want 19 Got " + cal.get(Calendar.HOUR_OF_DAY));
+    }
+
+    public void Test4070502() {
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1998, 0, 30);
+        Date d = getAssociatedDate(tempcal.getTime());
+        Calendar cal = new GregorianCalendar();
+        cal.setTime(d);
+        if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY ||
+            cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
+            errln("Fail: Want weekday Got " + d);
+    }
+
+    /**
+     * Get the associated date starting from a specified date
+     * NOTE: the unnecessary "getTime()'s" below are a work-around for a
+     * bug in jdk 1.1.3 (and probably earlier versions also)
+     * <p>
+     * @param date The date to start from
+     */
+    public static Date getAssociatedDate(Date d) {
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.setTime(d);
+        //cal.add(field, amount); //<-- PROBLEM SEEN WITH field = DATE,MONTH 
+        // cal.getTime();  // <--- REMOVE THIS TO SEE BUG
+        while (true) {
+            int wd = cal.get(Calendar.DAY_OF_WEEK);
+            if (wd == Calendar.SATURDAY || wd == Calendar.SUNDAY) {
+                cal.add(Calendar.DATE, 1);
+                // cal.getTime();
+            }
+            else
+                break;
+        }
+        return cal.getTime();
+    }
+
+    public void Test4071197() {
+        dowTest(false);
+        dowTest(true);
+    }
+
+    void dowTest(boolean lenient) {
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.set(1997, Calendar.AUGUST, 12); // Wednesday
+        // cal.getTime(); // Force update
+        cal.setLenient(lenient);
+        cal.set(1996, Calendar.DECEMBER, 1); // Set the date to be December 1, 1996
+        int dow = cal.get(Calendar.DAY_OF_WEEK);
+        int min = cal.getMinimum(Calendar.DAY_OF_WEEK);
+        int max = cal.getMaximum(Calendar.DAY_OF_WEEK);
+        logln(cal.getTime().toString());
+        if (min != Calendar.SUNDAY || max != Calendar.SATURDAY)
+            errln("FAIL: Min/max bad");
+        if (dow < min || dow > max) 
+            errln("FAIL: Day of week " + dow + " out of range");
+        if (dow != Calendar.SUNDAY) 
+            errln("FAIL: Day of week should be SUNDAY Got " + dow);
+    }
+
+    public void Test4071385() {
+	// work around bug for jdk1.4 on solaris 2.6, which uses funky timezone names
+	// jdk1.4.1 will drop support for 2.6 so we should be ok when it comes out
+	java.util.TimeZone javazone = java.util.TimeZone.getTimeZone("GMT");
+	TimeZone icuzone = TimeZone.getTimeZone("GMT");
+
+        Calendar cal = Calendar.getInstance(icuzone);
+        java.util.Calendar tempcal = java.util.Calendar.getInstance(javazone);
+        tempcal.clear();
+        tempcal.set(1998, Calendar.JUNE, 24);
+        cal.setTime(tempcal.getTime());
+        cal.set(Calendar.MONTH, Calendar.NOVEMBER); // change a field
+        logln(cal.getTime().toString());
+        tempcal.set(1998, Calendar.NOVEMBER, 24);
+        if (!cal.getTime().equals(tempcal.getTime()))
+            errln("Fail");
+    }
+
+    public void Test4073929() {
+        GregorianCalendar foo1 = new GregorianCalendar(1997, 8, 27);
+        foo1.add(Calendar.DAY_OF_MONTH, +1);
+        int testyear = foo1.get(Calendar.YEAR);
+        int testmonth = foo1.get(Calendar.MONTH);
+        int testday = foo1.get(Calendar.DAY_OF_MONTH);
+        if (testyear != 1997 ||
+            testmonth != 8 ||
+            testday != 28)
+            errln("Fail: Calendar not initialized");
+    }
+
+    public void Test4083167() {
+        TimeZone saveZone = TimeZone.getDefault();
+        try {
+            TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
+            Date firstDate = new Date();
+            Calendar cal = new GregorianCalendar();
+            cal.setTime(firstDate);
+            long firstMillisInDay = cal.get(Calendar.HOUR_OF_DAY) * 3600000L +
+                cal.get(Calendar.MINUTE) * 60000L +
+                cal.get(Calendar.SECOND) * 1000L +
+                cal.get(Calendar.MILLISECOND);
+            
+            logln("Current time: " + firstDate.toString());
+
+            for (int validity=0; validity<30; validity++) {
+                Date lastDate = new Date(firstDate.getTime() +
+                                         (long)validity*1000*24*60*60);
+                cal.setTime(lastDate);
+                long millisInDay = cal.get(Calendar.HOUR_OF_DAY) * 3600000L +
+                    cal.get(Calendar.MINUTE) * 60000L +
+                    cal.get(Calendar.SECOND) * 1000L +
+                    cal.get(Calendar.MILLISECOND);
+                if (firstMillisInDay != millisInDay) 
+                    errln("Day has shifted " + lastDate);
+            }
+        }
+        finally {
+            TimeZone.setDefault(saveZone);
+        }
+    }
+
+    public void Test4086724() {
+        SimpleDateFormat date;
+        TimeZone saveZone = TimeZone.getDefault();
+        Locale saveLocale = Locale.getDefault();
+        try {
+            Locale.setDefault(Locale.UK); 
+            TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
+            date=new SimpleDateFormat("dd MMM yyy (zzzz) 'is in week' ww"); 
+            Calendar cal=Calendar.getInstance(); 
+            cal.set(1997,Calendar.SEPTEMBER,30); 
+            Date now=cal.getTime(); 
+            logln(date.format(now)); 
+            cal.set(1997,Calendar.JANUARY,1); 
+            now=cal.getTime(); 
+            logln(date.format(now)); 
+            cal.set(1997,Calendar.JANUARY,8); 
+            now=cal.getTime(); 
+            logln(date.format(now)); 
+            cal.set(1996,Calendar.DECEMBER,31); 
+            now=cal.getTime(); 
+            logln(date.format(now)); 
+        }
+        finally {
+            Locale.setDefault(saveLocale);
+            TimeZone.setDefault(saveZone);
+        }
+        logln("*** THE RESULTS OF THIS TEST MUST BE VERIFIED MANUALLY ***");
+    }
+
+    public void Test4092362() {
+        GregorianCalendar cal1 = new GregorianCalendar(1997, 10, 11, 10, 20, 40); 
+        /*cal1.set( Calendar.YEAR, 1997 ); 
+        cal1.set( Calendar.MONTH, 10 ); 
+        cal1.set( Calendar.DATE, 11 ); 
+        cal1.set( Calendar.HOUR, 10 ); 
+        cal1.set( Calendar.MINUTE, 20 ); 
+        cal1.set( Calendar.SECOND, 40 ); */
+
+        logln( " Cal1 = " + cal1.getTime().getTime() ); 
+        logln( " Cal1 time in ms = " + cal1.get(Calendar.MILLISECOND) ); 
+        for( int k = 0; k < 100 ; k++ ) {
+            System.out.print(""); 
+        }
+
+        GregorianCalendar cal2 = new GregorianCalendar(1997, 10, 11, 10, 20, 40); 
+        /*cal2.set( Calendar.YEAR, 1997 ); 
+        cal2.set( Calendar.MONTH, 10 ); 
+        cal2.set( Calendar.DATE, 11 ); 
+        cal2.set( Calendar.HOUR, 10 ); 
+        cal2.set( Calendar.MINUTE, 20 ); 
+        cal2.set( Calendar.SECOND, 40 ); */
+
+        logln( " Cal2 = " + cal2.getTime().getTime() ); 
+        logln( " Cal2 time in ms = " + cal2.get(Calendar.MILLISECOND) ); 
+        if( !cal1.equals( cal2 ) ) 
+            errln("Fail: Milliseconds randomized");
+    }
+
+    public void Test4095407() {
+        GregorianCalendar a = new GregorianCalendar(1997,Calendar.NOVEMBER, 13);
+        int dow = a.get(Calendar.DAY_OF_WEEK);
+        if (dow != Calendar.THURSDAY)
+            errln("Fail: Want THURSDAY Got " + dow);
+    }
+
+    public void Test4096231() {
+        TimeZone GMT = TimeZone.getTimeZone("GMT");
+        TimeZone PST = TimeZone.getTimeZone("PST");
+        int sec = 0, min = 0, hr = 0, day = 1, month = 10, year = 1997;
+                            
+        Calendar cal1 = new GregorianCalendar(PST);
+        cal1.setTime(new Date(880698639000L));
+        int p;
+        logln("PST 1 is: " + (p=cal1.get(cal1.HOUR_OF_DAY)));
+        cal1.setTimeZone(GMT);
+        // Issue 1: Changing the timezone doesn't change the
+        //          represented time.
+        int h1,h2;
+        logln("GMT 1 is: " + (h1=cal1.get(cal1.HOUR_OF_DAY)));
+        cal1.setTime(new Date(880698639000L));
+        logln("GMT 2 is: " + (h2=cal1.get(cal1.HOUR_OF_DAY)));
+        // Note: This test had a bug in it.  It wanted h1!=h2, when
+        // what was meant was h1!=p.  Fixed this concurrent with fix
+        // to 4177484.
+        if (p == h1 || h1 != h2)
+            errln("Fail: Hour same in different zones");
+
+        Calendar cal2 = new GregorianCalendar(GMT);
+        Calendar cal3 = new GregorianCalendar(PST);
+        cal2.set(Calendar.MILLISECOND, 0);
+        cal3.set(Calendar.MILLISECOND, 0);
+
+        cal2.set(cal1.get(cal1.YEAR),
+                 cal1.get(cal1.MONTH),
+                 cal1.get(cal1.DAY_OF_MONTH),
+                 cal1.get(cal1.HOUR_OF_DAY),
+                 cal1.get(cal1.MINUTE),
+                 cal1.get(cal1.SECOND));
+
+        long t1,t2,t3,t4;
+        logln("RGMT 1 is: " + (t1=cal2.getTime().getTime()));
+        cal3.set(year, month, day, hr, min, sec);
+        logln("RPST 1 is: " + (t2=cal3.getTime().getTime()));
+        cal3.setTimeZone(GMT);
+        logln("RGMT 2 is: " + (t3=cal3.getTime().getTime()));
+        cal3.set(cal1.get(cal1.YEAR),
+                 cal1.get(cal1.MONTH),
+                 cal1.get(cal1.DAY_OF_MONTH),
+                 cal1.get(cal1.HOUR_OF_DAY),
+                 cal1.get(cal1.MINUTE),
+                 cal1.get(cal1.SECOND));
+        // Issue 2: Calendar continues to use the timezone in its
+        //          constructor for set() conversions, regardless
+        //          of calls to setTimeZone()
+        logln("RGMT 3 is: " + (t4=cal3.getTime().getTime()));
+        if (t1 == t2 ||
+            t1 != t4 ||
+            t2 != t3)
+            errln("Fail: Calendar zone behavior faulty");
+    }
+
+    public void Test4096539() {
+        int[] y = {31,28,31,30,31,30,31,31,30,31,30,31};
+
+        for (int x=0;x<12;x++) {
+            GregorianCalendar gc = new 
+                GregorianCalendar(1997,x,y[x]);
+            int m1,m2;
+            log((m1=gc.get(Calendar.MONTH)+1)+"/"+
+                             gc.get(Calendar.DATE)+"/"+gc.get(Calendar.YEAR)+
+                             " + 1mo = ");
+
+            gc.add(Calendar.MONTH, 1);
+            logln((m2=gc.get(Calendar.MONTH)+1)+"/"+
+                               gc.get(Calendar.DATE)+"/"+gc.get(Calendar.YEAR)
+                               );
+            int m = (m1 % 12) + 1;
+            if (m2 != m)
+                errln("Fail: Want " + m + " Got " + m2);
+        }
+        
+    }
+
+    public void Test4100311() {
+        GregorianCalendar cal = (GregorianCalendar)Calendar.getInstance();
+        cal.set(Calendar.YEAR, 1997);
+        cal.set(Calendar.DAY_OF_YEAR, 1);
+        Date d = cal.getTime();             // Should be Jan 1
+        logln(d.toString());
+        if (cal.get(Calendar.DAY_OF_YEAR) != 1)
+            errln("Fail: DAY_OF_YEAR not set");
+    }
+
+    public void Test4103271() {
+        SimpleDateFormat sdf = new SimpleDateFormat(); 
+        int numYears=40, startYear=1997, numDays=15; 
+        String output, testDesc; 
+        GregorianCalendar testCal = (GregorianCalendar)Calendar.getInstance(); 
+        testCal.clear();
+        sdf.setCalendar(testCal); 
+        sdf.applyPattern("d MMM yyyy"); 
+        boolean fail = false;
+        for (int firstDay=1; firstDay<=2; firstDay++) { 
+            for (int minDays=1; minDays<=7; minDays++) { 
+                testCal.setMinimalDaysInFirstWeek(minDays); 
+                testCal.setFirstDayOfWeek(firstDay); 
+                testDesc = ("Test" + String.valueOf(firstDay) + String.valueOf(minDays)); 
+                logln(testDesc + " => 1st day of week=" +
+                                   String.valueOf(firstDay) +
+                                   ", minimum days in first week=" +
+                                   String.valueOf(minDays)); 
+                for (int j=startYear; j<=startYear+numYears; j++) { 
+                    testCal.set(j,11,25); 
+                    for(int i=0; i<numDays; i++) { 
+                        testCal.add(Calendar.DATE,1); 
+                        String calWOY; 
+                        int actWOY = testCal.get(Calendar.WEEK_OF_YEAR);
+                        if (actWOY < 1 || actWOY > 53) {
+                            Date d = testCal.getTime(); 
+                            calWOY = String.valueOf(actWOY); 
+                            output = testDesc + " - " + sdf.format(d) + "\t"; 
+                            output = output + "\t" + calWOY; 
+                            logln(output); 
+                            fail = true;
+                        }
+                    } 
+                } 
+            } 
+        } 
+
+        int[] DATA = {
+            3, 52, 52, 52, 52, 52, 52, 52,
+                1,  1,  1,  1,  1,  1,  1,
+                2,  2,  2,  2,  2,  2,  2,
+            4, 52, 52, 52, 52, 52, 52, 52,
+               53, 53, 53, 53, 53, 53, 53,
+                1,  1,  1,  1,  1,  1,  1,
+        };
+        testCal.setFirstDayOfWeek(Calendar.SUNDAY);
+        for (int j=0; j<DATA.length; j+=22) {
+            logln("Minimal days in first week = " + DATA[j] +
+                               "  Week starts on Sunday");
+            testCal.setMinimalDaysInFirstWeek(DATA[j]);
+            testCal.set(1997, Calendar.DECEMBER, 21);
+            for (int i=0; i<21; ++i) {
+                int woy = testCal.get(Calendar.WEEK_OF_YEAR);
+                log(testCal.getTime() + " " + woy);
+                if (woy != DATA[j + 1 + i]) {
+                    log(" ERROR");
+                    fail = true;
+                }
+                //logln();
+                
+                // Now compute the time from the fields, and make sure we
+                // get the same answer back.  This is a round-trip test.
+                Date save = testCal.getTime();
+                testCal.clear();
+                testCal.set(Calendar.YEAR, DATA[j+1+i] < 25 ? 1998 : 1997);
+                testCal.set(Calendar.WEEK_OF_YEAR, DATA[j+1+i]);
+                testCal.set(Calendar.DAY_OF_WEEK, (i%7) + Calendar.SUNDAY);
+                if (!testCal.getTime().equals(save)) {
+                    logln("  Parse failed: " + testCal.getTime());
+                    fail= true;
+                }
+
+                testCal.setTime(save);
+                testCal.add(Calendar.DAY_OF_MONTH, 1);
+            }
+        }
+
+        Date d[] = new Date[8];
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1997, Calendar.DECEMBER, 28);
+        d[0] = tempcal.getTime();
+        tempcal.set(1998, Calendar.JANUARY, 10);
+        d[1] = tempcal.getTime();
+        tempcal.set(1998, Calendar.DECEMBER, 31);
+        d[2] = tempcal.getTime();
+        tempcal.set(1999, Calendar.JANUARY, 1);
+        d[3] = tempcal.getTime();
+        // Test field disambiguation with a few special hard-coded cases.
+        // This shouldn't fail if the above cases aren't failing.
+        Object[] DISAM = {
+            new Integer(1998), new Integer(1), new Integer(Calendar.SUNDAY),
+                d[0],
+            new Integer(1998), new Integer(2), new Integer(Calendar.SATURDAY),
+                d[1],
+            new Integer(1998), new Integer(53), new Integer(Calendar.THURSDAY),
+                d[2],
+            new Integer(1998), new Integer(53), new Integer(Calendar.FRIDAY),
+                d[3],
+        };
+        testCal.setMinimalDaysInFirstWeek(3);
+        testCal.setFirstDayOfWeek(Calendar.SUNDAY);
+        for (int i=0; i<DISAM.length; i+=4) {
+            int y = ((Integer)DISAM[i]).intValue();
+            int woy = ((Integer)DISAM[i+1]).intValue();
+            int dow = ((Integer)DISAM[i+2]).intValue();
+            Date exp = (Date)DISAM[i+3];
+            testCal.clear();
+            testCal.set(Calendar.YEAR, y);
+            testCal.set(Calendar.WEEK_OF_YEAR, woy);
+            testCal.set(Calendar.DAY_OF_WEEK, dow);
+            log(y + "-W" + woy +
+                             "-DOW" + dow + " expect:" + exp +
+                             " got:" + testCal.getTime());
+            if (!testCal.getTime().equals(exp)) {
+                log("  FAIL");
+                fail = true;
+            }
+            //logln();
+        }
+
+        // Now try adding and rolling
+        Object ADD = new Object();
+        Object ROLL = new Object();
+        tempcal.set(1998, Calendar.DECEMBER, 25);
+        d[0] = tempcal.getTime();
+        tempcal.set(1999, Calendar.JANUARY, 1);
+        d[1] = tempcal.getTime();
+        tempcal.set(1997, Calendar.DECEMBER, 28);
+        d[2] = tempcal.getTime();
+        tempcal.set(1998, Calendar.JANUARY, 4);
+        d[3] = tempcal.getTime();
+        tempcal.set(1998, Calendar.DECEMBER, 27);
+        d[4] = tempcal.getTime();
+        tempcal.set(1997, Calendar.DECEMBER, 28);
+        d[5] = tempcal.getTime();
+        tempcal.set(1999, Calendar.JANUARY, 2);
+        d[6] = tempcal.getTime();
+        tempcal.set(1998, Calendar.JANUARY, 3);
+        d[7] = tempcal.getTime();
+        
+        Object[] ADDROLL = {
+            ADD, new Integer(1), d[0], d[1],
+            ADD, new Integer(1), d[2], d[3],
+            ROLL, new Integer(1), d[4], d[5],
+            ROLL, new Integer(1), d[6], d[7],
+        };
+        testCal.setMinimalDaysInFirstWeek(3);
+        testCal.setFirstDayOfWeek(Calendar.SUNDAY);
+        for (int i=0; i<ADDROLL.length; i+=4) {
+            int amount = ((Integer)ADDROLL[i+1]).intValue();
+            Date before = (Date)ADDROLL[i+2];
+            Date after = (Date)ADDROLL[i+3];
+
+            testCal.setTime(before);
+            if (ADDROLL[i] == ADD) testCal.add(Calendar.WEEK_OF_YEAR, amount);
+            else testCal.roll(Calendar.WEEK_OF_YEAR, amount);
+            log((ADDROLL[i]==ADD?"add(WOY,":"roll(WOY,") +
+                             amount + ") " + before + " => " +
+                             testCal.getTime());
+            if (!after.equals(testCal.getTime())) {
+                logln("  exp:" + after + "  FAIL");
+                fail = true;
+            }
+            else logln(" ok");
+
+            testCal.setTime(after);
+            if (ADDROLL[i] == ADD) testCal.add(Calendar.WEEK_OF_YEAR, -amount);
+            else testCal.roll(Calendar.WEEK_OF_YEAR, -amount);
+            log((ADDROLL[i]==ADD?"add(WOY,":"roll(WOY,") +
+                             (-amount) + ") " + after + " => " +
+                             testCal.getTime());
+            if (!before.equals(testCal.getTime())) {
+                logln("  exp:" + before + "  FAIL");
+                fail = true;
+            }
+            else logln(" ok");
+        }
+
+        if (fail) errln("Fail: Week of year misbehaving");
+    } 
+
+    public void Test4106136() {
+        Locale saveLocale = Locale.getDefault();
+        try {
+            Locale[] locales = { Locale.CHINESE, Locale.CHINA };
+            for (int i=0; i<locales.length; ++i) {
+                Locale.setDefault(locales[i]);
+                int[] n = {
+                    Calendar.getAvailableLocales().length,
+                    DateFormat.getAvailableLocales().length,
+                    NumberFormat.getAvailableLocales().length
+                };
+                for (int j=0; j<n.length; ++j) {
+                    if (n[j] == 0)
+                        errln("Fail: No locales for " + locales[i]);
+                }
+            }
+        }
+        finally {
+            Locale.setDefault(saveLocale);
+        }
+    }
+
+    public void Test4108764() {
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1997, Calendar.MARCH, 15, 12, 00, 00);
+        Date d00 = tempcal.getTime();
+        tempcal.set(1997, Calendar.MARCH, 15, 12, 00, 56);
+        Date d01 = tempcal.getTime();
+        tempcal.set(1997, Calendar.MARCH, 15, 12, 34, 00);
+        Date d10 = tempcal.getTime();
+        tempcal.set(1997, Calendar.MARCH, 15, 12, 34, 56);
+        Date d11 = tempcal.getTime();
+        tempcal.set(1997, Calendar.JANUARY, 15, 12, 34, 56);
+        Date dM  = tempcal.getTime();
+        tempcal.clear();
+        tempcal.set(1970, Calendar.JANUARY, 1);
+        Date epoch = tempcal.getTime();
+
+        Calendar cal = Calendar.getInstance(); 
+        cal.setTime(d11);
+
+        cal.clear( Calendar.MINUTE ); 
+        logln(cal.getTime().toString()); 
+        if (!cal.getTime().equals(d01)) {
+            errln("Fail: " + d11 + " clear(MINUTE) => expect " +
+                  d01 + ", got " + cal.getTime());
+        }
+
+        cal.set( Calendar.SECOND, 0 ); 
+        logln(cal.getTime().toString()); 
+        if (!cal.getTime().equals(d00))
+            errln("Fail: set(SECOND, 0) broken");
+
+        cal.setTime(d11);
+        cal.set( Calendar.SECOND, 0 ); 
+        logln(cal.getTime().toString()); 
+        if (!cal.getTime().equals(d10))
+            errln("Fail: set(SECOND, 0) broken #2");
+
+        cal.clear( Calendar.MINUTE ); 
+        logln(cal.getTime().toString()); 
+        if (!cal.getTime().equals(d00))
+            errln("Fail: clear(MINUTE) broken #2");
+
+        cal.clear();
+        logln(cal.getTime().toString());
+        if (!cal.getTime().equals(epoch))
+            errln("Fail: after clear() expect " + epoch + ", got " + cal.getTime());
+
+        cal.setTime(d11);
+        cal.clear( Calendar.MONTH ); 
+        logln(cal.getTime().toString()); 
+        if (!cal.getTime().equals(dM)) {
+            errln("Fail: " + d11 + " clear(MONTH) => expect " +
+                  dM + ", got " + cal.getTime());
+        }
+    }
+
+    public void Test4114578() {
+        int ONE_HOUR = 60*60*1000;
+        Calendar cal = Calendar.getInstance();
+        cal.setTimeZone(TimeZone.getTimeZone("PST"));
+        
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1998, Calendar.APRIL, 5, 1, 0);
+        long onset = tempcal.getTime().getTime() + ONE_HOUR;
+        tempcal.set(1998, Calendar.OCTOBER, 25, 0, 0);
+        long cease = tempcal.getTime().getTime() + 2*ONE_HOUR;
+
+        boolean fail = false;
+        
+        final int ADD = 1;
+        final int ROLL = 2;
+
+        long[] DATA = {
+            // Start            Action   Amt    Expected_change
+            onset - ONE_HOUR,   ADD,      1,     ONE_HOUR,
+            onset,              ADD,     -1,    -ONE_HOUR,
+            onset - ONE_HOUR,   ROLL,     1,     ONE_HOUR,
+            onset,              ROLL,    -1,    -ONE_HOUR,
+            cease - ONE_HOUR,   ADD,      1,     ONE_HOUR,
+            cease,              ADD,     -1,    -ONE_HOUR,
+            cease - ONE_HOUR,   ROLL,     1,     ONE_HOUR,
+            cease,              ROLL,    -1,    -ONE_HOUR,
+        };
+
+        for (int i=0; i<DATA.length; i+=4) {
+            Date date = new Date(DATA[i]);
+            int amt = (int) DATA[i+2];
+            long expectedChange = DATA[i+3];
+            
+            log(date.toString());
+            cal.setTime(date);
+
+            switch ((int) DATA[i+1]) {
+            case ADD:
+                log(" add (HOUR," + (amt<0?"":"+")+amt + ")= ");
+                cal.add(Calendar.HOUR, amt);
+                break;
+            case ROLL:
+                log(" roll(HOUR," + (amt<0?"":"+")+amt + ")= ");
+                cal.roll(Calendar.HOUR, amt);
+                break;
+            }
+
+            log(cal.getTime().toString());
+
+            long change = cal.getTime().getTime() - date.getTime();
+            if (change != expectedChange) {
+                fail = true;
+                logln(" FAIL");
+            }
+            else logln(" OK");
+        }
+
+        if (fail) errln("Fail: roll/add misbehaves around DST onset/cease");
+    }
+
+    /**
+     * Make sure maximum for HOUR field is 11, not 12.
+     */
+    public void Test4118384() {
+        Calendar cal = Calendar.getInstance();
+        if (cal.getMaximum(Calendar.HOUR) != 11 ||
+            cal.getLeastMaximum(Calendar.HOUR) != 11 ||
+            cal.getActualMaximum(Calendar.HOUR) != 11)
+            errln("Fail: maximum of HOUR field should be 11");
+    }
+
+    /**
+     * Check isLeapYear for BC years.
+     */
+    public void Test4125881() {
+        GregorianCalendar cal = (GregorianCalendar) Calendar.getInstance();
+        DateFormat fmt = new SimpleDateFormat("MMMM d, yyyy G");
+        cal.clear();
+        for (int y=-20; y<=10; ++y) {
+            cal.set(Calendar.ERA, y < 1 ? GregorianCalendar.BC : GregorianCalendar.AD);
+            cal.set(Calendar.YEAR, y < 1 ? 1 - y : y);
+            logln(y + " = " + fmt.format(cal.getTime()) + " " +
+                               cal.isLeapYear(y));
+            if (cal.isLeapYear(y) != ((y+40)%4 == 0))
+                errln("Leap years broken");
+        }
+    }
+
+    // I am disabling this test -- it is currently failing because of a bug
+    // in Sun's latest change to STZ.getOffset().  I have filed a Sun bug
+    // against this problem.
+
+    // Re-enabled after 'porting' TZ and STZ from java.util to com.ibm.icu.util.
+    /**
+     * Prove that GregorianCalendar is proleptic (it used to cut off
+     * at 45 BC, and not have leap years before then).
+     */
+    public void Test4125892() {
+        GregorianCalendar cal = (GregorianCalendar) Calendar.getInstance();
+        DateFormat fmt = new SimpleDateFormat("MMMM d, yyyy G");
+        fmt = null;
+        cal.clear();
+        cal.set(Calendar.ERA, GregorianCalendar.BC);
+        cal.set(Calendar.YEAR, 81); // 81 BC is a leap year (proleptically)
+        cal.set(Calendar.MONTH, Calendar.FEBRUARY);
+        cal.set(Calendar.DATE, 28);
+        cal.add(Calendar.DATE, 1);
+        if (cal.get(Calendar.DATE) != 29 ||
+            !cal.isLeapYear(-80)) // -80 == 81 BC
+            errln("Calendar not proleptic");
+    }
+
+    /**
+     * Calendar and GregorianCalendar hashCode() methods need improvement.
+     * Calendar needs a good implementation that subclasses can override,
+     * and GregorianCalendar should use that implementation.
+     */
+    public void Test4136399() {
+        /* Note: This test is actually more strict than it has to be.
+         * Technically, there is no requirement that unequal objects have
+         * unequal hashes.  We only require equal objects to have equal hashes.
+         * It is desirable for unequal objects to have distributed hashes, but
+         * there is no hard requirement here.
+         *
+         * In this test we make assumptions about certain attributes of calendar
+         * objects getting represented in the hash, which need not always be the
+         * case (although it does work currently with the given test). */
+        Calendar a = Calendar.getInstance();
+        Calendar b = (Calendar)a.clone();
+        if (a.hashCode() != b.hashCode()) {
+            errln("Calendar hash code unequal for cloned objects");
+        }
+
+        b.setMinimalDaysInFirstWeek(7 - a.getMinimalDaysInFirstWeek());
+        if (a.hashCode() == b.hashCode()) {
+            errln("Calendar hash code ignores minimal days in first week");
+        }
+        b.setMinimalDaysInFirstWeek(a.getMinimalDaysInFirstWeek());
+
+        b.setFirstDayOfWeek((a.getFirstDayOfWeek() % 7) + 1); // Next day
+        if (a.hashCode() == b.hashCode()) {
+            errln("Calendar hash code ignores first day of week");
+        }
+        b.setFirstDayOfWeek(a.getFirstDayOfWeek());
+
+        b.setLenient(!a.isLenient());
+        if (a.hashCode() == b.hashCode()) {
+            errln("Calendar hash code ignores lenient setting");
+        }
+        b.setLenient(a.isLenient());
+        
+        // Assume getTimeZone() returns a reference, not a clone
+        // of a reference -- this is true as of this writing
+        b.getTimeZone().setRawOffset(a.getTimeZone().getRawOffset() + 60*60*1000);
+        if (a.hashCode() == b.hashCode()) {
+            errln("Calendar hash code ignores zone");
+        }
+        b.getTimeZone().setRawOffset(a.getTimeZone().getRawOffset());
+
+        GregorianCalendar c = new GregorianCalendar();
+        GregorianCalendar d = (GregorianCalendar)c.clone();
+        if (c.hashCode() != d.hashCode()) {
+            errln("GregorianCalendar hash code unequal for clones objects");
+        }
+        Date cutover = c.getGregorianChange();
+        d.setGregorianChange(new Date(cutover.getTime() + 24*60*60*1000));
+        if (c.hashCode() == d.hashCode()) {
+            errln("GregorianCalendar hash code ignores cutover");
+        }        
+    }
+
+    /**
+     * GregorianCalendar.equals() ignores cutover date
+     */
+    public void Test4141665() {
+        GregorianCalendar cal = new GregorianCalendar();
+        GregorianCalendar cal2 = (GregorianCalendar)cal.clone();
+        Date cut = cal.getGregorianChange();
+        Date cut2 = new Date(cut.getTime() + 100*24*60*60*1000L); // 100 days later
+        if (!cal.equals(cal2)) {
+            errln("Cloned GregorianCalendars not equal");
+        }
+        cal2.setGregorianChange(cut2);
+        if (cal.equals(cal2)) {
+            errln("GregorianCalendar.equals() ignores cutover");
+        }
+    }
+    
+    /**
+     * Bug states that ArrayIndexOutOfBoundsException is thrown by GregorianCalendar.roll()
+     * when IllegalArgumentException should be.
+     */
+    public void Test4142933() {
+        GregorianCalendar calendar = new GregorianCalendar();
+        try {
+            calendar.roll(-1, true);
+            errln("Test failed, no exception trown");
+        }
+        catch (IllegalArgumentException e) {
+            // OK: Do nothing
+            // logln("Test passed");
+            System.out.print("");
+        }
+        catch (Exception e) {
+            errln("Test failed. Unexpected exception is thrown: " + e);
+            e.printStackTrace();
+        } 
+    }
+
+    /**
+     * GregorianCalendar handling of Dates Long.MIN_VALUE and Long.MAX_VALUE is
+     * confusing; unless the time zone has a raw offset of zero, one or the
+     * other of these will wrap.  We've modified the test given in the bug
+     * report to therefore only check the behavior of a calendar with a zero raw
+     * offset zone.
+     */
+    public void Test4145158() {
+        GregorianCalendar calendar = new GregorianCalendar();
+
+        calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
+
+        calendar.setTime(new Date(Long.MIN_VALUE));
+        int year1 = calendar.get(Calendar.YEAR);
+        int era1 = calendar.get(Calendar.ERA);
+        
+        calendar.setTime(new Date(Long.MAX_VALUE));
+        int year2 = calendar.get(Calendar.YEAR);
+        int era2 = calendar.get(Calendar.ERA);
+        
+        if (year1 == year2 && era1 == era2) {
+            errln("Fail: Long.MIN_VALUE or Long.MAX_VALUE wrapping around");
+        }
+    }
+
+    /**
+     * Maximum value for YEAR field wrong.
+     */
+    public void Test4145983() {
+        GregorianCalendar calendar = new GregorianCalendar();
+        calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
+        Date[] DATES = { new Date(Long.MAX_VALUE), new Date(Long.MIN_VALUE) };
+        for (int i=0; i<DATES.length; ++i) {
+            calendar.setTime(DATES[i]);
+            int year = calendar.get(Calendar.YEAR);
+            int maxYear = calendar.getMaximum(Calendar.YEAR);
+            if (year > maxYear) {
+                errln("Failed for "+DATES[i].getTime()+" ms: year=" +
+                      year + ", maxYear=" + maxYear);
+            }
+        }
+    }
+
+    /**
+     * This is a bug in the validation code of GregorianCalendar.  As reported,
+     * the bug seems worse than it really is, due to a bug in the way the bug
+     * report test was written.  In reality the bug is restricted to the DAY_OF_YEAR
+     * field. - liu 6/29/98
+     */
+    public void Test4147269() {
+        GregorianCalendar calendar = new GregorianCalendar();
+        calendar.setLenient(false);
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1996, Calendar.JANUARY, 3); // Arbitrary date
+        Date date = tempcal.getTime(); 
+        for (int field = 0; field < calendar.getFieldCount(); field++) {
+            calendar.setTime(date);
+            // Note: In the bug report, getActualMaximum() was called instead
+            // of getMaximum() -- this was an error.  The validation code doesn't
+            // use getActualMaximum(), since that's too costly.
+            int max = calendar.getMaximum(field);
+            int value = max+1;
+            calendar.set(field, value); 
+            try {
+                calendar.getTime(); // Force time computation
+                // We expect an exception to be thrown. If we fall through
+                // to the next line, then we have a bug.
+                errln("Test failed with field " + FIELD_NAME[field] +
+                      ", date before: " + date +
+                      ", date after: " + calendar.getTime() +
+                      ", value: " + value + " (max = " + max +")");
+            } catch (IllegalArgumentException e) {
+                System.out.print("");
+            } 
+        }
+    }
+
+    /**
+     * Reported bug is that a GregorianCalendar with a cutover of Date(Long.MAX_VALUE)
+     * doesn't behave as a pure Julian calendar.
+     * CANNOT REPRODUCE THIS BUG
+     */
+    public void Test4149677() {
+        TimeZone[] zones = { TimeZone.getTimeZone("GMT"),
+                             TimeZone.getTimeZone("PST"),
+                             TimeZone.getTimeZone("EAT") };
+        for (int i=0; i<zones.length; ++i) {
+            GregorianCalendar calendar = new GregorianCalendar(zones[i]);
+
+            // Make sure extreme values don't wrap around
+            calendar.setTime(new Date(Long.MIN_VALUE));
+            if (calendar.get(Calendar.ERA) != GregorianCalendar.BC) {
+                errln("Fail: Long.MIN_VALUE ms has an AD year");
+            }
+            calendar.setTime(new Date(Long.MAX_VALUE));
+            if (calendar.get(Calendar.ERA) != GregorianCalendar.AD) {
+                errln("Fail: Long.MAX_VALUE ms has a BC year");
+            }
+
+            calendar.setGregorianChange(new Date(Long.MAX_VALUE));
+            // to obtain a pure Julian calendar
+            
+            boolean is100Leap = calendar.isLeapYear(100);
+            if (!is100Leap) {
+                errln("test failed with zone " + zones[i].getID());
+                errln(" cutover date is Calendar.MAX_DATE");
+                errln(" isLeapYear(100) returns: " + is100Leap);
+            }
+        }
+    }
+
+    /**
+     * Calendar and Date HOUR broken.  If HOUR is out-of-range, Calendar
+     * and Date classes will misbehave.
+     */
+    public void Test4162587() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        TimeZone.setDefault(tz);
+        GregorianCalendar cal = new GregorianCalendar(tz);
+        Date d;
+        
+        for (int i=0; i<5; ++i) {
+            if (i>0) logln("---");
+
+            cal.clear();
+            cal.set(1998, Calendar.APRIL, 5, i, 0);
+            d = cal.getTime();
+            String s0 = d.toString();
+            logln("0 " + i + ": " + s0);
+
+            cal.clear();
+            cal.set(1998, Calendar.APRIL, 4, i+24, 0);
+            d = cal.getTime();
+            String sPlus = d.toString();
+            logln("+ " + i + ": " + sPlus);
+
+            cal.clear();
+            cal.set(1998, Calendar.APRIL, 6, i-24, 0);
+            d = cal.getTime();
+            String sMinus = d.toString();
+            logln("- " + i + ": " + sMinus);
+
+            if (!s0.equals(sPlus) || !s0.equals(sMinus)) {
+                errln("Fail: All three lines must match");
+            }
+        }
+    }
+
+    /**
+     * Adding 12 months behaves differently from adding 1 year
+     */
+    public void Test4165343() {
+        GregorianCalendar calendar = new GregorianCalendar(1996, Calendar.FEBRUARY, 29);
+        Date start = calendar.getTime();
+        logln("init date: " + start);
+        calendar.add(Calendar.MONTH, 12); 
+        Date date1 = calendar.getTime();
+        logln("after adding 12 months: " + date1);
+        calendar.setTime(start);
+        calendar.add(Calendar.YEAR, 1);
+        Date date2 = calendar.getTime();
+        logln("after adding one year : " + date2);
+        if (date1.equals(date2)) {
+            logln("Test passed");
+        } else {
+            errln("Test failed");
+        }
+    }
+
+    /**
+     * GregorianCalendar.getActualMaximum() does not account for first day of week.
+     */
+    public void Test4166109() {
+        /* Test month:
+         *
+         *      March 1998
+         * Su Mo Tu We Th Fr Sa
+         *  1  2  3  4  5  6  7
+         *  8  9 10 11 12 13 14
+         * 15 16 17 18 19 20 21
+         * 22 23 24 25 26 27 28
+         * 29 30 31
+         */
+        boolean passed = true;
+        int field = Calendar.WEEK_OF_MONTH;
+
+        GregorianCalendar calendar = new GregorianCalendar(Locale.US);
+        calendar.set(1998, Calendar.MARCH, 1);
+        calendar.setMinimalDaysInFirstWeek(1);
+        logln("Date:  " + calendar.getTime());
+
+        int firstInMonth = calendar.get(Calendar.DAY_OF_MONTH);
+
+        for (int firstInWeek = Calendar.SUNDAY; firstInWeek <= Calendar.SATURDAY; firstInWeek++) {
+            calendar.setFirstDayOfWeek(firstInWeek);
+            int returned = calendar.getActualMaximum(field);
+            int expected = (31 + ((firstInMonth - firstInWeek + 7)% 7) + 6) / 7;
+
+            logln("First day of week = " + firstInWeek +
+                  "  getActualMaximum(WEEK_OF_MONTH) = " + returned +
+                  "  expected = " + expected +
+                  ((returned == expected) ? "  ok" : "  FAIL"));
+
+            if (returned != expected) {
+                passed = false;
+            }
+        }
+        if (!passed) {
+            errln("Test failed");
+        }
+    }
+
+    /**
+     * Calendar.getActualMaximum(YEAR) works wrong.
+     */
+    public void Test4167060() {
+        int field = Calendar.YEAR;
+        DateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy G",
+                                                 Locale.US);
+
+        GregorianCalendar calendars[] = {
+            new GregorianCalendar(100, Calendar.NOVEMBER, 1),
+            new GregorianCalendar(-99 /*100BC*/, Calendar.JANUARY, 1),
+            new GregorianCalendar(1996, Calendar.FEBRUARY, 29),
+        };
+
+        String[] id = { "Hybrid", "Gregorian", "Julian" };
+
+        for (int k=0; k<3; ++k) {
+            logln("--- " + id[k] + " ---");
+
+            for (int j=0; j<calendars.length; ++j) {
+                GregorianCalendar calendar = calendars[j];
+                if (k == 1) {
+                    calendar.setGregorianChange(new Date(Long.MIN_VALUE));
+                } else if (k == 2) {
+                    calendar.setGregorianChange(new Date(Long.MAX_VALUE));
+                }
+
+                format.setCalendar((Calendar)calendar.clone());
+
+                Date dateBefore = calendar.getTime();
+
+                int maxYear = calendar.getActualMaximum(field);
+                logln("maxYear: " + maxYear + " for " + format.format(calendar.getTime()));
+                logln("date before: " + format.format(dateBefore));
+
+                int years[] = {2000, maxYear-1, maxYear, maxYear+1};
+
+                for (int i = 0; i < years.length; i++) {
+                    boolean valid = years[i] <= maxYear;
+                    calendar.set(field, years[i]);
+                    Date dateAfter = calendar.getTime();
+                    int newYear = calendar.get(field);
+                    calendar.setTime(dateBefore); // restore calendar for next use
+
+                    logln(" Year " + years[i] + (valid? " ok " : " bad") +
+                          " => " + format.format(dateAfter));
+                    if (valid && newYear != years[i]) {
+                        errln("  FAIL: " + newYear + " should be valid; date, month and time shouldn't change");
+                    } else if (!valid && newYear == years[i]) {
+                        // We no longer require strict year maxima.  That is, the calendar
+                        // algorithm may work for values > the stated maximum.
+                        //errln("  FAIL: " + newYear + " should be invalid");
+                        logln("  Note: " + newYear + " > maximum, but still valid");
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Calendar.roll broken
+     * This bug relies on the TimeZone bug 4173604 to also be fixed.
+     */
+    public void Test4173516() {
+        int fieldsList[][] = {
+            { 1997, Calendar.FEBRUARY,  1, 10, 45, 15, 900 },
+            { 1999, Calendar.DECEMBER, 22, 23, 59, 59, 999 }
+        };
+        int limit = 40;
+        GregorianCalendar cal = new GregorianCalendar();
+
+        cal.setTime(new Date(0));
+        cal.roll(Calendar.HOUR,  0x7F000000);
+        cal.roll(Calendar.HOUR, -0x7F000000);
+        if (cal.getTime().getTime() != 0) {
+            errln("Hour rolling broken");
+        }
+
+        for (int op=0; op<2; ++op) {
+            logln("Testing GregorianCalendar " +
+                  (op==0 ? "add" : "roll"));
+            for (int field=0; field < cal.getFieldCount(); ++field) {
+                if (field != Calendar.ZONE_OFFSET &&
+                    field != Calendar.DST_OFFSET) {
+                    for (int j=0; j<fieldsList.length; ++j) {
+                        int fields[] = fieldsList[j];
+                        cal.clear();
+                        cal.set(fields[0], fields[1], fields[2],
+                                fields[3], fields[4], fields[5]);
+                        cal.set(Calendar.MILLISECOND, fields[6]);
+                        for (int i = 0; i < 2*limit; i++) {
+                            if (op == 0) {
+                                cal.add(field, i < limit ? 1 : -1);
+                            } else {
+                                cal.roll(field, i < limit ? 1 : -1);
+                            }
+                        }
+                        if (cal.get(Calendar.YEAR) != fields[0] ||
+                            cal.get(Calendar.MONTH) != fields[1] ||
+                            cal.get(Calendar.DATE) != fields[2] ||
+                            cal.get(Calendar.HOUR_OF_DAY) != fields[3] ||
+                            cal.get(Calendar.MINUTE) != fields[4] ||
+                            cal.get(Calendar.SECOND) != fields[5] ||
+                            cal.get(Calendar.MILLISECOND) != fields[6]) {
+                            errln("Field " + field +
+                                  " (" + FIELD_NAME[field] +
+                                  ") FAIL, expected " +
+                                  fields[0] +
+                                  "/" + (fields[1] + 1) +
+                                  "/" + fields[2] +
+                                  " " + fields[3] +
+                                  ":" + fields[4] +
+                                  ":" + fields[5] +
+                                  "." + fields[6] +
+                                  ", got " + cal.get(Calendar.YEAR) +
+                                  "/" + (cal.get(Calendar.MONTH) + 1) +
+                                  "/" + cal.get(Calendar.DATE) +
+                                  " " + cal.get(Calendar.HOUR_OF_DAY) +
+                                  ":" + cal.get(Calendar.MINUTE) +
+                                  ":" + cal.get(Calendar.SECOND) +
+                                  "." + cal.get(Calendar.MILLISECOND));
+                            cal.clear();
+                            cal.set(fields[0], fields[1], fields[2],
+                                    fields[3], fields[4], fields[5]);
+                            cal.set(Calendar.MILLISECOND, fields[6]);
+                            logln("Start date: " + cal.get(Calendar.YEAR) +
+                                  "/" + (cal.get(Calendar.MONTH) + 1) +
+                                  "/" + cal.get(Calendar.DATE) +
+                                  " " + cal.get(Calendar.HOUR_OF_DAY) +
+                                  ":" + cal.get(Calendar.MINUTE) +
+                                  ":" + cal.get(Calendar.SECOND) +
+                                  "." + cal.get(Calendar.MILLISECOND));
+                            long prev = cal.getTime().getTime();
+                            for (int i = 0; i < 2*limit; i++) {
+                                if (op == 0) {
+                                    cal.add(field, i < limit ? 1 : -1);
+                                } else {
+                                    cal.roll(field, i < limit ? 1 : -1);
+                                }
+                                long t = cal.getTime().getTime();
+                                long delta = t - prev;
+                                prev = t;
+                                logln((op == 0 ? "add(" : "roll(") + FIELD_NAME[field] +
+                                      (i < limit ? ", +1) => " : ", -1) => ") +
+                                      cal.get(Calendar.YEAR) +
+                                      "/" + (cal.get(Calendar.MONTH) + 1) +
+                                      "/" + cal.get(Calendar.DATE) +
+                                      " " + cal.get(Calendar.HOUR_OF_DAY) +
+                                      ":" + cal.get(Calendar.MINUTE) +
+                                      ":" + cal.get(Calendar.SECOND) +
+                                      "." + cal.get(Calendar.MILLISECOND) +
+                                      " delta=" + delta + " ms");
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    public void Test4174361() {
+        GregorianCalendar calendar = new GregorianCalendar(1996, 1, 29);
+
+        calendar.add(Calendar.MONTH, 10); 
+        Date date1 = calendar.getTime();
+        date1 = null;
+        int d1 = calendar.get(Calendar.DAY_OF_MONTH);
+
+        calendar = new GregorianCalendar(1996, 1, 29);
+        calendar.add(Calendar.MONTH, 11); 
+        Date date2 = calendar.getTime();
+        date2 = null;
+        int d2 = calendar.get(Calendar.DAY_OF_MONTH);
+
+        if (d1 != d2) {
+            errln("adding months to Feb 29 broken");
+        }
+    }
+
+    /**
+     * Calendar does not update field values when setTimeZone is called.
+     */
+    public void Test4177484() {
+        TimeZone PST = TimeZone.getTimeZone("PST");
+        TimeZone EST = TimeZone.getTimeZone("EST");
+
+        Calendar cal = Calendar.getInstance(PST, Locale.US);
+        cal.clear();
+        cal.set(1999, 3, 21, 15, 5, 0); // Arbitrary
+        int h1 = cal.get(Calendar.HOUR_OF_DAY);
+        cal.setTimeZone(EST);
+        int h2 = cal.get(Calendar.HOUR_OF_DAY);
+        if (h1 == h2) {
+            errln("FAIL: Fields not updated after setTimeZone");
+        }
+
+        // getTime() must NOT change when time zone is changed.
+        // getTime() returns zone-independent time in ms.
+        cal.clear();
+        cal.setTimeZone(PST);
+        cal.set(Calendar.HOUR_OF_DAY, 10);
+        Date pst10 = cal.getTime();
+        cal.setTimeZone(EST);
+        Date est10 = cal.getTime();
+        if (!pst10.equals(est10)) {
+            errln("FAIL: setTimeZone changed time");
+        }
+    }
+
+    /**
+     * Week of year is wrong at the start and end of the year.
+     */
+    public void Test4197699() {
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.setFirstDayOfWeek(Calendar.MONDAY);
+        cal.setMinimalDaysInFirstWeek(4);
+        DateFormat fmt = new SimpleDateFormat("E dd MMM yyyy  'DOY='D 'WOY='w");
+        fmt.setCalendar(cal);
+
+        int[] DATA = {
+            2000,  Calendar.JANUARY,   1,   52,
+            2001,  Calendar.DECEMBER,  31,  1,
+        };
+
+        for (int i=0; i<DATA.length; ) {
+            cal.set(DATA[i++], DATA[i++], DATA[i++]);
+            int expWOY = DATA[i++];
+            int actWOY = cal.get(Calendar.WEEK_OF_YEAR);
+            if (expWOY == actWOY) {
+                logln("Ok: " + fmt.format(cal.getTime()));
+            } else {
+                errln("FAIL: " + fmt.format(cal.getTime())
+                      + ", expected WOY=" + expWOY);
+                cal.add(Calendar.DATE, -8);
+                for (int j=0; j<14; ++j) {
+                    cal.add(Calendar.DATE, 1);
+                    logln(fmt.format(cal.getTime()));
+                }
+            }
+        }
+    }
+
+    /**
+     * Calendar DAY_OF_WEEK_IN_MONTH fields->time broken.  The problem
+     * is in the field disambiguation code in GregorianCalendar.  This
+     * code is supposed to choose the most recent set of fields
+     * among the following:
+     *
+     *   MONTH + DAY_OF_MONTH
+     *   MONTH + WEEK_OF_MONTH + DAY_OF_WEEK
+     *   MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK
+     *   DAY_OF_YEAR
+     *   WEEK_OF_YEAR + DAY_OF_WEEK
+     */
+    public void Test4209071() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+
+        // General field setting test
+        int Y = 1995;
+        
+        Date d[] = new Date[13];
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(Y, Calendar.JANUARY, 1);
+        d[0] = tempcal.getTime();
+        tempcal.set(Y, Calendar.MARCH, 1);
+        d[1] = tempcal.getTime();
+        tempcal.set(Y, Calendar.JANUARY, 4);
+        d[2] = tempcal.getTime();
+        tempcal.set(Y, Calendar.JANUARY, 18);
+        d[3] = tempcal.getTime();
+        tempcal.set(Y, Calendar.JANUARY, 18);
+        d[4] = tempcal.getTime();
+        tempcal.set(Y-1, Calendar.DECEMBER, 22);
+        d[5] = tempcal.getTime();
+        tempcal.set(Y, Calendar.JANUARY, 26);
+        d[6] = tempcal.getTime();
+        tempcal.set(Y, Calendar.JANUARY, 26);
+        d[7] = tempcal.getTime();
+        tempcal.set(Y, Calendar.MARCH, 1);
+        d[8] = tempcal.getTime();
+        tempcal.set(Y, Calendar.OCTOBER, 6);
+        d[9] = tempcal.getTime();
+        tempcal.set(Y, Calendar.OCTOBER, 13);
+        d[10] = tempcal.getTime();
+        tempcal.set(Y, Calendar.AUGUST, 10);
+        d[11] = tempcal.getTime();
+        tempcal.set(Y, Calendar.DECEMBER, 7);
+        d[12] = tempcal.getTime();
+
+        Object[] FIELD_DATA = {
+            // Add new test cases as needed.
+
+            // 0
+            new int[] {}, d[0],
+            // 1
+            new int[] { Calendar.MONTH, Calendar.MARCH }, d[1],
+            // 2
+            new int[] { Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY }, d[2],
+            // 3
+            new int[] { Calendar.DAY_OF_WEEK, Calendar.THURSDAY,
+                        Calendar.DAY_OF_MONTH, 18, }, d[3],
+            // 4
+            new int[] { Calendar.DAY_OF_MONTH, 18,
+                        Calendar.DAY_OF_WEEK, Calendar.THURSDAY, }, d[4],
+            // 5  (WOM -1 is in previous month)
+            new int[] { Calendar.DAY_OF_MONTH, 18,
+                        Calendar.WEEK_OF_MONTH, -1,
+                        Calendar.DAY_OF_WEEK, Calendar.THURSDAY, }, d[5],
+            // 6
+            new int[] { Calendar.DAY_OF_MONTH, 18,
+                        Calendar.WEEK_OF_MONTH, 4,
+                        Calendar.DAY_OF_WEEK, Calendar.THURSDAY, }, d[6],
+            // 7  (DIM -1 is in same month)
+            new int[] { Calendar.DAY_OF_MONTH, 18,
+                        Calendar.DAY_OF_WEEK_IN_MONTH, -1,
+                        Calendar.DAY_OF_WEEK, Calendar.THURSDAY, }, d[7],
+            // 8
+            new int[] { Calendar.WEEK_OF_YEAR, 9,
+                        Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY, }, d[8],
+            // 9
+            new int[] { Calendar.MONTH, Calendar.OCTOBER,
+                        Calendar.DAY_OF_WEEK_IN_MONTH, 1,
+                        Calendar.DAY_OF_WEEK, Calendar.FRIDAY, }, d[9],
+            // 10
+            new int[] { Calendar.MONTH, Calendar.OCTOBER,
+                        Calendar.WEEK_OF_MONTH, 2,
+                        Calendar.DAY_OF_WEEK, Calendar.FRIDAY, }, d[10],
+            // 11
+            new int[] { Calendar.MONTH, Calendar.OCTOBER,
+                        Calendar.DAY_OF_MONTH, 15,
+                        Calendar.DAY_OF_YEAR, 222, }, d[11],
+            // 12
+            new int[] { Calendar.DAY_OF_WEEK, Calendar.THURSDAY,
+                        Calendar.MONTH, Calendar.DECEMBER, }, d[12],
+        };
+
+        for (int i=0; i<FIELD_DATA.length; i+=2) {
+            int[] fields = (int[]) FIELD_DATA[i];
+            Date exp = (Date) FIELD_DATA[i+1];
+            
+            cal.clear();
+            cal.set(Calendar.YEAR, Y);
+            for (int j=0; j<fields.length; j+=2) {
+                cal.set(fields[j], fields[j+1]);
+            }
+            
+            Date act = cal.getTime();
+            if (!act.equals(exp)) {
+                errln("FAIL: Test " + (i/2) + " got " + act +
+                      ", want " + exp +
+                      " (see test/java/util/Calendar/CalendarRegression.java");
+            }
+        }
+
+        tempcal.set(1997, Calendar.JANUARY, 5);
+        d[0] = tempcal.getTime();
+        tempcal.set(1997, Calendar.JANUARY, 26);
+        d[1] = tempcal.getTime();
+        tempcal.set(1997, Calendar.FEBRUARY, 23);
+        d[2] = tempcal.getTime();
+        tempcal.set(1997, Calendar.JANUARY, 26);
+        d[3] = tempcal.getTime();
+        tempcal.set(1997, Calendar.JANUARY, 5);
+        d[4] = tempcal.getTime();
+        tempcal.set(1996, Calendar.DECEMBER, 8);
+        d[5] = tempcal.getTime();
+        // Test specific failure reported in bug
+        Object[] DATA = { 
+            new Integer(1), d[0], new Integer(4), d[1],
+            new Integer(8), d[2], new Integer(-1), d[3],
+            new Integer(-4), d[4], new Integer(-8), d[5],
+        };
+        for (int i=0; i<DATA.length; i+=2) {
+            cal.clear();
+            cal.set(Calendar.DAY_OF_WEEK_IN_MONTH,
+                    ((Number) DATA[i]).intValue());
+            cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
+            cal.set(Calendar.MONTH, Calendar.JANUARY);
+            cal.set(Calendar.YEAR, 1997);
+            Date actual = cal.getTime();
+            if (!actual.equals(DATA[i+1])) {
+                errln("FAIL: Sunday " + DATA[i] +
+                      " of Jan 1997 -> " + actual +
+                      ", want " + DATA[i+1]);
+            }
+        }
+    }
+
+    /**
+     * WEEK_OF_YEAR computed incorrectly.  A failure of this test can indicate
+     * a problem in several different places in the 
+     */
+    public void Test4288792() throws Exception 
+    {
+	TimeZone savedTZ = TimeZone.getDefault();
+	TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
+	GregorianCalendar cal = new GregorianCalendar();
+        
+	for (int i = 1900; i < 2100; i++) {
+	    for (int j1 = 1; j1 <= 7; j1++) {
+		// Loop for MinimalDaysInFirstWeek: 1..7
+		for (int j = Calendar.SUNDAY; j <= Calendar.SATURDAY; j++) {
+		    // Loop for FirstDayOfWeek: SUNDAY..SATURDAY
+		    cal.clear();
+		    cal.setMinimalDaysInFirstWeek(j1);
+		    cal.setFirstDayOfWeek(j);
+                    // Set the calendar to the first day of the last week
+                    // of the year.  This may overlap some of the start of
+                    // the next year; that is, the last week of 1999 may
+                    // include some of January 2000.  Use the add() method
+                    // to advance through the week.  For each day, call
+                    // get(WEEK_OF_YEAR).  The result should be the same
+                    // for the whole week.  Note that a bug in
+                    // getActualMaximum() will break this test.
+		    cal.set(Calendar.YEAR, i);
+		    int maxWeek = cal.getActualMaximum(Calendar.WEEK_OF_YEAR);
+		    cal.set(Calendar.WEEK_OF_YEAR, maxWeek);
+		    cal.set(Calendar.DAY_OF_WEEK, j);
+		    for (int k = 1; k < 7; k++) {
+			cal.add(Calendar.DATE, 1);
+			int WOY = cal.get(Calendar.WEEK_OF_YEAR);
+			if (WOY != maxWeek) {
+			    errln(cal.getTime() + ",got=" + WOY
+				  + ",expected=" + maxWeek 
+				  + ",min=" + j1 + ",first=" + j);
+			}
+		    }
+                    // Now advance the calendar one more day.  This should
+                    // put it at the first day of week 1 of the next year.
+		    cal.add(Calendar.DATE, 1);
+		    int WOY = cal.get(Calendar.WEEK_OF_YEAR);
+		    if (WOY != 1) {
+			errln(cal.getTime() + ",got=" + WOY 
+			      + ",expected=1,min=" + j1 + ",first" + j);
+		    }
+		}
+	    }
+	}
+	TimeZone.setDefault(savedTZ);
+    }
+
+    /**
+     * Test fieldDifference().
+     */
+    public void TestJ438() throws Exception {
+        int DATA[] = {
+            2000, Calendar.JANUARY, 20,   2010, Calendar.JUNE, 15,
+            2010, Calendar.JUNE, 15,      2000, Calendar.JANUARY, 20,
+            1964, Calendar.SEPTEMBER, 7,  1999, Calendar.JUNE, 4,
+            1999, Calendar.JUNE, 4,       1964, Calendar.SEPTEMBER, 7,
+        };
+        Calendar cal = Calendar.getInstance(Locale.US);
+        for (int i=0; i<DATA.length; i+=6) {
+            int y1 = DATA[i];
+            int m1 = DATA[i+1];
+            int d1 = DATA[i+2];
+            int y2 = DATA[i+3];
+            int m2 = DATA[i+4];
+            int d2 = DATA[i+5];
+
+            cal.clear();
+            cal.set(y1, m1, d1);
+            Date date1 = cal.getTime();
+            cal.set(y2, m2, d2);
+            Date date2 = cal.getTime();
+
+            cal.setTime(date1);
+            int dy = cal.fieldDifference(date2, Calendar.YEAR);
+            int dm = cal.fieldDifference(date2, Calendar.MONTH);
+            int dd = cal.fieldDifference(date2, Calendar.DATE);
+
+            logln("" + date2 + " - " + date1 + " = " +
+                  dy + "y " + dm + "m " + dd + "d");
+
+            cal.setTime(date1);
+            cal.add(Calendar.YEAR, dy);
+            cal.add(Calendar.MONTH, dm);
+            cal.add(Calendar.DATE, dd);
+            Date date22 = cal.getTime();
+            if (!date2.equals(date22)) {
+                errln("FAIL: " + date1 + " + " +
+                      dy + "y " + dm + "m " + dd + "d = " +
+                      date22 + ", exp " + date2);
+            } else {
+                logln("Ok: " + date1 + " + " +
+                      dy + "y " + dm + "m " + dd + "d = " +
+                      date22);
+            }
+        }
+    }
+
+    /**
+     * Set behavior of DST_OFFSET field.  ICU4J Jitterbug 9.
+     */
+    public void TestJ9() {
+        int HOURS = 60*60*1000;
+        Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("PST"),
+                                             Locale.US);
+
+        final int END_FIELDS = 0x1234;
+
+        int[] DATA = {
+            // With no explicit ZONE/DST expect 12:00 am
+            Calendar.MONTH, Calendar.JUNE,
+            END_FIELDS,
+            0, 0, // expected hour, min
+
+            // Normal ZONE/DST for June 1 Pacific is 8:00/1:00
+            Calendar.MONTH, Calendar.JUNE,
+            Calendar.ZONE_OFFSET, -8*HOURS,
+            Calendar.DST_OFFSET, HOURS,
+            END_FIELDS,
+            0, 0, // expected hour, min
+
+            // With ZONE/DST of 8:00/0:30 expect time of 12:30 am
+            Calendar.MONTH, Calendar.JUNE,
+            Calendar.ZONE_OFFSET, -8*HOURS,
+            Calendar.DST_OFFSET, HOURS/2,
+            END_FIELDS,
+            0, 30, // expected hour, min
+
+            // With ZONE/DST of 8:00/UNSET expect time of 1:00 am
+            Calendar.MONTH, Calendar.JUNE,
+            Calendar.ZONE_OFFSET, -8*HOURS,
+            END_FIELDS,
+            1, 0, // expected hour, min
+
+            // With ZONE/DST of UNSET/0:30 expect 4:30 pm (day before)
+            Calendar.MONTH, Calendar.JUNE,
+            Calendar.DST_OFFSET, HOURS/2,
+            END_FIELDS,
+            16, 30, // expected hour, min
+        };
+
+        for (int i=0; i<DATA.length; ) {
+            int start = i;
+            cal.clear();
+
+            // Set fields
+            while (DATA[i] != END_FIELDS) {
+                cal.set(DATA[i++], DATA[i++]);
+            }
+            ++i; // skip over END_FIELDS
+
+            // Get hour/minute
+            int h = cal.get(Calendar.HOUR_OF_DAY);
+            int m = cal.get(Calendar.MINUTE);
+
+            // Check
+            if (h != DATA[i] || m != DATA[i+1]) {
+                errln("Fail: expected " + DATA[i] + ":" + DATA[i+1] +
+                      ", got " + h + ":" + m + " after:");
+                while (DATA[start] != END_FIELDS) {
+                    logln("set(" + FIELD_NAME[DATA[start++]] +
+                          ", " + DATA[start++] + ");");
+                }
+            }
+
+            i += 2; // skip over expected hour, min
+        }
+    }
+
+    /**
+     * DateFormat class mistakes date style and time style as follows:
+     * - DateFormat.getDateTimeInstance takes date style as time
+     * style, and time style as date style
+     * - If a Calendar is passed to
+     * DateFormat.getDateInstance, it returns time instance
+     * - If a Calendar
+     * is passed to DateFormat.getTimeInstance, it returns date instance
+     */
+    public void TestDateFormatFactoryJ26() {
+        TimeZone zone = TimeZone.getDefault();
+        try {
+            Locale loc = Locale.US;
+            TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));
+            java.util.Calendar tempcal = java.util.Calendar.getInstance();
+            tempcal.set(2001 + 1900, Calendar.APRIL, 5, 17, 43, 53);
+            Date date = tempcal.getTime();
+            Calendar cal = Calendar.getInstance(loc);
+            Object[] DATA = {
+                DateFormat.getDateInstance(DateFormat.SHORT, loc),
+                "DateFormat.getDateInstance(DateFormat.SHORT, loc)",
+                "4/5/01",
+
+                DateFormat.getTimeInstance(DateFormat.SHORT, loc),
+                "DateFormat.getTimeInstance(DateFormat.SHORT, loc)",
+                "5:43 PM",
+
+                DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.SHORT, loc),
+                "DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.SHORT, loc)",
+                "Friday, April 5, 3901 5:43 PM",
+
+                DateFormat.getDateInstance(cal, DateFormat.SHORT, loc),
+                "DateFormat.getDateInstance(cal, DateFormat.SHORT, loc)",
+                "4/5/01",
+
+                DateFormat.getTimeInstance(cal, DateFormat.SHORT, loc),
+                "DateFormat.getTimeInstance(cal, DateFormat.SHORT, loc)",
+                "5:43 PM",
+
+                DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.SHORT, loc),
+                "DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.SHORT, loc)",
+                "Friday, April 5, 3901 5:43 PM",
+            
+                cal.getDateTimeFormat(DateFormat.SHORT, DateFormat.FULL, loc),
+                "cal.getDateTimeFormat(DateFormat.SHORT, DateFormat.FULL, loc)",
+                "4/5/01 5:43:53 PM PST",
+
+                cal.getDateTimeFormat(DateFormat.FULL, DateFormat.SHORT, loc),
+                "cal.getDateTimeFormat(DateFormat.FULL, DateFormat.SHORT, loc)",
+                "Friday, April 5, 3901 5:43 PM",
+            };
+            for (int i=0; i<DATA.length; i+=3) {
+                DateFormat df = (DateFormat) DATA[i];
+                String desc = (String) DATA[i+1];
+                String exp = (String) DATA[i+2];
+                String got = df.format(date);
+                if (got.equals(exp)) {
+                    logln("Ok: " + desc + " => " + got);
+                } else {
+                    errln("FAIL: " + desc + " => " + got + ", expected " + exp);
+                }
+            }
+        } finally {
+            TimeZone.setDefault(zone);
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/dev/test/calendar/CalendarTest.java b/src/com/ibm/icu/dev/test/calendar/CalendarTest.java
new file mode 100755
index 0000000..69816e2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/CalendarTest.java
@@ -0,0 +1,360 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/calendar/CalendarTest.java,v $ 
+ * $Date: 2002/02/16 03:05:05 $ 
+ * $Revision: 1.12 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.dev.test.calendar;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.Hashtable;
+import java.util.Enumeration;
+import com.ibm.icu.util.*;
+
+/**
+ * A base class for classes that test individual Calendar subclasses.
+ * Defines various useful utility methods and constants
+ */
+public class CalendarTest extends TestFmwk {
+    
+    // Constants for use by subclasses, solely to save typing
+    public final static int SUN = Calendar.SUNDAY;
+    public final static int MON = Calendar.MONDAY;
+    public final static int TUE = Calendar.TUESDAY;
+    public final static int WED = Calendar.WEDNESDAY;
+    public final static int THU = Calendar.THURSDAY;
+    public final static int FRI = Calendar.FRIDAY;
+    public final static int SAT = Calendar.SATURDAY;
+
+    public final static int ERA     = Calendar.ERA;
+    public final static int YEAR    = Calendar.YEAR;
+    public final static int MONTH   = Calendar.MONTH;
+    public final static int DATE    = Calendar.DATE;
+    public final static int HOUR    = Calendar.HOUR;
+    public final static int MINUTE  = Calendar.MINUTE;
+    public final static int SECOND  = Calendar.SECOND;
+    public final static int DOY     = Calendar.DAY_OF_YEAR;
+    public final static int WOY     = Calendar.WEEK_OF_YEAR;
+    public final static int WOM     = Calendar.WEEK_OF_MONTH;
+    public final static int DOW     = Calendar.DAY_OF_WEEK;
+    public final static int DOWM    = Calendar.DAY_OF_WEEK_IN_MONTH;
+    
+    public final static SimpleTimeZone UTC = new SimpleTimeZone(0, "GMT");
+
+    private static final String[] FIELD_NAME = {
+        "ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH",
+        "DAY_OF_MONTH", "DAY_OF_YEAR", "DAY_OF_WEEK",
+        "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR", "HOUR_OF_DAY",
+        "MINUTE", "SECOND", "MILLISECOND", "ZONE_OFFSET",
+        "DST_OFFSET", "YEAR_WOY", "DOW_LOCAL", "EXTENDED_YEAR",
+        "JULIAN_DAY", "MILLISECONDS_IN_DAY",
+        "IS_LEAP_MONTH" // (ChineseCalendar only)
+    };
+
+    public static final String fieldName(int f) {
+        return (f>=0 && f<FIELD_NAME.length) ?
+            FIELD_NAME[f] : ("<Field " + f + ">");
+    }
+
+    /**
+     * Iterates through a list of calendar <code>TestCase</code> objects and
+     * makes sure that the time-to-fields and fields-to-time calculations work
+     * correnctly for the values in each test case.
+     */
+    public void doTestCases(TestCase[] cases, Calendar cal)
+    {
+        cal.setTimeZone(UTC);
+        
+        // Get a format to use for printing dates in the calendar system we're testing
+        DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.SHORT, -1, Locale.getDefault());
+
+        final String pattern = (cal instanceof ChineseCalendar) ?
+            "E MMl/dd/y G HH:mm:ss.S z" :
+            "E, MM/dd/yyyy G HH:mm:ss.S z";
+    
+        ((SimpleDateFormat)format).applyPattern(pattern);
+
+        // This format is used for printing Gregorian dates.
+        DateFormat gregFormat = new SimpleDateFormat(pattern);
+        gregFormat.setTimeZone(UTC);
+
+        GregorianCalendar pureGreg = new GregorianCalendar(UTC);
+        pureGreg.setGregorianChange(new Date(Long.MIN_VALUE));
+        DateFormat pureGregFmt = new SimpleDateFormat("E M/d/yyyy G");
+        pureGregFmt.setCalendar(pureGreg);
+        
+        // Now iterate through the test cases and see what happens
+        for (int i = 0; i < cases.length; i++)
+        {
+            TestCase test = cases[i];
+            
+            //
+            // First we want to make sure that the millis -> fields calculation works
+            // test.applyTime will call setTime() on the calendar object, and
+            // test.fieldsEqual will retrieve all of the field values and make sure
+            // that they're the same as the ones in the testcase
+            //
+            test.applyTime(cal);
+            if (!test.fieldsEqual(cal, this)) {
+                errln("Fail: (millis=>fields) " +
+                      gregFormat.format(test.getTime()) + " => " +
+                      format.format(cal.getTime()) +
+                      ", expected " + test);
+            }
+
+            //
+            // If that was OK, check the fields -> millis calculation
+            // test.applyFields will set all of the calendar's fields to 
+            // match those in the test case.
+            //
+            cal.clear();
+            test.applyFields(cal);
+            if (!test.equals(cal)) {
+                errln("Fail: (fields=>millis) " + test + " => " +
+                      pureGregFmt.format(cal.getTime()) +
+                      ", expected " + pureGregFmt.format(test.getTime()));
+            }
+        }
+    }
+    
+    static public final boolean ROLL = true;
+    static public final boolean ADD = false;
+    
+    /**
+     * Process test cases for <code>add</code> and <code>roll</code> methods.
+     * Each test case is an array of integers, as follows:
+     * <ul>
+     *  <li>0: input year
+     *  <li>1:       month  (zero-based)
+     *  <li>2:       day
+     *  <li>3: field to roll or add to
+     *  <li>4: amount to roll or add
+     *  <li>5: result year
+     *  <li>6:        month (zero-based)
+     *  <li>7:        day
+     * </ul>
+     * For example:
+     * <pre>
+     *   //       input                add by          output
+     *   //  year  month     day     field amount    year  month     day
+     *   {   5759, HESHVAN,   2,     MONTH,   1,     5759, KISLEV,    2 },
+     * </pre>
+     *
+     * @param roll  <code>true</code> or <code>ROLL</code> to test the <code>roll</code> method;
+     *              <code>false</code> or <code>ADD</code> to test the <code>add</code method
+     */
+    public void doRollAdd(boolean roll, Calendar cal, int[][] tests)
+    {
+        String name = roll ? "rolling" : "adding";
+        
+        for (int i = 0; i < tests.length; i++) {
+            int[] test = tests[i];
+
+            cal.clear();
+            if (cal instanceof ChineseCalendar) {
+                cal.set(Calendar.EXTENDED_YEAR, test[0]);
+                cal.set(Calendar.MONTH, test[1]);
+                cal.set(Calendar.DAY_OF_MONTH, test[2]);
+            } else {
+                cal.set(test[0], test[1], test[2]);
+            }
+            if (roll) {
+                cal.roll(test[3], test[4]);
+            } else {
+                cal.add(test[3], test[4]);
+            }
+            int y = cal.get(cal instanceof ChineseCalendar ?
+                            Calendar.EXTENDED_YEAR : YEAR);
+            if (y != test[5] || cal.get(MONTH) != test[6]
+                    || cal.get(DATE) != test[7])
+            {
+                errln("Fail: " + name + " "+ ymdToString(test[0], test[1], test[2])
+                    + " " + FIELD_NAME[test[3]] + " by " + test[4]
+                    + ": expected " + ymdToString(test[5], test[6], test[7])
+                    + ", got " + ymdToString(cal));
+            } else if (isVerbose()) {
+                logln("OK: " + name + " "+ ymdToString(test[0], test[1], test[2])
+                    + " " + FIELD_NAME[test[3]] + " by " + test[4]
+                    + ": got " + ymdToString(cal));
+            }
+        }
+    }
+
+    /**
+     * Test the functions getXxxMinimum() and getXxxMaximum() by marching a
+     * test calendar 'cal' through 'numberOfDays' sequential days starting
+     * with 'startDate'.  For each date, read a field value along with its
+     * reported actual minimum and actual maximum.  These values are
+     * checked against one another as well as against getMinimum(),
+     * getGreatestMinimum(), getLeastMaximum(), and getMaximum().  We
+     * expect to see:
+     *
+     * 1. minimum <= actualMinimum <= greatestMinimum <=
+     *    leastMaximum <= actualMaximum <= maximum
+     *
+     * 2. actualMinimum <= value <= actualMaximum
+     *
+     * Note: In addition to outright failures, this test reports some
+     * results as warnings.  These are not generally of concern, but they
+     * should be evaluated by a human.  To see these, run this test in
+     * verbose mode.
+     * @param cal the calendar to be tested
+     * @param fieldsToTest an array of field values to be tested, e.g., new
+     * int[] { Calendar.MONTH, Calendar.DAY_OF_MONTH }.  It only makes
+     * sense to test the day fields; the time fields are not tested by this
+     * method.  If null, then test all standard fields.
+     * @param startDate the first date to test
+     * @param testDuration if positive, the number of days to be tested.
+     * If negative, the number of seconds to run the test.
+     */
+    protected void doLimitsTest(Calendar cal, int[] fieldsToTest,
+                                Date startDate, int testDuration) {
+        GregorianCalendar greg = new GregorianCalendar();
+        greg.setTime(startDate);
+        logln("Start: " + startDate);
+
+        if (fieldsToTest == null) {
+            fieldsToTest = new int[] {
+                Calendar.ERA, Calendar.YEAR, Calendar.MONTH,
+                Calendar.WEEK_OF_YEAR, Calendar.WEEK_OF_MONTH,
+                Calendar.DAY_OF_MONTH, Calendar.DAY_OF_YEAR,
+                Calendar.DAY_OF_WEEK_IN_MONTH, Calendar.YEAR_WOY,
+                Calendar.EXTENDED_YEAR
+            };
+        }
+
+        // Keep a record of minima and maxima that we actually see.
+        // These are kept in an array of arrays of hashes.
+        Hashtable[][] limits = new Hashtable[fieldsToTest.length][2];
+        Object nub = new Object(); // Meaningless placeholder
+
+        // This test can run for a long time; show progress.
+        long millis = System.currentTimeMillis();
+        long mark = millis + 5000; // 5 sec
+        millis -= testDuration * 1000; // stop time if testDuration<0
+
+        for (int i=0;
+             testDuration>0 ? i<testDuration
+                            : System.currentTimeMillis()<millis;
+             ++i) {
+            if (System.currentTimeMillis() >= mark) {
+                logln("(" + i + " days)");
+                mark += 5000; // 5 sec
+            }
+            cal.setTimeInMillis(greg.getTimeInMillis());
+            for (int j=0; j<fieldsToTest.length; ++j) {
+                int f = fieldsToTest[j];
+                int v = cal.get(f);
+                int minActual = cal.getActualMinimum(f);
+                int maxActual = cal.getActualMaximum(f);
+                int minLow = cal.getMinimum(f);
+                int minHigh = cal.getGreatestMinimum(f);
+                int maxLow = cal.getLeastMaximum(f);
+                int maxHigh = cal.getMaximum(f);
+
+                // Fetch the hash for this field and keep track of the
+                // minima and maxima.
+                Hashtable[] h = limits[j];
+                if (h[0] == null) {
+                    h[0] = new Hashtable();
+                    h[1] = new Hashtable();
+                }
+                h[0].put(new Integer(minActual), nub);
+                h[1].put(new Integer(maxActual), nub);
+
+                if (minActual < minLow || minActual > minHigh) {
+                    errln("Fail: " + ymdToString(cal) +
+                          " Range for min of " + FIELD_NAME[f] +
+                          "=" + minLow + ".." + minHigh +
+                          ", actual_min=" + minActual);
+                }
+                if (maxActual < maxLow || maxActual > maxHigh) {
+                    errln("Fail: " + ymdToString(cal) +
+                          " Range for max of " + FIELD_NAME[f] +
+                          "=" + maxLow + ".." + maxHigh +
+                          ", actual_max=" + maxActual);
+                }
+                if (v < minActual || v > maxActual) {
+                    errln("Fail: " + ymdToString(cal) +
+                          " " + FIELD_NAME[f] + "=" + v +
+                          ", actual range=" + minActual + ".." + maxActual +
+                          ", allowed=(" + minLow + ".." + minHigh + ")..(" +
+                          maxLow + ".." + maxHigh + ")");
+                }
+            }
+            greg.add(Calendar.DAY_OF_YEAR, 1);
+        }
+
+        // Check actual maxima and minima seen against ranges returned
+        // by API.
+        StringBuffer buf = new StringBuffer();
+        for (int j=0; j<fieldsToTest.length; ++j) {
+            int f = fieldsToTest[j];
+            buf.setLength(0);
+            buf.append(FIELD_NAME[f]);
+            Hashtable[] h = limits[j];
+            boolean fullRangeSeen = true;
+            for (int k=0; k<2; ++k) {
+                int rangeLow = (k==0) ?
+                    cal.getMinimum(f) : cal.getLeastMaximum(f);
+                int rangeHigh = (k==0) ?
+                    cal.getGreatestMinimum(f) : cal.getMaximum(f);
+                // If either the top of the range or the bottom was never
+                // seen, then there may be a problem.
+                if (h[k].get(new Integer(rangeLow)) == null ||
+                    h[k].get(new Integer(rangeHigh)) == null) {
+                    fullRangeSeen = false;
+                }
+                buf.append(k==0 ? " minima seen=(" : "; maxima seen=(");
+                for (Enumeration e=h[k].keys(); e.hasMoreElements(); ) {
+                    int v = ((Integer) e.nextElement()).intValue();
+                    buf.append(" " + v);
+                }
+                buf.append(") range=" + rangeLow + ".." + rangeHigh);
+            }
+            if (fullRangeSeen) {
+                logln("OK: " + buf.toString());
+            } else {
+                // This may or may not be an error -- if the range of dates
+                // we scan over doesn't happen to contain a minimum or
+                // maximum, it doesn't mean some other range won't.
+                logln("Warning: " + buf.toString());
+            }
+        }
+
+        logln("End: " + greg.getTime());
+    }
+
+    /**
+     * Convert year,month,day values to the form "year/month/day".
+     * On input the month value is zero-based, but in the result string it is one-based.
+     */
+    static public String ymdToString(int year, int month, int day) {
+        return "" + year + "/" + (month+1) + "/" + day;
+    }
+
+    /**
+     * Convert year,month,day values to the form "year/month/day".
+     */
+    static public String ymdToString(Calendar cal) {
+        if (cal instanceof ChineseCalendar) {
+            return "" + cal.get(Calendar.EXTENDED_YEAR) + "/" +
+                (cal.get(Calendar.MONTH)+1) +
+                (cal.get(ChineseCalendar.IS_LEAP_MONTH)==1?"(leap)":"") + "/" +
+                cal.get(Calendar.DATE);
+        }
+        return ymdToString(cal.get(Calendar.EXTENDED_YEAR),
+                           cal.get(MONTH), cal.get(DATE));
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/ChineseTest.java b/src/com/ibm/icu/dev/test/calendar/ChineseTest.java
new file mode 100755
index 0000000..1b74116
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/ChineseTest.java
@@ -0,0 +1,526 @@
+/*********************************************************************
+ * Copyright (C) 2000, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *********************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/calendar/ChineseTest.java,v $
+ * $Date: 2002/02/16 03:05:05 $
+ * $Revision: 1.9 $
+ */
+package com.ibm.icu.dev.test.calendar;
+import com.ibm.icu.util.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Test of ChineseCalendar.
+ *
+ * Leap months in this century:
+ * Wed May 23 2001 = 4638-04*-01, Year 18, Cycle 78
+ * Sun Mar 21 2004 = 4641-02*-01, Year 21, Cycle 78
+ * Thu Aug 24 2006 = 4643-07*-01, Year 23, Cycle 78
+ * Tue Jun 23 2009 = 4646-05*-01, Year 26, Cycle 78
+ * Mon May 21 2012 = 4649-04*-01, Year 29, Cycle 78
+ * Fri Oct 24 2014 = 4651-09*-01, Year 31, Cycle 78
+ * Sun Jul 23 2017 = 4654-06*-01, Year 34, Cycle 78
+ * Sat May 23 2020 = 4657-04*-01, Year 37, Cycle 78
+ * Wed Mar 22 2023 = 4660-02*-01, Year 40, Cycle 78
+ * Fri Jul 25 2025 = 4662-06*-01, Year 42, Cycle 78
+ * Fri Jun 23 2028 = 4665-05*-01, Year 45, Cycle 78
+ * Tue Apr 22 2031 = 4668-03*-01, Year 48, Cycle 78
+ * Thu Dec 22 2033 = 4670-11*-01, Year 50, Cycle 78
+ * Wed Jul 23 2036 = 4673-06*-01, Year 53, Cycle 78
+ * Wed Jun 22 2039 = 4676-05*-01, Year 56, Cycle 78
+ * Sat Mar 22 2042 = 4679-02*-01, Year 59, Cycle 78
+ * Tue Aug 23 2044 = 4681-07*-01, Year 01, Cycle 79
+ * Sun Jun 23 2047 = 4684-05*-01, Year 04, Cycle 79
+ * Thu Apr 21 2050 = 4687-03*-01, Year 07, Cycle 79
+ * Mon Sep 23 2052 = 4689-08*-01, Year 09, Cycle 79
+ * Sat Jul 24 2055 = 4692-06*-01, Year 12, Cycle 79
+ * Wed May 22 2058 = 4695-04*-01, Year 15, Cycle 79
+ * Wed Apr 20 2061 = 4698-03*-01, Year 18, Cycle 79
+ * Fri Aug 24 2063 = 4700-07*-01, Year 20, Cycle 79
+ * Wed Jun 23 2066 = 4703-05*-01, Year 23, Cycle 79
+ * Tue May 21 2069 = 4706-04*-01, Year 26, Cycle 79
+ * Thu Sep 24 2071 = 4708-08*-01, Year 28, Cycle 79
+ * Tue Jul 24 2074 = 4711-06*-01, Year 31, Cycle 79
+ * Sat May 22 2077 = 4714-04*-01, Year 34, Cycle 79
+ * Sat Apr 20 2080 = 4717-03*-01, Year 37, Cycle 79
+ * Mon Aug 24 2082 = 4719-07*-01, Year 39, Cycle 79
+ * Fri Jun 22 2085 = 4722-05*-01, Year 42, Cycle 79
+ * Fri May 21 2088 = 4725-04*-01, Year 45, Cycle 79
+ * Sun Sep 24 2090 = 4727-08*-01, Year 47, Cycle 79
+ * Thu Jul 23 2093 = 4730-06*-01, Year 50, Cycle 79
+ * Tue May 22 2096 = 4733-04*-01, Year 53, Cycle 79
+ * Sun Mar 22 2099 = 4736-02*-01, Year 56, Cycle 79
+ */
+public class ChineseTest extends CalendarTest {
+
+    public static void main(String args[]) throws Exception {
+        new ChineseTest().run(args);
+    }
+
+    /**
+     * Test basic mapping to and from Gregorian.
+     */
+    public void TestMapping() {
+
+        final int[] DATA = {
+            // (Note: months are 1-based)
+            // Gregorian    Chinese
+            1964,  9,  4,   4601,  7,0, 28,
+            1964,  9,  5,   4601,  7,0, 29,
+            1964,  9,  6,   4601,  8,0,  1,
+            1964,  9,  7,   4601,  8,0,  2,
+            1961, 12, 25,   4598, 11,0, 18,
+            1999,  6,  4,   4636,  4,0, 21,
+            
+            1990,  5, 23,   4627,  4,0, 29,
+            1990,  5, 24,   4627,  5,0,  1,
+            1990,  6, 22,   4627,  5,0, 30,
+            1990,  6, 23,   4627,  5,1,  1,
+            1990,  7, 20,   4627,  5,1, 28,
+            1990,  7, 21,   4627,  5,1, 29,
+            1990,  7, 22,   4627,  6,0,  1,
+        };
+
+        ChineseCalendar cal = new ChineseCalendar();
+        StringBuffer buf = new StringBuffer();
+
+        logln("Gregorian -> Chinese");
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        for (int i=0; i<DATA.length; ) {
+            tempcal.set(DATA[i++], DATA[i++]-1, DATA[i++]);
+            Date date = tempcal.getTime();
+            cal.setTime(date);
+            int y = cal.get(Calendar.EXTENDED_YEAR);
+            int m = cal.get(Calendar.MONTH)+1; // 0-based -> 1-based
+            int L = cal.get(ChineseCalendar.IS_LEAP_MONTH);
+            int d = cal.get(Calendar.DAY_OF_MONTH);
+            int yE = DATA[i++]; // Expected y, m, isLeapMonth, d
+            int mE = DATA[i++]; // 1-based
+            int LE = DATA[i++];
+            int dE = DATA[i++];
+            buf.setLength(0);
+            buf.append(date + " -> ");
+            buf.append(y + "/" + m + (L==1?"(leap)":"") + "/" + d);
+            if (y == yE && m == mE && L == LE && d == dE) {
+                logln("OK: " + buf.toString());
+            } else {
+                errln("Fail: " + buf.toString() + ", expected " +
+                      yE + "/" + mE + (LE==1?"(leap)":"") + "/" + dE);
+            }
+        }
+
+        logln("Chinese -> Gregorian");
+        for (int i=0; i<DATA.length; ) {
+            tempcal.set(DATA[i++], DATA[i++]-1, DATA[i++]);
+            Date dexp = tempcal.getTime();
+            int cyear = DATA[i++];
+            int cmonth = DATA[i++];
+            int cisleapmonth = DATA[i++];
+            int cdayofmonth = DATA[i++];
+            cal.clear();
+            cal.set(Calendar.EXTENDED_YEAR, cyear);
+            cal.set(Calendar.MONTH, cmonth-1);
+            cal.set(ChineseCalendar.IS_LEAP_MONTH, cisleapmonth);
+            cal.set(Calendar.DAY_OF_MONTH, cdayofmonth);
+            Date date = cal.getTime();
+            buf.setLength(0);
+            buf.append(cyear + "/" + cmonth +
+                       (cisleapmonth==1?"(leap)":"") + "/" + cdayofmonth);
+            buf.append(" -> " + date);
+            if (date.equals(dexp)) {
+                logln("OK: " + buf.toString());
+            } else {
+                errln("Fail: " + buf.toString() + ", expected " + dexp);
+            }
+        }
+    }
+
+    /**
+     * Make sure no Gregorian dates map to Chinese 1-based day of
+     * month zero.  This was a problem with some of the astronomical
+     * new moon determinations.
+     */
+    public void TestZeroDOM() {
+        ChineseCalendar cal = new ChineseCalendar();
+        GregorianCalendar greg = new GregorianCalendar(1989, Calendar.SEPTEMBER, 1);
+        logln("Start: " + greg.getTime());
+        for (int i=0; i<1000; ++i) {
+            cal.setTimeInMillis(greg.getTimeInMillis());
+            if (cal.get(Calendar.DAY_OF_MONTH) == 0) {
+                errln("Fail: " + greg.getTime() + " -> " +
+                      cal.get(Calendar.EXTENDED_YEAR) + "/" +
+                      cal.get(Calendar.MONTH) +
+                      (cal.get(ChineseCalendar.IS_LEAP_MONTH)==1?"(leap)":"") +
+                      "/" + cal.get(Calendar.DAY_OF_MONTH));
+            }
+            greg.add(Calendar.DAY_OF_YEAR, 1);
+        }
+        logln("End: " + greg.getTime());
+    }
+
+    /**
+     * Test minimum and maximum functions.
+     */
+    public void TestLimits() {
+        // The number of days and the start date can be adjusted
+        // arbitrarily to either speed up the test or make it more
+        // thorough, but try to test at least a full year, preferably a
+        // full non-leap and a full leap year.
+
+        // Final parameter is either number of days, if > 0, or test
+        // duration in seconds, if < 0.
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1989, Calendar.NOVEMBER, 1);
+        doLimitsTest(new ChineseCalendar(), null, tempcal.getTime(), -10);
+    }
+
+    /**
+     * Run through several standard tests from Dershowitz & Reingold.
+     */
+    public void TestJulianDayMapping() {
+
+        final TestCase[] tests = {
+            //
+            // From Dershowitz & Reingold, "Calendrical Calculations".
+            //
+            // The months in this table are 1-based rather than 0-based.
+            //
+            // * Failing fields->millis
+            // ** Millis->fields gives 0-based month -1
+            // These failures were fixed by changing the start search date
+            // for the winter solstice from Dec 15 to Dec 1.
+            // 
+            //                  Julian Day   Era  Year Month  Leap   DOM WkDay
+            new ChineseTestCase(1507231.5,   35,   11,    6, false,   12,  SUN),
+            new ChineseTestCase(1660037.5,   42,    9,   10, false,   27,  WED),
+            new ChineseTestCase(1746893.5,   46,    7,    8, false,    4,  WED),
+            new ChineseTestCase(1770641.5,   47,   12,    8, false,    9,  SUN),
+            new ChineseTestCase(1892731.5,   52,   46,   11, false,   20,  WED),
+            new ChineseTestCase(1931579.5,   54,   33,    4, false,    5,  MON),
+            new ChineseTestCase(1974851.5,   56,   31,   10, false,   15,  SAT),
+            new ChineseTestCase(2091164.5,   61,   50,    3, false,    7,  SUN),
+            new ChineseTestCase(2121509.5,   63,   13,    4, false,   24,  SUN),
+            new ChineseTestCase(2155779.5,   64,   47,    2, false,    9,  FRI),
+            new ChineseTestCase(2174029.5,   65,   37,    2, false,    9,  SAT),
+            new ChineseTestCase(2191584.5,   66,   25,    2, false,   23,  FRI),
+            new ChineseTestCase(2195261.5,   66,   35,    3, false,    9,  SUN), //*
+            new ChineseTestCase(2229274.5,   68,    8,    5, false,    2,  SUN), //*
+            new ChineseTestCase(2245580.5,   68,   53,    1, false,    8,  WED), //**
+            new ChineseTestCase(2266100.5,   69,   49,    3, false,    4,  SAT), 
+            new ChineseTestCase(2288542.5,   70,   50,    8, false,    2,  SAT), //*
+            new ChineseTestCase(2290901.5,   70,   57,    1, false,   29,  SAT), //*
+            new ChineseTestCase(2323140.5,   72,   25,    4,  true,   20,  WED), //*
+            new ChineseTestCase(2334848.5,   72,   57,    6, false,    5,  SUN),
+            new ChineseTestCase(2348020.5,   73,   33,    6, false,    6,  FRI),
+            new ChineseTestCase(2366978.5,   74,   25,    5, false,    5,  SUN),
+            new ChineseTestCase(2385648.5,   75,   16,    6, false,   12,  MON),
+            new ChineseTestCase(2392825.5,   75,   36,    2, false,   13,  WED),
+            new ChineseTestCase(2416223.5,   76,   40,    3, false,   22,  SUN),
+            new ChineseTestCase(2425848.5,   77,    6,    7, false,   21,  SUN),
+            new ChineseTestCase(2430266.5,   77,   18,    8, false,    9,  MON),
+            new ChineseTestCase(2430833.5,   77,   20,    3, false,   15,  MON),
+            new ChineseTestCase(2431004.5,   77,   20,    9, false,    9,  THU),
+            new ChineseTestCase(2448698.5,   78,    9,    2, false,   14,  TUE),
+            new ChineseTestCase(2450138.5,   78,   13,    1, false,    7,  SUN),
+            new ChineseTestCase(2465737.5,   78,   55,   10, false,   14,  WED),
+            new ChineseTestCase(2486076.5,   79,   51,    6, false,    7,  SUN),
+
+            // Additional tests not from D&R
+            new ChineseTestCase(2467496.5,   78,   60,    8, false,    2,  FRI), // year 60
+        };
+
+        ChineseCalendar cal = new ChineseCalendar();
+        cal.setLenient(true);
+        doTestCases(tests, cal);
+    }
+
+    /**
+     * Test formatting.
+     */
+    public void TestFormat() {
+        ChineseCalendar cal = new ChineseCalendar();
+        DateFormat fmt = DateFormat.getDateTimeInstance(cal,
+                                    DateFormat.DEFAULT, DateFormat.DEFAULT);
+
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        
+        Date[] DATA = new Date[2];
+        tempcal.set(2001, Calendar.MAY, 22);
+        DATA[0] = tempcal.getTime();
+        tempcal.set(2001, Calendar.MAY, 23);
+        DATA[1] = tempcal.getTime();
+        // Wed May 23 2001 = Month 4(leap), Day 1, Year 18, Cycle 78
+        
+        for (int i=0; i<DATA.length; ++i) {
+            String s = fmt.format(DATA[i]);
+            try {
+                Date e = fmt.parse(s);
+                if (e.equals(DATA[i])) {
+                    logln("Ok: " + DATA[i] + " -> " + s + " -> " + e);
+                } else {
+                    errln("FAIL: " + DATA[i] + " -> " + s + " -> " + e);
+                }
+            } catch (java.text.ParseException e) {
+                errln("Fail: " + s + " -> parse failure at " + e.getErrorOffset());
+                errln(e.toString());
+            }
+        }
+    }
+
+    /**
+     * Make sure IS_LEAP_MONTH participates in field resolution.
+     */
+    public void TestResolution() {
+        ChineseCalendar cal = new ChineseCalendar();
+        DateFormat fmt = DateFormat.getDateInstance(cal, DateFormat.DEFAULT);
+
+        // May 22 2001 = y4638 m4 d30 doy119
+        // May 23 2001 = y4638 m4* d1 doy120
+
+        final int THE_YEAR = 4638;
+        final int END = -1;
+
+        int[] DATA = {
+            // Format:
+            // (field, value)+, END, exp.month, exp.isLeapMonth, exp.DOM
+            // Note: exp.month is ONE-BASED
+
+            // If we set DAY_OF_YEAR only, that should be used
+            Calendar.DAY_OF_YEAR, 1,
+            END,
+            1,0,1, // Expect 1-1
+            
+            // If we set MONTH only, that should be used
+            ChineseCalendar.IS_LEAP_MONTH, 1,
+            Calendar.DAY_OF_MONTH, 1,
+            Calendar.MONTH, 3,
+            END,
+            4,1,1, // Expect 4*-1
+            
+            // If we set the DOY last, that should take precedence
+            Calendar.MONTH, 1, // Should ignore
+            ChineseCalendar.IS_LEAP_MONTH, 1, // Should ignore
+            Calendar.DAY_OF_MONTH, 1, // Should ignore
+            Calendar.DAY_OF_YEAR, 121,
+            END,
+            4,1,2, // Expect 4*-2
+            
+            // I've disabled this test because it doesn't work this way,
+            // not even with a GregorianCalendar!  MONTH alone isn't enough
+            // to supersede DAY_OF_YEAR.  Some other month-related field is
+            // also required. - Liu 11/28/00
+            //! // If we set MONTH last, that should take precedence
+            //! ChineseCalendar.IS_LEAP_MONTH, 1,
+            //! Calendar.DAY_OF_MONTH, 1,
+            //! Calendar.DAY_OF_YEAR, 5, // Should ignore
+            //! Calendar.MONTH, 3,
+            //! END,
+            //! 4,1,1, // Expect 4*-1
+            
+            // If we set IS_LEAP_MONTH last, that should take precedence
+            Calendar.MONTH, 3,
+            Calendar.DAY_OF_MONTH, 1,
+            Calendar.DAY_OF_YEAR, 5, // Should ignore
+            ChineseCalendar.IS_LEAP_MONTH, 1,
+            END,
+            4,1,1, // Expect 4*-1
+        };
+
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<DATA.length; ) {
+            cal.clear();
+            cal.set(Calendar.EXTENDED_YEAR, THE_YEAR);
+            buf.setLength(0);
+            buf.append("EXTENDED_YEAR=" + THE_YEAR);
+            while (DATA[i] != END) {
+                cal.set(DATA[i++], DATA[i++]);
+                buf.append(" " + fieldName(DATA[i-2]) + "=" + DATA[i-1]);
+            }
+            ++i; // Skip over END mark
+            int expMonth = DATA[i++]-1;
+            int expIsLeapMonth = DATA[i++];
+            int expDOM = DATA[i++];
+            int month = cal.get(Calendar.MONTH);
+            int isLeapMonth = cal.get(ChineseCalendar.IS_LEAP_MONTH);
+            int dom = cal.get(Calendar.DAY_OF_MONTH);
+            if (expMonth == month && expIsLeapMonth == isLeapMonth &&
+                dom == expDOM) {
+                logln("OK: " + buf + " => " + fmt.format(cal.getTime()));
+            } else {
+                String s = fmt.format(cal.getTime());
+                cal.clear();
+                cal.set(Calendar.EXTENDED_YEAR, THE_YEAR);
+                cal.set(Calendar.MONTH, expMonth);
+                cal.set(ChineseCalendar.IS_LEAP_MONTH, expIsLeapMonth);
+                cal.set(Calendar.DAY_OF_MONTH, expDOM);
+                errln("Fail: " + buf + " => " + s +
+                      "=" + (month+1) + "," + isLeapMonth + "," + dom +
+                      ", expected " + fmt.format(cal.getTime()) +
+                      "=" + (expMonth+1) + "," + expIsLeapMonth + "," + expDOM);
+            }
+        }
+    }
+
+    /**
+     * Test the behavior of fields that are out of range.
+     */
+    public void TestOutOfRange() {
+        int[] DATA = new int[] {
+            // Input       Output
+            4638, 13,  1,   4639,  1,  1,
+            4638, 18,  1,   4639,  6,  1,
+            4639,  0,  1,   4638, 12,  1,
+            4639, -6,  1,   4638,  6,  1,
+            4638,  1, 32,   4638,  2,  2, // 1-4638 has 30 days
+            4638,  2, -1,   4638,  1, 29,
+        };
+        ChineseCalendar cal = new ChineseCalendar();
+        for (int i=0; i<DATA.length; ) {
+            int y1 = DATA[i++];
+            int m1 = DATA[i++]-1;
+            int d1 = DATA[i++];
+            int y2 = DATA[i++];
+            int m2 = DATA[i++]-1;
+            int d2 = DATA[i++];
+            cal.clear();
+            cal.set(Calendar.EXTENDED_YEAR, y1);
+            cal.set(MONTH, m1);
+            cal.set(DATE, d1);
+            int y = cal.get(Calendar.EXTENDED_YEAR);
+            int m = cal.get(MONTH);
+            int d = cal.get(DATE);
+            if (y!=y2 || m!=m2 || d!=d2) {
+                errln("Fail: " + y1 + "/" + (m1+1) + "/" + d1 + " resolves to " +
+                      y + "/" + (m+1) + "/" + d + ", expected " +
+                      y2 + "/" + (m2+1) + "/" + d2);
+            } else  if (isVerbose()) {
+                logln("OK: " + y1 + "/" + (m1+1) + "/" + d1 + " resolves to " +
+                      y + "/" + (m+1) + "/" + d);
+            }
+        }
+    }
+
+    /**
+     * Test the behavior of ChineseCalendar.add().  The only real
+     * nastiness with roll is the MONTH field around leap months.
+     */
+    public void TestAdd() {
+        int[][] tests = new int[][] {
+            // MONTHS ARE 1-BASED HERE
+            // input               add           output
+            // year  mon    day    field amount  year  mon    day
+            {  4642,   3,0,  15,   MONTH,   3,   4642,   6,0,  15 }, // normal
+            {  4639,  12,0,  15,   MONTH,   1,   4640,   1,0,  15 }, // across year
+            {  4640,   1,0,  15,   MONTH,  -1,   4639,  12,0,  15 }, // across year
+            {  4638,   3,0,  15,   MONTH,   3,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   3,0,  15,   MONTH,   2,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   4,0,  15,   MONTH,   1,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   4,1,  15,   MONTH,   1,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   4,0,  30,   MONTH,   1,   4638,   4,1,  29 }, // dom should pin
+            {  4638,   4,0,  30,   MONTH,   2,   4638,   5,0,  30 }, // no dom pin
+            {  4638,   4,0,  30,   MONTH,   3,   4638,   6,0,  29 }, // dom should pin
+        };
+       
+        ChineseCalendar cal = new ChineseCalendar();
+        doRollAdd(ADD, cal, tests);
+    }
+
+    /**
+     * Test the behavior of ChineseCalendar.roll().  The only real
+     * nastiness with roll is the MONTH field around leap months.
+     */
+    public void TestRoll() {
+        int[][] tests = new int[][] {
+            // MONTHS ARE 1-BASED HERE
+            // input               add           output
+            // year  mon    day    field amount  year  mon    day
+            {  4642,   3,0,  15,   MONTH,   3,   4642,   6,0,  15 }, // normal
+            {  4642,   3,0,  15,   MONTH,  11,   4642,   2,0,  15 }, // normal
+            {  4639,  12,0,  15,   MONTH,   1,   4639,   1,0,  15 }, // across year
+            {  4640,   1,0,  15,   MONTH,  -1,   4640,  12,0,  15 }, // across year
+            {  4638,   3,0,  15,   MONTH,   3,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   3,0,  15,   MONTH,  16,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   3,0,  15,   MONTH,   2,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   3,0,  15,   MONTH,  28,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   4,0,  15,   MONTH,   1,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   4,0,  15,   MONTH, -12,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   4,1,  15,   MONTH,   1,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   4,1,  15,   MONTH, -25,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   4,0,  30,   MONTH,   1,   4638,   4,1,  29 }, // dom should pin
+            {  4638,   4,0,  30,   MONTH,  14,   4638,   4,1,  29 }, // dom should pin
+            {  4638,   4,0,  30,   MONTH,  15,   4638,   5,0,  30 }, // no dom pin
+            {  4638,   4,0,  30,   MONTH, -10,   4638,   6,0,  29 }, // dom should pin
+        };
+       
+        ChineseCalendar cal = new ChineseCalendar();
+        doRollAdd(ROLL, cal, tests);
+    }
+    
+    void doRollAdd(boolean roll, ChineseCalendar cal, int[][] tests) {
+        String name = roll ? "rolling" : "adding";
+        
+        for (int i = 0; i < tests.length; i++) {
+            int[] test = tests[i];
+
+            cal.clear();
+                cal.set(Calendar.EXTENDED_YEAR, test[0]);
+                cal.set(Calendar.MONTH, test[1]-1);
+                cal.set(ChineseCalendar.IS_LEAP_MONTH, test[2]);
+                cal.set(Calendar.DAY_OF_MONTH, test[3]);
+            if (roll) {
+                cal.roll(test[4], test[5]);
+            } else {
+                cal.add(test[4], test[5]);
+            }
+            if (cal.get(Calendar.EXTENDED_YEAR) != test[6] ||
+                cal.get(MONTH) != (test[7]-1) ||
+                cal.get(ChineseCalendar.IS_LEAP_MONTH) != test[8] ||
+                cal.get(DATE) != test[9]) {
+                errln("Fail: " + name + " " +
+                      ymdToString(test[0], test[1]-1, test[2], test[3])
+                      + " " + fieldName(test[4]) + " by " + test[5]
+                      + ": expected " +
+                      ymdToString(test[6], test[7]-1, test[8], test[9])
+                      + ", got " + ymdToString(cal));
+            } else if (isVerbose()) {
+                logln("OK: " + name + " " +
+                      ymdToString(test[0], test[1]-1, test[2], test[3])
+                    + " " + fieldName(test[4]) + " by " + test[5]
+                    + ": got " + ymdToString(cal));
+            }
+        }
+    }
+
+    /**
+     * Convert year,month,day values to the form "year/month/day".
+     * On input the month value is zero-based, but in the result string it is one-based.
+     */
+    static public String ymdToString(int year, int month, int isLeapMonth, int day) {
+        return "" + year + "/" + (month+1) +
+            ((isLeapMonth!=0)?"(leap)":"") +
+            "/" + day;
+    }
+
+//    public void TestFindLeapMonths() {
+//        ChineseCalendar cal = new ChineseCalendar();
+//        cal.setTime(new Date(2000-1900, Calendar.JANUARY, 1));
+//        long end = new Date(2100-1900, Calendar.JANUARY, 1).getTime();
+//        ChineseDateFormat fmt = (ChineseDateFormat) DateFormat.getInstance(cal);
+//        fmt.applyPattern("u-MMl-dd, 'Year' y, 'Cycle' G");
+//        while (cal.getTimeInMillis() < end) {
+//            if (cal.get(ChineseCalendar.IS_LEAP_MONTH) != 0) {
+//                cal.set(Calendar.DAY_OF_MONTH, 1);
+//                logln(cal.getTime() + " = " + fmt.format(cal.getTime()));
+//                cal.set(Calendar.DAY_OF_MONTH, 29);
+//            }
+//            cal.add(Calendar.DAY_OF_YEAR, 25);
+//        }
+//    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java b/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java
new file mode 100755
index 0000000..05d5b78
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java
@@ -0,0 +1,59 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java,v $
+ * $Date: 2002/08/13 21:53:38 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+import com.ibm.icu.util.*;
+import java.util.Date;
+
+public class ChineseTestCase extends TestCase {
+
+    /**
+     * Initialize an object using a Julian day number and
+     * the corresponding fields for the calendar being tested.
+     *
+     * @param era the ERA field of tested calendar on the given Julian
+     * day
+     * @param year the YEAR field of tested calendar on the given
+     * Julian day
+     * @param month the MONTH (1-based) field of tested calendar on
+     * the given Julian day
+     * @param isLeapMonth if true, treat month as a leap month
+     * @param dayOfMonth the DAY_OF_MONTH field of tested calendar on the
+     * given Julian day
+     * @param dayOfWeek the DAY_OF_WEEK field of tested calendar on given
+     * Julian day
+     */
+    public ChineseTestCase(double julian,
+                           int era, int year, int month,
+                           boolean isLeapMonth, int dayOfMonth, int dayOfWeek) {
+
+        setTime(new Date(JULIAN_EPOCH + (long)(ONE_DAY * julian)));
+        
+        set(Calendar.ERA, era);
+        set(Calendar.YEAR, year);
+        set(Calendar.MONTH, month - 1);
+        set(ChineseCalendar.IS_LEAP_MONTH, isLeapMonth?1:0);
+        set(Calendar.DAY_OF_MONTH, dayOfMonth);
+        set(Calendar.DAY_OF_WEEK, dayOfWeek);
+    }
+
+    /**
+     * Return a String representation of this test case's time.
+     */
+    public String toString() {
+        return dowToString(get(Calendar.DAY_OF_WEEK)) +
+            get(Calendar.YEAR) + "of" + get(Calendar.ERA) +
+            "/" + (get(Calendar.MONTH)+1) +
+            (get(ChineseCalendar.IS_LEAP_MONTH)==1?"(leap)":"") + "/" +
+            get(Calendar.DAY_OF_MONTH);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java b/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java
new file mode 100755
index 0000000..adb5a1d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java
@@ -0,0 +1,1053 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java,v $
+ * $Date: 2002/08/13 21:53:38 $
+ * $Revision: 1.8 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+import com.ibm.icu.util.*;
+import java.util.Date;
+import java.util.Locale;
+import java.text.*;
+import java.io.*;
+
+public class CompatibilityTest extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String argv[]) throws Exception {
+        new CompatibilityTest().run(argv);
+    }
+
+    static final String[] FIELD_NAME = {
+        "ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH",
+        "DAY_OF_MONTH", "DAY_OF_YEAR", "DAY_OF_WEEK",
+        "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR", "HOUR_OF_DAY",
+        "MINUTE", "SECOND", "MILLISECOND", "ZONE_OFFSET",
+        "DST_OFFSET", "YEAR_WOY", "DOW_LOCAL", "EXTENDED_YEAR",
+        "JULIAN_DAY", "MILLISECONDS_IN_DAY",
+    };
+
+    /**
+     * Test the behavior of the GregorianCalendar around the changeover.
+     */
+    public void TestGregorianChangeover() {
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1582, Calendar.OCTOBER, 15);
+        Date co = tempcal.getTime();
+        final int ONE_DAY = 24*60*60*1000;
+        GregorianCalendar cal = new GregorianCalendar();
+        /*
+          Changeover -7 days: 1582/9/28 dow=6
+          Changeover -6 days: 1582/9/29 dow=7
+          Changeover -5 days: 1582/9/30 dow=1
+          Changeover -4 days: 1582/10/1 dow=2
+          Changeover -3 days: 1582/10/2 dow=3
+          Changeover -2 days: 1582/10/3 dow=4
+          Changeover -1 days: 1582/10/4 dow=5
+          Changeover +0 days: 1582/10/15 dow=6
+          Changeover +1 days: 1582/10/16 dow=7
+          Changeover +2 days: 1582/10/17 dow=1
+          Changeover +3 days: 1582/10/18 dow=2
+          Changeover +4 days: 1582/10/19 dow=3
+          Changeover +5 days: 1582/10/20 dow=4
+          Changeover +6 days: 1582/10/21 dow=5
+          Changeover +7 days: 1582/10/22 dow=6
+          */
+        int MON[] = {  9,  9,  9,10,10,10,10, 10, 10, 10, 10, 10, 10, 10, 10 };
+        int DOM[] = { 28, 29, 30, 1, 2, 3, 4, 15, 16, 17, 18, 19, 20, 21, 22 };
+        int DOW[] = {  6,  7,  1, 2, 3, 4, 5,  6,  7,  1,  2,  3,  4,  5,  6 };
+        //                                     ^ <-Changeover Fri Oct 15 1582
+        int j=0;
+        for (int i=-7; i<=7; ++i, ++j) {
+            Date d = new Date(co.getTime() + i*ONE_DAY);
+            cal.setTime(d);
+            int y = cal.get(Calendar.YEAR), mon = cal.get(Calendar.MONTH)+1-Calendar.JANUARY,
+                dom = cal.get(Calendar.DATE), dow = cal.get(Calendar.DAY_OF_WEEK);
+            logln("Changeover " + (i>=0?"+":"") +
+                  i + " days: " + y + "/" + mon + "/" + dom + " dow=" + dow);
+            if (y != 1582 || mon != MON[j] || dom != DOM[j] || dow != DOW[j])
+                errln(" Fail: Above line is wrong");
+        }
+    }
+
+    /**
+     * Test the mapping between millis and fields.  For the purposes
+     * of this test, we don't care about timezones and week data
+     * (first day of week, minimal days in first week).
+     */
+    public void TestMapping() {
+        if (false) {
+            Date PURE_GREGORIAN = new Date(Long.MIN_VALUE);
+            Date PURE_JULIAN = new Date(Long.MAX_VALUE);
+            GregorianCalendar cal =
+                new GregorianCalendar(TimeZone.getTimeZone("UTC"));
+            final int EPOCH_JULIAN = 2440588;
+            final long ONE_DAY = 24*60*60*1000L;
+            com.ibm.icu.text.SimpleDateFormat fmt =
+                new com.ibm.icu.text.SimpleDateFormat("EEE MMM dd yyyy G");
+                /*HH:mm:ss.SSS z*/
+
+            for (int type=0; type<2; ++type) {
+                System.out.println(type==0 ? "Gregorian" : "Julian");
+                cal.setGregorianChange(type==0 ? PURE_GREGORIAN : PURE_JULIAN);
+                fmt.setCalendar(cal);
+                int[] J = {
+                    0x7FFFFFFF,
+                    0x7FFFFFF0,
+                    0x7F000000,
+                    0x78000000,
+                    0x70000000,
+                    0x60000000,
+                    0x50000000,
+                    0x40000000,
+                    0x30000000,
+                    0x20000000,
+                    0x10000000,
+                };
+                for (int i=0; i<J.length; ++i) {
+                    String[] lim = new String[2];
+                    long[] ms = new long[2];
+                    int jd = J[i];
+                    for (int sign=0; sign<2; ++sign) {
+                        int julian = jd;
+                        if (sign==0) julian = -julian;
+                        long millis = ((long)julian - EPOCH_JULIAN) * ONE_DAY;
+                        ms[sign] = millis;
+                        cal.setTime(new Date(millis));
+                        lim[sign] = fmt.format(cal.getTime());
+                    }
+                    System.out.println("JD +/-" +
+                                       Long.toString(jd, 16) +
+                                       ": " + ms[0] + ".." + ms[1] +
+                                       ": " + lim[0] + ".." + lim[1]);
+                }
+            }
+        }
+
+        TimeZone saveZone = TimeZone.getDefault();
+        try {
+            TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
+            //NEWCAL
+            Date PURE_GREGORIAN = new Date(Long.MIN_VALUE);
+            Date PURE_JULIAN = new Date(Long.MAX_VALUE);
+            GregorianCalendar cal = new GregorianCalendar();
+            final int EPOCH_JULIAN = 2440588;
+            final long ONE_DAY = 24*60*60*1000L;
+            int[] DATA = {
+                // Julian#   Year  Month               DOM   JULIAN:Year, Month,       DOM
+                2440588,     1970, Calendar.JANUARY,   1,    1969, Calendar.DECEMBER,  19, 
+                2415080,     1900, Calendar.MARCH,     1,    1900, Calendar.FEBRUARY,  17,
+                2451604,     2000, Calendar.FEBRUARY,  29,   2000, Calendar.FEBRUARY,  16,
+                2452269,     2001, Calendar.DECEMBER,  25,   2001, Calendar.DECEMBER,  12,
+                2416526,     1904, Calendar.FEBRUARY,  15,   1904, Calendar.FEBRUARY,  2,
+                2416656,     1904, Calendar.JUNE,      24,   1904, Calendar.JUNE,      11,
+                1721426,        1, Calendar.JANUARY,   1,       1, Calendar.JANUARY,   3,
+                2000000,      763, Calendar.SEPTEMBER, 18,    763, Calendar.SEPTEMBER, 14,
+                4000000,     6239, Calendar.JULY,      12,   6239, Calendar.MAY,       28,
+                8000000,    17191, Calendar.FEBRUARY,  26,  17190, Calendar.OCTOBER,   22,
+                10000000,   22666, Calendar.DECEMBER,  20,  22666, Calendar.JULY,      5,
+            };
+            for (int i=0; i<DATA.length; i+=7) {
+                int julian = DATA[i];
+                int year = DATA[i+1];
+                int month = DATA[i+2];
+                int dom = DATA[i+3];
+                int year2, month2, dom2;
+                long millis = (julian - EPOCH_JULIAN) * ONE_DAY;
+                String s;
+
+                // Test Gregorian computation
+                cal.setGregorianChange(PURE_GREGORIAN);
+                cal.clear();
+                cal.set(year, month, dom);
+                long calMillis = cal.getTime().getTime();
+                long delta = calMillis - millis;
+                cal.setTime(new Date(millis));
+                year2 = cal.get(Calendar.YEAR);
+                month2 = cal.get(Calendar.MONTH);
+                dom2 = cal.get(Calendar.DAY_OF_MONTH);
+                s = "G " + year + "-" + (month+1-Calendar.JANUARY) + "-" + dom +
+                    " => " + calMillis +
+                    " (" + ((float)delta/ONE_DAY) + " day delta) => " +
+                    year2 + "-" + (month2+1-Calendar.JANUARY) + "-" + dom2;
+                if (delta != 0 || year != year2 || month != month2 ||
+                    dom != dom2) errln(s + " FAIL");
+                else logln(s);
+                
+                // Test Julian computation
+                year = DATA[i+4];
+                month = DATA[i+5];
+                dom = DATA[i+6];
+                cal.setGregorianChange(PURE_JULIAN);
+                cal.clear();
+                cal.set(year, month, dom);
+                calMillis = cal.getTime().getTime();
+                delta = calMillis - millis;
+                cal.setTime(new Date(millis));
+                year2 = cal.get(Calendar.YEAR);
+                month2 = cal.get(Calendar.MONTH);
+                dom2 = cal.get(Calendar.DAY_OF_MONTH);
+                s = "J " + year + "-" + (month+1-Calendar.JANUARY) + "-" + dom +
+                    " => " + calMillis +
+                    " (" + ((float)delta/ONE_DAY) + " day delta) => " +
+                    year2 + "-" + (month2+1-Calendar.JANUARY) + "-" + dom2;
+                if (delta != 0 || year != year2 || month != month2 ||
+                    dom != dom2) errln(s + " FAIL");
+                else logln(s);
+            }
+
+            java.util.Calendar tempcal = java.util.Calendar.getInstance();
+            tempcal.clear();
+            tempcal.set(1582, Calendar.OCTOBER, 15);
+            cal.setGregorianChange(tempcal.getTime());
+            auxMapping(cal, 1582, Calendar.OCTOBER, 4);
+            auxMapping(cal, 1582, Calendar.OCTOBER, 15);
+            auxMapping(cal, 1582, Calendar.OCTOBER, 16);
+            for (int y=800; y<3000; y+=1+(int)100*Math.random()) {
+                for (int m=Calendar.JANUARY; m<=Calendar.DECEMBER; ++m) {
+                    auxMapping(cal, y, m, 15);
+                }
+            }
+        }
+        finally {
+            TimeZone.setDefault(saveZone);
+        }
+    }
+    private void auxMapping(Calendar cal, int y, int m, int d) {
+        cal.clear();
+        cal.set(y, m, d);
+        long millis = cal.getTime().getTime();
+        cal.setTime(new Date(millis));
+        int year2 = cal.get(Calendar.YEAR);
+        int month2 = cal.get(Calendar.MONTH);
+        int dom2 = cal.get(Calendar.DAY_OF_MONTH);
+        if (y != year2 || m != month2 || dom2 != d)
+            errln("Round-trip failure: " + y + "-" + (m+1) + "-"+d+" =>ms=> " +
+                  year2 + "-" + (month2+1) + "-" + dom2);
+    }
+
+    public void TestGenericAPI() {
+        // not used String str;
+
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1990, Calendar.APRIL, 15);
+        Date when = tempcal.getTime();
+
+        String tzid = "TestZone";
+        int tzoffset = 123400;
+
+        SimpleTimeZone zone = new SimpleTimeZone(tzoffset, tzid);
+        Calendar cal = (Calendar)Calendar.getInstance((SimpleTimeZone)zone.clone());
+
+        if (!zone.equals(cal.getTimeZone())) errln("FAIL: Calendar.getTimeZone failed");
+
+        Calendar cal2 = Calendar.getInstance(cal.getTimeZone());
+
+        cal.setTime(when);
+        cal2.setTime(when);
+
+        if (!(cal.equals(cal2))) errln("FAIL: Calendar.operator== failed");
+        // if ((*cal != *cal2))  errln("FAIL: Calendar.operator!= failed");
+        if (!cal.equals(cal2) ||
+            cal.before(cal2) ||
+            cal.after(cal2)) errln("FAIL: equals/before/after failed");
+
+        cal2.setTime(new Date(when.getTime() + 1000));
+        if (cal.equals(cal2) ||
+            cal2.before(cal) ||
+            cal.after(cal2)) errln("FAIL: equals/before/after failed");
+
+        cal.roll(Calendar.SECOND, true);
+        if (!cal.equals(cal2) ||
+            cal.before(cal2) ||
+            cal.after(cal2)) errln("FAIL: equals/before/after failed");
+
+        // Roll back to January
+        cal.roll(Calendar.MONTH, (int)(1 + Calendar.DECEMBER - cal.get(Calendar.MONTH)));
+        if (cal.equals(cal2) ||
+            cal2.before(cal) ||
+            cal.after(cal2)) errln("FAIL: equals/before/after failed");
+
+        // C++ only
+        /* TimeZone z = cal.orphanTimeZone();
+           if (z.getID(str) != tzid ||
+           z.getRawOffset() != tzoffset)
+           errln("FAIL: orphanTimeZone failed");
+           */
+
+        for (int i=0; i<2; ++i) {
+            boolean lenient = ( i > 0 );
+            cal.setLenient(lenient);
+            if (lenient != cal.isLenient()) errln("FAIL: setLenient/isLenient failed");
+            // Later: Check for lenient behavior
+        }
+
+        int i;
+        for (i=Calendar.SUNDAY; i<=Calendar.SATURDAY; ++i) {
+            cal.setFirstDayOfWeek(i);
+            if (cal.getFirstDayOfWeek() != i) errln("FAIL: set/getFirstDayOfWeek failed");
+        }
+
+        for (i=0; i<=7; ++i) {
+            cal.setMinimalDaysInFirstWeek(i);
+            if (cal.getMinimalDaysInFirstWeek() != i) errln("FAIL: set/getFirstDayOfWeek failed");
+        }
+
+        for (i=0; i<cal.getFieldCount(); ++i) {
+            if (cal.getMinimum(i) != cal.getGreatestMinimum(i))
+                errln("FAIL: getMinimum doesn't match getGreatestMinimum for field " + i);
+            if (cal.getLeastMaximum(i) > cal.getMaximum(i))
+                errln("FAIL: getLeastMaximum larger than getMaximum for field " + i);
+            if (cal.getMinimum(i) >= cal.getMaximum(i))
+                errln("FAIL: getMinimum not less than getMaximum for field " + i);
+        }
+
+        cal.setTimeZone(TimeZone.getDefault());
+        cal.clear();
+        cal.set(1984, 5, 24);
+        tempcal.clear();
+        tempcal.set(1984, 5, 24);
+        if (cal.getTime().getTime() != tempcal.getTime().getTime()) {
+            errln("FAIL: Calendar.set(3 args) failed");
+            logln(" Got: " + cal.getTime() + "  Expected: " + tempcal.getTime());
+        }
+
+        cal.clear();
+        cal.set(1985, 3, 2, 11, 49);
+        tempcal.clear();
+        tempcal.set(1985, 3, 2, 11, 49);
+        if (cal.getTime().getTime() != tempcal.getTime().getTime()) {
+            errln("FAIL: Calendar.set(5 args) failed");
+            logln(" Got: " + cal.getTime() + "  Expected: " + tempcal.getTime());
+        }
+
+        cal.clear();
+        cal.set(1995, 9, 12, 1, 39, 55);
+        tempcal.clear();
+        tempcal.set(1995, 9, 12, 1, 39, 55);
+        if (cal.getTime().getTime() != tempcal.getTime().getTime()) {
+            errln("FAIL: Calendar.set(6 args) failed");
+            logln(" Got: " + cal.getTime() + "  Expected: " + tempcal.getTime());
+        }
+
+        cal.getTime();
+        // This test is strange -- why do we expect certain fields to be set, and
+        // others not to be?  Revisit the appropriateness of this.  - Alan NEWCAL
+        for (i=0; i<cal.getFieldCount(); ++i) {
+            switch(i) {
+            case Calendar.YEAR: case Calendar.MONTH: case Calendar.DATE:
+            case Calendar.HOUR_OF_DAY: case Calendar.MINUTE: case Calendar.SECOND:
+            case Calendar.EXTENDED_YEAR:
+                if (!cal.isSet(i)) errln("FAIL: " + FIELD_NAME[i] + " is not set");
+                break;
+            default:
+                if (cal.isSet(i)) errln("FAIL: " + FIELD_NAME[i] + " is set");
+            }
+            cal.clear(i);
+            if (cal.isSet(i)) errln("FAIL: Calendar.clear/isSet failed");
+        }
+
+        // delete cal;
+        // delete cal2;
+
+        Locale[] loc = Calendar.getAvailableLocales();
+        long count = loc.length;
+        if (count < 1 || loc == null) {
+            errln("FAIL: getAvailableLocales failed");
+        }
+        else {
+            for (i=0; i<count; ++i) {
+                cal = Calendar.getInstance(loc[i]);
+                // delete cal;
+            }
+        }
+
+        cal = Calendar.getInstance(TimeZone.getDefault(), Locale.ENGLISH);
+        // delete cal;
+
+        cal = Calendar.getInstance(zone, Locale.ENGLISH);
+        // delete cal;
+
+        GregorianCalendar gc = new GregorianCalendar(zone);
+        // delete gc;
+
+        gc = new GregorianCalendar(Locale.ENGLISH);
+        // delete gc;
+
+        gc = new GregorianCalendar(Locale.ENGLISH);
+        // delete gc;
+
+        gc = new GregorianCalendar(zone, Locale.ENGLISH);
+        // delete gc;
+
+        gc = new GregorianCalendar(zone);
+        // delete gc;
+
+        gc = new GregorianCalendar(1998, 10, 14, 21, 43);
+        tempcal.clear();
+        tempcal.set(1998, 10, 14, 21, 43);
+        if (gc.getTime().getTime() != tempcal.getTime().getTime())
+            errln("FAIL: new GregorianCalendar(ymdhm) failed");
+        // delete gc;
+
+        gc = new GregorianCalendar(1998, 10, 14, 21, 43, 55);
+        tempcal.clear();
+        tempcal.set(1998, 10, 14, 21, 43, 55);
+        if (gc.getTime().getTime() != tempcal.getTime().getTime())
+            errln("FAIL: new GregorianCalendar(ymdhms) failed");
+
+        // C++ only:
+        // GregorianCalendar gc2 = new GregorianCalendar(Locale.ENGLISH);
+        // gc2 = gc;
+        // if (gc2 != gc || !(gc2 == gc)) errln("FAIL: GregorianCalendar assignment/operator==/operator!= failed");
+        // delete gc;
+        // delete z;
+    }
+
+    // Verify Roger Webster's bug
+    public void TestRog() {
+        GregorianCalendar gc = new GregorianCalendar();
+
+        int year = 1997, month = Calendar.APRIL, date = 1;
+        gc.set(year, month, date); // April 1, 1997
+
+        gc.set(Calendar.HOUR_OF_DAY, 23);
+        gc.set(Calendar.MINUTE, 0);
+        gc.set(Calendar.SECOND, 0);
+        gc.set(Calendar.MILLISECOND, 0);
+
+        for (int i = 0; i < 9; i++, gc.add(Calendar.DATE, 1)) {
+            if (gc.get(Calendar.YEAR) != year ||
+                gc.get(Calendar.MONTH) != month ||
+                gc.get(Calendar.DATE) != (date + i))
+                errln("FAIL: Date " + gc.getTime() + " wrong");
+        }
+    }
+
+    // Verify DAY_OF_WEEK
+    public void TestDOW943() {
+        dowTest(false);
+        dowTest(true);
+    }
+
+    void dowTest(boolean lenient) {
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.set(1997, Calendar.AUGUST, 12); // Wednesday
+        cal.getTime(); // Force update
+        cal.setLenient(lenient);
+        cal.set(1996, Calendar.DECEMBER, 1); // Set the date to be December 1, 1996
+        int dow = cal.get(Calendar.DAY_OF_WEEK);
+        int min = cal.getMinimum(Calendar.DAY_OF_WEEK);
+        int max = cal.getMaximum(Calendar.DAY_OF_WEEK);
+        if (dow < min || dow > max) errln("FAIL: Day of week " + dow + " out of range");
+        if (dow != Calendar.SUNDAY) {
+            errln("FAIL2: Day of week should be SUNDAY; is " + dow + ": " + cal.getTime());
+        }
+        if (min != Calendar.SUNDAY || max != Calendar.SATURDAY) errln("FAIL: Min/max bad");
+    }
+
+    // Verify that the clone method produces distinct objects with no
+    // unintentionally shared fields.
+    public void TestClonesUnique908() {
+        Calendar c = Calendar.getInstance();
+        Calendar d = (Calendar)c.clone();
+        c.set(Calendar.MILLISECOND, 123);
+        d.set(Calendar.MILLISECOND, 456);
+        if (c.get(Calendar.MILLISECOND) != 123 ||
+            d.get(Calendar.MILLISECOND) != 456) {
+            errln("FAIL: Clones share fields");
+        }
+    }
+
+    // Verify effect of Gregorian cutoff value
+    public void TestGregorianChange768() {
+        boolean b;
+        GregorianCalendar c = new GregorianCalendar();
+        logln("With cutoff " + c.getGregorianChange());
+        logln(" isLeapYear(1800) = " + (b=c.isLeapYear(1800)));
+        logln(" (should be FALSE)");
+        if (b != false) errln("FAIL");
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1900, 0, 1);
+        c.setGregorianChange(tempcal.getTime()); // Jan 1 1900
+        logln("With cutoff " + c.getGregorianChange());
+        logln(" isLeapYear(1800) = " + (b=c.isLeapYear(1800)));
+        logln(" (should be TRUE)");
+        if (b != true) errln("FAIL");
+    }
+
+    // Test the correct behavior of the disambiguation algorithm.
+    public void TestDisambiguation765() throws Exception {
+        Calendar c = Calendar.getInstance();
+        c.setLenient(false);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.MONTH, Calendar.JUNE);
+        c.set(Calendar.DATE, 3);
+
+        verify765("1997 third day of June = ", c, 1997, Calendar.JUNE, 3);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.MONTH, Calendar.JUNE);
+        c.set(Calendar.DAY_OF_WEEK_IN_MONTH, 1);
+        verify765("1997 first Tuesday in June = ", c, 1997, Calendar.JUNE, 3);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.MONTH, Calendar.JUNE);
+        c.set(Calendar.DAY_OF_WEEK_IN_MONTH, -1);
+        verify765("1997 last Tuesday in June = ", c, 1997, Calendar.JUNE, 24);
+
+        IllegalArgumentException e = null;
+        try {
+            c.clear();
+            c.set(Calendar.YEAR, 1997);
+            c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+            c.set(Calendar.MONTH, Calendar.JUNE);
+            c.set(Calendar.DAY_OF_WEEK_IN_MONTH, 0);
+            c.getTime();
+        }
+        catch (IllegalArgumentException ex) {
+            e = ex;
+        }
+        verify765("1997 zero-th Tuesday in June = ", e, c);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.MONTH, Calendar.JUNE);
+        c.set(Calendar.WEEK_OF_MONTH, 1);
+        verify765("1997 Tuesday in week 1 of June = ", c, 1997, Calendar.JUNE, 3);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.MONTH, Calendar.JUNE);
+        c.set(Calendar.WEEK_OF_MONTH, 5);
+        verify765("1997 Tuesday in week 5 of June = ", c, 1997, Calendar.JULY, 1);
+
+        try {
+            c.clear();
+            c.set(Calendar.YEAR, 1997);
+            c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+            c.set(Calendar.MONTH, Calendar.JUNE);
+            c.set(Calendar.WEEK_OF_MONTH, 0);
+            verify765("1997 Tuesday in week 0 of June = ", c, 1997, Calendar.MAY, 27);
+        }
+        catch (IllegalArgumentException ex) {
+            errln("FAIL: Exception seen:");
+            // ex.printStackTrace(log);
+        }
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.WEEK_OF_YEAR, 1);
+        verify765("1997 Tuesday in week 1 of year = ", c, 1996, Calendar.DECEMBER, 31);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.WEEK_OF_YEAR, 10);
+        verify765("1997 Tuesday in week 10 of year = ", c, 1997, Calendar.MARCH, 4);
+
+        try {
+            c.clear();
+            c.set(Calendar.YEAR, 1997);
+            c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+            c.set(Calendar.WEEK_OF_YEAR, 0);
+            verify765("1997 Tuesday in week 0 of year = ", c, 1996, Calendar.DECEMBER, 24);
+            throw new Exception("Fail: WEEK_OF_YEAR 0 should be illegal");
+        }
+        catch (IllegalArgumentException ex) {
+            System.out.print("");
+        }
+    }
+    void verify765(String msg, Calendar c, int year, int month, int day) {
+        int cy = c.get(Calendar.YEAR); // NEWCAL
+        int cm = c.get(Calendar.MONTH);
+        int cd = c.get(Calendar.DATE);
+        if (cy == year &&
+            cm == month &&
+            cd == day) {
+            logln("PASS: " + msg + c.getTime());
+        }
+        else {
+            errln("FAIL: " + msg + cy + "/" + (cm+1) + "/" + cd +
+                  "=" + c.getTime() +
+                  "; expected " +
+                  year + "/" + (month+1) + "/" + day);
+        }
+    }
+    // Called when e expected to be non-null
+    void verify765(String msg, IllegalArgumentException e, Calendar c) {
+        if (e == null) errln("FAIL: No IllegalArgumentException for " + msg +
+                             c.getTime());
+        else logln("PASS: " + msg + "IllegalArgument as expected");
+    }
+
+    // Test the behavior of GMT vs. local time
+    public void TestGMTvsLocal4064654() {
+        // Sample output 1:
+        // % /usr/local/java/jdk1.1.3/solaris/bin/java test 1997 1 1 12 0 0
+        // date = Wed Jan 01 04:00:00 PST 1997
+        // offset for Wed Jan 01 04:00:00 PST 1997= -8hr
+        aux4064654(1997, 1, 1, 12, 0, 0);
+
+        // Sample output 2:
+        // % /usr/local/java/jdk1.1.3/solaris/bin/java test 1997 4 16 18 30 0
+        // date = Wed Apr 16 10:30:00 PDT 1997
+        // offset for Wed Apr 16 10:30:00 PDT 1997= -7hr
+
+        // Note that in sample output 2 according to the offset, the gmt time
+        // of the result would be 1997 4 16 17 30 0 which is different from the
+        // input of 1997 4 16 18 30 0.
+        aux4064654(1997, 4, 16, 18, 30, 0);
+    }
+    void aux4064654(int yr, int mo, int dt, int hr, int mn, int sc) {
+        Date date;
+        Calendar gmtcal = Calendar.getInstance();
+        gmtcal.setTimeZone(TimeZone.getTimeZone("Africa/Casablanca"));
+        gmtcal.set(yr, mo-1, dt, hr, mn, sc);
+        gmtcal.set(Calendar.MILLISECOND, 0);
+
+        date = gmtcal.getTime();
+        logln("date = "+date);
+
+        Calendar cal = Calendar.getInstance();
+	cal.setTimeZone(TimeZone.getTimeZone("America/Los_Angels"));
+        cal.setTime(date);
+
+        int offset = cal.getTimeZone().getOffset(cal.get(Calendar.ERA),
+                                                 cal.get(Calendar.YEAR),
+                                                 cal.get(Calendar.MONTH),
+                                                 cal.get(Calendar.DATE),
+                                                 cal.get(Calendar.DAY_OF_WEEK),
+                                                 cal.get(Calendar.MILLISECOND));
+
+        logln("offset for "+date+"= "+(offset/1000/60/60.0) + "hr");
+
+        int utc = ((cal.get(Calendar.HOUR_OF_DAY) * 60 +
+                    cal.get(Calendar.MINUTE)) * 60 +
+                   cal.get(Calendar.SECOND)) * 1000 +
+            cal.get(Calendar.MILLISECOND) - offset;
+
+        int expected = ((hr * 60 + mn) * 60 + sc) * 1000;
+
+        if (utc != expected)
+            errln("FAIL: Discrepancy of " +
+                  (utc - expected) + " millis = " +
+                  ((utc-expected)/1000/60/60.0) + " hr");
+    }
+
+    // Verify that add and set work regardless of the order in which
+    // they are called.
+    public void TestAddSetOrder621() {
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1997, 4, 14, 13, 23, 45);
+        Date d = tempcal.getTime();
+
+        Calendar cal = Calendar.getInstance ();
+        cal.setTime (d);
+        cal.add (Calendar.DATE, -5);
+        cal.set (Calendar.HOUR_OF_DAY, 0);
+        cal.set (Calendar.MINUTE, 0);
+        cal.set (Calendar.SECOND, 0);
+        // ma feb 03 00:00:00 GMT+00:00 1997
+        String s = cal.getTime ().toString ();
+
+        cal = Calendar.getInstance ();
+        cal.setTime (d);
+        cal.set (Calendar.HOUR_OF_DAY, 0);
+        cal.set (Calendar.MINUTE, 0);
+        cal.set (Calendar.SECOND, 0);
+        cal.add (Calendar.DATE, -5);
+        // ma feb 03 13:11:06 GMT+00:00 1997
+        String s2 = cal.getTime ().toString ();
+
+        if (s.equals(s2))
+            logln("Pass: " + s + " == " + s2);
+        else
+            errln("FAIL: " + s + " != " + s2);
+    }
+
+    // Verify that add works.
+    public void TestAdd520() {
+        int y = 1997, m = Calendar.FEBRUARY, d = 1;
+        GregorianCalendar temp = new GregorianCalendar( y, m, d );
+        check520(temp, y, m, d);
+
+        temp.add( temp.YEAR, 1 );
+        y++;
+        check520(temp, y, m, d);
+
+        temp.add( temp.MONTH, 1 );
+        m++;
+        check520(temp, y, m, d);
+
+        temp.add( temp.DATE, 1 );
+        d++;
+        check520(temp, y, m, d);
+
+        temp.add( temp.DATE, 2 );
+        d += 2;
+        check520(temp, y, m, d);
+
+        temp.add( temp.DATE, 28 );
+        d = 1; ++m;
+        check520(temp, y, m, d);
+    }
+    void check520(Calendar c, int y, int m, int d) {
+        if (c.get(Calendar.YEAR) != y ||
+            c.get(Calendar.MONTH) != m ||
+            c.get(Calendar.DATE) != d) {
+            errln("FAILURE: Expected YEAR/MONTH/DATE of " +
+                  y + "/" + (m+1) + "/" + d +
+                  "; got " +
+                  c.get(Calendar.YEAR) + "/" +
+                  (c.get(Calendar.MONTH)+1) + "/" +
+                  c.get(Calendar.DATE));
+        }
+        else logln("Confirmed: " +
+                   y + "/" + (m+1) + "/" + d);
+    }
+
+    // Verify that setting fields works.  This test fails when an exception is thrown.
+    public void TestFieldSet4781() {
+        try {
+            GregorianCalendar g = new GregorianCalendar();
+            GregorianCalendar g2 = new GregorianCalendar();
+            // At this point UTC value is set, various fields are not.
+            // Now set to noon.
+            g2.set(Calendar.HOUR, 12);
+            g2.set(Calendar.MINUTE, 0);
+            g2.set(Calendar.SECOND, 0);
+            // At this point the object thinks UTC is NOT set, but fields are set.
+            // The following line will result in IllegalArgumentException because
+            // it thinks the YEAR is set and it is NOT.
+            if (g2.equals(g))
+                logln("Same");
+            else
+                logln("Different");
+        }
+        catch (IllegalArgumentException e) {
+            errln("Unexpected exception seen: " + e);
+        }
+    }
+
+    // Test serialization of a Calendar object
+    public void TestSerialize337() {
+        Calendar cal = Calendar.getInstance();
+
+        boolean ok = false;
+
+        try {
+            FileOutputStream f = new FileOutputStream(FILENAME);
+            ObjectOutput s = new ObjectOutputStream(f);
+            s.writeObject(PREFIX);
+            s.writeObject(cal);
+            s.writeObject(POSTFIX);
+            f.close();
+
+            FileInputStream in = new FileInputStream(FILENAME);
+            ObjectInputStream t = new ObjectInputStream(in);
+            String pre = (String)t.readObject();
+            Calendar c = (Calendar)t.readObject();
+            String post = (String)t.readObject();
+            in.close();
+
+            ok = pre.equals(PREFIX) &&
+                post.equals(POSTFIX) &&
+                cal.equals(c);
+
+            File fl = new File(FILENAME);
+            fl.delete();
+        }
+        catch (IOException e) {
+            errln("FAIL: Exception received:");
+            // e.printStackTrace(log);
+        }
+        catch (ClassNotFoundException e) {
+            errln("FAIL: Exception received:");
+            // e.printStackTrace(log);
+        }
+
+        if (!ok) errln("Serialization of Calendar object failed.");
+    }
+    static final String PREFIX = "abc";
+    static final String POSTFIX = "def";
+    static final String FILENAME = "tmp337.bin";
+
+    // Try to zero out the seconds field
+    public void TestSecondsZero121() {
+        Calendar        cal = new GregorianCalendar();
+        // Initialize with current date/time
+        cal.setTime(new Date());
+        // Round down to minute
+        cal.set(Calendar.SECOND, 0);
+        Date    d = cal.getTime();
+        String s = d.toString();
+        if (s.indexOf(":00 ") < 0) errln("Expected to see :00 in " + s);
+    }
+
+    // Try various sequences of add, set, and get method calls.
+    public void TestAddSetGet0610() {
+        //
+        // Error case 1:
+        // - Upon initialization calendar fields, millis = System.currentTime
+        // - After set is called fields are initialized, time is not
+        // - Addition uses millis which are still *now*
+        //
+        {
+            Calendar calendar = new GregorianCalendar( ) ;
+            calendar.set( 1993, Calendar.JANUARY, 4 ) ;
+            logln( "1A) " + value( calendar ) ) ;
+            calendar.add( Calendar.DATE, 1 ) ;
+            String v = value(calendar);
+            logln( "1B) " + v );
+            logln( "--) 1993/0/5" ) ;
+            if (!v.equals(EXPECTED_0610)) errln("Expected " + EXPECTED_0610 +
+                                                "; saw " + v);
+        }
+
+        //
+        // Error case 2:
+        // - Upon initialization calendar fields set, millis = 0
+        // - Addition uses millis which are still 1970, 0, 1
+        //
+
+        {
+            Calendar calendar = new GregorianCalendar( 1993, Calendar.JANUARY, 4 ) ;
+            logln( "2A) " + value( calendar ) ) ;
+            calendar.add( Calendar.DATE, 1 ) ;
+            String v = value(calendar);
+            logln( "2B) " + v );
+            logln( "--) 1993/0/5" ) ;
+            if (!v.equals(EXPECTED_0610)) errln("Expected " + EXPECTED_0610 +
+                                                "; saw " + v);
+        }
+
+        //
+        // Error case 3:
+        // - Upon initialization calendar fields, millis = 0
+        // - getTime( ) is called which forces the millis to be set
+        // - Addition uses millis which are correct
+        //
+
+        {
+            Calendar calendar = new GregorianCalendar( 1993, Calendar.JANUARY, 4 ) ;
+            logln( "3A) " + value( calendar ) ) ;
+            calendar.getTime( ) ;
+            calendar.add( Calendar.DATE, 1 ) ;
+            String v = value(calendar);
+            logln( "3B) " + v ) ;
+            logln( "--) 1993/0/5" ) ;
+            if (!v.equals(EXPECTED_0610)) errln("Expected " + EXPECTED_0610 +
+                                                "; saw " + v);
+        }
+    }
+    static String value( Calendar calendar ) {
+        return( calendar.get( Calendar.YEAR )  + "/" +
+                calendar.get( Calendar.MONTH ) + "/" +
+                calendar.get( Calendar.DATE ) ) ;
+    }
+    static String EXPECTED_0610 = "1993/0/5";
+
+    // Test that certain fields on a certain date are as expected.
+    public void TestFields060() {
+        int year = 1997;
+        int month = java.util.Calendar.OCTOBER;  //october
+        int dDate = 22;   //DAYOFWEEK should return 3 for Wednesday
+        GregorianCalendar calendar = null;
+
+        calendar = new GregorianCalendar( year, month, dDate);
+        for (int i=0; i<EXPECTED_FIELDS.length; ) {
+            int field = EXPECTED_FIELDS[i++];
+            int expected = EXPECTED_FIELDS[i++];
+            if (calendar.get(field) != expected) {
+                errln("Expected field " + field + " to have value " + expected +
+                      "; received " + calendar.get(field) + " instead");
+            }
+        }
+    }
+    static int EXPECTED_FIELDS[] = {
+        Calendar.YEAR, 1997,
+        Calendar.MONTH, Calendar.OCTOBER,
+        Calendar.DAY_OF_MONTH, 22,
+        Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY,
+        Calendar.DAY_OF_WEEK_IN_MONTH, 4,
+        Calendar.DAY_OF_YEAR, 295
+    };
+
+    // Verify that the fields are as expected (mostly zero) at the epoch start.
+    // Note that we adjust for the default timezone to get most things to zero.
+    public void TestEpochStartFields() {
+        TimeZone z = TimeZone.getDefault();
+        Calendar c = Calendar.getInstance();
+        Date d = new Date(-z.getRawOffset());
+        if (z.inDaylightTime(d)) {
+            logln("Warning: Skipping test because " + d +
+                  " is in DST.");
+        }
+        else {
+            c.setTime(d);
+            for (int i=0; i<Calendar.ZONE_OFFSET; ++i) {
+                if (c.get(i) != EPOCH_FIELDS[i])
+                    errln("Expected field " + i + " to have value " + EPOCH_FIELDS[i] +
+                          "; saw " + c.get(i) + " instead");
+            }
+            if (c.get(Calendar.ZONE_OFFSET) != z.getRawOffset())
+                errln("Expected field ZONE_OFFSET to have value " + z.getRawOffset() +
+                      "; saw " + c.get(Calendar.ZONE_OFFSET) + " instead");
+            if (c.get(Calendar.DST_OFFSET) != 0)
+                errln("Expected field DST_OFFSET to have value 0" +
+                      "; saw " + c.get(Calendar.DST_OFFSET) + " instead");
+        }
+    }
+    // These are the fields at the epoch start
+    static int EPOCH_FIELDS[] = { 1, 1970, 0, 1, 1, 1, 1, 5, 1, 0, 0, 0, 0, 0, 0, -28800000, 0 };
+
+    // Verify that as you add days to the calendar (e.g., 24 day periods),
+    // the day of the week shifts in the expected pattern.
+    public void TestDOWProgression() {
+        Calendar cal =
+            new GregorianCalendar(1972, Calendar.OCTOBER, 26);
+        marchByDelta(cal, 24); // Last parameter must be != 0 modulo 7
+    }
+
+    // Supply a delta which is not a multiple of 7.
+    void marchByDelta(Calendar cal, int delta) {
+        Calendar cur = (Calendar)cal.clone();
+        int initialDOW = cur.get(Calendar.DAY_OF_WEEK);
+        int DOW, newDOW = initialDOW;
+        do {
+            DOW = newDOW;
+            logln("DOW = " + DOW + "  " + cur.getTime());
+
+            cur.add(Calendar.DAY_OF_WEEK, delta);
+            newDOW = cur.get(Calendar.DAY_OF_WEEK);
+            int expectedDOW = 1 + (DOW + delta - 1) % 7;
+            if (newDOW != expectedDOW) {
+                errln("Day of week should be " + expectedDOW +
+                      " instead of " + newDOW + " on " + cur.getTime());
+                return;
+            }
+        }
+        while (newDOW != initialDOW);
+    }
+
+    public void TestActualMinMax() {
+        Calendar cal = new GregorianCalendar(1967, Calendar.MARCH, 10);
+        cal.setFirstDayOfWeek(Calendar.SUNDAY);
+        cal.setMinimalDaysInFirstWeek(3);
+
+        if (cal.getActualMinimum(Calendar.DAY_OF_MONTH) != 1)
+            errln("Actual minimum date for 3/10/1967 should have been 1; got " +
+                  cal.getActualMinimum(Calendar.DAY_OF_MONTH));
+        if (cal.getActualMaximum(Calendar.DAY_OF_MONTH) != 31)
+            errln("Actual maximum date for 3/10/1967 should have been 31; got " +
+                  cal.getActualMaximum(Calendar.DAY_OF_MONTH));
+
+        cal.set(Calendar.MONTH, Calendar.FEBRUARY);
+        if (cal.getActualMaximum(Calendar.DAY_OF_MONTH) != 28)
+            errln("Actual maximum date for 2/10/1967 should have been 28; got " +
+                  cal.getActualMaximum(Calendar.DAY_OF_MONTH));
+        if (cal.getActualMaximum(Calendar.DAY_OF_YEAR) != 365)
+            errln("Number of days in 1967 should have been 365; got " +
+                  cal.getActualMaximum(Calendar.DAY_OF_YEAR));
+
+        cal.set(Calendar.YEAR, 1968);
+        if (cal.getActualMaximum(Calendar.DAY_OF_MONTH) != 29)
+            errln("Actual maximum date for 2/10/1968 should have been 29; got " +
+                  cal.getActualMaximum(Calendar.DAY_OF_MONTH));
+        if (cal.getActualMaximum(Calendar.DAY_OF_YEAR) != 366)
+            errln("Number of days in 1968 should have been 366; got " +
+                  cal.getActualMaximum(Calendar.DAY_OF_YEAR));
+        // Using week settings of SUNDAY/3 (see above)
+        if (cal.getActualMaximum(Calendar.WEEK_OF_YEAR) != 52)
+            errln("Number of weeks in 1968 should have been 52; got " +
+                  cal.getActualMaximum(Calendar.WEEK_OF_YEAR));
+
+        cal.set(Calendar.YEAR, 1976);
+        cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); // Added - Liu 11/6/00
+        // Using week settings of SUNDAY/3 (see above)
+        if (cal.getActualMaximum(Calendar.WEEK_OF_YEAR) != 53)
+            errln("Number of weeks in 1976 should have been 53; got " +
+                  cal.getActualMaximum(Calendar.WEEK_OF_YEAR));
+    }
+
+    public void TestRoll() {
+        Calendar cal = new GregorianCalendar(1997, Calendar.JANUARY, 31);
+
+        int[] dayValues = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31 };
+        for (int i = 0; i < dayValues.length; i++) {
+            Calendar cal2 = (Calendar)cal.clone();
+            cal2.roll(Calendar.MONTH, i);
+            if (cal2.get(Calendar.DAY_OF_MONTH) != dayValues[i])
+                errln("Rolling the month in 1/31/1997 up by " + i + " should have yielded "
+                      + ((i + 1) % 12) + "/" + dayValues[i] + "/1997, but actually yielded "
+                      + ((i + 1) % 12) + "/" + cal2.get(Calendar.DAY_OF_MONTH) + "/1997.");
+        }
+
+        cal.set(1996, Calendar.FEBRUARY, 29);
+
+        //int[] monthValues = { 1, 2, 2, 2, 1, 2, 2, 2, 1, 2 };
+        //int[] dayValues2 = { 29, 1, 1, 1, 29, 1, 1, 1, 29, 1 };
+
+        // I've revised the expected values to make more sense -- rolling
+        // the year should pin the DAY_OF_MONTH. - Liu 11/6/00
+        int[] monthValues = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
+        int[] dayValues2 = { 29, 28, 28, 28, 29, 28, 28, 28, 29, 28 };
+
+        for (int i = 0; i < dayValues2.length; i++) {
+            Calendar cal2 = (Calendar)cal.clone();
+            cal2.roll(Calendar.YEAR, i);
+            if (cal2.get(Calendar.DAY_OF_MONTH) != dayValues2[i] || cal2.get(Calendar.MONTH)
+                != monthValues[i])
+                errln("Roll 2/29/1996 by " + i + " year: expected "
+                      + (monthValues[i] + 1) + "/" + dayValues2[i] + "/"
+                      + (1996 + i) + ", got "
+                      + (cal2.get(Calendar.MONTH) + 1) + "/" +
+                      cal2.get(Calendar.DAY_OF_MONTH) + "/" + cal2.get(Calendar.YEAR));
+        }
+
+        // Test rolling hour of day
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.roll(Calendar.HOUR_OF_DAY, -2);
+        int f = cal.get(Calendar.HOUR_OF_DAY);
+        if (f != 22) errln("Rolling HOUR_OF_DAY=0 delta=-2 gave " + f + " Wanted 22");
+        cal.roll(Calendar.HOUR_OF_DAY, 5);
+        f = cal.get(Calendar.HOUR_OF_DAY);
+        if (f != 3) errln("Rolling HOUR_OF_DAY=22 delta=5 gave " + f + " Wanted 3");
+        cal.roll(Calendar.HOUR_OF_DAY, 21);
+        f = cal.get(Calendar.HOUR_OF_DAY);
+        if (f != 0) errln("Rolling HOUR_OF_DAY=3 delta=21 gave " + f + " Wanted 0");
+
+        // Test rolling hour
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.roll(Calendar.HOUR, -2);
+        f = cal.get(Calendar.HOUR);
+        if (f != 10) errln("Rolling HOUR=0 delta=-2 gave " + f + " Wanted 10");
+        cal.roll(Calendar.HOUR, 5);
+        f = cal.get(Calendar.HOUR);
+        if (f != 3) errln("Rolling HOUR=10 delta=5 gave " + f + " Wanted 3");
+        cal.roll(Calendar.HOUR, 9);
+        f = cal.get(Calendar.HOUR);
+        if (f != 0) errln("Rolling HOUR=3 delta=9 gave " + f + " Wanted 0");
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/dev/test/calendar/HebrewTest.java b/src/com/ibm/icu/dev/test/calendar/HebrewTest.java
new file mode 100755
index 0000000..c20252a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/HebrewTest.java
@@ -0,0 +1,365 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/calendar/HebrewTest.java,v $ 
+ * $Date: 2002/08/07 03:10:18 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.dev.test.calendar;
+
+//import com.ibm.icu.dev.test.*;
+//import com.ibm.icu.util.*;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.HebrewCalendar;
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * Tests for the <code>HebrewCalendar</code> class.
+ */
+public class HebrewTest extends CalendarTest {
+    public static void main(String args[]) throws Exception {
+        new HebrewTest().run(args);
+    }
+
+    // Constants to save typing.
+    public static final int TISHRI  = HebrewCalendar.TISHRI;
+    public static final int HESHVAN = HebrewCalendar.HESHVAN;
+    public static final int KISLEV  = HebrewCalendar.KISLEV;
+    public static final int TEVET   = HebrewCalendar.TEVET;
+    public static final int SHEVAT  = HebrewCalendar.SHEVAT;
+    public static final int ADAR_1  = HebrewCalendar.ADAR_1;
+    public static final int ADAR    = HebrewCalendar.ADAR;
+    public static final int NISAN   = HebrewCalendar.NISAN;
+    public static final int IYAR    = HebrewCalendar.IYAR;
+    public static final int SIVAN   = HebrewCalendar.SIVAN;
+    public static final int TAMUZ   = HebrewCalendar.TAMUZ;
+    public static final int AV      = HebrewCalendar.AV;
+    public static final int ELUL    = HebrewCalendar.ELUL;
+
+    /**
+     * Test the behavior of HebrewCalendar.roll
+     * The only real nastiness with roll is the MONTH field, since a year can
+     * have a variable number of months.
+     */
+    public void TestRoll() {
+        int[][] tests = new int[][] {
+            //       input                roll by          output
+            //  year  month     day     field amount    year  month     day
+    
+            {   5759, HESHVAN,   2,     MONTH,   1,     5759, KISLEV,    2 },   // non-leap years
+            {   5759, SHEVAT,    2,     MONTH,   1,     5759, ADAR,      2 },
+            {   5759, SHEVAT,    2,     MONTH,   2,     5759, NISAN,     2 },
+            {   5759, SHEVAT,    2,     MONTH,  12,     5759, SHEVAT,    2 },
+            {   5759, AV,        1,     MONTH,  12,     5759, AV,        1 }, // Alan
+
+            {   5757, HESHVAN,   2,     MONTH,   1,     5757, KISLEV,    2 },   // leap years
+            {   5757, SHEVAT,    2,     MONTH,   1,     5757, ADAR_1,    2 },
+            {   5757, SHEVAT,    2,     MONTH,   2,     5757, ADAR,      2 },
+            {   5757, SHEVAT,    2,     MONTH,   3,     5757, NISAN,     2 },
+            {   5757, SHEVAT,    2,     MONTH,  12,     5757, TEVET,     2 },
+            {   5757, SHEVAT,    2,     MONTH,  13,     5757, SHEVAT,    2 },
+            {   5757, AV,        1,     MONTH,  12,     5757, TAMUZ,     1 }, // Alan
+            
+            {   5757, KISLEV,    1,     DATE,   30,     5757, KISLEV,    2 },   // 29-day month
+            {   5758, KISLEV,    1,     DATE,   31,     5758, KISLEV,    2 },   // 30-day month
+            
+            // Try some other fields too
+            {   5757, TISHRI,    1,     YEAR,    1,     5758, TISHRI,    1 },
+   
+
+            // Try some rolls that require other fields to be adjusted
+            {   5757, TISHRI,   30,     MONTH,   1,     5757, HESHVAN,  29 },
+            {   5758, KISLEV,   30,     YEAR,   -1,     5757, KISLEV,   29 },
+        };
+       
+        HebrewCalendar cal = new HebrewCalendar(UTC, Locale.getDefault());
+
+        doRollAdd(ROLL, cal, tests);
+    }
+    
+    /**
+     * Test the behavior of HebrewCalendar.roll
+     * The only real nastiness with roll is the MONTH field, since a year can
+     * have a variable number of months.
+     */
+    public void TestAdd() {
+        int[][] tests = new int[][] {
+            //       input                add by          output
+            //  year  month     day     field amount    year  month     day
+            {   5759, HESHVAN,   2,     MONTH,   1,     5759, KISLEV,    2 },   // non-leap years
+            {   5759, SHEVAT,    2,     MONTH,   1,     5759, ADAR,      2 },
+            {   5759, SHEVAT,    2,     MONTH,   2,     5759, NISAN,     2 },
+            {   5759, SHEVAT,    2,     MONTH,  12,     5760, SHEVAT,    2 },
+
+            {   5757, HESHVAN,   2,     MONTH,   1,     5757, KISLEV,    2 },   // leap years
+            {   5757, SHEVAT,    2,     MONTH,   1,     5757, ADAR_1,    2 },
+            {   5757, SHEVAT,    2,     MONTH,   2,     5757, ADAR,      2 },
+            {   5757, SHEVAT,    2,     MONTH,   3,     5757, NISAN,     2 },
+            {   5757, SHEVAT,    2,     MONTH,  12,     5758, TEVET,     2 },
+            {   5757, SHEVAT,    2,     MONTH,  13,     5758, SHEVAT,    2 },
+            
+            {   5757, KISLEV,    1,     DATE,   30,     5757, TEVET,     2 },   // 29-day month
+            {   5758, KISLEV,    1,     DATE,   31,     5758, TEVET,     2 },   // 30-day month
+        };
+       
+        HebrewCalendar cal = new HebrewCalendar(UTC, Locale.getDefault());
+
+        doRollAdd(ADD, cal, tests);
+    }
+
+    /**
+     * A huge list of test cases to make sure that computeTime and computeFields
+     * work properly for a wide range of data.
+     */
+    public void TestCases() {
+        doTestCases(testCases, new HebrewCalendar());
+    }
+
+    static final TestCase[] testCases = {
+        //
+        // Most of these test cases were taken from the back of
+        // "Calendrical Calculations", with some extras added to help
+        // debug a few of the problems that cropped up in development.
+        //
+        // The months in this table are 1-based rather than 0-based,
+        // because it's easier to edit that way.
+        //
+        //         Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
+        new TestCase(1507231.5,  0,  3174,   12,  10,  SUN,   0,  0,  0),
+        new TestCase(1660037.5,  0,  3593,    3,  25,  WED,   0,  0,  0),
+        new TestCase(1746893.5,  0,  3831,    1,   3,  WED,   0,  0,  0),
+        new TestCase(1770641.5,  0,  3896,    1,   9,  SUN,   0,  0,  0),
+        new TestCase(1892731.5,  0,  4230,    4,  18,  WED,   0,  0,  0),
+        new TestCase(1931579.5,  0,  4336,   10,   4,  MON,   0,  0,  0),
+        new TestCase(1974851.5,  0,  4455,    2,  13,  SAT,   0,  0,  0),
+        new TestCase(2091164.5,  0,  4773,    9,   6,  SUN,   0,  0,  0),
+        new TestCase(2121509.5,  0,  4856,    9,  23,  SUN,   0,  0,  0),
+        new TestCase(2155779.5,  0,  4950,    8,   7,  FRI,   0,  0,  0),
+        new TestCase(2174029.5,  0,  5000,    7,   8,  SAT,   0,  0,  0),
+        new TestCase(2191584.5,  0,  5048,    8,  21,  FRI,   0,  0,  0),
+        new TestCase(2195261.5,  0,  5058,    9,   7,  SUN,   0,  0,  0),
+        new TestCase(2229274.5,  0,  5151,   11,   1,  SUN,   0,  0,  0),
+        new TestCase(2245580.5,  0,  5196,    5,   7,  WED,   0,  0,  0),
+        new TestCase(2266100.5,  0,  5252,    8,   3,  SAT,   0,  0,  0),
+        new TestCase(2288542.5,  0,  5314,    1,   1,  SAT,   0,  0,  0),
+        new TestCase(2290901.5,  0,  5320,    6,  27,  SAT,   0,  0,  0),
+        new TestCase(2323140.5,  0,  5408,   10,  20,  WED,   0,  0,  0),
+        new TestCase(2334551.5,  0,  5440,    1,   1,  THU,   0,  0,  0),
+        new TestCase(2334581.5,  0,  5440,    2,   1,  SAT,   0,  0,  0),
+        new TestCase(2334610.5,  0,  5440,    3,   1,  SUN,   0,  0,  0),
+        new TestCase(2334639.5,  0,  5440,    4,   1,  MON,   0,  0,  0),
+        new TestCase(2334668.5,  0,  5440,    5,   1,  TUE,   0,  0,  0),
+        new TestCase(2334698.5,  0,  5440,    6,   1,  THU,   0,  0,  0),
+        new TestCase(2334728.5,  0,  5440,    7,   1,  SAT,   0,  0,  0),
+        new TestCase(2334757.5,  0,  5440,    8,   1,  SUN,   0,  0,  0),
+        new TestCase(2334787.5,  0,  5440,    9,   1,  TUE,   0,  0,  0),
+        new TestCase(2334816.5,  0,  5440,   10,   1,  WED,   0,  0,  0),
+        new TestCase(2334846.5,  0,  5440,   11,   1,  FRI,   0,  0,  0),
+        new TestCase(2334848.5,  0,  5440,   11,   3,  SUN,   0,  0,  0),
+        new TestCase(2334934.5,  0,  5441,    1,   1,  TUE,   0,  0,  0),
+        new TestCase(2348020.5,  0,  5476,   12,   5,  FRI,   0,  0,  0),
+        new TestCase(2366978.5,  0,  5528,   11,   4,  SUN,   0,  0,  0),
+        new TestCase(2385648.5,  0,  5579,   12,  11,  MON,   0,  0,  0),
+        new TestCase(2392825.5,  0,  5599,    8,  12,  WED,   0,  0,  0),
+        new TestCase(2416223.5,  0,  5663,    8,  22,  SUN,   0,  0,  0),
+        new TestCase(2425848.5,  0,  5689,   12,  19,  SUN,   0,  0,  0),
+        new TestCase(2430266.5,  0,  5702,    1,   8,  MON,   0,  0,  0),
+        new TestCase(2430833.5,  0,  5703,    8,  14,  MON,   0,  0,  0),
+        new TestCase(2431004.5,  0,  5704,    1,   8,  THU,   0,  0,  0),
+        new TestCase(2448698.5,  0,  5752,    7,  12,  TUE,   0,  0,  0),
+        new TestCase(2450138.5,  0,  5756,    7,   5,  SUN,   0,  0,  0),
+        new TestCase(2465737.5,  0,  5799,    2,  12,  WED,   0,  0,  0),
+        new TestCase(2486076.5,  0,  5854,   12,   5,  SUN,   0,  0,  0),
+
+        // Additional test cases for bugs found during development
+        //           G.YY/MM/DD  Era  Year  Month Day  WkDay Hour Min Sec
+        new TestCase(1013, 9, 8, 0,  4774,    1,   1,  TUE,   0,  0,  0),
+        new TestCase(1239, 9, 1, 0,  5000,    1,   1,  THU,   0,  0,  0),
+        new TestCase(1240, 9,18, 0,  5001,    1,   1,  TUE,   0,  0,  0),
+
+        // Test cases taken from a table of 14 "year types" in the Help file
+        // of the application "Hebrew Calendar"
+        new TestCase(2456187.5,  0,  5773,    1,   1,  MON,   0,  0,  0),
+        new TestCase(2459111.5,  0,  5781,    1,   1,  SAT,   0,  0,  0),
+        new TestCase(2453647.5,  0,  5766,    1,   1,  TUE,   0,  0,  0),
+        new TestCase(2462035.5,  0,  5789,    1,   1,  THU,   0,  0,  0),
+        new TestCase(2458756.5,  0,  5780,    1,   1,  MON,   0,  0,  0),
+        new TestCase(2460586.5,  0,  5785,    1,   1,  THU,   0,  0,  0),
+        new TestCase(2463864.5,  0,  5794,    1,   1,  SAT,   0,  0,  0),
+        new TestCase(2463481.5,  0,  5793,    1,   1,  MON,   0,  0,  0),
+        new TestCase(2470421.5,  0,  5812,    1,   1,  THU,   0,  0,  0),
+        new TestCase(2460203.5,  0,  5784,    1,   1,  SAT,   0,  0,  0),
+        new TestCase(2459464.5,  0,  5782,    1,   1,  TUE,   0,  0,  0),
+        new TestCase(2467142.5,  0,  5803,    1,   1,  MON,   0,  0,  0),
+        new TestCase(2455448.5,  0,  5771,    1,   1,  THU,   0,  0,  0),
+        new TestCase(2487223.5,  0,  5858,    1,   1,  SAT,   0,  0,  0),
+    };
+    
+    /**
+     * Problem reported by Armand Bendanan in which setting of the MONTH
+     * field in a Hebrew calendar causes the time fields to go negative.
+     */
+    public void TestTimeFields() {
+        HebrewCalendar calendar = new HebrewCalendar(5761, 0, 11, 12, 28, 15);
+		calendar.set(Calendar.YEAR, 5717);
+		calendar.set(Calendar.MONTH, 2);
+		calendar.set(Calendar.DAY_OF_MONTH, 23);
+        if (calendar.get(Calendar.HOUR_OF_DAY) != 12) {
+            errln("Fail: HebrewCalendar HOUR_OF_DAY = " + calendar.get(Calendar.HOUR_OF_DAY));
+        }
+    }
+
+    /**
+     * Test of the behavior of the month field.  This requires special
+     * handling in the Hebrew calendar because of the pattern of leap
+     * years.
+     */
+    public void TestMonthMovement() {
+        HebrewCalendar cal = new HebrewCalendar();
+        // Leap years are:
+        // 3 6 8 11 14 17 19 (and so on - 19-year cycle)
+        // We can't test complete() on some lines below because of ADAR_1 -- if
+        // the calendar is set to ADAR_1 on a non-leap year, the result is undefined.
+        int[] DATA = {
+            // c     - test complete() or not
+            // m/y   - before and after month/year
+            // delta - amount to add to month field
+            //c m1  y1 delta  m2  y2
+            1,  10,  2,  +24,  9,  4, // (year 2, month 10) + 24 months -> (y 4, m 9)
+            1,  10,  2,  +60,  8,  7, // (y 2, m 10) + 60 months -> (y 7, m 8)
+            1,   1,  2,  +12,  1,  3, // (y 2, m 1) + 12 months -> (y 3, m 1)
+            1,   3, 18,  -24,  4, 16, // (y 18, m 3) - 24 months -> (y 16, m 4)
+            1,   1,  6,  -24,  1,  4,
+            1,   4,  3,   +2,  6,  3, // Leap year - no skip 4,5,6,7,8
+            1,   8,  3,   -2,  6,  3, // Leap year - no skip
+            0,   4,  2,   +2,  7,  2, // Skip over leap month 4,5,(6),7,8
+            0,   8,  2,   -2,  5,  2, // Skip over leap month going backward
+        };
+        for (int i=0; i<DATA.length; ) {
+            boolean testComplete = DATA[i++] != 0;
+            int m = DATA[i++], y = DATA[i++];
+            int monthDelta = DATA[i++];
+            int m2 = DATA[i++], y2 = DATA[i++];
+            int mact, yact;
+
+            cal.clear();
+            cal.set(Calendar.YEAR, y);
+            cal.set(Calendar.MONTH, m-1);
+            cal.add(Calendar.MONTH, monthDelta);
+            yact = cal.get(Calendar.YEAR); mact = cal.get(Calendar.MONTH) + 1;
+            if (y2 != yact || m2 != mact) {
+                errln("Fail: " + m + "/" + y +
+                      " -> add(MONTH, " + monthDelta + ") -> " +
+                      mact + "/" + yact + ", expected " +
+                      m2 + "/" + y2);
+                cal.clear();
+                cal.set(Calendar.YEAR, y);
+                cal.set(Calendar.MONTH, m-1);
+                logln("Start: " + m + "/" + y);
+                int delta = monthDelta > 0 ? 1 : -1;
+                for (int c=0; c!=monthDelta; c+=delta) {
+                    cal.add(Calendar.MONTH, delta);
+                    logln("+ " + delta + " MONTH -> " +
+                          (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.YEAR));
+                }
+            }
+            
+            if (testComplete) {
+                cal.clear();
+                cal.set(Calendar.YEAR, y);
+                cal.set(Calendar.MONTH, m + monthDelta - 1);
+                yact = cal.get(Calendar.YEAR); mact = cal.get(Calendar.MONTH) + 1;
+                if (y2 != yact || m2 != mact) {
+                    errln("Fail: " + (m+monthDelta) + "/" + y +
+                          " -> complete() -> " +
+                          mact + "/" + yact + ", expected " +
+                          m2 + "/" + y2);
+                }
+            }
+        }
+    }
+
+    /**
+     * Test handling of ADAR_1.
+     */
+    /*
+    public void TestAdar1() {
+        HebrewCalendar cal = new HebrewCalendar();
+        cal.clear();
+        cal.set(Calendar.YEAR, 1903); // leap
+        cal.set(Calendar.MONTH, HebrewCalendar.ADAR_1);
+        logln("1903(leap)/ADAR_1 => " +
+              cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH)+1));
+
+        cal.clear();
+        cal.set(Calendar.YEAR, 1904); // non-leap
+        cal.set(Calendar.MONTH, HebrewCalendar.ADAR_1);
+        logln("1904(non-leap)/ADAR_1 => " +
+              cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH)+1));
+    }
+    */
+
+    /**
+     * With no fields set, the calendar should use default values.
+     */
+    public void TestDefaultFieldValues() {
+        HebrewCalendar cal = new HebrewCalendar();
+        cal.clear();
+        logln("cal.clear() -> " + cal.getTime());
+    }
+    
+    public void TestCoverage() {
+	{
+	    // new HebrewCalendar(TimeZone)
+	    HebrewCalendar cal = new HebrewCalendar(TimeZone.getDefault());
+	}
+
+	{
+	    // new HebrewCalendar(Locale)
+	    HebrewCalendar cal = new HebrewCalendar(Locale.getDefault());
+	}
+
+	{
+	    // new HebrewCalendar(Date)
+	    HebrewCalendar cal = new HebrewCalendar(new Date());
+	}
+
+	{
+	    // data
+	    HebrewCalendar cal = new HebrewCalendar(2800, HebrewCalendar.SHEVAT, 1);
+	    Date time = cal.getTime();
+
+	    String[] calendarLocales = {
+		"iw_IL"
+	    };
+
+	    String[] formatLocales = {
+		"en", "fi", "fr", "hu", "iw", "nl"
+	    };
+	    for (int i = 0; i < calendarLocales.length; ++i) {
+		String calLocName = calendarLocales[i];
+		Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+		cal = new HebrewCalendar(calLocale);
+
+		for (int j = 0; j < formatLocales.length; ++j) {
+		    String locName = formatLocales[j];
+		    Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+		    DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+		    logln(calLocName + "/" + locName + " --> " + format.format(time));
+		}
+	    }
+	}
+    }
+};
diff --git a/src/com/ibm/icu/dev/test/calendar/HolidayTest.java b/src/com/ibm/icu/dev/test/calendar/HolidayTest.java
new file mode 100644
index 0000000..f66ae4c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/HolidayTest.java
@@ -0,0 +1,95 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/calendar/HolidayTest.java,v $ 
+ * $Date: 2002/08/07 17:04:42 $ 
+ * $Revision: 1.1 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.Holiday;
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * Tests for the <code>Holiday</code> class.
+ */
+public class HolidayTest extends TestFmwk {
+    public static void main(String args[]) throws Exception {
+        new HolidayTest().run(args);
+    }
+
+    static final Calendar cal = new GregorianCalendar(1, 0, 1);
+    static final Date longTimeAgo = cal.getTime();
+    static final Date now = new Date();
+    static final long awhile = 3600L * 24 * 28; // 28 days
+
+    public void TestAPI() {
+	{
+	    // getHolidays
+	    Holiday[] holidays = Holiday.getHolidays();
+	    exerciseHolidays(holidays, Locale.getDefault());
+	}
+
+	{
+	    // getHolidays(Locale)
+	    String[] localeNames = {
+		"en_US", "da", "da_DK", "de", "de_AT", "de_DE", "el", "el_GR",
+		"en", "en_CA", "en_GB", "es", "es_MX", "fr", "fr_CA", "fr_FR",
+		"it", "it_IT", "iw", "iw_IL", "ja", "ja_JP",
+	    };
+
+	    for (int i=0; i < localeNames.length; ++i) {
+		Locale locale = LocaleUtility.getLocaleFromName(localeNames[i]);
+		Holiday[] holidays = Holiday.getHolidays(locale);
+		exerciseHolidays(holidays, locale);
+	    }
+	}
+    }
+
+    void exerciseHolidays(Holiday[] holidays, Locale locale) {
+	for (int i = 0; i < holidays.length; ++i) {
+	    exerciseHoliday(holidays[i], locale);
+	}
+    }
+
+    void exerciseHoliday(Holiday h, Locale locale) {
+	logln("holiday: " + h.getDisplayName());
+	logln("holiday in " + locale + ": " + h.getDisplayName(locale));
+
+	Date first = h.firstAfter(longTimeAgo);
+	logln("firstAfter: " + longTimeAgo + " is " + first);
+	if (first == null) {
+	    first = longTimeAgo;
+	}
+	first.setTime(first.getTime() + awhile);
+
+	Date second = h.firstBetween(first, now);
+	logln("firstBetween: " + first + " and " + now + " is " + second);
+	if (second == null) {
+	    second = now;
+	}
+
+	logln("is on " + first + ": " + h.isOn(first));
+	logln("is on " + now + ": " + h.isOn(now));
+	logln("is between " + first + " and " + now + ": " + h.isBetween(first, now));
+	logln("is between " + first + " and " + second + ": " + h.isBetween(first, second));
+
+	logln("rule: " + h.getRule().toString());
+
+	h.setRule(h.getRule());
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java b/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java
new file mode 100755
index 0000000..efeacf5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java
@@ -0,0 +1,333 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *******************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java,v $ 
+ * $Date: 2002/08/07 03:10:18 $ 
+ * $Revision: 1.11 $
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.BuddhistCalendar;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.JapaneseCalendar;
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * @test
+ * @summary Tests of new functionality in IBMCalendar
+ */
+public class IBMCalendarTest extends CalendarTest {
+
+    public static void main(String[] args) throws Exception {
+        new IBMCalendarTest().run(args);
+    }
+
+    /**
+     * Test weekend support in IBMCalendar.
+     *
+     * NOTE: This test will have to be updated when the isWeekend() etc.
+     *       API is finalized later.
+     *
+     *       In particular, the test will have to be rewritten to instantiate
+     *       a Calendar in the given locale (using getInstance()) and call
+     *       that Calendar's isWeekend() etc. methods.
+     */
+    public void TestWeekend() {
+        SimpleDateFormat fmt = new SimpleDateFormat("EEE MMM dd yyyy G HH:mm:ss.SSS");
+        
+        // NOTE
+        // This test tests for specific locale data.  This is probably okay
+        // as far as US data is concerned, but if the Arabic/Bahrain data
+        // changes, this test will have to be updated.
+
+        // Test specific days
+        Object[] DATA1 = {
+            Locale.US, new int[] { // Saturday:Sunday
+                2000, Calendar.MARCH, 17, 23,  0, 0, // Fri 23:00
+                2000, Calendar.MARCH, 18,  0, -1, 0, // Fri 23:59:59.999
+                2000, Calendar.MARCH, 18,  0,  0, 1, // Sat 00:00
+                2000, Calendar.MARCH, 18, 15,  0, 1, // Sat 15:00
+                2000, Calendar.MARCH, 19, 23,  0, 1, // Sun 23:00
+                2000, Calendar.MARCH, 20,  0, -1, 1, // Sun 23:59:59.999
+                2000, Calendar.MARCH, 20,  0,  0, 0, // Mon 00:00
+                2000, Calendar.MARCH, 20,  8,  0, 0, // Mon 08:00
+            },
+            new Locale("ar", "BH"), new int[] { // Thursday:Friday
+                2000, Calendar.MARCH, 15, 23,  0, 0, // Wed 23:00
+                2000, Calendar.MARCH, 16,  0, -1, 0, // Wed 23:59:59.999
+                2000, Calendar.MARCH, 16,  0,  0, 1, // Thu 00:00
+                2000, Calendar.MARCH, 16, 15,  0, 1, // Thu 15:00
+                2000, Calendar.MARCH, 17, 23,  0, 1, // Fri 23:00
+                2000, Calendar.MARCH, 18,  0, -1, 1, // Fri 23:59:59.999
+                2000, Calendar.MARCH, 18,  0,  0, 0, // Sat 00:00
+                2000, Calendar.MARCH, 18,  8,  0, 0, // Sat 08:00
+            },
+        };
+
+        // Test days of the week
+        Object[] DATA2 = {
+            Locale.US, new int[] {
+                Calendar.MONDAY,   Calendar.WEEKDAY,
+                Calendar.FRIDAY,   Calendar.WEEKDAY,
+                Calendar.SATURDAY, Calendar.WEEKEND,
+                Calendar.SUNDAY,   Calendar.WEEKEND,
+            },
+            new Locale("ar", "BH"), new int[] { // Thursday:Friday
+                Calendar.WEDNESDAY,Calendar.WEEKDAY,
+                Calendar.SATURDAY, Calendar.WEEKDAY,
+                Calendar.THURSDAY, Calendar.WEEKEND,
+                Calendar.FRIDAY,   Calendar.WEEKEND,
+            },
+        };
+
+        // We only test the getDayOfWeekType() and isWeekend() APIs.
+        // The getWeekendTransition() API is tested indirectly via the
+        // isWeekend() API, which calls it.
+
+        for (int i1=0; i1<DATA1.length; i1+=2) {
+            Locale loc = (Locale)DATA1[i1];
+            int[] data = (int[]) DATA1[i1+1];
+            Calendar cal = Calendar.getInstance(loc);
+            logln("Locale: " + loc);
+            for (int i=0; i<data.length; i+=6) {
+                cal.clear();
+                cal.set(data[i], data[i+1], data[i+2], data[i+3], 0, 0);
+                if (data[i+4] != 0) {
+                    cal.setTime(new Date(cal.getTime().getTime() + data[i+4]));
+                }
+                boolean isWeekend = cal.isWeekend();
+                boolean ok = isWeekend == (data[i+5] != 0);
+                if (ok) {
+                    logln("Ok:   " + fmt.format(cal.getTime()) + " isWeekend=" + isWeekend);
+                } else {
+                    errln("FAIL: " + fmt.format(cal.getTime()) + " isWeekend=" + isWeekend +
+                          ", expected=" + (!isWeekend));
+                }
+            }
+        }
+
+        for (int i2=0; i2<DATA2.length; i2+=2) {
+            Locale loc = (Locale)DATA2[i2];
+            int[] data = (int[]) DATA2[i2+1];
+            logln("Locale: " + loc);
+            Calendar cal = Calendar.getInstance(loc);
+            for (int i=0; i<data.length; i+=2) {
+                int type = cal.getDayOfWeekType(data[i]);
+                int exp  = data[i+1];
+                if (type == exp) {
+                    logln("Ok:   DOW " + data[i] + " type=" + type);
+                } else {
+                    errln("FAIL: DOW " + data[i] + " type=" + type +
+                          ", expected=" + exp);
+                }
+            }
+        }
+    }
+
+    /**
+     * Run a test of a quasi-Gregorian calendar.  This is a calendar
+     * that behaves like a Gregorian but has different year/era mappings.
+     * The int[] data array should have the format:
+     * 
+     * { era, year, gregorianYear, month, dayOfMonth, ... }
+     */
+    void quasiGregorianTest(Calendar cal, int[] data) {
+        for (int i=0; i<data.length; ) {
+            int era = data[i++];
+            int year = data[i++];
+            int gregorianYear = data[i++];
+            int month = data[i++];
+            int dayOfMonth = data[i++];
+
+            java.util.Calendar tempcal = java.util.Calendar.getInstance();
+            tempcal.clear();
+            tempcal.set(gregorianYear, month, dayOfMonth);
+            Date D = tempcal.getTime();
+
+            cal.clear();
+            cal.set(Calendar.ERA, era);
+            cal.set(year, month, dayOfMonth);
+            Date d = cal.getTime();
+            if (d.equals(D)) {
+                logln("OK: " + era + ":" + year + "/" + (month+1) + "/" + dayOfMonth +
+                      " => " + d);
+            } else {
+                errln("Fail: " + era + ":" + year + "/" + (month+1) + "/" + dayOfMonth +
+                      " => " + d + ", expected " + D);
+            }
+
+            cal.clear();
+            cal.setTime(D);
+            int e = cal.get(Calendar.ERA);
+            int y = cal.get(Calendar.YEAR);
+            if (y == year && e == era) {
+                logln("OK: " + D + " => " + cal.get(Calendar.ERA) + ":" +
+                      cal.get(Calendar.YEAR) + "/" +
+                      (cal.get(Calendar.MONTH)+1) + "/" + cal.get(Calendar.DATE));
+            } else {
+                logln("Fail: " + D + " => " + cal.get(Calendar.ERA) + ":" +
+                      cal.get(Calendar.YEAR) + "/" +
+                      (cal.get(Calendar.MONTH)+1) + "/" + cal.get(Calendar.DATE) +
+                      ", expected " + era + ":" + year + "/" + (month+1) + "/" +
+                      dayOfMonth);
+            }
+        }
+    }
+
+    /**
+     * Verify that BuddhistCalendar shifts years to Buddhist Era but otherwise
+     * behaves like GregorianCalendar.
+     */
+    public void TestBuddhist() {
+        quasiGregorianTest(new BuddhistCalendar(),
+                           new int[] {
+                               // BE 2542 == 1999 CE
+                               0, 2542, 1999, Calendar.JUNE, 4
+                           });
+    }
+
+    public void TestBuddhistCoverage() {
+	{
+	    // new BuddhistCalendar(TimeZone)
+	    BuddhistCalendar cal = new BuddhistCalendar(TimeZone.getDefault());
+	}
+	
+	{
+	    // new BuddhistCalendar(Locale)
+	    BuddhistCalendar cal = new BuddhistCalendar(Locale.getDefault());
+	}
+
+	{
+	    // new BuddhistCalendar(TimeZone, Locale)
+	    BuddhistCalendar cal = new BuddhistCalendar(TimeZone.getDefault(), Locale.getDefault());
+	}
+
+	{
+	    // new BuddhistCalendar(Date)
+	    BuddhistCalendar cal = new BuddhistCalendar(new Date());
+	}
+
+	{
+	    // new BuddhistCalendar(int year, int month, int date)
+	    BuddhistCalendar cal = new BuddhistCalendar(2543, Calendar.MAY, 22);
+	}
+
+	{
+	    // new BuddhistCalendar(int year, int month, int date, int hour, int minute, int second)
+	    BuddhistCalendar cal = new BuddhistCalendar(2543, Calendar.MAY, 22, 1, 1, 1);
+	}
+
+	{
+	    // data
+	    BuddhistCalendar cal = new BuddhistCalendar(2543, Calendar.MAY, 22);
+	    Date time = cal.getTime();
+
+	    String[] calendarLocales = {
+		"th_TH"
+	    };
+
+	    String[] formatLocales = {
+		"en", "ar", "hu", "th"
+	    };
+
+	    for (int i = 0; i < calendarLocales.length; ++i) {
+		String calLocName = calendarLocales[i];
+		Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+		cal = new BuddhistCalendar(calLocale);
+
+		for (int j = 0; j < formatLocales.length; ++j) {
+		    String locName = formatLocales[j];
+		    Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+		    DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+		    logln(calLocName + "/" + locName + " --> " + format.format(time));
+		}
+	    }
+	}
+    }
+
+    /**
+     * Verify that JapaneseCalendar shifts years to Buddhist Era but otherwise
+     * behaves like GregorianCalendar.
+     */
+    public void TestJapanese() {
+        int[] data = {
+            JapaneseCalendar.MEIJI, 1, 1868, Calendar.SEPTEMBER, 8,
+            JapaneseCalendar.MEIJI, 1, 1868, Calendar.SEPTEMBER, 9,
+            JapaneseCalendar.MEIJI, 2, 1869, Calendar.JUNE, 4,
+            JapaneseCalendar.MEIJI, 45, 1912, Calendar.JULY, 29,
+            JapaneseCalendar.TAISHO, 1, 1912, Calendar.JULY, 30,
+            JapaneseCalendar.TAISHO, 1, 1912, Calendar.AUGUST, 1,
+        };
+        quasiGregorianTest(new JapaneseCalendar(), data);
+    }
+
+    /**
+     * Test limits of the Gregorian calendar.
+     */
+    public void TestGregorianLimits() {
+        // Final parameter is either number of days, if > 0, or test
+        // duration in seconds, if < 0.
+        Calendar cal = Calendar.getInstance();
+        cal.set(2004, Calendar.JANUARY, 1);
+        doLimitsTest(new GregorianCalendar(), null, cal.getTime(), -10);
+    }
+    
+    /**
+     * Test behavior of fieldDifference around leap years.  Also test a large
+     * field difference to check binary search.
+     */
+    public void TestLeapFieldDifference() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(2004, Calendar.FEBRUARY, 29);
+        Date date2004 = cal.getTime();
+        cal.set(2000, Calendar.FEBRUARY, 29);
+        Date date2000 = cal.getTime();
+        int y = cal.fieldDifference(date2004, Calendar.YEAR);
+        int d = cal.fieldDifference(date2004, Calendar.DAY_OF_YEAR);
+        if (d == 0) {
+            logln("Ok: 2004/Feb/29 - 2000/Feb/29 = " + y + " years, " + d + " days");
+        } else {
+            errln("FAIL: 2004/Feb/29 - 2000/Feb/29 = " + y + " years, " + d + " days");
+        }
+        cal.setTime(date2004);
+        y = cal.fieldDifference(date2000, Calendar.YEAR);
+        d = cal.fieldDifference(date2000, Calendar.DAY_OF_YEAR);
+        if (d == 0) {
+            logln("Ok: 2000/Feb/29 - 2004/Feb/29 = " + y + " years, " + d + " days");
+        } else {
+            errln("FAIL: 2000/Feb/29 - 2004/Feb/29 = " + y + " years, " + d + " days");
+        }
+        // Test large difference
+        cal.set(2001, Calendar.APRIL, 5); // 2452005
+        Date ayl = cal.getTime();
+        cal.set(1964, Calendar.SEPTEMBER, 7); // 2438646
+        Date asl = cal.getTime();
+        d = cal.fieldDifference(ayl, Calendar.DAY_OF_MONTH);
+        cal.setTime(ayl);
+        int d2 = cal.fieldDifference(asl, Calendar.DAY_OF_MONTH);
+        if (d == -d2 && d == 13359) {
+            logln("Ok: large field difference symmetrical " + d);
+        } else {
+            logln("FAIL: large field difference incorrect " + d + ", " + d2 +
+                  ", expect +/- 13359");
+        }
+    }
+
+    /**
+     * Test ms_MY "Malay (Malaysia)" locale.  Bug 1543.
+     */
+    public void TestMalaysianInstance() {
+        Locale loc = new Locale("ms", "MY");  // Malay (Malaysia)
+        Calendar cal = Calendar.getInstance(loc);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/IslamicTest.java b/src/com/ibm/icu/dev/test/calendar/IslamicTest.java
new file mode 100755
index 0000000..f7fd31c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/IslamicTest.java
@@ -0,0 +1,228 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/calendar/IslamicTest.java,v $ 
+ * $Date: 2002/08/07 03:10:18 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.IslamicCalendar;
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * Tests for the <code>IslamicCalendar</code> class.
+ */
+public class IslamicTest extends CalendarTest {
+    public static void main(String args[]) throws Exception {
+        new IslamicTest().run(args);
+    }
+
+    /** Constants to save typing. */
+    public static final int MUHARRAM = IslamicCalendar.MUHARRAM;
+    public static final int SAFAR =  IslamicCalendar.SAFAR;
+    public static final int RABI_1 =  IslamicCalendar.RABI_1;
+    public static final int RABI_2 =  IslamicCalendar.RABI_2;
+    public static final int JUMADA_1 =  IslamicCalendar.JUMADA_1;
+    public static final int JUMADA_2 =  IslamicCalendar.JUMADA_2;
+    public static final int RAJAB =  IslamicCalendar.RAJAB;
+    public static final int SHABAN =  IslamicCalendar.SHABAN;
+    public static final int RAMADAN =  IslamicCalendar.RAMADAN;
+    public static final int SHAWWAL =  IslamicCalendar.SHAWWAL;
+    public static final int QIDAH =  IslamicCalendar.DHU_AL_QIDAH;
+    public static final int HIJJAH =  IslamicCalendar.DHU_AL_HIJJAH;
+
+    public void TestRoll() {
+        int[][] tests = new int[][] {
+            //       input                roll by          output
+            //  year  month     day     field amount    year  month     day
+    
+            {   0001, QIDAH,     2,     MONTH,   1,     0001, HIJJAH,    2 },   // non-leap years
+            {   0001, QIDAH,     2,     MONTH,   2,     0001, MUHARRAM,  2 },
+            {   0001, QIDAH,     2,     MONTH,  -1,     0001, SHAWWAL,   2 },
+            {   0001, MUHARRAM,  2,     MONTH,  12,     0001, MUHARRAM,  2 },
+            {   0001, MUHARRAM,  2,     MONTH,  13,     0001, SAFAR,     2 },
+
+            {   0001, HIJJAH,    1,     DATE,   30,     0001, HIJJAH,    2 },   // 29-day month
+            {   0002, HIJJAH,    1,     DATE,   31,     0002, HIJJAH,    2 },   // 30-day month
+
+            // Try some rolls that require other fields to be adjusted
+            {   0001, MUHARRAM, 30,     MONTH,   1,     0001, SAFAR,    29 },
+            {   0002, HIJJAH,   30,     YEAR,   -1,     0001, HIJJAH,   29 },
+        };
+       
+        IslamicCalendar cal = newCivil();
+
+        doRollAdd(ROLL, cal, tests);
+    }
+
+    /**
+     * A huge list of test cases to make sure that computeTime and computeFields
+     * work properly for a wide range of data in the civil calendar.
+     */
+    public void TestCivilCases()
+    {
+        final TestCase[] tests = {
+            //
+            // Most of these test cases were taken from the back of
+            // "Calendrical Calculations", with some extras added to help
+            // debug a few of the problems that cropped up in development.
+            //
+            // The months in this table are 1-based rather than 0-based,
+            // because it's easier to edit that way.
+            //                       Islamic
+            //          Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
+            new TestCase(1507231.5,  0, -1245,   12,   9,  SUN,   0,  0,  0),
+            new TestCase(1660037.5,  0,  -813,    2,  23,  WED,   0,  0,  0),
+            new TestCase(1746893.5,  0,  -568,    4,   1,  WED,   0,  0,  0),
+            new TestCase(1770641.5,  0,  -501,    4,   6,  SUN,   0,  0,  0),
+            new TestCase(1892731.5,  0,  -157,   10,  17,  WED,   0,  0,  0),
+            new TestCase(1931579.5,  0,   -47,    6,   3,  MON,   0,  0,  0),
+            new TestCase(1974851.5,  0,    75,    7,  13,  SAT,   0,  0,  0),
+            new TestCase(2091164.5,  0,   403,   10,   5,  SUN,   0,  0,  0),
+            new TestCase(2121509.5,  0,   489,    5,  22,  SUN,   0,  0,  0),
+            new TestCase(2155779.5,  0,   586,    2,   7,  FRI,   0,  0,  0),
+            new TestCase(2174029.5,  0,   637,    8,   7,  SAT,   0,  0,  0),
+            new TestCase(2191584.5,  0,   687,    2,  20,  FRI,   0,  0,  0),
+            new TestCase(2195261.5,  0,   697,    7,   7,  SUN,   0,  0,  0),
+            new TestCase(2229274.5,  0,   793,    7,   1,  SUN,   0,  0,  0),
+            new TestCase(2245580.5,  0,   839,    7,   6,  WED,   0,  0,  0),
+            new TestCase(2266100.5,  0,   897,    6,   1,  SAT,   0,  0,  0),
+            new TestCase(2288542.5,  0,   960,    9,  30,  SAT,   0,  0,  0),
+            new TestCase(2290901.5,  0,   967,    5,  27,  SAT,   0,  0,  0),
+            new TestCase(2323140.5,  0,  1058,    5,  18,  WED,   0,  0,  0),
+            new TestCase(2334848.5,  0,  1091,    6,   2,  SUN,   0,  0,  0),
+            new TestCase(2348020.5,  0,  1128,    8,   4,  FRI,   0,  0,  0),
+            new TestCase(2366978.5,  0,  1182,    2,   3,  SUN,   0,  0,  0),
+            new TestCase(2385648.5,  0,  1234,   10,  10,  MON,   0,  0,  0),
+            new TestCase(2392825.5,  0,  1255,    1,  11,  WED,   0,  0,  0),
+            new TestCase(2416223.5,  0,  1321,    1,  21,  SUN,   0,  0,  0),
+            new TestCase(2425848.5,  0,  1348,    3,  19,  SUN,   0,  0,  0),
+            new TestCase(2430266.5,  0,  1360,    9,   8,  MON,   0,  0,  0),
+            new TestCase(2430833.5,  0,  1362,    4,  13,  MON,   0,  0,  0),
+            new TestCase(2431004.5,  0,  1362,   10,   7,  THU,   0,  0,  0),
+            new TestCase(2448698.5,  0,  1412,    9,  13,  TUE,   0,  0,  0),
+            new TestCase(2450138.5,  0,  1416,   10,   5,  SUN,   0,  0,  0),
+            new TestCase(2465737.5,  0,  1460,   10,  12,  WED,   0,  0,  0),
+            new TestCase(2486076.5,  0,  1518,    3,   5,  SUN,   0,  0,  0),
+        };
+        
+        IslamicCalendar civilCalendar = newCivil();
+        civilCalendar.setLenient(true);
+        doTestCases(tests, civilCalendar);
+    }
+
+    public void TestBasic() {
+        IslamicCalendar cal = newCivil();
+        cal.clear();
+        cal.set(1000, 0, 30);
+        logln("1000/0/30 -> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+        cal.clear();
+        cal.set(1, 0, 30);
+        logln("1/0/30 -> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+    }
+
+    public void TestCoverage() {
+	{
+	    // new IslamicCalendar(TimeZone)
+	    IslamicCalendar cal = new IslamicCalendar(TimeZone.getDefault());
+	}
+	
+	{
+	    // new IslamicCalendar(Locale)
+	    IslamicCalendar cal = new IslamicCalendar(Locale.getDefault());
+	}
+
+	{
+	    // new IslamicCalendar(Date)
+	    IslamicCalendar cal = new IslamicCalendar(new Date());
+	}
+
+	{
+	    // new IslamicCalendar(int year, int month, int date)
+	    IslamicCalendar cal = new IslamicCalendar(800, IslamicCalendar.RAMADAN, 1);
+	}
+
+	{
+	    // new IslamicCalendar(int year, int month, int date, int hour, int minute, int second)
+	    IslamicCalendar cal = new IslamicCalendar(800, IslamicCalendar.RAMADAN, 1, 1, 1, 1);
+	}
+
+	{
+	    // setCivil/isCivil
+	    // operations on non-civil calendar
+	    IslamicCalendar cal = new IslamicCalendar(800, IslamicCalendar.RAMADAN, 1, 1, 1, 1);
+	    cal.setCivil(false);
+	    if (cal.isCivil()) {
+		errln("islamic calendar is civil");
+	    }
+
+	    Date now = new Date();
+	    cal.setTime(now);
+
+	    Date then = cal.getTime();
+	    if (!now.equals(then)) {
+		errln("get/set time failed with non-civil islamic calendar");
+	    }
+
+	    logln(then.toString());
+
+	    cal.add(cal.MONTH, 1);
+	    cal.add(cal.DAY_OF_MONTH, 1);
+	    cal.add(cal.YEAR, 1);
+
+	    logln(cal.getTime().toString());
+	}
+	
+	{
+	    // data
+	    IslamicCalendar cal = new IslamicCalendar(800, IslamicCalendar.RAMADAN, 1);
+	    Date time = cal.getTime();
+
+	    String[] calendarLocales = {
+		"ar_AE", "ar_BH", "ar_DZ", "ar_EG", "ar_JO", "ar_KW", "ar_OM", 
+		"ar_QA", "ar_SA", "ar_SY", "ar_YE", "ms_MY"
+	    };
+
+	    String[] formatLocales = {
+		"en", "ar", "fi", "fr", "hu", "iw", "nl"
+	    };
+	    for (int i = 0; i < calendarLocales.length; ++i) {
+		String calLocName = calendarLocales[i];
+		Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+		cal = new IslamicCalendar(calLocale);
+
+		for (int j = 0; j < formatLocales.length; ++j) {
+		    String locName = formatLocales[j];
+		    Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+		    DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+		    logln(calLocName + "/" + locName + " --> " + format.format(time));
+		}
+	    }
+	}
+    }
+
+    private static IslamicCalendar newCivil() {
+        IslamicCalendar civilCalendar = new IslamicCalendar();
+        civilCalendar.setCivil(true);
+        return civilCalendar;
+    }
+    
+};
diff --git a/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java b/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java
new file mode 100644
index 0000000..7d29459
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java
@@ -0,0 +1,110 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java,v $
+ * $Date: 2002/08/08 23:06:09 $
+ * $Revision: 1.1 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.JapaneseCalendar;
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * Tests for the <code>IslamicCalendar</code> class.
+ */
+public class JapaneseTest extends CalendarTest {
+    public static void main(String args[]) throws Exception {
+        new JapaneseTest().run(args);
+    }
+
+    public void TestCoverage() {
+	{
+	    // new JapaneseCalendar(TimeZone)
+	    JapaneseCalendar cal = new JapaneseCalendar(TimeZone.getDefault());
+	}
+	
+	{
+	    // new JapaneseCalendar(Locale)
+	    JapaneseCalendar cal = new JapaneseCalendar(Locale.getDefault());
+	}
+
+	{
+	    // new JapaneseCalendar(TimeZone, Locale)
+	    JapaneseCalendar cal = new JapaneseCalendar(TimeZone.getDefault(), Locale.getDefault());
+	}
+
+	{
+	    // new JapaneseCalendar(Date)
+	    JapaneseCalendar cal = new JapaneseCalendar(new Date());
+	}
+
+	{
+	    // new JapaneseCalendar(int year, int month, int date)
+	    JapaneseCalendar cal = new JapaneseCalendar(1868, Calendar.JANUARY, 1);
+	}
+
+	{
+	    // new JapaneseCalendar(int era, int year, int month, int date)
+	    JapaneseCalendar cal = new JapaneseCalendar(JapaneseCalendar.MEIJI, 43, Calendar.JANUARY, 1);
+	}
+
+	{
+	    // new JapaneseCalendar(int year, int month, int date, int hour, int minute, int second)
+	    JapaneseCalendar cal = new JapaneseCalendar(1868, Calendar.JANUARY, 1, 1, 1, 1);
+	}
+
+	{
+	    // limits
+	    JapaneseCalendar cal = new JapaneseCalendar();
+	    DateFormat fmt = cal.getDateTimeFormat(DateFormat.FULL, DateFormat.FULL, Locale.ENGLISH);
+
+	    cal.set(cal.ERA, cal.MEIJI);
+	    logln("date: " + cal.getTime());
+	    logln("min era: " + cal.getMinimum(cal.ERA));
+	    logln("min year: " + cal.getMinimum(cal.YEAR));
+	    cal.set(cal.YEAR, cal.getActualMaximum(cal.YEAR));
+	    logln("date: " + fmt.format(cal.getTime()));
+	    cal.add(cal.YEAR, 1);
+	    logln("date: " + fmt.format(cal.getTime()));
+	}
+	
+	{
+	    // data
+	    JapaneseCalendar cal = new JapaneseCalendar(1868, Calendar.JANUARY, 1);
+	    Date time = cal.getTime();
+
+	    String[] calendarLocales = {
+		"en", "ja_JP"
+	    };
+
+	    String[] formatLocales = {
+		"en", "ja"
+	    };
+	    for (int i = 0; i < calendarLocales.length; ++i) {
+		String calLocName = calendarLocales[i];
+		Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+		cal = new JapaneseCalendar(calLocale);
+
+		for (int j = 0; j < formatLocales.length; ++j) {
+		    String locName = formatLocales[j];
+		    Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+		    DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+		    logln(calLocName + "/" + locName + " --> " + format.format(time));
+		}
+	    }
+	}
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/calendar/TestCase.java b/src/com/ibm/icu/dev/test/calendar/TestCase.java
new file mode 100755
index 0000000..fbf5c6c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/TestCase.java
@@ -0,0 +1,245 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/calendar/TestCase.java,v $ 
+ * $Date: 2002/02/16 03:05:07 $ 
+ * $Revision: 1.7 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import java.util.Date;
+import com.ibm.icu.util.SimpleTimeZone;
+import java.util.Locale;
+
+/**
+ * A pseudo <code>Calendar</code> that is useful for testing
+ * new calendars.  A <code>TestCase</code> object is used to hold the
+ * field and millisecond values that the calendar should have at one
+ * particular instant in time.  The applyFields and applyTime
+ * methods are used to apply these settings to the calendar object being
+ * tested, and the equals and fieldsEqual methods are used to ensure
+ * that the calendar has ended up in the right state.
+ */
+public class TestCase {
+
+    //------------------------------------------------------------------
+    // Pseudo-Calendar fields and methods
+    //------------------------------------------------------------------
+
+    protected int[] fields = new int[32];
+    protected boolean[] isSet = new boolean[32];
+    protected long time;
+
+    protected void set(int field, int value) {
+        fields[field] = value;
+        isSet[field] = true;
+    }
+
+    protected int get(int field) {
+        return fields[field];
+    }
+
+    protected boolean isSet(int field) {
+        return isSet[field];
+    }
+
+    protected void setTime(Date d) {
+        time = d.getTime();
+    }
+
+    public Date getTime() {
+        return new Date(time);
+    }
+
+    /**
+     * Return a String representation of this test case's time.
+     */
+    public String toString() {
+        return dowToString(get(Calendar.DAY_OF_WEEK)) +
+            get(Calendar.YEAR) + "/" + (get(Calendar.MONTH)+1) + "/" +
+            get(Calendar.DATE);
+    }
+
+    private static final String[] DOW_NAMES = {
+        "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
+    };
+
+    public static String dowToString(int dow) {
+        --dow;
+        return (dow < 0 || dow > 6) ?
+            ("<DOW " + dow + ">") : DOW_NAMES[dow];
+    }
+
+    /**
+     * Initialize a TestCase object using a julian day number and
+     * the corresponding fields for the calendar being tested.
+     *
+     * @param era       The ERA field of tested calendar on the given julian day
+     * @param year      The YEAR field of tested calendar on the given julian day
+     * @param month     The MONTH (1-based) field of tested calendar on the given julian day
+     * @param day       The DAY_OF_MONTH field of tested calendar on the given julian day
+     * @param dayOfWeek The DAY_OF_WEEK field of tested calendar on the given julian day
+     * @param hour      The HOUR field of tested calendar on the given julian day
+     * @param min       The MINUTE field of tested calendar on the given julian day
+     * @param sec       The SECOND field of tested calendar on the given julian day
+     */
+    public TestCase(double julian,
+                    int era, int year, int month, int day,
+                    int dayOfWeek,
+                    int hour, int min, int sec)
+    {
+        setTime(new Date(JULIAN_EPOCH + (long)(ONE_DAY * julian)));
+        
+        set(Calendar.ERA, era);
+        set(Calendar.YEAR, year);
+        set(Calendar.MONTH, month - 1);
+        set(Calendar.DATE, day);
+        set(Calendar.DAY_OF_WEEK, dayOfWeek);
+        set(Calendar.HOUR, hour);
+        set(Calendar.MINUTE, min);
+        set(Calendar.SECOND, sec);
+    }
+
+    /**
+     * Initialize a TestCase object using a Gregorian year/month/day and
+     * the corresponding fields for the calendar being tested.
+     *
+     * @param gregYear  The Gregorian year of the date to be tested
+     * @param gregMonth The Gregorian month of the date to be tested
+     * @param gregDay   The Gregorian day of the month of the date to be tested
+     *
+     * @param era       The ERA field of tested calendar on the given gregorian date
+     * @param year      The YEAR field of tested calendar on the given gregorian date
+     * @param month     The MONTH (0-based) field of tested calendar on the given gregorian date
+     * @param day       The DAY_OF_MONTH field of tested calendar on the given gregorian date
+     * @param dayOfWeek The DAY_OF_WEEK field of tested calendar on the given gregorian date
+     * @param hour      The HOUR field of tested calendar on the given gregorian date
+     * @param min       The MINUTE field of tested calendar on the given gregorian date
+     * @param sec       The SECOND field of tested calendar on the given gregorian date
+     */
+    public TestCase(int gregYear, int gregMonth, int gregDay,
+                    int era, int year, int month, int day,
+                    int dayOfWeek,
+                    int hour, int min, int sec)
+    {
+        GregorianCalendar greg = new GregorianCalendar(UTC, Locale.getDefault());
+        greg.clear();
+        greg.set(gregYear, gregMonth-1, gregDay);
+        setTime(greg.getTime());
+        
+        set(Calendar.ERA, era);
+        set(Calendar.YEAR, year);
+        set(Calendar.MONTH, month - 1);
+        set(Calendar.DATE, day);
+        set(Calendar.DAY_OF_WEEK, dayOfWeek);
+        set(Calendar.HOUR, hour);
+        set(Calendar.MINUTE, min);
+        set(Calendar.SECOND, sec);
+    }
+    
+    /**
+     * For subclasses.
+     */
+    protected TestCase() {}
+
+    /**
+     * Apply this test case's field values to another calendar
+     * by calling its set method for each field.  This is useful in combination
+     * with the equal method.
+     *
+     * @see #equal
+     */
+    public void applyFields(Calendar c) {
+        for (int i=0; i < c.getFieldCount(); i++) {
+            if (isSet(i)) {
+                c.set(i, get(i));
+            }
+        }
+    }
+    
+    /**
+     * Apply this test case's time in milliseconds to another calendar
+     * by calling its setTime method.  This is useful in combination
+     * with fieldsEqual
+     *
+     * @see #fieldsEqual
+     */
+    public void applyTime(Calendar c) {
+        c.setTime(new Date(time));
+    }
+
+    /**
+     * Determine whether the fields of this calendar
+     * are the same as that of the other calendar.  This method is useful
+     * for determining whether the other calendar's computeFields method
+     * works properly.  For example:
+     * <pre>
+     *    Calendar testCalendar = ...
+     *    TestCase case = ...
+     *    case.applyTime(testCalendar);
+     *    if (!case.fieldsEqual(testCalendar)) {
+     *        // Error!
+     *    }
+     * </pre>
+     * 
+     * @see #applyTime
+     */
+    public boolean fieldsEqual(Calendar c, TestLog log) {
+        for (int i=0; i < c.getFieldCount(); i++) {
+            if (isSet(i) && get(i) != c.get(i)) {
+                log.errln("Fail: " + CalendarTest.fieldName(i) + " = " + c.get(i) +
+                          ", expected " + get(i));
+                for (int j=0; j<c.getFieldCount(); ++j) {
+                    if (isSet(j)) {
+                        if (get(j) == c.get(j)) {
+                            log.errln(" OK: " + CalendarTest.fieldName(j) + " = " +
+                                      c.get(j));
+                        } else {
+                            log.errln(" Fail: " + CalendarTest.fieldName(j) + " = " +
+                                      c.get(j) + ", expected " + get(j));
+                        }
+                    }
+                }
+                return false;
+            }
+        }
+        
+        return true;
+    }
+    
+    /**
+     * Determine whether time in milliseconds of this calendar
+     * is the same as that of the other calendar.  This method is useful
+     * for determining whether the other calendar's computeTime method
+     * works properly.  For example:
+     * <pre>
+     *    Calendar testCalendar = ...
+     *    TestCase case = ...
+     *    case.applyFields(testCalendar);
+     *    if (!case.equals(testCalendar)) {
+     *        // Error!
+     *    }
+     * </pre>
+     * 
+     * @see #applyFields
+     */
+    public boolean equals(Object obj) {
+        return time == ((Calendar)obj).getTime().getTime();
+    }
+    
+    protected static final int  ONE_SECOND = 1000;
+    protected static final int  ONE_MINUTE = 60*ONE_SECOND;
+    protected static final int  ONE_HOUR   = 60*ONE_MINUTE;
+    protected static final long ONE_DAY    = 24*ONE_HOUR;
+    protected static final long JULIAN_EPOCH = -210866760000000L;   // 1/1/4713 BC 12:00
+
+    public final static SimpleTimeZone UTC = new SimpleTimeZone(0, "GMT");
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/package.html b/src/com/ibm/icu/dev/test/calendar/package.html
new file mode 100755
index 0000000..6ed062e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/calendar/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 21:35:49 $
+-->
+</head>
+<body bgcolor="white">
+Tests for the calendar classes.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationAPITest.java b/src/com/ibm/icu/dev/test/collator/CollationAPITest.java
new file mode 100644
index 0000000..6d38159
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationAPITest.java
@@ -0,0 +1,609 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : collate/CollationAPITest
+ * Source File: $ICU4CRoot/source/test/intltest/apicoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+import java.text.CharacterIterator;
+
+public class CollationAPITest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        // new CollationAPITest().run(args);
+        new CollationAPITest().TestRuleBasedColl();
+    }
+    
+    /**
+     * This tests the collation key related APIs.
+     * - constructor/destructor
+     * - Collator.getCollationKey
+     * - == and != operators
+     * - comparison between collation keys
+     * - creating collation key with a byte array and vice versa
+     */
+    public void TestCollationKey() {
+        logln("testing CollationKey begins...");
+        Collator col = null;
+        try {
+            col = Collator.getInstance();
+        } catch (Exception e) {
+            
+        }
+        col.setStrength(Collator.TERTIARY);
+    
+        CollationKey sortk1, sortk2;
+        String test1 = "Abcda";
+        String test2 = "abcda";
+    
+        logln("Testing weird arguments");
+        sortk1 = col.getCollationKey("");
+        // key gets reset here
+        byte[] bytes = sortk1.toByteArray();
+        doAssert(bytes.length == 3 && bytes[0] == 1 && bytes[1] == 1 && bytes[2] == 0, 
+                 "Empty string should return an empty collation key");
+        // bogus key returned here
+        sortk1 = col.getCollationKey(null);
+        doAssert(sortk1 == null, "Error code should return bogus collation key");
+
+        logln("Use tertiary comparison level testing ....");
+        sortk1 = col.getCollationKey(test1);
+        sortk2 = col.getCollationKey(test2);
+        doAssert((sortk1.compareTo(sortk2)) > 0, "Result should be \"Abcda\" >>> \"abcda\"");
+    
+        CollationKey sortkNew;
+        sortkNew = sortk1;
+        doAssert(!(sortk1.equals(sortk2)), "The sort keys should be different");
+        doAssert((sortk1.hashCode() != sortk2.hashCode()), "sort key hashCode() failed");
+        doAssert((sortk1.equals(sortkNew)), "The sort keys assignment failed");
+        doAssert((sortk1.hashCode() == sortkNew.hashCode()), "sort key hashCode() failed");
+
+        col.setStrength(Collator.SECONDARY);
+        doAssert(col.getCollationKey(test1).compareTo(col.getCollationKey(test2)) == 0, 
+                                      "Result should be \"Abcda\" == \"abcda\"");
+    }
+    
+    void doAssert(boolean conditions, String message) {
+        if (!conditions) {
+            errln("Error: " + message);
+        }
+    }
+    
+    /**
+     * This tests the comparison convenience methods of a collator object.
+     * - greater than
+     * - greater than or equal to
+     * - equal to
+     */
+    public void TestCompare() {
+        logln("The compare tests begin : ");
+        Collator col = null;
+        try {
+            col = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("Default collation creation failed.");
+            return;
+        }
+        
+        String test1 = "Abcda";
+        String test2 = "abcda";
+        logln("Use tertiary comparison level testing ....");
+        
+        Object obj1 = test1;
+        Object obj2 = test2;
+        doAssert((col.compare(obj1, obj2) > 0), "Result should be \"Abcda\" != \"abcda\"");
+        doAssert((!col.equals(test1, test2) ), "Result should be \"Abcda\" != \"abcda\"");
+        doAssert((col.compare(test1, test2) > 0 ), "Result should be \"Abcda\" >>> \"abcda\"");
+    
+        col.setStrength(Collator.SECONDARY);
+        logln("Use secondary comparison level testing ....");
+                    
+        doAssert((col.compare(obj1, obj2) == 0), "Result should be \"Abcda\" == \"abcda\"");
+        doAssert((col.equals(test1, test2) ), "Result should be \"Abcda\" == \"abcda\"");
+        doAssert((col.compare(test1, test2) == 0), "Result should be \"Abcda\" == \"abcda\"");
+    
+        col.setStrength(Collator.PRIMARY);
+        logln("Use primary comparison level testing ....");
+        
+        doAssert((col.compare(obj1, obj2) == 0 ), "Result should be \"Abcda\" == \"abcda\"");
+        doAssert((col.equals(test1, test2) ), "Result should be \"Abcda\" == \"abcda\"");
+        doAssert((col.compare(test1, test2) == 0 ), "Result should be \"Abcda\" == \"abcda\"");
+        logln("The compare tests end.");
+        
+        Integer die = new Integer(1);
+        try {
+            col.compare(die, test1);
+            errln("Non-Strings should fail col.compare(Object, Object)");
+        } catch (Exception e) {
+        }
+    }
+    
+    /**
+    * Tests decomposition setting
+    */
+    public void TestDecomposition() {
+        Collator en_US = null, el_GR = null, vi_VN = null;
+        try {
+            en_US = Collator.getInstance(new Locale("en", "US"));
+            el_GR = Collator.getInstance(new Locale("el", "GR"));
+            vi_VN = Collator.getInstance(new Locale("vi", "VN"));
+        } catch (Exception e) {
+            errln("ERROR: collation creation failed.\n");
+            return;
+        }
+        
+        // there is no reason to have canonical decomposition in en_US OR default locale */
+        if (vi_VN.getDecomposition() != Collator.CANONICAL_DECOMPOSITION)
+        {
+            errln("ERROR: vi_VN collation did not have cannonical decomposition for normalization!\n");
+        }
+
+        if (el_GR.getDecomposition() != Collator.CANONICAL_DECOMPOSITION)
+        {
+            errln("ERROR: el_GR collation did not have cannonical decomposition for normalization!\n");
+        }
+
+        if (en_US.getDecomposition() != Collator.NO_DECOMPOSITION)
+        {
+            errln("ERROR: en_US collation had cannonical decomposition for normalization!\n");
+        }
+    }
+    
+    /**
+     * This tests the duplication of a collator object.
+     */
+    public void TestDuplicate() {
+        //Clone does not be implemented 
+        Collator col1 = null;
+        try {
+            col1 = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("Failure creating english collator");
+            return;
+        }
+        
+        // Collator col2 = (Collator)col1.clone();
+        // doAssert(col1.equals(col2), "Cloned object is not equal to the orginal");
+        String ruleset = "< a, A < b, B < c, C < d, D, e, E";
+        RuleBasedCollator col3 = null;
+        try {
+            col3 = new RuleBasedCollator(ruleset);
+        } catch (Exception e) {
+            errln("Failure creating RuleBasedCollator with rule:" + ruleset);
+            return;
+        }
+        doAssert(!col1.equals(col3), "Cloned object is equal to some dummy");
+        col3 = (RuleBasedCollator)col1;
+        doAssert(col1.equals(col3), "Copied object is not equal to the orginal");
+        
+    }
+    
+    /**
+     * This tests the CollationElementIterator related APIs.
+     * - creation of a CollationElementIterator object
+     * - == and != operators
+     * - iterating forward
+     * - reseting the iterator index
+     * - requesting the order properties(primary, secondary or tertiary)
+     */
+    public void TestElemIter() {
+        // logln("testing sortkey begins...");
+        Collator col = null;
+        try {
+            col = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("Default collation creation failed.");
+            return;
+        }
+           
+        String testString1 = "XFILE What subset of all possible test cases has the highest probability of detecting the most errors?";
+        String testString2 = "Xf_ile What subset of all possible test cases has the lowest probability of detecting the least errors?";
+        // logln("Constructors and comparison testing....");
+        CollationElementIterator iterator1 = ((RuleBasedCollator)col).getCollationElementIterator(testString1);
+        
+        CharacterIterator chariter=new StringCharacterIterator(testString1);
+        // copy ctor
+        CollationElementIterator iterator2 = ((RuleBasedCollator)col).getCollationElementIterator(chariter);
+        CollationElementIterator iterator3 = ((RuleBasedCollator)col).getCollationElementIterator(testString2);
+    
+        int offset = 0;
+        offset = iterator1.getOffset();
+        if (offset != 0) {
+            errln("Error in getOffset for collation element iterator\n");
+            return;
+        }
+        iterator1.setOffset(6);
+        iterator1.setOffset(0);
+        int order1, order2, order3;
+        
+        order1 = iterator1.next();
+        doAssert(!(iterator1.equals(iterator2)), "The first iterator advance failed");
+        order2 = iterator2.next();
+        
+        doAssert((iterator1.equals(iterator2)), "The second iterator advance failed"); 
+        doAssert((order1 == order2), "The order result should be the same");
+        order3 = iterator3.next();
+        
+        doAssert((CollationElementIterator.primaryOrder(order1) == 
+            CollationElementIterator.primaryOrder(order3)), "The primary orders should be the same");
+        doAssert((CollationElementIterator.secondaryOrder(order1) == 
+            CollationElementIterator.secondaryOrder(order3)), "The secondary orders should be the same");
+        doAssert((CollationElementIterator.tertiaryOrder(order1) == 
+            CollationElementIterator.tertiaryOrder(order3)), "The tertiary orders should be the same");
+    
+        order1 = iterator1.next(); 
+        order3 = iterator3.next();
+        
+        doAssert((CollationElementIterator.primaryOrder(order1) == 
+            CollationElementIterator.primaryOrder(order3)), "The primary orders should be identical");
+        doAssert((CollationElementIterator.tertiaryOrder(order1) != 
+            CollationElementIterator.tertiaryOrder(order3)), "The tertiary orders should be different");
+    
+        order1 = iterator1.next(); 
+        order3 = iterator3.next();
+        // invalid test wrong in UCA
+        // doAssert((CollationElementIterator.secondaryOrder(order1) != 
+        //    CollationElementIterator.secondaryOrder(order3)), "The secondary orders should not be the same");
+            
+        doAssert((order1 != CollationElementIterator.NULLORDER), "Unexpected end of iterator reached");
+    
+        iterator1.reset(); 
+        iterator2.reset(); 
+        iterator3.reset();
+        order1 = iterator1.next();
+        
+        doAssert(!(iterator1.equals(iterator2)), "The first iterator advance failed");
+        
+        order2 = iterator2.next();
+        
+        doAssert((iterator1.equals(iterator2)), "The second iterator advance failed");
+        doAssert((order1 == order2), "The order result should be the same");
+    
+        order3 = iterator3.next();
+        
+        doAssert((CollationElementIterator.primaryOrder(order1) == 
+            CollationElementIterator.primaryOrder(order3)), "The primary orders should be the same");
+        doAssert((CollationElementIterator.secondaryOrder(order1) == 
+            CollationElementIterator.secondaryOrder(order3)), "The secondary orders should be the same");
+        doAssert((CollationElementIterator.tertiaryOrder(order1) == 
+            CollationElementIterator.tertiaryOrder(order3)), "The tertiary orders should be the same");
+    
+        order1 = iterator1.next(); 
+        order2 = iterator2.next(); 
+        order3 = iterator3.next();
+        
+        doAssert((CollationElementIterator.primaryOrder(order1) == 
+            CollationElementIterator.primaryOrder(order3)), "The primary orders should be identical");
+        doAssert((CollationElementIterator.tertiaryOrder(order1) != 
+            CollationElementIterator.tertiaryOrder(order3)), "The tertiary orders should be different");
+    
+        order1 = iterator1.next(); 
+        order3 = iterator3.next();
+        
+        // obsolete invalid test, removed
+        // doAssert((CollationElementIterator.secondaryOrder(order1) != 
+        //    CollationElementIterator.secondaryOrder(order3)), "The secondary orders should not be the same");
+        doAssert((order1 != CollationElementIterator.NULLORDER), "Unexpected end of iterator reached");
+        doAssert(!(iterator2.equals(iterator3)), "The iterators should be different");
+        logln("testing CollationElementIterator ends...");
+    }
+    
+    /**
+     * This tests the hashCode method of a collator object.
+     */
+    public void TestHashCode() {
+        logln("hashCode tests begin.");
+        Collator col1 = null;
+        try {
+            col1 = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("Default collation creation failed.");
+            return;
+        }
+    
+        Collator col2 = null;
+        Locale dk = new Locale("da", "DK", "");
+        try {
+            col2 = Collator.getInstance(dk);
+        } catch (Exception e) {
+            errln("Danish collation creation failed.");
+            return;
+        }
+    
+        Collator col3 = null;
+        try {
+            col3 = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("2nd default collation creation failed.");
+            return;
+        }
+    
+        logln("Collator.hashCode() testing ...");
+        
+        doAssert(col1.hashCode() != col2.hashCode(), "Hash test1 result incorrect" );                 
+        doAssert(!(col1.hashCode() == col2.hashCode()), "Hash test2 result incorrect" );              
+        doAssert(col1.hashCode() == col3.hashCode(), "Hash result not equal" );               
+    
+        logln("hashCode tests end.");
+        
+        String test1 = "Abcda";
+        String test2 = "abcda";
+        
+        CollationKey sortk1, sortk2, sortk3;
+                    
+        sortk1 = col3.getCollationKey(test1);
+        sortk2 = col3.getCollationKey(test2); 
+        sortk3 = col3.getCollationKey(test2); 
+        
+        doAssert(sortk1.hashCode() != sortk2.hashCode(), "Hash test1 result incorrect");               
+        doAssert(sortk2.hashCode() == sortk3.hashCode(), "Hash result not equal" );
+    }
+    
+    /**
+     * This tests the properties of a collator object.
+     * - constructor
+     * - factory method getInstance
+     * - compare and getCollationKey
+     * - get/set decomposition mode and comparison level
+     */
+    public void TestProperty() {
+        Collator col = null;
+        /* 
+          All the collations have the same version in an ICU
+          version.
+          ICU 2.0 currVersionArray = {0x18, 0xC0, 0x02, 0x02};
+          ICU 2.1 currVersionArray = {0x19, 0x00, 0x03, 0x03};
+        */    
+        logln("The property tests begin : ");
+        logln("Test ctors : ");
+        try {
+            col = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("Default Collator creation failed.");
+            return;
+        }
+    
+        doAssert((col.compare("ab", "abc") < 0), "ab < abc comparison failed");
+        doAssert((col.compare("ab", "AB") < 0), "ab < AB comparison failed");
+        doAssert((col.compare("blackbird", "black-bird") > 0), "black-bird > blackbird comparison failed");
+        doAssert((col.compare("black bird", "black-bird") < 0), "black bird > black-bird comparison failed");
+        doAssert((col.compare("Hello", "hello") > 0), "Hello > hello comparison failed");
+    
+        logln("Test ctors ends.");
+        
+        logln("testing Collator.getStrength() method ...");
+        doAssert((col.getStrength() == Collator.TERTIARY), "collation object has the wrong strength");
+        doAssert((col.getStrength() != Collator.PRIMARY), "collation object's strength is primary difference");
+            
+        logln("testing Collator.setStrength() method ...");
+        col.setStrength(Collator.SECONDARY);
+        doAssert((col.getStrength() != Collator.TERTIARY), "collation object's strength is secondary difference");
+        doAssert((col.getStrength() != Collator.PRIMARY), "collation object's strength is primary difference");
+        doAssert((col.getStrength() == Collator.SECONDARY), "collation object has the wrong strength");
+    
+        logln("testing Collator.setDecomposition() method ...");
+        col.setDecomposition(Collator.NO_DECOMPOSITION);
+        doAssert((col.getDecomposition() != Collator.CANONICAL_DECOMPOSITION), "Decomposition mode != Collator.CANONICAL_DECOMPOSITION");
+        doAssert((col.getDecomposition() == Collator.NO_DECOMPOSITION), "Decomposition mode = Collator.NO_DECOMPOSITION");
+        
+        
+        RuleBasedCollator rcol = (RuleBasedCollator)Collator.getInstance(new Locale("da", "DK"));
+        doAssert(rcol.getRules().length() != 0, "da_DK rules does not have length 0");
+        
+        try {
+            col = Collator.getInstance(Locale.FRENCH);
+        } catch (Exception e) {
+            errln("Creating French collation failed.");
+            return;
+        }
+    
+        col.setStrength(Collator.PRIMARY);
+        logln("testing Collator.getStrength() method again ...");
+        doAssert((col.getStrength() != Collator.TERTIARY), "collation object has the wrong strength");
+        doAssert((col.getStrength() == Collator.PRIMARY), "collation object's strength is not primary difference");
+            
+        logln("testing French Collator.setStrength() method ...");
+        col.setStrength(Collator.TERTIARY);
+        doAssert((col.getStrength() == Collator.TERTIARY), "collation object's strength is not tertiary difference");
+        doAssert((col.getStrength() != Collator.PRIMARY), "collation object's strength is primary difference");
+        doAssert((col.getStrength() != Collator.SECONDARY), "collation object's strength is secondary difference");
+    
+        logln("Create junk collation: ");
+        Locale abcd = new Locale("ab", "CD", "");
+        
+        Collator junk = null;
+        try {
+            junk = Collator.getInstance(abcd);
+        } catch (Exception e) {
+            errln("Junk collation creation failed, should at least return default.");
+            return;
+        }
+    
+        try {
+            col = Collator.getInstance();
+        } catch (Exception e) {
+            errln("Creating default collator failed.");
+            return;
+        }
+    
+        String colrules = ((RuleBasedCollator)col).getRules();
+        String junkrules = ((RuleBasedCollator)junk).getRules();
+        doAssert(colrules == junkrules || colrules.equals(junkrules), 
+                   "The default collation should be returned.");
+        Collator frCol = null;
+        try {
+            frCol = Collator.getInstance(Locale.FRANCE);
+        } catch (Exception e) {
+            errln("Creating French collator failed.");
+            return;
+        }
+    
+        doAssert(!(frCol.equals(junk)), "The junk is the same as the French collator.");
+        logln("Collator property test ended.");
+    }
+    
+    /**
+    * This tests the RuleBasedCollator
+    * - constructor/destructor
+    * - getRules
+    */
+    public void TestRuleBasedColl() {
+        RuleBasedCollator col1 = null, col2 = null, col3 = null, col4 = null;
+    
+        String ruleset1 = "&9 < a, A < b, B < c, C; ch, cH, Ch, CH < d, D, e, E"; 
+        String ruleset2 = "&9 < a, A < b, B < c, C < d, D, e, E";
+        String ruleset3 = "&";
+        
+        try {
+            col1 = new RuleBasedCollator(ruleset1);
+        } catch (Exception e) {
+            errln("RuleBased Collator creation failed.\n");
+            return;
+        }
+    
+        try {
+            col2 = new RuleBasedCollator(ruleset2);
+        } catch (Exception e) {
+            errln("RuleBased Collator creation failed.\n");
+            return;
+        }
+    
+        try {
+            // empty rules fail
+            col3 = new RuleBasedCollator(ruleset3);
+            errln("Failure: Empty rules for the collator should fail");
+            return;
+        } catch (Exception e) {
+        }
+        
+        Locale locale = new Locale("aa", "AA");
+        try {
+            col3 = (RuleBasedCollator)Collator.getInstance(locale);
+        } catch (Exception e) {
+            errln("Fallback Collator creation failed.: %s\n");
+            return;
+        }
+    
+        try {
+            col3 = (RuleBasedCollator)Collator.getInstance();
+        } catch (Exception e) {
+            errln("Default Collator creation failed.: %s\n");
+            return;
+        }
+    
+        String rule1 = col1.getRules(); 
+        String rule2 = col2.getRules();
+        String rule3 = col3.getRules();
+    
+        doAssert(!rule1.equals(rule2), "Default collator getRules failed");
+        doAssert(!rule2.equals(rule3), "Default collator getRules failed");
+        doAssert(!rule1.equals(rule3), "Default collator getRules failed");
+        
+        try {
+            col4 = new RuleBasedCollator(rule2);
+        } catch (Exception e) {
+            errln("RuleBased Collator creation failed.\n");
+            return;
+        }
+    
+        String rule4 = col4.getRules();
+        doAssert(rule2.equals(rule4), "Default collator getRules failed");
+        // tests that modifier ! is always ignored
+        String exclamationrules = "!&a<b";
+        // java does not allow ! to be the start of the rule
+        String thaistr = "\u0e40\u0e01\u0e2d";
+        try {
+            RuleBasedCollator col5 = new RuleBasedCollator(exclamationrules);
+            RuleBasedCollator encol = (RuleBasedCollator)
+                                        Collator.getInstance(Locale.ENGLISH);
+            CollationElementIterator col5iter 
+                                   = col5.getCollationElementIterator(thaistr);
+            CollationElementIterator encoliter 
+                                   = encol.getCollationElementIterator(
+                                                                      thaistr);
+            while (true) {
+                // testing with en since thai has its own tailoring
+                int ce = col5iter.next();
+                int ce2 = encoliter.next();
+                if (ce2 != ce) {
+                    errln("! modifier test failed");
+                }
+                if (ce == CollationElementIterator.NULLORDER) {
+                    break;
+                }
+            }
+        } catch (Exception e) {
+            errln("RuleBased Collator creation failed for ! modifier.\n");
+            return;
+        }
+    }
+    
+    /**
+    * This tests the RuleBasedCollator
+    * - getRules
+    */
+    public void TestRules() {
+        RuleBasedCollator coll;
+        try {
+            coll = (RuleBasedCollator)Collator.getInstance(Locale.ENGLISH); 
+            // logln("PASS: RuleBased Collator creation passed\n");
+        } catch (Exception e) {
+            errln("English Collator creation failed.\n");
+            return;
+        }
+    
+        String rules = coll.getRules();
+        if (rules != null && rules.length() != 0) {
+            errln("English tailored rules failed");
+        }
+    }
+    
+    public void TestSafeClone() {
+        String test1 = "abCda";
+        String test2 = "abcda";
+        
+        // one default collator & two complex ones 
+        RuleBasedCollator someCollators[] = {
+            (RuleBasedCollator)Collator.getInstance(Locale.ENGLISH),
+            (RuleBasedCollator)Collator.getInstance(Locale.KOREA),
+            (RuleBasedCollator)Collator.getInstance(Locale.JAPAN)
+        };
+        RuleBasedCollator someClonedCollators[] = new RuleBasedCollator[3];
+        
+        // change orig & clone & make sure they are independent 
+    
+        for (int index = 0; index < someCollators.length; index ++)
+        {
+            try {
+                someClonedCollators[index] 
+                            = (RuleBasedCollator)someCollators[index].clone();
+            } catch (CloneNotSupportedException e) {
+                errln("Error cloning collator");
+            }
+    
+            someClonedCollators[index].setStrength(Collator.TERTIARY);
+            someCollators[index].setStrength(Collator.PRIMARY);
+            someClonedCollators[index].setCaseLevel(false);
+            someCollators[index].setCaseLevel(false);
+            
+            doAssert(someClonedCollators[index].compare(test1, test2) > 0, 
+                     "Result should be \"abCda\" >>> \"abcda\" ");
+            doAssert(someCollators[index].compare(test1, test2) == 0, 
+                     "Result should be \"abCda\" == \"abcda\" ");
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationCurrencyTest.java b/src/com/ibm/icu/dev/test/collator/CollationCurrencyTest.java
new file mode 100644
index 0000000..2767ee7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationCurrencyTest.java
@@ -0,0 +1,192 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationCurrencyTest
+ * Source File: $ICU4CRoot/source/test/intltest/currcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class CollationCurrencyTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollationCurrencyTest().run(args);
+    }
+    
+    public void TestCurrency() {
+        // All the currency symbols, in collation order
+        char[][] currency = {
+            { 0x00A4 }, /*00A4; L; [14 36, 03, 03]    # [082B.0020.0002] # CURRENCY SIGN*/
+            { 0x00A2 }, /*00A2; L; [14 38, 03, 03]    # [082C.0020.0002] # CENT SIGN*/
+            { 0xFFE0 }, /*FFE0; L; [14 38, 03, 05]    # [082C.0020.0003] # FULLWIDTH CENT SIGN*/
+            { 0x0024 }, /*0024; L; [14 3A, 03, 03]    # [082D.0020.0002] # DOLLAR SIGN*/
+            { 0xFF04 }, /*FF04; L; [14 3A, 03, 05]    # [082D.0020.0003] # FULLWIDTH DOLLAR SIGN*/
+            { 0xFE69 }, /*FE69; L; [14 3A, 03, 1D]    # [082D.0020.000F] # SMALL DOLLAR SIGN*/
+            { 0x00A3 }, /*00A3; L; [14 3C, 03, 03]    # [082E.0020.0002] # POUND SIGN*/
+            { 0xFFE1 }, /*FFE1; L; [14 3C, 03, 05]    # [082E.0020.0003] # FULLWIDTH POUND SIGN*/
+            { 0x00A5 }, /*00A5; L; [14 3E, 03, 03]    # [082F.0020.0002] # YEN SIGN*/
+            { 0xFFE5 }, /*FFE5; L; [14 3E, 03, 05]    # [082F.0020.0003] # FULLWIDTH YEN SIGN*/
+            { 0x09F2 }, /*09F2; L; [14 40, 03, 03]    # [0830.0020.0002] # BENGALI RUPEE MARK*/
+            { 0x09F3 }, /*09F3; L; [14 42, 03, 03]    # [0831.0020.0002] # BENGALI RUPEE SIGN*/
+            { 0x0E3F }, /*0E3F; L; [14 44, 03, 03]    # [0832.0020.0002] # THAI CURRENCY SYMBOL BAHT*/
+            { 0x17DB }, /*17DB; L; [14 46, 03, 03]    # [0833.0020.0002] # KHMER CURRENCY SYMBOL RIEL*/
+            { 0x20A0 }, /*20A0; L; [14 48, 03, 03]    # [0834.0020.0002] # EURO-CURRENCY SIGN*/
+            { 0x20A1 }, /*20A1; L; [14 4A, 03, 03]    # [0835.0020.0002] # COLON SIGN*/
+            { 0x20A2 }, /*20A2; L; [14 4C, 03, 03]    # [0836.0020.0002] # CRUZEIRO SIGN*/
+            { 0x20A3 }, /*20A3; L; [14 4E, 03, 03]    # [0837.0020.0002] # FRENCH FRANC SIGN*/
+            { 0x20A4 }, /*20A4; L; [14 50, 03, 03]    # [0838.0020.0002] # LIRA SIGN*/
+            { 0x20A5 }, /*20A5; L; [14 52, 03, 03]    # [0839.0020.0002] # MILL SIGN*/
+            { 0x20A6 }, /*20A6; L; [14 54, 03, 03]    # [083A.0020.0002] # NAIRA SIGN*/
+            { 0x20A7 }, /*20A7; L; [14 56, 03, 03]    # [083B.0020.0002] # PESETA SIGN*/
+            { 0x20A9 }, /*20A9; L; [14 58, 03, 03]    # [083C.0020.0002] # WON SIGN*/
+            { 0xFFE6 }, /*FFE6; L; [14 58, 03, 05]    # [083C.0020.0003] # FULLWIDTH WON SIGN*/
+            { 0x20AA }, /*20AA; L; [14 5A, 03, 03]    # [083D.0020.0002] # NEW SHEQEL SIGN*/
+            { 0x20AB }, /*20AB; L; [14 5C, 03, 03]    # [083E.0020.0002] # DONG SIGN*/
+            { 0x20AC }, /*20AC; L; [14 5E, 03, 03]    # [083F.0020.0002] # EURO SIGN*/
+            { 0x20AD }, /*20AD; L; [14 60, 03, 03]    # [0840.0020.0002] # KIP SIGN*/
+            { 0x20AE }, /*20AE; L; [14 62, 03, 03]    # [0841.0020.0002] # TUGRIK SIGN*/
+            { 0x20AF } /*20AF; L; [14 64, 03, 03]    # [0842.0020.0002] # DRACHMA SIGN*/
+        };
+    
+        int i, j;
+        int expectedResult = 0;
+        RuleBasedCollator c = (RuleBasedCollator)Collator.getInstance(Locale.ENGLISH);
+        
+        // Compare each currency symbol against all the
+        // currency symbols, including itself
+        String source;
+        String target;
+        
+        for (i = 0; i < currency.length; i += 1) {
+            for (j = 0; j < currency.length; j += 1) {
+                source = new String(currency[i]);
+                target = new String(currency[j]);
+
+                if (i < j) {
+                    expectedResult = -1;
+                } else if ( i == j) {
+                    expectedResult = 0;
+                } else {
+                    expectedResult = 1;
+                }
+
+                int compareResult = c.compare(source, target);
+                CollationKey sourceKey = null;
+            
+                sourceKey = c.getCollationKey(source);
+
+                if (sourceKey == null) {
+                    errln("Couldn't get collationKey for source");
+                    continue;
+                }
+            
+                CollationKey targetKey = null;
+                targetKey = c.getCollationKey(target);
+                if (targetKey == null) {
+                    errln("Couldn't get collationKey for source");
+                    continue;
+                }
+
+                int keyResult = sourceKey.compareTo(targetKey);
+
+                reportCResult( source, target, sourceKey, targetKey, compareResult, keyResult, compareResult, expectedResult );
+            }
+        }
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationDanishTest.java b/src/com/ibm/icu/dev/test/collator/CollationDanishTest.java
new file mode 100644
index 0000000..709f467
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationDanishTest.java
@@ -0,0 +1,314 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationDanishTest
+ * Source File: $ICU4CRoot/source/test/intltest/dacoll.cpp
+ **/
+
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class CollationDanishTest extends TestFmwk{
+    public static void main(String[] args) throws Exception {
+        new CollationDanishTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x004C /* 'L' */, 0x0075 /* 'u' */, 0x0063 /* 'c' */},
+        {0x006C /* 'l' */, 0x0075 /* 'u' */, 0x0063 /* 'c' */, 0x006B /* 'k' */},
+        {0x004C /* 'L' */, 0x00FC, 0x0062 /* 'b' */, 0x0065 /* 'e' */, 0x0063 /* 'c' */, 0x006B /* 'k' */},
+        {0x004C /* 'L' */, 0x00E4, 0x0076 /* 'v' */, 0x0069 /* 'i' */},
+        {0x004C /* 'L' */, 0x00F6, 0x0077 /* 'w' */, 0x0077 /* 'w' */},
+        {0x004C /* 'L' */, 0x0076 /* 'v' */, 0x0069 /* 'i' */},
+        {0x004C /* 'L' */, 0x00E4, 0x0076 /* 'v' */, 0x0069 /* 'i' */},
+        {0x004C /* 'L' */, 0x00FC, 0x0062 /* 'b' */, 0x0065 /* 'e' */, 0x0063 /* 'c' */, 0x006B /* 'k' */}
+    };
+
+    private static char[][] testTargetCases = {
+        {0x006C /* 'l' */, 0x0075 /* 'u' */, 0x0063 /* 'c' */, 0x006B /* 'k' */},
+        {0x004C /* 'L' */, 0x00FC, 0x0062 /* 'b' */, 0x0065 /* 'e' */, 0x0063 /* 'c' */, 0x006B /* 'k' */},
+        {0x006C /* 'l' */, 0x0079 /* 'y' */, 0x0062 /* 'b' */, 0x0065 /* 'e' */, 0x0063 /* 'c' */, 0x006B /* 'k' */},
+        {0x004C /* 'L' */, 0x00F6, 0x0077 /* 'w' */, 0x0065 /* 'e' */},
+        {0x006D /* 'm' */, 0x0061 /* 'a' */, 0x0073 /* 's' */, 0x0074 /* 't' */},
+        {0x004C /* 'L' */, 0x0077 /* 'w' */, 0x0069 /* 'i' */},
+        {0x004C /* 'L' */, 0x00F6, 0x0077 /* 'w' */, 0x0069 /* 'i' */},
+        {0x004C /* 'L' */, 0x0079 /* 'y' */, 0x0062 /* 'b' */, 0x0065 /* 'e' */, 0x0063 /* 'c' */, 0x006B /* 'k' */}
+    };
+
+    private static int[] results = {
+        -1,
+        -1,
+        1,
+        -1,
+        -1,
+        /* test primary > 5*/
+        0,
+        -1,
+        0
+    };
+
+    private static char[][] testBugs = {
+        {0x0041 /* 'A' */, 0x002F /* '/' */, 0x0053 /* 'S' */},
+        {0x0041 /* 'A' */, 0x004E /* 'N' */, 0x0044 /* 'D' */, 0x0052 /* 'R' */, 0x0045 /* 'E' */},
+        {0x0041 /* 'A' */, 0x004E /* 'N' */, 0x0044 /* 'D' */, 0x0052 /* 'R' */, 0x00C9},
+        {0x0041 /* 'A' */, 0x004E /* 'N' */, 0x0044 /* 'D' */, 0x0052 /* 'R' */, 0x0045 /* 'E' */, 0x0041 /* 'A' */, 0x0053 /* 'S' */},
+        {0x0041 /* 'A' */, 0x0053 /* 'S' */},
+        {0x0043 /* 'C' */, 0x0041 /* 'A' */},
+        {0x00C7, 0x0041 /* 'A' */},
+        {0x0043 /* 'C' */, 0x0042 /* 'B' */},
+        {0x00C7, 0x0043 /* 'C' */,0x0000 /* '\0' */},
+        {0x0044 /* 'D' */, 0x002E /* '.' */, 0x0053 /* 'S' */, 0x002E /* '.' */, 0x0042 /* 'B' */, 0x002E /* '.' */},
+        {0x0044 /* 'D' */, 0x0041 /* 'A' */},                                                                           
+        {0x0044 /* 'D' */, 0x0042 /* 'B' */},
+        {0x0044 /* 'D' */, 0x0053 /* 'S' */, 0x0042 /* 'B' */},
+        {0x0044 /* 'D' */, 0x0053 /* 'S' */, 0x0043 /* 'C' */},
+        {0x00D0, /*0x0110,*/ 0x0041 /* 'A' */},
+        {0x00D0, /*0x0110,*/ 0x0043 /* 'C' */},
+        {0x0045 /* 'E' */, 0x004B /* 'K' */, 0x0053 /* 'S' */, 0x0054 /* 'T' */, 0x0052 /* 'R' */, 0x0041 /* 'A' */, 0x005F /* '_' */, 0x0041 /* 'A' */, 0x0052 /* 'R' */, 0x0042 /* 'B' */, 0x0045 /* 'E' */, 0x004A /* 'J' */, 0x0044 /* 'D' */, 0x0045 /* 'E' */},
+        {0x0045 /* 'E' */, 0x004B /* 'K' */, 0x0053 /* 'S' */, 0x0054 /* 'T' */, 0x0052 /* 'R' */, 0x0041 /* 'A' */, 0x0042 /* 'B' */, 0x0055 /* 'U' */, 0x0044 /* 'D' */, 0},
+        {0x0048 /* 'H' */, 0x00D8, 0x0053 /* 'S' */, 0x0054 /* 'T' */},  
+        {0x0048 /* 'H' */, 0x0041 /* 'A' */, 0x0041 /* 'A' */, 0x0047 /* 'G' */},                                                                 
+        {0x0048 /* 'H' */, 0x00C5, 0x004E /* 'N' */, 0x0044 /* 'D' */, 0x0042 /* 'B' */, 0x004F /* 'O' */, 0x0047 /* 'G' */},
+        {0x0048 /* 'H' */, 0x0041 /* 'A' */, 0x0041 /* 'A' */, 0x004E /* 'N' */, 0x0044 /* 'D' */, 0x0056 /* 'V' */, 0x00C6, 0x0052 /* 'R' */, 0x004B /* 'K' */, 0x0053 /* 'S' */, 0x0042 /* 'B' */, 0x0041 /* 'A' */, 0x004E /* 'N' */, 0x004B /* 'K' */, 0x0045 /* 'E' */, 0x004E /* 'N' */},
+        {0x006B /* 'k' */, 0x0061 /* 'a' */, 0x0072 /* 'r' */, 0x006C /* 'l' */},
+        {0x004B /* 'K' */, 0x0061 /* 'a' */, 0x0072 /* 'r' */, 0x006C /* 'l' */},
+        {0x004E /* 'N' */, 0x0049 /* 'I' */, 0x0045 /* 'E' */, 0x004C /* 'L' */, 0x0053 /* 'S' */, 0x0020 /* ' ' */, 0x004A /* 'J' */, 0x00D8, 0x0052 /* 'R' */, 0x0047 /* 'G' */, 0x0045 /* 'E' */, 0x004E /* 'N' */},
+        {0x004E /* 'N' */, 0x0049 /* 'I' */, 0x0045 /* 'E' */, 0x004C /* 'L' */, 0x0053 /* 'S' */, 0x002D /* '-' */, 0x004A /* 'J' */, 0x00D8, 0x0052 /* 'R' */, 0x0047 /* 'G' */, 0x0045 /* 'E' */, 0x004E /* 'N' */},
+        {0x004E /* 'N' */, 0x0049 /* 'I' */, 0x0045 /* 'E' */, 0x004C /* 'L' */, 0x0053 /* 'S' */, 0x0045 /* 'E' */, 0x004E /* 'N' */},
+        {0x0052 /* 'R' */, 0x00C9, 0x0045 /* 'E' */, 0x002C /* ',' */, 0x0020 /* ' ' */, 0x0041 /* 'A' */},
+        {0x0052 /* 'R' */, 0x0045 /* 'E' */, 0x0045 /* 'E' */, 0x002C /* ',' */, 0x0020 /* ' ' */, 0x0042 /* 'B' */},
+        {0x0052 /* 'R' */, 0x00C9, 0x0045 /* 'E' */, 0x002C /* ',' */, 0x0020 /* ' ' */, 0x004C /* 'L' */},                                                    
+        {0x0052 /* 'R' */, 0x0045 /* 'E' */, 0x0045 /* 'E' */, 0x002C /* ',' */, 0x0020 /* ' ' */, 0x0056 /* 'V' */},
+        {0x0053 /* 'S' */, 0x0043 /* 'C' */, 0x0048 /* 'H' */, 0x0059 /* 'Y' */, 0x0054 /* 'T' */, 0x0054 /* 'T' */, 0x002C /* ',' */, 0x0020 /* ' ' */, 0x0042 /* 'B' */},
+        {0x0053 /* 'S' */, 0x0043 /* 'C' */, 0x0048 /* 'H' */, 0x0059 /* 'Y' */, 0x0054 /* 'T' */, 0x0054 /* 'T' */, 0x002C /* ',' */, 0x0020 /* ' ' */, 0x0048 /* 'H' */},
+        {0x0053 /* 'S' */, 0x0043 /* 'C' */, 0x0048 /* 'H' */, 0x00DC, 0x0054 /* 'T' */, 0x0054 /* 'T' */, 0x002C /* ',' */, 0x0020 /* ' ' */, 0x0048 /* 'H' */},
+        {0x0053 /* 'S' */, 0x0043 /* 'C' */, 0x0048 /* 'H' */, 0x0059 /* 'Y' */, 0x0054 /* 'T' */, 0x0054 /* 'T' */, 0x002C /* ',' */, 0x0020 /* ' ' */, 0x004C /* 'L' */},
+        {0x0053 /* 'S' */, 0x0043 /* 'C' */, 0x0048 /* 'H' */, 0x00DC, 0x0054 /* 'T' */, 0x0054 /* 'T' */, 0x002C /* ',' */, 0x0020 /* ' ' */, 0x004D /* 'M' */},
+        {0x0053 /* 'S' */, 0x0053 /* 'S' */},
+        {0x00DF},
+        {0x0053 /* 'S' */, 0x0053 /* 'S' */, 0x0041 /* 'A' */},
+        {0x0053 /* 'S' */, 0x0054 /* 'T' */, 0x004F /* 'O' */, 0x0052 /* 'R' */, 0x0045 /* 'E' */, 0x0020 /* ' ' */, 0x0056 /* 'V' */, 0x0049 /* 'I' */, 0x004C /* 'L' */, 0x0044 /* 'D' */, 0x004D /* 'M' */, 0x004F /* 'O' */, 0x0053 /* 'S' */, 0x0045 /* 'E' */},               
+        {0x0053 /* 'S' */, 0x0054 /* 'T' */, 0x004F /* 'O' */, 0x0052 /* 'R' */, 0x0045 /* 'E' */, 0x004B /* 'K' */, 0x00C6, 0x0052 /* 'R' */, 0},
+        {0x0053 /* 'S' */, 0x0054 /* 'T' */, 0x004F /* 'O' */, 0x0052 /* 'R' */, 0x004D /* 'M' */, 0x0020 /* ' ' */, 0x0050 /* 'P' */, 0x0045 /* 'E' */, 0x0054 /* 'T' */, 0x0045 /* 'E' */, 0x0052 /* 'R' */, 0x0053 /* 'S' */, 0x0045 /* 'E' */, 0x004E /* 'N' */},
+        {0x0053 /* 'S' */, 0x0054 /* 'T' */, 0x004F /* 'O' */, 0x0052 /* 'R' */, 0x004D /* 'M' */, 0x004C /* 'L' */, 0x0059 /* 'Y' */},
+        {0x0054 /* 'T' */, 0x0048 /* 'H' */, 0x004F /* 'O' */, 0x0052 /* 'R' */, 0x0056 /* 'V' */, 0x0041 /* 'A' */, 0x004C /* 'L' */, 0x0044 /* 'D' */},
+        {0x0054 /* 'T' */, 0x0048 /* 'H' */, 0x004F /* 'O' */, 0x0052 /* 'R' */, 0x0056 /* 'V' */, 0x0041 /* 'A' */, 0x0052 /* 'R' */, 0x0044 /* 'D' */, 0x0055 /* 'U' */, 0x0052 /* 'R' */},
+        {0x0054 /* 'T' */, 0x0048 /* 'H' */, 0x0059 /* 'Y' */, 0x0047 /* 'G' */, 0x0045 /* 'E' */, 0x0053 /* 'S' */, 0x0045 /* 'E' */, 0x004E /* 'N' */},
+        {0x00FE, 0x004F /* 'O' */, 0x0052 /* 'R' */, 0x0056 /* 'V' */, 0x0041 /* 'A' */, 0x0052 /* 'R' */, 0x00D0, /*0x0110,*/ 0x0055 /* 'U' */, 0x0052 /* 'R' */},
+        {0x0056 /* 'V' */, 0x0045 /* 'E' */, 0x0053 /* 'S' */, 0x0054 /* 'T' */, 0x0045 /* 'E' */, 0x0052 /* 'R' */, 0x0047 /* 'G' */, 0x00C5, 0x0052 /* 'R' */, 0x0044 /* 'D' */, 0x002C /* ',' */, 0x0020 /* ' ' */, 0x0041 /* 'A' */},
+        {0x0056 /* 'V' */, 0x0045 /* 'E' */, 0x0053 /* 'S' */, 0x0054 /* 'T' */, 0x0045 /* 'E' */, 0x0052 /* 'R' */, 0x0047 /* 'G' */, 0x0041 /* 'A' */, 0x0041 /* 'A' */, 0x0052 /* 'R' */, 0x0044 /* 'D' */, 0x002C /* ',' */, 0x0020 /* ' ' */, 0x0041 /* 'A' */},
+        {0x0056 /* 'V' */, 0x0045 /* 'E' */, 0x0053 /* 'S' */, 0x0054 /* 'T' */, 0x0045 /* 'E' */, 0x0052 /* 'R' */, 0x0047 /* 'G' */, 0x00C5, 0x0052 /* 'R' */, 0x0044 /* 'D' */, 0x002C /* ',' */, 0x0020 /* ' ' */, 0x0042 /* 'B' */},                 
+        {0x00C6, 0x0042 /* 'B' */, 0x004C /* 'L' */, 0x0045 /* 'E' */},
+        {0x00C4, 0x0042 /* 'B' */, 0x004C /* 'L' */, 0x0045 /* 'E' */},
+        {0x00D8, 0x0042 /* 'B' */, 0x0045 /* 'E' */, 0x0052 /* 'R' */, 0x0047 /* 'G' */},
+        {0x00D6, 0x0042 /* 'B' */, 0x0045 /* 'E' */, 0x0052 /* 'R' */, 0x0047 /* 'G' */}
+    };
+
+    private static char[][] testNTList = {
+        {0x0061 /* 'a' */, 0x006E /* 'n' */, 0x0064 /* 'd' */, 0x0065 /* 'e' */, 0x0072 /* 'r' */, 0x0065 /* 'e' */},
+        {0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0061 /* 'a' */, 0x0071 /* 'q' */, 0x0075 /* 'u' */, 0x0065 /* 'e' */},
+        {0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */, 0x006D /* 'm' */, 0x0069 /* 'i' */, 0x006E /* 'n' */},
+        {0x0063 /* 'c' */, 0x006F /* 'o' */, 0x0074 /* 't' */, 0x0065 /* 'e' */},
+        {0x0063 /* 'c' */, 0x006F /* 'o' */, 0x0074 /* 't' */, 0x00e9},
+        {0x0063 /* 'c' */, 0x00f4, 0x0074 /* 't' */, 0x0065 /* 'e' */},
+        {0x0063 /* 'c' */, 0x00f4, 0x0074 /* 't' */, 0x00e9},
+        {0x010d, 0x0075 /* 'u' */, 0x010d, 0x0113, 0x0074 /* 't' */},
+        {0x0043 /* 'C' */, 0x007A /* 'z' */, 0x0065 /* 'e' */, 0x0063 /* 'c' */, 0x0068 /* 'h' */},
+        {0x0068 /* 'h' */, 0x0069 /* 'i' */, 0x0161, 0x0061 /* 'a' */},
+        {0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */, 0x0069 /* 'i' */, 0x0073 /* 's' */, 0x0063 /* 'c' */, 0x0068 /* 'h' */},
+        {0x006C /* 'l' */, 0x0069 /* 'i' */, 0x0065 /* 'e' */},
+        {0x006C /* 'l' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0065 /* 'e' */},
+        {0x006C /* 'l' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x006D /* 'm' */, 0x0061 /* 'a' */},
+        {0x006C /* 'l' */, 0x00f5, 0x0075 /* 'u' */, 0x0067 /* 'g' */},
+        {0x006C /* 'l' */, 0x00f2, 0x007A /* 'z' */, 0x0061 /* 'a' */},
+        {0x006C /* 'l' */, 0x0075 /* 'u' */, 0x010d},                                
+        {0x006C /* 'l' */, 0x0075 /* 'u' */, 0x0063 /* 'c' */, 0x006B /* 'k' */},
+        {0x004C /* 'L' */, 0x00fc, 0x0062 /* 'b' */, 0x0065 /* 'e' */, 0x0063 /* 'c' */, 0x006B /* 'k' */},
+        {0x006C /* 'l' */, 0x0079 /* 'y' */, 0x0065 /* 'e' */},                               
+        {0x006C /* 'l' */, 0x00e4, 0x0076 /* 'v' */, 0x0069 /* 'i' */},
+        {0x004C /* 'L' */, 0x00f6, 0x0077 /* 'w' */, 0x0065 /* 'e' */, 0x006E /* 'n' */},
+        {0x006D /* 'm' */, 0x00e0, 0x0161, 0x0074 /* 't' */, 0x0061 /* 'a' */},
+        {0x006D /* 'm' */, 0x00ee, 0x0072 /* 'r' */},
+        {0x006D /* 'm' */, 0x0079 /* 'y' */, 0x006E /* 'n' */, 0x0064 /* 'd' */, 0x0069 /* 'i' */, 0x0067 /* 'g' */},
+        {0x004D /* 'M' */, 0x00e4, 0x006E /* 'n' */, 0x006E /* 'n' */, 0x0065 /* 'e' */, 0x0072 /* 'r' */},
+        {0x006D /* 'm' */, 0x00f6, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0074 /* 't' */, 0x0065 /* 'e' */, 0x006E /* 'n' */},
+        {0x0070 /* 'p' */, 0x0069 /* 'i' */, 0x00f1, 0x0061 /* 'a' */},
+        {0x0070 /* 'p' */, 0x0069 /* 'i' */, 0x006E /* 'n' */, 0x0074 /* 't' */},
+        {0x0070 /* 'p' */, 0x0079 /* 'y' */, 0x006C /* 'l' */, 0x006F /* 'o' */, 0x006E /* 'n' */},
+        {0x0161, 0x00e0, 0x0072 /* 'r' */, 0x0061 /* 'a' */, 0x006E /* 'n' */},
+        {0x0073 /* 's' */, 0x0061 /* 'a' */, 0x0076 /* 'v' */, 0x006F /* 'o' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */},
+        {0x0160, 0x0065 /* 'e' */, 0x0072 /* 'r' */, 0x0062 /* 'b' */, 0x016b, 0x0072 /* 'r' */, 0x0061 /* 'a' */},
+        {0x0053 /* 'S' */, 0x0069 /* 'i' */, 0x0065 /* 'e' */, 0x0074 /* 't' */, 0x006C /* 'l' */, 0x0061 /* 'a' */},
+        {0x015b, 0x006C /* 'l' */, 0x0075 /* 'u' */, 0x0062 /* 'b' */},
+        {0x0073 /* 's' */, 0x0075 /* 'u' */, 0x0062 /* 'b' */, 0x0074 /* 't' */, 0x006C /* 'l' */, 0x0065 /* 'e' */},
+        {0x0073 /* 's' */, 0x0079 /* 'y' */, 0x006D /* 'm' */, 0x0062 /* 'b' */, 0x006F /* 'o' */, 0x006C /* 'l' */},
+        {0x0073 /* 's' */, 0x00e4, 0x006D /* 'm' */, 0x0074 /* 't' */, 0x006C /* 'l' */, 0x0069 /* 'i' */, 0x0063 /* 'c' */, 0x0068 /* 'h' */},
+        {0x0077 /* 'w' */, 0x0061 /* 'a' */, 0x0066 /* 'f' */, 0x0066 /* 'f' */, 0x006C /* 'l' */, 0x0065 /* 'e' */},
+        {0x0076 /* 'v' */, 0x0065 /* 'e' */, 0x0072 /* 'r' */, 0x006B /* 'k' */, 0x0065 /* 'e' */, 0x0068 /* 'h' */, 0x0072 /* 'r' */, 0x0074 /* 't' */},
+        {0x0077 /* 'w' */, 0x006F /* 'o' */, 0x006F /* 'o' */, 0x0064 /* 'd' */},
+        {0x0076 /* 'v' */, 0x006F /* 'o' */, 0x0078 /* 'x' */},                                 
+        {0x0076 /* 'v' */, 0x00e4, 0x0067 /* 'g' */, 0x0061 /* 'a' */},
+        {0x0079 /* 'y' */, 0x0065 /* 'e' */, 0x006E /* 'n' */},
+        {0x0079 /* 'y' */, 0x0075 /* 'u' */, 0x0061 /* 'a' */, 0x006E /* 'n' */},
+        {0x0079 /* 'y' */, 0x0075 /* 'u' */, 0x0063 /* 'c' */, 0x0063 /* 'c' */, 0x0061 /* 'a' */},
+        {0x017e, 0x0061 /* 'a' */, 0x006C /* 'l' */},
+        {0x017e, 0x0065 /* 'e' */, 0x006E /* 'n' */, 0x0061 /* 'a' */},
+        {0x017d, 0x0065 /* 'e' */, 0x006E /* 'n' */, 0x0113, 0x0076 /* 'v' */, 0x0061 /* 'a' */},
+        {0x007A /* 'z' */, 0x006F /* 'o' */, 0x006F /* 'o' */, 0},
+        {0x005A /* 'Z' */, 0x0076 /* 'v' */, 0x0069 /* 'i' */, 0x0065 /* 'e' */, 0x0064 /* 'd' */, 0x0072 /* 'r' */, 0x0069 /* 'i' */, 0x006A /* 'j' */, 0x0061 /* 'a' */},
+        {0x005A /* 'Z' */, 0x00fc, 0x0072 /* 'r' */, 0x0069 /* 'i' */, 0x0063 /* 'c' */, 0x0068 /* 'h' */},
+        {0x007A /* 'z' */, 0x0079 /* 'y' */, 0x0073 /* 's' */, 0x006B /* 'k' */, 0},             
+        {0x00e4, 0x006E /* 'n' */, 0x0064 /* 'd' */, 0x0065 /* 'e' */, 0x0072 /* 'r' */, 0x0065 /* 'e' */}                  
+    };
+    
+    private Collator myCollation = null;
+    
+    public CollationDanishTest() {
+        try {
+            myCollation = Collator.getInstance(new Locale("da", "DK"));
+        } catch (Exception e) {
+            errln("ERROR: in creation of collator of DANISH locale");
+            return;
+        }
+    }
+    
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        
+        for (i = 0; i < 5 ; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+        int j = 0;
+        logln("Test internet data list : ");
+        for (i = 0; i < 53; i++) {
+            for (j = i+1; j < 54; j++) {
+                doTest(testBugs[i], testBugs[j], -1);
+            }
+        }
+        logln("Test NT data list : ");
+        for (i = 0; i < 52; i++) {
+            for (j = i+1; j < 53; j++) {
+            	doTest(testNTList[i], testNTList[j], -1);
+            }
+        }
+    }
+
+    public void TestPrimary() {
+        int i;
+        myCollation.setStrength(Collator.PRIMARY);
+        for (i = 5; i < 8; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+
+    
+    
+    // main test routine, Tests rules specific to danish collation
+    private void doTest(char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);   
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
+    
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationDummyTest.java b/src/com/ibm/icu/dev/test/collator/CollationDummyTest.java
new file mode 100644
index 0000000..9e848bc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationDummyTest.java
@@ -0,0 +1,520 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationDummyTest
+ * Source File: $ICU4CRoot/source/test/intltest/allcoll.cpp
+ *              $ICU4CRoot/source/test/cintltst/callcoll.c
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class CollationDummyTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollationDummyTest().run(args);
+        // new CollationDummyTest().TestVariableTop();
+    }
+    
+    //testSourceCases[][] and testTargetCases[][], testCases[][] are ported from the file callcoll.c in icu4c
+    private static char[][] testSourceCases = {
+        {0x61, 0x62, 0x27, 0x63},
+        {0x63, 0x6f, 0x2d, 0x6f, 0x70},
+        {0x61, 0x62},
+        {0x61, 0x6d, 0x70, 0x65, 0x72, 0x73, 0x61, 0x64},
+        {0x61, 0x6c, 0x6c},
+        {0x66, 0x6f, 0x75, 0x72},
+        {0x66, 0x69, 0x76, 0x65},
+        {0x31},
+        {0x31},
+        {0x31},                                            //  10 
+        {0x32},
+        {0x32},
+        {0x48, 0x65, 0x6c, 0x6c, 0x6f},
+        {0x61, 0x3c, 0x62},
+        {0x61, 0x3c, 0x62},
+        {0x61, 0x63, 0x63},
+        {0x61, 0x63, 0x48, 0x63},  //  simple test 
+        {0x70, 0x00EA, 0x63, 0x68, 0x65},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x62, 0x63},                                  //  20 
+        {0x61, 0x62, 0x63},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x00E6, 0x63},
+        {0x61, 0x63, 0x48, 0x63},  //  primary test 
+        {0x62, 0x6c, 0x61, 0x63, 0x6b},
+        {0x66, 0x6f, 0x75, 0x72},
+        {0x66, 0x69, 0x76, 0x65},
+        {0x31},
+        {0x61, 0x62, 0x63},                                        //  30 
+        {0x61, 0x62, 0x63},                                  
+        {0x61, 0x62, 0x63, 0x48},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x63, 0x48, 0x63},                              //  34 
+        {0x61, 0x63, 0x65, 0x30},
+        {0x31, 0x30},
+        {0x70, 0x00EA,0x30}                                    // 37     
+    };
+
+    private static char[][] testTargetCases = {
+        {0x61, 0x62, 0x63, 0x27},
+        {0x43, 0x4f, 0x4f, 0x50},
+        {0x61, 0x62, 0x63},
+        {0x26},
+        {0x26},
+        {0x34},
+        {0x35},
+        {0x6f, 0x6e, 0x65},
+        {0x6e, 0x6e, 0x65},
+        {0x70, 0x6e, 0x65},                                  //  10 
+        {0x74, 0x77, 0x6f},
+        {0x75, 0x77, 0x6f},
+        {0x68, 0x65, 0x6c, 0x6c, 0x4f},
+        {0x61, 0x3c, 0x3d, 0x62},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x43, 0x48, 0x63},
+        {0x61, 0x43, 0x48, 0x63},  //  simple test 
+        {0x70, 0x00E9, 0x63, 0x68, 0x00E9},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x42, 0x43},                                  //  20 
+        {0x61, 0x62, 0x63, 0x68},
+        {0x61, 0x62, 0x64},
+        {0x00E4, 0x62, 0x63},
+        {0x61, 0x00C6, 0x63},
+        {0x61, 0x43, 0x48, 0x63},  //  primary test 
+        {0x62, 0x6c, 0x61, 0x63, 0x6b, 0x2d, 0x62, 0x69, 0x72, 0x64},
+        {0x34},
+        {0x35},
+        {0x6f, 0x6e, 0x65},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x42, 0x63},                                  //  30 
+        {0x61, 0x62, 0x63, 0x68},
+        {0x61, 0x62, 0x64},
+        {0x61, 0x43, 0x48, 0x63},                                //  34 
+        {0x61, 0x63, 0x65, 0x30},
+        {0x31, 0x30},
+        {0x70, 0x00EB,0x30}                                    // 37 
+    };
+    
+    private static char[][] testCases = {
+        {0x61},
+        {0x41},
+        {0x00e4},
+        {0x00c4},
+        {0x61, 0x65},
+        {0x61, 0x45},
+        {0x41, 0x65},
+        {0x41, 0x45},
+        {0x00e6},
+        {0x00c6},
+        {0x62},
+        {0x63},
+        {0x7a}
+    };
+    
+    int[] results = {
+        -1,
+        -1, //Collator::GREATER,
+        -1,
+        -1,
+        -1,
+        -1,
+        -1,
+        1,
+        1,
+        -1,                                     //  10 
+        1,
+        -1,
+        1,
+        1,
+        -1,
+        -1,
+        -1,
+    //  test primary > 17 
+        0,
+        0,
+        0,                                    //  20 
+        -1,
+        -1,
+        0,
+        0,
+        0,
+        -1,
+    //  test secondary > 26 
+        0,
+        0,
+        0,
+        0,
+        0,                                    //  30 
+        0,
+        -1,
+        0,                                     //  34 
+        0,
+        0,
+        -1 
+    };
+    
+    final int MAX_TOKEN_LEN = 16;
+    
+    public RuleBasedCollator myCollation;
+    
+    public CollationDummyTest() {
+        String ruleset = "& C < ch, cH, Ch, CH & Five, 5 & Four, 4 & one, 1 & Ampersand; '&' & Two, 2 ";
+        // String ruleset = "& Four, 4";
+        myCollation = null;
+        try{
+            myCollation = new RuleBasedCollator(ruleset);
+        } catch(Exception e){
+            errln("Fail to create RuleBasedCollator with rules:" + ruleset);
+            return;
+        }
+    }
+    
+    // perform test with strength tertiary
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < 17 ; i++) {
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+
+    // perform test with strength PRIMARY
+    public void TestPrimary() {
+       // problem in strcollinc for unfinshed contractions 
+       myCollation.setStrength(Collator.PRIMARY);
+        for (int i = 17; i < 26 ; i++) {
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+
+    //perform test with strength SECONDARY
+    public void TestSecondary() {
+        int i;
+        myCollation.setStrength(Collator.SECONDARY);
+        for (i = 26; i < 34; i++) {
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+
+    // perform extra tests
+    public void TestExtra() {
+        int i, j;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < testCases.length - 1; i++) {
+            for (j = i + 1; j < testCases.length; j += 1) {
+                doTest(myCollation, testCases[i], testCases[j], -1);
+            }
+        }
+    }
+
+    public void TestIdentical() {
+        int i;
+        myCollation.setStrength(Collator.IDENTICAL);
+        for (i= 34; i<37; i++) {
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+
+    public void TestJB581() {
+        String source = "THISISATEST.";
+        String target = "Thisisatest.";
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("ERROR: Failed to create the collator for : en_US\n");
+            return;
+        }
+
+        int result = coll.compare(source, target);
+        // result is 1, secondary differences only for ignorable space characters
+        if (result != 1) {
+            errln("Comparing two strings with only secondary differences in C failed.\n");
+            return;
+        }
+        
+        // To compare them with just primary differences 
+        coll.setStrength(Collator.PRIMARY);
+        result = coll.compare(source, target);
+        // result is 0 
+        if (result != 0) {
+            errln("Comparing two strings with no differences in C failed.\n");
+            return;
+        } 
+          
+        // Now, do the same comparison with keys 
+        CollationKey sourceKeyOut, targetKeyOut;
+        sourceKeyOut = coll.getCollationKey(source);
+        targetKeyOut = coll.getCollationKey(target);
+        result = sourceKeyOut.compareTo(targetKeyOut);
+        if (result != 0) {
+            errln("Comparing two strings with sort keys in C failed.\n");
+            return;
+        }
+    }
+    
+    //TestSurrogates() is ported from cintltst/callcoll.c
+    
+    /**
+    * Tests surrogate support.
+    */
+    public void TestSurrogates() 
+    {
+    	String rules = "&z<'\ud800\udc00'<'\ud800\udc0a\u0308'<A";
+        String source[] = {"z",
+        	               "\uD800\uDC00",
+        	               "\ud800\udc0a\u0308",
+        	               "\ud800\udc02"    
+        };
+        
+        String target[] = {"\uD800\uDC00",
+        	               "\ud800\udc0a\u0308",
+        	               "A",
+        	               "\ud800\udc03"    
+        };
+    
+        // this test is to verify the supplementary sort key order in the english 
+        // collator
+        Collator enCollation;
+        try {
+            enCollation = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("ERROR: Failed to create the collator for ENGLISH");
+            return;       
+        }
+        
+        myCollation.setStrength(Collator.TERTIARY);
+        int count = 0;
+        // logln("start of english collation supplementary characters test\n");
+        while (count < 2) {
+            doTest(enCollation, source[count], target[count], -1);
+            count ++;
+        }
+        doTest(enCollation, source[count], target[count], 1);
+            
+        // logln("start of tailored collation supplementary characters test\n");
+        count = 0;
+        Collator newCollation;
+        try {
+            newCollation = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            errln("ERROR: Failed to create the collator for rules");
+            return;       
+        }
+        
+        // tests getting collation elements for surrogates for tailored rules 
+        while (count < 4) {
+            doTest(newCollation, source[count], target[count], -1);
+            count ++;
+        }
+    
+        // tests that \uD801\uDC01 still has the same value, not changed 
+        CollationKey enKey = enCollation.getCollationKey(source[3]);
+        CollationKey newKey = newCollation.getCollationKey(source[3]);
+        int keyResult = enKey.compareTo(newKey);
+        if(keyResult != 0) {
+            errln("Failed : non-tailored supplementary characters should have the same value\n");
+        }
+    }
+    
+    //TestVariableTop() is ported from cintltst/callcoll.c
+    /**
+    * Tests the [variable top] tag in rule syntax. Since the default [alternate]
+    * tag has the value shifted, any codepoints before [variable top] should give
+    * a primary ce of 0.
+    */
+    public void TestVariableTop() {
+        String rule = "&z = [variable top]";
+        Collator  myColl;
+        Collator  enColl;
+        char[] source = new char[1];
+        char ch;
+        int expected[] = {0};
+    
+        try {
+            enColl = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("ERROR: Failed to create the collator for ENGLISH");
+            return;
+        }
+        
+        try{
+            myColl = new RuleBasedCollator(rule);
+        } catch(Exception e){
+            errln("Fail to create RuleBasedCollator with rules:" + rule);
+            return;
+        }  
+        enColl.setStrength(Collator.PRIMARY);
+        myColl.setStrength(Collator.PRIMARY);
+        
+        ((RuleBasedCollator)enColl).setAlternateHandlingShifted(true);
+        ((RuleBasedCollator)myColl).setAlternateHandlingShifted(true);
+        
+        if(((RuleBasedCollator)enColl).isAlternateHandlingShifted() != true) {
+            errln("ERROR: ALTERNATE_HANDLING value can not be set to SHIFTED\n");
+        }
+        
+        // space is supposed to be a variable 
+        CollationKey key = enColl.getCollationKey(" ");   
+        byte[] result = key.toByteArray(); 
+        
+        for(int i = 0; i < result.length; i++) {
+            if(result[i]!= expected[i]) {
+                errln("ERROR: SHIFTED alternate does not return 0 for primary of space\n");  
+                break;  
+            }
+        }
+        
+        ch = 'a';
+        while (ch < 'z') {
+            source[0] = ch;
+            key = myColl.getCollationKey(new String(source));
+            result = key.toByteArray();
+            
+            for(int i = 0; i < result.length; i++) {
+                if(result[i]!= expected[i]) {
+                    errln("ERROR: SHIFTED alternate does not return 0 for primary of space\n");  
+                    break;  
+                }
+            }
+            ch ++;
+        }
+    }
+    
+    public void TestJB1401() {
+        Collator     myCollator = null;
+        char[] NFD_UnsafeStartChars = {
+            0x0f73,          // Tibetan Vowel Sign II 
+            0x0f75,          // Tibetan Vowel Sign UU 
+            0x0f81,          // Tibetan Vowel Sign Reversed II 
+            0
+        };
+        int i;
+    
+        try{
+            myCollator = Collator.getInstance(Locale.ENGLISH);
+        } catch(Exception e) {
+            errln("ERROR: Failed to create the collator for ENGLISH");
+            return;
+        }
+        myCollator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        for (i=0; ; i++) {
+            // Get the next funny character to be tested, and set up the
+            // three test strings X, Y, Z, consisting of an A-grave + test char,
+            // in original form, NFD, and then NFC form.
+            char c = NFD_UnsafeStartChars[i];
+            if (c==0) {break;}
+            
+            String x = "\u00C0" + c;       // \u00C0 is A Grave
+            String y;
+            String z;
+    
+            try{
+                y = Normalizer.decompose(x, false);
+                z = Normalizer.decompose(y, true);
+            } catch (Exception e) {
+                errln("ERROR: Failed to normalize test of character" + c);
+                return;
+            }
+       
+            // Collation test.  All three strings should be equal.
+            // doTest does both strcoll and sort keys, with params in both orders.
+            doTest(myCollator, x, y, 0);
+            doTest(myCollator, x, z, 0);
+            doTest(myCollator, y, z, 0); 
+    
+            // Run collation element iterators over the three strings.  Results should be same for each.
+             
+            {
+                CollationElementIterator ceiX, ceiY, ceiZ;
+                int ceX, ceY, ceZ;
+                int j;
+                try {
+                    ceiX = ((RuleBasedCollator)myCollator).getCollationElementIterator(x);
+                    ceiY = ((RuleBasedCollator)myCollator).getCollationElementIterator(y);
+                    ceiZ = ((RuleBasedCollator)myCollator).getCollationElementIterator(z);
+                } catch(Exception e) {
+                    errln("ERROR: getCollationElementIterator failed");
+                    return;
+                }
+    
+                for (j=0;; j++) {
+                    try{
+                        ceX = ceiX.next();
+                        ceY = ceiY.next();
+                        ceZ = ceiZ.next();
+                    } catch (Exception e) {
+                        errln("ERROR: CollationElementIterator.next failed for iteration " + j);
+                        break;
+                    }
+                  
+                    if (ceX != ceY || ceY != ceZ) {
+                        errln("ERROR: ucol_next failed for iteration " + j);
+                        break;
+                    }
+                    if (ceX == CollationElementIterator.NULLORDER) {
+                        break;
+                    }
+                }
+            }
+        }
+    }
+    
+    // main test method called with different strengths,
+    // tests comparison of custum collation with different strengths
+    
+    private void doTest(Collator collation, char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        doTestVariant(collation, s, t, result);
+        if(result == -1) {
+            doTestVariant(collation, t, s, 1);
+        } else if(result == 1) {
+            doTestVariant(collation, t, s, -1);
+        } else {
+            doTestVariant(collation, t, s, 0);
+        }
+    }
+    
+    // main test method called with different strengths,
+    // tests comparison of custum collation with different strengths
+    
+    private void doTest(Collator collation,String s, String t, int result) {
+        doTestVariant(collation, s, t, result);
+        if(result == -1) {
+            doTestVariant(collation, t, s, 1);
+        } else if(result == 1) {
+            doTestVariant(collation, t, s, -1);
+        } else {
+            doTestVariant(collation, t, s, 0);
+        }
+    }
+    
+    private void doTestVariant(Collator collation, String source, String target, int result) {
+        int compareResult = collation.compare(source, target);
+        CollationKey srckey , tgtkey;
+        srckey = collation.getCollationKey(source);
+        tgtkey = collation.getCollationKey(target);
+        int keyResult = srckey.compareTo(tgtkey);
+        if (compareResult != result) {
+            errln("String comparison failed in variant test\n");
+        }
+        if (keyResult != result) {
+            errln("Collation key comparison failed in variant test\n");
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationEnglishTest.java b/src/com/ibm/icu/dev/test/collator/CollationEnglishTest.java
new file mode 100644
index 0000000..f18b54b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationEnglishTest.java
@@ -0,0 +1,431 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationEnglishTest
+ * Source File: $ICU4CRoot/source/test/intltest/encoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class CollationEnglishTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new CollationEnglishTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x002D /* '-' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0020 /* ' ' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x002D /* '-' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0048 /* 'H' */, 0x0065 /* 'e' */, 0x006C /* 'l' */, 0x006C /* 'l' */, 0x006F /* 'o' */},
+        {0x0041 /* 'A' */, 0x0042 /* 'B' */, 0x0043 /* 'C' */}, 
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x002D /* '-' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x002D /* '-' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0070 /* 'p' */, 0x00EA, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */},                                            
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x00E9},
+        {0x00C4, 0x0042 /* 'B' */, 0x0308, 0x0043 /* 'C' */, 0x0308},
+        {0x0061 /* 'a' */, 0x0308, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */, 0x0072 /* 'r' */},
+        {0x0072 /* 'r' */, 0x006F /* 'o' */, 0x006C /* 'l' */, 0x0065 /* 'e' */, 0x0073 /* 's' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0041 /* 'A' */},
+        {0x0041 /* 'A' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */},                                                                
+        {0x0074 /* 't' */, 0x0063 /* 'c' */, 0x006F /* 'o' */, 0x006D /* 'm' */, 0x0070 /* 'p' */, 0x0061 /* 'a' */, 0x0072 /* 'r' */, 0x0065 /* 'e' */, 0x0070 /* 'p' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0069 /* 'i' */, 0x006E /* 'n' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */}, 
+        {0x0061 /* 'a' */, 0x0023 /* '#' */, 0x0062 /* 'b' */},
+        {0x0061 /* 'a' */, 0x0023 /* '#' */, 0x0062 /* 'b' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0041 /* 'A' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00E6, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},                                            
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x0048 /* 'H' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0308, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0074 /* 't' */, 0x0068 /* 'h' */, 0x0069 /* 'i' */, 0x0302, 0x0073 /* 's' */},
+        {0x0070 /* 'p' */, 0x00EA, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},                                                         
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x00E6, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x00E6, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},               
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x00E9}                                            // 49
+    };
+    
+    private static char[][] testTargetCases = {
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x002D /* '-' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */},
+        {0x0068 /* 'h' */, 0x0065 /* 'e' */, 0x006C /* 'l' */, 0x006C /* 'l' */, 0x006F /* 'o' */},
+        {0x0041 /* 'A' */, 0x0042 /* 'B' */, 0x0043 /* 'C' */},
+        {0x0041 /* 'A' */, 0x0042 /* 'B' */, 0x0043 /* 'C' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */, 0x0073 /* 's' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */, 0x0073 /* 's' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},                             
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x00E9},
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */, 0x0072 /* 'r' */},
+        {0x00C4, 0x0042 /* 'B' */, 0x0308, 0x0043 /* 'C' */, 0x0308},
+        {0x0041 /* 'A' */, 0x0308, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */},
+        {0x0072 /* 'r' */, 0x006F /* 'o' */, 0x0302, 0x006C /* 'l' */, 0x0065 /* 'e' */},
+        {0x0041 /* 'A' */, 0x00E1, 0x0063 /* 'c' */, 0x0064 /* 'd' */},
+        {0x0041 /* 'A' */, 0x00E1, 0x0063 /* 'c' */, 0x0064 /* 'd' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},                                                             
+        {0x0054 /* 'T' */, 0x0043 /* 'C' */, 0x006F /* 'o' */, 0x006D /* 'm' */, 0x0070 /* 'p' */, 0x0061 /* 'a' */, 0x0072 /* 'r' */, 0x0065 /* 'e' */, 0x0050 /* 'P' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0069 /* 'i' */, 0x006E /* 'n' */},
+        {0x0061 /* 'a' */, 0x0042 /* 'B' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0023 /* '#' */, 0x0042 /* 'B' */},
+        {0x0061 /* 'a' */, 0x0026 /* '&' */, 0x0062 /* 'b' */},
+        {0x0061 /* 'a' */, 0x0023 /* '#' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00C4, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00C4, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00C4, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},                                             
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0023 /* '#' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x003D /* '=' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0064 /* 'd' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0043 /* 'C' */, 0x0048 /* 'H' */, 0x0063 /* 'c' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0074 /* 't' */, 0x0068 /* 'h' */, 0x00EE, 0x0073 /* 's' */},
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x00E9},
+        {0x0061 /* 'a' */, 0x0042 /* 'B' */, 0x0043 /* 'C' */},                                                          
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0064 /* 'd' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x00C6, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0042 /* 'B' */, 0x0064 /* 'd' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x00C6, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0042 /* 'B' */, 0x0064 /* 'd' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */},          
+        {0x0070 /* 'p' */, 0x00EA, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */}
+    };                                           // 49
+
+    private static int[] results = {
+    //-1:LESS; 0:EQUAL; 1:GREATER
+        -1, 
+        -1, /*Collator::GREATER,*/
+        -1,
+        1,
+        1,
+        0,
+        -1,
+        -1,
+        -1,
+        -1, /*Collator::GREATER,*/                                                          /* 10 */
+        1,
+        -1,
+        0,
+        -1,
+        1,
+        1,
+        1,
+        -1,
+        -1,
+        -1,                                                             /* 20 */
+        -1,
+        -1,
+        -1,
+        1,
+        1,
+        1,
+        /* Test Tertiary  > 26 */
+        -1,
+        -1,
+        1,
+        -1,                                                             /* 30 */
+        1,
+        0,
+        1,
+        -1,
+        -1,
+        -1,
+        /* test identical > 36 */
+        0,
+        0,
+        /* test primary > 38 */
+        0,
+        0,                                                            /* 40 */
+        -1,
+        0,
+        0,
+        /* test secondary > 43 */
+        -1,
+        -1,
+        0,
+        -1,
+        -1, 
+        -1                                                                  // 49
+    };
+
+    private static char [][] testBugs = {
+        {0x61},
+        {0x41},
+        {0x65},
+        {0x45},
+        {0x00e9},
+        {0x00e8},
+        {0x00ea},
+        {0x00eb},
+        {0x65, 0x61},
+        {0x78}
+    };
+
+    // 0x0300 is grave, 0x0301 is acute
+    // the order of elements in this array must be different than the order in CollationFrenchTest
+    private static char[][] testAcute = {
+        {0x65, 0x65},
+        {0x65, 0x65, 0x0301},
+        {0x65, 0x65, 0x0301, 0x0300},
+        {0x65, 0x65, 0x0300},
+        {0x65, 0x65, 0x0300, 0x0301},
+        {0x65, 0x0301, 0x65},
+        {0x65, 0x0301, 0x65, 0x0301},
+        {0x65, 0x0301, 0x65, 0x0301, 0x0300},
+        {0x65, 0x0301, 0x65, 0x0300},
+        {0x65, 0x0301, 0x65, 0x0300, 0x0301},
+        {0x65, 0x0301, 0x0300, 0x65},
+        {0x65, 0x0301, 0x0300, 0x65, 0x0301},
+        {0x65, 0x0301, 0x0300, 0x65, 0x0301, 0x0300},
+        {0x65, 0x0301, 0x0300, 0x65, 0x0300},
+        {0x65, 0x0301, 0x0300, 0x65, 0x0300, 0x0301},
+        {0x65, 0x0300, 0x65},
+        {0x65, 0x0300, 0x65, 0x0301},
+        {0x65, 0x0300, 0x65, 0x0301, 0x0300},
+        {0x65, 0x0300, 0x65, 0x0300},
+        {0x65, 0x0300, 0x65, 0x0300, 0x0301},
+        {0x65, 0x0300, 0x0301, 0x65},
+        {0x65, 0x0300, 0x0301, 0x65, 0x0301},
+        {0x65, 0x0300, 0x0301, 0x65, 0x0301, 0x0300},
+        {0x65, 0x0300, 0x0301, 0x65, 0x0300},
+        {0x65, 0x0300, 0x0301, 0x65, 0x0300, 0x0301}
+    };
+
+    private static char[][] testMore = {
+        {0x0061 /* 'a' */, 0x0065 /* 'e' */},
+        {0x0061 /* 'a' */, 0x0066 /* 'f' */},
+        { 0x00E6},
+        { 0x00C6},
+        {0x006F /* 'o' */, 0x0065 /* 'e' */},
+        { 0x0153},
+        { 0x0152},
+        {0x006F /* 'o' */, 0x0066 /* 'f' */},
+    };
+    
+    private Collator myCollation = null;
+    
+    public CollationEnglishTest() {
+        try {
+            myCollation = Collator.getInstance(Locale.ENGLISH);
+        } catch(Exception e) {
+            errln("ERROR: in creation of collator of ENGLISH locale");
+            return;
+        } 
+    }
+    
+    
+    //performs test with strength PRIMARY
+    public void TestPrimary() {
+        int i;
+        myCollation.setStrength(Collator.PRIMARY);
+        for (i = 38; i < 43 ; i++) {
+            doTest(testSourceCases[39], testTargetCases[39], results[39]);
+        }  
+    }
+    
+    //perform test with strength SECONDARY
+    public void TestSecondary() {
+        int i;
+        myCollation.setStrength(Collator.SECONDARY);
+        for (i = 43; i < 49 ; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+
+        //test acute and grave ordering (compare to french collation)
+        int j;
+        int expected;
+        for (i = 0; i < testAcute.length; i++) {
+            for (j = 0; j < testAcute.length; j++) {
+                logln("i = " + i + "; j = " + j);
+                if (i <  j)
+                    expected = -1;
+                else if (i == j)
+                    expected = 0;
+                else // (i >  j)
+                    expected = 1;
+                doTest(testAcute[i], testAcute[j], expected );
+            }
+        }
+    }
+    
+    //perform test with strength TERTIARY
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        //for (i = 0; i < 38 ; i++)  //attention: there is something wrong with 36, 37.
+        for (i = 0; i < 38 ; i++)
+        {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        } 
+
+        int j = 0;
+        for (i = 0; i < 10; i++)
+        {
+            for (j = i+1; j < 10; j++)
+            {
+                doTest(testBugs[i], testBugs[j], -1);
+            }
+        }
+
+        //test more interesting cases
+        int expected;
+        for (i = 0; i < testMore.length; i++)
+        {
+            for (j = 0; j < testMore.length; j++)
+            {
+                if (i <  j)
+                    expected = -1;
+                else if (i == j)
+                    expected = 0;
+                else // (i >  j)
+                    expected = 1;
+                doTest(testMore[i], testMore[j], expected );
+            }
+        }
+    }
+    
+   // main test routine, tests rules defined by the "en" locale
+    private void doTest(char[] source, char[] target, int result){
+        
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+        
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1)
+        {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()){
+            return;    
+        }else{
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1)   //LESS
+        {
+            target += "LESS";
+        }
+        else if (result == 0)   //EQUAL
+        {
+            target += "EQUAL";
+        }
+        else if (result == 1)   //GREATER
+        {
+            target += "GREATER";
+        }
+        else
+        {
+            String huh = "?";
+
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+ }
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationFinnishTest.java b/src/com/ibm/icu/dev/test/collator/CollationFinnishTest.java
new file mode 100644
index 0000000..3bfcedf
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationFinnishTest.java
@@ -0,0 +1,178 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationFinnishTest
+ * Source File: $ICU4CRoot/source/test/intltest/ficoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class CollationFinnishTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollationFinnishTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x77, 0x61, 0x74},
+        {0x76, 0x61, 0x74},
+        {0x61, 0x00FC, 0x62, 0x65, 0x63, 0x6b},
+        {0x4c, 0x00E5, 0x76, 0x69},
+        {0x77, 0x61, 0x74}
+    };
+
+    private static char[][] testTargetCases = {
+        {0x76, 0x61, 0x74},
+        {0x77, 0x61, 0x79},
+        {0x61, 0x78, 0x62, 0x65, 0x63, 0x6b},
+        {0x4c, 0x00E4, 0x77, 0x65},
+        {0x76, 0x61, 0x74}
+    };
+
+    private static int[] results = {
+        1,
+        -1,
+        1,
+        -1,
+        // test primary > 4
+        0,
+    };
+
+    private Collator myCollation = null;
+    
+    public CollationFinnishTest() {
+        try {
+            myCollation = Collator.getInstance(new Locale("fi", "FI"));
+        } catch (Exception e) {
+            errln("ERROR: in creation of collator of FINNISH locale");
+            return;
+        }
+    }
+    
+    // perform tests with strength PRIMARY
+    public void TestPrimary() {
+        int i = 0;
+        myCollation.setStrength(Collator.PRIMARY);
+        for(i = 4; i < 5; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);    
+        }         
+    }
+    
+    // perform test with strength TERTIARY
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        for(i = 0; i < 4; i++ ) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }    
+    }
+    
+    // main test routine, tests rules specific to the finish locale
+    private void doTest(char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }               
+        }
+    }
+    
+    private String appendCompareResult(int result, String target) {
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
+    
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationFrenchTest.java b/src/com/ibm/icu/dev/test/collator/CollationFrenchTest.java
new file mode 100644
index 0000000..fc9655c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationFrenchTest.java
@@ -0,0 +1,268 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationFrenchTest
+ * Source File: $ICU4CRoot/source/test/intltest/frcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class CollationFrenchTest extends TestFmwk{
+    public static void main(String[] args) throws Exception {
+        new CollationFrenchTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x0061/*'a'*/, 0x0062/*'b'*/, 0x0063/*'c'*/},
+        {0x0043/*'C'*/, 0x004f/*'O'*/, 0x0054/*'T'*/, 0x0045/*'E'*/},
+        {0x0063/*'c'*/, 0x006f/*'o'*/, 0x002d/*'-'*/, 0x006f/*'o'*/, 0x0070/*'p'*/},
+        {0x0070/*'p'*/, 0x00EA, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/},
+        {0x0070/*'p'*/, 0x00EA, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/, 0x0072/*'r'*/},
+        {0x0070/*'p'*/, 0x00E9, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/, 0x0072/*'r'*/},
+        {0x0070/*'p'*/, 0x00E9, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/, 0x0072/*'r'*/},
+        {0x0048/*'H'*/, 0x0065/*'e'*/, 0x006c/*'l'*/, 0x006c/*'l'*/, 0x006f/*'o'*/},
+        {0x01f1},
+        {0xfb00},
+        {0x01fa},
+        {0x0101}
+    };
+
+    private static char[][] testTargetCases = {
+        {0x0041/*'A'*/, 0x0042/*'B'*/, 0x0043/*'C'*/},
+        {0x0063/*'c'*/, 0x00f4, 0x0074/*'t'*/, 0x0065/*'e'*/},
+        {0x0043/*'C'*/, 0x004f/*'O'*/, 0x004f/*'O'*/, 0x0050/*'P'*/},
+        {0x0070/*'p'*/, 0x00E9, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x00E9},
+        {0x0070/*'p'*/,  0x00E9, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x00E9},
+        {0x0070/*'p'*/, 0x00EA, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/},
+        {0x0070/*'p'*/, 0x00EA, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/, 0x0072/*'r'*/},
+        {0x0068/*'h'*/, 0x0065/*'e'*/, 0x006c/*'l'*/, 0x006c/*'l'*/, 0x004f/*'O'*/},
+        {0x01ee},
+        {0x25ca},
+        {0x00e0},
+        {0x01df}
+    };
+
+    private static int[] results = {
+        -1,
+        -1,
+        -1, /*Collator::GREATER,*/
+        -1,
+        1,
+        1,
+        -1,
+        1,
+       -1, /*Collator::GREATER,*/
+        1,
+        -1,
+        -1
+    };
+
+    // 0x0300 is grave, 0x0301 is acute
+    // the order of elements in this array must be different than the order in CollationEnglishTest
+    private static char[][] testAcute = {
+    /*00*/    {0x0065/*'e'*/, 0x0065/*'e'*/},
+    /*01*/    {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/},
+    /*02*/    {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/},
+    /*03*/    {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/},
+    /*04*/    {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/},
+    /*05*/    {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0301}, 
+    /*06*/    {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0301},
+    /*07*/    {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/, 0x0301},
+    /*08*/    {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/, 0x0301},
+    /*09*/    {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0301},
+    /*0a*/    {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0300, 0x0301},
+    /*0b*/    {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0300, 0x0301},
+    /*0c*/    {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/, 0x0300, 0x0301},
+    /*0d*/    {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/, 0x0300, 0x0301},
+    /*0e*/    {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0300, 0x0301},
+    /*0f*/    {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0300},
+    /*10*/    {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0300},
+    /*11*/    {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/, 0x0300},
+    /*12*/    {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/, 0x0300},
+    /*13*/    {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0300},
+    /*14*/    {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0301, 0x0300},
+    /*15*/    {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0301, 0x0300},
+    /*16*/    {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/, 0x0301, 0x0300},
+    /*17*/    {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/, 0x0301, 0x0300},
+    /*18*/    {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0301, 0x0300}
+    };
+
+    private static char[][] testBugs = {
+        {0x0061/*'a'*/},
+        {0x0041/*'A'*/},
+        {0x0065/*'e'*/},
+        {0x0045/*'E'*/},
+        {0x00e9},
+        {0x00e8},
+        {0x00ea},
+        {0x00eb},
+        {0x0065/*'e'*/, 0x0061/*'a'*/},
+        {0x0078/*'x'*/}
+    };
+    
+    
+    private Collator myCollation = null;
+    
+    public CollationFrenchTest() {
+        try {
+            myCollation = Collator.getInstance(Locale.FRENCH);
+        } catch (Exception e) {
+            errln("ERROR: in creation of collator of FRENCH locale");
+            return;
+        }
+    }
+     
+     
+    // perform tests with strength TERTIARY
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        
+        for (i = 0; i < 12 ; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+    
+    // perform tests with strength SECONDARY
+    public void TestSecondary() {
+        //test acute and grave ordering
+        int i = 0;
+        int j;
+        int expected;
+
+        myCollation.setStrength(Collator.SECONDARY);
+        
+        for (i = 0; i < testAcute.length; i++) {
+            for (j = 0; j < testAcute.length; j++) {
+                if (i <  j) {
+                    expected = -1;
+                } else if (i == j) {
+                    expected = 0;
+                } else {
+                    expected = 1;
+                }
+                doTest(testAcute[i], testAcute[j], expected );
+            }
+        }
+    }
+
+    // perform extra tests
+    public void TestExtra() {
+        int i, j;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < 9 ; i++) {
+            for (j = i + 1; j < 10; j += 1) {
+                doTest(testBugs[i], testBugs[j], -1);
+            }
+        }
+    }
+     
+    // main test routine, test rules specific to the french locale
+    private void doTest(char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);  
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }               
+        }
+    }
+    
+    private String appendCompareResult(int result, String target) {
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+} 
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationGermanTest.java b/src/com/ibm/icu/dev/test/collator/CollationGermanTest.java
new file mode 100644
index 0000000..d122b29
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationGermanTest.java
@@ -0,0 +1,226 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationGermanTest
+ * Source File: $ICU4CRoot/source/test/intltest/decoll.cpp
+ **/
+ 
+ package com.ibm.icu.dev.test.collator;
+ 
+ import com.ibm.icu.dev.test.*;
+ import com.ibm.icu.text.*;
+ import java.util.Locale;
+ 
+ public class CollationGermanTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new CollationGermanTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x47, 0x72, 0x00F6, 0x00DF, 0x65},
+        {0x61, 0x62, 0x63},
+        {0x54, 0x00F6, 0x6e, 0x65},
+        {0x54, 0x00F6, 0x6e, 0x65},
+        {0x54, 0x00F6, 0x6e, 0x65},
+        {0x61, 0x0308, 0x62, 0x63},
+        {0x00E4, 0x62, 0x63},
+        {0x00E4, 0x62, 0x63},
+        {0x53, 0x74, 0x72, 0x61, 0x00DF, 0x65},
+        {0x65, 0x66, 0x67},
+        {0x00E4, 0x62, 0x63},
+        {0x53, 0x74, 0x72, 0x61, 0x00DF, 0x65}
+    };
+
+    private static char[][] testTargetCases = {
+        {0x47, 0x72, 0x6f, 0x73, 0x73, 0x69, 0x73, 0x74},
+        {0x61, 0x0308, 0x62, 0x63},
+        {0x54, 0x6f, 0x6e},
+        {0x54, 0x6f, 0x64},
+        {0x54, 0x6f, 0x66, 0x75},
+        {0x41, 0x0308, 0x62, 0x63},
+        {0x61, 0x0308, 0x62, 0x63},
+        {0x61, 0x65, 0x62, 0x63},
+        {0x53, 0x74, 0x72, 0x61, 0x73, 0x73, 0x65},
+        {0x65, 0x66, 0x67},
+        {0x61, 0x65, 0x62, 0x63},
+        {0x53, 0x74, 0x72, 0x61, 0x73, 0x73, 0x65}
+    };
+
+    private static int results[][] =
+    {
+        //  Primary  Tertiary
+        { -1,        -1 },
+        { 0,         -1 },
+        { 1,          1 },
+        { 1,          1 },
+        { 1,          1 },
+        { 0,         -1 },
+        { 0,          0 },
+        { -1,        -1 },
+        { 0,          1 },
+        { 0,          0 },
+        { -1,        -1 },
+        { 0,          1 }
+    };
+    
+    private Collator myCollation = null;
+    
+    public CollationGermanTest() {
+        myCollation = Collator.getInstance(Locale.GERMAN);
+        if(myCollation == null) {
+            errln("ERROR: in creation of collator of GERMAN locale");
+        }
+    }
+    
+    // perform test with strength TERTIARY
+    public void TestTertiary(){
+        if(myCollation == null ) {
+            errln("decoll: cannot start test, collator is null\n");
+            return;
+        }
+
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        myCollation.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        for (i = 0; i < 12 ; i++)
+        {
+            doTest(testSourceCases[i], testTargetCases[i], results[i][1]);
+        }
+    }
+    
+    // perform test with strength SECONDARY
+    //This method in icu4c has no implementation.
+    public void TestSecondary(){
+    }
+    
+     // perform test with strength PRIMARY
+    public void TestPrimary(){
+        if(myCollation == null ) {
+            errln("decoll: cannot start test, collator is null\n");
+            return;
+        }
+        int i;
+        myCollation.setStrength(Collator.PRIMARY);
+        myCollation.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        for (i = 0; i < 12 ; i++)
+        {
+            doTest(testSourceCases[i], testTargetCases[i], results[i][0]);
+        }
+    }
+    
+    
+    //main test routine, tests rules specific to germa locale
+    private void doTest(char[] source, char[] target, int result){
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+        
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1)
+        {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()){
+            return;    
+        }else{
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1)   //LESS
+        {
+            target += "LESS";
+        }
+        else if (result == 0)   //EQUAL
+        {
+            target += "EQUAL";
+        }
+        else if (result == 1)   //GREATER
+        {
+            target += "GREATER";
+        }
+        else
+        {
+            String huh = "?";
+
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java b/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java
new file mode 100644
index 0000000..918f3a1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java
@@ -0,0 +1,617 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : collate/CollationIteratorTest
+ * Source File: $ICU4CRoot/source/test/intltest/itercoll.cpp
+ **/
+
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.lang.UCharacter;
+import java.util.Locale;
+import java.text.CharacterIterator;
+import java.util.Arrays;
+
+public class CollationIteratorTest extends TestFmwk {
+    
+    String test1 = "What subset of all possible test cases?";
+    String test2 = "has the highest probability of detecting";
+   
+    public static void main(String[] args) throws Exception {
+        new CollationIteratorTest().run(args);
+        // new CollationIteratorTest().TestNormalizedUnicodeChar();
+    }
+    
+    /*
+     * @bug 4157299
+     */
+    public void TestClearBuffers(/* char* par */) {
+        RuleBasedCollator c = null;
+        try {
+            c = new RuleBasedCollator("&a < b < c & ab = d");
+        } catch (Exception e) {
+            errln("Couldn't create a RuleBasedCollator.");
+            return;
+        }
+    
+        String source = "abcd";
+        CollationElementIterator i = c.getCollationElementIterator(source);
+        int e0 = 0;
+        try {
+            e0 = i.next();    // save the first collation element
+        } catch (Exception e) {
+            errln("call to i.next() failed.");
+            return;
+        }
+            
+        try {
+            i.setOffset(3);        // go to the expanding character
+        } catch (Exception e) {
+            errln("call to i.setOffset(3) failed.");
+            return;
+        }
+        
+        try {
+            i.next();                // but only use up half of it
+        } catch (Exception e) {
+            errln("call to i.next() failed.");
+            return;
+        }
+            
+        try {
+            i.setOffset(0);        // go back to the beginning
+        } catch (Exception e) {
+            errln("call to i.setOffset(0) failed. ");
+        }
+        
+        int e = 0;
+        try {
+            e = i.next();    // and get this one again
+        } catch (Exception ee) {
+            errln("call to i.next() failed. ");
+            return;
+        }
+        
+        if (e != e0) {
+            errln("got 0x" + Integer.toHexString(e) + ", expected 0x" + Integer.toHexString(e0));
+        }
+    }
+    
+    /** @bug 4108762
+     * Test for getMaxExpansion()
+     */
+    public void TestMaxExpansion(/* char* par */) {
+        String rule = "&a < ab < c/aba < d < z < ch";
+        RuleBasedCollator coll = null;
+        try {
+            coll = new RuleBasedCollator(rule);
+        } catch (Exception e) {
+            errln("Fail to create RuleBasedCollator");
+            return;
+        }
+        char ch = 0;
+        String str = String.valueOf(ch);
+    
+        CollationElementIterator iter   = coll.getCollationElementIterator(str);
+    
+        while (ch < 0xFFFF) {
+            int count = 1;
+            ch ++;
+            str = String.valueOf(ch);
+            iter.setText(str);
+            int order = iter.previous();
+    
+            // thai management 
+            if (order == 0) {
+                order = iter.previous();
+            }
+    
+            while (iter.previous() != CollationElementIterator.NULLORDER) {
+                count ++; 
+            }
+    
+            if (iter.getMaxExpansion(order) < count) {
+                errln("Failure at codepoint " + ch + ", maximum expansion count < " + count);
+            }
+        }
+    }
+    
+    /**
+     * Test for getOffset() and setOffset()
+     */
+    public void TestOffset(/* char* par */) {
+        RuleBasedCollator en_us;
+        try {
+            en_us = (RuleBasedCollator)Collator.getInstance(Locale.US);    
+        } catch (Exception e) {
+            errln("ERROR: in creation of collator of ENGLISH locale");
+            return;
+        }
+
+        CollationElementIterator iter = en_us.getCollationElementIterator(test1);
+    
+        // Run all the way through the iterator, then get the offset
+        int[] orders = getOrders(iter);
+        logln("orders.length = " + orders.length);
+        
+        int offset = iter.getOffset();
+    
+        if (offset != test1.length()) {
+            String msg1 = "offset at end != length: ";
+            String msg2 = " vs ";
+            errln(msg1 + offset + msg2 + test1.length());
+        }
+    
+        // Now set the offset back to the beginning and see if it works
+        CollationElementIterator pristine = en_us.getCollationElementIterator(test1);
+        
+        try {
+            iter.setOffset(0);
+        } catch(Exception e) {
+            errln("setOffset failed.");
+        }
+        assertEqual(iter, pristine);
+    
+        // setting offset in the middle of a contraction
+        String contraction = "change";
+        RuleBasedCollator tailored = null;
+        try {
+            tailored = new RuleBasedCollator("& a < ch");
+        } catch (Exception e) {
+            errln("Error: in creation of Spanish collator");
+        }
+        iter = tailored.getCollationElementIterator(contraction);
+        int order[] = getOrders(iter);
+        iter.setOffset(1); // sets offset in the middle of ch
+        int order2[] = getOrders(iter);
+        if (!Arrays.equals(order, order2)) {
+            errln("Error: setting offset in the middle of a contraction should be the same as setting it to the start of the contraction");
+        }
+        contraction = "peache";
+        iter = tailored.getCollationElementIterator(contraction);
+        iter.setOffset(3);
+        order = getOrders(iter);
+        iter.setOffset(4); // sets offset in the middle of ch
+        order2 = getOrders(iter);
+        if (!Arrays.equals(order, order2)) {
+            errln("Error: setting offset in the middle of a contraction should be the same as setting it to the start of the contraction");
+        }
+        // setting offset in the middle of a surrogate pair
+        String surrogate = "\ud800\udc00str";
+        iter = tailored.getCollationElementIterator(surrogate);
+        order = getOrders(iter);
+        iter.setOffset(1); // sets offset in the middle of surrogate
+        order2 = getOrders(iter);
+        if (!Arrays.equals(order, order2)) {
+            errln("Error: setting offset in the middle of a surrogate pair should be the same as setting it to the start of the surrogate pair");
+        }
+        surrogate = "simple\ud800\udc00str";
+        iter = tailored.getCollationElementIterator(surrogate);
+        iter.setOffset(6);
+        order = getOrders(iter);
+        iter.setOffset(7); // sets offset in the middle of surrogate
+        order2 = getOrders(iter);
+        if (!Arrays.equals(order, order2)) {
+            errln("Error: setting offset in the middle of a surrogate pair should be the same as setting it to the start of the surrogate pair");
+        }
+        // TODO: try iterating halfway through a messy string.
+    }
+    
+    /**
+     * Return an integer array containing all of the collation orders
+     * returned by calls to next on the specified iterator
+     */
+    int[] getOrders(CollationElementIterator iter) {
+        int maxSize = 100;
+        int size = 0;
+        int[] orders = new int[maxSize];
+    
+        int order;
+        while ((order = iter.next()) != CollationElementIterator.NULLORDER) {
+            if (size == maxSize) {
+                maxSize *= 2;
+                int[] temp = new int[maxSize];
+                System.arraycopy(orders, 0, temp,  0, size);
+                orders = temp;
+            }
+            orders[size++] = order;
+        }
+    
+        if (maxSize > size) {
+            int[] temp = new int[size];
+            System.arraycopy(orders, 0, temp,  0, size);
+            orders = temp;
+        }
+        return orders;
+    }
+
+    void assertEqual(CollationElementIterator i1, CollationElementIterator i2) {
+        int c1, c2, count = 0;
+        do {
+            c1 = i1.next();
+            c2 = i2.next();
+            if (c1 != c2) {
+                errln("    " + count + ": strength(0x" + 
+                    Integer.toHexString(c1) + ") != strength(0x" + Integer.toHexString(c2) + ")");
+                break;
+            }
+            count += 1;
+        } while (c1 != CollationElementIterator.NULLORDER);
+        backAndForth(i1);
+        backAndForth(i2);
+    }
+    
+    /**
+     * Test for CollationElementIterator.previous()
+     *
+     * @bug 4108758 - Make sure it works with contracting characters
+     * 
+     */
+    public void TestPrevious(/* char* par */) {
+        RuleBasedCollator en_us = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        CollationElementIterator iter = en_us.getCollationElementIterator(test1);
+    
+        // A basic test to see if it's working at all
+        backAndForth(iter);
+    
+        // Test with a contracting character sequence
+        String source;
+        RuleBasedCollator c1 = null;
+        try {
+            c1 = new RuleBasedCollator("&a,A < b,B < c,C, d,D < z,Z < ch,cH,Ch,CH");
+        } catch (Exception e) {
+            errln("Couldn't create a RuleBasedCollator with a contracting sequence.");
+            return;
+        }
+    
+        source = "abchdcba";
+        iter = c1.getCollationElementIterator(source);
+        backAndForth(iter);
+    
+        // Test with an expanding character sequence
+        RuleBasedCollator c2 = null;
+        try {
+            c2 = new RuleBasedCollator("&a < b < c/abd < d");
+        } catch (Exception e ) {
+            errln("Couldn't create a RuleBasedCollator with an expanding sequence.");
+            return;
+        }
+    
+        source = "abcd";
+        iter = c2.getCollationElementIterator(source);
+        backAndForth(iter);
+    
+        // Now try both
+        RuleBasedCollator c3 = null;
+        try {
+            c3 = new RuleBasedCollator("&a < b < c/aba < d < z < ch");
+        } catch (Exception e) {
+            errln("Couldn't create a RuleBasedCollator with both an expanding and a contracting sequence.");
+            return;
+        }
+        
+        source = "abcdbchdc";
+        iter = c3.getCollationElementIterator(source);
+        backAndForth(iter);
+    
+        source= "\u0e41\u0e02\u0e41\u0e02\u0e27abc";
+        Collator c4 = null;
+        try {
+            c4 = Collator.getInstance(new Locale("th", "TH", ""));
+        } catch (Exception e) {
+            errln("Couldn't create a collator");
+            return;
+        }
+        
+        iter = ((RuleBasedCollator)c4).getCollationElementIterator(source);
+        backAndForth(iter);
+       
+        source= "\u0061\u30CF\u3099\u30FC";
+        Collator c5 = null;
+        try {
+            c5 = Collator.getInstance(new Locale("ja", "JP", ""));
+        } catch (Exception e) {
+            errln("Couldn't create Japanese collator\n");
+        }
+        iter = ((RuleBasedCollator)c5).getCollationElementIterator(source);
+        
+        backAndForth(iter);
+    }
+    
+    void backAndForth(CollationElementIterator iter) {
+        // Run through the iterator forwards and stick it into an array
+        iter.reset();
+        int[] orders = getOrders(iter);
+    
+        // Now go through it backwards and make sure we get the same values
+        int index = orders.length;
+        int o;
+    
+        // reset the iterator
+        iter.reset();
+    
+        while ((o = iter.previous()) != CollationElementIterator.NULLORDER) {
+            if (o != orders[--index]) {
+                if (o == 0) {
+                    index ++;
+                } else {
+                    while (index > 0 && orders[index] == 0) {
+                        index --;
+                    } 
+                    if (o != orders[index]) {
+                        errln("Mismatch at index " + index + ": 0x" 
+                            + Integer.toHexString(orders[index]) + " vs 0x" + Integer.toHexString(o));
+                        break;
+                    }
+                }
+            }
+        }
+    
+        while (index != 0 && orders[index - 1] == 0) {
+          index --;
+        }
+    
+        if (index != 0) {
+            String msg = "Didn't get back to beginning - index is ";
+            errln(msg + index);
+    
+            iter.reset();
+            err("next: ");
+            while ((o = iter.next()) != CollationElementIterator.NULLORDER) {
+                String hexString = "0x" + Integer.toHexString(o) + " ";
+                err(hexString);
+            }
+            errln("");
+            err("prev: ");
+            while ((o = iter.previous()) != CollationElementIterator.NULLORDER) {
+                String hexString = "0x" + Integer.toHexString(o) + " ";
+                 err(hexString);
+            }
+            errln("");
+        }
+    }
+    
+    /**
+     * Test for setText()
+     */
+    public void TestSetText(/* char* par */) {
+        RuleBasedCollator en_us = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        CollationElementIterator iter1 = en_us.getCollationElementIterator(test1);
+        CollationElementIterator iter2 = en_us.getCollationElementIterator(test2);
+    
+        // Run through the second iterator just to exercise it
+        int c = iter2.next();
+        int i = 0;
+    
+        while ( ++i < 10 && c != CollationElementIterator.NULLORDER) {
+            try {
+                c = iter2.next();
+            } catch (Exception e) {
+                errln("iter2.next() returned an error.");
+                break;
+            }
+        }
+    
+        // Now set it to point to the same string as the first iterator
+        try {
+            iter2.setText(test1);
+        } catch (Exception e) {
+            errln("call to iter2->setText(test1) failed.");
+            return;
+        }
+        assertEqual(iter1, iter2);
+        
+        iter1.reset();
+        //now use the overloaded setText(ChracterIterator&, UErrorCode) function to set the text
+        CharacterIterator chariter = new StringCharacterIterator(test1);
+        try {
+        iter2.setText(chariter);
+        } catch (Exception e ) {
+            errln("call to iter2->setText(chariter(test1)) failed.");
+            return;
+        }
+        assertEqual(iter1, iter2);
+    }
+
+    /**
+     * Test for CollationElementIterator previous and next for the whole set of
+     * unicode characters.
+     */
+    public void TestUnicodeChar() {
+        RuleBasedCollator en_us = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        CollationElementIterator iter;
+        char codepoint;
+        StringBuffer source = new StringBuffer();
+        for (codepoint = 0xe40; codepoint < 0xe42; codepoint ++) {
+            if (UCharacter.isDefined(codepoint)) {
+                source.append(codepoint);
+            }
+        }
+        iter = en_us.getCollationElementIterator(source.toString());
+        // A basic test to see if it's working at all 
+        backAndForth(iter);
+        for (codepoint = 1; codepoint < 0xFFFE;) {
+            source.delete(0, source.length());
+            while (codepoint % 0xFF != 0) {
+                if (UCharacter.isDefined(codepoint)) {
+                    source.append(codepoint);
+                }
+                codepoint ++;
+            }
+            
+            if (UCharacter.isDefined(codepoint)) {
+                source.append(codepoint);
+            }
+            
+            if (codepoint != 0xFFFF) {
+                codepoint ++;
+            }
+            iter = en_us.getCollationElementIterator(source.toString());
+            // A basic test to see if it's working at all 
+            backAndForth(iter);
+        }
+    }
+    
+    /**
+     * Test for CollationElementIterator previous and next for the whole set of
+     * unicode characters with normalization on.
+     */
+    public void TestNormalizedUnicodeChar()
+    {
+        // thai should have normalization on
+        RuleBasedCollator th_th = null;
+        try {
+            th_th = (RuleBasedCollator)Collator.getInstance(
+                                                       new Locale("th", "TH"));
+        } catch (Exception e) {
+            errln("Error creating Thai collator");
+        }
+        StringBuffer source = new StringBuffer();
+        for (char codepoint = 0xf71; codepoint < 0xf76; codepoint ++) {
+            if (UCharacter.isDefined(codepoint)) {
+                source.append(codepoint);
+            }
+        }
+        CollationElementIterator temp 
+                        = th_th.getCollationElementIterator(source.toString());
+        // A basic test to see if it's working at all 
+        backAndForth(temp);
+        for (char codepoint = 0x1; codepoint < 0xfffe;) {
+            source.delete(0, source.length());
+            while (codepoint % 0xFF != 0) {
+                if (UCharacter.isDefined(codepoint)) {
+                    source.append(codepoint);
+                }
+                codepoint ++;
+            }
+            
+            if (UCharacter.isDefined(codepoint)) {
+                source.append(codepoint);
+            }
+            
+            if (codepoint != 0xFFFF) {
+                codepoint ++;
+            }
+            CollationElementIterator iter 
+                        = th_th.getCollationElementIterator(source.toString());
+            // A basic test to see if it's working at all 
+            backAndForth(iter);
+        }
+    }
+    
+    /**
+    * Testing the discontiguous contractions
+    */
+    public void TestDiscontiguous() 
+    {
+        String rulestr ="&z < AB < X\u0300 < ABC < X\u0300\u0315";
+        String src[] = {"ADB", "ADBC", "A\u0315B", "A\u0315BC",
+                        // base character blocked
+                        "XD\u0300", "XD\u0300\u0315",
+                        // non blocking combining character
+                        "X\u0319\u0300", "X\u0319\u0300\u0315",
+                        // blocking combining character
+                        "X\u0314\u0300", "X\u0314\u0300\u0315",
+                        // contraction prefix
+                        "ABDC", "AB\u0315C","X\u0300D\u0315", 
+                        "X\u0300\u0319\u0315", "X\u0300\u031A\u0315",
+                        // ends not with a contraction character
+                        "X\u0319\u0300D", "X\u0319\u0300\u0315D", 
+                        "X\u0300D\u0315D", "X\u0300\u0319\u0315D", 
+                        "X\u0300\u031A\u0315D"
+        };
+        String tgt[] = {// non blocking combining character
+                        "A D B", "A D BC", "A \u0315 B", "A \u0315 BC",
+                        // base character blocked
+                        "X D \u0300", "X D \u0300\u0315",
+                        // non blocking combining character
+                        "X\u0300 \u0319", "X\u0300\u0315 \u0319",
+                        // blocking combining character
+                        "X \u0314 \u0300", "X \u0314 \u0300\u0315",
+                        // contraction prefix
+                        "AB DC", "AB \u0315 C","X\u0300 D \u0315", 
+                        "X\u0300\u0315 \u0319", "X\u0300 \u031A \u0315",
+                        // ends not with a contraction character
+                        "X\u0300 \u0319D", "X\u0300\u0315 \u0319D", 
+                        "X\u0300 D\u0315D", "X\u0300\u0315 \u0319D", 
+                        "X\u0300 \u031A\u0315D"
+        };
+        int count = 0;
+        try {
+            RuleBasedCollator coll = new RuleBasedCollator(rulestr);
+            CollationElementIterator iter 
+                                        = coll.getCollationElementIterator("");
+            CollationElementIterator resultiter 
+                                        = coll.getCollationElementIterator("");    
+            while (count < src.length) {
+                iter.setText(src[count]);
+                int s = 0;
+                while (s < tgt[count].length()) {
+                    int e = tgt[count].indexOf(' ', s);
+                    if (e < 0) {
+                        e = tgt[count].length();
+                    }
+                    String resultstr = tgt[count].substring(s, e);
+                    resultiter.setText(resultstr);
+                    int ce = resultiter.next();
+                    while (ce != CollationElementIterator.NULLORDER) {
+                        if (ce != iter.next()) {
+                            errln("Discontiguos contraction test mismatch at" 
+                                  + count);
+                            return;
+                        }
+                        ce = resultiter.next();
+                    }
+                    s = e + 1;
+                }
+                iter.reset();
+                backAndForth(iter);
+                count ++;
+            }
+        }
+        catch (Exception e) {
+            errln("Error running discontiguous tests " + e.toString());
+        }
+    }
+
+    /**
+    * Test the incremental normalization
+    */
+    public void TestNormalization()
+    {
+        String rules = "&a < \u0300\u0315 < A\u0300\u0315 < \u0316\u0315B < \u0316\u0300\u0315";
+        String testdata[] = {"\u1ED9", "o\u0323\u0302",
+                            "\u0300\u0315", "\u0315\u0300",
+                            "A\u0300\u0315B", "A\u0315\u0300B",
+                            "A\u0316\u0315B", "A\u0315\u0316B",
+                            "\u0316\u0300\u0315", "\u0315\u0300\u0316",
+                            "A\u0316\u0300\u0315B", "A\u0315\u0300\u0316B",
+                            "\u0316\u0315\u0300", "A\u0316\u0315\u0300B"};
+        RuleBasedCollator coll = null;
+        try {
+            coll = new RuleBasedCollator(rules);
+            coll.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        } catch (Exception e) {
+            errln("ERROR: in creation of collator using rules " + rules);
+            return;
+        }
+        
+        CollationElementIterator iter = coll.getCollationElementIterator("testing");
+        for (int count = 0; count < testdata.length; count ++) {
+            iter.setText(testdata[count]);
+            backAndForth(iter);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationKanaTest.java b/src/com/ibm/icu/dev/test/collator/CollationKanaTest.java
new file mode 100644
index 0000000..58fd1b6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationKanaTest.java
@@ -0,0 +1,264 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationKanaTest
+ * Source File: $ICU4CRoot/source/test/intltest/jacoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class CollationKanaTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new CollationKanaTest().run(args);
+    }
+
+    private static char[][] testSourceCases = {
+        {0xff9E},
+        {0x3042},
+        {0x30A2},
+        {0x3042, 0x3042},
+        {0x30A2, 0x30FC},
+        {0x30A2, 0x30FC, 0x30C8}                               /*  6 */
+    };
+
+    private static char[][] testTargetCases = {
+        {0xFF9F},
+        {0x30A2},
+        {0x3042, 0x3042},
+        {0x30A2, 0x30FC},
+        {0x30A2, 0x30FC, 0x30C8},
+        {0x3042, 0x3042, 0x3068}                              /*  6 */
+    };
+
+    private static int[] results = {
+        -1,
+        0,   //Collator::LESS, /* Katakanas and Hiraganas are equal on tertiary level(ICU 2.0)*/
+        -1,
+        1, // Collator::LESS, /* Prolonged sound mark sorts BEFORE equivalent vowel (ICU 2.0)*/
+        -1,
+        -1,    //Collator::GREATER /* Prolonged sound mark sorts BEFORE equivalent vowel (ICU 2.0)*//*  6 */
+    };
+
+    private static char[][] testBaseCases = {
+        {0x30AB},
+        {0x30AB, 0x30AD},
+        {0x30AD},
+        {0x30AD, 0x30AD}
+    };
+
+    private static char[][] testPlainDakutenHandakutenCases = {
+        {0x30CF, 0x30AB},
+        {0x30D0, 0x30AB},
+        {0x30CF, 0x30AD},
+        {0x30D0, 0x30AD}
+    };
+
+    private static char[][] testSmallLargeCases = {
+        {0x30C3, 0x30CF},
+        {0x30C4, 0x30CF},
+        {0x30C3, 0x30D0},
+        {0x30C4, 0x30D0}
+    };
+
+    private static char[][] testKatakanaHiraganaCases = {
+        {0x3042, 0x30C3},
+        {0x30A2, 0x30C3},
+        {0x3042, 0x30C4},
+        {0x30A2, 0x30C4}
+    };
+
+    private static char[][] testChooonKigooCases = {
+        /*0*/ {0x30AB, 0x30FC, 0x3042},
+        /*1*/ {0x30AB, 0x30FC, 0x30A2},
+        /*2*/ {0x30AB, 0x30A4, 0x3042},
+        /*3*/ {0x30AB, 0x30A4, 0x30A2},
+        /*6*/ {0x30AD, 0x30FC, 0x3042}, /* Prolonged sound mark sorts BEFORE equivalent vowel (ICU 2.0)*/
+        /*7*/ {0x30AD, 0x30FC, 0x30A2}, /* Prolonged sound mark sorts BEFORE equivalent vowel (ICU 2.0)*/
+        /*4*/ {0x30AD, 0x30A4, 0x3042},
+        /*5*/ {0x30AD, 0x30A4, 0x30A2}
+    };
+        
+    private Collator myCollation = null;
+    
+    public CollationKanaTest() {
+        try {
+            myCollation = Collator.getInstance(Locale.JAPANESE);    
+        } catch (Exception e) {
+            errln("ERROR: in creation of collator of JAPANESE locale");
+            return;   
+        }
+    }
+    
+    // performs test with strength TERIARY
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        
+        for (i = 0; i < 6; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+
+    /* Testing base letters */
+    public void TestBase() {
+        int i;
+        myCollation.setStrength(Collator.PRIMARY);
+        for (i = 0; i < 3 ; i++) {
+            doTest(testBaseCases[i], testBaseCases[i + 1], -1);
+        }
+    }
+
+    /* Testing plain, Daku-ten, Handaku-ten letters */
+    public void TestPlainDakutenHandakuten() {
+        int i;
+        myCollation.setStrength(Collator.SECONDARY);
+        for (i = 0; i < 3 ; i++) {
+            doTest(testPlainDakutenHandakutenCases[i], testPlainDakutenHandakutenCases[i + 1], -1);
+        }
+    }
+
+    /* 
+    * Test Small, Large letters
+    */
+    public void TestSmallLarge() {
+        int i;
+        myCollation.setStrength(Collator.TERTIARY);
+
+        for (i = 0; i < 3 ; i++) {
+            doTest(testSmallLargeCases[i], testSmallLargeCases[i + 1], -1);
+        }
+    }
+
+    /*
+    * Test Katakana, Hiragana letters
+    */
+    public void TestKatakanaHiragana() {
+        int i;
+        myCollation.setStrength(Collator.QUATERNARY);
+        for (i = 0; i < 3 ; i++) {
+            doTest(testKatakanaHiraganaCases[i], testKatakanaHiraganaCases[i + 1], -1);
+        }
+    }
+
+    /*
+    * Test Choo-on kigoo
+    */
+    public void TestChooonKigoo() {
+        int i;
+        myCollation.setStrength(Collator.QUATERNARY);
+        for (i = 0; i < 7 ; i++) {
+            doTest(testChooonKigooCases[i], testChooonKigooCases[i + 1], -1);
+        }
+    }
+
+    // main test routine, tests rules specific to "Kana" locale
+    private void doTest(char[] source, char[] target, int result){
+        
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+        
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()){
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationMiscTest.java b/src/com/ibm/icu/dev/test/collator/CollationMiscTest.java
new file mode 100644
index 0000000..f44240f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationMiscTest.java
@@ -0,0 +1,1581 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ ***x**************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : cintltest
+ * Source File: $ICU4CRoot/source/test/cintltest/cmsccoll.c
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.Utility;
+import java.util.Locale;
+
+public class CollationMiscTest extends TestFmwk{
+
+    public static void main(String[] args) throws Exception {
+        new CollationMiscTest().run(args);
+        // new CollationMiscTest().TestRuleOptions();
+    }
+    
+    public void TestRuleOptions() {
+       // values here are hardcoded and are correct for the current UCA when 
+       // the UCA changes, one might be forced to change these values. 
+       // (\\u02d0, \\U00010FFFC etc...) 
+        String[] rules = {
+            // cannot test this anymore, as [last primary ignorable] doesn't 
+            // have a  code point associated to it anymore  
+            // "&[before 3][last primary ignorable]<<<k",
+            // - all befores here amount to zero       
+            "&[before 1][first tertiary ignorable]<<<a",
+            "&[before 1][last tertiary ignorable]<<<a",  
+            "&[before 1][first secondary ignorable]<<<a",
+            "&[before 1][last secondary ignorable]<<<a", 
+            // 'normal' befores  
+            "&[before 1][first primary ignorable]<<<c<<<b &[first primary ignorable]<a",
+            // we don't have a code point that corresponds to the last primary 
+            // ignorable 
+            "&[before 2][last primary ignorable]<<<c<<<b &[last primary ignorable]<a",
+            "&[before 1][first variable]<<<c<<<b &[first variable]<a",
+            "&[last variable]<a &[before 1][last variable]<<<c<<<b ",
+            "&[first regular]<a &[before 1][first regular]<b", 
+            "&[before 1][last regular]<b &[last regular]<a",
+            "&[before 1][first implicit]<b &[first implicit]<a",
+            "&[before 1][last implicit]<b &[last implicit]<a", 
+            "&[last variable]<z&[last primary ignorable]<x&[last secondary ignorable]<<y&[last tertiary ignorable]<<<w&[top]<u",
+          };
+        String[][] data = {
+                // {"k", "\u20e3"},
+                {"\\u0000", "a"}, // you cannot go before first tertiary ignorable 
+                {"\\u0000", "a"}, // you cannot go before last tertiary ignorable 
+                {"\\u0000", "a"}, // you cannot go before first secondary ignorable
+                {"\\u0000", "a"}, // you cannot go before first secondary ignorable
+                {"c", "b", "\\u0332", "a"},
+                {"\\u0332", "\\u20e3", "c", "b", "a"},
+                {"c", "b", "\\u0009", "a", "\\u000a"},
+                {"c", "b", "\\uD800\\uDF23", "a", "\\u02d0"},
+                {"b", "\\u02d0", "a", "\\u02d1"},
+                {"b", "\\ud801\\udc25", "a", "\\u4e00"},
+                {"b", "\\u4e00", "a", "\\u4e01"},
+                {"b", "\\U0010FFFC", "a"},
+                {"\ufffb",  "w", "y", "\u20e3", "x", "\u137c", "z", "u"},
+        };
+        
+        for (int i = 0; i< rules.length; i++) {
+            genericRulesStarter(rules[i], data[i]);
+        }
+    }
+    
+    void genericRulesStarter(String rules, String[] s) {
+        genericRulesTestWithResult(rules, s, -1);
+    }
+    
+    void genericRulesTestWithResult(String rules, String[] s, int result) {
+        
+        RuleBasedCollator coll = null;
+        try {
+            coll = new RuleBasedCollator(rules);
+            // logln("Rules starter for " + rules);
+            genericOrderingTestWithResult(coll, s, result);
+        } catch (Exception e) {
+            errln("Unable to open collator with rules " + rules);
+        }
+    }
+    
+    void genericOrderingTestWithResult(Collator coll, String[] s, int result) {
+        String t1 = "";
+        String t2 = "";
+        CollationElementIterator iter = null;
+        
+        int i = 0, j = 0;
+        // logln("testing sequence:");
+        for(i = 0; i < s.length; i++) {
+            // logln(s[i]);
+        }
+        try {
+        iter = ((RuleBasedCollator) coll).getCollationElementIterator(t1);
+        } catch (Exception e) {
+            errln("Creation of iterator failed");
+        }
+        for(i = 0; i < s.length - 1; i++) {
+            for(j = i+1; j < s.length; j++) {
+                t1 = Utility.unescape(s[i]);
+                t2 = Utility.unescape(s[j]);
+                // System.out.println(i + " " + j);
+                doTest(coll, t1, t2, result);
+                /* synwee : added collation element iterator test */
+                iter.setText(t1);
+                backAndForth(iter);
+                iter.setText(t2);
+                backAndForth(iter);
+            }
+        }
+    }
+
+    void doTest(Collator myCollation, String source, String target, int result) {
+        doTestVariant(myCollation, source, target, result);
+        if(result < 0) {
+            doTestVariant(myCollation, target, source, 1);
+        } else if(result > 0) {
+            doTestVariant(myCollation, target, source, -1);
+        } else {
+            doTestVariant(myCollation, target, source, 0);
+        }
+    }
+    
+    void doTestVariant(Collator myCollation, String source, String target, int result) {
+        int incResult = result;
+        int compareResult  = myCollation.compare(source, target);
+        CollationKey sortKey1 = myCollation.getCollationKey(source);
+        CollationKey sortKey2 = myCollation.getCollationKey(target);
+        
+        int temp= sortKey1.compareTo(sortKey2);
+        int keyResult;
+        if(temp < 0) {
+            keyResult=-1;
+        }
+        else if(temp > 0) {
+            keyResult= 1;
+        }
+        else {
+            keyResult = 0;
+        }
+        reportCResult( source, target, sortKey1, sortKey2, compareResult, keyResult, incResult, result );
+    }
+    
+    void reportCResult(String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                              int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+        if (ok1 && ok2 && ok3 /* synwee to undo && !isVerbose()*/) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                // logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                // logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+            sResult = appendCompareResult(incResult, sResult);
+            if (ok3) {
+                // logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    String appendCompareResult(int result, String target) {
+        if (result == -1) {  //LESS
+            target += "LESS";
+        } else if (result == 0) {  //EQUAL
+            target += "EQUAL";
+        } else if (result == 1) {  //GREATER
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+    
+    /**
+     * Return an integer array containing all of the collation orders
+     * returned by calls to next on the specified iterator
+     */
+    int[] getOrders(CollationElementIterator iter) {
+        int maxSize = 100;
+        int size = 0;
+        int[] orders = new int[maxSize];
+    
+        int order;
+        while ((order = iter.next()) != CollationElementIterator.NULLORDER) {
+            if (size == maxSize) {
+                maxSize *= 2;
+                int[] temp = new int[maxSize];
+                System.arraycopy(orders, 0, temp,  0, size);
+                orders = temp;
+            }
+            orders[size++] = order;
+        }
+    
+        if (maxSize > size)
+        {
+            int[] temp = new int[size];
+            System.arraycopy(orders, 0, temp,  0, size);
+            orders = temp;
+        }
+        return orders;
+    }
+    
+    void backAndForth(CollationElementIterator iter) {
+        // Run through the iterator forwards and stick it into an array
+        int[] orders = getOrders(iter);
+    
+        // Now go through it backwards and make sure we get the same values
+        int index = orders.length;
+        int o;
+    
+        // reset the iterator
+        iter.reset();
+    
+        while ((o = iter.previous()) != CollationElementIterator.NULLORDER) {
+            if (o != orders[--index]) {
+                if (o == 0) {
+                    index ++;
+                } else {
+                    while (index > 0 && orders[--index] == 0) {
+                    } if (o != orders[index]) {
+                        errln("Mismatch at index " + index + ": 0x" 
+                            + Integer.toHexString(orders[index]) + " vs 0x" + Integer.toHexString(o));
+                        break;
+                    }
+                }
+            }
+        }
+    
+        while (index != 0 && orders[index - 1] == 0) {
+          index --;
+        }
+    
+        if (index != 0) {
+            String msg = "Didn't get back to beginning - index is ";
+            errln(msg + index);
+    
+            iter.reset();
+            err("next: ");
+            while ((o = iter.next()) != CollationElementIterator.NULLORDER) {
+                String hexString = "0x" + Integer.toHexString(o) + " ";
+                err(hexString);
+            }
+            errln("");
+            err("prev: ");
+            while ((o = iter.previous()) != CollationElementIterator.NULLORDER) {
+                String hexString = "0x" + Integer.toHexString(o) + " ";
+                 err(hexString);
+            }
+            errln("");
+        }
+    }
+    
+    public void TestBeforePrefixFailure() {
+        String[] rules = {
+            "&g <<< a&[before 3]\uff41 <<< x",
+            "&\u30A7=\u30A7=\u3047=\uff6a&\u30A8=\u30A8=\u3048=\uff74&[before 3]\u30a7<<<\u30a9",
+            "&[before 3]\u30a7<<<\u30a9&\u30A7=\u30A7=\u3047=\uff6a&\u30A8=\u30A8=\u3048=\uff74",
+        };
+        String[][] data = {
+            {"x", "\uff41"},
+            {"\u30a9", "\u30a7"},
+            {"\u30a9", "\u30a7"},
+        };
+        
+        for(int i = 0; i< rules.length; i++) {
+            genericRulesStarter(rules[i], data[i]);
+        }
+    }
+    
+    public void TestContractionClosure() {
+        String[] rules = {
+            "&b=\u00e4\u00e4",
+            "&b=\u00C5",
+        };
+        String[][] data = {
+            { "b", "\u00e4\u00e4", "a\u0308a\u0308", "\u00e4a\u0308", "a\u0308\u00e4" },
+            { "b", "\u00C5", "A\u030A", "\u212B" },
+        };
+        
+        for(int i = 0; i< rules.length; i++) {
+            genericRulesTestWithResult(rules[i], data[i], 0);
+        }
+    }
+    
+    public void TestPrefixCompose() {
+        String rule1 = "&\u30a7<<<\u30ab|\u30fc=\u30ac|\u30fc";
+        
+        String string = rule1;
+        try {
+            RuleBasedCollator coll = new RuleBasedCollator(string);
+            logln("rule:" + coll.getRules());
+        } catch (Exception e) {
+            errln("Error open RuleBasedCollator rule = " + string);
+        }
+    }
+    
+    public void TestStrCollIdenticalPrefix() {
+        String rule = "&\ud9b0\udc70=\ud9b0\udc71";
+        String test[] = {
+            "ab\ud9b0\udc70",
+            "ab\ud9b0\udc71"
+        };
+        genericRulesTestWithResult(rule, test, 0);
+    }
+    
+    public void TestPrefix() {
+        String[] rules = {
+            "&z <<< z|a", 
+            "[strength I]&a=\ud900\udc25&z<<<\ud900\udc25|a", 
+        };
+        String[][] data = {
+            {"zz", "za"},
+            {"aa", "az", "\ud900\udc25z", "\ud900\udc25a", "zz"},
+        };
+        
+        for(int i = 0; i<rules.length; i++) {
+            genericRulesStarter(rules[i], data[i]);
+        }
+    }
+    
+    public void TestNewJapanese() {
+        
+        String test1[] = {
+            "\u30b7\u30e3\u30fc\u30ec",
+            "\u30b7\u30e3\u30a4",
+            "\u30b7\u30e4\u30a3",
+            "\u30b7\u30e3\u30ec",
+            "\u3061\u3087\u3053",
+            "\u3061\u3088\u3053",
+            "\u30c1\u30e7\u30b3\u30ec\u30fc\u30c8",
+            "\u3066\u30fc\u305f",
+            "\u30c6\u30fc\u30bf", 
+            "\u30c6\u30a7\u30bf",
+            "\u3066\u3048\u305f",
+            "\u3067\u30fc\u305f", 
+            "\u30c7\u30fc\u30bf",
+            "\u30c7\u30a7\u30bf",
+            "\u3067\u3048\u305f",
+            "\u3066\u30fc\u305f\u30fc",
+            "\u30c6\u30fc\u30bf\u30a1",
+            "\u30c6\u30a7\u30bf\u30fc",
+            "\u3066\u3047\u305f\u3041",
+            "\u3066\u3048\u305f\u30fc",
+            "\u3067\u30fc\u305f\u30fc",
+            "\u30c7\u30fc\u30bf\u30a1",
+            "\u3067\u30a7\u305f\u30a1",
+            "\u30c7\u3047\u30bf\u3041",
+            "\u30c7\u30a8\u30bf\u30a2",
+            "\u3072\u3086",
+            "\u3073\u3085\u3042",
+            "\u3074\u3085\u3042",
+            "\u3073\u3085\u3042\u30fc",
+            "\u30d3\u30e5\u30a2\u30fc",
+            "\u3074\u3085\u3042\u30fc",
+            "\u30d4\u30e5\u30a2\u30fc",
+            "\u30d2\u30e5\u30a6",
+            "\u30d2\u30e6\u30a6",
+            "\u30d4\u30e5\u30a6\u30a2",
+            "\u3073\u3085\u30fc\u3042\u30fc", 
+            "\u30d3\u30e5\u30fc\u30a2\u30fc",
+            "\u30d3\u30e5\u30a6\u30a2\u30fc",
+            "\u3072\u3085\u3093",
+            "\u3074\u3085\u3093",
+            "\u3075\u30fc\u308a",
+            "\u30d5\u30fc\u30ea",
+            "\u3075\u3045\u308a",
+            "\u3075\u30a5\u308a",
+            "\u3075\u30a5\u30ea",
+            "\u30d5\u30a6\u30ea",
+            "\u3076\u30fc\u308a",
+            "\u30d6\u30fc\u30ea",
+            "\u3076\u3045\u308a",
+            "\u30d6\u30a5\u308a",
+            "\u3077\u3046\u308a",
+            "\u30d7\u30a6\u30ea",
+            "\u3075\u30fc\u308a\u30fc",
+            "\u30d5\u30a5\u30ea\u30fc",
+            "\u3075\u30a5\u308a\u30a3",
+            "\u30d5\u3045\u308a\u3043",
+            "\u30d5\u30a6\u30ea\u30fc",
+            "\u3075\u3046\u308a\u3043",
+            "\u30d6\u30a6\u30ea\u30a4",
+            "\u3077\u30fc\u308a\u30fc",
+            "\u3077\u30a5\u308a\u30a4",
+            "\u3077\u3046\u308a\u30fc",
+            "\u30d7\u30a6\u30ea\u30a4",
+            "\u30d5\u30fd",
+            "\u3075\u309e",
+            "\u3076\u309d",
+            "\u3076\u3075",
+            "\u3076\u30d5",
+            "\u30d6\u3075",
+            "\u30d6\u30d5",
+            "\u3076\u309e",
+            "\u3076\u3077",
+            "\u30d6\u3077",
+            "\u3077\u309d",
+            "\u30d7\u30fd",
+            "\u3077\u3075",
+        };
+        
+        String test2[] = {
+            "\u306f\u309d", // H\u309d 
+            "\u30cf\u30fd", // K\u30fd 
+            "\u306f\u306f", // HH 
+            "\u306f\u30cf", // HK 
+            "\u30cf\u30cf", // KK 
+            "\u306f\u309e", // H\u309e 
+            "\u30cf\u30fe", // K\u30fe 
+            "\u306f\u3070", // HH\u309b 
+            "\u30cf\u30d0", // KK\u309b 
+            "\u306f\u3071", // HH\u309c 
+            "\u30cf\u3071", // KH\u309c 
+            "\u30cf\u30d1", // KK\u309c 
+            "\u3070\u309d", // H\u309b\u309d 
+            "\u30d0\u30fd", // K\u309b\u30fd 
+            "\u3070\u306f", // H\u309bH 
+            "\u30d0\u30cf", // K\u309bK 
+            "\u3070\u309e", // H\u309b\u309e 
+            "\u30d0\u30fe", // K\u309b\u30fe 
+            "\u3070\u3070", // H\u309bH\u309b 
+            "\u30d0\u3070", // K\u309bH\u309b 
+            "\u30d0\u30d0", // K\u309bK\u309b 
+            "\u3070\u3071", // H\u309bH\u309c 
+            "\u30d0\u30d1", // K\u309bK\u309c 
+            "\u3071\u309d", // H\u309c\u309d 
+            "\u30d1\u30fd", // K\u309c\u30fd 
+            "\u3071\u306f", // H\u309cH 
+            "\u30d1\u30cf", // K\u309cK 
+            "\u3071\u3070", // H\u309cH\u309b 
+            "\u3071\u30d0", // H\u309cK\u309b 
+            "\u30d1\u30d0", // K\u309cK\u309b
+            "\u3071\u3071", // H\u309cH\u309c
+            "\u30d1\u30d1", // K\u309cK\u309c
+        };
+        
+        String[] att = { "AlternateHandling", };
+        Object[] valShifted = { new Boolean(true), };
+        
+        genericLocaleStarter(new Locale("ja", ""), test1);
+        genericLocaleStarter(new Locale("ja", ""), test2);
+        genericLocaleStarterWithOptions(new Locale("ja", ""), test1, att, valShifted);
+        genericLocaleStarterWithOptions(new Locale("ja", ""), test2, att, valShifted);
+    }
+    
+    void genericLocaleStarter(Locale locale, String s[]) {
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance(locale);
+            
+        } catch (Exception e) {
+            errln("Unable to open collator for locale " + locale);
+            return;
+        }
+        // logln("Locale starter for " + locale);
+        genericOrderingTest(coll, s);
+    }
+    
+    void genericLocaleStarterWithOptions(Locale locale, String[] s, String[] attrs, Object[] values) {
+        RuleBasedCollator coll = null;
+        try {
+            coll = (RuleBasedCollator)Collator.getInstance(locale);
+        } catch (Exception e) {
+            errln("Unable to open collator for locale " + locale);
+        }
+        // logln("Locale starter for " +locale);
+        
+        // logln("Setting attributes");
+        
+        for(int i = 0; i < attrs.length; i++) {
+            if (attrs.equals("strength")) {
+                coll.setStrength(((Integer)values[i]).intValue());
+            } else if (attrs.equals("decomp")) {
+                coll.setDecomposition(((Integer)values[i]).intValue());
+            } else if (attrs.equals("AlternateHandling")) {
+                coll.setAlternateHandlingShifted(((Boolean)values[i]
+                                                            ).booleanValue());
+            }
+        }
+        
+        genericOrderingTest(coll, s);
+    }
+    
+    void genericOrderingTest(Collator coll, String[] s) {
+        genericOrderingTestWithResult(coll, s, -1);
+    }
+    
+    public void TestNonChars() {
+        String test[] = {
+            "\u0000",
+            "\uFFFE", "\uFFFF",
+            "\\U0001FFFE", "\\U0001FFFF",
+            "\\U0002FFFE", "\\U0002FFFF",
+            "\\U0003FFFE", "\\U0003FFFF",
+            "\\U0004FFFE", "\\U0004FFFF",
+            "\\U0005FFFE", "\\U0005FFFF",
+            "\\U0006FFFE", "\\U0006FFFF",
+            "\\U0007FFFE", "\\U0007FFFF",
+            "\\U0008FFFE", "\\U0008FFFF",
+            "\\U0009FFFE", "\\U0009FFFF",
+            "\\U000AFFFE", "\\U000AFFFF",
+            "\\U000BFFFE", "\\U000BFFFF",
+            "\\U000CFFFE", "\\U000CFFFF",
+            "\\U000DFFFE", "\\U000DFFFF",
+            "\\U000EFFFE", "\\U000EFFFF",
+            "\\U000FFFFE", "\\U000FFFFF",
+            "\\U0010FFFE", "\\U0010FFFF"
+        };
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance(new Locale("en", "US"));
+        } catch (Exception e) {
+            errln("Unable to open collator");
+        }
+        // logln("Test non characters");
+        
+        genericOrderingTestWithResult(coll, test, 0);
+    }
+    
+    public void TestExtremeCompression() {
+        String[] test = new String[4];
+        
+        for(int i = 0; i<4; i++) {
+            StringBuffer temp = new StringBuffer();
+            for (int j = 0; j < 2047; j++) {
+                temp.append('a');
+            }
+            temp.append((char)('a' + i));
+            test[i] = temp.toString();
+        }
+        
+        genericLocaleStarter(new Locale("en", "US"), test);
+    }
+
+    /**
+    * Tests surrogate support.
+    */
+    public void TestSurrogates() {
+        String test[] = {"z","\ud900\udc25", "\ud805\udc50", "\ud800\udc00y",  
+                         "\ud800\udc00r", "\ud800\udc00f", "\ud800\udc00", 
+                         "\ud800\udc00c", "\ud800\udc00b", "\ud800\udc00fa", 
+                         "\ud800\udc00fb", "\ud800\udc00a", "c", "b"};
+
+        String rule = "&z < \ud900\udc25 < \ud805\udc50 < \ud800\udc00y "
+                      + "< \ud800\udc00r < \ud800\udc00f << \ud800\udc00 "
+                      + "< \ud800\udc00fa << \ud800\udc00fb < \ud800\udc00a " 
+                      + "< c < b";
+        genericRulesStarter(rule, test);
+    }
+    
+    public void TestBocsuCoverage() {
+        String test = "\u0041\u0441\u4441\\U00044441\u4441\u0441\u0041";
+        Collator coll = Collator.getInstance();
+        coll.setStrength(Collator.IDENTICAL);
+        CollationKey key = coll.getCollationKey(test);
+        logln("source:" + key.getSourceString());
+    }
+    
+    public void TestCyrillicTailoring() {
+        String test[] = {
+            "\u0410b",
+            "\u0410\u0306a",
+            "\u04d0A"
+        };
+        genericLocaleStarter(new Locale("ru", ""), test);
+        genericRulesStarter("&\u0410 = \u0410", test);
+        genericRulesStarter("&Z < \u0410", test);
+        genericRulesStarter("&\u0410 = \u0410 < \u04d0", test);
+        genericRulesStarter("&Z < \u0410 < \u04d0", test);
+        genericRulesStarter("&\u0410 = \u0410 < \u0410\u0301", test);
+        genericRulesStarter("&Z < \u0410 < \u0410\u0301", test);
+    }
+    
+    public void TestCase() {
+        String gRules = "\u0026\u0030\u003C\u0031\u002C\u2460\u003C\u0061\u002C\u0041";
+        String[] testCase = {
+            "1a", "1A", "\u2460a", "\u2460A"
+        };
+        int[][] caseTestResults = {
+                { -1, -1, -1, 0, -1, -1, 0, 0, -1 },
+                { 1, -1, -1, 0, -1, -1, 0, 0, 1 },
+                { -1, -1, -1, 0, 1, -1, 0, 0, -1 },
+                { 1, -1, 1, 0, -1, -1, 0, 0, 1 }
+    
+        };
+        boolean[][] caseTestAttributes = {
+            { false, false},
+            { true, false},
+            { false, true},
+            { true, true}
+        };
+        
+        int i,j,k;
+        Collator  myCollation;
+        try {
+            myCollation = Collator.getInstance(new Locale("en", "US"));
+        } catch (Exception e) {
+            errln("ERROR: in creation of rule based collator ");
+            return;
+        }
+        // logln("Testing different case settings");
+        myCollation.setStrength(Collator.TERTIARY);
+    
+        for(k = 0; k<4; k++) {
+            if (caseTestAttributes[k][0] == true) {
+                // upper case first
+                ((RuleBasedCollator)myCollation).setUpperCaseFirst(true);
+            }
+            else {
+                // upper case first
+                ((RuleBasedCollator)myCollation).setLowerCaseFirst(true);   
+            }
+          ((RuleBasedCollator)myCollation).setCaseLevel(caseTestAttributes[k][1]);
+          
+          // logln("Case first = " + caseTestAttributes[k][0] + ", Case level = " + caseTestAttributes[k][1]);
+          for (i = 0; i < 3 ; i++) {
+            for(j = i+1; j<4; j++) {
+              doTest(myCollation, testCase[i], testCase[j], caseTestResults[k][3*i+j-1]);
+            }
+          }
+        }
+        try {
+            myCollation = new RuleBasedCollator(gRules);
+        } catch (Exception e) {
+            errln("ERROR: in creation of rule based collator");
+            return;
+        }
+        // logln("Testing different case settings with custom rules");
+        myCollation.setStrength(Collator.TERTIARY);
+    
+        for(k = 0; k<4; k++) {
+        	if (caseTestAttributes[k][0] == true) {
+                ((RuleBasedCollator)myCollation).setUpperCaseFirst(true);
+        	}
+        	else {
+        		((RuleBasedCollator)myCollation).setUpperCaseFirst(false);
+        	}
+          ((RuleBasedCollator)myCollation).setCaseLevel(caseTestAttributes[k][1]);
+          for (i = 0; i < 3 ; i++) {
+            for(j = i+1; j<4; j++) {
+              doTest(myCollation, testCase[i], testCase[j], caseTestResults[k][3*i+j-1]);
+            }
+          }
+        }
+
+        {
+            String[] lowerFirst = {
+                "h",
+                "H",
+                "ch",
+                "Ch",
+                "CH",
+                "cha",
+                "chA",
+                "Cha",
+                "ChA",
+                "CHa",
+                "CHA",
+                "i",
+                "I"
+            };
+    
+            String[] upperFirst = {
+                "H",
+                "h",
+                "CH",
+                "Ch",
+                "ch",
+                "CHA",
+                "CHa",
+                "ChA",
+                "Cha",
+                "chA",
+                "cha",
+                "I",
+                "i"
+            };
+            // logln("mixed case test");
+            // logln("lower first, case level off");
+            /* syn wee genericRulesStarter("[casefirst lower]&H<ch<<<Ch<<<CH", lowerFirst); */
+            // logln("upper first, case level off");
+            /* syn wee genericRulesStarter("[casefirst upper]&H<ch<<<Ch<<<CH", upperFirst); */
+            // logln("lower first, case level on");
+            genericRulesStarter("[casefirst lower][caselevel on]&H<ch<<<Ch<<<CH", lowerFirst);
+            // logln("upper first, case level on");
+            genericRulesStarter("[casefirst upper][caselevel on]&H<ch<<<Ch<<<CH", upperFirst);
+        }
+    }
+
+    public void TestIncompleteCnt() {
+        String[] cnt1 = {
+            "AA",
+            "AC",
+            "AZ",
+            "AQ",
+            "AB",
+            "ABZ",
+            "ABQ",
+            "Z",
+            "ABC",
+            "Q",
+            "B"
+        };
+            
+        String[] cnt2 = {
+            "DA",
+            "DAD",
+            "DAZ",
+            "MAR",
+            "Z",
+            "DAVIS",
+            "MARK",
+            "DAV",
+            "DAVI"
+        };
+        RuleBasedCollator coll =  null;
+        String temp = " & Z < ABC < Q < B";
+        try {
+            coll = new RuleBasedCollator(temp);
+        } catch (Exception e) {
+            errln("fail to create RuleBasedCollator");
+            return;
+        }
+        
+        int size = cnt1.length;
+        for(int i = 0; i < size-1; i++) {
+            for(int j = i+1; j < size; j++) {
+                CollationElementIterator iter;
+                String t1 = cnt1[i];
+                String t2 = cnt1[j];
+                doTest(coll, t1, t2, -1);
+                // synwee : added collation element iterator test 
+                try {
+                    iter = coll.getCollationElementIterator(t2);
+                } catch (Exception e) {
+                    errln("Creation of iterator failed");
+                    break;
+                }
+                backAndForth(iter);
+            }
+        }
+        
+        temp = " & Z < DAVIS < MARK <DAV";
+        try {
+            coll = new RuleBasedCollator(temp);
+        } catch (Exception e) {
+            errln("fail to create RuleBasedCollator");
+            return;
+        }
+        
+        size = cnt2.length;
+        for(int i = 0; i < size-1; i++) {
+            for(int j = i+1; j < size; j++) {
+                CollationElementIterator iter;
+                String t1 = cnt2[i];
+                String t2 = cnt2[j];
+                doTest(coll, t1, t2, -1);
+                
+                // synwee : added collation element iterator test
+                try {
+                    iter = coll.getCollationElementIterator(t2);
+                } catch (Exception e) {
+                    errln("Creation of iterator failed");
+                    break;
+                }
+                backAndForth(iter);
+            }
+        }
+    }
+        
+    public void TestBlackBird() {
+        String[] shifted = {
+            "black bird",
+            "black-bird",
+            "blackbird",
+            "black Bird",
+            "black-Bird",
+            "blackBird",
+            "black birds",
+            "black-birds",
+            "blackbirds"
+        };
+        int[] shiftedTert = {
+            0,
+            0,
+            0,
+            -1,
+            0,
+            0,
+            -1,
+            0,
+            0
+        };
+        String[] nonignorable = {
+            "black bird",
+            "black Bird",
+            "black birds",
+            "black-bird",
+            "black-Bird",
+            "black-birds",
+            "blackbird",
+            "blackBird",
+            "blackbirds"
+        };
+        int i = 0, j = 0;
+        int size = 0;
+        Collator coll = Collator.getInstance(new Locale("en", "US"));
+        //ucol_setAttribute(coll, UCOL_NORMALIZATION_MODE, UCOL_OFF, &status);
+        //ucol_setAttribute(coll, UCOL_ALTERNATE_HANDLING, UCOL_NON_IGNORABLE, &status);
+        ((RuleBasedCollator)coll).setAlternateHandlingShifted(false);
+        size = nonignorable.length;
+        for(i = 0; i < size-1; i++) {
+            for(j = i+1; j < size; j++) {
+                String t1 = nonignorable[i];
+                String t2 = nonignorable[j];
+                doTest(coll, t1, t2, -1);
+            }
+        }
+        ((RuleBasedCollator)coll).setAlternateHandlingShifted(true);
+        coll.setStrength(Collator.QUATERNARY);
+        size = shifted.length;
+        for(i = 0; i < size-1; i++) {
+            for(j = i+1; j < size; j++) {
+                String t1 = shifted[i];
+                String t2 = shifted[j];
+                doTest(coll, t1, t2, -1);
+            }
+        }
+        coll.setStrength(Collator.TERTIARY);
+        size = shifted.length;
+        for(i = 1; i < size; i++) {
+            String t1 = shifted[i-1];
+            String t2 = shifted[i];
+            doTest(coll, t1, t2, shiftedTert[i]);
+        }
+    }
+    
+    public void TestFunkyA() {
+        String[] testSourceCases = {
+            "\u0041\u0300\u0301",
+            "\u0041\u0300\u0316",
+            "\u0041\u0300",
+            "\u00C0\u0301",
+            // this would work with forced normalization 
+            "\u00C0\u0316",
+        };
+        
+        String[] testTargetCases = {
+            "\u0041\u0301\u0300",
+            "\u0041\u0316\u0300",
+            "\u00C0",
+            "\u0041\u0301\u0300",
+            // this would work with forced normalization 
+            "\u0041\u0316\u0300",
+        };
+        
+        int[] results = {
+            1,
+            0,
+            0,
+            1,
+            0
+        };
+
+        Collator  myCollation;
+        try {
+            myCollation = Collator.getInstance(new Locale("en", "US"));
+        } catch (Exception e) {
+            errln("ERROR: in creation of rule based collator");
+            return;
+        }
+        // logln("Testing some A letters, for some reason");
+        myCollation.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        myCollation.setStrength(Collator.TERTIARY);
+        for (int i = 0; i < 4 ; i++)
+        {
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+    
+    public void TestChMove() {
+        String[] chTest = {
+            "c",
+            "C",
+            "ca", "cb", "cx", "cy", "CZ",
+            "c\u030C", "C\u030C",
+            "h",
+            "H",
+            "ha", "Ha", "harly", "hb", "HB", "hx", "HX", "hy", "HY",
+            "ch", "cH", "Ch", "CH",
+            "cha", "charly", "che", "chh", "chch", "chr",
+            "i", "I", "iarly",
+            "r", "R",
+            "r\u030C", "R\u030C",
+            "s",
+            "S",
+            "s\u030C", "S\u030C",
+            "z", "Z",
+            "z\u030C", "Z\u030C"
+        };
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance(new Locale("cs", ""));
+        } catch (Exception e) {
+            errln("Cannot create Collator");
+            return;
+        }
+        int size = chTest.length;
+        for(int i = 0; i < size-1; i++) {
+            for(int j = i+1; j < size; j++) {
+                String t1 = chTest[i];
+                String t2 = chTest[j];
+                doTest(coll, t1, t2, -1);
+            }
+        }
+    }
+    
+    public void TestImplicitTailoring() {
+        String[] impTest = {
+            "\u4e00",
+            "a",
+            "A",
+            "b",
+            "B",
+            "\u4e01"
+        };
+        String rule = "&\u4e00 < a <<< A < b <<< B";
+        RuleBasedCollator coll = null;
+        try {
+            coll = new RuleBasedCollator(rule);
+        } catch (Exception e) {
+            errln("Can't create collator");
+            return;
+        }
+        
+        int size = impTest.length;
+        for(int i = 0; i < size-1; i++) {
+            for(int j = i+1; j < size; j++) {
+                String t1 = impTest[i];
+                String t2 = impTest[j];
+                doTest(coll, t1, t2, -1);
+            }
+        }
+    }
+
+    public void TestFCDProblem() {
+        String s1 = "\u0430\u0306\u0325";
+        String s2 = "\u04D1\u0325";
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance();
+        } catch (Exception e) {
+            errln("Can't create collator");
+            return;
+        }
+        
+        coll.setDecomposition(Collator.NO_DECOMPOSITION);
+        doTest(coll, s1, s2, 0);
+        coll.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        doTest(coll, s1, s2, 0);
+    }
+    
+    public void TestEmptyRule() {
+        String rulez = "";
+        try {
+            RuleBasedCollator coll = new RuleBasedCollator(rulez);
+            logln("rule:" + coll.getRules());
+        } catch (Exception e) {
+        
+        }
+    }
+    
+    public void TestJ784() {
+        String[] data = {
+            "A", "\u0101", "\u00e1", "\u01ce", "\u00e0",
+            "E", "\u0113", "\u00e9", "\u011b", "\u00e8",
+            "I", "\u012b", "\u00ed", "\u01d0", "\u00ec",
+            "O", "\u014d", "\u00f3", "\u01d2", "\u00f2",
+            "U", "\u016b", "\u00fa", "\u01d4", "\u00f9",
+            "\u00fc", "\u01d6", "\u01d8", "\u01da", "\u01dc"
+        };
+        genericLocaleStarter(new Locale("zh", ""), data);
+    }
+
+    public void TestJ815() {
+        String data[] = {
+            "aa",
+            "Aa",
+            "ab",
+            "Ab",
+            "ad",
+            "Ad",
+            "ae",
+            "Ae",
+            "\u00e6",
+            "\u00c6",
+            "af",
+            "Af",
+            "b",
+            "B"
+        };
+        genericLocaleStarter(new Locale("fr", ""), data);
+        genericRulesStarter("[backwards 2]&A<<\u00e6/e<<<\u00c6/E", data);
+    }
+    
+    public void TestJ831() {
+        String[] data = {
+            "I",
+            "i",
+            "Y",
+            "y"
+        };
+        genericLocaleStarter(new Locale("lv", ""), data);
+    }
+    
+    public void TestBefore() {
+        String data[] = {
+            "\u0101", "\u00e1", "\u01ce", "\u00e0", "A",
+            "\u0113", "\u00e9", "\u011b", "\u00e8", "E",
+            "\u012b", "\u00ed", "\u01d0", "\u00ec", "I",
+            "\u014d", "\u00f3", "\u01d2", "\u00f2", "O",
+            "\u016b", "\u00fa", "\u01d4", "\u00f9", "U",
+            "\u01d6", "\u01d8", "\u01da", "\u01dc", "\u00fc"
+        };
+        genericRulesStarter(
+        "&[before 1]a<\u0101<\u00e1<\u01ce<\u00e0"
+        + "&[before 1]e<\u0113<\u00e9<\u011b<\u00e8"
+        + "&[before 1]i<\u012b<\u00ed<\u01d0<\u00ec"
+        + "&[before 1]o<\u014d<\u00f3<\u01d2<\u00f2"
+        + "&[before 1]u<\u016b<\u00fa<\u01d4<\u00f9"
+        + "&u<\u01d6<\u01d8<\u01da<\u01dc<\u00fc", data);
+    }
+
+    public void TestRedundantRules() {
+        String[] rules = {
+            "& a <<< b <<< c << d <<< e& [before 1] e <<< x",
+            "& a < b <<< c << d <<< e& [before 1] e <<< x",
+            "& a < b < c < d& [before 1] c < m",
+            "& a < b <<< c << d <<< e& [before 3] e <<< x",
+            "& a < b <<< c << d <<< e& [before 2] e <<< x",
+            "& a < b <<< c << d <<< e <<< f < g& [before 1] g < x",
+            "& a <<< b << c < d& a < m",
+            "&a<b<<b\u0301 &z<b",
+            "&z<m<<<q<<<m",
+            "&z<<<m<q<<<m",
+            "& a < b < c < d& r < c",
+            "& a < b < c < d& r < c",
+            "& a < b < c < d& c < m",
+            "& a < b < c < d& a < m"
+        };
+        
+        String[] expectedRules = {
+            "&\u2089<<<x",
+            "& a <<< x < b <<< c << d <<< e",
+            "& a < b < m < c < d",
+            "& a < b <<< c << d <<< x <<< e",
+            "& a < b <<< c <<< x << d <<< e",
+            "& a < b <<< c << d <<< e <<< f < x < g",
+            "& a <<< b << c < m < d",
+            "&a<b\u0301 &z<b",
+            "&z<q<<<m",
+            "&z<q<<<m",
+            "& a < b < d& r < c",
+            "& a < b < d& r < c",
+            "& a < b < c < m < d",
+            "& a < m < b < c < d"
+        };
+        
+        String[][] testdata = {
+            {"\u2089", "x"},
+            {"a", "x", "b", "c", "d", "e"},
+            {"a", "b", "m", "c", "d"},
+            {"a", "b", "c", "d", "x", "e"},
+            {"a", "b", "c", "x", "d", "e"},
+            {"a", "b", "c", "d", "e", "f", "x", "g"},
+            {"a", "b", "c", "m", "d"},
+            {"a", "b\u0301", "z", "b"},
+            {"z", "q", "m"},
+            {"z", "q", "m"},
+            {"a", "b", "d"},
+            {"r", "c"},
+            {"a", "b", "c", "m", "d"},
+            {"a", "m", "b", "c", "d"}
+        };
+        
+        String rlz = "";
+        for(int i = 0; i<rules.length; i++) {
+            logln("testing rule " + rules[i] + ", expected to be" + expectedRules[i]);
+            try {
+                rlz = rules[i];
+                Collator credundant = new RuleBasedCollator(rlz);
+                rlz = expectedRules[i];
+                Collator cresulting = new RuleBasedCollator(rlz);
+                logln(" credundant Rule:" + ((RuleBasedCollator)credundant).getRules());
+                logln(" cresulting Rule:" + ((RuleBasedCollator)cresulting).getRules());
+            } catch (Exception e) {
+                errln("Cannot create RuleBasedCollator");
+            }
+            //testAgainstUCA(cresulting, credundant, "expected", TRUE, &status);
+            // logln("testing using data\n");
+            genericRulesStarter(rules[i], testdata[i]);
+        }
+    }
+    
+    public void TestExpansionSyntax() {
+        String[] rules = {
+            "&AE <<< a << b <<< c &d <<< f",
+            "&AE <<< a <<< b << c << d < e < f <<< g",
+            "&AE <<< B <<< C / D <<< F"
+        };
+        
+        String[] expectedRules = {
+            "&A <<< a / E << b / E <<< c /E  &d <<< f",
+            "&A <<< a / E <<< b / E << c / E << d / E < e < f <<< g",
+            "&A <<< B / E <<< C / ED <<< F / E"
+        };
+        
+        String[][] testdata = {
+            {"AE", "a", "b", "c"},
+            {"AE", "a", "b", "c", "d", "e", "f", "g"},
+            {"AE", "B", "C"} // / ED <<< F / E"},
+        };
+        
+        for(int i = 0; i<rules.length; i++) {
+            // logln("testing rule " + rules[i] + ", expected to be " + expectedRules[i]);
+            try {
+                String rlz = rules[i];
+                Collator credundant = new RuleBasedCollator(rlz);
+                rlz = expectedRules[i];
+                Collator cresulting = new RuleBasedCollator(rlz);
+                logln(" credundant Rule:" + ((RuleBasedCollator)credundant).getRules());
+                logln(" cresulting Rule:" + ((RuleBasedCollator)cresulting).getRules());
+            } catch (Exception e) {
+                
+            }
+            // testAgainstUCA still doesn't handle expansions correctly, so this is not run 
+            // as a hard error test, but only in information mode 
+            //testAgainstUCA(cresulting, credundant, "expected", FALSE, &status);
+            
+            // logln("testing using data");
+            genericRulesStarter(rules[i], testdata[i]);
+        }
+    }
+
+    public void TestHangulTailoring() {
+        String[] koreanData = {
+            "\uac00", "\u4f3d", "\u4f73", "\u5047", "\u50f9", "\u52a0", "\u53ef", "\u5475",
+            "\u54e5", "\u5609", "\u5ac1", "\u5bb6", "\u6687", "\u67b6", "\u67b7", "\u67ef",
+            "\u6b4c", "\u73c2", "\u75c2", "\u7a3c", "\u82db", "\u8304", "\u8857", "\u8888",
+            "\u8a36", "\u8cc8", "\u8dcf", "\u8efb", "\u8fe6", "\u99d5",
+            "\u4EEE", "\u50A2", "\u5496", "\u54FF", "\u5777", "\u5B8A", "\u659D", "\u698E",
+            "\u6A9F", "\u73C8", "\u7B33", "\u801E", "\u8238", "\u846D", "\u8B0C"
+        };
+        
+        String rules =
+            "&\uac00 <<< \u4f3d <<< \u4f73 <<< \u5047 <<< \u50f9 <<< \u52a0 <<< \u53ef <<< \u5475 "
+            + "<<< \u54e5 <<< \u5609 <<< \u5ac1 <<< \u5bb6 <<< \u6687 <<< \u67b6 <<< \u67b7 <<< \u67ef "
+            + "<<< \u6b4c <<< \u73c2 <<< \u75c2 <<< \u7a3c <<< \u82db <<< \u8304 <<< \u8857 <<< \u8888 "
+            + "<<< \u8a36 <<< \u8cc8 <<< \u8dcf <<< \u8efb <<< \u8fe6 <<< \u99d5 "
+            + "<<< \u4EEE <<< \u50A2 <<< \u5496 <<< \u54FF <<< \u5777 <<< \u5B8A <<< \u659D <<< \u698E "
+            + "<<< \u6A9F <<< \u73C8 <<< \u7B33 <<< \u801E <<< \u8238 <<< \u846D <<< \u8B0C";
+        
+        String rlz = rules;
+        
+        Collator coll = null;
+        try {
+            coll = new RuleBasedCollator(rlz);
+        } catch (Exception e) {
+            errln("Unable to open collator with rules" + rules);
+            return;
+        }
+        // logln("Using start of korean rules\n");
+        genericOrderingTest(coll, koreanData);
+        // logln("Setting jamoSpecial to TRUE and testing once more\n");
+        
+        // can't set jamo in icu4j 
+        // ((UCATableHeader *)coll->image)->jamoSpecial = TRUE; // don't try this at home
+        // genericOrderingTest(coll, koreanData);
+        
+        // no such locale in icu4j
+        // logln("Using ko__LOTUS locale\n");
+        // genericLocaleStarter(new Locale("ko__LOTUS", ""), koreanData);
+    }
+
+    /* 
+     * rules returned by UCA is "" and will be rejected by the 
+     * RuleBasedCollator constructor
+     public void TestUCARules() {
+        Collator coll =  null;
+        try {
+            coll = Collator.getInstance();
+        } catch (Exception e) {
+            errln("Unable to create a collator");
+            return;
+        }
+        logln("TestUCARules\n");
+        String rules = ((RuleBasedCollator)coll).getRules();
+        try {
+            Collator UCAfromRules = new RuleBasedCollator(rules);
+            logln("rule:" + ((RuleBasedCollator)UCAfromRules));
+        } catch (Exception e) {
+            errln("Unable to create a collator from UCARules!\n");
+            return;
+        }
+    }
+    */
+    
+    public void TestIncrementalNormalize() {
+        Collator        coll = null;;
+        // logln("Test 1 ....");
+        {
+            /* Test 1.  Run very long unnormalized strings, to force overflow of*/
+            /*          most buffers along the way.*/
+            
+            try {
+                coll = Collator.getInstance(new Locale("en", "US"));
+            } catch (Exception e) {
+                errln("Cannot get default instance!");
+                return;
+            }
+            char baseA     =0x41;
+            char ccMix[]   = {0x316, 0x321, 0x300};
+            int          sLen;
+            int          i;
+            StringBuffer strA = new StringBuffer();
+            StringBuffer strB = new StringBuffer();
+            
+            coll.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+            
+            for (sLen = 1000; sLen<1001; sLen++) {
+                strA.delete(0, strA.length());
+                strA.append(baseA);
+                strB.delete(0, strB.length());
+                strB.append(baseA);
+                for (i=1; i< sLen; i++) {
+                    strA.append(ccMix[i % 3]);
+                    strB.insert(1, ccMix[i % 3]);
+                }
+                coll.setStrength(Collator.TERTIARY);   // Do test with default strength, which runs
+                doTest(coll, strA.toString(), strB.toString(), 0);    //   optimized functions in the impl
+                coll.setStrength(Collator.IDENTICAL);   // Do again with the slow, general impl.
+                doTest(coll, strA.toString(), strB.toString(), 0);
+            }
+        }
+        /*  Test 2:  Non-normal sequence in a string that extends to the last character*/
+        /*         of the string.  Checks a couple of edge cases.*/
+        // logln("Test 2 ....");    
+        {
+            String strA = "AA\u0300\u0316";
+            String strB = "A\u00c0\u0316";
+            coll.setStrength(Collator.TERTIARY);
+            doTest(coll, strA, strB, 0);
+        }
+        /*  Test 3:  Non-normal sequence is terminated by a surrogate pair.*/
+        // logln("Test 3 ....");
+        {
+            String strA = "AA\u0300\u0316\uD800\uDC01";
+            String strB = "A\u00c0\u0316\uD800\uDC00";
+            coll.setStrength(Collator.TERTIARY);
+            doTest(coll, strA, strB, 1);
+        }
+        /*  Test 4:  Imbedded nulls do not terminate a string when length is specified.*/
+        // logln("Test 4 ....");
+        /*
+         * not a valid test since string are null-terminated in java{
+            char strA[] = {0x41, 0x00, 0x42};
+            char strB[] = {0x41, 0x00, 0x00};
+            
+            int result = coll.compare(new String(strA), new String(strB));
+            if (result != 1) {
+                errln("ERROR 1 in test 4\n");
+            }
+            
+            result = coll.compare(new String(strA, 0, 1), new String(strB, 0, 1));
+            if (result != 0) {
+                errln("ERROR 1 in test 4\n");
+            }
+            
+            CollationKey sortKeyA = coll.getCollationKey(new String(strA));
+            CollationKey sortKeyB = coll.getCollationKey(new String(strB));
+            
+            int r = sortKeyA.compareTo(sortKeyB);
+            if (r <= 0) {
+                errln("Error 4 in test 4\n");
+            }
+    
+            coll.setStrength(Collator.IDENTICAL);
+            sortKeyA = coll.getCollationKey(new String(strA));
+            sortKeyB = coll.getCollationKey(new String(strB));
+    
+            r = sortKeyA.compareTo(sortKeyB);
+            if (r <= 0) {
+                errln("Error 7 in test 4\n");
+            }
+            
+            coll.setStrength(Collator.TERTIARY);
+        }
+        */
+        /*  Test 5:  Null characters in non-normal source strings.*/
+        // logln("Test 5 ....");
+        /*
+         * not a valid test since string are null-terminated in java{
+        {
+            char strA[] = {0x41, 0x41, 0x300, 0x316, 0x00, 0x42,};
+            char strB[] = {0x41, 0x41, 0x300, 0x316, 0x00, 0x00,};
+           
+    
+            int result = coll.compare(new String(strA, 0, 6), new String(strB, 0, 6));
+            if (result < 0) {
+                errln("ERROR 1 in test 5\n");
+            }
+            result = coll.compare(new String(strA, 0, 4), new String(strB, 0, 4));
+            if (result != 0) {
+                errln("ERROR 2 in test 5\n");
+            }
+    
+            CollationKey sortKeyA = coll.getCollationKey(new String(strA));
+            CollationKey sortKeyB = coll.getCollationKey(new String(strB));
+            int r = sortKeyA.compareTo(sortKeyB);
+            if (r <= 0) {
+                errln("Error 4 in test 5\n");
+            }
+    
+            coll.setStrength(Collator.IDENTICAL);
+            
+            sortKeyA = coll.getCollationKey(new String(strA));
+            sortKeyB = coll.getCollationKey(new String(strB));
+            r = sortKeyA.compareTo(sortKeyB);
+            if (r <= 0) {
+                errln("Error 7 in test 5\n");
+            }
+            
+            coll.setStrength(Collator.TERTIARY);
+        }
+        */
+        /*  Test 6:  Null character as base of a non-normal combining sequence.*/
+        // logln("Test 6 ....");
+        /*
+         * not a valid test since string are null-terminated in java{
+        {
+            char strA[] = {0x41, 0x0, 0x300, 0x316, 0x41, 0x302,};
+            char strB[] = {0x41, 0x0, 0x302, 0x316, 0x41, 0x300,};
+    
+            int result = coll.compare(new String(strA, 0, 5), new String(strB, 0, 5));
+            if (result != -1) {
+                errln("Error 1 in test 6\n");
+            }
+            result = coll.compare(new String(strA, 0, 1), new String(strB, 0, 1));
+            if (result != 0) {
+                errln("Error 2 in test 6\n");
+            }
+        }
+        */
+    }
+    
+    public void TestContraction() {
+        String[] testrules = {
+            "&A = AB / B",
+            "&A = A\\u0306/\\u0306",
+            "&c = ch / h",
+        };
+        String[] testdata = {
+            "AB", "AB", "A\u0306", "ch"
+        };
+        String[] testdata2 = {
+            "\u0063\u0067",
+            "\u0063\u0068",
+            "\u0063\u006C",
+        };
+        String[] testrules3 = {
+            "&z < xyz &xyzw << B",
+            "&z < xyz &xyz << B / w",
+            "&z < ch &achm << B",
+            "&z < ch &a << B / chm",
+            "&\ud800\udc00w << B",
+            "&\ud800\udc00 << B / w",
+            "&a\ud800\udc00m << B",
+            "&a << B / \ud800\udc00m",
+        };
+    
+        RuleBasedCollator  coll = null;
+        for (int i = 0; i < testrules.length; i ++) {
+            CollationElementIterator iter1 = null;
+            int j = 0;
+            // logln("Rule " + testrules[i] + " for testing\n");
+            String rule = testrules[i];
+            try {
+                coll = new RuleBasedCollator(rule);
+            } catch (Exception e) {
+                errln("Collator creation failed " + testrules[i]);
+                return;
+            }
+            try {
+                iter1 = coll.getCollationElementIterator(testdata[i]);
+            } catch (Exception e) {
+                errln("Collation iterator creation failed\n");
+                return;
+            }
+            while (j < 2) {
+                CollationElementIterator iter2;
+                int ce;
+                try {
+                    iter2 = coll.getCollationElementIterator(String.valueOf(testdata[i].charAt(j)));
+                
+                }catch (Exception e) {
+                    errln("Collation iterator creation failed\n");
+                    return;
+                }
+                ce = iter2.next();
+                while (ce != CollationElementIterator.NULLORDER) {
+                    if (iter1.next() != ce) {
+                        errln("Collation elements in contraction split does not match\n");
+                        return;
+                    }
+                    ce = iter2.next();
+                }
+                j ++;
+            }
+            if (iter1.next() != CollationElementIterator.NULLORDER) {
+                errln("Collation elements not exhausted\n");
+                return;
+            }
+        }
+        String rule = "& a < b < c < ch < d & c = ch / h";
+        try {
+            coll = new RuleBasedCollator(rule);
+        } catch (Exception e) {
+            errln("cannot create rulebased collator");
+            return;
+        }
+        
+        if (coll.compare(testdata2[0], testdata2[1]) != -1) {
+            errln("Expected " + testdata2[0] + " < " + testdata2[1]);
+            return;
+        }
+        if (coll.compare(testdata2[1], testdata2[2]) != -1) {
+            errln("Expected " + testdata2[1] + " < " + testdata2[2]);
+            return;
+        }
+        for (int i = 0; i < testrules3.length; i += 2) {
+            RuleBasedCollator          coll1, coll2;
+            CollationElementIterator iter1, iter2;
+            char               ch = 0x0042;
+            int            ce;
+            rule = testrules3[i];
+            try {
+                coll1 = new RuleBasedCollator(rule);
+            } catch (Exception e) {
+                errln("Fail: cannot create rulebased collator, rule:" + rule);
+                return;
+            }
+            rule = testrules3[i + 1];
+            try {
+                coll2 = new RuleBasedCollator(rule);
+            } catch (Exception e) {
+                errln("Collator creation failed " + testrules[i]);
+                return;
+            }
+            try {
+                iter1 = coll1.getCollationElementIterator(String.valueOf(ch));
+                iter2 = coll2.getCollationElementIterator(String.valueOf(ch));
+            } catch (Exception e) {
+                errln("Collation iterator creation failed\n");
+                return;
+            }
+            ce = iter1.next();
+            
+            while (ce != CollationElementIterator.NULLORDER) {
+                if (ce != iter2.next()) {
+                    errln("CEs does not match\n");
+                    return;
+                }
+                ce = iter1.next();
+            }
+            if (iter2.next() != CollationElementIterator.NULLORDER) {
+                errln("CEs not exhausted\n");
+                return;
+            }
+        }
+    }
+    
+    public void TestExpansion() {
+        String[] testrules = {
+            "&J << K / B & K << M",
+            "&J << K / B << M"
+        };
+        String[] testdata = {
+            "JA", "MA", "KA", "KC", "JC", "MC",
+        };
+        
+        Collator  coll;
+        for (int i = 0; i < testrules.length; i++) {
+            // logln("Rule " + testrules[i] + " for testing\n");
+            String rule = testrules[i];
+            try {
+                coll = new RuleBasedCollator(rule);
+            } catch (Exception e) {
+                errln("Collator creation failed " + testrules[i]);
+                return;
+            }
+            
+            for (int j = 0; j < 5; j ++) {
+                doTest(coll, testdata[j], testdata[j + 1], -1);
+            }
+        }
+    }
+    
+    public void TestContractionEndCompare()
+    {
+        String rules = "&b=ch";
+        String src = "bec";
+        String tgt = "bech";
+        Collator coll = null;
+        try {
+            coll = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            errln("Collator creation failed " + rules);
+            return;
+        }
+        doTest(coll, src, tgt, 1);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationMonkeyTest.java b/src/com/ibm/icu/dev/test/collator/CollationMonkeyTest.java
new file mode 100644
index 0000000..e9a190a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationMonkeyTest.java
@@ -0,0 +1,322 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : collate/CollationMonkeyTest
+ * Source File: $ICU4CRoot/source/test/intltest/mnkytst.cpp
+ **/
+
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Random;
+import java.util.Locale;
+
+/**
+ * CollationMonkeyTest is a third level test class.  This tests the random 
+ * substrings of the default test strings to verify if the compare and 
+ * sort key algorithm works correctly.  For example, any string is always
+ * less than the string itself appended with any character.
+ */
+
+public class CollationMonkeyTest extends TestFmwk {
+    
+    private String source = "-abcdefghijklmnopqrstuvwxyz#&^$@";
+    
+    public static void main(String[] args) throws Exception {
+        new CollationMonkeyTest().run(args);
+    }
+    
+    public void TestCollationKey() {
+        if(source.length() == 0) {
+            errln("CollationMonkeyTest.TestCollationKey(): source is empty - ICU_DATA not set or data missing?");
+            return;
+        }
+        Collator myCollator;
+        try {
+             myCollator = Collator.getInstance(new Locale("en", "US"));
+        } catch (Exception e) {
+            errln("ERROR: in creation of collator of ENGLISH locale");
+            return;
+        }
+        
+        Random rand = new Random();
+        int s = rand.nextInt(0x7fff) % source.length();
+        int t = rand.nextInt(0x7fff) % source.length();
+        int slen = Math.abs(rand.nextInt(0x7fff) % source.length() - source.length()) % source.length();
+        int tlen = Math.abs(rand.nextInt(0x7fff) % source.length() - source.length()) % source.length();
+        String subs = source.substring(Math.min(s, slen), Math.min(s + slen, source.length()));
+        String subt = source.substring(Math.min(t, tlen), Math.min(t + tlen, source.length()));
+    
+        CollationKey collationKey1, collationKey2;
+    
+        myCollator.setStrength(Collator.TERTIARY);
+        collationKey1 = myCollator.getCollationKey(subs);
+        collationKey2 = myCollator.getCollationKey(subt);
+        int result = collationKey1.compareTo(collationKey2);  // Tertiary
+        int revResult = collationKey2.compareTo(collationKey1);  // Tertiary
+        report( subs, subt, result, revResult);
+    
+        myCollator.setStrength(Collator.SECONDARY);
+        collationKey1 = myCollator.getCollationKey(subs);
+        collationKey2 = myCollator.getCollationKey(subt);
+        result = collationKey1.compareTo(collationKey2);  // Secondary
+        revResult = collationKey2.compareTo(collationKey1);   // Secondary
+        report( subs, subt, result, revResult);
+    
+        myCollator.setStrength(Collator.PRIMARY);
+        collationKey1 = myCollator.getCollationKey(subs);
+        collationKey2 = myCollator.getCollationKey(subt);
+        result = collationKey1.compareTo(collationKey2);  // Primary
+        revResult = collationKey2.compareTo(collationKey1);   // Primary
+        report(subs, subt, result, revResult);
+    
+        String msg = "";
+        String addOne = subs + String.valueOf(0xE000);
+    
+        collationKey1 = myCollator.getCollationKey(subs);
+        collationKey2 = myCollator.getCollationKey(addOne);
+        result = collationKey1.compareTo(collationKey2);
+        if (result != -1) {
+            msg += "CollationKey(";
+            msg += subs;
+            msg += ") .LT. CollationKey(";
+            msg += addOne;
+            msg += ") Failed.";
+            errln(msg);
+        }
+    
+        msg = "";
+        result = collationKey2.compareTo(collationKey1);
+        if (result != 1) {
+            msg += "CollationKey(";
+            msg += addOne;
+            msg += ") .GT. CollationKey(";
+            msg += subs;
+            msg += ") Failed.";
+            errln(msg);
+        }
+    }
+    
+    // perform monkey tests using Collator.compare
+    public void TestCompare() {
+        if(source.length() == 0) {
+            errln("CollationMonkeyTest.TestCompare(): source is empty - ICU_DATA not set or data missing?");
+            return;
+        }
+        
+        Collator myCollator;
+        try {
+             myCollator = Collator.getInstance(new Locale("en", "US"));
+        } catch (Exception e) {
+            errln("ERROR: in creation of collator of ENGLISH locale");
+            return;
+        }
+        
+        /* Seed the random-number generator with current time so that
+         * the numbers will be different every time we run.
+         */
+        
+        Random rand = new Random();
+        int s = rand.nextInt(0x7fff) % source.length();
+        int t = rand.nextInt(0x7fff) % source.length();
+        int slen = Math.abs(rand.nextInt(0x7fff) % source.length() - source.length()) % source.length();
+        int tlen = Math.abs(rand.nextInt(0x7fff) % source.length() - source.length()) % source.length();
+        String subs = source.substring(Math.min(s, slen), Math.min(s + slen, source.length()));
+        String subt = source.substring(Math.min(t, tlen), Math.min(t + tlen, source.length()));
+    
+        myCollator.setStrength(Collator.TERTIARY);
+        int result = myCollator.compare(subs, subt);  // Tertiary
+        int revResult = myCollator.compare(subt, subs);  // Tertiary
+        report(subs, subt, result, revResult);
+    
+        myCollator.setStrength(Collator.SECONDARY);
+        result = myCollator.compare(subs, subt);  // Secondary
+        revResult = myCollator.compare(subt, subs);  // Secondary
+        report(subs, subt, result, revResult);
+    
+        myCollator.setStrength(Collator.PRIMARY);
+        result = myCollator.compare(subs, subt);  // Primary
+        revResult = myCollator.compare(subt, subs);  // Primary
+        report(subs, subt, result, revResult);
+    
+        String msg = "";
+        String addOne = subs + String.valueOf(0xE000);
+    
+        result = myCollator.compare(subs, addOne);
+        if (result != -1) {
+            msg += "Test : ";
+            msg += subs;
+            msg += " .LT. ";
+            msg += addOne;
+            msg += " Failed.";
+            errln(msg);
+        }
+    
+        msg = "";
+        result = myCollator.compare(addOne, subs);
+        if (result != 1) {
+            msg += "Test : ";
+            msg += addOne;
+            msg += " .GT. ";
+            msg += subs;
+            msg += " Failed.";
+            errln(msg);
+        }
+    }
+    
+    void report(String s, String t, int result, int revResult) {
+        if (revResult != -result) {
+            String msg = "";
+            msg += s; 
+            msg += " and ";
+            msg += t;
+            msg += " round trip comparison failed";
+            msg += " (result " + result + ", reverse Result " + revResult + ")"; 
+            errln(msg);
+        }
+    }
+    
+    public void TestRules() {
+        String testSourceCases[] = {
+            "\u0061\u0062\u007a", 
+            "\u0061\u0062\u007a", 
+        };
+    
+        String testTargetCases[] = {
+            "\u0061\u0062\u00e4",
+            "\u0061\u0062\u0061\u0308",
+        };
+        
+        int i=0;
+        logln("Demo Test 1 : Create a new table collation with rules \"& z < 0x00e4\"");
+        Collator col = Collator.getInstance(new Locale("en", "US"));
+        String baseRules = ((RuleBasedCollator)col).getRules();
+        String newRules = " & z < ";
+        newRules = baseRules + newRules + String.valueOf(0x00e4);
+        RuleBasedCollator myCollation = null;
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        } catch (Exception e) {
+            errln( "Demo Test 1 Table Collation object creation failed.");
+            return;
+        }
+        
+        for(i=0; i<2; i++){
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], -1);
+        }
+        logln("Demo Test 2 : Create a new table collation with rules \"& z < a 0x0308\"");
+        newRules = "";
+        newRules = baseRules + " & z < a" + String.valueOf(0x0308);
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        } catch (Exception e) {
+            errln( "Demo Test 1 Table Collation object creation failed.");
+            return;
+        }
+        for(i=0; i<2; i++){
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], -1);
+        }
+    }
+    
+    void doTest(RuleBasedCollator myCollation, String mysource, String target, int result) {
+        int compareResult = myCollation.compare(source, target);
+        CollationKey sortKey1, sortKey2;
+        
+        try {
+            sortKey1 = myCollation.getCollationKey(source);
+            sortKey2 = myCollation.getCollationKey(target);
+        } catch (Exception e) {
+            errln("SortKey generation Failed.\n");
+            return;
+        }
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult( mysource, target, sortKey1, sortKey2, compareResult, keyResult, compareResult, result );
+    }
+    
+    public void reportCResult(String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                              int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+            sResult = appendCompareResult(incResult, sResult);
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    String appendCompareResult(int result, String target) {
+        if (result == -1) {  //LESS
+            target += "LESS";
+        } else if (result == 0) {  //EQUAL
+            target += "EQUAL";
+        } else if (result == 1) {  //GREATER
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationRegressionTest.java b/src/com/ibm/icu/dev/test/collator/CollationRegressionTest.java
new file mode 100644
index 0000000..2e49833
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationRegressionTest.java
@@ -0,0 +1,896 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : collate/CollationRegressionTest
+ * Source File: $ICU4CRoot/source/test/intltest/regcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+
+public class CollationRegressionTest extends TestFmwk {
+    public static void main(String[] args) throws Exception{
+        new CollationRegressionTest().run(args);
+    }
+    
+    // @bug 4048446
+    //
+    // CollationElementIterator.reset() doesn't work
+    //
+    public void Test4048446() {
+        final String test1 = "XFILE What subset of all possible test cases has the highest probability of detecting the most errors?";
+        //final String test2 = "Xf_ile What subset of all possible test cases has the lowest probability of detecting the least errors?";
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        CollationElementIterator i1 = en_us.getCollationElementIterator(test1);
+        CollationElementIterator i2 = en_us.getCollationElementIterator(test1);
+        
+        if (i1 == null || i2 == null) {
+            errln("Could not create CollationElementIterator's");
+            return;
+        }
+    
+        while (i1.next() != CollationElementIterator.NULLORDER) {
+            //
+        }
+    
+        i1.reset();
+        assertEqual(i1, i2);
+    }
+    
+    void assertEqual(CollationElementIterator i1, CollationElementIterator i2) {
+        int c1, c2, count = 0;
+    
+        do {
+            c1 = i1.next();
+            c2 = i2.next();
+    
+            if (c1 != c2) {
+                String msg = "";
+                String msg1 = "    ";
+                
+                msg += msg1 + count;
+                msg += ": strength(0x" + Integer.toHexString(c1);
+                msg += ") != strength(0x" + Integer.toHexString(c2);
+                msg += ")";
+                errln(msg);
+                break;
+            }
+            count += 1;
+        } while (c1 != CollationElementIterator.NULLORDER);
+    }
+    
+    // @bug 4051866
+    //
+    // Collator -> rules -> Collator round-trip broken for expanding characters
+    //
+    public void Test4051866() {
+       String rules = "< o & oe ,o\u3080& oe ,\u1530 ,O& OE ,O\u3080& OE ,\u1520< p ,P";
+
+        // Build a collator containing expanding characters
+        RuleBasedCollator c1 = null;
+        
+        try {
+            c1 = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            errln("Fail to create RuleBasedCollator with rules:" + rules);
+            return;
+        }
+    
+        // Build another using the rules from  the first
+        RuleBasedCollator c2 = null;
+        try {
+            c2 = new RuleBasedCollator(c1.getRules());
+        } catch (Exception e) {
+            errln("Fail to create RuleBasedCollator with rules:" + rules);
+            return;
+        }
+    
+        // Make sure they're the same
+        if (!(c1.getRules().equals(c2.getRules())))
+        {
+            errln("Rules are not equal");
+        }
+    }
+    
+    // @bug 4053636
+    //
+    // Collator thinks "black-bird" == "black"
+    //
+    public void Test4053636() {
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        if (en_us.equals("black_bird", "black")) {
+            errln("black-bird == black");
+        }
+    }
+    
+    // @bug 4054238
+    //
+    // CollationElementIterator will not work correctly if the associated
+    // Collator object's mode is changed
+    //
+    public void Test4054238(/* char* par */) {
+        final char[] chars3 = {0x61, 0x00FC, 0x62, 0x65, 0x63, 0x6b, 0x20, 0x47, 0x72, 0x00F6, 0x00DF, 0x65, 0x20, 0x4c, 0x00FC, 0x62, 0x63, 0x6b, 0};
+        final String test3 = new String(chars3);
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+    
+        // NOTE: The Java code uses en_us to create the CollationElementIterators
+        // but I'm pretty sure that's wrong, so I've changed this to use c.
+        c.setDecomposition(Collator.NO_DECOMPOSITION);
+        CollationElementIterator i1 = c.getCollationElementIterator(test3);
+        logln("Offset:" + i1.getOffset());
+    }
+    
+    // @bug 4054734
+    //
+    // Collator::IDENTICAL documented but not implemented
+    //
+    public void Test4054734(/* char* par */) {
+        
+            //Here's the original Java:
+    
+            String[] decomp = {
+                "\u0001",   "<",    "\u0002",
+                "\u0001",   "=",    "\u0001",
+                "A\u0001",  ">",    "~\u0002",      // Ensure A and ~ are not compared bitwise
+                "\u00C0",   "=",    "A\u0300",      // Decomp should make these equal
+            };
+    
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.IDENTICAL);
+        c.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        compareArray(c, decomp);
+    }
+    
+    void compareArray(Collator c, String[] tests) {
+        
+        int expectedResult = 0;
+    
+        for (int i = 0; i < tests.length; i += 3) {
+            String source = tests[i];
+            String comparison = tests[i + 1];
+            String target = tests[i + 2];
+    
+            if (comparison.equals("<")) {
+                expectedResult = -1;
+            } else if (comparison.equals(">")) {
+                expectedResult = 1;
+            } else if (comparison.equals("=")) {
+                expectedResult = 0;
+            } else {
+                errln("Bogus comparison string \"" + comparison + "\"");
+            }
+            
+            int compareResult = 0;
+            
+            logln("i = " + i);
+            logln(source);
+            logln(target);
+            try {
+                compareResult = c.compare(source, target);
+            } catch (Exception e) {
+                errln(e.toString());
+            }
+    
+            CollationKey sourceKey = null, targetKey = null;
+            try {
+                sourceKey = c.getCollationKey(source);
+            } catch (Exception e) {
+                errln("Couldn't get collationKey for source");
+                continue;
+            }
+    
+            try {
+                targetKey = c.getCollationKey(target);
+            } catch (Exception e) {
+                errln("Couldn't get collationKey for target");
+                continue;
+            }
+    
+            int keyResult = sourceKey.compareTo(targetKey);
+            reportCResult( source, target, sourceKey, targetKey, compareResult, keyResult, compareResult, expectedResult );
+        }
+    }
+    
+    void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1)
+        {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()){
+            return;    
+        }else{
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    String appendCompareResult(int result, String target) {
+        if (result == -1) {  //LESS
+            target += "LESS";
+        } else if (result == 0) {  //EQUAL
+            target += "EQUAL";
+        } else if (result == 1) {  //GREATER
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+    
+    // @bug 4054736
+    //
+    // Full Decomposition mode not implemented
+    //
+    public void Test4054736(/* char* par */) {
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+    
+        c.setStrength(Collator.SECONDARY);
+        c.setDecomposition(Collator.NO_DECOMPOSITION);
+    
+        final String[] tests = { "\uFB4F", "\u003d", "\u05D0\u05DC" };  // Alef-Lamed vs. Alef, Lamed
+        compareArray(c, tests);
+    }
+    
+    // @bug 4058613
+    //
+    // Collator::createInstance() causes an ArrayIndexOutofBoundsException for Korean  
+    //
+    public void Test4058613(/* char* par */) {
+        // Creating a default collator doesn't work when Korean is the default
+        // locale
+        
+        Locale oldDefault = Locale.getDefault();
+        Locale.setDefault(new Locale("ko", ""));
+    
+        Collator c = null;
+        
+        c = Collator.getInstance(new Locale("en", "US"));
+    
+        if (c == null) {
+            errln("Could not create a Korean collator");
+            Locale.setDefault(oldDefault);
+            return;
+        }
+        
+        // Since the fix to this bug was to turn off decomposition for Korean collators,
+        // ensure that's what we got
+        if (c.getDecomposition() != Collator.NO_DECOMPOSITION) {
+          errln("Decomposition is not set to NO_DECOMPOSITION for Korean collator");
+        }
+    
+        Locale.setDefault(oldDefault);
+    }
+    
+    // @bug 4059820
+    //
+    // RuleBasedCollator.getRules does not return the exact pattern as input
+    // for expanding character sequences
+    //
+    public void Test4059820(/* char* par */) {
+        RuleBasedCollator c = null;
+        String rules = "< a < b , c/a < d < z";
+        try {
+            c = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            errln("Failure building a collator.");
+            return;
+        }
+    
+        if ( c.getRules().indexOf("c/a") == -1)
+        {
+            errln("returned rules do not contain 'c/a'");
+        }
+    }
+    
+    // @bug 4060154
+    //
+    // MergeCollation::fixEntry broken for "& H < \u0131, \u0130, i, I"
+    //
+    public void Test4060154(/* char* par */) {
+        String rules ="< g, G < h, H < i, I < j, J & H < \u0131, \u0130, i, I";
+    
+        RuleBasedCollator c = null;
+        try {
+            c = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            //System.out.println(e);
+            errln("failure building collator.");
+            return;
+        }
+    
+        c.setDecomposition(Collator.NO_DECOMPOSITION);
+    
+        String[] tertiary = {
+            "A",        "<",    "B",
+            "H",        "<",    "\u0131",
+            "H",        "<",    "I",
+            "\u0131",   "<",    "\u0130",
+            "\u0130",   "<",    "i",
+            "\u0130",   ">",    "H",
+        };
+    
+        c.setStrength(Collator.TERTIARY);
+        compareArray(c, tertiary);
+    
+        String[] secondary = {
+            "H",        "<",    "I",
+            "\u0131",   "=",    "\u0130",
+        };
+    
+        c.setStrength(Collator.PRIMARY);
+        compareArray(c, secondary);
+    };
+    
+    // @bug 4062418
+    //
+    // Secondary/Tertiary comparison incorrect in French Secondary
+    //
+    public void Test4062418(/* char* par */) {
+        RuleBasedCollator c = null;
+        try {
+            c = (RuleBasedCollator) Collator.getInstance(Locale.FRANCE);
+        } catch (Exception e) {
+            errln("Failed to create collator for Locale::FRANCE()");
+            return;
+        }
+        c.setStrength(Collator.SECONDARY);
+    
+        String[] tests = {
+                "p\u00eache",    "<",    "p\u00e9ch\u00e9",    // Comparing accents from end, p\u00e9ch\u00e9 is greater
+        };
+    
+        compareArray(c, tests);
+    }
+    
+    // @bug 4065540
+    //
+    // Collator::compare() method broken if either string contains spaces
+    //
+    public void Test4065540(/* char* par */) {
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        if (en_us.compare("abcd e", "abcd f") == 0) {
+            errln("'abcd e' == 'abcd f'");
+        }
+    }
+    
+    // @bug 4066189
+    //
+    // Unicode characters need to be recursively decomposed to get the
+    // correct result. For example,
+    // u1EB1 -> \u0103 + \u0300 -> a + \u0306 + \u0300.
+    //
+    public void Test4066189(/* char* par */) {
+        final  String test1 = "\u1EB1";
+        final  String test2 = "\u0061\u0306\u0300";
+    
+        // NOTE: The java code used en_us to create the
+        // CollationElementIterator's. I'm pretty sure that
+        // was wrong, so I've change the code to use c1 and c2
+        RuleBasedCollator c1 = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c1.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        CollationElementIterator i1 = c1.getCollationElementIterator(test1);
+    
+        RuleBasedCollator c2 = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c2.setDecomposition(Collator.NO_DECOMPOSITION);
+        CollationElementIterator i2 = c2.getCollationElementIterator(test2);
+    
+        assertEqual(i1, i2);
+    }
+    
+    // @bug 4066696
+    //
+    // French secondary collation checking at the end of compare iteration fails
+    //
+    public void Test4066696(/* char* par */) {
+        RuleBasedCollator c = null;
+        try {
+            c = (RuleBasedCollator)Collator.getInstance(Locale.FRANCE);
+        } catch(Exception e) {
+            errln("Failure creating collator for Locale::getFrance()");
+            return;
+        }
+        c.setStrength(Collator.SECONDARY);
+    
+        String[] tests = {
+            "\u00e0",   ">",     "\u01fa",       // a-grave <  A-ring-acute
+        };    
+        compareArray(c, tests);
+    }
+    
+    // @bug 4076676
+    //
+    // Bad canonicalization of same-class combining characters
+    //
+    public void Test4076676(/* char* par */) {
+        // These combining characters are all in the same class, so they should not
+        // be reordered, and they should compare as unequal.
+        final String s1 = "\u0041\u0301\u0302\u0300";
+        final String s2 = "\u0041\u0302\u0300\u0301";
+    
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+    
+        if (c.compare(s1,s2) == 0) {
+            errln("Same-class combining chars were reordered");
+        }
+    }
+
+    // @bug 4078588
+    //
+    // RuleBasedCollator breaks on "< a < bb" rule
+    //
+    public void Test4078588(/* char *par */) {
+        RuleBasedCollator rbc = null;
+        try {
+            rbc = new RuleBasedCollator("< a < bb");
+        } catch (Exception e) {
+            errln("Failed to create RuleBasedCollator.");
+            return;
+        }
+    
+        int result = rbc.compare("a","bb");
+    
+        if (result >= 0) {
+            errln("Compare(a,bb) returned " + result + "; expected -1");
+        }
+    }
+    
+    // @bug 4079231
+    //
+    // RuleBasedCollator::operator==(NULL) throws NullPointerException
+    //
+    public void Test4079231(/* char* par */) {    
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        try {
+            if (en_us.equals(null)) {
+                errln("en_us.equals(null) returned true");
+            }
+        } catch (Exception e) {
+            errln("en_us.equals(null) threw " + e.toString());
+        }
+    }
+    
+    // @bug 4081866
+    //
+    // Combining characters in different classes not reordered properly.
+    //
+    public void Test4081866(/* char* par */) {
+        // These combining characters are all in different classes,
+        // so they should be reordered and the strings should compare as equal.
+        String s1 = "\u0041\u0300\u0316\u0327\u0315";
+        String s2 = "\u0041\u0327\u0316\u0315\u0300";
+    
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+        
+        // Now that the default collators are set to NO_DECOMPOSITION
+        // (as a result of fixing bug 4114077), we must set it explicitly
+        // when we're testing reordering behavior.  -- lwerner, 5/5/98
+        c.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        if (c.compare(s1,s2) != 0) {
+            errln("Combining chars were not reordered");
+        }
+    }
+    
+    // @bug 4087241
+    //
+    // string comparison errors in Scandinavian collators
+    //
+    public void Test4087241(/* char* par */) {
+        Locale da_DK = new Locale("da", "DK");
+        RuleBasedCollator c = null;
+        try {
+            c = (RuleBasedCollator) Collator.getInstance(da_DK);
+        } catch (Exception e) {
+            errln("Failed to create collator for da_DK locale");
+            return;
+        }
+        c.setStrength(Collator.SECONDARY);
+        String tests[] = {
+            "\u007a",       "\u003c", "\u00E6",            // z        < ae
+            "\u0061\u0308", "\u003c", "\u0061\u030A",      // a-unlaut < a-ring
+            "\u0059",       "\u003c", "\u0075\u0308",      // Y        < u-umlaut
+        };
+        compareArray(c, tests);
+    }
+    
+    // @bug 4087243
+    //
+    // CollationKey takes ignorable strings into account when it shouldn't
+    //
+    public void Test4087243(/* char* par */) {
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+        String tests[] = {
+            "\u0031\u0032\u0033", "\u003d", "\u0031\u0032\u0033\u0001"    // 1 2 3  =  1 2 3 ctrl-A
+        };
+        compareArray(c, tests);
+    }
+    
+    // @bug 4092260
+    //
+    // Mu/micro conflict
+    // Micro symbol and greek lowercase letter Mu should sort identically
+    //
+    public void Test4092260(/* char* par */) {
+        Locale el = new Locale("el", "");
+        Collator c = null;
+        try {
+            c = Collator.getInstance(el);
+        } catch (Exception e) {
+            errln("Failed to create collator for el locale.");
+            return;
+        }
+        // These now have tertiary differences in UCA
+        c.setStrength(Collator.SECONDARY);
+        String tests[] = {
+            "\u00B5", "\u003d", "\u03BC",
+        };
+        compareArray(c, tests);
+    }
+    
+    // @bug 4095316
+    //
+    public void Test4095316(/* char* par */) {
+        Locale el_GR = new Locale("el", "GR");
+        Collator c = null;
+        try {
+            c = Collator.getInstance(el_GR);
+        } catch (Exception e) {
+            errln("Failed to create collator for el_GR locale");
+            return;
+        }
+        // These now have tertiary differences in UCA
+        //c->setStrength(Collator::TERTIARY);
+        //c->setAttribute(UCOL_STRENGTH, UCOL_SECONDARY, status);
+        c.setStrength(Collator.SECONDARY);
+        String tests[] = {
+            "\u03D4", "\u003d", "\u03AB",
+        };
+        compareArray(c, tests);
+    }
+    
+    // @bug 4101940
+    //
+    public void Test4101940(/* char* par */) {
+        RuleBasedCollator c = null;
+        String rules = "< a < b";
+        String nothing = "";
+        try {
+            c = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            errln("Failed to create RuleBasedCollator");
+            return;
+        }
+        CollationElementIterator i = c.getCollationElementIterator(nothing);
+        i.reset();
+        if (i.next() != CollationElementIterator.NULLORDER) {
+            errln("next did not return NULLORDER");
+        }
+    }
+    
+    // @bug 4103436
+    //
+    // Collator::compare not handling spaces properly
+    //
+    public void Test4103436(/* char* par */) {
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+        String[] tests = {
+            "\u0066\u0069\u006c\u0065", "\u003c", "\u0066\u0069\u006c\u0065\u0020\u0061\u0063\u0063\u0065\u0073\u0073",
+            "\u0066\u0069\u006c\u0065", "\u003c", "\u0066\u0069\u006c\u0065\u0061\u0063\u0063\u0065\u0073\u0073",
+        };
+        compareArray(c, tests);
+    }
+    
+    // @bug 4114076
+    //
+    // Collation not Unicode conformant with Hangul syllables
+    //
+    public void Test4114076(/* char* par */) {
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+    
+        //
+        // With Canonical decomposition, Hangul syllables should get decomposed
+        // into Jamo, but Jamo characters should not be decomposed into
+        // conjoining Jamo
+        //
+        String test1[] = {
+            "\ud4db", "\u003d", "\u1111\u1171\u11b6"
+        };
+    
+        c.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        compareArray(c, test1);
+    
+        // From UTR #15:
+        // *In earlier versions of Unicode, jamo characters like ksf
+        //  had compatibility mappings to kf + sf. These mappings were 
+        //  removed in Unicode 2.1.9 to ensure that Hangul syllables are maintained.)
+        // That is, the following test is obsolete as of 2.1.9
+    
+    //obsolete-    // With Full decomposition, it should go all the way down to
+    //obsolete-    // conjoining Jamo characters.
+    //obsolete-    //
+    //obsolete-    static const UChar test2[][CollationRegressionTest::MAX_TOKEN_LEN] =
+    //obsolete-    {
+    //obsolete-        {0xd4db, 0}, {0x3d, 0}, {0x1111, 0x116e, 0x1175, 0x11af, 0x11c2, 0}
+    //obsolete-    };
+    //obsolete-
+    //obsolete-    c->setDecomposition(Normalizer::DECOMP_COMPAT);
+    //obsolete-    compareArray(*c, test2, ARRAY_LENGTH(test2));
+    }
+
+    // @bug 4114077
+    //
+    // Collation with decomposition off doesn't work for Europe 
+    //
+    public void Test4114077(/* char* par */) {
+        // Ensure that we get the same results with decomposition off
+        // as we do with it on....
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+        String test1[] = {
+            "\u00C0",                         "\u003d", "\u0041\u0300",            // Should be equivalent
+            "\u0070\u00ea\u0063\u0068\u0065", "\u003e", "\u0070\u00e9\u0063\u0068\u00e9",
+            "\u0204",                         "\u003d", "\u0045\u030F",
+            "\u01fa",                         "\u003d", "\u0041\u030a\u0301",    // a-ring-acute -> a-ring, acute
+                                                    //   -> a, ring, acute
+            "\u0041\u0300\u0316",             "\u003c", "\u0041\u0316\u0300"        // No reordering --> unequal
+        };
+    
+        c.setDecomposition(Collator.NO_DECOMPOSITION);
+        compareArray(c, test1);
+    
+        String test2[] = {
+            "\u0041\u0300\u0316", "\u003d", "\u0041\u0316\u0300"      // Reordering --> equal
+        };
+    
+        c.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        compareArray(c, test2);
+    }
+    
+    // @bug 4124632
+    //
+    // Collator::getCollationKey was hanging on certain character sequences
+    //
+    public void Test4124632(/* char* par */) {
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance(Locale.JAPAN);
+        } catch (Exception e) {
+            errln("Failed to create collator for Locale::JAPAN");
+            return;
+        }
+        String test = "\u0041\u0308\u0062\u0063";
+        CollationKey key;
+        try {
+            key = coll.getCollationKey(test);
+            logln(key.getSourceString());
+        } catch (Exception e) {
+            errln("CollationKey creation failed.");
+        }
+    }
+    
+    // @bug 4132736
+    //
+    // sort order of french words with multiple accents has errors
+    //
+    public void Test4132736(/* char* par */) {
+        Collator c = null;
+        try {
+            c = Collator.getInstance(Locale.FRANCE);
+            c.setStrength(Collator.TERTIARY);
+        } catch (Exception e) {
+            errln("Failed to create a collator for Locale::getFrance()");
+        }
+    
+        String test1[] = {
+            "\u0065\u0300\u0065\u0301", "\u003c", "\u0065\u0301\u0065\u0300",
+            "\u0065\u0300\u0301",       "\u003c", "\u0065\u0301\u0300",
+        };
+        compareArray(c, test1);
+    }
+    
+    // @bug 4133509
+    //
+    // The sorting using java.text.CollationKey is not in the exact order
+    //
+    public void Test4133509(/* char* par */) {
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        String test1[] = {
+            "\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e", "\u003c", "\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0049\u006e\u0049\u006e\u0069\u0074\u0069\u0061\u006c\u0069\u007a\u0065\u0072\u0045\u0072\u0072\u006f\u0072",
+            "\u0047\u0072\u0061\u0070\u0068\u0069\u0063\u0073",       "\u003c", "\u0047\u0072\u0061\u0070\u0068\u0069\u0063\u0073\u0045\u006e\u0076\u0069\u0072\u006f\u006e\u006d\u0065\u006e\u0074",
+            "\u0053\u0074\u0072\u0069\u006e\u0067",                   "\u003c", "\u0053\u0074\u0072\u0069\u006e\u0067\u0042\u0075\u0066\u0066\u0065\u0072",
+        };
+    
+        compareArray(en_us, test1);
+    }
+    
+    // @bug 4139572
+    //
+    // getCollationKey throws exception for spanish text 
+    // Cannot reproduce this bug on 1.2, however it DOES fail on 1.1.6
+    //
+    public void Test4139572(/* char* par */) {
+        //
+        // Code pasted straight from the bug report
+        // (and then translated to C++ ;-)
+        //
+        // create spanish locale and collator
+        Locale l = new Locale("es", "es");
+        Collator col = null;
+        try {
+            col = Collator.getInstance(l);
+        } catch (Exception e) {
+            errln("Failed to create a collator for es_es locale.");
+            return;
+        }
+        CollationKey key = null;
+        // this spanish phrase kills it!
+        try {
+            key = col.getCollationKey("Nombre De Objeto");
+            logln("source:" + key.getSourceString());
+        } catch (Exception e) {
+            errln("Error creating CollationKey for \"Nombre De Ojbeto\"");
+        }
+    }
+    
+    // @bug 4141640
+    //
+    // Support for Swedish gone in 1.1.6 (Can't create Swedish collator) 
+    //
+    public void Test4141640(/* char* par */) {
+        //
+        // Rather than just creating a Swedish collator, we might as well
+        // try to instantiate one for every locale available on the system
+        // in order to prevent this sort of bug from cropping up in the future
+        //
+        Locale locales[] = Locale.getAvailableLocales();
+        
+        for (int i = 0; i < locales.length; i += 1)
+        {
+            Collator c = null;
+            try {
+                c = Collator.getInstance(locales[i]);
+                logln("source: " + c.getStrength());
+            } catch (Exception e) {
+                String msg = "";
+                msg += "Could not create collator for locale ";
+                msg += locales[i].getDisplayName();
+                errln(msg);
+            }
+        }
+    }
+    
+    /* RuleBasedCollator not subclassable
+     * @bug 4146160
+    //
+    // RuleBasedCollator doesn't use createCollationElementIterator internally
+    //
+    public void Test4146160() {
+        //
+        // Use a custom collator class whose createCollationElementIterator
+        // methods increment a count....
+        //     
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        My4146160Collator.count = 0;
+        My4146160Collator mc = null;
+        try {
+            mc = new My4146160Collator(en_us);
+        } catch (Exception e) {
+            errln("Failed to create a My4146160Collator.");
+            return;
+        }
+    
+        CollationKey key = null;
+        try {
+            key = mc.getCollationKey("1");
+        } catch (Exception e) {
+            errln("Failure to get a CollationKey from a My4146160Collator.");
+            return;
+        }
+    
+        if (My4146160Collator.count < 1) {
+            errln("My4146160Collator.getCollationElementIterator not called for getCollationKey");
+        }
+    
+        My4146160Collator.count = 0;
+        mc.compare("1", "2");
+    
+        if (My4146160Collator.count < 1) {
+            errln("My4146160Collator.getCollationElementIterator not called for compare");
+        }
+    }*/
+}
+
+/* RuleBasedCollator not subclassable
+ * class My4146160Collator extends RuleBasedCollator {
+    static int count = 0;
+
+    public My4146160Collator(RuleBasedCollator rbc) throws Exception {
+        super(rbc.getRules());
+    }
+
+    public CollationElementIterator getCollationElementIterator(String text) {
+        count += 1;
+        return super.getCollationElementIterator(text);
+    }
+    
+    public CollationElementIterator getCollationElementIterator(java.text.CharacterIterator text) {
+        count += 1;
+        return super.getCollationElementIterator(text);
+    }
+}
+*/
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationSpanishTest.java b/src/com/ibm/icu/dev/test/collator/CollationSpanishTest.java
new file mode 100644
index 0000000..1e924d0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationSpanishTest.java
@@ -0,0 +1,189 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationSpanishTest
+ * Source File: $ICU4CRoot/source/test/intltest/escoll.cpp
+ **/
+ 
+ package com.ibm.icu.dev.test.collator;
+ 
+ import com.ibm.icu.dev.test.*;
+ import com.ibm.icu.text.*;
+ import java.util.Locale;
+ 
+ public class CollationSpanishTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollationSpanishTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x61, 0x6c, 0x69, 0x61, 0x73},
+        {0x45, 0x6c, 0x6c, 0x69, 0x6f, 0x74},
+        {0x48, 0x65, 0x6c, 0x6c, 0x6f},
+        {0x61, 0x63, 0x48, 0x63},
+        {0x61, 0x63, 0x63},
+        {0x61, 0x6c, 0x69, 0x61, 0x73},
+        {0x61, 0x63, 0x48, 0x63},
+        {0x61, 0x63, 0x63},
+        {0x48, 0x65, 0x6c, 0x6c, 0x6f},
+    };
+
+    private static char[][] testTargetCases = {
+        {0x61, 0x6c, 0x6c, 0x69, 0x61, 0x73},
+        {0x45, 0x6d, 0x69, 0x6f, 0x74},
+        {0x68, 0x65, 0x6c, 0x6c, 0x4f},
+        {0x61, 0x43, 0x48, 0x63},
+        {0x61, 0x43, 0x48, 0x63},
+        {0x61, 0x6c, 0x6c, 0x69, 0x61, 0x73},
+        {0x61, 0x43, 0x48, 0x63},
+        {0x61, 0x43, 0x48, 0x63},
+        {0x68, 0x65, 0x6c, 0x6c, 0x4f},
+    };
+
+    private static int[] results = {
+        -1,
+        -1,
+        1,
+        -1,
+        -1,
+        // test primary > 5
+        -1,
+        0,
+        -1,
+        0
+    };
+    
+    //static public Collator myCollation = Collator.getInstance(new Locale("es", "ES"));
+    
+    private Collator myCollation = null;
+    
+    public CollationSpanishTest() {
+        try {
+            myCollation = Collator.getInstance(new Locale("es", "ES"));
+        } catch (Exception e) {
+            errln("ERROR: in creation of collator of SPANISH locale");
+            return;
+        }
+    }
+    
+    public void TestTertiary(){
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < 5 ; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+    
+    public void TestPrimary(){
+        int i;
+        myCollation.setStrength(Collator.PRIMARY);
+        for (i = 5; i < 9; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+    
+    // amin test routine, tests rules specific to the spanish locale
+    private void doTest(char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationTest.java b/src/com/ibm/icu/dev/test/collator/CollationTest.java
new file mode 100644
index 0000000..46a1d6c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationTest.java
@@ -0,0 +1,344 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/collator/CollationTest.java,v $
+ * $Date: 2002/08/13 21:55:25 $
+ * $Revision: 1.4 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.ModuleTest;
+import com.ibm.icu.text.RuleBasedCollator;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.CollationKey;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.LocaleUtility;
+
+import java.util.Locale;
+import java.util.Vector;
+
+public class CollationTest extends ModuleTest 
+{
+    // public methods --------------------------------------------------------
+    
+    public static void main(String[] args) throws Exception 
+    {
+        new CollationTest().run(args);
+        /* CollationTest test = new CollationTest();
+        if (test.validate()) {
+            test.TestCIgnorableContraction();
+        }*/
+    }
+ 
+    public void TestCIgnorableContraction() {
+    	while (nextSettings()) {
+    	    processTest();
+    	}
+    }
+    
+    public void TestCIgnorablePrefix() {
+        while (nextSettings()) {
+            processTest();
+        }
+    }
+    
+    public void TestNShiftedIgnorable() {
+        while (nextSettings()) {
+            processTest();
+        }
+    }
+    
+    public void TestSafeSurrogates() {
+        while (nextSettings()) {
+            processTest();
+        }
+    }
+    
+    public void TestPrimary() {
+        while (nextSettings()) {
+            processTest();
+        }
+    }
+    
+    public void TestTertiary() {
+        while (nextSettings()) {
+            processTest();
+        }
+    }
+    
+    // private data members --------------------------------------------------
+    
+    private String m_sequence_;
+    private int m_sequenceIndex_;
+    private String m_source_;
+    private StringBuffer m_target_ = new StringBuffer();
+    private int m_nextRelation_;
+    private int m_relation_;
+    
+    // private methods -------------------------------------------------------
+    
+    private void processTest() {
+        RuleBasedCollator col = null;
+        // ok i have to be careful here since it seems like we can have
+        // multiple locales for each test 
+        String locale = settings.getString("TestLocale");
+        if (locale != null) {
+            // this is a case where we have locale 
+            try {
+                if (locale.equalsIgnoreCase("root")) {
+                    col = (RuleBasedCollator)Collator.getInstance(
+                                                               Locale.ENGLISH);
+                }
+                else {
+                    Locale l = LocaleUtility.getLocaleFromName(locale);
+                    col = (RuleBasedCollator)Collator.getInstance(l);          
+                }
+            } catch (Exception e) {
+                errln("Error creating collator for locale " + locale);
+            }
+            logln("Testing collator for locale %s\n" + locale);
+            processCollatorTests(col);
+        }
+        String rules = settings.getString("Rules");
+        // ok i have to be careful here since it seems like we can have
+        // multiple rules for each test 
+        if (rules != null) {
+            // here we deal with rules
+            try {
+                col = new RuleBasedCollator(rules);
+            } catch (Exception e) {
+                errln("Error creating collator for rules " + rules);
+            }
+            processCollatorTests(col);
+        }
+    }
+    
+    private void processCollatorTests(RuleBasedCollator col) 
+    {
+        
+        // ok i have to be careful here since it seems like we can have
+        // multiple rules for each test 
+        String arguments = settings.getString("Arguments");
+        if (arguments != null) {
+            processArguments(col, arguments);
+        }
+        processReadyCollator(col);      
+    }
+    
+    /** 
+     * Reads the options string and sets appropriate attributes in collator 
+     */
+    private void processArguments(RuleBasedCollator col, String argument) {
+        int i = 0;
+        while (i < argument.length()) { 
+            if (!UCharacter.isWhitespace(argument.charAt(i))) { 
+                // eat whitespace
+                break;
+            }
+            i ++;
+        }
+        while (i < argument.length()) {
+            // skip opening '['
+            if (argument.charAt(i) == '[') {
+                i ++;
+            } 
+            else {
+                errln("Error in collation arguments, missing ["); // no opening '['
+                return;
+            }
+            
+            int value = argument.indexOf(' ', i);
+            String option = argument.substring(i, value);
+            i = argument.indexOf(']', value);
+            String optionvalue = argument.substring(value + 1, i);
+            i ++;
+            // some options are not added because they have no public apis yet
+            // TODO add the rest of the options
+            if (option.equalsIgnoreCase("alternate")) {
+                if (optionvalue.equalsIgnoreCase("non-ignorable")) {
+                    col.setAlternateHandlingShifted(false);
+                }
+                else {
+                    col.setAlternateHandlingShifted(true);
+                }
+            }
+            else if (option.equals("strength")) {
+                if (optionvalue.equalsIgnoreCase("1")) {
+                    col.setStrength(Collator.PRIMARY);
+                }
+                else if (optionvalue.equalsIgnoreCase("2")) {
+                    col.setStrength(Collator.SECONDARY);
+                }
+                else if (optionvalue.equalsIgnoreCase("3")) {
+                    col.setStrength(Collator.TERTIARY);
+                }
+                else if (optionvalue.equalsIgnoreCase("4")) {
+                    col.setStrength(Collator.QUATERNARY);
+                }
+            }
+        }
+    }
+
+    private void processReadyCollator(RuleBasedCollator col) {
+       while (nextCase()) {
+            // this is very sad, it is alittle awkward to write the c rb 
+            // to have an object array of an object array of a 1 element 
+            // string array. so now we have an object array of a 1 element 
+            // object array of string arrays.
+            String sequence[] = testcase.getStringArray("sequence");
+            for (int i = 0; i < sequence.length; i ++) {
+                processSequence(col, sequence[i]);
+            }
+       }
+    }
+    
+    private void processSequence(RuleBasedCollator col, String sequence) {
+        // TODO: have a smarter tester that remembers the sequence and ensures 
+        // that the complete sequence is in order. That is why I have made a 
+        // constraint in the sequence format.     
+        m_sequence_ = sequence;
+        m_sequenceIndex_ = 0;
+        m_nextRelation_ = -1;
+        m_target_.delete(0, m_target_.length());
+        Vector vector = new Vector();
+    
+        while (getNextInSequence()) {    
+            String target = m_target_.toString();
+            doTest(col, m_source_, target, m_relation_);
+            int vsize = vector.size();
+            for (int i = 0; i < vsize; i ++) {
+                String source = (String)vector.elementAt(i);   
+                doTest(col, source, target, m_relation_);
+            }
+            vector.addElement(target);
+        }
+    }
+    
+    /** 
+     * Parses the sequence to be tested 
+     */
+    private boolean getNextInSequence() {
+        if (m_sequenceIndex_ >= m_sequence_.length()) {
+            return false;
+        }
+        
+        boolean quoted = false;
+        boolean quotedsingle = false;
+        boolean done = false;
+        int i = m_sequenceIndex_;
+        int offset = 0;
+        m_source_ = m_target_.toString();
+        m_relation_ = m_nextRelation_;
+        m_target_.delete(0, m_target_.length());
+        while (i < m_sequence_.length() && !done) {
+            int ch = UTF16.charAt(m_sequence_, i);
+            if (UCharacter.isSupplementary(ch)) {
+                i += 2;
+            }
+            else {
+                i ++;
+            }
+            if (!quoted) {
+                if (UCharacter.isWhitespace(ch)) {
+                    continue;
+                }
+                switch (ch) {
+                    case 0x003C : // <
+                        m_nextRelation_ = -1;
+                        done = true;
+                        break;
+                    case 0x003D : // = 
+                        m_nextRelation_ = 0;
+                        done = true;
+                        break;
+                    case 0x003E : // >
+                        m_nextRelation_ = 1;
+                        done = true;
+                        break;
+                    case 0x0027 : // ' very basic quoting
+                        quoted = true;
+                        quotedsingle = false;
+                        break;
+                    case 0x005c : // \ single quote
+                        quoted = true;
+                        quotedsingle = true;
+                        break;
+                    default:
+                        UTF16.insert(m_target_, offset, ch);
+                        if (UCharacter.isSupplementary(ch)) {
+                            offset += 2;
+                        }
+                        else {
+                            offset ++;
+                        }
+                    }
+                } 
+                else {
+                      if (ch == 0x0027) {
+                          quoted = false;
+                      } 
+                      else {
+                          UTF16.insert(m_target_, offset, ch);
+                          if (UCharacter.isSupplementary(ch)) {
+                              offset += 2;
+                          }
+                          else {
+                              offset ++;
+                          }
+                      }
+                      if (quotedsingle) {
+                          quoted = false;
+                      }
+                }
+          }
+          if (quoted == true) {
+              errln("Quote in sequence not closed!");
+              return false;
+          }
+        
+        
+          m_sequenceIndex_ = i;
+          return true;
+    }
+    
+    private void doTestVariant(RuleBasedCollator myCollation, 
+                               String source, String target, int result)
+    {
+        int compareResult  = myCollation.compare(source, target);
+        if (compareResult != result) {
+            errln("Comparing \"" + Utility.hex(source) + "\" with \"" 
+                  + Utility.hex(target) + "\" expected " + result 
+                  + " but got " + compareResult);
+        }
+        CollationKey ssk = myCollation.getCollationKey(source);
+        CollationKey tsk = myCollation.getCollationKey(target);
+        compareResult = ssk.compareTo(tsk);
+        if (compareResult != result) {
+            errln("Comparing sortkeys of \"" + Utility.hex(source) + "\" with \"" 
+                  + Utility.hex(target) + "\" expected " + result 
+                  + " but got " + compareResult);
+        } 
+    }
+    
+    private void doTest(RuleBasedCollator myCollation, 
+                               String source, String target, int result)
+    {
+        doTestVariant(myCollation, source, target, result);
+        if (result == 0) {
+            doTestVariant(myCollation, target, source, result);            
+        }
+        else if (result < 0) {
+            doTestVariant(myCollation, target, source, 1); 
+        }
+        else {
+            doTestVariant(myCollation, target, source, -1); 
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationTestData.java b/src/com/ibm/icu/dev/test/collator/CollationTestData.java
new file mode 100644
index 0000000..fb759f6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationTestData.java
@@ -0,0 +1,470 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/collator/Attic/CollationTestData.java,v $
+ * $Date: 2002/08/13 21:55:25 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.impl.ICUListResourceBundle;
+
+public class CollationTestData extends ICUListResourceBundle {
+
+    public CollationTestData() {
+          super.contents = data;
+    }
+    static final Object[][] data = new Object[][] { 
+                {
+                    "Info",
+                    new Object[][]{
+                        {
+                            "Description",
+                            "This is locale based collation test for Danish",
+                        },
+                        {
+                            "Headers",
+                            new String[] { 
+                                "sequence",
+
+                            },
+                        },
+                        {
+                            "LongDescription",
+                            "The following entries are separate tests " +
+                            "containing test data for various locales." +
+                            "Each entry has the following fields: Test" +
+                            "Locale - the locale that we should instan" +
+                            "tiate collator with.ArgumentStrength - st" +
+                            "rength of collatorTestData - set of test " +
+                            "cases, which are sequences of strings tha" +
+                            "t will be parsedSequences must not change" +
+                            " the sign of relation, i.e. we can only h" +
+                            "ave < and = or> and = in single sequence." +
+                            " Cannot mix < and > in the same sequence." +
+                            " Whitespace isis ignored unless quoted.",
+                        },
+                    },
+                },
+                {
+                    "TestData",
+                    new Object[][]{
+                        {
+                            "TestCIgnorableContraction",
+                            new Object[][]{
+                                {
+                                    "Cases",
+                                    new Object[]{
+                                        new Object[]{
+                                            new String[] { 
+                                                "njiva=n\uD834\uDD65ji" +
+                                                "va=n\uD834\uDD79jiva=" +
+                                                "n\u0000\u0000\u0000ji" +
+                                                "va=n\u0000jiva=n\uD800" +
+                                                "jiva=n\uFFFEjiva",
+                                                "ljubav=l\u0000jubav=l" +
+                                                "\uD834\uDD79jubav=l\u0000" +
+                                                "\u0000\u0000jubav=l\uD800" +
+                                                "jubav=l\uFFFEjubav=",
+                                                "Ljubav=L\u0000jubav=L" +
+                                                "\uD834\uDD79jubav=L\u0000" +
+                                                "\u0000\u0000jubav=L\uD800" +
+                                                "jubav=L\uFFFEjubav",
+                                            },
+
+                                        },
+
+                                    },
+                                },
+                                {
+                                    "Info",
+                                    new Object[][]{
+                                        {
+                                            "Description",
+                                            "Checks whether completely" +
+                                            " ignorable code points ar" +
+                                            "e skipped in contractions" +
+                                            ".",
+                                        },
+                                    },
+                                },
+                                {
+                                    "Settings",
+                                    new Object[]{
+                                        new Object[][]{
+                                            {
+                                                "TestLocale",
+                                                "sh",
+                                            },
+                                        },
+                                        new Object[][]{
+                                            {
+                                                "Rules",
+                                                "& L < lj, Lj <<< LJ& " +
+                                                "N < nj, Nj <<< NJ ",
+                                            },
+                                        },
+
+                                    },
+                                },
+                            },
+                        },
+                        {
+                            "TestCIgnorablePrefix",
+                            new Object[][]{
+                                {
+                                    "Cases",
+                                    new Object[]{
+                                        new Object[]{
+                                            new String[] { 
+                                                "\u30A1\u30FC= \u30A1\uDB40" +
+                                                "\uDC30\u30FC= \u30A1\uD800" +
+                                                "\u30FC= \u30A1\uFFFE\u30FC" +
+                                                "= \u30A1\uD834\uDD79\u30FC" 
+                                                /*
+                                                 * +
+                                                "= \u30A1\u0000\u0000\u0000" +
+                                                "\u30FC= \u30A1\u0000\u30FC" +
+                                                "= \u30A1\u30FC= \u30A1" +
+                                                "\u0000\u059A\u30FC= \u30A1" +
+                                                "\u30FC",
+                                                */
+                                            },
+
+                                        },
+
+                                    },
+                                },
+                                {
+                                    "Info",
+                                    new Object[][]{
+                                        {
+                                            "Description",
+                                            "Checks whether completely" +
+                                            " ignorable code points ar" +
+                                            "e skipped in prefix proce" +
+                                            "ssing.",
+                                        },
+                                    },
+                                },
+                                {
+                                    "Settings",
+                                    new Object[]{
+                                        new Object[][]{
+                                            {
+                                                "TestLocale",
+                                                "ja",
+                                            },
+                                        },
+
+                                    },
+                                },
+                            },
+                        },
+                        {
+                            "TestNShiftedIgnorable",
+                            new Object[][]{
+                                {
+                                    "Cases",
+                                    new Object[]{
+                                        new Object[]{
+                                            new String[] { 
+                                                "a' 'b<A' 'b<a' '\u0301" +
+                                                "b<A' '\u0301b<a' '\u0300" +
+                                                "b<A' '\u0300b<a_b<A_b" +
+                                                "<a_\u0301b<A_\u0301b<" +
+                                                "a_\u0300b<A_\u0300b<a" +
+                                                "\u0301b<A\u0301b<a\u0300" +
+                                                "b<A\u0300b<",
+
+                                            },
+
+                                        },
+
+                                    },
+                                },
+                                {
+                                    "Info",
+                                    new Object[][]{
+                                        {
+                                            "Description",
+                                            "New UCA states that prima" +
+                                            "ry ignorables should be c" +
+                                            "ompletely ignorable when " +
+                                            "following a shifted code " +
+                                            "point.",
+                                        },
+                                    },
+                                },
+                                {
+                                    "Settings",
+                                    new Object[]{
+                                        new Object[][]{
+                                            {
+                                                "Arguments",
+                                                "[alternate non-ignora" +
+                                                "ble][strength 3]",
+                                            },
+                                            {
+                                                "TestLocale",
+                                                "root",
+                                            },
+                                        },
+
+                                    },
+                                },
+                            },
+                        },
+                        {
+                            "TestSafeSurrogates",
+                            new Object[][]{
+                                {
+                                    "Cases",
+                                    new Object[]{
+                                        new Object[]{
+                                            new String[] { 
+                                                "a<x\uD800\uDC00b",
+
+                                            },
+
+                                        },
+
+                                    },
+                                },
+                                {
+                                    "Info",
+                                    new Object[][]{
+                                        {
+                                            "Description",
+                                            "It turned out that surrog" +
+                                            "ates were not skipped pro" +
+                                            "perly when iterating back" +
+                                            "wards if they were in the" +
+                                            " middle of a contraction." +
+                                            " This test assures that t" +
+                                            "his is fixed.",
+                                        },
+                                    },
+                                },
+                                {
+                                    "Settings",
+                                    new Object[]{
+                                        new Object[][]{
+                                            {
+                                                "Rules",
+                                                "&a < x\uD800\uDC00b",
+                                            },
+                                        },
+
+                                    },
+                                },
+                            },
+                        },
+                        {
+                            "TestShiftedIgnorable",
+                            new Object[][]{
+                                {
+                                    "Cases",
+                                    new Object[]{
+                                        new Object[]{
+                                            new String[] { 
+                                                "a' 'b=a' '\u0300b=a' " +
+                                                "'\u0301b<a_b=a_\u0300" +
+                                                "b=a_\u0301b<A' 'b=A' " +
+                                                "'\u0300b=A' '\u0301b<" +
+                                                "A_b=A_\u0300b=A_\u0301" +
+                                                "b<a\u0301b<A\u0301b<a" +
+                                                "\u0300b<A\u0300b",
+
+                                            },
+
+                                        },
+
+                                    },
+                                },
+                                {
+                                    "Info",
+                                    new Object[][]{
+                                        {
+                                            "Description",
+                                            "New UCA states that prima" +
+                                            "ry ignorables should be c" +
+                                            "ompletely ignorable when " +
+                                            "following a shifted code " +
+                                            "point.",
+                                        },
+                                    },
+                                },
+                                {
+                                    "Settings",
+                                    new Object[]{
+                                        new Object[][]{
+                                            {
+                                                "Arguments",
+                                                "[alternate shifted][s" +
+                                                "trength 4]",
+                                            },
+                                            {
+                                                "TestLocale",
+                                                "root",
+                                            },
+                                        },
+
+                                    },
+                                },
+                            },
+                        },
+                        {
+                            // "da_TestPrimary",
+                            "TestPrimary",
+                            new Object[][]{
+                                {
+                                    "Cases",
+                                    new Object[]{
+                                        new Object[]{
+                                            new String[] { 
+                                                "Lvi=Lwi",
+                                                "L\u00E4vi<L\u00F6wi",
+                                                "L\u00FCbeck=Lybeck",
+
+                                            },
+
+                                        },
+
+                                    },
+                                },
+                                {
+                                    "Info",
+                                    new Object[][]{
+                                        {
+                                            "Description",
+                                            "This test goes through pr" +
+                                            "imary strength cases",
+                                        },
+                                    },
+                                },
+                                {
+                                    "Settings",
+                                    new Object[]{
+                                        new Object[][]{
+                                            {
+                                                "Arguments",
+                                                "[strength 1]",
+                                            },
+                                            {
+                                                "TestLocale",
+                                                "da",
+                                            },
+                                        },
+
+                                    },
+                                },
+                            },
+                        },
+                        {
+                            // "da_TestTertiary",
+                            "TestTertiary",
+                            new Object[][]{
+                                {
+                                    "Cases",
+                                    new Object[]{
+                                        new Object[]{
+                                            new String[] { 
+                                                "Luc<luck",
+                                                "luck<L\u00FCbeck",
+                                                "L\u00FCbeck>lybeck",
+                                                "L\u00E4vi<L\u00F6we",
+                                                "L\u00F6ww<mast",
+                                                "A/S<ANDRE<ANDR\u00C9<" +
+                                                "ANDREAS<AS<CA<\u00C7A" +
+                                                "<CB<\u00C7C<D.S.B.<DA" +
+                                                "<DB<DSB<DSC<\u00D0A<\u00D0" +
+                                                "C<EKSTRA_ARBEJDE<EKST" +
+                                                "RABUD0<H\u00D8ST<HAAG" +
+                                                "<H\u00C5NDBOG<HAANDV\u00C6" +
+                                                "RKSBANKEN<karl<Karl<'" +
+                                                "NIELS J\u00D8RGEN'<NI" +
+                                                "ELS-J\u00D8RGEN<NIELS" +
+                                                "EN<'R\u00C9E, A'<'REE" +
+                                                ", B'<'R\u00C9E, L'<'R" +
+                                                "EE, V'<'SCHYTT, B'<'S" +
+                                                "CHYTT, H'<'SCH\u00DCT" +
+                                                "T, H'<'SCHYTT, L'<'SC" +
+                                                "H\u00DCTT, M'<SS<\u00DF" +
+                                                "<SSA<'STORE VILDMOSE'" +
+                                                "<STOREK\u00C6R0<'STOR" +
+                                                "M PETERSEN'<STORMLY<T" +
+                                                "HORVALD<THORVARDUR<TH" +
+                                                "YGESEN<\u00FEORVAR\u00D0" +
+                                                "UR<'VESTERG\u00C5RD, " +
+                                                "A'<'VESTERGAARD, A'<'" +
+                                                "VESTERG\u00C5RD, B'<\u00C6" +
+                                                "BLE<\u00C4BLE<\u00D8B" +
+                                                "ERG<\u00D6BERG",
+                                                "andere<chaque<chemin<" +
+                                                "cote<cot\u00E9<c\u00F4" +
+                                                "te<c\u00F4t\u00E9<\u010D" +
+                                                "u\u010D\u0113t<Czech<" +
+                                                "hi\u0161a<irdisch<lie" +
+                                                "<lire<llama<l\u00F5ug" +
+                                                "<l\u00F2za<lu\u010D<l" +
+                                                "uck<L\u00FCbeck<lye<l" +
+                                                "\u00E4vi<L\u00F6wen<m" +
+                                                "\u00E0\u0161ta<m\u00EE" +
+                                                "r<myndig<M\u00E4nner<" +
+                                                "m\u00F6chten<pi\u00F1" +
+                                                "a<pint<pylon<\u0161\u00E0" +
+                                                "ran<savoir<\u0160erb\u016B" +
+                                                "ra<Sietla<\u015Blub<s" +
+                                                "ubtle<symbol<s\u00E4m" +
+                                                "tlich<waffle<verkehrt" +
+                                                "<wood<vox<v\u00E4ga<y" +
+                                                "en<yuan<yucca<\u017Ea" +
+                                                "l<\u017Eena<\u017Den\u0113" +
+                                                "va<zoo0<Zviedrija<Z\u00FC" +
+                                                "rich<zysk0<\u00E4nder" +
+                                                "e",
+
+                                            },
+
+                                        },
+
+                                    },
+                                },
+                                {
+                                    "Info",
+                                    new Object[][]{
+                                        {
+                                            "Description",
+                                            "This test goes through te" +
+                                            "rtiary strength cases",
+                                        },
+                                    },
+                                },
+                                {
+                                    "Settings",
+                                    new Object[]{
+                                        new Object[][]{
+                                            {
+                                                "Arguments",
+                                                "[strength 3]",
+                                            },
+                                            {
+                                                "TestLocale",
+                                                "da",
+                                            },
+                                        },
+
+                                    },
+                                },
+                            },
+                        },
+                    },
+                },
+    };
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationThaiTest.java b/src/com/ibm/icu/dev/test/collator/CollationThaiTest.java
new file mode 100644
index 0000000..bfd8b86
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationThaiTest.java
@@ -0,0 +1,295 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : collate/CollationRegressionTest
+ * Source File: $ICU4CRoot/source/test/intltest/regcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+import java.io.*;
+
+public class CollationThaiTest extends TestFmwk {
+    
+    final int MAX_FAILURES_TO_SHOW = 8;
+    
+    public static void main(String[] args) throws Exception {
+        new CollationThaiTest().run(args);
+    }
+    
+    /**
+     * Odd corner conditions taken from "How to Sort Thai Without Rewriting Sort",
+     * by Doug Cooper, http://seasrc.th.net/paper/thaisort.zip
+     */
+    public void TestCornerCases() {
+        String TESTS[] = {
+            // Shorter words precede longer
+            "\u0e01",                               "<",    "\u0e01\u0e01",
+    
+            // Tone marks are considered after letters (i.e. are primary ignorable)
+            "\u0e01\u0e32",                        "<",    "\u0e01\u0e49\u0e32",
+    
+            // ditto for other over-marks
+            "\u0e01\u0e32",                        "<",    "\u0e01\u0e32\u0e4c",
+    
+            // commonly used mark-in-context order.
+            // In effect, marks are sorted after each syllable.
+            "\u0e01\u0e32\u0e01\u0e49\u0e32",   "<",    "\u0e01\u0e48\u0e32\u0e01\u0e49\u0e32",
+    
+            // Hyphens and other punctuation follow whitespace but come before letters
+            "\u0e01\u0e32",                        "<",    "\u0e01\u0e32-",
+            "\u0e01\u0e32-",                       "<",    "\u0e01\u0e32\u0e01\u0e32",
+    
+            // Doubler follows an indentical word without the doubler
+            "\u0e01\u0e32",                        "<",    "\u0e01\u0e32\u0e46",
+            "\u0e01\u0e32\u0e46",                 "<",    "\u0e01\u0e32\u0e01\u0e32",
+    
+            // \u0e45 after either \u0e24 or \u0e26 is treated as a single
+            // combining character, similar to "c < ch" in traditional spanish.
+            // TODO: beef up this case
+            "\u0e24\u0e29\u0e35",                 "<",    "\u0e24\u0e45\u0e29\u0e35",
+            "\u0e26\u0e29\u0e35",                 "<",    "\u0e26\u0e45\u0e29\u0e35",
+    
+            // Vowels reorder, should compare \u0e2d and \u0e34
+            "\u0e40\u0e01\u0e2d",                 "<",    "\u0e40\u0e01\u0e34",
+    
+            // Tones are compared after the rest of the word (e.g. primary ignorable)
+            "\u0e01\u0e32\u0e01\u0e48\u0e32",   "<",    "\u0e01\u0e49\u0e32\u0e01\u0e32",
+    
+            // Periods are ignored entirely
+            "\u0e01.\u0e01.",                      "<",    "\u0e01\u0e32",
+        };
+        
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance(new Locale("th", "TH", ""));
+        } catch (Exception e) {
+            errln("Error: could not construct Thai collator");
+            return;
+        }
+        compareArray(coll, TESTS); 
+    }
+    
+    void compareArray(Collator c, String[] tests) {
+        for (int i = 0; i < tests.length; i += 3) {
+            int expect = 0;
+            if (tests[i+1].equals("<")) {
+                expect = -1;
+            } else if (tests[i+1].equals(">")) {
+                expect = 1;
+            } else if (tests[i+1].equals("=")) {
+                expect = 0;
+            } else {
+                // expect = Integer.decode(tests[i+1]).intValue();
+                errln("Error: unknown operator " + tests[i+1]);
+                return;
+            }
+            String s1 = tests[i];
+            String s2 = tests[i+2];
+            int result = c.compare(s1, s2);
+            if (sign(result) != sign(expect)) {
+                errln("" + i/3 + ": compare(" + s1
+                      + " , " + s2  + ") got " + result + "; expected " + expect);
+    
+                CollationKey k1, k2;
+                try {
+                    k1 = c.getCollationKey(s1);
+                    k2 = c.getCollationKey(s2);
+                } catch (Exception e) {
+                    errln("Fail: getCollationKey returned ");
+                    return;
+                }
+                errln("  key1: " + prettify(k1));
+                errln("  key2: " + prettify(k2));
+            } else {
+                // Collator.compare worked OK; now try the collation keys
+                CollationKey k1, k2;
+                try {
+                    k1 = c.getCollationKey(s1);
+                    k2 = c.getCollationKey(s2);
+                } catch (Exception e) {
+                    //System.out.println(e);
+                    errln("Fail: getCollationKey returned ");
+                    return;
+                }
+    
+                result = k1.compareTo(k2);
+                if (sign(result) != sign(expect)) {
+                    errln("" + i/3 + ": key(" + s1
+                          + ").compareTo(key(" + s2
+                          + ")) got " + result + "; expected " + expect);
+                    
+                    errln("  " + prettify(k1) + " vs. " + prettify(k2));
+                }
+            }
+        }
+    }
+    
+    int sign(int i ) {
+        if (i < 0) return -1;
+        if (i > 0) return 1;
+        return 0;
+    }
+    
+    /**
+     * Read the external dictionary file, which is already in proper
+     * sorted order, and confirm that the collator compares each line as
+     * preceding the following line.
+     */
+    public void TestDictionary() {
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance(new Locale("th", "TH", ""));
+        } catch (Exception e) {
+            errln("Error: could not construct Thai collator");
+            return;
+        }
+     
+        // Read in a dictionary of Thai words
+               DataInputStream in = null;
+        String fileName = "th18057.txt";
+        try {
+            in = new DataInputStream(new FileInputStream(TestUtil.getDataFile(
+                                                                   fileName)));
+        } catch (Exception e) {
+            try {
+                in.close();
+            } catch (IOException ioe) {}
+            errln("Error: could not open test file: " + fileName);
+            return;        
+        }
+    
+        //
+        // Loop through each word in the dictionary and compare it to the previous
+        // word.  They should be in sorted order.
+        //
+        String lastWord = "";
+        int line = 0;
+        int failed = 0;
+        int wordCount = 0;
+        String word = readLine(in);
+        while (word != null) {
+            line++;
+    
+            // Skip comments and blank lines
+            if (word.length() == 0 || word.charAt(0) == 0x23) {
+                word = readLine(in);
+                continue;
+            }
+    
+            // Show the first 8 words being compared, so we can see what's happening
+            ++wordCount;
+            if (wordCount <= 8) {
+                logln("Word " + wordCount + ": " + word);
+            }
+    
+            if (lastWord.length() > 0) {
+                int result = 0;
+                try {
+                    result = coll.compare(lastWord, word);
+                } catch (Exception e) {
+                    logln("line" + line + ":" + word);
+                    logln("lastWord = " + lastWord);
+                    logln(e.getMessage());
+                }
+        
+                if (result >= 0) {
+                    failed++;
+                    if (MAX_FAILURES_TO_SHOW < 0 || failed <= MAX_FAILURES_TO_SHOW) {
+                        String msg = "--------------------------------------------\n"
+                                    + line
+                                    + " compare(" + lastWord
+                                    + ", " + word + ") returned " + result
+                                    + ", expected -1\n";
+                        CollationKey k1, k2;
+                        try {
+                            k1 = coll.getCollationKey(lastWord);
+                            k2 = coll.getCollationKey(word);
+                        } catch (Exception e) {
+                            errln("Fail: getCollationKey returned ");
+                            return;
+                        }
+                        msg += "key1: " + prettify(k1) + "\n"
+                                    + "key2: " + prettify(k2);
+                        errln(msg);
+                    }
+                }
+            }
+            lastWord = word;
+            word = readLine(in);
+        }
+    
+        if (failed != 0) {
+            if (failed > MAX_FAILURES_TO_SHOW) {
+                errln("Too many failures; only the first " +
+                      MAX_FAILURES_TO_SHOW + " failures were shown");
+            }
+            errln("Summary: " + failed + " of " + (line - 1) +
+                  " comparisons failed");
+        }
+    
+        logln("Words checked: " + wordCount);
+    }
+    
+    String readLine(DataInputStream in) {
+        byte[] bytes = new byte[128];
+        int i = 0;
+        byte c = 0;
+        while (i < 128) {
+            try {
+                c = in.readByte();
+            } catch (EOFException ee) {
+                return null;
+            } catch (IOException e) {
+                errln("Cannot read line from the file");
+                return null;
+            }
+            if (c == 0xD || c == 0xA) {
+                try {
+                    c = in.readByte();
+                } catch (EOFException ee) {
+                    return null;
+                } catch (IOException e) {
+                    errln("Cannot read line from the file");
+                    return null;
+                }
+                break;
+            }
+            bytes[i++] = c;
+        }
+        
+        String line = null;
+        try {
+            line = new String(bytes, 0, i, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            System.out.println(e);
+        }
+        return line;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationTurkishTest.java b/src/com/ibm/icu/dev/test/collator/CollationTurkishTest.java
new file mode 100644
index 0000000..eeea76f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationTurkishTest.java
@@ -0,0 +1,195 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationTurkishTest
+ * Source File: $ICU4CRoot/source/test/intltest/trcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class CollationTurkishTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new CollationTurkishTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x73, 0x0327},
+        {0x76, 0x00E4, 0x74},
+        {0x6f, 0x6c, 0x64},
+        {0x00FC, 0x6f, 0x69, 0x64},
+        {0x68, 0x011E, 0x61, 0x6c, 0x74},
+        {0x73, 0x74, 0x72, 0x65, 0x73, 0x015E},
+        {0x76, 0x6f, 0x0131, 0x64},
+        {0x69, 0x64, 0x65, 0x61},
+        {0x00FC, 0x6f, 0x69, 0x64},
+        {0x76, 0x6f, 0x0131, 0x64},
+        {0x69, 0x64, 0x65, 0x61}
+    };
+
+    private static char[][] testTargetCases = {
+        {0x75, 0x0308},
+        {0x76, 0x62, 0x74},
+        {0x00D6, 0x61, 0x79},
+        {0x76, 0x6f, 0x69, 0x64},
+        {0x68, 0x61, 0x6c, 0x74},
+        {0x015E, 0x74, 0x72, 0x65, 0x015E, 0x73},
+        {0x76, 0x6f, 0x69, 0x64},
+        {0x49, 0x64, 0x65, 0x61},
+        {0x76, 0x6f, 0x69, 0x64},
+        {0x76, 0x6f, 0x69, 0x64},
+        {0x49, 0x64, 0x65, 0x61}
+    };
+
+    private static int[] results = {
+        -1,
+        -1,
+        -1,
+        -1,
+        1,
+        -1,
+        -1,
+        1,
+    // test priamry > 8
+        -1,
+        -1,
+        1
+    };
+    
+    private Collator myCollation = null;
+    
+    public CollationTurkishTest() {
+        try {
+            myCollation = Collator.getInstance(new Locale("tr", ""));
+        } catch (Exception e) {
+            errln("ERROR: in creation of collator of TURKISH locale");
+            return;
+        }
+    }
+    
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < 8 ; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+    
+    public void TestPrimary() {
+        int i;
+        myCollation.setStrength(Collator.PRIMARY);
+        for (i = 8; i < 11; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+    
+    
+    // main test routine, tests rules specific to turkish locale
+    private void doTest(char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+        
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target) {
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/G7CollationTest.java b/src/com/ibm/icu/dev/test/collator/G7CollationTest.java
new file mode 100644
index 0000000..5052b0c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/G7CollationTest.java
@@ -0,0 +1,292 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/G7CollationTest
+ * Source File: $ICU4CRoot/source/test/intltest/g7coll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class G7CollationTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new G7CollationTest().run(args);
+        // new G7CollationTest().TestDemo3();
+    }
+    
+    private static String[] testCases = {
+        "blackbirds", "Pat", "p\u00E9ch\u00E9", "p\u00EAche", "p\u00E9cher",            
+        "p\u00EAcher", "Tod", "T\u00F6ne", "Tofu", "blackbird", "Ton", 
+        "PAT", "black-bird", "black-birds", "pat", // 14
+        // Additional tests
+        "czar", "churo", "cat", "darn", "?",                                                                                /* 19 */
+        "quick", "#", "&", "a-rdvark", "aardvark",                                                        /* 23 */
+        "abbot", "co-p", "cop", "coop", "zebra"
+    };
+
+    private static int[][] results = {
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* en_US */
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* en_GB */
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* en_CA */
+        { 12, 13, 9, 0, 14, 1, 11, 3, 2, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* fr_FR */
+        { 12, 13, 9, 0, 14, 1, 11, 3, 2, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* fr_CA */
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* de_DE */
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* it_IT */
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* ja_JP */
+        /* new table collation with rules "& Z < p, P"  loop to FIXEDTESTSET */
+        { 12, 13, 9, 0, 6, 8, 10, 7, 14, 1, 11, 2, 3, 4, 5, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, 
+        /* new table collation with rules "& C < ch , cH, Ch, CH " loop to TOTALTESTSET */
+        { 19, 22, 21, 23, 24, 25, 12, 13, 9, 0, 17, 26, 28, 27, 15, 16, 18, 14, 1, 11, 2, 3, 4, 5, 20, 6, 8, 10, 7, 29 },
+        /* new table collation with rules "& Question-mark ; ? & Hash-mark ; # & Ampersand ; '&'  " loop to TOTALTESTSET */
+        { 23, 24, 25, 22, 12, 13, 9, 0, 17, 16, 26, 28, 27, 15, 18, 21, 14, 1, 11, 2, 3, 4, 5, 19, 20, 6, 8, 10, 7, 29 },
+        /* analogous to Japanese rules " & aa ; a- & ee ; e- & ii ; i- & oo ; o- & uu ; u- " */  /* loop to TOTALTESTSET */
+        { 19, 22, 21, 24, 23, 25, 12, 13, 9, 0, 17, 16, 28, 26, 27, 15, 18, 14, 1, 11, 2, 3, 4, 5, 20, 6, 8, 10, 7, 29 }
+    };
+    
+    private static final int MAX_TOKEN_LEN = 16;
+    private static final int TESTLOCALES = 12;
+    private static final int FIXEDTESTSET = 15;
+    private static final int TOTALTESTSET = 30;
+    
+    // perform test with added rules " & Z < p, P"
+    public void TestDemo1() {
+        logln("Demo Test 1 : Create a new table collation with rules \"& Z < p, P\"");
+        
+        Collator col;
+        try {
+            col = Collator.getInstance(Locale.ENGLISH);    
+        } catch (Exception e) {
+            errln("ERROR: in creation of collator of ENGLISH locale");
+            return;
+        }
+        
+        String baseRules = ((RuleBasedCollator)col).getRules();
+        String newRules = " & Z < p, P";
+        newRules = baseRules + newRules; 
+        RuleBasedCollator myCollation = null; 
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        } catch(Exception e) {
+            errln("Fail to create RuleBasedCollator with rules:" + newRules);
+            return;
+        }
+        
+        if (myCollation == null) {
+            errln("Demo Test 2 Table Collation object creation failed.");
+            return;
+        }
+        
+        int j, n;
+        for (j = 0; j < FIXEDTESTSET; j++) {
+            for (n = j+1; n < FIXEDTESTSET; n++) {
+                doTest(myCollation, testCases[results[8][j]], testCases[results[8][n]], -1);
+            }
+        }
+    }
+    
+
+    // perorm test with added rules "& C < ch , cH, Ch, CH"
+    public void TestDemo2() {
+        logln("Demo Test 2 : Create a new table collation with rules \"& C < ch , cH, Ch, CH\"");
+        Collator col;
+        try {
+            col = Collator.getInstance(Locale.ENGLISH);    
+        } catch (Exception e) {
+            errln("ERROR: in creation of collator of ENGLISH locale");
+            return;
+        }
+
+        String baseRules = ((RuleBasedCollator)col).getRules();
+        String newRules = "& C < ch , cH, Ch, CH";
+        newRules = baseRules + newRules; 
+        RuleBasedCollator myCollation = null; 
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        }catch(Exception e){
+            errln("Fail to create RuleBasedCollator with rules:" + newRules);
+            return;
+        }  
+
+        int j, n;
+        for (j = 0; j < TOTALTESTSET; j++) {
+            for (n = j+1; n < TOTALTESTSET; n++) {
+                doTest(myCollation, testCases[results[9][j]], testCases[results[9][n]], -1);
+            }
+        }
+    }
+    
+
+    // perform test with added rules 
+    // "& Question'-'mark ; '?' & Hash'-'mark ; '#' & Ampersand ; '&'"
+    public void TestDemo3() {
+        // logln("Demo Test 3 : Create a new table collation with rules \"& Question'-'mark ; '?' & Hash'-'mark ; '#' & Ampersand ; '&'\"");
+        Collator col;
+        try {
+            col = Collator.getInstance(Locale.ENGLISH);    
+        } catch (Exception e) {
+            errln("ERROR: in creation of collator of ENGLISH locale");
+            return;
+        }
+        
+        String baseRules = ((RuleBasedCollator)col).getRules();
+        String newRules = "& Question'-'mark ; '?' & Hash'-'mark ; '#' & Ampersand ; '&'";
+        newRules = baseRules + newRules;
+        RuleBasedCollator myCollation = null; 
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        }catch(Exception e){
+            errln("Fail to create RuleBasedCollator with rules:" + newRules);
+            return;
+        }  
+
+        int j, n;
+        for (j = 0; j < TOTALTESTSET; j++) {
+            for (n = j+1; n < TOTALTESTSET; n++) {
+                doTest(myCollation, testCases[results[10][j]], testCases[results[10][n]], -1);
+            }
+        }
+    }
+    
+
+    // perform test with added rules 
+    // " & aa ; a'-' & ee ; e'-' & ii ; i'-' & oo ; o'-' & uu ; u'-' "
+    public void TestDemo4() {
+        logln("Demo Test 4 : Create a new table collation with rules \" & aa ; a'-' & ee ; e'-' & ii ; i'-' & oo ; o'-' & uu ; u'-' \"");
+        Collator col;
+        try {
+            col = Collator.getInstance(Locale.ENGLISH);    
+        } catch (Exception e) {
+            errln("ERROR: in creation of collator of ENGLISH locale");
+            return;
+        }
+        String baseRules = ((RuleBasedCollator)col).getRules();
+        String newRules = " & aa ; a'-' & ee ; e'-' & ii ; i'-' & oo ; o'-' & uu ; u'-' ";
+        newRules = baseRules + newRules;
+        RuleBasedCollator myCollation = null; 
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        }catch(Exception e){
+            errln("Fail to create RuleBasedCollator with rules:" + newRules);
+            return;
+        }  
+
+        int j, n;
+        for (j = 0; j < TOTALTESTSET; j++) {
+            for (n = j+1; n < TOTALTESTSET; n++) {
+                doTest(myCollation, testCases[results[11][j]], testCases[results[11][n]], -1);
+            }
+        }
+    }
+    
+    
+    
+    
+    // main test routine, tests comparisons for a set of strings against sets of expected results
+    private void doTest(Collator myCollation, String source, String target, 
+                        int result){
+        
+        int compareResult = myCollation.compare(source, target);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(source);
+        sortKey2 = myCollation.getCollationKey(target);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(source, target, sortKey1, sortKey2, compareResult, 
+                      keyResult, compareResult, result);
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()){
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+   String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/LotusCollationKoreanTest.java b/src/com/ibm/icu/dev/test/collator/LotusCollationKoreanTest.java
new file mode 100644
index 0000000..53e9bb1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/LotusCollationKoreanTest.java
@@ -0,0 +1,156 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/LotusCollationKoreanTest
+ * Source File: $ICU4CRoot/source/test/intltest/lcukocol.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class LotusCollationKoreanTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new LotusCollationKoreanTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0xac00}
+    };
+    
+    private static char[][] testTargetCases = {
+        {0xac01}
+    };
+    
+    private static int[] results = {
+        -1
+    };
+    
+    private Collator myCollation;
+    
+    public LotusCollationKoreanTest() {
+        try {
+            myCollation = Collator.getInstance(Locale.KOREAN);
+        } catch (Exception e) {
+            errln("ERROR: in creation of collator of KOREAN locale");
+            return;
+        }
+        myCollation.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+    }
+    
+    // performs test with strength TERIARY
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < 1; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+            }
+        }
+    
+    // main test routine, tests rules specific to "Korean" locale
+    private void doTest( char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult( s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result ); 
+    }
+
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/compression/DecompressionTest.java b/src/com/ibm/icu/dev/test/compression/DecompressionTest.java
new file mode 100755
index 0000000..65d14b3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/compression/DecompressionTest.java
@@ -0,0 +1,130 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/compression/DecompressionTest.java,v $ 
+ * $Date: 2002/02/16 03:05:07 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.compression;
+
+import com.ibm.icu.text.UnicodeCompressor;
+import com.ibm.icu.text.UnicodeDecompressor;
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class DecompressionTest extends TestFmwk {
+	public static void main(String[] args) throws Exception {
+		new DecompressionTest().run(args);
+	}
+
+    /** Print out a segment of a character array, if in verbose mode */
+    private void log(char [] chars, int start, int count) {
+        log("|");
+        for(int i = start; i < start + count; ++i) {
+            log(String.valueOf(chars[i]));
+        }
+        log("|");
+    }
+
+    /** Print out a segment of a character array, followed by a newline */
+    private void logln(char [] chars, int start, int count)
+    {
+        log(chars, start, count);
+        logln("");
+    }
+
+    /** Decompress the two segments */
+    private String decompressTest(byte [] segment1, byte [] segment2) {
+        StringBuffer s = new StringBuffer();
+        UnicodeDecompressor myDecompressor = new UnicodeDecompressor();
+
+        int [] bytesRead = new int[1];
+        char [] charBuffer = new char [2*(segment1.length + segment2.length)];
+        int count1 = 0, count2 = 0;
+
+        count1 = myDecompressor.decompress(segment1, 0, segment1.length,
+                                           bytesRead,
+                                           charBuffer, 0, charBuffer.length);
+        
+        logln("Segment 1 (" + segment1.length + " bytes) " +
+                "decompressed into " + count1  + " chars");
+        logln("Bytes consumed: " + bytesRead[0]);
+
+        logln("Got chars: ");
+        logln(charBuffer, 0, count1);
+        s.append(charBuffer, 0, count1);
+
+        count2 = myDecompressor.decompress(segment2, 0, segment2.length,
+                                           bytesRead,
+                                           charBuffer, count1, 
+                                           charBuffer.length);
+        
+        logln("Segment 2 (" + segment2.length + " bytes) " +
+                "decompressed into " + count2  + " chars");
+        logln("Bytes consumed: " + bytesRead[0]);
+
+        logln("Got chars: ");
+        logln(charBuffer, count1, count2);
+        
+        s.append(charBuffer, count1, count2);
+
+        logln("Result: ");
+        logln(charBuffer, 0, count1 + count2);
+        logln("====================");
+
+        return s.toString();
+    }
+
+
+    public void testDecompression() throws Exception {
+        String result;
+
+        // compressed segment breaking on a define window sequence
+        /*                   B     o     o     t     h     SD1  */
+        byte [] segment1 = { 0x42, 0x6f, 0x6f, 0x74, 0x68, 0x19 };
+
+        // continuation
+        /*                   IDX   ,           S     .          */
+        byte [] segment2 = { 0x01, 0x2c, 0x20, 0x53, 0x2e };
+        
+        result = decompressTest(segment1, segment2);
+        if(! result.equals("Booth, S.")) {
+        	errln("Decompression test failed");
+        	return;
+		}
+
+        // compressed segment breaking on a quote unicode sequence
+        /*                   B     o     o     t     SQU        */
+        byte [] segment3 = { 0x42, 0x6f, 0x6f, 0x74, 0x0e, 0x00 };
+
+        // continuation
+        /*                   h     ,           S     .          */
+        byte [] segment4 = { 0x68, 0x2c, 0x20, 0x53, 0x2e };
+
+        result = decompressTest(segment3, segment4);
+        if(! result.equals("Booth, S.")) {
+        	errln("Decompression test failed");
+        	return;
+		}
+
+
+        // compressed segment breaking on a quote unicode sequence
+        /*                   SCU   UQU                         */
+        byte [] segment5 = { 0x0f, (byte)0xf0, 0x00 };
+
+        // continuation
+        /*                   B                                 */
+        byte [] segment6 = { 0x42 };
+
+        result = decompressTest(segment5, segment6);
+        if(! result.equals("B")) {
+        	errln("Decompression test failed");
+        	return;
+		}
+    }
+
+};
diff --git a/src/com/ibm/icu/dev/test/compression/ExhaustiveTest.java b/src/com/ibm/icu/dev/test/compression/ExhaustiveTest.java
new file mode 100755
index 0000000..729a800
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/compression/ExhaustiveTest.java
@@ -0,0 +1,529 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/compression/ExhaustiveTest.java,v $ 
+ * $Date: 2002/02/16 03:05:07 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.compression;
+
+import com.ibm.icu.text.UnicodeCompressor;
+import com.ibm.icu.text.UnicodeDecompressor;
+import java.util.Random;
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class ExhaustiveTest extends TestFmwk {
+	public static void main(String args[]) throws Exception {
+		new ExhaustiveTest().run(args);
+	}
+
+    /** Test simple compress/decompress API, returning # of errors */
+	public void testSimple() throws Exception {
+        for(int i = 0; i < fTestCases.length; i++) {
+            simpleTest(fTestCases[i]);
+        }
+	}
+    private void simpleTest(String s) throws Exception {
+        byte [] compressed = UnicodeCompressor.compress(s);
+        String res = UnicodeDecompressor.decompress(compressed);
+        if (logDiffs(s.toCharArray(), s.length(), 
+                res.toCharArray(), res.length()) == false) {
+            logln(s.length() + " chars ===> " 
+                    + compressed.length + " bytes ===> " 
+                    + res.length() + " chars");
+        } else {
+            logln("Compressed:");
+            printBytes(compressed, compressed.length);
+            errln("testSimple did not compress correctly");
+        }
+    }
+
+    /** Test iterative compress/decompress API, returning # of errors */
+    public void testIterative() throws Exception {
+        for(int i = 0; i < fTestCases.length; i++) {
+            myTest(fTestCases[i].toCharArray(), fTestCases[i].length());
+        }
+    }
+    private void myTest(char[] chars, int len) {
+        UnicodeCompressor myCompressor = new UnicodeCompressor();
+        UnicodeDecompressor myDecompressor = new UnicodeDecompressor();
+        
+        // variables for my compressor
+        int myByteCount = 0;
+        int myCharCount = 0;
+        int myCompressedSize = Math.max(512, 3*len);
+        byte[] myCompressed = new byte[myCompressedSize];
+        int myDecompressedSize = Math.max(2, 2 * len);
+        char[] myDecompressed = new char[myDecompressedSize];
+        int[] unicharsRead = new int[1];
+        int[] bytesRead = new int[1];
+        
+        myByteCount = myCompressor.compress(chars, 0, len, unicharsRead,
+                myCompressed, 0, myCompressedSize);
+
+        myCharCount = myDecompressor.decompress(myCompressed, 0, myByteCount,
+                bytesRead, myDecompressed, 0, myDecompressedSize);
+
+        if (logDiffs(chars, len, myDecompressed, myCharCount) == false) {
+            logln(len + " chars ===> " 
+                    + myByteCount + " bytes ===> " 
+                    + myCharCount + " chars");
+        } else {
+            logln("Compressed:");
+            printBytes(myCompressed, myByteCount);
+            errln("Iterative test failed");
+        }
+    }
+
+    /** Test iterative compress/decompress API */
+    public void testMultipass() throws Exception {
+        for(int i = 0; i < fTestCases.length; i++) {
+            myMultipassTest(fTestCases[i].toCharArray(), fTestCases[i].length());
+        }
+    }
+    private void myMultipassTest(char [] chars, int len) throws Exception {
+        UnicodeCompressor myCompressor = new UnicodeCompressor();
+        UnicodeDecompressor myDecompressor = new UnicodeDecompressor();
+        
+        // variables for my compressor
+        
+        // for looping
+        int byteBufferSize = 4;//Math.max(4, len / 4);
+        byte[] byteBuffer = new byte [byteBufferSize];
+        // real target
+        int compressedSize = Math.max(512, 3 * len);
+        byte[] compressed = new byte[compressedSize];
+
+        // for looping
+        int unicharBufferSize = 2;//byteBufferSize;
+        char[] unicharBuffer = new char[unicharBufferSize];
+        // real target
+        int decompressedSize = Math.max(2, 2 * len);
+        char[] decompressed = new char[decompressedSize];
+
+        int bytesWritten = 0;
+        int unicharsWritten = 0;
+
+        int[] unicharsRead = new int[1];
+        int[] bytesRead = new int[1];
+        
+        int totalCharsCompressed = 0;
+        int totalBytesWritten = 0;
+
+        int totalBytesDecompressed  = 0;
+        int totalCharsWritten = 0;
+
+        // not used boolean err = false;
+
+
+        // perform the compression in a loop
+        do {
+            
+            // do the compression
+            bytesWritten = myCompressor.compress(chars, totalCharsCompressed, 
+                   len, unicharsRead, byteBuffer, 0, byteBufferSize);
+
+            // copy the current set of bytes into the target buffer
+            System.arraycopy(byteBuffer, 0, compressed, 
+                   totalBytesWritten, bytesWritten);
+            
+            // update the no. of characters compressed
+            totalCharsCompressed += unicharsRead[0];
+            
+            // update the no. of bytes written
+            totalBytesWritten += bytesWritten;
+            
+            /*System.out.logln("Compression pass complete.  Compressed "
+                               + unicharsRead[0] + " chars into "
+                               + bytesWritten + " bytes.");*/
+        } while(totalCharsCompressed < len);
+
+        if (totalCharsCompressed != len) {
+            errln("ERROR: Number of characters compressed("
+                    + totalCharsCompressed + ") != len(" + len + ")");
+        } else {
+            logln("MP: " + len + " chars ===> " + totalBytesWritten + " bytes.");
+        }
+        
+        // perform the decompression in a loop
+        do {
+            
+            // do the decompression
+            unicharsWritten = myDecompressor.decompress(compressed, 
+                    totalBytesDecompressed, totalBytesWritten, 
+                    bytesRead, unicharBuffer, 0, unicharBufferSize);
+
+            // copy the current set of chars into the target buffer
+            System.arraycopy(unicharBuffer, 0, decompressed, 
+                    totalCharsWritten, unicharsWritten);
+            
+            // update the no. of bytes decompressed
+            totalBytesDecompressed += bytesRead[0];
+            
+            // update the no. of chars written
+            totalCharsWritten += unicharsWritten;
+            
+            /*System.out.logln("Decompression pass complete.  Decompressed "
+                               + bytesRead[0] + " bytes into "
+                               + unicharsWritten + " chars.");*/
+        } while (totalBytesDecompressed < totalBytesWritten);
+
+        if (totalBytesDecompressed != totalBytesWritten) {
+            errln("ERROR: Number of bytes decompressed(" 
+                    + totalBytesDecompressed 
+                    + ") != totalBytesWritten(" 
+                    + totalBytesWritten + ")");
+        } else {
+            logln("MP: " + totalBytesWritten
+                    + " bytes ===> " + totalCharsWritten + " chars.");
+        }
+        
+        if (logDiffs(chars, len, decompressed, totalCharsWritten)) {
+            errln("ERROR: buffer contents incorrect");
+        }
+    }
+
+    /** Print differences between two character buffers */
+    private boolean logDiffs(char[] s1, int s1len, char[] s2, int s2len) {
+        boolean result  = false;
+        
+        if(s1len != s2len) {
+            logln("====================");
+            logln("Length doesn't match: expected " + s1len
+                               + ", got " + s2len);
+            logln("Expected:");
+            printChars(s1, s1len);
+            logln("Got:");
+            printChars(s2, s2len);
+            result = true;
+        }
+        
+        int len = Math.min(s1len, s2len);
+        for(int i = 0; i < len; ++i) {
+            if(s1[i] != s2[i]) {
+                if(result == false) {
+                    logln("====================");
+                }
+                logln("First difference at char " + i);
+                logln("Exp. char: " + Integer.toHexString(s1[i]));
+                logln("Got char : " + Integer.toHexString(s2[i]));
+                logln("Expected:");
+                printChars(s1, s1len);
+                logln("Got:");
+                printChars(s2, s2len);
+                result = true;
+                break;
+            }
+        }
+    
+        return result;
+    }
+
+    // generate a string of characters, with simulated runs of characters
+    private static char[] randomChars(int len, Random random) {
+        char[] result = new char [len];
+        int runLen = 0;
+        int used = 0;
+        
+        while(used < len) {
+            runLen = (int) (30 * random.nextDouble());
+            if(used + runLen >= len) {
+                runLen = len - used;
+            }
+            randomRun(result, used, runLen, random);
+            used += runLen;
+        }
+    
+        return result;
+    }
+
+    // generate a run of characters in a "window"
+    private static void randomRun(char[] target, int pos, int len, Random random) {
+        int offset = (int) (0xFFFF * random.nextDouble());
+
+        // don't overflow 16 bits
+        if(offset > 0xFF80) {
+            offset = 0xFF80;
+        }
+
+        for(int i = pos; i < pos + len; i++) {
+            target[i] = (char)(offset + (0x7F * random.nextDouble()));
+        }
+    }
+
+    private static final String [] fTestCases = {
+        "Hello \u9292 \u9192 World!",
+        "Hell\u0429o \u9292 \u9192 W\u0084rld!",
+        "Hell\u0429o \u9292 \u9292W\u0084rld!",
+
+        "\u0648\u06c8", // catch missing reset
+        "\u0648\u06c8",
+
+        "\u4444\uE001", // lowest quotable
+        "\u4444\uf2FF", // highest quotable
+        "\u4444\uf188\u4444",
+        "\u4444\uf188\uf288",
+        "\u4444\uf188abc\0429\uf288",
+        "\u9292\u2222",
+        "Hell\u0429\u04230o \u9292 \u9292W\u0084\u0192rld!",
+        "Hell\u0429o \u9292 \u9292W\u0084rld!",
+        "Hello World!123456",
+        "Hello W\u0081\u011f\u0082!", // Latin 1 run
+
+        "abc\u0301\u0302",  // uses SQn for u301 u302
+        "abc\u4411d",      // uses SQU
+        "abc\u4411\u4412d",// uses SCU
+        "abc\u0401\u0402\u047f\u00a5\u0405", // uses SQn for ua5
+        "\u9191\u9191\u3041\u9191\u3041\u3041\u3000", // SJIS like data
+        "\u9292\u2222",
+        "\u9191\u9191\u3041\u9191\u3041\u3041\u3000",
+        "\u9999\u3051\u300c\u9999\u9999\u3060\u9999\u3065\u3065\u3065\u300c",
+        "\u3000\u266a\u30ea\u30f3\u30b4\u53ef\u611b\u3044\u3084\u53ef\u611b\u3044\u3084\u30ea\u30f3\u30b4\u3002",
+
+        "", // empty input
+        "\u0000", // smallest BMP character
+        "\uFFFF", // largest BMP character
+
+        "\ud800\udc00", // smallest surrogate
+        "\ud8ff\udcff", // largest surrogate pair
+        
+        // regression tests
+        "\u6441\ub413\ua733\uf8fe\ueedb\u587f\u195f\u4899\uf23d\u49fd\u0aac\u5792\ufc22\ufc3c\ufc46\u00aa",
+        "\u30f9\u8321\u05e5\u181c\ud72b\u2019\u99c9\u2f2f\uc10c\u82e1\u2c4d\u1ebc\u6013\u66dc\ubbde\u94a5\u4726\u74af\u3083\u55b9\u000c",
+        "\u0041\u00df\u0401\u015f",
+        "\u9066\u2123abc",
+        "\ud266\u43d7\\\ue386\uc9c0\u4a6b\u9222\u901f\u7410\ua63f\u539b\u9596\u482e\u9d47\ucfe4\u7b71\uc280\uf26a\u982f\u862a\u4edd\uf513\ufda6\u869d\u2ee0\ua216\u3ff6\u3c70\u89c0\u9576\ud5ec\ubfda\u6cca\u5bb3\ubcea\u554c\u914e\ufa4a\uede3\u2990\ud2f5\u2729\u5141\u0f26\uccd8\u5413\ud196\ubbe2\u51b9\u9b48\u0dc8\u2195\u21a2\u21e9\u00e4\u9d92\u0bc0\u06c5",
+        "\uf95b\u2458\u2468\u0e20\uf51b\ue36e\ubfc1\u0080\u02dd\uf1b5\u0cf3\u6059\u7489"
+
+    };
+
+    //==========================
+    // Compression modes
+    //==========================
+    private final static int SINGLEBYTEMODE                 = 0;
+    private final static int UNICODEMODE                        = 1;
+    
+    //==========================
+    // Single-byte mode tags
+    //==========================
+    private final static int SDEFINEX                   = 0x0B;
+    private final static int SRESERVED                  = 0x0C;             // this is a reserved value
+    private final static int SQUOTEU                    = 0x0E;
+    private final static int SSWITCHU                   = 0x0F;
+
+        private final static int SQUOTE0                        = 0x01;
+        private final static int SQUOTE1                        = 0x02;
+        private final static int SQUOTE2                        = 0x03;
+        private final static int SQUOTE3                        = 0x04;
+        private final static int SQUOTE4                        = 0x05;
+        private final static int SQUOTE5                        = 0x06;
+        private final static int SQUOTE6                            = 0x07;
+        private final static int SQUOTE7                        = 0x08;
+
+        private final static int SSWITCH0                       = 0x10;
+        private final static int SSWITCH1                       = 0x11;
+        private final static int SSWITCH2                       = 0x12;
+        private final static int SSWITCH3                       = 0x13;
+        private final static int SSWITCH4                       = 0x14;
+        private final static int SSWITCH5                       = 0x15;
+        private final static int SSWITCH6                       = 0x16;
+        private final static int SSWITCH7                       = 0x17;
+
+        private final static int SDEFINE0                       = 0x18;
+        private final static int SDEFINE1                       = 0x19;
+        private final static int SDEFINE2                       = 0x1A;
+        private final static int SDEFINE3                       = 0x1B;
+        private final static int SDEFINE4                       = 0x1C;
+        private final static int SDEFINE5                       = 0x1D;
+        private final static int SDEFINE6                       = 0x1E;
+        private final static int SDEFINE7                       = 0x1F;
+
+        //==========================
+        // Unicode mode tags
+        //==========================
+        private final static int USWITCH0                       = 0xE0;
+        private final static int USWITCH1                       = 0xE1;
+        private final static int USWITCH2                       = 0xE2;
+        private final static int USWITCH3                       = 0xE3;
+        private final static int USWITCH4                       = 0xE4;
+        private final static int USWITCH5                       = 0xE5;
+        private final static int USWITCH6                       = 0xE6;
+        private final static int USWITCH7                       = 0xE7;
+
+        private final static int UDEFINE0                       = 0xE8;
+        private final static int UDEFINE1                       = 0xE9;
+        private final static int UDEFINE2                       = 0xEA;
+        private final static int UDEFINE3                       = 0xEB;
+        private final static int UDEFINE4                       = 0xEC;
+        private final static int UDEFINE5                       = 0xED;
+        private final static int UDEFINE6                       = 0xEE;
+        private final static int UDEFINE7                       = 0xEF;
+
+        private final static int UQUOTEU                        = 0xF0;
+        private final static int UDEFINEX                       = 0xF1;
+        private final static int URESERVED                      = 0xF2;         // this is a reserved value
+
+    /* Print out an array of characters, with non-printables (for me) 
+       displayed as hex values */
+    private void printChars(char[] chars, int len) {
+        for(int i = 0; i < len; i++) {
+            int c = (int)chars[i];
+            if(c < 0x0020 || c >= 0x7f) {
+                log("[0x");
+                log(Integer.toHexString(c));
+                log("]");
+            } else {
+                log(String.valueOf((char)c));
+            }
+        }
+        logln("");
+    }
+
+    private void printBytes(byte[] byteBuffer, int len) {
+        int curByteIndex = 0;
+        int byteBufferLimit = len;
+        int mode = SINGLEBYTEMODE;
+        int aByte = 0x00;
+        
+        if(len > byteBuffer.length) {
+            logln("Warning: printBytes called with length too large. Truncating");
+            byteBufferLimit = byteBuffer.length;;
+        }
+        
+        while(curByteIndex < byteBufferLimit) {
+            switch(mode) {  
+            case SINGLEBYTEMODE:
+                while(curByteIndex < byteBufferLimit 
+                      && mode == SINGLEBYTEMODE)  {
+                    aByte = ((int)byteBuffer[curByteIndex++]) & 0xFF;
+                    switch(aByte) {
+                    default:
+                        log(Integer.toHexString(((int) aByte) & 0xFF) + " ");
+                        break;
+                        // quote unicode
+                    case SQUOTEU:
+                        log("SQUOTEU ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                        // switch to Unicode mode
+                    case SSWITCHU:
+                        log("SSWITCHU ");
+                        mode = UNICODEMODE;
+                        break;
+                        
+                        // handle all quote tags
+                    case SQUOTE0: case SQUOTE1: case SQUOTE2: case SQUOTE3:
+                    case SQUOTE4: case SQUOTE5: case SQUOTE6: case SQUOTE7:
+                        log("SQUOTE" + (aByte - SQUOTE0) + " ");
+                        if(curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                        // handle all switch tags
+                    case SSWITCH0: case SSWITCH1: case SSWITCH2: case SSWITCH3:
+                    case SSWITCH4: case SSWITCH5: case SSWITCH6: case SSWITCH7:
+                        log("SSWITCH" + (aByte - SSWITCH0) + " ");
+                        break;
+                                        
+                        // handle all define tags
+                    case SDEFINE0: case SDEFINE1: case SDEFINE2: case SDEFINE3:
+                    case SDEFINE4: case SDEFINE5: case SDEFINE6: case SDEFINE7:
+                        log("SDEFINE" + (aByte - SDEFINE0) + " ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                        // handle define extended tag
+                    case SDEFINEX:
+                        log("SDEFINEX ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                    } // end switch
+                } // end while
+                break;
+                
+            case UNICODEMODE:
+                while(curByteIndex < byteBufferLimit && mode == UNICODEMODE) {
+                    aByte = ((int)byteBuffer[curByteIndex++]) & 0xFF;
+                    switch(aByte) {
+                        // handle all define tags
+                    case UDEFINE0: case UDEFINE1: case UDEFINE2: case UDEFINE3:
+                    case UDEFINE4: case UDEFINE5: case UDEFINE6: case UDEFINE7:
+                        log("UDEFINE" + (aByte - UDEFINE0) + " ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        mode = SINGLEBYTEMODE;
+                        break;
+                        
+                        // handle define extended tag
+                    case UDEFINEX:
+                        log("UDEFINEX ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                        // handle all switch tags
+                    case USWITCH0: case USWITCH1: case USWITCH2: case USWITCH3:
+                    case USWITCH4: case USWITCH5: case USWITCH6: case USWITCH7:
+                        log("USWITCH" + (aByte - USWITCH0) + " ");
+                        mode = SINGLEBYTEMODE;
+                        break;
+                        
+                        // quote unicode
+                    case UQUOTEU:
+                        log("UQUOTEU ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                    default:
+                        log(Integer.toHexString(((int) aByte) & 0xFF) + " ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                    } // end switch
+                } // end while
+                break;
+                
+            } // end switch( mode )
+        } // end while
+        
+        logln("");
+    }    
+}
+
+
+
+
+
+
diff --git a/src/com/ibm/icu/dev/test/compression/package.html b/src/com/ibm/icu/dev/test/compression/package.html
new file mode 100755
index 0000000..318b3ca
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/compression/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/compression/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 21:35:49 $
+-->
+</head>
+<body bgcolor="white">
+Tests for the compression classes.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java b/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
new file mode 100755
index 0000000..18739cf
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
@@ -0,0 +1,427 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java,v $ 
+ * $Date: 2002/02/25 22:43:59 $ 
+ * $Revision: 1.14 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.text.ParseException;
+import java.util.*;
+import java.math.BigInteger;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * @test
+ * General test of Big NumberFormat
+ */
+public class BigNumberFormatTest extends TestFmwk {
+
+    static final int ILLEGAL = -1;
+
+    public static void main(String[] args) throws Exception {
+        new BigNumberFormatTest().run(args);
+    }
+    	
+    public void TestExponent() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt1 = new DecimalFormat("0.###E0", US);
+        DecimalFormat fmt2 = new DecimalFormat("0.###E+0", US);
+        Number n = new Long(1234);
+        expect(fmt1, n, "1.234E3");
+        expect(fmt2, n, "1.234E+3");
+        expect(fmt1, "1.234E3", n);
+        expect(fmt1, "1.234E+3", n); // Either format should parse "E+3"
+        expect(fmt2, "1.234E+3", n);
+    }
+
+    /**
+     * Test the functioning of the secondary grouping value.
+     */
+    public void TestSecondaryGrouping() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat f = new DecimalFormat("#,##,###", US);
+        expect(f, new Long(123456789), "12,34,56,789");
+        expectPat(f, "#,##,###");
+        f.applyPattern("#,###");
+        f.setSecondaryGroupingSize(4);
+        expect(f, new Long(123456789), "12,3456,789");
+        expectPat(f, "#,####,###");
+
+        // On Sun JDK 1.2-1.3, the hi_IN locale uses '0' for a zero digit,
+        // but on IBM JDK 1.2-1.3, the locale uses U+0966.
+        f = (DecimalFormat) NumberFormat.getInstance(new Locale("hi", "IN"));
+        String str = transmute("1,87,65,43,210",
+                               f.getDecimalFormatSymbols().getZeroDigit());
+        expect(f, new Long(1876543210), str);
+    }
+
+    private void expectPad(DecimalFormat fmt, String pat, int pos) {
+        expectPad(fmt, pat, pos, 0, (char)0);
+    }
+
+    private void expectPad(DecimalFormat fmt, String pat,
+                           int pos, int width, char pad) {
+        int apos = 0, awidth = 0;
+        char apad = 0;
+        try {
+            fmt.applyPattern(pat);
+            apos = fmt.getPadPosition();
+            awidth = fmt.getFormatWidth();
+            apad = fmt.getPadCharacter();
+        } catch (IllegalArgumentException e) {
+            apos = -1;
+            awidth = width;
+            apad = pad;
+        }
+        if (apos == pos && awidth == width && apad == pad) {
+            logln("Ok   \"" + pat + "\" pos=" + apos +
+                  ((pos == -1) ? "" : " width=" + awidth + " pad=" + apad));
+        } else {
+            logln("FAIL \"" + pat + "\" pos=" + apos +
+                  " width=" + awidth + " pad=" + apad +
+                  ", expected " + pos + " " + width + " " + pad);
+        }
+    }
+
+    /**
+     */
+    public void TestPatterns() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt = new DecimalFormat("#", US);
+
+        expectPad(fmt, "*^#", DecimalFormat.PAD_BEFORE_PREFIX, 1, '^');
+        expectPad(fmt, "$*^#", DecimalFormat.PAD_AFTER_PREFIX, 2, '^');
+        expectPad(fmt, "#*^", DecimalFormat.PAD_BEFORE_SUFFIX, 1, '^');
+        expectPad(fmt, "#$*^", DecimalFormat.PAD_AFTER_SUFFIX, 2, '^');
+        expectPad(fmt, "$*^$#", ILLEGAL);
+        expectPad(fmt, "#$*^$", ILLEGAL);
+        expectPad(fmt, "'pre'#,##0*x'post'", DecimalFormat.PAD_BEFORE_SUFFIX,
+                  12, 'x');
+        expectPad(fmt, "''#0*x", DecimalFormat.PAD_BEFORE_SUFFIX,
+                  3, 'x');
+        expectPad(fmt, "'I''ll'*a###.##", DecimalFormat.PAD_AFTER_PREFIX,
+                  10, 'a');
+
+        fmt.applyPattern("AA#,##0.00ZZ");
+        fmt.setPadCharacter('^');
+
+        fmt.setFormatWidth(10);
+
+        fmt.setPadPosition(DecimalFormat.PAD_BEFORE_PREFIX);
+        expectPat(fmt, "*^AA#,##0.00ZZ");
+
+        fmt.setPadPosition(DecimalFormat.PAD_BEFORE_SUFFIX);
+        expectPat(fmt, "AA#,##0.00*^ZZ");
+
+        fmt.setPadPosition(DecimalFormat.PAD_AFTER_SUFFIX);
+        expectPat(fmt, "AA#,##0.00ZZ*^");
+
+        //            12  3456789012
+        String exp = "AA*^#,##0.00ZZ";
+        fmt.setFormatWidth(12);
+        fmt.setPadPosition(DecimalFormat.PAD_AFTER_PREFIX);
+        expectPat(fmt, exp);
+
+        fmt.setFormatWidth(13);
+        //              12  34567890123
+        expectPat(fmt, "AA*^##,##0.00ZZ");
+
+        fmt.setFormatWidth(14);
+        //              12  345678901234
+        expectPat(fmt, "AA*^###,##0.00ZZ");
+
+        fmt.setFormatWidth(15);
+        //              12  3456789012345
+        expectPat(fmt, "AA*^####,##0.00ZZ"); // This is the interesting case
+
+        fmt.setFormatWidth(16);
+        //              12  34567890123456
+        expectPat(fmt, "AA*^#,###,##0.00ZZ");
+    }
+
+    private void expectPat(DecimalFormat fmt, String exp) {
+        String pat = fmt.toPattern();
+        if (pat.equals(exp)) {
+            logln("Ok   \"" + pat + '"');
+        } else {
+            errln("FAIL \"" + pat + "\", expected \"" + exp + '"');
+        }
+    }
+
+    /**
+     * Test the handling of the AlphaWorks BigDecimal
+     */
+    public void TestAlphaBigDecimal() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        /*For ICU compatibility [Richard/GCL]*/
+        expect(NumberFormat.getScientificInstance(Locale.US),
+               new Number[] { new com.ibm.icu.math.BigDecimal("12345.678901"),
+                           },
+               "1.2345678901E4");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Number[] { new com.ibm.icu.math.BigDecimal("12345.4999"),
+                              new com.ibm.icu.math.BigDecimal("12344.5001"),
+                            },
+               "12.345E3");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Number[] { new com.ibm.icu.math.BigDecimal("12345.5000"),
+                              new com.ibm.icu.math.BigDecimal("12346.5000"),
+                            },
+               "12.346E3");
+    }
+
+    /**
+     */
+    public void TestScientific() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        /*For ICU compatibility [Richard/GCL]*/
+        expect(NumberFormat.getScientificInstance(Locale.US),
+               new Number[] { new Double(12345.678901),
+                              new java.math.BigDecimal("12345.678901"),
+                            },
+               "1.2345678901E4");
+        expect(new DecimalFormat("##0.###E0", US),
+               new Double(12345),
+               "12.34E3");
+        expect(new DecimalFormat("##0.###E0", US),
+               new Double(12345.00001),
+               "12.35E3");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Number[] { new Integer(12345),
+                              new Long(12345),
+                              new java.math.BigDecimal("12345.4999"),
+                              new java.math.BigDecimal("12344.5001"),
+                            },
+               "12.345E3");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Number[] { new java.math.BigDecimal("12345.5000"),
+                              new java.math.BigDecimal("12346.5000"),
+                            },
+               "12.346E3");
+        /*For ICU compatibility [Richard/GCL]*/
+        expect(NumberFormat.getScientificInstance(Locale.FRANCE),
+               new Double(12345.678901),
+               "1,2345678901E4");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Double(789.12345e-9),
+               "789.12E-9");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Double(780.e-9),
+               "780E-9");
+        expect(new DecimalFormat(".###E0", US),
+               new Double(45678),
+               ".457E5");
+        expect(new DecimalFormat(".###E0", US),
+               new Long(0),
+               ".0E0");
+        expect(new DecimalFormat[] { new DecimalFormat("#E0", US),
+                                     new DecimalFormat("##E0", US),
+                                     new DecimalFormat("####E0", US),
+                                     new DecimalFormat("0E0", US),    
+                                     new DecimalFormat("00E0", US),   
+                                     new DecimalFormat("000E0", US), 
+                                   },
+               new Long(45678000),
+               new String[] { "4.5678E7",
+                              "45.678E6",
+                              "4567.8E4",
+                              "5E7",
+                              "46E6",  
+                              "457E5",
+                            }
+               );
+        expect(new DecimalFormat("###E0", US),
+               new Object[] { new Double(0.0000123), "12.3E-6",
+                              new Double(0.000123), "123E-6",
+                              new java.math.BigDecimal("0.00123"), "1.23E-3", // Cafe VM messes up Double(0.00123)
+                              new Double(0.0123), "12.3E-3",
+                              new Double(0.123), "123E-3",
+                              new Double(1.23), "1.23E0",
+                              new Double(12.3), "12.3E0",
+                              new Double(123), "123E0",
+                              new Double(1230), "1.23E3",
+                             });
+        expect(new DecimalFormat("0.#E+00", US),
+               new Object[] { new Double(0.00012), "1.2E-04",
+                              new Long(12000),     "1.2E+04",
+                             });
+    }
+
+    /**
+     */
+    public void TestPad() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        expect(new DecimalFormat("*^##.##", US),
+               new Object[] { new Long(0),      "^^^^0",
+                              new Double(-1.3), "^-1.3",
+                            }
+               );
+        expect(new DecimalFormat("##0.0####E0*_ g-m/s^2", US),
+               new Object[] { new Long(0),       "0.0E0______ g-m/s^2",
+                              new Double(1.0/3), "333.333E-3_ g-m/s^2",
+                            }
+               );
+        expect(new DecimalFormat("##0.0####*_ g-m/s^2", US),
+               new Object[] { new Long(0),       "0.0______ g-m/s^2",
+                              new Double(1.0/3), "0.33333__ g-m/s^2",
+                            }
+               );
+        expect(new DecimalFormat("*x#,###,###,##0.00;*x(#,###,###,##0.00)", US),
+               new Object[] {
+                   new Long(-100),        "xxxxxxxx(100.00)",
+                   new Long(-1000),       "xxxxxx(1,000.00)",
+                   new Long(-1000000),    "xx(1,000,000.00)",
+                   new Long(-1000000000), "(1,000,000,000.00)",
+               });
+    }
+    
+    private void expect(NumberFormat fmt, Object[] data) {
+        for (int i=0; i<data.length; i+=2) {
+            expect(fmt, (Number) data[i], (String) data[i+1]);
+        }
+    }
+    
+    private void expect(Object fmto, Object numo, Object expo) {
+        NumberFormat fmt = null, fmts[] = null;
+        Number num = null, nums[] = null;
+        String exp = null, exps[] = null;
+        if (fmto instanceof NumberFormat[]) {
+            fmts = (NumberFormat[]) fmto;
+        } else {
+            fmt = (NumberFormat) fmto;
+        }
+        if (numo instanceof Number[]) {
+            nums = (Number[]) numo;
+        } else {
+            num = (Number) numo;
+        }
+        if (expo instanceof String[]) {
+            exps = (String[]) expo;
+        } else {
+            exp = (String) expo;
+        }
+        int n = 1;
+        if (fmts != null) {
+            n = Math.max(n, fmts.length);
+        }
+        if (nums != null) {
+            n = Math.max(n, nums.length);
+        }
+        if (exps != null) {
+            n = Math.max(n, exps.length);
+        }
+        for (int i=0; i<n; ++i) {
+            expect(fmts == null ? fmt : fmts[i],
+                   nums == null ? num : nums[i],
+                   exps == null ? exp : exps[i]);
+        }
+    }
+
+    private static String showNumber(Number n) {
+        String cls = n.getClass().getName();
+        if (!(n instanceof com.ibm.icu.math.BigDecimal
+              || n instanceof java.math.BigDecimal)) {
+            int i = cls.lastIndexOf('.');
+            cls = cls.substring(i+1);
+        }
+        return n.toString() + " (" + cls + ')';
+    }
+
+    private void expect(NumberFormat fmt, Number n, String exp) {
+        String saw = fmt.format(n);
+        String pat = ((DecimalFormat) fmt).toPattern();
+        if (saw.equals(exp)) {
+            logln("Ok   " + showNumber(n) + " x " +
+                  pat + " = " +
+                  Utility.escape(saw));
+        } else {
+            errln("FAIL " + showNumber(n) + " x " +
+                  pat + " = \"" +
+                  Utility.escape(saw) + ", expected " + Utility.escape(exp));
+        }
+    }
+
+    private void expect(NumberFormat fmt, String str, Number exp) {
+        Number saw = null;
+        try {
+            saw = fmt.parse(str);
+        } catch (ParseException e) {
+            saw = null;
+        }
+        String pat = ((DecimalFormat) fmt).toPattern();
+        if (saw.equals(exp)) {
+            logln("Ok   \"" + str + "\" x " +
+                  pat + " = " +
+                  showNumber(saw));
+        } else {
+            errln("FAIL \"" + str + "\" x " +
+                  pat + " = " +
+                  showNumber(saw) + ", expected " + showNumber(exp));
+        }
+    }
+
+    /**
+     * Given a string composed of [0-9] and other chars, convert the
+     * [0-9] chars to be offsets 0..9 from 'zero'.
+     */
+    private static String transmute(String str, char zero) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<str.length(); ++i) {
+            char c = str.charAt(i);
+            if (c >= '0' && c <= '9') {
+                c = (char) (c - '0' + zero);
+            }
+            buf.append(c);
+        }
+        return buf.toString();
+    }
+
+    public void Test4161100() {
+        NumberFormat f = NumberFormat.getInstance();
+        f.setMinimumFractionDigits(1);
+        f.setMaximumFractionDigits(1);
+        double a = -0.09;
+        String s = f.format(a);
+        logln(a + " x " +
+              ((DecimalFormat) f).toPattern() + " = " +
+              s);
+        if (!s.equals("-0.1")) {
+            errln("FAIL");
+        }
+    }        
+
+    public void TestBigDecimalJ28() {
+        String[] DATA = {
+            "1", "1E0",
+            "-1", "-1E0",
+            "0", "0E0",
+            "12e34", "1.2E35",
+            "-12.3e-45", "-1.23E-44",
+            "0.73e-7", "7.3E-8",
+        };
+        NumberFormat fmt = NumberFormat.getScientificInstance(Locale.US);
+        logln("Pattern: " + ((DecimalFormat)fmt).toPattern());
+        for (int i=0; i<DATA.length; i+=2) {
+            String input = DATA[i];
+            String exp = DATA[i+1];
+            com.ibm.icu.math.BigDecimal bd = new com.ibm.icu.math.BigDecimal(input);
+            String output = fmt.format(bd);
+            if (output.equals(exp)) {
+                logln("input=" + input + " num=" + bd + " output=" + output);
+            } else {
+                errln("FAIL: input=" + input + " num=" + bd + " output=" + output +
+                      " expected=" + exp);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateFormatMiscTests.java b/src/com/ibm/icu/dev/test/format/DateFormatMiscTests.java
new file mode 100755
index 0000000..c787853
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateFormatMiscTests.java
@@ -0,0 +1,167 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/DateFormatMiscTests.java,v $ 
+ * $Date: 2002/02/16 03:05:08 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : DateFormatMiscTests
+ * Source File: $ICU4CRoot/source/test/intltest/miscdtfm.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.util.Locale;
+import java.util.Date;
+
+/** 
+ * Performs miscellaneous tests for DateFormat, SimpleDateFormat, DateFormatSymbols
+ **/
+public class DateFormatMiscTests extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception{
+        new DateFormatMiscTests().run(args);
+    }
+    
+    /*
+     * @bug 4097450
+     */
+    public void Test4097450() {
+        //
+        // Date parse requiring 4 digit year.
+        //
+        String dstring[] = {
+            "97", "1997", "97", "1997", "01", "2001", "01", "2001",
+             "1", "1", "11", "11", "111", "111"}; 
+    
+        String dformat[] = 
+            {
+                "yy", "yy", "yyyy", "yyyy", "yy", "yy", "yyyy", "yyyy", 
+                "yy", "yyyy", "yy", "yyyy", "yy", "yyyy"};         
+    
+        SimpleDateFormat formatter;
+        SimpleDateFormat resultFormatter = new SimpleDateFormat("yyyy");
+        logln("Format\tSource\tResult");
+        logln("-------\t-------\t-------");
+        for (int i = 0; i < dstring.length ; i++) {
+            log(dformat[i] + "\t" + dstring[i] + "\t");
+            formatter = new SimpleDateFormat(dformat[i]);
+            try {
+                StringBuffer str = new StringBuffer("");
+                FieldPosition pos = new FieldPosition(0);
+                logln(resultFormatter.format(formatter.parse(dstring[i]), str, pos).toString()); 
+            }
+            catch (ParseException exception) {
+                errln("exception --> " + exception);
+            }
+            logln("");
+        }
+    }
+    
+    /* @Bug 4099975
+     * SimpleDateFormat constructor SimpleDateFormat(String, DateFormatSymbols)
+     * should clone the DateFormatSymbols parameter
+     */
+    public void Test4099975new() {
+        Date d = new Date();
+        //test SimpleDateFormat Constructor
+        {
+            DateFormatSymbols symbols = new DateFormatSymbols(Locale.US);
+            SimpleDateFormat df = new SimpleDateFormat("E hh:mm", symbols);
+            SimpleDateFormat dfClone = (SimpleDateFormat) df.clone();
+            
+            logln(df.toLocalizedPattern());
+            String s0 = df.format(d);
+            String s_dfClone = dfClone.format(d);
+            
+            symbols.setLocalPatternChars("abcdefghijklmonpqr"); // change value of field
+            logln(df.toLocalizedPattern());
+            String s1 = df.format(d);
+            
+            if (!s1.equals(s0) || !s1.equals(s_dfClone)) {
+                errln("Constructor: the formats are not equal");
+            }
+            if (!df.equals(dfClone)) {
+                errln("The Clone Object does not equal with the orignal source");
+            }
+        }
+        //test SimpleDateFormat.setDateFormatSymbols()
+        {
+            DateFormatSymbols symbols = new DateFormatSymbols(Locale.US);
+            SimpleDateFormat df = new SimpleDateFormat("E hh:mm");
+            df.setDateFormatSymbols(symbols);
+            SimpleDateFormat dfClone = (SimpleDateFormat) df.clone();
+            
+            logln(df.toLocalizedPattern());
+            String s0 = df.format(d);
+            String s_dfClone = dfClone.format(d);
+            
+            symbols.setLocalPatternChars("abcdefghijklmonpqr"); // change value of field
+            logln(df.toLocalizedPattern());
+            String s1 = df.format(d);
+            
+            if (!s1.equals(s0) || !s1.equals(s_dfClone)) {
+                errln("setDateFormatSymbols: the formats are not equal");
+            }
+            if (!df.equals(dfClone)) {
+                errln("The Clone Object does not equal with the orignal source");
+            }
+        }
+    }
+    
+    /*
+     * @bug 4117335
+     */
+    public void Test4117335() {
+        //char bcC[] = {0x7D00, 0x5143, 0x524D};
+        String bc = "\u7D00\u5143\u524D";
+        String ad = "\u897f\u66a6";
+        //char adC[] = {0x897F, 0x66A6};
+        String jstLong = "\u65e5\u672c\u6a19\u6e96\u6642";
+        //char jstLongC[] = {0x65e5, 0x672c, 0x6a19, 0x6e96, 0x6642}; //The variable is never used
+        String jstShort = "JST";
+    
+        DateFormatSymbols symbols = new DateFormatSymbols(Locale.JAPAN);
+        final String[] eras = symbols.getEras();
+        //int eraCount = eras.length; //The variable is never used
+        logln("BC = " + eras[0]);
+        if (!eras[0].equals(bc)) {
+            errln("*** Should have been " + bc);
+        }
+    
+        logln("AD = " + eras[1]);
+        if (!eras[1].equals(ad)) {
+            errln("*** Should have been " + ad);
+        }
+    
+        final String zones[][] = symbols.getZoneStrings();
+        //int rowCount = zones.length, colCount = zones[0].length; //The variable is never used
+        logln("Long zone name = " + zones[0][1]);
+        if (!zones[0][1].equals(jstLong)) {
+            errln("*** Should have been " + jstLong);
+        }
+        logln("Short zone name = " + zones[0][2]);
+        if (!zones[0][2].equals(jstShort)) {
+            errln("*** Should have been " + jstShort);
+        }
+        logln("Long zone name = " + zones[0][3]);
+        if (zones[0][3] != jstLong) {
+            errln("*** Should have been " + jstLong);
+        }
+        logln("SHORT zone name = " + zones[0][4]);
+        if (zones[0][4] != jstShort) {
+            errln("*** Should have been " + jstShort);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java b/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java
new file mode 100755
index 0000000..2cf8036
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java
@@ -0,0 +1,885 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java,v $ 
+ * $Date: 2002/03/10 19:40:13 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : DateFormatRegressionTest
+ * Source File: $ICU4CRoot/source/test/intltest/dtfmrgts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+
+import java.io.*;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+/** 
+ * Performs regression test for DateFormat
+ **/
+public class DateFormatRegressionTest extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception{
+        new DateFormatRegressionTest().run(args);
+    }
+    
+    /**
+     * @bug 4029195
+     */
+    public void Test4029195() {
+        Calendar cal = Calendar.getInstance();
+        Date today = cal.getTime();
+        logln("today: " + today);
+        SimpleDateFormat sdf = (SimpleDateFormat) DateFormat.getDateInstance();
+        String pat = sdf.toPattern();
+        logln("pattern: " + pat);
+        StringBuffer fmtd = new StringBuffer("");
+        FieldPosition pos = new FieldPosition(0);
+        fmtd = sdf.format(today, fmtd, pos);
+        logln("today: " + fmtd);
+    
+        sdf.applyPattern("G yyyy DDD");
+        StringBuffer todayS = new StringBuffer("");
+        todayS = sdf.format(today, todayS, pos);
+        logln("today: " + todayS);
+        try {
+            today = sdf.parse(todayS.toString());
+            logln("today date: " + today);
+        } catch (Exception e) {
+            errln("Error reparsing date: " + e.getMessage());
+        }
+    
+        try {
+            StringBuffer rt = new StringBuffer("");
+            rt = sdf.format(sdf.parse(todayS.toString()), rt, pos);
+            logln("round trip: " + rt);
+            if (!rt.toString().equals(todayS.toString()))
+                errln("Fail: Want " + todayS + " Got " + rt);
+        } catch (ParseException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+    }
+    
+    /**
+     * @bug 4052408
+     */
+    public void Test4052408() {
+    
+        DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.US); 
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(97 + 1900, Calendar.MAY, 3, 8, 55);
+        Date dt = cal.getTime();
+        String str = fmt.format(dt);
+        logln(str);
+        
+        if (!str.equals("5/3/97 8:55 AM"))
+            errln("Fail: Test broken; Want 5/3/97 8:55 AM Got " + str);
+    
+        String expected[] = {
+            "", //"ERA_FIELD",
+            "97", //"YEAR_FIELD",
+            "5", //"MONTH_FIELD",
+            "3", //"DATE_FIELD",
+            "", //"HOUR_OF_DAY1_FIELD",
+            "", //"HOUR_OF_DAY0_FIELD",
+            "55", //"MINUTE_FIELD",
+            "", //"SECOND_FIELD",
+            "", //"MILLISECOND_FIELD",
+            "", //"DAY_OF_WEEK_FIELD",
+            "", //"DAY_OF_YEAR_FIELD",
+            "", //"DAY_OF_WEEK_IN_MONTH_FIELD",
+            "", //"WEEK_OF_YEAR_FIELD",
+            "", //"WEEK_OF_MONTH_FIELD",
+            "AM", //"AM_PM_FIELD",
+            "8", //"HOUR1_FIELD",
+            "", //"HOUR0_FIELD",
+            "" //"TIMEZONE_FIELD"
+            };        
+        String fieldNames[] = {
+                "ERA_FIELD", 
+                "YEAR_FIELD", 
+                "MONTH_FIELD", 
+                "DATE_FIELD", 
+                "HOUR_OF_DAY1_FIELD", 
+                "HOUR_OF_DAY0_FIELD", 
+                "MINUTE_FIELD", 
+                "SECOND_FIELD", 
+                "MILLISECOND_FIELD", 
+                "DAY_OF_WEEK_FIELD", 
+                "DAY_OF_YEAR_FIELD", 
+                "DAY_OF_WEEK_IN_MONTH_FIELD", 
+                "WEEK_OF_YEAR_FIELD", 
+                "WEEK_OF_MONTH_FIELD", 
+                "AM_PM_FIELD", 
+                "HOUR1_FIELD", 
+                "HOUR0_FIELD", 
+                "TIMEZONE_FIELD"}; 
+    
+        boolean pass = true;
+        for (int i = 0; i <= 17; ++i) {
+            FieldPosition pos = new FieldPosition(i);
+            StringBuffer buf = new StringBuffer("");
+            fmt.format(dt, buf, pos);
+            //char[] dst = new char[pos.getEndIndex() - pos.getBeginIndex()];
+            String dst = buf.substring(pos.getBeginIndex(), pos.getEndIndex());
+            str = dst;
+            log(i + ": " + fieldNames[i] + ", \"" + str + "\", "
+                    + pos.getBeginIndex() + ", " + pos.getEndIndex()); 
+            String exp = expected[i];
+            if ((exp.length() == 0 && str.length() == 0) || str.equals(exp))
+                logln(" ok");
+            else {
+                logln(" expected " + exp);
+                pass = false;
+            }
+        }
+        if (!pass)
+            errln("Fail: FieldPosition not set right by DateFormat");
+    }
+    
+    /**
+     * @bug 4056591
+     * Verify the function of the [s|g]et2DigitYearStart() API.
+     */
+    public void Test4056591() {
+    
+        try {
+            SimpleDateFormat fmt = new SimpleDateFormat("yyMMdd", Locale.US);
+            Calendar cal = Calendar.getInstance();
+            cal.clear();
+            cal.set(1809, Calendar.DECEMBER, 25);
+            Date start = cal.getTime();
+            fmt.set2DigitYearStart(start);
+            if ((fmt.get2DigitYearStart() != start))
+                errln("get2DigitYearStart broken");
+            cal.clear();
+            cal.set(1809, Calendar.DECEMBER, 25);
+            Date d1 = cal.getTime();
+            cal.clear();
+            cal.set(1909, Calendar.DECEMBER, 24);
+            Date d2 = cal.getTime();
+            cal.clear();
+            cal.set(1809, Calendar.DECEMBER, 26);
+            Date d3 = cal.getTime();
+            cal.clear();
+            cal.set(1861, Calendar.DECEMBER, 25);
+            Date d4 = cal.getTime();
+            
+            Date dates[] = {d1, d2, d3, d4};
+    
+            String strings[] = {"091225", "091224", "091226", "611225"};            
+    
+            for (int i = 0; i < 4; i++) {
+                String s = strings[i];
+                Date exp = dates[i];
+                Date got = fmt.parse(s);
+                logln(s + " . " + got + "; exp " + exp);
+                if (got.getTime() != exp.getTime())
+                    errln("set2DigitYearStart broken");
+            }
+        } catch (ParseException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+    }
+    
+    /**
+     * @bug 4059917
+     */
+    public void Test4059917() {        
+        SimpleDateFormat fmt;
+        String myDate;
+        fmt = new SimpleDateFormat("yyyy/MM/dd");
+        myDate = "1997/01/01";
+        aux917( fmt, myDate );        
+        fmt = new SimpleDateFormat("yyyyMMdd");
+        myDate = "19970101";
+        aux917( fmt, myDate );
+    }
+    
+    public void aux917(SimpleDateFormat fmt, String str) {
+    
+        String pat = fmt.toPattern();
+        logln("==================");
+        logln("testIt: pattern=" + pat + " string=" + str);
+        ParsePosition pos = new ParsePosition(0);
+        Object o = fmt.parseObject(str, pos);
+        //logln( UnicodeString("Parsed object: ") + o );
+    
+        StringBuffer formatted = new StringBuffer("");
+        FieldPosition poss = new FieldPosition(0);
+        formatted = fmt.format(o, formatted, poss);
+    
+        logln("Formatted string: " + formatted);
+        if (!formatted.toString().equals(str))
+            errln("Fail: Want " + str + " Got " + formatted);
+    }
+    
+    /**
+     * @bug 4060212
+     */
+    public void Test4060212() {
+        String dateString = "1995-040.05:01:29";
+        logln("dateString= " + dateString);
+        logln("Using yyyy-DDD.hh:mm:ss");
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-DDD.hh:mm:ss");
+        ParsePosition pos = new ParsePosition(0);
+        Date myDate = formatter.parse(dateString, pos);
+        DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.LONG); 
+        String myString = fmt.format(myDate);
+        logln(myString);
+        Calendar cal = new GregorianCalendar();
+        cal.setTime(myDate);
+        if ((cal.get(Calendar.DAY_OF_YEAR) != 40))
+            errln("Fail: Got " + cal.get(Calendar.DAY_OF_YEAR) + " Want 40");
+    
+        logln("Using yyyy-ddd.hh:mm:ss");
+        formatter = new SimpleDateFormat("yyyy-ddd.hh:mm:ss");
+        pos.setIndex(0);
+        myDate = formatter.parse(dateString, pos);
+        myString = fmt.format(myDate);
+        logln(myString);
+        cal.setTime(myDate);
+        if ((cal.get(Calendar.DAY_OF_YEAR) != 40))
+            errln("Fail: Got " + cal.get(Calendar.DAY_OF_YEAR) + " Want 40");
+    }
+    /**
+     * @bug 4061287
+     */
+    public void Test4061287() {
+    
+        SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
+        try {
+            logln(df.parse("35/01/1971").toString());
+        } catch (ParseException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+        df.setLenient(false);
+        boolean ok = false;
+        try {
+            logln(df.parse("35/01/1971").toString());
+        } catch (ParseException e) {
+            ok = true;
+        }
+        if (!ok)
+            errln("Fail: Lenient not working");
+    }
+    
+    /**
+     * @bug 4065240
+     */
+    public void Test4065240() {
+        Date curDate;
+        DateFormat shortdate, fulldate;
+        String strShortDate, strFullDate;
+        Locale saveLocale = Locale.getDefault();
+        TimeZone saveZone = TimeZone.getDefault();
+    
+        try {
+            Locale curLocale = new Locale("de", "DE");
+            Locale.setDefault(curLocale);
+            // {sfb} adoptDefault instead of setDefault
+            //TimeZone.setDefault(TimeZone.createTimeZone("EST"));
+            TimeZone.setDefault(TimeZone.getTimeZone("EST"));
+            Calendar cal = Calendar.getInstance();
+            cal.clear();
+            cal.set(98 + 1900, 0, 1);
+            curDate = cal.getTime();
+            shortdate = DateFormat.getDateInstance(DateFormat.SHORT);
+            fulldate = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
+            strShortDate = "The current date (short form) is ";
+            String temp;
+            temp = shortdate.format(curDate);
+            strShortDate += temp;
+            strFullDate = "The current date (long form) is ";
+            String temp2 = fulldate.format(curDate);
+            strFullDate += temp2;
+    
+            logln(strShortDate);
+            logln(strFullDate);
+    
+            // {sfb} What to do with resource bundle stuff?????
+    
+            // Check to see if the resource is present; if not, we can't test
+            //ResourceBundle bundle = //The variable is never used
+            //    ICULocaleData.getBundle("DateFormatZoneData", curLocale); 
+    
+            // {sfb} API change to ResourceBundle -- add getLocale()
+            /*if (bundle.getLocale().getLanguage().equals("de")) {
+                // UPDATE THIS AS ZONE NAME RESOURCE FOR <EST> in de_DE is updated
+                if (!strFullDate.endsWith("GMT-05:00"))
+                    errln("Fail: Want GMT-05:00");
+            } else {
+                logln("*** TEST COULD NOT BE COMPLETED BECAUSE DateFormatZoneData ***");
+                logln("*** FOR LOCALE de OR de_DE IS MISSING ***");
+            }*/
+        } catch (Exception e) {
+            logln(e.getMessage());
+        } finally {
+            Locale.setDefault(saveLocale);
+            TimeZone.setDefault(saveZone);
+        }
+    
+    }
+    
+    /*
+      DateFormat.equals is too narrowly defined.  As a result, MessageFormat
+      does not work correctly.  DateFormat.equals needs to be written so
+      that the Calendar sub-object is not compared using Calendar.equals,
+      but rather compared for equivalency.  This may necessitate adding a
+      (package private) method to Calendar to test for equivalency.
+      
+      Currently this bug breaks MessageFormat.toPattern
+      */
+    /**
+     * @bug 4071441
+     */
+    public void Test4071441() {
+        DateFormat fmtA = DateFormat.getInstance();
+        DateFormat fmtB = DateFormat.getInstance();
+    
+        // {sfb} Is it OK to cast away const here?
+        Calendar calA = fmtA.getCalendar();
+        Calendar calB = fmtB.getCalendar();
+        calA.clear();
+        calA.set(1900, 0 ,0);
+        calB.clear();
+        calB.set(1900, 0, 0);
+        if (!calA.equals(calB))
+            errln("Fail: Can't complete test; Calendar instances unequal");
+        if (!fmtA.equals(fmtB))
+            errln("Fail: DateFormat unequal when Calendars equal");
+        calB.clear();
+        calB.set(1961, Calendar.DECEMBER, 25);
+        if (calA.equals(calB))
+            errln("Fail: Can't complete test; Calendar instances equal");
+        if (!fmtA.equals(fmtB))
+            errln("Fail: DateFormat unequal when Calendars equivalent");
+        logln("DateFormat.equals ok");
+    }
+        
+    /* The java.text.DateFormat.parse(String) method expects for the
+      US locale a string formatted according to mm/dd/yy and parses it
+      correctly.
+    
+      When given a string mm/dd/yyyy it only parses up to the first
+      two y's, typically resulting in a date in the year 1919.
+      
+      Please extend the parsing method(s) to handle strings with
+      four-digit year values (probably also applicable to various
+      other locales.  */
+    /**
+     * @bug 4073003
+     */
+    public void Test4073003() {
+        try {
+            DateFormat fmt = DateFormat.getDateInstance(DateFormat.SHORT, Locale.US);
+            String tests[] = {"12/25/61", "12/25/1961", "4/3/2010", "4/3/10"};
+            for (int i = 0; i < 4; i += 2) {
+                Date d = fmt.parse(tests[i]);
+                Date dd = fmt.parse(tests[i + 1]);
+                String s;
+                s = fmt.format(d);
+                String ss;
+                ss = fmt.format(dd);
+                if (d.getTime() != dd.getTime())
+                    errln("Fail: " + d + " != " + dd);
+                if (!s.equals(ss))
+                    errln("Fail: " + s + " != " + ss);
+                logln("Ok: " + s + " " + d);
+            }
+        } catch (ParseException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }    
+    }
+    
+    /**
+     * @bug 4089106
+     */
+    public void Test4089106() {
+        TimeZone def = TimeZone.getDefault();
+        try {
+            TimeZone z = new SimpleTimeZone((int) (1.25 * 3600000), "FAKEZONE");
+            TimeZone.setDefault(z);
+            SimpleDateFormat f = new SimpleDateFormat();
+            if (!f.getTimeZone().equals(z))
+                errln("Fail: SimpleTimeZone should use TimeZone.getDefault()");
+        } finally {
+            TimeZone.setDefault(def);
+        }
+    }
+    
+    /**
+     * @bug 4100302
+     */
+    public void Test4100302() {
+        
+        Locale locales[] = {
+            Locale.CANADA, Locale.CANADA_FRENCH, Locale.CHINA, 
+            Locale.CHINESE, Locale.ENGLISH, Locale.FRANCE, Locale.FRENCH, 
+            Locale.GERMAN, Locale.GERMANY, Locale.ITALIAN, Locale.ITALY, 
+            Locale.JAPAN, Locale.JAPANESE, Locale.KOREA, Locale.KOREAN, 
+            Locale.PRC, Locale.SIMPLIFIED_CHINESE, Locale.TAIWAN, 
+            Locale.TRADITIONAL_CHINESE, Locale.UK, Locale.US}; 
+        try {
+            boolean pass = true;
+            for (int i = 0; i < 21; i++) {
+                Format format = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, locales[i]); 
+                byte[] bytes;
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                ObjectOutputStream oos = new ObjectOutputStream(baos);
+                oos.writeObject(format);
+                oos.flush();
+                baos.close();
+                bytes = baos.toByteArray();
+                ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
+                Object o = ois.readObject();
+                if (!format.equals(o)) {
+                    pass = false;
+                    logln("DateFormat instance for locale " + locales[i] + " is incorrectly serialized/deserialized."); 
+                } else {
+                    logln("DateFormat instance for locale " + locales[i] + " is OKAY.");
+                }
+            }
+            if (!pass)
+                errln("Fail: DateFormat serialization/equality bug");
+        } catch (OptionalDataException e) {
+            errln("Fail: " + e);
+        } catch (IOException e) {
+            errln("Fail: " + e);
+        } catch (ClassNotFoundException e) {
+            errln("Fail: " + e);
+        } catch (Exception e) {
+            errln("Fail: " + e);
+        }
+    
+    }
+    
+    /**
+     * @bug 4101483
+     */
+    public void Test4101483() {
+        SimpleDateFormat sdf = new SimpleDateFormat("z", Locale.US);
+        FieldPosition fp = new FieldPosition(DateFormat.TIMEZONE_FIELD);
+        Date d = new Date(9234567890L);
+        StringBuffer buf = new StringBuffer("");
+        sdf.format(d, buf, fp);
+        logln(sdf.format(d, buf, fp).toString());
+        logln("beginIndex = " + fp.getBeginIndex());
+        logln("endIndex = " + fp.getEndIndex());
+        if (fp.getBeginIndex() == fp.getEndIndex())
+            errln("Fail: Empty field");
+    }
+    
+    /**
+     * @bug 4103340
+     * @bug 4138203
+     * This bug really only works in Locale.US, since that's what the locale
+     * used for Date.toString() is.  Bug 4138203 reports that it fails on Korean
+     * NT; it would actually have failed on any non-US locale.  Now it should
+     * work on all locales.
+     */
+    public void Test4103340() {
+    
+        // choose a date that is the FIRST of some month 
+        // and some arbitrary time
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1997, 3, 1, 1, 1, 1);
+        Date d = cal.getTime(); 
+        SimpleDateFormat df = new SimpleDateFormat("MMMM", Locale.US);
+        String s = d.toString();
+        StringBuffer s2 = new StringBuffer("");
+        FieldPosition pos = new FieldPosition(0);
+        s2 = df.format(d, s2, pos);
+        logln("Date=" + s); 
+        logln("DF=" + s2);
+        String substr = s2.substring(0,2);
+        if (s.indexOf(substr) == -1)
+          errln("Months should match");
+    }
+    
+    /**
+     * @bug 4103341
+     */
+    public void Test4103341() {
+        TimeZone saveZone = TimeZone.getDefault();
+        try {
+            // {sfb} changed from adoptDefault to setDefault
+            TimeZone.setDefault(TimeZone.getTimeZone("CST"));
+            SimpleDateFormat simple = new SimpleDateFormat("MM/dd/yyyy HH:mm");
+            TimeZone temp = TimeZone.getDefault();
+            if (!simple.getTimeZone().equals(temp))
+                errln("Fail: SimpleDateFormat not using default zone");
+        } finally {
+            TimeZone.setDefault(saveZone);
+        }
+    }
+    
+    /**
+     * @bug 4104136
+     */
+    public void Test4104136() {
+        SimpleDateFormat sdf = new SimpleDateFormat();
+        String pattern = "'time' hh:mm";
+        sdf.applyPattern(pattern);
+        logln("pattern: \"" + pattern + "\"");
+        String strings[] = {"time 10:30", "time 10:x", "time 10x"};
+        ParsePosition ppos[] = {new ParsePosition(10), new ParsePosition(0), new ParsePosition(0)};
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1970, Calendar.JANUARY, 1, 10, 30);
+        Date dates[] = {cal.getTime(), new Date(-1), new Date(-1)};
+        for (int i = 0; i < 3; i++) {
+            String text = strings[i];
+            ParsePosition finish = ppos[i];
+            Date exp = dates[i];
+            ParsePosition pos = new ParsePosition(0);
+            Date d = sdf.parse(text, pos);
+            logln(" text: \"" + text + "\"");
+            logln(" index: %d" + pos.getIndex());
+            logln(" result: " + d);
+            if (pos.getIndex() != finish.getIndex())
+                errln("Fail: Expected pos " + finish.getIndex());
+            if (!((d == null && exp.equals(new Date(-1))) || (d.equals(exp))))
+                errln( "Fail: Expected result " + exp);
+        }
+    }
+    
+    /**
+     * @bug 4104522
+     * CANNOT REPRODUCE
+     * According to the bug report, this test should throw a
+     * StringIndexOutOfBoundsException during the second parse.  However,
+     * this is not seen.
+     */
+    public void Test4104522() {
+        SimpleDateFormat sdf = new SimpleDateFormat();
+        String pattern = "'time' hh:mm";
+        sdf.applyPattern(pattern);
+        logln("pattern: \"" + pattern + "\"");
+        // works correctly
+        ParsePosition pp = new ParsePosition(0);
+        String text = "time ";
+        Date dt = sdf.parse(text, pp);
+        logln(" text: \"" + text + "\"" + " date: " + dt);
+        // works wrong
+        pp.setIndex(0);
+        text = "time";
+        dt = sdf.parse(text, pp);
+        logln(" text: \"" + text + "\"" + " date: " + dt);    
+    }
+    
+    /**
+     * @bug 4106807
+     */
+    public void Test4106807() {
+        Date dt;
+        DateFormat df = DateFormat.getDateTimeInstance();
+    
+        SimpleDateFormat sdfs[] = {
+                new SimpleDateFormat("yyyyMMddHHmmss"), 
+                new SimpleDateFormat("yyyyMMddHHmmss'Z'"), 
+                new SimpleDateFormat("yyyyMMddHHmmss''"), 
+                new SimpleDateFormat("yyyyMMddHHmmss'a''a'"), 
+                new SimpleDateFormat("yyyyMMddHHmmss %")}; 
+        String strings[] = {
+                "19980211140000", 
+                "19980211140000", 
+                "19980211140000", 
+                "19980211140000a", 
+                "19980211140000 "}; 
+        GregorianCalendar gc = new GregorianCalendar();
+        TimeZone timeZone = TimeZone.getDefault();
+        TimeZone gmt = (TimeZone) timeZone.clone();
+        gmt.setRawOffset(0);
+        for (int i = 0; i < 5; i++) {
+            SimpleDateFormat format = sdfs[i];
+            String dateString = strings[i];
+            try {
+                format.setTimeZone(gmt);
+                dt = format.parse(dateString);
+                // {sfb} some of these parses will fail purposely
+    
+                StringBuffer fmtd = new StringBuffer("");
+                FieldPosition pos = new FieldPosition(0);
+                fmtd = df.format(dt, fmtd, pos);
+                logln(fmtd.toString());
+                //logln(df.format(dt)); 
+                gc.setTime(dt);
+                logln("" + gc.get(Calendar.ZONE_OFFSET));
+                StringBuffer s = new StringBuffer("");
+                s = format.format(dt, s, pos);
+                logln(s.toString());
+            } catch (ParseException e) {
+                logln("No way Jose");
+            }
+        }
+    }
+    
+    /*
+      Synopsis: Chinese time zone CTT is not recogonized correctly.
+      Description: Platform Chinese Windows 95 - ** Time zone set to CST ** 
+      */
+    /**
+     * @bug 4108407
+     */
+    
+    // {sfb} what to do with this one ?? 
+    public void Test4108407() {
+        /*
+        long l = System.currentTimeMillis(); 
+        logln("user.timezone = " + System.getProperty("user.timezone", "?"));
+        logln("Time Zone :" + 
+                           DateFormat.getDateInstance().getTimeZone().getID()); 
+        logln("Default format :" + 
+                           DateFormat.getDateInstance().format(new Date(l))); 
+        logln("Full format :" + 
+                           DateFormat.getDateInstance(DateFormat.FULL).format(new 
+                                                                              Date(l))); 
+        logln("*** Set host TZ to CST ***");
+        logln("*** THE RESULTS OF THIS TEST MUST BE VERIFIED MANUALLY ***");
+        */
+    }
+    
+    /**
+     * @bug 4134203
+     * SimpleDateFormat won't parse "GMT"
+     */
+    public void Test4134203() {
+        String dateFormat = "MM/dd/yy HH:mm:ss zzz";
+        SimpleDateFormat fmt = new SimpleDateFormat(dateFormat);
+    
+        ParsePosition p0 = new ParsePosition(0);
+        Date d = fmt.parse("01/22/92 04:52:00 GMT", p0);
+        logln(d.toString());
+        if(p0.equals(new ParsePosition(0)))
+            errln("Fail: failed to parse 'GMT'");
+        // In the failure case an exception is thrown by parse();
+        // if no exception is thrown, the test passes.
+    }
+    
+    /**
+     * @bug 4151631
+     * SimpleDateFormat incorrect handling of 2 single quotes in format()
+     */
+    public void Test4151631() {
+        String pattern = 
+            "'TO_DATE('''dd'-'MM'-'yyyy HH:mm:ss''' , ''DD-MM-YYYY HH:MI:SS'')'"; 
+        logln("pattern=" + pattern);
+        SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.US);
+        StringBuffer result = new StringBuffer("");
+        FieldPosition pos = new FieldPosition(0);
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1998, Calendar.JUNE, 30, 13, 30, 0);
+        Date d = cal.getTime();
+        result = format.format(d, result, pos); 
+        if (!result.toString().equals("TO_DATE('30-06-1998 13:30:00' , 'DD-MM-YYYY HH:MI:SS')")) {
+            errln("Fail: result=" + result);
+        } else {
+            logln("Pass: result=" + result);
+        }
+    }
+    
+    /**
+     * @bug 4151706
+     * 'z' at end of date format throws index exception in SimpleDateFormat
+     * CANNOT REPRODUCE THIS BUG ON 1.2FCS
+     */
+    public void Test4151706() {
+        String dateString = "Thursday, 31-Dec-98 23:00:00 GMT";
+        SimpleDateFormat fmt = new SimpleDateFormat("EEEE, dd-MMM-yy HH:mm:ss z", Locale.US);
+        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"), Locale.US);
+        cal.clear();
+        cal.set(1998, Calendar.DECEMBER, 31, 23, 0, 0);
+        Date d = new Date();
+        try {
+            d = fmt.parse(dateString);
+            // {sfb} what about next two lines?
+            if (d.getTime() != cal.getTime().getTime())
+                errln("Incorrect value: " + d);
+        } catch (Exception e) {
+            errln("Fail: " + e);
+        }
+        StringBuffer temp = new StringBuffer("");
+        FieldPosition pos = new FieldPosition(0);
+        logln(dateString + " . " + fmt.format(d, temp, pos));
+    }
+    
+    /**
+     * @bug 4162071
+     * Cannot reproduce this bug under 1.2 FCS -- it may be a convoluted duplicate
+     * of some other bug that has been fixed.
+     */
+    public void Test4162071() {
+        String dateString = "Thu, 30-Jul-1999 11:51:14 GMT";
+        String format = "EEE', 'dd-MMM-yyyy HH:mm:ss z"; // RFC 822/1123
+        SimpleDateFormat df = new SimpleDateFormat(format, Locale.US);
+        try {
+            Date x = df.parse(dateString);
+            StringBuffer temp = new StringBuffer("");
+            FieldPosition pos = new FieldPosition(0);
+            logln(dateString + " -> " + df.format(x, temp, pos));
+        } catch (Exception e) {
+            errln("Parse format \"" + format + "\" failed.");
+        }
+    }
+    
+    /**
+     * DateFormat shouldn't parse year "-1" as a two-digit year (e.g., "-1" . 1999).
+     */
+    public void Test4182066() {
+        SimpleDateFormat fmt = new SimpleDateFormat("MM/dd/yy", Locale.US);
+        SimpleDateFormat dispFmt = new SimpleDateFormat("MMM dd yyyy HH:mm:ss GG", Locale.US);
+        /* We expect 2-digit year formats to put 2-digit years in the right
+         * window.  Out of range years, that is, anything less than "00" or
+         * greater than "99", are treated as literal years.  So "1/2/3456"
+         * becomes 3456 AD.  Likewise, "1/2/-3" becomes -3 AD == 2 BC.
+         */
+        final String STRINGS[] = 
+            {"02/29/00", "01/23/01", "04/05/-1", "01/23/-9", "11/12/1314", "10/31/1", "09/12/+1", "09/12/001",}; 
+        int STRINGS_COUNT = STRINGS.length;
+                
+        Calendar cal = Calendar.getInstance();
+        Date FAIL_DATE = cal.getTime();
+        cal.clear();
+        cal.set(2000, Calendar.FEBRUARY, 29);
+        Date d0 = cal.getTime();
+        cal.clear();
+        cal.set(2001, Calendar.JANUARY, 23);
+        Date d1 = cal.getTime();
+        cal.clear();
+        cal.set(-1, Calendar.APRIL, 5);
+        Date d2 = cal.getTime();
+        cal.clear();
+        cal.set(-9, Calendar.JANUARY, 23);
+        Date d3 = cal.getTime();
+        cal.clear();
+        cal.set(1314, Calendar.NOVEMBER, 12);
+        Date d4 = cal.getTime();
+        cal.clear();
+        cal.set(1, Calendar.OCTOBER, 31);
+        Date d5 = cal.getTime();
+        cal.clear();        
+        cal.set(1, Calendar.SEPTEMBER, 12);
+        Date d7 = cal.getTime();
+        Date DATES[] = {d0, d1, d2, d3, d4, d5, FAIL_DATE, d7};
+    
+        String out = "";
+        boolean pass = true;
+        for (int i = 0; i < STRINGS_COUNT; ++i) {
+            String str = STRINGS[i];
+            Date expected = DATES[i];            
+            Date actual = null;
+            try {
+                actual = fmt.parse(str);
+            } catch (ParseException e) {
+                actual = FAIL_DATE;
+            }
+            String actStr = "";
+            if ((actual.getTime()) == FAIL_DATE.getTime()) {
+                actStr += "null";
+            } else {
+                // Yuck: See j25
+                actStr = ((DateFormat) dispFmt).format(actual);
+            }
+                               
+            if (expected.getTime() == (actual.getTime())) {
+                out += str + " => " + actStr + "\n";
+            } else {
+                String expStr = "";
+                if (expected.getTime() == FAIL_DATE.getTime()) {
+                    expStr += "null";
+                } else {
+                    // Yuck: See j25
+                    expStr = ((DateFormat) dispFmt).format(expected);
+                }
+                out += "FAIL: " + str + " => " + actStr + ", expected " + expStr + "\n";
+                pass = false;
+            }
+        }
+        if (pass) {
+            log(out);
+        } else {
+            err(out);
+        }
+    }
+    
+    /**
+     * j32 {JDK Bug 4210209 4209272}
+     * DateFormat cannot parse Feb 29 2000 when setLenient(false)
+     */
+    public void Test4210209() {
+    
+        String pattern = "MMM d, yyyy";
+        SimpleDateFormat sfmt = new SimpleDateFormat(pattern, Locale.US);
+        SimpleDateFormat sdisp = new SimpleDateFormat("MMM dd yyyy GG", Locale.US);
+        DateFormat fmt = (DateFormat) sfmt; // Yuck: See j25
+        DateFormat disp = (DateFormat) sdisp; // Yuck: See j25
+    
+        Calendar calx = (Calendar) fmt.getCalendar(); // cast away const!
+        calx.setLenient(false);
+        Calendar calendar = Calendar.getInstance();
+        calendar.clear();
+        calendar.set(2000, Calendar.FEBRUARY, 29);
+        Date d = calendar.getTime();
+        String s = fmt.format(d);
+        logln(disp.format(d) + " f> " + pattern + " => \"" + s + "\"");
+        ParsePosition pos = new ParsePosition(0);
+        d = fmt.parse(s, pos);
+        logln("\"" + s + "\" p> " + pattern + " => " + disp.format(d));
+        logln("Parse pos = " + pos.getIndex() + ", error pos = " + pos.getErrorIndex());
+        if (pos.getErrorIndex() != -1) {
+            errln("FAIL: Error index should be -1");
+        }
+    
+        // The underlying bug is in GregorianCalendar.  If the following lines
+        // succeed, the bug is fixed.  If the bug isn't fixed, they will throw
+        // an exception.
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.clear();
+        cal.setLenient(false);
+        cal.set(2000, Calendar.FEBRUARY, 29); // This should work!
+        logln("Attempt to set Calendar to Feb 29 2000: " + disp.format(cal.getTime()));
+    }
+    
+    public void Test714() {
+        //TimeZone Offset
+        TimeZone defaultTZ = TimeZone.getDefault();
+        TimeZone PST = TimeZone.getTimeZone("PST");
+        int defaultOffset = defaultTZ.getRawOffset();
+        int PSTOffset = PST.getRawOffset();
+        Date d = new Date(978103543000l - (defaultOffset - PSTOffset));
+        d = new Date(d.getTime() - (defaultTZ.inDaylightTime(d) ? 3600000 : 0));
+        DateFormat fmt = DateFormat.getDateTimeInstance(-1, DateFormat.MEDIUM, Locale.US);
+        String tests = "7:25:43 AM";
+        String s = fmt.format(d);
+        if (!s.equals(tests)) {
+            errln("Fail: " + s + " != " + tests);
+        } else {
+            logln("OK: " + s + " == " + tests);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java b/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java
new file mode 100755
index 0000000..1e65bf2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java
@@ -0,0 +1,286 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java,v $ 
+ * $Date: 2002/02/16 03:05:08 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+
+/*
+ * New added, 2001-10-17 [Jing/GCL]
+ */
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Date;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Locale;
+import java.text.FieldPosition;
+
+public class DateFormatRegressionTestJ extends com.ibm.icu.dev.test.TestFmwk {
+    
+    static final String TIME_STRING = "2000/11/17 08:01:00";
+    static final long UTC_LONG = 974476860000L;
+    static SimpleDateFormat sdf_ = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+    
+    public static void main(String[] args) throws Exception {
+        new DateFormatRegressionTestJ().run(args);
+    }
+    
+    //Return value of getAmPmStrings
+    public void Test4103926() {
+        String act_Ampms[];
+        String exp_Ampms[]={"AM","PM"};
+        Locale.setDefault(Locale.US);
+        
+        DateFormatSymbols dfs = new DateFormatSymbols();
+        act_Ampms = dfs.getAmPmStrings();
+        if(act_Ampms.length != exp_Ampms.length) {
+            errln("The result is not expected!");
+        } else {
+            for(int i =0; i<act_Ampms.length; i++) {
+                if(!act_Ampms[i].equals(exp_Ampms[i]))
+                    errln("The result is not expected!");
+            }
+        }
+    }
+    
+    //Missing digit in millisecone format in SimpleDateFormat 
+    public void Test4148168() {
+            Date d = new Date(1002705212906l); 
+            String[] ISOPattern = {
+                "''yyyy-MM-dd-hh.mm.ss.S''", "''yyyy-MM-dd-hh.mm.ss.SS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSS''", "''yyyy-MM-dd-hh.mm.ss.SSSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSSS''", "''yyyy-MM-dd-hh.mm.ss.SSSSSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSSSSS''", "''yyyy-MM-dd-hh.mm.ss.SSS000''"};
+            SimpleDateFormat aSimpleDF = (SimpleDateFormat)DateFormat.getDateTimeInstance();
+    
+            for(int i = 0; i<ISOPattern.length; i++) {
+                aSimpleDF.applyPattern( ISOPattern[i] );
+                logln( "Pattern = " + aSimpleDF.toPattern());
+                logln( "Format = " + aSimpleDF.format(d));
+            }
+    }
+    
+    //DateFormat getDateTimeInstance(int, int), invalid styles no exception
+    public void Test4213086() {
+        Date someDate = new Date();
+        String d;
+        try {
+            DateFormat df2 = DateFormat.getDateTimeInstance(2, -2);
+            d = df2.format(someDate);
+            errln("we should catch an exception here");
+        } catch(Exception e){
+            logln("dateStyle = 2" + "\t timeStyle = -2");
+            logln("Exception caught!");
+        }            
+        
+        try {
+            DateFormat df3 = DateFormat.getDateTimeInstance(4, 2);
+            d = df3.format(someDate);
+            errln("we should catch an exception here");
+        } catch(Exception e){
+            logln("dateStyle = 4" + "\t timeStyle = 2");
+            logln("Exception caught!");
+            logln("********************************************");
+        }
+    
+        try {
+            DateFormat df4 = DateFormat.getDateTimeInstance(-12, -12);
+            d = df4.format(someDate);
+            errln("we should catch an exception here");
+        } catch(Exception e){
+            logln("dateStyle = -12" + "\t timeStyle = -12");
+            logln("Exception caught!");
+            logln("********************************************");
+        }
+    
+        try{
+            DateFormat df5 = DateFormat.getDateTimeInstance(2, 123);
+            d = df5.format(someDate);    
+            errln("we should catch an exception here");
+        } catch(Exception e){
+            logln("dateStyle = 2" + "\t timeStyle = 123");
+            logln("Exception caught!");
+            logln("********************************************");
+        }
+    }
+    
+    //DateFormat.format works wrongly?
+    public void Test4250359() {
+        Locale.setDefault(Locale.US);
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(101 + 1900, 9, 9, 17, 53);
+        Date d = cal.getTime();
+        DateFormat tf = DateFormat.getTimeInstance(DateFormat.SHORT);
+        String act_result = tf.format(d);
+        String exp_result = "5:53 PM";
+        
+        if(!act_result.equals(exp_result)){
+            errln("The result is not expected");
+        }
+    }
+    
+    //pattern "s.S, parse '1ms'"
+    public void Test4253490() {
+        Date d = new Date(1002705212231l);
+    
+        String[] ISOPattern = {
+                "''yyyy-MM-dd-hh.mm.ss.S''", 
+                "''yyyy-MM-dd-hh.mm.ss.SS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSSSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSSSSS''"}; 
+    
+        SimpleDateFormat aSimpleDF = (SimpleDateFormat) DateFormat.getDateTimeInstance();
+        for (int i = 0; i < ISOPattern.length; i++) {
+            aSimpleDF.applyPattern(ISOPattern[i]);
+            logln("Pattern = " + aSimpleDF.toPattern());
+            logln("Format = " + aSimpleDF.format(d));
+        }
+    }
+    
+    //about regression test
+    public void Test4266432() {
+        Locale.setDefault(Locale.JAPAN);
+        Locale loc = Locale.getDefault();
+        String dateFormat = "MM/dd/yy HH:mm:ss zzz";
+        SimpleDateFormat fmt = new SimpleDateFormat(dateFormat);
+    
+        ParsePosition p0 = new ParsePosition(0);
+        logln("Under  " + loc +"  locale");
+        Date d = fmt.parse("01/22/92 04:52:00 GMT", p0);
+        logln(d.toString());
+    }
+    
+    //SimpleDateFormat inconsistent for number of digits for years
+    public void Test4358730() {
+        SimpleDateFormat sdf = new SimpleDateFormat();
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(2001,11,10);
+        Date today = cal.getTime();
+    
+        sdf.applyPattern("MM d y");
+        logln(sdf.format(today));
+        sdf.applyPattern("MM d yy");
+        logln(sdf.format(today));
+    
+        sdf.applyPattern("MM d yyy");
+        logln(sdf.format(today));
+    
+        sdf.applyPattern("MM d yyyy");
+        logln(sdf.format(today));
+    
+        sdf.applyPattern("MM d yyyyy");
+        logln(sdf.format(today));
+    }
+    
+    //Parse invalid string
+    public void Test4375399() {
+        final String pattern = new String("yyyy.MM.dd G 'at' hh:mm:ss z");
+        SimpleDateFormat sdf = new SimpleDateFormat(pattern, Locale.JAPAN);
+        try{
+            Date currentTime = sdf.parse("vggf 20  01.0 9.29 ap. J.-C. at 05:26:33 GMT+08:00",
+                                new ParsePosition(0));
+            if(currentTime ==null)
+                logln("parse right");
+        } catch(Exception e){
+            errln("Error");
+        }
+    }
+    /*
+    public void Test4407042() {
+        DateParseThread d1 = new DateParseThread();
+        DateFormatThread d2 = new DateFormatThread();
+        d1.start();
+        d2.start();
+        try {
+            logln("test");
+            Thread.sleep(1000);
+        } catch (Exception e) {}
+    }*/
+    
+    public void Test4468663() {
+        Date d =new Date(-93716671115767l);
+        String origin_d = d.toString();
+        String str;
+        final String pattern = new String("EEEE, MMMM d, yyyy");
+        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
+
+        if (sdf.getTimeZone().useDaylightTime()) {
+            logln("original date: " + origin_d.toString());
+            str = sdf.format(d);
+            logln(" after format----->" + str);
+            
+            d = sdf.parse(str, new ParsePosition(0));
+            logln(" after parse----->" + d.toString());
+    
+            str = sdf.format(d);
+            logln(" after format----->" + str);
+    
+            d = sdf.parse(str, new ParsePosition(0));
+            logln(" after parse----->" + d.toString());
+    
+            str = sdf.format(d);
+            logln(" after format----->" + str);        
+        }
+    }
+    
+    //Class used by Test4407042
+    class DateParseThread extends Thread {
+        public void run() {
+            SimpleDateFormat sdf = (SimpleDateFormat) sdf_.clone();
+            TimeZone defaultTZ = TimeZone.getDefault();
+            TimeZone PST = TimeZone.getTimeZone("PST");
+            int defaultOffset = defaultTZ.getRawOffset();
+            int PSTOffset = PST.getRawOffset();
+            int offset = defaultOffset - PSTOffset;
+            long ms = UTC_LONG - offset;
+            try {
+                int i = 0;
+                while (i < 10000) {
+                    Date date = sdf.parse(TIME_STRING);
+                    long t = date.getTime();
+                    i++;
+                    if (t != ms) {
+                        throw new ParseException("Parse Error: " + i + " (" + sdf.format(date) 
+                                  + ") " + t + " != " + ms, 0);
+                    }
+                }
+            } catch (Exception e) {
+                errln("parse error: " + e.getMessage());
+            }
+        }
+    }
+    
+    //Class used by Test4407042
+    class DateFormatThread extends Thread {
+        public void run() {            
+            SimpleDateFormat sdf = (SimpleDateFormat) sdf_.clone();
+            TimeZone tz = TimeZone.getTimeZone("PST");
+            sdf.setTimeZone(tz);
+            int i = 0;
+            while (i < 10000) {
+                i++;
+                String s = sdf.format(new Date(UTC_LONG));
+                if (!s.equals(TIME_STRING)) {
+                    errln("Format Error: " + i + " " + s + " != " 
+                                    + TIME_STRING);
+                }
+            }
+        }
+    }
+    
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java b/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java
new file mode 100755
index 0000000..bfde429
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java
@@ -0,0 +1,273 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java,v $ 
+ * $Date: 2002/02/16 03:05:08 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : DateFormatRoundTripTest
+ * Source File: $ICU4CRoot/source/test/intltest/dtfmtrtts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Locale;
+import java.util.Date;
+import java.util.Random;
+import java.text.FieldPosition;
+import java.text.ParseException;
+
+/** 
+ * Performs round-trip tests for DateFormat
+ **/
+public class DateFormatRoundTripTest extends com.ibm.icu.dev.test.TestFmwk {
+    public boolean INFINITE = false;
+    public boolean quick = true;
+    private SimpleDateFormat dateFormat;
+    private Calendar getFieldCal;
+    private int SPARSENESS = 18;
+    private int TRIALS = 4;
+    private int DEPTH = 5;
+    private Random ran = new Random();
+
+    public static void main(String[] args) throws Exception {
+        new DateFormatRoundTripTest().run(args);
+    }
+    
+    public void TestDateFormatRoundTrip() {
+        dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss.SSS zzz yyyy G");
+        getFieldCal = Calendar.getInstance();
+    
+        final Locale[] avail = DateFormat.getAvailableLocales();
+        int locCount = avail.length;
+        logln("DateFormat available locales: " + locCount);
+        if (quick) {
+            if (locCount > 5)
+                locCount = 5;
+            logln("Quick mode: only testing first 5 Locales");
+        }
+        TimeZone tz = TimeZone.getDefault();
+        logln("Default TimeZone:             " + tz.getID());
+    
+        if (INFINITE) {
+            // Special infinite loop test mode for finding hard to reproduce errors
+            Locale loc = Locale.getDefault();
+            logln("ENTERING INFINITE TEST LOOP FOR Locale: " + loc.getDisplayName());
+            for (;;) {
+                _test(loc);
+            }
+        } else {        
+            _test(Locale.getDefault());
+            for (int i = 0; i < locCount; ++i) {
+                _test(avail[i]);
+            }
+        }
+    }
+    
+    public String styleName(int s) {
+        switch (s) {
+            case DateFormat.SHORT :
+                return "SHORT";
+            case DateFormat.MEDIUM :
+                return "MEDIUM";
+            case DateFormat.LONG :
+                return "LONG";
+            case DateFormat.FULL :
+                return "FULL";
+            default :
+                return "Unknown";
+        }
+    }
+    
+    public void _test(Locale loc) {
+        if (!INFINITE) {
+            logln("Locale: " + loc.getDisplayName());
+        }
+        // Total possibilities = 24
+        //  4 date
+        //  4 time
+        //  16 date-time
+        boolean[] TEST_TABLE = new boolean[24];
+        int i = 0;
+        for (i = 0; i < 24; ++i)
+            TEST_TABLE[i] = true;
+    
+        // If we have some sparseness, implement it here.  Sparseness decreases
+        // test time by eliminating some tests, up to 23.
+        for (i = 0; i < SPARSENESS; i++) {
+            int random = (int) (ran.nextDouble() * 24);
+            if (random >= 0 && random < 24 && TEST_TABLE[i]) {
+                TEST_TABLE[random] = false;
+            }
+        }    
+        
+        int itable = 0;
+        int style = 0;
+        for (style = DateFormat.FULL; style <= DateFormat.SHORT; ++style) {
+            if (TEST_TABLE[itable++]) {
+                logln("Testing style " + styleName(style)); 
+                DateFormat df = DateFormat.getDateInstance(style, loc); 
+                _test(df, false);
+            }
+        }
+    
+        for (style = DateFormat.FULL; style <= DateFormat.SHORT; ++style) {
+            if (TEST_TABLE[itable++]) {
+                logln("Testing style " + styleName(style));
+                DateFormat  df = DateFormat.getTimeInstance(style, loc); 
+                _test(df, true);
+            }
+        }
+    
+        for (int dstyle = DateFormat.FULL; dstyle <= DateFormat.SHORT; ++dstyle) {
+            for (int tstyle = DateFormat.FULL; tstyle <= DateFormat.SHORT; ++tstyle) {
+                if (TEST_TABLE[itable++]) {
+                    logln("Testing dstyle " + styleName(dstyle) + ", tstyle " + styleName(tstyle)); 
+                    DateFormat df = DateFormat.getDateTimeInstance(dstyle, tstyle, loc); 
+                    _test(df, false);
+                }
+            }
+        }
+    }
+    
+    public void _test(DateFormat fmt, boolean timeOnly) {
+    
+        if (!(fmt instanceof SimpleDateFormat)) {
+            errln("DateFormat wasn't a SimpleDateFormat");
+            return;
+        }
+    
+        String pat = ((SimpleDateFormat) fmt).toPattern();
+        logln(pat);
+    
+        // NOTE TO MAINTAINER
+        // This indexOf check into the pattern needs to be refined to ignore
+        // quoted characters.  Currently, this isn't a problem with the locale
+        // patterns we have, but it may be a problem later.
+    
+        boolean hasEra = (pat.indexOf("G") != -1);
+        boolean hasZone = (pat.indexOf("z") != -1);
+    
+        // Because patterns contain incomplete data representing the Date,
+        // we must be careful of how we do the roundtrip.  We start with
+        // a randomly generated Date because they're easier to generate.
+        // From this we get a string.  The string is our real starting point,
+        // because this string should parse the same way all the time.  Note
+        // that it will not necessarily parse back to the original date because
+        // of incompleteness in patterns.  For example, a time-only pattern won't
+        // parse back to the same date.
+    
+        try {
+            for (int i = 0; i < TRIALS; ++i) {
+                Date[] d = new Date[DEPTH];
+                String[] s = new String[DEPTH];
+    
+                d[0] = generateDate();
+                
+                // We go through this loop until we achieve a match or until
+                // the maximum loop count is reached.  We record the points at
+                // which the date and the string starts to match.  Once matching
+                // starts, it should continue.
+                int loop;
+                int dmatch = 0; // d[dmatch].getTime() == d[dmatch-1].getTime()
+                int smatch = 0; // s[smatch].equals(s[smatch-1])
+                for (loop = 0; loop < DEPTH; ++loop) {
+                    if (loop > 0) {
+                        d[loop] = fmt.parse(s[loop - 1]);
+                    }
+    
+                    s[loop] = fmt.format(d[loop]);
+    
+                    if (loop > 0) {
+                        if (smatch == 0) {
+                            boolean match = s[loop].equals(s[loop - 1]);
+                            if (smatch == 0) {
+                                if (match)
+                                    smatch = loop;
+                            } else
+                                if (!match)
+                                    errln("FAIL: String mismatch after match");
+                        }
+    
+                        if (dmatch == 0) {
+                            // {sfb} watch out here, this might not work
+                            boolean match = d[loop].getTime() == d[loop - 1].getTime();
+                            if (dmatch == 0) {
+                                if (match)
+                                    dmatch = loop;
+                            } else
+                                if (!match)
+                                    errln("FAIL: Date mismatch after match");
+                        }
+    
+                        if (smatch != 0 && dmatch != 0)
+                            break;
+                    }
+                }
+                // At this point loop == DEPTH if we've failed, otherwise loop is the
+                // max(smatch, dmatch), that is, the index at which we have string and
+                // date matching.
+    
+                // Date usually matches in 2.  Exceptions handled below.
+                int maxDmatch = 2;
+                int maxSmatch = 1;
+                if (dmatch > maxDmatch || smatch > maxSmatch) {
+                    //If the Date is BC
+                    if (!timeOnly && !hasEra && getField(d[0], Calendar.ERA) == GregorianCalendar.BC) {
+                        maxDmatch = 3;
+                        maxSmatch = 2;
+                    }
+                    if (hasZone && (fmt.getTimeZone().inDaylightTime(d[0]) || fmt.getTimeZone().inDaylightTime(d[1]) )) {
+                        maxSmatch = 2;
+                        if (timeOnly) {
+                            maxDmatch = 3;
+                        }
+                    }
+                }
+                    
+                if (dmatch > maxDmatch || smatch > maxSmatch) {
+                    SimpleDateFormat sdf = new SimpleDateFormat("EEEE, MMMM d, yyyy HH:mm:ss, z G", Locale.US);                    
+                    logln("Date = " + sdf.format(d[0]) + "; ms = " + d[0].getTime());
+                    logln("Dmatch: " + dmatch + " maxD: " + maxDmatch + " Smatch:" + smatch + " maxS:" + maxSmatch);
+                    errln("Pattern: " + pat + " failed to match" + "; ms = " + d[0].getTime());
+                    for (int j = 0; j <= loop && j < DEPTH; ++j) {
+                        StringBuffer temp = new StringBuffer("");
+                        FieldPosition pos = new FieldPosition(0);
+                        logln((j > 0 ? " P> " : "    ") + dateFormat.format(d[j], temp, pos) 
+                            + " F> " + s[j] + (j > 0 && d[j].getTime() == d[j - 1].getTime() ? " d==" : "")
+                            + (j > 0 && s[j].equals(s[j - 1]) ? " s==" : ""));
+                    }
+                }
+            }
+        } catch (ParseException e) {
+            errln("Exception: " + e.getMessage());
+            logln(e.toString());
+        }
+    }
+    
+    public int getField(Date d, int f) {
+        getFieldCal.setTime(d);
+        int ret = getFieldCal.get(f);    
+        return ret;
+    }
+    
+    public Date generateDate() {
+        double a = ran.nextDouble();
+        // Now 'a' ranges from 0..1; scale it to range from 0 to 8000 years
+        a *= 8000;
+        // Range from (4000-1970) BC to (8000-1970) AD
+        a -= 4000;
+        // Now scale up to ms
+        a *= 365.25 * 24 * 60 * 60 * 1000;
+        return new Date((long)a);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/DateFormatTest.java b/src/com/ibm/icu/dev/test/format/DateFormatTest.java
new file mode 100755
index 0000000..6f232a1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateFormatTest.java
@@ -0,0 +1,839 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/DateFormatTest.java,v $ 
+ * $Date: 2002/04/09 23:33:13 $ 
+ * $Revision: 1.8 $
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : DateFormatTest
+ * Source File: $ICU4CRoot/source/test/intltest/dtfmttst.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Date;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Locale;
+import java.text.FieldPosition;
+
+public class DateFormatTest extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args) throws Exception {
+        new DateFormatTest().run(args);
+    }
+    
+    // Test written by Wally Wedel and emailed to me.
+    public void TestWallyWedel() {
+        /*
+         * Instantiate a TimeZone so we can get the ids.
+         */
+        //TimeZone tz = new SimpleTimeZone(7, ""); //The variable is never used
+        /*
+         * Computational variables.
+         */
+        int offset, hours, minutes;
+        /*
+         * Instantiate a SimpleDateFormat set up to produce a full time
+         zone name.
+         */
+        SimpleDateFormat sdf = new SimpleDateFormat("zzzz");
+        /*
+         * A String array for the time zone ids.
+         */
+    
+        final String[] ids = TimeZone.getAvailableIDs();
+        int ids_length = ids.length; //when fixed the bug should comment it out
+    
+        /*
+         * How many ids do we have?
+         */
+        logln("Time Zone IDs size:" + ids_length);
+        /*
+         * Column headings (sort of)
+         */
+        logln("Ordinal ID offset(h:m) name");
+        /*
+         * Loop through the tzs.
+         */
+        Date today = new Date();
+        Calendar cal = Calendar.getInstance();
+        for (int i = 0; i < ids_length; i++) {
+            logln(i + " " + ids[i]);
+            TimeZone ttz = TimeZone.getTimeZone(ids[i]);
+            // offset = ttz.getRawOffset();
+            cal.setTimeZone(ttz);
+            cal.setTime(today);
+            offset = cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET);
+            // logln(i + " " + ids[i] + " offset " + offset);
+            String sign = "+";
+            if (offset < 0) {
+                sign = "-";
+                offset = -offset;
+            }
+            hours = offset / 3600000;
+            minutes = (offset % 3600000) / 60000;
+            String dstOffset = sign + (hours < 10 ? "0" : "") + hours
+                    + ":" + (minutes < 10 ? "0" : "") + minutes; 
+            /*
+             * Instantiate a date so we can display the time zone name.
+             */
+            sdf.setTimeZone(ttz);
+            /*
+             * Format the output.
+             */
+            StringBuffer fmtOffset = new StringBuffer("");
+            FieldPosition pos = new FieldPosition(0);
+            
+            try {
+                fmtOffset = sdf.format(today, fmtOffset, pos);
+            } catch (Exception e) {            
+                logln("Exception:" + e);
+                continue;
+            }
+            // UnicodeString fmtOffset = tzS.toString();
+            String fmtDstOffset = null;
+            if (fmtOffset.toString().startsWith("GMT")) {
+                //fmtDstOffset = fmtOffset.substring(3);
+                fmtDstOffset = fmtOffset.substring(3, fmtOffset.length());
+            }
+            /*
+             * Show our result.
+             */
+    
+            boolean ok = fmtDstOffset == null || fmtDstOffset.equals(dstOffset);
+            //fix the jdk resources differences between jdk 1.2/1.3.0 and jdk 1.3.1
+            String javaVersion = System.getProperty("java.version");
+            ok = ok || ((javaVersion.startsWith("1.2") || javaVersion.startsWith("1.3.0")) && (fmtDstOffset != null) && fmtDstOffset.equals(""));
+            if (ok) {
+                logln(i + " " + ids[i] + " " + dstOffset + " "
+                      + fmtOffset + (fmtDstOffset != null ? " ok" : " ?")); 
+            } else {
+                errln(i + " " + ids[i] + " " + dstOffset + " " + fmtOffset + " *** FAIL ***");
+            }
+        
+        }
+    }
+    
+    public void TestEquals() {
+        DateFormat fmtA = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.FULL); 
+        DateFormat fmtB = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.FULL); 
+        if (!fmtA.equals(fmtB))
+            errln("FAIL");    
+    }
+    
+    /**
+     * Test the parsing of 2-digit years.
+     */
+    public void TestTwoDigitYearDSTParse() {
+    
+        SimpleDateFormat fullFmt = new SimpleDateFormat("EEE MMM dd HH:mm:ss.SSS zzz yyyy G"); 
+        SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM-yy h:mm:ss 'o''clock' a z", Locale.ENGLISH); 
+        String s = "03-Apr-04 2:20:47 o'clock AM PST";
+    
+        /*
+         * SimpleDateFormat(pattern, locale) Construct a SimpleDateDateFormat using
+         * the givening pattern, the locale and using the TimeZone.getDefault();
+         * So it need to add the timezone offset on hour field. 
+         * ps. the Method Calendar.getTime() used by SimpleDateFormat.parse() always 
+         * return Date vaule with TimeZone.getDefault() [Richard/GCL]
+         */
+        
+        TimeZone defaultTZ = TimeZone.getDefault();
+        TimeZone PST = TimeZone.getTimeZone("PST");
+        int defaultOffset = defaultTZ.getRawOffset();
+        int PSTOffset = PST.getRawOffset();
+        int hour = 2 + (defaultOffset - PSTOffset) / (60*60*1000);
+        hour = (hour < 0) ? hour + 24 : hour;
+        try {
+            Date d = fmt.parse(s);
+            Calendar cal = Calendar.getInstance();
+            cal.setTime(d);
+            //DSTOffset
+            hour += defaultTZ.inDaylightTime(d) ? 1 : 0;
+            
+            logln(s + " P> " + ((DateFormat) fullFmt).format(d));
+            int hr = cal.get(Calendar.HOUR_OF_DAY);
+            if (hr != hour)
+                errln("FAIL: Should parse to hour " + hour);
+        } catch (ParseException e) {
+            errln("Parse Error:" + e.getMessage());
+        }
+    
+    }
+    
+    /**
+     * Verify that returned field position indices are correct.
+     */
+    public void TestFieldPosition() {
+        DateFormat[] dateFormats = new DateFormat[4];
+        int dateFormats_length = dateFormats.length;
+        String fieldNames[] = {
+                "ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH", "DAY_OF_MONTH",   "DAY_OF_YEAR",
+                "DAY_OF_WEEK",   "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR","HOUR_OF_DAY","MINUTE",
+                "SECOND", "MILLISECOND", "ZONE_OFFSET" };
+        /* {sfb} This test was coded incorrectly.
+        / FieldPosition uses the fields in the class you are formatting with
+        / So, for example, to get the DATE field from a DateFormat use
+        / DateFormat.DATE_FIELD, __not__ Calendar.DATE
+        / The ordering of the expected values used previously was wrong.
+        / instead of re-ordering this mess of strings, just transform the index values */
+    
+        /* field values, in Calendar order */
+        final String[] expected =
+            { "", "1997", "August", "", "", "13", "", "Wednesday", "", "PM", "2", "", "34", "12", "", "PDT",
+            /* Following two added by weiv for two new fields */"", "1997", "#", 
+            /* # is a marker for "ao\xfbt" == "aou^t" */
+            "", "", "13", "", "mercredi", "", "", "", "14", "34", "", "", "PDT",
+            /* Following two added by weiv for two new fields */
+            "AD", "1997", "8", "33", "3", "13", "225", "Wed", "2", "PM", "2", "14", "34", "12", "513", "PDT",
+            /* Following two added by weiv for two new fields */
+            "AD",  "1997",  "August",  "0033", "0003", "0013", "0225", "Wednesday", "0002",
+             "PM", "0002",  "0014", "0034", "0012",   "0513", "Pacific Daylight Time",
+            /* Following two added by weiv for two new fields */ "1997", "0004", "" };
+    
+        Date someDate = new Date((long) 871508052513.0);
+        int j, exp;
+    
+        dateFormats[0] = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.US);
+        dateFormats[1] = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.FRANCE);
+        dateFormats[2] = new SimpleDateFormat("G, y, M, d, k, H, m, s, S, E, D, F, w, W, a, h, K, z, y, E", Locale.US);
+        dateFormats[3] = new SimpleDateFormat("GGGG, yyyy, MMMM, dddd, kkkk, HHHH, mmmm, ssss, SSSS, EEEE, DDDD, FFFF, wwww, WWWW, aaaa, hhhh, KKKK, zzzz, yyyy, EEEE", Locale.US);
+        //fix the jdk resources differences between jdk 1.2 and jdk 1.3
+        String javaVersion = System.getProperty("java.version");
+        
+        for (j = 0, exp = 0; j < dateFormats_length; ++j) {
+            String str;
+            DateFormat df = dateFormats[j];
+            TimeZone tz = TimeZone.getTimeZone("PST");
+            ((SimpleTimeZone)tz).setDSTSavings(3600000);
+            df.setTimeZone(tz);
+            logln(" Pattern = " + ((SimpleDateFormat) df).toPattern());
+            str = "";
+            try {
+                logln("  Result = " + df.format(someDate));
+            } catch (Exception e) {
+                System.out.println(e);
+            }
+            for (int i = 0; i < fieldNames.length; ++i) {
+                String field = getFieldText(df, i, someDate);
+                String expStr = "";
+                if (!expected[exp].substring(0).equals("#")) {
+                    expStr = expected[exp];
+                } else {
+                    // we cannot have latin-1 characters in source code, therefore we fix up the string for "aou^t" 
+                    expStr = expStr + "\u0061" + "\u006f" + "\u00fb" + "\u0074";
+                }
+                if (/*javaVersion.startsWith("1.2") &&*/ (exp==31)) {
+                    expStr = "GMT-07:00";
+                }
+                if (!field.equals(expStr))
+                    errln("FAIL: field #" + i + " " + fieldNames[i] + " = \"" + field + "\", expected \"" + expStr + "\"");
+                ++exp;
+            }
+        }
+    }
+    
+    // internal utility function
+    public String getFieldText(DateFormat df, int field, Date date) {
+        final int[] fgCalendarToDateFormatField ={
+            DateFormat.ERA_FIELD, 
+            DateFormat.YEAR_FIELD, 
+            DateFormat.MONTH_FIELD,
+            DateFormat.WEEK_OF_YEAR_FIELD, 
+            DateFormat.WEEK_OF_MONTH_FIELD,
+            DateFormat.DATE_FIELD, 
+            DateFormat.DAY_OF_YEAR_FIELD, 
+            DateFormat.DAY_OF_WEEK_FIELD,     
+            DateFormat.DAY_OF_WEEK_IN_MONTH_FIELD, 
+            DateFormat.AM_PM_FIELD,
+            DateFormat.HOUR1_FIELD, 
+            DateFormat.HOUR_OF_DAY0_FIELD, 
+            DateFormat.MINUTE_FIELD, 
+            DateFormat.SECOND_FIELD, 
+            DateFormat.MILLISECOND_FIELD,
+            DateFormat.TIMEZONE_FIELD
+            };
+        StringBuffer formatResult = new StringBuffer("");
+        // {sfb} added to convert Calendar Fields to DateFormat fields
+        FieldPosition pos = new FieldPosition(fgCalendarToDateFormatField[field]);
+        formatResult = df.format(date, formatResult, pos);    
+        return formatResult.substring(pos.getBeginIndex(), pos.getEndIndex());
+    }
+    
+    /**
+     * Verify that strings which contain incomplete specifications are parsed
+     * correctly.  In some instances, this means not being parsed at all, and
+     * returning an appropriate error.
+     */
+    public void TestPartialParse994() {
+    
+        SimpleDateFormat f = new SimpleDateFormat();
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1997, 1 - 1, 17, 10, 11, 42);
+        Date date = null;
+        tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10:11:42", cal.getTime());
+        tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10:", date);
+        tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10", date);
+        tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 ", date);
+        tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17", date);
+    }
+    
+    // internal test subroutine, used by TestPartialParse994
+    public void tryPat994(SimpleDateFormat format, String pat, String str, Date expected) {
+        Date Null = null;
+        logln("Pattern \"" + pat + "\"   String \"" + str + "\"");
+        try {
+            format.applyPattern(pat);
+            Date date = format.parse(str);    
+            String f = ((DateFormat) format).format(date);
+            logln(" parse(" + str + ") -> " + date);
+            logln(" format -> " + f);
+            if (expected.equals(Null) || !date.equals(expected))
+                errln("FAIL: Expected null"); //" + expected);
+            if (!f.equals(str))
+                errln("FAIL: Expected " + str);
+        } catch (ParseException e) {
+            logln("ParseException: " + e.getMessage());
+            if (!(expected ==Null))
+                errln("FAIL: Expected " + expected);
+        } catch (Exception e) {
+            errln("*** Exception:");
+            e.printStackTrace();
+        }
+    }
+    
+    /**
+     * Verify the behavior of patterns in which digits for different fields run together
+     * without intervening separators.
+     */
+    public void TestRunTogetherPattern985() {
+        String format = "yyyyMMddHHmmssSSS";
+        String now, then;
+        //UBool flag;
+        SimpleDateFormat formatter = new SimpleDateFormat(format);
+        Date date1 = new Date();
+        now = ((DateFormat) formatter).format(date1);
+        logln(now);
+        ParsePosition pos = new ParsePosition(0);
+        Date date2 = formatter.parse(now, pos);
+        if (date2 == null)
+            then = "Parse stopped at " + pos.getIndex();
+        else
+            then = ((DateFormat) formatter).format(date2);
+        logln(then);
+        if (!date2.equals(date1))
+            errln("FAIL");
+    }
+
+    /**
+     * Verify the behavior of patterns in which digits for different fields run together
+     * without intervening separators.
+     */
+    public void TestRunTogetherPattern917() {
+        SimpleDateFormat fmt;
+        String myDate;
+        fmt = new SimpleDateFormat("yyyy/MM/dd");
+        myDate = "1997/02/03";
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1997, 2 - 1, 3);
+        _testIt917(fmt, myDate, cal.getTime());
+        fmt = new SimpleDateFormat("yyyyMMdd");
+        myDate = "19970304";
+        cal.clear();
+        cal.set(1997, 3 - 1, 4);
+        _testIt917(fmt, myDate, cal.getTime());
+    
+    }
+    
+    // internal test subroutine, used by TestRunTogetherPattern917
+    public void _testIt917(SimpleDateFormat fmt, String str, Date expected) {
+        logln("pattern=" + fmt.toPattern() + "   string=" + str);
+        Date o = new Date();
+        o = (Date) ((DateFormat) fmt).parseObject(str, new ParsePosition(0));
+        logln("Parsed object: " + o);
+        if (!o.equals(expected))
+            errln("FAIL: Expected " + expected);
+        String formatted = ((DateFormat) fmt).format(o);
+        logln( "Formatted string: " + formatted);
+        if (!formatted.equals(str))
+            errln( "FAIL: Expected " + str);
+    }
+    
+    /**
+     * Verify the handling of Czech June and July, which have the unique attribute that
+     * one is a proper prefix substring of the other.
+     */
+    public void TestCzechMonths459() {
+        DateFormat fmt = DateFormat.getDateInstance(DateFormat.FULL, new Locale("cs", "", "")); 
+        logln("Pattern " + ((SimpleDateFormat) fmt).toPattern());
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1997, Calendar.JUNE, 15);
+        Date june = cal.getTime();
+        cal.clear();
+        cal.set(1997, Calendar.JULY, 15);
+        Date july = cal.getTime();
+        String juneStr = fmt.format(june);
+        String julyStr = fmt.format(july);
+        try {
+            logln("format(June 15 1997) = " + juneStr);
+            Date d = fmt.parse(juneStr);
+            String s = fmt.format(d);
+            int month, yr, day, hr, min, sec;
+            cal.setTime(d);
+            yr = cal.get(Calendar.YEAR) - 1900;
+            month = cal.get(Calendar.MONTH);
+            day = cal.get(Calendar.DAY_OF_WEEK);
+            hr = cal.get(Calendar.HOUR_OF_DAY);
+            min = cal.get(Calendar.MINUTE);
+            sec = cal.get(Calendar.SECOND);
+            logln("  . parse . " + s + " (month = " + month + ")");
+            if (month != Calendar.JUNE)
+                errln("FAIL: Month should be June");
+            logln("format(July 15 1997) = " + julyStr);
+            d = fmt.parse(julyStr);
+            s = fmt.format(d);
+            cal.setTime(d);
+            yr = cal.get(Calendar.YEAR) - 1900;
+            month = cal.get(Calendar.MONTH);
+            day = cal.get(Calendar.DAY_OF_WEEK);
+            hr = cal.get(Calendar.HOUR_OF_DAY);
+            min = cal.get(Calendar.MINUTE);
+            sec = cal.get(Calendar.SECOND);
+            logln("  . parse . " + s + " (month = " + month + ")");
+            if (month != Calendar.JULY)
+                errln("FAIL: Month should be July");
+        } catch (ParseException e) {
+            errln(e.getMessage());
+        }
+    }
+    
+    /**
+     * Test the handling of 'D' in patterns.
+     */
+    public void TestLetterDPattern212() {
+        String dateString = "1995-040.05:01:29";
+        String bigD = "yyyy-DDD.hh:mm:ss";
+        String littleD = "yyyy-ddd.hh:mm:ss";
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1995, 0, 1, 5, 1, 29);
+        Date expLittleD = cal.getTime();
+        Date expBigD = new Date((long) (expLittleD.getTime() + 39 * 24 * 3600000.0));
+        expLittleD = expBigD; // Expect the same, with default lenient parsing
+        logln("dateString= " + dateString);
+        SimpleDateFormat formatter = new SimpleDateFormat(bigD);
+        ParsePosition pos = new ParsePosition(0);
+        Date myDate = formatter.parse(dateString, pos);
+        logln("Using " + bigD + " . " + myDate);
+        if (!myDate.equals(expBigD))
+            errln("FAIL: Expected " + expBigD);
+        formatter = new SimpleDateFormat(littleD);
+        pos = new ParsePosition(0);
+        myDate = formatter.parse(dateString, pos);
+        logln("Using " + littleD + " . " + myDate);
+        if (!myDate.equals(expLittleD))
+            errln("FAIL: Expected " + expLittleD);
+    }
+    
+    /**
+     * Test the day of year pattern.
+     */
+    public void TestDayOfYearPattern195() {
+        Calendar cal = Calendar.getInstance();
+        Date today = cal.getTime();
+        int year,month,day; 
+        year = cal.get(Calendar.YEAR);
+        month = cal.get(Calendar.MONTH);
+        day = cal.get(Calendar.DAY_OF_MONTH);
+        cal.clear();
+        cal.set(year, month, day);
+        Date expected = cal.getTime();
+        logln("Test Date: " + today);
+        SimpleDateFormat sdf = (SimpleDateFormat)DateFormat.getDateInstance();
+        tryPattern(sdf, today, null, expected);
+        tryPattern(sdf, today, "G yyyy DDD", expected);
+    }
+    
+    // interl test subroutine, used by TestDayOfYearPattern195
+    public void tryPattern(SimpleDateFormat sdf, Date d, String pattern, Date expected) {
+        if (pattern != null)
+            sdf.applyPattern(pattern);
+        logln("pattern: " + sdf.toPattern());
+        String formatResult = ((DateFormat) sdf).format(d);
+        logln(" format -> " + formatResult);
+        try {
+            Date d2 = sdf.parse(formatResult);
+            logln(" parse(" + formatResult + ") -> " + d2);
+            if (!d2.equals(expected))
+                errln("FAIL: Expected " + expected);
+            String format2 = ((DateFormat) sdf).format(d2);
+            logln(" format -> " + format2);
+            if (!formatResult.equals(format2))
+                errln("FAIL: Round trip drift");
+        } catch (Exception e) {
+            errln(e.getMessage());
+        }
+    }
+    
+    /**
+     * Test the handling of single quotes in patterns.
+     */
+    public void TestQuotePattern161() {
+        SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy 'at' hh:mm:ss a zzz", Locale.US); 
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1997, Calendar.AUGUST, 13, 10, 42, 28);
+        Date currentTime_1 = cal.getTime();
+        String dateString = ((DateFormat) formatter).format(currentTime_1);
+        String exp = "08/13/1997 at 10:42:28 AM ";
+        logln("format(" + currentTime_1 + ") = " + dateString);
+        if (!dateString.substring(0, exp.length()).equals(exp))
+            errln("FAIL: Expected " + exp);
+    
+    }
+        
+    /**
+     * Verify the correct behavior when handling invalid input strings.
+     */
+    public void TestBadInput135() {
+        int looks[] = {DateFormat.SHORT, DateFormat.MEDIUM, DateFormat.LONG, DateFormat.FULL}; 
+        int looks_length = looks.length;
+        final String[] strings = {"Mar 15", "Mar 15 1997", "asdf", "3/1/97 1:23:", "3/1/00 1:23:45 AM"}; 
+        int strings_length = strings.length;
+        DateFormat full = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.US); 
+        String expected = "March 1, 2000 1:23:45 AM ";
+        for (int i = 0; i < strings_length; ++i) {
+            final String text = strings[i];
+            for (int j = 0; j < looks_length; ++j) {
+                int dateLook = looks[j];
+                for (int k = 0; k < looks_length; ++k) {
+                    int timeLook = looks[k];
+                    DateFormat df = DateFormat.getDateTimeInstance(dateLook, timeLook, Locale.US); 
+                    String prefix = text + ", " + dateLook + "/" + timeLook + ": "; 
+                    try {
+                        Date when = df.parse(text);
+                        if (when == null) {
+                            errln(prefix + "SHOULD NOT HAPPEN: parse returned null.");
+                            continue;
+                        }  
+                        if (when != null) {
+                            String format;
+                            format = full.format(when);
+                            logln(prefix + "OK: " + format);
+                            if (!format.substring(0, expected.length()).equals(expected))
+                                errln("FAIL: Expected " + expected);
+                        }
+                    } catch(java.text.ParseException e) {
+                        logln(e.getMessage());
+                    }
+                }
+            }
+        }
+    }
+    
+    /**
+     * Verify the correct behavior when parsing an array of inputs against an
+     * array of patterns, with known results.  The results are encoded after
+     * the input strings in each row.
+     */
+    public void TestBadInput135a() {
+    
+        SimpleDateFormat dateParse = new SimpleDateFormat("", Locale.US);
+        final String ss;
+        Date date;
+        String[] parseFormats ={"MMMM d, yyyy", "MMMM d yyyy", "M/d/yy",
+                                "d MMMM, yyyy", "d MMMM yyyy",  "d MMMM",
+                                "MMMM d", "yyyy", "h:mm a MMMM d, yyyy" };
+        String[] inputStrings = {
+            "bogus string", null, null, null, null, null, null, null, null, null,
+                "April 1, 1997", "April 1, 1997", null, null, null, null, null, "April 1", null, null,
+                "Jan 1, 1970", "January 1, 1970", null, null, null, null, null, "January 1", null, null,
+                "Jan 1 2037", null, "January 1 2037", null, null, null, null, "January 1", null, null,
+                "1/1/70", null, null, "1/1/70", null, null, null, null, "0001", null,
+                "5 May 1997", null, null, null, null, "5 May 1997", "5 May", null, "0005", null,
+                "16 May", null, null, null, null, null, "16 May", null, "0016", null,
+                "April 30", null, null, null, null, null, null, "April 30", null, null,
+                "1998", null, null, null, null, null, null, null, "1998", null,
+                "1", null, null, null, null, null, null, null, "0001", null,
+                "3:00 pm Jan 1, 1997", null, null, null, null, null, null, null, "0003", "3:00 PM January 1, 1997",
+                };
+        final int PF_LENGTH = parseFormats.length;
+        final int INPUT_LENGTH = inputStrings.length;
+    
+        dateParse.applyPattern("d MMMM, yyyy");
+        dateParse.setTimeZone(TimeZone.getDefault());
+        ss = "not parseable";
+        //    String thePat;
+        logln("Trying to parse \"" + ss + "\" with " + dateParse.toPattern());
+        try {
+            date = dateParse.parse(ss);
+        } catch (Exception ex) {
+            logln("FAIL:" + ex);
+        }
+        for (int i = 0; i < INPUT_LENGTH; i += (PF_LENGTH + 1)) {
+            ParsePosition parsePosition = new ParsePosition(0);
+            String s = inputStrings[i];
+            for (int index = 0; index < PF_LENGTH; ++index) {
+                final String expected = inputStrings[i + 1 + index];
+                dateParse.applyPattern(parseFormats[index]);
+                dateParse.setTimeZone(TimeZone.getDefault());
+                try {
+                    parsePosition.setIndex(0);
+                    date = dateParse.parse(s, parsePosition);
+                    if (parsePosition.getIndex() != 0) {
+                        String s1, s2;
+                        s1 = s.substring(0, parsePosition.getIndex());
+                        s2 = s.substring(parsePosition.getIndex(), s.length());
+                        if (date == null) {
+                            errln("ERROR: null result fmt=\"" + parseFormats[index]
+                                    + "\" pos=" + parsePosition.getIndex()
+                                    + " " + s1 + "|" + s2);
+                        } else {
+                            String result = ((DateFormat) dateParse).format(date);
+                            logln("Parsed \"" + s + "\" using \"" + dateParse.toPattern() + "\" to: " + result);
+                            if (expected == null)
+                                errln("FAIL: Expected parse failure");
+                            else
+                                if (!result.equals(expected))
+                                    errln("FAIL: Expected " + expected);
+                        }
+                    } else
+                        if (expected != null) {
+                            errln("FAIL: Expected " + expected + " from \"" + s
+                                    + "\" with \"" + dateParse.toPattern()+ "\"");
+                        }
+                } catch (Exception ex) {
+                    logln("FAIL:" + ex);
+                }
+            }
+        }
+    
+    }
+    
+    /**
+     * Test the parsing of two-digit years.
+     */
+    public void TestTwoDigitYear() {
+        DateFormat fmt = DateFormat.getDateInstance(DateFormat.SHORT, Locale.US);
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(117 + 1900, Calendar.JUNE, 5);
+        parse2DigitYear(fmt, "6/5/17", cal.getTime());
+        cal.clear();
+        cal.set(34 + 1900, Calendar.JUNE, 4);
+        parse2DigitYear(fmt, "6/4/34", cal.getTime());
+    }
+    
+    // internal test subroutine, used by TestTwoDigitYear
+    public void parse2DigitYear(DateFormat fmt, String str, Date expected) {
+        try {
+            Date d = fmt.parse(str);
+            logln("Parsing \""+ str+ "\" with "+ ((SimpleDateFormat) fmt).toPattern()
+                    + "  => "+ d); 
+            if (!d.equals(expected))
+                errln( "FAIL: Expected " + expected);
+        } catch (ParseException e) {
+            errln(e.getMessage());
+        }
+    }
+    
+    /**
+     * Test the formatting of time zones.
+     */
+    public void TestDateFormatZone061() {
+        Date date;
+        DateFormat formatter;
+        date = new Date(859248000000l);
+        logln("Date 1997/3/25 00:00 GMT: " + date);
+        formatter = new SimpleDateFormat("dd-MMM-yyyyy HH:mm", Locale.UK);
+        formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
+        String temp = formatter.format(date);
+        logln("Formatted in GMT to: " + temp);
+        try {
+            Date tempDate = formatter.parse(temp);
+            logln("Parsed to: " + tempDate);
+            if (!tempDate.equals(date))
+                errln("FAIL: Expected " + date);
+        } catch (Throwable t) {
+            System.out.println(t);
+        }
+    
+    }
+    
+    /**
+     * Test the formatting of time zones.
+     */
+    public void TestDateFormatZone146() {
+        TimeZone saveDefault = TimeZone.getDefault();
+    
+        //try {
+        TimeZone thedefault = TimeZone.getTimeZone("GMT");
+        TimeZone.setDefault(thedefault);
+        // java.util.Locale.setDefault(new java.util.Locale("ar", "", ""));
+    
+        // check to be sure... its GMT all right
+        TimeZone testdefault = TimeZone.getDefault();
+        String testtimezone = testdefault.getID();
+        if (testtimezone.equals("GMT"))
+            logln("Test timezone = " + testtimezone);
+        else
+            errln("Test timezone should be GMT, not " + testtimezone);
+    
+        // now try to use the default GMT time zone
+        GregorianCalendar greenwichcalendar = new GregorianCalendar(1997, 3, 4, 23, 0);
+        //*****************************greenwichcalendar.setTimeZone(TimeZone.getDefault());
+        //greenwichcalendar.set(1997, 3, 4, 23, 0);
+        // try anything to set hour to 23:00 !!!
+        greenwichcalendar.set(Calendar.HOUR_OF_DAY, 23);
+        // get time
+        Date greenwichdate = greenwichcalendar.getTime();
+        // format every way
+        String DATA[] = {
+                "simple format:  ", "04/04/97 23:00 GMT", 
+                "MM/dd/yy HH:mm z", "full format:    ", 
+                "Friday, April 4, 1997 11:00:00 o'clock PM GMT", 
+                "EEEE, MMMM d, yyyy h:mm:ss 'o''clock' a z", 
+                "long format:    ", "April 4, 1997 11:00:00 PM GMT", 
+                "MMMM d, yyyy h:mm:ss a z", "default format: ", 
+                "04-Apr-97 11:00:00 PM", "dd-MMM-yy h:mm:ss a", 
+                "short format:   ", "4/4/97 11:00 PM", 
+                "M/d/yy h:mm a"}; 
+        int DATA_length = DATA.length;
+    
+        for (int i = 0; i < DATA_length; i += 3) {
+            DateFormat fmt = new SimpleDateFormat(DATA[i + 2], Locale.ENGLISH);
+            fmt.setCalendar(greenwichcalendar);
+            String result = fmt.format(greenwichdate);
+            logln(DATA[i] + result);
+            if (!result.equals(DATA[i + 1]))
+                errln("FAIL: Expected " + DATA[i + 1] + ", got " + result);
+        }
+        //}
+        //finally {
+        TimeZone.setDefault(saveDefault);
+        //}
+    
+    }
+    
+    /**
+     * Test the formatting of dates in different locales.
+     */
+    public void TestLocaleDateFormat() {
+    
+        Date testDate = new Date(874306800000l); //Mon Sep 15 00:00:00 PDT 1997
+        DateFormat dfFrench = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.FRENCH);
+        DateFormat dfUS = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.US);
+        //Set TimeZone = PDT
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        ((SimpleTimeZone)tz).setDSTSavings(3600000);
+        dfFrench.setTimeZone(tz);
+        dfUS.setTimeZone(tz);
+        String expectedFRENCH_JDK12 = "lundi 15 septembre 1997 00 h 00 GMT-07:00";
+        String expectedFRENCH = "lundi 15 septembre 1997 00 h 00 PDT";
+        String expectedUS = "Monday, September 15, 1997 12:00:00 AM PDT";
+        logln("Date set to : " + testDate);
+        String out = dfFrench.format(testDate);
+        logln("Date Formated with French Locale " + out);
+        //fix the jdk resources differences between jdk 1.2 and jdk 1.3
+		/* our own data only has GMT-xxxx information here
+        String javaVersion = System.getProperty("java.version");
+        if (javaVersion.startsWith("1.2")) {
+            if (!out.equals(expectedFRENCH_JDK12))
+                errln("FAIL: Expected " + expectedFRENCH_JDK12);
+        } else {
+            if (!out.equals(expectedFRENCH))
+                errln("FAIL: Expected " + expectedFRENCH);
+        }
+		*/
+		if (!out.equals(expectedFRENCH_JDK12))
+			errln("FAIL: Expected " + expectedFRENCH_JDK12);
+        out = dfUS.format(testDate);
+        logln("Date Formated with US Locale " + out);
+        if (!out.equals(expectedUS))
+            errln("FAIL: Expected " + expectedUS);
+    }
+
+    /**
+     * Test DateFormat(Calendar) API
+     */
+    public void TestDateFormatCalendar() {
+        DateFormat date=null, time=null, full=null;
+        Calendar cal=null;
+        ParsePosition pos = new ParsePosition(0);
+        String str;
+        Date when;
+
+        /* Create a formatter for date fields. */
+        date = DateFormat.getDateInstance(DateFormat.SHORT, Locale.US);
+        if (date == null) {
+            errln("FAIL: getDateInstance failed");
+            return;
+        }
+
+        /* Create a formatter for time fields. */
+        time = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.US);
+        if (time == null) {
+            errln("FAIL: getTimeInstance failed");
+            return;
+        }
+
+        /* Create a full format for output */
+        full = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL,
+                                              Locale.US);
+        if (full == null) {
+            errln("FAIL: getInstance failed");
+            return;
+        }
+
+        /* Create a calendar */
+        cal = Calendar.getInstance(Locale.US);
+        if (cal == null) {
+            errln("FAIL: Calendar.getInstance failed");
+            return;
+        }
+
+        /* Parse the date */
+        cal.clear();
+        str = "4/5/2001";
+        pos.setIndex(0);
+        date.parse(str, cal, pos);
+        if (pos.getIndex() != str.length()) {
+            errln("FAIL: DateFormat.parse(4/5/2001) failed at " +
+                  pos.getIndex());
+            return;
+        }
+
+        /* Parse the time */
+        str = "5:45 PM";
+        pos.setIndex(0);
+        time.parse(str, cal, pos);
+        if (pos.getIndex() != str.length()) {
+            errln("FAIL: DateFormat.parse(17:45) failed at " +
+                  pos.getIndex());
+            return;
+        }
+    
+        /* Check result */
+        when = cal.getTime();
+        str = full.format(when);
+        // Thursday, April 5, 2001 5:45:00 PM PDT 986517900000
+        if (when.getTime() == 986517900000.0) {
+            logln("Ok: Parsed result: " + str);
+        } else {
+            errln("FAIL: Parsed result: " + str + ", exp 4/5/2001 5:45 PM");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java b/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java
new file mode 100755
index 0000000..9c60005
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java
@@ -0,0 +1,266 @@
+/***************************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java,v $ 
+ * $Date: 2002/08/01 20:27:21 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDateFormat
+ * Source File: java/text/format/IntlTestDateFormat.java
+ **/
+
+/*
+    @test 1.4 98/03/06
+    @summary test International Date Format
+*/
+/***************************************************************************
+*
+*   Copyright (C) 1996-2002, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+************************************************************************/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.util.Locale;
+import java.util.Random;
+import java.util.Date;
+
+public class IntlTestDateFormat extends com.ibm.icu.dev.test.TestFmwk {
+    // Values in milliseconds (== Date)
+    private static final long ONESECOND = 1000;
+    private static final long ONEMINUTE = 60 * ONESECOND;
+    private static final long ONEHOUR = 60 * ONEMINUTE;
+    private static final long ONEDAY = 24 * ONEHOUR;
+    //private static final double ONEYEAR = 365.25 * ONEDAY; // Approximate //The variable is never used
+
+    // EModes
+    //private static final byte GENERIC = 0;
+    //private static final byte TIME = GENERIC + 1; //The variable is never used
+    //private static final byte DATE = TIME + 1; //The variable is never used
+    //private static final byte DATE_TIME = DATE + 1; //The variable is never used
+
+    private DateFormat fFormat = DateFormat.getInstance();
+    private String fTestName = new String("getInstance");
+    private int fLimit = 3; // How many iterations it should take to reach convergence
+    
+    public IntlTestDateFormat() {
+        //Constructure
+    }
+    
+    public static void main(String[] args) throws Exception {
+        new IntlTestDateFormat().run(args);
+    }
+
+    public void TestLocale() {
+        localeTest(Locale.getDefault(), "Default Locale");
+    }
+
+    // This test does round-trip testing (format -> parse -> format -> parse -> etc.) of DateFormat.
+    public void localeTest(final Locale locale, final String localeName) {
+        int timeStyle, dateStyle;
+
+        // For patterns including only time information and a timezone, it may take
+        // up to three iterations, since the timezone may shift as the year number
+        // is determined.  For other patterns, 2 iterations should suffice.
+        fLimit = 3;
+
+        for(timeStyle = 0; timeStyle < 4; timeStyle++) {
+            fTestName = new String("Time test " + timeStyle + " (" + localeName + ")");
+            try {
+                fFormat = DateFormat.getTimeInstance(timeStyle, locale);
+            }
+            catch(StringIndexOutOfBoundsException e) {
+                errln("FAIL: localeTest time getTimeInstance exception");
+                throw e;
+            }
+            TestFormat();
+        }
+
+        fLimit = 2;
+
+        for(dateStyle = 0; dateStyle < 4; dateStyle++) {
+            fTestName = new String("Date test " + dateStyle + " (" + localeName + ")");
+            try {
+                fFormat = DateFormat.getDateInstance(dateStyle, locale);
+            }
+            catch(StringIndexOutOfBoundsException e) {
+                errln("FAIL: localeTest date getTimeInstance exception");
+                throw e;
+            }
+            TestFormat();
+        }
+
+        for(dateStyle = 0; dateStyle < 4; dateStyle++) {
+            for(timeStyle = 0; timeStyle < 4; timeStyle++) {
+                fTestName = new String("DateTime test " + dateStyle + "/" + timeStyle + " (" + localeName + ")");
+                try {
+                    fFormat = DateFormat.getDateTimeInstance(dateStyle, timeStyle, locale);
+                }
+                catch(StringIndexOutOfBoundsException e) {
+                    errln("FAIL: localeTest date/time getDateTimeInstance exception");
+                    throw e;
+                }
+                TestFormat();
+            }
+        }
+    }
+
+    public void TestFormat() {
+        if (fFormat == null) {
+            errln("FAIL: DateFormat creation failed");
+            return;
+        }
+        //        logln("TestFormat: " + fTestName);
+        Date now = new Date();
+        tryDate(new Date(0));
+        tryDate(new Date((long) 1278161801778.0));
+        tryDate(now);
+        // Shift 6 months into the future, AT THE SAME TIME OF DAY.
+        // This will test the DST handling.
+        tryDate(new Date(now.getTime() + 6*30*ONEDAY));
+
+        Date limit = new Date(now.getTime() * 10); // Arbitrary limit
+        for (int i=0; i<2; ++i)
+            //            tryDate(new Date(floor(randDouble() * limit)));
+            tryDate(new Date((long) (randDouble() * limit.getTime())));
+    }
+
+    private void describeTest() {
+        if (fFormat == null) {
+            errln("FAIL: no DateFormat");
+            return;
+        }
+
+        // Assume it's a SimpleDateFormat and get some info
+        SimpleDateFormat s = (SimpleDateFormat) fFormat;
+        logln(fTestName + " Pattern " + s.toPattern());
+    }
+
+    private void tryDate(Date theDate) {
+        final int DEPTH = 10;
+        Date[] date = new Date[DEPTH];
+        StringBuffer[] string = new StringBuffer[DEPTH];
+
+        int dateMatch = 0;
+        int stringMatch = 0;
+        boolean dump = false;
+        int i;
+        for (i=0; i<DEPTH; ++i) string[i] = new StringBuffer();
+        for (i=0; i<DEPTH; ++i) {
+            if (i == 0) date[i] = theDate;
+            else {
+                try {
+                    date[i] = fFormat.parse(string[i-1].toString());
+                }
+                catch (ParseException e) {
+                    describeTest();
+                    errln("********** FAIL: Parse of " + string[i-1] + " failed.");
+                    dump = true;
+                    break;
+                }
+            }
+            FieldPosition position = new FieldPosition(0);
+            fFormat.format(date[i], string[i], position);
+            if (i > 0) {
+                if (dateMatch == 0 && date[i] == date[i-1]) dateMatch = i;
+                else if (dateMatch > 0 && date[i] != date[i-1]) {
+                    describeTest();
+                    errln("********** FAIL: Date mismatch after match.");
+                    dump = true;
+                    break;
+                }
+                if (stringMatch == 0 && string[i] == string[i-1]) stringMatch = i;
+                else if (stringMatch > 0 && string[i] != string[i-1]) {
+                    describeTest();
+                    errln("********** FAIL: String mismatch after match.");
+                    dump = true;
+                    break;
+                }
+            }
+            if (dateMatch > 0 && stringMatch > 0) break;
+        }
+        if (i == DEPTH) --i;
+
+        if (stringMatch > fLimit || dateMatch > fLimit) {
+            describeTest();
+            errln("********** FAIL: No string and/or date match within " + fLimit + " iterations.");
+            dump = true;
+        }
+
+        if (dump) {
+            for (int k=0; k<=i; ++k) {
+                logln("" + k + ": " + date[k] + " F> " + string[k] + " P> ");
+            }
+        }
+    }
+
+    // Return a random double from 0.01 to 1, inclusive
+    private double randDouble() {
+        // Assume 8-bit (or larger) rand values.  Also assume
+        // that the system rand() function is very poor, which it always is.
+        //        double d;
+        //        int i;
+        //        do {
+        //            for (i=0; i < sizeof(double); ++i)
+        //            {
+        //                char poke = (char*)&d;
+        //                poke[i] = (rand() & 0xFF);
+        //            }
+        //        } while (TPlatformUtilities.isNaN(d) || TPlatformUtilities.isInfinite(d));
+
+        //        if (d < 0.0) d = -d;
+        //        if (d > 0.0)
+        //        {
+        //            double e = floor(log10(d));
+        //            if (e < -2.0) d *= pow(10.0, -e-2);
+        //            else if (e > -1.0) d /= pow(10.0, e+1);
+        //        }
+        //        return d;
+        Random rand = new Random();
+        return rand.nextDouble();
+    }
+
+    public void TestAvailableLocales() {
+        final Locale[] locales = DateFormat.getAvailableLocales();
+        long count = locales.length;
+        logln("" + count + " available locales");
+        if (locales != null  &&  count != 0) {
+            StringBuffer all = new StringBuffer();
+            for (int i=0; i<count; ++i) {
+                if (i!=0) all.append(", ");
+                all.append(locales[i].getDisplayName());
+            }
+            logln(all.toString());
+        }
+        else errln("********** FAIL: Zero available locales or null array pointer");
+    }
+
+    /* This test is too slow; we disable it for now
+    public void TestMonster() {
+        final Locale[] locales = DateFormat.getAvailableLocales();
+        long count = locales.length;
+        if (locales != null  &&  count != 0) {
+            for (int i=0; i<count; ++i) {
+                String name = locales[i].getDisplayName();
+                logln("Testing " + name + "...");
+                try {
+                    localeTest(locales[i], name);
+                }
+                catch(Exception e) {
+                    errln("FAIL: TestMonster localeTest exception" + e);
+                }
+            }
+        }
+    }
+    */
+}
+
+//eof
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java
new file mode 100755
index 0000000..d82abda
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java
@@ -0,0 +1,208 @@
+/*****************************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java,v $ 
+ * $Date: 2002/08/01 20:27:21 $ 
+ * $Revision: 1.6 $
+ *
+ *****************************************************************************************
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDateFormatAPI
+ * Source File: java/text/format/IntlTestDateFormatAPI.java
+ **/
+
+/*
+    @test 1.4 98/03/06
+    @summary test International Date Format API
+*/
+/***************************************************************************
+*
+*   Copyright (C) 1996-2002, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+************************************************************************/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.util.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+import java.util.Date;
+import java.text.ParsePosition;
+import java.text.FieldPosition;
+import java.text.ParseException;
+
+public class IntlTestDateFormatAPI extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new IntlTestDateFormatAPI().run(args);
+    }
+
+    // Test that the equals method works correctly.
+    public void TestEquals()
+    {
+        // Create two objects at different system times
+        DateFormat a = DateFormat.getInstance();
+        Date start = Calendar.getInstance().getTime();
+        while (true) {
+            // changed to remove compiler warnings.
+            if (!start.equals(Calendar.getInstance().getTime())) {
+                break; // Wait for time to change
+            }
+        }
+        DateFormat b = DateFormat.getInstance();
+
+        if (!(a.equals(b)))
+            errln("FAIL: DateFormat objects created at different times are unequal.");
+
+        // Why has this test been disabled??? - aliu
+//        if (b instanceof SimpleDateFormat)
+//        {
+//            //double ONE_YEAR = 365*24*60*60*1000.0; //The variable is never used
+//            try {
+//                ((SimpleDateFormat)b).setTwoDigitStartDate(start.getTime() + 50*ONE_YEAR);
+//                if (a.equals(b))
+//                    errln("FAIL: DateFormat objects with different two digit start dates are equal.");
+//            }
+//            catch (Exception e) {
+//                errln("FAIL: setTwoDigitStartDate failed.");
+//            }
+//        }
+    }
+
+    // This test checks various generic API methods in DateFormat to achieve 100% API coverage.
+    public void TestAPI()
+    {
+        logln("DateFormat API test---"); logln("");
+        Locale.setDefault(Locale.ENGLISH);
+
+
+        // ======= Test constructors
+
+        logln("Testing DateFormat constructors");
+
+        DateFormat def = DateFormat.getInstance();
+        DateFormat fr = DateFormat.getTimeInstance(DateFormat.FULL, Locale.FRENCH);
+        DateFormat it = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.ITALIAN);
+        DateFormat de = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.GERMAN);
+
+        // ======= Test equality
+
+        logln("Testing equality operator");
+
+        if( fr.equals(it) ) {
+            errln("ERROR: equals failed");
+        }
+
+        // ======= Test various format() methods
+
+        logln("Testing various format() methods");
+
+        Date d = new Date((long)837039928046.0);
+
+        StringBuffer res1 = new StringBuffer();
+        StringBuffer res2 = new StringBuffer();
+        String res3 = new String();
+        FieldPosition pos1 = new FieldPosition(0);
+        FieldPosition pos2 = new FieldPosition(0);
+
+        res1 = fr.format(d, res1, pos1);
+        logln("" + d.getTime() + " formatted to " + res1);
+
+        res2 = it.format(d, res2, pos2);
+        logln("" + d.getTime() + " formatted to " + res2);
+
+        res3 = de.format(d);
+        logln("" + d.getTime() + " formatted to " + res3);
+
+        // ======= Test parse()
+
+        logln("Testing parse()");
+
+        String text = new String("02/03/76 2:50 AM, CST");
+        Object result1 = new Date();
+        Date result2 = new Date();
+        Date result3 = new Date();
+        ParsePosition pos = new ParsePosition(0);
+        ParsePosition pos01 = new ParsePosition(0);
+
+        result1 = def.parseObject(text, pos);
+        if (result1 == null) {
+            errln("ERROR: parseObject() failed for " + text);
+        }
+        logln(text + " parsed into " + ((Date)result1).getTime());
+
+        try {
+            result2 = def.parse(text);
+        }
+        catch (ParseException e) {
+            errln("ERROR: parse() failed");
+        }
+        logln(text + " parsed into " + result2.getTime());
+
+        result3 = def.parse(text, pos01);
+        if (result3 == null) {
+            errln("ERROR: parse() failed for " + text);
+        }
+        logln(text + " parsed into " + result3.getTime());
+
+
+        // ======= Test getters and setters
+
+        logln("Testing getters and setters");
+
+        final Locale[] locales = DateFormat.getAvailableLocales();
+        long count = locales.length;
+        logln("Got " + count + " locales" );
+        for(int i = 0; i < count; i++) {
+            String name;
+            name = locales[i].getDisplayName();
+            logln(name);
+        }
+
+        fr.setLenient(it.isLenient());
+        if(fr.isLenient() != it.isLenient()) {
+            errln("ERROR: setLenient() failed");
+        }
+
+        final Calendar cal = def.getCalendar();
+        Calendar newCal = (Calendar) cal.clone();
+        de.setCalendar(newCal);
+        it.setCalendar(newCal);
+        if( ! de.getCalendar().equals(it.getCalendar())) {
+            errln("ERROR: set Calendar() failed");
+        }
+
+        final NumberFormat nf = def.getNumberFormat();
+        NumberFormat newNf = (NumberFormat) nf.clone();
+        de.setNumberFormat(newNf);
+        it.setNumberFormat(newNf);
+        if( ! de.getNumberFormat().equals(it.getNumberFormat())) {
+            errln("ERROR: set NumberFormat() failed");
+        }
+
+        final TimeZone tz = def.getTimeZone();
+        TimeZone newTz = (TimeZone) tz.clone();
+        de.setTimeZone(newTz);
+        it.setTimeZone(newTz);
+        if( ! de.getTimeZone().equals(it.getTimeZone())) {
+            errln("ERROR: set TimeZone() failed");
+        }
+
+        // ======= Test getStaticClassID()
+
+//        logln("Testing instanceof()");
+
+//        try {
+//            DateFormat test = new SimpleDateFormat();
+
+//            if (! (test instanceof SimpleDateFormat)) {
+//                errln("ERROR: instanceof failed");
+//            }
+//        }
+//        catch (Exception e) {
+//            errln("ERROR: Couldn't create a DateFormat");
+//        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java
new file mode 100755
index 0000000..97ae941
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java
@@ -0,0 +1,160 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java,v $ 
+ * $Date: 2002/02/16 03:05:10 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : IntlTestDateFormatAPI
+ * Source File: $ICU4CRoot/source/test/intltest/dtfmapts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Date;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+
+/*
+ * This is an API test, not a unit test.  It doesn't test very many cases, and doesn't
+ * try to test the full functionality.  It just calls each function in the class and
+ * verifies that it works on a basic level.
+ */
+public class IntlTestDateFormatAPIC extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args)  throws Exception {
+        new IntlTestDateFormatAPIC().run(args);
+    }
+    
+    /**
+     * Test hiding of parse() and format() APIs in the Format hierarchy.
+     * We test the entire hierarchy, even though this test is located in
+     * the DateFormat API test.
+     */
+    public void TestNameHiding() {
+    
+        // N.B.: This test passes if it COMPILES, since it's a test of
+        // compile-time name hiding.
+    
+        Date dateObj = new Date(0);
+        Number numObj = new Double(3.1415926535897932384626433832795);
+        StringBuffer strBuffer = new StringBuffer("");
+        String str;
+        FieldPosition fpos = new FieldPosition(0);
+        ParsePosition ppos = new ParsePosition(0);
+    
+        // DateFormat calling Format API
+        {
+            logln("DateFormat");
+            DateFormat dateFmt = DateFormat.getInstance();
+            if (dateFmt != null) {
+                str = dateFmt.format(dateObj);
+                strBuffer = dateFmt.format(dateObj, strBuffer, fpos);
+            } else {
+                errln("FAIL: Can't create DateFormat");
+            }
+        }
+    
+        // SimpleDateFormat calling Format & DateFormat API
+        {
+            logln("SimpleDateFormat");
+            SimpleDateFormat sdf = new SimpleDateFormat();
+            // Format API
+            str = sdf.format(dateObj);
+            strBuffer = sdf.format(dateObj, strBuffer, fpos);
+            // DateFormat API
+            strBuffer = sdf.format(new Date(0), strBuffer, fpos);
+            str = sdf.format(new Date(0));
+            try {
+                sdf.parse(str);
+                sdf.parse(str, ppos);
+            } catch (java.text.ParseException pe) {
+                System.out.println(pe);
+            }
+        }
+    
+        // NumberFormat calling Format API
+        {
+            logln("NumberFormat");
+            NumberFormat fmt = NumberFormat.getInstance();
+            if (fmt != null) {
+                str = fmt.format(numObj);
+                strBuffer = fmt.format(numObj, strBuffer, fpos);
+            } else {
+                errln("FAIL: Can't create NumberFormat");
+            }
+        }
+    
+        // DecimalFormat calling Format & NumberFormat API
+        {
+            logln("DecimalFormat");
+            DecimalFormat fmt = new DecimalFormat();
+            // Format API
+            str = fmt.format(numObj);
+            strBuffer = fmt.format(numObj, strBuffer, fpos);
+            // NumberFormat API
+            str = fmt.format(2.71828);
+            str = fmt.format(1234567);
+            strBuffer = fmt.format(1.41421, strBuffer, fpos);
+            strBuffer = fmt.format(9876543, strBuffer, fpos);
+            Number obj = fmt.parse(str, ppos);
+            try {
+                obj = fmt.parse(str);
+            } catch (java.text.ParseException pe) {
+                System.out.println(pe);
+            }
+        }
+        
+        //ICU4J have not the classes ChoiceFormat and MessageFormat
+        /*
+        // ChoiceFormat calling Format & NumberFormat API
+        {
+            logln("ChoiceFormat");
+            ChoiceFormat fmt = new ChoiceFormat("0#foo|1#foos|2#foos");
+            // Format API
+            str = fmt.format(numObj);
+            strBuffer = fmt.format(numObj, strBuffer, fpos);
+            // NumberFormat API
+            str = fmt.format(2.71828);
+            str = fmt.format(1234567);
+            strBuffer = fmt.format(1.41421, strBuffer, fpos);
+            strBuffer = fmt.format(9876543, strBuffer, fpos);
+            Number obj = fmt.parse(str, ppos);
+            try {
+                obj = fmt.parse(str);
+            } catch (java.text.ParseException pe) {
+                System.out.println(pe);
+            }
+        }
+    
+        
+        // MessageFormat calling Format API
+        {
+            logln("MessageFormat");
+            MessageFormat fmt = new MessageFormat("");
+            // Format API
+            // We use dateObj, which MessageFormat should reject.
+            // We're testing name hiding, not the format method.
+            try {
+                str = fmt.format(dateObj);
+            } catch (Exception e) {
+                //e.printStackTrace();
+            }
+            try {
+                strBuffer = fmt.format(dateObj, strBuffer, fpos);
+            } catch (Exception e) {
+                //e.printStackTrace();
+            }
+        }
+        */
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java
new file mode 100755
index 0000000..0a1389c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java
@@ -0,0 +1,195 @@
+/*****************************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java,v $ 
+ * $Date: 2002/08/01 20:27:21 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDateFormatSymbols
+ * Source File: java/text/format/IntlTestDateFormatSymbols.java
+ **/
+ 
+/*
+    @test 1.4 98/03/06
+    @summary test International Date Format Symbols
+*/
+/***************************************************************************
+*
+*   Copyright (C) 1996-2002, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+************************************************************************/
+
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Locale;
+
+public class IntlTestDateFormatSymbols extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new IntlTestDateFormatSymbols().run(args);
+    }
+
+    // Test getMonths
+    public void TestGetMonths()
+    {
+        final String[] month;
+        DateFormatSymbols symbol;
+
+        symbol=new DateFormatSymbols(Locale.getDefault());
+
+        month=symbol.getMonths();
+        int cnt = month.length;
+
+        logln("size = " + cnt);
+
+        for (int i=0; i<cnt; ++i)
+        {
+            logln(month[i]);
+        }
+    }
+
+    // Test the API of DateFormatSymbols; primarily a simple get/set set.
+    public void TestSymbols()
+    {
+        DateFormatSymbols fr = new DateFormatSymbols(Locale.FRENCH);
+
+        DateFormatSymbols en = new DateFormatSymbols(Locale.ENGLISH);
+
+        if(en.equals(fr)) {
+            errln("ERROR: English DateFormatSymbols equal to French");
+        }
+
+        // just do some VERY basic tests to make sure that get/set work
+
+        long count;
+        final String[] eras = en.getEras();
+        fr.setEras(eras);
+        final String[] eras1 = fr.getEras();
+        count = eras.length;
+        if( count != eras1.length) {
+            errln("ERROR: setEras() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! eras[i].equals(eras1[i])) {
+                    errln("ERROR: setEras() failed (different string values)");
+                }
+            }
+        }
+
+
+        final String[] months = en.getMonths();
+        fr.setMonths(months);
+        final String[] months1 = fr.getMonths();
+        count = months.length;
+        if( count != months1.length) {
+            errln("ERROR: setMonths() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! months[i].equals(months1[i])) {
+                    errln("ERROR: setMonths() failed (different string values)");
+                }
+            }
+        }
+
+        final String[] shortMonths = en.getShortMonths();
+        fr.setShortMonths(shortMonths);
+        final String[] shortMonths1 = fr.getShortMonths();
+        count = shortMonths.length;
+        if( count != shortMonths1.length) {
+            errln("ERROR: setShortMonths() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! shortMonths[i].equals(shortMonths1[i])) {
+                    errln("ERROR: setShortMonths() failed (different string values)");
+                }
+            }
+        }
+
+        final String[] weekdays = en.getWeekdays();
+        fr.setWeekdays(weekdays);
+        final String[] weekdays1 = fr.getWeekdays();
+        count = weekdays.length;
+        if( count != weekdays1.length) {
+            errln("ERROR: setWeekdays() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! weekdays[i].equals(weekdays1[i])) {
+                    errln("ERROR: setWeekdays() failed (different string values)");
+                }
+            }
+        }
+
+        final String[] shortWeekdays = en.getShortWeekdays();
+        fr.setShortWeekdays(shortWeekdays);
+        final String[] shortWeekdays1 = fr.getShortWeekdays();
+        count = shortWeekdays.length;
+        if( count != shortWeekdays1.length) {
+            errln("ERROR: setShortWeekdays() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! shortWeekdays[i].equals(shortWeekdays1[i])) {
+                    errln("ERROR: setShortWeekdays() failed (different string values)");
+                }
+            }
+        }
+
+        final String[] ampms = en.getAmPmStrings();
+        fr.setAmPmStrings(ampms);
+        final String[] ampms1 = fr.getAmPmStrings();
+        count = ampms.length;
+        if( count != ampms1.length) {
+            errln("ERROR: setAmPmStrings() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! ampms[i].equals(ampms1[i])) {
+                    errln("ERROR: setAmPmStrings() failed (different string values)");
+                }
+            }
+        }
+
+        long rowCount = 0, columnCount = 0;
+        final String[][] strings = en.getZoneStrings();
+        fr.setZoneStrings(strings);
+        final String[][] strings1 = fr.getZoneStrings();
+        rowCount = strings.length;
+        for(int i = 0; i < rowCount; i++) {
+            columnCount = strings[i].length;
+            for(int j = 0; j < columnCount; j++) {
+                if( strings[i][j] != strings1[i][j] ) {
+                    errln("ERROR: setZoneStrings() failed");
+                }
+            }
+        }
+
+//        final String pattern = DateFormatSymbols.getPatternChars();
+
+        String localPattern; // pat1, pat2; //The variable is never used
+        localPattern = en.getLocalPatternChars();
+        fr.setLocalPatternChars(localPattern);
+        if(! en.getLocalPatternChars().equals(fr.getLocalPatternChars())) {
+            errln("ERROR: setLocalPatternChars() failed");
+        }
+
+
+        //DateFormatSymbols foo = new DateFormatSymbols(); //The variable is never used
+
+        en = (DateFormatSymbols) fr.clone();
+
+        if(! en.equals(fr)) {
+            errln("ERROR: Clone failed");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java
new file mode 100755
index 0000000..afa2730
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java
@@ -0,0 +1,232 @@
+/*****************************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java,v $ 
+ * $Date: 2002/08/01 20:27:21 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDecimalFormatAPI
+ * Source File: java/text/format/IntlTestDecimalFormatAPI.java
+ **/
+ 
+/*
+    @test 1.4 98/03/06
+    @summary test International Decimal Format API
+*/
+/***************************************************************************
+*
+*   Copyright (C) 1996-2002, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+************************************************************************/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Locale;
+import java.text.ParsePosition;
+import java.text.Format;
+import java.text.FieldPosition;
+
+public class IntlTestDecimalFormatAPI extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args)  throws Exception {
+        new IntlTestDecimalFormatAPI().run(args);
+    }
+
+    // This test checks various generic API methods in DecimalFormat to achieve 100% API coverage.
+    public void TestAPI()
+    {
+        logln("DecimalFormat API test---"); logln("");
+        Locale.setDefault(Locale.ENGLISH);
+
+        // ======= Test constructors
+
+        logln("Testing DecimalFormat constructors");
+
+        DecimalFormat def = new DecimalFormat();
+
+        final String pattern = new String("#,##0.# FF");
+        DecimalFormat pat = null;
+        try {
+            pat = new DecimalFormat(pattern);
+        }
+        catch (IllegalArgumentException e) {
+            errln("ERROR: Could not create DecimalFormat (pattern)");
+        }
+
+        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.FRENCH);
+
+        DecimalFormat cust1 = new DecimalFormat(pattern, symbols);
+
+        // ======= Test clone(), assignment, and equality
+
+        logln("Testing clone() and equality operators");
+
+        Format clone = (Format) def.clone();
+        if( ! def.equals(clone)) {
+            errln("ERROR: Clone() failed");
+        }
+
+        // ======= Test various format() methods
+
+        logln("Testing various format() methods");
+
+//        final double d = -10456.0037; // this appears as -10456.003700000001 on NT
+//        final double d = -1.04560037e-4; // this appears as -1.0456003700000002E-4 on NT
+        final double d = -10456.00370000000000; // this works!
+        final long l = 100000000;
+        logln("" + d + " is the double value");
+
+        StringBuffer res1 = new StringBuffer();
+        StringBuffer res2 = new StringBuffer();
+        StringBuffer res3 = new StringBuffer();
+        StringBuffer res4 = new StringBuffer();
+        FieldPosition pos1 = new FieldPosition(0);
+        FieldPosition pos2 = new FieldPosition(0);
+        FieldPosition pos3 = new FieldPosition(0);
+        FieldPosition pos4 = new FieldPosition(0);
+
+        res1 = def.format(d, res1, pos1);
+        logln("" + d + " formatted to " + res1);
+
+        res2 = pat.format(l, res2, pos2);
+        logln("" + l + " formatted to " + res2);
+
+        res3 = cust1.format(d, res3, pos3);
+        logln("" + d + " formatted to " + res3);
+
+        res4 = cust1.format(l, res4, pos4);
+        logln("" + l + " formatted to " + res4);
+
+        // ======= Test parse()
+
+        logln("Testing parse()");
+
+        String text = new String("-10,456.0037");
+        ParsePosition pos = new ParsePosition(0);
+        String patt = new String("#,##0.#");
+        pat.applyPattern(patt);
+        double d2 = pat.parse(text, pos).doubleValue();
+        if(d2 != d) {
+            errln("ERROR: Roundtrip failed (via parse(" + d2 + " != " + d + ")) for " + text);
+        }
+        logln(text + " parsed into " + (long) d2);
+
+        // ======= Test getters and setters
+
+        logln("Testing getters and setters");
+
+        final DecimalFormatSymbols syms = pat.getDecimalFormatSymbols();
+        def.setDecimalFormatSymbols(syms);
+        if( ! pat.getDecimalFormatSymbols().equals(def.getDecimalFormatSymbols())) {
+            errln("ERROR: set DecimalFormatSymbols() failed");
+        }
+
+        String posPrefix;
+        pat.setPositivePrefix("+");
+        posPrefix = pat.getPositivePrefix();
+        logln("Positive prefix (should be +): " + posPrefix);
+        if(posPrefix != "+") {
+            errln("ERROR: setPositivePrefix() failed");
+        }
+
+        String negPrefix;
+        pat.setNegativePrefix("-");
+        negPrefix = pat.getNegativePrefix();
+        logln("Negative prefix (should be -): " + negPrefix);
+        if(negPrefix != "-") {
+            errln("ERROR: setNegativePrefix() failed");
+        }
+
+        String posSuffix;
+        pat.setPositiveSuffix("_");
+        posSuffix = pat.getPositiveSuffix();
+        logln("Positive suffix (should be _): " + posSuffix);
+        if(posSuffix != "_") {
+            errln("ERROR: setPositiveSuffix() failed");
+        }
+
+        String negSuffix;
+        pat.setNegativeSuffix("~");
+        negSuffix = pat.getNegativeSuffix();
+        logln("Negative suffix (should be ~): " + negSuffix);
+        if(negSuffix != "~") {
+            errln("ERROR: setNegativeSuffix() failed");
+        }
+
+        long multiplier = 0;
+        pat.setMultiplier(8);
+        multiplier = pat.getMultiplier();
+        logln("Multiplier (should be 8): " + multiplier);
+        if(multiplier != 8) {
+            errln("ERROR: setMultiplier() failed");
+        }
+
+        int groupingSize = 0;
+        pat.setGroupingSize(2);
+        groupingSize = pat.getGroupingSize();
+        logln("Grouping size (should be 2): " + (long) groupingSize);
+        if(groupingSize != 2) {
+            errln("ERROR: setGroupingSize() failed");
+        }
+
+        pat.setDecimalSeparatorAlwaysShown(true);
+        boolean tf = pat.isDecimalSeparatorAlwaysShown();
+        logln("DecimalSeparatorIsAlwaysShown (should be true) is " +  (tf ? "true" : "false"));
+        if(tf != true) {
+            errln("ERROR: setDecimalSeparatorAlwaysShown() failed");
+        }
+
+        String funkyPat;
+        funkyPat = pat.toPattern();
+        logln("Pattern is " + funkyPat);
+
+        String locPat;
+        locPat = pat.toLocalizedPattern();
+        logln("Localized pattern is " + locPat);
+
+        // ======= Test applyPattern()
+
+        logln("Testing applyPattern()");
+
+        String p1 = new String("#,##0.0#;(#,##0.0#)");
+        logln("Applying pattern " + p1);
+        pat.applyPattern(p1);
+        String s2;
+        s2 = pat.toPattern();
+        logln("Extracted pattern is " + s2);
+        if( ! s2.equals(p1) ) {
+            errln("ERROR: toPattern() result did not match pattern applied");
+        }
+
+        String p2 = new String("#,##0.0# FF;(#,##0.0# FF)");
+        logln("Applying pattern " + p2);
+        pat.applyLocalizedPattern(p2);
+        String s3;
+        s3 = pat.toLocalizedPattern();
+        logln("Extracted pattern is " + s3);
+        if( ! s3.equals(p2) ) {
+            errln("ERROR: toLocalizedPattern() result did not match pattern applied");
+        }
+
+        // ======= Test getStaticClassID()
+
+//        logln("Testing instanceof()");
+
+//        try {
+ //           NumberFormat test = new DecimalFormat();
+
+//            if (! (test instanceof DecimalFormat)) {
+//                errln("ERROR: instanceof failed");
+//            }
+//        }
+//        catch (Exception e) {
+//            errln("ERROR: Couldn't create a DecimalFormat");
+//        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
new file mode 100755
index 0000000..b23af7b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
@@ -0,0 +1,288 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java,v $ 
+ * $Date: 2002/02/16 03:05:10 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : IntlTestDecimalFormatAPI
+ * Source File: $ICU4CRoot/source/test/intltest/dcfmapts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.util.*;
+import java.util.Locale;
+import java.text.ParsePosition;
+import java.text.Format;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.text.FieldPosition;
+
+// This is an API test, not a unit test.  It doesn't test very many cases, and doesn't
+// try to test the full functionality.  It just calls each function in the class and
+// verifies that it works on a basic level.
+public class IntlTestDecimalFormatAPIC extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args)  throws Exception {
+        new IntlTestDecimalFormatAPIC().run(args);
+    }
+
+    // This test checks various generic API methods in DecimalFormat to achieve 100% API coverage.
+    public void TestAPI() {
+        
+        logln("DecimalFormat API test---");
+        logln("");
+        Locale.setDefault(Locale.ENGLISH);
+    
+        // ======= Test constructors
+    
+        logln("Testing DecimalFormat constructors");
+    
+        DecimalFormat def = new DecimalFormat();
+    
+        final String pattern = new String("#,##0.# FF");
+        DecimalFormat pat = null;
+        try {
+            pat = new DecimalFormat(pattern);
+        } catch (IllegalArgumentException e) {
+            errln("ERROR: Could not create DecimalFormat (pattern)");
+        }
+    
+        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.FRENCH);
+    
+        DecimalFormat cust1 = new DecimalFormat(pattern, symbols);
+    
+        // ======= Test clone(), assignment, and equality
+    
+        logln("Testing clone() and equality operators");
+    
+        Format clone = (Format) def.clone();
+        if (!def.equals(clone)) {
+            errln("ERROR: Clone() failed");
+        }
+    
+        // ======= Test various format() methods
+    
+        logln("Testing various format() methods");
+    
+        //        final double d = -10456.0037; // this appears as -10456.003700000001 on NT
+        //        final double d = -1.04560037e-4; // this appears as -1.0456003700000002E-4 on NT
+        final double d = -10456.00370000000000; // this works!
+        final long l = 100000000;
+        logln("" + Double.toString(d) + " is the double value");
+    
+        StringBuffer res1 = new StringBuffer();
+        StringBuffer res2 = new StringBuffer();
+        StringBuffer res3 = new StringBuffer();
+        StringBuffer res4 = new StringBuffer();
+        FieldPosition pos1 = new FieldPosition(0);
+        FieldPosition pos2 = new FieldPosition(0);
+        FieldPosition pos3 = new FieldPosition(0);
+        FieldPosition pos4 = new FieldPosition(0);
+    
+        res1 = def.format(d, res1, pos1);
+        logln("" + Double.toString(d) + " formatted to " + res1);
+    
+        res2 = pat.format(l, res2, pos2);
+        logln("" + l + " formatted to " + res2);
+    
+        res3 = cust1.format(d, res3, pos3);
+        logln("" + Double.toString(d) + " formatted to " + res3);
+    
+        res4 = cust1.format(l, res4, pos4);
+        logln("" + l + " formatted to " + res4);
+    
+        // ======= Test parse()
+    
+        logln("Testing parse()");
+    
+        String text = new String("-10,456.0037");
+        ParsePosition pos = new ParsePosition(0);
+        String patt = new String("#,##0.#");
+        pat.applyPattern(patt);
+        double d2 = pat.parse(text, pos).doubleValue();
+        if (d2 != d) {
+            errln(
+                "ERROR: Roundtrip failed (via parse(" + Double.toString(d2) + " != " + Double.toString(d) + ")) for " + text); 
+        }
+        logln(text + " parsed into " + (long) d2);
+    
+        // ======= Test getters and setters
+    
+        logln("Testing getters and setters");
+    
+        final DecimalFormatSymbols syms = pat.getDecimalFormatSymbols();
+        def.setDecimalFormatSymbols(syms);
+        if (!pat.getDecimalFormatSymbols().equals(def.getDecimalFormatSymbols())) {
+            errln("ERROR: set DecimalFormatSymbols() failed");
+        }
+    
+        String posPrefix;
+        pat.setPositivePrefix("+");
+        posPrefix = pat.getPositivePrefix();
+        logln("Positive prefix (should be +): " + posPrefix);
+        if (posPrefix != "+") {
+            errln("ERROR: setPositivePrefix() failed");
+        }
+    
+        String negPrefix;
+        pat.setNegativePrefix("-");
+        negPrefix = pat.getNegativePrefix();
+        logln("Negative prefix (should be -): " + negPrefix);
+        if (negPrefix != "-") {
+            errln("ERROR: setNegativePrefix() failed");
+        }
+    
+        String posSuffix;
+        pat.setPositiveSuffix("_");
+        posSuffix = pat.getPositiveSuffix();
+        logln("Positive suffix (should be _): " + posSuffix);
+        if (posSuffix != "_") {
+            errln("ERROR: setPositiveSuffix() failed");
+        }
+    
+        String negSuffix;
+        pat.setNegativeSuffix("~");
+        negSuffix = pat.getNegativeSuffix();
+        logln("Negative suffix (should be ~): " + negSuffix);
+        if (negSuffix != "~") {
+            errln("ERROR: setNegativeSuffix() failed");
+        }
+    
+        long multiplier = 0;
+        pat.setMultiplier(8);
+        multiplier = pat.getMultiplier();
+        logln("Multiplier (should be 8): " + multiplier);
+        if (multiplier != 8) {
+            errln("ERROR: setMultiplier() failed");
+        }
+    
+        int groupingSize = 0;
+        pat.setGroupingSize(2);
+        groupingSize = pat.getGroupingSize();
+        logln("Grouping size (should be 2): " + (long) groupingSize);
+        if (groupingSize != 2) {
+            errln("ERROR: setGroupingSize() failed");
+        }
+    
+        pat.setDecimalSeparatorAlwaysShown(true);
+        boolean tf = pat.isDecimalSeparatorAlwaysShown();
+        logln(
+            "DecimalSeparatorIsAlwaysShown (should be true) is " + (tf ? "true" : "false")); 
+        if (tf != true) {
+            errln("ERROR: setDecimalSeparatorAlwaysShown() failed");
+        }
+    
+        String funkyPat;
+        funkyPat = pat.toPattern();
+        logln("Pattern is " + funkyPat);
+    
+        String locPat;
+        locPat = pat.toLocalizedPattern();
+        logln("Localized pattern is " + locPat);
+    
+        // ======= Test applyPattern()
+    
+        logln("Testing applyPattern()");
+    
+        String p1 = new String("#,##0.0#;(#,##0.0#)");
+        logln("Applying pattern " + p1);
+        pat.applyPattern(p1);
+        String s2;
+        s2 = pat.toPattern();
+        logln("Extracted pattern is " + s2);
+        if (!s2.equals(p1)) {
+            errln("ERROR: toPattern() result did not match pattern applied");
+        }
+    
+        String p2 = new String("#,##0.0# FF;(#,##0.0# FF)");
+        logln("Applying pattern " + p2);
+        pat.applyLocalizedPattern(p2);
+        String s3;
+        s3 = pat.toLocalizedPattern();
+        logln("Extracted pattern is " + s3);
+        if (!s3.equals(p2)) {
+            errln("ERROR: toLocalizedPattern() result did not match pattern applied");
+        }
+    
+        // ======= Test getStaticClassID()
+    
+        //        logln("Testing instanceof()");
+    
+        //        try {
+        //           NumberFormat test = new DecimalFormat();
+    
+        //            if (! (test instanceof DecimalFormat)) {
+        //                errln("ERROR: instanceof failed");
+        //            }
+        //        }
+        //        catch (Exception e) {
+        //            errln("ERROR: Couldn't create a DecimalFormat");
+        //        }
+       
+    }
+
+    public void TestRounding() {
+        double Roundingnumber = 2.55;
+        double Roundingnumber1 = -2.55;
+        //+2.55 results   -2.55 results
+        double result[] = {
+            3, -3,   
+            2, -2, 
+            3, -2, 
+            2, -3, 
+            3, -3, 
+            3, -3, 
+            3, -3 
+        };
+        DecimalFormat pat = new DecimalFormat();
+        String s = "";
+        s = pat.toPattern();
+        logln("pattern = " + s);
+        int mode;
+        int i = 0;
+        String message;
+        String resultStr;
+        for (mode = 0; mode < 7; mode++) {
+            pat.setRoundingMode(mode);
+            if (pat.getRoundingMode() != mode) {
+                errln(
+                     "SetRoundingMode or GetRoundingMode failed for mode=" + mode); 
+            }
+    
+            //for +2.55 with RoundingIncrement=1.0
+            pat.setRoundingIncrement(1.0);
+            resultStr = pat.format(Roundingnumber);
+            message = "round(" + (double) Roundingnumber
+                    + "," + mode + ",FALSE) with RoundingIncrement=1.0==>"; 
+            verify(message, resultStr, result[i++]);
+            message = "";
+            resultStr = "";
+    
+            //for -2.55 with RoundingIncrement=1.0
+            resultStr = pat.format(Roundingnumber1);
+            message = "round(" + (double) Roundingnumber1
+                    + "," + mode + ",FALSE) with RoundingIncrement=1.0==>"; 
+            verify(message, resultStr, result[i++]);
+            message = "";
+            resultStr = "";
+        }
+    }
+    
+    /*Helper functions */
+    public void verify(String message, String got, double expected) {
+        logln(message + got + " Expected : " + (long)expected);
+        String expectedStr = "";
+        expectedStr=expectedStr + (long)expected;
+        if(!got.equals(expectedStr) ) {
+            errln("ERROR: Round() failed:  " + message + got + "  Expected : " + expectedStr);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java
new file mode 100755
index 0000000..e7bf2ed
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java
@@ -0,0 +1,129 @@
+/*****************************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java,v $ 
+ * $Date: 2002/08/01 20:27:21 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDecimalFormatSymbols
+ * Source File: java/text/format/IntlTestDecimalFormatSymbols.java
+ **/
+ 
+/*
+    @test 1.4 98/03/06
+    @summary test International Decimal Format Symbols
+*/
+/***************************************************************************
+*
+*   Copyright (C) 1996-2002, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+************************************************************************/
+
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Locale;
+import java.text.FieldPosition;
+
+public class IntlTestDecimalFormatSymbols extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new IntlTestDecimalFormatSymbols().run(args);
+    }
+
+    // Test the API of DecimalFormatSymbols; primarily a simple get/set set.
+    public void TestSymbols()
+    {
+        DecimalFormatSymbols fr = new DecimalFormatSymbols(Locale.FRENCH);
+
+        DecimalFormatSymbols en = new DecimalFormatSymbols(Locale.ENGLISH);
+
+        if(en.equals(fr)) {
+            errln("ERROR: English DecimalFormatSymbols equal to French");
+        }
+
+        // just do some VERY basic tests to make sure that get/set work
+
+        char zero = en.getZeroDigit();
+        fr.setZeroDigit(zero);
+        if(fr.getZeroDigit() != en.getZeroDigit()) {
+            errln("ERROR: get/set ZeroDigit failed");
+        }
+
+        char group = en.getGroupingSeparator();
+        fr.setGroupingSeparator(group);
+        if(fr.getGroupingSeparator() != en.getGroupingSeparator()) {
+            errln("ERROR: get/set GroupingSeparator failed");
+        }
+
+        char decimal = en.getDecimalSeparator();
+        fr.setDecimalSeparator(decimal);
+        if(fr.getDecimalSeparator() != en.getDecimalSeparator()) {
+            errln("ERROR: get/set DecimalSeparator failed");
+        }
+
+        char perMill = en.getPerMill();
+        fr.setPerMill(perMill);
+        if(fr.getPerMill() != en.getPerMill()) {
+            errln("ERROR: get/set PerMill failed");
+        }
+
+        char percent = en.getPercent();
+        fr.setPercent(percent);
+        if(fr.getPercent() != en.getPercent()) {
+            errln("ERROR: get/set Percent failed");
+        }
+
+        char digit = en.getDigit();
+        fr.setDigit(digit);
+        if(fr.getPercent() != en.getPercent()) {
+            errln("ERROR: get/set Percent failed");
+        }
+
+        char patternSeparator = en.getPatternSeparator();
+        fr.setPatternSeparator(patternSeparator);
+        if(fr.getPatternSeparator() != en.getPatternSeparator()) {
+            errln("ERROR: get/set PatternSeparator failed");
+        }
+
+        String infinity = en.getInfinity();
+        fr.setInfinity(infinity);
+        String infinity2 = fr.getInfinity();
+        if(! infinity.equals(infinity2)) {
+            errln("ERROR: get/set Infinity failed");
+        }
+
+        String nan = en.getNaN();
+        fr.setNaN(nan);
+        String nan2 = fr.getNaN();
+        if(! nan.equals(nan2)) {
+            errln("ERROR: get/set NaN failed");
+        }
+
+        char minusSign = en.getMinusSign();
+        fr.setMinusSign(minusSign);
+        if(fr.getMinusSign() != en.getMinusSign()) {
+            errln("ERROR: get/set MinusSign failed");
+        }
+
+//        char exponential = en.getExponentialSymbol();
+//        fr.setExponentialSymbol(exponential);
+//        if(fr.getExponentialSymbol() != en.getExponentialSymbol()) {
+//            errln("ERROR: get/set Exponential failed");
+//        }
+
+        //DecimalFormatSymbols foo = new DecimalFormatSymbols(); //The variable is never used
+
+        en = (DecimalFormatSymbols) fr.clone();
+
+        if(! en.equals(fr)) {
+            errln("ERROR: Clone failed");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java
new file mode 100755
index 0000000..c37f7a2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java
@@ -0,0 +1,148 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java,v $ 
+ * $Date: 2002/02/16 03:05:11 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : IntlTestDecimalFormatSymbols
+ * Source File: $ICU4CRoot/source/test/intltest/tsdcfmsy.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import java.text.FieldPosition;
+import com.ibm.icu.util.*;
+import java.util.Locale;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+
+/**
+ * Tests for DecimalFormatSymbols
+ **/
+public class IntlTestDecimalFormatSymbolsC extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args) throws Exception {
+        new IntlTestDecimalFormatSymbolsC().run(args);
+    }
+
+    /**
+     * Test the API of DecimalFormatSymbols; primarily a simple get/set set.
+     */
+    public void TestSymbols() {    
+        DecimalFormatSymbols fr = new DecimalFormatSymbols(Locale.FRENCH);    
+        DecimalFormatSymbols en = new DecimalFormatSymbols(Locale.ENGLISH);
+    
+        if (en.equals(fr)) {
+            errln("ERROR: English DecimalFormatSymbols equal to French");
+        }
+    
+        // just do some VERY basic tests to make sure that get/set work
+    
+        char zero = en.getZeroDigit();
+        fr.setZeroDigit(zero);
+        if (fr.getZeroDigit() != en.getZeroDigit()) {
+            errln("ERROR: get/set ZeroDigit failed");
+        }
+    
+        char group = en.getGroupingSeparator();
+        fr.setGroupingSeparator(group);
+        if (fr.getGroupingSeparator() != en.getGroupingSeparator()) {
+            errln("ERROR: get/set GroupingSeparator failed");
+        }
+    
+        char decimal = en.getDecimalSeparator();
+        fr.setDecimalSeparator(decimal);
+        if (fr.getDecimalSeparator() != en.getDecimalSeparator()) {
+            errln("ERROR: get/set DecimalSeparator failed");
+        }
+    
+        char perMill = en.getPerMill();
+        fr.setPerMill(perMill);
+        if (fr.getPerMill() != en.getPerMill()) {
+            errln("ERROR: get/set PerMill failed");
+        }
+    
+        char percent = en.getPercent();
+        fr.setPercent(percent);
+        if (fr.getPercent() != en.getPercent()) {
+            errln("ERROR: get/set Percent failed");
+        }
+    
+        char digit = en.getDigit();
+        fr.setDigit(digit);
+        if (fr.getPercent() != en.getPercent()) {
+            errln("ERROR: get/set Percent failed");
+        }
+    
+        char patternSeparator = en.getPatternSeparator();
+        fr.setPatternSeparator(patternSeparator);
+        if (fr.getPatternSeparator() != en.getPatternSeparator()) {
+            errln("ERROR: get/set PatternSeparator failed");
+        }
+    
+        String infinity = en.getInfinity();
+        fr.setInfinity(infinity);
+        String infinity2 = fr.getInfinity();
+        if (!infinity.equals(infinity2)) {
+            errln("ERROR: get/set Infinity failed");
+        }
+    
+        String nan = en.getNaN();
+        fr.setNaN(nan);
+        String nan2 = fr.getNaN();
+        if (!nan.equals(nan2)) {
+            errln("ERROR: get/set NaN failed");
+        }
+    
+        char minusSign = en.getMinusSign();
+        fr.setMinusSign(minusSign);
+        if (fr.getMinusSign() != en.getMinusSign()) {
+            errln("ERROR: get/set MinusSign failed");
+        }
+    
+        //        char exponential = en.getExponentialSymbol();
+        //        fr.setExponentialSymbol(exponential);
+        //        if(fr.getExponentialSymbol() != en.getExponentialSymbol()) {
+        //            errln("ERROR: get/set Exponential failed");
+        //        }
+    
+        //DecimalFormatSymbols foo = new DecimalFormatSymbols(); //The variable is never used
+    
+        en = (DecimalFormatSymbols) fr.clone();
+    
+        if (!en.equals(fr)) {
+            errln("ERROR: Clone failed");
+        }
+        
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+    
+        verify(34.5, "00.00", sym, "34.50");
+        sym.setDecimalSeparator('S');
+        verify(34.5, "00.00", sym, "34S50");
+        sym.setPercent('P');
+        verify(34.5, "00 %", sym, "3450 P");
+        sym.setCurrencySymbol("D");
+        verify(34.5, "\u00a4##.##", sym, "D34.5");
+        sym.setGroupingSeparator('|');
+        verify(3456.5, "0,000.##", sym, "3|456S5");
+    }
+    
+    /** helper functions**/
+    public void verify(double value, String pattern, DecimalFormatSymbols sym, String expected) {
+        DecimalFormat df = new DecimalFormat(pattern, sym);
+        StringBuffer buffer = new StringBuffer("");
+        FieldPosition pos = new FieldPosition(-1);
+        buffer = df.format(value, buffer, pos);
+        if(!buffer.toString().equals(expected)){
+            errln("ERROR: format failed after setSymbols()\n Expected" + 
+                expected + ", Got " + buffer);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java b/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java
new file mode 100755
index 0000000..3562388
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java
@@ -0,0 +1,292 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java,v $ 
+ * $Date: 2002/02/16 03:05:11 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : IntlTestNumberFormat
+ * Source File: $ICU4CRoot/source/test/intltest/tsnmfmt.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+
+/**
+ * This test does round-trip testing (format -> parse -> format -> parse -> etc.) of
+ * NumberFormat.
+ */
+public class IntlTestNumberFormat extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public NumberFormat fNumberFormat = NumberFormat.getInstance();
+
+    public static void main(String[] args) throws Exception {
+        new IntlTestNumberFormat().run(args);
+    }
+    
+    /*
+     * Internal use
+     **/
+    public void _testLocale(java.util.Locale locale, String localeName) {
+        String name;
+    //    locale = java.util.Locale.getDefault();
+    //    localeName = locale.getDisplayName();
+            
+        name = "Number test";
+        logln(name + " ( " + localeName + " ) ");
+        fNumberFormat = NumberFormat.getInstance(locale);
+        TestFormat();
+    
+        name = "Currency test";
+        logln(name + " (" + localeName + ")");
+        fNumberFormat = NumberFormat.getCurrencyInstance(locale);
+        TestFormat(/* par */);
+    
+        name = "Percent test";
+        logln(name + " (" + localeName + ")");
+        fNumberFormat = NumberFormat.getPercentInstance(locale);
+        TestFormat(/* par */);
+        
+    }
+    
+    /**
+     *  call TestFormat for currency, percent and plain number instances
+     **/
+    public void TestLocale() {
+        String name;
+        String localeName;    
+        java.util.Locale locale = java.util.Locale.getDefault();
+        localeName = locale.getDisplayName();
+            
+        name = "Number test";
+        logln(name + " ( " + localeName + " ) ");
+        fNumberFormat = NumberFormat.getInstance();
+        TestFormat();
+    
+        name = "Currency test";
+        logln(name + " (" + localeName + ")");
+        fNumberFormat = NumberFormat.getCurrencyInstance();
+        TestFormat(/* par */);
+    
+        name = "Percent test";
+        logln(name + " (" + localeName + ")");
+        fNumberFormat = NumberFormat.getPercentInstance();
+        TestFormat(/* par */);
+        
+    }
+    
+    /**
+     *  call tryIt with many variations, called by testLocale
+     **/
+    public void TestFormat() {
+        
+        if (fNumberFormat == null){
+            errln("**** FAIL: Null format returned by createXxxInstance.");
+             return;
+        }
+        DecimalFormat s = (DecimalFormat)fNumberFormat;
+        logln("pattern :" + s.toPattern());
+    
+        tryIt(-2.02147304840132e-68);
+        tryIt(3.88057859588817e-68); 
+        tryIt(-2.64651110485945e+65);
+        tryIt(9.29526819488338e+64);
+    
+        tryIt(-2.02147304840132e-100);
+        tryIt(3.88057859588817e-096); 
+        tryIt(-2.64651110485945e+306);
+        tryIt(9.29526819488338e+250); 
+    
+        tryIt(-9.18228054496402e+64);
+        tryIt(-9.69413034454191e+64);
+    
+        tryIt(-9.18228054496402e+255);
+        tryIt(-9.69413034454191e+273);
+    
+    
+        tryIt(1.234e-200);
+        tryIt(-2.3e-168);
+    
+        tryIt(Double.NaN);
+        tryIt(Double.POSITIVE_INFINITY);
+        tryIt(Double.NEGATIVE_INFINITY);
+    
+        tryIt(251887531);
+        tryIt(5e-20 / 9);
+        tryIt(5e20 / 9);
+        tryIt(1.234e-50);
+        tryIt(9.99999999999996);
+        tryIt(9.999999999999996);
+    
+        tryIt(Integer.MIN_VALUE);
+        tryIt(Integer.MAX_VALUE);
+        tryIt((double)Integer.MIN_VALUE);
+        tryIt((double)Integer.MAX_VALUE);
+        tryIt((double)Integer.MIN_VALUE - 1.0);
+        tryIt((double)Integer.MAX_VALUE + 1.0);
+    
+        tryIt(5.0 / 9.0 * 1e-20);
+        tryIt(4.0 / 9.0 * 1e-20);
+        tryIt(5.0 / 9.0 * 1e+20);
+        tryIt(4.0 / 9.0 * 1e+20);
+    
+        tryIt(2147483647.);
+        tryIt(0);
+        tryIt(0.0);
+        tryIt(1);
+        tryIt(10);
+        tryIt(100);
+        tryIt(-1);
+        tryIt(-10);
+        tryIt(-100);
+        tryIt(-1913860352);
+    
+        for (int j = 0; j < 10; j++) {
+            double d = Math.random()*2e10 - 1e10;
+            tryIt(d);
+            
+        }
+    }
+    
+    /**
+     *  perform tests using aNumber and fNumberFormat, called in many variations
+     **/
+    public void tryIt(double aNumber) {    
+        final int DEPTH = 10;
+        double[] number = new double[DEPTH];
+        String[] string = new String[DEPTH];
+        int numberMatch = 0;
+        int stringMatch = 0;
+        boolean dump = false;
+        int i;
+    
+        for (i = 0; i < DEPTH; i++) {
+            if (i == 0) {
+                number[i] = aNumber;
+            } else {
+                try {
+                    number[i - 1] = fNumberFormat.parse(string[i - 1]).doubleValue();
+                } catch(java.text.ParseException pe) {
+                    errln("**** FAIL: Parse of " + string[i-1] + " failed.");
+                    dump = true;
+                    break;
+                }
+            }
+    
+            string[i] = fNumberFormat.format(number[i]);
+            if (i > 0)
+            {
+                if (numberMatch == 0 && number[i] == number[i-1])
+                    numberMatch = i;
+                else if (numberMatch > 0 && number[i] != number[i-1])
+                {
+                    errln("**** FAIL: Numeric mismatch after match.");
+                    dump = true;
+                    break;
+                }
+                if (stringMatch == 0 && string[i] == string[i-1])
+                    stringMatch = i;
+                else if (stringMatch > 0 && string[i] != string[i-1])
+                {
+                    errln("**** FAIL: String mismatch after match.");
+                    dump = true;
+                    break;
+                }
+            }
+            if (numberMatch > 0 && stringMatch > 0)
+                break;
+    
+            if (i == DEPTH)
+            --i;
+    
+        if (stringMatch > 2 || numberMatch > 2)
+        {
+            errln("**** FAIL: No string and/or number match within 2 iterations.");
+            dump = true;
+        }
+    
+        if (dump)
+        {
+            for (int k=0; k<=i; ++k)
+            {
+                logln(k + ": " + number[k] + " F> " +
+                      string[k] + " P> ");
+            }
+        }
+        }
+    }
+    
+    /**
+     *  perform tests using aNumber and fNumberFormat, called in many variations
+     **/
+    public void tryIt(int aNumber) {
+        long number;;
+        
+        String stringNum = fNumberFormat.format(aNumber);
+        try {
+            number = fNumberFormat.parse(stringNum).longValue();
+        } catch (java.text.ParseException pe) {
+            errln("**** FAIL: Parse of " + stringNum + " failed.");
+            return;
+        }
+    
+        if (number != aNumber) {
+            errln("**** FAIL: Parse of " + stringNum + " failed. Got:" + number
+                + " Expected:" + aNumber);
+        }
+        
+    }
+    
+    /**
+     *  test NumberFormat::getAvailableLocales
+     **/
+    public void TestAvailableLocales() {
+        final java.util.Locale[] locales = NumberFormat.getAvailableLocales();
+        int count = locales.length;
+        logln(count + " available locales");
+        if (count != 0)
+        {
+            String all = "";
+            for (int i = 0; i< count; ++i)
+            {
+                if (i!=0)
+                    all += ", ";
+                all += locales[i].getDisplayName();
+            }
+            logln(all);
+        }
+        else
+            errln("**** FAIL: Zero available locales or null array pointer");
+    }
+    
+    /**
+     *  call testLocale for all locales
+     **/    
+    public void TestMonster() {
+        final String SEP = "============================================================\n";
+        int count;
+        final java.util.Locale[] locales = NumberFormat.getAvailableLocales();
+        count = locales.length;
+        if (count != 0)
+        {
+            count = 3; //  just test 3 locales 
+            for (int i=0; i<count; ++i)
+            {
+                String name = locales[i].getDisplayName();
+                logln(SEP);
+                _testLocale(/* par, */locales[i], name);
+            }
+        }
+    
+        logln(SEP);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java b/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java
new file mode 100755
index 0000000..8ec4399
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java
@@ -0,0 +1,211 @@
+/*****************************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java,v $ 
+ * $Date: 2002/08/01 20:27:21 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestNumberFormatAPI
+ * Source File: java/text/format/IntlTestNumberFormatAPI.java
+ **/
+
+/*
+    @test 1.4 98/03/06
+    @summary test International Number Format API
+*/
+/***************************************************************************
+*
+*   Copyright (C) 1996-2002, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+************************************************************************/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Locale;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.text.ParseException;
+
+public class IntlTestNumberFormatAPI extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new IntlTestNumberFormatAPI().run(args);
+    }
+
+    // This test checks various generic API methods in DecimalFormat to achieve 100% API coverage.
+    public void TestAPI()
+    {
+        logln("NumberFormat API test---"); logln("");
+        Locale.setDefault(Locale.ENGLISH);
+
+        // ======= Test constructors
+
+        logln("Testing NumberFormat constructors");
+
+        NumberFormat def = NumberFormat.getInstance();
+
+        NumberFormat fr = NumberFormat.getInstance(Locale.FRENCH);
+
+        NumberFormat cur = NumberFormat.getCurrencyInstance();
+
+        NumberFormat cur_fr = NumberFormat.getCurrencyInstance(Locale.FRENCH);
+
+        NumberFormat per = NumberFormat.getPercentInstance();
+
+        NumberFormat per_fr = NumberFormat.getPercentInstance(Locale.FRENCH);
+        
+        NumberFormat integer = NumberFormat.getIntegerInstance();
+        
+        NumberFormat int_fr = NumberFormat.getIntegerInstance(Locale.FRENCH);
+        
+        //Fix "The variable is never used" compilation warnings
+        logln("Currency : " + cur.format(1234.5));
+        logln("Percent : " + per.format(1234.5));
+        logln("Integer : " + integer.format(1234.5));
+        logln("Int_fr : " + int_fr.format(1234.5));
+        
+        // ======= Test equality
+
+        logln("Testing equality operator");
+
+        if( per_fr.equals(cur_fr) ) {
+            errln("ERROR: == failed");
+        }
+
+        // ======= Test various format() methods
+
+        logln("Testing various format() methods");
+
+//        final double d = -10456.0037; // this appears as -10456.003700000001 on NT
+//        final double d = -1.04560037e-4; // this appears as -1.0456003700000002E-4 on NT
+        final double d = -10456.00370000000000; // this works!
+        final long l = 100000000;
+
+        String res1 = new String();
+        String res2 = new String();
+        StringBuffer res3 = new StringBuffer();
+        StringBuffer res4 = new StringBuffer();
+        StringBuffer res5 = new StringBuffer();
+        StringBuffer res6 = new StringBuffer();
+        FieldPosition pos1 = new FieldPosition(0);
+        FieldPosition pos2 = new FieldPosition(0);
+        FieldPosition pos3 = new FieldPosition(0);
+        FieldPosition pos4 = new FieldPosition(0);
+
+        res1 = cur_fr.format(d);
+        logln( "" + d + " formatted to " + res1);
+
+        res2 = cur_fr.format(l);
+        logln("" + l + " formatted to " + res2);
+
+        res3 = cur_fr.format(d, res3, pos1);
+        logln( "" + d + " formatted to " + res3);
+
+        res4 = cur_fr.format(l, res4, pos2);
+        logln("" + l + " formatted to " + res4);
+
+        res5 = cur_fr.format(d, res5, pos3);
+        logln("" + d + " formatted to " + res5);
+
+        res6 = cur_fr.format(l, res6, pos4);
+        logln("" + l + " formatted to " + res6);
+
+
+        // ======= Test parse()
+
+        logln("Testing parse()");
+
+//        String text = new String("-10,456.0037");
+        String text = new String("-10456,0037");
+        ParsePosition pos = new ParsePosition(0);
+        ParsePosition pos01 = new ParsePosition(0);
+        double d1 = ((Number)fr.parseObject(text, pos)).doubleValue();
+        if(d1 != d) {
+            errln("ERROR: Roundtrip failed (via parse()) for " + text);
+        }
+        logln(text + " parsed into " + d1);
+
+        double d2 = fr.parse(text, pos01).doubleValue();
+        if(d2 != d) {
+            errln("ERROR: Roundtrip failed (via parse()) for " + text);
+        }
+        logln(text + " parsed into " + d2);
+
+        double d3 = 0;
+        try {
+            d3 = fr.parse(text).doubleValue();
+        }
+        catch (ParseException e) {
+            errln("ERROR: parse() failed");
+        }
+        if(d3 != d) {
+            errln("ERROR: Roundtrip failed (via parse()) for " + text);
+        }
+        logln(text + " parsed into " + d3);
+
+
+        // ======= Test getters and setters
+
+        logln("Testing getters and setters");
+
+        final Locale[] locales = NumberFormat.getAvailableLocales();
+        long count = locales.length;
+        logln("Got " + count + " locales" );
+        for(int i = 0; i < count; i++) {
+            String name;
+            name = locales[i].getDisplayName();
+            logln(name);
+        }
+
+        fr.setParseIntegerOnly( def.isParseIntegerOnly() );
+        if(fr.isParseIntegerOnly() != def.isParseIntegerOnly() ) {
+                errln("ERROR: setParseIntegerOnly() failed");
+        }
+
+        fr.setGroupingUsed( def.isGroupingUsed() );
+        if(fr.isGroupingUsed() != def.isGroupingUsed() ) {
+                errln("ERROR: setGroupingUsed() failed");
+        }
+
+        fr.setMaximumIntegerDigits( def.getMaximumIntegerDigits() );
+        if(fr.getMaximumIntegerDigits() != def.getMaximumIntegerDigits() ) {
+                errln("ERROR: setMaximumIntegerDigits() failed");
+        }
+
+        fr.setMinimumIntegerDigits( def.getMinimumIntegerDigits() );
+        if(fr.getMinimumIntegerDigits() != def.getMinimumIntegerDigits() ) {
+                errln("ERROR: setMinimumIntegerDigits() failed");
+        }
+
+        fr.setMaximumFractionDigits( def.getMaximumFractionDigits() );
+        if(fr.getMaximumFractionDigits() != def.getMaximumFractionDigits() ) {
+                errln("ERROR: setMaximumFractionDigits() failed");
+        }
+
+        fr.setMinimumFractionDigits( def.getMinimumFractionDigits() );
+        if(fr.getMinimumFractionDigits() != def.getMinimumFractionDigits() ) {
+                errln("ERROR: setMinimumFractionDigits() failed");
+        }
+
+        // ======= Test getStaticClassID()
+
+//        logln("Testing instanceof()");
+
+//        try {
+//            NumberFormat test = new DecimalFormat();
+
+//            if (! (test instanceof DecimalFormat)) {
+//                errln("ERROR: instanceof failed");
+//            }
+//        }
+//        catch (Exception e) {
+//            errln("ERROR: Couldn't create a DecimalFormat");
+//        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java b/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java
new file mode 100755
index 0000000..39c2d11
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java
@@ -0,0 +1,180 @@
+/*****************************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java,v $ 
+ * $Date: 2002/02/16 03:05:11 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestSimpleDateFormatAPI
+ * Source File: java/text/format/IntlTestSimpleDateFormatAPI.java
+ **/
+ 
+/*
+    @test 1.4 98/03/06
+    @summary test International Simple Date Format API
+*/
+/*
+(C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
+(C) Copyright IBM Corp. 1996, 1997, 2001 - All Rights Reserved
+
+  The original version of this source code and documentation is copyrighted and
+owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These materials are
+provided under terms of a License Agreement between Taligent and Sun. This
+technology is protected by multiple US and International patents. This notice and
+attribution to Taligent may not be removed.
+  Taligent is a registered trademark of Taligent, Inc.
+*/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.util.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+import java.util.Date;
+import java.text.ParsePosition;
+import java.text.Format;
+import java.text.FieldPosition;
+import java.text.ParseException;
+
+public class IntlTestSimpleDateFormatAPI extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new IntlTestSimpleDateFormatAPI().run(args);
+    }
+
+    // This test checks various generic API methods in DecimalFormat to achieve 100% API coverage.
+    public void TestAPI()
+    {
+        logln("SimpleDateFormat API test---"); logln("");
+
+        Locale.setDefault(Locale.ENGLISH);
+
+        // ======= Test constructors
+
+        logln("Testing SimpleDateFormat constructors");
+
+        SimpleDateFormat def = new SimpleDateFormat();
+
+        final String pattern = new String("yyyy.MM.dd G 'at' hh:mm:ss z");
+        SimpleDateFormat pat = new SimpleDateFormat(pattern);
+
+        SimpleDateFormat pat_fr = new SimpleDateFormat(pattern, Locale.FRENCH);
+
+        DateFormatSymbols symbols = new DateFormatSymbols(Locale.FRENCH);
+
+        SimpleDateFormat cust1 = new SimpleDateFormat(pattern, symbols);
+
+        // ======= Test clone() and equality
+
+        logln("Testing clone(), assignment and equality operators");
+
+        Format clone = (Format) def.clone();
+        if( ! clone.equals(def) ) {
+            errln("ERROR: Format clone or equals failed");
+        }
+
+        // ======= Test various format() methods
+
+        logln("Testing various format() methods");
+
+        Date d = new Date((long)837039928046.0);
+
+        StringBuffer res1 = new StringBuffer();
+        StringBuffer res2 = new StringBuffer();
+        FieldPosition pos1 = new FieldPosition(0);
+        FieldPosition pos2 = new FieldPosition(0);
+
+        res1 = def.format(d, res1, pos1);
+        logln( "" + d.getTime() + " formatted to " + res1);
+
+        res2 = cust1.format(d, res2, pos2);
+        logln("" + d.getTime() + " formatted to " + res2);
+
+        // ======= Test parse()
+
+        logln("Testing parse()");
+
+        String text = new String("02/03/76 2:50 AM, CST");
+        Date result1 = new Date();
+        Date result2 = new Date();
+        ParsePosition pos= new ParsePosition(0);
+        result1 = def.parse(text, pos);
+        logln(text + " parsed into " + result1);
+
+        try {
+            result2 = def.parse(text);
+        }
+        catch (ParseException e) {
+            errln("ERROR: parse() failed");
+        }
+        logln(text + " parsed into " + result2);
+
+        // ======= Test getters and setters
+
+        logln("Testing getters and setters");
+
+        final DateFormatSymbols syms = pat.getDateFormatSymbols();
+        def.setDateFormatSymbols(syms);
+        pat_fr.setDateFormatSymbols(syms);
+        if( ! pat.getDateFormatSymbols().equals(def.getDateFormatSymbols()) ) {
+            errln("ERROR: set DateFormatSymbols() failed");
+        }
+
+        /*
+        DateFormatSymbols has not the method getTwoDigitStartDate();
+        //Date startDate = null; //The variable is never used
+        try {
+//            startDate = pat.getTwoDigitStartDate();
+        }
+        catch (Exception e) {
+            errln("ERROR: getTwoDigitStartDate() failed");
+        }
+
+        try {
+//            pat_fr.setTwoDigitStartDate(startDate);
+        }
+        catch (Exception e) {
+            errln("ERROR: setTwoDigitStartDate() failed");
+        }*/
+
+        // ======= Test applyPattern()
+
+        logln("Testing applyPattern()");
+
+        String p1 = new String("yyyy.MM.dd G 'at' hh:mm:ss z");
+        logln("Applying pattern " + p1);
+        pat.applyPattern(p1);
+
+        String s2 = pat.toPattern();
+        logln("Extracted pattern is " + s2);
+        if( ! s2.equals(p1) ) {
+            errln("ERROR: toPattern() result did not match pattern applied");
+        }
+
+        logln("Applying pattern " + p1);
+        pat.applyLocalizedPattern(p1);
+        String s3 = pat.toLocalizedPattern();
+        logln("Extracted pattern is " + s3);
+        if( ! s3.equals(p1) ) {
+            errln("ERROR: toLocalizedPattern() result did not match pattern applied");
+        }
+
+        // ======= Test getStaticClassID()
+
+//        logln("Testing instanceof");
+
+//        try {
+//            DateFormat test = new SimpleDateFormat();
+
+//            if (! (test instanceof SimpleDateFormat)) {
+//                errln("ERROR: instanceof failed");
+//            }
+//        }
+//        catch (Exception e) {
+//            errln("ERROR: Couldn't create a SimpleDateFormat");
+//        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java b/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java
new file mode 100755
index 0000000..d4b2d7e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java
@@ -0,0 +1,188 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java,v $ 
+ * $Date: 2002/02/16 03:05:11 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : NumberFormatRegressionTest
+ * Source File: $ICU4CRoot/source/test/intltest/numrgts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Locale;
+import java.util.Date;
+import java.text.ParseException;
+import java.io.*;
+
+/** 
+ * Performs regression test for MessageFormat
+ **/
+public class NumberFormatRegressionTest extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args) throws Exception{
+        new NumberFormatRegressionTest().run(args);
+    }
+    
+    /**
+     * alphaWorks upgrade
+     */
+    public void Test4161100() {
+        NumberFormat nf = NumberFormat.getInstance(Locale.US);
+        nf.setMinimumFractionDigits(1);
+        nf.setMaximumFractionDigits(1);
+        double a = -0.09;
+        String s = nf.format(a);
+        logln(a + " x " +
+              ((DecimalFormat) nf).toPattern() + " = " + s);
+        if (!s.equals("-0.1")) {
+            errln("FAIL");
+        }
+    }
+    
+    /**
+     * DateFormat should call setIntegerParseOnly(TRUE) on adopted
+     * NumberFormat objects.
+     */
+    public void TestJ691() {
+        
+        Locale loc = new Locale("fr", "CH");
+    
+        // set up the input date string & expected output
+        String udt = "11.10.2000";
+        String exp = "11.10.00";
+    
+        // create a Calendar for this locale
+        Calendar cal = Calendar.getInstance(loc);
+    
+        // create a NumberFormat for this locale
+        NumberFormat nf = NumberFormat.getInstance(loc);
+    
+        // *** Here's the key: We don't want to have to do THIS:
+        //nf.setParseIntegerOnly(true);
+    
+        // create the DateFormat
+        DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, loc);
+    
+        df.setCalendar(cal);
+        df.setNumberFormat(nf);
+    
+        // set parsing to lenient & parse
+        Date ulocdat = new Date();
+        df.setLenient(true);
+        try {
+            ulocdat = df.parse(udt);
+        } catch (java.text.ParseException pe) {
+            errln(pe.getMessage());
+        }
+        // format back to a string
+        String outString = df.format(ulocdat);
+    
+        if (!outString.equals(exp)) {
+            errln("FAIL: " + udt + " => " + outString);
+        }
+    }
+    
+    /**
+     * Test getIntegerInstance();
+     */
+    public void Test4408066() {
+        
+        NumberFormat nf1 = NumberFormat.getIntegerInstance();
+        NumberFormat nf2 = NumberFormat.getIntegerInstance(Locale.CHINA);
+    
+        //test isParseIntegerOnly
+        if (!nf1.isParseIntegerOnly() || !nf2.isParseIntegerOnly()) {
+            errln("Failed : Integer Number Format Instance should set setParseIntegerOnly(true)");
+        }
+    
+        //Test format
+        {
+            double[] data = {
+                -3.75, -2.5, -1.5, 
+                -1.25, 0,    1.0, 
+                1.25,  1.5,  2.5, 
+                3.75,  10.0, 255.5
+                };
+            String[] expected = {
+                "-4", "-2", "-2",
+                "-1", "0",  "1",
+                "1",  "2",  "2",
+                "4",  "10", "256"
+                };
+    
+            for (int i = 0; i < data.length; ++i) {
+                String result = nf1.format(data[i]);
+                if (!result.equals(expected[i])) {
+                    errln("Failed => Source: " + Double.toString(data[i]) 
+                        + ";Formatted : " + result
+                        + ";but expectted: " + expected[i]);
+                }
+            }
+        }
+        //Test parse, Parsing should stop at "."
+        {
+            String data[] = {
+                "-3.75", "-2.5", "-1.5", 
+                "-1.25", "0",    "1.0", 
+                "1.25",  "1.5",  "2.5", 
+                "3.75",  "10.0", "255.5"
+                };
+            long[] expected = {
+                -3, -2, -1,
+                -1, 0,  1,
+                1,  1,  2,
+                3,  10, 255
+                };
+            
+            for (int i = 0; i < data.length; ++i) {
+                Number n = null;
+                try {
+                    n = nf1.parse(data[i]);
+                } catch (ParseException e) {
+                    errln("Failed: " + e.getMessage());
+                }
+                if (!(n instanceof Long) || (n instanceof Integer)) {
+                    errln("Failed: Integer Number Format should parse string to Long/Integer");
+                }
+                if (n.longValue() != expected[i]) {
+                    errln("Failed=> Source: " + data[i] 
+                        + ";result : " + n.toString()
+                        + ";expected :" + Long.toString(expected[i]));
+                }
+            }
+        }
+    }
+    
+    //Test New serialized DecimalFormat(2.0) read old serialized forms of DecimalFormat(1.3.1.1)
+    public void TestSerialization() throws IOException, ClassNotFoundException{
+        byte[][] contents = NumberFormatSerialTestData.getContent();
+        double data = 1234.56;
+        String[] expected = {
+            "1,234.56", "$1,234.56", "123,456%", "1.23456E3"};
+        for (int i = 0; i < 4; ++i) {
+            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(contents[i]));
+            try {
+                NumberFormat format = (NumberFormat) ois.readObject();
+                String result = format.format(data);
+                if (result.equals(expected[i])) {
+                    logln("OK: Deserialized bogus NumberFormat(new version read old version)");
+                } else {
+                    errln("FAIL: the test data formats are not euqal");
+                }
+            } catch (Exception e) {
+                errln("FAIL: " + e.getMessage());
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java b/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java
new file mode 100755
index 0000000..89a480a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java
@@ -0,0 +1,236 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java,v $ 
+ * $Date: 2002/02/16 03:05:12 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Porting From: ICU4C v1.8.1 : format : NumberFormatRoundTripTest
+ * Source File: $ICU4CRoot/source/test/intltest/nmfmtrt.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Locale;
+
+/** 
+ * Performs round-trip tests for NumberFormat
+ **/
+public class NumberFormatRoundTripTest extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public double MAX_ERROR = 1e-14;
+    public double max_numeric_error = 0.0;
+    public double min_numeric_error = 1.0;
+    public boolean verbose = false;
+    public boolean STRING_COMPARE = false;
+    public boolean EXACT_NUMERIC_COMPARE = false;
+    public boolean DEBUG = false;
+    public boolean quick = true;
+    
+    public static void main(String[] args) throws Exception {
+        new NumberFormatRoundTripTest().run(args);
+    }
+    
+    public void TestNumberFormatRoundTrip() {
+    
+        NumberFormat fmt = null;
+    
+        logln("Default Locale");
+        
+        logln("Default Number format");
+        fmt = NumberFormat.getInstance();
+        _test(fmt);
+    
+        logln("Currency Format");
+        fmt = NumberFormat.getCurrencyInstance();
+        _test(fmt);
+    
+        logln("Percent Format");
+        fmt = NumberFormat.getPercentInstance();
+        _test(fmt);
+    
+    
+        int locCount = 0;
+        final Locale[] loc = NumberFormat.getAvailableLocales();
+        if(quick) {
+            if(locCount > 5)
+                locCount = 5;
+            logln("Quick mode: only _testing first 5 Locales");
+        }
+        for(int i = 0; i < locCount; ++i) {
+            logln(loc[i].getDisplayName());
+    
+            fmt = NumberFormat.getInstance(loc[i]);
+            _test(fmt);
+        
+            fmt = NumberFormat.getCurrencyInstance(loc[i]);
+            _test(fmt);
+        
+            fmt = NumberFormat.getPercentInstance(loc[i]);
+            _test(fmt);
+        }
+    
+        logln("Numeric error " + min_numeric_error + " to " + max_numeric_error);
+    }
+    
+    /**
+     * Return a random value from -range..+range.
+     */
+    public double randomDouble(double range) {
+        return Math.random() * range;
+    } 
+    
+    public void _test(NumberFormat fmt) {
+    
+        _test(fmt, Double.NaN);
+        _test(fmt, Double.POSITIVE_INFINITY);
+        _test(fmt, Double.NEGATIVE_INFINITY);
+    
+        _test(fmt, 500);
+        _test(fmt, 0);
+        _test(fmt, -0);
+        _test(fmt, 0.0);
+        double negZero = 0.0;
+        negZero /= -1.0;
+        _test(fmt, negZero);
+        _test(fmt, 9223372036854775808.0d);
+        _test(fmt, -9223372036854775809.0d);
+        //_test(fmt, 6.936065876100493E74d);
+        
+    //    _test(fmt, 6.212122845281909E48d);
+        for (int i = 0; i < 10; ++i) {
+    
+            _test(fmt, randomDouble(1));
+            
+            _test(fmt, randomDouble(10000));
+    
+            _test(fmt, Math.floor((randomDouble(10000))));
+    
+            _test(fmt, randomDouble(1e50));
+    
+            _test(fmt, randomDouble(1e-50));
+    
+            _test(fmt, randomDouble(1e100));
+    
+            _test(fmt, randomDouble(1e75));
+    
+            _test(fmt, randomDouble(1e308) / ((DecimalFormat) fmt).getMultiplier());
+    
+            _test(fmt, randomDouble(1e75) / ((DecimalFormat) fmt).getMultiplier());
+    
+            _test(fmt, randomDouble(1e65) / ((DecimalFormat) fmt).getMultiplier());
+    
+            _test(fmt, randomDouble(1e-292));
+    
+            _test(fmt, randomDouble(1e-78));
+    
+            _test(fmt, randomDouble(1e-323));
+    
+            _test(fmt, randomDouble(1e-100));
+    
+            _test(fmt, randomDouble(1e-78));
+        }
+    }
+    
+    public void _test(NumberFormat fmt, double value) {
+        _test(fmt, new Double(value));
+    }
+    
+    public void _test(NumberFormat fmt, long value) {
+        _test(fmt, new Long(value));
+    }
+    
+    public void _test(NumberFormat fmt, Number value) {
+        logln("test data = " + value);
+        fmt.setMaximumFractionDigits(999);
+        String s, s2;
+        if (value.getClass().getName().equalsIgnoreCase("java.lang.Double"))
+            s = fmt.format(value.doubleValue());
+        else
+            s = fmt.format(value.longValue());
+    
+        Number n = new Double(0);
+        boolean show = verbose;
+        if (DEBUG)
+            logln(
+            /*value.getString(temp) +*/ " F> " + s);
+        try {
+            n = fmt.parse(s);
+        } catch (java.text.ParseException e) {
+            System.out.println(e);
+        }
+    
+        if (DEBUG)
+            logln(s + " P> " /*+ n.getString(temp)*/);
+    
+        if (value.getClass().getName().equalsIgnoreCase("java.lang.Double"))
+            s2 = fmt.format(n.doubleValue());
+        else
+            s2 = fmt.format(n.longValue());
+    
+        if (DEBUG)
+            logln(/*n.getString(temp) +*/ " F> " + s2);
+    
+        if (STRING_COMPARE) {
+            if (!s.equals(s2)) {
+                errln("*** STRING ERROR \"" + s + "\" != \"" + s2 + "\"");
+                show = true;
+            }
+        }
+    
+        if (EXACT_NUMERIC_COMPARE) {
+            if (value != n) {
+                errln("*** NUMERIC ERROR");
+                show = true;
+            }
+        } else {
+            // Compute proportional error
+            double error = proportionalError(value, n);
+    
+            if (error > MAX_ERROR) {
+                errln("*** NUMERIC ERROR " + error);
+                show = true;
+            }
+    
+            if (error > max_numeric_error)
+                max_numeric_error = error;
+            if (error < min_numeric_error)
+                min_numeric_error = error;
+        }
+    
+        if (show)
+            logln(
+            /*value.getString(temp) +*/ value.getClass().getName() + " F> " + s + " P> " +
+            /*n.getString(temp) +*/ n.getClass().getName() + " F> " + s2);
+    
+    }
+        
+    public double proportionalError(Number a, Number b) {
+        double aa,bb;
+        
+        if(a.getClass().getName().equalsIgnoreCase("java.lang.Double"))
+            aa = a.doubleValue();
+        else
+            aa = a.longValue();
+    
+        if(a.getClass().getName().equalsIgnoreCase("java.lang.Double"))
+            bb = b.doubleValue();
+        else
+            bb = b.longValue();
+    
+        double error = aa - bb;
+        if(aa != 0 && bb != 0) 
+            error /= aa;
+           
+        return Math.abs(error);
+    }   
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/NumberFormatSerialTestData.java b/src/com/ibm/icu/dev/test/format/NumberFormatSerialTestData.java
new file mode 100755
index 0000000..9037c2c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatSerialTestData.java
@@ -0,0 +1,311 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/NumberFormatSerialTestData.java,v $
+ * $Date: 2002/02/19 17:59:03 $
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.dev.test.format;
+
+public class NumberFormatSerialTestData {
+    //get Content
+    public static byte[][] getContent() {
+	        return content;
+    }
+
+    //NumberFormat.getInstance(Locale.US)
+    static byte[] generalInstance = new byte[]{ 
+        -84, -19, 0, 5, 115, 114, 0, 30, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 11, -1, 
+        3, 98, -40, 114, 48, 58, 2, 0, 22, 90, 0, 27, 100, 101, 99, 105, 109, 97, 108, 83, 
+        101, 112, 97, 114, 97, 116, 111, 114, 65, 108, 119, 97, 121, 115, 83, 104, 111, 119, 110, 90, 
+        0, 23, 101, 120, 112, 111, 110, 101, 110, 116, 83, 105, 103, 110, 65, 108, 119, 97, 121, 115, 
+        83, 104, 111, 119, 110, 73, 0, 11, 102, 111, 114, 109, 97, 116, 87, 105, 100, 116, 104, 66, 
+        0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 83, 105, 122, 101, 66, 0, 13, 103, 114, 111, 
+        117, 112, 105, 110, 103, 83, 105, 122, 101, 50, 66, 0, 17, 109, 105, 110, 69, 120, 112, 111, 
+        110, 101, 110, 116, 68, 105, 103, 105, 116, 115, 73, 0, 10, 109, 117, 108, 116, 105, 112, 108, 
+        105, 101, 114, 67, 0, 3, 112, 97, 100, 73, 0, 11, 112, 97, 100, 80, 111, 115, 105, 116, 
+        105, 111, 110, 73, 0, 12, 114, 111, 117, 110, 100, 105, 110, 103, 77, 111, 100, 101, 73, 0, 
+        21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 
+        97, 109, 90, 0, 22, 117, 115, 101, 69, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 78, 
+        111, 116, 97, 116, 105, 111, 110, 76, 0, 16, 110, 101, 103, 80, 114, 101, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 116, 0, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 
+        83, 116, 114, 105, 110, 103, 59, 76, 0, 16, 110, 101, 103, 83, 117, 102, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 116, 105, 
+        118, 101, 80, 114, 101, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 
+        116, 105, 118, 101, 83, 117, 102, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 16, 112, 111, 
+        115, 80, 114, 101, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 
+        0, 16, 112, 111, 115, 83, 117, 102, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 
+        126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 80, 114, 101, 102, 105, 120, 
+        113, 0, 126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 83, 117, 102, 102, 
+        105, 120, 113, 0, 126, 0, 1, 76, 0, 17, 114, 111, 117, 110, 100, 105, 110, 103, 73, 110, 
+        99, 114, 101, 109, 101, 110, 116, 116, 0, 22, 76, 106, 97, 118, 97, 47, 109, 97, 116, 104, 
+        47, 66, 105, 103, 68, 101, 99, 105, 109, 97, 108, 59, 76, 0, 7, 115, 121, 109, 98, 111, 
+        108, 115, 116, 0, 39, 76, 99, 111, 109, 47, 105, 98, 109, 47, 105, 99, 117, 47, 116, 101, 
+        120, 116, 47, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 
+        111, 108, 115, 59, 120, 114, 0, 29, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 78, 117, 109, 98, 101, 114, 70, 111, 114, 109, 97, 116, -33, -10, -77, 
+        -65, 19, 125, 7, -24, 3, 0, 11, 90, 0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 85, 
+        115, 101, 100, 66, 0, 17, 109, 97, 120, 70, 114, 97, 99, 116, 105, 111, 110, 68, 105, 103, 
+        105, 116, 115, 66, 0, 16, 109, 97, 120, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 
+        116, 115, 73, 0, 21, 109, 97, 120, 105, 109, 117, 109, 70, 114, 97, 99, 116, 105, 111, 110, 
+        68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 97, 120, 105, 109, 117, 109, 73, 110, 116, 101, 
+        103, 101, 114, 68, 105, 103, 105, 116, 115, 66, 0, 17, 109, 105, 110, 70, 114, 97, 99, 116, 
+        105, 111, 110, 68, 105, 103, 105, 116, 115, 66, 0, 16, 109, 105, 110, 73, 110, 116, 101, 103, 
+        101, 114, 68, 105, 103, 105, 116, 115, 73, 0, 21, 109, 105, 110, 105, 109, 117, 109, 70, 114, 
+        97, 99, 116, 105, 111, 110, 68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 105, 110, 105, 109, 
+        117, 109, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 116, 115, 90, 0, 16, 112, 97, 
+        114, 115, 101, 73, 110, 116, 101, 103, 101, 114, 79, 110, 108, 121, 73, 0, 21, 115, 101, 114, 
+        105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 97, 109, 120, 114, 
+        0, 16, 106, 97, 118, 97, 46, 116, 101, 120, 116, 46, 70, 111, 114, 109, 97, 116, -5, -40, 
+        -68, 18, -23, 15, 24, 67, 2, 0, 0, 120, 112, 1, 3, 127, 0, 0, 0, 3, 0, 0, 
+        1, 53, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 120, 0, 0, 
+        0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 0, 0, 
+        6, 0, 0, 0, 2, 0, 116, 0, 1, 45, 116, 0, 0, 116, 0, 1, 45, 116, 0, 0, 
+        116, 0, 0, 116, 0, 0, 116, 0, 0, 116, 0, 0, 112, 115, 114, 0, 37, 99, 111, 109, 
+        46, 105, 98, 109, 46, 105, 99, 117, 46, 116, 101, 120, 116, 46, 68, 101, 99, 105, 109, 97, 
+        108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 111, 108, 115, 80, 29, 23, -103, 8, 104, 
+        -109, -100, 2, 0, 18, 67, 0, 16, 100, 101, 99, 105, 109, 97, 108, 83, 101, 112, 97, 114, 
+        97, 116, 111, 114, 67, 0, 5, 100, 105, 103, 105, 116, 67, 0, 11, 101, 120, 112, 111, 110, 
+        101, 110, 116, 105, 97, 108, 67, 0, 17, 103, 114, 111, 117, 112, 105, 110, 103, 83, 101, 112, 
+        97, 114, 97, 116, 111, 114, 67, 0, 9, 109, 105, 110, 117, 115, 83, 105, 103, 110, 67, 0, 
+        17, 109, 111, 110, 101, 116, 97, 114, 121, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 
+        9, 112, 97, 100, 69, 115, 99, 97, 112, 101, 67, 0, 16, 112, 97, 116, 116, 101, 114, 110, 
+        83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 7, 112, 101, 114, 77, 105, 108, 108, 67, 
+        0, 7, 112, 101, 114, 99, 101, 110, 116, 67, 0, 8, 112, 108, 117, 115, 83, 105, 103, 110, 
+        73, 0, 21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 
+        114, 101, 97, 109, 67, 0, 9, 122, 101, 114, 111, 68, 105, 103, 105, 116, 76, 0, 3, 78, 
+        97, 78, 113, 0, 126, 0, 1, 76, 0, 14, 99, 117, 114, 114, 101, 110, 99, 121, 83, 121, 
+        109, 98, 111, 108, 113, 0, 126, 0, 1, 76, 0, 17, 101, 120, 112, 111, 110, 101, 110, 116, 
+        83, 101, 112, 97, 114, 97, 116, 111, 114, 113, 0, 126, 0, 1, 76, 0, 8, 105, 110, 102, 
+        105, 110, 105, 116, 121, 113, 0, 126, 0, 1, 76, 0, 18, 105, 110, 116, 108, 67, 117, 114, 
+        114, 101, 110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 1, 120, 112, 0, 46, 
+        0, 35, 0, 0, 0, 44, 0, 45, 0, 46, 0, 42, 0, 59, 32, 48, 0, 37, 0, 43, 
+        0, 0, 0, 2, 0, 48, 116, 0, 3, -17, -65, -67, 116, 0, 1, 36, 116, 0, 1, 69, 
+        116, 0, 3, -30, -120, -98, 116, 0, 3, 85, 83, 68, 
+    };
+
+    //NumberFormat.getCurrencyInstance(Locale.US)
+    static byte[] currencyInstance = new byte[]{ 
+        -84, -19, 0, 5, 115, 114, 0, 30, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 11, -1, 
+        3, 98, -40, 114, 48, 58, 2, 0, 22, 90, 0, 27, 100, 101, 99, 105, 109, 97, 108, 83, 
+        101, 112, 97, 114, 97, 116, 111, 114, 65, 108, 119, 97, 121, 115, 83, 104, 111, 119, 110, 90, 
+        0, 23, 101, 120, 112, 111, 110, 101, 110, 116, 83, 105, 103, 110, 65, 108, 119, 97, 121, 115, 
+        83, 104, 111, 119, 110, 73, 0, 11, 102, 111, 114, 109, 97, 116, 87, 105, 100, 116, 104, 66, 
+        0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 83, 105, 122, 101, 66, 0, 13, 103, 114, 111, 
+        117, 112, 105, 110, 103, 83, 105, 122, 101, 50, 66, 0, 17, 109, 105, 110, 69, 120, 112, 111, 
+        110, 101, 110, 116, 68, 105, 103, 105, 116, 115, 73, 0, 10, 109, 117, 108, 116, 105, 112, 108, 
+        105, 101, 114, 67, 0, 3, 112, 97, 100, 73, 0, 11, 112, 97, 100, 80, 111, 115, 105, 116, 
+        105, 111, 110, 73, 0, 12, 114, 111, 117, 110, 100, 105, 110, 103, 77, 111, 100, 101, 73, 0, 
+        21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 
+        97, 109, 90, 0, 22, 117, 115, 101, 69, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 78, 
+        111, 116, 97, 116, 105, 111, 110, 76, 0, 16, 110, 101, 103, 80, 114, 101, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 116, 0, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 
+        83, 116, 114, 105, 110, 103, 59, 76, 0, 16, 110, 101, 103, 83, 117, 102, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 116, 105, 
+        118, 101, 80, 114, 101, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 
+        116, 105, 118, 101, 83, 117, 102, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 16, 112, 111, 
+        115, 80, 114, 101, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 
+        0, 16, 112, 111, 115, 83, 117, 102, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 
+        126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 80, 114, 101, 102, 105, 120, 
+        113, 0, 126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 83, 117, 102, 102, 
+        105, 120, 113, 0, 126, 0, 1, 76, 0, 17, 114, 111, 117, 110, 100, 105, 110, 103, 73, 110, 
+        99, 114, 101, 109, 101, 110, 116, 116, 0, 22, 76, 106, 97, 118, 97, 47, 109, 97, 116, 104, 
+        47, 66, 105, 103, 68, 101, 99, 105, 109, 97, 108, 59, 76, 0, 7, 115, 121, 109, 98, 111, 
+        108, 115, 116, 0, 39, 76, 99, 111, 109, 47, 105, 98, 109, 47, 105, 99, 117, 47, 116, 101, 
+        120, 116, 47, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 
+        111, 108, 115, 59, 120, 114, 0, 29, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 78, 117, 109, 98, 101, 114, 70, 111, 114, 109, 97, 116, -33, -10, -77, 
+        -65, 19, 125, 7, -24, 3, 0, 11, 90, 0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 85, 
+        115, 101, 100, 66, 0, 17, 109, 97, 120, 70, 114, 97, 99, 116, 105, 111, 110, 68, 105, 103, 
+        105, 116, 115, 66, 0, 16, 109, 97, 120, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 
+        116, 115, 73, 0, 21, 109, 97, 120, 105, 109, 117, 109, 70, 114, 97, 99, 116, 105, 111, 110, 
+        68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 97, 120, 105, 109, 117, 109, 73, 110, 116, 101, 
+        103, 101, 114, 68, 105, 103, 105, 116, 115, 66, 0, 17, 109, 105, 110, 70, 114, 97, 99, 116, 
+        105, 111, 110, 68, 105, 103, 105, 116, 115, 66, 0, 16, 109, 105, 110, 73, 110, 116, 101, 103, 
+        101, 114, 68, 105, 103, 105, 116, 115, 73, 0, 21, 109, 105, 110, 105, 109, 117, 109, 70, 114, 
+        97, 99, 116, 105, 111, 110, 68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 105, 110, 105, 109, 
+        117, 109, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 116, 115, 90, 0, 16, 112, 97, 
+        114, 115, 101, 73, 110, 116, 101, 103, 101, 114, 79, 110, 108, 121, 73, 0, 21, 115, 101, 114, 
+        105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 97, 109, 120, 114, 
+        0, 16, 106, 97, 118, 97, 46, 116, 101, 120, 116, 46, 70, 111, 114, 109, 97, 116, -5, -40, 
+        -68, 18, -23, 15, 24, 67, 2, 0, 0, 120, 112, 1, 2, 127, 0, 0, 0, 2, 0, 0, 
+        1, 53, 2, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 1, 120, 0, 0, 
+        0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 0, 0, 
+        6, 0, 0, 0, 2, 0, 116, 0, 3, 40, -62, -92, 116, 0, 1, 41, 116, 0, 2, 40, 
+        36, 116, 0, 1, 41, 116, 0, 2, -62, -92, 116, 0, 0, 116, 0, 1, 36, 116, 0, 0, 
+        112, 115, 114, 0, 37, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 116, 101, 120, 
+        116, 46, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 111, 
+        108, 115, 80, 29, 23, -103, 8, 104, -109, -100, 2, 0, 18, 67, 0, 16, 100, 101, 99, 105, 
+        109, 97, 108, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 5, 100, 105, 103, 105, 116, 
+        67, 0, 11, 101, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 67, 0, 17, 103, 114, 111, 
+        117, 112, 105, 110, 103, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 9, 109, 105, 110, 
+        117, 115, 83, 105, 103, 110, 67, 0, 17, 109, 111, 110, 101, 116, 97, 114, 121, 83, 101, 112, 
+        97, 114, 97, 116, 111, 114, 67, 0, 9, 112, 97, 100, 69, 115, 99, 97, 112, 101, 67, 0, 
+        16, 112, 97, 116, 116, 101, 114, 110, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 7, 
+        112, 101, 114, 77, 105, 108, 108, 67, 0, 7, 112, 101, 114, 99, 101, 110, 116, 67, 0, 8, 
+        112, 108, 117, 115, 83, 105, 103, 110, 73, 0, 21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 
+        115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 97, 109, 67, 0, 9, 122, 101, 114, 111, 68, 
+        105, 103, 105, 116, 76, 0, 3, 78, 97, 78, 113, 0, 126, 0, 1, 76, 0, 14, 99, 117, 
+        114, 114, 101, 110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 1, 76, 0, 17, 
+        101, 120, 112, 111, 110, 101, 110, 116, 83, 101, 112, 97, 114, 97, 116, 111, 114, 113, 0, 126, 
+        0, 1, 76, 0, 8, 105, 110, 102, 105, 110, 105, 116, 121, 113, 0, 126, 0, 1, 76, 0, 
+        18, 105, 110, 116, 108, 67, 117, 114, 114, 101, 110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 
+        0, 126, 0, 1, 120, 112, 0, 46, 0, 35, 0, 0, 0, 44, 0, 45, 0, 46, 0, 42, 
+        0, 59, 32, 48, 0, 37, 0, 43, 0, 0, 0, 2, 0, 48, 116, 0, 3, -17, -65, -67, 
+        116, 0, 1, 36, 116, 0, 1, 69, 116, 0, 3, -30, -120, -98, 116, 0, 3, 85, 83, 68, 
+        
+    };
+
+    //NumberFormat.getPercentInstance(Locale.US)
+    static byte[] percentInstance = new byte[]{ 
+        -84, -19, 0, 5, 115, 114, 0, 30, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 11, -1, 
+        3, 98, -40, 114, 48, 58, 2, 0, 22, 90, 0, 27, 100, 101, 99, 105, 109, 97, 108, 83, 
+        101, 112, 97, 114, 97, 116, 111, 114, 65, 108, 119, 97, 121, 115, 83, 104, 111, 119, 110, 90, 
+        0, 23, 101, 120, 112, 111, 110, 101, 110, 116, 83, 105, 103, 110, 65, 108, 119, 97, 121, 115, 
+        83, 104, 111, 119, 110, 73, 0, 11, 102, 111, 114, 109, 97, 116, 87, 105, 100, 116, 104, 66, 
+        0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 83, 105, 122, 101, 66, 0, 13, 103, 114, 111, 
+        117, 112, 105, 110, 103, 83, 105, 122, 101, 50, 66, 0, 17, 109, 105, 110, 69, 120, 112, 111, 
+        110, 101, 110, 116, 68, 105, 103, 105, 116, 115, 73, 0, 10, 109, 117, 108, 116, 105, 112, 108, 
+        105, 101, 114, 67, 0, 3, 112, 97, 100, 73, 0, 11, 112, 97, 100, 80, 111, 115, 105, 116, 
+        105, 111, 110, 73, 0, 12, 114, 111, 117, 110, 100, 105, 110, 103, 77, 111, 100, 101, 73, 0, 
+        21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 
+        97, 109, 90, 0, 22, 117, 115, 101, 69, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 78, 
+        111, 116, 97, 116, 105, 111, 110, 76, 0, 16, 110, 101, 103, 80, 114, 101, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 116, 0, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 
+        83, 116, 114, 105, 110, 103, 59, 76, 0, 16, 110, 101, 103, 83, 117, 102, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 116, 105, 
+        118, 101, 80, 114, 101, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 
+        116, 105, 118, 101, 83, 117, 102, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 16, 112, 111, 
+        115, 80, 114, 101, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 
+        0, 16, 112, 111, 115, 83, 117, 102, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 
+        126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 80, 114, 101, 102, 105, 120, 
+        113, 0, 126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 83, 117, 102, 102, 
+        105, 120, 113, 0, 126, 0, 1, 76, 0, 17, 114, 111, 117, 110, 100, 105, 110, 103, 73, 110, 
+        99, 114, 101, 109, 101, 110, 116, 116, 0, 22, 76, 106, 97, 118, 97, 47, 109, 97, 116, 104, 
+        47, 66, 105, 103, 68, 101, 99, 105, 109, 97, 108, 59, 76, 0, 7, 115, 121, 109, 98, 111, 
+        108, 115, 116, 0, 39, 76, 99, 111, 109, 47, 105, 98, 109, 47, 105, 99, 117, 47, 116, 101, 
+        120, 116, 47, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 
+        111, 108, 115, 59, 120, 114, 0, 29, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 78, 117, 109, 98, 101, 114, 70, 111, 114, 109, 97, 116, -33, -10, -77, 
+        -65, 19, 125, 7, -24, 3, 0, 11, 90, 0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 85, 
+        115, 101, 100, 66, 0, 17, 109, 97, 120, 70, 114, 97, 99, 116, 105, 111, 110, 68, 105, 103, 
+        105, 116, 115, 66, 0, 16, 109, 97, 120, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 
+        116, 115, 73, 0, 21, 109, 97, 120, 105, 109, 117, 109, 70, 114, 97, 99, 116, 105, 111, 110, 
+        68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 97, 120, 105, 109, 117, 109, 73, 110, 116, 101, 
+        103, 101, 114, 68, 105, 103, 105, 116, 115, 66, 0, 17, 109, 105, 110, 70, 114, 97, 99, 116, 
+        105, 111, 110, 68, 105, 103, 105, 116, 115, 66, 0, 16, 109, 105, 110, 73, 110, 116, 101, 103, 
+        101, 114, 68, 105, 103, 105, 116, 115, 73, 0, 21, 109, 105, 110, 105, 109, 117, 109, 70, 114, 
+        97, 99, 116, 105, 111, 110, 68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 105, 110, 105, 109, 
+        117, 109, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 116, 115, 90, 0, 16, 112, 97, 
+        114, 115, 101, 73, 110, 116, 101, 103, 101, 114, 79, 110, 108, 121, 73, 0, 21, 115, 101, 114, 
+        105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 97, 109, 120, 114, 
+        0, 16, 106, 97, 118, 97, 46, 116, 101, 120, 116, 46, 70, 111, 114, 109, 97, 116, -5, -40, 
+        -68, 18, -23, 15, 24, 67, 2, 0, 0, 120, 112, 1, 0, 127, 0, 0, 0, 0, 0, 0, 
+        1, 53, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 120, 0, 0, 
+        0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 100, 0, 32, 0, 0, 0, 0, 0, 0, 0, 
+        6, 0, 0, 0, 2, 0, 116, 0, 1, 45, 116, 0, 1, 37, 116, 0, 1, 45, 116, 0, 
+        1, 37, 116, 0, 0, 113, 0, 126, 0, 8, 116, 0, 0, 116, 0, 1, 37, 112, 115, 114, 
+        0, 37, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 116, 101, 120, 116, 46, 68, 
+        101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 111, 108, 115, 80, 
+        29, 23, -103, 8, 104, -109, -100, 2, 0, 18, 67, 0, 16, 100, 101, 99, 105, 109, 97, 108, 
+        83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 5, 100, 105, 103, 105, 116, 67, 0, 11, 
+        101, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 67, 0, 17, 103, 114, 111, 117, 112, 105, 
+        110, 103, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 9, 109, 105, 110, 117, 115, 83, 
+        105, 103, 110, 67, 0, 17, 109, 111, 110, 101, 116, 97, 114, 121, 83, 101, 112, 97, 114, 97, 
+        116, 111, 114, 67, 0, 9, 112, 97, 100, 69, 115, 99, 97, 112, 101, 67, 0, 16, 112, 97, 
+        116, 116, 101, 114, 110, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 7, 112, 101, 114, 
+        77, 105, 108, 108, 67, 0, 7, 112, 101, 114, 99, 101, 110, 116, 67, 0, 8, 112, 108, 117, 
+        115, 83, 105, 103, 110, 73, 0, 21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 
+        110, 79, 110, 83, 116, 114, 101, 97, 109, 67, 0, 9, 122, 101, 114, 111, 68, 105, 103, 105, 
+        116, 76, 0, 3, 78, 97, 78, 113, 0, 126, 0, 1, 76, 0, 14, 99, 117, 114, 114, 101, 
+        110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 1, 76, 0, 17, 101, 120, 112, 
+        111, 110, 101, 110, 116, 83, 101, 112, 97, 114, 97, 116, 111, 114, 113, 0, 126, 0, 1, 76, 
+        0, 8, 105, 110, 102, 105, 110, 105, 116, 121, 113, 0, 126, 0, 1, 76, 0, 18, 105, 110, 
+        116, 108, 67, 117, 114, 114, 101, 110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 
+        1, 120, 112, 0, 46, 0, 35, 0, 0, 0, 44, 0, 45, 0, 46, 0, 42, 0, 59, 32, 
+        48, 0, 37, 0, 43, 0, 0, 0, 2, 0, 48, 116, 0, 3, -17, -65, -67, 116, 0, 1, 
+        36, 116, 0, 1, 69, 116, 0, 3, -30, -120, -98, 116, 0, 3, 85, 83, 68, 
+    };
+
+    //NumberFormat.getScientificInstance(Locale.US)
+    static byte[] scientificInstance = new byte[]{ 
+        -84, -19, 0, 5, 115, 114, 0, 30, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 11, -1, 
+        3, 98, -40, 114, 48, 58, 2, 0, 22, 90, 0, 27, 100, 101, 99, 105, 109, 97, 108, 83, 
+        101, 112, 97, 114, 97, 116, 111, 114, 65, 108, 119, 97, 121, 115, 83, 104, 111, 119, 110, 90, 
+        0, 23, 101, 120, 112, 111, 110, 101, 110, 116, 83, 105, 103, 110, 65, 108, 119, 97, 121, 115, 
+        83, 104, 111, 119, 110, 73, 0, 11, 102, 111, 114, 109, 97, 116, 87, 105, 100, 116, 104, 66, 
+        0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 83, 105, 122, 101, 66, 0, 13, 103, 114, 111, 
+        117, 112, 105, 110, 103, 83, 105, 122, 101, 50, 66, 0, 17, 109, 105, 110, 69, 120, 112, 111, 
+        110, 101, 110, 116, 68, 105, 103, 105, 116, 115, 73, 0, 10, 109, 117, 108, 116, 105, 112, 108, 
+        105, 101, 114, 67, 0, 3, 112, 97, 100, 73, 0, 11, 112, 97, 100, 80, 111, 115, 105, 116, 
+        105, 111, 110, 73, 0, 12, 114, 111, 117, 110, 100, 105, 110, 103, 77, 111, 100, 101, 73, 0, 
+        21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 
+        97, 109, 90, 0, 22, 117, 115, 101, 69, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 78, 
+        111, 116, 97, 116, 105, 111, 110, 76, 0, 16, 110, 101, 103, 80, 114, 101, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 116, 0, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 
+        83, 116, 114, 105, 110, 103, 59, 76, 0, 16, 110, 101, 103, 83, 117, 102, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 116, 105, 
+        118, 101, 80, 114, 101, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 
+        116, 105, 118, 101, 83, 117, 102, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 16, 112, 111, 
+        115, 80, 114, 101, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 
+        0, 16, 112, 111, 115, 83, 117, 102, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 
+        126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 80, 114, 101, 102, 105, 120, 
+        113, 0, 126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 83, 117, 102, 102, 
+        105, 120, 113, 0, 126, 0, 1, 76, 0, 17, 114, 111, 117, 110, 100, 105, 110, 103, 73, 110, 
+        99, 114, 101, 109, 101, 110, 116, 116, 0, 22, 76, 106, 97, 118, 97, 47, 109, 97, 116, 104, 
+        47, 66, 105, 103, 68, 101, 99, 105, 109, 97, 108, 59, 76, 0, 7, 115, 121, 109, 98, 111, 
+        108, 115, 116, 0, 39, 76, 99, 111, 109, 47, 105, 98, 109, 47, 105, 99, 117, 47, 116, 101, 
+        120, 116, 47, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 
+        111, 108, 115, 59, 120, 114, 0, 29, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 78, 117, 109, 98, 101, 114, 70, 111, 114, 109, 97, 116, -33, -10, -77, 
+        -65, 19, 125, 7, -24, 3, 0, 11, 90, 0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 85, 
+        115, 101, 100, 66, 0, 17, 109, 97, 120, 70, 114, 97, 99, 116, 105, 111, 110, 68, 105, 103, 
+        105, 116, 115, 66, 0, 16, 109, 97, 120, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 
+        116, 115, 73, 0, 21, 109, 97, 120, 105, 109, 117, 109, 70, 114, 97, 99, 116, 105, 111, 110, 
+        68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 97, 120, 105, 109, 117, 109, 73, 110, 116, 101, 
+        103, 101, 114, 68, 105, 103, 105, 116, 115, 66, 0, 17, 109, 105, 110, 70, 114, 97, 99, 116, 
+        105, 111, 110, 68, 105, 103, 105, 116, 115, 66, 0, 16, 109, 105, 110, 73, 110, 116, 101, 103, 
+        101, 114, 68, 105, 103, 105, 116, 115, 73, 0, 21, 109, 105, 110, 105, 109, 117, 109, 70, 114, 
+        97, 99, 116, 105, 111, 110, 68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 105, 110, 105, 109, 
+        117, 109, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 116, 115, 90, 0, 16, 112, 97, 
+        114, 115, 101, 73, 110, 116, 101, 103, 101, 114, 79, 110, 108, 121, 73, 0, 21, 115, 101, 114, 
+        105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 97, 109, 120, 114, 
+        0, 16, 106, 97, 118, 97, 46, 116, 101, 120, 116, 46, 70, 111, 114, 109, 97, 116, -5, -40, 
+        -68, 18, -23, 15, 24, 67, 2, 0, 0, 120, 112, 0, 0, 1, 0, 0, 0, 0, 0, 0, 
+        0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 120, 0, 0, 
+        0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 0, 0, 
+        6, 0, 0, 0, 2, 1, 116, 0, 1, 45, 116, 0, 0, 116, 0, 1, 45, 116, 0, 0, 
+        116, 0, 0, 113, 0, 126, 0, 8, 116, 0, 0, 116, 0, 0, 112, 115, 114, 0, 37, 99, 
+        111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 116, 101, 120, 116, 46, 68, 101, 99, 105, 
+        109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 111, 108, 115, 80, 29, 23, -103, 
+        8, 104, -109, -100, 2, 0, 18, 67, 0, 16, 100, 101, 99, 105, 109, 97, 108, 83, 101, 112, 
+        97, 114, 97, 116, 111, 114, 67, 0, 5, 100, 105, 103, 105, 116, 67, 0, 11, 101, 120, 112, 
+        111, 110, 101, 110, 116, 105, 97, 108, 67, 0, 17, 103, 114, 111, 117, 112, 105, 110, 103, 83, 
+        101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 9, 109, 105, 110, 117, 115, 83, 105, 103, 110, 
+        67, 0, 17, 109, 111, 110, 101, 116, 97, 114, 121, 83, 101, 112, 97, 114, 97, 116, 111, 114, 
+        67, 0, 9, 112, 97, 100, 69, 115, 99, 97, 112, 101, 67, 0, 16, 112, 97, 116, 116, 101, 
+        114, 110, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 7, 112, 101, 114, 77, 105, 108, 
+        108, 67, 0, 7, 112, 101, 114, 99, 101, 110, 116, 67, 0, 8, 112, 108, 117, 115, 83, 105, 
+        103, 110, 73, 0, 21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 
+        83, 116, 114, 101, 97, 109, 67, 0, 9, 122, 101, 114, 111, 68, 105, 103, 105, 116, 76, 0, 
+        3, 78, 97, 78, 113, 0, 126, 0, 1, 76, 0, 14, 99, 117, 114, 114, 101, 110, 99, 121, 
+        83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 1, 76, 0, 17, 101, 120, 112, 111, 110, 101, 
+        110, 116, 83, 101, 112, 97, 114, 97, 116, 111, 114, 113, 0, 126, 0, 1, 76, 0, 8, 105, 
+        110, 102, 105, 110, 105, 116, 121, 113, 0, 126, 0, 1, 76, 0, 18, 105, 110, 116, 108, 67, 
+        117, 114, 114, 101, 110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 1, 120, 112, 
+        0, 46, 0, 35, 0, 0, 0, 44, 0, 45, 0, 46, 0, 42, 0, 59, 32, 48, 0, 37, 
+        0, 43, 0, 0, 0, 2, 0, 48, 116, 0, 3, -17, -65, -67, 116, 0, 1, 36, 116, 0, 
+        1, 69, 116, 0, 3, -30, -120, -98, 116, 0, 3, 85, 83, 68, 
+    };
+
+    final static byte[][] content = {generalInstance, currencyInstance, percentInstance, scientificInstance};
+}
diff --git a/src/com/ibm/icu/dev/test/format/NumberFormatTest.java b/src/com/ibm/icu/dev/test/format/NumberFormatTest.java
new file mode 100755
index 0000000..834b96b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatTest.java
@@ -0,0 +1,785 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/NumberFormatTest.java,v $ 
+ * $Date: 2002/07/31 19:37:06 $ 
+ * $Revision: 1.6 $
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : NumberFormatTest
+ * Source File: $ICU4CRoot/source/test/intltest/numfmtst.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Locale;
+import java.text.ParsePosition;
+import java.text.ParseException;
+import java.text.FieldPosition;
+
+public class NumberFormatTest extends com.ibm.icu.dev.test.TestFmwk {
+    private static final char EURO = '\u20ac';
+
+    public static void main(String[] args) throws Exception {
+        new NumberFormatTest().run(args);
+    }
+    
+    // Test various patterns
+    public void TestPatterns() {
+    
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        final String pat[]    = { "#.#", "#.", ".#", "#" };
+        int pat_length = pat.length;
+        final String newpat[] = { "#0.#", "#0.", "#.0", "#" };
+        final String num[]    = { "0",   "0.", ".0", "0" };
+        for (int i=0; i<pat_length; ++i)
+        {
+            DecimalFormat fmt = new DecimalFormat(pat[i], sym);
+            String newp = fmt.toPattern();
+            if (!newp.equals(newpat[i]))
+                errln("FAIL: Pattern " + pat[i] + " should transmute to " + newpat[i] +
+                      "; " + newp + " seen instead");
+    
+            String s = ((NumberFormat)fmt).format(0);
+            if (!s.equals(num[i]))
+            {
+                errln("FAIL: Pattern " + pat[i] + " should format zero as " + num[i] +
+                      "; " + s + " seen instead");
+                logln("Min integer digits = " + fmt.getMinimumIntegerDigits());
+            }
+        }
+    }
+    
+    // Test exponential pattern
+    public void TestExponential() {
+    
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        final String pat[] = { "0.####E0", "00.000E00", "##0.######E000", "0.###E0;[0.###E0]" };
+        int pat_length = pat.length;
+    
+        double val[] = { 0.01234, 123456789, 1.23e300, -3.141592653e-271 };
+        int val_length = val.length;
+        final String valFormat[] = {
+            // 0.####E0
+            "1.234E-2", "1.2346E8", "1.23E300", "-3.1416E-271",
+            // 00.000E00
+            "12.340E-03", "12.346E07", "12.300E299", "-31.416E-272",
+            // ##0.######E000
+            "12.34E-003", "123.4568E006", "1.23E300", "-314.1593E-273",
+            // 0.###E0;[0.###E0]
+            "1.234E-2", "1.235E8", "1.23E300", "[3.142E-271]" };
+        /*double valParse[] =
+            {
+                0.01234, 123460000, 1.23E300, -3.1416E-271,
+                0.01234, 123460000, 1.23E300, -3.1416E-271,
+                0.01234, 123456800, 1.23E300, -3.141593E-271,
+                0.01234, 123500000, 1.23E300, -3.142E-271,
+            };*/ //The variable is never used
+    
+        int lval[] = { 0, -1, 1, 123456789 };
+        int lval_length = lval.length;
+        final String lvalFormat[] = {
+            // 0.####E0
+            "0E0", "-1E0", "1E0", "1.2346E8",
+            // 00.000E00
+            "00.000E00", "-10.000E-01", "10.000E-01", "12.346E07",
+            // ##0.######E000
+            "0E000", "-1E000", "1E000", "123.4568E006",
+            // 0.###E0;[0.###E0]
+            "0E0", "[1E0]", "1E0", "1.235E8" };
+        int lvalParse[] = 
+            {
+                0, -1, 1, 123460000, 
+                0, -1, 1, 123460000, 
+                0, -1, 1, 123456800, 
+                0, -1, 1, 123500000, 
+            };
+        int ival = 0, ilval = 0;
+        for (int p = 0; p < pat_length; ++p) {
+            DecimalFormat fmt = new DecimalFormat(pat[p], sym);
+            logln("Pattern \"" + pat[p] + "\" -toPattern-> \"" + fmt.toPattern() + "\"");
+            int v;
+            for (v = 0; v < val_length; ++v) {
+                String s;
+                s = ((NumberFormat) fmt).format(val[v]);
+                logln(" " + val[v] + " -format-> " + s);
+                if (!s.equals(valFormat[v + ival]))
+                    errln("FAIL: Expected " + valFormat[v + ival]);
+    
+                ParsePosition pos = new ParsePosition(0);
+                double a = fmt.parse(s, pos).doubleValue();
+                if (pos.getIndex() == s.length()) {
+                    logln("  -parse-> " + Double.toString(a));
+                    // Use epsilon comparison as necessary
+                } else
+                    errln("FAIL: Partial parse (" + pos.getIndex() + " chars) -> " + a);
+            }
+            for (v = 0; v < lval_length; ++v) {
+                String s;
+                s = ((NumberFormat) fmt).format(lval[v]);
+                logln(" " + lval[v] + "L -format-> " + s);
+                if (!s.equals(lvalFormat[v + ilval]))
+                    errln("ERROR: Expected " + lvalFormat[v + ilval] + " Got: " + s);
+    
+                ParsePosition pos = new ParsePosition(0);
+                long a = 0;
+                Number A = fmt.parse(s, pos);
+                if (A != null) {
+                    a = A.longValue();
+                    if (pos.getIndex() == s.length()) {
+                        logln("  -parse-> " + a);
+                        if (a != lvalParse[v + ilval])
+                            errln("FAIL: Expected " + lvalParse[v + ilval]);
+                    } else
+                        errln("FAIL: Partial parse (" + pos.getIndex() + " chars) -> " + Long.toString(a));
+                } else {
+                    errln("Fail to parse the string: " + s);
+                }
+            }
+            ival += val_length;
+            ilval += lval_length;
+        }
+    }
+
+    // Test the handling of quotes
+    public void TestQuotes() {
+    
+        StringBuffer pat;
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        pat = new StringBuffer("a'fo''o'b#");
+        DecimalFormat fmt = new DecimalFormat(pat.toString(), sym);
+        String s = ((NumberFormat)fmt).format(123);
+        logln("Pattern \"" + pat + "\"");
+        logln(" Format 123 . " + s);
+        if (!s.equals("afo'ob123")) 
+            errln("FAIL: Expected afo'ob123");
+        
+        s ="";
+        pat = new StringBuffer("a''b#");
+        fmt = new DecimalFormat(pat.toString(), sym);
+        s = ((NumberFormat)fmt).format(123);
+        logln("Pattern \"" + pat + "\"");
+        logln(" Format 123 . " + s);
+        if (!s.equals("a'b123")) 
+            errln("FAIL: Expected a'b123");
+    }
+    
+    /**
+     * Test the handling of the currency symbol in patterns.
+     **/
+    public void TestCurrencySign() {
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        StringBuffer pat = new StringBuffer("");
+        char currency = 0x00A4;
+        // "\xA4#,##0.00;-\xA4#,##0.00"
+        pat.append(currency).append("#,##0.00;-").append(currency).append("#,##0.00");
+        DecimalFormat fmt = new DecimalFormat(pat.toString(), sym);
+        String s = ((NumberFormat) fmt).format(1234.56);
+        pat = new StringBuffer("");
+        logln("Pattern \"" + fmt.toPattern() + "\"");
+        logln(" Format " + 1234.56 + " . " + s);
+        if (!s.equals("$1,234.56"))
+            errln("FAIL: Expected $1,234.56");
+        s = "";
+        s = ((NumberFormat) fmt).format(-1234.56);
+        logln(" Format " + Double.toString(-1234.56) + " . " + s);
+        if (!s.equals("-$1,234.56"))
+            errln("FAIL: Expected -$1,234.56");
+    
+        pat = new StringBuffer("");
+        // "\xA4\xA4 #,##0.00;\xA4\xA4 -#,##0.00"
+        pat.append(currency).append(currency).append(" #,##0.00;").append(currency).append(currency).append(" -#,##0.00"); 
+        fmt = new DecimalFormat(pat.toString(), sym);
+        s = "";
+        s = ((NumberFormat) fmt).format(1234.56);
+        logln("Pattern \"" + fmt.toPattern() + "\"");
+        logln(" Format " + Double.toString(1234.56) + " . " + s);
+    
+        if (!s.equals("USD 1,234.56"))
+            errln("FAIL: Expected USD 1,234.56");
+        s = "";
+        s = ((NumberFormat) fmt).format(-1234.56);
+        logln(" Format " + Double.toString(-1234.56) + " . " + s);
+        if (!s.equals("USD -1,234.56"))
+            errln("FAIL: Expected USD -1,234.56");
+    
+    }
+    
+    /**
+     * Test localized currency patterns.
+     */
+    public void TestCurrency() {
+        NumberFormat currencyFmt = 
+            NumberFormat.getCurrencyInstance(Locale.CANADA_FRENCH);
+    
+        String s;
+        s = currencyFmt.format(1.50);
+        logln("Un pauvre ici a..........." + s);
+            
+        if (!s.equals("1,50 $"))
+            errln("FAIL: Expected 1,50 $, got " + s);
+        s = "";
+        currencyFmt = NumberFormat.getCurrencyInstance(Locale.GERMANY);
+        s = currencyFmt.format(1.50);
+        logln("Un pauvre en Allemagne a.." + s);
+        if (!s.equals("1,50 " + EURO))
+            errln("FAIL: Expected 1,50 DM, got " + s);
+        s = "";
+        currencyFmt = NumberFormat.getCurrencyInstance(Locale.FRANCE);
+        s = currencyFmt.format(1.50);
+        logln("Un pauvre en France a....." + s);
+        if (!s.equals("1,50 " + EURO))
+            errln("FAIL: Expected 1,50 F, got " + s);
+    
+    }
+
+    /**
+     * Test the Currency object handling, new as of ICU 2.2.
+     */
+    public void TestCurrencyObject() {
+        NumberFormat fmt = 
+            NumberFormat.getCurrencyInstance(Locale.US);
+        
+        expectCurrency(fmt, null, 1234.56, "$1,234.56");
+
+        expectCurrency(fmt, Currency.getInstance(Locale.FRANCE),
+                       1234.56, "\u20AC1,234.56"); // Euro
+
+        expectCurrency(fmt, Currency.getInstance(Locale.JAPAN),
+                       1234.56, "\uFFE51,235"); // Yen
+
+        expectCurrency(fmt, Currency.getInstance(new Locale("fr", "CH", "")),
+                       1234.56, "CHF1,234.50"); // 0.25 rounding
+
+        expectCurrency(fmt, Currency.getInstance(Locale.US),
+                       1234.56, "$1,234.56");
+
+        fmt = NumberFormat.getCurrencyInstance(Locale.FRANCE);
+        
+        expectCurrency(fmt, null, 1234.56, "1 234,56 \u20AC");
+
+        expectCurrency(fmt, Currency.getInstance(Locale.JAPAN),
+                       1234.56, "1 235 \uFFE5"); // Yen
+
+        expectCurrency(fmt, Currency.getInstance(new Locale("fr", "CH", "")),
+                       1234.56, "1 234,50 CHF"); // 0.25 rounding
+
+        expectCurrency(fmt, Currency.getInstance(Locale.US),
+                       1234.56, "1 234,56 USD");
+
+        expectCurrency(fmt, Currency.getInstance(Locale.FRANCE),
+                       1234.56, "1 234,56 \u20AC"); // Euro
+    }
+    
+    private void expectCurrency(NumberFormat nf, Currency curr,
+                                double value, String string) {
+        DecimalFormat fmt = (DecimalFormat) nf;
+        if (curr != null) {
+            fmt.setCurrency(curr);
+        }
+        String s = fmt.format(value).replace('\u00A0', ' ');
+
+        if (s.equals(string)) {
+            logln("Ok: " + value + " x " + curr + " => " + s);
+        } else {
+            errln("FAIL: " + value + " x " + curr + " => " + s +
+                  ", expected " + string);
+        }
+    }
+
+    public void TestCurrencyPatterns() {
+        int i;
+        Locale[] locs = NumberFormat.getAvailableLocales();
+        for (i=0; i<locs.length; ++i) {
+            NumberFormat nf = NumberFormat.getCurrencyInstance(locs[i]);
+            // Make sure currency formats do not have a variable number
+            // of fraction digits
+            int min = nf.getMinimumFractionDigits();
+            int max = nf.getMaximumFractionDigits();
+            if (min != max) {
+                String a = nf.format(1.0);
+                String b = nf.format(1.125);
+                errln("FAIL: " + locs[i] +
+                      " min fraction digits != max fraction digits; "+
+                      "x 1.0 => " + a +
+                      "; x 1.125 => " + b);
+            }
+                
+            // Make sure EURO currency formats have exactly 2 fraction digits
+            if (nf instanceof DecimalFormat) {
+                DecimalFormat df = (DecimalFormat) nf;
+                if ("EUR".equals(df.getCurrency().getCurrencyCode())) {
+                    if (min != 2 || max != 2) {
+                        String a = nf.format(1.0);
+                        errln("FAIL: " + locs[i] +
+                              " is a EURO format but it does not have 2 fraction digits; "+
+                              "x 1.0 => " +
+                              a);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Do rudimentary testing of parsing.
+     */
+    public void TestParse() {
+        String arg = "0.0";
+        DecimalFormat format = new DecimalFormat("00");
+        double aNumber = 0l;
+        try {
+            aNumber = format.parse(arg).doubleValue();
+        } catch (java.text.ParseException e) {
+            System.out.println(e);
+        }
+        logln("parse(" + arg + ") = " + aNumber);
+    }
+    
+    /**
+     * Test proper rounding by the format method.
+     */
+    public void TestRounding487() {
+    
+        NumberFormat nf = NumberFormat.getInstance();
+        roundingTest(nf, 0.00159999, 4, "0.0016");
+        roundingTest(nf, 0.00995, 4, "0.01");
+    
+        roundingTest(nf, 12.3995, 3, "12.4");
+    
+        roundingTest(nf, 12.4999, 0, "12");
+        roundingTest(nf, - 19.5, 0, "-20");
+    
+    }
+    
+    /**
+     * Test the functioning of the secondary grouping value.
+     */
+    public void TestSecondaryGrouping() {
+    
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat f = new DecimalFormat("#,##,###", US);
+    
+        expect(f, 123456789L, "12,34,56,789");
+        expectPat(f, "#,##,###");
+        f.applyPattern("#,###");
+    
+        f.setSecondaryGroupingSize(4);
+        expect(f, 123456789L, "12,3456,789");
+        expectPat(f, "#,####,###");
+        NumberFormat g = NumberFormat.getInstance(new Locale("hi", "IN"));
+    
+        String out = "";
+        long l = 1876543210L;
+        out = g.format(l);
+    
+        // expect "1,87,65,43,210", but with Hindi digits
+        //         01234567890123
+        boolean ok = true;
+        if (out.length() != 14) {
+            ok = false;
+        } else {
+            for (int i = 0; i < out.length(); ++i) {
+                boolean expectGroup = false;
+                switch (i) {
+                    case 1 :
+                    case 4 :
+                    case 7 :
+                    case 10 :
+                        expectGroup = true;
+                        break;
+                }
+                // Later -- fix this to get the actual grouping
+                // character from the resource bundle.
+                boolean isGroup = (out.charAt(i) == 0x002C);
+                if (isGroup != expectGroup) {
+                    ok = false;
+                    break;
+                }
+            }
+        }
+        if (!ok) {
+            errln("FAIL  Expected "+ l + " x hi_IN . \"1,87,65,43,210\" (with Hindi digits), got \""
+                    + out + "\""); 
+        } else {
+            logln("Ok    " + l + " x hi_IN . \"" + out + "\"");
+        }
+    }
+    
+    public void roundingTest(NumberFormat nf, double x, int maxFractionDigits, final String expected) {
+        nf.setMaximumFractionDigits(maxFractionDigits);
+        String out = nf.format(x);
+        logln(x + " formats with " + maxFractionDigits + " fractional digits to " + out); 
+        if (!out.equals(expected))
+            errln("FAIL: Expected " + expected);
+    }
+    
+    /**
+     * Upgrade to alphaWorks
+     */
+    public void expect(NumberFormat fmt, String str, int n) {
+        Long num = new Long(0);
+        try {
+        num = (Long)fmt.parse(str);
+        } catch (java.text.ParseException e) {
+            logln(e.getMessage());
+        }
+        String pat = ((DecimalFormat)fmt).toPattern();
+        if (num.longValue() == n) {
+            logln("Ok   \"" + str + "\" x " +
+                  pat + " = " +
+                  num.toString());
+        } else {
+            errln("FAIL \"" + str + "\" x " +
+                  pat + " = " +
+                  num.toString() + ", expected " + n + "L");
+        }
+    }
+    
+    /**
+     * Upgrade to alphaWorks
+     */        
+    public void expect(NumberFormat fmt, final double n, final String exp) {
+        StringBuffer saw = new StringBuffer("");
+        FieldPosition pos = new FieldPosition(0); 
+        saw = fmt.format(n, saw, pos);
+        String pat = ((DecimalFormat)fmt).toPattern();
+        if (saw.toString().equals(exp)) {
+            logln("Ok   " + Double.toString(n) + " x " +
+                  pat + " = \"" +
+                  saw + "\"");
+        } else {
+            errln("FAIL " + Double.toString(n) + " x " +
+                  pat + " = \"" +
+                  saw + "\", expected \"" + exp + "\"");
+        }    
+    }
+    
+    /**
+     * Upgrade to alphaWorks
+     */
+    public void TestExponent() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt1 = new DecimalFormat("0.###E0", US);
+        DecimalFormat fmt2 = new DecimalFormat("0.###E+0", US);
+        int n = 1234;
+        expect(fmt1, n, "1.234E3");
+        expect(fmt2, n, "1.234E+3");
+        expect(fmt1, "1.234E3", n);
+        expect(fmt1, "1.234E+3", n); // Either format should parse "E+3"
+        expect(fmt2, "1.234E+3", n);
+    }
+    
+    /**
+     * Upgrade to alphaWorks
+     */
+    public void TestScientific() {
+    
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+    
+        // Test pattern round-trip
+        final String PAT[] = { "#E0", "0.####E0", "00.000E00", "##0.####E000", "0.###E0;[0.###E0]" };
+        int PAT_length = PAT.length;
+        int DIGITS[] = {
+            // min int, max int, min frac, max frac
+            0, 1, 0, 0, // "#E0"
+            1, 1, 0, 4, // "0.####E0"
+            2, 2, 3, 3, // "00.000E00"
+            1, 3, 0, 4, // "##0.####E000"
+            1, 1, 0, 3, // "0.###E0;[0.###E0]"
+        };
+        for (int i = 0; i < PAT_length; ++i) {
+            String pat = PAT[i];
+            DecimalFormat df = new DecimalFormat(pat, US);
+            String pat2 = df.toPattern();
+            if (pat.equals(pat2)) {
+                logln("Ok   Pattern rt \"" + pat + "\" . \"" + pat2 + "\"");
+            } else {
+                errln("FAIL Pattern rt \"" + pat + "\" . \"" + pat2 + "\"");
+            }
+            // Make sure digit counts match what we expect
+            if (df.getMinimumIntegerDigits() != DIGITS[4 * i]
+                || df.getMaximumIntegerDigits() != DIGITS[4 * i + 1]
+                || df.getMinimumFractionDigits() != DIGITS[4 * i + 2]
+                || df.getMaximumFractionDigits() != DIGITS[4 * i + 3]) {
+                errln("FAIL \""+ pat+ "\" min/max int; min/max frac = "
+                        + df.getMinimumIntegerDigits() + "/"
+                        + df.getMaximumIntegerDigits() + ";"
+                        + df.getMinimumFractionDigits() + "/"
+                        + df.getMaximumFractionDigits() + ", expect "
+                        + DIGITS[4 * i] + "/"
+                        + DIGITS[4 * i + 1] + ";" 
+                        + DIGITS[4 * i + 2] + "/"
+                        + DIGITS[4 * i + 3]); 
+            }
+        }
+    
+        expect(new DecimalFormat("#E0", US), 12345.0, "1.2345E4");
+        expect(new DecimalFormat("0E0", US), 12345.0, "1E4");
+    
+        // pattern of NumberFormat.getScientificInstance(Locale.US) = "0.######E0" not "#E0"
+        // so result = 1.234568E4 not 1.2345678901E4
+        //when the pattern problem is finalized, delete comment mark'//' 
+        //of the following code
+        expect(NumberFormat.getScientificInstance(Locale.US), 12345.678901, "1.2345678901E4");
+    
+        expect(new DecimalFormat("##0.###E0", US), 12345.0, "12.34E3");
+        expect(new DecimalFormat("##0.###E0", US), 12345.00001, "12.35E3");
+        expect(new DecimalFormat("##0.####E0", US), 12345, "12.345E3");
+    
+        // pattern of NumberFormat.getScientificInstance(Locale.US) = "0.######E0" not "#E0"
+        // so result = 1.234568E4 not 1.2345678901E4
+        expect(NumberFormat.getScientificInstance(Locale.FRANCE), 12345.678901, "1,2345678901E4");
+    
+        expect(new DecimalFormat("##0.####E0", US), 789.12345e-9, "789.12E-9");
+        expect(new DecimalFormat("##0.####E0", US), 780.e-9, "780E-9");
+        expect(new DecimalFormat(".###E0", US), 45678.0, ".457E5");
+        expect(new DecimalFormat(".###E0", US), 0, ".0E0");
+        /*
+        expect(new DecimalFormat[] { new DecimalFormat("#E0", US),
+                                     new DecimalFormat("##E0", US),
+                                     new DecimalFormat("####E0", US),
+                                     new DecimalFormat("0E0", US),    
+                                     new DecimalFormat("00E0", US),   
+                                     new DecimalFormat("000E0", US), 
+                                   },
+               new Long(45678000),
+               new String[] { "4.5678E7",
+                              "45.678E6",
+                              "4567.8E4",
+                              "5E7",
+                              "46E6",  
+                              "457E5",
+                            }
+               );
+        !
+        ! Unroll this test into individual tests below...
+        !
+        */
+        expect(new DecimalFormat("#E0", US), 45678000, "4.5678E7");
+        expect(new DecimalFormat("##E0", US), 45678000, "45.678E6");
+        expect(new DecimalFormat("####E0", US), 45678000, "4567.8E4");
+        expect(new DecimalFormat("0E0", US), 45678000, "5E7");
+        expect(new DecimalFormat("00E0", US), 45678000, "46E6");
+        expect(new DecimalFormat("000E0", US), 45678000, "457E5");
+        /*
+        expect(new DecimalFormat("###E0", US, status),
+               new Object[] { new Double(0.0000123), "12.3E-6",
+                              new Double(0.000123), "123E-6",
+                              new Double(0.00123), "1.23E-3",
+                              new Double(0.0123), "12.3E-3",
+                              new Double(0.123), "123E-3",
+                              new Double(1.23), "1.23E0",
+                              new Double(12.3), "12.3E0",
+                              new Double(123), "123E0",
+                              new Double(1230), "1.23E3",
+                             });
+        !
+        ! Unroll this test into individual tests below...
+        !
+        */
+        expect(new DecimalFormat("###E0", US), 0.0000123, "12.3E-6");
+        expect(new DecimalFormat("###E0", US), 0.000123, "123E-6");
+        expect(new DecimalFormat("###E0", US), 0.00123, "1.23E-3");
+        expect(new DecimalFormat("###E0", US), 0.0123, "12.3E-3");
+        expect(new DecimalFormat("###E0", US), 0.123, "123E-3");
+        expect(new DecimalFormat("###E0", US), 1.23, "1.23E0");
+        expect(new DecimalFormat("###E0", US), 12.3, "12.3E0");
+        expect(new DecimalFormat("###E0", US), 123.0, "123E0");
+        expect(new DecimalFormat("###E0", US), 1230.0, "1.23E3");
+        /*
+        expect(new DecimalFormat("0.#E+00", US, status),
+               new Object[] { new Double(0.00012), "1.2E-04",
+                              new Long(12000),     "1.2E+04",
+                             });
+        !
+        ! Unroll this test into individual tests below...
+        !
+        */
+        expect(new DecimalFormat("0.#E+00", US), 0.00012, "1.2E-04");
+        expect(new DecimalFormat("0.#E+00", US), 12000, "1.2E+04");
+    }
+    
+    /**
+     * Upgrade to alphaWorks
+     */
+    public void TestPad() {
+    
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        expect(new DecimalFormat("*^##.##", US), 0, "^^^^0");
+        expect(new DecimalFormat("*^##.##", US), -1.3, "^-1.3");
+        expect(
+            new DecimalFormat("##0.0####E0*_ g-m/s^2", US), 
+            0, 
+            "0.0E0______ g-m/s^2"); 
+        expect(
+            new DecimalFormat("##0.0####E0*_ g-m/s^2", US), 
+            1.0 / 3, 
+            "333.333E-3_ g-m/s^2"); 
+        expect(new DecimalFormat("##0.0####*_ g-m/s^2", US), 0, "0.0______ g-m/s^2");
+        expect(
+            new DecimalFormat("##0.0####*_ g-m/s^2", US), 
+            1.0 / 3, 
+            "0.33333__ g-m/s^2"); 
+    
+        // Test padding before a sign
+        final String formatStr = "*x#,###,###,##0.0#;*x(###,###,##0.0#)";
+        expect(new DecimalFormat(formatStr, US), -10, "xxxxxxxxxx(10.0)");
+        expect(new DecimalFormat(formatStr, US), -1000, "xxxxxxx(1,000.0)");
+        expect(new DecimalFormat(formatStr, US), -1000000, "xxx(1,000,000.0)");
+        expect(new DecimalFormat(formatStr, US), -100.37, "xxxxxxxx(100.37)");
+        expect(new DecimalFormat(formatStr, US), -10456.37, "xxxxx(10,456.37)");
+        expect(new DecimalFormat(formatStr, US), -1120456.37, "xx(1,120,456.37)");
+        expect(new DecimalFormat(formatStr, US), -112045600.37, "(112,045,600.37)");
+        expect(new DecimalFormat(formatStr, US), -1252045600.37, "(1,252,045,600.37)");
+    
+        expect(new DecimalFormat(formatStr, US), 10, "xxxxxxxxxxxx10.0");
+        expect(new DecimalFormat(formatStr, US), 1000, "xxxxxxxxx1,000.0");
+        expect(new DecimalFormat(formatStr, US), 1000000, "xxxxx1,000,000.0");
+        expect(new DecimalFormat(formatStr, US), 100.37, "xxxxxxxxxx100.37");
+        expect(new DecimalFormat(formatStr, US), 10456.37, "xxxxxxx10,456.37");
+        expect(new DecimalFormat(formatStr, US), 1120456.37, "xxxx1,120,456.37");
+        expect(new DecimalFormat(formatStr, US), 112045600.37, "xx112,045,600.37");
+        expect(new DecimalFormat(formatStr, US), 10252045600.37, "10,252,045,600.37");
+    
+        // Test padding between a sign and a number
+        final String formatStr2 = "#,###,###,##0.0#*x;(###,###,##0.0#*x)";
+        expect(new DecimalFormat(formatStr2, US), -10, "(10.0xxxxxxxxxx)");
+        expect(new DecimalFormat(formatStr2, US), -1000, "(1,000.0xxxxxxx)");
+        expect(new DecimalFormat(formatStr2, US), -1000000, "(1,000,000.0xxx)");
+        expect(new DecimalFormat(formatStr2, US), -100.37, "(100.37xxxxxxxx)");
+        expect(new DecimalFormat(formatStr2, US), -10456.37, "(10,456.37xxxxx)");
+        expect(new DecimalFormat(formatStr2, US), -1120456.37, "(1,120,456.37xx)");
+        expect(new DecimalFormat(formatStr2, US), -112045600.37, "(112,045,600.37)");
+        expect(new DecimalFormat(formatStr2, US), -1252045600.37, "(1,252,045,600.37)"); 
+    
+        expect(new DecimalFormat(formatStr2, US), 10, "10.0xxxxxxxxxxxx");
+        expect(new DecimalFormat(formatStr2, US), 1000, "1,000.0xxxxxxxxx");
+        expect(new DecimalFormat(formatStr2, US), 1000000, "1,000,000.0xxxxx");
+        expect(new DecimalFormat(formatStr2, US), 100.37, "100.37xxxxxxxxxx");
+        expect(new DecimalFormat(formatStr2, US), 10456.37, "10,456.37xxxxxxx");
+        expect(new DecimalFormat(formatStr2, US), 1120456.37, "1,120,456.37xxxx");
+        expect(new DecimalFormat(formatStr2, US), 112045600.37, "112,045,600.37xx");
+        expect(new DecimalFormat(formatStr2, US), 10252045600.37, "10,252,045,600.37");
+    
+        //testing the setPadCharacter(UnicodeString) and getPadCharacterString()
+        DecimalFormat fmt = new DecimalFormat("#", US);
+        char padString = 'P';
+        fmt.setPadCharacter(padString);
+        expectPad(fmt, "*P##.##", DecimalFormat.PAD_BEFORE_PREFIX, 5, padString);
+        fmt.setPadCharacter('^');
+        expectPad(fmt, "*^#", DecimalFormat.PAD_BEFORE_PREFIX, 1, '^');
+        //commented untill implementation is complete
+        /*  fmt.setPadCharacter((UnicodeString)"^^^");
+          expectPad(fmt, "*^^^#", DecimalFormat.kPadBeforePrefix, 3, (UnicodeString)"^^^");
+          padString.remove();
+          padString.append((UChar)0x0061);
+          padString.append((UChar)0x0302);
+          fmt.setPadCharacter(padString);
+          UChar patternChars[]={0x002a, 0x0061, 0x0302, 0x0061, 0x0302, 0x0023, 0x0000};
+          UnicodeString pattern(patternChars);
+          expectPad(fmt, pattern , DecimalFormat.kPadBeforePrefix, 4, padString);
+          */
+    }
+    
+    /**
+     * Upgrade to alphaWorks
+     */
+    public void TestPatterns2() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt = new DecimalFormat("#", US);
+    
+        char hat = 0x005E; /*^*/
+    
+        expectPad(fmt, "*^#", DecimalFormat.PAD_BEFORE_PREFIX, 1, hat);
+        expectPad(fmt, "$*^#", DecimalFormat.PAD_AFTER_PREFIX, 2, hat);
+        expectPad(fmt, "#*^", DecimalFormat.PAD_BEFORE_SUFFIX, 1, hat);
+        expectPad(fmt, "#$*^", DecimalFormat.PAD_AFTER_SUFFIX, 2, hat);
+        expectPad(fmt, "$*^$#", -1);
+        expectPad(fmt, "#$*^$", -1);
+        expectPad(fmt, "'pre'#,##0*x'post'", DecimalFormat.PAD_BEFORE_SUFFIX, 12, (char) 0x0078 /*x*/); 
+        expectPad(fmt, "''#0*x", DecimalFormat.PAD_BEFORE_SUFFIX, 3, (char) 0x0078 /*x*/); 
+        expectPad(fmt, "'I''ll'*a###.##", DecimalFormat.PAD_AFTER_PREFIX, 10, (char) 0x0061 /*a*/); 
+    
+        fmt.applyPattern("AA#,##0.00ZZ");
+        fmt.setPadCharacter(hat);
+    
+        fmt.setFormatWidth(10);
+    
+        fmt.setPadPosition(DecimalFormat.PAD_BEFORE_PREFIX);
+        expectPat(fmt, "*^AA#,##0.00ZZ");
+    
+        fmt.setPadPosition(DecimalFormat.PAD_BEFORE_SUFFIX);
+        expectPat(fmt, "AA#,##0.00*^ZZ");
+    
+        fmt.setPadPosition(DecimalFormat.PAD_AFTER_SUFFIX);
+        expectPat(fmt, "AA#,##0.00ZZ*^");
+    
+        //            12  3456789012
+        String exp = "AA*^#,##0.00ZZ";
+        fmt.setFormatWidth(12);
+        fmt.setPadPosition(DecimalFormat.PAD_AFTER_PREFIX);
+        expectPat(fmt, exp);
+    
+        fmt.setFormatWidth(13);
+        //              12  34567890123
+        expectPat(fmt, "AA*^##,##0.00ZZ");
+    
+        fmt.setFormatWidth(14);
+        //              12  345678901234
+        expectPat(fmt, "AA*^###,##0.00ZZ");
+    
+        fmt.setFormatWidth(15);
+        //              12  3456789012345
+        expectPat(fmt, "AA*^####,##0.00ZZ"); // This is the interesting case
+    
+        fmt.setFormatWidth(16);
+        //              12  34567890123456
+        expectPat(fmt, "AA*^#,###,##0.00ZZ");
+    }
+    
+    public void expectPad(DecimalFormat fmt, String pat, int pos) {
+        expectPad(fmt, pat, pos, 0, (char)0);
+    }
+    
+    public void expectPad(DecimalFormat fmt, final String pat, int pos, int width, final char pad) {
+        int apos = 0, awidth = 0;
+        char apadStr;
+        try {
+            fmt.applyPattern(pat);
+            apos = fmt.getPadPosition();
+            awidth = fmt.getFormatWidth();
+            apadStr = fmt.getPadCharacter();
+        } catch (Exception e) {
+            apos = -1;
+            awidth = width;
+            apadStr = pad;
+        }
+    
+        if (apos == pos && awidth == width && apadStr == pad) {
+            logln("Ok   \"" + pat + "\" pos="
+                    + apos + ((pos == -1) ? "" : " width=" + awidth + " pad=" + apadStr)); 
+        } else {
+            errln("FAIL \"" + pat + "\" pos=" + apos + " width="
+                    + awidth + " pad=" + apadStr + ", expected "
+                    + pos + " " + width + " " + pad); 
+        }
+    }
+
+    public void expectPat(DecimalFormat fmt, final String exp) {
+        String pat = fmt.toPattern();
+        if (pat.equals(exp)) {
+            logln("Ok   \"" + pat + "\"");
+        } else {
+            errln("FAIL \"" + pat + "\", expected \"" + exp + "\"");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/NumberRegression.java b/src/com/ibm/icu/dev/test/format/NumberRegression.java
new file mode 100755
index 0000000..9279f82
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberRegression.java
@@ -0,0 +1,1776 @@
+/*****************************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/NumberRegression.java,v $ 
+ * $Date: 2002/10/09 19:20:40 $ 
+ * $Revision: 1.10.2.1 $
+ *
+ *****************************************************************************************
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.NumberRegression
+ * Source File: java/text/format/NumberRegression.java
+ **/
+ 
+/**
+ * @test 1.49 01/05/21
+ * @bug 4052223 4059870 4061302 4062486 4066646 4068693 4070798 4071005 4071014
+ * 4071492 4071859 4074454 4074620 4075713 4083018 4086575 4087244 4087245
+ * 4087251 4087535 4088161 4088503 4090489 4090504 4092480 4092561 4095713
+ * 4098741 4099404 4101481 4106658 4106662 4106664 4108738 4110936 4122840
+ * 4125885 4134034 4134300 4140009 4141750 4145457 4147295 4147706 4162198
+ * 4162852 4167494 4170798 4176114 4179818 4185761 4212072 4212073 4216742
+ * 4217661 4243011 4243108 4330377 4233840
+ * @summary Regression tests for NumberFormat and associated classes
+ */
+
+/***************************************************************************
+*
+*   Copyright (C) 1996-2002, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+************************************************************************/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+
+import java.io.*;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+public class NumberRegression extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new NumberRegression().run(args);
+    }
+
+	private static final char EURO = '\u20ac';
+
+    /**
+     * NumberFormat.equals comparing with null should always return false.
+     */
+    public void Test4075713(){
+
+        try {
+            MyNumberFormatTest tmp = new MyNumberFormatTest();
+            if (!tmp.equals(null))
+                logln("NumberFormat.equals passed");
+        } catch (NullPointerException e) {
+            errln("(new MyNumberFormatTest()).equals(null) throws unexpected exception");
+        }
+    }
+
+    /**
+     * NumberFormat.equals comparing two obj equal even the setGroupingUsed
+     * flag is different.
+     */
+    public void Test4074620() {
+
+        MyNumberFormatTest nf1 = new MyNumberFormatTest();
+        MyNumberFormatTest nf2 = new MyNumberFormatTest();
+
+        nf1.setGroupingUsed(false);
+        nf2.setGroupingUsed(true);
+
+        if (nf1.equals(nf2)) errln("Test for bug 4074620 failed");
+        else logln("Test for bug 4074620 passed.");
+        return;
+    }
+
+
+    /**
+     * DecimalFormat.format() incorrectly uses maxFractionDigits setting.
+     */
+
+    public void Test4088161 (){
+        DecimalFormat df = new DecimalFormat();
+        double d = 100;
+        df.setMinimumFractionDigits(0);
+        df.setMaximumFractionDigits(16);
+        StringBuffer sBuf1 = new StringBuffer("");
+        FieldPosition fp1 = new FieldPosition(0);
+        logln("d = " + d);
+        logln("maxFractionDigits = " + df.getMaximumFractionDigits());
+        logln(" format(d) = '" + df.format(d, sBuf1, fp1) + "'");
+        df.setMaximumFractionDigits(17);
+        StringBuffer sBuf2 = new StringBuffer("");
+        FieldPosition fp2 = new FieldPosition(0);
+        logln("maxFractionDigits = " + df.getMaximumFractionDigits());
+        df.format(d, sBuf2, fp2);
+        if (!sBuf2.toString().equals("100"))
+            errln(" format(d) = '" + sBuf2 + "'");
+    }
+    /**
+     * DecimalFormatSymbols should be cloned in the ctor DecimalFormat.
+     * DecimalFormat(String, DecimalFormatSymbols).
+     */
+    public void Test4087245 (){
+        DecimalFormatSymbols symbols = new DecimalFormatSymbols();
+        DecimalFormat df = new DecimalFormat("#,##0.0", symbols);
+        long n = 123;
+        StringBuffer buf1 = new StringBuffer();
+        StringBuffer buf2 = new StringBuffer();
+        logln("format(" + n + ") = " +
+        df.format(n, buf1, new FieldPosition(0)));
+        symbols.setDecimalSeparator('p'); // change value of field
+        logln("format(" + n + ") = " +
+        df.format(n, buf2, new FieldPosition(0)));
+        if (!buf1.toString().equals(buf2.toString()))
+            errln("Test for bug 4087245 failed");
+    }
+    /**
+     * DecimalFormat.format() incorrectly formats 0.0
+     */
+    public void Test4087535 ()
+    {
+        DecimalFormat df = new DecimalFormat();
+        df.setMinimumIntegerDigits(0);
+
+        double n = 0;
+        String buffer = new String();
+        buffer = df.format(n);
+        if (buffer.length() == 0)
+            errln(n + ": '" + buffer + "'");
+        n = 0.1;
+        buffer = df.format(n);
+        if (buffer.length() == 0)
+            errln(n + ": '" + buffer + "'");
+    }
+
+    /**
+     * DecimalFormat.format fails when groupingSize is set to 0.
+     */
+    public void Test4088503 (){
+        DecimalFormat df = new DecimalFormat();
+        df.setGroupingSize(0);
+        StringBuffer sBuf = new StringBuffer("");
+        FieldPosition fp = new FieldPosition(0);
+        try {
+            logln(df.format(123, sBuf, fp).toString());
+        } catch (Exception foo) {
+            errln("Test for bug 4088503 failed.");
+        }
+
+    }
+    /**
+     * NumberFormat.getCurrencyInstance is wrong.
+     */
+    public void Test4066646 () {
+        //float returnfloat = 0.0f; //The variable is never used
+        assignFloatValue(2.04f);
+        assignFloatValue(2.03f);
+        assignFloatValue(2.02f);
+        assignFloatValue(0.0f);
+    }
+
+    public float assignFloatValue(float returnfloat)
+    {
+        logln(" VALUE " + returnfloat);
+        NumberFormat nfcommon =  NumberFormat.getCurrencyInstance(Locale.US);
+        nfcommon.setGroupingUsed(false);
+
+        String stringValue = nfcommon.format(returnfloat).substring(1);
+        if (Float.valueOf(stringValue).floatValue() != returnfloat)
+            errln(" DISPLAYVALUE " + stringValue);
+        return returnfloat;
+    } // End Of assignFloatValue()
+
+    /**
+     * DecimalFormat throws exception when parsing "0"
+     */
+    public void Test4059870() {
+        DecimalFormat format = new DecimalFormat("00");
+        try {
+            logln(format.parse("0").toString());
+        } catch (Exception e) { errln("Test for bug 4059870 failed : " + e); }
+    }
+    /**
+     * DecimalFormatSymbol.equals should always return false when
+     * comparing with null.
+     */
+
+    public void Test4083018 (){
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols();
+        try {
+            if (!dfs.equals(null))
+                logln("Test Passed!");
+        } catch (Exception foo) {
+            errln("Test for bug 4083018 failed => Message : " + foo.getMessage());
+        }
+    }
+    /**
+     * DecimalFormat does not round up correctly.
+     */
+    public void Test4071492 (){
+        double x = 0.00159999;
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMaximumFractionDigits(4);
+        String out = nf.format(x);
+        logln("0.00159999 formats with 4 fractional digits to " + out);
+        String expected = "0.0016";
+        if (!out.equals(expected))
+            errln("FAIL: Expected " + expected);
+    }
+
+    /**
+     * A space as a group separator for localized pattern causes
+     * wrong format.  WorkAround : use non-breaking space.
+     */
+    public void Test4086575() {
+
+        NumberFormat nf = NumberFormat.getInstance(Locale.FRANCE);
+        logln("nf toPattern1: " + ((DecimalFormat)nf).toPattern());
+        logln("nf toLocPattern1: " + ((DecimalFormat)nf).toLocalizedPattern());
+
+        // No group separator
+        logln("...applyLocalizedPattern ###,00;(###,00) ");
+        ((DecimalFormat)nf).applyLocalizedPattern("###,00;(###,00)");
+        logln("nf toPattern2: " + ((DecimalFormat)nf).toPattern());
+        logln("nf toLocPattern2: " + ((DecimalFormat)nf).toLocalizedPattern());
+
+        logln("nf: " + nf.format(1234)); // 1234,00
+        logln("nf: " + nf.format(-1234)); // (1234,00)
+
+        // Space as group separator
+
+        logln("...applyLocalizedPattern # ###,00;(# ###,00) ");
+        ((DecimalFormat)nf).applyLocalizedPattern("#\u00a0###,00;(#\u00a0###,00)");
+        logln("nf toPattern2: " + ((DecimalFormat)nf).toPattern());
+        logln("nf toLocPattern2: " + ((DecimalFormat)nf).toLocalizedPattern());
+        String buffer = nf.format(1234);
+        if (!buffer.equals("1\u00a0234,00"))
+            errln("nf : " + buffer); // Expect 1 234,00
+        buffer = nf.format(-1234);
+        if (!buffer.equals("(1\u00a0234,00)"))
+            errln("nf : " + buffer); // Expect (1 234,00)
+
+        // Erroneously prints:
+        // 1234,00 ,
+        // (1234,00 ,)
+
+    }
+    /**
+     * DecimalFormat.parse returns wrong value
+     */
+    public void Test4068693()
+    {
+        logln("----- Test Application -----");
+        ParsePosition pos;
+        DecimalFormat df = new DecimalFormat();
+        Number d = df.parse("123.55456", pos=new ParsePosition(0));
+        if (!d.toString().equals("123.55456")) {
+            errln("Result -> " + d.doubleValue());
+        }
+    }
+
+    /* bugs 4069754, 4067878
+     * null pointer thrown when accessing a deserialized DecimalFormat
+     * object.
+     */
+    public void Test4069754() throws Exception
+    {
+        //try {
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            ObjectOutputStream oos = new ObjectOutputStream(baos);
+            myformat it = new myformat();
+            logln(it.Now());
+            oos.writeObject(it);
+            oos.flush();
+            baos.close();
+            logln("Save OK!");
+            byte [] bytes = baos.toByteArray();
+            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
+            myformat o = (myformat)ois.readObject();
+            ois.close();
+            it.Now();
+            logln("Load OK!");
+            if (!o._dateFormat.equals(it._dateFormat)) {
+                throw new Exception("The saved and loaded object are not equals!");
+            }
+            logln("Compare OK!");
+        //} catch (Exception foo) {
+            //errln("Test for bug 4069754 or 4057878 failed => Exception: " + foo.getMessage());
+        //}
+    }
+
+    /**
+     * DecimalFormat.applyPattern(String) allows illegal patterns
+     */
+    public void Test4087251 (){
+        DecimalFormat df = new DecimalFormat();
+        try {
+            df.applyPattern("#.#.#");
+            logln("toPattern() returns \"" + df.toPattern() + "\"");
+            errln("applyPattern(\"#.#.#\") doesn't throw IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            logln("Caught Illegal Argument Error !");
+        }
+        // Second test; added 5/11/98 when reported to fail on 1.2b3
+        try {
+            df.applyPattern("#0.0#0#0");
+            logln("toPattern() returns \"" + df.toPattern() + "\"");
+            errln("applyPattern(\"#0.0#0#0\") doesn't throw IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            logln("Ok - IllegalArgumentException for #0.0#0#0");
+        }
+    }
+
+    /**
+     * DecimalFormat.format() loses precision
+     */
+    public void Test4090489 (){
+        DecimalFormat df = new DecimalFormat();
+        df.setMinimumFractionDigits(10);
+        df.setGroupingUsed(false);
+        double d = 1.000000000000001E7;
+        BigDecimal bd = new BigDecimal(d);
+        StringBuffer sb = new StringBuffer("");
+        FieldPosition fp = new FieldPosition(0);
+        logln("d = " + d);
+        logln("BigDecimal.toString():  " + bd.toString());
+        df.format(d, sb, fp);
+        if (!sb.toString().equals("10000000.0000000100")) {
+            errln("DecimalFormat.format(): " + sb.toString());
+        }
+    }
+
+    /**
+     * DecimalFormat.format() loses precision
+     */
+    public void Test4090504 ()
+    {
+        double d = 1;
+        logln("d = " + d);
+        DecimalFormat df = new DecimalFormat();
+        StringBuffer sb;
+        FieldPosition fp;
+        try {
+            for (int i = 17; i <= 20; i++) {
+                df.setMaximumFractionDigits(i);
+                sb = new StringBuffer("");
+                fp = new FieldPosition(0);
+                logln("  getMaximumFractionDigits() = " + i);
+                logln("  formated: " + df.format(d, sb, fp));
+            }
+        } catch (Exception foo) {
+            errln("Bug 4090504 regression test failed. Message : " + foo.getMessage());
+        }
+    }
+    /**
+     * DecimalFormat.parse(String str, ParsePosition pp) loses precision
+     */
+    public void Test4095713 ()
+    {
+        DecimalFormat df = new DecimalFormat();
+        String str = "0.1234";
+        Double d1 = new Double(str);
+        Number d2 = df.parse(str, new ParsePosition(0));
+        logln(d1.toString());
+        if (d2.doubleValue() != d1.doubleValue())
+            errln("Bug 4095713 test failed, new double value : " + d2.doubleValue());
+    }
+
+    /**
+     * DecimalFormat.parse() fails when multiplier is not set to 1
+     */
+    public void Test4092561 ()
+    {
+        Locale savedLocale = Locale.getDefault();
+        Locale.setDefault(Locale.US);
+        DecimalFormat df = new DecimalFormat();
+        String str = Long.toString(Long.MIN_VALUE);
+        logln("Long.MIN_VALUE : " + df.parse(str, new ParsePosition(0)).toString());
+        df.setMultiplier(100);
+        Number num = df.parse(str, new ParsePosition(0));
+        if (num.doubleValue() != -9.223372036854776E16) {
+            errln("Bug 4092561 test failed when multiplier is set to not 1.");
+        }
+        Locale.setDefault(savedLocale);
+    }
+
+    /**
+     * DecimalFormat: Negative format ignored.
+     */
+    public void Test4092480 ()
+    {
+        DecimalFormat dfFoo = new DecimalFormat("000");
+
+        try {
+            dfFoo.applyPattern("0000;-000");
+            if (!dfFoo.toPattern().equals("#0000"))
+                errln("dfFoo.toPattern : " + dfFoo.toPattern());
+            logln(dfFoo.format(42));
+            logln(dfFoo.format(-42));
+            dfFoo.applyPattern("000;-000");
+            if (!dfFoo.toPattern().equals("#000"))
+                errln("dfFoo.toPattern : " + dfFoo.toPattern());
+            logln(dfFoo.format(42));
+            logln(dfFoo.format(-42));
+
+            dfFoo.applyPattern("000;-0000");
+            if (!dfFoo.toPattern().equals("#000"))
+                errln("dfFoo.toPattern : " + dfFoo.toPattern());
+            logln(dfFoo.format(42));
+            logln(dfFoo.format(-42));
+
+            dfFoo.applyPattern("0000;-000");
+            if (!dfFoo.toPattern().equals("#0000"))
+                errln("dfFoo.toPattern : " + dfFoo.toPattern());
+            logln(dfFoo.format(42));
+            logln(dfFoo.format(-42));
+        } catch (Exception foo) {
+            errln("Message " + foo.getMessage());
+        }
+    }
+    /**
+     * NumberFormat.getCurrencyInstance() produces format that uses
+     * decimal separator instead of monetary decimal separator.
+     *
+     * Rewrote this test not to depend on the actual pattern.  Pattern should
+     * never contain the monetary separator!  Decimal separator in pattern is
+     * interpreted as monetary separator if currency symbol is seen!
+     */
+    public void Test4087244 () {
+        Locale de = new Locale("pt", "PT");
+        DecimalFormat df = (DecimalFormat) NumberFormat.getCurrencyInstance(de);
+        DecimalFormatSymbols sym = df.getDecimalFormatSymbols();
+        sym.setMonetaryDecimalSeparator('$');
+	df.setDecimalFormatSymbols(sym);
+        char decSep = sym.getDecimalSeparator();
+        char monSep = sym.getMonetaryDecimalSeparator();
+        //char zero = sym.getZeroDigit(); //The variable is never used
+        if (decSep == monSep) {
+            errln("ERROR in test: want decimal sep != monetary sep");
+        } else {
+            df.setMinimumIntegerDigits(1);
+            df.setMinimumFractionDigits(2);
+            String str = df.format(1.23);
+            String monStr = "1" + monSep + "23";
+            String decStr = "1" + decSep + "23";
+            if (str.indexOf(monStr) >= 0 && str.indexOf(decStr) < 0) {
+                logln("OK: 1.23 -> \"" + str + "\" contains \"" +
+                      monStr + "\" and not \"" + decStr + '"');
+            } else {
+                errln("FAIL: 1.23 -> \"" + str + "\", should contain \"" +
+                      monStr +
+                      "\" and not \"" + decStr + '"');
+            }
+        }
+    }
+    /**
+     * Number format data rounding errors for locale FR
+     */
+    public void Test4070798 () {
+        NumberFormat formatter;
+        String tempString;
+        /* User error :
+        String expectedDefault = "-5\u00a0789,987";
+        String expectedCurrency = "5\u00a0789,98 F";
+        String expectedPercent = "-578\u00a0998%";
+        */
+        String expectedDefault = "-5\u00a0789,988";
+        String expectedCurrency = "5\u00a0789,99 " + EURO; // euro
+        String expectedPercent = "-578\u00a0999%";
+
+        formatter = NumberFormat.getNumberInstance(Locale.FRANCE);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedDefault)) {
+            logln ("Bug 4070798 default test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedDefault +
+            " Received " + tempString );
+        }
+
+
+        formatter = NumberFormat.getCurrencyInstance(Locale.FRANCE);
+        tempString = formatter.format( 5789.9876 );
+
+        if (tempString.equals(expectedCurrency) ) {
+            logln ("Bug 4070798 currency test assed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedCurrency +
+            " Received " + tempString );
+        }
+
+
+        formatter = NumberFormat.getPercentInstance(Locale.FRANCE);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedPercent) ) {
+            logln ("Bug 4070798 percentage test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedPercent +
+            " Received " + tempString );
+        }
+    }
+    /**
+     * Data rounding errors for French (Canada) locale
+     */
+    public void Test4071005 () {
+
+        NumberFormat formatter;
+        String tempString;
+    /* user error :
+        String expectedDefault = "-5 789,987";
+        String expectedCurrency = "5 789,98 $";
+        String expectedPercent = "-578 998%";
+    */
+        String expectedDefault = "-5\u00a0789,988";
+        String expectedCurrency = "5\u00a0789,99 $";
+        String expectedPercent = "-578\u00a0999%";
+
+        formatter = NumberFormat.getNumberInstance(Locale.CANADA_FRENCH);
+        tempString = formatter.format (-5789.9876);
+        if (tempString.equals(expectedDefault)) {
+            logln ("Bug 4071005 default test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedDefault +
+            " Received " + tempString );
+        }
+
+        formatter = NumberFormat.getCurrencyInstance(Locale.CANADA_FRENCH);
+        tempString = formatter.format( 5789.9876 ) ;
+
+        if (tempString.equals(expectedCurrency) ) {
+            logln ("Bug 4071005 currency test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedCurrency +
+            " Received " + tempString );
+        }
+        formatter = NumberFormat.getPercentInstance(Locale.CANADA_FRENCH);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedPercent) ) {
+            logln ("Bug 4071005 percentage test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedPercent +
+            " Received " + tempString );
+        }
+    }
+
+    /**
+     * Data rounding errors for German (Germany) locale
+     */
+    public void Test4071014 () {
+        NumberFormat formatter;
+        String tempString;
+        /* user error :
+        String expectedDefault = "-5.789,987";
+        String expectedCurrency = "5.789,98 DM";
+        String expectedPercent = "-578.998%";
+        */
+        String expectedDefault = "-5.789,988";
+        String expectedCurrency = "5.789,99 " + EURO;
+        String expectedPercent = "-578.999%";
+
+        formatter = NumberFormat.getNumberInstance(Locale.GERMANY);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedDefault)) {
+            logln ("Bug 4071014 default test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedDefault +
+            " Received " + tempString );
+        }
+
+        formatter = NumberFormat.getCurrencyInstance(Locale.GERMANY);
+        tempString = formatter.format( 5789.9876 ) ;
+
+        if (tempString.equals(expectedCurrency) ) {
+            logln ("Bug 4071014 currency test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedCurrency +
+            " Received " + tempString );
+        }
+
+        formatter = NumberFormat.getPercentInstance(Locale.GERMANY);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedPercent) ) {
+            logln ("Bug 4071014 percentage test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedPercent +
+            " Received " + tempString );
+        }
+
+    }
+    /**
+     * Data rounding errors for Italian locale number formats
+	 * Note- with the Euro, there is no need for currency rounding anymore
+     */
+    public void Test4071859 () {
+        NumberFormat formatter;
+        String tempString;
+        /* user error :
+        String expectedDefault = "-5.789,987";
+        String expectedCurrency = "-L. 5.789,98";
+        String expectedPercent = "-578.998%";
+        */
+        String expectedDefault = "-5.789,988";
+        String expectedCurrency = "-" + EURO + " 5.789,99";
+        String expectedPercent = "-578.999%";
+
+        formatter = NumberFormat.getNumberInstance(Locale.ITALY);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedDefault)) {
+            logln ("Bug 4071859 default test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedDefault +
+            " Received " + tempString );
+        }
+
+        formatter = NumberFormat.getCurrencyInstance(Locale.ITALY);
+        tempString = formatter.format( -5789.9876 ) ;
+
+        if (tempString.equals(expectedCurrency) ) {
+            logln ("Bug 4071859 currency test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedCurrency +
+            " Received " + tempString );
+        }
+
+        formatter = NumberFormat.getPercentInstance(Locale.ITALY);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedPercent) ) {
+            logln ("Bug 4071859 percentage test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedPercent +
+            " Received " + tempString );
+        }
+
+    }
+    /* bug 4071859
+     * Test rounding for nearest even.
+     */
+    public void Test4093610()
+    {
+        DecimalFormat df = new DecimalFormat("#0.#");
+        roundingTest(df, 12.35, "12.4");
+        roundingTest(df, 12.45, "12.4");
+        roundingTest(df, 12.452,"12.5");
+        roundingTest(df, 12.55, "12.6");
+        roundingTest(df, 12.65, "12.6");
+        roundingTest(df, 12.652,"12.7");
+        roundingTest(df, 12.75, "12.8");
+        roundingTest(df, 12.752,"12.8");
+        roundingTest(df, 12.85, "12.8");
+        roundingTest(df, 12.852,"12.9");
+        roundingTest(df, 12.95, "13");
+        roundingTest(df, 12.952,"13");
+
+    }
+    void roundingTest(DecimalFormat df, double x, String expected)
+    {
+        String out = df.format(x);
+        logln("" + x + " formats with 1 fractional digits to " + out);
+        if (!out.equals(expected)) errln("FAIL: Expected " + expected);
+    }
+    /**
+     * Tests the setMaximumFractionDigits limit.
+     */
+    public void Test4098741()
+    {
+        try {
+            NumberFormat fmt = NumberFormat.getPercentInstance();
+            fmt.setMaximumFractionDigits(20);
+            logln(fmt.format(.001));
+        } catch (Exception foo) {
+            errln("Bug 4098471 failed with exception thrown : " + foo.getMessage());
+        }
+    }
+    /**
+     * Tests illegal pattern exception.
+     * Fix comment : HShih A31 Part1 will not be fixed and javadoc needs to be updated.
+     * Part2 has been fixed.
+     */
+    public void Test4074454()
+    {
+        try {
+            DecimalFormat fmt = new DecimalFormat("#,#00.00;-#.#");
+            logln("format 3456.78: " + fmt.format(3456.78)); //fix "The variable 'fmt' is never used"
+            logln("Inconsistent negative pattern is fine.");
+            DecimalFormat newFmt = new DecimalFormat("#,#00.00 p''ieces;-#,#00.00 p''ieces");
+            String tempString = newFmt.format(3456.78);
+            if (!tempString.equals("3,456.78 p'ieces"))
+                errln("Failed!  3456.78 p'ieces expected, but got : " + tempString);
+        } catch (Exception foo) {
+            errln("An exception was thrown for any inconsistent negative pattern.");
+        }
+    }
+    /**
+     * Tests all different comments.
+     * Response to some comments :
+     * [1] DecimalFormat.parse API documentation is more than just one line.
+     * This is not a reproducable doc error in 116 source code.
+     * [2] See updated javadoc.
+     * [3] Fixed.
+     * [4] NumberFormat.parse(String, ParsePosition) : If parsing fails,
+     * a null object will be returned.  The unchanged parse position also
+     * reflects an error.
+     * NumberFormat.parse(String) : If parsing fails, an ParseException
+     * will be thrown.
+     * See updated javadoc for more details.
+     * [5] See updated javadoc.
+     * [6] See updated javadoc.
+     * [7] This is a correct behavior if the DateFormat object is linient.
+     * Otherwise, an IllegalArgumentException will be thrown when formatting
+     * "January 35".  See GregorianCalendar class javadoc for more details.
+     */
+    public void Test4099404()
+    {
+        try {
+            DecimalFormat fmt = new DecimalFormat("000.0#0");
+            logln("format 3456.78: " + fmt.format(3456.78)); //fix "The variable 'fmt' is never used"
+            errln("Bug 4099404 failed applying illegal pattern \"000.0#0\"");
+        } catch (Exception foo) {
+            logln("Bug 4099404 pattern \"000.0#0\" passed");
+        }
+        try {
+            DecimalFormat fmt = new DecimalFormat("0#0.000");
+            logln("format 3456.78: " + fmt.format(3456.78)); //fix "The variable 'fmt' is never used"
+            errln("Bug 4099404 failed applying illegal pattern \"0#0.000\"");
+        } catch (Exception foo) {
+            logln("Bug 4099404 pattern \"0#0.000\" passed");
+        }
+    }
+    /**
+     * DecimalFormat.applyPattern doesn't set minimum integer digits
+     */
+    public void Test4101481()
+    {
+        DecimalFormat sdf = new DecimalFormat("#,##0");
+        if (sdf.getMinimumIntegerDigits() != 1)
+            errln("Minimum integer digits : " + sdf.getMinimumIntegerDigits());
+    }
+    /**
+     * Tests ParsePosition.setErrorPosition() and ParsePosition.getErrorPosition().
+     */
+    public void Test4052223()
+    {
+        try {
+            DecimalFormat fmt = new DecimalFormat("#,#00.00");
+            Number num = fmt.parse("abc3");
+            errln("Bug 4052223 failed : can't parse string \"a\".  Got " + num);
+        } catch (ParseException foo) {
+            logln("Caught expected ParseException : " + foo.getMessage() + " at index : " + foo.getErrorOffset());
+        }
+    }
+    /**
+     * API tests for API addition request A9.
+     */
+    public void Test4061302()
+    {
+        DecimalFormatSymbols fmt = new DecimalFormatSymbols();
+        String currency = fmt.getCurrencySymbol();
+        String intlCurrency = fmt.getInternationalCurrencySymbol();
+        char monDecSeparator = fmt.getMonetaryDecimalSeparator();
+        if (currency.equals("") ||
+            intlCurrency.equals("") ||
+            monDecSeparator == 0) {
+            errln("getCurrencySymbols failed, got empty string.");
+        }
+        logln("Before set ==> Currency : " + currency + " Intl Currency : " + intlCurrency + " Monetary Decimal Separator : " + monDecSeparator);
+        fmt.setCurrencySymbol("XYZ");
+        fmt.setInternationalCurrencySymbol("ABC");
+        fmt.setMonetaryDecimalSeparator('*');
+        currency = fmt.getCurrencySymbol();
+        intlCurrency = fmt.getInternationalCurrencySymbol();
+        monDecSeparator = fmt.getMonetaryDecimalSeparator();
+        if (!currency.equals("XYZ") ||
+            !intlCurrency.equals("ABC") ||
+            monDecSeparator != '*') {
+            errln("setCurrencySymbols failed.");
+        }
+        logln("After set ==> Currency : " + currency + " Intl Currency : " + intlCurrency + " Monetary Decimal Separator : " + monDecSeparator);
+    }
+    /**
+     * API tests for API addition request A23. FieldPosition.getBeginIndex and
+     * FieldPosition.getEndIndex.
+     */
+    public void Test4062486()
+    {
+        DecimalFormat fmt = new DecimalFormat("#,##0.00");
+        StringBuffer formatted = new StringBuffer();
+        FieldPosition field = new FieldPosition(0);
+        Double num = new Double(1234.5);
+        fmt.format(num, formatted, field);
+        if (field.getBeginIndex() != 0 && field.getEndIndex() != 5)
+            errln("Format 1234.5 failed. Begin index: " + field.getBeginIndex() + " End index: " + field.getEndIndex());
+        field.setBeginIndex(7);
+        field.setEndIndex(4);
+        if (field.getBeginIndex() != 7 && field.getEndIndex() != 4)
+            errln("Set begin/end field indexes failed. Begin index: " + field.getBeginIndex() + " End index: " + field.getEndIndex());
+    }
+
+    /**
+     * DecimalFormat.parse incorrectly works with a group separator.
+     */
+    public void Test4108738()
+    {
+
+        DecimalFormat df = new DecimalFormat("#,##0.###", new
+        DecimalFormatSymbols(java.util.Locale.US));
+        String text = "1.222,111";
+        Number num = df.parse(text,new ParsePosition(0));
+        if (!num.toString().equals("1.222"))
+            errln("\"" + text + "\"  is parsed as " + num);
+        text = "1.222x111";
+        num = df.parse(text,new ParsePosition(0));
+        if (!num.toString().equals("1.222"))
+            errln("\"" + text + "\"  is parsed as " + num);
+    }
+
+    /**
+     * DecimalFormat.format() incorrectly formats negative doubles.
+     */
+    public void Test4106658()
+    {
+        Locale savedLocale = Locale.getDefault();
+        Locale.setDefault(Locale.US);
+        DecimalFormat df = new DecimalFormat(); // Corrected; see 4147706
+        double d1 = -0.0;
+        double d2 = -0.0001;
+        StringBuffer buffer = new StringBuffer();
+        logln("pattern: \"" + df.toPattern() + "\"");
+        df.format(d1, buffer, new FieldPosition(0));
+        if (!buffer.toString().equals("-0")) { // Corrected; see 4147706
+            errln(d1 + "      is formatted as " + buffer);
+        }
+        buffer.setLength(0);
+        df.format(d2, buffer, new FieldPosition(0));
+        if (!buffer.toString().equals("-0")) { // Corrected; see 4147706
+            errln(d2 + "      is formatted as " + buffer);
+        }
+        Locale.setDefault(savedLocale);
+    }
+
+    /**
+     * DecimalFormat.parse returns 0 if string parameter is incorrect.
+     */
+    public void Test4106662()
+    {
+        DecimalFormat df = new DecimalFormat();
+        String text = "x";
+        ParsePosition pos1 = new ParsePosition(0), pos2 = new ParsePosition(0);
+
+        logln("pattern: \"" + df.toPattern() + "\"");
+        Number num = df.parse(text, pos1);
+        if (num != null) {
+            errln("Test Failed: \"" + text + "\" is parsed as " + num);
+        }
+        df = null;
+        df = new DecimalFormat("$###.00");
+        num = df.parse("$", pos2);
+        if (num != null){
+            errln("Test Failed: \"$\" is parsed as " + num);
+        }
+    }
+
+    /**
+     * NumberFormat.parse doesn't return null
+     */
+    public void Test4114639()
+    {
+        NumberFormat format = NumberFormat.getInstance();
+        String text = "time 10:x";
+        ParsePosition pos = new ParsePosition(8);
+        Number result = format.parse(text, pos);
+        if (result != null) errln("Should return null but got : " + result); // Should be null; it isn't
+    }
+
+    /**
+     * DecimalFormat.format(long n) fails if n * multiplier > MAX_LONG.
+     */
+    public void Test4106664()
+    {
+        DecimalFormat df = new DecimalFormat();
+        long n = 1234567890123456L;
+        int m = 12345678;
+        BigInteger bigN = BigInteger.valueOf(n);
+        bigN = bigN.multiply(BigInteger.valueOf(m));
+        df.setMultiplier(m);
+        df.setGroupingUsed(false);
+        logln("formated: " +
+            df.format(n, new StringBuffer(), new FieldPosition(0)));
+        logln("expected: " + bigN.toString());
+    }
+    /**
+     * DecimalFormat.format incorrectly formats -0.0.
+     */
+    public void Test4106667()
+    {
+        Locale savedLocale = Locale.getDefault();
+        Locale.setDefault(Locale.US);
+        DecimalFormat df = new DecimalFormat();
+        df.setPositivePrefix("+");
+        double d = -0.0;
+        logln("pattern: \"" + df.toPattern() + "\"");
+        StringBuffer buffer = new StringBuffer();
+        df.format(d, buffer, new FieldPosition(0));
+        if (!buffer.toString().equals("-0")) { // Corrected; see 4147706
+            errln(d + "  is formatted as " + buffer);
+        }
+        Locale.setDefault(savedLocale);
+    }
+
+    /**
+     * DecimalFormat.setMaximumIntegerDigits() works incorrectly.
+     */
+    public void Test4110936()
+    {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMaximumIntegerDigits(128);
+        logln("setMaximumIntegerDigits(128)");
+        if (nf.getMaximumIntegerDigits() != 128)
+            errln("getMaximumIntegerDigits() returns " +
+                nf.getMaximumIntegerDigits());
+    }
+    
+    /**
+     * Locale data should use generic currency symbol
+     *
+     * 1) Make sure that all currency formats use the generic currency symbol.
+     * 2) Make sure we get the same results using the generic symbol or a
+     *    hard-coded one.
+     */
+    public void Test4122840()
+    {
+        Locale[] locales = NumberFormat.getAvailableLocales();
+        
+        for (int i = 0; i < locales.length; i++) {
+            ResourceBundle rb = ICULocaleData.getResourceBundle("LocaleElements", locales[i]);
+
+            //
+            // Get the currency pattern for this locale.  We have to fish it
+            // out of the ResourceBundle directly, since DecimalFormat.toPattern
+            // will return the localized symbol, not \00a4
+            //
+            String[] numPatterns = (String[])rb.getObject("NumberPatterns");
+            String pattern = numPatterns[1];
+            
+            if (pattern.indexOf("\u00A4") == -1 ) {
+                errln("Currency format for " + locales[i] +
+                        " does not contain generic currency symbol:" +
+                        pattern );
+            }
+            
+            // Create a DecimalFormat using the pattern we got and format a number
+            DecimalFormatSymbols symbols = new DecimalFormatSymbols(locales[i]);
+            DecimalFormat fmt1 = new DecimalFormat(pattern, symbols);
+            
+            String result1 = fmt1.format(1.111);
+            
+            //
+            // Now substitute in the locale's currency symbol and create another
+            // pattern.  Replace the decimal separator with the monetary separator.
+            //
+            //char decSep = symbols.getDecimalSeparator(); //The variable is never used
+            char monSep = symbols.getMonetaryDecimalSeparator();
+            StringBuffer buf = new StringBuffer(pattern);
+            for (int j = 0; j < buf.length(); j++) {
+                if (buf.charAt(j) == '\u00a4') {
+                    String cur = "'" + symbols.getCurrencySymbol() + "'";
+                    buf.replace(j, j+1, cur); 
+                    j += cur.length() - 1;
+                }
+            }
+            symbols.setDecimalSeparator(monSep);
+            DecimalFormat fmt2 = new DecimalFormat(buf.toString(), symbols);
+            
+            String result2 = fmt2.format(1.111);
+            
+            if (!result1.equals(result2)) {
+                errln("Results for " + locales[i] + " differ: " +
+                      result1 + " vs " + result2);
+            }
+        }
+    }
+     
+    /**
+     * DecimalFormat.format() delivers wrong string.
+     */
+    public void Test4125885()
+    {
+        double rate = 12.34;
+        DecimalFormat formatDec = new DecimalFormat ("000.00");
+        logln("toPattern: " + formatDec.toPattern());
+        String rateString= formatDec.format(rate);
+        if (!rateString.equals("012.34"))
+            errln("result : " + rateString + " expected : 012.34");
+        rate = 0.1234;
+        formatDec = null;
+        formatDec = new DecimalFormat ("+000.00%;-000.00%");
+        logln("toPattern: " + formatDec.toPattern());
+        rateString= formatDec.format(rate);
+        if (!rateString.equals("+012.34%"))
+            errln("result : " + rateString + " expected : +012.34%");
+    }
+
+    /**
+     **
+     * DecimalFormat produces extra zeros when formatting numbers.
+     */
+    public void Test4134034() {
+        DecimalFormat nf = new DecimalFormat("##,###,###.00");
+        
+        String f = nf.format(9.02);
+        if (f.equals("9.02")) logln(f + " ok"); else errln("9.02 -> " + f + "; want 9.02");
+
+        f = nf.format(0);
+        if (f.equals(".00")) logln(f + " ok"); else errln("0 -> " + f + "; want .00");
+    }
+
+    /**
+     * CANNOT REPRODUCE - This bug could not be reproduced.  It may be
+     * a duplicate of 4134034.
+     *
+     * JDK 1.1.6 Bug, did NOT occur in 1.1.5
+     * Possibly related to bug 4125885.
+     * 
+     * This class demonstrates a regression in version 1.1.6
+     * of DecimalFormat class.
+     * 
+     * 1.1.6 Results
+     * Value 1.2 Format #.00 Result '01.20' !!!wrong
+     * Value 1.2 Format 0.00 Result '001.20' !!!wrong
+     * Value 1.2 Format 00.00 Result '0001.20' !!!wrong
+     * Value 1.2 Format #0.0# Result '1.2'
+     * Value 1.2 Format #0.00 Result '001.20' !!!wrong
+     * 
+     * 1.1.5 Results
+     * Value 1.2 Format #.00 Result '1.20'
+     * Value 1.2 Format 0.00 Result '1.20'
+     * Value 1.2 Format 00.00 Result '01.20'
+     * Value 1.2 Format #0.0# Result '1.2'
+     * Value 1.2 Format #0.00 Result '1.20'
+     */
+    public void Test4134300() {
+        String[] DATA = {
+         // Pattern      Expected string
+            "#.00",      "1.20",
+            "0.00",      "1.20",
+            "00.00",     "01.20",
+            "#0.0#",     "1.2",
+            "#0.00",     "1.20",
+        };
+        for (int i=0; i<DATA.length; i+=2) {
+            String result = new DecimalFormat(DATA[i]).format(1.2);
+            if (!result.equals(DATA[i+1])) {
+                errln("Fail: 1.2 x " + DATA[i] + " = " + result +
+                      "; want " + DATA[i+1]);
+            }
+            else {
+                logln("Ok: 1.2 x " + DATA[i] + " = " + result);
+            }
+        }
+    }
+
+    /**
+     * Empty pattern produces double negative prefix.
+     */
+    public void Test4140009() {
+        for (int i=0; i<2; ++i) {
+            DecimalFormat f = null;
+            switch (i) {
+            case 0:
+                f = new DecimalFormat("",
+                            new DecimalFormatSymbols(Locale.ENGLISH));
+                break;
+            case 1:
+                f = new DecimalFormat("#.#",
+                            new DecimalFormatSymbols(Locale.ENGLISH));
+                f.applyPattern("");
+                break;
+            }
+            String s = f.format(123.456);
+            if (!s.equals("123.456"))
+                errln("Fail: Format empty pattern x 123.456 => " + s);
+            s = f.format(-123.456);
+            if (!s.equals("-123.456"))
+                errln("Fail: Format empty pattern x -123.456 => " + s);
+        }
+    }
+
+    /**
+     * BigDecimal numbers get their fractions truncated by NumberFormat.
+     */
+    public void Test4141750() {
+        try {
+            String str = "12345.67";
+            BigDecimal bd = new BigDecimal(str);
+            String sd = NumberFormat.getInstance(Locale.US).format(bd);
+            if (!sd.endsWith("67")) errln("Fail: " + str + " x format -> " + sd);
+        }
+        catch (Exception e) {
+            errln(e.toString());
+            e.printStackTrace();
+        }
+    }
+    
+    /**
+     * DecimalFormat toPattern() doesn't quote special characters or handle
+     * single quotes.
+     */
+    public void Test4145457() {
+        try {
+            DecimalFormat nf = (DecimalFormat)NumberFormat.getInstance();
+            DecimalFormatSymbols sym = nf.getDecimalFormatSymbols();
+            sym.setDecimalSeparator('\'');
+            nf.setDecimalFormatSymbols(sym);
+            double pi = 3.14159;
+
+            String[] PATS = { "#.00 'num''ber'", "''#.00''" };
+
+            for (int i=0; i<PATS.length; ++i) {
+                nf.applyPattern(PATS[i]);
+                String out = nf.format(pi);
+                String pat = nf.toPattern();
+                double val = nf.parse(out).doubleValue();
+            
+                nf.applyPattern(pat);
+                String out2 = nf.format(pi);
+                String pat2 = nf.toPattern();
+                double val2 = nf.parse(out2).doubleValue();
+            
+                if (!pat.equals(pat2))
+                    errln("Fail with \"" + PATS[i] + "\": Patterns should concur, \"" +
+                          pat + "\" vs. \"" + pat2 + "\"");
+                else
+                    logln("Ok \"" + PATS[i] + "\" toPattern() -> \"" + pat + '"');
+
+                if (val == val2 && out.equals(out2)) {
+                    logln("Ok " + pi + " x \"" + PATS[i] + "\" -> \"" +
+                          out + "\" -> " + val + " -> \"" +
+                          out2 + "\" -> " + val2);
+                }
+                else {
+                    errln("Fail " + pi + " x \"" + PATS[i] + "\" -> \"" +
+                          out + "\" -> " + val + " -> \"" +
+                          out2 + "\" -> " + val2);
+                }
+            }
+        }
+        catch (ParseException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * DecimalFormat.applyPattern() sets minimum integer digits incorrectly.
+     * CANNOT REPRODUCE
+     * This bug is a duplicate of 4139344, which is a duplicate of 4134300
+     */
+    public void Test4147295() {
+        DecimalFormat sdf = new DecimalFormat();
+        String pattern = "#,###";
+        logln("Applying pattern \"" + pattern + "\"");
+        sdf.applyPattern(pattern);
+        int minIntDig = sdf.getMinimumIntegerDigits();
+        if (minIntDig != 0) {
+            errln("Test failed");
+            errln(" Minimum integer digits : " + minIntDig);
+            errln(" new pattern: " + sdf.toPattern());
+        } else {
+            logln("Test passed");
+            logln(" Minimum integer digits : " + minIntDig);
+        }
+    }
+
+    /**
+     * DecimalFormat formats -0.0 as +0.0
+     * See also older related bug 4106658, 4106667
+     */
+    public void Test4147706() {
+        DecimalFormat df = new DecimalFormat("#,##0.0##");
+        df.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.ENGLISH));
+        double d1 = -0.0;
+        double d2 = -0.0001;
+        StringBuffer f1 = df.format(d1, new StringBuffer(), new FieldPosition(0));
+        StringBuffer f2 = df.format(d2, new StringBuffer(), new FieldPosition(0));
+        if (!f1.toString().equals("-0.0")) {
+            errln(d1 + " x \"" + df.toPattern() + "\" is formatted as \"" + f1 + '"');
+        }
+        if (!f2.toString().equals("-0.0")) {
+            errln(d2 + " x \"" + df.toPattern() + "\" is formatted as \"" + f2 + '"');
+        }
+    }
+
+    /**
+     * NumberFormat cannot format Double.MAX_VALUE
+     */
+    public void Test4162198() {
+        double dbl = Double.MAX_VALUE;
+        NumberFormat f = NumberFormat.getInstance();
+        f.setMaximumFractionDigits(Integer.MAX_VALUE);
+        f.setMaximumIntegerDigits(Integer.MAX_VALUE);
+        String s = f.format(dbl);
+        logln("The number " + dbl + " formatted to " + s);
+        Number n = null;
+        try {
+            n = f.parse(s);
+        } catch (java.text.ParseException e) {
+            errln("Caught a ParseException:");
+            e.printStackTrace();
+        }
+        logln("The string " + s + " parsed as " + n);
+        if (n.doubleValue() != dbl) {
+            errln("Round trip failure");
+        }
+    }
+
+    /**
+     * NumberFormat does not parse negative zero.
+     */
+    public void Test4162852() throws ParseException {
+        for (int i=0; i<2; ++i) {
+            NumberFormat f = (i == 0) ? NumberFormat.getInstance()
+                : NumberFormat.getPercentInstance();
+            double d = -0.0;
+            String s = f.format(d);
+            double e = f.parse(s).doubleValue();
+            logln("" +
+                  d + " -> " +
+                  '"' + s + '"' + " -> " +
+              e);
+            if (e != 0.0 || 1.0/e > 0.0) {
+                logln("Failed to parse negative zero");
+            }
+        }
+    }
+
+    /**
+     * NumberFormat truncates data
+     */
+    public void Test4167494() throws Exception {
+        NumberFormat fmt = NumberFormat.getInstance(Locale.US);
+        
+        double a = Double.MAX_VALUE;
+        String s = fmt.format(a);
+        double b = fmt.parse(s).doubleValue();
+        boolean match = a == b;
+        if (match) {
+            logln("" + a + " -> \"" + s + "\" -> " + b + " ok");
+        } else {
+            errln("" + a + " -> \"" + s + "\" -> " + b + " FAIL");
+        }
+
+        // We don't test Double.MIN_VALUE because the locale data for the US
+        // currently doesn't specify enough digits to display Double.MIN_VALUE.
+        // This is correct for now; however, we leave this here as a reminder
+        // in case we want to address this later.
+        if (false) {
+            a = Double.MIN_VALUE;
+            s = fmt.format(a);
+            b = fmt.parse(s).doubleValue();
+            match = a == b;
+            if (match) {
+                logln("" + a + " -> \"" + s + "\" -> " + b + " ok");
+            } else {
+                errln("" + a + " -> \"" + s + "\" -> " + b + " FAIL");
+            }
+        }
+    }
+
+    /**
+     * DecimalFormat.parse() fails when ParseIntegerOnly set to true
+     */
+    public void Test4170798() {
+        Locale savedLocale = Locale.getDefault();
+        Locale.setDefault(Locale.US);
+        DecimalFormat df = new DecimalFormat();
+        df.setParseIntegerOnly(true);
+        Number n = df.parse("-0.0", new ParsePosition(0));
+        if (!(n instanceof Double)
+            || n.intValue() != 0) {
+            errln("FAIL: parse(\"-0.0\") returns " +
+                  n + " (" + n.getClass().getName() + ')');
+        }
+        Locale.setDefault(savedLocale);
+    }
+
+    /**
+     * toPattern only puts the first grouping separator in.
+     */
+    public void Test4176114() {
+        String[] DATA = {
+            "00", "#00",
+            "000", "#000", // No grouping
+            "#000", "#000", // No grouping
+            "#,##0", "#,##0",
+            "#,000", "#,000",
+            "0,000", "#0,000",
+            "00,000", "#00,000",
+            "000,000", "#,000,000",
+            "0,000,000,000,000.0000", "#0,000,000,000,000.0000", // Reported
+        };
+        for (int i=0; i<DATA.length; i+=2) {
+            DecimalFormat df = new DecimalFormat(DATA[i]);
+            String s = df.toPattern();
+            if (!s.equals(DATA[i+1])) {
+                errln("FAIL: " + DATA[i] + " -> " + s + ", want " + DATA[i+1]);
+            }
+        }
+    }
+
+    /**
+     * DecimalFormat is incorrectly rounding numbers like 1.2501 to 1.2
+     */
+    public void Test4179818() {
+        String DATA[] = {
+            // Input  Pattern  Expected output
+            "1.2511", "#.#",   "1.3",
+            "1.2501", "#.#",   "1.3",
+            "0.9999", "#",     "1",
+        };
+        DecimalFormat fmt = new DecimalFormat("#",
+                new DecimalFormatSymbols(Locale.US));
+        for (int i=0; i<DATA.length; i+=3) {
+            double in = Double.valueOf(DATA[i]).doubleValue();
+            String pat = DATA[i+1];
+            String exp = DATA[i+2];
+            fmt.applyPattern(pat);
+            String out = fmt.format(in);
+            if (out.equals(exp)) {
+                logln("Ok: " + in + " x " + pat + " = " + out);
+            } else {
+                errln("FAIL: " + in + " x  " + pat + " = " + out +
+                      ", expected " + exp);
+            }
+        }
+    }
+
+    public void Test4185761() throws IOException, ClassNotFoundException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        ObjectOutputStream oos = new ObjectOutputStream(baos);
+        
+        NumberFormat nf = NumberFormat.getInstance(Locale.US);
+
+	// Set special values we are going to search for in the output byte stream
+	// These are all legal values.
+        nf.setMinimumIntegerDigits(0x111); // Keep under 309
+        nf.setMaximumIntegerDigits(0x112); // Keep under 309
+        nf.setMinimumFractionDigits(0x113); // Keep under 340
+        nf.setMaximumFractionDigits(0x114); // Keep under 340
+        
+        oos.writeObject(nf);
+        oos.flush();
+        baos.close();
+        
+        byte[] bytes = baos.toByteArray();
+
+	// Scan for locations of min/max int/fract values in the byte array.
+	// At the moment (ICU4J 2.1), there is only one instance of each target pair
+        // in the byte stream, so assume first match is it.  Note this is not entirely
+	// failsafe, and needs to be checked if we change the package or structure of
+	// this class.
+	// Current positions are 890, 880, 886, 876
+	int[] offsets = new int[4];
+	for (int i = 0; i < bytes.length - 1; ++i) {
+	    if (bytes[i] == 0x01) { // high byte
+		for (int j = 0; j < offsets.length; ++j) {
+		    if ((offsets[j] == 0) && (bytes[i+1] == (0x11 + j))) { // low byte
+			offsets[j] = i;
+			break;
+		    }
+		}
+	    }
+	}
+
+        {
+            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
+            Object o = ois.readObject();
+            ois.close();
+            
+            if (!nf.equals(o)) {
+                errln("Fail: DateFormat serialization/equality bug");
+            } else {
+                logln("DateFormat serialization/equality is OKAY.");
+            }
+        }
+
+	// Change the values in the byte stream so that min > max.
+	// Numberformat should catch this and throw an exception.
+	for (int i = 0; i < offsets.length; ++i) {
+	    bytes[offsets[i]] = (byte)(4 - i);
+	}
+
+        {
+            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
+            try {
+                NumberFormat format = (NumberFormat) ois.readObject();
+                logln("format: " + format.format(1234.56)); //fix "The variable is never used"
+                errln("FAIL: Deserialized bogus NumberFormat with minXDigits > maxXDigits");
+            } catch (InvalidObjectException e) {
+                logln("Ok: " + e.getMessage());
+            }
+        }
+
+	// Set values so they are too high, but min <= max
+	// Format should pass the min<= max test, and DecimalFormat should reset to current maximum
+	// (for compatibility with versions streamed out before the maximums were imposed).
+	for (int i = 0; i < offsets.length; ++i) {
+	    bytes[offsets[i]] = 4;
+	}
+
+        {
+            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
+            NumberFormat format = (NumberFormat) ois.readObject();
+            //For compatibility with previous version
+            if ((format.getMaximumIntegerDigits() != 309) 
+                || format.getMaximumFractionDigits() != 340) {
+                errln("FAIL: Deserialized bogus NumberFormat with values out of range," +
+					  " intMin: " + format.getMinimumIntegerDigits() +
+					  " intMax: " + format.getMaximumIntegerDigits() +
+					  " fracMin: " + format.getMinimumFractionDigits() +
+					  " fracMax: " + format.getMaximumFractionDigits());
+            } else {
+                logln("Ok: Digit count out of range");
+            }
+        }
+    }
+
+
+    /**
+     * Some DecimalFormatSymbols changes are not picked up by DecimalFormat.
+     * This includes the minus sign, currency symbol, international currency
+     * symbol, percent, and permille.  This is filed as bugs 4212072 and
+     * 4212073.
+     */
+    public void Test4212072() throws IOException, ClassNotFoundException {
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt = new DecimalFormat("#", sym);
+
+        sym.setMinusSign('^');
+        fmt.setDecimalFormatSymbols(sym);
+        if (!fmt.format(-1).equals("^1")) {
+            errln("FAIL: -1 x (minus=^) -> " + fmt.format(-1) +
+                  ", exp ^1");
+        }
+        if (!fmt.getNegativePrefix().equals("^")) {
+            errln("FAIL: (minus=^).getNegativePrefix -> " +
+                  fmt.getNegativePrefix() + ", exp ^");
+        }
+        sym.setMinusSign('-');
+
+        fmt.applyPattern("#%");
+        sym.setPercent('^');
+        fmt.setDecimalFormatSymbols(sym);
+        if (!fmt.format(0.25).equals("25^")) {
+            errln("FAIL: 0.25 x (percent=^) -> " + fmt.format(0.25) +
+                  ", exp 25^");
+        }
+        if (!fmt.getPositiveSuffix().equals("^")) {
+            errln("FAIL: (percent=^).getPositiveSuffix -> " +
+                  fmt.getPositiveSuffix() + ", exp ^");
+        }
+        sym.setPercent('%');
+        
+        fmt.applyPattern("#\u2030");
+        sym.setPerMill('^');
+        fmt.setDecimalFormatSymbols(sym);
+        if (!fmt.format(0.25).equals("250^")) {
+            errln("FAIL: 0.25 x (permill=^) -> " + fmt.format(0.25) +
+                  ", exp 250^");
+        }
+        if (!fmt.getPositiveSuffix().equals("^")) {
+            errln("FAIL: (permill=^).getPositiveSuffix -> " +
+                  fmt.getPositiveSuffix() + ", exp ^");
+        }
+        sym.setPerMill('\u2030');
+
+        fmt.applyPattern("\u00A4#.00");
+        sym.setCurrencySymbol("usd");
+        fmt.setDecimalFormatSymbols(sym);
+        if (!fmt.format(12.5).equals("usd12.50")) {
+            errln("FAIL: 12.5 x (currency=usd) -> " + fmt.format(12.5) +
+                  ", exp usd12.50");
+        }
+        if (!fmt.getPositivePrefix().equals("usd")) {
+            errln("FAIL: (currency=usd).getPositivePrefix -> " +
+                  fmt.getPositivePrefix() + ", exp usd");
+        }
+        sym.setCurrencySymbol("$");
+
+        fmt.applyPattern("\u00A4\u00A4#.00");
+        sym.setInternationalCurrencySymbol("DOL");
+        fmt.setDecimalFormatSymbols(sym);
+        if (!fmt.format(12.5).equals("DOL12.50")) {
+            errln("FAIL: 12.5 x (intlcurrency=DOL) -> " + fmt.format(12.5) +
+                  ", exp DOL12.50");
+        }
+        if (!fmt.getPositivePrefix().equals("DOL")) {
+            errln("FAIL: (intlcurrency=DOL).getPositivePrefix -> " +
+                  fmt.getPositivePrefix() + ", exp DOL");
+        }
+        sym.setInternationalCurrencySymbol("USD");
+
+	if (VersionInfo.ICU_VERSION.compareTo(VersionInfo.getInstance(2,4)) 
+                                                                      < 0) {
+            // bug in 2.2 that fails this test
+            // to be fixed in the later versions
+            System.out.println("\n        Test skipped for release 2.2");
+            return;
+        }
+        
+        // Since the pattern logic has changed, make sure that patterns round
+        // trip properly.  Test stream in/out integrity too.
+        Locale[] avail = NumberFormat.getAvailableLocales();
+        for (int i=0; i<avail.length; ++i) {
+            for (int j=0; j<3; ++j) {
+                NumberFormat nf;
+                switch (j) {
+                case 0:
+                    nf = NumberFormat.getInstance(avail[i]);
+                    break;
+                case 1:
+                    nf = NumberFormat.getCurrencyInstance(avail[i]);
+                    break;
+                default:
+                    nf = NumberFormat.getPercentInstance(avail[i]);
+                    break;
+                }
+                DecimalFormat df = (DecimalFormat) nf;
+                
+                // Test toPattern/applyPattern round trip
+                String pat = df.toPattern();
+                DecimalFormatSymbols symb = new DecimalFormatSymbols(avail[i]);
+                DecimalFormat f2 = new DecimalFormat(pat, symb);
+                if (!df.equals(f2)) {
+                    errln("FAIL: " + avail[i] + " -> \"" + pat +
+                          "\" -> \"" + f2.toPattern() + '"');
+                }
+
+                // Test toLocalizedPattern/applyLocalizedPattern round trip
+                pat = df.toLocalizedPattern();
+                f2.applyLocalizedPattern(pat);
+                if (!df.equals(f2)) {
+                    errln("FAIL: " + avail[i] + " -> localized \"" + pat +
+                          "\" -> \"" + f2.toPattern() + '"');
+                }
+
+                // Test writeObject/readObject round trip
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                ObjectOutputStream oos = new ObjectOutputStream(baos);
+                oos.writeObject(df);
+                oos.flush();
+                baos.close();
+                byte[] bytes = baos.toByteArray();
+                ObjectInputStream ois =
+                    new ObjectInputStream(new ByteArrayInputStream(bytes));
+                f2 = (DecimalFormat) ois.readObject();
+                if (!df.equals(f2)) {
+                    errln("FAIL: Stream in/out " + avail[i] + " -> \"" + pat +
+                          "\" -> " +
+                          (f2 != null ? ("\""+f2.toPattern()+'"') : "null"));
+                }
+
+            }
+        }
+    }
+
+    /**
+     * DecimalFormat.parse() fails for mulipliers 2^n.
+     */
+    public void Test4216742() throws ParseException {
+        DecimalFormat fmt = (DecimalFormat) NumberFormat.getInstance(Locale.US);
+        long[] DATA = { Long.MIN_VALUE, Long.MAX_VALUE, -100000000L, 100000000L};
+        for (int i=0; i<DATA.length; ++i) {
+            String str = Long.toString(DATA[i]);
+            for (int m = 1; m <= 100; m++) {
+                fmt.setMultiplier(m);
+                long n = ((Number) fmt.parse(str)).longValue();
+                if (n > 0 != DATA[i] > 0) {
+                    errln("\"" + str + "\" parse(x " + fmt.getMultiplier() +
+                          ") => " + n);
+                }
+            }
+        }
+    }
+
+    /**
+     * DecimalFormat formats 1.001 to "1.00" instead of "1" with 2 fraction
+     * digits.
+     */
+    public void Test4217661() {
+        Object[] DATA = {
+            new Double(0.001), "0",
+            new Double(1.001), "1",
+            new Double(0.006), "0.01",
+            new Double(1.006), "1.01",
+        };
+        NumberFormat fmt = NumberFormat.getInstance(Locale.US);
+        fmt.setMaximumFractionDigits(2); 
+        for (int i=0; i<DATA.length; i+=2) {
+            String s = fmt.format(((Double) DATA[i]).doubleValue());
+            if (!s.equals(DATA[i+1])) {
+                errln("FAIL: Got " + s + ", exp " + DATA[i+1]); 
+            }
+        }
+    }
+    
+    /**
+     * 4243011: Formatting .5 rounds to "1" instead of "0"
+     */
+    public void Test4243011() {
+        double DATA[] = {0.5, 1.5, 2.5, 3.5, 4.5};
+        String EXPECTED[] = {"0.", "2.", "2.", "4.", "4."};
+        
+        DecimalFormat format = new DecimalFormat("0.");
+        for (int i = 0; i < DATA.length; i++) {
+            String result = format.format(DATA[i]);
+            if (result.equals(EXPECTED[i])) {
+                logln("OK: got " + result);
+            } else {
+                errln("FAIL: got " + result);
+            }
+        }
+    }
+    
+    /**
+     * 4243108: format(0.0) gives "0.1" if preceded by parse("99.99")
+     */
+    public void Test4243108() {
+        DecimalFormat f = new DecimalFormat("#.#");
+        String result = f.format(0.0);
+        if (result.equals("0")) {
+            logln("OK: got " + result);
+        } else {
+            errln("FAIL: got " + result);
+        }
+        try {
+            double dResult = f.parse("99.99").doubleValue();
+            if (dResult == 99.99) {
+                logln("OK: got " + dResult);
+            } else {
+                errln("FAIL: got " + dResult);
+            }
+        } catch (ParseException e) {
+            errln("Caught a ParseException:");
+            e.printStackTrace();
+        }            
+        result = f.format(0.0);
+        if (result.equals("0")) {
+            logln("OK: got " + result);
+        } else {
+            errln("FAIL: got " + result);
+        }
+    }
+    
+    /**
+     * 4330377: DecimalFormat engineering notation gives incorrect results
+     */
+    public void test4330377() {
+        /*
+        double[] input = {5000.0, 500.0, 50.0, 5.0, 0.5, 0.05, 0.005, 0.0005,
+               5050.0, 505.0, 50.5, 5.05, 0.505, 0.0505, 0.00505, 0.000505};
+        String[] pattern = {"000.#E0", "##0.#E0", "#00.#E0"};
+        String[][] expected = {
+            // it's questionable whether "#00.#E0" should result in post-decimal
+            // zeroes, i.e., whether "5.0E3", "5.0E0", "5.0E-3" are really good
+            {"500E1", "5E3", "5.0E3"},
+            {"500E0", "500E0", "500E0"},
+            {"500E-1", "50E0", "50E0"},
+            {"500E-2", "5E0", "5.0E0"},
+            {"500E-3", "500E-3", "500E-3"},
+            {"500E-4", "50E-3", "50E-3"},
+            {"500E-5", "5E-3", "5.0E-3"},
+            {"500E-6", "500E-6", "500E-6"},
+            {"505E1", "5.05E3", "5.05E3"},
+            {"505E0", "505E0", "505E0"},
+            {"505E-1", "50.5E0", "50.5E0"},
+            {"505E-2", "5.05E0", "5.05E0"},
+            {"505E-3", "505E-3", "505E-3"},
+            {"505E-4", "50.5E-3", "50.5E-3"},
+            {"505E-5", "5.05E-3", "5.05E-3"},
+            {"505E-6", "505E-6", "505E-6"}
+        };
+        for (int i = 0; i < input.length; i++) {
+            for (int j = 0; j < pattern.length; j++) {
+                DecimalFormat format = new DecimalFormat(pattern[j]);
+                String result = format.format(input[i]);
+                if (!result.equals(expected[i][j])) {
+                    errln("FAIL: input: " + input[i] +
+                            ", pattern: " + pattern[j] +
+                            ", expected: " + expected[i][j] +
+                            ", got: " + result);
+                }
+            }
+        }
+        */
+    }
+    
+    /**
+     * 4233840: NumberFormat does not round correctly
+     */
+    public void test4233840() {
+        float f = 0.0099f;
+
+        NumberFormat nf = new DecimalFormat("0.##", new DecimalFormatSymbols(Locale.US));
+	nf.setMinimumFractionDigits(2);
+	
+	String result = nf.format(f);
+	
+	if (!result.equals("0.01")) {
+	    errln("FAIL: input: " + f + ", expected: 0.01, got: " + result);
+	}
+    }
+}
+
+class myformat implements Serializable
+{
+    DateFormat _dateFormat = DateFormat.getDateInstance();
+
+    public String Now()
+    {
+        GregorianCalendar calendar = new GregorianCalendar();
+        Date t = calendar.getTime();
+        String nowStr = _dateFormat.format(t);
+        return nowStr;
+    }
+}
+
+class MyNumberFormatTest extends NumberFormat {
+    public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
+        return new StringBuffer("");
+    }
+    public StringBuffer format(long number,StringBuffer toAppendTo, FieldPosition pos) {
+        return new StringBuffer("");
+    }
+    public Number parse(String text, ParsePosition parsePosition) {
+        return new Integer(0);
+    }
+    public StringBuffer format(BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
+        return new StringBuffer("");
+    }
+    public StringBuffer format(BigInteger number, StringBuffer toAppendTo, FieldPosition pos) {
+        return new StringBuffer("");
+    }
+    public StringBuffer format(com.ibm.icu.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
+        return new StringBuffer("");
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java b/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java
new file mode 100755
index 0000000..6de74c4
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java
@@ -0,0 +1,220 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java,v $ 
+ * $Date: 2002/02/22 03:43:32 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.RuleBasedNumberFormat;
+import com.ibm.icu.dev.test.TestFmwk;
+
+import java.util.Locale;
+import java.text.NumberFormat;
+
+public class RbnfRoundTripTest extends TestFmwk {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    public static void main(String[] args) {
+        RbnfRoundTripTest test = new RbnfRoundTripTest();
+
+        try {
+            test.run(args);
+        }
+        catch (Throwable e) {
+            System.out.println("Entire test failed because of exception: "
+                            + e.toString());
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the English spellout rules
+     */
+    public void TestEnglishSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.US,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the duration-formatting rules
+     */
+    public void TestDurationsRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.US,
+                        RuleBasedNumberFormat.DURATION);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Spanish spellout rules
+     */
+    public void TestSpanishSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("es", "es",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the French spellout rules
+     */
+    public void TestFrenchSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.FRANCE,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Swiss French spellout rules
+     */
+    public void TestSwissFrenchSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("fr", "CH",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Italian spellout rules
+     */
+    public void TestItalianSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.ITALIAN,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -999999, 999999);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the German spellout rules
+     */
+    public void TestGermanSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.GERMANY,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Swedish spellout rules
+     */
+    public void TestSwedishSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("sv", "SE",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Dutch spellout rules
+     */
+    public void TestDutchSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("nl", "NL",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Japanese spellout rules
+     */
+    public void TestJapaneseSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.JAPAN,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Russian spellout rules
+     */
+    public void TestRussianSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("ru", "RU",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Greek spellout rules
+     */
+    public void TestGreekSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("el", "GR",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    void doTest(RuleBasedNumberFormat formatter,  long lowLimit,
+                    long highLimit) {
+        try {
+            long count = 0;
+            long increment = 1;
+            for (long i = lowLimit; i <= highLimit; i += increment) {
+                if (count % 1000 == 0)
+                    logln(Long.toString(i));
+
+                if (Math.abs(i) < 5000)
+                    increment = 1;
+                else if (Math.abs(i) < 500000)
+                    increment = 2737;
+                else
+                    increment = 267437;
+
+                String text = formatter.format(i);
+                long rt = formatter.parse(text).longValue();
+
+                if (rt != i) {
+                    errln("Round-trip failed: " + i + " -> " + text +
+                                    " -> " + rt);
+                }
+
+                ++count;
+            }
+
+            if (lowLimit < 0) {
+                double d = 1.234;
+                while (d < 1000) {
+                    String text = formatter.format(d);
+                    double rt = formatter.parse(text).doubleValue();
+
+                    if (rt != d) {
+                        errln("Round-trip failed: " + d + " -> " + text +
+                                        " -> " + rt);
+                    }
+                    d *= 10;
+                }
+            }
+        }
+        catch (Throwable e) {
+            errln("Test failed with exception: " + e.toString());
+            e.printStackTrace();
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/format/RbnfTest.java b/src/com/ibm/icu/dev/test/format/RbnfTest.java
new file mode 100755
index 0000000..c00250b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/RbnfTest.java
@@ -0,0 +1,768 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/RbnfTest.java,v $ 
+ * $Date: 2002/08/02 20:54:37 $ 
+ * $Revision: 1.13 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.RuleBasedNumberFormat;
+import com.ibm.icu.dev.test.TestFmwk;
+
+import java.util.Locale;
+import java.text.NumberFormat;
+
+public class RbnfTest extends TestFmwk {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1999 IBM Corp.  All rights reserved.";
+
+    public static void main(String[] args) {
+        RbnfTest test = new RbnfTest();
+
+        try {
+            test.run(args);
+        }
+        catch (Throwable e) {
+            System.out.println("Entire test failed because of exception: "
+                               + e.toString());
+            e.printStackTrace();
+        }
+    }
+
+    static String fracRules = 
+        "%main:\n" +
+        // this rule formats the number if it's 1 or more.  It formats
+        // the integral part using a DecimalFormat ("#,##0" puts
+        // thousands separators in the right places) and the fractional
+        // part using %%frac.  If there is no fractional part, it
+        // just shows the integral part.
+        "    x.0: <#,##0<[ >%%frac>];\n" +
+        // this rule formats the number if it's between 0 and 1.  It
+        // shows only the fractional part (0.5 shows up as "1/2," not
+        // "0 1/2")
+        "    0.x: >%%frac>;\n" +
+        // the fraction rule set.  This works the same way as the one in the
+        // preceding example: We multiply the fractional part of the number
+        // being formatted by each rule's base value and use the rule that
+        // produces the result closest to 0 (or the first rule that produces 0).
+        // Since we only provide rules for the numbers from 2 to 10, we know
+        // we'll get a fraction with a denominator between 2 and 10.
+        // "<0<" causes the numerator of the fraction to be formatted
+        // using numerals
+        "%%frac:\n" +
+        "    2: 1/2;\n" +
+        "    3: <0</3;\n" +
+        "    4: <0</4;\n" +
+        "    5: <0</5;\n" +
+        "    6: <0</6;\n" +
+        "    7: <0</7;\n" +
+        "    8: <0</8;\n" +
+        "    9: <0</9;\n" +
+        "   10: <0</10;\n";
+
+    static {
+        // mondo hack
+	char[] fracRulesArr = fracRules.toCharArray();
+        int len = fracRulesArr.length;
+        int change = 2;
+        for (int i = 0; i < len; ++i) {
+            char ch = fracRulesArr[i];
+            if (ch == '\n') {
+                change = 2; // change ok
+            } else if (ch == ':') {
+                change = 1; // change, but once we hit a non-space char, don't change
+            } else if (ch == ' ') {
+                if (change != 0) {
+                    fracRulesArr[i] = (char)0x200e;
+                }
+            } else {
+                if (change == 1) {
+                    change = 0;
+                }
+            }
+        }
+	fracRules = new String(fracRulesArr);
+    }
+
+    static final String durationInSecondsRules =
+        // main rule set for formatting with words
+        "%with-words:\n"
+        // take care of singular and plural forms of "second"
+        + "    0 seconds; 1 second; =0= seconds;\n"
+        // use %%min to format values greater than 60 seconds
+        + "    60/60: <%%min<[, >>];\n"
+        // use %%hr to format values greater than 3,600 seconds
+        // (the ">>>" below causes us to see the number of minutes
+        // when when there are zero minutes)
+        + "    3600/60: <%%hr<[, >>>];\n"
+        // this rule set takes care of the singular and plural forms
+        // of "minute"
+        + "%%min:\n"
+        + "    0 minutes; 1 minute; =0= minutes;\n"
+        // this rule set takes care of the singular and plural forms
+        // of "hour"
+        + "%%hr:\n"
+        + "    0 hours; 1 hour; =0= hours;\n"
+
+        // main rule set for formatting in numerals
+        + "%in-numerals:\n"
+        // values below 60 seconds are shown with "sec."
+        + "    =0= sec.;\n"
+        // higher values are shown with colons: %%min-sec is used for
+        // values below 3,600 seconds...
+        + "    60: =%%min-sec=;\n"
+        // ...and %%hr-min-sec is used for values of 3,600 seconds
+        // and above
+        + "    3600: =%%hr-min-sec=;\n"
+        // this rule causes values of less than 10 minutes to show without
+        // a leading zero
+        + "%%min-sec:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <0<>>;\n"
+        // this rule set is used for values of 3,600 or more.  Minutes are always
+        // shown, and always shown with two digits
+        + "%%hr-min-sec:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <00<>>;\n"
+        + "    3600/60: <#,##0<:>>>;\n"
+        // the lenient-parse rules allow several different characters to be used
+        // as delimiters between hours, minutes, and seconds
+        + "%%lenient-parse:\n"
+        + "    & : = . = ' ' = -;\n";
+
+    public void TestCoverage() {
+        // extra calls to boost coverage numbers
+        RuleBasedNumberFormat fmt0 = new RuleBasedNumberFormat(RuleBasedNumberFormat.SPELLOUT);
+        RuleBasedNumberFormat fmt1 = (RuleBasedNumberFormat)fmt0.clone();
+        RuleBasedNumberFormat fmt2 = new RuleBasedNumberFormat(RuleBasedNumberFormat.SPELLOUT);
+        if (!fmt0.equals(fmt0)) {
+            errln("self equality fails");
+        }
+        if (!fmt0.equals(fmt1)) {
+            errln("clone equality fails");
+        }
+        if (!fmt0.equals(fmt2)) {
+            errln("duplicate equality fails");
+        }
+        String str = fmt0.toString();
+        logln(str);
+
+        RuleBasedNumberFormat fmt3 =  new RuleBasedNumberFormat(durationInSecondsRules);
+
+        if (fmt0.equals(fmt3)) {
+            errln("nonequal fails");
+        }
+        if (!fmt3.equals(fmt3)) {
+            errln("self equal 2 fails");
+        }
+        str = fmt3.toString();
+        logln(str);
+
+        String[] names = fmt3.getRuleSetNames();
+
+        try {
+            fmt3.setDefaultRuleSet(null);
+            fmt3.setDefaultRuleSet("%%foo");
+            errln("sdrf %%foo didn't fail");
+        }
+        catch (Exception e) {
+        }
+
+        try {
+            fmt3.setDefaultRuleSet("%bogus");
+            errln("sdrf %bogus didn't fail");
+        }
+        catch (Exception e) {
+        }
+
+        try {
+            str = fmt3.format(2.3, names[0]);
+            logln(str);
+            str = fmt3.format(2.3, "%%foo");
+            errln("format double %%foo didn't fail");
+        }
+        catch (Exception e) {
+        }
+
+        try {
+            str = fmt3.format(123L, names[0]);
+            logln(str);
+            str = fmt3.format(123L, "%%foo");
+            errln("format double %%foo didn't fail");
+        }
+        catch (Exception e) {
+        }
+
+        RuleBasedNumberFormat fmt4 = new RuleBasedNumberFormat(fracRules, Locale.ENGLISH);
+        RuleBasedNumberFormat fmt5 = new RuleBasedNumberFormat(fracRules, Locale.ENGLISH);
+        str = fmt4.toString();
+        logln(str);
+        if (!fmt4.equals(fmt5)) {
+            errln("duplicate 2 equality failed");
+        }
+        str = fmt4.format(123L);
+        logln(str);
+        try {
+            Number num = fmt4.parse(str);
+            logln(num.toString());
+        }
+        catch (Exception e) {
+            errln("parse caught exception");
+        }
+
+        str = fmt4.format(.000123);
+        logln(str);
+        try {
+            Number num = fmt4.parse(str);
+            logln(num.toString());
+        }
+        catch (Exception e) {
+            errln("parse caught exception");
+        }
+
+        str = fmt4.format(456.000123);
+        logln(str);
+        try {
+            Number num = fmt4.parse(str);
+            logln(num.toString());
+        }
+        catch (Exception e) {
+            errln("parse caught exception");
+        }
+    }
+
+    public void TestUndefinedSpellout() {
+        Locale greek = new Locale("el", "", "");
+        RuleBasedNumberFormat[] formatters = {
+            new RuleBasedNumberFormat(greek, RuleBasedNumberFormat.SPELLOUT),
+            new RuleBasedNumberFormat(greek, RuleBasedNumberFormat.ORDINAL),
+            new RuleBasedNumberFormat(greek, RuleBasedNumberFormat.DURATION),
+        };
+
+        String[] data = {
+            "0",
+            "1",
+            "15",
+            "20",
+            "23",
+            "73",
+            "88",
+            "100",
+            "106",
+            "127",
+            "200",
+            "579",
+            "1,000",
+            "2,000",
+            "3,004",
+            "4,567",
+            "15,943",
+            "105,000",
+            "2,345,678",
+            "-36",
+            "-36.91215",
+            "234.56789"
+        };
+
+        NumberFormat decFormat = NumberFormat.getInstance(Locale.US);
+        for (int j = 0; j < formatters.length; ++j) {
+            com.ibm.icu.text.NumberFormat formatter = formatters[j];
+            logln("formatter[" + j + "]");
+            for (int i = 0; i < data.length; ++i) {
+                try {
+                    String result = formatter.format(decFormat.parse(data[i]));
+                    logln("[" + i + "] " + data[i] + " ==> " + result);
+                }
+                catch (Exception e) {
+                    errln("formatter[" + j + "], data[" + i + "] " + data[i] + " threw exception " + e.getMessage());
+                }
+            }
+        }
+    }
+
+    /**
+     * Perform a simple spot check on the English spellout rules
+     */
+    public void TestEnglishSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.US,
+                                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "one" },
+            { "15", "fifteen" },
+            { "20", "twenty" },
+            { "23", "twenty-three" },
+            { "73", "seventy-three" },
+            { "88", "eighty-eight" },
+            { "100", "one hundred" },
+            { "106", "one hundred and six" },
+            { "127", "one hundred and twenty-seven" },
+            { "200", "two hundred" },
+            { "579", "five hundred and seventy-nine" },
+            { "1,000", "one thousand" },
+            { "2,000", "two thousand" },
+            { "3,004", "three thousand and four" },
+            { "4,567", "four thousand five hundred and sixty-seven" },
+            { "15,943", "fifteen thousand nine hundred and forty-three" },
+            { "2,345,678", "two million, three hundred and forty-five "
+              + "thousand, six hundred and seventy-eight" },
+            { "-36", "minus thirty-six" },
+            { "234.567", "two hundred and thirty-four point five six seven" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "FOurhundred     thiRTY six", "436" },
+            // test spaces before fifty-7 causing lenient parse match of "fifty-" to " fifty"
+            // leaving "-7" for remaining parse, resulting in 2643 as the parse result.
+            { "fifty-7", "57" },
+            { " fifty-7", "57" },
+            { "  fifty-7", "57" },
+            { "2 thousand six HUNDRED   fifty-7", "2,657" },
+            { "fifteen hundred and zero", "1,500" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the English ordinal-abbreviation rules
+     */
+    public void TestOrdinalAbbreviations() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.US,
+                                        RuleBasedNumberFormat.ORDINAL);
+        String[][] testData = {
+            { "1", "1st" },
+            { "2", "2nd" },
+            { "3", "3rd" },
+            { "4", "4th" },
+            { "7", "7th" },
+            { "10", "10th" },
+            { "11", "11th" },
+            { "13", "13th" },
+            { "20", "20th" },
+            { "21", "21st" },
+            { "22", "22nd" },
+            { "23", "23rd" },
+            { "24", "24th" },
+            { "33", "33rd" },
+            { "102", "102nd" },
+            { "312", "312th" },
+            { "12,345", "12,345th" }
+        };
+
+        doTest(formatter, testData, false);
+    }
+
+    /**
+     * Perform a simple spot check on the duration-formatting rules
+     */
+    public void TestDurations() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.US,
+                                        RuleBasedNumberFormat.DURATION);
+        String[][] testData = {
+            { "3,600", "1:00:00" },             //move me and I fail
+            { "0", "0 sec." },
+            { "1", "1 sec." },
+            { "24", "24 sec." },
+            { "60", "1:00" },
+            { "73", "1:13" },
+            { "145", "2:25" },
+            { "666", "11:06" },
+            //            { "3,600", "1:00:00" },
+            { "3,740", "1:02:20" },
+            { "10,293", "2:51:33" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "2-51-33", "10,293" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the Spanish spellout rules
+     */
+    public void TestSpanishSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(new Locale("es", "es",
+                                                   ""), RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "uno" },
+            { "6", "seis" },
+            { "16", "diecis\u00e9is" },
+            { "20", "veinte" },
+            { "24", "veinticuatro" },
+            { "26", "veintis\u00e9is" },
+            { "73", "setenta y tres" },
+            { "88", "ochenta y ocho" },
+            { "100", "cien" },
+            { "106", "ciento seis" },
+            { "127", "ciento veintisiete" },
+            { "200", "doscientos" },
+            { "579", "quinientos setenta y nueve" },
+            { "1,000", "mil" },
+            { "2,000", "dos mil" },
+            { "3,004", "tres mil cuatro" },
+            { "4,567", "cuatro mil quinientos sesenta y siete" },
+            { "15,943", "quince mil novecientos cuarenta y tres" },
+            { "2,345,678", "dos mill\u00f3n trescientos cuarenta y cinco mil "
+              + "seiscientos setenta y ocho"},
+            { "-36", "menos treinta y seis" },
+            { "234.567", "doscientos treinta y cuatro punto cinco seis siete" }
+        };
+
+        doTest(formatter, testData, true);
+    }
+
+    /**
+     * Perform a simple spot check on the French spellout rules
+     */
+    public void TestFrenchSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.FRANCE,
+                                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "un" },
+            { "15", "quinze" },
+            { "20", "vingt" },
+            { "21", "vingt-et-un" },
+            { "23", "vingt-trois" },
+            { "62", "soixante-deux" },
+            { "70", "soixante-dix" },
+            { "71", "soixante et onze" },
+            { "73", "soixante-treize" },
+            { "80", "quatre-vingts" },
+            { "88", "quatre-vingt-huit" },
+            { "100", "cent" },
+            { "106", "cent six" },
+            { "127", "cent vingt-sept" },
+            { "200", "deux cents" },
+            { "579", "cinq cents soixante-dix-neuf" },
+            { "1,000", "mille" },
+            { "1,123", "onze cents vingt-trois" },
+            { "1,594", "mille cinq cents quatre-vingt-quatorze" },
+            { "2,000", "deux mille" },
+            { "3,004", "trois mille quatre" },
+            { "4,567", "quatre mille cinq cents soixante-sept" },
+            { "15,943", "quinze mille neuf cents quarante-trois" },
+            { "2,345,678", "deux million trois cents quarante-cinq mille "
+              + "six cents soixante-dix-huit" },
+            { "-36", "moins trente-six" },
+            { "234.567", "deux cents trente-quatre virgule cinq six sept" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "trente-un", "31" },
+            { "un cents quatre vingt dix huit", "198" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the Swiss French spellout rules
+     */
+    public void TestSwissFrenchSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(new Locale("fr", "CH",
+                                                   ""), RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "un" },
+            { "15", "quinze" },
+            { "20", "vingt" },
+            { "21", "vingt-et-un" },
+            { "23", "vingt-trois" },
+            { "62", "soixante-deux" },
+            { "70", "septante" },
+            { "71", "septante-et-un" },
+            { "73", "septante-trois" },
+            { "80", "octante" },
+            { "88", "octante-huit" },
+            { "100", "cent" },
+            { "106", "cent six" },
+            { "127", "cent vingt-sept" },
+            { "200", "deux cents" },
+            { "579", "cinq cents septante-neuf" },
+            { "1,000", "mille" },
+            { "1,123", "onze cents vingt-trois" },
+            { "1,594", "mille cinq cents nonante-quatre" },
+            { "2,000", "deux mille" },
+            { "3,004", "trois mille quatre" },
+            { "4,567", "quatre mille cinq cents soixante-sept" },
+            { "15,943", "quinze mille neuf cents quarante-trois" },
+            { "2,345,678", "deux million trois cents quarante-cinq mille "
+              + "six cents septante-huit" },
+            { "-36", "moins trente-six" },
+            { "234.567", "deux cents trente-quatre virgule cinq six sept" }
+        };
+
+        doTest(formatter, testData, true);
+    }
+
+    /**
+     * Perform a simple spot check on the Italian spellout rules
+     */
+    public void TestItalianSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.ITALIAN,
+                                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "uno" },
+            { "15", "quindici" },
+            { "20", "venti" },
+            { "23", "ventitre" },
+            { "73", "settantatre" },
+            { "88", "ottantotto" },
+            { "100", "cento" },
+            { "106", "centosei" },
+            { "108", "centotto" },
+            { "127", "centoventisette" },
+            { "181", "centottantuno" },
+            { "200", "duecento" },
+            { "579", "cinquecentosettantanove" },
+            { "1,000", "mille" },
+            { "2,000", "duemila" },
+            { "3,004", "tremilaquattro" },
+            { "4,567", "quattromilacinquecentosessantasette" },
+            { "15,943", "quindicimilanovecentoquarantatre" },
+            { "-36", "meno trentisei" },
+            { "234.567", "duecentotrentiquattro virgola cinque sei sette" }
+        };
+
+        doTest(formatter, testData, true);
+    }
+
+    /**
+     * Perform a simple spot check on the German spellout rules
+     */
+    public void TestGermanSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.GERMANY,
+                                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "eins" },
+            { "15", "f\u00fcnfzehn" },
+            { "20", "zwanzig" },
+            { "23", "dreiundzwanzig" },
+            { "73", "dreiundsiebzig" },
+            { "88", "achtundachtzig" },
+            { "100", "hundert" },
+            { "106", "hundertsechs" },
+            { "127", "hundertsiebenundzwanzig" },
+            { "200", "zweihundert" },
+            { "579", "f\u00fcnfhundertneunundsiebzig" },
+            { "1,000", "tausend" },
+            { "2,000", "zweitausend" },
+            { "3,004", "dreitausendvier" },
+            { "4,567", "viertausendf\u00fcnfhundertsiebenundsechzig" },
+            { "15,943", "f\u00fcnfzehntausendneunhundertdreiundvierzig" },
+            { "2,345,678", "zwei Millionen dreihundertf\u00fcnfundvierzigtausend"
+              + "sechshundertachtundsiebzig" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "ein Tausend sechs Hundert fuenfunddreissig", "1,635" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the German spellout rules
+     */
+    public void TestThaiSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(new Locale("th", "TH", ""),
+                                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "0", "\u0e28\u0e39\u0e19\u0e22\u0e4c" },
+            { "1", "\u0e2b\u0e19\u0e36\u0e48\u0e07" },
+            { "10", "\u0e2a\u0e34\u0e1a" },
+            { "11", "\u0e2a\u0e34\u0e1a\u0e40\u0e2d\u0e47\u0e14" },
+            { "21", "\u0e22\u0e35\u0e48\u0e2a\u0e34\u0e1a\u0e40\u0e2d\u0e47\u0e14" },
+            { "101", "\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e23\u0e49\u0e2d\u0e22\u0e2b\u0e19\u0e36\u0e48\u0e07" },
+            { "1.234", "\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e08\u0e38\u0e14\u0e2a\u0e2d\u0e07\u0e2a\u0e32\u0e21\u0e2a\u0e35\u0e48" },
+        };
+
+        doTest(formatter, testData, true);
+
+        /*
+          formatter.setLenientParseMode(true);
+          String[][] lpTestData = {
+          { "ein Tausend sechs Hundert fuenfunddreissig", "1,635" }
+          };
+          doLenientParseTest(formatter, lpTestData);
+        */
+    }
+
+    public void TestFractionalRuleSet() {
+
+
+        RuleBasedNumberFormat formatter =
+            new RuleBasedNumberFormat(fracRules, Locale.ENGLISH);
+
+        String[][] testData = {
+            { "0", "0" },
+            { ".1", "1/10" },
+            { ".11", "1/9" },
+            { ".125", "1/8" },
+            { ".1428", "1/7" },
+            { ".1667", "1/6" },
+            { ".2", "1/5" },
+            { ".25", "1/4" },
+            { ".333", "1/3" },
+            { ".5", "1/2" },
+            { "1.1", "1 1/10" },
+            { "2.11", "2 1/9" },
+            { "3.125", "3 1/8" },
+            { "4.1428", "4 1/7" },
+            { "5.1667", "5 1/6" },
+            { "6.2", "6 1/5" },
+            { "7.25", "7 1/4" },
+            { "8.333", "8 1/3" },
+            { "9.5", "9 1/2" },
+            { ".2222", "2/9" },
+            { ".4444", "4/9" },
+            { ".5555", "5/9" },
+            { "1.2856", "1 2/7" }
+        };
+        doTest(formatter, testData, false); // exact values aren't parsable from fractions
+    }
+
+    public void TestSwedishSpellout()
+    {
+        Locale locale = new Locale("sv", "", "");
+        RuleBasedNumberFormat formatter = new RuleBasedNumberFormat(locale, RuleBasedNumberFormat.SPELLOUT);
+
+        String[][] testDataDefault = {
+            { "101", "etthundra\u00aden" },
+            { "123", "etthundra\u00adtjugotre" },
+            { "1,001", "ettusen en" },
+            { "1,100", "ettusen etthundra" },
+            { "1,101", "ettusen etthundra\u00aden" },
+            { "1,234", "ettusen tv\u00e5hundra\u00adtrettiofyra" },
+            { "10,001", "tio\u00adtusen en" },
+            { "11,000", "elva\u00adtusen" },
+            { "12,000", "tolv\u00adtusen" },
+            { "20,000", "tjugo\u00adtusen" },
+            { "21,000", "tjugoen\u00adtusen" },
+            { "21,001", "tjugoen\u00adtusen en" },
+            { "200,000", "tv\u00e5hundra\u00adtusen" },
+            { "201,000", "tv\u00e5hundra\u00aden\u00adtusen" },
+            { "200,200", "tv\u00e5hundra\u00adtusen tv\u00e5hundra" },
+            { "2,002,000", "tv\u00e5 miljoner tv\u00e5\u00adtusen" },
+            { "12,345,678", "tolv miljoner trehundra\u00adfyrtiofem\u00adtusen sexhundra\u00adsjuttio\u00e5tta" },
+            { "123,456.789", "etthundra\u00adtjugotre\u00adtusen fyrahundra\u00adfemtiosex komma sju \u00e5tta nio" },
+            { "-12,345.678", "minus tolv\u00adtusen trehundra\u00adfyrtiofem komma sex sju \u00e5tta" }
+        };
+
+        logln("testing default rules");
+        doTest(formatter, testDataDefault, true);
+
+        String[][] testDataNeutrum = {
+            { "101", "etthundra\u00adett" },
+            { "1,001", "ettusen ett" },
+            { "1,101", "ettusen etthundra\u00adett" },
+            { "10,001", "tio\u00adtusen ett" },
+            { "21,001", "tjugoen\u00adtusen ett" }
+        };
+
+        formatter.setDefaultRuleSet("%neutrum");
+        logln("testing neutrum rules");
+        doTest(formatter, testDataNeutrum, true);
+
+        String[][] testDataYear = {
+            { "101", "etthundra\u00adett" },
+            { "900", "niohundra" },
+            { "1,001", "tiohundra\u00adett" },
+            { "1,100", "elvahundra" },
+            { "1,101", "elvahundra\u00adett" },
+            { "1,234", "tolvhundra\u00adtrettiofyra" },
+            { "2,001", "tjugohundra\u00adett" },
+            { "10,001", "tio\u00adtusen ett" }
+        };
+
+        formatter.setDefaultRuleSet("%year");
+        logln("testing year rules");
+        doTest(formatter, testDataYear, true);
+    }
+
+    void doTest(RuleBasedNumberFormat formatter, String[][] testData,
+                boolean testParsing) {
+        NumberFormat decFmt = NumberFormat.getInstance(Locale.US);
+
+        try {
+            for (int i = 0; i < testData.length; i++) {
+                String number = testData[i][0];
+                String expectedWords = testData[i][1];
+                logln("test[" + i + "] number: " + number + " target: " + expectedWords);
+                Number num = decFmt.parse(number);
+                String actualWords = formatter.format(num);
+
+                if (!actualWords.equals(expectedWords)) {
+                    errln("Spot check failed: for " + number + ", expected "
+                          + expectedWords + ", but got " +
+                          actualWords);
+                }
+                else if (testParsing) {
+                    String actualNumber = decFmt.format(formatter
+                                                        .parse(actualWords));
+
+                    if (!actualNumber.equals(number)) {
+                        errln("Spot check failed: for " + actualWords +
+                              ", expected " + number + ", but got " +
+                              actualNumber);
+                    }
+                }
+            }
+        }
+        catch (Throwable e) {
+            e.printStackTrace();
+            errln("Test failed with exception: " + e.toString());
+        }
+    }
+
+    void doLenientParseTest(RuleBasedNumberFormat formatter,
+                            String[][] testData) {
+        NumberFormat decFmt = NumberFormat.getInstance(Locale.US);
+
+        try {
+            for (int i = 0; i < testData.length; i++) {
+                String words = testData[i][0];
+                String expectedNumber = testData[i][1];
+                String actualNumber = decFmt.format(formatter.parse(words));
+
+                if (!actualNumber.equals(expectedNumber)) {
+                    errln("Lenient-parse spot check failed: for "
+                          + words + ", expected " + expectedNumber
+                          + ", but got " + actualNumber);
+                }
+            }
+        }
+        catch (Throwable e) {
+            errln("Test failed with exception: " + e.toString());
+            e.printStackTrace();
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java b/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java
new file mode 100755
index 0000000..770456e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java
@@ -0,0 +1,100 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java,v $
+ * $Date: 2002/02/22 00:28:11 $
+ * $Revision: 1.1 $
+ *
+ *****************************************************************************************
+ */
+ 
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+import java.io.*;
+
+/**
+ * @version 	1.0
+ * @author Ram Viswanadha
+ */
+public class WriteNumberFormatSerialTestData {
+	static final String header="/*\n" +
+							   " *******************************************************************************\n"+
+							   " * Copyright (C) 2001, International Business Machines Corporation and         *\n"+
+							   " * others. All Rights Reserved.                                                *\n"+
+							   " *******************************************************************************\n"+
+							   " * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java,v $\n"+ 
+							   " * $Date: 2002/02/22 00:28:11 $\n"+ 
+							   " * $Revision: 1.1 $\n"+
+							   " *\n"+
+							   " *****************************************************************************************\n"+
+							   " */\n\n"+
+							   "package com.ibm.icu.dev.test.format;\n\n"+
+								
+							   "public class NumberFormatSerialTestData {\n"+
+							   "    //get Content\n"+
+							   "    public static byte[][] getContent() {\n"+
+							   "	        return content;\n"+
+							   "    }\n";
+							  
+	static final String footer ="\n    final static byte[][] content = {generalInstance, currencyInstance, percentInstance, scientificInstance};\n"+
+								"}\n";						   
+	public static void main(String[] args){
+		NumberFormat nf 	= NumberFormat.getInstance(Locale.US);
+		NumberFormat nfc	= NumberFormat.getCurrencyInstance(Locale.US);
+		NumberFormat nfp 	= NumberFormat.getPercentInstance(Locale.US);
+		NumberFormat nfsp 	= NumberFormat.getScientificInstance(Locale.US);
+		
+		try{
+			FileOutputStream file = new FileOutputStream("NumberFormatSerialTestData.java");
+			file.write(header.getBytes());
+			write(file,(Object)nf,"generalInstance", "//NumberFormat.getInstance(Locale.US)");
+			write(file,(Object)nfc,"currencyInstance","//NumberFormat.getCurrencyInstance(Locale.US)");
+			write(file,(Object)nfp,"percentInstance","//NumberFormat.getPercentInstance(Locale.US)");
+			write(file,(Object)nfsp,"scientificInstance","//NumberFormat.getScientificInstance(Locale.US)");
+			file.write(footer.getBytes());			
+			file.close();
+		}catch( Exception e){
+			System.out.println(e.getMessage());
+			e.printStackTrace();
+		}
+	}
+	private static void write(FileOutputStream file,Object o ,String name,String comment){
+		try{
+		    ByteArrayOutputStream bts =  new ByteArrayOutputStream();
+			ObjectOutputStream os = new ObjectOutputStream(bts);	
+			os.writeObject((Object)o);
+			os.flush();
+			os.close();
+			byte[] myArr = bts.toByteArray();
+			String temp = new String(myArr);
+			System.out.println("    "+comment+ " :");
+			/*System.out.println("minimumIntegerDigits : "  + (temp.indexOf("minimumIntegerDigits")+"minimumIntegerDigits".length()));
+			System.out.println("maximumIntegerDigits : "  + (temp.indexOf("maximumIntegerDigits")+"maximumIntegerDigits".length()));
+			System.out.println("minimumFractionDigits : " + (temp.indexOf("minimumFractionDigits")+"minimumFractionDigits".length()));
+			System.out.println("maximumFractionDigits : " + (temp.indexOf("maximumFractionDigits")+"maximumFractionDigits".length()));
+			*/
+			//file.write(myArr);
+			file.write(("\n    "+comment).getBytes());
+			file.write(new String("\n    static byte[] "+name+" = new byte[]{ \n").getBytes("UTF-8"));
+			file.write( "        ".getBytes());
+			for(int i=0; i<myArr.length; i++){
+				file.write(String.valueOf((int)myArr[i]).getBytes());
+				file.write( ", ".getBytes());
+				if((i+1)%20 == 0){
+					file.write("\n".getBytes());
+					file.write( "        ".getBytes());
+				}
+			}
+			file.write(new String("\n    };\n").getBytes("UTF-8"));
+		}catch( Exception e){
+			System.out.println(e.getMessage());
+			e.printStackTrace();
+		}
+	
+	}
+}
diff --git a/src/com/ibm/icu/dev/test/iterator/TestUCharacterIterator.java b/src/com/ibm/icu/dev/test/iterator/TestUCharacterIterator.java
new file mode 100644
index 0000000..503b14d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/iterator/TestUCharacterIterator.java
@@ -0,0 +1,586 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/iterator/TestUCharacterIterator.java,v $
+ * $Date: 2002/08/13 21:57:05 $
+ * $Revision: 1.6 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.iterator;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.UCharacterIterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.StringCharacterIterator;
+import com.ibm.icu.text.ReplaceableString;
+import java.text.CharacterIterator;
+import com.ibm.icu.impl.UnicodeCharacterIterator;
+
+/**
+ * @author ram
+ *
+ * To change this generated comment edit the template variable "typecomment":
+ * Window>Preferences>Java>Templates.
+ * To enable and disable the creation of type comments go to
+ * Window>Preferences>Java>Code Generation.
+ */
+public class TestUCharacterIterator extends TestFmwk{
+
+    // constructor -----------------------------------------------------
+  
+    /**
+     * Constructor
+     */
+    public TestUCharacterIterator()
+    {
+    }
+  
+    // public methods --------------------------------------------------
+  
+    /**
+    * Testing cloning
+    */
+    public void TestClone() throws CloneNotSupportedException
+    {
+         UCharacterIterator iterator = UCharacterIterator.getInstance("testing");
+         UCharacterIterator cloned = (UCharacterIterator)iterator.clone();
+         int completed = 0;
+         while (completed != UCharacterIterator.DONE) {
+            completed = iterator.next();
+            if (completed != cloned.next()) {
+                errln("Cloned operation failed");
+            }
+         }
+    }
+    public void getText(UCharacterIterator iterator, String result){
+        /* test getText */
+        char[] buf= new char[1];
+		for(;;){
+		    try{
+		        iterator.getText(buf);
+		        break;
+		    }catch(IndexOutOfBoundsException e){
+		        buf = new char[iterator.getLength()];
+		    }
+		}
+        if(result.compareTo(new String(buf,0,iterator.getLength()))!=0){
+            errln("getText failed for iterator");
+        }
+    }
+    
+    /**
+     * Testing iteration
+     */
+    public void TestIteration()
+    {
+        UCharacterIterator iterator  = UCharacterIterator.getInstance(
+                                                       ITERATION_STRING_);
+        UCharacterIterator iterator2 = UCharacterIterator.getInstance(
+                                                       ITERATION_STRING_);
+        iterator.setToStart();                                               
+        if (iterator.current() != ITERATION_STRING_.charAt(0)) {
+            errln("Iterator failed retrieving first character");
+        }
+        iterator.setToLimit(); 
+        if (iterator.previous() != ITERATION_STRING_.charAt(
+                                       ITERATION_STRING_.length() - 1)) {
+            errln("Iterator failed retrieving last character");
+        }                                               
+        if (iterator.getLength() != ITERATION_STRING_.length()) {
+            errln("Iterator failed determining begin and end index");
+        }  
+        iterator2.setIndex(0);
+        iterator.setIndex(0);
+        int ch = 0;
+        while (ch != UCharacterIterator.DONE) {
+            int index = iterator2.getIndex();
+            ch = iterator2.nextCodePoint();
+            if (index != ITERATION_SUPPLEMENTARY_INDEX) {
+                if (ch != (int)iterator.next() && 
+                    ch != UCharacterIterator.DONE) {
+                    errln("Error mismatch in next() and nextCodePoint()"); 
+                }
+            }
+            else {
+                if (UTF16.getLeadSurrogate(ch) != iterator.next() ||
+                    UTF16.getTrailSurrogate(ch) != iterator.next()) {
+                    errln("Error mismatch in next and nextCodePoint for " +
+                          "supplementary characters");
+                }
+            }
+        }
+        iterator.setIndex(ITERATION_STRING_.length());
+        iterator2.setIndex(ITERATION_STRING_.length());
+        while (ch != UCharacterIterator.DONE) {
+            int index = iterator2.getIndex();
+            ch = iterator2.previousCodePoint();
+            if (index != ITERATION_SUPPLEMENTARY_INDEX) {
+                if (ch != (int)iterator.previous() && 
+                    ch != UCharacterIterator.DONE) {
+                    errln("Error mismatch in previous() and " +
+                          "previousCodePoint()"); 
+                }
+            }
+            else {
+                if (UTF16.getLeadSurrogate(ch) != iterator.previous() || 
+                    UTF16.getTrailSurrogate(ch) != iterator.previous()) {
+                    errln("Error mismatch in previous and " +
+                          "previousCodePoint for supplementary characters");
+                }
+            }
+        }
+    }
+    
+    public static void main(String[] arg)
+    {
+        try
+        {
+            TestUCharacterIterator test = new TestUCharacterIterator();
+            test.run(arg);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+    
+    //Tests for new API for utf-16 support 
+	public void TestIterationUChar32() {
+	    String text="\u0061\u0062\ud841\udc02\u20ac\ud7ff\ud842\udc06\ud801\udc00\u0061";
+	    int c;
+	    int i;
+	    {
+	        UCharacterIterator iter = UCharacterIterator.getInstance(text);
+	
+	        String iterText = iter.getText();
+	        if (!iterText.equals(text))
+	          errln("iter.getText() failed");
+	        
+            iter.setIndex(1);
+	        if (iter.currentCodePoint() != UTF16.charAt(text,1))
+	            errln("Iterator didn't start out in the right place.");
+	
+	        iter.setToStart();
+	        c=iter.currentCodePoint();
+            i=0;
+	        i=iter.moveCodePointIndex(1);
+	        c=iter.currentCodePoint();
+	        if(c != UTF16.charAt(text,1) || i!=1)
+	            errln("moveCodePointIndex(1) didn't work correctly expected "+ hex(c) +" got "+hex(UTF16.charAt(text,1)) + " i= " + i);
+	
+	        i=iter.moveCodePointIndex(2);
+	        c=iter.currentCodePoint();
+	        if(c != UTF16.charAt(text,4) || i!=4)
+	            errln("moveCodePointIndex(2) didn't work correctly expected "+ hex(c) +" got "+hex(UTF16.charAt(text,4)) + " i= " + i);
+                
+	        i=iter.moveCodePointIndex(-2);
+	        c=iter.currentCodePoint();
+	        if(c != UTF16.charAt(text,1) || i!=1)
+                 errln("moveCodePointIndex(-2) didn't work correctly expected "+ hex(c) +" got "+hex(UTF16.charAt(text,1)) + " i= " + i);
+
+	        iter.setToLimit();
+	        i=iter.moveCodePointIndex(-2);
+	        c=iter.currentCodePoint();
+	        if(c != UTF16.charAt(text,(text.length()-3)) || i!=(text.length()-3))
+                errln("moveCodePointIndex(-2) didn't work correctly expected "+ hex(c) +" got "+hex(UTF16.charAt(text,(text.length()-3)) ) + " i= " + i);
+	        
+	        iter.setToStart();
+	        c = iter.currentCodePoint();
+	        i = 0;
+	
+	        //testing first32PostInc, nextCodePointPostInc, setTostart
+	        i = 0;
+	        iter.setToStart();
+	        c =iter.next();
+            if(c != UTF16.charAt(text,i))
+	            errln("first32PostInc failed.  Expected->"+hex(UTF16.charAt(text,i))+" Got-> "+hex(c));
+	        if(iter.getIndex() != UTF16.getCharCount(c) + i)
+	            errln("getIndex() after first32PostInc() failed");
+	
+	        iter.setToStart();
+	        i=0;
+	        if (iter.getIndex() != 0)
+	            errln("setToStart failed");
+	       
+	        logln("Testing forward iteration...");
+	        do {
+	            if (c != UCharacterIterator.DONE)
+	                c = iter.nextCodePoint();
+	
+	            if(c != UTF16.charAt(text,i))
+	                errln("Character mismatch at position "+i+", iterator has "+hex(c)+", string has "+hex(UTF16.charAt(text,i)));
+    
+	            i+=UTF16.getCharCount(c);
+	            if(iter.getIndex() != i)
+	                errln("getIndex() aftr nextCodePointPostInc() isn't working right");
+                c = iter.currentCodePoint();                   
+                if( c!=UCharacterIterator.DONE && c != UTF16.charAt(text,i))
+                    errln("current() after nextCodePointPostInc() isn't working right");
+
+	        } while (c!=UCharacterIterator.DONE);
+	        c=iter.nextCodePoint();
+	        if(c!= UCharacterIterator.DONE)
+	            errln("nextCodePointPostInc() didn't return DONE at the beginning");
+	
+	
+	    }
+	}  
+    
+    class UCharIterator {
+    
+       public UCharIterator(int[] src, int len, int index){
+            
+            s=src;
+            length=len;
+            i=index;
+       }
+    
+        public int current() {
+            if(i<length) {
+                return s[i];
+            } else {
+                return -1;
+            }
+        }
+    
+        public int next() {
+            if(i<length) {
+                return s[i++];
+            } else {
+                return -1;
+            }
+        }
+    
+        public int previous() {
+            if(i>0) {
+                return s[--i];
+            } else {
+                return -1;
+            }
+        }
+    
+        public int getIndex() {
+            return i;
+        }
+    
+        private int[] s;
+        private int length, i;
+    };
+    // src and expect strings
+    private final char src[]={
+        UTF16.getLeadSurrogate(0x2f999), UTF16.getTrailSurrogate(0x2f999),
+        UTF16.getLeadSurrogate(0x1d15f), UTF16.getTrailSurrogate(0x1d15f),
+        0xc4,
+        0x1ed0
+    };
+    public void TestPreviousNext(){
+        // iterators
+        UCharacterIterator iter1 = UCharacterIterator.getInstance(new ReplaceableString(new String(src)));
+        UCharacterIterator iter2 = UCharacterIterator.getInstance(src/*char array*/);
+        UCharacterIterator iter3 = UCharacterIterator.getInstance(new StringCharacterIterator(new String(src)));
+        UCharacterIterator iter4 = UCharacterIterator.getInstance(new StringBuffer(new String(src)));
+        previousNext(iter1);
+        previousNext(iter2);
+        previousNext(iter3);
+        previousNext(iter4);
+        getText(iter1,new String(src));
+        getText(iter2,new String(src));
+        getText(iter3,new String(src));
+        /* getCharacterIterator */
+        CharacterIterator citer1 = iter1.getCharacterIterator();
+        CharacterIterator citer2 = iter2.getCharacterIterator();
+        CharacterIterator citer3 = iter3.getCharacterIterator();
+        if(citer1.first() !=iter1.current()){
+            errln("getCharacterIterator for iter1 failed");
+        }
+        if(citer2.first() !=iter2.current()){
+            errln("getCharacterIterator for iter2 failed");
+        }
+        if(citer3.first() !=iter3.current()){
+            errln("getCharacterIterator for iter3 failed");
+        }
+        /* Test clone()  && moveIndex()*/
+        try{
+	        UCharacterIterator clone1 = (UCharacterIterator)iter1.clone();
+	        UCharacterIterator clone2 = (UCharacterIterator)iter2.clone();
+	        UCharacterIterator clone3 = (UCharacterIterator)iter3.clone();
+	        if(clone1.moveIndex(3)!=iter1.moveIndex(3)){
+	            errln("moveIndex for iter1 failed");
+	        }
+	        if(clone2.moveIndex(3)!=iter2.moveIndex(3)){
+	            errln("moveIndex for iter2 failed");
+	        }
+	        if(clone3.moveIndex(3)!=iter3.moveIndex(3)){
+	            errln("moveIndex for iter1 failed");
+	        }
+        }catch (Exception e){
+            errln("could not clone the iterator");
+        }
+    }
+    public void previousNext(UCharacterIterator iter) {
+
+        int expect[]={
+            0x2f999,
+            0x1d15f,
+            0xc4,
+            0x1ed0
+        };
+    
+        // expected src indexes corresponding to expect indexes
+        int expectIndex[]={
+            0,0,
+            1,1,
+            2,
+            3,
+            4 //needed 
+        };
+    
+        // initial indexes into the src and expect strings
+        
+        final int SRC_MIDDLE=4;
+        final int EXPECT_MIDDLE=2;
+        
+    
+        // movement vector
+        // - for previous(), 0 for current(), + for next()
+        // not const so that we can terminate it below for the error message
+        String moves="0+0+0--0-0-+++0--+++++++0--------";
+    
+        
+        UCharIterator iter32 = new UCharIterator(expect, expect.length, 
+                                                     EXPECT_MIDDLE);
+    
+        int c1, c2;
+        char m;
+    
+        // initially set the indexes into the middle of the strings
+        iter.setIndex(SRC_MIDDLE);
+    
+        // move around and compare the iteration code points with
+        // the expected ones
+        int movesIndex =0;
+        while(movesIndex<moves.length()) {
+            m=moves.charAt(movesIndex++);
+            if(m=='-') {
+                c1=iter.previousCodePoint();
+                c2=iter32.previous();
+            } else if(m=='0') {
+                c1=iter.currentCodePoint();
+                c2=iter32.current();
+            } else  {// m=='+' 
+                c1=iter.nextCodePoint();
+                c2=iter32.next();
+            }
+    
+            // compare results
+            if(c1!=c2) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: mismatch in Normalizer iteration at "+history+": "
+                      +"got c1= " + hex(c1) +" != expected c2= "+ hex(c2));
+                break;
+            }
+    
+            // compare indexes
+            if(expectIndex[iter.getIndex()]!=iter32.getIndex()) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: index mismatch in Normalizer iteration at "
+                      +history+ " : "+ "Normalizer index " +iter.getIndex()
+                      +" expected "+ expectIndex[iter32.getIndex()]);
+                break;
+            }
+        }
+    }
+    public void TestUnicodeCharacaterIterator(){
+        int expect[]={
+            0x2f999,
+            0x1d15f,
+            0xc4,
+            0x1ed0
+        };
+    
+        // expected src indexes corresponding to expect indexes
+        int expectIndex[]={
+            0,0,
+            1,1,
+            2,
+            3,
+            4 //needed 
+        };
+    
+        // initial indexes into the src and expect strings
+        
+        final int SRC_MIDDLE=4;
+        final int EXPECT_MIDDLE=2;
+        
+    
+        // movement vector
+        // - for previous(), 0 for current(), + for next()
+        // not const so that we can terminate it below for the error message
+        String moves="0+0+0--0-0-+++0--+++++++0--------";
+    
+        
+        UCharIterator iter32 = new UCharIterator(expect, expect.length, 
+                                                     EXPECT_MIDDLE);
+        
+        UnicodeCharacterIterator iter = new UnicodeCharacterIterator(new String(src)); 
+        int c1, c2;
+        char m;
+      
+        // initially set the indexes into the middle of the strings
+        iter.setIndex(SRC_MIDDLE);
+    
+        // move around and compare the iteration code points with
+        // the expected ones
+        int movesIndex =0;
+        while(movesIndex<moves.length()) {
+            m=moves.charAt(movesIndex++);
+            if(m=='-') {
+                c1=iter.previousCodePoint();
+                c2=iter32.previous();
+            } else if(m=='0') {
+                c1=iter.currentCodePoint();
+                c2=iter32.current();
+            } else  {// m=='+' 
+                c1=iter.nextCodePoint();
+                c2=iter32.next();
+            }
+    
+            // compare results
+            if(c1!=c2) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: mismatch in Normalizer iteration at "+history+": "
+                      +"got c1= " + hex(c1) +" != expected c2= "+ hex(c2));
+                break;
+            }
+    
+            // compare indexes
+            if(expectIndex[iter.getIndex()]!=iter32.getIndex()) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: index mismatch in Normalizer iteration at "
+                      +history+ " : "+ "Normalizer index " +iter.getIndex()
+                      +" expected "+ expectIndex[iter32.getIndex()]);
+                break;
+            }
+        }
+        {
+	        //test previous code point
+	        char[] src = new char[]{ '\uDC00','\uD800','\uDC01','\uD802','\uDC02','\uDC03'};
+	        UnicodeCharacterIterator iter1 = new UnicodeCharacterIterator(new String(src));
+	        iter1.setIndex(1);
+	        int ch;
+	        // this should never go into a infinite loop
+	        // if it does then we have a problem
+	        while((ch=iter1.previousCodePoint())!=iter.DONE_CODEPOINT){
+	            if(ch!=0xDc00){
+	                errln("iter.previousCodePoint() failed");
+	            }
+	        }
+	        iter1.setIndex(5);
+	        while((ch=iter1.nextCodePoint()) !=iter.DONE_CODEPOINT){
+	            if(ch!= 0xDC03){
+	                errln("iter.nextCodePoint() failed");
+	            } 
+	        }      
+	    }
+    }
+    public void TestUCharacterIteratorWrapper(){
+        String source ="asdfasdfjoiuyoiuy2341235679886765";
+        UCharacterIterator it = UCharacterIterator.getInstance(source);
+        CharacterIterator wrap_ci = it.getCharacterIterator();
+        CharacterIterator ci = new StringCharacterIterator(source);
+        wrap_ci.setIndex(10);
+        ci.setIndex(10);
+        String moves="0+0+0--0-0-+++0--+++++++0--------++++0000----0-";
+        int c1, c2;
+        char m;
+        int movesIndex =0;
+        
+        while(movesIndex<moves.length()) {
+            m=moves.charAt(movesIndex++);
+            if(m=='-') {
+                c1=wrap_ci.previous();
+                c2=ci.previous();
+            } else if(m=='0') {
+                c1=wrap_ci.current();
+                c2=ci.current();
+            } else  {// m=='+' 
+                c1=wrap_ci.next();
+                c2=ci.next();
+            }
+    
+            // compare results
+            if(c1!=c2) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: mismatch in Normalizer iteration at "+history+": "
+                      +"got c1= " + hex(c1) +" != expected c2= "+ hex(c2));
+                break;
+            }
+    
+            // compare indexes
+            if(wrap_ci.getIndex()!=ci.getIndex()) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: index mismatch in Normalizer iteration at "
+                      +history+ " : "+ "Normalizer index " +wrap_ci.getIndex()
+                      +" expected "+ ci.getIndex());
+                break;
+            }
+        }
+        if(ci.first()!=wrap_ci.first()){
+            errln("CharacterIteratorWrapper.first() failed. expected: " + ci.first() + " got: " +wrap_ci.first());
+        }
+        if(ci.last()!=wrap_ci.last()){
+            errln("CharacterIteratorWrapper.last() failed expected: " + ci.last() + " got: " +wrap_ci.last());
+        }
+        if(ci.getBeginIndex()!=wrap_ci.getBeginIndex()){
+            errln("CharacterIteratorWrapper.getBeginIndex() failed expected: " + ci.getBeginIndex() + " got: " +wrap_ci.getBeginIndex());
+        }
+        if(ci.getEndIndex()!=wrap_ci.getEndIndex()){
+            errln("CharacterIteratorWrapper.getEndIndex() failed expected: " + ci.getEndIndex() + " got: " +wrap_ci.getEndIndex());
+        }
+        try{
+            CharacterIterator cloneWCI = (CharacterIterator) wrap_ci.clone();
+            if(wrap_ci.getIndex()!=cloneWCI.getIndex()){
+                errln("CharacterIteratorWrapper.clone() failed expected: " +wrap_ci.getIndex() + " got: " + cloneWCI.getIndex());
+            }
+        }catch(Exception e){
+             errln("CharacterIterator.clone() failed");
+        }
+    }
+    // private data members ---------------------------------------------
+    
+    private static final String ITERATION_STRING_ =
+                                        "Testing 1 2 3 \ud800\udc00 456";
+    private static final int ITERATION_SUPPLEMENTARY_INDEX = 14;
+    
+    public void TestJitterbug1952(){
+        //test previous code point
+        char[] src = new char[]{ '\uDC00','\uD800','\uDC01','\uD802','\uDC02','\uDC03'};
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        iter.setIndex(1);
+        int ch;
+        // this should never go into a infinite loop
+        // if it does then we have a problem
+        while((ch=iter.previousCodePoint())!=iter.DONE){
+	        if(ch!=0xDc00){
+	            errln("iter.previousCodePoint() failed");
+	        }
+        }
+        iter.setIndex(5);
+        while((ch=iter.nextCodePoint()) !=iter.DONE){
+	        if(ch!= 0xDC03){
+	            errln("iter.nextCodePoint() failed");
+	        } 
+        }      
+    }
+        
+}
diff --git a/src/com/ibm/icu/dev/test/lang/TestUScript.java b/src/com/ibm/icu/dev/test/lang/TestUScript.java
new file mode 100755
index 0000000..652795f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/TestUScript.java
@@ -0,0 +1,324 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.lang.UScriptRun;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.dev.test.TestFmwk;
+import java.util.Locale;
+
+public class TestUScript extends TestFmwk{
+  
+    /**
+    * Constructor
+    */
+    public TestUScript()
+    {
+    }
+    
+    public static void main(String[] args) throws Exception {
+        new TestUScript().run(args);
+    }
+    public void TestLocaleGetCode(){
+        final Locale[] testNames={
+        /* test locale */
+        new Locale("en",""), new Locale("en","US"),
+        new Locale("sr",""), new Locale("ta","") , 
+        new Locale("te","IN"),
+        new Locale("hi",""), 
+        new Locale("he",""), new Locale("ar",""),
+        new Locale("abcde",""),
+        new Locale("abcde","cdef")
+        };
+        final int[] expected ={
+                /* locales should return */
+                UScript.LATIN, UScript.LATIN, 
+                UScript.CYRILLIC, UScript.TAMIL, 
+                UScript.TELUGU,UScript.DEVANAGARI, 
+                UScript.HEBREW, UScript.ARABIC,
+                UScript.INVALID_CODE,UScript.INVALID_CODE
+        };
+        int i =0;
+        int numErrors =0;
+
+        for( ; i<testNames.length; i++){
+            int[] code = UScript.getCode(testNames[i]);
+            if((code!=null) && (code[0] != expected[i])){
+                logln("Error getting script code Got: " +code[0] + " Expected: " +expected[i] +" for name "+testNames[i]);
+                numErrors++;
+            }
+        }
+        if(numErrors >0 ){
+            errln("Number of Errors in UScript.getCode() : " + numErrors);
+        }            
+    }
+    public void TestMultipleCode(){
+        final String[] testNames = { "ja" ,"ko_KR","zh","zh_TW"};
+        final int[][] expected = {
+                                {UScript.KATAKANA,UScript.HIRAGANA,UScript.HAN},
+                                {UScript.HANGUL, UScript.HAN},
+                                {UScript.HAN},
+                                {UScript.HAN,UScript.BOPOMOFO}
+                              };
+        for(int i=0; i<testNames.length;i++){
+            int[] code = UScript.getCode(testNames[i]);
+            int[] expt = (int[]) expected[i];
+            for(int j =0; j< code.length;j++){
+                if(code[j]!=expt[j]){
+                    logln("Error getting script code Got: " +code[j] + " Expected: " +expt[j] +" for name "+testNames[i]);
+                }
+            }
+        }
+    }
+    public void TestGetCode(){
+
+        final String[] testNames={
+            /* test locale */                
+            "en", "en_US", "sr", "ta","  ___    ---ta" , "te_IN",                
+            "hi", "he", "ar",
+            /* test abbr */
+            "Hani", "Hang","Hebr","Hira",
+            "Knda","Kana","Khmr","Lao",
+            "Latn",/*"Latf","Latg",*/ 
+            "Mlym", "Mong",
+                
+            /* test names */
+            "CYRILLIC","DESERET","DEVANAGARI","ETHIOPIC","GEORGIAN", 
+            "GOTHIC",  "GREEK",  "GUJARATI", "COMMON", "INHERITED", 
+            /* test lower case names */
+            "malayalam", "mongolian", "myanmar", "ogham", "old-italic",
+            "oriya",     "runic",     "sinhala", "syriac","tamil",     
+            "telugu",    "thaana",    "thai",    "tibetan", 
+            /* test the bounds*/
+            "ucas", "arabic","Yi","Zyyy"
+        };
+        final int[] expected ={
+            /* locales should return */
+            UScript.LATIN, UScript.LATIN, 
+            UScript.CYRILLIC, UScript.TAMIL, UScript.TAMIL, 
+            UScript.TELUGU,UScript.DEVANAGARI, 
+            UScript.HEBREW, UScript.ARABIC,
+            /* abbr should return */
+            UScript.HAN, UScript.HANGUL, UScript.HEBREW, UScript.HIRAGANA,
+            UScript.KANNADA, UScript.KATAKANA, UScript.KHMER, UScript.LAO,
+            UScript.LATIN,/* UScript.LATIN, UScript.LATIN,*/ 
+            UScript.MALAYALAM, UScript.MONGOLIAN,
+            /* names should return */
+            UScript.CYRILLIC, UScript.DESERET, UScript.DEVANAGARI, UScript.ETHIOPIC, UScript.GEORGIAN,
+            UScript.GOTHIC, UScript.GREEK, UScript.GUJARATI, UScript.COMMON, UScript.INHERITED,
+            /* lower case names should return */    
+            UScript.MALAYALAM, UScript.MONGOLIAN, UScript.MYANMAR, UScript.OGHAM, UScript.OLD_ITALIC,
+            UScript.ORIYA, UScript.RUNIC, UScript.SINHALA, UScript.SYRIAC, UScript.TAMIL,
+            UScript.TELUGU, UScript.THAANA, UScript.THAI, UScript.TIBETAN,
+            /* bounds */
+            UScript.UCAS, UScript.ARABIC, UScript.YI, UScript.COMMON	
+        };
+        int i =0;
+        int numErrors =0;
+
+        for( ; i<testNames.length; i++){
+            int[] code = UScript.getCode(testNames[i]);
+            if((code!=null) && (code[0] != expected[i])){
+                logln("Error getting script code Got: " +code[0] + " Expected: " +expected[i] +" for name "+testNames[i]);
+                numErrors++;
+            }
+        }
+        if(numErrors >0 ){
+            errln("Number of Errors in UScript.getCode() : " + numErrors);
+        }
+    }
+    public void TestGetName(){
+        
+        final int[] testCodes={
+            /* names should return */
+            UScript.CYRILLIC, UScript.DESERET, UScript.DEVANAGARI, UScript.ETHIOPIC, UScript.GEORGIAN,
+            UScript.GOTHIC, UScript.GREEK, UScript.GUJARATI,
+        };
+
+        final String[] expectedNames={
+              
+            /* test names */
+            "CYRILLIC","DESERET","DEVANAGARI","ETHIOPIC","GEORGIAN", 
+            "GOTHIC",  "GREEK",  "GUJARATI", 
+        };
+        int i =0;
+
+        while(i< testCodes.length){
+            String scriptName  = UScript.getName(testCodes[i]);
+            int numErrors=0;
+            if(!expectedNames[i].equals(scriptName)){
+                logln("Error getting abbreviations Got: " +scriptName +" Expected: "+expectedNames[i]);
+                numErrors++;
+            }
+            if(numErrors > 0){
+                if(numErrors >0 ){
+                    errln("Errors UScript.getShorName() : " + numErrors);
+                }
+            }
+            i++;
+        }
+
+    }
+    public void TestGetShortName(){
+        final int[] testCodes={
+            /* abbr should return */
+            UScript.HAN, UScript.HANGUL, UScript.HEBREW, UScript.HIRAGANA,
+            UScript.KANNADA, UScript.KATAKANA, UScript.KHMER, UScript.LAO,
+            UScript.LATIN, 
+            UScript.MALAYALAM, UScript.MONGOLIAN,
+        };
+
+        final String[] expectedAbbr={
+              /* test abbr */
+            "Hani", "Hang","Hebr","Hira",
+            "Knda","Kana","Khmr","Lao",
+            "Latn",
+            "Mlym", "Mong",
+        };
+        int i=0;
+        while(i<testCodes.length){
+            String  shortName = UScript.getShortName(testCodes[i]);
+            int numErrors=0;
+            if(!expectedAbbr[i].equals(shortName)){
+                logln("Error getting abbreviations Got: " +shortName+ " Expected: " +expectedAbbr[i]);
+                numErrors++;
+            }
+            if(numErrors > 0){
+                if(numErrors >0 ){
+                    errln("Errors UChar.getScriptAbbr() : "+numErrors);
+                }
+            }
+            i++;
+        }
+
+    }
+    public void TestGetScript(){
+        int codepoints[] = {
+                0x0000FF9D, 
+                0x0000FFBE, 
+                0x0000FFC7, 
+                0x0000FFCF, 
+                0x0000FFD7, 
+                0x0000FFDC, 
+                0x00010300,
+                0x00010330,
+                0x0001034A,
+                0x00010400,
+                0x00010428,
+                0x0001D167,
+                0x0001D17B,
+                0x0001D185,
+                0x0001D1AA,
+                0x00020000,
+                0x00000D02,
+                0x00000D00,
+                0x00000000,
+                0x0001D169, 
+                0x0001D182, 
+                0x0001D18B, 
+                0x0001D1AD, 
+        };
+
+        int expected[] = {
+                UScript.KATAKANA ,
+                UScript.HANGUL ,
+                UScript.HANGUL ,
+                UScript.HANGUL ,
+                UScript.HANGUL ,
+                UScript.HANGUL ,
+                UScript.OLD_ITALIC, 
+                UScript.GOTHIC ,
+                UScript.GOTHIC ,
+                UScript.DESERET ,
+                UScript.DESERET ,
+                UScript.INHERITED,
+                UScript.INHERITED,
+                UScript.INHERITED,
+                UScript.INHERITED,
+                UScript.HAN ,
+                UScript.MALAYALAM,
+                UScript.COMMON,
+                UScript.COMMON,
+                UScript.INHERITED ,
+                UScript.INHERITED ,
+                UScript.INHERITED ,
+                UScript.INHERITED ,
+        };
+        int i =0;
+        int code = UScript.INVALID_CODE;
+        boolean passed = true;
+
+        while(i< codepoints.length){
+            code = UScript.getScript(codepoints[i]);
+
+            if(code != expected[i]){
+                logln("UScript.getScript for codepoint 0x"+ hex(codepoints[i])+" failed");
+                passed = false;
+            }
+
+            i++;
+        }
+        if(!passed){
+           errln("UScript.getScript failed.");
+        }      
+    }
+    public void TestAllCodepoints(){
+    	int code;
+        String oldId="";
+        String oldAbbrId="";
+    	for( int i =0; i <= 0x10ffff; i++){
+    		code =UScript.INVALID_CODE;
+    		code = UScript.getScript(i);
+    		if(code==UScript.INVALID_CODE){
+    			errln("UScript.getScript for codepoint 0x"+ hex(i)+" failed");
+    		}
+            String id =UScript.getName(code);
+            String abbr = UScript.getShortName(code);
+            String newId ="[:"+id+":];NFD";
+            String newAbbrId ="[:"+abbr+":];NFD";
+            if(!oldId.equals(newId)){
+                try{
+                    Transliterator t = Transliterator.getInstance(newId);
+                    if(t==null){
+                         errln("Failed to create transliterator for "+hex(i)+
+                         " script code: " +id);
+                    }
+                }catch(Exception e){
+                    errln("Failed to create transliterator for "+hex(i)
+                            +" script code: " +id
+                            + " Exception: "+e.getMessage());
+                }
+            }
+            oldId = newId;
+            if(!oldAbbrId.equals(newAbbrId)){
+                try{
+                    Transliterator t = Transliterator.getInstance(newAbbrId);
+                    if(t==null){
+                         errln("Failed to create transliterator for "+hex(i)+
+                         " script code: " +abbr);
+                    }
+                }catch(Exception e){
+                    errln("Failed to create transliterator for "+hex(i)
+                            +" script code: " +abbr
+                            + " Exception: "+e.getMessage());
+                }
+            }
+            oldAbbrId = newAbbrId;
+    	}
+    }
+    public void TestScriptNames(){
+        for(int i=0; i<UScript.CODE_LIMIT;i++){
+            String name = UScript.getName(i);
+            if(name.equals("") ){
+                errln("FAILED: getName for code : "+i);
+            }
+        }
+    }   	
+ }
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/lang/TestUScriptRun.java b/src/com/ibm/icu/dev/test/lang/TestUScriptRun.java
new file mode 100644
index 0000000..3f8ca94
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/TestUScriptRun.java
@@ -0,0 +1,341 @@
+/**
+*******************************************************************************
+* Copyright (C) 1999-2002, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.lang.UScriptRun;
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class TestUScriptRun extends TestFmwk
+{
+    public TestUScriptRun()
+    {
+        // nothing
+    }
+    
+    public static void main(String[] args) throws Exception {
+        new TestUScriptRun().run(args);
+    }
+
+    private static final class RunTestData
+    {
+        String runText;
+        int    runScript;
+        
+        public RunTestData(String theText, int theScriptCode)
+        {
+            runText   = theText;
+            runScript = theScriptCode;
+        }
+    };
+    
+    private static final RunTestData[] testData = {
+        new RunTestData("\u0020\u0946\u0939\u093F\u0928\u094D\u0926\u0940\u0020", UScript.DEVANAGARI),
+        new RunTestData("\u0627\u0644\u0639\u0631\u0628\u064A\u0629\u0020", UScript.ARABIC),
+        new RunTestData("\u0420\u0443\u0441\u0441\u043A\u0438\u0439\u0020", UScript.CYRILLIC),
+        new RunTestData("English (", UScript.LATIN),
+        new RunTestData("\u0E44\u0E17\u0E22", UScript.THAI),
+        new RunTestData(") ", UScript.LATIN),
+        new RunTestData("\u6F22\u5B75", UScript.HAN),
+        new RunTestData("\u3068\u3072\u3089\u304C\u306A\u3068", UScript.HIRAGANA),
+        new RunTestData("\u30AB\u30BF\u30AB\u30CA", UScript.KATAKANA),
+        new RunTestData("\uD801\uDC00\uD801\uDC01\uD801\uDC02\uD801\uDC03", UScript.DESERET)
+    };
+    
+    private void CheckScriptRuns(UScriptRun scriptRun, int[] runStarts, RunTestData[] testData)
+    {
+        int run, runStart, runLimit;
+        int runScript;
+
+        /* iterate over all the runs */
+        run = 0;
+        while (scriptRun.next()) {
+            runStart  = scriptRun.getScriptStart();
+            runLimit  = scriptRun.getScriptLimit();
+            runScript = scriptRun.getScriptCode();
+            
+            if (runStart != runStarts[run]) {
+                errln("Incorrect start offset for run " + run + ": expected " + runStarts[run] + ", got " + runStart);
+            }
+
+            if (runLimit != runStarts[run + 1]) {
+                errln("Incorrect limit offset for run " + run + ": expected " + runStarts[run + 1] + ", got " + runLimit);
+            }
+
+            if (runScript != testData[run].runScript) {
+                errln("Incorrect script for run " + run + ": expected \"" + UScript.getName(testData[run].runScript) + "\", got \"" + UScript.getName(runScript) + "\"");
+            }
+            
+            run += 1;
+
+            /* stop when we've seen all the runs we expect to see */
+            if (run >= testData.length) {
+                break;
+            }
+        }
+
+        /* Complain if we didn't see then number of runs we expected */
+        if (run != testData.length) {
+            errln("Incorrect number of runs: expected " + testData.length + ", got " + run);
+        }
+    }
+
+    public void TestContstruction()
+    {
+        UScriptRun scriptRun = null;
+        char[] nullChars  = null, dummyChars  = {'d', 'u', 'm', 'm', 'y'};
+        String nullString = null, dummyString = new String(dummyChars);
+        
+        try {
+            scriptRun = new UScriptRun(nullString, 0, 100);
+            errln("new UScriptRun(nullString, 0, 100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullString, 100, 0);
+            errln("new UScriptRun(nullString, 100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullString, 0, -100);
+            errln("new UScriptRun(nullString, 0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullString, -100, 0);
+            errln("new UScriptRun(nullString, -100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullChars, 0, 100);
+            errln("new UScriptRun(nullChars, 0, 100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullChars, 100, 0);
+            errln("new UScriptRun(nullChars, 100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullChars, 0, -100);
+            errln("new UScriptRun(nullChars, 0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullChars, -100, 0);
+            errln("new UScriptRun(nullChars, -100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyString, 0, 6);
+            errln("new UScriptRun(dummyString, 0, 6) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyString, 6, 0);
+            errln("new UScriptRun(dummy, 6, 0) did not produce an IllegalArgumentException!");
+        }catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyString, 0, -100);
+            errln("new UScriptRun(dummyString, 0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyString, -100, 0);
+            errln("new UScriptRun(dummy, -100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyChars, 0, 6);
+            errln("new UScriptRun(dummyChars, 0, 6) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyChars, 6, 0);
+            errln("new UScriptRun(dummyChars, 6, 0) did not produce an IllegalArgumentException!");
+        }catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyChars, 0, -100);
+            errln("new UScriptRun(dummyChars, 0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyChars, -100, 0);
+            errln("new UScriptRun(dummy, -100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+    }
+    
+    public void TestReset()
+    {
+        UScriptRun scriptRun = null;
+        char[] dummy = {'d', 'u', 'm', 'm', 'y'};
+        
+        try {
+            scriptRun = new UScriptRun();
+        } catch (IllegalArgumentException iae) {
+            errln("new UScriptRun() produced an IllegalArgumentException!");
+        }
+        
+        try {
+            scriptRun.reset(0, 100);
+            errln("scriptRun.reset(0, 100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun.reset(100, 0);
+            errln("scriptRun.reset(100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun.reset(0, -100);
+            errln("scriptRun.reset(0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun.reset(-100, 0);
+            errln("scriptRun.reset(-100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun.reset(dummy, 0, 6);
+            errln("scriptRun.reset(dummy, 0, 6) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun.reset(dummy, 6, 0);
+            errln("scriptRun.reset(dummy, 6, 0) did not produce an IllegalArgumentException!");
+        }catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun.reset(dummy, 0, -100);
+            errln("scriptRun.reset(dummy, 0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun.reset(dummy, -100, 0);
+            errln("scriptRun.reset(dummy, -100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun.reset(dummy, 0, dummy.length);
+        } catch (IllegalArgumentException iae) {
+            errln("scriptRun.reset(dummy, 0, dummy.length) produced an IllegalArgumentException!");
+        }
+        
+        
+        try {
+            scriptRun.reset(0, 6);
+            errln("scriptRun.reset(0, 6) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+        
+        try {
+            scriptRun.reset(6, 0);
+            errln("scriptRun.reset(6, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+        }
+    }
+    
+    public void TestRuns()
+    {
+        int stringLimit = 0;
+        int[] runStarts = new int[testData.length + 1];
+        String testString = "";
+        UScriptRun scriptRun = null;
+        
+        /*
+         * Fill in the test string and the runStarts array.
+         */
+        for (int run = 0; run < testData.length; run += 1) {
+            runStarts[run] = stringLimit;
+            stringLimit += testData[run].runText.length();
+            testString  += testData[run].runText;
+        }
+
+        /* The limit of the last run */ 
+        runStarts[testData.length] = stringLimit;
+        
+        try {
+            scriptRun = new UScriptRun(testString);
+            CheckScriptRuns(scriptRun, runStarts, testData);
+        } catch (IllegalArgumentException iae) {
+            errln("new UScriptRun(testString) produced an IllegalArgumentException!");
+        }
+        
+        try {
+            scriptRun.reset();
+            CheckScriptRuns(scriptRun, runStarts, testData);
+        } catch (IllegalArgumentException iae) {
+            errln("scriptRun.reset() on a valid UScriptRun produced an IllegalArgumentException!");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(testString.toCharArray());
+            CheckScriptRuns(scriptRun, runStarts, testData);
+        } catch (IllegalArgumentException iae) {
+            errln("new UScriptRun(testString.toCharArray()) produced an IllegalArgumentException!");
+        }
+        
+        try {
+            scriptRun.reset();
+            CheckScriptRuns(scriptRun, runStarts, testData);
+        } catch (IllegalArgumentException iae) {
+            errln("scriptRun.reset() on a valid UScriptRun produced an IllegalArgumentException!");
+        }
+        
+        try {
+            scriptRun = new UScriptRun();
+            
+            if (scriptRun.next()) {
+                errln("scriptRun.next() on an empty UScriptRun returned true!");
+            }
+        } catch (IllegalArgumentException iae) {
+            errln("new UScriptRun() produced an IllegalArgumentException!");
+        }
+        
+        try {
+            scriptRun.reset(testString, 0, testString.length());
+            CheckScriptRuns(scriptRun, runStarts, testData);
+        } catch (IllegalArgumentException iae) {
+            errln("scriptRun.reset(testString.toCharArray(), 0, testString.length) produced an IllegalArgumentException!");
+        }
+
+        try {
+            scriptRun.reset(testString.toCharArray(), 0, testString.length());
+            CheckScriptRuns(scriptRun, runStarts, testData);
+        } catch (IllegalArgumentException iae) {
+            errln("scriptRun.reset(testString.toCharArray(), 0, testString.length) produced an IllegalArgumentException!");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java
new file mode 100644
index 0000000..0dfa398
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java
@@ -0,0 +1,692 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java,v $ 
+* $Date: 2002/07/11 21:25:24 $ 
+* $Revision: 1.5 $
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.impl.Utility;
+import java.util.Locale;
+import java.io.BufferedReader;
+import java.util.Vector;
+
+/**
+* <p>Testing character casing</p>
+* <p>Mostly following the test cases in strcase.cpp for ICU</p>
+* @author Syn Wee Quek
+* @since march 14 2002
+*/
+public final class UCharacterCaseTest extends TestFmwk
+{ 
+	// constructor -----------------------------------------------------------
+	  
+	/**
+	 * Constructor
+	 */
+	public UCharacterCaseTest()
+	{
+	}
+	  
+	// public methods --------------------------------------------------------
+	  
+	public static void main(String[] arg)  
+	{
+	    try
+	    {
+	      	UCharacterCaseTest test = new UCharacterCaseTest();
+	      	test.run(arg);
+	    }
+	    catch (Exception e)
+	    {
+	      	e.printStackTrace();
+	    }
+	}
+	  
+	/**
+	 * Testing the uppercase and lowercase function of UCharacter
+	 */
+	public void TestCharacter()
+	{
+	    for (int i = 0; i < CHARACTER_LOWER_.length; i ++) {
+	      	if (UCharacter.isLetter(CHARACTER_LOWER_[i]) && 
+	      	 	!UCharacter.isLowerCase(CHARACTER_LOWER_[i])) {
+	        	errln("FAIL isLowerCase test for \\u" + 
+	        	      hex(CHARACTER_LOWER_[i]));
+	        	break;
+	      	}
+	      	if (UCharacter.isLetter(CHARACTER_UPPER_[i]) && 
+	      	    !(UCharacter.isUpperCase(CHARACTER_UPPER_[i]) ||
+	      	      UCharacter.isTitleCase(CHARACTER_UPPER_[i]))) {
+	        	errln("FAIL isUpperCase test for \\u" + 
+	        	      hex(CHARACTER_UPPER_[i]));
+	        	break;
+	      	}
+	      	if (CHARACTER_LOWER_[i] != 
+	      	    UCharacter.toLowerCase(CHARACTER_UPPER_[i]) || 
+	          	(CHARACTER_UPPER_[i] != 
+	          	UCharacter.toUpperCase(CHARACTER_LOWER_[i]) &&
+	            CHARACTER_UPPER_[i] != 
+	            UCharacter.toTitleCase(CHARACTER_LOWER_[i]))) {
+	        	errln("FAIL case conversion test for \\u" + 
+	        	      hex(CHARACTER_UPPER_[i]) + 
+	        	      " to \\u" + hex(CHARACTER_LOWER_[i]));
+	        	break;
+	      	}
+	      	if (CHARACTER_LOWER_[i] != 
+	      	    UCharacter.toLowerCase(CHARACTER_LOWER_[i])) {
+	        	errln("FAIL lower case conversion test for \\u" + 
+	        	      hex(CHARACTER_LOWER_[i]));
+	        	break;
+	      	}
+	      	if (CHARACTER_UPPER_[i] != 
+	      	    UCharacter.toUpperCase(CHARACTER_UPPER_[i]) && 
+	          	CHARACTER_UPPER_[i] != 
+	          	UCharacter.toTitleCase(CHARACTER_UPPER_[i])) {
+	        	errln("FAIL upper case conversion test for \\u" + 
+	        	      hex(CHARACTER_UPPER_[i]));
+	        	break;
+	      	}
+	      	logln("Ok    \\u" + hex(CHARACTER_UPPER_[i]) + " and \\u" + 
+	      	      hex(CHARACTER_LOWER_[i]));
+	    }
+	}
+	  
+	public void TestFolding() 
+	{
+	    // test simple case folding
+	    for (int i = 0; i < FOLDING_SIMPLE_.length; i += 3) {
+            if (UCharacter.foldCase(FOLDING_SIMPLE_[i], true) != 
+	            FOLDING_SIMPLE_[i + 1]) {
+	            errln("FAIL: foldCase(\\u" + hex(FOLDING_SIMPLE_[i]) + 
+	                  ", true) should be \\u" + hex(FOLDING_SIMPLE_[i + 1]));
+	        }
+	        if (UCharacter.foldCase(FOLDING_SIMPLE_[i], false) != 
+	            FOLDING_SIMPLE_[i + 2]) {
+	            errln("FAIL: foldCase(\\u" + hex(FOLDING_SIMPLE_[i]) + 
+	                  ", false) should be \\u" + hex(FOLDING_SIMPLE_[i + 2]));
+	        }
+	    }
+
+		// Test full string case folding with default option and separate 
+		// buffers   
+        if (!FOLDING_DEFAULT_[0].equals(UCharacter.foldCase(FOLDING_MIXED_[0], 
+	                                                        true))) {
+	        errln("FAIL: foldCase(" + hex(FOLDING_MIXED_[0]) + 
+	              ", true) should be " + FOLDING_DEFAULT_[0]);
+	    }
+	    
+		if (!FOLDING_EXCLUDE_SPECIAL_I_[0].equals(      		                    
+							UCharacter.foldCase(FOLDING_MIXED_[0], false))) {
+	      	errln("FAIL: foldCase(" + hex(FOLDING_MIXED_[0]) + 
+	      	      ", false) should be " + FOLDING_EXCLUDE_SPECIAL_I_[0]);
+	    }
+	    
+	    if (!FOLDING_DEFAULT_[1].equals(UCharacter.foldCase(FOLDING_MIXED_[1], 
+	                                                        true))) {
+	       errln("FAIL: foldCase(" + hex(FOLDING_MIXED_[1]) + 
+	             ", true) should be " + hex(FOLDING_DEFAULT_[1]));
+	    }
+	
+	
+	    // alternate handling for dotted I/dotless i (U+0130, U+0131)
+	    if (!FOLDING_EXCLUDE_SPECIAL_I_[1].equals(
+	                    UCharacter.foldCase(FOLDING_MIXED_[1], false))) {
+	        errln("FAIL: foldCase(" + hex(FOLDING_MIXED_[1]) + 
+	              ", false) should be " + hex(FOLDING_EXCLUDE_SPECIAL_I_[1]));
+	    }
+	}
+		
+	/**
+	 * Testing the strings case mapping methods
+	 */
+	public void TestUpper() 
+	{	
+	    // uppercase with root locale and in the same buffer
+	    if (!UPPER_ROOT_.equals(UCharacter.toUpperCase(UPPER_BEFORE_))) {
+	    	errln("Fail " + UPPER_BEFORE_ + " after uppercase should be " + 
+	      		  UPPER_ROOT_ + " instead got " + 
+	      		  UCharacter.toUpperCase(UPPER_BEFORE_));
+	    }
+	      
+	    // uppercase with turkish locale and separate buffers
+	    if (!UPPER_TURKISH_.equals(UCharacter.toUpperCase(TURKISH_LOCALE_,
+	                                                     UPPER_BEFORE_))) {
+      		errln("Fail " + UPPER_BEFORE_ + 
+      		      " after turkish-sensitive uppercase should be " + 
+      		      UPPER_TURKISH_ + " instead of " +
+      		      UCharacter.toUpperCase(TURKISH_LOCALE_, UPPER_BEFORE_));
+	  	}
+	  		
+	  	// uppercase a short string with root locale
+	    if (!UPPER_MINI_UPPER_.equals(UCharacter.toUpperCase(UPPER_MINI_))) {
+	        errln("error in toUpper(root locale)=\"" + UPPER_MINI_ + 
+	              "\" expected \"" + UPPER_MINI_UPPER_ + "\"");
+	    }
+	    
+	    if (!SHARED_UPPERCASE_TOPKAP_.equals(
+                       UCharacter.toUpperCase(SHARED_LOWERCASE_TOPKAP_))) {
+	        errln("toUpper failed: expected \"" +
+	              SHARED_UPPERCASE_TOPKAP_ + "\", got \"" + 
+                  UCharacter.toUpperCase(SHARED_LOWERCASE_TOPKAP_) + "\".");
+		}
+	
+	    if (!SHARED_UPPERCASE_TURKISH_.equals(
+                  UCharacter.toUpperCase(TURKISH_LOCALE_, 
+                                         SHARED_LOWERCASE_TOPKAP_))) {
+	        errln("toUpper failed: expected \"" + 
+	              SHARED_UPPERCASE_TURKISH_ + "\", got \"" + 
+	              UCharacter.toUpperCase(TURKISH_LOCALE_, 
+	                                 SHARED_LOWERCASE_TOPKAP_) + "\".");
+		}
+	
+	    if (!SHARED_UPPERCASE_GERMAN_.equals(
+	    		UCharacter.toUpperCase(GERMAN_LOCALE_, 
+	     	                           SHARED_LOWERCASE_GERMAN_))) {
+	        errln("toUpper failed: expected \"" + SHARED_UPPERCASE_GERMAN_ 
+	              + "\", got \"" + UCharacter.toUpperCase(GERMAN_LOCALE_, 
+	                                    SHARED_LOWERCASE_GERMAN_) + "\".");
+        }
+	    
+	    if (!SHARED_UPPERCASE_GREEK_.equals(
+	    		UCharacter.toUpperCase(SHARED_LOWERCASE_GREEK_))) {
+	        errln("toLower failed: expected \"" + SHARED_UPPERCASE_GREEK_ +
+	              "\", got \"" + UCharacter.toUpperCase(
+       	                                SHARED_LOWERCASE_GREEK_) + "\".");
+    	}
+	}
+	  
+	public void TestLower() 
+	{
+		if (!LOWER_ROOT_.equals(UCharacter.toLowerCase(LOWER_BEFORE_))) {
+	   		errln("Fail " + LOWER_BEFORE_ + " after lowercase should be " + 
+	   		      LOWER_ROOT_ + " instead of " + 
+	   		      UCharacter.toLowerCase(LOWER_BEFORE_));
+		}
+	   
+	   	// lowercase with turkish locale
+	   	if (!LOWER_TURKISH_.equals(UCharacter.toLowerCase(TURKISH_LOCALE_, 
+	   	                                                  LOWER_BEFORE_))) {
+	   		errln("Fail " + LOWER_BEFORE_ + 
+	     		  " after turkish-sensitive lowercase should be " + 
+	     		  LOWER_TURKISH_ + " instead of " + 
+	     		  UCharacter.toLowerCase(TURKISH_LOCALE_, LOWER_BEFORE_));
+	    }
+	    if (!SHARED_LOWERCASE_ISTANBUL_.equals(
+                     UCharacter.toLowerCase(SHARED_UPPERCASE_ISTANBUL_))) {
+	        errln("1. toLower failed: expected \"" + 
+	              SHARED_LOWERCASE_ISTANBUL_ + "\", got \"" + 
+              UCharacter.toLowerCase(SHARED_UPPERCASE_ISTANBUL_) + "\".");
+	    }
+
+		if (!SHARED_LOWERCASE_TURKISH_.equals(
+	            UCharacter.toLowerCase(TURKISH_LOCALE_, 
+	                                   SHARED_UPPERCASE_ISTANBUL_))) {	
+	    	errln("2. toLower failed: expected \"" + 
+	    	      SHARED_LOWERCASE_TURKISH_ + "\", got \"" + 
+	    	      UCharacter.toLowerCase(TURKISH_LOCALE_,
+		                        SHARED_UPPERCASE_ISTANBUL_) + "\".");
+	    }
+	    if (!SHARED_LOWERCASE_GREEK_.equals(
+	    		UCharacter.toLowerCase(GREEK_LOCALE_, 
+	    		                       SHARED_UPPERCASE_GREEK_))) {
+	        errln("toLower failed: expected \"" + SHARED_LOWERCASE_GREEK_ +
+	              "\", got \"" + UCharacter.toLowerCase(GREEK_LOCALE_, 
+       	                                SHARED_UPPERCASE_GREEK_) + "\".");
+    	}
+	}
+	  	
+	public void TestTitle() 
+	{
+	    for (int i = 0; i < TITLE_BREAKITERATORS_.length; i ++) {
+	    	String test = TITLE_DATA_[i << 1];
+	    	String expected = TITLE_DATA_[(i << 1) + 1];
+	    	if (!expected.equals(
+	    	    UCharacter.toTitleCase(test,
+	    	                           TITLE_BREAKITERATORS_[i]))) {
+	            errln("error: titlecasing for " + hex(test) + " should be " + 
+	                  hex(expected) + " but got " +
+	                  hex(UCharacter.toTitleCase(test, 
+	                                             TITLE_BREAKITERATORS_[i])));
+	        }
+	    }
+	}
+	
+	public void TestSpecial()
+	{   
+	    for (int i = 0; i < SPECIAL_LOCALES_.length; i ++) {
+	    	int    j      = i * 3;
+	    	Locale locale = SPECIAL_LOCALES_[i];
+	    	String str    = SPECIAL_DATA_[j];
+	    	if (locale != null) {
+	 			if (!SPECIAL_DATA_[j + 1].equals(
+	                 UCharacter.toLowerCase(locale, str))) {
+		        	errln("error lowercasing special characters " + 
+		              	hex(str) + " expected " + hex(SPECIAL_DATA_[j + 1]) 
+		              	+ " for locale " + locale.toString() + " but got " + 
+		              	hex(UCharacter.toLowerCase(locale, str)));
+	            }
+	            if (!SPECIAL_DATA_[j + 2].equals(
+	                 UCharacter.toUpperCase(locale, str))) {
+		        	errln("error uppercasing special characters " + 
+		              	hex(str) + " expected " + SPECIAL_DATA_[j + 2] 
+		              	+ " for locale " + locale.toString() + " but got " + 
+		              	hex(UCharacter.toUpperCase(locale, str)));
+	            }
+		    }   	
+		    else {
+		    	if (!SPECIAL_DATA_[j + 1].equals(
+	                 UCharacter.toLowerCase(str))) {
+		        	errln("error lowercasing special characters " + 
+		              	hex(str) + " expected " + SPECIAL_DATA_[j + 1] + 
+		              	" but got " + 
+		              	hex(UCharacter.toLowerCase(locale, str)));
+	            }
+	            if (!SPECIAL_DATA_[j + 2].equals(
+	                 UCharacter.toUpperCase(locale, str))) {
+		        	errln("error uppercasing special characters " + 
+		              	hex(str) + " expected " + SPECIAL_DATA_[j + 2] + 
+		              	" but got " + 
+		              	hex(UCharacter.toUpperCase(locale, str)));
+	            }
+		    }
+	    }
+	    
+	    // turkish & azerbaijani dotless i & dotted I
+	    // remove dot above if there was a capital I before and there are no 
+	    // more accents above
+	    if (!SPECIAL_DOTTED_LOWER_TURKISH_.equals(UCharacter.toLowerCase(
+                                        TURKISH_LOCALE_, SPECIAL_DOTTED_))) {
+	        errln("error in dots.toLower(tr)=\"" + SPECIAL_DOTTED_ + 
+	              "\" expected \"" + SPECIAL_DOTTED_LOWER_TURKISH_ + 
+	              "\" but got " + UCharacter.toLowerCase(TURKISH_LOCALE_,
+	                                                     SPECIAL_DOTTED_));
+	    }
+		if (!SPECIAL_DOTTED_LOWER_GERMAN_.equals(UCharacter.toLowerCase(
+	                                         GERMAN_LOCALE_, SPECIAL_DOTTED_))) {
+	        errln("error in dots.toLower(de)=\"" + SPECIAL_DOTTED_ + 
+	              "\" expected \"" + SPECIAL_DOTTED_LOWER_GERMAN_ + 
+	              "\" but got " + UCharacter.toLowerCase(GERMAN_LOCALE_,
+	                                                     SPECIAL_DOTTED_));
+	    }
+	
+		// lithuanian dot above in uppercasing
+		if (!SPECIAL_DOT_ABOVE_UPPER_LITHUANIAN_.equals(
+		     UCharacter.toUpperCase(LITHUANIAN_LOCALE_, SPECIAL_DOT_ABOVE_))) {
+	        errln("error in dots.toUpper(lt)=\"" + SPECIAL_DOT_ABOVE_ + 
+	              "\" expected \"" + SPECIAL_DOT_ABOVE_UPPER_LITHUANIAN_ + 
+	              "\" but got " + UCharacter.toUpperCase(LITHUANIAN_LOCALE_,
+	                                                     SPECIAL_DOT_ABOVE_));
+	    }
+		if (!SPECIAL_DOT_ABOVE_UPPER_GERMAN_.equals(UCharacter.toUpperCase(
+                                        GERMAN_LOCALE_, SPECIAL_DOT_ABOVE_))) {
+	        errln("error in dots.toUpper(de)=\"" + SPECIAL_DOT_ABOVE_ + 
+	              "\" expected \"" + SPECIAL_DOT_ABOVE_UPPER_GERMAN_ + 
+	              "\" but got " + UCharacter.toUpperCase(GERMAN_LOCALE_,
+	                                                     SPECIAL_DOT_ABOVE_));
+	    }	    
+	    
+		// lithuanian adds dot above to i in lowercasing if there are more 
+		// above accents
+		if (!SPECIAL_DOT_ABOVE_LOWER_LITHUANIAN_.equals(
+			UCharacter.toLowerCase(LITHUANIAN_LOCALE_, 
+			                       SPECIAL_DOT_ABOVE_UPPER_))) {
+	        errln("error in dots.toLower(lt)=\"" + SPECIAL_DOT_ABOVE_UPPER_ + 
+	              "\" expected \"" + SPECIAL_DOT_ABOVE_LOWER_LITHUANIAN_ + 
+	              "\" but got " + UCharacter.toLowerCase(LITHUANIAN_LOCALE_,
+                                                   SPECIAL_DOT_ABOVE_UPPER_));
+	    }
+		if (!SPECIAL_DOT_ABOVE_LOWER_GERMAN_.equals(
+			UCharacter.toLowerCase(GERMAN_LOCALE_, 
+			                       SPECIAL_DOT_ABOVE_UPPER_))) {
+	        errln("error in dots.toLower(de)=\"" + SPECIAL_DOT_ABOVE_UPPER_ + 
+	              "\" expected \"" + SPECIAL_DOT_ABOVE_LOWER_GERMAN_ + 
+	              "\" but got " + UCharacter.toLowerCase(GERMAN_LOCALE_,
+                                                   SPECIAL_DOT_ABOVE_UPPER_));
+	    }
+	}
+	  
+	/**
+	 * Tests for case mapping in the file SpecialCasing.txt
+	 * This method reads in SpecialCasing.txt file for testing purposes. 
+	 * A default path is provided relative to the src path, however the user 
+	 * could set a system property to change the directory path.<br>
+	 * e.g. java -DUnicodeData="data_dir_path" com.ibm.dev.test.lang.UCharacterTest
+	 */
+	public void TestSpecialCasingTxt()
+	{
+	    try
+		{
+		  	// reading in the SpecialCasing file
+		  	BufferedReader input = TestUtil.getDataReader(
+		  	                                      "unicode/SpecialCasing.txt");
+            while (true)
+	      	{
+                String s = input.readLine();
+	        	if (s == null) {
+	            	break;
+	        	}
+                if (s.length() == 0 || s.charAt(0) == '#') {
+	            	continue;
+	        	}
+                
+                String chstr[] = getUnicodeStrings(s);
+                StringBuffer strbuffer   = new StringBuffer(chstr[0]);
+                StringBuffer lowerbuffer = new StringBuffer(chstr[1]); 
+                StringBuffer upperbuffer = new StringBuffer(chstr[3]); 
+                Locale locale = null;
+                for (int i = 4; i < chstr.length; i ++) {
+                    String condition = chstr[i];
+                    if (Character.isLowerCase(chstr[i].charAt(0))) {
+                        // specified locale
+                        locale = new Locale(chstr[i], "");
+                    }
+                    else if (condition.compareToIgnoreCase("Not_Before_Dot") 
+                                                      == 0) {
+                        // turns I into dotless i
+                    }    
+                    else if (condition.compareToIgnoreCase(
+                                                      "More_Above") == 0) {
+                            strbuffer.append((char)0x300);
+                            lowerbuffer.append((char)0x300);
+                            upperbuffer.append((char)0x300);
+                    }
+                    else if (condition.compareToIgnoreCase(
+                                                "After_Soft_Dotted") == 0) {
+                            strbuffer.insert(0, 'i');
+                            lowerbuffer.insert(0, 'i');
+                            String lang = "";
+                            if (locale != null) {
+                                lang = locale.getLanguage();
+                            }
+                            if (lang.equals("tr") || lang.equals("az")) {
+                                upperbuffer.insert(0, '\u0130');
+                            }
+                            else {
+                                upperbuffer.insert(0, 'I');
+                            }
+                    }
+                    else if (condition.compareToIgnoreCase(
+                                                      "Final_Sigma") == 0) {
+                            strbuffer.insert(0, 'c');
+                            lowerbuffer.insert(0, 'c');
+                            upperbuffer.insert(0, 'C');
+                    }
+	        	}
+                chstr[0] = strbuffer.toString();
+                chstr[1] = lowerbuffer.toString();
+                chstr[3] = upperbuffer.toString();
+                if (locale == null) {
+                    if (!UCharacter.toLowerCase(chstr[0]).equals(chstr[1])) {
+    	               	errln(s);
+    	               	errln("Fail: toLowerCase for character " + 
+    	                      Utility.escape(chstr[0]) + ", expected "
+    	                      + Utility.escape(chstr[1]) + " but resulted in " + 
+    	                      Utility.escape(UCharacter.toLowerCase(chstr[0])));
+    	            }
+    	            if (!UCharacter.toUpperCase(chstr[0]).equals(chstr[3])) {
+    	                errln(s);
+    	                errln("Fail: toUpperCase for character " + 
+    	                      Utility.escape(chstr[0]) + ", expected "
+    	                      + Utility.escape(chstr[3]) + " but resulted in " + 
+    	                      Utility.escape(UCharacter.toUpperCase(chstr[0])));
+    	            }
+                }
+                else {
+                    if (!UCharacter.toLowerCase(locale, chstr[0]).equals(
+                                                                   chstr[1])) {
+                        errln(s);
+                        errln("Fail: toLowerCase for character " + 
+                              Utility.escape(chstr[0]) + ", expected "
+                              + Utility.escape(chstr[1]) + " but resulted in " + 
+                              Utility.escape(UCharacter.toLowerCase(locale, 
+                                                                    chstr[0])));
+                    }
+                    if (!UCharacter.toUpperCase(locale, chstr[0]).equals(
+                                                                   chstr[3])) {
+                        errln(s);
+                        errln("Fail: toUpperCase for character " + 
+                              Utility.escape(chstr[0]) + ", expected "
+                              + Utility.escape(chstr[3]) + " but resulted in " + 
+                              Utility.escape(UCharacter.toUpperCase(locale, 
+                                                                    chstr[0])));
+                    }
+                }
+	      	}
+	      	input.close();
+	    }
+	    catch (Exception e)
+	    {
+	      e.printStackTrace();
+	    }
+	}
+	
+	// private data members - test data --------------------------------------
+	
+	private static final Locale TURKISH_LOCALE_ = new Locale("tr", "TR");
+	private static final Locale GERMAN_LOCALE_ = new Locale("de", "DE");
+	private static final Locale GREEK_LOCALE_ = new Locale("el", "GR");
+	private static final Locale ENGLISH_LOCALE_ = new Locale("en", "US");
+	private static final Locale LITHUANIAN_LOCALE_ = new Locale("lt", "LT");
+	
+	private static final BreakIterator BREAKITERATOR_CHARACTER_ = 
+	                             BreakIterator.getCharacterInstance();
+	private static final BreakIterator BREAKITERATOR_WORD_ = 
+	                             BreakIterator.getWordInstance();
+	private static final BreakIterator BREAKITERATOR_TITLE_ = 
+	                             BreakIterator.getTitleInstance();	                             
+	                             	
+	private static final int CHARACTER_UPPER_[] = 
+	                  {0x41, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 
+	    	           0x00b1, 0x00b2, 0xb3, 0x0048, 0x0049, 0x004a, 0x002e, 
+	    	           0x003f, 0x003a, 0x004b, 0x004c, 0x4d, 0x004e, 0x004f, 
+	    	           0x01c4, 0x01c8, 0x000c, 0x0000};
+	private static final int CHARACTER_LOWER_[] = 
+	                  {0x61, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 
+	    	           0x00b1, 0x00b2, 0xb3, 0x0068, 0x0069, 0x006a, 0x002e, 
+	    	           0x003f, 0x003a, 0x006b, 0x006c, 0x6d, 0x006e, 0x006f, 
+	    	           0x01c6, 0x01c9, 0x000c, 0x0000};
+	    	           
+	private static final int FOLDING_SIMPLE_[] = {
+		// input, default, exclude special i
+	    0x61,   0x61,  0x61,
+	    0x49,   0x69,  0x131,
+	    0x130,  0x69,  0x69,
+        0x131,  0x131, 0x131,
+        0xdf,   0xdf,  0xdf,
+        0xfb03, 0xfb03, 0xfb03,
+        0x1040e,0x10436,0x10436,
+        0x5ffff,0x5ffff,0x5ffff
+	};
+	private static final String FOLDING_MIXED_[] = 
+	                      {"\u0061\u0042\u0130\u0049\u0131\u03d0\u00df\ufb03\ud93f\udfff",
+                           "A\u00df\u00b5\ufb03\uD801\uDC0C\u0130\u0131"};
+    private static final String FOLDING_DEFAULT_[] = 
+	     {"\u0061\u0062\u0069\u0307\u0069\u0131\u03b2\u0073\u0073\u0066\u0066\u0069\ud93f\udfff",
+	      "ass\u03bcffi\uD801\uDC34i\u0307\u0131"};
+	private static final String FOLDING_EXCLUDE_SPECIAL_I_[] = 
+	     {"\u0061\u0062\u0069\u0131\u0131\u03b2\u0073\u0073\u0066\u0066\u0069\ud93f\udfff",
+	      "ass\u03bcffi\uD801\uDC34i\u0131"};
+	/** 
+	 * "IESUS CHRISTOS"
+	 */
+	private static final String SHARED_UPPERCASE_GREEK_ =
+		"\u0399\u0395\u03a3\u03a5\u03a3\u0020\u03a7\u03a1\u0399\u03a3\u03a4\u039f\u03a3";
+	/**
+	 * "iesus christos"
+	 */
+	private static final String SHARED_LOWERCASE_GREEK_ = 
+	    "\u03b9\u03b5\u03c3\u03c5\u03c2\u0020\u03c7\u03c1\u03b9\u03c3\u03c4\u03bf\u03c2";
+	private static final String SHARED_LOWERCASE_TURKISH_ = 
+	    "\u0069\u0073\u0074\u0061\u006e\u0062\u0075\u006c\u002c\u0020\u006e\u006f\u0074\u0020\u0063\u006f\u006e\u0073\u0074\u0061\u006e\u0074\u0131\u006e\u006f\u0070\u006c\u0065\u0021";
+	private static final String SHARED_UPPERCASE_TURKISH_ = 
+	    "\u0054\u004f\u0050\u004b\u0041\u0050\u0049\u0020\u0050\u0041\u004c\u0041\u0043\u0045\u002c\u0020\u0130\u0053\u0054\u0041\u004e\u0042\u0055\u004c";      
+	private static final String SHARED_UPPERCASE_ISTANBUL_ = 
+	                                      "\u0130STANBUL, NOT CONSTANTINOPLE!";
+	private static final String SHARED_LOWERCASE_ISTANBUL_ = 
+	                                      "i\u0307stanbul, not constantinople!";
+	private static final String SHARED_LOWERCASE_TOPKAP_ = 
+	                                      "topkap\u0131 palace, istanbul";
+	private static final String SHARED_UPPERCASE_TOPKAP_ =  
+	                                      "TOPKAPI PALACE, ISTANBUL";
+	private static final String SHARED_LOWERCASE_GERMAN_ = 
+	                                      "S\u00FC\u00DFmayrstra\u00DFe";	
+    private static final String SHARED_UPPERCASE_GERMAN_ = 
+    									  "S\u00DCSSMAYRSTRASSE";
+ 	
+ 	private static final String UPPER_BEFORE_ =  
+   	     "\u0061\u0042\u0069\u03c2\u00df\u03c3\u002f\ufb03\ufb03\ufb03\ud93f\udfff";
+	private static final String UPPER_ROOT_ =    
+	     "\u0041\u0042\u0049\u03a3\u0053\u0053\u03a3\u002f\u0046\u0046\u0049\u0046\u0046\u0049\u0046\u0046\u0049\ud93f\udfff";
+	private static final String UPPER_TURKISH_ = 	
+	     "\u0041\u0042\u0130\u03a3\u0053\u0053\u03a3\u002f\u0046\u0046\u0049\u0046\u0046\u0049\u0046\u0046\u0049\ud93f\udfff";
+	private static final String UPPER_MINI_ = "\u00df\u0061";
+	private static final String UPPER_MINI_UPPER_ = "\u0053\u0053\u0041";
+	
+	private static final String LOWER_BEFORE_ = 
+                      "\u0061\u0042\u0049\u03a3\u00df\u03a3\u002f\ud93f\udfff";
+	private static final String LOWER_ROOT_ =    
+	                  "\u0061\u0062\u0069\u03c3\u00df\u03c2\u002f\ud93f\udfff";
+	private static final String LOWER_TURKISH_ = 
+	                  "\u0061\u0062\u0131\u03c3\u00df\u03c2\u002f\ud93f\udfff";
+
+	/**
+	 * each item is an array with input string, result string, locale
+	 */
+	private static final String TITLE_DATA_[] = {
+		"\u0061\u0042\u0020\u0069\u03c2\u0020\u00df\u03c3\u002f\ufb03\ud93f\udfff",
+		"\u0041\u0042\u0020\u0049\u03a3\u0020\u0053\u0073\u03a3\u002f\u0046\u0066\u0069\ud93f\udfff",
+		
+		"\u0061\u0042\u0020\u0069\u03c2\u0020\u00df\u03c3\u002f\ufb03\ud93f\udfff",
+		"\u0041\u0062\u0020\u0049\u03c2\u0020\u0053\u0073\u03c3\u002f\u0046\u0066\u0069\ud93f\udfff",
+		
+		" tHe QUIcK bRoWn", " The Quick Brown",
+		
+		"\u01c4\u01c5\u01c6\u01c7\u01c8\u01c9\u01ca\u01cb\u01cc", 
+		"\u01c5\u01c5\u01c5\u01c8\u01c8\u01c8\u01cb\u01cb\u01cb", // UBRK_CHARACTER
+		
+    	"\u01c9ubav ljubav", "\u01c8ubav Ljubav", // Lj vs. L+j
+    	
+    	"'oH dOn'T tItLeCaSe AfTeR lEtTeR+'", 
+    	"'Oh Don't Titlecase After Letter+'"
+	};
+	       
+    private static final BreakIterator TITLE_BREAKITERATORS_[] =
+    {
+    	BREAKITERATOR_CHARACTER_,
+    	BREAKITERATOR_WORD_,
+    	BREAKITERATOR_TITLE_,
+    	BREAKITERATOR_CHARACTER_,
+    	null,
+    	null
+    };
+    
+    /**
+     * <p>basic string, lower string, upper string, title string</p>
+     */
+    private static final String SPECIAL_DATA_[] = {
+    	UTF16.valueOf(0x1043C) + UTF16.valueOf(0x10414),
+		UTF16.valueOf(0x1043C) + UTF16.valueOf(0x1043C),
+		UTF16.valueOf(0x10414) + UTF16.valueOf(0x10414),
+		"ab'cD \uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " + 
+	                     UTF16.valueOf(0x1043C) + UTF16.valueOf(0x10414),
+	    "ab'cd \uFB00i\u0131ii\u0307 \u01C9\u01C9\u01C9 " + 
+	                          UTF16.valueOf(0x1043C) + UTF16.valueOf(0x1043C),
+	    "AB'CD FFIII\u0130 \u01C7\u01C7\u01C7 " +
+	                          UTF16.valueOf(0x10414) + UTF16.valueOf(0x10414),
+	    // sigmas followed/preceded by cased letters
+	    "i\u0307\u03a3\u0308j \u0307\u03a3\u0308j i\u00ad\u03a3\u0308 \u0307\u03a3\u0308 ",
+	    "i\u0307\u03c3\u0308j \u0307\u03c3\u0308j i\u00ad\u03c2\u0308 \u0307\u03c3\u0308 ",
+	    "I\u0307\u03a3\u0308J \u0307\u03a3\u0308J I\u00ad\u03a3\u0308 \u0307\u03a3\u0308 "
+    };
+    private static final Locale SPECIAL_LOCALES_[] = {
+    	null,
+    	ENGLISH_LOCALE_,
+    	null,
+    };
+
+    private static final String SPECIAL_DOTTED_ = 
+            "I \u0130 I\u0307 I\u0327\u0307 I\u0301\u0307 I\u0327\u0307\u0301";
+	private static final String SPECIAL_DOTTED_LOWER_TURKISH_ =
+			"\u0131 i i\u0307 i\u0327\u0307 \u0131\u0301\u0307 i\u0327\u0307\u0301";
+	private static final String SPECIAL_DOTTED_LOWER_GERMAN_ = 
+	        "i i\u0307 i\u0307 i\u0327\u0307 i\u0301\u0307 i\u0327\u0307\u0301";
+	private static final String SPECIAL_DOT_ABOVE_ =
+			"a\u0307 \u0307 i\u0307 j\u0327\u0307 j\u0301\u0307";
+	private static final String SPECIAL_DOT_ABOVE_UPPER_LITHUANIAN_ = 
+	        "A\u0307 \u0307 I J\u0327 J\u0301\u0307";
+	private static final String SPECIAL_DOT_ABOVE_UPPER_GERMAN_ = 
+	        "A\u0307 \u0307 I\u0307 J\u0327\u0307 J\u0301\u0307";
+	private static final String SPECIAL_DOT_ABOVE_UPPER_ =
+	        "I I\u0301 J J\u0301 \u012e \u012e\u0301 \u00cc\u00cd\u0128";
+	private static final String SPECIAL_DOT_ABOVE_LOWER_LITHUANIAN_ =
+	        "i i\u0307\u0301 j j\u0307\u0301 \u012f \u012f\u0307\u0301 i\u0307\u0300i\u0307\u0301i\u0307\u0303";
+	private static final String SPECIAL_DOT_ABOVE_LOWER_GERMAN_ =
+	  		"i i\u0301 j j\u0301 \u012f \u012f\u0301 \u00ec\u00ed\u0129";
+	                  
+	// private methods -------------------------------------------------------
+	
+	/**
+  	 * Converting the hex numbers represented betwee                             n ';' to Unicode strings
+  	 * @param str string to break up into Unicode strings
+  	 * @return array of Unicode strings ending with a null
+  	 */
+  	private String[] getUnicodeStrings(String str)
+  	{
+    	Vector v = new Vector(10);
+        int start = 0;
+        for (int casecount = 4; casecount > 0; casecount --) {
+            int end = str.indexOf("; ", start);
+            String casestr = str.substring(start, end);
+            StringBuffer buffer = new StringBuffer();
+            int spaceoffset = 0;
+            while (spaceoffset < casestr.length()) {
+                int nextspace = casestr.indexOf(' ', spaceoffset);
+                if (nextspace == -1) {
+                    nextspace = casestr.length();
+                }
+                buffer.append((char)Integer.parseInt(
+                                     casestr.substring(spaceoffset, nextspace),
+                                                      16));
+                spaceoffset = nextspace + 1;
+            }
+            start = end + 2;
+            v.add(buffer.toString());
+        }
+        int comments = str.indexOf(" #", start);
+        if (comments != -1 && comments != start) {
+            if (str.charAt(comments - 1) == ';') {
+                comments --;
+            }
+            String conditions = str.substring(start, comments);
+            int offset = 0;
+    	    while (offset < conditions.length()) {
+                int spaceoffset = conditions.indexOf(' ', offset);
+                if (spaceoffset == -1) {
+                    spaceoffset = conditions.length();
+                }
+                v.add(conditions.substring(offset, spaceoffset));
+                offset = spaceoffset + 1;
+            }
+        }
+	    int size = v.size();
+	    String result[] = new String[size];
+	    for (int i = 0; i < size; i ++) {
+	        result[i] = (String)v.elementAt(i);
+	    }
+	    return result;
+  	}
+}
+
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterCategoryTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterCategoryTest.java
new file mode 100644
index 0000000..a995dc8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterCategoryTest.java
@@ -0,0 +1,94 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: 
+*      /usr/cvs/icu4j/icu4j/src/com/ibm/icu/text/UCharacterCategory.java $ 
+* $Date: 2002/07/08 23:52:13 $ 
+* $Revision: 1.2 $
+*
+*******************************************************************************
+*/
+package com.ibm.icu.dev.test.lang;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacterCategory;
+
+/**
+* Testing UCharacterCategory
+* @author Syn Wee Quek
+* @since April 02 2002
+*/
+public class UCharacterCategoryTest extends TestFmwk
+{
+	// constructor -----------------------------------------------------------
+	
+	/**
+    * Private constructor to prevent initialisation
+    */
+    public UCharacterCategoryTest()
+    {
+    }
+    
+  	// public methods --------------------------------------------------------
+	  
+	public static void main(String[] arg)  
+	{
+	    try
+	    {
+	      	UCharacterCategoryTest test = new UCharacterCategoryTest();
+	      	test.run(arg);
+	    }
+	    catch (Exception e)
+	    {
+	      	e.printStackTrace();
+	    }
+	}
+	
+	/**
+	* Gets the name of the argument category
+	* @param category to retrieve name
+	* @return category name
+	*/
+	public void TestToString()
+	{
+	  	String name[] = {"Unassigned",
+	  		             "Letter, Uppercase",
+	  		             "Letter, Lowercase",
+	  		             "Letter, Titlecase",
+	  		             "Letter, Modifier",
+	  		             "Letter, Other",
+	  		             "Mark, Non-Spacing",
+	  		             "Mark, Enclosing",
+	  		             "Mark, Spacing Combining",
+	  		             "Number, Decimal Digit",
+	  		             "Number, Letter",
+	  		             "Number, Other",
+	  		             "Separator, Space",
+	  		             "Separator, Line",
+	  		             "Separator, Paragraph",
+	  		             "Other, Control",
+	  		             "Other, Format",
+	  		             "Other, Private Use",
+	  		             "Other, Surrogate",
+	  		             "Punctuation, Dash",
+	  		             "Punctuation, Open",
+	  		             "Punctuation, Close",
+	  		             "Punctuation, Connector",
+	  		             "Punctuation, Other",
+	  		             "Symbol, Math",
+	  		             "Symbol, Currency",
+	  		             "Symbol, Modifier",
+	  		             "Symbol, Other", 
+	  		             "Punctuation, Initial quote",
+	  		             "Punctuation, Final quote"};
+		for (int i = UCharacterCategory.UNASSIGNED; 
+		         i < UCharacterCategory.CHAR_CATEGORY_COUNT; i ++) {
+		     if (!UCharacterCategory.toString(i).equals(name[i])) {
+		     	errln("Error toString for category " + i + " expected " +
+		     	      name[i]);
+		     }
+		}
+	}
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java b/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java
new file mode 100755
index 0000000..d914616
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java
@@ -0,0 +1,315 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java,v $ 
+* $Date: 2002/04/04 00:52:31 $ 
+* $Revision: 1.10 $
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.util.Hashtable;
+import java.util.Enumeration;
+
+/**
+* A class to compare the difference in methods between java.lang.Character and
+* UCharacter
+* @author Syn Wee Quek
+* @since oct 06 2000
+* @see com.ibm.icu.text.UCharacter
+*/
+
+public final class UCharacterCompare
+{ 
+  // private variables ================================================
+  
+  private static Hashtable m_hashtable_ = new Hashtable();
+  
+  // public methods ======================================================
+  
+  /**
+  * Main testing method
+  */
+  public static void main(String arg[])
+  {
+  	System.out.println("Starting character compare");
+    try
+    {
+      FileWriter f;
+      if (arg.length == 0)
+        f = new FileWriter("compare.txt");
+      else
+        f = new FileWriter(arg[0]);
+      PrintWriter p = new PrintWriter(f);
+      p.print("char  character name                                                           ");
+      p.println("method name               ucharacter character");
+      for (char i = Character.MIN_VALUE; i < Character.MAX_VALUE; i ++)
+      {
+      	System.out.println("character \\u" + Integer.toHexString(i));
+        if (UCharacter.isDefined(i) != Character.isDefined(i))
+          trackDifference(p, i, "isDefined()", "" + UCharacter.isDefined(i), 
+                          "" + Character.isDefined(i));
+        else
+        {
+          if (UCharacter.digit(i, 10) != Character.digit(i, 10))
+            trackDifference(p, i, "digit()", "" + UCharacter.digit(i, 10),
+                            "" + Character.digit(i, 10));
+          if (UCharacter.getNumericValue(i) != Character.getNumericValue(i))
+            trackDifference(p, i, "getNumericValue()", 
+                            "" + UCharacter.getNumericValue(i),
+                            "" + Character.getNumericValue(i));
+          if (!compareType(UCharacter.getType(i), Character.getType(i)))
+            trackDifference(p, i, "getType()", "" + UCharacter.getType(i),
+                            "" + Character.getType(i));
+          if (UCharacter.isDigit(i) != Character.isDigit(i))
+            trackDifference(p, i, "isDigit()",
+                            "" + UCharacter.isDigit(i), 
+                            "" + Character.isDigit(i));
+          if (UCharacter.isISOControl(i) != Character.isISOControl(i))
+            trackDifference(p, i, "isISOControl()", 
+                            "" + UCharacter.isISOControl(i),
+                            "" + Character.isISOControl(i));
+          if (UCharacter.isLetter(i) != Character.isLetter(i))
+            trackDifference(p, i, "isLetter()", "" + UCharacter.isLetter(i),
+                            "" + Character.isLetter(i));
+          if (UCharacter.isLetterOrDigit(i) != Character.isLetterOrDigit(i))
+            trackDifference(p, i, "isLetterOrDigit()", 
+                            "" + UCharacter.isLetterOrDigit(i),
+                            "" + Character.isLetterOrDigit(i));
+          if (UCharacter.isLowerCase(i) != Character.isLowerCase(i))
+            trackDifference(p, i, "isLowerCase()", 
+                            "" + UCharacter.isLowerCase(i),
+                            "" + Character.isLowerCase(i));
+          if (UCharacter.isWhitespace(i) != Character.isWhitespace(i))
+            trackDifference(p, i, "isWhitespace()", 
+                            "" + UCharacter.isWhitespace(i),
+                            "" + Character.isWhitespace(i));
+          if (UCharacter.isSpaceChar(i) != Character.isSpaceChar(i))
+            trackDifference(p, i, "isSpaceChar()", 
+                            "" + UCharacter.isSpaceChar(i),
+                            "" + Character.isSpaceChar(i));
+          if (UCharacter.isTitleCase(i) != Character.isTitleCase(i))
+            trackDifference(p, i, "isTitleChar()", 
+                            "" + UCharacter.isTitleCase(i),
+                            "" + Character.isTitleCase(i));
+          if (UCharacter.isUnicodeIdentifierPart(i) != 
+              Character.isUnicodeIdentifierPart(i))
+            trackDifference(p, i, "isUnicodeIdentifierPart()", 
+                            "" + UCharacter.isUnicodeIdentifierPart(i),
+                            "" + Character.isUnicodeIdentifierPart(i));
+          if (UCharacter.isUnicodeIdentifierStart(i) != 
+              Character.isUnicodeIdentifierStart(i))
+            trackDifference(p, i, "isUnicodeIdentifierStart()",
+                            "" + UCharacter.isUnicodeIdentifierStart(i),
+                            "" + Character.isUnicodeIdentifierStart(i));
+          if (UCharacter.isIdentifierIgnorable(i) != 
+              Character.isIdentifierIgnorable(i))
+            trackDifference(p, i, "isIdentifierIgnorable()",
+                            "" + UCharacter.isIdentifierIgnorable(i),
+                            "" + Character.isIdentifierIgnorable(i));
+          if (UCharacter.isUpperCase(i) != Character.isUpperCase(i))
+            trackDifference(p, i, "isUpperCase()", 
+                            "" + UCharacter.isUpperCase(i),
+                            "" + Character.isUpperCase(i));
+          if (UCharacter.toLowerCase(i) != Character.toLowerCase(i))
+            trackDifference(p, i, "toLowerCase()", 
+                            Integer.toHexString(UCharacter.toLowerCase(i)),
+                            Integer.toHexString(Character.toLowerCase(i)));
+          if (!UCharacter.toString(i).equals(new Character(i).toString()))
+            trackDifference(p, i, "toString()",
+                            UCharacter.toString(i),
+                            new Character(i).toString());
+          if (UCharacter.toTitleCase(i) != Character.toTitleCase(i))
+            trackDifference(p, i, "toTitleCase()",
+                            Integer.toHexString(UCharacter.toTitleCase(i)),
+                            Integer.toHexString(Character.toTitleCase(i)));
+          if (UCharacter.toUpperCase(i) != Character.toUpperCase(i))
+            trackDifference(p, i, "toUpperCase()",
+                            Integer.toHexString(UCharacter.toUpperCase(i)),
+                            Integer.toHexString(Character.toUpperCase(i)));
+        }
+      }
+      summary(p);
+      p.close();
+    } 
+    catch (Exception e)
+    {
+      e.printStackTrace();
+    }
+  }
+  
+  // private methods ===================================================
+  
+  /**
+  * Comparing types
+  * @param uchartype UCharacter type
+  * @param jchartype java.lang.Character type
+  */
+  private static boolean compareType(int uchartype, int jchartype)
+  {
+    if (uchartype == UCharacterCategory.UNASSIGNED && 
+        jchartype == Character.UNASSIGNED)
+      return true;
+    if (uchartype == UCharacterCategory.UPPERCASE_LETTER && 
+        jchartype == Character.UPPERCASE_LETTER)
+      return true;                                                   
+    if (uchartype == UCharacterCategory.LOWERCASE_LETTER && 
+        jchartype == Character.LOWERCASE_LETTER)
+      return true;                                                   
+    if (uchartype == UCharacterCategory.TITLECASE_LETTER && 
+        jchartype == Character.TITLECASE_LETTER)
+      return true;
+    if (uchartype == UCharacterCategory.MODIFIER_LETTER && 
+        jchartype == Character.MODIFIER_LETTER)
+      return true;
+    if (uchartype == UCharacterCategory.OTHER_LETTER && 
+        jchartype == Character.OTHER_LETTER)
+      return true;
+    if (uchartype == UCharacterCategory.NON_SPACING_MARK && 
+        jchartype == Character.NON_SPACING_MARK)
+      return true;
+    if (uchartype == UCharacterCategory.ENCLOSING_MARK && 
+        jchartype == Character.ENCLOSING_MARK)
+      return true;
+    if (uchartype == UCharacterCategory.COMBINING_SPACING_MARK && 
+        jchartype == Character.COMBINING_SPACING_MARK)
+      return true;
+	  if (uchartype == UCharacterCategory.DECIMAL_DIGIT_NUMBER && 
+        jchartype == Character.DECIMAL_DIGIT_NUMBER)
+      return true;
+	  if (uchartype == UCharacterCategory.LETTER_NUMBER && 
+        jchartype == Character.LETTER_NUMBER)
+      return true;
+	  if (uchartype == UCharacterCategory.OTHER_NUMBER && 
+        jchartype == Character.OTHER_NUMBER)
+      return true;
+	  if (uchartype == UCharacterCategory.SPACE_SEPARATOR && 
+        jchartype == Character.SPACE_SEPARATOR)
+      return true;
+	  if (uchartype == UCharacterCategory.LINE_SEPARATOR && 
+        jchartype == Character.LINE_SEPARATOR)
+      return true;
+	  if (uchartype == UCharacterCategory.PARAGRAPH_SEPARATOR && 
+        jchartype == Character.PARAGRAPH_SEPARATOR)
+      return true;
+	  if (uchartype == UCharacterCategory.CONTROL && 
+        jchartype == Character.CONTROL)
+      return true;
+    if (uchartype == UCharacterCategory.FORMAT && 
+        jchartype == Character.FORMAT)
+      return true;
+	  if (uchartype == UCharacterCategory.PRIVATE_USE && 
+        jchartype == Character.PRIVATE_USE)
+      return true;
+    if (uchartype == UCharacterCategory.SURROGATE && 
+        jchartype == Character.SURROGATE)
+      return true;
+    if (uchartype == UCharacterCategory.DASH_PUNCTUATION && 
+        jchartype == Character.DASH_PUNCTUATION)
+      return true;
+	  if (uchartype == UCharacterCategory.START_PUNCTUATION && 
+        jchartype == Character.START_PUNCTUATION)
+      return true;
+	  if (uchartype == UCharacterCategory.END_PUNCTUATION && 
+        jchartype == Character.END_PUNCTUATION)
+      return true;
+    if (uchartype == UCharacterCategory.CONNECTOR_PUNCTUATION && 
+        jchartype == Character.CONNECTOR_PUNCTUATION)
+      return true;
+    if (uchartype == UCharacterCategory.OTHER_PUNCTUATION && 
+        jchartype == Character.OTHER_PUNCTUATION)
+      return true;
+	  if (uchartype == UCharacterCategory.MATH_SYMBOL && 
+        jchartype == Character.MATH_SYMBOL)
+      return true;
+	  if (uchartype == UCharacterCategory.CURRENCY_SYMBOL && 
+        jchartype == Character.CURRENCY_SYMBOL)
+      return true;
+	  if (uchartype == UCharacterCategory.MODIFIER_SYMBOL && 
+        jchartype == Character.MODIFIER_SYMBOL)
+      return true;
+	  if (uchartype == UCharacterCategory.OTHER_SYMBOL && 
+        jchartype == Character.OTHER_SYMBOL)
+      return true;
+	  if (uchartype == UCharacterCategory.INITIAL_PUNCTUATION && 
+        jchartype == Character.START_PUNCTUATION)
+      return true;
+    if (uchartype == UCharacterCategory.FINAL_PUNCTUATION && 
+        jchartype == Character.END_PUNCTUATION)
+      return true;
+	  /*if (uchartype == UCharacterCategory.GENERAL_OTHER_TYPES && 
+        jchartype == Character.GENERAL_OTHER_TYPES)
+      return true;*/
+    return false;
+	}
+	
+	/**
+	* Difference writing to file
+	* @param f file outputstream
+	* @param ch code point
+	* @param method for testing
+	* @param ucharval UCharacter value after running method
+	* @param charval Character value after running method
+	* @exception thrown when error occur in writing to file
+	*/
+	private static void trackDifference(PrintWriter f, int ch, String method,
+	                                    String ucharval, String charval)
+	  throws Exception
+	{
+	  if (m_hashtable_.containsKey(method))
+	  {
+	    Integer value = (Integer)m_hashtable_.get(method);
+	    m_hashtable_.put(method, new Integer(value.intValue() + 1));
+	  }
+	  else
+	    m_hashtable_.put(method, new Integer(1));
+	  
+	  String temp = Integer.toHexString(ch);
+	  StringBuffer s = new StringBuffer(temp);
+	  for (int i = 0; i < 6 - temp.length(); i ++)
+	    s.append(' ');
+	  temp = UCharacter.getExtendedName(ch);
+	  if (temp == null)
+	    temp = " ";
+	  s.append(temp);
+	  for (int i = 0; i < 73 - temp.length(); i ++)
+	    s.append(' ');
+	  
+	  s.append(method);
+	  for (int i = 0; i < 27 - method.length(); i ++)
+	    s.append(' ');
+	  s.append(ucharval);
+	  for (int i = 0; i < 11 - ucharval.length(); i ++)
+	    s.append(' ');
+	  s.append(charval);
+	  f.println(s.toString());
+	}
+	
+	/**
+	* Does up a summary of the differences
+	* @param f file outputstream
+	*/
+	private static void summary(PrintWriter f)
+	{
+	  f.println("==================================================");
+	  f.println("Summary of differences");
+	  for (Enumeration e = m_hashtable_.keys() ; e.hasMoreElements() ;) 
+	  {
+	    StringBuffer method = new StringBuffer((String)e.nextElement());
+	    int count = ((Integer)m_hashtable_.get(method.toString())).intValue();
+	    for (int i = 30 - method.length(); i > 0; i --)
+	      method.append(' ');
+      f.println(method + "  " + count);
+    }
+	}
+}
+
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java
new file mode 100644
index 0000000..d65bf10
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java
@@ -0,0 +1,84 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java,v $
+ * $Date: 2002/08/13 21:58:38 $
+ * $Revision: 1.2 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacterDirection;
+
+/**
+* Testing UCharacterDirection
+* @author Syn Wee Quek
+* @since July 22 2002
+*/
+public class UCharacterDirectionTest extends TestFmwk
+{    
+    // constructor -----------------------------------------------------------
+    
+    /**
+    * Private constructor to prevent initialisation
+    */
+    public UCharacterDirectionTest()
+    {
+    }
+    
+    // public methods --------------------------------------------------------
+      
+    public static void main(String[] arg)  
+    {
+        try
+        {
+            UCharacterDirectionTest test = new UCharacterDirectionTest();
+            test.run(arg);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+    
+    /**
+    * Gets the name of the argument category
+    * @param category to retrieve name
+    * @return category name
+    */
+    public void TestToString()
+    {
+        String name[] = {"Left-to-Right",
+                         "Right-to-Left", 
+                         "European Number",
+                         "European Number Separator",
+                         "European Number Terminator",
+                         "Arabic Number",
+                         "Common Number Separator",
+                         "Paragraph Separator",
+                         "Segment Separator",
+                         "Whitespace",
+                         "Other Neutrals",
+                         "Left-to-Right Embedding",
+                         "Left-to-Right Override",
+                         "Right-to-Left Arabic",
+                         "Right-to-Left Embedding",
+                         "Right-to-Left Override",
+                         "Pop Directional Format",
+                         "Non-Spacing Mark",
+                         "Boundary Neutral",
+                         "Unassigned"};
+        for (int i = UCharacterDirection.LEFT_TO_RIGHT; 
+                 i < UCharacterDirection.CHAR_DIRECTION_COUNT; i ++) {
+             if (!UCharacterDirection.toString(i).equals(name[i])) {
+                errln("Error toString for direction " + i + " expected " +
+                      name[i]);
+             }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterIteratorTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterIteratorTest.java
new file mode 100644
index 0000000..d1f69ea
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterIteratorTest.java
@@ -0,0 +1,136 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/lang/Attic/UCharacterIteratorTest.java,v $ 
+* $Date: 2002/06/20 01:16:00 $ 
+* $Revision: 1.2 $
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.UnicodeCharacterIterator;
+import com.ibm.icu.text.UTF16;
+
+/**
+* Testing class for UCharacterIterator
+* @author Syn Wee Quek
+* @since april 02 2002
+*/
+public final class UCharacterIteratorTest extends TestFmwk
+{ 
+	// constructor -----------------------------------------------------
+  
+	/**
+	 * Constructor
+	 */
+  	public UCharacterIteratorTest()
+  	{
+  	}
+  
+  	// public methods --------------------------------------------------
+  
+  	/**
+  	* Testing cloning
+  	*/
+  	public void TestClone()
+  	{
+     	 UnicodeCharacterIterator iterator = new UnicodeCharacterIterator("testing");
+     	 UnicodeCharacterIterator cloned = (UnicodeCharacterIterator)iterator.clone();
+     	 char completed = 0;
+     	 while (completed != UnicodeCharacterIterator.DONE) {
+     	 	completed = iterator.next();
+     	 	if (completed != cloned.next()) {
+     	 		errln("Cloned operation failed");
+     	 	}
+     	 }
+  	}
+  	
+  	/**
+  	 * Testing iteration
+  	 */
+  	public void TestIteration()
+  	{
+  		UnicodeCharacterIterator iterator  = new UnicodeCharacterIterator(
+  		                                               ITERATION_STRING_);
+  		UnicodeCharacterIterator iterator2 = new UnicodeCharacterIterator(
+  		                                               ITERATION_STRING_);
+  		if (iterator.first() != ITERATION_STRING_.charAt(0)) {
+  			errln("Iterator failed retrieving first character");
+  		}
+  		if (iterator.last() != ITERATION_STRING_.charAt(
+                                       ITERATION_STRING_.length() - 1)) {
+  			errln("Iterator failed retrieving last character");
+  		}                                               
+  		if (iterator.getBeginIndex() != 0 || 
+  		    iterator.getEndIndex() != ITERATION_STRING_.length()) {
+  		    errln("Iterator failed determining begin and end index");
+  		}  
+  		iterator2.setIndex(0);
+  		iterator.setIndex(0);
+  		int ch = 0;
+  		while (ch != UnicodeCharacterIterator.DONE_CODEPOINT) {
+  			int index = iterator2.getIndex();
+  			ch = iterator2.nextCodePoint();
+  			if (index != ITERATION_SUPPLEMENTARY_INDEX) {
+  				if (ch != (int)iterator.next() && 
+  				    ch != UnicodeCharacterIterator.DONE_CODEPOINT) {
+  					errln("Error mismatch in next() and nextCodePoint()"); 
+  				}
+  			}
+  			else {
+  				if (UTF16.getLeadSurrogate(ch) != iterator.next() ||
+  				    UTF16.getTrailSurrogate(ch) != iterator.next()) {
+  				    errln("Error mismatch in next and nextCodePoint for " +
+  				          "supplementary characters");
+  				}
+  			}
+  		}
+  		iterator.setIndex(ITERATION_STRING_.length());
+  		iterator2.setIndex(ITERATION_STRING_.length());
+  		while (ch != UnicodeCharacterIterator.DONE_CODEPOINT) {
+  			int index = iterator2.getIndex();
+  			ch = iterator2.previousCodePoint();
+  			if (index != ITERATION_SUPPLEMENTARY_INDEX) {
+  				if (ch != (int)iterator.previous() && 
+  				    ch != UnicodeCharacterIterator.DONE_CODEPOINT) {
+  					errln("Error mismatch in previous() and " +
+  					      "previousCodePoint()"); 
+  				}
+  			}
+  			else {
+  				if (UTF16.getLeadSurrogate(ch) != iterator.previous() || 
+  				    UTF16.getTrailSurrogate(ch) != iterator.previous()) {
+  				    errln("Error mismatch in previous and " +
+  				          "previousCodePoint for supplementary characters");
+  				}
+  			}
+  		}
+  	}
+    
+    public static void main(String[] arg)
+    {
+        try
+        {
+            UCharacterIteratorTest test = new UCharacterIteratorTest();
+            test.run(arg);
+        }
+        catch (Exception e)
+        {
+        	e.printStackTrace();
+        }
+    }
+    
+    // private data members ---------------------------------------------
+    
+    private static final String ITERATION_STRING_ =
+					                    "Testing 1 2 3 \ud800\udc00 456";
+	private static final int ITERATION_SUPPLEMENTARY_INDEX = 14;    
+}
+
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterTest.java
new file mode 100755
index 0000000..c1d7337
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterTest.java
@@ -0,0 +1,1283 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/lang/UCharacterTest.java,v $ 
+* $Date: 2002/08/08 22:44:52 $ 
+* $Revision: 1.41 $
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+import com.ibm.icu.lang.UCharacterDirection;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.RangeValueIterator;
+import com.ibm.icu.util.ValueIterator;
+import com.ibm.icu.util.VersionInfo;
+
+import java.io.BufferedReader;
+/**
+* Testing class for UCharacter
+* Mostly following the test cases for ICU
+* @author Syn Wee Quek
+* @since nov 04 2000
+*/
+public final class UCharacterTest extends TestFmwk
+{ 
+  	// private variables =============================================
+  
+  	/**
+  	* ICU4J data version number
+  	*/
+  	private final VersionInfo VERSION_ = VersionInfo.getInstance("3.2.0.0");
+  
+  	// constructor ===================================================
+  
+  	/**
+  	* Constructor
+  	*/
+  	public UCharacterTest()
+  	{
+  	}
+  
+  	// public methods ================================================
+  
+ 	public static void main(String[] arg)
+  	{
+    	try
+    	{
+      		UCharacterTest test = new UCharacterTest();
+      		test.run(arg);
+      		//test.TestGetAge();
+      		//test.TestAdditionalProperties();
+    	}
+    	catch (Exception e)
+    	{
+      	e.printStackTrace();
+    	}
+  	}
+  
+  	/**
+  	* Testing the letter and number determination in UCharacter
+  	*/
+  	public void TestLetterNumber()
+  	{
+    	for (int i = 0x0041; i < 0x005B; i ++) 
+      	if (!UCharacter.isLetter(i))
+        	errln("FAIL \\u" + hex(i) + " expected to be a letter");
+        
+    	for (int i = 0x0660; i < 0x066A; i ++) 
+      	if (UCharacter.isLetter(i))
+        	errln("FAIL \\u" + hex(i) + " expected not to be a letter");
+    
+    	for (int i = 0x0660; i < 0x066A; i ++) 
+      	if (!UCharacter.isDigit(i))
+        	errln("FAIL \\u" + hex(i) + " expected to be a digit");
+    
+    	for (int i = 0x0041; i < 0x005B; i ++) 
+      		if (!UCharacter.isLetterOrDigit(i))
+        		errln("FAIL \\u" + hex(i) + " expected not to be a digit");
+        
+    	for (int i = 0x0660; i < 0x066A; i ++) 
+      		if (!UCharacter.isLetterOrDigit(i))
+        		errln("FAIL \\u" + hex(i) + 
+              		"expected to be either a letter or a digit");
+	}
+
+  	/**
+  	* Tests for space determination in UCharacter
+  	*/
+  	public void TestSpaces()
+  	{
+    	int spaces[] = {0x0020, 0x0000a0, 0x002000, 0x002001, 0x002005};
+    	int nonspaces[] = {0x61, 0x0062, 0x0063, 0x0064, 0x0074};
+    	int whitespaces[] = {0x2008, 0x002009, 0x00200a, 0x00001c, 0x00000c};
+    	int nonwhitespaces[] = {0x61, 0x0062, 0x003c, 0x0028, 0x003f};
+                       
+    	int size = spaces.length;
+    	for (int i = 0; i < size; i ++)
+    	{
+      		if (!UCharacter.isSpaceChar(spaces[i]))
+      		{
+        		errln("FAIL \\u" + hex(spaces[i]) + 
+              		" expected to be a space character");
+        		break;
+      		}
+      
+      		if (UCharacter.isSpaceChar(nonspaces[i]))
+      		{
+        		errln("FAIL \\u" + hex(nonspaces[i]) + 
+          	    " expected not to be space character");
+        		break;
+      		}
+ 
+     	 	if (!UCharacter.isWhitespace(whitespaces[i]))
+      		{
+        		errln("FAIL \\u" + hex(whitespaces[i]) + 
+              			" expected to be a white space character");
+        		break;
+      		}
+      		if (UCharacter.isWhitespace(nonwhitespaces[i]))
+      		{
+       	 		errln("FAIL \\u" + hex(nonwhitespaces[i]) + 
+              				" expected not to be a space character");
+        		break;
+      		}
+      		logln("Ok    \\u" + hex(spaces[i]) + " and \\u" + 
+      		      hex(nonspaces[i]) + " and \\u" + hex(whitespaces[i]) + 
+      		      " and \\u" + hex(nonwhitespaces[i]));
+    	}
+  	}
+  
+  	/**
+  	* Tests for defined and undefined characters
+  	*/
+  	public void TestDefined()
+  	{
+    	int undefined[] = {0xfff1, 0xfff7, 0xfa6b};
+    	int defined[] = {0x523E, 0x004f88, 0x00fffd};
+    
+    	int size = undefined.length;
+    	for (int i = 0; i < size; i ++) 
+    	{
+      		if (UCharacter.isDefined(undefined[i]))
+      		{
+        		errln("FAIL \\u" + hex(undefined[i]) + 
+          	    			" expected not to be defined");
+        		break;
+      		}
+      		if (!UCharacter.isDefined(defined[i]))
+      		{
+        		errln("FAIL \\u" + hex(defined[i]) + " expected defined");
+        		break;
+      		}
+    	}
+  	}
+  
+  	/**
+  	* Tests for base characters and their cellwidth
+  	*/
+  	public void TestBase()
+  	{
+    	int base[] = {0x0061, 0x000031, 0x0003d2};
+    	int nonbase[] = {0x002B, 0x000020, 0x00203B};    
+    	int size = base.length;
+    	for (int i = 0; i < size; i ++) 
+    	{
+      		if (UCharacter.isBaseForm(nonbase[i]))
+      		{
+       		 	errln("FAIL \\u" + hex(nonbase[i]) + 
+              				" expected not to be a base character");
+        		break;
+      		}
+      		if (!UCharacter.isBaseForm(base[i]))
+      		{
+        		errln("FAIL \\u" + hex(base[i]) + 
+        		      " expected to be a base character");
+        		break;
+      		}
+    	}
+  	}
+    
+  	/**
+  	* Tests for digit characters 
+  	*/
+  	public void TestDigits()
+  	{
+    	int digits[] = {0x0030, 0x000662, 0x000F23, 0x000ED5, 0x002160};
+    
+    	//special characters not in the properties table
+     	int digits2[] = {0x3007, 0x004e00, 0x004e8c, 0x004e09, 0x0056d8, 
+     		             0x004e94, 0x00516d, 0x4e03, 0x00516b, 0x004e5d}; 
+    	int nondigits[] = {0x0010, 0x000041, 0x000122, 0x0068FE};
+    
+    	int digitvalues[] = {0, 2, 3, 5, 1};
+    	int digitvalues2[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};     
+    
+    	int size  = digits.length;
+    	for (int i = 0; i < size; i ++) 
+      		if (UCharacter.isDigit(digits[i]) && 
+          		UCharacter.digit(digits[i]) != digitvalues[i]) 
+      		{
+       		 	errln("FAIL \\u" + hex(digits[i]) + 
+              			" expected digit with value " + digitvalues[i]);
+        		break;
+      		}
+    
+    	size = nondigits.length;
+    	for (int i = 0; i < size; i ++)
+      		if (UCharacter.isDigit(nondigits[i]))
+      		{
+        		errln("FAIL \\u" + hex(nondigits[i]) + " expected nondigit");
+        		break;
+      		}
+      
+    	size = digits2.length;
+    	for (int i = 0; i < 10; i ++) 
+      		if (UCharacter.isDigit(digits2[i]) &&
+          		UCharacter.digit(digits2[i]) != digitvalues2[i]) 
+      		{
+        		errln("FAIL \\u" + hex(digits2[i]) + 
+              		" expected digit with value " + digitvalues2[i]);
+        		break;
+      		}
+  	}
+  
+  	/**
+   	*  Tests for numeric characters
+   	*/
+  	public void TestNumeric()
+  	{
+		for (int i = '0'; i < '9'; i ++) {
+			int n1 = UCharacter.getNumericValue(i);
+			int n2 = UCharacter.getUnicodeNumericValue(i);
+			if (n1 != n2 ||  n1 != (i - '0')) {
+				errln("Numeric value of " + (char)i + " expected to be " +
+				      (i - '0'));
+			}
+		}
+		for (int i = 'A'; i < 'F'; i ++) {
+			int n1 = UCharacter.getNumericValue(i);
+			int n2 = UCharacter.getUnicodeNumericValue(i);
+			if (n2 != -1 ||  n1 != (i - 'A' + 10)) {
+				errln("Numeric value of " + (char)i + " expected to be " +
+				      (i - 'A' + 10));
+			}
+		}
+		for (int i = 0xFF21; i < 0xFF26; i ++) {
+			// testing full wideth latin characters A-F
+			int n1 = UCharacter.getNumericValue(i);
+			int n2 = UCharacter.getUnicodeNumericValue(i);
+			if (n2 != -1 ||  n1 != (i - 0xFF21 + 10)) {
+				errln("Numeric value of " + (char)i + " expected to be " +
+				      (i - 0xFF21 + 10));
+			}
+		}
+		// testing han numbers
+		int han[] = {0x96f6, 0, 0x58f9, 1, 0x8cb3, 2, 0x53c3, 3, 
+			         0x8086, 4, 0x4f0d, 5, 0x9678, 6, 0x67d2, 7, 
+			         0x634c, 8, 0x7396, 9, 0x5341, 10, 0x62fe, 10,
+			         0x767e, 100, 0x4f70, 100, 0x5343, 1000, 0x4edf, 1000,
+			         0x824c, 10000, 0x5104, 100000000};
+		for (int i = 0; i < han.length; i += 2) {
+			if (UCharacter.getHanNumericValue(han[i]) != han[i + 1]) {
+				errln("Numeric value of \\u" + 
+				      Integer.toHexString(han[i]) +	" expected to be " + 
+				      han[i + 1]);
+			}
+		}
+  	}
+
+  	/**
+  	* Tests for version 
+  	*/
+  	public void TestVersion()
+  	{
+    	if (!UCharacter.getUnicodeVersion().equals(VERSION_))
+      		errln("FAIL expected " + VERSION_);
+  	}
+  
+  	/**
+  	* Tests for control characters
+  	*/
+  	public void TestISOControl()
+  	{
+    	int control[] = {0x001b, 0x000097, 0x000082};
+    	int noncontrol[] = {0x61, 0x000031, 0x0000e2};
+    
+    	int size = control.length;
+    	for (int i = 0; i < size; i ++) 
+    	{
+      		if (!UCharacter.isISOControl(control[i]))
+      		{
+        		errln("FAIL 0x" + Integer.toHexString(control[i]) + 
+         	     		" expected to be a control character");
+        		break;
+      		}  
+      		if (UCharacter.isISOControl(noncontrol[i]))
+      		{
+        		errln("FAIL 0x" + Integer.toHexString(noncontrol[i]) + 
+              			" expected to be not a control character");
+        		break;
+      		}
+      
+      		logln("Ok    0x" + Integer.toHexString(control[i]) + " and 0x" +
+            		Integer.toHexString(noncontrol[i]));
+    	}
+  	}
+  	
+  	/**
+  	 * Test Supplementary
+  	 */
+  	public void TestSupplementary()
+  	{
+  		for (int i = 0; i < 0x10000; i ++) {
+  			if (UCharacter.isSupplementary(i)) {
+  				errln("Codepoint \\u" + Integer.toHexString(i) + 
+  				      " is not supplementary");
+  			}
+  		}
+  		for (int i = 0x10000; i < 0x10FFFF; i ++) {
+  			if (!UCharacter.isSupplementary(i)) {
+  				errln("Codepoint \\u" + Integer.toHexString(i) + 
+  				      " is supplementary");
+  			}
+  		}
+  	}
+  	
+  	/**
+  	 * Test mirroring
+  	 */
+  	public void TestMirror()
+  	{
+  		if (!(UCharacter.isMirrored(0x28) && UCharacter.isMirrored(0xbb) && 
+  		      UCharacter.isMirrored(0x2045) && UCharacter.isMirrored(0x232a)
+  		      && !UCharacter.isMirrored(0x27) && 
+  		      !UCharacter.isMirrored(0x61) && !UCharacter.isMirrored(0x284) 
+  		      && !UCharacter.isMirrored(0x3400))) {
+        	errln("isMirrored() does not work correctly");
+    	}
+
+    	if (!(UCharacter.getMirror(0x3c) == 0x3e && 
+    	      UCharacter.getMirror(0x5d) == 0x5b && 
+              UCharacter.getMirror(0x208d) == 0x208e && 
+              UCharacter.getMirror(0x3017) == 0x3016 &&
+         	  UCharacter.getMirror(0x2e) == 0x2e && 
+         	  UCharacter.getMirror(0x6f3) == 0x6f3 && 
+         	  UCharacter.getMirror(0x301c) == 0x301c && 
+         	  UCharacter.getMirror(0xa4ab) == 0xa4ab)) {
+        	errln("getMirror() does not work correctly");
+    	}
+	}
+  
+  	/**
+  	* Tests for printable characters
+  	*/
+  	public void TestPrint()
+  	{
+    	int printable[] = {0x0042, 0x00005f, 0x002014};
+    	int nonprintable[] = {0x200c, 0x00009f, 0x00001b};
+    
+    	int size = printable.length;
+    	for (int i = 0; i < size; i ++)
+    	{
+      		if (!UCharacter.isPrintable(printable[i]))
+      		{
+       	 		errln("FAIL \\u" + hex(printable[i]) + 
+              		" expected to be a printable character");
+        		break;
+      		}
+      		if (UCharacter.isPrintable(nonprintable[i]))
+      		{
+        		errln("FAIL \\u" + hex(nonprintable[i]) +
+              			" expected not to be a printable character");
+        		break;
+      		}
+      		logln("Ok    \\u" + hex(printable[i]) + " and \\u" + 
+            		hex(nonprintable[i]));
+    	}
+    
+    	// test all ISO 8 controls
+    	for (int ch = 0; ch <= 0x9f; ++ ch) {
+      		if (ch == 0x20) {
+      			// skip ASCII graphic characters and continue with DEL
+        		ch = 0x7f;
+      		}
+      		if (UCharacter.isPrintable(ch)) {
+        		errln("Fail \\u" + hex(ch) + 
+              		" is a ISO 8 control character hence not printable\n");
+      		}
+    	}
+
+    	/* test all Latin-1 graphic characters */
+    	for (int ch = 0x20; ch <= 0xff; ++ ch) {
+      		if (ch == 0x7f) {
+        		ch = 0xa0;
+      		}
+      		if (!UCharacter.isPrintable(ch)) {
+        		errln("Fail \\u" + hex(ch) + 
+        		      " is a Latin-1 graphic character\n");
+        	}
+    	}
+  	}
+  
+  	/** 
+  	* Testing for identifier characters
+  	*/
+  	public void TestIdentifier()
+  	{
+    	int unicodeidstart[] = {0x0250, 0x0000e2, 0x000061};
+    	int nonunicodeidstart[] = {0x2000, 0x00000a, 0x002019};
+    	int unicodeidpart[] = {0x005f, 0x000032, 0x000045};
+    	int nonunicodeidpart[] = {0x2030, 0x0000a3, 0x000020};
+    	int idignore[] = {0x0006, 0x0010, 0x206b};
+    	int nonidignore[] = {0x0075, 0x0000a3, 0x000061};
+    
+    	int size = unicodeidstart.length;
+    	for (int i = 0; i < size; i ++) 
+    	{
+      		if (!UCharacter.isUnicodeIdentifierStart(unicodeidstart[i]))
+      		{
+        		errln("FAIL \\u" + hex(unicodeidstart[i]) + 
+              		" expected to be a unicode identifier start character");
+        		break;
+      		}
+      		if (UCharacter.isUnicodeIdentifierStart(nonunicodeidstart[i]))
+      		{
+        		errln("FAIL \\u" + hex(nonunicodeidstart[i]) + 
+              			" expected not to be a unicode identifier start " + 
+              			"character");
+        		break;
+      		}
+      		if (!UCharacter.isUnicodeIdentifierPart(unicodeidpart[i]))
+      		{
+        		errln("FAIL \\u" + hex(unicodeidpart[i]) + 
+              		" expected to be a unicode identifier part character");
+        		break;
+      		}
+      		if (UCharacter.isUnicodeIdentifierPart(nonunicodeidpart[i]))
+      		{
+        		errln("FAIL \\u" + hex(nonunicodeidpart[i]) + 
+              			" expected not to be a unicode identifier part " +
+              			"character");
+        		break;
+      		}
+            if (!UCharacter.isIdentifierIgnorable(idignore[i]))
+      		{
+        		errln("FAIL \\u" + hex(idignore[i]) + 
+              			" expected to be a ignorable unicode character");
+        		break;
+      		}
+      		if (UCharacter.isIdentifierIgnorable(nonidignore[i]))
+      		{
+        		errln("FAIL \\u" + hex(nonidignore[i]) + 
+              		" expected not to be a ignorable unicode character");
+        		break;
+      		}
+      		logln("Ok    \\u" + hex(unicodeidstart[i]) + " and \\u" +
+            		hex(nonunicodeidstart[i]) + " and \\u" + 
+            		hex(unicodeidpart[i]) + " and \\u" + 
+            		hex(nonunicodeidpart[i]) + " and \\u" +
+            		hex(idignore[i]) + " and \\u" + hex(nonidignore[i]));
+    	}
+  	}
+  
+  	/**
+  	* Tests for the character types, direction.<br>
+  	* This method reads in UnicodeData.txt file for testing purposes. A 
+  	* default path is provided relative to the src path, however the user 
+  	* could set a system property to change the directory path.<br>
+  	* e.g. java -DUnicodeData="data_directory_path" 
+  	* com.ibm.icu.dev.test.lang.UCharacterTest
+  	*/
+  	public void TestUnicodeData()
+  	{
+    	// this is the 2 char category types used in the UnicodeData file
+    	final String TYPE = 
+      		"LuLlLtLmLoMnMeMcNdNlNoZsZlZpCcCfCoCsPdPsPePcPoSmScSkSoPiPf";
+    
+    	// directory types used in the UnicodeData file
+    	// padded by spaces to make each type size 4
+    	final String DIR = 
+      		"L   R   EN  ES  ET  AN  CS  B   S   WS  ON  LRE LRO AL  RLE RLO PDF NSM BN  ";
+      
+    	final int LASTUNICODECHAR = 0xFFFD;
+    	int ch = 0,
+        	index = 0,
+        	type = 0,
+        	dir = 0;
+	
+		try
+		{
+	  		BufferedReader input = TestUtil.getDataReader(
+	  		                                    "unicode/UnicodeData.txt");
+	    
+      		while (ch != LASTUNICODECHAR)
+      		{
+       	 		String s = input.readLine();
+        		// geting the unicode character, its type and its direction
+        		ch = Integer.parseInt(s.substring(0, 4), 16);
+        		index = s.indexOf(';', 5);
+        		String t = s.substring(index + 1, index + 3);
+        		index += 4;
+        		int cc = Integer.parseInt(s.substring(index, s.indexOf(';', 
+        		                                      index)));
+        		index = s.indexOf(';', index);
+        		String d = s.substring(index + 1, s.indexOf(';', index + 1));
+        
+        		// testing the category
+        		// we override the general category of some control 
+        		// characters
+        		type = TYPE.indexOf(t);
+        		if (type < 0)
+            		type = 0;
+        		else 
+            		type = (type >> 1) + 1;  
+        		if (UCharacter.getType(ch) != type)
+        		{
+          			errln("FAIL \\u" + hex(ch) + " expected type " + 
+                			type);
+          			break;
+        		}
+        
+        		// testing combining class
+        		if (UCharacter.getCombiningClass(ch) != cc)
+        		{
+          			errln("FAIL \\u" + hex(ch) + " expected combining " +
+                			"class " + cc);
+          			break;
+        		}
+        
+        		// testing the direction
+        		if (d.length() == 1)
+          			d = d + "   ";  
+          
+        		dir = DIR.indexOf(d) >> 2;
+        		if (UCharacter.getDirection(ch) != dir) 
+        		{
+          			errln("FAIL \\u" + hex(ch) + 
+                		" expected wrong direction " + dir);
+          			break;
+        		}
+      		}
+      		input.close();
+    	}
+    	catch (Exception e)
+    	{
+      		e.printStackTrace();
+    	}
+  	}
+  
+  
+  	/**
+  	* Test for the character names
+  	*/
+  	public void TestNames()
+  	{
+    	int c[] = {0x0061, 0x000284, 0x003401, 0x007fed, 0x00ac00, 0x00d7a3, 
+    		       0x00d800, 0x00dc00, 0xff08, 0x00ffe5, 0x00ffff, 
+    		       0x0023456};
+    	String name[] = {"LATIN SMALL LETTER A", 
+                     "LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK", 
+                     "CJK UNIFIED IDEOGRAPH-3401", 
+                     "CJK UNIFIED IDEOGRAPH-7FED", "HANGUL SYLLABLE GA", 
+                     "HANGUL SYLLABLE HIH", "", "",
+                     "FULLWIDTH LEFT PARENTHESIS",
+                     "FULLWIDTH YEN SIGN", "", "CJK UNIFIED IDEOGRAPH-23456"};
+    	String oldname[] = {"", "LATIN SMALL LETTER DOTLESS J BAR HOOK", "", 
+    		            "",
+                        "", "", "", "", "FULLWIDTH OPENING PARENTHESIS", "", 
+                        "", ""};
+    	String extendedname[] = {"LATIN SMALL LETTER A", 
+                             "LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK",
+                             "CJK UNIFIED IDEOGRAPH-3401",
+                             "CJK UNIFIED IDEOGRAPH-7FED",
+                             "HANGUL SYLLABLE GA",
+                             "HANGUL SYLLABLE HIH",
+                             "<lead surrogate-D800>",
+                             "<trail surrogate-DC00>",
+                             "FULLWIDTH LEFT PARENTHESIS",
+                             "FULLWIDTH YEN SIGN",
+                             "<noncharacter-FFFF>",
+                             "CJK UNIFIED IDEOGRAPH-23456"};
+                             
+    	int size = c.length;
+    	String str;
+    	int uc;
+    
+        for (int i = 0; i < size; i ++) 
+    	{
+      		// modern Unicode character name
+      		str = UCharacter.getName(c[i]);
+      		if ((str == null && name[i].length() > 0) || 
+          		(str != null && !str.equals(name[i])))
+      		{
+        		errln("FAIL \\u" + hex(c[i]) + " expected name " +
+              			name[i]);
+        		break;
+      		}
+     
+      		// 1.0 Unicode character name
+      		str = UCharacter.getName1_0(c[i]);
+      		if ((str == null && oldname[i].length() > 0) || 
+          		(str != null && !str.equals(oldname[i])))
+      		{
+        		errln("FAIL \\u" + hex(c[i]) + " expected 1.0 name " +
+              			oldname[i]);
+        		break;
+      		}
+      
+      		// extended character name
+      		str = UCharacter.getExtendedName(c[i]);
+      		if (str == null || !str.equals(extendedname[i]))
+      		{
+        		errln("FAIL \\u" + hex(c[i]) + " expected extended name " +
+              			extendedname[i]);
+        		break;
+      		}
+      
+      		// retrieving unicode character from modern name
+      		uc = UCharacter.getCharFromName(name[i]);
+      		if (uc != c[i] && name[i].length() != 0)
+      		{
+        		errln("FAIL " + name[i] + " expected character \\u" + 
+        		      hex(c[i]));
+        		break;
+      		}
+      
+      		//retrieving unicode character from 1.0 name
+      		uc = UCharacter.getCharFromName1_0(oldname[i]);
+      		if (uc != c[i] && oldname[i].length() != 0)
+      		{
+        		errln("FAIL " + oldname[i] + " expected 1.0 character \\u" + 
+        		      hex(c[i]));
+        		break;
+      		}
+      
+      		//retrieving unicode character from 1.0 name
+      		uc = UCharacter.getCharFromExtendedName(extendedname[i]);
+      		if (uc != c[i] && i != 0 && (i == 1 || i == 6))
+      		{
+        		errln("FAIL " + extendedname[i] + 
+        		      " expected extended character \\u" + hex(c[i]));
+        		break;
+      		}
+    	}
+    
+    	// test getName works with mixed-case names (new in 2.0)
+    	if (0x61 != UCharacter.getCharFromName("LATin smALl letTER A")) { 
+        	errln("FAIL: 'LATin smALl letTER A' should result in character "
+        	      + "U+0061"); 
+    	} 
+	    
+        if (getInclusion() >= 5) {
+            // extra testing different from icu
+        	for (int i = UCharacter.MIN_VALUE; i < UCharacter.MAX_VALUE; i ++)
+        	{
+          		str = UCharacter.getName(i);
+          		if (str != null && UCharacter.getCharFromName(str) != i)
+          		{	
+            		errln("FAIL \\u" + hex(i) + " " + str  + 
+                  						" retrieval of name and vice versa" );
+            		break;
+          		}
+        	}
+        }
+  	}
+  
+  	/**
+   	* Testing name iteration
+   	*/
+  	public void TestNameIteration()
+  	{
+  		ValueIterator iterator = UCharacter.getExtendedNameIterator();
+  		ValueIterator.Element element = new ValueIterator.Element();
+   	 	ValueIterator.Element old     = new ValueIterator.Element();
+    	// testing subrange
+    	iterator.setRange(-10, -5);
+    	if (iterator.next(element)) {
+    		errln("Fail, expected iterator to return false when range is set outside the meaningful range");
+    	}
+    	iterator.setRange(0x110000, 0x111111);
+    	if (iterator.next(element)) {
+    		errln("Fail, expected iterator to return false when range is set outside the meaningful range");
+    	}
+    	try {
+    		iterator.setRange(50, 10);
+    		errln("Fail, expected exception when encountered invalid range");
+    	} catch (Exception e) {
+    	}
+    		
+    	iterator.setRange(-10, 10);
+    	if (!iterator.next(element) || element.integer != 0) {
+    		errln("Fail, expected iterator to return 0 when range start limit is set outside the meaningful range");
+    	}
+    	
+    	iterator.setRange(0x10FFFE, 0x200000);
+    	int last = 0;
+    	while (iterator.next(element)) {
+    		last = element.integer;
+    	}
+    	if (last != 0x10FFFF) {
+    		errln("Fail, expected iterator to return 0x10FFFF when range end limit is set outside the meaningful range");
+    	}
+    	
+    	iterator = UCharacter.getNameIterator();	
+ 		iterator.setRange(0xF, 0x45);
+ 		while (iterator.next(element)) {
+    		if (element.integer <= old.integer) {
+         		errln("FAIL next returned a less codepoint \\u" + 
+         	      	Integer.toHexString(element.integer) + " than \\u" + 
+         	      	Integer.toHexString(old.integer));
+         		break;
+        	}
+        	if (!UCharacter.getName(element.integer).equals(element.value)) 
+        	{
+         		errln("FAIL next codepoint \\u" + 
+         	      	Integer.toHexString(element.integer) + 
+         	      	" does not have the expected name " + 
+         	      	UCharacter.getName(element.integer) + 
+         	      	" instead have the name " + (String)element.value);
+         		break;
+        	}
+        	old.integer = element.integer; 
+    	}
+    
+    	iterator.reset();
+    	iterator.next(element);
+    	if (element.integer != 0x20) {
+    		errln("FAIL reset in iterator");
+    	}
+ 
+    	iterator.setRange(0, 0x110000);
+    	old.integer = 0; 
+    	while (iterator.next(element)) {
+    		if (element.integer != 0 && element.integer <= old.integer) {
+         		errln("FAIL next returned a less codepoint \\u" + 
+         	      	Integer.toHexString(element.integer) + " than \\u" + 
+         	      	Integer.toHexString(old.integer));
+         		break;
+        	}
+        	if (!UCharacter.getName(element.integer).equals(element.value)) 
+        	{
+         		errln("FAIL next codepoint \\u" + 
+         	      		Integer.toHexString(element.integer) + 
+         	      		" does not have the expected name " + 
+         	      		UCharacter.getName(element.integer) + 
+         	      		" instead have the name " + (String)element.value);
+         		break;
+        	}
+        	for (int i = old.integer + 1; i < element.integer; i ++) {
+        		if (UCharacter.getName(i) != null) {
+         			errln("FAIL between codepoints are not null \\u" + 
+         	      			Integer.toHexString(old.integer) + " and " + 
+         	      			Integer.toHexString(element.integer) + " has " + 
+         	      			Integer.toHexString(i) + " with a name " + 
+         	      			UCharacter.getName(i));
+         			break;
+        		}
+        	}
+        	old.integer = element.integer; 
+    	}
+    
+    	iterator = UCharacter.getExtendedNameIterator();
+    	old.integer = 0;
+    	while (iterator.next(element)) {
+    		if (element.integer != 0 && element.integer != old.integer) {
+         		errln("FAIL next returned a codepoint \\u" + 
+         	      		Integer.toHexString(element.integer) + 
+         	      		" different from \\u" + 
+         	      		Integer.toHexString(old.integer));
+         		break;
+        	}
+        	if (!UCharacter.getExtendedName(element.integer).equals(
+                                                          element.value)) {
+         		errln("FAIL next codepoint \\u" + 
+         	      	Integer.toHexString(element.integer) + 
+         	      	" name should be "
+         	      	+ UCharacter.getExtendedName(element.integer) + 
+         	      	" instead of " + (String)element.value);
+         		break;
+        	}
+        	old.integer++; 
+    	}
+		iterator = UCharacter.getName1_0Iterator();
+ 	   	old.integer = 0;
+    	while (iterator.next(element)) {
+    		logln(Integer.toHexString(element.integer) + " " +
+	      											(String)element.value);
+    		if (element.integer != 0 && element.integer <= old.integer) {
+         		errln("FAIL next returned a less codepoint \\u" + 
+         	      	Integer.toHexString(element.integer) + " than \\u" + 
+         	      	Integer.toHexString(old.integer));
+         		break;
+        	}
+        	if (!element.value.equals(UCharacter.getName1_0(
+        	                                            element.integer))) {
+         		errln("FAIL next codepoint \\u" + 
+         	      		Integer.toHexString(element.integer) + 
+         	      		" name cannot be null");
+         		break;
+        	}
+        	for (int i = old.integer + 1; i < element.integer; i ++) {
+        		if (UCharacter.getName1_0(i) != null) {
+         			errln("FAIL between codepoints are not null \\u" + 
+         	      		Integer.toHexString(old.integer) + " and " + 
+         	      		Integer.toHexString(element.integer) + " has " + 
+         	      		Integer.toHexString(i) + " with a name " + 
+         	      		UCharacter.getName1_0(i));
+         			break;
+        		}
+        	}
+        	old.integer = element.integer; 
+    	}
+  	}
+  
+  	/**
+  	* Testing the for illegal characters
+  	*/
+  	public void TestIsLegal() 
+  	{
+    	int illegal[] = {0xFFFE, 0x00FFFF, 0x005FFFE, 0x005FFFF, 0x0010FFFE,
+    		             0x0010FFFF, 0x110000, 0x00FDD0, 0x00FDDF, 0x00FDE0,
+    		             0x00FDEF, 0xD800, 0xDC00, -1};
+    	int legal[] = {0x61, 0x00FFFD, 0x0010000, 0x005FFFD, 0x0060000, 
+    		           0x0010FFFD, 0xFDCF, 0x00FDF0};
+    	for (int count = 0; count < illegal.length; count ++) {
+        	if (UCharacter.isLegal(illegal[count])) {
+            	errln("FAIL \\u" + hex(illegal[count]) + 
+                    	" is not a legal character");
+        	}
+    	}
+    
+    	for (int count = 0; count < legal.length; count ++) {
+        	if (!UCharacter.isLegal(legal[count])) {
+            	errln("FAIL \\u" + hex(legal[count]) + 
+            	                                   " is a legal character");
+        	}
+    	}
+    	
+    	String illegalStr = "This is an illegal string ";
+    	String legalStr = "This is a legal string ";
+    	
+    	for (int count = 0; count < illegal.length; count ++) {
+    		StringBuffer str = new StringBuffer(illegalStr);
+    		if (illegal[count] < 0x10000) {
+    			str.append((char)illegal[count]);
+    		}
+    		else {
+    			char lead = UTF16.getLeadSurrogate(illegal[count]);
+    			char trail = UTF16.getTrailSurrogate(illegal[count]);
+    			str.append(lead);
+    			str.append(trail);
+    		}
+        	if (UCharacter.isLegal(str.toString())) {
+            	errln("FAIL " + hex(str.toString()) + 
+            	      " is not a legal string");
+        	}
+    	}
+    
+    	for (int count = 0; count < legal.length; count ++) {
+    		StringBuffer str = new StringBuffer(legalStr);
+    		if (legal[count] < 0x10000) {
+    			str.append((char)legal[count]);
+    		}
+    		else {
+    			char lead = UTF16.getLeadSurrogate(legal[count]);
+    			char trail = UTF16.getTrailSurrogate(legal[count]);
+    			str.append(lead);
+    			str.append(trail);
+    		}
+        	if (!UCharacter.isLegal(str.toString())) {
+            	errln("FAIL " + hex(str.toString()) + " is a legal string");
+        	}
+    	}
+  	}
+  
+  	/**
+  	 * Test getCodePoint
+  	 */
+  	public void TestCodePoint()
+  	{
+  		int ch = 0x10000;
+  		for (char i = 0xD800; i < 0xDC00; i ++) {
+  			for (char j = 0xDC00; j <= 0xDFFF; j ++) {
+  				if (UCharacter.getCodePoint(i, j) != ch) {
+  					errln("Error getting codepoint for surrogate " +
+  					      "characters \\u"
+  					      + Integer.toHexString(i) + " \\u" + 
+  					      Integer.toHexString(j));	      
+  				}
+  				ch ++;
+  			}
+  		}
+  		try 
+  		{
+  			UCharacter.getCodePoint((char)0xD7ff, (char)0xDC00);
+  			errln("Invalid surrogate characters should not form a " +
+  			      "supplementary");
+  		} catch(Exception e) {
+  		}
+  		for (char i = 0; i < 0xFFFF; i++) {
+  			if (i == 0xFFFE || 
+  			    (i >= 0xD800 && i <= 0xDFFF) || 
+  			    (i >= 0xFDD0 && i <= 0xFDEF)) {
+  			    // not a character
+  				try {
+  					UCharacter.getCodePoint(i);
+  					errln("Not a character is not a valid codepoint");
+  				} catch (Exception e) {
+  				}
+  			}
+  			else {
+  				if (UCharacter.getCodePoint(i) != i) {
+  					errln("A valid codepoint should return itself");
+  				}
+  			}
+  		}
+  	}
+  	
+  	/**
+  	* This method is alittle different from the type test in icu4c.
+  	* But combined with testUnicodeData, they basically do the same thing.
+  	*/
+  	public void TestIteration() 
+  	{
+      	int limit     = 0;
+      	int prevtype  = -1;
+        int test[][]={{0x41, UCharacterCategory.UPPERCASE_LETTER},
+                        {0x308, UCharacterCategory.NON_SPACING_MARK},
+                        {0xfffe, UCharacterCategory.GENERAL_OTHER_TYPES},
+                        {0xe0041, UCharacterCategory.FORMAT},
+                        {0xeffff, UCharacterCategory.UNASSIGNED}};
+
+        // default Bidi classes for unassigned code points 
+        int defaultBidi[][]={{ 0x0590, UCharacterDirection.LEFT_TO_RIGHT },
+            { 0x0600, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x07C0, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0xFB1D, UCharacterDirection.LEFT_TO_RIGHT },
+            { 0xFB50, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0xFE00, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0xFE70, UCharacterDirection.LEFT_TO_RIGHT },
+            { 0xFF00, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0x110000, UCharacterDirection.LEFT_TO_RIGHT }};
+    
+      	RangeValueIterator iterator = UCharacter.getTypeIterator();
+      	RangeValueIterator.Element result = new RangeValueIterator.Element();
+      	while (iterator.next(result)) {
+          	if (result.start != limit) {
+              	errln("UCharacterIteration failed: Ranges not continuous " + 
+                    	"0x" + Integer.toHexString(result.start));
+          	}
+          
+          	limit = result.limit;
+          	if (result.value == prevtype) {
+              	errln("Type of the next set of enumeration should be different");
+          	}
+          	prevtype = result.value;
+          
+		  	for (int i = result.start; i < limit; i ++) {
+              	int temptype = UCharacter.getType(i);
+              	if (temptype != result.value) {
+                  	errln("UCharacterIteration failed: Codepoint \\u" + 
+                        	Integer.toHexString(i) + " should be of type " +
+                        	temptype + " not " + result.value);
+              	}
+          	}
+            
+            for (int i = 0; i < test.length; ++ i) {
+                if (result.start <= test[i][0] && test[i][0] < result.limit) {
+                    if (result.value != test[i][1]) {
+                        errln("error: getTypes() has range [" 
+                              + Integer.toHexString(result.start) + ", " 
+                              + Integer.toHexString(result.limit) 
+                              + "] with type " + result.value 
+                              + " instead of [" 
+                              + Integer.toHexString(test[i][0]) + ", " 
+                              + Integer.toHexString(test[i][1]));
+                    }
+                }
+            }
+        
+            // LineBreak.txt specifies:
+            //   #  - Assigned characters that are not listed explicitly are given the value
+            //   #    "AL".
+            //   #  - Unassigned characters are given the value "XX".
+            //
+            // PUA characters are listed explicitly with "XX".
+            // Verify that no assigned character has "XX".
+            /* synwee this is not ported to java yet
+             * if (result.value != UCharacterCategory.UNASSIGNED 
+                && result.value != UCharacterCategory.PRIVATE_USE) {
+                int c = result.start;
+                while (c < result.limit) {
+                    if (0 == u_getIntPropertyValue(c, UCHAR_LINE_BREAK)) {
+                        log_err("error UCHAR_LINE_BREAK(assigned U+%04lx)=XX\n", c);
+                    }
+                    ++c;
+                }
+            }
+            */
+        
+            /*
+             * Verify default Bidi classes.
+             * See table 3-7 "Bidirectional Character Types" in UAX #9.
+             * http://www.unicode.org/reports/tr9/
+             */
+            if (result.value == UCharacterCategory.UNASSIGNED 
+                || result.value == UCharacterCategory.PRIVATE_USE) {
+                int c = result.start;
+                for (int i = 0; i < defaultBidi.length && c < result.limit; 
+                     ++ i) {
+                    if (c < defaultBidi[i][0]) {
+                        while (c < result.limit && c < defaultBidi[i][0]) {
+                            if (UCharacter.getDirection(c) 
+                                != defaultBidi[i][1] 
+                                /* synwee this is not ported yet ||
+                                u_getIntPropertyValue(c, UCHAR_BIDI_CLASS) 
+                                != defaultBidi[i][1] */
+                            ) {
+                                errln("error: getDirection(unassigned/PUA "
+                                      + Integer.toHexString(c) 
+                                      + ") should be " 
+                                      + defaultBidi[i][1]);
+                            }
+                            ++ c;
+                        }
+                    }
+                }
+            }
+      	}
+      
+      	iterator.reset();
+      	if (iterator.next(result) == false || result.start != 0) {
+          	System.out.println("result " + result.start);
+          	errln("UCharacterIteration reset() failed");
+      	}
+  	}
+  
+  	/**
+  	 * Testing getAge
+   	 */
+  	public void TestGetAge() 
+  	{
+  		int ages[] = {0x41,    1, 1, 0, 0,
+					  0xffff,  1, 1, 0, 0,
+                      0x20ab,  2, 0, 0, 0,
+                      0x2fffe, 2, 0, 0, 0,
+                      0x20ac,  2, 1, 0, 0,
+        			  0xfb1d,  3, 0, 0, 0,
+        			  0x3f4,   3, 1, 0, 0,
+        			  0x10300, 3, 1, 0, 0,
+        			  0x220,   3, 2, 0, 0,
+        			  0xff60,  3, 2, 0, 0};
+  		for (int i = 0; i < ages.length; i += 5) {
+  			VersionInfo age = UCharacter.getAge(ages[i]);
+        	if (age != VersionInfo.getInstance(ages[i + 1], ages[i + 2],
+        	                                   ages[i + 3], ages[i + 4])) {
+            	errln("error: getAge(\\u" + Integer.toHexString(ages[i]) +
+            	      ") == " + age.toString() + " instead of " + 
+					  ages[i + 1] + "." + ages[i + 2] + "." + ages[i + 3] + 
+					  "." + ages[i + 4]);
+        	}
+        }
+	}
+  
+  	/**
+  	 * Test binary non core properties
+  	 */
+  	public void TestAdditionalProperties() 
+  	{
+    	// test data for hasBinaryProperty()
+    	int props[][] = { // code point, property
+	        { 0x0627, UProperty.ALPHABETIC },
+	        { 0x1034a, UProperty.ALPHABETIC },
+	        { 0x2028, UProperty.ALPHABETIC },
+	
+	        { 0x0066, UProperty.ASCII_HEX_DIGIT },
+	        { 0x0067, UProperty.ASCII_HEX_DIGIT },
+	
+	        { 0x202c, UProperty.BIDI_CONTROL },
+	        { 0x202f, UProperty.BIDI_CONTROL },
+	
+	        { 0x003c, UProperty.BIDI_MIRRORED },
+	        { 0x003d, UProperty.BIDI_MIRRORED },
+	
+	        { 0x058a, UProperty.DASH },
+	        { 0x007e, UProperty.DASH },
+	
+	        { 0x0c4d, UProperty.DIACRITIC },
+	        { 0x3000, UProperty.DIACRITIC },
+	
+	        { 0x0e46, UProperty.EXTENDER },
+	        { 0x0020, UProperty.EXTENDER },
+	
+	        { 0xfb1d, UProperty.FULL_COMPOSITION_EXCLUSION },
+	        { 0x1d15f, UProperty.FULL_COMPOSITION_EXCLUSION },
+	        { 0xfb1e, UProperty.FULL_COMPOSITION_EXCLUSION },
+	
+	        { 0x0044, UProperty.HEX_DIGIT },
+	        { 0xff46, UProperty.HEX_DIGIT },
+	        { 0x0047, UProperty.HEX_DIGIT },
+	
+	        { 0x30fb, UProperty.HYPHEN },
+	        { 0xfe58, UProperty.HYPHEN },
+	
+	        { 0x2172, UProperty.ID_CONTINUE },
+	        { 0x0307, UProperty.ID_CONTINUE },
+	        { 0x005c, UProperty.ID_CONTINUE },
+	
+	        { 0x2172, UProperty.ID_START },
+	        { 0x007a, UProperty.ID_START },
+	        { 0x0039, UProperty.ID_START },
+	
+	        { 0x4db5, UProperty.IDEOGRAPHIC },
+	        { 0x2f999, UProperty.IDEOGRAPHIC },
+	        { 0x2f99, UProperty.IDEOGRAPHIC },
+	
+	        { 0x200c, UProperty.JOIN_CONTROL },
+	        { 0x2029, UProperty.JOIN_CONTROL },
+	
+	        { 0x1d7bc, UProperty.LOWERCASE },
+	        { 0x0345, UProperty.LOWERCASE },
+	        { 0x0030, UProperty.LOWERCASE },
+	
+	        { 0x1d7a9, UProperty.MATH },
+	        { 0x2135, UProperty.MATH },
+	        { 0x0062, UProperty.MATH },
+	
+	        { 0xfde1, UProperty.NONCHARACTER_CODE_POINT },
+	        { 0x10ffff, UProperty.NONCHARACTER_CODE_POINT },
+	        { 0x10fffd, UProperty.NONCHARACTER_CODE_POINT },
+	
+	        { 0x0022, UProperty.QUOTATION_MARK },
+	        { 0xff62, UProperty.QUOTATION_MARK },
+	        { 0xd840, UProperty.QUOTATION_MARK },
+	
+	        { 0x061f, UProperty.TERMINAL_PUNCTUATION },
+	        { 0xe003f, UProperty.TERMINAL_PUNCTUATION },
+	
+	        { 0x1d44a, UProperty.UPPERCASE },
+	        { 0x2162, UProperty.UPPERCASE },
+	        { 0x0345, UProperty.UPPERCASE },
+	
+	        { 0x0020, UProperty.WHITE_SPACE },
+	        { 0x202f, UProperty.WHITE_SPACE },
+	        { 0x3001, UProperty.WHITE_SPACE },
+	
+	        { 0x0711, UProperty.XID_CONTINUE },
+	        { 0x1d1aa, UProperty.XID_CONTINUE },
+	        { 0x007c, UProperty.XID_CONTINUE },
+	
+	        { 0x16ee, UProperty.XID_START },
+	        { 0x23456, UProperty.XID_START },
+	        { 0x1d1aa, UProperty.XID_START },
+	
+	        // Version break:
+	        // The following properties are only supported starting with the
+	        // UProperty.Unicode version indicated in the second field.
+	         
+	        { -1, 0x32, 0 },
+	
+	        { 0x180c, UProperty.DEFAULT_IGNORABLE_CODE_POINT },
+	        { 0xfe02, UProperty.DEFAULT_IGNORABLE_CODE_POINT },
+	        { 0x1801, UProperty.DEFAULT_IGNORABLE_CODE_POINT },
+	
+	        { 0x0341, UProperty.DEPRECATED },
+	        { 0xe0041, UProperty.DEPRECATED },
+	
+	        { 0x00a0, UProperty.GRAPHEME_BASE },
+	        { 0x0a4d, UProperty.GRAPHEME_BASE },
+	        { 0xff9f, UProperty.GRAPHEME_BASE },
+	
+	        { 0x0300, UProperty.GRAPHEME_EXTEND },
+	        { 0xff9f, UProperty.GRAPHEME_EXTEND },
+	        { 0x0a4d, UProperty.GRAPHEME_EXTEND },
+	
+	        { 0x0a4d, UProperty.GRAPHEME_LINK },
+	        { 0xff9f, UProperty.GRAPHEME_LINK },
+	
+	        { 0x2ff7, UProperty.IDS_BINARY_OPERATOR },
+	        { 0x2ff3, UProperty.IDS_BINARY_OPERATOR },
+	
+	        { 0x2ff3, UProperty.IDS_TRINARY_OPERATOR },
+	        { 0x2f03, UProperty.IDS_TRINARY_OPERATOR },
+	
+	        { 0x0ec1, UProperty.LOGICAL_ORDER_EXCEPTION },
+	        { 0xdcba, UProperty.LOGICAL_ORDER_EXCEPTION },
+	
+	        { 0x2e9b, UProperty.RADICAL },
+	        { 0x4e00, UProperty.RADICAL },
+	
+	        { 0x012f, UProperty.SOFT_DOTTED },
+	        { 0x0049, UProperty.SOFT_DOTTED },
+	
+	        { 0xfa11, UProperty.UNIFIED_IDEOGRAPH },
+	        { 0xfa12, UProperty.UNIFIED_IDEOGRAPH }
+	    };
+	    
+	    boolean expected[] = { true, true, false, true, false, 
+	    	                   true, false, true, false, true, 
+	    	                   false, true, false, true, false, 
+	    	                   true, true, false, true, true, 
+	    	                   false, true, false, true, true, 
+	    	                   false, true, true, false, true, 
+	    	                   true, false, true, false, true, 
+	    	                   true, false, true, true, false, 
+	    	                   true, true, false, true, true, 
+	    	                   false, true, false, true, true, 
+	    	                   false, true, true, false, true, 
+	    	                   true, false, true, true, false,
+	    	                   false, true, true, false, true, 
+	    	                   false, true, false, false, true, 
+	    	                   true, false, true, false, true, 
+	    	                   false, true, false, true, false, 
+	    	                   true, false, true, false, true, 
+	    	                   false};
+
+	    VersionInfo version = UCharacter.getUnicodeVersion();
+	    
+	    // test hasBinaryProperty() 
+	    for (int i = 0; i < props.length; ++ i) {
+	    	if (props[i][0] < 0) {
+				if (version.compareTo(VersionInfo.getInstance(props[i][1] >> 4, 
+	    	                                              props[i][1] & 0xF, 
+	    	                                              0, 0)) < 0) {
+	    	    	break;
+	    	    }
+	    	    continue;
+	        }
+            if (UCharacter.hasBinaryProperty(props[i][0], props[i][1])
+	            != expected[i]) {
+	            errln("error: UCharacter.hasBinaryProperty(\\u" + 
+	                  Integer.toHexString(props[i][0]) + ", " + 
+	                  Integer.toHexString(props[i][1]) + ") has an error expected " +
+	                  expected[i]);
+	        }
+	
+	        // test separate functions, too 
+	        switch (props[i][1]) {
+	        case UProperty.ALPHABETIC:
+	            if (UCharacter.isUAlphabetic(props[i][0]) != expected[i]) {
+	                errln("error: UCharacter.isUAlphabetic(\\u" + 
+	                      Integer.toHexString(props[i][0]) + 
+	                      ") is wrong expected " + expected[i]);
+	            }
+	            break;
+	        case UProperty.LOWERCASE:
+	            if (UCharacter.isULowercase(props[i][0]) != expected[i]) {
+	                errln("error: UCharacter.isULowercase(\\u" + 
+	                      Integer.toHexString(props[i][0]) + 
+	                      ") is wrong expected " + expected[i]);
+	            }
+	            break;
+	        case UProperty.UPPERCASE:
+	            if (UCharacter.isUUppercase(props[i][0]) != expected[i]) {
+	                errln("error: UCharacter.isUUppercase(\\u" + 
+	                      Integer.toHexString(props[i][0]) + 
+	                      ") is wrong expected " + expected[i]);
+	            }
+	            break;
+	        case UProperty.WHITE_SPACE:
+	            if (UCharacter.isUWhiteSpace(props[i][0]) != expected[i]) {
+	                errln("error: UCharacter.isUWhiteSpace(\\u" + 
+	                      Integer.toHexString(props[i][0]) + 
+	                      ") is wrong expected " + expected[i]);
+	            }
+	            break;
+	        default:
+	            break;
+	        }
+	    }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/lang/UTF16Test.java b/src/com/ibm/icu/dev/test/lang/UTF16Test.java
new file mode 100755
index 0000000..7a6ca84
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UTF16Test.java
@@ -0,0 +1,1298 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/lang/UTF16Test.java,v $ 
+* $Date: 2002/07/11 21:25:23 $ 
+* $Revision: 1.18 $
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.ReplaceableString;
+import com.ibm.icu.impl.Utility;
+
+/**
+* Testing class for UTF16
+* @author Syn Wee Quek
+* @since feb 09 2001
+*/
+public final class UTF16Test extends TestFmwk
+{ 
+  	// constructor ===================================================
+  
+  	/**
+  	* Constructor
+  	*/
+  	public UTF16Test()
+  	{
+  	}
+  
+  	// public methods ================================================
+  
+  	/**
+  	* Testing UTF16 class methods append
+  	*/
+  	public void TestAppend()
+  	{
+      	StringBuffer strbuff = new StringBuffer("this is a string ");
+      	char array[] = new char[UCharacter.MAX_VALUE >> 2];
+      	int strsize = strbuff.length();
+      	int arraysize = strsize;
+        
+      	Utility.getChars(strbuff, 0, strsize, array, 0);
+      	for (int i = 1; i < UCharacter.MAX_VALUE; i += 100)
+      	{
+      	  	UTF16.append(strbuff, i);
+         	arraysize = UTF16.append(array, arraysize, i);
+          
+          	String arraystr = new String(array, 0, arraysize);
+          	if (!arraystr.equals(strbuff.toString())) {
+              	errln("FAIL Comparing char array append and string append " +
+              	      "with 0x" + Integer.toHexString(i));
+          	}
+          
+          	// this is to cater for the combination of 0xDBXX 0xDC50 which 
+          	// forms a supplementary character
+          	if (i == 0xDC51) {
+              	strsize --;
+          	}
+            
+          	if (UTF16.countCodePoint(strbuff) != strsize + (i / 100) + 1) {
+              	errln("FAIL Counting code points in string appended with " + 
+                    	" 0x" + Integer.toHexString(i));
+              	break;
+          	}  
+      	}
+  	}
+  
+  	/**
+  	* Testing UTF16 class methods bounds
+  	*/
+  	public void TestBounds()
+  	{
+      	StringBuffer strbuff = 
+          		                  //0   12345     6     7     8     9
+          		new StringBuffer("\udc000123\ud800\udc00\ud801\udc01\ud802");
+      	String str = strbuff.toString();
+      	char array[] = str.toCharArray();
+      	int boundtype[] = {UTF16.SINGLE_CHAR_BOUNDARY, 
+                         UTF16.SINGLE_CHAR_BOUNDARY,
+                         UTF16.SINGLE_CHAR_BOUNDARY,
+                         UTF16.SINGLE_CHAR_BOUNDARY,
+                         UTF16.SINGLE_CHAR_BOUNDARY,
+                         UTF16.LEAD_SURROGATE_BOUNDARY,
+                         UTF16.TRAIL_SURROGATE_BOUNDARY,
+                         UTF16.LEAD_SURROGATE_BOUNDARY,
+                         UTF16.TRAIL_SURROGATE_BOUNDARY,
+                         UTF16.SINGLE_CHAR_BOUNDARY};
+      	int length = str.length();
+      	for (int i = 0; i < length; i ++) {
+        	if (UTF16.bounds(str, i) != boundtype[i]) {
+              	errln("FAIL checking bound type at index " + i);
+          	}
+          	if (UTF16.bounds(strbuff, i) != boundtype[i]) {
+              	errln("FAIL checking bound type at index " + i);
+          	}
+          	if (UTF16.bounds(array, 0, length, i) != boundtype[i]) {
+              	errln("FAIL checking bound type at index " + i);
+          	}
+      	}
+      	// does not straddle between supplementary character
+      	int start = 4;
+      	int limit = 9;
+      	int subboundtype1[] = {UTF16.SINGLE_CHAR_BOUNDARY,
+                             UTF16.LEAD_SURROGATE_BOUNDARY,
+                             UTF16.TRAIL_SURROGATE_BOUNDARY,
+                             UTF16.LEAD_SURROGATE_BOUNDARY,
+                             UTF16.TRAIL_SURROGATE_BOUNDARY};
+      	try {
+          	UTF16.bounds(array, start, limit, -1);
+          	errln("FAIL Out of bounds index in bounds should fail");
+      	} catch (Exception e) {
+          	// getting rid of warnings
+          	System.out.print("");
+      	}
+      
+      	for (int i = 0; i < limit - start; i ++) {
+          	if (UTF16.bounds(array, start, limit, i) != subboundtype1[i]) {
+              	errln("FAILED Subarray bounds in [" + start + ", " + limit + 
+                    	"] expected " + subboundtype1[i] + " at offset " + i);
+          	}
+      	}
+      
+      	// starts from the mid of a supplementary character
+      	int subboundtype2[] = {UTF16.SINGLE_CHAR_BOUNDARY,
+                             UTF16.LEAD_SURROGATE_BOUNDARY,
+                             UTF16.TRAIL_SURROGATE_BOUNDARY};
+      
+      	start = 6;
+      	limit = 9;
+      	for (int i = 0; i < limit - start; i ++) {
+          	if (UTF16.bounds(array, start, limit, i) != subboundtype2[i]) {
+              	errln("FAILED Subarray bounds in [" + start + ", " + limit + 
+                    	"] expected " + subboundtype2[i] + " at offset " + i);
+          	}
+      	}
+      
+      	// ends in the mid of a supplementary character
+      	int subboundtype3[] = {UTF16.LEAD_SURROGATE_BOUNDARY,
+                             UTF16.TRAIL_SURROGATE_BOUNDARY,
+                             UTF16.SINGLE_CHAR_BOUNDARY};
+      	start = 5;
+      	limit = 8;
+      	for (int i = 0; i < limit - start; i ++) {
+          	if (UTF16.bounds(array, start, limit, i) != subboundtype3[i]) {
+              	errln("FAILED Subarray bounds in [" + start + ", " + limit + 
+                    	"] expected " + subboundtype3[i] + " at offset " + i);
+          	}
+      	}
+  	}
+  
+  	/**
+  	* Testing UTF16 class methods charAt and charAtCodePoint 
+  	*/
+  	public void TestCharAt()
+  	{
+      	StringBuffer strbuff = 
+                      new StringBuffer("12345\ud800\udc0167890\ud800\udc02");
+      	if (UTF16.charAt(strbuff, 0) != '1' || UTF16.charAt(strbuff, 2) != '3' 
+      	    || UTF16.charAt(strbuff, 5) != 0x10001 || 
+          	UTF16.charAt(strbuff, 6) != 0x10001 || 
+          	UTF16.charAt(strbuff, 12) != 0x10002 || 
+          	UTF16.charAt(strbuff, 13) != 0x10002) {
+          	errln("FAIL Getting character from string buffer error" );
+      	}
+      	String str = strbuff.toString();
+      	if (UTF16.charAt(str, 0) != '1' || UTF16.charAt(str, 2) != '3' || 
+          	UTF16.charAt(str, 5) != 0x10001 || UTF16.charAt(str, 6) != 0x10001 
+          	|| UTF16.charAt(str, 12) != 0x10002 || 
+          	UTF16.charAt(str, 13) != 0x10002) 
+      	{
+          	errln("FAIL Getting character from string error" );
+      	}
+      	char array[] = str.toCharArray();
+      	int start = 0;
+      	int limit = str.length();
+      	if (UTF16.charAt(array, start, limit, 0) != '1' || 
+          	UTF16.charAt(array, start, limit, 2) != '3' || 
+          	UTF16.charAt(array, start, limit, 5) != 0x10001 || 
+          	UTF16.charAt(array, start, limit, 6) != 0x10001 || 
+          	UTF16.charAt(array, start, limit, 12) != 0x10002 || 
+          	UTF16.charAt(array, start, limit, 13) != 0x10002) {
+          	errln("FAIL Getting character from array error" );
+      	}
+      	// check the sub array here.
+      	start = 6;
+      	limit = 13;
+      	try {
+          	UTF16.charAt(array, start, limit, -1);
+          	errln("FAIL out of bounds error expected");
+      	} catch (Exception e) {
+          	System.out.print("");
+      	}
+      	try {
+          	UTF16.charAt(array, start, limit, 8);
+          	errln("FAIL out of bounds error expected");
+      	} catch (Exception e) {
+          	System.out.print("");
+      	}
+      	if (UTF16.charAt(array, start, limit, 0) != 0xdc01) {
+          	errln("FAIL Expected result in subarray 0xdc01");
+      	}
+      	if (UTF16.charAt(array, start, limit, 6) != 0xd800) {
+          	errln("FAIL Expected result in subarray 0xd800");
+      	}
+      	ReplaceableString replaceable = new ReplaceableString(str); 
+      	if (UTF16.charAt(replaceable, 0) != '1' || 
+      	    UTF16.charAt(replaceable, 2) != '3' || 
+          	UTF16.charAt(replaceable, 5) != 0x10001 || 
+          	UTF16.charAt(replaceable, 6) != 0x10001 || 
+          	UTF16.charAt(replaceable, 12) != 0x10002 || 
+          	UTF16.charAt(replaceable, 13) != 0x10002) {
+          	errln("FAIL Getting character from replaceable error" );
+      	}
+  	}
+  
+  	/**
+  	* Testing UTF16 class methods countCodePoint
+  	*/
+  	public void TestCountCodePoint()
+  	{
+    	StringBuffer strbuff = new StringBuffer("");
+    	char         array[] = null;
+    	if (UTF16.countCodePoint(strbuff) != 0 ||
+        	UTF16.countCodePoint("") != 0 ||
+        	UTF16.countCodePoint(array,0 ,0) != 0) {
+        	errln("FAIL Counting code points for empty strings");
+    	}
+    
+    	strbuff = new StringBuffer("this is a string ");
+    	String str = strbuff.toString();
+    	array = str.toCharArray();
+    	int size = str.length();
+    
+    	if (UTF16.countCodePoint(array, 0, 0) != 0) {
+        	errln("FAIL Counting code points for 0 offset array");
+    	}
+    
+    	if (UTF16.countCodePoint(str) != size ||
+        	UTF16.countCodePoint(strbuff) != size ||
+        	UTF16.countCodePoint(array, 0, size) != size) {
+        	errln("FAIL Counting code points");
+    	}	 
+    
+    	UTF16.append(strbuff, 0x10000);
+    	str = strbuff.toString();
+    	array = str.toCharArray();
+    	if (UTF16.countCodePoint(str) != size + 1 ||
+        	UTF16.countCodePoint(strbuff) != size + 1 ||
+        	UTF16.countCodePoint(array, 0, size + 1) != size + 1 ||
+        	UTF16.countCodePoint(array, 0, size + 2) != size + 1) {
+        	errln("FAIL Counting code points");
+    	}
+    	UTF16.append(strbuff, 0x61);
+    	str = strbuff.toString();
+    	array = str.toCharArray();
+    	if (UTF16.countCodePoint(str) != size + 2 ||
+        	UTF16.countCodePoint(strbuff) != size + 2 ||
+        	UTF16.countCodePoint(array, 0, size + 1) != size + 1 ||
+        	UTF16.countCodePoint(array, 0, size + 2) != size + 1 ||
+        	UTF16.countCodePoint(array, 0, size + 3) != size + 2) {
+        	errln("FAIL Counting code points");
+    	}
+  	}
+  
+  	/**
+  	* Testing UTF16 class methods delete
+  	*/
+  	public void TestDelete()
+  	{                                        //01234567890123456
+    	StringBuffer strbuff = new StringBuffer("these are strings");
+    	int size = strbuff.length();
+    	char array[] = strbuff.toString().toCharArray();
+    
+    	UTF16.delete(strbuff, 3);
+    	UTF16.delete(strbuff, 3);
+    	UTF16.delete(strbuff, 3);
+    	UTF16.delete(strbuff, 3);
+    	UTF16.delete(strbuff, 3);
+    	UTF16.delete(strbuff, 3);
+    	try {
+        	UTF16.delete(strbuff, strbuff.length());
+        	errln("FAIL deleting out of bounds character should fail");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+    	UTF16.delete(strbuff, strbuff.length() - 1);
+    	if (!strbuff.toString().equals("the string")) {
+        	errln("FAIL expected result after deleting characters is " +
+              		"\"the string\"");
+    	}
+    
+    	size = UTF16.delete(array, size, 3);
+    	size = UTF16.delete(array, size, 3);
+    	size = UTF16.delete(array, size, 3);
+    	size = UTF16.delete(array, size, 3);
+    	size = UTF16.delete(array, size, 3);
+    	size = UTF16.delete(array, size, 3);
+    	try {
+        	UTF16.delete(array, size, size);
+        	errln("FAIL deleting out of bounds character should fail");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+    	size = UTF16.delete(array, size, size - 1);
+    	String str = new String(array, 0, size);
+    	if (!str.equals("the string")) {
+        	errln("FAIL expected result after deleting characters is " +
+              		"\"the string\"");
+    	}
+                              		//012345678     9     01     2      3     4
+    	strbuff = new StringBuffer("string: \ud800\udc00 \ud801\udc01 \ud801\udc01");
+    	size = strbuff.length();
+    	array = strbuff.toString().toCharArray();
+    
+    	UTF16.delete(strbuff, 8);
+    	UTF16.delete(strbuff, 8);
+    	UTF16.delete(strbuff, 9);
+    	UTF16.delete(strbuff, 8);
+    	UTF16.delete(strbuff, 9);
+    	UTF16.delete(strbuff, 6);
+    	UTF16.delete(strbuff, 6);
+    	if (!strbuff.toString().equals("string")) {
+        	errln("FAIL expected result after deleting characters is \"string\"");
+    	}
+    
+    	size = UTF16.delete(array, size, 8);
+    	size = UTF16.delete(array, size, 8);
+    	size = UTF16.delete(array, size, 9);
+    	size = UTF16.delete(array, size, 8);
+    	size = UTF16.delete(array, size, 9);
+    	size = UTF16.delete(array, size, 6);
+    	size = UTF16.delete(array, size, 6);
+    	str = new String(array, 0, size);
+    	if (!str.equals("string")) {
+        	errln("FAIL expected result after deleting characters is \"string\"");
+    	}
+  	}
+  
+  	/**
+  	* Testing findOffsetFromCodePoint and findCodePointOffset
+  	*/
+  	public void TestfindOffset()
+  	{
+    	// jitterbug 47
+    	String str = "a\uD800\uDC00b";
+    	StringBuffer strbuff = new StringBuffer(str);
+    	char array[] = str.toCharArray();
+    	int limit = str.length();
+    	if (UTF16.findCodePointOffset(str, 0) != 0 ||
+        	UTF16.findOffsetFromCodePoint(str, 0) != 0 ||
+        	UTF16.findCodePointOffset(strbuff, 0) != 0 ||
+        	UTF16.findOffsetFromCodePoint(strbuff, 0) != 0 ||
+        	UTF16.findCodePointOffset(array, 0, limit, 0) != 0 ||
+        	UTF16.findOffsetFromCodePoint(array, 0, limit, 0) != 0) {
+        	errln("FAIL Getting the first codepoint offset to a string with " +
+              		"supplementary characters");
+    	}
+    	if (UTF16.findCodePointOffset(str, 1) != 1 ||
+        	UTF16.findOffsetFromCodePoint(str, 1) != 1 ||
+        	UTF16.findCodePointOffset(strbuff, 1) != 1 ||
+        	UTF16.findOffsetFromCodePoint(strbuff, 1) != 1 ||
+        	UTF16.findCodePointOffset(array, 0, limit, 1) != 1 ||
+        	UTF16.findOffsetFromCodePoint(array, 0, limit, 1) != 1) {
+        	errln("FAIL Getting the second codepoint offset to a string with " +
+              		"supplementary characters");
+    	}
+    	if (UTF16.findCodePointOffset(str, 2) != 1 ||
+        	UTF16.findOffsetFromCodePoint(str, 2) != 3 ||
+        	UTF16.findCodePointOffset(strbuff, 2) != 1 ||
+        	UTF16.findOffsetFromCodePoint(strbuff, 2) != 3 ||
+        	UTF16.findCodePointOffset(array, 0, limit, 2) != 1 ||
+        	UTF16.findOffsetFromCodePoint(array, 0, limit, 2) != 3) {
+        	errln("FAIL Getting the third codepoint offset to a string with " +
+              		"supplementary characters");
+    	}
+    	if (UTF16.findCodePointOffset(str, 3) != 2 ||
+        	UTF16.findOffsetFromCodePoint(str, 3) != 4 ||
+        	UTF16.findCodePointOffset(strbuff, 3) != 2 ||
+        	UTF16.findOffsetFromCodePoint(strbuff, 3) != 4 ||
+        	UTF16.findCodePointOffset(array, 0, limit, 3) != 2 ||
+        	UTF16.findOffsetFromCodePoint(array, 0, limit, 3) != 4) {
+        	errln("FAIL Getting the last codepoint offset to a string with " +
+              		"supplementary characters");
+    	}
+    	if (UTF16.findCodePointOffset(str, 4) != 3 || 
+        	UTF16.findCodePointOffset(strbuff, 4) != 3 ||
+        	UTF16.findCodePointOffset(array, 0, limit, 4) != 3) {
+        	errln("FAIL Getting the length offset to a string with " +
+              		"supplementary characters");
+    	}
+    	try {
+        	UTF16.findCodePointOffset(str, 5);
+        	errln("FAIL Getting the a non-existence codepoint to a string " +
+        	      "with supplementary characters");
+    	} catch (Exception e) {
+        	// this is a success
+        	logln("Passed out of bounds codepoint offset");
+    	}
+    	try {
+        	UTF16.findOffsetFromCodePoint(str, 4);
+        	errln("FAIL Getting the a non-existence codepoint to a string " +
+        	      "with supplementary characters");
+    	} catch (Exception e) {
+        	// this is a success
+        	logln("Passed out of bounds codepoint offset");
+    	}
+    	try {
+        	UTF16.findCodePointOffset(strbuff, 5);
+        	errln("FAIL Getting the a non-existence codepoint to a string " + 
+        	      "with supplementary characters");
+    	} catch (Exception e) {
+        	// this is a success
+        	logln("Passed out of bounds codepoint offset");
+    	}
+    	try {
+        	UTF16.findOffsetFromCodePoint(strbuff, 4);
+        	errln("FAIL Getting the a non-existence codepoint to a string " +
+        	      "with supplementary characters");
+    	} catch (Exception e) {
+        	// this is a success
+        	logln("Passed out of bounds codepoint offset");
+    	}
+    	try {
+        	UTF16.findCodePointOffset(array, 0, limit, 5);
+        	errln("FAIL Getting the a non-existence codepoint to a string " + 
+        	      "with supplementary characters");
+    	} catch (Exception e) {
+        	// this is a success
+        	logln("Passed out of bounds codepoint offset");
+    	}
+    	try {
+        	UTF16.findOffsetFromCodePoint(array, 0, limit, 4);
+        	errln("FAIL Getting the a non-existence codepoint to a string " +
+        	      "with supplementary characters");
+    	} catch (Exception e) {
+        	// this is a success
+        	logln("Passed out of bounds codepoint offset");
+    	}
+    
+    	if (UTF16.findCodePointOffset(array, 1, 3, 0) != 0 ||
+        	UTF16.findOffsetFromCodePoint(array, 1, 3, 0) != 0 ||
+        	UTF16.findCodePointOffset(array, 1, 3, 1) != 0 ||
+        	UTF16.findCodePointOffset(array, 1, 3, 2) != 1 ||
+        	UTF16.findOffsetFromCodePoint(array, 1, 3, 1) != 2) {
+        	errln("FAIL Getting valid codepoint offset in sub array");
+    	}
+  	}
+  
+  	/**
+  	* Testing UTF16 class methods getCharCount, *Surrogate
+  	*/
+  	public void TestGetCharCountSurrogate()
+  	{
+    	if (UTF16.getCharCount(0x61) != 1 ||
+        	UTF16.getCharCount(0x10000) != 2) {
+        	errln("FAIL getCharCount result failure");
+    	}
+    	if (UTF16.getLeadSurrogate(0x61) != 0 ||
+        	UTF16.getTrailSurrogate(0x61) != 0x61 ||
+        	UTF16.isLeadSurrogate((char)0x61) ||
+        	UTF16.isTrailSurrogate((char)0x61) ||
+        	UTF16.getLeadSurrogate(0x10000) != 0xd800 ||
+        	UTF16.getTrailSurrogate(0x10000) != 0xdc00 ||
+        	UTF16.isLeadSurrogate((char)0xd800) != true ||
+        	UTF16.isTrailSurrogate((char)0xd800) ||
+        	UTF16.isLeadSurrogate((char)0xdc00) ||
+        	UTF16.isTrailSurrogate((char)0xdc00) != true) {
+        	errln("FAIL *Surrogate result failure");
+    	}
+    
+    	if (UTF16.isSurrogate((char)0x61) || !UTF16.isSurrogate((char)0xd800) 
+    	    || !UTF16.isSurrogate((char)0xdc00)) {
+        	errln("FAIL isSurrogate result failure");
+    	}
+  	}
+  
+  	/**
+  	* Testing UTF16 class method insert
+  	*/
+  	public void TestInsert()
+  	{
+    	StringBuffer strbuff = new StringBuffer("0123456789");
+    	char array[] = new char[128];
+    	Utility.getChars(strbuff, 0, strbuff.length(), array, 0);
+    	int length = 10;
+    	UTF16.insert(strbuff, 5, 't');
+    	UTF16.insert(strbuff, 5, 's');
+    	UTF16.insert(strbuff, 5, 'e');
+    	UTF16.insert(strbuff, 5, 't');
+    	if (!(strbuff.toString().equals("01234test56789"))) {
+        	errln("FAIL inserting \"test\"");
+    	}
+    	length = UTF16.insert(array, length, 5, 't');
+    	length = UTF16.insert(array, length, 5, 's');
+    	length = UTF16.insert(array, length, 5, 'e');
+    	length = UTF16.insert(array, length, 5, 't');
+    	String str = new String(array, 0, length);
+    	if (!(str.equals("01234test56789"))) {
+        	errln("FAIL inserting \"test\"");
+    	}
+    	UTF16.insert(strbuff, 0, 0x10000);
+    	UTF16.insert(strbuff, 11, 0x10000);
+    	UTF16.insert(strbuff, strbuff.length(), 0x10000);
+    	if (!(strbuff.toString().equals(
+                     "\ud800\udc0001234test\ud800\udc0056789\ud800\udc00"))) {
+        	errln("FAIL inserting supplementary characters");
+    	}
+    	length = UTF16.insert(array, length, 0, 0x10000);
+    	length = UTF16.insert(array, length, 11, 0x10000);
+    	length = UTF16.insert(array, length, length, 0x10000);
+    	str = new String(array, 0, length);
+    	if (!(str.equals(
+    	             "\ud800\udc0001234test\ud800\udc0056789\ud800\udc00"))) {
+        	errln("FAIL inserting supplementary characters");
+    	}
+    
+    	try {
+        	UTF16.insert(strbuff, -1, 0);
+        	errln("FAIL invalid insertion offset");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+    	try {
+        	UTF16.insert(strbuff, 64, 0);
+        	errln("FAIL invalid insertion offset");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+    	try {
+        	UTF16.insert(array, length, -1, 0);
+        	errln("FAIL invalid insertion offset");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+    	try {
+        	UTF16.insert(array, length, 64, 0);
+        	errln("FAIL invalid insertion offset");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+    	try {
+    		// exceeded array size
+        	UTF16.insert(array, array.length, 64, 0);
+        	errln("FAIL invalid insertion offset");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+  	}
+  
+  	/* 
+  	* Testing moveCodePointOffset APIs
+  	*/
+  	public void TestMoveCodePointOffset()
+  	{
+                             	//01234567890     1     2     3     45678901234
+      	String str = new String("0123456789\ud800\udc00\ud801\udc010123456789");
+      	int move1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 12, 14, 14, 15, 16, 
+      	               17, 18, 19, 20, 21, 22, 23, 24};
+      	int move2[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 14, 15, 15, 16, 17, 
+        	             18, 19, 20, 21, 22, 23, 24};
+      	int move3[] = {3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 15, 16, 16, 17, 18,
+          	           19, 20, 21, 22, 23, 24};
+      	int size = str.length();
+      	for (int i = 0; i < size; i ++) {
+          	if (UTF16.moveCodePointOffset(str, i, 1) != move1[i]) {
+              	errln("FAIL: Moving offset " + i + 
+                    	" by 1 codepoint expected result " + move1[i]);
+          	}
+          	try {
+              	if (UTF16.moveCodePointOffset(str, i, 2) != move2[i]) {
+                  	errln("FAIL: Moving offset " + i + 
+                          " by 2 codepoint expected result " + move2[i]);
+              	}
+          	} catch (IndexOutOfBoundsException e) {
+              	if (i <= 22) {
+                  	throw e;
+              	}
+          	}
+          	try
+          	{
+              	if (UTF16.moveCodePointOffset(str, i, 3) != move3[i]) {
+                  	errln("FAIL: Moving offset " + i + 
+                          " by 3 codepoint expected result " + move3[i]);
+              	}
+          	} catch (IndexOutOfBoundsException e) {
+              	if (i <= 21) {
+                  	throw e;
+              	}
+          	}
+      	}
+     
+      	StringBuffer strbuff = new StringBuffer(str);
+      	for (int i = 0; i < size; i ++) {
+          	if (UTF16.moveCodePointOffset(strbuff, i, 1) != move1[i]) {
+              	errln("FAIL: Moving offset " + i + 
+                    	" by 1 codepoint expected result " + move1[i]);
+          	}
+          	try {
+              	if (UTF16.moveCodePointOffset(strbuff, i, 2) != move2[i]) {
+                  	errln("FAIL: Moving offset " + i + 
+                          " by 2 codepoint expected result " + move2[i]);
+              	}
+          	} catch (IndexOutOfBoundsException e) {
+              	if (i <= 22) {
+                  	throw e;
+              	}
+          	}
+          	try
+          	{
+              	if (UTF16.moveCodePointOffset(strbuff, i, 3) != move3[i]) {
+                  	errln("FAIL: Moving offset " + i + 
+                          " by 3 codepoint expected result " + move3[i]);
+              	}
+          	} catch (IndexOutOfBoundsException e) {
+              	if (i <= 21) {
+                  	throw e;
+              	}
+          	}  
+      	}
+      
+      	char strarray[] = str.toCharArray();
+      	for (int i = 0; i < size; i ++) {
+          	if (UTF16.moveCodePointOffset(strarray, 0, size, i, 1) != move1[i]) 
+          	{
+              	errln("FAIL: Moving offset " + i + 
+                    	" by 1 codepoint expected result " + move1[i]);
+          	}
+          	try {
+              	if (UTF16.moveCodePointOffset(strarray, 0, size, i, 2) != 
+                                                                   move2[i]) {
+                  	errln("FAIL: Moving offset " + i + 
+                          " by 2 codepoint expected result " + move2[i]);
+              	}
+          	} catch (IndexOutOfBoundsException e) {
+              	if (i <= 22) {
+                  	throw e;
+              	}
+          	}
+          	try
+          	{
+              	if (UTF16.moveCodePointOffset(strarray,  0, size, i, 3) != 
+                                                                   move3[i]) {
+                  	errln("FAIL: Moving offset " + i + 
+                          " by 3 codepoint expected result " + move3[i]);
+              	}
+          	} catch (IndexOutOfBoundsException e) {
+              	if (i <= 21) {
+                  	throw e;
+              	}
+          	}  
+      	}
+      
+      	if (UTF16.moveCodePointOffset(strarray, 9, 13, 0, 2) != 3) {
+          	errln("FAIL: Moving offset 0 by 2 codepoint in subarray [9, 13] " +
+                	"expected result 3");
+      	}
+      	if (UTF16.moveCodePointOffset(strarray, 9, 13, 1, 2) != 4) {
+          	errln("FAIL: Moving offset 1 by 2 codepoint in subarray [9, 13] " +
+                	"expected result 4");
+      	}
+      	if (UTF16.moveCodePointOffset(strarray, 11, 14, 0, 2) != 3) {
+          	errln("FAIL: Moving offset 0 by 2 codepoint in subarray [11, 14] " 
+          	      + "expected result 3");
+      	}
+  	}
+  
+  	/**
+  	* Testing UTF16 class methods setCharAt
+  	*/
+  	public void TestSetCharAt()
+  	{
+    	StringBuffer strbuff = new StringBuffer("012345");
+    	char array[] = new char[128];
+    	Utility.getChars(strbuff, 0, strbuff.length(), array, 0);
+    	int length = 6;
+    	for (int i = 0; i < length; i ++) {
+        	UTF16.setCharAt(strbuff, i, '0');
+        	UTF16.setCharAt(array, length, i, '0');
+    	}
+    	String str = new String(array, 0, length);
+    	if (!(strbuff.toString().equals("000000")) ||
+        	!(str.equals("000000"))) {
+        	errln("FAIL: setChar to '0' failed");
+    	}
+    	UTF16.setCharAt(strbuff, 0, 0x10000);
+    	UTF16.setCharAt(strbuff, 4, 0x10000);
+    	UTF16.setCharAt(strbuff, 7, 0x10000);
+    	if (!(strbuff.toString().equals(
+                               "\ud800\udc0000\ud800\udc000\ud800\udc00"))) {
+        	errln("FAIL: setChar to 0x10000 failed");
+    	}
+    	length = UTF16.setCharAt(array, length, 0, 0x10000);
+    	length = UTF16.setCharAt(array, length, 4, 0x10000);
+    	length = UTF16.setCharAt(array, length, 7, 0x10000);
+    	str = new String(array, 0, length);
+    	if (!(str.equals("\ud800\udc0000\ud800\udc000\ud800\udc00"))) {
+        	errln("FAIL: setChar to 0x10000 failed");
+    	}
+    	UTF16.setCharAt(strbuff, 0, '0');
+    	UTF16.setCharAt(strbuff, 1, '1');
+    	UTF16.setCharAt(strbuff, 2, '2');
+    	UTF16.setCharAt(strbuff, 4, '3');
+    	UTF16.setCharAt(strbuff, 4, '4');
+    	UTF16.setCharAt(strbuff, 5, '5');
+    	if (!strbuff.toString().equals("012345")) {
+    		errln("Fail converting supplementaries in StringBuffer to BMP " +
+    		      "characters");
+    	}
+    	length = UTF16.setCharAt(array, length, 0, '0');
+    	length = UTF16.setCharAt(array, length, 1, '1');
+    	length = UTF16.setCharAt(array, length, 2, '2');
+    	length = UTF16.setCharAt(array, length, 4, '3');
+    	length = UTF16.setCharAt(array, length, 4, '4');
+    	length = UTF16.setCharAt(array, length, 5, '5');
+    	str = new String(array, 0, length);
+    	if (!str.equals("012345")) {
+    		errln("Fail converting supplementaries in array to BMP " +
+    		      "characters");
+    	}
+    	try {
+        	UTF16.setCharAt(strbuff, -1, 0);
+        	errln("FAIL: setting character at invalid offset");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+    	try {
+        	UTF16.setCharAt(array, length, -1, 0);
+        	errln("FAIL: setting character at invalid offset");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+    	try {
+        	UTF16.setCharAt(strbuff, length, 0);
+        	errln("FAIL: setting character at invalid offset");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+    	try {
+        	UTF16.setCharAt(array, length, length, 0);
+        	errln("FAIL: setting character at invalid offset");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+  	}
+
+  	/**
+  	* Testing UTF16 valueof APIs
+  	*/
+  	public void TestValueOf()
+  	{
+    	if (!UTF16.valueOf(0x61).equals("a") || 
+        	!UTF16.valueOf(0x10000).equals("\ud800\udc00")) {
+        	errln("FAIL: valueof(char32)");
+    	}
+    	String str = new String("01234\ud800\udc0056789");
+    	StringBuffer strbuff = new StringBuffer(str);
+    	char array[] = str.toCharArray();
+    	int length = str.length();
+    
+    	String expected[] = {"0", "1", "2", "3", "4", "\ud800\udc00", 
+                         		"\ud800\udc00", "5", "6", "7", "8", "9"};
+    	for (int i = 0; i < length; i ++) {
+        	if (!UTF16.valueOf(str, i).equals(expected[i]) ||
+            	!UTF16.valueOf(strbuff, i).equals(expected[i]) ||
+            	!UTF16.valueOf(array, 0, length, i).equals(expected[i])) {
+            	errln("FAIL: valueOf() expected " + expected[i]);
+        	}
+    	}
+    	try {
+        	UTF16.valueOf(str, -1);
+        	errln("FAIL: out of bounds error expected");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+    	try {
+        	UTF16.valueOf(strbuff, -1);
+        	errln("FAIL: out of bounds error expected");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+    	try {
+        	UTF16.valueOf(array, 0, length, -1);
+        	errln("FAIL: out of bounds error expected");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+    	try {
+        	UTF16.valueOf(str, length);
+        	errln("FAIL: out of bounds error expected");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+    	try {
+        	UTF16.valueOf(strbuff, length);
+        	errln("FAIL: out of bounds error expected");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+    	try {
+        	UTF16.valueOf(array, 0, length, length);
+        	errln("FAIL: out of bounds error expected");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+    	if (!UTF16.valueOf(array, 6, length, 0).equals("\udc00") ||
+        	!UTF16.valueOf(array, 0, 6, 5).equals("\ud800")) {
+        	errln("FAIL: error getting partial supplementary character");
+    	}
+    	try {
+        	UTF16.valueOf(array, 3, 5, -1);
+        	errln("FAIL: out of bounds error expected");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+    	try {
+        	UTF16.valueOf(array, 3, 5, 3);
+        	errln("FAIL: out of bounds error expected");
+    	} catch (Exception e) {
+        	System.out.print("");
+    	}
+  	}
+  
+    public void TestIndexOf()
+    {
+                          //012345678901234567890123456789012345
+        String test1     = "test test ttest tetest testesteststt";
+        String test2     = "test";
+        int    testChar1 = 0x74;
+        int    testChar2 = 0x20402;
+        int    testChar3 = 0xdc02;
+        int    testChar4 = 0xd841;
+        String test3     = "\ud841\udc02\u0071\udc02\ud841\u0071\ud841\udc02\u0071\u0072\ud841\udc02\u0071\ud841\udc02\u0071\udc02\ud841\u0073";
+        String test4     = UCharacter.toString(testChar2);
+
+        if (UTF16.indexOf(test1, test2) != 0 ||
+            UTF16.indexOf(test1, test2, 0) != 0) {
+            errln("indexOf failed: expected to find '" + test2 + 
+                  "' at position 0 in text '" + test1 + "'");
+        }
+        if (UTF16.indexOf(test1, testChar1) != 0 ||
+            UTF16.indexOf(test1, testChar1, 0) != 0) {
+            errln("indexOf failed: expected to find 0x" + 
+                  Integer.toHexString(testChar1) + 
+                  " at position 0 in text '" + test1 + "'");
+        }
+        if (UTF16.indexOf(test3, testChar2) != 0 ||
+            UTF16.indexOf(test3, testChar2, 0) != 0) {
+            errln("indexOf failed: expected to find 0x" + 
+                  Integer.toHexString(testChar2) + 
+                  " at position 0 in text '" + Utility.hex(test3) + "'");
+        }
+        String test5 = "\ud841\ud841\udc02";
+        if (UTF16.indexOf(test5, testChar2) != 1 ||
+            UTF16.indexOf(test5, testChar2, 0) != 1) {
+            errln("indexOf failed: expected to find 0x" + 
+                  Integer.toHexString(testChar2) + 
+                  " at position 0 in text '" + Utility.hex(test3) + "'");
+        }
+        if (UTF16.lastIndexOf(test1, test2) != 29 ||
+            UTF16.lastIndexOf(test1, test2, test1.length()) != 29) {
+            errln("lastIndexOf failed: expected to find '" + test2 + 
+                  "' at position 29 in text '" + test1 + "'");
+        }
+        if (UTF16.lastIndexOf(test1, testChar1) != 35 ||
+            UTF16.lastIndexOf(test1, testChar1, test1.length()) != 35) {
+            errln("lastIndexOf failed: expected to find 0x" + 
+                  Integer.toHexString(testChar1) + 
+                  " at position 35 in text '" + test1 + "'");
+        }
+        if (UTF16.lastIndexOf(test3, testChar2) != 13 ||
+            UTF16.lastIndexOf(test3, testChar2, test3.length()) != 13) {
+            errln("indexOf failed: expected to find 0x" + 
+                  Integer.toHexString(testChar2) + 
+                  " at position 13 in text '" + Utility.hex(test3) + "'");
+        }
+        int occurrences = 0;
+        for (int startPos = 0; startPos != -1 && startPos < test1.length();)
+        {
+            startPos = UTF16.indexOf(test1, test2, startPos);
+            if (startPos >= 0) {
+                ++ occurrences;
+                startPos += 4;
+            }
+        }
+        if (occurrences != 6) {
+            errln("indexOf failed: expected to find 6 occurrences, found " 
+                  + occurrences);
+        }
+    
+        occurrences = 0;
+        for (int startPos = 10; startPos != -1 && startPos < test1.length();)
+        {
+            startPos = UTF16.indexOf(test1, test2, startPos);
+            if (startPos >= 0) {
+                ++ occurrences;
+                startPos += 4;
+            }
+        }
+        if (occurrences != 4) {
+            errln("indexOf with starting offset failed: expected to find 4 occurrences, found " 
+                  + occurrences);
+        }
+        
+        occurrences = 0;
+        for (int startPos = 0;
+            startPos != -1 && startPos < test3.length();) {
+            startPos = UTF16.indexOf(test3, test4, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos += 2;
+            }
+        }
+        if (occurrences != 4) {
+            errln("indexOf failed: expected to find 4 occurrences, found " 
+            + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 10;
+             startPos != -1 && startPos < test3.length();) {
+            startPos = UTF16.indexOf(test3, test4, startPos);
+            if (startPos != -1) {
+                ++ occurrences; 
+                startPos += 2;
+            }
+        }
+        if (occurrences != 2) {
+            errln("indexOf failed: expected to find 2 occurrences, found " 
+                  + occurrences);
+        }
+        
+        occurrences = 0;
+        for (int startPos = 0;
+            startPos != -1 && startPos < test1.length();) {
+            startPos = UTF16.indexOf(test1, testChar1, startPos);
+            if (startPos != -1) { 
+                ++ occurrences; 
+                startPos += 1;
+            }
+        }
+        if (occurrences != 16) {
+            errln("indexOf with character failed: expected to find 16 occurrences, found " 
+                  + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 10;
+            startPos != -1 && startPos < test1.length();) {
+            startPos = UTF16.indexOf(test1, testChar1, startPos);
+            if (startPos != -1) { 
+                ++ occurrences; 
+                startPos += 1;
+            }
+        }
+        if (occurrences != 12) {
+            errln("indexOf with character & start offset failed: expected to find 12 occurrences, found " 
+            + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 0;
+            startPos != -1 && startPos < test3.length();) {
+            startPos = UTF16.indexOf(test3, testChar2, startPos);
+            if (startPos != -1) {
+                ++ occurrences; 
+                startPos += 1;
+            }
+        }
+        if (occurrences != 4) {
+            errln("indexOf failed: expected to find 4 occurrences, found " 
+                  + occurrences);
+        }
+     
+        occurrences = 0;
+        for (int startPos = 5; startPos != -1 && startPos < test3.length();) {
+            startPos = UTF16.indexOf(test3, testChar2, startPos);
+            if (startPos != -1) {
+                ++ occurrences; 
+                startPos += 1;
+            }
+        }
+        if (occurrences != 3) {
+            errln("indexOf with character & start & end offsets failed: expected to find 2 occurrences, found " 
+            + occurrences);
+        }
+        occurrences = 0;
+        for (int startPos = 32; startPos != -1;) {
+            startPos = UTF16.lastIndexOf(test1, test2, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos -= 5;
+            }
+        }
+        if (occurrences != 6) {
+            errln("lastIndexOf with starting and ending offsets failed: expected to find 4 occurrences, found " 
+                  + occurrences);
+        }
+        occurrences = 0;
+        for (int startPos = 32; startPos != -1;) {
+            startPos = UTF16.lastIndexOf(test1, testChar1, startPos);
+            if (startPos != -1) { 
+                ++ occurrences;
+                startPos -= 5;
+            }
+        }
+        if (occurrences != 7) {
+            errln("lastIndexOf with character & start & end offsets failed: expected to find 11 occurrences, found " 
+            + occurrences);
+        }
+
+        //testing UChar32
+        occurrences = 0;
+        for (int startPos = test3.length(); startPos != -1;) {
+            startPos = UTF16.lastIndexOf(test3, testChar2, startPos - 5);
+            if (startPos != -1) { 
+                ++ occurrences;
+            }
+        }
+        if (occurrences != 3) {
+            errln("lastIndexOf with character & start & end offsets failed: expected to find 3 occurrences, found " 
+            + occurrences);
+        }
+        
+        // testing supplementary
+        for (int i = 0; i < INDEXOF_SUPPLEMENTARY_CHAR_.length; i ++) {
+        	int ch = INDEXOF_SUPPLEMENTARY_CHAR_[i];
+        	for (int j = 0; j < INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[i].length;
+        	     j ++) {
+        	     int index = 0;
+        	     int expected = INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[i][j];
+        	     if  (j > 0) {
+        	     	index = INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[i][j - 1] + 1;
+        	     }
+        	     if (UTF16.indexOf(INDEXOF_SUPPLEMENTARY_STRING_, ch, index) !=
+        	         expected ||
+        	         UTF16.indexOf(INDEXOF_SUPPLEMENTARY_STRING_, 
+        	                       UTF16.toString(ch), index) !=
+        	         expected) {
+        	         errln("Failed finding index for supplementary 0x" + 
+        	               Integer.toHexString(ch));
+        	     }
+        	     index = INDEXOF_SUPPLEMENTARY_STRING_.length();
+        	     if (j < INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[i].length - 1) {
+        	     	index = INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[i][j + 1] - 1;
+        	     }
+        	     if (UTF16.lastIndexOf(INDEXOF_SUPPLEMENTARY_STRING_, ch, 
+        	                           index) != expected ||
+        	         UTF16.lastIndexOf(INDEXOF_SUPPLEMENTARY_STRING_, 
+        	                           UTF16.toString(ch), index) != expected) 
+        	     {
+        	         errln("Failed finding last index for supplementary 0x" + 
+        	               Integer.toHexString(ch));
+        	     }
+        	}
+        }
+        
+        for (int i = 0; i < INDEXOF_SUPPLEMENTARY_STR_INDEX_.length; i ++) {
+        	int index = 0;
+        	int expected = INDEXOF_SUPPLEMENTARY_STR_INDEX_[i];
+        	if  (i > 0) {
+        	     index = INDEXOF_SUPPLEMENTARY_STR_INDEX_[i - 1] + 1;
+        	}
+        	if (UTF16.indexOf(INDEXOF_SUPPLEMENTARY_STRING_, 
+        	                  INDEXOF_SUPPLEMENTARY_STR_, index) != expected) {
+        	    errln("Failed finding index for supplementary string " + 
+        	          hex(INDEXOF_SUPPLEMENTARY_STRING_));
+        	}
+        	index = INDEXOF_SUPPLEMENTARY_STRING_.length();
+        	if (i < INDEXOF_SUPPLEMENTARY_STR_INDEX_.length - 1) {
+        	    index = INDEXOF_SUPPLEMENTARY_STR_INDEX_[i + 1] - 1;
+        	}
+        	if (UTF16.lastIndexOf(INDEXOF_SUPPLEMENTARY_STRING_, 
+        	                  INDEXOF_SUPPLEMENTARY_STR_, index) != expected) {
+        	    errln("Failed finding last index for supplementary string " + 
+        	          hex(INDEXOF_SUPPLEMENTARY_STRING_));
+        	}
+        }
+    }
+    
+    public void TestReplace()
+    {
+        String test1 = "One potato, two potato, three potato, four\n";
+        String test2 = "potato";
+        String test3 = "MISSISSIPPI";
+
+        String result = UTF16.replace(test1, test2, test3);
+        String expectedValue = 
+            "One MISSISSIPPI, two MISSISSIPPI, three MISSISSIPPI, four\n";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue + 
+                  "\", got \"" + test1 + "\".");
+        }
+        result = UTF16.replace(test1, test3, test2);
+        expectedValue = test1;
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue + 
+                  "\", got \"" + test1 + "\".");
+        }
+        
+        result = UTF16.replace(test1, ',', 'e');
+        expectedValue = "One potatoe two potatoe three potatoe four\n";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue + 
+                  "\", got \"" + test1 + "\".");
+        }
+        
+        result = UTF16.replace(test1, ',', 0x10000);
+        expectedValue = "One potato\ud800\udc00 two potato\ud800\udc00 three potato\ud800\udc00 four\n";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue + 
+                  "\", got \"" + test1 + "\".");
+        }
+        
+        result = UTF16.replace(test1, "potato", "\ud800\udc00\ud801\udc01");
+        expectedValue = "One \ud800\udc00\ud801\udc01, two \ud800\udc00\ud801\udc01, three \ud800\udc00\ud801\udc01, four\n";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue + 
+                  "\", got \"" + test1 + "\".");
+        }
+        
+        String test4 = "\ud800\ud800\udc00\ud800\udc00\udc00\ud800\ud800\udc00\ud800\udc00\udc00";
+        result = UTF16.replace(test4, 0xd800, 'A');
+        expectedValue = "A\ud800\udc00\ud800\udc00\udc00A\ud800\udc00\ud800\udc00\udc00";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue + 
+                  "\", got \"" + test1 + "\".");
+        }
+        
+        result = UTF16.replace(test4, 0xdC00, 'A');
+        expectedValue = "\ud800\ud800\udc00\ud800\udc00A\ud800\ud800\udc00\ud800\udc00A";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue + 
+                  "\", got \"" + test1 + "\".");
+        }
+        
+        result = UTF16.replace(test4, 0x10000, 'A');
+        expectedValue = "\ud800AA\udc00\ud800AA\udc00";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue + 
+                  "\", got \"" + test1 + "\".");
+        }
+    }
+    
+    public void TestReverse()
+    {
+        StringBuffer test = new StringBuffer(
+                                          "backwards words say to used I");
+
+        StringBuffer result = UTF16.reverse(test);
+        if (!result.toString().equals("I desu ot yas sdrow sdrawkcab")) {
+            errln("reverse() failed:  Expected \"I desu ot yas sdrow sdrawkcab\",\n got \""
+            + result + "\"");
+        }
+        StringBuffer testbuffer = new StringBuffer();
+        UTF16.append(testbuffer, 0x2f999);
+        UTF16.append(testbuffer, 0x1d15f);
+        UTF16.append(testbuffer, 0x00c4);
+        UTF16.append(testbuffer, 0x1ed0);
+        result = UTF16.reverse(testbuffer);
+        if (result.charAt(0) != 0x1ed0 || 
+            result.charAt(1) != 0xc4 || 
+            UTF16.charAt(result, 2) != 0x1d15f || 
+            UTF16.charAt(result, 4)!=0x2f999) {
+            errln("reverse() failed with supplementary characters");
+        }
+    }
+  
+    public void TestCaseCompare() 
+    {
+        String mixed = "\u0061\u0042\u0131\u03a3\u00df\ufb03\ud93f\udfff";
+        String otherDefault = "\u0041\u0062\u0131\u03c3\u0073\u0053\u0046\u0066\u0049\ud93f\udfff";
+        String otherExcludeSpecialI = "\u0041\u0062\u0131\u03c3\u0053\u0073\u0066\u0046\u0069\ud93f\udfff";
+        String different = "\u0041\u0062\u0131\u03c3\u0073\u0053\u0046\u0066\u0049\ud93f\udffd";
+    
+        /*
+         * UVersionInfo unicodeVersion={ 0, 0, 17, 89 }, unicode_3_1={ 3, 1, 0, 0 };
+    
+        int32_t result, lenMixed, lenOtherDefault, lenOtherExcludeSpecialI, lenDifferent;
+        UErrorCode errorCode;
+        UBool isUnicode_3_1;
+    
+        errorCode=U_ZERO_ERROR;
+    
+        lenMixed=u_strlen(mixed);
+        lenOtherDefault=u_strlen(otherDefault);
+        lenOtherExcludeSpecialI=u_strlen(otherExcludeSpecialI);
+        lenDifferent=u_strlen(different);
+    
+        // if unicodeVersion()>=3.1 then test exclude-special-i cases as well
+        u_getUnicodeVersion(unicodeVersion);
+        isUnicode_3_1= uprv_memcmp(unicodeVersion, unicode_3_1, 4)>=0;
+    
+        // test u_strcasecmp()
+        result=u_strcasecmp(mixed, otherDefault, U_FOLD_CASE_DEFAULT);
+        if(result!=0) {
+            log_err("error: u_strcasecmp(mixed, other, default)=%ld instead of 0\n", result);
+        }
+        result=u_strCaseCompare(mixed, -1, otherDefault, -1, U_FOLD_CASE_DEFAULT, &errorCode);
+        if(result!=0) {
+            log_err("error: u_strCaseCompare(mixed, other, default)=%ld instead of 0\n", result);
+        }
+    
+        // test u_strcasecmp() - exclude special i 
+        result=u_strcasecmp(mixed, otherExcludeSpecialI, U_FOLD_CASE_EXCLUDE_SPECIAL_I);
+        if(result!=0) {
+            log_err("error: u_strcasecmp(mixed, other, exclude special i)=%ld instead of 0\n", result);
+        }
+        result=u_strCaseCompare(mixed, lenMixed, otherExcludeSpecialI, lenOtherExcludeSpecialI, U_FOLD_CASE_EXCLUDE_SPECIAL_I, &errorCode);
+        if(result!=0) {
+            log_err("error: u_strCaseCompare(mixed, other, exclude special i)=%ld instead of 0\n", result);
+        }
+    
+        // test u_strcasecmp()
+        result=u_strcasecmp(mixed, different, U_FOLD_CASE_DEFAULT);
+        if(result<=0) {
+            log_err("error: u_strcasecmp(mixed, different, default)=%ld instead of positive\n", result);
+        }
+        result=u_strCaseCompare(mixed, -1, different, lenDifferent, U_FOLD_CASE_DEFAULT, &errorCode);
+        if(result<=0) {
+            log_err("error: u_strCaseCompare(mixed, different, default)=%ld instead of positive\n", result);
+        }
+    
+        // test u_strncasecmp() - stop before the sharp s (U+00df)
+        result=u_strncasecmp(mixed, different, 4, U_FOLD_CASE_DEFAULT);
+        if(result!=0) {
+            log_err("error: u_strncasecmp(mixed, different, 4, default)=%ld instead of 0\n", result);
+        }
+        result=u_strCaseCompare(mixed, 4, different, 4, U_FOLD_CASE_DEFAULT, &errorCode);
+        if(result!=0) {
+            log_err("error: u_strCaseCompare(mixed, 4, different, 4, default)=%ld instead of 0\n", result);
+        }
+    
+        // test u_strncasecmp() - stop in the middle of the sharp s (U+00df) 
+        result=u_strncasecmp(mixed, different, 5, U_FOLD_CASE_DEFAULT);
+        if(result<=0) {
+            log_err("error: u_strncasecmp(mixed, different, 5, default)=%ld instead of positive\n", result);
+        }
+        result=u_strCaseCompare(mixed, 5, different, 5, U_FOLD_CASE_DEFAULT, &errorCode);
+        if(result<=0) {
+            log_err("error: u_strCaseCompare(mixed, 5, different, 5, default)=%ld instead of positive\n", result);
+        }
+    
+        // test u_memcasecmp() - stop before the sharp s (U+00df) 
+        result=u_memcasecmp(mixed, different, 4, U_FOLD_CASE_DEFAULT);
+        if(result!=0) {
+            log_err("error: u_memcasecmp(mixed, different, 4, default)=%ld instead of 0\n", result);
+        }
+    
+        // test u_memcasecmp() - stop in the middle of the sharp s (U+00df) 
+        result=u_memcasecmp(mixed, different, 5, U_FOLD_CASE_DEFAULT);
+        if(result<=0) {
+            log_err("error: u_memcasecmp(mixed, different, 5, default)=%ld instead of positive\n", result);
+        }
+        */
+    }
+
+    public static void main(String[] arg)
+    {
+    	try
+        {
+            UTF16Test test = new UTF16Test();
+            // test.TestIndexOf();
+            test.run(arg);
+        }
+        catch (Exception e)
+        {
+        e.printStackTrace();
+        }
+    }
+    
+    // private data members ----------------------------------------------
+    
+    private final static String INDEXOF_SUPPLEMENTARY_STRING_ =
+        "\ud841\udc02\u0071\udc02\ud841\u0071\ud841\udc02\u0071\u0072" +
+        "\ud841\udc02\u0071\ud841\udc02\u0071\udc02\ud841\u0073";
+    private final static int INDEXOF_SUPPLEMENTARY_CHAR_[] = 
+                          			{0x71, 0xd841, 0xdc02, 
+                           		     UCharacter.getCodePoint((char)0xd841, 
+                           		                             (char)0xdc02)};
+    private final static int INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[][] = 
+                                                    {{2, 5, 8, 12, 15},
+                                                     {4, 17},
+                                                     {3, 16},
+                                                     {0, 6, 10, 13}              	
+									                };
+	private final static String INDEXOF_SUPPLEMENTARY_STR_ = "\udc02\ud841";
+    private final static int INDEXOF_SUPPLEMENTARY_STR_INDEX_[] = 
+                                                    {3, 16};								                
+}
+
diff --git a/src/com/ibm/icu/dev/test/normalizer/BasicTest.java b/src/com/ibm/icu/dev/test/normalizer/BasicTest.java
new file mode 100755
index 0000000..2ad7b75
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/BasicTest.java
@@ -0,0 +1,2121 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/normalizer/BasicTest.java,v $
+ * $Date: 2002/10/09 18:11:37 $
+ * $Revision: 1.15.2.1 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.dev.test.normalizer;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.*;
+import com.ibm.icu.impl.Utility;
+import java.text.StringCharacterIterator;
+import java.util.Random;
+
+public class BasicTest extends TestFmwk {
+	public static void main(String[] args) throws Exception {
+        new BasicTest().run(args);
+    }
+
+    String[][] canonTests = {
+        // Input                Decomposed              Composed
+        { "cat",                "cat",                  "cat"               },
+        { "\u00e0ardvark",      "a\u0300ardvark",       "\u00e0ardvark",    },
+
+        { "\u1e0a",             "D\u0307",              "\u1e0a"            }, // D-dot_above
+        { "D\u0307",            "D\u0307",              "\u1e0a"            }, // D dot_above
+
+        { "\u1e0c\u0307",       "D\u0323\u0307",        "\u1e0c\u0307"      }, // D-dot_below dot_above
+        { "\u1e0a\u0323",       "D\u0323\u0307",        "\u1e0c\u0307"      }, // D-dot_above dot_below
+        { "D\u0307\u0323",      "D\u0323\u0307",        "\u1e0c\u0307"      }, // D dot_below dot_above
+
+        { "\u1e10\u0307\u0323", "D\u0327\u0323\u0307",  "\u1e10\u0323\u0307"}, // D dot_below cedilla dot_above
+        { "D\u0307\u0328\u0323","D\u0328\u0323\u0307",  "\u1e0c\u0328\u0307"}, // D dot_above ogonek dot_below
+
+        { "\u1E14",             "E\u0304\u0300",        "\u1E14"            }, // E-macron-grave
+        { "\u0112\u0300",       "E\u0304\u0300",        "\u1E14"            }, // E-macron + grave
+        { "\u00c8\u0304",       "E\u0300\u0304",        "\u00c8\u0304"      }, // E-grave + macron
+
+        { "\u212b",             "A\u030a",              "\u00c5"            }, // angstrom_sign
+        { "\u00c5",             "A\u030a",              "\u00c5"            }, // A-ring
+
+        { "\u00c4ffin",         "A\u0308ffin",          "\u00c4ffin"        },
+        { "\u00c4\uFB03n",      "A\u0308\uFB03n",       "\u00c4\uFB03n"     },
+
+        { "\u00fdffin",         "y\u0301ffin",          "\u00fdffin"        }, //updated with 3.0
+        { "\u00fd\uFB03n",      "y\u0301\uFB03n",       "\u00fd\uFB03n"     }, //updated with 3.0
+
+        { "Henry IV",           "Henry IV",             "Henry IV"          },
+        { "Henry \u2163",       "Henry \u2163",         "Henry \u2163"      },
+
+        { "\u30AC",             "\u30AB\u3099",         "\u30AC"            }, // ga (Katakana)
+        { "\u30AB\u3099",       "\u30AB\u3099",         "\u30AC"            }, // ka + ten
+        { "\uFF76\uFF9E",       "\uFF76\uFF9E",         "\uFF76\uFF9E"      }, // hw_ka + hw_ten
+        { "\u30AB\uFF9E",       "\u30AB\uFF9E",         "\u30AB\uFF9E"      }, // ka + hw_ten
+        { "\uFF76\u3099",       "\uFF76\u3099",         "\uFF76\u3099"      }, // hw_ka + ten
+
+        { "A\u0300\u0316", "A\u0316\u0300", "\u00C0\u0316" },
+        {"\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e","\\U0001D157\\U0001D165\\U0001D157\\U0001D165\\U0001D157\\U0001D165", "\\U0001D157\\U0001D165\\U0001D157\\U0001D165\\U0001D157\\U0001D165"},
+    };
+
+    String[][] compatTests = {
+            // Input                Decomposed              Composed
+        { "cat",                 "cat",                     "cat"           },
+        { "\uFB4f",             "\u05D0\u05DC",         "\u05D0\u05DC",     }, // Alef-Lamed vs. Alef, Lamed
+
+        { "\u00C4ffin",         "A\u0308ffin",          "\u00C4ffin"        },
+        { "\u00C4\uFB03n",      "A\u0308ffin",          "\u00C4ffin"        }, // ffi ligature -> f + f + i
+
+        { "\u00fdffin",         "y\u0301ffin",          "\u00fdffin"        },        //updated for 3.0
+        { "\u00fd\uFB03n",      "y\u0301ffin",          "\u00fdffin"        }, // ffi ligature -> f + f + i
+
+        { "Henry IV",           "Henry IV",             "Henry IV"          },
+        { "Henry \u2163",       "Henry IV",             "Henry IV"          },
+
+        { "\u30AC",             "\u30AB\u3099",         "\u30AC"            }, // ga (Katakana)
+        { "\u30AB\u3099",       "\u30AB\u3099",         "\u30AC"            }, // ka + ten
+
+        { "\uFF76\u3099",       "\u30AB\u3099",         "\u30AC"            }, // hw_ka + ten
+
+        /* These two are broken in Unicode 2.1.2 but fixed in 2.1.5 and later*/
+        { "\uFF76\uFF9E",       "\u30AB\u3099",         "\u30AC"            }, // hw_ka + hw_ten
+        { "\u30AB\uFF9E",       "\u30AB\u3099",         "\u30AC"            }, // ka + hw_ten
+
+    };
+
+    // With Canonical decomposition, Hangul syllables should get decomposed
+    // into Jamo, but Jamo characters should not be decomposed into
+    // conjoining Jamo
+    String[][] hangulCanon = {
+        // Input                Decomposed              Composed
+        { "\ud4db",             "\u1111\u1171\u11b6",   "\ud4db"        },
+        { "\u1111\u1171\u11b6", "\u1111\u1171\u11b6",   "\ud4db"        },
+    };
+
+    // With compatibility decomposition turned on,
+    // it should go all the way down to conjoining Jamo characters.
+    // THIS IS NO LONGER TRUE IN UNICODE v2.1.8, SO THIS TEST IS OBSOLETE
+    String[][] hangulCompat = {
+        // Input        Decomposed                          Composed
+        // { "\ud4db",     "\u1111\u116e\u1175\u11af\u11c2",   "\ud478\u1175\u11af\u11c2"  },
+    };
+
+    public void TestHangulCompose()
+                throws Exception{
+        // Make sure that the static composition methods work
+        logln("Canonical composition...");
+        staticTest(Normalizer.NFC, hangulCanon,  2);
+        logln("Compatibility composition...");
+        staticTest(Normalizer.NFKC, hangulCompat, 2);
+        // Now try iterative composition....
+        logln("Iterative composition...");
+        Normalizer norm = new Normalizer("", Normalizer.NFC);
+        iterateTest(norm, hangulCanon, 2);
+
+        norm.setMode(Normalizer.NFKD);
+        iterateTest(norm, hangulCompat, 2);
+
+        // And finally, make sure you can do it in reverse too
+        logln("Reverse iteration...");
+        norm.setMode(Normalizer.NFC);
+        backAndForth(norm, hangulCanon);
+     }
+
+    public void TestHangulDecomp() throws Exception{
+        // Make sure that the static decomposition methods work
+        logln("Canonical decomposition...");
+        staticTest(Normalizer.NFD, hangulCanon,  1);
+        logln("Compatibility decomposition...");
+        staticTest(Normalizer.NFKD, hangulCompat, 1);
+
+         // Now the iterative decomposition methods...
+        logln("Iterative decomposition...");
+        Normalizer norm = new Normalizer("", Normalizer.NFD);
+        iterateTest(norm, hangulCanon, 1);
+
+        norm.setMode(Normalizer.NFKD);
+        iterateTest(norm, hangulCompat, 1);
+
+        // And finally, make sure you can do it in reverse too
+        logln("Reverse iteration...");
+        norm.setMode(Normalizer.NFD);
+        backAndForth(norm, hangulCanon);
+    }
+    public void TestNone() throws Exception{
+        Normalizer norm = new Normalizer("", Normalizer.NONE);
+        iterateTest(norm, canonTests, 0);
+        staticTest(Normalizer.NONE, canonTests, 0);
+    }
+    public void TestDecomp() throws Exception{
+        Normalizer norm = new Normalizer("", Normalizer.NFD);
+        iterateTest(norm, canonTests, 1);
+        staticTest(Normalizer.NFD, canonTests, 1);
+        decomposeTest(Normalizer.NFD, canonTests, 1);
+    }
+
+    public void TestCompatDecomp() throws Exception{
+        Normalizer norm = new Normalizer("", Normalizer.NFKD);
+        iterateTest(norm, compatTests, 1);
+        staticTest(Normalizer.NFKD,compatTests, 1);
+        decomposeTest(Normalizer.NFKD,compatTests, 1);
+    }
+
+    public void TestCanonCompose() throws Exception{
+        Normalizer norm = new Normalizer("", Normalizer.NFC);
+        iterateTest(norm, canonTests, 2);
+        staticTest(Normalizer.NFC, canonTests, 2);
+        composeTest(Normalizer.NFC, canonTests, 2);
+    }
+
+    public void TestCompatCompose() throws Exception{
+        Normalizer norm = new Normalizer("", Normalizer.NFKC);
+        iterateTest(norm, compatTests, 2);
+        staticTest(Normalizer.NFKC,compatTests, 2);
+        composeTest(Normalizer.NFKC,compatTests, 2);
+    }
+
+    public void TestExplodingBase() throws Exception{
+        // \u017f - Latin small letter long s
+        // \u0307 - combining dot above
+        // \u1e61 - Latin small letter s with dot above
+        // \u1e9b - Latin small letter long s with dot above
+        String[][] canon = {
+            // Input                Decomposed              Composed
+            { "Tschu\u017f",        "Tschu\u017f",          "Tschu\u017f"    },
+            { "Tschu\u1e9b",        "Tschu\u017f\u0307",    "Tschu\u1e9b"    },
+        };
+        String[][] compat = {
+            // Input                Decomposed              Composed
+            { "\u017f",        "s",              "s"           },
+            { "\u1e9b",        "s\u0307",        "\u1e61"      },
+        };
+
+        staticTest(Normalizer.NFD, canon,  1);
+        staticTest(Normalizer.NFC, canon,  2);
+
+        staticTest(Normalizer.NFKD, compat, 1);
+        staticTest(Normalizer.NFKC, compat, 2);
+
+    }
+
+    /**
+     * The Tibetan vowel sign AA, 0f71, was messed up prior to
+     * Unicode version 2.1.9.
+     * Once 2.1.9 or 3.0 is released, uncomment this test.
+     */
+    public void TestTibetan() throws Exception{
+        String[][] decomp = {
+            { "\u0f77", "\u0f77", "\u0fb2\u0f71\u0f80" }
+        };
+        String[][] compose = {
+            { "\u0fb2\u0f71\u0f80", "\u0fb2\u0f71\u0f80", "\u0fb2\u0f71\u0f80" }
+        };
+
+        staticTest(Normalizer.NFD, decomp, 1);
+        staticTest(Normalizer.NFKD,decomp, 2);
+        staticTest(Normalizer.NFC, compose, 1);
+        staticTest(Normalizer.NFKC,compose, 2);
+    }
+
+    /**
+     * Make sure characters in the CompositionExclusion.txt list do not get
+     * composed to.
+     */
+    public void TestCompositionExclusion()
+                throws Exception{
+        // This list is generated from CompositionExclusion.txt.
+        // Update whenever the normalizer tables are updated.  Note
+        // that we test all characters listed, even those that can be
+        // derived from the Unicode DB and are therefore commented
+        // out.
+        String EXCLUDED =
+            "\u0340\u0341\u0343\u0344\u0374\u037E\u0387\u0958" +
+            "\u0959\u095A\u095B\u095C\u095D\u095E\u095F\u09DC" +
+            "\u09DD\u09DF\u0A33\u0A36\u0A59\u0A5A\u0A5B\u0A5E" +
+            "\u0B5C\u0B5D\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69" +
+            "\u0F73\u0F75\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2" +
+            "\u0FA7\u0FAC\u0FB9\u1F71\u1F73\u1F75\u1F77\u1F79" +
+            "\u1F7B\u1F7D\u1FBB\u1FBE\u1FC9\u1FCB\u1FD3\u1FDB" +
+            "\u1FE3\u1FEB\u1FEE\u1FEF\u1FF9\u1FFB\u1FFD\u2000" +
+            "\u2001\u2126\u212A\u212B\u2329\u232A\uF900\uFA10" +
+            "\uFA12\uFA15\uFA20\uFA22\uFA25\uFA26\uFA2A\uFB1F" +
+            "\uFB2A\uFB2B\uFB2C\uFB2D\uFB2E\uFB2F\uFB30\uFB31" +
+            "\uFB32\uFB33\uFB34\uFB35\uFB36\uFB38\uFB39\uFB3A" +
+            "\uFB3B\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46" +
+            "\uFB47\uFB48\uFB49\uFB4A\uFB4B\uFB4C\uFB4D\uFB4E";
+        for (int i=0; i<EXCLUDED.length(); ++i) {
+            String a = String.valueOf(EXCLUDED.charAt(i));
+            String b = Normalizer.normalize(a, Normalizer.NFKD);
+            String c = Normalizer.normalize(b, Normalizer.NFC);
+            if (c.equals(a)) {
+                errln("FAIL: " + hex(a) + " x DECOMP_COMPAT => " +
+                      hex(b) + " x COMPOSE => " +
+                      hex(c));
+            } else if (isVerbose()) {
+                logln("Ok: " + hex(a) + " x DECOMP_COMPAT => " +
+                      hex(b) + " x COMPOSE => " +
+                      hex(c));
+            }
+        }
+        // The following method works too, but it is somewhat
+        // incestuous.  It uses UInfo, which is the same database that
+        // NormalizerBuilder uses, so if something is wrong with
+        // UInfo, the following test won't show it.  All it will show
+        // is that NormalizerBuilder has been run with whatever the
+        // current UInfo is.
+        //
+        // We comment this out in favor of the test above, which
+        // provides independent verification (but also requires
+        // independent updating).
+//      logln("---");
+//      UInfo uinfo = new UInfo();
+//      for (int i=0; i<=0xFFFF; ++i) {
+//          if (!uinfo.isExcludedComposition((char)i) ||
+//              (!uinfo.hasCanonicalDecomposition((char)i) &&
+//               !uinfo.hasCompatibilityDecomposition((char)i))) continue;
+//          String a = String.valueOf((char)i);
+//          String b = NewNormalizer.normalize(a,NewNormalizer.DECOMP_COMPAT,0);
+//          String c = NewNormalizer.normalize(b,NewNormalizer.COMPOSE,0);
+//          if (c.equals(a)) {
+//              errln("FAIL: " + hex(a) + " x DECOMP_COMPAT => " +
+//                    hex(b) + " x COMPOSE => " +
+//                    hex(c));
+//          } else if (isVerbose()) {
+//              logln("Ok: " + hex(a) + " x DECOMP_COMPAT => " +
+//                    hex(b) + " x COMPOSE => " +
+//                    hex(c));
+//          }
+//      }
+    }
+
+    /**
+     * Test for a problem that showed up just before ICU 1.6 release
+     * having to do with combining characters with an index of zero.
+     * Such characters do not participate in any canonical
+     * decompositions.  However, having an index of zero means that
+     * they all share one typeMask[] entry, that is, they all have to
+     * map to the same canonical class, which is not the case, in
+     * reality.
+     */
+    public void TestZeroIndex()
+                throws Exception{
+        String[] DATA = {
+            // Expect col1 x COMPOSE_COMPAT => col2
+            // Expect col2 x DECOMP => col3
+            "A\u0316\u0300", "\u00C0\u0316", "A\u0316\u0300",
+            "A\u0300\u0316", "\u00C0\u0316", "A\u0316\u0300",
+            "A\u0327\u0300", "\u00C0\u0327", "A\u0327\u0300",
+            "c\u0321\u0327", "c\u0321\u0327", "c\u0321\u0327",
+            "c\u0327\u0321", "\u00E7\u0321", "c\u0327\u0321",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            String a = DATA[i];
+            String b = Normalizer.normalize(a, Normalizer.NFKC);
+            String exp = DATA[i+1];
+            if (b.equals(exp)) {
+                logln("Ok: " + hex(a) + " x COMPOSE_COMPAT => " + hex(b));
+            } else {
+                errln("FAIL: " + hex(a) + " x COMPOSE_COMPAT => " + hex(b) +
+                      ", expect " + hex(exp));
+            }
+            a = Normalizer.normalize(b, Normalizer.NFD);
+            exp = DATA[i+2];
+            if (a.equals(exp)) {
+                logln("Ok: " + hex(b) + " x DECOMP => " + hex(a));
+            } else {
+                errln("FAIL: " + hex(b) + " x DECOMP => " + hex(a) +
+                      ", expect " + hex(exp));
+            }
+        }
+    }
+
+    /**
+     * Test for a problem found by Verisign.  Problem is that
+     * characters at the start of a string are not put in canonical
+     * order correctly by compose() if there is no starter.
+     */
+    public void TestVerisign()
+                throws Exception{
+        String[] inputs = {
+            "\u05b8\u05b9\u05b1\u0591\u05c3\u05b0\u05ac\u059f",
+            "\u0592\u05b7\u05bc\u05a5\u05b0\u05c0\u05c4\u05ad"
+        };
+        String[] outputs = {
+            "\u05b1\u05b8\u05b9\u0591\u05c3\u05b0\u05ac\u059f",
+            "\u05b0\u05b7\u05bc\u05a5\u0592\u05c0\u05ad\u05c4"
+        };
+
+        for (int i = 0; i < inputs.length; ++i) {
+            String input = inputs[i];
+            String output = outputs[i];
+            String result = Normalizer.decompose(input, false);
+            if (!result.equals(output)) {
+                errln("FAIL input: " + hex(input));
+                errln(" decompose: " + hex(result));
+                errln("  expected: " + hex(output));
+            }
+            result = Normalizer.compose(input, false);
+            if (!result.equals(output)) {
+                errln("FAIL input: " + hex(input));
+                errln("   compose: " + hex(result));
+                errln("  expected: " + hex(output));
+            }
+        }
+
+    }
+    public void  TestQuickCheckResultNO()
+                 throws Exception{
+        final char CPNFD[] = {0x00C5, 0x0407, 0x1E00, 0x1F57, 0x220C,
+                                0x30AE, 0xAC00, 0xD7A3, 0xFB36, 0xFB4E};
+        final char CPNFC[] = {0x0340, 0x0F93, 0x1F77, 0x1FBB, 0x1FEB,
+                                0x2000, 0x232A, 0xF900, 0xFA1E, 0xFB4E};
+        final char CPNFKD[] = {0x00A0, 0x02E4, 0x1FDB, 0x24EA, 0x32FE,
+                                0xAC00, 0xFB4E, 0xFA10, 0xFF3F, 0xFA2D};
+        final char CPNFKC[] = {0x00A0, 0x017F, 0x2000, 0x24EA, 0x32FE,
+                                0x33FE, 0xFB4E, 0xFA10, 0xFF3F, 0xFA2D};
+
+
+        final int SIZE = 10;
+
+        int count = 0;
+        for (; count < SIZE; count ++)
+        {
+            if (Normalizer.quickCheck(String.valueOf(CPNFD[count]),
+                    Normalizer.NFD) != Normalizer.NO)
+            {
+                errln("ERROR in NFD quick check at U+" +
+                       Integer.toHexString(CPNFD[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFC[count]),
+                        Normalizer.NFC) !=Normalizer.NO)
+            {
+                errln("ERROR in NFC quick check at U+"+
+                       Integer.toHexString(CPNFC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFKD[count]),
+                                Normalizer.NFKD) != Normalizer.NO)
+            {
+                errln("ERROR in NFKD quick check at U+"+
+                       Integer.toHexString(CPNFKD[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFKC[count]),
+                                         Normalizer.NFKC) !=Normalizer.NO)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                       Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+        }
+    }
+
+
+    public void TestQuickCheckResultYES()
+                throws Exception{
+        final char CPNFD[] = {0x00C6, 0x017F, 0x0F74, 0x1000, 0x1E9A,
+                                0x2261, 0x3075, 0x4000, 0x5000, 0xF000};
+        final char CPNFC[] = {0x0400, 0x0540, 0x0901, 0x1000, 0x1500,
+                                0x1E9A, 0x3000, 0x4000, 0x5000, 0xF000};
+        final char CPNFKD[] = {0x00AB, 0x02A0, 0x1000, 0x1027, 0x2FFB,
+                                0x3FFF, 0x4FFF, 0xA000, 0xF000, 0xFA27};
+        final char CPNFKC[] = {0x00B0, 0x0100, 0x0200, 0x0A02, 0x1000,
+                                0x2010, 0x3030, 0x4000, 0xA000, 0xFA0E};
+
+        final int SIZE = 10;
+        int count = 0;
+
+        char cp = 0;
+        while (cp < 0xA0)
+        {
+            if (Normalizer.quickCheck(String.valueOf(cp), Normalizer.NFD)
+                                            != Normalizer.YES)
+            {
+                errln("ERROR in NFD quick check at U+"+
+                                                      Integer.toHexString(cp));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(cp), Normalizer.NFC)
+                                             != Normalizer.YES)
+            {
+                errln("ERROR in NFC quick check at U+"+
+                                                      Integer.toHexString(cp));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(cp), Normalizer.NFKD)
+                                             != Normalizer.YES)
+            {
+                errln("ERROR in NFKD quick check at U+" +
+                                                      Integer.toHexString(cp));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(cp), Normalizer.NFKC)
+                                             != Normalizer.YES)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                                                       Integer.toHexString(cp));
+                return;
+            }
+            cp++;
+        }
+
+        for (; count < SIZE; count ++)
+        {
+            if (Normalizer.quickCheck(String.valueOf(CPNFD[count]),
+                                         Normalizer.NFD)!=Normalizer.YES)
+            {
+                errln("ERROR in NFD quick check at U+"+
+                                             Integer.toHexString(CPNFD[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFC[count]),
+                                         Normalizer.NFC)!=Normalizer.YES)
+            {
+                errln("ERROR in NFC quick check at U+"+
+                                             Integer.toHexString(CPNFC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFKD[count]),
+                                         Normalizer.NFKD)!=Normalizer.YES)
+            {
+                errln("ERROR in NFKD quick check at U+"+
+                                    Integer.toHexString(CPNFKD[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFKC[count]),
+                                         Normalizer.NFKC)!=Normalizer.YES)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                        Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+        }
+    }
+    public void TestBengali() throws Exception{
+        String input = "\u09bc\u09be\u09cd\u09be";
+        String output=Normalizer.normalize(input,Normalizer.NFC);
+        if(!input.equals(output)){
+             errln("ERROR in NFC of string");
+        }
+        return;
+    }
+    public void TestQuickCheckResultMAYBE()
+                throws Exception{
+
+        final char[] CPNFC = {0x0306, 0x0654, 0x0BBE, 0x102E, 0x1161,
+                                0x116A, 0x1173, 0x1175, 0x3099, 0x309A};
+        final char[] CPNFKC = {0x0300, 0x0654, 0x0655, 0x09D7, 0x0B3E,
+                                0x0DCF, 0xDDF, 0x102E, 0x11A8, 0x3099};
+
+
+        final int SIZE = 10;
+
+        int count = 0;
+
+        /* NFD and NFKD does not have any MAYBE codepoints */
+        for (; count < SIZE; count ++)
+        {
+            if (Normalizer.quickCheck(String.valueOf(CPNFC[count]),
+                                        Normalizer.NFC)!=Normalizer.MAYBE)
+            {
+                errln("ERROR in NFC quick check at U+"+
+                                            Integer.toHexString(CPNFC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFKC[count]),
+                                       Normalizer.NFKC)!=Normalizer.MAYBE)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                                            Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(new char[]{CPNFC[count]},
+                                        Normalizer.NFC)!=Normalizer.MAYBE)
+            {
+                errln("ERROR in NFC quick check at U+"+
+                                            Integer.toHexString(CPNFC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(new char[]{CPNFKC[count]},
+                                       Normalizer.NFKC)!=Normalizer.MAYBE)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                                            Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(new char[]{CPNFKC[count]},
+                                       Normalizer.NONE)!=Normalizer.MAYBE)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                                            Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+        }
+    }
+
+    public void TestQuickCheckStringResult()
+                throws Exception{
+        int count;
+        String d;
+        String c;
+
+        for (count = 0; count < canonTests.length; count ++)
+        {
+            d = canonTests[count][1];
+            c = canonTests[count][2];
+            if (Normalizer.quickCheck(d,Normalizer.NFD)
+                                            != Normalizer.YES)
+            {
+                errln("ERROR in NFD quick check for string at count " + count);
+                return;
+            }
+
+            if (Normalizer.quickCheck(c, Normalizer.NFC)
+                                            == Normalizer.NO)
+            {
+                errln("ERROR in NFC quick check for string at count " + count);
+                return;
+            }
+        }
+
+        for (count = 0; count < compatTests.length; count ++)
+        {
+            d = compatTests[count][1];
+            c = compatTests[count][2];
+            if (Normalizer.quickCheck(d, Normalizer.NFKD)
+                                            != Normalizer.YES)
+            {
+                errln("ERROR in NFKD quick check for string at count " + count);
+                return;
+            }
+
+            if (Normalizer.quickCheck(c,  Normalizer.NFKC)
+                                            != Normalizer.YES)
+            {
+                errln("ERROR in NFKC quick check for string at count " + count);
+                return;
+            }
+        }
+    }
+    //------------------------------------------------------------------------
+    // Internal utilities
+    //
+       //------------------------------------------------------------------------
+    // Internal utilities
+    //
+
+    private void backAndForth(Normalizer iter, String input)
+    {
+        iter.setText(input);
+
+        // Run through the iterator forwards and stick it into a StringBuffer
+        StringBuffer forward =  new StringBuffer();
+        for (int ch = iter.first(); ch != iter.DONE; ch = iter.next()) {
+            forward.append(ch);
+        }
+
+        // Now do it backwards
+        StringBuffer reverse = new StringBuffer();
+        for (int ch = iter.last(); ch != iter.DONE; ch = iter.previous()) {
+            reverse.insert(0, ch);
+        }
+
+        if (!forward.toString().equals(reverse.toString())) {
+            errln("FAIL: Forward/reverse mismatch for input " + hex(input)
+                  + ", forward: " + hex(forward) + ", backward: "+hex(reverse));
+        } else if (isVerbose()) {
+            logln("Ok: Forward/reverse for input " + hex(input)
+                  + ", forward: " + hex(forward) + ", backward: "+hex(reverse));
+        }
+    }
+
+    private void backAndForth(Normalizer iter, String[][] tests)
+    {
+        for (int i = 0; i < tests.length; i++)
+        {
+            iter.setText(tests[i][0]);
+
+            // Run through the iterator forwards and stick it into a
+            // StringBuffer
+            StringBuffer forward =  new StringBuffer();
+            for (int ch = iter.first(); ch != iter.DONE; ch = iter.next()) {
+                forward.append(ch);
+            }
+
+            // Now do it backwards
+            StringBuffer reverse = new StringBuffer();
+            for (int ch = iter.last(); ch != iter.DONE; ch = iter.previous()) {
+                reverse.insert(0, ch);
+            }
+
+            if (!forward.toString().equals(reverse.toString())) {
+                errln("FAIL: Forward/reverse mismatch for input "
+                    + hex(tests[i][0]) + ", forward: " + hex(forward)
+                    + ", backward: " + hex(reverse));
+            } else if (isVerbose()) {
+                logln("Ok: Forward/reverse for input " + hex(tests[i][0])
+                      + ", forward: " + hex(forward) + ", backward: "
+                      + hex(reverse));
+            }
+        }
+    }
+
+    private void staticTest (Normalizer.Mode mode,
+                             String[][] tests, int outCol) throws Exception{
+        for (int i = 0; i < tests.length; i++)
+        {
+            String input = Utility.unescape(tests[i][0]);
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + input + "' (" + hex(input) + ")" );
+
+            String output = Normalizer.normalize(input, mode);
+
+            if (!output.equals(expect)) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + output + "' (" + hex(output) + ")" );
+            }
+        }
+        char[] output = new char[1];
+        for (int i = 0; i < tests.length; i++)
+        {
+            char[] input = Utility.unescape(tests[i][0]).toCharArray();
+            String expect =Utility.unescape( tests[i][outCol]);
+
+            logln("Normalizing '" + new String(input) + "' (" +
+                        hex(new String(input)) + ")" );
+            int reqLength=0;
+	        while(true){
+		        try{
+		        	reqLength=Normalizer.normalize(input,output, mode);
+		        	if(reqLength<=output.length	){
+		        		break;
+		        	}
+		        }catch(IndexOutOfBoundsException e){
+		        	output= new char[Integer.parseInt(e.getMessage())];
+		        	continue;
+		        }
+	        }
+            if (!expect.equals(new String(output,0,reqLength))) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + new String(output)
+                    + "' ("  + hex(new String(output)) + ")" );
+            }
+        }
+    }
+    private void decomposeTest(Normalizer.Mode mode,
+                             String[][] tests, int outCol) throws Exception{
+        for (int i = 0; i < tests.length; i++)
+        {
+            String input = Utility.unescape(tests[i][0]);
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + input + "' (" + hex(input) + ")" );
+
+            String output = Normalizer.decompose(input, mode==Normalizer.NFKD);
+
+            if (!output.equals(expect)) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + output + "' (" + hex(output) + ")" );
+            }
+        }
+        char[] output = new char[1];
+        for (int i = 0; i < tests.length; i++)
+        {
+            char[] input = Utility.unescape(tests[i][0]).toCharArray();
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + new String(input) + "' (" +
+                        hex(new String(input)) + ")" );
+            int reqLength=0;
+            while(true){
+                try{
+                    reqLength=Normalizer.decompose(input,output, mode==Normalizer.NFKD);
+                    if(reqLength<=output.length ){
+                        break;
+                    }
+                }catch(IndexOutOfBoundsException e){
+                    output= new char[Integer.parseInt(e.getMessage())];
+                    continue;
+                }
+            }
+            if (!expect.equals(new String(output,0,reqLength))) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + new String(output)
+                    + "' ("  + hex(new String(output)) + ")" );
+            }
+        }
+    }
+
+    private void composeTest(Normalizer.Mode mode,
+                             String[][] tests, int outCol) throws Exception{
+        for (int i = 0; i < tests.length; i++)
+        {
+            String input = Utility.unescape(tests[i][0]);
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + input + "' (" + hex(input) + ")" );
+
+            String output = Normalizer.compose(input, mode==Normalizer.NFKC);
+
+            if (!output.equals(expect)) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + output + "' (" + hex(output) + ")" );
+            }
+        }
+        char[] output = new char[1];
+        for (int i = 0; i < tests.length; i++)
+        {
+            char[] input = Utility.unescape(tests[i][0]).toCharArray();
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + new String(input) + "' (" +
+                        hex(new String(input)) + ")" );
+            int reqLength=0;
+            while(true){
+                try{
+                    reqLength=Normalizer.compose(input,output, mode==Normalizer.NFKC);
+                    if(reqLength<=output.length ){
+                        break;
+                    }
+                }catch(IndexOutOfBoundsException e){
+                    output= new char[Integer.parseInt(e.getMessage())];
+                    continue;
+                }
+            }
+            if (!expect.equals(new String(output,0,reqLength))) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + new String(output)
+                    + "' ("  + hex(new String(output)) + ")" );
+            }
+        }
+    }
+    private void iterateTest(Normalizer iter, String[][] tests, int outCol){
+        for (int i = 0; i < tests.length; i++)
+        {
+            String input = Utility.unescape(tests[i][0]);
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + input + "' (" + hex(input) + ")" );
+
+            iter.setText(input);
+            assertEqual(expect, iter, "case " + i + " ");
+        }
+    }
+
+    private void assertEqual(String expected, Normalizer iter, String msg)
+    {
+        int index = 0;
+        int ch;
+        UCharacterIterator cIter =  UCharacterIterator.getInstance(expected);
+        
+        while ((ch=iter.next())!= iter.DONE){
+            if (index >= expected.length()) {
+                errln("FAIL: " + msg + "Unexpected character '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " at index " + index);
+                break;
+            }
+            int want = UTF16.charAt(expected,index);
+            if (ch != want) {
+                errln("FAIL: " + msg + "got '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " but expected '" + want + "' (" + hex(want)+ ")"
+                        + " at index " + index);
+            }
+            index+=  UTF16.getCharCount(ch);
+        }
+        if (index < expected.length()) {
+            errln("FAIL: " + msg + "Only got " + index + " chars, expected "
+            + expected.length());
+        }
+        
+        cIter.setToLimit();
+        while((ch=iter.previous())!=iter.DONE){
+            int want = cIter.previousCodePoint();
+            if (ch != want ) {
+                errln("FAIL: " + msg + "got '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " but expected '" + want + "' (" + hex(want) + ")"
+                        + " at index " + index);
+            }
+        }
+    }
+    //--------------------------------------------------------------------------
+
+    // NOTE: These tests are used for quick debugging so are not ported
+    // to ICU4C tsnorm.cpp in intltest
+    //
+
+    public void TestDebugStatic(){
+        String in = Utility.unescape("\\U0001D157\\U0001D165");
+        if(!Normalizer.isNormalized(in,Normalizer.NFC)){
+            errln("isNormalized failed");
+        }
+
+        String input  =  "\uAD8B\uAD8B\uAD8B\uAD8B"+
+            "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "aaaaaaaaaaaaaaaaaazzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
+            "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"+
+            "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"+
+            "ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"+
+            "\uAD8B\uAD8B\uAD8B\uAD8B"+
+            "d\u031B\u0307\u0323";
+        String expect = "\u1100\u116F\u11AA\u1100\u116F\u11AA\u1100\u116F"+
+                        "\u11AA\u1100\u116F\u11AA\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65aaaaaaaaaaaaaaaaaazzzzzz"+
+                        "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
+                        "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"+
+                        "bbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccc"+
+                        "cccccccccccccccccccccccccccccccccccccccccccccccc"+
+                        "ddddddddddddddddddddddddddddddddddddddddddddddddddddd"+
+                        "dddddddddddddddddddddddd"+
+                        "\u1100\u116F\u11AA\u1100\u116F\u11AA\u1100\u116F"+
+                        "\u11AA\u1100\u116F\u11AA\u0064\u031B\u0323\u0307";
+            String output = Normalizer.normalize(Utility.unescape(input),
+                            Normalizer.NFD);
+            if(!expect.equals(output)){
+                errln("FAIL expected: "+hex(expect) + " got: "+hex(output));
+            }
+
+
+
+    }
+    public void TestDebugIter(){
+        String src = Utility.unescape("\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e");
+        String expected = Utility.unescape("\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e");
+        Normalizer iter = new Normalizer(new StringCharacterIterator(Utility.unescape(src)),
+                                                Normalizer.NONE);
+        int index = 0;
+        int ch;
+        UCharacterIterator cIter =  UCharacterIterator.getInstance(expected);
+        
+        while ((ch=iter.next())!= iter.DONE){
+            if (index >= expected.length()) {
+                errln("FAIL: " +  "Unexpected character '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " at index " + index);
+                break;
+            }
+            int want = UTF16.charAt(expected,index);
+            if (ch != want) {
+                errln("FAIL: " +  "got '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " but expected '" + want + "' (" + hex(want)+ ")"
+                        + " at index " + index);
+            }
+            index+=  UTF16.getCharCount(ch);
+        }
+        if (index < expected.length()) {
+            errln("FAIL: " +  "Only got " + index + " chars, expected "
+            + expected.length());
+        }
+        
+        cIter.setToLimit();
+        while((ch=iter.previous())!=iter.DONE){
+            int want = cIter.previousCodePoint();
+            if (ch != want ) {
+                errln("FAIL: " + "got '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " but expected '" + want + "' (" + hex(want) + ")"
+                        + " at index " + index);
+            }
+        }
+    }
+    public void TestDebugIterOld(){
+        String input = "\\U0001D15E";
+        String expected = "\uD834\uDD57\uD834\uDD65";
+        String expectedReverse = "\uD834\uDD65\uD834\uDD57";
+        int index = 0;
+        int ch;
+        Normalizer iter = new Normalizer(new StringCharacterIterator(Utility.unescape(input)),
+                                                Normalizer.NFKC);
+        StringBuffer got = new StringBuffer();
+        for (ch = iter.first();ch!=iter.DONE;ch=iter.next())
+        {
+            if (index >= expected.length()) {
+                errln("FAIL: " +  "Unexpected character '" + (char)ch +
+                       "' (" + hex(ch) + ")" + " at index " + index);
+                break;
+            }
+            got.append(UTF16.toString(ch));
+            index++;
+        }
+        if (!expected.equals(got.toString())) {
+                errln("FAIL: " +  "got '" +got+ "' (" + hex(got) + ")"
+                        + " but expected '" + expected + "' ("
+                        + hex(expected) + ")");
+        }
+        if (got.length() < expected.length()) {
+            errln("FAIL: " +  "Only got " + index + " chars, expected "
+                           + expected.length());
+        }
+
+        logln("Reverse Iteration\n");
+        iter.setIndexOnly(iter.endIndex());
+        got.setLength(0);
+        for(ch=iter.previous();ch!=iter.DONE;ch=iter.previous()){
+            if (index >= expected.length()) {
+                errln("FAIL: " +  "Unexpected character '" + (char)ch
+                               + "' (" + hex(ch) + ")" + " at index " + index);
+                break;
+            }
+            got.append(UTF16.toString(ch));
+        }
+        if (!expectedReverse.equals(got.toString())) {
+                errln("FAIL: " +  "got '" +got+ "' (" + hex(got) + ")"
+                               + " but expected '" + expected
+                               + "' (" + hex(expected) + ")");
+        }
+        if (got.length() < expected.length()) {
+            errln("FAIL: " +  "Only got " + index + " chars, expected "
+                      + expected.length());
+        }
+
+    }
+    //--------------------------------------------------------------------------
+	// helper class for TestPreviousNext()
+	// simple UTF-32 character iterator
+	class UCharIterator {
+
+	   public UCharIterator(int[] src, int len, int index){
+
+	        s=src;
+            length=len;
+            i=index;
+       }
+
+	    public int current() {
+	        if(i<length) {
+	            return s[i];
+	        } else {
+	            return -1;
+	        }
+	    }
+
+	    public int next() {
+	        if(i<length) {
+	            return s[i++];
+	        } else {
+	            return -1;
+	        }
+	    }
+
+	    public int previous() {
+	        if(i>0) {
+	            return s[--i];
+	        } else {
+	            return -1;
+	        }
+	    }
+
+	    public int getIndex() {
+	        return i;
+	    }
+
+	    private int[] s;
+	    private int length, i;
+	};
+	public void TestPreviousNext() {
+	    // src and expect strings
+	    char src[]={
+	        UTF16.getLeadSurrogate(0x2f999), UTF16.getTrailSurrogate(0x2f999),
+	        UTF16.getLeadSurrogate(0x1d15f), UTF16.getTrailSurrogate(0x1d15f),
+	        0xc4,
+	        0x1ed0
+	    };
+	    int expect[]={
+	        0x831d,
+	        0x1d158, 0x1d165,
+	        0x41, 0x308,
+	        0x4f, 0x302, 0x301
+	    };
+
+	    // expected src indexes corresponding to expect indexes
+	    int expectIndex[]={
+	        0,
+	        2, 2,
+	        4, 4,
+	        5, 5, 5,
+	        6 // behind last character
+	    };
+
+	    // initial indexes into the src and expect strings
+
+	    final int SRC_MIDDLE=4;
+	    final int EXPECT_MIDDLE=3;
+
+
+	    // movement vector
+	    // - for previous(), 0 for current(), + for next()
+	    // not const so that we can terminate it below for the error message
+	    String moves="0+0+0--0-0-+++0--+++++++0--------";
+
+	    // iterators
+	    Normalizer iter = new Normalizer(new String(src),
+                                                Normalizer.NFD);
+	    UCharIterator iter32 = new UCharIterator(expect, expect.length,
+                                                     EXPECT_MIDDLE);
+
+	    int c1, c2;
+	    char m;
+
+	    // initially set the indexes into the middle of the strings
+	    iter.setIndexOnly(SRC_MIDDLE);
+
+	    // move around and compare the iteration code points with
+	    // the expected ones
+	    int movesIndex =0;
+	    while(movesIndex<moves.length()) {
+            m=moves.charAt(movesIndex++);
+	        if(m=='-') {
+	            c1=iter.previous();
+	            c2=iter32.previous();
+	        } else if(m=='0') {
+	            c1=iter.current();
+	            c2=iter32.current();
+	        } else /* m=='+' */ {
+	            c1=iter.next();
+	            c2=iter32.next();
+	        }
+
+	        // compare results
+	        if(c1!=c2) {
+	            // copy the moves until the current (m) move, and terminate
+	            String history = moves.substring(0,movesIndex);
+	            errln("error: mismatch in Normalizer iteration at "+history+": "
+	                  +"got c1= " + hex(c1) +" != expected c2= "+ hex(c2));
+	            break;
+	        }
+
+	        // compare indexes
+	        if(iter.getIndex()!=expectIndex[iter32.getIndex()]) {
+	            // copy the moves until the current (m) move, and terminate
+	            String history = moves.substring(0,movesIndex);
+	            errln("error: index mismatch in Normalizer iteration at "
+                      +history+ " : "+ "Normalizer index " +iter.getIndex()
+                      +" expected "+ expectIndex[iter32.getIndex()]);
+	            break;
+	        }
+	    }
+	}
+    // Only in ICU4j
+    public void TestPreviousNextJCI() {
+        // src and expect strings
+        char src[]={
+            UTF16.getLeadSurrogate(0x2f999), UTF16.getTrailSurrogate(0x2f999),
+            UTF16.getLeadSurrogate(0x1d15f), UTF16.getTrailSurrogate(0x1d15f),
+            0xc4,
+            0x1ed0
+        };
+        int expect[]={
+            0x831d,
+            0x1d158, 0x1d165,
+            0x41, 0x308,
+            0x4f, 0x302, 0x301
+        };
+
+        // expected src indexes corresponding to expect indexes
+        int expectIndex[]={
+            0,
+            2, 2,
+            4, 4,
+            5, 5, 5,
+            6 // behind last character
+        };
+
+        // initial indexes into the src and expect strings
+
+        final int SRC_MIDDLE=4;
+        final int EXPECT_MIDDLE=3;
+
+
+        // movement vector
+        // - for previous(), 0 for current(), + for next()
+        // not const so that we can terminate it below for the error message
+        String moves="0+0+0--0-0-+++0--+++++++0--------";
+
+        // iterators
+        StringCharacterIterator text = new StringCharacterIterator(new String(src));
+        Normalizer iter = new Normalizer(text,Normalizer.NFD);
+        UCharIterator iter32 = new UCharIterator(expect, expect.length,
+                                                     EXPECT_MIDDLE);
+
+        int c1, c2;
+        char m;
+
+        // initially set the indexes into the middle of the strings
+        iter.setIndexOnly(SRC_MIDDLE);
+
+        // move around and compare the iteration code points with
+        // the expected ones
+        int movesIndex =0;
+        while(movesIndex<moves.length()) {
+            m=moves.charAt(movesIndex++);
+            if(m=='-') {
+                c1=iter.previous();
+                c2=iter32.previous();
+            } else if(m=='0') {
+                c1=iter.current();
+                c2=iter32.current();
+            } else /* m=='+' */ {
+                c1=iter.next();
+                c2=iter32.next();
+            }
+
+            // compare results
+            if(c1!=c2) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: mismatch in Normalizer iteration at "+history+": "
+                      +"got c1= " + hex(c1) +" != expected c2= "+ hex(c2));
+                break;
+            }
+
+            // compare indexes
+            if(iter.getIndex()!=expectIndex[iter32.getIndex()]) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: index mismatch in Normalizer iteration at "
+                      +history+ " : "+ "Normalizer index " +iter.getIndex()
+                      +" expected "+ expectIndex[iter32.getIndex()]);
+                break;
+            }
+        }
+    }
+    
+    public void TestDeprecatedAPI(){
+         // instantiate a Normalizer from a CharacterIterator
+        String s=Utility.unescape("a\u0308\uac00\\U0002f800");
+        // make s a bit longer and more interesting
+        java.text.CharacterIterator iter = new StringCharacterIterator(s+s);
+        //test deprecated constructors
+        Normalizer norm = new Normalizer(iter, Normalizer.NFC,0);
+        Normalizer norm2 = new Normalizer(s,Normalizer.NFC,0);
+        if(norm.next()!=0xe4) {
+            errln("error in Normalizer(CharacterIterator).next()");
+        }       
+        // test clone(), ==, and hashCode()
+        Normalizer clone=(Normalizer)norm.clone();
+        if(clone.getBeginIndex()!= norm.getBeginIndex()){
+           errln("error in Normalizer.getBeginIndex()");
+        }
+        
+        if(clone.getEndIndex()!= norm.getEndIndex()){
+           errln("error in Normalizer.getEndIndex()");
+        }
+        // test setOption() and getOption()
+        clone.setOption(0xaa0000, true);
+        clone.setOption(0x20000, false);
+        if(clone.getOption(0x880000) ==0|| clone.getOption(0x20000)==1) {
+           errln("error in Normalizer::setOption() or Normalizer::getOption()");
+        }
+        //test deprecated normalize method
+        Normalizer.normalize(s,Normalizer.NFC,0);
+        //test deprecated compose method
+        Normalizer.compose(s,false,0);
+        //test deprecated decompose method
+        Normalizer.decompose(s,false,0);
+
+    }
+
+	// test APIs that are not otherwise used - improve test coverage
+	public void TestNormalizerAPI() {
+	    // instantiate a Normalizer from a CharacterIterator
+	    String s=Utility.unescape("a\u0308\uac00\\U0002f800");
+	    // make s a bit longer and more interesting
+	    UCharacterIterator iter = UCharacterIterator.getInstance(s+s);
+	    Normalizer norm = new Normalizer(iter, Normalizer.NFC);
+	    if(norm.next()!=0xe4) {
+	        errln("error in Normalizer(CharacterIterator).next()");
+	    }
+
+
+	    // test clone(), ==, and hashCode()
+	    Normalizer clone=(Normalizer)norm.clone();
+	    if(clone.equals(norm)) {
+	        errln("error in Normalizer(Normalizer(CharacterIterator)).clone()!=norm");
+	    }
+
+        
+        if(clone.getLength()!= norm.getLength()){
+           errln("error in Normalizer.getBeginIndex()");
+        } 
+	    // clone must have the same hashCode()
+	    //if(clone.hashCode()!=norm.hashCode()) {
+	    //    errln("error in Normalizer(Normalizer(CharacterIterator)).clone().hashCode()!=copy.hashCode()");
+	    //}
+        if(clone.next()!=0xac00) {
+            errln("error in Normalizer(Normalizer(CharacterIterator)).next()");
+        }
+        int ch = clone.next();
+	    if(ch!=0x4e3d) {
+	        errln("error in Normalizer(Normalizer(CharacterIterator)).clone().next()");
+	    }
+	    // position changed, must change hashCode()
+	    if(clone.hashCode()==norm.hashCode()) {
+	        errln("error in Normalizer(Normalizer(CharacterIterator)).clone().next().hashCode()==copy.hashCode()");
+	    }
+
+	    // test compose() and decompose()
+	    StringBuffer tel;
+        String nfkc, nfkd;
+	    tel=new StringBuffer("\u2121\u2121\u2121\u2121\u2121\u2121\u2121\u2121\u2121\u2121");
+	    tel.insert(1,(char)0x0301);
+
+	    nfkc=Normalizer.compose(tel.toString(), true);
+	    nfkd=Normalizer.decompose(tel.toString(), true);
+	    if(
+	        !nfkc.equals(Utility.unescape("TE\u0139TELTELTELTELTELTELTELTELTEL"))||
+	        !nfkd.equals(Utility.unescape("TEL\u0301TELTELTELTELTELTELTELTELTEL"))
+	    ) {
+	        errln("error in Normalizer::(de)compose(): wrong result(s)");
+	    }
+
+	    // test setIndex()
+        ch=norm.setIndex(3);
+	    if(ch!=0x4e3d) {
+	        errln("error in Normalizer(CharacterIterator).setIndex(3)");
+	    }
+
+	    // test setText(CharacterIterator) and getText()
+	    String out, out2;
+	    clone.setText(iter);
+
+        out = clone.getText();
+        out2 = iter.getText();
+        if( !out.equals(out2) ||
+            clone.startIndex()!=0||
+            clone.endIndex()!=iter.getLength()
+        ) {
+            errln("error in Normalizer::setText() or Normalizer::getText()");
+        }
+ 
+        char[] fillIn1 = new char[clone.getLength()];
+        char[] fillIn2 = new char[iter.getLength()];
+        int len = clone.getText(fillIn1);
+        iter.getText(fillIn2,0);
+        if(!Utility.arrayRegionMatches(fillIn1,0,fillIn2,0,len)){
+            errln("error in Normalizer.getText(). Normalizer: "+
+                            Utility.hex(new String(fillIn1))+ 
+                            " Iter: " + Utility.hex(new String(fillIn2)));
+        }
+        
+        clone.setText(fillIn1);
+        len = clone.getText(fillIn2);
+        if(!Utility.arrayRegionMatches(fillIn1,0,fillIn2,0,len)){
+            errln("error in Normalizer.setText() or Normalizer.getText()"+
+                            Utility.hex(new String(fillIn1))+ 
+                            " Iter: " + Utility.hex(new String(fillIn2)));
+        }
+
+	    // test setText(UChar *), getUMode() and setMode()
+	    clone.setText(s);
+        clone.setIndexOnly(1);
+	    clone.setMode(Normalizer.NFD);
+	    if(clone.getMode()!=Normalizer.NFD) {
+	        errln("error in Normalizer::setMode() or Normalizer::getMode()");
+	    }
+	    if(clone.next()!=0x308 || clone.next()!=0x1100) {
+	        errln("error in Normalizer::setText() or Normalizer::setMode()");
+	    }
+
+	    // test last()/previous() with an internal buffer overflow
+	    StringBuffer buf = new StringBuffer("aaaaaaaaaa");
+        buf.setCharAt(10-1,'\u0308');
+        clone.setText(buf);
+	    if(clone.last()!=0x308) {
+	        errln("error in Normalizer(10*U+0308).last()");
+	    }
+
+	    // test UNORM_NONE
+	    norm.setMode(Normalizer.NONE);
+	    if(norm.first()!=0x61 || norm.next()!=0x308 || norm.last()!=0x2f800) {
+	        errln("error in Normalizer(UNORM_NONE).first()/next()/last()");
+	    }
+	    out=Normalizer.normalize(s, Normalizer.NONE);
+	    if(!out.equals(s)) {
+	        errln("error in Normalizer::normalize(UNORM_NONE)");
+	    }
+	}
+
+	public void TestConcatenate() {
+
+	    Object[][]cases=new Object[][]{
+	        /* mode, left, right, result */
+	        {
+	            Normalizer.NFC,
+	            "re",
+	            "\u0301sum\u00e9",
+	            "r\u00e9sum\u00e9"
+	        },
+	        {
+	            Normalizer.NFC,
+	            "a\u1100",
+	            "\u1161bcdefghijk",
+	            "a\uac00bcdefghijk"
+	        },
+	        /* ### TODO: add more interesting cases */
+	        {
+	            Normalizer.NFD,
+	            "\u0340\u0341\u0343\u0344\u0374\u037E\u0387\u0958" +
+	            "\u0959\u095A\u095B\u095C\u095D\u095E\u095F\u09DC" +
+	            "\u09DD\u09DF\u0A33\u0A36\u0A59\u0A5A\u0A5B\u0A5E" +
+	            "\u0B5C\u0B5D\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69" +
+	            "\u0F73\u0F75\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2" +
+	            "\u0FA7\u0FAC\u0FB9\u1F71\u1F73\u1F75\u1F77\u1F79" +
+	            "\u1F7B\u1F7D\u1FBB\u1FBE\u1FC9\u1FCB\u1FD3\u1FDB",
+
+	            "\u1FE3\u1FEB\u1FEE\u1FEF\u1FF9\u1FFB\u1FFD\u2000" +
+	            "\u2001\u2126\u212A\u212B\u2329\u232A\uF900\uFA10" +
+	            "\uFA12\uFA15\uFA20\uFA22\uFA25\uFA26\uFA2A\uFB1F" +
+	            "\uFB2A\uFB2B\uFB2C\uFB2D\uFB2E\uFB2F\uFB30\uFB31" +
+	            "\uFB32\uFB33\uFB34\uFB35\uFB36\uFB38\uFB39\uFB3A" +
+	            "\uFB3B\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46" +
+	            "\uFB47\uFB48\uFB49\uFB4A\uFB4B\uFB4C\uFB4D\uFB4E",
+
+	            "\u0340\u0341\u0343\u0344\u0374\u037E\u0387\u0958" +
+	            "\u0959\u095A\u095B\u095C\u095D\u095E\u095F\u09DC" +
+	            "\u09DD\u09DF\u0A33\u0A36\u0A59\u0A5A\u0A5B\u0A5E" +
+	            "\u0B5C\u0B5D\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69" +
+	            "\u0F73\u0F75\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2" +
+	            "\u0FA7\u0FAC\u0FB9\u1F71\u1F73\u1F75\u1F77\u1F79" +
+	            "\u1F7B\u1F7D\u1FBB\u1FBE\u1FC9\u1FCB\u1FD3\u0399" +
+	            "\u0301\u03C5\u0308\u0301\u1FEB\u1FEE\u1FEF\u1FF9" +
+	            "\u1FFB\u1FFD\u2000\u2001\u2126\u212A\u212B\u2329" +
+	            "\u232A\uF900\uFA10\uFA12\uFA15\uFA20\uFA22\uFA25" +
+	            "\uFA26\uFA2A\uFB1F\uFB2A\uFB2B\uFB2C\uFB2D\uFB2E" +
+	            "\uFB2F\uFB30\uFB31\uFB32\uFB33\uFB34\uFB35\uFB36" +
+	            "\uFB38\uFB39\uFB3A\uFB3B\uFB3C\uFB3E\uFB40\uFB41" +
+	            "\uFB43\uFB44\uFB46\uFB47\uFB48\uFB49\uFB4A\uFB4B" +
+	            "\uFB4C\uFB4D\uFB4E"
+	        }
+	    };
+
+	    String left, right, expect, result;
+	    Normalizer.Mode mode;
+	    int i;
+
+	    /* test concatenation */
+	    for(i=0; i<cases.length; ++i) {
+            mode = (Normalizer.Mode)cases[i][0];
+
+	        left=(String)cases[i][1];
+	        right=(String)cases[i][2];
+	        expect=(String)cases[i][3];
+		    {
+	            result=Normalizer.concatenate(left, right, mode);
+		        if( result.equals(expect)) {
+		            errln("error in Normalizer.concatenate(), cases[] failed"
+	                      +", result==expect: expected: "
+	                      + hex(expect)+" =========> got: " + hex(result));
+		        }
+            }
+            {
+                result=Normalizer.concatenate(left.toCharArray(), right.toCharArray(), mode);
+                if( result.equals(expect)) {
+                    errln("error in Normalizer.concatenate(), cases[] failed"
+                          +", result==expect: expected: "
+                          + hex(expect)+" =========> got: " + hex(result));
+                }
+            }
+	    }
+	}
+    private final int RAND_MAX = 0x7fff;
+
+    public void TestCheckFCD()
+	{
+	  char[] FAST = {0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+                     0x0008, 0x0009, 0x000A};
+
+	  char[] FALSE = {0x0001, 0x0002, 0x02EA, 0x03EB, 0x0300, 0x0301,
+	                  0x02B9, 0x0314, 0x0315, 0x0316};
+
+      char[] TRUE = {0x0030, 0x0040, 0x0440, 0x056D, 0x064F, 0x06E7,
+	                 0x0050, 0x0730, 0x09EE, 0x1E10};
+
+	  char[][] datastr= { {0x0061, 0x030A, 0x1E05, 0x0302, 0},
+	                      {0x0061, 0x030A, 0x00E2, 0x0323, 0},
+	                      {0x0061, 0x0323, 0x00E2, 0x0323, 0},
+	                      {0x0061, 0x0323, 0x1E05, 0x0302, 0}
+                        };
+	  Normalizer.QuickCheckResult result[] = {Normalizer.YES, Normalizer.NO, Normalizer.NO, Normalizer.YES};
+
+	  char[] datachar= {        0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
+	                            0x6a,
+	                            0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
+	                            0xea,
+	                            0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306,
+	                            0x0307, 0x0308, 0x0309, 0x030a,
+	                            0x0320, 0x0321, 0x0322, 0x0323, 0x0324, 0x0325, 0x0326,
+	                            0x0327, 0x0328, 0x0329, 0x032a,
+	                            0x1e00, 0x1e01, 0x1e02, 0x1e03, 0x1e04, 0x1e05, 0x1e06,
+	                            0x1e07, 0x1e08, 0x1e09, 0x1e0a
+                       };
+
+	  int count = 0;
+
+	  if (Normalizer.quickCheck(FAST,0,FAST.length, Normalizer.FCD) != Normalizer.YES)
+	    errln("NewNormalizer.quickCheck(FCD) failed: expected value for fast NewNormalizer.quickCheck is NewNormalizer.YES\n");
+	  if (Normalizer.quickCheck(FALSE,0, FALSE.length,Normalizer.FCD) != Normalizer.NO)
+	    errln("NewNormalizer.quickCheck(FCD) failed: expected value for error NewNormalizer.quickCheck is NewNormalizer.NO\n");
+	  if (Normalizer.quickCheck(TRUE,0,TRUE.length,Normalizer.FCD) != Normalizer.YES)
+	    errln("NewNormalizer.quickCheck(FCD) failed: expected value for correct NewNormalizer.quickCheck is NewNormalizer.YES\n");
+
+
+	  while (count < 4)
+	  {
+	    Normalizer.QuickCheckResult fcdresult = Normalizer.quickCheck(datastr[count],0,datastr[count].length, Normalizer.FCD);
+        if (result[count] != fcdresult) {
+	        errln("NewNormalizer.quickCheck(FCD) failed: Data set "+ count
+                    + " expected value "+ result[count]);
+	    }
+	    count ++;
+	  }
+
+	  /* random checks of long strings */
+	  //srand((unsigned)time( NULL ));
+      Random rand = new Random();
+
+
+	  for (count = 0; count < 50; count ++)
+	  {
+	    int size = 0;
+	    Normalizer.QuickCheckResult testresult = Normalizer.YES;
+	    char[] data= new char[20];
+	    char[] norm= new char[100];
+	    char[] nfd = new char[100];
+	    int normStart = 0;
+	    int nfdsize = 0;
+	    while (size != 19) {
+	      data[size] = datachar[rand.nextInt(RAND_MAX)*50/RAND_MAX];
+	      logln("0x"+data[size]);
+	      normStart = Normalizer.normalize(data,size,size+1,
+                                              norm,normStart,100,
+                                              Normalizer.NFD);
+	      size ++;
+	    }
+	    logln("\n");
+
+	    nfdsize = Normalizer.normalize(data,0,size, nfd,0,nfd.length,Normalizer.NFD);
+        //    nfdsize = unorm_normalize(data, size, UNORM_NFD, UCOL_IGNORE_HANGUL,
+        //                      nfd, 100, &status);
+        if (nfdsize != normStart || Utility.arrayRegionMatches(nfd,0, norm,0,nfdsize) ==false) {
+	      testresult = Normalizer.NO;
+	    }
+	    if (testresult == Normalizer.YES) {
+	      logln("result NewNormalizer.YES\n");
+	    }
+	    else {
+	      logln("result NewNormalizer.NO\n");
+	    }
+
+	    if (Normalizer.quickCheck(data,0,data.length, Normalizer.FCD) != testresult) {
+	      errln("NewNormalizer.quickCheck(FCD) failed: expected "+ testresult+" for random data\n" );
+	    }
+	  }
+	}
+
+
+	// reference implementation of Normalizer::compare
+	private int ref_norm_compare(String s1, String s2, int options) {
+	    String t1, t2,r1,r2;
+
+        r1=s1;
+        r2=s2;
+
+	    if((options&Normalizer.COMPARE_IGNORE_CASE)!=0) {
+	        r1 = UCharacter.foldCase(s1,((options&Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I)==0));
+	        r2 = UCharacter.foldCase(s2,((options&Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I)==0));
+	    }
+
+         t1 = Normalizer.decompose(r1, false);
+         t2 = Normalizer.decompose(r2, false);
+
+	    if((options&Normalizer.COMPARE_CODE_POINT_ORDER)!=0) {
+            UTF16.StringComparator comp = new UTF16.StringComparator();
+	        return comp.compare(t1,t2);
+	    } else {
+	        return t1.compareTo(t2);
+	    }
+
+	}
+
+	// test wrapper for Normalizer::compare, sets UNORM_INPUT_IS_FCD appropriately
+	private int norm_compare(String s1, String s2, int options) {
+	    if( Normalizer.YES==Normalizer.quickCheck(s1,Normalizer.FCD) &&
+	        Normalizer.YES==Normalizer.quickCheck(s2,Normalizer.FCD)) {
+	        options|=Normalizer.INPUT_IS_FCD;
+	    }
+
+	    return Normalizer.compare(s1, s2, options);
+	}
+
+	// reference implementation of UnicodeString::caseCompare
+	private int ref_case_compare(String s1, String s2, int options) {
+	    String t1, t2;
+
+	    t1=s1;
+	    t2=s2;
+
+	    t1 = UCharacter.foldCase(t1,((options&Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I)==0));
+	    t2 = UCharacter.foldCase(t2,((options&Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I)==0));
+
+        if((options&Normalizer.COMPARE_CODE_POINT_ORDER)!=0) {
+            UTF16.StringComparator comp = new UTF16.StringComparator();
+            return comp.compare(t1,t2);
+        } else {
+            return t1.compareTo(t2);
+        }
+
+	}
+
+	// reduce an integer to -1/0/1
+	private static int sign(int value) {
+	    if(value==0) {
+	        return 0;
+	    } else {
+	        return (value>>31)|1;
+	    }
+	}
+            // test Normalizer::compare and unorm_compare (thinly wrapped by the former)
+        // by comparing it with its semantic equivalent
+        // since we trust the pieces, this is sufficient
+
+        // test each string with itself and each other
+        // each time with all options
+     private  String strings[]=new String[]{
+            // some cases from NormalizationTest.txt
+            // 0..3
+            "D\u031B\u0307\u0323",
+            "\u1E0C\u031B\u0307",
+            "D\u031B\u0323\u0307",
+            "d\u031B\u0323\u0307",
+
+            // 4..6
+            "\u00E4",
+            "a\u0308",
+            "A\u0308",
+
+            // Angstrom sign = A ring
+            // 7..10
+            "\u212B",
+            "\u00C5",
+            "A\u030A",
+            "a\u030A",
+
+            // 11.14
+            "a\u059A\u0316\u302A\u032Fb",
+            "a\u302A\u0316\u032F\u059Ab",
+            "a\u302A\u0316\u032F\u059Ab",
+            "A\u059A\u0316\u302A\u032Fb",
+
+            // from ICU case folding tests
+            // 15..20
+            "A\u00df\u00b5\ufb03\\U0001040c\u0131",
+            "ass\u03bcffi\\U00010434i",
+            "\u0061\u0042\u0131\u03a3\u00df\ufb03\ud93f\udfff",
+            "\u0041\u0062\u0069\u03c3\u0073\u0053\u0046\u0066\u0049\ud93f\udfff",
+            "\u0041\u0062\u0131\u03c3\u0053\u0073\u0066\u0046\u0069\ud93f\udfff",
+            "\u0041\u0062\u0069\u03c3\u0073\u0053\u0046\u0066\u0049\ud93f\udffd",
+
+            //     U+d800 U+10001   see implementation comment in unorm_cmpEquivFold
+            // vs. U+10000          at bottom - code point order
+            // 21..22
+            "\ud800\ud800\udc01",
+            "\ud800\udc00",
+
+            // other code point order tests from ustrtest.cpp
+            // 23..31
+            "\u20ac\ud801",
+            "\u20ac\ud800\udc00",
+            "\ud800",
+            "\ud800\uff61",
+            "\udfff",
+            "\uff61\udfff",
+            "\uff61\ud800\udc02",
+            "\ud800\udc02",
+            "\ud84d\udc56",
+
+            // long strings, see cnormtst.c/TestNormCoverage()
+            // equivalent if case-insensitive
+            // 32..33
+            "\uAD8B\uAD8B\uAD8B\uAD8B"+
+            "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "aaaaaaaaaaaaaaaaaazzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
+            "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"+
+            "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"+
+            "ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"+
+            "\uAD8B\uAD8B\uAD8B\uAD8B"+
+            "d\u031B\u0307\u0323",
+
+            "\u1100\u116f\u11aa\uAD8B\uAD8B\u1100\u116f\u11aa"+
+            "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "aaaaaaaaaaAAAAAAAAZZZZZZZZZZZZZZZZzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
+            "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"+
+            "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"+
+            "ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"+
+            "\u1100\u116f\u11aa\uAD8B\uAD8B\u1100\u116f\u11aa"+
+            "\u1E0C\u031B\u0307",
+            "\u00dater\u00fd",
+            "\u00fater\u00fd",
+	        // some strings that may make a difference whether the compare function
+	        // case-folds or decomposes first
+	        // 34..41
+	        "\u0360\u0345\u0334",
+	        "\u0360\u03b9\u0334",
+
+	        "\u0360\u1f80\u0334",
+	        "\u0360\u03b1\u0313\u03b9\u0334",
+
+	        "\u0360\u1ffc\u0334",
+	        "\u0360\u03c9\u03b9\u0334",
+
+	        "\u00cc",
+	        "\u0069\u0300",
+            "a\u0360\u0345\u0360\u0345b",
+            "a\u0345\u0360\u0345\u0360b",
+
+    };
+
+	// all combinations of options
+	// UNORM_INPUT_IS_FCD is set automatically if both input strings fulfill FCD conditions
+	final class Temp {
+		int options;
+		String name;
+		public Temp(int opt,String str){
+			options =opt;
+			name = str;
+		}
+
+	}
+
+    public void TestCompareDebug(){
+
+        String[] s = new String[100]; // at least as many items as in strings[] !
+
+
+
+        Temp[] opt = new Temp[]{
+                                new Temp(0,"default"),
+                                new Temp(Normalizer.COMPARE_CODE_POINT_ORDER, "code point order" ),
+                                new Temp(Normalizer.COMPARE_IGNORE_CASE, "ignore case" ),
+                                new Temp(Normalizer.COMPARE_CODE_POINT_ORDER|Normalizer.COMPARE_IGNORE_CASE, "code point order & ignore case" ),
+                                new Temp(Normalizer.COMPARE_IGNORE_CASE|Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I, "ignore case & special i"),
+                                new Temp(Normalizer.COMPARE_CODE_POINT_ORDER|Normalizer.COMPARE_IGNORE_CASE|Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I, "code point order & ignore case & special i")
+                        };
+
+
+
+        int i, j, k, count=strings.length;
+        int result, refResult;
+
+        // create the UnicodeStrings
+        for(i=0; i<count; ++i) {
+            s[i]=Utility.unescape(strings[i]);
+        }
+        StringComparator comp = new StringComparator();
+        // test them each with each other
+
+        i = 15;
+        j = 16;
+        k = 4;
+        // test Normalizer::compare
+        result=norm_compare(s[i], s[j], opt[k].options);
+        refResult=ref_norm_compare(s[i], s[j], opt[k].options);
+        if(sign(result)!=sign(refResult)) {
+            errln("Normalizer::compare( " + i +", "+j + ", " +k+"( " +opt[k].name+"))=" + result +" should be same sign as " + refResult);
+        }
+
+        // test UnicodeString::caseCompare - same internal implementation function
+         if(0!=(opt[k].options&Normalizer.COMPARE_IGNORE_CASE)) {
+        //    result=s[i]. (s[j], opt[k].options);
+            result=comp.caseCompare(s[i],s[j], opt[k].options);
+            refResult=ref_case_compare(s[i], s[j], opt[k].options);
+            if(sign(result)!=sign(refResult)) {
+                      errln("Normalizer::compare( " + i +", "+j + ", "+k+"( " +opt[k].name+"))=" + result +" should be same sign as " + refResult);
+                            }
+        }
+        String value1 = "\u00dater\u00fd";
+        String value2 = "\u00fater\u00fd";
+        if(Normalizer.compare(value1,value2,0)!=0){
+            if(Normalizer.compare(value1,value2,Normalizer.COMPARE_IGNORE_CASE)==0){
+
+            }
+        }
+    }
+
+
+    /**
+    * Compare strings using Unicode code point order, instead of UTF-16 code
+    * unit order.
+    */
+    public static final class StringComparator implements java.util.Comparator
+    {
+        /**
+        * Standard String compare. Only one small section is different, marked in
+        * the code.
+        */
+        public int compare(Object a, Object b)
+        {
+            if (a == b) {
+                return 0;
+            }
+            if (a == null) {
+                return -1;
+            }
+            if (b == null) {
+                return 1;
+            }
+
+            String sa = (String) a;
+            String sb = (String) b;
+            int lena = sa.length();
+            int lenb = sb.length();
+            int len = lena;
+            if (len > lenb) {
+                len = lenb;
+            }
+
+            for (int i = 0; i < len; ++i)
+            {
+                char ca = sa.charAt(i);
+                char cb = sb.charAt(i);
+                if (ca == cb) {
+                    continue; // skip remap if equal
+                }
+
+                // start of only different section
+                // if either code unit is below 0xd800, i.e., below the
+                // surrogate range, then nothing needs to be done
+
+                // if both are >=0xd800 then special code adjusts code unit
+                // values so that all BMP code points (including single
+                // surrogate code points) sort below supplementary ones
+
+                // this is necessary because surrogates are not at the end of
+                // the code unit range
+                if (ca >= UTF16.LEAD_SURROGATE_MIN_VALUE
+                    && cb >= UTF16.LEAD_SURROGATE_MIN_VALUE) {
+                    // subtract 0x2800 from BMP code points to make them
+                    // smaller than supplementary ones
+                    if ((ca <= UTF16.LEAD_SURROGATE_MAX_VALUE && (i + 1) < lena
+                        && UTF16.isTrailSurrogate(sa.charAt(i + 1)))
+                        || (UTF16.isTrailSurrogate(ca) && i > 0
+                            && UTF16.isLeadSurrogate(sa.charAt(i - 1)))) {
+                        // part of a surrogate pair, leave >=d800
+                    }
+                    else {
+                        // BMP code point - may be surrogate code point - make
+                        // <d800
+                        ca -= 0x2800;
+                    }
+
+                    if ((cb <= UTF16.LEAD_SURROGATE_MAX_VALUE && (i + 1) < lenb
+                        && UTF16.isTrailSurrogate(sb.charAt(i + 1)))
+                        || (UTF16.isTrailSurrogate(cb) && i > 0
+                            && UTF16.isLeadSurrogate(sb.charAt(i - 1)))) {
+                        // part of a surrogate pair, leave >=d800
+                    }
+                    else {
+                        // BMP code point - may be surrogate code point - make
+                        // < d800
+                        cb -= 0x2800;
+                    }
+                }
+
+                // end of only different section
+
+                if (ca < cb) {
+                    return -1;
+                }
+
+                return 1; // wasn't equal, so return 1
+            }
+
+            if (lena < lenb) {
+                return -1;
+            }
+
+            if (lena > lenb) {
+                return 1;
+            }
+
+            return 0;
+        }
+
+        public int caseCompare(Object a, Object b, int options){
+            if (a == b) {
+                return 0;
+            }
+            if (a == null) {
+                return -1;
+            }
+            if (b == null) {
+                return 1;
+            }
+            String sa = (String) a;
+            String sb = (String) b;
+            int la = sa.length();
+            int lb = sb.length();
+            if( sa != sb ){
+                int result = NormalizerImpl.cmpEquivFold(sa,sb,
+                                         options|Normalizer.COMPARE_IGNORE_CASE);
+                if(result!=0) {
+                  return (int)((byte)(result >> 24 | 1));
+                }
+
+            }else{
+                if(la != lb){
+                    return (int)((byte)((la-lb) >> 24 | 1));
+                }
+            }
+            return 0;
+        }
+    }
+
+	public void TestCompare() {
+
+	    String[] s = new String[100]; // at least as many items as in strings[] !
+
+
+        Temp[] opt = new Temp[]{
+                                new Temp(0,"default"),
+                                new Temp(Normalizer.COMPARE_CODE_POINT_ORDER, "code point order" ),
+                                new Temp(Normalizer.COMPARE_IGNORE_CASE, "ignore case" ),
+                                new Temp(Normalizer.COMPARE_CODE_POINT_ORDER|Normalizer.COMPARE_IGNORE_CASE, "code point order & ignore case" ),
+                                new Temp(Normalizer.COMPARE_IGNORE_CASE|Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I, "ignore case & special i"),
+                                new Temp(Normalizer.COMPARE_CODE_POINT_ORDER|Normalizer.COMPARE_IGNORE_CASE|Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I, "code point order & ignore case & special i")
+                        };
+
+
+
+	    int i, j, k, count=strings.length;
+	    int result, refResult;
+
+	    // create the UnicodeStrings
+	    for(i=0; i<count; ++i) {
+	        s[i]=Utility.unescape(strings[i]);
+	    }
+	    StringComparator comp = new StringComparator();
+	    // test them each with each other
+	    for(i=0; i<count; ++i) {
+	        for(j=i; j<count; ++j) {
+	            for(k=0; k<opt.length; ++k) {
+	                // test Normalizer::compare
+	                result=norm_compare(s[i], s[j], opt[k].options);
+	                refResult=ref_norm_compare(s[i], s[j], opt[k].options);
+	                if(sign(result)!=sign(refResult)) {
+	                    errln("Normalizer::compare( " + i +", "+j + ", " +k+"( " +opt[k].name+"))=" + result +" should be same sign as " + refResult);
+	                }
+
+	                // test UnicodeString::caseCompare - same internal implementation function
+	                 if(0!=(opt[k].options&Normalizer.COMPARE_IGNORE_CASE)) {
+	                //    result=s[i]. (s[j], opt[k].options);
+                        result=comp.caseCompare(s[i],s[j], opt[k].options);
+	                    refResult=ref_case_compare(s[i], s[j], opt[k].options);
+	                    if(sign(result)!=sign(refResult)) {
+	                              errln("Normalizer::compare( " + i +", "+j + ", "+k+"( " +opt[k].name+"))=" + result +" should be same sign as " + refResult);
+                 	                    }
+	                }
+	            }
+	        }
+	    }
+	}
+
+    // verify that case-folding does not un-FCD strings
+	int countFoldFCDExceptions(int foldingOptions) {
+	    String s, d;
+	    int c;
+	    int count;
+	    int/*unsigned*/ cc, trailCC, foldCC, foldTrailCC;
+	    Normalizer.QuickCheckResult qcResult;
+	    int category;
+	    boolean isNFD;
+
+
+	    logln("Test if case folding may un-FCD a string (folding options 0x)"+hex(foldingOptions));
+
+	    count=0;
+	    for(c=0; c<=0x10ffff; ++c) {
+	        category=UCharacter.getType(c);
+	        if(category==UCharacterCategory.UNASSIGNED) {
+	            continue; // skip unassigned code points
+	        }
+	        if(c==0xac00) {
+	            c=0xd7a3; // skip Hangul - no case folding there
+	            continue;
+	        }
+	        // skip Han blocks - no case folding there either
+	        if(c==0x3400) {
+	            c=0x4db5;
+	            continue;
+	        }
+	        if(c==0x4e00) {
+	            c=0x9fa5;
+	            continue;
+	        }
+	        if(c==0x20000) {
+	            c=0x2a6d6;
+	            continue;
+	        }
+
+	        s= UTF16.valueOf(c);
+
+	        // get leading and trailing cc for c
+	        d= Normalizer.decompose(s,false);
+	        isNFD= s==d;
+	        cc=UCharacter.getCombiningClass(UTF16.charAt(d,0));
+	        trailCC=UCharacter.getCombiningClass(UTF16.charAt(d,d.length()-1));
+
+	        // get leading and trailing cc for the case-folding of c
+	        UCharacter.foldCase(s,(foldingOptions==0));
+	        d = Normalizer.decompose(s, false);
+	        foldCC=UCharacter.getCombiningClass(UTF16.charAt(d,0));
+	        foldTrailCC=UCharacter.getCombiningClass(UTF16.charAt(d,d.length()-1));
+
+	        qcResult=Normalizer.quickCheck(s, Normalizer.FCD);
+
+
+	        // bad:
+	        // - character maps to empty string: adjacent characters may then need reordering
+	        // - folding has different leading/trailing cc's, and they don't become just 0
+	        // - folding itself is not FCD
+	        if( qcResult!=Normalizer.YES ||
+	            s.length()==0 ||
+	            (cc!=foldCC && foldCC!=0) || (trailCC!=foldTrailCC && foldTrailCC!=0)
+	        ) {
+	            ++count;
+	            errln("U+"+hex(c)+": case-folding may un-FCD a string (folding options 0x"+hex(foldingOptions)+")");
+	            //errln("  cc %02x trailCC %02x    foldCC(U+%04lx) %02x foldTrailCC(U+%04lx) %02x   quickCheck(folded)=%d", cc, trailCC, UTF16.charAt(d,0), foldCC, UTF16.charAt(d,d.length()-1), foldTrailCC, qcResult);
+	            continue;
+	        }
+
+	        // also bad:
+	        // if a code point is in NFD but its case folding is not, then
+	        // unorm_compare will also fail
+	        if(isNFD && Normalizer.YES!=Normalizer.quickCheck(s, Normalizer.NFD)) {
+	            ++count;
+	            errln("U+"+hex(c)+": case-folding may un-FCD a string (folding options 0x"+hex(foldingOptions)+")");
+	        }
+	    }
+
+	    logln("There are "+hex(count)+" code points for which case-folding may un-FCD a string (folding options"+foldingOptions+"x)" );
+	    return count;
+	}
+
+    public void TestFindFoldFCDExceptions() {
+	    int count;
+
+	    count=countFoldFCDExceptions(0);
+	    count+=countFoldFCDExceptions(Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I);
+	    if(count>0) {
+	        /*
+	         * If case-folding un-FCDs any strings, then unorm_compare() must be
+	         * re-implemented.
+	         * It currently assumes that one can check for FCD then case-fold
+	         * and then still have FCD strings for raw decomposition without reordering.
+	         */
+	        errln("error: There are "+count+" code points for which case-folding"+
+	              " may un-FCD a string for all folding options.\n See comment"+
+                  " in BasicNormalizerTest::FindFoldFCDExceptions()!");
+	    }
+	}
+    
+    public void TestCombiningMarks(){
+        String src = "\u0f71\u0f72\u0f73\u0f74\u0f75";
+        String expected = "\u0F71\u0F71\u0F71\u0F72\u0F72\u0F74\u0F74";
+        String result = Normalizer.decompose(src,false);
+        if(!expected.equals(result)){
+            errln("Reordering of combining marks failed. Expected: "+Utility.hex(expected)+" Got: "+ Utility.hex(result));
+        }
+    }
+
+    /*
+     * Re-enable this test when UTC fixes UAX 21
+    public void TestUAX21Failure(){
+        final String[][] cases = new String[][]{
+		        {"\u0061\u0345\u0360\u0345\u0062", "\u0061\u0360\u0345\u0345\u0062"},
+				{"\u0061\u0345\u0345\u0360\u0062", "\u0061\u0360\u0345\u0345\u0062"},
+				{"\u0061\u0345\u0360\u0362\u0360\u0062", "\u0061\u0362\u0360\u0360\u0345\u0062"},
+				{"\u0061\u0360\u0345\u0360\u0362\u0062", "\u0061\u0362\u0360\u0360\u0345\u0062"},
+				{"\u0061\u0345\u0360\u0362\u0361\u0062", "\u0061\u0362\u0360\u0361\u0345\u0062"},
+				{"\u0061\u0361\u0345\u0360\u0362\u0062", "\u0061\u0362\u0361\u0360\u0345\u0062"},
+        };
+        for(int i = 0; i< cases.length; i++){
+	        String s1 =cases[0][0]; 
+	        String s2 = cases[0][1];
+	        if( (Normalizer.compare(s1,s2,Normalizer.FOLD_CASE_DEFAULT ==0)//case sensitive compare
+                &&
+                (Normalizer.compare(s1,s2,Normalizer.COMPARE_IGNORE_CASE)!=0)){
+	            errln("Normalizer.compare() failed for s1: " 
+	                    + Utility.hex(s1) +" s2: " + Utility.hex(s2));
+	        }
+        }
+    }
+    */
+
+    public void TestBugJ2324() { 
+        /* String[] input = new String[] { 
+                          //"\u30FD\u3099", 
+                            "\u30FA\u309A", 
+                            "\u30FB\u309A", 
+                            "\u30FC\u309A", 
+                            "\u30FE\u309A", 
+                            "\u30FD\u309A", 
+    
+        }; */ 
+        String troublesome = "\u309A"; 
+        for (int i=0x3000; i<0x3100;i++) { 
+            String input = ((char)i)+troublesome; 
+            try {                             
+                String result = Normalizer.compose(input,false); 
+            } catch(IndexOutOfBoundsException e) { 
+                errln("compose() failed for input: " + Utility.hex(input) 
+                      + " Exception: " + e.toString()); 
+            } 
+        }                 
+    } 
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/ConformanceTest.java b/src/com/ibm/icu/dev/test/normalizer/ConformanceTest.java
new file mode 100755
index 0000000..2f42f6a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/ConformanceTest.java
@@ -0,0 +1,468 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/normalizer/ConformanceTest.java,v $ 
+ * $Date: 2002/07/25 21:22:54 $ 
+ * $Revision: 1.10 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.dev.test.normalizer;
+
+import com.ibm.icu.dev.test.TestUtil;
+import java.io.*;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.Utility;
+
+public class ConformanceTest extends TestFmwk {
+
+    Normalizer normalizer;
+
+    public static void main(String[] args) throws Exception {
+        new ConformanceTest().run(args);
+    }
+    
+    public ConformanceTest() {
+        // Doesn't matter what the string and mode are; we'll change
+        // them later as needed.
+        normalizer = new Normalizer("", Normalizer.NFC);
+    }
+    // more interesting conformance test cases, not in the unicode.org NormalizationTest.txt
+	static  String[] moreCases ={
+	    // Markus 2001aug30
+	    "0061 0332 0308;00E4 0332;0061 0332 0308;00E4 0332;0061 0332 0308; # Markus 0",
+	
+	    // Markus 2001oct26 - test edge case for iteration: U+0f73.cc==0 but decomposition.lead.cc==129
+	    "0061 0301 0F73;00E1 0F71 0F72;0061 0F71 0F72 0301;00E1 0F71 0F72;0061 0F71 0F72 0301; # Markus 1"
+	};
+
+    /**
+     * Test the conformance of NewNormalizer to
+     * http://www.unicode.org/unicode/reports/tr15/conformance/Draft-TestSuite.txt.
+     * This file must be located at the path specified as TEST_SUITE_FILE.
+     */
+    public void TestConformance() throws Exception{
+        BufferedReader input = null;
+        String line = null;
+        String[] fields = new String[5];
+        StringBuffer buf = new StringBuffer();
+        int passCount = 0;
+        int failCount = 0;
+        UnicodeSet other = new UnicodeSet(0, 0x10ffff);
+        int c=0;
+        try {
+            input = TestUtil.getDataReader("unicode/NormalizationTest.txt");
+            for (int count = 0;;++count) {
+                line = input.readLine();
+                if (line == null) {
+                    //read the extra test cases
+	                if(count > moreCases.length) {
+		                count = 0;
+		            } else if(count == moreCases.length) {
+		                // all done
+		                break;
+		            }
+                    line = moreCases[count++];
+                }
+                if (line.length() == 0) continue;
+
+                // Expect 5 columns of this format:
+                // 1E0C;1E0C;0044 0323;1E0C;0044 0323; # <comments>
+
+                // Skip comments
+                if (line.charAt(0) == '#'  || line.charAt(0)=='@') continue;
+
+                // Parse out the fields
+                hexsplit(line, ';', fields, buf);
+                
+                // Remove a single code point from the "other" UnicodeSet
+		        if(fields[0].length()==UTF16.moveCodePointOffset(fields[0],0, 1)) {
+		            c=UTF16.charAt(fields[0],0); 
+		            if(0xac20<=c && c<=0xd73f) {
+		                // not an exhaustive test run: skip most Hangul syllables
+		                if(c==0xac20) {
+		                    other.remove(0xac20, 0xd73f);
+		                }
+		                continue;
+		            }
+		            other.remove(c);
+		        }
+                if (checkConformance(fields, line)) {
+                    ++passCount;
+                } else {
+                    ++failCount;
+                }
+                if ((count % 1000) == 999) {
+                    logln("Line " + (count+1));
+                }
+            }
+        } catch (IOException ex) {
+            try {
+                input.close();
+            } catch (Exception ex2) {
+                System.out.print("");
+            }
+            ex.printStackTrace();
+            throw new IllegalArgumentException("Couldn't read file "
+              + ex.getClass().getName() + " " + ex.getMessage()
+              + " line = " + line
+              );
+        }
+
+        if (failCount != 0) {
+            errln("Total: " + failCount + " lines failed, " +
+                  passCount + " lines passed");
+        } else {
+            logln("Total: " + passCount + " lines passed");
+        }
+    }
+    
+    /**
+     * Verify the conformance of the given line of the Unicode
+     * normalization (UTR 15) test suite file.  For each line,
+     * there are five columns, corresponding to field[0]..field[4].
+     *
+     * The following invariants must be true for all conformant implementations
+     *  c2 == NFC(c1) == NFC(c2) == NFC(c3)
+     *  c3 == NFD(c1) == NFD(c2) == NFD(c3)
+     *  c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
+     *  c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
+     *
+     * @param field the 5 columns
+     * @param line the source line from the test suite file
+     * @return true if the test passes
+     */
+    private boolean checkConformance(String[] field, String line) throws Exception{
+        boolean pass = true;
+        StringBuffer buf = new StringBuffer(); // scratch
+        String out,fcd;
+        int i=0;
+        for (i=0; i<5; ++i) {
+            if (i<3) {
+                out = Normalizer.normalize(field[i], Normalizer.NFC);
+                pass &= assertEqual("C", field[i], out, field[1], "c2!=C(c" + (i+1));
+                
+                out = iterativeNorm(field[i], Normalizer.NFC, buf, +1);
+                pass &= assertEqual("C(+1)", field[i], out, field[1], "c2!=C(c" + (i+1));
+                
+                out = iterativeNorm(field[i], Normalizer.NFC, buf, -1);
+                pass &= assertEqual("C(-1)", field[i], out, field[1], "c2!=C(c" + (i+1));
+
+                out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFC, buf, +1);
+                pass &= assertEqual("C(+1)", field[i], out, field[1], "c2!=C(c" + (i+1));
+                
+                out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFC, buf, -1);
+                pass &= assertEqual("C(-1)", field[i], out, field[1], "c2!=C(c" + (i+1));
+                 
+                out = Normalizer.normalize(field[i], Normalizer.NFD);
+                pass &= assertEqual("D", field[i], out, field[2], "c3!=D(c" + (i+1));
+                
+                out = iterativeNorm(field[i], Normalizer.NFD, buf, +1);
+                pass &= assertEqual("D(+1)", field[i], out, field[2], "c3!=D(c" + (i+1));
+                
+                out = iterativeNorm(field[i], Normalizer.NFD, buf, -1);
+                pass &= assertEqual("D(-1)", field[i], out, field[2], "c3!=D(c" + (i+1));
+
+                out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFD, buf, +1);
+                pass &= assertEqual("D(+1)", field[i], out, field[2], "c3!=D(c" + (i+1));
+                
+                out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFD, buf, -1);
+                pass &= assertEqual("D(-1)", field[i], out, field[2], "c3!=D(c" + (i+1));
+            }
+            out = Normalizer.normalize(field[i], Normalizer.NFKC);
+            pass &= assertEqual("KC", field[i], out, field[3], "c4!=KC(c" + (i+1));
+            
+            out = iterativeNorm(field[i], Normalizer.NFKC, buf, +1);
+            pass &= assertEqual("KD(+1)", field[i], out, field[3], "c4!=KC(c" + (i+1));
+            
+            out = iterativeNorm(field[i], Normalizer.NFKC, buf, -1);
+            pass &= assertEqual("KD(-1)", field[i], out, field[3], "c4!=KC(c" + (i+1));
+
+            out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFKC, buf, +1);
+            pass &= assertEqual("KD(+1)", field[i], out, field[3], "c4!=KC(c" + (i+1));
+            
+            out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFKC, buf, -1);
+            pass &= assertEqual("KD(-1)", field[i], out, field[3], "c4!=KC(c" + (i+1));
+              
+
+            out = Normalizer.normalize(field[i], Normalizer.NFKD);
+            pass &= assertEqual("KD", field[i], out, field[4], "c5!=KD(c" + (i+1));
+            
+            out = iterativeNorm(field[i], Normalizer.NFKD, buf, +1);
+            pass &= assertEqual("KD(+1)", field[i], out, field[4], "c5!=KD(c" + (i+1));
+            
+            out = iterativeNorm(field[i], Normalizer.NFKD, buf, -1);
+            pass &= assertEqual("KD(-1)", field[i], out, field[4], "c5!=KD(c" + (i+1));
+         
+            out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFKD, buf, +1);
+            pass &= assertEqual("KD(+1)", field[i], out, field[4], "c5!=KD(c" + (i+1));
+            
+            out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFKD, buf, -1);
+            pass &= assertEqual("KD(-1)", field[i], out, field[4], "c5!=KD(c" + (i+1));
+              
+        }
+        compare(field[1],field[2]);
+        compare(field[0],field[1]);
+         // test quick checks
+	    if(Normalizer.NO == Normalizer.quickCheck(field[1], Normalizer.NFC)) {
+	        errln("Normalizer error: quickCheck(NFC(s), NewNormalizer.NFC) is NewNormalizer.NO");
+	        pass = false;
+	    }
+	    if(Normalizer.NO == Normalizer.quickCheck(field[2], Normalizer.NFD)) {
+	        errln("Normalizer error: quickCheck(NFD(s), NewNormalizer.NFD) is NewNormalizer.NO");
+	        pass = false;
+	    }
+	    if(Normalizer.NO == Normalizer.quickCheck(field[3], Normalizer.NFKC)) {
+	        errln("Normalizer error: quickCheck(NFKC(s), NewNormalizer.NFKC) is NewNormalizer.NO");
+	        pass = false;
+	    }
+	    if(Normalizer.NO == Normalizer.quickCheck(field[4], Normalizer.NFKD)) {
+	        errln("Normalizer error: quickCheck(NFKD(s), NewNormalizer.NFKD) is NewNormalizer.NO");
+	        pass = false;
+	    }
+	
+        if(!Normalizer.isNormalized(field[1], Normalizer.NFC)) {
+            errln("Normalizer error: isNormalized(NFC(s), NewNormalizer.NFC) is false");
+            pass = false;
+        }
+        if(!field[0].equals(field[1]) && Normalizer.isNormalized(field[0], Normalizer.NFC)) {
+            errln("Normalizer error: isNormalized(s, NewNormalizer.NFC) is TRUE");
+            pass = false;
+        }
+        if(!Normalizer.isNormalized(field[3], Normalizer.NFKC)) {
+            errln("Normalizer error: isNormalized(NFKC(s), NewNormalizer.NFKC) is false");
+            pass = false;
+        }
+        if(!field[0].equals(field[3]) && Normalizer.isNormalized(field[0], Normalizer.NFKC)) {
+            errln("Normalizer error: isNormalized(s, NewNormalizer.NFKC) is TRUE");
+            pass = false;
+        }
+	    // test api that takes a char[]
+        if(!Normalizer.isNormalized(field[1].toCharArray(),0,field[1].length(), Normalizer.NFC)) {
+            errln("Normalizer error: isNormalized(NFC(s), NewNormalizer.NFC) is false");
+            pass = false;
+        }
+        // test api that takes a codepoint
+        if(!Normalizer.isNormalized(UTF16.charAt(field[1],0), Normalizer.NFC)) {
+            errln("Normalizer error: isNormalized(NFC(s), NewNormalizer.NFC) is false");
+            pass = false;
+        }
+	    // test FCD quick check and "makeFCD"
+        fcd=Normalizer.normalize(field[0], Normalizer.FCD);
+	    if(Normalizer.NO == Normalizer.quickCheck(fcd, Normalizer.FCD)) {
+	        errln("Normalizer error: quickCheck(FCD(s), NewNormalizer.FCD) is NewNormalizer.NO");
+	        pass = false;
+	    }
+        if(Normalizer.NO == Normalizer.quickCheck(fcd, Normalizer.FCD)) {
+            errln("Normalizer error: quickCheck(FCD(s), NewNormalizer.FCD) is NewNormalizer.NO");
+            pass = false;
+        }
+	    if(Normalizer.NO == Normalizer.quickCheck(field[2], Normalizer.FCD)) {
+	        errln("Normalizer error: quickCheck(NFD(s), NewNormalizer.FCD) is NewNormalizer.NO");
+	        pass = false;
+	    }
+
+	    if(Normalizer.NO == Normalizer.quickCheck(field[4], Normalizer.FCD)) {
+	        errln("Normalizer error: quickCheck(NFKD(s), NewNormalizer.FCD) is NewNormalizer.NO");
+	        pass = false;
+	    }
+        
+        out = iterativeNorm(new StringCharacterIterator(field[0]), Normalizer.FCD, buf, +1);
+        out = iterativeNorm(new StringCharacterIterator(field[0]), Normalizer.FCD, buf, -1);
+        
+        out = iterativeNorm(new StringCharacterIterator(field[2]), Normalizer.FCD, buf, +1);
+        out = iterativeNorm(new StringCharacterIterator(field[2]), Normalizer.FCD, buf, -1);
+        
+        out = iterativeNorm(new StringCharacterIterator(field[4]), Normalizer.FCD, buf, +1);
+        out = iterativeNorm(new StringCharacterIterator(field[4]), Normalizer.FCD, buf, -1);
+        
+        out=Normalizer.normalize(fcd, Normalizer.NFD);
+	    if(!out.equals(field[2])) {
+	        errln("Normalizer error: NFD(FCD(s))!=NFD(s)");
+	        pass = false;
+	    }    
+        if (!pass) {
+            errln("FAIL: " + line);
+        }     
+       
+        return pass;
+    }
+    private void compare(String s1, String s2){
+        if(s1.length()==1 && s2.length()==1){
+            if(Normalizer.compare(UTF16.charAt(s1,0),UTF16.charAt(s2,0),Normalizer.COMPARE_IGNORE_CASE)!=0){
+                errln("Normalizer.compare(int,int) failed for s1: "
+                        +Utility.hex(s1) + " s2: " + Utility.hex(s2));
+            }    
+        }
+        if(s1.length()==1 && s2.length()>1){
+            if(Normalizer.compare(UTF16.charAt(s1,0),s2,Normalizer.COMPARE_IGNORE_CASE)!=0){
+                errln("Normalizer.compare(int,String) failed for s1: "
+                        +Utility.hex(s1) + " s2: " + Utility.hex(s2));
+            }    
+        }
+        if(s1.length()>1 && s2.length()>1){
+            // TODO: Re-enable this tests after UTC fixes UAX 21
+            if(s1.indexOf('\u0345')>=0)return;
+            if(Normalizer.compare(s1.toCharArray(),s2.toCharArray(),Normalizer.COMPARE_IGNORE_CASE)!=0){
+                errln("Normalizer.compare(char[],char[]) failed for s1: "
+                        +Utility.hex(s1) + " s2: " + Utility.hex(s2));
+            }    
+        }    
+    }
+    /**
+     * Do a normalization using the iterative API in the given direction.
+     * @param buf scratch buffer
+     * @param dir either +1 or -1
+     */
+    private String iterativeNorm(String str, Normalizer.Mode mode,
+                                 StringBuffer buf, int dir) throws Exception{
+        normalizer.setText(str);
+        normalizer.setMode(mode);
+        buf.setLength(0);
+        
+        int ch;
+        if (dir > 0) {
+            for (ch = normalizer.first(); ch != Normalizer.DONE;
+                 ch = normalizer.next()) {
+                buf.append(UTF16.toString(ch));
+            }
+        } else {
+            for (ch = normalizer.last(); ch != Normalizer.DONE;
+                 ch = normalizer.previous()) {
+                buf.insert(0, UTF16.toString(ch));
+            }
+        }
+        return buf.toString();
+    }
+    
+    /**
+     * Do a normalization using the iterative API in the given direction.
+     * @param str a Java StringCharacterIterator
+     * @param buf scratch buffer
+     * @param dir either +1 or -1
+     */
+    private String iterativeNorm(StringCharacterIterator str, Normalizer.Mode mode,
+                                 StringBuffer buf, int dir) throws Exception{
+        normalizer.setText(str);
+        normalizer.setMode(mode);
+        buf.setLength(0);
+        
+        int ch;
+        if (dir > 0) {
+            for (ch = normalizer.first(); ch != Normalizer.DONE;
+                 ch = normalizer.next()) {
+                buf.append(UTF16.toString(ch));
+            }
+        } else {
+            for (ch = normalizer.last(); ch != Normalizer.DONE;
+                 ch = normalizer.previous()) {
+                buf.insert(0, UTF16.toString(ch));
+            }
+        }
+        return buf.toString();
+    }
+
+    /**
+     * @param op name of normalization form, e.g., "KC"
+     * @param s string being normalized
+     * @param got value received
+     * @param exp expected value
+     * @param msg description of this test
+     * @param return true if got == exp
+     */
+    private boolean assertEqual(String op, String s, String got,
+                                String exp, String msg) {
+        if (exp.equals(got)) {
+            return true;
+        }
+        errln(("      " + msg + ") " + op + "(" + s + ")=" + hex(got) +
+                             ", exp. " + hex(exp)));
+        return false;
+    }
+
+    /**
+     * Split a string into pieces based on the given delimiter
+     * character.  Then, parse the resultant fields from hex into
+     * characters.  That is, "0040 0400;0C00;0899" -> new String[] {
+     * "\u0040\u0400", "\u0C00", "\u0899" }.  The output is assumed to
+     * be of the proper length already, and exactly output.length
+     * fields are parsed.  If there are too few an exception is
+     * thrown.  If there are too many the extras are ignored.
+     *
+     * @param buf scratch buffer
+     */
+    private static void hexsplit(String s, char delimiter,
+                                 String[] output, StringBuffer buf) {
+        int i;
+        int pos = 0;
+        for (i=0; i<output.length; ++i) {
+            int delim = s.indexOf(delimiter, pos);
+            if (delim < 0) {
+                throw new IllegalArgumentException("Missing field in " + s);
+            }
+            // Our field is from pos..delim-1.
+            buf.setLength(0);
+            
+            String toHex = s.substring(pos,delim);
+            pos = delim;
+            int index = 0;
+            int len = toHex.length();
+            while(index< len){
+                if(toHex.charAt(index)==' '){
+                    index++;
+                }else{
+                    int spacePos = toHex.indexOf(' ', index);
+                    if(spacePos==-1){
+                        appendInt(buf,toHex.substring(index,len),s);
+                        spacePos = len;
+                    }else{
+                        appendInt(buf,toHex.substring(index, spacePos),s);
+                    }
+                    index = spacePos+1;
+                }
+            }
+            
+            if (buf.length() < 1) {
+                throw new IllegalArgumentException("Empty field " + i + " in " + s);
+            }
+            output[i] = buf.toString();
+            ++pos; // Skip over delim
+        }
+    }
+    public static void appendInt(StringBuffer buf, String strToHex, String s){
+        int hex = Integer.parseInt(strToHex,16);
+        if (hex < 0 ) {
+            throw new IllegalArgumentException("Out of range hex " +
+                                                hex + " in " + s);
+        }else if (hex > 0xFFFF){
+            buf.append((char)((hex>>10)+0xd7c0)); 
+            buf.append((char)((hex&0x3ff)|0xdc00));
+        }else{
+            buf.append((char) hex);
+        }
+    }
+            
+    // Specific tests for debugging.  These are generally failures
+    // taken from the conformance file, but culled out to make
+    // debugging easier.  These can be eliminated without affecting
+    // coverage.
+
+    public void _hideTestCase6() throws Exception{
+        _testOneLine("0385;0385;00A8 0301;0020 0308 0301;0020 0308 0301;");
+    }
+
+    public void _testOneLine(String line) throws Exception{
+        String[] fields = new String[5];
+        StringBuffer buf = new StringBuffer();
+        // Parse out the fields
+        hexsplit(line, ';', fields, buf);
+        checkConformance(fields, line);
+    }
+    
+
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/ExhaustiveTest.java b/src/com/ibm/icu/dev/test/normalizer/ExhaustiveTest.java
new file mode 100755
index 0000000..1a5ad66
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/ExhaustiveTest.java
@@ -0,0 +1,146 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/normalizer/Attic/ExhaustiveTest.java,v $ 
+ * $Date: 2002/06/20 01:16:24 $ 
+ * $Revision: 1.11 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.normalizer;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.NormalizerImpl;
+
+public class ExhaustiveTest extends TestFmwk
+{
+ 	
+    public static void main(String[] args) throws Exception
+    {
+    	String[] tempArgs = new String[args.length];
+        int count = 0;
+
+        // Allow the test to be pointed at a specific version of the Unicode database
+        //for (int i = 0; i < args.length; i++)
+        //{
+        //    if (args[i].equals("-data")) {
+        //        tempInfo = new UInfo(args[++i], args[++i]);
+        //    } else {
+        //        tempArgs[count++] = args[i];
+        //    }
+        //}
+
+        args = new String[count];
+        System.arraycopy(tempArgs, 0, args, 0, count);
+
+
+
+        new ExhaustiveTest().run(args);
+    }
+    
+    public ExhaustiveTest() {
+    }
+
+ 
+
+    /**
+     * Run through all of the characters returned by a composed-char iterator
+     * and make sure that:
+     * <ul>
+     * <li>a) They do indeed have decompositions.
+     * <li>b) The decomposition according to the iterator is the same as
+     *          returned by Normalizer.decompose().
+     * <li>c) All characters <em>not</em> returned by the iterator do not
+     *          have decompositions.
+     * </ul>
+     */
+    public void TestComposedCharIter() {
+        doTestComposedChars(false);
+    }
+
+    public void doTestComposedChars(boolean compat) {
+        int options = Normalizer.IGNORE_HANGUL;
+        ComposedCharIter iter = new ComposedCharIter(compat, options);
+
+        char lastChar = 0;
+
+        while (iter.hasNext()) {
+            char ch = iter.next();
+
+            // Test all characters between the last one and this one to make
+            // sure that they don't have decompositions
+            assertNoDecomp(lastChar, ch, compat, options);
+            lastChar = ch;
+
+            // Now make sure that the decompositions for this character
+            // make sense
+            String chString   = new StringBuffer().append(ch).toString();
+            String iterDecomp = iter.decomposition();
+            String normDecomp = Normalizer.decompose(chString, compat);
+
+            if (iterDecomp.equals(chString)) {
+                errln("ERROR: " + hex(ch) + " has identical decomp");
+            }
+            else if (!iterDecomp.equals(normDecomp)) {
+                errln("ERROR: Normalizer decomp for " + hex(ch) + " (" + hex(normDecomp) + ")"
+                    + " != iter decomp (" + hex(iterDecomp) + ")" );
+            }
+        }
+        assertNoDecomp(lastChar, '\uFFFF', compat, options);
+    }
+
+    void assertNoDecomp(char start, char limit, boolean compat, int options)
+    {
+        for (char x = ++start; x < limit; x++) {
+            String xString   = new StringBuffer().append(x).toString();
+            String decomp = Normalizer.decompose(xString, compat);
+            if (!decomp.equals(xString)) {
+                errln("ERROR: " + hex(x) + " has decomposition (" + hex(decomp) + ")"
+                    + " but was not returned by iterator");
+            }
+        }
+    }
+
+
+    public void TestRoundTrip() {
+        int options = Normalizer.IGNORE_HANGUL;
+        boolean compat = false;
+
+        ComposedCharIter iter = new ComposedCharIter(false, options);
+        while (iter.hasNext()) {
+            char ch = iter.next();
+
+            String chStr = new StringBuffer().append(ch).toString();
+            String decomp = Normalizer.decompose(chStr, compat);
+            String comp = Normalizer.compose(decomp, compat);
+
+            int cClass = UCharacter.getCombiningClass(decomp.charAt(0));
+            cClass = 0;
+
+            if (NormalizerImpl.isFullCompositionExclusion(ch)) {
+                logln("Skipped excluded char " + hex(ch) + " (" + UCharacter.getName(ch) + ")" );
+                continue;
+            }
+
+            // Avoid disparaged characters
+            if (getDecomposition(ch,compat).length() == 4) continue;
+
+            if (!comp.equals(chStr)) {
+                errln("ERROR: Round trip invalid: " + hex(chStr) + " --> " + hex(decomp)
+                    + " --> " + hex(comp));
+
+                errln("  char decomp is '" + getDecomposition(ch,compat) + "'");
+            }
+        }
+    }
+    private String getDecomposition(char ch, boolean compat){
+        char[] dest = new char[10];   
+        int length = NormalizerImpl.getDecomposition(ch,compat,dest,0,dest.length);   
+        return new String(dest,0,length);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/TestCanonicalIterator.java b/src/com/ibm/icu/dev/test/normalizer/TestCanonicalIterator.java
new file mode 100755
index 0000000..fd34a20
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/TestCanonicalIterator.java
@@ -0,0 +1,246 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/normalizer/TestCanonicalIterator.java,v $ 
+ * $Date: 2002/06/20 01:16:24 $ 
+ * $Revision: 1.8 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.normalizer;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.Utility;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.*;
+
+// TODO: fit into test framework
+
+public class TestCanonicalIterator extends TestFmwk {
+	
+    static final boolean SHOW_NAMES = false;
+
+    public static void main(String[] args) throws Exception {
+        new TestCanonicalIterator().run(args);
+    }
+	
+    static final String testArray[][] = {
+        {"Åd\u0307\u0327", "A\u030Ad\u0307\u0327, A\u030Ad\u0327\u0307, A\u030A\u1E0B\u0327, "
+        	+ "A\u030A\u1E11\u0307, \u00C5d\u0307\u0327, \u00C5d\u0327\u0307, "
+        	+ "\u00C5\u1E0B\u0327, \u00C5\u1E11\u0307, \u212Bd\u0307\u0327, "
+        	+ "\u212Bd\u0327\u0307, \u212B\u1E0B\u0327, \u212B\u1E11\u0307"},
+        {"\u010d\u017E", "c\u030Cz\u030C, c\u030C\u017E, \u010Dz\u030C, \u010D\u017E"},
+        {"x\u0307\u0327", "x\u0307\u0327, x\u0327\u0307, \u1E8B\u0327"},
+    };
+    
+     
+    public void TestExhaustive() {
+    	int counter = 0;
+    	int mixedCounter = 0;
+    	int lastMixedCounter = -1;
+    	CanonicalIterator it = new CanonicalIterator("");
+    	/*
+    	CanonicalIterator slowIt = new CanonicalIterator("");
+    	slowIt.SKIP_ZEROS = false;
+    	*/
+    	Transliterator name = Transliterator.getInstance("[^\\u0020-\\u007F] name");
+    	Set itSet = new TreeSet();
+    	Set slowItSet = new TreeSet();
+    	
+    	
+    	for (int i = 0; i < 0x10FFFF; ++i) {
+    		
+    		// skip characters we know don't have decomps
+    		int type = UCharacter.getType(i);
+    		if (type == Character.UNASSIGNED || type == Character.PRIVATE_USE
+    			|| type == Character.SURROGATE) continue;
+    			
+    		if ((++counter % 5000) == 0) logln("Testing " + Utility.hex(i,0));
+    		
+    		String s = UTF16.valueOf(i) + "\u0345";
+    		String decomp = Normalizer.decompose(s, false);
+    		String comp = Normalizer.compose(s, false);
+    		// skip characters that don't have either decomp.
+    		// need quick test for this!
+    		if (s.equals(decomp) && s.equals(comp)) continue;
+    		
+    		it.setSource(s);
+    		boolean gotDecomp = false;
+    		boolean gotComp = false;
+    		boolean gotSource = false;
+    		while (true) {
+    			String item = it.next();
+    			if (item == null) break;
+    			if (item.equals(s)) gotSource = true;
+    			if (item.equals(decomp)) gotDecomp = true;
+    			if (item.equals(comp)) gotComp = true;
+    			if ((mixedCounter & 0x7F) == 0 && (i < 0xAD00 || i > 0xAC00 + 11172)) {
+    				if (lastMixedCounter != mixedCounter) {
+    					logln("");
+    					lastMixedCounter = mixedCounter;
+    				}
+    				logln("\t" + mixedCounter + "\t" + name.transliterate(item)
+    				+ (item.equals(s) ? "\t(*original*)" : "")
+    				+ (item.equals(decomp) ? "\t(*decomp*)" : "")
+    				+ (item.equals(comp) ? "\t(*comp*)" : "")
+    				);
+    			}
+    		}
+    		
+    		// check that zeros optimization doesn't mess up.
+    		/*
+    		if (true) {
+    			it.reset();
+    			itSet.clear();
+    			while (true) {
+    				String item = it.next();
+    				if (item == null) break;
+    				itSet.add(item);
+    			}
+    			slowIt.setSource(s);
+    			slowItSet.clear();
+    			while (true) {
+    				String item = slowIt.next();
+    				if (item == null) break;
+    				slowItSet.add(item);
+    			}
+    			if (!itSet.equals(slowItSet)) {
+    				errln("Zero optimization failure with " + getReadable(s));
+    			}
+    		}
+    		*/
+    		
+    		mixedCounter++;
+    		if (!gotSource || !gotDecomp || !gotComp) {
+    			errln("FAIL CanonicalIterator: " + s);
+    		}
+    	}
+    }
+    
+    public int TestSpeed() {
+         // skip unless verbose
+        if (!isVerbose()) return 0;
+
+   		String s = "\uAC01\u0345";
+   		
+    	CanonicalIterator it = new CanonicalIterator(s);
+    	double start, end;
+    	int x = 0; // just to keep code from optimizing away.
+    	int iterations = 10000;
+    	double slowDelta = 0;
+    	
+    	/*
+    	CanonicalIterator slowIt = new CanonicalIterator(s);
+    	slowIt.SKIP_ZEROS = false;
+
+    	start = System.currentTimeMillis();
+    	for (int i = 0; i < iterations; ++i) {
+    		slowIt.setSource(s);
+    		while (true) {
+    			String item = slowIt.next();
+    			if (item == null) break;
+    			x += item.length();
+    		}
+    	}
+    	end = System.currentTimeMillis();
+    	double slowDelta = (end-start) / iterations;
+    	logln("Slow iteration: " + slowDelta);
+    	*/
+
+    	start = System.currentTimeMillis();
+    	for (int i = 0; i < iterations; ++i) {
+    		it.setSource(s);
+    		while (true) {
+    			String item = it.next();
+    			if (item == null) break;
+    			x += item.length();
+    		}
+    	}
+    	end = System.currentTimeMillis();
+    	double fastDelta = (end-start) / iterations;
+    	logln("Fast iteration: " + fastDelta + (slowDelta != 0 ? ", " + (fastDelta/slowDelta) : ""));
+    	
+    	
+    	return x;
+    }
+    
+    public void TestBasic() {
+//      This is not interesting anymore as the data is already built 
+//      beforehand
+
+//        check build
+//        UnicodeSet ss = CanonicalIterator.getSafeStart();
+//        logln("Safe Start: " + ss.toPattern(true));
+//        ss = CanonicalIterator.getStarts('a');
+//        expectEqual("Characters with 'a' at the start of their decomposition: ", "", CanonicalIterator.getStarts('a'),
+//        	new UnicodeSet("[\u00E0-\u00E5\u0101\u0103\u0105\u01CE\u01DF\u01E1\u01FB"
+//        	+ "\u0201\u0203\u0227\u1E01\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7]")
+//        		);
+        
+        // check permute
+        // NOTE: we use a TreeSet below to sort the output, which is not guaranteed to be sorted!
+        
+        Set results = new TreeSet();
+        CanonicalIterator.permute("ABC", false, results);
+        expectEqual("Simple permutation ", "", collectionToString(results), "ABC, ACB, BAC, BCA, CAB, CBA");
+        
+        // try samples
+        SortedSet set = new TreeSet();
+        for (int i = 0; i < testArray.length; ++i) {
+            //logln("Results for: " + name.transliterate(testArray[i]));
+            CanonicalIterator it = new CanonicalIterator(testArray[i][0]);
+            int counter = 0;
+            set.clear();
+            while (true) {
+                String result = it.next();
+                if (result == null) break;
+                set.add(result); // sort them
+                //logln(++counter + ": " + hex.transliterate(result));
+                //logln(" = " + name.transliterate(result));
+            }
+            expectEqual(i + ": ", testArray[i][0], collectionToString(set), testArray[i][1]);
+
+        }
+    }
+    
+    public void expectEqual(String message, String item, Object a, Object b) {
+    	if (!a.equals(b)) {
+    		errln("FAIL: " + message + getReadable(item));
+    		errln("\t" + getReadable(a));
+    		errln("\t" + getReadable(b));
+    	} else {
+    		logln("Checked: " + message + getReadable(item));
+    		logln("\t" + getReadable(a));
+    		logln("\t" + getReadable(b));
+    	}
+    }
+    
+    Transliterator name = null;
+    Transliterator hex = null;
+        
+    public String getReadable(Object obj) {
+    	if (obj == null) return "null";
+    	String s = obj.toString();
+    	if (s.length() == 0) return "";
+        // set up for readable display
+        if (name == null) name = Transliterator.getInstance("[^\\ -\\u007F] name");
+        if (hex == null) hex = Transliterator.getInstance("[^\\ -\\u007F] hex");
+        return "[" + (SHOW_NAMES ? name.transliterate(s) + "; " : "") + hex.transliterate(s) + "]";
+    }
+    
+    static String collectionToString(Collection col) {
+        StringBuffer result = new StringBuffer();
+        Iterator it = col.iterator();
+        while (it.hasNext()) {
+            if (result.length() != 0) result.append(", ");
+            result.append(it.next().toString());
+        }
+        return result.toString();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/normalizer/package.html b/src/com/ibm/icu/dev/test/normalizer/package.html
new file mode 100755
index 0000000..1010a80
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/normalizer/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 21:35:49 $
+-->
+</head>
+<body bgcolor="white">
+Tests for Normalizer.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/package.html b/src/com/ibm/icu/dev/test/package.html
new file mode 100755
index 0000000..8faf992
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 21:35:48 $
+-->
+</head>
+<body bgcolor="white">
+Shared utilities for tests.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java b/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java
new file mode 100755
index 0000000..f32d36b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java
@@ -0,0 +1,222 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java,v $
+ * $Date: 2002/02/16 03:05:14 $
+ * $Revision: 1.8 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.rbbi;
+
+import java.util.ListResourceBundle;
+import java.net.URL;
+
+/**
+ * This resource bundle is included for testing and demonstration purposes only.
+ * It applies the dictionary-based algorithm to English text that has had all the
+ * spaces removed.  Once we have good test cases for Thai, we will replace this
+ * with good resource data (and a good dictionary file) for Thai
+ */
+public class BreakIteratorRules_en_US_TEST extends ListResourceBundle {
+    private static final URL url =
+        BreakIteratorRules_en_US_TEST.class.getResource("/com/ibm/data/misc/english.dict");
+
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    static final Object[][] contents = {
+        // names of classes to instantiate for the different kinds of break
+        // iterator.  Notice we're now using DictionaryBasedBreakIterator
+        // for word and line breaking.
+        { "BreakIteratorClasses",
+            new String[] { "RuleBasedBreakIterator",           // character-break iterator class
+                           "DictionaryBasedBreakIterator",     // word-break iterator class
+                           "DictionaryBasedBreakIterator",     // line-break iterator class
+                           "RuleBasedBreakIterator" }          // sentence-break iterator class
+        },
+
+        // These are the same word-breaking rules as are specified in the default
+        // resource, except that the Latin letters, apostrophe, and hyphen are
+        // specified as dictionary characters
+        { "WordBreakRules",
+            // ignore non-spacing marks, enclosing marks, and format characters,
+            // all of which should not influence the algorithm
+            "$_ignore_=[[:Mn:][:Me:][:Cf:]];"
+
+            // lower and upper case Roman letters, apostrophy and dash are
+            // in the English dictionary
+            + "$_dictionary_=[a-zA-Z\\'\\-];"
+
+            // Hindi phrase separator, kanji, katakana, hiragana, CJK diacriticals,
+            // other letters, and digits
+            + "$danda=[\u0964\u0965];"
+            + "$kanji=[\u3005\u4e00-\u9fa5\uf900-\ufa2d];"
+            + "$kata=[\u3099-\u309c\u30a1-\u30fe];"
+            + "$hira=[\u3041-\u309e\u30fc];"
+            + "$let=[[[:L:][:Mc:]]-[$kanji$kata$hira]];"
+            + "$dgt=[:N:];"
+
+            // punctuation that can occur in the middle of a word: currently
+            // dashes, apostrophes, and quotation marks
+            + "$mid_word=[[:Pd:]\u00ad\u2027\\\"\\\'];"
+
+            // punctuation that can occur in the middle of a number: currently
+            // apostrophes, qoutation marks, periods, commas, and the Arabic
+            // decimal point
+            + "$mid_num=[\\\"\\\'\\,\u066b\\.];"
+
+            // punctuation that can occur at the beginning of a number: currently
+            // the period, the number sign, and all currency symbols except the cents sign
+            + "$pre_num=[[[:Sc:]-[\u00a2]]\\#\\.];"
+
+            // punctuation that can occur at the end of a number: currently
+            // the percent, per-thousand, per-ten-thousand, and Arabic percent
+            // signs, the cents sign, and the ampersand
+            + "$post_num=[\\%\\&\u00a2\u066a\u2030\u2031];"
+
+            // line separators: currently LF, FF, PS, and LS
+            + "$ls=[\n\u000c\u2028\u2029];"
+
+            // whitespace: all space separators and the tab character
+            + "$ws=[[:Zs:]\t];"
+
+            // a word is a sequence of letters that may contain internal
+            // punctuation, as long as it begins and ends with a letter and
+            // never contains two punctuation marks in a row
+            + "$word=($let+($mid_word$let+)*$danda?);"
+
+            // a number is a sequence of digits that may contain internal
+            // punctuation, as long as it begins and ends with a digit and
+            // never contains two punctuation marks in a row.
+            + "$number=($dgt+($mid_num$dgt+)*);"
+
+            // break after every character, with the following exceptions
+            // (this will cause punctuation marks that aren't considered
+            // part of words or numbers to be treated as words unto themselves)
+            + ".;"
+
+            // keep together any sequence of contiguous words and numbers
+            // (including just one of either), plus an optional trailing
+            // number-suffix character
+            + "$word?($number$word)*($number$post_num?)?;"
+
+            // keep together and sequence of contiguous words and numbers
+            // that starts with a number-prefix character and a number,
+            // and may end with a number-suffix character
+            + "$pre_num($number$word)*($number$post_num?)?;"
+
+            // keep together runs of whitespace (optionally with a single trailing
+            // line separator or CRLF sequence)
+            + "$ws*\r?$ls?;"
+
+            // keep together runs of Katakana
+            + "$kata*;"
+
+            // keep together runs of Hiragana
+            + "$hira*;"
+
+            // keep together runs of Kanji
+            + "$kanji*;"},
+
+        // These are the same line-breaking rules as are specified in the default
+        // resource, except that the Latin letters, apostrophe, and hyphen are
+        // specified as dictionary characters
+        { "LineBreakRules",
+            // ignore non-spacing marks, enclosing marks, and format characters
+            "$_ignore_=[[:Mn:][:Me:][:Cf:]];"
+
+            // lower and upper case Roman letters, apostrophy and dash
+            // are in the English dictionary
+            + "$_dictionary_=[a-zA-Z\\'\\-];"
+
+            // Hindi phrase separators
+            + "$danda=[\u0964\u0965];"
+
+            // characters that always cause a break: ETX, tab, LF, FF, LS, and PS
+            + "$break=[\u0003\t\n\f\u2028\u2029];"
+
+            // characters that always prevent a break: the non-breaking space
+            // and similar characters
+            + "$nbsp=[\u00a0\u2007\u2011\ufeff];"
+
+            // whitespace: space separators and control characters, except for
+            // CR and the other characters mentioned above
+            + "$space=[[[:Zs:][:Cc:]]-[$nbsp$break\r]];"
+
+            // dashes: dash punctuation and the discretionary hyphen, except for
+            // non-breaking hyphens
+            + "$dash=[[[:Pd:]\u00ad]-[$nbsp]];"
+
+            // characters that stick to a word if they precede it: currency symbols
+            // (except the cents sign) and starting punctuation
+            + "$pre_word=[[[:Sc:]-[\u00a2]][:Ps:]\\\"\\\'];"
+
+            // characters that stick to a word if they follow it: ending punctuation,
+            // other punctuation that usually occurs at the end of a sentence,
+            // small Kana characters, some CJK diacritics, etc.
+            + "$post_word=[[:Pe:]\\!\\\"\\\'\\%\\.\\,\\:\\;\\?\u00a2\u00b0\u066a\u2030-\u2034"
+                    + "\u2103\u2105\u2109\u3001\u3002\u3005\u3041\u3043\u3045\u3047\u3049\u3063"
+                    + "\u3083\u3085\u3087\u308e\u3099-\u309e\u30a1\u30a3\u30a5\u30a7\u30a9"
+                    + "\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u30fc-\u30fe\uff01\uff0c"
+                    + "\uff0e\uff1f];"
+
+            // Kanji: actually includes both Kanji and Kana, except for small Kana and
+            // CJK diacritics
+            + "$kanji=[[\u4e00-\u9fa5\uf900-\ufa2d\u3041-\u3094\u30a1-\u30fa]-[$post_word$_ignore_]];"
+
+            // digits
+            + "$digit=[[:Nd:][:No:]];"
+
+            // punctuation that can occur in the middle of a number: periods and commas
+            + "$mid_num=[\\.\\,];"
+
+            // everything not mentioned above, plus the quote marks (which are both
+            // <pre-word>, <post-word>, and <char>)
+            + "$char=[^$break$space$dash$kanji$nbsp$_ignore_$pre_word$post_word$mid_num$danda\r\\\"\\\'];"
+
+            // a "number" is a run of prefix characters and dashes, followed by one or
+            // more digits with isolated number-punctuation characters interspersed
+            + "$number=([$pre_word$dash]*$digit+($mid_num$digit+)*);"
+
+            // the basic core of a word can be either a "number" as defined above, a single
+            // "Kanji" character, or a run of any number of not-explicitly-mentioned
+            // characters (this includes Latin letters)
+            + "$word_core=([$pre_word$char]*|$kanji|$number);"
+
+            // a word may end with an optional suffix that be either a run of one or
+            // more dashes or a run of word-suffix characters, followed by an optional
+            // run of whitespace
+            + "$word_suffix=(($dash+|$post_word*)$space*);"
+
+            // a word, thus, is an optional run of word-prefix characters, followed by
+            // a word core and a word suffix (the syntax of <word-core> and <word-suffix>
+            // actually allows either of them to match the empty string, putting a break
+            // between things like ")(" or "aaa(aaa"
+            + "$word=($pre_word*$word_core$word_suffix);"
+
+            // finally, the rule that does the work: Keep together any run of words that
+            // are joined by runs of one of more non-spacing mark.  Also keep a trailing
+            // line-break character or CRLF combination with the word.  (line separators
+            // "win" over nbsp's)
+            + "$word($nbsp+$word)*\r?$break?;" },
+
+        // these two resources specify the pathnames of the dictionary files to
+        // use for word breaking and line breaking.  Both currently refer to
+        // a file called english.dict placed in com.ibm.icu.impl.data
+        // somewhere in the class path.  It's important to note that
+        // english.dict was created for testing purposes only, and doesn't
+        // come anywhere close to being an exhaustive dictionary of English
+        // words (basically, it contains all the words in the Declaration of
+        // Independence, and the Revised Standard Version of the book of Genesis,
+        // plus a few other words thrown in to show more interesting cases).
+        // { "WordBreakDictionary", "com\\ibm\\text\\resources\\english.dict" },
+        // { "LineBreakDictionary", "com\\ibm\\text\\resources\\english.dict" }
+        { "WordBreakDictionary", url },
+        { "LineBreakDictionary", url }
+    };
+}
diff --git a/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java b/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java
new file mode 100755
index 0000000..d783870
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java
@@ -0,0 +1,1423 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java,v $
+ * $Date: 2002/03/01 18:57:19 $
+ * $Revision: 1.9 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.rbbi;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.BreakIterator;
+import java.text.CharacterIterator;
+import com.ibm.icu.text.StringCharacterIterator;
+import java.util.Locale;
+import java.util.Vector;
+import java.util.Enumeration;
+import java.io.*;
+
+public class BreakIteratorTest extends TestFmwk
+{
+    private BreakIterator characterBreak;
+    private BreakIterator wordBreak;
+    private BreakIterator lineBreak;
+    private BreakIterator sentenceBreak;
+    private BreakIterator titleBreak;
+
+    public static void main(String[] args) throws Exception {
+        new BreakIteratorTest().run(args);
+    }
+
+    public BreakIteratorTest()
+    {
+        characterBreak = BreakIterator.getCharacterInstance();
+        wordBreak = BreakIterator.getWordInstance();
+        lineBreak = BreakIterator.getLineInstance();
+        //logln("Creating sentence iterator...");
+        sentenceBreak = BreakIterator.getSentenceInstance();
+        //logln("Finished creating sentence iterator...");
+        titleBreak = BreakIterator.getTitleInstance();
+    }
+
+    //=========================================================================
+    // general test subroutines
+    //=========================================================================
+
+    private void generalIteratorTest(BreakIterator bi, Vector expectedResult) {
+        StringBuffer buffer = new StringBuffer();
+        String text;
+        for (int i = 0; i < expectedResult.size(); i++) {
+            text = (String)expectedResult.elementAt(i);
+            buffer.append(text);
+        }
+        text = buffer.toString();
+
+        bi.setText(text);
+
+        Vector nextResults = _testFirstAndNext(bi, text);
+        Vector previousResults = _testLastAndPrevious(bi, text);
+
+        logln("comparing forward and backward...");
+        int errs = getErrorCount();
+        compareFragmentLists("forward iteration", "backward iteration", nextResults,
+                        previousResults);
+        if (getErrorCount() == errs) {
+            logln("comparing expected and actual...");
+            compareFragmentLists("expected result", "actual result", expectedResult,
+                            nextResults);
+        }
+
+        int[] boundaries = new int[expectedResult.size() + 3];
+        boundaries[0] = BreakIterator.DONE;
+        boundaries[1] = 0;
+        for (int i = 0; i < expectedResult.size(); i++)
+            boundaries[i + 2] = boundaries[i + 1] + ((String)expectedResult.elementAt(i)).
+                            length();
+        boundaries[boundaries.length - 1] = BreakIterator.DONE;
+
+        _testFollowing(bi, text, boundaries);
+        _testPreceding(bi, text, boundaries);
+        _testIsBoundary(bi, text, boundaries);
+
+        doMultipleSelectionTest(bi, text);
+    }
+
+    private Vector _testFirstAndNext(BreakIterator bi, String text) {
+        int p = bi.first();
+        int lastP = p;
+        Vector result = new Vector();
+
+        if (p != 0)
+            errln("first() returned " + p + " instead of 0");
+        while (p != BreakIterator.DONE) {
+            p = bi.next();
+            if (p != BreakIterator.DONE) {
+                if (p <= lastP)
+                    errln("next() failed to move forward: next() on position "
+                                    + lastP + " yielded " + p);
+
+                result.addElement(text.substring(lastP, p));
+            }
+            else {
+                if (lastP != text.length())
+                    errln("next() returned DONE prematurely: offset was "
+                                    + lastP + " instead of " + text.length());
+            }
+            lastP = p;
+        }
+        return result;
+    }
+
+    private Vector _testLastAndPrevious(BreakIterator bi, String text) {
+        int p = bi.last();
+        int lastP = p;
+        Vector result = new Vector();
+
+        if (p != text.length())
+            errln("last() returned " + p + " instead of " + text.length());
+        while (p != BreakIterator.DONE) {
+            p = bi.previous();
+            if (p != BreakIterator.DONE) {
+                if (p >= lastP)
+                    errln("previous() failed to move backward: previous() on position "
+                                    + lastP + " yielded " + p);
+
+                result.insertElementAt(text.substring(p, lastP), 0);
+            }
+            else {
+                if (lastP != 0)
+                    errln("previous() returned DONE prematurely: offset was "
+                                    + lastP + " instead of 0");
+            }
+            lastP = p;
+        }
+        return result;
+    }
+
+    private void compareFragmentLists(String f1Name, String f2Name, Vector f1, Vector f2) {
+        int p1 = 0;
+        int p2 = 0;
+        String s1;
+        String s2;
+        int t1 = 0;
+        int t2 = 0;
+
+        while (p1 < f1.size() && p2 < f2.size()) {
+            s1 = (String)f1.elementAt(p1);
+            s2 = (String)f2.elementAt(p2);
+            t1 += s1.length();
+            t2 += s2.length();
+
+            if (s1.equals(s2)) {
+                debugLogln("   >" + s1 + "<");
+                ++p1;
+                ++p2;
+            }
+            else {
+                int tempT1 = t1;
+                int tempT2 = t2;
+                int tempP1 = p1;
+                int tempP2 = p2;
+
+                while (tempT1 != tempT2 && tempP1 < f1.size() && tempP2 < f2.size()) {
+                    while (tempT1 < tempT2 && tempP1 < f1.size()) {
+                        tempT1 += ((String)f1.elementAt(tempP1)).length();
+                        ++tempP1;
+                    }
+                    while (tempT2 < tempT1 && tempP2 < f2.size()) {
+                        tempT2 += ((String)f2.elementAt(tempP2)).length();
+                        ++tempP2;
+                    }
+                }
+                logln("*** " + f1Name + " has:");
+                while (p1 <= tempP1 && p1 < f1.size()) {
+                    s1 = (String)f1.elementAt(p1);
+                    t1 += s1.length();
+                    debugLogln(" *** >" + s1 + "<");
+                    ++p1;
+                }
+                logln("***** " + f2Name + " has:");
+                while (p2 <= tempP2 && p2 < f2.size()) {
+                    s2 = (String)f2.elementAt(p2);
+                    t2 += s2.length();
+                    debugLogln(" ***** >" + s2 + "<");
+                    ++p2;
+                }
+                errln("Discrepancy between " + f1Name + " and " + f2Name);
+            }
+        }
+    }
+
+    private void _testFollowing(BreakIterator bi, String text, int[] boundaries) {
+        logln("testFollowing():");
+        int p = 2;
+        for (int i = 0; i <= text.length(); i++) {
+            if (i == boundaries[p])
+                ++p;
+
+            int b = bi.following(i);
+            logln("bi.following(" + i + ") -> " + b);
+            if (b != boundaries[p])
+                errln("Wrong result from following() for " + i + ": expected " + boundaries[p]
+                                + ", got " + b);
+        }
+    }
+
+    private void _testPreceding(BreakIterator bi, String text, int[] boundaries) {
+        logln("testPreceding():");
+        int p = 0;
+        for (int i = 0; i <= text.length(); i++) {
+            int b = bi.preceding(i);
+            logln("bi.preceding(" + i + ") -> " + b);
+            if (b != boundaries[p])
+                errln("Wrong result from preceding() for " + i + ": expected " + boundaries[p]
+                                + ", got " + b);
+
+            if (i == boundaries[p + 1])
+                ++p;
+        }
+    }
+
+    private void _testIsBoundary(BreakIterator bi, String text, int[] boundaries) {
+        logln("testIsBoundary():");
+        int p = 1;
+        boolean isB;
+        for (int i = 0; i <= text.length(); i++) {
+            isB = bi.isBoundary(i);
+            logln("bi.isBoundary(" + i + ") -> " + isB);
+
+            if (i == boundaries[p]) {
+                if (!isB)
+                    errln("Wrong result from isBoundary() for " + i + ": expected true, got false");
+                ++p;
+            }
+            else {
+                if (isB)
+                    errln("Wrong result from isBoundary() for " + i + ": expected false, got true");
+            }
+        }
+    }
+
+    private void doMultipleSelectionTest(BreakIterator iterator, String testText)
+    {
+        logln("Multiple selection test...");
+        BreakIterator testIterator = (BreakIterator)iterator.clone();
+        int offset = iterator.first();
+        int testOffset;
+        int count = 0;
+
+        do {
+            testOffset = testIterator.first();
+            testOffset = testIterator.next(count);
+            logln("next(" + count + ") -> " + testOffset);
+            if (offset != testOffset)
+                errln("next(n) and next() not returning consistent results: for step " + count + ", next(n) returned " + testOffset + " and next() had " + offset);
+
+            if (offset != BreakIterator.DONE) {
+                count++;
+                offset = iterator.next();
+            }
+        } while (offset != BreakIterator.DONE);
+
+        // now do it backwards...
+        offset = iterator.last();
+        count = 0;
+
+        do {
+            testOffset = testIterator.last();
+            testOffset = testIterator.next(count);
+            logln("next(" + count + ") -> " + testOffset);
+            if (offset != testOffset)
+                errln("next(n) and next() not returning consistent results: for step " + count + ", next(n) returned " + testOffset + " and next() had " + offset);
+
+            if (offset != BreakIterator.DONE) {
+                count--;
+                offset = iterator.previous();
+            }
+        } while (offset != BreakIterator.DONE);
+    }
+
+    private void doBreakInvariantTest(BreakIterator tb, String testChars)
+    {
+        StringBuffer work = new StringBuffer("aaa");
+//        int errorCount = 0;
+
+        // a break should always occur after CR (unless followed by LF), LF, PS, and LS,
+        // unless they're followed by a non-spacing mark or a format character
+        String breaks = "\r\n\u2029\u2028";
+
+        for (int i = 0; i < breaks.length(); i++) {
+            work.setCharAt(1, breaks.charAt(i));
+            for (int j = 0; j < testChars.length(); j++) {
+                work.setCharAt(0, testChars.charAt(j));
+                for (int k = 0; k < testChars.length(); k++) {
+                    char c = testChars.charAt(k);
+
+                    // if a cr is followed by lf, ps, ls or etx, don't do the check (that's
+                    // not supposed to work)
+                    if (work.charAt(1) == '\r' && (c == '\n' || c == '\u2029'
+                            || c == '\u2028' || c == '\u0003'))
+                        continue;
+
+                    work.setCharAt(2, c);
+                    tb.setText(work.toString());
+                    boolean seen2 = false;
+                    for (int l = tb.first(); l != BreakIterator.DONE; l = tb.next()) {
+                        if (l == 2)
+                            seen2 = true;
+                    }
+                    if (!seen2) {
+                        errln("No break between U+" + Integer.toHexString((int)(work.charAt(1)))
+                                    + " and U+" + Integer.toHexString((int)(work.charAt(2))));
+                    }
+                }
+            }
+        }
+    }
+
+    private void doOtherInvariantTest(BreakIterator tb, String testChars)
+    {
+        StringBuffer work = new StringBuffer("a\r\na");
+        int errorCount = 0;
+
+        // a break should never occur between CR and LF
+        for (int i = 0; i < testChars.length(); i++) {
+            work.setCharAt(0, testChars.charAt(i));
+            for (int j = 0; j < testChars.length(); j++) {
+                work.setCharAt(3, testChars.charAt(j));
+                tb.setText(work.toString());
+                for (int k = tb.first(); k != BreakIterator.DONE; k = tb.next())
+                    if (k == 2) {
+                        errln("Break between CR and LF in string U+" + Integer.toHexString(
+                                (int)(work.charAt(0))) + ", U+d U+a U+" + Integer.toHexString(
+                                (int)(work.charAt(3))));
+                        errorCount++;
+                        if (errorCount >= 75)
+                            return;
+                    }
+            }
+        }
+
+        // a break should never occur before a non-spacing mark, unless it's preceded
+        // by a line terminator
+        work.setLength(0);
+        work.append("aaaa");
+        for (int i = 0; i < testChars.length(); i++) {
+            char c = testChars.charAt(i);
+            if (c == '\n' || c == '\r' || c == '\u2029' || c == '\u2028' || c == '\u0003')
+                continue;
+            work.setCharAt(1, c);
+            for (int j = 0; j < testChars.length(); j++) {
+                c = testChars.charAt(j);
+                if (Character.getType(c) != Character.NON_SPACING_MARK && Character.getType(c)
+                        != Character.ENCLOSING_MARK)
+                    continue;
+                work.setCharAt(2, c);
+                tb.setText(work.toString());
+                for (int k = tb.first(); k != BreakIterator.DONE; k = tb.next())
+                    if (k == 2) {
+                        errln("Break between U+" + Integer.toHexString((int)(work.charAt(1)))
+                                + " and U+" + Integer.toHexString((int)(work.charAt(2))));
+                        errorCount++;
+                        if (errorCount >= 75)
+                            return;
+                    }
+            }
+        }
+    }
+
+    public void debugLogln(String s) {
+        final String zeros = "0000";
+        String temp;
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c < '\u007f')
+                out.append(c);
+            else {
+                out.append("\\u");
+                temp = Integer.toHexString((int)c);
+                out.append(zeros.substring(0, 4 - temp.length()));
+                out.append(temp);
+            }
+        }
+        logln(out.toString());
+    }
+
+    //=========================================================================
+    // tests
+    //=========================================================================
+
+    public void TestWordBreak() {
+        Vector wordSelectionData = new Vector();
+
+        wordSelectionData.addElement("12,34");
+
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\u00A2"); //cent sign
+        wordSelectionData.addElement("\u00A3"); //pound sign
+        wordSelectionData.addElement("\u00A4"); //currency sign
+        wordSelectionData.addElement("\u00A5"); //yen sign
+        wordSelectionData.addElement("alpha-beta-gamma");
+        wordSelectionData.addElement(".");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("Badges");
+        wordSelectionData.addElement("?");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("BADGES");
+        wordSelectionData.addElement("!");
+        wordSelectionData.addElement("?");
+        wordSelectionData.addElement("!");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("We");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("don't");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("need");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("no");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("STINKING");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("BADGES");
+        wordSelectionData.addElement("!");
+        wordSelectionData.addElement("!");
+        wordSelectionData.addElement("!");
+
+        wordSelectionData.addElement("012.566,5");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("123.3434,900");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("1000,233,456.000");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("1,23.322%");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("123.1222");
+
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\u0024123,000.20");
+
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("179.01\u0025");
+
+        wordSelectionData.addElement("Hello");
+        wordSelectionData.addElement(",");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("how");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("are");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("you");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("X");
+        wordSelectionData.addElement(" ");
+
+        wordSelectionData.addElement("Now");
+        wordSelectionData.addElement("\r");
+        wordSelectionData.addElement("is");
+        wordSelectionData.addElement("\n");
+        wordSelectionData.addElement("the");
+        wordSelectionData.addElement("\r\n");
+        wordSelectionData.addElement("time");
+        wordSelectionData.addElement("\n");
+        wordSelectionData.addElement("\r");
+        wordSelectionData.addElement("for");
+        wordSelectionData.addElement("\r");
+        wordSelectionData.addElement("\r");
+        wordSelectionData.addElement("all");
+        wordSelectionData.addElement(" ");
+
+        generalIteratorTest(wordBreak, wordSelectionData);
+    }
+
+    /**
+     * @bug 4097779
+     */
+    public void TestBug4097779() {
+        Vector wordSelectionData = new Vector();
+
+        wordSelectionData.addElement("aa\u0300a");
+        wordSelectionData.addElement(" ");
+
+        generalIteratorTest(wordBreak, wordSelectionData);
+    }
+
+    /**
+     * @bug 4098467
+     */
+    public void TestBug4098467Words() {
+        Vector wordSelectionData = new Vector();
+
+        // What follows is a string of Korean characters (I found it in the Yellow Pages
+        // ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+        // it correctly), first as precomposed syllables, and then as conjoining jamo.
+        // Both sequences should be semantically identical and break the same way.
+        // precomposed syllables...
+        wordSelectionData.addElement("\uc0c1\ud56d");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\ud55c\uc778");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\uc5f0\ud569");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\uc7a5\ub85c\uad50\ud68c");
+        wordSelectionData.addElement(" ");
+        // conjoining jamo...
+        wordSelectionData.addElement("\u1109\u1161\u11bc\u1112\u1161\u11bc");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\u1112\u1161\u11ab\u110b\u1175\u11ab");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\u110b\u1167\u11ab\u1112\u1161\u11b8");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\u110c\u1161\u11bc\u1105\u1169\u1100\u116d\u1112\u116c");
+        wordSelectionData.addElement(" ");
+
+        generalIteratorTest(wordBreak, wordSelectionData);
+    }
+
+    /**
+     * @bug 4117554
+     */
+    public void TestBug4117554Words() {
+        Vector wordSelectionData = new Vector();
+
+        // this is a test for bug #4117554: the ideographic iteration mark (U+3005) should
+        // count as a Kanji character for the purposes of word breaking
+        wordSelectionData.addElement("abc");
+        wordSelectionData.addElement("\u4e01\u4e02\u3005\u4e03\u4e03");
+        wordSelectionData.addElement("abc");
+
+        generalIteratorTest(wordBreak, wordSelectionData);
+    }
+
+    public void TestSentenceBreak() {
+        Vector sentenceSelectionData = new Vector();
+
+        sentenceSelectionData.addElement("This is a simple sample sentence. ");
+        sentenceSelectionData.addElement("(This is it.) ");
+        sentenceSelectionData.addElement("This is a simple sample sentence. ");
+        sentenceSelectionData.addElement("\"This isn\'t it.\" ");
+        sentenceSelectionData.addElement("Hi! ");
+        sentenceSelectionData.addElement("This is a simple sample sentence. ");
+        sentenceSelectionData.addElement("It does not have to make any sense as you can see. ");
+        sentenceSelectionData.addElement("Nel mezzo del cammin di nostra vita, mi ritrovai in una selva oscura. ");
+        sentenceSelectionData.addElement("Che la dritta via aveo smarrita. ");
+        sentenceSelectionData.addElement("He said, that I said, that you said!! ");
+
+        sentenceSelectionData.addElement("Don't rock the boat.\u2029");
+
+        sentenceSelectionData.addElement("Because I am the daddy, that is why. ");
+        sentenceSelectionData.addElement("Not on my time (el timo.)! ");
+
+        sentenceSelectionData.addElement("So what!!\u2029");
+
+        sentenceSelectionData.addElement("\"But now,\" he said, \"I know!\" ");
+        sentenceSelectionData.addElement("Harris thumbed down several, including \"Away We Go\" (which became the huge success Oklahoma!). ");
+        sentenceSelectionData.addElement("One species, B. anthracis, is highly virulent.\n");
+        sentenceSelectionData.addElement("Wolf said about Sounder:\"Beautifully thought-out and directed.\" ");
+        sentenceSelectionData.addElement("Have you ever said, \"This is where \tI shall live\"? ");
+        sentenceSelectionData.addElement("He answered, \"You may not!\" ");
+        sentenceSelectionData.addElement("Another popular saying is: \"How do you do?\". ");
+        sentenceSelectionData.addElement("Yet another popular saying is: \'I\'m fine thanks.\' ");
+        sentenceSelectionData.addElement("What is the proper use of the abbreviation pp.? ");
+        sentenceSelectionData.addElement("Yes, I am definatelly 12\" tall!!");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4113835
+     */
+    public void TestBug4113835() {
+        Vector sentenceSelectionData = new Vector();
+
+        // test for bug #4113835: \n and \r count as spaces, not as paragraph breaks
+        sentenceSelectionData.addElement("Now\ris\nthe\r\ntime\n\rfor\r\rall\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4111338
+     */
+    public void TestBug4111338() {
+        Vector sentenceSelectionData = new Vector();
+
+        // test for bug #4111338: Don't break sentences at the boundary between CJK
+        // and other letters
+        sentenceSelectionData.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165:\"JAVA\u821c"
+                + "\u8165\u7fc8\u51ce\u306d,\u2494\u56d8\u4ec0\u60b1\u8560\u51ba"
+                + "\u611d\u57b6\u2510\u5d46\".\u2029");
+        sentenceSelectionData.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8"
+                + "\u97e4JAVA\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8\u4ec0"
+                + "\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u2029");
+        sentenceSelectionData.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8\u97e4"
+                + "\u6470\u8790JAVA\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8"
+                + "\u4ec0\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u2029");
+        sentenceSelectionData.addElement("He said, \"I can go there.\"\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4117554
+     */
+    public void TestBug4117554Sentences() {
+        Vector sentenceSelectionData = new Vector();
+
+        // Treat fullwidth variants of .!? the same as their
+        // normal counterparts
+        sentenceSelectionData.addElement("I know I'm right\uff0e ");
+        sentenceSelectionData.addElement("Right\uff1f ");
+        sentenceSelectionData.addElement("Right\uff01 ");
+
+        // Don't break sentences at boundary between CJK and digits
+        sentenceSelectionData.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8"
+                + "\u97e48888\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8\u4ec0"
+                + "\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u2029");
+
+        // Break sentence between a sentence terminator and
+        // opening punctuation
+        sentenceSelectionData.addElement("no?");
+        sentenceSelectionData.addElement("(yes)");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4158381
+     */
+    public void TestBug4158381() {
+        Vector sentenceSelectionData = new Vector();
+
+        // Don't break sentence after period if it isn't followed by a space
+        sentenceSelectionData.addElement("Test <code>Flags.Flag</code> class.  ");
+        sentenceSelectionData.addElement("Another test.\u2029");
+
+        // No breaks when there are no terminators around
+        sentenceSelectionData.addElement("<P>Provides a set of "
+                + "&quot;lightweight&quot; (all-java<FONT SIZE=\"-2\"><SUP>TM"
+                + "</SUP></FONT> language) components that, "
+                + "to the maximum degree possible, work the same on all platforms.  ");
+        sentenceSelectionData.addElement("Another test.\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4143071
+     */
+    public void TestBug4143071() {
+        Vector sentenceSelectionData = new Vector();
+
+        // Make sure sentences that end with digits work right
+        sentenceSelectionData.addElement("Today is the 27th of May, 1998.  ");
+        sentenceSelectionData.addElement("Tomorrow will be 28 May 1998.  ");
+        sentenceSelectionData.addElement("The day after will be the 30th.\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4152416
+     */
+    public void TestBug4152416() {
+        Vector sentenceSelectionData = new Vector();
+
+        // Make sure sentences ending with a capital letter are treated correctly
+        sentenceSelectionData.addElement("The type of all primitive "
+                + "<code>boolean</code> values accessed in the target VM.  ");
+        sentenceSelectionData.addElement("Calls to xxx will return an "
+                + "implementor of this interface.\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4152117
+     */
+    public void TestBug4152117() {
+        Vector sentenceSelectionData = new Vector();
+
+        // Make sure sentence breaking is handling punctuation correctly
+        // [COULD NOT REPRODUCE THIS BUG, BUT TEST IS HERE TO MAKE SURE
+        // IT DOESN'T CROP UP]
+        sentenceSelectionData.addElement("Constructs a randomly generated "
+                + "BigInteger, uniformly distributed over the range <tt>0</tt> "
+                + "to <tt>(2<sup>numBits</sup> - 1)</tt>, inclusive.  ");
+        sentenceSelectionData.addElement("The uniformity of the distribution "
+                + "assumes that a fair source of random bits is provided in "
+                + "<tt>rnd</tt>.  ");
+        sentenceSelectionData.addElement("Note that this constructor always "
+                + "constructs a non-negative BigInteger.\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    public void TestLineBreak() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("Multi-");
+        lineSelectionData.addElement("Level ");
+        lineSelectionData.addElement("example ");
+        lineSelectionData.addElement("of ");
+        lineSelectionData.addElement("a ");
+        lineSelectionData.addElement("semi-");
+        lineSelectionData.addElement("idiotic ");
+        lineSelectionData.addElement("non-");
+        lineSelectionData.addElement("sensical ");
+        lineSelectionData.addElement("(non-");
+        lineSelectionData.addElement("important) ");
+        lineSelectionData.addElement("sentence. ");
+
+        lineSelectionData.addElement("Hi  ");
+        lineSelectionData.addElement("Hello ");
+        lineSelectionData.addElement("How\n");
+        lineSelectionData.addElement("are\r");
+        lineSelectionData.addElement("you\u2028");
+        lineSelectionData.addElement("fine.\t");
+        lineSelectionData.addElement("good.  ");
+
+        lineSelectionData.addElement("Now\r");
+        lineSelectionData.addElement("is\n");
+        lineSelectionData.addElement("the\r\n");
+        lineSelectionData.addElement("time\n");
+        lineSelectionData.addElement("\r");
+        lineSelectionData.addElement("for\r");
+        lineSelectionData.addElement("\r");
+        lineSelectionData.addElement("all");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4068133
+     */
+    public void TestBug4068133() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("\u96f6");
+        lineSelectionData.addElement("\u4e00\u3002");
+        lineSelectionData.addElement("\u4e8c\u3001");
+        lineSelectionData.addElement("\u4e09\u3002\u3001");
+        lineSelectionData.addElement("\u56db\u3001\u3002\u3001");
+        lineSelectionData.addElement("\u4e94,");
+        lineSelectionData.addElement("\u516d.");
+        lineSelectionData.addElement("\u4e03.\u3001,\u3002");
+        lineSelectionData.addElement("\u516b");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4086052
+     */
+    public void TestBug4086052() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("foo\u00a0bar ");
+//        lineSelectionData.addElement("foo\ufeffbar");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4097920
+     */
+    public void TestBug4097920() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("dog,");
+        lineSelectionData.addElement("cat,");
+        lineSelectionData.addElement("mouse ");
+        lineSelectionData.addElement("(one)");
+        lineSelectionData.addElement("(two)\n");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4035266
+     */
+    public void TestBug4035266() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("The ");
+        lineSelectionData.addElement("balance ");
+        lineSelectionData.addElement("is ");
+        lineSelectionData.addElement("$-23,456.78, ");
+        lineSelectionData.addElement("not ");
+        lineSelectionData.addElement("-$32,456.78!\n");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4098467
+     */
+    public void TestBug4098467Lines() {
+        Vector lineSelectionData = new Vector();
+
+        // What follows is a string of Korean characters (I found it in the Yellow Pages
+        // ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+        // it correctly), first as precomposed syllables, and then as conjoining jamo.
+        // Both sequences should be semantically identical and break the same way.
+        // precomposed syllables...
+        lineSelectionData.addElement("\uc0c1\ud56d ");
+        lineSelectionData.addElement("\ud55c\uc778 ");
+        lineSelectionData.addElement("\uc5f0\ud569 ");
+        lineSelectionData.addElement("\uc7a5\ub85c\uad50\ud68c ");
+        // conjoining jamo...
+        lineSelectionData.addElement("\u1109\u1161\u11bc\u1112\u1161\u11bc ");
+        lineSelectionData.addElement("\u1112\u1161\u11ab\u110b\u1175\u11ab ");
+        lineSelectionData.addElement("\u110b\u1167\u11ab\u1112\u1161\u11b8 ");
+        lineSelectionData.addElement("\u110c\u1161\u11bc\u1105\u1169\u1100\u116d\u1112\u116c");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    public void TestThaiLineBreak() {
+        Vector lineSelectionData = new Vector();
+
+        // \u0e2f-- the Thai paiyannoi character-- isn't a letter.  It's a symbol that
+        // represents elided letters at the end of a long word.  It should be bound to
+        // the end of the word and not treated as an independent punctuation mark.
+        lineSelectionData.addElement("\u0e2a\u0e16\u0e32\u0e19\u0e35\u0e2f");
+        lineSelectionData.addElement("\u0e08\u0e30");
+        lineSelectionData.addElement("\u0e23\u0e30\u0e14\u0e21");
+        lineSelectionData.addElement("\u0e40\u0e08\u0e49\u0e32");
+//        lineSelectionData.addElement("\u0e2b\u0e19\u0e49\u0e32");
+//        lineSelectionData.addElement("\u0e17\u0e35\u0e48");
+// I think the above two lines are the preferred reading of this text, but our current
+// dictionary yields the following:
+lineSelectionData.addElement("\u0e2b\u0e16\u0e49\u0e32\u0e17\u0e35\u0e48");
+        lineSelectionData.addElement("\u0e2d\u0e2d\u0e01");
+        lineSelectionData.addElement("\u0e21\u0e32");
+        lineSelectionData.addElement("\u0e40\u0e23\u0e48\u0e07");
+        lineSelectionData.addElement("\u0e23\u0e30\u0e1a\u0e32\u0e22");
+        lineSelectionData.addElement("\u0e2d\u0e22\u0e48\u0e32\u0e07");
+        lineSelectionData.addElement("\u0e40\u0e15\u0e47\u0e21");
+
+        // the one time where the paiyannoi occurs somewhere other than at the end
+        // of a word is in the Thai abbrevation for "etc.", which both begins and
+        // ends with a paiyannoi
+        lineSelectionData.addElement("\u0e2f\u0e25\u0e2f");
+        lineSelectionData.addElement("\u0e17\u0e35\u0e48");
+        lineSelectionData.addElement("\u0e19\u0e31\u0e49\u0e19");
+
+        generalIteratorTest(BreakIterator.getLineInstance(new Locale("th", "", "")),
+                lineSelectionData);
+    }
+
+    public void TestMixedThaiLineBreak() {
+        Vector lineSelectionData = new Vector();
+
+        // Arabic numerals should always be separated from surrounding Thai text
+/*
+        lineSelectionData.addElement("\u0e04\u0e48\u0e32");
+        lineSelectionData.addElement("\u0e40\u0e07\u0e34\u0e19");
+        lineSelectionData.addElement("\u0e1a\u0e32\u0e17");
+        lineSelectionData.addElement("\u0e41\u0e15\u0e30");
+        lineSelectionData.addElement("\u0e23\u0e30\u0e14\u0e31\u0e1a");
+        lineSelectionData.addElement("39");
+        lineSelectionData.addElement("\u0e1a\u0e32\u0e17 ");
+
+        // words in non-Thai scripts should always be separated from surrounding Thai text
+        lineSelectionData.addElement("\u0e17\u0e14");
+        lineSelectionData.addElement("\u0e2a\u0e2d\u0e1a");
+        lineSelectionData.addElement("Java");
+        lineSelectionData.addElement("\u0e1a\u0e19");
+        lineSelectionData.addElement("\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07");
+        lineSelectionData.addElement("\u0e44\u0e2d\u0e1a\u0e35\u0e40\u0e2d\u0e47\u0e21 ");
+
+        // Thai numerals should always be separated from the text surrounding them
+        lineSelectionData.addElement("\u0e04\u0e48\u0e32");
+        lineSelectionData.addElement("\u0e40\u0e07\u0e34\u0e19");
+        lineSelectionData.addElement("\u0e1a\u0e32\u0e17");
+        lineSelectionData.addElement("\u0e41\u0e15\u0e30");
+        lineSelectionData.addElement("\u0e23\u0e30\u0e14\u0e31\u0e1a");
+        lineSelectionData.addElement("\u0e53\u0e59");
+        lineSelectionData.addElement("\u0e1a\u0e32\u0e17 ");
+
+        // Thai text should interact correctly with punctuation and symbols
+        lineSelectionData.addElement("\u0e44\u0e2d\u0e1a\u0e35\u0e40\u0e2d\u0e47\u0e21");
+//        lineSelectionData.addElement("(\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28");
+//        lineSelectionData.addElement("\u0e44\u0e17\u0e22)");
+// I think the above lines represent the preferred reading for this text, but our current
+// dictionary file yields the following:
+lineSelectionData.addElement("(\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22)");
+        lineSelectionData.addElement("\u0e08\u0e33\u0e01\u0e31\u0e14");
+        lineSelectionData.addElement("\u0e40\u0e1b\u0e34\u0e14");
+        lineSelectionData.addElement("\u0e15\u0e31\u0e27\"");
+*/
+        lineSelectionData.addElement("\u0e2e\u0e32\u0e23\u0e4c\u0e14\u0e14\u0e34\u0e2a\u0e01\u0e4c\"");
+        lineSelectionData.addElement("\u0e23\u0e38\u0e48\u0e19");
+        lineSelectionData.addElement("\u0e43\u0e2b\u0e21\u0e48");
+        lineSelectionData.addElement("\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e21\u0e34.");
+        lineSelectionData.addElement("\u0e22.");
+        lineSelectionData.addElement("\u0e19\u0e35\u0e49");
+        lineSelectionData.addElement("\u0e23\u0e32\u0e04\u0e32");
+        lineSelectionData.addElement("$200");
+        lineSelectionData.addElement("\u0e40\u0e17\u0e48\u0e32");
+        lineSelectionData.addElement("\u0e19\u0e31\u0e49\u0e19 ");
+        lineSelectionData.addElement("(\"\u0e2e\u0e32\u0e23\u0e4c\u0e14\u0e14\u0e34\u0e2a\u0e01\u0e4c\").");
+
+        generalIteratorTest(BreakIterator.getLineInstance(new Locale("th", "", "")),
+                lineSelectionData);
+    }
+
+    public void TestMaiyamok() {
+        Vector lineSelectionData = new Vector();
+
+        // the Thai maiyamok character is a shorthand symbol that means "repeat the previous
+        // word".  Instead of appearing as a word unto itself, however, it's kept together
+        // with the word before it
+        lineSelectionData.addElement("\u0e44\u0e1b\u0e46");
+        lineSelectionData.addElement("\u0e21\u0e32\u0e46");
+        lineSelectionData.addElement("\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07");
+        lineSelectionData.addElement("\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e");
+        lineSelectionData.addElement("\u0e41\u0e25\u0e30");
+        lineSelectionData.addElement("\u0e40\u0e03\u0e35\u0e22\u0e07");
+        lineSelectionData.addElement("\u0e43\u0e2b\u0e21\u0e48");
+
+        generalIteratorTest(BreakIterator.getLineInstance(new Locale("th", "", "")),
+                lineSelectionData);
+    }
+
+    /**
+     * @bug 4117554
+     */
+    public void TestBug4117554Lines() {
+        Vector lineSelectionData = new Vector();
+
+        // Fullwidth .!? should be treated as postJwrd
+        lineSelectionData.addElement("\u4e01\uff0e");
+        lineSelectionData.addElement("\u4e02\uff01");
+        lineSelectionData.addElement("\u4e03\uff1f");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    public void TestLettersAndDigits() {
+        // a character sequence such as "X11" or "30F3" or "native2ascii" should
+        // be kept together as a single word
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("X11 ");
+        lineSelectionData.addElement("30F3 ");
+        lineSelectionData.addElement("native2ascii");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4217703
+     */
+    public void TestBug4217703() {
+        Vector lineSelectionData = new Vector();
+
+        // There shouldn't be a line break between sentence-ending punctuation
+        // and a closing quote
+        lineSelectionData.addElement("He ");
+        lineSelectionData.addElement("said ");
+        lineSelectionData.addElement("\"Go!\"  ");
+        lineSelectionData.addElement("I ");
+        lineSelectionData.addElement("went.  ");
+
+        lineSelectionData.addElement("Hashtable$Enumeration ");
+        lineSelectionData.addElement("getText().");
+        lineSelectionData.addElement("getIndex()");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    private static final String graveS = "S\u0300";
+    private static final String acuteBelowI = "i\u0317";
+    private static final String acuteE = "e\u0301";
+    private static final String circumflexA = "a\u0302";
+    private static final String tildeE = "e\u0303";
+
+    public void TestCharacterBreak() {
+        Vector characterSelectionData = new Vector();
+
+        characterSelectionData.addElement(graveS);
+        characterSelectionData.addElement(acuteBelowI);
+        characterSelectionData.addElement("m");
+        characterSelectionData.addElement("p");
+        characterSelectionData.addElement("l");
+        characterSelectionData.addElement(acuteE);
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("s");
+        characterSelectionData.addElement(circumflexA);
+        characterSelectionData.addElement("m");
+        characterSelectionData.addElement("p");
+        characterSelectionData.addElement("l");
+        characterSelectionData.addElement(tildeE);
+        characterSelectionData.addElement(".");
+        characterSelectionData.addElement("w");
+        characterSelectionData.addElement(circumflexA);
+        characterSelectionData.addElement("w");
+        characterSelectionData.addElement("a");
+        characterSelectionData.addElement("f");
+        characterSelectionData.addElement("q");
+        characterSelectionData.addElement("\n");
+        characterSelectionData.addElement("\r");
+        characterSelectionData.addElement("\r\n");
+        characterSelectionData.addElement("\n");
+
+        generalIteratorTest(characterBreak, characterSelectionData);
+    }
+
+    /**
+     * @bug 4098467
+     */
+    public void TestBug4098467Characters() {
+        Vector characterSelectionData = new Vector();
+
+        // What follows is a string of Korean characters (I found it in the Yellow Pages
+        // ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+        // it correctly), first as precomposed syllables, and then as conjoining jamo.
+        // Both sequences should be semantically identical and break the same way.
+        // precomposed syllables...
+        characterSelectionData.addElement("\uc0c1");
+        characterSelectionData.addElement("\ud56d");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\ud55c");
+        characterSelectionData.addElement("\uc778");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\uc5f0");
+        characterSelectionData.addElement("\ud569");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\uc7a5");
+        characterSelectionData.addElement("\ub85c");
+        characterSelectionData.addElement("\uad50");
+        characterSelectionData.addElement("\ud68c");
+        characterSelectionData.addElement(" ");
+        // conjoining jamo...
+        characterSelectionData.addElement("\u1109\u1161\u11bc");
+        characterSelectionData.addElement("\u1112\u1161\u11bc");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\u1112\u1161\u11ab");
+        characterSelectionData.addElement("\u110b\u1175\u11ab");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\u110b\u1167\u11ab");
+        characterSelectionData.addElement("\u1112\u1161\u11b8");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\u110c\u1161\u11bc");
+        characterSelectionData.addElement("\u1105\u1169");
+        characterSelectionData.addElement("\u1100\u116d");
+        characterSelectionData.addElement("\u1112\u116c");
+
+        generalIteratorTest(characterBreak, characterSelectionData);
+    }
+
+    public void TestTitleBreak()
+    {
+        Vector titleData = new Vector();
+        titleData.addElement("   ");
+        titleData.addElement("This ");
+        titleData.addElement("is ");
+        titleData.addElement("a ");
+        titleData.addElement("simple ");
+        titleData.addElement("sample ");
+        titleData.addElement("sentence. ");
+        titleData.addElement("This ");
+
+        generalIteratorTest(titleBreak, titleData);
+    }
+
+
+
+    /*
+     * @bug 4153072
+     */
+    public void TestBug4153072() {
+        BreakIterator iter = BreakIterator.getWordInstance();
+        String str = "...Hello, World!...";
+        int begin = 3;
+        int end = str.length() - 3;
+        // not used boolean gotException = false;
+        boolean dummy;
+
+        iter.setText(new StringCharacterIterator(str, begin, end, begin));
+        for (int index = -1; index < begin + 1; ++index) {
+            try {
+                dummy = iter.isBoundary(index);
+                if (index < begin)
+                    errln("Didn't get exception with offset = " + index +
+                                    " and begin index = " + begin);
+            }
+            catch (IllegalArgumentException e) {
+                if (index >= begin)
+                    errln("Got exception with offset = " + index +
+                                    " and begin index = " + begin);
+            }
+        }
+    }
+
+    public void TestBug4146175Sentences() {
+        Vector sentenceSelectionData = new Vector();
+
+        // break between periods and opening punctuation even when there's no
+        // intervening space
+        sentenceSelectionData.addElement("end.");
+        sentenceSelectionData.addElement("(This is\u2029");
+
+        // treat the fullwidth period as an unambiguous sentence terminator
+        sentenceSelectionData.addElement("\u7d42\u308f\u308a\uff0e");
+        sentenceSelectionData.addElement("\u300c\u3053\u308c\u306f");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    public void TestBug4146175Lines() {
+        Vector lineSelectionData = new Vector();
+
+        // the fullwidth comma should stick to the preceding Japanese character
+        lineSelectionData.addElement("\u7d42\uff0c");
+        lineSelectionData.addElement("\u308f");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    public void TestBug4214367() {
+        Vector wordSelectionData = new Vector();
+
+        // the hiragana and katakana iteration marks and the long vowel mark
+        // are not being treated correctly by the word-break iterator
+        wordSelectionData.addElement("\u3042\u3044\u309d\u3042\u309e\u3042\u30fc\u3042");
+        wordSelectionData.addElement("\u30a2\u30a4\u30fd\u30a2\u30fe\u30a2\u30fc\u30a2");
+
+        generalIteratorTest(wordBreak, wordSelectionData);
+    }
+
+    private static final String cannedTestChars
+        = "\u0000\u0001\u0002\u0003\u0004 !\"#$%&()+-01234<=>ABCDE[]^_`abcde{}|\u00a0\u00a2"
+        + "\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00ab\u00ad\u00ae\u00af\u00b0\u00b2\u00b3"
+        + "\u00b4\u00b9\u00bb\u00bc\u00bd\u02b0\u02b1\u02b2\u02b3\u02b4\u0300\u0301\u0302\u0303"
+        + "\u0304\u05d0\u05d1\u05d2\u05d3\u05d4\u0903\u093e\u093f\u0940\u0949\u0f3a\u0f3b\u2000"
+        + "\u2001\u2002\u200c\u200d\u200e\u200f\u2010\u2011\u2012\u2028\u2029\u202a\u203e\u203f"
+        + "\u2040\u20dd\u20de\u20df\u20e0\u2160\u2161\u2162\u2163\u2164";
+
+    public void TestSentenceInvariants()
+    {
+        BreakIterator e = BreakIterator.getSentenceInstance();
+        doOtherInvariantTest(e, cannedTestChars + ".,\u3001\u3002\u3041\u3042\u3043\ufeff");
+    }
+
+    public void TestWordInvariants()
+    {
+        BreakIterator e = BreakIterator.getWordInstance();
+        doBreakInvariantTest(e, cannedTestChars + "\',.\u3041\u3042\u3043\u309b\u309c\u30a1\u30a2"
+            + "\u30a3\u4e00\u4e01\u4e02");
+        doOtherInvariantTest(e, cannedTestChars + "\',.\u3041\u3042\u3043\u309b\u309c\u30a1\u30a2"
+            + "\u30a3\u4e00\u4e01\u4e02");
+    }
+
+    public void TestLineInvariants()
+    {
+        BreakIterator e = BreakIterator.getLineInstance();
+        String testChars = cannedTestChars + ".,;:\u3001\u3002\u3041\u3042\u3043\u3044\u3045"
+            + "\u30a3\u4e00\u4e01\u4e02";
+        doBreakInvariantTest(e, testChars);
+        doOtherInvariantTest(e, testChars);
+
+        int errorCount = 0;
+
+        // in addition to the other invariants, a line-break iterator should make sure that:
+        // it doesn't break around the non-breaking characters
+        String noBreak = "\u00a0\u2007\u2011\ufeff";
+        StringBuffer work = new StringBuffer("aaa");
+        for (int i = 0; i < testChars.length(); i++) {
+            char c = testChars.charAt(i);
+            if (c == '\r' || c == '\n' || c == '\u2029' || c == '\u2028' || c == '\u0003')
+                continue;
+            work.setCharAt(0, c);
+            for (int j = 0; j < noBreak.length(); j++) {
+                work.setCharAt(1, noBreak.charAt(j));
+                for (int k = 0; k < testChars.length(); k++) {
+                    work.setCharAt(2, testChars.charAt(k));
+                    e.setText(work.toString());
+                    for (int l = e.first(); l != BreakIterator.DONE; l = e.next())
+                        if (l == 1 || l == 2) {
+                            errln("Got break between U+" + Integer.toHexString((int)
+                                    (work.charAt(l - 1))) + " and U+" + Integer.toHexString(
+                                    (int)(work.charAt(l))));
+                            errorCount++;
+                            if (errorCount >= 75)
+                                return;
+                        }
+                }
+            }
+        }
+
+        // it does break after dashes (unless they're followed by a digit, a non-spacing mark,
+        // a currency symbol, a space, a format-control character, a regular control character,
+        // a line or paragraph separator, or another dash)
+        String dashes = "-\u00ad\u2010\u2012\u2013\u2014";
+        for (int i = 0; i < testChars.length(); i++) {
+            work.setCharAt(0, testChars.charAt(i));
+            for (int j = 0; j < dashes.length(); j++) {
+                work.setCharAt(1, dashes.charAt(j));
+                for (int k = 0; k < testChars.length(); k++) {
+                    char c = testChars.charAt(k);
+                    if (Character.getType(c) == Character.DECIMAL_DIGIT_NUMBER ||
+                        Character.getType(c) == Character.OTHER_NUMBER ||
+                        Character.getType(c) == Character.NON_SPACING_MARK ||
+                        Character.getType(c) == Character.ENCLOSING_MARK ||
+                        Character.getType(c) == Character.CURRENCY_SYMBOL ||
+                        Character.getType(c) == Character.DASH_PUNCTUATION ||
+                        Character.getType(c) == Character.SPACE_SEPARATOR ||
+                        Character.getType(c) == Character.FORMAT ||
+                        Character.getType(c) == Character.CONTROL ||
+                        c == '\n' || c == '\r' || c == '\u2028' || c == '\u2029' ||
+                        c == '\u0003' || c == '\u2007' || c == '\u2011' ||
+                        c == '\ufeff')
+                        continue;
+                    work.setCharAt(2, c);
+                    e.setText(work.toString());
+                    boolean saw2 = false;
+                    for (int l = e.first(); l != BreakIterator.DONE; l = e.next())
+                        if (l == 2)
+                            saw2 = true;
+                    if (!saw2) {
+                        errln("Didn't get break between U+" + Integer.toHexString((int)
+                                    (work.charAt(1))) + " and U+" + Integer.toHexString(
+                                    (int)(work.charAt(2))));
+                        errorCount++;
+                        if (errorCount >= 75)
+                            return;
+                    }
+                }
+            }
+        }
+    }
+
+    public void TestCharacterInvariants()
+    {
+        BreakIterator e = BreakIterator.getCharacterInstance();
+        doBreakInvariantTest(e, cannedTestChars + "\u1100\u1101\u1102\u1160\u1161\u1162\u11a8"
+            + "\u11a9\u11aa");
+        doOtherInvariantTest(e, cannedTestChars + "\u1100\u1101\u1102\u1160\u1161\u1162\u11a8"
+            + "\u11a9\u11aa");
+    }
+
+    public void TestEmptyString()
+    {
+        String text = "";
+        Vector x = new Vector();
+        x.addElement(text);
+
+        generalIteratorTest(lineBreak, x);
+    }
+
+    public void TestGetAvailableLocales()
+    {
+        Locale[] locList = BreakIterator.getAvailableLocales();
+
+        if (locList.length == 0)
+            errln("getAvailableLocales() returned an empty list!");
+        // I have no idea how to test this function...
+    }
+
+    /**
+     * @bug 4095322
+     */
+    public void TestJapaneseLineBreak()
+    {
+        StringBuffer testString = new StringBuffer("\u4e00x\u4e8c");
+        String precedingChars = "([{\u00ab$\u00a5\u00a3\u00a4\u2018\u201a\u201c\u201e\u201b\u201f";
+        String followingChars = ")]}\u00bb!%,.\u3001\u3002\u3063\u3083\u3085\u3087\u30c3\u30e3\u30e5\u30e7\u30fc:;\u309b\u309c\u3005\u309d\u309e\u30fd\u30fe\u2019\u201d\u00b0\u2032\u2033\u2034\u2030\u2031\u2103\u2109\u00a2\u0300\u0301\u0302";
+        BreakIterator iter = BreakIterator.getLineInstance(Locale.JAPAN);
+
+        for (int i = 0; i < precedingChars.length(); i++) {
+            testString.setCharAt(1, precedingChars.charAt(i));
+            iter.setText(testString.toString());
+            int j = iter.first();
+            if (j != 0)
+                errln("ja line break failure: failed to start at 0");
+            j = iter.next();
+            if (j != 1)
+                errln("ja line break failure: failed to stop before '" + precedingChars.charAt(i)
+                            + "' (" + ((int)(precedingChars.charAt(i))) + ")");
+            j = iter.next();
+            if (j != 3)
+                errln("ja line break failure: failed to skip position after '" + precedingChars.charAt(i)
+                            + "' (" + ((int)(precedingChars.charAt(i))) + ")");
+        }
+
+        for (int i = 0; i < followingChars.length(); i++) {
+            testString.setCharAt(1, followingChars.charAt(i));
+            iter.setText(testString.toString());
+            int j = iter.first();
+            if (j != 0)
+                errln("ja line break failure: failed to start at 0");
+            j = iter.next();
+            if (j != 2)
+                errln("ja line break failure: failed to skip position before '" + followingChars.charAt(i)
+                            + "' (" + ((int)(followingChars.charAt(i))) + ")");
+            j = iter.next();
+            if (j != 3)
+                errln("ja line break failure: failed to stop after '" + followingChars.charAt(i)
+                            + "' (" + ((int)(followingChars.charAt(i))) + ")");
+        }
+    }
+
+    /**
+     * @bug 4068137
+     */
+    public void TestEndBehavior()
+    {
+        String testString = "boo.";
+        BreakIterator wb = BreakIterator.getWordInstance();
+        wb.setText(testString);
+
+        if (wb.first() != 0)
+            errln("Didn't get break at beginning of string.");
+        if (wb.next() != 3)
+            errln("Didn't get break before period in \"boo.\"");
+        if (wb.current() != 4 && wb.next() != 4)
+            errln("Didn't get break at end of string.");
+    }
+
+    // The Following two tests are ported from ICU4C 1.8.1 [Richard/GCL]
+    /**
+     * Port From:   ICU4C v1.8.1 : textbounds : IntlTestTextBoundary
+     * Source File: $ICU4CRoot/source/test/intltest/ittxtbd.cpp
+     **/
+    /**
+     * test methods preceding, following and isBoundary
+     **/
+    public void TestPreceding() {
+        String words3 = "aaa bbb ccc";
+        BreakIterator e = BreakIterator.getWordInstance(Locale.getDefault());
+        e.setText( words3 );
+        e.first();
+        int p1 = e.next();
+        int p2 = e.next();
+        int p3 = e.next();
+        int p4 = e.next();
+
+        int f = e.following(p2+1);
+        int p = e.preceding(p2+1);
+        if (f!=p3)
+            errln("IntlTestTextBoundary::TestPreceding: f!=p3");
+        if (p!=p2)
+            errln("IntlTestTextBoundary::TestPreceding: p!=p2");
+
+        if (p1+1!=p2)
+            errln("IntlTestTextBoundary::TestPreceding: p1+1!=p2");
+
+        if (p3+1!=p4)
+            errln("IntlTestTextBoundary::TestPreceding: p3+1!=p4");
+
+        if (!e.isBoundary(p2) || e.isBoundary(p2+1) || !e.isBoundary(p3))
+        {
+            errln("IntlTestTextBoundary::TestPreceding: isBoundary err");
+        }
+    }
+
+    /**
+     * Test Thai word break using generalIteratorTest()
+     **/
+    public void TestThaiWordBreak() {
+        Vector thaiWordSelection = new Vector();
+
+        thaiWordSelection.addElement("\u0E1A\u0E17"); //2
+        thaiWordSelection.addElement("\u0E17\u0E35\u0E48"); //5
+        thaiWordSelection.addElement("\u0E51"); //6
+        thaiWordSelection.addElement("\u0E1E\u0E32\u0E22\u0E38"); //10
+        thaiWordSelection.addElement("\u0E44\u0E0B\u0E42\u0E04\u0E25\u0E19"); //16
+        thaiWordSelection.addElement("\r\n"); //18
+
+        // This is the correct result
+        //thaiWordSelection.addElement(("\u0E42\u0E14\u0E42\u0E23\u0E18\u0E35")); //24
+        //thaiWordSelection.addElement(("\u0E2D\u0E32\u0E28\u0E31\u0E22")); //29
+
+        // and this is what the dictionary does...
+        thaiWordSelection.addElement("\u0E42\u0E14"); // 20
+        thaiWordSelection.addElement("\u0E42\u0E23\u0E18\u0E35\u0E2D\u0E32\u0E28\u0E31\u0E22"); //29
+
+        thaiWordSelection.addElement("\u0E2D\u0E22\u0E39\u0E48"); //33
+
+        // This is the correct result
+        //thaiWordSelection.addElement("\u0E17\u0E48\u0E32\u0E21"); //37
+        //thaiWordSelection.addElement("\u0E01\u0E25\u0E32\u0E07"); //41
+
+        // and this is what the dictionary does
+        thaiWordSelection.addElement("\u0E17\u0E48\u0E32\u0E21\u0E01\u0E25\u0E32\u0E07"); //41
+
+        thaiWordSelection.addElement("\u0E17\u0E38\u0E48\u0E07"); //45
+        thaiWordSelection.addElement("\u0E43\u0E2B\u0E0D\u0E48"); //49
+        thaiWordSelection.addElement("\u0E43\u0E19"); //51
+
+        // This is the correct result
+        //thaiWordSelection.addElement("\u0E41\u0E04\u0E19\u0E0B\u0E31\u0E2A"); //57
+        //thaiWordSelection.addElement("\u0E01\u0E31\u0E1A"); //60
+
+        // and this is what the dictionary does
+        thaiWordSelection.addElement("\u0E41\u0E04\u0E19"); // 54
+        thaiWordSelection.addElement("\u0E0B\u0E31\u0E2A\u0E01\u0E31\u0E1A"); //60
+
+        thaiWordSelection.addElement("\u0E25\u0E38\u0E07"); //63
+
+        // This is the correct result
+        //thaiWordSelection.addElement("\u0E40\u0E2E\u0E19\u0E23\u0E35"); //68
+        //thaiWordSelection.addElement("\u0E0A\u0E32\u0E27"); //71
+        //thaiWordSelection.addElement("\u0E44\u0E23\u0E48"); //74
+        //thaiWordSelection.addElement("\u0E41\u0E25\u0E30"); //77
+
+        // and this is what the dictionary does
+        thaiWordSelection.addElement("\u0E40\u0E2E"); // 65
+        thaiWordSelection.addElement("\u0E19\u0E23\u0E35\u0E0A\u0E32\u0E27\u0E44\u0E23\u0E48\u0E41\u0E25\u0E30"); //77
+
+        BreakIterator e = BreakIterator.getWordInstance(new Locale("th","",""));
+
+        generalIteratorTest(e, thaiWordSelection);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java b/src/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java
new file mode 100755
index 0000000..d58ae82
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java
@@ -0,0 +1,460 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java,v $ 
+ * $Date: 2002/02/16 03:05:15 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : rbbi : RBBIAPITest
+ * Source File: $ICU4CRoot/source/test/intltest/rbbiapts.cpp
+ **/
+
+package com.ibm.icu.dev.test.rbbi;
+
+import com.ibm.icu.text.RuleBasedBreakIterator;
+import java.util.Locale;
+import java.util.Vector;
+import java.io.*;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+
+/**
+ * API Test the RuleBasedBreakIterator class
+ */
+public class RBBIAPITest extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args) throws Exception {
+        new RBBIAPITest().run(args);
+    }
+    
+    /**
+     * Tests clone() and equals() methods of RuleBasedBreakIterator         
+     **/
+    public void TestCloneEquals() {
+        RuleBasedBreakIterator bi1 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator biequal = (RuleBasedBreakIterator) RuleBasedBreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator bi3 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator bi2 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getWordInstance(Locale.getDefault()); 
+
+        String testString = "Testing word break iterators's clone() and equals()";
+        bi1.setText(testString);
+        bi2.setText(testString);
+        biequal.setText(testString);
+        
+        bi3.setText("hello");
+        logln("Testing equals()");
+        logln("Testing == and !=");
+        if (!bi1.equals(biequal) || bi1.equals(bi2) || bi1.equals(bi3))
+            errln("ERROR:1 RBBI's == and !- operator failed.");
+        if (bi2.equals(biequal) || bi2.equals(bi1) || biequal.equals(bi3))
+            errln("ERROR:2 RBBI's == and != operator  failed.");
+        logln("Testing clone()");
+        RuleBasedBreakIterator bi1clone = (RuleBasedBreakIterator) bi1.clone();
+        RuleBasedBreakIterator bi2clone = (RuleBasedBreakIterator) bi2.clone();
+        if (!bi1clone.equals(bi1)
+            || !bi1clone.equals(biequal)
+            || bi1clone.equals(bi3)
+            || bi1clone.equals(bi2))
+            errln("ERROR:1 RBBI's clone() method failed");
+
+        if (bi2clone.equals(bi1)
+            || bi2clone.equals(biequal)
+            || bi2clone.equals(bi3)
+            || !bi2clone.equals(bi2))
+            errln("ERROR:2 RBBI's clone() method failed");
+
+        if (!bi1.getText().equals(bi1clone.getText())
+            || !bi2clone.getText().equals(bi2.getText())
+            || bi2clone.equals(bi1clone))
+            errln("ERROR: RBBI's clone() method failed");
+    }
+    
+    /**
+     * Tests toString() method of RuleBasedBreakIterator
+     **/
+    public void TestToString() {
+        RuleBasedBreakIterator bi1 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator bi2 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getWordInstance(Locale.getDefault());
+        logln("Testing toString()");
+        bi1.setText("Hello there");
+        RuleBasedBreakIterator bi3 = (RuleBasedBreakIterator) bi1.clone();
+        String temp = bi1.toString();
+        String temp2 = bi2.toString();
+        String temp3 = bi3.toString();
+        if (temp2.equals(temp3) || temp.equals(temp2) || !temp.equals(temp3))
+            errln("ERROR: error in toString() method");
+    }
+    
+    /**
+     * Tests the method hashCode() of RuleBasedBreakIterator
+     **/
+    public void TestHashCode() {
+        RuleBasedBreakIterator bi1 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator bi3 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator bi2 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getWordInstance(Locale.getDefault());
+        logln("Testing hashCode()");
+        bi1.setText("Hash code");
+        bi2.setText("Hash code");
+        bi3.setText("Hash code");
+        RuleBasedBreakIterator bi1clone = (RuleBasedBreakIterator) bi1.clone();
+        RuleBasedBreakIterator bi2clone = (RuleBasedBreakIterator) bi2.clone();
+        if (bi1.hashCode() != bi1clone.hashCode()
+            || bi1.hashCode() != bi3.hashCode()
+            || bi1clone.hashCode() != bi3.hashCode()
+            || bi2.hashCode() != bi2clone.hashCode())
+            errln("ERROR: identical objects have different hashcodes");
+        
+        if (bi1.hashCode() == bi2.hashCode()
+            || bi2.hashCode() == bi3.hashCode()
+            || bi1clone.hashCode() == bi2clone.hashCode()
+            || bi1clone.hashCode() == bi2.hashCode())
+            errln("ERROR: different objects have same hashcodes");
+    }
+    
+    /**
+      * Tests the methods getText() and setText() of RuleBasedBreakIterator
+      **/
+    public void TestGetSetText() {
+        logln("Testing getText setText ");
+        String str1 = "first string.";
+        String str2 = "Second string.";
+        //RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator wordIter1 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getWordInstance(Locale.getDefault()); 
+        CharacterIterator text1 = new StringCharacterIterator(str1);
+        //CharacterIterator text1Clone = (CharacterIterator) text1.clone();
+        //CharacterIterator text2 = new StringCharacterIterator(str2);
+        wordIter1.setText(str1);
+        if (!wordIter1.getText().equals(text1))
+            errln("ERROR:1 error in setText or getText ");
+        if (wordIter1.current() != 0)
+            errln("ERROR:1 setText did not set the iteration position to the beginning of the text, it is"
+                   + wordIter1.current() + "\n"); 
+        wordIter1.next(2);
+        wordIter1.setText(str2);
+        if (wordIter1.current() != 0)
+            errln("ERROR:2 setText did not reset the iteration position to the beginning of the text, it is"
+                    + wordIter1.current() + "\n"); 
+        //ICU4J has remove the method adoptText
+        /*
+        charIter1.adoptText(text1Clone);
+        if (wordIter1.getText() == charIter1.getText()
+            || wordIter1.getText() != text2
+            || charIter1.getText() != text1)
+            errln((UnicodeString) "ERROR:2 error is getText or setText()");
+        
+        RuleBasedBreakIterator rb = (RuleBasedBreakIterator) wordIter1.clone();
+        rb.adoptText(text1);
+        if (rb.getText() != text1)
+            errln((UnicodeString) "ERROR:1 error in adoptText ");
+        rb.adoptText(text2);
+        if (rb.getText() != text2)
+            errln((UnicodeString) "ERROR:2 error in adoptText ");
+        */
+    }
+    
+    /**
+      * Testing the methods first(), next(), next(int) and following() of RuleBasedBreakIterator
+      **/
+    public void TestFirstNextFollowing() {
+        int p, q;
+        String testString = "This is a word break. Isn't it? 2.25";
+        logln("Testing first() and next(), following() with custom rules");
+        logln("testing word iterator - string :- \"" + testString + "\"\n");
+        RuleBasedBreakIterator wordIter1 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getWordInstance(Locale.getDefault());
+        wordIter1.setText(testString);
+        p = wordIter1.first();
+        if (p != 0)
+            errln("ERROR: first() returned" + p + "instead of 0");
+        q = wordIter1.next(9);
+        doTest(testString, p, q, 20, "This is a word break");
+        p = q;
+        q = wordIter1.next();
+        doTest(testString, p, q, 21, ".");
+        p = q;
+        q = wordIter1.next(3);
+        doTest(testString, p, q, 28, " Isn't ");
+        p = q;
+        q = wordIter1.next(2);
+        doTest(testString, p, q, 31, "it?");
+        q = wordIter1.following(2);
+        doTest(testString, 2, q, 4, "is");
+        q = wordIter1.following(22);
+        doTest(testString, 22, q, 27, "Isn't");
+        wordIter1.last();
+        p = wordIter1.next();
+        q = wordIter1.following(wordIter1.last());
+        if (p != RuleBasedBreakIterator.DONE || q != RuleBasedBreakIterator.DONE)
+            errln("ERROR: next()/following() at last position returned #"
+                    + p + " and " + q + " instead of" + testString.length() + "\n"); 
+        RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getCharacterInstance(Locale.getDefault()); 
+        testString = "Write hindi here. \u092d\u093e\u0930\u0924 \u0938\u0941\u0902\u0926\u0930 \u0939\u094c\u0964"; 
+        logln("testing char iter - string:- \"" + testString + "\"");
+        charIter1.setText(testString);
+        p = charIter1.first();
+        if (p != 0)
+            errln("ERROR: first() returned" + p + "instead of 0");
+        q = charIter1.next();
+        doTest(testString, p, q, 1, "W");
+        p = q;
+        q = charIter1.next(4);
+        doTest(testString, p, q, 5, "rite");
+        p = q;
+        q = charIter1.next(12);
+        doTest(testString, p, q, 17, " hindi here.");
+        p = q;
+        q = charIter1.next(-6);
+        doTest(testString, p, q, 11, " here.");
+        p = q;
+        q = charIter1.next(6);
+        doTest(testString, p, q, 17, " here.");
+        // hindi starts here
+        p = q;
+        q = charIter1.next(4);
+        doTest(testString, p, q, 22, " \u092d\u093e\u0930\u0924");
+        p = q;
+        q = charIter1.next(2);
+        doTest(testString, p, q, 26, " \u0938\u0941\u0902");
+
+        q = charIter1.following(24);
+        doTest(testString, 24, q, 26, "\u0941\u0902");
+        q = charIter1.following(20);
+        doTest(testString, 20, q, 21, "\u0930");
+        p = charIter1.following(charIter1.last());
+        q = charIter1.next(charIter1.last());
+        if (p != RuleBasedBreakIterator.DONE || q != RuleBasedBreakIterator.DONE)
+            errln("ERROR: following()/next() at last position returned #"
+                    + p + " and " + q + " instead of" + testString.length()); 
+        testString = "Hello! how are you? I'am fine. Thankyou. How are you doing? This\n costs $20,00,000."; 
+        RuleBasedBreakIterator sentIter1 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getSentenceInstance(Locale.getDefault()); 
+        logln("testing sentence iter - String:- \"" + testString + "\"");
+        sentIter1.setText(testString);
+        p = sentIter1.first();
+        if (p != 0)
+            errln("ERROR: first() returned" + p + "instead of 0");
+        q = sentIter1.next();
+        doTest(testString, p, q, 7, "Hello! ");
+        p = q;
+        q = sentIter1.next(2);
+        doTest(testString, p, q, 31, "how are you? I'am fine. ");
+        p = q;
+        q = sentIter1.next(-2);
+        doTest(testString, p, q, 7, "how are you? I'am fine. ");
+        p = q;
+        q = sentIter1.next(4);
+        doTest(testString, p, q, 60, "how are you? I'am fine. Thankyou. How are you doing? ");
+        p = q;
+        q = sentIter1.next();
+        doTest(testString, p, q, 83, "This\n costs $20,00,000.");
+        q = sentIter1.following(1);
+        doTest(testString, 1, q, 7, "ello! ");
+        q = sentIter1.following(10);
+        doTest(testString, 10, q, 20, " are you? ");
+        q = sentIter1.following(20);
+        doTest(testString, 20, q, 31, "I'am fine. ");
+        p = sentIter1.following(sentIter1.last());
+        q = sentIter1.next(sentIter1.last());
+        if (p != RuleBasedBreakIterator.DONE || q != RuleBasedBreakIterator.DONE)
+            errln("ERROR: following()/next() at last position returned #"
+                    + p + " and " + q + " instead of" + testString.length()); 
+        testString = "Hello! how\r\n (are)\r you? I'am fine- Thankyou. foo\u00a0bar How, are, you? This, costs $20,00,000."; 
+        logln("(UnicodeString)testing line iter - String:- \"" + testString + "\"");
+        RuleBasedBreakIterator lineIter1 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getLineInstance(Locale.getDefault()); 
+        lineIter1.setText(testString);
+        p = lineIter1.first();
+        if (p != 0)
+            errln("ERROR: first() returned" + p + "instead of 0");
+        q = lineIter1.next();
+        doTest(testString, p, q, 7, "Hello! ");
+        p = q;
+        p = q;
+        q = lineIter1.next(4);
+        doTest(testString, p, q, 20, "how\r\n (are)\r ");
+        p = q;
+        q = lineIter1.next(-4);
+        doTest(testString, p, q, 7, "how\r\n (are)\r ");
+        p = q;
+        q = lineIter1.next(6);
+        doTest(testString, p, q, 30, "how\r\n (are)\r you? I'am ");
+        p = q;
+        q = lineIter1.next();
+        doTest(testString, p, q, 36, "fine- ");
+        p = q;
+        q = lineIter1.next(2);
+        doTest(testString, p, q, 54, "Thankyou. foo\u00a0bar ");
+        q = lineIter1.following(60);
+        doTest(testString, 60, q, 64, "re, ");
+        q = lineIter1.following(1);
+        doTest(testString, 1, q, 7, "ello! ");
+        q = lineIter1.following(10);
+        doTest(testString, 10, q, 12, "\r\n");
+        q = lineIter1.following(20);
+        doTest(testString, 20, q, 25, "you? ");
+        p = lineIter1.following(lineIter1.last());
+        q = lineIter1.next(lineIter1.last());
+        if (p != RuleBasedBreakIterator.DONE || q != RuleBasedBreakIterator.DONE)
+            errln("ERROR: following()/next() at last position returned #"
+                    + p + " and " + q + " instead of" + testString.length()); 
+    }
+    
+    /**
+     * Testing the methods lastt(), previous(), and preceding() of RuleBasedBreakIterator
+     **/
+    public void TestLastPreviousPreceding() {
+        int p, q;
+        String testString = "This is a word break. Isn't it? 2.25 dollars";
+        logln("Testing last(),previous(), preceding() with custom rules");
+        logln("testing word iteration for string \"" + testString + "\"");
+        RuleBasedBreakIterator wordIter1 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getWordInstance(Locale.getDefault()); 
+        wordIter1.setText(testString);
+        p = wordIter1.last();
+        if (p != testString.length()) {
+            errln("ERROR: first() returned" + p + "instead of" + testString.length());
+        }
+        q = wordIter1.previous();
+        doTest(testString, p, q, 37, "dollars");
+        p = q;
+        q = wordIter1.previous();
+        doTest(testString, p, q, 36, " ");
+        q = wordIter1.preceding(25);
+        doTest(testString, 25, q, 22, "Isn");
+        p = q;
+        q = wordIter1.previous();
+        doTest(testString, p, q, 21, " ");
+        q = wordIter1.preceding(20);
+        doTest(testString, 20, q, 15, "break");
+        p = wordIter1.preceding(wordIter1.first());
+        if (p != RuleBasedBreakIterator.DONE)
+            errln("ERROR: preceding()  at starting position returned #" + p + " instead of 0");
+        testString = "Write hindi here. \u092d\u093e\u0930\u0924 \u0938\u0941\u0902\u0926\u0930 \u0939\u094c\u0964"; 
+        logln("testing character iteration for string \" " + testString + "\" \n");
+        RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getCharacterInstance(Locale.getDefault());
+        charIter1.setText(testString);
+        p = charIter1.last();
+        if (p != testString.length())
+            errln("ERROR: first() returned" + p + "instead of" + testString.length());
+        q = charIter1.previous();
+        doTest(testString, p, q, 31, "\u0964");
+        p = q;
+        q = charIter1.previous();
+        doTest(testString, p, q, 29, "\u0939\u094c");
+        q = charIter1.preceding(26);
+        doTest(testString, 26, q, 23, "\u0938\u0941\u0902");
+        q = charIter1.preceding(16);
+        doTest(testString, 16, q, 15, "e");
+        p = q;
+        q = charIter1.previous();
+        doTest(testString, p, q, 14, "r");
+        charIter1.first();
+        p = charIter1.previous();
+        q = charIter1.preceding(charIter1.first());
+        if (p != RuleBasedBreakIterator.DONE || q != RuleBasedBreakIterator.DONE)
+            errln("ERROR: previous()/preceding() at starting position returned #"
+                    + p + " and " + q + " instead of 0\n"); 
+        testString = "Hello! how are you? I'am fine. Thankyou. How are you doing? This\n costs $20,00,000."; 
+        logln("testing sentence iter - String:- \"" + testString + "\"");
+        RuleBasedBreakIterator sentIter1 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getSentenceInstance(Locale.getDefault()); 
+        sentIter1.setText(testString);
+        p = sentIter1.last();
+        if (p != testString.length())
+            errln("ERROR: last() returned" + p + "instead of " + testString.length());
+        q = sentIter1.previous();
+        doTest(testString, p, q, 60, "This\n costs $20,00,000.");
+        p = q;
+        q = sentIter1.previous();
+        doTest(testString, p, q, 41, "How are you doing? ");
+        q = sentIter1.preceding(40);
+        doTest(testString, 40, q, 31, "Thankyou.");
+        q = sentIter1.preceding(25);
+        doTest(testString, 25, q, 20, "I'am ");
+        sentIter1.first();
+        p = sentIter1.previous();
+        q = sentIter1.preceding(sentIter1.first());
+        if (p != RuleBasedBreakIterator.DONE || q != RuleBasedBreakIterator.DONE)
+            errln("ERROR: previous()/preceding() at starting position returned #"
+                    + p + " and " + q + " instead of 0\n"); 
+        testString = "Hello! how are you? I'am fine. Thankyou. How are you doing? This\n costs $20,00,000."; 
+        logln("testing line iter - String:- \"" + testString + "\"");
+        RuleBasedBreakIterator lineIter1 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getLineInstance(Locale.getDefault());
+        lineIter1.setText(testString);
+        p = lineIter1.last();
+        if (p != testString.length())
+            errln("ERROR: last() returned" + p + "instead of " + testString.length());
+        q = lineIter1.previous();
+        doTest(testString, p, q, 72, "$20,00,000.");
+        p = q;
+        q = lineIter1.previous();
+        doTest(testString, p, q, 66, "costs ");
+        q = lineIter1.preceding(40);
+        doTest(testString, 40, q, 31, "Thankyou.");
+        q = lineIter1.preceding(25);
+        doTest(testString, 25, q, 20, "I'am ");
+        lineIter1.first();
+        p = lineIter1.previous();
+        q = lineIter1.preceding(sentIter1.first());
+        if (p != RuleBasedBreakIterator.DONE || q != RuleBasedBreakIterator.DONE)
+            errln("ERROR: previous()/preceding() at starting position returned #"
+                    + p + " and " + q + " instead of 0\n");
+    }
+    
+    /**
+     * Tests the method IsBoundary() of RuleBasedBreakIterator
+     **/
+    public void TestIsBoundary() {
+        String testString1 = "Write here. \u092d\u093e\u0930\u0924 \u0938\u0941\u0902\u0926\u0930 \u0939\u094c\u0964";
+        RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getCharacterInstance(Locale.getDefault());
+        charIter1.setText(testString1);
+        int bounds1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 20, 21, 22, 23, 25, 26};
+        doBoundaryTest(charIter1, testString1, bounds1);
+        RuleBasedBreakIterator wordIter2 = (RuleBasedBreakIterator) RuleBasedBreakIterator.getWordInstance(Locale.getDefault());
+        wordIter2.setText(testString1);
+        int bounds2[] = {0, 5, 6, 10, 11, 12, 16, 17, 22, 23, 26};
+        doBoundaryTest(wordIter2, testString1, bounds2);
+    }
+    
+    //---------------------------------------------
+    //Internal subroutines
+    //---------------------------------------------
+    
+    /* Internal subroutine used by TestIsBoundary() */ 
+    public void doBoundaryTest(RuleBasedBreakIterator bi, String text, int[] boundaries) {
+        logln("testIsBoundary():");
+        int p = 0;
+        boolean isB;
+        for (int i = 0; i < text.length(); i++) {
+            isB = bi.isBoundary(i);
+            logln("bi.isBoundary(" + i + ") -> " + isB);
+            if (i == boundaries[p]) {
+                if (!isB)
+                    errln("Wrong result from isBoundary() for " + i + ": expected true, got false");
+                p++;
+            } else {
+                if (isB)
+                    errln("Wrong result from isBoundary() for " + i + ": expected false, got true");
+            }
+        }
+    }
+    
+    /*Internal subroutine used for comparision of expected and acquired results */
+    public void doTest(String testString, int start, int gotoffset, int expectedOffset, String expectedString) {
+        String selected;
+        String expected = expectedString;
+        if (gotoffset != expectedOffset)
+            errln("ERROR:****returned #" + gotoffset + " instead of #" + expectedOffset);
+        if (start <= gotoffset) {
+            selected = testString.substring(start, gotoffset);
+        } else {
+            selected = testString.substring(gotoffset, start);
+        }
+        if (!selected.equals(expected))
+            errln("ERROR:****selected \"" + selected + "\" instead of \"" + expected + "\"");
+        else
+            logln("****selected \"" + selected + "\"");
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/rbbi/RBBITest.java b/src/com/ibm/icu/dev/test/rbbi/RBBITest.java
new file mode 100755
index 0000000..4c0db92
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/RBBITest.java
@@ -0,0 +1,952 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/rbbi/RBBITest.java,v $ 
+ * $Date: 2002/02/16 03:05:15 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.rbbi;
+ 
+//Regression testing of RuleBasedBreakIterator
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.RuleBasedBreakIterator;
+import java.util.Locale;
+import java.util.Vector;
+import java.io.*;  
+
+public class RBBITest extends TestFmwk 
+{  
+  private RuleBasedBreakIterator characterBreak;
+  private RuleBasedBreakIterator wordBreak;
+  private RuleBasedBreakIterator lineBreak;
+  private RuleBasedBreakIterator sentenceBreak;
+    
+  public static void main(String[] args) throws Exception {
+    new RBBITest().run(args);
+  }
+
+  public RBBITest() { 
+  }
+  
+   private static final String halfNA = "\u0928\u094d\u200d";  /*halfform NA = devanigiri NA + virama(supresses inherent vowel)+ zero width joiner */  
+  private static final String halfSA  = "\u0938\u094d\u200d"; 
+  private static final String halfCHA = "\u091a\u094d\u200d"; 
+  private static final String halfKA  = "\u0915\u094d\u200d"; 
+  private static final String deadTA  = "\u0924\u094d";
+
+  private static final String deadRA   = "\u0930\u094d";  /*deadform RA = devanagari RA + virama*/
+  private static final String deadPHA  = "\u092b\u094d";  /*deadform PHA = devanagari PHA + virama*/
+  private static final String deadTTHA = "\u0920\u094d"; 
+  private static final String deadPA   = "\u092a\u094d"; 
+  private static final String deadSA   = "\u0938\u094d";   /*devanagari visarga looks like a english colon*/
+  private static final String visarga  = "\u0903";
+
+
+  //tests default rules based character iteration
+  public void TestDefaultRuleBasedCharacterIteration(){
+      RuleBasedBreakIterator rbbi=(RuleBasedBreakIterator)RuleBasedBreakIterator.getCharacterInstance();
+      logln("Testing the RBBI for character iteration by using default rules");
+      //fetch the rules used to create the above RuleBasedBreakIterator
+      String defaultRules=rbbi.toString();
+      
+      RuleBasedBreakIterator charIterDefault=null;
+      try{
+      charIterDefault   = new RuleBasedBreakIterator(defaultRules); 
+      }catch(IllegalArgumentException iae){
+          errln("ERROR: failed construction in TestDefaultRuleBasedCharacterIteration()"+ iae.toString());
+      }
+
+      Vector chardata = new Vector();
+      chardata.addElement("H");
+      chardata.addElement("e");
+      chardata.addElement("l");
+      chardata.addElement("l");
+      chardata.addElement("o");
+      chardata.addElement("e\u0301");                   //acuteE
+      chardata.addElement("&");
+      chardata.addElement("e\u0303");                   //tildaE
+      //devanagiri characters for Hindi support
+      chardata.addElement("\u0906");                    //devanagiri AA
+      //chardata.addElement("\u093e\u0901");              //devanagiri vowelsign AA+ chandrabindhu
+      chardata.addElement("\u0916\u0947");              //devanagiri KHA+vowelsign E
+      chardata.addElement("\u0938\u0941\u0902");        //devanagiri SA+vowelsign U + anusvara(bindu)
+      chardata.addElement("\u0926");                    //devanagiri consonant DA
+      chardata.addElement("\u0930");                    //devanagiri consonant RA
+      chardata.addElement("\u0939\u094c");              //devanagiri HA+vowel sign AI
+      chardata.addElement("\u0964");                    //devanagiri danda
+      //end hindi characters      
+      chardata.addElement("A\u0302");                   // circumflexA 
+      chardata.addElement("i\u0301");                   // acuteBelowI   
+      // conjoining jamo... 
+      chardata.addElement("\u1109\u1161\u11bc");
+      chardata.addElement("\u1112\u1161\u11bc");
+      chardata.addElement("\n");
+      chardata.addElement("\r\n");                      // keep CRLF sequences together  
+      chardata.addElement("S\u0300");                   //graveS
+      chardata.addElement("i\u0301");                   // acuteBelowI
+      chardata.addElement("!");
+
+       // What follows is a string of Korean characters (I found it in the Yellow Pages
+      // ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+      // it correctly), first as precomposed syllables, and then as conjoining jamo.
+      // Both sequences should be semantically identical and break the same way.
+      // precomposed syllables...
+      chardata.addElement("\uc0c1");
+      chardata.addElement("\ud56d");
+      chardata.addElement(" ");
+      chardata.addElement("\ud55c");
+      chardata.addElement("\uc778");
+      chardata.addElement(" ");
+      chardata.addElement("\uc5f0");
+      chardata.addElement("\ud569");
+      chardata.addElement(" ");
+      chardata.addElement("\uc7a5");
+      chardata.addElement("\ub85c");
+      chardata.addElement("\uad50");
+      chardata.addElement("\ud68c");
+      chardata.addElement(" ");
+       // conjoining jamo...
+      chardata.addElement("\u1109\u1161\u11bc");
+      chardata.addElement("\u1112\u1161\u11bc");
+      chardata.addElement(" ");
+      chardata.addElement("\u1112\u1161\u11ab");
+      chardata.addElement("\u110b\u1175\u11ab");
+      chardata.addElement(" ");
+      chardata.addElement("\u110b\u1167\u11ab");
+      chardata.addElement("\u1112\u1161\u11b8");
+      chardata.addElement(" ");
+      chardata.addElement("\u110c\u1161\u11bc");
+      chardata.addElement("\u1105\u1169");
+      chardata.addElement("\u1100\u116d");
+      chardata.addElement("\u1112\u116c");
+
+      //Testing the BreakIterator for devanagari script
+      //devanagari characters for Hindi support
+      chardata.addElement("\u0906");                    //devanagari AA
+      //hindi character break should make sure that it 
+      // doesn't break in-between a vowelsign and a chandrabindu
+    //  chardata.addElement("\u093e\u0901");              //devanagari vowelsign AA+ chandrabindu
+      chardata.addElement("\u0916\u0947");              //devanagari KHA+vowelsign E
+      chardata.addElement("\u0938\u0941\u0902");        //devanagari SA+vowelsign U + anusvara(bindu)
+      chardata.addElement("\u0926");                    //devanagari consonant DA
+      chardata.addElement("\u0930");                    //devanagari consonant RA
+      chardata.addElement("\u0939\u094c");              //devanagari consonant HA+dependent vowel sign AI
+      chardata.addElement("\u0964");                    //devanagari danda
+      chardata.addElement("\u0950");                    //devanagari OM 
+      chardata.addElement("\u0915\u0943");              //devanagari KA+dependent vowel RI->KRI
+
+      //dependent half-forms
+      chardata.addElement(halfSA+ "\u0924");             //halfSA+base consonant TA->STA
+      chardata.addElement(halfSA+ "\u0925");             //halfSA+base consonant THA->STHA
+      chardata.addElement(halfSA+ "\u092e");             //halfSA+base consonant MA->SMA
+      chardata.addElement(halfCHA+ "\u091b");            //halfCHA+base consonant CHHA->CHHHA
+      chardata.addElement(halfNA+ "\u0917");             //halfNA+base consonant GA->NGA
+      chardata.addElement("\u092a\u094d\u200d\u092f");   //halfPA(PA+virama+zerowidthjoiner+base consonant YA->PYA
+
+
+      //consonant RA rules ----------
+      //if the dead consonant RA precedes either a consonant or an independent vowel,
+      //then it is replaced by its superscript non-spacing mark
+      chardata.addElement(deadRA+ "\u0915");             //deadRA+devanagari consonant KA->KA+superRA 
+      chardata.addElement(deadRA+ "\u0923");             //deadRA+devanagari consonant NNA->NNA+superRA
+      chardata.addElement(deadRA+ "\u0917");             //deadRA+devanagari consonant GA->GA+superRA
+   //   chardata.addElement(deadRA+ "\u0960");           //deadRA+devanagari cosonant RRI->RRI+superRA
+      
+      //if any dead consonant(other than dead RA)precedes the consonant RA, then
+      //it is replaced with its nominal forma nd RA is replaced by the subscript non-spacing mark.
+      chardata.addElement(deadPHA+ "\u0930");            //deadPHA+devanagari consonant RA->PHA+subRA
+      chardata.addElement(deadPA+ "\u0930");             //deadPA+devanagari consonant RA->PA+subRA
+      chardata.addElement(deadTTHA+ "\u0930");           //deadTTHA+devanagari consonant RA->TTHA+subRA
+      chardata.addElement(deadTA+ "\u0930");             //deadTA+RA->TRA 
+      chardata.addElement("\u0936\u094d\u0930");         //deadSHA(SHA+virama)+RA->SHRA 
+
+      //conjuct ligatures
+      chardata.addElement("\u0915\u094d\u0937");         //deadKA(KA+virama) followed by SSHA wraps up into a single character KSSHA
+      chardata.addElement(deadTA+ "\u0924");              //deadTA+TA wraps up into glyph TTHA
+      chardata.addElement("\u0926\u094d\u0935");         //deadDA(DA+virama)+VA wraps up into DVA
+      chardata.addElement("\u091c\u094d\u091e");         //deadJA(JA+virama)+NYA wraps up into JNYA
+     
+
+
+      generalIteratorTest(charIterDefault, chardata);
+
+  }
+
+  public void TestDefaultRuleBasedWordIteration(){
+      logln("Testing the RBBI for word iteration using default rules");
+      RuleBasedBreakIterator rbbi=(RuleBasedBreakIterator)RuleBasedBreakIterator.getWordInstance();
+      //fetch the rules used to create the above RuleBasedBreakIterator
+      String defaultRules=rbbi.toString();
+      
+      RuleBasedBreakIterator wordIterDefault=null;
+      try{
+      wordIterDefault   = new RuleBasedBreakIterator(defaultRules); 
+      }catch(IllegalArgumentException iae){
+          errln("ERROR: failed construction in TestDefaultRuleBasedWordIteration() -- custom rules"+ iae.toString());
+      }
+
+      Vector worddata = new Vector();
+      worddata.addElement ("Write");
+      worddata.addElement (" ");
+      worddata.addElement ("wordrules");
+      worddata.addElement (".");
+      worddata.addElement(" ");
+      worddata.addElement("alpha-beta-gamma");
+      worddata.addElement(" ");      
+      worddata.addElement("\u092f\u0939");
+      worddata.addElement(" ");
+      worddata.addElement("\u0939\u093f" + halfNA + "\u0926\u0940");
+      worddata.addElement(" ");
+      worddata.addElement("\u0939\u0948");
+      //  worddata.addElement("\u0964");   //danda followed by a space
+      worddata.addElement(" ");
+      worddata.addElement("\u0905\u093e\u092a");
+      worddata.addElement(" ");
+      worddata.addElement("\u0938\u093f\u0916\u094b\u0917\u0947");
+      worddata.addElement("?");
+      worddata.addElement(" ");
+      worddata.addElement("\u0968\u0966.\u0969\u096f");            //hindi numbers
+      worddata.addElement(" ");
+      worddata.addElement("\u0967\u0966\u0966.\u0966\u0966%");     //postnumeric
+      worddata.addElement(" ");
+      worddata.addElement("\u20a8\u0967,\u0967\u0966\u0966.\u0966\u0966"); //pre-number India currency symbol Rs.\u20aD
+      worddata.addElement(" ");
+      worddata.addElement("\u0905\u092e\u091c");
+      worddata.addElement("\n");
+      worddata.addElement(halfSA+"\u0935\u0924\u0902"+deadTA+"\u0930");
+      worddata.addElement("\r");
+      worddata.addElement("It's");
+      worddata.addElement(" ");
+      worddata.addElement("$30.10");
+      worddata.addElement(" ");  
+      worddata.addElement("\u00A2"); //cent sign
+      worddata.addElement("\u00A3"); //pound sign
+      worddata.addElement("\u00A4"); //currency sign
+      worddata.addElement("\u00A5"); //yen sign
+      worddata.addElement("alpha-beta-gamma");
+      worddata.addElement(" ");
+      worddata.addElement("Badges");
+      worddata.addElement("?");
+      worddata.addElement(" ");
+      worddata.addElement("BADGES");
+      worddata.addElement("!");
+      worddata.addElement("1000,233,456.000");
+      worddata.addElement(" ");
+      worddata.addElement("1,23.322%");
+      worddata.addElement(" ");
+      worddata.addElement("123.1222");
+      worddata.addElement(" ");
+      worddata.addElement("\u0024123,000.20");
+      worddata.addElement(" ");
+      worddata.addElement("179.01\u0025");
+      worddata.addElement("X");
+      worddata.addElement(" ");
+      worddata.addElement("Now");
+      worddata.addElement("\r");
+      worddata.addElement("is");
+      worddata.addElement("\n");
+      worddata.addElement("the");
+      worddata.addElement("\r\n");
+      worddata.addElement("time");
+      worddata.addElement(" ");
+      worddata.addElement("\uc5f0\ud569");
+      worddata.addElement(" ");
+      worddata.addElement("\uc7a5\ub85c\uad50\ud68c");
+      worddata.addElement(" ");
+      // conjoining jamo...
+      worddata.addElement("\u1109\u1161\u11bc\u1112\u1161\u11bc");
+      worddata.addElement(" ");
+      worddata.addElement("\u1112\u1161\u11ab\u110b\u1175\u11ab");
+      worddata.addElement(" ");
+      worddata.addElement("Hello");
+      worddata.addElement(",");
+      worddata.addElement(" ");
+      worddata.addElement("how");
+      worddata.addElement(" ");
+      worddata.addElement("are");
+      worddata.addElement(" ");
+      worddata.addElement("you");
+      worddata.addElement(" ");
+
+      //Testing the BreakIterator for devanagari script
+      //hindi
+      worddata.addElement("\u0917\u092a-\u0936\u092a");
+      worddata.addElement("!");
+      worddata.addElement("\u092f\u0939");
+      worddata.addElement(" ");
+      worddata.addElement("\u0939\u093f" + halfNA + "\u0926\u0940");
+      worddata.addElement(" ");
+      worddata.addElement("\u0939\u0948");
+      //danda is similar to full stop. danda is a hindi phrase seperator
+      //Make sure it breaks before danda and after danda when it is followed by a space
+      //worddata.addElement("\u0964");   //fails here doesn't break at danda
+      worddata.addElement(" ");
+      worddata.addElement("\u0905\u093e\u092a");
+      worddata.addElement(" ");
+      worddata.addElement("\u0938\u093f\u0916\u094b\u0917\u0947");
+      worddata.addElement("?");
+      worddata.addElement("\n"); 
+      worddata.addElement(":");
+      worddata.addElement(deadPA+"\u0930\u093e\u092f"+visarga);    //no break before visarga
+      worddata.addElement(" ");
+
+      worddata.addElement("\u0935" + deadRA+ "\u0937\u093e");
+      worddata.addElement("\r\n");
+      worddata.addElement(deadPA+ "\u0930\u0915\u093e\u0936");     //deadPA+RA+KA+vowel AA+SHA -> prakash
+      worddata.addElement(","); 
+      worddata.addElement("\u0924\u0941\u092e\u093e\u0930\u094b"); 
+      worddata.addElement(" ");
+      worddata.addElement("\u092e\u093f"+ deadTA+ "\u0930");       //MA+vowel I+ deadTA + RA 
+      worddata.addElement(" ");
+      worddata.addElement("\u0915\u093e");
+      worddata.addElement(" ");
+      worddata.addElement("\u092a"+ deadTA + "\u0930");            //PA + deadTA + RA
+      worddata.addElement(" ");
+      worddata.addElement("\u092a\u095d\u094b");
+      // worddata.addElement("\u0964"); //fails here doesn't break at danda
+      worddata.addElement(" ");
+      worddata.addElement(deadSA + deadTA + "\u0930\u093f");       //deadSA+deadTA+RA+vowel I->sthri
+      worddata.addElement(".");
+      worddata.addElement(" ");
+      worddata.addElement("\u0968\u0966.\u0969\u096f");            //hindi numbers
+      worddata.addElement(" ");
+      worddata.addElement("\u0967\u0966\u0966.\u0966\u0966%");     //postnumeric
+      worddata.addElement(" ");
+      worddata.addElement("\u20a8\u0967,\u0967\u0966\u0966.\u0966\u0966"); //pre-number India currency symbol Rs.\u20aD
+      worddata.addElement(" ");
+      worddata.addElement("\u0905\u092e\u091c");
+      worddata.addElement("\n");
+      worddata.addElement(halfSA + "\u0935\u0924\u0902" +deadTA+ "\u0930");
+      worddata.addElement("\r");
+
+      generalIteratorTest(wordIterDefault, worddata);
+  }
+  private static final String kParagraphSeparator = "\u2029";
+  private static final String kLineSeparator      = "\u2028";
+
+  public void TestDefaultRuleBasedSentenceIteration(){
+      logln("Testing the RBBI for sentence iteration using default rules");
+      RuleBasedBreakIterator rbbi=(RuleBasedBreakIterator)RuleBasedBreakIterator.getSentenceInstance();
+      //fetch the rules used to create the above RuleBasedBreakIterator
+      String defaultRules=rbbi.toString();
+      RuleBasedBreakIterator sentIterDefault=null;
+      try{
+      sentIterDefault   = new RuleBasedBreakIterator(defaultRules); 
+      }catch(IllegalArgumentException iae){
+          errln("ERROR: failed construction in TestDefaultRuleBasedSentenceIteration()" + iae.toString());
+      }
+
+      Vector sentdata = new Vector();
+      sentdata.addElement("(This is it.) ");
+      sentdata.addElement("Testing the sentence iterator. ");
+      sentdata.addElement("\"This isn\'t it.\" ");
+      sentdata.addElement("Hi! ");
+      sentdata.addElement("This is a simple sample sentence. ");
+      sentdata.addElement("(This is it.) ");
+      sentdata.addElement("This is a simple sample sentence. ");
+      sentdata.addElement("\"This isn\'t it.\" ");
+      sentdata.addElement("Hi! ");
+      sentdata.addElement("This is a simple sample sentence. ");
+      sentdata.addElement("It does not have to make any sense as you can see. ");
+      sentdata.addElement("Nel mezzo del cammin di nostra vita, mi ritrovai in una selva oscura. ");
+      sentdata.addElement("Che la dritta via aveo smarrita. ");
+      sentdata.addElement("He said, that I said, that you said!! ");
+      sentdata.addElement("Don't rock the boat." + kParagraphSeparator);
+      sentdata.addElement("Because I am the daddy, that is why. ");
+      sentdata.addElement("Not on my time (el timo.)! ");
+      sentdata.addElement("So what!!" + kParagraphSeparator);
+      sentdata.addElement("\"But now,\" he said, \"I know!\" ");
+      sentdata.addElement("Harris thumbed down several, including \"Away We Go\" (which became the huge success Oklahoma!). ");
+      sentdata.addElement("One species, B. anthracis, is highly virulent.\n");
+      sentdata.addElement("Wolf said about Sounder:\"Beautifully thought-out and directed.\" ");
+      sentdata.addElement("Have you ever said, \"This is where\tI shall live\"? ");
+      sentdata.addElement("He answered, \"You may not!\" ");
+      sentdata.addElement("Another popular saying is: \"How do you do?\". ");
+      sentdata.addElement("Yet another popular saying is: \'I\'m fine thanks.\' ");
+      sentdata.addElement("What is the proper use of the abbreviation pp.? ");
+      sentdata.addElement("Yes, I am definatelly 12\" tall!!");
+      sentdata.addElement("Now\ris\nthe\r\ntime\n\rfor\r\rall\u2029");
+      // Don't break sentences at the boundary between CJK
+      // and other letters
+      sentdata.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165:\"JAVA\u821c"
+                + "\u8165\u7fc8\u51ce\u306d,\u2494\u56d8\u4ec0\u60b1\u8560\u51ba"
+                + "\u611d\u57b6\u2510\u5d46\".\u2029");
+      sentdata.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8"
+                + "\u97e4JAVA\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8\u4ec0"
+                + "\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u2029");
+      sentdata.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8\u97e4"
+                + "\u6470\u8790JAVA\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8"
+                + "\u4ec0\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u2029");
+      sentdata.addElement("He said, \"I can go there.\"\u2029");
+      // Treat fullwidth variants of .!? the same as their
+      // normal counterparts
+      sentdata.addElement("I know I'm right\uff0e ");
+      sentdata.addElement("Right\uff1f ");
+      sentdata.addElement("Right\uff01 ");
+
+      // Don't break sentences at boundary between CJK and digits
+      sentdata.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8"
+                + "\u97e48888\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8\u4ec0"
+                + "\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u2029");
+
+      // Break sentence between a sentence terminator and
+      // opening punctuation
+      sentdata.addElement("How do you do?");
+      sentdata.addElement("(fine).");
+      //sentence breaks for hindi
+      //make sure there is sentence break after ?,danda(hindi phrase separator),fullstop followed by space and no break after \n \r 
+      sentdata.addElement("\u0928\u092e"+halfSA+"\u0924\u0947 "  
+                                   + "\u0930\u092e\u0947\u0936, " 
+                                   + "\u0905\u093e\u092a"
+                                   + "\u0915\u0948\u0938\u0947 "
+                                   + "\u0939\u0948?");   
+      sentdata.addElement("\u092e\u0948 \u0905"
+                        + halfCHA
+                        + "\u091b\u093e \u0939\u0942\u0901\u0964 ");   
+      sentdata.addElement("\u0905\u093e\u092a\r\n \u0915\u0948\u0938\u0947 \u0939\u0948?");   
+      sentdata.addElement("\u0935\u0939 "
+                       + halfKA
+                       + "\u092f\u093e\n \u0939\u0948?");   
+      sentdata.addElement("\u092f\u0939 \u0905\u093e\u092e \u0939\u0948. ");   
+      sentdata.addElement("\u092f\u0939 means \"this\". "); 
+      sentdata.addElement("\"\u092a\u095d\u093e\u0908\" meaning \"education\" or \"studies\". ");
+      sentdata.addElement("\u0905\u093e\u091c" 
+                        + "("+halfSA+"\u0935\u0924\u0902"
+                        + deadTA
+                        + "\u0930 "
+                        + "\u0926\u093f\u0935\u093e\u0938) "
+                        + "\u0939\u0948\u0964 ");
+      sentdata.addElement("Let's end here. ");
+      generalIteratorTest(sentIterDefault, sentdata);
+  }
+   
+  public void TestDefaultRuleBasedLineIteration(){
+     logln("Testing the RBBI for line iteration using default rules");
+     RuleBasedBreakIterator rbbi=(RuleBasedBreakIterator)RuleBasedBreakIterator.getLineInstance();
+     //fetch the rules used to create the above RuleBasedBreakIterator
+     String defaultRules=rbbi.toString();
+     RuleBasedBreakIterator lineIterDefault=null;
+     try{
+     lineIterDefault   = new RuleBasedBreakIterator(defaultRules); 
+     }catch(IllegalArgumentException iae){
+         errln("ERROR: failed construction in TestDefaultRuleBasedLineIteration()" + iae.toString());
+     }
+
+     Vector linedata = new Vector();
+     linedata.addElement("Multi-");
+     linedata.addElement("Level ");
+     linedata.addElement("example ");
+     linedata.addElement("of ");
+     linedata.addElement("a ");
+     linedata.addElement("semi-");
+     linedata.addElement("idiotic ");
+     linedata.addElement("non-");
+     linedata.addElement("sensical ");
+     linedata.addElement("(non-");
+     linedata.addElement("important) ");
+     linedata.addElement("sentence. ");
+
+     linedata.addElement("Hi  ");
+     linedata.addElement("Hello ");
+     linedata.addElement("How\n");
+     linedata.addElement("are\r");
+     linedata.addElement("you" + kLineSeparator);
+     linedata.addElement("fine.\t");
+     linedata.addElement("good.  ");
+
+     linedata.addElement("Now\r");
+     linedata.addElement("is\n");
+     linedata.addElement("the\r\n");
+     linedata.addElement("time\n");
+     linedata.addElement("\r");
+     linedata.addElement("for\r");
+     linedata.addElement("\r");
+     linedata.addElement("all");
+
+    // to test for bug #4068133
+     linedata.addElement("\u96f6");
+     linedata.addElement("\u4e00\u3002");
+     linedata.addElement("\u4e8c\u3001");
+     linedata.addElement("\u4e09\u3002\u3001");
+     linedata.addElement("\u56db\u3001\u3002\u3001");
+     linedata.addElement("\u4e94,");
+     linedata.addElement("\u516d.");
+     linedata.addElement("\u4e03.\u3001,\u3002");
+     linedata.addElement("\u516b");
+
+    // to test for bug #4086052
+     linedata.addElement("foo\u00a0bar ");
+    // linedata.addElement("foo\ufeffbar");
+
+    // to test for bug #4097920
+     linedata.addElement("dog,");
+     linedata.addElement("cat,");
+     linedata.addElement("mouse ");
+     linedata.addElement("(one)");
+     linedata.addElement("(two)\n");
+
+    // to test for bug #4035266
+     linedata.addElement("The ");
+     linedata.addElement("balance ");
+     linedata.addElement("is ");
+     linedata.addElement("$-23,456.78, ");
+     linedata.addElement("not ");
+     linedata.addElement("-$32,456.78!\n");
+
+    // to test for bug #4098467
+    // What follows is a string of Korean characters (I found it in the Yellow Pages
+    // ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+    // it correctly), first as precomposed syllables, and then as conjoining jamo.
+    // Both sequences should be semantically identical and break the same way.
+    // precomposed syllables...
+     linedata.addElement("\uc0c1\ud56d ");
+     linedata.addElement("\ud55c\uc778 ");
+     linedata.addElement("\uc5f0\ud569 ");
+     linedata.addElement("\uc7a5\ub85c\uad50\ud68c ");
+    // conjoining jamo...
+     linedata.addElement("\u1109\u1161\u11bc\u1112\u1161\u11bc ");
+     linedata.addElement("\u1112\u1161\u11ab\u110b\u1175\u11ab ");
+     linedata.addElement("\u110b\u1167\u11ab\u1112\u1161\u11b8 ");
+     linedata.addElement("\u110c\u1161\u11bc\u1105\u1169\u1100\u116d\u1112\u116c");
+
+    // to test for bug #4117554: Fullwidth .!? should be treated as postJwrd
+     linedata.addElement("\u4e01\uff0e");
+     linedata.addElement("\u4e02\uff01");
+     linedata.addElement("\u4e03\uff1f");
+     generalIteratorTest(lineIterDefault, linedata);
+
+
+  }
+  public void TestCustomRuleBasedLineIterator(){
+
+    RuleBasedBreakIterator rbbi=(RuleBasedBreakIterator)RuleBasedBreakIterator.getLineInstance();
+    //fetch the rules used to create the above RuleBasedBreakIterator
+    String rules=//"$_ignore_=[e];"  + // [liu] Not sure what the intention was here.
+        // It's illegal to redefine variables, also, why prepend the ignore definition --
+        // even if it's legal to redefine variables, the prepended definition will just
+        // get overridden.
+                 rbbi.toString();
+    RuleBasedBreakIterator lineIter=null;
+    try{
+     lineIter   = new RuleBasedBreakIterator(rules); 
+       }catch(IllegalArgumentException iae){
+         errln("ERROR: failed construction in TestCustomRuleBasedLineIterator() -- custom rules\n" + iae.toString());
+       }
+    Vector linedata=new Vector();
+    linedata.addElement("SLhello! ");
+    linedata.addElement("How ");
+    generalIteratorTest(lineIter, linedata);
+  }
+  
+  //tests the behaviour of character iteration of RBBI with custom rules
+  public void TestCustomRuleBasedCharacterIteration(){
+      logln("Testing the RBBI by using custom rules for character iteration");
+
+      String crules2="$_ignore_=[e];"                                 + //ignore the character "e"
+                     ".;"                                            + 
+                     "$devVowelSign=[\u093e-\u094c\u0962\u0963];"   +  //devanagiri vowel = \u093e tp \u094c and \u0962.\u0963
+                     "$devConsonant=[\u0915-\u0939];"               +  //devanagiri consonant = \u0915 to \u0939
+                     "$devConsonant$devVowelSign;" ;                //break at all places except the  following 
+                                                                            //devanagiri consonants+ devanagiri vowelsign
+      
+      RuleBasedBreakIterator charIterRules=null;
+      try{
+      charIterRules   = new RuleBasedBreakIterator(crules2); 
+      }catch(IllegalArgumentException iae){
+          errln("ERROR: failed construction in TestCustomBasedCharacterIteration()-- custom rules" + iae.toString());
+      }
+
+      Vector chardata = new Vector();
+      chardata.addElement("He");              //ignores 'e'
+      chardata.addElement("l");                
+      chardata.addElement("l");
+      chardata.addElement("oe");              //ignores 'e' hence wraps it into 'o' instead of wrapping with
+      chardata.addElement("\u0301");          //'\u0301' to form 'acuteE '
+      chardata.addElement("&e");              //ignores 'e' hence wraps it into '&' instead of wrapping with
+      chardata.addElement("\u0303");          //'\u0303 to form 'tildaE'
+      //devanagiri characters 
+      chardata.addElement("\u0906");          //devanagiri AA
+      chardata.addElement("\u093e");          //devanagiri vowelsign AA:--breaks at \u0901 which is devanagiri 
+      chardata.addElement("\u0901");          //chandra bindhu since it is not mentioned in the rules
+      chardata.addElement("\u0916\u0947");    //devanagiri KHA+vowelsign E
+      chardata.addElement("\u0938\u0941");    //devanagiri SA+vowelsign U : - breaks at
+      chardata.addElement("\u0902");          //\u0902 devanagiri anusvara since it is not mentioned in the rules
+      chardata.addElement("\u0926");          //devanagiri consonant DA
+      chardata.addElement("\u0930");          //devanagiri consonant RA
+      chardata.addElement("\u0939\u094c");    //devanagiri HA+vowel sign AI
+      chardata.addElement("\u0964");          //devanagiri danda
+      // devanagiri chracters end
+      chardata.addElement("A");               //breaks in between since it is not mentioned in the rules
+      chardata.addElement("\u0302");          /* circumflexA */    
+      chardata.addElement("i");               //breaks in between since not mentioned in the rules
+      chardata.addElement("\u0301");          /* acuteBelowI */  
+      //Rules don't support conjoining jamo....
+      chardata.addElement("\u1109");          //break at every character since rules
+      chardata.addElement("\u1161");          //don't support conjoining jamo
+      chardata.addElement("\u11bc");
+      chardata.addElement("\u1112");
+      chardata.addElement("\u1161");
+      chardata.addElement("\u11bc");
+      chardata.addElement("\n");
+      chardata.addElement("\r");             //doesn't keep CRLGF together since rules do not mention it
+      chardata.addElement("\n");
+      chardata.addElement("S");              //graveS
+      chardata.addElement("\u0300");         //breaks in between since it is not mentioned in the rules
+      chardata.addElement("i");              //acuteBelowI
+      chardata.addElement("\u0301");         //breaks in between since it is not mentioned in the rules
+
+      generalIteratorTest(charIterRules, chardata);
+
+  }    
+  //tests custom rules based word iteration
+  public void TestCustomRuleBasedWordIteration(){
+      logln("Testing the RBBI by using custom rules for word iteration");
+      String wrules1="$_ignore_=[[:Mn:][:Me:][:Cf:]];"         + // ignore non-spacing marks, enclosing marks, and format characters,
+                      "$danda=[\u0964\u0965];"                + // Hindi Phrase seperator
+                      "$let=[[:L:][:Mc:]];"                   + // uppercase(Lu), lowercase(Ll), titlecase(Lt), modifier(Lm) letters, Mc-combining space mark
+                      "$mid_word=[[:Pd:]\\\"\\\'\\.];"        + // dashes, quotation, apostraphes, period
+                      "$ls=[\n\u000c\u2028\u2029];"           + // line separators:  LF, FF, PS, and LS
+                      "$ws=[[:Zs:]\t];"                       + // all space separators and the tab character
+                      "$word=(($let+($mid_word$let+)*));"  +  
+                      ".;"                                   + // break after every character, with the following exceptions
+                      "$word;"                              + 
+                      "$ws*\r$ls$danda?;" ;
+
+      RuleBasedBreakIterator wordIterRules=null;
+      try{
+      wordIterRules   = new RuleBasedBreakIterator(wrules1); 
+      }catch(IllegalArgumentException iae){
+          errln("ERROR: failed construction in TestCustomRuleBasedWordIteration() -- custom rules" + iae.toString());
+      }
+
+      Vector worddata = new Vector();
+      worddata.addElement("Write");
+      worddata.addElement(" ");
+      worddata.addElement("wordrules");
+      worddata.addElement(".");
+      worddata.addElement(" ");
+      //play with hindi
+      worddata.addElement("\u092f\u0939");
+      worddata.addElement(" ");
+      worddata.addElement("\u0939\u093f" + halfNA + "\u0926\u0940");
+      worddata.addElement(" ");
+      worddata.addElement("\u0939\u0948");
+      worddata.addElement("\u0964");   //Danda is similar to full stop. Danda followed by a space
+      worddata.addElement(" ");
+      worddata.addElement("\u0905\u093e\u092a");
+      worddata.addElement(" ");
+      worddata.addElement("\u0938\u093f\u0916\u094b\u0917\u0947");
+      worddata.addElement("?");
+      worddata.addElement(" ");
+      worddata.addElement("It's");
+      worddata.addElement(" ");
+      worddata.addElement("$");
+      worddata.addElement("3");
+      worddata.addElement("0");
+      worddata.addElement(".");
+      worddata.addElement("1");
+      worddata.addElement("0");
+      worddata.addElement(" ");
+      // worddata.addElement(" ");
+      generalIteratorTest(wordIterRules, worddata); 
+  } 
+  //adds extra rules to deal with abbrevations(limited) and test the word Iteration
+  public void TestAbbrRuleBasedWordIteration(){
+      logln("Testing the RBBI for word iteration by adding rules to support abbreviation");
+      RuleBasedBreakIterator rb =(RuleBasedBreakIterator)RuleBasedBreakIterator.getWordInstance();
+      
+      String wrules2="$abbr=((Mr.)|(Mrs.)|(Ms.)|(Dr.)|(U.S.));" + // abbreviations. 
+                     rb.toString()                             +
+                     "($abbr$ws)*$word;";
+      RuleBasedBreakIterator wordIter=null;
+      try{
+      wordIter   = new RuleBasedBreakIterator(wrules2); 
+      }catch(IllegalArgumentException iae){
+          errln("ERROR: failed construction in TestAbbrRuleBasedWordIteration() --custom rules" + iae.toString());
+      }
+      Vector worddata = new Vector();
+      worddata.addElement("Mr. George");
+      worddata.addElement(" ");
+      worddata.addElement("is");
+      worddata.addElement(" ");
+      worddata.addElement("from");
+      worddata.addElement(" ");
+      worddata.addElement("U.S. Navy");
+      worddata.addElement(".");
+      worddata.addElement(" ");
+      worddata.addElement("His");
+      worddata.addElement("\n");
+      worddata.addElement("friend");
+      worddata.addElement("\t");
+      worddata.addElement("Dr. Steven");
+      worddata.addElement(" ");
+      worddata.addElement("married");
+      worddata.addElement(" ");
+      worddata.addElement("Ms. Benneth");
+      worddata.addElement("!");
+      worddata.addElement(" ");
+      worddata.addElement("Mrs. Johnson");
+      worddata.addElement("\r\n");
+      worddata.addElement("paid");
+      worddata.addElement(" ");
+      worddata.addElement("$2,400.00");
+      generalIteratorTest(wordIter, worddata); 
+  } 
+      //=========================================================================
+     // general test subroutines
+     //=========================================================================
+
+     private void generalIteratorTest(RuleBasedBreakIterator rbbi, Vector expectedResult){
+         StringBuffer buffer = new StringBuffer();
+         String text;
+         for (int i = 0; i < expectedResult.size(); i++) {
+             text = (String)expectedResult.elementAt(i);
+             buffer.append(text);
+         }
+         text = buffer.toString();
+
+         rbbi.setText(text);
+
+         Vector nextResults = _testFirstAndNext(rbbi, text);
+         Vector previousResults = _testLastAndPrevious(rbbi, text);
+
+         logln("comparing forward and backward...");
+         int errs = getErrorCount();
+         compareFragmentLists("forward iteration", "backward iteration", nextResults,
+                         previousResults);
+         if (getErrorCount() == errs) {
+             logln("comparing expected and actual...");
+             compareFragmentLists("expected result", "actual result", expectedResult,
+                             nextResults);
+         }
+
+        int[] boundaries = new int[expectedResult.size() + 3];
+        boundaries[0] = RuleBasedBreakIterator.DONE;
+        boundaries[1] = 0;
+        for (int i = 0; i < expectedResult.size(); i++)
+         boundaries[i + 2] = boundaries[i + 1] + ((String)expectedResult.elementAt(i)).length();
+      
+        boundaries[boundaries.length - 1] = RuleBasedBreakIterator.DONE;
+      
+        _testFollowing(rbbi, text, boundaries);
+        _testPreceding(rbbi, text, boundaries);
+        _testIsBoundary(rbbi, text, boundaries);
+
+        doMultipleSelectionTest(rbbi, text);
+     }
+
+     private Vector _testFirstAndNext(RuleBasedBreakIterator rbbi, String text) {
+         int p = rbbi.first();
+         int lastP = p;
+         Vector result = new Vector();
+
+         if (p != 0)
+             errln("first() returned " + p + " instead of 0");
+         while (p != RuleBasedBreakIterator.DONE) {
+             p = rbbi.next();
+             if (p != RuleBasedBreakIterator.DONE) {
+                 if (p <= lastP)
+                     errln("next() failed to move forward: next() on position "
+                                     + lastP + " yielded " + p);
+
+                 result.addElement(text.substring(lastP, p));
+             }
+             else {
+                 if (lastP != text.length())
+                     errln("next() returned DONE prematurely: offset was "
+                                     + lastP + " instead of " + text.length());
+             }
+             lastP = p;
+         }
+         return result;
+     }
+
+     private Vector _testLastAndPrevious(RuleBasedBreakIterator rbbi, String text) {
+         int p = rbbi.last();
+         int lastP = p;
+         Vector result = new Vector();
+
+         if (p != text.length())
+             errln("last() returned " + p + " instead of " + text.length());
+         while (p != RuleBasedBreakIterator.DONE) {
+             p = rbbi.previous();
+             if (p != RuleBasedBreakIterator.DONE) {
+                 if (p >= lastP)
+                     errln("previous() failed to move backward: previous() on position "
+                                     + lastP + " yielded " + p);
+
+                 result.insertElementAt(text.substring(p, lastP), 0);
+             }
+             else {
+                 if (lastP != 0)
+                     errln("previous() returned DONE prematurely: offset was "
+                                     + lastP + " instead of 0");
+             }
+             lastP = p;
+         }
+         return result;
+     }
+
+     private void compareFragmentLists(String f1Name, String f2Name, Vector f1, Vector f2) {
+         int p1 = 0;
+         int p2 = 0;
+         String s1;
+         String s2;
+         int t1 = 0;
+         int t2 = 0;
+
+         while (p1 < f1.size() && p2 < f2.size()) {
+             s1 = (String)f1.elementAt(p1);
+             s2 = (String)f2.elementAt(p2);
+             t1 += s1.length();
+             t2 += s2.length();
+
+             if (s1.equals(s2)) {
+                 debugLogln("   >" + s1 + "<");
+                 ++p1;
+                 ++p2;
+             }
+             else {
+                 int tempT1 = t1;
+                 int tempT2 = t2;
+                 int tempP1 = p1;
+                 int tempP2 = p2;
+
+                 while (tempT1 != tempT2 && tempP1 < f1.size() && tempP2 < f2.size()) {
+                     while (tempT1 < tempT2 && tempP1 < f1.size()) {
+                         tempT1 += ((String)f1.elementAt(tempP1)).length();
+                         ++tempP1;
+                     }
+                     while (tempT2 < tempT1 && tempP2 < f2.size()) {
+                         tempT2 += ((String)f2.elementAt(tempP2)).length();
+                         ++tempP2;
+                     }
+                 }
+                 logln("*** " + f1Name + " has:");
+                 while (p1 <= tempP1 && p1 < f1.size()) {
+                     s1 = (String)f1.elementAt(p1);
+                     t1 += s1.length();
+                     debugLogln(" *** >" + s1 + "<");
+                     ++p1;
+                 }
+                 logln("***** " + f2Name + " has:");
+                 while (p2 <= tempP2 && p2 < f2.size()) {
+                     s2 = (String)f2.elementAt(p2);
+                     t2 += s2.length();
+                     debugLogln(" ***** >" + s2 + "<");
+                     ++p2;
+                 }
+                 errln("Discrepancy between " + f1Name + " and " + f2Name);
+             }
+         }
+     }
+
+    private void _testFollowing(RuleBasedBreakIterator rbbi, String text, int[] boundaries) {
+       logln("testFollowing():");
+       int p = 2;
+       for(int i = 0; i <= text.length(); i++) {
+           if (i == boundaries[p])
+               ++p;
+           int b = rbbi.following(i);
+           logln("rbbi.following(" + i + ") -> " + b);
+           if (b != boundaries[p])
+               errln("Wrong result from following() for " + i + ": expected " + boundaries[p]
+                               + ", got " + b);
+       }
+   }
+
+   private void _testPreceding(RuleBasedBreakIterator rbbi, String text, int[] boundaries) {
+       logln("testPreceding():");
+       int p = 0;
+       for(int i = 0; i <= text.length(); i++) {
+           int b = rbbi.preceding(i);
+           logln("rbbi.preceding(" + i + ") -> " + b);
+           if (b != boundaries[p])
+               errln("Wrong result from preceding() for " + i + ": expected " + boundaries[p]
+                              + ", got " + b);
+           if (i == boundaries[p + 1])
+               ++p;
+       }
+   }
+
+   private void _testIsBoundary(RuleBasedBreakIterator rbbi, String text, int[] boundaries) {
+       logln("testIsBoundary():");
+       int p = 1;
+       boolean isB;
+       for(int i = 0; i <= text.length(); i++) {
+           isB = rbbi.isBoundary(i);
+           logln("rbbi.isBoundary(" + i + ") -> " + isB);
+           if(i == boundaries[p]) {
+               if (!isB)
+                   errln("Wrong result from isBoundary() for " + i + ": expected true, got false");
+               ++p;
+           }
+           else {
+               if(isB)
+                   errln("Wrong result from isBoundary() for " + i + ": expected false, got true");
+           }
+       }
+   }
+   private void doMultipleSelectionTest(RuleBasedBreakIterator iterator, String testText)
+   {
+       logln("Multiple selection test...");
+       RuleBasedBreakIterator testIterator = (RuleBasedBreakIterator)iterator.clone();
+       int offset = iterator.first();
+       int testOffset;
+       int count = 0;
+
+       do {
+           testOffset = testIterator.first();
+           testOffset = testIterator.next(count);
+           logln("next(" + count + ") -> " + testOffset);
+           if (offset != testOffset)
+               errln("next(n) and next() not returning consistent results: for step " + count + ", next(n) returned " + testOffset + " and next() had " + offset);
+
+           if (offset != RuleBasedBreakIterator.DONE) {
+               count++;
+               offset = iterator.next();
+           }
+       } while (offset != RuleBasedBreakIterator.DONE);
+
+       // now do it backwards...
+       offset = iterator.last();
+       count = 0;
+
+       do {
+           testOffset = testIterator.last();
+           testOffset = testIterator.next(count);
+           logln("next(" + count + ") -> " + testOffset);
+           if (offset != testOffset)
+               errln("next(n) and next() not returning consistent results: for step " + count + ", next(n) returned " + testOffset + " and next() had " + offset);
+
+           if (offset != RuleBasedBreakIterator.DONE) {
+               count--;
+               offset = iterator.previous();
+           }
+       } while (offset != RuleBasedBreakIterator.DONE);
+   }
+
+   private void debugLogln(String s) {
+        final String zeros = "0000";
+        String temp;
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c < '\u007f')
+                out.append(c);
+            else {
+                out.append("\\u");
+                temp = Integer.toHexString((int)c);
+                out.append(zeros.substring(0, 4 - temp.length()));
+                out.append(temp);
+            }
+        }
+         logln(out.toString());
+    }
+  
+}
diff --git a/src/com/ibm/icu/dev/test/rbbi/SimpleBITest.java b/src/com/ibm/icu/dev/test/rbbi/SimpleBITest.java
new file mode 100755
index 0000000..0c1f2d0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/SimpleBITest.java
@@ -0,0 +1,177 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/rbbi/SimpleBITest.java,v $ 
+ * $Date: 2002/02/16 03:05:16 $ 
+ * $Revision: 1.6 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.rbbi;
+
+import java.util.Locale;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class SimpleBITest extends TestFmwk{
+    public static final String testText =
+//        "The rain in Spain stays mainly on the plain.  The plains in Spain are mainly pained with rain.";
+//"one-two now--  Hah!  You owe me exactly $1,345.67...  Pay up, huh?  By the way, why don't I send you my re\u0301sume\u0301?  This is a line\r\nbreak.";
+//"nowisthetimeforallgoodmen...  tocometothehelpoftheircountry";
+"When, in the course of human events, it becomes necessary for one people to dissolve the political bonds which have "
+//"When,inthecourseofhumanevents,itbecomesnecessaryforonepeopletodissolvethepoliticalbondswhichhave"
++ "connectedthemwithanother,andtoassumeamongthepowersoftheearth,theseparateandequalstationtowhichthelaws"
++ "ofnatureandofnature'sGodentitlethem,adecentrespecttotheopinionsofmankindrequiresthattheyshoulddeclarethe"
++ "causeswhichimpelthemtotheseparation\n"
++ "Weholdthesetruthstobeself-evident,thatallmenarecreatedequal,thattheyareendowedbytheirCreatorwithcertain"
++ "unalienablerights,thatamongthesearelife,libertyandthepursuitofhappiness.Thattosecuretheserights,governmentsare"
++ "institutedamongmen,derivingtheirjustpowersfromtheconsentofthegoverned.Thatwheneveranyformofgovernment"
++ "becomesdestructivetotheseends,itistherightofthepeopletoalterortoabolishit,andtoinstitutenewgovernment,laying"
++ "itsfoundationonsuchprinciplesandorganizingitspowersinsuchform,astothemshallseemmostlikelytoeffecttheirsafety"
++ "andhappiness.Prudence,indeed,willdictatethatgovernmentslongestablishedshouldnotbechangedforlightandtransient"
++ "causes;andaccordinglyallexperiencehathshownthatmankindaremoredisposedtosuffer,whileevilsaresufferable,than"
++ "torightthemselvesbyabolishingtheformstowhichtheyareaccustomed.Butwhenalongtrainofabusesandusurpations,"
++ "pursuinginvariablythesameobjectevincesadesigntoreducethemunderabsolutedespotism,itistheirright,itistheirduty,"
++ "tothrowoffsuchgovernment,andtoprovidenewguardsfortheirfuturesecurity.--Suchhasbeenthepatientsufferanceof"
++ "thesecolonies;andsuchisnowthenecessitywhichconstrainsthemtoaltertheirformersystemsofgovernment.Thehistory"
++ "ofthepresentKingofGreatBritainisahistoryofrepeatedinjuriesandusurpations,allhavingindirectobjectthe"
++ "establishmentofanabsolutetyrannyoverthesestates.Toprovethis,letfactsbesubmittedtoacandidworld.\n"
++ "Hehasrefusedhisassenttolaws,themostwholesomeandnecessaryforthepublicgood.\n"
++ "Hehasforbiddenhisgovernorstopasslawsofimmediateandpressingimportance,unlesssuspendedintheiroperationtill"
++ "hisassentshouldbeobtained;andwhensosuspended,hehasutterlyneglectedtoattendtothem.\n"
++ "Hehasrefusedtopassotherlawsfortheaccommodationoflargedistrictsofpeople,unlessthosepeoplewouldrelinquish"
++ "therightofrepresentationinthelegislature,arightinestimabletothemandformidabletotyrantsonly.\n"
++ "Hehascalledtogetherlegislativebodiesatplacesunusual,uncomfortable,anddistantfromthedepositoryoftheirpublic"
++ "records,forthesolepurposeoffatiguingthemintocompliancewithhismeasures.\n"
++ "Hehasdissolvedrepresentativehousesrepeatedly,foropposingwithmanlyfirmnesshisinvasionsontherightsofthepeople.\n"
++ "Hehasrefusedforalongtime,aftersuchdissolutions,tocauseotherstobeelected;wherebythelegislativepowers,"
++ "incapableofannihilation,havereturnedtothepeopleatlargefortheirexercise;thestateremaininginthemeantimeexposed"
++ "toallthedangersofinvasionfromwithout,andconvulsionswithin.\n"
++ "Hehasendeavoredtopreventthepopulationofthesestates;forthatpurposeobstructingthelawsfornaturalizationof"
++ "foreigners;refusingtopassotherstoencouragetheirmigrationhither,andraisingtheconditionsofnewappropriationsof"
++ "lands.\n"
++ "Hehasobstructedtheadministrationofjustice,byrefusinghisassenttolawsforestablishingjudiciarypowers.\n"
++ "Hehasmadejudgesdependentonhiswillalone,forthetenureoftheiroffices,andtheamountandpaymentoftheirsalaries.\n"
++ "Hehaserectedamultitudeofnewoffices,andsenthitherswarmsofofficerstoharassourpeople,andeatouttheir"
++ "substance.\n"
++ "Hehaskeptamongus,intimesofpeace,standingarmieswithouttheconsentofourlegislature.\n"
++ "Hehasaffectedtorenderthemilitaryindependentofandsuperiortocivilpower.\n"
++ "Hehascombinedwithotherstosubjectustoajurisdictionforeigntoourconstitution,andunacknowledgedbyourlaws;"
++ "givinghisassenttotheiractsofpretendedlegislation:\n"
++ "Forquarteringlargebodiesofarmedtroopsamongus:\n"
++ "Forprotectingthem,bymocktrial,frompunishmentforanymurderswhichtheyshouldcommitontheinhabitantsofthese"
++ "states:\n"
++ "Forcuttingoffourtradewithallpartsoftheworld:\n"
++ "Forimposingtaxesonuswithoutourconsent:\n"
++ "Fordeprivingusinmanycases,ofthebenefitsoftrialbyjury:\n"
++ "Fortransportingusbeyondseastobetriedforpretendedoffenses:\n"
++ "ForabolishingthefreesystemofEnglishlawsinaneighboringprovince,establishingthereinanarbitrarygovernment,and"
++ "enlargingitsboundariessoastorenderitatonceanexampleandfitinstrumentforintroducingthesameabsoluteruleinthese"
++ "colonies:\n"
++ "Fortakingawayourcharters,abolishingourmostvaluablelaws,andalteringfundamentallytheformsofourgovernments:\n"
++ "Forsuspendingourownlegislatures,anddeclaringthemselvesinvestedwithpowertolegislateforusinallcaseswhatsoever.\n"
++ "Hehasabdicatedgovernmenthere,bydeclaringusoutofhisprotectionandwagingwaragainstus.\n"
++ "Hehasplunderedourseas,ravagedourcoasts,burnedourtowns,anddestroyedthelivesofourpeople.\n"
++ "Heisatthistimetransportinglargearmiesofforeignmercenariestocompletetheworksofdeath,desolationandtyranny,"
++ "alreadybegunwithcircumstancesofcrueltyandperfidyscarcelyparalleledinthemostbarbarousages,andtotalyunworth"
++ "theheadofacivilizednation.\n"
++ "Hehasconstrainedourfellowcitizenstakencaptiveonthehighseastobeararmsagainsttheircountry,tobecomethe"
++ "executionersoftheirfriendsandbrethren,ortofallthemselvesbytheirhands.\n"
++ "Hehasexciteddomesticinsurrectionsamongstus,andhasendeavoredtobringontheinhabitantsofourfrontiers,the"
++ "mercilessIndiansavages,whoseknownruleofwarfare,isundistinguisheddestructionofallages,sexesandconditions.\n"
++ "Ineverystageoftheseoppressionswehavepetitionedforredressinthemosthumbleterms:ourrepeatedpetitionshave"
++ "beenansweredonlybyrepeatedinjury.Aprince,whosecharacteristhusmarkedbyeveryactwhichmaydefineatyrant,is"
++ "unfittobetherulerofafreepeople.\n"
++ "NorhavewebeenwantinginattentiontoourBritishbrethren.Wehavewarnedthemfromtimetotimeofattemptsbytheir"
++ "legislaturetoextendanunwarrantablejurisdictionoverus.Wehaveremindedthemofthecircumstancesofouremigration"
++ "andsettlementhere.Wehaveappealedtotheirnativejusticeandmagnanimity,andwehaveconjuredthembythetiesofour"
++ "commonkindredtodisavowtheseusurpations,which,wouldinevitablyinterruptourconnectionsandcorrespondence.We"
++ "must,therefore,acquiesceinthenecessity,whichdenouncesourseparation,andholdthem,asweholdtherestofmankind,"
++ "enemiesinwar,inpeacefriends.\n"
++ "We,therefore,therepresentativesoftheUnitedStatesofAmerica,inGeneralCongress,assembled,appealingtothe"
++ "SupremeJudgeoftheworldfortherectitudeofourintentions,do,inthename,andbytheauthorityofthegoodpeopleof"
++ "thesecolonies,solemnlypublishanddeclare,thattheseunitedcoloniesare,andofrightoughttobefreeandindependent"
++ "states;thattheyareabsolvedfromallallegiancetotheBritishCrown,andthatallpoliticalconnectionbetweenthemandthe"
++ "stateofGreatBritain,isandoughttobetotallydissolved;andthatasfreeandindependentstates,theyhavefullpowerto"
++ "leveywar,concludepeace,contractalliances,establishcommerce,andtodoallotheractsandthingswhichindependent"
++ "statesmayofrightdo.Andforthesupportofthisdeclaration,withafirmrelianceontheprotectionofDivineProvidence,we"
++ "mutuallypledgetoeachotherourlives,ourfortunesandoursacredhonor.\n";
+
+	public static void main(String[] args) throws Exception {
+		new SimpleBITest().run(args);
+	}
+
+    public void testWordBreak() throws Exception {
+        BreakIterator wordBreak = BreakIterator.getWordInstance(new Locale("en", "US", "TEST"));
+        int breaks = doTest(wordBreak);
+        logln(String.valueOf(breaks));
+	}
+
+    public void testLineBreak() throws Exception {
+        BreakIterator lineBreak = BreakIterator.getLineInstance(new Locale("en", "US", "TEST"));
+        int breaks = doTest(lineBreak);
+        logln(String.valueOf(breaks));
+	}
+
+    public void testSentenceBreak() throws Exception {
+        BreakIterator sentenceBreak = BreakIterator.getSentenceInstance(new Locale("en", "US", "TEST"));
+        int breaks = doTest(sentenceBreak);
+        logln(String.valueOf(breaks));
+    }
+
+    private int doTest(BreakIterator bi) {
+        // forward
+        bi.setText(testText);
+        int p = bi.first();
+        int lastP = p;
+        String fragment;
+        int breaks = 0;
+        logln("Forward...");
+        while (p != BreakIterator.DONE) {
+            p = bi.next();
+            if (p != BreakIterator.DONE) {
+                fragment = testText.substring(lastP, p);
+            } else {
+                fragment = testText.substring(lastP);
+			}
+            debugPrintln(": >" + fragment + "<");
+            ++breaks;
+            lastP = p;
+        }
+        return breaks;
+    }
+
+    private void debugPrintln(String s) {
+        final String zeros = "0000";
+        String temp;
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c < '\u007f')
+                out.append(c);
+            else {
+                out.append("\\u");
+                temp = Integer.toHexString((int)c);
+                out.append(zeros.substring(0, 4 - temp.length()));
+                out.append(temp);
+            }
+        }
+        logln(out.toString());
+    }
+
+    private void debugPrintln2(String s) {
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= '\u0100')
+                out.append("<" + ((int)c - 0x100) + ">");
+            else
+                out.append(c);
+        }
+        logln(out.toString());
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/rbbi/package.html b/src/com/ibm/icu/dev/test/rbbi/package.html
new file mode 100755
index 0000000..92f1b75
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/rbbi/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 21:35:49 $
+-->
+</head>
+<body bgcolor="white">
+Tests for the RuleBasedBreakIterator.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/sample/ModuleTestSample.java b/src/com/ibm/icu/dev/test/sample/ModuleTestSample.java
new file mode 100644
index 0000000..74c0718
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/sample/ModuleTestSample.java
@@ -0,0 +1,150 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/sample/ModuleTestSample.java,v $
+ * $Date: 2002/08/13 22:00:58 $
+ * $Revision: 1.2 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.sample;
+
+import com.ibm.icu.dev.test.ModuleTest;
+import com.ibm.icu.dev.test.TestDataModule;
+import com.ibm.icu.dev.test.TestDataModule.DataMap;
+
+public class ModuleTestSample extends ModuleTest {
+    public static void main(String[] args) throws Exception {
+	new ModuleTestSample().run(args);
+    }
+
+    // standard loop, settings and cases
+    public void Test01() {
+	while (nextSettings()) {
+	    logln("--------");
+	    logln("String: " + settings.getString("aString"));
+	    if (settings.isDefined("anInt")) {
+		logln("Int: " + settings.getInt("anInt"));
+	    }
+	    logln("Boolean: " + settings.getBoolean("aBoolean"));
+
+	    while (nextCase()) {
+		logln("  ----");
+		logln("  StringArray: " + printArray(testcase.getStringArray("aStringArray")));
+		logln("  IntArray: " + printArray(testcase.getIntArray("anIntArray")));
+		logln("  BooleanArray: " + printArray(testcase.getBooleanArray("aBooleanArray")));
+	    }
+	}
+    }
+
+    // loop with just cases
+    public void Test02() {
+	while (nextCase()) {
+	    logln("----");
+	    logln("String: " + testcase.getString("aString"));
+	    logln("Int: " + testcase.getInt("anInt"));
+	    logln("Boolean: " + testcase.getBoolean("aBoolean"));
+	}
+    }
+
+    // no cases, just uses info for test
+    public void Test03() {
+	DataMap info = testInfo();
+	if (info != null) {
+	    logln(info.getString(TestDataModule.DESCRIPTION)); // standard
+	    logln(info.getString("Extra")); // test-specific
+	}
+    }
+
+    // no data, ModuleTest should not allow this to execute by default
+    public void Test04() {
+	errln("Test04 should not execute!");
+    }
+
+    // special override of validateMethod allows Test05 
+    // to execute even though it has no data in the module
+    protected boolean validateMethod(String methodName) {
+	return methodName.equals("Test05") ? true : super.validateMethod(methodName);
+    }
+
+    // no data, but override of validateMethod allows it to execute
+    public void Test05() {
+	logln("Test05 executed.");
+    }
+
+    // The test data contains an error in the third case.  When getInt("Data") is
+    // executed the error is logged and iteration stops.
+    public void Test06() {
+	while (nextCase()) {
+	    logln("----");
+	    logln("isGood: " + testcase.getString("IsGood"));
+	    logln("  Data: " + testcase.getInt("Data"));
+	}
+    }
+
+    // The test using the data reports an error, which also automatically stops iteration.
+    public void Test07() {
+	while (nextSettings()) {
+	    int value = settings.getInt("Value");
+	    while (nextCase()) {
+		int factor = testcase.getInt("Factor");
+		float result = (float)value / factor;
+		if (result != (int)result) {
+		    errln("the number '" + factor + "' is not a factor of the number '" + value + "'");
+		} else {
+		    logln("'" + factor + "' is a factor of '" + value + "'");
+		}
+	    }
+	}
+    }
+
+    // The number of data elements is incorrect
+    public void Test08() {
+	while (nextCase()) {
+	    int one = testcase.getInt("One");
+	    int two = testcase.getInt("Two");
+	    int three = testcase.getInt("Three");
+	    logln("got: " + one + ", " + two + ", " + three);
+	}
+    }
+
+    // utility print functions to display the data from the resource
+    String printArray(String[] a) {
+	StringBuffer buf = new StringBuffer("String[] {");
+	for (int i = 0; i < a.length; ++i) {
+	    if (i != 0) {
+		buf.append(",");
+	    }
+	    buf.append(" " + a[i]);
+	}
+	buf.append(" }");
+	return buf.toString();
+    }
+
+    String printArray(int[] a) {
+	StringBuffer buf = new StringBuffer("int[] {");
+	for (int i = 0; i < a.length; ++i) {
+	    if (i != 0) {
+		buf.append(",");
+	    }
+	    buf.append(" " + a[i]);
+	}
+	buf.append(" }");
+	return buf.toString();
+    }
+
+    String printArray(boolean[] a) {
+	StringBuffer buf = new StringBuffer("boolean[] {");
+	for (int i = 0; i < a.length; ++i) {
+	    if (i != 0) {
+		buf.append(",");
+	    }
+	    buf.append(" " + a[i]);
+	}
+	buf.append(" }");
+	return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/sample/ModuleTestSampleData.java b/src/com/ibm/icu/dev/test/sample/ModuleTestSampleData.java
new file mode 100644
index 0000000..7d0b63f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/sample/ModuleTestSampleData.java
@@ -0,0 +1,162 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/sample/ModuleTestSampleData.java,v $
+ * $Date: 2002/08/13 22:00:58 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.sample;
+
+import java.util.ListResourceBundle;
+
+/**
+ * This is sample data for ModuleTestSample, which is an illustration
+ * of a subclass of ModuleTest.  This data is in a format which
+ * is understood by ResourceModule, which for simplicity expects
+ * all data, including numeric and boolean data, to be represented
+ * by Strings.
+ */
+public class ModuleTestSampleData extends ListResourceBundle {
+    public Object[][] getContents() {
+	return contents;
+    }
+
+    Object[][] contents = {
+	{ "Info", new Object[][] {
+	    { "Description", "This is a sample test module that illustrates ModuleTest " +
+	      "and uses data formatted for ResourceModule." },
+	    { "Headers", new String[] {
+		"aStringArray", "anIntArray", "aBooleanArray"
+	    }},
+	}},
+	
+
+	{ "TestData", new Object[][] {
+	    { "Test01", new Object[][] {
+		{ "Info", new Object[][] {
+		    { "Description", "A typical test using both settings and cases." },
+		    { "Long_Description", "It does not defined its own headers, but instead " +
+		      "uses the default headers defined for the module.  " +
+		      "There are two sets of settings and three cases." },
+		}},
+		{ "Settings", new Object[] {
+            new Object[][]
+		    {{ "aString", "this is a string" },
+		     { "anInt", "43" },
+		     { "aBoolean", "false" }},
+		    new Object[][] 
+            {{ "aString", "this is another string" },
+		     { "aBoolean", "true" }}
+		}},
+		{ "Cases", new Object[] {
+            new Object[] {
+    		    new String[] { "one", "two", "three" },
+    		    new String[] { "24", "48", "72" },
+    		    new String[] { "true", "false", "true" }
+    		},
+    		new Object[] { 
+                new String[] { "four", "five", "six" },
+    		    new String[] { "-1", "-5", "-10" },
+    		    new String[] { "true", "false", "false" }
+    		},
+    		new Object[] { 
+                new String[] { "bagel", "peanuts", "carrot" },
+    		    new String[] { "0", "00001", "10101" },
+    		    new String[] { "false", "false", "False" }
+            },
+		}}
+	    }},
+
+	    { "Test02", new Object[][] {
+		{ "Info", new Object[][] {
+		    { "Description", "A typical test that uses cases but not settings." },
+		    { "Long_Description", "It defines its own headers." },
+		    { "Headers", new String[] {
+			"aString", "anInt", "aBoolean"
+		    }},
+		}},
+		{ "Cases", new Object[] {
+		    new Object[] { "Superstring", "42", "true" },
+		    new Object[] { "Underdog", "12", "false" },
+		    new Object[] { "ScoobyDoo", "7", "TrUe" }
+		}}
+	    }},
+
+	    { "Test03", new Object[][] {
+		{ "Info", new Object[][] {
+		    { "Description", "A typical test that uses just the info, no cases or settings." },
+		    { "Extra", "This is some extra information." }
+		}},
+	    }},
+
+	    // no Test04 data
+	    // Test04 should cause an exception to be thrown since ModuleTestSample does not
+	    // specify that it is ok for it to have no data.
+
+	    // no Test05 data
+	    // Test05 should just log this fact, since ModuleTestSample indicates that it is
+	    // ok for Test05 to have no data in its override of validateMethod.
+
+	    { "Test06", new Object[][] {
+		{ "Info", new Object[][] {
+		    { "Description", "A test that has bad data." },
+		    { "Long_Description", "This illustrates how a data error will automatically " +
+		      "terminate the settings and cases loop." },
+		    { "Headers", new String[] {
+			"IsGood", "Data",
+		    }},
+		}},
+		{ "Cases", new Object[] {
+		    new Object[] { "Good", "23" },
+		    new Object[] { "Good", "-123" },
+		    new Object[] { "Bad", "Whoops" },
+		    new Object[] { "Not Executed", "35" },
+		}},
+	    }},
+
+	    { "Test07", new Object[][] {
+		{ "Info", new Object[][] {
+		    { "Description", "A test that fails with a certain combination of settings and case." },
+		    { "Long_Description", "This illustrates how a test error will automatically " +
+		      "terminate the settings and cases loop.  Settings data is values, the case " +
+		      "data is factors.  The third factor is not a factor of the second value.  " +
+		      "The test will log an error, which will automatically stop the loop." },
+		    { "Headers", new String[] {
+			"Factor",
+		    }},
+		}},
+		{ "Settings" , new Object[] {
+		    new Object[][] {{ "Value", "210" }},
+		    new Object[][] {{ "Value", "420" }},
+		    new Object[][] {{ "Value", "42" }},
+		    new Object[][] {{ "Value", "Not reached." }}
+		}},
+		{ "Cases", new Object[] {
+		    new Object[] { "2" },
+		    new Object[] { "3" },
+		    new Object[] { "5" },
+		    new Object[] { "7" },
+		}},
+	    }},
+
+	    { "Test08", new Object[][] {
+		{ "Info", new Object[][] {
+		    { "Description", "A test with data missing from a test case." },
+		    { "Headers", new String[] {
+			"One", "Two", "Three"
+		    }},
+		}},
+		{ "Cases", new Object[] {
+		    new Object[] { "1", "2", "3" },
+		    new Object[] { "4", "5" }, // too short
+		    new Object[] { "6", "7", "8" },
+		}},
+	    }},
+	}},
+    };
+}
diff --git a/src/com/ibm/icu/dev/test/search/SearchTest.java b/src/com/ibm/icu/dev/test/search/SearchTest.java
new file mode 100755
index 0000000..24770a1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/search/SearchTest.java
@@ -0,0 +1,1797 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ * $Source: 
+ * $Date: 
+ * $Revision: 
+ *
+ *****************************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : collate/StringSearchTest
+ * Source File: $ICU4CRoot/source/test/intltest/srchtest.cpp
+ **/
+
+package com.ibm.icu.dev.test.search;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+
+public class SearchTest extends TestFmwk {
+    
+    //inner class
+    static class SearchData {
+        SearchData(String text, String pattern, String coll, int strength, String breaker,
+                   int[] offset, int[] size) {
+            this.text = text;
+            this.pattern = pattern;
+            this.collator = coll;
+            this.strength = strength;
+            this.breaker = breaker;
+            this.offset = offset;
+            this.size = size;
+        }
+        String              text;
+        String              pattern;
+        String              collator;
+        int                 strength;
+        String              breaker;
+        int[]               offset;
+        int[]               size;
+    };
+    
+    RuleBasedCollator m_en_us_; 
+    RuleBasedCollator m_fr_fr_;
+    RuleBasedCollator m_de_;
+    RuleBasedCollator m_es_; 
+    BreakIterator     m_en_wordbreaker_ = BreakIterator.getWordInstance();
+    BreakIterator     m_en_characterbreaker_ = BreakIterator.getCharacterInstance();
+    
+    static SearchData[] BASIC = {
+        new SearchData("xxxxxxxxxxxxxxxxxxxx",          "fisher",       null, Collator.TERTIARY, null, new int[] {-1},            new int[]{0}),
+        new SearchData("silly spring string",           "string",       null, Collator.TERTIARY, null, new int[]{13, -1},         new int[]{6}),
+        new SearchData("silly spring string string",    "string",       null, Collator.TERTIARY, null, new int[]{13, 20, -1},     new int[]{6, 6}),
+        new SearchData("silly string spring string",    "string",       null, Collator.TERTIARY, null, new int[]{6, 20, -1},      new int[]{6, 6}),
+        new SearchData("string spring string",          "string",       null, Collator.TERTIARY, null, new int[]{0, 14, -1},      new int[]{6, 6}),
+        new SearchData("Scott Ganyo",                   "c",            null, Collator.TERTIARY, null, new int[]{1, -1},          new int[]{1}),
+        new SearchData("Scott Ganyo",                   " ",            null, Collator.TERTIARY, null, new int[]{5, -1},          new int[]{1}),
+        new SearchData("\u0300\u0325",                  "\u0300",       null, Collator.TERTIARY, null, new int[]{-1},             new int[]{0}),
+        new SearchData("a\u0300\u0325",                 "\u0300",       null, Collator.TERTIARY, null, new int[]{-1},             new int[]{0}),
+        new SearchData("a\u0300\u0325",                 "\u0300\u0325", null, Collator.TERTIARY, null, new int[]{1, -1},          new int[]{2}),
+        new SearchData("a\u0300b",                      "\u0300",       null, Collator.TERTIARY, null, new int[]{1, -1},          new int[]{1}),
+        new SearchData("\u00c9",                        "e",            null, Collator.PRIMARY,  null, new int[]{0, -1},          new int[]{1}),
+        new SearchData(null,                            null,           null, Collator.TERTIARY, null, new int[]{-1},             new int[]{0})
+    };
+    
+    SearchData BREAKITERATOREXACT[] = {
+        new SearchData("foxy fox", "fox", null, Collator.TERTIARY, "characterbreaker", new int[] {0, 5, -1}, new int[] {3, 3}),
+        new SearchData("foxy fox", "fox", null, Collator.TERTIARY, "wordbreaker", new int[] {5, -1}, new int[] {3}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, "characterbreaker", new int[] {10, 14, -1}, new int[] {3, 2}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, "wordbreaker", new int[] {10, -1}, new int[] {3}),
+        new SearchData("Channel, another channel, more channels, and one last Channel", "Channel", "es", Collator.TERTIARY, 
+             "wordbreaker", new int[] {0, 54, -1}, new int[] {7, 7}),
+        /* jitterbug 1745 */
+        new SearchData("testing that \u00e9 does not match e", "e", null, Collator.TERTIARY, 
+            "characterbreaker", new int[] {1, 17, 30, -1}, new int[] {1, 1, 1}),
+        new SearchData("testing that string ab\u00e9cd does not match e", "e", null, Collator.TERTIARY, 
+            "characterbreaker", new int[] {1, 28, 41, -1}, new int[] {1, 1, 1}),
+        new SearchData("\u00c9", "e", "fr", Collator.PRIMARY,  "characterbreaker", new int[]{0, -1}, new int[]{1}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    SearchData BREAKITERATORCANONICAL[] = {
+        new SearchData("foxy fox", "fox", null, Collator.TERTIARY, "characterbreaker", new int[] {0, 5, -1}, new int[] {3, 3}),
+        new SearchData("foxy fox", "fox", null, Collator.TERTIARY, "wordbreaker", new int[] {5, -1}, new int[] {3}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, "characterbreaker", new int[] {10, 14, -1}, new int[] {3, 2}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, "wordbreaker", new int[] {10, -1}, new int[] {3}), 
+        new SearchData("Channel, another channel, more channels, and one last Channel", "Channel", "es", Collator.TERTIARY, "wordbreaker", 
+                       new int[] {0, 54, -1}, new int[] {7, 7}),
+        /* jitterbug 1745 */
+        new SearchData("testing that \u00e9 does not match e", "e", null, Collator.TERTIARY, 
+            "characterbreaker", new int[] {1, 17, 30, -1}, new int[] {1, 1, 1}),
+        new SearchData("testing that string ab\u00e9cd does not match e", "e", null, 
+             Collator.TERTIARY, "characterbreaker", new int[] {1, 28, 41, -1}, new int[] {1, 1, 1}),
+        new SearchData("\u00c9", "e", "fr", Collator.PRIMARY,  "characterbreaker", new int[]{0, -1}, new int[]{1}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    SearchData BASICCANONICAL[] = {
+        new SearchData("xxxxxxxxxxxxxxxxxxxx", "fisher", null, Collator.TERTIARY, null, new int[] {-1}, new int [] {0}),
+        new SearchData("silly spring string", "string", null, Collator.TERTIARY, null, new int[] {13, -1}, new int[] {6}),
+        new SearchData("silly spring string string", "string", null, Collator.TERTIARY, null, new int[] {13, 20, -1}, new int[] {6, 6}),
+        new SearchData("silly string spring string", "string", null, Collator.TERTIARY, null, new int[] {6, 20, -1}, new int[] {6, 6}),
+        new SearchData("string spring string", "string", null, Collator.TERTIARY, null, new int[] {0, 14, -1}, new int[] {6, 6}),
+        new SearchData("Scott Ganyo", "c", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {1}),
+        new SearchData("Scott Ganyo", " ", null, Collator.TERTIARY, null, new int[] {5, -1}, new int[] {1}),
+        new SearchData("\u0300\u0325", "\u0300", null, Collator.TERTIARY, null, new int [] {0, -1}, new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0300", null, Collator.TERTIARY, null, new int [] {1, -1}, new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0300\u0325", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[]{2}),
+        new SearchData("a\u0300b", "\u0300", null, Collator.TERTIARY, null, new int[]{1, -1}, new int[] {1}),
+        new SearchData("a\u0300\u0325b", "\u0300b", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {3}),
+        new SearchData("\u0325\u0300A\u0325\u0300", "\u0300A\u0300", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {5}),
+        new SearchData("\u0325\u0300A\u0325\u0300", "\u0325A\u0325", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {5}),
+        new SearchData("a\u0300\u0325b\u0300\u0325c \u0325b\u0300 \u0300b\u0325", "\u0300b\u0325", null, Collator.TERTIARY, null, 
+            new int[] {1, 12, -1}, new int[] {5, 3}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[]{0})
+    };
+
+    SearchData COLLATOR[] = {
+        /* english */
+        new SearchData("fox fpx", "fox", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {3}), 
+        /* tailored */
+        new SearchData("fox fpx", "fox", null, Collator.PRIMARY, null, new int[] {0, 4, -1}, new int[] {3, 3}), 
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    String TESTCOLLATORRULE = "& o,O ; p,P";
+    String EXTRACOLLATIONRULE = " & ae ; \u00e4 & AE ; \u00c4 & oe ; \u00f6 & OE ; \u00d6 & ue ; \u00fc & UE ; \u00dc";
+
+    
+    SearchData COLLATORCANONICAL[] = {
+        /* english */
+        new SearchData("fox fpx", "fox", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {3}), 
+        /* tailored */
+        new SearchData("fox fpx", "fox", null, Collator.PRIMARY, null, new int[] {0, 4, -1}, new int[] {3, 3}), 
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData COMPOSITEBOUNDARIES[] = {
+        new SearchData("\u00C0", "A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u00C0C", "A", null, Collator.TERTIARY, null, new int[]  {0, 1, -1}, new int[]  {1, 1}),
+        new SearchData("\u00C0A", "A", null, Collator.TERTIARY, null, new int[] {0, 1, -1}, new int[] {1, 1}),
+        new SearchData("B\u00C0", "A", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {1}),
+        new SearchData("\u00C0B", "A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u00C0", "\u0300", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0300\u00C0", "\u0300", null, Collator.TERTIARY, null, new int[] {0, 1, -1}, new int[] {1, 1}),
+        new SearchData("\u00C0\u0300", "\u0300", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        /* A + 030A + 0301 */
+        new SearchData("\u01FA", "\u01FA", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u01FA", "\u030A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "A\u030A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u030AA", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u0301", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "A\u0301", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u0301A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u030A\u0301", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u01FA", "A\u030A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FAA", "\u0301A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u0F73", "\u0F73", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0F73", "\u0F71", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u0F73", "\u0F72", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u0F73", "\u0F71\u0F72", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u0F73", "A\u0F71", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u0F73A", "\u0F72A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData COMPOSITEBOUNDARIESCANONICAL[] = {
+        new SearchData("\u00C0", "A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u00C0C", "A", null, Collator.TERTIARY, null, new int[] {0, 1, -1}, new int[] {1, 1}),
+        new SearchData("\u00C0A", "A", null, Collator.TERTIARY, null, new int[] {0, 1, -1}, new int[] {1, 1}),
+        new SearchData("B\u00C0", "A", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {1}),
+        new SearchData("\u00C0B", "A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u00C0", "\u0300", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0300\u00C0", "\u0300", null, Collator.TERTIARY, null, new int[] {0, 1, -1}, new int[] {1, 1}),
+        /* \u0300 blocked by \u0300 */
+        new SearchData("\u00C0\u0300", "\u0300", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        /* A + 030A + 0301 */
+        new SearchData("\u01FA", "\u01FA", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u01FA", "\u030A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u01FA", "A\u030A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u01FA", "\u030AA", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u0301", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        /* blocked accent */
+        new SearchData("\u01FA", "A\u0301", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u0301A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u030A\u0301", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u01FA", "A\u030A", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {1}),
+        new SearchData("\u01FAA", "\u0301A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("\u0F73", "\u0F73", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0F73", "\u0F71", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0F73", "\u0F72", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0F73", "\u0F71\u0F72", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u0F73", "A\u0F71", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("\u0F73A", "\u0F72A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("\u01FA A\u0301\u030A A\u030A\u0301 A\u030A \u01FA", "A\u030A", 
+            null, Collator.TERTIARY, null, new int[] {0, 6, 10, 13, -1}, new int[] {1, 3, 2, 1}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData SUPPLEMENTARY[] = {
+        /* 012345678901234567890123456789012345678901234567890012345678901234567890123456789012345678901234567890012345678901234567890123456789 */
+        new SearchData("abc \uD800\uDC00 \uD800\uDC01 \uD801\uDC00 \uD800\uDC00abc abc\uD800\uDC00 \uD800\uD800\uDC00 \uD800\uDC00\uDC00", 
+            "\uD800\uDC00", null, Collator.TERTIARY, null, new int[] {4, 13, 22, 26, 29, -1}, new int[] {2, 2, 2, 2, 2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    String CONTRACTIONRULE = "&z = ab/c < AB < X\u0300 < ABC < X\u0300\u0315";
+    
+    SearchData CONTRACTION[] = {
+        /* common discontiguous */
+        new SearchData("A\u0300\u0315", "\u0300", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("A\u0300\u0315", "\u0300\u0315", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        /* contraction prefix */
+        new SearchData("AB\u0315C", "A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("AB\u0315C", "AB", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("AB\u0315C", "\u0315", null, Collator.TERTIARY, null, new int[] {2, -1}, new int[] {1}),
+        /* discontiguous problem here for backwards iteration. 
+        accents not found because discontiguous stores all information */
+        new SearchData("X\u0300\u0319\u0315", "\u0319", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+         /* ends not with a contraction character */
+        new SearchData("X\u0315\u0300D", "\u0300\u0315", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("X\u0315\u0300D", "X\u0300\u0315", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {3}),
+        new SearchData("X\u0300\u031A\u0315D", "X\u0300", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        /* blocked discontiguous */
+        new SearchData("X\u0300\u031A\u0315D", "\u031A\u0315D", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("ab", "z", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    SearchData CONTRACTIONCANONICAL[] = {
+        /* common discontiguous */
+        new SearchData("A\u0300\u0315", "\u0300", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        new SearchData("A\u0300\u0315", "\u0300\u0315", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        /* contraction prefix */
+        new SearchData("AB\u0315C", "A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("AB\u0315C", "AB", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("AB\u0315C", "\u0315", null, Collator.TERTIARY, null, new int[] {2, -1}, new int[] {1}),
+        /* discontiguous problem here for backwards iteration. 
+        forwards gives 0, 4 but backwards give 1, 3 */
+        /* {"X\u0300\u0319\u0315", "\u0319", null, Collator.TERTIARY, null, {0, -1}, 
+        {4}}, */
+        
+         /* ends not with a contraction character */
+        new SearchData("X\u0315\u0300D", "\u0300\u0315", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("X\u0315\u0300D", "X\u0300\u0315", null, Collator.TERTIARY, null, 
+            new int[] {0, -1}, new int[] {3}),
+        new SearchData("X\u0300\u031A\u0315D", "X\u0300", null, Collator.TERTIARY, null, 
+            new int[] {0, -1}, new int[] {4}),
+        /* blocked discontiguous */
+        new SearchData("X\u0300\u031A\u0315D", "\u031A\u0315D", null, Collator.TERTIARY, null, 
+            new int[] {1, -1}, new int[] {4}),
+        new SearchData("ab", "z", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    SearchData MATCH[] = {
+        new SearchData("a busy bee is a very busy beeee", "bee", null, Collator.TERTIARY, null, 
+        new int[] {7, 26, -1}, new int[] {3, 3}),
+        /* 012345678901234567890123456789012345678901234567890 */
+        new SearchData("a busy bee is a very busy beeee with no bee life", "bee", null, 
+            Collator.TERTIARY, null, new int[] {7, 26, 40, -1}, new int[] {3, 3, 3}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    String IGNORABLERULE = "&a = \u0300";
+    
+    SearchData IGNORABLE[] = {
+        new SearchData("\u0315\u0300 \u0315\u0300\u0315 ", "\u0300", null, Collator.PRIMARY, null, 
+            new int[] {0, 3, -1}, new int[] {2, 3}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    SearchData NORMCANONICAL[] = {
+        new SearchData("\u0300\u0325", "\u0300", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("\u0300\u0325", "\u0325", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0325\u0300", null, Collator.TERTIARY, null, new int[] {1, -1}, 
+            new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0300\u0325", null, Collator.TERTIARY, null, new int[] {1, -1}, 
+            new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0325", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0300", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    SearchData NORMEXACT[] = {
+        new SearchData("a\u0300\u0325", "\u0325\u0300", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData NONNORMEXACT[] = {
+        new SearchData("a\u0300\u0325", "\u0325\u0300", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    SearchData OVERLAP[] = {
+        new SearchData("abababab", "abab", null, Collator.TERTIARY, null, new int[] {0, 2, 4, -1}, new int[] {4, 4, 4}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    SearchData NONOVERLAP[] = {
+        new SearchData("abababab", "abab", null, Collator.TERTIARY, null, new int[] {0, 4, -1}, new int[] {4, 4}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    SearchData OVERLAPCANONICAL[] = {
+        new SearchData("abababab", "abab", null, Collator.TERTIARY, null, new int[] {0, 2, 4, -1}, 
+                        new int[] {4, 4, 4}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    SearchData NONOVERLAPCANONICAL[] = {
+        new SearchData("abababab", "abab", null, Collator.TERTIARY, null, new int[] {0, 4, -1}, new int[] {4, 4}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    SearchData PATTERNCANONICAL[] = {
+        new SearchData("The quick brown fox jumps over the lazy foxes", "the", null, 
+                       Collator.PRIMARY, null, new int[] {0, 31, -1}, new int[] {3, 3}),
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", null, 
+                       Collator.PRIMARY, null, new int[] {16, 40, -1}, new int[] {3, 3}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    SearchData PATTERN[] = {
+        new SearchData("The quick brown fox jumps over the lazy foxes", "the", null, 
+                       Collator.PRIMARY, null, new int[] {0, 31, -1}, new int[] {3, 3}),
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", null, 
+                       Collator.PRIMARY, null, new int[] {16, 40, -1}, new int[] {3, 3}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    SearchData STRENGTH[] = {
+        /*012345678901234567890123456789012345678901234567890123456789*/
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", "en", 
+                       Collator.PRIMARY, null, new int[] {16, 40, -1}, new int[] {3, 3}),
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", "en", 
+                       Collator.PRIMARY, "wordbreaker", new int[] {16, -1}, new int[] {3}),
+        new SearchData("blackbirds Pat p\u00E9ch\u00E9 p\u00EAche p\u00E9cher p\u00EAcher Tod T\u00F6ne black Tofu blackbirds Ton PAT toehold blackbird black-bird pat toe big Toe",
+                       "peche", "fr", Collator.PRIMARY, null, new int[] {15, 21, 27, 34, -1}, new int[] {5, 5, 5, 5}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, null, 
+                        new int[] {10, 14, -1}, new int[] {3, 2}),
+        new SearchData("A channel, another CHANNEL, more Channels, and one last channel...", "channel", "es", 
+                        Collator.PRIMARY, null, new int[] {2, 19, 33, 56, -1}, new int[] {7, 7, 7, 7}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    SearchData STRENGTHCANONICAL[] = {
+        /*012345678901234567890123456789012345678901234567890123456789 */
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", "en", 
+                       Collator.PRIMARY, null, new int[] {16, 40, -1}, new int[] {3, 3}),
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", "en", 
+                       Collator.PRIMARY, "wordbreaker", new int[] {16, -1}, new int[] {3}),
+        new SearchData("blackbirds Pat p\u00E9ch\u00E9 p\u00EAche p\u00E9cher p\u00EAcher Tod T\u00F6ne black Tofu blackbirds Ton PAT toehold blackbird black-bird pat toe big Toe",
+                       "peche", "fr", Collator.PRIMARY, null, new int[] {15, 21, 27, 34, -1}, new int[] {5, 5, 5, 5}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, null, 
+                       new int[] {10, 14, -1}, new int[] {3, 2}),
+        new SearchData("A channel, another CHANNEL, more Channels, and one last channel...", "channel", "es", 
+                       Collator.PRIMARY, null, new int[]{2, 19, 33, 56, -1}, new int[] {7, 7, 7, 7}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[]{0})
+    };
+    
+    SearchData SUPPLEMENTARYCANONICAL[] = {
+        /*012345678901234567890123456789012345678901234567890012345678901234567890123456789012345678901234567890012345678901234567890123456789 */
+        new SearchData("abc \uD800\uDC00 \uD800\uDC01 \uD801\uDC00 \uD800\uDC00abc abc\uD800\uDC00 \uD800\uD800\uDC00 \uD800\uDC00\uDC00", 
+                       "\uD800\uDC00", null, Collator.TERTIARY, null, new int[] {4, 13, 22, 26, 29, -1}, 
+                       new int[] {2, 2, 2, 2, 2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    static SearchData VARIABLE[] = {
+        /*012345678901234567890123456789012345678901234567890123456789*/
+        new SearchData("blackbirds black blackbirds blackbird black-bird", "blackbird", null, Collator.TERTIARY,   null, 
+        new int[] {0, 17, 28, 38, -1}, new int[] {9, 9, 9, 10}),
+        
+        /* to see that it doesn't go into an infinite loop if the start of text
+        is a ignorable character */
+        new SearchData(" on",                                              "go",        null, Collator.TERTIARY,   null, 
+                       new int[] {-1}, new int[]{0}),
+        new SearchData("abcdefghijklmnopqrstuvwxyz",                       "   ",       null, Collator.PRIMARY,    null, 
+                        new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1}, 
+                        new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
+        
+        /* testing tightest match */ 
+        new SearchData(" abc  a bc   ab c    a  bc     ab  c",             "abc",       null, Collator.QUATERNARY, null, 
+                       new int[]{1, -1}, new int[] {3}),
+        /*012345678901234567890123456789012345678901234567890123456789 */
+        new SearchData(" abc  a bc   ab c    a  bc     ab  c",             "abc",       null, Collator.SECONDARY,  null,
+                       new int[] {1, 6, 13, 21, 31, -1}, new int[] {3, 4, 4, 5, 5}),
+    
+        /* totally ignorable text */
+        new SearchData("           ---------------",                       "abc",       null, Collator.SECONDARY,  null, 
+                       new int[] {-1}, new int[] {0}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    static SearchData TEXTCANONICAL[] = {
+        new SearchData("the foxy brown fox",                               "fox",       null, Collator.TERTIARY,   null,
+                       new int[] {4, 15, -1}, new int[] {3, 3}),
+        new SearchData("the quick brown fox",                              "fox",       null, Collator.TERTIARY,   null,
+                       new int[] {16, -1}, new int[]{3}),
+        new SearchData(null, null, null, Collator.TERTIARY,null, new int[] {-1}, new int[] {0})
+    };
+    
+    /**
+     * Constructor
+     */
+    public SearchTest()
+    {
+        m_en_us_ = (RuleBasedCollator)Collator.getInstance(Locale.US); 
+        m_fr_fr_ = (RuleBasedCollator)Collator.getInstance(Locale.FRANCE);
+        m_de_ = (RuleBasedCollator)Collator.getInstance(new Locale("de", "DE"));
+        m_es_ = (RuleBasedCollator)Collator.getInstance(new Locale("es", "ES")); 
+        
+        try {
+            String rules = m_de_.getRules() + EXTRACOLLATIONRULE;
+            m_de_ = new RuleBasedCollator(rules);
+            rules = m_es_.getRules() + EXTRACOLLATIONRULE;
+            m_es_ = new RuleBasedCollator(rules);
+        }
+        catch (Exception e) {
+            errln("Error creating modified German and Spanish collators");
+        }
+    }
+    
+    public static void main(String[] args) throws Exception {
+        new SearchTest().run(args);
+        // new SearchTest().TestContraction();
+    }
+    
+    RuleBasedCollator getCollator(String collator) {
+        if (collator == null) {
+            return m_en_us_;
+        } if (collator.equals("fr")) {
+            return m_fr_fr_;
+        } else if (collator.equals("de")) {
+            return m_de_;
+        } else if (collator.equals("es")) {
+            return m_es_;
+        } else {
+            return m_en_us_;
+        }
+    }
+    
+    BreakIterator getBreakIterator(String breaker) {
+        if (breaker == null) {
+            return null;
+        } if (breaker.equals("wordbreaker")) {
+            return m_en_wordbreaker_;
+        } else {
+            return m_en_characterbreaker_;
+        }
+    }
+
+    boolean assertCanonicalEqual(SearchData search) {
+        Collator      collator = getCollator(search.collator);
+        BreakIterator breaker  = getBreakIterator(search.breaker);
+        StringSearch  strsrch; 
+        
+        String text = search.text;
+        String  pattern = search.pattern;
+    
+        if (breaker != null) {
+            breaker.setText(text);
+        }
+        collator.setStrength(search.strength);
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), (RuleBasedCollator)collator, breaker);
+            strsrch.setCanonical(true);
+        } catch (Exception e) {
+            errln("Error opening string search" + e.getMessage());
+            return false;
+        }   
+        
+        if (!assertEqualWithStringSearch(strsrch, search)) {
+            collator.setStrength(Collator.TERTIARY);
+            return false;
+        }
+        collator.setStrength(Collator.TERTIARY);
+        return true;
+    }
+    
+    boolean assertEqual(SearchData search) {
+        Collator      collator = getCollator(search.collator);
+        BreakIterator breaker  = getBreakIterator(search.breaker);
+        StringSearch  strsrch; 
+        
+        String text = search.text;
+        String  pattern = search.pattern;
+    
+        if (breaker != null) {
+            breaker.setText(text);
+        }
+        collator.setStrength(search.strength);
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), (RuleBasedCollator)collator, breaker);
+        } catch (Exception e) {
+            errln("Error opening string search " + e.getMessage());
+            return false;
+        }
+        
+        if (!assertEqualWithStringSearch(strsrch, search)) {
+            collator.setStrength(Collator.TERTIARY);
+            return false;
+        }
+        collator.setStrength(Collator.TERTIARY);
+        return true;
+    }
+    
+    boolean assertEqualWithAttribute(SearchData search, boolean canonical, boolean overlap) {
+        Collator      collator = getCollator(search.collator);
+        BreakIterator breaker  = getBreakIterator(search.breaker);
+        StringSearch  strsrch; 
+        
+        String text = search.text;
+        String  pattern = search.pattern;
+    
+        if (breaker != null) {
+            breaker.setText(text);
+        }
+        collator.setStrength(search.strength);
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), (RuleBasedCollator)collator, breaker);
+            strsrch.setCanonical(canonical);
+            strsrch.setOverlapping(overlap);
+        } catch (Exception e) {
+            errln("Error opening string search " + e.getMessage());
+            return false;
+        }
+        
+        if (!assertEqualWithStringSearch(strsrch, search)) {
+            collator.setStrength(Collator.TERTIARY);
+            return false;
+        }
+        collator.setStrength(Collator.TERTIARY);
+        return true;
+    }
+    
+    boolean assertEqualWithStringSearch(StringSearch strsrch, SearchData search) {
+        int           count       = 0;
+        int   matchindex  = search.offset[count];
+        String matchtext;
+        
+        if (strsrch.getMatchStart() != SearchIterator.DONE ||
+            strsrch.getMatchLength() != 0) {
+            errln("Error with the initialization of match start and length");
+        }
+        // start of following matches 
+        while (matchindex >= 0) {
+            int matchlength = search.size[count];
+            strsrch.next();
+            //int x = strsrch.getMatchStart();
+            if (matchindex != strsrch.getMatchStart() || 
+                matchlength != strsrch.getMatchLength()) {
+                errln("Text: " + search.text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error following match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return false;
+            }
+            count ++;
+            
+            matchtext = strsrch.getMatchedText();
+            String targetText = search.text;
+            if (matchlength > 0 &&
+                targetText.substring(matchindex, matchindex + matchlength).compareTo(matchtext) != 0) {
+                errln("Error getting following matched text");
+            }
+    
+            matchindex = search.offset[count];
+        }
+        strsrch.next();
+        if (strsrch.getMatchStart() != SearchIterator.DONE ||
+            strsrch.getMatchLength() != 0) {
+                errln("Text: " + search.text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error following match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return false;
+        }
+        // start of preceding matches 
+        count = count == 0 ? 0 : count - 1;
+        matchindex = search.offset[count];
+        while (matchindex >= 0) {
+            int matchlength = search.size[count];
+            strsrch.previous();
+            if (matchindex != strsrch.getMatchStart() || 
+                matchlength != strsrch.getMatchLength()) {
+                errln("Text: " + search.text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error following match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return false;
+            }
+            
+            matchtext = strsrch.getMatchedText();
+            String targetText = search.text;
+            if (matchlength > 0 && 
+                targetText.substring(matchindex, matchindex + matchlength).compareTo(matchtext) != 0) {
+                errln("Error getting following matched text");
+            }
+    
+            matchindex = count > 0 ? search.offset[count - 1] : -1;
+            count --;
+        }
+        strsrch.previous();
+        if (strsrch.getMatchStart() != SearchIterator.DONE ||
+            strsrch.getMatchLength() != 0) {
+                errln("Text: " + search.text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error following match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return false;
+        }
+        return true;
+    }
+    
+    public void TestBasic() {
+        int count = 0;
+        while (BASIC[count].text != null) {
+            if (!assertEqual(BASIC[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+    }
+    
+    public void TestBreakIterator() {
+        
+        String text = BREAKITERATOREXACT[0].text;
+        String pattern = BREAKITERATOREXACT[0].pattern;
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error opening string search");
+            return;
+        }
+        
+        strsrch.setBreakIterator(null);
+        if (strsrch.getBreakIterator() != null) {
+            errln("Error usearch_getBreakIterator returned wrong object");
+        }
+        
+        strsrch.setBreakIterator(m_en_characterbreaker_);
+        if (!strsrch.getBreakIterator().equals(m_en_characterbreaker_)) {
+            errln("Error usearch_getBreakIterator returned wrong object");
+        }
+        
+        strsrch.setBreakIterator(m_en_wordbreaker_);
+        if (!strsrch.getBreakIterator().equals(m_en_wordbreaker_)) {
+            errln("Error usearch_getBreakIterator returned wrong object");
+        }
+    
+        int count = 0;
+        while (count < 4) {
+            // special purposes for tests numbers 0-3
+            SearchData        search   = BREAKITERATOREXACT[count];     
+            RuleBasedCollator collator = getCollator(search.collator);
+            BreakIterator     breaker  = getBreakIterator(search.breaker);
+                  //StringSearch      strsrch; 
+        
+            text = search.text;
+            pattern = search.pattern; 
+            if (breaker != null) {
+                breaker.setText(text);
+            }
+            collator.setStrength(search.strength);
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), collator, breaker);
+            if (strsrch.getBreakIterator() != breaker) {
+                errln("Error setting break iterator");
+            }
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                collator.setStrength(Collator.TERTIARY);
+            }
+            search   = BREAKITERATOREXACT[count + 1];
+            breaker  = getBreakIterator(search.breaker);
+            if (breaker != null) {
+                breaker.setText(text);
+            }
+            strsrch.setBreakIterator(breaker);
+            if (strsrch.getBreakIterator() != breaker) {
+                errln("Error setting break iterator");
+            }
+            strsrch.reset();
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                 errln("Error at test number " + count);
+            }
+            count += 2;
+        }
+        count = 0;
+        while (BREAKITERATOREXACT[count].text != null) {
+            if (!assertEqual(BREAKITERATOREXACT[count])) {
+                errln("Error at test number " + count);
+            }
+             count++;
+        }
+    }
+    
+    public void TestBreakIteratorCanonical() {
+        int        count  = 0;
+        while (count < 4) {
+            // special purposes for tests numbers 0-3
+            SearchData     search   = BREAKITERATORCANONICAL[count];     
+        
+            String text = search.text;
+            String pattern = search.pattern;
+            RuleBasedCollator collator = getCollator(search.collator);
+            collator.setStrength(search.strength);
+    
+            BreakIterator breaker = getBreakIterator(search.breaker);
+            StringSearch  strsrch = null;
+            try {
+                strsrch = new StringSearch(pattern, new StringCharacterIterator(text), collator, breaker);
+            } catch (Exception e) {
+                errln("Error creating string search data");
+                return;
+            }
+            strsrch.setCanonical(true);
+            if (!strsrch.getBreakIterator().equals(breaker)) {
+                errln("Error setting break iterator");
+                return;
+            }
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                collator.setStrength(Collator.TERTIARY);
+                return;
+            }
+            search  = BREAKITERATOREXACT[count + 1];
+            breaker = getBreakIterator(search.breaker);
+            breaker.setText(strsrch.getTarget());
+            strsrch.setBreakIterator(breaker);
+            if (!strsrch.getBreakIterator().equals(breaker)) {
+                errln("Error setting break iterator");
+                return;
+            }
+            strsrch.reset();
+            strsrch.setCanonical(true);
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                 errln("Error at test number " + count);
+                 return;
+            }
+            count += 2;
+        }
+        count = 0;
+        while (BREAKITERATORCANONICAL[count].text != null) {
+             if (!assertEqual(BREAKITERATORCANONICAL[count])) {
+                 errln("Error at test number " + count);
+                 return;
+             }
+             count++;
+        }
+    }
+    
+    public void TestCanonical() {
+        int count = 0;
+        while (BASICCANONICAL[count].text != null) {
+        	if (!assertCanonicalEqual(BASICCANONICAL[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+    }
+    
+    public void TestCollator() {
+        // test collator that thinks "o" and "p" are the same thing
+        String text = COLLATOR[0].text;
+        String pattern  = COLLATOR[0].pattern;
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);    
+        } catch (Exception e) {
+            errln("Error opening string search ");
+            return;
+        }
+        if (!assertEqualWithStringSearch(strsrch, COLLATOR[0])) {
+            return;
+        }
+        String rules = TESTCOLLATORRULE;
+        RuleBasedCollator tailored = null;
+        try {
+            tailored = new RuleBasedCollator(rules);
+            tailored.setStrength(COLLATOR[1].strength); 
+        } catch (Exception e) {
+            errln("Error opening rule based collator ");
+            return;
+        }
+    
+        strsrch.setCollator(tailored);
+        if (!strsrch.getCollator().equals(tailored)) {
+            errln("Error setting rule based collator");
+        }
+        strsrch.reset();
+        if (!assertEqualWithStringSearch(strsrch, COLLATOR[1])) {
+            return;
+        } 
+        strsrch.setCollator(m_en_us_);
+        strsrch.reset();
+        if (!strsrch.getCollator().equals(m_en_us_)) {
+            errln("Error setting rule based collator");
+        }
+        if (!assertEqualWithStringSearch(strsrch, COLLATOR[0])) {
+           errln("Error searching collator test");
+        }
+    }
+    
+    public void TestCollatorCanonical() {
+        /* test collator that thinks "o" and "p" are the same thing */
+        String text = COLLATORCANONICAL[0].text;
+        String pattern = COLLATORCANONICAL[0].pattern;
+    
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+            strsrch.setCanonical(true);
+        } catch (Exception e) {
+            errln("Error opening string search ");
+        }
+        
+        if (!assertEqualWithStringSearch(strsrch, COLLATORCANONICAL[0])) {
+            return;
+        }
+    
+        String rules = TESTCOLLATORRULE;
+        RuleBasedCollator tailored = null;
+        try {
+            tailored = new RuleBasedCollator(rules);
+            tailored.setStrength(COLLATORCANONICAL[1].strength);
+            tailored.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        } catch (Exception e) {
+            errln("Error opening rule based collator ");
+        }
+    
+        strsrch.setCollator(tailored);
+        if (!strsrch.getCollator().equals(tailored)) {
+            errln("Error setting rule based collator");
+        }
+        strsrch.reset();
+        strsrch.setCanonical(true);
+        if (!assertEqualWithStringSearch(strsrch, COLLATORCANONICAL[1])) {
+        }
+        strsrch.setCollator(m_en_us_);
+        strsrch.reset();
+        if (!strsrch.getCollator().equals(m_en_us_)) {
+            errln("Error setting rule based collator");
+        }
+        if (!assertEqualWithStringSearch(strsrch, COLLATORCANONICAL[0])) {
+        }
+    }
+    
+    public void TestCompositeBoundaries() {
+        int count = 0;
+        while (COMPOSITEBOUNDARIES[count].text != null) { 
+            // logln("composite " + count);
+            if (!assertEqual(COMPOSITEBOUNDARIES[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+    
+    public void TestCompositeBoundariesCanonical() {
+        int count = 0;
+        while (COMPOSITEBOUNDARIESCANONICAL[count].text != null) { 
+            // logln("composite " + count);
+            if (!assertCanonicalEqual(COMPOSITEBOUNDARIESCANONICAL[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        } 
+    }
+    
+    public void TestContraction() {
+        String rules = CONTRACTIONRULE;
+        RuleBasedCollator collator = null;
+        try {
+            collator = new RuleBasedCollator(rules); 
+            collator.setStrength(Collator.TERTIARY);
+            collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        } catch (Exception e) {
+            errln("Error opening collator ");
+        }
+        String text = "text";
+        String pattern = "pattern";
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), collator, null);
+        } catch (Exception e) {
+            errln("Error opening string search ");
+        }   
+        
+        int count = 0;
+        while (CONTRACTION[count].text != null) {
+            text = CONTRACTION[count].text;
+            pattern = CONTRACTION[count].pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            if (!assertEqualWithStringSearch(strsrch, CONTRACTION[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+    
+    public void TestContractionCanonical() {
+        String rules = CONTRACTIONRULE;
+        RuleBasedCollator collator = null;
+        try {
+            collator = new RuleBasedCollator(rules);
+            collator.setStrength(Collator.TERTIARY);
+            collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        } catch (Exception e) {
+            errln("Error opening collator ");
+        }
+        String text = "text";
+        String pattern = "pattern";
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), collator, null);
+            strsrch.setCanonical(true);
+        } catch (Exception e) {
+            errln("Error opening string search");
+        }   
+        
+        int count = 0;
+        while (CONTRACTIONCANONICAL[count].text != null) {
+            text = CONTRACTIONCANONICAL[count].text;
+            pattern = CONTRACTIONCANONICAL[count].pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            if (!assertEqualWithStringSearch(strsrch, CONTRACTIONCANONICAL[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+    
+    public void TestGetMatch() {
+        SearchData search = MATCH[0];
+        String text = search.text;
+        String pattern = search.pattern;
+    
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error opening string search ");
+            return;
+        }
+        
+        int           count      = 0;
+        int   matchindex = search.offset[count];
+        String matchtext;
+        while (matchindex >= 0) {
+            int matchlength = search.size[count];
+            strsrch.next();
+            if (matchindex != strsrch.getMatchStart() || 
+                matchlength != strsrch.getMatchLength()) {
+                errln("Text: " + search.text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return;
+            }
+            count++;
+            
+            matchtext = strsrch.getMatchedText();
+            if (matchtext.length() != matchlength){
+                errln("Error getting match text");
+            }
+            matchindex = search.offset[count];
+        }
+        strsrch.next();
+        if (strsrch.getMatchStart()  != StringSearch.DONE || 
+            strsrch.getMatchLength() != 0) {
+            errln("Error end of match not found");
+        }
+        matchtext = strsrch.getMatchedText();
+        if (matchtext != null) {
+            errln("Error getting null matches");
+        }
+    }
+    
+    public void TestGetSetAttribute() {
+        String  pattern = "pattern";
+        String  text = "text";
+        StringSearch  strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null); 
+        } catch (Exception e) {
+            errln("Error opening search");
+            return;
+        }
+    
+        if (strsrch.isOverlapping()) {
+            errln("Error default overlaping should be false");
+        }
+        strsrch.setOverlapping(true);
+        if (!strsrch.isOverlapping()) {
+            errln("Error setting overlap true");
+        }
+        strsrch.setOverlapping(false);
+        if (strsrch.isOverlapping()) {
+            errln("Error setting overlap false");
+        }
+        
+        strsrch.setCanonical(true);
+        if (!strsrch.isCanonical()) {
+            errln("Error setting canonical match true");
+        }
+        strsrch.setCanonical(false);
+        if (strsrch.isCanonical()) {
+            errln("Error setting canonical match false");
+        }
+        
+    }
+    
+    public void TestGetSetOffset() {
+        String  pattern = "1234567890123456";
+        String  text  = "12345678901234567890123456789012";
+        StringSearch  strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error opening search");
+            
+            return;
+        }
+        
+        /* testing out of bounds error */
+        try {
+            strsrch.setIndex(-1);
+            errln("Error expecting set offset error");
+        } catch (IndexOutOfBoundsException e) {}
+        
+        try {
+            strsrch.setIndex(128);
+            errln("Error expecting set offset error");
+        } catch (IndexOutOfBoundsException e) {}
+        
+        int index   = 0;
+        while (BASIC[index].text != null) {
+            SearchData  search      = BASIC[index ++];
+        
+            text =search.text;
+            pattern = search.pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            strsrch.getCollator().setStrength(search.strength);
+            strsrch.reset();
+            
+            int count = 0;
+            int matchindex  = search.offset[count];
+            
+            while (matchindex >= 0) {
+                int matchlength = search.size[count];
+                strsrch.next();
+                if (matchindex != strsrch.getMatchStart() || 
+                    matchlength != strsrch.getMatchLength()) {
+                    errln("Text: " + text);
+                    errln("Pattern: " + strsrch.getPattern());
+                    errln("Error match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                    return;
+                }
+                matchindex = search.offset[count + 1] == -1 ? -1 : 
+                             search.offset[count + 2];
+                if (search.offset[count + 1] != -1) {
+                    strsrch.setIndex(search.offset[count + 1] + 1);
+                    if (strsrch.getIndex() != search.offset[count + 1] + 1) {
+                        errln("Error setting offset\n");
+                        return;
+                    }
+                }
+                
+                count += 2;
+            }
+            strsrch.next();
+            if (strsrch.getMatchStart() != StringSearch.DONE) {
+                errln("Text: " + text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return;
+            }
+        }
+        strsrch.getCollator().setStrength(Collator.TERTIARY);
+    }
+    
+    public void TestGetSetOffsetCanonical() {
+        
+        String  text = "text";
+        String  pattern = "pattern";
+        StringSearch  strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Fail to open StringSearch!");
+            return;
+        }
+        strsrch.setCanonical(true);
+        /* testing out of bounds error */
+        try {
+            strsrch.setIndex(-1);
+            errln("Error expecting set offset error");
+        } catch (IndexOutOfBoundsException e) {}
+        try {
+            strsrch.setIndex(128);
+            errln("Error expecting set offset error");
+        } catch (IndexOutOfBoundsException e) {}
+        
+        int   index   = 0;
+        while (BASICCANONICAL[index].text != null) {
+            SearchData  search      = BASICCANONICAL[index ++];
+            if (BASICCANONICAL[index].text == null) {
+                // skip the last one 
+                break;
+            }
+            
+            text = search.text;
+            pattern = search.pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            int         count       = 0;
+            int matchindex  = search.offset[count];
+            while (matchindex >= 0) {
+                int matchlength = search.size[count];
+                strsrch.next();
+                if (matchindex != strsrch.getMatchStart() || 
+                    matchlength != strsrch.getMatchLength()) {
+                    errln("Text: " + text);
+                    errln("Pattern: " + strsrch.getPattern());
+                    errln("Error match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                    return;
+                }
+                matchindex = search.offset[count + 1] == -1 ? -1 : 
+                             search.offset[count + 2];
+                if (search.offset[count + 1] != -1) {
+                    strsrch.setIndex(search.offset[count + 1] + 1);
+                    if (strsrch.getIndex() != search.offset[count + 1] + 1) {
+                        errln("Error setting offset");
+                        return;
+                    }
+                }
+                
+                count += 2;
+            }
+            strsrch.next();
+            if (strsrch.getMatchStart() != StringSearch.DONE) {
+                errln("Text: " + text);
+                errln("Pattern: %s" + strsrch.getPattern());
+                errln("Error match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return;
+            }
+        }
+        strsrch.getCollator().setStrength(Collator.TERTIARY);
+    }
+    
+    public void TestIgnorable() {
+        String rules = IGNORABLERULE;
+        int        count  = 0;
+        RuleBasedCollator collator = null;
+        try {
+            collator = new RuleBasedCollator(rules);
+            collator.setStrength(IGNORABLE[count].strength);
+            collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);  
+        } catch (Exception e) {
+            errln("Error opening collator ");
+            return;
+        }
+        String pattern = "pattern";
+        String text = "text";
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), collator, null); 
+        } catch (Exception e) {
+            errln("Error opening string search ");
+            return;
+        }
+        
+        while (IGNORABLE[count].text != null) {
+            text = IGNORABLE[count].text;
+            pattern = IGNORABLE[count].pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            if (!assertEqualWithStringSearch(strsrch, IGNORABLE[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+    
+    public void TestInitialization() {
+        String  pattern;
+        String  text;
+        String  temp = "a";
+        StringSearch  result;
+    
+        /* simple test on the pattern ce construction */
+        pattern = temp + temp;
+        text = temp + temp + temp;
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error opening search ");
+            return;
+        }
+        
+        /* testing if an extremely large pattern will fail the initialization */
+        pattern = "";
+        for (int count = 0; count < 512; count ++) {
+            pattern += temp;
+        }
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+            logln("pattern:" + result.getPattern());
+        } catch (Exception e) {
+            errln("Fail: an extremely large pattern will fail the initialization");
+            return;
+        }
+        if (result != result) {
+            errln("Error: string search object expected to match itself");
+        }
+        
+    }
+    
+    public void TestNormCanonical() {
+        m_en_us_.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        int count = 0;
+        while (NORMCANONICAL[count].text != null) {
+            if (!assertCanonicalEqual(NORMCANONICAL[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+        m_en_us_.setDecomposition(Collator.NO_DECOMPOSITION);
+    }
+    
+    public void TestNormExact() {
+        int count = 0;
+        m_en_us_.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        while (BASIC[count].text != null) {
+            if (!assertEqual(BASIC[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+        count = 0;
+        while (NORMEXACT[count].text != null) {
+            if (!assertEqual(NORMEXACT[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+        m_en_us_.setDecomposition(Collator.NO_DECOMPOSITION);
+        count = 0;
+        while (NONNORMEXACT[count].text != null) {
+            if (!assertEqual(NONNORMEXACT[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+    
+    public void TestOpenClose() {
+        StringSearch            result;
+        BreakIterator           breakiter = m_en_wordbreaker_;
+        String           pattern = "";
+        String           text = "";
+        String           temp  = "a";
+        StringCharacterIterator  chariter= new StringCharacterIterator(text);
+    
+        /* testing null arguments */
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), null, null);
+            errln("Error: null arguments should produce an error");
+        } catch (Exception e) {}
+    
+        chariter.setText(text);
+        try {
+            result = new StringSearch(pattern, chariter, null, null);
+            errln("Error: null arguments should produce an error");
+        } catch (Exception e) {}
+        
+        text  = String.valueOf(0x1);
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), null, null);
+            errln("Error: Empty pattern should produce an error");
+        } catch (Exception e) {
+        }
+    
+        chariter.setText(text);
+        try {
+            result = new StringSearch(pattern, chariter, null, null);
+            errln("Error: Empty pattern should produce an error");
+        } catch (Exception e) {}
+    
+        text = "";
+        pattern =temp;
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), null, null);
+            errln("Error: Empty text should produce an error");
+        } catch (Exception e) {}
+        
+        chariter.setText(text);
+        try {
+            result = new StringSearch(pattern, chariter, null, null);
+            errln("Error: Empty text should produce an error");
+        } catch (Exception e) {}
+    
+        text += temp;
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), null, null);
+            errln("Error: null arguments should produce an error");
+        } catch (Exception e) {}
+    
+        chariter.setText(text);
+        try {
+            result = new StringSearch(pattern, chariter, null, null);
+            errln("Error: null arguments should produce an error");
+        } catch (Exception e) {}
+        
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error: null break iterator is valid for opening search");
+        }
+    
+        try {
+            result = new StringSearch(pattern, chariter, m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error: null break iterator is valid for opening search");
+        }
+        
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("Error: null break iterator is valid for opening search");
+        }
+    
+        try {
+            result = new StringSearch(pattern, chariter, Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("Error: null break iterator is valid for opening search");
+        }
+    
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, breakiter);
+        } catch (Exception e) {
+            errln("Error: Break iterator is valid for opening search");
+        }
+    
+        try {
+            result = new StringSearch(pattern, chariter, m_en_us_, null);
+            logln("pattern:" + result.getPattern());
+        } catch (Exception e) {
+            errln("Error: Break iterator is valid for opening search");
+        }
+    }
+
+    public void TestOverlap() {
+        int count = 0;
+        while (OVERLAP[count].text != null) {
+            if (!assertEqualWithAttribute(OVERLAP[count], false, true)) {
+                errln("Error at overlap test number " + count);
+            }
+            count++;
+        }    
+        count = 0;
+        while (NONOVERLAP[count].text != null) {
+            if (!assertEqual(NONOVERLAP[count])) {
+                errln("Error at non overlap test number " + count);
+            }
+            count++;
+        }
+    
+        count = 0;
+        while (count < 1) {
+            SearchData search = (OVERLAP[count]);     
+            String text = search.text;
+            String pattern = search.pattern;
+    
+            RuleBasedCollator collator = getCollator(search.collator);
+            StringSearch strsrch = null;   
+            try {
+                strsrch  = new StringSearch(pattern, new StringCharacterIterator(text), collator, null);
+            } catch (Exception e) {
+                errln("error open StringSearch");
+                return;
+            }
+            
+            strsrch.setOverlapping(true);
+            if (!strsrch.isOverlapping()) {
+                errln("Error setting overlap option");
+            }
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                return;
+            }
+            
+            search = NONOVERLAP[count];
+            strsrch.setOverlapping(false);
+            if (strsrch.isOverlapping()) {
+                errln("Error setting overlap option");
+            }
+            strsrch.reset();
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                errln("Error at test number " + count);
+             }
+            count ++;
+        }
+    }
+
+    public void TestOverlapCanonical() {
+        int count = 0;
+        while (OVERLAPCANONICAL[count].text != null) {
+            if (!assertEqualWithAttribute(OVERLAPCANONICAL[count], true, 
+                                          true)) {
+                errln("Error at overlap test number %d" + count);
+            }
+            count ++;
+        }    
+        count = 0;
+        while (NONOVERLAP[count].text != null) {
+            if (!assertCanonicalEqual(NONOVERLAPCANONICAL[count])) {
+                errln("Error at non overlap test number %d" + count);
+            }
+            count ++;
+        }
+    
+        count = 0;
+        while (count < 1) {
+                 /* UChar       temp[128];
+            const SearchData *search = &(OVERLAPCANONICAL[count]);     
+                  UErrorCode  status = U_ZERO_ERROR;*/
+            SearchData search = OVERLAPCANONICAL[count];
+        
+            /*u_unescape(search.text, temp, 128);
+            UnicodeString text;
+            text.setTo(temp, u_strlen(temp));
+            u_unescape(search.pattern, temp, 128);
+            UnicodeString pattern;
+            pattern.setTo(temp, u_strlen(temp));*/
+            RuleBasedCollator collator = getCollator(search.collator);
+            StringSearch strsrch = new StringSearch(search.pattern, new StringCharacterIterator(search.text), collator, null);
+            strsrch.setCanonical(true);
+            strsrch.setOverlapping(true);
+            if (strsrch.isOverlapping() != true) {
+                errln("Error setting overlap option");
+            }
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                strsrch = null;
+                return;
+            }
+            search = NONOVERLAPCANONICAL[count];
+            strsrch.setOverlapping(false);
+            if (strsrch.isOverlapping() != false) {
+                errln("Error setting overlap option");
+            }
+            strsrch.reset();
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                strsrch = null;
+                errln("Error at test number %d" + count);
+             }
+             
+            count ++;
+            strsrch = null;
+        }
+    }
+    
+    public void TestPattern() {  
+        m_en_us_.setStrength(PATTERN[0].strength);
+        StringSearch strsrch = new StringSearch(PATTERN[0].pattern, new StringCharacterIterator(PATTERN[0].text), m_en_us_, null);
+        
+        /*if (U_FAILURE(status)) {
+            errln("Error opening string search %s", u_errorName(status));
+            m_en_us_.setStrength(getECollationStrength(UCOL_TERTIARY));
+            if (strsrch != NULL) {
+                delete strsrch;
+            }
+            return;
+        }*/
+        
+        if (strsrch.getPattern() != PATTERN[0].pattern) {
+            errln("Error setting pattern");
+        }
+        if (!assertEqualWithStringSearch(strsrch, PATTERN[0])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            if (strsrch != null) {
+                strsrch = null;
+            }
+            return;
+        }
+    
+        strsrch.setPattern(PATTERN[1].pattern);
+        if (PATTERN[1].pattern != strsrch.getPattern()) {
+            errln("Error setting pattern");
+            m_en_us_.setStrength(Collator.TERTIARY);
+            if (strsrch != null) {
+                strsrch = null;
+            }
+            return;
+        }
+        strsrch.reset();
+    
+        if (!assertEqualWithStringSearch(strsrch, PATTERN[1])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            if (strsrch != null) {
+                strsrch = null;
+            }
+            return;
+        }
+    
+        strsrch.setPattern(PATTERN[0].pattern);
+        if (PATTERN[0].pattern != strsrch.getPattern()) {
+            errln("Error setting pattern");
+            m_en_us_.setStrength(Collator.TERTIARY);
+            if (strsrch != null) {
+                strsrch = null;
+            }
+            return;
+        }
+            strsrch.reset();
+       
+        if (!assertEqualWithStringSearch(strsrch, PATTERN[0])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            if (strsrch != null) {
+                strsrch = null;
+            }
+            return;
+        }
+        /* enormous pattern size to see if this crashes */
+        String pattern = "";
+        for (int templength = 0; templength != 512; templength ++) {
+            pattern += 0x61;
+        }
+        try{
+            strsrch.setPattern(pattern);
+        }catch(Exception e) {
+            errln("Error setting pattern with size 512");
+        }
+    
+        m_en_us_.setStrength(Collator.TERTIARY);
+        if (strsrch != null) {
+            strsrch = null;
+        }
+    }
+    
+    public void TestPatternCanonical() {
+        //StringCharacterIterator text = new StringCharacterIterator(PATTERNCANONICAL[0].text);
+        m_en_us_.setStrength(PATTERNCANONICAL[0].strength);
+        StringSearch strsrch = new StringSearch(PATTERNCANONICAL[0].pattern, new StringCharacterIterator(PATTERNCANONICAL[0].text), 
+                                                m_en_us_, null);
+        strsrch.setCanonical(true);
+        
+        if (PATTERNCANONICAL[0].pattern != strsrch.getPattern()) {
+            errln("Error setting pattern");
+        }
+        if (!assertEqualWithStringSearch(strsrch, PATTERNCANONICAL[0])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            strsrch = null;
+            return;
+        }
+    
+        strsrch.setPattern(PATTERNCANONICAL[1].pattern);
+        if (PATTERNCANONICAL[1].pattern != strsrch.getPattern()) {
+            errln("Error setting pattern");
+            m_en_us_.setStrength(Collator.TERTIARY);
+            strsrch = null;
+            return;
+        }
+        strsrch.reset();
+        strsrch.setCanonical(true);
+        
+        if (!assertEqualWithStringSearch(strsrch, PATTERNCANONICAL[1])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            strsrch = null;
+            return;
+        }
+
+        strsrch.setPattern(PATTERNCANONICAL[0].pattern);
+        if (PATTERNCANONICAL[0].pattern != strsrch.getPattern()) {
+            errln("Error setting pattern");
+            m_en_us_.setStrength(Collator.TERTIARY);
+            strsrch = null;
+            return;
+        }
+        
+        strsrch.reset();
+        strsrch.setCanonical(true);
+        if (!assertEqualWithStringSearch(strsrch, PATTERNCANONICAL[0])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            strsrch = null;
+            return;
+        }
+    }
+    
+    public void TestReset() {
+        StringCharacterIterator text = new StringCharacterIterator("fish fish");
+        String pattern = "s";
+        
+        StringSearch  strsrch = new StringSearch(pattern, text, m_en_us_, null); 
+        strsrch.setOverlapping(true);
+        strsrch.setCanonical(true);
+        strsrch.setIndex(9);
+        strsrch.reset();
+        if (strsrch.isCanonical() || strsrch.isOverlapping() ||
+            strsrch.getIndex() != 0 || strsrch.getMatchLength() != 0 ||
+            strsrch.getMatchStart() != SearchIterator.DONE) {
+                errln("Error resetting string search");
+        }
+        
+        strsrch.previous();
+        if (strsrch.getMatchStart() != 7 || strsrch.getMatchLength() != 1) {
+            errln("Error resetting string search\n");
+        }
+    }
+    
+    public void TestSetMatch() {
+        int count = 0;
+        while (MATCH[count].text != null) {
+            SearchData     search = MATCH[count];
+            StringSearch strsrch = new StringSearch(search.pattern, new StringCharacterIterator(search.text), 
+                                                    m_en_us_, null);
+            
+            int size = 0;
+            while (search.offset[size] != -1) {
+                size ++;
+            }
+    
+            if (strsrch.first() != search.offset[0]) {
+                errln("Error getting first match");
+            }
+            if (strsrch.last() != search.offset[size -1]) {
+                errln("Error getting last match");
+            }
+            
+            int index = 0;
+            while (index < size) {
+                if (index + 2 < size) {
+                    if (strsrch.following(search.offset[index + 2] - 1) != search.offset[index + 2]) {
+                        errln("Error getting following match at index " + (search.offset[index + 2]-1));
+                    }
+                }
+                if (index + 1 < size) {
+                    if (strsrch.preceding(search.offset[index + 1] + search.size[index + 1] + 1) != search.offset[index + 1]) {
+                        errln("Error getting preceeding match at index " + (search.offset[index + 1] + 1));
+                    }
+                }
+                index += 2;
+            }
+            
+            if (strsrch.following(search.text.length()) != SearchIterator.DONE) {
+                errln("Error expecting out of bounds match");
+            }
+            if (strsrch.preceding(0) != SearchIterator.DONE) {
+                errln("Error expecting out of bounds match");
+            }
+            count ++;
+            strsrch = null;
+        }
+    }
+    
+    public void TestStrength() {   
+        int count = 0;
+        while (STRENGTH[count].text != null) {
+            if (count == 3) count ++;
+            if (!assertEqual(STRENGTH[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+    }
+    
+    public void TestStrengthCanonical() {
+        int count = 0;
+        while (STRENGTHCANONICAL[count].text != null) {
+            if (count == 3) count ++;
+            if (!assertCanonicalEqual(STRENGTHCANONICAL[count])) {
+                errln("Error at test number" + count);
+            }
+            count ++;
+        }
+    }
+    
+    public void TestSupplementary() {
+        int count = 0;
+        while (SUPPLEMENTARY[count].text != null) {
+            if (!assertEqual(SUPPLEMENTARY[count])) {
+                errln("Error at test number" + count);
+            }
+            count ++;
+        }
+    }
+    
+    public void TestSupplementaryCanonical() {
+        int count = 0;
+        while (SUPPLEMENTARYCANONICAL[count].text != null) {
+            if (!assertCanonicalEqual(SUPPLEMENTARYCANONICAL[count])) {
+                errln("Error at test number" + count);
+            }
+            count ++;
+        }
+    }
+
+    public void TestText() {
+        SearchData TEXT[] = {
+            new SearchData("the foxy brown fox", "fox", null, Collator.TERTIARY, null, new int[] {4, 15, -1}, new int[] {3, 3}),
+            new SearchData("the quick brown fox", "fox", null, Collator.TERTIARY, null, new int[] {16, -1}, new int[] {3}),
+            new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[]{0})
+        };
+        StringCharacterIterator t = new StringCharacterIterator(TEXT[0].text);
+        StringSearch strsrch = new StringSearch(TEXT[0].pattern, t, m_en_us_, null);
+        
+        if (!t.equals(strsrch.getTarget())) {
+            errln("Error setting text");
+        }
+        if (!assertEqualWithStringSearch(strsrch, TEXT[0])) {
+            errln("Error at assertEqualWithStringSearch");
+            return;
+        }
+    
+        t = new StringCharacterIterator(TEXT[1].text);
+        strsrch.setTarget(t);
+        if (!t.equals(strsrch.getTarget())) {
+            errln("Error setting text");
+            return;
+        }
+        
+        if (!assertEqualWithStringSearch(strsrch, TEXT[1])) {
+            errln("Error at assertEqualWithStringSearch");
+            return;
+        }
+    }
+    
+    public void TestTextCanonical() {
+        StringCharacterIterator t = new StringCharacterIterator(TEXTCANONICAL[0].text);
+        StringSearch strsrch = new StringSearch(TEXTCANONICAL[0].pattern, t, m_en_us_, null);
+        strsrch.setCanonical(true);
+        
+        if (!t.equals(strsrch.getTarget())) {
+            errln("Error setting text");
+        }
+        if (!assertEqualWithStringSearch(strsrch, TEXTCANONICAL[0])) {
+            strsrch = null;
+            return;
+        }
+
+        t = new StringCharacterIterator(TEXTCANONICAL[1].text);
+        strsrch.setTarget(t);
+        if (!t.equals(strsrch.getTarget())) {
+            errln("Error setting text");
+            strsrch = null;
+            return;
+        }
+        
+        if (!assertEqualWithStringSearch(strsrch, TEXTCANONICAL[1])) {
+            strsrch = null;
+            return;
+        }
+
+        t = new StringCharacterIterator(TEXTCANONICAL[0].text);
+        strsrch.setTarget(t);
+        if (!t.equals(strsrch.getTarget())) {
+            errln("Error setting text");
+            strsrch = null;
+            return;
+        }
+        
+        if (!assertEqualWithStringSearch(strsrch, TEXTCANONICAL[0])) {
+            errln("Error at assertEqualWithStringSearch");
+            strsrch = null;
+            return;
+        }    
+    }
+    
+    public void TestVariable() {
+        int count = 0;
+        m_en_us_.setAlternateHandlingShifted(true);
+        while (VARIABLE[count].text != null) {
+            // logln("variable" + count);
+            if (!assertEqual(VARIABLE[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+        m_en_us_.setAlternateHandlingShifted(false);
+    }
+    
+    public void TestVariableCanonical() {
+        int count = 0;
+        m_en_us_.setAlternateHandlingShifted(true);
+        while (VARIABLE[count].text != null) {
+            // logln("variable " + count);
+            if (!assertCanonicalEqual(VARIABLE[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+        m_en_us_.setAlternateHandlingShifted(false);
+    }
+    
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/search/package.html b/src/com/ibm/icu/dev/test/search/package.html
new file mode 100755
index 0000000..0fad2e2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/search/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/search/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 21:35:50 $
+-->
+</head>
+<body bgcolor="white">
+Tests for the international search classes.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/shaping/ArabicShapingRegTest.java b/src/com/ibm/icu/dev/test/shaping/ArabicShapingRegTest.java
new file mode 100755
index 0000000..4aa6653
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/shaping/ArabicShapingRegTest.java
@@ -0,0 +1,415 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.shaping;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.ArabicShaping;
+import com.ibm.icu.text.ArabicShapingException;
+
+/**
+ * Regression test for Arabic shaping.
+ */
+public class ArabicShapingRegTest extends TestFmwk {
+
+    /* constants copied from ArabicShaping for convenience */
+
+    public static final int LENGTH_GROW_SHRINK = 0;
+    public static final int LENGTH_FIXED_SPACES_NEAR = 1;
+    public static final int LENGTH_FIXED_SPACES_AT_END = 2;
+    public static final int LENGTH_FIXED_SPACES_AT_BEGINNING = 3;
+
+    public static final int TEXT_DIRECTION_LOGICAL = 0;
+    public static final int TEXT_DIRECTION_VISUAL_LTR = 4;
+
+    public static final int LETTERS_NOOP = 0;
+    public static final int LETTERS_SHAPE = 8;
+    public static final int LETTERS_SHAPE_TASHKEEL_ISOLATED = 0x18;
+    public static final int LETTERS_UNSHAPE = 0x10;
+
+    public static final int DIGITS_NOOP = 0;
+    public static final int DIGITS_EN2AN = 0x20;
+    public static final int DIGITS_AN2EN = 0x40;
+    public static final int DIGITS_EN2AN_INIT_LR = 0x60;
+    public static final int DIGITS_EN2AN_INIT_AL = 0x80;
+    private static final int DIGITS_RESERVED = 0xa0;
+
+    public static final int DIGIT_TYPE_AN = 0;
+    public static final int DIGIT_TYPE_AN_EXTENDED = 0x100;
+
+    public static class TestData {
+        public int type;
+        public String source;
+        public int flags;
+        public String result;
+        public int length;
+        public Class error;
+
+        public static final int STANDARD = 0;
+        public static final int PREFLIGHT = 1;
+        public static final int ERROR = 2;
+
+        public static TestData standard(String source, int flags, String result) {
+            return new TestData(STANDARD, source, flags, result, 0, null);
+        }
+        
+        public static TestData preflight(String source, int flags, int length) {
+            return new TestData(PREFLIGHT, source, flags, null, length, null);
+        }
+
+        public static TestData error(String source, int flags, Class error) {
+            return new TestData(ERROR, source, flags, null, 0, error);
+        }
+
+        private TestData(int type, String source, int flags, String result, int length, Class error) {
+            this.type = type;
+            this.source = source;
+            this.flags = flags;
+            this.result = result;
+            this.length = length;
+            this.error = error;
+        }
+
+        private static final String[] typenames = { "standard", "preflight", "error" };
+
+        public String toString() {
+            StringBuffer buf = new StringBuffer(super.toString());
+            buf.append("[\n");
+            buf.append(typenames[type]);
+            buf.append(",\n");
+            if (source == null) {
+                buf.append("null");
+            } else {
+                buf.append('"');
+                buf.append(escapedString(source));
+                buf.append('"');
+            }
+            buf.append(",\n");
+            buf.append(Integer.toHexString(flags));
+            buf.append(",\n");
+            if (result == null) {
+                buf.append("null");
+            } else {
+                buf.append('"');
+                buf.append(escapedString(result));
+                buf.append('"');
+            }
+            buf.append(",\n");
+            buf.append(length);
+            buf.append(",\n");
+            buf.append(error);
+            buf.append(']');
+            return buf.toString();
+        }
+    }
+
+    private static final String lamAlefSpecialVLTR =
+        "\u0020\u0646\u0622\u0644\u0627\u0020" +
+     	"\u0646\u0623\u064E\u0644\u0627\u0020" +
+     	"\u0646\u0627\u0670\u0644\u0627\u0020" +
+     	"\u0646\u0622\u0653\u0644\u0627\u0020" +
+     	"\u0646\u0625\u0655\u0644\u0627\u0020" +
+     	"\u0646\u0622\u0654\u0644\u0627\u0020" +
+     	"\uFEFC\u0639";
+
+    private static final String tashkeelSpecialVLTR = 
+        "\u064A\u0628\u0631\u0639\u0020" +
+        "\u064A\u0628\u0651\u0631\u064E\u0639\u0020" +
+        "\u064C\u064A\u0628\u0631\u064F\u0639\u0020" +
+        "\u0628\u0670\u0631\u0670\u0639\u0020" +
+        "\u0628\u0653\u0631\u0653\u0639\u0020" +
+        "\u0628\u0654\u0631\u0654\u0639\u0020" +
+        "\u0628\u0655\u0631\u0655\u0639\u0020";
+
+    private static final String logicalUnshape = 
+        "\u0020\u0020\u0020\uFE8D\uFEF5\u0020\uFEE5\u0020\uFE8D\uFEF7\u0020" +
+        "\uFED7\uFEFC\u0020\uFEE1\u0020\uFE8D\uFEDF\uFECC\uFEAE\uFE91\uFEF4" +
+        "\uFE94\u0020\uFE8D\uFEDF\uFEA4\uFEAE\uFE93\u0020\u0020\u0020\u0020";
+
+    private static final String numSource =
+        "\u0031" +  /* en:1 */
+        "\u0627" +  /* arabic:alef */
+        "\u0032" +  /* en:2 */
+        "\u06f3" +  /* an:3 */
+        "\u0061" +  /* latin:a */
+        "\u0034";   /* en:4 */
+
+    private static final TestData[] tests = {
+        /* lam alef special visual ltr */
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_NEAR,
+                          "\u0020\ufee5\u0020\ufef5\ufe8d\u0020" +
+                          "\ufee5\u0020\ufe76\ufef7\ufe8d\u0020" +
+                          "\ufee5\u0020\u0670\ufefb\ufe8d\u0020" +
+                          "\ufee5\u0020\u0653\ufef5\ufe8d\u0020" +
+                          "\ufee5\u0020\u0655\ufef9\ufe8d\u0020" +
+                          "\ufee5\u0020\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_AT_END,
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb\u0020\u0020\u0020\u0020" +
+                          "\u0020\u0020"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_AT_BEGINNING,
+                          "\u0020\u0020\u0020\u0020\u0020\u0020" +
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_GROW_SHRINK,
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+
+        /* TASHKEEL */
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE_TASHKEEL_ISOLATED | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_NEAR,
+                          "\u0020\ufee5\u0020\ufef5\ufe8d\u0020" +
+                          "\ufee5\u0020\ufe76\ufef7\ufe8d\u0020" +
+                          "\ufee5\u0020\u0670\ufefb\ufe8d\u0020" +
+                          "\ufee5\u0020\u0653\ufef5\ufe8d\u0020" +
+                          "\ufee5\u0020\u0655\ufef9\ufe8d\u0020" +
+                          "\ufee5\u0020\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE_TASHKEEL_ISOLATED | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_AT_END,
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb\u0020\u0020\u0020\u0020" +
+                          "\u0020\u0020"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE_TASHKEEL_ISOLATED | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_AT_BEGINNING,
+                          "\u0020\u0020\u0020\u0020\u0020\u0020" +
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE_TASHKEEL_ISOLATED | TEXT_DIRECTION_VISUAL_LTR | LENGTH_GROW_SHRINK,
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+
+        /* tashkeel special visual ltr */
+        TestData.standard(tashkeelSpecialVLTR,
+                          LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_NEAR,
+                          "\ufef2\ufe91\ufeae\ufecb\u0020" +
+                          "\ufef2\ufe91\ufe7c\ufeae\ufe77\ufecb\u0020" +
+                          "\ufe72\ufef2\ufe91\ufeae\ufe79\ufecb\u0020" +
+                          "\ufe8f\u0670\ufeae\u0670\ufecb\u0020" +
+                          "\ufe8f\u0653\ufeae\u0653\ufecb\u0020" +
+                          "\ufe8f\u0654\ufeae\u0654\ufecb\u0020" +
+                          "\ufe8f\u0655\ufeae\u0655\ufecb\u0020"),
+
+        TestData.standard(tashkeelSpecialVLTR,
+                          LETTERS_SHAPE_TASHKEEL_ISOLATED | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_NEAR,
+                          "\ufef2\ufe91\ufeae\ufecb\u0020" +
+                          "\ufef2\ufe91\ufe7c\ufeae\ufe76\ufecb\u0020" +
+                          "\ufe72\ufef2\ufe91\ufeae\ufe78\ufecb\u0020" +
+                          "\ufe8f\u0670\ufeae\u0670\ufecb\u0020" +
+                          "\ufe8f\u0653\ufeae\u0653\ufecb\u0020" +
+                          "\ufe8f\u0654\ufeae\u0654\ufecb\u0020" +
+                          "\ufe8f\u0655\ufeae\u0655\ufecb\u0020"),
+
+        /* logical unshape */
+        TestData.standard(logicalUnshape,
+                          LETTERS_UNSHAPE | TEXT_DIRECTION_LOGICAL | LENGTH_FIXED_SPACES_NEAR,
+                          "\u0020\u0020\u0020\u0627\u0644\u0622\u0646\u0020\u0627\u0644\u0623\u0642\u0644\u0627" +
+                          "\u0645\u0020\u0627\u0644\u0639\u0631\u0628\u064a\u0629\u0020\u0627\u0644\u062d\u0631" +
+                          "\u0629\u0020\u0020\u0020\u0020"),
+        TestData.standard(logicalUnshape,
+                          LETTERS_UNSHAPE | TEXT_DIRECTION_LOGICAL | LENGTH_FIXED_SPACES_AT_END,
+                          "\u0020\u0020\u0020\u0627\u0644\u0622\u0020\u0646\u0020\u0627\u0644\u0623\u0020\u0642" +
+                          "\u0644\u0627\u0020\u0645\u0020\u0627\u0644\u0639\u0631\u0628\u064a\u0629\u0020\u0627" +
+                          "\u0644\u062d\u0631\u0629\u0020"),
+        TestData.standard(logicalUnshape,
+                          LETTERS_UNSHAPE | TEXT_DIRECTION_LOGICAL | LENGTH_FIXED_SPACES_AT_BEGINNING,
+                          "\u0627\u0644\u0622\u0020\u0646\u0020\u0627\u0644\u0623\u0020\u0642\u0644\u0627\u0020" +
+                          "\u0645\u0020\u0627\u0644\u0639\u0631\u0628\u064a\u0629\u0020\u0627\u0644\u062d\u0631" +
+                          "\u0629\u0020\u0020\u0020\u0020"),
+        TestData.standard(logicalUnshape,
+                          LETTERS_UNSHAPE | TEXT_DIRECTION_LOGICAL | LENGTH_GROW_SHRINK,
+                          "\u0020\u0020\u0020\u0627\u0644\u0622\u0020\u0646\u0020\u0627\u0644\u0623\u0020\u0642" +
+                          "\u0644\u0627\u0020\u0645\u0020\u0627\u0644\u0639\u0631\u0628\u064a\u0629\u0020\u0627" +
+                          "\u0644\u062d\u0631\u0629\u0020\u0020\u0020\u0020"),
+
+        /* numbers */
+        TestData.standard(numSource, 
+                          DIGITS_EN2AN | DIGIT_TYPE_AN, 
+                          "\u0661\u0627\u0662\u06f3\u0061\u0664"),
+        TestData.standard(numSource, 
+                          DIGITS_AN2EN | DIGIT_TYPE_AN_EXTENDED, 
+                          "\u0031\u0627\u0032\u0033\u0061\u0034"),
+        TestData.standard(numSource, 
+                          DIGITS_EN2AN_INIT_LR | DIGIT_TYPE_AN, 
+                          "\u0031\u0627\u0662\u06f3\u0061\u0034"),
+        TestData.standard(numSource, 
+                          DIGITS_EN2AN_INIT_AL | DIGIT_TYPE_AN_EXTENDED, 
+                          "\u06f1\u0627\u06f2\u06f3\u0061\u0034"),
+        TestData.standard(numSource, 
+                          DIGITS_EN2AN_INIT_LR | DIGIT_TYPE_AN | TEXT_DIRECTION_VISUAL_LTR,
+                          "\u0661\u0627\u0032\u06f3\u0061\u0034"),
+        TestData.standard(numSource, 
+                          DIGITS_EN2AN_INIT_AL | DIGIT_TYPE_AN_EXTENDED | TEXT_DIRECTION_VISUAL_LTR,
+                          "\u06f1\u0627\u0032\u06f3\u0061\u06f4"),
+
+        /* no-op */
+        TestData.standard(numSource, 
+                          0,
+                          numSource),
+
+        /* preflight */
+        TestData.preflight("\u0644\u0627",
+                           LETTERS_SHAPE | LENGTH_GROW_SHRINK,
+                           1),
+
+        TestData.preflight("\u0644\u0627\u0031",
+                           DIGITS_EN2AN | DIGIT_TYPE_AN_EXTENDED | LENGTH_GROW_SHRINK,
+                           3),
+
+        TestData.preflight("\u0644\u0644",
+                           LETTERS_SHAPE | LENGTH_GROW_SHRINK,
+                           2),
+
+        TestData.preflight("\ufef7",
+                           LETTERS_UNSHAPE | LENGTH_GROW_SHRINK,
+                           2),
+
+        /* bad data */
+        TestData.error("\u0020\ufef7\u0644\u0020",
+                       LETTERS_UNSHAPE | LENGTH_FIXED_SPACES_NEAR,
+                       ArabicShapingException.class),
+
+        TestData.error("\u0020\ufef7",
+                       LETTERS_UNSHAPE | LENGTH_FIXED_SPACES_AT_END,
+                       ArabicShapingException.class),
+
+        TestData.error("\ufef7\u0020",
+                       LETTERS_UNSHAPE | LENGTH_FIXED_SPACES_AT_BEGINNING,
+                       ArabicShapingException.class),
+
+        /* bad options */
+        TestData.error("\ufef7",
+                       0xffffffff,
+                       IllegalArgumentException.class),
+    };
+
+    public void testStandard() {
+        for (int i = 0; i < tests.length; ++i) {
+            TestData test = tests[i];
+
+            Exception ex = null;
+            String result = null;
+            ArabicShaping shaper = null;
+            try {
+                shaper = new ArabicShaping(test.flags);
+                result = shaper.shape(test.source);
+            }
+            catch (Exception e) {
+                ex = e;
+            }
+            
+            switch (test.type) {
+            case TestData.STANDARD:
+                if (!test.result.equals(result)) {
+                    reportTestFailure(i, test, shaper, result, ex);
+                }
+                break;
+                
+            case TestData.PREFLIGHT:
+                if (result == null || test.length != result.length()) {
+                    reportTestFailure(i, test, shaper, result, ex);
+                }
+                break;
+
+            case TestData.ERROR:
+                if (!test.error.isInstance(ex)) {
+                    reportTestFailure(i, test, shaper, result, ex);
+                }
+                break;
+            }
+        }                    
+    }
+
+    public void reportTestFailure(int index, TestData test, ArabicShaping shaper, String result, Exception error) {
+        StringBuffer buf = new StringBuffer();
+        buf.append("*** test failure ***\n");
+        buf.append("index: " + index + "\n");
+        buf.append("test: " + test + "\n");
+        buf.append("shaper: " + shaper + "\n");
+        buf.append("result: " + escapedString(result) + "\n");
+        buf.append("error: " + error + "\n");
+
+        if (result != null && test.result != null && !test.result.equals(result)) {
+            for (int i = 0; i < Math.max(test.result.length(), result.length()); ++i) {
+                String temp = Integer.toString(i);
+                if (temp.length() < 2) {
+                    temp = " ".concat(temp);
+                }
+                char trg = i < test.result.length() ? test.result.charAt(i) : '\uffff';
+                char res = i < result.length() ? result.charAt(i) : '\uffff';
+
+                buf.append("[" + temp + "] ");
+                buf.append(escapedString("" + trg) + " ");
+                buf.append(escapedString("" + res) + " ");
+                if (trg != res) {
+                    buf.append("***");
+                }
+                buf.append("\n");
+            }
+        }
+        err(buf.toString());
+    }
+
+    private static String escapedString(String str) {
+        StringBuffer buf = new StringBuffer(str.length() * 6);
+        for (int i = 0; i < str.length(); ++i) {
+            char ch = str.charAt(i);
+            buf.append("\\u");
+            if (ch < 0x1000) {
+                buf.append('0');
+            }
+            if (ch < 0x0100) {
+                buf.append('0');
+            }
+            if (ch < 0x0010) {
+                buf.append('0');
+            }
+            buf.append(Integer.toHexString(ch));
+        }
+        return buf.toString();
+    }
+
+    public static void main(String[] args) {
+        try {
+            new ArabicShapingRegTest().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/shaping/ArabicShapingTest.java b/src/com/ibm/icu/dev/test/shaping/ArabicShapingTest.java
new file mode 100755
index 0000000..027335c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/shaping/ArabicShapingTest.java
@@ -0,0 +1,286 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.shaping;
+
+import com.ibm.icu.text.ArabicShaping;
+import com.ibm.icu.text.ArabicShapingException;
+
+/**
+ * Interactive test for Arabic shaping.
+ * Invoke from a command line passing args and strings.  Use '-help' to see description of arguments.
+ */
+public class ArabicShapingTest {
+    private static final int COPY = 0;
+    private static final int INPLACE = 1;
+    private static final int STRING = 2;
+
+    public static final void main(String[] args) {
+        int testtype = COPY;
+        int options = 0;
+        int ss = 0;
+        int sl = -1;
+        int ds = 0;
+        int dl = -1;
+        String text = "$22.4 test 123 \ufef6\u0644\u0622 456 \u0664\u0665\u0666!";
+
+        for (int i = 0; i < args.length; ++i) {
+            String arg = args[i];
+            if (arg.charAt(0) == '-') {
+                String opt = arg.substring(1);
+                String val = opt;
+                int index = arg.indexOf(':');
+                if (index != -1) {
+                    opt = opt.substring(0, Math.min(index, 3));
+                    val = arg.substring(index + 1);
+                }
+                
+                if (opt.equalsIgnoreCase("len")) {
+                    options &= ~ArabicShaping.LENGTH_MASK;
+                    if (val.equalsIgnoreCase("gs")) {
+                        options |= ArabicShaping.LENGTH_GROW_SHRINK;
+                    } else if (val.equalsIgnoreCase("sn")) {
+                        options |= ArabicShaping.LENGTH_FIXED_SPACES_NEAR;
+                    } else if (val.equalsIgnoreCase("se")) {
+                        options |= ArabicShaping.LENGTH_FIXED_SPACES_AT_END;
+                    } else if (val.equalsIgnoreCase("sb")) {
+                        options |= ArabicShaping.LENGTH_FIXED_SPACES_AT_BEGINNING;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("dir")) {
+                    options &= ~ArabicShaping.TEXT_DIRECTION_MASK;
+                    if (val.equalsIgnoreCase("log")) {
+                        options |= ArabicShaping.TEXT_DIRECTION_LOGICAL;
+                    } else if (val.equalsIgnoreCase("vis")) {
+                        options |= ArabicShaping.TEXT_DIRECTION_VISUAL_LTR;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("let")) {
+                    options &= ~ArabicShaping.LETTERS_MASK;
+                    if (val.equalsIgnoreCase("no")) {
+                        options |= ArabicShaping.LETTERS_NOOP;
+                    } else if (val.equalsIgnoreCase("sh")) {
+                        options |= ArabicShaping.LETTERS_SHAPE;
+                    } else if (val.equalsIgnoreCase("un")) {
+                        options |= ArabicShaping.LETTERS_UNSHAPE;
+                    } else if (val.equalsIgnoreCase("ta")) {
+                        options |= ArabicShaping.LETTERS_SHAPE_TASHKEEL_ISOLATED;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("dig")) {
+                    options &= ~ArabicShaping.DIGITS_MASK;
+                    if (val.equalsIgnoreCase("no")) {
+                        options |= ArabicShaping.DIGITS_NOOP;
+                    } else if (val.equalsIgnoreCase("ea")) {
+                        options |= ArabicShaping.DIGITS_EN2AN;
+                    } else if (val.equalsIgnoreCase("ae")) {
+                        options |= ArabicShaping.DIGITS_AN2EN;
+                    } else if (val.equalsIgnoreCase("lr")) {
+                        options |= ArabicShaping.DIGITS_EN2AN_INIT_LR;
+                    } else if (val.equalsIgnoreCase("al")) {
+                        options |= ArabicShaping.DIGITS_EN2AN_INIT_AL;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("typ")) {
+                    options &= ~ArabicShaping.DIGIT_TYPE_MASK;
+                    if (val.equalsIgnoreCase("an")) {
+                        options |= ArabicShaping.DIGIT_TYPE_AN;
+                    } else if (val.equalsIgnoreCase("ex")) {
+                        options |= ArabicShaping.DIGIT_TYPE_AN_EXTENDED;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("dst")) {
+                    try {
+                        ds = Integer.parseInt(val);
+                    }
+                    catch (Exception e) {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("dln")) {
+                    try {
+                        dl = Integer.parseInt(val);
+                    }
+                    catch (Exception e) {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("sst")) {
+                    try {
+                        ss = Integer.parseInt(val);
+                    }
+                    catch (Exception e) {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("sln")) {
+                    try {
+                        sl = Integer.parseInt(val);
+                    }
+                    catch (Exception e) {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("tes")) {
+                    if (val.equalsIgnoreCase("cp")) {
+                        testtype = COPY;
+                    } else if (val.equalsIgnoreCase("ip")) {
+                        testtype = INPLACE;
+                    } else if (val.equalsIgnoreCase("st")) {
+                        testtype = STRING;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("help")) {
+                    System.out.println(usage);
+                } else {
+                    throwOptError(opt);
+                }
+            } else {
+                // assume text
+                text = parseText(arg);
+            }
+        }
+
+        if (sl < 0) {
+            sl = text.length() - ss;
+            System.out.println("sl defaulting to " + sl);
+        }
+        if (dl < 0) {
+            dl = 2 * sl;
+            System.out.println("dl defaulting to " + dl);
+        }
+
+        ArabicShaping shaper = new ArabicShaping(options);
+        System.out.println("shaper: " + shaper);
+
+        char[] src = text.toCharArray();
+        System.out.println(" input: '" + escapedText(src, ss, sl) + "'");
+        if (testtype != STRING) {
+            System.out.println("start: " + ss + " length: " + sl + " total length: " + src.length);
+        }
+
+        int result = -1;
+        char[] dest = null;
+
+        try {
+            switch (testtype) {
+            case COPY:
+                dest = new char[ds + dl];
+                result = shaper.shape(src, ss, sl, dest, ds, dl);
+                break;
+
+            case INPLACE:
+                shaper.shape(src, ss, sl);
+                ds = ss;
+                result = sl;
+                dest = src;
+                break;
+
+            case STRING:
+                dest = shaper.shape(text).toCharArray();
+                ds = 0;
+                result = dest.length;
+                break;
+            }
+
+            System.out.println("output: '" + escapedText(dest, ds, result) + "'");
+            System.out.println("length: " + result);
+            if (ds != 0 || result != dest.length) {
+                System.out.println("full output: '" + escapedText(dest, 0, dest.length) + "'");
+            }
+        }
+        catch (ArabicShapingException e) {
+            System.out.println("Caught ArabicShapingException");
+            System.out.println(e);
+        }
+        catch (Exception e) {
+            System.out.println("Caught Exception");
+            System.out.println(e);
+        }
+    }
+
+    private static void throwOptError(String opt) {
+        throwUsageError("unknown option: " + opt);
+    }
+
+    private static void throwValError(String opt, String val) {
+        throwUsageError("unknown value: " + val + " for option: " + opt);
+    }
+
+    private static void throwUsageError(String message) {
+        StringBuffer buf = new StringBuffer("*** usage error ***\n");
+        buf.append(message);
+        buf.append("\n");
+        buf.append(usage);
+        throw new Error(buf.toString());
+    }
+
+    private static final String usage = 
+        "Usage: [option]* [text]\n" +
+        "  where option is in the format '-opt[:val]'\n" +
+        "  options are:\n" +
+        "    -len:[gs|sn|se|sb]    (length: grow/shrink, spaces near, spaces end, spaces beginning)\n" +
+        "    -dir:[log|vis]        (direction: logical, visual)\n" +
+        "    -let:[no|sh|un|ta]    (letters: noop, shape, unshape, tashkeel)\n" +
+        // "    -let:[no|sh|un]       (letters: noop, shape, unshape)\n" +
+        "    -dig:[no|ea|ae|lr|al] (digits: noop, en2an, an2en, en2an_lr, en2an_al)\n" +
+        "    -typ:[an|ex]          (digit type: arabic, arabic extended)\n" +
+        "    -dst:#                (dest start: [integer])\n" +
+        "    -dln:#                (dest length (max size): [integer])\n" +
+        "    -sst:#                (source start: [integer])\n" +
+        "    -sln:#                (source length: [integer])\n" +
+        "    -tes:[cp|ip|st]       (test type: copy, in place, string)\n" +
+        "    -help                 (print this help message)\n" +
+        "  text can contain unicode escape values in the format '\\uXXXX' only\n";
+        
+    private static String escapedText(char[] text, int start, int length) {
+        StringBuffer buf = new StringBuffer();
+        for (int i = start, e = start + length; i < e; ++i) {
+            char ch = text[i];
+            if (ch < 0x20 || ch > 0x7e) {
+                buf.append("\\u");
+                if (ch < 0x1000) {
+                    buf.append('0');
+                }
+                if (ch < 0x100) {
+                    buf.append('0');
+                }
+                if (ch < 0x10) {
+                    buf.append('0');
+                }
+                buf.append(Integer.toHexString(ch));
+            } else {
+                buf.append(ch);
+            }
+        }
+        return buf.toString();
+    }
+
+    private static String parseText(String text) {
+        // process unicode escapes (only)
+        StringBuffer buf = new StringBuffer();
+        char[] chars = text.toCharArray();
+        for (int i = 0; i < chars.length; ++i) {
+            char ch = chars[i];
+            if (ch == '\\') {
+                if ((i < chars.length - 1) &&
+                    (chars[i+1] == 'u')) {
+                    int val = Integer.parseInt(text.substring(i+2, i+6), 16);
+                    buf.append((char)val);
+                    i += 5;
+                } else {
+                    buf.append('\\');
+                }
+            } else {
+                buf.append(ch);
+            }
+        }
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java b/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java
new file mode 100755
index 0000000..ac9808f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java
@@ -0,0 +1,715 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java,v $
+ * $Date: 2002/08/13 22:04:39 $
+ * $Revision: 1.6 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.timezone;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import com.ibm.icu.dev.test.*;
+import java.util.Date;
+
+/**
+ * A test which discovers the boundaries of DST programmatically and verifies
+ * that they are correct.
+ */
+public class TimeZoneBoundaryTest extends TestFmwk
+{
+    static final int ONE_SECOND = 1000;
+    static final int ONE_MINUTE = 60*ONE_SECOND;
+    static final int ONE_HOUR = 60*ONE_MINUTE;
+    static final long ONE_DAY = 24*ONE_HOUR;
+    static final long ONE_YEAR = (long)(365.25 * ONE_DAY);
+    static final long SIX_MONTHS = ONE_YEAR / 2;
+
+    static final int MONTH_LENGTH[] = {31,29,31,30,31,30,31,31,30,31,30,31};
+
+    // These values are empirically determined to be correct
+    static final long PST_1997_BEG  = 860320800000L;
+    static final long PST_1997_END  = 877856400000L;
+
+    // Minimum interval for binary searches in ms; should be no larger
+    // than 1000.
+    static final long INTERVAL = 10; // Milliseconds
+
+    // [3Jan01 Liu] Updated for 2000f data
+    static final String AUSTRALIA = "Australia/Adelaide";
+    static final long AUSTRALIA_1997_BEG = 877797000000L;
+    static final long AUSTRALIA_1997_END = 859653000000L;
+    
+    public static void main(String[] args) throws Exception {
+        new TimeZoneBoundaryTest().run(args);
+    }
+
+    /**
+     * Date.toString().substring() Boundary Test
+     * Look for a DST changeover to occur within 6 months of the given Date.
+     * The initial Date.toString() should yield a string containing the
+     * startMode as a SUBSTRING.  The boundary will be tested to be
+     * at the expectedBoundary value.
+     */
+    void findDaylightBoundaryUsingDate(Date d, String startMode, long expectedBoundary)
+    {
+        // Given a date with a year start, find the Daylight onset
+        // and end.  The given date should be 1/1/xx in some year.
+
+        if (d.toString().indexOf(startMode) == -1)
+        {
+            logln("Error: " + startMode + " not present in " + d);
+        }
+
+        // Use a binary search, assuming that we have a Standard
+        // time at the midpoint.
+        long min = d.getTime();
+        long max = min + SIX_MONTHS;
+
+        while ((max - min) >  INTERVAL)
+        {
+            long mid = (min + max) >> 1;
+            String s = new Date(mid).toString();
+            // logln(s);
+            if (s.indexOf(startMode) != -1)
+            {
+                min = mid;
+            }
+            else
+            {
+                max = mid;
+            }
+        }
+
+        logln("Date Before: " + showDate(min));
+        logln("Date After:  " + showDate(max));
+        long mindelta = expectedBoundary - min;
+        // not used long maxdelta = max - expectedBoundary;
+        if (mindelta >= 0 && mindelta <= INTERVAL &&
+            mindelta >= 0 && mindelta <= INTERVAL)
+            logln("PASS: Expected boundary at " + expectedBoundary);
+        else
+            errln("FAIL: Expected boundary at " + expectedBoundary);
+    }
+
+    // This test cannot be compiled until the inDaylightTime() method of GregorianCalendar
+    // becomes public.
+    //    static void findDaylightBoundaryUsingCalendar(Date d, boolean startsInDST)
+    //    {
+    //  // Given a date with a year start, find the Daylight onset
+    //  // and end.  The given date should be 1/1/xx in some year.
+    //
+    //  GregorianCalendar cal = new GregorianCalendar();
+    //  cal.setTime(d);
+    //  if (cal.inDaylightTime() != startsInDST)
+    //  {
+    //      logln("Error: inDaylightTime(" + d + ") != " + startsInDST);
+    //  }
+    //
+    //  // Use a binary search, assuming that we have a Standard
+    //  // time at the midpoint.
+    //  long min = d.getTime();
+    //  long max = min + (long)(365.25 / 2 * 24*60*60*1000);
+    //
+    //  while ((max - min) >  INTERVAL)
+    //  {
+    //      long mid = (min + max) >> 1;
+    //      cal.setTime(new Date(mid));
+    //      if (cal.inDaylightTime() == startsInDST)
+    //      {
+    //      min = mid;
+    //      }
+    //      else
+    //      {
+    //      max = mid;
+    //      }
+    //  }
+    //
+    //  logln("Calendar Before: " + showDate(min));
+    //  logln("Calendar After:  " + showDate(max));
+    //    }
+
+    void findDaylightBoundaryUsingTimeZone(Date d, boolean startsInDST, long expectedBoundary)
+    {
+        findDaylightBoundaryUsingTimeZone(d, startsInDST, expectedBoundary,
+                                          TimeZone.getDefault());
+    }
+
+    void findDaylightBoundaryUsingTimeZone(Date d, boolean startsInDST,
+                                           long expectedBoundary, TimeZone tz)
+    {
+        // Given a date with a year start, find the Daylight onset
+        // and end.  The given date should be 1/1/xx in some year.
+
+        // Use a binary search, assuming that we have a Standard
+        // time at the midpoint.
+        long min = d.getTime();
+        long max = min + SIX_MONTHS;
+
+        if (tz.inDaylightTime(d) != startsInDST)
+        {
+            errln("FAIL: " + tz.getID() + " inDaylightTime(" +
+                  d + ") != " + startsInDST);
+            startsInDST = !startsInDST; // Flip over; find the apparent value
+        }
+
+        if (tz.inDaylightTime(new Date(max)) == startsInDST)
+        {
+            errln("FAIL: " + tz.getID() + " inDaylightTime(" +
+                  (new Date(max)) + ") != " + (!startsInDST));
+            return;
+        }
+
+        while ((max - min) >  INTERVAL)
+        {
+            long mid = (min + max) >> 1;
+            boolean isIn = tz.inDaylightTime(new Date(mid));
+            if (isIn == startsInDST)
+            {
+                min = mid;
+            }
+            else
+            {
+                max = mid;
+            }
+        }
+
+        logln(tz.getID() + " Before: " + showDate(min, tz));
+        logln(tz.getID() + " After:  " + showDate(max, tz));
+
+        long mindelta = expectedBoundary - min;
+        // not used long maxdelta = max - expectedBoundary; 
+        DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
+        fmt.setTimeZone(tz);
+        if (mindelta >= 0 && mindelta <= INTERVAL &&
+            mindelta >= 0 && mindelta <= INTERVAL)
+            logln("PASS: Expected boundary at " + expectedBoundary + " = " + fmt.format(new Date(expectedBoundary)));
+        else
+            errln("FAIL: Expected boundary at " + expectedBoundary + " = " + fmt.format(new Date(expectedBoundary)));
+    }
+
+    private static String showDate(long l)
+    {
+        return showDate(new Date(l));
+    }
+
+    private static String showDate(Date d)
+    {
+        java.util.Calendar cal = java.util.Calendar.getInstance();
+        cal.setTime(d);
+        return "" + (cal.get(Calendar.YEAR) - 1900) + "/" + 
+               showNN(cal.get(Calendar.MONTH) + 1) + "/" + 
+               showNN(cal.get(Calendar.DAY_OF_MONTH)) + " " + 
+               showNN(cal.get(Calendar.HOUR_OF_DAY)) + ":" 
+               + showNN(cal.get(Calendar.MINUTE)) + " \"" + d + "\" = " +
+               d.getTime();
+    }
+
+    private static String showDate(long l, TimeZone z)
+    {
+        return showDate(new Date(l), z);
+    }
+
+    private static String showDate(Date d, TimeZone zone)
+    {
+        DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
+        fmt.setTimeZone(zone);
+        java.util.Calendar cal = java.util.Calendar.getInstance();
+        cal.setTime(d);
+        return "" + (cal.get(Calendar.YEAR) - 1900) + "/" + 
+               showNN(cal.get(Calendar.MONTH) + 1) + "/" + 
+               showNN(cal.get(Calendar.DAY_OF_MONTH)) + " " + 
+               showNN(cal.get(Calendar.HOUR_OF_DAY)) + ":" + 
+               showNN(cal.get(Calendar.MINUTE)) + " \"" + d + "\" = " +
+               fmt.format(d) + " = " + d.getTime();
+    }
+
+    private static String showNN(int n)
+    {
+        return ((n < 10) ? "0" : "") + n;
+    }
+
+    /**
+     * Given a date, a TimeZone, and expected values for inDaylightTime,
+     * useDaylightTime, zone and DST offset, verify that this is the case.
+     */
+    void verifyDST(Date d, TimeZone time_zone,
+                   boolean expUseDaylightTime, boolean expInDaylightTime,
+                   int expZoneOffset, int expDSTOffset)
+    {
+        logln("-- Verifying time " + d +
+              " in zone " + time_zone.getID());
+
+        if (time_zone.inDaylightTime(d) == expInDaylightTime)
+            logln("PASS: inDaylightTime = " + time_zone.inDaylightTime(d));
+        else
+            errln("FAIL: inDaylightTime = " + time_zone.inDaylightTime(d));
+
+        if (time_zone.useDaylightTime() == expUseDaylightTime)
+            logln("PASS: useDaylightTime = " + time_zone.useDaylightTime());
+        else
+            errln("FAIL: useDaylightTime = " + time_zone.useDaylightTime());
+
+        if (time_zone.getRawOffset() == expZoneOffset)
+            logln("PASS: getRawOffset() = " + expZoneOffset/(double)ONE_HOUR);
+        else
+            errln("FAIL: getRawOffset() = " + time_zone.getRawOffset()/(double)ONE_HOUR +
+                  "; expected " + expZoneOffset/(double)ONE_HOUR);
+
+        GregorianCalendar gc = new GregorianCalendar(time_zone);
+        gc.setTime(d);
+        int offset = time_zone.getOffset(gc.get(gc.ERA), gc.get(gc.YEAR), gc.get(gc.MONTH),
+                                         gc.get(gc.DAY_OF_MONTH), gc.get(gc.DAY_OF_WEEK),
+                                         ((gc.get(gc.HOUR_OF_DAY) * 60 +
+                                           gc.get(gc.MINUTE)) * 60 +
+                                          gc.get(gc.SECOND)) * 1000 +
+                                         gc.get(gc.MILLISECOND));
+        if (offset == expDSTOffset)
+            logln("PASS: getOffset() = " + offset/(double)ONE_HOUR);
+        else
+            errln("FAIL: getOffset() = " + offset/(double)ONE_HOUR +
+                  "; expected " + expDSTOffset/(double)ONE_HOUR);
+    }
+
+    public void TestBoundaries()
+    {
+        TimeZone pst = TimeZone.getTimeZone("PST");
+        TimeZone save = TimeZone.getDefault();
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        try {
+            TimeZone.setDefault(pst);
+
+            // DST changeover for PST is 4/6/1997 at 2 hours past midnight
+            tempcal.set(1997, Calendar.APRIL, 6);
+            Date d = tempcal.getTime();
+
+            // i is minutes past midnight standard time
+            for (int i=60; i<=180; i+=15)
+            {
+                boolean inDST = (i >= 120);
+                Date e = tempcal.getTime();
+                e.setTime(d.getTime() + i*60*1000);
+                verifyDST(e, pst, true, inDST, -8*ONE_HOUR,
+                          inDST ? -7*ONE_HOUR : -8*ONE_HOUR);
+            }
+        } finally {
+            TimeZone.setDefault(save);
+        }
+
+        if (true)
+        {
+            // This only works in PST/PDT
+            TimeZone.setDefault(TimeZone.getTimeZone("PST"));
+            logln("========================================");
+            tempcal.set(1997, 0, 1);
+            findDaylightBoundaryUsingDate(tempcal.getTime(), "PST", PST_1997_BEG);
+            logln("========================================");
+            tempcal.set(1997, 6, 1);
+            findDaylightBoundaryUsingDate(tempcal.getTime(), "PDT", PST_1997_END);
+        }
+
+        //  if (true)
+        //  {
+        //      logln("========================================");
+        //      findDaylightBoundaryUsingCalendar(new Date(97,0,1), false);
+        //      logln("========================================");
+        //      findDaylightBoundaryUsingCalendar(new Date(97,6,1), true);
+        //  }
+
+        if (true)
+        {
+            // Southern hemisphere test
+            logln("========================================");
+            TimeZone z = TimeZone.getTimeZone(AUSTRALIA);
+            tempcal.set(1997, 0, 1);
+            findDaylightBoundaryUsingTimeZone(tempcal.getTime(), true, AUSTRALIA_1997_END, z);
+            logln("========================================");
+            tempcal.set(1997, 6, 1);
+            findDaylightBoundaryUsingTimeZone(tempcal.getTime(), false, AUSTRALIA_1997_BEG, z);
+        }
+
+        if (true)
+        {
+            logln("========================================");
+            tempcal.set(1997, 0, 1);
+            findDaylightBoundaryUsingTimeZone(tempcal.getTime(), false, PST_1997_BEG);
+            logln("========================================");
+            tempcal.set(1997, 6, 1);
+            findDaylightBoundaryUsingTimeZone(tempcal.getTime(), true, PST_1997_END);
+        }
+
+        // This just shows the offset for April 4-7 in 1997.  This is redundant
+        // with a test above, so we disable it.
+        if (false)
+        {
+            TimeZone z = TimeZone.getDefault();
+            tempcal.set(1997, 3, 4);
+            logln(z.getOffset(1, 97, 3, 4, 6, 0) + " " + tempcal.getTime());
+            tempcal.set(1997, 3, 5);
+            logln(z.getOffset(1, 97, 3, 5, 7, 0) + " " + tempcal.getTime());
+            tempcal.set(1997, 3, 6);
+            logln(z.getOffset(1, 97, 3, 6, 1, 0) + " " + tempcal.getTime());
+            tempcal.set(1997, 3, 7);
+            logln(z.getOffset(1, 97, 3, 7, 2, 0) + " " + tempcal.getTime());
+        }
+    }
+
+
+    //----------------------------------------------------------------------
+    // Can't do any of these without a public inDaylightTime in GC
+    //----------------------------------------------------------------------
+
+
+    //    static GregorianCalendar cal = new GregorianCalendar();
+    //
+    //    static void _testUsingBinarySearch(Date d, boolean startsInDST)
+    //    {
+    //  // Given a date with a year start, find the Daylight onset
+    //  // and end.  The given date should be 1/1/xx in some year.
+    //
+    //  // Use a binary search, assuming that we have a Standard
+    //  // time at the midpoint.
+    //  long min = d.getTime();
+    //  long max = min + (long)(365.25 / 2 * ONE_DAY);
+    //
+    //  // First check the max
+    //  cal.setTime(new Date(max));
+    //  if (cal.inDaylightTime() == startsInDST)
+    //  {
+    //      logln("Error: inDaylightTime(" + (new Date(max)) + ") != " + (!startsInDST));
+    //  }
+    //
+    //  cal.setTime(d);
+    //  if (cal.inDaylightTime() != startsInDST)
+    //  {
+    //      logln("Error: inDaylightTime(" + d + ") != " + startsInDST);
+    //  }
+    //
+    //  while ((max - min) >  INTERVAL)
+    //  {
+    //      long mid = (min + max) >> 1;
+    //      cal.setTime(new Date(mid));
+    //      if (cal.inDaylightTime() == startsInDST)
+    //      {
+    //      min = mid;
+    //      }
+    //      else
+    //      {
+    //      max = mid;
+    //      }
+    //  }
+    //
+    //  logln("Binary Search Before: " + showDate(min));
+    //  logln("Binary Search After:  " + showDate(max));
+    //    }
+    //
+    //    static void _testUsingMillis(Date d, boolean startsInDST)
+    //    {
+    //  long millis = d.getTime();
+    //  long max = millis + (long)(370 * ONE_DAY); // A year plus extra
+    //
+    //  boolean lastDST = startsInDST;
+    //  while (millis < max)
+    //  {
+    //      cal.setTime(new Date(millis));
+    //      boolean inDaylight = cal.inDaylightTime();
+    //
+    //      if (inDaylight != lastDST)
+    //      {
+    //      logln("Switch " + (inDaylight ? "into" : "out of")
+    //                 + " DST at " + (new Date(millis)));
+    //      lastDST = inDaylight;
+    //      }
+    //
+    //      millis += 15*ONE_MINUTE;
+    //  }
+    //    }
+    //
+    //    static void _testUsingFields(int y, boolean startsInDST)
+    //    {
+    //  boolean lastDST = startsInDST;
+    //  for (int m = 0; m < 12; ++m)
+    //  {
+    //      for (int d = 1; d <= MONTH_LENGTH[m]; ++d)
+    //      {
+    //      for (int h = 0; h < 24; ++h)
+    //      {
+    //          for (int min = 0; min < 60; min += 15)
+    //          {
+    //          cal.clear();
+    //          cal.set(y, m, d, h, min);
+    //          boolean inDaylight = cal.inDaylightTime();
+    //          if (inDaylight != lastDST)
+    //          {
+    //              lastDST = inDaylight;
+    //              log("Switch " + (lastDST ? "into" : "out of")
+    //                       + " DST at " + y + "/" + (m+1) + "/" + d
+    //                       + " " + showNN(h) + ":" + showNN(min));
+    //              logln(" " + cal.getTime());
+    //
+    //              cal.set(y, m, d, h-1, 45);
+    //              log("Before = "
+    //+ y + "/" + (m+1) + "/" + d
+    //+ " " + showNN(h-1) + ":" + showNN(45));
+    //              logln(" " + cal.getTime());
+    //          }
+    //          }
+    //      }
+    //      }
+    //  }
+    //    }
+    //
+    //    public void Test1()
+    //    {
+    //  logln(Locale.getDefault().getDisplayName());
+    //  logln(TimeZone.getDefault().getID());
+    //  logln(new Date(0));
+    //
+    //  if (true)
+    //  {
+    //      logln("========================================");
+    //      _testUsingBinarySearch(new Date(97,0,1), false);
+    //      logln("========================================");
+    //      _testUsingBinarySearch(new Date(97,6,1), true);
+    //  }
+    //
+    //  if (true)
+    //  {
+    //      logln("========================================");
+    //      logln("Stepping using millis");
+    //      _testUsingMillis(new Date(97,0,1), false);
+    //  }
+    //
+    //  if (true)
+    //  {
+    //      logln("========================================");
+    //      logln("Stepping using fields");
+    //      _testUsingFields(1997, false);
+    //  }
+    //
+    //  if (false)
+    //  {
+    //      cal.clear();
+    //      cal.set(1997, 3, 5, 10, 0);
+    //      //  cal.inDaylightTime();
+    //      logln("Date = " + cal.getTime());
+    //      logln("Millis = " + cal.getTime().getTime()/3600000);
+    //  }
+    //    }
+
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+
+    void _testUsingBinarySearch(SimpleTimeZone tz, Date d, long expectedBoundary)
+    {
+        // Given a date with a year start, find the Daylight onset
+        // and end.  The given date should be 1/1/xx in some year.
+
+        // Use a binary search, assuming that we have a Standard
+        // time at the midpoint.
+        long min = d.getTime();
+        long max = min + (long)(365.25 / 2 * ONE_DAY);
+
+        // First check the boundaries
+        boolean startsInDST = tz.inDaylightTime(d);
+
+        if (tz.inDaylightTime(new Date(max)) == startsInDST)
+        {
+            logln("Error: inDaylightTime(" + (new Date(max)) + ") != " + (!startsInDST));
+        }
+
+        while ((max - min) >  INTERVAL)
+        {
+            long mid = (min + max) >> 1;
+            if (tz.inDaylightTime(new Date(mid)) == startsInDST)
+            {
+                min = mid;
+            }
+            else
+            {
+                max = mid;
+            }
+        }
+
+        logln("Binary Search Before: " + showDate(min));
+        logln("Binary Search After:  " + showDate(max));
+
+        long mindelta = expectedBoundary - min;
+        // not used long maxdelta = max - expectedBoundary;
+        if (mindelta >= 0 && mindelta <= INTERVAL &&
+            mindelta >= 0 && mindelta <= INTERVAL)
+            logln("PASS: Expected boundary at " + expectedBoundary);
+        else
+            errln("FAIL: Expected boundary at " + expectedBoundary);
+    }
+
+    /*
+      static void _testUsingMillis(Date d, boolean startsInDST)
+      {
+      long millis = d.getTime();
+      long max = millis + (long)(370 * ONE_DAY); // A year plus extra
+
+      boolean lastDST = startsInDST;
+      while (millis < max)
+      {
+      cal.setTime(new Date(millis));
+      boolean inDaylight = cal.inDaylightTime();
+
+      if (inDaylight != lastDST)
+      {
+      logln("Switch " + (inDaylight ? "into" : "out of")
+      + " DST at " + (new Date(millis)));
+      lastDST = inDaylight;
+      }
+
+      millis += 15*ONE_MINUTE;
+      }
+      }
+      */
+
+    /**
+     * Test new rule formats.
+     */
+    public void TestNewRules()
+    {
+        //logln(Locale.getDefault().getDisplayName());
+        //logln(TimeZone.getDefault().getID());
+        //logln(new Date(0));
+
+        if (true)
+        {
+            // Doesn't matter what the default TimeZone is here, since we
+            // are creating our own TimeZone objects.
+
+            SimpleTimeZone tz;
+            java.util.Calendar tempcal = java.util.Calendar.getInstance();
+            tempcal.clear();
+
+            logln("-----------------------------------------------------------------");
+            logln("Aug 2ndTues .. Mar 15");
+            tz = new SimpleTimeZone(-8*ONE_HOUR, "Test_1",
+                                    Calendar.AUGUST, 2, Calendar.TUESDAY, 2*ONE_HOUR,
+                                    Calendar.MARCH, 15, 0, 2*ONE_HOUR);
+            //logln(tz.toString());
+            logln("========================================");
+            tempcal.set(1997, 0, 1);
+            _testUsingBinarySearch(tz, tempcal.getTime(), 858416400000L);
+            logln("========================================");
+            tempcal.set(1997, 6, 1);
+            _testUsingBinarySearch(tz, tempcal.getTime(), 871380000000L);
+
+            logln("-----------------------------------------------------------------");
+            logln("Apr Wed>=14 .. Sep Sun<=20");
+            tz = new SimpleTimeZone(-8*ONE_HOUR, "Test_2",
+                                    Calendar.APRIL, 14, -Calendar.WEDNESDAY, 2*ONE_HOUR,
+                                    Calendar.SEPTEMBER, -20, -Calendar.SUNDAY, 2*ONE_HOUR);
+            //logln(tz.toString());
+            logln("========================================");
+            tempcal.set(1997, 0, 1);
+            _testUsingBinarySearch(tz, tempcal.getTime(), 861184800000L);
+            logln("========================================");
+            tempcal.set(1997, 6, 1);
+            _testUsingBinarySearch(tz, tempcal.getTime(), 874227600000L);
+        }
+
+        /*
+          if (true)
+          {
+          logln("========================================");
+          logln("Stepping using millis");
+          _testUsingMillis(new Date(97,0,1), false);
+          }
+
+          if (true)
+          {
+          logln("========================================");
+          logln("Stepping using fields");
+          _testUsingFields(1997, false);
+          }
+
+          if (false)
+          {
+          cal.clear();
+          cal.set(1997, 3, 5, 10, 0);
+          //    cal.inDaylightTime();
+          logln("Date = " + cal.getTime());
+          logln("Millis = " + cal.getTime().getTime()/3600000);
+          }
+          */
+    }
+
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+    // Long Bug
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+
+    //public void Test3()
+    //{
+    //    findDaylightBoundaryUsingTimeZone(new Date(97,6,1), true);
+    //}
+
+    /**
+     * Find boundaries by stepping.
+     */
+    void findBoundariesStepwise(int year, long interval, TimeZone z, int expectedChanges)
+    {
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(year, Calendar.JANUARY, 1);
+        Date d = tempcal.getTime();
+        long time = d.getTime(); // ms
+        long limit = time + ONE_YEAR + ONE_DAY;
+        boolean lastState = z.inDaylightTime(d);
+        int changes = 0;
+        logln("-- Zone " + z.getID() + " starts in " + year + " with DST = " + lastState);
+        logln("useDaylightTime = " + z.useDaylightTime());
+        while (time < limit)
+        {
+            d.setTime(time);
+            boolean state = z.inDaylightTime(d);
+            if (state != lastState)
+            {
+                logln((state ? "Entry " : "Exit ") +
+                      "at " + d);
+                lastState = state;
+                ++changes;
+            }
+            time += interval;
+        }
+        if (changes == 0)
+        {
+            if (!lastState && !z.useDaylightTime()) logln("No DST");
+            else errln("FAIL: DST all year, or no DST with true useDaylightTime");
+        }
+        else if (changes != 2)
+        {
+            errln("FAIL: " + changes + " changes seen; should see 0 or 2");
+        }
+        else if (!z.useDaylightTime())
+        {
+            errln("FAIL: useDaylightTime false but 2 changes seen");
+        }
+        if (changes != expectedChanges)
+        {
+            errln("FAIL: " + changes + " changes seen; expected " + expectedChanges);
+        }
+    }
+
+    public void TestStepwise()
+    {
+        findBoundariesStepwise(1997, ONE_DAY, TimeZone.getTimeZone("EST"), 2);
+        findBoundariesStepwise(1997, ONE_DAY, TimeZone.getTimeZone("ACT"), 2); // Updated 3Jan01
+        findBoundariesStepwise(1997, ONE_DAY, TimeZone.getTimeZone("America/Phoenix"), 0); // Added 3Jan01
+        findBoundariesStepwise(1997, ONE_DAY, TimeZone.getTimeZone(AUSTRALIA), 2);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java b/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java
new file mode 100755
index 0000000..a6ef76a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java
@@ -0,0 +1,965 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java,v $
+ * $Date: 2002/08/13 22:04:39 $
+ * $Revision: 1.8 $
+ *
+ *******************************************************************************
+ */
+
+/**
+ * @test 1.18 99/09/21
+ * @bug 4052967 4073209 4073215 4084933 4096952 4109314 4126678 4151406 4151429
+ * @bug 4154525 4154537 4154542 4154650 4159922 4162593 4173604 4176686 4184229 4208960
+ */
+
+package com.ibm.icu.dev.test.timezone;
+import com.ibm.icu.util.*;
+import java.io.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.test.*;
+import java.util.Date;
+import java.util.Locale;
+
+public class TimeZoneRegression extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new TimeZoneRegression().run(args);
+    }
+
+    public void Test4052967() {
+        logln("*** CHECK TIMEZONE AGAINST HOST OS SETTING ***");
+	String id = TimeZone.getDefault().getID();
+        logln("user.timezone: " + System.getProperty("user.timezone", "<not set>"));
+	logln("TimeZone.getDefault().getID(): " + id);
+        logln(new Date().toString());
+        logln("*** THE RESULTS OF THIS TEST MUST BE VERIFIED MANUALLY ***");
+    }
+
+    public void Test4073209() {
+        TimeZone z1 = TimeZone.getTimeZone("PST");
+        TimeZone z2 = TimeZone.getTimeZone("PST");
+        if (z1 == z2) errln("Fail: TimeZone should return clones");
+    }
+
+    public void Test4073215() {
+        SimpleTimeZone z = (SimpleTimeZone) TimeZone.getTimeZone("GMT");
+        if (z.useDaylightTime())
+            errln("Fail: Fix test to start with non-DST zone");
+        z.setStartRule(Calendar.FEBRUARY, 1, Calendar.SUNDAY, 0);
+        z.setEndRule(Calendar.MARCH, -1, Calendar.SUNDAY, 0);
+        if (!z.useDaylightTime())
+            errln("Fail: DST not active");
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1997, Calendar.JANUARY, 31);
+        Date d1 = tempcal.getTime();
+        tempcal.set(1997, Calendar.MARCH, 1);
+        Date d2 = tempcal.getTime();
+        tempcal.set(1997, Calendar.MARCH, 31);
+        Date d3 = tempcal.getTime();
+        if (z.inDaylightTime(d1) || !z.inDaylightTime(d2) ||
+            z.inDaylightTime(d3)) {
+            errln("Fail: DST not working as expected");
+        }
+    }
+
+    /**
+     * The expected behavior of TimeZone around the boundaries is:
+     * (Assume transition time of 2:00 AM)
+     *    day of onset 1:59 AM STD  = display name 1:59 AM ST
+     *                 2:00 AM STD  = display name 3:00 AM DT
+     *    day of end   0:59 AM STD  = display name 1:59 AM DT
+     *                 1:00 AM STD  = display name 1:00 AM ST
+     */
+    public void Test4084933() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+
+        long offset1 = tz.getOffset(1,
+            1997, Calendar.OCTOBER, 26, Calendar.SUNDAY, (2*60*60*1000));
+        long offset2 = tz.getOffset(1,
+            1997, Calendar.OCTOBER, 26, Calendar.SUNDAY, (2*60*60*1000)-1);
+
+        long offset3 = tz.getOffset(1,
+            1997, Calendar.OCTOBER, 26, Calendar.SUNDAY, (1*60*60*1000));
+        long offset4 = tz.getOffset(1,
+            1997, Calendar.OCTOBER, 26, Calendar.SUNDAY, (1*60*60*1000)-1);
+
+        /*
+         *  The following was added just for consistency.  It shows that going *to* Daylight
+         *  Savings Time (PDT) does work at 2am.
+         */
+
+        long offset5 = tz.getOffset(1,
+            1997, Calendar.APRIL, 6, Calendar.SUNDAY, (2*60*60*1000));
+        long offset6 = tz.getOffset(1,
+            1997, Calendar.APRIL, 6, Calendar.SUNDAY, (2*60*60*1000)-1);
+
+        long offset7 = tz.getOffset(1,
+            1997, Calendar.APRIL, 6, Calendar.SUNDAY, (1*60*60*1000));
+        long offset8 = tz.getOffset(1,
+            1997, Calendar.APRIL, 6, Calendar.SUNDAY, (1*60*60*1000)-1);
+
+        long SToffset = -8 * 60*60*1000L;
+        long DToffset = -7 * 60*60*1000L;
+        if (offset1 != SToffset || offset2 != SToffset ||
+            offset3 != SToffset || offset4 != DToffset ||
+            offset5 != DToffset || offset6 != SToffset ||
+            offset7 != SToffset || offset8 != SToffset)
+            errln("Fail: TimeZone misbehaving");
+    }
+
+    public void Test4096952() {
+        String[] ZONES = { "GMT", "MET", "IST" };
+        boolean pass = true;
+        try {
+            for (int i=0; i<ZONES.length; ++i) {
+                TimeZone zone = TimeZone.getTimeZone(ZONES[i]);
+                if (!zone.getID().equals(ZONES[i]))
+                    errln("Fail: Test broken; zones not instantiating");
+
+                ByteArrayOutputStream baos;
+                ObjectOutputStream ostream =
+                    new ObjectOutputStream(baos = new 
+                                           ByteArrayOutputStream());
+                ostream.writeObject(zone);
+                ostream.close();
+                baos.close();
+                ObjectInputStream istream =
+                    new ObjectInputStream(new 
+                                          ByteArrayInputStream(baos.toByteArray()));
+                TimeZone frankenZone = (TimeZone) istream.readObject();
+                //logln("Zone:        " + zone);
+                //logln("FrankenZone: " + frankenZone);
+                if (!zone.equals(frankenZone)) {
+                    logln("TimeZone " + zone.getID() +
+                          " not equal to serialized/deserialized one");
+                    pass = false;
+                }
+            }
+            if (!pass) errln("Fail: TimeZone serialization/equality bug");
+        }
+        catch (IOException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+        catch (ClassNotFoundException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+    }
+
+    public void Test4109314() {
+        GregorianCalendar testCal = (GregorianCalendar)Calendar.getInstance(); 
+        TimeZone PST = TimeZone.getTimeZone("PST");
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1998,Calendar.APRIL,4,22,0);
+        Date d1 = tempcal.getTime();
+        tempcal.set(1998,Calendar.APRIL,5,6,0);
+        Date d2 = tempcal.getTime();
+        tempcal.set(1998,Calendar.OCTOBER,24,22,0);
+        Date d3 = tempcal.getTime();
+        tempcal.set(1998,Calendar.OCTOBER,25,6,0);
+        Date d4 = tempcal.getTime();
+        Object[] testData = {
+            PST, d1, d2,
+            PST, d3, d4,
+        };
+        boolean pass=true;
+        for (int i=0; i<testData.length; i+=3) {
+            testCal.setTimeZone((TimeZone) testData[i]);
+            long t = ((Date)testData[i+1]).getTime();
+            Date end = (Date) testData[i+2];
+            while (t < end.getTime()) { 
+                testCal.setTime(new Date(t));
+                if (!checkCalendar314(testCal, (TimeZone) testData[i]))
+                    pass = false;
+                t += 60*60*1000L;
+            } 
+        }
+        if (!pass) errln("Fail: TZ API inconsistent");
+    } 
+
+    boolean checkCalendar314(GregorianCalendar testCal, TimeZone testTZ) { 
+        // GregorianCalendar testCal = (GregorianCalendar)aCal.clone(); 
+
+        final int ONE_DAY = 24*60*60*1000;
+
+        int tzOffset, tzRawOffset; 
+        Float tzOffsetFloat,tzRawOffsetFloat; 
+        // Here is where the user made an error.  They were passing in the value of
+        // the MILLSECOND field; you need to pass in the millis in the day in STANDARD
+        // time.
+        int millis = testCal.get(Calendar.MILLISECOND) +
+            1000 * (testCal.get(Calendar.SECOND) +
+                    60 * (testCal.get(Calendar.MINUTE) +
+                          60 * (testCal.get(Calendar.HOUR_OF_DAY)))) -
+            testCal.get(Calendar.DST_OFFSET);
+
+        /* Fix up millis to be in range.  ASSUME THAT WE ARE NOT AT THE
+         * BEGINNING OR END OF A MONTH.  We must add this code because
+         * getOffset() has been changed to be more strict about the parameters
+         * it receives -- it turns out that this test was passing in illegal
+         * values. */
+        int date = testCal.get(Calendar.DATE);
+        int dow  = testCal.get(Calendar.DAY_OF_WEEK);
+        while (millis < 0) {
+            millis += ONE_DAY;
+            --date;
+            dow = Calendar.SUNDAY + ((dow - Calendar.SUNDAY + 6) % 7);
+        }
+        while (millis >= ONE_DAY) {
+            millis -= ONE_DAY;
+            ++date;
+            dow = Calendar.SUNDAY + ((dow - Calendar.SUNDAY + 1) % 7);
+        }
+
+        tzOffset = testTZ.getOffset(testCal.get(Calendar.ERA), 
+                                    testCal.get(Calendar.YEAR), 
+                                    testCal.get(Calendar.MONTH), 
+                                    date, 
+                                    dow, 
+                                    millis); 
+        tzRawOffset = testTZ.getRawOffset(); 
+        tzOffsetFloat = new Float((float)tzOffset/(float)3600000); 
+        tzRawOffsetFloat = new Float((float)tzRawOffset/(float)3600000); 
+
+        Date testDate = testCal.getTime(); 
+
+        boolean inDaylightTime = testTZ.inDaylightTime(testDate); 
+        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm"); 
+        sdf.setCalendar(testCal); 
+        String inDaylightTimeString; 
+
+        boolean passed; 
+
+        if (inDaylightTime) 
+        { 
+            inDaylightTimeString = " DST "; 
+            passed = (tzOffset == (tzRawOffset + 3600000));
+        } 
+        else 
+        { 
+            inDaylightTimeString = "     "; 
+            passed = (tzOffset == tzRawOffset);
+        } 
+
+        String output = testTZ.getID() + " " + sdf.format(testDate) +
+            " Offset(" + tzOffsetFloat + ")" +
+            " RawOffset(" + tzRawOffsetFloat + ")" + 
+            " " + millis/(float)3600000 + " " +
+            inDaylightTimeString; 
+
+        if (passed) 
+            output += "     "; 
+        else 
+            output += "ERROR"; 
+
+        if (passed) logln(output); else errln(output);
+        return passed;
+    } 
+
+    /**
+     * CANNOT REPRODUDE
+     *
+     * Yet another _alleged_ bug in TimeZone.getOffset(), a method that never
+     * should have been made public.  It's simply too hard to use correctly.
+     *
+     * The original test code failed to do the following:
+     * (1) Call Calendar.setTime() before getting the fields!
+     * (2) Use the right millis (as usual) for getOffset(); they were passing
+     *     in the MILLIS field, instead of the STANDARD MILLIS IN DAY.
+     * When you fix these two problems, the test passes, as expected.
+     */
+    public void Test4126678() {
+	// Note: this test depends on the PST time zone.
+	TimeZone initialZone = TimeZone.getDefault();
+        Calendar cal = Calendar.getInstance();
+        TimeZone tz = TimeZone.getTimeZone("PST");
+	TimeZone.setDefault(tz);
+        cal.setTimeZone(tz);
+
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1998, Calendar.APRIL, 5, 10, 0);
+        Date dt = tempcal.getTime();
+	// the dt value is local time in PST.
+        if (!tz.inDaylightTime(dt))
+            errln("We're not in Daylight Savings Time and we should be.\n");
+
+        cal.setTime(dt);
+        int era = cal.get(Calendar.ERA);
+        int year = cal.get(Calendar.YEAR);
+        int month = cal.get(Calendar.MONTH);
+        int day = cal.get(Calendar.DATE);
+        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
+        int millis = cal.get(Calendar.MILLISECOND) +
+            (cal.get(Calendar.SECOND) +
+             (cal.get(Calendar.MINUTE) +
+              (cal.get(Calendar.HOUR) * 60) * 60) * 1000) -
+            cal.get(Calendar.DST_OFFSET);
+
+        long offset = tz.getOffset(era, year, month, day, dayOfWeek, millis);
+        long raw_offset = tz.getRawOffset();
+        if (offset == raw_offset)
+            errln("Offsets should not match when in DST");
+
+	// restore the initial time zone so that this test case
+	// doesn't affect the others.
+	TimeZone.setDefault(initialZone);
+    }
+    
+    /**
+     * TimeZone.getAvailableIDs(int) throws exception for certain values,
+     * due to a faulty constant in TimeZone.java.
+     */
+    public void Test4151406() {
+        int max = 0;
+        for (int h=-28; h<=30; ++h) {
+            // h is in half-hours from GMT; rawoffset is in millis
+            int rawoffset = h * 1800000;
+            int hh = (h<0) ? -h : h;
+            String hname = ((h<0) ? "GMT-" : "GMT+") +
+                ((hh/2 < 10) ? "0" : "") +
+                (hh/2) + ':' +
+                ((hh%2==0) ? "00" : "30");
+            try {
+                String[] ids = TimeZone.getAvailableIDs(rawoffset);
+                if (ids.length > max) max = ids.length;
+                logln(hname + ' ' + ids.length +
+                      ((ids.length > 0) ? (" e.g. " + ids[0]) : ""));
+            } catch (Exception e) {
+                errln(hname + ' ' + "Fail: " + e);
+            }
+        }
+        logln("Maximum zones per offset = " + max);
+    }
+
+    public void Test4151429() {
+        try {
+            TimeZone tz = TimeZone.getTimeZone("GMT");
+            String name = tz.getDisplayName(true, Integer.MAX_VALUE,
+                                            Locale.getDefault());
+            name = null;
+            errln("IllegalArgumentException not thrown by TimeZone.getDisplayName()");
+        } catch(IllegalArgumentException e) {
+            System.out.print("");
+        }
+    }
+
+    /**
+     * SimpleTimeZone accepts illegal DST savings values.  These values
+     * must be non-zero.  There is no upper limit at this time.
+     */
+    public void Test4154525() {
+        final int GOOD = 1, BAD = 0;
+        int[] DATA = {
+            1, GOOD,
+            0, BAD,
+            -1, BAD,
+            60*60*1000, GOOD,
+            Integer.MIN_VALUE, BAD,
+            // Integer.MAX_VALUE, ?, // no upper limit on DST savings at this time
+        };
+        for (int i=0; i<DATA.length; i+=2) {
+            int savings = DATA[i];
+            boolean valid = DATA[i+1] == GOOD;
+            String method = null;
+            for (int j=0; j<2; ++j) {
+                try {
+                    switch (j) {
+                    case 0:
+                        method = "constructor";
+                        SimpleTimeZone z = new SimpleTimeZone(0, "id",
+                            Calendar.JANUARY, 1, 0, 0,
+                            Calendar.MARCH, 1, 0, 0,
+                            savings); // <- what we're interested in
+                        break;
+                    case 1:
+                        method = "setDSTSavings()";
+                        z = new SimpleTimeZone(0, "GMT");
+                        z.setDSTSavings(savings);
+                        break;
+                    }
+                    if (valid) {
+                        logln("Pass: DST savings of " + savings + " accepted by " + method);
+                    } else {
+                        errln("Fail: DST savings of " + savings + " accepted by " + method);
+                    }
+                } catch (IllegalArgumentException e) {
+                    if (valid) {
+                        errln("Fail: DST savings of " + savings + " to " + method + " gave " + e);
+                    } else {
+                        logln("Pass: DST savings of " + savings + " to " + method + " gave " + e);
+                    }               
+                }
+            }
+        }
+    }
+
+    /**
+     * SimpleTimeZone.hasSameRules() doesn't work for zones with no DST
+     * and different DST parameters.
+     */
+    public void Test4154537() {
+        // tz1 and tz2 have no DST and different rule parameters
+        SimpleTimeZone tz1 = new SimpleTimeZone(0, "1", 0, 0, 0, 0, 2, 0, 0, 0);
+        SimpleTimeZone tz2 = new SimpleTimeZone(0, "2", 1, 0, 0, 0, 3, 0, 0, 0);
+        // tza and tzA have the same rule params
+        SimpleTimeZone tza = new SimpleTimeZone(0, "a", 0, 1, 0, 0, 3, 2, 0, 0);
+        SimpleTimeZone tzA = new SimpleTimeZone(0, "A", 0, 1, 0, 0, 3, 2, 0, 0);
+        // tzb differs from tza
+        SimpleTimeZone tzb = new SimpleTimeZone(0, "b", 0, 1, 0, 0, 3, 1, 0, 0);
+        if (tz1.useDaylightTime() || tz2.useDaylightTime() ||
+            !tza.useDaylightTime() || !tzA.useDaylightTime() ||
+            !tzb.useDaylightTime()) {
+            errln("Test is broken -- rewrite it");
+        }
+        if (!tza.hasSameRules(tzA) || tza.hasSameRules(tzb)) {
+            errln("Fail: hasSameRules() broken for zones with rules");
+        }
+        if (!tz1.hasSameRules(tz2)) {
+            errln("Fail: hasSameRules() returns false for zones without rules");
+            errln("zone 1 = " + tz1);
+            errln("zone 2 = " + tz2);
+        }
+    }
+
+    /**
+     * SimpleTimeZone constructors, setStartRule(), and setEndRule() don't
+     * check for out-of-range arguments.
+     */
+    public void Test4154542() {
+        final int GOOD = 1;
+        final int BAD  = 0;
+
+        final int GOOD_MONTH       = Calendar.JANUARY;
+        final int GOOD_DAY         = 1;
+        final int GOOD_DAY_OF_WEEK = Calendar.SUNDAY;
+        final int GOOD_TIME        = 0;
+
+        int[] DATA = {
+            GOOD, Integer.MIN_VALUE,    0,  Integer.MAX_VALUE,   Integer.MIN_VALUE,
+            GOOD, Calendar.JANUARY,    -5,  Calendar.SUNDAY,     0,
+            GOOD, Calendar.DECEMBER,    5,  Calendar.SATURDAY,   24*60*60*1000-1,
+            BAD,  Calendar.DECEMBER,    5,  Calendar.SATURDAY,   24*60*60*1000,
+            BAD,  Calendar.DECEMBER,    5,  Calendar.SATURDAY,  -1,
+            BAD,  Calendar.JANUARY,    -6,  Calendar.SUNDAY,     0,
+            BAD,  Calendar.DECEMBER,    6,  Calendar.SATURDAY,   24*60*60*1000,
+            GOOD, Calendar.DECEMBER,    1,  0,                   0,
+            GOOD, Calendar.DECEMBER,   31,  0,                   0,
+            BAD,  Calendar.APRIL,      31,  0,                   0,
+            BAD,  Calendar.DECEMBER,   32,  0,                   0,
+            BAD,  Calendar.JANUARY-1,   1,  Calendar.SUNDAY,     0,
+            BAD,  Calendar.DECEMBER+1,  1,  Calendar.SUNDAY,     0,
+            GOOD, Calendar.DECEMBER,   31, -Calendar.SUNDAY,     0,
+            GOOD, Calendar.DECEMBER,   31, -Calendar.SATURDAY,   0,
+            BAD,  Calendar.DECEMBER,   32, -Calendar.SATURDAY,   0,
+            BAD,  Calendar.DECEMBER,  -32, -Calendar.SATURDAY,   0,
+            BAD,  Calendar.DECEMBER,   31, -Calendar.SATURDAY-1, 0,
+        };
+        SimpleTimeZone zone = new SimpleTimeZone(0, "Z");
+        for (int i=0; i<DATA.length; i+=5) {
+            boolean shouldBeGood = (DATA[i] == GOOD);
+            int month     = DATA[i+1];
+            int day       = DATA[i+2];
+            int dayOfWeek = DATA[i+3];
+            int time      = DATA[i+4];
+
+            Exception ex = null;
+            try {
+                zone.setStartRule(month, day, dayOfWeek, time);
+            } catch (IllegalArgumentException e) {
+                ex = e;
+            }
+            if ((ex == null) != shouldBeGood) {
+                errln("setStartRule(month=" + month + ", day=" + day +
+                      ", dayOfWeek=" + dayOfWeek + ", time=" + time +
+                      (shouldBeGood ? (") should work but throws " + ex)
+                       : ") should fail but doesn't"));
+            }
+
+            ex = null;
+            try {
+                zone.setEndRule(month, day, dayOfWeek, time);
+            } catch (IllegalArgumentException e) {
+                ex = e;
+            }
+            if ((ex == null) != shouldBeGood) {
+                errln("setEndRule(month=" + month + ", day=" + day +
+                      ", dayOfWeek=" + dayOfWeek + ", time=" + time +
+                      (shouldBeGood ? (") should work but throws " + ex)
+                       : ") should fail but doesn't"));
+            }
+
+            ex = null;
+            try {
+                SimpleTimeZone temp = new SimpleTimeZone(0, "Z",
+                        month, day, dayOfWeek, time,
+                        GOOD_MONTH, GOOD_DAY, GOOD_DAY_OF_WEEK, GOOD_TIME);
+                temp = null;
+            } catch (IllegalArgumentException e) {
+                ex = e;
+            }
+            if ((ex == null) != shouldBeGood) {
+                errln("SimpleTimeZone(month=" + month + ", day=" + day +
+                      ", dayOfWeek=" + dayOfWeek + ", time=" + time +
+                      (shouldBeGood ? (", <end>) should work but throws " + ex)
+                       : ", <end>) should fail but doesn't"));
+            }            
+
+            ex = null;
+            try {
+                SimpleTimeZone temp = new SimpleTimeZone(0, "Z",
+                        GOOD_MONTH, GOOD_DAY, GOOD_DAY_OF_WEEK, GOOD_TIME,
+                        month, day, dayOfWeek, time);
+                temp = null;
+            } catch (IllegalArgumentException e) {
+                ex = e;
+            }
+            if ((ex == null) != shouldBeGood) {
+                errln("SimpleTimeZone(<start>, month=" + month + ", day=" + day +
+                      ", dayOfWeek=" + dayOfWeek + ", time=" + time +
+                      (shouldBeGood ? (") should work but throws " + ex)
+                       : ") should fail but doesn't"));
+            }            
+        }
+    }
+
+    /**
+     * SimpleTimeZone.getOffset accepts illegal arguments.
+     */
+    public void Test4154650() {
+        final int GOOD=1, BAD=0;
+        final int GOOD_ERA=GregorianCalendar.AD, GOOD_YEAR=1998, GOOD_MONTH=Calendar.AUGUST;
+        final int GOOD_DAY=2, GOOD_DOW=Calendar.SUNDAY, GOOD_TIME=16*3600000;
+        int[] DATA = {
+            GOOD, GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+
+            GOOD, GregorianCalendar.BC, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            GOOD, GregorianCalendar.AD, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            BAD,  GregorianCalendar.BC-1, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            BAD,  GregorianCalendar.AD+1, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+
+            GOOD, GOOD_ERA, GOOD_YEAR, Calendar.JANUARY, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            GOOD, GOOD_ERA, GOOD_YEAR, Calendar.DECEMBER, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, Calendar.JANUARY-1, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, Calendar.DECEMBER+1, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            
+            GOOD, GOOD_ERA, GOOD_YEAR, Calendar.JANUARY, 1, GOOD_DOW, GOOD_TIME,
+            GOOD, GOOD_ERA, GOOD_YEAR, Calendar.JANUARY, 31, GOOD_DOW, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, Calendar.JANUARY, 0, GOOD_DOW, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, Calendar.JANUARY, 32, GOOD_DOW, GOOD_TIME,
+
+            GOOD, GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, Calendar.SUNDAY, GOOD_TIME,
+            GOOD, GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, Calendar.SATURDAY, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, Calendar.SUNDAY-1, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, Calendar.SATURDAY+1, GOOD_TIME,
+
+            GOOD, GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, 0,
+            GOOD, GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, 24*3600000-1,
+            BAD,  GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, -1,
+            BAD,  GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, 24*3600000,
+        };
+
+        TimeZone tz = TimeZone.getDefault();
+        for (int i=0; i<DATA.length; i+=7) {
+            boolean good = DATA[i] == GOOD;
+            IllegalArgumentException e = null;
+            try {
+                int offset = tz.getOffset(DATA[i+1], DATA[i+2], DATA[i+3],
+                                          DATA[i+4], DATA[i+5], DATA[i+6]); 
+                offset = 0;
+           } catch (IllegalArgumentException ex) {
+                e = ex;
+            }
+            if (good != (e == null)) {
+                errln("Fail: getOffset(" +
+                      DATA[i+1] + ", " + DATA[i+2] + ", " + DATA[i+3] + ", " +
+                      DATA[i+4] + ", " + DATA[i+5] + ", " + DATA[i+6] +
+                      (good ? (") threw " + e) : ") accepts invalid args"));
+            }
+        }
+    }
+
+    /**
+     * TimeZone constructors allow null IDs.
+     */
+    public void Test4159922() {
+        TimeZone z = null;
+
+        // TimeZone API.  Only hasSameRules() and setDefault() should
+        // allow null.
+        try {
+            z = TimeZone.getTimeZone(null);
+            errln("FAIL: Null allowed in getTimeZone");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        z = TimeZone.getTimeZone("GMT");
+        try {
+            z.getDisplayName(false, TimeZone.SHORT, null);
+            errln("FAIL: Null allowed in getDisplayName(3)");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        try {
+            z.getDisplayName(null);
+            errln("FAIL: Null allowed in getDisplayName(1)");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        try {
+            if (z.hasSameRules(null)) {
+                errln("FAIL: hasSameRules returned true");
+            }
+        } catch (NullPointerException e) {
+            errln("FAIL: Null NOT allowed in hasSameRules");
+        }
+        try {
+            z.inDaylightTime(null);
+            errln("FAIL: Null allowed in inDaylightTime");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        try {
+            z.setID(null);
+            errln("FAIL: Null allowed in setID");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+
+        TimeZone save = TimeZone.getDefault();
+        try {
+            TimeZone.setDefault(null);
+        } catch (NullPointerException e) {
+            errln("FAIL: Null NOT allowed in setDefault");
+        } finally {
+            TimeZone.setDefault(save);
+        }
+
+        // SimpleTimeZone API
+        SimpleTimeZone s = null;
+        try {
+            s = new SimpleTimeZone(0, null);
+            errln("FAIL: Null allowed in SimpleTimeZone(2)");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        try {
+            s = new SimpleTimeZone(0, null, 0, 1, 0, 0, 0, 1, 0, 0);
+            errln("FAIL: Null allowed in SimpleTimeZone(10)");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        try {
+            s = new SimpleTimeZone(0, null, 0, 1, 0, 0, 0, 1, 0, 0, 1000);
+            errln("FAIL: Null allowed in SimpleTimeZone(11)");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+    }
+
+    /**
+     * TimeZone broken at midnight.  The TimeZone code fails to handle
+     * transitions at midnight correctly.
+     */
+    public void Test4162593() {
+        SimpleDateFormat fmt = new SimpleDateFormat("z", Locale.US);
+        final int ONE_HOUR = 60*60*1000;
+	TimeZone initialZone = TimeZone.getDefault();
+        SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy HH:mm z"); 
+
+        SimpleTimeZone asuncion = new SimpleTimeZone(-4*ONE_HOUR, "America/Asuncion" /*PY%sT*/,
+            Calendar.OCTOBER, 1, 0 /*DOM*/, 0*ONE_HOUR,
+            Calendar.MARCH, 1, 0 /*DOM*/, 0*ONE_HOUR, 1*ONE_HOUR);
+
+        /* Zone
+         * Starting time
+         * Transition expected between start+1H and start+2H
+         */
+        Object[] DATA = {
+            new SimpleTimeZone(2*ONE_HOUR, "Asia/Damascus" /*EE%sT*/,
+                Calendar.APRIL, 1, 0 /*DOM*/, 0*ONE_HOUR,
+                Calendar.OCTOBER, 1, 0 /*DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
+            new int[] {98, Calendar.SEPTEMBER, 30, 22, 0},
+            Boolean.TRUE,
+
+            asuncion,
+            new int[] {100, Calendar.FEBRUARY, 28, 22, 0},
+            Boolean.FALSE,
+
+            asuncion,
+            new int[] {100, Calendar.FEBRUARY, 29, 22, 0},
+            Boolean.TRUE,
+        };
+        
+        String[] zone = new String[4];
+        
+        for (int j=0; j<DATA.length; j+=3) {
+            TimeZone tz = (TimeZone)DATA[j];
+            TimeZone.setDefault(tz);
+            fmt.setTimeZone(tz);
+            sdf.setTimeZone(tz);
+
+            // Must construct the Date object AFTER setting the default zone
+            int[] p = (int[])DATA[j+1];
+            java.util.Calendar tempcal = java.util.Calendar.getInstance();
+            tempcal.clear();
+            tempcal.set(p[0] + 1900, p[1], p[2], p[3], p[4]);
+            Date d = tempcal.getTime();
+            boolean transitionExpected = ((Boolean)DATA[j+2]).booleanValue();
+
+            logln(tz.getID() + ":");
+            for (int i=0; i<4; ++i) {
+                zone[i] = fmt.format(d);
+                logln("" + i + ": " + sdf.format(d) + " => " + zone[i]);
+                d = new Date(d.getTime() + ONE_HOUR);
+            }
+            if (zone[0].equals(zone[1]) &&
+                (zone[1].equals(zone[2]) != transitionExpected) &&
+                zone[2].equals(zone[3])) {
+                logln("Ok: transition " + transitionExpected);
+            } else {
+                errln("Fail: boundary transition incorrect");
+            }
+        }
+
+	// restore the initial time zone so that this test case
+	// doesn't affect the others.
+	TimeZone.setDefault(initialZone);
+    }
+
+    /**
+     * TimeZone broken in last hour of year
+     */
+    public void Test4173604() {
+        SimpleTimeZone pst = (SimpleTimeZone)TimeZone.getTimeZone("PST");
+        int o22 = pst.getOffset(1, 1998, 11, 31, Calendar.THURSDAY, 22*60*60*1000);
+        int o23 = pst.getOffset(1, 1998, 11, 31, Calendar.THURSDAY, 23*60*60*1000);
+        int o00 = pst.getOffset(1, 1999, 0, 1, Calendar.FRIDAY, 0);
+        if (o22 != o23 || o22 != o00) {
+            errln("Offsets should be the same (for PST), but got: " +
+                  "12/31 22:00 " + o22 +
+                  ", 12/31 23:00 " + o23 +
+                  ", 01/01 00:00 " + o00);
+        }
+
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.setTimeZone(pst);
+        cal.clear();
+        cal.set(1998, Calendar.JANUARY, 1);
+        int lastDST = cal.get(Calendar.DST_OFFSET);
+        int transitions = 0;
+        int delta = 5;
+        while (cal.get(Calendar.YEAR) < 2000) {
+            cal.add(Calendar.MINUTE, delta);
+            if (cal.get(Calendar.DST_OFFSET) != lastDST) {
+                ++transitions;
+                Calendar t = (Calendar)cal.clone();
+                t.add(Calendar.MINUTE, -delta);
+                logln(t.getTime() + "  " + t.get(Calendar.DST_OFFSET));
+                logln(cal.getTime() + "  " + (lastDST=cal.get(Calendar.DST_OFFSET)));
+            }
+        }
+        if (transitions != 4) {
+            errln("Saw " + transitions + " transitions; should have seen 4");
+        }
+    }
+
+    /**
+     * getDisplayName doesn't work with unusual savings/offsets.
+     */
+    public void Test4176686() {
+        // Construct a zone that does not observe DST but
+        // that does have a DST savings (which should be ignored).
+        int offset = 90 * 60000; // 1:30
+        SimpleTimeZone z1 = new SimpleTimeZone(offset, "_std_zone_");
+        z1.setDSTSavings(45 * 60000); // 0:45
+
+        // Construct a zone that observes DST for the first 6 months.
+        SimpleTimeZone z2 = new SimpleTimeZone(offset, "_dst_zone_");
+        z2.setDSTSavings(45 * 60000); // 0:45
+        z2.setStartRule(Calendar.JANUARY, 1, 0);
+        z2.setEndRule(Calendar.JULY, 1, 0);
+
+        // Also check DateFormat
+        DateFormat fmt1 = new SimpleDateFormat("z");
+        fmt1.setTimeZone(z1); // Format uses standard zone
+        DateFormat fmt2 = new SimpleDateFormat("z");
+        fmt2.setTimeZone(z2); // Format uses DST zone
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1970, Calendar.FEBRUARY, 1);
+        Date dst = tempcal.getTime(); // Time in DST
+        tempcal.set(1970, Calendar.AUGUST, 1);
+        Date std = tempcal.getTime(); // Time in standard
+
+        // Description, Result, Expected Result
+        String[] DATA = {
+            "getDisplayName(false, SHORT)/std zone",
+            z1.getDisplayName(false, TimeZone.SHORT), "GMT+01:30",
+            "getDisplayName(false, LONG)/std zone",
+            z1.getDisplayName(false, TimeZone.LONG ), "GMT+01:30",
+            "getDisplayName(true, SHORT)/std zone",
+            z1.getDisplayName(true, TimeZone.SHORT), "GMT+01:30",
+            "getDisplayName(true, LONG)/std zone",
+            z1.getDisplayName(true, TimeZone.LONG ), "GMT+01:30",
+            "getDisplayName(false, SHORT)/dst zone",
+            z2.getDisplayName(false, TimeZone.SHORT), "GMT+01:30",
+            "getDisplayName(false, LONG)/dst zone",
+            z2.getDisplayName(false, TimeZone.LONG ), "GMT+01:30",
+            "getDisplayName(true, SHORT)/dst zone",
+            z2.getDisplayName(true, TimeZone.SHORT), "GMT+02:15",
+            "getDisplayName(true, LONG)/dst zone",
+            z2.getDisplayName(true, TimeZone.LONG ), "GMT+02:15",
+            "DateFormat.format(std)/std zone", fmt1.format(std), "GMT+01:30",
+            "DateFormat.format(dst)/std zone", fmt1.format(dst), "GMT+01:30",
+            "DateFormat.format(std)/dst zone", fmt2.format(std), "GMT+01:30",
+            "DateFormat.format(dst)/dst zone", fmt2.format(dst), "GMT+02:15",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            if (!DATA[i+1].equals(DATA[i+2])) {
+                errln("FAIL: " + DATA[i] + " -> " + DATA[i+1] + ", exp " + DATA[i+2]);
+            }
+        }
+    }
+
+    /**
+     * SimpleTimeZone allows invalid DOM values.
+     */
+    public void Test4184229() {
+        SimpleTimeZone zone = null;
+        try {
+            zone = new SimpleTimeZone(0, "A", 0, -1, 0, 0, 0, 0, 0, 0);
+            errln("Failed. No exception has been thrown for DOM -1 startDay");
+        } catch(IllegalArgumentException e) {
+            logln("(a) " + e.getMessage());
+        }
+        try {
+            zone = new SimpleTimeZone(0, "A", 0, 0, 0, 0, 0, -1, 0, 0);
+            errln("Failed. No exception has been thrown for DOM -1 endDay");
+        } catch(IllegalArgumentException e) {
+            logln("(b) " + e.getMessage());
+        }
+        try {
+            zone = new SimpleTimeZone(0, "A", 0, -1, 0, 0, 0, 0, 0, 0, 1000);
+            errln("Failed. No exception has been thrown for DOM -1 startDay +savings");
+        } catch(IllegalArgumentException e) {
+            logln("(c) " + e.getMessage());
+        }
+        try {
+            zone = new SimpleTimeZone(0, "A", 0, 0, 0, 0, 0, -1, 0, 0, 1000);
+            errln("Failed. No exception has been thrown for DOM -1 endDay +savings");
+        } catch(IllegalArgumentException e) {
+            logln("(d) " + e.getMessage());
+        }
+        // Make a valid constructor call for subsequent tests.
+        zone = new SimpleTimeZone(0, "A", 0, 1, 0, 0, 0, 1, 0, 0);
+        try {
+            zone.setStartRule(0, -1, 0, 0);
+            errln("Failed. No exception has been thrown for DOM -1 setStartRule +savings");
+        } catch(IllegalArgumentException e) {
+            logln("(e) " + e.getMessage());
+        }
+        try {
+            zone.setStartRule(0, -1, 0);
+            errln("Failed. No exception has been thrown for DOM -1 setStartRule");
+        } catch(IllegalArgumentException e) {
+            logln("(f) " + e.getMessage());
+        }
+        try {
+            zone.setEndRule(0, -1, 0, 0);
+            errln("Failed. No exception has been thrown for DOM -1 setEndRule +savings");
+        } catch(IllegalArgumentException e) {
+            logln("(g) " + e.getMessage());
+        }
+        try {
+            zone.setEndRule(0, -1, 0);
+            errln("Failed. No exception has been thrown for DOM -1 setEndRule");
+        } catch(IllegalArgumentException e) {
+            logln("(h) " + e.getMessage());
+        }
+    }
+
+    /**
+     * SimpleTimeZone.getOffset() throws IllegalArgumentException when to get
+     * of 2/29/1996 (leap day).
+     */
+    public void Test4208960 () {
+	SimpleTimeZone tz = (SimpleTimeZone)TimeZone.getTimeZone("PST");
+	try {
+	    int offset = tz.getOffset(GregorianCalendar.AD, 1996, Calendar.FEBRUARY, 29, 
+				      Calendar.THURSDAY, 0);
+        offset = 0;
+	} catch (IllegalArgumentException e) {
+	    errln("FAILED: to get TimeZone.getOffset(2/29/96)");
+	}
+	try {
+	    int offset = tz.getOffset(GregorianCalendar.AD, 1997, Calendar.FEBRUARY, 29, 
+				      Calendar.THURSDAY, 0);
+	    offset = 0;
+	    errln("FAILED: TimeZone.getOffset(2/29/97) expected to throw Exception.");
+	} catch (IllegalArgumentException e) {
+	    logln("got IllegalArgumentException");
+	}
+    }
+
+    /**
+     * Test to see if DateFormat understands zone equivalency groups.  It
+     * might seem that this should be a DateFormat test, but it's really a
+     * TimeZone test -- the changes to DateFormat are minor.
+     *
+     * We use two known, stable zones that shouldn't change much over time
+     * -- America/Vancouver and America/Los_Angeles.  However, they MAY
+     * change at some point -- if that happens, replace them with any two
+     * zones in an equivalency group where one zone has localized name
+     * data, and the other doesn't, in some locale.
+     */
+    public void TestJ449() {
+        // not used String str;
+
+        // Modify the following three as necessary.  The two IDs must
+        // specify two zones in the same equivalency group.  One must have
+        // locale data in 'loc'; the other must not.
+        String idWithLocaleData = "America/Los_Angeles";
+        String idWithoutLocaleData = "America/Vancouver";
+        Locale loc = new Locale("en", "", "");
+
+        TimeZone zoneWith = TimeZone.getTimeZone(idWithLocaleData);
+        TimeZone zoneWithout = TimeZone.getTimeZone(idWithoutLocaleData);
+        // Make sure we got valid zones
+        if (!(zoneWith.getID().equals(idWithLocaleData) &&
+              zoneWithout.getID().equals(idWithoutLocaleData))) {
+            errln("Fail: Unable to create zones");
+        } else {
+            GregorianCalendar calWith = new GregorianCalendar(zoneWith);
+            GregorianCalendar calWithout = new GregorianCalendar(zoneWithout);
+            SimpleDateFormat fmt =
+                new SimpleDateFormat("MMM d yyyy hh:mm a zzz", loc);
+            Date date = new Date(0L);
+            fmt.setCalendar(calWith);
+            String strWith = fmt.format(date);
+            fmt.setCalendar(calWithout);
+            String strWithout = fmt.format(date);
+            if (strWith.equals(strWithout)) {
+                logln("Ok: " + idWithLocaleData + " -> " +
+                      strWith + "; " + idWithoutLocaleData + " -> " +
+                      strWithout);
+            } else {
+                errln("FAIL: " + idWithLocaleData + " -> " +
+                      strWith + "; " + idWithoutLocaleData + " -> " +
+                      strWithout);
+            }
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java b/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
new file mode 100755
index 0000000..f19ae1a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
@@ -0,0 +1,796 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java,v $
+ * $Date: 2002/08/13 22:04:39 $
+ * $Revision: 1.10 $
+ *
+ *******************************************************************************
+ */
+
+/**
+ * @test 1.22 99/09/21
+ * @bug 4028006 4044013 4096694 4107276 4107570 4112869 4130885
+ * @summary test TimeZone
+ * @build TimeZoneTest
+ */
+
+package com.ibm.icu.dev.test.timezone;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+public class TimeZoneTest extends TestFmwk
+{
+    static final int millisPerHour = 3600000;
+
+    public static void main(String[] args) throws Exception {
+        new TimeZoneTest().run(args);
+    }
+
+    /**
+     * Bug 4130885
+     * Certain short zone IDs, used since 1.1.x, are incorrect.
+     *  
+     * The worst of these is:
+     *
+     * "CAT" (Central African Time) should be GMT+2:00, but instead returns a
+     * zone at GMT-1:00. The zone at GMT-1:00 should be called EGT, CVT, EGST,
+     * or AZOST, depending on which zone is meant, but in no case is it CAT.
+     *
+     * Other wrong zone IDs:
+     *
+     * ECT (European Central Time) GMT+1:00: ECT is Ecuador Time,
+     * GMT-5:00. European Central time is abbreviated CEST.
+     *
+     * SST (Solomon Island Time) GMT+11:00. SST is actually Samoa Standard Time,
+     * GMT-11:00. Solomon Island time is SBT.
+     *
+     * NST (New Zealand Time) GMT+12:00. NST is the abbreviation for
+     * Newfoundland Standard Time, GMT-3:30. New Zealanders use NZST.
+     *
+     * AST (Alaska Standard Time) GMT-9:00. [This has already been noted in
+     * another bug.] It should be "AKST". AST is Atlantic Standard Time,
+     * GMT-4:00.
+     *
+     * PNT (Phoenix Time) GMT-7:00. PNT usually means Pitcairn Time,
+     * GMT-8:30. There is no standard abbreviation for Phoenix time, as distinct
+     * from MST with daylight savings.
+     *
+     * In addition to these problems, a number of zones are FAKE. That is, they
+     * don't match what people use in the real world.
+     *
+     * FAKE zones:
+     *
+     * EET (should be EEST)
+     * ART (should be EEST)
+     * MET (should be IRST)
+     * NET (should be AMST)
+     * PLT (should be PKT)
+     * BST (should be BDT)
+     * VST (should be ICT)
+     * CTT (should be CST) +
+     * ACT (should be CST) +
+     * AET (should be EST) +
+     * MIT (should be WST) +
+     * IET (should be EST) +
+     * PRT (should be AST) +
+     * CNT (should be NST)
+     * AGT (should be ARST)
+     * BET (should be EST) +
+     *
+     * + A zone with the correct name already exists and means something
+     * else. E.g., EST usually indicates the US Eastern zone, so it cannot be
+     * used for Brazil (BET).
+     */
+    public void TestShortZoneIDs() throws Exception {
+
+        ZoneDescriptor[] JDK_116_REFERENCE_LIST = {
+            new ZoneDescriptor("MIT", -660, false),
+            new ZoneDescriptor("HST", -600, false),
+            new ZoneDescriptor("AST", -540, true),
+            new ZoneDescriptor("PST", -480, true),
+            new ZoneDescriptor("PNT", -420, false),
+            new ZoneDescriptor("MST", -420, true),
+            new ZoneDescriptor("CST", -360, true),
+            new ZoneDescriptor("IET", -300, false),
+            new ZoneDescriptor("EST", -300, true),
+            new ZoneDescriptor("PRT", -240, false),
+            new ZoneDescriptor("CNT", -210, true),
+            new ZoneDescriptor("AGT", -180, false),
+            new ZoneDescriptor("BET", -180, true),
+            // new ZoneDescriptor("CAT", -60, false), // Wrong:
+            // As of bug 4130885, fix CAT (Central Africa)
+            new ZoneDescriptor("CAT", 120, false), // Africa/Harare
+            new ZoneDescriptor("GMT", 0, false),
+            new ZoneDescriptor("UTC", 0, false),
+            new ZoneDescriptor("ECT", 60, true),
+            new ZoneDescriptor("ART", 120, true),
+            new ZoneDescriptor("EET", 120, true),
+            new ZoneDescriptor("EAT", 180, false),
+            // new ZoneDescriptor("MET", 210, true),
+            // This is a standard Unix zone, so don't remap it - Liu 3Jan01
+            // new ZoneDescriptor("NET", 240, false);
+            // As of bug 4191164, fix NET
+            new ZoneDescriptor("NET", 240, true),
+            new ZoneDescriptor("PLT", 300, false),
+            new ZoneDescriptor("IST", 330, false),
+            new ZoneDescriptor("BST", 360, false),
+            new ZoneDescriptor("VST", 420, false),
+            new ZoneDescriptor("CTT", 480, true), // Revised Liu 3Jan01, std->dst
+            new ZoneDescriptor("JST", 540, false),
+            new ZoneDescriptor("ACT", 570, true), // Revised Liu 3Jan01, std->dst
+            new ZoneDescriptor("AET", 600, true),
+            new ZoneDescriptor("SST", 660, false),
+            // new ZoneDescriptor("NST", 720, false),
+            // As of bug 4130885, fix NST (New Zealand)
+            new ZoneDescriptor("NST", 720, true), // Pacific/Auckland
+
+            // [3Jan01 Liu] Three of these zones have been updated.
+            // The CTT and ACT zones just remap to Asia/Shanghai
+            // and Australia/Darwin.  Since those zones have changed,
+            // I have updated the table.  The MET zone used to be mapped
+            // to Asia/Tehran but since MET is a standard Unix zone named
+            // in the source data we no longer do this in icu or icu4j.
+        };
+
+        Hashtable hash = new Hashtable();
+
+        String[] ids = TimeZone.getAvailableIDs();
+        for (int i=0; i<ids.length; ++i) {
+            String id = ids[i];
+            if (id.length() == 3) {
+                hash.put(id, new ZoneDescriptor(TimeZone.getTimeZone(id)));
+            }
+        }
+
+        for (int i=0; i<JDK_116_REFERENCE_LIST.length; ++i) {
+            ZoneDescriptor referenceZone = JDK_116_REFERENCE_LIST[i];
+            ZoneDescriptor currentZone = (ZoneDescriptor)hash.get(referenceZone.getID());
+            if (referenceZone.equals(currentZone)) {
+                logln("ok " + referenceZone);
+            }
+            else {
+                errln("Fail: Expected " + referenceZone +
+                      "; got " + currentZone);
+            }
+        }
+    }
+
+    /**
+     * A descriptor for a zone; used to regress the short zone IDs.
+     */
+    static class ZoneDescriptor {
+        String id;
+        int offset; // In minutes
+        boolean daylight;
+
+        ZoneDescriptor(TimeZone zone) {
+            this.id = zone.getID();
+            this.offset = zone.getRawOffset() / 60000;
+            this.daylight = zone.useDaylightTime();
+        }
+
+        ZoneDescriptor(String id, int offset, boolean daylight) {
+            this.id = id;
+            this.offset = offset;
+            this.daylight = daylight;
+        }
+
+        public String getID() { return id; }
+
+        public boolean equals(Object o) {
+            ZoneDescriptor that = (ZoneDescriptor)o;
+            return that != null &&
+                id.equals(that.id) &&
+                offset == that.offset &&
+                daylight == that.daylight;
+        }
+
+        public String toString() {
+            int min = offset;
+            char sign = '+';
+            if (min < 0) { sign = '-'; min = -min; }
+
+            return "Zone[\"" + id + "\", GMT" + sign + (min/60) + ':' +
+                (min%60<10?"0":"") + (min%60) + ", " +
+                (daylight ? "Daylight" : "Standard") + "]";
+        }
+
+        public static int compare(Object o1, Object o2) {
+            ZoneDescriptor i1 = (ZoneDescriptor)o1;
+            ZoneDescriptor i2 = (ZoneDescriptor)o2;
+            if (i1.offset > i2.offset) return 1;
+            if (i1.offset < i2.offset) return -1;
+            if (i1.daylight && !i2.daylight) return 1;
+            if (!i1.daylight && i2.daylight) return -1;
+            return i1.id.compareTo(i2.id);
+        }
+    }
+
+    static final String EXPECTED_CUSTOM_ID = "Custom";
+    static final String formatMinutes(int min) {
+        char sign = '+';
+        if (min < 0) { sign = '-'; min = -min; }
+        int h = min/60;
+        min = min%60;
+        return "" + sign + h + ":" + ((min<10) ? "0" : "") + min;
+    }
+    /**
+     * As part of the VM fix (see CCC approved RFE 4028006, bug
+     * 4044013), TimeZone.getTimeZone() has been modified to recognize
+     * generic IDs of the form GMT[+-]hh:mm, GMT[+-]hhmm, and
+     * GMT[+-]hh.  Test this behavior here.
+     *
+     * Bug 4044013
+     */
+    public void TestCustomParse() throws Exception {
+        Object[] DATA = {
+            // ID        Expected offset in minutes
+            "GMT",       null,
+            "GMT0",      null,
+            "GMT+0",     new Integer(0),
+            "GMT+1",     new Integer(60),
+            "GMT-0030",  new Integer(-30),
+            "GMT+15:99", new Integer(15*60+99),
+            "GMT+",      null,
+            "GMT-",      null,
+            "GMT+0:",    null,
+            "GMT-:",     null,
+            "GMT+0010",  new Integer(10), // Interpret this as 00:10
+            "GMT-10",    new Integer(-10*60),
+            "GMT+30",    new Integer(30),
+            "GMT-3:30",  new Integer(-(3*60+30)),
+            "GMT-230",   new Integer(-(2*60+30)),
+        };
+        for (int i=0; i<DATA.length; i+=2) {
+            String id = (String)DATA[i];
+            Integer exp = (Integer)DATA[i+1];
+            TimeZone zone = TimeZone.getTimeZone(id);
+            if (zone.getID().equals("GMT")) {
+                logln(id + " -> generic GMT");
+                // When TimeZone.getTimeZone() can't parse the id, it
+                // returns GMT -- a dubious practice, but required for
+                // backward compatibility.
+                if (exp != null) {
+                    throw new Exception("Expected offset of " + formatMinutes(exp.intValue()) +
+                                        " for " + id + ", got parse failure");
+                }
+            }
+            else {
+                int ioffset = zone.getRawOffset()/60000;
+                String offset = formatMinutes(ioffset);
+                logln(id + " -> " + zone.getID() + " GMT" + offset);
+                if (exp == null) {
+                    throw new Exception("Expected parse failure for " + id +
+                                        ", got offset of " + offset +
+                                        ", id " + zone.getID());
+                }
+                else if (ioffset != exp.intValue() ||
+                         !zone.getID().equals(EXPECTED_CUSTOM_ID)) {
+                    throw new Exception("Expected offset of " + formatMinutes(exp.intValue()) +
+                                        ", id Custom, for " + id +
+                                        ", got offset of " + offset +
+                                        ", id " + zone.getID());
+                }
+            }
+        }
+    }
+
+    /**
+     * Test the basic functionality of the getDisplayName() API.
+     *
+     * Bug 4112869
+     * Bug 4028006
+     *
+     * See also API change request A41.
+     *
+     * 4/21/98 - make smarter, so the test works if the ext resources
+     * are present or not.
+     */
+    public void TestDisplayName() {
+        TimeZone zone = TimeZone.getTimeZone("PST");
+        String name = zone.getDisplayName(Locale.ENGLISH);
+        logln("PST->" + name);
+        if (!name.equals("Pacific Standard Time"))
+            errln("Fail: Expected \"Pacific Standard Time\", got " + name +
+                  " for " + zone);
+
+        //*****************************************************************
+        // THE FOLLOWING LINES MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        // THE FOLLOWING LINES MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        // THE FOLLOWING LINES MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        //*****************************************************************
+        Object[] DATA = {
+            new Boolean(false), new Integer(TimeZone.SHORT), "PST",
+            new Boolean(true),  new Integer(TimeZone.SHORT), "PDT",
+            new Boolean(false), new Integer(TimeZone.LONG),  "Pacific Standard Time",
+            new Boolean(true),  new Integer(TimeZone.LONG),  "Pacific Daylight Time",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            name = zone.getDisplayName(((Boolean)DATA[i]).booleanValue(),
+                                       ((Integer)DATA[i+1]).intValue(),
+                                       Locale.ENGLISH);
+            if (!name.equals(DATA[i+2]))
+                errln("Fail: Expected " + DATA[i+2] + "; got " + name);
+        }
+
+        // Make sure that we don't display the DST name by constructing a fake
+        // PST zone that has DST all year long.
+        SimpleTimeZone zone2 = new SimpleTimeZone(0, "PST");
+        zone2.setStartRule(Calendar.JANUARY, 1, 0);
+        zone2.setEndRule(Calendar.DECEMBER, 31, 0);
+        logln("Modified PST inDaylightTime->" + zone2.inDaylightTime(new Date()));
+        name = zone2.getDisplayName(Locale.ENGLISH);
+        logln("Modified PST->" + name);
+        if (!name.equals("Pacific Standard Time"))
+            errln("Fail: Expected \"Pacific Standard Time\"");
+
+        // Make sure we get the default display format for Locales
+        // with no display name data.
+        Locale zh_CN = Locale.SIMPLIFIED_CHINESE;
+        name = zone.getDisplayName(zh_CN);
+        //*****************************************************************
+        // THE FOLLOWING LINE MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        // THE FOLLOWING LINE MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        // THE FOLLOWING LINE MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        //*****************************************************************
+        logln("PST(zh_CN)->" + name);
+
+        // Now be smart -- check to see if zh resource is even present.
+        // If not, we expect the en fallback behavior.
+
+		// in icu4j 2.1 we know we have the zh_CN locale data, though it's incomplete
+		/*
+        ResourceBundle enRB = ICULocaleData.getResourceBundle("DateFormatZoneData", Locale.ENGLISH);
+        ResourceBundle zhRB = ICULocaleData.getResourceBundle("DateFormatZoneData", zh_CN);
+        boolean noZH = enRB == zhRB;
+
+        if (noZH) {
+            logln("Warning: Not testing the zh_CN behavior because resource is absent");
+            if (!name.equals("Pacific Standard Time"))
+                errln("Fail: Expected Pacific Standard Time");
+        }
+        else 
+		*/
+		if (!name.equals("Pacific Standard Time") &&
+			!name.equals("GMT-08:00") &&
+			!name.equals("GMT-8:00") &&
+			!name.equals("GMT-0800") &&
+			!name.equals("GMT-800")) {
+
+            errln("Fail: Expected GMT-08:00 or something similar");
+            errln("************************************************************");
+            errln("THE ABOVE FAILURE MAY JUST MEAN THE LOCALE DATA HAS CHANGED");
+            errln("************************************************************");
+        }
+        
+        // Now try a non-existent zone
+        zone2 = new SimpleTimeZone(90*60*1000, "xyzzy");
+        name = zone2.getDisplayName(Locale.ENGLISH);
+        logln("GMT+90min->" + name);
+        if (!name.equals("GMT+01:30") &&
+            !name.equals("GMT+1:30") &&
+            !name.equals("GMT+0130") &&
+            !name.equals("GMT+130"))
+            errln("Fail: Expected GMT+01:30 or something similar");
+    }
+
+    public void TestGenericAPI() {
+        String id = "NewGMT";
+        int offset = 12345;
+
+        SimpleTimeZone zone = new SimpleTimeZone(offset, id);
+        if (zone.useDaylightTime()) errln("FAIL: useDaylightTime should return false");
+
+        TimeZone zoneclone = (TimeZone)zone.clone();
+        if (!zoneclone.equals(zone)) errln("FAIL: clone or operator== failed");
+        zoneclone.setID("abc");
+        if (zoneclone.equals(zone)) errln("FAIL: clone or operator!= failed");
+        // delete zoneclone;
+
+        zoneclone = (TimeZone)zone.clone();
+        if (!zoneclone.equals(zone)) errln("FAIL: clone or operator== failed");
+        zoneclone.setRawOffset(45678);
+        if (zoneclone.equals(zone)) errln("FAIL: clone or operator!= failed");
+
+        // C++ only
+        /*
+          SimpleTimeZone copy(*zone);
+          if (!(copy == *zone)) errln("FAIL: copy constructor or operator== failed");
+          copy = *(SimpleTimeZone*)zoneclone;
+          if (!(copy == *zoneclone)) errln("FAIL: assignment operator or operator== failed");
+          */
+
+        TimeZone saveDefault = TimeZone.getDefault();
+        TimeZone.setDefault(zone);
+        TimeZone defaultzone = TimeZone.getDefault();
+        if (defaultzone == zone) errln("FAIL: Default object is identical, not clone");
+        if (!defaultzone.equals(zone)) errln("FAIL: Default object is not equal");
+        TimeZone.setDefault(saveDefault);
+        // delete defaultzone;
+        // delete zoneclone;
+    }
+
+    public void TestRuleAPI()
+    {
+        // ErrorCode status = ZERO_ERROR;
+
+        int offset = (int)(60*60*1000*1.75); // Pick a weird offset
+        SimpleTimeZone zone = new SimpleTimeZone(offset, "TestZone");
+        if (zone.useDaylightTime()) errln("FAIL: useDaylightTime should return false");
+
+        // Establish our expected transition times.  Do this with a non-DST
+        // calendar with the (above) declared local offset.
+        GregorianCalendar gc = new GregorianCalendar(zone);
+        gc.clear();
+        gc.set(1990, Calendar.MARCH, 1);
+        long marchOneStd = gc.getTime().getTime(); // Local Std time midnight
+        gc.clear();
+        gc.set(1990, Calendar.JULY, 1);
+        long julyOneStd = gc.getTime().getTime(); // Local Std time midnight
+
+        // Starting and ending hours, WALL TIME
+        int startHour = (int)(2.25 * 3600000);
+        int endHour   = (int)(3.5  * 3600000);
+
+        zone.setStartRule(Calendar.MARCH, 1, 0, startHour);
+        zone.setEndRule  (Calendar.JULY,  1, 0, endHour);
+
+        gc = new GregorianCalendar(zone);
+        // if (failure(status, "new GregorianCalendar")) return;
+
+        long marchOne = marchOneStd + startHour;
+        long julyOne = julyOneStd + endHour - 3600000; // Adjust from wall to Std time
+
+        long expMarchOne = 636251400000L;
+        if (marchOne != expMarchOne)
+        {
+            errln("FAIL: Expected start computed as " + marchOne +
+                  " = " + new Date(marchOne));
+            logln("      Should be                  " + expMarchOne +
+                  " = " + new Date(expMarchOne));
+        }
+
+        long expJulyOne = 646793100000L;
+        if (julyOne != expJulyOne)
+        {
+            errln("FAIL: Expected start computed as " + julyOne +
+                  " = " + new Date(julyOne));
+            logln("      Should be                  " + expJulyOne +
+                  " = " + new Date(expJulyOne));
+        }
+
+        Calendar cal1 = Calendar.getInstance();
+        cal1.set(1990, Calendar.JANUARY, 1);
+        Calendar cal2 = Calendar.getInstance();
+        cal2.set(1990, Calendar.JUNE, 1);
+        _testUsingBinarySearch(zone, cal1.getTimeInMillis(),
+                               cal2.getTimeInMillis(), marchOne);
+        cal1.set(1990, Calendar.JUNE, 1);
+        cal2.set(1990, Calendar.DECEMBER, 31);
+        _testUsingBinarySearch(zone, cal1.getTimeInMillis(),
+                               cal2.getTimeInMillis(), julyOne);
+
+        if (zone.inDaylightTime(new Date(marchOne - 1000)) ||
+            !zone.inDaylightTime(new Date(marchOne)))
+            errln("FAIL: Start rule broken");
+        if (!zone.inDaylightTime(new Date(julyOne - 1000)) ||
+            zone.inDaylightTime(new Date(julyOne)))
+            errln("FAIL: End rule broken");
+
+        zone.setStartYear(1991);
+        if (zone.inDaylightTime(new Date(marchOne)) ||
+            zone.inDaylightTime(new Date(julyOne - 1000)))
+            errln("FAIL: Start year broken");
+
+        // failure(status, "TestRuleAPI");
+        // delete gc;
+        // delete zone;
+    }
+
+    void _testUsingBinarySearch(SimpleTimeZone tz, long min, long max, long expectedBoundary)
+    {
+        // ErrorCode status = ZERO_ERROR;
+        boolean startsInDST = tz.inDaylightTime(new Date(min));
+        // if (failure(status, "SimpleTimeZone::inDaylightTime")) return;
+        if (tz.inDaylightTime(new Date(max)) == startsInDST) {
+            logln("Error: inDaylightTime(" + new Date(max) + ") != " + (!startsInDST));
+            return;
+        }
+        // if (failure(status, "SimpleTimeZone::inDaylightTime")) return;
+        while ((max - min) > INTERVAL) {
+            long mid = (min + max) / 2;
+            if (tz.inDaylightTime(new Date(mid)) == startsInDST) {
+                min = mid;
+            }
+            else {
+                max = mid;
+            }
+            // if (failure(status, "SimpleTimeZone::inDaylightTime")) return;
+        }
+        logln("Binary Search Before: " + min + " = " + new Date(min));
+        logln("Binary Search After:  " + max + " = " + new Date(max));
+        long mindelta = expectedBoundary - min;
+        // not used long maxdelta = max - expectedBoundary;
+        if (mindelta >= 0 &&
+            mindelta <= INTERVAL &&
+            mindelta >= 0 &&
+            mindelta <= INTERVAL)
+            logln("PASS: Expected bdry:  " + expectedBoundary + " = " + new Date(expectedBoundary));
+        else
+            errln("FAIL: Expected bdry:  " + expectedBoundary + " = " + new Date(expectedBoundary));
+    }
+
+    static final int INTERVAL = 100;
+
+    // Bug 006; verify the offset for a specific zone.
+    public void TestPRTOffset()
+    {
+        TimeZone tz = TimeZone.getTimeZone( "PRT" );
+        if( tz == null ) {
+            errln( "FAIL: TimeZone(PRT) is null" );
+        }
+        else{
+            if (tz.getRawOffset() != (-4*millisPerHour))
+                errln("FAIL: Offset for PRT should be -4, got " +
+                      tz.getRawOffset() / (double)millisPerHour);
+        }
+
+    }
+
+    // Test various calls
+    public void TestVariousAPI518()
+    {
+        TimeZone time_zone = TimeZone.getTimeZone("PST");
+        Calendar cal = Calendar.getInstance();
+        cal.set(1997, Calendar.APRIL, 30);
+        Date d = cal.getTime();
+
+        logln("The timezone is " + time_zone.getID());
+
+        if (time_zone.inDaylightTime(d) != true)
+            errln("FAIL: inDaylightTime returned false");
+
+        if (time_zone.useDaylightTime() != true)
+            errln("FAIL: useDaylightTime returned false");
+
+        if (time_zone.getRawOffset() != -8*millisPerHour)
+            errln( "FAIL: getRawOffset returned wrong value");
+
+        GregorianCalendar gc = new GregorianCalendar();
+        gc.setTime(d);
+        if (time_zone.getOffset(gc.AD, gc.get(gc.YEAR), gc.get(gc.MONTH),
+                                gc.get(gc.DAY_OF_MONTH),
+                                gc.get(gc.DAY_OF_WEEK), 0)
+            != -7*millisPerHour)
+            errln("FAIL: getOffset returned wrong value");
+    }
+
+    // Test getAvailableID API
+    public void TestGetAvailableIDs913()
+    {
+        StringBuffer buf = new StringBuffer("TimeZone.getAvailableIDs() = { ");
+        String[] s = TimeZone.getAvailableIDs();
+        for (int i=0; i<s.length; ++i)
+        {
+            if (i > 0) buf.append(", ");
+            buf.append(s[i]);
+        }
+        buf.append(" };");
+        logln(buf.toString());
+
+        buf.setLength(0);
+        buf.append("TimeZone.getAvailableIDs(GMT+02:00) = { ");
+        s = TimeZone.getAvailableIDs(+2 * 60 * 60 * 1000);
+        for (int i=0; i<s.length; ++i)
+        {
+            if (i > 0) buf.append(", ");
+            buf.append(s[i]);
+        }
+        buf.append(" };");
+        logln(buf.toString());
+
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        if (tz != null)
+            logln("getTimeZone(PST) = " + tz.getID());
+        else
+            errln("FAIL: getTimeZone(PST) = null");
+
+        tz = TimeZone.getTimeZone("America/Los_Angeles");
+        if (tz != null)
+            logln("getTimeZone(America/Los_Angeles) = " + tz.getID());
+        else
+            errln("FAIL: getTimeZone(PST) = null");
+
+        // Bug 4096694
+        tz = TimeZone.getTimeZone("NON_EXISTENT");
+        if (tz == null)
+            errln("FAIL: getTimeZone(NON_EXISTENT) = null");
+        else if (!tz.getID().equals("GMT"))
+            errln("FAIL: getTimeZone(NON_EXISTENT) = " + tz.getID());
+    }
+
+    /**
+     * Bug 4107276
+     */
+    public void TestDSTSavings() {
+        // It might be better to find a way to integrate this test into the main TimeZone
+        // tests above, but I don't have time to figure out how to do this (or if it's
+        // even really a good idea).  Let's consider that a future.  --rtg 1/27/98
+        SimpleTimeZone tz = new SimpleTimeZone(-5 * millisPerHour, "dstSavingsTest",
+                                               Calendar.MARCH, 1, 0, 0, Calendar.SEPTEMBER, 1, 0, 0,
+                                               (int)(0.5 * millisPerHour));
+
+        if (tz.getRawOffset() != -5 * millisPerHour)
+            errln("Got back a raw offset of " + (tz.getRawOffset() / millisPerHour) +
+                  " hours instead of -5 hours.");
+        if (!tz.useDaylightTime())
+            errln("Test time zone should use DST but claims it doesn't.");
+        if (tz.getDSTSavings() != 0.5 * millisPerHour)
+            errln("Set DST offset to 0.5 hour, but got back " + (tz.getDSTSavings() /
+                                                                 millisPerHour) + " hours instead.");
+
+        int offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.JANUARY, 1,
+                                  Calendar.THURSDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10 AM, 1/1/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.JUNE, 1, Calendar.MONDAY,
+                              10 * millisPerHour);
+        if (offset != -4.5 * millisPerHour)
+            errln("The offset for 10 AM, 6/1/98 should have been -4.5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        tz.setDSTSavings(millisPerHour);
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.JANUARY, 1,
+                              Calendar.THURSDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10 AM, 1/1/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.JUNE, 1, Calendar.MONDAY,
+                              10 * millisPerHour);
+        if (offset != -4 * millisPerHour)
+            errln("The offset for 10 AM, 6/1/98 (with a 1-hour DST offset) should have been -4 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+    }
+
+    /**
+     * Bug 4107570
+     */
+    public void TestAlternateRules() {
+        // Like TestDSTSavings, this test should probably be integrated somehow with the main
+        // test at the top of this class, but I didn't have time to figure out how to do that.
+        //                      --rtg 1/28/98
+
+        SimpleTimeZone tz = new SimpleTimeZone(-5 * millisPerHour, "alternateRuleTest");
+
+        // test the day-of-month API
+        tz.setStartRule(Calendar.MARCH, 10, 12 * millisPerHour);
+        tz.setEndRule(Calendar.OCTOBER, 20, 12 * millisPerHour);
+
+        int offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.MARCH, 5,
+                                  Calendar.THURSDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10AM, 3/5/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.MARCH, 15,
+                              Calendar.SUNDAY, 10 * millisPerHour);
+        if (offset != -4 * millisPerHour)
+            errln("The offset for 10AM, 3/15/98 should have been -4 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.OCTOBER, 15,
+                              Calendar.THURSDAY, 10 * millisPerHour);
+        if (offset != -4 * millisPerHour)
+            errln("The offset for 10AM, 10/15/98 should have been -4 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.OCTOBER, 25,
+                              Calendar.SUNDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10AM, 10/25/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        // test the day-of-week-after-day-in-month API
+        tz.setStartRule(Calendar.MARCH, 10, Calendar.FRIDAY, 12 * millisPerHour, true);
+        tz.setEndRule(Calendar.OCTOBER, 20, Calendar.FRIDAY, 12 * millisPerHour, false);
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.MARCH, 11,
+                              Calendar.WEDNESDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10AM, 3/11/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.MARCH, 14,
+                              Calendar.SATURDAY, 10 * millisPerHour);
+        if (offset != -4 * millisPerHour)
+            errln("The offset for 10AM, 3/14/98 should have been -4 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.OCTOBER, 15,
+                              Calendar.THURSDAY, 10 * millisPerHour);
+        if (offset != -4 * millisPerHour)
+            errln("The offset for 10AM, 10/15/98 should have been -4 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.OCTOBER, 17,
+                              Calendar.SATURDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10AM, 10/17/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+    }
+
+    public void TestEquivalencyGroups() {
+        String id = "America/Los_Angeles";
+        int n = TimeZone.countEquivalentIDs(id);
+        if (n < 2) {
+            errln("FAIL: countEquivalentIDs(" + id + ") returned " + n +
+                  ", expected >= 2");
+        }
+        for (int i=0; i<n; ++i) {
+            String s = TimeZone.getEquivalentID(id, i);
+            if (s.length() == 0) {
+                errln("FAIL: getEquivalentID(" + id + ", " + i +
+                      ") returned \"" + s + "\", expected valid ID");
+            } else {
+                logln("" + i + ":" + s);
+            }
+        }
+    }
+
+    public void TestCountries() {
+        // Make sure America/Los_Angeles is in the "US" group, and
+        // Asia/Tokyo isn't.  Vice versa for the "JP" group.
+
+        String[] s = TimeZone.getAvailableIDs("US");
+        boolean la = false, tokyo = false;
+        String laZone = "America/Los_Angeles", tokyoZone = "Asia/Tokyo";
+
+        for (int i=0; i<s.length; ++i) {
+            if (s[i].equals(laZone)) {
+                la = true;
+            }
+            if (s[i].equals(tokyoZone)) {
+                tokyo = true;
+            }
+        }
+        if (!la || tokyo) {
+            errln("FAIL: " + laZone + " in US = " + la);
+            errln("FAIL: " + tokyoZone + " in US = " + tokyo);
+        }
+
+        s = TimeZone.getAvailableIDs("JP");
+        la = false; tokyo = false;
+
+        for (int i=0; i<s.length; ++i) {
+            if (s[i].equals(laZone)) {
+                la = true;
+            }
+            if (s[i].equals(tokyoZone)) {
+                tokyo = true;
+            }
+        }
+        if (la || !tokyo) {
+            errln("FAIL: " + laZone + " in JP = " + la);
+            errln("FAIL: " + tokyoZone + " in JP = " + tokyo);
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/dev/test/translit/CompoundTransliteratorTest.java b/src/com/ibm/icu/dev/test/translit/CompoundTransliteratorTest.java
new file mode 100755
index 0000000..c44717b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/CompoundTransliteratorTest.java
@@ -0,0 +1,288 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/translit/CompoundTransliteratorTest.java,v $ 
+ * $Date: 2002/02/25 22:43:57 $ 
+ * $Revision: 1.6 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.impl.Utility;
+import java.text.*;
+import java.util.*;
+
+
+/**
+ * @test
+ * @summary General test of CompoundTransliterator
+ */
+public class CompoundTransliteratorTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new CompoundTransliteratorTest().run(args);
+    }
+
+    public void TestConstruction(){
+        logln("Testing the construction of the compound Transliterator");
+        String names[]={"Greek-Latin", "Latin-Devanagari", "Devanagari-Latin", "Latin-Greek"};
+        Transliterator t1=null;
+        Transliterator t2=null;
+        Transliterator t3=null;
+        Transliterator t4=null;
+
+        try {
+            t1=Transliterator.getInstance(names[0]);
+            t2=Transliterator.getInstance(names[1]);
+            t3=Transliterator.getInstance(names[2]);
+            t4=Transliterator.getInstance(names[3]);
+        }catch(IllegalArgumentException ex) {
+            errln("FAIL: Transliterator construction failed");
+            throw ex;
+        }
+  
+        Transliterator[] transarray1={t1};
+        Transliterator[] transarray2={t1, t4};
+        Transliterator[] transarray3={t4, t1, t2};
+        Transliterator[] transarray4={t1, t2, t3, t4};
+
+        Transliterator[][] transarray={transarray1, transarray2, transarray3, transarray4}; 
+        final String IDs[]={
+            names[0], 
+            names[0]+";"+names[3], 
+            names[3]+";"+names[1]+";"+names[2], 
+            names[0]+";"+names[1]+";"+names[2]+";"+names[3] 
+        };
+
+   
+        for(int i=0; i<4; i++){
+            try{
+                CompoundTransliterator cpdtrans=new CompoundTransliterator(IDs[i]);
+                cpdtrans = null;
+            }catch(IllegalArgumentException ex1) {
+                errln("FAIL: construction using CompoundTransliterator(String ID) failed for " + IDs[i]);
+                throw ex1;
+            }
+
+            try{
+                CompoundTransliterator cpdtrans=new CompoundTransliterator(IDs[i], Transliterator.FORWARD);
+                cpdtrans = null;
+            }catch(IllegalArgumentException ex2) {
+                errln("FAIL: construction using CompoundTransliterator(String ID, int direction=FORWARD) failed for " + IDs[i]);
+                throw ex2;
+            }
+
+            try{
+                CompoundTransliterator cpdtrans=new CompoundTransliterator(IDs[i], Transliterator.REVERSE);
+                cpdtrans = null;
+            }catch(IllegalArgumentException ex3) {
+                errln("FAIL: construction using CompoundTransliterator(String ID, int direction=REVERSE) failed for " + IDs[i]);
+                throw ex3;
+            }
+
+            try{
+                CompoundTransliterator cpdtrans=new CompoundTransliterator(IDs[i], Transliterator.FORWARD, null);
+                cpdtrans = null;
+            }catch(IllegalArgumentException ex4) {
+                errln("FAIL: construction using CompoundTransliterator(String ID, int direction=FORWARD," +
+                        "UnicodeFilter adoptedFilter=0) failed for " + IDs[i]);
+                throw ex4;
+            }
+  
+       
+            try{
+                CompoundTransliterator cpdtrans2=new CompoundTransliterator(transarray[i], null);
+                cpdtrans2 = null;
+            }catch(IllegalArgumentException ex5) {
+                errln("FAIL: Construction using CompoundTransliterator(Transliterator transliterators[]," +
+                       "UnicodeFilter adoptedFilter = 0)  failed");
+                throw ex5;
+            }
+
+            
+        }
+   
+    }
+ 
+    public void TestGetTransliterator(){
+        logln("Testing the getTransliterator() API of CompoundTransliterator");
+        String ID="Latin-Greek;Greek-Latin;Latin-Devanagari;Devanagari-Latin;Latin-Cyrillic;Cyrillic-Latin;Any-Hex;Hex-Any";
+        CompoundTransliterator ct1=null;
+        try{
+            ct1=new CompoundTransliterator(ID);
+        }catch(IllegalArgumentException iae) {
+            errln("CompoundTransliterator construction failed for ID=" + ID);
+            throw iae;
+         }
+        int count=ct1.getCount();
+        String array[]=split(ID, ';');
+        if (count != array.length) {
+            errln("Error: getCount() failed. Expected:" + array.length + " got:" + count);
+        }
+        for(int i=0; i < count; i++){
+            String child= ct1.getTransliterator(i).getID();
+            if(!child.equals(array[i])){
+                errln("Error getTransliterator() failed: Expected->" + array[i] + " Got->" + child);
+            }else {
+                logln("OK: getTransliterator() passed: Expected->" + array[i] + " Got->" + child);
+            }
+        }
+
+        
+    }
+ 
+       
+    public void TestTransliterate(){
+        logln("Testing the handleTransliterate() API of CompoundTransliterator");
+        CompoundTransliterator ct1=null;
+        try{
+            ct1=new CompoundTransliterator("Any-Hex;Hex-Any");
+        }catch(IllegalArgumentException iae){
+            errln("FAIL: construction using CompoundTransliterator(String ID) failed for " + "Any-Hex;Hex-Any");
+            throw iae;
+        }
+    
+        String s="abcabc";
+        expect(ct1, s, s);
+        Transliterator.Position index = new Transliterator.Position();
+        ReplaceableString rsource2=new ReplaceableString(s);
+        String expectedResult=s;
+        ct1.transliterate(rsource2, index);
+        ct1.finishTransliteration(rsource2, index);
+        String result=rsource2.toString();
+        expectAux(ct1.getID() + ":ReplaceableString, index(0,0,0,0)", s + "->" + rsource2, result.equals(expectedResult), expectedResult);
+     
+        Transliterator.Position index2 = new Transliterator.Position(1,3,2,3);
+        ReplaceableString rsource3=new ReplaceableString(s);
+        ct1.transliterate(rsource3, index2); 
+        ct1.finishTransliteration(rsource3, index2);
+        result=rsource3.toString();
+        expectAux(ct1.getID() + ":String, index2(1,2,2,3)", s + "->" + rsource3, result.equals(expectedResult), expectedResult);
+
+       
+        String Data[]={
+             //ID, input string, transliterated string
+             "Any-Hex;Hex-Any;Any-Hex",     "hello",  "\\u0068\\u0065\\u006C\\u006C\\u006F", 
+             "Any-Hex;Hex-Any",                 "hello! How are you?",  "hello! How are you?",
+             "Devanagari-Latin;Latin-Devanagari",       "\u092D\u0948'\u0930'\u0935",  "\u092D\u0948\u0930\u0935", // quotes lost
+             "Latin-Cyrillic;Cyrillic-Latin",           "a'b'k'd'e'f'g'h'i'j'Shch'shch'zh'h", "a'b'k'd'e'f'g'h'i'j'Shch'shch'zh'h",
+             "Latin-Greek;Greek-Latin",                 "ABGabgAKLMN", "ABGabgAKLMN",
+             //"Latin-Arabic;Arabic-Latin",               "Ad'r'a'b'i'k'dh'dd'gh", "Adrabikdhddgh",
+             "Hiragana-Katakana",                       "\u3041\u308f\u3099\u306e\u304b\u3092\u3099", 
+                                                                 "\u30A1\u30f7\u30ce\u30ab\u30fa",  
+             "Hiragana-Katakana;Katakana-Hiragana",     "\u3041\u308f\u3099\u306e\u304b\u3051", 
+                                                                 "\u3041\u308f\u3099\u306e\u304b\u3051",
+             "Katakana-Hiragana;Hiragana-Katakana",     "\u30A1\u30f7\u30ce\u30f5\u30f6", 
+                                                                 "\u30A1\u30f7\u30ce\u30ab\u30b1",  
+             "Latin-Katakana;Katakana-Latin",                   "vavivuvevohuzizuzoninunasesuzezu", 
+                                                                 "vavivuvevohuzizuzoninunasesuzezu",  
+        };
+        CompoundTransliterator ct2=null;
+        for(int i=0; i<Data.length; i+=3){
+            try{
+                ct2=new CompoundTransliterator(Data[i+0]);
+            }catch(IllegalArgumentException iae2){
+                errln("FAIL: CompoundTransliterator construction failed for " + Data[i+0]);
+                throw iae2;
+            }
+        expect(ct2, Data[i+1], Data[i+2]);
+        }
+   
+    }
+ 
+
+    //======================================================================
+    // Support methods
+    //======================================================================
+
+     /**
+     * Splits a string,
+    */
+    private static String[] split(String s, char divider) {
+      
+	// see how many there are
+        int count = 1;
+	for (int i = 0; i < s.length(); ++i) {
+	   if (s.charAt(i) == divider) ++count;
+	}
+	    
+	// make an array with them
+	String[] result = new String[count];
+	int last = 0;
+	int current = 0;
+	int i;
+	for (i = 0; i < s.length(); ++i) {
+	    if (s.charAt(i) == divider) {
+	        result[current++] = s.substring(last,i);
+	        last = i+1;
+	    }
+	}
+	result[current++] = s.substring(last,i);
+	return result;
+    }
+
+    private void expect(CompoundTransliterator t, String source, String expectedResult) {
+        String result = t.transliterate(source);
+        expectAux(t.getID() + ":String", source, result, expectedResult);
+
+        ReplaceableString rsource = new ReplaceableString(source);
+        t.transliterate(rsource);
+        result = rsource.toString();
+        expectAux(t.getID() + ":Replaceable", source, result, expectedResult);
+
+        // Test keyboard (incremental) transliteration -- this result
+        // must be the same after we finalize (see below).
+        rsource.replace(0, rsource.length(), "");
+        Transliterator.Position index = new Transliterator.Position();
+        StringBuffer log = new StringBuffer();
+
+        for (int i=0; i<source.length(); ++i) {
+            if (i != 0) {
+                log.append(" + ");
+            }
+            log.append(source.charAt(i)).append(" -> ");
+            t.transliterate(rsource, index,
+                            String.valueOf(source.charAt(i)));
+            // Append the string buffer with a vertical bar '|' where
+            // the committed index is.
+            String s = rsource.toString();
+            log.append(s.substring(0, index.start)).
+                append('|').
+                append(s.substring(index.start));
+        }
+        
+        // As a final step in keyboard transliteration, we must call
+        // transliterate to finish off any pending partial matches that
+        // were waiting for more input.
+        t.finishTransliteration(rsource, index);
+        result = rsource.toString();
+        log.append(" => ").append(rsource.toString());
+        expectAux(t.getID() + ":Keyboard", log.toString(),
+                 result.equals(expectedResult),
+                 expectedResult);
+
+    }
+    private void expectAux(String tag, String source,
+                  String result, String expectedResult) {
+        expectAux(tag, source + " -> " + result,
+                 result.equals(expectedResult),
+                 expectedResult);
+    }
+
+    private void expectAux(String tag, String summary, boolean pass, String expectedResult) {
+        if (pass) {
+            logln("(" + tag + ") " + Utility.escape(summary));
+        } else {
+            errln("FAIL: (" + tag+ ") "
+                + Utility.escape(summary)
+                + ", expected " + Utility.escape(expectedResult));
+        }
+    }  
+}
+
diff --git a/src/com/ibm/icu/dev/test/translit/ErrorTest.java b/src/com/ibm/icu/dev/test/translit/ErrorTest.java
new file mode 100755
index 0000000..877cbfd
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/ErrorTest.java
@@ -0,0 +1,227 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/translit/ErrorTest.java,v $
+ * $Date: 2002/08/13 22:07:58 $
+ * $Revision: 1.5 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.Utility;
+import java.io.*;
+import java.text.ParseException;
+
+/**
+ * @test
+ * @summary Error condition test of Transliterator
+ */
+public class ErrorTest extends TestFmwk {
+    
+    public static void main(String[] args) throws Exception {
+        new ErrorTest().run(args);
+    }
+
+    public void TestTransliteratorErrors() {
+        String trans="Latin-Greek";
+        String bogusID="LATINGREEK-GREEKLATIN";
+        String newID="Bogus-Latin";
+        String newIDRules="zzz > Z; f <> ph";
+        String bogusRules="a } [b-g m-p ";
+        ReplaceableString testString= new ReplaceableString("A quick fox jumped over the lazy dog.");
+        String insertString="cats and dogs";
+        int stoppedAt = 0, len;
+        Transliterator.Position pos = new Transliterator.Position();
+
+        Transliterator t= Transliterator.getInstance(trans, Transliterator.FORWARD);
+        if(t==null){
+            errln("FAIL: construction of Latin-Greek");
+            return;
+        }
+        len = testString.length();
+        stoppedAt = t.transliterate(testString, 0, 100);
+        if (stoppedAt != -1) {
+           errln("FAIL: Out of bounds check failed (1).");
+        } else if (testString.length() != len) {
+           testString= new ReplaceableString("A quick fox jumped over the lazy dog.");        
+           errln("FAIL: Transliterate fails and the target string was modified.");
+        }
+        stoppedAt = t.transliterate(testString, 100, testString.length()-1);
+        if (stoppedAt != -1) {
+            errln("FAIL: Out of bounds check failed (2).");
+        } else if (testString.length() != len) {
+            testString=new ReplaceableString("A quick fox jumped over the lazy dog.");        
+            errln("FAIL: Transliterate fails and the target string was modified.");
+	}
+        pos.start = 100;
+        pos.limit = testString.length();
+        try {
+            t.transliterate(testString, pos);
+            errln("FAIL: Start offset is out of bounds, error not reported.");
+        } catch(IllegalArgumentException e) {
+	    logln("Start offset is out of bounds and detected.");
+        }
+        pos.limit = 100;
+        pos.start = 0;
+
+        try {
+            t.transliterate(testString, pos );
+            errln("FAIL: Limit offset is out of bounds, error not reported.\n");
+        } catch(IllegalArgumentException e) {
+	    logln("Start offset is out of bounds and detected.");
+        }
+        len = pos.contextLimit = testString.length();
+        pos.contextStart = 0;
+        pos.limit = len - 1;
+        pos.start = 5;
+        try {
+            t.transliterate(testString, pos, insertString);
+            if (len == pos.limit) {
+                errln("FAIL: Test insertion with string: the transliteration position limit didn't change as expected.");
+	    }
+        } catch (IllegalArgumentException e) {
+            errln("Insertion test with string failed for some reason.");
+	}
+        pos.contextStart = 0;
+        pos.contextLimit = testString.length();
+        pos.limit = testString.length() -1;
+        pos.start = 5;
+        try {
+            t.transliterate(testString, pos, 0x0061);
+            if (len == pos.limit) {
+                errln("FAIL: Test insertion with character: the transliteration position limit didn't change as expected.");
+	    }
+        } catch (IllegalArgumentException e) {
+            errln("FAIL: Insertion test with UTF-16 code point failed for some reason.");
+	}
+        len = pos.limit = testString.length();
+        pos.contextStart = 0;
+        pos.contextLimit = testString.length() - 1;
+        pos.start = 5;
+        try {
+            t.transliterate(testString, pos, insertString);
+            errln("FAIL: Out of bounds check failed (3).");
+            if (testString.length() != len) {
+                errln("FAIL: The input string was modified though the offsets were out of bounds.");
+	    }
+        } catch (IllegalArgumentException e) {
+            logln("Insertion test with out of bounds indexes.");
+	}
+        Transliterator t1 = null;
+        try {
+            t1= Transliterator.getInstance(bogusID, Transliterator.FORWARD);
+            if(t1!=null) {
+                errln("FAIL: construction of bogus ID \"LATINGREEK-GREEKLATIN\""); 
+	    }
+	} catch (IllegalArgumentException e) { }
+
+        //try { // unneeded - Exception cannot be thrown
+            Transliterator t2 = new RuleBasedTransliterator(newID, newIDRules);
+            try {
+                Transliterator t3 = t2.getInverse();
+                errln("FAIL: The newID transliterator was not registered so createInverse should fail.");
+		} catch (Exception e) { }
+        //} catch (Exception e) { }
+        try {
+            Transliterator t4 = Transliterator.createFromRules(newID, bogusRules, Transliterator.FORWARD);
+            if (t4 != null ) {
+                errln("FAIL: The rules is malformed but error was not reported."); 
+	    }
+	} catch (Exception e) { }
+    }
+
+    public void TestUnicodeSetErrors() {
+        String badPattern="[[:L:]-[0x0300-0x0400]";
+        UnicodeSet set = new UnicodeSet();
+        String result;
+
+        if (!set.isEmpty()) {
+            errln("FAIL: The default ctor of UnicodeSet created a non-empty object.");
+        }
+        try {
+            set.applyPattern(badPattern);
+            errln("FAIL: Applied a bad pattern to the UnicodeSet object okay.");
+        } catch (IllegalArgumentException e) {
+            logln("Test applying with the bad pattern.");
+	}
+        try {
+            UnicodeSet set1 = new UnicodeSet(badPattern);
+            errln("FAIL: Created a UnicodeSet based on bad patterns.");
+	} catch (IllegalArgumentException e) {
+            logln("Test constructing with the bad pattern.");
+	}
+    }
+
+    public void TestUniToHexErrors() {
+        Transliterator t = null;
+        try {
+            t = new UnicodeToHexTransliterator("", true, null);
+            if (t != null) {    
+                errln("FAIL: Created a UnicodeToHexTransliterator with an empty pattern.");
+	    }
+	} catch (IllegalArgumentException e) { }
+        try {
+            t = new UnicodeToHexTransliterator("\\x", true, null);
+	    if (t != null) {
+                errln("FAIL: Created a UnicodeToHexTransliterator with a bad pattern.");
+	    }
+	} catch (IllegalArgumentException e) { }
+        t = new UnicodeToHexTransliterator();
+        try {
+            ((UnicodeToHexTransliterator)t).applyPattern("\\x");
+            errln("FAIL: UnicodeToHexTransliterator::applyPattern succeeded with a bad pattern.");
+        } catch (Exception e) { }
+    }
+
+    public void TestRBTErrors() {
+
+        String rules="ab>y";
+        String id="MyRandom-YReverse";
+        String goodPattern="[[:L:]&[\\u0000-\\uFFFF]]"; /* all BMP letters */
+        UnicodeSet set = null;
+        try {
+            set = new UnicodeSet(goodPattern);
+            try {
+                RuleBasedTransliterator t = new RuleBasedTransliterator(id, rules, Transliterator.REVERSE, set);
+                Transliterator.registerClass(id, t.getClass(), null);
+                Transliterator.unregister(id);  
+                try {
+                    Transliterator t1= Transliterator.getInstance(id, Transliterator.REVERSE);
+                    errln("FAIL: construction of unregistered ID should have failed.");
+	        } catch (IllegalArgumentException e) { }
+            } catch (IllegalArgumentException e) {
+                  errln("FAIL: Was not able to create a good RBT to test registration.");
+	    }
+        } catch (IllegalArgumentException e) {
+            errln("FAIL: Was not able to create a good UnicodeSet based on valid patterns.");
+            return;
+	}
+    }
+
+    public void TestHexToUniErrors() {
+        Transliterator t = null;
+        //try { // unneeded - exception cannot be thrown
+            t = new HexToUnicodeTransliterator("", null);
+        //} catch (Exception e) {
+        //    errln("FAIL: Could not create a HexToUnicodeTransliterator with an empty pattern.");
+        //}
+        try {
+            t = new HexToUnicodeTransliterator("\\x", null);
+            errln("FAIL: Created a HexToUnicodeTransliterator with a bad pattern.");
+	} catch (IllegalArgumentException e) { }
+
+        t = new HexToUnicodeTransliterator();
+        try {
+            ((HexToUnicodeTransliterator)t).applyPattern("\\x");
+            errln("FAIL: HexToUnicodeTransliterator::applyPattern succeeded with a bad pattern.");
+	} catch (IllegalArgumentException e) { }
+    }
+}
+
+
diff --git a/src/com/ibm/icu/dev/test/translit/HexToUnicodeTransliteratorTest.java b/src/com/ibm/icu/dev/test/translit/HexToUnicodeTransliteratorTest.java
new file mode 100755
index 0000000..cae8ddb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/HexToUnicodeTransliteratorTest.java
@@ -0,0 +1,262 @@
+
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/translit/Attic/HexToUnicodeTransliteratorTest.java,v $ 
+ * $Date: 2002/02/25 22:43:57 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.impl.Utility;
+import java.text.*;
+import java.util.*;
+
+
+/**
+ * @test
+ * @summary General test of HexToUnicodeTransliterator
+ */
+public class HexToUnicodeTransliteratorTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new HexToUnicodeTransliteratorTest().run(args);
+    }
+
+    /**
+    * Used by TestConstruction() and TestTransliterate.
+    */
+    UnicodeFilter HexFilter=new UnicodeFilter() {
+        public boolean contains(int c) {
+            if(c == 0x0061 || c == 0x0063 )
+                return false;
+            else
+                return true;
+       }
+    };
+
+    public void TestConstruction(){
+        logln("Testing the construction HexToUnicodeTransliterator()");
+        HexToUnicodeTransliterator trans1=new HexToUnicodeTransliterator();
+       
+
+        logln("Testing the cosntruction HexToUnicodeTransliterator(pattern)");
+        String pattern="\\\\U+0000abc";
+        try{
+            trans1=new HexToUnicodeTransliterator(pattern);
+        }catch(IllegalArgumentException ex2) {
+            errln("FAIL: HexToUnicodeTransliterator construction failed with pattern=" + pattern + " Exception= " + ex2.toString());
+        }
+
+        logln("Testing the cosntruction HexToUnicodeTransliterator(pattern) with illegal pattern");
+        String pattern2="\\X+";
+        try{
+            trans1=new HexToUnicodeTransliterator(pattern2);
+        }catch(IllegalArgumentException ex3) {
+            logln("OK: construction with Illegal pattern handled correctly");
+        }  
+        
+        logln("Testing the construction HexToUnicodeTransliterator(pattern, adoptedFilter=null)");
+        try{
+            trans1=new HexToUnicodeTransliterator(pattern, null);
+        }catch(IllegalArgumentException ex4) {
+            errln("FAIL: HexToUnicodeTransliterator(pattern, adoptedFilter=null) construction failed. Exception= " + ex4.toString());
+        }
+
+        logln("Testing the construction HexToUnicodeTransliterator(pattern, adoptedFilter)");
+        try{
+            trans1=new HexToUnicodeTransliterator(pattern, HexFilter);
+        }catch(IllegalArgumentException ex4) {
+            errln("FAIL: HexToUnicodeTransliterator(pattern, adoptedFilter) construction failed. Exception= " + ex4.toString());
+        }
+
+    }
+    public void TestPattern(){
+        logln("Testing the applyPattern() and toPattern() API of HexToUnicodeTransliterator");
+        /*default transliterator has pattern \\u0000*/
+        HexToUnicodeTransliterator transdefault=new HexToUnicodeTransliterator();
+                
+        String defaultpattern=transdefault.toPattern();
+        String pattern1="\\\\U+0000";
+        
+        HexToUnicodeTransliterator trans1=null;
+        try{
+            trans1=new HexToUnicodeTransliterator(pattern1, null);
+        }catch(IllegalArgumentException ex1) {
+            errln("FAIL: HexToUnicodeTransliterator construction failed with pattern =" + pattern1 +
+                   "Exception:" + ex1.toString());
+        }
+
+        /*test toPattern() */
+        if(transdefault.toPattern().equals(trans1.toPattern()) == true ||
+            transdefault.toPattern().equals("\\\\u0000;\\\\U0000;u+0000;U+0000") != true ||
+            trans1.toPattern().equals(pattern1) != true ){
+            errln("Error: toPattern() failed");
+        }
+
+        /*apply patterns for transdefault*/
+        String str="abKf";
+        expectPattern(transdefault,  pattern1, "\\U+0061\\U+0062\\U+004B\\U+0066", str);
+        expectPattern(transdefault,  "\\U##00,", "U61,U62,U4B,U66,", str);
+        expectPattern(transdefault, defaultpattern, "\\u0061\\u0062\\u004B\\u0066", str);
+        expectPattern(trans1, "\\uni0000", "uni0061uni0062uni004Buni0066", str);
+        expectPattern(trans1, "\\\\S-0000-E", "\\S-0061-E\\S-0062-E\\S-004B-E\\S-0066-E", str);
+        
+        expectPattern(trans1, "\\\\S-0000-E", "\\S-0061-E\\S-0062-E\\S-004B-E\\S-0066-E",  str);
+        expectPattern(trans1, "\\u##0000", "\\u##0061\\u##0062", "FAIL");
+        expectPattern(trans1, "\\*0000",  "*0061*0062*004B*0066",  str); 
+        expectPattern(trans1, "\\u####", "\\u##0061\\u##0062", "FAIL");
+  
+
+    }
+
+    public void TestSimpleTransliterate(){ 
+        String pattern1="\\\\U+0000";
+        HexToUnicodeTransliterator trans1=null;
+        try{
+            trans1=new HexToUnicodeTransliterator(pattern1, null);
+        }catch(IllegalArgumentException iae){
+            errln("HexToUnicodeTransliterator(pattern1, null) construction failed with pattern =" 
+                  + pattern1 + "Exception:" + iae.toString());
+        }
+        String source="He\\U+006C\\U+006C\\U+006F";
+        String expected="Hello";
+
+        expectTranslit(trans1, ":Replaceable ", source,  1, source.length(), 2, expected); 
+        expect(trans1, "", "\\U+0048\\U+0065\\U+006C\\U+006C\\U+006F", expected);
+
+        HexToUnicodeTransliterator transdefault=new HexToUnicodeTransliterator();
+        
+        HexToUnicodeTransliterator trans2=null;
+        try{
+            trans2=new HexToUnicodeTransliterator(transdefault.toPattern(), HexFilter);
+        }catch(IllegalArgumentException ex2){
+            errln("HexToUnicodeTransliterator(pattern1, HexFilter) construction failed with pattern =" 
+                  + pattern1 + "Exception:" + ex2.toString());
+        }
+        expect(trans2, "with Filter(0x0061, 0x0063) ", "\u0061\u0062\u0063",   "\u0061b\u0063");
+    }
+   
+    public void TestTransliterate(){
+        String Data[]={
+            //pattern, source, index.contextStart, index.contextLimit, index.start, expectedResult,
+       //     "U+##00",    "abU+63", "1", "7", "2",  "abc", 
+            "\\\\u0000", "a\\u0062c", "1", "7", "1",  "abc", 
+            "Uni0000",   "abUni0063", "1", "9", "2",  "abc", 
+            "U[0000]",   "heU[006C]U[006C]o", "0", "16", "2", "hello", 
+       //     "prefix-0000-suffix", "aprefix-0062-suffixprefix-0063-suffix", "1", "39", "1", "abc", 
+            "*##00*",    "hell*6F**74**68**65*re",  "1", "20", "4", "hellothere", 
+
+        };
+        HexToUnicodeTransliterator trans1=null;
+        for(int i=0; i<Data.length; i+=6){
+            try{
+                trans1=new HexToUnicodeTransliterator(Data[i+0], null);
+            }catch(IllegalArgumentException ex1){
+                errln("HexToUnicodeTransliterator(pattern1, null) construction failed with pattern =" 
+                     + Data[i+0] + "Exception:" + ex1.toString());
+            }
+            expectTranslit(trans1, "", Data[i+1], Integer.parseInt(Data[i+2]), 
+                       Integer.parseInt(Data[i+3]), Integer.parseInt(Data[i+4]), Data[i+5] );
+            expect(trans1, "", Data[i+1], Data[i+5]);
+        }
+    }
+        
+    //======================================================================
+    // Support methods
+    //======================================================================
+
+    private void expectTranslit(HexToUnicodeTransliterator t,
+                                   String message, String source, 
+                                   int start, int limit, int cursor,  
+                                   String expectedResult){
+    
+
+        ReplaceableString rsource = new ReplaceableString(source);
+        Transliterator.Position index = new Transliterator.Position(start, limit, cursor, limit);
+        t.transliterate(rsource, index);
+        t.finishTransliteration(rsource, index);
+        String result=rsource.toString();
+        expectAux(t.getID() + ":keyboard " + message, source + "->" + result, result.equals(expectedResult), expectedResult);
+    }
+    private void expectPattern(HexToUnicodeTransliterator t,
+                                 String pattern, String source, String expectedResult){
+
+        try{
+            t.applyPattern(pattern);
+        }catch(IllegalArgumentException iae){
+            if(expectedResult.equals("FAIL")){
+                logln("OK: calling applyPattern() with illegal pattern failed as expected." + iae.toString());
+            } else{
+                errln("FAIL: applyPattern() failed with pattern =" + pattern + "--->" + iae.toString());
+            }
+        }
+        if(!expectedResult.equals("FAIL")){
+            if(!t.toPattern().equals(pattern)) {
+                errln("FAIL: applyPattern or toPatten failed.  Expected: " + pattern + "Got: " + t.toPattern());
+            }else{
+                logln("OK: applyPattern passed. Testing transliteration");
+                expect(t, " with pattern "+pattern, source, expectedResult);
+            }
+        }
+    }
+    private void expect(HexToUnicodeTransliterator t,  String message, String source, String expectedResult) {
+    
+        String result=t.transliterate(source);
+        expectAux(t.getID() + ":String " + message, source + "->" + result, result.equals(expectedResult), expectedResult);
+
+        ReplaceableString rsource = new ReplaceableString(source);
+        t.transliterate(rsource);
+        result = rsource.toString();
+        expectAux(t.getID() + ":Replaceable" + message, source + "->" + result, result.equals(expectedResult), expectedResult);
+
+        // Test keyboard (incremental) transliteration -- this result
+        // must be the same after we finalize (see below).
+        rsource.replace(0, rsource.length(), "");
+        Transliterator.Position index = new Transliterator.Position();
+        StringBuffer log = new StringBuffer();
+
+        for (int i=0; i<source.length(); ++i) {
+            if (i != 0) {
+                log.append(" + ");
+            }
+            log.append(source.charAt(i)).append(" -> ");
+            t.transliterate(rsource, index,
+                            String.valueOf(source.charAt(i)));
+            // Append the string buffer with a vertical bar '|' where
+            // the committed index is.
+            String s = rsource.toString();
+            log.append(s.substring(0, index.start)).
+                append('|').
+                append(s.substring(index.start));
+        }
+        
+        // As a final step in keyboard transliteration, we must call
+        // transliterate to finish off any pending partial matches that
+        // were waiting for more input.
+        t.finishTransliteration(rsource, index);
+        result = rsource.toString();
+        log.append(" => ").append(rsource.toString());
+        expectAux(t.getID() + ":Keyboard", log.toString() + "\n" + source + " -> " + result, result.equals(expectedResult), expectedResult);
+
+    }
+    private void expectAux(String tag, String summary, boolean pass,  String expectedResult) {
+        if (pass) {
+            logln("(" + tag + ") " + Utility.escape(summary));
+        } else {
+            errln("FAIL: (" + tag+ ") "
+                + Utility.escape(summary)
+                + ", expected " + Utility.escape(expectedResult));
+        }
+    }  
+}
+
+
+
diff --git a/src/com/ibm/icu/dev/test/translit/JamoTest.java b/src/com/ibm/icu/dev/test/translit/JamoTest.java
new file mode 100755
index 0000000..c3f36a2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/JamoTest.java
@@ -0,0 +1,494 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/translit/JamoTest.java,v $
+ * $Date: 2002/08/13 22:07:58 $
+ * $Revision: 1.14 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.impl.Utility;
+import java.text.*;
+import java.util.*;
+
+/**
+ * @test
+ * @summary Test the Latin-Jamo transliterator
+ */
+public class JamoTest extends TransliteratorTest {
+
+    private static final char SEP = '\'';
+
+    public static void main(String[] args) throws Exception {
+        new JamoTest().run(args);
+    }
+
+    public void TestJamo() {
+        Transliterator latinJamo = Transliterator.getInstance("Latin-Jamo");
+        Transliterator jamoLatin = latinJamo.getInverse();
+
+        String[] CASE = {
+            // Column 1 is the latin text L1 to be fed to Latin-Jamo
+            // to yield output J.
+
+            // Column 2 is expected value of J.  J is fed to
+            // Jamo-Latin to yield output L2.
+
+            // Column 3 is expected value of L2.  If the expected
+            // value of L2 is L1, then L2 is null.
+            "bab", "(Bi)(A)(Bf)", null,
+            "babb", "(Bi)(A)(Bf)(Bi)(EU)", "bab"+SEP+"beu",
+            "babbba", "(Bi)(A)(Bf)(BB)(A)", null,
+            "bagg", "(Bi)(A)(GGf)", null,
+            "baggga", "(Bi)(A)(GGf)(Gi)(A)", null,
+            "bag"+SEP+"gga", "(Bi)(A)(Gf)(GGi)(A)", null,
+            "kabsa", "(Ki)(A)(Bf)(Si)(A)", null,
+            "kabska", "(Ki)(A)(BS)(Ki)(A)", null,
+            "gabsbka", "(Gi)(A)(BS)(Bi)(EU)(Ki)(A)", "gabsbeuka", // not (Kf)
+            "gga", "(GGi)(A)", null,
+            "bsa", "(Bi)(EU)(Si)(A)", "beusa",
+            "agg", "(IEUNG)(A)(GGf)", null,
+            "agga", "(IEUNG)(A)(GGi)(A)", null,
+            "la", "(R)(A)", "ra",
+            "bs", "(Bi)(EU)(Sf)", "beus",
+            "kalgga", "(Ki)(A)(L)(GGi)(A)", null,
+
+            // 'r' in a final position is treated like 'l'
+            "karka", "(Ki)(A)(L)(Ki)(A)", "kalka",
+        };
+
+        for (int i=0; i<CASE.length; i+=3) {
+            String jamo = nameToJamo(CASE[i+1]);
+            if (CASE[i+2] == null) {
+                expect(latinJamo, CASE[i], jamo, jamoLatin);
+            } else {
+                // Handle case where round-trip is expected to fail
+                expect(latinJamo, CASE[i], jamo);
+                expect(jamoLatin, jamo, CASE[i+2]);
+            }
+        }
+    }
+
+    /**
+     * These are problems turned up by the Hangul-Jamo;Jamo-Latin
+     * round trip test.
+     */
+    public void TestRoundTrip() {
+        String HANGUL[] = { "\uAC03\uC2F8",
+                            "\uC544\uC5B4"};
+        
+        Transliterator latinJamo = Transliterator.getInstance("Latin-Jamo");
+        Transliterator jamoLatin = latinJamo.getInverse();
+        Transliterator jamoHangul = Transliterator.getInstance("NFC");
+        Transliterator hangulJamo = Transliterator.getInstance("NFD");
+
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<HANGUL.length; ++i) {
+            String hangul = HANGUL[i];
+            String jamo = hangulJamo.transliterate(hangul);
+            String latin = jamoLatin.transliterate(jamo);
+            String jamo2 = latinJamo.transliterate(latin);
+            String hangul2 = jamoHangul.transliterate(jamo2);
+            buf.setLength(0);
+            buf.append(hangul + " => " +
+                       jamoToName(jamo) + " => " +
+                       latin + " => " + jamoToName(jamo2)
+                       + " => " + hangul2
+                       );
+            if (!hangul.equals(hangul2)) {
+                errln("FAIL: " + Utility.escape(buf.toString()));
+            } else {
+                logln(Utility.escape(buf.toString()));
+            }
+        }
+    }
+
+    /**
+     * Test various step-at-a-time transformation of hangul to jamo to
+     * latin and back.
+     */
+    public void TestPiecemeal() {
+        String hangul = "\uBC0F";
+        String jamo = nameToJamo("(Mi)(I)(Cf)");
+        String latin = "mic";
+
+        Transliterator t = null;
+
+        t = Transliterator.getInstance("NFD"); // was Hangul-Jamo
+        expect(t, hangul, jamo);
+
+        t = Transliterator.getInstance("NFC"); // was Jamo-Hangul
+        expect(t, jamo, hangul);
+
+        t = Transliterator.getInstance("Latin-Jamo");
+        expect(t, latin, jamo);
+
+        t = Transliterator.getInstance("Jamo-Latin");
+        expect(t, jamo, latin);
+
+        t = Transliterator.getInstance("Hangul-Latin");
+        expect(t, hangul, latin);
+
+        t = Transliterator.getInstance("Latin-Hangul");
+        expect(t, latin, hangul);
+
+        t = Transliterator.getInstance("Hangul-Latin; Latin-Jamo");
+        expect(t, hangul, jamo);
+
+        t = Transliterator.getInstance("Jamo-Latin; Latin-Hangul");
+        expect(t, jamo, hangul);
+
+        t = Transliterator.getInstance("Hangul-Latin; Latin-Hangul");
+        expect(t, hangul, hangul);
+    }
+
+    public void TestRealText() {
+        Transliterator latinJamo = Transliterator.getInstance("Latin-Jamo");
+        Transliterator jamoLatin = latinJamo.getInverse();
+        Transliterator jamoHangul = Transliterator.getInstance("NFC");
+        Transliterator hangulJamo = Transliterator.getInstance("NFD");
+        Transliterator rt = new CompoundTransliterator(new Transliterator[] {
+            hangulJamo, jamoLatin, latinJamo, jamoHangul });
+
+        int pos = 0;
+        StringBuffer buf = new StringBuffer();
+        int total = 0;
+        int errors = 0;
+        while (pos < WHAT_IS_UNICODE.length()) {
+            int space = WHAT_IS_UNICODE.indexOf(' ', pos+1);
+            if (space < 0) {
+                space = WHAT_IS_UNICODE.length();
+            }
+            if (pos < space) {
+                ++total;
+                String hangul = WHAT_IS_UNICODE.substring(pos, space);
+                String hangulX = rt.transliterate(hangul);
+                if (!hangul.equals(hangulX)) {
+                    ++errors;
+                    String jamo = hangulJamo.transliterate(hangul);
+                    String latin = jamoLatin.transliterate(jamo);
+                    String jamo2 = latinJamo.transliterate(latin);
+                    String hangul2 = jamoHangul.transliterate(jamo2);
+                    if (hangul.equals(hangul2)) {
+                        buf.setLength(0);
+                        buf.append("FAIL (Compound transliterator problem): ");
+                        buf.append(hangul + " => " +
+                                   jamoToName(jamo) + " => " +
+                                   latin + " => " + jamoToName(jamo2)
+                                   + " => " + hangul2 +
+                                   "; but " + hangul + " =cpd=> " + jamoToName(hangulX)
+                                   );
+                        errln(Utility.escape(buf.toString()));                        
+                    } else if (jamo.equals(jamo2)) {
+                        buf.setLength(0);
+                        buf.append("FAIL (Jamo<>Hangul problem): ");
+                        if (!hangul2.equals(hangulX)) {
+                            buf.append("(Weird: " + hangulX + " != " + hangul2 + ")");
+                        }
+                        buf.append(hangul + " => " +
+                                   jamoToName(jamo) + " => " +
+                                   latin + " => " + jamoToName(jamo2)
+                                   + " => " + hangul2
+                                   );
+                        errln(Utility.escape(buf.toString()));                        
+                    } else {
+                        buf.setLength(0);
+                        buf.append("FAIL: ");
+                        if (!hangul2.equals(hangulX)) {
+                            buf.append("(Weird: " + hangulX + " != " + hangul2 + ")");
+                        }
+                        // The Hangul-Jamo conversion is not usually the
+                        // bug here, so we hide it from display.
+                        // Uncomment lines to see the Hangul.
+                        buf.append(//hangul + " => " +
+                                   jamoToName(jamo) + " => " +
+                                   latin + " => " + jamoToName(jamo2)
+                                   //+ " => " + hangul2
+                                   );
+                        errln(Utility.escape(buf.toString()));
+                    }
+                }
+            }
+            pos = space+1;
+        }
+        if (errors != 0) {
+            errln("Test word failures: " + errors + " out of " + total);
+        } else {
+            logln("All " + total + " test words passed");
+        }
+    }
+
+    // Test text taken from the Unicode web site
+    static final String WHAT_IS_UNICODE =
+
+        "\uc720\ub2c8\ucf54\ub4dc\uc5d0 \ub300\ud574 ? " +
+
+        "\uc5b4\ub5a4 \ud50c\ub7ab\ud3fc, \uc5b4\ub5a4 " +
+        "\ud504\ub85c\uadf8\ub7a8, \uc5b4\ub5a4 \uc5b8\uc5b4\uc5d0\ub3c4 " +
+        "\uc0c1\uad00\uc5c6\uc774 \uc720\ub2c8\ucf54\ub4dc\ub294 \ubaa8\ub4e0 " +
+        "\ubb38\uc790\uc5d0 \ub300\ud574 \uace0\uc720 \ubc88\ud638\ub97c " +
+        "\uc81c\uacf5\ud569\ub2c8\ub2e4. " +
+        
+        "\uae30\ubcf8\uc801\uc73c\ub85c \ucef4\ud4e8\ud130\ub294 " +
+        "\uc22b\uc790\ub9cc \ucc98\ub9ac\ud569\ub2c8\ub2e4. \uae00\uc790\ub098 " +
+        "\ub2e4\ub978 \ubb38\uc790\uc5d0\ub3c4 \uc22b\uc790\ub97c " +
+        "\uc9c0\uc815\ud558\uc5ec " +
+        "\uc800\uc7a5\ud569\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc\uac00 " +
+        "\uac1c\ubc1c\ub418\uae30 \uc804\uc5d0\ub294 \uc774\ub7ec\ud55c " +
+        "\uc22b\uc790\ub97c \uc9c0\uc815\ud558\uae30 \uc704\ud574 \uc218\ubc31 " +
+        "\uac00\uc9c0\uc758 \ub2e4\ub978 \uae30\ud638\ud654 " +
+        "\uc2dc\uc2a4\ud15c\uc744 " +
+        "\uc0ac\uc6a9\ud588\uc2b5\ub2c8\ub2e4. \ub2e8\uc77c \uae30\ud638\ud654 " +
+        "\ubc29\ubc95\uc73c\ub85c\ub294 \ubaa8\ub4e0 \ubb38\uc790\ub97c " +
+        "\ud3ec\ud568\ud560 \uc218 \uc5c6\uc5c8\uc2b5\ub2c8\ub2e4. \uc608\ub97c " +
+        "\ub4e4\uc5b4 \uc720\ub7fd \uc5f0\ud569\uc5d0\uc11c\ub9cc " +
+        "\ubcf4\ub354\ub77c\ub3c4 \ubaa8\ub4e0 \uac01 \ub098\ub77c\ubcc4 " +
+        "\uc5b8\uc5b4\ub97c \ucc98\ub9ac\ud558\ub824\uba74 \uc5ec\ub7ec " +
+        "\uac1c\uc758 \ub2e4\ub978 \uae30\ud638\ud654 \ubc29\ubc95\uc774 " +
+        "\ud544\uc694\ud569\ub2c8\ub2e4. \uc601\uc5b4\uc640 \uac19\uc740 " +
+        "\ub2e8\uc77c \uc5b8\uc5b4\uc758 \uacbd\uc6b0\ub3c4 " +
+        "\uacf5\ud1b5\uc801\uc73c\ub85c \uc0ac\uc6a9\ub418\ub294 \ubaa8\ub4e0 " +
+        "\uae00\uc790, \ubb38\uc7a5 \ubd80\ud638 \ubc0f " +
+        "\ud14c\ud06c\ub2c8\uceec \uae30\ud638\uc5d0 \ub9de\ub294 \ub2e8\uc77c " +
+        "\uae30\ud638\ud654 \ubc29\ubc95\uc744 \uac16\uace0 \uc788\uc9c0 " +
+        "\ubabb\ud558\uc600\uc2b5\ub2c8\ub2e4. " +
+        
+        "\uc774\ub7ec\ud55c \uae30\ud638\ud654 \uc2dc\uc2a4\ud15c\uc740 " +
+        "\ub610\ud55c \ub2e4\ub978 \uae30\ud638\ud654 \uc2dc\uc2a4\ud15c\uacfc " +
+        "\ucda9\ub3cc\ud569\ub2c8\ub2e4. \uc989 \ub450 \uac00\uc9c0 " +
+        "\uae30\ud638\ud654 \ubc29\ubc95\uc774 \ub450 \uac1c\uc758 \ub2e4\ub978 " +
+        "\ubb38\uc790\uc5d0 \ub300\ud574 \uac19\uc740 \ubc88\ud638\ub97c " +
+        "\uc0ac\uc6a9\ud558\uac70\ub098 \uac19\uc740 \ubb38\uc790\uc5d0 " +
+        "\ub300\ud574 \ub2e4\ub978 \ubc88\ud638\ub97c \uc0ac\uc6a9\ud560 \uc218 " +
+        "\uc788\uc2b5\ub2c8\ub2e4. \uc8fc\uc5b4\uc9c4 \ubaa8\ub4e0 " +
+        "\ucef4\ud4e8\ud130(\ud2b9\ud788 \uc11c\ubc84)\ub294 \uc11c\ub85c " +
+        "\ub2e4\ub978 \uc5ec\ub7ec \uac00\uc9c0 \uae30\ud638\ud654 " +
+        "\ubc29\ubc95\uc744 \uc9c0\uc6d0\ud574\uc57c " +
+        "\ud569\ub2c8\ub2e4. \uadf8\ub7ec\ub098, \ub370\uc774\ud130\ub97c " +
+        "\uc11c\ub85c \ub2e4\ub978 \uae30\ud638\ud654 \ubc29\ubc95\uc774\ub098 " +
+        "\ud50c\ub7ab\ud3fc \uac04\uc5d0 \uc804\ub2ec\ud560 \ub54c\ub9c8\ub2e4 " +
+        "\uadf8 \ub370\uc774\ud130\ub294 \ud56d\uc0c1 \uc190\uc0c1\uc758 " +
+        "\uc704\ud5d8\uc744 \uacaa\uac8c \ub429\ub2c8\ub2e4. " +
+        
+        "\uc720\ub2c8\ucf54\ub4dc\ub85c \ubaa8\ub4e0 \uac83\uc744 " +
+        "\ud574\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4! " +
+        "\uc720\ub2c8\ucf54\ub4dc\ub294 \uc0ac\uc6a9 \uc911\uc778 " +
+        "\ud50c\ub7ab\ud3fc, \ud504\ub85c\uadf8\ub7a8, \uc5b8\uc5b4\uc5d0 " +
+        "\uad00\uacc4\uc5c6\uc774 \ubb38\uc790\ub9c8\ub2e4 \uace0\uc720\ud55c " +
+        "\uc22b\uc790\ub97c " +
+        "\uc81c\uacf5\ud569\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc " +
+        "\ud45c\uc900\uc740 " + // "Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, " +
+        // "Sun, Sybase, Unisys " + 
+        "\ubc0f \uae30\ud0c0 \uc5ec\ub7ec " +
+        "\ud68c\uc0ac\uc640 \uac19\uc740 \uc5c5\uacc4 " +
+        "\uc120\ub450\uc8fc\uc790\uc5d0 \uc758\ud574 " +
+        "\ucc44\ud0dd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc\ub294 " +
+        // "XML, Java, ECMAScript(JavaScript), LDAP, CORBA 3.0, WML " +
+        "\ub4f1\uacfc " +
+        "\uac19\uc774 \ud604\uc7ac \ub110\ub9ac \uc0ac\uc6a9\ub418\ub294 " +
+        "\ud45c\uc900\uc5d0\uc11c \ud544\uc694\ud558\uba70 \uc774\ub294 " + //ISO/IEC " +
+        "10646\uc744 \uad6c\ud604\ud558\ub294 \uacf5\uc2dd\uc801\uc778 " +
+        "\ubc29\ubc95\uc785\ub2c8\ub2e4. \uc774\ub294 \ub9ce\uc740 \uc6b4\uc601 " +
+        "\uccb4\uc81c, \uc694\uc998 \uc0ac\uc6a9\ub418\ub294 \ubaa8\ub4e0 " +
+        "\ube0c\ub77c\uc6b0\uc800 \ubc0f \uae30\ud0c0 \ub9ce\uc740 " +
+        "\uc81c\ud488\uc5d0\uc11c " +
+        "\uc9c0\uc6d0\ub429\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc " +
+        "\ud45c\uc900\uc758 \ubd80\uc0c1\uacfc \uc774\ub97c " +
+        "\uc9c0\uc6d0\ud558\ub294 \ub3c4\uad6c\uc758 \uac00\uc6a9\uc131\uc740 " +
+        "\ucd5c\uadfc \uc804 \uc138\uacc4\uc5d0 \ubd88\uace0 \uc788\ub294 " +
+        "\uae30\uc220 \uacbd\ud5a5\uc5d0\uc11c \uac00\uc7a5 \uc911\uc694\ud55c " +
+        "\ubd80\ubd84\uc744 \ucc28\uc9c0\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. " +
+        
+        "\uc720\ub2c8\ucf54\ub4dc\ub97c " +
+        "\ud074\ub77c\uc774\uc5b8\ud2b8-\uc11c\ubc84 \ub610\ub294 " +
+        "\ub2e4\uc911-\uc5f0\uacb0 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uacfc " +
+        "\uc6f9 \uc0ac\uc774\ud2b8\uc5d0 \ud1b5\ud569\ud558\uba74 " +
+        "\ub808\uac70\uc2dc \ubb38\uc790 \uc138\ud2b8 \uc0ac\uc6a9\uc5d0 " +
+        "\uc788\uc5b4\uc11c \uc0c1\ub2f9\ud55c \ube44\uc6a9 \uc808\uac10 " +
+        "\ud6a8\uacfc\uac00 " +
+        "\ub098\ud0c0\ub0a9\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc\ub97c " +
+        "\ud1b5\ud574 \ub9ac\uc5d4\uc9c0\ub2c8\uc5b4\ub9c1 \uc5c6\uc774 " +
+        "\ub2e4\uc911 \ud50c\ub7ab\ud3fc, \uc5b8\uc5b4 \ubc0f \uad6d\uac00 " +
+        "\uac04\uc5d0 \ub2e8\uc77c \uc18c\ud504\ud2b8\uc6e8\uc5b4 " +
+        "\ud50c\ub7ab\ud3fc \ub610\ub294 \ub2e8\uc77c \uc6f9 " +
+        "\uc0ac\uc774\ud2b8\ub97c \ubaa9\ud45c\ub85c \uc0bc\uc744 \uc218 " +
+        "\uc788\uc2b5\ub2c8\ub2e4. \uc774\ub97c \uc0ac\uc6a9\ud558\uba74 " +
+        "\ub370\uc774\ud130\ub97c \uc190\uc0c1 \uc5c6\uc774 \uc5ec\ub7ec " +
+        "\uc2dc\uc2a4\ud15c\uc744 \ud1b5\ud574 \uc804\uc1a1\ud560 \uc218 " +
+        "\uc788\uc2b5\ub2c8\ub2e4. " +
+        
+        "\uc720\ub2c8\ucf54\ub4dc \ucf58\uc18c\uc2dc\uc5c4\uc5d0 \ub300\ud574 " +
+        "\uc720\ub2c8\ucf54\ub4dc \ucf58\uc18c\uc2dc\uc5c4\uc740 " +
+        "\ube44\uc601\ub9ac \uc870\uc9c1\uc73c\ub85c\uc11c \ud604\ub300 " +
+        "\uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc81c\ud488\uacfc " +
+        "\ud45c\uc900\uc5d0\uc11c \ud14d\uc2a4\ud2b8\uc758 \ud45c\ud604\uc744 " +
+        "\uc9c0\uc815\ud558\ub294 \uc720\ub2c8\ucf54\ub4dc \ud45c\uc900\uc758 " +
+        "\uc0ac\uc6a9\uc744 \uac1c\ubc1c\ud558\uace0 \ud655\uc7a5\ud558\uba70 " +
+        "\uc7a5\ub824\ud558\uae30 \uc704\ud574 " +
+        "\uc138\uc6cc\uc84c\uc2b5\ub2c8\ub2e4. \ucf58\uc18c\uc2dc\uc5c4 " +
+        "\uba64\ubc84\uc27d\uc740 \ucef4\ud4e8\ud130\uc640 \uc815\ubcf4 " +
+        "\ucc98\ub9ac \uc0b0\uc5c5\uc5d0 \uc885\uc0ac\ud558\uace0 \uc788\ub294 " +
+        "\uad11\ubc94\uc704\ud55c \ud68c\uc0ac \ubc0f \uc870\uc9c1\uc758 " +
+        "\ubc94\uc704\ub97c " +
+        "\ub098\ud0c0\ub0c5\ub2c8\ub2e4. \ucf58\uc18c\uc2dc\uc5c4\uc758 " +
+        "\uc7ac\uc815\uc740 \uc804\uc801\uc73c\ub85c \ud68c\ube44\uc5d0 " +
+        "\uc758\ud574 \ucda9\ub2f9\ub429\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc " +
+        "\ucee8\uc18c\uc2dc\uc5c4\uc5d0\uc11c\uc758 \uba64\ubc84\uc27d\uc740 " +
+        "\uc804 \uc138\uacc4 \uc5b4\ub290 \uacf3\uc5d0\uc11c\ub098 " +
+        "\uc720\ub2c8\ucf54\ub4dc \ud45c\uc900\uc744 \uc9c0\uc6d0\ud558\uace0 " +
+        "\uadf8 \ud655\uc7a5\uacfc \uad6c\ud604\uc744 " +
+        "\uc9c0\uc6d0\ud558\uace0\uc790\ud558\ub294 \uc870\uc9c1\uacfc " +
+        "\uac1c\uc778\uc5d0\uac8c \uac1c\ubc29\ub418\uc5b4 " +
+        "\uc788\uc2b5\ub2c8\ub2e4. " +
+        
+        "\ub354 \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uc6a9\uc5b4\uc9d1, " +
+        "\uc608\uc81c \uc720\ub2c8\ucf54\ub4dc \uc0ac\uc6a9 \uac00\ub2a5 " +
+        "\uc81c\ud488, \uae30\uc220 \uc815\ubcf4 \ubc0f \uae30\ud0c0 " +
+        "\uc720\uc6a9\ud55c \uc815\ubcf4\ub97c " +
+        "\ucc38\uc870\ud558\uc2ed\uc2dc\uc624.";
+
+    // TransliteratorTest override
+    boolean expectAux(String tag, String summary, boolean pass,
+                   String expectedResult) {
+        return super.expectAux(tag, jamoToName(summary),
+                        pass, jamoToName(expectedResult));
+    }
+
+    // UTILITIES
+
+    // Note: The following could more easily be done with a transliterator!
+    static final String[] JAMO_NAMES = {
+        "(Gi)", "\u1100",
+        "(GGi)", "\u1101",
+        "(Ni)", "\u1102",
+        "(Di)", "\u1103",
+        "(DD)", "\u1104",
+        "(R)", "\u1105",
+        "(Mi)", "\u1106",
+        "(Bi)", "\u1107",
+        "(BB)", "\u1108",
+        "(Si)", "\u1109",
+        "(SSi)", "\u110A",
+        "(IEUNG)", "\u110B",
+        "(Ji)", "\u110C",
+        "(JJ)", "\u110D",
+        "(Ci)", "\u110E",
+        "(Ki)", "\u110F",
+        "(Ti)", "\u1110",
+        "(Pi)", "\u1111",
+        "(Hi)", "\u1112",
+        
+        "(A)", "\u1161",
+        "(AE)", "\u1162",
+        "(YA)", "\u1163",
+        "(YAE)", "\u1164",
+        "(EO)", "\u1165",
+        "(E)", "\u1166",
+        "(YEO)", "\u1167",
+        "(YE)", "\u1168",
+        "(O)", "\u1169",
+        "(WA)", "\u116A",
+        "(WAE)", "\u116B",
+        "(OE)", "\u116C",
+        "(YO)", "\u116D",
+        "(U)", "\u116E",
+        "(WEO)", "\u116F",
+        "(WE)", "\u1170",
+        "(WI)", "\u1171",
+        "(YU)", "\u1172",
+        "(EU)", "\u1173",
+        "(YI)", "\u1174",
+        "(I)", "\u1175",
+
+        "(Gf)", "\u11A8",
+        "(GGf)", "\u11A9",
+        "(GS)", "\u11AA",
+        "(Nf)", "\u11AB",
+        "(NJ)", "\u11AC",
+        "(NH)", "\u11AD",
+        "(Df)", "\u11AE",
+        "(L)", "\u11AF",
+        "(LG)", "\u11B0",
+        "(LM)", "\u11B1",
+        "(LB)", "\u11B2",
+        "(LS)", "\u11B3",
+        "(LT)", "\u11B4",
+        "(LP)", "\u11B5",
+        "(LH)", "\u11B6",
+        "(Mf)", "\u11B7",
+        "(Bf)", "\u11B8",
+        "(BS)", "\u11B9",
+        "(Sf)", "\u11BA",
+        "(SSf)", "\u11BB",
+        "(NG)", "\u11BC",
+        "(Jf)", "\u11BD",
+        "(Cf)", "\u11BE",
+        "(Kf)", "\u11BF",
+        "(Tf)", "\u11C0",
+        "(Pf)", "\u11C1",
+        "(Hf)", "\u11C2",
+    };
+
+    static Hashtable JAMO_TO_NAME;
+    static Hashtable NAME_TO_JAMO;
+
+    static {
+        JAMO_TO_NAME = new Hashtable();
+        NAME_TO_JAMO = new Hashtable();
+        for (int i=0; i<JAMO_NAMES.length; i+=2) {
+            JAMO_TO_NAME.put(JAMO_NAMES[i+1], JAMO_NAMES[i]);
+            NAME_TO_JAMO.put(JAMO_NAMES[i], JAMO_NAMES[i+1]);
+        }
+    }
+
+    /**
+     * Convert short names to actual jamo.  E.g., "x(LG)y" returns
+     * "x\u11B0y".  See JAMO_NAMES for table of names.
+     */
+    static String nameToJamo(String input) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<input.length(); ++i) {
+            char c = input.charAt(i);
+            if (c == '(') {
+                int j = input.indexOf(')', i+1);
+                if ((j-i) >= 2 && (j-i) <= 6) { // "(A)", "(IEUNG)"
+                    String jamo = (String) NAME_TO_JAMO.get(input.substring(i, j+1));
+                    if (jamo != null) {
+                        buf.append(jamo);
+                        i = j;
+                        continue;
+                    }
+                }
+            }
+            buf.append(c);
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Convert jamo to short names.  E.g., "x\u11B0y" returns
+     * "x(LG)y".  See JAMO_NAMES for table of names.
+     */
+    static String jamoToName(String input) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<input.length(); ++i) {
+            char c = input.charAt(i);
+            if (c >= 0x1100 && c <= 0x11C2) {
+                String name = (String) JAMO_TO_NAME.get(input.substring(i, i+1));
+                if (name != null) {
+                    buf.append(name);
+                    continue;
+                }
+            }
+            buf.append(c);
+        }
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/translit/ReplaceableTest.java b/src/com/ibm/icu/dev/test/translit/ReplaceableTest.java
new file mode 100755
index 0000000..aef12e4
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/ReplaceableTest.java
@@ -0,0 +1,166 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/translit/ReplaceableTest.java,v $
+ * $Date: 2002/08/13 22:07:58 $
+ * $Revision: 1.11 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.Utility;
+import java.io.*;
+import java.util.BitSet;
+import java.util.HashMap;
+import java.text.ParseException;
+
+/**
+ * @test
+ * @summary Round trip test of Transliterator
+ */
+public class ReplaceableTest extends TestFmwk {
+	
+	public static final boolean LATER_THAN_2_1 = false;
+	
+    public static void main(String[] args) throws Exception {
+        new ReplaceableTest().run(args);
+    }
+  
+    public void Test() throws IOException, ParseException {
+        check("Lower", "ABCD", "1234");
+        check("Upper", "abcd\u00DF", "123455"); // must map 00DF to SS
+        check("Title", "aBCD", "1234");
+        check("NFC", "A\u0300E\u0300", "13");
+        check("NFD", "\u00C0\u00C8", "1122");
+        if (!LATER_THAN_2_1) return;
+        check("*(x) > A $1 B", "wxy", "11223");
+        check("*(x)(y) > A $2 B $1 C $2 D", "wxyz", "113322334");
+        check("*(x)(y)(z) > A $3 B $2 C $1 D", "wxyzu", "114433225");
+    }
+    
+    void check(String transliteratorName, String test, String shouldProduceStyles) {
+        TestReplaceable tr = new TestReplaceable(test, null);
+        String original = tr.toString();
+        
+        Transliterator t;
+        if (transliteratorName.startsWith("*")) {
+        	transliteratorName = transliteratorName.substring(1);
+        	t = new RuleBasedTransliterator("test", transliteratorName);
+        } else {
+        	t = Transliterator.getInstance(transliteratorName);
+        }
+        t.transliterate(tr);
+        String newStyles = tr.getStyles();
+        if (!newStyles.equals(shouldProduceStyles)) {
+            errln("FAIL Styles: " + transliteratorName + " ( "
+                + original + " ) => " + tr.toString() + "; should be {" + shouldProduceStyles + "}!");
+        } else {
+            logln("OK: " + transliteratorName + " ( " + original + " ) => " + tr.toString());
+        }
+    }
+    
+
+    /**
+     * This is a test class that simulates styled text.
+     * It associates a style number (0..65536) with each character,
+     * and maintains that style in the normal fashion:
+     * When setting text from raw string or characters,<br>
+     * Set the styles to the style of the first character replaced.<br>
+     * If no characters are replaced, use the style of the previous character.<br>
+     * If at start, use the following character<br>
+     * Otherwise use defaultStyle.
+     */
+    static class TestReplaceable implements Replaceable {
+        ReplaceableString chars;
+        ReplaceableString styles;
+        
+        char defaultStyle = '_';
+        
+        TestReplaceable (String text, String styles) {
+            chars = new ReplaceableString(text);
+            StringBuffer s = new StringBuffer();
+            for (int i = 0; i < text.length(); ++i) {
+                if (styles != null && i < styles.length()) {
+                    s.append(styles.charAt(i));
+                } else {
+                    s.append((char) (i + '1'));
+                }
+            }
+            this.styles = new ReplaceableString(s.toString());
+        }
+        
+        public String getStyles() {
+            return styles.toString();
+        }
+        
+        public String toString() {
+            return chars.toString() + "{" + styles.toString() + "}";
+        }
+
+        public String substring(int start, int limit) {
+            return chars.substring(start, limit);
+        }
+
+        public int length() {
+            return chars.length();
+        }
+
+        public char charAt(int offset) {
+            return chars.charAt(offset);
+        }
+
+        public int char32At(int offset) {
+            return chars.char32At(offset);
+        }
+
+        public void getChars(int srcStart, int srcLimit, char dst[], int dstStart) {
+            chars.getChars(srcStart, srcLimit, dst, dstStart);
+        }
+
+        public void replace(int start, int limit, String text) {
+            if (substring(start,limit).equals(text)) return; // NO ACTION!
+            chars.replace(start, limit, text);
+            fixStyles(start, limit, text.length());
+        }
+        
+        public void replace(int start, int limit, char[] chars,
+                            int charsStart, int charsLen) {
+            if (substring(start,limit).equals(new String(chars, charsStart, charsLen-charsStart))) return; // NO ACTION!
+            this.chars.replace(start, limit, chars, charsStart, charsLen);
+            fixStyles(start, limit, charsLen-charsStart);
+        }
+
+        void fixStyles(int start, int limit, int newLen) {
+            char newStyle = defaultStyle;
+            if (start != limit) {
+                newStyle = styles.charAt(start);
+            } else if (start > 0) {
+                newStyle = styles.charAt(start-1);
+            } else if (limit < styles.length() - 1) {
+                newStyle = styles.charAt(limit+1);
+            }
+            // dumb implementation for now.
+            StringBuffer s = new StringBuffer();
+            for (int i = 0; i < newLen; ++i) {
+                s.append(newStyle);
+            }
+            styles.replace(start, limit, s.toString());
+        }
+
+        public void copy(int start, int limit, int dest) {
+            chars.copy(start, limit, dest);
+            styles.copy(start, limit, dest);
+        }
+        
+        public boolean hasMetaData() {
+        	return true;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/translit/RoundTripTest.java b/src/com/ibm/icu/dev/test/translit/RoundTripTest.java
new file mode 100755
index 0000000..2aa9e63
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/RoundTripTest.java
@@ -0,0 +1,1375 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/translit/RoundTripTest.java,v $
+ * $Date: 2002/08/13 22:07:57 $
+ * $Revision: 1.47 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.Utility;
+import java.io.*;
+import java.text.ParseException;
+import java.util.Locale;
+
+/**
+ * @test
+ * @summary Round trip test of Transliterator
+ */
+public class RoundTripTest extends TestFmwk {
+    
+    static final boolean EXTRA_TESTS = true;
+    static final boolean PRINT_RULES = true;
+    
+    public static void main(String[] args) throws Exception {
+        new RoundTripTest().run(args);
+    }
+    /*
+    public void TestSingle() throws IOException, ParseException {
+        Transliterator t = Transliterator.getInstance("Latin-Greek");
+        String s = t.transliterate("\u0101\u0069");
+    }
+    */
+    
+    /*
+    Note: Unicode 3.2 added new Hiragana/Katakana characters:
+    
+3095..3096    ; 3.2 #   [2] HIRAGANA LETTER SMALL KA..HIRAGANA LETTER SMALL KE
+309F..30A0    ; 3.2 #   [2] HIRAGANA DIGRAPH YORI..KATAKANA-HIRAGANA DOUBLE HYPHEN
+30FF          ; 3.2 #       KATAKANA DIGRAPH KOTO
+31F0..31FF    ; 3.2 #  [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+
+    We will not add them to the rules until they are more supported (e.g. in fonts on Windows)
+    A bug has been filed to remind us to do this: #1979.
+    */
+    
+    static String KATAKANA = "[[[:katakana:][\u30A1-\u30FA\u30FC]]-[\u30FF\u31F0-\u31FF]]";
+    static String HIRAGANA = "[[[:hiragana:][\u3040-\u3094]]-[\u3095-\u3096\u309F-\u30A0]]";
+    static String LENGTH = "[\u30FC]";
+    static String HALFWIDTH_KATAKANA = "[\uFF65-\uFF9D]";
+    static String KATAKANA_ITERATION = "[\u30FD\u30FE]";
+    static String HIRAGANA_ITERATION = "[\u309D\u309E]";
+    
+    public void TestKana() throws IOException, ParseException {
+        new Test("Katakana-Hiragana")
+          .test(KATAKANA, "[" + HIRAGANA + LENGTH + "]", "[" + HALFWIDTH_KATAKANA + LENGTH + "]", this, new Legal());
+    }
+
+    public void TestHiragana() throws IOException, ParseException {
+        new Test("Latin-Hiragana")
+          .test("[a-zA-Z]", HIRAGANA, HIRAGANA_ITERATION, this, new Legal());
+    }
+    
+    public void TestKatakana() throws IOException, ParseException {
+        new Test("Latin-Katakana")
+          .test("[a-zA-Z]", KATAKANA, "[" + KATAKANA_ITERATION + HALFWIDTH_KATAKANA + "]", this, new Legal());
+    }
+
+// Some transliterators removed for 2.0
+
+//  public void TestArabic() throws IOException, ParseException {
+//      new Test("Latin-Arabic", 
+//        TestUtility.LATIN_SCRIPT, TestUtility.ARABIC_SCRIPT)
+//        .test("[a-zA-Z]", "[\u0620-\u065F-[\u0640]]", this);
+//  }
+
+//  public void TestHebrew() throws IOException, ParseException {
+//      new Test("Latin-Hebrew", 
+//        TestUtility.LATIN_SCRIPT, TestUtility.HEBREW_SCRIPT)
+//        .test(null, "[\u05D0-\u05EF]", this);
+//  }
+
+//  public void TestHangul() throws IOException, ParseException {
+//      Test t = new TestHangul();
+//      t.setPairLimit(30); // Don't run full test -- too long
+//      t.test(null, null, this);
+//  }
+
+    public void TestJamo() throws IOException, ParseException {
+        new Test("Latin-Jamo")
+            .test("[a-zA-Z]", "[\u1100-\u1112 \u1161-\u1175 \u11A8-\u11C2]", "", this, new LegalJamo());
+    }
+
+/*
+        SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7,
+        LCount = 19, VCount = 21, TCount = 28,
+        NCount = VCount * TCount,   // 588
+        SCount = LCount * NCount,   // 11172
+        LLimit = LBase + LCount,    // 1113
+        VLimit = VBase + VCount,    // 1176
+        TLimit = TBase + TCount,    // 11C3
+        SLimit = SBase + SCount;    // D7A4
+*/
+
+    public void TestHangul() throws IOException, ParseException {
+        Test t = new Test("Latin-Hangul");
+        t.test("[a-zA-Z]", "[\uAC00-\uD7A4]", "", this, new Legal());
+    }
+    
+    public void TestSingle() {
+		Transliterator t = Transliterator.getInstance("Latin-Greek");
+    	t.transliterate("\u0061\u0101\u0069");
+    }
+
+    public void TestGreek() throws IOException, ParseException {
+        new Test("Latin-Greek")
+        .test("[a-zA-Z]", "[\u003B\u00B7[:Greek:]-[\u03D7-\u03EF]]", 
+            "[\u00B5\u037A\u03D0-\u03F5]", /* roundtrip exclusions */
+            this, new LegalGreek(true));
+    }
+
+    public void TestGreekUNGEGN() throws IOException, ParseException {
+        new Test("Latin-Greek/UNGEGN")
+          .test("[a-zA-Z]", "[\u003B\u00B7[:Greek:]-[\u03D7-\u03EF]]", 
+            "[\u00B5\u037A\u03D0-\uFFFF{\u039C\u03C0}]", /* roundtrip exclusions */
+            this, new LegalGreek(false));
+    }
+
+    public void Testel() throws IOException, ParseException {
+        new Test("Latin-el")
+          .test("[a-zA-Z]", "[\u003B\u00B7[:Greek:]-[\u03D7-\u03EF]]", 
+            "[\u00B5\u037A\u03D0-\uFFFF{\u039C\u03C0}]", /* roundtrip exclusions */
+            this, new LegalGreek(false));
+    }
+
+    public void TestCyrillic() throws IOException, ParseException {
+        new Test("Latin-Cyrillic")
+          .test("[a-zA-Z\u0110\u0111]", "[\u0400-\u045F]", null, this, new Legal());
+    }
+    
+    static final String ARABIC = "[\u060C\u061B\u061F\u0621\u0627-\u063A\u0641-\u0655\u0660-\u066C\u067E\u0686\u0698\u06A4\u06AD\u06AF\u06CB-\u06CC\u06F0-\u06F9]";
+
+    public void TestArabic() throws IOException, ParseException {
+        new Test("Latin-Arabic")
+          .test("[a-zA-Z\u02BE\u02BF]", ARABIC, "[a-zA-Z\u02BE\u02BF\u207F]", null, this, new Legal()); // 
+    }
+    
+    public void TestHebrew() throws IOException, ParseException {
+        new Test("Latin-Hebrew")
+          .test("[a-zA-Z\u02BC\u02BB]", "[[:hebrew:]-[\uFB00-\uFBFF]]", "[\u05F0\u05F1\u05F2]", this, new LegalHebrew());
+    }
+    
+    public void TestThai() throws IOException, ParseException {
+        //System.out.println("\nTest commented out, to be reinstated later");
+        
+        new Test("Latin-Thai")
+          .test("[a-zA-Z\u0142\u1ECD\u00E6\u0131\u0268]", "[\u0E01-\u0E3A\u0E40-\u0E5B]", null, this, new LegalThai());
+        
+    }
+    
+    //----------------------------------
+    // Inter-Indic Tests
+    //----------------------------------
+    public static class LegalIndic extends Legal{
+        UnicodeSet vowelSignSet = new UnicodeSet();
+        
+        public LegalIndic(){
+            vowelSignSet.addAll(new UnicodeSet("[\u0901\u0902\u0903\u093e-\u094c\u0962\u0963]"));				/* Devanagari */
+            vowelSignSet.addAll(new UnicodeSet("[\u0981\u0982\u0983\u09be-\u09cc\u09e2\u09e3\u09D7]"));			/* Bengali */
+            vowelSignSet.addAll(new UnicodeSet("[\u0a01\u0a02\u0a03\u0a3e-\u0a4c\u0a62\u0a63\u0a70\u0a71]"));	/* Gurmukhi */
+            vowelSignSet.addAll(new UnicodeSet("[\u0a81\u0a82\u0a83\u0abe-\u0acc\u0ae2\u0ae3]"));				/* Gujarati */
+            vowelSignSet.addAll(new UnicodeSet("[\u0b01\u0b02\u0b03\u0b3e-\u0b4c\u0b62\u0b63\u0b56\u0b57]"));	/* Oriya */
+            vowelSignSet.addAll(new UnicodeSet("[\u0b81\u0b82\u0b83\u0bbe-\u0bcc\u0be2\u0be3\u0bd7]"));			/* Tamil */
+            vowelSignSet.addAll(new UnicodeSet("[\u0c01\u0c02\u0c03\u0c3e-\u0c4c\u0c62\u0c63\u0c55\u0c56]"));	/* Telugu */
+            vowelSignSet.addAll(new UnicodeSet("[\u0c81\u0c82\u0c83\u0cbe-\u0ccc\u0ce2\u0ce3\u0cd5\u0cd6]"));	/* Kannada */
+            vowelSignSet.addAll(new UnicodeSet("[\u0d01\u0d02\u0d03\u0d3e-\u0d4c\u0d62\u0d63\u0d57]"));			/* Malayalam */
+        }
+        
+        String avagraha = "\u093d\u0abd\u0b3d";
+        String nukta = "\u093c\u09bc\u0a3c\u0abc\u0b3c";
+        String virama = "\u094d\u09cd\u0a4d\u0acd\u0b4d\u0bcd\u0c4d\u0ccd\u0d4d";
+        String sanskritStressSigns = "\u0951\u0952\u0953\u0954";
+        String chandrabindu = "\u0901\u0981\u0A81\u0b01\u0c01";
+        public boolean is(String sourceString){
+            int cp=sourceString.charAt(0);
+            
+            // A vowel sign cannot be the first char
+            if(vowelSignSet.contains(cp)){
+                return false;
+            }else if(avagraha.indexOf(cp)!=-1){
+                return false;
+            }else if(virama.indexOf(cp)!=-1){
+                return false;
+            }else if(nukta.indexOf(cp)!=-1){
+                return false;
+            }else if(sanskritStressSigns.indexOf(cp)!=-1){
+                return false;
+            }else if((chandrabindu.indexOf(cp)!=-1) && 
+                        (sourceString.length() >1 && 
+                            vowelSignSet.contains(sourceString.charAt(1)))){
+                return false;
+            }
+            return true;
+        }
+    }
+    static String latinForIndic = "[['.0-9A-Za-z~\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD"+
+                                   "\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F"+
+                                   "\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148"+
+                                   "\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0"+
+                                   "\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01ED\u01F0\u01F4-\u01F5\u01F8-\u01FB"+
+                                   "\u0200-\u021B\u021E-\u021F\u0226-\u0233\u0303-\u0304\u0306\u0314-\u0315"+
+                                   "\u0325\u040E\u0419\u0439\u045E\u04C1-\u04C2\u04D0-\u04D1\u04D6-\u04D7"+
+                                   "\u04E2-\u04E3\u04EE-\u04EF\u1E00-\u1E99\u1EA0-\u1EF9\u1F01\u1F03\u1F05"+
+                                   "\u1F07\u1F09\u1F0B\u1F0D\u1F0F\u1F11\u1F13\u1F15\u1F19\u1F1B\u1F1D\u1F21"+
+                                   "\u1F23\u1F25\u1F27\u1F29\u1F2B\u1F2D\u1F2F\u1F31\u1F33\u1F35\u1F37\u1F39"+
+                                   "\u1F3B\u1F3D\u1F3F\u1F41\u1F43\u1F45\u1F49\u1F4B\u1F4D\u1F51\u1F53\u1F55"+
+                                   "\u1F57\u1F59\u1F5B\u1F5D\u1F5F\u1F61\u1F63\u1F65\u1F67\u1F69\u1F6B\u1F6D"+
+                                   "\u1F6F\u1F81\u1F83\u1F85\u1F87\u1F89\u1F8B\u1F8D\u1F8F\u1F91\u1F93\u1F95"+
+                                   "\u1F97\u1F99\u1F9B\u1F9D\u1F9F\u1FA1\u1FA3\u1FA5\u1FA7\u1FA9\u1FAB\u1FAD"+
+                                   "\u1FAF-\u1FB1\u1FB8-\u1FB9\u1FD0-\u1FD1\u1FD8-\u1FD9\u1FE0-\u1FE1\u1FE5"+
+                                   "\u1FE8-\u1FE9\u1FEC\u212A-\u212B\uE04D\uE064]"+
+                                   "-[\uE000-\uE080 \u01E2\u01E3]& [[:latin:][:mark:]]]";
+                                   
+    public void TestDevanagariLatin() throws IOException, ParseException {
+        new Test("Latin-DEVANAGARI")
+          .test(latinForIndic, "[[:Devanagari:][\u094d][\u0964\u0965]]", "[\u0965]", this, new LegalIndic());
+    }
+    
+    private static final String [][] array= new String[][]{
+        new String [] {  "BENGALI-DEVANAGARI",
+            "[:BENGALI:]", "[:Devanagari:]", 
+                "[\u0951-\u0954\u0943-\u0949\u094a\u0962\u0963\u090D\u090e\u0911\u0912\u0929\u0933\u0934\u0935\u093d\u0950\u0958\u0959\u095a\u095b\u095e\u09f0\u09f1]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-BENGALI",
+           "[:Devanagari:]", "[:BENGALI:]",
+                  "[\u0951-\u0954\u09D7\u090D\u090e\u0911\u0912\u0929\u0933\u0934\u0935\u093d\u0950\u0958\u0959\u095a\u095b\u095e\u09f0\u09f1]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GURMUKHI-DEVANAGARI",
+          "[:GURMUKHI:]", "[:Devanagari:]", 
+                "[\u0902\u0936\u0933\u0951-\u0954\u0902\u0903\u0943-\u0949\u094a\u0962\u0963\u090B\u090C\u090D\u090e\u0911\u0912\u0934\u0937\u093D\u0950\u0960\u0961\u0a72\u0a73\u0a74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-GURMUKHI",
+           "[:Devanagari:]", "[:GURMUKHI:]",
+                  "[\u0A02\u0946\u0A5C\u0951-\u0954\u0A70\u0A71\u090B\u090C\u090D\u090e\u0911\u0912\u0934\u0937\u093D\u0950\u0960\u0961\u0a72\u0a73\u0a74]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GUJARATI-DEVANAGARI",
+          "[:GUJARATI:]", "[:Devanagari:]", 
+                "[\u0946\u094A\u0962\u0963\u0951-\u0954\u0961\u090c\u090e\u0912]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-GUJARATI",
+           "[:Devanagari:]", "[:GUJARATI:]",
+                  "[\u0951-\u0954\u0961\u090c\u090e\u0912]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "ORIYA-DEVANAGARI",
+          "[:ORIYA:]", "[:Devanagari:]", 
+                "[\u0943-\u094a\u0962\u0963\u0951-\u0954\u0950\u090D\u090e\u0912\u0911\u0931\u0935]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-ORIYA",
+           "[:Devanagari:]", "[:ORIYA:]",
+                  "[\u0b5f\u0b56\u0b57\u0950\u090D\u090e\u0912\u0911\u0931\u0935]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "Tamil-DEVANAGARI",
+          "[:tamil:]", "[:Devanagari:]", 
+                  "[\u0901\u093c\u0943-\u094a\u0951-\u0954\u0962\u0963\u090B\u090C\u090D\u0911\u0916\u0917\u0918\u091B\u091D\u0920\u0921\u0922\u0925\u0926\u0927\u092B\u092C\u092D\u0936\u093d\u0950[\u0958-\u0961]]", /*roundtrip exclusions*/
+                  },
+        new String [] {  "DEVANAGARI-Tamil",
+           "[:Devanagari:]", "[:tamil:]",
+                  "[\u0bd7]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "Telugu-DEVANAGARI",
+          "[:telugu:]", "[:Devanagari:]", 
+                "[\u093c\u0950\u0945\u0949\u0951-\u0954\u0962\u0963\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-TELUGU",
+           "[:Devanagari:]", "[:TELUGU:]",
+                  "[\u0c55\u0c56\u0950\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-DEVANAGARI",
+          "[:KANNADA:]", "[:Devanagari:]", 
+                "[\u0901\u0946\u093c\u0950\u0945\u0949\u0951-\u0954\u0962\u0963\u0950\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-KANNADA",
+           "[:Devanagari:]", "[:KANNADA:]",
+                  "[\u0cde\u0cd5\u0cd6\u0950\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]]", /*roundtrip exclusions*/ 
+                  },
+
+        new String [] {  "MALAYALAM-DEVANAGARI",
+          "[:MALAYALAM:]", "[:Devanagari:]", 
+                "[\u0901\u094a\u094b\u094c\u093c\u0950\u0944\u0945\u0949\u0951-\u0954\u0962\u0963\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-MALAYALAM",
+           "[:Devanagari:]", "[:MALAYALAM:]",
+                  "[\u0d4c\u0d57\u0950\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GURMUKHI-BENGALI",
+          "[:GURMUKHI:]", "[:BENGALI:]",  
+                "[\u0982\u09b6\u09e2\u09e3\u09c3\u09c4\u09d7\u098B\u098C\u09B7\u09E0\u09E1\u09F0\u09F1]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-GURMUKHI",
+           "[:BENGALI:]", "[:GURMUKHI:]",
+                  "[\u0A02\u0a5c\u0a47\u0a70\u0a71\u0A33\u0A35\u0A59\u0A5A\u0A5B\u0A5E\u0A72\u0A73\u0A74]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GUJARATI-BENGALI",
+          "[:GUJARATI:]", "[:BENGALI:]", 
+                "[\u09d7\u09e2\u09e3\u098c\u09e1\u09f0\u09f1]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-GUJARATI",
+           "[:BENGALI:]", "[:GUJARATI:]",
+                  "[\u0A82\u0a83\u0Ac9\u0Ac5\u0ac7\u0A8D\u0A91\u0AB3\u0AB5\u0ABD\u0AD0]", /*roundtrip exclusions*/
+                  },
+ 
+        new String [] {  "ORIYA-BENGALI",
+          "[:ORIYA:]", "[:BENGALI:]", 
+                "[\u09c4\u09e2\u09e3\u09f0\u09f1]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-ORIYA",
+           "[:BENGALI:]", "[:ORIYA:]",
+                  "[\u0b5f\u0b56\u0b33\u0b3d]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "Tamil-BENGALI",
+          "[:tamil:]", "[:BENGALI:]", 
+                  "[\u0981\u09bc\u09c3\u09c4\u09e2\u09e3\u09f0\u09f1\u098B\u098C\u0996\u0997\u0998\u099B\u099D\u09A0\u09A1\u09A2\u09A5\u09A6\u09A7\u09AB\u09AC\u09AD\u09B6\u09DC\u09DD\u09DF\u09E0\u09E1]", /*roundtrip exclusions*/
+                  },
+        new String [] {  "BENGALI-Tamil",
+           "[:BENGALI:]", "[:tamil:]",
+                  "[\u0bc6\u0bc7\u0bca\u0B8E\u0B92\u0BA9\u0BB1\u0BB3\u0BB4\u0BB5]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "Telugu-BENGALI",
+          "[:telugu:]", "[:BENGALI:]", 
+                "[\u09e2\u09e3\u09bc\u09d7\u09f0\u09f1\u09dc\u09dd\u09df]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-TELUGU",
+           "[:BENGALI:]", "[:TELUGU:]",
+                  "[\u0c55\u0c56\u0c47\u0c46\u0c4a\u0C0E\u0C12\u0C31\u0C33\u0C35]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-BENGALI",
+          "[:KANNADA:]", "[:BENGALI:]", 
+                "[\u0981\u09e2\u09e3\u09bc\u09d7\u09f0\u09f1\u09dc\u09dd\u09df]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-KANNADA",
+           "[:BENGALI:]", "[:KANNADA:]",
+                  "[\u0cc6\u0cca\u0cd5\u0cd6\u0cc7\u0C8E\u0C92\u0CB1\u0cb3\u0cb5\u0cde]", /*roundtrip exclusions*/ 
+                  },
+
+        new String [] {  "MALAYALAM-BENGALI",
+          "[:MALAYALAM:]", "[:BENGALI:]", 
+                "[\u0981\u09e2\u09e3\u09bc\u09c4\u09f0\u09f1\u09dc\u09dd\u09df]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-MALAYALAM",
+           "[:BENGALI:]", "[:MALAYALAM:]",
+                  "[\u0d46\u0d4a\u0d47\u0d31-\u0d35\u0d0e\u0d12]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GUJARATI-GURMUKHI",
+          "[:GUJARATI:]", "[:GURMUKHI:]", 
+                "[\u0A02\u0ab3\u0ab6\u0A70\u0a71\u0a82\u0a83\u0ac3\u0ac4\u0ac5\u0ac9\u0a5c\u0a72\u0a73\u0a74\u0a8b\u0a8d\u0a91\u0abd]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-GUJARATI",
+           "[:GURMUKHI:]", "[:GUJARATI:]",
+                  "[\u0ab3\u0ab6\u0A70\u0a71\u0a82\u0a83\u0ac3\u0ac4\u0ac5\u0ac9\u0a5c\u0a72\u0a73\u0a74\u0a8b\u0a8d\u0a91\u0ab7\u0abd\u0ad0\u0ae0]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "ORIYA-GURMUKHI",
+          "[:ORIYA:]", "[:GURMUKHI:]", 
+                "[\u0A02\u0a5c\u0a21\u0a47\u0a71\u0b02\u0b03\u0b33\u0b36\u0b43\u0b56\u0b57\u0B0B\u0B0C\u0B37\u0B3D\u0B5F\u0B60\u0B61\u0a35\u0a72\u0a73\u0a74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-ORIYA",
+           "[:GURMUKHI:]", "[:ORIYA:]",
+                  "[\u0a71\u0b02\u0b03\u0b33\u0b36\u0b43\u0b56\u0b57\u0B0B\u0B0C\u0B37\u0B3D\u0B5F\u0B60\u0B61]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TAMIL-GURMUKHI",
+          "[:TAMIL:]", "[:GURMUKHI:]", 
+                "[\u0A02\u0a33\u0a36\u0a3c\u0a70\u0a71\u0a47\u0A16\u0A17\u0A18\u0A1B\u0A1D\u0A20\u0A21\u0A22\u0A25\u0A26\u0A27\u0A2B\u0A2C\u0A2D\u0A59\u0A5A\u0A5B\u0A5C\u0A5E\u0A72\u0A73\u0A74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-TAMIL",
+           "[:GURMUKHI:]", "[:TAMIL:]",
+                  "[\u0b82\u0bc6\u0bca\u0bd7\u0bb7\u0bb3\u0b83\u0B8E\u0B92\u0BA9\u0BB1\u0BB4]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TELUGU-GURMUKHI",
+          "[:TELUGU:]", "[:GURMUKHI:]", 
+                "[\u0A02\u0a33\u0a36\u0a3c\u0a70\u0a71\u0A59\u0A5A\u0A5B\u0A5C\u0A5E\u0A72\u0A73\u0A74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-TELUGU",
+           "[:GURMUKHI:]", "[:TELUGU:]",
+                  "[\u0c02\u0c03\u0c33\u0c36\u0c44\u0c43\u0c46\u0c4a\u0c56\u0c55\u0C0B\u0C0C\u0C0E\u0C12\u0C31\u0C37\u0C60\u0C61]", /*roundtrip exclusions*/
+                  },
+        new String [] {  "KANNADA-GURMUKHI",
+          "[:KANNADA:]", "[:GURMUKHI:]", 
+                "[\u0A02\u0a33\u0a36\u0a3c\u0a70\u0a71\u0A59\u0A5A\u0A5B\u0A5C\u0A5E\u0A72\u0A73\u0A74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-KANNADA",
+           "[:GURMUKHI:]", "[:KANNADA:]",
+                  "[\u0c82\u0c83\u0cb3\u0cb6\u0cc4\u0cc3\u0cc6\u0cca\u0cd5\u0cd6\u0C8B\u0C8C\u0C8E\u0C92\u0CB1\u0CB7\u0CE0\u0CE1]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-GURMUKHI",
+          "[:MALAYALAM:]", "[:GURMUKHI:]", 
+                "[\u0A02\u0a4b\u0a4c\u0a33\u0a36\u0a3c\u0a70\u0a71\u0A59\u0A5A\u0A5B\u0A5C\u0A5E\u0A72\u0A73\u0A74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-MALAYALAM",
+           "[:GURMUKHI:]", "[:MALAYALAM:]",
+                  "[\u0d02\u0d03\u0d33\u0d36\u0d43\u0d46\u0d4a\u0d4c\u0d57\u0D0B\u0D0C\u0D0E\u0D12\u0D31\u0D34\u0D37\u0D60\u0D61]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GUJARATI-ORIYA",
+          "[:GUJARATI:]", "[:ORIYA:]", 
+                "[\u0b56\u0b57\u0B0C\u0B5F\u0B61]", /*roundtrip exclusions*/
+                },
+        new String [] {  "ORIYA-GUJARATI",
+           "[:ORIYA:]", "[:GUJARATI:]",
+                  "[\u0Ac4\u0Ac5\u0Ac9\u0Ac7\u0A8D\u0A91\u0AB5\u0Ad0]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TAMIL-GUJARATI",
+          "[:TAMIL:]", "[:GUJARATI:]", 
+                "[\u0A81\u0abc\u0ac3\u0Ac4\u0Ac5\u0Ac9\u0Ac7\u0A8B\u0A8D\u0A91\u0A96\u0A97\u0A98\u0A9B\u0A9D\u0AA0\u0AA1\u0AA2\u0AA5\u0AA6\u0AA7\u0AAB\u0AAC\u0AAD\u0AB6\u0ABD\u0AD0\u0AE0]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GUJARATI-TAMIL",
+           "[:GUJARATI:]", "[:TAMIL:]",
+                  "[\u0Bc6\u0Bca\u0Bd7\u0B8E\u0B92\u0BA9\u0BB1\u0BB4]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TELUGU-GUJARATI",
+          "[:TELUGU:]", "[:GUJARATI:]", 
+                "[\u0abc\u0Ac5\u0Ac9\u0A8D\u0A91\u0ABD\u0Ad0]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GUJARATI-TELUGU",
+           "[:GUJARATI:]", "[:TELUGU:]",
+                  "[\u0c46\u0c4a\u0c55\u0c56\u0C0C\u0C0E\u0C12\u0C31\u0C61]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-GUJARATI",
+          "[:KANNADA:]", "[:GUJARATI:]", 
+                "[\u0A81\u0abc\u0Ac5\u0Ac9\u0A8D\u0A91\u0ABD\u0Ad0]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GUJARATI-KANNADA",
+           "[:GUJARATI:]", "[:KANNADA:]",
+                  "[\u0cc6\u0cca\u0cd5\u0cd6\u0C8C\u0C8E\u0C92\u0CB1\u0CDE\u0CE1]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-GUJARATI",
+          "[:MALAYALAM:]", "[:GUJARATI:]", 
+                "[\u0A81\u0ac4\u0acb\u0acc\u0abc\u0Ac5\u0Ac9\u0A8D\u0A91\u0ABD\u0Ad0]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GUJARATI-MALAYALAM",
+           "[:GUJARATI:]", "[:MALAYALAM:]",
+                  "[\u0d46\u0d4a\u0d4c\u0d55\u0d57\u0D0C\u0D0E\u0D12\u0D31\u0D34\u0D61]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TAMIL-ORIYA",
+          "[:TAMIL:]", "[:ORIYA:]", 
+                "[\u0B01\u0b3c\u0b43\u0b56\u0B0B\u0B0C\u0B16\u0B17\u0B18\u0B1B\u0B1D\u0B20\u0B21\u0B22\u0B25\u0B26\u0B27\u0B2B\u0B2C\u0B2D\u0B36\u0B3D\u0B5C\u0B5D\u0B5F\u0B60\u0B61]", /*roundtrip exclusions*/
+                },
+        new String [] {  "ORIYA-TAMIL",
+           "[:ORIYA:]", "[:TAMIL:]",
+                  "[\u0bc6\u0bca\u0bc7\u0B8E\u0B92\u0BA9\u0BB1\u0BB4\u0BB5]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TELUGU-ORIYA",
+          "[:TELUGU:]", "[:ORIYA:]", 
+                "[\u0b3c\u0b57\u0b56\u0B3D\u0B5C\u0B5D\u0B5F]", /*roundtrip exclusions*/
+                },
+        new String [] {  "ORIYA-TELUGU",
+           "[:ORIYA:]", "[:TELUGU:]",
+                  "[\u0c44\u0c46\u0c4a\u0c55\u0c47\u0C0E\u0C12\u0C31\u0C35]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-ORIYA",
+          "[:KANNADA:]", "[:ORIYA:]", 
+                "[\u0B01\u0b3c\u0b57\u0B3D\u0B5C\u0B5D\u0B5F]", /*roundtrip exclusions*/
+                },
+        new String [] {  "ORIYA-KANNADA",
+           "[:ORIYA:]", "[:KANNADA:]",
+                  "[\u0cc4\u0cc6\u0cca\u0cd5\u0cc7\u0C8E\u0C92\u0CB1\u0CB5\u0CDE]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-ORIYA",
+          "[:MALAYALAM:]", "[:ORIYA:]", 
+                "[\u0B01\u0b3c\u0b56\u0B3D\u0B5C\u0B5D\u0B5F]", /*roundtrip exclusions*/
+                },
+        new String [] {  "ORIYA-MALAYALAM",
+           "[:ORIYA:]", "[:MALAYALAM:]",
+                  "[\u0D47\u0D46\u0D4a\u0D0E\u0D12\u0D31\u0D34\u0D35]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TELUGU-TAMIL",
+          "[:TELUGU:]", "[:TAMIL:]", 
+                "[\u0bd7\u0ba9\u0bb4]", /*roundtrip exclusions*/
+                },
+        new String [] {  "TAMIL-TELUGU",
+           "[:TAMIL:]", "[:TELUGU:]",
+                  "[\u0C01\u0c43\u0c44\u0c46\u0c47\u0c55\u0c56\u0c66\u0C0B\u0C0C\u0C16\u0C17\u0C18\u0C1B\u0C1D\u0C20\u0C21\u0C22\u0C25\u0C26\u0C27\u0C2B\u0C2C\u0C2D\u0C36\u0C60\u0C61]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-TAMIL",
+          "[:KANNADA:]", "[:TAMIL:]", 
+                "[\u0bd7\u0bc6\u0ba9\u0bb4]", /*roundtrip exclusions*/
+                },
+        new String [] {  "TAMIL-KANNADA",
+           "[:TAMIL:]", "[:KANNADA:]",
+                  "[\u0cc3\u0cc4\u0cc6\u0cc7\u0cd5\u0cd6\u0C8B\u0C8C\u0C96\u0C97\u0C98\u0C9B\u0C9D\u0CA0\u0CA1\u0CA2\u0CA5\u0CA6\u0CA7\u0CAB\u0CAC\u0CAD\u0CB6\u0CDE\u0CE0\u0CE1]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-TAMIL",
+          "[:MALAYALAM:]", "[:TAMIL:]", 
+                "[\u0ba9]", /*roundtrip exclusions*/
+                },
+        new String [] {  "TAMIL-MALAYALAM",
+           "[:TAMIL:]", "[:MALAYALAM:]",
+                  "[\u0d43\u0d12\u0D0B\u0D0C\u0D16\u0D17\u0D18\u0D1B\u0D1D\u0D20\u0D21\u0D22\u0D25\u0D26\u0D27\u0D2B\u0D2C\u0D2D\u0D36\u0D60\u0D61]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-TELUGU",
+          "[:KANNADA:]", "[:TELUGU:]", 
+                "[\u0C01\u0c3f\u0c46\u0c48\u0c4a]", /*roundtrip exclusions*/
+                },
+        new String [] {  "TELUGU-KANNADA",
+           "[:TELUGU:]", "[:KANNADA:]",
+                  "[\u0cc8\u0cd5\u0cd6\u0CDE]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-TELUGU",
+          "[:MALAYALAM:]", "[:TELUGU:]", 
+                "[\u0C01\u0c44\u0c4a\u0c4c\u0c4b\u0c55\u0c56]", /*roundtrip exclusions*/
+                },
+        new String [] {  "TELUGU-MALAYALAM",
+           "[:TELUGU:]", "[:MALAYALAM:]",
+                  "[\u0d4c\u0d57\u0D34]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-KANNADA",
+          "[:MALAYALAM:]", "[:KANNADA:]", 
+                "[\u0cc4\u0cc6\u0cca\u0ccc\u0ccb\u0cd5\u0cd6\u0cDe]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Bengali",
+            latinForIndic, "[[:Bengali:][\u0964\u0965]]", 
+               "[\u0965\u09f0\u09f1\u0965]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Gurmukhi",
+           latinForIndic, "[[:Gurmukhi:][\u0964\u0965]]", 
+               "[\u0a02\u0965\u0a72\u0a73\u0a74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Gujarati",
+            latinForIndic, "[[:Gujarati:][\u0964\u0965]]", 
+               "[\u0965]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Oriya",
+            latinForIndic, "[[:Oriya:][\u0964\u0965]]", 
+               "[\u0965]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Tamil",
+            latinForIndic, "[:Tamil:]", 
+               null, /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Telugu",
+            latinForIndic, "[:Telugu:]", 
+               null, /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Kannada",
+            latinForIndic, "[:Kannada:]", 
+               null, /*roundtrip exclusions*/
+                },
+         new String [] {  "Latin-Malayalam",
+           latinForIndic, "[:Malayalam:]", 
+               null, /*roundtrip exclusions*/
+                },
+        };
+
+    public void TestInterIndic() throws Exception{
+        int num = array.length;
+        if (isQuick()) {
+            logln("Testing only 5 of "+ array.length+" Skipping rest (use -e for exhaustive)");
+            num = 5;
+        }
+        for(int i=0; i<num;i++){
+           logln("Testing " + array[i][0] + " at index " + i   );
+           new Test(array[i][0])
+                .test(array[i][1], array[i][2], 
+                array[i][3],
+                this, new LegalIndic());
+        }
+    }
+ 
+    //---------------
+    // End Indic
+    //---------------
+    
+    public static class Legal {
+        public boolean is(String sourceString) {return true;}
+    }
+    
+    public static class LegalJamo extends Legal {
+        // any initial must be followed by a medial (or initial)
+        // any medial must follow an initial (or medial)
+        // any final must follow a medial (or final)
+        
+        public boolean is(String sourceString) {
+            try {
+                int t;
+                String decomp = Normalizer.normalize(sourceString, Normalizer.NFD);
+                for (int i = 0; i < decomp.length(); ++i) { // don't worry about surrogates
+                    switch (getType(decomp.charAt(i))) {
+                    case 0:
+                        t = getType(decomp.charAt(i+1));
+                        if (t != 0 && t != 1) return false;
+                        break;
+                    case 1:
+                        t = getType(decomp.charAt(i-1));
+                        if (t != 0 && t != 1) return false;
+                        break;
+                    case 2:
+                        t = getType(decomp.charAt(i-1));
+                        if (t != 1 && t != 2) return false;
+                        break;
+                    }
+                }
+                return true;
+            } catch (StringIndexOutOfBoundsException e) {
+                return false;
+            }
+        }
+        
+        public int getType(char c) {
+            if ('\u1100' <= c && c <= '\u1112') return 0;
+            else if ('\u1161' <= c && c  <= '\u1175') return 1;
+            else if ('\u11A8' <= c && c  <= '\u11C2') return 2;
+            return -1; // other
+        }
+    }
+    
+    static BreakIterator thaiBreak = BreakIterator.getWordInstance(new Locale("th", "TH"));
+    // anything is legal except word ending with Logical-order-exception
+    public static class LegalThai extends Legal {
+        public boolean is(String sourceString) {
+            if (sourceString.length() == 0) return true;
+            char ch = sourceString.charAt(sourceString.length() - 1); // don't worry about surrogates.
+            if (UCharacter.hasBinaryProperty(ch, UProperty.LOGICAL_ORDER_EXCEPTION)) return false;
+            
+            
+            // disallow anything with a wordbreak between
+            /*
+            if (UTF16.countCodePoint(sourceString) <= 1) return true;
+            thaiBreak.setText(sourceString);
+            for (int pos = thaiBreak.first(); pos != BreakIterator.DONE; pos = thaiBreak.next()) {
+                if (pos > 0 && pos < sourceString.length()) {
+                    System.out.println("Skipping " + Utility.escape(sourceString));
+                    return false;
+                }
+            }
+            */
+            return true;
+        }
+    }
+    
+    // anything is legal except that Final letters can't be followed by letter; NonFinal must be
+    public static class LegalHebrew extends Legal {
+        static UnicodeSet FINAL = new UnicodeSet("[\u05DA\u05DD\u05DF\u05E3\u05E5]");
+        static UnicodeSet NON_FINAL = new UnicodeSet("[\u05DB\u05DE\u05E0\u05E4\u05E6]");
+        static UnicodeSet LETTER = new UnicodeSet("[:letter:]");
+        public boolean is(String sourceString) {
+            if (sourceString.length() == 0) return true;
+            // don't worry about surrogates.
+            for (int i = 0; i < sourceString.length(); ++i) {
+                char ch = sourceString.charAt(i);
+                char next = i+1 == sourceString.length() ? '\u0000' : sourceString.charAt(i);
+                if (FINAL.contains(ch)) {
+                    if (LETTER.contains(next)) return false;
+                } else if (NON_FINAL.contains(ch)) {
+                    if (!LETTER.contains(next)) return false;
+                }   
+            }
+            return true;
+        }
+    }
+    
+    
+    public static class LegalGreek extends Legal {
+        
+        boolean full;
+        
+        public LegalGreek(boolean full) {
+            this.full = full;
+        }
+        
+        static final char IOTA_SUBSCRIPT = '\u0345';
+        static final UnicodeSet breathing = new UnicodeSet("[\\u0313\\u0314']");
+        static final UnicodeSet validSecondVowel = new UnicodeSet("[\\u03C5\\u03B9\\u03A5\\u0399]");
+        
+        public static boolean isVowel(char c) {
+            return "\u03B1\u03B5\u03B7\u03B9\u03BF\u03C5\u03C9\u0391\u0395\u0397\u0399\u039F\u03A5\u03A9".indexOf(c) >= 0;
+        }
+        
+        public static boolean isRho(char c) {
+            return "\u03C1\u03A1".indexOf(c) >= 0;
+        }
+        
+        public boolean is(String sourceString) { 
+            try {
+                String decomp = Normalizer.normalize(sourceString, Normalizer.NFD);
+                
+                // modern is simpler: don't care about anything but a grave
+                if (!full) {
+                    //if (sourceString.equals("\u039C\u03C0")) return false;
+                    for (int i = 0; i < decomp.length(); ++i) {
+                        char c = decomp.charAt(i);
+                        // exclude all the accents
+                        if (c == '\u0313' || c == '\u0314' || c == '\u0300' || c == '\u0302'
+                            || c == '\u0342' || c == '\u0345'
+                            ) return false;
+                    }
+                    return true;
+                }
+                
+                // Legal full Greek has breathing marks IFF there is a vowel or RHO at the start
+                // IF it has them, it has exactly one.
+                // IF it starts with a RHO, then the breathing mark must come before the second letter.
+                // IF it starts with a vowel, then it must before the third letter.
+                //	it will only come after the second if of the format [vowel] [no iota subscript!] [upsilon or iota]
+                // Since there are no surrogates in greek, don't worry about them
+
+                boolean firstIsVowel = false;
+                boolean firstIsRho = false;
+                boolean noLetterYet = true;
+                int breathingCount = 0;
+                int letterCount = 0;
+                int breathingPosition = -1;
+                
+                for (int i = 0; i < decomp.length(); ++i) {
+                    char c = decomp.charAt(i);
+                    if (UCharacter.isLetter(c)) {
+                        ++letterCount;
+                        if (firstIsVowel && !validSecondVowel.contains(c) && breathingCount == 0) return false;
+                        if (noLetterYet) {
+                            noLetterYet = false;
+                            firstIsVowel = isVowel(c);
+                            firstIsRho = isRho(c);
+                        }
+                        if (firstIsRho && letterCount == 2 && breathingCount == 0) return false;
+                    }
+                    if (c == IOTA_SUBSCRIPT && firstIsVowel && breathingCount == 0) return false;
+                    if (breathing.contains(c)) {
+                    	breathingPosition = i;
+                        ++breathingCount;
+                    }
+                }
+                
+                if (firstIsVowel || firstIsRho) return breathingCount == 1;
+                return breathingCount == 0;
+            } catch (Throwable t) {
+                System.out.println(t.getClass().getName() + " " + t.getMessage());
+                return true;
+            }
+        }
+    }
+    
+    static class Test {
+    
+        PrintWriter out;
+    
+        private String transliteratorID; 
+        private int errorLimit = 500;
+        private int errorCount = 0;
+        private int pairLimit  = 0x10000;
+        UnicodeSet sourceRange;
+        UnicodeSet targetRange;
+        UnicodeSet toSource;
+        UnicodeSet toTarget;
+        UnicodeSet roundtripExclusions;
+        
+        RoundTripTest log;
+        Legal legalSource;
+        UnicodeSet badCharacters;
+    
+        /*
+         * create a test for the given script transliterator.
+         */
+        Test(String transliteratorID) {
+            this.transliteratorID = transliteratorID;
+        }
+    
+        public void setErrorLimit(int limit) {
+            errorLimit = limit;
+        }
+    
+        public void setPairLimit(int limit) {
+            pairLimit = limit;
+        }
+        
+        // Added to do better equality check.
+        
+        public static boolean isSame(String a, String b) {
+            if (a.equals(b)) return true;
+            if (a.equalsIgnoreCase(b) && isCamel(a)) return true;
+            a = Normalizer.normalize(a, Normalizer.NFD);
+            b = Normalizer.normalize(b, Normalizer.NFD);
+            if (a.equals(b)) return true;
+            if (a.equalsIgnoreCase(b) && isCamel(a)) return true;
+            return false;
+        }
+        
+        /*
+        public boolean includesSome(UnicodeSet set, String a) {
+            int cp;
+            for (int i = 0; i < a.length(); i += UTF16.getCharCount(cp)) {
+                cp = UTF16.charAt(a, i);
+                if (set.contains(cp)) return true;
+            }
+            return false;
+        }
+        */
+        
+        public static boolean isCamel(String a) {
+            //System.out.println("CamelTest");
+            // see if string is of the form aB; e.g. lower, then upper or title
+            int cp;
+            boolean haveLower = false;
+            for (int i = 0; i < a.length(); i += UTF16.getCharCount(cp)) {
+                cp = UTF16.charAt(a, i);
+                int t = UCharacter.getType(cp);
+                //System.out.println("\t" + t + " " + Integer.toString(cp,16) + " " + UCharacter.getName(cp));
+                switch (t) {
+                    case Character.UPPERCASE_LETTER:
+                        if (haveLower) return true;
+                        break;
+                    case Character.TITLECASE_LETTER:
+                        if (haveLower) return true;
+                        // drop through, since second letter is lower.
+                    case Character.LOWERCASE_LETTER:
+                        haveLower = true;
+                        break;
+                }
+            }
+            //System.out.println("FALSE");
+            return false;
+        }
+        
+        static final UnicodeSet okAnyway = new UnicodeSet("[^[:Letter:]]");
+        static final UnicodeSet neverOk = new UnicodeSet("[:Other:]");
+      
+        public void test(String sourceRange, String targetRange, 
+          String roundtripExclusions, RoundTripTest log, Legal legalSource) 
+          throws java.io.IOException, java.text.ParseException {
+            test(sourceRange, targetRange, sourceRange, roundtripExclusions, log, legalSource);
+        }
+
+        public void test(String sourceRange, String targetRange, String backtoSourceRange,
+          String roundtripExclusions, RoundTripTest log, Legal legalSource) 
+          throws java.io.IOException, java.text.ParseException {
+            
+            this.legalSource = legalSource;
+            this.sourceRange = new UnicodeSet(sourceRange);
+            this.sourceRange.removeAll(neverOk);
+            
+            this.targetRange = new UnicodeSet(targetRange);
+            this.targetRange.removeAll(neverOk);
+            
+            this.toSource = new UnicodeSet(backtoSourceRange);
+            this.toSource.addAll(okAnyway);
+            
+            this.toTarget = new UnicodeSet(targetRange);
+            this.toTarget.addAll(okAnyway);
+            
+            if (roundtripExclusions != null && roundtripExclusions.length() > 0) {
+                this.roundtripExclusions = new UnicodeSet(roundtripExclusions);
+            }else{
+                this.roundtripExclusions = new UnicodeSet(); // empty
+            }
+
+            this.log = log;
+
+            log.logln(Utility.escape("Source:  " + this.sourceRange));
+            log.logln(Utility.escape("Target:  " + this.targetRange));
+            log.logln(Utility.escape("Exclude: " + this.roundtripExclusions));
+            if (log.isQuick()) log.logln("Abbreviated Test");
+            
+            badCharacters = new UnicodeSet("[:other:]");
+
+            // make a UTF-8 output file we can read with a browser
+
+            // note: check that every transliterator transliterates the null string correctly!
+
+            String logFileName = "test_" + transliteratorID.replace('/', '_') + ".html";
+
+            File lf = new File(logFileName); 
+            log.logln("Creating log file " + lf.getAbsoluteFile());
+
+            out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
+                      new FileOutputStream(logFileName), "UTF8"), 4*1024));
+            //out.write('\uFFEF');    // BOM
+            out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">");
+            out.println("<HTML><HEAD>");
+            out.println("<META content=\"text/html; charset=utf-8\" http-equiv=Content-Type></HEAD>");
+            out.println("<BODY bgcolor='#FFFFFF' style='font-family: Arial Unicode MS'>");
+
+            try {
+                test2();
+            } catch (TestTruncated e) {
+                out.println(e.getMessage());
+            }
+            out.println("</BODY></HTML>");
+            out.close();
+
+            if (errorCount > 0) {
+                log.errln(transliteratorID + " errors: " 
+                    + errorCount + (errorCount > errorLimit ? " (at least!)" : "")
+                    + ", see " + lf.getAbsoluteFile());
+            } else {
+                log.logln(transliteratorID + " ok");
+                new File(logFileName).delete();
+            }
+        }
+        
+        // ok if at least one is not equal
+        public boolean checkIrrelevants(Transliterator t, String irrelevants) {
+            for (int i = 0; i < irrelevants.length(); ++i) {
+                char c = irrelevants.charAt(i);
+                String cs = UTF16.valueOf(c);
+                String targ = t.transliterate(cs);
+                if (cs.equals(targ)) return true;
+            }
+            return false;
+        }
+
+        public void test2() {
+
+            Transliterator sourceToTarget = Transliterator.getInstance(transliteratorID);
+            Transliterator targetToSource = sourceToTarget.getInverse();
+            UnicodeSetIterator usi = new UnicodeSetIterator();
+            UnicodeSetIterator usi2 = new UnicodeSetIterator();
+            
+            log.logln("Checking that at least one irrevant characters is not NFC'ed");
+                
+            String irrelevants = "\u2000\u2001\u2126\u212A\u212B\u2329"; // string is from NFC_NO in the UCD
+                
+            if (!checkIrrelevants(sourceToTarget, irrelevants)) {
+                logFails("Source-Target, Must not NFC everything");
+            }
+            if (!checkIrrelevants(targetToSource, irrelevants)) {
+                logFails("Target-Source, irrelevants");
+            }
+            
+            if (EXTRA_TESTS) {
+                log.logln("Checking that toRules works");
+                String rules = "";
+                Transliterator sourceToTarget2;
+                Transliterator targetToSource2;
+                try {
+                    rules = sourceToTarget.toRules(false);
+                    sourceToTarget2 = Transliterator.createFromRules("s2t2", rules, Transliterator.FORWARD);
+                    if (PRINT_RULES) {
+                        out.println("<h3>Forward Rules:</h3><p>");
+                        out.println(TestUtility.replace(rules, "\n", "<br>\n"));
+                        out.println("</p>");
+                    }
+                    rules = targetToSource.toRules(false);
+                    targetToSource2 = Transliterator.createFromRules("t2s2", rules, Transliterator.FORWARD);
+                    if (PRINT_RULES) {
+                        out.println("<h3>Backward Rules:</h3><p>");
+                        out.println(TestUtility.replace(rules, "\n", "<br>\n"));
+                        out.println("</p>");
+                    }
+                } catch (RuntimeException e) {
+                    out.println("<h3>Broken Rules:</h3><p>");
+                    out.println(TestUtility.replace(rules, "\n", "<br>\n"));
+                    out.println("</p>");
+                    out.flush();
+                    throw e;
+                }
+                
+                usi.reset(sourceRange);
+                while (usi.next()) {
+                    int c = usi.codepoint;
+                    
+                    String cs = UTF16.valueOf(c);
+                    String targ = sourceToTarget.transliterate(cs);
+                    String targ2 = sourceToTarget2.transliterate(cs);
+                    if (!targ.equals(targ2)) {
+                        logToRulesFails("Source-Target, toRules", cs, targ, targ2);
+                    }
+                }
+                
+                usi.reset(targetRange);
+                while (usi.next()) {
+                    int c = usi.codepoint;
+                    
+                    String cs = UTF16.valueOf(c);
+                    String targ = targetToSource.transliterate(cs);
+                    String targ2 = targetToSource2.transliterate(cs);
+                    if (!targ.equals(targ2)) {
+                        logToRulesFails("Target-Source, toRules", cs, targ, targ2);
+                    }
+                }
+            }
+            
+
+            log.logln("Checking that source characters convert to target - Singles");
+            
+            UnicodeSet failSourceTarg = new UnicodeSet();
+
+            /*
+            for (char c = 0; c < 0xFFFF; ++c) {
+                if (!sourceRange.contains(c)) continue;
+                */
+            usi.reset(sourceRange);
+            while (usi.next()) {
+                int c = usi.codepoint;
+                
+                String cs = UTF16.valueOf(c);
+                String targ = sourceToTarget.transliterate(cs);
+                if (!toTarget.containsAll(targ) 
+                        || badCharacters.containsSome(targ)) {
+                    String targD = Normalizer.normalize(targ, Normalizer.NFD);
+                    if (!toTarget.containsAll(targD) 
+                            || badCharacters.containsSome(targD)) {
+                        logWrongScript("Source-Target", cs, targ);
+                        failSourceTarg.add(c);
+                        continue;
+                    }
+                }
+                
+                String cs2 = Normalizer.normalize(cs, Normalizer.NFD);
+                String targ2 = sourceToTarget.transliterate(cs2);
+                if (!targ.equals(targ2)) {
+                    logNotCanonical("Source-Target", cs, targ, cs2, targ2);
+                }
+            }
+
+            log.logln("Checking that source characters convert to target - Doubles");
+            
+            /*
+            for (char c = 0; c < 0xFFFF; ++c) { 
+                if (TestUtility.isUnassigned(c) ||
+                    !sourceRange.contains(c)) continue;
+                if (failSourceTarg.get(c)) continue;
+                
+            */
+            
+            UnicodeSet sourceRangeMinusFailures = new UnicodeSet(sourceRange);
+            sourceRangeMinusFailures.removeAll(failSourceTarg);
+            
+            boolean skipSome = log.getInclusion() < 10;
+            
+            usi.reset(sourceRangeMinusFailures);
+            usi.setAbbreviated(skipSome);
+            
+            while (usi.next()) {
+                int c = usi.codepoint;
+             
+                /*
+                for (char d = 0; d < 0xFFFF; ++d) {
+                    if (TestUtility.isUnassigned(d) ||
+                        !sourceRange.contains(d)) continue;
+                    if (failSourceTarg.get(d)) continue;
+                */
+                usi2.reset(sourceRangeMinusFailures);
+            	usi2.setAbbreviated(skipSome);
+                
+                while (usi2.next()) {
+                    int d = usi2.codepoint;
+                    
+                    String cs = UTF16.valueOf(c) + UTF16.valueOf(d);
+                    String targ = sourceToTarget.transliterate(cs);
+                    if (!toTarget.containsAll(targ) 
+                            || badCharacters.containsSome(targ)) {
+                        String targD = Normalizer.normalize(targ, Normalizer.NFD);
+                        if (!toTarget.containsAll(targD) 
+                                || badCharacters.containsSome(targD)) {
+                            logWrongScript("Source-Target", cs, targ);
+                            continue;
+                        }
+                    }
+                    String cs2 = Normalizer.normalize(cs, Normalizer.NFD);
+                    String targ2 = sourceToTarget.transliterate(cs2);
+                    if (!targ.equals(targ2)) {
+                        logNotCanonical("Source-Target", cs, targ, cs2, targ2);
+                    }
+                }
+            }
+
+            log.logln("Checking that target characters convert to source and back - Singles");
+            
+            UnicodeSet failTargSource = new UnicodeSet();
+            UnicodeSet failRound = new UnicodeSet();
+
+            /*for (char c = 0; c < 0xFFFF; ++c) {
+                if (TestUtility.isUnassigned(c) ||
+                    !targetRange.contains(c)) continue;
+                    */
+                    
+            usi.reset(targetRange);
+            while (usi.next()) {
+                String cs;
+                int c;
+                if(usi.codepoint == usi.IS_STRING){
+                    cs = usi.string;
+                    c = UTF16.charAt(cs,0);
+                }else{
+                    c = usi.codepoint;
+                    cs =UTF16.valueOf(c);
+                }
+                    
+                String targ = targetToSource.transliterate(cs);
+                String reverse = sourceToTarget.transliterate(targ);
+                
+                if (!toSource.containsAll(targ) 
+                        || badCharacters.containsSome(targ)) {
+                    String targD = Normalizer.normalize(targ, Normalizer.NFD);
+                    if (!toSource.containsAll(targD) 
+                            || badCharacters.containsSome(targD)) {
+                        logWrongScript("Target-Source", cs, targ);
+                        failTargSource.add(cs);
+                        continue;
+                    }
+                }
+                if (!isSame(cs, reverse) && !roundtripExclusions.contains(c)
+                    && !roundtripExclusions.contains(cs)) {
+                    logRoundTripFailure(cs,targetToSource.getID(), targ,sourceToTarget.getID(), reverse);
+                    failRound.add(c);
+                    continue;
+                }
+                String targ2 = Normalizer.normalize(targ, Normalizer.NFD);
+                String reverse2 = sourceToTarget.transliterate(targ2);
+                if (!reverse.equals(reverse2)) {
+                    logNotCanonical("Target-Source", targ, reverse, targ2, reverse2);
+                }
+            }
+
+            log.logln("Checking that target characters convert to source and back - Doubles");
+            int count = 0;
+            
+            UnicodeSet targetRangeMinusFailures = new UnicodeSet(targetRange);
+            targetRangeMinusFailures.removeAll(failTargSource);
+            targetRangeMinusFailures.removeAll(failRound);
+            
+            //char[] buf = new char[4]; // maximum we can have with 2 code points
+            /*
+            for (char c = 0; c < 0xFFFF; ++c) {
+                if (TestUtility.isUnassigned(c) ||
+                    !targetRange.contains(c)) continue;
+                    */
+            
+            usi.reset(targetRangeMinusFailures);
+            usi.setAbbreviated(skipSome);
+            	
+            while (usi.next()) {
+                int c = usi.codepoint;
+                
+                if (++count > pairLimit) {
+                    throw new TestTruncated("Test truncated at " + pairLimit + " x 64k pairs");
+                }
+                log.log(TestUtility.hex(c));
+                
+                /*
+                for (char d = 0; d < 0xFFFF; ++d) {
+                    if (TestUtility.isUnassigned(d) ||
+                        !targetRange.contains(d)) continue;
+                        */
+                usi2.reset(targetRangeMinusFailures);
+            	usi2.setAbbreviated(skipSome);
+            	
+            	while (usi2.next()) {
+                    int d = usi2.codepoint;
+                    if (d < 0) break;
+                    
+                    String cs = UTF16.valueOf(c) + UTF16.valueOf(d);
+                    String targ = targetToSource.transliterate(cs);
+                    String reverse = sourceToTarget.transliterate(targ);
+                    
+                    if (!toSource.containsAll(targ) /*&& !failTargSource.contains(c) && !failTargSource.contains(d)*/
+                            || badCharacters.containsSome(targ)) {
+                        String targD = Normalizer.normalize(targ, Normalizer.NFD);
+                        if (!toSource.containsAll(targD) /*&& !failTargSource.contains(c) && !failTargSource.contains(d)*/
+                                || badCharacters.containsSome(targD)) {
+                            logWrongScript("Target-Source", cs, targ);
+                            continue;
+                        }
+                    }
+                    if (!isSame(cs, reverse) /*&& !failRound.contains(c) && !failRound.contains(d)*/
+                         && !roundtripExclusions.contains(c) 
+                         && !roundtripExclusions.contains(d) 
+                         && !roundtripExclusions.contains(cs)) {
+                        logRoundTripFailure(cs,targetToSource.getID(), targ,sourceToTarget.getID(), reverse);
+                        continue;
+                    }
+                    String targ2 = Normalizer.normalize(targ, Normalizer.NFD);
+                    String reverse2 = sourceToTarget.transliterate(targ2);
+                    if (!reverse.equals(reverse2)) {
+                        logNotCanonical("Target-Source", targ, reverse, targ2, reverse2);
+                    }
+                }
+            }
+            log.logln("");
+        }
+
+        final void logWrongScript(String label, String from, String to) {
+            if (++errorCount > errorLimit) {
+                throw new TestTruncated("Test truncated; too many failures");
+            }
+            out.println("<br>Fail " + label + ": \u200E" +
+                        from + "\u200E (" +
+                        TestUtility.hex(from) + ") => \u200E" +
+                        to + "\u200E (" +
+                        TestUtility.hex(to) + ")"
+                        );
+        }
+
+        final void logNotCanonical(String label, String from, String to, String fromCan, String toCan) {
+            if (++errorCount > errorLimit) {
+                throw new TestTruncated("Test truncated; too many failures");
+            }
+            out.println("<br>Fail (can.equiv) " + label + ": \u200E" +
+                        from + "\u200E (" +
+                        TestUtility.hex(from) + ") => \u200E" +
+                        to + "\u200E (" +
+                        TestUtility.hex(to) + ")" +
+                        " -- \u200E" +
+                        fromCan + "\u200E (" +
+                        TestUtility.hex(fromCan) + ") => \u200E" +
+                        toCan + "\u200E (" +
+                        TestUtility.hex(toCan) + ")"
+                        );
+        }
+        
+        final void logFails(String label) {
+            if (++errorCount > errorLimit) {
+                throw new TestTruncated("Test truncated; too many failures");
+            }
+            out.println("<br>Fail (can.equiv)" + label);
+        }
+
+        final void logToRulesFails(String label, String from, String to, String toCan) {
+            if (++errorCount > errorLimit) {
+                throw new TestTruncated("Test truncated; too many failures");
+            }
+            out.println("<br>Fail (can.equiv) " + label + ": \u200E" +
+                        from + "\u200E (" +
+                        TestUtility.hex(from) + ") => \u200E" +
+                        to + "\u200E (" +
+                        TestUtility.hex(to) + ")\u200E" +
+                        toCan + "\u200E (" +
+                        TestUtility.hex(toCan) + ")"
+                        );
+        }
+
+        final void logRoundTripFailure(String from,String toID, String to,String backID, String back) {
+            if (!legalSource.is(from)) return; // skip illegals
+            
+            if (++errorCount > errorLimit) {
+                throw new TestTruncated("Test truncated; too many failures");
+            }
+            out.println("<br>Fail Roundtrip: \u200E" + 
+                        from + "\u200E (" +
+                        TestUtility.hex(from) + ") "+toID+"=> \u200E" +
+                        to + "\u200E (" +
+                        TestUtility.hex(to) + ") " + backID+"=> \u200E" +
+                        back + "\u200E (" +
+                        TestUtility.hex(back) + ")" 
+                        );
+        }
+
+        /*
+         * Characters to filter for source-target mapping completeness
+         * Typically is base alphabet, minus extended characters
+         * Default is ASCII letters for Latin
+         */
+         /*
+        public boolean isSource(char c) {
+            if (!sourceRange.contains(c)) return false;
+            return true;
+        }
+        */
+
+        /*
+         * Characters to check for target back to source mapping.
+         * Typically the same as the target script, plus punctuation
+         */
+         /*
+        public boolean isReceivingSource(char c) {
+            if (!targetRange.contains(c)) return false;
+            return true;
+        }
+        */
+        /*
+         * Characters to filter for target-source mapping
+         * Typically is base alphabet, minus extended characters
+         */
+         /*
+        public boolean isTarget(char c) {
+            byte script = TestUtility.getScript(c);
+            if (script != targetScript) return false;
+            if (!TestUtility.isLetter(c)) return false;
+            if (targetRange != null && !targetRange.contains(c)) return false;
+            return true;
+        }
+        */
+        
+        /*
+         * Characters to check for target-source mapping
+         * Typically the same as the source script, plus punctuation
+         */
+        /*
+        public boolean isReceivingTarget(char c) {
+            byte script = TestUtility.getScript(c);
+            return (script == targetScript || script == TestUtility.COMMON_SCRIPT);
+        }
+
+        final boolean isSource(String s) {
+            for (int i = 0; i < s.length(); ++i) {
+                if (!isSource(s.charAt(i))) return false;
+            }
+            return true;
+        }
+
+        final boolean isTarget(String s) {
+            for (int i = 0; i < s.length(); ++i) {
+                if (!isTarget(s.charAt(i))) return false;
+            }
+            return true;
+        }
+
+        final boolean isReceivingSource(String s) {
+            for (int i = 0; i < s.length(); ++i) {
+                if (!isReceivingSource(s.charAt(i))) return false;
+            }
+            return true;
+        }
+
+        final boolean isReceivingTarget(String s) {
+            for (int i = 0; i < s.length(); ++i) {
+                if (!isReceivingTarget(s.charAt(i))) return false;
+            }
+            return true;
+        }
+        */
+
+        static class TestTruncated extends RuntimeException {
+            TestTruncated(String msg) {
+                super(msg);
+            }
+        }
+    }
+
+//  static class TestHangul extends Test {
+//      TestHangul () {
+//          super("Jamo-Hangul", TestUtility.JAMO_SCRIPT, TestUtility.HANGUL_SCRIPT);
+//      }
+//
+//      public boolean isSource(char c) {
+//          if (0x1113 <= c && c <= 0x1160) return false;
+//          if (0x1176 <= c && c <= 0x11F9) return false;
+//          if (0x3131 <= c && c <= 0x318E) return false;
+//          return super.isSource(c);
+//      }
+//  }
+}
diff --git a/src/com/ibm/icu/dev/test/translit/TestUtility.java b/src/com/ibm/icu/dev/test/translit/TestUtility.java
new file mode 100755
index 0000000..81d6f22
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/TestUtility.java
@@ -0,0 +1,453 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/translit/TestUtility.java,v $
+ * $Date: 2002/08/13 22:07:57 $
+ * $Revision: 1.10 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+
+public final class TestUtility {
+
+	public static String hex(char ch) {
+		String foo = Integer.toString(ch,16).toUpperCase();
+		return "0000".substring(0,4-foo.length()) + foo;
+	}
+    
+	public static String hex(int ch) {
+		String foo = Integer.toString(ch,16).toUpperCase();
+		return "00000000".substring(0,4-foo.length()) + foo;
+	}
+    
+	public static String hex(String s) {
+	  return hex(s,",");
+	}
+	
+	public static String hex(String s, String sep) {
+	  if (s.length() == 0) return "";
+	  String result = hex(s.charAt(0));
+	  for (int i = 1; i < s.length(); ++i) {
+	    result += sep;
+	    result += hex(s.charAt(i));
+	  }
+	  return result;
+	}
+	
+	public static String replace(String source, String toBeReplaced, String replacement) {
+	    StringBuffer results = new StringBuffer();
+	    int len = toBeReplaced.length();
+	    for (int i = 0; i < source.length(); ++i) {
+	        if (source.regionMatches(false, i, toBeReplaced, 0, len)) {
+	            results.append(replacement);
+	            i += len - 1; // minus one, since we will increment
+	        } else {
+	            results.append(source.charAt(i));
+	        }
+	    }
+	    return results.toString();
+	}
+	
+	public static String replaceAll(String source, UnicodeSet set, String replacement) {
+	    StringBuffer results = new StringBuffer();
+	    int cp;
+	    for (int i = 0; i < source.length(); i += UTF16.getCharCount(cp)) {
+	        cp = UTF16.charAt(source,i);
+	        if (set.contains(cp)) {
+	            results.append(replacement);
+	        } else {
+	            UTF16.append(results, cp);
+	        }
+	    }
+	    return results.toString();
+	}
+	
+    // COMMENTED OUT ALL THE OLD SCRIPT STUFF
+    /*
+    public static byte getScript(char c) {
+      return getScript(getBlock(c));
+    }
+    
+    public static byte getScript(byte block) {
+      return blockToScript[block];
+    }
+    
+    public static byte getBlock(char c) {
+      int index = c >> 7;
+      byte block = charToBlock[index];
+      while (block < 0) { // take care of exceptions, blocks split across 128 boundaries
+          int[] tuple = split[-block-1];
+          if (c < tuple[0]) block = (byte)tuple[1];
+          else block = (byte)tuple[2];
+      }
+      return block;
+    }
+               
+    // returns next letter of script, or 0xFFFF if done
+    
+    public static char getNextLetter(char c, byte script) {
+        while (c < 0xFFFF) {
+            ++c;
+            if (getScript(c) == script && Character.isLetter(c)) {
+                return c;
+            }
+        }
+        return c;
+    }
+    
+    // Supplements to Character methods; these methods go through
+    // UCharacter if possible.  If not, they fall back to Character.
+
+    public static boolean isUnassigned(char c) {
+        try {
+            return UCharacter.getType(c) == UCharacterCategory.UNASSIGNED;
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        return Character.getType(c) == Character.UNASSIGNED;
+    }
+
+    public static boolean isLetter(char c) {
+        try {
+            return UCharacter.isLetter(c);
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        return Character.isLetter(c);
+    }
+
+  public static void main(String[] args) {
+    System.out.println("Blocks: ");
+    byte lastblock = -128;
+    for (char cc = 0; cc < 0xFFFF; ++cc) {
+      byte block = TestUtility.getBlock(cc);
+      if (block != lastblock) {
+        System.out.println(TestUtility.hex(cc) + "\t" + block);
+        lastblock = block;
+      }
+    }
+    System.out.println();
+    System.out.println("Scripts: ");
+    byte lastScript = -128;
+    for (char cc = 0; cc < 0xFFFF; ++cc) {
+      byte script = TestUtility.getScript(cc);
+      if (script != lastScript) {
+        System.out.println(TestUtility.hex(cc) + "\t" + script);
+        lastScript = script;
+      }
+    }
+  }
+      
+	
+    
+    public static final byte // SCRIPT CODE
+        COMMON_SCRIPT = 0,
+        LATIN_SCRIPT = 1,
+        GREEK_SCRIPT = 2,
+        CYRILLIC_SCRIPT = 3,
+        ARMENIAN_SCRIPT = 4,
+        HEBREW_SCRIPT = 5,
+        ARABIC_SCRIPT = 6,
+        SYRIAC_SCRIPT = 7,
+        THAANA_SCRIPT = 8, 
+        DEVANAGARI_SCRIPT = 9,
+        BENGALI_SCRIPT = 10,
+        GURMUKHI_SCRIPT = 11,
+        GUJARATI_SCRIPT = 12,
+        ORIYA_SCRIPT = 13,
+        TAMIL_SCRIPT = 14,
+        TELUGU_SCRIPT = 15,
+        KANNADA_SCRIPT = 16,
+        MALAYALAM_SCRIPT = 17,
+        SINHALA_SCRIPT = 18,
+        THAI_SCRIPT = 19,
+        LAO_SCRIPT = 20,
+        TIBETAN_SCRIPT = 21,
+        MYANMAR_SCRIPT = 22,
+        GEORGIAN_SCRIPT = 23,
+        JAMO_SCRIPT = 24,
+        HANGUL_SCRIPT = 25,
+        ETHIOPIC_SCRIPT = 26,
+        CHEROKEE_SCRIPT = 27,
+        ABORIGINAL_SCRIPT = 28,
+        OGHAM_SCRIPT = 29,
+        RUNIC_SCRIPT = 30,
+        KHMER_SCRIPT = 31,
+        MONGOLIAN_SCRIPT = 32,
+        HIRAGANA_SCRIPT = 33,
+        KATAKANA_SCRIPT = 34,
+        BOPOMOFO_SCRIPT = 35,
+        HAN_SCRIPT = 36,
+        YI_SCRIPT = 37;
+    
+    public static final byte // block code
+        RESERVED_BLOCK = 0,
+        BASIC_LATIN = 1,
+        LATIN_1_SUPPLEMENT = 2,
+        LATIN_EXTENDED_A = 3,
+        LATIN_EXTENDED_B = 4,
+        IPA_EXTENSIONS = 5,
+        SPACING_MODIFIER_LETTERS = 6,
+        COMBINING_DIACRITICAL_MARKS = 7,
+        GREEK = 8,
+        CYRILLIC = 9,
+        ARMENIAN = 10,
+        HEBREW = 11,
+        ARABIC = 12,
+        SYRIAC = 13,
+        THAANA = 14,
+        DEVANAGARI = 15,
+        BENGALI = 16,
+        GURMUKHI = 17,
+        GUJARATI = 18,
+        ORIYA = 19,
+        TAMIL = 20,
+        TELUGU = 21,
+        KANNADA = 22,
+        MALAYALAM = 23,
+        SINHALA = 24,
+        THAI = 25,
+        LAO = 26,
+        TIBETAN = 27,
+        MYANMAR = 28,
+        GEORGIAN = 29,
+        HANGUL_JAMO = 30,
+        ETHIOPIC = 31,
+        CHEROKEE = 32,
+        UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS = 33,
+        OGHAM = 34,
+        RUNIC = 35,
+        KHMER = 36,
+        MONGOLIAN = 37,
+        LATIN_EXTENDED_ADDITIONAL = 38,
+        GREEK_EXTENDED = 39,
+        GENERAL_PUNCTUATION = 40,
+        SUPERSCRIPTS_AND_SUBSCRIPTS = 41,
+        CURRENCY_SYMBOLS = 42,
+        COMBINING_MARKS_FOR_SYMBOLS = 43,
+        LETTERLIKE_SYMBOLS = 44,
+        NUMBER_FORMS = 45,
+        ARROWS = 46,
+        MATHEMATICAL_OPERATORS = 47,
+        MISCELLANEOUS_TECHNICAL = 48,
+        CONTROL_PICTURES = 49,
+        OPTICAL_CHARACTER_RECOGNITION = 50,
+        ENCLOSED_ALPHANUMERICS = 51,
+        BOX_DRAWING = 52,
+        BLOCK_ELEMENTS = 53,
+        GEOMETRIC_SHAPES = 54,
+        MISCELLANEOUS_SYMBOLS = 55,
+        DINGBATS = 56,
+        BRAILLE_PATTERNS = 57,
+        CJK_RADICALS_SUPPLEMENT = 58,
+        KANGXI_RADICALS = 59,
+        IDEOGRAPHIC_DESCRIPTION_CHARACTERS = 60,
+        CJK_SYMBOLS_AND_PUNCTUATION = 61,
+        HIRAGANA = 62,
+        KATAKANA = 63,
+        BOPOMOFO = 64,
+        HANGUL_COMPATIBILITY_JAMO = 65,
+        KANBUN = 66,
+        BOPOMOFO_EXTENDED = 67,
+        ENCLOSED_CJK_LETTERS_AND_MONTHS = 68,
+        CJK_COMPATIBILITY = 69,
+        CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A = 70,
+        CJK_UNIFIED_IDEOGRAPHS = 71,
+        YI_SYLLABLES = 72,
+        YI_RADICALS = 73,
+        HANGUL_SYLLABLES = 74,
+        HIGH_SURROGATES = 75,
+        HIGH_PRIVATE_USE_SURROGATES = 76,
+        LOW_SURROGATES = 77,
+        PRIVATE_USE = 78,
+        CJK_COMPATIBILITY_IDEOGRAPHS = 79,
+        ALPHABETIC_PRESENTATION_FORMS = 80,
+        ARABIC_PRESENTATION_FORMS_A = 81,
+        COMBINING_HALF_MARKS = 82,
+        CJK_COMPATIBILITY_FORMS = 83,
+        SMALL_FORM_VARIANTS = 84,
+        ARABIC_PRESENTATION_FORMS_B = 85,
+        SPECIALS = 86,
+        HALFWIDTH_AND_FULLWIDTH_FORMS = 87;
+        
+    static final byte[] blockToScript = {
+        COMMON_SCRIPT, // 0, <RESERVED_BLOCK>
+        LATIN_SCRIPT, // 1, BASIC_LATIN
+        LATIN_SCRIPT, // 2, LATIN_1_SUPPLEMENT
+        LATIN_SCRIPT, // 3, LATIN_EXTENDED_A
+        LATIN_SCRIPT, // 4, LATIN_EXTENDED_B
+        LATIN_SCRIPT, // 5, IPA_EXTENSIONS
+        COMMON_SCRIPT, // 6, SPACING_MODIFIER_LETTERS
+        COMMON_SCRIPT, // 7, COMBINING_DIACRITICAL_MARKS
+        GREEK_SCRIPT, // 8, GREEK
+        CYRILLIC_SCRIPT, // 9, CYRILLIC
+        ARMENIAN_SCRIPT, // 10, ARMENIAN
+        HEBREW_SCRIPT, // 11, HEBREW
+        ARABIC_SCRIPT, // 12, ARABIC
+        SYRIAC_SCRIPT, // 13, SYRIAC
+        THAANA_SCRIPT, // 14, THAANA
+        DEVANAGARI_SCRIPT, // 15, DEVANAGARI
+        BENGALI_SCRIPT, // 16, BENGALI
+        GURMUKHI_SCRIPT, // 17, GURMUKHI
+        GUJARATI_SCRIPT, // 18, GUJARATI
+        ORIYA_SCRIPT, // 19, ORIYA
+        TAMIL_SCRIPT, // 20, TAMIL
+        TELUGU_SCRIPT, // 21, TELUGU
+        KANNADA_SCRIPT, // 22, KANNADA
+        MALAYALAM_SCRIPT, // 23, MALAYALAM
+        SINHALA_SCRIPT, // 24, SINHALA
+        THAI_SCRIPT, // 25, THAI
+        LAO_SCRIPT, // 26, LAO
+        TIBETAN_SCRIPT, // 27, TIBETAN
+        MYANMAR_SCRIPT, // 28, MYANMAR
+        GEORGIAN_SCRIPT, // 29, GEORGIAN
+        JAMO_SCRIPT, // 30, HANGUL_JAMO
+        ETHIOPIC_SCRIPT, // 31, ETHIOPIC
+        CHEROKEE_SCRIPT, // 32, CHEROKEE
+        ABORIGINAL_SCRIPT, // 33, UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS
+        OGHAM_SCRIPT, // 34, OGHAM
+        RUNIC_SCRIPT, // 35, RUNIC
+        KHMER_SCRIPT, // 36, KHMER
+        MONGOLIAN_SCRIPT, // 37, MONGOLIAN
+        LATIN_SCRIPT, // 38, LATIN_EXTENDED_ADDITIONAL
+        GREEK_SCRIPT, // 39, GREEK_EXTENDED
+        COMMON_SCRIPT, // 40, GENERAL_PUNCTUATION
+        COMMON_SCRIPT, // 41, SUPERSCRIPTS_AND_SUBSCRIPTS
+        COMMON_SCRIPT, // 42, CURRENCY_SYMBOLS
+        COMMON_SCRIPT, // 43, COMBINING_MARKS_FOR_SYMBOLS
+        COMMON_SCRIPT, // 44, LETTERLIKE_SYMBOLS
+        COMMON_SCRIPT, // 45, NUMBER_FORMS
+        COMMON_SCRIPT, // 46, ARROWS
+        COMMON_SCRIPT, // 47, MATHEMATICAL_OPERATORS
+        COMMON_SCRIPT, // 48, MISCELLANEOUS_TECHNICAL
+        COMMON_SCRIPT, // 49, CONTROL_PICTURES
+        COMMON_SCRIPT, // 50, OPTICAL_CHARACTER_RECOGNITION
+        COMMON_SCRIPT, // 51, ENCLOSED_ALPHANUMERICS
+        COMMON_SCRIPT, // 52, BOX_DRAWING
+        COMMON_SCRIPT, // 53, BLOCK_ELEMENTS
+        COMMON_SCRIPT, // 54, GEOMETRIC_SHAPES
+        COMMON_SCRIPT, // 55, MISCELLANEOUS_SYMBOLS
+        COMMON_SCRIPT, // 56, DINGBATS
+        COMMON_SCRIPT, // 57, BRAILLE_PATTERNS
+        HAN_SCRIPT, // 58, CJK_RADICALS_SUPPLEMENT
+        HAN_SCRIPT, // 59, KANGXI_RADICALS
+        HAN_SCRIPT, // 60, IDEOGRAPHIC_DESCRIPTION_CHARACTERS
+        COMMON_SCRIPT, // 61, CJK_SYMBOLS_AND_PUNCTUATION
+        HIRAGANA_SCRIPT, // 62, HIRAGANA
+        KATAKANA_SCRIPT, // 63, KATAKANA
+        BOPOMOFO_SCRIPT, // 64, BOPOMOFO
+        JAMO_SCRIPT, // 65, HANGUL_COMPATIBILITY_JAMO
+        HAN_SCRIPT, // 66, KANBUN
+        BOPOMOFO_SCRIPT, // 67, BOPOMOFO_EXTENDED
+        COMMON_SCRIPT, // 68, ENCLOSED_CJK_LETTERS_AND_MONTHS
+        COMMON_SCRIPT, // 69, CJK_COMPATIBILITY
+        HAN_SCRIPT, // 70, CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
+        HAN_SCRIPT, // 71, CJK_UNIFIED_IDEOGRAPHS
+        YI_SCRIPT, // 72, YI_SYLLABLES
+        YI_SCRIPT, // 73, YI_RADICALS
+        HANGUL_SCRIPT, // 74, HANGUL_SYLLABLES
+        COMMON_SCRIPT, // 75, HIGH_SURROGATES
+        COMMON_SCRIPT, // 76, HIGH_PRIVATE_USE_SURROGATES
+        COMMON_SCRIPT, // 77, LOW_SURROGATES
+        COMMON_SCRIPT, // 78, PRIVATE_USE
+        HAN_SCRIPT, // 79, CJK_COMPATIBILITY_IDEOGRAPHS
+        COMMON_SCRIPT, // 80, ALPHABETIC_PRESENTATION_FORMS
+        ARABIC_SCRIPT, // 81, ARABIC_PRESENTATION_FORMS_A
+        COMMON_SCRIPT, // 82, COMBINING_HALF_MARKS
+        COMMON_SCRIPT, // 83, CJK_COMPATIBILITY_FORMS
+        COMMON_SCRIPT, // 84, SMALL_FORM_VARIANTS
+        ARABIC_SCRIPT, // 85, ARABIC_PRESENTATION_FORMS_B
+        COMMON_SCRIPT, // 86, SPECIALS
+        COMMON_SCRIPT, // 87, HALFWIDTH_AND_FULLWIDTH_FORMS
+        COMMON_SCRIPT, // 88, SPECIALS
+    };
+        
+    // could be further reduced to a byte array, but I didn't bother.
+    static final int[][] split = {
+        {0x0250, 4, 5}, // -1
+        {0x02B0, 5, 6}, // -2
+        {0x0370, 7, 8}, // -3
+        {0x0530, 0, 10}, // -4
+        {0x0590, 10, 11}, // -5
+        {0x0750, 13, 0}, // -6
+        {0x07C0, 14, 0}, // -7
+        {0x10A0, 28, 29}, // -8
+        {0x13A0, 0, 32}, // -9
+        {0x16A0, 34, 35}, // -10
+        {0x18B0, 37, 0}, // -11
+        {0x2070, 40, 41}, // -12
+        {0x20A0, 41, -31}, // -13
+        {0x2150, 44, 45}, // -14
+        {0x2190, 45, 46}, // -15
+        {0x2440, 49, -32}, // -16
+        {0x25A0, 53, 54}, // -17
+        {0x27C0, 56, 0}, // -18
+        {0x2FE0, 59, -33}, // -19
+        {0x3040, 61, 62}, // -20
+        {0x30A0, 62, 63}, // -21
+        {0x3130, 64, 65}, // -22
+        {0x3190, 65, -34}, // -23
+        {0x4DB6, 70, 0}, // -24
+        {0xA490, 72, -35}, // -25
+        {0xD7A4, 74, 0}, // -26
+        {0xFB50, 80, 81}, // -27
+        {0xFE20, 0, -36}, // -28
+        {0xFEFF, 85, 86}, // -29
+        {0xFFF0, 87, -37}, // -30
+        {0x20D0, 42, 43}, // -31
+        {0x2460, 50, 51}, // -32
+        {0x2FF0, 0, 60}, // -33
+        {0x31A0, 66, -38}, // -34
+        {0xA4D0, 73, 0}, //-35
+        {0xFE30, 82, -39}, //-36
+        {0xFFFE, 88, 0}, //-37
+        {0x31C0, 67, 0}, // -38
+        {0xFE50, 83, -40}, //-39
+        {0xFE70, 84, 85} // -40
+    };
+        
+    static final byte[] charToBlock = {
+      1, 2, 3, 4, -1, -2, -3, 8, 9, 9, -4, -5, 12, 12, -6, -7,
+      0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 27,
+      28, -8, 30, 30, 31, 31, 31, -9, 33, 33, 33, 33, 33, -10, 0, 36,
+      37, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 38, 39, 39,
+      -12, -13, -14, -15, 47, 47, 48, 48, -16, 51, 52, -17, 55, 55, 56, -18,
+      57, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 59, -19,
+      -20, -21, -22, -23, 68, 68, 69, 69, 70, 70, 70, 70, 70, 70, 70, 70,
+      70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+      70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+      70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, -24, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, -25, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 74, 74, 74, 74, 74, 74, 74, 74,
+      74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+      74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+      74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+      74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+      74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, -26,
+      75, 75, 75, 75, 75, 75, 75, 76, 77, 77, 77, 77, 77, 77, 77, 77,
+      78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+      78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+      78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+      78, 78, 79, 79, 79, 79, -27, 81, 81, 81, 81, 81, -28, -29, 87, -30
+    };
+    */
+}
diff --git a/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java b/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java
new file mode 100755
index 0000000..15a0400
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java
@@ -0,0 +1,2844 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java,v $
+ * $Date: 2002/08/02 21:18:44 $
+ * $Revision: 1.115 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.CaseInsensitiveString;
+import java.util.*;
+
+/***********************************************************************
+
+                     HOW TO USE THIS TEST FILE
+                               -or-
+                  How I developed on two platforms
+                without losing (too much of) my mind
+
+
+1. Add new tests by copying/pasting/changing existing tests.  On Java,
+   any public void method named Test...() taking no parameters becomes
+   a test.  On C++, you need to modify the header and add a line to
+   the runIndexedTest() dispatch method.
+
+2. Make liberal use of the expect() method; it is your friend.
+
+3. The tests in this file exactly match those in a sister file on the
+   other side.  The two files are:
+
+   icu4j:  src/com.ibm.icu.dev.test/translit/TransliteratorTest.java
+   icu4c:  source/test/intltest/transtst.cpp
+
+                  ==> THIS IS THE IMPORTANT PART <==
+
+   When you add a test in this file, add it in transtst.cpp too.
+   Give it the same name and put it in the same relative place.  This
+   makes maintenance a lot simpler for any poor soul who ends up
+   trying to synchronize the tests between icu4j and icu4c.
+
+4. If you MUST enter a test that is NOT paralleled in the sister file,
+   then add it in the special non-mirrored section.  These are
+   labeled
+
+     "icu4j ONLY"
+
+   or
+
+     "icu4c ONLY"
+
+   Make sure you document the reason the test is here and not there.
+
+
+Thank you.
+The Management
+***********************************************************************/
+
+/**
+ * @test
+ * @summary General test of Transliterator
+ */
+public class TransliteratorTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new TransliteratorTest().run(args);
+    }
+
+    public void TestInstantiation() {
+        long ms = System.currentTimeMillis();
+        String ID;
+        for (Enumeration e = Transliterator.getAvailableIDs(); e.hasMoreElements(); ) {
+            ID = (String) e.nextElement();
+            if (ID.equals("Latin-Han/definition")) {
+                System.out.println("\nTODO: disabling Latin-Han/definition check for now: fix later");
+                continue;
+            }
+            Transliterator t = null;
+            try {
+                t = Transliterator.getInstance(ID);
+                // We should get a new instance if we try again
+                Transliterator t2 = null;
+                // This is true only of RBT
+                if (t instanceof RuleBasedTransliterator) {
+                    t = Transliterator.getInstance(ID);
+                }
+                if (t != t2) {
+                    logln("OK: " + Transliterator.getDisplayName(ID) + " (" + ID + "): " + t);
+                } else {
+                    errln("FAIL: " + ID + " returned identical instances");
+                    t = null;
+                }
+            } catch (IllegalArgumentException ex) {
+                errln("FAIL: " + ID);
+                throw ex;
+            }
+
+            if (t != null) {
+                // Now test toRules
+                String rules = null;
+                try {
+                    rules = t.toRules(true);
+
+                    Transliterator u = Transliterator.createFromRules("x",
+                                           rules, Transliterator.FORWARD);
+                } catch (IllegalArgumentException ex2) {
+                    errln("FAIL: " + ID + ".toRules() => bad rules: " +
+                          rules);
+                    throw ex2;
+                }
+            }
+        }
+
+        // Now test the failure path
+        try {
+            ID = "<Not a valid Transliterator ID>";
+            Transliterator t = Transliterator.getInstance(ID);
+            errln("FAIL: " + ID + " returned " + t);
+        } catch (IllegalArgumentException ex) {
+            logln("OK: Bogus ID handled properly");
+        }
+
+        ms = System.currentTimeMillis() - ms;
+        logln("Elapsed time: " + ms + " ms");
+    }
+
+    public void TestSimpleRules() {
+        /* Example: rules 1. ab>x|y
+         *                2. yc>z
+         *
+         * []|eabcd  start - no match, copy e to tranlated buffer
+         * [e]|abcd  match rule 1 - copy output & adjust cursor
+         * [ex|y]cd  match rule 2 - copy output & adjust cursor
+         * [exz]|d   no match, copy d to transliterated buffer
+         * [exzd]|   done
+         */
+        expect("ab>x|y;" +
+               "yc>z",
+               "eabcd", "exzd");
+
+        /* Another set of rules:
+         *    1. ab>x|yzacw
+         *    2. za>q
+         *    3. qc>r
+         *    4. cw>n
+         *
+         * []|ab       Rule 1
+         * [x|yzacw]   No match
+         * [xy|zacw]   Rule 2
+         * [xyq|cw]    Rule 4
+         * [xyqn]|     Done
+         */
+        expect("ab>x|yzacw;" +
+               "za>q;" +
+               "qc>r;" +
+               "cw>n",
+               "ab", "xyqn");
+
+        /* Test categories
+         */
+        Transliterator t = new RuleBasedTransliterator("<ID>",
+                                                       "$dummy=\uE100;" +
+                                                       "$vowel=[aeiouAEIOU];" +
+                                                       "$lu=[:Lu:];" +
+                                                       "$vowel } $lu > '!';" +
+                                                       "$vowel > '&';" +
+                                                       "'!' { $lu > '^';" +
+                                                       "$lu > '*';" +
+                                                       "a>ERROR");
+        expect(t, "abcdefgABCDEFGU", "&bcd&fg!^**!^*&");
+    }
+
+    /**
+     * Test inline set syntax and set variable syntax.
+     */
+    public void TestInlineSet() {
+        expect("{ [:Ll:] } x > y; [:Ll:] > z;", "aAbxq", "zAyzz");
+        expect("a[0-9]b > qrs", "1a7b9", "1qrs9");
+
+        expect("$digit = [0-9];" +
+               "$alpha = [a-zA-Z];" +
+               "$alphanumeric = [$digit $alpha];" + // ***
+               "$special = [^$alphanumeric];" +     // ***
+               "$alphanumeric > '-';" +
+               "$special > '*';",
+
+               "thx-1138", "---*----");
+    }
+
+    /**
+     * Create some inverses and confirm that they work.  We have to be
+     * careful how we do this, since the inverses will not be true
+     * inverses -- we can't throw any random string at the composition
+     * of the transliterators and expect the identity function.  F x
+     * F' != I.  However, if we are careful about the input, we will
+     * get the expected results.
+     */
+    public void TestRuleBasedInverse() {
+        String RULES =
+            "abc>zyx;" +
+            "ab>yz;" +
+            "bc>zx;" +
+            "ca>xy;" +
+            "a>x;" +
+            "b>y;" +
+            "c>z;" +
+
+            "abc<zyx;" +
+            "ab<yz;" +
+            "bc<zx;" +
+            "ca<xy;" +
+            "a<x;" +
+            "b<y;" +
+            "c<z;" +
+
+            "";
+
+        String[] DATA = {
+            // Careful here -- random strings will not work.  If we keep
+            // the left side to the domain and the right side to the range
+            // we will be okay though (left, abc; right xyz).
+            "a", "x",
+            "abcacab", "zyxxxyy",
+            "caccb", "xyzzy",
+        };
+
+        Transliterator fwd = new RuleBasedTransliterator("<ID>", RULES);
+        Transliterator rev = new RuleBasedTransliterator("<ID>", RULES,
+                                     RuleBasedTransliterator.REVERSE, null);
+        for (int i=0; i<DATA.length; i+=2) {
+            expect(fwd, DATA[i], DATA[i+1]);
+            expect(rev, DATA[i+1], DATA[i]);
+        }
+    }
+
+    /**
+     * Basic test of keyboard.
+     */
+    public void TestKeyboard() {
+        Transliterator t = new RuleBasedTransliterator("<ID>",
+                                                       "psch>Y;"
+                                                       +"ps>y;"
+                                                       +"ch>x;"
+                                                       +"a>A;");
+        String DATA[] = {
+            // insertion, buffer
+            "a", "A",
+            "p", "Ap",
+            "s", "Aps",
+            "c", "Apsc",
+            "a", "AycA",
+            "psch", "AycAY",
+            null, "AycAY", // null means finishKeyboardTransliteration
+        };
+
+        keyboardAux(t, DATA);
+    }
+
+    /**
+     * Basic test of keyboard with cursor.
+     */
+    public void TestKeyboard2() {
+        Transliterator t = new RuleBasedTransliterator("<ID>",
+                                                       "ych>Y;"
+                                                       +"ps>|y;"
+                                                       +"ch>x;"
+                                                       +"a>A;");
+        String DATA[] = {
+            // insertion, buffer
+            "a", "A",
+            "p", "Ap",
+            "s", "Aps", // modified for rollback - "Ay",
+            "c", "Apsc", // modified for rollback - "Ayc",
+            "a", "AycA",
+            "p", "AycAp",
+            "s", "AycAps", // modified for rollback - "AycAy",
+            "c", "AycApsc", // modified for rollback - "AycAyc",
+            "h", "AycAY",
+            null, "AycAY", // null means finishKeyboardTransliteration
+        };
+
+        keyboardAux(t, DATA);
+    }
+
+    /**
+     * Test keyboard transliteration with back-replacement.
+     */
+    public void TestKeyboard3() {
+        // We want th>z but t>y.  Furthermore, during keyboard
+        // transliteration we want t>y then yh>z if t, then h are
+        // typed.
+        String RULES =
+            "t>|y;" +
+            "yh>z;" +
+            "";
+
+        String[] DATA = {
+            // Column 1: characters to add to buffer (as if typed)
+            // Column 2: expected appearance of buffer after
+            //           keyboard xliteration.
+            "a", "a",
+            "b", "ab",
+            "t", "abt", // modified for rollback - "aby",
+            "c", "abyc",
+            "t", "abyct", // modified for rollback - "abycy",
+            "h", "abycz",
+            null, "abycz", // null means finishKeyboardTransliteration
+        };
+
+        Transliterator t = new RuleBasedTransliterator("<ID>", RULES);
+        keyboardAux(t, DATA);
+    }
+
+    private void keyboardAux(Transliterator t, String[] DATA) {
+        Transliterator.Position index = new Transliterator.Position();
+        ReplaceableString s = new ReplaceableString();
+        for (int i=0; i<DATA.length; i+=2) {
+            StringBuffer log;
+            if (DATA[i] != null) {
+                log = new StringBuffer(s.toString() + " + "
+                                       + DATA[i]
+                                       + " -> ");
+                t.transliterate(s, index, DATA[i]);
+            } else {
+                log = new StringBuffer(s.toString() + " => ");
+                t.finishTransliteration(s, index);
+            }
+            Utility.formatInput(log, s, index);
+            if (s.toString().equals(DATA[i+1])) {
+                logln(log.toString());
+            } else {
+                errln("FAIL: " + log.toString() + ", expected " + DATA[i+1]);
+            }
+        }
+    }
+
+    // Latin-Arabic has been temporarily removed until it can be
+    // done correctly.
+
+//  public void TestArabic() {
+//      String DATA[] = {
+//          "Arabic",
+//              "\u062a\u062a\u0645\u062a\u0639 "+
+//              "\u0627\u0644\u0644\u063a\u0629 "+
+//              "\u0627\u0644\u0639\u0631\u0628\u0628\u064a\u0629 "+
+//              "\u0628\u0628\u0646\u0638\u0645 "+
+//              "\u0643\u062a\u0627\u0628\u0628\u064a\u0629 "+
+//              "\u062c\u0645\u064a\u0644\u0629"
+//      };
+
+//      Transliterator t = Transliterator.getInstance("Latin-Arabic");
+//      for (int i=0; i<DATA.length; i+=2) {
+//          expect(t, DATA[i], DATA[i+1]);
+//      }
+//  }
+
+    /**
+     * Compose the Kana transliterator forward and reverse and try
+     * some strings that should come out unchanged.
+     */
+    public void TestCompoundKana() {
+        Transliterator t = new CompoundTransliterator("Latin-Katakana;Katakana-Latin");
+        expect(t, "aaaaa", "aaaaa");
+    }
+
+    /**
+     * Compose the hex transliterators forward and reverse.
+     */
+    public void TestCompoundHex() {
+        Transliterator a = Transliterator.getInstance("Any-Hex");
+        Transliterator b = Transliterator.getInstance("Hex-Any");
+        Transliterator[] trans = { a, b };
+        Transliterator ab = new CompoundTransliterator(trans);
+
+        // Do some basic tests of b
+        expect(b, "\\u0030\\u0031", "01");
+
+        String s = "abcde";
+        expect(ab, s, s);
+
+        trans = new Transliterator[] { b, a };
+        Transliterator ba = new CompoundTransliterator(trans);
+        ReplaceableString str = new ReplaceableString(s);
+        a.transliterate(str);
+        expect(ba, str.toString(), str.toString());
+    }
+
+    /**
+     * Do some basic tests of filtering.
+     */
+    public void TestFiltering() {
+        Transliterator hex = Transliterator.getInstance("Any-Hex");
+        hex.setFilter(new UnicodeFilter() {
+            public boolean contains(int c) {
+                return c != 'c';
+            }
+        });
+        String s = "abcde";
+        String out = hex.transliterate(s);
+        String exp = "\\u0061\\u0062c\\u0064\\u0065";
+        if (out.equals(exp)) {
+            logln("Ok:   \"" + exp + "\"");
+        } else {
+            logln("FAIL: \"" + out + "\", wanted \"" + exp + "\"");
+        }
+    }
+
+    /**
+     * Test anchors
+     */
+    public void TestAnchors() {
+        expect("^ab  > 01 ;" +
+               " ab  > |8 ;" +
+               "  b  > k ;" +
+               " 8x$ > 45 ;" +
+               " 8x  > 77 ;",
+
+               "ababbabxabx",
+               "018k7745");
+        expect("$s = [z$] ;" +
+               "$s{ab    > 01 ;" +
+               "   ab    > |8 ;" +
+               "    b    > k ;" +
+               "   8x}$s > 45 ;" +
+               "   8x    > 77 ;",
+
+               "abzababbabxzabxabx",
+               "01z018k45z01x45");
+    }
+
+    /**
+     * Test pattern quoting and escape mechanisms.
+     */
+    public void TestPatternQuoting() {
+        // Array of 3n items
+        // Each item is <rules>, <input>, <expected output>
+        String[] DATA = {
+            "\u4E01>'[male adult]'", "\u4E01", "[male adult]",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            logln("Pattern: " + Utility.escape(DATA[i]));
+            Transliterator t = new RuleBasedTransliterator("<ID>", DATA[i]);
+            expect(t, DATA[i+1], DATA[i+2]);
+        }
+    }
+
+    /**
+     * Regression test for bugs found in Greek transliteration.
+     */
+    public void TestJ277() {
+        Transliterator gl = Transliterator.getInstance("Greek-Latin; NFD; [:M:]Remove; NFC");
+
+        char sigma = (char)0x3C3;
+        char upsilon = (char)0x3C5;
+        char nu = (char)0x3BD;
+        // not used char PHI = (char)0x3A6;
+        char alpha = (char)0x3B1;
+        // not used char omega = (char)0x3C9;
+        // not used char omicron = (char)0x3BF;
+        // not used char epsilon = (char)0x3B5;
+
+        // sigma upsilon nu -> syn
+        StringBuffer buf = new StringBuffer();
+        buf.append(sigma).append(upsilon).append(nu);
+        String syn = buf.toString();
+        expect(gl, syn, "syn");
+
+        // sigma alpha upsilon nu -> saun
+        buf.setLength(0);
+        buf.append(sigma).append(alpha).append(upsilon).append(nu);
+        String sayn = buf.toString();
+        expect(gl, sayn, "saun");
+
+        // Again, using a smaller rule set
+        String rules =
+                    "$alpha   = \u03B1;" +
+                    "$nu      = \u03BD;" +
+                    "$sigma   = \u03C3;" +
+                    "$ypsilon = \u03C5;" +
+                    "$vowel   = [aeiouAEIOU$alpha$ypsilon];" +
+                    "s <>           $sigma;" +
+                    "a <>           $alpha;" +
+                    "u <>  $vowel { $ypsilon;" +
+                    "y <>           $ypsilon;" +
+                    "n <>           $nu;";
+        RuleBasedTransliterator mini = new RuleBasedTransliterator
+            ("mini", rules, Transliterator.REVERSE, null);
+        expect(mini, syn, "syn");
+        expect(mini, sayn, "saun");
+
+//|    // Transliterate the Greek locale data
+//|    Locale el("el");
+//|    DateFormatSymbols syms(el, status);
+//|    if (U_FAILURE(status)) { errln("FAIL: Transliterator constructor failed"); return; }
+//|    int32_t i, count;
+//|    const UnicodeString* data = syms.getMonths(count);
+//|    for (i=0; i<count; ++i) {
+//|        if (data[i].length() == 0) {
+//|            continue;
+//|        }
+//|        UnicodeString out(data[i]);
+//|        gl->transliterate(out);
+//|        bool_t ok = TRUE;
+//|        if (data[i].length() >= 2 && out.length() >= 2 &&
+//|            u_isupper(data[i].charAt(0)) && u_islower(data[i].charAt(1))) {
+//|            if (!(u_isupper(out.charAt(0)) && u_islower(out.charAt(1)))) {
+//|                ok = FALSE;
+//|            }
+//|        }
+//|        if (ok) {
+//|            logln(prettify(data[i] + " -> " + out));
+//|        } else {
+//|            errln(UnicodeString("FAIL: ") + prettify(data[i] + " -> " + out));
+//|        }
+//|    }
+    }
+
+    /**
+     * Prefix, suffix support in hex transliterators
+     */
+    public void TestJ243() {
+        // Test default Hex-Any, which should handle
+        // \\u, \\U, u+, and U+
+        HexToUnicodeTransliterator hex = new HexToUnicodeTransliterator();
+        expect(hex, "\\u0041+\\U0042,u+0043uu+0044z", "A+B,CuDz");
+
+        // Try a custom Hex-Any
+        // \\uXXXX and &#xXXXX;
+        HexToUnicodeTransliterator hex2 = new HexToUnicodeTransliterator("\\\\u###0;&\\#x###0\\;");
+        expect(hex2, "\\u61\\u062\\u0063\\u00645\\u66x&#x30;&#x031;&#x0032;&#x00033;",
+               "abcd5fx012&#x00033;");
+
+        // Try custom Any-Hex (default is tested elsewhere)
+        UnicodeToHexTransliterator hex3 = new UnicodeToHexTransliterator("&\\#x###0;");
+        expect(hex3, "012", "&#x30;&#x31;&#x32;");
+    }
+
+    public void TestJ329() {
+
+        Object[] DATA = {
+            new Boolean(false), "a > b; c > d",
+            new Boolean(true),  "a > b; no operator; c > d",
+        };
+
+        for (int i=0; i<DATA.length; i+=2) {
+            String err = null;
+            try {
+                Transliterator t = new
+                    RuleBasedTransliterator("<ID>",
+                                            (String) DATA[i+1],
+                                            Transliterator.FORWARD,
+                                            null);
+            } catch (IllegalArgumentException e) {
+                err = e.getMessage();
+            }
+            boolean gotError = (err != null);
+            String desc = (String) DATA[i+1] +
+                (gotError ? (" -> error: " + err) : " -> no error");
+            if ((err != null) == ((Boolean)DATA[i]).booleanValue()) {
+                logln("Ok:   " + desc);
+            } else {
+                errln("FAIL: " + desc);
+            }
+        }
+    }
+
+    /**
+     * Test segments and segment references.
+     */
+    public void TestSegments() {
+        // Array of 3n items
+        // Each item is <rules>, <input>, <expected output>
+        String[] DATA = {
+            "([a-z]) '.' ([0-9]) > $2 '-' $1",
+            "abc.123.xyz.456",
+            "ab1-c23.xy4-z56",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            logln("Pattern: " + Utility.escape(DATA[i]));
+            Transliterator t = new RuleBasedTransliterator("<ID>", DATA[i]);
+            expect(t, DATA[i+1], DATA[i+2]);
+        }
+    }
+
+    /**
+     * Test cursor positioning outside of the key
+     */
+    public void TestCursorOffset() {
+        // Array of 3n items
+        // Each item is <rules>, <input>, <expected output>
+        String[] DATA = {
+            "pre {alpha} post > | @ ALPHA ;" +
+            "eALPHA > beta ;" +
+            "pre {beta} post > BETA @@ | ;" +
+            "post > xyz",
+
+            "prealphapost prebetapost",
+            "prbetaxyz preBETApost",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            logln("Pattern: " + Utility.escape(DATA[i]));
+            Transliterator t = new RuleBasedTransliterator("<ID>", DATA[i]);
+            expect(t, DATA[i+1], DATA[i+2]);
+        }
+    }
+
+    /**
+     * Test zero length and > 1 char length variable values.  Test
+     * use of variable refs in UnicodeSets.
+     */
+    public void TestArbitraryVariableValues() {
+        // Array of 3n items
+        // Each item is <rules>, <input>, <expected output>
+        String[] DATA = {
+            "$abe = ab;" +
+            "$pat = x[yY]z;" +
+            "$ll  = 'a-z';" +
+            "$llZ = [$ll];" +
+            "$llY = [$ll$pat];" +
+            "$emp = ;" +
+
+            "$abe > ABE;" +
+            "$pat > END;" +
+            "$llZ > 1;" +
+            "$llY > 2;" +
+            "7$emp 8 > 9;" +
+            "",
+
+            "ab xYzxyz stY78",
+            "ABE ENDEND 1129",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            logln("Pattern: " + Utility.escape(DATA[i]));
+            Transliterator t = new RuleBasedTransliterator("<ID>", DATA[i]);
+            expect(t, DATA[i+1], DATA[i+2]);
+        }
+    }
+
+    /**
+     * Confirm that the contextStart, contextLimit, start, and limit
+     * behave correctly.
+     */
+    public void TestPositionHandling() {
+        // Array of 3n items
+        // Each item is <rules>, <input>, <expected output>
+        String[] DATA = {
+            "a{t} > SS ; {t}b > UU ; {t} > TT ;",
+            "xtat txtb", // pos 0,9,0,9
+            "xTTaSS TTxUUb",
+
+            "a{t} > SS ; {t}b > UU ; {t} > TT ;",
+            "xtat txtb", // pos 2,9,3,8
+            "xtaSS TTxUUb",
+
+            "a{t} > SS ; {t}b > UU ; {t} > TT ;",
+            "xtat txtb", // pos 3,8,3,8
+            "xtaTT TTxTTb",
+        };
+
+        // Array of 4n positions -- these go with the DATA array
+        // They are: contextStart, contextLimit, start, limit
+        int[] POS = {
+            0, 9, 0, 9,
+            2, 9, 3, 8,
+            3, 8, 3, 8,
+        };
+
+        int n = DATA.length/3;
+        for (int i=0; i<n; i++) {
+            Transliterator t = new RuleBasedTransliterator("<ID>", DATA[3*i]);
+            Transliterator.Position pos = new Transliterator.Position(
+                POS[4*i], POS[4*i+1], POS[4*i+2], POS[4*i+3]);
+            ReplaceableString rsource = new ReplaceableString(DATA[3*i+1]);
+            t.transliterate(rsource, pos);
+            t.finishTransliteration(rsource, pos);
+            String result = rsource.toString();
+            String exp = DATA[3*i+2];
+            expectAux(Utility.escape(DATA[3*i]),
+                      DATA[3*i+1],
+                      result,
+                      result.equals(exp),
+                      exp);
+        }
+    }
+
+    /**
+     * Test the Hiragana-Katakana transliterator.
+     */
+    public void TestHiraganaKatakana() {
+        Transliterator hk = Transliterator.getInstance("Hiragana-Katakana");
+        Transliterator kh = Transliterator.getInstance("Katakana-Hiragana");
+
+        // Array of 3n items
+        // Each item is "hk"|"kh"|"both", <Hiragana>, <Katakana>
+        String[] DATA = {
+            "both",
+            "\u3042\u3090\u3099\u3092\u3050",
+            "\u30A2\u30F8\u30F2\u30B0",
+
+            "kh",
+            "\u307C\u3051\u3060\u3042\u3093\u30FC",
+            "\u30DC\u30F6\u30C0\u30FC\u30F3\u30FC",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            switch (DATA[i].charAt(0)) {
+            case 'h': // Hiragana-Katakana
+                expect(hk, DATA[i+1], DATA[i+2]);
+                break;
+            case 'k': // Katakana-Hiragana
+                expect(kh, DATA[i+2], DATA[i+1]);
+                break;
+            case 'b': // both
+                expect(hk, DATA[i+1], DATA[i+2]);
+                expect(kh, DATA[i+2], DATA[i+1]);
+                break;
+            }
+        }
+
+    }
+
+    public void TestCopyJ476() {
+        // This is a C++-only copy constructor test
+    }
+
+    /**
+     * Test inter-Indic transliterators.  These are composed.
+     */
+    public void TestInterIndic() {
+        String ID = "Devanagari-Gujarati";
+        Transliterator dg = Transliterator.getInstance(ID);
+        if (dg == null) {
+            errln("FAIL: getInstance(" + ID + ") returned null");
+            return;
+        }
+        String id = dg.getID();
+        if (!id.equals(ID)) {
+            errln("FAIL: getInstance(" + ID + ").getID() => " + id);
+        }
+        String dev = "\u0901\u090B\u0925";
+        String guj = "\u0A81\u0A8B\u0AA5";
+        expect(dg, dev, guj);
+    }
+
+    /**
+     * Test filter syntax in IDs. (J23)
+     */
+    public void TestFilterIDs() {
+        String[] DATA = {
+            "[aeiou]Any-Hex", // ID
+            "[aeiou]Hex-Any", // expected inverse ID
+            "quizzical",      // src
+            "q\\u0075\\u0069zz\\u0069c\\u0061l", // expected ID.translit(src)
+
+            "[aeiou]Any-Hex;[^5]Hex-Any",
+            "[^5]Any-Hex;[aeiou]Hex-Any",
+            "quizzical",
+            "q\\u0075izzical",
+
+            "[abc]Null",
+            "[abc]Null",
+            "xyz",
+            "xyz",
+        };
+
+        for (int i=0; i<DATA.length; i+=4) {
+            String ID = DATA[i];
+            Transliterator t = Transliterator.getInstance(ID);
+            expect(t, DATA[i+2], DATA[i+3]);
+
+            // Check the ID
+            if (!ID.equals(t.getID())) {
+                errln("FAIL: getInstance(" + ID + ").getID() => " +
+                      t.getID());
+            }
+
+            // Check the inverse
+            String uID = DATA[i+1];
+            Transliterator u = t.getInverse();
+            if (u == null) {
+                errln("FAIL: " + ID + ".getInverse() returned NULL");
+            } else if (!u.getID().equals(uID)) {
+                errln("FAIL: " + ID + ".getInverse().getID() => " +
+                      u.getID() + ", expected " + uID);
+            }
+        }
+    }
+
+    /**
+     * Test the case mapping transliterators.
+     */
+    public void TestCaseMap() {
+        Transliterator toUpper =
+            Transliterator.getInstance("Any-Upper[^xyzXYZ]");
+        Transliterator toLower =
+            Transliterator.getInstance("Any-Lower[^xyzXYZ]");
+        Transliterator toTitle =
+            Transliterator.getInstance("Any-Title[^xyzXYZ]");
+
+        expect(toUpper, "The quick brown fox jumped over the lazy dogs.",
+               "THE QUICK BROWN FOx JUMPED OVER THE LAzy DOGS.");
+        expect(toLower, "The quIck brown fOX jUMPED OVER THE LAzY dogs.",
+               "the quick brown foX jumped over the lazY dogs.");
+        expect(toTitle, "the quick brown foX caN'T jump over the laZy dogs.",
+               "The Quick Brown FoX Can't Jump Over The LaZy Dogs.");
+    }
+
+    /**
+     * Test the name mapping transliterators.
+     */
+    public void TestNameMap() {
+        Transliterator uni2name =
+            Transliterator.getInstance("Any-Name[^abc]");
+        Transliterator name2uni =
+            Transliterator.getInstance("Name-Any");
+
+        expect(uni2name, "\u00A0abc\u4E01\u00B5\u0A81\uFFFD\u0004\u0009\u0081\uFFFF",
+               "{NO-BREAK SPACE}abc{CJK UNIFIED IDEOGRAPH-4E01}{MICRO SIGN}{GUJARATI SIGN CANDRABINDU}{REPLACEMENT CHARACTER}{END OF TRANSMISSION}{CHARACTER TABULATION}{<control-0081>}{<noncharacter-FFFF>}");
+        expect(name2uni, "{ NO-BREAK SPACE}abc{  CJK UNIFIED  IDEOGRAPH-4E01  }{x{MICRO SIGN}{GUJARATI SIGN CANDRABINDU}{REPLACEMENT CHARACTER}{END OF TRANSMISSION}{CHARACTER TABULATION}{<control-0081>}{<noncharacter-FFFF>}{<control-0004>}{",
+               "\u00A0abc\u4E01{x\u00B5\u0A81\uFFFD\u0004\u0009\u0081\uFFFF\u0004{");
+    }
+
+    /**
+     * Test liberalized ID syntax.  1006c
+     */
+    public void TestLiberalizedID() {
+        // Some test cases have an expected getID() value of NULL.  This
+        // means I have disabled the test case for now.  This stuff is
+        // still under development, and I haven't decided whether to make
+        // getID() return canonical case yet.  It will all get rewritten
+        // with the move to Source-Target/Variant IDs anyway. [aliu]
+        String DATA[] = {
+            "latin-greek", null /*"Latin-Greek"*/, "case insensitivity",
+            "  Null  ", "Null", "whitespace",
+            " Latin[a-z]-Greek  ", "[a-z]Latin-Greek", "inline filter",
+            "  null  ; latin-greek  ", null /*"Null;Latin-Greek"*/, "compound whitespace",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            try {
+                Transliterator t = Transliterator.getInstance(DATA[i]);
+                if (DATA[i+1] == null || DATA[i+1].equals(t.getID())) {
+                    logln("Ok: " + DATA[i+2] +
+                          " create ID \"" + DATA[i] + "\" => \"" +
+                          t.getID() + "\"");
+                } else {
+                    errln("FAIL: " + DATA[i+2] +
+                          " create ID \"" + DATA[i] + "\" => \"" +
+                          t.getID() + "\", exp \"" + DATA[i+1] + "\"");
+                }
+            } catch (IllegalArgumentException e) {
+                errln("FAIL: " + DATA[i+2] +
+                      " create ID \"" + DATA[i] + "\"");
+            }
+        }
+    }
+
+    public void TestCreateInstance() {
+        Transliterator myTrans = Transliterator.getInstance("Latin-Hangul", Transliterator.REVERSE);
+        String newID = myTrans.getID();
+        if (!newID.equals("Hangul-Latin")) {
+            errln("FAIL: Test for Jitterbug 912 Transliterator::createInstance(id,UTRANS_REVERSE) failed");
+        }
+    }
+
+    /**
+     * Test the normalization transliterator.
+     */
+    public void TestNormalizationTransliterator() {
+        // THE FOLLOWING TWO TABLES ARE COPIED FROM com.ibm.icu.dev.test.normalizer.BasicTest
+        // PLEASE KEEP THEM IN SYNC WITH BasicTest.
+        String[][] CANON = {
+            // Input               Decomposed            Composed
+            {"cat",                "cat",                "cat"               },
+            {"\u00e0ardvark",      "a\u0300ardvark",     "\u00e0ardvark"     },
+
+            {"\u1e0a",             "D\u0307",            "\u1e0a"            }, // D-dot_above
+            {"D\u0307",            "D\u0307",            "\u1e0a"            }, // D dot_above
+
+            {"\u1e0c\u0307",       "D\u0323\u0307",      "\u1e0c\u0307"      }, // D-dot_below dot_above
+            {"\u1e0a\u0323",       "D\u0323\u0307",      "\u1e0c\u0307"      }, // D-dot_above dot_below
+            {"D\u0307\u0323",      "D\u0323\u0307",      "\u1e0c\u0307"      }, // D dot_below dot_above
+
+            {"\u1e10\u0307\u0323", "D\u0327\u0323\u0307","\u1e10\u0323\u0307"}, // D dot_below cedilla dot_above
+            {"D\u0307\u0328\u0323","D\u0328\u0323\u0307","\u1e0c\u0328\u0307"}, // D dot_above ogonek dot_below
+
+            {"\u1E14",             "E\u0304\u0300",      "\u1E14"            }, // E-macron-grave
+            {"\u0112\u0300",       "E\u0304\u0300",      "\u1E14"            }, // E-macron + grave
+            {"\u00c8\u0304",       "E\u0300\u0304",      "\u00c8\u0304"      }, // E-grave + macron
+
+            {"\u212b",             "A\u030a",            "\u00c5"            }, // angstrom_sign
+            {"\u00c5",             "A\u030a",            "\u00c5"            }, // A-ring
+
+            {"\u00fdffin",         "y\u0301ffin",        "\u00fdffin"        },	//updated with 3.0
+            {"\u00fd\uFB03n",      "y\u0301\uFB03n",     "\u00fd\uFB03n"     },	//updated with 3.0
+
+            {"Henry IV",           "Henry IV",           "Henry IV"          },
+            {"Henry \u2163",       "Henry \u2163",       "Henry \u2163"      },
+
+            {"\u30AC",             "\u30AB\u3099",       "\u30AC"            }, // ga (Katakana)
+            {"\u30AB\u3099",       "\u30AB\u3099",       "\u30AC"            }, // ka + ten
+            {"\uFF76\uFF9E",       "\uFF76\uFF9E",       "\uFF76\uFF9E"      }, // hw_ka + hw_ten
+            {"\u30AB\uFF9E",       "\u30AB\uFF9E",       "\u30AB\uFF9E"      }, // ka + hw_ten
+            {"\uFF76\u3099",       "\uFF76\u3099",       "\uFF76\u3099"      }, // hw_ka + ten
+
+            {"A\u0300\u0316",      "A\u0316\u0300",      "\u00C0\u0316"      },
+        };
+
+        String[][] COMPAT = {
+            // Input               Decomposed            Composed
+            {"\uFB4f",             "\u05D0\u05DC",       "\u05D0\u05DC"      }, // Alef-Lamed vs. Alef, Lamed
+
+            {"\u00fdffin",         "y\u0301ffin",        "\u00fdffin"        },	//updated for 3.0
+            {"\u00fd\uFB03n",      "y\u0301ffin",        "\u00fdffin"        }, // ffi ligature -> f + f + i
+
+            {"Henry IV",           "Henry IV",           "Henry IV"          },
+            {"Henry \u2163",       "Henry IV",           "Henry IV"          },
+
+            {"\u30AC",             "\u30AB\u3099",       "\u30AC"            }, // ga (Katakana)
+            {"\u30AB\u3099",       "\u30AB\u3099",       "\u30AC"            }, // ka + ten
+
+            {"\uFF76\u3099",       "\u30AB\u3099",       "\u30AC"            }, // hw_ka + ten
+        };
+
+        Transliterator NFD = Transliterator.getInstance("NFD");
+        Transliterator NFC = Transliterator.getInstance("NFC");
+        for (int i=0; i<CANON.length; ++i) {
+            String in = CANON[i][0];
+            String expd = CANON[i][1];
+            String expc = CANON[i][2];
+            expect(NFD, in, expd);
+            expect(NFC, in, expc);
+        }
+
+        Transliterator NFKD = Transliterator.getInstance("NFKD");
+        Transliterator NFKC = Transliterator.getInstance("NFKC");
+        for (int i=0; i<COMPAT.length; ++i) {
+            String in = COMPAT[i][0];
+            String expkd = COMPAT[i][1];
+            String expkc = COMPAT[i][2];
+            expect(NFKD, in, expkd);
+            expect(NFKC, in, expkc);
+        }
+
+        Transliterator t = Transliterator.getInstance("NFD; [x]Remove");
+        expect(t, "\u010dx", "c\u030C");
+    }
+
+    /**
+     * Test compound RBT rules.
+     */
+    public void TestCompoundRBT() {
+        // Careful with spacing and ';' here:  Phrase this exactly
+        // as toRules() is going to return it.  If toRules() changes
+        // with regard to spacing or ';', then adjust this string.
+        String rule = "::Hex-Any;\n" +
+                      "::Any-Lower;\n" +
+                      "a > '.A.';\n" +
+                      "b > '.B.';\n" +
+                      "::[^t]Any-Upper;";
+        Transliterator t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules failed");
+            return;
+        }
+        expect(t, "\u0043at in the hat, bat on the mat",
+               "C.A.t IN tHE H.A.t, .B..A.t ON tHE M.A.t");
+        String r = t.toRules(true);
+        if (r.equals(rule)) {
+            logln("OK: toRules() => " + r);
+        } else {
+            errln("FAIL: toRules() => " + r +
+                  ", expected " + rule);
+        }
+
+        // Now test toRules
+        t = Transliterator.getInstance("Greek-Latin; Latin-Cyrillic", Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createInstance failed");
+            return;
+        }
+        String exp = "::Greek-Latin;\n::Latin-Cyrillic;";
+        r = t.toRules(true);
+        if (!r.equals(exp)) {
+            errln("FAIL: toRules() => " + r +
+                  ", expected " + exp);
+        } else {
+            logln("OK: toRules() => " + r);
+        }
+
+        // Round trip the result of toRules
+        t = Transliterator.createFromRules("Test", r, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules #2 failed");
+            return;
+        } else {
+            logln("OK: createFromRules(" + r + ") succeeded");
+        }
+
+        // Test toRules again
+        r = t.toRules(true);
+        if (!r.equals(exp)) {
+            errln("FAIL: toRules() => " + r +
+                  ", expected " + exp);
+        } else {
+            logln("OK: toRules() => " + r);
+        }
+
+        // Test Foo(Bar) IDs.  Careful with spacing in id; make it conform
+        // to what the regenerated ID will look like.
+        String id = "Upper(Lower);(NFKC)";
+        t = Transliterator.getInstance(id, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createInstance #2 failed");
+            return;
+        }
+        if (t.getID().equals(id)) {
+            logln("OK: created " + id);
+        } else {
+            errln("FAIL: createInstance(" + id +
+                  ").getID() => " + t.getID());
+        }
+
+        Transliterator u = t.getInverse();
+        if (u == null) {
+            errln("FAIL: createInverse failed");
+            return;
+        }
+        exp = "NFKC();Lower(Upper)";
+        if (u.getID().equals(exp)) {
+            logln("OK: createInverse(" + id + ") => " +
+                  u.getID());
+        } else {
+            errln("FAIL: createInverse(" + id + ") => " +
+                  u.getID());
+        }
+    }
+
+    /**
+     * Compound filter semantics were orginially not implemented
+     * correctly.  Originally, each component filter f(i) is replaced by
+     * f'(i) = f(i) && g, where g is the filter for the compound
+     * transliterator.
+     *
+     * From Mark:
+     *
+     * Suppose and I have a transliterator X. Internally X is
+     * "Greek-Latin; Latin-Cyrillic; Any-Lower". I use a filter [^A].
+     *
+     * The compound should convert all greek characters (through latin) to
+     * cyrillic, then lowercase the result. The filter should say "don't
+     * touch 'A' in the original". But because an intermediate result
+     * happens to go through "A", the Greek Alpha gets hung up.
+     */
+    public void TestCompoundFilter() {
+        Transliterator t = Transliterator.getInstance
+            ("Greek-Latin; Latin-Greek; Lower", Transliterator.FORWARD);
+        t.setFilter(new UnicodeSet("[^A]"));
+
+        // Only the 'A' at index 1 should remain unchanged
+        expect(t,
+               CharsToUnicodeString("BA\\u039A\\u0391"),
+               CharsToUnicodeString("\\u03b2A\\u03ba\\u03b1"));
+    }
+
+    /**
+     * Test the "Remove" transliterator.
+     */
+    public void TestRemove() {
+        Transliterator t = Transliterator.getInstance("Remove[aeiou]");
+        expect(t, "The quick brown fox.",
+               "Th qck brwn fx.");
+    }
+
+    public void TestToRules() {
+        String RBT = "rbt";
+        String SET = "set";
+        String[] DATA = {
+            RBT,
+            "$a=\\u4E61; [$a] > A;",
+            "[\\u4E61] > A;",
+
+            RBT,
+            "$white=[[:Zs:][:Zl:]]; $white{a} > A;",
+            "[[:Zs:][:Zl:]]{a} > A;",
+
+            SET,
+            "[[:Zs:][:Zl:]]",
+            "[[:Zs:][:Zl:]]",
+
+            SET,
+            "[:Ps:]",
+            "[:Ps:]",
+
+            SET,
+            "[:L:]",
+            "[:L:]",
+
+            SET,
+            "[[:L:]-[A]]",
+            "[[:L:]-[A]]",
+
+            SET,
+            "[~[:Lu:][:Ll:]]",
+            "[~[:Lu:][:Ll:]]",
+
+            SET,
+            "[~[a-z]]",
+            "[~[a-z]]",
+
+            RBT,
+            "$white=[:Zs:]; $black=[^$white]; $black{a} > A;",
+            "[^[:Zs:]]{a} > A;",
+
+            RBT,
+            "$a=[:Zs:]; $b=[[a-z]-$a]; $b{a} > A;",
+            "[[a-z]-[:Zs:]]{a} > A;",
+
+            RBT,
+            "$a=[:Zs:]; $b=[$a&[a-z]]; $b{a} > A;",
+            "[[:Zs:]&[a-z]]{a} > A;",
+
+            RBT,
+            "$a=[:Zs:]; $b=[x$a]; $b{a} > A;",
+            "[x[:Zs:]]{a} > A;",
+
+            RBT,
+            "$accentMinus = [ [\\u0300-\\u0345] & [:M:] - [\\u0338]] ;"+
+            "$macron = \\u0304 ;"+
+            "$evowel = [aeiouyAEIOUY] ;"+
+            "$iotasub = \\u0345 ;"+
+            "($evowel $macron $accentMinus *) i > | $1 $iotasub ;",
+            "([AEIOUYaeiouy]\\u0304[[\\u0300-\\u0345]&[:M:]-[\\u0338]]*)i > | $1 \\u0345;",
+            
+            RBT,
+            "([AEIOUYaeiouy]\\u0304[[:M:]-[\\u0304\\u0345]]*)i > | $1 \\u0345;",
+            "([AEIOUYaeiouy]\\u0304[[:M:]-[\\u0304\\u0345]]*)i > | $1 \\u0345;",
+        };
+
+        for (int d=0; d < DATA.length; d+=3) {
+            if (DATA[d] == RBT) {
+                // Transliterator test
+                Transliterator t = Transliterator.createFromRules("ID",
+                                       DATA[d+1], Transliterator.FORWARD);
+                if (t == null) {
+                    errln("FAIL: createFromRules failed");
+                    return;
+                }
+                String rules, escapedRules;
+                rules = t.toRules(false);
+                escapedRules = t.toRules(true);
+                String expRules = Utility.unescape(DATA[d+2]);
+                String expEscapedRules = DATA[d+2];
+                if (rules.equals(expRules)) {
+                    logln("Ok: " + DATA[d+1] +
+                          " => " + Utility.escape(rules));
+                } else {
+                    errln("FAIL: " + DATA[d+1] +
+                          " => " + Utility.escape(rules + ", exp " + expRules));
+                }
+                if (escapedRules.equals(expEscapedRules)) {
+                    logln("Ok: " + DATA[d+1] +
+                          " => " + escapedRules);
+                } else {
+                    errln("FAIL: " + DATA[d+1] +
+                          " => " + escapedRules + ", exp " + expEscapedRules);
+                }
+
+            } else {
+                // UnicodeSet test
+                String pat = DATA[d+1];
+                String expToPat = DATA[d+2];
+                UnicodeSet set = new UnicodeSet(pat);
+
+                // Adjust spacing etc. as necessary.
+                String toPat;
+                toPat = set.toPattern(true);
+                if (expToPat.equals(toPat)) {
+                    logln("Ok: " + pat +
+                          " => " + toPat);
+                } else {
+                    errln("FAIL: " + pat +
+                          " => " + Utility.escape(toPat) +
+                          ", exp " + Utility.escape(pat));
+                }
+            }
+        }
+    }
+
+    public void TestContext() {
+        Transliterator.Position pos = new Transliterator.Position(0, 2, 0, 1); // cs cl s l
+
+        expect("de > x; {d}e > y;",
+               "de",
+               "ye",
+               pos);
+
+        expect("ab{c} > z;",
+               "xadabdabcy",
+               "xadabdabzy");
+    }
+
+    static final String CharsToUnicodeString(String s) {
+        return Utility.unescape(s);
+    }
+
+    public void TestSupplemental() {
+
+        expect(CharsToUnicodeString("$a=\\U00010300; $s=[\\U00010300-\\U00010323];" +
+                                    "a > $a; $s > i;"),
+               CharsToUnicodeString("ab\\U0001030Fx"),
+               CharsToUnicodeString("\\U00010300bix"));
+
+        expect(CharsToUnicodeString("$a=[a-z\\U00010300-\\U00010323];" +
+                                    "$b=[A-Z\\U00010400-\\U0001044D];" +
+                                    "($a)($b) > $2 $1;"),
+               CharsToUnicodeString("aB\\U00010300\\U00010400c\\U00010401\\U00010301D"),
+               CharsToUnicodeString("Ba\\U00010400\\U00010300\\U00010401cD\\U00010301"));
+
+        // k|ax\\U00010300xm
+
+        // k|a\\U00010400\\U00010300xm
+        // ky|\\U00010400\\U00010300xm
+        // ky\\U00010400|\\U00010300xm
+
+        // ky\\U00010400|\\U00010300\\U00010400m
+        // ky\\U00010400y|\\U00010400m
+        expect(CharsToUnicodeString("$a=[a\\U00010300-\\U00010323];" +
+                                    "$a {x} > | @ \\U00010400;" +
+                                    "{$a} [^\\u0000-\\uFFFF] > y;"),
+               CharsToUnicodeString("kax\\U00010300xm"),
+               CharsToUnicodeString("ky\\U00010400y\\U00010400m"));
+
+        expect(Transliterator.getInstance("Any-Name"),
+               CharsToUnicodeString("\\U00010330\\U000E0061\\u00A0"),
+               "{GOTHIC LETTER AHSA}{TAG LATIN SMALL LETTER A}{NO-BREAK SPACE}");
+
+        expect(Transliterator.getInstance("Any-Hex/Unicode"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "U+10330U+10FF00U+E0061U+00A0");
+  
+        expect(Transliterator.getInstance("Any-Hex/C"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "\\U00010330\\U0010FF00\\U000E0061\\u00A0");
+
+        expect(Transliterator.getInstance("Any-Hex/Perl"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "\\x{10330}\\x{10FF00}\\x{E0061}\\x{A0}");
+
+        expect(Transliterator.getInstance("Any-Hex/Java"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "\\uD800\\uDF30\\uDBFF\\uDF00\\uDB40\\uDC61\\u00A0");
+
+        expect(Transliterator.getInstance("Any-Hex/XML"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "&#x10330;&#x10FF00;&#xE0061;&#xA0;");
+
+        expect(Transliterator.getInstance("Any-Hex/XML10"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "&#66352;&#1113856;&#917601;&#160;");
+
+        expect(Transliterator.getInstance("[\\U000E0000-\\U000E0FFF] Remove"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\u00A0"));
+    }
+
+    public void TestQuantifier() {
+
+        // Make sure @ in a quantified anteContext works
+        expect("a+ {b} > | @@ c; A > a; (a+ c) > '(' $1 ')';",
+               "AAAAAb",
+               "aaa(aac)");
+
+        // Make sure @ in a quantified postContext works
+        expect("{b} a+ > c @@ |; (a+) > '(' $1 ')';",
+               "baaaaa",
+               "caa(aaa)");
+
+        // Make sure @ in a quantified postContext with seg ref works
+        expect("{(b)} a+ > $1 @@ |; (a+) > '(' $1 ')';",
+               "baaaaa",
+               "baa(aaa)");
+
+        // Make sure @ past ante context doesn't enter ante context
+        Transliterator.Position pos = new Transliterator.Position(0, 5, 3, 5);
+        expect("a+ {b} > | @@ c; x > y; (a+ c) > '(' $1 ')';",
+               "xxxab",
+               "xxx(ac)",
+               pos);
+
+        // Make sure @ past post context doesn't pass limit
+        Transliterator.Position pos2 = new Transliterator.Position(0, 4, 0, 2);
+        expect("{b} a+ > c @@ |; x > y; a > A;",
+               "baxx",
+               "caxx",
+               pos2);
+
+        // Make sure @ past post context doesn't enter post context
+        expect("{b} a+ > c @@ |; x > y; a > A;",
+               "baxx",
+               "cayy");
+
+        expect("(ab)? c > d;",
+               "c abc ababc",
+               "d d abd");
+
+        // NOTE: The (ab)+ when referenced just yields a single "ab",
+        // not the full sequence of them.  This accords with perl behavior.
+        expect("(ab)+ {x} > '(' $1 ')';",
+               "x abx ababxy",
+               "x ab(ab) abab(ab)y");
+
+        expect("b+ > x;",
+               "ac abc abbc abbbc",
+               "ac axc axc axc");
+
+        expect("[abc]+ > x;",
+               "qac abrc abbcs abtbbc",
+               "qx xrx xs xtx");
+
+        expect("q{(ab)+} > x;",
+               "qa qab qaba qababc qaba",
+               "qa qx qxa qxc qxa");
+
+        expect("q(ab)* > x;",
+               "qa qab qaba qababc",
+               "xa x xa xc");
+
+        // NOTE: The (ab)+ when referenced just yields a single "ab",
+        // not the full sequence of them.  This accords with perl behavior.
+        expect("q(ab)* > '(' $1 ')';",
+               "qa qab qaba qababc",
+               "()a (ab) (ab)a (ab)c");
+
+        // 'foo'+ and 'foo'* -- the quantifier should apply to the entire
+        // quoted string
+        expect("'ab'+ > x;",
+               "bb ab ababb",
+               "bb x xb");
+
+        // $foo+ and $foo* -- the quantifier should apply to the entire
+        // variable reference
+        expect("$var = ab; $var+ > x;",
+               "bb ab ababb",
+               "bb x xb");
+    }
+
+    static class TestFact implements Transliterator.Factory {
+        static class NameableNullTrans extends NullTransliterator {
+            public NameableNullTrans(String id) {
+                setID(id);
+            }
+        };
+        String id;
+        public TestFact(String theID) {
+            id = theID;
+        }
+        public Transliterator getInstance(String ignoredID) {
+            return new NameableNullTrans(id);
+        }
+    };
+
+    public void TestSTV() {
+        Enumeration es = Transliterator.getAvailableSources();
+        for (int i=0; es.hasMoreElements(); ++i) {
+            String source = (String) es.nextElement();
+            logln("" + i + ": " + source);
+            if (source.length() == 0) {
+                errln("FAIL: empty source");
+                continue;
+            }
+            Enumeration et = Transliterator.getAvailableTargets(source);
+            for (int j=0; et.hasMoreElements(); ++j) {
+                String target = (String) et.nextElement();
+                logln(" " + j + ": " + target);
+                if (target.length() == 0) {
+                    errln("FAIL: empty target");
+                    continue;
+                }
+                Enumeration ev = Transliterator.getAvailableVariants(source, target);
+                for (int k=0; ev.hasMoreElements(); ++k) {
+                    String variant = (String) ev.nextElement();
+                    if (variant.length() == 0) {
+                        logln("  " + k + ": <empty>");
+                    } else {
+                        logln("  " + k + ": " + variant);
+                    }
+                }
+            }
+        }
+
+        // Test registration
+        String[] IDS = { "Fieruwer", "Seoridf-Sweorie", "Oewoir-Oweri/Vsie" };
+        for (int i=0; i<3; ++i) {
+            Transliterator.registerFactory(IDS[i], new TestFact(IDS[i]));
+            try {
+                Transliterator t = Transliterator.getInstance(IDS[i]);
+                if (t.getID().equals(IDS[i])) {
+                    logln("Ok: Registration/creation succeeded for ID " +
+                          IDS[i]);
+                } else {
+                    errln("FAIL: Registration of ID " +
+                          IDS[i] + " creates ID " + t.getID());
+                }
+                Transliterator.unregister(IDS[i]);
+                try {
+                    t = Transliterator.getInstance(IDS[i]);
+                    errln("FAIL: Unregistration failed for ID " +
+                          IDS[i] + "; still receiving ID " + t.getID());
+                } catch (IllegalArgumentException e2) {
+                    // Good; this is what we expect
+                    logln("Ok; Unregistered " + IDS[i]);
+                }
+            } catch (IllegalArgumentException e) {
+                errln("FAIL: Registration/creation failed for ID " +
+                      IDS[i]);
+            }
+        }
+    }
+
+    /**
+     * Test inverse of Greek-Latin; Title()
+     */
+    public void TestCompoundInverse() {
+        Transliterator t = Transliterator.getInstance
+            ("Greek-Latin; Title()", Transliterator.REVERSE);
+        if (t == null) {
+            errln("FAIL: createInstance");
+            return;
+        }
+        String exp = "(Title);Latin-Greek";
+        if (t.getID().equals(exp)) {
+            logln("Ok: inverse of \"Greek-Latin; Title()\" is \"" +
+                  t.getID());
+        } else {
+            errln("FAIL: inverse of \"Greek-Latin; Title()\" is \"" +
+                  t.getID() + "\", expected \"" + exp + "\"");
+        }
+    }
+
+    /**
+     * Test NFD chaining with RBT
+     */
+    public void TestNFDChainRBT() {
+        Transliterator t = Transliterator.createFromRules(
+                               "TEST", "::NFD; aa > Q; a > q;",
+                               Transliterator.FORWARD);
+        logln(t.toRules(true));
+        expect(t, "aa", "Q");
+    }
+
+    /**
+     * Inverse of "Null" should be "Null". (J21)
+     */
+    public void TestNullInverse() {
+        Transliterator t = Transliterator.getInstance("Null");
+        Transliterator u = t.getInverse();
+        if (!u.getID().equals("Null")) {
+            errln("FAIL: Inverse of Null should be Null");
+        }
+    }
+
+    /**
+     * Check ID of inverse of alias. (J22)
+     */
+    public void TestAliasInverseID() {
+        String ID = "Latin-Hangul"; // This should be any alias ID with an inverse
+        Transliterator t = Transliterator.getInstance(ID);
+        Transliterator u = t.getInverse();
+        String exp = "Hangul-Latin";
+        String got = u.getID();
+        if (!got.equals(exp)) {
+            errln("FAIL: Inverse of " + ID + " is " + got +
+                  ", expected " + exp);
+        }
+    }
+
+    /**
+     * Test IDs of inverses of compound transliterators. (J20)
+     */
+    public void TestCompoundInverseID() {
+        String ID = "Latin-Jamo;NFC(NFD)";
+        Transliterator t = Transliterator.getInstance(ID);
+        Transliterator u = t.getInverse();
+        String exp = "NFD(NFC);Jamo-Latin";
+        String got = u.getID();
+        if (!got.equals(exp)) {
+            errln("FAIL: Inverse of " + ID + " is " + got +
+                  ", expected " + exp);
+        }
+    }
+
+    /**
+     * Test undefined variable.
+     */
+    public void TestUndefinedVariable() {
+        String rule = "$initial } a <> \u1161;";
+        try {
+            Transliterator t = new RuleBasedTransliterator("<ID>", rule);
+            t = null;
+        } catch (IllegalArgumentException e) {
+            logln("OK: Got exception for " + rule + ", as expected: " +
+                  e.getMessage());
+            return;
+        }
+        errln("Fail: bogus rule " + rule + " compiled without error");
+    }
+
+    /**
+     * Test empty context.
+     */
+    public void TestEmptyContext() {
+        expect(" { a } > b;", "xay a ", "xby b ");
+    }
+
+    /**
+     * Test compound filter ID syntax
+     */
+    public void TestCompoundFilterID() {
+        String[] DATA = {
+            // Col. 1 = ID or rule set (latter must start with #)
+
+            // = columns > 1 are null if expect col. 1 to be illegal =
+
+            // Col. 2 = direction, "F..." or "R..."
+            // Col. 3 = source string
+            // Col. 4 = exp result
+
+            "[abc]; [abc]", null, null, null, // multiple filters
+            "Latin-Greek; [abc];", null, null, null, // misplaced filter
+            "[b]; Latin-Greek; Upper; ([xyz])", "F", "abc", "a\u0392c",
+            "[b]; (Lower); Latin-Greek; Upper(); ([\u0392])", "R", "\u0391\u0392\u0393", "\u0391b\u0393",
+            "#\n::[b]; ::Latin-Greek; ::Upper; ::([xyz]);", "F", "abc", "a\u0392c",
+            "#\n::[b]; ::(Lower); ::Latin-Greek; ::Upper(); ::([\u0392]);", "R", "\u0391\u0392\u0393", "\u0391b\u0393",
+        };
+
+        for (int i=0; i<DATA.length; i+=4) {
+            String id = DATA[i];
+            int direction = (DATA[i+1] != null && DATA[i+1].charAt(0) == 'R') ?
+                Transliterator.REVERSE : Transliterator.FORWARD;
+            String source = DATA[i+2];
+            String exp = DATA[i+3];
+            boolean expOk = (DATA[i+1] != null);
+            Transliterator t = null;
+            IllegalArgumentException e = null;
+            try {
+                if (id.charAt(0) == '#') {
+                    t = Transliterator.createFromRules("ID", id, direction);
+                } else {
+                    t = Transliterator.getInstance(id, direction);
+                }
+            } catch (IllegalArgumentException ee) {
+                e = ee;
+            }
+            boolean ok = (t != null && e == null);
+            if (ok == expOk) {
+                logln("Ok: " + id + " => " + t +
+                      (e != null ? (", " + e.getMessage()) : ""));
+                if (source != null) {
+                    expect(t, source, exp);
+                }
+            } else {
+                errln("FAIL: " + id + " => " + t +
+                      (e != null ? (", " + e.getMessage()) : ""));
+            }
+        }
+    }
+
+    /**
+     * Test new property set syntax
+     */
+    public void TestPropertySet() {
+        expect("a>A; \\p{Lu}>x; \\p{Any}>y;", "abcDEF", "Ayyxxx");
+        expect("(.+)>'[' $1 ']';", " a stitch \n in time \r saves 9",
+               "[ a stitch ]\n[ in time ]\r[ saves 9]");
+    }
+
+    /**
+     * Test various failure points of the new 2.0 engine.
+     */
+    public void TestNewEngine() {
+        Transliterator t = Transliterator.getInstance("Latin-Hiragana");
+        // Katakana should be untouched
+        expect(t, "a\u3042\u30A2", "\u3042\u3042\u30A2");
+
+        if (true) {
+            // This test will only work if Transliterator.ROLLBACK is
+            // true.  Otherwise, this test will fail, revealing a
+            // limitation of global filters in incremental mode.
+
+            Transliterator a =
+                Transliterator.createFromRules("a", "a > A;", Transliterator.FORWARD);
+            Transliterator A =
+                Transliterator.createFromRules("A", "A > b;", Transliterator.FORWARD);
+
+            Transliterator array[] = new Transliterator[] {
+                a,
+                Transliterator.getInstance("NFD"),
+                A };
+
+            t = new CompoundTransliterator(array, new UnicodeSet("[:Ll:]"));
+
+            expect(t, "aAaA", "bAbA");
+        }
+
+        expect("$smooth = x; $macron = q; [:^L:] { ([aeiouyAEIOUY] $macron?) } [^aeiouyAEIOUY$smooth$macron] > | $1 $smooth ;",
+               "a",
+               "ax");
+
+        String gr =
+            "$ddot = \u0308 ;" +
+            "$lcgvowel = [\u03b1\u03b5\u03b7\u03b9\u03bf\u03c5\u03c9] ;" +
+            "$rough = \u0314 ;" +
+            "($lcgvowel+ $ddot?) $rough > h | $1 ;" +
+            "\u03b1 <> a ;" +
+            "$rough <> h ;";
+
+        expect(gr, "\u03B1\u0314", "ha");
+    }
+
+    /**
+     * Test quantified segment behavior.  We want:
+     * ([abc])+ > x $1 x; applied to "cba" produces "xax"
+     */
+    public void TestQuantifiedSegment() {
+        // The normal case
+        expect("([abc]+) > x $1 x;", "cba", "xcbax");
+
+        // The tricky case; the quantifier is around the segment
+        expect("([abc])+ > x $1 x;", "cba", "xax");
+
+        // Tricky case in reverse direction
+        expect("([abc])+ { q > x $1 x;", "cbaq", "cbaxax");
+
+        // Check post-context segment
+        expect("{q} ([a-d])+ > '(' $1 ')';", "ddqcba", "dd(a)cba");
+
+        // Test toRule/toPattern for non-quantified segment.
+        // Careful with spacing here.
+        String r = "([a-c]){q} > x $1 x;";
+        Transliterator t = Transliterator.createFromRules("ID", r, Transliterator.FORWARD);
+        String rr = t.toRules(true);
+        if (!r.equals(rr)) {
+            errln("FAIL: \"" + r + "\" x toRules() => \"" + rr + "\"");
+        } else {
+            logln("Ok: \"" + r + "\" x toRules() => \"" + rr + "\"");
+        }
+
+        // Test toRule/toPattern for quantified segment.
+        // Careful with spacing here.
+        r = "([a-c])+{q} > x $1 x;";
+        t = Transliterator.createFromRules("ID", r, Transliterator.FORWARD);
+        rr = t.toRules(true);
+        if (!r.equals(rr)) {
+            errln("FAIL: \"" + r + "\" x toRules() => \"" + rr + "\"");
+        } else {
+            logln("Ok: \"" + r + "\" x toRules() => \"" + rr + "\"");
+        }
+    }
+
+    //======================================================================
+    // Ram's tests
+    //======================================================================
+ /* this test performs  test of rules in ISO 15915 */
+    public void  TestDevanagariLatinRT(){
+        String[]  source = {
+            "bh\u0101rata",
+            "kra",
+            "k\u1E63a",
+            "khra",
+            "gra",
+            "\u1E45ra",
+            "cra",
+            "chra",
+            "j\u00F1a",
+            "jhra",
+            "\u00F1ra",
+            "\u1E6Dya",
+            "\u1E6Dhra",
+            "\u1E0Dya",
+        //"r\u0323ya", // \u095c is not valid in Devanagari
+            "\u1E0Dhya",
+            "\u1E5Bhra",
+            "\u1E47ra",
+            "tta",
+            "thra",
+            "dda",
+            "dhra",
+            "nna",
+            "pra",
+            "phra",
+            "bra",
+            "bhra",
+            "mra",
+            "\u1E49ra",
+        //"l\u0331ra",
+            "yra",
+            "\u1E8Fra",
+        //"l-",
+            "vra",
+            "\u015Bra",
+            "\u1E63ra",
+            "sra",
+            "hma",
+            "\u1E6D\u1E6Da",
+            "\u1E6D\u1E6Dha",
+            "\u1E6Dh\u1E6Dha",
+            "\u1E0D\u1E0Da",
+            "\u1E0D\u1E0Dha",
+            "\u1E6Dya",
+            "\u1E6Dhya",
+            "\u1E0Dya",
+            "\u1E0Dhya",
+            // Not roundtrippable --
+            // \u0939\u094d\u094d\u092E  - hma
+            // \u0939\u094d\u092E         - hma
+            // CharsToUnicodeString("hma"),
+            "hya",
+            "\u015Br\u0325",
+            "\u015Bca",
+            "\u0115",
+            "san\u0304j\u012Bb s\u0113nagupta",
+            "\u0101nand vaddir\u0101ju",
+        };
+        String[]  expected = {
+            "\u092D\u093E\u0930\u0924",    /* bha\u0304rata */
+            "\u0915\u094D\u0930",          /* kra         */
+            "\u0915\u094D\u0937",          /* ks\u0323a  */
+            "\u0916\u094D\u0930",          /* khra        */
+            "\u0917\u094D\u0930",          /* gra         */
+            "\u0919\u094D\u0930",          /* n\u0307ra  */
+            "\u091A\u094D\u0930",          /* cra         */
+            "\u091B\u094D\u0930",          /* chra        */
+            "\u091C\u094D\u091E",          /* jn\u0303a  */
+            "\u091D\u094D\u0930",          /* jhra        */
+            "\u091E\u094D\u0930",          /* n\u0303ra  */
+            "\u091F\u094D\u092F",          /* t\u0323ya  */
+            "\u0920\u094D\u0930",          /* t\u0323hra */
+            "\u0921\u094D\u092F",          /* d\u0323ya  */
+        //"\u095C\u094D\u092F",          /* r\u0323ya  */ // \u095c is not valid in Devanagari
+            "\u0922\u094D\u092F",          /* d\u0323hya */
+            "\u0922\u093C\u094D\u0930",    /* r\u0323hra */
+            "\u0923\u094D\u0930",          /* n\u0323ra  */
+            "\u0924\u094D\u0924",          /* tta         */
+            "\u0925\u094D\u0930",          /* thra        */
+            "\u0926\u094D\u0926",          /* dda         */
+            "\u0927\u094D\u0930",          /* dhra        */
+            "\u0928\u094D\u0928",          /* nna         */
+            "\u092A\u094D\u0930",          /* pra         */
+            "\u092B\u094D\u0930",          /* phra        */
+            "\u092C\u094D\u0930",          /* bra         */
+            "\u092D\u094D\u0930",          /* bhra        */
+            "\u092E\u094D\u0930",          /* mra         */
+            "\u0929\u094D\u0930",          /* n\u0331ra  */
+        //"\u0934\u094D\u0930",          /* l\u0331ra  */
+            "\u092F\u094D\u0930",          /* yra         */
+            "\u092F\u093C\u094D\u0930",    /* y\u0307ra  */
+        //"l-",
+            "\u0935\u094D\u0930",          /* vra         */
+            "\u0936\u094D\u0930",          /* s\u0301ra  */
+            "\u0937\u094D\u0930",          /* s\u0323ra  */
+            "\u0938\u094D\u0930",          /* sra         */
+            "\u0939\u094d\u092E",          /* hma         */
+            "\u091F\u094D\u091F",          /* t\u0323t\u0323a  */
+            "\u091F\u094D\u0920",          /* t\u0323t\u0323ha */
+            "\u0920\u094D\u0920",          /* t\u0323ht\u0323ha*/
+            "\u0921\u094D\u0921",          /* d\u0323d\u0323a  */
+            "\u0921\u094D\u0922",          /* d\u0323d\u0323ha */
+            "\u091F\u094D\u092F",          /* t\u0323ya  */
+            "\u0920\u094D\u092F",          /* t\u0323hya */
+            "\u0921\u094D\u092F",          /* d\u0323ya  */
+            "\u0922\u094D\u092F",          /* d\u0323hya */
+        // "hma",                         /* hma         */
+            "\u0939\u094D\u092F",          /* hya         */
+            "\u0936\u0943",                /* s\u0301r\u0325a  */
+            "\u0936\u094D\u091A",          /* s\u0301ca  */
+            "\u090d",                      /* e\u0306    */
+            "\u0938\u0902\u091C\u0940\u092C\u094D \u0938\u0947\u0928\u0917\u0941\u092A\u094D\u0924",
+            "\u0906\u0928\u0902\u0926\u094D \u0935\u0926\u094D\u0926\u093F\u0930\u093E\u091C\u0941",
+        };
+
+        Transliterator latinToDev=Transliterator.getInstance("Latin-Devanagari", Transliterator.FORWARD );
+        Transliterator devToLatin=Transliterator.getInstance("Devanagari-Latin", Transliterator.FORWARD);
+
+        for(int i= 0; i<source.length; i++){
+            expect(latinToDev,(source[i]),(expected[i]));
+            expect(devToLatin,(expected[i]),(source[i]));
+        }
+
+    }
+    public void  TestTeluguLatinRT(){
+        String[]  source = {
+            "raghur\u0101m vi\u015Bvan\u0101dha",                           /* Raghuram Viswanadha    */
+            "\u0101nand vaddir\u0101ju",                                    /* Anand Vaddiraju 	      */
+            "r\u0101j\u012Bv ka\u015Barab\u0101da",                         /* Rajeev Kasarabada      */
+            "san\u0304j\u012Bv ka\u015Barab\u0101da",                       /* sanjeev kasarabada     */
+            "san\u0304j\u012Bb sen'gupta",                                  /* sanjib sengupata 	  */
+            "amar\u0113ndra hanum\u0101nula",                               /* Amarendra hanumanula   */
+            "ravi kum\u0101r vi\u015Bvan\u0101dha",                         /* Ravi Kumar Viswanadha  */
+            "\u0101ditya kandr\u0113gula",                                  /* Aditya Kandregula      */
+            "\u015Br\u012Bdhar ka\u1E47\u1E6Dama\u015Be\u1E6D\u1E6Di",      /* Shridhar Kantamsetty   */
+            "m\u0101dhav de\u015Be\u1E6D\u1E6Di"                            /* Madhav Desetty         */
+        };
+
+        String[]  expected = {
+            "\u0c30\u0c18\u0c41\u0c30\u0c3e\u0c2e\u0c4d \u0c35\u0c3f\u0c36\u0c4d\u0c35\u0c28\u0c3e\u0c27",
+            "\u0c06\u0c28\u0c02\u0c26\u0c4d \u0C35\u0C26\u0C4D\u0C26\u0C3F\u0C30\u0C3E\u0C1C\u0C41",
+            "\u0c30\u0c3e\u0c1c\u0c40\u0c35\u0c4d \u0c15\u0c36\u0c30\u0c2c\u0c3e\u0c26",
+            "\u0c38\u0c02\u0c1c\u0c40\u0c35\u0c4d \u0c15\u0c36\u0c30\u0c2c\u0c3e\u0c26",
+            "\u0c38\u0c02\u0c1c\u0c40\u0c2c\u0c4d \u0c38\u0c46\u0c28\u0c4d\u0c17\u0c41\u0c2a\u0c4d\u0c24",
+            "\u0c05\u0c2e\u0c30\u0c47\u0c02\u0c26\u0c4d\u0c30 \u0c39\u0c28\u0c41\u0c2e\u0c3e\u0c28\u0c41\u0c32",
+            "\u0c30\u0c35\u0c3f \u0c15\u0c41\u0c2e\u0c3e\u0c30\u0c4d \u0c35\u0c3f\u0c36\u0c4d\u0c35\u0c28\u0c3e\u0c27",
+            "\u0c06\u0c26\u0c3f\u0c24\u0c4d\u0c2f \u0C15\u0C02\u0C26\u0C4D\u0C30\u0C47\u0C17\u0C41\u0c32",
+            "\u0c36\u0c4d\u0c30\u0c40\u0C27\u0C30\u0C4D \u0c15\u0c02\u0c1f\u0c2e\u0c36\u0c46\u0c1f\u0c4d\u0c1f\u0c3f",
+            "\u0c2e\u0c3e\u0c27\u0c35\u0c4d \u0c26\u0c46\u0c36\u0c46\u0c1f\u0c4d\u0c1f\u0c3f",
+        };
+
+
+        Transliterator latinToDev=Transliterator.getInstance("Latin-Telugu", Transliterator.FORWARD);
+        Transliterator devToLatin=Transliterator.getInstance("Telugu-Latin", Transliterator.FORWARD);
+
+        for(int i= 0; i<source.length; i++){
+            expect(latinToDev,(source[i]),(expected[i]));
+            expect(devToLatin,(expected[i]),(source[i]));
+        }
+    }
+
+    public void  TestSanskritLatinRT(){
+        int MAX_LEN =15;
+        String[]  source = {
+            "rmk\u1E63\u0113t",
+            "\u015Br\u012Bmad",
+            "bhagavadg\u012Bt\u0101",
+            "adhy\u0101ya",
+            "arjuna",
+            "vi\u1E63\u0101da",
+            "y\u014Dga",
+            "dhr\u0325tar\u0101\u1E63\u1E6Dra",
+            "uv\u0101cr\u0325",
+            "dharmak\u1E63\u0113tr\u0113",
+            "kuruk\u1E63\u0113tr\u0113",
+            "samav\u0113t\u0101",
+            "yuyutsava\u1E25",
+            "m\u0101mak\u0101\u1E25",
+        // "p\u0101\u1E47\u1E0Dav\u0101\u015Bcaiva",
+            "kimakurvata",
+            "san\u0304java",
+        };
+        String[]  expected = {
+            "\u0930\u094D\u092E\u094D\u0915\u094D\u0937\u0947\u0924\u094D",
+            "\u0936\u094d\u0930\u0940\u092e\u0926\u094d",
+            "\u092d\u0917\u0935\u0926\u094d\u0917\u0940\u0924\u093e",
+            "\u0905\u0927\u094d\u092f\u093e\u092f",
+            "\u0905\u0930\u094d\u091c\u0941\u0928",
+            "\u0935\u093f\u0937\u093e\u0926",
+            "\u092f\u094b\u0917",
+            "\u0927\u0943\u0924\u0930\u093e\u0937\u094d\u091f\u094d\u0930",
+            "\u0909\u0935\u093E\u091A\u0943",
+            "\u0927\u0930\u094d\u092e\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947",
+            "\u0915\u0941\u0930\u0941\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947",
+            "\u0938\u092e\u0935\u0947\u0924\u093e",
+            "\u092f\u0941\u092f\u0941\u0924\u094d\u0938\u0935\u0903",
+            "\u092e\u093e\u092e\u0915\u093e\u0903",
+        //"\u092a\u093e\u0923\u094d\u0921\u0935\u093e\u0936\u094d\u091a\u0948\u0935",
+            "\u0915\u093f\u092e\u0915\u0941\u0930\u094d\u0935\u0924",
+            "\u0938\u0902\u091c\u0935",
+        };
+
+        Transliterator latinToDev=Transliterator.getInstance("Latin-Devanagari", Transliterator.FORWARD);
+        Transliterator devToLatin=Transliterator.getInstance("Devanagari-Latin", Transliterator.FORWARD);
+        for(int i= 0; i<MAX_LEN; i++){
+            expect(latinToDev,(source[i]),(expected[i]));
+            expect(devToLatin,(expected[i]),(source[i]));
+        }
+    }
+
+    public void  TestCompoundLatinRT(){
+        int MAX_LEN =15;
+        String[]  source = {
+            "rmk\u1E63\u0113t",
+            "\u015Br\u012Bmad",
+            "bhagavadg\u012Bt\u0101",
+            "adhy\u0101ya",
+            "arjuna",
+            "vi\u1E63\u0101da",
+            "y\u014Dga",
+            "dhr\u0325tar\u0101\u1E63\u1E6Dra",
+            "uv\u0101cr\u0325",
+            "dharmak\u1E63\u0113tr\u0113",
+            "kuruk\u1E63\u0113tr\u0113",
+            "samav\u0113t\u0101",
+            "yuyutsava\u1E25",
+            "m\u0101mak\u0101\u1E25",
+        // "p\u0101\u1E47\u1E0Dav\u0101\u015Bcaiva",
+            "kimakurvata",
+            "san\u0304java"
+        };
+        String[]  expected = {
+            "\u0930\u094D\u092E\u094D\u0915\u094D\u0937\u0947\u0924\u094D",
+            "\u0936\u094d\u0930\u0940\u092e\u0926\u094d",
+            "\u092d\u0917\u0935\u0926\u094d\u0917\u0940\u0924\u093e",
+            "\u0905\u0927\u094d\u092f\u093e\u092f",
+            "\u0905\u0930\u094d\u091c\u0941\u0928",
+            "\u0935\u093f\u0937\u093e\u0926",
+            "\u092f\u094b\u0917",
+            "\u0927\u0943\u0924\u0930\u093e\u0937\u094d\u091f\u094d\u0930",
+            "\u0909\u0935\u093E\u091A\u0943",
+            "\u0927\u0930\u094d\u092e\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947",
+            "\u0915\u0941\u0930\u0941\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947",
+            "\u0938\u092e\u0935\u0947\u0924\u093e",
+            "\u092f\u0941\u092f\u0941\u0924\u094d\u0938\u0935\u0903",
+            "\u092e\u093e\u092e\u0915\u093e\u0903",
+        //  "\u092a\u093e\u0923\u094d\u0921\u0935\u093e\u0936\u094d\u091a\u0948\u0935",
+            "\u0915\u093f\u092e\u0915\u0941\u0930\u094d\u0935\u0924",
+            "\u0938\u0902\u091c\u0935"
+        };
+
+        Transliterator latinToDevToLatin=Transliterator.getInstance("Latin-Devanagari;Devanagari-Latin", Transliterator.FORWARD);
+        Transliterator devToLatinToDev=Transliterator.getInstance("Devanagari-Latin;Latin-Devanagari", Transliterator.FORWARD);
+        for(int i= 0; i<MAX_LEN; i++){
+            expect(latinToDevToLatin,(source[i]),(source[i]));
+            expect(devToLatinToDev,(expected[i]),(expected[i]));
+        }
+    }
+    /**
+     * Test Gurmukhi-Devanagari Tippi and Bindi
+     */
+    public void TestGurmukhiDevanagari(){
+        // the rule says:
+        // (\u0902) (when preceded by vowel)      --->  (\u0A02)
+        // (\u0902) (when preceded by consonant)  --->  (\u0A70)
+
+        UnicodeSet vowel =new UnicodeSet("[\u0905-\u090A \u090F\u0910\u0913\u0914 \u093e-\u0942\u0947\u0948\u094B\u094C\u094D]");
+        UnicodeSet non_vowel =new UnicodeSet("[\u0915-\u0928\u092A-\u0930]");
+
+        UnicodeSetIterator vIter = new UnicodeSetIterator(vowel);
+        UnicodeSetIterator nvIter = new UnicodeSetIterator(non_vowel);
+        Transliterator trans = Transliterator.getInstance("Devanagari-Gurmukhi");
+        StringBuffer src = new StringBuffer(" \u0902");
+        StringBuffer expect = new StringBuffer(" \u0A02");
+        while(vIter.next()){
+            src.setCharAt(0,(char) vIter.codepoint);
+            expect.setCharAt(0,(char) (vIter.codepoint+0x0100));
+            expect(trans,src.toString(),expect.toString());
+        }
+        
+        expect.setCharAt(1,'\u0A70');
+        while(nvIter.next()){
+            //src.setCharAt(0,(char) nvIter.codepoint);
+            src.setCharAt(0,(char)nvIter.codepoint);
+            expect.setCharAt(0,(char) (nvIter.codepoint+0x0100));
+            expect(trans,src.toString(),expect.toString());
+        }
+    }
+    /**
+     * Test instantiation from a locale.
+     */
+    public void TestLocaleInstantiation() {
+        Transliterator t = Transliterator.getInstance("ru_RU-Latin");
+        expect(t, "\u0430", "a");
+
+        t = Transliterator.getInstance("en-el");
+        expect(t, "a", "\u03B1");
+    }
+
+    /**
+     * Test title case handling of accent (should ignore accents)
+     */
+    public void TestTitleAccents() {
+        Transliterator t = Transliterator.getInstance("Title");
+        expect(t, "a\u0300b can't abe", "A\u0300b Can't Abe");
+    }
+
+    /**
+     * Basic test of a locale resource based rule.
+     */
+    public void TestLocaleResource() {
+        String DATA[] = {
+            // id                    from             to
+            "Latin-Greek/UNGEGN",    "b",             "\u03bc\u03c0",
+            "Latin-el",              "b",             "\u03bc\u03c0",
+            "Latin-Greek",           "b",             "\u03B2",
+            "Greek-Latin/UNGEGN",    "\u03B2",        "v",
+            "el-Latin",              "\u03B2",        "v",
+            "Greek-Latin",           "\u03B2",        "b",
+        };
+        for (int i=0; i<DATA.length; i+=3) {
+            Transliterator t = Transliterator.getInstance(DATA[i]);
+            expect(t, DATA[i+1], DATA[i+2]);
+        }
+    }
+
+    /**
+     * Make sure parse errors reference the right line.
+     */
+    public void TestParseError() {
+        String rule =
+            "a > b;\n" +
+            "# more stuff\n" +
+            "d << b;";
+        try {
+            Transliterator t = Transliterator.createFromRules("ID", rule, Transliterator.FORWARD);
+        } catch (IllegalArgumentException e) {
+            String err = e.getMessage();
+            if (err.indexOf("d << b") >= 0) {
+                logln("Ok: " + err);
+            } else {
+                errln("FAIL: " + err);
+            }
+            return;
+        }
+        errln("FAIL: no syntax error");
+    }
+
+    /**
+     * Make sure sets on output are disallowed.
+     */
+    public void TestOutputSet() {
+        String rule = "$set = [a-cm-n]; b > $set;";
+        Transliterator t = null;
+        try {
+            t = Transliterator.createFromRules("ID", rule, Transliterator.FORWARD);
+        } catch (IllegalArgumentException e) {
+            logln("Ok: " + e.getMessage());
+            return;
+        }
+        errln("FAIL: No syntax error");
+    }
+
+    /**
+     * Test the use variable range pragma, making sure that use of
+     * variable range characters is detected and flagged as an error.
+     */
+    public void TestVariableRange() {
+        String rule = "use variable range 0x70 0x72; a > A; b > B; q > Q;";
+        try {
+            Transliterator t =
+                Transliterator.createFromRules("ID", rule, Transliterator.FORWARD);
+        } catch (IllegalArgumentException e) {
+            logln("Ok: " + e.getMessage());
+            return;
+        }
+        errln("FAIL: No syntax error");
+    }
+
+    /**
+     * Test invalid post context error handling
+     */
+    public void TestInvalidPostContext() {
+        try {
+            Transliterator t =
+                Transliterator.createFromRules("ID", "a}b{c>d;", Transliterator.FORWARD);
+        } catch (IllegalArgumentException e) {
+            String msg = e.getMessage();
+            if (msg.indexOf("a}b{c") >= 0) {
+                logln("Ok: " + msg);
+            } else {
+                errln("FAIL: " + msg);
+            }
+            return;
+        }
+        errln("FAIL: No syntax error");
+    }
+
+    /**
+     * Test ID form variants
+     */
+    public void TestIDForms() {
+        String DATA[] = {
+            "NFC", null, "NFD",
+            "nfd", null, "NFC", // make sure case is ignored
+            "Any-NFKD", null, "Any-NFKC",
+            "Null", null, "Null",
+            "-nfkc", "nfkc", "NFKD",
+            "-nfkc/", "nfkc", "NFKD",
+            "Latin-Greek/UNGEGN", null, "Greek-Latin/UNGEGN",
+            "Greek/UNGEGN-Latin", "Greek-Latin/UNGEGN", "Latin-Greek/UNGEGN",
+            "Bengali-Devanagari/", "Bengali-Devanagari", "Devanagari-Bengali",
+            "Source-", null, null,
+            "Source/Variant-", null, null,
+            "Source-/Variant", null, null,
+            "/Variant", null, null,
+            "/Variant-", null, null,
+            "-/Variant", null, null,
+            "-/", null, null,
+            "-", null, null,
+            "/", null, null,
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            String ID = DATA[i];
+            String expID = DATA[i+1];
+            String expInvID = DATA[i+2];
+            boolean expValid = (expInvID != null);
+            if (expID == null) {
+                expID = ID;
+            }
+            try {
+                Transliterator t =
+                    Transliterator.getInstance(ID);
+                Transliterator u = t.getInverse();
+                if (t.getID().equals(expID) &&
+                    u.getID().equals(expInvID)) {
+                    logln("Ok: " + ID + ".getInverse() => " + expInvID);
+                } else {
+                    errln("FAIL: getInstance(" + ID + ") => " +
+                          t.getID() + " x getInverse() => " + u.getID() +
+                          ", expected " + expInvID);
+                }
+            } catch (IllegalArgumentException e) {
+                if (!expValid) {
+                    logln("Ok: getInstance(" + ID + ") => " + e.getMessage());
+                } else {
+                    errln("FAIL: getInstance(" + ID + ") => " + e.getMessage());
+                }
+            }
+        }
+    }
+
+    void checkRules(String label, Transliterator t2, String testRulesForward) {
+        String rules2 = t2.toRules(true);
+        //rules2 = TestUtility.replaceAll(rules2, new UnicodeSet("[' '\n\r]"), "");
+        rules2 = TestUtility.replace(rules2, " ", "");
+        rules2 = TestUtility.replace(rules2, "\n", "");
+        rules2 = TestUtility.replace(rules2, "\r", "");
+        testRulesForward = TestUtility.replace(testRulesForward, " ", "");
+
+        if (!rules2.equals(testRulesForward)) {
+            errln(label);
+            logln("GENERATED RULES: " + rules2);
+            logln("SHOULD BE:       " + testRulesForward);
+        }
+    }
+
+    /**
+     * Mark's toRules test.
+     */
+    public void TestToRulesMark() {
+
+        String testRules =
+            "::[[:Latin:][:Mark:]];"
+            + "::NFKD (NFC);"
+            + "::Lower (Lower);"
+            + "a <> \\u03B1;" // alpha
+            + "::NFKC (NFD);"
+            + "::Upper (Lower);"
+            + "::Lower ();"
+            + "::([[:Greek:][:Mark:]]);"
+            ;
+        String testRulesForward =
+            "::[[:Latin:][:Mark:]];"
+            + "::NFKD(NFC);"
+            + "::Lower(Lower);"
+            + "a > \\u03B1;"
+            + "::NFKC(NFD);"
+            + "::Upper (Lower);"
+            + "::Lower ();"
+            ;
+        String testRulesBackward =
+            "::[[:Greek:][:Mark:]];"
+            + "::Lower (Upper);"
+            + "::NFD(NFKC);"
+            + "\\u03B1 > a;"
+            + "::Lower(Lower);"
+            + "::NFC(NFKD);"
+            ;
+        String source = "\u00E1"; // a-acute
+        String target = "\u03AC"; // alpha-acute
+
+        Transliterator t2 = Transliterator.createFromRules("source-target", testRules, Transliterator.FORWARD);
+        Transliterator t3 = Transliterator.createFromRules("target-source", testRules, Transliterator.REVERSE);
+
+        expect(t2, source, target);
+        expect(t3, target, source);
+
+        checkRules("Failed toRules FORWARD", t2, testRulesForward);
+        checkRules("Failed toRules BACKWARD", t3, testRulesBackward);
+    }
+
+    /**
+     * Test Escape and Unescape transliterators.
+     */
+    public void TestEscape() {
+        expect(Transliterator.getInstance("Hex-Any"),
+               "\\x{40}\\U00000031&#x32;&#81;",
+               "@12Q");
+        expect(Transliterator.getInstance("Any-Hex/C"),
+               CharsToUnicodeString("A\\U0010BEEF\\uFEED"),
+               "\\u0041\\U0010BEEF\\uFEED");
+        expect(Transliterator.getInstance("Any-Hex/Java"),
+               CharsToUnicodeString("A\\U0010BEEF\\uFEED"),
+               "\\u0041\\uDBEF\\uDEEF\\uFEED");
+        expect(Transliterator.getInstance("Any-Hex/Perl"),
+               CharsToUnicodeString("A\\U0010BEEF\\uFEED"),
+               "\\x{41}\\x{10BEEF}\\x{FEED}");
+    }
+
+    /**
+     * Make sure display names of variants look reasonable.
+     */
+    public void TestDisplayName() {
+        String DATA[] = {
+            // ID, forward name, reverse name
+            // Update the text as necessary -- the important thing is
+            // not the text itself, but how various cases are handled.
+
+            // Basic test
+            "Any-Hex", "Any to Hex Escape", "Hex Escape to Any",
+
+            // Variants
+            "Any-Hex/Perl", "Any to Hex Escape/Perl", "Hex Escape to Any/Perl",
+
+            // Target-only IDs
+            "NFC", "Any to NFC", "Any to NFD",
+        };
+
+        Locale US = Locale.US;
+
+        for (int i=0; i<DATA.length; i+=3) {
+            String name = Transliterator.getDisplayName(DATA[i], US);
+            if (!name.equals(DATA[i+1])) {
+                errln("FAIL: " + DATA[i] + ".getDisplayName() => " +
+                      name + ", expected " + DATA[i+1]);
+            } else {
+                logln("Ok: " + DATA[i] + ".getDisplayName() => " + name);
+            }
+            Transliterator t = Transliterator.getInstance(DATA[i], Transliterator.REVERSE);
+            name = Transliterator.getDisplayName(t.getID(), US);
+            if (!name.equals(DATA[i+2])) {
+                errln("FAIL: " + t.getID() + ".getDisplayName() => " +
+                      name + ", expected " + DATA[i+2]);
+            } else {
+                logln("Ok: " + t.getID() + ".getDisplayName() => " + name);
+            }
+        }
+    }
+
+    /**
+     * Test anchor masking
+     */
+    public void TestAnchorMasking() {
+        String rule = "^a > Q; a > q;";
+        try {
+            Transliterator t = Transliterator.createFromRules("ID", rule, Transliterator.FORWARD);
+        } catch (IllegalArgumentException e) {
+            errln("FAIL: " + rule + " => " + e);
+        }
+    }
+
+    static final String[][] registerRules = {
+        {"Any-Dev1", "x > X; y > Y;"},
+        {"Any-Dev2", "XY > Z"},
+        {"Greek-Latin/FAKE",
+            "[^[:L:][:M:]] { \u03bc\u03c0 > b ; "+
+            "\u03bc\u03c0 } [^[:L:][:M:]] > b ; "+
+            "[^[:L:][:M:]] { [\u039c\u03bc][\u03a0\u03c0] > B ; "+
+            "[\u039c\u03bc][\u03a0\u03c0] } [^[:L:][:M:]] > B ;"
+            },
+    };
+
+    static final String DESERET_DEE = UTF16.valueOf(0x10414);
+    static final String DESERET_dee = UTF16.valueOf(0x1043C);
+
+    static final String[][] testCases = {
+
+        // NORMALIZATION
+        // should add more test cases
+        {"NFD" , "a\u0300 \u00E0 \u1100\u1161 \uFF76\uFF9E\u03D3"},
+        {"NFC" , "a\u0300 \u00E0 \u1100\u1161 \uFF76\uFF9E\u03D3"},
+        {"NFKD", "a\u0300 \u00E0 \u1100\u1161 \uFF76\uFF9E\u03D3"},
+        {"NFKC", "a\u0300 \u00E0 \u1100\u1161 \uFF76\uFF9E\u03D3"},
+
+        // mp -> b BUG
+        {"Greek-Latin/UNGEGN", "(\u03BC\u03C0)", "(b)"},
+        {"Greek-Latin/FAKE", "(\u03BC\u03C0)", "(b)"},
+
+        // check for devanagari bug
+        {"nfd;Dev1;Dev2;nfc", "xy", "Z"},
+
+        // ff, i, dotless-i, I, dotted-I, LJLjlj deseret deeDEE
+        {"Title", "ab'cD ffi\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE,
+                  "Ab'cd Ffi\u0131ii\u0307 \u01C8\u01C9\u01C9 " + DESERET_DEE + DESERET_dee},
+        //TODO: enable this test once Titlecase works right
+        //{"Title", "\uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE,
+        //          "Ffi\u0131ii \u01C8\u01C9\u01C9 " + DESERET_DEE + DESERET_dee},
+        
+        {"Upper", "ab'cD \uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE,
+                  "AB'CD FFIII\u0130 \u01C7\u01C7\u01C7 " + DESERET_DEE + DESERET_DEE},
+        {"Lower", "ab'cD \uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE,
+                  "ab'cd \uFB00i\u0131ii\u0307 \u01C9\u01C9\u01C9 " + DESERET_dee + DESERET_dee},
+                  
+        {"Upper", "ab'cD \uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE},
+        {"Lower", "ab'cD \uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE},
+
+         // FORMS OF S
+        {"Greek-Latin/UNGEGN", "\u03C3 \u03C3\u03C2 \u03C2\u03C3", "s ss s\u0331s\u0331"},
+        {"Latin-Greek/UNGEGN", "s ss s\u0331s\u0331", "\u03C3 \u03C3\u03C2 \u03C2\u03C3"},
+        {"Greek-Latin", "\u03C3 \u03C3\u03C2 \u03C2\u03C3", "s ss s\u0331s\u0331"},
+        {"Latin-Greek", "s ss s\u0331s\u0331", "\u03C3 \u03C3\u03C2 \u03C2\u03C3"},
+
+        // Tatiana bug
+        // Upper: TAT\u02B9\u00C2NA
+        // Lower: tat\u02B9\u00E2na
+        // Title: Tat\u02B9\u00E2na
+        {"Upper", "tat\u02B9\u00E2na", "TAT\u02B9\u00C2NA"},
+        {"Lower", "TAT\u02B9\u00C2NA", "tat\u02B9\u00E2na"},
+        {"Title", "tat\u02B9\u00E2na", "Tat\u02B9\u00E2na"},
+    };
+
+    public void TestSpecialCases() {
+        
+        for (int i = 0; i < registerRules.length; ++i) {
+            Transliterator t = Transliterator.createFromRules(registerRules[i][0],
+                registerRules[i][1], Transliterator.FORWARD);
+            DummyFactory.add(registerRules[i][0], t);
+        }
+        for (int i = 0; i < testCases.length; ++i) {
+            String name = testCases[i][0];
+            Transliterator t = Transliterator.getInstance(name);
+            String id = t.getID();
+            String source = testCases[i][1];
+            String target = null;
+
+            // Automatic generation of targets, to make it simpler to add test cases (and more fail-safe)
+            
+            if (testCases[i].length > 2)    target = testCases[i][2];
+            else if (id.equalsIgnoreCase("NFD"))    target = com.ibm.icu.text.Normalizer.normalize(source, com.ibm.icu.text.Normalizer.NFD);
+            else if (id.equalsIgnoreCase("NFC"))    target = com.ibm.icu.text.Normalizer.normalize(source, com.ibm.icu.text.Normalizer.NFC);
+            else if (id.equalsIgnoreCase("NFKD"))   target = com.ibm.icu.text.Normalizer.normalize(source, com.ibm.icu.text.Normalizer.NFKD);
+            else if (id.equalsIgnoreCase("NFKC"))   target = com.ibm.icu.text.Normalizer.normalize(source, com.ibm.icu.text.Normalizer.NFKC);
+            else if (id.equalsIgnoreCase("Lower"))  target = UCharacter.toLowerCase(Locale.US, source);
+            else if (id.equalsIgnoreCase("Upper"))  target = UCharacter.toUpperCase(Locale.US, source);
+
+            expect(t, source, target);
+        }
+    }
+
+    // seems like there should be an easier way to just register an instance of a transliterator
+
+    static class DummyFactory implements Transliterator.Factory {
+        static DummyFactory singleton = new DummyFactory();
+        static HashMap m = new HashMap();
+
+        // Since Transliterators are immutable, we don't have to clone on set & get
+        static void add(String ID, Transliterator t) {
+            m.put(ID, t);
+            //System.out.println("Registering: " + ID + ", " + t.toRules(true));
+            Transliterator.registerFactory(ID, singleton);
+        }
+        public Transliterator getInstance(String ID) {
+            return (Transliterator) m.get(ID);
+        }
+    }
+
+    public void TestSurrogateCasing () {
+        // check that casing handles surrogates
+        // titlecase is currently defective
+        int dee = UTF16.charAt(DESERET_dee,0);
+        int DEE = UCharacter.toTitleCase(dee);
+        if (!UTF16.valueOf(DEE).equals(DESERET_DEE)) {
+            errln("Fails titlecase of surrogates" + Integer.toString(dee,16) + ", " + Integer.toString(DEE,16));
+        }
+
+        if (!UCharacter.toUpperCase(DESERET_dee + DESERET_DEE).equals(DESERET_DEE + DESERET_DEE)) {
+            errln("Fails uppercase of surrogates");
+        }
+
+        if (!UCharacter.toLowerCase(DESERET_dee + DESERET_DEE).equals(DESERET_dee + DESERET_dee)) {
+            errln("Fails lowercase of surrogates");
+        }
+    }
+
+    // Check to see that incremental gets at least part way through a reasonable string.
+
+    public void TestIncrementalProgress() {
+        String latinTest = "The Quick Brown Fox.";
+        String devaTest = Transliterator.getInstance("Latin-Devanagari").transliterate(latinTest);
+        String kataTest = Transliterator.getInstance("Latin-Katakana").transliterate(latinTest);
+        String[][] tests = {
+            {"Any", latinTest},
+            {"Latin", latinTest},
+            {"Halfwidth", latinTest},
+            {"Devanagari", devaTest},
+            {"Katakana", kataTest},
+        };
+
+        Enumeration sources = Transliterator.getAvailableSources();
+        while(sources.hasMoreElements()) {
+            String source = (String) sources.nextElement();
+            String test = findMatch(source, tests);
+            if (test == null) {
+                logln("Skipping " + source + "-X");
+                continue;
+            }
+            Enumeration targets = Transliterator.getAvailableTargets(source);
+            while(targets.hasMoreElements()) {
+                String target = (String) targets.nextElement();
+                Enumeration variants = Transliterator.getAvailableVariants(source, target);
+                while(variants.hasMoreElements()) {
+                    String variant = (String) variants.nextElement();
+                    String id = source + "-" + target + "/" + variant;
+
+                    String filter = getFilter();
+                    if (filter != null && id.indexOf(filter) < 0) continue;
+
+                    Transliterator t = Transliterator.getInstance(id);
+                    CheckIncrementalAux(t, test);
+
+                    String rev = t.transliterate(test);
+                    Transliterator inv = t.getInverse();
+                    CheckIncrementalAux(inv, rev);
+                }
+            }
+        }
+    }
+
+    public String findMatch (String source, String[][] pairs) {
+        for (int i = 0; i < pairs.length; ++i) {
+            if (source.equalsIgnoreCase(pairs[i][0])) return pairs[i][1];
+        }
+        return null;
+    }
+
+    public void CheckIncrementalAux(Transliterator t, String input) {
+
+        Replaceable test = new ReplaceableString(input);
+        Transliterator.Position pos = new Transliterator.Position(0, test.length(), 0, test.length());
+        t.transliterate(test, pos);
+        boolean gotError = false;
+
+        // we have a few special cases. Any-Remove (pos.start = 0, but also = limit) and U+XXXXX?X?
+
+        if (pos.start == 0 && pos.limit != 0 && !t.getID().equals("Hex-Any/Unicode")) {
+            errln("No Progress, " + t.getID() + ": " + Utility.formatInput(test, pos));
+            gotError = true;
+        } else {
+            logln("PASS Progress, " + t.getID() + ": " + Utility.formatInput(test, pos));
+        }
+        t.finishTransliteration(test, pos);
+        if (pos.start != pos.limit) {
+            errln("Incomplete, " + t.getID() + ":  " + Utility.formatInput(test, pos));
+            gotError = true;
+        }
+    }
+
+    public void TestFunction() {
+        // Careful with spacing and ';' here:  Phrase this exactly
+        // as toRules() is going to return it.  If toRules() changes
+        // with regard to spacing or ';', then adjust this string.
+        String rule =
+            "([:Lu:]) > $1 '(' &Lower( $1 ) '=' &Hex( &Any-Lower( $1 ) ) ')';";
+
+        Transliterator t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules failed");
+            return;
+        }
+
+        String r = t.toRules(true);
+        if (r.equals(rule)) {
+            logln("OK: toRules() => " + r);
+        } else {
+            errln("FAIL: toRules() => " + r +
+                  ", expected " + rule);
+        }
+        
+        expect(t, "The Quick Brown Fox",
+               "T(t=\\u0074)he Q(q=\\u0071)uick B(b=\\u0062)rown F(f=\\u0066)ox");
+        rule =
+            "([^\\ -\\u007F]) > &Hex/Unicode( $1 ) ' ' &Name( $1 ) ;";
+
+        t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules failed");
+            return;
+        }
+
+        r = t.toRules(true);
+        if (r.equals(rule)) {
+            logln("OK: toRules() => " + r);
+        } else {
+            errln("FAIL: toRules() => " + r +
+                  ", expected " + rule);
+        }
+        
+        expect(t, "\u0301",
+               "U+0301 {COMBINING ACUTE ACCENT}");
+    }
+
+    public void TestInvalidBackRef() {
+        String rule =  ". > $1;";
+        String rule2 ="(.) <> &hex/unicode($1) &name($1); . > $1; [{}] >\u0020;";
+        try {
+            Transliterator t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+            if (t != null) {
+                errln("FAIL: createFromRules should have returned NULL");
+            }
+	        errln("FAIL: Ok: . > $1; => no error");
+	        Transliterator t2= Transliterator.createFromRules("Test2", rule2, Transliterator.FORWARD);
+            if (t2 != null) {
+                errln("FAIL: createFromRules should have returned NULL");
+            }
+	        errln("FAIL: Ok: . > $1; => no error");
+        } catch (IllegalArgumentException e) {        
+          	 logln("Ok: . > $1; => " + e.getMessage());
+        }
+    }
+
+    public void TestMulticharStringSet() {
+        // Basic testing
+        String rule =
+            "       [{aa}]       > x;" +
+            "         a          > y;" +
+            "       [b{bc}]      > z;" +
+            "[{gd}] { e          > q;" +
+            "         e } [{fg}] > r;" ;
+        
+        Transliterator t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules failed");
+            return;
+        }
+        
+        expect(t, "a aa ab bc d gd de gde gdefg ddefg",
+                  "y x yz z d gd de gdq gdqfg ddrfg");
+
+        // Overlapped string test.  Make sure that when multiple
+        // strings can match that the longest one is matched.
+        rule =
+            "    [a {ab} {abc}]    > x;" +
+            "           b          > y;" +
+            "           c          > z;" +
+            " q [t {st} {rst}] { e > p;" ;
+        
+        t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules failed");
+            return;
+        }
+        
+        expect(t, "a ab abc qte qste qrste",
+                  "x x x qtp qstp qrstp");
+    }
+
+    /**
+     * Test that user-registered transliterators can be used under function
+     * syntax.
+     */
+    public void TestUserFunction() {
+        Transliterator t;
+
+        // There's no need to register inverses if we don't use them
+        TestUserFunctionFactory.add("Any-gif",
+            Transliterator.createFromRules("gif",
+                "'\\'u(..)(..) > '<img src=\"http://www.unicode.org/gifs/24/' $1 '/U' $1$2 '.gif\">';",
+                Transliterator.FORWARD));
+        //TestUserFunctionFactory.add("gif-Any", Transliterator.getInstance("Any-Null"));
+
+        TestUserFunctionFactory.add("Any-RemoveCurly",
+            Transliterator.createFromRules("RemoveCurly", "[\\{\\}] > ;", Transliterator.FORWARD));
+        //TestUserFunctionFactory.add("RemoveCurly-Any", Transliterator.getInstance("Any-Null"));
+
+        logln("Trying &hex");
+        t = Transliterator.createFromRules("hex2", "(.) > &hex($1);", Transliterator.FORWARD);
+        logln("Registering");
+        TestUserFunctionFactory.add("Any-hex2", t);
+        t = Transliterator.getInstance("Any-hex2");
+        expect(t, "abc", "\\u0061\\u0062\\u0063");
+
+        logln("Trying &gif");
+        t = Transliterator.createFromRules("gif2", "(.) > &Gif(&Hex2($1));", Transliterator.FORWARD);
+        logln("Registering");
+        TestUserFunctionFactory.add("Any-gif2", t);
+        t = Transliterator.getInstance("Any-gif2");
+        expect(t, "ab", "<img src=\"http://www.unicode.org/gifs/24/00/U0061.gif\">" +
+               "<img src=\"http://www.unicode.org/gifs/24/00/U0062.gif\">");
+
+        // Test that filters are allowed after &
+        t = Transliterator.createFromRules("test",
+                "(.) > &Hex($1) ' ' &[\\{\\}]Remove(&Name($1)) ' ';", Transliterator.FORWARD);
+        expect(t, "abc", "\\u0061 LATIN SMALL LETTER A \\u0062 LATIN SMALL LETTER B \\u0063 LATIN SMALL LETTER C ");
+
+        // Unregister our test stuff
+        TestUserFunctionFactory.unregister();
+    }
+
+    static class TestUserFunctionFactory implements Transliterator.Factory {
+        static TestUserFunctionFactory singleton = new TestUserFunctionFactory();
+        static HashMap m = new HashMap();
+
+        static void add(String ID, Transliterator t) {
+            m.put(new CaseInsensitiveString(ID), t);
+            Transliterator.registerFactory(ID, singleton);
+        }
+
+        public Transliterator getInstance(String ID) {
+            return (Transliterator) m.get(new CaseInsensitiveString(ID));
+        }
+        
+        static void unregister() {
+            Iterator ids = m.keySet().iterator();
+            while (ids.hasNext()) {
+                CaseInsensitiveString id = (CaseInsensitiveString) ids.next();
+                Transliterator.unregister(id.getString());
+                ids.remove(); // removes pair from m
+            }
+        }
+    }
+
+    /**
+     * Test the Any-X transliterators.
+     */
+    public void TestAnyX() {
+        Transliterator anyLatin =
+            Transliterator.getInstance("Any-Latin", Transliterator.FORWARD);
+        
+        expect(anyLatin,
+               "greek:\u03B1\u03B2\u03BA\u0391\u0392\u039A hiragana:\u3042\u3076\u304F cyrillic:\u0430\u0431\u0446",
+               "greek:abkABK hiragana:abuku cyrillic:abc");
+    }
+
+    /**
+     * Test the source and target set API.  These are only implemented
+     * for RBT and CompoundTransliterator at this time.
+     */
+    public void TestSourceTargetSet() {
+        // Rules
+        String r =
+            "a > b; " +
+            "r [x{lu}] > q;";
+
+        // Expected source
+        UnicodeSet expSrc = new UnicodeSet("[arx{lu}]");
+
+        // Expected target
+        UnicodeSet expTrg = new UnicodeSet("[bq]");
+
+        Transliterator t = Transliterator.createFromRules("test", r, Transliterator.FORWARD);
+        UnicodeSet src = t.getSourceSet();
+        UnicodeSet trg = t.getTargetSet();
+
+        if (src.equals(expSrc) && trg.equals(expTrg)) {
+            logln("Ok: " + r + " => source = " + src.toPattern(true) +
+                  ", target = " + trg.toPattern(true));
+        } else {
+            errln("FAIL: " + r + " => source = " + src.toPattern(true) +
+                  ", expected " + expSrc.toPattern(true) +
+                  "; target = " + trg.toPattern(true) +
+                  ", expected " + expTrg.toPattern(true));
+        }
+    }
+
+    /**
+     * Test handling of rule whitespace, for both RBT and UnicodeSet.
+     */
+    public void TestRuleWhitespace() {
+        // Rules
+        String r = "a > \u200E b;";
+
+        Transliterator t = Transliterator.createFromRules("test", r, Transliterator.FORWARD);
+
+        expect(t, "a", "b");
+
+        // UnicodeSet
+        UnicodeSet set = new UnicodeSet("[a \u200E]");
+
+        if (set.contains(0x200E)) {
+            errln("FAIL: U+200E not being ignored by UnicodeSet");
+        }
+    }
+
+    //======================================================================
+    // These tests are not mirrored (yet) in icu4c at
+    // source/test/intltest/transtst.cpp
+    //======================================================================
+
+    /**
+     * Improve code coverage.
+     */
+    public void TestCoverage() {
+        // NullTransliterator
+        Transliterator t = Transliterator.getInstance("Null", Transliterator.FORWARD);
+        expect(t, "a", "a");
+    }
+
+    //======================================================================
+    // Support methods
+    //======================================================================
+    void expect(String rules,
+                String source,
+                String expectedResult,
+                Transliterator.Position pos) {
+        Transliterator t = Transliterator.createFromRules("<ID>", rules, Transliterator.FORWARD);
+        expect(t, source, expectedResult, pos);
+    }
+
+    void expect(String rules, String source, String expectedResult) {
+        expect(rules, source, expectedResult, null);
+    }
+
+    void expect(Transliterator t, String source, String expectedResult,
+                Transliterator reverseTransliterator) {
+        expect(t, source, expectedResult);
+        if (reverseTransliterator != null) {
+            expect(reverseTransliterator, expectedResult, source);
+        }
+    }
+
+    void expect(Transliterator t, String source, String expectedResult) {
+        expect(t, source, expectedResult, (Transliterator.Position) null);
+    }
+
+    void expect(Transliterator t, String source, String expectedResult,
+                Transliterator.Position pos) {
+        if (pos == null) {
+            String result = t.transliterate(source);
+            if (!expectAux(t.getID() + ":String", source, result, expectedResult)) return;
+        }
+
+        Transliterator.Position index = null;
+        if (pos == null) {
+            index = new Transliterator.Position(0, source.length(), 0, source.length());
+        } else {
+            index = new Transliterator.Position(pos.contextStart, pos.contextLimit,
+                                                pos.start, pos.limit);
+        }
+
+        ReplaceableString rsource = new ReplaceableString(source);
+
+        t.finishTransliteration(rsource, index);
+        // Do it all at once -- below we do it incrementally
+
+        if (index.start != index.limit) {
+            expectAux(t.getID() + ":UNFINISHED", source,
+                "start: " + index.start + ", limit: " + index.limit, false, expectedResult);
+            return;
+        }
+        String result = rsource.toString();
+        if (!expectAux(t.getID() + ":Replaceable", source, result, expectedResult)) return;
+
+
+        if (pos == null) {
+            index = new Transliterator.Position();
+        } else {
+            index = new Transliterator.Position(pos.contextStart, pos.contextLimit,
+                                                pos.start, pos.limit);
+        }
+
+        // Test incremental transliteration -- this result
+        // must be the same after we finalize (see below).
+        Vector v = new Vector();
+        v.add(source);
+        rsource.replace(0, rsource.length(), "");
+        if (pos != null) {
+            rsource.replace(0, 0, source);
+            v.add(Utility.formatInput(rsource, index));
+            t.transliterate(rsource, index);
+            v.add(Utility.formatInput(rsource, index));
+        } else {
+            for (int i=0; i<source.length(); ++i) {
+                //v.add(i == 0 ? "" : " + " + source.charAt(i) + "");
+                //log.append(source.charAt(i)).append(" -> "));
+                t.transliterate(rsource, index, source.charAt(i));
+                //v.add(Utility.formatInput(rsource, index) + source.substring(i+1));
+                v.add(Utility.formatInput(rsource, index) +
+                      ((i<source.length()-1)?(" + '" + source.charAt(i+1) + "' ->"):" =>"));
+            }
+        }
+
+        // As a final step in keyboard transliteration, we must call
+        // transliterate to finish off any pending partial matches that
+        // were waiting for more input.
+        t.finishTransliteration(rsource, index);
+        result = rsource.toString();
+        //log.append(" => ").append(rsource.toString());
+        v.add(result);
+
+        String[] results = new String[v.size()];
+        v.copyInto(results);
+        expectAux(t.getID() + ":Incremental", results,
+                  result.equals(expectedResult),
+                  expectedResult);
+    }
+
+    boolean expectAux(String tag, String source,
+                   String result, String expectedResult) {
+        return expectAux(tag, new String[] {source, result},
+                  result.equals(expectedResult),
+                  expectedResult);
+    }
+
+    boolean expectAux(String tag, String source,
+                   String result, boolean pass,
+                   String expectedResult) {
+        return expectAux(tag, new String[] {source, result},
+                  pass,
+                  expectedResult);
+    }
+
+    boolean expectAux(String tag, String source,
+                   boolean pass,
+                   String expectedResult) {
+        return expectAux(tag, new String[] {source},
+                  pass,
+                  expectedResult);
+    }
+
+    boolean expectAux(String tag, String[] results, boolean pass,
+                   String expectedResult) {
+        logln((pass?"(":"FAIL: (")+tag+")", pass);
+
+        for (int i = 0; i < results.length; ++i) {
+            String label;
+            if (i == 0) {
+                label = "source:   ";
+            } else if (i == results.length - 1) {
+                label = "result:   ";
+            } else {
+                if (!isVerbose() && pass) continue;
+                label = "interm" + i + ":  ";
+            }
+            logln("    " + label + results[i], pass, false);
+        }
+
+        if (!pass) {
+            logln(  "    expected: " + expectedResult, pass, false);
+        }
+
+        return pass;
+    }
+}
+
+
diff --git a/src/com/ibm/icu/dev/test/translit/UnicodeFilterLogicTest.java b/src/com/ibm/icu/dev/test/translit/UnicodeFilterLogicTest.java
new file mode 100755
index 0000000..c111339
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/UnicodeFilterLogicTest.java
@@ -0,0 +1,197 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/translit/Attic/UnicodeFilterLogicTest.java,v $ 
+ * $Date: 2002/02/25 22:43:57 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.impl.Utility;
+import java.text.*;
+import java.util.*;
+
+/**
+ * @test
+ * @summary UnicodeFilterLogic test 
+ */
+public class UnicodeFilterLogicTest extends TestFmwk {
+
+   public static void main(String[] args) throws Exception {
+        new UnicodeFilterLogicTest().run(args);
+   }
+
+
+   UnicodeFilter Filter1=new UnicodeFilter() {
+        public boolean contains(int c) {
+            if(c == 0x0061 || c == 0x0041 || c == 0x0063 || c == 0x0043)
+                return false;
+            else
+                return true;
+       }
+   };
+   UnicodeFilter Filter2=new UnicodeFilter() {
+        public boolean contains(int c) {
+            if(c == 0x0079 || c == 0x0059 || c == 0x007a || c == 0x005a  || c == 0x0061 || c == 0x0063)
+                return false;
+            else
+                return true;
+        }
+   };
+
+   public void TestAllFilters() {
+
+        Transliterator t1 = Transliterator.getInstance("Any-Hex");
+        String source="abcdABCDyzYZ";
+
+        //sanity testing wihtout any filter
+        expect(t1, "without any Filter", source, "\u0061\u0062\u0063\u0064\u0041\u0042\u0043\u0044\u0079\u007A\u0059\u005A");
+        //sanity testing using the Filter1(acAC) and Filter2(acyzYZ)
+        t1.setFilter(Filter1);
+        expect(t1, "with Filter(acAC)", source, "a\u0062c\u0064A\u0042C\u0044\u0079\u007A\u0059\u005A");
+        t1.setFilter(Filter2);
+        expect(t1, "with Filter2(acyzYZ)", source, "a\u0062c\u0064\u0041\u0042\u0043\u0044yzYZ");
+
+        UnicodeFilter filterNOT=UnicodeFilterLogic.not(Filter1);
+        UnicodeFilter filterAND=UnicodeFilterLogic.and(Filter1, Filter2);
+        UnicodeFilter filterOR=UnicodeFilterLogic.or(Filter1, Filter2);
+
+        checkNOT(t1, Filter1, "Filter(acAC)",  source, "\u0061b\u0063d\u0041B\u0043DyzYZ");
+        checkNOT(t1, Filter2, "Filter(acyzYZ)", source, "\u0061b\u0063dABCD\u0079\u007A\u0059\u005A");
+       // checkNOT(t1, null, "NULL", source, "abcdABCDyzYZ");
+        checkNOT(t1, filterNOT, "FilterNOT(Fitler1(acAC))", source, 
+                 "a\u0062c\u0064A\u0042C\u0044\u0079\u007A\u0059\u005A");
+        checkNOT(t1, filterAND, "FilterAND(Fitler1(acAC),  Filter2(acyzYZ))",  source, 
+                  "\u0061b\u0063d\u0041B\u0043D\u0079\u007A\u0059\u005A");
+        checkNOT(t1, filterOR, "FilterOR(Fitler1(acAC),  Filter2(acyzYZ))",  source, 
+                 "\u0061b\u0063dABCDyzYZ");
+
+        checkAND(t1, Filter1, Filter2, "Filter1(a,c,A,C), Filter2(acyzYZ)",  source, 
+                 "a\u0062c\u0064A\u0042C\u0044yzYZ");
+        checkAND(t1, Filter2, Filter1, "Filter2(acyzYZ), Filter1(a,c,A,C), ", source, 
+                 "a\u0062c\u0064A\u0042C\u0044yzYZ");
+        checkAND(t1, Filter1, null, "Filter1(a,c,A,C), NULL",  source, 
+                 "a\u0062c\u0064A\u0042C\u0044\u0079\u007A\u0059\u005A");
+        checkAND(t1, null, Filter2, "NULL, Filter2(acyzYZ)",   source, 
+                 "a\u0062c\u0064\u0041\u0042\u0043\u0044yzYZ");
+        checkAND(t1, null, null, "NULL, NULL",  source, 
+                 "\u0061\u0062\u0063\u0064\u0041\u0042\u0043\u0044\u0079\u007A\u0059\u005A");
+        checkAND(t1, filterAND, null, "FilterAND(Fitler1(acAC),  Filter2(acyzYZ)), NULL",  source,
+                  "a\u0062c\u0064A\u0042C\u0044yzYZ");
+        checkAND(t1, filterAND, Filter1, "FilterAND(Fitler1(acAC),  Filter2(acyzYZ)), Filter1(acAC)", source, 
+                 "a\u0062c\u0064A\u0042C\u0044yzYZ");
+        checkAND(t1, filterAND, Filter2, "FilterAND(Fitler1(acAC),  Filter2(acyzYZ)), Filter2(acyzYZ)", source, 
+                 "a\u0062c\u0064A\u0042C\u0044yzYZ");
+        checkAND(t1, Filter1, filterAND, "Filter1(acAC), FilterAND(Filter1(acAC), Fitler1(acAC))", source,
+                  "a\u0062c\u0064A\u0042C\u0044yzYZ");
+        checkAND(t1, Filter2, filterAND, "Filter2(acyzYZ), FilterAND(Filter1(acAC), Fitler1(acAC))", source, 
+                 "a\u0062c\u0064A\u0042C\u0044yzYZ");
+        checkAND(t1, filterOR, null, "FilterOR(Fitler1(acAC),  Filter2(acyzYZ)), NULL",  source, 
+                 "a\u0062c\u0064\u0041\u0042\u0043\u0044\u0079\u007A\u0059\u005A");
+        checkAND(t1, filterOR, Filter1, "FilterOR(Fitler1(acAC),  Filter2(acyzYZ)), Fitler1(acAC)", source,
+                 "a\u0062c\u0064A\u0042C\u0044\u0079\u007A\u0059\u005A");
+        checkAND(t1, filterOR, Filter2, "FilterOR(Fitler1(acAC),  Filter2(acyzYZ)), Fitler2(acyzYZ)", source, 
+                 "a\u0062c\u0064\u0041\u0042\u0043\u0044yzYZ");
+        checkAND(t1, filterNOT, Filter1, "FilterNOT(Fitler1(acAC)), Fitler1(acAC)", source, 
+                 "abcdABCDyzYZ");
+        checkAND(t1, Filter1, filterNOT, "Fitler1(acAC), FilterNOT(Fitler1(acAC))", source, 
+                 "abcdABCDyzYZ");
+        checkAND(t1, filterNOT, Filter2, "FilterNOT(Fitler1(acAC)), Fitler2(acyzYZ)", source, 
+                 "abcd\u0041B\u0043DyzYZ");
+        checkAND(t1, Filter2, filterNOT, "Fitler2(acyzYZ), FilterNOT(Fitler1(acAC))", source, 
+                 "abcd\u0041B\u0043DyzYZ");
+
+        checkOR(t1, Filter1, Filter2, "Filter1(a,c,A,C), Filter2(acyzYZ)",  source,
+                "a\u0062c\u0064\u0041\u0042\u0043\u0044\u0079\u007A\u0059\u005A");
+        checkOR(t1, Filter2, Filter1, "Filter2(acyzYZ), Filter1(a,c,A,C)", source, 
+                "a\u0062c\u0064\u0041\u0042\u0043\u0044\u0079\u007A\u0059\u005A");
+        checkOR(t1, Filter1, null, "Filter1(a,c,A,C), NULL", source, 
+                "a\u0062c\u0064A\u0042C\u0044\u0079\u007A\u0059\u005A");
+        checkOR(t1, null, Filter2, "NULL, Filter2(acyzYZ)",  source, 
+                "a\u0062c\u0064\u0041\u0042\u0043\u0044yzYZ");
+        checkOR(t1, null, null, "NULL, NULL",   source, 
+                "\u0061\u0062\u0063\u0064\u0041\u0042\u0043\u0044\u0079\u007A\u0059\u005A");
+        checkOR(t1, filterAND, null, "FilterAND(Fitler1(acAC),  Filter2(acyzYZ)), NULL", source, 
+                "a\u0062c\u0064A\u0042C\u0044yzYZ");
+        checkOR(t1, filterAND, Filter1, "FilterAND(Fitler1(acAC),  Filter2(acyzYZ)), Filter1(acAC)", source, 
+                "a\u0062c\u0064A\u0042C\u0044\u0079\u007A\u0059\u005A");
+        checkOR(t1, filterAND, Filter2, "FilterAND(Fitler1(acAC),  Filter2(acyzYZ)), Filter2(acyzYZ)", source, 
+                "a\u0062c\u0064\u0041\u0042\u0043\u0044yzYZ");
+        checkOR(t1, Filter1, filterAND, "Filter1(acAC), FilterAND(Filter1(acAC), Fitler1(acAC))", source, 
+                "a\u0062c\u0064A\u0042C\u0044\u0079\u007A\u0059\u005A");
+        checkOR(t1, Filter2, filterAND, "Filter2(acyzYZ), FilterAND(Filter1(acAC), Fitler1(acAC))", source, 
+                "a\u0062c\u0064\u0041\u0042\u0043\u0044yzYZ");
+        checkOR(t1, filterNOT, Filter1, "FilterNOT(Fitler1(acAC)), Fitler1(acAC)", source, 
+                "\u0061\u0062\u0063\u0064\u0041\u0042\u0043\u0044\u0079\u007A\u0059\u005A");
+        checkOR(t1, Filter1, filterNOT, "Fitler1(acAC), FilterNOT(Fitler1(acAC))",  source, 
+                "\u0061\u0062\u0063\u0064\u0041\u0042\u0043\u0044\u0079\u007A\u0059\u005A");
+        checkOR(t1, filterNOT, Filter2, "FilterNOT(Fitler1(acAC)), Fitler1(acyzYZ)",  source, 
+                "\u0061\u0062\u0063\u0064\u0041\u0042\u0043\u0044yzYZ");
+        checkOR(t1, Filter2, filterNOT, "Fitler2(acyzYZ), FilterNOT(Fitler1(acAC))", source, 
+                "\u0061\u0062\u0063\u0064\u0041\u0042\u0043\u0044yzYZ");
+
+  
+}
+    //======================================================================
+    // Support methods
+    //======================================================================
+
+    void checkOR(Transliterator t,
+                   UnicodeFilter f1, 
+                   UnicodeFilter f2, 
+                   String message,
+                   String source,
+                   String expected){
+        UnicodeFilter filter=UnicodeFilterLogic.or(f1, f2);
+        t.setFilter(filter);
+        expect(t, "with FilterOR(" + message + ")", source, expected);
+
+    }
+    void checkAND(Transliterator t,
+                   UnicodeFilter f1, 
+                   UnicodeFilter f2, 
+                   String message,
+                   String source,
+                   String expected){
+        UnicodeFilter filter=UnicodeFilterLogic.and(f1, f2);
+        t.setFilter(filter);
+        expect(t, "with FilterAND(" + message + ")", source, expected);
+
+    }
+    void checkNOT(Transliterator t,
+                   UnicodeFilter f1, 
+                   String message,
+                   String source,
+                   String expected){
+        UnicodeFilter filter=UnicodeFilterLogic.not(f1);
+        t.setFilter(filter);
+        expect(t, "with FilterNOT(" + message + ")", source, expected);
+
+    }  
+    void expect(Transliterator t,  String message,  String source,  String expectedResult) {
+        String rsource = source;
+        t.transliterate(rsource);
+        expectAux(t.getID() + ":Replaceable " + message, source + "->" + rsource, expectedResult.equals(rsource), expectedResult);
+
+    }
+    void expectAux(String tag, String summary, boolean pass, String expectedResult) {
+        if (pass) {
+            logln("(" + tag+ ") " + Utility.escape(summary));
+        } else {
+            errln("FAIL: ("+ tag+ ") "
+                + Utility.escape(summary)
+                + ", expected " + Utility.escape(expectedResult));
+        }
+    }
+
+}
+
+
+
diff --git a/src/com/ibm/icu/dev/test/translit/UnicodeSetTest.java b/src/com/ibm/icu/dev/test/translit/UnicodeSetTest.java
new file mode 100755
index 0000000..20f97d4
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/UnicodeSetTest.java
@@ -0,0 +1,1172 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/translit/UnicodeSetTest.java,v $ 
+ * $Date: 2002/10/09 18:48:37 $ 
+ * $Revision: 1.30.2.1 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.impl.Utility;
+import java.text.*;
+import java.util.*;
+
+/**
+ * @test
+ * @summary General test of UnicodeSet
+ */
+public class UnicodeSetTest extends TestFmwk {
+
+    static final String NOT = "%%%%";
+
+    public static void main(String[] args) throws Exception {
+        new UnicodeSetTest().run(args);
+    }
+
+    /**
+     * Test that toPattern() round trips with syntax characters and
+     * whitespace.
+     */
+    public void TestToPattern() throws Exception {
+        for (int i = 0; i < OTHER_TOPATTERN_TESTS.length; ++i) {
+            checkPat(OTHER_TOPATTERN_TESTS[i], new UnicodeSet(OTHER_TOPATTERN_TESTS[i]));
+        }
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            if ((i <= 0xFF && !UCharacter.isLetter(i)) || UCharacter.isWhitespace(i)) {
+                // check various combinations to make sure they all work.
+                if (i != 0 && !toPatternAux(i, i)) continue;
+                if (!toPatternAux(0, i)) continue;
+                if (!toPatternAux(i, 0xFFFF)) continue;
+            }
+        }
+    }
+    
+    static String[] OTHER_TOPATTERN_TESTS = {
+                "[[:latin:]&[:greek:]]", 
+                "[[:latin:]-[:greek:]]",
+                "[:nonspacing mark:]"
+    };
+    
+    
+    public boolean toPatternAux(int start, int end) {
+        // use Integer.toString because Utility.hex doesn't handle ints
+        String source = "0x" + Integer.toString(start,16).toUpperCase();
+        if (start != end) source += "..0x" + Integer.toString(end,16).toUpperCase();
+        UnicodeSet testSet = new UnicodeSet();
+        testSet.add(start, end);
+        return checkPat(source, testSet);
+    }
+    
+    boolean checkPat (String source, UnicodeSet testSet) {
+        String pat = "";
+        try {
+            // What we want to make sure of is that a pattern generated
+            // by toPattern(), with or without escaped unprintables, can
+            // be passed back into the UnicodeSet constructor.
+            String pat0 = testSet.toPattern(true);
+            if (!checkPat(source + " (escaped)", testSet, pat0)) return false;
+            
+            //String pat1 = unescapeLeniently(pat0);
+            //if (!checkPat(source + " (in code)", testSet, pat1)) return false;
+            
+            String pat2 = testSet.toPattern(false);
+            if (!checkPat(source, testSet, pat2)) return false;
+            
+            //String pat3 = unescapeLeniently(pat2);
+            //if (!checkPat(source + " (in code)", testSet, pat3)) return false;
+            
+            //logln(source + " => " + pat0 + ", " + pat1 + ", " + pat2 + ", " + pat3);
+            logln(source + " => " + pat0 + ", " + pat2);
+        } catch (Exception e) {
+            errln("EXCEPTION in toPattern: " + source + " => " + pat);
+            return false;
+        }
+        return true;
+    }
+    
+    boolean checkPat (String source, UnicodeSet testSet, String pat) {
+        UnicodeSet testSet2 = new UnicodeSet(pat);
+        if (!testSet2.equals(testSet)) {
+            errln("Fail toPattern: " + source + " => " + pat);
+            return false;
+        }
+        return true;
+    }
+    
+    
+    // NOTE: copied the following from Utility. There ought to be a version in there with a flag
+    // that does the Java stuff
+    
+    public static int unescapeAt(String s, int[] offset16) {
+        int c;
+        int result = 0;
+        int n = 0;
+        int minDig = 0;
+        int maxDig = 0;
+        int bitsPerDigit = 4;
+        int dig;
+        int i;
+
+        /* Check that offset is in range */
+        int offset = offset16[0];
+        int length = s.length();
+        if (offset < 0 || offset >= length) {
+            return -1;
+        }
+
+        /* Fetch first UChar after '\\' */
+        c = UTF16.charAt(s, offset);
+        offset += UTF16.getCharCount(c);
+
+        /* Convert hexadecimal and octal escapes */
+        switch (c) {
+        case 'u':
+            minDig = maxDig = 4;
+            break;
+        /*
+        case 'U':
+            minDig = maxDig = 8;
+            break;
+        case 'x':
+            minDig = 1;
+            maxDig = 2;
+            break;
+        */
+        default:
+            dig = UCharacter.digit(c, 8);
+            if (dig >= 0) {
+                minDig = 1;
+                maxDig = 3;
+                n = 1; /* Already have first octal digit */
+                bitsPerDigit = 3;
+                result = dig;
+            }
+            break;
+        }
+        if (minDig != 0) {
+            while (offset < length && n < maxDig) {
+                // TEMPORARY
+                // TODO: Restore the char32-based code when UCharacter.digit
+                // is working (Bug 66).
+
+                //c = UTF16.charAt(s, offset);
+                //dig = UCharacter.digit(c, (bitsPerDigit == 3) ? 8 : 16);
+                c = s.charAt(offset);
+                dig = Character.digit((char)c, (bitsPerDigit == 3) ? 8 : 16);
+                if (dig < 0) {
+                    break;
+                }
+                result = (result << bitsPerDigit) | dig;
+                //offset += UTF16.getCharCount(c);
+                ++offset;
+                ++n;
+            }
+            if (n < minDig) {
+                return -1;
+            }
+            offset16[0] = offset;
+            return result;
+        }
+
+        /* Convert C-style escapes in table */
+        for (i=0; i<UNESCAPE_MAP.length; i+=2) {
+            if (c == UNESCAPE_MAP[i]) {
+                offset16[0] = offset;
+                return UNESCAPE_MAP[i+1];
+            } else if (c < UNESCAPE_MAP[i]) {
+                break;
+            }
+        }
+
+        /* If no special forms are recognized, then consider
+         * the backslash to generically escape the next character. */
+        offset16[0] = offset;
+        return c;
+    }
+
+    /* This map must be in ASCENDING ORDER OF THE ESCAPE CODE */
+    static private final char[] UNESCAPE_MAP = {
+        /*"   0x22, 0x22 */
+        /*'   0x27, 0x27 */
+        /*?   0x3F, 0x3F */
+        /*\   0x5C, 0x5C */
+        /*a*/ 0x61, 0x07,
+        /*b*/ 0x62, 0x08,
+        /*f*/ 0x66, 0x0c,
+        /*n*/ 0x6E, 0x0a,
+        /*r*/ 0x72, 0x0d,
+        /*t*/ 0x74, 0x09,
+        /*v*/ 0x76, 0x0b
+    };
+
+    /**
+     * Convert all escapes in a given string using unescapeAt().
+     * Leave invalid escape sequences unchanged.
+     */
+    public static String unescapeLeniently(String s) {
+        StringBuffer buf = new StringBuffer();
+        int[] pos = new int[1];
+        for (int i=0; i<s.length(); ) {
+            char c = s.charAt(i++);
+            if (c == '\\') {
+                pos[0] = i;
+                int e = unescapeAt(s, pos);
+                if (e < 0) {
+                    buf.append(c);
+                } else {
+                    UTF16.append(buf, e);
+                    i = pos[0];
+                }
+            } else {
+                buf.append(c);
+            }
+        }
+        return buf.toString();
+    }
+
+    public void TestPatterns() {
+        UnicodeSet set = new UnicodeSet();
+        expectPattern(set, "[[a-m]&[d-z]&[k-y]]",  "km");
+        expectPattern(set, "[[a-z]-[m-y]-[d-r]]",  "aczz");
+        expectPattern(set, "[a\\-z]",  "--aazz");
+        expectPattern(set, "[-az]",  "--aazz");
+        expectPattern(set, "[az-]",  "--aazz");
+        expectPattern(set, "[[[a-z]-[aeiou]i]]", "bdfnptvz");
+
+        // Throw in a test of complement
+        set.complement();
+        String exp = '\u0000' + "aeeoouu" + (char)('z'+1) + '\uFFFF';
+        expectPairs(set, exp);
+    }
+
+    public void TestCategories() {
+        int failures = 0;
+        UnicodeSet set = new UnicodeSet("[:Lu:]");
+        expectContainment(set, "ABC", "abc");
+
+        // Make sure generation of L doesn't pollute cached Lu set
+        // First generate L, then Lu
+        // not used int TOP = 0x200; // Don't need to go over the whole range:
+        set = new UnicodeSet("[:L:]");
+        for (int i=0; i<0x200; ++i) {
+            boolean l = UCharacter.isLetter(i);
+            if (l != set.contains((char)i)) {
+                errln("FAIL: L contains " + (char)i + " = " + 
+                      set.contains((char)i));
+                if (++failures == 10) break;
+            }
+        }
+
+        set = new UnicodeSet("[:Lu:]");
+        for (int i=0; i<0x200; ++i) {
+            boolean lu = (UCharacter.getType(i) == UCharacterCategory.UPPERCASE_LETTER);
+            if (lu != set.contains((char)i)) {
+                errln("FAIL: Lu contains " + (char)i + " = " + 
+                      set.contains((char)i));
+                if (++failures == 20) break;
+            }
+        }
+    }
+
+    public void TestAddRemove() {
+        UnicodeSet set = new UnicodeSet();
+        set.add('a', 'z');
+        expectPairs(set, "az");
+        set.remove('m', 'p');
+        expectPairs(set, "alqz");
+        set.remove('e', 'g');
+        expectPairs(set, "adhlqz");
+        set.remove('d', 'i');
+        expectPairs(set, "acjlqz");
+        set.remove('c', 'r');
+        expectPairs(set, "absz");
+        set.add('f', 'q');
+        expectPairs(set, "abfqsz");
+        set.remove('a', 'g');
+        expectPairs(set, "hqsz");
+        set.remove('a', 'z');
+        expectPairs(set, "");
+
+        // Try removing an entire set from another set
+        expectPattern(set, "[c-x]", "cx");
+        UnicodeSet set2 = new UnicodeSet();
+        expectPattern(set2, "[f-ky-za-bc[vw]]", "acfkvwyz");
+        set.removeAll(set2);
+        expectPairs(set, "deluxx");
+
+        // Try adding an entire set to another set
+        expectPattern(set, "[jackiemclean]", "aacceein");
+        expectPattern(set2, "[hitoshinamekatajamesanderson]", "aadehkmort");
+        set.addAll(set2);
+        expectPairs(set, "aacehort");
+
+        // Test commutativity
+        expectPattern(set, "[hitoshinamekatajamesanderson]", "aadehkmort");
+        expectPattern(set2, "[jackiemclean]", "aacceein");
+        set.addAll(set2);
+        expectPairs(set, "aacehort");
+    }
+
+    /**
+     * Make sure minimal representation is maintained.
+     */
+    public void TestMinimalRep() {
+        // This is pretty thoroughly tested by checkCanonicalRep()
+        // run against the exhaustive operation results.  Use the code
+        // here for debugging specific spot problems.
+       
+        // 1 overlap against 2
+        UnicodeSet set = new UnicodeSet("[h-km-q]");
+        UnicodeSet set2 = new UnicodeSet("[i-o]");
+        set.addAll(set2);
+        expectPairs(set, "hq");
+        // right
+        set.applyPattern("[a-m]");
+        set2.applyPattern("[e-o]");
+        set.addAll(set2);
+        expectPairs(set, "ao");
+        // left
+        set.applyPattern("[e-o]");
+        set2.applyPattern("[a-m]");
+        set.addAll(set2);
+        expectPairs(set, "ao");
+        // 1 overlap against 3
+        set.applyPattern("[a-eg-mo-w]");
+        set2.applyPattern("[d-q]");
+        set.addAll(set2);
+        expectPairs(set, "aw");
+    }
+
+    public void TestAPI() {
+        // default ct
+        UnicodeSet set = new UnicodeSet();
+        if (!set.isEmpty() || set.getRangeCount() != 0) {
+            errln("FAIL, set should be empty but isn't: " +
+                  set);
+        }
+
+        // clear(), isEmpty()
+        set.add('a');
+        if (set.isEmpty()) {
+            errln("FAIL, set shouldn't be empty but is: " +
+                  set);
+        }
+        set.clear();
+        if (!set.isEmpty()) {
+            errln("FAIL, set should be empty but isn't: " +
+                  set);
+        }
+
+        // size()
+        set.clear();
+        if (set.size() != 0) {
+            errln("FAIL, size should be 0, but is " + set.size() +
+                  ": " + set);
+        }
+        set.add('a');
+        if (set.size() != 1) {
+            errln("FAIL, size should be 1, but is " + set.size() +
+                  ": " + set);
+        }
+        set.add('1', '9');
+        if (set.size() != 10) {
+            errln("FAIL, size should be 10, but is " + set.size() +
+                  ": " + set);
+        }
+
+        // contains(first, last)
+        set.clear();
+        set.applyPattern("[A-Y 1-8 b-d l-y]");
+        for (int i = 0; i<set.getRangeCount(); ++i) {
+            int a = set.getRangeStart(i);
+            int b = set.getRangeEnd(i);
+            if (!set.contains(a, b)) {
+                errln("FAIL, should contain " + (char)a + '-' + (char)b +
+                      " but doesn't: " + set);
+            }
+            if (set.contains((char)(a-1), b)) {
+                errln("FAIL, shouldn't contain " +
+                      (char)(a-1) + '-' + (char)b +
+                      " but does: " + set);
+            }
+            if (set.contains(a, (char)(b+1))) {
+                errln("FAIL, shouldn't contain " +
+                      (char)a + '-' + (char)(b+1) +
+                      " but does: " + set);
+            }
+        }
+
+        // Ported InversionList test.
+        UnicodeSet a = new UnicodeSet((char)3,(char)10);
+        UnicodeSet b = new UnicodeSet((char)7,(char)15);
+        UnicodeSet c = new UnicodeSet();
+
+        logln("a [3-10]: " + a);
+        logln("b [7-15]: " + b);
+        c.set(a); c.addAll(b);
+        UnicodeSet exp = new UnicodeSet((char)3,(char)15);
+        if (c.equals(exp)) {
+            logln("c.set(a).add(b): " + c);
+        } else {
+            errln("FAIL: c.set(a).add(b) = " + c + ", expect " + exp);
+        }
+        c.complement();
+        exp.set((char)0, (char)2);
+        exp.add((char)16, UnicodeSet.MAX_VALUE);
+        if (c.equals(exp)) {
+            logln("c.complement(): " + c);
+        } else {
+            errln(Utility.escape("FAIL: c.complement() = " + c + ", expect " + exp));
+        }
+        c.complement();
+        exp.set((char)3, (char)15);
+        if (c.equals(exp)) {
+            logln("c.complement(): " + c);
+        } else {
+            errln("FAIL: c.complement() = " + c + ", expect " + exp);
+        }
+        c.set(a); c.complementAll(b);
+        exp.set((char)3,(char)6);
+        exp.add((char)11,(char) 15);
+        if (c.equals(exp)) {
+            logln("c.set(a).complement(b): " + c);
+        } else {
+            errln("FAIL: c.set(a).complement(b) = " + c + ", expect " + exp);
+        }
+
+        exp.set(c);
+        c = bitsToSet(setToBits(c));
+        if (c.equals(exp)) {
+            logln("bitsToSet(setToBits(c)): " + c);
+        } else {
+            errln("FAIL: bitsToSet(setToBits(c)) = " + c + ", expect " + exp);
+        } 
+    }
+    
+    public void TestStrings() {
+        Object[][] testList = {
+            {I_EQUALS,  UnicodeSet.fromAll("abc"),
+                        new UnicodeSet("[a-c]")},
+                        
+            {I_EQUALS,  UnicodeSet.from("ch").add('a','z').add("ll"),
+                        new UnicodeSet("[{ll}{ch}a-z]")},
+                        
+            {I_EQUALS,  UnicodeSet.from("ab}c"),  
+                        new UnicodeSet("[{ab\\}c}]")},
+                        
+            {I_EQUALS,  new UnicodeSet('a','z').add('A', 'Z').retain('M','m').complement('X'), 
+                        new UnicodeSet("[[a-zA-Z]&[M-m]-[X]]")},
+        };
+        
+        for (int i = 0; i < testList.length; ++i) {
+            expectRelation(testList[i][0], testList[i][1], testList[i][2], "(" + i + ")");
+        }        
+    }
+    
+    /**
+     * Test pattern behavior of multicharacter strings.
+     */
+    public void TestStringPatterns() {
+        UnicodeSet s = new UnicodeSet("[a-z {aa} {ab}]");
+        expectToPattern(s, "[a-z{aa}{ab}]",
+                        new String[] {"aa", "ab", NOT, "ac"});
+        s.add("ac");
+        expectToPattern(s, "[a-z{aa}{ab}{ac}]",
+                        new String[] {"aa", "ab", "ac", NOT, "xy"});
+
+        s.applyPattern("[a-z {\\{l} {r\\}}]");
+        expectToPattern(s, "[a-z{\\{l}{r\\}}]",
+                        new String[] {"{l", "r}", NOT, "xy"});
+        s.add("[]");
+        expectToPattern(s, "[a-z{\\[\\]}{r\\}}{\\{l}]",
+                        new String[] {"{l", "r}", "[]", NOT, "xy"});
+
+        s.applyPattern("[a-z {\u4E01\u4E02}{\\n\\r}]");
+        expectToPattern(s, "[a-z{\\u4E01\\u4E02}{\\n\\r}]",
+                        new String[] {"\u4E01\u4E02", "\n\r"});
+    }
+
+    static final Integer 
+       I_ANY = new Integer(UnicodeSet.ANY),
+       I_CONTAINS = new Integer(UnicodeSet.CONTAINS),
+       I_DISJOINT = new Integer(UnicodeSet.DISJOINT),
+       I_NO_B = new Integer(UnicodeSet.NO_B),
+       I_ISCONTAINED = new Integer(UnicodeSet.ISCONTAINED),
+       I_EQUALS = new Integer(UnicodeSet.EQUALS),
+       I_NO_A = new Integer(UnicodeSet.NO_A),
+       I_NONE = new Integer(UnicodeSet.NONE);
+    
+    public void TestSetRelation() {
+
+        String[] choices = {"a", "b", "cd", "ef"};
+        int limit = 1 << choices.length;
+        
+        SortedSet iset = new TreeSet();
+        SortedSet jset = new TreeSet();
+        
+        for (int i = 0; i < limit; ++i) {
+            pick(i, choices, iset);
+            for (int j = 0; j < limit; ++j) {
+                pick(j, choices, jset);
+                checkSetRelation(iset, jset, "(" + i + ")");
+            }
+        }
+    }
+    
+    public void TestSetSpeed() {
+        // skip unless verbose
+        if (!isVerbose()) return;
+        
+        SetSpeed2(100);
+        SetSpeed2(1000);
+    }
+    
+    public void SetSpeed2(int size) {
+        
+        SortedSet iset = new TreeSet();
+        SortedSet jset = new TreeSet();
+        
+        for (int i = 0; i < size*2; i += 2) { // only even values
+            iset.add(new Integer(i));
+            jset.add(new Integer(i));
+        }
+        
+        int iterations = 1000000 / size;
+        
+        logln("Timing comparison of Java vs Utility");
+        logln("For about " + size + " objects that are almost all the same.");
+        
+        CheckSpeed(iset, jset, "when a = b", iterations);
+        
+        iset.add(new Integer(size + 1));    // add odd value in middle
+        
+        CheckSpeed(iset, jset, "when a contains b", iterations);        
+        CheckSpeed(jset, iset, "when b contains a", iterations);
+        
+        jset.add(new Integer(size - 1));    // add different odd value in middle
+        
+        CheckSpeed(jset, iset, "when a, b are disjoint", iterations);        
+    }
+    
+    void CheckSpeed(SortedSet iset, SortedSet jset, String message, int iterations) {
+        CheckSpeed2(iset, jset, message, iterations);
+        CheckSpeed3(iset, jset, message, iterations);
+    }
+    
+    void CheckSpeed2(SortedSet iset, SortedSet jset, String message, int iterations) {
+        boolean x;
+        boolean y;
+        
+        // make sure code is loaded:
+        x = iset.containsAll(jset);
+        y = UnicodeSet.hasRelation(iset, UnicodeSet.CONTAINS, jset);
+        if (x != y) errln("FAIL contains comparison");
+        
+        double start = System.currentTimeMillis();
+        for (int i = 0; i < iterations; ++i) {
+            x |= iset.containsAll(jset);
+        }
+        double middle = System.currentTimeMillis();
+        for (int i = 0; i < iterations; ++i) {
+            y |= UnicodeSet.hasRelation(iset, UnicodeSet.CONTAINS, jset);
+        }
+        double end = System.currentTimeMillis();
+        
+        double jtime = (middle - start)/iterations;
+        double utime = (end - middle)/iterations;
+        
+        java.text.NumberFormat nf = java.text.NumberFormat.getPercentInstance();
+        logln("Test contains: " + message + ": Java: " + jtime
+            + ", Utility: " + utime + ", u:j: " + nf.format(utime/jtime));
+    }
+    
+    void CheckSpeed3(SortedSet iset, SortedSet jset, String message, int iterations) {
+        boolean x;
+        boolean y;
+        
+        // make sure code is loaded:
+        x = iset.equals(jset);
+        y = UnicodeSet.hasRelation(iset, UnicodeSet.EQUALS, jset);
+        if (x != y) errln("FAIL equality comparison");
+
+        
+        double start = System.currentTimeMillis();
+        for (int i = 0; i < iterations; ++i) {
+            x |= iset.equals(jset);
+        }
+        double middle = System.currentTimeMillis();
+        for (int i = 0; i < iterations; ++i) {
+            y |= UnicodeSet.hasRelation(iset, UnicodeSet.EQUALS, jset);
+        }
+        double end = System.currentTimeMillis();
+        
+        double jtime = (middle - start)/iterations;
+        double utime = (end - middle)/iterations;
+        
+        java.text.NumberFormat nf = java.text.NumberFormat.getPercentInstance();
+        logln("Test equals:   " + message + ": Java: " + jtime
+            + ", Utility: " + utime + ", u:j: " + nf.format(utime/jtime));
+    }
+    
+    void pick(int bits, Object[] examples, SortedSet output) {
+        output.clear();
+        for (int k = 0; k < 32; ++k) {
+            if (((1<<k) & bits) != 0) output.add(examples[k]);
+        }
+    }
+    
+    public static final String[] RELATION_NAME = {
+        "both-are-null",
+        "a-is-null", 
+        "equals", 
+        "is-contained-in",
+        "b-is-null",
+        "is-disjoint_with",
+        "contains", 
+        "any", };
+        
+    boolean dumbHasRelation(Collection A, int filter, Collection B) {
+        Collection ab = new TreeSet(A);
+        ab.retainAll(B);
+        if (ab.size() > 0 && (filter & UnicodeSet.A_AND_B) == 0) return false; 
+        
+        // A - B size == A.size - A&B.size
+        if (A.size() > ab.size() && (filter & UnicodeSet.A_NOT_B) == 0) return false; 
+        
+        // B - A size == B.size - A&B.size
+        if (B.size() > ab.size() && (filter & UnicodeSet.B_NOT_A) == 0) return false; 
+
+        
+        return true;
+    }    
+    
+    void checkSetRelation(SortedSet a, SortedSet b, String message) {
+        for (int i = 0; i < 8; ++i) {
+            
+            boolean hasRelation = UnicodeSet.hasRelation(a, i, b);
+            boolean dumbHasRelation = dumbHasRelation(a, i, b);
+            
+            logln(message + " " + hasRelation + ":\t" + a + "\t" + RELATION_NAME[i] + "\t" + b);
+            
+            if (hasRelation != dumbHasRelation) {
+                errln("FAIL: " + 
+                    message + " " + dumbHasRelation + ":\t" + a + "\t" + RELATION_NAME[i] + "\t" + b);
+            }
+        }
+        logln("");
+    }
+    
+   /**
+    * Test the [:Latin:] syntax.
+    */
+    public void TestScriptSet() {
+        UnicodeSet set = new UnicodeSet("[:Latin:]");
+
+        expectContainment(set, "aA", CharsToUnicodeString("\\u0391\\u03B1"));
+
+        UnicodeSet set2 = new UnicodeSet("[:Greek:]");
+        expectContainment(set2, CharsToUnicodeString("\\u0391\\u03B1"), "aA");
+        
+        /* Jitterbug 1423 */
+        UnicodeSet set3 = new UnicodeSet("[[:Common:][:Inherited:]]");
+        expectContainment(set3, CharsToUnicodeString("\\U00003099\\U0001D169\\u0000"), "aA");
+
+    }
+    
+    /**
+     * Test the [:Latin:] syntax.
+     */
+    public void TestPropertySet() {
+        String[] DATA = {
+            // Pattern, Chars IN, Chars NOT in
+
+            "[:Latin:]",
+            "aA",
+            "\u0391\u03B1",
+
+            "[\\p{Greek}]",
+            "\u0391\u03B1",
+            "aA",
+
+            "\\P{ GENERAL Category = upper case letter }",
+            "abc",
+            "ABC",
+
+            // Combining class: @since ICU 2.2
+            // Check both symbolic and numeric
+            "\\p{ccc=Nukta}",
+            "\u0ABC",
+            "abc",
+
+            "\\p{Canonical Combining Class = 11}",
+            "\u05B1",
+            "\u05B2",
+
+            "[:c c c = iota subscript :]",
+            "\u0345",
+            "xyz",
+
+            // Bidi class: @since ICU 2.2
+            "\\p{bidiclass=lefttoright}",
+            "abc",
+            "\u0671\u0672",
+
+            // Binary properties: @since ICU 2.2
+            "\\p{ideographic}",
+            "\u4E0A",
+            "x",
+
+            "[:math=false:]",
+            "q",
+            "(*+)",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            UnicodeSet set = new UnicodeSet(DATA[i]);
+            expectContainment(set, DATA[i+1], DATA[i+2]);
+        }
+    }
+
+    /**
+     * Test cloning of UnicodeSet
+     */
+    public void TestClone() {
+        UnicodeSet s = new UnicodeSet("[abcxyz]");
+        UnicodeSet t = (UnicodeSet) s.clone();
+        expectContainment(t, "abc", "def");
+    }
+
+    /**
+     * Test the indexOf() and charAt() methods.
+     */
+    public void TestIndexOf() {
+        UnicodeSet set = new UnicodeSet("[a-cx-y3578]");
+        for (int i=0; i<set.size(); ++i) {
+            int c = set.charAt(i);
+            if (set.indexOf(c) != i) {
+                errln("FAIL: charAt(" + i + ") = " + c +
+                      " => indexOf() => " + set.indexOf(c));
+            }
+        }
+        int c = set.charAt(set.size());
+        if (c != -1) {
+            errln("FAIL: charAt(<out of range>) = " +
+                  Utility.escape(String.valueOf(c)));
+        }
+        int j = set.indexOf('q');
+        if (j != -1) {
+            errln("FAIL: indexOf('q') = " + j);
+        }
+    }
+
+    public void TestExhaustive() {
+        // exhaustive tests. Simulate UnicodeSets with integers.
+        // That gives us very solid tests (except for large memory tests).
+
+        char limit = (char)128;
+
+        for (char i = 0; i < limit; ++i) {
+            logln("Testing " + i + ", " + bitsToSet(i));
+            _testComplement(i);
+            
+        	// AS LONG AS WE ARE HERE, check roundtrip
+        	checkRoundTrip(bitsToSet(i));
+            
+            for (char j = 0; j < limit; ++j) {
+                _testAdd(i,j);
+                _testXor(i,j);
+                _testRetain(i,j);
+                _testRemove(i,j);
+            }
+        }
+    }
+
+    /** 
+     * Make sure each script name and abbreviated name can be used 
+     * to construct a UnicodeSet. 
+     */ 
+    public void TestScriptNames() { 
+        for (int i=0; i<UScript.CODE_LIMIT; ++i) { 
+            for (int j=0; j<2; ++j) { 
+                String pat = ""; 
+                try { 
+                    String name = 
+                        (j==0) ? UScript.getName(i) : UScript.getShortName(i); 
+                    pat = "[:" + name + ":]"; 
+                    UnicodeSet set = new UnicodeSet(pat); 
+                    logln("Ok: " + pat); 
+                } catch (IllegalArgumentException e) { 
+                    if (pat.length() == 0) { 
+                        errln("FAIL (in UScript): No name for script " + i); 
+                    } else { 
+                        errln("FAIL: Couldn't create " + pat); 
+                    } 
+                } 
+            } 
+        } 
+    } 
+    
+    void _testComplement(int a) {
+        UnicodeSet x = bitsToSet(a);
+        UnicodeSet z = bitsToSet(a);
+        z.complement();
+        int c = setToBits(z);
+        if (c != (~a)) {
+            errln("FAILED: add: ~" + x +  " != " + z);
+            errln("FAILED: add: ~" + a + " != " + c);
+        }
+        checkCanonicalRep(z, "complement " + a);
+    }
+
+    void _testAdd(int a, int b) {
+        UnicodeSet x = bitsToSet(a);
+        UnicodeSet y = bitsToSet(b);
+        UnicodeSet z = bitsToSet(a);
+        z.addAll(y);
+        int c = setToBits(z);
+        if (c != (a | b)) {
+            errln(Utility.escape("FAILED: add: " + x + " | " + y + " != " + z));
+            errln("FAILED: add: " + a + " | " + b + " != " + c);
+        }
+        checkCanonicalRep(z, "add " + a + "," + b);
+    }
+
+    void _testRetain(int a, int b) {
+        UnicodeSet x = bitsToSet(a);
+        UnicodeSet y = bitsToSet(b);
+        UnicodeSet z = bitsToSet(a);
+        z.retainAll(y);
+        int c = setToBits(z);
+        if (c != (a & b)) {
+            errln("FAILED: retain: " + x + " & " + y + " != " + z);
+            errln("FAILED: retain: " + a + " & " + b + " != " + c);
+        }
+        checkCanonicalRep(z, "retain " + a + "," + b);
+    }
+
+    void _testRemove(int a, int b) {
+        UnicodeSet x = bitsToSet(a);
+        UnicodeSet y = bitsToSet(b);
+        UnicodeSet z = bitsToSet(a);
+        z.removeAll(y);
+        int c = setToBits(z);
+        if (c != (a &~ b)) {
+            errln("FAILED: remove: " + x + " &~ " + y + " != " + z);
+            errln("FAILED: remove: " + a + " &~ " + b + " != " + c);
+        }
+        checkCanonicalRep(z, "remove " + a + "," + b);
+    }
+
+    void _testXor(int a, int b) {
+        UnicodeSet x = bitsToSet(a);
+        UnicodeSet y = bitsToSet(b);
+        UnicodeSet z = bitsToSet(a);
+        z.complementAll(y);
+        int c = setToBits(z);
+        if (c != (a ^ b)) {
+            errln("FAILED: complement: " + x + " ^ " + y + " != " + z);
+            errln("FAILED: complement: " + a + " ^ " + b + " != " + c);
+        }
+        checkCanonicalRep(z, "complement " + a + "," + b);
+    }
+    
+    /**
+     * Check that ranges are monotonically increasing and non-
+     * overlapping.
+     */
+    void checkCanonicalRep(UnicodeSet set, String msg) {
+        int n = set.getRangeCount();
+        if (n < 0) {
+            errln("FAIL result of " + msg +
+                  ": range count should be >= 0 but is " +
+                  n + " for " + Utility.escape(set.toString()));
+            return;
+        }
+        int last = 0;
+        for (int i=0; i<n; ++i) {
+            int start = set.getRangeStart(i);
+            int end = set.getRangeEnd(i);
+            if (start > end) {
+                errln("FAIL result of " + msg +
+                      ": range " + (i+1) +
+                      " start > end: " + start + ", " + end +
+                      " for " + Utility.escape(set.toString()));
+            }
+            if (i > 0 && start <= last) {
+                errln("FAIL result of " + msg +
+                      ": range " + (i+1) +
+                      " overlaps previous range: " + start + ", " + end +
+                      " for " + Utility.escape(set.toString()));
+            }
+            last = end;
+        }
+    }
+
+    /**
+     * Convert a bitmask to a UnicodeSet.
+     */
+    UnicodeSet bitsToSet(int a) {
+        UnicodeSet result = new UnicodeSet();
+        for (int i = 0; i < 32; ++i) {
+            if ((a & (1<<i)) != 0) {
+                result.add((char)i,(char)i);
+            }
+        }
+        
+        return result;
+    }
+    
+    /**
+     * Convert a UnicodeSet to a bitmask.  Only the characters
+     * U+0000 to U+0020 are represented in the bitmask.
+     */
+    static int setToBits(UnicodeSet x) {
+        int result = 0;
+        for (int i = 0; i < 32; ++i) {
+            if (x.contains((char)i)) {
+                result |= (1<<i);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Return the representation of an inversion list based UnicodeSet
+     * as a pairs list.  Ranges are listed in ascending Unicode order.
+     * For example, the set [a-zA-M3] is represented as "33AMaz".
+     */
+    static String getPairs(UnicodeSet set) {
+        StringBuffer pairs = new StringBuffer();
+        for (int i=0; i<set.getRangeCount(); ++i) {
+            int start = set.getRangeStart(i);
+            int end = set.getRangeEnd(i);
+            if (end > 0xFFFF) {
+                end = 0xFFFF;
+                i = set.getRangeCount(); // Should be unnecessary
+            }
+            pairs.append((char)start).append((char)end);
+        }
+        return pairs.toString();
+    }
+    
+    /**
+     * Test function. Make sure that the sets have the right relation
+     */
+     
+    void expectRelation(Object relationObj, Object set1Obj, Object set2Obj, String message) {
+        int relation = ((Integer) relationObj).intValue();
+        UnicodeSet set1 = (UnicodeSet) set1Obj;
+        UnicodeSet set2 = (UnicodeSet) set2Obj;
+        
+        // by-the-by, check the iterator
+        checkRoundTrip(set1);
+        checkRoundTrip(set2);
+        
+        boolean contains = set1.containsAll(set2);
+        boolean isContained = set2.containsAll(set1);
+        boolean disjoint = set1.containsNone(set2);
+        boolean equals = set1.equals(set2);
+        
+        UnicodeSet intersection = new UnicodeSet(set1).retainAll(set2);
+        UnicodeSet minus12 = new UnicodeSet(set1).removeAll(set2);
+        UnicodeSet minus21 = new UnicodeSet(set2).removeAll(set1);
+        
+        // test basic properties
+        
+        if (contains != (intersection.size() == set2.size())) {
+            errln("FAIL contains1" + set1.toPattern(true) + ", " + set2.toPattern(true));
+        }
+          
+        if (contains != (intersection.equals(set2))) {
+            errln("FAIL contains2" + set1.toPattern(true) + ", " + set2.toPattern(true));
+        }
+          
+        if (isContained != (intersection.size() == set1.size())) {
+            errln("FAIL isContained1" + set1.toPattern(true) + ", " + set2.toPattern(true));
+        }
+          
+        if (isContained != (intersection.equals(set1))) {
+            errln("FAIL isContained2" + set1.toPattern(true) + ", " + set2.toPattern(true));
+        }
+          
+        if ((contains && isContained) != equals) {
+            errln("FAIL equals" + set1.toPattern(true) + ", " + set2.toPattern(true));
+        }
+          
+        if (disjoint != (intersection.size() == 0)) {
+            errln("FAIL disjoint" + set1.toPattern(true) + ", " + set2.toPattern(true));
+        }
+        
+        // Now see if the expected relation is true
+        int status = (minus12.size() != 0 ? 4 : 0)
+          | (intersection.size() != 0 ? 2 : 0)
+          | (minus21.size() != 0 ? 1 : 0);
+        
+        if (status != relation) {
+            errln("FAIL relation incorrect" + message
+              + "; desired = " + RELATION_NAME[relation]
+              + "; found = " + RELATION_NAME[status]
+              + "; set1 = " + set1.toPattern(true)
+              + "; set2 = " + set2.toPattern(true)
+              );
+        }
+    }
+    
+    /**
+     * Basic consistency check for a few items.
+     * That the iterator works, and that we can create a pattern and
+     * get the same thing back
+     */
+    
+    void checkRoundTrip(UnicodeSet s) {
+        String pat = s.toPattern(false);
+        UnicodeSet t = copyWithIterator(s, false);
+        checkEqual(s, t, "iterator roundtrip");
+
+        t = copyWithIterator(s, true); // try range
+        checkEqual(s, t, "iterator roundtrip");
+        
+        t = new UnicodeSet(pat);
+        checkEqual(s, t, "toPattern(false)");
+        
+        pat = s.toPattern(true);
+        t = new UnicodeSet(pat);
+        checkEqual(s, t, "toPattern(true)");
+    }
+    
+    UnicodeSet copyWithIterator(UnicodeSet s, boolean withRange) {
+    	UnicodeSet t = new UnicodeSet();
+    	UnicodeSetIterator it = new UnicodeSetIterator(s);
+    	if (withRange) {
+    		while (it.nextRange()) {
+    			if (it.codepoint == UnicodeSetIterator.IS_STRING) {
+    				t.add(it.string);
+    			} else {
+    				t.add(it.codepoint, it.codepointEnd);
+    			}
+    		}
+    	} else {
+    		while (it.next()) {
+    			if (it.codepoint == UnicodeSetIterator.IS_STRING) {
+    				t.add(it.string);
+    			} else {
+    				t.add(it.codepoint);
+    			}
+    		}
+    	}
+    	return t;
+    }
+    
+    boolean checkEqual(UnicodeSet s, UnicodeSet t, String message) {
+        if (!s.equals(t)) {
+            errln("FAIL " + message
+              + "; source = " + s.toPattern(true)
+              + "; result = " + t.toPattern(true)
+              );
+        	return false;
+        }
+        return true;
+    }
+    		
+    
+    /**
+     * Expect the given set to contain the characters in charsIn and
+     * to not contain those in charsOut.
+     */
+    void expectContainment(UnicodeSet set, String charsIn, String charsOut) {
+        StringBuffer bad = new StringBuffer();
+        if (charsIn != null) {
+            for (int i=0; i<charsIn.length(); ++i) {
+                int c = UTF16.charAt(charsIn,i);
+                if(c>0xffff) i++;
+                if (!set.contains(c)) {
+                    UTF16.append(bad,c);
+                }
+            }
+            if (bad.length() > 0) {
+                errln(Utility.escape("FAIL: set " + set + " does not contain " + bad +
+                      ", expected containment of " + charsIn));
+            } else {
+                logln(Utility.escape("Ok: set " + set + " contains " + charsIn));
+            }
+        }
+        if (charsOut != null) {
+            bad.setLength(0);
+            for (int i=0; i<charsOut.length(); ++i) {
+                char c = charsOut.charAt(i);
+                if (set.contains(c)) {
+                    bad.append(c);
+                }
+            }
+            if (bad.length() > 0) {
+                errln(Utility.escape("FAIL: set " + set + " contains " + bad +
+                      ", expected non-containment of " + charsOut));
+            } else {
+                logln(Utility.escape("Ok: set " + set + " does not contain " + charsOut));
+            }
+        }
+    }
+
+    void expectPattern(UnicodeSet set,
+                       String pattern,
+                       String expectedPairs) {
+        set.applyPattern(pattern);
+        if (!getPairs(set).equals(expectedPairs)) {
+            errln("FAIL: applyPattern(\"" + pattern +
+                  "\") => pairs \"" +
+                  Utility.escape(getPairs(set)) + "\", expected \"" +
+                  Utility.escape(expectedPairs) + "\"");
+        } else {
+            logln("Ok:   applyPattern(\"" + pattern +
+                  "\") => pairs \"" +
+                  Utility.escape(getPairs(set)) + "\"");
+        }
+    }
+
+    void expectToPattern(UnicodeSet set,
+                         String expPat,
+                         String[] expStrings) {
+        String pat = set.toPattern(true);
+        if (pat.equals(expPat)) {
+            logln("Ok:   toPattern() => \"" + pat + "\"");
+        } else {
+            errln("FAIL: toPattern() => \"" + pat + "\", expected \"" + expPat + "\"");
+            return;
+        }
+        boolean in = true;
+        for (int i=0; i<expStrings.length; ++i) {
+            if (expStrings[i] == NOT) { // sic; pointer comparison
+                in = false;
+                continue;
+            }
+            boolean contained = set.contains(expStrings[i]);
+            if (contained == in) {
+                logln("Ok: " + expPat + 
+                      (contained ? " contains {" : " does not contain {") +
+                      Utility.escape(expStrings[i]) + "}");
+            } else {
+                errln("FAIL: " + expPat + 
+                      (contained ? " contains {" : " does not contain {") +
+                      Utility.escape(expStrings[i]) + "}");
+            }
+        }
+    }
+
+    void expectPairs(UnicodeSet set, String expectedPairs) {
+        if (!getPairs(set).equals(expectedPairs)) {
+            errln("FAIL: Expected pair list \"" +
+                  Utility.escape(expectedPairs) + "\", got \"" +
+                  Utility.escape(getPairs(set)) + "\"");
+        }
+    }
+    static final String CharsToUnicodeString(String s) {
+        return Utility.unescape(s);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/translit/UnicodeToHexTransliteratorTest.java b/src/com/ibm/icu/dev/test/translit/UnicodeToHexTransliteratorTest.java
new file mode 100755
index 0000000..8367854
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/UnicodeToHexTransliteratorTest.java
@@ -0,0 +1,301 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/translit/Attic/UnicodeToHexTransliteratorTest.java,v $ 
+ * $Date: 2002/02/25 22:43:57 $ 
+ * $Revision: 1.6 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.impl.Utility;
+import java.text.*;
+import java.util.*;
+
+
+/**
+ * @test
+ * @summary General test of UnicodeToHexTransliterator
+ */
+public class UnicodeToHexTransliteratorTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new UnicodeToHexTransliteratorTest().run(args);
+    }
+
+    /**
+    * Used by TestConstruction() and TestTransliterate.
+    */
+    UnicodeFilter UniFilter=new UnicodeFilter() {
+        public boolean contains(int c) {
+            if(c==0x0063 || c==0x0061 || c==0x0043 || c==0x0041)
+                return false;
+            else
+                return true;
+       }
+    };
+
+    public void TestConstruction(){
+        logln("Testing the construction UnicodeToHexTransliterator()");
+        UnicodeToHexTransliterator trans1=new UnicodeToHexTransliterator();
+        
+
+        logln("Testing the cosntruction UnicodeToHexTransliterator(pattern)");
+        String pattern="\\\\U+0000abc";
+        try{
+            trans1=new UnicodeToHexTransliterator(pattern);
+        }catch(IllegalArgumentException ex2) {
+            errln("FAIL: UnicodeToHexTransliterator construction failed with pattern=" + pattern + " Exception= " + ex2.toString());
+        }
+
+        logln("Testing the cosntruction UnicodeToHexTransliterator(pattern) with illegal pattern");
+        String pattern2="\\X+";
+        try{
+            trans1=new UnicodeToHexTransliterator(pattern2);
+        }catch(IllegalArgumentException ex3) {
+            logln("OK: construction with Illegal pattern handled correctly");
+        }  
+        
+        logln("Testing the construction UnicodeToHexTransliterator(pattern, isUppercase=false, adoptedFilter=null)");
+        try{
+            trans1=new UnicodeToHexTransliterator(pattern, false, null);
+        }catch(IllegalArgumentException ex4) {
+            errln("FAIL: UnicodeToHexTransliterator(pattern, isUppercase=false, adoptedFilter=null) construction failed. Exception= " + ex4.toString());
+        }
+
+        logln("Testing the construction UnicodeToHexTransliterator(pattern, isUppercase=true, adoptedFilter)");
+        try{
+            trans1=new UnicodeToHexTransliterator(pattern, true, UniFilter);
+        }catch(IllegalArgumentException ex4) {
+            errln("FAIL: UnicodeToHexTransliterator(pattern, isUppercase=true, adoptedFilter) construction failed. Exception= " + ex4.toString());
+        }
+
+    }
+
+    public void TestUpperCase(){
+        logln("Testing the isUppercase() and setUppercase() API of UnicodeToHexTransliterator");
+        String str="abk";
+        /*default transliterator has upper case TRUE*/
+        UnicodeToHexTransliterator transdefault=new UnicodeToHexTransliterator();
+        expect(transdefault, "where uppercase=default", str, "\\u0061\\u0062\\u006B");
+
+        String pattern="\\\\u0000";
+        /*transliterator with Uppercase FALSE*/
+        UnicodeToHexTransliterator trans1=null;
+        try{
+            trans1=new UnicodeToHexTransliterator(pattern, false, null);
+        }catch(IllegalArgumentException ex1) {
+            errln("FAIL: UnicodeToHexTransliterator(pattern, false,null) construction failed with patter" 
+                  + pattern+ " Exception: " + ex1.toString());
+        }
+        expect(trans1, "where uppercase=FALSE", str, "\\u0061\\u0062\\u006b");  /*doesn't display uppercase*/
+
+        if(transdefault.isUppercase() != true  || 
+           trans1.isUppercase() != false ){
+            errln("isUpperCase() failed");
+        }
+        
+        /*changing the outputhexdigits to lower case for the default transliterator*/
+        transdefault.setUppercase(trans1.isUppercase());
+        if(transdefault.isUppercase() != trans1.isUppercase() || 
+           transdefault.isUppercase() != false){
+            errln("setUppercase() failed");
+        }
+        /*doesn't ouput uppercase hex, since transdefault's uppercase is set to FALSE using setUppercase*/
+        expect(transdefault, "where uppercase=FALSE", str, "\\u0061\\u0062\\u006b");     
+
+        /*trying round trip*/
+        transdefault.setUppercase(true);
+        if(transdefault.isUppercase() != true || 
+           transdefault.isUppercase() == trans1.isUppercase() ){
+            errln("setUppercase() failed");
+        }
+        /*displays upper case since it is set to TRUE*/
+        expect(transdefault, "where uppercase=TRUE", str, "\\u0061\\u0062\\u006B");
+
+    } 
+    public void TestPattern(){
+        logln("Testing the applyPattern() and toPattern() API of UnicodeToHexTransliterator");
+        /*default transliterator has pattern \\u0000*/
+        UnicodeToHexTransliterator transdefault=new UnicodeToHexTransliterator();
+                
+        String defaultpattern=transdefault.toPattern();
+        String pattern1="\\\\U+0000";
+        
+        UnicodeToHexTransliterator trans1=null;
+        try{
+            trans1=new UnicodeToHexTransliterator(pattern1, true, null);
+        }catch(IllegalArgumentException ex1) {
+            errln("FAIL: UnicodeToHexTransliterator construction failed with pattern =" + pattern1 +
+                   "Exception:" + ex1.toString());
+        }
+
+        /*test toPattern() */
+        if(transdefault.toPattern().equals(trans1.toPattern()) == true ||
+            transdefault.toPattern().equals("\\\\u0000") != true ||
+            trans1.toPattern().equals(pattern1) != true ){
+            errln("Error: toPattern() failed");
+        }
+
+        /*apply patterns for transdefault*/
+        String str="abKf";
+        expectPattern(transdefault,  pattern1, str, "\\U+0061\\U+0062\\U+004B\\U+0066");
+        expectPattern(transdefault,  "\\U##00,", str, "U61,U62,U4B,U66,");
+        expectPattern(transdefault, defaultpattern, str, "\\u0061\\u0062\\u004B\\u0066");
+        expectPattern(trans1, "\\uni0000", str, "uni0061uni0062uni004Buni0066");
+        expectPattern(trans1, "\\\\S-0000-E", str, "\\S-0061-E\\S-0062-E\\S-004B-E\\S-0066-E");
+        expectPattern(trans1, "\\u##0000", str, "FAIL");
+        expectPattern(trans1, "\\*0000", str, "*0061*0062*004B*0066"); 
+        expectPattern(trans1, "\\u####", str, "FAIL");
+   
+    }
+
+    public void TestSimpleTransliterate(){ 
+        String pattern1="\\\\U+0000";
+        UnicodeToHexTransliterator trans1=null;
+        try{
+            trans1=new UnicodeToHexTransliterator(pattern1, true, null);
+        }catch(IllegalArgumentException iae){
+            errln("UnicodeToHexTransliterator(pattern1, true, null) construction failed with pattern =" 
+                  + pattern1 + "Exception:" + iae.toString());
+        }
+        String source="Hello";
+        String expected="He\\U+006C\\U+006C\\U+006F";
+
+        expectTranslit(trans1, ":Replaceable ", source,  1, 5, 2, expected);   
+    }
+   
+    public void TestTransliterate(){
+        String Data[]={
+        //pattern, source, index.contextStart, index.contextLimit, index.start, expectedResult, expectedResult using filter(a, b)
+        "U+##00",    "abc", "1", "3", "2", "abU+63", "abc",
+        "\\\\u0000", "abc", "1", "2", "1", "a\\u0062c", "a\\u0062c",
+        "Uni0000",   "abc", "1", "3", "2", "abUni0063", "abc",
+        "U[0000]",   "hello", "0", "4", "2", "heU[006C]U[006C]o", "heU[006C]U[006C]o",
+        "prefix-0000-suffix", "abc", "1", "3", "1", "aprefix-0062-suffixprefix-0063-suffix", "aprefix-0062-suffixc",
+        "*##00*",     "hellothere", "1", "8", "4", "hell*6F**74**68**65*re", "hell*6F**74**68**65*re",
+
+        };
+        UnicodeToHexTransliterator trans1=null;
+        UnicodeToHexTransliterator trans2=null;
+        for(int i=0;i<Data.length;i+=7){
+            try{
+                trans1=new UnicodeToHexTransliterator(Data[i+0],true, null);
+            }catch(IllegalArgumentException iae){
+                errln("UnicodeToHexTransliterator(pattern1, true, null) construction failed with pattern =" 
+                  + Data[i+0] + "Exception:" + iae.toString());
+            }
+            expectTranslit(trans1, "", Data[i+1], Integer.parseInt(Data[i+2]), 
+                       Integer.parseInt(Data[i+3]), Integer.parseInt(Data[i+4]), 
+                       Data[i+5] );
+        
+            try{
+                trans2=new UnicodeToHexTransliterator(Data[i+0], true, UniFilter);
+            }catch(IllegalArgumentException iae){
+                errln("UnicodeToHexTransliterator(pattern1, true, UnicodeFilter) construction failed with pattern =" 
+                  +  Data[i+0] + " with filter(a,c).  Exception:" + iae.toString());
+            }
+            expectTranslit(trans2, " with filter(a,A,c,C)", Data[i+1], 
+                           Integer.parseInt(Data[i+2]), Integer.parseInt(Data[i+3]), 
+                           Integer.parseInt(Data[i+4]), Data[i+6] );
+        }
+
+    } 
+        
+    //======================================================================
+    // Support methods
+    //======================================================================
+
+    private void expectTranslit(UnicodeToHexTransliterator t,
+                                   String message, String source, 
+                                   int start, int limit, int cursor,  
+                                   String expectedResult){
+    
+
+        ReplaceableString rsource = new ReplaceableString(source);
+        Transliterator.Position index = new Transliterator.Position(start, limit, cursor, limit);
+        t.transliterate(rsource, index);
+        t.finishTransliteration(rsource, index);
+        String result=rsource.toString();
+        expectAux(t.getID() + ":keyboard " + message, source + "->" + result, result.equals(expectedResult), expectedResult);
+    }
+    private void expectPattern(UnicodeToHexTransliterator t,
+                                 String pattern, String source, String expectedResult){
+
+        try{
+            t.applyPattern(pattern);
+        }catch(IllegalArgumentException iae){
+            if(expectedResult.equals("FAIL")){
+                logln("OK: calling applyPattern() with illegal pattern failed as expected." + iae.toString());
+            } else{
+                errln("FAIL: applyPattern() failed with pattern =" + pattern + "--->" + iae.toString());
+            }
+        }
+        if(!expectedResult.equals("FAIL")){
+            if(!t.toPattern().equals(pattern)) {
+                errln("FAIL: applyPattern or toPatten failed.  Expected: " + pattern + "Got: " + t.toPattern());
+            }else{
+                logln("OK: applyPattern passed. Testing transliteration");
+                expect(t, " with pattern "+pattern, source, expectedResult);
+            }
+        }
+    }
+    private void expect(UnicodeToHexTransliterator t,  String message, String source, String expectedResult) {
+    
+        String result=t.transliterate(source);
+        expectAux(t.getID() + ":String " + message, source + "->" + result, result.equals(expectedResult), expectedResult);
+
+        ReplaceableString rsource = new ReplaceableString(source);
+        t.transliterate(rsource);
+        result = rsource.toString();
+        expectAux(t.getID() + ":Replaceable" + message, source + "->" + result, result.equals(expectedResult), expectedResult);
+
+        // Test keyboard (incremental) transliteration -- this result
+        // must be the same after we finalize (see below).
+        rsource.replace(0, rsource.length(), "");
+        Transliterator.Position index = new Transliterator.Position();
+        StringBuffer log = new StringBuffer();
+
+        for (int i=0; i<source.length(); ++i) {
+            if (i != 0) {
+                log.append(" + ");
+            }
+            log.append(source.charAt(i)).append(" -> ");
+            t.transliterate(rsource, index,
+                            String.valueOf(source.charAt(i)));
+            // Append the string buffer with a vertical bar '|' where
+            // the committed index is.
+            String s = rsource.toString();
+            log.append(s.substring(0, index.start)).
+                append('|').
+                append(s.substring(index.start));
+        }
+        
+        // As a final step in keyboard transliteration, we must call
+        // transliterate to finish off any pending partial matches that
+        // were waiting for more input.
+        t.finishTransliteration(rsource, index);
+        result = rsource.toString();
+        log.append(" => ").append(rsource.toString());
+        expectAux(t.getID() + ":Keyboard", log.toString() + "\n" + source + " -> " + result, result.equals(expectedResult), expectedResult);
+
+    }
+    private void expectAux(String tag, String summary, boolean pass,  String expectedResult) {
+        if (pass) {
+            logln("(" + tag + ") " + Utility.escape(summary));
+        } else {
+            errln("FAIL: (" + tag+ ") "
+                + Utility.escape(summary)
+                + ", expected " + Utility.escape(expectedResult));
+        }
+    }  
+}
+
+
+
diff --git a/src/com/ibm/icu/dev/test/translit/WriteCharts.java b/src/com/ibm/icu/dev/test/translit/WriteCharts.java
new file mode 100755
index 0000000..e70ef10
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/WriteCharts.java
@@ -0,0 +1,387 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/translit/WriteCharts.java,v $
+ * $Date: 2002/06/20 01:16:48 $
+ * $Revision: 1.15 $
+ *
+ *****************************************************************************************
+ */
+ 
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.impl.Utility;
+//import java.text.*;
+import java.util.*;
+import java.io.*;
+
+public class WriteCharts {
+    public static void main(String[] args) throws IOException {
+        if (false) {
+            printSet("[[\u0000-\u007E \u30A1-\u30FC \uFF61-\uFF9F\u3001\u3002][:Katakana:][:Mark:]]");
+        }
+        String testSet = "";
+        if (args.length == 0) args = getAllScripts();
+        for (int i = 0; i < args.length; ++i) {
+    // Enumeration enum = Transliterator.getAvailableIDs();
+            if (args[i].startsWith("[")) {
+                testSet = args[i];
+            } else {
+                print(testSet, args[i]);
+                testSet = "";
+            }
+        }
+    }
+    
+    public static void printSet(String source) {
+        UnicodeSet s = new UnicodeSet(source);
+        System.out.println("Printout for '" + source + "'");
+        int count = s.getRangeCount();
+        for (int i = 0; i < count; ++i) {
+            int start = s.getRangeStart(i);
+            int end = s.getRangeEnd(i);
+            System.out.println(Integer.toString(start,16) + ".." + Integer.toString(end,16));
+        }
+    }
+    
+    public static String[] getAllScripts() {
+        Set set = new TreeSet();
+        int scripts[];
+        Enumeration sources = Transliterator.getAvailableSources();
+        while(sources.hasMoreElements()) {
+            String source = (String) sources.nextElement();
+            scripts = UScript.getCode(source);
+            if (scripts == null) {
+                System.out.println("[Skipping " + source + "]");
+                continue;
+            }
+            int sourceScript = scripts[0];
+            System.out.println("Source: " + source + ";\tScripts: " + showScripts(scripts));
+            Enumeration targets = Transliterator.getAvailableTargets(source);
+            while(targets.hasMoreElements()) {
+                String target = (String) targets.nextElement();
+                scripts = UScript.getCode(target);
+                if (scripts == null
+                        || priority(scripts[0]) < priority(sourceScript)) {
+                    // skip doing both directions
+                    System.out.println("[Skipping '" + source + "-" + target + "']");
+                    continue;
+                }
+                System.out.println("\tTarget: " + target + ";\tScripts: " + showScripts(scripts));
+                Enumeration variants = Transliterator.getAvailableVariants(source, target);
+                while(variants.hasMoreElements()) {
+                    String variant = (String) variants.nextElement();
+                    String id = source + "-" + target;
+                    if (variant.length() != 0) {
+                        id += "/" + variant;
+                        if (false) {
+                            System.out.println("SKIPPING VARIANT, SINCE IT CURRENTLY BREAKS!\t" + id);
+                            continue;
+                        }
+                    }
+                    System.out.println("\t\t\t\tAdding: '" + id + "'");
+                    set.add(id);
+                }
+            }
+        }
+        String[] results = new String[set.size()];
+        set.toArray(results);
+        return results;
+    };
+    
+    static public int priority(int script) {
+        if (script == UScript.LATIN) return -2;
+        return script;
+    }
+    
+    public static String showScripts(int[] scripts) {
+        StringBuffer results = new StringBuffer();
+        for (int i = 0; i < scripts.length; ++i) {
+            if (i != 0) results.append(", ");
+            results.append(UScript.getName(scripts[i]));
+        }
+        return results.toString();
+    }
+    
+    public static void print(String testSet, String rawId) throws IOException {
+        System.out.println("Processing " + rawId);
+        Transliterator t = Transliterator.getInstance(rawId);
+        String id = t.getID();
+        
+        // clean up IDs. Ought to be API for getting source, target, variant
+        int minusPos = id.indexOf('-');
+        String source = id.substring(0,minusPos);
+        String target = id.substring(minusPos+1);
+        int slashPos = target.indexOf('/');
+        if (slashPos >= 0) target = target.substring(0,slashPos);
+        
+        // check that the source is a script
+        if (testSet.equals("")) {
+            int[] scripts = UScript.getCode(source);
+            if (scripts == null) {
+                System.out.println("FAILED: " 
+                    + Transliterator.getDisplayName(id)
+                    + " does not have a script as the source");
+                return;
+            } else {
+                testSet = "[:" + source + ":]";
+                if (source.equalsIgnoreCase("katakana")) {
+                    testSet = "[" + testSet + "\u30FC]";
+                    printSet(testSet);
+                }
+            }
+        }
+        UnicodeSet sourceSet = new UnicodeSet(testSet);
+
+        // check that the target is a script
+        int[] scripts = UScript.getCode(target);
+        if (scripts == null) {
+            target = "[:Latin:]";
+        } else {
+            target = "[:" + target + ":]";
+        }
+        UnicodeSet targetSet = new UnicodeSet(target);        
+        
+        Transliterator inverse = t.getInverse();
+        
+        //Transliterator hex = Transliterator.getInstance("Any-Hex");
+        
+                
+        // iterate through script
+        System.out.println("Transliterating " + sourceSet.toPattern(true) 
+            + " with " + Transliterator.getDisplayName(id));
+                
+        UnicodeSet leftOverSet = new UnicodeSet(targetSet);
+        UnicodeSet privateUse = new UnicodeSet("[:private use:]");
+            
+        Map map = new TreeMap();
+        
+        UnicodeSet targetSetPlusAnyways = new UnicodeSet(targetSet);
+        targetSetPlusAnyways.addAll(okAnyway);
+        
+        UnicodeSet sourceSetPlusAnyways = new UnicodeSet(sourceSet);
+        sourceSetPlusAnyways.addAll(okAnyway);
+        
+        UnicodeSetIterator usi = new UnicodeSetIterator(sourceSet);
+        
+        while (usi.next()) {
+            int j = usi.codepoint;
+            /*
+        int count = sourceSet.getRangeCount();
+        for (int i = 0; i < count; ++i) {
+            int end = sourceSet.getRangeEnd(i);
+            for (int j = sourceSet.getRangeStart(i); j <= end; ++j) {
+            */
+                String flag = "";
+                String ss = UTF16.valueOf(j);
+                String ts = t.transliterate(ss);
+                char group = 0;
+                if (!targetSetPlusAnyways.containsAll(ts)) {
+                    group |= 1;
+                }
+                if (UTF16.countCodePoint(ts) == 1) {
+                    leftOverSet.remove(UTF16.charAt(ts,0));
+                }
+                String rt = inverse.transliterate(ts);
+                if (!sourceSetPlusAnyways.containsAll(rt)) {
+                    group |= 2;
+                } else if (!ss.equals(rt)) {
+                    group |= 4;
+                }
+                
+                if (!privateUse.containsNone(ts) || !privateUse.containsNone(rt)) {
+                    group |= 16;
+                }
+                    
+                map.put(group + UCharacter.toLowerCase(Normalizer.normalize(ss, Normalizer.NFKD))
+                        + "\u0000" + ss, 
+                    "<td class='s'>" + ss + "<br><tt>" + hex(ss)
+                        + "</tt></td><td class='t'>" + ts + "<br><tt>" + hex(ts)
+                        + "</tt></td><td class='r'>" + rt + "<br><tt>" + hex(rt) + "</tt></td>" );
+                
+                // Check Duals
+                /*
+                int maxDual = 200;
+              dual:
+                for (int i2 = 0; i2 < count; ++i2) {
+                    int end2 = sourceSet.getRangeEnd(i2);
+                    for (int j2 = sourceSet.getRangeStart(i2); j2 <= end; ++j2) {
+                        String ss2 = UTF16.valueOf(j2);
+                        String ts2 = t.transliterate(ss2);
+                        String rt2 = inverse.transliterate(ts2);
+                        
+                        String ss12 = ss + ss2;
+                        String ts12 = t.transliterate(ss + ss12);
+                        String rt12 = inverse.transliterate(ts12);
+                        if (ts12.equals(ts + ts2) && rt12.equals(rt + rt2)) continue;   
+                        if (--maxDual < 0) break dual;
+                        
+                        // transliteration of whole differs from that of parts
+                        group = 0x100;
+                        map.put(group + UCharacter.toLowerCase(Normalizer.normalize(ss12, Normalizer.DECOMP_COMPAT, 0))
+                                + "\u0000" + ss12, 
+                            "<td class='s'>" + ss12 + "<br><tt>" + hex(ss12)
+                                + "</tt></td><td class='t'>" + ts12 + "<br><tt>" + hex(ts12)
+                                + "</tt></td><td class='r'>" + rt12 + "<br><tt>" + hex(rt12) + "</tt></td>" );
+                    }
+                }
+                */
+            //}
+        }
+        
+        
+        leftOverSet.remove(0x0100,0x02FF); // remove extended & IPA
+        
+        /*int count = leftOverSet.getRangeCount();
+        for (int i = 0; i < count; ++i) {
+            int end = leftOverSet.getRangeEnd(i);
+            for (int j = leftOverSet.getRangeStart(i); j <= end; ++j) {
+            */
+            
+        usi.reset(leftOverSet);
+        while (usi.next()) {
+            int j = usi.codepoint;
+            
+                String ts = UTF16.valueOf(j);
+                // String decomp = Normalizer.normalize(ts, Normalizer.DECOMP_COMPAT, 0);
+                // if (!decomp.equals(ts)) continue;
+                
+                String rt = inverse.transliterate(ts);
+                String flag = "";
+                char group = 0x80;
+                    
+                if (!sourceSetPlusAnyways.containsAll(rt)) {
+                    group |= 8;
+                }
+                if (!privateUse.containsNone(rt)) {
+                    group |= 16;
+                }
+                    
+                map.put(group + UCharacter.toLowerCase(Normalizer.normalize(ts, Normalizer.NFKD)) + ts, 
+                    "<td class='s'>-</td><td class='t'>" + ts + "<br><tt>" + hex(ts)
+                    + "</tt></td><td class='r'>"
+                    + rt + "<br><tt>" + hex(rt) + "</tt></td>");
+            //}
+        }
+
+        // make file name and open
+        File f = new File("transliteration/chart_" + id.replace('/', '_') + ".html");
+        String filename = f.getCanonicalFile().toString();
+        PrintWriter out = new PrintWriter(
+            new OutputStreamWriter(
+                new FileOutputStream(filename), "UTF-8"));
+        //out.print('\uFEFF'); // BOM
+        
+        System.out.println("Writing " + filename);
+        
+        try {
+            out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">");
+            out.println("<HTML><HEAD>");
+            out.println("<META content=\"text/html; charset=utf-8\" http-equiv=Content-Type></HEAD>");
+            out.println("<link rel='stylesheet' href='http://www.unicode.org/charts/uca/charts.css' type='text/css'>");
+            
+            out.println("<BODY>");
+            out.println("<h1>Transliteration Samples for '" + Transliterator.getDisplayName(id) + "'</h1>");
+            out.println("<p>This file illustrates the transliterations of " + Transliterator.getDisplayName(id) + ".");
+            out.println("The samples are mechanically generated, and only include single characters");
+            out.println("from the source set. Thus it will <i>not</i> contain examples where the transliteration");
+            out.println("depends on the context around the character. For a more detailed -- and interactive -- example, see the");
+            out.println("<a href='http://oss.software.ibm.com/cgi-bin/icu/tr'>Transliteration Demo</a></p><hr>");
+            
+            // set up the headers
+            int columnCount = 3;
+            String headerBase = "<th>Source</th><th>Target</th><th>Return</th>";
+            String headers = headerBase;
+            for (int i = columnCount - 1; i > 0; --i) {
+                if (i != columnCount - 1) headers += "<th>&nbsp;</th>";
+                headers += headerBase;
+            }
+            
+            String tableHeader = "<p><table border='1'><tr>" + headers + "</tr>";
+            String tableFooter = "</table></p>";
+            out.println("<h2>Round Trip</h2>");
+            out.println(tableHeader);
+            
+            Iterator it = map.keySet().iterator();
+            char lastGroup = 0;
+            int count = 0;
+            int column = 0;
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                char group = key.charAt(0);
+                if (group != lastGroup || count++ > 50) {
+                    lastGroup = group;
+                    count = 0;
+                    if (column != 0) {
+                        out.println("</tr>");
+                        column = 0;
+                    }
+                    out.println(tableFooter);
+                    
+                    String title = "";
+                    if ((group & 0x100) != 0) out.println("<hr><h2>Duals</h2>");
+                    else if ((group & 0x80) != 0) out.println("<hr><h2>Completeness</h2>");
+                    else out.println("<hr><h2>Round Trip</h2>");
+                    if ((group & 16) != 0) out.println("<h3>Errors: Contains Private Use Characters</h3>");
+                    if ((group & 8) != 0) out.println("<h3>Possible Errors: Return not in Source Set</h3>");
+                    if ((group & 4) != 0) out.println("<h3>One-Way Mapping: Return not equal to Source</h3>");
+                    if ((group & 2) != 0) out.println("<h3>Errors: Return not in Source Set</h3>");
+                    if ((group & 1) != 0) out.println("<h3>Errors: Target not in Target Set</h3>");
+                                        
+                    out.println(tableHeader);
+                    column = 0;
+                }
+                String value = (String) map.get(key);
+                if (column++ == 0) out.print("<tr>");
+                else out.print("<th>&nbsp;</th>");
+                out.println(value);
+                if (column == 3) {
+                    out.println("</tr>");
+                    column = 0;
+                }
+            }
+            if (column != 0) {
+                out.println("</tr>");
+                column = 0;
+            }
+            out.println(tableFooter + "</BODY></HTML>");
+            
+        } finally {
+            out.close();
+        }
+    }
+    
+    public static String hex(String s) {
+        int cp;
+        StringBuffer results = new StringBuffer();
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s, i);
+            if (i != 0) results.append(' ');
+            results.append(Integer.toHexString(cp));
+        }
+        return results.toString().toUpperCase();
+    }
+    
+    static final UnicodeSet okAnyway = new UnicodeSet("[^[:Letter:]]");
+    
+    /*
+    // tests whether a string is in a set. Also checks for Common and Inherited
+    public static boolean isIn(String s, UnicodeSet set) {
+        int cp;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(i)) {
+            cp = UTF16.charAt(s, i);
+            if (set.contains(cp)) continue;
+            if (okAnyway.contains(cp)) continue;
+            return false;
+        }
+        return true;
+    }
+    */
+    
+}
+  
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/translit/package.html b/src/com/ibm/icu/dev/test/translit/package.html
new file mode 100755
index 0000000..39b560c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/translit/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 21:35:51 $
+-->
+</head>
+<body bgcolor="white">
+Transliterator tests.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/CompactArrayTest.java b/src/com/ibm/icu/dev/test/util/CompactArrayTest.java
new file mode 100644
index 0000000..ed8dff9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/CompactArrayTest.java
@@ -0,0 +1,156 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/util/CompactArrayTest.java,v $
+ * $Date: 2002/08/12 20:26:39 $
+ * $Revision: 1.1 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.CompactByteArray;
+import com.ibm.icu.util.CompactCharArray;
+
+/**
+ * @since release 2.2
+ */
+public final class CompactArrayTest extends TestFmwk 
+{ 
+    public static void main(String[] args) throws Exception
+    {
+        new CompactArrayTest().run(args);
+    }
+    
+    public void TestByteArrayCoverage() {
+	CompactByteArray cba = new CompactByteArray();
+	cba.setElementAt((char)0x5, (byte)0xdf);
+	cba.setElementAt((char)0x105, (byte)0xdf);
+	cba.setElementAt((char)0x205, (byte)0xdf);
+	cba.setElementAt((char)0x305, (byte)0xdf);
+	CompactByteArray cba2 = new CompactByteArray((byte)0xdf);
+	if (cba.equals(cba2)) {
+	    errln("unequal byte arrays compare equal");
+	}
+	CompactByteArray cba3 = (CompactByteArray)cba.clone();
+
+	logln("equals null: " + cba.equals(null));
+	logln("equals self: " + cba.equals(cba));
+	logln("equals clone: " + cba.equals(cba3));
+	logln("equals bogus: " + cba.equals(new Object()));
+	logln("hash: " + cba.hashCode());
+
+	cba.compact(true);
+	cba.compact(true);
+
+	char[] xa = cba.getIndexArray();
+	byte[] va = cba.getValueArray();
+	CompactByteArray cba4 = new CompactByteArray(xa, va);
+
+	String xs = Utility.arrayToRLEString(xa);
+	String vs = Utility.arrayToRLEString(va);
+	CompactByteArray cba5 = new CompactByteArray(xs, vs);
+
+	logln("equals: " + cba4.equals(cba5));
+	logln("equals: " + cba.equals(cba4));
+
+	cba4.compact(false);
+	logln("equals: " + cba4.equals(cba5));
+
+	cba5.compact(true);
+	logln("equals: " + cba4.equals(cba5));
+
+	cba.setElementAt((char)0x405, (byte)0xdf); // force expand
+	logln("modified equals clone: " + cba.equals(cba3));
+
+	cba3.setElementAt((char)0x405, (byte)0xdf); // equivalent modification
+	logln("modified equals modified clone: " + cba.equals(cba3));
+
+	cba3.setElementAt((char)0x405, (byte)0xee); // different modification
+	logln("different mod equals: " + cba.equals(cba3));
+
+	cba.compact();
+	CompactByteArray cba6 = (CompactByteArray)cba.clone();
+	logln("cloned compact equals: " + cba.equals(cba6));
+
+	cba6.setElementAt((char)0x405, (byte)0xee);
+	logln("modified clone: " + cba3.equals(cba6));
+
+	cba6.setElementAt((char)0x100, (char)0x104, (byte)0xfe);
+	for (int i = 0x100; i < 0x105; ++i) {
+	    cba3.setElementAt((char)i, (byte)0xfe);
+	}
+	logln("double modified: " + cba3.equals(cba6));
+    }
+
+    public void TestCharArrayCoverage() {
+	// v1.8 fails with extensive compaction, so set to false
+	final boolean EXTENSIVE = false;
+
+	CompactCharArray cca = new CompactCharArray();
+	cca.setElementAt((char)0x5, (char)0xdf);
+	cca.setElementAt((char)0x105, (char)0xdf);
+	cca.setElementAt((char)0x205, (char)0xdf);
+	cca.setElementAt((char)0x305, (char)0xdf);
+	CompactCharArray cca2 = new CompactCharArray((char)0xdf);
+	if (cca.equals(cca2)) {
+	    errln("unequal char arrays compare equal");
+	}
+	CompactCharArray cca3 = (CompactCharArray)cca.clone();
+
+	logln("equals null: " + cca.equals(null));
+	logln("equals self: " + cca.equals(cca));
+	logln("equals clone: " + cca.equals(cca3));
+	logln("equals bogus: " + cca.equals(new Object()));
+	logln("hash: " + cca.hashCode());
+
+	cca.compact(EXTENSIVE);
+	cca.compact(EXTENSIVE);
+
+	char[] xa = cca.getIndexArray();
+	char[] va = cca.getValueArray();
+	CompactCharArray cca4 = new CompactCharArray(xa, va);
+
+	String xs = Utility.arrayToRLEString(xa);
+	String vs = Utility.arrayToRLEString(va);
+	CompactCharArray cca5 = new CompactCharArray(xs, vs);
+
+	logln("equals: " + cca4.equals(cca5));
+	logln("equals: " + cca.equals(cca4));
+
+	cca4.compact(false);
+	logln("equals: " + cca4.equals(cca5));
+
+	cca5.compact(EXTENSIVE);
+	logln("equals: " + cca4.equals(cca5));
+
+	cca.setElementAt((char)0x405, (char)0xdf); // force expand
+	logln("modified equals clone: " + cca.equals(cca3));
+
+	cca3.setElementAt((char)0x405, (char)0xdf); // equivalent modification
+	logln("modified equals modified clone: " + cca.equals(cca3));
+
+	cca3.setElementAt((char)0x405, (char)0xee); // different modification
+	logln("different mod equals: " + cca.equals(cca3));
+
+	// v1.8 fails with extensive compaction, and defaults extensive, so don't compact
+	// cca.compact();
+	CompactCharArray cca6 = (CompactCharArray)cca.clone();
+	logln("cloned compact equals: " + cca.equals(cca6));
+
+	cca6.setElementAt((char)0x405, (char)0xee);
+	logln("modified clone: " + cca3.equals(cca6));
+
+	cca6.setElementAt((char)0x100, (char)0x104, (char)0xfe);
+	for (int i = 0x100; i < 0x105; ++i) {
+	    cca3.setElementAt((char)i, (char)0xfe);
+	}
+	logln("double modified: " + cca3.equals(cca6));
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/ICUListResourceBundleTest.java b/src/com/ibm/icu/dev/test/util/ICUListResourceBundleTest.java
new file mode 100644
index 0000000..221d60d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUListResourceBundleTest.java
@@ -0,0 +1,72 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/util/ICUListResourceBundleTest.java,v $
+ * $Date: 2002/08/13 22:10:20 $
+ * $Revision: 1.4 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.ResourceBundle;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.ICULocaleData;
+
+
+public final class ICUListResourceBundleTest extends TestFmwk 
+{
+    public static void main(String args[]) throws Exception {
+		ICUListResourceBundleTest test = new ICUListResourceBundleTest();
+	    test.run(args);
+
+    }
+
+    public void TestReferences() {
+		ResourceBundle rb = ICULocaleData.getLocaleElements("th");
+		logln("got rb:" + rb);
+	
+		byte[] binaryData = null;//(byte[])rb.getObject("%%CollationBin");
+		Object colElem = rb.getObject("CollationElements");
+        if(colElem instanceof Object[][]){
+            Object[][] colElemArr = (Object[][])colElem;
+            if(((String)colElemArr[0][0]).equals("%%CollationBin")){   
+	           binaryData = (byte[]) colElemArr[0][1];
+            }
+        }
+        logln("got binaryData: " + binaryData + " length: " + (binaryData == null ? 0 : binaryData.length));
+		Object[] stringArrayData = (Object[])rb.getObject("CollationElements");
+		//String[] collationData = new String[] {
+		 //   (String)stringArrayData[0],
+		 //   (String)stringArrayData[0]
+		//};
+		logln("got stringData: " + stringArrayData + " length: " + stringArrayData.length);
+		logln("got stringDataElement: " + stringArrayData[0] + " length: " + stringArrayData.length);
+		//System.out.println("got sdee: " + collationData[0]);
+		//	System.out.println("char data length: " + stringArrayData.length());
+    }
+    public void TestAliases(){
+        ResourceBundle rb = ICULocaleData.getResourceBundle("com.ibm.icu.dev.data","TestDataElements","testaliases");
+        Object o = rb.getObject("CollationElements");
+        Object o1 = rb.getObject("zoneTests");
+        
+    }
+    
+    public void TestCircularAliases(){
+        try{
+	        ResourceBundle rb = ICULocaleData.getResourceBundle("com.ibm.icu.dev.data","TestDataElements","testcircularalias");
+	        Object o = rb.getObject("aaa");
+        }catch(java.util.MissingResourceException e){
+            if(e.toString().indexOf("ircular")==-1){
+                errln("Did not get the expected Exception for circular aliases");
+            }
+            return;
+        }
+        errln("Did not get the expected Exception for circular aliases");
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/util/ICUServiceTest.java b/src/com/ibm/icu/dev/test/util/ICUServiceTest.java
new file mode 100644
index 0000000..b86799b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUServiceTest.java
@@ -0,0 +1,820 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/util/ICUServiceTest.java,v $
+ * $Date: 2002/08/13 22:10:20 $
+ * $Revision: 1.4 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.ICUNotifier;
+import com.ibm.icu.impl.ICURWLock;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.ICUService.Factory;
+import com.ibm.icu.impl.ICUService.Key;
+import com.ibm.icu.impl.ICUService.ServiceListener;
+import com.ibm.icu.impl.ICUService.SimpleFactory;
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.impl.ICULocaleService.LocaleKey;
+import com.ibm.icu.impl.ICULocaleService.MultipleKeyFactory;
+import com.ibm.icu.impl.ICULocaleService.ICUResourceBundleFactory;
+
+import java.util.Arrays;
+import java.util.EventListener;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.TreeSet;
+
+public class ICUServiceTest extends TestFmwk
+{    
+    public static void main(String[] args) throws Exception {
+	ICUServiceTest test = new ICUServiceTest();
+	test.run(args);
+    }
+
+    private String lrmsg(String message, Object lhs, Object rhs) {
+	return message + " lhs: " + lhs + " rhs: " + rhs;
+    }
+
+    public void confirmBoolean(String message, boolean val) {
+	logln(message, val, !val);
+    }
+
+    public void confirmEqual(String message, Object lhs, Object rhs) {
+	logln(lrmsg(message, lhs, rhs), lhs == null ? rhs == null : lhs.equals(rhs));
+    }
+
+    public void confirmIdentical(String message, Object lhs, Object rhs) {
+	logln(lrmsg(message, lhs, rhs), lhs == rhs);
+    }
+
+    public void confirmIdentical(String message, int lhs, int rhs) {
+	logln(message + " lhs: " + lhs + " rhs: " + rhs, lhs == rhs);
+    }
+
+    // use locale keys
+    static final class TestService extends ICUService {
+	protected Key createKey(String id) {
+	    return LocaleKey.createWithCanonicalFallback(id, null); // no fallback locale
+	}
+    }
+
+    public void testAPI() {
+	// create a service using locale keys,
+	ICUService service = new TestService();
+
+	// register an object with one locale, 
+	// search for an object with a more specific locale
+	// should return the original object
+	Integer singleton0 = new Integer(0);
+	service.registerObject(singleton0, "en_US");
+ 	Object result = service.get("en_US_FOO");
+	confirmIdentical("1) en_US_FOO -> en_US", result, singleton0);
+
+	// register a new object with the more specific locale
+	// search for an object with that locale
+	// should return the new object
+	Integer singleton1 = new Integer(1);
+	service.registerObject(singleton1, "en_US_FOO");
+	result = service.get("en_US_FOO");
+	confirmIdentical("2) en_US_FOO -> en_US_FOO", result, singleton1);
+
+	// search for an object that falls back to the first registered locale
+	result = service.get("en_US_BAR");
+	confirmIdentical("3) en_US_BAR -> en_US", result, singleton0);
+
+	// get a list of the factories, should be two
+	List factories = service.factories();
+	confirmIdentical("4) factory size", factories.size(), 2);
+
+	// register a new object with yet another locale
+	// original factory list is unchanged
+	Integer singleton2 = new Integer(2);
+	service.registerObject(singleton2, "en");
+	confirmIdentical("5) factory size", factories.size(), 2);
+
+	// search for an object with the new locale
+	// stack of factories is now en, en_US_FOO, en_US
+	// search for en_US should still find en_US object
+	result = service.get("en_US_BAR");
+	confirmIdentical("6) en_US_BAR -> en_US", result, singleton0);
+
+	// register a new object with an old id, should hide earlier factory using this id, but leave it there
+	Integer singleton3 = new Integer(3);
+	service.registerObject(singleton3, "en_US");
+	factories = service.factories();
+	confirmIdentical("9) factory size", factories.size(), 4);
+
+	// should get data from that new factory
+	result = service.get("en_US_BAR");
+	confirmIdentical("10) en_US_BAR -> (3)", result, singleton3);
+
+	// remove new factory
+	// should have fewer factories again
+	service.unregisterFactory((Factory)factories.get(0));
+	factories = service.factories();
+	confirmIdentical("11) factory size", factories.size(), 3);
+
+	// should get original data again after remove factory
+	result = service.get("en_US_BAR");
+	confirmIdentical("12) en_US_BAR -> 0", result, singleton0);
+
+	// shouldn't find unregistered ids
+	result = service.get("foo");
+	confirmIdentical("13) foo -> null", result, null);
+
+	// should find non-canonical strings
+	String[] resultID = new String[1];
+	result = service.get("EN_us_fOo", resultID);
+	confirmEqual("14) find non-canonical", resultID[0], "en_US_FOO");
+
+	// should be able to register non-canonical strings and get them canonicalized
+	service.registerObject(singleton3, "eN_ca_dUde");
+	result = service.get("En_Ca_DuDe", resultID);
+	confirmEqual("15) register non-canonical", resultID[0], "en_CA_DUDE");
+
+	// should be able to register invisible factories, these will not
+	// be visible by default, but if you know the secret password you
+	// can still access these services...
+	Integer singleton4 = new Integer(4);
+	service.registerObject(singleton4, "en_US_BAR", false);
+	result = service.get("en_US_BAR");
+	confirmIdentical("17) get invisible", result, singleton4);
+	
+	// should not be able to locate invisible services
+	Set ids = service.getVisibleIDs();
+	confirmBoolean("18) find invisible", !ids.contains("en_US_BAR"));
+
+	service.reset();
+	// an anonymous factory than handles all ids
+	{
+	    Factory factory = new Factory() {
+		    public Object create(Key key) {
+			return LocaleUtility.getLocaleFromName(key.currentID());
+		    }
+
+		    public void updateVisibleIDs(Map result) {
+		    }
+
+		    public String getDisplayName(String id, Locale l) {
+			return null;
+		    }
+		};
+	    service.registerFactory(factory);
+
+	    // anonymous factory will still handle the id
+	    result = service.get(Locale.US.toString());
+	    confirmEqual("21) locale", result, Locale.US);
+
+	    // still normalizes id
+	    result = service.get("EN_US_BAR");
+	    confirmEqual("22) locale", result, LocaleUtility.getLocaleFromName("en_US_BAR"));
+	    
+	    // we can override for particular ids
+	    service.registerObject(singleton3, "en_US_BAR");
+	    result = service.get("en_US_BAR");
+	    confirmIdentical("23) override super", result, singleton3);
+	}
+
+	// empty service should not recognize anything 
+	service.reset();
+	result = service.get("en_US");
+	confirmIdentical("24) empty", result, null);
+
+	// create a custom multiple key factory
+	{
+	    String[] xids = { "en_US_VALLEY_GIRL", 
+			      "en_US_VALLEY_BOY",
+			      "en_US_SURFER_GAL",
+			      "en_US_SURFER_DUDE"
+	    };
+	    service.registerFactory(new TestMultipleFactory(xids));
+	}
+
+	// iterate over the visual ids returned by the multiple factory
+	{
+	    Set vids = service.getVisibleIDs();
+	    Iterator iter = vids.iterator();
+	    int count = 0;
+	    while (iter.hasNext()) {
+	        ++count;
+		logln("  " + iter.next());
+	    }
+	    // four visible ids
+	    confirmIdentical("25) visible ids", count, 4);
+	}
+
+	// iterate over the display names
+	{
+	    Map dids = service.getDisplayNames(Locale.GERMANY);
+	    Iterator iter = dids.entrySet().iterator();
+	    int count = 0;
+	    while (iter.hasNext()) {
+	        ++count;
+	        Entry e = (Entry)iter.next();
+	        logln("  " + e.getKey() + " -- > " + e.getValue());
+	    }
+	    // four display names, in german
+	    confirmIdentical("26) display names", count, 4);
+	}
+
+	// no valid display name
+	confirmIdentical("27) get display name", service.getDisplayName("en_US_VALLEY_GEEK"), null);
+
+	{
+	    String name = service.getDisplayName("en_US_SURFER_DUDE", Locale.US);
+	    confirmEqual("28) get display name", name, "English (United States,SURFER,DUDE)");
+	}
+
+	// register another multiple factory
+	{
+	    String[] xids = {
+		"en_US_SURFER_GAL", "en_US_SILICON", "en_US_SILICON_GEEK", "en_US"
+	    };
+	    service.registerFactory(new TestMultipleFactory(xids, "Rad dude"));
+	}
+
+	// this time, we have seven display names (we replaced surfer gal)
+	{
+	    Map dids = service.getDisplayNames(LocaleUtility.getLocaleFromName("es"));
+	    Iterator iter = dids.entrySet().iterator();
+	    int count = 0;
+	    while (iter.hasNext()) {
+	        ++count;
+	        Entry e = (Entry)iter.next();
+	        logln("  " + e.getKey() + " -- > " + e.getValue());
+	    }
+	    // seven display names, in spanish
+	    confirmIdentical("29) display names", count, 7);
+	}
+
+	// we should get the display name corresponding to the actual id
+	// returned by the id we used.
+	{
+	    String[] actualID = new String[1];
+	    String id = "en_us_silicon_dude";
+	    String dude = (String)service.get(id, actualID);
+	    if (dude != null) {
+		String displayName = service.getDisplayName(actualID[0], Locale.US);
+		logln("found actual: " + dude + " with display name: " + displayName);
+		confirmBoolean("30) found display name for actual", displayName != null);
+
+		displayName = service.getDisplayName(id, Locale.US);
+		logln("found query: " + dude + " with display name: " + displayName);
+		confirmBoolean("31) found display name for query", displayName == null);
+	    } else {
+		errln("30) service could not find entry for " + id);
+	    }
+
+	    id = "en_US_BOZO";
+	    String bozo = (String)service.get(id, actualID);
+	    if (bozo != null) {
+		String displayName = service.getDisplayName(actualID[0], Locale.US);
+		logln("found actual: " + bozo + " with display name: " + displayName);
+		confirmBoolean("32) found display name for actual", displayName != null);
+
+		displayName = service.getDisplayName(id, Locale.US);
+		logln("found actual: " + bozo + " with display name: " + displayName);
+		confirmBoolean("33) found display name for query", displayName == null);
+	    } else {
+		errln("32) service could not find entry for " + id);
+	    }
+	}
+
+	// hiding factory should obscure 'sublocales'
+	{
+	    String[] xids = {
+		"en_US_VALLEY", "en_US_SILICON"
+	    };
+	    service.registerFactory(new TestHidingFactory(xids));
+	}
+
+	{
+	    Map dids = service.getDisplayNames();
+	    Iterator iter = dids.entrySet().iterator();
+	    int count = 0;
+	    while (iter.hasNext()) {
+	        ++count;
+	        Entry e = (Entry)iter.next();
+	        logln("  " + e.getKey() + " -- > " + e.getValue());
+	    }
+	    confirmIdentical("31 hiding factory", count, 5);
+	}
+
+	{
+	    Set xids = service.getVisibleIDs();
+	    Iterator iter = xids.iterator();
+	    while (iter.hasNext()) {
+		String xid = (String)iter.next();
+		logln(xid + "?  " + service.get(xid));
+	    }
+
+	    logln("valleygirl?  " + service.get("en_US_VALLEY_GIRL"));
+	    logln("valleyboy?   " + service.get("en_US_VALLEY_BOY"));
+	    logln("valleydude?  " + service.get("en_US_VALLEY_DUDE"));
+	    logln("surfergirl?  " + service.get("en_US_SURFER_GIRL"));
+	}
+
+	// resource bundle factory.
+	service.reset();
+	service.registerFactory(new ICUResourceBundleFactory("Countries;Languages", true));
+
+	// list all of the resources that really define Countries;Languages
+	// this takes a long time to build the visible id list
+	{
+	    Set xids = service.getVisibleIDs();
+	    StringBuffer buf = new StringBuffer("{");
+	    boolean notfirst = false;
+	    Iterator iter = xids.iterator();
+	    while (iter.hasNext()) {
+		String xid = (String)iter.next();
+		if (notfirst) {
+		    buf.append(", ");
+		} else {
+		    notfirst = true;
+		}
+		buf.append(xid);
+	    }
+	    buf.append("}");
+	    logln(buf.toString());
+	}
+
+	// get all the display names of these resources
+	// this should be fast since the display names were cached.
+	{
+	    Map names = service.getDisplayNames(LocaleUtility.getLocaleFromName("de_DE"));
+	    StringBuffer buf = new StringBuffer("{");
+	    Iterator iter = names.entrySet().iterator();
+	    while (iter.hasNext()) {
+		Entry e = (Entry)iter.next();
+		String name = (String)e.getKey();
+		String id = (String)e.getValue();
+		buf.append("\n   " + name + " --> " + id);
+	    }
+	    buf.append("\n}");
+	    logln(buf.toString());
+	}
+
+	service.registerFactory(new CalifornioLanguageFactory());
+	// get all the display names of these resources
+	{
+	    Map names = service.getDisplayNames(LocaleUtility.getLocaleFromName("en_US_CA_SURFER"));
+	    StringBuffer buf = new StringBuffer("{");
+	    Iterator iter = names.entrySet().iterator();
+	    while (iter.hasNext()) {
+		Entry e = (Entry)iter.next();
+		String name = (String)e.getKey();
+		String id = (String)e.getValue();
+		buf.append("\n   " + name + " --> " + id);
+	    }
+	    buf.append("\n}");
+	    logln(buf.toString());
+	}
+
+	// test notification
+	// simple registration
+	{
+	    ICULocaleService ls = new ICULocaleService();
+	    ServiceListener l1 = new ServiceListener() {
+		    private int n;
+		    public void serviceChanged(ICUService s) {
+			logln("listener 1 report " + n++ + " service changed: " + s);
+		    }
+		}; 
+	    ls.addListener(l1);
+	    ServiceListener l2 = new ServiceListener() {
+		    private int n;
+		    public void serviceChanged(ICUService s) {
+			logln("listener 2 report " + n++ + " service changed: " + s);
+		    }
+		};
+	    ls.addListener(l2);
+	    logln("registering foo... ");
+	    ls.registerObject("Foo", "en_FOO");
+	    logln("registering bar... ");
+	    ls.registerObject("Bar", "en_BAR");
+	    logln("getting foo...");
+	    logln((String)ls.get("en_FOO"));
+	    logln("removing listener 2...");
+	    ls.removeListener(l2);
+	    logln("registering baz...");
+	    ls.registerObject("Baz", "en_BAZ");
+	    logln("removing listener 1");
+	    ls.removeListener(l1);
+	    logln("registering burp...");
+	    ls.registerObject("Burp", "en_BURP");
+
+	    // should only get one notification even if register multiple times
+	    logln("... trying multiple registration");
+	    ls.addListener(l1);
+	    ls.addListener(l1);
+	    ls.addListener(l1);
+	    ls.addListener(l2);
+	    ls.registerObject("Foo", "en_FOO");
+	    logln("... registered foo");
+
+	    // since in a separate thread, we can callback and not deadlock
+	    ServiceListener l3 = new ServiceListener() {
+		    private int n;
+		    public void serviceChanged(ICUService s) {
+			logln("listener 3 report " + n++ + " service changed...");
+			if (s.get("en_BOINK") == null) { // don't recurse on ourselves!!!
+			    logln("registering boink...");
+			    s.registerObject("boink", "en_BOINK");
+			}
+		    }
+		};
+	    ls.addListener(l3);
+	    logln("registering boo...");
+	    ls.registerObject("Boo", "en_BOO");
+	    logln("...done");
+
+	    try {
+		Thread.sleep(100);
+	    }
+	    catch (InterruptedException e) {
+	    }
+	}
+    }
+
+    
+    static class TestMultipleFactory extends MultipleKeyFactory {
+	protected final String[] ids;
+	protected final String factoryID;
+
+	public TestMultipleFactory(String[] ids) {
+	    this(ids, "");
+	}
+
+	public TestMultipleFactory(String[] ids, String factoryID) {
+	    this.ids = (String[])ids.clone();
+
+	    if (factoryID == null || factoryID.length() == 0) {
+		this.factoryID = "";
+	    } else {
+		this.factoryID = factoryID + ": ";
+	    }
+	}
+    
+	protected Object handleCreate(Key key) {
+	    for (int i = 0; i < ids.length; ++i) {
+		if (key.currentID().equalsIgnoreCase(ids[i])) {
+		    return factoryID + key.canonicalID();
+		}
+	    }
+	    return null;
+	}
+
+	protected void handleUpdateVisibleIDs(Set result) {
+	    for (int i = 0; i < ids.length; ++i) {
+		result.add(ids[i]);
+	    }
+	}
+	protected String handleGetDisplayName(String id, Locale locale) {
+	    return factoryID + LocaleUtility.getLocaleFromName(id).getDisplayName(locale);
+	}
+    }
+
+    static class TestHidingFactory implements ICUService.Factory {
+	protected final String[] ids;
+	protected final String factoryID;
+
+	public TestHidingFactory(String[] ids) {
+	    this(ids, "Hiding");
+	}
+
+	public TestHidingFactory(String[] ids, String factoryID) {
+	    this.ids = (String[])ids.clone();
+
+	    if (factoryID == null || factoryID.length() == 0) {
+		this.factoryID = "";
+	    } else {
+		this.factoryID = factoryID + ": ";
+	    }
+	}
+
+	public Object create(Key key) {
+	    for (int i = 0; i < ids.length; ++i) {
+		if (LocaleUtility.isFallbackOf(ids[i], key.currentID())) {
+		    return factoryID + key.canonicalID();
+		}
+	    }
+	    return null;
+	}
+
+	public void updateVisibleIDs(Map result) {
+	    for (int i = 0; i < ids.length; ++i) {
+		String id = ids[i];
+		Iterator iter = result.keySet().iterator();
+		while (iter.hasNext()) {
+		    if (LocaleUtility.isFallbackOf(id, (String)iter.next())) {
+			iter.remove();
+		    }
+		}
+		result.put(id, this);
+	    }
+	}
+
+	public String getDisplayName(String id, Locale locale) {
+	    return factoryID + LocaleUtility.getLocaleFromName(id).getDisplayName(locale);
+	}
+    }
+
+    static class CalifornioLanguageFactory extends ICUResourceBundleFactory {
+	CalifornioLanguageFactory() {
+	    super("Countries;Languages", true);
+	}
+	
+	private static String californio = "en_US_CA";
+	private static String valley = californio + "_VALLEY";
+	private static String surfer = californio + "_SURFER";
+	private static String geek = californio + "_GEEK";
+
+	public void handleUpdateVisibleIDs(Set result) {
+	    super.handleUpdateVisibleIDs(result);
+
+	    result.add(californio);
+	    result.add(valley);
+	    result.add(surfer);
+	    result.add(geek);
+	}
+
+	protected String handleGetDisplayName(String id, Locale locale) {
+	    String prefix = "";
+	    String suffix = "";
+	    String ls = locale.toString();
+	    if (LocaleUtility.isFallbackOf(californio, ls)) {
+		if (ls.equalsIgnoreCase(valley)) {
+		    prefix = "Like, you know, it's so totally ";
+		} else if (ls.equalsIgnoreCase(surfer)) {
+		    prefix = "Dude, its ";
+		} else if (ls.equalsIgnoreCase(geek)) {
+		    prefix = "I'd estimate it's approximately ";
+		} else {
+		    prefix = "Huh?  Maybe ";
+		}
+	    }
+	    if (LocaleUtility.isFallbackOf(californio, id)) {
+		if (id.equalsIgnoreCase(valley)) {
+		    suffix = "like the Valley, you know?  Let's go to the mall!";
+		} else if (id.equalsIgnoreCase(surfer)) {
+		    suffix = "time to hit those gnarly waves, Dude!!!";
+		} else if (id.equalsIgnoreCase(geek)) {
+		    suffix = "all systems go.  T-Minus 9, 8, 7...";
+		} else {
+		    suffix = "No Habla Englais";
+		}
+	    } else {
+		suffix = super.handleGetDisplayName(id, locale);
+	    }
+		
+	    return prefix + suffix;
+	}
+    }
+
+    public void TestLocale() {
+	ICULocaleService service = new ICULocaleService();
+	service.registerObject("root", "");
+	service.registerObject("german", "de");
+	service.registerObject("german_Germany", "de_DE");
+	service.registerObject("japanese", "ja");
+	service.registerObject("japanese_Japan", "ja_JP");
+
+	Object target = service.get("de_US");
+	confirmEqual("test de_US", "german", target);
+
+	target = service.get("za_PPP");
+	confirmEqual("test zappp", "root", target);
+
+	Locale loc = Locale.getDefault();
+	Locale.setDefault(Locale.JAPANESE);
+	target = service.get("za_PPP");
+	confirmEqual("test with ja locale", "japanese", target);
+
+	Set ids = service.getVisibleIDs();
+	for (Iterator iter = ids.iterator(); iter.hasNext();) {
+	    logln("id: " + iter.next());
+	}
+
+	Locale.setDefault(loc);
+	ids = service.getVisibleIDs();
+	for (Iterator iter = ids.iterator(); iter.hasNext();) {
+	    logln("id: " + iter.next());
+	}
+
+	target = service.get("za_PPP");
+	confirmEqual("test with en locale", "root", target);
+    }
+
+    // misc coverage tests
+    public void TestCoverage() {
+	// Key
+	Key key = new Key("foobar");
+	logln("ID: " + key.id());
+	logln("canonicalID: " + key.canonicalID());
+	logln("currentID: " + key.currentID());
+	logln("has fallback: " + key.fallback());
+
+	// SimpleFactory
+	Object obj = new Object();
+	SimpleFactory sf = new SimpleFactory(obj, "object");
+	try {
+	    sf = new SimpleFactory(null, null);
+	    errln("didn't throw exception");
+	}
+	catch (IllegalArgumentException e) {
+	    logln("OK: " + e.getMessage());
+	}
+	catch (Exception e) {
+	    errln("threw wrong exception");
+	}
+	logln(sf.getDisplayName("object", null));
+
+	// ICUService
+	ICUService service = new ICUService();
+	service.registerFactory(sf);
+
+	try {
+	    service.get(null, null);
+	    errln("didn't throw exception");
+	}
+	catch (NullPointerException e) {
+	    logln("OK: " + e.getMessage());
+	}
+	catch (Exception e) {
+	    errln("threw wrong exception");
+	}
+
+	try {
+	    service.registerFactory(null);
+	    errln("didn't throw exception");
+	}
+	catch (NullPointerException e) {
+	    logln("OK: " + e.getMessage());
+	}
+	catch (Exception e) {
+	    errln("threw wrong exception");
+	}
+
+	try {
+	    service.unregisterFactory(null);
+	    errln("didn't throw exception");
+	}
+	catch (NullPointerException e) {
+	    logln("OK: " + e.getMessage());
+	}
+	catch (Exception e) {
+	    errln("threw wrong exception");
+	}
+
+	logln("object is: " + service.get("object"));
+
+	logln("stats: " + service.stats());
+
+	// ICURWLock
+
+	ICURWLock rwlock = new ICURWLock();
+	rwlock.acquireRead();
+	rwlock.releaseRead();
+
+	rwlock.acquireWrite();
+	rwlock.releaseWrite();
+	logln("stats: " + rwlock.getStats());
+	logln("stats: " + rwlock.clearStats());
+	rwlock.acquireRead();
+	rwlock.releaseRead();
+	rwlock.acquireWrite();
+	rwlock.releaseWrite();
+	logln("stats: " + rwlock.getStats());
+
+	try {
+	    rwlock.releaseRead();
+	    errln("no error thrown");
+	}
+	catch (InternalError e) {
+	    logln("OK: " + e.getMessage());
+	}
+
+	try {
+	    rwlock.releaseWrite();
+	    errln("no error thrown");
+	}
+	catch (InternalError e) {
+	    logln("OK: " + e.getMessage());
+	}
+
+	// LocaleKey
+	LocaleKey lkey = LocaleKey.create("en_US", "ja_JP");
+	lkey = LocaleKey.create(null, null);
+	lkey = LocaleKey.createWithCanonical("en_US", "ja_JP");
+
+	// MultipleKeyFactory 
+	MultipleKeyFactory mkf = new MKFSubclass(false);
+	logln("obj: " + mkf.create(lkey));
+	logln(mkf.getDisplayName("foo", null));
+	logln(mkf.getDisplayName("bar", null));
+	mkf.updateVisibleIDs(new HashMap());
+
+	MultipleKeyFactory invisibleMKF = new MKFSubclass(false);
+	logln("obj: " + invisibleMKF.create(lkey));
+	logln(invisibleMKF.getDisplayName("foo", null));
+	logln(invisibleMKF.getDisplayName("bar", null));
+	invisibleMKF.updateVisibleIDs(new HashMap());
+
+	// ResourceBundleFactory
+	ICUResourceBundleFactory rbf = new ICUResourceBundleFactory(null, true);
+	logln("RB: " + rbf.create(lkey));
+	LocaleKey nokey = LocaleKey.create(null, null);
+	logln("RB: " + rbf.create(nokey));
+
+	rbf = new ICUResourceBundleFactory("foobar", true);
+	logln("RB: " + rbf.create(lkey));
+
+	// ICUNotifier
+	ICUNotifier nf = new ICUNSubclass();
+	try {
+	    nf.addListener(null);
+	    errln("added null listener");
+	}
+	catch (NullPointerException e) {
+	    logln(e.getMessage());
+	}
+	catch (Exception e) {
+	    errln("got wrong exception");
+	}
+
+	try {
+	    nf.addListener(new WrongListener());
+	    errln("added wrong listener");
+	}
+	catch (InternalError e) {
+	    logln(e.getMessage());
+	}
+	catch (Exception e) {
+	    errln("got wrong exception");
+	}
+
+	try {
+	    nf.removeListener(null);
+	    errln("removed null listener");
+	}
+	catch (NullPointerException e) {
+	    logln(e.getMessage());
+	}
+	catch (Exception e) {
+	    errln("got wrong exception");
+	}
+
+	nf.removeListener(new MyListener());
+	nf.notifyChanged();
+	nf.addListener(new MyListener());
+	nf.removeListener(new MyListener());
+    }
+
+    static class MyListener implements EventListener {
+	public void heyMan() {
+	}
+    }
+
+    static class WrongListener implements EventListener {
+	public void sayWhat() {
+	}
+    }
+
+    static class ICUNSubclass extends ICUNotifier {
+	public boolean acceptsListener(EventListener l) {
+	    return l instanceof MyListener;
+	}
+
+	public void notifyListener(EventListener l) {
+	    ((MyListener)l).heyMan();
+	}
+    }
+
+    static class MKFSubclass extends MultipleKeyFactory {
+	MKFSubclass(boolean visible) {
+	    super(visible);
+	}
+
+	public Object handleCreate(Key key) {
+	    return null;
+	}
+
+	public void handleUpdateVisibleIDs(Set result) {
+	}
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java b/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java
new file mode 100644
index 0000000..652e3f3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java
@@ -0,0 +1,210 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java,v $
+ * $Date: 2002/08/13 22:10:20 $
+ * $Revision: 1.2 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.LocaleUtility;
+import java.util.EventListener;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+public class ICUServiceTestSample {
+    static public void main(String[] args) {
+	HelloServiceClient client = new HelloServiceClient();
+
+	Thread t = new HelloUpdateThread();
+	t.start();
+	try {
+	    t.join();
+	}
+	catch (InterruptedException e) {
+	}
+	System.out.println("done");
+    }
+
+    /**
+     * A class that displays the current names in the Hello service.
+     * Each time the service changes, it redisplays the names.
+     */
+    static class HelloServiceClient implements HelloService.HelloServiceListener {
+
+	HelloServiceClient() {
+	    HelloService.addListener(this);
+	    display();
+	}
+
+	/**
+	 * This will be called in the notification thread of
+	 * ICUNotifier.  ICUNotifier could spawn a (non-daemon) thread
+	 * for each listener, so that impolite listeners wouldn't hold
+	 * up notification, but right now it doesn't.  Instead, all
+	 * notifications are delivered on the notification thread.
+	 * Since that's a daemon thread, a notification might not
+	 * complete before main terminates.  
+	 */
+	public void helloServiceChanged() {
+	    display();
+	}
+
+	private void display() {
+	    Map names = HelloService.getDisplayNames(Locale.US);
+	    System.out.println("displaying " + names.size() + " names.");
+	    Iterator iter = names.entrySet().iterator();
+	    while (iter.hasNext()) {
+		Entry entry = (Entry)iter.next();
+		String displayName = (String)entry.getKey();
+		HelloService service = HelloService.get((String)entry.getValue());
+		System.out.println(displayName + " says " + service.hello());
+		try {
+		    Thread.sleep(50);
+		}
+		catch (InterruptedException e) {
+		}
+	    }
+	    System.out.println("----");
+	}
+    }
+
+    /**
+     * A thread to update the service.
+     */
+    static class HelloUpdateThread extends Thread {
+	String[][] updates = {
+	    { "Hey", "en_US_INFORMAL" },
+	    { "Hallo", "de_DE_INFORMAL" },
+	    { "Yo!", "en_US_CALIFORNIA_INFORMAL" },
+	    { "Chi Fanle Ma?", "zh__INFORMAL" },
+	    { "Munch munch... Burger?", "en" },
+	    { "Sniff", "fr" },
+	    { "TongZhi! MaoZeDong SiXiang Wan Sui!", "zh_CN" },
+	    { "Bier? Ja!", "de" },
+	};
+	public void run() {
+	    for (int i = 0; i < updates.length; ++i) {
+		try {
+		    Thread.sleep(500);
+		}
+		catch (InterruptedException e) {
+		}
+		HelloService.register(updates[i][0], LocaleUtility.getLocaleFromName(updates[i][1]));
+	    }
+	}
+    }
+
+    /**
+     * An example service that wraps an ICU service in order to export custom API and
+     * notification. The service just implements 'hello'.
+     */
+    static final class HelloService {
+	private static ICUService registry;
+	private String name;
+
+	private HelloService(String name) { 
+	    this.name = name; 
+	}
+
+	/**
+	 * The hello service...
+	 */
+	public String hello() { 
+	    return name; 
+	}
+	
+	public String toString() { 
+	    return super.toString() + ": " + name; 
+	}
+
+	/**
+	 * Deferred init.
+	 */
+	private static ICUService registry() {
+	    if (registry == null) {
+		initRegistry();
+	    }
+	    return registry;
+	}
+
+	private static void initRegistry() {
+	    registry = new ICULocaleService() {
+		    protected boolean acceptsListener(EventListener l) {
+			return true; // we already verify in our wrapper APIs
+		    }
+		    protected void notifyListener(EventListener l) {
+			((HelloServiceListener)l).helloServiceChanged();
+		    }
+		};
+
+	    // initialize
+	    doRegister("Hello", "en");
+	    doRegister("Bonjour", "fr");
+	    doRegister("Ni Hao", "zh_CN");
+	    doRegister("Guten Tag", "de");
+	}
+
+	/**
+	 * A custom listener for changes to this service.  We don't need to
+	 * point to the service since it is defined by this class and not
+	 * an object.
+	 */
+	public static interface HelloServiceListener extends EventListener {
+	    public void helloServiceChanged();
+	}
+
+	/**
+	 * Type-safe notification for this service.
+	 */
+	public static void addListener(HelloServiceListener l) {
+	    registry().addListener(l);
+	}
+
+	/**
+	 * Type-safe notification for this service.
+	 */
+	public static void removeListener(HelloServiceListener l) {
+	    registry().removeListener(l);
+	}
+
+	/**
+	 * Type-safe access to the service.
+	 */
+	public static HelloService get(String id) {
+	    return (HelloService)registry().get(id);
+	}
+
+	public static Set getVisibleIDs() {
+	    return registry().getVisibleIDs();
+	}
+
+	public static Map getDisplayNames(Locale locale) {
+	    return registry().getDisplayNames(locale);
+	}
+
+	/**
+	 * Register a new hello string for this locale.
+	 */
+	public static void register(String helloString, Locale locale) {
+	    if (helloString == null || locale == null) {
+		throw new NullPointerException();
+	    }
+	    doRegister(helloString, LocaleUtility.canonicalLocaleString(locale.toString()));
+	}
+
+	private static void doRegister(String hello, String id) {
+	    registry().registerObject(new HelloService(hello), id);
+	}
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java b/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java
new file mode 100644
index 0000000..ea90bdb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java
@@ -0,0 +1,457 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java,v $
+ * $Date: 2002/08/13 22:10:20 $
+ * $Revision: 1.4 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestLog;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.ICUService.Factory;
+import com.ibm.icu.impl.ICUService.SimpleFactory;
+import com.ibm.icu.impl.ICUService.Key;
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.impl.ICULocaleService.LocaleKey;
+import com.ibm.icu.impl.ICULocaleService.MultipleKeyFactory;
+import com.ibm.icu.impl.ICULocaleService.ICUResourceBundleFactory;
+import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Random;
+import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.TreeSet;
+
+public class ICUServiceThreadTest extends TestFmwk
+{    
+    private static final boolean PRINTSTATS = false;
+
+    public static void main(String[] args) throws Exception {
+	ICUServiceThreadTest test = new ICUServiceThreadTest();
+	test.run(args);
+
+	// get
+	// getvisibleids
+	// getdisplayname(locale)
+	// factories
+	
+	// registerFactory
+	// unregisterFactory
+
+	// 1) concurrent access
+	// 2) access while factories change
+	// 3) iteration while factories change
+	// 4) concurrent conflicting access
+    }
+
+    private static final String[] countries = {
+	"ab", "bc", "cd", "de", "ef", "fg", "gh", "ji", "ij", "jk"
+    };
+    private static final String[] languages = {
+	"", "ZY", "YX", "XW", "WV", "VU", "UT", "TS", "SR", "RQ", "QP"
+    };
+    private static final String[] variants = {
+	"", "", "", "GOLD", "SILVER", "BRONZE"
+    };
+
+    private static class TestFactory extends SimpleFactory {
+	TestFactory(String id) {
+	    super(LocaleUtility.getLocaleFromName(id), id, true);
+	}
+
+	public String getDisplayName(String id, Locale locale) {
+	    return (visible && id.equals(this.id)) ? "(" + locale.toString() + ") " + id : null;
+	}
+
+	public String toString() {
+	    return "Factory_" + id;
+	}
+    }
+
+    private static final Random r = new Random();
+
+    private static String getCLV() {
+	String c = countries[r.nextInt(countries.length)];
+	String l = languages[r.nextInt(languages.length)];
+	String v = variants[r.nextInt(variants.length)];
+	return new Locale(c, l, v).toString();
+    }
+
+    private static boolean WAIT = true;
+    private static boolean GO = false;
+    private static long TIME = 5000;
+
+    public static void runThreads() {
+	runThreads(TIME);
+    }
+
+    public static void runThreads(long time) {
+	try {
+	    GO = true;
+	    WAIT = false;
+
+	    Thread.sleep(time);
+
+	    WAIT = true;
+	    GO = false;
+
+	    Thread.sleep(300);
+	}
+	catch (InterruptedException e) {
+	}
+    }
+
+    static class TestThread extends Thread implements TestLog {
+	private final String name;
+	protected ICUService service;
+	private final long delay;
+	private final TestLog log;
+
+	public TestThread(String name, ICUService service, long delay, TestLog log) {
+	    this.name = name + " ";
+	    this.service = service;
+	    this.delay = delay;
+	    this.log = log;
+	    this.setDaemon(true);
+	}
+
+	public void run() {
+	    while (WAIT) {
+		Thread.yield();
+	    }
+
+	    try {
+		while (GO) {
+		    iterate();
+		    if (delay > 0) {
+			Thread.sleep(delay);
+		    }
+		}
+	    }
+	    catch (InterruptedException e) {
+	    }
+	}
+
+	protected void iterate() {
+	}
+
+	public boolean logging() {
+	    return log != null;
+	}
+
+	public void log(String msg) {
+	    if (logging()) {
+		log.log(name + msg);
+	    }
+	}
+
+	public void logln(String msg) {
+	    if (logging()) {
+		log.logln(name + msg);
+	    }
+	}
+
+	public void err(String msg) {
+	    if (logging()) {
+		log.err(name + msg);
+	    }
+	}
+
+	public void errln(String msg) {
+	    if (logging()) {
+		log.errln(name + msg);
+	    }
+	}
+    }
+
+    static class RegisterFactoryThread extends TestThread {
+	RegisterFactoryThread(String name, ICUService service, long delay, TestLog log) {
+	    super("REG " + name, service, delay, log);
+	}
+
+	protected void iterate() {
+	    Factory f = new TestFactory(getCLV());
+	    service.registerFactory(f);
+	    logln(f.toString());
+	}
+    }
+
+    static class UnregisterFactoryThread extends TestThread {
+	private Random r;
+	List factories;
+
+	UnregisterFactoryThread(String name, ICUService service, long delay, TestLog log) {
+	    super("UNREG " + name, service, delay, log);
+	    
+	    r = new Random();
+	    factories = service.factories();
+	}
+
+	public void iterate() {
+	    int s = factories.size();
+	    if (s == 0) {
+		factories = service.factories();
+	    } else {
+		int n = r.nextInt(s);
+		Factory f = (Factory)factories.remove(n);
+		boolean success = service.unregisterFactory(f);
+		if (logging()) logln("factory: " + f + (success ? " succeeded." : " *** failed."));
+	    }
+	}
+    }
+
+    static class UnregisterFactoryListThread extends TestThread {
+	Factory[] factories;
+	int n;
+
+	UnregisterFactoryListThread(String name, ICUService service, long delay, Factory[] factories, TestLog log) {
+	    super("UNREG " + name, service, delay, log);
+	    
+	    this.factories = factories;
+	}
+
+	public void iterate() {
+	    if (n < factories.length) {
+		Factory f = factories[n++];
+		boolean success = service.unregisterFactory(f);
+		if (logging()) logln("factory: " + f + (success ? " succeeded." : " *** failed."));
+	    }
+	}
+    }
+
+
+    static class GetVisibleThread extends TestThread {
+	GetVisibleThread(String name, ICUService service, long delay, TestLog log) {
+	    super("VIS " + name, service, delay, log);
+	}
+
+	protected void iterate() {
+	    Set ids = service.getVisibleIDs();
+	    Iterator iter = ids.iterator();
+	    int n = 10;
+	    while (--n >= 0 && iter.hasNext()) {
+		String id = (String)iter.next();
+		Object result = service.get(id);
+		logln("iter: " + n + " id: " + id + " result: " + result);
+	    }
+	}
+    }
+
+    static class GetDisplayThread extends TestThread {
+	Locale locale;
+
+	GetDisplayThread(String name, ICUService service, long delay, Locale locale, TestLog log) {
+	    super("DIS " + name, service, delay, log);
+
+	    this.locale = locale;
+	}
+
+	protected void iterate() {
+	    Map names = service.getDisplayNames(locale);
+	    Iterator iter = names.entrySet().iterator();
+	    int n = 10;
+	    while (--n >= 0 && iter.hasNext()) {
+		Entry e = (Entry)iter.next();
+		String dname = (String)e.getKey();
+		String id = (String)e.getValue();
+		Object result = service.get(id);
+		if (logging()) logln(" iter: " + n + 
+				     " dname: " + dname + 
+				     " id: " + id + 
+				     " result: " + result);
+	    }
+	}
+    }
+
+    static class GetThread extends TestThread {
+	private String[] actualID;
+
+	GetThread(String name, ICUService service, long delay, TestLog log) {
+	    super("GET " + name, service, delay, log);
+
+	    actualID = new String[1];
+	}
+
+	protected void iterate() {
+	    String id = getCLV();
+	    Object o = service.get(id, actualID);
+	    if (logging() && o != null) {
+		logln(" id: " + id + " actual: " + actualID[0] + " result: " + o);
+	    }
+	}
+    }
+
+    static class GetListThread extends TestThread {
+	private final String[] list;
+	private int n;
+
+	GetListThread(String name, ICUService service, long delay, String[] list, TestLog log) {
+	    super("GETL " + name, service, delay, log);
+
+	    this.list = list;
+	}
+
+	protected void iterate() {
+	    if (--n < 0) {
+		n = list.length - 1;
+	    }
+	    String id = list[n];
+	    Object o = service.get(id);
+	    if (logging()) {
+		logln(" id: " + id + " result: " + o);
+	    }
+	}
+    }
+
+    // return a collection of unique factories, might be fewer than requested
+    Collection getFactoryCollection(int requested) {
+	Set locales = new HashSet();
+	for (int i = 0; i < requested; ++i) {
+	    locales.add(getCLV());
+	}
+	List factories = new ArrayList(locales.size());
+	Iterator iter = locales.iterator();
+	while (iter.hasNext()) {
+	    factories.add(new TestFactory((String)iter.next()));
+	}
+	return factories;
+    }
+
+    void registerFactories(ICUService service, Collection c) {
+	Iterator iter = c.iterator();
+	while (iter.hasNext()) {
+	    service.registerFactory((Factory)iter.next());
+	}
+    }
+
+    ICUService stableService() {
+	if (stableService == null) {
+	    stableService = new ICULocaleService();
+	    registerFactories(stableService, getFactoryCollection(50));
+	}
+	return stableService;
+    }
+    private ICUService stableService;
+
+    // run multiple get on a stable service
+    public void Test00_ConcurrentGet() {
+	for(int i = 0; i < 10; ++i) {
+	    new GetThread("[" + Integer.toString(i) + "]",  stableService(), 0, this).start();
+	}
+	runThreads();
+	if (PRINTSTATS) System.out.println(stableService.stats());
+    }
+
+    // run multiple getVisibleID on a stable service
+    public void Test01_ConcurrentGetVisible() {
+	for(int i = 0; i < 10; ++i) {
+	    new GetVisibleThread("[" + Integer.toString(i) + "]",  stableService(), 0, this).start();
+	}
+	runThreads();
+	if (PRINTSTATS) System.out.println(stableService.stats());
+    }
+
+    // run multiple getDisplayName on a stable service
+    public void Test02_ConcurrentGetDisplay() {
+	String[] localeNames = {
+	    "en", "es", "de", "fr", "zh", "it", "no", "sv"
+	};
+	for(int i = 0; i < localeNames.length; ++i) {
+	    String locale = localeNames[i];
+	    new GetDisplayThread("[" + locale + "]",  
+				 stableService(), 
+				 0,
+				 LocaleUtility.getLocaleFromName(locale),
+				 this).start();
+	}
+	runThreads();
+	if (PRINTSTATS) System.out.println(stableService.stats());
+    }
+
+    // run register/unregister on a service
+    public void Test03_ConcurrentRegUnreg() {
+	ICUService service = new ICULocaleService();
+	for (int i = 0; i < 5; ++i) {
+	    new RegisterFactoryThread("[" + i + "]", service, 0, this).start();
+	}
+	for (int i = 0; i < 5; ++i) {
+	    new UnregisterFactoryThread("[" + i + "]", service, 0, this).start();
+	}
+	runThreads();
+	if (PRINTSTATS) System.out.println(service.stats());
+    }
+    
+    public void Test04_WitheringService() {
+	ICUService service = new ICULocaleService();
+
+	Collection fc = getFactoryCollection(50);
+	registerFactories(service, fc);
+
+	Factory[] factories = (Factory[])fc.toArray(new Factory[fc.size()]);
+	Comparator comp = new Comparator() {
+		public int compare(Object lhs, Object rhs) {
+		    return lhs.toString().compareTo(rhs.toString());
+		}
+	    };
+	Arrays.sort(factories, comp);
+
+	new GetThread("", service, 0, this).start();
+	new UnregisterFactoryListThread("", service, 3, factories, this).start();
+
+	runThreads(2000);
+	if (PRINTSTATS) System.out.println(service.stats());
+    }
+	
+    // "all hell breaks loose"
+    // one register and one unregister thread, delay 500ms
+    // two display threads with different locales, delay 500ms;
+    // one visible id thread, delay 50ms
+    // fifteen get threads, delay 0
+    // run for ten seconds
+    public void Test05_ConcurrentEverything() {
+	ICUService service = new ICULocaleService();
+
+	new RegisterFactoryThread("", service, 500, this).start();
+
+	for(int i = 0; i < 15; ++i) {
+	    new GetThread("[" + Integer.toString(i) + "]", service, 0, this).start();
+	}
+
+	new GetVisibleThread("",  service, 50, this).start();
+
+	String[] localeNames = {
+	    "en", "de"
+	};
+	for(int i = 0; i < localeNames.length; ++i) {
+	    String locale = localeNames[i];
+	    new GetDisplayThread("[" + locale + "]",  
+				 stableService(), 
+				 500,
+				 LocaleUtility.getLocaleFromName(locale),
+				 this).start();
+	}
+
+	new UnregisterFactoryThread("", service, 500, this).start();
+
+	// yoweee!!!
+	runThreads(10000);
+	if (PRINTSTATS) System.out.println(service.stats());
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/TrieTest.java b/src/com/ibm/icu/dev/test/util/TrieTest.java
new file mode 100755
index 0000000..29c0590
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TrieTest.java
@@ -0,0 +1,738 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/util/TrieTest.java,v $ 
+* $Date: 2002/04/02 21:00:08 $ 
+* $Revision: 1.4 $
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Trie;
+import com.ibm.icu.impl.IntTrie;
+import com.ibm.icu.impl.CharTrie;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.lang.UCharacter;
+import java.io.ByteArrayInputStream;
+
+/**
+* Testing class for Trie. Tests here will be simple, since both CharTrie and 
+* IntTrie are very similar and are heavily used in other parts of ICU4J.
+* Codes using Tries are expected to have detailed tests.
+* @author Syn Wee Quek
+* @since release 2.1 Jan 01 2002
+*/
+public final class TrieTest extends TestFmwk 
+{ 
+    // constructor ---------------------------------------------------
+  
+    /**
+    * Constructor
+    */
+    public TrieTest()
+    {
+    }
+      
+    // public methods -----------------------------------------------
+    
+    public static void main(String arg[]) 
+    {
+        TrieTest test = new TrieTest();
+        try {
+	        test.run(arg);
+        } catch (Exception e) {
+        	test.errln("Error testing trietest");
+        }
+    }
+    
+    /**
+     * Testing the constructors of the Tries
+     */
+    public void TestInit() 
+    {
+    	byte array[] = new byte[INT_TRIE_DATA_.length << 1];
+        for (int i = 0; i < INT_TRIE_DATA_.length; i ++) {
+            array[i << 1] = (byte)((INT_TRIE_DATA_[i] >> 8) & 0xFF);
+            array[(i << 1) + 1] = (byte)(INT_TRIE_DATA_[i] & 0xFF);
+        }
+        ByteArrayInputStream inputStream    = new ByteArrayInputStream(
+                                                                     array);
+        IntDataManipulate    datamanipulate = new IntDataManipulate();
+        // chartrie should fail with int data
+        try {
+        	CharTrie chartrie = new CharTrie(inputStream, datamanipulate);
+        	errln("CharTrie should fail with Int data during construction");
+        } catch (Exception e) {
+        }
+        // inttrie should pass with int data
+        try {
+        	inputStream.reset();
+            IntTrie m_trie_ = new IntTrie(inputStream, datamanipulate);
+        } catch (Exception e) {
+            errln("Failed reading IntTrie data");
+        }	
+    }
+    
+    public void TestIntValues()
+    {
+        byte array[] = new byte[INT_TRIE_DATA_.length << 1];
+        for (int i = 0; i < INT_TRIE_DATA_.length; i ++) {
+            array[i << 1] = (byte)((INT_TRIE_DATA_[i] >> 8) & 0xFF);
+            array[(i << 1) + 1] = (byte)(INT_TRIE_DATA_[i] & 0xFF);
+        }
+        ByteArrayInputStream inputStream = new ByteArrayInputStream(array);
+        IntTrie trie = null;
+        try {
+            trie = new IntTrie(inputStream, new IntDataManipulate());
+        } catch (Exception e) {
+            errln("Failed reading trie data");
+        }
+        StringBuffer buffer = new StringBuffer();
+        for (int i = 0; i < STRING_1_.length; i ++) {
+            UTF16.append(buffer, STRING_1_[i]);
+        }
+        String str      = buffer.toString();
+        int    values[] = VALUE_1_;
+        internalTestIntValues(trie, str, values);
+        
+        // testing invalid codepoints
+        int result = 0;
+        result = trie.getCodePointValue(0x110000);
+        if (result != 0) {
+            errln("Error: Expected value for illegal codepoint should be 0");
+        }
+        
+        for (int i = 0; i < 0xFFFF; i ++) {
+    		if (trie.getBMPValue((char)i) != trie.getCodePointValue(i)) {
+    			errln("For BMP codepoint, getBMPValue should be the same " +
+    			       "as getCodepointValue");
+    		}
+    	}
+    	for (int i = 0x10000; i < 0x10ffff; i ++) {
+    		char lead = UTF16.getLeadSurrogate(i);
+    		char trail = UTF16.getTrailSurrogate(i);
+    		int value = trie.getCodePointValue(i);
+    		if (value != trie.getSurrogateValue(lead, trail) ||
+    		    value != trie.getTrailValue(trie.getLeadValue(lead), 
+    		                                trail)) {
+    		    errln("For Non-BMP codepoints, getSurrogateValue should be "
+    		          + "the same s getCodepointValue and getTrailValue");
+    		}		
+    	}
+    }
+    
+    public void TestCharValues()
+    {
+    	CharTrie trie = null;
+    	try {
+		 	trie = UCharacterProperty.getInstance().m_trie_;
+    	} catch (Exception e) {
+    		errln("Error creating ucharacter trie");
+    	}
+    	
+    	for (int i = 0; i < 0xFFFF; i ++) {
+    		if (trie.getBMPValue((char)i) != trie.getCodePointValue(i)) {
+    			errln("For BMP codepoint, getBMPValue should be the same " +
+    			       "as getCodepointValue");
+    		}
+    	}
+    	for (int i = 0x10000; i < 0x10ffff; i ++) {
+    		char lead = UTF16.getLeadSurrogate(i);
+    		char trail = UTF16.getTrailSurrogate(i);
+    		char value = trie.getCodePointValue(i);
+    		if (value != trie.getSurrogateValue(lead, trail) ||
+    		    value != trie.getTrailValue(trie.getLeadValue(lead), 
+    		                                trail)) {
+    		    errln("For Non-BMP codepoints, getSurrogateValue should be "
+    		          + "the same s getCodepointValue and getTrailValue");
+    		}		
+    	}
+    }
+    
+    // private class ------------------------------------------------
+    
+    private static class IntDataManipulate implements Trie.DataManipulate
+    {
+        public int getFoldingOffset(int data) 
+        {
+            return data >> 16;
+        }
+    }
+    
+    // private data members -----------------------------------------
+   
+    // trie data, generated from icu4c
+    private final char INT_TRIE_DATA_[] = {
+    0x5472, 0x6965, 0x0, 0x125, 0x0, 0x8c0, 0x0, 0x18c, 0x0, 0x8, 0x8, 0x8, 
+0x8, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x1e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4d, 0x4f, 0x4f, 0x4f, 
+0x4f, 0x4f, 0x53, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x29, 0x29, 0x29, 0x29, 0x29, 
+0x5b, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 
+0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 
+0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 
+0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 
+0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 
+0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 
+0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 
+0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 
+0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 
+0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 
+0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 
+0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 
+0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2e, 
+0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 
+0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 
+0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 
+0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 
+0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 
+0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 
+0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 
+0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 
+0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 
+0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 
+0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 
+0x32, 0x32, 0x32, 0x32, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+0x20, 0x20, 0x22, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 
+0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 
+0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 
+0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 
+0x32, 0x32, 0x32, 0x32, 0x36, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 
+0x17, 0x17, 0x3d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x45, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1234, 0x0, 0x1234, 
+0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 
+0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 
+0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 
+0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 
+0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 
+0x0, 0x1234, 0x0, 0x1234, 0x0, 0x1234, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6162, 0x0, 0x6162, 
+0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 
+0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 
+0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 
+0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 
+0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 
+0x0, 0x6162, 0x0, 0x6162, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 
+0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 
+0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 
+0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 
+0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 
+0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 
+0x0, 0x3132, 0x0, 0x3132, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 
+0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 
+0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 
+0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 
+0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 
+0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 
+0x0, 0x27, 0x0, 0x27, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 
+0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 
+0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 
+0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 
+0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 
+0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 
+0x0, 0x1, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 
+0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 
+0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x6162, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 
+0x0, 0x10, 0x0, 0x10, 0x0, 0x11, 0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 
+0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 
+0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 
+0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 
+0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 0x820, 0x1, 0x820, 0x1, 
+0x820, 0x1, 0x820, 0x1, 0x840, 0x6163, 0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 
+0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 
+0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 
+0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 
+0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 
+0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 
+0x860, 0x6162, 0x860, 0x6162, 0x860, 0x6162, 0x880, 0x6162, 0x0, 0x3132, 0x0, 0x3132, 
+0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 
+0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 0x0, 0x3132, 
+0x8a0, 0x1f, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 
+0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 
+0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 
+0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 
+0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 0x0, 0x27, 
+0x0, 0x27, 0x0, 0x27, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
+    };
+
+    private final int STRING_1_[] = {0, 0x20, 0xa7, 0x3400, 0x9fa6, 0xdada, 
+                                     0xeeee, 0x11111, 0x44444, 0xf0003, 
+                                     0xf0004, 0xf0006, 0xf0007, 0xf0020};
+    private final int VALUE_1_[] = {0, 0x1234, 0, 0x6162, 0x3132, 0x27, 1, 
+                                    0x6162, 0, 0xf, 0x10, 0x11, 0x12, 0};
+    
+    // private methods ----------------------------------------------
+  
+    private void internalTestIntValues(IntTrie trie, String str, 
+                                       int values[]) 
+    {
+        // try forward 
+        int count = 0;
+        int valueindex = 0;
+        while (count < str.length()) {
+            int value;
+            char c = str.charAt(count ++);
+            char c2 = UTF16.isLeadSurrogate(c) && count < str.length() &&
+                      UTF16.isTrailSurrogate(str.charAt(count))
+                      ? str.charAt(count ++) : 0;
+            if (c2 != 0) {
+                value = trie.getSurrogateValue(c, c2);
+            }
+            else {
+                value = trie.getBMPValue(c);
+            }
+            if (value != values[valueindex]) {
+                errln("Error: Expected value for 0x" + Integer.toHexString(c) +
+                      " and 0x" + Integer.toHexString(c2) + " should be " + 
+                      values[valueindex] + " not " + value);
+            }
+            value = trie.getLeadValue(c);
+            if (c2 != 0) {
+                value = trie.getTrailValue(value, c2);
+            }
+            if (value != values[valueindex]) {
+                errln("Error: Expected value for 0x" + Integer.toHexString(c) +
+                      " and 0x" + Integer.toHexString(c2) + " should be " + 
+                      values[valueindex] + " not " + value);
+            }
+            if (c2!=0) {
+                int codepoint = UCharacter.getCodePoint(c, c2);
+                value = trie.getCodePointValue(codepoint);
+            }
+            else {
+                value = trie.getBMPValue(c);
+            }
+            if (value != values[valueindex]) {
+                errln("Error: Expected value for 0x" + Integer.toHexString(c) +
+                      " and 0x" + Integer.toHexString(c2) + " should be " + 
+                      values[valueindex] + " not " + value);
+            }
+            valueindex ++;
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/util/VersionInfoTest.java b/src/com/ibm/icu/dev/test/util/VersionInfoTest.java
new file mode 100644
index 0000000..d4ce8e9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/VersionInfoTest.java
@@ -0,0 +1,328 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/util/VersionInfoTest.java,v $ 
+* $Date: 2002/03/27 01:59:46 $ 
+* $Revision: 1.5 $
+*
+*******************************************************************************
+*/
+
+
+package com.ibm.icu.dev.test.util;
+
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.VersionInfo;
+
+
+/**
+* Testing class for VersionInfo
+* @author Syn Wee Quek
+* @since release 2.1 March 01 2002
+*/
+public final class VersionInfoTest extends TestFmwk 
+{ 
+    // constructor ---------------------------------------------------
+  
+    /**
+    * Constructor
+    */
+    public VersionInfoTest()
+    {
+    }
+
+    // public methods -----------------------------------------------
+    
+    public static void main(String arg[]) 
+    {
+        VersionInfoTest test = new VersionInfoTest();
+        try {
+	        test.run(arg);
+        } catch (Exception e) {
+        	test.errln("Error testing VersionInfo");
+        }
+    }
+    
+    /**
+     * Test that the instantiation works
+     */
+    public void TestInstance()
+    {
+    	VersionInfo version;
+    	for (int i = 0; i < INSTANCE_INVALID_STRING_.length; i ++) {
+    		try {
+    			version = 
+    			        VersionInfo.getInstance(INSTANCE_INVALID_STRING_[i]);
+    			errln("\"" + INSTANCE_INVALID_STRING_[i] + 
+    			      "\" should produce an exception");
+    		} catch (RuntimeException e) {
+    		}
+    	}
+    	for (int i = 0; i < INSTANCE_VALID_STRING_.length; i ++) {
+	    	try {
+	    		version = VersionInfo.getInstance(INSTANCE_VALID_STRING_[i]);
+	    	} catch (RuntimeException e) {
+	    		errln("\"" + INSTANCE_VALID_STRING_[i] + 
+	    		      "\" should produce an valid version");
+	    	}
+    	}
+    	for (int i = 0; i < INSTANCE_INVALID_INT_.length; i ++) {
+	    	try {
+	    		version = getInstance(INSTANCE_INVALID_INT_[i]);
+	    		errln("invalid ints should produce an exception");
+	    	} catch (RuntimeException e) {
+	    	}
+    	}
+    	for (int i = 0; i < INSTANCE_VALID_INT_.length; i ++) {
+	    	try {
+	    		version = getInstance(INSTANCE_VALID_INT_[i]);
+	    	} catch (RuntimeException e) {
+	    		errln("valid ints should not produce an exception");
+	    	}
+    	}
+    }
+    
+    /**
+     * Test that the comparison works
+     */
+    public void TestCompare()
+    {
+    	for (int i = 0; i < COMPARE_NOT_EQUAL_STRING_.length; i += 2) {
+    		VersionInfo v1 = 
+    		            VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i]);
+    		VersionInfo v2 = 
+    		        VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i + 1]);
+    		if (v1.compareTo(v2) == 0) {
+    			errln(COMPARE_NOT_EQUAL_STRING_[i] + " should not equal " +
+    			      COMPARE_NOT_EQUAL_STRING_[i + 1]);
+    		}
+    	}
+    	for (int i = 0; i < COMPARE_NOT_EQUAL_INT_.length; i += 2) {
+    		VersionInfo v1 = getInstance(COMPARE_NOT_EQUAL_INT_[i]);
+    		VersionInfo v2 = getInstance(COMPARE_NOT_EQUAL_INT_[i + 1]);
+    		if (v1.compareTo(v2) == 0) {
+    			errln(COMPARE_NOT_EQUAL_INT_[i] + " should not equal " +
+    			      COMPARE_NOT_EQUAL_INT_[i + 1]);
+    		}
+    	}
+    	for (int i = 0; i < COMPARE_EQUAL_STRING_.length - 1; i ++) {
+    		VersionInfo v1 = 
+    		            VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i]);
+    		VersionInfo v2 = 
+    		        VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i + 1]);
+    		if (v1.compareTo(v2) != 0) {
+    			errln(COMPARE_EQUAL_STRING_[i] + " should equal " +
+    			      COMPARE_EQUAL_STRING_[i + 1]);
+    		}
+    	}
+    	for (int i = 0; i < COMPARE_EQUAL_INT_.length - 1; i ++) {
+    		VersionInfo v1 = getInstance(COMPARE_EQUAL_INT_[i]);
+    		VersionInfo v2 = getInstance(COMPARE_EQUAL_INT_[i + 1]);
+    		if (v1.compareTo(v2) != 0) {
+    			errln(COMPARE_EQUAL_INT_[i] + " should equal " +
+    			      COMPARE_EQUAL_INT_[i + 1]);
+    		}
+    	}
+    	for (int i = 0; i < COMPARE_LESS_.length - 1; i ++) {
+    		VersionInfo v1 = VersionInfo.getInstance(COMPARE_LESS_[i]);
+    		VersionInfo v2 = VersionInfo.getInstance(COMPARE_LESS_[i + 1]);
+    		if (v1.compareTo(v2) >= 0) {
+    			errln(COMPARE_LESS_[i] + " should be less than " + 
+    			      COMPARE_LESS_[i + 1]);
+    		}
+    		if (v2.compareTo(v1) <= 0) {
+    			errln(COMPARE_LESS_[i + 1] + " should be greater than " + 
+    			      COMPARE_LESS_[i]);
+    		}
+    	}
+    }
+    
+    /**
+     * Test that the getter function works
+     */
+    public void TestGetter()
+    {
+    	for (int i = 0; i < GET_STRING_.length; i ++) {
+    		VersionInfo v = VersionInfo.getInstance(GET_STRING_[i]);
+    		if (v.getMajor() != GET_RESULT_[i << 2] ||
+    		    v.getMinor() != GET_RESULT_[(i << 2) + 1] ||
+    		    v.getMilli() != GET_RESULT_[(i << 2) + 2] ||
+    		    v.getMicro() != GET_RESULT_[(i << 2) + 3]) {
+    		    errln(GET_STRING_[i] + " should return major=" + 
+    		          GET_RESULT_[i << 2] + " minor=" + 
+    		          GET_RESULT_[(i << 2) + 1] + " milli=" + 
+    		          GET_RESULT_[(i << 2) + 2] + " micro=" +
+    		          GET_RESULT_[(i << 2) + 3]);  
+    		}
+    		v = getInstance(GET_INT_[i]);
+    		if (v.getMajor() != GET_RESULT_[i << 2] ||
+    		    v.getMinor() != GET_RESULT_[(i << 2) + 1] ||
+    		    v.getMilli() != GET_RESULT_[(i << 2) + 2] ||
+    		    v.getMicro() != GET_RESULT_[(i << 2) + 3]) {
+    		    errln(GET_STRING_[i] + " should return major=" + 
+    		          GET_RESULT_[i << 2] + " minor=" + 
+    		          GET_RESULT_[(i << 2) + 1] + " milli=" + 
+    		          GET_RESULT_[(i << 2) + 2] + " micro=" +
+    		          GET_RESULT_[(i << 2) + 3]);  
+    		}
+    	}
+    }
+    
+    /**
+     * Test toString()
+     */
+	public void TesttoString() 
+	{
+		for (int i = 0; i < TOSTRING_STRING_.length; i ++) {
+    		VersionInfo v = VersionInfo.getInstance(TOSTRING_STRING_[i]);
+    		if (!v.toString().equals(TOSTRING_RESULT_[i])) {
+    	    	errln("toString() for " + TOSTRING_STRING_[i] + 
+    	    	      " should produce " + TOSTRING_RESULT_[i]);
+    		}
+    		v = getInstance(TOSTRING_INT_[i]);
+    		if (!v.toString().equals(TOSTRING_RESULT_[i])) {
+    	    	errln("toString() for " + TOSTRING_INT_[i] + 
+    	    	      " should produce " + TOSTRING_RESULT_[i]);
+    		}
+		}
+	}
+	
+	// private methods --------------------------------------------------
+	
+	/**
+	 * int array versioninfo creation
+	 */
+	private static VersionInfo getInstance(int data[])
+	{
+		switch (data.length) {
+	    	case 1:
+	    		return VersionInfo.getInstance(data[0]);
+	    	case 2:
+	    		return VersionInfo.getInstance(data[0], data[1]);
+	    	case 3:
+	    		return VersionInfo.getInstance(data[0], data[1], data[2]);
+	    	default:
+	    		return VersionInfo.getInstance(data[0], data[1], data[2], 
+	    		                               data[3]);
+		}
+	}
+	
+	// private data members --------------------------------------------
+	
+	/**
+	 * Test instance data
+	 */
+	private static final String INSTANCE_INVALID_STRING_[] = {
+		"a",
+		"-1",
+		"-1.0",
+		"-1.0.0",
+		"-1.0.0.0",
+		"0.-1",
+		"0.0.-1",
+		"0.0.0.-1",
+		"256",
+		"256.0",
+		"256.0.0",
+		"256.0.0.0",
+		"0.256",
+		"0.0.256",
+		"0.0.0.256",
+		"1.2.3.4.5"
+	};
+	private static final String INSTANCE_VALID_STRING_[] = {
+		"255",
+		"255.255",
+		"255.255.255",
+		"255.255.255.255"
+	};
+	private static final int INSTANCE_INVALID_INT_[][] = {
+		{-1},
+		{-1, 0},
+		{-1, 0, 0},
+		{-1, 0, 0, 0},
+		{0, -1},
+		{0, 0, -1},
+		{0, 0, 0, -1},
+		{256},
+		{256, 0},
+		{256, 0, 0},
+		{256, 0, 0, 0},
+		{0, 256},
+		{0, 0, 256},
+		{0, 0, 0, 256},
+	};
+	private static final int INSTANCE_VALID_INT_[][] = {
+		{255},
+		{255, 255},
+		{255, 255, 255},
+		{255, 255, 255, 255}
+	};
+	
+	/**
+	 * Test compare data
+	 */
+	private static final String COMPARE_NOT_EQUAL_STRING_[] = {
+		"2.0.0.0", "3.0.0.0"
+	};
+	private static final int COMPARE_NOT_EQUAL_INT_[][] = {
+		{2, 0, 0, 0}, {3, 0, 0, 0}
+	};
+	private static final String COMPARE_EQUAL_STRING_[] = {
+		"2.0.0.0", "2.0.0", "2.0", "2"
+	};
+	private static final int COMPARE_EQUAL_INT_[][] = {
+		{2}, {2, 0}, {2, 0, 0}, {2, 0, 0, 0}	
+	};
+	private static final String COMPARE_LESS_[] = {
+		"0", "0.0.0.1", "0.0.1", "0.1", "1", "2", "2.1", "2.1.1", "2.1.1.1"
+	};
+	
+	/**
+	 * Test Getter data
+	 */
+	private static final String GET_STRING_[] = {
+		"0",
+		"1.1",
+		"2.1.255",
+		"3.1.255.100"
+	};
+	private static final int GET_INT_[][] = {
+		{0},
+		{1, 1},
+		{2, 1, 255},
+		{3, 1, 255, 100}
+	};
+	private static final int GET_RESULT_[] = {
+		0, 0, 0, 0,
+		1, 1, 0, 0,
+		2, 1, 255, 0,
+		3, 1, 255, 100
+	};
+	
+	/**
+	 * Test toString data
+	 */
+	private static final String TOSTRING_STRING_[] = {
+		"0",
+		"1.1",
+		"2.1.255",
+		"3.1.255.100"	
+	};
+	private static final int TOSTRING_INT_[][] = {
+		{0},
+		{1, 1},
+		{2, 1, 255},
+		{3, 1, 255, 100}
+	};
+	private static final String TOSTRING_RESULT_[] = {
+		"0.0.0.0",
+		"1.1.0.0",
+		"2.1.255.0",
+		"3.1.255.100"	
+	};
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/compression/CompressionTableGenerator.java b/src/com/ibm/icu/dev/tool/compression/CompressionTableGenerator.java
new file mode 100755
index 0000000..f4f2cca
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/compression/CompressionTableGenerator.java
@@ -0,0 +1,231 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/compression/CompressionTableGenerator.java,v $ 
+ * $Date: 2002/02/16 03:05:25 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.compression;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+
+/**
+ * Utility class to generate the tables used by the SCSU interface and
+ * the UnicodeCompressor class.
+ *
+ * @author Stephen F. Booth
+ * @version 1.0 08 Mar 99
+ */
+class CompressionTableGenerator
+{
+    // duplicate of constants in SCSU
+
+    final static int LATININDEX                  = 0xF9;
+    final static int IPAEXTENSIONINDEX           = 0xFA;
+    final static int GREEKINDEX                  = 0xFB;
+    final static int ARMENIANINDEX               = 0xFC;
+    final static int HIRAGANAINDEX               = 0xFD;
+    final static int KATAKANAINDEX               = 0xFE;
+    final static int HALFWIDTHKATAKANAINDEX      = 0xFF;
+
+    final static int SDEFINEX                    = 0x0B;
+    final static int SRESERVED                   = 0x0C;  // reserved value
+    final static int SQUOTEU                     = 0x0E;
+    final static int SCHANGEU                    = 0x0F;
+
+    final static int SQUOTE0                     = 0x01;
+    final static int SQUOTE1                     = 0x02;
+    final static int SQUOTE2                     = 0x03;
+    final static int SQUOTE3                     = 0x04;
+    final static int SQUOTE4                     = 0x05;
+    final static int SQUOTE5                     = 0x06;
+    final static int SQUOTE6                     = 0x07;
+    final static int SQUOTE7                     = 0x08;
+
+    final static int SCHANGE0                    = 0x10;
+    final static int SCHANGE1                    = 0x11;
+    final static int SCHANGE2                    = 0x12;
+    final static int SCHANGE3                    = 0x13;
+    final static int SCHANGE4                    = 0x14;
+    final static int SCHANGE5                    = 0x15;
+    final static int SCHANGE6                    = 0x16;
+    final static int SCHANGE7                    = 0x17;
+
+    final static int SDEFINE0                    = 0x18;
+    final static int SDEFINE1                    = 0x19;
+    final static int SDEFINE2                    = 0x1A;
+    final static int SDEFINE3                    = 0x1B;
+    final static int SDEFINE4                    = 0x1C;
+    final static int SDEFINE5                    = 0x1D;
+    final static int SDEFINE6                    = 0x1E;
+    final static int SDEFINE7                    = 0x1F;
+
+    //==========================
+    // Unicode mode tags
+    //==========================
+    final static int UCHANGE0                    = 0xE0;
+    final static int UCHANGE1                    = 0xE1;
+    final static int UCHANGE2                    = 0xE2;
+    final static int UCHANGE3                    = 0xE3;
+    final static int UCHANGE4                    = 0xE4;
+    final static int UCHANGE5                    = 0xE5;
+    final static int UCHANGE6                    = 0xE6;
+    final static int UCHANGE7                    = 0xE7;
+
+    final static int UDEFINE0                    = 0xE8;
+    final static int UDEFINE1                    = 0xE9;
+    final static int UDEFINE2                    = 0xEA;
+    final static int UDEFINE3                    = 0xEB;
+    final static int UDEFINE4                    = 0xEC;
+    final static int UDEFINE5                    = 0xED;
+    final static int UDEFINE6                    = 0xEE;
+    final static int UDEFINE7                    = 0xEF;
+
+    final static int UQUOTEU                     = 0xF0;
+    final static int UDEFINEX                    = 0xF1;
+    final static int URESERVED                   = 0xF2;  // reserved value
+
+    final static int BLOCKSIZE = 0xFF;
+    
+    /**
+     * Generate the table used as sOffsetTable in SCSU.
+     * This table contains preformed indices so we can do array lookups 
+     * instead of calculations for speed during decompression.
+     */
+    static void printOffsetTable()
+    {
+        int     i           = 0;
+	int []	offsetTable = new int [ BLOCKSIZE + 1 ];
+
+        // 0x00 is reserved
+
+        // half blocks from U+0080 to U+3380
+        for( i = 0x01; i < 0x68; i++ )
+            offsetTable[i] = i * 0x80;
+	
+        // half blocks from U+E000 to U+FF80
+        for( i = 0x68; i < 0xA8; i++ )
+            offsetTable[i] = (i * 0x80) + 0xAC00;
+	
+        // 0xA8..0xF8 is reserved
+ 
+        offsetTable[ LATININDEX ] = 0x00C0;
+        offsetTable[ IPAEXTENSIONINDEX ] = 0x0250;
+        offsetTable[ GREEKINDEX ] = 0x0370;
+        offsetTable[ ARMENIANINDEX ] = 0x0530;
+        offsetTable[ HIRAGANAINDEX ] = 0x3040;
+        offsetTable[ KATAKANAINDEX ] = 0x30A0;
+        offsetTable[ HALFWIDTHKATAKANAINDEX ] = 0xFF60;
+
+        // dump the generated table
+	System.out.println("static int [] sOffsetTable = {");
+        for(i = 0; i < offsetTable.length - 1; i++)
+            System.out.print("0x" + Integer.toHexString(offsetTable[i])
+			     + ", ");
+        for(i = offsetTable.length - 1; i < offsetTable.length; i++)
+            System.out.print("0x" + Integer.toHexString(offsetTable[i]));
+        System.out.println();
+        System.out.println("};");
+    }
+    
+    /**
+     * Generate the table used as sSingleTagTable in UnicodeCompressor.
+     * This table contains boolean values indicating if a byte is a
+     * single-byte mode tag.
+     */
+    static void printSingleTagTable()
+    {
+        int        i              = 0;
+	boolean [] singleTagTable = new boolean  [ BLOCKSIZE + 1 ];
+
+        for( i = 0x00; i <= BLOCKSIZE; i++ ) {
+            switch( i ) {
+		
+	    case SQUOTEU:  case SCHANGEU: 
+	    case SDEFINEX: case SRESERVED:
+	    case SQUOTE0:  case SQUOTE1:  
+	    case SQUOTE2:  case SQUOTE3:
+	    case SQUOTE4:  case SQUOTE5:  
+	    case SQUOTE6:  case SQUOTE7:
+	    case SCHANGE0: case SCHANGE1: 
+	    case SCHANGE2: case SCHANGE3:
+	    case SCHANGE4: case SCHANGE5: 
+	    case SCHANGE6: case SCHANGE7:
+	    case SDEFINE0: case SDEFINE1: 
+	    case SDEFINE2: case SDEFINE3:
+	    case SDEFINE4: case SDEFINE5: 
+	    case SDEFINE6: case SDEFINE7:
+		singleTagTable[i] = true;
+                break;
+		
+	    default:
+		singleTagTable[i] = false;
+                break;
+            }
+        }
+	
+        // dump the generated table
+        System.out.println("private static boolean [] sSingleTagTable = {");
+        for(i = 0; i < singleTagTable.length - 1; i++)
+            System.out.print(singleTagTable[i] + ", ");
+        for(i = singleTagTable.length - 1; i < singleTagTable.length; i++)
+            System.out.print(singleTagTable[i]);
+        System.out.println();
+        System.out.println("};");
+    }
+    
+    
+    /**
+     * Generate the table used as sUnicodeTagTable in 
+     * This table contains boolean values indicating if a byte is a
+     * unicode mode tag.
+     */
+    static void printUnicodeTagTable()
+    {
+        int        i               = 0;
+	boolean [] unicodeTagTable = new boolean  [ BLOCKSIZE + 1 ];
+
+        for( i = 0x00; i <= BLOCKSIZE; i++ ) {
+            switch( i ) {
+	    case UQUOTEU:  case UDEFINEX: 
+	    case URESERVED:
+	    case UCHANGE0: case UCHANGE1: 
+	    case UCHANGE2: case UCHANGE3:
+	    case UCHANGE4: case UCHANGE5: 
+	    case UCHANGE6: case UCHANGE7:
+	    case UDEFINE0: case UDEFINE1: 
+	    case UDEFINE2: case UDEFINE3:
+	    case UDEFINE4: case UDEFINE5: 
+	    case UDEFINE6: case UDEFINE7:
+		unicodeTagTable[i] = true;
+                break;
+		
+	    default:
+		unicodeTagTable[i] = false;
+                break;
+            }
+        }
+	
+        // dump the generated table
+        System.out.println("private static boolean [] sUnicodeTagTable = {");
+        for(i = 0; i < unicodeTagTable.length - 1; i++)
+            System.out.print(unicodeTagTable[i] + ", ");
+        for(i = unicodeTagTable.length - 1; i < unicodeTagTable.length; i++)
+            System.out.print(unicodeTagTable[i]);
+        System.out.println();
+        System.out.println("};");
+    }
+    
+    public static void main(String[] argv)
+    {
+        printOffsetTable();
+        printSingleTagTable();
+        printUnicodeTagTable();
+    }
+};
diff --git a/src/com/ibm/icu/dev/tool/compression/package.html b/src/com/ibm/icu/dev/tool/compression/package.html
new file mode 100755
index 0000000..99f96e3
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/compression/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/compression/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 21:35:52 $
+-->
+</head>
+<body bgcolor="white">
+Tool used to rebuild tables used by the Unicode compression classes.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/ArrayEnumeration.java b/src/com/ibm/icu/dev/tool/localeconverter/ArrayEnumeration.java
new file mode 100755
index 0000000..f5c17e4
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/ArrayEnumeration.java
@@ -0,0 +1,93 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/ArrayEnumeration.java,v $ 
+ * $Date: 2002/02/16 03:05:26 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.util.*;
+
+public final class ArrayEnumeration implements Enumeration {
+
+    public ArrayEnumeration(Object[] array, int start, int limit) {
+        this.array = array;
+        position = start;
+        this.limit = limit;
+    }
+
+    public ArrayEnumeration(byte[] array, int start, int limit) {
+        this.array = new Object[array.length];
+        for (int i = 0; i < array.length; ++i) {
+            this.array[i] = new Byte(array[i]);
+        }
+        position = start;
+        this.limit = limit;
+    }
+
+    public ArrayEnumeration(char[] array, int start, int limit) {
+        this.array = new Object[array.length];
+        for (int i = 0; i < array.length; ++i) {
+            this.array[i] = new Character(array[i]);
+        }
+        position = start;
+        this.limit = limit;
+    }
+
+    public ArrayEnumeration(short[] array, int start, int limit) {
+        this.array = new Object[array.length];
+        for (int i = 0; i < array.length; ++i) {
+            this.array[i] = new Short(array[i]);
+        }
+        position = start;
+        this.limit = limit;
+    }
+
+    public ArrayEnumeration(int[] array, int start, int limit) {
+        this.array = new Object[array.length];
+        for (int i = 0; i < array.length; ++i) {
+            this.array[i] = new Integer(array[i]);
+        }
+        position = start;
+        this.limit = limit;
+    }
+
+    public ArrayEnumeration(float[] array, int start, int limit) {
+        this.array = new Object[array.length];
+        for (int i = 0; i < array.length; ++i) {
+            this.array[i] = new Float(array[i]);
+        }
+        position = start;
+        this.limit = limit;
+    }
+
+    public ArrayEnumeration(double[] array, int start, int limit) {
+        this.array = new Object[array.length];
+        for (int i = 0; i < array.length; ++i) {
+            this.array[i] = new Double(array[i]);
+        }
+        position = start;
+        this.limit = limit;
+    }
+
+    public boolean hasMoreElements() {
+         return position < limit;
+    }
+
+    public Object nextElement() {
+        if (position < limit)
+            return array[position++];
+        else
+            throw new java.util.NoSuchElementException();
+    }
+    // privates
+    private Object[] array;
+    private int position = 0;
+    private int limit = 0;
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/CollationItem.java b/src/com/ibm/icu/dev/tool/localeconverter/CollationItem.java
new file mode 100755
index 0000000..df15471
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/CollationItem.java
@@ -0,0 +1,95 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/CollationItem.java,v $ 
+ * $Date: 2002/02/16 03:05:26 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ * A CollationItem represents a single entry in a collation sequence.
+ */
+public class CollationItem {
+    private static final char[] OP_CHARS = {'=', '<', ';', ',', '&' };
+    private static final char[] SPECIAL_CHARS = { '&', '@' , '=', '<', ';', ',' };
+    public static final int NONE = 0;
+    public static final int PRIMARY = 1;
+    public static final int SECONDARY = 2;
+    public static final int TERTIARY = 3;
+    private static final int FIRST = 4;
+    public int op;
+    public String item;
+    public String expansion;
+    public String comment;
+    
+    public static final CollationItem FORWARD = new CollationItem(NONE, "") {
+        public String toString() { return ""; }
+    };
+    public static final CollationItem BACKWARD = new CollationItem(NONE, "") {
+        public String toString() { return "@"; }
+    };
+    
+    public CollationItem(String item) {
+        this.op = FIRST;
+        this.item = cleanString(item);
+        this.expansion = "";
+    }
+    
+    public CollationItem(int op, String item) {
+        this(op, item, null);
+    }
+    
+    public CollationItem(int op, String item, String expansion) {
+        this.op = Math.abs(op);
+        if (this.op > TERTIARY) this.op = TERTIARY;
+        this.item = cleanString(item);
+        this.expansion = cleanString(expansion);
+    }
+    
+    public void setComment(String comment) {
+        this.comment = comment;
+    }
+    
+    public String toString() {
+        String itemString = item;
+        if (expansion.length() == 0) {
+            return ""+OP_CHARS[op]+item;
+        } else {
+            return "&"+expansion+OP_CHARS[op]+item;
+        }
+    }
+    
+    private String cleanString(String source) {
+        if (source == null) return "";
+        String result = source;
+        for (int i = 0; i < result.length(); i++) {
+            final char c = result.charAt(i);
+            if ((c == '@') || (c == '\t') || (c == '\n')
+                    || (c == '\f') || (c =='\r') || (c == '\013')
+                    || ((c <= '\u002F') && (c >= '\u0020'))
+                    || ((c <= '\u003F') && (c >= '\u003A'))
+                    || ((c <= '\u0060') && (c >= '\u005B'))
+                    || ((c <= '\u007E') && (c >= '\u007B'))) {
+                if (i < result.length()-1) {
+                    result = result.substring(0, i)
+                            + "'" + c +"'"
+                            + result.substring(i+1);
+                } else {
+                    result = result.substring(0, i)
+                            + "'" + c +"'";
+                }
+                i += 2; //skip the two characters we inserted
+            }
+        }
+        return result;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/Comparable.java b/src/com/ibm/icu/dev/tool/localeconverter/Comparable.java
new file mode 100755
index 0000000..f1badca
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/Comparable.java
@@ -0,0 +1,20 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/Comparable.java,v $ 
+ * $Date: 2002/02/16 03:05:26 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+public interface Comparable {
+    /**
+        returns 0 if objects are equal, -1 if a is less than b, 1 otherwise.
+    */
+    public int compareTo(Object b);
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/Comparator.java b/src/com/ibm/icu/dev/tool/localeconverter/Comparator.java
new file mode 100755
index 0000000..a83a942
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/Comparator.java
@@ -0,0 +1,20 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/Comparator.java,v $ 
+ * $Date: 2002/02/16 03:05:26 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+public interface Comparator {
+    /**
+        returns 0 if objects are equal, -1 if a is less than b, 1 otherwise.
+    */
+    public int compare(Object a, Object b);
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/ComplexTransition.java b/src/com/ibm/icu/dev/tool/localeconverter/ComplexTransition.java
new file mode 100755
index 0000000..61304db
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/ComplexTransition.java
@@ -0,0 +1,73 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/ComplexTransition.java,v $ 
+ * $Date: 2002/02/16 03:05:26 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ * A ComplexTransition is conceptually a single transition that
+ * consumes multiple input characters.
+ */
+public abstract class ComplexTransition implements Lex.Transition {
+        //the value that is returned by subclasses indicating that
+        //the transition was successfull.  This value is then
+        //discarded and the value passed to the constructor
+        //is then returned to the caller.
+    protected static final int SUCCESS = Lex.END_OF_FILE - 1;
+    private int success;    //value to return if successfull
+    private Lex parser;     //the parser used for this transition
+        
+    public ComplexTransition(int success) {
+        this.success = success;
+        this.parser = new Lex(null);
+        //this.parser.debug(true);
+    }
+    
+    public int doAction(int c, PushbackReader input, StringBuffer buffer) throws IOException {
+        input.unread(c);
+        parser.setStates(getStates());
+        parser.setInput(input);
+        try {
+            int s = parser.nextToken();
+            handleSuccess(parser, buffer);
+            return success;
+        } catch (IOException e) {
+            handleFailure(parser, buffer);
+            throw e;
+        }
+    }
+
+        //called after a successful parse
+    protected void handleSuccess(Lex parser, StringBuffer output) throws IOException {
+        parser.appendDataTo(output);
+    }
+    
+        //called after a failed parse
+    protected void handleFailure(Lex parser, StringBuffer output) {
+    }
+    
+        //subclasses should return the states to use to parse this
+        //transition
+    protected abstract Lex.Transition[][] getStates();
+
+    public ComplexTransition debug(boolean debug) {
+        parser.debug(debug);
+        return this;
+    }
+    
+    public ComplexTransition debug(boolean debug, String tag) {
+        parser.debug(debug, tag);
+        return this;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/ConvertAllJavaLocales.java b/src/com/ibm/icu/dev/tool/localeconverter/ConvertAllJavaLocales.java
new file mode 100755
index 0000000..88fec5c
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/ConvertAllJavaLocales.java
@@ -0,0 +1,88 @@
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+/**
+
+The ConvertJavaLocale application converts java locales to 
+Java and ICU Locale files.  It's usage is as follows
+
+    ConvertJavaLocale [-11] [-12] [-icu] locale...
+
+Usage
+
+-11
+    If this option is specified, data is output in 
+    Java 1.1.x locale format.
+    
+-12
+    If this option is specified, data is output in
+    Java 1.2.x locale format.  If an output format
+    is not specified, -12 is the default.
+    
+-icu
+    If this option is specified, data is output in
+    ICU locale format.
+
+locale
+    The locale to convert
+
+
+*/
+import java.lang.reflect.*;
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/ConvertAllJavaLocales.java,v $ 
+ * $Date: 2002/02/16 03:05:27 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+public class ConvertAllJavaLocales {
+    public static void main(String args[]) {
+        try {
+            new ConvertAllJavaLocales(args);
+        } catch (Throwable t) {
+            System.err.println("Unknown error: "+t);
+        }
+    }
+    
+    public ConvertAllJavaLocales(String argsIn[]) {
+        try {
+            String packageName = argsIn[0];
+            System.out.println("This is the packagename : "+packageName);
+            String classname = packageName+".Locale";
+            //classname.concat();
+            System.out.println("This is the classname : "+classname);
+          /*  Class cl = Class.forName(classname);
+            Class[] paramList=null;
+            Method gvl = cl.getMethod("getAvailableLocales", paramList);
+            Object[] params = new Object[]{""};
+            gvl.invoke(null,params);*/
+            final Locale[] locales = java.util.Locale.getAvailableLocales();//(Locale[])gvl.invoke(null,params);;
+       
+            for (int i = 0; i < locales.length; i++) {
+                final String localeName = locales[i].toString();
+                final String[] args = {"-package",packageName,"-icu", localeName};
+                
+                System.out.println("Converting "+localeName);
+                
+                final FileOutputStream outFile = new FileOutputStream("ICULocale_"+localeName);
+                final PrintStream out = new PrintStream(outFile, true);
+                
+                new ConvertJavaLocale(args, out);
+                
+                out.close();
+            }
+        } catch (IOException e) {
+            System.err.println("Unexpected IO error");
+        }catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/ConvertJavaLocale.java b/src/com/ibm/icu/dev/tool/localeconverter/ConvertJavaLocale.java
new file mode 100755
index 0000000..ddd437d
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/ConvertJavaLocale.java
@@ -0,0 +1,196 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/ConvertJavaLocale.java,v $ 
+ * $Date: 2002/02/16 03:05:27 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+/**
+
+The ConvertJavaLocale application converts java locales to 
+Java and ICU Locale files.  It's usage is as follows
+
+    ConvertJavaLocale [-11] [-12] [-icu] locale...
+
+Usage
+
+-11
+    If this option is specified, data is output in 
+    Java 1.1.x locale format.
+    
+-12
+    If this option is specified, data is output in
+    Java 1.2.x locale format.  If an output format
+    is not specified, -12 is the default.
+    
+-icu
+    If this option is specified, data is output in
+    ICU locale format.
+
+locale
+    The locale to convert
+
+
+*/
+
+public class ConvertJavaLocale {
+    private static final byte OPT_11 = (byte)0x01;
+    private static final byte OPT_12 = (byte)0x02;
+    private static final byte OPT_ICU = (byte)0x04;
+    private static final byte OPT_PACKAGE = (byte)0x08;
+    private static final byte OPT_UNKNOWN = (byte)0x80;
+    private static final String USER_OPTIONS[] = {
+        "-11", 
+        "-12", 
+        "-icu",
+        "-package"
+    };
+    
+    private static final String[] tags = {
+        "LocaleString",
+        "LocaleID",
+        "ShortLanguage",
+        "ShortCountry",
+        "Languages",
+        "Countries",
+        "MonthNames",
+        "MonthAbbreviations",
+        "DayNames",
+        "DayAbbreviations",
+        "AmPmMarkers",
+        "Eras",
+        "NumberPatterns",
+        "NumberElements",
+        "CurrencyElements",
+        "DateTimePatterns",
+        "DateTimeElements",   
+        "CollationElements",
+        "zoneStrings",
+        "localPatternChars",
+    };
+
+
+
+    public static void main(String args[]) {
+        try {
+            new ConvertJavaLocale(args, System.out);
+        } catch (Throwable t) {
+            System.err.println("Unknown error: "+t);
+        }
+    }
+    
+    public ConvertJavaLocale(String args[], PrintStream out) {
+        process(args, out);
+    }
+    
+    public void process(String args[], PrintStream out) {
+        short options = identifyOptions(args);
+        if ((args.length < 1) || ((options & OPT_UNKNOWN) != 0)) {
+            printUsage();
+        } else {
+            String localeName = null;
+            String packagename = null;
+            for (int i = 0; i < args.length; i++) {
+                final String thisArg = args[i];
+                if(args[i].equalsIgnoreCase("-package")){
+                   i++;
+                   packagename = args[i];
+                }else if(args[i].equalsIgnoreCase("-icu")){
+                }else if (!args[i].startsWith("-")) {
+                    localeName = args[i];
+                }
+            }
+            final Hashtable data = new Hashtable();
+            final String localeElements = packagename+".LocaleElements" +
+                    (String)((localeName != null) ? "_"+localeName : "");
+            final String DateFormatZoneData = packagename+".DateFormatZoneData" +
+                    (String)((localeName != null) ? "_"+localeName : "");
+            addLocaleData(localeElements, data);
+            addLocaleData(DateFormatZoneData, data);
+            final Locale locale = localeFromString(localeName);
+            if ((options & OPT_11) != 0) {
+                new Java1LocaleWriter(out, System.err).write(locale, data);
+            }
+            if ((options & OPT_12) != 0) {
+                new JavaLocaleWriter(out, System.err).write(locale, data);
+            }
+            if ((options & OPT_ICU) != 0) {
+                new ICULocaleWriter(out, System.err).write(locale, data);
+            }
+        }
+    }
+
+    private void addLocaleData(final String bundleClassName, final Hashtable data) {
+        try {
+            final Class bundleClass = Class.forName(bundleClassName);
+            final ResourceBundle bundle = (ResourceBundle)bundleClass.newInstance();
+            for (int i = 0; i < tags.length; i++) {
+                try {
+                    final Object resource = bundle.getObject(tags[i]);
+                    data.put(tags[i], resource);
+                } catch (MissingResourceException e) {
+                }               
+            }
+        } catch (ClassNotFoundException e) {
+            System.err.println("Could not find bundle class for bundle: "+bundleClassName);
+        } catch (InstantiationException e) {
+            System.err.println("Could not create bundle instance for bundle: "+bundleClassName);
+        } catch (IllegalAccessException e) {
+            System.err.println("Could not create bundle instance for bundle: "+bundleClassName);
+        }
+    }
+    
+    private void printUsage() {
+        System.err.println("Usage: ConvertJavaLocale [-11] [-12] [-icu] localeName");
+    }
+    
+    private short identifyOptions(String[] options) {
+        short result = 0;
+        for (int j = 0; j < options.length; j++) {
+            String option = options[j];
+            if (option.startsWith("-")) {
+                boolean optionRecognized = false;
+                for (short i = 0; i < USER_OPTIONS.length; i++) {
+                    if (USER_OPTIONS[i].equals(option)) {
+                        result |= (short)(1 << i);
+                        optionRecognized = true;
+                        break;
+                    }
+                }
+                if (!optionRecognized) {
+                    result |= OPT_UNKNOWN;
+                }
+            }
+        }
+        return result;
+    }
+    
+    private Locale localeFromString(final String localeName) {
+        if (localeName == null) return new Locale("", "", "");
+        String language = localeName;
+        String country = "";
+        String variant = "";
+        
+        int ndx = language.indexOf('_');
+        if (ndx >= 0) {
+            country = language.substring(ndx+1);
+            language = language.substring(0, ndx);
+        }
+        ndx = country.indexOf('_');
+        if (ndx >= 0) {
+            variant = country.substring(ndx+1);
+            country = country.substring(0, ndx);
+        }
+        return new Locale(language, country, variant);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/ConvertLocaleTest.java b/src/com/ibm/icu/dev/tool/localeconverter/ConvertLocaleTest.java
new file mode 100755
index 0000000..732cfbe
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/ConvertLocaleTest.java
@@ -0,0 +1,98 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/ConvertLocaleTest.java,v $ 
+ * $Date: 2002/02/16 03:05:27 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+ 
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+/*
+
+ConvertPOSIXLocale [-11] [-12] [-icu] [-icu2] localeDataFile [charMapFile ...]
+
+*/
+
+public class ConvertLocaleTest {
+    public static void main(String args[]) {
+/*
+        ConvertPOSIXLocale.main( new String[] {
+            "-12",
+            "C:\\projects\\com\\taligent\\localeconverter\\collationTest.txt"
+        } );    
+ 
+        ConvertPOSIXLocale.main( new String[] {
+            "-icu",
+            "C:\\projects\\com\\taligent\\localeconverter\\collationTest2.txt",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\ISO-8859-1",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\mnemonic.ds",
+        } );
+
+        ConvertPOSIXLocale.main( new String[] {
+            "-icu", "-LC_MESSAGES",
+            "C:\\projects\\com\\taligent\\localeconverter\\Locales\\Vivnx43.ibm",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\ibm1129-2-UniCode.chm",
+        } );
+/*      ConvertPOSIXLocale.main( new String[] {
+            "-12",
+            "C:\\projects\\com\\taligent\\localeconverter\\Locales\\POSIXLocales\\en_US",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\ISO-8859-1",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\mnemonic.ds",
+        });
+/*      ConvertPOSIXLocale.main( new String[] {
+            "-12",
+            "C:\\projects\\com\\taligent\\localeconverter\\Locales\\POSIXLocales\\fi_FI",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\ISO-8859-1",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\mnemonic.ds",
+        });
+
+        ConvertPOSIXLocale.main( new String[] {
+            "-12", "en_BE", 
+            "C:\\projects\\com\\taligent\\localeconverter\\Locales\\ENBEWIN.IBM",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\Ibm1252.chm",
+        });
+
+        ConvertPOSIXLocale.main( new String[] {
+            "-12", "vi_VN",
+            "C:\\projects\\com\\taligent\\localeconverter\\Locales\\Vivnx43.ibm",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\ibm1129-2-UniCode.chm",
+        });
+
+        ConvertPOSIXLocale.main( new String[] {
+            "-icu", "fr_FR", 
+            "C:\\projects\\com\\taligent\\localeconverter\\Locales\\POSIXLocales\\fr_FR",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\ISO-8859-1",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\mnemonic.ds",
+        });
+
+        ConvertPOSIXLocale.main( new String[] {
+            "-icu", "fo_FO", 
+            "C:\\projects\\com\\taligent\\localeconverter\\Locales\\POSIXLocales\\fo_FO",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\ISO-8859-1",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\mnemonic.ds",
+        });
+*/
+        ConvertPOSIXLocale.main( new String[] {
+            "-icu", "fr_LU", 
+            "C:\\projects\\com\\taligent\\localeconverter\\Locales\\POSIXLocales\\fr_LU",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\ISO-8859-1",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\mnemonic.ds",
+        });
+/*
+        ConvertPOSIXLocale.main( new String[] {
+            "-icu", "de_LU", 
+            "C:\\projects\\com\\taligent\\localeconverter\\Locales\\POSIXLocales\\de_LU",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\ISO-8859-1",
+            "C:\\projects\\com\\taligent\\localeconverter\\CharMaps\\mnemonic.ds",
+        });
+*/
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/ConvertPOSIXLocale.java b/src/com/ibm/icu/dev/tool/localeconverter/ConvertPOSIXLocale.java
new file mode 100755
index 0000000..ea69c1b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/ConvertPOSIXLocale.java
@@ -0,0 +1,352 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/ConvertPOSIXLocale.java,v $ 
+ * $Date: 2002/06/20 01:17:11 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+ 
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+/**
+
+The ConvertPOSIXLocale application converts POSIX locale files to 
+Java and ICU Locale files.  It's usage is as follows
+
+    ConvertPOSIXLocale 
+        [-LC_CTYPE]
+        [-LC_TIME]
+        [-LC_NUMERIC] 
+        [-LC_MONETARY] 
+        [-LC_MESSAGES] 
+        [-11] 
+        [-12] 
+        [-icu]
+        [-icu2]
+        localeName
+        localeDataFile 
+        [charMapFile ...]
+        
+The application is invoked with options specifying the format(s) of
+the locale file(s) to generate as well as the POSIX locale file and
+character mapping files.
+
+Usage
+
+-LC_CTYPE
+    If the -LC_CTYPE option is specified, the
+    following items are added to the locale if they
+    are present in the source: upper, lower, alpha, digit, 
+    space, cntrl, punct, graph, print, xdigit, blank, 
+    toupper, tolower.
+    
+<CODE>-LC_TIME
+    If the -LC_TIME option is specified, the following
+    items will be included if they are present in the POSIX source:
+    abday, day, abmon, mon, d_t_fmt, d_ftm, t_fmt, am_pm,
+    t_fmt_ampm, era, era_year, era_d_fmt, alt_digits.
+    
+-LC_NUMERIC
+    If the -LC_NUMERIC option is specified, the following
+    items will be included if they are present in the source:
+    decimal_point, thousands_sep, grouping
+
+-LC_MONETARY
+    If the -LC_MONETARY option is specified, the following
+    items will be included if they are present in the source:
+    int_curr_symbol, currency_symbol, mon_decimal_point,
+    mon_thousands_sep, mon_grouping, positive_sign, 
+    negative_sign, int_frac_digits, frac_digits, p_cs_precedes,
+    p_sep_by_space, n_cs_precedes, n_sep_by_space, p_sign_posn.
+
+-LC_MESSAGES
+    If the -LC_MESSAGES option is specified, the
+    following items are added to the locale if they
+    are present in the source: yesexpr, noexpr
+
+-11
+    If this option is specified, data is output in 
+    Java 1.1.x locale format.
+    
+-12
+    If this option is specified, data is output in
+    Java 1.2.x locale format.  If an output format
+    is not specified, -12 is the default.
+    
+-icu
+    If this option is specified, data is output in
+    ICU locale format.
+
+localeName
+    The name of the locale in the localeDataFile.  Ex.  en_US.
+
+localeDataFile
+    The localeDataFile path is required and specifies the path 
+    to the locale data file.  If a "copy" directive is encountered 
+    while processing the localeDataFile, ConvertPOSIXLocale will look
+    in the same directory as the localeDataFile for additional
+    POSIX locale data files.  Files must be in the POSIX format
+    specified in ISO/IEC 9945- with exceptions noted below.  Exactly
+    one localeDataFile must be specified.
+    
+charMapFile
+    Zero or more character mapping files may be specified.  charMapFiles are used
+    to map symbols in the localeDataFile to Unicode values.  They are processed
+    as follows.  ConvertPOSIXLocale searchs for a line containing only the
+    word "CHARMAP" and reads symbol mappings until it reaches a line
+    containing only the words "END CHARMAP".  Symbol mappings have
+    the form "<SYMBOL> <Uhhhh>" where "<SYMBOL>" is any symbol valid
+    in a localeDataFile and "hhhh" is four hexidecimal digits representing
+    the Unicode value for that symbol.  Surrogate pairs are not supported
+    in charMapFiles. An example charMapFile might contain the following:
+
+        CHARMAP
+        <START_OF_TEXT>       <U0002>
+        <E>                   <U0045>
+        <q>                   <U0071>
+        END CHARMAP
+
+    specifying that the symbol <START_OF_TEXT> should be replaced by 
+    the Unicode value of 0x0002 wherever it occurs.
+    
+    When multiple charMapFiles are specified, mappings in files listed 
+    later take precedence over earlier ones.
+
+
+Conversion to ICU and Java:
+
+CollationElements
+    Converted from the LC_COLLATE section.  The "..." directive is ignored.
+    The "replace-after" directive is ignored.
+
+CurrencyElements
+    element 0 is set to currency_symbol
+    element 1 is set to int_curr_symbol
+    element 2 is set to mon_decimal_point
+    All other elements default.
+    
+NumberElements
+    element 0 is set to decimal_point
+    element 1 is set to thousands_sep
+
+MonthNames is set to mon
+
+MonthAbbreviations is set to abmon
+
+DayNames is set to day
+
+DayAbbreviations is set to abday
+
+AmPmMarkers is set to am_pm
+
+DateTimePatterns
+    elements 0 through 3 are set to t_fmt_ampm with the patterns converted
+    elements 4 through 7 are set to d_fmt with the patterns converted
+
+
+Adition POSIX data may be included in the Locale as follows:
+
+LC_TYPE 
+    This section is ignored unless the -LC_CTYPE option is
+    specified.  If the -LC_CTYPE option is specified, the
+    following items are added to the locale if they
+    are present in the source: upper, lower, alpha, digit, 
+    space, cntrl, punct, graph, print, xdigit, blank, 
+    toupper, tolower.
+
+LC_MESSAGES
+    
+LC_MONETARY
+    
+LC_NUMERIC
+
+LC_TIME
+    If the -LC_TIME option is specified, the following
+    items will be included if they are present in the source:
+    abday, day, abmon, mon, d_t_fmt, d_ftm, t_fmt, am_pm,
+    t_fmt_ampm, era, era_year, era_d_fmt, alt_digits.
+
+LC_COLLATE
+    Converted to CollationElements in the resource file.
+    
+    
+*/
+
+public class ConvertPOSIXLocale {
+    private static final short OPT_LC_CTYPE = 0x001;
+    private static final short OPT_LC_TIME = 0x002;
+    private static final short OPT_LC_NUMERIC = 0x004;
+    private static final short OPT_LC_MONETARY = 0x008;
+    private static final short OPT_LC_MESSAGES = 0x010;
+    private static final short OPT_11 = 0x020;
+    private static final short OPT_12 = 0x040;
+    private static final short OPT_ICU = 0x080;
+    private static final short OPT_ICU2 = 0x100;
+    private static final short OPT_RAW = 0x200;
+    private static final short OPT_UNKNOWN = 0x4000;
+    private static final String USER_OPTIONS[] = {
+        "-LC_CTYPE", 
+        "-LC_TIME", 
+        "-LC_NUMERIC", 
+        "-LC_MONETARY",
+        "-LC_MESSAGES",
+        "-11", 
+        "-12", 
+        "-icu", 
+        "-icu2", 
+        "-RAW",
+        "-enc",
+    };
+    private static final short OPT_CONVERT = (short)(OPT_LC_CTYPE | OPT_LC_TIME 
+            | OPT_LC_NUMERIC | OPT_LC_MONETARY | OPT_LC_MESSAGES);
+    
+    private Hashtable data;
+
+    public static void main(String args[]) {
+        try {
+            new ConvertPOSIXLocale(args);
+        } catch (Throwable t) {
+            t.printStackTrace();
+            System.err.println("Unknown error: "+t);
+        }
+    }
+    
+    public ConvertPOSIXLocale(String args[]) {
+        process(args);
+            //{{INIT_CONTROLS
+		//}}
+    }
+    
+    public void process(String args[]) {
+        short options = identifyOptions(args);
+        String enc=null;
+        if ((args.length < 2) || ((options & OPT_UNKNOWN) != 0)) {
+            printUsage();
+        } else {
+            Vector mapFiles = new Vector();
+            Locale locale = null;
+            String fileName = null;
+            for (int i = 0; i < args.length; i++) {
+                final String thisArg = args[i];
+                if (thisArg.startsWith("-")) {
+                    if(thisArg.startsWith("-enc")){
+                        enc = args[++i];
+                    }
+                } else if (locale == null) {
+                    locale = localeFromString(thisArg);
+                } else if (fileName == null) {
+                    fileName = thisArg;
+                } else {
+                    mapFiles.addElement(thisArg);
+                }
+                
+            }
+            if(enc==null){
+                enc="Default";
+            }
+            if ((fileName == null) || (locale == null) || (options == 0)) {
+                printUsage();
+            } else {
+                PosixCharMap map = new PosixCharMap();
+                Enumeration enum = mapFiles.elements();
+                while (enum.hasMoreElements()) {
+                    String mapFile = (String)enum.nextElement();
+                    System.err.println("Locale: "+locale);
+                    System.err.println("Loading character map file: "+mapFile);
+                    try {
+                        map.load(new File(mapFile),enc);
+                    } catch (IOException e) {
+                        System.err.println("Error loading map file: "+mapFile+"  "+e);
+                        System.err.println("File skipped");
+                    }
+                }
+                SymbolTransition.setCharMap(map);
+                File dataFile = new File(fileName);
+                System.err.println("Locale directory: "+dataFile.getParent());
+                POSIXLocaleReader reader = new POSIXLocaleReader(dataFile.getParent(), locale);
+                System.err.println("Parsing file: "+dataFile.getName());
+                try {
+                    data = reader.parse(dataFile.getName(), (byte)(options & OPT_CONVERT));
+                    System.err.println("Converting....");
+                    if ((options & OPT_11) != 0) {
+                        new Java1LocaleWriter(System.out, System.err).write(locale, data);
+                    }
+                    if ((options & OPT_12) != 0) {
+                        new JavaLocaleWriter(System.out, System.err).write(locale, data);
+                    }
+                    if ((options & OPT_ICU) != 0) {
+                        new ICULocaleWriter(System.out, System.err).write(locale, data);
+                    }
+                    if ((options & OPT_ICU2) != 0) {
+                        new ICU2LocaleWriter(System.out, System.err).write(locale, data);
+                    }
+                    if ((options & OPT_RAW) != 0) {
+                        new ICULocaleWriter(System.out, System.err).write(locale, data);
+                    }
+                } catch (IOException e) {
+                    System.err.println(e);
+                }
+            }
+        }
+    }
+
+    private void printUsage() {
+        System.err.println("Usage: ConvertPOSIXLocale [-LC_CTYPE] [-LC_TIME]"+
+            " [-LC_NUMERIC] [-LC_MONETARY] [-LC_MESSAGES] [-11] [-12] [-icu]"+ 
+            " localeName localeDataFile [charMapFile ...]");
+    }
+    
+    private short identifyOptions(String[] options) {
+        short result = 0;
+        for (int j = 0; j < options.length; j++) {
+            String option = options[j];
+            if (option.startsWith("-")) {
+                boolean optionRecognized = false;
+                for (short i = 0; i < USER_OPTIONS.length; i++) {
+                    if (USER_OPTIONS[i].equals(option)) {
+                        result |= (short)(1 << i);
+                        optionRecognized = true;
+                        break;
+                    }
+                }
+                if (!optionRecognized) {
+                    result |= OPT_UNKNOWN;
+                }
+            }
+        }
+        return result;
+    }
+    
+    private Locale localeFromString(final String localeName) {
+        String language = localeName;
+        String country = "";
+        String variant = "";
+        
+        int ndx = language.indexOf('_');
+        if (ndx >= 0) {
+            country = language.substring(ndx+1);
+            language = language.substring(0, ndx);
+        }
+        ndx = country.indexOf('_');
+        if (ndx >= 0) {
+            variant = country.substring(ndx+1);
+            country = country.substring(0, ndx);
+        }
+        ndx = country.indexOf('@');
+        if(ndx>0){
+            variant = country.substring(ndx+1);
+            country = country.substring(0,ndx);
+        }
+        return new Locale(language, country, variant);
+    }
+    //{{DECLARE_CONTROLS
+	//}}
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/EOLTransition.java b/src/com/ibm/icu/dev/tool/localeconverter/EOLTransition.java
new file mode 100755
index 0000000..aa203f2
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/EOLTransition.java
@@ -0,0 +1,113 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/EOLTransition.java,v $ 
+ * $Date: 2002/02/16 03:05:27 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+ 
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ * This transition parses an end-of-line sequence.  The comment character
+ * can be set to an arbitrary character, but it is shared globally.
+ * A comment may only occur after an end-of-line.
+ * EOL := <EOF> | <EOL_CHARS> [ <EOL_SEGMENT> ]*
+ * EOL_SEGMENT := <EOL_CHARS> | <SPACE_CHARS> | <COMMENT>
+ * SPACE_CHARS := " \t";
+ * EOL_CHARS = "\r\n\u2028\u2029";
+ * COMMENT_STRING := <COMMENT_CHAR> <COMMENT_BODY>
+ * COMMENT_CHAR = "#";
+ * COMMENT_BODY = [ ~<EOF> & ~<EOL_CHARS> ]*
+ */
+public class EOLTransition extends ComplexTransition {
+    public static final String EOL_CHARS = "\f\r\n\u2028\u2029";
+    public static final char DEFAULT_COMMENT_CHAR = '#';
+    public static char COMMENT_CHAR = DEFAULT_COMMENT_CHAR;
+    public static final EOLTransition GLOBAL = new EOLTransition(SUCCESS);
+    
+        /** Restore the comment character to the default value */
+    public static synchronized char setDefaultCommentChar() {
+        return setCommentChar(DEFAULT_COMMENT_CHAR);
+    }
+    
+        /** Set a new comment character */
+    public static synchronized char setCommentChar(char c) {
+        char result = COMMENT_CHAR;
+        COMMENT_CHAR = c;
+        states = null;  //flush states
+        return result;
+    }
+    
+    public EOLTransition(int success) {
+        super(success);
+            //{{INIT_CONTROLS
+        //}}
+}
+    public boolean accepts(int c) {
+        return EOL_CHARS.indexOf((char)c) >= 0;
+    }
+    protected Lex.Transition[][] getStates() {
+        synchronized (getClass()) {
+            if (states == null) {
+                //cache the states so they can be shared.  This states
+                //need to be flushed and rebuilt when the comment
+                //character changes.
+                states = new Lex.Transition[][] {
+                    { //state 0: 
+                        new Lex.StringTransition(EOL_CHARS, Lex.IGNORE_CONSUME, -1),
+                        new Lex.EOFTransition(SUCCESS),
+                        new Lex.ParseExceptionTransition("bad characters in EOL")
+                    },
+                    { //state 1:
+                        new Lex.CharTransition(COMMENT_CHAR, Lex.IGNORE_CONSUME, -2),
+                        new Lex.StringTransition(EOL_CHARS, Lex.IGNORE_CONSUME, -1),
+                        new Lex.StringTransition(SpaceTransition.SPACE_CHARS, Lex.IGNORE_CONSUME, -1),
+                        new Lex.EOFTransition(SUCCESS),
+                        new Lex.DefaultTransition(Lex.IGNORE_PUTBACK, SUCCESS)
+                    },
+                    { //state 2:
+                        new Lex.StringTransition(EOL_CHARS, Lex.IGNORE_CONSUME, -1),
+                        new Lex.EOFTransition(SUCCESS),
+                        new Lex.DefaultTransition(Lex.IGNORE_CONSUME, -2)
+                    }
+                };
+            }
+        }
+        return states;
+    }
+    private static Lex.Transition[][] states;
+
+    public static void main(String args[]) {
+        try {
+            Lex.Transition[][] states = {{ 
+                new EOLTransition(SUCCESS).debug(true),
+                new Lex.EOFTransition(),
+                new Lex.ParseExceptionTransition("bad test input")
+            }};
+            String text = "\n\r\n# Hello World\n\r\n\n\n\r\r\n#hello  kdsj\n";
+            StringReader sr = new StringReader(text);
+            PushbackReader pr = new PushbackReader(sr);
+            Lex parser = new Lex(states, pr);
+            parser.debug(true);
+            //parser.debug(true);
+            int s = parser.nextToken();
+            while (s == SUCCESS) {
+                //System.out.println(parser.getData());
+                s = parser.nextToken();
+            }
+        } catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+    //{{DECLARE_CONTROLS
+    //}}
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/EscapeTransition.java b/src/com/ibm/icu/dev/tool/localeconverter/EscapeTransition.java
new file mode 100755
index 0000000..0a6ffb0
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/EscapeTransition.java
@@ -0,0 +1,152 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/EscapeTransition.java,v $ 
+ * $Date: 2002/02/16 03:05:28 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+import java.io.*;
+import java.util.*;
+
+/**
+ * An escape transition parses a POSIX escape sequence.  An escape
+ * sequence can be a hex, octal, or decimal constant, or an escaped
+ * character.  The resultant value is ALWAYS on byte long.  Longer
+ * escaped values (ie.\xFF63) overflow and are truncated.  An escape
+ * character followed by an EOL sequence is silently eaten.
+ */
+public class EscapeTransition extends ComplexTransition {
+    public static final EscapeTransition GLOBAL = new EscapeTransition(SUCCESS);
+
+    public static final char DEFAULT_ESCAPE_CHAR = '\\';
+    public static char ESCAPE_CHAR = DEFAULT_ESCAPE_CHAR;
+    
+    private static final int DECIMAL = 1;   //decimal escape sequence was parsed
+    private static final int OCTAL = 2;     //octal escape sequence was parsed
+    private static final int HEX = 3;       //hex escape sequence was parsed
+    private static final int ESCAPE = 4;    //character escape sequence was parsed
+    private static final int EOL = 5;       //an escape character followed by EOF eaten
+    
+    private static final String OCTAL_CHARS = "01234567";
+    private static final String DECIMAL_CHARS = "0123456789";
+    private static final String HEX_CHARS = "0123456789abcdefABCDEF";
+    
+        /** Set the escape character to the default */
+    public static synchronized char setDefaultEscapeChar() {
+        return setEscapeChar(DEFAULT_ESCAPE_CHAR);
+    }
+    
+        /** Set the escape character */
+    public static synchronized char setEscapeChar(char c) {
+        char result = ESCAPE_CHAR;
+        ESCAPE_CHAR = c;
+        theStates = null;
+        return result;
+    }
+    
+    public EscapeTransition(int success) {
+        super(success);
+            //{{INIT_CONTROLS
+        //}}
+}
+    
+    public boolean accepts(int c) {
+        return ESCAPE_CHAR == (char)c;
+    }
+    
+        /** Convert the accepted text into the appropriate unicode character */
+    protected void handleSuccess(Lex parser, StringBuffer output) throws IOException {
+        switch (parser.getState()) {
+        case DECIMAL:
+            output.append((char)parser.dataAsNumber(10));
+            break;
+        case OCTAL:
+            output.append((char)parser.dataAsNumber(8));
+            break;
+        case HEX:
+            output.append((char)parser.dataAsNumber(16));
+            break;
+        case ESCAPE:
+            parser.appendDataTo(output);
+            break;
+        case EOL:
+            //silently eat the EOL characters
+            break;
+        default:
+            //should never get here
+            throw new Lex.ParseException("Internal error parsing escape sequence");
+//          parser.appendDataTo(output);
+        }
+    }
+        /** return the states for this transaction */
+    protected Lex.Transition[][] getStates() {
+        synchronized (getClass()) {
+            if (theStates == null) {
+                //cache the states so they can be shared.  They must
+                //be rebuilt when the escape character is changed.
+                theStates = new Lex.Transition[][] {
+                    { //state 0: 
+                        new Lex.CharTransition(ESCAPE_CHAR, Lex.IGNORE_CONSUME, -1),
+                        new Lex.ParseExceptionTransition("illegal escape character")
+                    },
+                    { //state 1:
+                        new Lex.EOFTransition(OCTAL),
+                        new Lex.CharTransition('d', Lex.IGNORE_CONSUME, -3),
+                        new Lex.CharTransition('x', Lex.IGNORE_CONSUME, -2),
+                        new Lex.StringTransition(OCTAL_CHARS, Lex.ACCUMULATE_CONSUME, -4),
+                        new Lex.CharTransition(ESCAPE_CHAR, Lex.ACCUMULATE_CONSUME, ESCAPE),
+                        new EOLTransition(EOL),
+                        new Lex.DefaultTransition(Lex.ACCUMULATE_CONSUME, ESCAPE)
+                    },
+                    { //state 2: hex
+                        new Lex.EOFTransition(HEX),
+                        new Lex.StringTransition(HEX_CHARS, Lex.ACCUMULATE_CONSUME, -2),
+                        new Lex.DefaultTransition(Lex.IGNORE_PUTBACK, HEX)
+                    },
+                    { //state 3: decimal
+                        new Lex.EOFTransition(DECIMAL),
+                        new Lex.StringTransition(DECIMAL_CHARS, Lex.ACCUMULATE_CONSUME, -3),
+                        new Lex.DefaultTransition(Lex.IGNORE_PUTBACK, DECIMAL)
+                    },
+                    { //state 4: octal
+                        new Lex.EOFTransition(OCTAL),
+                        new Lex.StringTransition(OCTAL_CHARS, Lex.ACCUMULATE_CONSUME, -4),
+                        new Lex.DefaultTransition(Lex.IGNORE_PUTBACK, OCTAL)
+                    },
+                };
+            }
+        }
+        return theStates;
+    }
+    private static Lex.Transition[][] theStates = null;
+
+    public static void main(String args[]) {
+        try {
+            Lex.Transition[][] states = {{ 
+                new EscapeTransition(SUCCESS),
+                new Lex.EOFTransition(),
+                new Lex.ParseExceptionTransition("bad test input")
+            }};
+            String text = "\\d100\\xAf\\\\\\777\\\n\\123\\x2028\\x2029";
+            StringReader sr = new StringReader(text);
+            PushbackReader pr = new PushbackReader(sr);
+            Lex parser = new Lex(states, pr);
+            //parser.debug(true);
+            int s = parser.nextToken();
+            while (s == SUCCESS) {
+                System.out.println(parser.getState());
+                s = parser.nextToken();
+            }
+        } catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+    //{{DECLARE_CONTROLS
+    //}}
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/ICU2LocaleWriter.java b/src/com/ibm/icu/dev/tool/localeconverter/ICU2LocaleWriter.java
new file mode 100755
index 0000000..03287d2
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/ICU2LocaleWriter.java
@@ -0,0 +1,125 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/ICU2LocaleWriter.java,v $ 
+ * $Date: 2002/06/20 01:17:12 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+ 
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+public class ICU2LocaleWriter extends LocaleWriter {
+    public ICU2LocaleWriter(PrintStream out) {
+        super(out);
+            //{{INIT_CONTROLS
+        //}}
+}
+    public ICU2LocaleWriter(PrintStream out, PrintStream err) {
+        super(out, err);
+    }
+    protected void open(Locale locale) {
+        print(locale.toString());
+        println(" {");
+        indent();
+    }
+    protected void write(String tag, String value) {
+        print(tag);
+        print(" { ");
+        printString(value);
+        println(" }");
+    }
+    protected void write(String tag, String[] value) {
+        if (tag != null) {
+            print(tag);
+            println(" { ");
+        } else {
+            println("{");
+        }
+        indent();
+            for (int i = 0; i < value.length; i++) {
+                printString(value[i]);
+                println(",");
+            }
+        outdent();
+        println("}");
+    }
+    protected void write(String tag, Object o) {
+        if ("CollationElements".equals(tag)) {
+            writeTagged(tag,(Object[][])o);
+        } else if (!(o instanceof CollationItem[])) {
+            super.write(tag, o);
+        } else {
+            CollationItem[] items = (CollationItem[])o;
+            if(items[0]!=null){
+                print("Sequence");
+                println(" { ");
+                for (int i = 0; i < items.length; i++) {
+                    if(items[i]!=null){
+                        printString(items[i].toString());
+                        if (items[i].comment != null) {
+                            tabTo(30);
+                            print("//");
+                            println(items[i].comment);
+                        }
+                    }
+                }
+                println("}");
+            }
+        }
+    }
+    protected void writeTagged(String tag, Object[][] value) {
+        print(tag);
+        println(" { ");
+        indent();
+            for (int i = 0; i < value.length; i++) {
+                write((String)value[i][0], value[i][1]);
+            }
+        outdent();
+        println("}");
+    }
+    protected void write2D(String tag, String[][] value) {
+        print(tag);
+        println(" { ");
+        indent();
+            for (int i = 0; i < value.length; i++) {
+                write(null, value[i]);
+            }
+        outdent();
+        println("}");
+    }
+    protected void writeTagged(String tag, String[][] value) {
+        print(tag);
+        println(" { ");
+        indent();
+            for (int i = 0; i < value.length; i++) {
+                write(value[i][0], value[i][1]);
+            }
+        outdent();
+        println("}");
+    }
+    protected void close() {
+        outdent();
+        println("}");
+    }
+
+    protected String getStringJoiningCharacter() {
+        return "";
+    }
+    
+    protected boolean isEscapeChar(final char c) {
+        return true;
+    }
+    protected String getEscapeChar() {
+        return "%u";
+    }
+    //{{DECLARE_CONTROLS
+    //}}
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/ICULocaleWriter.java b/src/com/ibm/icu/dev/tool/localeconverter/ICULocaleWriter.java
new file mode 100755
index 0000000..71a46a8
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/ICULocaleWriter.java
@@ -0,0 +1,118 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/ICULocaleWriter.java,v $ 
+ * $Date: 2002/06/20 01:17:12 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+public class ICULocaleWriter extends LocaleWriter {
+    public ICULocaleWriter(PrintStream out) {
+        super(out);
+    }
+    public ICULocaleWriter(PrintStream out, PrintStream err) {
+        super(out, err);
+    }
+    protected void open(Locale locale) {
+        print(locale.toString());
+        println(" {");
+        indent();
+    }
+    protected void write(String tag, Object o) {
+        if ("CollationElements".equals(tag)) {
+            if(o instanceof Object[][]){
+                writeTagged(tag,(Object[][])o);
+            }else{
+               write(tag,(String)o);
+            }
+        } else if (!(o instanceof CollationItem[])) {
+            super.write(tag, o);
+        } else {
+            CollationItem[] items = (CollationItem[])o;
+            if(items[0]!=null){
+	            print("Sequence");
+	            println(" { ");
+	            for (int i = 0; i < items.length; i++) {
+	                if(items[i]!=null){
+	                    printString(items[i].toString());
+	                    if (items[i].comment != null) {
+	                        tabTo(30);
+	                        print("//");
+	                        println(items[i].comment);
+	                    }
+	                }
+	            }
+	            println("}");
+            }
+        }
+    }
+    protected void write(String tag, String value) {
+        print(tag);
+        print(" { ");
+        printString(value);
+        println(" }");
+    }
+    protected void write(String tag, String[] value) {
+        if (tag != null) {
+            print(tag);
+            println(" { ");
+        } else {
+            println("{");
+        }
+        indent();
+            for (int i = 0; i < value.length; i++) {
+                printString(value[i]);
+                println(",");
+            }
+        outdent();
+        println("}");
+    }
+    protected void write2D(String tag, String[][] value) {
+        print(tag);
+        println(" { ");
+        indent();
+            for (int i = 0; i < value.length; i++) {
+                write(null, value[i]);
+            }
+        outdent();
+        println("}");
+    }
+    protected void writeTagged(String tag, Object[][] value) {
+        print(tag);
+        println(" { ");
+        indent();
+            for (int i = 0; i < value.length; i++) {
+                write((String)value[i][0], value[i][1]);
+            }
+        outdent();
+        println("}");
+    }
+    protected void writeTagged(String tag, String[][] value) {
+        print(tag);
+        println(" { ");
+        indent();
+            for (int i = 0; i < value.length; i++) {
+                write(value[i][0], value[i][1]);
+            }
+        outdent();
+        println("}");
+    }
+    protected void close() {
+        outdent();
+        println("}");
+        super.closeFileHandle();
+    }
+
+    protected String getStringJoiningCharacter() {
+        return "";
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/Java1LocaleWriter.java b/src/com/ibm/icu/dev/tool/localeconverter/Java1LocaleWriter.java
new file mode 100755
index 0000000..6a0c298
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/Java1LocaleWriter.java
@@ -0,0 +1,147 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/Java1LocaleWriter.java,v $ 
+ * $Date: 2002/02/16 03:05:28 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+public class Java1LocaleWriter extends LocaleWriter {
+    public Java1LocaleWriter(PrintStream out) {
+        super(out);
+            //{{INIT_CONTROLS
+        //}}
+    }
+    
+    public Java1LocaleWriter(PrintStream out, PrintStream err) {
+        super(out, err);
+    }
+    
+    public void write(Locale locale, Hashtable localeData) {
+        try {
+            Hashtable temp = new NeutralToJ1Converter(locale).convert(localeData);
+            super.write(locale, temp);
+        } catch (LocaleConverter.ConversionError e) {
+            err.println(e);
+        }
+    }
+
+    protected void open(Locale locale) {
+        print(HEADER1);
+        print(locale.toString());
+        print(HEADER2);
+        print(locale.toString());
+        println(HEADER3);
+        indent(3);
+    }
+    protected void write(String tag, String value) {
+        print("{ ");
+        printString(tag);
+        print(", ");
+        printString(value);
+        println(" },");
+    }
+    protected void write(String tag, String[] value) {
+        print("{ ");
+        if (tag != null) {
+            printString(tag);
+            println(",");
+        } else {
+            println("");
+        }
+        indent();
+            println("new String[] {");
+            indent();
+                for (int i = 0; i < value.length; i++) {
+                    printString(value[i]);
+                    println(",");
+                }
+            outdent();
+            println("}");
+        outdent();
+        println("},");
+    }
+    protected void write2D(String tag, String[][] value) {
+        print("{ ");
+        printString(tag);
+        println(",");
+        indent();
+            println("new String[][] {");
+            indent();
+                for (int i = 0; i < value.length; i++) {
+                    println("{");
+                    indent();
+                    for (int j = 0; j < value[i].length; j++) {
+                        printString(value[i][j]);
+                        println(",");
+                    }
+                    outdent();
+                    println("},");
+                }
+            outdent();
+            println("}");
+        outdent();
+        println("},");
+    }
+    protected void writeTagged(String tag, String[][] value) {
+        print("{ ");
+        printString(tag);
+        println(",");
+        indent();
+            println("new String[][] {");
+            indent();
+                for (int i = 0; i < value.length; i++) {
+                    write(value[i][0], value[i][1]);
+                }
+            outdent();
+            println("}");
+        outdent();
+        println("},");
+    }
+    protected void close() {
+        outdent(3);
+        print(FOOTER);
+    }
+
+    protected void appendEscapedChar(char c, StringBuffer buffer) {
+        if (c < '\u0020' || c == '"' || c == '\\') {
+            buffer.append('\\');
+            buffer.append(HEX_DIGIT[(c & 0700) >> 6]); // HEX_DIGIT works for octal
+            buffer.append(HEX_DIGIT[(c & 0070) >> 3]);
+            buffer.append(HEX_DIGIT[(c & 0007)]);
+        } else {
+            super.appendEscapedChar(c, buffer);
+        }
+    }
+
+    protected String getStringJoiningCharacter() {
+        return "+";
+    }
+    
+    private static final String HEADER1 = 
+            "package java.text.resources;\n"+
+            "public class LocaleElements_";
+    private static final String HEADER2 = 
+            " extends LocaleData {\n"+
+            "    public LocaleElements_";
+    private static final String HEADER3 = 
+        "() {\n"+
+        "        super.init(table);\n"+
+        "    }\n"+
+        "    static String table []=";
+        
+    private static final String FOOTER = 
+        "    }\n"+
+        "}";
+    //{{DECLARE_CONTROLS
+    //}}
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/JavaLocaleWriter.java b/src/com/ibm/icu/dev/tool/localeconverter/JavaLocaleWriter.java
new file mode 100755
index 0000000..df10fe5
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/JavaLocaleWriter.java
@@ -0,0 +1,170 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/JavaLocaleWriter.java,v $ 
+ * $Date: 2002/02/16 03:05:29 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+public class JavaLocaleWriter extends LocaleWriter {
+    public JavaLocaleWriter(PrintStream out) {
+        super(out);
+    }
+    public JavaLocaleWriter(PrintStream out, PrintStream err) {
+        super(out, err);
+    }
+    public void open(Locale locale) {
+        println(HEADER);
+        indent(3);
+    }
+    protected void write(String tag, Object o) {
+        if ("CollationElements".equals(tag)) {
+             writeTagged(tag,(Object[][])o);
+        } else if (!(o instanceof CollationItem[])) {
+            super.write(tag, o);
+        } else {
+            CollationItem[] items = (CollationItem[])o;
+            print("{ ");
+            printString("CollationElements");
+            println(", ");
+            for (int i = 0; i < items.length; i++) {
+                if(items[i]!=null){
+                    printString(items[i].toString());
+                    if (items[i].comment != null) {
+                        print("+");
+                        tabTo(30);
+                        print("//");
+                        println(items[i].comment);
+                    } else {
+                        println("+");
+                    }
+                }
+            }
+            println("\"\"");
+            println(" },");
+        }
+    }
+
+    public void write(String tag, String value) {
+        print("{ ");
+        printString(tag);
+        print(", ");
+        printString(value);
+        println(" },");
+    }
+    public void write(String tag, String[] value) {
+        print("{ ");
+        if (tag != null) {
+            printString(tag);
+            println(",");
+        } else {
+            println("");
+        }
+        indent();
+            println("new String[] {");
+            indent();
+                for (int i = 0; i < value.length; i++) {
+                    printString(value[i]);
+                    println(",");
+                }
+            outdent();
+            println("}");
+        outdent();
+        println("},");
+    }
+    public void write2D(String tag, String[][] value) {
+        print("{ ");
+        printString(tag);
+        println(",");
+        indent();
+            println("new String[][] {");
+            indent();
+                for (int i = 0; i < value.length; i++) {
+                    println("{");
+                    indent();
+                    for (int j = 0; j < value[i].length; j++) {
+                        printString(value[i][j]);
+                        println(",");
+                    }
+                    outdent();
+                    println("},");
+                }
+            outdent();
+            println("}");
+        outdent();
+        println("},");
+    }
+    public void writeTagged(String tag, String[][] value) {
+        print("{ ");
+        printString(tag);
+        println(",");
+        indent();
+            println("new String[][] {");
+            indent();
+                for (int i = 0; i < value.length; i++) {
+                    write(value[i][0], value[i][1]);
+                }
+            outdent();
+            println("}");
+        outdent();
+        println("},");
+    }
+    public void writeTagged(String tag, Object[][] value) {
+        print("{ ");
+        printString(tag);
+        println(",");
+        indent();
+            println("new String[][] {");
+            indent();
+                for (int i = 0; i < value.length; i++) {
+                    write((String)value[i][0], value[i][1]);
+                }
+            outdent();
+            println("}");
+        outdent();
+        println("},");
+    }
+    public void close() {
+        outdent(3);
+        print(FOOTER);
+        println("");
+    }
+
+    protected void appendEscapedChar(char c, StringBuffer buffer) {
+        if (c < '\u0020' || c == '"' || c == '\\') {
+            buffer.append('\\');
+            buffer.append(HEX_DIGIT[(c & 0700) >> 6]); // HEX_DIGIT works for octal
+            buffer.append(HEX_DIGIT[(c & 0070) >> 3]);
+            buffer.append(HEX_DIGIT[(c & 0007)]);
+        } else {
+            super.appendEscapedChar(c, buffer);
+        }
+    }
+
+    protected String getStringJoiningCharacter() {
+        return "+";
+    }
+    
+    private static final String HEADER = 
+        "package java.text.resources;\n"+
+        "import java.util.ListResourceBundle;\n"+
+        "public class TestLocaleElements extends ListResourceBundle {\n"+
+        "    public Object[][] getContents() {\n"+
+        "        return new Object[][] {";
+        
+    private static final String FOOTER = 
+        "        };\n"+
+        "    }\n"+
+        "}";
+    //{{DECLARE_CONTROLS
+    //}}
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/Lex.java b/src/com/ibm/icu/dev/tool/localeconverter/Lex.java
new file mode 100755
index 0000000..89e45f5
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/Lex.java
@@ -0,0 +1,420 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/Lex.java,v $ 
+ * $Date: 2002/02/16 03:05:29 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ * A Lex is a state machine.  Transitions can be activated
+ * arbitrarily and can consume arbitrary amounts of text.
+ * A transition simply says it can consume the next character
+ * and returns the state that the machine should transition into.
+ * States that are > 0 are final states and cause the nextToken
+ * routine to return a value.
+ */
+public final class Lex {
+    private Transition[][] states;  //final
+    private PushbackReader input;   //final
+    private int state;
+    private String data;
+    private final StringBuffer dataBuffer = new StringBuffer();
+    private boolean debugMessagesOn;
+    private String debugTag;
+    
+    public static final int END_OF_FILE = Integer.MAX_VALUE;
+
+        /** Construct a new machine.  NOTE: setInput must be
+         * called before nextToken is called */
+    public Lex(final Transition[][] states) {
+        this.states = states;
+            //{{INIT_CONTROLS
+		//}}
+}
+
+        /** Construct a new machine. */
+    public Lex(final Transition[][] statesIn, final PushbackReader inputIn) {
+        states = statesIn;
+        input = inputIn;
+    }
+
+        /** Return the current state */
+    public int getState() {
+        return state;
+    }
+
+        /** Return the data resulting from the last call to nextToken */
+    public String getData() {
+        if (data == null) {
+            data = dataBuffer.toString();
+        }
+        return data;
+    }
+    
+        /** Return the input reader used by this machine */
+    public PushbackReader getInput() {
+        return input;
+    }
+
+        /** set the input reader used by this machine */
+    public void setInput(PushbackReader input) {
+        this.input = input;
+    }
+
+        /** Return the states used by this machine */
+    public Transition[][] getStates() {
+        return states;
+    }
+
+    public void setStates(Transition[][] states) {
+        this.states = states;
+    }
+
+        /** Return true if the specified string equals the
+         * string returned by getData().  This routine
+         * may be faster than calling getData because
+         * it does not create a string on the heap.
+         */
+    public boolean dataEquals(final String other) {
+        if (data != null) {
+            //if dataBuffer has already been converted to
+            //a string, just compare the strings.
+            return data.equals(other);
+        } else {
+            if (other.length() != dataBuffer.length()) return false;
+            final int len = dataBuffer.length();
+            for (int i = 0; i < len; i++) {
+                if (other.charAt(i) != dataBuffer.charAt(i)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+    
+        /**
+         * Append the data returned from getData() to the
+         * specified StringBuffer.  This routine avoids
+         * the creation of a String on the heap.
+         */
+    public void appendDataTo(StringBuffer buffer) {
+        buffer.append(dataBuffer);
+    }
+    
+        /**
+         * Return true if the data returned by getData()
+         * starts with the specified string.  This routine avoids
+         * the creation of a String on the heap.
+         */
+    public boolean dataStartsWith(String s) {
+        if (dataBuffer.length() < s.length()) {
+            return false;
+        } else {
+            final int sLength = s.length();
+            for (int i = 0; i < sLength; i++) {
+                if (dataBuffer.charAt(i) != s.charAt(i)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+        
+        /** 
+         * Convert the contents of the data buffer to an integer
+         * of the specified radix
+         */
+    public int dataAsNumber(int radix) {
+        int value = 0;
+        final int len = dataBuffer.length();
+        for (int i = 0; i < len; i++) {
+            value = value*radix + Character.digit(dataBuffer.charAt(i), radix);
+        }
+        return value;
+    }
+    
+        /**
+         * Get the next token from the input stream.  The
+         * dataBuffer is cleared and the state is set to zero before
+         * parsing begins.  Parsing continues until a state
+         * greater of equal to 0 s reached or an exception is thrown.
+         * After each non-terminal transition, the state machine 
+         * walks through all the transitions, in order, for the current
+         * state until it finds one that will accept the current
+         * input character and then calls doAction on that transition.
+         */
+    public int nextToken() throws IOException {
+        state = 0;
+        dataBuffer.setLength(0);
+
+        do {
+            int c = input.read();
+            final Transition[] transition = states[-state];
+            for (int i = 0; i < transition.length; i++) {
+                if (transition[i].accepts(c)) {
+                    //System.out.println("state["+ -state+"].transition["+i+"] on "+c+"  '"+(char)c+"' to state[");
+                    state = transition[i].doAction(c, input, dataBuffer);
+                    //println("" + -state + "]");
+                    break;
+                }
+            }
+        } while (state <= 0);
+        data = null;    //dump the cached data string
+        return state;
+    }
+
+        /** 
+         * Get the next token and throw an acception if
+         * the state machine is not in the specified state.
+         */
+    public void accept(final int neededState) throws IOException {
+        if (neededState != nextToken()) {
+            Exception e = new Exception();
+            e.printStackTrace();
+            throw new ParseException("Unexpected token - "+getData());
+        }
+    }
+    
+        /**
+         * Get the next token and throw an exception if the
+         * state machine is not in the specified state and the
+         * value returned by getData() does not match the 
+         * specified value.
+         */
+    public void accept(final int neededState, final String neededValue) throws IOException {
+        accept(neededState);
+        if (!dataEquals(neededValue)) {
+            Exception e = new Exception();
+            e.printStackTrace();
+            throw new ParseException("Unexpected token - "+getData());
+        }
+    }
+
+    public void debug(boolean debugMessagesOn) {
+        this.debugMessagesOn = debugMessagesOn;
+        debugTag = null;
+    }
+    
+    public void debug(boolean debugMessagesOn, String tag) {
+        this.debugMessagesOn = debugMessagesOn;
+        this.debugTag = tag;
+    }
+    
+/*  private void print(String s) {
+        if (debugMessagesOn) {
+            System.out.print(s);
+        }
+    }
+
+    private void println(String s) {
+        if (debugMessagesOn) {
+            System.out.println(s+"  <"+debugTag);
+        }
+    }
+
+    /**
+     * The interface for state machine transitions. 
+     */
+    public interface Transition {
+        /** 
+         * Return true if the transition can accept the current input
+         * character.
+         */
+        public boolean accepts(int c);
+        /**
+         * Perform the transition.
+         * @param c the current input character
+         * @param input the current input stream, minus the current input character
+         * @param buffer the current output buffer
+         * @return the state the machine should be in next
+         */
+        public int doAction(int c, PushbackReader input, StringBuffer buffer) throws IOException;
+    }
+
+        /* constants for BaseTransitions */
+        /** Don't copy the current character to the output */
+    public static final byte IGNORE = 0x01;
+        /** Append the current character to the output */
+    public static final byte ACCUMULATE = 0x00;
+    private static final byte BUFFER_MASK = 0x01;
+
+        /** Remove the current character from the input stream */
+    public static final byte CONSUME = 0x00;
+        /** Return the current character to the input stream */
+    public static final byte PUTBACK = 0x10;
+    private static final byte INPUT_MASK = 0x10;
+
+    public static final byte 
+            ACCUMULATE_CONSUME = (byte)(ACCUMULATE | CONSUME),
+            IGNORE_CONSUME = (byte)(IGNORE | CONSUME),
+            ACCUMULATE_PUTBACK = (byte)(ACCUMULATE | PUTBACK),
+            IGNORE_PUTBACK = (byte)(IGNORE | PUTBACK);
+
+    /**
+     * Base class for simple transition classes
+     */
+    public static abstract class BaseTransition implements Transition {
+        private final boolean addToBuffer;
+        private final boolean unreadInput;
+        private final int next;
+        /**
+         * Construct a new transition.  On execution, the 
+         * specified action is performed and the
+         * specified state is returned.
+         * @param action the actions to perform to the 
+         * input and output buffers.
+         * @param next the next state the machine should
+         * move into
+         */
+        public BaseTransition(byte action, int next) {
+            this.addToBuffer = (action & BUFFER_MASK) == ACCUMULATE;
+            this.unreadInput = (action & INPUT_MASK) == PUTBACK;
+            this.next = next;
+        }
+        public abstract boolean accepts(int c);
+        public int doAction(final int c, 
+                final PushbackReader input, 
+                final StringBuffer buffer) throws IOException {
+                
+            if (addToBuffer) {
+                buffer.append((char)c);
+            }
+            if (unreadInput) {
+                input.unread(c);
+            }
+            return next;
+        }
+    }
+
+    /**
+     * Accept end-of-file.
+     */
+    public static final class EOFTransition extends BaseTransition {
+        public EOFTransition() {
+            this(IGNORE_CONSUME, END_OF_FILE);
+        }
+        public EOFTransition(int next) {
+            this(IGNORE_CONSUME, next);
+        }
+        public EOFTransition(byte action, int next) {
+            super(action, next);
+        }
+        public boolean accepts(int c) {
+            return c == -1;
+        }
+    }
+
+    /**
+     * Accept anything.
+     */
+    public static final class DefaultTransition extends BaseTransition {
+        public DefaultTransition(byte action, int nextState) {
+            super(action, nextState);
+        }
+        public boolean accepts(int c) {
+            return true;
+        }
+    }
+
+    /**
+     * Accept any characters in the specified string.
+     */
+    public static final class StringTransition extends BaseTransition {
+        private String chars;
+        public StringTransition(String chars, byte action, int nextState) {
+            super(action, nextState);
+            this.chars = chars;
+        }
+        public boolean accepts(int c) {
+            return chars.indexOf((char)c) != -1;
+        }
+    }
+
+    /**
+     * Accept only the specified character.
+     */
+    public static final class CharTransition extends BaseTransition {
+        private char c;
+        public CharTransition(char c, byte action, int nextState) {
+            super(action, nextState);
+            this.c = c;
+        }
+        public boolean accepts(int c) {
+            return this.c == (char)c;
+        }
+    }
+
+    /**
+     * Accept anything, but throw the specified exception after
+     * performing the specified action
+     */
+    public static final class ExceptionTransition extends BaseTransition {
+        private IOException e;
+        public ExceptionTransition(IOException e) {
+            super(IGNORE_PUTBACK, END_OF_FILE); //state is ignored
+        }
+        public ExceptionTransition(byte action, IOException e) {
+            super(action, END_OF_FILE); //state is ignored
+        }
+        public boolean accepts(int c) {
+            return true;
+        }
+        public final int doAction(final int c, 
+                final PushbackReader input, 
+                final StringBuffer buffer) throws IOException {
+            super.doAction(c, input, buffer);
+            throw e;
+        }
+    }
+
+        /**
+         * The base class for parse exceptions.  Exceptions
+         * resulting from parsing errors should be subclasses of this
+         * class.
+         */
+    public static final class ParseException extends IOException {
+        public final String reason;
+        public ParseException() {
+            this.reason = "unkown";
+        }
+        public ParseException(String reason) {
+            this.reason = reason;
+        }
+        public String toString() {
+            return reason;
+        }
+    }
+
+    /**
+     * Accept anything, execute as IGNORE_PUTBACK, and throw
+     * a ParseException with the specified message
+     */
+    public static final class ParseExceptionTransition implements Transition {
+        private String reason;
+        public ParseExceptionTransition(String reason) {
+            this.reason = reason;
+        }
+        public boolean accepts(int c) {
+            return true;
+        }
+        public final int doAction(final int c, 
+                final PushbackReader input, 
+                final StringBuffer buffer) throws IOException {
+            input.unread((char)c);
+            throw new ParseException(reason);
+        }
+    }
+
+    //{{DECLARE_CONTROLS
+	//}}
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/LineCharNumberReader.java b/src/com/ibm/icu/dev/tool/localeconverter/LineCharNumberReader.java
new file mode 100755
index 0000000..b711e32
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/LineCharNumberReader.java
@@ -0,0 +1,146 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/LineCharNumberReader.java,v $ 
+ * $Date: 2002/02/16 03:05:29 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+
+/**
+ * A LineCharNumberReader is a BufferedReader that
+ * keeps track of the line number and character offset
+ * on that line of the current input stream.
+ */
+public class LineCharNumberReader extends BufferedReader {
+    private int lineNumber = 0;
+    private int charNumber = 0;
+    private int markedLineNumber;
+    private int markedCharNumber;
+    private boolean skipLF;
+
+    public LineCharNumberReader(Reader in) {
+        super(in);
+            //{{INIT_CONTROLS
+        //}}
+}
+
+    public LineCharNumberReader(Reader in, int sz) {
+        super(in, sz);
+    }
+
+    public int getLineNumber() {
+        return lineNumber;
+    }
+
+    public int getCharNumber() {
+        return charNumber;
+    }
+
+    public int read() throws IOException {
+        synchronized (lock) {
+            int c = super.read();
+            charNumber++;
+            if (skipLF) {
+                if (c == '\n') c = super.read();
+                skipLF = false;
+            }
+            switch (c) {
+            case '\r':
+                skipLF = true;
+            case '\n':      /* Fall through */
+            case '\u2028':      /* Fall through */
+            case '\u2029':      /* Fall through */
+                lineNumber++;
+                charNumber = 0;
+                return '\n';
+            }
+            return c;
+        }
+    }
+
+    public int read(char cbuf[], int off, int len) throws IOException {
+        synchronized (lock) {
+            int n = super.read(cbuf, off, len);
+
+            for (int i = off; i < off + len; i++) {
+                int c = cbuf[i];
+                charNumber++;
+                if (skipLF) {
+                    skipLF = false;
+                    if (c == '\n')
+                    continue;
+                }
+                switch (c) {
+                case '\r':
+                    skipLF = true;
+                case '\n':  /* Fall through */
+                case '\u2028':  /* Fall through */
+                case '\u2029':  /* Fall through */
+                    lineNumber++;
+                    charNumber = 0;
+                    break;
+                }
+            }
+
+            return n;
+        }
+    }
+
+    public String readLine() throws IOException {
+        synchronized (lock) {
+            String l = super.readLine();
+            if (l != null)
+            lineNumber++;
+            charNumber = 0;
+            skipLF = false;
+            return l;
+        }
+    }
+
+    private static final int maxSkipBufferSize = 8192;
+
+    private char skipBuffer[] = null;
+
+    public long skip(long n) throws IOException {
+        int nn = (int) Math.min(n, maxSkipBufferSize);
+        synchronized (lock) {
+            if ((skipBuffer == null) || (skipBuffer.length < nn))
+            skipBuffer = new char[nn];
+            long r = n;
+            while (r > 0) {
+            int nc = read(skipBuffer, 0, nn);
+            if (nc == -1)
+                break;
+            r -= nc;
+            }
+            return n - r;
+        }
+    }
+
+    public void mark(int readAheadLimit) throws IOException {
+        synchronized (lock) {
+            super.mark(readAheadLimit);
+            markedLineNumber = lineNumber;
+            markedCharNumber = charNumber;
+        }
+    }
+
+    public void reset() throws IOException {
+        synchronized (lock) {
+            super.reset();
+            lineNumber = markedLineNumber;
+            charNumber = markedCharNumber;
+        }
+    }
+
+    //{{DECLARE_CONTROLS
+    //}}
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/LocaleConverter.java b/src/com/ibm/icu/dev/tool/localeconverter/LocaleConverter.java
new file mode 100755
index 0000000..fe474f0
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/LocaleConverter.java
@@ -0,0 +1,42 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/LocaleConverter.java,v $ 
+ * $Date: 2002/02/16 03:05:29 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+public class LocaleConverter {
+    public Hashtable convert(Hashtable table) throws ConversionError {
+        Hashtable result = new Hashtable();
+        convert(result, table);
+        return result;
+    }
+    
+    protected void convert(Hashtable result, Hashtable source) throws ConversionError {
+        Enumeration enum = source.keys();
+        while (enum.hasMoreElements()) {
+            String key = (String)enum.nextElement();
+            Object data = source.get(key);
+            result.put(key, data);
+        }
+    }
+    
+    public static class ConversionError extends Exception {
+        public ConversionError() {
+        }
+        
+        public ConversionError(String reason) {
+            super(reason);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/LocaleWriter.java b/src/com/ibm/icu/dev/tool/localeconverter/LocaleWriter.java
new file mode 100755
index 0000000..805b238
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/LocaleWriter.java
@@ -0,0 +1,419 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/LocaleWriter.java,v $ 
+ * $Date: 2002/02/16 03:05:29 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.io.*;
+import java.util.*;
+/**
+ * A LocaleWriter takes locale data in standard form and
+ * writes it to standard output in a form suitable for
+ * loading programatically.
+ */
+public abstract class LocaleWriter {
+    private static final String INDENT_CHARS = 
+        "                                        "+
+        "                                        "+
+        "                                        ";
+    private static final char EOL_CHARS[] = {'\r', '\n', '\u2028', '\u2029'};
+        
+    private static final int INDENT_SIZE = 4;
+    private static final int MAX_LINE_LENGTH = 80;
+    private int indentLevel;
+    private String indentString;
+    private boolean needsIndent;
+    protected StringBuffer lineBuffer = new StringBuffer();
+    private int lineLength;
+    protected PrintStream out;
+    protected PrintStream err;
+    public static final HexToUnicodeTransliterator huTranslit = new HexToUnicodeTransliterator("<U###0>");
+    public static final UnicodeToHexTransliterator uhTranslit = new UnicodeToHexTransliterator("\\\\u0000");
+    final File outFile = new File(  "cnvLoc.txt");
+    FileOutputStream outFileStream;
+    BufferedWriter outBufWrite;
+    PrintWriter myOut;
+    
+    public LocaleWriter(PrintStream out) {
+        this.out = out;
+        this.err = out;
+        try{
+            outFile.canWrite();
+            outFileStream = new FileOutputStream(outFile);
+            outBufWrite = new BufferedWriter(new OutputStreamWriter(outFileStream,"UTF8"));                    
+        }
+        catch(java.io.IOException e){
+            System.out.println("Encoding unsupported");
+            return;
+        }  
+    }
+    public LocaleWriter(PrintStream out, PrintStream err) {
+        this.out = out;
+        this.err = err;
+        try{
+            outFile.canWrite();
+            outFileStream = new FileOutputStream(outFile);
+            outBufWrite = new BufferedWriter(new OutputStreamWriter(outFileStream,"UTF8"));                    
+        }
+        catch(java.io.IOException e){
+            System.out.println("Encoding unsupported");
+            return;
+        }  
+    }
+
+    public void write(Locale locale, Hashtable localeData) {
+        open(locale);
+            //sort the key so the tags are in order in the resource file
+        SortedVector order = new SortedVector(localeData.keys(), new SortedVector.StringComparator());
+        Enumeration e = order.elements();
+        while (e.hasMoreElements()) {
+            final String key = (String)e.nextElement();
+            final Object data = localeData.get(key);
+            if (isDuplicateOfInheritedValue(locale, key, data)) {
+               println("///* Discarding duplicate data for tag: "+key+" */");
+            } else {
+                write(key, data);
+            }
+        }
+       
+        close();
+    }
+    public void closeFileHandle(){
+         try{
+            outBufWrite.close();
+        }
+        catch(java.io.IOException excp){
+            out.println("could not close the output file");
+        }
+    }
+        
+    protected void write(String tag, Object o) {
+        if (o instanceof String) {
+            write(tag, (String)o);
+        } else if (o instanceof String[]) {
+            write(tag, (String[]) o);
+        } else if (o instanceof String[][]) {
+            write(tag, (String[][])o);
+        } else if (o instanceof Object[]) {
+            Object[] data = (Object[])o;
+            String[] temp = new String[data.length];
+            for (int i = 0; i < data.length; i++) {
+                temp[i] = data[i].toString();
+            }
+            write(tag, temp);
+        } else if (o instanceof Object[][]) {
+            Object[][] data = (Object[][])o;
+            String[][] temp = new String[data.length][];
+            for (int i = 0; i < data.length; i++) {
+                temp[i] = new String[data[i].length];
+                for (int j = 0; j < temp[i].length; j++) {
+                    temp[i][j] = data[i][j].toString();
+                }
+            }
+            write(tag, temp);
+        } else {
+            write(tag, o.toString());
+        }
+    }
+    protected final void write(String tag, String[][] value) {
+        if (value.length > 0) {
+            if (value[0].length > 2) {
+                write2D(tag, value);
+            } else {
+                writeTagged(tag, value);
+            }
+        } else {
+            writeTagged(tag, value);
+        }
+    }
+
+    protected abstract void open(Locale locale);
+    protected abstract void write(String tag, String value);
+    protected abstract void write(String tag, String[] value);
+    protected abstract void write2D(String tag, String[][] value);
+    protected abstract void writeTagged(String tag, String[][] value);
+    protected abstract void close();
+    protected abstract String getStringJoiningCharacter();
+
+    protected void tabTo(int pos) {
+        if (pos > lineLength) {
+            for (int i = lineLength; i < pos; i++) {
+                print(" ");
+            }
+        }
+    }
+    protected void writeToFile(String str){
+        ReplaceableString tempStr = new ReplaceableString();
+        tempStr.replace(0,tempStr.length(),str);
+        
+        //huTranslit.transliterate(tempStr);
+        //uhTranslit.transliterate(tempStr);
+         try{
+                outBufWrite.write(tempStr.toString());
+         }
+         catch(java.io.IOException e){
+                out.println("Could not write to file");
+         }
+    }
+    
+    protected void print(String val) {
+        if (needsIndent) {
+            out.print(indentString);
+            writeToFile(indentString);
+            lineLength += indentString.length();
+            needsIndent = false;
+        }
+        ReplaceableString tempStr = new ReplaceableString();
+        tempStr.replace(0,tempStr.length(),val);      
+        huTranslit.transliterate(tempStr);
+        String tval = tempStr.toString();
+        if(tval.length()< val.length()){
+           // uhTranslit.transliterate(tempStr);
+            tval=prependEsc(tempStr.toString());
+        }
+        if (tval != null) {
+            out.print(tval);
+            writeToFile(tval);
+            int len = 0;
+            for (int i = 0; i < EOL_CHARS.length; i++) {
+                len = Math.max(len, tval.lastIndexOf(EOL_CHARS[i]));
+            }
+            if (len == 0) {
+                lineLength += tval.length();
+            } else {
+                lineLength = tval.length() - len;
+            }
+        }
+    }
+    protected String prependEsc(String str){
+        StringBuffer myStr =  new StringBuffer();
+        for(int i=0;i<str.length();i++){
+            char ch = str.charAt(i);
+            if(ch > 0x007f){
+                myStr.append("\\u");
+                myStr.append(toHexString(ch,16,4));
+            }
+            else{
+                myStr.append(ch);
+            }
+        }
+        return myStr.toString();
+    }
+    protected String toHexString(char ch, int radix, int pad){
+        final int MAX_DIGITS = 10;
+        int length = 0;
+        char buffer[] = new char[10];
+        int num = 0;
+        int digit;
+        int j;
+        char temp;
+        int i = (int)ch;
+        do{
+            digit = (int)(i % radix);
+            buffer[length++]=(char)(digit<=9?(0x0030+digit):(0x0030+digit+7));
+            i=(i/radix);
+        }while(i>0);
+
+        while (length < pad){   
+            buffer[length++] =  0x0030;/*zero padding */
+        }
+        /* null terminate the buffer */
+        if(length<MAX_DIGITS){
+            buffer[length] =  0x0000;
+        }
+        num= (pad>=length) ? pad :length;
+              
+        /* Reverses the string */
+        for (j = 0; j < (num / 2); j++){
+            temp = buffer[(length-1) - j];
+            buffer[(length-1) - j] = buffer[j];
+            buffer[j] = temp;
+            }
+        return new String(buffer,0,length);
+    }
+        
+    protected void println(String val) {
+        print(val);
+        out.println();
+        writeToFile("\n");
+        lineLength = 0;
+        needsIndent = true;
+    }
+
+    protected void printString(String val) {
+        if (val != null) {
+            indent();
+            lineBuffer.setLength(0);
+            lineBuffer.append("\"");
+            final int size = val.length();
+            for (int i = 0; i < size; i++) {
+                append(val.charAt(i));
+                /*if (!append(val.charAt(i))) {
+                        lineBuffer.append("\"");
+                        lineBuffer.append(getStringJoiningCharacter());
+                        println(lineBuffer.toString());
+                        lineBuffer.setLength(0);
+                        lineBuffer.append("\"");
+                }*/
+            }
+            
+            lineBuffer.append("\"");
+            print(lineBuffer.toString());
+            outdent();
+        } else {
+            print("\"\"");
+        }
+    }
+        
+    protected boolean append(final char c) {
+        boolean escape = isEscapeChar(c);
+        if (escape) {
+            appendEscapedChar(c, lineBuffer);
+        } else {
+            lineBuffer.append(c);
+        }
+        return (lineLength + lineBuffer.length() < MAX_LINE_LENGTH);
+    }
+    
+    protected boolean isEscapeChar(final char c) {
+        switch (c) {
+        case '"':
+        case '\\':
+        case '\n':
+        case '\r':
+        case '\u2028':
+        case '\u2029':
+            return true;
+        default:
+            return (c < ' ') || (c > 0x07F);
+        }
+    }
+    
+    protected void appendEscapedChar(char c, StringBuffer buffer) {
+        buffer.append(getEscapeChar());
+        int value = ((int)c) & 0xFFFF;
+        buffer.append(HEX_DIGIT[(value & 0xF000) >> 12]);
+        buffer.append(HEX_DIGIT[(value & 0x0F00) >> 8]);
+        buffer.append(HEX_DIGIT[(value & 0x00F0) >> 4]);
+        buffer.append(HEX_DIGIT[(value & 0x000F)]);
+    }
+    
+    protected String getEscapeChar() {
+        return "\\u";
+    }
+    
+    protected final void indent() {
+        indent(1);
+    }
+    protected void indent(int amount) {
+        indentLevel += amount;
+        indentString = INDENT_CHARS.substring(0, indentLevel*INDENT_SIZE);
+    }
+    
+    protected final void outdent() {
+        outdent(1);
+    }
+    protected void outdent(int amount) {
+        indentLevel -= amount;
+        indentString = INDENT_CHARS.substring(0, indentLevel*INDENT_SIZE);
+    }
+
+    static final char[] HEX_DIGIT = {'0','1','2','3','4','5','6','7',
+                     '8','9','A','B','C','D','E','F'};
+
+    /** Return true if the value for the specified tag is the same
+     * as the value inherited from the parent for that tag */
+    private boolean isDuplicateOfInheritedValue(final Locale loc, String tag, Object value) {
+        if (value == null) return true;
+        try {
+            final ResourceBundle parentBundle = getParentBundle(loc);
+            if (parentBundle == null) return false;
+            Object parentValue = parentBundle.getObject(tag);
+            if (!objectsAreEqual(value, parentValue)) {
+                return false;
+            } else {
+                return true;
+            }
+        } catch (java.util.MissingResourceException e) {
+            return false;
+        }
+    }
+    
+    private boolean objectsAreEqual(final Object item, final Object parentItem) {
+        if (item instanceof Object[] && parentItem instanceof Object[]) {
+            return arraysAreEqual((Object[])item, (Object[])parentItem);
+        } else {
+            return item.equals(parentItem);
+        }
+    }
+    
+    private boolean arraysAreEqual(final Object[] item, final Object[] parentItem) {
+        boolean matches = item.length == parentItem.length;
+        for (int i = 0; i < item.length && matches; i++) {
+            matches = objectsAreEqual(item[i], parentItem[i]);
+        }
+        return matches;
+    }
+        
+    private ResourceBundle getParentBundle(final Locale loc) {
+        try {
+            final String x = loc.toString();
+            final int ndx = x.lastIndexOf('_');
+            if (ndx < 0) {
+                return null;
+            } else {
+                final String parentLocName = x.substring(0, ndx);
+                final Locale parentLoc = localeFromString(parentLocName);
+                return ResourceBundle.getBundle("com.ibm.icu.dev.tool.localeconverter.myLocaleElements", parentLoc);
+            }
+        } catch (MissingResourceException e) {
+            return null;
+        }
+    }
+    
+    private String replace(String source, String target, String replacement) {
+        if (target.equals(replacement)) {
+            return source;
+        } else {
+            StringBuffer result = new StringBuffer();
+            int lastNdx = 0;
+            int ndx = source.indexOf(target);
+            while (ndx >= 0) {
+                result.append(source.substring(lastNdx, ndx));
+                result.append(replacement);
+                ndx += target.length();
+                lastNdx = ndx;
+                ndx = source.indexOf(target, ndx);
+            }
+            result.append(source.substring(lastNdx));
+            return result.toString();
+        }
+    }
+
+    public Locale localeFromString(final String localeName) {
+        String language = localeName;
+        String country = "";
+        String variant = "";
+        
+        int ndx = language.indexOf('_');
+        if (ndx >= 0) {
+            country = language.substring(ndx+1);
+            language = language.substring(0, ndx);
+        }
+        ndx = country.indexOf('_');
+        if (ndx >= 0) {
+            variant = country.substring(ndx);
+            country = country.substring(0, ndx);
+        }
+        return new Locale(language, country, variant);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/NeutralToJ1Converter.java b/src/com/ibm/icu/dev/tool/localeconverter/NeutralToJ1Converter.java
new file mode 100755
index 0000000..81753ef
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/NeutralToJ1Converter.java
@@ -0,0 +1,209 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/NeutralToJ1Converter.java,v $ 
+ * $Date: 2002/02/16 03:05:30 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+public class NeutralToJ1Converter extends LocaleConverter {
+    private static class Conversion {
+        private String propName;
+        private int ndx;
+        protected Conversion() {
+        }
+        public Conversion(String propName) {
+            this.propName = propName;
+            this.ndx = -1;
+        }
+        public Conversion(String propName, int ndx) {
+            this.propName = propName;
+            this.ndx = ndx;
+        }
+        public String getPropName() {
+            return propName;
+        }
+        public String convert(Hashtable source) throws ConversionError {
+            Object sourceData = source.get(propName);
+            if (sourceData == null) {
+                return null;
+            }
+            if (ndx >= 0) {
+                if (sourceData instanceof String[]) {
+                    sourceData = ((String[])sourceData)[ndx];
+                } else if (sourceData instanceof String[][]) {
+                    sourceData = ((String[][])sourceData)[ndx];
+                }
+            }
+            if (sourceData instanceof String) {
+                return (String)sourceData;
+            } else if (sourceData instanceof String[]) {
+                String[] data = (String[])sourceData;
+                StringBuffer result = new StringBuffer();
+                for (int i = 0; i < data.length; i++) {
+                    if (i > 0) result.append(';');
+                    result.append(data[i]);
+                }
+                return result.toString();
+            } else {
+                throw new ConversionError("could not convert tag: "+propName);
+            }
+        }
+    }
+
+    private static class CollationConversion extends Conversion {
+        public String convert(Hashtable source) throws ConversionError {
+            Object[][] elements = (Object[][])source.get("CollationElements");
+            CollationItem[] items = (CollationItem[])elements[2][1];
+            if (items == null) {
+                return "";
+            } else {
+                StringBuffer result = new StringBuffer();
+                for (int i = 0; i < items.length; i++) {
+                    if(items[i]!=null){
+                        result.append(items[i].toString());
+                    }
+                }
+                return result.toString();
+            }
+        }
+    }
+
+    private static final Conversion[] conversions = {
+        new Conversion("LocaleString"), /*locale id based on iso codes*/
+        new Conversion("LocaleID"), /*Windows id*/
+        new Conversion("ShortLanguage"), /*iso-3 abbrev lang name*/
+        new Conversion("ShortCountry"), /*iso-3 abbrev country name*/
+        new Conversion("Languages"), /*language names*/
+        new Conversion("Countries"), /*country names*/
+        new Conversion("MonthNames",0), /*january*/
+        new Conversion("MonthNames",1), /*february*/
+        new Conversion("MonthNames",2), /*march*/
+        new Conversion("MonthNames",3), /*april*/
+        new Conversion("MonthNames",4), /*may*/
+        new Conversion("MonthNames",5), /*june*/
+        new Conversion("MonthNames",6), /*july*/
+        new Conversion("MonthNames",7), /*august*/
+        new Conversion("MonthNames",8), /*september*/
+        new Conversion("MonthNames",9), /*october*/
+        new Conversion("MonthNames",10), /*november*/
+        new Conversion("MonthNames",11), /*december*/
+        new Conversion("MonthNames",12), /*month 13 if applicable*/
+        new Conversion("MonthAbbreviations",0), /*abb january*/
+        new Conversion("MonthAbbreviations",1), /*abb february*/
+        new Conversion("MonthAbbreviations",2), /*abb march*/
+        new Conversion("MonthAbbreviations",3), /*abb april*/
+        new Conversion("MonthAbbreviations",4), /*abb may*/
+        new Conversion("MonthAbbreviations",5), /*abb june*/
+        new Conversion("MonthAbbreviations",6), /*abb july*/
+        new Conversion("MonthAbbreviations",7), /*abb august*/
+        new Conversion("MonthAbbreviations",8), /*abb september*/
+        new Conversion("MonthAbbreviations",9), /*abb october*/
+        new Conversion("MonthAbbreviations",10), /*abb november*/
+        new Conversion("MonthAbbreviations",11), /*abb december*/
+        new Conversion("MonthAbbreviations",12), /*abb month 13 if applicable*/
+        new Conversion("DayNames",0), /*Monday*/
+        new Conversion("DayNames",1), /*Tuesday*/
+        new Conversion("DayNames",2), /*Wednesday*/
+        new Conversion("DayNames",3), /*Thursday*/
+        new Conversion("DayNames",4), /*Friday*/
+        new Conversion("DayNames",5), /*Saturday*/
+        new Conversion("DayNames",6), /*Sunday*/
+        new Conversion("DayAbbreviations",0), /*abb Monday*/
+        new Conversion("DayAbbreviations",1), /*abb Tuesday*/
+        new Conversion("DayAbbreviations",2), /*abb Wednesday*/
+        new Conversion("DayAbbreviations",3), /*abb Thursday*/
+        new Conversion("DayAbbreviations",4), /*abb Friday*/
+        new Conversion("DayAbbreviations",5), /*abb Saturday*/
+        new Conversion("DayAbbreviations",6), /*abb Sunday*/
+        new Conversion("AmPmMarkers",0), /*am marker*/
+        new Conversion("AmPmMarkers",1), /*pm marker*/
+        new Conversion("Eras"),/*era strings*/
+        new Conversion("NumberPatterns",0), /*decimal pattern*/
+        new Conversion("NumberPatterns",1), /*currency pattern*/
+        new Conversion("NumberPatterns",2), /*percent pattern*/
+        new Conversion("NumberElements",0), /*decimal separator*/
+        new Conversion("NumberElements",1), /*group (thousands) separator*/
+        new Conversion("NumberElements",2), /*list separator*/
+        new Conversion("NumberElements",3), /*percent sign*/
+        new Conversion("NumberElements",4), /*native 0 digit*/
+        new Conversion("NumberElements",5), /*pattern digit*/
+        new Conversion("NumberElements",6), /*minus sign*/
+        new Conversion("NumberElements",7), /*exponential*/
+        new Conversion("CurrencyElements",0), /*local currency symbol*/
+        new Conversion("CurrencyElements",1), /*intl currency symbol*/
+        new Conversion("CurrencyElements",2), /*monetary decimal separator*/
+        new Conversion("DateTimePatterns",0), /*full time pattern*/
+        new Conversion("DateTimePatterns",1), /*long time pattern*/
+        new Conversion("DateTimePatterns",2), /*medium time pattern*/
+        new Conversion("DateTimePatterns",3), /*short time pattern*/
+        new Conversion("DateTimePatterns",4), /*full date pattern*/
+        new Conversion("DateTimePatterns",5), /*long date pattern*/
+        new Conversion("DateTimePatterns",6), /*medium date pattern*/
+        new Conversion("DateTimePatterns",7), /*short date pattern*/
+        new Conversion("DateTimePatterns",8), /*date-time pattern*/
+        new Conversion("DateTimeElements",9), /*first day of week*/
+        new Conversion("DateTimeElements",10), /*min days in first week*/
+        new CollationConversion(), /*collation order*/
+    };
+    private Locale locale;
+    private Locale parentLocale;
+    private ResourceBundle defaultData;
+
+    public NeutralToJ1Converter(Locale locale) {
+        this.locale = locale;
+        String language = locale.toString();
+        String country = "";
+        String variant = "";
+        
+        int ndx = language.indexOf('_');
+        if (ndx >= 0) {
+            country = language.substring(ndx+1);
+            language = language.substring(0, ndx);
+        }
+        ndx = country.indexOf('_');
+        if (ndx >= 0) {
+            variant = country.substring(ndx);
+            country = country.substring(0, ndx);
+        }
+        
+        if ("".equals(country)) {
+            language = "";
+            variant = "";
+        } else if ("".equals(variant)) {
+            country = "";
+        }
+        
+        parentLocale = new Locale(language, country, variant);
+        defaultData =
+            ResourceBundle.getBundle("com.ibm.icu.dev.tool.localeconverter.myLocaleElements", parentLocale);
+            //{{INIT_CONTROLS
+		//}}
+}
+    
+    /** convert the source table to the result */
+    protected void convert(Hashtable result, Hashtable source) throws ConversionError {
+        Vector localeElements = new Vector();
+        for (int i = 0; i < conversions.length; i++) {
+            final Conversion conv = conversions[i];
+            final String newValue = conv.convert(source);
+            if (newValue != null) {
+                localeElements.addElement(newValue);
+            } else {
+                localeElements.addElement(defaultData.getObject(conv.getPropName()));
+            }
+        }
+        result.put("LocaleElements", localeElements);
+    }
+    //{{DECLARE_CONTROLS
+	//}}
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/POSIXLocaleReader.java b/src/com/ibm/icu/dev/tool/localeconverter/POSIXLocaleReader.java
new file mode 100755
index 0000000..26de1b8
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/POSIXLocaleReader.java
@@ -0,0 +1,407 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/POSIXLocaleReader.java,v $ 
+ * $Date: 2002/08/01 00:08:57 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+public class POSIXLocaleReader {
+    private final String localeDataPath;
+    private final Locale locale;
+
+    public static final int TAG_TOKEN = 1;
+    public static final int SEPARATOR_TOKEN = 2;
+    public static final int EOL_TOKEN = 3;
+    public static final int EOF_TOKEN = 4;
+
+        //these states are used to parse the bulk of the
+        //input file.  They translate escaped characters
+        //and symolic character references inline.
+    static final Lex.Transition[][] dataStates = {
+        { //state 0: start
+            new SpaceTransition(0),
+            new Lex.CharTransition(';', Lex.IGNORE_CONSUME, SEPARATOR_TOKEN),
+            new Lex.CharTransition(',', Lex.IGNORE_CONSUME, SEPARATOR_TOKEN),
+            new EOLTransition(EOL_TOKEN),
+            new TokenTransition(TAG_TOKEN),
+            new Lex.EOFTransition(EOF_TOKEN),
+            new Lex.ParseExceptionTransition("unexpected characters")
+        }
+    };
+
+    static final Lex.Transition[][] LCStates = {
+        { //state 0: start
+            new SpaceTransition(0),
+            new EOLTransition(EOL_TOKEN),
+            new Lex.EOFTransition(EOF_TOKEN),
+            new Lex.DefaultTransition(Lex.ACCUMULATE_CONSUME, -1)
+        },
+        {   //grab first word
+            new Lex.StringTransition(SpaceTransition.SPACE_CHARS, Lex.IGNORE_PUTBACK, TAG_TOKEN),
+            new Lex.StringTransition(EOLTransition.EOL_CHARS, Lex.IGNORE_PUTBACK, TAG_TOKEN),
+            new Lex.EOFTransition(TAG_TOKEN),
+            new Lex.DefaultTransition(Lex.ACCUMULATE_CONSUME, -1)
+        }
+    };
+
+    public POSIXLocaleReader(final String localeDataPath, final Locale locale) {
+        this.localeDataPath = localeDataPath;
+        this.locale = locale;
+            //{{INIT_CONTROLS
+		//}}
+}
+    
+    public Hashtable parse(String fileName, byte flags) throws IOException {
+        try {
+            Hashtable table = parseNative(fileName);
+            Hashtable result = new PosixToNeutralConverter(flags, locale,fileName).convert(table);
+            return result;
+        } catch (LocaleConverter.ConversionError e) {
+            System.err.println("Internal error converting locale data");
+            return null;
+        }
+    }
+    
+    public Hashtable parseNative(String fileName) throws IOException {
+        char oldEscapeChar = EscapeTransition.setDefaultEscapeChar();
+        char oldCommentChar = EOLTransition.setDefaultCommentChar();
+        Hashtable table = new Hashtable();
+        try {
+            
+            LineCharNumberReader lines = new LineCharNumberReader(
+                new BufferedReader(
+                    new FileReader(
+                        new File(localeDataPath, fileName)
+                    )
+                )
+            );
+            PushbackReader reader = new PushbackReader(lines);
+            
+            //Shove a newline at the start of the file.  This has the affect of allowing
+            //the file to start with a comment, since the parser only allows comments as 
+            //part of an EOL
+            reader.unread('\n');
+
+            String sectionTag = seekLC(reader);
+            while (sectionTag != null) {
+                try {
+                    parseSection(table, reader, sectionTag);
+                } catch (Lex.ParseException e) {
+                    System.err.println("ERROR parsing: "+e.reason);
+                    System.err.println("         Line: "+lines.getLineNumber());
+                    System.err.println("         char: "+lines.getCharNumber());
+                    seekEND(reader);
+                    System.err.println("Skipped to line: "+(lines.getLineNumber()+1));
+                }
+                sectionTag = seekLC(reader);
+            }
+        } finally {
+            EscapeTransition.setEscapeChar(oldEscapeChar);
+            EOLTransition.setCommentChar(oldCommentChar);
+        }
+        return table;
+    }
+    
+    private void parseSection(Hashtable table, PushbackReader reader, String sectionTag) throws IOException {
+        if (sectionTag.equals("LC_CTYPE")) {
+            parseCTYPE(table, reader);
+        } else if (sectionTag.equals("LC_COLLATE")) {
+            parseCOLLATE(table, reader);
+        } else if (sectionTag.equals("LC_MONETARY")) {
+            parseLC(table, reader, sectionTag);
+        } else if (sectionTag.equals("LC_NUMERIC")) {
+            parseLC(table, reader, sectionTag);
+        } else if (sectionTag.equals("LC_TIME")) {
+            parseLC(table, reader, sectionTag);
+        } else if (sectionTag.equals("LC_MESSAGES")) {
+            parseLC(table, reader, sectionTag);
+        }else if(sectionTag.equals("LC_MEASUREMENT")){
+            parseLC(table, reader, sectionTag);
+        }else if(sectionTag.equals("LC_ADDRESS")){
+            parseLC(table, reader, sectionTag);
+        }else if(sectionTag.equals("LC_PAPER")){
+            parseLC(table, reader, sectionTag);
+        }else if(sectionTag.equals("LC_NAME")){
+            parseLC(table, reader, sectionTag);
+        }else if(sectionTag.equals("LC_IDENTIFICATION")){
+            parseLC(table, reader, sectionTag);
+        }else if(sectionTag.equals("LC_TELEPHONE")){
+            parseLC(table, reader, sectionTag);
+            
+        }else {
+            System.out.println("Unrecognised section:"+sectionTag);
+            System.out.println("Default parsing applied.");
+            parseLC(table, reader, sectionTag);
+        }
+    }
+
+    private PushbackReader createParserInput(String localeName) throws IOException {
+        PushbackReader reader = new PushbackReader(
+            new BufferedReader(
+                new FileReader(
+                    new File(localeDataPath, localeName)
+                )
+            )
+        );
+        //Shove a newline at the start of the file.  This has the affect of allowing
+        //the file to start with a comment, since the parser only allows comments as 
+        //part of an EOL
+        reader.unread('\n');
+        return reader;
+    }
+    
+    private String seekLC(PushbackReader reader) throws IOException {
+        Lex p = new Lex(LCStates, reader);
+        final String LC = "LC_";
+        int s = p.nextToken();
+        while ((s != EOF_TOKEN)) {
+            if (s == TAG_TOKEN) {
+                if (p.dataStartsWith(LC)) {
+                    String tag = p.getData();
+                    do {
+                        s = p.nextToken();
+                    } while (s != EOL_TOKEN && s != EOF_TOKEN);
+                    return tag;
+                } else if (p.dataEquals("escape_char")) {
+                    s = p.nextToken();
+                    if (s == TAG_TOKEN || p.getData().length() != 1) {
+                        String escape_char = p.getData();
+                        EscapeTransition.setEscapeChar(escape_char.charAt(0));
+                    } else {
+                        System.out.println("Error in escape_char directive.  Directive ignored.");
+                    }
+                } else if (p.dataEquals("comment_char")) {
+                    s = p.nextToken();
+                    if (s == TAG_TOKEN || p.getData().length() != 1) {
+                        String comment_char = p.getData();
+                        EOLTransition.setCommentChar(comment_char.charAt(0));
+                    } else {
+                        System.out.println("Error in escape_char directive.  Directive ignored.");
+                    }
+                }
+            }
+            s = p.nextToken();
+        }
+        return null;
+    }
+
+    private boolean seekEND(PushbackReader reader) throws IOException {
+        Lex p = new Lex(LCStates, reader);
+        final String END = "END";
+        int s = p.nextToken();
+        while ((s != EOF_TOKEN)) {
+            if (s == TAG_TOKEN) {
+                if (p.dataStartsWith(END)) {
+                    do {
+                        s = p.nextToken();
+                    } while (s != EOL_TOKEN && s != EOF_TOKEN);
+                    return true;
+                }
+            }
+            s = p.nextToken();
+        }
+        return false;
+    }
+    
+    private void parseCTYPE(Hashtable table, PushbackReader reader) throws IOException {
+        Lex p = new Lex(dataStates, reader);
+        StringBuffer temp = new StringBuffer();
+        int s = p.nextToken();
+        if ((s == TAG_TOKEN) && p.dataEquals("copy")) {
+            p.accept(TAG_TOKEN);
+            parseCopy("LC_CTYPE", p.getData(), table);
+            p.accept(EOL_TOKEN);
+            p.accept(TAG_TOKEN, "END");
+            p.accept(TAG_TOKEN, "LC_CTYPE");
+        } else {
+            while ((s == TAG_TOKEN) && !p.dataEquals("END")) {  
+                String key = p.getData();
+                temp.setLength(0);
+                p.accept(TAG_TOKEN);
+                p.appendDataTo(temp);
+                s = p.nextToken();
+                while (s == SEPARATOR_TOKEN) {
+                    p.accept(TAG_TOKEN);
+                    p.appendDataTo(temp);
+                    s = p.nextToken();
+                }
+                if (s != EOL_TOKEN) {
+                    throw new IOException();
+                } else {
+                    table.put(key, temp.toString());
+                }
+                s = p.nextToken();
+            }
+            p.accept(TAG_TOKEN, "LC_CTYPE");
+        }
+    }
+    
+    private void parseCopy(String section, String toCopy, Hashtable t) throws IOException {
+        char oldEscapeChar = EscapeTransition.setDefaultEscapeChar();
+        char oldCommentChar = EOLTransition.setDefaultCommentChar();
+        try {
+            PushbackReader reader = createParserInput(toCopy);
+            String tag = seekLC(reader);
+            while (tag != null && !section.equals(tag)) {
+                tag = seekLC(reader);
+            }
+            if (tag != null) {
+                parseSection(t, reader, section);
+            } else {
+                //hey {jf} - is this an error?
+            }
+        } finally {
+            EscapeTransition.setEscapeChar(oldEscapeChar);
+            EOLTransition.setCommentChar(oldCommentChar);
+        }
+    }
+    
+    private void parseLC(Hashtable t, PushbackReader reader, String sectionTag) throws IOException {
+        Lex input = new Lex(dataStates, reader);
+        input.accept(TAG_TOKEN);
+        if (input.dataEquals("copy")) {
+            input.accept(TAG_TOKEN);
+            parseCopy(sectionTag, input.getData(), t);          
+        } else {
+            while ((input.getState() == TAG_TOKEN) && !input.dataEquals("END")) {   
+                String label = input.getData();
+                Vector values = new Vector();
+                input.accept(TAG_TOKEN);
+                String temp = input.getData();
+                values.addElement(temp);
+                while (input.nextToken() == SEPARATOR_TOKEN) {
+                    input.accept(TAG_TOKEN);
+                    String value = input.getData();
+                    values.addElement(value);
+                }
+                if (values.size() > 1) {
+                    String[] data = new String[values.size()];
+                    values.copyInto(data);
+                    t.put(label, data);
+                } else {
+                    t.put(label, values.elementAt(0));
+                }
+                if (input.getState() != EOL_TOKEN) {
+                    System.out.println("Extraneous text after label: " +label);
+                    throw new IOException();
+                }
+                input.nextToken();
+            }
+        }
+        input.accept(TAG_TOKEN, sectionTag);
+    }
+    
+    private void parseCOLLATE(Hashtable table, PushbackReader reader) 
+            throws IOException {
+        PosixCharMap map = new PosixCharMap(SymbolTransition.getCharMap());
+        SymbolTransition.setCharMap(map);
+        try {
+            Lex input = new Lex(dataStates, reader);
+            PosixCollationBuilder builder = new PosixCollationBuilder(map);
+
+            int s = input.nextToken();
+            while (s == EOL_TOKEN) s = input.nextToken();
+            while (s == TAG_TOKEN) {
+                if (input.dataEquals("END")) {
+                    break;
+                } else if (input.dataEquals("UNDEFINED")) {
+                    System.err.println("WARNING: Undefined characters will sort last.");
+                    s = input.nextToken();
+                    while (s != EOF_TOKEN && s != EOL_TOKEN) {
+                        s = input.nextToken();
+                    }
+                } else if (input.dataEquals("copy")) {
+                    //copy collation rules from another locale
+                    input.accept(TAG_TOKEN);
+                    String toCopy = input.getData();
+                    input.accept(EOL_TOKEN);
+                    parseCopy("LC_COLLATE", toCopy, table);
+                    System.err.println("Copying collation rules from "+toCopy+"...");
+                } else if (input.dataEquals("...")) {
+                    //fill the space between the last element and the next element
+                    System.err.println("ERROR: Ellipsis not supported in collation rules.");
+                    System.err.println("       Line ignored");
+                } else if (input.dataEquals("replace-after")) {
+                    System.err.println("ERROR: Replace-after not supported in collation rules.");
+                    System.err.println("       Skipping until next replace-end.");
+                    s = input.nextToken();
+                    while (s != EOF_TOKEN) {
+                        if (s == TAG_TOKEN && input.dataEquals("replace-end")) {
+                            input.accept(EOL_TOKEN);
+                            break;
+                        }
+                    }
+                } else if (input.dataEquals("collating-element")) {
+                    //Several characters should sort as a single element.
+                    input.accept(TAG_TOKEN);    //get the symbol
+                    String key = input.getData();
+                    input.accept(TAG_TOKEN, "from");
+                    input.accept(TAG_TOKEN);    //get the expansion
+                    String value = input.getData();
+                    builder.defineContraction(key, value);
+                    input.accept(EOL_TOKEN);
+                } else if (input.dataEquals("collating-symbol")) {
+                    //define a weight symbol.  This symbol does not represent a character.
+                    //It's only used for comparison purposes.  We define the character
+                    //value for this character to be in the private area since our
+                    //collation stuff doesn't sort that area.
+                    input.accept(TAG_TOKEN);
+                    builder.defineWeightSymbol(input.getData());
+                    input.accept(EOL_TOKEN);
+                } else if (input.dataEquals("order_start")) {
+                    Vector tempVector = new Vector();
+                    //start reading collation ordering rules. 
+                    input.accept(TAG_TOKEN);
+                    tempVector.addElement(input.getData());
+                    s = input.nextToken();
+                    while (s == SEPARATOR_TOKEN) {
+                        input.accept(TAG_TOKEN);
+                        tempVector.addElement(input.getData());
+                        s = input.nextToken();
+                    }
+                    String[] order_start = new String[tempVector.size()];
+                    tempVector.copyInto(order_start);
+                    table.put("sort_order", order_start);
+                } else if (input.dataEquals("order_end")) {
+                    //build a list of ordered collation elements
+                    input.accept(EOL_TOKEN);
+                    SortedVector order = builder.getSortOrder();
+                    PosixCollationBuilder.CollationRule[] ruleSource = 
+                        new PosixCollationBuilder.CollationRule[order.size()];
+                    order.copyInto(ruleSource); //copy into an array so we can add it to the output table
+                        //this is only for information purposes so we can retrieve the source of the
+                        //collationItems with the weights if we want them later
+                    table.put("posix_sort_rules", ruleSource);
+                } else {
+                    //add a collation item to the list
+                    builder.addRule(input.getData());
+                    s = input.nextToken();
+                    while (s == TAG_TOKEN) {
+                        //we're expecting weights here
+                        builder.addWeight(input.getData());
+                        s = input.nextToken();
+                        if (s == SEPARATOR_TOKEN) {
+                            s = input.nextToken();
+                        }
+                    }
+                }
+                s = input.nextToken();
+            }
+            input.accept(TAG_TOKEN, "LC_COLLATE");
+        } finally {
+            SymbolTransition.setCharMap(map.getParent());
+        }
+    }
+    //{{DECLARE_CONTROLS
+	//}}
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/PosixCharMap.java b/src/com/ibm/icu/dev/tool/localeconverter/PosixCharMap.java
new file mode 100755
index 0000000..ff945e4
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/PosixCharMap.java
@@ -0,0 +1,468 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/PosixCharMap.java,v $ 
+ * $Date: 2002/06/20 01:17:12 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+ 
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+
+public class PosixCharMap {
+    private Hashtable table = new Hashtable();
+    private Hashtable backTable = null;
+    private PosixCharMap parentMap;
+    private String encoding;
+    
+    public PosixCharMap() {
+    }
+    
+    public PosixCharMap(PosixCharMap parent) {
+        parentMap = parent;
+    }
+
+    public PosixCharMap(String fileName) throws IOException {
+        this(new FileReader(fileName));
+    }
+
+    public PosixCharMap(String pathName, String fileName) throws IOException {
+        this(new FileReader(new File(pathName, fileName)));
+    }
+
+    public PosixCharMap(Reader inputReader) throws IOException {
+        load(new BufferedReader(inputReader));
+    }
+    
+    public PosixCharMap getParent() {
+        return parentMap;
+    }
+    
+    public void setParent(PosixCharMap parent) {
+        parentMap = parent;
+    }
+
+    public void load(String pathName, String fileName) throws IOException {
+        load(new File(pathName, fileName),"");
+    }
+    public void load(String pathName, String fileName, String enc)throws IOException{
+        load(new File(pathName, fileName),enc);
+    }
+    
+    public void load(File file, String enc) throws IOException {
+        encoding =enc;
+        load(new BufferedReader(new FileReader(file)));
+    }
+    /* This map must be in ASCENDING ORDER OF THE ESCAPE CODE */
+    static private final char[] UNESCAPE_MAP = {
+        /*"   0x22, 0x22 */
+        /*'   0x27, 0x27 */
+        /*?   0x3F, 0x3F */
+        /*\   0x5C, 0x5C */
+        /*a*/ 0x61, 0x07,
+        /*b*/ 0x62, 0x08,
+        /*f*/ 0x66, 0x0c,
+        /*n*/ 0x6E, 0x0a,
+        /*r*/ 0x72, 0x0d,
+        /*t*/ 0x74, 0x09,
+        /*v*/ 0x76, 0x0b
+    };
+        /**
+     * Convert an escape to a 32-bit code point value.  We attempt
+     * to parallel the icu4c unesacpeAt() function.
+     * @param offset16 an array containing offset to the character
+     * <em>after</em> the backslash.  Upon return offset16[0] will
+     * be updated to point after the escape sequence.
+     * @return character value from 0 to 10FFFF, or -1 on error.
+     */
+    public static int unescapeAt(String s, int[] offset16) {
+        int c;
+        int result = 0;
+        int n = 0;
+        int minDig = 0;
+        int maxDig = 0;
+        int bitsPerDigit = 4;
+        int dig;
+        int i;
+
+        /* Check that offset is in range */
+        int offset = offset16[0];
+        int length = s.length();
+        if (offset < 0 || offset >= length) {
+            return -1;
+        }
+
+        /* Fetch first UChar after '\\' */
+        c = UTF16.charAt(s, offset);
+        offset += UTF16.getCharCount(c);
+
+        /* Convert hexadecimal and octal escapes */
+        switch (c) {
+        case 'u':
+            minDig = maxDig = 4;
+            break;
+        case 'U':
+            minDig = maxDig = 8;
+            break;
+        case 'x':
+            minDig = 1;
+            maxDig = 2;
+            break;
+        default:
+            dig = UCharacter.digit(c, 8);
+            if (dig >= 0) {
+                minDig = 1;
+                maxDig = 3;
+                n = 1; /* Already have first octal digit */
+                bitsPerDigit = 3;
+                result = dig;
+            }
+            break;
+        }
+        if (minDig != 0) {
+            while (offset < length && n < maxDig) {
+                // TEMPORARY
+                // TODO: Restore the char32-based code when UCharacter.digit
+                // is working (Bug 66).
+
+                //c = UTF16.charAt(s, offset);
+                //dig = UCharacter.digit(c, (bitsPerDigit == 3) ? 8 : 16);
+                c = s.charAt(offset);
+                dig = Character.digit((char)c, (bitsPerDigit == 3) ? 8 : 16);
+                if (dig < 0) {
+                    break;
+                }
+                result = (result << bitsPerDigit) | dig;
+                //offset += UTF16.getCharCount(c);
+                ++offset;
+                ++n;
+            }
+            if (n < minDig) {
+                return -1;
+            }
+            offset16[0] = offset;
+            return result;
+        }
+
+        /* Convert C-style escapes in table */
+        for (i=0; i<UNESCAPE_MAP.length; i+=2) {
+            if (c == UNESCAPE_MAP[i]) {
+                offset16[0] = offset;
+                return UNESCAPE_MAP[i+1];
+            } else if (c < UNESCAPE_MAP[i]) {
+                break;
+            }
+        }
+
+        /* If no special forms are recognized, then consider
+         * the backslash to generically escape the next character. */
+        offset16[0] = offset;
+        return c;
+    }
+
+    /**
+     * Convert all escapes in a given string using unescapeAt().
+     * @exception IllegalArgumentException if an invalid escape is
+     * seen.
+     */
+    public static String unescape(String s) {
+        StringBuffer buf = new StringBuffer();
+        int[] pos = new int[1];
+        for (int i=0; i<s.length(); ) {
+            char c = s.charAt(i++);
+            if (c == '\\') {
+                pos[0] = i;
+                int e = unescapeAt(s, pos);
+                if (e < 0) {
+                    throw new IllegalArgumentException("Invalid escape sequence " +
+                                                       s.substring(i-1, Math.min(i+8, s.length())));
+                }
+                UTF16.append(buf, e);
+                i = pos[0];
+            } else {
+                buf.append(c);
+            }
+        }
+        return buf.toString();
+    }
+
+    public void load(Reader inputReader) throws IOException {
+        PosixCharMap oldMap = SymbolTransition.getCharMap();
+        SymbolTransition.setCharMap(null);
+        try {
+            final int TOKEN = 1;
+            final int EOF = 2;
+            final int EOL = 3;
+            final int RANGE = 4;
+            final Lex.Transition[][] states1 = {
+                { //state 0: start
+                    new SpaceTransition(0),
+                    new EOLTransition(EOL),
+                    new Lex.EOFTransition(EOF),
+                    new Lex.DefaultTransition(Lex.ACCUMULATE_CONSUME, -1)
+                },
+                {   //grab first word
+                    new Lex.StringTransition(SpaceTransition.SPACE_CHARS, Lex.IGNORE_CONSUME, TOKEN),
+                    new Lex.StringTransition(EOLTransition.EOL_CHARS, Lex.IGNORE_CONSUME, TOKEN),
+                    new Lex.EOFTransition(TOKEN),
+                    new Lex.DefaultTransition(Lex.ACCUMULATE_CONSUME, -1)
+                }
+            };
+
+            final Lex.Transition[][] states2 = {
+                {   //These states only return <symbols>.  All
+                    //other text is ignored.
+                    new Lex.EOFTransition(EOF),
+                    new EOLTransition(EOL),
+                    new SymbolTransition(TOKEN),
+                    new SpaceTransition(0),
+                    new RangeTransition(RANGE),
+                    new Lex.DefaultTransition(Lex.ACCUMULATE_CONSUME, 0)
+                },
+            };
+        
+            PushbackReader input = new PushbackReader(inputReader);
+            Lex p = new Lex(states1, input);
+            int state;
+            do {
+                state = p.nextToken();
+            } while ((state != EOF) && !p.dataEquals("CHARMAP"));
+            p.accept(EOL);
+            if (state != EOF ) {
+                p = new Lex(states2, input);
+                state = p.nextToken();
+                while (state != EOF ) {
+
+                    String key = p.getData();
+                    if(p.dataEquals("ENDCHARMAP")){
+                        break;
+                    }
+                    state = p.nextToken();
+                    while (state == EOL) {
+                        if(p.dataEquals("ENDCHARMAP")){
+                            break;
+                        }
+                        String data = unescape(p.getData());
+                        data.trim();
+                        if (data.startsWith("<U") || data.startsWith("#U")) {
+                            String numData = data.substring(2,data.length()-1);
+                            int digit = Integer.parseInt(numData, 16);
+                            defineMapping(key, ""+(char)digit);
+                        }else if(data.startsWith("\\x")){
+                            byte[] encData = new byte[6];
+                            int num = hexToByte(data,encData);
+                            String tData = new String(encData,0,num,encoding);
+                            defineMapping(key,tData);
+                        }
+                        state = p.nextToken();
+                        key=p.getData();
+                     }
+                     // we come here only if there is a range transition
+                     if( state ==RANGE){
+                        
+                        String begin = key;
+                        
+                        state = p.nextToken();
+                        String end = p.getData();
+                        
+                        state = p.nextToken();
+                        String data = p.getData();
+                        data.trim();
+                        byte[] encData = new byte[6];
+                        int num = hexToByte(data,encData);
+                        String tData = new String(encData,0,num,encoding);
+                        String stringVal;
+                        int[] val = getInt(begin);
+                        int beginRange = val[1];
+                        val =getInt(end);                     
+                        int endRange = val[1];
+                        stringVal = key.substring(0,val[0]);
+                        int digit = (int)(char)tData.charAt(0);
+                        while(beginRange <= endRange){
+                            defineMapping((stringVal+beginRange+">"),""+(char)digit++);
+                            beginRange++;
+                        }
+                        
+                        state = p.nextToken();
+                        key=p.getData();
+                     }                       
+                        
+                    //state = p.nextToken();
+                }
+            }
+        } catch (EOFException e) {
+        } finally {
+            SymbolTransition.setCharMap(oldMap);
+        }
+    }
+    public int[] getInt(String data){
+        int i=0;
+        int[] retVal = new int[2];
+        int len =data.length();
+        while(i< len){
+            if((data.charAt(i))-0x30 < (0x39-0x30)){
+                break;
+            }
+            i++;
+        }
+        String sub =data.substring(i,len-1);
+        retVal[0] =i;
+        retVal[1]=Integer.parseInt(sub,10);
+        return retVal;
+    }
+    public int hexToByte(String data, byte[] retval){
+        String tData = data;
+        int i=0;
+        for(i=0;i < data.length()/4; i++){
+            if(tData.charAt(0)=='\\' && tData.charAt(1)=='x'){
+                String numData = tData.substring(2,4);
+                retval[i] = (byte) Integer.parseInt(numData,16);
+                tData = tData.substring(4,tData.length());
+            }
+        }       
+        return i;
+    }        
+    public void defineMapping(String from, String to) {
+        table.put(from, to);
+        backTable = null;
+    }
+
+    public void undefineMapping(String from) {
+        table.remove(from);
+        backTable = null;
+    }
+
+    public void swap() {
+        Hashtable newTable = new Hashtable();
+        Enumeration enum = table.keys();
+        while (enum.hasMoreElements()) {
+            String key = (String)enum.nextElement();
+            String code = (String)table.get(key);
+            
+            String newKey = toSymbol(code);
+            String newCode = toLiteral(key);
+            String prevCode = (String)newTable.get(newKey);
+            if (prevCode == null || prevCode.compareTo(newCode) > 0) {
+                newTable.put(newKey, newCode);
+            }
+        }
+        table = newTable;
+    }
+    
+    private String toLiteral(String code) {
+        String data = code.substring(2,code.length()-1);
+        int digit = Integer.parseInt(data, 16);
+        return "" + (char)digit;
+    }
+    
+    private String toSymbol(String code) {
+        StringBuffer escapeBuffer = new StringBuffer();
+        escapeBuffer.append(">");
+        for (int i = 0; i < code.length(); i++) {
+            int value = ((int)code.charAt(i)) & 0xFFFF;
+            while ((value > 0) || (escapeBuffer.length() < 5)) {
+                char digit = Character.forDigit(value % 16, 16);
+                escapeBuffer.append(digit);
+                value >>= 4;
+            }
+        }
+        escapeBuffer.append("U<");
+        escapeBuffer.reverse();
+        return escapeBuffer.toString();
+    }
+    
+    public void dump(PrintStream out) {
+        StringBuffer escapeBuffer = new StringBuffer();
+        Enumeration enum = table.keys();
+        while (enum.hasMoreElements()) {
+            String key = (String)enum.nextElement();
+            String code = (String)table.get(key);
+            out.print(key);
+            out.print("       <U");
+            for (int i = 0; i < code.length(); i++) {
+                int value = ((int)code.charAt(i)) & 0xFFFF;
+                escapeBuffer.setLength(0);
+                while ((value > 0) || (escapeBuffer.length() < 4)) {
+                    char digit = Character.forDigit(value % 16, 16);
+                    escapeBuffer.append(digit);
+                    value >>= 4;
+                }
+                escapeBuffer.reverse();
+                out.print(escapeBuffer.toString());
+            }
+            out.println(">");
+        }
+    }
+
+    public String mapKey(final String key) {
+        String result = (String)table.get(key);
+        if (result == null) {
+            if (parentMap != null) {
+                result = parentMap.mapKey(key);
+            } else {
+                result = key;
+            }
+        }
+        return result;
+    }
+    
+    public String backmapValue(final String value) {
+        if (backTable == null) {
+            backTable = new Hashtable();
+            Enumeration enum = table.keys();
+            while (enum.hasMoreElements()) {
+                String key = (String)enum.nextElement();
+                String val = (String)table.get(key);
+                backTable.put(val, key);
+            }
+        }
+        String result = (String)backTable.get(value);
+        if (result == null) {
+            if (parentMap != null) {
+                result = parentMap.backmapValue(value);
+            } else {
+                result = value;
+            }
+        }
+        return result;      
+    }
+
+    public Enumeration keys() {
+        return table.keys();
+    }
+    
+    public Enumeration elements() {
+        return table.elements();
+    }
+    
+    public static void main(String args[]) {
+        try {
+            PosixCharMap map1 = new PosixCharMap(
+                "C:\\projects\\com\\taligent\\localeconverter\\CharMaps",
+                "IBM-1129.UPMAP100.txt");
+            map1.swap();
+            map1.dump(System.out);
+        
+            SymbolTransition.setCharMap(map1);
+            System.out.println(); System.out.println();
+        
+            //PosixCharMap map = new PosixCharMap("C:\\projects\\data\\ISO-8859-1.html");
+            PosixCharMap map = new PosixCharMap(
+                "C:\\projects\\com\\taligent\\localeconverter\\CharMaps",
+                "ibm1129.txt");
+            map.dump(System.out);
+            System.out.println();
+        } catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/PosixCollationBuilder.java b/src/com/ibm/icu/dev/tool/localeconverter/PosixCollationBuilder.java
new file mode 100755
index 0000000..c112ab3
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/PosixCollationBuilder.java
@@ -0,0 +1,350 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/PosixCollationBuilder.java,v $ 
+ * $Date: 2002/02/16 03:05:30 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+ 
+package com.ibm.icu.dev.tool.localeconverter;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.io.*;
+import java.util.*;
+
+class PosixCollationBuilder {
+    private static final int MAX_WEIGHTS = 4;
+    private static final int MAX_COMPOSITION = 4;
+    private static int nextCharNumber = 1;
+    private Hashtable weightSymbols = new Hashtable();
+    private Hashtable contractions = new Hashtable();
+    private Hashtable rules = new Hashtable();
+    private CollationRule lastRule = null;
+    private PosixCharMap map;
+    private SortedVector order;
+    private static int FIRST_WEIGHT_CHAR = 0x0000F7FF;
+    private int nextWeightChar = FIRST_WEIGHT_CHAR;
+    private CollationRule ignoreRule;   //rule for the collating-symbol IGNORE
+    
+    public class CollationRule {
+        int charNumber;
+        String value;
+        int nextWeight = 0;
+        String[] weightSource = new String[MAX_WEIGHTS];
+        int weight[][] = null;
+        StringBuffer source = new StringBuffer();
+        
+        public CollationRule(String symbol) {
+            charNumber= nextCharNumber++;
+            value = symbol;
+            for (int i = 0; i < MAX_WEIGHTS; i++) {
+                weightSource[i] = symbol;
+            }
+            source.append(map.backmapValue(symbol));
+            source.append("\t\t");
+        }
+        private CollationRule(CollationRule other, int composition) {
+            charNumber = other.charNumber;
+            value = other.value;
+            nextWeight = other.nextWeight;
+            for (int i = 0; i < MAX_WEIGHTS; i++) {
+                String source = other.weightSource[i];
+                if (source.length() > composition) {
+                    weightSource[i] = ""+source.charAt(composition);
+                } else {
+                    weightSource[i] = value;
+                }
+            }
+        }
+       //HexToUnicodeTransliterator myTranslit = new HexToUnicodeTransliterator("<U###0>");
+        public void addWeight(String symbol) {
+         //   ReplaceableString tSymbol = new ReplaceableString(symbol);
+           // myTranslit.transliterate(tSymbol);
+                //limit the size of a single weight
+            if (symbol.length() > MAX_COMPOSITION) {
+                System.err.println("WARNING: Weights of composition greater than "+MAX_COMPOSITION+" were truncated.");
+                symbol = symbol.substring(0, MAX_COMPOSITION);
+            }
+                //limit the number of weights
+            if (nextWeight < MAX_WEIGHTS) {
+                if (nextWeight > 0) {
+                    source.append(";");
+                }
+                for (int i = 0; i < symbol.length(); i++) {
+                    source.append(map.backmapValue(""+symbol.charAt(i)));
+                }
+                weightSource[nextWeight++] = symbol;
+                weight = null;
+            }
+        }
+        public int compare(CollationRule other) {
+            if (other == null) return compare(ignoreRule);
+            resolveWeights();
+            other.resolveWeights();
+            int compareSize = Math.min(getSize(), other.getSize());
+            for (int j = 0; j < compareSize; j++) {
+                for (int i = 0; i < MAX_WEIGHTS; i++) {
+                    int diff = weight[j][i] - other.weight[j][i];
+                    if (diff < 0) {
+                        return -(i+1);
+                    } if (diff > 0) {
+                        return i+1;
+                    }
+                }
+            }
+            return getSize() - other.getSize();
+        }
+        public boolean isMultiWeight() {
+            return getSize() > 1;
+        }
+        public int getSize() {
+            int size = 0;
+            for (int i = 1; i < weightSource.length; i++) {
+                size = Math.max(size, weightSource[i].length());
+            }
+            return size;
+        }
+        public CollationRule getComponent(int ndx) {
+            return new CollationRule(this, ndx);
+        }
+        public String getValue() {
+            return value;
+        }
+        public String getSymbol() {
+            String newValue = isContraction();
+            if (newValue != null) {
+                return newValue;
+            } else {
+                newValue = isWeightSymbol();
+                if (newValue != null) {
+                    return newValue;
+                } else {
+                    return value;
+                }
+            }
+        }
+        public String getSource() {
+            return source.toString();
+        }
+        private String isContraction() {
+            return (String)contractions.get(value);
+        }
+        private String isWeightSymbol() {
+            return (String)weightSymbols.get(value);
+        }
+        public CollationRule seeksToRule() {
+            CollationRule comp;
+            if (getSize() <= 1) {
+                comp = this;    //save an object creation
+            } else {
+                comp = getComponent(0);
+            }
+            int ndx = order.indexOf(comp);
+            if (ndx == 0) {
+                return this;
+            } else {
+                CollationRule exp;
+                do {
+                    exp = (CollationRule)order.elementAt(ndx--);
+                } while (ndx > 0 && exp.getSize() > 1);
+                return exp;
+            }
+        }
+        public String getExpansion() {
+            if (getSize() <= 1) {
+                return null;
+            } else {
+                StringBuffer expansion = new StringBuffer();
+                for (int j = 0; j < getSize(); j++) {
+                    CollationRule comp = getComponent(j);
+                    int ndx = order.indexOf(comp);
+                    CollationRule exp;
+                    do {
+                        exp = (CollationRule)order.elementAt(ndx--);
+                    } while (ndx >= 0 && exp.getSize() > 1);
+                    expansion.append(exp.getSymbol());
+                }
+                return expansion.toString();
+            }
+        }
+        public String toString() {
+            return source.toString();
+/*          resolveWeights();
+            StringBuffer buf = new StringBuffer();
+            buf.append(charNumber);
+            buf.append(' ');
+            buf.append(value);
+            buf.append(' ');
+            buf.append(getSymbol());
+            buf.append(' ');
+            buf.append((isWeightSymbol() != null)?"W":" ");
+            buf.append(' ');
+            for (int i = 0; i < MAX_WEIGHTS; i++) {
+                buf.append(weightSource[i]);
+                buf.append(' ');
+            }
+            for (int i = 0; i < getSize(); i++) {
+                buf.append("[ ");
+                for (int j = 0; j < MAX_WEIGHTS; j++) {
+                    int w = weight[i][j];
+                    buf.append(w);
+                    buf.append(' ');
+                }
+                buf.append(']');
+            }
+            return buf.toString();
+*/
+        }
+        private void resolveWeights() {
+            if (weight == null) {
+                weight = new int[MAX_COMPOSITION][MAX_WEIGHTS];
+                for (int j = 0; j < MAX_WEIGHTS; j++) {
+                    String symbol = weightSource[j];
+                    if (symbol.length() <= 1) {
+                        weight[0][j] = ordinalityOf(symbol);
+                    } else {                
+                        for (int i = 0; i < symbol.length(); i++) {
+                            char c = symbol.charAt(i);
+                            weight[i][j] = ordinalityOf(""+c);
+                        }
+                    }
+                }
+            }
+        }
+    }
+    
+    public PosixCollationBuilder(PosixCharMap map) {
+        this.map = map;
+        String ignoreSymbol = defineWeightSymbol("IGNORE");
+        ignoreRule = new CollationRule(ignoreSymbol);
+        rules.put(ignoreSymbol, ignoreRule);
+        lastRule = ignoreRule;
+            //{{INIT_CONTROLS
+		//}}
+}
+
+    public String defineWeightSymbol(String symbol) {
+        order = null;
+        String c = nextFreeWeightChar();
+        map.defineMapping(symbol, c);
+        weightSymbols.put(c, symbol);
+        weightSymbols.put(symbol, c);
+        return c;
+    }
+    
+    public String defineContraction(String symbol, String value) {
+        order = null;
+        String c = nextFreeWeightChar();
+        map.defineMapping(symbol, c);
+        contractions.put(c, value);
+        return c;
+    }
+    
+    private String nextFreeWeightChar() {
+        String result = "";
+        String mappedSource;
+        do {
+            result = ""+(char)nextWeightChar--;
+            mappedSource = map.backmapValue(result);
+        } while (result != mappedSource);
+        return result;
+    }
+    
+    public int ordinalityOf(String symbol) {
+//        HexToUnicodeTransliterator newTranslit = new HexToUnicodeTransliterator();
+//        ReplaceableString tSymbol = new ReplaceableString(symbol);
+//        newTranslit.transliterate(tSymbol);
+        CollationRule w = (CollationRule)rules.get(symbol);
+        if (w != null) {
+            return w.charNumber;
+        } else {
+            System.err.print("ERROR: Weight symbol not found: ");
+            for (int i = 0 ; i < symbol.length(); i++) {
+                char c = symbol.charAt(i);
+                System.err.print("\\u");
+                System.err.print(HEX_DIGIT[(c & 0x0F000) >> 12]); // HEX_DIGIT works for octal
+                System.err.print(HEX_DIGIT[(c & 0x0F00) >> 8]); // HEX_DIGIT works for octal
+                System.err.print(HEX_DIGIT[(c & 0x00F0) >> 4]);
+                System.err.println(HEX_DIGIT[(c & 0x000F)]);
+            }
+            System.err.println("       Weight given maximum possible value.");
+            return Integer.MAX_VALUE;
+        }
+    }
+//    HexToUnicodeTransliterator myTranslit = new HexToUnicodeTransliterator("<U###0>");
+    public void addRule(String symbol) {
+  //      ReplaceableString tSymbol = new ReplaceableString(symbol);
+   //     myTranslit.transliterate(tSymbol);
+        if (symbol.length() > 1) {
+            System.err.println("WARNING: Undefined element '"+symbol+"'.  collating-symbol generated.");
+            symbol = defineWeightSymbol(symbol);
+        }
+    
+        order = null;
+        lastRule = new CollationRule(symbol);
+        rules.put(symbol, lastRule);
+    }
+    
+    public void addRule(CollationRule rule) {
+        order = null;
+        lastRule = rule;
+        rules.put(rule.value, rule);
+    }
+    
+    public void addWeight(String weight) {
+        if (weight.length() > 1) {
+            //check to see if it's a bogus weight symbol.
+            weight = map.mapKey(weight);
+        }
+        order = null;
+        lastRule.addWeight(weight);
+    }
+
+    public Enumeration getRules() {
+        return rules.elements();
+    }
+
+    public SortedVector getSortOrder() {
+        if (order == null) {
+            order = new SortedVector(
+                new Comparator() {
+                    public int compare(final Object i, final Object j) {
+                        final CollationRule o1 = (CollationRule)i;
+                        final CollationRule o2 = (CollationRule)j;
+                        final boolean w1 = o1.isWeightSymbol() != null;
+                        final boolean w2 = o2.isWeightSymbol() != null;
+                            //sort weights first
+                        if (w1 && !w2) {
+                            return -1;
+                        } else if (!w1 && w2) {
+                            return 1;
+                        } else {
+                            return o1.compare(o2);
+                        }
+                    }
+                }
+            );
+            order.addElements(rules.elements());
+                //remove weight symbols from the list
+            int i;
+            for (i = 0; i < order.size(); i++) {
+                CollationRule r = (CollationRule)order.elementAt(i);
+                if (r.isWeightSymbol() == null) {
+                    break;
+                }
+            }
+            order.removeElements(0, i);
+        }
+        return order;
+    }
+
+    static final char[] HEX_DIGIT = {'0','1','2','3','4','5','6','7',
+                     '8','9','A','B','C','D','E','F'};
+    //{{DECLARE_CONTROLS
+	//}}
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/PosixToNeutralConverter.java b/src/com/ibm/icu/dev/tool/localeconverter/PosixToNeutralConverter.java
new file mode 100755
index 0000000..6bbb168
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/PosixToNeutralConverter.java
@@ -0,0 +1,1248 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/PosixToNeutralConverter.java,v $ 
+ * $Date: 2002/02/16 03:05:31 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.io.*;
+import java.util.*;
+
+public class PosixToNeutralConverter extends LocaleConverter {
+    public static final byte LC_CTYPE           = 0x01;
+    public static final byte LC_TIME            = 0x02;
+    public static final byte LC_NUMERIC         = 0x04;
+    public static final byte LC_MONETARY        = 0x08;
+    public static final byte LC_MESSAGES        = 0x10;
+    public static final byte LC_MEASUREMENT     = 0x11;
+    public static final byte LC_ADDRESS         = 0x12;
+    public static final byte LC_PAPER           = 0x13;
+    public static final byte LC_NAME            = 0x14;
+    public static final byte LC_IDENTIFICATION  = 0x15;
+    public static final byte LC_TELEPHONE       = 0x16;
+    public static final HexToUnicodeTransliterator myTranslit = new HexToUnicodeTransliterator();
+    
+    private static final byte[] masks = { 
+        LC_CTYPE, LC_TIME, LC_NUMERIC, LC_MONETARY, LC_MESSAGES,
+        LC_MEASUREMENT,LC_ADDRESS,LC_PAPER,LC_NAME,LC_IDENTIFICATION,
+        LC_TELEPHONE
+        };
+
+    private static final String[][] props = {
+        //LC_CTYPE
+        { 
+            "upper", "lower", "alpha", "digit", "space", "cntrl", 
+            "punct", "graph", "print", "xdigit", "blank", 
+            "toupper", "tolower" 
+        },
+        //LC_TIME
+        {
+            "abday", "day", "abmon", "mon", "d_t_fmt", "d_ftm", "t_fmt", 
+            "am_pm", "t_fmt_ampm", "era", "era_year", "era_d_fmt", "alt_digits"
+        },
+        //LC_NUMERIC
+        {
+            "decimal_point", "thousands_sep", "grouping"
+        },
+        //LC_MONETARY
+        {
+            "int_curr_symbol", "currency_symbol", "mon_decimal_point",
+            "mon_thousands_sep", "mon_grouping", "positive_sign",
+            "negative_sign", "int_frac_digits", "frac_digits", "p_cs_precedes",
+            "p_sep_by_space", "n_cs_precedes", "n_sep_by_space", "p_sign_posn",
+        },
+        //LC_MESSAGES
+        {
+            "yesexpr", "noexpr"
+        },
+           
+        //LC_MEASUREMENT
+        {
+           "measurement"
+        },
+        //LC_ADDRESS
+        {
+           "copy","postal_fmt","country_name","country_post",
+           "country_ab2","country_ab3","country_num","country_car",
+           "country_isbn","lang_name","lang_ab","lang_term","lang_lib"
+            
+        },
+        //LC_PAPER
+        {
+            "height","width","copy"
+        },
+        //LC_NAME        
+        {
+            "copy","name_fmt","name_gen","name_miss","name_mr","name_mrs","name_ms"  
+        },
+        //LC_IDENTIFICATION
+        {
+            "title","source","address","contact","email","tel","fax","language",
+            "territory","revision ","date"     
+        },
+        //LC_TELEPHONE
+        {
+            "copy","tel_int_fmt","tel_dom_fmt","int_select","int_prefix" 
+        },
+        
+            
+    };
+    private final byte flags;
+    private final Locale locale;
+    private final Locale parentLocale;
+    private final String sfileName;
+    public PosixToNeutralConverter(byte flags, final Locale locale,final String fileName) {
+        this.flags = flags;
+        this.locale = locale;
+        this.sfileName=fileName;
+        myTranslit.applyPattern("<U###0>");
+        String language = locale.getLanguage();
+        String country = locale.getCountry();
+        String variant = "";
+        
+        int ndx = language.indexOf('_');
+        if (ndx >= 0) {
+            country = language.substring(ndx+1);
+            language = language.substring(0, ndx);
+        }
+        ndx = country.indexOf('_');
+        if (ndx >= 0) {
+            variant = country.substring(ndx);
+            country = country.substring(0, ndx);
+        }
+        
+        if ("".equals(country)) {
+            language = "";
+            variant = "";
+        } else if ("".equals(variant)) {
+            country = "";
+        }
+        
+        parentLocale = new Locale(language, country, variant);
+            //{{INIT_CONTROLS
+		//}}
+    }
+
+    protected void convert(final Hashtable result, final Hashtable source) 
+            throws ConversionError {
+//        convertMESSAGES(result,source);
+        writePosixCompData(result,source);
+        convertMEASUREMENT(result, source);
+        convertCOUNTRYNUMBER(result, source);
+        convertCOUNTRYISBNNUMBER(result, source);
+        convertLANGUAGELIB(result, source);
+        convertPAPERSIZE(result, source);
+        convertMONETARY(result, source);
+        convertNUMERIC(result, source);
+        convertTIME(result, source);
+        convertCOLLATE(result, source);
+        for (int i = 0; i < masks.length; i++) {
+            if ((flags & masks[i]) != 0) {
+                for (int j = 0; j < props[i].length; j++) {
+                    final String prop = props[i][j];
+                    final Object val = source.get(prop);
+                    if (val != null) {
+                        resultPut(result, prop, val);
+                    }
+                }
+            }
+        }
+    }
+    public String[][] clone2DArr(String[][]str2Darray){
+        String[][] newStr2DArr = new String[str2Darray.length][str2Darray[0].length]; 
+        for(int i=0; i<str2Darray.length;i++){
+            for(int j=0; j<str2Darray[i].length;j++){
+                newStr2DArr[i][j] = new String(str2Darray[i][j]);
+            }
+        }
+        return newStr2DArr;           
+    }
+    public Object[][] clone2DArr(Object[][]str2Darray){
+        Object[][] newStr2DArr = new Object[str2Darray.length][str2Darray[0].length]; 
+        for(int i=0; i<str2Darray.length;i++){
+            for(int j=0; j<str2Darray[i].length;j++){
+                newStr2DArr[i][j] = (Object)(new String((String)str2Darray[i][j]));
+            }
+        }
+        return newStr2DArr;           
+    }
+    public void writePosixCompData(final Hashtable result, final Hashtable source){        
+           
+
+            class DumpPosixData{
+                    FileOutputStream outFile;
+                    ICULocaleWriter myLocaleWriter;
+                    public DumpPosixData(String fileName){
+                        try{
+                            outFile = new FileOutputStream(fileName.concat("_PCD.txt"));
+                            myLocaleWriter=new ICULocaleWriter(new PrintStream((OutputStream)outFile));
+                        }
+                        catch(java.io.IOException e){
+                            System.out.println("File not found\n\n\n");
+                            return;
+                        } 
+                        
+                    }
+
+                    private void writePosixCompData(final Hashtable resultHash, final Hashtable source, String fileName){
+                        convertMESSAGES(resultHash,source);
+                        convertIDENTIFICATION(resultHash,source);
+                        convertNAMEFORMAT(resultHash,source);
+                        convertADDRESSFORMAT(resultHash,source);
+                        convertTELEPHONEFORMAT(resultHash,source);
+                        String euroVar = locale.getVariant();
+                        if(euroVar.equals("")){
+                            euroVar = "PCD";
+                        }else{
+                            euroVar=euroVar.concat("_PCD");
+                        }
+                        
+                        Locale myLocale = new Locale(locale.getLanguage(),locale.getCountry(),euroVar);
+                        myLocaleWriter.write(myLocale, resultHash);  
+                        
+                    }
+
+                    private void convertMESSAGES(final Hashtable result, final Hashtable source){
+                        final String[][]DEFAULT_MESSAGES = (String[][]) getDefault("Messages");
+                        final String[][] myMessages = clone2DArr(DEFAULT_MESSAGES);
+
+                        String value =(String) source.get("yesexpr");
+                        ReplaceableString temp =new ReplaceableString();
+                        if(value!=null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myMessages[0][1] = temp.toString();
+                        }
+                        value = (String) source.get("noexpr");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value); 
+                            myTranslit.transliterate(temp);
+                            myMessages[1][1] = temp.toString();
+                        }
+                       resultPut(result,"Messages",myMessages);
+                    }
+                    private void convertIDENTIFICATION(final Hashtable result, final Hashtable source){
+                        final String[][]DEFAULT_MESSAGES = (String[][]) getDefault("Identification");
+                        final String[][] myIdentification = clone2DArr(DEFAULT_MESSAGES);
+                                              
+                        String value =(String) source.get("title");
+                        ReplaceableString temp =new ReplaceableString();
+                        if(value!=null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myIdentification[0][1] = temp.toString();
+                        }                        
+                        value = (String) source.get("source");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myIdentification[1][1] = temp.toString();
+                        }
+                        value = (String) source.get("address");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myIdentification[2][1] = value;
+                        }
+                        value = (String) source.get("contact");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myIdentification[3][1] = temp.toString();
+                        }
+                        value = (String) source.get("email");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myIdentification[4][1] = temp.toString();
+                        }
+                        value = (String) source.get("tel");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myIdentification[5][1] = temp.toString();
+                        }
+                        
+                        value = (String) source.get("fax");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myIdentification[6][1] = temp.toString();
+                        }
+                        value = (String) source.get("language");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myIdentification[7][1] = temp.toString();
+                        }
+                        value = (String) source.get("territory");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myIdentification[8][1] = temp.toString();
+                        }
+                        value = (String) source.get("audience");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myIdentification[9][1] = temp.toString();
+                        }
+                        
+                        value = (String) source.get("application");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myIdentification[10][1] = temp.toString();
+                        }
+                        else
+                        value = (String) source.get("abbreviation");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myIdentification[11][1] = temp.toString();
+                        }
+                        value = (String) source.get("revision");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myIdentification[12][1] = temp.toString();
+                        }
+                        value = (String) source.get("date");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myIdentification[13][1] = temp.toString();
+                        }
+                        resultPut(result,"Identification",myIdentification);
+                    }
+                    private void convertNAMEFORMAT(final Hashtable result, final Hashtable source){
+                        final String[][]DEFAULT_MESSAGES = (String[][]) getDefault("NameFormat");
+                        final String[][] myNameFormat = clone2DArr(DEFAULT_MESSAGES);
+                        String value =(String) source.get("name_mr");
+                        ReplaceableString temp =new ReplaceableString();
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myNameFormat[2][1] = temp.toString();
+                        }
+                        value = (String) source.get("name_miss");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myNameFormat[3][1] = temp.toString();
+                        }
+                        value = (String) source.get("name_ms");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myNameFormat[6][1] = temp.toString();
+                        }
+                        value = (String) source.get("name_mrs");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myNameFormat[4][1] = temp.toString();
+                        }
+                        value = (String) source.get("name_gender");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myNameFormat[1][1] = temp.toString();
+                        }
+                        value = (String) source.get("name_fmt");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            char[] myChars= new char[100];// = temp.toString().getChars();
+                            temp.getChars(0,temp.length(),myChars,0);
+                            StringBuffer myString=new StringBuffer();
+                            int i =0;
+                            do{
+                                if(myChars[i]!='%'){
+                                    myString.append(myChars[i]);
+                                    i++;
+                                }
+                                else{
+                                    i++;
+                                    switch (myChars[i]){
+                                        case 'f' :
+                                            myString.append ("{0}");
+                                            break;
+                                        case 'F' :
+                                            myString.append("{1}");
+                                            break;
+                                        case 'g' :
+                                            myString.append("{2}");
+                                            break;
+                                        case 'G' :
+                                            myString.append("{3}");
+                                            break;
+                                        case 'l' :
+                                            myString.append( "{4}");
+                                            break;
+                                        case 'o' :
+                                            myString.append("{5}");
+                                            break;
+                                        case 'm' :
+                                            myString.append("{6}");
+                                            break;
+                                        case 'M' :
+                                            myString.append("{7}");
+                                            break;
+                                        case 'p' :
+                                            myString.append("{8}");
+                                            break;
+                                        case 's':
+                                            myString.append ("{9}");
+                                            break;
+                                        case 'S':
+                                            myString.append ("{10}");
+                                            break;
+                                        case 'd':
+                                            myString.append ("{11}");
+                                            break;
+                                        case 't':
+                                            myString.append ("{12}");
+                                            break;
+                                        default:
+                                            myString.append(myChars[i]);
+                                            break;
+                                    }
+                                    i++;
+                                   //}
+                                                                          
+                                }       
+                            }while(i<temp.length());     
+                            myNameFormat[0][1] = myString.toString();
+                        }
+                         resultPut(result,"NameFormat",myNameFormat);
+                    }
+                    private void convertADDRESSFORMAT(final Hashtable result, final Hashtable source){
+                        final String[][]DEFAULT_MESSAGES = (String[][]) getDefault("AddressFormat");
+                        final String[][] myAddressFormat =( clone2DArr(DEFAULT_MESSAGES));
+                        String value =(String) source.get("postal_fmt");
+                        ReplaceableString temp =new ReplaceableString();
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            char[] myChars= new char[100];// = temp.toString().getChars();
+                            temp.getChars(0,temp.length(),myChars,0);
+                            StringBuffer myString=new StringBuffer();
+                            int i =0;
+                            do{
+                                if(myChars[i]!='%'){
+                                    myString.append(myChars[i]);
+                                    i++;
+                                }
+                                else{
+                                    i++;
+                                    switch (myChars[i]){
+                                        case 'a' :
+                                            myString.append ("{0}");
+                                            break;
+                                        case 'f' :
+                                            myString.append("{1}");
+                                            break;
+                                        case 'd' :
+                                            myString.append("{2}");
+                                            break;
+                                        case 'b' :
+                                            myString.append("{3}");
+                                            break;
+                                        case 's' :
+                                            myString.append( "{4}");
+                                            break;
+                                        case 'h' :
+                                            myString.append("{5}");
+                                            break;
+                                        case 'N' :
+                                            myString.append("{6}");
+                                            break;
+                                        case 't' :
+                                            myString.append("{13}");
+                                            break;
+                                        case 'r' :
+                                            myString.append("{7}");
+                                            break;
+                                        case 'e':
+                                            myString.append ("{8}");
+                                            break;
+                                        case 'C':
+                                            myString.append ("{9}");
+                                            break;
+                                        case 'Z':
+                                            myString.append ("{10}");
+                                            break;
+                                        case 'T':
+                                            myString.append ("{11}");
+                                            break;
+                                        case 'z':
+                                            myString.append ("{12}");
+                                            break;
+                                        case 'c':
+                                            myString.append ("{14}");
+                                            break;
+                                        default:
+                                            myString.append(myChars[i]);
+                                            break;
+                                    }
+                                    i++;
+                                }
+        
+                            }while(i<temp.length());   
+                            myAddressFormat[0][1] = myString.toString();
+                        }
+                         resultPut(result,"AddressFormat",myAddressFormat);
+                    }
+                    private void convertTELEPHONEFORMAT(final Hashtable result, final Hashtable source){
+                        final String[][]DEFAULT_MESSAGES = (String[][]) getDefault("TelephoneFormat");
+                        final String[][] myTelephoneFormat = clone2DArr(DEFAULT_MESSAGES);
+                        String value =(String) source.get("tel_int_fmt");
+                        ReplaceableString temp =new ReplaceableString();
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            char[] myChars= new char[100];// = temp.toString().getChars();
+                            temp.getChars(0,temp.length(),myChars,0);
+                            StringBuffer myString=new StringBuffer();
+                            int i =0;
+                            do{
+                                if(myChars[i]!='%'){
+                                    myString.append(myChars[i]);
+                                    i++;
+                                }
+                                else{
+                                    i++;
+                                    switch (myChars[i]){
+                                        case 'a' :
+                                            myString.append ("{0}");
+                                            break;
+                                        case 'A' :
+                                            myString.append("{1}");
+                                            break;
+                                        case 'l' :
+                                            myString.append("{2}");
+                                            break;
+                                        case 'c' :
+                                            myString.append("{3}");
+                                            break;
+                                        case 'C' :
+                                            myString.append( "{4}");
+                                            break;
+                                        default:
+                                            myString.append(myChars[i]);
+                                            break;
+                                    }
+                                    i++;
+                                }                                        
+                            }while(i<temp.length());
+                            myTelephoneFormat[0][1] = myString.toString();
+                        }
+                        value = (String) source.get("dom_fmt");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            char[] myChars= new char[100];// = temp.toString().getChars();
+                            temp.getChars(0,temp.length(),myChars,0);
+                            StringBuffer myString=new StringBuffer();
+                            int i =0;
+                                do{
+                                if(myChars[i]!='%'){
+                                    myString.append(myChars[i]);
+                                    i++;
+                                }
+                                else{
+                                    i++;
+                                    switch (myChars[i]){
+                                        case 'a' :
+                                            myString.append ("{0}");
+                                            break;
+                                        case 'A' :
+                                            myString.append("{1}");
+                                            break;
+                                        case 'l' :
+                                            myString.append("{2}");
+                                            break;
+                                        case 'c' :
+                                            myString.append("{3}");
+                                            break;
+                                        case 'C' :
+                                            myString.append( "{4}");
+                                            break;
+                                        default:
+                                            myString.append(myChars[i]);
+                                            break;
+                                    }
+                                    i++;
+                                }                                        
+                            }while(i<temp.length());
+                            myTelephoneFormat[1][1] = myString.toString();
+                        }
+                        value = (String) source.get("int_select");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myTelephoneFormat[2][1] = temp.toString();
+                        }
+                        value = (String) source.get("int_prefix");
+                        if(value != null){
+                            temp.replace(0,temp.length(),value);
+                            myTranslit.transliterate(temp);
+                            myTelephoneFormat[3][1] = temp.toString();
+                        }
+                         resultPut(result,"TelephoneFormat",myTelephoneFormat);
+                    }
+            }
+            
+            DumpPosixData p = new DumpPosixData(sfileName);
+            Hashtable myresult = new Hashtable(20);
+            p.writePosixCompData(myresult,source,sfileName);
+    }
+    private void convertMONETARY(final Hashtable result, final Hashtable source) {
+        final String[] DEFAULT_CURRENCY_ELEMENTS = (String[])getDefault("CurrencyElements");
+        final String[] elements = (String[])DEFAULT_CURRENCY_ELEMENTS.clone();
+        String value = (String)source.get("currency_symbol");
+        //Replaceable temp = new Replaceable(value);
+       
+        if (value != null) {
+            myTranslit.transliterate(new ReplaceableString(value));
+            elements[0] = value;
+        }
+        value = (String)source.get("int_curr_symbol");
+        if (value != null) {
+             myTranslit.transliterate(new ReplaceableString(value));
+            elements[1] = value;
+        }
+        value = (String)source.get("mon_decimal_point");
+        if (value != null) {
+            myTranslit.transliterate(new ReplaceableString(value));
+            elements[2] = value;
+        }
+        resultPut(result, "CurrencyElements", elements);
+    }
+    
+
+    private void convertMEASUREMENT(final Hashtable result, final Hashtable source){
+        final String DEFAULT_MEASUREMENT =(String)getDefault("Measurement");
+        String elements = (String)DEFAULT_MEASUREMENT;
+        String value =(String) source.get("measurement");
+        if(value!=null){
+            if(value.equals("1"))
+                elements = "Metric";
+            else if(value.equals("2"))
+                elements = "American";
+            else if(value.equals("3"))
+                elements = "Other";
+        }
+        resultPut(result,"Measurement",elements);
+    }
+    private void convertCOUNTRYNUMBER (final Hashtable result, final Hashtable source){
+        final String DEFAULT_COUNTRYNUMBER =(String)getDefault("CountryNumber");
+        String elements = (String)DEFAULT_COUNTRYNUMBER;
+        String value =(String) source.get("country_num");
+        if(value!=null){
+            elements = value;
+        }
+        resultPut(result,"CountryNumber",elements);
+    }
+    private void convertCOUNTRYISBNNUMBER (final Hashtable result, final Hashtable source){
+        final String DEFAULT_COUNTRYNUMBER =(String)getDefault("CountryISBNNumber");
+        String elements = new String((String)DEFAULT_COUNTRYNUMBER);
+        String value =(String) source.get("country_num");
+        if(value!=null){
+            elements = value;
+        }
+        resultPut(result,"CountryISBNNumber",elements);
+    }
+    private void convertLANGUAGELIB (final Hashtable result, final Hashtable source){
+        final String DEFAULT_LANGUAGELIB =(String)getDefault("LanguageLibraryUse");
+        String elements =new String( (String)DEFAULT_LANGUAGELIB);
+        String value =(String) source.get("lang_lib");
+        if(value!=null){
+            elements = value;
+        }
+        resultPut(result,"LanguageLibraryUse",elements);
+    }
+    private void convertPAPERSIZE (final Hashtable result, final Hashtable source){
+        final String[][] DEFAULT_PAPERSIZE=(String[][]) getDefault("PaperSize");
+        final String[][] elements=clone2DArr(DEFAULT_PAPERSIZE);
+        String value=(String) source.get("height");
+        if (value!=null){
+            elements[0][1]= value;
+        }
+        value =  (String) source.get("width");
+        if(value!=null){
+            elements[1][1] = value;
+        }
+        elements[2][1]=(String)"mm";
+        
+        resultPut(result,"PaperSize",elements);
+    }
+    
+   /* private void convertIDENTIFICATION(final Hashtable result, final Hashtable source){
+        final String[][]DEFAULT_IDENTIFICATION =(String[][]) getDefault("Identification");
+        final String[][] elements = (String[][])DEFAULT_IDENTIFICATION.cloane();
+        
+    }*/
+    private void convertNUMERIC(final Hashtable result, final Hashtable source) {
+        //Build NumberElements data array
+        final String[] DEFAULT_NUMBER_ELEMENTS = (String[])getDefault("NumberElements");
+        //Set new number elements to a copy of the default value from the parent.
+        final String[] elements = (String[])DEFAULT_NUMBER_ELEMENTS.clone();
+        //put decimal seperator into the NumberElements array
+        String decimalPoint = (String)source.get("decimal_point");
+        if (decimalPoint != null) { //if we have a POSIX value, stomp on the default
+            elements[0] = decimalPoint;
+        }
+
+        //put thousands seperator into the NumberElements array
+        String thousandsSep = (String)source.get("thousands_sep");
+        if (thousandsSep != null) { //if we have a POSIX value, stomp on the default
+            elements[1] = thousandsSep;
+        }
+        
+        //Add NumberElements to result
+        resultPut(result, "NumberElements", elements);
+
+        //use canonical decimal and thousands seperators for patterns
+        decimalPoint = ".";
+        thousandsSep = ",";
+        
+        //NumberPatterns
+        final String[] DEFAULT_NUMBER_PATTERNS = (String[])getDefault("NumberPatterns");
+        final String[] patterns = (String[])DEFAULT_NUMBER_PATTERNS.clone();
+        
+        final String patternDigit = elements[5];
+        final String zeroDigit = elements[4];
+        final String negativeSign = elements[6];
+        final String percentSign = elements[3];
+        String groupingString;
+        Object groupingObj = source.get("grouping");
+        boolean isStrArray = groupingObj instanceof String[];
+        if (isStrArray) {
+            groupingString = ((String[])groupingObj)[0];
+        } else {
+            groupingString = (String)groupingObj;
+        }
+        if (groupingString == null) {
+            patterns[0] = replace(patterns[0], elements[0], "<DECIMAL>");
+            patterns[0] = replace(patterns[0], elements[1], "<THOUSAND>");
+            patterns[0] = replace(patterns[0], "<DECIMAL>", decimalPoint);
+            patterns[0] = replace(patterns[0], "<THOUSAND>", thousandsSep);
+
+            patterns[2] = replace(patterns[2], elements[1], "<THOUSAND>");
+            patterns[2] = replace(patterns[2], "<THOUSAND>", thousandsSep);
+        } else {
+            final int grouping = Integer.parseInt(groupingString);
+            //for a grouping of 5
+            //#<thousandsSep>####0<decimalPoint>#####
+            final StringBuffer pattern = new StringBuffer();
+            pattern.append(patternDigit);
+            pattern.append(thousandsSep);
+            for (int i = Math.max(1, grouping - 1); i > 0; i--) {
+                pattern.append(patternDigit);
+            }
+            pattern.append(zeroDigit);
+            pattern.append(decimalPoint);
+            for (int i = Math.max(1, grouping - 1); i >= 0; i--) {
+                pattern.append(patternDigit);
+            }
+            final String patternString = pattern.toString();
+            patterns[0] = patternString + ";" + negativeSign + patternString;
+            
+            pattern.setLength(0);
+            pattern.append(patternDigit);
+            pattern.append(thousandsSep);
+            for (int i = Math.max(1, grouping - 1); i > 0; i--) {
+                pattern.append(patternDigit);
+            }
+            pattern.append(zeroDigit);
+            pattern.append(percentSign);            
+            patterns[2] = pattern.toString();
+
+            final String[] currencyElements = ((String[])getDefault("CurrencyElements"));
+            String currency_symbol = (String)source.get("currency_symbol");
+            currency_symbol = (currency_symbol != null) ? currency_symbol : (String)source.get("int_curr_symbol");
+            currency_symbol = (currency_symbol != null) ? currency_symbol : "";
+            
+            String mon_decimal_point = (String)source.get("mon_decimal_point");
+            mon_decimal_point = (mon_decimal_point != null) ? mon_decimal_point : "";
+
+            String mon_thousands_sep = (String)source.get("mon_thousands_sep");
+            mon_thousands_sep = (mon_thousands_sep != null) ? mon_thousands_sep : "";
+
+            String mon_grouping_string;
+            final Object monGroupingObj = source.get("mon_grouping");
+            if (monGroupingObj instanceof String[]) {
+                mon_grouping_string = ((String[])monGroupingObj)[0];
+            } else {
+                mon_grouping_string = (String)monGroupingObj;
+            }
+            final int mon_grouping = (mon_grouping_string == null) ? grouping : Integer.parseInt(mon_grouping_string);
+            
+            final String frac_digits_string = (String)source.get("frac_digits");
+            final int frac_digits = (frac_digits_string == null) ? mon_grouping : Integer.parseInt(frac_digits_string);
+            
+            String positive_sign = (String)source.get("positive_sign");
+            positive_sign = (positive_sign != null) ? positive_sign : "";
+            
+            String negative_sign = (String)source.get("negative_sign");
+            negative_sign = (negative_sign != null) ? negative_sign : "";
+            
+            String p_sign_posn = (String)source.get("p_sign_posn");
+            p_sign_posn = (p_sign_posn != null) ? p_sign_posn : "";
+            
+            String n_sign_posn = (String)source.get("n_sign_posn");
+            n_sign_posn = (n_sign_posn != null) ? n_sign_posn : "";
+
+            final boolean p_cs_precedes = !"0".equals(source.get("p_cs_precedes"));
+            final String p_sep_by_space = (String)source.get("p_sep_by_space");
+            final boolean n_cs_precedes = !"0".equals(source.get("n_cs_precedes"));
+            final String n_sep_by_space = (String)source.get("n_sep_by_space");
+
+            pattern.setLength(0);
+            
+/*            
+            patterns[1] =
+                createPatternString(currency_symbol, mon_decimal_point, mon_thousands_sep, mon_grouping, frac_digits,
+                    positive_sign, p_cs_precedes, p_sep_by_space, p_sign_posn, patternDigit, zeroDigit)
+                + ";"
+                + createPatternString(currency_symbol, mon_decimal_point, mon_thousands_sep, mon_grouping, frac_digits,
+                    negative_sign, n_cs_precedes, n_sep_by_space, n_sign_posn, patternDigit, zeroDigit);
+*/
+            
+/*            patterns[1] =
+                createPatternString(currency_symbol, ".", ",", mon_grouping, frac_digits,
+                    positive_sign, p_cs_precedes, p_sep_by_space, p_sign_posn, patternDigit, zeroDigit)
+                + ";"
+                + createPatternString(currency_symbol, ".", ",", mon_grouping, frac_digits,
+                    negative_sign, n_cs_precedes, n_sep_by_space, n_sign_posn, patternDigit, zeroDigit);
+*/
+            patterns[1] =
+                createPatternString(".", ",", mon_grouping, frac_digits,
+                    positive_sign, p_cs_precedes, p_sep_by_space, p_sign_posn, patternDigit, zeroDigit)
+                + ";"
+                + createPatternString(".", ",", mon_grouping, frac_digits,
+                    negative_sign, n_cs_precedes, n_sep_by_space, n_sign_posn, patternDigit, zeroDigit);
+
+        }
+        resultPut(result, "NumberPatterns", patterns);
+    }
+
+    /**
+     * This routine creates currency formats from all the posix stuff.
+     */
+    private String createPatternString(String decimal, String thousands, int grouping, int fracDigits,
+            String sign, boolean preceeds, String sep_by_space, String sign_posn, String digit,
+            String requiredDigit) {
+        StringBuffer buffer = new StringBuffer();
+        final String currency = "\u00A4";
+        if ("2".equals(sep_by_space) && ("".equals(currency) || "".equals(sign))) {
+            sep_by_space = "0";
+        }
+        if ("1".equals(sep_by_space) && "".equals(currency)) {
+            sep_by_space = "0";
+        }
+        
+        final String sign_currency_seperator = ("2".equals(sep_by_space)) ? " " : "";
+        final String quantity_currency_seperator = ("1".equals(sep_by_space)) ? " " : "";
+        
+        if ("0".equals(sign_posn)) {
+            buffer.append('(');
+        }
+        if ("1".equals(sign_posn)) {
+            buffer.append(sign);
+            if (preceeds) {
+                buffer.append(sign_currency_seperator);
+            }
+        }
+        if (preceeds) {
+            if ("3".equals(sign_posn)) {
+                buffer.append(sign);
+                buffer.append(sign_currency_seperator);
+            }
+            buffer.append(currency);
+            if ("4".equals(sign_posn)) {
+                buffer.append(sign_currency_seperator);
+                buffer.append(sign);
+            }
+            buffer.append(quantity_currency_seperator);
+        }       
+        
+        buffer.append(digit);
+        if (grouping > 0) {
+            buffer.append(thousands);
+            for (int i = grouping-1; i > 0; i--) {
+                buffer.append(digit);
+            }
+        }
+        buffer.append(requiredDigit);
+        buffer.append(decimal);
+        if (fracDigits > 0) {
+            for (int i = fracDigits-1; i >= 0; i--) {
+                buffer.append(requiredDigit);
+            }
+        } else {
+            buffer.append(digit);
+        }
+        
+        if (!preceeds) {
+            buffer.append(quantity_currency_seperator);
+            if ("1".equals(sign_posn)) {
+                buffer.append(sign_currency_seperator);
+            }
+            if ("3".equals(sign_posn)) {
+                buffer.append(sign);
+                buffer.append(sign_currency_seperator);
+            }
+            buffer.append(currency);
+            if ("4".equals(sign_posn)) {
+                buffer.append(sign_currency_seperator);
+                buffer.append(sign);
+            }
+        }       
+        if ("2".equals(sign_posn)) {
+            buffer.append(sign_currency_seperator);
+            buffer.append(sign);
+        }
+        if ("0".equals(sign_posn)) {
+            buffer.append(')');
+        }
+        
+        return buffer.toString();
+    }
+    
+    private void convertTIME(Hashtable result, Hashtable source) {
+        resultPut(result, "DayNames", source.get("day"));
+        resultPut(result, "DayAbbreviations", source.get("abday"));
+        String[] temp = (String[])source.get("am_pm");
+        if (temp != null) {
+            final String[] defaultAMPM = (String[])getDefault("AmPmMarkers");
+            if ("".equals(temp[0])) temp[0] = defaultAMPM[0];
+            if ("".equals(temp[1])) temp[1] = defaultAMPM[1];
+            resultPut(result, "AmPmMarkers", temp);
+        }
+        
+        temp = (String[])source.get("mon");
+        if (temp != null) {
+            //add empty 13th month
+            String[] newTemp = new String[13];
+            System.arraycopy(temp, 0, newTemp, 0, 12);
+            newTemp[12] = "";
+            resultPut(result, "MonthNames", newTemp);
+        }
+        temp = (String[])source.get("abmon");
+        if (temp != null) {
+            //add empty 13th month
+            String[] newTemp = new String[13];
+            System.arraycopy(temp, 0, newTemp, 0, 12);
+            newTemp[12] = "";
+            resultPut(result, "MonthAbbreviations", newTemp);
+        }
+        
+        final String t_fmt_ampm = (String)source.get("t_fmt_ampm");
+        final String t_fmt = (String)source.get("t_fmt");
+        final String d_t_fmt = (String)source.get("d_t_fmt");
+        final String d_fmt = (String)source.get("d_fmt");
+        final String nlldate = (String)source.get("nlldate");   //non-standard IBM thing
+        
+        final String DEFAULT_DATETIME_ELEMENTS[] = (String[])getDefault("DateTimePatterns");
+        final String[] elements = (String[])DEFAULT_DATETIME_ELEMENTS.clone();
+        final String X_pattern = elements[3];
+        final String x_pattern = elements[7];
+        final String c_pattern = elements[4] + " " + elements[0];
+        
+        elements[0] = (t_fmt_ampm != null && t_fmt_ampm.length() > 0) ? t_fmt_ampm : t_fmt;
+        elements[1] = (t_fmt != null) ? t_fmt : t_fmt_ampm;
+        elements[2] = (t_fmt != null) ? t_fmt : t_fmt_ampm;
+        elements[3] = (t_fmt != null) ? t_fmt : t_fmt_ampm;
+        
+        String longishDateFormat = (nlldate != null) ? nlldate : d_fmt;
+        if (d_t_fmt != null) {
+            if (t_fmt != null) {
+                //try to build a detailed data format by taking the 
+                //date-time format and removing the time portion
+                int ndx = d_t_fmt.indexOf(t_fmt);
+                if (ndx >= 0) {
+                    if (ndx < (d_t_fmt.length() - t_fmt.length())/2) {
+                        elements[8] = "{0} {1}";
+                    }
+                
+                    longishDateFormat = replace(d_t_fmt, t_fmt, "");
+                    longishDateFormat = replace(longishDateFormat, "%Z", "");
+                    longishDateFormat = replace(longishDateFormat, "  ", " ");
+                    longishDateFormat = replace(longishDateFormat, "  ", " ");
+                    if (longishDateFormat.charAt(0) == ' ') {
+                        longishDateFormat = longishDateFormat.substring(1);
+                    }
+                    longishDateFormat.trim();
+                }
+            }
+        }
+        elements[4] = longishDateFormat;
+        elements[5] = d_t_fmt;
+        elements[6] = (nlldate != null) ? nlldate : d_fmt;
+        elements[7] = d_fmt;
+        
+        for (int i = 0; i < 8; i++) {
+            if (elements[i] != null) {
+                elements[i] = convertFormats(elements[i], X_pattern, x_pattern, c_pattern);
+            } else {
+                elements[i] = DEFAULT_DATETIME_ELEMENTS[i];
+            }
+        }
+        resultPut(result, "DateTimePatterns", elements);
+    }
+   
+    private String convertFormats(String pattern, String X_pattern, 
+            String x_pattern, String c_pattern) {
+        
+        HexToUnicodeTransliterator huTranslit =myTranslit;
+        huTranslit.applyPattern("<U0000>");
+        ReplaceableString tempStr = new ReplaceableString();
+        tempStr.replace(0,tempStr.length(),pattern);      
+        huTranslit.transliterate(tempStr);
+        String tpattern = tempStr.toString();
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < tpattern.length(); i++) {
+            char c = tpattern.charAt(i);
+            if (c != '%') {
+                result.append(c);
+            } else {
+                i++;
+                c = tpattern.charAt(i);
+                switch (c) {
+                case 'a':
+                    result.append("EEE");
+                    break;
+                case 'A':
+                    result.append("EEEE");
+                    break;
+                case 'b':
+                    result.append("MMM");
+                    break;
+                case 'B':
+                    result.append("MMMM");
+                    break;
+                case 'c':
+                    result.append(c_pattern);
+                    break;
+                case 'C':   //** hey {jf} - this is supposed to be the century only.
+                    result.append("YYYY");
+                    break;
+                case 'd':
+                    result.append("dd");
+                    break;
+                case 'D':
+                    result.append("mm/dd/yy");
+                    break;
+                case 'e':
+                    result.append("dd");
+                    break;
+                case 'h':
+                    result.append("MMM");
+                    break;
+                case 'H':
+                    result.append("HH");
+                    break;
+                case 'I':
+                    result.append("hh");
+                    break;
+                case 'j':
+                    result.append("DDD");
+                    break;
+                case 'm':
+                    result.append("MM");
+                    break;
+                case 'M':
+                    result.append("mm");
+                    break;
+                case 'n':
+                    result.append('\n');
+                    break;
+                case 'p':
+                    result.append("aa");
+                    break;
+                case 'r':
+                    result.append(convertFormats("%I:%M:%S %p", X_pattern, x_pattern, c_pattern));
+                    break;
+                case 'S':
+                    result.append("ss");
+                    break;
+                case 't':
+                    result.append('\t');
+                    break;
+                case 'T':
+                    result.append(convertFormats("%I:%M:%S", X_pattern, x_pattern, c_pattern));
+                    break;
+                case 'U':
+                    result.append("ww");
+                    break;
+                case 'w':
+                    result.append("E");
+                    break;
+                case 'W':
+                    result.append("ww");
+                    break;
+                case 'x':
+                    result.append(x_pattern);
+                    break;
+                case 'X':
+                    result.append(X_pattern);
+                    break;
+                case 'y':
+                    result.append("yy");
+                    break;
+                case 'Y':
+                    result.append("yyyy");
+                    break;
+                case 'Z':
+                    result.append("z");
+                    break;
+                case '%':
+                    result.append("%");
+                    break;
+                default:
+                    result.append('%');
+                    result.append(c);
+                    break;
+                }
+            }
+        }
+        return result.toString();
+    }
+    
+    private void convertCOLLATE(Hashtable result, Hashtable source) {
+        String[] sortOrder = (String[])source.get("sort_order");
+        HexToUnicodeTransliterator huTranslit =myTranslit;
+        huTranslit.applyPattern("<U0000>");
+        ReplaceableString tempStr = new ReplaceableString();
+        //tempStr.replace(0,tempStr.length(),sortOrder);      
+        final Object[][] DEFAULT_COLLATION=(Object[][]) getDefault("CollationElements");
+        final Object[][] elements=(Object[][])clone2DArr(DEFAULT_COLLATION);        
+        huTranslit.transliterate(tempStr);
+        if (sortOrder != null) {
+            if (!"forward".equals(sortOrder[0])) {
+                System.err.println("ERROR: Unsupported primary sort order: "+sortOrder[0]);
+            }
+            if (sortOrder.length == 2 && !"forward".equals(sortOrder[1]) && !"backward".equals(sortOrder[1])) {
+                System.err.println("ERROR: Unsupported secondary sort order: "+sortOrder[1]);
+            }
+            if (sortOrder.length == 3 && !"forward".equals(sortOrder[2])) {
+                System.err.println("ERROR: Unsupported tertiary sort order: "+sortOrder[2]);
+            }
+            if (sortOrder.length > 3) {
+                System.err.println("WARNING: Sort levels of order greater than three ignored.");
+            }
+        }
+        
+        PosixCollationBuilder.CollationRule[] ruleSource = 
+            (PosixCollationBuilder.CollationRule[])source.get("posix_sort_rules");
+
+        if (ruleSource != null) {
+                //allocate a list of collationItems.  Add an extra entry for secondary ordering
+            CollationItem[] rules = new CollationItem[ruleSource.length+1];
+            PosixCollationBuilder.CollationRule prevRule = null;
+                //add all the rules for non-expanding characters
+            int i = 0;
+            for (int ndx = 0; ndx < ruleSource.length; ndx++) {
+                PosixCollationBuilder.CollationRule rule = ruleSource[ndx];
+                    //add non-expanding characters to the sort list
+                if (rule.getSize() <= 1) {
+                    int diff;
+                    if (prevRule == null) {
+                        //if it's the first rule, don't compare to anything,
+                        //seek back so it can be appended to the default rules
+                        rules[i] = new CollationItem(rule.getSymbol());
+                    } else {
+                        //compare to previous item
+                        diff = prevRule.compare(rule);
+                        rules[i] = new CollationItem(diff, rule.getSymbol());
+                    }
+                    rules[i++].setComment(rule.getSource());
+                    prevRule = rule;
+                }
+            }
+                //add rules for expanding characters
+            String prevSeek = null;
+            prevRule = null;
+            for (int ndx = 0; ndx < ruleSource.length; ndx++) {
+                PosixCollationBuilder.CollationRule rule = ruleSource[ndx];
+                if (rule.getSize() > 1) {
+                        //find out what this character expands to
+                    String seek = rule.getExpansion();
+                    if (!seek.equals(prevSeek)) {
+                            //if it's not the same as the previous character
+                            //then seek to the first character of the expansion
+                            //and compare to that
+                        PosixCollationBuilder.CollationRule seekRule = rule.seeksToRule();
+                        rules[i] = new CollationItem(
+                                seekRule.compare(rule), rule.getSymbol(), rule.getExpansion());
+                        prevSeek = seek;
+                    } else if (prevRule != null) {
+                            //it expands to the same characters as the previous expansion,
+                            //so compare to the previous expansion
+                        rules[i] = new CollationItem(
+                                prevRule.compare(rule), rule.getSymbol(), prevRule.getSymbol());
+                    } else {
+                            //The unlikely case that the first character will
+                            //be an expanding character...I don't think
+                            //this is even possible...
+                        rules[i] = new CollationItem(rule.getSymbol());
+                    }
+                    rules[i++].setComment(rule.getSource());
+                }
+                prevRule = rule;
+            }
+            if ("backward".equals(sortOrder[1])) {
+                elements[1][1] = "true";
+            } else {
+                elements[1][1] = "false";
+            }
+            elements[2][1]=(Object)rules;
+            resultPut(result, "CollationElements", elements);
+        }
+    }
+        
+    private void resultPut(Hashtable resultTable, String tag, Object value) {
+        if (value == null) return;
+        resultTable.put(tag, value);
+    }
+    
+    private Object getDefault(String desiredResource) {
+        return getParentBundle().getObject(desiredResource);
+    }
+    
+    private ResourceBundle getParentBundle() {
+        return ResourceBundle.getBundle("com.ibm.icu.dev.tool.localeconverter.myLocaleElements", parentLocale);
+    }
+    
+    private String replace(String source, String target, String replacement) {
+        if (target.equals(replacement)) {
+            return source;
+        } else {
+            StringBuffer result = new StringBuffer();
+            int lastNdx = 0;
+            int ndx = source.indexOf(target);
+            while (ndx >= 0) {
+                result.append(source.substring(lastNdx, ndx));
+                result.append(replacement);
+                ndx += target.length();
+                lastNdx = ndx;
+                ndx = source.indexOf(target, ndx);
+            }
+            result.append(source.substring(lastNdx));
+            return result.toString();
+        }
+    }
+	//{{DECLARE_CONTROLS
+	//}}
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/QuoteTransition.java b/src/com/ibm/icu/dev/tool/localeconverter/QuoteTransition.java
new file mode 100755
index 0000000..50a80c2
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/QuoteTransition.java
@@ -0,0 +1,76 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/QuoteTransition.java,v $ 
+ * $Date: 2002/02/16 03:05:31 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+public class QuoteTransition extends ComplexTransition {
+    public static final QuoteTransition GLOBAL = new QuoteTransition(SUCCESS);
+
+    public static final char STRING_CHAR = '"';
+    
+    public QuoteTransition(int success) {
+        super(success);
+            //{{INIT_CONTROLS
+        //}}
+    }
+    public boolean accepts(int c) {
+        return STRING_CHAR == (char)c;
+    }
+    protected Lex.Transition[][] getStates() {
+        return states;
+    }
+    private static final Lex.Transition[][] states = {
+        { //state 0: 
+            new Lex.CharTransition(STRING_CHAR, Lex.IGNORE_CONSUME, -1),
+            new Lex.ParseExceptionTransition("illegal character in quoted string")
+        },
+        { //state 1:
+            new Lex.CharTransition(STRING_CHAR, Lex.IGNORE_CONSUME, SUCCESS),
+            new Lex.StringTransition(EOLTransition.EOL_CHARS, Lex.IGNORE_CONSUME, -2),
+            new EscapeTransition(-1),
+            new SymbolTransition(-1),
+            new Lex.EOFTransition(-2),
+            new Lex.DefaultTransition(Lex.ACCUMULATE_CONSUME, -1)
+        },
+        { //state 2: failure from eof
+            new Lex.ParseExceptionTransition("unterminated string")
+        }
+    };
+
+    public static void main(String args[]) {
+        try {
+            Lex.Transition[][] states = {{ 
+                new QuoteTransition(SUCCESS),
+                new Lex.EOFTransition(),
+                new Lex.ParseExceptionTransition("bad test input")
+            }};
+            EscapeTransition.setEscapeChar('/');
+            String text = "\"hello<\"/>>/d32world\"\"<one>/\n<two>\"";
+            StringReader sr = new StringReader(text);
+            PushbackReader pr = new PushbackReader(sr);
+            Lex parser = new Lex(states, pr);
+            //parser.debug(true);
+            int s = parser.nextToken();
+            while (s == SUCCESS) {
+                System.out.println(parser.getData());
+                s = parser.nextToken();
+            }
+        } catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+    //{{DECLARE_CONTROLS
+    //}}
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/RangeTransition.java b/src/com/ibm/icu/dev/tool/localeconverter/RangeTransition.java
new file mode 100755
index 0000000..65388ea
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/RangeTransition.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/RangeTransition.java,v $ 
+ * $Date: 2002/02/16 03:05:31 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+ 
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+public class RangeTransition extends ComplexTransition {
+    public static final RangeTransition GLOBAL = new RangeTransition(SUCCESS);
+    public static final String RANGE_CHARS = "...";
+    public RangeTransition(int success){
+        super(success);
+    }
+    
+    public boolean accepts(int c){
+        return RANGE_CHARS.indexOf((char)c) >=0;
+    }
+    
+    protected Lex.Transition[][]getStates(){
+        return states;
+    }
+    private static final Lex.Transition[][] states= {
+
+        { //state 0: 
+            new Lex.StringTransition(RANGE_CHARS, Lex.IGNORE_CONSUME, -1),
+            new Lex.ParseExceptionTransition("illegal space character")
+        },
+        { //state 1:
+            new Lex.EOFTransition(SUCCESS),
+            new Lex.StringTransition(RANGE_CHARS, Lex.IGNORE_CONSUME, -1),
+            new Lex.DefaultTransition(Lex.IGNORE_PUTBACK, SUCCESS)
+        },
+    };
+}
+            
+    
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/SortedVector.java b/src/com/ibm/icu/dev/tool/localeconverter/SortedVector.java
new file mode 100755
index 0000000..59eea00
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/SortedVector.java
@@ -0,0 +1,356 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/SortedVector.java,v $ 
+ * $Date: 2002/02/16 03:05:31 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.util.Vector;
+import java.util.Enumeration;
+/**
+    Implements a sorted vector. You can add anything to it; when you access any element, it sorts
+    the array internally when necessary.
+    <p>A Comparator is used to compare the elements, allowing arbitrary orderings.
+    If no Comparator is supplied, then one is constructed based on the type
+    of the first element added. Only Numbers and Comparables are handled.
+    <p>Duplicates are allowed.
+*/
+final public class SortedVector {
+    /**
+        Copies elements of vector, enumeration or array
+        Note: the objects in the source are NOT cloned.
+        Do not change them or the sorting will be invalid.
+    */
+    public SortedVector(Object[] newValues, Comparator comparator) {
+        this.comparator = comparator;
+        addElements(newValues);
+            //{{INIT_CONTROLS
+		//}}
+}
+
+    public SortedVector(Vector newValues, Comparator comparator) {
+        this.comparator = comparator;
+        addElements(newValues);
+    }
+
+    public SortedVector(Enumeration newValues, Comparator comparator) {
+        this.comparator = comparator;
+        addElements(newValues);
+    }
+
+    public SortedVector(Object[] newValues) {
+        addElements(newValues);
+    }
+
+    public SortedVector(Comparator comparator) {
+        this.comparator = comparator;
+    }
+
+    public SortedVector(Vector newValues) {
+        addElements(newValues);
+    }
+
+    public SortedVector(Enumeration newValues) {
+        addElements(newValues);
+    }
+
+    public SortedVector() {
+    }
+
+    /**
+        Adds one element.
+    */
+    public void addElement(Object element) {
+        if (count >= dataArray.length) setCapacity(count*2 + 17);
+        dataArray[count++] = element;
+        isValid = false;
+    }
+
+    /**
+        Adds multiple elements. Faster than adding one at a time.
+    */
+    public void addElements(Object[] newValues) {
+        int newCount = count + newValues.length;
+        if (newCount > dataArray.length) setCapacity(newCount);
+        for (int i = count; i < newCount; ++i)
+            dataArray[i] = newValues[i-count];
+        count = newCount;
+        isValid = false;
+    }
+
+    public void addElements(Vector newValues) {
+        int newCount = count + newValues.size();
+        if (newCount > dataArray.length) setCapacity(newCount);
+        for (int i = count; i < newCount; ++i)
+            dataArray[i] = newValues.elementAt(i-count);
+        count = newCount;
+        isValid = false;
+    }
+
+    public void addElements(Enumeration newValues) {
+        while (newValues.hasMoreElements()) {
+            addElement(newValues.nextElement());
+        }
+    }
+
+    /**
+        Removes elements at indices >= startIndex and < endIndex
+    */
+    public void removeElements(int startIndex, int endIndex) {
+        if (!isValid) validate();
+        System.arraycopy(dataArray,endIndex,dataArray,startIndex,count - endIndex);
+        for (int i = count - (endIndex - startIndex); i < count;++i)
+            dataArray[i] = null;   // free up storage
+        count -= (endIndex - startIndex);
+    }
+
+    /**
+        Sets comparator
+    */
+    public void setComparator(Comparator comparator) {
+        this.comparator = comparator;
+        isValid = false;
+    }
+
+    public Comparator getComparator() {
+        if (comparator == null) validateComparator();
+        return this.comparator;
+    }
+
+    /**
+        Gets size, the actual number of elements.
+    */
+    public int size() {
+        return count;
+    }
+
+    /**
+        Gets capacity, the number of elements you can have without growing the array.
+    */
+    public int capacity() {
+        return dataArray.length;
+    }
+
+    /**
+        Sets capacity, the number of elements you can have without growing the array.
+    */
+    public void setCapacity(int newSize) {
+        Object[] temp = new Object[newSize];
+        System.arraycopy(dataArray, 0, temp, 0, Math.min(count,newSize));
+        dataArray = temp;
+    }
+
+    /**
+        Trims the array.
+    */
+    public void trimToSize() {
+        setCapacity(count);
+    }
+
+    /**
+        Gets the element at the index
+    */
+    public Object elementAt (int index) {
+        if (!isValid) validate();
+        if (index >= count) return dataArray[dataArray.length];
+        return dataArray[index];
+    }
+
+    /**
+        Sees whether the vector contains the object
+    */
+    public boolean contains (Object value) {
+        int index = indexOf(value);
+        return (index >= 0 && comparator.compare(value,dataArray[index]) == 0);
+    }
+
+    /**
+        Gets an enumeration
+    */
+    public Enumeration elements() {
+        if (!isValid) validate();
+        return new ArrayEnumeration(dataArray,0,count);
+    }
+
+    public void copyInto(Object[] toFill) {
+        if (!isValid) validate();
+        System.arraycopy(dataArray,0,toFill,0,toFill.length);
+    }
+
+    /**
+        Finds first index whose value is greater than or equal to searchValue
+        If there are none, returns -1
+    */
+    public int indexOf(Object searchValue)
+    {
+        if (!isValid) validate();
+        int index = startIndex;
+        if (0 <= comparator.compare(searchValue, dataArray[auxStart])) {
+            index += auxStart;
+        }
+        // very fast, completely unrolled binary search
+        // each case deliberately falls through to the next
+        switch (power) {
+        case 31: if (0 > comparator.compare(searchValue, dataArray[index-0x40000000])) index -= 0x40000000;
+        case 30: if (0 > comparator.compare(searchValue, dataArray[index-0x20000000])) index -= 0x20000000;
+        case 29: if (0 > comparator.compare(searchValue, dataArray[index-0x10000000])) index -= 0x10000000;
+
+        case 28: if (0 > comparator.compare(searchValue, dataArray[index-0x8000000])) index -= 0x8000000;
+        case 27: if (0 > comparator.compare(searchValue, dataArray[index-0x4000000])) index -= 0x4000000;
+        case 26: if (0 > comparator.compare(searchValue, dataArray[index-0x2000000])) index -= 0x2000000;
+        case 25: if (0 > comparator.compare(searchValue, dataArray[index-0x1000000])) index -= 0x1000000;
+
+        case 24: if (0 > comparator.compare(searchValue, dataArray[index-0x800000])) index -= 0x800000;
+        case 23: if (0 > comparator.compare(searchValue, dataArray[index-0x400000])) index -= 0x400000;
+        case 22: if (0 > comparator.compare(searchValue, dataArray[index-0x200000])) index -= 0x200000;
+        case 21: if (0 > comparator.compare(searchValue, dataArray[index-0x100000])) index -= 0x100000;
+
+        case 20: if (0 > comparator.compare(searchValue, dataArray[index-0x80000])) index -= 0x80000;
+        case 19: if (0 > comparator.compare(searchValue, dataArray[index-0x40000])) index -= 0x40000;
+        case 18: if (0 > comparator.compare(searchValue, dataArray[index-0x20000])) index -= 0x20000;
+        case 17: if (0 > comparator.compare(searchValue, dataArray[index-0x10000])) index -= 0x10000;
+
+        case 16: if (0 > comparator.compare(searchValue, dataArray[index-0x8000])) index -= 0x8000;
+        case 15: if (0 > comparator.compare(searchValue, dataArray[index-0x4000])) index -= 0x4000;
+        case 14: if (0 > comparator.compare(searchValue, dataArray[index-0x2000])) index -= 0x2000;
+        case 13: if (0 > comparator.compare(searchValue, dataArray[index-0x1000])) index -= 0x1000;
+
+        case 12: if (0 > comparator.compare(searchValue, dataArray[index-0x800])) index -= 0x800;
+        case 11: if (0 > comparator.compare(searchValue, dataArray[index-0x400])) index -= 0x400;
+        case 10: if (0 > comparator.compare(searchValue, dataArray[index-0x200])) index -= 0x200;
+        case  9: if (0 > comparator.compare(searchValue, dataArray[index-0x100])) index -= 0x100;
+
+        case  8: if (0 > comparator.compare(searchValue, dataArray[index-0x80])) index -= 0x80;
+        case  7: if (0 > comparator.compare(searchValue, dataArray[index-0x40])) index -= 0x40;
+        case  6: if (0 > comparator.compare(searchValue, dataArray[index-0x20])) index -= 0x20;
+        case  5: if (0 > comparator.compare(searchValue, dataArray[index-0x10])) index -= 0x10;
+
+        case  4: if (0 > comparator.compare(searchValue, dataArray[index-0x8])) index -= 8;
+        case  3: if (0 > comparator.compare(searchValue, dataArray[index-0x4])) index -= 4;
+        case  2: if (0 > comparator.compare(searchValue, dataArray[index-0x2])) index -= 2;
+        case  1: if (0 > comparator.compare(searchValue, dataArray[index-0x1])) index -= 1;
+
+        case  0: if (0 > comparator.compare(searchValue, dataArray[index])) index -= 1;
+        }
+        return index;
+    }
+
+    // ================= privates ==================
+    /** Only call if comparator is null
+    */
+    private void validateComparator() {
+        try {
+            Object trial = dataArray[0];
+            if (trial instanceof Float || trial instanceof Double) {
+                comparator = new DoubleComparator();
+            } else if (trial instanceof Integer) {
+                comparator = new IntegerComparator();
+            } else if (trial instanceof Number) {
+                comparator = new LongComparator();
+            } else if (trial instanceof String) {
+                comparator = new StringComparator();
+            } else {
+                comparator = new ComparableComparator();
+            }
+        } catch (Exception e) {} // leave null
+    }
+
+    private void validate() {
+        if (isValid) return;
+        // if the Comparator is null, then pick a reasonable one
+        if (comparator == null) validateComparator();
+
+        // determine search parameters
+
+        // find least power of 2 greater than count
+        for (power = exp2.length-1; power > 0 && count < exp2[power]; power--) {}
+
+        // determine the starting point
+        if (exp2[power] != count) {
+            auxStart = count - exp2[power];
+        } else {
+            auxStart = 0;
+        }
+        startIndex = exp2[power]-1;
+
+        // shell sort. Later, make this a QuickSort
+        int lo = 0;
+        int up = count-1;
+        for (int step = up - lo + 1; step > 1;) {
+            if (step < 5)
+                step = 1;
+            else step = (5 * step - 1) / 11;
+            for (int i = up - step; i >= lo; --i) {
+                Object temp = dataArray[i];
+                int j;
+                for (j = i + step; j <= up && 0 > comparator.compare(dataArray[j],temp); j += step)
+                    dataArray[j-step] = dataArray[j];
+                dataArray[j-step] = temp;
+            }
+        }
+        isValid = true;
+    }
+
+    private Object[] dataArray = new Object[16];
+    private Comparator comparator;
+    private int count = 0;
+    private boolean isValid = false;
+    private int auxStart;
+    private int startIndex;
+    private int power;
+    private static final int exp2[] = {
+        0x1, 0x2, 0x4, 0x8,
+        0x10, 0x20, 0x40, 0x80,
+        0x100, 0x200, 0x400, 0x800,
+        0x1000, 0x2000, 0x4000, 0x8000,
+        0x10000, 0x20000, 0x40000, 0x80000,
+        0x100000, 0x200000, 0x400000, 0x800000,
+        0x1000000, 0x2000000, 0x4000000, 0x8000000,
+        0x10000000, 0x20000000, 0x40000000};
+
+    // Utility Classes
+
+    public static final class LongComparator implements Comparator {
+        public int compare(Object a, Object b) {
+            long aa = ((Number)a).longValue();
+            long bb = ((Number)b).longValue();
+            return (aa < bb ? -1 : aa > bb ? 1 : 0);
+        }
+    }
+
+    public static final class IntegerComparator implements Comparator {
+        public int compare(Object a, Object b) {
+            return (((Number)a).intValue() - ((Number)b).intValue());
+        }
+    }
+
+    public static final class DoubleComparator implements Comparator {
+        public int compare(Object a, Object b) {
+            double aa = ((Number)a).doubleValue();
+            double bb = ((Number)b).doubleValue();
+            return (aa < bb ? -1 : aa > bb ? 1 : 0);
+        }
+    }
+
+    public static final class ComparableComparator implements Comparator {
+        public int compare(Object a, Object b) {
+            return ((Comparable)a).compareTo(b);
+        }
+    }
+
+    public static final class StringComparator implements Comparator {
+        public int compare(Object a, Object b) {
+            return ((String)a).compareTo((String)b);
+        };
+    }
+    //{{DECLARE_CONTROLS
+	//}}
+}
+
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/SpaceTransition.java b/src/com/ibm/icu/dev/tool/localeconverter/SpaceTransition.java
new file mode 100755
index 0000000..b0e7f40
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/SpaceTransition.java
@@ -0,0 +1,46 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/SpaceTransition.java,v $ 
+ * $Date: 2002/02/16 03:05:32 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+public class SpaceTransition extends ComplexTransition {
+    public static final SpaceTransition GLOBAL = new SpaceTransition(SUCCESS);
+    public static final String SPACE_CHARS = " \t";
+    
+    public SpaceTransition(int success) {
+        super(success);
+            //{{INIT_CONTROLS
+        //}}
+    }
+    public boolean accepts(int c) {
+        return SPACE_CHARS.indexOf((char)c) >= 0;
+    }
+    protected Lex.Transition[][] getStates() {
+        return states;
+    }
+    private static final Lex.Transition[][] states = {
+        { //state 0: 
+            new Lex.StringTransition(SPACE_CHARS, Lex.IGNORE_CONSUME, -1),
+            new Lex.ParseExceptionTransition("illegal space character")
+        },
+        { //state 1:
+            new Lex.EOFTransition(SUCCESS),
+            new Lex.StringTransition(SPACE_CHARS, Lex.IGNORE_CONSUME, -1),
+            new Lex.DefaultTransition(Lex.IGNORE_PUTBACK, SUCCESS)
+        },
+    };
+    //{{DECLARE_CONTROLS
+    //}}
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/SymbolTransition.java b/src/com/ibm/icu/dev/tool/localeconverter/SymbolTransition.java
new file mode 100755
index 0000000..400cf14
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/SymbolTransition.java
@@ -0,0 +1,103 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/SymbolTransition.java,v $ 
+ * $Date: 2002/02/16 03:05:32 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+public class SymbolTransition extends ComplexTransition {
+    private static PosixCharMap mapping = new PosixCharMap();
+    public static final SymbolTransition GLOBAL = new SymbolTransition(SUCCESS);
+    public static void setCharMap(PosixCharMap mappingIn) {
+        mapping = mappingIn;
+        if (mapping == null) {
+            mapping = new PosixCharMap();
+        }
+    }
+
+    public static PosixCharMap getCharMap() {
+        return mapping;
+    }
+
+    public SymbolTransition(int success) {
+        super(success);
+            //{{INIT_CONTROLS
+        //}}
+    }
+    public boolean accepts(int c) {
+        return '<' == (char)c;
+    }
+    protected void handleSuccess(Lex parser, StringBuffer output) {
+        String text = parser.getData();
+        String mappedText = mapping.mapKey(text);
+        if (mappedText != null) {
+            output.append(mappedText);
+        } else {
+            output.append(text);
+        }
+    }
+    protected Lex.Transition[][] getStates() {
+        synchronized (getClass()) {
+            if (states == null) {
+                states = new Lex.Transition[][] {
+                    { //state 0: 
+                        new Lex.CharTransition('<', Lex.ACCUMULATE_CONSUME, -1),
+                        new Lex.ParseExceptionTransition("illegal characters in symbol")
+                    },
+                    { //state 1:
+                        new Lex.CharTransition('/', Lex.ACCUMULATE_CONSUME, -2),
+                        new Lex.CharTransition('>', Lex.ACCUMULATE_CONSUME, SUCCESS),
+                        new Lex.StringTransition(EOLTransition.EOL_CHARS, Lex.IGNORE_PUTBACK, -3),
+                        new Lex.EOFTransition(-3),
+                        new Lex.DefaultTransition(Lex.ACCUMULATE_CONSUME, -1)
+                    },
+                    { //state 2:
+                        new Lex.CharTransition('>', Lex.ACCUMULATE_CONSUME, -1),
+                        new Lex.CharTransition('/', Lex.ACCUMULATE_CONSUME, -1),
+                        new Lex.ParseExceptionTransition("illegal escape character in symbol")
+                    },
+                    { //state 3: failure
+                        new Lex.ParseExceptionTransition("unexpected end of line/file")
+                    }
+                };
+            }
+        }
+        return states;
+    }
+    private static Lex.Transition[][] states;
+    
+    public static void main(String args[]) {
+        try {
+            Lex.Transition[][] states = {{ 
+                new SymbolTransition(SUCCESS),
+                new Lex.EOFTransition(),
+                new Lex.ParseExceptionTransition("bad test input")
+            }};
+            //String text = "<CAPITAL><\"<><//><V%><N6><CYRILLIC>";
+            String text = "<U><S><D> ";
+            StringReader sr = new StringReader(text);
+            PushbackReader pr = new PushbackReader(sr);
+            Lex parser = new Lex(states, pr);
+            //parser.debug(true);
+            int s = parser.nextToken();
+            while (s == SUCCESS) {
+                System.out.println(parser.getData());
+                s = parser.nextToken();
+            }
+        } catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+    //{{DECLARE_CONTROLS
+    //}}
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/TokenTransition.java b/src/com/ibm/icu/dev/tool/localeconverter/TokenTransition.java
new file mode 100755
index 0000000..9aa5c25
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/TokenTransition.java
@@ -0,0 +1,72 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/TokenTransition.java,v $ 
+ * $Date: 2002/02/16 03:05:32 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.io.*;
+import java.util.*;
+
+public class TokenTransition extends ComplexTransition {
+    public static final TokenTransition GLOBAL = new TokenTransition(SUCCESS);
+    public static final String SEPARATOR_CHARS = ";" + SpaceTransition.SPACE_CHARS;
+    
+    public TokenTransition(int success) {
+        super(success);
+            //{{INIT_CONTROLS
+        //}}
+}
+    public boolean accepts(int c) {
+        return (c > 0) && 
+            !EOLTransition.GLOBAL.accepts(c) && 
+            !SpaceTransition.GLOBAL.accepts(c) &&  
+            (
+                (SEPARATOR_CHARS.indexOf((char)c) < 0) ||
+                SymbolTransition.GLOBAL.accepts(c) ||
+                QuoteTransition.GLOBAL.accepts(c) ||
+                EscapeTransition.GLOBAL.accepts(c)
+            );
+    }
+    protected Lex.Transition[][] getStates() {
+        return states;
+    }
+    private static final Lex.Transition[][] states = {
+        { //state 0: 
+            new SymbolTransition(-1),
+            new QuoteTransition(-1), 
+            new EscapeTransition(-1),
+            new Lex.StringTransition(EOLTransition.EOL_CHARS, Lex.IGNORE_PUTBACK, -2),
+            new Lex.StringTransition(SEPARATOR_CHARS, Lex.IGNORE_PUTBACK, -3),
+            new Lex.EOFTransition(-4),
+            new Lex.DefaultTransition(Lex.ACCUMULATE_CONSUME, -1)
+        },
+        { //state 1:
+            new SymbolTransition(-1),
+            new QuoteTransition(-1), 
+            new EscapeTransition(-1),
+            new Lex.StringTransition(EOLTransition.EOL_CHARS, Lex.IGNORE_PUTBACK, SUCCESS),
+            new Lex.StringTransition(SEPARATOR_CHARS, Lex.IGNORE_PUTBACK, SUCCESS),
+            new Lex.EOFTransition(SUCCESS),
+            new Lex.DefaultTransition(Lex.ACCUMULATE_CONSUME, -1)
+        },
+        { //state 2: failure - unexpected EOL
+            new Lex.ParseExceptionTransition("unexpected EOL in token")
+        },
+        { //state 3: failure
+            new Lex.ParseExceptionTransition("unexpected seperator character in token")
+        },
+        { //state 4: failure
+            new Lex.ParseExceptionTransition("unexpected EOF in token")
+        },
+    };
+    //{{DECLARE_CONTROLS
+    //}}
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/myLocaleElements.java b/src/com/ibm/icu/dev/tool/localeconverter/myLocaleElements.java
new file mode 100755
index 0000000..d0f2fd8
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/myLocaleElements.java
@@ -0,0 +1,583 @@
+/*
+ *******************************************************************************
+ *
+ *   Copyright (C) 1996-2002, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/localeconverter/myLocaleElements.java,v $ 
+ * $Date: 2002/08/01 20:27:21 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+/**
+ *
+ * Table of Java supplied standard locale elements
+ *
+ * automatically generated by java LocaleTool LocaleElements.java
+ *
+ * Date Created: Wed Aug 21 15:47:57  1996
+ *
+ *     Locale Elements and Patterns:  last update 10/23/96
+ *
+ *
+ */
+
+// WARNING : the format of this file will change in the future!
+
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.util.ListResourceBundle;
+
+public class myLocaleElements extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "LocaleString", "en_US" }, // locale id based on iso codes
+            { "LocaleID", "0409" }, // Windows id
+            { "ShortLanguage", "eng" }, // iso-3 abbrev lang name
+            { "ShortCountry", "USA" }, // iso-3 abbrev country name
+            { "Languages", // language names
+                new String[][] {
+                    { "ab", "Abkhazian" },
+                    { "aa", "Afar" },
+                    { "af", "Afrikaans" },
+                    { "sq", "Albanian" },
+                    { "am", "Amharic" },
+                    { "ar", "Arabic" },
+                    { "hy", "Armenian" },
+                    { "as", "Assamese" },
+                    { "ay", "Aymara" },
+                    { "az", "Azerbaijani" },
+                    { "ba", "Bashkir" },
+                    { "eu", "Basque" },
+                    { "bn", "Bengali" },
+                    { "dz", "Bhutani" },
+                    { "bh", "Bihari" },
+                    { "bi", "Bislama" },
+                    { "br", "Breton" },
+                    { "bg", "Bulgarian" },
+                    { "my", "Burmese" },
+                    { "be", "Byelorussian" },
+                    { "km", "Cambodian" },
+                    { "ca", "Catalan" },
+                    { "zh", "Chinese" },
+                    { "co", "Corsican" },
+                    { "hr", "Croatian" },
+                    { "cs", "Czech" },
+                    { "da", "Danish" },
+                    { "nl", "Dutch" },
+                    { "en", "English" },
+                    { "eo", "Esperanto" },
+                    { "et", "Estonian" },
+                    { "fo", "Faeroese" },
+                    { "fj", "Fiji" },
+                    { "fi", "Finnish" },
+                    { "fr", "French" },
+                    { "fy", "Frisian" },
+                    { "gl", "Galician" },
+                    { "ka", "Georgian" },
+                    { "de", "German" },
+                    { "el", "Greek" },
+                    { "kl", "Greenlandic" },
+                    { "gn", "Guarani" },
+                    { "gu", "Gujarati" },
+                    { "ha", "Hausa" },
+                    { "iw", "Hebrew" },
+                    { "hi", "Hindi" },
+                    { "hu", "Hungarian" },
+                    { "is", "Icelandic" },
+                    { "in", "Indonesian" },
+                    { "ia", "Interlingua" },
+                    { "ie", "Interlingue" },
+                    { "ik", "Inupiak" },
+                    { "ga", "Irish" },
+                    { "it", "Italian" },
+                    { "ja", "Japanese" },
+                    { "jw", "Javanese" },
+                    { "kn", "Kannada" },
+                    { "ks", "Kashmiri" },
+                    { "kk", "Kazakh" },
+                    { "rw", "Kinyarwanda" },
+                    { "ky", "Kirghiz" },
+                    { "rn", "Kirundi" },
+                    { "ko", "Korean" },
+                    { "ku", "Kurdish" },
+                    { "lo", "Laothian" },
+                    { "la", "Latin" },
+                    { "lv", "Latvian (Lettish)" },
+                    { "ln", "Lingala" },
+                    { "lt", "Lithuanian" },
+                    { "mk", "Macedonian" },
+                    { "mg", "Malagasy" },
+                    { "ms", "Malay" },
+                    { "ml", "Malayalam" },
+                    { "mt", "Maltese" },
+                    { "mi", "Maori" },
+                    { "mr", "Marathi" },
+                    { "mo", "Moldavian" },
+                    { "mn", "Mongolian" },
+                    { "na", "Nauru" },
+                    { "ne", "Nepali" },
+                    { "no", "Norwegian" },
+                    { "oc", "Occitan" },
+                    { "or", "Oriya" },
+                    { "om", "Oromo (Afan)" },
+                    { "ps", "Pashto (Pushto)" },
+                    { "fa", "Persian" },
+                    { "pl", "Polish" },
+                    { "pt", "Portuguese" },
+                    { "pa", "Punjabi" },
+                    { "qu", "Quechua" },
+                    { "rm", "Rhaeto-Romance" },
+                    { "ro", "Romanian" },
+                    { "ru", "Russian" },
+                    { "sm", "Samoan" },
+                    { "sg", "Sangro" },
+                    { "sa", "Sanskrit" },
+                    { "gd", "Scots Gaelic" },
+                    { "sr", "Serbian" },
+                    { "sh", "Serbo-Croatian" },
+                    { "st", "Sesotho" },
+                    { "tn", "Setswana" },
+                    { "sn", "Shona" },
+                    { "sd", "Sindhi" },
+                    { "si", "Singhalese" },
+                    { "ss", "Siswati" },
+                    { "sk", "Slovak" },
+                    { "sl", "Slovenian" },
+                    { "so", "Somali" },
+                    { "es", "Spanish" },
+                    { "su", "Sundanese" },
+                    { "sw", "Swahili" },
+                    { "sv", "Swedish" },
+                    { "tl", "Tagalog" },
+                    { "tg", "Tajik" },
+                    { "ta", "Tamil" },
+                    { "tt", "Tatar" },
+                    { "te", "Telugu" },
+                    { "th", "Thai" },
+                    { "bo", "Tibetan" },
+                    { "ti", "Tigrinya" },
+                    { "to", "Tonga" },
+                    { "ts", "Tsonga" },
+                    { "tr", "Turkish" },
+                    { "tk", "Turkmen" },
+                    { "tw", "Twi" },
+                    { "uk", "Ukrainian" },
+                    { "ur", "Urdu" },
+                    { "uz", "Uzbek" },
+                    { "vi", "Vietnamese" },
+                    { "vo", "Volapuk" },
+                    { "cy", "Welsh" },
+                    { "wo", "Wolof" },
+                    { "xh", "Xhosa" },
+                    { "ji", "Yiddish" },
+                    { "yo", "Yoruba" },
+                    { "zu", "Zulu" }
+                }
+            },
+            { "Countries", // country names
+                new String[][] {
+                    { "AF", "Afghanistan" },
+                    { "AL", "Albania" },
+                    { "DZ", "Algeria" },
+                    { "AD", "Andorra" },
+                    { "AO", "Angola" },
+                    { "AI", "Anguilla" },
+                    { "AR", "Argentina" },
+                    { "AM", "Armenia" },
+                    { "AW", "Aruba" },
+                    { "AU", "Australia" },
+                    { "AT", "Austria" },
+                    { "AZ", "Azerbaijan" },
+                    { "BS", "Bahamas" },
+                    { "BH", "Bahrain" },
+                    { "BD", "Bangladesh" },
+                    { "BB", "Barbados" },
+                    { "BY", "Belarus" },
+                    { "BE", "Belgium" },
+                    { "BZ", "Belize" },
+                    { "BJ", "Benin" },
+                    { "BM", "Bermuda" },
+                    { "BT", "Bhutan" },
+                    { "BO", "Bolivia" },
+                    { "BA", "Bosnia and Herzegovina" },
+                    { "BW", "Botswana" },
+                    { "BR", "Brazil" },
+                    { "BN", "Brunei Darussalam" },
+                    { "BG", "Bulgaria" },
+                    { "BF", "Burkina Faso" },
+                    { "BI", "Burundi" },
+                    { "KH", "Cambodia" },
+                    { "CM", "Cameroon" },
+                    { "CA", "Canada" },
+                    { "CV", "Cape Verde" },
+                    { "CF", "Central African Republic" },
+                    { "TD", "Chad" },
+                    { "CL", "Chile" },
+                    { "CN", "China" },
+                    { "CO", "Colombia" },
+                    { "KM", "Comoros" },
+                    { "CG", "Congo" },
+                    { "CR", "Costa Rica" },
+                    { "CI", "Cote D'ivoire" },
+                    { "HR", "Croatia" },
+                    { "CU", "Cuba" },
+                    { "CY", "Cyprus" },
+                    { "CZ", "Czech Republic" },
+                    { "DK", "Denmark" },
+                    { "DJ", "Djibouti" },
+                    { "DM", "Dominica" },
+                    { "DO", "Dominican Republic" },
+                    { "TP", "East Timor" },
+                    { "EC", "Ecuador" },
+                    { "EG", "Egypt" },
+                    { "SV", "El Salvador" },
+                    { "GQ", "Equatorial Guinea" },
+                    { "ER", "Eritrea" },
+                    { "EE", "Estonia" },
+                    { "ET", "Ethiopia" },
+                    { "FJ", "Fiji" },
+                    { "FI", "Finland" },
+                    { "FR", "France" },
+                    { "GF", "French Guiana" },
+                    { "PF", "French Polynesia" },
+                    { "TF", "French Southern Territories" },
+                    { "GA", "Gabon" },
+                    { "GM", "Gambia" },
+                    { "GE", "Georgia" },
+                    { "DE", "Germany" },
+                    { "GH", "Ghana" },
+                    { "GR", "Greece" },
+                    { "GP", "Guadeloupe" },
+                    { "GT", "Guatemala" },
+                    { "GN", "Guinea" },
+                    { "GW", "Guinea-Bissau" },
+                    { "GY", "Guyana" },
+                    { "HT", "Haiti" },
+                    { "HN", "Honduras" },
+                    { "HK", "Hong Kong" },
+                    { "HU", "Hungary" },
+                    { "IS", "Iceland" },
+                    { "IN", "India" },
+                    { "ID", "Indonesia" },
+                    { "IR", "Iran" },
+                    { "IQ", "Iraq" },
+                    { "IE", "Ireland" },
+                    { "IL", "Israel" },
+                    { "IT", "Italy" },
+                    { "JM", "Jamaica" },
+                    { "JP", "Japan" },
+                    { "JO", "Jordan" },
+                    { "KZ", "Kazakhstan" },
+                    { "KE", "Kenya" },
+                    { "KI", "Kiribati" },
+                    { "KP", "North Korea" },
+                    { "KR", "South Korea" },
+                    { "KW", "Kuwait" },
+                    { "KG", "Kyrgyzstan" },
+                    { "LA", "Laos" },
+                    { "LV", "Latvia" },
+                    { "LB", "Lebanon" },
+                    { "LS", "Lesotho" },
+                    { "LR", "Liberia" },
+                    { "LY", "Libyan Arab Jamahiriya" },
+                    { "LI", "Liechtenstein" },
+                    { "LT", "Lithuania" },
+                    { "LU", "Luxembourg" },
+                    { "MK", "Macedonia" },
+                    { "MG", "Madagascar" },
+                    { "MY", "Malaysia" },
+                    { "ML", "Mali" },
+                    { "MT", "Malta" },
+                    { "MQ", "Martinique" },
+                    { "MR", "Mauritania" },
+                    { "MU", "Mauritius" },
+                    { "YT", "Mayotte" },
+                    { "MX", "Mexico" },
+                    { "FM", "Micronesia" },
+                    { "MD", "Moldova" },
+                    { "MC", "Monaco" },
+                    { "MN", "Mongolia" },
+                    { "MS", "Montserrat" },
+                    { "MA", "Morocco" },
+                    { "MZ", "Mozambique" },
+                    { "MM", "Myanmar" },
+                    { "NA", "Namibia" },
+                    { "NP", "Nepal" },
+                    { "NL", "Netherlands" },
+                    { "AN", "Netherlands Antilles" },
+                    { "NC", "New Caledonia" },
+                    { "NZ", "New Zealand" },
+                    { "NI", "Nicaragua" },
+                    { "NE", "Niger" },
+                    { "NG", "Nigeria" },
+                    { "NU", "Niue" },
+                    { "NO", "Norway" },
+                    { "OM", "Oman" },
+                    { "PK", "Pakistan" },
+                    { "PA", "Panama" },
+                    { "PG", "Papua New Guinea" },
+                    { "PY", "Paraguay" },
+                    { "PE", "Peru" },
+                    { "PH", "Philippines" },
+                    { "PL", "Poland" },
+                    { "PT", "Portugal" },
+                    { "PR", "Puerto Rico" },
+                    { "QA", "Qatar" },
+                    { "RO", "Romania" },
+                    { "RU", "Russian Federation" },
+                    { "RW", "Rwanda" },
+                    { "SA", "Saudi Arabia" },
+                    { "SN", "Senegal" },
+                    { "SP", "Serbia" },
+                    { "SC", "Seychelles" },
+                    { "SL", "Sierra Leone" },
+                    { "SG", "Singapore" },
+                    { "SK", "Slovakia" },
+                    { "SI", "Slovenia" },
+                    { "SO", "Somalia" },
+                    { "ZA", "South Africa" },
+                    { "ES", "Spain" },
+                    { "LK", "Sri Lanka" },
+                    { "SD", "Sudan" },
+                    { "SR", "Suriname" },
+                    { "SZ", "Swaziland" },
+                    { "SE", "Sweden" },
+                    { "CH", "Switzerland" },
+                    { "SY", "Syria" },
+                    { "TW", "Taiwan" },
+                    { "TJ", "Tajikistan" },
+                    { "TZ", "Tanzania" },
+                    { "TH", "Thailand" },
+                    { "TG", "Togo" },
+                    { "TK", "Tokelau" },
+                    { "TO", "Tonga" },
+                    { "TT", "Trinidad and Tobago" },
+                    { "TN", "Tunisia" },
+                    { "TR", "Turkey" },
+                    { "TM", "Turkmenistan" },
+                    { "UG", "Uganda" },
+                    { "UA", "Ukraine" },
+                    { "AE", "United Arab Emirates" },
+                    { "GB", "United Kingdom" },
+                    { "US", "United States" },
+                    { "UY", "Uruguay" },
+                    { "UZ", "Uzbekistan" },
+                    { "VU", "Vanuatu" },
+                    { "VA", "Vatican" },
+                    { "VE", "Venezuela" },
+                    { "VN", "Viet Nam" },
+                    { "VG", "British Virgin Islands" },
+                    { "VI", "U.S. Virgin Islands" },
+                    { "EH", "Western Sahara" },
+                    { "YE", "Yemen" },
+                    { "YU", "Yugoslavia" },
+                    { "ZR", "Zaire" },
+                    { "ZM", "Zambia" },
+                    { "ZW", "Zimbabwe" }
+                }
+            },
+            { "%%EURO", "Euro" }, // Euro variant display name
+            { "LocaleNamePatterns",
+                /* Formats for the display name of a locale, for a list of
+                 * items, and for composing two items in a list into one item.
+                 * The list patterns are used in the variant name and in the
+                 * full display name.
+                 */
+                new String[] {
+                    "{0,choice,0#|1#{1}|2#{1} ({2})}", // Display name
+                    "{0,choice,0#|1#{1}|2#{1},{2}|3#{1},{2},{3}}", // List
+                    "{0},{1}" // List composition
+                }
+            },
+            { "MonthNames", 
+                new String[] { 
+                    "January", // january
+                    "February", // february
+                    "March", // march
+                    "April", // april
+                    "May", // may
+                    "June", // june
+                    "July", // july
+                    "August", // august
+                    "September", // september
+                    "October", // october
+                    "November", // november
+                    "December", // december
+                    "" // month 13 if applicable
+                }
+            },
+            { "MonthAbbreviations", 
+                new String[] { 
+                    "Jan", // abb january
+                    "Feb", // abb february
+                    "Mar", // abb march
+                    "Apr", // abb april
+                    "May", // abb may
+                    "Jun", // abb june
+                    "Jul", // abb july
+                    "Aug", // abb august
+                    "Sep", // abb september
+                    "Oct", // abb october
+                    "Nov", // abb november
+                    "Dec", // abb december
+                    "" // abb month 13 if applicable
+                }
+            },
+            { "DayNames", 
+                new String[] { 
+                    "Sunday", // Sunday
+                    "Monday", // Monday
+                    "Tuesday", // Tuesday
+                    "Wednesday", // Wednesday
+                    "Thursday", // Thursday
+                    "Friday", // Friday
+                    "Saturday" // Saturday
+                }
+            },
+            { "DayAbbreviations", 
+                new String[] { 
+                    "Sun", // abb Sunday
+                    "Mon", // abb Monday
+                    "Tue", // abb Tuesday
+                    "Wed", // abb Wednesday
+                    "Thu", // abb Thursday
+                    "Fri", // abb Friday
+                    "Sat" // abb Saturday
+                }
+            },
+            { "AmPmMarkers", 
+                new String[] { 
+                    "AM", // am marker
+                    "PM" // pm marker
+                }
+            },
+            { "Eras", 
+                new String[] { // era strings
+                    "BC", 
+                    "AD" 
+                }
+            },
+            { "NumberPatterns", 
+                new String[] { 
+                    "#,##0.###;-#,##0.###", // decimal pattern
+                    "$#,##0.00;($#,##0.00)", // currency pattern
+                    "#,##0%" // percent pattern
+                }
+            },
+            { "NumberElements", 
+                new String[] { 
+                    ".", // decimal separator
+                    ",", // group (thousands) separator
+                    ";", // list separator
+                    "%", // percent sign
+                    "0", // native 0 digit
+                    "#", // pattern digit
+                    "-", // minus sign
+                    "E", // exponential
+                    "\u2030", // per mille
+                    "\u221e", // infinity
+                    "\ufffd" // NaN
+                }
+            },
+            { "CurrencyElements", 
+                new String[] { 
+                    "$", // local currency symbol
+                    "USD", // intl currency symbol
+                    "." // monetary decimal separator
+                }
+            },
+            { "DateTimePatterns", 
+                new String[] { 
+                    "h:mm:ss 'o''''clock' a z", // full time pattern
+                    "h:mm:ss a z", // long time pattern
+                    "h:mm:ss a", // medium time pattern
+                    "h:mm a", // short time pattern
+                    "EEEE, MMMM d, yyyy", // full date pattern
+                    "MMMM d, yyyy", // long date pattern
+                    "dd-MMM-yy", // medium date pattern
+                    "M/d/yy", // short date pattern
+                    "{1} {0}" // date-time pattern
+                }
+            },
+            { "DateTimeElements", 
+                new String[] { 
+                    "1", // first day of week
+                    "1" // min days in first week
+                }
+            },
+            { "CollationElements",new String[][]{
+                                    {"Version","1.0"},
+                                    {"Overide","false"},
+                                    {"Sequence",""}
+                                }
+            },
+            { "Measurement" ,""},
+            { "CountryNumber" , ""},
+            { "CountryISBNNumber" , ""},
+            { "LanguageLibraryUse" , ""},
+            { "PaperSize", new String[][]{
+                            {"Hieght",""},
+                            {"Width",""},
+                            {"Units", ""}
+                        }
+            },
+          
+            { "Messages" , new String[][] {
+                                {"yesExpression",""}, /* yes expression */
+                                {"noExpression",""}  /* no expression */
+                            }
+            },
+            { "AddressFormat", new String[][]{
+                                        {"PostalFormat",""},
+                                }
+            },
+
+            {"NameFormat", new String[][]{
+                                	{"NamePattern",""},
+		                            {"GeneralSalutaion", ""},
+		                            {"ShortSalutationMr", ""},
+		                            {"ShortSalutationMiss",""},
+		                            {"ShortSalutationMrs",""},
+		                            {"LongSalutationMr",""},
+		                            {"LongSalutationMiss",""},
+		                            {"LongSalutationMrs",""}
+                            }
+            }, 
+            { "Identification", new String[][]{
+                                {"Title",""},
+                                {"Source",""},
+                                {"Address",""},
+                                {"Contact",""},
+                                {"Email",""},
+                                {"Telephone", ""},
+                                {"Fax", ""},
+                                {"Language",""},
+                                {"Territory",""},
+                                {"Audience", ""},
+                                {"Application", ""},
+                                {"Abbreviation", ""},
+                                {"Revision", ""},
+                                {"Date",""}
+                        }
+                        
+            },
+            { "TelephoneFormat", new String[][]{
+                                {"InternationalFormat",""},
+                                {"DomesticFormat",""},
+                                {"InternationalDialCode",""},
+                                {"InternationalPrefix",""}
+                        }
+            }    
+        };
+    }
+}
+            
+          
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/normalizer/CPPWriter.java b/src/com/ibm/icu/dev/tool/normalizer/CPPWriter.java
new file mode 100755
index 0000000..7a7a51a
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/normalizer/CPPWriter.java
@@ -0,0 +1,215 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/normalizer/Attic/CPPWriter.java,v $ 
+ * $Date: 2002/02/25 22:43:59 $ 
+ * $Revision: 1.8 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.normalizer;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import com.ibm.icu.util.CompactByteArray;
+import com.ibm.icu.util.CompactCharArray;
+import com.ibm.icu.impl.Utility;
+import java.io.*;
+
+/**
+ * CPPWriter knows how to write data structures out to C++ source and header files
+ */
+class CPPWriter extends SourceWriter {
+    PrintWriter source;
+    PrintWriter header;
+
+    String className;
+
+    public CPPWriter(String fileName, String cName) throws FileNotFoundException {
+        className = cName;
+        int i = fileName.lastIndexOf('/');
+        String name = (i >= 0) ? fileName.substring(i+1) : fileName;
+
+        // Find the class name
+        header = new PrintWriter(new FileOutputStream(fileName + ".h"));
+        writeHeader(header);
+        header.println("#include \"unicode/utypes.h\"");
+        header.println("#include \"ucmp8.h\"");
+        header.println("#include \"ucmp16.h\"");
+        header.println("");
+        header.println("struct " + className + " {");   // "struct" makes everything public
+
+        source = new PrintWriter(new FileOutputStream(fileName + ".cpp"));
+        writeHeader(source);
+        source.println("#include \"" + name + ".h\" ");
+        source.println("");
+    }
+
+    public void close() {
+        header.println("};");
+        header.close();
+        source.close();
+        header = null;
+        source = null;
+    }
+
+    public void write(String name, short value) {
+        header.println("    enum { " + name + " = " + value + " };");
+    }
+
+    public void write(String name, int value) {
+        header.println("    enum { " + name + " = " + value + " };");
+    }
+
+    public void writeHex(String name, char value) {
+        header.println("    enum { " + name + " = 0x" + Utility.hex(value) + " };");
+    }
+
+    public void writeHex(String name, int value) {
+        header.println("    enum { " + name + " = 0x" + Integer.toString(value,16) + " };");
+    }
+
+    public void write(String name, CompactCharArray array) {
+        array.compact(false);
+
+        String indexName = name + "_index";
+        String valueName = name + "_values";
+
+        write(indexName, array.getIndexArray());
+        write(valueName, array.getValueArray());
+
+        header.println("");
+        header.println("    static CompactShortArray _" + name + ";");
+        header.println("");
+        header.println("    static const CompactShortArray* " + name + ";");
+
+        source.println("");
+        source.println("CompactShortArray " +
+                       className + "::_" + name + ";");
+        source.println("");
+        source.println("const CompactShortArray* " +
+                       className + "::" + name + " = ");
+        source.println("    ucmp16_initAliasWithBlockShift(&" + className + "::_" + name + ",");
+        source.println("                                   (uint16_t*)" + indexName + ",");
+        source.println("                                   (int16_t*)" + valueName + ",");
+        source.println("                                   " +
+                       array.getValueArray().length + ", " +
+                       "0x0000, " + // default value
+                       CompactCharArray.BLOCKSHIFT + ");");
+    }
+
+    public void write(String name, CompactByteArray array) {
+        array.compact(false);
+
+        String indexName = name + "_index";
+        String valueName = name + "_values";
+
+        write(indexName, array.getIndexArray());
+        write(valueName, array.getValueArray());
+
+        header.println("");
+        header.println("    static CompactByteArray _" + name + ";");
+        header.println("");
+        header.println("    static const CompactByteArray* " + name + ";");
+
+        source.println("");
+        source.println("CompactByteArray " +
+                       className + "::_" + name + ";");
+        source.println("");
+        source.println("const CompactByteArray* " +
+                       className + "::" + name + " = ");
+        source.println("    ucmp8_initAlias(&" + className + "::_" + name + ",");
+        source.println("                    (uint16_t*)" + indexName + ",");
+        source.println("                    (int8_t*)" + valueName + ",");
+        source.println("                    " + array.getValueArray().length + ");");
+    }
+
+    public void write(String name, StringBuffer str) {
+        write(name, str.toString().toCharArray());
+    }
+
+    public void write(String name, char[] array) {
+        header.println("");
+        header.println("    static const uint16_t " + name + "[];");
+
+        source.println("");
+        source.println("const uint16_t " + className + "::" + name + "[] = {");
+
+        source.print("    ");
+        for (int i = 0; i < array.length; i++) {
+            if (i > 0 && i % 8 == 0) {
+                source.print(Utility.LINE_SEPARATOR + "    ");
+            }
+            source.print("0x" + Utility.hex(array[i]) + ", ");
+        }
+        source.println("};");
+    }
+
+    public void write(String name, short[] array) {
+        header.println("");
+        header.println("    static const uint16_t " + name + "[];");
+
+        source.println("");
+        source.println("const uint16_t " + className + "::" + name + "[] = {");
+
+        source.print("    ");
+        for (int i = 0; i < array.length; i++) {
+            if (i > 0 && i % 8 == 0) {
+                source.print(Utility.LINE_SEPARATOR + "    ");
+            }
+            source.print("0x" + Utility.hex((char)array[i]) + ", ");
+        }
+        source.println("};");
+    }
+
+    public void write(String name, int[] array) {
+        header.println("");
+        header.println("    static const int32_t " + name + "[];");
+
+        source.println("");
+        source.println("const int32_t " + className + "::" + name + "[] = {");
+
+        source.print("    ");
+        for (int i = 0; i < array.length; i++) {
+            if (i > 0 && i % 8 == 0) {
+                source.print(Utility.LINE_SEPARATOR + "    ");
+            }
+            source.print("0x" + Integer.toString(array[i],16) + ", ");
+        }
+        source.println("};");
+    }
+
+    public void write(String name, byte[] array) {
+        header.println("");
+        header.println("    static const uint8_t " + name + "[];");
+
+        source.println("");
+        source.println("const uint8_t " + className + "::" + name + "[] = {");
+
+        source.print("    ");
+        for (int i = 0; i < array.length; i++) {
+            if (i > 0 && i % 8 == 0) {
+                source.print(Utility.LINE_SEPARATOR + "    ");
+            }
+            source.print("0x" + hex2(array[i]) + ", ");
+        }
+        source.println("};");
+    }
+
+    private static StringBuffer __buf = new StringBuffer();
+
+    // This method not multithread safe!
+    private static final String hex2(int x) {
+        __buf.setLength(0);
+        __buf.append(hex1(x>>4)).append(hex1(x));
+        return __buf.toString();
+    }
+
+    private static final char hex1(int x) {
+        return "0123456789ABCDEF".charAt(x & 0xF);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/normalizer/JavaWriter.java b/src/com/ibm/icu/dev/tool/normalizer/JavaWriter.java
new file mode 100755
index 0000000..3dae860
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/normalizer/JavaWriter.java
@@ -0,0 +1,110 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/normalizer/Attic/JavaWriter.java,v $ 
+ * $Date: 2002/02/25 22:43:59 $ 
+ * $Revision: 1.6 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.normalizer;
+
+//import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.CompactCharArray;
+import com.ibm.icu.util.CompactByteArray;
+import java.io.*;
+
+/**
+ * JavaWriter knows how to write data structures out to a Java source file
+ */
+class JavaWriter extends SourceWriter {
+    PrintWriter out;
+
+    public JavaWriter(String name) throws FileNotFoundException {
+        // Find the class name
+        int cIndex = name.lastIndexOf('/');
+        String cName = (cIndex >= 0) ? name.substring(cIndex+1) : name;
+
+        out = new PrintWriter(new FileOutputStream(name + ".java"));
+
+        writeHeader(out);
+        out.println("class " + cName + " {");
+    }
+
+    public void close() {
+        out.println("}");
+        out.close();
+        out = null;
+    }
+
+    public void write(String name, short value) {
+        out.println("    static final short " + name + " = " + value + ";");
+    }
+
+    public void write(String name, int value) {
+        out.println("    static final int " + name + " = " + value + ";");
+    }
+
+    public void writeHex(String name, char value) {
+        out.println("    static final char " + name + " = 0x" + Integer.toString((int)value,16) + ";");
+    }
+
+    public void writeHex(String name, int value) {
+        out.println("    static final int " + name + " = 0x" + Integer.toString(value,16) + ";");
+    }
+
+    public void write(String name, CompactCharArray array) {
+        array.compact(false);
+        out.println("");
+        out.println("    static final CompactCharArray " + name + " = new CompactCharArray(");
+        out.println(Utility.formatForSource(Utility.arrayToRLEString(array.getIndexArray())));
+        out.println("        ," );
+        out.println(Utility.formatForSource(Utility.arrayToRLEString(array.getValueArray())));
+        out.println("        );" );
+    }
+
+    public void write(String name, CompactByteArray array) {
+        array.compact(false);
+        out.println("");
+        out.println("    static final CompactByteArray " + name + " = new CompactByteArray(");
+        out.println(Utility.formatForSource(Utility.arrayToRLEString(array.getIndexArray())));
+        out.println("        ," );
+        out.println(Utility.formatForSource(Utility.arrayToRLEString(array.getValueArray())));
+        out.println("        );" );
+    }
+
+    public void write(String name, StringBuffer str) {
+        out.println("");
+        out.println("    static final String " + name + " = ");
+        out.println(Utility.formatForSource(str.toString()));
+        out.println("    ;");
+    }
+
+    public void write(String name, char[] array) {
+        out.println("");
+        out.println("    static final char[] " + name + " = Utility.RLEStringToCharArray(");
+        out.println(Utility.formatForSource(Utility.arrayToRLEString(array)));
+        out.println("    );");
+    }
+
+    public void write(String name, int[] array) {
+        out.println("");
+        out.println("    static final int[] " + name + " = Utility.RLEStringToIntArray(");
+        out.println(Utility.formatForSource(Utility.arrayToRLEString(array)));
+        out.println("    );");
+    }
+
+    void writeHeader(PrintWriter out) {
+        super.writeHeader(out);
+        out.println("");
+        out.println("package com.ibm.icu.text;");
+        out.println("import com.ibm.icu.util.*;");
+        out.println("");
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/normalizer/MutableChar.java b/src/com/ibm/icu/dev/tool/normalizer/MutableChar.java
new file mode 100755
index 0000000..5cd0939
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/normalizer/MutableChar.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/normalizer/Attic/MutableChar.java,v $ 
+ * $Date: 2002/02/16 03:05:33 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+// MutableChar.java
+
+package com.ibm.icu.dev.tool.normalizer;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.lang.Comparable;
+import java.io.Serializable;
+
+class MutableChar implements Cloneable, Comparable, Serializable {
+
+    public char value;
+
+    public MutableChar(char newValue) {
+        value = newValue;
+    }
+    public MutableChar set(char newValue) {
+        value = newValue;
+        return this;
+    }
+    public boolean equals(Object other) {
+        return value == ((MutableChar)other).value;
+    }
+    public int hashCode() {
+        return value;
+    }
+    public String toString() {
+        return String.valueOf(value);
+    }
+    public int compareTo(Object b) {
+        char ch = ((MutableChar)b).value;
+        return value == ch ? 0 : value < ch ? -1 : 1;
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/normalizer/NormalizerBuilder.java b/src/com/ibm/icu/dev/tool/normalizer/NormalizerBuilder.java
new file mode 100755
index 0000000..58fc499
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/normalizer/NormalizerBuilder.java
@@ -0,0 +1,1155 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/normalizer/Attic/NormalizerBuilder.java,v $ 
+ * $Date: 2002/03/01 18:48:01 $ 
+ * $Revision: 1.16 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.normalizer;
+
+import java.io.*;
+import java.util.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.CompactByteArray;
+import com.ibm.icu.util.CompactCharArray;
+import com.ibm.icu.impl.Utility;
+
+
+public final class NormalizerBuilder
+{
+    public static void main(String args[]) throws IOException {
+        try {
+            NormalizerBuilder foo = new NormalizerBuilder(args);
+            foo = null;
+        } catch (Throwable e) {
+            System.err.println(e.getLocalizedMessage());
+            e.printStackTrace();
+            System.in.read();
+        }
+    }
+
+    private UInfo uinfo;
+
+    /**
+     * Map char->String.  Each entry maps a character with a
+     * decomposition (either canonical or compatibility) to that
+     * decomposition.  The decomposition is in canonical order.
+     */
+    private DecompMap decomps = new DecompMap();
+
+    /**
+     * Map of characters whose full canonical decomposition is
+     * DIFFERENT from their full compatibility decomposition.
+     */
+    private DecompMap explodeCompat = new DecompMap();
+
+    /**
+     * Map of characters with a decomposition that are neither
+     * in explodeCompat nor in permutedCompositions.
+     */
+    private DecompMap explodeOnly   = new DecompMap();
+
+    /**
+     * Map of String->char of permutations that compose to a
+     * character.  This does not include singletons or other
+     * composition exclusions.  It is an inverse list, with valid
+     * permutations, for canonical decomposition.
+     */
+    private CompMap permutedCompositions = new CompMap();
+    private CompMap binaryCompositions = new CompMap();
+
+    /**
+     * A set of characters that form the base of a combining
+     * sequence.
+     */
+    private CharSet bases = new CharSet();
+
+    /**
+     * A set of characters that form the combining character of
+     * a combining sequence.
+     */
+    private CharSet combining = new CharSet();
+
+    private Map pairExplosions = new HashMap();
+
+    private boolean fVerbose = false;
+    private boolean fWriteData = false;
+    private boolean fShowSizes = false;
+    private boolean fPrompt = false;
+    private boolean fJava = true;
+    private boolean fCPP = false;
+    private String fOutDir = null; // output directory for either Java or C++
+
+    /**
+     * The highest Unicode character that has a canonical
+     * decomposition.  (i.e. largest char that can result from a
+     * primary canonical composition.)  This is the largest char in
+     * permutedCompositions.
+     */
+    char largestChar = 0;
+
+    public NormalizerBuilder(String[] args) throws IOException
+    {
+        // Parse my command line
+        for (int i = 0; i < args.length; i++)
+        {
+            if (args[i].equals("-data")) {
+                uinfo = new UInfo(args[++i], args[++i]);
+            }
+            else if (args[i].equals("-write")) {
+                fWriteData = true;
+            }
+            else if (args[i].equals("-verbose") || args[i]. equals("-v")) {
+                fVerbose = true;
+            }
+            else if (args[i].equals("-size")) {
+                fShowSizes = true;
+            }
+            else if (args[i].equals("-prompt")) {
+                fPrompt = true;
+            }
+            else if (args[i].equals("-java")) {
+                fJava = true;
+                fCPP = false;
+            }
+            else if (args[i].equals("-cpp")) {
+                fCPP = true;
+                fJava = false;
+            }
+            else if (args[i].equals("-outdir")) {
+                fOutDir = args[++i];
+            }
+        }
+        if (uinfo == null) {
+            uinfo = new UInfo();
+        }
+        if (fOutDir == null) {
+            fOutDir = fJava ? "src/com.ibm.icu.text/"
+                            : "./";
+        }
+        if (!fOutDir.endsWith("/")) { fOutDir += '/'; }
+
+        // not used boolean canonicalOnly = true;
+
+        // Build decomps, a char->String mapping of characters to their
+        // decompositions, either canonical or compatibility.
+        createDecompositions();
+
+        outv("\nGenerating permuted compositions...");
+
+        // Form the list of all the permuted sequences that are
+        // canonically equivalent to the canonical decompositions.  As
+        // a by-product, find out which are not combining character
+        // sequences.
+
+        for (char ch = 0; ch < 0xFFFF; ch++) {
+            String decomp = decomps.get(ch);
+
+            if (decomp != null) {
+                boolean done = false;
+
+                if (!uinfo.getFullDecomposition(ch,true).equals(
+                            uinfo.getFullDecomposition(ch,false)))
+                {
+                    explodeCompat.put(ch, uinfo.getFullDecomposition(ch, false));
+                    done = true;
+                }
+                // It's always a combining base sequence, so removed last check - liu
+                if (uinfo.hasCanonicalDecomposition(ch) && decomp.length() > 1
+                    && !uinfo.isExcludedComposition(ch) /*&& uinfo.isCBS(decomp)*/)
+                {
+                    if (decomp.length() <= 2) {
+                        permutedCompositions.put(decomp, ch);
+                    }
+                    else {
+                        /* Create a comprehensive list of
+                         * permutations.  Assume the first char is a
+                         * base char, so don't permute it into the
+                         * middle of the string -- just concatenate it
+                         * onto the front.  However, there may be
+                         * embedded base characters, so we do a
+                         * further check for canonical decomposition
+                         * equivalence below. */
+                        List alternatives = concat(decomp.charAt(0),
+                            jumble(decomp.substring(1, decomp.length())));
+
+                        for (int i = 0; i < alternatives.size(); ++i)
+                        {
+                            String variant = (String)alternatives.get(i);
+                            String normalized = uinfo.fixCanonical(variant);
+
+                            if (normalized.equals(decomp)) {
+                                permutedCompositions.put(variant, ch);
+                            }
+                        }
+                    }
+                    largestChar = ch;
+                    done = true;
+                }
+                if (!done) {
+                    explodeOnly.put(ch, decomp);    // Disparaged
+                }
+            }
+        }
+
+        outv("\nLargest composed char: " + Utility.hex(largestChar));
+
+        // Form the binary compositions
+        outv("\nGenerating pairwise compositions...");
+
+        Iterator list = permutedCompositions.keySet().iterator();
+        while (list.hasNext()) {
+            String decomp = (String)list.next();
+            char ch = permutedCompositions.get(decomp);
+
+            if (decomp.length() > 2) {
+                //
+                // If this is a composition of more than two characters,
+                // see if its initial portion is also a composition.  If so, that lets
+                // us build up this composed character iteratively.
+                //
+                for (int i = decomp.length()-1; i > 1; --i) {
+                    String partial = decomp.substring(0,i);
+                    char partialMap = permutedCompositions.get(partial);
+                    if (partialMap != 0) {
+                        decomp = partialMap + decomp.substring(i);
+                        break;
+                    }
+                }
+            }
+            if (decomp.length() <= 2) {
+                binaryCompositions.put(decomp, ch);
+            } else {
+                //
+                // The composition takes more than two characters, and there's
+                // no way to build it up from smaller ones.
+                //
+                if (decomp.equals(uinfo.fixCanonical(decomp)))
+                {
+                    // If the decomp is in canonical order, we're in trouble,
+                    // since that means there's no way to generate this composed
+                    // character from its canonically decomposed equivalent.
+                    err("No pairwise compose of " + Utility.hex(decomp) +
+                            " > " + Utility.hex(ch) + " " + uinfo.getName(ch,true) );
+                }
+                else {
+                    // If the decomp is *not* in canonical order, it's not as
+                    // bad, since composition will still work as long as
+                    warn("No pairwise compose of non-canon " + Utility.hex(decomp) +
+                            " > " + Utility.hex(ch) + " " + uinfo.getName(ch,true) );
+                }
+            }
+
+            bases.add(decomp.charAt(0));
+
+            // add to list of all combining characters in composites
+            for (int q = 1; q < decomp.length(); ++q) {
+                combining.add(decomp.charAt(q));
+            }
+        }
+
+
+        // Generate the pairwise explosions, where a composed char + combining char
+        // transforms into a different pair of characters, usually because the
+        // canonical combining classes are reversed.
+
+        outv("\nGenerating exploding pairs....");
+
+        List binaryValues = new ArrayList(binaryCompositions.values());
+        Collections.sort(binaryValues);
+
+        for (char addOn = 0; addOn < 0xFFFF; addOn++) {
+            if (combining.contains(addOn))
+            {
+                list = binaryValues.iterator();
+
+                while (list.hasNext()) {
+                    MutableChar unichar = (MutableChar)list.next();
+                    String chStr = String.valueOf(unichar.value);
+                    String source = chStr + addOn;
+
+                    String comp = binaryComposition(source);
+
+                    if (comp.length() == 1) continue; // don't care if combines
+                    if (comp.charAt(0) == addOn || comp.charAt(1) == addOn) continue; // rearranges
+
+                    if (!source.equals(comp)) {
+                        String decomp = fullDecomposition(source);
+                        decomp = null;
+                        pairExplosions.put(source,comp);
+                        bases.add(unichar);
+                    }
+                }
+            }
+        }
+
+        buildDecompData();
+        buildComposeData();
+        outv("Success!");
+
+        if (fPrompt) {
+            System.out.println("\nHit any key to continue...");
+            System.in.read();
+        }
+    }
+
+    public String fullDecomposition(String s) {
+        return fullDecomposition(s, new StringBuffer()).toString();
+    }
+
+    public StringBuffer fullDecomposition(char ch, StringBuffer output) {
+        String value = decomps.get(ch);
+        if (value == null) {
+            bubbleAppend(output, ch);
+        }
+        else {
+            bubbleAppend(output, value);
+        }
+        return output;
+    }
+
+    public StringBuffer fullDecomposition(String s, StringBuffer output) {
+        for (int i = 0; i < s.length(); ++i) {
+            fullDecomposition(s.charAt(i),output);
+        }
+        return output;
+    }
+
+    public String binaryComposition(String sr) {
+        // set up decomposed string, init variables
+        StringBuffer output = new StringBuffer();
+        StringBuffer decomp = new StringBuffer();
+
+        if (sr.length() == 0) return output.toString();
+
+        // First generate the full decomposition of the input string
+        fullDecomposition(sr, decomp);
+        int basePosition = 0;
+        char base = decomp.charAt(0);
+        output.append(base);
+
+        // handle degenerate case--no base character at start
+        if (uinfo.getCanonicalClass(base) != 0) {
+            // later
+        }
+
+        // loop through, composing items with base
+        for (int i = 1; i < decomp.length(); ++i) {
+            char ch = decomp.charAt(i);
+            short can = uinfo.getCanonicalClass(ch);
+
+            char value = binaryCompositions.get(String.valueOf(base) + ch);
+
+            if (value != 0 && noObstructions(output, basePosition, can)) {
+                base = value;
+                output.setCharAt(basePosition, base);
+            } else if (can == 0) {
+                basePosition = output.length();
+                base = ch;
+                output.append(ch);
+            } else {
+                bubbleAppend(output, ch, can);
+            }
+        }
+        return output.toString();
+    }
+
+    public boolean noObstructions(StringBuffer buffer, int pos, short can) {
+        for (int j = buffer.length()-1; j > pos; --j) {
+            if (can == uinfo.getCanonicalClass(buffer.charAt(j))) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    public void bubbleAppend(StringBuffer buffer, char ch, short can) {
+        for (int j = buffer.length()-1; j >= 0; --j) {
+            if (can >= uinfo.getCanonicalClass(buffer.charAt(j))) {
+                buffer.insert(j + 1, ch);
+                return;
+            }
+        }
+        buffer.insert(0, ch);
+    }
+
+    public void bubbleAppend(StringBuffer buffer, char ch) {
+        bubbleAppend(buffer, ch, uinfo.getCanonicalClass(ch));
+    }
+
+    public void bubbleAppend(StringBuffer buffer, String s) {
+        for (int i = 0; i < s.length(); ++i) {
+            bubbleAppend(buffer, s.charAt(i));
+        }
+    }
+
+    String getDecomposition(char ch) {
+        return decomps.get(ch);
+    }
+
+
+    /**
+     * Generate a Map of all decompositions in Unicode.  The keys in
+     * the map are MutableChar objects, one for each character that
+     * has a decomposition.  The values are String objects containing
+     * the full decomposition for the character, in canonical order.
+     */
+    private void createDecompositions()
+    {
+        outv("\nGenerating Full decompositions...");
+        StringBuffer temp = new StringBuffer();
+
+        short compatCount=0, canonCount=0;
+
+        for (char ch = 0; ch < 0xFFFF; ++ch) {
+            if (ch >= '\u4E00' && ch <= '\uD7A3') continue; // skip ideos
+
+            short category = uinfo.getCategory(ch);
+
+            if (category == uinfo.UNASSIGNED) continue; //skip reserved
+            if (category == uinfo.CONTROL) continue;
+            if (category == uinfo.FORMAT) continue;
+            if (category == uinfo.PRIVATE_USE) continue;
+            if (category == uinfo.SURROGATE) continue;
+
+            boolean canon = uinfo.hasCanonicalDecomposition(ch);
+            boolean compat = uinfo.hasCompatibilityDecomposition(ch);
+
+            if (canon) canonCount++;
+            if (compat) compatCount++;
+
+            if (canon || compat) {
+                String decomp = uinfo.getFullDecomposition(ch, canon);
+                temp.setLength(0);
+                temp.append(decomp);
+                uinfo.fixCanonical(temp); // put into canonical order
+
+                decomps.put(ch, temp.toString() );
+            }
+        }
+    }
+
+    /**
+     * Modify a list in place by prepending the given character to all
+     * of its elements, which are assumed to be strings.
+     */
+    static List concat(char ch, List a) {
+        for (int i = 0; i < a.size(); ++i) {
+            a.set(i, ch + (String)a.get(i));
+        }
+        return a;
+    }
+
+    /**
+     * Return a list of Strings for all possible permutations of the
+     * characters in the input string.
+     */
+    static List jumble (String source)
+    {
+        ArrayList result = new ArrayList();
+        if (source.length() == 1) {
+            result.add(source);
+        } else for (int i = 0; i < source.length(); ++i) {
+            result.addAll( concat( source.charAt(i),
+                                   jumble(source.substring(0,i)
+                                          + source.substring(i+1,source.length()))));
+        }
+        return result;
+    }
+
+    static final int STR_INDEX_SHIFT = 2;
+    static final int STR_LENGTH_MASK = 0x0003;
+
+    static final int DECOMP_RECURSE = 0x00008000;
+    static final int DECOMP_MASK  = 0x00007FFF;
+
+    /**
+     * Generate a new "DecompData.java" that contains the CompactArray definitions
+     * used in the {@link Normalizer.DECOMPOSE} operation.
+     */
+    void buildDecompData() throws IOException {
+
+        outv("\nGenerating DecompData.java....");
+        //
+        // For each Unicode character that has a decomposition, we put its
+        // fully-decomposed form at the end of the "contents" string, followed
+        // by a null, and we put its index in "contents" into the CompactArray.
+        // If it does not have a decomposition, we store a bogus index.
+        //
+        // We do this first for all of the compatibility decompositions, save
+        // the index in MAX_COMPAT, and then do it again for the canonical
+        // decompositions.  When the array is used later, any character whose
+        // decomp has an index greater than MAX_COMPAT is a canonical decomp.
+        //
+        int canonIndex = 0;
+        int compatIndex = 0;
+
+        // Map from Unicode character to replacement string index
+        CompactCharArray offsets = new CompactCharArray((char)0);
+
+        // We also need a place to store the replacement strings.  Add a char at
+        // the front so that "0" won't be the index of any of the replacement strings.
+        StringBuffer replace = new StringBuffer().append("\uffff");
+
+        for (char ch = 0; ch < 0xFFFF; ch++) {
+            if (uinfo.hasCompatibilityDecomposition(ch)) {
+                compatIndex = putLength(replace, decomps.get(ch), 0);
+                offsets.setElementAt(ch, (char)compatIndex);
+            }
+        }
+
+        // Add the canonical decomps.  Their indices must be > compatIndex.
+        for (char ch = 0; ch < 0xFFFF; ch++) {
+            if (uinfo.hasCanonicalDecomposition(ch)) {
+
+                if (ch == 0x0f77) {
+                    outv("0F77: decomps.get() = " + Utility.hex(decomps.get(ch)));
+                    outv("0F77: fullDecomp = " + Utility.hex(uinfo.getFullDecomposition(ch,false)));
+                }
+
+                canonIndex = putLength(replace, decomps.get(ch), compatIndex);
+
+                // If this character's full compatibility decomposition is different from
+                // its canonical decomp, that means one of the characters in its
+                // canonical decomp itself has a compatibility decomp.  To deal with this,
+                // we set a bit flag telling the decomposer to recurse on this character.
+
+                if (!uinfo.getFullDecomposition(ch,true).equals(uinfo.getFullDecomposition(ch,false))) {
+                    offsets.setElementAt(ch, (char)(canonIndex | DECOMP_RECURSE));
+                } else {
+                    offsets.setElementAt(ch, (char)canonIndex);
+                }
+            }
+        }
+
+        //
+        // Now generate another CompactArray containing the combining class of every
+        // character in Unicode
+        //
+        final byte BASE = 0;
+        CompactByteArray canonClasses = new CompactByteArray(BASE);
+
+        for (char ch = 0; ch < 0xFFFF; ch++) {
+            short canonClass = uinfo.getCanonicalClass(ch);
+            if (canonClass != 0) {
+                canonClasses.setElementAt(ch, (byte)canonClass);
+            }
+        }
+
+        // Finally, write the data out to a compilable Java source file
+
+        if (fJava) {
+            String f = fOutDir + "DecompData";
+            out("Writing " + f);
+            writeDecompData(new JavaWriter(f),
+                        canonIndex, compatIndex, BASE, offsets, replace, canonClasses);
+            
+        }
+
+        if (fCPP) {
+            String f = fOutDir + "dcmpdata";
+            out("Writing " + f + ".(cpp|h)");
+            writeDecompData(new CPPWriter(f, "DecompData"),
+                        canonIndex, compatIndex, BASE, offsets, replace, canonClasses);
+        }
+
+        outv("Decomp data: MAX_CANONICAL = " + canonIndex + ", MAX_DECOMP = " + compatIndex);
+
+        if (fShowSizes) {
+            int offsetSize = offsets.getIndexArray().length * 2 + offsets.getValueArray().length * 2;
+            int canonSize = canonClasses.getIndexArray().length * 2 + canonClasses.getValueArray().length;
+            int replaceLength = replace.length();
+
+            outv("Total runtime size of decomp data is "
+                + (offsetSize + canonSize + replaceLength));
+
+            outv("  offsets:      " + offsetSize);
+            outv("  canonClasses: " + canonSize);
+            outv("  replace:      " + replaceLength);
+        }
+    }
+
+    void writeDecompData(SourceWriter out, int maxCanon, int maxCompat, short BASE,
+                        CompactCharArray offsets, StringBuffer contents,
+                        CompactByteArray canonClasses)
+    {
+        out.write("MAX_CANONICAL",  maxCanon        );
+        out.write("MAX_COMPAT",     maxCompat       );
+        out.write("DECOMP_MASK",    DECOMP_MASK     );
+        out.write("DECOMP_RECURSE", DECOMP_RECURSE  );
+        out.write("BASE",           BASE            );
+        out.write("offsets",        offsets         );
+        out.write("contents",       contents        );
+        out.write("canonClass",     canonClasses    );
+        out.close();
+    }
+
+
+    //==========================================================================================
+    // Methods for generating and writing the composition data
+    //
+    final int TYPE_MASK   = 0x0007;
+    final int INDEX_MASK  = 0xFFF8;
+    final int INDEX_SHIFT = 3;
+
+    // MAX_BASES is used to map a 2-diminsional (base,combining) index pair onto a
+    // one-dimensional CompactArray.  We could just use baseCount, but making it a power
+    // of two allows slightly better compaction.
+
+    final int MAX_BASES   = 1024;   // Product must be <= 64K
+    final int MAX_COMBINE = 65536/MAX_BASES;
+
+    final char                // for character types
+        IGNORE = 0,
+        BASE = 1,
+        EXPLODING_BASE = 2,
+        COMBINING = 3,
+        INITIAL_JAMO = 4,
+        MEDIAL_JAMO = 5,
+        FINAL_JAMO = 6,
+        HANGUL = 7;
+
+    // These variables actually hold the composition data.
+    short baseCount = 1;        // Leave 0 as an invalid index
+    short combineCount = 1;     // Leave 0 as an invalid index
+    short nccCount = 0;
+    int   maxCompat = 0;
+    int   maxCanon = 0;
+
+    // This array contains types (from the set above) and indices into the "replace"
+    // and "actions" arrays
+    CompactCharArray lookup = new CompactCharArray(IGNORE);
+
+    // We also need a place to store the strings that result from replacements,
+    // explosions, and combinations.  Add a char at the front so that "0" won't
+    // be the index of any of the replacement strings.
+    StringBuffer replace = new StringBuffer().append(" ");
+
+    // We need to represent each canonical character class as a single bit
+    // so that we can OR together a mask of all combining char classes seen
+    // Build an array that maps from combining class to a compacted integer
+    // from 0..n-1, where n is the number of distinct combining classes.
+    // E.g., in 3.0, there are 53 distinct combining classes.
+    int[] classMap = new int[256];
+    int[] typeBit;
+
+    // Build a two-dimensional array of the action to take for each base/combining pair
+    CompactCharArray actions = new CompactCharArray((char)0);
+
+    char[] actionIndex;
+
+    /**
+     * Generate a new "ComposeData.java" that contains the CompactArray definitions
+     * used in the {@link Normalizer.COMPOSE} operation.
+     */
+    void buildComposeData() throws IOException
+    {
+       outv("\nGenerating ComposeData.java....");
+
+        BitSet usedIndices = new BitSet();
+        CharSet explodingBases = new CharSet();
+        NonComposingCombiningMap nccMap = new NonComposingCombiningMap();
+
+        // Find all characters that are both bases *and* have compatibility
+        // decompositions.  These are weird
+        for (char ch = 0; ch < 0xFFFF; ch++) {
+            if (bases.contains(ch) && uinfo.hasCompatibilityDecomposition(ch)) {
+                //
+                // Add this character's explosion to the replacement string list.
+                // We're going to make sure that its "base index", i.e. the
+                // index for it in the actions array, is the same as the
+                // explosion's index in the replace string.  This lets
+                // us use the same index for the character's two behaviors
+                //
+                int index = put(replace, explodeCompat.get(ch), 0);
+
+                outv(Utility.hex(ch) + " is base and has compat explosion "
+                                  + Utility.hex(explodeCompat.get(ch)) );
+
+                addChar(lookup, ch, EXPLODING_BASE, index);
+                usedIndices.set(index);
+                explodingBases.add(ch);
+            }
+        }
+
+        // First add the base characters to the array.
+        // At the same time, compute their indices.
+        // Leave an empty base index of 0 as a placeholder for null operations.
+        //
+
+        for (char ch = 0; ch < 0xFFFF; ch++)
+        {
+
+            if (explodingBases.contains(ch)) {
+                continue;
+            }
+
+            short cclass = uinfo.getCanonicalClass(ch);
+
+            if (bases.contains(ch)) {
+                // Make sure that we don't use a base index that was already used
+                // for an exploding base character.
+                while (usedIndices.get(baseCount)) {
+                    baseCount++;
+                }
+                // Now add the character to lookup as a base
+                addChar(lookup, ch, BASE, baseCount++);
+            }
+            if (combining.contains(ch)) {
+                classMap[cclass] = 1;       // Mark this combining class as being used
+                addChar(lookup, ch, COMBINING, combineCount++);
+            }
+
+            if (ch >= '\u1100' && ch < '\u1160') {
+                addChar(lookup, ch, INITIAL_JAMO, 0);
+            }
+            if (ch >= '\u1161' && ch < '\u11a6') {
+                addChar(lookup, ch, MEDIAL_JAMO, 0);
+            }
+            if (ch >= '\u11a7' && ch < '\u11fa') {
+                addChar(lookup, ch, FINAL_JAMO, 0);
+            }
+            if (ch >= 0xac00 && ch <= 0xd7a4) {
+                addChar(lookup, ch, HANGUL, 0);
+            }
+
+            // Add explosions for all compatibility decompositions,
+            // including the Jamo --> Conjoining Jamo decomps.
+            // If the canonical decomposition is exactly one character
+            // one (4 hex digits) then we deal with it separately below.
+            if (explodeCompat.contains(ch) &&
+                uinfo.getDecomposition(ch).length() != 4)
+            {
+                maxCompat = put(replace, explodeCompat.get(ch), 0);
+                addExplosion(lookup, ch, maxCompat);
+            }
+        }
+
+        // Now add the explosions resulting from canonical decompositions
+        // These will all have indices greater than "maxCompat" so we can distinguish them.
+        //
+        for (char ch = 0; ch < 0xFFFF; ch++) {
+            short cclass = uinfo.getCanonicalClass(ch);
+            // not used String explosion = null;
+
+            if (explodeOnly.contains(ch) && uinfo.hasCanonicalDecomposition(ch)) {
+                maxCanon = put(replace, explodeOnly.get(ch), maxCompat);
+                addExplosion(lookup, ch, maxCanon);
+            }
+
+//          else if (!combining.contains(ch) && cclass != 0 && classMap[cclass] != 0) {
+//              //
+//              // If a combining character didn't happen to end up in one of
+//              // the pairwise combinations or explosions we use but still has
+//              // a combining class that is the same as a character we *do* use,
+//              // we need to save its class so that we don't combine things "past" it.
+//              //
+//              // However, if the character has an explosion we *don't* need it, because
+//              // we'll never see it, only the results of its explosion.
+//              //
+//              addChar(lookup, ch, COMBINING, 0);
+//              nccCount++;
+//          }
+
+            // I'm rewriting this logic.  Having an index of zero means that
+            // the typeBit[index] gets overwritten with multiple different
+            // values.  So we must use real index values that are unique
+            // per combining class.  Also, it doesn't matter if the class
+            // has been seen or not; we still need to record the character
+            // in order to have its type and class during composition.
+            else if (!combining.contains(ch) && cclass != 0) {
+                // If a combining character didn't happen to end up in one of
+                // the pairwise combinations or explosions we use but still has
+                // a combining class that is the same as a character we *do* use,
+                // we need to save its class.
+
+                // As our index, use combineCount and up.  Reuse values by
+                // mapping them through nccMap, which keeps track of previously
+                // used values and allocates new ones only as needed, starting
+                // with zero. - Liu
+                classMap[cclass] = 1;       // Mark this combining class as being used
+                addChar(lookup, ch, COMBINING, combineCount + nccMap.getIndexFor(cclass));
+            }
+        }
+
+        nccCount = (short) nccMap.getIndexCount(); // Liu
+
+        // Remap characters that have a canonical decomposition to a singleton,
+        // and also different compatibility and canonical full decompositions
+        // (that is, also are members of explodeCompat).  These characters can't
+        // be exploded to their full decomposition since that breaks canonical
+        // composition (normalization form C).  Instead, we place their
+        // singleton decomposition in the table, at the end.  This works because
+        // the singleton will get recursively exploded by Normalizer.  As of
+        // Unicode 3.0, this fix applies to U+1FFE, 1FFD, 2000, and 2001. - Liu
+        int singleton = replace.length();
+        for (char ch = 0; ch < 0xFFFF; ch++) {
+            if (!explodingBases.contains(ch) &&
+                explodeCompat.contains(ch) &&
+                uinfo.getDecomposition(ch).length() == 4) {
+              
+                // There might be a cleaner way to do this, perhaps by folding
+                // this logic into the code above (perhaps calling
+                // addExplosion() instead of addChar()), but I couldn't find it.
+                char remap = (char)
+                    Integer.parseInt(uinfo.getDecomposition(ch), 16);
+
+                int index = put(replace, String.valueOf(remap), singleton);
+                addChar(lookup, ch, EXPLODING_BASE, index);
+
+                outv("Canonical singleton " + Utility.hex(ch) +
+                     " remaps to " + Utility.hex(remap) + " index=" + index); 
+            }
+        }
+
+        // Now run through the combining classes again and assign bit numbers
+        // in the same ascending order as the canonical classes
+        // not used int maskShift = 0;
+        int bit = 0;
+        for (int i = 0; i < 256; i++) {
+            if (classMap[i] != 0) {
+                classMap[i] = ++bit;
+            }
+        }
+        if (bit >= 64) {
+            err(String.valueOf(bit+1) + " combining classes; max is 64");
+        }
+        outv("# of combining classes is " + (bit+1));
+
+        outv("baseCount=" + baseCount + ", combineCount=" + combineCount
+                            + ", nccCount=" + nccCount);
+
+        if (baseCount > MAX_BASES) {
+            err(Integer.toString(baseCount) + " bases, limit is " + MAX_BASES);
+            err(Integer.toString(combineCount) + " combining chars, limit is " + MAX_COMBINE);
+        }
+
+        // Now build the "actions" array that tells what to do when each base /
+        // combining pair is seen.
+        //
+        // First do character pairs that combine into a single character...
+        //
+        Iterator iter = binaryCompositions.keySet().iterator();
+        while (iter.hasNext()) {
+            String source = (String)iter.next();
+            char ch = binaryCompositions.get(source);
+
+            int baseIndex = lookup.elementAt(source.charAt(0)) >>> INDEX_SHIFT;
+            int combiningIndex = lookup.elementAt(source.charAt(1)) >>> INDEX_SHIFT;
+
+            actions.setElementAt((char)(baseIndex + MAX_BASES*combiningIndex), ch);
+        }
+
+
+        //
+        // Pair explosions: base/combining pairs that explode into something else
+        // We're squeezing the indices for these in between MAX_COMPOSED and 0xFFFF,
+        // which means they can't be indexes into the "replace" string; those are too big.
+        // Instead they're indexes into the "actionIndex" array, which in turn contains
+        // indices in "replace"
+        //
+        actionIndex = new char[ pairExplosions.size() ];
+        short index = 0;
+
+        iter = pairExplosions.keySet().iterator();
+        while (iter.hasNext()) {
+            String source = (String)iter.next();
+            char base = source.charAt(0);
+            char combining = source.charAt(1);
+
+            int strIndex = put(replace, (String)pairExplosions.get(source), 0);
+            actionIndex[index] = (char)strIndex;
+
+            int baseIndex = lookup.elementAt(base) >>> INDEX_SHIFT;
+            int combiningIndex = lookup.elementAt(combining) >>> INDEX_SHIFT;
+
+            actions.setElementAt((char)(baseIndex + MAX_BASES*combiningIndex),
+                                 (char)(index + largestChar));
+            index++;
+        }
+
+        // Fill in the array that maps from combining class value
+        // to a bit numbe representing the canonical combining class.
+        // That is, map from 0..240 (in 3.0) to 0..52.
+        typeBit = new int[combineCount + nccCount];
+
+        for (char ch = 0; ch < 0xFFFF; ch++) {
+            int value = lookup.elementAt(ch);
+            int type = value & TYPE_MASK;
+
+            if (type == COMBINING) {
+                int ind = value >>> INDEX_SHIFT;
+                int cclass = uinfo.getCanonicalClass(ch);
+                if (typeBit[ind] != 0 && typeBit[ind] != classMap[cclass]) {
+                    err("Overwriting typeBit[" + ind + "], was " +
+                        typeBit[ind] + ", changing to " + classMap[cclass] + " for class " + cclass);
+                }
+                typeBit[ind] = classMap[cclass];
+            }
+        }
+
+        if (fJava) {
+            String f = fOutDir + "ComposeData";
+            out("Writing " + f);
+            writeComposeData(new JavaWriter(f));
+        }
+        if (fCPP) {
+            String f = fOutDir + "compdata";
+            out("Writing " + f + ".(cpp|h)");
+            writeComposeData(new CPPWriter(f, "ComposeData"));
+        }
+
+        if (fShowSizes) {
+            int lookupSize = lookup.getIndexArray().length * 2 + lookup.getValueArray().length * 2;
+            int actionSize = actions.getIndexArray().length * 2 + actions.getValueArray().length * 2;
+            int actIndexSize = actionIndex.length * 2;
+            int replaceSize = replace.length();
+            int typeBitSize = typeBit.length * 2;
+
+            outv("Total runtime size of compose data is "
+                + (lookupSize + actionSize + actIndexSize + replaceSize + typeBitSize));
+
+            outv("  lookup:       " + lookupSize);
+            outv("  actions:      " + actionSize);
+            outv("  actionIndex:  " + actIndexSize);
+            outv("  typeBit:      " + typeBitSize);
+            outv("  replace:      " + replaceSize);
+        }
+    }
+
+    void writeComposeData(SourceWriter out) {
+        out.write("BASE_COUNT",         baseCount);
+        out.write("COMBINING_COUNT",    combineCount);
+        out.write("MAX_COMPAT",         maxCompat);
+        out.write("MAX_CANONICAL",      maxCanon);
+
+        out.writeHex("MAX_COMPOSED",    largestChar);
+
+        int maxIndex = replace.length();
+        out.write("MAX_INDEX",          maxIndex    );
+        out.write("INITIAL_JAMO_INDEX", maxIndex + 1);
+        out.write("MEDIAL_JAMO_INDEX",  maxIndex + 2);
+
+        out.write("MAX_BASES",          MAX_BASES  );
+        out.write("MAX_COMBINE",        MAX_COMBINE);
+
+        out.writeHex("TYPE_MASK",       TYPE_MASK);
+        out.write("INDEX_SHIFT",        INDEX_SHIFT);
+
+        // The character types
+        out.write("IGNORE",             (int)IGNORE);
+        out.write("BASE",               (int)BASE);
+        out.write("NON_COMPOSING_COMBINING", (int)EXPLODING_BASE);
+        out.write("COMBINING",          (int)COMBINING);
+        out.write("INITIAL_JAMO",       (int)INITIAL_JAMO);
+        out.write("MEDIAL_JAMO",        (int)MEDIAL_JAMO);
+        out.write("FINAL_JAMO",         (int)FINAL_JAMO);
+        out.write("HANGUL",             (int)HANGUL);
+
+        out.write("lookup",         lookup        );
+        out.write("actions",        actions       );
+        out.write("actionIndex",    actionIndex   );
+        out.write("replace",        replace       );
+        out.write("typeBit",        typeBit);
+
+        out.close();
+    }
+
+    void addChar(CompactCharArray lookup, char ch, int type, int index)
+    {
+        // First make sure it's not already present
+        if (lookup.elementAt(ch) != IGNORE)
+        {
+            char oldValue = lookup.elementAt(ch);
+            err(typeName(type) + " char is also "
+                  + typeName(oldValue & TYPE_MASK) + ": "
+                  + Utility.hex(ch) + "  " + uinfo.getName(ch,true));
+        }
+        else if ((index << INDEX_SHIFT) > 65536) {
+            err("not enough bits: index " + index + " << INDEX_SHIFT = " + (index << INDEX_SHIFT));
+        } else {
+            lookup.setElementAt(ch, (char)(type | (index << INDEX_SHIFT)));
+        }
+    }
+
+    void addExplosion(CompactCharArray lookup, char ch, int index)
+    {
+        // First make sure it doesn't already have an index
+        char oldValue = lookup.elementAt(ch);
+        int oldIndex = oldValue >>> INDEX_SHIFT;
+
+        if (oldValue != IGNORE) {
+            err("Exploding char is already " + typeName(oldValue & TYPE_MASK)
+                             + " (index " + oldIndex + "): "
+                             + Utility.hex(ch) + "  " + uinfo.getName(ch,true));
+        }
+
+        if (oldIndex != 0) {
+            err("Exploding char is already " + typeName(oldValue & TYPE_MASK)
+                             + " (index " + oldIndex + "): "
+                             + Utility.hex(ch) + "  " + uinfo.getName(ch,true));
+        }
+        else if ((index << INDEX_SHIFT) > 65536) {
+            err("not enough bits: index " + index + " << INDEX_SHIFT = " + (index << INDEX_SHIFT));
+        } else {
+            lookup.setElementAt(ch, (char)((oldValue & ~INDEX_MASK) | (index << INDEX_SHIFT)));
+        }
+    }
+
+    String typeName(int type) {
+        switch (type) {
+            case IGNORE:            return "Ignored";
+            case BASE:              return "Base";
+            case EXPLODING_BASE:    return "Exploding Base";
+            case COMBINING:         return "Combining";
+            case INITIAL_JAMO:      return "Initial Jamo";
+            case MEDIAL_JAMO:       return "Medial Jamo";
+            case FINAL_JAMO:        return "Final Jamo";
+            case HANGUL:            return "Hangul";
+            default:                return "Unknown";
+        }
+    }
+
+
+    static final int put(StringBuffer buf, String str, int minIndex)
+    {
+        str = str + '\u0000';   // Add trailing null
+
+        int index = buf.toString().indexOf(str);
+        if (index <= minIndex) {
+            index = buf.length();
+            buf.append(str);
+        }
+        return index;
+    }
+
+    static final int putLength(StringBuffer buf, String str, int minIndex) {
+        int length = str.length();
+
+        if (length >= (1 << STR_INDEX_SHIFT)) {
+            // There's no room to store the length in the index, so
+            // add a null terminator and use a 0 length to flag this
+            str = str + '\u0000';
+            length = 0;
+        }
+
+        int index = buf.toString().indexOf(str);
+        if (index <= minIndex) {
+            index = buf.length();
+            buf.append(str);
+        }
+        return (index << STR_INDEX_SHIFT) | length;
+    }
+
+    //--------------------------------------------------------------------------------
+    // Output & formatting
+
+    void out(String str) {
+        System.out.println(str);
+    }
+    void outv(String str) {
+        if (fVerbose) System.out.println(str);
+    }
+    void warn(String str) {
+        System.err.println("Warning: " + str);
+    }
+    void err(String str) {
+        System.err.println("ERROR:   " + str);
+    }
+}
+
+//-----------------------------------------------------------------------------
+// Utility classes
+//-----------------------------------------------------------------------------
+
+class DecompMap extends HashMap {
+    public DecompMap() {
+    }
+
+    void put(char ch, String value) {
+        put(new MutableChar(ch), value);
+    }
+
+    String get(char ch) {
+        Object obj = get(probe.set(ch));
+        return (obj != null) ? (String)obj : null;
+    }
+
+    boolean contains(char ch) {
+        return containsKey(probe.set(ch));
+    }
+
+    MutableChar probe = new MutableChar(' ');
+}
+
+class CompMap extends HashMap {
+    public CompMap() {
+    }
+
+    void put(String key, char value) {
+        put(key, new MutableChar(value));
+    }
+
+    char get(String key) {
+        Object obj = get((Object)key);
+        return (obj != null) ? ((MutableChar)obj).value : 0;
+    }
+}
+
+class CharSet extends HashSet {
+    public CharSet() {
+    }
+
+    public void add(char ch) {
+        add(new MutableChar(ch));
+    }
+
+    public boolean contains(char ch) {
+        return contains(probe.set(ch));
+    }
+    MutableChar probe = new MutableChar(' ');
+}
+
+/**
+ * An int->int map.  Each time a non-existent key is looked up,
+ * create a new mapping to the next available integer value.
+ */
+class NonComposingCombiningMap {
+    int index;
+    Hashtable hash;
+
+    public NonComposingCombiningMap() {
+        index = 0;
+        hash = new Hashtable();
+    }
+
+    /**
+     * Return the existing mapping of class.  If no such mapping
+     * exists, create one and return it.  New mappings map to
+     * zero, then one, etc.
+     */
+    public int getIndexFor(int cclass) {
+        Integer cl = new Integer(cclass);
+        Integer ind = (Integer) hash.get(cl);
+        if (ind != null) {
+            return ind.intValue();
+        }
+        hash.put(cl, new Integer(index));
+        return index++;
+    }
+
+    /**
+     * Return the number of mappings made so far.  That is, getIndexFor()
+     * has returned integers 0..getIndexCount()-1.
+     */
+    public int getIndexCount() {
+        return index;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/normalizer/QuickCheckBuilder.java b/src/com/ibm/icu/dev/tool/normalizer/QuickCheckBuilder.java
new file mode 100755
index 0000000..1619b79
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/normalizer/QuickCheckBuilder.java
@@ -0,0 +1,489 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2000, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/normalizer/Attic/QuickCheckBuilder.java,v $ 
+* $Date: 2002/02/16 03:05:34 $ 
+* $Revision: 1.7 $
+*
+******************************************************************************
+*/
+
+package com.ibm.icu.dev.tool.normalizer;
+
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.Writer;
+import java.io.Reader;
+import java.io.EOFException;
+import java.util.StringTokenizer;
+
+import com.ibm.icu.impl.ByteTrie;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+
+/**
+* Class to generate modified quickcheck data for collation.
+* Data generated is a trie of normalization form corresponding to the index 
+* code point.
+* Hence codepoint 0xABCD will have normalization form 
+* <code>
+*    quickcheck[codepoint] = 
+*              STAGE_3_[STAGE_2_[STAGE_1_[codepoint >> STAGE_1_SHIFT_] + 
+*              ((codepoint >> STAGE_2_SHIFT_) & STAGE_2_MASK_AFTER_SHIFT_)] +
+*              (codepoint & STAGE_3_MASK_)];
+* </code>
+* value is a byte containing 2 sets of 4 bits information.<br>
+* bits 1 2 3 4                        5678<br>
+*      NFKC NFC NFKD NFD MAYBES       NFKC NFC NFKD NFD YES<br>
+* ie if quick[0xABCD] = 10000001, this means that 0xABCD is in NFD form and 
+* maybe in NFKC form.
+* @deprecated ICU4J 2.0, since ICU has written its own tool.
+*/
+public class QuickCheckBuilder
+{
+  // public methods ----------------------------------------------------
+  
+  /**
+  * constructor with default input, output file path
+  * @deprecated ICU4J 2.0, since ICU has written its own tool.
+  */
+  public QuickCheckBuilder()
+  {
+  }
+  
+  /**
+  * Building method.
+  * Each unicode character will be used to generate data, output to the default
+  * file path  
+  * @deprecated ICU4J 2.0, since ICU has written its own tool.
+  */
+  public void build()
+  {
+    build(DEFAULT_INPUT_PATH_, DEFAULT_OUTPUT_PATH_);
+  }
+  
+  /**
+  * Building method.
+  * Each unicode character will be used to generate data.
+  * @param input file path
+  * @param output file path
+  * @deprecated ICU4J 2.0, since ICU has written its own tool.
+  */
+  public void build(String input, String output)
+  {   
+    try
+    {
+      byte result[] = getQuickCheckArray(input);
+      int notyes[] = getNotYesFirstCP(result);
+      ByteTrie trie = new ByteTrie(result);
+      FileWriter f = new FileWriter(output);
+      BufferedWriter w = new BufferedWriter(f);
+      
+      w.write("# QuickCheck data\n");
+      w.write("# Generated from NormalizationQuickCheck.txt\n\n");
+      w.write("int UQUICK_CHECK_MIN_VALUES_[] = {");
+      w.write("0x" + Integer.toHexString(notyes[0]) + ", 0x" + 
+              Integer.toHexString(notyes[1]) + ", 0x" + 
+              Integer.toHexString(notyes[2]) + ", 0x" + 
+              Integer.toHexString(notyes[3]) + "};\n");
+      
+      String s = trie.toString();
+      w.write(s);
+      w.close();
+      System.out.println("test " + test(input, trie));
+    }
+    catch(Exception e)
+    {
+      e.printStackTrace();
+    }
+  }
+  
+  /**
+  * Main method
+  */
+  public static void main(String arg[])
+  {
+    QuickCheckBuilder qcb = new QuickCheckBuilder();
+    qcb.build();
+  }
+  
+  // private methods -----------------------------------------------------
+  
+  /**
+  * Method to manipulate the values of the read in normalized form
+  * @param array of quickcheck values
+  * @param startcp starting code point
+  * @param endcp ending code point
+  * @param normalizationformat normalization format and the following argument
+  *        state indicates if codepoints from startcp to endcp are of the 
+  *        indicated normalization format
+  * @param state indicates if codepoints from startcp to endcp are of the 
+  *        argument normalization format
+  */
+  private void formQuickCheckValue(byte[] array, int startcp, int endcp,
+                                   String normalizationformat, String state) 
+  {
+    byte value = NFD_MAYBE_MASK_;
+    byte clear = NFD_NO_MASK_;
+
+    if (normalizationformat.equals(NFC_)) {
+      clear = NFC_NO_MASK_;
+      if (state.equals(NO_)) {
+        value = NFC_NO_MASK_;
+      }
+      else {
+        if (state.equals(YES_)) {
+          value = NFC_YES_MASK_;
+        }
+        else {
+          value = NFC_MAYBE_MASK_;
+        }
+      }
+    }
+    else {
+      if (normalizationformat.equals(NFD_)) {
+        if (state.equals(NO_)) {
+          value = NFD_NO_MASK_;
+        }
+        else {
+          if (state.equals(YES_)) {
+            value = NFD_YES_MASK_;
+          }
+        }
+      }
+      else {
+        if (normalizationformat.equals(NFKC_)) {
+          clear = NFKC_NO_MASK_;
+          if (state.equals(NO_)) {
+            value = NFKC_NO_MASK_;
+          }
+          else {
+            if (state.equals(YES_)) {
+              value = NFKC_YES_MASK_;
+            }
+            else {
+              value = NFKC_MAYBE_MASK_; 
+            }
+          }
+        }
+        else {
+          if (normalizationformat.equals(NFKD_)) {
+            clear = NFKD_NO_MASK_;
+            if (state.equals(NO_)) {
+              value = NFKD_NO_MASK_;
+            }
+            else {
+              if (state.equals(YES_)) {
+                value = NFKD_YES_MASK_;
+              }
+              else {
+                value = NFKD_MAYBE_MASK_;
+              }
+            }
+          }
+        }
+      }
+    }
+
+    for (; startcp <= endcp; startcp ++) {
+      array[startcp] &= clear;
+      if (value != clear) {
+        array[startcp] |= value;
+      }
+    }
+  }
+
+  /**
+  * Reads in the NormalizationQuickCheck.txt file and generates a byte of 
+  * QuickCheck data for each codepoint
+  * @param input file path
+  * @exception thrown when file reading error occurs
+  */
+  private byte[] getQuickCheckArray(String input) throws Exception
+  {
+    byte result[] = new byte[UCharacter.MAX_VALUE + 1];
+    
+    // initializing quickcheck array
+    initializeQuickCheckArray(result);
+    
+    StringTokenizer st;
+    // read in start and end codepoint
+    int startcp,
+        endcp;
+    // read in normalization format and its corresponding value
+    String nf,
+           check;
+    
+    try
+    {
+      FileReader f = new FileReader(input);
+      BufferedReader r = new BufferedReader(f);
+      String s = "";
+      while (true)
+      {
+        s = r.readLine();
+        if (s == null)
+          break;
+          
+        if (!s.equals("") && s.charAt(0) != '#')
+        {
+          st = new StringTokenizer(s, "; ");
+          startcp = Integer.parseInt(st.nextToken(), 16);
+          endcp = Integer.parseInt(st.nextToken(), 16);
+          nf = st.nextToken();
+          check = st.nextToken();
+          formQuickCheckValue(result, startcp, endcp, nf, check);
+        }
+      }
+      r.close();
+    }
+    catch(EOFException e)
+    {
+        return result;
+    }
+    
+    return result;
+  }
+  
+  /**
+  * Initializing quickcheck array.
+  * All assigned codepoints have the value Y, all unassigned codepoints have 
+  * the value M, all non-character codepoints (D800..DFFF, *FFFE, *FFFF) have 
+  * the value N.
+  * @param array quickcheck byte array
+  */
+  private void initializeQuickCheckArray(byte[] array)
+  {
+    for (int ch = UCharacter.MIN_VALUE; ch <= UCharacter.MAX_VALUE; ch ++)
+    {
+      array[ch] = DEFINED_CHAR_NORM_VALUE_;  
+      if ((ch >= SURROGATE_START_ && ch <= SURROGATE_END_) || 
+          ((ch & MASK_LAST_16_BITS_) >= 
+                                     MIN_NOT_A_CHAR_AFTER_MASK_LAST_16_BITS_))
+        array[ch] = NOT_A_CHARACTER_VALUE_;
+    }
+  }
+  
+  /**
+  * Tests the generated trie with the data in the input file.
+  * @param input file path
+  * @param trie object
+  * @exception thrown when file reading error occurs
+  */
+  private boolean test(String input, ByteTrie trie) throws Exception
+  {
+    StringTokenizer st;
+    // read in start and end codepoint
+    int startcp,
+        endcp;
+    // read in normalization format and its corresponding value
+    String nf,
+           check;
+    byte temp;
+    
+    try
+    {
+      FileReader f = new FileReader(input);
+      BufferedReader r = new BufferedReader(f);
+      String s = "";
+      while (true)
+      {
+        s = r.readLine();
+        if (s == null)
+          break;
+          
+        if (!s.equals("") && s.charAt(0) != '#')
+        {
+          st = new StringTokenizer(s, "; ");
+          startcp = Integer.parseInt(st.nextToken(), 16);
+          endcp = Integer.parseInt(st.nextToken(), 16);
+          nf = st.nextToken();
+          check = st.nextToken();
+          
+          byte mask = 0;
+          
+          if (nf.equals(NFC_))
+            mask = (byte)0x44;
+          else
+            if (nf.equals(NFD_))
+              mask = (byte)0x11;
+            else 
+              if (nf.equals(NFKC_))
+                mask = (byte)0x88;
+              else 
+                if (nf.equals(NFKD_))
+                  mask = (byte)0x22;
+          for (; startcp <= endcp; startcp ++)
+          {
+            temp = (byte)(trie.getValue(startcp) & mask);
+            if (check.equals(NO_) && (temp != 0))
+            {
+              System.out.println("Error at NO " + startcp);
+              return false;
+            }
+            
+            if (check.equals(YES_) && (temp < 0 || temp > 0x8))
+            {
+              System.out.println("Error at YES " + startcp);
+              return false;
+            }
+            
+            if (check.equals(MAYBE_) && (temp < 0x10) && (temp != -128))
+            {
+              System.out.println("Error at MAYBE " + startcp);
+              return false;
+            }
+          }
+        }
+      }
+      r.close();
+    }
+    catch(EOFException e)
+    {
+        return true;
+    }
+    return true;
+  }
+  
+  /**
+  * Returns an array of the first codepoints that do not have a YES for their
+  * respective normalization format. Hence 
+  * <p> getNotYesFirstCP[0] is the first codepoint that is not a NFD_YES<br>
+  * getNotYesFirstCP[1] is the first codepoint that is not a NFKD_YES<br>
+  * getNotYesFirstCP[2] is the first codepoint that is not a NFC_YES<br>
+  * getNotYesFirstCP[3] is the first codepoint that is not a NFKC_YES<br>
+  * @param quickcheck array of quickcheck values
+  * @return array of first codepoints not a YES
+  */
+  private int[] getNotYesFirstCP(byte[] quickcheck)
+  {
+    int result[] = {UCharacter.MAX_VALUE, UCharacter.MAX_VALUE, 
+                    UCharacter.MAX_VALUE, UCharacter.MAX_VALUE};
+    byte value;
+    for (int codepoint = 0; codepoint < UCharacter.MAX_VALUE; codepoint ++)
+    {
+      value = quickcheck[codepoint];
+      if ((value & NFD_YES_MASK_) == 0 && (codepoint < result[0]))
+        result[0] = codepoint;
+      if ((value & NFKD_YES_MASK_) == 0 && (codepoint < result[1]))
+        result[1] = codepoint;
+      if ((value & NFC_YES_MASK_) == 0 && (codepoint < result[2]))
+        result[2] = codepoint;
+      if ((value & NFKC_YES_MASK_) == 0 && (codepoint < result[3]))
+        result[3] = codepoint;
+    }
+    return result;
+  }
+  
+  // private data members ------------------------------------------------
+  
+  /**
+  * Input file path
+  */
+  private final String DEFAULT_INPUT_PATH_ = 
+                                 "data//unicode//NormalizationQuickCheck.txt";
+  
+  /**
+  * Output file path
+  */
+  private final String DEFAULT_OUTPUT_PATH_ = "QuickCheck.txt";
+  
+  /**
+  * 16 bits mask
+  */
+  private final int MASK_LAST_16_BITS_ = 0xFFFF;
+  
+  /**
+  * Minimum value of a not-a-character after the 16 bit masking
+  */
+  private final int MIN_NOT_A_CHAR_AFTER_MASK_LAST_16_BITS_ = 0xFFFE;
+  
+  /**
+  * Surrogate code points
+  */
+  private final int SURROGATE_START_ = 0xD800;
+  private final int SURROGATE_END_   = 0xDBFF;
+
+  /**
+  * NFD 2 bit mask
+  */
+  private final byte NFD_NO_MASK_ = (byte)0xEE;
+  private final byte NFD_YES_MASK_ = (byte)0x01;
+  private final byte NFD_MAYBE_MASK_ = (byte)0x10;
+
+  /**
+  * NFKD 2 bit mask
+  */
+  private final byte NFKD_NO_MASK_ = (byte)0xDD;
+  private final byte NFKD_YES_MASK_ = (byte)0x02;
+  private final byte NFKD_MAYBE_MASK_ = (byte)0xd0;
+
+  /**
+  * NFC 2 bit mask
+  */
+  private final byte NFC_NO_MASK_ = (byte)0xBB;
+  private final byte NFC_YES_MASK_ = (byte)0x04;
+  private final byte NFC_MAYBE_MASK_ = (byte)0x40;
+
+  /**
+  * NFKC 2 bit mask
+  */
+  private final byte NFKC_NO_MASK_ = (byte)0x77;
+  private final byte NFKC_YES_MASK_ = (byte)0x08;
+  private final byte NFKC_MAYBE_MASK_ = (byte)0x80;
+
+  /**
+  * Default value for undefined characters
+  */
+  private final byte UNDEFINED_CHAR_NORM_VALUE_ = (byte)0xF0;
+
+  /**
+  * Default value for defined characters
+  */
+  private final byte DEFINED_CHAR_NORM_VALUE_ = (byte)0x0F;
+
+  /**
+  * Default value for not-a-character
+  */
+  private final byte NOT_A_CHARACTER_VALUE_ = (byte)0x00;
+  
+  /**
+  * NFC name
+  */
+  private final String NFC_ = "NFC";
+  
+  /**
+  * NFKC name
+  */
+  private final String NFKC_ = "NFKC";
+  
+  /**
+  * NFD name
+  */
+  private final String NFD_ = "NFD";
+  
+  /**
+  * NFKD name
+  */
+  private final String NFKD_ = "NFKD";
+  
+  /**
+  * YES
+  */
+  private final String YES_ = "Y";
+  
+  /**
+  * NO
+  */
+  private final String NO_ = "N";
+  
+  /**
+  * MAYBE
+  */
+  private final String MAYBE_ = "M";
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/normalizer/SourceWriter.java b/src/com/ibm/icu/dev/tool/normalizer/SourceWriter.java
new file mode 100755
index 0000000..da3ca5c
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/normalizer/SourceWriter.java
@@ -0,0 +1,53 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/normalizer/Attic/SourceWriter.java,v $ 
+ * $Date: 2002/02/16 03:05:34 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.normalizer;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.CompactCharArray;
+import com.ibm.icu.util.CompactByteArray;
+import java.io.PrintWriter;
+import java.util.Date;
+
+//===========================================================================================
+// Utilities for writing data out as compilable source code
+//
+public abstract class SourceWriter {
+    abstract public void close();
+    abstract public void write(String name, short value);
+    abstract public void write(String name, int value);
+
+    abstract public void write(String name, CompactCharArray array);
+    abstract public void write(String name, CompactByteArray array);
+    abstract public void write(String name, StringBuffer str);
+
+    abstract public void write(String name, char[] array);
+    abstract public void write(String name, int[] array);
+
+    abstract public void writeHex(String name, char value);
+    abstract public void writeHex(String name, int value);
+
+    void writeHeader(PrintWriter out) {
+        out.println("/*");
+        out.println("************************************************************************");
+        out.println("*   Copyright (c) 1997-2000, International Business Machines");
+        out.println("*   Corporation and others.  All Rights Reserved.");
+        out.println("************************************************************************");
+        out.println("* > THIS FILE WAS MACHINE GENERATED <");
+        out.println("* >       DO NOT EDIT BY HAND       <");
+        out.println("* >      RUN TOOL TO REGENERATE     <");
+        out.println("* Tool: " + Normalizer.class.getName());
+        out.println("* Creation date: " + new Date());
+        out.println("*/");
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/normalizer/UInfo.java b/src/com/ibm/icu/dev/tool/normalizer/UInfo.java
new file mode 100755
index 0000000..7a7226f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/normalizer/UInfo.java
@@ -0,0 +1,604 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2001, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/normalizer/Attic/UInfo.java,v $ 
+ * $Date: 2002/03/30 03:10:05 $ 
+ * $Revision: 1.9 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.normalizer;
+
+import java.io.*;
+import java.util.*;
+import com.ibm.icu.impl.Utility;
+
+public final class UInfo {
+    static final boolean DEBUG = false;
+    static final int UINFO_VERSION = 5;
+
+    // these values are aligned with the java.lang.Character constants
+
+    public static final byte
+    UNASSIGNED      = 0,
+    UPPERCASE_LETTER    = 1,
+    LOWERCASE_LETTER    = 2,
+    TITLECASE_LETTER    = 3,
+    MODIFIER_LETTER     = 4,
+    OTHER_LETTER        = 5,
+    NON_SPACING_MARK    = 6,
+    ENCLOSING_MARK      = 7,
+    COMBINING_SPACING_MARK  = 8,
+    DECIMAL_DIGIT_NUMBER    = 9,
+    LETTER_NUMBER       = 10,
+    OTHER_NUMBER        = 11,
+    SPACE_SEPARATOR     = 12,
+    LINE_SEPARATOR      = 13,
+    PARAGRAPH_SEPARATOR = 14,
+    CONTROL         = 15,
+    FORMAT          = 16,
+    PRIVATE_USE     = 18,
+    SURROGATE       = 19,
+    DASH_PUNCTUATION    = 20,
+    START_PUNCTUATION   = 21,
+    END_PUNCTUATION     = 22,
+    CONNECTOR_PUNCTUATION   = 23,
+    OTHER_PUNCTUATION   = 24,
+    MATH_SYMBOL     = 25,
+    CURRENCY_SYMBOL     = 26,
+    MODIFIER_SYMBOL     = 27,
+    OTHER_SYMBOL        = 28;
+
+    public String getName(char ch) {return getInfo(ch).name;}
+    public String getDecomposition(char ch) {return getInfo(ch).decomposition;}
+    public String getName10(char ch) {return getInfo(ch).name10;}
+    public String getComment(char ch) {return getInfo(ch).comment;}
+
+    public float getNumeric(char ch) {return getInfo(ch).numeric;}
+
+    public short getCanonicalClass(char ch) {return getInfo(ch).canonical;}
+    public short getDecimal(char ch) {return getInfo(ch).decimal;}
+    public short getDigit(char ch) {return getInfo(ch).digit;}
+
+    public char getUppercase(char ch) {return getInfo(ch).uppercase;}
+    public char getLowercase(char ch) {return getInfo(ch).lowercase;}
+    public char getTitlecase(char ch) {return getInfo(ch).titlecase;}
+
+    public byte getCategory(char ch) {return getInfo(ch).category;}
+    public byte getBidiClass(char ch) {return getInfo(ch).bidi;}
+    public boolean getMirrored(char ch) {return getInfo(ch).mirrored;}
+
+    public boolean isDisparaged(char ch) { return getDecomposition(ch).length() == 4; }
+
+    public boolean isLetter(char ch) {
+        return (0 != ((1<<getCategory(ch)) &
+          ((1<<UPPERCASE_LETTER)
+          | (1<<LOWERCASE_LETTER)
+          | (1<<TITLECASE_LETTER)
+          | (1<<MODIFIER_LETTER)
+          | (1<<MODIFIER_LETTER))));
+    }
+
+    public boolean isMark(char ch) {
+        return (0 != ((1<<getCategory(ch)) &
+          ((1<<NON_SPACING_MARK)
+          | (1<<ENCLOSING_MARK)
+          | (1<<COMBINING_SPACING_MARK))));
+    }
+
+    public boolean isNumber(char ch) {
+        return (0 != ((1<<getCategory(ch)) &
+          ((1<<DECIMAL_DIGIT_NUMBER)
+          | (1<<LETTER_NUMBER)
+          | (1<<OTHER_NUMBER))));
+    }
+
+    public boolean isSeparator(char ch) {
+        return (0 != ((1<<getCategory(ch)) &
+          ((1<<SPACE_SEPARATOR)
+          | (1<<LINE_SEPARATOR)
+          | (1<<PARAGRAPH_SEPARATOR))));
+    }
+
+    public boolean isFormat(char ch) {
+        return (0 != ((1<<getCategory(ch)) &
+          ((1<<CONTROL)
+          | (1<<FORMAT))));
+    }
+
+    public boolean isPunctuation(char ch) {
+        return (0 != ((1<<getCategory(ch)) &
+          ((1<<DASH_PUNCTUATION)
+          | (1<<START_PUNCTUATION)
+          | (1<<END_PUNCTUATION)
+          | (1<<CONNECTOR_PUNCTUATION)
+          | (1<<START_PUNCTUATION)
+          | (1<<END_PUNCTUATION)
+          | (1<<OTHER_PUNCTUATION))));
+    }
+
+    public boolean isSymbol(char ch) {
+        return (0 != ((1<<getCategory(ch)) &
+          ((1<<MATH_SYMBOL)
+          | (1<<CURRENCY_SYMBOL)
+          | (1<<MODIFIER_SYMBOL)
+          | (1<<OTHER_SYMBOL))));
+    }
+
+    //
+    // Characters excluded from composition.  This is read from the Unicode
+    // file CompositionExclusions.txt.
+    //
+    String composeExclude = "";
+
+    /**
+     * Is this character excluded from the composition algorithm by virtue
+     * of being listed in the composition exclusion table in Tech Report #15?
+     */
+    public boolean isExcludedComposition(char ch) {
+        return isDisparaged(ch)
+            || composeExclude.indexOf(ch) >= 0
+            || getCanonicalClass(getDecompositionChars(ch).charAt(0)) != 0;
+    }
+
+
+
+    public String getName(String s) {
+        return getName(s,true);
+    }
+
+    public String getName(String s, boolean shortVersion) {
+        StringBuffer temp = new StringBuffer();
+        for (int i = 0; i < s.length(); ++i) {
+            if (i != 0) temp.append(", ");
+            temp.append(getName(s.charAt(i), shortVersion));
+        }
+        return temp.toString();
+    }
+
+    public String getName(char ch, boolean shortVersion) {
+        String result = getName(ch);
+        if (!shortVersion) return result;
+        result = replace(result,"LETTER ","");
+        result = replace(result,"CHARACTER ","");
+        result = replace(result,"SIGN ","");
+        result = replace(result,"CAPITAL ","UC ");
+        if (getCategory(ch) == LOWERCASE_LETTER)
+          result = replace(result,"SMALL ","LC ");
+        result = replace(result,"COMBINING ","-");
+        result = replace(result,"WITH ","");
+        result = replace(result,"AND ","");
+        result = replace(result,"VARIA","GRAVE");
+        result = replace(result,"OXIA","ACUTE");
+        result = replace(result,"VRACHY","BREVE");
+        result = replace(result,"VERTICAL LINE ABOVE","TONOS");
+        result = replace(result,"PSILI","SMOOTH");
+        result = replace(result,"DASIA","ROUGH");
+        result = replace(result,"COMMA ABOVE","SMOOTH");
+        result = replace(result,"REVERSED COMMA ABOVE","ROUGH");
+        result = replace(result,"YPOGEGRAMMENI","IOTA-SUB");
+        result = replace(result,"PROSGEGRAMMENI","IOTA-AD");
+        result = replace(result,"DIALYTIKA","DIAERESIS");
+        result = replace(result,"PERISPOMENI","CIRCUMFLEX");
+        result = replace(result,"VOICED SOUND MARK","VOICED SIGN");
+        result = replace(result,"PROLONGED SOUND MARK","VOICED SIGN");
+        result = replace(result,"KATAKANA-HIRAGANA","KANA");
+        result = replace(result,"COMPATIBILITY IDEOGRAPH-","");
+        result = replace(result,"CHOSEONG","INITIAL");
+        result = replace(result,"JUNGSEONG","MEDIAL");
+        result = replace(result,"JONGSEONG","FINAL");
+
+        return result.substring(0,1)
+          + result.substring(1,result.length()).toLowerCase();
+    }
+
+    public String replace(String source,
+      String replacee, String replacer) {
+        int p = source.indexOf(replacee);
+        if (p == -1) return source;
+        return source.substring(0,p)
+          + replacer
+          + source.substring(p+replacee.length(),source.length());
+    }
+
+    public boolean isCCS(String s) {
+        if (s.length() < 2) return false;
+        if (isMark(s.charAt(0))) return false;
+        for (int i = 1; i < s.length(); ++i) {
+            if (!isMark(s.charAt(i))) return false;
+        }
+        return true;
+    }
+
+    // combining base sequence := <cat_zero>+ <cat_pos>*
+    public boolean isCBS(String s) {
+        if (s.length() == 0) return false;
+        if (getCanonicalClass(s.charAt(0)) != 0) return false;
+        boolean gotGreater = false;
+        for (int i = 1; i < s.length(); ++i) {
+            if (getCanonicalClass(s.charAt(i)) == 0) {
+                if (gotGreater) return false;
+            } else {
+                gotGreater = true;
+            }
+        }
+        return true;
+    }
+
+    public boolean hasCanonicalDecomposition(char ch) {
+        String decomp = getDecomposition(ch);
+        return (decomp.length() != 0 && decomp.indexOf('<') == -1);
+    }
+
+    public boolean hasCompatibilityDecomposition(char ch) {
+        String decomp = getDecomposition(ch);
+        return (decomp.length() != 0 && decomp.indexOf('<') != -1);
+    }
+
+    public boolean isEquivalent(
+      String a, String b, boolean canonical) {
+        return getFullDecomposition(a, canonical).equals(
+          getFullDecomposition(b, canonical));
+    }
+
+    // use very dumb algorithm. Don't need lower order one.
+
+    public String getFullDecomposition(
+      String s, boolean canonical) {
+        StringBuffer output = new StringBuffer();
+        for (int i = 0; i < s.length(); ++i) {
+            getFullDecomp2(s.charAt(i),canonical,output);
+        }
+        return fixCanonical(output).toString();
+    }
+
+    public StringBuffer getFullDecomposition(
+      char ch, boolean canonical, StringBuffer output) {
+
+        StringBuffer result = getFullDecomp2(ch,canonical,output);
+        return fixCanonical(result);
+    }
+
+    public String getFullDecomposition(
+      char ch, boolean canonical) {
+        return getFullDecomposition(ch, canonical, new StringBuffer()).toString();
+    }
+
+    /**
+     * Given a decomposed string of characters, put it in canonical
+     * order by finding and processing all exchangeable pairs.
+     */
+    public StringBuffer fixCanonical(StringBuffer target) {
+        for (int i = 1; i < target.length(); ++i) {
+            char ch = target.charAt(i);
+            short canClass = getCanonicalClass(ch);
+            char chPrev = target.charAt(i-1);
+            short canClassPrev = getCanonicalClass(chPrev);
+            if (canClass != 0 && canClass < canClassPrev) {
+                target.setCharAt(i-1, ch);
+                target.setCharAt(i, chPrev);
+                if (i > 1) i -= 2; // backup (-1 to compensate for loop)
+            }
+        }
+        return target;
+    }
+
+    public String fixCanonical(String source) {
+        return fixCanonical(new StringBuffer(source)).toString();
+    }
+
+
+    // ============================================
+    //                  PRIVATES
+    // ============================================
+
+    static class CharData {
+        public CharData() {
+        };
+
+        String name = "";
+        String decomposition = "";
+        String name10 = "";
+        String comment = "";
+
+        float numeric = Float.MIN_VALUE;
+
+        short canonical = 0;
+        short decimal = Short.MIN_VALUE;
+        short digit = Short.MIN_VALUE;
+
+        char uppercase;
+        char lowercase;
+        char titlecase;
+
+        byte category;
+        byte bidi = 0;
+
+        boolean mirrored;
+    };
+
+    private static final CharData UNASSIGNED_INFO = new CharData();
+    private static char cachedChar = 0xFFFF;
+
+    private CharData getInfo(char ch) {
+        if (ch == cachedChar) return UNASSIGNED_INFO;
+        // remap special ranges
+        if (ch >= 0x4E00 && ch < 0xF900) {
+            if (ch <= 0x9FA5) ch = 0x4E00;
+            else if (ch >= 0xAC00 && ch <= 0xD7A3) ch = 0xAC00;
+            else if (ch >= 0xD800 && ch <= 0xDFFF) ch = 0xD800;
+            else if (ch >= 0xE000) ch = 0xE000;
+        }
+        Object value = cache[ch];
+        CharData result;
+        if (value == null) {
+            result = UNASSIGNED_INFO;
+        } else if (value instanceof String) {
+            result = updateCache((String)value);
+        } else {
+            result = (CharData)value;
+        }
+        return result;
+    }
+
+    private StringBuffer getFullDecomp2(
+      char ch, boolean canonical, StringBuffer output) {
+
+        String decomp = getDecomposition(ch);
+        if (decomp.length() == 0
+          || (canonical && decomp.indexOf('<') != -1)) {
+            output.append(ch);
+            return output;
+        }
+        boolean inBrackets = false;
+        for (int i = 0; i < decomp.length(); ++i) {
+            char c = decomp.charAt(i);
+            if (c == '<') inBrackets = true;
+            else if (c == '>') inBrackets = false;
+            else if (inBrackets) ; // skip
+            else if (c == ' ') ; // skip
+            else {
+                String tempString = decomp.substring(i,i+4);
+                char temp = (char)Integer.parseInt(tempString,16);
+                getFullDecomposition(temp,canonical,output);
+                i+= 3;
+            }
+        }
+        return output;
+    }
+
+    public String getDecompositionChars(char ch) {
+        StringBuffer output = new StringBuffer();
+        String decomp = getDecomposition(ch);
+        if (decomp.length() == 0) {
+            output.append(ch);
+            return output.toString();
+        }
+        boolean inBrackets = false;
+        for (int i = 0; i < decomp.length(); ++i) {
+            char c = decomp.charAt(i);
+            if (c == '<') inBrackets = true;
+            else if (c == '>') inBrackets = false;
+            else if (inBrackets) ; // skip
+            else if (c == ' ') ; // skip
+            else {
+                String tempString = decomp.substring(i,i+4);
+                char temp = (char)Integer.parseInt(tempString,16);
+                output.append(temp);
+                i+= 3;
+            }
+        }
+        return output.toString();
+    }
+
+    public UInfo(String fileName, String composeExcludeFileName) {
+        // not used long startTime,endTime;
+
+        BufferedReader input = null;
+        String line = null;
+        try {
+            input = new BufferedReader(new FileReader(fileName),64*1024);
+            for (int count = 0;;++count) {
+                line = input.readLine();
+                if (line == null) break;
+                if (line.length() == 0) continue;
+                char ch = charFrom(line.substring(0,4));
+                if (DEBUG) if ((count % 100) == 0)
+                    System.out.println("[" + count + "," + Utility.hex(ch) + ']');
+                cache[ch] = line;
+            }
+
+            // Read composition exlusions
+            input = new BufferedReader(new FileReader(composeExcludeFileName),64*1024);
+            StringBuffer ce = new StringBuffer();
+            for (;;) {
+                line = input.readLine();
+                if (line == null) break;
+                if (line.length() == 0 ||
+                    Character.digit(line.charAt(0), 16) < 0) continue;
+                ce.append(charFrom(line.substring(0,4)));
+            }
+            composeExclude = ce.toString();
+        } catch (Exception ex) {
+            try {
+                input.close();
+            } catch (Exception ex2) {
+                System.out.print("");
+            }
+            ex.printStackTrace();
+            throw new IllegalArgumentException("Couldn't read file "
+              + ex.getClass().getName() + " " + ex.getMessage()
+              + " line = " + line
+              );
+        }
+    }
+
+    public UInfo() {
+         this(
+        	System.getProperty("ICUDataPath")==null ?  "src/com/ibm/icu/dev/data/unicode/UnicodeData-3.0.0.txt" : System.getProperty("ICUDataPath") +  "/unicode/UnicodeData-3.0.0.txt",
+            System.getProperty("ICUDataPath")==null ? "src/com/ibm/icu/dev/data/unicode/CompositionExclusions-1.txt" : System.getProperty("ICUDataPath") +  "/unicode/CompositionExclusions-1.txt" 
+            );
+    }
+
+    /*
+  0 Code value in 4-digit hexadecimal format.
+  1 Unicode 2.1 Character Name. These names match exactly the
+  2 General Category. This is a useful breakdown into various "character
+  3 Canonical Combining Classes. The classes used for the
+  4 Bidirectional Category. See the list below for an explanation of the
+  5 Character Decomposition. In the Unicode Standard, not all of
+  6 Decimal digit value. This is a numeric field. If the character
+  7 Digit value. This is a numeric field. If the character represents a
+  8 Numeric value. This is a numeric field. If the character has the
+  9 If the characters has been identified as a "mirrored" character in
+ 10 Unicode 1.0 Name. This is the old name as published in Unicode 1.0.
+ 11 10646 Comment field. This field is informative.
+ 12 Upper case equivalent mapping. If a character is part of an
+ 13 Lower case equivalent mapping. Similar to 12. This field is informative.
+ 14 Title case equivalent mapping. Similar to 12. This field is informative.
+    */
+
+    private CharData updateCache(String line) {
+        try {
+            String[] parts = new String[30];
+            Utility.split(line,';',parts);
+            CharData info = new CharData();
+            char ch = charFrom(parts[0]);
+            info.name = parts[1];
+            info.category = (byte)Utility.lookup(parts[2], CATEGORY_TABLE);
+            info.canonical = shortFrom(parts[3]);
+            info.bidi = (byte)Utility.lookup(parts[4], BIDI_TABLE);
+            info.decomposition = parts[5];
+            info.decimal = shortFrom(parts[6]);
+            info.digit = shortFrom(parts[7]);
+            info.numeric = floatFrom(parts[8]);
+            info.mirrored = charFrom(parts[9]) == 'Y';
+            info.name10 = parts[10];
+            info.comment = parts[11];
+            info.uppercase = charFrom(parts[12]);
+            if (info.uppercase == 0) info.uppercase = ch;
+            info.lowercase = charFrom(parts[13]);
+            if (info.lowercase == 0) info.lowercase = ch;
+            info.titlecase = charFrom(parts[14]);
+            if (info.titlecase == 0) info.titlecase = info.uppercase;
+            String trial = Utility.hex(ch) + ";" + info;
+            if (DEBUG) if (!trial.equals(line)) {
+                System.out.println("Difference between:");
+                System.out.println(line);
+                System.out.println(trial);
+            }
+            cache[ch] = info;
+            return info;
+        }
+        catch (NumberFormatException e) {
+            System.out.println("updateCache: error parsing '" + line + "'");
+            throw e;
+        }
+    }
+
+    private static CharData typeInfo = new CharData();
+
+    private boolean latin1(char c) {
+        return ((c >= 20 && c <= 0x7F) || c > 0xA0);
+    }
+
+    private static final String[] YN_TABLE = {"N", "Y"};
+
+    private static final String[] CATEGORY_TABLE = {
+        "Cn", // = Other, Not Assigned
+
+        "Lu", // = Letter, Uppercase
+        "Ll", // = Letter, Lowercase
+        "Lt", // = Letter, Titlecase
+        "Lm", // = Letter, Modifier
+        "Lo", // = Letter, Other
+
+        "Mn", // = Mark, Non-Spacing
+        "Me", // = Mark, Enclosing
+        "Mc", // = Mark, Spacing Combining
+
+        "Nd", // = Number, Decimal Digit
+        "Nl", // = Number, Letter
+        "No", // = Number, Other
+
+        "Zs", // = Separator, Space
+        "Zl", // = Separator, Line
+        "Zp", // = Separator, Paragraph
+
+        "Cc", // = Other, Control
+        "Cf", // = Other, Format
+        "",   // unused
+        "Co", // = Other, Private Use
+        "Cs", // = Other, Surrogate
+
+
+        "Pd", // = Punctuation, Dash
+        "Ps", // = Punctuation, Open
+        "Pe", // = Punctuation, Close
+        "Pc", // = Punctuation, Connector
+        "Po", // = Punctuation, Other
+
+        "Sm", // = Symbol, Math
+        "Sc", // = Symbol, Currency
+        "Sk", // = Symbol, Modifier
+        "So", // = Symbol, Other
+
+        "Pi", // = Punctuation, Initial quote (may behave like Ps or Pe depending on usage)
+        "Pf", // = Punctuation, Final quote (may behave like Ps or Pe dependingon usage)
+    };
+
+    private static String[] BIDI_TABLE = {
+        "L", // Left-Right; Most alphabetic, syllabic, and logographic characters (e.g., CJK ideographs)
+        "R", // Right-Left; Arabic, Hebrew, and punctuation specific to those scripts
+        "EN", //    European Number
+        "ES", //    European Number Separator
+        "ET", //    European Number Terminator
+        "AN", //    Arabic Number
+        "CS", //    Common Number Separator
+        "B", // Block Separator
+        "S", // Segment Separator
+        "WS", //    Whitespace
+        "ON" // Other Neutrals ; All other characters: punctuation, symbols
+    };
+
+    private static short shortFrom(String p) {
+        if (p.length() == 0) return Short.MIN_VALUE;
+        return Short.parseShort(p);
+    }
+
+    private static float floatFrom(String p) {
+        try {
+            if (p.length() == 0) return Float.MIN_VALUE;
+            int fract = p.indexOf('/');
+            if (fract == -1) return Float.valueOf(p).floatValue();
+            String q = p.substring(0,fract);
+            float num = 0;
+            if (q.length() != 0) num = Integer.parseInt(q);
+            p = p.substring(fract+1,p.length());
+            float den = 0;
+            if (p.length() != 0) den = Integer.parseInt(p);
+            return num/den;
+        }
+        catch (NumberFormatException e) {
+            System.out.println("floatFrom: error parsing '" + p + "'");
+            throw e;
+        }
+    }
+
+    private static char charFrom(String p) {
+        if (p.length() == 0) return '\u0000';
+        else if (p.length() == 1) return p.charAt(0);
+        int temp = Integer.parseInt(p, 16);
+        if (temp < 0 || temp > 0xFFFF)
+            throw new NumberFormatException(
+                "Hex char out of range: " + p);
+        return (char)temp;
+    }
+
+
+    private Object[] cache = new Object[65536];
+}
diff --git a/src/com/ibm/icu/dev/tool/normalizer/package.html b/src/com/ibm/icu/dev/tool/normalizer/package.html
new file mode 100755
index 0000000..a83c157
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/normalizer/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/normalizer/Attic/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 21:35:52 $
+-->
+</head>
+<body bgcolor="white">
+Tool used to rebuild data tables used by Normalizer.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/rbbi/BuildDictionaryFile.java b/src/com/ibm/icu/dev/tool/rbbi/BuildDictionaryFile.java
new file mode 100755
index 0000000..43c541f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/rbbi/BuildDictionaryFile.java
@@ -0,0 +1,877 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/rbbi/BuildDictionaryFile.java,v $ 
+ * $Date: 2002/02/25 22:43:59 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.rbbi;
+
+import com.ibm.icu.util.CompactByteArray;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.impl.Utility;
+import java.io.*;
+import java.util.Enumeration;
+import java.util.Vector;
+
+public class BuildDictionaryFile {
+    public static void main(String args[])
+            throws FileNotFoundException, UnsupportedEncodingException, IOException {
+        String filename = args[0];
+        String encoding = "";
+        String outputFile = "";
+        String listingFile = "";
+
+        if (args.length >= 2)
+            encoding = args[1];
+
+        if(args.length >= 3)
+            outputFile = args[2];
+
+        if (args.length >= 4)
+            listingFile = args[3];
+
+        BuildDictionaryFile dictionary = new BuildDictionaryFile();
+        dictionary.build(filename, encoding);
+
+        DataOutputStream out = null;
+        if (outputFile.length() != 0) {
+            out = new DataOutputStream(new FileOutputStream(outputFile));
+            dictionary.writeDictionaryFile(out);
+        }
+
+        PrintWriter listing = null;
+        if (listingFile.length() != 0) {
+            listing = new PrintWriter(new OutputStreamWriter(new FileOutputStream(listingFile), "UnicodeLittle"));
+            dictionary.printWordList("", 0, listing);
+            listing.close();
+        }
+    }
+
+    public BuildDictionaryFile() {
+    }
+
+    public void build(String filename, String encoding)
+            throws FileNotFoundException, UnsupportedEncodingException, IOException {
+        FileInputStream file = new FileInputStream(filename);
+        InputStreamReader in;
+        if (encoding.length() == 0)
+            in = new InputStreamReader(file);
+        else
+            in = new InputStreamReader(file, encoding);
+
+        buildColumnMap(in);
+
+        file = new FileInputStream(filename);
+        if (encoding.length() == 0)
+            in = new InputStreamReader(file);
+        else
+            in = new InputStreamReader(file, encoding);
+
+        buildStateTable(in);
+//printTable();
+    }
+
+    public void buildColumnMap(InputStreamReader in) throws IOException {
+System.out.println("Building column map...");
+        UnicodeSet charsInFile = new UnicodeSet();
+        int c = in.read();
+int totalChars = 0;
+        while (c >= 0) {
+++totalChars; if (totalChars > 0 && totalChars % 5000 == 0) System.out.println("Read " + totalChars + " characters...");
+            if (c > ' ')
+                charsInFile.add((char)c);
+            c = in.read();
+        }
+//        Test.debugPrintln(charsInFile.toString());
+
+        StringBuffer tempReverseMap = new StringBuffer();
+        tempReverseMap.append(' ');
+
+        columnMap = new CompactByteArray();
+        int n = charsInFile.getRangeCount();
+        byte p = 1;
+        for (int i=0; i<n; ++i) {
+            char start = (char) charsInFile.getRangeStart(i);
+            char end = (char) charsInFile.getRangeEnd(i);
+            for (char ch = start; ch <= end; ch++) {
+                if (columnMap.elementAt(Character.toLowerCase(ch)) == 0) {
+                    columnMap.setElementAt(Character.toUpperCase(ch), Character.toUpperCase(ch),
+                                        p);
+                    columnMap.setElementAt(Character.toLowerCase(ch), Character.toLowerCase(ch),
+                                        p);
+                    ++p;
+                    tempReverseMap.append(ch);
+                }
+            }
+        }
+//System.out.println("Compacting...");
+        columnMap.compact();
+
+//System.out.println(tempReverseMap.toString());
+        reverseColumnMap = new char[p];
+        Utility.getChars(tempReverseMap, 0, p, reverseColumnMap, 0);
+
+        System.out.println("total columns = " + p);
+        numCols = p;
+        numColGroups = (numCols >> 5) + 1;
+
+/*
+short[] index = columnMap.getIndexArray();
+System.out.println("Index:");
+for (int i = 0; i < index.length; i++) {
+if (i % 16 == 0) {
+System.out.println();
+System.out.print("    " + Integer.toHexString(i * 128) + ":");
+}
+System.out.print("\t" + Integer.toHexString(index[i]));
+}
+System.out.println();
+byte[] data = columnMap.getStringArray();
+System.out.print("Values:");
+for (int i = 0; i < data.length; i++) {
+if (i % 16 == 0) {
+System.out.println();
+System.out.print("    " + Integer.toHexString(i) + ":");
+}
+if (data[i] == 0)
+System.out.print("\t.");
+else
+System.out.print("\t" + Integer.toString(data[i]));
+}
+System.out.println();
+*/
+    }
+
+    public void buildStateTable(InputStreamReader in) throws IOException {
+        Vector tempTable = new Vector();
+        tempTable.addElement(new int[numCols + 1]);
+        int state = 0;
+
+        int c = in.read();
+        int[] row = null;
+        int charsInWord = 0;
+        while (c >= 0) {
+            charsInWord++;
+            short column = columnMap.elementAt((char)c);
+
+            row = (int[])(tempTable.elementAt(state));
+            if (column != 0) {
+                if (row[column] == 0) {
+                    row[column] = tempTable.size();
+                    ++row[numCols];
+                    state = (tempTable.size());
+                    tempTable.addElement(new int[numCols + 1]);
+                }
+                else
+                    state = row[column];
+            }
+            else if (state != 0) {
+                if (row[0] != -1) {
+                    row[0] = -1;
+                    ++row[numCols];
+                    uniqueWords++;
+                    totalUniqueWordChars += charsInWord;
+                }
+                totalWords++;
+if (totalWords % 5000 == 0) System.out.println("Read " + totalWords + " words, " + tempTable.size() + " rows...");
+                charsInWord = 0;
+                state = 0;
+            }
+            c = in.read();
+        }
+        if (state != 0) {
+            row = (int[])(tempTable.elementAt(state));
+            if (row[0] != -1) {
+                row[0] = -1;
+                uniqueWords++;
+                totalUniqueWordChars += charsInWord;
+            }
+            totalWords++;
+        }
+
+        compress(tempTable);
+
+        table = new short[numCols * tempTable.size()];
+        for (int i = 0; i < tempTable.size(); i++) {
+            row = (int[])tempTable.elementAt(i);
+            for (int j = 0; j < numCols; j++)
+                table[i * numCols + j] = (short)row[j];
+        }
+    }
+
+    private void compress(Vector tempTable) {
+System.out.println("Before compression:");
+System.out.println("  Number of rows = " + tempTable.size());
+System.out.println("  Number of columns = " + numCols);
+System.out.println("  Number of cells = " + tempTable.size() * numCols);
+        deleteDuplicateRows(tempTable);
+System.out.println("After removing duplicate rows:");
+System.out.println("  Number of rows = " + tempTable.size());
+System.out.println("  Number of columns = " + numCols);
+System.out.println("  Number of cells = " + tempTable.size() * numCols);
+        stackRows(tempTable);
+if (tempTable.size() > 32767) throw new IllegalArgumentException("Too many rows in table!");
+System.out.println("After doubling up on rows:");
+System.out.println("  Number of rows = " + tempTable.size());
+System.out.println("  Number of columns = " + numCols);
+System.out.println("  Number of cells = " + tempTable.size() * numCols);
+    }
+
+/*
+experimental...
+    private void deleteDuplicateRows(Vector tempTable) {
+        int[] rowNumMap = new int[tempTable.size()];
+        for (int i = 0; i < rowNumMap.length; i++)
+            rowNumMap[i] = i;
+
+        int nextClass = numCols;
+        int currentClass;
+        int lastClass;
+        boolean split;
+        int[] row1, row2, tempRow;
+        int tempCat;
+
+        do {
+System.out.println("Making a pass (" + nextClass + " classes)...");
+            currentClass = 0;
+            lastClass = nextClass;
+            while (currentClass < nextClass) {
+System.out.println("   currentClass = " + currentClass);
+                split = false;
+                row1 = row2 = null;
+                for (int i = 0; i < tempTable.size(); i++) {
+                    tempRow = (int[])tempTable.elementAt(i);
+                    if (tempRow[numCols] == currentClass) {
+                        if (row1 == null) {
+                            row1 = (int[])tempTable.elementAt(i);
+                        }
+                        else {
+                            row2 = (int[])tempTable.elementAt(i);
+                            for (int j = 0; j < numCols; j++) {
+                                if ((row1[j] == 0) != (row2[j] == 0) ||
+                                            (row1[j] == -1) != (row2[j] == -1)) {
+                                    row2[numCols] = nextClass;
+                                    split = true;
+                                    break;
+                                }
+                                else if (row1[j] != 0 && row2[j] != 0 && row1[j] != -1
+                                                && row2[j] != -1) {
+                                    tempRow = (int[])tempTable.elementAt(row1[j]);
+                                    tempCat = tempRow[numCols];
+                                    tempRow = (int[])tempTable.elementAt(row2[j]);
+                                    if (tempCat != tempRow[numCols]) {
+                                        row2[numCols] = nextClass;
+                                        split = true;
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                if (split)
+                    ++nextClass;
+                ++currentClass;
+//System.out.println();
+            }
+        } while (lastClass != nextClass);
+
+        int[] representatives = new int[nextClass];
+        for (int i = 1; i < tempTable.size(); i++) {
+            tempRow = (int[])tempTable.elementAt(i);
+            if (representatives[tempRow[numCols]] == 0)
+                representatives[tempRow[numCols]] = i;
+            else
+                rowNumMap[i] = representatives[tempRow[numCols]];
+        }
+System.out.println("Renumbering...");
+
+        // renumber all remaining rows
+        for (int i = 0; i < rowNumMap.length; i++)
+            if (rowNumMap[i] != i)
+                tempTable.setElementAt(null, i);
+        int newRowNum = 0;
+        for (int i = 0; i < rowNumMap.length; i++)
+            if (tempTable.elementAt(i) != null)
+                rowNumMap[i] = newRowNum++;
+        for (int i = 0; i < rowNumMap.length; i++)
+            if (tempTable.elementAt(i) == null)
+                rowNumMap[i] = rowNumMap[rowNumMap[i]];
+
+        for (int i = tempTable.size() - 1; i >= 0; i--) {
+            tempRow = (int[])tempTable.elementAt(i);
+            if (tempRow == null)
+                tempTable.removeElementAt(i);
+            else {
+                for (int j = 0; j < numCols; j++)
+                    if (tempRow[j] != -1)
+                        tempRow[j] = rowNumMap[j];
+            }
+        }
+//for (int i = 1; i < rowNumMap.length; i++) rowNumMap[i] = i; int newRowNum = rowNumMap.length;
+    }
+*/
+
+    private void deleteDuplicateRows(Vector tempTable) {
+        Vector work = (Vector)(tempTable.clone());
+        boolean didDeleteRow = true;
+
+        Vector tempMapping = new Vector(work.size());
+        int[] mapping = new int[work.size()];
+        for (int i = 0; i < mapping.length; i++) {
+            mapping[i] = i;
+            tempMapping.addElement(new Integer(i));
+        }
+        boolean[] tbd = new boolean[work.size()];
+
+        while (didDeleteRow) {
+System.out.println(" " + work.size() + " rows...");
+int deletedRows = 0;
+            didDeleteRow = false;
+
+            sortTable(work, tempMapping, mapping, 1, work.size());
+            for (int i = 0; i < work.size() - 1; ) {
+System.out.print("Deleting, inspecting row " + i + ", deleted " + deletedRows + " rows...\r");
+                int rowToDelete = ((Integer)(tempMapping.elementAt(i + 1))).intValue();
+                int rowToMapTo = ((Integer)(tempMapping.elementAt(i))).intValue();
+                if (compareRows((int[])work.elementAt(i), (int[])work.elementAt(i + 1),
+                                mapping) == 0) {
+                    tbd[rowToDelete] = true;
+                    tempTable.setElementAt(null, rowToDelete);
+                    while (tbd[mapping[rowToMapTo]])
+                        mapping[rowToMapTo] = mapping[mapping[rowToMapTo]];
+                    mapping[rowToDelete] = mapping[rowToMapTo];
+                    didDeleteRow = true;
+deletedRows++;
+                    work.removeElementAt(i + 1);
+                    tempMapping.removeElementAt(i + 1);
+                }
+                else
+                    i++;
+            }
+            for (int i = 0; i < mapping.length; i++) {
+                if (tbd[i] && tbd[mapping[i]])
+                    mapping[i] = mapping[mapping[i]];
+            }
+        }
+
+        int decrementBy = 0;
+        for (int i = 0; i < mapping.length; i++) {
+            if (tbd[i])
+                decrementBy++;
+            else
+                mapping[i] -= decrementBy;
+        }
+        for (int i = 0; i < mapping.length; i++) {
+            if (tbd[i])
+                mapping[i] = mapping[mapping[i]];
+        }
+        for (int i = tempTable.size() - 1; i >= 0; i--) {
+            if (tbd[i])
+                tempTable.removeElementAt(i);
+            else {
+                int[] row = (int[])tempTable.elementAt(i);
+                for (int j = 0; j < numCols; j++)
+                    row[j] = (row[j] == -1) ? -1 : mapping[row[j]];
+            }
+        }
+    }
+
+    private void sortTable(Vector table, Vector tempMapping, int[] mapping, int start, int end) {
+System.out.print("Sorting (" + start + ", " + end + ")...\r");
+        if (start + 1 >= end)
+            return;
+        else if (start + 10 >= end) {
+            for (int i = start + 1; i < end; i++) {
+                int[] row = (int[])table.elementAt(i);
+                Integer tempMap = (Integer)tempMapping.elementAt(i);
+                int j;
+                for (j = i - 1; j >= start; j--) {
+                    if (compareRows((int[])table.elementAt(j), row, mapping) > 0) {
+                        table.setElementAt((int[])table.elementAt(j), j + 1);
+                        tempMapping.setElementAt((Integer)tempMapping.elementAt(j), j + 1);
+                    }
+                    else {
+                        table.setElementAt(row, j + 1);
+                        tempMapping.setElementAt(tempMap, j + 1);
+                        break;
+                    }
+                }
+                if (j < start) {
+                    table.setElementAt(row, start);
+                    tempMapping.setElementAt(tempMap, start);
+                }
+            }
+        }
+        else {
+            int boundaryPos = (start + end) / 2;
+            int i;
+            boolean allTheSame = true;
+            int firstDifferent = 0;
+
+            do {
+                int[] boundary = (int[])table.elementAt(boundaryPos);
+                i = start;
+                int j = end - 1;
+                int[] row = null;
+                byte compResult;
+                while (i < j) {
+                    row = (int[])table.elementAt(i);
+                    while (i <= j && compareRows(row, boundary, mapping) < 0) {
+                        i++;
+                        row = (int[])table.elementAt(i);
+                    }
+
+                    row = (int[])table.elementAt(j);
+                    compResult = compareRows(row, boundary, mapping);
+                    while (i <= j && (compResult >= 0)) {
+                        if (compResult != 0) {
+                            allTheSame = false;
+                            firstDifferent = j;
+                        }
+                        j--;
+                        row = (int[])table.elementAt(j);
+                        compResult = compareRows(row, boundary, mapping);
+                    }
+                    if (i <= j) {
+                        row = (int[])table.elementAt(j);
+                        table.setElementAt(table.elementAt(i), j);
+                        table.setElementAt(row, i);
+                        Object temp = tempMapping.elementAt(j);
+                        tempMapping.setElementAt(tempMapping.elementAt(i), j);
+                        tempMapping.setElementAt(temp, i);
+                    }
+                }
+                if (i <= start) {
+                    if (allTheSame)
+                        return;
+                    else
+                        boundaryPos = firstDifferent;
+                }
+            } while (i <= start);
+            sortTable(table, tempMapping, mapping, start, i);
+            sortTable(table, tempMapping, mapping, i, end);
+        }
+    }
+
+    private byte compareRows(int[] row1, int[] row2, int[] mapping) {
+        for (int i = 0; i < numCols; i++) {
+            int c1 = (row1[i] == -1) ? -1 : mapping[row1[i]];
+            int c2 = (row2[i] == -1) ? -1 : mapping[row2[i]];
+            if (c1 < c2)
+                return -1;
+            else if (c1 > c2)
+                return 1;
+        }
+        return 0;
+    }
+
+    private int[] buildRowIndex(Vector tempTable) {
+        int[] tempRowIndex = new int[tempTable.size()];
+        rowIndexFlagsIndex = new short[tempTable.size()];
+        Vector tempRowIndexFlags = new Vector();
+        rowIndexShifts = new byte[tempTable.size()];
+
+        // build the row index.  Each entry in the row index starts out referring
+        // to the original row (so it doesn't actually do any mapping), and we set
+        // up the index flags to show which cells in the row are populated
+        for (int i = 0; i < tempTable.size(); i++) {
+            tempRowIndex[i] = i;
+
+            int[] row = (int[])tempTable.elementAt(i);
+            if (row[numCols] == 1 && row[0] == 0) {
+                int j = 0;
+                while (row[j] == 0)
+                    ++j;
+                rowIndexFlagsIndex[i] = (short)(-j);
+            }
+            else {
+                int[] flags = new int[numColGroups];
+                int nextFlag = 1;
+                int colGroup = 0;
+                for (int j = 0; j < numCols; j++) {
+                    if (row[j] != 0)
+                        flags[colGroup] |= nextFlag;
+                    nextFlag <<= 1;
+                    if (nextFlag == 0) {
+                        ++colGroup;
+                        nextFlag = 1;
+                    }
+                }
+                colGroup = 0;
+                int j = 0;
+                while (j < tempRowIndexFlags.size()) {
+                    if (((Integer)tempRowIndexFlags.elementAt(j)).intValue() ==
+                                    flags[colGroup]) {
+                        ++colGroup;
+                        ++j;
+                        if (colGroup >= numColGroups)
+                            break;
+                    }
+                    else if (colGroup != 0)
+                        colGroup = 0;
+                    else
+                        ++j;
+                }
+                rowIndexFlagsIndex[i] = (short)(j - colGroup);
+                while (colGroup < numColGroups) {
+                    tempRowIndexFlags.addElement(new Integer(flags[colGroup]));
+                    ++colGroup;
+                }
+            }
+        }
+        rowIndexFlags = new int[tempRowIndexFlags.size()];
+        for (int i = 0; i < rowIndexFlags.length; i++)
+            rowIndexFlags[i] = ((Integer)tempRowIndexFlags.elementAt(i)).intValue();
+System.out.println("Number of column groups = " + numColGroups);
+System.out.println("Size of rowIndexFlags = " + rowIndexFlags.length);
+
+        return tempRowIndex;
+    }
+
+    private void stackRows(Vector tempTable) {
+/*
+System.out.print("Row:\t");
+for (int i = 0; i < numCols; i++)
+System.out.print(reverseColumnMap[i] + "\t");
+System.out.println();
+for (int i = 0; i < tempTable.size(); i++) {
+System.out.print(Integer.toString(i) + ":\t");
+int[] row = (int[])tempTable.elementAt(i);
+for (int j = 0; j < row.length; j++)
+if (row[j] != 0) System.out.print(Integer.toString(row[j]) + "\t");
+else System.out.print(".\t");
+System.out.println();
+}
+*/
+
+        int[] tempRowIndex = buildRowIndex(tempTable);
+        boolean[] tbd = new boolean[tempTable.size()];
+
+        // now we actually go through and stack rows together
+        for (int i = 0; i < tempTable.size(); i++) {
+            if (tbd[i])
+                continue;
+System.out.print("Stacking, inspecting row " + i + "...\r");
+//System.out.println("Stacking, inspecting row " + i + "...");
+
+            int[] destRow = (int[])tempTable.elementAt(i);
+
+            boolean[] tempFlags = new boolean[numCols];
+            boolean[] filledCells = new boolean[numCols];
+            for (int j = 0; j < numCols; j++)
+                filledCells[j] = destRow[j] != 0;
+
+            for (int j = i + 1; destRow[numCols] < numCols && j < tempTable.size(); j++) {
+                if (tbd[j])
+                    continue;
+
+                int[] srcRow = (int[])tempTable.elementAt(j);
+                if (srcRow[numCols] + destRow[numCols] > numCols)
+                    continue;
+
+                int maxLeftShift = -999;
+                int maxRightShift = 0;
+                for (int k = 0; k < numCols; k++) {
+                    tempFlags[k] = srcRow[k] != 0;
+                    if (tempFlags[k]) {
+                        if (maxLeftShift == -999)
+                            maxLeftShift = -k;
+                        maxRightShift = (numCols - 1) - k;
+                    }
+                }
+
+                int shift;
+                for (shift = maxLeftShift; shift <= maxRightShift; shift++) {
+                    int k;
+                    for (k = 0; k < numCols; k++) {
+                        if (tempFlags[k] && filledCells[k + shift])
+                            break;
+                    }
+                    if (k >= numCols)
+                        break;
+                }
+                if (shift <= maxRightShift) {
+//System.out.println("Packing row " + j + " into row " + i + " with shift = " + shift);
+                    for (int k = 0; k < numCols; k++) {
+                        if (tempFlags[k]) {
+                            filledCells[k + shift] = true;
+                            destRow[k + shift] = srcRow[k];
+                            ++destRow[numCols];
+                        }
+                    }
+                    tbd[j] = true;
+                    tempRowIndex[j] = i;
+                    rowIndexShifts[j] = (byte)shift;
+                }
+            }
+        }
+
+        // finally, we squeeze out all the deleted rows
+        int decrementBy = 0;
+        for (int i = 0; i < tempRowIndex.length; i++) {
+            if (!tbd[i])
+                tempRowIndex[i] -= decrementBy;
+            else
+                ++decrementBy;
+        }
+        rowIndex = new short[tempRowIndex.length];
+        for (int i = tempRowIndex.length - 1; i >= 0; i--) {
+            if (tbd[i]) {
+                rowIndex[i] = (short)(tempRowIndex[tempRowIndex[i]]);
+                tempTable.removeElementAt(i);
+            }
+            else
+                rowIndex[i] = (short)tempRowIndex[i];
+        }
+    }
+
+    private void printTable() {
+        short cell;
+        int populatedCells = 0;
+/*
+        System.out.println("Conceptual table:");
+        System.out.println(" Row:   a   b   c   d   e   f   g   h   i   j   k   l   m   n"
+                + "   o   p   q   r   s   t   u   v   w   x   y   z   '   #");
+
+        boolean[] rowPrintFlags = new boolean[rowIndex.length];
+        printConceptualTable("", 0, rowPrintFlags);
+*/
+
+        System.out.println();
+        System.out.println("Conceptual table:");
+        System.out.print(" Row:");
+        for (int i = 0; i < reverseColumnMap.length; i++) {
+                System.out.print("   " + reverseColumnMap[i]);
+        }
+        for (int i = 0; i < rowIndex.length; i++) {
+            System.out.println();
+            printNumber(i, 4);
+            System.out.print(":");
+            for (int j = 0; j < numCols; j++)
+                printNumber(at(i, j), 4);
+        }
+        System.out.println('\n');
+
+        System.out.println();
+        System.out.println("Internally stored table:");
+        System.out.print(" Row:");
+        for (int i = 0; i < reverseColumnMap.length; i++) {
+                System.out.print("   " + reverseColumnMap[i]);
+        }
+        for (int i = 0; i < table.length; i++) {
+            if (i % numCols == 0) {
+                System.out.println();
+                printNumber(i / numCols, 4);
+                System.out.print(":");
+            }
+            cell = table[i];
+            if (cell != 0)
+                populatedCells++;
+            printNumber(cell, 4);
+        }
+        System.out.println('\n');
+
+System.out.println("Row index:");
+for (int i = 0; i < rowIndex.length; i++) {
+    System.out.print("   " + i + " -> " + rowIndex[i]);
+    if (rowIndexFlagsIndex[i] < 0)
+        System.out.print(", flags = " + Integer.toBinaryString((1 << (-rowIndexFlagsIndex[i]))) + " (" + rowIndexFlagsIndex[i]);
+    else
+        System.out.print(", flags = " + Integer.toBinaryString(rowIndexFlags[rowIndexFlagsIndex[i]]) + " (" + rowIndexFlagsIndex[i]);
+    System.out.println("), shift = " + rowIndexShifts[i]);
+}
+/*
+        int theoreticalMinRows = populatedCells / numCols;
+        if (populatedCells % numCols != 0)
+            theoreticalMinRows++;
+        int oneCellRows = 0;
+        for (int i = 0; i < rowIndexFlags.length; i++) {
+            double temp = Math.log(rowIndexFlags[i]) / Math.log(2);
+            if (temp == (int)temp)
+                oneCellRows++;
+        }
+
+        System.out.println('\n');
+        System.out.println("Total words in input = " + totalWords);
+        System.out.println("Total unique words = " + uniqueWords + ", comprising " +
+                        totalUniqueWordChars + " characters\n");
+        System.out.println("Number of populated cells = " + populatedCells);
+        System.out.println("Total number of cells = " + (table.length));
+        System.out.println("Residency = " + ((float)populatedCells / table.length * 100) + '%');
+        System.out.println("Ratio of populated cells to unique-word characters = " +
+                        ((float)populatedCells / totalUniqueWordChars * 100) + '%');
+        System.out.println("Ratio of total cells to unique-word characters = " +
+                        ((float)table.length / totalUniqueWordChars * 100) + '%');
+        System.out.println("Number of rows = " + (table.length / numCols));
+        System.out.println("Theoretical minimum number of rows = " + theoreticalMinRows);
+        System.out.println("Ratio of number of rows to theoretical minimum = " +
+                        ((float)(table.length / numCols) / theoreticalMinRows * 100) + '%');
+        System.out.println("Number of conceptual rows = " + rowIndex.length);
+        System.out.println("Conceptual rows with only one populated cell = " + oneCellRows);
+        System.out.println("Ratio of one-cell rows to total conceptual rows = " + (((float)oneCellRows)
+                        / rowIndex.length * 100) + '%');
+        System.out.println("Average number of populated cells in multi-cell rows = " +
+                        ((float)(populatedCells - oneCellRows) / (rowIndex.length - oneCellRows)));
+
+        int storageUsed = table.length * 2 + rowIndex.length * 2
+                        + rowIndexFlags.length * 4 + rowIndexShifts.length;
+        System.out.println("Total number of bytes in table (including indexes) = " +
+                        storageUsed);
+        System.out.println("Bytes of overhead per unique-word character = " + ((double)(storageUsed
+                        - (totalUniqueWordChars * 2)) / totalUniqueWordChars));
+*/
+    }
+
+    private void printConceptualTable(String initialString, int state, boolean[] flags) {
+        if (initialString.length() == 0)
+            System.out.println("root:");
+        else
+            System.out.println(initialString + ':');
+
+        if (!flags[state]) {
+            flags[state] = true;
+            printNumber(state, 4);
+            System.out.print(":");
+            for (int i = 0; i < numCols; i++)
+                printNumber(at(state, i), 4);
+            System.out.println();
+        }
+
+        int nextState;
+        for (int i = 0; i < numCols; i++) {
+            nextState = at(state, i);
+            if (nextState > 0 && !flags[nextState]) {
+                printNumber(nextState, 4);
+                System.out.print(":");
+                for (int j = 0; j < numCols; j++)
+                    printNumber(at(nextState, j), 4);
+                System.out.println();
+            }
+        }
+        for (int i = 0; i < numCols; i++) {
+            nextState = at(state, i);
+            if (nextState > 0 && !flags[nextState]) {
+                char nextChar;
+                if (nextState == 27)
+                    nextChar = ' ';
+                else if (nextState == 26)
+                    nextChar = '\'';
+                else
+                    nextChar = (char)(i + 'a');
+                flags[nextState] = true;
+                printConceptualTable(initialString + nextChar, nextState, flags);
+            }
+        }
+    }
+
+    private void printWordList(String partialWord, int state, PrintWriter out)
+            throws IOException {
+        if (state == -1) {
+            System.out.println(partialWord);
+            if (out != null)
+                out.println(partialWord);
+        }
+        else {
+            for (int i = 0; i < numCols; i++) {
+                if (at(state, i) != 0)
+                    printWordList(partialWord + reverseColumnMap[i], at(state, i), out);
+            }
+        }
+    }
+
+    private void writeDictionaryFile(DataOutputStream out) throws IOException {
+        out.writeInt(0);    // version number
+
+        char[] columnMapIndexes = columnMap.getIndexArray();
+        out.writeInt(columnMapIndexes.length);
+        for (int i = 0; i < columnMapIndexes.length; i++)
+            out.writeShort((short)columnMapIndexes[i]);
+        byte[] columnMapValues = columnMap.getValueArray();
+        out.writeInt(columnMapValues.length);
+        for (int i = 0; i < columnMapValues.length; i++)
+            out.writeByte((byte)columnMapValues[i]);
+
+        out.writeInt(numCols);
+        out.writeInt(numColGroups);
+
+        out.writeInt(rowIndex.length);
+        for (int i = 0; i < rowIndex.length; i++)
+            out.writeShort(rowIndex[i]);
+
+        out.writeInt(rowIndexFlagsIndex.length);
+        for (int i = 0; i < rowIndexFlagsIndex.length; i++)
+            out.writeShort(rowIndexFlagsIndex[i]);
+        out.writeInt(rowIndexFlags.length);
+        for (int i = 0; i < rowIndexFlags.length; i++)
+            out.writeInt(rowIndexFlags[i]);
+
+        out.writeInt(rowIndexShifts.length);
+        for (int i = 0; i < rowIndexShifts.length; i++)
+            out.writeByte(rowIndexShifts[i]);
+
+        out.writeInt(table.length);
+        for (int i = 0; i < table.length; i++)
+            out.writeShort(table[i]);
+
+        out.close();
+    }
+
+    private void printNumber(int x, int width) {
+        String s = String.valueOf(x);
+        if (width > s.length())
+            System.out.print(spaces.substring(0, width - s.length()));
+        if (x != 0)
+            System.out.print(s);
+        else
+            System.out.print('.');
+    }
+
+    public final short at(int row, char ch) {
+        int col = columnMap.elementAt(ch);
+        return at(row, col);
+    }
+
+    public final short at(int row, int col) {
+        if (cellIsPopulated(row, col))
+            return internalAt(rowIndex[row], col + rowIndexShifts[row]);
+        else
+            return 0;
+    }
+
+    private final boolean cellIsPopulated(int row, int col) {
+        if (rowIndexFlagsIndex[row] < 0)
+            return col == -rowIndexFlagsIndex[row];
+        else {
+            int flags = rowIndexFlags[rowIndexFlagsIndex[row] + (col >> 5)];
+            return (flags & (1 << (col & 0x1f))) != 0;
+        }
+    }
+
+    private final short internalAt(int row, int col) {
+        return table[row * numCols + col];
+    }
+
+    private CompactByteArray columnMap = null;
+    private char[] reverseColumnMap = null;
+    private int numCols;
+    private int numColGroups;
+    private short[] table = null;
+    private short[] rowIndex = null;
+    private int[] rowIndexFlags = null;
+    private short[] rowIndexFlagsIndex = null;
+    private byte[] rowIndexShifts = null;
+
+    private int totalWords = 0;
+    private int uniqueWords = 0;
+    private int totalUniqueWordChars = 0;
+
+    private static final String spaces = "      ";
+}
+
diff --git a/src/com/ibm/icu/dev/tool/rbbi/WriteTablesToFiles.java b/src/com/ibm/icu/dev/tool/rbbi/WriteTablesToFiles.java
new file mode 100755
index 0000000..7a8463c
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/rbbi/WriteTablesToFiles.java
@@ -0,0 +1,58 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/rbbi/Attic/WriteTablesToFiles.java,v $ 
+ * $Date: 2002/03/01 02:37:47 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.rbbi;
+
+import java.io.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+
+public class WriteTablesToFiles {
+    public static void main(String[] args) throws IOException {
+        writeBatch(true);
+        writeBatch(false);
+    }
+    
+    public static void writeBatch(boolean littleEndian) throws IOException {
+        BreakIterator bi;
+        String suffix = (littleEndian ? "LE" : "BE");
+        
+        bi = BreakIterator.getCharacterInstance();
+        ((RuleBasedBreakIterator)bi).writeTablesToFile(new FileOutputStream(
+                    "char" + suffix + ".brk"), littleEndian);
+        
+        bi = BreakIterator.getWordInstance();
+        ((RuleBasedBreakIterator)bi).writeTablesToFile(new FileOutputStream(
+                    "word" + suffix + ".brk"), littleEndian);
+        
+        bi = BreakIterator.getLineInstance();
+        ((RuleBasedBreakIterator)bi).writeTablesToFile(new FileOutputStream(
+                    "line" + suffix + ".brk"), littleEndian);
+        
+        bi = BreakIterator.getSentenceInstance();
+        ((RuleBasedBreakIterator)bi).writeTablesToFile(new FileOutputStream(
+                    "sent" + suffix + ".brk"), littleEndian);
+
+        bi = BreakIterator.getTitleInstance();
+        ((RuleBasedBreakIterator)bi).writeTablesToFile(new FileOutputStream(
+                    "title" + suffix + ".brk"), littleEndian);
+
+        java.util.Locale thai = new java.util.Locale("th", "", "");
+        bi = BreakIterator.getWordInstance(thai);
+        ((RuleBasedBreakIterator)bi).writeTablesToFile(new FileOutputStream(
+                    "word_th" + suffix + ".brk"), littleEndian);
+
+        bi = BreakIterator.getLineInstance(thai);
+        ((RuleBasedBreakIterator)bi).writeTablesToFile(new FileOutputStream(
+                    "line_th" + suffix + ".brk"), littleEndian);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/SourceSet.java b/src/com/ibm/icu/dev/tool/translit/SourceSet.java
new file mode 100644
index 0000000..173e989
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/SourceSet.java
@@ -0,0 +1,109 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   11/29/2001  aliu        Creation.
+*   06/26/2002  aliu        Moved to com.ibm.icu.dev.tool.translit
+**********************************************************************
+*/
+package com.ibm.icu.dev.tool.translit;
+import java.util.*;
+import com.ibm.icu.dev.tool.translit.UnicodeSetClosure;
+import java.io.*;
+import com.ibm.icu.text.*;
+
+/**
+ * Class that generates source set information for a transliterator.
+ * 
+ * To run, use:
+ * 
+ *   java com.ibm.icu.dev.tool.translit.SourceSet Latin-Katakana NFD lower
+ * 
+ * Output is produced in the command console, and a file with more detail is also written.
+ * 
+ * To see if it works, use:
+ * 
+ *   java com.ibm.icu.dev.test.translit.TransliteratorTest -v -nothrow TestIncrementalProgress
+ * 
+ * and
+ *  
+ *   java com.ibm.icu.dev.demo.translit.Demo
+ */
+public class SourceSet {
+
+    public static void main(String[] args) throws IOException {
+        if (args.length == 0) {
+            // Compute and display the source sets for all system
+            // transliterators.
+            for (Enumeration e = Transliterator.getAvailableIDs(); e.hasMoreElements(); ) {
+                String ID = (String) e.nextElement();
+                showSourceSet(ID, Normalizer.NONE, false);
+            }
+        } else {
+            // Usage: ID [NFKD | NFD] [lower]
+            Normalizer.Mode m = Normalizer.NONE;
+            boolean lowerFirst = false;
+            if (args.length >= 2) {
+                if (args[1].equalsIgnoreCase("NFD")) {
+                    m = Normalizer.NFD;
+                } else if (args[1].equalsIgnoreCase("NFKD")) {
+                    m = Normalizer.NFKD;
+                } else {
+                    usage();
+                }
+            }
+            if (args.length >= 3) {
+                if (args[2].equalsIgnoreCase("lower")) {
+                    lowerFirst = true;
+                } else {
+                    usage();
+                }
+            }
+            if (args.length > 3) {
+                usage();
+            }
+            showSourceSet(args[0], m, lowerFirst);
+        }
+    }
+
+    static void showSourceSet(String ID, Normalizer.Mode m, boolean lowerFirst) throws IOException {
+        File f = new File("UnicodeSetClosure.txt");
+        String filename = f.getCanonicalFile().toString();
+        out = new PrintWriter(
+            new OutputStreamWriter(
+                new FileOutputStream(filename), "UTF-8"));
+        out.print('\uFEFF'); // BOM
+        System.out.println();
+        System.out.println("Writing " + filename);
+        Transliterator t = Transliterator.getInstance(ID);
+        showSourceSetAux(t, m, lowerFirst, true);
+        showSourceSetAux(t.getInverse(), m, lowerFirst, false);
+        out.close();
+    }
+    
+    static PrintWriter out;
+    
+    static void showSourceSetAux(Transliterator t, Normalizer.Mode m, boolean lowerFirst, boolean forward) throws IOException {
+        UnicodeSet sourceSet = t.getSourceSet();
+        if (m != Normalizer.NONE || lowerFirst) {
+            UnicodeSetClosure.close(sourceSet, m, lowerFirst);
+        }
+        System.out.println(t.getID() + ": " +
+                           sourceSet.toPattern(true));
+        out.println("# MINIMAL FILTER GENERATED FOR: " + t.getID() + (forward ? "" : " REVERSE"));
+        out.println(":: " 
+            + (forward ? "" : "( ") 
+            + sourceSet.toPattern(true) 
+            + (forward ? "" : " )")
+            + " ;");
+        out.println("# Unicode: " + sourceSet.toPattern(false));
+        out.println();
+    }
+
+    static void usage() {
+        System.err.println("Usage: ID [ NFD|NFKD [lower] ]");
+        System.exit(1);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/Trans.java b/src/com/ibm/icu/dev/tool/translit/Trans.java
new file mode 100755
index 0000000..3e3c2de
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/Trans.java
@@ -0,0 +1,147 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/translit/Trans.java,v $
+ * $Date: 2002/08/13 22:11:26 $
+ * $Revision: 1.4 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.translit;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.io.*;
+
+/**
+ * A command-line interface to the ICU4J transliterators.
+ * @author Alan Liu
+ */
+public class Trans {
+
+    public static void main(String[] args) throws Exception {
+        boolean isHTML = false;
+        int pos = 0;
+
+        String transName = null; // first untagged string is this
+        String inText = null; // all other untagged strings are this
+        String inName = null;
+        String outName = null;
+
+        while (pos < args.length) {
+            if (args[pos].equals("-html")) {
+                isHTML = true;
+            } else if (args[pos].equals("-i")) {
+                if (++pos == args.length) usage();
+                inName = args[pos];
+            } else if (args[pos].equals("-o")) {
+                if (++pos == args.length) usage();
+                outName = args[pos];
+            } else if (transName == null) {
+                transName = args[pos];
+            } else {
+                if (inText == null) {
+                    inText = args[pos];
+                } else {
+                    inText = inText + " " + args[pos];
+                }
+            }
+            ++pos;
+        }
+
+        if (inText != null && inName != null) {
+            usage();
+        }
+
+        Transliterator trans = Transliterator.getInstance(transName);
+        BufferedReader in = null;
+        if (inName != null) {
+            in = new BufferedReader(new InputStreamReader(new FileInputStream(inName), "UTF8"));
+        }
+        PrintWriter out = null;
+        if (outName != null) {
+            out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(outName), "UTF8"));
+        } else {
+            out = new PrintWriter(System.out);
+        }
+        trans(trans, inText, in, out, isHTML);
+        out.close();
+    }
+
+    static void trans(Transliterator trans, String inText,
+                      BufferedReader in, PrintWriter out, boolean isHTML) throws IOException {
+        boolean inTag = false; // If true, we are within a <tag>
+        for (;;) {
+            String line = null;
+            if (inText != null) {
+                line = inText;
+                inText = null;
+            } else if (in != null) {
+                line = in.readLine();
+            }
+            if (line == null) {
+                break;
+            }
+            if (isHTML) {
+                // Pass tags between < and > unchanged
+                StringBuffer buf = new StringBuffer();
+                int right = -1;
+                if (inTag) {
+                    right = line.indexOf('>');
+                    if (right < 0) {
+                        right = line.length()-1;
+                    }
+                    buf.append(line.substring(0, right+1));
+                    if (DEBUG) System.out.println("*S:" + line.substring(0, right+1));
+                    inTag = false;
+                }
+                for (;;) {
+                    int left = line.indexOf('<', right+1);
+                    if (left < 0) {
+                        if (right < line.length()-1) {
+                            buf.append(trans.transliterate(line.substring(right+1)));
+                            if (DEBUG) System.out.println("T:" + line.substring(right+1));
+                        }
+                        break;
+                    }
+                    // Append transliterated segment right+1..left-1
+                    buf.append(trans.transliterate(line.substring(right+1, left)));
+                    if (DEBUG) System.out.println("T:" + line.substring(right+1, left));
+                    right = line.indexOf('>', left+1);
+                    if (right < 0) {
+                        inTag = true;
+                        buf.append(line.substring(left));
+                        if (DEBUG) System.out.println("S:" + line.substring(left));
+                        break;
+                    }
+                    buf.append(line.substring(left, right+1));
+                    if (DEBUG) System.out.println("S:" + line.substring(left, right+1));
+                }
+                line = buf.toString();
+            } else {
+                line = trans.transliterate(line);
+            }
+            out.println(line);
+        }
+    }
+
+    static final boolean DEBUG = false;
+
+    /**
+     * Emit usage and die.
+     */
+    static void usage() {
+        System.out.println("Usage: java com.ibm.icu.dev.tool.translit.Trans [-html] <trans> ( <input> | -i <infile>) [ -o <outfile> ]");
+        System.out.println("<trans>   Name of transliterator");
+        System.out.println("<input>   Text to transliterate");
+        System.out.println("<infile>  Name of input file");
+        System.out.println("<outfile> Name of output file");
+        System.out.println("-html     Only transliterate text outside of <tags>");
+        System.out.println("Input may come from the command line or a file.\n");
+        System.out.println("Ouput may go to stdout or a file.\n");
+        System.exit(0);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/UnicodeSetClosure.java b/src/com/ibm/icu/dev/tool/translit/UnicodeSetClosure.java
new file mode 100755
index 0000000..d4c659d
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/UnicodeSetClosure.java
@@ -0,0 +1,305 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/tool/translit/UnicodeSetClosure.java,v $
+ * $Date: 2002/06/20 01:17:39 $
+ * $Revision: 1.7 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.dev.tool.translit;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.Utility;
+//import java.text.*;
+import java.io.*;
+import java.util.Locale;
+
+// com.ibm.icu.dev.tool.translit.UnicodeSetClosure
+// com.ibm.icu.dev.test.translit.TransliteratorTest
+
+public class UnicodeSetClosure {
+    public static void main(String[] args) throws Exception {
+        
+        UnicodeSet foo = 	    new UnicodeSet("[\u1FF6-\u1FFD\u2000-\u2001\u2126]");
+        
+        test();
+        /* The following is superceded by Alan's tool
+        
+        File f = new File("UnicodeSetClosure.txt");
+        String filename = f.getCanonicalFile().toString();
+        out = new PrintWriter(
+            new OutputStreamWriter(
+                new FileOutputStream(filename), "UTF-8"));
+        System.out.println("Writing " + filename);
+        out.print('\uFEFF'); // BOM
+        
+        generateSets("Latin-Katakana", true, Normalizer.DECOMP_COMPAT, true,
+"[',.a-z~\u00DF\u00E6\u00F0\u00F8\u00FE\u02BE\u0300-\u034E\u0360-\u0362\u0483-\u0486\u0591-\u05A1\u05A3-\u05B9\u05BB-\u05BD\u05BF\u05C1-\u05C2\u05C4\u064B-\u0655\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u0901-\u0902\u093C\u0941-\u0948\u094D\u0951-\u0954\u0962-\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2-\u09E3\u0A02\u0A3C\u0A41-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A70-\u0A71\u0A81-\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7-\u0AC8\u0ACD\u0B01\u0B3C\u0B3F\u0B41-\u0B43\u0B4D\u0B56\u0B82\u0BC0\u0BCD\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0CBF\u0CC6\u0CCC-\u0CCD\u0D41-\u0D43\u0D4D\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EC8-\u0ECD\u0F18-\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86-\u0F87\u0F90-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032\u1036-\u1037\u1039\u1058-\u1059\u17B7-\u17BD\u17C6\u17C9-\u17D3\u18A9\u20D0-\u20DC\u20E1\u302A-\u302F\uFB1E\uFE20-\uFE23\\U0001D167-\\U0001D169\\U0001D17B-\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-\\U0001D1AD]"
+        );
+        generateSets("Latin-Katakana", false, Normalizer.DECOMP_COMPAT, false,
+"[~\u3001-\u3002\u30A1-\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF\u30C1\u30C3-\u30C4\u30C6\u30C8\u30CA-\u30CF\u30D2\u30D5\u30D8\u30DB\u30DE-\u30F3\u30F5-\u30F6\u30FC-\u30FD]"
+        );
+        
+        out.close();
+        
+        /////////////////////////////////////////////////
+        if (true) return; // skip the stuff we've done already
+        
+        generateSets("Cyrillic-Latin", true, Normalizer.DECOMP, false,
+            "[\u0402\u0404-\u0406\u0408-\u040B\u040F-\u0418\u041A-\u0438\u043A-\u044F\u0452\u0454-\u0456\u0458-\u045B\u045F\u0490-\u0495\u0498-\u0499\u04D4-\u04D5\u04D8-\u04D9]"
+        );
+        generateSets("Latin-Cyrillic", false, Normalizer.DECOMP, false,
+            "[A-Za-z\u00C6\u00E6\u0110-\u0111\u018F\u0259\u02B9-\u02BA]"
+        );
+        */
+    }
+    
+    public static void generateSets(String label, boolean forward, 
+            Normalizer.Mode m, boolean lowerFirst, String rules) {
+        UnicodeSet s = new UnicodeSet(rules);
+        System.out.println("Generating " + label + (forward ? "" : " BACKWARD"));
+        close(s, m, lowerFirst);
+        out.println("# MINIMAL FILTER GENERATED FOR: " + label + (forward ? "" : " BACKWARD"));
+        out.println(":: " 
+            + (forward ? "" : "( ") 
+            + s.toPattern(true) 
+            + (forward ? "" : " )")
+            + " ;");
+        out.println();
+        out.println("Unicode: " + s.toPattern(false));
+    }
+    
+    static boolean GENERATE = false;
+    
+    public static void test() throws Exception {
+        File f = new File("TestUnicodeSetClosure.txt");
+        String filename = f.getCanonicalFile().toString();
+        out = new PrintWriter(
+            new OutputStreamWriter(
+                new FileOutputStream(filename), "UTF-8"));
+        System.out.println("Writing " + filename);
+        out.print('\uFEFF'); // BOM
+        
+        GENERATE = true;
+        test("[:Devanagari:]");
+        /*
+        test("[\u00E0Bc]");
+        test("[m]");
+        */
+        
+        out.close();
+    }
+    
+    static final Normalizer.Mode[] testModes = {
+        Normalizer.NONE, Normalizer.NFD, Normalizer.NFC, Normalizer.NFKD, Normalizer.NFKC};
+    static final String[] modeNames = {
+        "NoNF", "NFD", "NFC", "NFKD", "NFKC"};
+        
+    static final boolean[] testCases = {
+        false, true};
+    static final String[] caseNames = {
+        "noLower", "lower"};
+    
+    public static void test(String testStr) throws Exception {
+        UnicodeSet original = new UnicodeSet(testStr);
+        
+        System.out.println("Testing Closure of: " + original.toPattern(true));
+        out.println("Testing Closure of: " + original.toPattern(false));
+        UnicodeSet raw = new UnicodeSet(original);
+        original.complement();
+        original.complement();
+        if (!raw.equals(original)) {
+            out.println("Equals:" + original.toPattern(false));
+        }
+        StringWriter swLog = null;
+        PrintWriter log = null;
+        
+        if (GENERATE) {
+            swLog = new StringWriter();
+            log = new PrintWriter(swLog);
+            log.println("static UnicodeSet[][] UNCHANGED = {");
+        }
+        for (int i = 0; i < testCases.length; ++i) {
+            if (GENERATE) log.println("    {");
+            for (int j = 0; j < testModes.length; ++j) {
+                UnicodeSet test = new UnicodeSet(original);
+                close(test, testModes[j], testCases[i]);
+                if (GENERATE) {
+                    log.println("\tnew UnicodeSet(\"" + generatedSet.toPattern(true) + "\"),");
+                }
+                String label = caseNames[i]  + ", " + modeNames[j] ;
+                System.out.println(label);
+                out.println(label + ": " + test.toPattern(false));
+                test.removeAll(original);
+                if (test.isEmpty()) {
+                    out.println("\tNo Difference from original");
+                } else {
+                    out.println("\tDifference = " + test.toPattern(false));
+                }
+                out.flush();
+            }
+            if (GENERATE) log.println("    },");
+            out.println();
+        }
+        
+        if (GENERATE) {
+            log.println("};");
+            out.print(swLog.getBuffer().toString());
+        }
+        
+        /*
+            close(test, Normalizer.DECOMP, false);
+            print("NFD", test);
+            
+            test = new UnicodeSet(testStr);
+            close(test, Normalizer.NO_OP, true);
+            print("Lower", test);
+
+            test = new UnicodeSet(testStr);
+            close(test, Normalizer.COMPOSE, false);
+            print("NFC", test);
+
+            test = new UnicodeSet(testStr);
+            close(test, Normalizer.DECOMP_COMPAT, false);
+            print("NFKD", test);
+
+            test = new UnicodeSet(testStr);
+            close(test, Normalizer.COMPOSE_COMPAT, false);
+            print("NFKC", test);
+        */
+    }
+    
+    static PrintWriter out;
+    
+    /*
+    public static void print(String label, UnicodeSet test) {
+        System.out.println(label);
+        out.println(label + ": " + test.toPattern(false));
+        out.println();
+    }
+    */
+    
+    // dumb, slow implementations
+    public static class NFToString implements Char32ToString {
+        Normalizer.Mode mode;
+        boolean lowerFirst;
+        
+        NFToString(Normalizer.Mode m, boolean lowerFirst) {
+            mode = m;
+            this.lowerFirst = lowerFirst;
+        }
+        
+        public String get(int cp) {
+            String source = UTF16.valueOf(cp);
+            String result = source;
+            if (lowerFirst) result = UCharacter.toLowerCase(Locale.US, result);
+            result = Normalizer.normalize(result, mode);
+            if (lowerFirst) result = UCharacter.toLowerCase(Locale.US, result);
+            if (result.equals(source)) return null;
+            return result;
+        }
+    }
+        
+    
+    /** Returns a mapping from char32 to a string. If there is no change,
+     * null is returned.
+     */
+     
+    interface Char32ToString {
+        public String get(int cp);
+    }
+    
+    static boolean FAST = true;
+    
+    public static void close(UnicodeSet s, Normalizer.Mode m, boolean lowerFirst) {
+        Char32ToString f = new NFToString(m, lowerFirst);
+        if (FAST) {
+            int mm;
+            for (mm = 0; ; ++mm) if (m == testModes[mm]) break; // find mode
+            close2(s, f, lowerFirst ? 1 : 0, mm);
+            return;
+        }
+        close(s, f);
+    }
+    
+    public static void close(UnicodeSet s, Char32ToString f) {
+        if (GENERATE) generatedSet = new UnicodeSet();
+        
+        for (int cp = 0; cp <= 0x10FFFF; ++cp) {
+            int type = UCharacter.getType(cp);
+            if (type == Character.UNASSIGNED) continue;
+            
+            //if (cp == '\u00e7') {
+              //  System.out.println("debug");
+            //}
+            String result = f.get(cp);
+            if (result == null) continue;
+            if (GENERATE) {
+                generatedSet.add(cp);
+            }
+            if (!containsSome(s, result)) continue;
+            s.add(cp);
+        }
+    }
+    
+    public static void close2(UnicodeSet s, Char32ToString f, int lc, int mode) {
+        UnicodeSet unchanged = new UnicodeSet(); // UNCHANGED[lc][mode];
+        int count = unchanged.getRangeCount();
+        for (int i = 0; i < count; ++i) {
+            int start = unchanged.getRangeStart(i);
+            int end = unchanged.getRangeEnd(i);
+            for (int cp = start; cp <= end; ++cp) {
+                String result = f.get(cp);
+                if (result == null) throw new IllegalArgumentException("Something wrong -- should never happen");
+                if (!containsSome(s, result)) continue;
+                s.add(cp);
+            }
+        }
+    }
+    
+    /*
+    static final UnicodeSet[][] UNCHANGED = {
+        { // \u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC1-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4
+	    new UnicodeSet("[\u1FF6-\u1FFD\u2000-\u2001\u2126]"),
+	    // \u212A-\u212B\u219A-\u219B\u21AE\u21CD-\u21CF\u2204\u2209\u220C\u2224\u2226\u2241\u2244\u2247\u2249\u2260\u2262\u226D-\u2271\u2274-\u2275\u2278
+	    new UnicodeSet("[\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01F0\u01F4-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u0340-\u0341\u0343-\u0344\u0374\u037E\u0385-\u038A\u038C\u038E-\u0390\u03AA-\u03B0\u03CA-\u03CE\u03D3-\u03D4\u0400-\u0401\u0403\u0407\u040C-\u040E\u0419\u0439\u0450-\u0451\u0453\u0457\u045C-\u045E\u0476-\u0477\u04C1-\u04C2\u04D0-\u04D3\u04D6-\u04D7\u04DA-\u04DF\u04E2-\u04E7\u04EA-\u04F5\u04F8-\u04F9\u0622-\u0626\u06C0\u06C2\u06D3\u0929\u0931\u0934\u0958-\u095F\u09CB-\u09CC\u09DC-\u09DD\u09DF\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B48\u0B4B-\u0B4C\u0B5C-\u0B5D\u0B94\u0BCA-\u0BCC\u0C48\u0CC0\u0CC7-\u0CC8\u0CCA-\u0CCB\u0D4A-\u0D4C\u0DDA\u0DDC-\u0DDE\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1026\u1E00-\u1E99\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC1-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFD\u2000-\u2001\u2126\u212A-\u212B\u219A-\u219B\u21AE\u21CD-\u21CF\u2204\u2209\u220C\u2224\u2226\u2241\u2244\u2247\u2249\u2260\u2262\u226D-\u2271\u2274-\u2275\u2278-\u2279\u2280-\u2281\u2284-\u2285\u2288-\u2289\u22AC-\u22AF\u22E0-\u22E3\u22EA-\u22ED\u2329-\u232A\u304C\u304E\u3050\u3052\u3054\u3056\u3058\u305A\u305C\u305E\u3060\u3062\u3065\u3067\u3069\u3070-\u3071\u3073-\u3074\u3076-\u3077\u3079-\u307A\u307C-\u307D\u3094\u309E\u30AC\u30AE\u30B0\u30B2\u30B4\u30B6\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0-\u30D1\u30D3-\u30D4\u30D6-\u30D7\u30D9-\u30DA\u30DC-\u30DD\u30F4\u30F7-\u30FA\u30FE\uAC00-\uD7A3\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB1D\uFB1F\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFB4E]"),
+	    new UnicodeSet("[\u0340-\u0341\u0343-\u0344\u0374\u037E\u0387\u0958-\u095F\u09DC-\u09DD\u09DF\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B5C-\u0B5D\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1FBB\u1FBE\u1FC9\u1FCB\u1FD3\u1FDB\u1FE3\u1FEB\u1FEE-\u1FEF\u1FF9\u1FFB\u1FFD\u2000-\u2001\u2126\u212A-\u212B\u2329-\u232A\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB1F\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFB4E]"),
+	    new UnicodeSet("[\u00A0\u00A8\u00AA\u00AF\u00B2-\u00B5\u00B8-\u00BA\u00BC-\u00BE\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0132-\u0137\u0139-\u0140\u0143-\u0149\u014C-\u0151\u0154-\u0165\u0168-\u017F\u01A0-\u01A1\u01AF-\u01B0\u01C4-\u01DC\u01DE-\u01E3\u01E6-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u02B0-\u02B8\u02D8-\u02DD\u02E0-\u02E4\u0340-\u0341\u0343-\u0344\u0374\u037A\u037E\u0384-\u038A\u038C\u038E-\u0390\u03AA-\u03B0\u03CA-\u03CE\u03D0-\u03D6\u03F0-\u03F2\u0400-\u0401\u0403\u0407\u040C-\u040E\u0419\u0439\u0450-\u0451\u0453\u0457\u045C-\u045E\u0476-\u0477\u04C1-\u04C2\u04D0-\u04D3\u04D6-\u04D7\u04DA-\u04DF\u04E2-\u04E7\u04EA-\u04F5\u04F8-\u04F9\u0587\u0622-\u0626\u0675-\u0678\u06C0\u06C2\u06D3\u0929\u0931\u0934\u0958-\u095F\u09CB-\u09CC\u09DC-\u09DD\u09DF\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B48\u0B4B-\u0B4C\u0B5C-\u0B5D\u0B94\u0BCA-\u0BCC\u0C48\u0CC0\u0CC7-\u0CC8\u0CCA-\u0CCB\u0D4A-\u0D4C\u0DDA\u0DDC-\u0DDE\u0E33\u0EB3\u0EDC-\u0EDD\u0F0C\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F79\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1026\u1E00-\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFE\u2000-\u200A\u2011\u2017\u2024-\u2026\u202F\u2033-\u2034\u2036-\u2037\u203C\u203E\u2048-\u2049\u2070\u2074-\u208E\u20A8\u2100-\u2103\u2105-\u2107\u2109-\u2113\u2115-\u2116\u2119-\u211D\u2120-\u2122\u2124\u2126\u2128\u212A-\u212D\u212F-\u2131\u2133-\u2139\u2153-\u217F\u219A-\u219B\u21AE\u21CD-\u21CF\u2204\u2209\u220C\u2224\u2226\u222C-\u222D\u222F-\u2230\u2241\u2244\u2247\u2249\u2260\u2262\u226D-\u2271\u2274-\u2275\u2278-\u2279\u2280-\u2281\u2284-\u2285\u2288-\u2289\u22AC-\u22AF\u22E0-\u22E3\u22EA-\u22ED\u2329-\u232A\u2460-\u24EA\u2E9F\u2EF3\u2F00-\u2FD5\u3000\u3036\u3038-\u303A\u304C\u304E\u3050\u3052\u3054\u3056\u3058\u305A\u305C\u305E\u3060\u3062\u3065\u3067\u3069\u3070-\u3071\u3073-\u3074\u3076-\u3077\u3079-\u307A\u307C-\u307D\u3094\u309B-\u309C\u309E\u30AC\u30AE\u30B0\u30B2\u30B4\u30B6\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0-\u30D1\u30D3-\u30D4\u30D6-\u30D7\u30D9-\u30DA\u30DC-\u30DD\u30F4\u30F7-\u30FA\u30FE\u3131-\u318E\u3192-\u319F\u3200-\u321C\u3220-\u3243\u3260-\u327B\u3280-\u32B0\u32C0-\u32CB\u32D0-\u32FE\u3300-\u3376\u337B-\u33DD\u33E0-\u33FE\uAC00-\uD7A3\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE30-\uFE44\uFE49-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFE70-\uFE72\uFE74\uFE76-\uFEFC\uFF01-\uFF5E\uFF61-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6\uFFE8-\uFFEE]"),
+	    new UnicodeSet("[\u00A0\u00A8\u00AA\u00AF\u00B2-\u00B5\u00B8-\u00BA\u00BC-\u00BE\u0132-\u0133\u013F-\u0140\u0149\u017F\u01C4-\u01CC\u01F1-\u01F3\u02B0-\u02B8\u02D8-\u02DD\u02E0-\u02E4\u0340-\u0341\u0343-\u0344\u0374\u037A\u037E\u0384-\u0385\u0387\u03D0-\u03D6\u03F0-\u03F2\u0587\u0675-\u0678\u0958-\u095F\u09DC-\u09DD\u09DF\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B5C-\u0B5D\u0E33\u0EB3\u0EDC-\u0EDD\u0F0C\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F79\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1E9A-\u1E9B\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1FBB\u1FBD-\u1FC1\u1FC9\u1FCB\u1FCD-\u1FCF\u1FD3\u1FDB\u1FDD-\u1FDF\u1FE3\u1FEB\u1FED-\u1FEF\u1FF9\u1FFB\u1FFD-\u1FFE\u2000-\u200A\u2011\u2017\u2024-\u2026\u202F\u2033-\u2034\u2036-\u2037\u203C\u203E\u2048-\u2049\u2070\u2074-\u208E\u20A8\u2100-\u2103\u2105-\u2107\u2109-\u2113\u2115-\u2116\u2119-\u211D\u2120-\u2122\u2124\u2126\u2128\u212A-\u212D\u212F-\u2131\u2133-\u2139\u2153-\u217F\u222C-\u222D\u222F-\u2230\u2329-\u232A\u2460-\u24EA\u2E9F\u2EF3\u2F00-\u2FD5\u3000\u3036\u3038-\u303A\u309B-\u309C\u3131-\u318E\u3192-\u319F\u3200-\u321C\u3220-\u3243\u3260-\u327B\u3280-\u32B0\u32C0-\u32CB\u32D0-\u32FE\u3300-\u3376\u337B-\u33DD\u33E0-\u33FE\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB00-\uFB06\uFB13-\uFB17\uFB1F-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE30-\uFE44\uFE49-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFE70-\uFE72\uFE74\uFE76-\uFEFC\uFF01-\uFF5E\uFF61-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6\uFFE8-\uFFEE]"),
+        },
+        {
+	    new UnicodeSet("[A-Z\u00B2-\u00B3\u00B5\u00B9\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130-\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u017F\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4-\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1-\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u0345\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03C2\u03D0-\u03D1\u03D5-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F0-\u03F2\u03F4-\u03F5\u0400-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1\u04C3\u04C7\u04CB\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F8\u0531-\u0556\u09F8\u0F2A-\u0F33\u137C\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9B\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FB8-\u1FBC\u1FBE\u1FC8-\u1FCC\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFC\u2070\u2074-\u2079\u2080-\u2089\u2126\u212A-\u212B\u2153-\u215E\u2160-\u217F\u2181-\u2183\u2460-\u2468\u2474-\u247C\u2488-\u2490\u24B6-\u24EA\u2776-\u277E\u2780-\u2788\u278A-\u2792\uFF21-\uFF3A\\U0001034A\\U00010400-\\U00010425\\U0001D165-\\U0001D166\\U0001D16D-\\U0001D172]"),
+	    new UnicodeSet("[A-Z\u00B2-\u00B3\u00B5\u00B9\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00DE\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u0110\u0112-\u0126\u0128-\u0132\u0134-\u0137\u0139-\u013F\u0141\u0143-\u0148\u014A\u014C-\u0152\u0154-\u0166\u0168-\u017F\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4-\u01DC\u01DE-\u01E4\u01E6-\u021C\u021E-\u021F\u0222\u0224\u0226-\u0233\u0340-\u0341\u0343-\u0345\u0374\u037E\u0385-\u038A\u038C\u038E-\u03A1\u03A3-\u03B0\u03C2\u03CA-\u03CE\u03D0-\u03D1\u03D3-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F0-\u03F2\u03F4-\u03F5\u0400-\u042F\u0439\u0450-\u0451\u0453\u0457\u045C-\u045E\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476-\u0478\u047A\u047C\u047E\u0480\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1-\u04C3\u04C7\u04CB\u04D0-\u04D4\u04D6-\u04D8\u04DA-\u04E0\u04E2-\u04E8\u04EA-\u04F5\u04F8-\u04F9\u0531-\u0556\u0622-\u0626\u06C0\u06C2\u06D3\u0929\u0931\u0934\u0958-\u095F\u09CB-\u09CC\u09DC-\u09DD\u09DF\u09F8\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B48\u0B4B-\u0B4C\u0B5C-\u0B5D\u0B94\u0BCA-\u0BCC\u0C48\u0CC0\u0CC7-\u0CC8\u0CCA-\u0CCB\u0D4A-\u0D4C\u0DDA\u0DDC-\u0DDE\u0F2A-\u0F33\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1026\u137C\u1E00-\u1E99\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC1-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFD\u2000-\u2001\u2070\u2074-\u2079\u2080-\u2089\u2126\u212A-\u212B\u2153-\u215E\u2160-\u217F\u2181-\u2183\u219A-\u219B\u21AE\u21CD-\u21CF\u2204\u2209\u220C\u2224\u2226\u2241\u2244\u2247\u2249\u2260\u2262\u226D-\u2271\u2274-\u2275\u2278-\u2279\u2280-\u2281\u2284-\u2285\u2288-\u2289\u22AC-\u22AF\u22E0-\u22E3\u22EA-\u22ED\u2329-\u232A\u2460-\u2468\u2474-\u247C\u2488-\u2490\u24B6-\u24EA\u2776-\u277E\u2780-\u2788\u278A-\u2792\u304C\u304E\u3050\u3052\u3054\u3056\u3058\u305A\u305C\u305E\u3060\u3062\u3065\u3067\u3069\u3070-\u3071\u3073-\u3074\u3076-\u3077\u3079-\u307A\u307C-\u307D\u3094\u309E\u30AC\u30AE\u30B0\u30B2\u30B4\u30B6\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0-\u30D1\u30D3-\u30D4\u30D6-\u30D7\u30D9-\u30DA\u30DC-\u30DD\u30F4\u30F7-\u30FA\u30FE\uAC00-\uD7A3\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB1D\uFB1F\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFB4E\uFF21-\uFF3A\\U0001034A\\U00010400-\\U00010425\\U0001D165-\\U0001D166\\U0001D16D-\\U0001D172]"),
+	    new UnicodeSet("[A-Z\u00B2-\u00B3\u00B5\u00B9\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130-\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u017F\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4-\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1-\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u0340-\u0341\u0343-\u0345\u0374\u037E\u0386-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03C2\u03D0-\u03D1\u03D5-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F0-\u03F2\u03F4-\u03F5\u0400-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1\u04C3\u04C7\u04CB\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F8\u0531-\u0556\u0958-\u095F\u09DC-\u09DD\u09DF\u09F8\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B5C-\u0B5D\u0F2A-\u0F33\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u137C\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9B\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FB8-\u1FBC\u1FBE\u1FC8-\u1FCC\u1FD3\u1FD8-\u1FDB\u1FE3\u1FE8-\u1FEC\u1FEE-\u1FEF\u1FF8-\u1FFD\u2000-\u2001\u2070\u2074-\u2079\u2080-\u2089\u2126\u212A-\u212B\u2153-\u215E\u2160-\u217F\u2181-\u2183\u2329-\u232A\u2460-\u2468\u2474-\u247C\u2488-\u2490\u24B6-\u24EA\u2776-\u277E\u2780-\u2788\u278A-\u2792\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB1F\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFB4E\uFF21-\uFF3A\\U0001034A\\U00010400-\\U00010425\\U0001D165-\\U0001D166\\U0001D16D-\\U0001D172]"),
+	    new UnicodeSet("[A-Z\u00A0\u00A8\u00AA\u00AF\u00B2-\u00B5\u00B8-\u00BA\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00DE\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u0110\u0112-\u0126\u0128-\u0137\u0139-\u0141\u0143-\u014A\u014C-\u0152\u0154-\u0166\u0168-\u017F\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4-\u01DC\u01DE-\u01E4\u01E6-\u021C\u021E-\u021F\u0222\u0224\u0226-\u0233\u02B0-\u02B8\u02D8-\u02DD\u02E0-\u02E4\u0340-\u0341\u0343-\u0345\u0374\u037A\u037E\u0384-\u038A\u038C\u038E-\u03A1\u03A3-\u03B0\u03C2\u03CA-\u03CE\u03D0-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F0-\u03F2\u03F4-\u03F5\u0400-\u042F\u0439\u0450-\u0451\u0453\u0457\u045C-\u045E\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476-\u0478\u047A\u047C\u047E\u0480\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1-\u04C3\u04C7\u04CB\u04D0-\u04D4\u04D6-\u04D8\u04DA-\u04E0\u04E2-\u04E8\u04EA-\u04F5\u04F8-\u04F9\u0531-\u0556\u0587\u0622-\u0626\u0675-\u0678\u06C0\u06C2\u06D3\u0929\u0931\u0934\u0958-\u095F\u09CB-\u09CC\u09DC-\u09DD\u09DF\u09F8\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B48\u0B4B-\u0B4C\u0B5C-\u0B5D\u0B94\u0BCA-\u0BCC\u0C48\u0CC0\u0CC7-\u0CC8\u0CCA-\u0CCB\u0D4A-\u0D4C\u0DDA\u0DDC-\u0DDE\u0E33\u0EB3\u0EDC-\u0EDD\u0F0C\u0F2A-\u0F33\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F79\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1026\u137C\u1E00-\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFE\u2000-\u200A\u2011\u2017\u2024-\u2026\u202F\u2033-\u2034\u2036-\u2037\u203C\u203E\u2048-\u2049\u2070\u2074-\u208E\u20A8\u2100-\u2103\u2105-\u2107\u2109-\u2113\u2115-\u2116\u2119-\u211D\u2120-\u2122\u2124\u2126\u2128\u212A-\u212D\u212F-\u2131\u2133-\u2139\u2153-\u217F\u2181-\u2183\u219A-\u219B\u21AE\u21CD-\u21CF\u2204\u2209\u220C\u2224\u2226\u222C-\u222D\u222F-\u2230\u2241\u2244\u2247\u2249\u2260\u2262\u226D-\u2271\u2274-\u2275\u2278-\u2279\u2280-\u2281\u2284-\u2285\u2288-\u2289\u22AC-\u22AF\u22E0-\u22E3\u22EA-\u22ED\u2329-\u232A\u2460-\u24EA\u2776-\u277E\u2780-\u2788\u278A-\u2792\u2E9F\u2EF3\u2F00-\u2FD5\u3000\u3036\u3038-\u303A\u304C\u304E\u3050\u3052\u3054\u3056\u3058\u305A\u305C\u305E\u3060\u3062\u3065\u3067\u3069\u3070-\u3071\u3073-\u3074\u3076-\u3077\u3079-\u307A\u307C-\u307D\u3094\u309B-\u309C\u309E\u30AC\u30AE\u30B0\u30B2\u30B4\u30B6\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0-\u30D1\u30D3-\u30D4\u30D6-\u30D7\u30D9-\u30DA\u30DC-\u30DD\u30F4\u30F7-\u30FA\u30FE\u3131-\u318E\u3192-\u319F\u3200-\u321C\u3220-\u3243\u3260-\u327B\u3280-\u32B0\u32C0-\u32CB\u32D0-\u32FE\u3300-\u3376\u337B-\u33DD\u33E0-\u33FE\uAC00-\uD7A3\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE30-\uFE44\uFE49-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFE70-\uFE72\uFE74\uFE76-\uFEFC\uFF01-\uFF5E\uFF61-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6\uFFE8-\uFFEE\\U0001034A\\U00010400-\\U00010425\\U0001D165-\\U0001D166\\U0001D16D-\\U0001D172]"),
+	    new UnicodeSet("[A-Z\u00A0\u00A8\u00AA\u00AF\u00B2-\u00B5\u00B8-\u00BA\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130-\u0134\u0136\u0139\u013B\u013D\u013F-\u0141\u0143\u0145\u0147\u0149-\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u017F\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4-\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1-\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u02B0-\u02B8\u02D8-\u02DD\u02E0-\u02E4\u0340-\u0341\u0343-\u0345\u0374\u037A\u037E\u0384-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03C2\u03D0-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F0-\u03F2\u03F4-\u03F5\u0400-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1\u04C3\u04C7\u04CB\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F8\u0531-\u0556\u0587\u0675-\u0678\u0958-\u095F\u09DC-\u09DD\u09DF\u09F8\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B5C-\u0B5D\u0E33\u0EB3\u0EDC-\u0EDD\u0F0C\u0F2A-\u0F33\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F79\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u137C\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9A-\u1E9B\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FB8-\u1FC1\u1FC8-\u1FCF\u1FD3\u1FD8-\u1FDB\u1FDD-\u1FDF\u1FE3\u1FE8-\u1FEF\u1FF8-\u1FFE\u2000-\u200A\u2011\u2017\u2024-\u2026\u202F\u2033-\u2034\u2036-\u2037\u203C\u203E\u2048-\u2049\u2070\u2074-\u208E\u20A8\u2100-\u2103\u2105-\u2107\u2109-\u2113\u2115-\u2116\u2119-\u211D\u2120-\u2122\u2124\u2126\u2128\u212A-\u212D\u212F-\u2131\u2133-\u2139\u2153-\u217F\u2181-\u2183\u222C-\u222D\u222F-\u2230\u2329-\u232A\u2460-\u24EA\u2776-\u277E\u2780-\u2788\u278A-\u2792\u2E9F\u2EF3\u2F00-\u2FD5\u3000\u3036\u3038-\u303A\u309B-\u309C\u3131-\u318E\u3192-\u319F\u3200-\u321C\u3220-\u3243\u3260-\u327B\u3280-\u32B0\u32C0-\u32CB\u32D0-\u32FE\u3300-\u3376\u337B-\u33DD\u33E0-\u33FE\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB00-\uFB06\uFB13-\uFB17\uFB1F-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE30-\uFE44\uFE49-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFE70-\uFE72\uFE74\uFE76-\uFEFC\uFF01-\uFF5E\uFF61-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6\uFFE8-\uFFEE\\U0001034A\\U00010400-\\U00010425\\U0001D165-\\U0001D166\\U0001D16D-\\U0001D172]"),
+        },
+    };
+    */
+
+    
+    static UnicodeSet generatedSet;
+    
+    // These should both be public, and on the respective classes
+    
+    public static void addAll(UnicodeSet s, String str) {
+        int cp;
+        for (int i = 0; i < str.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(str,i);
+            s.add(cp);
+        }
+    }
+    
+    public static boolean containsSome(UnicodeSet s, String str) {
+        int cp;
+        for (int i = 0; i < str.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(str,i);
+            if (s.contains(cp)) return true;
+        }
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat b/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat
new file mode 100755
index 0000000..b7d9bce
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat
@@ -0,0 +1,479 @@
+@rem = '--*-Perl-*--
+@echo off
+if "%OS%" == "Windows_NT" goto WinNT
+perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto endofperl
+:WinNT
+perl -x -S "%0" %*
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
+if %errorlevel% == 9009 echo You do not have Perl in your PATH.
+goto endofperl
+@rem ';
+#!perl
+#line 14
+
+# This perl script creates ICU transliterator data files, that live
+# in icu/data, from ICU4J UTF8 transliterator data files, in
+# icu4j/src/com/ibm/icu/impl/data/.
+#
+# The transformation that is done is very minimal.  The script assumes
+# that the input files use only # comments
+# and that they follow a rigid format.
+#
+# The output files are named according to ICU conventions (see NAME_MAP
+# below) and created in the current directory.  They should be manually
+# checked and then copied into the icu/data/tranlit directory.
+# An ICU build must
+# then be initiated, and the standard suite of ICU transliterator tests
+# should be run after that.
+#
+# Alan Liu 5/19/00 2/27/01
+
+use Getopt::Long;
+use strict;
+
+use vars qw(%USED_FILES);
+
+my $DIR = "../../../impl/data";
+my $ID = '';
+
+GetOptions('dir=s' => \$DIR,
+           'id=s' => \$ID,
+           '<>' => \&usage) || die;
+
+usage() if (@ARGV);
+
+my $ID =~ s/-/_/;
+if (! -d $DIR) {
+    print STDERR "$DIR is not a directory\n";
+    usage();
+}
+
+sub usage {
+    my $me = $0;
+    $me =~ s|.+[/\\]||;
+    print "Usage: $me [-dir <dir>] [-id <id>]\n";
+    print " --dir <dir> Specify the directory containing the\n";
+    print "             Transliterator_*.txt files\n";
+    print " --id <id>   Specify a single ID to transform, e.g.\n";
+    print "             Fullwidth-Halfwidth\n";
+    exit(1);
+}
+
+my $JAVA_ONLY = '-';
+
+my $OUTDIR = "icu4c";
+mkdir($OUTDIR,0777);
+
+# Mapping from Java file names to ICU file names
+# Constraints on ICU4C file name: icudt20b_
+# |--9 (prefix)---|---18(name with distinguisher,e.g. "t_" )----|
+#  --4 ("."+extn)--| = 31 characters total.
+# That is, must have length(%NAME_MAP{x}) <= 16
+
+my $MAX_ICU4C_FILENAME_LEN = 18;
+
+# -- HISTORY -- If not marked, then pre 2.2.
+#               All InterIndic are pre 2.2.
+# Any_Accents
+# Any_Publishing
+# Arabic_Latin           * 2.2
+# Cyrillic_Latin
+# Fullwidth_Halfwidth
+# Greek_Latin
+# Greek_Latin_UNGEGN     * 2.2 (moved from el.txt)
+# Han_Latin              * 2.2
+# Han_Latin_Definition   * 2.2
+# Han_Latin_EDICT        * 2.2 J only
+# Hebrew_Latin           * 2.2
+# Hiragana_Katakana
+# Hiragana_Latin
+# Latin_Jamo
+# Latin_Katakana
+# ThaiLogical_Latin      * 2.2 J only
+# Thai_ThaiLogical       * 2.2 J only
+# Thai_ThaiSemi          * 2.2 J only
+
+my %NAME_MAP = (
+     # An ICU name of "" means the ICU name == the ID
+
+     # We filter names based on what is in use in the index file.
+
+     # Flag a rule as JAVA_ONLY if it exists and we use it in Java,
+     # but we don't use it in C.
+
+     # Use official script abbreviations where possible.
+
+   # |..............|           |..............|             
+   # 1234567890123456           1234567890123456
+     Any_Accents            => "",
+     Any_Publishing         => "",
+     Cyrillic_Latin         => "Cyrl_Latn",
+     Fullwidth_Halfwidth    => "FWidth_HWidth",
+     Greek_Latin            => "Grek_Latn",
+     Hiragana_Katakana      => "Hira_Kana",
+     Hiragana_Latin         => "Hira_Latn",
+     Latin_Jamo             => "Latn_Jamo",
+     Latin_Katakana         => "Latn_Kana",
+
+     Arabic_Latin           => "Arab_Latn",
+     Greek_Latin_UNGEGN     => "Grek_Latn_UNGEGN",
+     Han_Latin              => "Hani_Latn",
+     Han_Latin_Definition   => "Hani_Latn_Def",
+     Han_Latin_EDICT        => "Hani_Latn_EDICT",
+     Hebrew_Latin           => "Hebr_Latn",
+     ThaiLogical_Latin      => $JAVA_ONLY, # "ThaiLog_Latn",
+     Thai_ThaiLogical       => $JAVA_ONLY, # "Thai_ThaiLog",
+     Thai_ThaiSemi          => $JAVA_ONLY, # "Thai_ThaiSemi",
+
+     InterIndic_Bengali     => "InterIndic_Beng",
+     InterIndic_Devanagari  => "InterIndic_Deva",
+     InterIndic_Gujarati    => "InterIndic_Gujr",
+     InterIndic_Gurmukhi    => "InterIndic_Guru",
+     InterIndic_Kannada     => "InterIndic_Knda",
+     InterIndic_Latin       => "InterIndic_Latn",
+     InterIndic_Malayalam   => "InterIndic_Mlym",
+     InterIndic_Oriya       => "InterIndic_Orya",
+     InterIndic_Tamil       => "InterIndic_Taml",
+     InterIndic_Telugu      => "InterIndic_Telu",
+
+     Bengali_InterIndic     => "Beng_InterIndic",
+     Devanagari_InterIndic  => "Deva_InterIndic",
+     Gujarati_InterIndic    => "Gujr_InterIndic",
+     Gurmukhi_InterIndic    => "Guru_InterIndic",
+     Kannada_InterIndic     => "Knda_InterIndic",
+     Latin_InterIndic       => "Latn_InterIndic",
+     Malayalam_InterIndic   => "Mlym_InterIndic",
+     Oriya_InterIndic       => "Orya_InterIndic",
+     Tamil_InterIndic       => "Taml_InterIndic",
+     Telugu_InterIndic      => "Telu_InterIndic",
+     
+     Han_Pinyin             => $JAVA_ONLY,
+     Kanji_English          => $JAVA_ONLY,
+     Kanji_OnRomaji         => $JAVA_ONLY,
+     );
+
+my ($x,$x,$x,$x,$x,$THIS_YEAR) = localtime();
+$THIS_YEAR += 1900;
+
+# Header blocks of text written at start of ICU output files
+my $HEADER1 = <<END;
+//--------------------------------------------------------------------
+// Copyright (c) 1999-$THIS_YEAR, International Business Machines
+// Corporation and others.  All Rights Reserved.
+//--------------------------------------------------------------------
+// THIS IS A MACHINE-GENERATED FILE
+END
+my $HEADER2 = <<END;
+//--------------------------------------------------------------------
+END
+
+my $TOOL = $0;
+
+# Convert the index first; this tells us which rule files are in use.
+convertIndex();
+
+# print "In use:\n", join("\n", sort keys(%USED_FILES)), "\n";
+
+# Iterate over all Java RBT rule files
+foreach (<$DIR/Transliterator_*.txt>) {
+    next if (/~$/); # Ignore emacs backups
+    next if (/_index\.txt$/); # The index file was processed above
+    # Select either the command-line arg, if there was one, or
+    # any files mentioned in the index.
+    my $leaf = $_;
+    $leaf =~ s|.+[/\\]||;
+    if (($ID && $leaf =~ /$ID/) || exists $USED_FILES{$leaf}) {
+        my ($out, $id) = convertFileName($_);
+        if ($out) {
+            if ($out eq $JAVA_ONLY) {
+                print STDERR "*** $id skipped: Java only ***\n";
+                next;
+            }
+            file($id, $_, $out);
+        }
+    } elsif (!$ID) {
+        print "*** $leaf skipped: not in use ***\n";
+    }
+}
+
+######################################################################
+# Convert a Java file name to C
+# Param: Java file name of the form m|Transliterator_(.+)\.utf8\.txt$|
+# Return: A C file name (e.g., ldevan.txt) or the empty string,
+#  if there is no mapping, or $JAVA_ONLY if the given file isn't
+#  intended to be incorporated into C.
+sub convertFileName {
+    local $_ = shift;
+    my $id;
+    if (m|Transliterator_(.+)\.utf8\.txt$| ||
+        m|Transliterator_(.+)\.txt$|) {
+        $id = $1;
+    } else { die "Can't parse Java file name $_"; }
+    if (!exists $NAME_MAP{$id}) {
+        print STDERR "ERROR: $id not in map; please update $0\n";
+        return '';
+    }
+    my $out = $NAME_MAP{$id};
+    if ($out eq '') {
+        $out = $id;
+    }
+    if ($out ne $JAVA_ONLY) {
+        $out = 't_' . $out;
+    }
+    if (length($out) > $MAX_ICU4C_FILENAME_LEN) {
+        print STDERR "ERROR: ICU4C file name \"$out\" too long; please update $0\n";
+        return '';
+    }
+    return ($out, $id);
+}
+
+######################################################################
+# Convert the index file from Java to C format
+sub convertIndex {
+    my $JAVA_INDEX = "Transliterator_index.txt";
+    my $C_INDEX = "translit_index.txt";
+    open(JAVA_INDEX, "$DIR/$JAVA_INDEX") or die;
+    open(C_INDEX, ">$OUTDIR/$C_INDEX") or die;
+    
+    header(\*C_INDEX, $JAVA_INDEX);
+    
+    print C_INDEX <<END;
+//--------------------------------------------------------------------
+// N.B.: This file has been generated mechanically from the
+// corresponding ICU4J file, which is the master file that receives
+// primary updates.  The colon-delimited fields have been split into
+// separate strings.  For 'file' and 'internal' lines, the encoding
+// field has been deleted, since the encoding is processed at build
+// time in ICU4C.  Certain large rule sets not intended for general
+// use have been commented out with the notation "Java only".
+//--------------------------------------------------------------------
+
+translit_index {
+  RuleBasedTransliteratorIDs {
+END
+        
+    while (<JAVA_INDEX>) {
+        # ignore $Source $Revision $Date CVS keyword substitutions
+        next if /\$Source/ ;
+        next if /\$Revision/ ;
+        next if /\$Date/ ;
+
+        # we have printed out the copyright info ... ignore one in Java version
+        next if /Copyright/ ;
+        next if /Corporation/;
+
+        # Comments; change # to //
+        if (s|^(\s*)\#|$1//|) {
+            print C_INDEX;
+            next;
+        }
+        # Blank lines
+        if (!/\S/) {
+            print C_INDEX;
+            next;
+        }
+        # Content lines
+        chomp;
+        my $prefix = '';
+        #replace \p with \\p
+        $_=~ s/\\p/\\\\p/g;
+        my @a = split(':', $_);
+        if ($a[1] eq 'file' || $a[1] eq 'internal') {
+            # Convert the file name
+            my $id;
+            # Record file names in use
+            $USED_FILES{$a[2]} = 1;
+            ($a[2], $id) = convertFileName($a[2]);
+            if ($a[2] eq $JAVA_ONLY) {
+                $prefix = '// Java only: ';
+            }
+
+            # Delete the encoding field
+            splice(@a, 3, 1);
+        } elsif ($a[1] eq 'alias') {
+            # Pad out with extra blank fields to make the
+            # 2-d array square
+            push @a, "";
+        } else {
+            die "Can't parse $_";
+        }
+        print C_INDEX
+            $prefix, "{ ",
+            join(", ", map("\"$_\"", @a)),
+            " },\n";
+    }
+
+    print C_INDEX <<END;
+  }
+}
+END
+
+    close(C_INDEX);
+    close(JAVA_INDEX);
+    print STDERR "$JAVA_INDEX -> $C_INDEX\n";
+}
+
+######################################################################
+# Output a header
+# Param: Filehandle
+sub header {
+    my $out = shift;
+    my $in = shift;
+    print $out $HEADER1;
+    print $out "// Tool: $TOOL\n// Source: $in\n";
+    print $out "// Date: ", scalar localtime, "\n";
+    print $out $HEADER2;
+    print $out "\n";
+}
+
+######################################################################
+# Process one file
+# Param: ID, e.g. Fullwidth-Halfwidth
+# Param: Java input file name, e.g.
+#  f:/icu4j/src/com/ibm/text/resources/Transliterator_Fullwidth_Halfwidth.utf8.txt
+# Param: ICU output file name, e.g. fullhalf
+sub file {
+    my $id = shift;
+    my $IN = shift;
+    my $out = shift;
+
+    my $OUT = "$out.txt";
+
+    # Show input size. Show output size later -- useful for quick sanity check.
+    print "$id (", -s $IN, ") -> $OUT (";
+
+    # Open file, write UTF8 marker, close it, and reopen in text mode
+    open(OUT, ">$OUTDIR/$OUT") or die;
+    binmode OUT;        # Must do this so we can write our UTF8 marker
+    print OUT pack("C3", 0xEF, 0xBB, 0xBF); # Write UTF8 marker
+    close(OUT);
+
+    open(OUT, ">>$OUTDIR/$OUT") or die;
+    print OUT " // -*- Coding: utf-8; -*-\n";
+
+    header(\*OUT, $IN);
+    print OUT "// $id\n";
+    print OUT "\n";
+    print OUT "$out {\n";
+    print OUT "  Rule {\n";
+
+    open(IN, $IN) or die;
+    binmode IN;                 # IN is a UTF8 file
+
+    my $first = 1;
+    my $BOM = pack("C3", 239, 187, 191); # a UTF8 byte order mark
+
+    # Process each line by changing # comments to // comments
+    # and taking other text and enclosing it in double quotes
+    while (<IN>) {
+        my $raw = $_;
+        # ignore $Source $Revision $Date CVS keyword substitutions
+        next if /\$Source/ ;
+        next if /\$Revision/ ;
+        next if /\$Date/ ;
+
+        # we have printed out the copyright info ... ignore one in Java version
+        next if /Copyright/ ;
+        next if /Corporation/;
+
+        # Look for and delete BOM
+        if ($first) {
+            s/^$BOM//;
+            $first = 0;
+        }
+
+        # Clean the eol junk up
+        s/[\x0D\x0A]+$//;
+
+        # If there is a trailing backslash, then delete it -- we don't
+        # need line continuation in C, since adjacent strings are
+        # concatenated.  Count trailing backslashes; if they are odd,
+        # one is trailing.
+        if (m|(\\+)$|) {
+            if ((length($1) % 2) == 1) {
+                s|\\$||;
+            }
+        }
+
+        # Transform escaped characters
+        hideEscapes();
+
+        if (/^(\s*)(\#.*)$/) {
+            # Comment-only line
+            my ($white, $cmt) = ($1, $2);
+            $cmt =~ s|\#|//|;
+            $_ = $white . $cmt;
+
+        } elsif (!/\S/) {
+            # Blank line -- leave as-is
+
+        } else {
+            # Remove single-quoted matter 
+            my @quotes;
+            my $nquotes = 0;
+            my $x = $_;
+            while (s/^([^\']*)(\'[^\']*\')/$1<<x$nquotes>>/) {
+                push @quotes, $2;
+                ++$nquotes;
+            }
+
+            # Extract comment
+            my $cmt = '';
+            if (s|\#(.*)||) {
+                $cmt = '//' . $1;
+            }
+
+            # Add quotes
+            s|^(\s*)(\S.*?)(\s*)$|$1\"$2\"$3|;
+
+            # Restore single-quoted matter
+            for (my $i=0; $i<$nquotes; ++$i) {
+                s|<<x$i>>|$quotes[$i]|;
+            }
+
+            # Restore comment
+            $_ .= $cmt;
+        }
+
+        # Restore escaped characters
+        restoreEscapes();
+
+        print OUT $_, "\n";
+    }
+
+    # Finish up
+    close(IN);
+    print OUT "  }\n";
+    print OUT "}\n";
+    close(OUT);
+
+    # Write output file size for sanity check
+    print -s "$OUTDIR/$OUT", ")\n";
+}
+
+######################################################################
+sub hideEscapes {
+    # Transform escaped characters
+    s|\\\\|<<bs>>|g; # DO THIS FIRST Transform backslashes
+    s|\\u([a-zA-Z0-9]{4})|<<u$1>>|g; # Transform Unicode escapes
+    s|\\\"|<<dq>>|g; # Transform backslash double quote
+    s|\\\'|<<sq>>|g; # Transform backslash single quote
+    s|\\\#|<<lb>>|g; # Transform backslash pound
+    s|\\(.)|<<q$1>>|g; # Transform backslash escapes
+}
+
+######################################################################
+sub restoreEscapes {
+    # Restore escaped characters
+    s|<<bs>>|\\\\|g;
+    s|<<dq>>|\\\\\\\"|g;
+    s|<<sq>>|\\\\\\\'|g;
+    s|<<lb>>|\\\\\\\#|g;
+    s|<<q(.)>>|\\\\\\$1|g;
+    s|<<u0000>>|\\\\u0000|g; # Double escape U+0000
+    s|<<u(....)>>|\\u$1|g;
+}
+
+__END__
+:endofperl
diff --git a/src/com/ibm/icu/dev/tool/translit/genIndexFilters.bat b/src/com/ibm/icu/dev/tool/translit/genIndexFilters.bat
new file mode 100755
index 0000000..e851704
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/genIndexFilters.bat
@@ -0,0 +1,115 @@
+@rem = '--*-Perl-*--
+@echo off
+if "%OS%" == "Windows_NT" goto WinNT
+perl -W -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto endofperl
+:WinNT
+perl -W -x -S "%0" %*
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
+if %errorlevel% == 9009 echo You do not have Perl in your PATH.
+goto endofperl
+@rem ';
+#!perl
+#line 14
+
+# This perl script updates the filters in the transliterator index file.
+# It does so in a dumb way:
+#
+#  Latin-X   NFD lower
+#  X-Latin   NFD
+#
+# For transliterators using NFKD, or not using Lower in this way, you
+# will have to hand-edit the index file.
+#
+# This script writes a new index file.  The new file has to then be
+# hand-edited and checked before use; it contains comments indicating
+# old lines that were replaced.
+#
+# Alan Liu 11/29/01
+
+use Getopt::Long;
+
+my $DIR = "../../text/resources";
+my $CLASSES = "../../../../../classes";
+
+#GetOptions('dir=s' => \$DIR,
+#           'id=s' => \$ID,
+#           '<>' => \&usage) || die;
+
+#usage() if (@ARGV);
+
+#$ID =~ s/-/_/;
+if (! -d $DIR) {
+    print STDERR "$DIR is not a directory\n";
+    usage();
+}
+
+#sub usage {
+#    my $me = $0;
+#    $me =~ s|.+[/\\]||;
+#    print "Usage: $me [-dir <dir>] [-id <id>]\n";
+#    print " --dir <dir> Specify the directory containing the\n";
+#    print "             Transliterator_*.txt files\n";
+#    print " --id <id>   Specify a single ID to transform, e.g.\n";
+#    print "             Fullwidth-Halfwidth\n";
+#    die;
+#}
+
+convertIndex();
+
+######################################################################
+# Convert the index file from Java to C format
+# Assume lines are of the form:
+#   <ID>:alias:<FILTER>;<REMAINDER>
+# <REMAINDER> can be
+#   Lower;NFX;...
+#   NFX;Lower;...
+#   NFX;...
+sub convertIndex {
+    $IN = "Transliterator_index.txt";
+    $OUT = "$IN.new";
+    open(IN, "$DIR/$IN") or die;
+    open(OUT, ">$DIR/$OUT") or die;
+    
+    while (<IN>) {
+        # Look for lines that are aliases with NF*
+        if (/^([^:]+):alias:(\[.+?);\s*((NF[^\s]*?)\s*;.+)$/i) {
+            my $id = $1;
+            my $oldset = $2;
+            my $remainder = $3;
+            my $NFXD = $4;
+            my $lower = '';
+            # Check for Lower
+            # If it comes before NF* then adjust accordingly
+            if (/^([^:]+):alias:(\[.+?);\s*(Lower\s*;.+)$/i) {
+                $lower = 'lower';
+                if (length($2) < length($oldset)) {
+                    $oldset = $2;
+                    $remainder = $3;
+                }
+            }
+            print STDERR "$id $NFXD $lower\n";
+            my $set = getSourceSet($id, $NFXD, $lower);
+            $_ = "$id:alias:$set;$remainder\n";
+        }
+        print OUT;
+    }
+
+    close(IN);
+    close(OUT);
+    print STDERR "Wrote $DIR/$OUT\n";
+}
+
+######################################################################
+# Get the source set (call out to Java), optionally with a closure.
+sub getSourceSet {
+    my $ID = shift;
+    my $NFXD = shift;
+    my $lower = shift;
+    my $set = `java -classpath $CLASSES com.ibm.tools.translit.genIndexFilters $ID $NFXD $lower`;
+    chomp($set);
+    $set;
+}
+
+__END__
+:endofperl
diff --git a/src/com/ibm/icu/dev/tool/translit/genIndexFilters.java b/src/com/ibm/icu/dev/tool/translit/genIndexFilters.java
new file mode 100755
index 0000000..4b9cbe5
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/genIndexFilters.java
@@ -0,0 +1,71 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   11/29/2001  aliu        Creation.
+**********************************************************************
+*/
+package com.ibm.icu.dev.tool.translit;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.util.*;
+import java.io.*;
+
+/**
+ * Adjunct class to getIndexFilters.bat.  Just generates source sets
+ * and their closures.
+ *
+ * Usage: ID [ NFD|NFKD [lower] ]
+ *
+ *   java -classpath classes com.ibm.icu.dev.tool.translit.genIndexFilters
+ *                              Latin-Greek NFD lower
+ *
+ * The 'NFD'|'NFKD' and 'lower' args are optional, but 'lower' can
+ * only be specified if 'NFD' or 'NFKD' is.
+ *
+ * DO NOT CHANGE OUTPUT FORMAT.  This tool's output is read by a Perl
+ * script.
+ */
+public class genIndexFilters {
+
+    public static void main(String[] args) throws IOException {
+        Normalizer.Mode m = Normalizer.NONE;
+        boolean lowerFirst = false;
+        if (args.length >= 2) {
+            if (args[1].equalsIgnoreCase("NFD")) {
+                m = Normalizer.NFD;
+            } else if (args[1].equalsIgnoreCase("NFKD")) {
+                m = Normalizer.NFKD;
+            } else {
+                usage();
+            }
+        }
+        if (args.length >= 3) {
+            if (args[2].equalsIgnoreCase("lower")) {
+                lowerFirst = true;
+            } else {
+                usage();
+            }
+        }
+        if (args.length > 3) {
+            usage();
+        }
+        showSourceSet(args[0], m, lowerFirst);
+    }
+
+    static void showSourceSet(String ID, Normalizer.Mode m, boolean lowerFirst) throws IOException {
+        Transliterator t = Transliterator.getInstance(ID);
+        UnicodeSet sourceSet = t.getSourceSet();
+        if (m != Normalizer.NONE || lowerFirst) {
+            UnicodeSetClosure.close(sourceSet, m, lowerFirst);
+        }
+        System.out.println(sourceSet.toPattern(true));
+    }
+
+    static void usage() {
+        System.err.println("Usage: ID [ NFD|NFKD [lower] ]");
+        System.exit(1);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/indic.bat b/src/com/ibm/icu/dev/tool/translit/indic.bat
new file mode 100755
index 0000000..10223c3
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/indic.bat
@@ -0,0 +1,17 @@
+@echo off
+REM Copyright (C) 2000, International Business Machines
+REM Corporation and others.  All Rights Reserved.
+
+REM This script is a Windows launcher for the indic.pl script.  For this
+REM to work, the perl executable must be on the path.  We recommend
+REM the ActiveState build; see http://www.activestate.com.  See the
+REM tz.pl script itself for more documentation.
+
+if "%OS%" == "Windows_NT" goto WinNT
+perl -w -x indic.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto end
+:WinNT
+perl -w -x indic.pl %*
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto end
+if %errorlevel% == 9009 echo You do not have Perl in your PATH.
+:end
diff --git a/src/com/ibm/icu/dev/tool/translit/indic.pl b/src/com/ibm/icu/dev/tool/translit/indic.pl
new file mode 100755
index 0000000..e59c47f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/indic.pl
@@ -0,0 +1,655 @@
+#!perl
+
+# Usage - $0 <remap file>
+#  e.g. - indic indic.txt
+# The input file should be a subset of the Unicode data file containing
+# the blocks of interest.
+#
+# The remap file should have lines of the form
+# "\u0D01>\u0D02;"
+# including the quotes.  These will be interpreted as saying that the
+# undefined code point U+D01 (derived via mapping from InterIndic)
+# can be remapped to U+D02.
+# 
+# The purpose of this script is to process the Indic script data into
+# a form usable by the IndicTransliterator, that is, the Indic-Indic
+# transliterator.  The transliterator needs two things: A mapping of
+# the code points in common, and a list of the exceptions.
+
+# Assume we are located in icu4j/src/com/ibm/tools/translit/.
+# We want the Unicode DB in icu4j/src/data/unicode/.
+$UNICODE_DB = "../../../../data/unicode/UnicodeData.txt";
+$EXCEPTIONS_FILE = shift;
+
+# Assume we are located in icu4j/src/com/ibm/tools/translit/.
+# We want to output files to icu4j/src/com/ibm/text/resources/.
+# Output directory
+$OUTDIR = "../../text/resources";
+
+# The template file should contain java code that can be used
+# to generate RuleBasedTransliterator resource files.  The template
+# should contain the following embedded symbols, which this script
+# will replace:
+# $TOOL - name of generating tool
+# $DATE - date of generation
+# $SCRIPTFROM - name of source script
+# $SCRIPTTO - name of target script
+# $RULES - rules
+$RBT_TEMPLATE = 'rbtTemplate.txt';
+
+# Name of this tool in generated RBT files
+$RBT_GEN_TOOL = 'icu4j/src/com/ibm/tools/translit/indic.pl';
+
+$DUMP = 0; # If 1, dump out internal data
+
+$DO_HEURISTIC_REMAP = 0; # If 1, do automatic heuristic remapping
+$DO_DECOMP_REMAP = 0; # If 1, do decomp remapping
+
+open(UNICODE_DB);
+while (<UNICODE_DB>) {
+    next if (m|^0[0-8]|); # Skip up to Devanagari block (0900)
+    last if (m|^0D[8-F]|i); # Bail out after Malayam block (0D00)
+    # 0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+    my @data = split(/;/);
+    my $fullCode = hex($data[0]); # e.g., 0x093F
+    my $code = $fullCode & 0x7F; # e.g., 0x3F
+    my ($script, $name) = ($data[1] =~ /(\w+)\s+(.+)/);
+    die "Can't parse $_" unless ($name);
+    # e.g., $code/$script/$name = 3F/MALAYALAM/VOWEL SIGN I
+
+    # Titlecase the script
+    $script = ucfirst(lc($script));
+
+    # Fix a couple inconsistencies in the 3.0 data
+    # REVISIT: Is this okay to do?
+    if ($DO_HEURISTIC_REMAP) {
+        if ($script eq 'Gujarati' && $code >= 5 && $code <= 0x14) {
+            $name =~ s/^VOWEL/LETTER/;
+        }
+    }
+
+    # Keep track of all script names we encounter.  We also note the
+    # base of the block.
+    my $base = $fullCode & ~0x7F; # e.g., 0x900;
+    if (exists $SCRIPT_TO_BASE{$script}) {
+        die "Script base mismatch for $script: $base vs. $SCRIPT_TO_BASE{$script}"
+            if ($SCRIPT_TO_BASE{$script} ne $base);
+    } else {
+        $SCRIPT_TO_BASE{$script} = $base;
+    }
+
+    # Build up a mapping by name.  For each name, keep a hash keyed by
+    # code point.  For each code point, keep an array of script names.
+    # Also keep a total use count for each name.
+    push @{$NAME_CODE_TO_SCRIPTS{$name}{$code}}, $script;
+    ++$NAME_CODE_TO_SCRIPTS{$name}{count};
+
+    # Build a map that looks like this:
+    # $SCRIPT_NAME_TO_CODE{<script>}{<name>} = <code>
+    # or undef if there is no mapping.
+    $SCRIPT_NAME_TO_CODE{$script}{$name} = $code;
+
+    # Build a map that looks like this:
+    $SCRIPT_CODE_TO_NAME{$script}{$code} = $name;
+
+    # And a map from the fullCode point to the name
+    $FULLCODE_TO_NAME{$fullCode} = $name;
+
+    # Map code (0..7F) to name.  This is usually a 1-1 mapping, but
+    # is 1-n in a few cases.
+    if (exists $CODE_TO_NAME{$code}) {
+        if ($name ne $CODE_TO_NAME{$code}) {
+            # For multiple names on a code offset, use the format
+            # (a/b), (a/b/c), etc.
+            local $_ = $CODE_TO_NAME{$code};
+            if (m|^\(|) {
+                if (!m|[\(\)/]$name[\(\)/]|) {
+                    s|\)$|/$name\)|;
+                }
+            } else {
+                $_ = "($_/$name)";
+            }
+            $CODE_TO_NAME{$code} = $_;
+        }
+    } else {
+        $CODE_TO_NAME{$code} = $name;
+    }
+}
+close(UNICODE_DB);
+
+# Read and parse the manual remapping file.  This contains lines
+# of the form:
+
+# |"\u0956>\u0948;"  // AI Length Mark -> Devanagari Vowel Sign AI 
+
+# The left hand side contains a non-existent full code value.  It
+# should be a single value.  The right hand side contains one or more
+# real full code values.  The idea is that when a mapping from another
+# script ends up at the non-existent code point on the left, the
+# sequence on the right should be substituted.  In this example,
+# Devanagari has no AI Length Mark.  So, if transliterating from
+# Oriya, then the character 0B56 (Oriya AI Length Mark) will remap to
+# the non-existent 0956, and that remaps to 0948, our chosen
+# Devanagari equivalent.  For our purposes, the left hand side should
+# be taken to mean its equivalent point in the InterIndic range.  In
+# this example, what it really says is E056>0948 in the
+# InterIndic-Devanagari transliterator.
+
+if ($EXCEPTIONS_FILE) {
+    open(EXCEPTIONS_FILE) or die;
+    while (<EXCEPTIONS_FILE>) {
+        if (m|^\s*\"([^\"]*?)\"|) {
+            my $line = $_;
+            $_ = $1;
+            if (/^(.*)>(.*);$/) {
+                my ($rawFrom, $rawTo) = ($1, $2);
+                my @from = parseUnicodeEscape($rawFrom);
+                my @to = parseUnicodeEscape($rawTo);
+                my $from = hexArray(@from);
+                # Some entries look like this:
+                # |"\u0955>\u0955;"
+                # these do nothing; ignore them.
+                if (intArraysEqual(\@from, \@to)) {
+                    #print STDERR "Ignoring NOOP remap of $from\n";
+                } elsif (exists $EXCEPTIONS{$from}) {
+                    print STDERR "ERROR in $EXCEPTIONS_FILE - Duplicate remap entries for $from\n";
+                } elsif (scalar @from > 1) {
+                    print STDERR "ERROR in $EXCEPTIONS_FILE - Ignoring multichar remap: ", hexArray(@from), "->", hexArray(@to), "\n";                    
+                } else {
+                    # Check this for validity.  Full code on the left
+                    # should NOT exist.  Full code seq on the right should.
+                    if (exists $FULLCODE_TO_NAME{$from[0]}) {
+                        print STDERR "ERROR in $EXCEPTIONS_FILE - Invalid remap; left side defined: ", hexArray(@from), "->", hexArray(@to), "\n";
+                    } elsif (grep(! exists $FULLCODE_TO_NAME{$_}, @to)) {
+                        print STDERR "ERROR in $EXCEPTIONS_FILE - Invalid remap; right side undefined: ", hexArray(@from), "->", hexArray(@to), "\n";
+                    } else {
+                        $EXCEPTIONS{$from[0]} = \@to;
+                    }
+                }
+            } else { die "ERROR in $EXCEPTIONS_FILE - Can't parse \"$_\" in line $line"; }
+        }
+    }
+    close(EXCEPTIONS_FILE);
+    print STDERR "$EXCEPTIONS_FILE: Loaded ", scalar keys %EXCEPTIONS, " remappings\n";
+}
+
+if ($DO_DECOMP_REMAP) {
+    # Read the NamesList.txt file.  This contains decomposition data.
+    # Gather these into %DECOMP, which maps a name to n1.n2..., where n1
+    # etc. are decomposed names.  E.g. $DECOMP{'LETTER RRA'} -> 'LETTER
+    # RA.SIGN NUKTA'.  There may be different mappings in different script
+    # blocks (LETTER RRA is mapped differently in Devanagari and Bengali),
+    # in which case the name goes into %DECOMP_MISMATCH, and is removed
+    # from %DECOMP.
+    $NAMES = "NamesList.txt";
+    open(NAMES);
+    while (<NAMES>) {
+        # Skip to start of DEVANAGARI block
+        last if (/^\@\@\s+0900/);
+    }
+    while (<NAMES>) {
+        # Continue until start of SINHALA block
+        last if (/^\@\@\s+0D80/);
+        if (/^([0-9A-Z]{4})/i) {
+            $code = $1;
+        } elsif (/^\s+:\s*(.+)/) {
+            # We've found a mapping of the form:
+            # 0929    DEVANAGARI LETTER NNNA
+            #     * for transcribing Dravidian alveolar n
+            #     : 0928 093C
+            my $from = $FULLCODE_TO_NAME{hex($code)};
+            my @to = map($FULLCODE_TO_NAME{hex($_)}, split(/\s+/, $1));
+            if (exists $DECOMP{$from}) {
+                my $aref = $DECOMP{$from};
+                if (join(".", @$aref) ne join(".", @to)) {
+                    print STDERR "ERROR: Decomp mismatch for $from\n";
+                    print STDERR "     : $from = ", join(".", @$aref), "\n";
+                    print STDERR "     : $from = ", join(".", @to), "\n";
+                    $DECOMP_MISMATCH{$from} = 1;
+                }
+            } else {
+                $DECOMP{$from} = \@to;
+            }
+        }
+    }
+    close(NAMES);
+    # Remove mismatches
+    foreach (keys %DECOMP_MISMATCH) {
+        delete $DECOMP{$_};
+    }
+    if ($DUMP) {
+        foreach (keys %DECOMP) {
+            print "$_ = ", join(" + ", @{$DECOMP{$_}}), "\n";
+        }
+    }
+}
+
+# Count the total number of scripts
+
+$SCRIPT_COUNT = scalar keys %SCRIPT_TO_BASE;
+#print join("\n", sort keys %SCRIPT_TO_BASE), "\n";
+
+# Dump out the %NAME_CODE_TO_SCRIPTS map.
+
+if ($DUMP) {
+    print "\nBY NAME:\n";
+    foreach my $pass ((1, 2)) {
+        print "\nBY NAME - SINGLETONS:\n" if ($pass eq 2);
+        foreach my $name (sort keys %NAME_CODE_TO_SCRIPTS) {
+            if ($pass eq 1) {
+                next if (1 >= $NAME_CODE_TO_SCRIPTS{$name}{count});
+            } else {
+                next if (1 < $NAME_CODE_TO_SCRIPTS{$name}{count});
+            }
+            print "$name:";
+            my $href = $NAME_CODE_TO_SCRIPTS{$name};
+            foreach my $code (sort {$a <=> $b} keys %$href) {
+                next if ($code eq 'count');
+                my $aref = $href->{$code};
+                print " ", hex2($code), " (", formatScriptList($aref), ")";
+            }
+            print "\n";
+        }
+    }
+}
+
+# Create some transliterators, based on the scripts and the %NAME_CODE_TO_SCRIPTS
+# map.  Only use %NAME_CODE_TO_SCRIPTS entries with a count of 2 or more, that is,
+# names that occur in two or more scripts.  For those scripts where
+# the names occur, map both up to the InterIndic range, and down to
+# the target script.
+
+$INTERINDIC = 0xE000;
+$INTERINDIC_EXTRA = 0xE080;
+$INTERINDIC_EXTRA_NEXT = $INTERINDIC_EXTRA;
+
+# For each script, create a hash.  The hash has a key for each
+# code point, either within its block, or in the InterIndic block.
+# the value of the key is the mapping.
+
+# The script hashes are named %DEVANAGARI, etc., and referenced
+# with symbolic refs.
+
+@REMAP = ('s/\bSHORT\s+//i',
+          's/\bCANDRA\s+//i',
+          's/\bQA$/KA/i',
+          's/\bKHHA$/KHA/i',
+          's/\bGHHA$/GA/i',
+          's/\bZA$/JA/i',
+          's/\bFA$/PHA/i',
+          's/\bVA$/BA/i',
+          's/\bNNNA$/NA/i',
+          's/\bRRA$/RA/i',
+          's/\bLLLA$/LLA/i',
+          's/\bLLLA$/LA/i',
+          's/\bLLA$/LA/i',
+          's/^A(.) LENGTH MARK$/VOWEL SIGN A$1/i',
+          's/CANDRABINDU/BINDI/i',
+          's/BINDI/CANDRABINDU/i',
+          );
+
+# Do this so we see zero counts:
+foreach my $remap (@REMAP) { $REMAP{$remap} = 0; }
+
+# This loop iterates over the names in the NAME_CODE_TO_SCRIPTS hash.
+# These names are things like "LETTER NNNA".  For each name, it then
+# creates script mappings up to the InterIndic area, and back down
+# to the script areas.  If a name maps to more than one offset,
+# then it uses the InterIndic extra range.  Either way, it picks
+# a single InterIndic point, either an offset point or something in
+# the extra range, and maps up and down from that point.
+foreach my $name (sort keys %NAME_CODE_TO_SCRIPTS) {
+    next if (1 >= $NAME_CODE_TO_SCRIPTS{$name}{count});
+    my $href = $NAME_CODE_TO_SCRIPTS{$name};
+    # Count the number of different codes assigned to this name.
+    # Usually 1, but 2 for a handful of names.
+    my $codeCount = (keys %{$NAME_CODE_TO_SCRIPTS{$name}}) - 1; # less 1: {count}
+    # If $codeCount is 1, then map directly up to the $INTERINDIC
+    # base.  If $codeCount is 2, then map into unused spots starting
+    # at $INTERINDIC_EXTRA.
+    my $interIndicCode;
+    if ($codeCount > 1) {
+        # Map into the InterIndic extra range
+        $interIndicCode = $INTERINDIC_EXTRA_NEXT++;
+    }
+    my %seen;
+    foreach my $code (sort {$a ne 'count' && $b ne 'count' && $a <=> $b} keys %$href) {
+        next if ($code eq 'count');
+        my $aref = $href->{$code}; # Ref to array of scripts
+        if ($codeCount == 1) {
+            # Map directly
+            $interIndicCode = $INTERINDIC + $code;
+        }
+        # Keep track of the names of the extra InterIndic points
+        $INTERINDIC_NAME_TO_FULLCODE{$name} = $interIndicCode;
+
+        foreach my $scr (@$aref) {
+            $seen{$scr} = 1;
+            my $fullCode = $SCRIPT_TO_BASE{$scr} + $code;
+            $ {$scr}{$fullCode} = hex4($interIndicCode) . "; // $name";
+            $ {$scr}{$interIndicCode} = hex4($fullCode) . "; // $name";
+        }
+    }
+    # Now handle InterIndic->Script unmapped points.  For each name,
+    # some of the scripts will be left out -- will have no mappings
+    # to that name.  For these scripts, we can either leave them
+    # unmapped (so the InterIndic->Local mapping is empty), or
+    # try to remap.
+ unmappedScript:
+    foreach my $scr (keys %SCRIPT_TO_BASE) {
+        next if ($seen{$scr});
+
+        if ($DO_HEURISTIC_REMAP) {
+            # Try to remap through the known equivalences in our
+            # remapping table
+            foreach my $remapRE (@REMAP) {
+                local $_ = $name;
+                if (eval($remapRE)) {
+                    if (exists $SCRIPT_NAME_TO_CODE{$scr}{$_}) {
+                        $ {$scr}{$interIndicCode} =
+                            hex4($SCRIPT_TO_BASE{$scr} + $SCRIPT_NAME_TO_CODE{$scr}{$_}) .
+                                "; // REMAP: $name -> $_";
+                        ++$REMAP{$remapRE};
+                        next unmappedScript;
+                    }
+                }
+            }
+        }
+
+        # Try to remap through the file.  This contains remappings of
+        # the form 0991->0993.  That is, it contains local remappings
+        # that we can substitute and try again with.
+        #|GURMUKHI-InterIndic ------------------------------
+        #|// 0A02>; // UNMAPPED INTERNAL: SIGN BINDI
+        #|InterIndic-GURMUKHI ------------------------------
+        #|// E001>; // UNMAPPED EXTERNAL: SIGN CANDRABINDU
+        #|"\u0A01>\u0A02;"
+        # In this example, the remapping tells us that the non-existent
+        # character A01 should be considered equivalent to the real
+        # character A02.
+        # We implement this by adding two mappings; one from
+        # the InterIndic equivalent of A01, that is, E001, to A02,
+        # and one from A02, which otherwise has no mapping, to E001.
+        if ($EXCEPTIONS_FILE && $interIndicCode < $INTERINDIC_EXTRA) {
+            # Try to map this InterIndic character back to a the spot
+            # it would occupy in this script if it had a mapping.
+            my $code = $interIndicCode & 0x7F;
+            my $pseudoFullCode = $SCRIPT_TO_BASE{$scr} + $code;
+            if (exists $EXCEPTIONS{$pseudoFullCode}) {
+                my $fullCodeArray = $EXCEPTIONS{$pseudoFullCode};
+                my $comment;
+                foreach my $c (@$fullCodeArray) {
+                    $comment .= "." if ($comment);
+                    $comment .= $FULLCODE_TO_NAME{$c};
+                }
+                $comment = "; // REMAP ($EXCEPTIONS_FILE): " .
+                    hex4($pseudoFullCode) . ">" . hexArray(@$fullCodeArray) . " = " .
+                    $CODE_TO_NAME{$code} . ">" . $comment;
+                $ {$scr}{$interIndicCode} = hexArray(@$fullCodeArray) . $comment;
+                if (scalar @$fullCodeArray == 1) {
+                    if (exists $ {$scr}{$fullCodeArray->[0]}) {
+                        # There's already a proper mapping; no need to fill
+                        # in reverse
+                    } else {
+                        $ {$scr}{$fullCodeArray->[0]} = hex4($interIndicCode) . $comment;
+                    }
+                }
+                next unmappedScript;
+            }
+        }
+
+        $SCRIPT_FULLCODE_TO_IS_UNMAPPED{$scr}{$interIndicCode} = 1;
+        local $_ = "; // UNMAPPED InterIndic-$scr: $name";
+        if (exists $SCRIPT_CODE_TO_NAME{$scr}{$interIndicCode & 0x7F}) {
+            my $fullCode = $SCRIPT_TO_BASE{$scr} + ($interIndicCode & 0x7F);
+            $_ .= " (" . hex4($fullCode) . " = " . $FULLCODE_TO_NAME{$fullCode} . ")";
+        }
+        $ {$scr}{$interIndicCode} = $_;
+    }
+}
+
+# Add in unmapped entries for each script
+foreach my $scr (keys %SCRIPT_TO_BASE) {
+    my $base = $SCRIPT_TO_BASE{$scr};
+ unmappedInt:
+    foreach my $code (keys %{$SCRIPT_CODE_TO_NAME{$scr}}) {
+        my $fullCode = $code + $base;
+        next if (exists $ {$scr}{$fullCode});
+        my $name = $SCRIPT_CODE_TO_NAME{$scr}{$code};
+
+        if ($DO_HEURISTIC_REMAP) {
+            foreach my $remapRE (@REMAP) {
+                local $_ = $name;
+                if (eval($remapRE)) {
+                    if (exists $INTERINDIC_NAME_TO_FULLCODE{$_}) {
+                        $ {$scr}{$fullCode} =
+                            hex4($INTERINDIC_NAME_TO_FULLCODE{$_}) .
+                                "; // REMAP: $name -> $_";
+                        ++$REMAP{$remapRE};
+                        next unmappedInt;
+                    }
+                }
+            }
+        }
+
+        # Now try the decomp table
+        if ($DO_DECOMP_REMAP && exists $DECOMP{$name}) {
+            my $x;
+            my $cmt = "; // DECOMP: $name -> ";
+            foreach my $n (@{$DECOMP{$name}}) {
+                if (exists $SCRIPT_NAME_TO_CODE{$scr}{$n}) {
+                    $x .= hex4($SCRIPT_TO_BASE{$scr} + $SCRIPT_NAME_TO_CODE{$scr}{$n});
+                    $cmt .= $n . " + ";
+                } else {
+                    $cmt = 0;
+                    last;
+                }
+            }
+            if ($cmt) {
+                $ {$scr}{$fullCode} = $x . $cmt;
+                next unmappedInt;
+            }
+        }
+
+        $SCRIPT_FULLCODE_TO_IS_UNMAPPED{$scr}{$fullCode} = 1;
+        $ {$scr}{$fullCode} = "; // UNMAPPED $scr-InterIndic: $name";
+    }
+}
+
+# GUR
+# E00B>; // UNMAPPED EXTERNAL: LETTER VOCALIC R "\u0A0B>\u0A30\u0A3F;"
+# E00C>; // UNMAPPED EXTERNAL: LETTER VOCALIC L "\u0A0C>\u0A07;"
+# E00D>; // UNMAPPED EXTERNAL: LETTER CANDRA E "\u0A0D>\u0A10;"
+# E011>; // UNMAPPED EXTERNAL: LETTER CANDRA O "\u0A11>\u0A14;"
+# E037>; // UNMAPPED EXTERNAL: LETTER SSA "\u0A37>\u0A36;"
+# E045>; // UNMAPPED EXTERNAL: VOWEL SIGN CANDRA E "\u0A45>\u0A48;"
+# E049>; // UNMAPPED EXTERNAL: VOWEL SIGN CANDRA O "\u0A49>\u0A4C;"
+# Fix QA too
+
+# Dump out script maps
+foreach my $scr (sort keys %SCRIPT_TO_BASE) {
+    ## next unless ($scr eq 'TELUGU'); # Debugging
+    my @rules;
+    my $flag = 1;
+    foreach my $fullCode (sort {$a <=> $b} keys %{$scr}) {
+        if ($flag && $fullCode >= $INTERINDIC) {
+            # We have the complete <scr>-InterIndic rules; dump
+            # them out.
+            generateRBT($scr, "InterIndic", \@rules, $OUTDIR);
+            @rules = ();
+            $flag = 0;
+        }
+        if (exists $SCRIPT_FULLCODE_TO_IS_UNMAPPED{$scr}{$fullCode}) {
+            push @rules, "// " . hex4($fullCode) . ">" . $ {$scr}{$fullCode};
+        } else {
+            push @rules, hex4($fullCode) . ">" . $ {$scr}{$fullCode};
+        }
+    }
+    # Now generate the InterIndic-<scr> rules.
+    generateRBT("InterIndic", $scr, \@rules, $OUTDIR);
+
+#    print "$scr-InterIndic ------------------------------\n";
+#    my $flag = 1;
+#    foreach my $fullCode (sort {$a <=> $b} keys %{$scr}) {
+#        if ($flag && $fullCode >= $INTERINDIC) {
+#            print "InterIndic-$scr ------------------------------\n";
+#            $flag = 0;
+#        }
+#        if (exists $SCRIPT_FULLCODE_TO_IS_UNMAPPED{$scr}{$fullCode}) {
+#            print "// ", hex4($fullCode), ">", $ {$scr}{$fullCode}, "\n";
+#        } else {
+#            print hex4($fullCode), ">", $ {$scr}{$fullCode}, "\n";
+#        }
+#    }
+}
+
+# List successful remappings
+if ($DO_HEURISTIC_REMAP) {
+    foreach my $remap (sort keys %REMAP) {
+        print STDERR "REMAP ", $REMAP{$remap}, " x $remap\n";
+    }
+}
+
+#----------------------------------------------------------------------
+# SUBROUTINES
+
+# Return a listing of an array of scripts
+# Param: array ref
+sub formatScriptList {
+    my $aref = shift;
+    if ($SCRIPT_COUNT == @$aref) {
+        return "all";
+    } elsif (($SCRIPT_COUNT - 3) <= @$aref) {
+        my $s = "all but";
+        my %temp;
+        foreach (@$aref) { $temp{$_} = 1; }
+        foreach (sort keys %SCRIPT_TO_BASE) {
+            $s .= " $_" unless exists $temp{$_};
+        }
+        return $s;
+    } else {
+        return join(" ", @$aref);
+    }
+}
+
+# Format as %02X hex
+sub hex2 {
+    sprintf("%02X", $_[0]);
+}
+
+# Format as %04X hex
+sub hex4 {
+    sprintf("\\u%04X", $_[0]);
+}
+
+# Format an array as %04X hex, delimited by "."s
+sub hexArray {
+    join("", map { hex4($_); } @_);
+}
+
+# Parse a string of the form "\u0D01" to an array of integers.
+# Must ONLY contain escapes.
+# Return the array.
+sub parseUnicodeEscape {
+    local $_ = shift;
+    my $orig = $_;
+    my @result;
+    while (length($_)) {
+        if (/^\\u([0-9a-f]{4})(.*)/i) {
+            push @result, hex($1);
+            $_ = $2;
+        } else {
+            die "Can't parse Unicode escape $orig\n";
+        }
+    }
+    if (0 == @result) {
+        die "Can't parse Unicode escape $orig\n";        
+    }
+    @result;
+}
+
+# Return 1 if the two arrays of ints are equal.
+# Param: ref to array of ints
+# Param: ref to array of ints
+sub intArraysEqual {
+    my $a = shift;
+    my $b = shift;
+    if (scalar @$a == scalar @$b) {
+        for (my $i=0; $i<@$a; ++$i) {
+            if ($a->[$i] != $b->[$i]) {
+                return 0;
+            }
+        }
+        return 1;
+    }
+    return 0;
+}
+
+# Given a rule, possibly with trailing // comment,
+# quote the rule part and add a trailing "+" after
+# it.
+sub quoteRule {
+    my $cmt;
+    $cmt = $1 if (s|(\s*//.*)||); # isolate trailing // comment
+    s/^(.*;)/\"$1\"+/;
+    s/$/$cmt/;
+    $_;
+}
+
+# Given the name of the source script, name of the target script,
+# and array of rule strings, return a string containing the source
+# for a RuleBasedTransliterator file.
+# Param: source script name
+# Param: target script name
+# Param: ref to array of rules.  These rules are unquoted, without
+#  concatenators between them, but do have trailing ';' separators.
+# Param: name of output directory
+sub generateRBT {
+    # $TOOL - name of generating tool
+    # $DATE - date of generation
+    # $SCRIPTFROM - name of source script
+    # $SCRIPTTO - name of target script
+    # $RULES - rules
+    my ($source, $target, $rules, $outdir) = @_;
+    my $text;
+    $outdir =~ s|[/\\]$||; # Delete trailing / or \
+    my $OUT = "$outdir/TransliterationRule_${source}_$target.java";
+    open(RBT_TEMPLATE) or die;
+    open(OUT, ">$OUT") or die;
+    while (<RBT_TEMPLATE>) {
+        while (/\$([A-Za-z0-9]+)/) {
+            my $tag = $1;
+            my $sub;
+            if ($tag eq 'TOOL') {
+                $sub = $RBT_GEN_TOOL;
+            } elsif ($tag eq 'DATE') {
+                $sub = localtime;
+            } elsif ($tag eq 'SCRIPTFROM') {
+                $sub = $source;
+            } elsif ($tag eq 'SCRIPTTO') {
+                $sub = $target;
+            } elsif ($tag eq 'RULES') {
+                # Get any whitespace-only indent off the front of this tag
+                my $indent;
+                $indent = $1 if (/^(\s+)\$$tag/);
+
+                # The rules in the array are not quoted.  We need to quote
+                # them and add '+' operators between them.  We do NOT need
+                # to add ';' separators.  We DO need to separate trailing
+                # // comments and handle them.
+                $sub = join("\n$indent", map(&quoteRule, @$rules)) .
+                    "\n$indent\"\"";
+            } else {
+                print STDERR "ERROR in $RBT_TEMPLATE: Unknown tag $tag\n";
+                $sub = "[ERROR:Unknown tag \$$tag]";
+            }
+            s/\$$tag/$sub/;
+        }
+        print OUT;
+    }
+    close(OUT);
+    close(RBT_TEMPLATE);
+    print STDERR "Written: $OUT\n";
+}
+
+__END__
diff --git a/src/com/ibm/icu/dev/tool/translit/indicExceptions.txt b/src/com/ibm/icu/dev/tool/translit/indicExceptions.txt
new file mode 100755
index 0000000..cb96528
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/indicExceptions.txt
@@ -0,0 +1,370 @@
+/* Reserved in all 9 scripts */
+
+/*
+   These codepoints are marked RESERVED in all 9 indic scripts.
+   There should not be any transliteration work on these codepoints, 
+   if they are ever encountered.  Ignore these codepoints.
+
+   Common reserved codepoints in ALL 9 scripts : (offset)
+   00, 04, 
+   3A, 3B, 
+   4E, 4F, 
+   7B, 7C, 7D, 7E, 7F
+*/
+
+/* Script-specific */
+/*
+   These codepoints are specific to their respective script.
+   Transliteration of these codepoints from one script to another is meaningless.
+
+   For example,
+      \u0B70 (Oriya) and \u0BF0 (Tamil) are non-reserved codepoints within each script.
+      On transliterating \u0B70 from Oriya to Tamil, we will get \u0BF0.
+      But \u0B70 in Oriya represents ISSHAR, whereas \u0BF0 in Tamil represents NUMBER TEN.
+
+   \u0970 Devanagari abbreviation sign
+
+   \u09F0 Bengali letter RA with middle diagonal (Assamese)
+   \u09F1 Bengali letter RA with lower diagonal 
+          (=Bengali letter VA with lower diagonal, Assamese)
+   \u09F2 Bengali rupee mark
+   \u09F3 Bengali rupee sign
+   \u09F4 Bengali currency numerator one
+   \u09F5 Bengali currency numerator two
+   \u09F6 Bengali currency numerator three
+   \u09F7 Bengali currency numerator four
+   \u09F8 Bengali currency numerator one less than the denominator
+   \u09F9 Bengali currency denominator sixteen
+   \u09FA Bengali isshar
+
+   \u0A70 Gurmukhi tippi (nasalization)
+   \u0A71 Gurmukhi addak (doubles following consonant)
+   \u0A72 Gurmukhi iri (base for vowels)
+   \u0A73 Gurmukhi ura (base for vowels)
+   \u0A74 Gurmukhi ek onkar (God is One)
+
+   \u0B70 Oriya isshar
+
+   \u0BF0 Tamil number ten
+   \u0BF1 Tamil number one hundred
+   \u0BF2 Tamil number one thousand
+*/
+
+
+
+/*****************************************************************************/
+/*  NOTE : <unknown> code will map back to itself                            */
+/*         till we find a good match                                         */
+/*****************************************************************************/
+
+
+
+/*****************************************************************************/
+/* Devanagari                                                                */
+/*****************************************************************************/
+
+"\u0955>\u0955;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0956>\u0948;"  // AI Length Mark -> Devanagari Vowel Sign AI
+"\u0957>\u094C;"  // AU Length Mark -> Devanagari Vowel Sign AU
+
+
+
+/*****************************************************************************/
+/* Bengali                                                                   */
+/*****************************************************************************/
+
+"\u098D>\u098D;"  // <unknown> independent vowel Candra E
+"\u098E>\u098F;"  // Letter Short E -> Letter E
+"\u0991>\u0993;"  // Letter Candra O -> Letter O
+"\u0992>\u0993;"  // Letter Short O -> Letter O
+"\u09A9>\u09A8;"  // Letter NNNA -> Letter NA
+"\u09B1>\u09B0;"  // Letter RRA -> Letter RA
+"\u09B3>\u09B2;"  // Letter LLA -> Letter LA
+"\u09B4>\u09B2;"  // Letter LLLA -> Letter LA
+"\u09B5>\u09AC;"  // Letter VA -> Letter BA
+"\u09BD>\u09BD;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u09C5>\u09C7;"  // Vowel Candra E -> Vowel E
+"\u09C6>\u09C7;"  // Vowel Short E -> Vowel E
+"\u09C9>\u09CB;"  // Vowel Candra O -> Vowel O
+"\u09CA>\u09CB;"  // Vowel Short O -> Vowel O
+"\u09D0>\u09D0;"  // <unknown> OM - Devanagari (\u0950), Gujarati (\u0AD0)
+"\u09D1>\u09D1;"  // <unknown> Stress - Devanagari (\u0951)
+"\u09D2>\u09D2;"  // <unknown> Stress - Devanagari (\u0952)
+"\u09D3>\u09D3;"  // <unknown> Accent - Devanagari (\u0953)
+"\u09D4>\u09D4;"  // <unknown> Accent - Devanagari (\u0954)
+"\u09D5>\u09D5;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u09D6>\u09C8;"  // AI Length Mark -> Bengali Vowel Sign AI
+"\u09D8>\u0995;"  // Letter QA -> Letter KA
+"\u09D9>\u0996;"  // Letter KHHA -> Letter KHA
+"\u09DA>\u0997;"  // Letter GHHA -> Letter GA
+"\u09DB>\u099C;"  // Letter ZA -> Letter JA
+"\u09DE>\u09AB;"  // Letter FA -> Letter PHA
+"\u09E4>\u09E4;"  // <unknown> Danda - Devanagari (\u0964)
+"\u09E5>\u09E5;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Gurmukhi                                                                  */
+/*****************************************************************************/
+
+"\u0A01>\u0A02;"
+"\u0A03>\u0A03;"  // <unknown> Sign Visarga - Devanagari (\u0903) & the rest
+"\u0A0B>\u0A30\u0A3F;"
+"\u0A0C>\u0A07;"
+"\u0A0D>\u0A10;"
+"\u0A0E>\u0A0F;"
+"\u0A11>\u0A14;"
+"\u0A12>\u0A13;"
+"\u0A29>\u0A28;"
+"\u0A31>\u0A30;"
+"\u0A34>\u0A33;"
+"\u0A37>\u0A36;"
+"\u0A3D>\u0A3D;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u0A43>\u0A43;"  // <unknown> Vocalic R - Devanagari (\u0943)
+"\u0A44>\u0A44;"  // <unknown> Vocalic RR - Devanagari (\u0944)
+"\u0A45>\u0A48;"
+"\u0A46>\u0A47;"
+"\u0A49>\u0A4C;"
+"\u0A4A>\u0A4B;"
+"\u0A50>\u0A50;"  // <unknown> OM - Devanagari (\u0950), Gujarati (\u0AD0)
+"\u0A51>\u0A51;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0A52>\u0A52;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0A53>\u0A53;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0A54>\u0A54;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0A55>\u0A55;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0A56>\u0A48;"  // AI Length Mark -> Gurmukhi Vowel Sign AI
+"\u0A57>\u0A4C;"  // AU Length Mark -> Gurmukhi Vowel Sign AU
+"\u0A58>\u0A15\u0A3C;"
+"\u0A5D>\u0A22\u0A3C;"  // Letter RHA -> Gurmukhi letter ddha (\u0A22) + nukta (\u0A3C)
+"\u0A5F>\u0A2F;"
+"\u0A60>\u0A30\u0A3F;"
+"\u0A61>\u0A08\u0A3C;"
+"\u0A62>\u0A3F\u0A3C;"
+"\u0A63>\u0A40\u0A3C;"
+"\u0A64>\u0A64;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0A65>\u0A65;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Gujarati                                                                  */
+/*****************************************************************************/
+"\u0A8C>\u0AB2\u0AC3;"
+"\u0A8E>\u0A8D;"
+"\u0A92>\u0A91;"
+"\u0AA9>\u0AA8;"
+"\u0AB1>\u0AB0;"
+"\u0AB4>\u0AB3;"
+"\u0AC6>\u0AC5;"
+"\u0ACA>\u0AC9;"
+"\u0AD1>\u0AD1;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0AD2>\u0AD2;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0AD3>\u0AD3;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0AD4>\u0AD4;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0AD5>\u0AD5;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0AD6>\u0AC8;"  // AI Length Mark -> Gujarati Vowel Sign AI
+"\u0AD7>\u0ACC;"  // AU Length Mark -> Gujarati Vowel Sign AU
+"\u0AD8>\u0A95\u0ABC;"
+"\u0AD9>\u0A96\u0ABC;"
+"\u0ADA>\u0A97\u0ABC;"
+"\u0ADB>\u0A9C\u0ABC;"
+"\u0ADC>\u0AA1\u0ABC;"
+"\u0ADD>\u0AA2\u0ABC;"
+"\u0ADE>\u0AAB\u0ABC;"
+"\u0ADF>\u0AAF\u0ABC;"
+"\u0AE1>\u0AB2\u0AC3;"
+"\u0AE2>\u0ABF\u0ABC;"
+"\u0AE3>\u0AC0\u0ABC;"
+"\u0AE4>\u0AE4;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0AE5>\u0AE5;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Oriya                                                                     */
+/*****************************************************************************/
+"\u0B0D>\u0B0F;"
+"\u0B0E>\u0B0F;"
+"\u0B11>\u0B13;"
+"\u0B12>\u0B13;"
+"\u0B29>\u0B28;"
+"\u0B31>\u0B30;"
+"\u0B34>\u0B33;"
+"\u0B35>\u0B2C;"  // Letter VA -> Oriya Letter BA
+"\u0B44>\u0B43\u0B3C;"
+"\u0B45>\u0B47;"
+"\u0B46>\u0B47;"
+"\u0B49>\u0B4B;"
+"\u0B4A>\u0B4B;"
+"\u0B50>\u0B13\u0B01;"
+"\u0B51>\u0B51;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0B52>\u0B52;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0B53>\u0B53;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0B54>\u0B54;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0B55>\u0B55;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0B58>\u0B15\u0B3C;"
+"\u0B59>\u0B16\u0B3C;"
+"\u0B5A>\u0B17\u0B3C;"
+"\u0B5B>\u0B1C\u0B3C;"
+"\u0B5E>\u0B2B\u0B3C;"
+"\u0B62>\u0B56\u0B3C;"
+"\u0B63>\u0B57\u0B3C;"
+"\u0B64>\u0B64;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0B65>\u0B65;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Tamil                                                                     */
+/*****************************************************************************/
+
+"\u0B81>\u0B81;"  // <unknown> Candrabindu - Devanagari (\u0901) ,etc
+"\u0B8B>\u0BB0\u0BBF;"
+"\u0B8C>\u0B87;"
+"\u0B8D>\u0B86;"
+"\u0B91>\u0B86;"
+"\u0B96>\u0B95;"
+"\u0B97>\u0B95;"
+"\u0B98>\u0B95;"
+"\u0B9B>\u0B9A;"
+"\u0B9D>\u0B9A;"
+"\u0BA0>\u0B9F;"
+"\u0BA1>\u0B9F;"
+"\u0BA2>\u0B9F;"
+"\u0BA5>\u0BA4;"
+"\u0BA6>\u0BA4;"
+"\u0BA7>\u0BA4;"
+"\u0BAB>\u0BAA;"
+"\u0BAC>\u0BAA;"
+"\u0BAD>\u0BAA;"
+"\u0BB6>\u0BB7;"
+"\u0BBC>\u0BBC;"  // <unknown> Nukta
+"\u0BBD>\u0BBD;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u0BC3>\u0BCD\u0BB0\u0BBF;"
+"\u0BC4>\u0BCD\u0BB0\u0BBF;"
+"\u0BC5>\u0BBE;"
+"\u0BC9>\u0BBE;"
+"\u0BD0>\u0B93\u0BAE\u0BCD;"
+"\u0BD1>\u0BD1;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0BD2>\u0BD2;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0BD3>\u0BD3;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0BD4>\u0BD4;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0BD5>\u0BD5;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0BD6>\u0BC8;"  // AI Length Mark -> Tamil Vowel Sign AI
+"\u0BD8>\u0B95;"
+"\u0BD9>\u0B95;"
+"\u0BDA>\u0B95;"
+"\u0BDB>\u0B9C;"
+"\u0BDC>\u0B9F;"
+"\u0BDD>\u0B9F;"
+"\u0BDE>\u0BAA;"
+"\u0BDF>\u0BAF;"
+"\u0BE0>\u0BB0\u0BBF;"
+"\u0BE1>\u0B88;"
+"\u0BE2>\u0BE2;"  // <unknown> Vocalic L - Devanagari (\u0962)
+"\u0BE3>\u0BE3;"  // <unknown> Vocalic LL - Devanagari (\u0963)
+"\u0BE4>\u0BE4;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0BE5>\u0BE5;"  // <unknown> Double Danda - Devanagari (\u0965)
+"\u0BE6>\u0030;"  // ZERO - Digit ZERO
+
+
+
+/*****************************************************************************/
+/* Telugu                                                                    */
+/*****************************************************************************/
+
+"\u0C0D>\u0C0E;"
+"\u0C11>\u0C12;"
+"\u0C29>\u0C28;"
+"\u0C34>\u0C33;"
+"\u0C3C>\u0C3C;"  // <unknown> Nukta
+"\u0C3D>\u0C3D;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u0C45>\u0C46;"
+"\u0C49>\u0C4A;"
+"\u0C50>\u0C13\u0C02;"
+"\u0C51>\u0C51;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0C52>\u0C52;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0C53>\u0C53;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0C54>\u0C54;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0C57>\u0C4C;"
+"\u0C58>\u0C15;"
+"\u0C59>\u0C16;"
+"\u0C5A>\u0C17;"
+"\u0C5B>\u0C1C;"
+"\u0C5C>\u0C21;"
+"\u0C5D>\u0C22;"
+"\u0C5E>\u0C2B;"
+"\u0C5F>\u0C2F;"
+"\u0C62>\u0C3F;"
+"\u0C63>\u0C40;"
+"\u0C64>\u0C64;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0C65>\u0C65;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Kannada                                                                   */
+/*****************************************************************************/
+
+"\u0C81>\u0C82;"
+"\u0C8D>\u0C8E;"
+"\u0C91>\u0C92;"
+"\u0CA9>\u0CA8;"
+"\u0CB4>\u0CB3;"
+"\u0CBC>\u0CBC;"  // <unknown> Nukta
+"\u0CBD>\u0CBD;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u0CC5>\u0CC6;"
+"\u0CC9>\u0CCA;"
+"\u0CD0>\u0C93\u0C82;"
+"\u0CD1>\u0CD1;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0CD2>\u0CD2;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0CD3>\u0CD3;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0CD4>\u0CD4;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0CD7>\u0CCC;"
+"\u0CD8>\u0C95;"
+"\u0CD9>\u0C96;"
+"\u0CDA>\u0C97;"
+"\u0CDB>\u0C9C;"
+"\u0CDC>\u0CA1;"
+"\u0CDD>\u0CA2;"
+"\u0CDF>\u0CAF;"
+"\u0CE2>\u0CBF;"
+"\u0CE3>\u0CC0;"
+"\u0CE4>\u0CE4;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0CE5>\u0CE5;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Malayalam                                                                 */
+/*****************************************************************************/
+
+"\u0D01>\u0D02;"
+"\u0D0D>\u0D06;"
+"\u0D11>\u0D13;"
+"\u0D29>\u0D28;"
+"\u0D3C>\u0D3C;"  // <unknown> Nukta
+"\u0D3D>\u0D3D;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u0D44>\u0D44;"  // <unknown> Vocalic RR - Devanagari (\u0944)
+"\u0D45>\u0D3E;"
+"\u0D49>\u0D4B;"
+"\u0D50>\u0D50;"  // <unknown> OM - Devanagari (\u0950), Gujarati (\u0AD0)
+"\u0D51>\u0D51;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0D52>\u0D52;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0D53>\u0D53;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0D54>\u0D54;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0D55>\u0D55;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0D56>\u0D48;"  // AI Length Mark -> Malayalam Vowel Sign AI
+"\u0D58>\u0D15;"
+"\u0D59>\u0D16;"
+"\u0D5A>\u0D17;"
+"\u0D5B>\u0D1C;"
+"\u0D5C>\u0D21;"
+"\u0D5D>\u0D22;"
+"\u0D5E>\u0D2B;"
+"\u0D5F>\u0D2F;"
+"\u0D62>\u0D62;"  // <unknown> Vocalic L - Devanagari (\u0962)
+"\u0D63>\u0D63;"  // <unknown> Vocalic LL - Devanagari (\u0963)
+"\u0D64>\u0D64;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0D65>\u0D65;"  // <unknown> Double Danda - Devanagari (\u0965)
diff --git a/src/com/ibm/icu/dev/tool/translit/rbtTemplate.txt b/src/com/ibm/icu/dev/tool/translit/rbtTemplate.txt
new file mode 100755
index 0000000..0549bbd
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/rbtTemplate.txt
@@ -0,0 +1,26 @@
+/***********************************************************************
+* Copyright (c) 2000, International Business Machines Corporation
+* and others.  All Rights Reserved.
+************************************************************************
+* > THIS FILE WAS MACHINE GENERATED <
+* >       DO NOT EDIT BY HAND       <
+* >      RUN TOOL TO REGENERATE     <
+* Tool: $TOOL
+* Creation date: $DATE
+*/
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+public class TransliterationRule_$SCRIPTFROM_$SCRIPTTO extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Rule",
+              $RULES
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/varsub.bat b/src/com/ibm/icu/dev/tool/translit/varsub.bat
new file mode 100755
index 0000000..4892721
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/varsub.bat
@@ -0,0 +1,74 @@
+@rem = '--*-Perl-*--
+@echo off
+if "%OS%" == "Windows_NT" goto WinNT
+perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto endofperl
+:WinNT
+perl -x -S "%0" %*
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
+if %errorlevel% == 9009 echo You do not have Perl in your PATH.
+goto endofperl
+@rem ';
+#!perl
+#line 14
+
+# Usage: perl varsub.bat [-n|-nr] <infile> <outfile>
+#
+# Substitutes variables into rules and deletes variable definition
+# statements.  Variables that expand to UnicodeSets are NOT
+# substituted.
+#
+#  -n   Afterwards, run native2ascii -encoding UTF8
+#  -nr  Afterwards, run native2ascii -encoding UTF8 -reverse
+
+$N2A = 0;
+
+$IN = shift;
+if ($IN =~ /^-n/) {
+    $N2A = 1;
+    $N2Aoption = ($IN eq '-nr') ? " -reverse " : "";
+    $IN = shift;
+}
+$OUT = shift;
+
+if (!($IN && $OUT)) {
+    die "Usage: $0 [-n|-nr] <infile> <outfile>";
+}
+
+open(IN) or die "Can't open $IN: $!";
+open(OUT, ">$OUT") or die "Can't open $OUT: $!";
+
+while (<IN>) {
+    if (/^\s*\$([a-zA-Z0-9_]+)\s*=\s*([^;\#]+)\s*;\s*(\#.*)?$/) {
+        # This looks like a variable definition
+        my ($var, $def) = ($1, $2);
+        # Don't substitute UnicodeSet vars
+        if ($def !~ /^\[/) {
+            if (exists $VAR{$var}) {
+                print STDERR "Error: Duplicate definition of $var\n";
+            } else {
+                $VAR{$var} = $def;
+            }
+            next;
+        }
+    }
+    
+    # Do variable substitutions, and output line
+    foreach my $var (keys %VAR) {
+        my $def = $VAR{$var};
+        s/\$$var\b/$def/g;
+    }
+    print OUT;
+}
+
+close(OUT);
+close(IN);
+
+if ($N2A) {
+    `native2ascii -encoding UTF8 $N2Aoption $OUT $OUT.native2ascii`;
+    unlink $OUT;
+    rename "$OUT.native2ascii", $OUT;
+}
+
+__END__
+:endofperl
diff --git a/src/com/ibm/icu/dev/tool/xmlcomparator/XMLComparator.java b/src/com/ibm/icu/dev/tool/xmlcomparator/XMLComparator.java
new file mode 100644
index 0000000..db920e7
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/xmlcomparator/XMLComparator.java
@@ -0,0 +1,1195 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2000, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*
+* $Source: /usr/cvs/icu4j/icu4j/src/com/ibm/icu/impl/ByteTrie.java,v $ 
+* $Date: 2002/03/02 02:20:01 $ 
+* $Revision: 1.5 $
+*
+******************************************************************************
+*/
+
+package com.ibm.icu.dev.tool.xmlcomparator;
+
+/**
+ * @author ram
+ *
+ * This tool compares locale data in XML format and generates HTML and XML reports
+ */
+import java.io.*;
+import java.util.*;
+import java.io.PrintWriter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.BufferedReader;
+import java.text.DecimalFormat;
+import java.util.Calendar;
+
+
+import java.util.Locale;
+
+// DOM imports
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+
+// Needed JAXP classes
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+// SAX2 imports
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.lang.UCharacter;
+
+public class XMLComparator {
+    String[] fileNames; 
+    private static final short OPT_SUN_JDK = 0x001;
+    private static final short OPT_IBM_JDK = 0x002;
+    private static final short OPT_WINDOWS = 0x004;
+    private static final short OPT_HP_UX   = 0x008;
+    private static final short OPT_SOLARIS = 0x010;
+    private static final short OPT_IBM_TOR = 0x020;
+    private static final short OPT_APPLE   = 0x040;
+    private static final short OPT_ICU     = 0x080;
+    private static final short OPT_OTHER   = 0x100;
+    private static final short OPT_SOURCE  = 0x120;
+    private static final short OPT_DEST    = 0x140;
+    private static final short OPT_OUT1    = 0x160;
+    private static final short OPT_OUT2    = 0x180;
+    private static final short OPT_UNKNOWN = 0x1000;
+    
+    private static final String POSIX= "0";/* NO inheritence of locale data */
+    private static final String ICU  = "1";/* Supports inheritence of locale data*/
+    private static final String USER_OPTIONS[][] = {
+        {"-sun_jdk", "sun_jdk",ICU}, 
+        {"-ibm_jdk", "ibm_jdk",ICU},
+        {"-windows", "windows", POSIX},
+        {"-hp_ux",   "hp_ux",POSIX }, 
+        {"-solaris", "solaris",POSIX },
+        {"-ibm_tor", "ibm_toronto",POSIX},
+        {"-apple",   "apple", POSIX},
+        {"-icu",     "icu",ICU},
+        {"-other",   "other", POSIX},
+        {"-s",null,null},
+        {"-d",null, null},
+        {"-out1",null,null},
+    };
+    
+    Hashtable optionTable = new Hashtable();
+    private String sourceFolder = ".";
+    private String destFolder = ".";
+    private boolean out1 = false;
+    private boolean out2 = false;
+    
+    public static void main(String[] args){
+        XMLComparator comparator = new XMLComparator();
+        comparator.processArgs(args);    
+        
+    }
+    
+    ArrayList doesNotExist = new ArrayList();
+    ArrayList notAvailable = new ArrayList();
+      
+    /*
+     * This application will compare different locale data xml files
+     * conforming to localeElements.dtd and produces an xml file file
+     * in the format
+     */ 
+                        
+    Document resultDocument;
+    String localeStr;    
+    Locale locale;
+    Calendar cal = Calendar.getInstance();
+                 
+    private void processArgs(String[] args){
+        short options = identifyOptions(args);
+        if ((args.length < 2) || ((options & OPT_UNKNOWN) != 0)) {
+            printUsage();
+            return;
+        }
+        boolean warning[] = new boolean[1];
+        warning[0] = false;
+        Enumeration enum = optionTable.keys();
+        try{
+            
+            resultDocument = parse(sourceFolder+File.separator+"ResultXML.xml");
+            
+	        localeStr  = goldFileName.substring(goldFileName.lastIndexOf(File.separatorChar)+1,goldFileName.indexOf('.'));
+	        locale = new Locale(localeStr.substring(0,localeStr.indexOf('_')),localeStr.substring(localeStr.indexOf('_')+1,localeStr.length()));
+            OutputStreamWriter os1 = new OutputStreamWriter(new FileOutputStream(destFolder+File.separator+locale+".xml"),encoding);
+	        OutputStreamWriter os2 = new OutputStreamWriter(new FileOutputStream(destFolder+File.separator+locale+".html"),encoding);
+	            
+            for(;enum.hasMoreElements();){
+                String key = (String)enum.nextElement();
+                String fileName = (String) optionTable.get(key);
+                compare(goldFileName,goldKey, fileName,key,out1);
+                
+            }
+           
+	
+            Iterator iter =doesNotExist.iterator();
+            while(iter.hasNext()){
+                  String key = (String)iter.next();
+                  NodeList list = resultDocument.getElementsByTagName(key);
+                  addNodeValue(list,key,"S.N.A",null);
+            }
+            notAvailable.add("solaris");
+            notAvailable.add("apple");
+            notAvailable.add("other");
+            notAvailable.add("open_office");
+            iter =notAvailable.iterator();
+            while(iter.hasNext()){
+                  String key = (String)iter.next();
+                  NodeList list = resultDocument.getElementsByTagName(key);
+                  addNodeValue(list,key,"S.N.A",null);
+            }
+
+            PrintWriter writer1 = new PrintWriter(os1);
+            PrintWriter writer2 = new PrintWriter(os2);
+            print(writer1,resultDocument);
+            if(out1){
+                printHTML_1(writer2);
+            }else{
+                printHTML(writer2);
+            }
+        }catch(Exception e){
+            e.printStackTrace();
+        }
+            
+    }
+    
+    private void printUsage() {
+        System.err.println("Usage: XMLComparator [<option>:<gold>] filename1 [option] filename2 ... \n"+
+                           " XMLComparator [-sun_jdk:gold]  filename" +
+                           " [-ibm_jdk] filename [-windows] filename" +
+                           " [-hp_ux]  filename [-solaris] filename"  +
+                           " [-ibm_tor] filename [-apple] filename"   +
+                           " [-icu] filename [-other] filename"  
+                           );
+    }
+    private String goldFileName; 
+    private String goldKey;
+
+    private short identifyOptions(String[] options) {
+        short result = 0;
+        for (int j = 0; j < options.length; j++) {
+            String option = options[j];
+            boolean isGold = false;
+            if (option.startsWith("-")) {
+                if(option.indexOf(":gold")>0){
+                    option = option.substring(0,option.indexOf(":"));
+                    isGold = true;    
+                }
+                boolean optionRecognized = false;
+                for (short i = 0; i < USER_OPTIONS.length; i++) {
+                   
+                    if (USER_OPTIONS[i][0].equals(option)) {
+                        result |= (short)(1 << i);
+                        optionRecognized = true;
+                        if(i==9){
+                            sourceFolder = options[++j];
+                        }else if(i==10){
+                            destFolder = options[++j];
+                        }else if(i==11){
+                            out1=true;
+                        }else{
+                            if(!isGold){
+                                optionTable.put(USER_OPTIONS[i][1],options[++j]);
+                            }else{
+                                goldFileName = options[++j];
+                                goldKey      = USER_OPTIONS[i][1];
+                            }
+                        }
+                        break;
+                    }
+                }
+                if (!optionRecognized) {
+                    result |= OPT_UNKNOWN;
+                }
+            }
+        }
+        return result;
+    }
+    
+    private void   printHTML(PrintWriter writer){
+        NodeList list= resultDocument.getElementsByTagName("difference_element");
+        writer.println("<html>\n"+
+                           "    <head>\n"+
+                           "        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n"+
+                           "        <title>"+locale+"</title>\n"+
+                           "    </head>\n"+
+                           "    <body>\n"+
+                           "        <p><b>"+locale+"</b></p>\n"+
+                           "        <table border=\"1\" cellspacing=\"0\">\n"+
+                           "            <tr>\n"+
+                           "                <th>ParentNode</th>\n"+
+                           "                <th>Name</th>\n"+
+                           "                <th>ID</th>\n"+
+                           "                <th>ICU 2.1</th>\n"+
+                           "                <th>IBM Toronto</th>\n"+
+                           "                <th>Windows 2000</th>\n"+
+                           "                <th>Sun JDK 1.3</th>\n"+
+                           "                <th>IBM JDK 1.3</th>\n"+
+                           "                <th>Solaris</th>\n"+
+                           "                <th>Apple</th>\n"+
+                           "                <th>HPUX 11</th>\n"+
+                           "                <th>Open Office</th>\n"+
+                           "                <th>Other</th>\n"+
+                           "            </tr>\n");
+                           
+        for(int i =0; i<list.getLength();i++){
+             Node diffElem = list.item(i);
+             writer.println("            <tr>\n");
+             NamedNodeMap attrb = diffElem.getAttributes();
+             if(attrb.item(0).getNodeValue().equals("test")) continue;
+             writer.println("                <td>" + attrb.item(0).getNodeValue()+"</td>");
+             writer.println("                <td>" + attrb.item(1).getNodeValue()+"</td>");
+             //attribute 2 is ignored
+             writer.println("                <td>" + attrb.item(3).getNodeValue()+"</td>");
+             
+             NodeList childList = diffElem.getChildNodes();
+             for(int j=0; j<childList.getLength();j++){
+                 Node current = childList.item(j);
+                 if(current!=null && current.getNodeType()==Node.ELEMENT_NODE){
+                      //System.out.println(current.getNodeName());
+                      String val = current.getFirstChild().getNodeValue();
+                      if(val==null || (val=trim(val)).equals("")) val="&nbsp;";
+                      writer.println("                <td>"+val+"</td>");
+                 }
+             }       
+
+              writer.println("            </tr>\n");
+        }   
+        writer.println( "        </table>\n"+
+                            "    </body>\n"+
+                            "</html>");
+        writer.flush();
+    }
+    private void   printHTML_1(PrintWriter writer){
+        NodeList list= resultDocument.getElementsByTagName("difference_element");
+        writer.println("<html>\n"+
+                           "    <head>\n"+
+                           "        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n"+
+                           "        <title>"+localeStr+"</title>\n"+
+                           "    </head>\n"+
+                           "    <body>\n"+
+                           "        <p><b>"+localeStr+"("+locale.getDisplayLanguage()+"_"+locale.getDisplayCountry()+")</b></p>\n"+
+                           "        <table border=\"1\" cellspacing=\"0\">\n"+
+                           "            <tr>\n"+
+                           "                <th>ParentNode</th>\n"+
+                           "                <th>Name</th>\n"+
+                           "                <th>ID</th>\n"+
+                           "                <th>ICU 2.1</th>\n"+
+                           "                <th>IBM Toronto</th>\n"+
+                           "                <th>Windows 2000</th>\n"+
+                           "                <th>Sun JDK 1.3</th>\n"+
+                           "                <th>IBM JDK 1.3</th>\n"+
+                           "                <th>Solaris</th>\n"+
+                           "                <th>Apple</th>\n"+
+                           "                <th>HPUX 11</th>\n"+
+                           "                <th>Open Office</th>\n"+
+                           "                <th>Other</th>\n"+
+                           "            </tr>\n");
+        
+        Hashtable colorHash = new Hashtable();
+        colorHash.put("icu","#D3D3D3");        
+        colorHash.put("ibm_toronto","#ADD8E6");
+        colorHash.put("windows","#98FB98");
+        colorHash.put("sun_jdk","#B0C4DE");
+        colorHash.put("ibm_jdk","#FAFAD2");
+        colorHash.put("hp_ux","#FFE4B5");
+        colorHash.put("apple","#F5F5DC");
+        colorHash.put("solaris","#E0FFFF");
+        colorHash.put("other","#E0FFFF");
+        boolean hasData =false;          
+        for(int i =0; i<list.getLength();i++){
+             Node diffElem = list.item(i);
+             NamedNodeMap attrb = diffElem.getAttributes();
+            
+             if(attrb.item(0).getNodeValue().equals("test") || attrb.item(0).getNodeValue().equals("identity")) continue;
+             
+             writer.println("            <tr>\n");
+             writer.println("                <td>" + attrb.item(0).getNodeValue()+"</td>");
+             writer.println("                <td>" + attrb.item(1).getNodeValue()+"</td>");
+             //attribute 2 is ignored
+             writer.println("                <td>" + attrb.item(3).getNodeValue()+"</td>");
+             
+             NodeList childList = diffElem.getChildNodes();
+             for(int j=0; j<childList.getLength();j++){
+                 Node current = childList.item(j);
+                 if(current!=null && current.getNodeType()==Node.ELEMENT_NODE){
+                      
+                      //System.out.println(current.getNodeName());
+                      String val = current.getFirstChild().getNodeValue();
+                      if(val==null || (val=trim(val)).equals("")) val="D.N.A";
+                      String color="#FFFFFF";
+                      if(!val.equals("S.N.A") && !val.equals("D.N.A")){
+	                      for(int k=0; k<childList.getLength();k++){
+	                         Node n = childList.item(k);
+	                         if(n!=null && n.getNodeType()==Node.ELEMENT_NODE){
+                                String nVal =n.getFirstChild().getNodeValue();
+                                //-ibm_jdk c:\NLTC\IBMJDK\XML\cs_CZ.xml -sun_jdk c:\NLTC\Java\xml\cs_CZ.xml -windows c:\NLTC\windows\xml\cs_CZ.xml -hp_ux c:\NLTC\hp\xml\cs_CZ.xml
+                                
+                                if( (!nVal.equals("S.N.A") && !nVal.equals("D.N.A"))&&
+                                    (
+                                     val.equals(nVal) ||
+                                     ((attrb.item(1).getNodeValue().equals("pattern"))&&
+                                     comparePatterns(val,nVal))||
+                                     ((attrb.item(0).getNodeValue().equals("patterns"))&&
+                                     comparePatterns(val,nVal))
+                                    )
+                                  ){ 
+		                            String str = (String)colorHash.get(n.getNodeName());
+		                            if(str!=null){
+		                                color=str;
+		                            }
+                                   
+		                            break;
+                                   
+                                }
+	                         }
+	                      }
+                      }
+                      NamedNodeMap attList = current.getAttributes();
+                      if(attList.getNamedItem("case_diff").getNodeValue().equals("false")){
+                        writer.println("                <td bgcolor="+color+">"+val+"</td>");
+                      }else{
+                        writer.println("                <td bgcolor="+color+">"+
+                                       val+
+                                       "<font color=#A52A2A> (case difference only)</font>"+
+                                       "</td>");
+                      }
+                      hasData=true;
+                 }
+             }       
+
+              writer.println("            </tr>\n");
+        }
+  
+        writer.println( "        </table>\n");
+        
+        if(!hasData){
+            writer.println( "       <p><font size=16 color=#FF0000> Data exists only in ICU </font></p>\n");
+        } 
+        writer.println("        <p>Created on: " + cal.getTime() +"</p>\n"+
+                            "    </body>\n"+
+                            "</html>");
+        writer.flush();
+    }
+
+
+    /**
+     * Compare two files by parsing into DOMs and comparing trees.
+     * @param goldFileName expected file
+     * @param testFileName actual file
+     * @param reporter PrintWriter to dump status info to
+     * @param array of warning flags (for whitespace diffs, I think?)
+     * NEEDSDOC @param warning
+     * @param attributes to attempt to set onto parsers
+     * @return true if they match, false otherwise
+     */
+    private Document goldDoc=null;
+    
+    public boolean compare(String goldFileName, String goldKey, 
+                           String testFileName, String testKey, boolean mergeData)
+    {
+        
+        String temp= goldFileName;
+        // parse the gold doc only if it is null
+        if(goldDoc==null){
+            goldDoc = parse(goldFileName);
+            
+            if((goldKey.indexOf("icu")>=0 ) || (goldKey.indexOf("jdk")>=0)){
+                // OK we have a posix style locale data
+                // merge all data in inheritence tree into goldDoc
+                int index = -1;
+                while((index = temp.indexOf("_")) >0 && index > goldFileName.lastIndexOf("\\")){
+                    Document parentDoc = parse((temp = temp.substring(0,index)+".xml"));
+                    if(parentDoc!=null){
+                       mergeElements(goldDoc.getDocumentElement(),parentDoc.getDocumentElement());
+                    }
+                }
+            }
+        }
+
+        // parse the test doc only if gold doc was parsed OK
+        Document testDoc = (null != goldDoc)
+                           ? parse(testFileName) : null;
+                           
+        if(((testKey.indexOf("icu")>=0) || (testKey.indexOf("jdk")>=0)) && testDoc!=null){
+            // OK we have a posix style locale data in goldDoc
+            // merge all data in inheritence tree into testDoc
+            temp=testFileName;
+            int index = -1;
+            while((index = temp.indexOf("_")) >0 && index > testFileName.lastIndexOf("\\")){
+                    Document parentDoc = parse((temp = temp.substring(0,index)+".xml"));
+                    if(parentDoc!=null){
+                       mergeElements(testDoc.getDocumentElement(),parentDoc.getDocumentElement());
+                    }
+             }
+        
+        }
+        
+        if (null == goldDoc)
+        {
+            doesNotExist.add(goldKey);
+            return false;
+        }
+        else if (null == testDoc)
+        {
+            doesNotExist.add(testKey);
+            return false;
+        }
+        if(mergeData){
+            return extractMergeData(goldDoc,goldKey,testDoc,testKey);
+        }else{   
+            return compareElementsAndData(goldDoc,goldKey,testDoc,testKey);
+        }
+    }
+    boolean canonical  = false;
+    
+    String  encoding   = "UTF-8"; // default encoding
+    
+    /** Returns a sorted list of attributes. */
+    protected Attr[] sortAttributes(NamedNodeMap attrs) {
+
+        int len = (attrs != null) ? attrs.getLength() : 0;
+        Attr array[] = new Attr[len];
+        for ( int i = 0; i < len; i++ ) {
+            array[i] = (Attr)attrs.item(i);
+        }
+        for ( int i = 0; i < len - 1; i++ ) {
+            String name  = array[i].getNodeName();
+            int    index = i;
+            for ( int j = i + 1; j < len; j++ ) {
+                String curName = array[j].getNodeName();
+                if ( curName.compareTo(name) < 0 ) {
+                    name  = curName;
+                    index = j;
+                }
+            }
+            if ( index != i ) {
+                Attr temp    = array[i];
+                array[i]     = array[index];
+                array[index] = temp;
+            }
+        }
+
+        return(array);
+
+    } // sortAttributes(NamedNodeMap):Attr[]
+    
+        /** Normalizes the given string. */
+    protected String normalize(String s) {
+        StringBuffer str = new StringBuffer();
+
+        int len = (s != null) ? s.length() : 0;
+        for ( int i = 0; i < len; i++ ) {
+            char ch = s.charAt(i);
+            switch ( ch ) {
+            case '<': {
+                    str.append("&lt;");
+                    break;
+                }
+            case '>': {
+                    str.append("&gt;");
+                    break;
+                }
+            case '&': {
+                    str.append("&amp;");
+                    break;
+                }
+            case '"': {
+                    str.append("&quot;");
+                    break;
+                }
+            case '\'': {
+                    str.append("&apos;");
+                    break;
+                }
+            case '\r':
+            case '\n': {
+                    if ( canonical ) {
+                        str.append("&#");
+                        str.append(Integer.toString(ch));
+                        str.append(';');
+                        break;
+                    }
+                    // else, default append char
+                }
+            default: {
+                    str.append(ch);
+                }
+            }
+        }
+
+        return(str.toString());
+
+    } // normalize(String):String
+
+
+    /** Prints the specified node, recursively. */
+    public void print(PrintWriter out, Node node) {
+
+        // is there anything to do?
+        if ( node == null ) {
+            return;
+        }
+
+        int type = node.getNodeType();
+        
+        switch ( type ) {
+        // print document
+        case Node.DOCUMENT_NODE: {
+               if ( !canonical ) {
+                    out.println("<?xml version=\"1.0\" encoding=\""+
+                                encoding + "\"?>");
+                }
+                //print(((Document)node).getDocumentElement());
+
+                NodeList children = node.getChildNodes();
+                for ( int iChild = 0; iChild < children.getLength(); iChild++ ) {
+                    print(out,children.item(iChild));
+                }
+                out.flush();
+                break;
+            }
+
+            // print element with attributes
+        case Node.ELEMENT_NODE: {
+                out.print('<');
+                out.print(node.getNodeName());
+                Attr attrs[] = sortAttributes(node.getAttributes());
+                for ( int i = 0; i < attrs.length; i++ ) {
+                    Attr attr = attrs[i];
+                    out.print(' ');
+                    out.print(attr.getNodeName());
+                    out.print("=\"");
+                    out.print(normalize(attr.getNodeValue()));
+                    out.print('"');
+                }
+                out.print('>');
+                NodeList children = node.getChildNodes();
+                if ( children != null ) {
+                    int len = children.getLength();
+                    for ( int i = 0; i < len; i++ ) {
+                        print(out,children.item(i));
+                    }
+                }
+                break;
+            }
+
+            // handle entity reference nodes
+        case Node.ENTITY_REFERENCE_NODE: {
+                if ( canonical ) {
+                    NodeList children = node.getChildNodes();
+                    if ( children != null ) {
+                        int len = children.getLength();
+                        for ( int i = 0; i < len; i++ ) {
+                            print(out,children.item(i));
+                        }
+                    }
+                } else {
+                    out.print('&');
+                    out.print(node.getNodeName());
+                    out.print(';');
+                }
+                break;
+            }
+
+            // print cdata sections
+        case Node.CDATA_SECTION_NODE: {
+                if ( canonical ) {
+                    out.print(normalize(node.getNodeValue()));
+                } else {
+                    out.print("<![CDATA[");
+                    out.print(node.getNodeValue());
+                    out.print("]]>");
+                }
+                break;
+            }
+
+            // print text
+        case Node.TEXT_NODE: {
+                out.print(normalize(node.getNodeValue()));
+                break;
+            }
+
+            // print processing instruction
+        case Node.PROCESSING_INSTRUCTION_NODE: {
+                out.print("<?");
+                out.print(node.getNodeName());
+                String data = node.getNodeValue();
+                if ( data != null && data.length() > 0 ) {
+                    out.print(' ');
+                    out.print(data);
+                }
+                out.println("?>");
+                break;
+            }
+        }
+
+        if ( type == Node.ELEMENT_NODE ) {
+            out.print("</");
+            out.print(node.getNodeName());
+            out.print('>');
+        }
+
+        out.flush();
+    } // print(Node)
+    
+    // Reporter format:
+    // REASON_CONSTANT;gold val;test val;reason description
+    private void addNodeValue(NodeList list,String nodeName,String nodeValue,String caseDiff){
+        for(int i=0;i<list.getLength();i++){
+            Node node = list.item(i);
+            if(nodeName.equals(node.getNodeName())){   
+                node.getFirstChild().setNodeValue(nodeValue);
+                if(caseDiff!=null){
+	                NamedNodeMap attr = node.getAttributes();
+	                Node case_diff = attr.getNamedItem("case_diff");
+	                case_diff.setNodeValue(caseDiff);
+                }
+            }
+        }
+    }
+    private void addElement(String parentNode, String childNode, String attr,
+                               String nodeName1,  String value1,
+                               String nodeName2, String value2){
+            String id ;
+            String caseDiff=null;
+            if(Normalizer.compare(value1,value2,0)!=0){
+                //System.out.println("Value1: "+value1+ "  Value2: "+ value2);
+	            if(Normalizer.compare(value1,value2,Normalizer.COMPARE_IGNORE_CASE)==0){
+	                caseDiff="true";
+	            }
+            }
+            if(attr!=null){
+                id = parentNode+"_"+childNode+"_"+attr;
+            }else{
+                id = parentNode+"_"+childNode;
+            }
+                
+            Element element = resultDocument.getElementById(id);
+            NodeList nodes=null;
+            NamedNodeMap attribMap=null;
+            Node rootNode =resultDocument.getElementsByTagName("difference_xml").item(0);
+            if(element!=null){
+                nodes = element.getChildNodes();
+                attribMap=element.getAttributes();              
+            }else{
+               NodeList nodeList=resultDocument.getElementsByTagName("difference_element");
+               // the first node is always the empty one in the result document
+               // so get that node and clone it
+               Node node = nodeList.item(0).cloneNode(true);
+               attribMap=node.getAttributes();
+               nodes= node.getChildNodes();
+            }
+            addNodeValue(nodes,nodeName1,value1,(nodeName1.equals(goldKey))?null:caseDiff);
+            addNodeValue(nodes,nodeName2,value2,(nodeName2.equals(goldKey))?null:caseDiff);
+            Node parent_node = attribMap.getNamedItem("parent_node");
+            Node node_name   = attribMap.getNamedItem("node_name");
+            Node id_attrib   = attribMap.getNamedItem("id");
+            Node index       = attribMap.getNamedItem("index");
+            parent_node.setNodeValue(parentNode);
+            node_name.setNodeValue(childNode);
+            id_attrib.setNodeValue(id);
+            index.setNodeValue((attr==null) ? "&nbsp;" : attr);
+            rootNode.appendChild(nodes.item(0).getParentNode());       
+    }
+    private void addDifference(String parentNode, String childNode, String attr,
+                               String nodeName1,  String value1,
+                               String nodeName2, String value2){
+            String id ;
+            // Decompose the values and find out if they are equal
+            if(Normalizer.compare(value1,value2,0)==0){
+                // the values are equal just return
+                return;
+            }
+            String caseDiff= null;
+            if(Normalizer.compare(value1,value2,Normalizer.COMPARE_IGNORE_CASE)==0){
+                caseDiff="true";
+            }
+            if(attr!=null){
+                id = parentNode+"_"+childNode+"_"+attr;
+            }else{
+                id = parentNode+"_"+childNode;
+            }
+                
+            Element element = resultDocument.getElementById(id);
+            NodeList nodes=null;
+            NamedNodeMap attribMap=null;
+            Node rootNode =resultDocument.getElementsByTagName("difference_xml").item(0);
+            if(element!=null){
+                nodes = element.getChildNodes();
+                attribMap=element.getAttributes();              
+            }else{
+               NodeList nodeList=resultDocument.getElementsByTagName("difference_element");
+               // the first node is always the empty one in the result document
+               // so get that node and clone it
+               Node node = nodeList.item(0).cloneNode(true);
+               attribMap=node.getAttributes();
+               nodes= node.getChildNodes();
+            }
+            addNodeValue(nodes,nodeName1,value1,caseDiff);
+            addNodeValue(nodes,nodeName2,value2,caseDiff);
+            Node parent_node = attribMap.getNamedItem("parent_node");
+            Node node_name   = attribMap.getNamedItem("node_name");
+            Node id_attrib   = attribMap.getNamedItem("id");
+            Node index       = attribMap.getNamedItem("index");
+            parent_node.setNodeValue(parentNode);
+            node_name.setNodeValue(childNode);
+            id_attrib.setNodeValue(id);
+            index.setNodeValue((attr==null) ? "&nbsp;" : attr);
+            rootNode.appendChild(nodes.item(0).getParentNode());
+            
+            
+            
+    }
+    
+    // ---------------------------------------------------------------------------
+    //
+    //   Merge element nodes.  dest and source are Element nodes of the same type.
+    //                         Move any children Elements that exist in the source but not in the
+    //                         destination into the destination
+    //
+    // ---------------------------------------------------------------------------
+    private void  mergeElements(Node dest, Node source) {
+        Node   childOfSource;
+        Node   childOfDest;
+        
+        Document destDoc = dest.getOwnerDocument();
+        Node spaces = destDoc.createTextNode("\n       ");
+        
+        for (childOfSource = source.getFirstChild(); childOfSource != null; childOfSource = childOfSource.getNextSibling()) {
+            if (childOfSource.getNodeType() != Node.ELEMENT_NODE) {
+                continue;
+            }
+            if(childOfSource.getNodeName().equals("collation") 
+                || childOfSource.getNodeName().equals("timeZoneNames")
+                ){
+                continue;
+            }
+            boolean didMerge = false;
+            for (childOfDest = dest.getFirstChild(); childOfDest != null; childOfDest = childOfDest.getNextSibling()) {
+                if (childOfDest.getNodeType() == Node.ELEMENT_NODE  &&
+                       childOfDest.getNodeName().equals(childOfSource.getNodeName())) {
+                    // The destination document already has an element of this type at this level.
+                    //   Recurse to pick up any extra children that the source node may have.
+                    mergeElements(childOfDest, childOfSource);
+                    didMerge = true;
+                    break;
+                }
+            }
+    
+            if (didMerge == false) {
+                // destination document had no corresponding node to the current childOfSource.  Add it.
+                Node importedNode = destDoc.importNode(childOfSource, true);
+                dest.appendChild(spaces);
+                dest.appendChild(importedNode);
+            }
+        }
+        //dest.appendChild(spaces);
+        
+    }
+    
+    double args1  = 10000000000.00;
+    double args2  = -10000000000.00;
+    
+    DecimalFormat fmt = new DecimalFormat(); 
+    
+    private boolean comparePatterns(String pat1,String pat2){
+        fmt.applyPattern(pat1);
+        String s1 = fmt.format(args1);
+        String s3 = fmt.format(args2);
+        fmt.applyPattern(pat2);
+        String s2 = fmt.format(args1);
+        String s4 = fmt.format(args2);
+        if(s1.equals(s2) && s3.equals(s4)){
+            return true;
+        }
+        return false;
+    }
+    private boolean compareElementsAndData(Node goldNode,String goldKey,
+                                           Document testDoc,String testKey){
+    
+        Node childOfSource;
+
+        for(childOfSource = goldNode.getFirstChild(); childOfSource != null; childOfSource = childOfSource.getNextSibling()) {
+            if (childOfSource.getNodeType() != Node.ELEMENT_NODE) {
+                continue;
+            }
+            if(childOfSource.getNodeName().equals("collation") 
+                || childOfSource.getNodeName().equals("timeZoneNames")
+                || childOfSource.getNodeName().equals("versioning")){
+                continue;
+            }
+            NamedNodeMap attr = childOfSource.getAttributes();       
+            NodeList destList = testDoc.getElementsByTagName(childOfSource.getNodeName());
+            Node sourceID = attr.getNamedItem("id");
+           
+    
+            for(int i =0 ; i<destList.getLength(); i++){
+                Node destNode =destList.item(i);
+                NamedNodeMap destAttr = destNode.getAttributes();
+                /* get the source and destination nodes with attribute id */
+                Node destID = destAttr.getNamedItem("id");
+                if(destID!=null && sourceID!=null){
+                    String sourceVal =sourceID.getNodeValue();
+                    String destVal = destID.getNodeValue();
+                    
+                    if(sourceVal.equals(destVal)){
+                        //System.out.println(sourceVal);
+                        //System.out.println(destVal);
+                        if(destNode.hasChildNodes() && childOfSource.hasChildNodes()){
+                            if(destNode.getParentNode().getNodeName().equals(childOfSource.getParentNode().getNodeName())){
+                                String destNodeVal = trim(destNode.getFirstChild().getNodeValue());
+                                String sourceNodeVal = trim(childOfSource.getFirstChild().getNodeValue());
+
+                                //System.out.println(childOfSource.getFirstChild().getNodeName());
+                                //System.out.println(destNode.getFirstChild().getNodeName());
+                                if(!destNodeVal.equals(sourceNodeVal)){
+                                    boolean write = true;
+                                    String parentNodeName = trim(childOfSource.getParentNode().getNodeName());
+                                    String childNodeName  = trim(childOfSource.getNodeName());
+                                    if(childNodeName.equals("pattern")){
+                                        if(comparePatterns(sourceNodeVal,destNodeVal)){
+                                            write = false;
+                                        }
+                                    }
+                                    if(write){
+                                        addDifference(parentNodeName,
+                                                      childNodeName,
+                                                      destVal,
+                                                      testKey,
+                                                      destNodeVal,
+                                                      goldKey,
+                                                      sourceNodeVal);
+                                    }
+    
+                                }
+                            }
+                        }
+                    }
+                }else{
+                    if(destNode.getNodeName().equals(childOfSource.getNodeName())&&
+                        destNode.getParentNode().getNodeName().equals(childOfSource.getParentNode().getNodeName())
+                       ){
+                        if(destNode.hasChildNodes() && childOfSource.hasChildNodes()){
+    
+                            String destNodeVal = trim(destNode.getFirstChild().getNodeValue());
+                            String sourceNodeVal = trim(childOfSource.getFirstChild().getNodeValue());
+    
+                            String attID = null;
+                            if(!destNodeVal.equals(sourceNodeVal)){
+                                boolean write = true;
+                                String parentNodeName = childOfSource.getParentNode().getNodeName();
+                                String childNodeName  = childOfSource.getNodeName();
+                                if(childNodeName.equals("pattern")){
+                                        if(comparePatterns(sourceNodeVal,destNodeVal)){
+                                            write = false;
+                                        }
+                                }
+                                if(write){
+                                    addDifference(parentNodeName,
+                                                  childNodeName,
+                                                  attID,
+                                                  testKey,
+                                                  destNodeVal,
+                                                  goldKey,
+                                                  sourceNodeVal);
+                                }
+                            }
+                        }
+                    }
+                
+                }
+            }
+      
+            compareElementsAndData(childOfSource,goldKey,testDoc,testKey);
+        }
+       return true;
+    }    
+    private String trim(String source){
+        char[] src = source.toCharArray();
+        char[] dest = new char[src.length];
+
+        int start=0;
+        while(start<(src.length) && (UCharacter.isWhitespace(src[start])|| src[start]==0xA0)){start++;}
+        int stop=src.length-1;
+        while(stop>0 && (UCharacter.isWhitespace(src[stop])||(src[stop]==0xA0))){stop--;}
+        if(stop!=-1 && start!=src.length){
+	        System.arraycopy(src,start,dest,0,(stop-start)+1);
+	        return new String(dest,0,(stop-start)+1);
+        }else{
+            return new String();
+        }
+      
+    }
+    private boolean extractMergeData(Node goldNode,String goldKey,
+                                           Document testDoc,String testKey){
+    
+        Node childOfSource;
+
+        for(childOfSource = goldNode.getFirstChild(); childOfSource != null; childOfSource = childOfSource.getNextSibling()) {
+            if (childOfSource.getNodeType() != Node.ELEMENT_NODE) {
+                continue;
+            }
+            if(childOfSource.getNodeName().equals("collation") 
+                || childOfSource.getNodeName().equals("timeZoneNames")
+                || childOfSource.getNodeName().equals("versioning")){
+                continue;
+            }
+            NamedNodeMap attr = childOfSource.getAttributes();       
+            NodeList destList = testDoc.getElementsByTagName(childOfSource.getNodeName());
+            Node sourceID = attr.getNamedItem("id");
+    
+            for(int i =0 ; i<destList.getLength(); i++){
+                Node destNode =destList.item(i);
+                NamedNodeMap destAttr = destNode.getAttributes();
+                /* get the source and destination nodes with attribute id */
+                Node destID = destAttr.getNamedItem("id");
+                if(destID!=null && sourceID!=null){
+                    String sourceIDVal =sourceID.getNodeValue();
+                    String destIDVal = destID.getNodeValue();
+                    
+                    if(sourceIDVal.equals(destIDVal)){
+                        //System.out.println(sourceVal);
+                        //System.out.println(destVal);
+                        if(destNode.hasChildNodes() && childOfSource.hasChildNodes()){
+                            if(destNode.getParentNode().getNodeName().equals(childOfSource.getParentNode().getNodeName())){
+                                String destNodeVal = trim(destNode.getFirstChild().getNodeValue());
+                                String sourceNodeVal = trim(childOfSource.getFirstChild().getNodeValue());
+                                String parentNodeName = trim(childOfSource.getParentNode().getNodeName());
+                                String childNodeName  = trim(childOfSource.getNodeName());
+                                if(sourceNodeVal.length()!=0){
+                                    addElement(parentNodeName,
+                                                      childNodeName,
+                                                      destIDVal,
+                                                      testKey,
+                                                      destNodeVal,
+                                                      goldKey,
+                                                      sourceNodeVal);
+                                }
+                                //System.out.println(childOfSource.getFirstChild().getNodeName());
+                                //System.out.println(destNode.getFirstChild().getNodeName());
+                            }
+                        }
+                    }
+                }else{
+                    if(destNode.getNodeName().equals(childOfSource.getNodeName())&&
+                        destNode.getParentNode().getNodeName().equals(childOfSource.getParentNode().getNodeName())
+                       ){
+                        if(destNode.hasChildNodes() && childOfSource.hasChildNodes()){
+    
+                            String destNodeVal = trim(destNode.getFirstChild().getNodeValue());
+                            String sourceNodeVal = trim(childOfSource.getFirstChild().getNodeValue());
+    
+                            String parentNodeName = trim(childOfSource.getParentNode().getNodeName());
+                            String childNodeName  = trim(childOfSource.getNodeName());
+                            if(sourceNodeVal.length()!=0){
+                                addElement(parentNodeName,
+                                                  childNodeName,
+                                                  null,
+                                                  testKey,
+                                                  destNodeVal,
+                                                  goldKey,
+                                                  sourceNodeVal);
+                            }
+                        }
+                    }
+                
+                }
+            }
+      
+            extractMergeData(childOfSource,goldKey,testDoc,testKey);
+        }
+       return true;
+    } 
+
+    /**
+     * Utility method to translate a String filename to URL.  
+     *
+     * Note: This method is not necessarily proven to get the 
+     * correct URL for every possible kind of filename; it should 
+     * be improved.  It handles the most common cases that we've 
+     * encountered when running Conformance tests on Xalan.
+     * Also note, this method does not handle other non-file:
+     * flavors of URLs at all.
+     *
+     * If the name is null, return null.
+     * If the name starts with a common URI scheme (namely the ones 
+     * found in the examples of RFC2396), then simply return the 
+     * name as-is (the assumption is that it's already a URL)
+     * Otherwise we attempt (cheaply) to convert to a file:/// URL.
+     * 
+     * @param String local path\filename of a file
+     * @return a file:/// URL, the same string if it appears to 
+     * already be a URL, or null if error
+     */
+    public static String filenameToURL(String filename)
+    {
+        // null begets null - something like the commutative property
+        if (null == filename)
+            return null;
+
+        // Don't translate a string that already looks like a URL
+        if (filename.startsWith("file:")
+            || filename.startsWith("http:")
+            || filename.startsWith("ftp:")
+            || filename.startsWith("gopher:")
+            || filename.startsWith("mailto:")
+            || filename.startsWith("news:")
+            || filename.startsWith("telnet:")
+           )
+            return filename;
+
+        File f = new File(filename);
+        String tmp = null;
+        try
+        {
+            // This normally gives a better path
+            tmp = f.getCanonicalPath();
+        }
+        catch (IOException ioe)
+        {
+            // But this can be used as a backup, for cases 
+            //  where the file does not exist, etc.
+            tmp = f.getAbsolutePath();
+        }
+
+        // URLs must explicitly use only forward slashes
+        if (File.separatorChar == '\\') {
+            tmp = tmp.replace('\\', '/');
+        }
+        // Note the presumption that it's a file reference
+        // Ensure we have the correct number of slashes at the 
+        //  start: we always want 3 /// if it's absolute
+        //  (which we should have forced above)
+        if (tmp.startsWith("/"))
+            return "file://" + tmp;
+        else
+            return "file:///" + tmp;
+
+    }
+
+
+    /**
+     * Simple worker method to parse filename to a Document.  
+     *
+     * Attempts XML parse, then HTML parse (when parser available), 
+     * then just parses as text and sticks into a text node.
+     *
+     * @param filename to parse as a local path
+     * @param attributes name=value pairs to set on the 
+     * DocumentBuilderFactory that we use to parse
+     *
+     * @return Document object with contents of the file; 
+     * otherwise throws an unchecked RuntimeException if there 
+     * is any fatal problem
+     */
+    Document parse(String filename)
+    {
+        // Force filerefs to be URI's if needed: note this is independent of any other files
+        String docURI = filenameToURL(filename);
+        return parse(new InputSource(docURI),filename);
+    }
+    
+    Document parse(InputSource docSrc, String filename){
+        
+        DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+        // Always set namespaces on
+        dfactory.setNamespaceAware(true);
+        // Set other attributes here as needed
+        //applyAttributes(dfactory, attributes);
+        
+        // Local class: cheap non-printing ErrorHandler
+        // This is used to suppress validation warnings
+        ErrorHandler nullHandler = new ErrorHandler() {
+            public void warning(SAXParseException e) throws SAXException {}
+            public void error(SAXParseException e) throws SAXException {}
+            public void fatalError(SAXParseException e) throws SAXException 
+            {
+                throw e;
+            }
+        };
+
+        Document doc = null;
+        try
+        {
+            // First, attempt to parse as XML (preferred)...
+            DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
+            docBuilder.setErrorHandler(nullHandler);
+            doc = docBuilder.parse(docSrc);
+        }
+        catch (Throwable se)
+        {
+            // ... if we couldn't parse as XML, attempt parse as HTML...
+            System.out.println("ERROR :" + se.toString());
+            try
+            {
+                // @todo need to find an HTML to DOM parser we can use!!!
+                // doc = someHTMLParser.parse(new InputSource(filename));
+                throw new RuntimeException("XMLComparator no HTML parser!");
+            }
+            catch (Exception e)
+            {
+                if(filename!=null)
+                {
+                    // ... if we can't parse as HTML, then just parse the text
+                    try
+                    {
+    
+                        // Parse as text, line by line
+                        //   Since we already know it should be text, this should 
+                        //   work better than parsing by bytes.
+                        FileReader fr = new FileReader(filename);
+                        BufferedReader br = new BufferedReader(fr);
+                        StringBuffer buffer = new StringBuffer();
+                        for (;;)
+                        {
+                            String tmp = br.readLine();
+    
+                            if (tmp == null)
+                            {
+                                break;
+                            }
+    
+                            buffer.append(tmp);
+                            buffer.append("\n");  // Put in the newlines as well
+                        }
+    
+                        DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
+                        doc = docBuilder.newDocument();
+                        Element outElem = doc.createElement("out");
+                        Text textNode = doc.createTextNode(buffer.toString());
+    
+                        // Note: will this always be a valid node?  If we're parsing 
+                        //    in as text, will there ever be cases where the diff that's 
+                        //    done later on will fail becuase some really garbage-like 
+                        //    text has been put into a node?
+                        outElem.appendChild(textNode);
+                        doc.appendChild(outElem);
+                    }
+                    catch (Throwable throwable)
+                    {
+
+                        //throwable.printStackTrace();
+                    }
+                }
+            }
+        }
+        return doc;
+    }  // end of parse()
+}
diff --git a/src/com/ibm/icu/impl/BOCU.java b/src/com/ibm/icu/impl/BOCU.java
new file mode 100644
index 0000000..6729cb6
--- /dev/null
+++ b/src/com/ibm/icu/impl/BOCU.java
@@ -0,0 +1,382 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/BOCU.java,v $ 
+* $Date: 2002/07/12 21:59:21 $ 
+* $Revision: 1.1 $
+*
+*******************************************************************************
+*/
+package com.ibm.icu.impl;
+
+import com.ibm.icu.impl.UnicodeCharacterIterator;
+
+/**
+ * <p>Binary Ordered Compression for Unicode</p>
+ * 
+ * <p>Users are strongly encouraged to read the ICU paper on 
+ * <a href=http://oss.software.ibm.com/docs/papers/binary_ordered_compression_for_unicode.html>
+ * BOCU</a> before attempting to use this class.</p>
+ * 
+ * <p>BOCU is used to compress unicode text into a stream of unsigned
+ * bytes.  For many kinds of text the compression compares favorably
+ * to UTF-8, and for some kinds of text (such as CJK) it does better.
+ * The resulting bytes will compare in the same order as the original
+ * code points.  The byte stream does not contain the values 0, 1, or
+ * 2.</p>
+ * 
+ * <p>One example of a use of BOCU is in {@link 
+ * Collator#getCollationKey(String)} for a RuleBasedCollator object with 
+ * collation strength IDENTICAL. The result CollationKey will consist of the 
+ * collation order of the source string followed by the BOCU result of the 
+ * source string. 
+ * </p> 
+ *
+ * <p>Unlike a UTF encoding, BOCU-compressed text is not suitable for
+ * random access.</p>
+ * 
+ * <p>Method: Slope Detection<br> Remember the previous code point
+ * (initial 0).  For each code point in the string, encode the
+ * difference with the previous one.  Similar to a UTF, the length of
+ * the byte sequence is encoded in the lead bytes.  Unlike a UTF, the
+ * trail byte values may overlap with lead/single byte values.  The
+ * signedness of the difference must be encoded as the most
+ * significant part.</p>
+ *
+ * <p>We encode differences with few bytes if their absolute values
+ * are small.  For correct ordering, we must treat the entire value
+ * range -10ffff..+10ffff in ascending order, which forbids encoding
+ * the sign and the absolute value separately. Instead, we split the
+ * lead byte range in the middle and encode non-negative values going
+ * up and negative values going down.</p>
+ *
+ * <p>For very small absolute values, the difference is added to a
+ * middle byte value for single-byte encoded differences.  For
+ * somewhat larger absolute values, the difference is divided by the
+ * number of byte values available, the modulo is used for one trail
+ * byte, and the remainder is added to a lead byte avoiding the
+ * single-byte range.  For large absolute values, the difference is
+ * similarly encoded in three bytes. (Syn Wee, I need examples
+ * here.)</p>
+ *
+ * <p>BOCU does not use byte values 0, 1, or 2, but uses all other
+ * byte values for lead and single bytes, so that the middle range of
+ * single bytes is as large as possible.</p>
+ *
+ * <p>Note that the lead byte ranges overlap some, but that the
+ * sequences as a whole are well ordered. I.e., even if the lead byte
+ * is the same for sequences of different lengths, the trail bytes
+ * establish correct order.  It would be possible to encode slightly
+ * larger ranges for each length (>1) by subtracting the lower bound
+ * of the range. However, that would also slow down the calculation.
+ * (Syn Wee, need an example).</p>
+ *
+ * <p>For the actual string encoding, an optimization moves the
+ * previous code point value to the middle of its Unicode script block
+ * to minimize the differences in same-script text runs.  (Syn Wee,
+ * need an example.)</p>
+ *
+ * @author Syn Wee Quek
+ * @since release 2.2, May 3rd 2002
+ * @draft 2.2 */
+public class BOCU 
+{      
+    // public constructors --------------------------------------------------
+    
+    // public methods -------------------------------------------------------
+        
+    /**
+     * <p>Encode the code points of a string as a sequence of bytes,
+     * preserving lexical order.</p>
+     * <p>The minimum size of buffer required for the compression can be 
+     * preflighted by getCompressionLength(String).</p>
+     * @param source text source
+     * @param buffer output buffer
+     * @param offset to start writing to
+     * @return end offset where the writing stopped
+     * @see #getCompressionLength(String)
+     * @exception ArrayIndexOutOfBoundsException thrown if size of buffer is 
+     *            too small for the output.
+     */
+    public static int compress(String source, byte buffer[], int offset) 
+    {
+        int prev = 0;
+        UnicodeCharacterIterator iterator = new UnicodeCharacterIterator(source);
+        int codepoint = iterator.nextCodePoint();
+        while (codepoint != UnicodeCharacterIterator.DONE_CODEPOINT) {
+            if (prev < 0x4e00 || prev >= 0xa000) {
+                prev = (prev & ~0x7f) - SLOPE_REACH_NEG_1_;
+            } 
+            else {
+                // Unihan U+4e00..U+9fa5:
+                // double-bytes down from the upper end
+                prev = 0x9fff - SLOPE_REACH_POS_2_;
+            }
+        
+            offset = writeDiff(codepoint - prev, buffer, offset);
+            prev = codepoint;
+            codepoint = iterator.nextCodePoint();
+        }
+        return offset;
+    }
+        
+    /** 
+     * Return the number of  bytes that compress() would write.
+     * @param source text source string
+     * @return the length of the BOCU result 
+     * @see #compress(String, byte[], int)
+     */
+    public static int getCompressionLength(String source) 
+    {
+        int prev = 0;
+        int result = 0;
+        UnicodeCharacterIterator iterator = new UnicodeCharacterIterator(source);
+        int codepoint = iterator.nextCodePoint();
+        while (codepoint != UnicodeCharacterIterator.DONE_CODEPOINT) {
+            if (prev < 0x4e00 || prev >= 0xa000) {
+                prev = (prev & ~0x7f) - SLOPE_REACH_NEG_1_;
+            } 
+            else {
+                // Unihan U+4e00..U+9fa5:
+                // double-bytes down from the upper end
+                prev = 0x9fff - SLOPE_REACH_POS_2_;
+            }
+        
+            codepoint = iterator.nextCodePoint();
+            result += lengthOfDiff(codepoint - prev);
+            prev = codepoint;
+        }
+        return result;
+    }
+
+    // public setter methods -------------------------------------------------
+        
+    // public getter methods ------------------------------------------------
+            
+    // public other methods -------------------------------------------------
+    
+    // protected constructor ------------------------------------------------
+      
+    // protected data members ------------------------------------------------
+    
+    // protected methods -----------------------------------------------------
+ 
+    // private data members --------------------------------------------------
+    
+    /** 
+     * Do not use byte values 0, 1, 2 because they are separators in sort keys.
+     */
+    private static final int SLOPE_MIN_ = 3;
+    private static final int SLOPE_MAX_ = 0xff;
+    private static final int SLOPE_MIDDLE_ = 0x81;
+    private static final int SLOPE_TAIL_COUNT_ = SLOPE_MAX_ - SLOPE_MIN_ + 1;
+    private static final int SLOPE_MAX_BYTES_ = 4;
+
+    /**
+     * Number of lead bytes:
+     * 1        middle byte for 0
+     * 2*80=160 single bytes for !=0
+     * 2*42=84  for double-byte values
+     * 2*3=6    for 3-byte values
+     * 2*1=2    for 4-byte values
+     *
+     * The sum must be <=SLOPE_TAIL_COUNT.
+     *
+     * Why these numbers?
+     * - There should be >=128 single-byte values to cover 128-blocks
+     *   with small scripts.
+     * - There should be >=20902 single/double-byte values to cover Unihan.
+     * - It helps CJK Extension B some if there are 3-byte values that cover
+     *   the distance between them and Unihan.
+     *   This also helps to jump among distant places in the BMP.
+     * - Four-byte values are necessary to cover the rest of Unicode.
+     *
+     * Symmetrical lead byte counts are for convenience.
+     * With an equal distribution of even and odd differences there is also
+     * no advantage to asymmetrical lead byte counts.
+     */
+    private static final int SLOPE_SINGLE_ = 80;
+    private static final int SLOPE_LEAD_2_ = 42;
+    private static final int SLOPE_LEAD_3_ = 3;
+    private static final int SLOPE_LEAD_4_ = 1;
+
+    /** 
+     * The difference value range for single-byters.
+     */
+    private static final int SLOPE_REACH_POS_1_ = SLOPE_SINGLE_;
+    private static final int SLOPE_REACH_NEG_1_ = (-SLOPE_SINGLE_);
+
+    /** 
+     * The difference value range for double-byters.
+     */
+    private static final int SLOPE_REACH_POS_2_ = 
+        SLOPE_LEAD_2_ * SLOPE_TAIL_COUNT_ + SLOPE_LEAD_2_ - 1;
+    private static final int SLOPE_REACH_NEG_2_ = (-SLOPE_REACH_POS_2_ - 1);
+
+    /** 
+     * The difference value range for 3-byters.
+     */
+    private static final int SLOPE_REACH_POS_3_ = SLOPE_LEAD_3_ 
+        * SLOPE_TAIL_COUNT_ 
+        * SLOPE_TAIL_COUNT_ 
+        + (SLOPE_LEAD_3_ - 1)
+        * SLOPE_TAIL_COUNT_ +
+        (SLOPE_TAIL_COUNT_ - 1);
+    private static final int SLOPE_REACH_NEG_3_ = (-SLOPE_REACH_POS_3_ - 1);
+
+    /** 
+     * The lead byte start values.
+     */
+    private static final int SLOPE_START_POS_2_ = SLOPE_MIDDLE_ 
+        + SLOPE_SINGLE_ + 1;
+    private static final int SLOPE_START_POS_3_ = SLOPE_START_POS_2_ 
+        + SLOPE_LEAD_2_;
+    private static final int SLOPE_START_NEG_2_ = SLOPE_MIDDLE_ + 
+        SLOPE_REACH_NEG_1_;
+    private static final int SLOPE_START_NEG_3_ = SLOPE_START_NEG_2_
+        - SLOPE_LEAD_2_;
+                                                                                                        
+    // private constructor ---------------------------------------------------
+        
+    /**
+     * Constructor private to prevent initialization
+     */
+    private BOCU()
+    {
+    }                                                                                                   
+    
+    // private methods -------------------------------------------------------
+    
+    /**
+     * Integer division and modulo with negative numerators
+     * yields negative modulo results and quotients that are one more than
+     * what we need here.
+     * @param number which operations are to be performed on
+     * @param factor the factor to use for division
+     * @return (result of division) << 32 | modulo 
+     */
+    private static final long getNegDivMod(int number, int factor) 
+    {
+        int modulo = number % factor; 
+        long result = number / factor;
+        if (modulo < 0) { 
+            -- result; 
+            modulo += factor; 
+        } 
+        return (result << 32) | modulo;
+    }
+        
+    /**
+     * Encode one difference value -0x10ffff..+0x10ffff in 1..3 bytes,
+     * preserving lexical order
+     * @param diff
+     * @param buffer byte buffer to append to
+     * @param offset to the byte buffer to start appending
+     * @return end offset where the appending stops
+     */
+    private static final int writeDiff(int diff, byte buffer[], int offset) 
+    {
+        if (diff >= SLOPE_REACH_NEG_1_) {
+            if (diff <= SLOPE_REACH_POS_1_) {
+                buffer[offset ++] = (byte)(SLOPE_MIDDLE_ + diff);
+            } 
+            else if (diff <= SLOPE_REACH_POS_2_) {
+                buffer[offset ++] = (byte)(SLOPE_START_POS_2_ 
+                                           + (diff / SLOPE_TAIL_COUNT_));
+                buffer[offset ++] = (byte)(SLOPE_MIN_ + 
+                                           (diff % SLOPE_TAIL_COUNT_));
+            } 
+            else if (diff <= SLOPE_REACH_POS_3_) {
+                buffer[offset + 2] = (byte)(SLOPE_MIN_ 
+                                            + (diff % SLOPE_TAIL_COUNT_));
+                diff /= SLOPE_TAIL_COUNT_;
+                buffer[offset + 1] = (byte)(SLOPE_MIN_ 
+                                            + (diff % SLOPE_TAIL_COUNT_));
+                buffer[offset] = (byte)(SLOPE_START_POS_3_ 
+                                        + (diff / SLOPE_TAIL_COUNT_));
+                offset += 3;
+            } 
+            else {
+                buffer[offset + 3] = (byte)(SLOPE_MIN_ 
+                                            + diff % SLOPE_TAIL_COUNT_);
+                diff /= SLOPE_TAIL_COUNT_;
+                buffer[offset] = (byte)(SLOPE_MIN_ 
+                                        + diff % SLOPE_TAIL_COUNT_);
+                diff /= SLOPE_TAIL_COUNT_;
+                buffer[offset + 1] = (byte)(SLOPE_MIN_ 
+                                            + diff % SLOPE_TAIL_COUNT_);
+                buffer[offset] = (byte)SLOPE_MAX_;
+                offset += 4;
+            }
+        } 
+        else {
+            long division = getNegDivMod(diff, SLOPE_TAIL_COUNT_);
+            int modulo = (int)division;
+            if (diff >= SLOPE_REACH_NEG_2_) {
+                diff = (int)(division >> 32);
+                buffer[offset ++] = (byte)(SLOPE_START_NEG_2_ + diff);
+                buffer[offset ++] = (byte)(SLOPE_MIN_ + modulo);
+            } 
+            else if (diff >= SLOPE_REACH_NEG_3_) {
+                buffer[offset + 2] = (byte)(SLOPE_MIN_ + modulo);
+                diff = (int)(division >> 32);
+                division = getNegDivMod(diff, SLOPE_TAIL_COUNT_);
+                modulo = (int)division;
+                diff = (int)(division >> 32);
+                buffer[offset + 1] = (byte)(SLOPE_MIN_ + modulo);
+                buffer[offset] = (byte)(SLOPE_START_NEG_3_ + diff);
+                offset += 3;
+            } 
+            else {
+                buffer[offset + 3] = (byte)(SLOPE_MIN_ + modulo);
+                diff = (int)(division >> 32);
+                division = getNegDivMod(diff, SLOPE_TAIL_COUNT_);
+                modulo = (int)division;
+                diff = (int)(division >> 32);
+                buffer[offset + 2] = (byte)(SLOPE_MIN_ + modulo);
+                division = getNegDivMod(diff, SLOPE_TAIL_COUNT_);
+                modulo = (int)division;
+                buffer[offset + 1] = (byte)(SLOPE_MIN_ + modulo);
+                buffer[offset] = SLOPE_MIN_;
+                offset += 4;
+            }
+        }
+        return offset;
+    }
+        
+    /**
+     * How many bytes would writeDiff() write? 
+     * @param diff
+     */
+    private static final int lengthOfDiff(int diff) 
+    {
+        if (diff >= SLOPE_REACH_NEG_1_) {
+            if (diff <= SLOPE_REACH_POS_1_) {
+                return 1;
+            } 
+            else if (diff <= SLOPE_REACH_POS_2_) {
+                return 2;
+            } 
+            else if(diff <= SLOPE_REACH_POS_3_) {
+                return 3;
+            } 
+            else {
+                return 4;
+            }
+        } 
+        else {
+            if (diff >= SLOPE_REACH_NEG_2_) {
+                return 2;
+            } 
+            else if (diff >= SLOPE_REACH_NEG_3_) {
+                return 3;
+            } 
+            else {
+                return 4;
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/ByteTrie.java b/src/com/ibm/icu/impl/ByteTrie.java
new file mode 100755
index 0000000..63cc21e
--- /dev/null
+++ b/src/com/ibm/icu/impl/ByteTrie.java
@@ -0,0 +1,236 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2000, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/Attic/ByteTrie.java,v $ 
+* $Date: 2002/08/10 02:59:17 $ 
+* $Revision: 1.6 $
+*
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.lang.UCharacter;
+
+/**
+* Class to manipulate and generate a trie.
+* This is useful for ICU data in primitive types.
+* Provides a compact way to store information that is indexed by Unicode 
+* values, such as character properties, types, keyboard values, etc. This is 
+* very useful when you have a block of Unicode data that contains significant 
+* values while the rest of the Unicode data is unused in the application or 
+* when you have a lot of redundance, such as where all 21,000 Han ideographs 
+* have the same value.  However, lookup is much faster than a hash table.
+* A trie of any primitive data type serves two purposes:
+* <UL type = round>
+*     <LI>Fast access of the indexed values.
+*     <LI>Smaller memory footprint.
+* </UL>
+* A trie is composed of 2 index array and value array. Combining the 2 index
+* array, we could get the indicies of Unicode characters to the value array.
+* The first index array will contain indexes corresponding to the first 11 
+* bits of a 21 bit codepoint, the second index array will contain indexes 
+* corresponding to the next 6 bits of the code point. The last array will 
+* contain the values. Hence to access the value of a codepoint, we can use the
+* following program
+* <p>
+*   int firstindex = ch >> FIRST_11_BITS_SHIFT;<br>
+*   int secondindex = index1[firstindex] + 
+*                       (ch >> NEXT_6_BITS_SHIFT) & NEXT_6_BITS_MASK;<br>
+*   int thirdindex = index2[secondindex] + ch & LAST_FOUR_BITS_MASK;<br>    
+*   f(ch) = value[thirdindex];<br>
+* </p>
+* @version            $Revision: 1.6 $
+* @author             Syn Wee Quek
+* @deprecated release 2.1, since icu4c has written their own tool
+*/
+///CLOVER:OFF
+public final class ByteTrie
+{
+  // constructors -----------------------------------------------------
+  
+  /**
+  * constructor 
+  * @param array of data to be populated into trie
+  * @deprecated release 2.1, since icu4c has written their own tool
+  */
+  public ByteTrie(byte array[])
+  {
+    build(array);
+  }
+  
+  /**
+  * constructor that assigns trie the argument values. Arrays are not 
+  * duplicated.
+  * @param stage1 array of the first set of indexes
+  * @param stage2 array of the second set of indexes
+  * @param stage3 array of data
+  * @deprecated release 2.1, since icu4c has written their own tool
+  */
+  public ByteTrie(int stage1[], int stage2[], byte stage3[])
+  {
+    m_stage1_ = stage1;
+    m_stage2_ = stage2;
+    m_stage3_ = stage3;
+  }
+  
+  // public methods ----------------------------------------------------
+  
+  /**
+  * Getting the trie data corresponding to the argument index.
+  * @param index to be manipulated into corresponding trie index
+  * @return trie value at index
+  * @deprecated release 2.1, since icu4c has written their own tool
+  */
+  public byte getValue(int index)
+  {
+    // index of the first access to the database 
+    int index1 = index >> STAGE_1_SHIFT_;
+    // index of the second access to the database
+    int index2 = m_stage1_[index1] + 
+                 ((index >> STAGE_2_SHIFT_) & STAGE_2_MASK_AFTER_SHIFT_);
+    // index of the third access to the database
+    int index3 = m_stage2_[index2] + (index & STAGE_3_MASK_);  
+    // retrieves value
+    return m_stage3_[index3];
+  }
+  
+  // private data members ------------------------------------------------
+  
+  /**
+  * Stage 1 index array
+  */
+  private int m_stage1_[];
+  
+  /**
+  * Stage 2 index array
+  */
+  private int m_stage2_[];
+  
+  /**
+  * Stage 3 value array
+  */
+  private byte m_stage3_[];
+  
+  /**
+  * Stage 1 shift
+  */
+  private static final int STAGE_1_SHIFT_ = 10;
+  
+  /**
+  * Stage 2 shift
+  */
+  private static final int STAGE_2_SHIFT_ = 4;
+  
+  /**
+  * Stage 2 mask
+  */
+  private static final int STAGE_2_MASK_AFTER_SHIFT_ = 0x3F;
+  
+  /**
+  * Stage 3 mask
+  */
+  private static final int STAGE_3_MASK_ = 0xF;
+  
+  /**
+  * Number of numbers possible from a 4 bit type
+  */
+  private static final int COUNT_4_BIT_ = 0x10;
+  
+  /**
+  * Number of numbers possible from a 6 bit type
+  */
+  private static final int COUNT_6_BIT_ = 0x40;
+  
+  /**
+  * Number of numbers possible from the first 17 bits of a codepoint
+  */
+  private static final int COUNT_CODEPOINT_FIRST_17_BIT_ = 0x110000 >> 4;
+  
+  /**
+  * Number of numbers possible from the first 11 bits of a codepoint
+  */
+  private static final int COUNT_CODEPOINT_FIRST_11_BIT_ = 0x110000 >> 10;
+  
+  // private methods -----------------------------------------------------
+  
+  /**
+  * Building the trie from a argument array.
+  * Each unicode character will be used to generate data.
+  * @param output file path
+  */
+  private void build(byte array[])
+  {
+    int stage2[] = new int[COUNT_CODEPOINT_FIRST_17_BIT_];
+    byte stage3[] = new byte[UCharacter.MAX_VALUE >> 1];
+    int size = TrieBuilder.build(array, 0, array.length, COUNT_4_BIT_, stage2, 
+                                 stage3);
+    
+    m_stage3_ = new byte[size];
+    System.arraycopy(stage3, 0, m_stage3_, 0, size);
+    
+    m_stage1_ = new int[COUNT_CODEPOINT_FIRST_11_BIT_];
+    size = TrieBuilder.build(stage2, 0, stage2.length, COUNT_6_BIT_, m_stage1_, 
+                             stage2);
+    m_stage2_ = new int[size];
+    System.arraycopy(stage2, 0, m_stage2_, 0, size);
+  }
+  
+  /**
+  * Converts trie to a readable format
+  * @return string version of the trie
+  * @deprecated release 2.1, since icu4c has written their own tool
+  */
+  public String toString()
+  {
+    int size = m_stage1_.length;
+    int count = 0;
+    StringBuffer result = new StringBuffer("int m_stage1_[] = {\n");
+    for (int i = 0; i < size; i ++) {
+      result.append("0x" + Integer.toHexString(m_stage1_[i]));
+      if (i != size - 1) {
+        result.append(", ");
+      }
+      count ++;
+      if (count == 10) {
+        count = 0;
+        result.append("\n");
+      }
+    }
+    result.append("\n}\n\n");
+    size = m_stage2_.length;
+    result.append("int m_stage2_[] = {\n");
+    count = 0;
+    for (int i = 0; i < size; i ++) {
+      result.append("0x" + Integer.toHexString(m_stage2_[i]));
+      if (i != size - 1) {
+        result.append(", ");
+      }
+      count ++;
+      if (count == 10) {
+        count = 0;
+        result.append("\n");
+      }
+    }
+    result.append("\n}\n\n");
+    size = m_stage3_.length;
+    result.append("byte m_stage3_[] = {\n");
+    count = 0;
+    for (int i = 0; i < size; i ++) {
+      result.append("0x" + Integer.toHexString((char)m_stage3_[i]));
+      if (i != size - 1) {
+        result.append(", ");
+      }
+      count ++;
+      if (count == 10) {
+        count = 0;
+        result.append("\n");
+      }
+    }
+    result.append("\n}");
+    return result.toString();
+  }
+}
diff --git a/src/com/ibm/icu/impl/CharTrie.java b/src/com/ibm/icu/impl/CharTrie.java
new file mode 100755
index 0000000..d73fb06
--- /dev/null
+++ b/src/com/ibm/icu/impl/CharTrie.java
@@ -0,0 +1,235 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/CharTrie.java,v $
+* $Date: 2002/08/08 22:43:05 $
+* $Revision: 1.6 $
+*
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+
+/**
+ * Trie implementation which stores data in char, 16 bits.
+ * @author synwee
+ * @see com.ibm.icu.util.Trie
+ * @since release 2.1, Jan 01 2002
+ */
+
+ // note that i need to handle the block calculations later, since chartrie
+ // in icu4c uses the same index array.
+public class CharTrie extends Trie
+{
+    // public constructors ---------------------------------------------
+
+    /**
+    * <p>Creates a new Trie with the settings for the trie data.</p>
+    * <p>Unserialize the 32-bit-aligned input stream and use the data for the 
+    * trie.</p>
+    * @param inputStream file input stream to a ICU data file, containing 
+    *                    the trie
+    * @param dataManipulate, object which provides methods to parse the char 
+    *                        data
+    * @exception IOException thrown when data reading fails
+    * @draft 2.1
+    */
+    public CharTrie(InputStream inputStream, 
+                    DataManipulate dataManipulate) throws IOException
+    {
+        super(inputStream, dataManipulate);
+        
+        if (!isCharTrie()) {
+            throw new IllegalArgumentException(
+                               "Data given does not belong to a char trie.");
+        }
+    }
+
+    // public methods --------------------------------------------------
+
+    /**
+    * Gets the value associated with the codepoint.
+    * If no value is associated with the codepoint, a default value will be
+    * returned.
+    * @param ch codepoint
+    * @return offset to data
+    * @draft 2.1
+    */
+    public final char getCodePointValue(int ch)
+    {
+        int offset = getCodePointOffset(ch);
+        if (offset > 0) {
+            return m_data_[offset];
+        }
+        return m_initialValue_;
+    }
+
+    /**
+    * Gets the value to the data which this lead surrogate character points
+    * to.
+    * Returned data may contain folding offset information for the next
+    * trailing surrogate character.
+    * This method does not guarantee correct results for trail surrogates.
+    * @param ch lead surrogate character
+    * @return data value
+    * @draft 2.1
+    */
+    public final char getLeadValue(char ch)
+    {
+       return m_data_[getLeadOffset(ch)];
+    }
+
+    /**
+    * Get the value associated with the BMP code point.
+    * Lead surrogate code points are treated as normal code points, with
+    * unfolded values that may differ from getLeadValue() results.
+    * @param ch the input BMP code point
+    * @return trie data value associated with the BMP codepoint
+    * @draft 2.1
+    */
+    public final char getBMPValue(char ch)
+    {
+        return m_data_[getBMPOffset(ch)];
+    }
+
+    /**
+    * Get the value associated with a pair of surrogates.
+    * @param lead a lead surrogate
+    * @param trail a trail surrogate
+    * @param trie data value associated with the surrogate characters
+    * @draft 2.1
+    */
+    public final char getSurrogateValue(char lead, char trail)
+    {
+    	int offset = getSurrogateOffset(lead, trail);
+    	if (offset > 0) {
+            return m_data_[offset];
+        }
+        return m_initialValue_;
+    }
+
+    /**
+    * <p>Get a value from a folding offset (from the value of a lead surrogate)
+    * and a trail surrogate.</p>
+    * <p>If the 
+    * @param leadvalue value associated with the lead surrogate which contains
+    *        the folding offset
+    * @param trail surrogate
+    * @return trie data value associated with the trail character
+    * @draft 2.1
+    */
+    public final char getTrailValue(int leadvalue, char trail)
+    {
+        if (m_dataManipulate_ == null) {
+            throw new NullPointerException(
+                             "The field DataManipulate in this Trie is null");
+        }
+        int offset = m_dataManipulate_.getFoldingOffset(leadvalue);
+        if (offset > 0) {
+	        return m_data_[getRawOffset(offset,
+ 		                                (char)(trail & SURROGATE_MASK_))];
+        }
+        return m_initialValue_;
+    }
+    
+    /**
+     * <p>Gets the latin 1 fast path value.</p>
+     * <p>Note this only works if latin 1 characters have their own linear 
+     * array.</p>
+     * @param ch latin 1 characters
+     * @return value associated with latin character
+     */
+    public final char getLatin1LinearValue(char ch) 
+    {
+    	return m_data_[INDEX_STAGE_3_MASK_ + 1 + m_dataOffset_ + ch];
+    }
+
+    // protected methods -----------------------------------------------
+
+    /**
+    * <p>Parses the input stream and stores its trie content into a index and
+    * data array</p>
+    * @param inputStream data input stream containing trie data
+    * @exception IOException thrown when data reading fails
+    */
+    protected final void unserialize(InputStream inputStream) 
+                                                throws IOException
+    {
+        DataInputStream input = new DataInputStream(inputStream);
+        int indexDataLength = m_dataOffset_ + m_dataLength_;
+        m_index_ = new char[indexDataLength];
+        for (int i = 0; i < indexDataLength; i ++) {
+            m_index_[i] = input.readChar();
+        }
+        m_data_           = m_index_;
+        m_initialValue_   = m_data_[m_dataOffset_];
+    }
+    
+    /**
+    * Gets the offset to the data which the surrogate pair points to.
+    * @param lead lead surrogate
+    * @param trail trailing surrogate
+    * @return offset to data
+    * @draft 2.1
+    */
+    protected final int getSurrogateOffset(char lead, char trail)
+    {
+        if (m_dataManipulate_ == null) {
+            throw new NullPointerException(
+                             "The field DataManipulate in this Trie is null");
+        }
+        
+        // get fold position for the next trail surrogate
+        int offset = m_dataManipulate_.getFoldingOffset(getLeadValue(lead));
+
+        // get the real data from the folded lead/trail units
+        if (offset > 0) {
+            return getRawOffset(offset, (char)(trail & SURROGATE_MASK_));
+        }
+
+        // return -1 if there is an error, in this case we return the default
+        // value: m_initialValue_
+        return -1;
+    }
+    
+    /**
+    * Gets the value at the argument index.
+    * For use internally in com.ibm.icu.util.TrieEnumeration.
+    * @param index value at index will be retrieved
+    * @return 32 bit value
+    * @see com.ibm.icu.util.TrieEnumeration
+    * @draft 2.1
+    */
+    protected final int getValue(int index)
+    {
+        return m_data_[index];
+    }
+
+    /**
+    * Gets the default initial value
+    * @return 32 bit value 
+    * @draft 2.1
+    */
+    protected final int getInitialValue()
+    {
+        return m_initialValue_;
+    }
+  
+    // private data members --------------------------------------------
+
+    /**
+    * Default value
+    */
+    private char m_initialValue_;
+    /**
+    * Array of char data
+    */
+    protected char m_data_[];
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/CharacterIteratorWrapper.java b/src/com/ibm/icu/impl/CharacterIteratorWrapper.java
new file mode 100644
index 0000000..cc101b2
--- /dev/null
+++ b/src/com/ibm/icu/impl/CharacterIteratorWrapper.java
@@ -0,0 +1,177 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /usr/cvs/icu4j/icu4j/src/com/ibm/icu/impl/ICUCharacterIterator.java,v $ 
+ * $Date: 2002/06/20 01:18:07 $ 
+ * $Revision: 1.1 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.text.CharacterIterator;
+
+/**
+ * This class is a wrapper around CharacterIterator and implements the 
+ * UCharacterIterator protocol
+ * @author ram
+ */
+
+public class CharacterIteratorWrapper extends UCharacterIterator {
+    
+    private CharacterIterator iterator;
+    
+    /**
+     * length
+     */
+    private int length;
+    
+    public CharacterIteratorWrapper(CharacterIterator iter){
+        if(iter==null){
+            throw new IllegalArgumentException();
+        }
+        iterator     = iter;
+        length       = iter.getEndIndex() - iter.getBeginIndex();    
+    }
+
+    /**
+     * @see UCharacterIterator#current()
+     */
+    public int current() {
+	/*	if (currentIndex < length) {
+		    return iterator.setIndex(beginIndex + currentIndex);
+		}
+    */
+        int c = iterator.current();
+        if(c==iterator.DONE){
+		  return DONE;
+        }
+        return c;
+    }
+
+    /**
+     * @see UCharacterIterator#getLength()
+     */
+    public int getLength() {
+	    return length;
+    }
+
+    /**
+     * @see UCharacterIterator#getIndex()
+     */
+    public int getIndex() {
+	    //return currentIndex;
+        return iterator.getIndex();
+    }
+
+    /**
+     * @see UCharacterIterator#next()
+     */
+    public int next() {
+		/*if(currentIndex < length){
+		    return iterator.setIndex(beginIndex + currentIndex++);
+		}
+        return DONE;
+        */
+        int i = iterator.current();
+        iterator.next();
+        if(i==iterator.DONE){  
+		  return DONE;
+        }
+        return i;
+    }
+
+    /**
+     * @see UCharacterIterator#previous()
+     */
+    public int previous() {
+	    /*if(currentIndex>0){
+	        return iterator.setIndex(beginIndex + --currentIndex);
+	    }
+        return DONE;
+        */
+        int i = iterator.previous();
+        if(i==iterator.DONE){
+            return DONE;
+        }
+        return i;
+    }
+
+    /**
+     * @see UCharacterIterator#setIndex(int)
+     */
+    public void setIndex(int index) {
+		/*if (index < 0 || index > length) {
+		    throw new IndexOutOfBoundsException();
+		}
+		currentIndex = index;
+        */
+        try{
+            iterator.setIndex(index);
+        }catch(IllegalArgumentException e){
+            throw new IndexOutOfBoundsException();
+        }
+    }
+
+    /**
+     * @see UCharacterIterator#setToLimit()
+     */
+    public void setToLimit() {
+		iterator.setIndex(length);
+    }
+
+    /**
+     * @see UCharacterIterator#getText(char[])
+     */
+    public int getText(char[] fillIn, int offset){
+        int currentIndex = iterator.getIndex();
+        if(offset < 0 || offset + length > fillIn.length){
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        }
+	
+        for (char ch = iterator.first(); ch != iterator.DONE; ch = iterator.next()) {
+	        fillIn[offset++] = ch;
+	    }
+	    iterator.setIndex(currentIndex);
+
+        return length;
+    }
+
+    /**
+     * Creates a clone of this iterator.  Clones the underlying character iterator.
+     * @see UCharacterIterator#clone()
+     */
+    public Object clone(){
+		try {
+		    CharacterIteratorWrapper result = (CharacterIteratorWrapper) super.clone();
+		    result.iterator = (CharacterIterator)this.iterator.clone();
+		    return result;
+		} catch (CloneNotSupportedException e) {      
+            return null; // only invoked if bad underlying character iterator
+		}
+    }
+    
+    /**
+     * @see UCharacterIterator#moveIndex()
+     */
+    public int moveIndex(int index){
+        int idx = iterator.getIndex()+index;
+        
+        if(idx < 0) {
+	        idx = 0;
+		} else if(idx > length) {
+		    idx = length;
+		}
+        return iterator.setIndex(idx);
+    }
+    
+    /**
+     * @see UCharacterIterator#getCharacterIterator()
+     */
+    public CharacterIterator getCharacterIterator(){
+        return (CharacterIterator)iterator.clone();
+    } 
+}
diff --git a/src/com/ibm/icu/impl/ICUBinary.java b/src/com/ibm/icu/impl/ICUBinary.java
new file mode 100755
index 0000000..c5f2472
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUBinary.java
@@ -0,0 +1,148 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/ICUBinary.java,v $
+ * $Date: 2002/08/01 19:50:26 $
+ * $Revision: 1.6 $
+ *  *****************************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.util.Arrays;
+
+public final class ICUBinary 
+{    
+    /**
+    * <p>ICU data header reader method. 
+    * Takes a ICU generated big-endian input stream, parse the ICU standard 
+    * file header and authenticates them.</p>
+    * <p>Header format: 
+    * <ul>
+    *     <li> Header size (char)
+    *     <li> Magic number 1 (byte)
+    *     <li> Magic number 2 (byte)
+    *     <li> Rest of the header size (char)
+    *     <li> Reserved word (char)
+    *     <li> Big endian indicator (byte)
+    *     <li> Character set family indicator (byte)
+    *     <li> Size of a char (byte) for c++ and c use
+    *     <li> Reserved byte (byte)
+    *     <li> Data format identifier (4 bytes), each ICU data has its own
+    *          identifier to distinguish them. [0] major [1] minor 
+    *                                          [2] milli [3] micro 
+    *     <li> Data version (4 bytes), the change version of the ICU data
+    *                             [0] major [1] minor [2] milli [3] micro 
+    *     <li> Unicode version (4 bytes) this ICU is based on.
+    * </ul>
+    * </p>
+    * <p>
+    * Example of use:<br>
+    * <pre>
+    * try {
+    *    FileInputStream input = new FileInputStream(filename);
+    *    If (Utility.readICUDataHeader(input, dataformat, dataversion, 
+    *                                  unicode) {
+    *        System.out.println("Verified file header, this is a ICU data file");
+    *    }
+    * } catch (IOException e) {
+    *    System.out.println("This is not a ICU data file");
+    * }
+    * </pre>
+    * </p>
+    * @param inputStream input stream that contains the ICU data header
+    * @param dataFormatIDExpected Data format expected. An array of 4 bytes 
+    *                     information about the data format.
+    *                     E.g. data format ID 1.2.3.4. will became an array of 
+    *                     {1, 2, 3, 4}
+    * @param dataVersionExpected Data version expected. An array of 4 bytes 
+    *                     information about the data version.
+    *                     E.g. data version 1.2.3.4. will became an array of 
+    *                     {1, 2, 3, 4}
+    * @param unicodeVersionExpected Unicode version expected. An array of 4 
+    *                     bytes information about the unicode
+    *                     version this set of data belongs to.
+    *                     E.g. unicode version 3.1.1.0. will became an array 
+    *                     of {3, 1, 1, 0}
+    * @exception IOException thrown if there is a read error or 
+    *            when header authentication fails.
+    * @draft 2.1
+    */
+    public static final byte[] readHeader(InputStream inputStream,
+                                        byte dataFormatIDExpected[],
+                                        byte dataVersionExpected[]) 
+                                                          throws IOException
+    {
+        DataInputStream input = new DataInputStream(inputStream);
+        char headersize = input.readChar();
+        headersize -= 2;
+        //reading the header format
+        byte magic1 = input.readByte();
+        headersize --;
+        byte magic2 = input.readByte();
+        headersize --;
+        if (magic1 != MAGIC1 || magic2 != MAGIC2) {
+            throw new IOException(MAGIC_NUMBER_AUTHENTICATION_FAILED_);
+        }
+        
+        input.readChar(); // reading size
+        headersize -= 2;
+        input.readChar(); // reading reserved word
+        headersize -= 2;
+        byte bigendian    = input.readByte();
+        headersize --;
+        byte charset      = input.readByte();
+        headersize --;
+        byte charsize     = input.readByte();
+        headersize --;
+        input.readByte(); // reading reserved byte
+        headersize --;
+                
+        byte dataFormatID[] = new byte[4];
+        input.readFully(dataFormatID);
+        headersize -= 4;
+        byte dataVersion[] = new byte[4];
+        input.readFully(dataVersion);
+        headersize -= 4;
+        byte unicodeVersion[] = new byte[4];
+        input.readFully(unicodeVersion);
+        headersize -= 4;
+        input.skipBytes(headersize);
+
+        if (bigendian != BIG_ENDIAN_ || charset != CHAR_SET_ || 
+            charsize != CHAR_SIZE_ ||
+            !Arrays.equals(dataFormatIDExpected, dataFormatID) ||
+            !Arrays.equals(dataVersionExpected, dataVersion)) {
+            throw new IOException(HEADER_AUTHENTICATION_FAILED_);
+        }
+        return unicodeVersion;
+    }
+     
+    // private variables -------------------------------------------------
+  
+    /**
+    * Magic numbers to authenticate the data file
+    */
+    private static final byte MAGIC1 = (byte)0xda;
+    private static final byte MAGIC2 = (byte)0x27;
+      
+    /**
+    * File format authentication values
+    */
+    private static final byte BIG_ENDIAN_ = 1;
+    private static final byte CHAR_SET_ = 0;
+    private static final byte CHAR_SIZE_ = 2;
+                                                    
+    /**
+    * Error messages
+    */
+    private static final String MAGIC_NUMBER_AUTHENTICATION_FAILED_ = 
+                       "ICU data file error: Not an ICU data file";
+    private static final String HEADER_AUTHENTICATION_FAILED_ =
+        "ICU data file error: Header authentication failed, please check if you have the most updated ICU data file";
+}
diff --git a/src/com/ibm/icu/impl/ICUDebug.java b/src/com/ibm/icu/impl/ICUDebug.java
new file mode 100644
index 0000000..f70eb9e
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUDebug.java
@@ -0,0 +1,128 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/ICUDebug.java,v $
+ * $Date: 2002/08/13 23:40:51 $
+ * $Revision: 1.5 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.util.VersionInfo;
+
+public final class ICUDebug {
+    private static String params;
+    static {
+	try {
+	    params = System.getProperty("ICUDebug");
+	}
+	catch (SecurityException e) {
+	}
+    }
+    private static boolean debug = params != null;
+    private static boolean help = debug && (params.equals("") || params.indexOf("help") != -1);
+
+    static {
+	if (debug) {
+	    System.out.println("\nICUDebug=" + params);
+	}
+    }
+
+    public static final String javaVersionString = System.getProperty("java.version");
+    public static final boolean isJDK14OrHigher;
+    public static final VersionInfo javaVersion;
+
+    public static VersionInfo getInstanceLenient(String s) {
+	// clean string
+	// preserve only digits, separated by single '.' 
+	// ignore over 4 digit sequences
+	// does not test < 255, very odd...
+
+	char[] chars = s.toCharArray();
+	int r = 0, w = 0, count = 0;
+	boolean numeric = false; // ignore leading non-numerics
+	while (r < chars.length) {
+	    char c = chars[r++];
+	    if (c < '0' || c > '9') {
+		if (numeric) {
+		    if (count == 3) {
+			// only four digit strings allowed
+			break;
+		    }
+		    numeric = false;
+		    chars[w++] = '.';
+		    ++count;
+		}
+	    } else {
+		numeric = true;
+		chars[w++] = c;
+	    }
+	}
+	while (w > 0 && chars[w-1] == '.') {
+	    --w;
+	}
+	
+	String vs = new String(chars, 0, w);
+
+	return VersionInfo.getInstance(vs);
+    }
+
+    static {
+	javaVersion = getInstanceLenient(javaVersionString);
+
+        VersionInfo java14Version = VersionInfo.getInstance("1.4.0");
+
+        isJDK14OrHigher = javaVersion.compareTo(java14Version) >= 0;
+    }
+
+    public static boolean enabled() {
+	return debug;
+    }
+
+    public static boolean enabled(String arg) {
+	if (debug) {
+	    boolean result = params.indexOf(arg) != -1;
+	    if (help) System.out.println("\nICUDebug.enabled(" + arg + ") = " + result);
+	    return result;
+	}
+	return false;
+    }
+
+    public static String value(String arg) {
+	String result = "false";
+	if (debug) {
+	    int index = params.indexOf(arg);
+	    if (index != -1) {
+		index += arg.length();
+		if (params.length() > index && params.charAt(index) == '=') {
+		    index += 1;
+		    int limit = params.indexOf(",", index);
+		    result = params.substring(index, limit == -1 ? params.length() : limit);
+		}
+		result = "true";
+	    }
+
+	    if (help) System.out.println("\nICUDebug.value(" + arg + ") = " + result);
+	}
+	return result;
+    }
+
+    static public void main(String[] args) {
+	// test
+	String[] tests = {
+	    "1.3.0",
+	    "1.3.0_02",
+	    "1.3.1ea",
+	    "1.4.1b43",
+	    "___41___5",
+	    "x1.4.51xx89ea.7f"
+	};
+	for (int i = 0; i < tests.length; ++i) {
+	    System.out.println(tests[i] + " => " + getInstanceLenient(tests[i]));
+	}
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUListResourceBundle.java b/src/com/ibm/icu/impl/ICUListResourceBundle.java
new file mode 100644
index 0000000..f5b3604
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUListResourceBundle.java
@@ -0,0 +1,434 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/ICUListResourceBundle.java,v $
+ * $Date: 2002/08/13 23:40:52 $
+ * $Revision: 1.9 $
+ *
+ *******************************************************************************
+ */
+
+/**
+ * A list resource bundle that does redirection 
+ * because otherwise some of our resource class files
+ * are too big for the java runtime to handle.
+ */
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.ListResourceBundle;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Hashtable;
+
+public class ICUListResourceBundle extends ListResourceBundle {
+    private static final String ICUDATA = "ICUDATA";
+    private static final String ICU_BUNDLE_NAME = "LocaleElements";
+    private static final String ICU_PACKAGE_NAME ="com.ibm.icu.impl.data";
+    private static final String ENCODING="UTF-8";
+    
+    protected ICUListResourceBundle() {
+    }
+
+    private Hashtable visited = new Hashtable();
+    /**
+     * Subclassers must statically initialize this
+     */
+    protected Object[][] contents;
+
+    /**
+     * This is our cache
+     */
+    private Object[][] realContents;
+
+    /**
+     * See base class description
+     */
+    protected Object[][] getContents(){
+		// we replace any redirected values with real values in a cloned array
+	
+		if (realContents == null) {
+		    realContents = contents;
+		    for (int i = 0; i < contents.length; ++i) {
+				Object newValue = getRedirectedResource((String)contents[i][0],contents[i][1]);
+				if (newValue != null) {
+				    if (realContents == contents) {
+					     realContents = (Object[][])contents.clone();
+				    }
+				    realContents[i] = new Object[] { contents[i][0], newValue };
+				}
+		    }
+		}
+	
+		return realContents;
+    }
+
+    /**
+     * Return null if value is already in existing contents array, otherwise fetch the
+     * real value and return it.
+     */
+    private Object getRedirectedResource(String key, Object value) {
+	
+		if (value instanceof Object[][]) {
+		    Object[][] aValue = (Object[][])value;
+            int i=0;
+            while(i < aValue.length){
+                int j=0;
+                while(j < aValue[i].length){
+                    aValue[i][j] = getRedirectedResource((String)aValue[i][0],aValue[i][j]);
+                    j++;
+                }
+                i++;
+            }                  
+		}else if(value instanceof Alias){  
+            String cName = this.getClass().getName();
+            visited.clear();
+            visited.put(cName+key,"");        
+            return ((Alias)value).getResource(cName,key,visited);
+        }else if(value instanceof RedirectedResource){
+            return ((RedirectedResource)value).getResource(this);
+        }       
+			
+		return value;
+    }
+
+    private static byte[] readToEOS(InputStream stream) {
+
+		ArrayList vec = new ArrayList();
+		int count = 0;
+		int pos = 0;
+		final int MAXLENGTH = 0x8000; // max buffer size - 32K
+		int length = 0x80; // start with small buffers and work up
+		do {
+		    pos = 0;
+		    length = length >= MAXLENGTH ? MAXLENGTH : length * 2;
+		    byte[] buffer = new byte[length];
+		    try {
+				do {
+				    int n = stream.read(buffer, pos, length - pos);
+				    if (n == -1) {
+					break;
+				    }
+				    pos += n;
+				} while (pos < length);
+		    }
+		    catch (IOException e) {
+		    }
+		    vec.add(buffer);
+		    count += pos;
+		} while (pos == length);
+							
+							
+		byte[] data = new byte[count];
+		pos = 0;
+		for (int i = 0; i < vec.size(); ++i) {
+		    byte[] buf = (byte[])vec.get(i);
+		    int len = Math.min(buf.length, count - pos);
+		    System.arraycopy(buf, 0, data, pos, len);
+		    pos += len;
+		}
+		return data;
+    }
+
+    private static char[] readToEOS(InputStreamReader stream) {
+		ArrayList vec = new ArrayList();
+		int count = 0;
+		int pos = 0;
+		final int MAXLENGTH = 0x8000; // max buffer size - 32K
+		int length = 0x80; // start with small buffers and work up
+		do {
+		    pos = 0;
+		    length = length >= MAXLENGTH ? MAXLENGTH : length * 2;
+		    char[] buffer = new char[length];
+		    try {
+				do {
+				    int n = stream.read(buffer, pos, length - pos);
+				    if (n == -1) {
+					break;
+				    }
+				    pos += n;
+				} while (pos < length);
+		    }
+		    catch (IOException e) {
+		    }
+		    vec.add(buffer);
+		    count += pos;
+		} while (pos == length);
+							
+		char[] data = new char[count];
+		pos = 0;
+		for (int i = 0; i < vec.size(); ++i) {
+		    char[] buf = (char[])vec.get(i);
+		    int len = Math.min(buf.length, count - pos);
+		    System.arraycopy(buf, 0, data, pos, len);
+		    pos += len;
+		}
+		return data;
+    }
+    /*
+    public static class CompressedString implements RedirectedResource{
+        private String expanded=null;
+        private String compressed=null;
+        public CompressedString(String str){
+           compressed=str;
+        }
+        public Object getResource(Object obj){
+            if(compressed==null){
+                return null;
+            }
+            if(expanded==null){
+                expanded= new String(Utility.RLEStringToCharArray(compressed));
+            }
+            return expanded;
+        }
+    }
+    */
+    public static class CompressedBinary implements RedirectedResource{
+        private byte[] expanded=null;
+        private String compressed=null;
+        public CompressedBinary(String str){
+           compressed = str;
+        }
+        public Object getResource(Object obj){
+            if(compressed==null){
+                return null;
+            }
+            
+            if(expanded==null){
+                expanded= Utility.RLEStringToByteArray(compressed);
+            }
+            return expanded;
+        }
+    
+    }
+    private interface RedirectedResource{
+        public Object getResource(Object obj);
+    }
+    
+    public static class ResourceBinary implements RedirectedResource{
+        private byte[] expanded=null;
+        private String resName=null;
+        public ResourceBinary(String name){
+            resName=name;
+        }
+        public Object getResource(Object obj){
+            if(expanded==null){
+	            InputStream stream = obj.getClass().getResourceAsStream(resName);
+                if(stream==null){
+                    throw new MissingResourceException("",obj.getClass().getName(),resName);
+                }
+	            expanded = readToEOS(stream);
+            }
+            return expanded;
+        }
+    }
+    
+    public static class ResourceString implements RedirectedResource{
+        private char[] expanded=null;
+        private String resName=null;
+        public ResourceString(String name){
+            resName=name;
+        }
+        public Object getResource(Object obj){
+            if(expanded==null){
+                // Resource strings are always UTF-8
+                InputStream stream = obj.getClass().getResourceAsStream(resName);
+                if(stream==null){
+                    throw new MissingResourceException("",obj.getClass().getName(),resName);
+                }
+                try{
+                    InputStreamReader reader =  new InputStreamReader(stream,ENCODING);
+                    expanded = readToEOS(reader);
+                }catch(UnsupportedEncodingException ex){
+                    throw new RuntimeException("Could open converter for encoding: " +ENCODING);
+                }
+                
+            }
+            return new String(expanded);
+        }
+    }
+    
+    public static class Alias{
+        public Alias(String path){
+            pathToResource = path;
+        };
+        private final char RES_PATH_SEP_CHAR = '/';
+        private String pathToResource;
+        
+        
+        private Object getResource(String className,String parentKey, Hashtable visited){
+            String packageName=null,bundleName=null, locale=null, keyPath=null;
+            
+            if(pathToResource.indexOf(RES_PATH_SEP_CHAR)==0){
+                int i =pathToResource.indexOf(RES_PATH_SEP_CHAR,1);
+                int j =pathToResource.indexOf(RES_PATH_SEP_CHAR,i+1);
+                bundleName=pathToResource.substring(1,i);
+                locale=pathToResource.substring(i+1);
+                if(j!=-1){
+                    locale=pathToResource.substring(i+1,j);
+                    keyPath=pathToResource.substring(j+1,pathToResource.length());
+                }
+                //there is a path included 
+                if(bundleName.equals(ICUDATA)){
+                    bundleName = ICU_BUNDLE_NAME;
+                    packageName = ICU_PACKAGE_NAME;
+                }
+                
+            }else{
+                //no path start with locale
+                int i =pathToResource.indexOf(RES_PATH_SEP_CHAR);
+                //If this is a bundle with locale name following it
+                //then it should be of type <bundle name>_<locale>
+                //if not we donot guarantee that this will work
+                int j = className.lastIndexOf(".");
+                packageName=className.substring(0,j);
+                bundleName=className.substring(j+1,className.indexOf("_"));
+                keyPath=pathToResource.substring(i+1);
+                
+                if(i!=-1){
+                    locale = pathToResource.substring(0,i);
+                }else{
+                    locale=keyPath;
+                    keyPath=parentKey;
+                    className=packageName+"."+bundleName+"_"+locale;
+                }
+          
+            }
+          
+            ResourceBundle bundle = null;
+            // getResourceBundle guarantees that the CLASSPATH will be searched
+            // for loading the resource with name <bundleName>_<localeName>.class
+            bundle = ICULocaleData.getResourceBundle(packageName,bundleName,locale);
+            
+            return findResource(bundle,className,keyPath, visited);
+        }
+        
+
+        
+        private boolean isIndex(String s){
+             if(s.length()==1){
+                char c = s.charAt(0);
+                return Character.isDigit(c);
+             }
+             return false;
+        }
+        private int getIndex(String s){
+             if(s.length()==1){
+                char c = s.charAt(0);
+                if(Character.isDigit(c)){
+                  return Integer.valueOf(s).intValue();
+                }
+             }
+             return -1;
+        }
+        private Object findResource(Object[][] contents, String key){
+            for (int i = 0; i < contents.length; ++i) {
+                // key must be non-null String, value must be non-null
+                String tempKey = (String) contents[i][0];
+                Object value = contents[i][1];
+                if (tempKey == null || value == null) {
+                    throw new NullPointerException();
+                }
+                if(tempKey.equals(key)){
+                    return value;
+                }
+            }
+            return null;
+        }
+        private Object findResource(Object o , String[] keys, int start){
+            Object obj = o;
+            if( start < keys.length && keys[start] !=null){
+	            if(obj instanceof Object[][]){
+	                obj = findResource((Object[][])obj,keys[start]);   
+	            }else if(obj instanceof Object[] && isIndex(keys[start])){
+                    obj = ((Object[])obj)[getIndex(keys[start])];
+                }
+                if(start+1 < keys.length && keys[start+1] !=null){
+                    obj = findResource(obj,keys,start+1);
+                }
+            }
+            return obj;
+        }
+        private Object findResource(ResourceBundle bundle,String className,String key, Hashtable visited){
+            if(key==null){
+                return ((ICUListResourceBundle)bundle).getContents();
+            }
+            if(visited.get(className+key)!=null){
+                throw new MissingResourceException("Circular Aliases in bundle.",bundle.getClass().getName(),key);
+            }
+            
+            visited.put(className+key,"");
+            
+            String[] keys = split(key,RES_PATH_SEP_CHAR);
+            Object o =null;
+            if(keys.length>0){
+                o = bundle.getObject(keys[0]);
+                o = findResource(o,keys,1);
+            }
+            o=resolveAliases(o,className,key,visited);
+            return o;
+        }
+        private  Object resolveAliases(Object o,String className,String key, Hashtable visited){
+            if(o instanceof Object[][]){
+                o = resolveAliases((Object[][])o,className,key,visited);
+            }else if(o instanceof Object[]){
+                 o = resolveAliases((Object[])o,className,key,visited);           
+            }else if(o instanceof Alias){
+                return ((Alias)o).getResource(className,key,visited);
+            }
+            return o;
+        }
+        private Object resolveAliases(Object[][] o,String className, String key,Hashtable visited){
+            int i =0;
+            while(i<o.length){
+                o[i][1]=resolveAliases((Object)o[i][1],className,key,visited);
+                i++;
+            }
+            return o;
+        }
+        private Object resolveAliases(Object[] o,String className, String key,Hashtable visited){
+            int i =0;
+            while(i<o.length){
+                o[i]=resolveAliases((Object)o[i],className,key,visited);
+                i++;
+            }
+            return o;
+        }
+        
+        private String[] split(String source, char delimiter){
+           
+            char[] src = source.toCharArray();
+            int index = 0;
+            int numdelimit=0;
+            // first count the number of delimiters
+            for(int i=0;i<source.length();i++){
+                if(src[i]==delimiter){
+                    numdelimit++;
+                }
+            }
+            String[] values =null;
+            values = new String[numdelimit+2];
+            // now split
+            int old=0;
+            for(int j=0;j<src.length;j++){
+                if(src[j]==delimiter){
+	                values[index++] = new String(src,old,j-old);
+	                old=j+1/* skip after the delimiter*/;
+                }
+            }
+            if(old <src.length)
+                values[index++]=new String(src,old,src.length-old);
+            return values;
+        }
+    }
+    
+}
+
diff --git a/src/com/ibm/icu/impl/ICULocaleData.java b/src/com/ibm/icu/impl/ICULocaleData.java
new file mode 100644
index 0000000..e63dc06
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICULocaleData.java
@@ -0,0 +1,237 @@
+/*
+ * (C) Copyright IBM Corp. 2002 - All Rights Reserved
+ */
+
+package com.ibm.icu.impl;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+
+/**
+ * Provides information about and access to resource bundles in the
+ * com.ibm.text.resources package.  Unlike the java version, this does
+ * not include resources from any other location.  In particular, it
+ * does not look in the boot or system class path.
+ */
+public class ICULocaleData {
+    private static Locale[] localeList;
+    private static final String PACKAGE1 = "com.ibm.icu.impl.data";
+    private static final String[] packageNames = { PACKAGE1 };
+    private static boolean debug = ICUDebug.enabled("localedata");
+
+    /**
+     * Returns a list of the installed locales.
+     * @param key A resource tag.  Currently, this parameter is ignored.  The obvious
+     * intent, however,  is for getAvailableLocales() to return a list of only those
+     * locales that contain a resource with the specified resource tag.
+     *
+     * <p>Before we implement this function this way, however, some thought should be
+     * given to whether this is really the right thing to do.  Because of the lookup
+     * algorithm, a NumberFormat, for example, is "installed" for all locales.  But if
+     * we're trying to put up a list of NumberFormats to choose from, we may want to see
+     * only a list of those locales that uniquely define a NumberFormat rather than
+     * inheriting one from another locale.  Thus, if fr and fr_CA uniquely define
+     * NumberFormat data, but fr_BE doesn't, the user wouldn't see "French (Belgium)" in
+     * the list and would go for "French (default)" instead.  Of course, this means
+     * "English (United States)" would not be in the list, since it is the default locale.
+     * This might be okay, but might be confusing to some users.
+     *
+     * <p>In addition, the other functions that call getAvailableLocales() don't currently
+     * all pass the right thing for "key," meaning that all of these functions should be
+     * looked at before anything is done to this function.
+     *
+     * <p>We recommend that someone take some careful consideration of these issues before
+     * modifying this function to pay attention to the "key" parameter.  --rtg 1/26/98
+     */
+    public static Locale[] getAvailableLocales(String key) {
+	// ignore key, just return all locales
+	return getAvailableLocales();
+    }
+    
+    /**
+     * Return an array of all the locales for which we have resource information.
+     */
+    public static Locale[] getAvailableLocales() {
+        // creating the locale list is expensive, so be careful to do it
+        // only once
+        if (localeList == null) {
+            synchronized(ICULocaleData.class) {
+                if (localeList == null) {
+                    localeList = createLocaleList();
+                }
+            }
+        }
+
+	return (Locale[])localeList.clone();
+    }
+
+    /**
+     * The default name for resources containing ICU locale data.
+     */
+    public static final String LOCALE_ELEMENTS = "LocaleElements";
+
+    /**
+     * Gets a LocaleElements resource bundle.
+     */
+    public static ResourceBundle getLocaleElements(Locale locale) {
+        return getResourceBundle(LOCALE_ELEMENTS, locale);
+    }
+
+    /**
+     * Gets a LocaleElements resource bundle.
+     */
+    public static ResourceBundle getLocaleElements(String localeName) {
+	return getResourceBundle(LOCALE_ELEMENTS, localeName);
+    }
+
+    /**
+     * Still need permissions to use our own class loader, is there no way
+     * to load class resources from new locations that aren't already on the
+     * class path?
+     */
+    private static ResourceBundle instantiateBundle(String name, Locale l) {
+	ResourceBundle rb = ResourceBundle.getBundle(name, l);
+	return rb;
+    }
+
+    /**
+     * Get a resource bundle from the lookup chain.
+     */
+    public static ResourceBundle getResourceBundle(String bundleName, String localeName) {
+	Locale locale = LocaleUtility.getLocaleFromName(localeName);
+	return getResourceBundle(bundleName, locale);
+    }
+
+    /**
+     * Get a resource bundle from the lookup chain.
+     */
+    public static ResourceBundle getResourceBundle(String bundleName, Locale locale) {
+	if (locale == null) {
+	    locale = Locale.getDefault();
+	}
+	for (int i = 0; i < packageNames.length; ++i) {
+	    try {
+		String path = packageNames[i] + "." + bundleName;
+		if (debug) System.out.println("calling instantiateBundle: " + path + "_" + locale);
+		ResourceBundle rb = instantiateBundle(path, locale);
+		return rb;
+	    } 
+	    catch (MissingResourceException e) {
+		if (debug) System.out.println(bundleName + "_" + locale + " not found in " + packageNames[i]);
+	    }
+	}
+
+	return null;
+    }
+
+    /**
+     * Get a resource bundle from the lookup chain.
+     */
+    public static ResourceBundle getResourceBundle(String[] packages, String bundleName, String localeName) {
+	    Locale locale = LocaleUtility.getLocaleFromName(localeName);
+        if (locale == null) {
+	        locale = Locale.getDefault();
+	    }
+	    for (int i = 0; i < packages.length; ++i) {
+	        try {
+		        String path = packages[i] + "." + bundleName;
+		        if (debug) System.out.println("calling instantiateBundle: " + path + "_" + locale);
+		        ResourceBundle rb = instantiateBundle(path, locale);
+		        return rb;
+	        } 
+	        catch (MissingResourceException e) {
+	           if (debug) System.out.println(bundleName + "_" + locale + " not found in " + packages[i]);
+	        }
+	    }
+	    return null;
+    }
+
+    /**
+     * Get a resource bundle from the lookup chain.
+     */
+    public static ResourceBundle getResourceBundle(String packageName, String bundleName, String localeName) {
+        Locale locale = LocaleUtility.getLocaleFromName(localeName);
+        if (locale == null) {
+            locale = Locale.getDefault();
+        }
+        
+        try {
+            String path = packageName + "." + bundleName;
+            if (debug) System.out.println("calling instantiateBundle: " + path + "_" + locale);
+            ResourceBundle rb = instantiateBundle(path, locale);
+            return rb;
+        } 
+        catch (MissingResourceException e) {
+           if (debug) System.out.println(bundleName + "_" + locale + " not found in " + packageName);
+        }
+       
+        return null;
+    }    
+    /**
+     * Get a resource bundle from the resource bundle path.  Unlike getResourceBundle, this
+     * returns an 'unparented' bundle that exactly matches the bundle name and locale name.
+     */
+    public static ResourceBundle loadResourceBundle(String bundleName, Locale locale) {
+	if (locale == null) {
+	    locale = Locale.getDefault();
+	}
+	return loadResourceBundle(bundleName, locale.toString());
+    }
+
+    /**
+     * Get a resource bundle from the resource bundle path.  Unlike getResourceBundle, this
+     * returns an 'unparented' bundle that exactly matches the bundle name and locale name.
+     */
+    public static ResourceBundle loadResourceBundle(String bundleName, String localeName) {
+	if (localeName != null) {
+	    bundleName = bundleName + "_" + localeName;
+	}
+	for (int i = 0; i < packageNames.length; ++i) {
+	    String name = packageNames[i] + "." + bundleName;
+	    try {
+		if (name.indexOf("_zh_") == -1) { // DLF temporary hack
+		    Class rbclass = ICULocaleData.class.forName(name);
+		    ResourceBundle rb = (ResourceBundle)rbclass.newInstance();
+		    return rb;
+		}
+	    } 
+	    catch (ClassNotFoundException e) {
+		if (debug) {
+		    System.out.println(bundleName + " not found in " + packageNames[i]);
+		}
+		// ignore, keep looking
+	    }
+	    catch (Exception e) {
+		if (debug) {
+		    System.out.println(e.getMessage());
+		}
+	    }
+	}
+	if (debug) {
+	    System.out.println(bundleName + " not found.");
+	}
+	
+	return null;
+    }
+
+    // ========== privates ==========
+
+
+    private static Locale[] createLocaleList() {
+	try {
+	    ResourceBundle index = getLocaleElements(LocaleUtility.getLocaleFromName("index"));
+	    String[] localeNames = index.getStringArray("InstalledLocales");
+	    Locale[] locales = new Locale[localeNames.length];
+	    for (int i = 0; i < localeNames.length; ++i) {
+		locales[i] = LocaleUtility.getLocaleFromName(localeNames[i]);
+	    }
+	    return locales;
+	}
+	catch (MissingResourceException e) {
+	}
+		
+	return new Locale[0];
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICULocaleService.java b/src/com/ibm/icu/impl/ICULocaleService.java
new file mode 100644
index 0000000..fada12f
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICULocaleService.java
@@ -0,0 +1,399 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/ICULocaleService.java,v $
+ * $Date: 2002/08/13 23:40:52 $
+ * $Revision: 1.5 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.lang.ref.SoftReference;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.Set;
+
+
+public class ICULocaleService extends ICUService {
+    Locale fallbackLocale;
+    String fallbackLocaleName;
+
+    /**
+     * Construct an ICULocaleService with a fallback locale string based on the current
+     * default locale at the time of construction.
+     */
+    public ICULocaleService() {
+	fallbackLocale = Locale.getDefault();
+	fallbackLocaleName = LocaleUtility.canonicalLocaleString(fallbackLocale.toString());
+    }
+
+    /**
+     * A subclass of Key that implements a locale fallback mechanism.
+     * The first locale to search for is the locale provided by the
+     * client, and the fallback locale to search for is the current default
+     * locale.  This is instantiated by ICULocaleService.</p>
+     *
+     * <p>Canonicalization adjusts the locale string so that the
+     * section before the first understore is in lower case, and the rest
+     * is in upper case, with no trailing underscores.</p>
+     */
+    public static class LocaleKey extends ICUService.Key {
+	private String primaryID;
+	private String fallbackID;
+	private String currentID;
+
+	/**
+	 * Convenience method for createWithCanonical that canonicalizes both the
+	 * primary and fallback IDs first.
+	 */
+	public static LocaleKey create(String primaryID, String fallbackID) {
+	    String canonicalPrimaryID = LocaleUtility.canonicalLocaleString(primaryID);
+	    String canonicalFallbackID = LocaleUtility.canonicalLocaleString(fallbackID);
+	    return new LocaleKey(primaryID, canonicalPrimaryID, canonicalFallbackID);
+	}
+
+	/**
+	 * Convenience method for createWithCanonical that canonicalizes the
+	 * primary ID first, the fallback is assumed to already be canonical.
+	 */
+	public static LocaleKey createWithCanonicalFallback(String primaryID, String canonicalFallbackID) {
+	    String canonicalPrimaryID = LocaleUtility.canonicalLocaleString(primaryID);
+	    return new LocaleKey(primaryID, canonicalPrimaryID, canonicalFallbackID);
+	}
+
+	/**
+	 * Create a LocaleKey with canonical primary and fallback IDs.
+	 */
+	public static LocaleKey createWithCanonical(String canonicalPrimaryID, String canonicalFallbackID) {
+	    return new LocaleKey(canonicalPrimaryID, canonicalPrimaryID, canonicalFallbackID);
+	}
+	    
+	/**
+	 * PrimaryID is the user's requested locale string,
+	 * canonicalPrimaryID is this string in canonical form,
+	 * fallbackID is the current default locale's string in
+	 * canonical form.
+	 */
+        protected LocaleKey(String primaryID, String canonicalPrimaryID, String canonicalFallbackID) {
+	    super(primaryID);
+	    
+	    if (canonicalPrimaryID == null) {
+		this.primaryID = "";
+	    } else {
+		this.primaryID = canonicalPrimaryID;
+	    }
+	    if (this.primaryID == "") {
+		this.fallbackID = null;
+	    } else {
+		if (canonicalFallbackID == null || this.primaryID.equals(canonicalFallbackID)) {
+		    this.fallbackID = "";
+		} else {
+		    this.fallbackID = canonicalFallbackID;
+		}
+	    }
+
+	    this.currentID = this.primaryID;
+        }
+
+	/**
+	 * Return the (canonical) original ID.
+	 */
+	public String canonicalID() {
+	    return primaryID;
+	}
+
+        /**
+         * Return the (canonical) current ID.
+         */
+        public String currentID() {
+	    return currentID;
+        }
+
+        /**
+         * If the key has a fallback, modify the key and return true,
+         * otherwise return false.</p>
+	 *
+	 * <p>First falls back through the primary ID, then through
+	 * the fallbackID.  The final fallback is the empty string,
+	 * unless the primary id was the empty string, in which case
+	 * there is no fallback.  
+	 */
+        public boolean fallback() {
+	    String current = currentID();
+	    int x = current.lastIndexOf('_');
+	    if (x != -1) {
+		currentID = current.substring(0, x);
+		return true;
+	    }
+	    if (fallbackID != null) {
+		currentID = fallbackID;
+		fallbackID = fallbackID.length() == 0 ? null : "";
+		return true;
+	    }
+	    currentID = null;
+	    return false;
+        }
+    }
+
+    /**
+     * This is a factory that handles multiple keys, and records
+     * information about the keys it handles or doesn't handle.  This
+     * allows it to quickly filter subsequent queries on keys it has
+     * seen before.  Subclasses implement handleCreate instead of
+     * create.  Before updateVisibleIDs is called, it keeps track of
+     * keys that it doesn't handle.  If its ids are visible, once
+     * updateVisibleIDs is called, it builds a set of all the keys it
+     * does handle and keeps track of the keys it does handle.  
+     */
+    public static abstract class MultipleKeyFactory implements ICUService.Factory {
+	protected final boolean visible;
+	private SoftReference cacheref;
+	private boolean included;
+
+	/**
+	 * Convenience overload of MultipleKeyFactory(boolean) that defaults
+	 * visible to true.
+	 */
+	public MultipleKeyFactory() {
+	    this(true);
+	}
+
+	/**
+	 * Constructs a MultipleKeyFactory whose ids are visible iff visible is true.
+	 */
+	public MultipleKeyFactory(boolean visible) {
+	    this.visible = visible;
+	}
+
+	/**
+	 * Get the cache of IDs.  These are either the ids that we know we
+	 * don't understand, if included is false, or the entire set of ids
+	 * we do know we understand, if included is true.  Note that if
+	 * the cache has been freed by gc, we reset the included flag, so
+	 * it must not be tested before this method is called.
+	 */
+	private HashSet getCache() {
+	    HashSet cache = null;
+	    if (cacheref != null) {
+		cache = (HashSet)cacheref.get();
+	    }
+	    if (cache == null) {
+		cache = new HashSet();
+		cacheref = new SoftReference(cache);
+		included = false;
+	    }
+	    return cache;
+	}
+
+	/**
+	 * Get the cache of IDs we understand.
+	 */
+	private HashSet getIncludedCache() {
+	    HashSet cache = getCache();
+	    if (!included) {
+		cache.clear();
+		handleUpdateVisibleIDs(cache);
+		included = true;
+	    }
+	    return cache;
+	}
+
+	public final Object create(Key key) {
+	    Object result = null;
+	    String id = key.currentID();
+	    HashSet cache = getCache();
+	    if (cache.contains(id) == included) {
+		result = handleCreate(key);
+		if (!included && result == null) {
+		    cache.add(id);
+		}
+	    }
+	    return result;
+	}
+
+	public final void updateVisibleIDs(Map result) {
+	    if (visible) {
+		Set cache = getIncludedCache();
+		Iterator iter = cache.iterator();
+		while (iter.hasNext()) {
+		    result.put((String)iter.next(), this);
+		}
+	    }
+	}
+
+	public final String getDisplayName(String id, Locale locale) {
+	    if (visible) {
+		Set cache = getIncludedCache();
+		if (cache.contains(id)) {
+		    return handleGetDisplayName(id, locale);
+		}
+	    }
+	    return null;
+	}
+
+	/**
+	 * Subclasses implement this instead of create.
+	 */
+	protected abstract Object handleCreate(Key key);
+
+	/**
+	 * Subclasses implement this instead of updateVisibleIDs.  Any
+	 * id known to and handled by this class should be added to
+	 * result.  
+	 */
+	protected abstract void handleUpdateVisibleIDs(Set result);
+
+	/**
+	 * Subclasses implement this instead of getDisplayName.
+	 * Return the display name for the (visible) id in the
+	 * provided locale.  The default implementation just returns
+	 * the id.  
+	 */
+	protected String handleGetDisplayName(String id, Locale locale) {
+	    return id;
+	}
+    }
+
+    /**
+     * A factory that creates a service based on the ICU locale data.
+     * Subclasses specify a prefix (default is LocaleElements), a
+     * semicolon-separated list of required resources, and a visible flag.
+     * This factory will search the ICU locale data for a bundle with
+     * the exact prefix.  Then it will test whether the required resources
+     * are all in this exact bundle.  If so, it instantiates the full
+     * resource bundle, and hands it to createServiceFromResource, which
+     * subclasses must implement.  Otherwise it returns null.
+     */
+    public static class ICUResourceBundleFactory extends MultipleKeyFactory {
+	protected final String name;
+	protected final String[] requiredContents;
+
+	/**
+	 * A service factory based on ICU resource data in the LocaleElements resources.
+	 */
+	public ICUResourceBundleFactory(String requiredContents, boolean visible) {
+	    this(ICULocaleData.LOCALE_ELEMENTS, requiredContents, visible);
+	}
+
+	/**
+	 * A service factory based on ICU resource data in resources
+	 * with the given name.  If requiredContents is not null, all
+	 * listed resources must come directly from the same bundle.  
+	 */
+	public ICUResourceBundleFactory(String name, String requiredContents, boolean visible) {
+	    super(visible);
+
+	    this.name = name;
+	    if (requiredContents != null) {
+		ArrayList list = new ArrayList();
+		for (int i = 0, len = requiredContents.length();;) {
+		    while (i < len && requiredContents.charAt(i) == ';') {
+			++i;
+		    }
+		    if (i == len) {
+		      break;
+		    }
+		    int j = requiredContents.indexOf(';', i);
+		    if (j == -1) {
+		      j = len;
+		    }
+		    list.add(requiredContents.substring(i, j));
+		    i = j;
+		}
+		this.requiredContents = (String[])list.toArray(new String[list.size()]);
+	    } else {
+		this.requiredContents = null;
+	    }
+	}
+
+	/**
+	 * Overrides parent handleCreate call.  Parent will filter out keys that it
+	 * knows are not accepted by this factory before calling this method.
+	 */
+	protected Object handleCreate(Key key) {
+	    Locale loc = LocaleUtility.getLocaleFromName(key.currentID());
+	    if (acceptsLocale(loc)) {
+		ResourceBundle bundle = ICULocaleData.getResourceBundle(name, loc); // full resource bundle tree lookup
+		return createFromBundle(bundle, key);
+	    }
+	    return null;
+	}
+
+	/**
+	 * Queries all the available locales in ICU and adds the names
+	 * of those which it accepts to result.  This is quite
+	 * time-consuming so we don't want to do it more than once if
+	 * we have to.  This is only called if we are visible.  
+	 */
+	protected void handleUpdateVisibleIDs(Set result) {
+	    Locale[] locales = ICULocaleData.getAvailableLocales(name);
+	    for (int i = 0; i < locales.length; ++i) {
+		Locale locale = locales[i];
+		if (acceptsLocale(locale)) {
+		    result.add(LocaleUtility.canonicalLocaleString(locale.toString()));
+		}
+	    }
+	}
+
+	/**
+	 * Return a localized name for the locale represented by id.
+	 */
+	protected String handleGetDisplayName(String id, Locale locale) {
+	    // use java's display name formatting for now
+	    return LocaleUtility.getLocaleFromName(id).getDisplayName(locale);
+	}
+
+	/**
+	 * We only accept the locale if there is a bundle for this exact locale and if
+	 * all the required resources are directly in this bundle (none is from an
+	 * inherited bundle);
+	 */
+	protected boolean acceptsLocale(Locale loc) {
+	    try {
+		ResourceBundle bundle = ICULocaleData.loadResourceBundle(name, loc); // single resource bundle lookup
+		if (requiredContents != null) {
+		    for (int i = 0; i < requiredContents.length; ++i) {
+			if (bundle.getObject(requiredContents[i]) == null) {
+			    return false;
+			}
+		    }
+		}
+		return true;
+	    }
+	    catch (Exception e) {
+	    }
+	    return false;
+	}
+
+	/**
+	 * Subclassers implement this to create their service object based on the bundle and key.
+	 * The default implementation just returns the bundle.
+	 */
+         protected Object createFromBundle(ResourceBundle bundle, Key key) {
+	     return bundle;
+         }
+    }
+
+    protected Key createKey(String id) {
+	Locale loc = Locale.getDefault();
+	if (loc != fallbackLocale) {
+	    synchronized (this) {
+		if (loc != fallbackLocale) {
+		    fallbackLocale = loc;
+		    fallbackLocaleName = LocaleUtility.canonicalLocaleString(loc.toString());
+		    clearServiceCache();
+		}
+	    }
+	}
+	    
+	return LocaleKey.createWithCanonicalFallback(id, fallbackLocaleName);
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUNotifier.java b/src/com/ibm/icu/impl/ICUNotifier.java
new file mode 100644
index 0000000..78ec8d8
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUNotifier.java
@@ -0,0 +1,177 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/ICUNotifier.java,v $
+ * $Date: 2002/08/13 23:40:52 $
+ * $Revision: 1.4 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.ArrayList;
+import java.util.EventListener;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * <p>Abstract implementation of a notification facility.  Clients add
+ * EventListeners with addListener and remove them with removeListener.
+ * Notifiers call notifyChanged when they wish to notify listeners.
+ * This queues the listener list on the notification thread, which
+ * eventually dequeues the list and calls notifyListener on each
+ * listener in the list.</p>
+ *
+ * <p>Subclasses override acceptsListener and notifyListener 
+ * to add type-safe notification.  AcceptsListener should return
+ * true if the listener is of the appropriate type; ICUNotifier
+ * itself will ensure the listener is non-null and that the
+ * identical listener is not already registered with the Notifier.
+ * NotifyListener should cast the listener to the appropriate 
+ * type and call the appropriate method on the listener.
+ */
+public abstract class ICUNotifier {
+    private final Object notifyLock = new Object();
+    private NotifyThread notifyThread;
+    private List listeners;
+
+    /**
+     * Add a listener to be notified when notifyChanged is called.
+     * The listener must not be null. AcceptsListener must return
+     * true for the listener.  Attempts to concurrently
+     * register the identical listener more than once will be
+     * silently ignored.  
+     */
+    public void addListener(EventListener l) {
+	if (l == null) {
+	    throw new NullPointerException();
+	}
+
+	if (acceptsListener(l)) {
+	    synchronized (notifyLock) {
+		if (listeners == null) {
+		    listeners = new ArrayList(5);
+		} else {
+		    // identity equality check
+		    Iterator iter = listeners.iterator();
+		    while (iter.hasNext()) {
+			if (iter.next() == l) {
+			    return;
+			}
+		    }
+		}
+
+		listeners.add(l);
+	    }
+	} else {
+	    throw new InternalError("Listener invalid for this notifier.");
+	}
+    }
+
+    /**
+     * Stop notifying this listener.  The listener must
+     * not be null.  Attemps to remove a listener that is
+     * not registered will be silently ignored.
+     */
+    public void removeListener(EventListener l) {
+	if (l == null) {
+	    throw new NullPointerException();
+	}
+	synchronized (notifyLock) {
+	    if (listeners != null) {
+		// identity equality check
+		Iterator iter = listeners.iterator();
+		while (iter.hasNext()) {
+		    if (iter.next() == l) {
+			iter.remove();
+			if (listeners.size() == 0) {
+			    listeners = null;
+			}
+			return;
+		    }
+		}
+	    }
+	}
+    }
+
+    /**
+     * Queue a notification on the notification thread for the current
+     * listeners.  When the thread unqueues the notification, notifyListener
+     * is called on each listener from the notification thread.
+     */
+    public void notifyChanged() {
+	if (listeners != null) {
+	    synchronized (notifyLock) {
+		if (listeners != null) {
+		    if (notifyThread == null) {
+			notifyThread = new NotifyThread(this);
+			notifyThread.setDaemon(true);
+			notifyThread.start();
+		    }
+		    notifyThread.queue(listeners.toArray());
+		}
+	    }
+	}
+    }
+
+    /**
+     * The notification thread.
+     */
+    private static class NotifyThread extends Thread {
+	private final ICUNotifier notifier;
+	private final List queue = new LinkedList();
+
+	NotifyThread(ICUNotifier notifier) {
+	    this.notifier = notifier;
+	}
+
+	/**
+	 * Queue the notification on the thread.
+	 */
+	public void queue(Object[] list) {
+	    synchronized (this) {
+		queue.add(list);
+		notify();
+	    }
+	}
+
+	/**
+	 * Wait for a notification to be queued, then notify all
+	 * listeners listed in the notification.
+	 */
+	public void run() {
+	    Object[] list;
+	    while (true) {
+		try {
+		    synchronized (this) {
+			while (queue.isEmpty()) {
+			    wait();
+			}
+			list = (Object[])queue.remove(0);
+		    }
+
+		    for (int i = 0; i < list.length; ++i) {
+			notifier.notifyListener((EventListener)list[i]);
+		    }
+		}
+		catch (InterruptedException e) {
+		}
+	    }
+	}
+    }
+
+    /**
+     * Subclasses implement this to return true if the listener is
+     * of the appropriate type.
+     */
+    protected abstract boolean acceptsListener(EventListener l);
+
+    /**
+     * Subclasses implement this to notify the listener.
+     */
+    protected abstract void notifyListener(EventListener l);
+}
diff --git a/src/com/ibm/icu/impl/ICURWLock.java b/src/com/ibm/icu/impl/ICURWLock.java
new file mode 100644
index 0000000..114e25e
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICURWLock.java
@@ -0,0 +1,304 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/ICURWLock.java,v $
+ * $Date: 2002/08/13 23:40:52 $
+ * $Revision: 1.4 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+// See Allan Holub's 1999 column in JavaWorld, and Doug Lea's code for RWLocks with writer preference.
+
+import java.util.LinkedList;
+
+/**
+ * <p>A simple Reader/Writer lock.  This assumes that there will
+ * be little writing contention.  It also doesn't allow 
+ * active readers to acquire and release a write lock, or
+ * deal with priority inversion issues.</p>
+ *
+ * <p>Access to the lock should be enclosed in a try/finally block
+ * in order to ensure that the lock is always released in case of
+ * exceptions:<br><pre>
+ * try {
+ *     lock.acquireRead();
+ *     // use service protected by the lock
+ * }
+ * finally {
+ *     lock.releaseRead();
+ * }
+ * </pre></p>
+ *
+ * <p>The lock provides utility methods getStats and clearStats
+ * to return statistics on the use of the lock.</p>
+ */
+public class ICURWLock {
+    private Object writeLock = new Object();
+    private Object readLock = new Object();
+    private int wwc; // waiting writers
+    private int rc; // active readers, -1 if there's an active writer
+    private int wrc; // waiting readers
+
+    private Stats stats = new Stats(); // maybe don't init to start...
+
+    /**
+     * Internal class used to gather statistics on the RWLock.
+     */
+    public final static class Stats {
+	/**
+	 * Number of times read access granted (read count).
+	 */
+	public int _rc;
+
+	/**
+	 * Number of times concurrent read access granted (multiple read count).
+	 */
+	public int _mrc;
+
+	/**
+	 * Number of times blocked for read (waiting reader count).
+	 */
+	public int _wrc; // wait for read
+
+	/**
+	 * Number of times write access granted (writer count).
+	 */
+	public int _wc;
+
+	/**
+	 * Number of times blocked for write (waiting writer count).
+	 */
+	public int _wwc;
+
+	private Stats() {
+	}
+
+	private Stats(int rc, int mrc, int wrc, int wc, int wwc) {
+	    this._rc = rc;
+	    this._mrc = mrc;
+	    this._wrc = wrc;
+	    this._wc = wc;
+	    this._wwc = wwc;
+	}
+
+	private Stats(Stats rhs) {
+	    this(rhs._rc, rhs._mrc, rhs._wrc, rhs._wc, rhs._wwc);
+	}
+
+	/**
+	 * Return a string listing all the stats.
+	 */
+	public String toString() {
+	    return " rc: " + _rc +
+		" mrc: " + _mrc + 
+		" wrc: " + _wrc +
+		" wc: " + _wc +
+		" wwc: " + _wwc;
+	}
+    }
+
+    /**
+     * Reset the stats.  Returns existing stats, if any.
+     */
+    public synchronized Stats resetStats() {
+	Stats result = stats;
+	stats = new Stats();
+	return result;
+    }
+
+    /**
+     * Clear the stats (stop collecting stats).  Returns existing stats, if any.
+     */
+    public synchronized Stats clearStats() {
+	Stats result = stats;
+	stats = null;
+	return result;
+    }
+    
+    /**
+     * Return a snapshot of the current stats.  This does not reset the stats.
+     */
+    public synchronized Stats getStats() {
+	return stats == null ? null : new Stats(stats);
+    }
+
+    // utilities
+
+    private synchronized boolean gotRead() {
+	++rc;
+	if (stats != null) {
+	    ++stats._rc;
+	    if (rc > 1) ++stats._mrc;
+	}
+	return true;
+    }
+
+    private synchronized boolean getRead() {
+	if (rc >= 0 && wwc == 0) {
+	    return gotRead();
+	}
+	++wrc;
+	return false;
+    }
+
+    private synchronized boolean retryRead() {
+	if (stats != null) ++stats._wrc;
+	if (rc >= 0 && wwc == 0) {
+	    --wrc;
+	    return gotRead();
+	}
+	return false;
+    }
+
+    private synchronized boolean finishRead() {
+	if (rc > 0) {
+	    return (0 == --rc && wwc > 0);
+	}
+	throw new InternalError("no current reader to release");
+    }
+	
+    private synchronized boolean gotWrite() {
+	rc = -1;
+	if (stats != null) {
+	    ++stats._wc;
+	}
+	return true;
+    }
+
+    private synchronized boolean getWrite() {
+	if (rc == 0) {
+	    return gotWrite();
+	}
+	++wwc;
+	return false;
+    }
+
+    private synchronized boolean retryWrite() {
+	if (stats != null) ++stats._wwc;
+	if (rc == 0) {
+	    --wwc;
+	    return gotWrite();
+	}
+	return false;
+    }
+
+    private static final int NOTIFY_NONE = 0;
+    private static final int NOTIFY_WRITERS = 1;
+    private static final int NOTIFY_READERS = 2;
+
+    private synchronized int finishWrite() {
+	if (rc < 0) {
+	    rc = 0;
+	    if (wwc > 0) {
+		return NOTIFY_WRITERS;
+	    } else if (wrc > 0) {
+		return NOTIFY_READERS;
+	    } else {
+		return NOTIFY_NONE;
+	    }
+	}
+	throw new InternalError("no current writer to release");
+    }
+	
+    /**
+     * <p>Acquire a read lock, blocking until a read lock is
+     * available.  Multiple readers can concurrently hold the read
+     * lock.</p>
+     *
+     * <p>If there's a writer, or a waiting writer, increment the
+     * waiting reader count and block on this.  Otherwise
+     * increment the active reader count and return.  Caller must call
+     * releaseRead when done (for example, in a finally block).</p> 
+     */
+    public void acquireRead() {
+	if (!getRead()) {
+	    for (;;) {
+		try {
+		    synchronized (readLock) {
+			readLock.wait();
+		    }
+		    if (retryRead()) {
+			return;
+		    }
+		}
+		catch (InterruptedException e) {
+		}
+	    }
+	}
+    }
+
+    /**
+     * <p>Release a read lock and return.  An error will be thrown
+     * if a read lock is not currently held.</p>
+     *
+     * <p>If this is the last active reader, notify the oldest
+     * waiting writer.  Call when finished with work
+     * controlled by acquireRead.</p>
+     */
+    public void releaseRead() {
+	if (finishRead()) {
+	    synchronized (writeLock) {
+		writeLock.notify();
+	    }
+	}
+    }
+
+    /**
+     * <p>Acquire the write lock, blocking until the write lock is
+     * available.  Only one writer can acquire the write lock, and
+     * when held, no readers can acquire the read lock.</p>
+     *
+     * <p>If there are no readers and no waiting writers, mark as
+     * having an active writer and return.  Otherwise, add a lock to the
+     * end of the waiting writer list, and block on it.  Caller
+     * must call releaseWrite when done (for example, in a finally
+     * block).<p> 
+     */
+    public void acquireWrite() {
+	if (!getWrite()) {
+	    for (;;) {
+		try {
+		    synchronized (writeLock) {
+			writeLock.wait();
+		    }
+		    if (retryWrite()) {
+			return;
+		    }
+		}
+		catch (InterruptedException e) {
+		}
+	    }
+	}
+    }
+
+    /**
+     * <p>Release the write lock and return.  An error will be thrown
+     * if the write lock is not currently held.</p>
+     *
+     * <p>If there are waiting readers, make them all active and
+     * notify all of them.  Otherwise, notify the oldest waiting
+     * writer, if any.  Call when finished with work controlled by
+     * acquireWrite.</p> 
+     */
+    public void releaseWrite() {
+	switch (finishWrite()) {
+	case NOTIFY_WRITERS:
+	    synchronized (writeLock) {
+		writeLock.notify();
+	    }
+	    break;
+	case NOTIFY_READERS:
+	    synchronized (readLock) {
+		readLock.notifyAll();
+	    }
+	    break;
+	case NOTIFY_NONE:
+	    break;
+	}
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUService.java b/src/com/ibm/icu/impl/ICUService.java
new file mode 100644
index 0000000..d49d1fb
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUService.java
@@ -0,0 +1,694 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/ICUService.java,v $
+ * $Date: 2002/08/13 23:40:52 $
+ * $Revision: 1.7 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.lang.ref.SoftReference;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.EventListener;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.TreeMap;
+
+/**
+ * <p>A Service provides access to service objects that implement a
+ * particular service, e.g. transliterators.  Users provide a String
+ * id (for example, a locale string) to the service, and get back an
+ * object for that id.  Service objects can be any kind of object.
+ * The service object is cached and returned for later queries, so
+ * generally it should not be mutable, or the caller should clone the
+ * object before modifying it.</p>
+ *
+ * <p>Services 'canonicalize' the query id and use the canonical id
+ * to query for the service.  The service also defines a mechanism
+ * to 'fallback' the id multiple times.  Clients can optionally
+ * request the actual id that was matched by a query when they
+ * use an id to retrieve a service object.</p>
+ *
+ * <p>Service objects are instantiated by Factory objects registered with 
+ * the service.  The service queries each Factory in turn, from most recently
+ * registered to earliest registered, until one returns a service object.
+ * If none responds with a service object, a fallback id is generated,
+ * and the process repeats until a service object is returned or until
+ * the id has no further fallbacks.</p>
+ *
+ * <p>Factories can be dynamically registered and unregistered with the
+ * service.  When registered, a Factory is installed at the head of
+ * the factory list, and so gets 'first crack' at any keys or fallback
+ * keys.  When unregistered, it is removed from the service and can no
+ * longer be located through it.  Service objects generated by this
+ * factory and held by the client are unaffected.</p>
+ *
+ * <p>Internally, ICUService uses Keys to query factories and perform
+ * fallback.  The Key defines the canonical form of the id, and
+ * implements the fallback strategy.  Custom Keys can be defined that
+ * parse complex IDs into components that Factories can more easily
+ * use.  The Key can cache the results of this parsing to save
+ * repeated effort.</p>
+ *
+ * <p>ICUService implements ICUNotifier, so that clients can register
+ * to receive notification when factories are added or removed from 
+ * the service.  ICUService provides a default EventListener subinterface,
+ * ServiceListener, which can be registered with the service.  When
+ * the service changes, the ServiceListener's serviceChanged method
+ * is called, with the service as the only argument.</p>
+ *
+ * <p>The ICUService API is both rich and generic, and it is expected
+ * that most implementations will statically 'wrap' ICUService to
+ * present a more appropriate API-- for example, to declare the type
+ * of the objects returned from get, to limit the factories that can
+ * be registered with the service, or to define their own listener
+ * interface with a custom callback method.  They might also customize
+ * ICUService by overriding it, for example, to customize the Key and
+ * fallback strategy.  ICULocaleService is a customized service that
+ * uses Locale names as ids and uses Keys that implement the standard
+ * resource bundle fallback strategy.<p>
+ */
+public class ICUService extends ICUNotifier {
+    /**
+     * Access to factories is protected by a read-write lock.  This is
+     * to allow multiple threads to read concurrently, but keep
+     * changes to the factory list atomic with respect to all readers.  
+     */
+    private final ICURWLock factoryLock = new ICURWLock();
+
+    /**
+     * All the factories registered with this service.
+     */
+    private final List factories = new ArrayList();
+
+    /**
+     * Keys define how ids are canonicalized, and determine the
+     * fallback strategy used when querying the factories.  The default
+     * key just takes as its canonicalID the id assigned to it when it
+     * is constructed, and has no fallbacks.
+     */
+    public static class Key {
+        private final String id;
+
+	/**
+	 * Construct a key from an id.
+	 */
+        public Key(String id) {
+            this.id = id;
+        }
+
+        /**
+         * Return the original ID.
+         */
+        public final String id() {
+            return id;
+        }
+
+        /**
+         * Return the canonical version of the original ID.  This implementation
+	 * returns the original ID unchanged.
+         */
+        public String canonicalID() {
+            return id;
+        }
+
+        /**
+         * Return the (canonical) current ID.  This implementation returns the
+	 * canonical ID.
+         */
+        public String currentID() {
+            return canonicalID();
+        }
+
+        /**
+         * If the key has a fallback, modify the key and return true,
+         * otherwise return false.  The current ID will change if there
+	 * is a fallback.  No currentIDs should be repeated, and fallback
+	 * must eventually return false.  This implmentation has no fallbacks
+	 * and always returns false.
+	 */
+        public boolean fallback() {
+            return false;
+        }
+    }
+
+    /**
+     * Factories generate the service objects maintained by the
+     * service.  A factory generates a service object from a key,
+     * updates id->factory mappings, and returns the display name for
+     * a supported id.  
+     */
+    public static interface Factory {
+        /**
+         * Create a service object from the key, if this factory
+         * supports the key.  Otherwise, return null.  
+	 */
+        public Object create(Key key);
+
+	/**
+	 * Add IDs understood by this factory to the result map, with
+	 * this factory as the value. If this factory hides IDs
+	 * currently in result, it should remove or reset the mappings
+	 * for those IDs.  
+	 */
+	public void updateVisibleIDs(Map result);
+
+	/**
+	 * Return the display name for this id in the provided locale.
+	 * If the id is not visible or not defined by the factory,
+	 * return null.  
+	 */
+	public String getDisplayName(String id, Locale locale);
+    }
+
+    /**
+     * A default implementation of factory.  This provides default
+     * implementations for subclasses, and implements a singleton
+     * factory that matches a single id and returns a single
+     * (possibly deferred-initialized) instance.  If visible is
+     * true, updates the map passed to updateVisibleIDs with a
+     * mapping from id to itself.
+     */
+    public static class SimpleFactory implements Factory {
+	protected Object instance;
+	protected String id;
+	protected boolean visible;
+
+	/**
+	 * Convenience constructor that calls SimpleFactory(Object, String, boolean)
+	 * with visible true.
+	 */
+	public SimpleFactory(Object instance, String id) {
+	    this(instance, id, true);
+	}
+
+	/**
+	 * Construct a simple factory that maps a single id to a single 
+	 * service instance.  If visible is true, the id will be visible.
+	 * Neither the instance nor the id can be null.
+	 */
+	public SimpleFactory(Object instance, String id, boolean visible) {
+	    if (instance == null || id == null) {
+		throw new IllegalArgumentException("Instance or id is null");
+	    }
+	    this.instance = instance;
+	    this.id = id;
+	    this.visible = visible;
+	}
+
+	/**
+	 * Return the service instance if id equals the key's currentID.
+	 */
+	public Object create(Key key) {
+	    if (id.equals(key.currentID())) {
+		return instance;
+	    }
+	    return null;
+	}
+
+	/**
+	 * If visible, adds a mapping from id -> this to the result.
+	 */
+	public void updateVisibleIDs(Map result) {
+	    if (visible) result.put(id, this);
+	}
+
+	/**
+	 * If id equals this.id, returns id regardless of locale, otherwise
+	 * returns null.
+	 */
+	public String getDisplayName(String id, Locale locale) {
+	    return (visible && id.equals(this.id)) ? id : null;
+	}
+    }
+
+    /**
+     * Convenience override for get(String, String[]).
+     */
+    public Object get(String id) {
+	return get(id, null);
+    }
+
+    /**
+     * <p>Given an id, return a service object, and, if actualIDReturn
+     * is not null, the actual id under which it was found in the
+     * first element of actualIDReturn.  If no service object matches
+     * this id, return null, and leave actualIDReturn unchanged.</p>
+     *
+     * <p>This tries each registered factory in order, and if none can
+     * generate a service object for the key, repeats the process with
+     * each fallback of the key until one returns a service object, or
+     * the key has no fallback.</p> 
+     */
+    public Object get(String id, String[] actualIDReturn) {
+	if (id == null) {
+	    throw new NullPointerException();
+	}
+	if (factories.size() == 0) {
+	    return null;
+	}
+	
+	CacheEntry result = null;
+	Key key = createKey(id);
+	if (key != null) {
+	    try {
+		// The factory list can't be modified until we're done, 
+		// otherwise we might update the cache with an invalid result.
+		// The cache has to stay in synch with the factory list.
+		factoryLock.acquireRead(); 
+
+		Map cache = null;
+		SoftReference cref = cacheref; // copy so we don't need to sync on this 
+		if (cref != null) {
+		    cache = (Map)cref.get();
+		}
+		if (cache == null) {
+		    // synchronized since additions and queries on the cache must be atomic
+		    // they can be interleaved, though
+		    cache = Collections.synchronizedMap(new HashMap());
+		    cref = new SoftReference(cache);
+		}
+
+		String currentID = null;
+		ArrayList cacheIDList = null;
+		boolean putInCache = false;
+	    outer:
+		do {
+		    currentID = key.currentID();
+
+		    result = (CacheEntry)cache.get(currentID);
+		    if (result != null) {
+			break outer;
+		    }
+
+		    // first test of cache failed, so we'll have to update
+		    // the cache if we eventually succeed.
+		    putInCache = true;
+
+		    Iterator fi = factories.iterator();
+		    while (fi.hasNext()) {
+			Object service = ((Factory)fi.next()).create(key);
+			if (service != null) {
+			    result = new CacheEntry(currentID, service);
+			    break outer;
+			}
+		    }
+
+		    // prepare to load the cache with all additional ids that 
+		    // will resolve to result, assuming we'll succeed.  We
+		    // don't want to keep querying on an id that's going to
+		    // fallback to the one that succeeded, we want to hit the
+		    // cache the first time next goaround.
+		    if (cacheIDList == null) {
+			cacheIDList = new ArrayList(5);
+		    }
+		    cacheIDList.add(currentID);
+
+		} while (key.fallback());
+
+		if (result != null) {
+		    if (putInCache) {
+			cache.put(result.actualID, result);
+			if (cacheIDList != null) {
+			    Iterator iter = cacheIDList.iterator();
+			    while (iter.hasNext()) {
+				cache.put((String)iter.next(), result);
+			    }
+			}
+			// Atomic update.  We held the read lock all this time
+			// so we know our cache is consistent with the factory list.
+			// We might stomp over a cache that some other thread 
+			// rebuilt, but that's the breaks.  They're both good.
+			cacheref = cref;
+		    }
+
+		    if (actualIDReturn != null) {
+			actualIDReturn[0] = result.actualID;
+		    }
+
+		    return result.service;
+		}
+	    }
+	    finally {
+		factoryLock.releaseRead();
+	    }
+	}
+
+	return null;
+    }
+    private SoftReference cacheref;
+    
+    // Record the actual id for this service in the cache, so we can return it
+    // even if we succeed later with a different id.
+    private static final class CacheEntry {
+	String actualID;
+	Object service;
+	CacheEntry(String actualID, Object service) {
+	    this.actualID = actualID;
+	    this.service = service;
+	}
+    }
+
+    /**
+     * Return a snapshot of the visible IDs for this service.  This
+     * set will not change as Factories are added or removed, but the
+     * supported ids will, so there is no guarantee that all and only
+     * the ids in the returned set are visible and supported by the
+     * service in subsequent calls.
+     */
+    public Set getVisibleIDs() {
+	return getVisibleIDMap().keySet();
+    }
+
+    /**
+     * Return a map from visible ids to factories.  
+     */
+    private Map getVisibleIDMap() {
+        Map idcache = null;
+	SoftReference ref = idref;
+        if (ref != null) {
+            idcache = (Map)ref.get();
+        }
+        while (idcache == null) {
+	    synchronized (this) { // or idref-only lock?
+		if (ref == idref || idref == null) {
+		    // no other thread updated idref before we got the lock, so
+		    // grab the factory list and update it ourselves
+		    try {
+			factoryLock.acquireRead();
+
+			idcache = new TreeMap(String.CASE_INSENSITIVE_ORDER);
+
+			ListIterator lIter = factories.listIterator(factories.size());
+			while (lIter.hasPrevious()) {
+			    Factory f = (Factory)lIter.previous();
+			    f.updateVisibleIDs(idcache);
+			}
+			idcache = Collections.unmodifiableMap(idcache);
+			idref = new SoftReference(idcache);
+		    }
+		    finally {
+			factoryLock.releaseRead();
+		    }
+		} else {
+		    // another thread updated idref, but gc may have stepped
+		    // in and undone its work, leaving idcache null.  If so,
+		    // retry.
+		    ref = idref;
+		    idcache = (Map)ref.get();
+		}
+	    }
+        }
+
+        return idcache;
+    }
+    private SoftReference idref;
+
+    /**
+     * Convenience override for getDisplayName(String, Locale) that
+     * uses the current default locale.
+     */
+    public String getDisplayName(String id) {
+	return getDisplayName(id, Locale.getDefault());
+    }
+
+    /**
+     * Given a visible id, return the display name in the requested locale.
+     * If there is no directly supported id corresponding to this id, return
+     * null.
+     */
+    public String getDisplayName(String id, Locale locale) {
+	Map m = getVisibleIDMap();
+	Factory f = (Factory)m.get(id);
+	return f != null ? f.getDisplayName(id, locale) : null;
+    }
+
+    /**
+     * Convenience override of getDisplayNames(Locale) that uses the
+     * current default Locale.
+     */
+    public Map getDisplayNames() {
+	return getDisplayNames(Locale.getDefault());
+    }
+
+    /**
+     * Return a snapshot of the mapping from display names to visible
+     * IDs for this service.  This set will not change as factories
+     * are added or removed, but the supported ids will, so there is
+     * no guarantee that all and only the ids in the returned map will
+     * be visible and supported by the service in subsequent calls,
+     * nor is there any guarantee that the current display names match
+     * those in the set.
+     */
+    public Map getDisplayNames(Locale locale) {
+        Map dncache = null;
+	LocaleRef ref = dnref;
+        if (ref != null) {
+            dncache = ref.get(locale);
+        }
+        while (dncache == null) {
+	    synchronized (this) {
+		if (ref == dnref || dnref == null) {
+		    dncache = new TreeMap(String.CASE_INSENSITIVE_ORDER);
+		    //dncache = new TreeMap(/* locale-specific collator */);
+		    
+		    Map m = getVisibleIDMap();
+		    Iterator ei = m.entrySet().iterator();
+		    while (ei.hasNext()) {
+			Entry e = (Entry)ei.next();
+			String id = (String)e.getKey();
+			Factory f = (Factory)e.getValue();
+			dncache.put(f.getDisplayName(id, locale), id);
+		    }
+
+		    dncache = Collections.unmodifiableMap(dncache);
+		    dnref = new LocaleRef(dncache, locale);
+		} else {
+		    ref = dnref;
+		    dncache = ref.get(locale);
+		}
+	    }
+        }
+
+        return dncache;
+    }
+    // we define a class so we get atomic simultaneous access to both the 
+    // locale and corresponding map
+    private static class LocaleRef {
+	Locale locale;
+	SoftReference ref;
+
+	LocaleRef(Map dnCache, Locale locale) {
+	    this.locale = locale;
+	    this.ref = new SoftReference(dnCache);
+	}
+
+	Map get(Locale locale) {
+	    if (this.locale.equals(locale)) {
+		return (Map)ref.get();
+	    }
+	    return null;
+	}
+    }
+    private LocaleRef dnref;
+
+    /**
+     * Return a snapshot of the currently registered factories.  There
+     * is no guarantee that the list will still match the current
+     * factory list of the service subsequent to this call.  
+     */
+    public final List factories() {
+	try {
+	    factoryLock.acquireRead();
+	    return new ArrayList(factories);
+	}
+	finally{
+	    factoryLock.releaseRead();
+	}
+    }
+
+    /**
+     * A convenience override of registerObject(Object, String, boolean)
+     * that defaults visible to true.
+     */
+    public Factory registerObject(Object obj, String id) {
+        return registerObject(obj, id, true);
+    }
+
+    /**
+     * Register an object with the provided id.  The id will be 
+     * canonicalized.  The canonicalized ID will be returned by
+     * getVisibleIDs if visible is true.
+     */
+    public Factory registerObject(Object obj, String id, boolean visible) {
+	id = createKey(id).canonicalID();
+	return registerFactory(new SimpleFactory(obj, id, visible));
+    }
+    
+    /**
+     * Register a Factory.  Returns the factory if the service accepts
+     * the factory, otherwise returns null.  The default implementation
+     * accepts all factories.
+     */
+    public final Factory registerFactory(Factory factory) {
+        if (factory == null) {
+            throw new NullPointerException();
+        }
+	try {
+	    factoryLock.acquireWrite();
+	    factories.add(0, factory);
+	    clearCaches();
+	}
+	finally {
+	    factoryLock.releaseWrite();
+	}
+	notifyChanged();
+	return factory;
+    }
+
+    /**
+     * Unregister a factory.  The first matching registered factory will
+     * be removed from the list.  Returns true if a matching factory was
+     * removed.
+     */
+    public final boolean unregisterFactory(Factory factory) {
+	if (factory == null) {
+	    throw new NullPointerException();
+	}
+
+	boolean result = false;
+	try {
+	    factoryLock.acquireWrite();
+	    if (factories.remove(factory)) {
+		result = true;
+		clearCaches();
+	    }
+	}
+	finally {
+	    factoryLock.releaseWrite();
+	}
+
+	if (result) {
+	    notifyChanged();
+	}
+	return result;
+    }
+
+    /**
+     * Reset the service to the default factories.  The factory
+     * lock is acquired and then reInitializeFactories is called.
+     */
+    public final void reset() {
+	try {
+	    factoryLock.acquireWrite();
+	    reInitializeFactories();
+	    clearCaches();
+	}
+	finally {
+	    factoryLock.releaseWrite();
+	}
+	notifyChanged();
+    }
+
+    /**
+     * Reinitialize the factory list to its default state.  By default
+     * this clears the list.  Subclasses can override to provide other
+     * default initialization of the factory list.  Subclasses must
+     * not call this method directly, as it must only be called while
+     * holding write access to the factory list.  
+     */
+    protected void reInitializeFactories() {
+	factories.clear();
+    }
+
+    /**
+     * Create a key from an id.  This creates a Key instance.
+     * Subclasses can override to define more useful keys appropriate
+     * to the factories they accept.
+     */
+    protected Key createKey(String id) {
+        return new Key(id);
+    }
+
+    /**
+     * Clear caches maintained by this service.  Subclasses can
+     * override if they implement additional that need to be cleared
+     * when the service changes. Subclasses should generally not call
+     * this method directly, as it must only be called while
+     * synchronized on this.
+     */
+    protected void clearCaches() {
+	// we don't synchronize on these because methods that use them
+	// copy before use, and check for changes if they modify the
+	// caches.
+	cacheref = null;
+	idref = null;
+	dnref = null;
+    }
+
+    /**
+     * Clears only the service cache.
+     * This can be called by subclasses when a change affects the service
+     * cache but not the id caches, e.g., when the default locale changes
+     * the resolution of ids changes, but not the visible ids themselves.
+     */
+    protected void clearServiceCache() {
+	cacheref = null;
+    }
+
+    /**
+     * ServiceListener is the listener that ICUService provides by default.
+     * ICUService will notifiy this listener when factories are added to
+     * or removed from the service.  Subclasses can provide
+     * different listener interfaces that extend EventListener, and modify
+     * acceptsListener and notifyListener as appropriate.
+     */
+    public static interface ServiceListener extends EventListener {
+	public void serviceChanged(ICUService service);
+    }
+
+    /**
+     * Return true if the listener is accepted; by default this
+     * requires a ServiceListener.  Subclasses can override to accept
+     * different listeners.  
+     */
+    protected boolean acceptsListener(EventListener l) {
+	return l instanceof ServiceListener;
+    }
+
+    /**
+     * Notify the listener, which by default is a ServiceListener.
+     * Subclasses can override to use a different listener.  
+     */
+    protected void notifyListener(EventListener l) {
+	((ServiceListener)l).serviceChanged(this);
+    }
+
+    /**
+     * Return a string describing the statistics for this service.
+     * This also resets the statistics. Used for debugging purposes.
+     */
+    public String stats() {
+	ICURWLock.Stats stats = factoryLock.resetStats();
+	if (stats != null) {
+	    return stats.toString();
+	}
+	return "no stats";
+    }
+}
+
diff --git a/src/com/ibm/icu/impl/IntTrie.java b/src/com/ibm/icu/impl/IntTrie.java
new file mode 100755
index 0000000..e7d85f99
--- /dev/null
+++ b/src/com/ibm/icu/impl/IntTrie.java
@@ -0,0 +1,258 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/IntTrie.java,v $
+* $Date: 2002/06/22 00:02:41 $
+* $Revision: 1.6 $
+*
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * Trie implementation which stores data in int, 32 bits.
+ * @author synwee
+ * @see com.ibm.icu.util.Trie
+ * @since release 2.1, Jan 01 2002
+ */
+public class IntTrie extends Trie
+{
+    // public constructors ---------------------------------------------
+
+    /**
+    * <p>Creates a new Trie with the settings for the trie data.</p>
+    * <p>Unserialize the 32-bit-aligned input stream and use the data for the 
+    * trie.</p>
+    * @param inputStream file input stream to a ICU data file, containing 
+    *                    the trie
+    * @param dataManipulate, object which provides methods to parse the char 
+    *                        data
+    * @exception IOException thrown when data reading fails
+    * @draft 2.1
+    */
+    public IntTrie(InputStream inputStream, DataManipulate datamanipulate)
+                                                    throws IOException
+    {
+        super(inputStream, datamanipulate);
+        if (!isIntTrie()) {
+            throw new IllegalArgumentException(
+                               "Data given does not belong to a int trie.");
+        }
+    }
+
+    // public methods --------------------------------------------------
+
+    /**
+    * Gets the value associated with the codepoint.
+    * If no value is associated with the codepoint, a default value will be
+    * returned.
+    * @param ch codepoint
+    * @return offset to data
+    * @draft 2.1
+    */
+    public final int getCodePointValue(int ch)
+    {
+        int offset = getCodePointOffset(ch);
+        if (offset > 0) {
+            return m_data_[offset];
+        }
+        return m_initialValue_;
+    }
+
+    /**
+    * Gets the value to the data which this lead surrogate character points
+    * to.
+    * Returned data may contain folding offset information for the next
+    * trailing surrogate character.
+    * This method does not guarantee correct results for trail surrogates.
+    * @param ch lead surrogate character
+    * @return data value
+    * @draft 2.1
+    */
+    public final int getLeadValue(char ch)
+    {
+        return m_data_[getLeadOffset(ch)];
+    }
+
+    /**
+    * Get the value associated with the BMP code point.
+    * Lead surrogate code points are treated as normal code points, with
+    * unfolded values that may differ from getLeadValue() results.
+    * @param ch the input BMP code point
+    * @return trie data value associated with the BMP codepoint
+    * @draft 2.1
+    */
+    public final int getBMPValue(char ch)
+    {
+        return m_data_[getBMPOffset(ch)];
+    }
+
+    /**
+    * Get the value associated with a pair of surrogates.
+    * @param lead a lead surrogate
+    * @param trail a trail surrogate
+    * @param trie data value associated with the surrogate characters
+    * @draft 2.1
+    */
+    public final int getSurrogateValue(char lead, char trail)
+    {
+        if (!UTF16.isLeadSurrogate(lead) || !UTF16.isTrailSurrogate(trail)) {
+            throw new IllegalArgumentException(
+                "Argument characters do not form a supplementary character");
+        }
+        // get fold position for the next trail surrogate
+        int offset = getSurrogateOffset(lead, trail);
+
+        // get the real data from the folded lead/trail units
+        if (offset > 0) {
+            return m_data_[offset];
+        }
+
+        // return m_initialValue_ if there is an error
+        return m_initialValue_;
+    }
+
+    /**
+    * Get a value from a folding offset (from the value of a lead surrogate)
+    * and a trail surrogate.
+    * @param leadvalue the value of a lead surrogate that contains the
+    *        folding offset
+    * @param trail surrogate
+    * @return trie data value associated with the trail character
+    * @draft 2.1
+    */
+    public final int getTrailValue(int leadvalue, char trail)
+    {
+        if (m_dataManipulate_ == null) {
+            throw new NullPointerException(
+                             "The field DataManipulate in this Trie is null");
+        }
+        int offset = m_dataManipulate_.getFoldingOffset(leadvalue);
+        if (offset > 0) {
+	        return m_data_[getRawOffset(offset,
+ 	                                    (char)(trail & SURROGATE_MASK_))];
+        }
+        return m_initialValue_;
+    }
+    
+	/**
+     * <p>Gets the latin 1 fast path value.</p>
+     * <p>Note this only works if latin 1 characters have their own linear 
+     * array.</p>
+     * @param ch latin 1 characters
+     * @return value associated with latin character
+     */
+    public final int getLatin1LinearValue(char ch) 
+    {
+    	return m_data_[INDEX_STAGE_3_MASK_ + 1 + ch];
+    }
+
+    // protected methods -----------------------------------------------
+
+    /**
+    * <p>Parses the input stream and stores its trie content into a index and
+    * data array</p>
+    * @param inputStream data input stream containing trie data
+    * @exception IOException thrown when data reading fails
+    */
+    protected final void unserialize(InputStream inputStream) 
+                                                    throws IOException
+    {
+        super.unserialize(inputStream);
+        // one used for initial value
+        m_data_               = new int[m_dataLength_];
+        DataInputStream input = new DataInputStream(inputStream);
+        for (int i = 0; i < m_dataLength_; i ++) {
+            m_data_[i] = input.readInt();
+        }
+        m_initialValue_ = m_data_[0];
+    }
+    
+    /**
+    * Gets the offset to the data which the surrogate pair points to.
+    * @param lead lead surrogate
+    * @param trail trailing surrogate
+    * @return offset to data
+    * @draft 2.1
+    */
+    protected final int getSurrogateOffset(char lead, char trail)
+    {
+        if (m_dataManipulate_ == null) {
+            throw new NullPointerException(
+                             "The field DataManipulate in this Trie is null");
+        }
+        // get fold position for the next trail surrogate
+        int offset = m_dataManipulate_.getFoldingOffset(getLeadValue(lead));
+
+        // get the real data from the folded lead/trail units
+        if (offset > 0) {
+            return getRawOffset(offset, (char)(trail & SURROGATE_MASK_));
+        }
+
+        // return -1 if there is an error, in this case we return the default
+        // value: m_initialValue_
+        return -1;
+    }
+    
+    /**
+    * Gets the value at the argument index.
+    * For use internally in com.ibm.icu.util.TrieEnumeration.
+    * @param index value at index will be retrieved
+    * @return 32 bit value
+    * @see com.ibm.icu.util.TrieEnumeration
+    * @draft 2.1
+    */
+    protected final int getValue(int index)
+    {
+      return m_data_[index];
+    }
+    
+    /**
+    * Gets the default initial value
+    * @return 32 bit value 
+    * @draft 2.1
+    */
+    protected final int getInitialValue()
+    {
+        return m_initialValue_;
+    }
+
+    // package private methods -----------------------------------------
+    
+    /**
+     * Internal constructor for builder use
+     * @param index the index array to be slotted into this trie
+     * @param data the data array to be slotted into this trie
+     * @param initialvalue the initial value for this trie
+     * @param options trie options to use
+     * @param datamanipulate folding implementation
+     */
+    IntTrie(char index[], int data[], int initialvalue, int options,
+            DataManipulate datamanipulate)
+    {
+        super(index, options, datamanipulate);
+        m_index_ = index;
+        m_data_ = data;
+        m_initialValue_ = initialvalue;
+    }
+    
+    // private data members --------------------------------------------
+
+    /**
+    * Default value
+    */
+    private int m_initialValue_;
+    /**
+    * Array of char data
+    */
+    private int m_data_[];
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/IntTrieBuilder.java b/src/com/ibm/icu/impl/IntTrieBuilder.java
new file mode 100644
index 0000000..aaa8c52
--- /dev/null
+++ b/src/com/ibm/icu/impl/IntTrieBuilder.java
@@ -0,0 +1,453 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2000, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/IntTrieBuilder.java,v $ 
+* $Date: 2002/07/12 22:02:06 $ 
+* $Revision: 1.1 $
+*
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.lang.UCharacter;
+import java.util.Arrays;
+
+/**
+ * Builder lass to manipulate and generate a trie.
+ * This is useful for ICU data in primitive types.
+ * Provides a compact way to store information that is indexed by Unicode 
+ * values, such as character properties, types, keyboard values, etc. This is 
+ * very useful when you have a block of Unicode data that contains significant 
+ * values while the rest of the Unicode data is unused in the application or 
+ * when you have a lot of redundance, such as where all 21,000 Han ideographs 
+ * have the same value.  However, lookup is much faster than a hash table.
+ * A trie of any primitive data type serves two purposes:
+ * <UL type = round>
+ *     <LI>Fast access of the indexed values.
+ *     <LI>Smaller memory footprint.
+ * </UL>
+ * This is a direct port from the ICU4C version
+ * @version            $Revision: 1.1 $
+ * @author             Syn Wee Quek
+ */
+public class IntTrieBuilder extends TrieBuilder
+{
+	// public constructor ----------------------------------------------
+		
+	/**
+	 * Copy constructor
+	 */
+	public IntTrieBuilder(IntTrieBuilder table)
+    {
+    	super(table);
+		m_data_ = new int[m_dataCapacity_];
+        System.arraycopy(table.m_data_, 0, m_data_, 0, m_dataLength_);
+        m_initialValue_ = table.m_initialValue_;
+    }
+    
+    /**
+     * Constructs a build table
+     * @param aliasdata data to be filled into table
+     * @param maxdatalength maximum data length allowed in table
+     * @param initialvalue inital data value
+     * @param latin1linear is latin 1 to be linear
+     * @return updated table
+     */
+    public IntTrieBuilder(int aliasdata[], int maxdatalength, 
+                          int initialvalue, boolean latin1linear) 
+    {
+    	super();
+    	if (maxdatalength < DATA_BLOCK_LENGTH_ || (latin1linear 
+	                                               && maxdatalength < 1024)) {
+	        throw new IllegalArgumentException(
+	                                   "Argument maxdatalength is too small");
+	    }
+	    
+	    if (aliasdata != null) {
+	        m_data_ = aliasdata;
+	    } 
+	    else {
+	        m_data_ = new int[maxdatalength];
+	    }
+	
+	    // preallocate and reset the first data block (block index 0)
+	    int j = DATA_BLOCK_LENGTH_;
+	
+	    if (latin1linear) {
+	        // preallocate and reset the first block (number 0) and Latin-1 
+	        // (U+0000..U+00ff) after that made sure above that 
+	        // maxDataLength >= 1024
+	        // set indexes to point to consecutive data blocks
+	        int i = 0;
+	        do {
+	            // do this at least for trie->index[0] even if that block is 
+	            // only partly used for Latin-1
+	            m_index_[i ++] = j;
+	            j += DATA_BLOCK_LENGTH_;
+	        } while (i < (256 >> SHIFT_));
+	    }
+	
+        m_dataLength_ = j;
+	    // reset the initially allocated blocks to the initial value
+        Arrays.fill(m_data_, 0, m_dataLength_, initialvalue);
+	    m_initialValue_ = initialvalue;
+	    m_dataCapacity_ = maxdatalength;
+	    m_isLatin1Linear_ = latin1linear;
+	    m_isCompacted_ = false;
+	}
+
+	// public methods -------------------------------------------------------
+	
+    /**
+     * Gets a 32 bit data from the table data
+     * @param ch codepoint which data is to be retrieved
+     * @return the 32 bit data
+     */
+    public int getValue(int ch) 
+    {
+        // valid, uncompacted trie and valid c?
+        if (m_isCompacted_ || ch > UCharacter.MAX_VALUE || ch < 0) {
+            return 0;
+        }
+    
+        int block = m_index_[ch >> SHIFT_];
+        return m_data_[Math.abs(block) + (ch & MASK_)];
+    }
+    
+    /**
+     * Sets a 32 bit data in the table data
+     * @param ch codepoint which data is to be set
+     * @param value to set
+     * @return true if the set is successful, otherwise 
+     *              if the table has been compacted return false
+     */
+    public boolean setValue(int ch, int value) 
+    {
+        // valid, uncompacted trie and valid c? 
+        if (m_isCompacted_ || ch > UCharacter.MAX_VALUE || ch < 0) {
+            return false;
+        }
+    
+        int block = getDataBlock(ch);
+        if (block < 0) {
+            return false;
+        }
+    
+        m_data_[block + (ch & MASK_)] = value;
+        return true;
+    }
+    
+    /**
+     * Serializes the build table with 32 bit data
+     * @param datamanipulate builder raw fold method implementation
+     * @param triedatamanipulate result trie fold method
+     * @return a new trie
+     */
+    public IntTrie serialize(TrieBuilder.DataManipulate datamanipulate, 
+                             Trie.DataManipulate triedatamanipulate)
+    {
+        if (datamanipulate == null) {
+            throw new IllegalArgumentException("Parameters can not be null");
+        }
+        // fold and compact if necessary, also checks that indexLength is 
+        // within limits 
+        if (!m_isCompacted_) {
+            // compact once without overlap to improve folding
+            compact(false);
+            // fold the supplementary part of the index array
+            fold(datamanipulate);
+            // compact again with overlap for minimum data array length
+            compact(true);
+            m_isCompacted_ = true;
+        }
+        // is dataLength within limits? 
+        if (m_dataLength_ >= MAX_DATA_LENGTH_) {
+            throw new ArrayIndexOutOfBoundsException("Data length too small");
+        }
+    
+        char index[] = new char[m_indexLength_];
+        int data[] = new int[m_dataLength_];
+        // write the index (stage 1) array and the 32-bit data (stage 2) array
+        // write 16-bit index values shifted right by INDEX_SHIFT_ 
+        for (int i = 0; i < m_indexLength_; i ++) {
+            index[i] = (char)(m_index_[i] >>> INDEX_SHIFT_);
+        }
+        // write 32-bit data values
+        System.arraycopy(m_data_, 0, data, 0, m_dataLength_);
+        
+        int options = SHIFT_ | (INDEX_SHIFT_ << OPTIONS_INDEX_SHIFT_);
+        options |= OPTIONS_DATA_IS_32_BIT_;
+        if (m_isLatin1Linear_) {
+            options |= OPTIONS_LATIN1_IS_LINEAR_;
+        }
+        return new IntTrie(index, data, m_initialValue_, options, 
+                           triedatamanipulate);
+    }
+    
+	// public data member ---------------------------------------------
+		
+	protected int m_data_[];
+	protected boolean m_isDataAllocated_;
+	protected int m_initialValue_;  
+	
+	// private methods ------------------------------------------------------
+   
+    /**
+     * No error checking for illegal arguments.
+     * @param ch codepoint to look for
+     * @return -1 if no new data block available (out of memory in data array)
+     */
+    private int getDataBlock(int ch) 
+    {
+        ch >>= SHIFT_;
+        int indexValue = m_index_[ch];
+        if (indexValue > 0) {
+            return indexValue;
+        }
+    
+        // allocate a new data block
+        int newBlock = m_dataLength_;
+        int newTop = newBlock + DATA_BLOCK_LENGTH_;
+        if (newTop > m_dataCapacity_) {
+            // out of memory in the data array 
+            return -1;
+        }
+        m_dataLength_ = newTop;
+        m_index_[ch] = newBlock;
+    
+        // copy-on-write for a block from a setRange()
+        Arrays.fill(m_data_, newBlock, newBlock + DATA_BLOCK_LENGTH_, 
+                    m_initialValue_);
+        return newBlock;
+    }
+    
+    /**
+     * Compact a folded build-time trie.
+     * The compaction
+     * - removes blocks that are identical with earlier ones
+     * - overlaps adjacent blocks as much as possible (if overlap == true)
+     * - moves blocks in steps of the data granularity
+     *
+     * It does not
+     * - try to move and overlap blocks that are not already adjacent
+     * - try to move and overlap blocks that overlap with multiple values in 
+     * the overlap region
+     * @param overlap flag
+     */
+    private void compact(boolean overlap) 
+    {
+        if (m_isCompacted_) {
+            return; // nothing left to do
+        }
+    
+        // compaction
+        // initialize the index map with "block is used/unused" flags
+        findUnusedBlocks();
+    
+        // if Latin-1 is preallocated and linear, then do not compact Latin-1 
+        // data
+        int overlapStart = DATA_BLOCK_LENGTH_;
+        if (m_isLatin1Linear_ && SHIFT_ <= 8) {
+            overlapStart += 256;
+        }
+       
+        int newStart = DATA_BLOCK_LENGTH_;
+        int prevEnd = newStart - 1;
+        for (int start = newStart; start < m_dataLength_;) {
+            // start: index of first entry of current block
+            // prevEnd: index to last entry of previous block
+            // newStart: index where the current block is to be moved
+            // skip blocks that are not used 
+            if (m_map_[start >> SHIFT_] < 0) {
+                // advance start to the next block 
+                start += DATA_BLOCK_LENGTH_;
+                // leave prevEnd and newStart with the previous block!
+                continue;
+            }
+            // search for an identical block
+            if (start >= overlapStart) {
+                int i = findSameDataBlock(m_data_, newStart, start,
+                             overlap ? DATA_GRANULARITY_ : DATA_BLOCK_LENGTH_);
+                if (i >= 0) {
+                    // found an identical block, set the other block's index 
+                    // value for the current block
+                    m_map_[start >> SHIFT_] = i;
+                    // advance start to the next block
+                    start += DATA_BLOCK_LENGTH_;
+                    // leave prevEnd and newStart with the previous block!
+                    continue;
+                }
+            }
+            // see if the beginning of this block can be overlapped with the 
+            // end of the previous block
+            // x: first value in the current block 
+            int x = m_data_[start];
+            int i = 0;
+            if (x == m_data_[prevEnd] && overlap && start >= overlapStart) 
+            {
+                // overlap by at least one
+                for (i = 1; i < DATA_BLOCK_LENGTH_ 
+                     && x == m_data_[start + i] 
+                     && x == m_data_[prevEnd - i]; ++ i) 
+                {
+                }
+    
+                // overlap by i, rounded down for the data block granularity
+                i &= ~(DATA_GRANULARITY_ - 1);
+            } 
+            if (i > 0) {
+                // some overlap
+                m_map_[start >> SHIFT_] = newStart - i;
+                // move the non-overlapping indexes to their new positions
+                start += i;
+                for (i = DATA_BLOCK_LENGTH_ - i; i > 0; -- i) {
+                    m_data_[newStart ++] = m_data_[start ++];
+                }
+            } 
+            else if (newStart < start) {
+                // no overlap, just move the indexes to their new positions
+                m_map_[start >> SHIFT_] = newStart;
+                for (i = DATA_BLOCK_LENGTH_; i > 0; -- i) {
+                    m_data_[newStart ++] = m_data_[start ++];
+                }
+            } 
+            else { // no overlap && newStart==start
+                m_map_[start >> SHIFT_] = start;
+                newStart += DATA_BLOCK_LENGTH_;
+                start = newStart;
+            }
+    
+            prevEnd = newStart - 1;
+        }
+    
+        // now adjust the index (stage 1) table
+        for (int i = 0; i < m_indexLength_; ++ i) {
+            m_index_[i] = m_map_[Math.abs(m_index_[i]) >> SHIFT_];
+        }
+        m_dataLength_ = newStart;
+    }
+
+    /**
+     * Find the same data block
+     * @param data array
+     * @param dataLength
+     * @param otherBlock
+     * @param step
+     */
+    private static final int findSameDataBlock(int data[], int dataLength,
+                                                int otherBlock, int step) 
+    {
+        // ensure that we do not even partially get past dataLength
+        dataLength -= DATA_BLOCK_LENGTH_;
+
+        for (int block = 0; block <= dataLength; block += step) {
+            int i = 0;
+            for (i = 0; i < DATA_BLOCK_LENGTH_; ++ i) {
+                if (data[block + i] != data[otherBlock + i]) {
+                    break;
+                }
+            }
+            if (i == DATA_BLOCK_LENGTH_) {
+                return block;
+            }
+        }
+        return -1;
+    }
+    
+    /**
+     * Fold the normalization data for supplementary code points into
+     * a compact area on top of the BMP-part of the trie index,
+     * with the lead surrogates indexing this compact area.
+     *
+     * Duplicate the index values for lead surrogates:
+     * From inside the BMP area, where some may be overridden with folded values,
+     * to just after the BMP area, where they can be retrieved for
+     * code point lookups.
+     * @param manipulate fold implementation
+     */
+    private final void fold(DataManipulate manipulate) 
+    {
+        int leadIndexes[] = new int[SURROGATE_BLOCK_COUNT_];
+        int index[] = m_index_;
+        // copy the lead surrogate indexes into a temporary array
+        System.arraycopy(index, 0xd800 >> SHIFT_, leadIndexes, 0, 
+                         SURROGATE_BLOCK_COUNT_);
+    
+        // to protect the copied lead surrogate values,
+        // mark all their indexes as repeat blocks
+        // (causes copy-on-write)
+        for (char c = 0xd800; c <= 0xdbff; ++ c) {
+            int block = index[c >> SHIFT_];
+            if (block > 0) {
+                index[c >> SHIFT_] =- block;
+            }
+        }
+    
+        // Fold significant index values into the area just after the BMP 
+        // indexes.
+        // In case the first lead surrogate has significant data,
+        // its index block must be used first (in which case the folding is a 
+        // no-op).
+        // Later all folded index blocks are moved up one to insert the copied
+        // lead surrogate indexes.
+        int indexLength = BMP_INDEX_LENGTH_;
+        // search for any index (stage 1) entries for supplementary code points 
+        for (int c = 0x10000; c < 0x110000;) {
+            if (index[c >> SHIFT_] != 0) {
+                // there is data, treat the full block for a lead surrogate
+                c &= ~0x3ff;
+                // is there an identical index block?
+                int block = findSameIndexBlock(index, indexLength, c >> SHIFT_);
+                // get a folded value for [c..c+0x400[ and, if 0, set it for 
+                // the lead surrogate 
+                int value = manipulate.getFoldedValue(c, 
+                                                block + SURROGATE_BLOCK_COUNT_);
+                if (value != 0) {
+                    if (!setValue(0xd7c0 + (c >> 10), value)) {
+                        // data table overflow 
+                        throw new ArrayIndexOutOfBoundsException(
+                                                        "Data table overflow");
+                    }
+                    // if we did not find an identical index block...
+                    if (block == indexLength) {
+                        // move the actual index (stage 1) entries from the 
+                        // supplementary position to the new one
+                        System.arraycopy(index, c >> SHIFT_, index, indexLength,
+                                         SURROGATE_BLOCK_COUNT_ << 2);
+                        indexLength += SURROGATE_BLOCK_COUNT_;
+                    }
+                }
+                c += 0x400;
+            } 
+            else {
+                c += DATA_BLOCK_LENGTH_;
+            }
+        }
+    
+        // index array overflow?
+        // This is to guarantee that a folding offset is of the form
+        // UTRIE_BMP_INDEX_LENGTH+n*UTRIE_SURROGATE_BLOCK_COUNT with n=0..1023.
+        // If the index is too large, then n>=1024 and more than 10 bits are 
+        // necessary.
+        // In fact, it can only ever become n==1024 with completely unfoldable 
+        // data and the additional block of duplicated values for lead 
+        // surrogates.
+        if (indexLength >= MAX_INDEX_LENGTH_) {
+            throw new ArrayIndexOutOfBoundsException("Index table overflow");
+        }
+        // make space for the lead surrogate index block and insert it between 
+        // the BMP indexes and the folded ones
+        System.arraycopy(index, BMP_INDEX_LENGTH_, index, 
+                         BMP_INDEX_LENGTH_ + SURROGATE_BLOCK_COUNT_,
+                         indexLength - BMP_INDEX_LENGTH_);
+        System.arraycopy(leadIndexes, 0, index, BMP_INDEX_LENGTH_,
+                         SURROGATE_BLOCK_COUNT_);
+        indexLength += SURROGATE_BLOCK_COUNT_;
+        m_indexLength_ = indexLength;
+    }
+}
+    
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/LocaleUtility.java b/src/com/ibm/icu/impl/LocaleUtility.java
new file mode 100644
index 0000000..1033e42
--- /dev/null
+++ b/src/com/ibm/icu/impl/LocaleUtility.java
@@ -0,0 +1,123 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/LocaleUtility.java,v $
+ * $Date: 2002/06/19 21:03:12 $
+ * $Revision: 1.4 $
+ *  *****************************************************************************************
+ */
+ 
+package com.ibm.icu.impl;
+
+import java.util.Locale;
+
+/**
+ * A class to hold utility functions missing from java.util.Locale.
+ */
+public class LocaleUtility {
+
+    /**
+     * A helper function to convert a string of the form
+     * aa_BB_CC to a locale object.  Why isn't this in Locale?
+     */
+    public static Locale getLocaleFromName(String name) {
+        String language = "";
+        String country = "";
+        String variant = "";
+
+        int i1 = name.indexOf('_');
+        if (i1 < 0) {
+            language = name;
+        } else {
+            language = name.substring(0, i1);
+            ++i1;
+            int i2 = name.indexOf('_', i1);
+            if (i2 < 0) {
+                country = name.substring(i1);
+            } else {
+                country = name.substring(i1, i2);
+                variant = name.substring(i2+1);
+            }
+        }
+
+        return new Locale(language, country, variant);
+    }
+
+    /**
+     * Compare two locale strings of the form aa_BB_CC, and
+     * return true if parent is a 'strict' fallback of child, that is,
+     * if child =~ "^parent(_.+)*" (roughly).
+     */
+    public static boolean isFallbackOf(String parent, String child) {
+        if (!child.startsWith(parent)) {
+            return false;
+        }
+        int i = parent.length();
+        return (i == child.length() ||
+                child.charAt(i) == '_');
+    }
+
+    /**
+     * Compare two locales, and return true if the parent is a
+     * 'strict' fallback of the child (parent string is a fallback
+     * of child string).
+     */
+    public static boolean isFallbackOf(Locale parent, Locale child) {
+        return isFallbackOf(parent.toString(), child.toString());
+    }
+
+
+    /**
+     * You'd think that Locale canonicalizes, since it munges the
+     * renamed languages, but it doesn't quite.  It forces the region
+     * to be upper case but doesn't do anything about the language or
+     * variant.  Our canonical form is 'lower_UPPER_UPPER'.  
+     */
+    public static String canonicalLocaleString(String id) {
+	if (id != null) {
+	    int x = id.indexOf("_");
+	    if (x == -1) {
+		id = id.toLowerCase(Locale.ENGLISH);
+	    } else {
+		StringBuffer buf = new StringBuffer();
+		buf.append(id.substring(0, x).toLowerCase(Locale.ENGLISH));
+		buf.append(id.substring(x).toUpperCase(Locale.ENGLISH));
+		    
+		int len = buf.length();
+		int n = len;
+		while (--n >= 0 && buf.charAt(n) == '_') {};
+		if (++n != len) {
+		    buf.delete(n, len);
+		}
+		id = buf.toString();
+	    }
+	}
+	return id;
+    }
+
+    /*
+    public static String getDisplayLanguage(String languageID, Locale l) {
+    }
+
+    public static String getDisplayRegion(String regionID, Locale l) {
+    }
+
+    public static String getDisplayVariant(String variantID, Locale l) {
+    }
+
+    public static String getDisplayName(String localeName) {
+	return getDisplayName(getLocaleFromString(localeName));
+    }
+
+    public static String getDisplayName(Locale locale) {
+	String lang = locale.getLanguage();
+	String region = locale.getCountry();
+	String var = locale.getVariant();
+
+	StringBuffer buf = new StringBuffer(lang);
+    }
+    */
+}
diff --git a/src/com/ibm/icu/impl/NormalizerDataReader.java b/src/com/ibm/icu/impl/NormalizerDataReader.java
new file mode 100644
index 0000000..c79138f
--- /dev/null
+++ b/src/com/ibm/icu/impl/NormalizerDataReader.java
@@ -0,0 +1,398 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/NormalizerDataReader.java,v $
+ * $Date: 2002/08/01 19:50:26 $
+ * $Revision: 1.7 $
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.impl;
+import java.io.*;
+import com.ibm.icu.impl.ICUDebug;
+
+/**
+ * @version 	1.0
+ * @author		Ram Viswanadha
+ */
+
+	/*
+	 * Description of the format of unorm.icu version 2.1.
+	 *
+	 * Main change from version 1 to version 2:
+	 * Use of new, common Trie instead of normalization-specific tries.
+	 * Change to version 2.1: add third/auxiliary trie with associated data.
+	 *
+	 * For more details of how to use the data structures see the code
+	 * in unorm.cpp (runtime normalization code) and
+	 * in gennorm.c and gennorm/store.c (build-time data generation).
+	 *
+	 * For the serialized format of Trie see Trie.c/TrieHeader.
+	 *
+	 * - Overall partition
+	 *
+	 * unorm.icu customarily begins with a UDataInfo structure, see udata.h and .c.
+	 * After that there are the following structures:
+	 *
+	 * char indexes[INDEX_TOP];           		-- INDEX_TOP=32, see enum in this file
+	 *
+	 * Trie normTrie;                           -- size in bytes=indexes[INDEX_TRIE_SIZE]
+	 * 
+	 * char extraData[extraDataTop];            -- extraDataTop=indexes[INDEX_UCHAR_COUNT]
+	 *                                                 extraData[0] contains the number of units for
+	 *                                                 FC_NFKC_Closure (formatVersion>=2.1)
+	 *
+	 * char combiningTable[combiningTableTop];  -- combiningTableTop=indexes[INDEX_COMBINE_DATA_COUNT]
+	 *                                                 combiningTableTop may include one 16-bit padding unit
+	 *                                                 to make sure that fcdTrie is 32-bit-aligned
+	 *
+	 * Trie fcdTrie;                            -- size in bytes=indexes[INDEX_FCD_TRIE_SIZE]
+	 *
+	 * Trie auxTrie;                            -- size in bytes=indexes[INDEX_AUX_TRIE_SIZE]
+	 *
+	 * char canonStartSets[canonStartSetsTop]   -- canonStartSetsTop=indexes[INDEX_CANON_SET_COUNT]
+	 *                                                 serialized USets, see uset.c
+	 *
+	 *
+	 * The indexes array contains lengths and sizes of the following arrays and structures
+	 * as well as the following values:
+	 *  indexes[INDEX_COMBINE_FWD_COUNT]=combineFwdTop
+	 *      -- one more than the highest combining index computed for forward-only-combining characters
+	 *  indexes[INDEX_COMBINE_BOTH_COUNT]=combineBothTop-combineFwdTop
+	 *      -- number of combining indexes computed for both-ways-combining characters
+	 *  indexes[INDEX_COMBINE_BACK_COUNT]=combineBackTop-combineBothTop
+	 *      -- number of combining indexes computed for backward-only-combining characters
+	 *
+	 *  indexes[INDEX_MIN_NF*_NO_MAYBE] (where *={ C, D, KC, KD })
+	 *      -- first code point with a quick check NF* value of NO/MAYBE
+	 *
+	 *
+	 * - Tries
+	 *
+	 * The main structures are two Trie tables ("compact arrays"),
+	 * each with one index array and one data array.
+	 * See Trie.h and Trie.c.
+	 *
+	 *
+	 * - Tries in unorm.icu
+	 *
+	 * The first trie (normTrie above)
+	 * provides data for the NF* quick checks and normalization.
+	 * The second trie (fcdTrie above) provides data just for FCD checks.
+	 *
+	 *
+	 * - norm32 data words from the first trie
+	 *
+	 * The norm32Table contains one 32-bit word "norm32" per code point.
+	 * It contains the following bit fields:
+	 * 31..16   extra data index, EXTRA_SHIFT is used to shift this field down
+	 *          if this index is <EXTRA_INDEX_TOP then it is an index into
+	 *              extraData[] where variable-length normalization data for this
+	 *              code point is found
+	 *          if this index is <EXTRA_INDEX_TOP+EXTRA_SURROGATE_TOP
+	 *              then this is a norm32 for a leading surrogate, and the index
+	 *              value is used together with the following trailing surrogate
+	 *              code unit in the second trie access
+	 *          if this index is >=EXTRA_INDEX_TOP+EXTRA_SURROGATE_TOP
+	 *              then this is a norm32 for a "special" character,
+	 *              i.e., the character is a Hangul syllable or a Jamo
+	 *              see EXTRA_HANGUL etc.
+	 *          generally, instead of extracting this index from the norm32 and
+	 *              comparing it with the above constants,
+	 *              the normalization code compares the entire norm32 value
+	 *              with MIN_SPECIAL, SURROGATES_TOP, MIN_HANGUL etc.
+	 *
+	 * 15..8    combining class (cc) according to UnicodeData.txt
+	 *
+	 *  7..6    COMBINES_ANY flags, used in composition to see if a character
+	 *              combines with any following or preceding character(s)
+	 *              at all
+	 *     7    COMBINES_BACK
+	 *     6    COMBINES_FWD
+	 *
+	 *  5..0    quick check flags, set for "no" or "maybe", with separate flags for
+	 *              each normalization form
+	 *              the higher bits are "maybe" flags; for NF*D there are no such flags
+	 *              the lower bits are "no" flags for all forms, in the same order
+	 *              as the "maybe" flags,
+	 *              which is (MSB to LSB): NFKD NFD NFKC NFC
+	 *  5..4    QC_ANY_MAYBE
+	 *  3..0    QC_ANY_NO
+	 *              see further related constants
+	 *
+	 *
+	 * - Extra data per code point
+	 *
+	 * "Extra data" is referenced by the index in norm32.
+	 * It is variable-length data. It is only present, and only those parts
+	 * of it are, as needed for a given character.
+	 * The norm32 extra data index is added to the beginning of extraData[]
+	 * to get to a vector of 16-bit words with data at the following offsets:
+	 *
+	 * [-1]     Combining index for composition.
+	 *              Stored only if norm32&COMBINES_ANY .
+	 * [0]      Lengths of the canonical and compatibility decomposition strings.
+	 *              Stored only if there are decompositions, i.e.,
+	 *              if norm32&(QC_NFD|QC_NFKD)
+	 *          High byte: length of NFKD, or 0 if none
+	 *          Low byte: length of NFD, or 0 if none
+	 *          Each length byte also has another flag:
+	 *              Bit 7 of a length byte is set if there are non-zero
+	 *              combining classes (cc's) associated with the respective
+	 *              decomposition. If this flag is set, then the decomposition
+	 *              is preceded by a 16-bit word that contains the
+	 *              leading and trailing cc's.
+	 *              Bits 6..0 of a length byte are the length of the
+	 *              decomposition string, not counting the cc word.
+	 * [1..n]   NFD
+	 * [n+1..]  NFKD
+	 *
+	 * Each of the two decompositions consists of up to two parts:
+	 * - The 16-bit words with the leading and trailing cc's.
+	 *   This is only stored if bit 7 of the corresponding length byte
+	 *   is set. In this case, at least one of the cc's is not zero.
+	 *   High byte: leading cc==cc of the first code point in the decomposition string
+	 *   Low byte: trailing cc==cc of the last code point in the decomposition string
+	 * - The decomposition string in UTF-16, with length code units.
+	 *
+	 *
+	 * - Combining indexes and combiningTable[]
+	 *
+	 * Combining indexes are stored at the [-1] offset of the extra data
+	 * if the character combines forward or backward with any other characters.
+	 * They are used for (re)composition in NF*C.
+	 * Values of combining indexes are arranged according to whether a character
+	 * combines forward, backward, or both ways:
+	 *    forward-only < both ways < backward-only
+	 *
+	 * The index values for forward-only and both-ways combining characters
+	 * are indexes into the combiningTable[].
+	 * The index values for backward-only combining characters are simply
+	 * incremented from the preceding index values to be unique.
+	 *
+	 * In the combiningTable[], a variable-length list
+	 * of variable-length (back-index, code point) pair entries is stored
+	 * for each forward-combining character.
+	 *
+	 * These back-indexes are the combining indexes of both-ways or backward-only
+	 * combining characters that the forward-combining character combines with.
+	 *
+	 * Each list is sorted in ascending order of back-indexes.
+	 * Each list is terminated with the last back-index having bit 15 set.
+	 *
+	 * Each pair (back-index, code point) takes up either 2 or 3
+	 * 16-bit words.
+	 * The first word of a list entry is the back-index, with its bit 15 set if
+	 * this is the last pair in the list.
+	 *
+	 * The second word contains flags in bits 15..13 that determine
+	 * if there is a third word and how the combined character is encoded:
+	 * 15   set if there is a third word in this list entry
+	 * 14   set if the result is a supplementary character
+	 * 13   set if the result itself combines forward
+	 *
+	 * According to these bits 15..14 of the second word,
+	 * the result character is encoded as follows:
+	 * 00 or 01 The result is <=0x1fff and stored in bits 12..0 of
+	 *          the second word.
+	 * 10       The result is 0x2000..0xffff and stored in the third word.
+	 *          Bits 12..0 of the second word are not used.
+	 * 11       The result is a supplementary character.
+	 *          Bits 9..0 of the leading surrogate are in bits 9..0 of
+	 *          the second word.
+	 *          Add 0xd800 to these bits to get the complete surrogate.
+	 *          Bits 12..10 of the second word are not used.
+	 *          The trailing surrogate is stored in the third word.
+	 *
+	 *
+	 * - FCD trie
+	 *
+	 * The FCD trie is very simple.
+	 * It is a folded trie with 16-bit data words.
+	 * In each word, the high byte contains the leading cc of the character,
+	 * and the low byte contains the trailing cc of the character.
+	 * These cc's are the cc's of the first and last code points in the
+	 * canonical decomposition of the character.
+	 *
+	 * Since all 16 bits are used for cc's, lead surrogates must be tested
+	 * by checking the code unit instead of the trie data.
+	 * This is done only if the 16-bit data word is not zero.
+	 * If the code unit is a leading surrogate and the data word is not zero,
+	 * then instead of cc's it contains the offset for the second trie lookup.
+	 *
+	 *
+	 * - Auxiliary trie and data
+	 *
+	 *
+	 * The auxiliary 16-bit trie contains data for additional properties.
+	 * Bits
+	 * 15..12   reserved (for skippable flags, see NormalizerTransliterator)
+	 *     11   flag: not a safe starter for canonical closure
+	 *     10   composition exclusion
+	 *  9.. 0   index into extraData[] to FC_NFKC_Closure string
+	 *          (not for lead surrogate),
+	 *          or lead surrogate offset (for lead surrogate, if 9..0 not zero)
+	 *
+	 * - FC_NFKC_Closure strings in extraData[]
+	 *
+	 * Strings are either stored as a single code unit or as the length
+	 * followed by that many units.
+	 * 
+     * - structure inside canonStartSets[]
+	 *
+	 * This array maps from code points c to sets of code points (USerializedSet).
+	 * The result sets are the code points whose canonical decompositions start
+	 * with c.
+	 *
+	 * canonStartSets[] contains the following sub-arrays:
+	 *
+	 * indexes[_NORM_SET_INDEX_TOP]
+	 *   - contains lengths of sub-arrays etc.
+	 *
+	 * startSets[indexes[_NORM_SET_INDEX_CANON_SETS_LENGTH]-_NORM_SET_INDEX_TOP]
+	 *   - contains serialized sets (USerializedSet) of canonical starters for
+	 *     enumerating canonically equivalent strings
+	 *     indexes[_NORM_SET_INDEX_CANON_SETS_LENGTH] includes _NORM_SET_INDEX_TOP
+	 *     for details about the structure see uset.c
+	 *
+	 * bmpTable[indexes[_NORM_SET_INDEX_CANON_BMP_TABLE_LENGTH]]
+	 *   - a sorted search table for BMP code points whose results are
+	 *     either indexes to USerializedSets or single code points for
+	 *     single-code point sets;
+	 *     each entry is a pair of { code point, result } with result=(binary) yy xxxxxx xxxxxxxx
+	 *     if yy==01 then there is a USerializedSet at canonStartSets+x
+	 *     else build a USerializedSet with result as the single code point
+	 *
+	 * suppTable[indexes[_NORM_SET_INDEX_CANON_SUPP_TABLE_LENGTH]]
+	 *   - a sorted search table for supplementary code points whose results are
+	 *     either indexes to USerializedSets or single code points for
+	 *     single-code point sets;
+	 *     each entry is a triplet of { high16(cp), low16(cp), result }
+	 *     each code point's high-word may contain extra data in bits 15..5:
+	 *     if the high word has bit 15 set, then build a set with a single code point
+	 *     which is (((high16(cp)&0x1f00)<<8)|result;
+	 *     else there is a USerializedSet at canonStartSets+result
+	 */
+final class NormalizerDataReader {
+	private final static boolean debug = ICUDebug.enabled("NormalizerDataReader");
+	
+   /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU uprop.dat file input stream
+    * @exception IOException throw if data file fails authentication 
+    * @draft 2.1
+    */
+    protected NormalizerDataReader(InputStream inputStream) 
+                                        throws IOException{
+        if(debug) System.out.println("Bytes in inputStream " + inputStream.available());
+        
+        ICUBinary.readHeader(inputStream, DATA_FORMAT_ID, 
+                             DATA_FORMAT_VERSION);
+        
+        if(debug) System.out.println("Bytes left in inputStream " +inputStream.available());
+        
+        dataInputStream = new DataInputStream(inputStream);
+        
+        if(debug) System.out.println("Bytes left in dataInputStream " +dataInputStream.available());
+    }
+    
+    // protected methods -------------------------------------------------
+    
+    protected int[] readIndexes(int length)throws IOException{
+        int[] indexes = new int[length];
+        //Read the indexes
+        for (int i = 0; i <length ; i++) {
+             indexes[i] = dataInputStream.readInt();
+        }
+        return indexes;
+    } 
+    /**
+    * <p>Reads unorm.icu, parse it into blocks of data to be stored in
+    * NormalizerImpl.</P
+    * @param normBytes
+    * @param fcdBytes
+    * @param auxBytes
+    * @param extraData
+    * @param combiningTable
+    * @param canonStartSets
+    * @exception thrown when data reading fails
+    * @draft 2.1
+    */
+    protected void read(byte[] normBytes, byte[] fcdBytes, byte[] auxBytes,
+                        char[] extraData, char[] combiningTable, 
+                        Object[] canonStartSets) 
+                        throws IOException{
+
+	 	//Read the bytes that make up the normTrie 	
+	 	dataInputStream.read(normBytes);
+        
+	 	//normTrieStream= new ByteArrayInputStream(normBytes);
+
+	 	//Read the extra data
+	 	for(int i=0;i<extraData.length;i++){
+	 		extraData[i]=dataInputStream.readChar();
+	 	}
+	 	
+	 	//Read the combining class table
+	 	for(int i=0; i<combiningTable.length; i++){
+	 		combiningTable[i]=dataInputStream.readChar();
+	 	}
+	 	
+	 	//Read the fcdTrie
+	 	dataInputStream.read(fcdBytes);
+	 	
+	 	
+	 	//Read the AuxTrie	 	
+        dataInputStream.read(auxBytes);
+		
+		//Read the canonical start sets
+		int[] canonStartSetsIndexes = new int[NormalizerImpl.SET_INDEX_TOP];
+		
+        for(int i=0; i<canonStartSetsIndexes.length; i++){
+	 		canonStartSetsIndexes[i]=dataInputStream.readChar();
+	 	}
+		
+        char[] startSets = new char[canonStartSetsIndexes[NormalizerImpl.SET_INDEX_CANON_SETS_LENGTH]-NormalizerImpl.SET_INDEX_TOP];
+        
+        for(int i=0; i<startSets.length; i++){
+	 		startSets[i]=dataInputStream.readChar();
+	 	}
+	 	char[] bmpTable  = new char[canonStartSetsIndexes[NormalizerImpl.SET_INDEX_CANON_BMP_TABLE_LENGTH]];
+        for(int i=0; i<bmpTable.length; i++){
+	 		bmpTable[i]=dataInputStream.readChar();
+	 	}		
+		char[] suppTable = new char[canonStartSetsIndexes[NormalizerImpl.SET_INDEX_CANON_SUPP_TABLE_LENGTH]];
+        for(int i=0; i<suppTable.length; i++){
+	 		suppTable[i]=dataInputStream.readChar();
+	 	}
+	 	canonStartSets[NormalizerImpl.CANON_SET_INDICIES_INDEX  ] = canonStartSetsIndexes;
+	 	canonStartSets[NormalizerImpl.CANON_SET_START_SETS_INDEX] = startSets;
+	 	canonStartSets[NormalizerImpl.CANON_SET_BMP_TABLE_INDEX	] = bmpTable;
+	 	canonStartSets[NormalizerImpl.CANON_SET_SUPP_TABLE_INDEX] = suppTable;	 	
+    }
+    
+    public byte[] getDataFormatVersion(){
+        return DATA_FORMAT_VERSION;
+    }
+    // private data members -------------------------------------------------
+      
+
+    /**
+    * ICU data file input stream
+    */
+    private DataInputStream dataInputStream;
+                                       
+    /**
+    * File format version that this class understands.
+    * No guarantees are made if a older version is used
+    * see store.c of gennorm for more information and values
+    */
+    private static final byte DATA_FORMAT_ID[] = {(byte)0x4E, (byte)0x6F, 
+                                                    (byte)0x72, (byte)0x6D};
+    private static final byte DATA_FORMAT_VERSION[] = {(byte)0x2, (byte)0x1, 
+                                                        (byte)0x5, (byte)0x2};
+	
+}
diff --git a/src/com/ibm/icu/impl/NormalizerImpl.java b/src/com/ibm/icu/impl/NormalizerImpl.java
new file mode 100644
index 0000000..c4aa9e3
--- /dev/null
+++ b/src/com/ibm/icu/impl/NormalizerImpl.java
@@ -0,0 +1,3398 @@
+ /*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/NormalizerImpl.java,v $
+ * $Date: 2002/08/07 18:07:56 $
+ * $Revision: 1.10 $
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.impl;
+import java.io.*;
+
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UTF16;	
+import com.ibm.icu.lang.UCharacter;
+/**
+ * @version 	1.0
+ * @author  Ram Viswanadha
+ */
+public final class NormalizerImpl {
+	// Static block for the class to initialize its own self 
+	static final NormalizerImpl IMPL;
+	
+	static
+    {
+        try
+        {
+            IMPL = new NormalizerImpl();
+        }
+        catch (Exception e)
+        {
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+	
+	static final int UNSIGNED_BYTE_MASK =0xFF;
+	static final long UNSIGNED_INT_MASK = 0xffffffffL;
+	/*
+	 * This new implementation of the normalization code loads its data from
+	 * unorm.icu, which is generated with the gennorm tool.
+	 * The format of that file is described at the end of this file.
+	 */
+	private static final String DATA_FILE_NAME = "data/unorm.icu";
+	
+	// norm32 value constants 
+	
+    // quick check flags 0..3 set mean "no" for their forms 
+    public static final int QC_NFC=0x11;          /* no|maybe */
+    public static final int QC_NFKC=0x22;         /* no|maybe */
+    public static final int QC_NFD=4;             /* no */
+    public static final int QC_NFKD=8;            /* no */
+	
+    private static final int QC_ANY_NO=0xf;
+
+    /* quick check flags 4..5 mean "maybe" for their forms; 
+     * test flags>=QC_MAYBE 
+     */
+    public static final int QC_MAYBE=0x10;
+    public static final int QC_ANY_MAYBE=0x30;
+
+    public static final int QC_MASK=0x3f;
+
+    private static final int COMBINES_FWD=0x40;
+    private static final int COMBINES_BACK=0x80;
+    private static final int COMBINES_ANY=0xc0;
+    // UnicodeData.txt combining class in bits 15.
+    private static final int CC_SHIFT=8;           		  
+    public static final int CC_MASK=0xff00;
+    // 16 bits for the index to UChars and other extra data
+    private static final int EXTRA_SHIFT=16;
+    // start of surrogate specials after shift                
+    private static final int EXTRA_INDEX_TOP=0xfc00;       
+
+    private static final int EXTRA_SURROGATE_MASK=0x3ff;
+    private static final int EXTRA_SURROGATE_TOP=0x3f0;    /* hangul etc. */
+
+    private static final int EXTRA_HANGUL=EXTRA_SURROGATE_TOP;
+    private static final int EXTRA_JAMO_L=EXTRA_SURROGATE_TOP+1;/* ### not used */
+    private static final int EXTRA_JAMO_V=EXTRA_SURROGATE_TOP+2;
+    private static final int EXTRA_JAMO_T=EXTRA_SURROGATE_TOP+3;
+	
+	/* norm32 value constants using >16 bits */
+	private static final long  MIN_SPECIAL    =  (long)(0xfc000000 & UNSIGNED_INT_MASK);
+	private static final long  SURROGATES_TOP =  (long)(0xfff00000 & UNSIGNED_INT_MASK);
+	private static final long  MIN_HANGUL     =  (long)(0xfff00000 & UNSIGNED_INT_MASK);
+	private static final long  MIN_JAMO_V     =  (long)(0xfff20000 & UNSIGNED_INT_MASK);
+	private static final long  JAMO_V_TOP     =  (long)(0xfff30000 & UNSIGNED_INT_MASK);
+	
+	
+	/* indexes[] value names */
+	/* number of bytes in normalization trie */
+	static final int INDEX_TRIE_SIZE 		  = 0;
+     /* number of chars in extra data */     
+	static final int INDEX_CHAR_COUNT 		  = 1;    
+	/* number of uint16_t words for combining data */
+	static final int INDEX_COMBINE_DATA_COUNT = 2;
+    /* number of code points that combine forward */     
+	static final int INDEX_COMBINE_FWD_COUNT  = 3;
+    /* number of code points that combine forward and backward */     
+	static final int INDEX_COMBINE_BOTH_COUNT = 4;
+    /* number of code points that combine backward */     
+	static final int INDEX_COMBINE_BACK_COUNT = 5;     
+	 /* first code point with quick check NFC NO/MAYBE */
+	public static final int INDEX_MIN_NFC_NO_MAYBE   = 6;
+    /* first code point with quick check NFKC NO/MAYBE */    
+	public static final int INDEX_MIN_NFKC_NO_MAYBE  = 7;
+     /* first code point with quick check NFD NO/MAYBE */     
+	public static final int INDEX_MIN_NFD_NO_MAYBE   = 8;
+    /* first code point with quick check NFKD NO/MAYBE */    
+	public static final int INDEX_MIN_NFKD_NO_MAYBE  = 9;     
+	/* number of bytes in FCD trie */
+	static final int INDEX_FCD_TRIE_SIZE      = 10;
+    /* number of bytes in the auxiliary trie */    
+    static final int INDEX_AUX_TRIE_SIZE      = 11;
+    /* number of uint16_t in the array of serialized USet */    
+    static final int INDEX_CANON_SET_COUNT    = 12;    
+    /* changing this requires a new formatVersion */
+	static final int INDEX_TOP                = 32;    
+	
+	
+	/* AUX constants */
+	/* value constants for auxTrie */	
+	private static final int AUX_UNSAFE_SHIFT	= 11;
+	private static final int AUX_COMP_EX_SHIFT	= 10;
+	
+	private static final int AUX_MAX_FNC        =   ((int)1<<AUX_COMP_EX_SHIFT);
+	private static final int AUX_UNSAFE_MASK    =   (int)((1<<AUX_UNSAFE_SHIFT) & UNSIGNED_INT_MASK);
+	private static final int AUX_FNC_MASK       =   (int)((AUX_MAX_FNC-1) & UNSIGNED_INT_MASK);
+	private static final int AUX_COMP_EX_MASK   =   (int)((1<<AUX_COMP_EX_SHIFT) & UNSIGNED_INT_MASK);
+	
+	/* canonStartSets[0..31] contains indexes for what is in the array */
+    /* number of uint16_t in canonical starter sets */
+    static final int SET_INDEX_CANON_SETS_LENGTH		= 0;
+    /* number of uint16_t in the BMP search table (contains pairs) */ 
+    static final int SET_INDEX_CANON_BMP_TABLE_LENGTH	= 1;
+    /* number of uint16_t in the supplementary search table(contains triplets)*/ 
+    static final int SET_INDEX_CANON_SUPP_TABLE_LENGTH  = 2;
+    /* changing this requires a new formatVersion */ 
+    static final int SET_INDEX_TOP						= 32;
+	
+	static final int CANON_SET_INDICIES_INDEX  			= 0;
+	static final int CANON_SET_START_SETS_INDEX			= 1;
+	static final int CANON_SET_BMP_TABLE_INDEX			= 2;
+	static final int CANON_SET_SUPP_TABLE_INDEX			= 3;
+	/* 14 bit indexes to canonical USerializedSets */
+	static final int CANON_SET_MAX_CANON_SETS     		= 0x4000; 
+	/* single-code point BMP sets are encoded directly in the search table 
+     * except if result=0x4000..0x7fff 
+     */
+	static final int CANON_SET_BMP_MASK        			= 0xc000;
+	static final int CANON_SET_BMP_IS_INDEX    			= 0x4000;
+    
+    private static final int MAX_BUFFER_SIZE                    = 20;
+	
+    /**
+	 * Internal option for cmpEquivFold() for decomposing.
+	 * If not set, just do strcasecmp().
+	 * @internal
+	 */
+	 private static final int COMPARE_EQUIV = 0x80000;
+	
+	/*******************************/
+	
+	/* Wrappers for Trie implementations */ 
+	static final class NormTrieImpl implements Trie.DataManipulate{
+		static IntTrie normTrie= null;
+	   /**
+	    * Called by com.ibm.icu.util.Trie to extract from a lead surrogate's 
+	    * data the index array offset of the indexes for that lead surrogate.
+	    * @param property data value for a surrogate from the trie, including 
+        *         the folding offset
+	    * @return data offset or 0 if there is no data for the lead surrogate
+	    */
+	    public int getFoldingOffset(int value){
+            return  BMP_INDEX_LENGTH+
+                    ((value>>(EXTRA_SHIFT-SURROGATE_BLOCK_BITS))&
+                    (0x3ff<<SURROGATE_BLOCK_BITS)); 
+	    }
+		
+	}
+	static final class FCDTrieImpl implements Trie.DataManipulate{
+		static CharTrie fcdTrie=null;
+	   /**
+	    * Called by com.ibm.icu.util.Trie to extract from a lead surrogate's 
+	    * data the index array offset of the indexes for that lead surrogate.
+	    * @param property data value for a surrogate from the trie, including
+        *         the folding offset
+	    * @return data offset or 0 if there is no data for the lead surrogate
+	    */
+
+	    public int getFoldingOffset(int value){
+			return value;
+	    }
+	}
+	
+	static final class AuxTrieImpl implements Trie.DataManipulate{
+		static CharTrie auxTrie = null;
+	   /**
+	    * Called by com.ibm.icu.util.Trie to extract from a lead surrogate's 
+	    * data the index array offset of the indexes for that lead surrogate.
+	    * @param property data value for a surrogate from the trie, including 
+        *        the folding offset
+	    * @return data offset or 0 if there is no data for the lead surrogate
+	    */
+	    public int getFoldingOffset(int value){
+	        return (value&AUX_FNC_MASK)<<5;
+	    }
+	}
+		 
+	/****************************************************/
+	
+	
+	static FCDTrieImpl fcdTrieImpl;
+	static NormTrieImpl normTrieImpl;
+	static AuxTrieImpl auxTrieImpl;
+	private static int[] indexes;
+	static char[] combiningTable;
+	static char[] extraData;
+	static Object[] canonStartSets;
+	
+	static boolean isDataLoaded;
+	static boolean isFormatVersion_2_1;
+	/**
+     * Default buffer size of datafile
+     */
+    private static final int DATA_BUFFER_SIZE = 25000;
+	
+	/**
+     * FCD check: everything below this code point is known to have a 0 
+     * lead combining class 
+     */
+	public static final int MIN_WITH_LEAD_CC=0x300;
+
+
+    /**
+     * Bit 7 of the length byte for a decomposition string in extra data is
+     * a flag indicating whether the decomposition string is
+     * preceded by a 16-bit word with the leading and trailing cc
+     * of the decomposition (like for A-umlaut);
+     * if not, then both cc's are zero (like for compatibility ideographs).
+     */
+	private static final int DECOMP_FLAG_LENGTH_HAS_CC=0x80;
+    /**
+	 * Bits 6..0 of the length byte contain the actual length.
+	 */
+	private static final int DECOMP_LENGTH_MASK=0x7f;   
+	
+	/** Length of the BMP portion of the index (stage 1) array. */
+    private static final int BMP_INDEX_LENGTH=0x10000>>Trie.INDEX_STAGE_1_SHIFT_;
+    /** Number of bits of a trail surrogate that are used in index table 
+     * lookups. 
+     */
+    private static final int SURROGATE_BLOCK_BITS=10-Trie.INDEX_STAGE_1_SHIFT_;
+
+
+   // public utility
+   public static int getFromIndexesArr(int index){
+        return indexes[index];
+   }
+   
+   // protected constructor ---------------------------------------------
+    
+    /**
+    * Constructor
+    * @exception thrown when data reading fails or data corrupted
+    */
+    private NormalizerImpl() throws IOException{
+        //data should be loaded only once
+        if(!isDataLoaded){
+            
+            // jar access
+            InputStream i = getClass().getResourceAsStream(DATA_FILE_NAME);
+            BufferedInputStream b = new BufferedInputStream(i,DATA_BUFFER_SIZE);
+            NormalizerDataReader reader = new NormalizerDataReader(b);
+            
+            // read the indexes            
+            indexes = reader.readIndexes(NormalizerImpl.INDEX_TOP);
+            
+            byte[] normBytes = new byte[indexes[NormalizerImpl.INDEX_TRIE_SIZE]];
+            
+            int combiningTableTop = indexes[NormalizerImpl.INDEX_COMBINE_DATA_COUNT];
+            combiningTable = new char[combiningTableTop];
+            
+            int extraDataTop = indexes[NormalizerImpl.INDEX_CHAR_COUNT];
+            extraData = new char[extraDataTop];
+
+            byte[] fcdBytes = new byte[indexes[NormalizerImpl.INDEX_FCD_TRIE_SIZE]];
+            byte[] auxBytes = new byte[indexes[NormalizerImpl.INDEX_AUX_TRIE_SIZE]];
+            canonStartSets=new Object[NormalizerImpl.CANON_SET_MAX_CANON_SETS];
+            
+            fcdTrieImpl = new FCDTrieImpl();
+            normTrieImpl = new NormTrieImpl();
+            auxTrieImpl = new AuxTrieImpl();
+                        
+
+            // load the rest of the data data and initialize the data members
+            reader.read(normBytes, fcdBytes,auxBytes, extraData, combiningTable, 
+                        canonStartSets);
+                                       
+            normTrieImpl.normTrie = new IntTrie( new ByteArrayInputStream(normBytes),normTrieImpl );
+            fcdTrieImpl.fcdTrie   = new CharTrie( new ByteArrayInputStream(fcdBytes),fcdTrieImpl  );
+            auxTrieImpl.auxTrie   = new CharTrie( new ByteArrayInputStream(auxBytes),auxTrieImpl  );
+            
+            // we reached here without any exceptions so the data is fully 
+            // loaded set the variable to true
+            isDataLoaded = true;
+            
+            // get the data format version                           
+            byte[] formatVersion = reader.getDataFormatVersion();
+            
+            isFormatVersion_2_1 =( formatVersion[0]>2 
+                                    ||
+                                   (formatVersion[0]==2 && formatVersion[1]>=1)
+                                 );
+            
+            b.close();
+            i.close();
+        }
+    }
+    
+	/* ---------------------------------------------------------------------- */
+	
+	/* Korean Hangul and Jamo constants */
+	
+	private static final int JAMO_L_BASE=0x1100;     /* "lead" jamo */
+	private static final int JAMO_V_BASE=0x1161;     /* "vowel" jamo */
+	private static final int JAMO_T_BASE=0x11a7;     /* "trail" jamo */
+	
+	private static final int HANGUL_BASE=0xac00;
+	
+	private static final int JAMO_L_COUNT=19;
+	private static final int JAMO_V_COUNT=21;
+	private static final int JAMO_T_COUNT=28;
+	private static final int HANGUL_COUNT=JAMO_L_COUNT*JAMO_V_COUNT*JAMO_T_COUNT;
+	
+	private static boolean isHangulWithoutJamoT(char c) {
+	    c-=HANGUL_BASE;
+	    return c<HANGUL_COUNT && c%JAMO_T_COUNT==0;
+	}
+	
+	/* norm32 helpers */
+	
+	/* is this a norm32 with a regular index? */
+	private static boolean isNorm32Regular(long norm32) {
+	    return norm32<MIN_SPECIAL;
+	}
+	
+	/* is this a norm32 with a special index for a lead surrogate? */
+	private static boolean isNorm32LeadSurrogate(long norm32) {
+	    return MIN_SPECIAL<=norm32 && norm32<SURROGATES_TOP;
+	}
+	
+	/* is this a norm32 with a special index for a Hangul syllable or a Jamo? */
+	private static boolean isNorm32HangulOrJamo(long norm32) {
+	    return norm32>=MIN_HANGUL;
+	}
+	
+	/*
+	 * Given isNorm32HangulOrJamo(),
+	 * is this a Hangul syllable or a Jamo?
+	 */
+	private static  boolean isHangulJamoNorm32HangulOrJamoL(long norm32) {
+	    return norm32<MIN_JAMO_V;
+	}
+	
+	/*
+	 * Given norm32 for Jamo V or T,
+	 * is this a Jamo V?
+	 */
+	private static boolean isJamoVTNorm32JamoV(long norm32) {
+	    return norm32<JAMO_V_TOP;
+	}
+	
+	/* data access primitives ----------------------------------------------- */
+	
+	public static long/*unsigned*/ getNorm32(char c) {
+        return ((UNSIGNED_INT_MASK) & (normTrieImpl.normTrie.getLeadValue(c)));
+	}
+	
+	public static long/*unsigned*/ getNorm32FromSurrogatePair(long norm32, 
+                                                               char c2) {
+	    /*
+	     * the surrogate index in norm32 stores only the number of the surrogate
+         * index block see gennorm/store.c/getFoldedNormValue()
+	     */
+	    return ((UNSIGNED_INT_MASK) & 
+                    normTrieImpl.normTrie.getTrailValue((int)norm32, c2));
+	}
+	private static long getNorm32(int c){
+        return (UNSIGNED_INT_MASK&(normTrieImpl.normTrie.getCodePointValue(c)));
+    }
+    
+    private static long getNorm32(int c,int mask){
+        long/*unsigned*/ norm32= getNorm32(UTF16.getLeadSurrogate(c));
+        if(((norm32&mask)>0) && isNorm32LeadSurrogate(norm32)) {
+            /* c is a lead surrogate, get the real norm32 */
+            norm32=getNorm32FromSurrogatePair(norm32,UTF16.getTrailSurrogate(c));
+        }
+        return norm32; 
+    }
+	
+    /*
+	 * get a norm32 from text with complete code points
+	 * (like from decompositions)
+	 */
+	private static long/*unsigned*/ getNorm32(char[] p,int start,
+                                              int/*unsigned*/ mask) {
+	    long/*unsigned*/ norm32= getNorm32(p[start]);
+	    if(((norm32&mask)>0) && isNorm32LeadSurrogate(norm32)) {
+	        /* *p is a lead surrogate, get the real norm32 */
+	        norm32=getNorm32FromSurrogatePair(norm32, p[start+1]);
+	    }
+	    return norm32;
+	}
+
+	public static char	getFCD16(char c) {
+	    return  fcdTrieImpl.fcdTrie.getLeadValue(c);
+	}
+	
+	public static char getFCD16FromSurrogatePair(char fcd16, char c2) {
+	    /* the surrogate index in fcd16 is an absolute offset over the 
+         * start of stage 1 
+         * */
+	    return fcdTrieImpl.fcdTrie.getTrailValue(fcd16, c2);
+	}
+	
+	private static int getExtraDataIndex(long norm32) {
+	    return (int)(norm32>>EXTRA_SHIFT);
+	}
+	
+	private static final class DecomposeArgs{
+		int /*unsigned byte*/ cc;
+		int /*unsigned byte*/ trailCC;
+		int length;
+	}
+    /**
+     * 
+     * get the canonical or compatibility decomposition for one character 
+     * 
+     * @return index into the extraData array
+     */
+    private static int/*index*/ decompose(long/*unsigned*/ norm32, 
+    							          int/*unsigned*/ qcMask, 
+    							          DecomposeArgs args) {
+        int p= getExtraDataIndex(norm32);
+        args.length=extraData[p++];
+    
+        if((norm32&qcMask&QC_NFKD)!=0 && args.length>=0x100) {
+            /* use compatibility decomposition, skip canonical data */
+            p+=((args.length>>7)&1)+(args.length&DECOMP_LENGTH_MASK);
+            args.length>>=8;
+        }
+    
+        if((args.length&DECOMP_FLAG_LENGTH_HAS_CC)>0) {
+            /* get the lead and trail cc's */
+            char bothCCs=extraData[p++];
+            args.cc=(UNSIGNED_BYTE_MASK) & (bothCCs>>8);
+            args.trailCC=(UNSIGNED_BYTE_MASK) & bothCCs;
+        } else {
+            /* lead and trail cc's are both 0 */
+            args.cc=args.trailCC=0;
+        }
+    
+        args.length&=DECOMP_LENGTH_MASK;
+        return p;
+    }
+    
+       
+    /**
+     * get the canonical decomposition for one character 
+     * @return index into the extraData array
+     */
+    private static int decompose(long/*unsigned*/ norm32, 
+            			         DecomposeArgs args) {
+            			 	
+        int p= getExtraDataIndex(norm32);
+        args.length=extraData[p++];
+    
+        if((args.length&DECOMP_FLAG_LENGTH_HAS_CC)>0) {
+            /* get the lead and trail cc's */
+            char bothCCs=extraData[p++];
+            args.cc=(UNSIGNED_BYTE_MASK) & (bothCCs>>8);
+            args.trailCC=(UNSIGNED_BYTE_MASK) & bothCCs;
+        } else {
+            /* lead and trail cc's are both 0 */
+            args.cc=args.trailCC=0;
+        }
+    
+        args.length&=DECOMP_LENGTH_MASK;
+        return p;
+    }
+    
+    
+    private static final class NextCCArgs{
+    	char[] source;
+    	int next;
+    	int limit;
+    	char c;
+    	char c2;
+    }
+    
+    /*
+     * get the combining class of (c, c2)= args.source[args.next++]
+     * before: args.next<args.limit  after: args.next<=args.limit
+     * if only one code unit is used, then c2==0
+     */
+    private static int /*unsigned byte*/ getNextCC(NextCCArgs args) {
+        long /*unsigned*/ norm32;
+    
+        args.c=args.source[args.next++];
+        
+        norm32= getNorm32(args.c);
+        if((norm32 & CC_MASK)==0) {
+            args.c2=0;
+            return 0;
+        } else {
+            if(!isNorm32LeadSurrogate(norm32)) {
+                args.c2=0;
+            } else {
+                /* c is a lead surrogate, get the real norm32 */
+                if(args.next!=args.limit && 
+                        UTF16.isTrailSurrogate(args.c2=args.source[args.next])){
+                    ++args.next;
+                    norm32=getNorm32FromSurrogatePair(norm32, args.c2);
+                } else {
+                    args.c2=0;
+                    return 0;
+                }
+            }
+    
+            return (int)((UNSIGNED_BYTE_MASK) & (norm32>>CC_SHIFT));
+        }
+    }
+
+	private static final class PrevArgs{
+		char[] src;
+		int start;
+		int current;
+		char c;
+		char c2;
+	}
+	
+    /*
+     * read backwards and get norm32
+     * return 0 if the character is <minC
+     * if c2!=0 then (c2, c) is a surrogate pair (reversed - c2 is first 
+     * surrogate but read second!)
+     */
+    private static long /*unsigned*/ getPrevNorm32(PrevArgs args,
+                   						           int/*unsigned*/ minC, 
+                   						           int/*unsigned*/ mask) {
+        long/*unsigned*/ norm32;
+    
+        args.c=args.src[--args.current];
+        args.c2=0;
+    
+        /* check for a surrogate before getting norm32 to see if we need to 
+         * predecrement further 
+         */
+        if(args.c<minC) {
+            return 0;
+        } else if(!UTF16.isSurrogate(args.c)) {
+            return getNorm32(args.c);
+        } else if(UTF16.isLeadSurrogate(args.c)) {
+            /* unpaired first surrogate */
+            return 0;
+        } else if(args.current!=args.start && 
+                    UTF16.isLeadSurrogate(args.c2=args.src[args.current-1])) {
+            --args.current;
+            norm32=getNorm32(args.c2);
+    
+            if((norm32&mask)==0) {
+                /* all surrogate pairs with this lead surrogate have 
+                 * only irrelevant data 
+                 */
+                return 0;
+            } else {
+                /* norm32 must be a surrogate special */
+                return getNorm32FromSurrogatePair(norm32, args.c);
+            }
+        } else {
+            /* unpaired second surrogate */
+            args.c2=0;
+            return 0;
+        }
+    }
+    
+    /*
+     * get the combining class of (c, c2)=*--p
+     * before: start<p  after: start<=p
+     */
+    private static int /*unsigned byte*/ getPrevCC(PrevArgs args) {
+
+        return (int)((UNSIGNED_BYTE_MASK)&(getPrevNorm32(args, MIN_WITH_LEAD_CC,
+                                                         CC_MASK)>>CC_SHIFT));
+    }
+
+	/*
+	 * is this a safe boundary character for NF*D?
+	 * (lead cc==0)
+	 */
+	public static boolean isNFDSafe(long/*unsigned*/ norm32, 
+                                     int/*unsigned*/ccOrQCMask, 
+					                 int/*unsigned*/ decompQCMask) {
+	    if((norm32&ccOrQCMask)==0) {
+	        return true; /* cc==0 and no decomposition: this is NF*D safe */
+	    }
+	
+	    /* inspect its decomposition - maybe a Hangul but not a surrogate here*/
+	    if(isNorm32Regular(norm32) && (norm32&decompQCMask)!=0) {
+	        DecomposeArgs args=new DecomposeArgs();
+	        /* decomposes, get everything from the variable-length extra data */
+	        decompose(norm32, decompQCMask, args);
+	        return args.cc==0;
+	    } else {
+	        /* no decomposition (or Hangul), test the cc directly */
+	        return (norm32&CC_MASK)==0;
+	    }
+	}
+	
+	/*
+	 * is this (or does its decomposition begin with) a "true starter"?
+	 * (cc==0 and NF*C_YES)
+	 */
+    public static boolean isTrueStarter(long/*unsigned*/ norm32, 
+								          int/*unsigned*/ ccOrQCMask, 
+								          int/*unsigned*/ decompQCMask) {
+	    if((norm32&ccOrQCMask)==0) {
+	        return true; /* this is a true starter (could be Hangul or Jamo L)*/
+	    }
+	
+	    /* inspect its decomposition - not a Hangul or a surrogate here */
+	    if((norm32&decompQCMask)!=0) {
+	        int p; /* index into extra data array */
+	        DecomposeArgs args=new DecomposeArgs();
+	        /* decomposes, get everything from the variable-length extra data */
+	        p=decompose(norm32, decompQCMask, args);
+	      
+	        if(args.cc==0) {
+	            int/*unsigned*/ qcMask=ccOrQCMask&QC_MASK;
+	
+	            /* does it begin with NFC_YES? */
+	            if((getNorm32(extraData,p, qcMask)&qcMask)==0) {
+	                /* yes, the decomposition begins with a true starter */
+	                return true;
+	            }
+	        }
+	    }
+	    return false;
+	}
+
+	/* reorder UTF-16 in-place ---------------------------------------------- */
+	
+	/**
+	 * simpler, single-character version of mergeOrdered() -
+	 * bubble-insert one single code point into the preceding string
+	 * which is already canonically ordered
+	 * (c, c2) may or may not yet have been inserted at src[current]..src[p]
+	 *
+	 * it must be p=current+lengthof(c, c2) i.e. p=current+(c2==0 ? 1 : 2)
+	 *
+	 * before: src[start]..src[current] is already ordered, and
+	 *         src[current]..src[p]     may or may not hold (c, c2) but
+	 *                          must be exactly the same length as (c, c2)
+	 * after: src[start]..src[p] is ordered
+	 *
+	 * @return the trailing combining class
+	 */
+	private static int/*unsigned byte*/ insertOrdered(char[] source, 
+                                                      int start, 
+											          int current, int p,
+	               							          char c, char c2, 
+	               							          int/*unsigned byte*/ cc) {
+	    int back, preBack;
+	    int r;
+	    int prevCC, trailCC=cc;
+	
+	    if(start<current && cc!=0) {
+	        // search for the insertion point where cc>=prevCC 
+	        preBack=back=current;
+	        PrevArgs prevArgs = new PrevArgs();
+	        prevArgs.current  = current;
+	        prevArgs.start    = start;
+	        prevArgs.src	  = source;
+	        // get the prevCC 
+	        prevCC=getPrevCC(prevArgs);
+	        preBack = prevArgs.current;
+	        
+	        if(cc<prevCC) {
+	            // this will be the last code point, so keep its cc 
+	            trailCC=prevCC;
+	            back=preBack;
+	            while(start<preBack) {
+	                prevCC=getPrevCC(prevArgs);
+	                preBack=prevArgs.current;
+	                if(cc>=prevCC) {
+	                    break;
+	                }
+	                back=preBack;
+	            }
+	
+	            
+	            // this is where we are right now with all these indicies:
+	            // [start]..[pPreBack] 0..? code points that we can ignore
+	            // [pPreBack]..[pBack] 0..1 code points with prevCC<=cc
+	            // [pBack]..[current] 0..n code points with >cc, move up to insert (c, c2)
+	            // [current]..[p]         1 code point (c, c2) with cc
+	             
+	            // move the code units in between up 
+	            r=p;
+	            do {
+	                source[--r]=source[--current];
+	            } while(back!=current);
+	        }
+	    }
+	
+	    // insert (c, c2) 
+	    source[current]=c;
+	    if(c2!=0) {
+	        source[(current+1)]=c2;
+	    }
+	
+	    // we know the cc of the last code point 
+	    return trailCC;
+	}
+	
+	/**
+	 * merge two UTF-16 string parts together
+	 * to canonically order (order by combining classes) their concatenation
+	 *
+	 * the two strings may already be adjacent, so that the merging is done 
+     * in-place if the two strings are not adjacent, then the buffer holding the
+     * first one must be large enough
+	 * the second string may or may not be ordered in itself
+	 *
+	 * before: [start]..[current] is already ordered, and
+	 *         [next]..[limit]    may be ordered in itself, but
+	 *                          is not in relation to [start..current[
+	 * after: [start..current+(limit-next)[ is ordered
+	 *
+	 * the algorithm is a simple bubble-sort that takes the characters from 
+     * src[next++] and inserts them in correct combining class order into the 
+     * preceding part of the string
+	 *
+	 * since this function is called much less often than the single-code point
+	 * insertOrdered(), it just uses that for easier maintenance
+	 *
+	 * @return the trailing combining class
+	 */
+	private static int /*unsigned byte*/ mergeOrdered(char[] source,
+													  int start, 
+													  int current,
+		                                              char[] data,
+			              							  int next, 
+			              							  int limit, 
+			              							  boolean isOrdered) {
+            int r;
+            int /*unsigned byte*/ cc, trailCC=0;
+            boolean adjacent;
+        
+            adjacent= current==next;
+            NextCCArgs ncArgs = new NextCCArgs();
+            ncArgs.source = data;
+            ncArgs.next   = next;
+            ncArgs.limit  = limit;
+            
+            if(start!=current || !isOrdered) {
+                	
+                while(ncArgs.next<ncArgs.limit) {
+                    cc=getNextCC(ncArgs);
+                    if(cc==0) {
+                        // does not bubble back 
+                        trailCC=0;
+                        if(adjacent) {
+                            current=ncArgs.next;
+                        } else {
+                            data[current++]=ncArgs.c;
+                            if(ncArgs.c2!=0) {
+                                data[current++]=ncArgs.c2;
+                            }
+                        }
+                        if(isOrdered) {
+                            break;
+                        } else {
+                            start=current;
+                        }
+                    } else {
+                        r=current+(ncArgs.c2==0 ? 1 : 2);
+                        trailCC=insertOrdered(source,start, current, r, 
+                                              ncArgs.c, ncArgs.c2, cc);
+                        current=r;
+                    }
+                }
+            }
+        
+            if(ncArgs.next==ncArgs.limit) {
+                // we know the cc of the last code point 
+                return trailCC;
+            } else {
+                if(!adjacent) {
+                    // copy the second string part 
+                    do {
+                        source[current++]=data[ncArgs.next++];
+                    } while(ncArgs.next!=ncArgs.limit);
+                    ncArgs.limit=current;
+                }
+                PrevArgs prevArgs = new PrevArgs();
+                prevArgs.src   = data;
+                prevArgs.start = start;
+                prevArgs.current =  ncArgs.limit;
+                return getPrevCC(prevArgs);
+            }
+
+	}
+	private static int /*unsigned byte*/ mergeOrdered(char[] source,
+													  int start, 
+													  int current,
+		                                              char[] data,
+			              							  final int next, 
+			              							  final int limit) {
+	    return mergeOrdered(source,start,current,data,next,limit,true);
+	} 
+
+    
+      
+    public static boolean checkFCD(char[] src,int srcStart, int srcLimit) {
+
+	    char fcd16,c,c2;
+	    int prevCC=0, cc;
+		int i =srcStart, length = srcLimit;
+	
+	    for(;;) {
+            for(;;) {
+                if(i==length) {
+                    return true;
+                } else if((c=src[i++])<MIN_WITH_LEAD_CC) {
+                    prevCC=(int)-c;
+                } else if((fcd16=getFCD16(c))==0) {
+                    prevCC=0;
+                } else {
+                    break;
+                }
+            }
+
+	        // check one above-minimum, relevant code unit 
+	        if(UTF16.isLeadSurrogate(c)) {
+	            // c is a lead surrogate, get the real fcd16 
+	            if(i!=length && UTF16.isTrailSurrogate(c2=src[i])) {
+	                ++i;
+	                fcd16=getFCD16FromSurrogatePair(fcd16, c2);
+	            } else {
+	                fcd16=0;
+	            }
+	        }
+
+	        // prevCC has values from the following ranges:
+	        // 0..0xff -the previous trail combining class
+	        // <0      -the negative value of the previous code unit;
+	        //          that code unit was <MIN_WITH_LEAD_CC and its getFCD16()
+	        //          was deferred so that average text is checked faster
+	        //
+	
+	        // check the combining order 
+	        cc=(int)(fcd16>>8);
+	        if(cc!=0) {
+	            if(prevCC<0) {
+	                // the previous character was <_NORM_MIN_WITH_LEAD_CC, 
+                    // we need to get its trail cc 
+                    //
+	                prevCC=(int)(fcdTrieImpl.fcdTrie.getBMPValue(
+                                                             (char)-prevCC)&0xff
+                                                             );
+	            }
+	
+	            if(cc<prevCC) {
+	                return false;
+	            }
+	        }
+	        prevCC=(int)(fcd16&0xff);
+	    }
+	}
+    
+    public static Normalizer.QuickCheckResult quickCheck(char[] src,
+                                                            int srcStart, 
+                                                            int srcLimit,
+                                                            int minNoMaybe,
+                                                            int qcMask,
+                                                            boolean allowMaybe){
+        
+        int ccOrQCMask;
+        long norm32;
+        char c, c2;
+        char cc, prevCC;
+        long qcNorm32;
+        Normalizer.QuickCheckResult result;
+        ComposePartArgs args = new ComposePartArgs();
+        char[] buffer ;
+        int start = srcStart;
+        
+        if(!isDataLoaded) {
+            return Normalizer.MAYBE;
+        }
+        // initialize 
+        ccOrQCMask=CC_MASK|qcMask;
+        result=Normalizer.YES;
+        prevCC=0;
+                
+        for(;;) {
+            for(;;) {
+                if(srcStart==srcLimit) {
+                    return result;
+                } else if((c=src[srcStart++])>=minNoMaybe && 
+                                  (( norm32=getNorm32(c)) & ccOrQCMask)!=0) {
+                    break;
+                }
+                prevCC=0;
+            }
+            
+    
+            // check one above-minimum, relevant code unit 
+            if(isNorm32LeadSurrogate(norm32)) {
+                // c is a lead surrogate, get the real norm32 
+                if(srcStart!=srcLimit&& UTF16.isTrailSurrogate(c2=src[srcStart])) {
+                    ++srcStart;
+                    norm32=getNorm32FromSurrogatePair(norm32,c2);
+                } else {
+                    norm32=0;
+                }
+            }
+    
+            // check the combining order 
+            cc=(char)((norm32>>CC_SHIFT)&0xFF);
+            if(cc!=0 && cc<prevCC) {
+                return Normalizer.NO;
+            }
+            prevCC=cc;
+    
+            // check for "no" or "maybe" quick check flags 
+            qcNorm32 = norm32 & qcMask;
+            if((qcNorm32& QC_ANY_NO)>=1) {
+                result= Normalizer.NO;
+                break;
+            } else if(qcNorm32!=0) {
+                // "maybe" can only occur for NFC and NFKC 
+                if(allowMaybe){
+                    result=Normalizer.MAYBE;
+                }else{
+                    // normalize a section around here to see if it is really 
+                    // normalized or not 
+                    int prevStarter;
+                    int/*unsigned*/ decompQCMask;
+    
+                    decompQCMask=(qcMask<<2)&0xf; // decomposition quick check mask 
+    
+                    // find the previous starter 
+                    
+                    // set prevStarter to the beginning of the current character 
+                    prevStarter=srcStart-1; 
+                    if(UTF16.isTrailSurrogate(src[prevStarter])) {
+                        // safe because unpaired surrogates do not result 
+                        // in "maybe"
+                        --prevStarter; 
+                    }
+                    prevStarter=findPreviousStarter(src, start, prevStarter,
+                                                    ccOrQCMask, decompQCMask,
+                                                    (char)minNoMaybe);
+    
+                    // find the next true starter in [src..limit[ - modifies 
+                    // src to point to the next starter 
+                    srcStart=findNextStarter(src,srcStart, srcLimit, qcMask, 
+                                             decompQCMask,(char) minNoMaybe);
+                    
+                    //set the args for compose part
+                    args.prevCC = prevCC;
+                       
+                    // decompose and recompose [prevStarter..src[ 
+                    buffer = composePart(args,prevStarter,src,srcStart,srcLimit,qcMask);
+    
+                    // compare the normalized version with the original 
+                    if(0!=strCompare(buffer,0,args.length,src,prevStarter,(srcStart-prevStarter), false)) {
+                        result=Normalizer.NO; // normalization differs 
+                        break;
+                    }
+    
+                    // continue after the next starter 
+                }
+            }
+        }
+        return result;
+    } 
+    
+    //------------------------------------------------------ 
+    // make NFD & NFKD 
+    //------------------------------------------------------
+	public static int getDecomposition(int c /*UTF-32*/ , 
+										boolean compat,
+			                       		char[] dest,
+			                       		int destStart, 
+			                       		int destCapacity) {
+	        
+	    if( (UNSIGNED_INT_MASK & c)<=0x10ffff) {
+	        long /*unsigned*/ norm32;
+            int qcMask;
+	        int minNoMaybe;
+	        int length;
+	
+	        // initialize 
+	        if(!compat) {
+	            minNoMaybe=(int)indexes[INDEX_MIN_NFD_NO_MAYBE];
+	            qcMask=QC_NFD;
+	        } else {
+	            minNoMaybe=(int)indexes[INDEX_MIN_NFKD_NO_MAYBE];
+	            qcMask=QC_NFKD;
+	        }
+	
+	        if(c<minNoMaybe) {
+	            // trivial case 
+	            if(destCapacity>0) {
+	                dest[0]=(char)c;
+	            }
+	            return -1;
+	        }
+	
+	        /* data lookup */
+	        norm32=getNorm32(c);
+	        if((norm32&qcMask)==0) {
+	            /* simple case: no decomposition */
+	            if(c<=0xffff) {
+	                if(destCapacity>0) {
+	                    dest[0]=(char)c;
+	                }
+	                return -1;
+	            } else {
+	                if(destCapacity>=2) {
+	                    dest[0]=UTF16.getLeadSurrogate(c);
+	                    dest[1]=UTF16.getTrailSurrogate(c);
+	                }
+	                return -2;
+	            }
+	        } else if(isNorm32HangulOrJamo(norm32)) {
+	            /* Hangul syllable: decompose algorithmically */
+	            char c2;
+	
+	            c-=HANGUL_BASE;
+	
+	            c2=(char)(c%JAMO_T_COUNT);
+	            c/=JAMO_T_COUNT;
+	            if(c2>0) {
+	                if(destCapacity>=3) {
+	                    dest[2]=(char)(JAMO_T_BASE+c2);
+	                }
+	                length=3;
+	            } else {
+	                length=2;
+	            }
+	
+	            if(destCapacity>=2) {
+	                dest[1]=(char)(JAMO_V_BASE+c%JAMO_V_COUNT);
+	                dest[0]=(char)(JAMO_L_BASE+c/JAMO_V_COUNT);
+	            }
+	            return length;
+	        } else {
+	            /* c decomposes, get everything from the variable-length extra 
+                 * data 
+                 */
+	            int p, limit;
+	            DecomposeArgs args = new DecomposeArgs();
+	            /* the index into extra data array*/ 				
+	            p=decompose(norm32, qcMask, args);
+	            if(args.length<=destCapacity) {
+	                limit=p+args.length;
+	                do {
+	                    dest[destStart++]=extraData[p++];
+	                } while(p<limit);
+	            }
+	            return args.length;
+	        }
+	    } else {
+	        return 0;
+	    }
+	}
+
+	
+	public static int decompose(char[] src,int srcIndex,int srcLimit,
+								char[] dest,int destIndex,int destLimit,
+						 		boolean compat,int[] outTrailCC) {
+	           			 	
+	    char[] buffer = new char[3];
+	    int prevSrc;
+	    long norm32;
+        int ccOrQCMask, qcMask;
+	    int reorderStartIndex, length;
+	    char c, c2, minNoMaybe;
+	    int/*unsigned byte*/ cc, prevCC, trailCC;
+		char[] p;
+		int pStart;
+	    if(!compat) {
+	        minNoMaybe=(char)indexes[INDEX_MIN_NFD_NO_MAYBE];
+	        qcMask=QC_NFD;
+	    } else {
+	        minNoMaybe=(char)indexes[INDEX_MIN_NFKD_NO_MAYBE];
+	        qcMask=QC_NFKD;
+	    }
+	
+	    /* initialize */
+	    ccOrQCMask=CC_MASK|qcMask;
+	    reorderStartIndex=0;
+	    prevCC=0;
+	    norm32=0;
+	    c=0;
+		pStart=0;
+	    
+	    for(;;) {
+	        /* count code units below the minimum or with irrelevant data for 
+             * the quick check 
+             */
+	        prevSrc=srcIndex;
+
+            while(srcIndex!=srcLimit &&((c=src[srcIndex])<minNoMaybe || 
+                                        ((norm32=getNorm32(c))&ccOrQCMask)==0)){
+                prevCC=0;
+                ++srcIndex;
+            }
+
+	        /* copy these code units all at once */
+	        if(srcIndex!=prevSrc) {
+	            length=(int)(srcIndex-prevSrc);
+	            if((destIndex+length)<=destLimit) {
+	            	System.arraycopy(src,prevSrc,dest,destIndex,length);
+	            }
+	          
+	            destIndex+=length;
+	            reorderStartIndex=destIndex;
+	        }
+	
+	        /* end of source reached? */
+	        if(srcIndex==srcLimit) {
+	            break;
+	        }
+	
+	        /* c already contains *src and norm32 is set for it, increment src*/
+	        ++srcIndex;
+	
+	        /* check one above-minimum, relevant code unit */
+	        /*
+	         * generally, set p and length to the decomposition string
+	         * in simple cases, p==NULL and (c, c2) will hold the length code 
+             * units to append in all cases, set cc to the lead and trailCC to 
+             * the trail combining class
+	         *
+	         * the following merge-sort of the current character into the 
+             * preceding, canonically ordered result text will use the 
+             * optimized insertOrdered()
+	         * if there is only one single code point to process;
+	         * this is indicated with p==NULL, and (c, c2) is the character to 
+             * insert
+	         * ((c, 0) for a BMP character and (lead surrogate, trail surrogate)
+	         * for a supplementary character)
+	         * otherwise, p[length] is merged in with _mergeOrdered()
+	         */
+	        if(isNorm32HangulOrJamo(norm32)) {
+//	            if(ignoreHangul) {
+//	                c2=0;
+//	                p=NULL;
+//	                length=1;
+//	            } else {
+	                // Hangul syllable: decompose algorithmically 
+	                p=buffer;
+	                pStart=0;
+	                cc=trailCC=0;
+	
+	                c-=HANGUL_BASE;
+	
+	                c2=(char)(c%JAMO_T_COUNT);
+	                c/=JAMO_T_COUNT;
+	                if(c2>0) {
+	                    buffer[2]=(char)(JAMO_T_BASE+c2);
+	                    length=3;
+	                } else {
+	                    length=2;
+	                }
+	
+	                buffer[1]=(char)(JAMO_V_BASE+c%JAMO_V_COUNT);
+	                buffer[0]=(char)(JAMO_L_BASE+c/JAMO_V_COUNT);
+//	            }
+	        } else {
+	            if(isNorm32Regular(norm32)) {
+	                c2=0;
+	                length=1;
+	            } else {
+	                // c is a lead surrogate, get the real norm32 
+	                if(srcIndex!=srcLimit && 
+                                    UTF16.isTrailSurrogate(c2=src[srcIndex])) {
+	                    ++srcIndex;
+	                    length=2;
+	                    norm32=getNorm32FromSurrogatePair(norm32, c2);
+	                } else {
+	                    c2=0;
+	                    length=1;
+	                    norm32=0;
+	                }
+	            }
+	
+	            /* get the decomposition and the lead and trail cc's */
+	            if((norm32&qcMask)==0) {
+	                /* c does not decompose */
+	                cc=trailCC=(int)((UNSIGNED_BYTE_MASK) & (norm32>>CC_SHIFT));
+	                p=null;
+                    pStart=-1;
+	            } else {
+	            	DecomposeArgs arg = new DecomposeArgs();
+	            	/* c decomposes, get everything from the variable-length 
+                     * extra data 
+                     */
+	                pStart=decompose(norm32, qcMask, arg);
+	                p=extraData;
+	                length=arg.length;
+	                cc=arg.cc;
+	                trailCC=arg.trailCC;
+	                if(length==1) {
+	                    /* fastpath a single code unit from decomposition */
+	                    c=p[pStart];
+	                    c2=0;
+	                    p=null;
+                        pStart=-1;
+	                }
+	            }
+	        }
+	
+	        /* append the decomposition to the destination buffer, assume 
+             * length>0 
+             */
+	        if((destIndex+length)<=destLimit) {
+	            int reorderSplit=destIndex;
+	            if(p==null) {
+	                /* fastpath: single code point */
+	                if(cc!=0 && cc<prevCC) {
+	                    /* (c, c2) is out of order with respect to the preceding
+                         *  text 
+                         */
+	                    destIndex+=length;
+	                    trailCC=insertOrdered(dest,reorderStartIndex, 
+                                            reorderSplit, destIndex, c, c2, cc);
+	                } else {
+	                    /* just append (c, c2) */
+	                    dest[destIndex++]=c;
+	                    if(c2!=0) {
+	                        dest[destIndex++]=c2;
+	                    }
+	                }
+	            } else {
+	                /* general: multiple code points (ordered by themselves) 
+                     * from decomposition 
+                     */
+	                if(cc!=0 && cc<prevCC) {
+	                    /* the decomposition is out of order with respect to the
+                         *  preceding text 
+                         */
+	                    destIndex+=length;
+	                    trailCC=mergeOrdered(dest,reorderStartIndex, 
+                                          reorderSplit,p, pStart,pStart+length);
+	                } else {
+	                    /* just append the decomposition */
+	                    do {
+	                        dest[destIndex++]=p[pStart++];
+	                    } while(--length>0);
+	                }
+	            }
+	        } else {
+	            /* buffer overflow */
+	            /* keep incrementing the destIndex for preflighting */
+	            destIndex+=length;
+	        }
+	
+	        prevCC=trailCC;
+	        if(prevCC==0) {
+	            reorderStartIndex=destIndex;
+	        }
+	    }
+	
+	    outTrailCC[0]=prevCC;
+
+	    return destIndex;
+	}
+	
+	/* make NFC & NFKC ------------------------------------------------------ */
+	private static final class NextCombiningArgs{
+		char[] source;
+		int start;
+		//int limit;
+		char c;
+		char c2;
+		int/*unsigned*/ combiningIndex;
+		char /*unsigned byte*/ cc;
+	}
+	
+	/* get the composition properties of the next character */
+	private static int /*unsigned*/	getNextCombining(NextCombiningArgs args,
+                                                    int limit) {
+	    long/*unsigned*/ norm32; 
+        int combineFlags;
+	
+	    args.c=args.source[args.start++];
+	    norm32=getNorm32(args.c);
+	    if((norm32&(CC_MASK|COMBINES_ANY))==0) {
+	        args.c2=0;
+	        args.combiningIndex=0;
+	        args.cc=0;
+	        return 0;
+	    } else {
+	        if(isNorm32Regular(norm32)) {
+	            args.c2=0;
+	        } else if(isNorm32HangulOrJamo(norm32)) {
+	            /* a compatibility decomposition contained Jamos */
+	            args.c2=0;
+	            args.combiningIndex=(int)((UNSIGNED_INT_MASK)&(0xfff0|
+                                                        (norm32>>EXTRA_SHIFT)));
+	            args.cc=0;
+	            return (int)(norm32&COMBINES_ANY);
+	        } else {
+	            /* c is a lead surrogate, get the real norm32 */
+	            if(args.start!=limit && UTF16.isTrailSurrogate(args.c2=
+                                                     args.source[args.start])) {
+	                ++args.start;
+	                norm32=getNorm32FromSurrogatePair(norm32, args.c2);
+	            } else {
+	                args.c2=0;
+	                args.combiningIndex=0;
+	                args.cc=0;
+	                return 0;
+	            }
+	        }
+	
+	        combineFlags=(int)(norm32&COMBINES_ANY);
+	        if(combineFlags!=0) {
+                int index = getExtraDataIndex(norm32);
+	            args.combiningIndex=index>0 ? extraData[(index-1)] :0;
+	        }
+	
+	        args.cc=(char)((UNSIGNED_BYTE_MASK)&(norm32>>CC_SHIFT));
+	        return combineFlags;
+	    }
+	}
+	
+	/*
+	 * given a composition-result starter (c, c2) - which means its cc==0,
+	 * it combines forward, it has extra data, its norm32!=0,
+	 * it is not a Hangul or Jamo,
+	 * get just its combineFwdIndex
+	 *
+	 * norm32(c) is special if and only if c2!=0
+	 */
+	private static int/*unsigned*/ getCombiningIndexFromStarter(char c,char c2){
+	    long/*unsigned*/ norm32;
+	
+	    norm32=getNorm32(c);
+	    if(c2!=0) {
+	        norm32=getNorm32FromSurrogatePair(norm32, c2);
+	    }
+	    return extraData[(getExtraDataIndex(norm32)-1)];
+	}
+	
+	/*
+	 * Find the recomposition result for
+	 * a forward-combining character
+	 * (specified with a pointer to its part of the combiningTable[])
+	 * and a backward-combining character
+	 * (specified with its combineBackIndex).
+	 *
+	 * If these two characters combine, then set (value, value2)
+	 * with the code unit(s) of the composition character.
+	 *
+	 * Return value:
+	 * 0    do not combine
+	 * 1    combine
+	 * >1   combine, and the composition is a forward-combining starter
+	 *
+	 * See unormimp.h for a description of the composition table format.
+	 */
+	private static int/*unsigned*/ combine(char[]table,int tableStart, 
+								   int/*unsinged*/ combineBackIndex,
+	         					   int[] outValues) {
+	    int/*unsigned*/ key;
+	    int value,value2;
+	    
+		if(outValues.length<2){
+			throw new IllegalArgumentException();
+		}
+		
+	    /* search in the starter's composition table */
+	    for(;;) {
+	        key=table[tableStart++];
+	        if(key>=combineBackIndex) {
+	            break;
+	        }
+	        tableStart+= ((table[tableStart]&0x8000) != 0)? 2 : 1;
+	    }
+	
+	    /* mask off bit 15, the last-entry-in-the-list flag */
+	    if((key&0x7fff)==combineBackIndex) {
+	        /* found! combine! */
+	        value=table[tableStart];
+	
+	        /* is the composition a starter that combines forward? */
+	        key=(int)((UNSIGNED_INT_MASK)&((value&0x2000)+1));
+	
+	        /* get the composition result code point from the variable-length 
+             * result value 
+             */
+	        if((value&0x8000) != 0) {
+	            if((value&0x4000) != 0) {
+	                /* surrogate pair composition result */
+	                value=(int)((UNSIGNED_INT_MASK)&((value&0x3ff)|0xd800));
+	                value2=table[tableStart+1];
+	            } else {
+	                /* BMP composition result U+2000..U+ffff */
+	                value=table[tableStart+1];
+	                value2=0;
+	            }
+	        } else {
+	            /* BMP composition result U+0000..U+1fff */
+	            value&=0x1fff;
+	            value2=0;
+	        }
+            outValues[0]=value;
+            outValues[1]=value2;	
+	        return key;
+	    } else {
+	        /* not found */
+	        return 0;
+	    }
+	}
+	
+	
+	private static final class RecomposeArgs{
+		char[] source;
+		int start;
+		int limit;
+	}
+    /*
+     * recompose the characters in [p..limit[
+     * (which is in NFD - decomposed and canonically ordered),
+     * adjust limit, and return the trailing cc
+     *
+     * since for NFKC we may get Jamos in decompositions, we need to
+     * recompose those too
+     *
+     * note that recomposition never lengthens the text:
+     * any character consists of either one or two code units;
+     * a composition may contain at most one more code unit than the original 
+     * starter, while the combining mark that is removed has at least one code 
+     * unit
+     */
+    private static char/*unsigned byte*/ recompose(RecomposeArgs args) {
+        int  remove, q, r;
+        int /*unsigned*/ combineFlags;
+        int /*unsigned*/ combineFwdIndex, combineBackIndex;
+        int /*unsigned*/ result, value, value2;
+        int /*unsigned byte*/  prevCC;
+        boolean starterIsSupplementary;
+    	int starter;
+    	int[] outValues = new int[2];
+        starter=-1;                   /* no starter */
+        combineFwdIndex=0;            /* will not be used until starter!=NULL */
+        starterIsSupplementary=false; /* will not be used until starter!=NULL */
+        prevCC=0;
+        
+        NextCombiningArgs ncArg = new NextCombiningArgs();
+        ncArg.source  = args.source;
+        
+        ncArg.cc      =0;
+        ncArg.c2      =0;    
+
+        for(;;) {
+            ncArg.start = args.start;
+            combineFlags=getNextCombining(ncArg,args.limit);
+            combineBackIndex=ncArg.combiningIndex;
+            args.start = ncArg.start;
+                        
+            if(((combineFlags&COMBINES_BACK)!=0) && starter!=-1) {
+                if((combineBackIndex&0x8000)!=0) {
+                    /* c is a Jamo V/T, see if we can compose it with the 
+                     * previous character 
+                     */
+                    remove=-1; /* NULL while no Hangul composition */
+                    ncArg.c2=args.source[starter];
+                    if(combineBackIndex==0xfff2) {
+                        /* Jamo V, compose with previous Jamo L and following 
+                         * Jamo T 
+                         */
+                        ncArg.c2=(char)(ncArg.c2-JAMO_L_BASE);
+                        if(ncArg.c2<JAMO_L_COUNT) {
+                            remove=args.start-1;
+                            ncArg.c=(char)(HANGUL_BASE+(ncArg.c2*JAMO_V_COUNT+
+                                           (ncArg.c-JAMO_V_BASE))*JAMO_T_COUNT);
+                            if(args.start!=args.limit && 
+                                        (ncArg.c2=(char)(args.source[args.start]
+                                         -JAMO_T_BASE))<JAMO_T_COUNT) {
+                                ++args.start;
+                                ncArg.c+=ncArg.c2;
+                            }
+                            args.source[starter]=ncArg.c;
+                        }
+
+                    }
+    
+                    if(remove!=-1) {
+                        /* remove the Jamo(s) */
+                        q=remove;
+                        r=args.start;
+                        while(r<args.limit) {
+                            args.source[q++]=args.source[r++];
+                        }
+                        args.start=remove;
+                        args.limit=q;
+                    }
+    
+                    ncArg.c2=0; /* c2 held *starter temporarily */
+    
+                    /*
+                     * now: cc==0 and the combining index does not include 
+                     * "forward" -> the rest of the loop body will reset starter
+                     * to NULL; technically, a composed Hangul syllable is a 
+                     * starter, but it does not combine forward now that we have
+                     * consumed all eligible Jamos; for Jamo V/T, combineFlags 
+                     * does not contain _NORM_COMBINES_FWD
+                     */
+    
+                } else if(
+                    /* the starter is not a Jamo V/T and */
+                    !((combineFwdIndex&0x8000)!=0) &&
+                    /* the combining mark is not blocked and */
+                    (prevCC<ncArg.cc || prevCC==0) &&
+                    /* the starter and the combining mark (c, c2) do combine */
+                    0!=(result=combine(combiningTable,combineFwdIndex, 
+                                       combineBackIndex, outValues))
+                ) {
+                	value=outValues[0];
+                	value2=outValues[1];
+                    /* replace the starter with the composition, remove the 
+                     * combining mark 
+                     */
+                    remove= ncArg.c2==0 ? args.start-1 : args.start-2; /* index to the combining mark */
+    
+                    /* replace the starter with the composition */
+                    args.source[starter]=(char)value;
+                    if(starterIsSupplementary) {
+                        if(value2!=0) {
+                            /* both are supplementary */
+                            args.source[starter+1]=(char)value2;
+                        } else {
+                            /* the composition is shorter than the starter, 
+                             * move the intermediate characters forward one */
+                            starterIsSupplementary=false;
+                            q=starter+1;
+                            r=q+1;
+                            while(r<remove) {
+                                args.source[q++]=args.source[r++];
+                            }
+                            --remove;
+                        }
+                    } else if(value2!=0) {
+                        /* the composition is longer than the starter, 
+                         * move the intermediate characters back one */
+                        starterIsSupplementary=true;
+                        /* temporarily increment for the loop boundary */
+                        ++starter; 
+                        q=remove;
+                        r=++remove;
+                        while(starter<q) {
+                            args.source[--r]=args.source[--q];
+                        }
+                        args.source[starter]=(char)value2;
+                        --starter; /* undo the temporary increment */
+                    /* } else { both are on the BMP, nothing more to do */
+                    }
+    
+                    /* remove the combining mark by moving the following text 
+                     * over it */
+                    if(remove<args.start) {
+                        q=remove;
+                        r=args.start;
+                        while(r<args.limit) {
+                            args.source[q++]=args.source[r++];
+                        }
+                        args.start=remove;
+                        args.limit=q;
+                    }
+    
+                    /* keep prevCC because we removed the combining mark */
+    
+                    /* done? */
+                    if(args.start==args.limit) {
+                        return (char)prevCC;
+                    }
+    
+                    /* is the composition a starter that combines forward? */
+                    if(result>1) {
+                       combineFwdIndex=getCombiningIndexFromStarter((char)value,
+                                                                  (char)value2);
+                    } else {
+                       starter=-1;
+                    }
+    
+                    /* we combined and set prevCC, continue with looking for 
+                     * compositions */
+                    continue;
+                }
+            }
+    
+            /* no combination this time */
+            prevCC=ncArg.cc;
+            if(args.start==args.limit) {
+                return (char)prevCC;
+            }
+    
+            /* if (c, c2) did not combine, then check if it is a starter */
+            if(ncArg.cc==0) {
+                /* found a new starter */
+                if((combineFlags&COMBINES_FWD)!=0) {
+                    /* it may combine with something, prepare for it */
+                    if(ncArg.c2==0) {
+                        starterIsSupplementary=false;
+                        starter=args.start-1;
+                    } else {
+                        starterIsSupplementary=false;
+                        starter=args.start-2;
+                    }
+                    combineFwdIndex=combineBackIndex;
+                } else {
+                    /* it will not combine with anything */
+                    starter=-1;
+                }
+            }
+        }
+    }
+   
+    // find the last true starter between src[start]....src[current] going 
+    // backwards and return its index
+    private static int findPreviousStarter(char[]src, int srcStart, int current, 
+                                          int/*unsigned*/ ccOrQCMask, 
+                                          int/*unsigned*/ decompQCMask,
+                                          char minNoMaybe) { 
+       long norm32; 
+       PrevArgs args = new PrevArgs();
+       args.src = src;
+       args.start = srcStart;
+       args.current = current;
+       
+       while(args.start<args.current) { 
+           norm32= getPrevNorm32(args, minNoMaybe, ccOrQCMask|decompQCMask); 
+           if(isTrueStarter(norm32, ccOrQCMask, decompQCMask)) { 
+               break; 
+           } 
+       } 
+       return args.current; 
+    }
+	
+    /* find the first true starter in [src..limit[ and return the 
+     * pointer to it 
+     */
+	private static int/*index*/	findNextStarter(char[] src,int start,int limit,
+	                 				            int/*unsigned*/ qcMask, 
+	                 				            int/*unsigned*/ decompQCMask, 
+	                 				            char minNoMaybe) {
+	    int p;
+	    long/*unsigned*/ norm32; 
+        int ccOrQCMask;
+	    char c, c2;
+	
+	    ccOrQCMask=CC_MASK|qcMask;
+	    
+		DecomposeArgs decompArgs = new DecomposeArgs();
+
+	    for(;;) {
+	        if(start==limit) {
+	            break; /* end of string */
+	        }
+	        c=src[start];
+	        if(c<minNoMaybe) {
+	            break; /* catches NUL terminater, too */
+	        }
+	
+	        norm32=getNorm32(c);
+	        if((norm32&ccOrQCMask)==0) {
+	            break; /* true starter */
+	        }
+	
+	        if(isNorm32LeadSurrogate(norm32)) {
+	            /* c is a lead surrogate, get the real norm32 */
+	            if((start+1)==limit || 
+                                   !UTF16.isTrailSurrogate(c2=(src[start+1]))){
+                    /* unmatched first surrogate: counts as a true starter */                  
+	                break; 
+	            }
+	            norm32=getNorm32FromSurrogatePair(norm32, c2);
+	
+	            if((norm32&ccOrQCMask)==0) {
+	                break; /* true starter */
+	            }
+	        } else {
+	            c2=0;
+	        }
+	
+	        /* (c, c2) is not a true starter but its decomposition may be */
+	        if((norm32&decompQCMask)!=0) {
+	            /* (c, c2) decomposes, get everything from the variable-length
+                 *  extra data */
+	            p=decompose(norm32, decompQCMask, decompArgs);
+	
+	            /* get the first character's norm32 to check if it is a true 
+                 * starter */
+	            if(decompArgs.cc==0 && (getNorm32(extraData,p, qcMask)&qcMask)==0) {
+	                break; /* true starter */
+	            }
+	        }
+	
+	        start+= c2==0 ? 1 : 2; /* not a true starter, continue */
+	    }
+	
+	    return start;
+	}
+	
+    
+	private static final class ComposePartArgs{
+		int prevCC;
+        int length;   /* length of decomposed part */
+	}
+	    
+ 
+	private static char[] composePart(ComposePartArgs args, 
+                                      int prevStarter, 
+				       	              char[] src, int start, int limit,
+	             			          int/*unsigned*/ qcMask) {
+	    int recomposeLimit;
+        boolean compat =((qcMask&QC_NFKC)!=0);
+        
+	    /* decompose [prevStarter..src[ */
+        int[] outTrailCC = new int[1];
+        char[] buffer = new char[(limit-prevStarter)*MAX_BUFFER_SIZE];
+
+        for(;;){
+            args.length=decompose(src,prevStarter,(start),
+                                      buffer,0,buffer.length, 
+                                      compat,outTrailCC);
+            if(args.length<=buffer.length){
+                break;
+            }else{
+                buffer = new char[args.length];
+            }
+        } 
+	
+	    /* recompose the decomposition */
+	    recomposeLimit=args.length;
+	  	
+	    if(args.length>=2) {
+	        RecomposeArgs rcArgs = new RecomposeArgs();
+	        rcArgs.source	= buffer;
+	        rcArgs.start    = 0;
+	        rcArgs.limit	= recomposeLimit; 
+	        args.prevCC=recompose(rcArgs);
+	        recomposeLimit = rcArgs.limit;
+	    }
+        
+	    /* return with a pointer to the recomposition and its length */
+	    args.length=recomposeLimit;
+	    return buffer;
+	}
+    
+	private static boolean composeHangul(char prev, char c,
+								         long/*unsigned*/ norm32, 
+								         char[] src,int[] srcIndex, int limit,
+	               				         boolean compat, 
+                                         char[] dest,int destIndex) {
+	    int start=srcIndex[0];
+	    if(isJamoVTNorm32JamoV(norm32)) {
+	        /* c is a Jamo V, compose with previous Jamo L and 
+             * following Jamo T */
+	        prev=(char)(prev-JAMO_L_BASE);
+	        if(prev<JAMO_L_COUNT) {
+	            c=(char)(HANGUL_BASE+(prev*JAMO_V_COUNT+
+                                                 (c-JAMO_V_BASE))*JAMO_T_COUNT);
+	
+	            /* check if the next character is a Jamo T (normal or 
+                 * compatibility) */
+	            if(start!=limit) {
+	                char next, t;
+	
+	                next=src[start];
+	                if((t=(char)(next-JAMO_T_BASE))<JAMO_T_COUNT) {
+	                    /* normal Jamo T */
+	                    ++start;
+	                    c+=t;
+	                } else if(compat) {
+	                    /* if NFKC, then check for compatibility Jamo T 
+                         * (BMP only) */
+	                    norm32=getNorm32(next);
+	                    if(isNorm32Regular(norm32) && ((norm32&QC_NFKD)!=0)) {
+	                        int p /*index into extra data array*/;
+	                        DecomposeArgs dcArgs = new DecomposeArgs();
+	                        p=decompose(norm32, QC_NFKD, dcArgs);
+	                        if(dcArgs.length==1 && 
+                                   (t=(char)(extraData[p]-JAMO_T_BASE))
+                                                   <JAMO_T_COUNT) {
+	                            /* compatibility Jamo T */
+	                            ++start;
+	                            c+=t;
+	                        }
+	                    }
+	                }
+	            }
+
+                dest[destIndex]=c;
+                srcIndex[0]=start;
+	            return true;
+	        }
+	    } else if(isHangulWithoutJamoT(prev)) {
+	        /* c is a Jamo T, compose with previous Hangul LV that does not 
+             * contain a Jamo T */
+            dest[destIndex]=(char)(prev+(c-JAMO_T_BASE));
+	        srcIndex[0]=start;
+	        return true;
+	    }
+	    return false;
+	}
+    
+    public static int compose(char[] src, char[] dest,boolean compat){
+        return compose(src,0,src.length,dest,0,dest.length,compat);
+    }
+    
+    
+    public static int compose(char[] src, int srcIndex, int srcLimit,
+                              char[] dest,int destIndex,int destLimit,
+                              boolean compat) {
+        
+        int prevSrc, prevStarter;
+        long/*unsigned*/ norm32; 
+        int ccOrQCMask, qcMask;
+        int  reorderStartIndex, length;
+        char c, c2, minNoMaybe;
+        int/*unsigned byte*/ cc, prevCC;
+        int[] ioIndex = new int[1];
+        
+        if(!compat) {
+            minNoMaybe=(char)indexes[INDEX_MIN_NFC_NO_MAYBE];
+            qcMask=QC_NFC;
+        } else {
+            minNoMaybe=(char)indexes[INDEX_MIN_NFKC_NO_MAYBE];
+            qcMask=QC_NFKC;
+        }
+    
+        /*
+         * prevStarter points to the last character before the current one
+         * that is a "true" starter with cc==0 and quick check "yes".
+         *
+         * prevStarter will be used instead of looking for a true starter
+         * while incrementally decomposing [prevStarter..prevSrc[
+         * in _composePart(). Having a good prevStarter allows to just decompose
+         * the entire [prevStarter..prevSrc[.
+         *
+         * When _composePart() backs out from prevSrc back to prevStarter,
+         * then it also backs out destIndex by the same amount.
+         * Therefore, at all times, the (prevSrc-prevStarter) source units
+         * must correspond 1:1 to destination units counted with destIndex,
+         * except for reordering.
+         * This is true for the qc "yes" characters copied in the fast loop,
+         * and for pure reordering.
+         * prevStarter must be set forward to src when this is not true:
+         * In _composePart() and after composing a Hangul syllable.
+         *
+         * This mechanism relies on the assumption that the decomposition of a 
+         * true starter also begins with a true starter. gennorm/store.c checks 
+         * for this.
+         */
+        prevStarter=srcIndex;
+    
+        ccOrQCMask=CC_MASK|qcMask;
+        /*destIndex=*/reorderStartIndex=0;/* ####TODO#### check this **/
+        prevCC=0;
+    
+        /* avoid compiler warnings */
+        norm32=0;
+        c=0;
+    
+        for(;;) {
+            /* count code units below the minimum or with irrelevant data for 
+             * the quick check */
+            prevSrc=srcIndex;
+
+            while(srcIndex!=srcLimit && ((c=src[srcIndex])<minNoMaybe || 
+                     ((norm32=getNorm32(c))&ccOrQCMask)==0)) {
+                prevCC=0;
+                ++srcIndex;
+            }
+
+    
+            /* copy these code units all at once */
+            if(srcIndex!=prevSrc) {
+                length=(int)(srcIndex-prevSrc);
+                if((destIndex+length)<=destLimit) {
+                    System.arraycopy(src,prevSrc,dest,destIndex,length);
+                }
+                destIndex+=length;
+                reorderStartIndex=destIndex;
+    
+                /* set prevStarter to the last character in the quick check 
+                 * loop */
+                prevStarter=srcIndex-1;
+                if(UTF16.isTrailSurrogate(src[prevStarter]) && 
+                    prevSrc<prevStarter && 
+                    UTF16.isLeadSurrogate(src[(prevStarter-1)])) {
+                    --prevStarter;
+                }
+    
+                prevSrc=srcIndex;
+            }
+    
+            /* end of source reached? */
+            if(srcIndex==srcLimit) {
+                break;
+            }
+    
+            /* c already contains *src and norm32 is set for it, increment src*/
+            ++srcIndex;
+    
+            /*
+             * source buffer pointers:
+             *
+             *  all done      quick check   current char  not yet
+             *                "yes" but     (c, c2)       processed
+             *                may combine
+             *                forward
+             * [-------------[-------------[-------------[-------------[
+             * |             |             |             |             |
+             * start         prevStarter   prevSrc       src           limit
+             *
+             *
+             * destination buffer pointers and indexes:
+             *
+             *  all done      might take    not filled yet
+             *                characters for
+             *                reordering
+             * [-------------[-------------[-------------[
+             * |             |             |             |
+             * dest      reorderStartIndex destIndex     destCapacity
+             */
+    
+            /* check one above-minimum, relevant code unit */
+            /*
+             * norm32 is for c=*(src-1), and the quick check flag is "no" or 
+             * "maybe", and/or cc!=0
+             * check for Jamo V/T, then for surrogates and regular characters
+             * c is not a Hangul syllable or Jamo L because
+             * they are not marked with no/maybe for NFC & NFKC(and their cc==0)
+             */
+            if(isNorm32HangulOrJamo(norm32)) {
+                /*
+                 * c is a Jamo V/T:
+                 * try to compose with the previous character, Jamo V also with 
+                 * a following Jamo T, and set values here right now in case we 
+                 * just continue with the main loop
+                 */
+                prevCC=cc=0;
+                reorderStartIndex=destIndex;
+                ioIndex[0]=srcIndex;
+                if( /* ### TODO: do we need to do this? !ignoreHangul && ### */
+                    destIndex>0 &&
+                    composeHangul(src[(prevSrc-1)], c, norm32,src, ioIndex,
+                                  srcLimit, compat, dest,
+                                  destIndex<=destLimit ? destIndex-1: 0)
+                ) {
+                    srcIndex=ioIndex[0];
+                    prevStarter=srcIndex;
+                    continue;
+                }
+                
+                srcIndex = ioIndex[0];
+    
+                /* the Jamo V/T did not compose into a Hangul syllable, just 
+                 * append to dest */
+                c2=0;
+                length=1;
+                prevStarter=prevSrc;
+            } else {
+                if(isNorm32Regular(norm32)) {
+                    c2=0;
+                    length=1;
+                } else {
+                    /* c is a lead surrogate, get the real norm32 */
+                    if(srcIndex!=srcLimit &&
+                                     UTF16.isTrailSurrogate(c2=src[srcIndex])) {
+                        ++srcIndex;
+                        length=2;
+                        norm32=getNorm32FromSurrogatePair(norm32, c2);
+                    } else {
+                        /* c is an unpaired lead surrogate, nothing to do */
+                        c2=0;
+                        length=1;
+                        norm32=0;
+                    }
+                }
+                ComposePartArgs args =new ComposePartArgs();
+                
+                /* we are looking at the character (c, c2) at [prevSrc..src[ */
+                if((norm32&qcMask)==0) {
+                    cc=(int)((UNSIGNED_BYTE_MASK)&(norm32>>CC_SHIFT));
+                } else {
+                    char[] p;
+    
+                    /*
+                     * find appropriate boundaries around this character,
+                     * decompose the source text from between the boundaries,
+                     * and recompose it
+                     *
+                     * this puts the intermediate text into the side buffer because
+                     * it might be longer than the recomposition end result,
+                     * or the destination buffer may be too short or missing
+                     *
+                     * note that destIndex may be adjusted backwards to account
+                     * for source text that passed the quick check but needed to
+                     * take part in the recomposition
+                     */
+                    int decompQCMask=(qcMask<<2)&0xf; /* decomposition quick check mask */
+                    /*
+		             * find the last true starter in [prevStarter..src[
+		             * it is either the decomposition of the current character (at prevSrc),
+		             * or prevStarter
+		             */
+		            if(isTrueStarter(norm32, CC_MASK|qcMask, decompQCMask)) {
+		                prevStarter=prevSrc;
+		            } else {
+		                /* adjust destIndex: back out what had been copied with qc "yes" */
+		                destIndex-=prevSrc-prevStarter;
+		            }
+		        
+		            /* find the next true starter in [src..limit[ */
+		            srcIndex=findNextStarter(src, srcIndex,srcLimit, qcMask, 
+                                               decompQCMask, minNoMaybe);
+                    //args.prevStarter = prevStarter;
+                    args.prevCC	= prevCC;                    
+                    //args.destIndex = destIndex;
+                    args.length = length;
+                    p=composePart(args,prevStarter,src,srcIndex,srcLimit,qcMask);
+                        
+                    if(p==null) {
+                        /* an error occurred (out of memory) */
+                        break;
+                    }
+                    
+                    prevCC      = args.prevCC;
+                    length      = args.length;
+                    
+                    /* append the recomposed buffer contents to the destination 
+                     * buffer */
+                    if((destIndex+args.length)<=destLimit) {
+                        int i=0;
+                        while(i<args.length) {
+                            dest[destIndex++]=p[i++];
+                            --length;
+                        }
+                    } else {
+                        /* buffer overflow */
+                        /* keep incrementing the destIndex for preflighting */
+                        destIndex+=length;
+                    }
+    
+                    prevStarter=srcIndex;
+                    continue;
+                }
+            }
+    
+            /* append the single code point (c, c2) to the destination buffer */
+            if((destIndex+length)<=destLimit) {
+                if(cc!=0 && cc<prevCC) {
+                    /* (c, c2) is out of order with respect to the preceding 
+                     * text */
+                    int reorderSplit= destIndex;
+                    destIndex+=length;
+                    prevCC=insertOrdered(dest,reorderStartIndex, reorderSplit, 
+                                         destIndex, c, c2, cc);
+                } else {
+                    /* just append (c, c2) */
+                    dest[destIndex++]=c;
+                    if(c2!=0) {
+                        dest[destIndex++]=c2;
+                    }
+                    prevCC=cc;
+                }
+            } else {
+                /* buffer overflow */
+                /* keep incrementing the destIndex for preflighting */
+                destIndex+=length;
+                prevCC=cc;
+            }
+        }
+
+        return destIndex;
+    }
+	/* make FCD --------------------------------------------------------------*/
+	
+	private static int/*index*/ findSafeFCD(char[] src, int start, int limit, 
+                                            char fcd16) {
+	    char c, c2;
+	
+	    /*
+	     * find the first position in [src..limit[ after some cc==0 according 
+         * to FCD data
+	     *
+	     * at the beginning of the loop, we have fcd16 from before src
+	     *
+	     * stop at positions:
+	     * - after trail cc==0
+	     * - at the end of the source
+	     * - before lead cc==0
+	     */
+	    for(;;) {
+	        /* stop if trail cc==0 for the previous character */
+	        if((fcd16&0xff)==0) {
+	            break;
+	        }
+	
+	        /* get c=*src - stop at end of string */
+	        if(start==limit) {
+	            break;
+	        }
+	        c=src[start];
+	
+	        /* stop if lead cc==0 for this character */
+	        if(c<MIN_WITH_LEAD_CC || (fcd16=getFCD16(c))==0) {
+	            break; /* catches terminating NUL, too */
+	        }
+	
+	        if(!UTF16.isLeadSurrogate(c)) {
+	            if(fcd16<=0xff) {
+	                break;
+	            }
+	            ++start;
+	        } else if(start+1!=limit && 
+                                    (UTF16.isTrailSurrogate(c2=src[start+1]))) {
+	            /* c is a lead surrogate, get the real fcd16 */
+	            fcd16=getFCD16FromSurrogatePair(fcd16, c2);
+	            if(fcd16<=0xff) {
+	                break;
+	            }
+	            start+=2;
+	        } else {
+	            /* c is an unpaired first surrogate, lead cc==0 */
+	            break;
+	        }
+	    }
+	
+	    return start;
+	}
+	
+	private static int/*unsigned byte*/ decomposeFCD(char[] src, 
+                                                     int start,int decompLimit,
+	                                                 char[] dest, 
+                                                     int[] destIndexArr) {
+	    char[] p=null;
+        int pStart=-1;
+        
+	    long /*unsigned int*/ norm32;
+	    int reorderStartIndex;
+	    char c, c2;
+        int/*unsigned byte*/ prevCC;
+        DecomposeArgs args = new DecomposeArgs();
+        int destIndex = destIndexArr[0];
+	    /*
+	     * canonically decompose [src..decompLimit[
+	     *
+	     * all characters in this range have some non-zero cc,
+	     * directly or in decomposition,
+	     * so that we do not need to check in the following for quick-check 
+         * limits etc.
+	     *
+	     * there _are_ _no_ Hangul syllables or Jamos in here because they are 
+         * FCD-safe (cc==0)!
+	     *
+	     * we also do not need to check for c==0 because we have an established 
+         * decompLimit
+	     */
+	    reorderStartIndex=destIndex;
+	    prevCC=0;
+
+	    while(start<decompLimit) {
+	        c=src[start++];
+	        norm32=getNorm32(c);
+	        if(isNorm32Regular(norm32)) {
+	            c2=0;
+	            args.length=1;
+	        } else {
+	            /*
+	             * reminder: this function is called with [src..decompLimit[
+	             * not containing any Hangul/Jamo characters,
+	             * therefore the only specials are lead surrogates
+	             */
+	            /* c is a lead surrogate, get the real norm32 */
+	            if(start!=decompLimit && UTF16.isTrailSurrogate(c2=src[start])){
+	                ++start;
+	                args.length=2;
+	                norm32=getNorm32FromSurrogatePair(norm32, c2);
+	            } else {
+	                c2=0;
+	                args.length=1;
+	                norm32=0;
+	            }
+	        }
+	
+	        /* get the decomposition and the lead and trail cc's */
+	        if((norm32&QC_NFD)==0) {
+	            /* c does not decompose */
+	            args.cc=args.trailCC=(int)((UNSIGNED_BYTE_MASK)&
+                                                            (norm32>>CC_SHIFT));
+	            p=null;
+	        } else {
+	            /* c decomposes, get everything from the variable-length extra 
+                 * data */
+	            pStart=decompose(norm32, args);
+	            p=extraData;
+                if(args.length==1) {
+	                /* fastpath a single code unit from decomposition */
+	                c=p[pStart];
+	                c2=0;
+	                p=null;
+	            }
+	        }
+	
+	        /* append the decomposition to the destination buffer, assume 
+             * length>0 */
+	        if((destIndex+args.length)<=dest.length) {
+	            int reorderSplit=destIndex;
+	            if(p==null) {
+	                /* fastpath: single code point */
+	                if(args.cc!=0 && args.cc<prevCC) {
+	                    /* (c, c2) is out of order with respect to the preceding
+                         *  text */
+	                    destIndex+=args.length;
+	                    args.trailCC=insertOrdered(dest,reorderStartIndex, 
+                                                   reorderSplit, destIndex, 
+                                                   c, c2, args.cc);
+	                } else {
+	                    /* just append (c, c2) */
+	                    dest[destIndex++]=c;
+	                    if(c2!=0) {
+	                        dest[destIndex++]=c2;
+	                    }
+	                }
+	            } else {
+	                /* general: multiple code points (ordered by themselves) 
+                     * from decomposition */
+	                if(args.cc!=0 && args.cc<prevCC) {
+	                    /* the decomposition is out of order with respect to 
+                         * the preceding text */
+	                    destIndex+=args.length;
+	                    args.trailCC=mergeOrdered(dest,reorderStartIndex, 
+                                                  reorderSplit, p, pStart,
+                                                  pStart+args.length);
+	                } else {
+	                    /* just append the decomposition */
+	                    do {
+	                        dest[destIndex++]=p[pStart++];
+	                    } while(--args.length>0);
+	                }
+	            }
+	        } else {
+	            /* buffer overflow */
+	            /* keep incrementing the destIndex for preflighting */
+	            destIndex+=args.length;
+	        }
+	
+	        prevCC=args.trailCC;
+	        if(prevCC==0) {
+	            reorderStartIndex=destIndex;
+	        }
+	    }
+	    destIndexArr[0]=destIndex;
+	    return prevCC;
+	}
+	
+	public static int makeFCD(char[] src,  int srcStart,  int srcLimit,
+                              char[] dest, int destStart, int destLimit) {
+                           
+	    int prevSrc, decompStart;
+	    int destIndex, length;
+	    char c, c2;
+	    int /* unsigned int*/ fcd16;
+	    int prevCC, cc;
+	
+	    /* initialize */
+	    decompStart=srcStart;
+	    destIndex=destStart;
+	    prevCC=0;
+	    c=0;
+	    fcd16=0;
+		int[] destIndexArr = new int[1];
+        destIndexArr[0]=destIndex;
+        
+	    for(;;) {
+	        /* skip a run of code units below the minimum or with irrelevant 
+             * data for the FCD check */
+	        prevSrc=srcStart;
+
+            for(;;) {
+                if(srcStart==srcLimit) {
+                    break;
+                } else if((c=src[srcStart])<MIN_WITH_LEAD_CC) {
+                    prevCC=(int)-c;
+                } else if((fcd16=getFCD16(c))==0) {
+                    prevCC=0;
+                } else {
+                    break;
+                }
+                ++srcStart;
+            }
+
+	
+	        /*
+	         * prevCC has values from the following ranges:
+	         * 0..0xff - the previous trail combining class
+	         * <0      - the negative value of the previous code unit;
+	         *           that code unit was <_NORM_MIN_WITH_LEAD_CC and its 
+             *           getFCD16()
+	         *           was deferred so that average text is checked faster
+	         */
+	
+	        /* copy these code units all at once */
+	        if(srcStart!=prevSrc) {
+	            length=(int)(srcStart-prevSrc);
+	            if((destIndex+length)<=destLimit) {
+                    System.arraycopy(src,prevSrc,dest,destIndex,length);
+	            }
+	            destIndex+=length;
+	            prevSrc=srcStart;
+	
+	            /* prevCC<0 is only possible from the above loop, i.e., only if
+                 *  prevSrc<src */
+	            if(prevCC<0) {
+	                /* the previous character was <_NORM_MIN_WITH_LEAD_CC, we 
+                     * need to get its trail cc */
+	                prevCC=(int)(getFCD16((char)-prevCC)&0xff);
+	
+	                /*
+	                 * set a pointer to this below-U+0300 character;
+	                 * if prevCC==0 then it will moved to after this character 
+                     * below
+	                 */
+	                decompStart=prevSrc-1;
+	            }
+	        }
+	        /*
+	         * now:
+	         * prevSrc==src - used later to adjust destIndex before 
+             *          decomposition
+	         * prevCC>=0
+	         */
+	
+	        /* end of source reached? */
+	        if(srcStart==srcLimit) {
+	            break;
+	        }
+	
+	        /* set a pointer to after the last source position where prevCC==0*/
+	        if(prevCC==0) {
+	            decompStart=prevSrc;
+	        }
+	
+	        /* c already contains *src and fcd16 is set for it, increment src */
+	        ++srcStart;
+	
+	        /* check one above-minimum, relevant code unit */
+	        if(UTF16.isLeadSurrogate(c)) {
+	            /* c is a lead surrogate, get the real fcd16 */
+	            if(srcStart!=srcLimit && 
+                                     UTF16.isTrailSurrogate(c2=src[srcStart])) {
+	                ++srcStart;
+	                fcd16=getFCD16FromSurrogatePair((char)fcd16, c2);
+	            } else {
+	                c2=0;
+	                fcd16=0;
+	            }
+	        } else {
+	            c2=0;
+	        }
+	
+	        /* we are looking at the character (c, c2) at [prevSrc..src[ */
+	
+	        /* check the combining order, get the lead cc */
+	        cc=(int)(fcd16>>8);
+	        if(cc==0 || cc>=prevCC) {
+	            /* the order is ok */
+	            if(cc==0) {
+	                decompStart=prevSrc;
+	            }
+	            prevCC=(int)(fcd16&0xff);
+	
+	            /* just append (c, c2) */
+	            length= c2==0 ? 1 : 2;
+	            if((destIndex+length)<=destLimit) {
+	                dest[destIndex++]=c;
+	                if(c2!=0) {
+	                    dest[destIndex++]=c2;
+	                }
+	            } else {
+	                destIndex+=length;
+	            }
+	        } else {
+	            /*
+	             * back out the part of the source that we copied already but
+	             * is now going to be decomposed;
+	             * prevSrc is set to after what was copied
+	             */
+	            destIndex-=(int)(prevSrc-decompStart);
+	
+	            /*
+	             * find the part of the source that needs to be decomposed;
+	             * to be safe and simple, decompose to before the next character
+                 * with lead cc==0
+	             */
+	            srcStart=findSafeFCD(src,srcStart, srcLimit, (char)fcd16);
+	
+	            /*
+	             * the source text does not fulfill the conditions for FCD;
+	             * decompose and reorder a limited piece of the text
+	             */
+                destIndexArr[0] = destIndex;
+	            prevCC=decomposeFCD(src,decompStart, srcStart,dest, 
+                                    destIndexArr);
+	            decompStart=srcStart;
+                destIndex=destIndexArr[0];
+	        }
+	    }
+        
+        return destIndex;
+	
+	}
+
+	public static int getCombiningClass(int c) {
+	    long norm32;
+        if(c<=0xffff) {
+            norm32=getNorm32((char)c);
+        } else {
+            norm32=getNorm32(UTF16.getLeadSurrogate(c));
+            if((norm32&CC_MASK)!=0) {
+                norm32=getNorm32FromSurrogatePair(norm32,UTF16.getTrailSurrogate(c));
+            }
+        }
+        return (char)((norm32>>CC_SHIFT)&0xFF);
+	}
+	
+	public static boolean isFullCompositionExclusion(int c) {
+	    if(isFormatVersion_2_1) {
+	        int aux =auxTrieImpl.auxTrie.getCodePointValue(c);
+	        return (boolean)((aux & AUX_COMP_EX_MASK)!=0);
+	    } else {
+	        return false;
+	    }
+	}
+	
+	public static boolean isCanonSafeStart(int c) {
+	    if(isFormatVersion_2_1) {
+	        int aux = auxTrieImpl.auxTrie.getCodePointValue(c);
+	        return (boolean)((aux & AUX_UNSAFE_MASK)==0);
+	    } else {
+	        return false;
+	    }
+	}
+	
+	public static boolean getCanonStartSet(int c, USerializedSet fillSet) {
+
+	    if(fillSet!=null && canonStartSets!=null) {
+	 		/*
+	         * binary search for c
+	         *
+	         * There are two search tables,
+	         * one for BMP code points and one for supplementary ones.
+	         * See unormimp.h for details.
+	         */
+	        char[] table;
+	        int i=0, start, limit;
+	        
+            int[] indexes = (int[]) canonStartSets[CANON_SET_INDICIES_INDEX];
+            char[] startSets = (char[]) canonStartSets[CANON_SET_START_SETS_INDEX];
+            
+	        if(c<=0xffff) {
+	            table=(char[]) canonStartSets[CANON_SET_BMP_TABLE_INDEX];
+	            start=0;
+	            limit=table.length;
+	
+	            /* each entry is a pair { c, result } */
+	            while(start<limit-2) {
+	                i=(char)(((start+limit)/4)*2); 
+	                if(c<table[i]) {
+	                    limit=i;
+	                } else {
+	                    start=i;
+	                }
+	            }
+	            //System.out.println(i);
+	            /* found? */
+	            if(c==table[start]) {
+	                i=table[start+1];
+	                if((i&CANON_SET_BMP_MASK)==CANON_SET_BMP_IS_INDEX) {
+	                    /* result 01xxxxxx xxxxxx contains index x to a 
+                         * USerializedSet */
+	                    i&=(CANON_SET_MAX_CANON_SETS-1);
+	                    return fillSet.getSet(startSets,(i-indexes.length));
+	                } else {
+	                    /* other result values are BMP code points for 
+                         * single-code point sets */
+	                    fillSet.setSerializedToOne(i);
+	                    return true;
+	                }
+	            }
+	        } else {
+	            char high, low, h;
+	
+	            table=(char[]) canonStartSets[CANON_SET_SUPP_TABLE_INDEX];
+	            start=0;
+	            limit=table.length;
+	
+	            high=(char)(c>>16);
+	            low=(char)c;
+	
+	            /* each entry is a triplet { high(c), low(c), result } */
+	            while(start<limit-3) {
+                    /* (start+limit)/2 and address triplets */
+	                i=(char)(((start+limit)/6)*3); 
+	                h=(char)(table[i]&0x1f); /* high word */
+	                if(high<h || (high==h && low<table[i+1])) {
+	                    limit=i;
+	                } else {
+	                    start=i;
+	                }
+	            }
+	
+	            /* found? */
+	            h=table[start];
+	            if(high==(h&0x1f) && low==table[start+1]) {
+	                i=table[start+2];
+	                if((h&0x8000)==0) {
+	                    /* the result is an index to a USerializedSet */
+	                    return fillSet.getSet(startSets,(i-indexes.length));
+	                } else {
+	                    /*
+	                     * single-code point set {x} in
+                         * triplet { 100xxxxx 000hhhhh  llllllll llllllll  xxxxxxxx xxxxxxxx }
+	                     */
+	                    i|=((int)h&0x1f00)<<8; /* add high bits from high(c) */
+	                    fillSet.setSerializedToOne((int)i);
+	                    return true;
+	                }
+	            }
+	        }
+	    }
+	
+	    return false; /* not found */
+	}
+	
+	/**
+	 * Internal API, used by collation code.
+	 * Get access to the internal FCD trie table to be able to perform
+	 * incremental, per-code unit, FCD checks in collation.
+	 * One pointer is sufficient because the trie index values are offset
+	 * by the index size, so that the same pointer is used to access the trie 
+     * data.
+	 * @internal
+	 */
+	public CharTrie getFCDTrie(){
+		return fcdTrieImpl.fcdTrie;
+	}
+
+
+    
+   /* compare canonically equivalent ---------------------------------------- */
+
+	/*
+	 * Compare two strings for canonical equivalence.
+	 * Further options include case-insensitive comparison and
+	 * code point order (as opposed to code unit order).
+	 *
+	 * In this function, canonical equivalence is optional as well.
+	 * If canonical equivalence is tested, then both strings must fulfill
+	 * the FCD check.
+	 *
+	 * Semantically, this is equivalent to
+	 *   strcmp[CodePointOrder](foldCase(NFD(s1)), foldCase(NFD(s2)))
+	 * where code point order, NFD and foldCase are all optional.
+	 *
+	 * String comparisons almost always yield results before processing both 
+     * strings completely.
+	 * They are generally more efficient working incrementally instead of
+	 * performing the sub-processing (strlen, normalization, case-folding)
+	 * on the entire strings first.
+	 *
+	 * It is also unnecessary to not normalize identical characters.
+	 *
+	 * This function works in principle as follows:
+	 *
+	 * loop {
+	 *   get one code unit c1 from s1 (-1 if end of source)
+	 *   get one code unit c2 from s2 (-1 if end of source)
+	 *
+	 *   if(either string finished) {
+	 *     return result;
+	 *   }
+	 *   if(c1==c2) {
+	 *     continue;
+	 *   }
+	 *
+	 *   // c1!=c2
+	 *   try to decompose/case-fold c1/c2, and continue if one does;
+	 *
+	 *   // still c1!=c2 and neither decomposes/case-folds, return result
+	 *   return c1-c2;
+	 * }
+	 *
+	 * When a character decomposes, then the pointer for that source changes to
+	 * the decomposition, pushing the previous pointer onto a stack.
+	 * When the end of the decomposition is reached, then the code unit reader
+	 * pops the previous source from the stack.
+	 * (Same for case-folding.)
+	 *
+	 * This is complicated further by operating on variable-width UTF-16.
+	 * The top part of the loop works on code units, while lookups for decomposition
+	 * and case-folding need code points.
+	 * Code points are assembled after the equality/end-of-source part.
+	 * The source pointer is only advanced beyond all code units when the code point
+	 * actually decomposes/case-folds.
+	 *
+	 * If we were on a trail surrogate unit when assembling a code point,
+	 * and the code point decomposes/case-folds, then the decomposition/folding
+	 * result must be compared with the part of the other string that corresponds to
+	 * this string's lead surrogate.
+	 * Since we only assemble a code point when hitting a trail unit when the
+	 * preceding lead units were identical, we back up the other string by one unit
+	 * in such a case.
+	 *
+	 * The optional code point order comparison at the end works with
+	 * the same fix-up as the other code point order comparison functions.
+	 * See ustring.c and the comment near the end of this function.
+	 *
+	 * Assumption: A decomposition or case-folding result string never contains
+	 * a single surrogate. This is a safe assumption in the Unicode Standard.
+	 * Therefore, we do not need to check for surrogate pairs across
+	 * decomposition/case-folding boundaries.
+	 * Further assumptions (see verifications tstnorm.cpp):
+	 * The API function checks for FCD first, while the core function
+	 * first case-folds and then decomposes. This requires that case-folding does not
+	 * un-FCD any strings.
+	 *
+	 * The API function may also NFD the input and turn off decomposition.
+	 * This requires that case-folding does not un-NFD strings either.
+	 *
+	 * TODO If any of the above two assumptions is violated,
+	 * then this entire code must be re-thought.
+	 * If this happens, then a simple solution is to case-fold both strings up front
+	 * and to turn off UNORM_INPUT_IS_FCD.
+	 * We already do this when not both strings are in FCD because makeFCD
+	 * would be a partial NFD before the case folding, which does not work.
+	 * Note that all of this is only a problem when case-folding _and_
+	 * canonical equivalence come together.
+     * 
+	 * This function could be moved to a different source file, at increased cost
+	 * for calling the decomposition access function.
+	 */
+	
+	// stack element for previous-level source/decomposition pointers
+	private static class CmpEquivLevel {
+        char[] source;
+	    int start;
+        int s;
+        int limit;
+	}
+    
+	/**
+	 * Get the canonical decomposition for one code point.
+	 * @param c code point
+	 * @param buffer out-only buffer for algorithmic decompositions of Hangul
+	 * @param length out-only, takes the length of the decomposition, if any
+	 * @return index into the extraData array, or 0 if none
+	 * @internal
+	 */
+	 private static int decompose(int c, char[] buffer) {
+	    
+        long norm32;
+	    int length=0;
+	    norm32 = (long) ((UNSIGNED_INT_MASK) & normTrieImpl.normTrie.getCodePointValue(c));
+	    if((norm32 & QC_NFD)!=0) {
+	        if(isNorm32HangulOrJamo(norm32)) {
+	            /* Hangul syllable: decompose algorithmically */
+	            char c2;
+	
+	            c-=HANGUL_BASE;
+	
+	            c2=(char)(c%JAMO_T_COUNT);
+	            c/=JAMO_T_COUNT;
+	            if(c2>0) {
+	                buffer[2]=(char)(JAMO_T_BASE+c2);
+	                length=3;
+	            } else {
+	                length=2;
+	            }
+	            buffer[1]=(char)(JAMO_V_BASE+c%JAMO_V_COUNT);
+	            buffer[0]=(char)(JAMO_L_BASE+c/JAMO_V_COUNT);
+	            return length;
+	        } else {
+	            /* normal decomposition */
+	            DecomposeArgs  args = new DecomposeArgs();
+	            int index = decompose(norm32, args);
+                System.arraycopy(extraData,index,buffer,0,args.length);
+                return args.length ;
+	        }
+	    } else {
+	        return 0;
+	    }
+	}
+
+    private static int foldCase(int c, char[] dest, int destStart, int destLimit,
+                         boolean defaultMapping){
+        String src = UTF16.valueOf(c);
+        String foldedStr = UCharacter.foldCase(src,defaultMapping);
+        char[] foldedC = foldedStr.toCharArray();
+        for(int i=0;i<foldedC.length;i++){
+            if(destStart<destLimit){
+                dest[destStart]=foldedC[i];
+            }
+            // always increment destStart so that we can return 
+            // the required length
+            destStart++;
+        }
+        return (c==UTF16.charAt(foldedStr,0)) ? -destStart : destStart;
+    }
+    
+    private static int foldCase(char[] src,int srcStart,int srcLimit,
+                                char[] dest, int destStart, int destLimit,
+                                boolean defaultMapping){
+        String source =new String(src,srcStart,(srcLimit-srcStart));
+        String foldedStr = UCharacter.foldCase(source,defaultMapping);
+        char[] foldedC = foldedStr.toCharArray();
+        for(int i=0;i<foldedC.length;i++){
+            if(destStart<destLimit){
+                dest[destStart]=foldedC[i];
+            }
+            // always increment destStart so that we can return 
+            // the required length
+            destStart++;
+            
+        }
+        return destStart;
+    }
+    
+    public static int cmpEquivFold(String s1, String s2,int options){
+        return cmpEquivFold(s1.toCharArray(),0,s1.length(),
+                            s2.toCharArray(),0,s2.length(),
+                            options);
+    }
+    
+    
+	// internal function
+    public static int cmpEquivFold(char[] s1, int s1Start,int s1Limit,
+	                               char[] s2, int s2Start,int s2Limit,
+	                               int options) {
+	    // current-level start/limit - s1/s2 as current
+	    int start1, start2, limit1, limit2;
+	    char[] cSource1, cSource2;
+        
+        cSource1 = s1;
+        cSource2 = s2;
+	    // decomposition variables
+	    int length;
+	
+	    // stacks of previous-level start/current/limit
+	    CmpEquivLevel[] stack1 = new CmpEquivLevel[]{ 
+                                                    new CmpEquivLevel(),
+                                                    new CmpEquivLevel()
+                                                  };
+        CmpEquivLevel[] stack2 = new CmpEquivLevel[]{ 
+                                                    new CmpEquivLevel(),
+                                                    new CmpEquivLevel()
+                                                  };
+	
+	    // decomposition buffers for Hangul
+	    char[] decomp1 = new char[8];
+        char[] decomp2 = new char[8];
+	
+	    // case folding buffers, only use current-level start/limit
+	    char[] fold1 = new char[32];
+        char[] fold2 = new char[32];
+	
+	    // track which is the current level per string
+	    int level1, level2;
+	
+	    // current code units, and code points for lookups
+	    int c1, c2;
+        int cp1, cp2;
+	
+	    // no argument error checking because this itself is not an API
+	
+	    // assume that at least one of the options COMPARE_EQUIV and 
+        // COMPARE_IGNORE_CASE is set
+	    // otherwise this function must behave exactly as uprv_strCompare()
+	    // not checking for that here makes testing this function easier
+
+	
+	    // initialize
+	    start1=s1Start;
+	    limit1=s1Limit;
+	    
+	    start2=s2Start;
+	    limit2=s2Limit;
+	    
+	    level1=level2=0;
+	    c1=c2=-1;
+	    cp1=cp2=-1;
+	    // comparison loop
+	    for(;;) {
+	        // here a code unit value of -1 means "get another code unit"
+	        // below it will mean "this source is finished"
+	
+	        if(c1<0) {
+	            // get next code unit from string 1, post-increment
+	            for(;;) {
+	                if(s1Start>=limit1) {
+	                    if(level1==0) {
+	                        c1=-1;
+	                        break;
+	                    }
+	                } else {
+                        c1=cSource1[s1Start];
+	                    ++s1Start;
+	                    break;
+	                }
+	
+	                // reached end of level buffer, pop one level
+	                do {
+	                    --level1;
+	                    start1=stack1[level1].start;
+	                } while(start1==-1); //###### check this
+	                s1Start=stack1[level1].s;
+	                limit1=stack1[level1].limit;
+                    cSource1=stack1[level1].source;
+	            }
+	        }
+	
+	        if(c2<0) {
+	            // get next code unit from string 2, post-increment
+	            for(;;) {                    
+	                if(s2Start>=limit2) {
+	                    if(level2==0) {
+	                        c2=-1;
+	                        break;
+	                    }
+	                } else {
+                        c2=cSource2[s2Start];
+	                    ++s2Start;
+	                    break;
+	                }
+	
+	                // reached end of level buffer, pop one level
+	                do {
+	                    --level2;
+	                    start2=stack2[level2].start;
+	                } while(start2==-1);
+	                s2Start=stack2[level2].s;
+	                limit2=stack2[level2].limit;
+                    cSource2=stack2[level2].source;
+	            }
+	        }
+	
+	        // compare c1 and c2
+	        // either variable c1, c2 is -1 only if the corresponding string 
+            // is finished
+	        if(c1==c2) {
+	            if(c1<0) {
+	                return 0;   // c1==c2==-1 indicating end of strings
+	            }
+	            c1=c2=-1;       // make us fetch new code units
+	            continue;
+	        } else if(c1<0) {
+	            return -1;      // string 1 ends before string 2
+	        } else if(c2<0) {
+	            return 1;       // string 2 ends before string 1
+	        }
+	        // c1!=c2 && c1>=0 && c2>=0
+	
+	        // get complete code points for c1, c2 for lookups if either is a 
+            // surrogate
+            cp1=c1;
+	        if(UTF16.isSurrogate((char)c1)) { 
+	            char c;
+	
+	            if(UTF16.isLeadSurrogate((char)c1)) {
+	                if(    s1Start!=limit1 && 
+                           UTF16.isTrailSurrogate(c=cSource1[s1Start])
+                      ) {
+	                    // advance ++s1; only below if cp1 decomposes/case-folds
+	                    cp1=UCharacterProperty.getRawSupplementary((char)c1, c);
+	                }
+	            } else /* isTrail(c1) */ {
+	                if(    start1<=(s1Start-2) && 
+                            UTF16.isLeadSurrogate(c=cSource1[(s1Start-2)])
+                      ) {
+	                    cp1=UCharacterProperty.getRawSupplementary(c, (char)c1);
+	                }
+	            }
+	        }
+	        cp2=c2;
+	        if(UTF16.isSurrogate((char)c2)) {
+	            char c;
+	
+	            if(UTF16.isLeadSurrogate((char)c2)) {
+	                if(    s2Start!=limit2 && 
+                           UTF16.isTrailSurrogate(c=cSource2[s2Start])
+                      ) {
+	                    // advance ++s2; only below if cp2 decomposes/case-folds
+	                    cp2=UCharacterProperty.getRawSupplementary((char)c2, c);
+	                }
+	            } else /* isTrail(c2) */ {
+	                if(    start2<=(s2Start-2) &&  
+                           UTF16.isLeadSurrogate(c=cSource2[s2Start-2])
+                      ) {
+	                    cp2=UCharacterProperty.getRawSupplementary(c, (char)c2);
+	                }
+	            }
+	        }
+	
+	        // go down one level for each string
+	        // continue with the main loop as soon as there is a real change
+	        if( level1<2 && ((options & Normalizer.COMPARE_IGNORE_CASE)!=0)&&
+                (length=foldCase(cp1, fold1, 0,32, ((options&Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I)==0)))>=0
+            ) {
+                // cp1 case-folds to fold1[length]
+                if(UTF16.isSurrogate((char)c1)) {
+                    if(UTF16.isLeadSurrogate((char)c1)) {
+                        // advance beyond source surrogate pair if it 
+                        // case-folds
+                        ++s1Start;
+                    } else /* isTrail(c1) */ {
+                        // we got a supplementary code point when hitting its 
+                        // trail surrogate, therefore the lead surrogate must 
+                        // have been the same as in the other string;
+                        // compare this decomposition with the lead surrogate
+                        // in the other string
+                        --s2Start;
+                        c2=cSource2[(s2Start-1)];
+                    }
+                }
+    
+                // push current level pointers
+                stack1[0].start=start1;
+                stack1[0].s=s1Start;
+                stack1[0].limit=limit1;
+                stack1[0].source=cSource1;
+                ++level1;
+    
+                cSource1 = fold1;
+                start1=s1Start=0;
+                limit1=length;
+    
+                // get ready to read from decomposition, continue with loop
+                c1=-1;
+                continue;
+            }
+    
+            if( level2<2 && ((options& Normalizer.COMPARE_IGNORE_CASE)!=0) &&
+                (length=foldCase(cp2, fold2,0,32, ((options&Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I)==0)))>=0
+            ) {
+                // cp2 case-folds to fold2[length]
+                if(UTF16.isSurrogate((char)c2)) {
+                    if(UTF16.isLeadSurrogate((char)c2)) {
+                        // advance beyond source surrogate pair if it 
+                        // case-folds
+                        ++s2Start;
+                    } else /* isTrail(c2) */ {
+                        // we got a supplementary code point when hitting its 
+                        // trail surrogate, therefore the lead surrogate must 
+                        // have been the same as in the other string;
+                        // compare this decomposition with the lead surrogate 
+                        // in the other string
+                        --s1Start;
+                        c1=cSource1[(s1Start-1)];
+                    }
+                }
+    
+                // push current level pointers
+                stack2[0].start=start2;
+                stack2[0].s=s2Start;
+                stack2[0].limit=limit2;
+                stack2[0].source=cSource2;
+                ++level2;
+                
+                cSource2 = fold2;
+                start2=s2Start=0;
+                limit2=length;
+    
+                // get ready to read from decomposition, continue with loop
+                c2=-1;
+                continue;
+            }
+            
+	        if( level1<2 && ((options&COMPARE_EQUIV)!=0) &&
+	            0!=(length=decompose(cp1,decomp1))
+	        ) {
+	            // cp1 decomposes into p[length]
+	            if(UTF16.isSurrogate((char)c1)) {
+	                if(UTF16.isLeadSurrogate((char)c1)) {
+	                    // advance beyond source surrogate pair if it 
+                        //decomposes
+	                    ++s1Start;
+	                } else /* isTrail(c1) */ {
+	                    // we got a supplementary code point when hitting 
+                        // its trail surrogate, therefore the lead surrogate 
+                        // must have been the same as in the other string;
+	                    // compare this decomposition with the lead surrogate 
+                        // in the other string
+	                    --s2Start;
+	                    c2=cSource2[(s2Start-1)];
+	                }
+	            }
+	
+	            // push current level pointers
+                stack1[level1].start=start1;
+	            stack1[level1].s=s1Start;
+	            stack1[level1].limit=limit1;
+                stack1[level1].source=cSource1;
+	            ++level1;
+	
+	            // set next level pointers to decomposition
+	            cSource1 = decomp1;
+                start1=s1Start=0;
+	            limit1=length;
+	            
+                // set empty intermediate level if skipped
+                if(level1<2) {
+                    stack1[level1++].start=-1;
+                }
+	            // get ready to read from decomposition, continue with loop
+	            c1=-1;
+	            continue;
+	        }
+	
+	        if( level2<2 && ((options&COMPARE_EQUIV)!=0) &&
+	            0!=(length=decompose(cp2, decomp2))
+	        ) {
+	            // cp2 decomposes into p[length]
+	            if(UTF16.isSurrogate((char)c2)) {
+	                if(UTF16.isLeadSurrogate((char)c2)) {
+	                    // advance beyond source surrogate pair if it 
+                        // decomposes
+	                    ++s2Start;
+	                } else /* isTrail(c2) */ {
+	                    // we got a supplementary code point when hitting its 
+                        // trail surrogate, therefore the lead surrogate must 
+                        // have been the same as in the other string;
+	                    // compare this decomposition with the lead surrogate 
+                        // in the other string
+	                    --s1Start;
+	                    c1=cSource1[(s1Start-1)];
+	                }
+	            }
+	
+	            // push current level pointers
+	            stack2[level2].start=start2;
+	            stack2[level2].s=s2Start;
+	            stack2[level2].limit=limit2;
+                stack2[level2].source=cSource2;
+	            ++level2;
+	
+	            // set next level pointers to decomposition
+	            cSource2=decomp2;
+                start2=s2Start=0;
+	            limit2=length;
+	            
+                // set empty intermediate level if skipped
+                if(level2<2) {
+                    stack2[level2++].start=-1;
+                }
+	            
+                // get ready to read from decomposition, continue with loop
+	            c2=-1;
+	            continue;
+	        }
+	
+	
+	        // no decomposition/case folding, max level for both sides:
+	        // return difference result
+	
+	        // code point order comparison must not just return cp1-cp2
+	        // because when single surrogates are present then the surrogate 
+	        // pairs that formed cp1 and cp2 may be from different string 
+            // indexes
+	
+	        // example: { d800 d800 dc01 } vs. { d800 dc00 }, compare at 
+            // second code units
+	        // c1=d800 cp1=10001 c2=dc00 cp2=10000
+	        // cp1-cp2>0 but c1-c2<0 and in fact in UTF-32 
+            // it is { d800 10001 } < { 10000 }
+	        // therefore fix-up 
+	
+	        if(     c1>=0xd800 && c2>=0xd800 && 
+                    ((options&Normalizer.COMPARE_CODE_POINT_ORDER)!=0)
+              ) {
+	            /* subtract 0x2800 from BMP code points to make them smaller 
+                 * than supplementary ones */
+	            if(
+	                (    c1<=0xdbff && s1Start!=limit1 
+                         && 
+                         UTF16.isTrailSurrogate(cSource1[s1Start])
+                    ) 
+                     ||
+	                (    UTF16.isTrailSurrogate((char)c1) && start1!=(s1Start-1) 
+                         && 
+                         UTF16.isLeadSurrogate(cSource1[(s1Start-2)])
+                    )
+	            ) {
+	                /* part of a surrogate pair, leave >=d800 */
+	            } else {
+	                /* BMP code point - may be surrogate code point - 
+                     * make <d800 */
+	                c1-=0x2800;
+	            }
+	
+	            if(
+	                (    c2<=0xdbff && s2Start!=limit2 
+                         && 
+                         UTF16.isTrailSurrogate(cSource2[s2Start])
+                    ) 
+                     ||
+	                (    UTF16.isTrailSurrogate((char)c2) && start2!=(s2Start-1) 
+                         && 
+                         UTF16.isLeadSurrogate(cSource2[(s2Start-2)])
+                    )
+	            ) {
+	                /* part of a surrogate pair, leave >=d800 */
+	            } else {
+	                /* BMP code point - may be surrogate code point - 
+                     * make <d800 */
+	                c2-=0x2800;
+	            }
+	        }
+	
+	        return c1-c2;
+	    }
+	}
+    private static int strCompare(char[] s1, int s1Start, int s1Limit,
+                                  char[] s2, int s2Start, int s2Limit,
+                                  boolean codePointOrder) {
+                        
+        int start1, start2, limit1, limit2;
+ 
+        char c1, c2;
+    
+        /* setup for fix-up */
+        start1=s1Start;
+        start2=s2Start;
+        
+        int length1, length2;
+        
+        length1 = s1Limit - s1Start;
+        length2 = s2Limit - s2Start;
+            
+        int lengthResult;
+
+        if(length1<length2) {
+            lengthResult=-1;
+            limit1=start1+length1;
+        } else if(length1==length2) {
+            lengthResult=0;
+            limit1=start1+length1;
+        } else /* length1>length2 */ {
+            lengthResult=1;
+            limit1=start1+length2;
+        }
+
+        if(s1==s2) {
+            return lengthResult;
+        }
+
+        for(;;) {
+            /* check pseudo-limit */
+            if(s1Start==limit1) {
+                return lengthResult;
+            }
+
+            c1=s1[s1Start];
+            c2=s2[s2Start];
+            if(c1!=c2) {
+                break;
+            }
+            ++s1Start;
+            ++s2Start;
+        }
+
+        /* setup for fix-up */
+        limit1=start1+length1;
+        limit2=start2+length2;
+
+    
+        /* if both values are in or above the surrogate range, fix them up */
+        if(c1>=0xd800 && c2>=0xd800 && codePointOrder) {
+            /* subtract 0x2800 from BMP code points to make them smaller than
+             *  supplementary ones */
+            if(
+                ( c1<=0xdbff && (s1Start+1)!=limit1 && 
+                  UTF16.isTrailSurrogate(s1[(s1Start+1)])
+                ) ||
+                ( UTF16.isTrailSurrogate(c1) && start1!=s1Start && 
+                  UTF16.isLeadSurrogate(s1[(s1Start-1)])
+                )
+            ) {
+                /* part of a surrogate pair, leave >=d800 */
+            } else {
+                /* BMP code point - may be surrogate code point - make <d800 */
+                c1-=0x2800;
+            }
+    
+            if(
+                ( c2<=0xdbff && (s2Start+1)!=limit2 && 
+                  UTF16.isTrailSurrogate(s2[(s2Start+1)])
+                ) ||
+                ( UTF16.isTrailSurrogate(c2) && start2!=s2Start && 
+                  UTF16.isLeadSurrogate(s2[(s2Start-1)])
+                )
+            ) {
+                /* part of a surrogate pair, leave >=d800 */
+            } else {
+                /* BMP code point - may be surrogate code point - make <d800 */
+                c2-=0x2800;
+            }
+        }
+    
+        /* now c1 and c2 are in UTF-32-compatible order */
+        return (int)c1-(int)c2;
+    }
+
+	public static int compare(char[] s1, int s1Start,int s1Limit,
+	                          char[] s2, int s2Start,int s2Limit,
+	                          int options) {
+                                  
+	    char[] fcd1  = new char[300];
+        char[] fcd2  = new char[300];
+	    char[] fold1 = new char[300];
+        char[] fold2 = new char[300];
+        
+        int result;
+	
+	    if(    s1==null || s1Start<0 || s1Limit<0 || 
+               s2==null || s2Start<0 || s2Limit<0
+          ) {
+	        
+	        throw new IllegalArgumentException();
+	    }
+
+	    options|=COMPARE_EQUIV;
+	
+	    if((options& Normalizer.INPUT_IS_FCD)==0) {
+	        char[] dest;
+	        int fcdLen1, fcdLen2;
+            int foldLen1, foldLen2;
+	        boolean isFCD1, isFCD2;
+	
+	        // check if s1 and/or s2 fulfill the FCD conditions
+	        isFCD1=checkFCD(s1, s1Start, s1Limit);
+	        isFCD2=checkFCD(s2, s2Start, s2Limit);
+	        
+	        if((options&Normalizer.COMPARE_IGNORE_CASE)!=0 && 
+                !(isFCD1 && isFCD2)) {
+	            
+                // case-fold first to keep the order of operations as in UAX 21 2.5
+	            foldLen1=foldCase(s1,s1Start,s1Limit,fold1,0,fold1.length,
+                                  ((options&Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I)==0));
+                                  
+	            if(foldLen1 > fold1.length){
+	                dest = new char[foldLen1];
+	                foldLen1=foldCase(s1,s1Start,s1Limit,dest,0,foldLen1,
+                                      ((options&Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I)==0));
+                    	
+	                s1=dest;
+	            }else{
+                    s1=fold1;
+                }
+	            
+                s1Start = 0;
+                s1Limit = foldLen1;
+	
+	            foldLen2=foldCase(s2,s2Start,s2Limit,fold2,0,fold2.length,
+                                  ((options&Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I)==0));
+                                  
+                if(foldLen2 > fold2.length){
+                    dest = new char[foldLen2];
+                    foldLen2=foldCase(s2,s2Start,s2Limit,dest,0,foldLen2,
+                                      ((options&Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I)==0));
+                    
+                    s2=dest;
+                }else{
+                    s2=fold2;
+                }
+	            
+	            s2Start = 0;
+                s2Limit = foldLen2;
+	
+	            // turn off U_COMPARE_IGNORE_CASE and re-check FCD
+	            options&=~ Normalizer.COMPARE_IGNORE_CASE;
+	            isFCD1=checkFCD(s1, s1Start, s1Limit);
+	            isFCD2=checkFCD(s2, s2Start, s2Limit);
+	        }
+
+
+	        if(!isFCD1 && !isFCD2) {
+	            // if both strings need normalization then make them NFD right 
+                // away and turn off normalization in the comparison function
+	            int[] trailCC = new int[1];;
+	
+	            // fully decompose (NFD) s1 and s2
+	
+	            fcdLen1=decompose( s1,s1Start,s1Limit,fcd1,0,fcd1.length,
+                                   false, trailCC);
+                                      
+	            if(fcdLen1<=fcd1.length) {
+	                s1=fcd1;
+	            } else {
+	                dest=new char[fcdLen1];
+	                fcdLen1= decompose( s1,s1Start,s1Limit,dest,0,dest.length,
+                                        false, trailCC);
+	
+	                s1=dest;
+	            }
+                
+	            s1Limit=fcdLen1;
+	            s2Start=0;
+	            fcdLen2=decompose( s2,s2Start,s2Limit, fcd2,0,fcd2.length,
+                                   false, trailCC);
+	            if(fcdLen2<=fcd2.length) {
+	                s2=fcd2;
+	            } else {
+	                dest=new char[fcdLen2];
+	                
+	                fcdLen2=decompose( s2,s2Start,s2Limit,dest,0,dest.length,
+                                      false, trailCC);
+	
+	                s2=dest;
+	            }
+	            s2Limit=fcdLen2;
+	            s2Start=0;
+	            // compare NFD strings
+	            options&=~COMPARE_EQUIV;
+	        } else {
+	            // if at least one string is already in FCD then only makeFCD 
+                // the other and compare for equivalence
+	            if(!isFCD1) {
+	                fcdLen1=makeFCD(s1,s1Start,s1Limit,fcd1,0,fcd1.length);
+                    
+	                if(fcdLen1>fcd1.length){
+	                    dest=new char[fcdLen1];
+	                    fcdLen1=makeFCD(s1,s1Start,s1Limit,dest,0,dest.length);
+	                    s1=dest;
+	                }else{
+                        s1=fcd1;
+                    }
+	                s1Limit=fcdLen1;
+                    s1Start=0;
+	            }
+	
+	            if(!isFCD2) {
+	                fcdLen2=makeFCD(s2,s2Start,s2Limit,fcd2,0,fcd2.length);
+                    
+	                if(fcdLen2>fcd2.length){
+                        dest=new char[fcdLen2];
+                        fcdLen2=makeFCD(s2,s2Start,s2Limit,dest,0,dest.length);
+                        s2=dest;
+                    }else{
+                        s2=fcd2;
+                    }
+                    s2Limit=fcdLen2;
+                    s2Start=0;
+	            }
+	        }
+	    }
+	
+        if((options&(COMPARE_EQUIV|Normalizer.COMPARE_IGNORE_CASE))==0) {
+	        // compare NFD strings case-sensitive: just use normal comparison
+	        result=strCompare(s1, s1Start, s1Limit, s2,s2Start,s2Limit, 
+                              (0!=(options & 
+                                     Normalizer.COMPARE_CODE_POINT_ORDER
+                                  )
+                              )
+                             );
+	    } else {
+	        result=cmpEquivFold(s1, s1Start, s1Limit, 
+                                s2, s2Start, s2Limit, options);
+	    }
+	    return result;
+	}
+
+}
diff --git a/src/com/ibm/icu/impl/ReplaceableUCharacterIterator.java b/src/com/ibm/icu/impl/ReplaceableUCharacterIterator.java
new file mode 100644
index 0000000..5d0c4c1
--- /dev/null
+++ b/src/com/ibm/icu/impl/ReplaceableUCharacterIterator.java
@@ -0,0 +1,213 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/ReplaceableUCharacterIterator.java,v $ 
+ * $Date: 2002/07/31 03:04:28 $ 
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.Replaceable;
+import com.ibm.icu.text.ReplaceableString;
+import com.ibm.icu.text.UTF16;    
+
+/**
+ * DLF docs must define behavior when Replaceable is mutated underneath
+ * the iterator.
+ *
+ * This and ICUCharacterIterator share some code, maybe they should share
+ * an implementation, or the common state and implementation should be
+ * moved up into UCharacterIterator.
+ *
+ * What are first, last, and getBeginIndex doing here?!?!?!
+ */
+public class ReplaceableUCharacterIterator extends UCharacterIterator {
+
+    // public constructor ------------------------------------------------------
+    
+    /**
+     * Public constructor
+     * @param replacable text which the iterator will be based on
+     */
+    public ReplaceableUCharacterIterator(Replaceable replaceable){
+        if(replaceable==null){
+            throw new IllegalArgumentException();
+        }
+        this.replaceable  = replaceable;
+        this.currentIndex = 0;
+        this.length       = replaceable.length();
+    }
+    
+    /**
+     * Public constructor
+     * @param str text which the iterator will be based on
+     */
+    public ReplaceableUCharacterIterator(String str){
+        if(str==null){
+            throw new IllegalArgumentException();
+        }
+        this.replaceable  = new ReplaceableString(str);
+        this.currentIndex = 0;
+        this.length       = replaceable.length();
+    }
+    
+    /**
+     * Public constructor
+     * @param buf buffer of text on which the iterator will be based
+     */
+    public ReplaceableUCharacterIterator(StringBuffer buf){
+        if(buf==null){
+            throw new IllegalArgumentException();
+        }
+        this.replaceable  = new ReplaceableString(buf);
+        this.currentIndex = 0;
+        this.length       = replaceable.length();
+    }
+    
+    // public methods ----------------------------------------------------------
+    
+    /**
+     * Creates a copy of this iterator, does not clone the underlying 
+     * <code>Replaceable</code>object
+     * @return copy of this iterator
+     */
+    public Object clone(){
+		try {
+		  return super.clone();
+		} catch (CloneNotSupportedException e) {
+		    return null; // never invoked
+		}
+    }
+    
+    /**
+     * Returns the current UTF16 character.
+     * @return current UTF16 character
+     */
+    public int current(){
+        if (currentIndex < length) {
+            return replaceable.charAt(currentIndex);
+        }
+        return DONE;
+    }
+    
+    /**
+     * Returns the current codepoint
+     * @return current codepoint
+     */
+    public int currentCodePoint(){
+        // cannot use charAt due to it different 
+        // behaviour when index is pointing at a
+        // trail surrogate, check for surrogates
+         
+        int ch = current();
+        if(UTF16.isLeadSurrogate((char)ch)){
+            // advance the index to get the next code point
+            next();
+            // due to post increment semantics current() after next() 
+            // actually returns the next char which is what we want
+            int ch2 = current();
+            // current should never change the current index so back off
+            previous();
+            
+            if(UTF16.isTrailSurrogate((char)ch2)){
+                // we found a surrogate pair
+                return UCharacterProperty.getRawSupplementary(
+                                                         (char)ch,(char)ch2
+                                                             );
+            }
+        }
+        return ch;
+    }
+    
+    /**
+     * Returns the length of the text
+     * @return length of the text
+     */
+    public int getLength(){
+        return length;
+    }
+    
+    /**
+     * Gets the current currentIndex in text.
+     * @return current currentIndex in text.
+     */
+    public int getIndex(){
+        return currentIndex;
+    }
+        
+    /**
+     * Returns next UTF16 character and increments the iterator's currentIndex by 1. 
+     * If the resulting currentIndex is greater or equal to the text length, the 
+     * currentIndex is reset to the text length and a value of DONECODEPOINT is 
+     * returned. 
+     * @return next UTF16 character in text or DONE if the new currentIndex is off the 
+     *         end of the text range.
+     */
+    public int next(){
+        if (currentIndex < length) {
+            return replaceable.charAt(currentIndex++);
+        }
+        return DONE;
+    }
+    
+                
+    /**
+     * Returns previous UTF16 character and decrements the iterator's currentIndex by 
+     * 1. 
+     * If the resulting currentIndex is less than 0, the currentIndex is reset to 0 and a 
+     * value of DONECODEPOINT is returned. 
+     * @return next UTF16 character in text or DONE if the new currentIndex is off the 
+     *         start of the text range.
+     */
+    public int previous(){
+        if (currentIndex > 0) {
+            return replaceable.charAt(--currentIndex);
+        }
+        return DONE;
+    }
+
+    /**
+     * <p>Sets the currentIndex to the specified currentIndex in the text and returns that 
+     * single UTF16 character at currentIndex. 
+     * This assumes the text is stored as 16-bit code units.</p>
+     * @param currentIndex the currentIndex within the text. 
+     * @exception IllegalArgumentException is thrown if an invalid currentIndex is 
+     *            supplied. i.e. currentIndex is out of bounds.
+     * @return the character at the specified currentIndex or DONE if the specified 
+     *         currentIndex is equal to the end of the text.
+     */
+    public void setIndex(int currentIndex) throws IndexOutOfBoundsException{
+        if (currentIndex < 0 || currentIndex > length) {
+            throw new IndexOutOfBoundsException();
+        }
+        this.currentIndex = currentIndex;
+    }
+    
+    public int getText(char[] fillIn, int offset){
+        if(offset < 0 || offset + length > fillIn.length){
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        }
+        replaceable.getChars(0,length,fillIn,offset);
+        return length;
+    }       
+        
+    // private data members ----------------------------------------------------
+    
+    /**
+     * Replacable object
+     */
+    private Replaceable replaceable;
+    /**
+     * Current currentIndex
+     */
+    private int currentIndex;
+    /**
+     * Replaceable text length
+     */
+    private int length;
+}
diff --git a/src/com/ibm/icu/impl/Trie.java b/src/com/ibm/icu/impl/Trie.java
new file mode 100755
index 0000000..621e575
--- /dev/null
+++ b/src/com/ibm/icu/impl/Trie.java
@@ -0,0 +1,418 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/Trie.java,v $
+* $Date: 2002/06/22 00:02:41 $
+* $Revision: 1.6 $
+*
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * <p>A trie is a kind of compressed, serializable table of values 
+ * associated with Unicode code points (0..0x10ffff).</p>
+ * <p>This class defines the basic structure of a trie and provides methods 
+ * to <b>retrieve the offsets to the actual data</b>.</p>
+ * <p>Data will be the form of an array of basic types, char or int.</p>
+ * <p>The actual data format will have to be specified by the user in the
+ * inner static interface com.ibm.icu.impl.Trie.DataManipulate.</p>
+ * <p>This trie implementation is optimized for getting offset while walking
+ * forward through a UTF-16 string.
+ * Therefore, the simplest and fastest access macros are the
+ * fromLead() and fromOffsetTrail() methods.
+ * The fromBMP() method are a little more complicated; they get offsets even
+ * for lead surrogate codepoints, while the fromLead() method get special
+ * "folded" offsets for lead surrogate code units if there is relevant data
+ * associated with them.
+ * From such a folded offsets, an offset needs to be extracted to supply
+ * to the fromOffsetTrail() methods.
+ * To handle such supplementary codepoints, some offset information are kept
+ * in the data.</p>
+ * <p>Methods in com.ibm.icu.impl.Trie.DataManipulate are called to retrieve 
+ * that offset from the folded value for the lead surrogate unit.</p>
+ * <p>For examples of use, see com.ibm.icu.impl.CharTrie or 
+ * com.ibm.icu.impl.IntTrie.</p>
+ * @author synwee
+ * @see com.ibm.icu.impl.CharTrie
+ * @see com.ibm.icu.impl.IntTrie
+ * @since release 2.1, Jan 01 2002
+ */
+public abstract class Trie
+{
+    // public class declaration ----------------------------------------
+    
+    /**
+    * Character data in com.ibm.impl.Trie have different user-specified format
+    * for different purposes.
+    * This interface specifies methods to be implemented in order for
+    * com.ibm.impl.Trie, to surrogate offset information encapsulated within 
+    * the data.
+    * @draft 2.1
+    */
+    public static interface DataManipulate
+    {
+        /**
+        * Called by com.ibm.icu.impl.Trie to extract from a lead surrogate's 
+        * data
+        * the index array offset of the indexes for that lead surrogate.
+        * @param value data value for a surrogate from the trie, including the
+        *        folding offset
+        * @return data offset or 0 if there is no data for the lead surrogate
+        * @draft 2.1
+        */
+        public int getFoldingOffset(int value); 
+    }
+    
+    // public methods --------------------------------------------------
+    
+    /**
+     * Determines if this trie has a linear latin 1 array
+     * @return true if this trie has a linear latin 1 array, false otherwise
+     */
+    public final boolean isLatin1Linear()
+    {
+    	return m_isLatin1Linear_;
+    }
+
+    // protected constructor -------------------------------------------
+
+    /**
+    * Trie constructor for CharTrie use.
+    * @param inputStream ICU data file input stream which contains the
+    *                        trie
+    * @param datamanipulate object containing the information to parse the 
+    *                       trie data
+    * @exception IOException thrown when input stream does not have the
+    *                        right header.
+    * @draft 2.1
+    */
+    protected Trie(InputStream inputStream, 
+                   DataManipulate  dataManipulate) throws IOException
+    {
+        DataInputStream input = new DataInputStream(inputStream);
+        // Magic number to authenticate the data.
+        int signature = input.readInt();
+        m_options_    = input.readInt();
+        
+        if (!checkHeader(signature)) {
+            throw new IllegalArgumentException("ICU data file error: Trie header authentication failed, please check if you have the most updated ICU data file");
+        }
+        
+        m_dataManipulate_ = dataManipulate;
+        m_isLatin1Linear_ = (m_options_ &
+                             HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_) != 0;
+        m_dataOffset_     = input.readInt();
+        m_dataLength_     = input.readInt();
+        unserialize(inputStream);
+    }
+    
+    /**
+    * Trie constructor
+    * @param index array to be used for index
+    * @param options used by the trie
+    * @param datamanipulate object containing the information to parse the 
+    *                       trie data
+    * @draft 2.2
+    */
+    protected Trie(char index[], int options, DataManipulate dataManipulate)
+    {
+        m_options_ = options;
+        m_dataManipulate_ = dataManipulate;
+        m_isLatin1Linear_ = (m_options_ &
+                             HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_) != 0;
+        m_index_ = index;
+    }
+
+
+    // protected data members ------------------------------------------
+
+    /**
+    * Shift size for shifting right the input index. 1..9
+    * @draft 2.1
+    */
+    protected static final int INDEX_STAGE_1_SHIFT_ = 5;
+    /**
+    * Shift size for shifting left the index array values.
+    * Increases possible data size with 16-bit index values at the cost
+    * of compactability.
+    * This requires blocks of stage 2 data to be aligned by
+    * DATA_GRANULARITY.
+    * 0..INDEX_STAGE_1_SHIFT
+    * @draft 2.1
+    */
+    protected static final int INDEX_STAGE_2_SHIFT_ = 2;
+    /**
+    * Mask for getting the lower bits from the input index.
+    * DATA_BLOCK_LENGTH_ - 1.
+    * @draft 2.1
+    */
+    protected static final int INDEX_STAGE_3_MASK_ =
+                                              (1 << INDEX_STAGE_1_SHIFT_) - 1;
+    /**
+    * Surrogate mask to use when shifting offset to retrieve supplementary
+    * values
+    * @draft 2.1
+    */
+    protected static final int SURROGATE_MASK_ = 0x3FF;                                              
+    /**
+    * Index or UTF16 characters
+    * @draft 2.1
+    */
+    protected char m_index_[];
+    /**
+    * Internal TrieValue which handles the parsing of the data value.
+    * This class is to be implemented by the user
+    * @draft 2.1
+    */
+    protected DataManipulate m_dataManipulate_;
+    /**
+    * Start index of the data portion of the trie. CharTrie combines 
+    * index and data into a char array, so this is used to indicate the 
+    * initial offset to the data portion.
+    * @draft 2.1
+    */
+    protected int m_dataOffset_;
+    /**
+    * Length of the data array 
+    */
+    protected int m_dataLength_;
+    
+    // protected methods -----------------------------------------------
+
+    /**
+    * Gets the offset to the data which the surrogate pair points to.
+    * @param lead lead surrogate
+    * @param trail trailing surrogate
+    * @return offset to data
+    * @draft 2.1
+    */
+    protected abstract int getSurrogateOffset(char lead, char trail);
+    
+    /**
+    * Gets the value at the argument index
+    * @param index value at index will be retrieved
+    * @return 32 bit value 
+    * @draft 2.1
+    */
+    protected abstract int getValue(int index);
+
+    /**
+    * Gets the default initial value
+    * @return 32 bit value 
+    * @draft 2.1
+    */
+    protected abstract int getInitialValue();
+    
+    /**
+    * Gets the offset to the data which the index ch after variable offset
+    * points to.
+    * Note for locating a non-supplementary character data offset, calling
+    * <p>
+    * getRawOffset(0, ch);
+    * </p>
+    * will do. Otherwise if it is a supplementary character formed by
+    * surrogates lead and trail. Then we would have to call getRawOffset()
+    * with getFoldingIndexOffset(). See getSurrogateOffset().
+    * @param offset index offset which ch is to start from
+    * @param ch index to be used after offset
+    * @return offset to the data
+    * @draft 2.1
+    */
+    protected final int getRawOffset(int offset, char ch)
+    {
+        return (m_index_[offset + (ch >> INDEX_STAGE_1_SHIFT_)] <<
+                INDEX_STAGE_2_SHIFT_) + (ch & INDEX_STAGE_3_MASK_);
+    }
+
+    /**
+    * Gets the offset to data which the BMP character points to
+    * Treats a lead surrogate as a normal code point.
+    * @param ch BMP character
+    * @return offset to data
+    * @draft 2.1
+    */
+    protected final int getBMPOffset(char ch)
+    {
+        int offset = 0;
+        if (UTF16.isLeadSurrogate(ch)) {
+            offset = LEAD_INDEX_OFFSET_;
+        }
+        return getRawOffset(offset, ch);
+    }
+
+    /**
+    * Gets the offset to the data which this lead surrogate character points
+    * to.
+    * Data at the returned offset may contain folding offset information for
+    * the next trailing surrogate character.
+    * @param ch lead surrogate character
+    * @return offset to data
+    * @draft 2.1
+    */
+    protected final int getLeadOffset(char ch)
+    {
+       return getRawOffset(0, ch);
+    }
+
+    /**
+    * Internal trie getter from a code point.
+    * Could be faster(?) but longer with
+    *   if((c32)<=0xd7ff) { (result)=_TRIE_GET_RAW(trie, data, 0, c32); }
+    * Gets the offset to data which the codepoint points to
+    * @param ch codepoint
+    * @return offset to data
+    * @draft 2.1
+    */
+    protected final int getCodePointOffset(int ch)
+    {
+        if (UCharacter.isBMP(ch)) {
+            // BMP codepoint
+            return getBMPOffset((char)ch);
+        }
+        if (ch <= UCharacter.MAX_VALUE)
+        {
+            char lead = UTF16.getLeadSurrogate(ch);
+            // look at the construction of supplementary characters
+            // trail forms the ends of it.
+            return getSurrogateOffset(lead, (char)(ch & SURROGATE_MASK_));
+        }
+        // return -1 if there is an error, in this case we return the default
+        // value: m_initialValue_
+        return -1;
+    }
+
+    /**
+    * <p>Parses the inputstream and creates the trie index with it.</p>
+    * <p>This is overwritten by the child classes.
+    * @param inputStream input stream containing the trie information
+    * @exception IOException thrown when data reading fails.
+    * @draft 2.1
+    */
+    protected void unserialize(InputStream inputStream) throws IOException
+    {
+        //indexLength is a multiple of 1024 >> INDEX_STAGE_2_SHIFT_
+        m_index_              = new char[m_dataOffset_];
+        DataInputStream input = new DataInputStream(inputStream);
+        for (int i = 0; i < m_dataOffset_; i ++) {
+             m_index_[i] = input.readChar();
+        }
+    }
+
+    /**
+    * Determines if this is a 32 bit trie
+    * @return true if options specifies this is a 32 bit trie
+    * @draft 2.1
+    */
+    protected final boolean isIntTrie()
+    {
+        return (m_options_ & HEADER_OPTIONS_DATA_IS_32_BIT_) != 0;
+    }
+
+    /**
+    * Determines if this is a 16 bit trie
+    * @return true if this is a 16 bit trie
+    * @draft 2.1
+    */
+    protected final boolean isCharTrie()
+    {
+        return (m_options_ & HEADER_OPTIONS_DATA_IS_32_BIT_) == 0;
+    }
+
+    // private data members --------------------------------------------
+
+    /**
+    * Lead surrogate code points' index displacement in the index array.
+    * 0x10000-0xd800=0x2800
+    * 0x2800 >> INDEX_STAGE_1_SHIFT_
+    */
+    private static final int LEAD_INDEX_OFFSET_ =
+                                             0x2800 >> 5;
+    /**
+    * Signature index
+    */
+    private static final int HEADER_SIGNATURE_INDEX_ = 0;
+    /**
+    * Options index
+    */
+    private static final int HEADER_OPTIONS_INDEX_ = 1 << 1;
+    /**
+    * Index length index
+    */
+    private static final int HEADER_INDEX_LENGTH_INDEX_ = 2 << 1;
+    /**
+    * Data length index
+    */
+    private static final int HEADER_DATA_LENGTH_INDEX_ = 3 << 1;
+    /**
+    * Size of header
+    */
+    private static final int HEADER_LENGTH_ = 4 << 1;
+    /**
+    * Latin 1 option mask
+    */
+    private static final int HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_ = 0x200;
+    /**
+    * Constant number to authenticate the byte block
+    */
+    private static final int HEADER_SIGNATURE_ = 0x54726965;
+    /**
+    * Header option formatting
+    */
+    private static final int HEADER_OPTIONS_SHIFT_MASK_ = 0xF;
+    private static final int HEADER_OPTIONS_INDEX_SHIFT_ = 4;
+    private static final int HEADER_OPTIONS_DATA_IS_32_BIT_ = 0x100;
+    
+    /**
+    * Flag indicator for Latin quick access data block
+    */
+    private boolean m_isLatin1Linear_;
+    
+    /**
+    * <p>Trie options field.</p>
+    * <p>options bit field:<br>
+    * 9  1 = Latin-1 data is stored linearly at data + DATA_BLOCK_LENGTH<br>
+    * 8  0 = 16-bit data, 1=32-bit data<br>
+    * 7..4  INDEX_STAGE_1_SHIFT   // 0..INDEX_STAGE_2_SHIFT<br>
+    * 3..0  INDEX_STAGE_2_SHIFT   // 1..9<br>
+    */
+    private int m_options_;
+  
+    // private methods ---------------------------------------------------
+    
+    /**
+    * Authenticates raw data header.
+    * Checking the header information, signature and options.
+    * @param rawdata array of char data to be checked
+    * @return true if the header is authenticated valid
+    * @draft 2.1
+    */
+    private final boolean checkHeader(int signature)
+    {
+        // check the signature
+        // Trie in big-endian US-ASCII (0x54726965).
+        // Magic number to authenticate the data.
+        if (signature != HEADER_SIGNATURE_) {
+            return false;
+        }
+
+        if ((m_options_ & HEADER_OPTIONS_SHIFT_MASK_) != 
+                                                    INDEX_STAGE_1_SHIFT_ ||
+            ((m_options_ >> HEADER_OPTIONS_INDEX_SHIFT_) &
+                                                HEADER_OPTIONS_SHIFT_MASK_)
+                                                 != INDEX_STAGE_2_SHIFT_) {
+            return false;
+        }
+        return true;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/TrieBuilder.java b/src/com/ibm/icu/impl/TrieBuilder.java
new file mode 100755
index 0000000..9e25ecc
--- /dev/null
+++ b/src/com/ibm/icu/impl/TrieBuilder.java
@@ -0,0 +1,440 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2000, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/TrieBuilder.java,v $ 
+* $Date: 2002/07/12 21:59:22 $ 
+* $Revision: 1.6 $
+*
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.lang.UCharacter;
+import java.util.Arrays;
+
+/**
+ * Builder lass to manipulate and generate a trie.
+ * This is useful for ICU data in primitive types.
+ * Provides a compact way to store information that is indexed by Unicode 
+ * values, such as character properties, types, keyboard values, etc. This is 
+ * very useful when you have a block of Unicode data that contains significant 
+ * values while the rest of the Unicode data is unused in the application or 
+ * when you have a lot of redundance, such as where all 21,000 Han ideographs 
+ * have the same value.  However, lookup is much faster than a hash table.
+ * A trie of any primitive data type serves two purposes:
+ * <UL type = round>
+ *     <LI>Fast access of the indexed values.
+ *     <LI>Smaller memory footprint.
+ * </UL>
+ * This is a direct port from the ICU4C version
+ * @version            $Revision: 1.6 $
+ * @author             Syn Wee Quek
+ */
+public class TrieBuilder
+{
+	// public data member ----------------------------------------------
+	
+	/** 
+	 * Number of data values in a stage 2 (data array) block. 2, 4, 8, .., 
+	 * 0x200 
+	 */
+    public static final int DATA_BLOCK_LENGTH_ = 1 << Trie.INDEX_STAGE_1_SHIFT_;
+    
+	// public class declaration ----------------------------------------
+    
+    /**
+    * Character data in com.ibm.impl.Trie have different user-specified format
+    * for different purposes.
+    * This interface specifies methods to be implemented in order for
+    * com.ibm.impl.Trie, to surrogate offset information encapsulated within 
+    * the data.
+    * @draft 2.2
+    */
+    public static interface DataManipulate
+    {
+        /**
+ 		 * Build-time trie callback function, used with serialize().
+ 	     * This function calculates a lead surrogate's value including a 
+ 	     * folding offset from the 1024 supplementary code points 
+ 	     * [start..start+1024[ . 
+ 	     * It is U+10000 <= start <= U+10fc00 and (start&0x3ff)==0.
+ 	     * The folding offset is provided by the caller. 
+ 	     * It is offset=UTRIE_BMP_INDEX_LENGTH+n*UTRIE_SURROGATE_BLOCK_COUNT 
+ 	     * with n=0..1023. 
+ 	     * Instead of the offset itself, n can be stored in 10 bits - or fewer 
+ 	     * if it can be assumed that few lead surrogates have associated data.
+ 	     * The returned value must be
+ 	     *  - not zero if and only if there is relevant data for the 
+ 	     *                        corresponding 1024 supplementary code points
+ 	     *  - such that UTrie.getFoldingOffset(UNewTrieGetFoldedValue(..., 
+ 	     *                                                    offset))==offset
+         * @return a folded value, or 0 if there is no relevant data for the 
+         *         lead surrogate.
+         */
+        public int getFoldedValue(int start, int offset); 
+    }
+    
+	// public methods ----------------------------------------------------
+  
+    /**
+     * Checks if the character belongs to a zero block in the trie
+     * @param ch codepoint which data is to be retrieved
+     * @return true if ch is in the zero block
+     */
+    public boolean isInZeroBlock(int ch) 
+    {
+        // valid, uncompacted trie and valid c?
+        if (m_isCompacted_ || !UCharacter.isLegal(ch)) {
+            return true;
+        }
+    
+        return m_index_[ch >> SHIFT_] == 0;
+    }
+    
+    // package private method -----------------------------------------------
+    
+	  /**
+	  * Takes argument array and forms a compact array into the result arrays.
+	  * The result will be 
+	  * <code>
+	  *   array[index] == valuearray[indexarray[index]]
+	  * </code>.
+	  * Note : This method is generic, it only takes values from the array. 
+	  * @param array value array to be manipulated
+	  * @param start index of the array to process
+	  * @param length of array to process.
+	  * @param blocksize size of each blocks existing in valuearray
+	  * @param indexarray result index array with length = array.length, with 
+	  *        values which indexes to valuearray.
+	  * @param valuearray result value array compact value array
+	  * @return size of valuearray
+	  * @deprecated release 2.1, since icu4c has written their own tool
+	  */
+	  static int build(byte array[], int start, int length, int blocksize, 
+	                   int indexarray[], byte valuearray[])
+	  {
+	    int valuesize = 0;
+	    int valueindex;
+	    int blockcount = 0;  
+	    int index = 0;
+	    int min;
+	    
+	    while (start < length) {
+	      // for a block of blocksize in the array
+	      // we try to find a similar block in valuearray
+	      for (valueindex = 0; valueindex < valuesize; valueindex ++) {
+	        // testing each block of blocksize at index valueindex in valuearray
+	        // if it is == to array blocks
+	        min = Math.min(blocksize, valuesize - valueindex);
+	        for (blockcount = 0; blockcount < min;blockcount ++) {
+	          if (array[start + blockcount] != 
+	                                        valuearray[valueindex + blockcount]) {
+	            break;
+	          }
+	        }
+	        
+	        if (blockcount == blocksize || valueindex + blockcount == valuesize) {
+	          break;
+	        }
+	      }
+	
+	      // if no similar block is found in value array
+	      // we populate the result arrays with data
+	      for (min = Math.min(blocksize, length - start); blockcount < min; 
+	                                                              blockcount ++) {
+	        valuearray[valuesize ++] = array[start + blockcount];
+	      }
+	        
+	      indexarray[index ++] = valueindex;
+	      start += blocksize;
+	    }
+	    
+	    return valuesize;
+	  }
+	  
+	  /**
+	  * Takes argument array and forms a compact array into the result arrays.
+	  * The result will be 
+	  * <code>
+	  *   array[index] == valuearray[indexarray[index]]
+	  * </code>.
+	  * Note : This method is generic, it only takes values from the array. 
+	  * @param array value array to be manipulated
+	  * @param start index of the array to process
+	  * @param length of array to process.
+	  * @param blocksize size of each blocks existing in valuearray
+	  * @param indexarray result index array with length = array.length, with 
+	  *        values which indexes to valuearray.
+	  * @param valuearray result value array compact value array
+	  * @return size of valuearray
+	  * @deprecated release 2.1, since icu4c has written their own tool
+	  */
+	  static int build(char array[], int start, int length, int blocksize, 
+	                   int indexarray[], char valuearray[])
+	  {
+	    int valuesize = 0;
+	    int valueindex;
+	    int blockcount = 0;  
+	    int index = 0;
+	    int min;
+	    
+	    while (start < length) {
+	      // for a block of blocksize in the array
+	      // we try to find a similar block in valuearray
+	      for (valueindex = 0; valueindex < valuesize; valueindex ++) {
+	        // testing each block of blocksize at index valueindex in valuearray
+	        // if it is == to array blocks
+	        min = Math.min(blocksize, valuesize - valueindex);
+	        for (blockcount = 0; blockcount < min;blockcount ++) {
+	          if (array[start + blockcount] != 
+	                                        valuearray[valueindex + blockcount]) {
+	            break;
+	          }
+	        }
+	        
+	        if (blockcount == blocksize || valueindex + blockcount == valuesize) {
+	          break;
+	        }
+	      }
+	
+	      // if no similar block is found in value array
+	      // we populate the result arrays with data
+	      for (min = Math.min(blocksize, length - start); blockcount < min; 
+	                                                              blockcount ++) {
+	        valuearray[valuesize ++] = array[start + blockcount];
+	      }
+	        
+	      indexarray[index ++] = valueindex;
+	      start += blocksize;
+	    }
+	    
+	    return valuesize;
+	  }
+	  
+	  /**
+	  * Takes argument array and forms a compact array into the result arrays.
+	  * The result will be 
+	  * <code>
+	  *   array[index] == valuearray[indexarray[index]]
+	  * </code>.
+	  * Note : This method is generic, it only takes values from the array. 
+	  * @param array value array to be manipulated
+	  * @param start index of the array to process
+	  * @param length of array to process.
+	  * @param blocksize size of each blocks existing in valuearray
+	  * @param indexarray result index array with length = array.length, with 
+	  *        values which indexes to valuearray.
+	  * @param valuearray result value array compact value array
+	  * @return size of valuearray 
+	  * @deprecated release 2.1, since icu4c has written their own tool
+	  */
+	  static int build(int array[], int start, int length, int blocksize, 
+	                   int indexarray[], int valuearray[])
+	  {
+	    int valuesize = 0;
+	    int valueindex;
+	    int blockcount = 0;  
+	    int index = 0;
+	    int min;
+	    
+	    while (start < length) {
+	      // for a block of blocksize in the array
+	      // we try to find a similar block in valuearray
+	      for (valueindex = 0; valueindex < valuesize; valueindex ++) {
+	        // testing each block of blocksize at index valueindex in valuearray
+	        // if it is == to array blocks
+	        min = Math.min(blocksize, valuesize - valueindex);
+	        for (blockcount = 0; blockcount < min; blockcount ++) {
+	          if (array[start + blockcount] != 
+	                                        valuearray[valueindex + blockcount]) {
+	            break;
+	          }
+	        }
+	        
+	        if (blockcount == blocksize || valueindex + blockcount == valuesize) {
+	          break;
+	        }
+	      }
+	
+	      // if no similar block is found in value array
+	      // we populate the result arrays with data
+	      min = Math.min(blocksize, length - start);
+	      for (; blockcount < min; blockcount ++) {
+	        valuearray[valuesize ++] = array[start + blockcount];
+	      }
+	        
+	      indexarray[index ++] = valueindex;
+	      start += blocksize;
+	    }
+	    
+	    return valuesize;
+	  }
+	
+	// protected data member -----------------------------------------------
+	  
+	/**
+	 * Index values at build-time are 32 bits wide for easier processing.
+	 * Bit 31 is set if the data block is used by multiple index values 
+	 * (from setRange()).
+	 */
+	protected int m_index_[];
+	protected int m_indexLength_;
+	protected int m_dataCapacity_; 
+	protected int m_dataLength_;
+	protected boolean m_isDataAllocated_;
+	protected boolean m_isLatin1Linear_;
+	protected boolean m_isCompacted_;
+    /**
+	 * Map of adjusted indexes, used in utrie_compact().
+	 * Maps from original indexes to new ones.
+	 */
+	protected int m_map_[];
+	
+	/**
+	 * Shift size for shifting right the input index. 1..9 
+	 */
+	protected static final int SHIFT_ = Trie.INDEX_STAGE_1_SHIFT_;
+	/**
+     * Length of the index (stage 1) array before folding.
+     * Maximum number of Unicode code points (0x110000) shifted right by 
+     * SHIFT.
+     */
+    protected static final int MAX_INDEX_LENGTH_ = (0x110000 >> SHIFT_);
+    /** 
+     * Length of the BMP portion of the index (stage 1) array. 
+     */
+    protected static final int BMP_INDEX_LENGTH_ = 0x10000 >> SHIFT_;	
+    /**
+     * Number of index (stage 1) entries per lead surrogate.
+     * Same as number of indexe entries for 1024 trail surrogates,
+     * ==0x400>>UTRIE_SHIFT
+     * 10 - SHIFT == Number of bits of a trail surrogate that are used in 
+     *               index table lookups. 
+     */
+    protected static final int SURROGATE_BLOCK_COUNT_ = 1 << (10 - SHIFT_);
+	/**
+    * Mask for getting the lower bits from the input index.
+    * DATA_BLOCK_LENGTH_ - 1.
+    */
+    protected static final int MASK_ = Trie.INDEX_STAGE_3_MASK_;
+    /**
+     * Shift size for shifting left the index array values.
+     * Increases possible data size with 16-bit index values at the cost
+     * of compactability.
+     * This requires blocks of stage 2 data to be aligned by UTRIE_DATA_GRANULARITY.
+     * 0..UTRIE_SHIFT
+     */
+    protected static final int INDEX_SHIFT_ = Trie.INDEX_STAGE_2_SHIFT_;
+    /**
+	 * Maximum length of the runtime data (stage 2) array.
+	 * Limited by 16-bit index values that are left-shifted by INDEX_SHIFT_.
+	 */
+	protected static final int MAX_DATA_LENGTH_ = (0x10000 << INDEX_SHIFT_);
+	/**
+     * Shifting to position the index value in options
+     */
+    protected static final int OPTIONS_INDEX_SHIFT_ = 4;
+    /** 
+     * If set, then the data (stage 2) array is 32 bits wide. 
+     */
+    protected static final int OPTIONS_DATA_IS_32_BIT_ = 0x100;
+    /**
+     * If set, then Latin-1 data (for U+0000..U+00ff) is stored in the data 
+     * (stage 2) array as a simple, linear array at data + DATA_BLOCK_LENGTH.
+     */
+    protected static final int OPTIONS_LATIN1_IS_LINEAR_ = 0x200;
+    /** 
+     * The alignment size of a stage 2 data block. Also the granularity for 
+     * compaction. 
+     */
+    protected static final int DATA_GRANULARITY_ = 1 << INDEX_SHIFT_;
+    
+    // protected constructor ----------------------------------------------
+    
+    protected TrieBuilder()
+	{
+		m_index_ = new int[MAX_INDEX_LENGTH_];
+		m_map_ = new int[MAX_BUILD_TIME_DATA_LENGTH_ >> SHIFT_];
+	    m_isLatin1Linear_ = false;
+	    m_isCompacted_ = false;
+	    m_indexLength_ = MAX_INDEX_LENGTH_;
+	}
+        
+    protected TrieBuilder(TrieBuilder table)
+    {
+        m_index_ = new int[MAX_INDEX_LENGTH_];
+        m_indexLength_ = table.m_indexLength_;
+        System.arraycopy(table.m_index_, 0, m_index_, 0, m_indexLength_);
+        m_dataCapacity_ = table.m_dataCapacity_;
+        m_dataLength_ = table.m_dataLength_;
+        m_map_ = new int[table.m_map_.length];
+        System.arraycopy(table.m_map_, 0, m_map_, 0, m_map_.length);
+        m_isDataAllocated_ = table.m_isDataAllocated_;
+        m_isLatin1Linear_ = table.m_isLatin1Linear_;
+        m_isCompacted_ = table.m_isCompacted_;
+    }
+        
+    // protected data member ----------------------------------------------
+    
+    /**
+     * Set a value in the trie index map to indicate which data block
+     * is referenced and which one is not.
+     * utrie_compact() will remove data blocks that are not used at all.
+     * Set
+     * - 0 if it is used
+     * - -1 if it is not used
+     */
+    protected void findUnusedBlocks() 
+    {
+        // fill the entire map with "not used" 
+        Arrays.fill(m_map_, 0xff);
+    
+        // mark each block that _is_ used with 0
+        for (int i = 0; i < m_indexLength_; ++ i) {
+            m_map_[Math.abs(m_index_[i]) >> SHIFT_] = 0;
+        }
+    
+        // never move the all-initial-value block 0
+        m_map_[0] = 0;
+    }
+    
+    /**
+     * Finds the same index block as the otherBlock
+     * @param index array
+     * @param indexLength size of index
+     * @param otherBlock
+     * @return same index block
+     */
+    protected static final int findSameIndexBlock(int index[], int indexLength,
+                                                  int otherBlock) 
+    {
+        for (int block = BMP_INDEX_LENGTH_; block < indexLength; 
+                                             block += SURROGATE_BLOCK_COUNT_) {
+            int i = 0;
+            for (; i < SURROGATE_BLOCK_COUNT_; ++ i) {
+                if (index[block + i] != index[otherBlock + i]) {
+                    break;
+                }
+            }
+            if (i == SURROGATE_BLOCK_COUNT_) {
+                return block;
+            }
+        }
+        return indexLength;
+    }
+    
+	// private data member ------------------------------------------------
+	
+	/**
+	 * Maximum length of the build-time data (stage 2) array.
+	 * The maximum length is 0x110000 + DATA_BLOCK_LENGTH_ + 0x400.
+	 * (Number of Unicode code points + one all-initial-value block +
+	 *  possible duplicate entries for 1024 lead surrogates.)
+	 */
+	private static final int MAX_BUILD_TIME_DATA_LENGTH_ = 
+	                                    0x110000 + DATA_BLOCK_LENGTH_ + 0x400;
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/TrieIterator.java b/src/com/ibm/icu/impl/TrieIterator.java
new file mode 100755
index 0000000..de868d6
--- /dev/null
+++ b/src/com/ibm/icu/impl/TrieIterator.java
@@ -0,0 +1,479 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/TrieIterator.java,v $
+* $Date: 2002/07/12 21:59:22 $
+* $Revision: 1.6 $
+*
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.RangeValueIterator;
+
+/**
+ * <p>Class enabling iteration of the values in a Trie.</p>
+ * <p>Result of each iteration contains the interval of codepoints that have
+ * the same value type and the value type itself.</p>
+ * <p>The comparison of each codepoint value is done via extract(), which the
+ * default implementation is to return the value as it is.</p> 
+ * <p>Method extract() can be overwritten to perform manipulations on 
+ * codepoint values in order to perform specialized comparison.</p>
+ * <p>TrieIterator is designed to be a generic iterator for the CharTrie
+ * and the IntTrie, hence to accommodate both types of data, the return 
+ * result will be in terms of int (32 bit) values.</p>
+ * <p>See com.ibm.icu.text.UCharacterTypeIterator for examples of use.</p>
+ * @author synwee
+ * @see com.ibm.icu.util.Trie
+ * @see com.ibm.icu.text.UCharacterTypeIterator
+ * @since release 2.1, Jan 17 2002
+ */
+public class TrieIterator implements RangeValueIterator
+
+{
+    // public constructor ---------------------------------------------
+    
+    /**
+    * TrieEnumeration constructor
+    * @param trie to be used
+    * @exception IllegalArgumentException throw when argument is null.
+    * @draft 2.1
+    */
+    public TrieIterator(Trie trie)
+    {
+        if (trie == null) {
+            throw new IllegalArgumentException(
+                                          "Argument trie cannot be null");
+        }
+        m_trie_             = trie;
+        // synwee: check that extract belongs to the child class
+        m_initialValue_     = extract(m_trie_.getInitialValue());
+        reset();
+    }
+    
+    // public methods -------------------------------------------------
+    
+    /**
+    * <p>Returns true if we are not at the end of the iteration, false 
+    * otherwise.</p>
+    * <p>The next set of codepoints with the same value type will be 
+    * calculated during this call and returned in the arguement element.</p>
+    * @param element return result 
+    * @return true if we are not at the end of the iteration, false otherwise.
+    * @exception NoSuchElementException - if no more elements exist.
+    * @see #getStart()
+    * @see #getLimit()
+    * @see #getValue()
+    * @draft 2.1
+    */
+    public final boolean next(Element element)
+    {
+        if (m_nextCodepoint_ > UCharacter.MAX_VALUE) {
+            return false;
+        }
+        if (m_nextCodepoint_ < UCharacter.SUPPLEMENTARY_MIN_VALUE &&
+            calculateNextBMPElement(element)) {
+                return true;
+        }    
+        calculateNextSupplementaryElement(element);
+        return true;
+    }
+     
+    /**
+    * Resets the iterator to the beginning of the iteration
+    * @draft 2.1
+    */
+    public final void reset()
+    {
+        m_currentCodepoint_ = 0;
+        m_nextCodepoint_    = 0;
+        m_nextIndex_        = 0;
+        m_nextBlock_ = m_trie_.m_index_[0] << Trie.INDEX_STAGE_2_SHIFT_;
+        if (m_nextBlock_ == 0) {
+            m_nextValue_ = m_initialValue_;
+        }
+        else {
+            m_nextValue_ = extract(m_trie_.getValue(m_nextBlock_));
+        }
+        m_nextBlockIndex_ = 0;
+        m_nextTrailIndexOffset_ = TRAIL_SURROGATE_INDEX_BLOCK_LENGTH_;
+    }
+    
+    // protected methods ----------------------------------------------
+    
+    /**
+    * Called by next() to extracts a 32 bit value from a trie value
+    * used for comparison.
+    * This method is to be overwritten if special manipulation is to be done
+    * to retrieve a relevant comparison.
+    * The default function is to return the value as it is.
+    * @param value a value from the trie
+    * @return extracted value
+    * @draft 2.1
+    */
+    protected int extract(int value)
+    {
+        return value;
+    }
+    
+    // private methods ------------------------------------------------
+    
+    /**
+    * Set the result values
+    * @param element return result object
+    * @param start codepoint of range 
+    * @param limit (end + 1) codepoint of range
+    * @param value common value of range
+    */
+    private final void setResult(Element element, int start, int limit, 
+                                 int value)
+    {
+        element.start = start;
+        element.limit = limit;
+        element.value = value;
+    }
+    
+    /**
+    * Finding the next element.
+    * This method is called just before returning the result of 
+    * next().
+    * We always store the next element before it is requested.
+    * In the case that we have to continue calculations into the 
+    * supplementary planes, a false will be returned.
+    * @param element return result object
+    * @return true if the next range is found, false if we have to proceed to
+    *         the supplementary range.
+    */
+    private final boolean calculateNextBMPElement(Element element)
+    {
+        int currentBlock    = m_nextBlock_;
+        int currentValue    = m_nextValue_;
+        m_currentCodepoint_ = m_nextCodepoint_;
+        m_nextCodepoint_ ++;
+        m_nextBlockIndex_ ++;
+        if (!checkBlockDetail(currentValue)) {
+            setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                      currentValue);
+            return true;
+        }
+        // synwee check that next block index == 0 here 
+        // enumerate BMP - the main loop enumerates data blocks
+        while (m_nextCodepoint_ < UCharacter.SUPPLEMENTARY_MIN_VALUE) {
+            m_nextIndex_ ++;
+            // because of the way the character is split to form the index
+            // the lead surrogate and trail surrogate can not be in the
+            // mid of a block
+            if (m_nextCodepoint_ == LEAD_SURROGATE_MIN_VALUE_) {
+                // skip lead surrogate code units,
+                // go to lead surrogate codepoints
+                m_nextIndex_ = BMP_INDEX_LENGTH_;
+            }
+            else if (m_nextCodepoint_ == TRAIL_SURROGATE_MIN_VALUE_) {
+                // go back to regular BMP code points
+                m_nextIndex_ = m_nextCodepoint_ >> Trie.INDEX_STAGE_1_SHIFT_;
+            }
+            
+            m_nextBlockIndex_ = 0;
+            if (!checkBlock(currentBlock, currentValue)) {
+                setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                          currentValue);
+                return true;
+            }
+        }
+        m_nextCodepoint_ --;   // step one back since this value has not been
+        m_nextBlockIndex_ --;  // retrieved yet.
+        return false;
+    }
+
+    /**
+    * Finds the next supplementary element.
+    * For each entry in the trie, the value to be delivered is passed through
+    * extract().
+    * We always store the next element before it is requested.
+    * Called after calculateNextBMP() completes its round of BMP characters.
+    * There is a slight difference in the usage of m_currentCodepoint_
+    * here as compared to calculateNextBMP(). Though both represents the
+    * lower bound of the next element, in calculateNextBMP() it gets set
+    * at the start of any loop, where-else, in calculateNextSupplementary()
+    * since m_currentCodepoint_ already contains the lower bound of the
+    * next element (passed down from calculateNextBMP()), we keep it till 
+    * the end before resetting it to the new value.
+    * Note, if there are no more iterations, it will never get to here. 
+    * Blocked out by next().
+    * @param element return result object
+    * @draft 2.1
+    */
+    private final void calculateNextSupplementaryElement(Element element)
+    {
+        int currentValue = m_nextValue_;
+        int currentBlock = m_nextBlock_;
+        m_nextCodepoint_ ++;
+        m_nextBlockIndex_ ++;
+        
+        if (!checkNullNextTrailIndex() && !checkBlockDetail(currentValue)) {
+            setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                      currentValue);
+            m_currentCodepoint_ = m_nextCodepoint_;
+            return;
+        }
+		// we have cleared one block
+		m_nextIndex_ ++;
+		m_nextTrailIndexOffset_ ++;
+		if (!checkTrailBlock(currentBlock, currentValue)) {
+			setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+			          currentValue);
+            m_currentCodepoint_ = m_nextCodepoint_;
+            return;
+		}
+		
+        int nextLead  = UTF16.getLeadSurrogate(m_nextCodepoint_);
+		// enumerate supplementary code points
+        while (nextLead < TRAIL_SURROGATE_MIN_VALUE_) {
+		    // lead surrogate access
+            int leadBlock = 
+                   m_trie_.m_index_[nextLead >> Trie.INDEX_STAGE_1_SHIFT_] << 
+                                                   Trie.INDEX_STAGE_2_SHIFT_;
+            if (leadBlock == m_trie_.m_dataOffset_) {
+                // no entries for a whole block of lead surrogates
+                nextLead += DATA_BLOCK_LENGTH_;
+                // number of total affected supplementary codepoints in one
+                // block
+                m_nextCodepoint_ += DATA_BLOCK_SUPPLEMENTARY_LENGTH_;
+                continue;
+            }
+            if (m_trie_.m_dataManipulate_ == null) {
+                throw new NullPointerException(
+                            "The field DataManipulate in this Trie is null");
+            }
+            // enumerate trail surrogates for this lead surrogate
+            m_nextIndex_ = m_trie_.m_dataManipulate_.getFoldingOffset(
+                               m_trie_.getValue(leadBlock + 
+                                   (nextLead & Trie.INDEX_STAGE_3_MASK_)));
+            if (m_nextIndex_ <= 0) {
+                // no data for this lead surrogate
+                if (currentValue != m_initialValue_) {
+                    m_nextValue_      = m_initialValue_;
+                    m_nextBlock_      = 0;
+                    m_nextBlockIndex_ = 0;
+                    setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                              currentValue);
+                    m_currentCodepoint_ = m_nextCodepoint_;
+                    return;
+                }
+                m_nextCodepoint_ += TRAIL_SURROGATE_COUNT_;
+            } else {
+                m_nextTrailIndexOffset_ = 0;
+                if (!checkTrailBlock(currentBlock, currentValue)) {
+                    setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                              currentValue);
+                    m_currentCodepoint_ = m_nextCodepoint_;
+                    return;
+                }
+            }    
+            nextLead ++;
+         }
+
+         // deliver last range
+         setResult(element, m_currentCodepoint_, UCharacter.MAX_VALUE + 1, 
+                   currentValue);
+    }    
+    
+    /**
+    * Internal block value calculations
+    * Performs calculations on a data block to find codepoints in m_nextBlock_
+    * after the index m_nextBlockIndex_ that has the same value.
+    * Note m_*_ variables at this point is the next codepoint whose value
+    * has not been calculated.
+    * But when returned with false, it will be the last codepoint whose
+    * value has been calculated.
+    * @param currentValue the value which other codepoints are tested against
+    * @return true if the whole block has the same value as currentValue or if
+    *              the whole block has been calculated, false otherwise.
+    */
+    private final boolean checkBlockDetail(int currentValue)
+    {
+	    while (m_nextBlockIndex_ < DATA_BLOCK_LENGTH_) {
+            m_nextValue_ = extract(m_trie_.getValue(m_nextBlock_ + 
+                                                    m_nextBlockIndex_));
+            if (m_nextValue_ != currentValue) {
+                return false;
+            }
+            ++ m_nextBlockIndex_;
+            ++ m_nextCodepoint_;
+        }
+        return true;
+    }
+    
+    /**
+    * Internal block value calculations
+    * Performs calculations on a data block to find codepoints in m_nextBlock_
+    * that has the same value. 
+    * Will call checkBlockDetail() if highlevel check fails.
+    * Note m_*_ variables at this point is the next codepoint whose value
+    * has not been calculated.
+    * @param currentBlock the initial block containing all currentValue
+    * @param currentValue the value which other codepoints are tested against
+    * @return true if the whole block has the same value as currentValue or if
+    *              the whole block has been calculated, false otherwise.
+    */
+    private final boolean checkBlock(int currentBlock, int currentValue) 
+    {
+        m_nextBlock_ = m_trie_.m_index_[m_nextIndex_] << 
+                                                  Trie.INDEX_STAGE_2_SHIFT_;
+        if (m_nextBlock_ == currentBlock &&
+            (m_nextCodepoint_ - m_currentCodepoint_) >= DATA_BLOCK_LENGTH_) {
+            // the block is the same as the previous one, filled with 
+            // currentValue
+			m_nextCodepoint_ += DATA_BLOCK_LENGTH_;
+        }
+        else if (m_nextBlock_ == 0) {
+            // this is the all-initial-value block
+            if (currentValue != m_initialValue_) {
+                m_nextValue_      = m_initialValue_;
+                m_nextBlockIndex_ = 0;
+                return false;
+            }
+            m_nextCodepoint_ += DATA_BLOCK_LENGTH_;
+        }
+        else {
+            if (!checkBlockDetail(currentValue)) {
+                return false;
+            }
+        }
+        return true;
+    }
+    
+    /**
+    * Internal block value calculations
+    * Performs calculations on multiple data blocks for a set of trail 
+    * surrogates to find codepoints in m_nextBlock_ that has the same value. 
+    * Will call checkBlock() for internal block checks.
+    * Note m_*_ variables at this point is the next codepoint whose value
+    * has not been calculated.
+    * @param currentBlock the initial block containing all currentValue
+    * @param currentValue the value which other codepoints are tested against
+    * @return true if the whole block has the same value as currentValue or if
+    *              the whole block has been calculated, false otherwise.
+    */
+    private final boolean checkTrailBlock(int currentBlock,
+                                          int currentValue)
+    {
+	    // enumerate code points for this lead surrogate
+        while (m_nextTrailIndexOffset_ < TRAIL_SURROGATE_INDEX_BLOCK_LENGTH_) 
+        {
+		    // if we ever reach here, we are at the start of a new block
+            m_nextBlockIndex_ = 0;
+            // copy of most of the body of the BMP loop
+            if (!checkBlock(currentBlock, currentValue)) {
+                return false;
+            }
+            m_nextTrailIndexOffset_ ++;
+            m_nextIndex_ ++;
+        }
+        return true;
+    }
+    
+	/**
+	* Checks if we are beginning at the start of a initial block.
+	* If we are then the rest of the codepoints in this initial block
+	* has the same values.
+	* We increment m_nextCodepoint_ and relevant data members if so.
+	* This is used only in for the supplementary codepoints because
+	* the offset to the trail indexes could be 0.
+	* @return true if we are at the start of a initial block.
+	*/
+	private final boolean checkNullNextTrailIndex()
+	{
+		if (m_nextIndex_ <= 0) {
+		    m_nextCodepoint_ += TRAIL_SURROGATE_COUNT_ - 1;
+			int nextLead  = UTF16.getLeadSurrogate(m_nextCodepoint_);
+			int leadBlock = 
+                   m_trie_.m_index_[nextLead >> Trie.INDEX_STAGE_1_SHIFT_] << 
+                                                   Trie.INDEX_STAGE_2_SHIFT_;
+            if (m_trie_.m_dataManipulate_ == null) {
+                throw new NullPointerException(
+                            "The field DataManipulate in this Trie is null");
+            }
+			m_nextIndex_ = m_trie_.m_dataManipulate_.getFoldingOffset(
+                               m_trie_.getValue(leadBlock + 
+                                   (nextLead & Trie.INDEX_STAGE_3_MASK_)));
+			m_nextIndex_ --;
+			m_nextBlockIndex_ =  DATA_BLOCK_LENGTH_;
+			return true;
+	    }
+		return false;
+	}
+
+    // private data members --------------------------------------------
+
+    /**
+    * Size of the stage 1 BMP indexes
+    */
+    private static final int BMP_INDEX_LENGTH_ =
+                                        0x10000 >> Trie.INDEX_STAGE_1_SHIFT_;
+    /**
+    * Lead surrogate minimum value
+    */
+    private static final int LEAD_SURROGATE_MIN_VALUE_ = 0xD800;
+    /**
+    * Trail surrogate minimum value
+    */
+	private static final int TRAIL_SURROGATE_MIN_VALUE_ = 0xDC00;
+	/**
+    * Trail surrogate maximum value
+    */
+	private static final int TRAIL_SURROGATE_MAX_VALUE_ = 0xDFFF;
+	/**
+	* Number of trail surrogate
+	*/
+	private static final int TRAIL_SURROGATE_COUNT_ = 0x400;
+    /**
+	* Number of stage 1 indexes for supplementary calculations that maps to
+	* each lead surrogate character.
+	* See second pass into getRawOffset for the trail surrogate character.
+	* 10 for significant number of bits for trail surrogates, 5 for what we
+	* discard during shifting.
+	*/
+	private static final int TRAIL_SURROGATE_INDEX_BLOCK_LENGTH_ =
+	                                1 << (10 - Trie.INDEX_STAGE_1_SHIFT_);
+	/**
+	* Number of data values in a stage 2 (data array) block.
+	*/
+    private static final int DATA_BLOCK_LENGTH_ = 
+                                              1 << Trie.INDEX_STAGE_1_SHIFT_;
+    /**
+    * Number of codepoints in a stage 2 block
+    */
+    private static final int DATA_BLOCK_SUPPLEMENTARY_LENGTH_ =
+                                                     DATA_BLOCK_LENGTH_ << 10;
+    /**
+    * Trie instance
+    */
+    private Trie m_trie_;
+    /**
+    * Initial value for trie values
+    */
+    private int m_initialValue_;
+    /**
+    * Next element results and data.
+    */
+    private int m_currentCodepoint_;
+    private int m_nextCodepoint_;
+    private int m_nextValue_;
+    private int m_nextIndex_;
+    private int m_nextBlock_;
+    private int m_nextBlockIndex_;
+    private int m_nextTrailIndexOffset_;
+    /**
+    * This is the return result element
+    */
+    private int m_start_;
+    private int m_limit_;
+    private int m_value_;
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/UCharArrayIterator.java b/src/com/ibm/icu/impl/UCharArrayIterator.java
new file mode 100644
index 0000000..fc54983
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharArrayIterator.java
@@ -0,0 +1,88 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/UCharArrayIterator.java,v $ 
+* $Date: 2002/07/31 03:04:28 $ 
+* $Revision: 1.2 $
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+
+/**
+ * @author Doug Felt
+ *
+ */
+
+public final class UCharArrayIterator extends UCharacterIterator {
+    private final char[] text;
+    private final int start;
+    private final int limit;
+    private int pos;
+
+    public UCharArrayIterator(char[] text, int start, int limit) {
+        if (start < 0 || limit > text.length || start > limit) {
+            throw new IllegalArgumentException("start: " + start + " or limit: "
+                                               + limit + " out of range [0, " 
+                                               + text.length + ")");
+        }
+        this.text = text;
+        this.start = start;
+        this.limit = limit;
+
+        this.pos = start;
+    }
+
+    public int current() {
+        return pos < limit ? text[pos] : DONE;
+    }
+
+    public int getLength() {
+        return limit - start;
+    }
+
+    public int getIndex() {
+        return pos - start;
+    }
+
+    public int next() {
+        return pos < limit ? text[pos++] : DONE;
+    }
+
+    public int previous() {
+        return pos > start ? text[--pos] : DONE;
+    }
+
+    public void setIndex(int index) {
+        if (index < 0 || index > limit - start) {
+            throw new IndexOutOfBoundsException("index: " + index + 
+                                                " out of range [0, " 
+                                                + (limit - start) + ")");
+        }
+        pos = start + index;
+    }
+
+    public int getText(char[] fillIn, int offset) {
+        int len = limit - start;
+        System.arraycopy(text, start, fillIn, offset, len);
+        return len;
+    }
+
+    /**
+     * Creates a copy of this iterator, does not clone the underlying 
+     * <code>Replaceable</code>object
+     * @return copy of this iterator
+     */
+    public Object clone(){
+        try {
+          return super.clone();
+        } catch (CloneNotSupportedException e) {
+            return null; // never invoked
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/UCharacterIterator.java b/src/com/ibm/icu/impl/UCharacterIterator.java
new file mode 100644
index 0000000..4ede19d
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterIterator.java
@@ -0,0 +1,389 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/Attic/UCharacterIterator.java,v $ 
+ * $Date: 2002/07/31 03:04:28 $ 
+ * $Revision: 1.11 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.Replaceable;
+import com.ibm.icu.text.UTF16;
+
+import java.text.CharacterIterator;
+import com.ibm.icu.impl.UCharArrayIterator;
+
+/**
+ * DLF- Docs mostly need 1) much more description of iteration behavior,
+ * especially at endpoints and with empty or single character strings,
+ * and 2) need to describe the other major difference with Java
+ * CharacterIterator, which is that this also returns code points as
+ * well as code units.  
+ *
+ * Don't understand why setIndex and moveIndex have different exception behavior.
+ * I expect they shouldn't.
+ */
+
+/**
+ * Abstract class that defines an API for iteration on text objects.This is an 
+ * interface for forward and backward iteration and random access into a text 
+ * object. Forward iteration is done with post-increment and backward iteration 
+ * is done with pre-decrement semantics, while the 
+ * <code>java.text.CharacterIterator</code> interface methods provided forward 
+ * iteration with "pre-increment" and backward iteration with pre-decrement 
+ * semantics. This API is more efficient for forward iteration over code points.
+ * @author Ram
+ * @version release 2.2, May 2002
+ */
+public abstract class UCharacterIterator 
+                      implements Cloneable,UForwardCharacterIterator {
+
+    
+    // static final methods ----------------------------------------------------
+    
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * <code>Replaceable</code> object.
+     * @param source a valid source as a <code>Replaceable</code> object
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     */
+    public static final UCharacterIterator getInstance(Replaceable source){
+        return new ReplaceableUCharacterIterator(source);
+    }
+    
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * source string.
+     * @param source a string
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     */
+    public static final UCharacterIterator getInstance(String source){
+        return new ReplaceableUCharacterIterator(source);
+    }
+    
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * source character array.
+     * @param source an array of UTF-16 code units
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     */
+    public static final UCharacterIterator getInstance(char[] source){
+        return getInstance(source,0,source.length);
+    }
+    
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * source character array.
+     * @param source an array of UTF-16 code units
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     */
+    public static final UCharacterIterator getInstance(char[] source, int start, int limit){
+        return new UCharArrayIterator(source,start,limit);
+    }
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * source StringBuffer.
+     * @param source an string buffer of UTF-16 code units
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     */
+    public static final UCharacterIterator getInstance(StringBuffer source){
+        return new ReplaceableUCharacterIterator(source);
+    }
+
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * CharacterIterator.
+     * @param source a valid CharacterIterator object.
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     */    
+    public static final UCharacterIterator getInstance(CharacterIterator source){
+        return new CharacterIteratorWrapper(source);
+    }
+       
+    // public methods ----------------------------------------------------------
+    /**
+     * Returns a <code>java.text.CharacterIterator</code> object for
+     * the underlying text of this iterator.  The returned iterator is
+     * independent of this iterator.
+     * @return java.text.CharacterIterator object 
+     */
+    public CharacterIterator getCharacterIterator(){
+        return new UCharacterIteratorWrapper(this);
+    }    
+   
+    /**
+     * Returns the code unit at the current index.  If index is out
+     * of range, returns DONE.  Index is not changed.
+     * @return current code unit
+     */
+    public abstract int current();
+    
+    /**
+     * Returns the codepoint at the current index.
+     * If the current index is invalid, DONE is returned.
+     * If the current index points to a lead surrogate, and there is a following
+     * trail surrogate, then the code point is returned.  Otherwise, the code
+     * unit at index is returned.  Index is not changed. 
+     * @return current codepoint
+     */
+    public int currentCodePoint(){
+        int ch = current();
+        if(UTF16.isLeadSurrogate((char)ch)){
+            // advance the index to get the
+            // next code point
+            next();
+            // due to post increment semantics
+            // current() after next() actually
+            // returns the char we want
+            int ch2 = current();
+            // current should never change
+            // the current index so back off
+            previous();
+            
+            if(UTF16.isTrailSurrogate((char)ch2)){
+                // we found a surrogate pair 
+                // return the codepoint
+                return UCharacterProperty.getRawSupplementary(
+                                                          (char)ch,(char)ch2
+                                                             );
+            }
+        }
+        return ch;
+    }
+    
+    /**
+     * Returns the length of the text
+     * @return length of the text
+     */
+    public abstract int getLength();
+
+    
+    /**
+     * Gets the current index in text.
+     * @return current index in text.
+     */
+    public abstract int getIndex();
+
+
+    /**
+     * Returns the UTF16 code unit at index, and increments to the next
+     * code unit (post-increment semantics).  If index is out of
+     * range, DONE is returned, and the iterator is reset to the limit
+     * of the text.
+     * @return the next UTF16 code unit, or DONE if the index is at the limit
+     *         of the text.  
+     */
+    public abstract int next();
+
+    /**
+     * Returns the code point at index, and increments to the next code
+     * point (post-increment semantics).  If index does not point to a
+     * valid surrogate pair, the behavior is the same as
+     * <code>next()<code>.  Otherwise the iterator is incremented past
+     * the surrogate pair, and the code point represented by the pair
+     * is returned.
+     * @return the next codepoint in text, or DONE if the index is at
+     *         the limit of the text.  
+     */
+    public int nextCodePoint(){
+        int ch1 = next();
+        if(UTF16.isLeadSurrogate((char)ch1)){
+            int ch2 = next();
+            if(UTF16.isTrailSurrogate((char)ch2)){
+                return UCharacterProperty.getRawSupplementary((char)ch1,
+                                                              (char)ch2);
+            }else if (ch2 != DONE) {
+                // unmatched surrogate so back out
+                previous();
+            }
+        }
+        return ch1;
+    }
+
+    /**
+     * Decrement to the position of the previous code unit in the
+     * text, and return it (pre-decrement semantics).  If the
+     * resulting index is less than 0, the index is reset to 0 and
+     * DONE is returned.
+     * @return the previous code unit in the text, or DONE if the new
+     *         index is before the start of the text.  
+     */
+    public abstract int previous();
+
+    
+    /**
+     * Retreat to the start of the previous code point in the text,
+     * and return it (pre-decrement semantics).  If the index is not
+     * preceeded by a valid surrogate pair, the behavior is the same
+     * as <code>previous()</code>.  Otherwise the iterator is
+     * decremented to the start of the surrogate pair, and the code
+     * point represented by the pair is returned.
+     * @return the previous code point in the text, or DONE if the new
+     *         index is before the start of the text.  
+     */
+    public int previousCodePoint(){
+        int ch1 = previous();
+        if(UTF16.isTrailSurrogate((char)ch1)){
+            int ch2 = previous();
+            if(UTF16.isLeadSurrogate((char)ch2)){
+                return UCharacterProperty.getRawSupplementary((char)ch2,
+                                                              (char)ch1);
+            }else if (ch2 != DONE) {
+                //unmatched trail surrogate so back out
+                next();
+            }   
+        }
+        return ch1;
+    }
+
+    /**
+     * Sets the index to the specified index in the text.
+     * @param index the index within the text. 
+     * @exception IndexOutOfBoundsException is thrown if an invalid index is 
+     *            supplied
+     */
+    public abstract void setIndex(int index);
+
+    /**
+     * Sets the current index to the limit.
+     */
+    public void setToLimit() {
+	    setIndex(getLength());
+    }
+    
+    /**
+     * Sets the current index to the start.
+     */
+    public void setToStart() {
+	    setIndex(0);
+    }
+
+    /**
+     * Fills the buffer with the underlying text storage of the iterator
+     * If the buffer capacity is not enough a exception is thrown. The capacity
+     * of the fill in buffer should at least be equal to length of text in the 
+     * iterator obtained by calling <code>getLength()</code).
+     * <b>Usage:</b>
+     * 
+     * <code>
+     * <pre>
+     *         UChacterIterator iter = new UCharacterIterator.getInstance(text);
+     *         char[] buf = new char[iter.getLength()];
+     *         iter.getText(buf);
+     *         
+     *         OR
+     *         char[] buf= new char[1];
+     *         int len = 0;
+     *         for(;;){
+     *             try{
+     *                 len = iter.getText(buf);
+     *                 break;
+     *             }catch(IndexOutOfBoundsException e){
+     *                 buf = new char[iter.getLength()];
+     *             }
+     *         }
+     * </pre>
+     * </code>
+     *             
+     * @param fillIn an array of chars to fill with the underlying UTF-16 code 
+     *         units.
+     * @param offset the position within the array to start putting the data.
+     * @return the number of code units added to fillIn, as a convenience
+     * @exception IndexOutOfBounds exception if there is not enough
+     *            room after offset in the array, or if offset < 0.  
+     */
+    public abstract int getText(char[] fillIn, int offset); 
+
+    /**
+     * Convenience override for <code>getText(char[], int)>/code> that provides
+     * an offset of 0.
+     * @param fillIn an array of chars to fill with the underlying UTF-16 code 
+     *         units.
+     * @return the number of code units added to fillIn, as a convenience
+     * @exception IndexOutOfBounds exception if there is not enough
+     *            room in the array.  
+     */
+    public final int getText(char[] fillIn) {
+		return getText(fillIn, 0);
+    }
+         
+    /**
+     * Convenience method for returning the underlying text storage as as string
+     * @return the underlying text storage in the iterator as a string
+     */
+    public String getText() {
+		char[] text = new char[getLength()];
+		getText(text);
+		return new String(text);
+    }
+       
+    /**
+     * Moves the current position by the number of code units
+     * specified, either forward or backward depending on the sign
+     * of delta (positive or negative respectively).  If the resulting
+     * index would be less than zero, the index is set to zero, and if
+     * the resulting index would be greater than limit, the index is
+     * set to limit.
+     *
+     * @param delta the number of code units to move the current
+     *              index.
+     * @return the new index.
+     * @exception IndexOutOfBoundsException is thrown if an invalid index is 
+     *            supplied  
+     * 
+     */
+    public int moveIndex(int delta) {
+		int x = Math.max(0, Math.min(getIndex() + delta, getLength()));
+		setIndex(x);
+		return x;
+    }
+
+    /**
+     * Moves the current position by the number of code points
+     * specified, either forward or backward depending on the sign of
+     * delta (positive or negative respectively). If the current index
+     * is at a trail surrogate then the first adjustment is by code
+     * unit, and the remaining adjustments are by code points.  If the
+     * resulting index would be less than zero, the index is set to
+     * zero, and if the resulting index would be greater than limit,
+     * the index is set to limit.
+     * @param delta the number of code units to move the current index.
+     * @return the new index  
+     * @exception IndexOutOfBoundsException is thrown if an invalid delta is 
+     *            supplied
+     */
+    public int moveCodePointIndex(int delta){
+        if(delta>0){
+            while(delta>0 && nextCodePoint() != DONE){delta--;}
+        }else{
+	        while(delta<0 && previousCodePoint() != DONE){delta++;}
+        }
+        if(delta!=0){
+            throw new IndexOutOfBoundsException();
+        }
+          
+        return getIndex();
+    }
+
+    /**
+     * Creates a copy of this iterator, independent from other iterators.
+     * If it is not possible to clone the iterator, returns null.
+     * @return copy of this iterator
+     */
+    public Object clone() throws CloneNotSupportedException{
+	    return super.clone();
+    }   
+    
+}
+
diff --git a/src/com/ibm/icu/impl/UCharacterIteratorWrapper.java b/src/com/ibm/icu/impl/UCharacterIteratorWrapper.java
new file mode 100644
index 0000000..844597c
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterIteratorWrapper.java
@@ -0,0 +1,151 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /usr/cvs/icu4j/icu4j/src/com/ibm/icu/impl/ICUCharacterIterator.java,v $ 
+ * $Date: 2002/06/20 01:18:07 $ 
+ * $Revision: 1.1 $
+ *
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.impl;
+
+import java.text.CharacterIterator;
+
+/**
+ * This class is a wrapper around UCharacterIterator and implements the 
+ * CharacterIterator protocol
+ * @author ram
+ */
+public class UCharacterIteratorWrapper implements CharacterIterator{
+    
+    public UCharacterIteratorWrapper(UCharacterIterator iter){
+        this.iterator = iter;
+        this.currentIndex = 0;
+        this.length = iter.getLength();
+        //UCharacterIterator always iterates from 0 - length
+        this.beginIndex = 0;
+    }
+    
+    private UCharacterIterator iterator;
+    private int currentIndex;
+    private int length;
+    private int beginIndex;
+
+    /**
+     * Sets the position to getBeginIndex() and returns the character at that
+     * position.
+     * @return the first character in the text, or DONE if the text is empty
+     * @see #getBeginIndex()
+     */
+    public char first(){
+        iterator.setIndex(beginIndex);
+        return (char)iterator.current();
+    }
+
+    /**
+     * Sets the position to getEndIndex()-1 (getEndIndex() if the text is empty)
+     * and returns the character at that position.
+     * @return the last character in the text, or DONE if the text is empty
+     * @see #getEndIndex()
+     */
+    public char last(){
+        iterator.setIndex(length-1);
+        return (char)iterator.current();
+    }
+
+    /**
+     * Gets the character at the current position (as returned by getIndex()).
+     * @return the character at the current position or DONE if the current
+     * position is off the end of the text.
+     * @see #getIndex()
+     */
+    public char current(){
+        iterator.setIndex(currentIndex);
+        return (char) iterator.current();
+    }
+
+    /**
+     * Increments the iterator's index by one and returns the character
+     * at the new index.  If the resulting index is greater or equal
+     * to getEndIndex(), the current index is reset to getEndIndex() and
+     * a value of DONE is returned.
+     * @return the character at the new position or DONE if the new
+     * position is off the end of the text range.
+     */
+    public char next(){
+        //pre-increment
+        iterator.setIndex(++currentIndex);
+        return (char) iterator.current();
+    }
+
+    /**
+     * Decrements the iterator's index by one and returns the character
+     * at the new index. If the current index is getBeginIndex(), the index
+     * remains at getBeginIndex() and a value of DONE is returned.
+     * @return the character at the new position or DONE if the current
+     * position is equal to getBeginIndex().
+     */
+    public char previous(){
+        //pre-decrement
+        iterator.setIndex(--currentIndex);
+        return (char) iterator.current();
+    }
+
+    /**
+     * Sets the position to the specified position in the text and returns that
+     * character.
+     * @param position the position within the text.  Valid values range from
+     * getBeginIndex() to getEndIndex().  An IllegalArgumentException is thrown
+     * if an invalid value is supplied.
+     * @return the character at the specified position or DONE if the specified position is equal to getEndIndex()
+     */
+    public char setIndex(int position){
+        currentIndex=position;
+        return (char) iterator.current();
+    }
+
+    /**
+     * Returns the start index of the text.
+     * @return the index at which the text begins.
+     */
+    public int getBeginIndex(){
+        return beginIndex;
+    }
+
+    /**
+     * Returns the end index of the text.  This index is the index of the first
+     * character following the end of the text.
+     * @return the index after the last character in the text
+     */
+    public int getEndIndex(){
+        return length;
+    }
+
+    /**
+     * Returns the current index.
+     * @return the current index.
+     */
+    public int getIndex(){
+        return currentIndex;
+    }
+
+    /**
+     * Create a copy of this iterator
+     * @return A copy of this
+     */
+    public Object clone(){
+        try {
+            UCharacterIteratorWrapper result = (UCharacterIteratorWrapper) super.clone();
+            result.iterator = (UCharacterIterator)this.iterator.clone();
+            return result;
+        } catch (CloneNotSupportedException e) {      
+            return null; // only invoked if bad underlying character iterator
+        }
+    }   
+
+}
+
diff --git a/src/com/ibm/icu/impl/UCharacterProperty.java b/src/com/ibm/icu/impl/UCharacterProperty.java
new file mode 100644
index 0000000..1e91ba7
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterProperty.java
@@ -0,0 +1,2000 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: 
+*         /usr/cvs/icu4j/icu4j/src/com/ibm/icu/text/UCharacterPropertyDB.java $ 
+* $Date: 2002/07/30 02:32:55 $ 
+* $Revision: 1.15 $
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.util.Locale;
+import com.ibm.icu.util.VersionInfo;
+import com.ibm.icu.lang.UCharacterCategory;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.BreakIterator;
+
+/**
+* <p>Internal class used for Unicode character property database.</p>
+* <p>This classes store binary data read from uprops.icu. 
+* It does not have the capability to parse the data into more high-level 
+* information. It only returns bytes of information when required.</p>
+* <p>Due to the form most commonly used for retrieval, array of char is used
+* to store the binary data.</p>
+* <p>UCharacterPropertyDB also contains information on accessing indexes to 
+* significant points in the binary data.</p>
+* <p>Responsibility for molding the binary data into more meaning form lies on 
+* <a href=UCharacter.html>UCharacter</a>.</p>
+* @author Syn Wee Quek
+* @since release 2.1, february 1st 2002
+* @draft 2.1
+*/
+
+public final class UCharacterProperty implements Trie.DataManipulate
+{
+	// public data members -----------------------------------------------
+	
+	/**
+    * Trie data
+    */
+    public CharTrie m_trie_;    
+    /**
+    * Character property table
+    */
+    public int m_property_[];
+    /**
+    * Unicode version
+    */
+    public VersionInfo m_unicodeVersion_;
+    /**
+     * Exception indicator for uppercase type
+     */
+    public static final int EXC_UPPERCASE_ = 0;
+    /**
+     * Exception indicator for lowercase type
+     */
+    public static final int EXC_LOWERCASE_ = 1;
+    /**
+     * Exception indicator for titlecase type
+     */
+    public static final int EXC_TITLECASE_ = 2;
+    /**
+     * Exception indicator for digit type
+     */
+    public static final int EXC_UNUSED_ = 3;
+    /**
+     * Exception indicator for numeric type
+     */
+    public static final int EXC_NUMERIC_VALUE_ = 4;
+    /**
+     * Exception indicator for denominator type
+     */
+    public static final int EXC_DENOMINATOR_VALUE_ = 5;
+    /**
+     * Exception indicator for mirror type
+     */
+    public static final int EXC_MIRROR_MAPPING_ = 6;
+    /**
+     * Exception indicator for special casing type
+     */
+    public static final int EXC_SPECIAL_CASING_ = 7;
+    /**
+     * Exception indicator for case folding type
+     */
+    public static final int EXC_CASE_FOLDING_ = 8;
+    /**
+     * EXC_COMBINING_CLASS_ is not found in ICU.
+     * Used to retrieve the combining class of the character in the exception
+     * value
+     */
+    public static final int EXC_COMBINING_CLASS_ = 9;
+    /**
+     * Non numeric type
+     */
+    public static final int NON_NUMERIC_TYPE_ = 0;
+    /**
+     * Numeric type for decimal digits
+     */
+    public static final int DECIMAL_DIGIT_NUMERIC_TYPE_ = 1;
+    /**
+     * Numeric type for digits
+     */
+    public static final int DIGIT_NUMERIC_TYPE_ = 2;
+    /**
+     * Numeric type for non digits numbers
+     */
+    public static final int NON_DIGIT_NUMERIC_TYPE_ = 3;
+    /**
+     * Maximum number of expansion for a case mapping
+     */
+    public static final int MAX_CASE_MAP_SIZE = 10;                         
+    /**
+    * Turkish ISO 639 2 character code
+    */
+    public static final String TURKISH_ = "tr";  
+    /**
+    * Azerbaijani ISO 639 2 character code
+    */
+    public static final String AZERBAIJANI_ = "az";    
+    /**
+    * Lithuanian ISO 639 2 character code
+    */
+    public static final String LITHUANIAN_ = "lt";                  
+    /**
+    * Latin capital letter i with dot above
+    */ 
+    public static final char LATIN_CAPITAL_LETTER_I_WITH_DOT_ABOVE_ = 0x130;
+    /**
+    * Latin small letter i with dot above
+    */ 
+    public static final char LATIN_SMALL_LETTER_DOTLESS_I_ = 0x131;
+    /**
+    * Latin lowercase i
+    */
+    public static final char LATIN_SMALL_LETTER_I_ = 0x69;
+    
+    // public methods ----------------------------------------------------
+        
+    /**
+    * Extracts out the type value from property.
+    * For use in enumeration.
+    * @param value of trie value associated with a codepoint
+    */
+    public int extract(int value)
+    {    
+        // access the general category from the 32-bit properties, and those 
+        // from the 16-bit trie value    
+        return getPropType(m_property_[value]);
+    }
+      
+    /**
+    * Called by com.ibm.icu.util.Trie to extract from a lead surrogate's 
+    * data the index array offset of the indexes for that lead surrogate.
+    * @param property data value for a surrogate from the trie, including the
+    *        folding offset
+    * @return data offset or 0 if there is no data for the lead surrogate
+    */
+    public int getFoldingOffset(int value)
+    {
+        if ((value & SUPPLEMENTARY_FOLD_INDICATOR_MASK_) != 0) {
+            return (value & SUPPLEMENTARY_FOLD_OFFSET_MASK_);
+        }
+        else {
+            return 0;
+        }
+    }
+    
+    /**
+    * Gets the property value at the index
+    * @param ch code point whose property value is to be retrieved
+    * @return property value of code point
+    */
+    public int getProperty(int ch)
+    {
+        return m_property_[m_trie_.getCodePointValue(ch)];
+    }
+    
+    /**
+    * Returns a value indicating a character category from the argument property
+    * value
+    * @param unicode character property
+    * @return category
+    */
+    public static int getPropType(int prop)
+    {
+        // Since character information data are packed together.
+	    // This is the category mask for getting the category information
+        return prop & LAST_5_BIT_MASK_;
+    }
+    
+    /**
+    * Determines if the argument props indicates that the exception block has 
+    * to be accessed for data
+    * @param prop property value
+    * @return true if this is an exception indicator false otherwise
+    */
+    public static boolean isExceptionIndicator(int prop)
+    {
+        return (prop & EXCEPTION_MASK_) != 0;
+    }
+    
+    /**
+     * Getting the numberic type
+     * @param prop property value
+     * @return number type in prop
+     */
+     public static int getNumericType(int prop)
+     {
+     	return (prop >> NUMERIC_TYPE_SHIFT_) & NUMERIC_TYPE_MASK_;
+     }
+    
+    /**
+    * Getting the signed numeric value of a character embedded in the property
+    * argument
+    * @param prop the character
+    * @return signed numberic value
+    */
+    public static int getSignedValue(int prop)
+    {
+        return (prop >> VALUE_SHIFT_);
+    }
+      
+    /**
+    * Getting the exception index for argument property
+    * @param prop character property 
+    * @return exception index 
+    */
+    public static int getExceptionIndex(int prop)
+    {
+        return (prop >> VALUE_SHIFT_) & UNSIGNED_VALUE_MASK_AFTER_SHIFT_;
+    }
+      
+    /**
+    * Checking if property indicates mirror element
+    * @param prop property value
+    * @return true if mirror indicator is set, false otherwise
+    */
+    public static boolean isMirrored(int prop)
+    {
+        return (prop & MIRROR_MASK_) != 0;
+    }
+      
+    /**
+    * Getting the direction data in the property value
+    * @param prop property value
+    * @return direction value in property
+    */
+    public static int getDirection(int prop)
+    {
+        return (prop >> BIDI_SHIFT_) & BIDI_MASK_AFTER_SHIFT_;
+    }
+    
+    /**
+    * Getting the unsigned numeric value of a character embedded in the property
+    * argument
+    * @param prop the character
+    * @return unsigned numberic value
+    */
+    public static int getUnsignedValue(int prop)
+    {
+        return (prop >> VALUE_SHIFT_) & UNSIGNED_VALUE_MASK_AFTER_SHIFT_;
+    }
+    
+    /**
+    * Determines if the exception value passed in has the kind of information
+    * which the indicator wants, e.g if the exception value contains the digit
+    * value of the character
+    * @param index exception index
+    * @param indicator type indicator
+    * @return true if type value exist
+    */
+    public boolean hasExceptionValue(int index, int indicator) 
+    {
+        return (m_exception_[index] & (1 << indicator)) != 0;
+    }
+      
+    /**
+    * Gets the exception value at the index, assuming that data type is 
+    * available. Result is undefined if data is not available. Use 
+    * hasExceptionValue() to determine data's availability.
+    * @param index 
+    * @param exception data type
+    * @return exception data type value at index
+    */
+    public int getException(int index, int etype)
+    {
+        // contained in exception data
+        int evalue = m_exception_[index];
+        
+        switch (etype)
+        {
+        case EXC_COMBINING_CLASS_ :
+            return evalue;
+        default :
+            index ++;
+            // contained in the exception digit address
+            index = addExceptionOffset(evalue, etype, index);
+        }
+        return m_exception_[index];
+    }
+    
+    /**
+    * Gets the folded case value at the index
+    * @param index of the case value to be retrieved
+    * @return folded case value at index
+    */
+    public int getFoldCase(int index)
+    {
+        char single = m_case_[index];
+        if (UTF16.LEAD_SURROGATE_MIN_VALUE <= single && 
+            single <= UTF16.TRAIL_SURROGATE_MAX_VALUE) {
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is low,
+        // look both directions.
+                  
+	        if (single <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
+	            char trail = m_case_[index + 1];
+	            if (UTF16.LEAD_SURROGATE_MIN_VALUE <= trail && 
+		            trail <= UTF16.TRAIL_SURROGATE_MAX_VALUE) {
+	                return getRawSupplementary(single, trail);
+	            }
+	        } 
+	        else 
+	        { 
+	            char lead = m_case_[index - 1];
+	            if (UTF16.LEAD_SURROGATE_MIN_VALUE <= lead && 
+		            lead <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
+	                return getRawSupplementary(lead, single);
+	            }
+	        }
+	    }
+	    return single;
+    }
+    
+    /**
+    * Gets the folded case value at the index
+    * @param index of the case value to be retrieved
+    * @param count number of characters to retrieve
+    * @param buffer string buffer to add result to
+    */
+    public void getFoldCase(int index, int count, StringBuffer str) 
+    {
+        // first 2 chars are for the simple mappings
+        index += 2;
+        while (count > 0) {
+        	str.append(m_case_[index]);
+        	index ++;
+        	count --;
+        }
+    }
+    
+    /**
+    * Gets the upper case value at the index
+    * @param index of the case value to be retrieved
+    * @param buffer string buffer to add result to
+    */
+    public void getUpperCase(int index, StringBuffer buffer)
+    {
+    	int count = m_case_[index];
+        // last 5 bits of the first char in m_case_ gives the position of the 
+        // alternate uppercase characters
+        index += (count & LAST_5_BIT_MASK_) + 1;
+        count = (count >> SHIFT_5_) & LAST_5_BIT_MASK_;
+                
+        for (int j = 0; j < count; j ++) {
+        	buffer.append(m_case_[index + j]);
+        }
+    }
+    
+    /**
+    * Gets the upper case value at the index
+    * @param index of the case value to be retrieved
+    * @param buffer string buffer to add result to
+    */
+    public void getTitleCase(int index, StringBuffer buffer)
+    {
+        int count = m_case_[index];
+        // last 5 bits of the first char in m_case_ gives the position of the 
+        // alternate uppercase characters
+        index += (count & LAST_5_BIT_MASK_) + 1 + 
+                 ((count >> SHIFT_5_) & LAST_5_BIT_MASK_);
+        count = (count >> SHIFT_10_) & LAST_5_BIT_MASK_;
+                
+        for (int j = 0; j < count; j ++) {
+        	buffer.append(m_case_[index + j]);
+        }
+    }
+      
+    /**
+    * Gets the lower case value at the index
+    * @param index of the case value to be retrieved
+    * @param buffer string buffer to add result to
+    */
+    public void getLowerCase(int index, StringBuffer buffer)
+    {
+        int count = m_case_[index] & LAST_5_BIT_MASK_;
+        // last 5 bits of the first char in m_case_ gives the size of the 
+        // lowercase characters
+        index ++;
+        for (int j = 0; j < count; j ++) {
+        	buffer.append(m_case_[index + j]);
+        }
+    }
+    
+    /**
+     * Gets the unicode additional properties.
+     * C version getUnicodeProperties.
+     * @param codepoint codepoint whose additional properties is to be 
+     *                  retrieved
+     * @param column
+     * @return unicode properties
+     */ 
+   	public int getAdditional(int codepoint, int column) { 
+        if (column == -1) {
+            return getProperty(codepoint);
+        }
+   		if (column < 0 || column >= m_additionalColumnsCount_) { 
+           return 0; 
+       } 
+       return m_additionalVectors_[
+                     m_additionalTrie_.getCodePointValue(codepoint) + column]; 
+   	} 
+   	
+   	/**
+     * <p>Get the "age" of the code point.</p>
+     * <p>The "age" is the Unicode version when the code point was first
+     * designated (as a non-character or for Private Use) or assigned a 
+     * character.</p>
+     * <p>This can be useful to avoid emitting code points to receiving 
+     * processes that do not accept newer characters.</p>
+     * <p>The data is from the UCD file DerivedAge.txt.</p>
+     * <p>This API does not check the validity of the codepoint.</p>
+     * @param ch The code point.
+     * @return the Unicode version number
+     * @draft ICU 2.1
+     */
+    public VersionInfo getAge(int codepoint) 
+    {
+    	int version = getAdditional(codepoint, 0) >> AGE_SHIFT_;
+    	return VersionInfo.getInstance(
+                           (version >> FIRST_NIBBLE_SHIFT_) & LAST_NIBBLE_MASK_,
+                           version & LAST_NIBBLE_MASK_, 0, 0);
+    }
+
+	/**
+	 * <p>Check a binary Unicode property for a code point.</p> 
+	 * <p>Unicode, especially in version 3.2, defines many more properties 
+	 * than the original set in UnicodeData.txt.</p>
+	 * <p>This API is intended to reflect Unicode properties as defined in 
+	 * the Unicode Character Database (UCD) and Unicode Technical Reports 
+	 * (UTR).</p>
+	 * <p>For details about the properties see 
+	 * <a href=http://www.unicode.org/>http://www.unicode.org/</a>.</p>
+	 * <p>For names of Unicode properties see the UCD file 
+	 * PropertyAliases.txt.</p>
+	 * <p>This API does not check the validity of the codepoint.</p>
+	 * <p>Important: If ICU is built with UCD files from Unicode versions 
+	 * below 3.2, then properties marked with "new" are not or 
+	 * not fully available.</p>
+	 * @param codepoint Code point to test.
+	 * @param property selector constant from com.ibm.icu.lang.UProperty, 
+	 *        identifies which binary property to check.
+	 * @return true or false according to the binary Unicode property value 
+	 *         for ch. Also false if property is out of bounds or if the 
+	 *         Unicode version does not have data for the property at all, or 
+	 *         not for this code point.
+	 * @see com.ibm.icu.lang.UProperty
+	 * @draft ICU 2.1
+	 */
+	public boolean hasBinaryProperty(int codepoint, int property) 
+	{
+		switch(property) {
+    		case UProperty.ALPHABETIC: {
+        		// Lu+Ll+Lt+Lm+Lo+Nl+Other_Alphabetic
+        		int generaltype = getPropType(getProperty(codepoint));
+        		boolean generalmatch = 
+        		        generaltype == UCharacterCategory.UPPERCASE_LETTER 
+                        || generaltype == UCharacterCategory.LOWERCASE_LETTER 
+                        || generaltype == UCharacterCategory.TITLECASE_LETTER 
+                        || generaltype == UCharacterCategory.MODIFIER_LETTER 
+                        || generaltype == UCharacterCategory.LETTER_NUMBER
+                        || generaltype == UCharacterCategory.OTHER_LETTER;
+        		return generalmatch ||
+                       compareAdditionalType(getAdditional(codepoint, 1), 
+                                             OTHER_ALPHABETIC_PROPERTY_);
+    		}
+    		case UProperty.ASCII_HEX_DIGIT: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+											 ASCII_HEX_DIGIT_PROPERTY_);
+    		}
+    		case UProperty.BIDI_CONTROL: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             BIDI_CONTROL_PROPERTY_);
+    		}
+    		case UProperty.BIDI_MIRRORED: {
+        		return isMirrored(getProperty(codepoint));
+    		}
+    		case UProperty.DASH: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             DASH_PROPERTY_);
+    		}
+    		case UProperty.DEFAULT_IGNORABLE_CODE_POINT: {
+        		// <2060..206F, FFF0..FFFB, E0000..E0FFF>
+                // +Other_Default_Ignorable_Code_Point+(Cf+Cc+Cs-White_Space) 
+                if ((0x2060 <= codepoint && codepoint <= 0x206f) 
+                    || (0xfff0 <= codepoint && codepoint <= 0xfffb) 
+                    || (0xe0000 <= codepoint && codepoint <= 0xe0fff)) {
+                    return true;
+                }
+        		
+        		int additionalproperty = getAdditional(codepoint, 1);
+                if (compareAdditionalType(additionalproperty, 
+       		                   OTHER_DEFAULT_IGNORABLE_CODE_POINT_PROPERTY_)) {
+                    return true;
+                }
+                if (!compareAdditionalType(additionalproperty, 
+		                                              WHITE_SPACE_PROPERTY_)) {
+                    int generaltype = getPropType(getProperty(codepoint));
+                    if (generaltype == UCharacterCategory.FORMAT 
+                        || generaltype == UCharacterCategory.CONTROL 
+                        || generaltype == UCharacterCategory.SURROGATE) {
+                        return true;
+                    }
+                }
+                return false;
+    		}
+    		case UProperty.DEPRECATED: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             DEPRECATED_PROPERTY_);
+    		}
+    		case UProperty.DIACRITIC: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             DIACRITIC_PROPERTY_);
+    		}
+    		case UProperty.EXTENDER: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                         EXTENDER_PROPERTY_);
+    		}
+    		case UProperty.FULL_COMPOSITION_EXCLUSION: {
+        		return NormalizerImpl.isFullCompositionExclusion(codepoint);
+    		}
+    		case UProperty.GRAPHEME_BASE: {
+    			// [0..10FFFF]-Cc-Cf-Cs-Co-Cn-Zl-Zp-Grapheme_Link-Grapheme_Extend-CGJ ==
+                // [0..10FFFF]-Cc-Cf-Cs-Co-Cn-Zl-Zp-Grapheme_Link-(Me+Mn+Mc+Other_Grapheme_Extend)-CGJ ==
+                // [0..10FFFF]-Cc-Cf-Cs-Co-Cn-Zl-Zp-Me-Mn-Mc-Grapheme_Link-Other_Grapheme_Extend-CGJ
+                if (codepoint != 0x34f) { // CGJ
+                    int generaltype = getPropType(getProperty(codepoint));
+             		if (generaltype != UCharacterCategory.CONTROL 
+                        && generaltype != UCharacterCategory.FORMAT 
+                        && generaltype != UCharacterCategory.SURROGATE
+                        && generaltype != UCharacterCategory.PRIVATE_USE
+                        && generaltype != UCharacterCategory.GENERAL_OTHER_TYPES
+                        && generaltype != UCharacterCategory.LINE_SEPARATOR
+                        && generaltype != UCharacterCategory.PARAGRAPH_SEPARATOR
+             		    && generaltype != UCharacterCategory.ENCLOSING_MARK
+             		    && generaltype != UCharacterCategory.NON_SPACING_MARK 
+             		    && generaltype 
+                                != UCharacterCategory.COMBINING_SPACING_MARK) {
+             		    int additionalproperty = getAdditional(codepoint, 1);
+                        return !compareAdditionalType(additionalproperty,
+                                                      GRAPHEME_LINK_PROPERTY_) 
+                               && !compareAdditionalType(additionalproperty,
+                                              OTHER_GRAPHEME_EXTEND_PROPERTY_);
+             		}
+                }
+                return false;
+    		}
+    		case UProperty.GRAPHEME_EXTEND: {
+                // Me+Mn+Mc+Other_Grapheme_Extend-Grapheme_Link-CGJ
+                if (codepoint == 0x34f) { // CGJ
+                    return false; // fastest check first
+                }
+        
+                int additionalproperty = getAdditional(codepoint, 1);
+                if (!compareAdditionalType(additionalproperty, 
+                                           GRAPHEME_LINK_PROPERTY_)) {
+                    if (compareAdditionalType(additionalproperty, 
+                                             OTHER_GRAPHEME_EXTEND_PROPERTY_)) {
+                        return true;
+                    }
+                    int generaltype = getPropType(getProperty(codepoint));
+                    if (generaltype == UCharacterCategory.ENCLOSING_MARK ||
+                        generaltype == UCharacterCategory.NON_SPACING_MARK ||
+                        generaltype 
+                               == UCharacterCategory.COMBINING_SPACING_MARK) {
+                        return true;
+                    }
+                }
+                                             
+                return false;
+    		}
+    		case UProperty.GRAPHEME_LINK: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             GRAPHEME_LINK_PROPERTY_);
+    		}
+    		case UProperty.HEX_DIGIT: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             HEX_DIGIT_PROPERTY_);
+    		}
+    		case UProperty.HYPHEN: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             HYPHEN_PROPERTY_);
+    		}
+    		case UProperty.ID_CONTINUE: {
+        		// ID_Start+Mn+Mc+Nd+Pc == Lu+Ll+Lt+Lm+Lo+Nl+Mn+Mc+Nd+Pc
+        		int generaltype = getPropType(getProperty(codepoint));
+        		return generaltype == UCharacterCategory.UPPERCASE_LETTER ||
+        		       generaltype == UCharacterCategory.LOWERCASE_LETTER || 
+        		       generaltype == UCharacterCategory.TITLECASE_LETTER ||
+        		       generaltype == UCharacterCategory.MODIFIER_LETTER ||
+        		       generaltype == UCharacterCategory.OTHER_LETTER ||
+        		       generaltype == UCharacterCategory.LETTER_NUMBER ||
+        		       generaltype == UCharacterCategory.NON_SPACING_MARK ||
+        		       generaltype == 
+        		                  UCharacterCategory.COMBINING_SPACING_MARK ||
+        		       generaltype == UCharacterCategory.DECIMAL_DIGIT_NUMBER
+        		       || generaltype == 
+        		                     UCharacterCategory.CONNECTOR_PUNCTUATION;
+    		}
+    		case UProperty.ID_START: {
+        		// Lu+Ll+Lt+Lm+Lo+Nl
+        		int generaltype = getPropType(getProperty(codepoint));
+        		return generaltype == UCharacterCategory.UPPERCASE_LETTER ||
+        		       generaltype == UCharacterCategory.LOWERCASE_LETTER || 
+        		       generaltype == UCharacterCategory.TITLECASE_LETTER ||
+        		       generaltype == UCharacterCategory.MODIFIER_LETTER ||
+        		       generaltype == UCharacterCategory.OTHER_LETTER ||
+        		       generaltype == UCharacterCategory.LETTER_NUMBER;
+    		}
+    		case UProperty.IDEOGRAPHIC: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             IDEOGRAPHIC_PROPERTY_);
+    		}
+    		case UProperty.IDS_BINARY_OPERATOR: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             IDS_BINARY_OPERATOR_PROPERTY_);
+    		}
+    		case UProperty.IDS_TRINARY_OPERATOR: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             IDS_TRINARY_OPERATOR_PROPERTY_);
+			}
+    		case UProperty.JOIN_CONTROL: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             JOIN_CONTROL_PROPERTY_);
+    		}
+    		case UProperty.LOGICAL_ORDER_EXCEPTION: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+      		                             LOGICAL_ORDER_EXCEPTION_PROPERTY_);
+    		}
+    		case UProperty.LOWERCASE: {
+        		// Ll+Other_Lowercase
+        		int generaltype = getPropType(getProperty(codepoint));
+        		if (generaltype == UCharacterCategory.LOWERCASE_LETTER) {
+        			return true;
+        		}
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             OTHER_LOWERCASE_PROPERTY_);
+    		}
+    		case UProperty.MATH: {
+        		// Sm+Other_Math 
+        		int generaltype = getPropType(getProperty(codepoint));
+        		if (generaltype == UCharacterCategory.MATH_SYMBOL) {
+        			return true;
+        		}
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             OTHER_MATH_PROPERTY_);
+    		}
+    		case UProperty.NONCHARACTER_CODE_POINT: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                          NONCHARACTER_CODE_POINT_PROPERTY_);
+    		}
+    		case UProperty.QUOTATION_MARK: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             QUOTATION_MARK_PROPERTY_);
+    		}
+    		case UProperty.RADICAL: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             RADICAL_PROPERTY_);
+    		}
+    		case UProperty.SOFT_DOTTED: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             SOFT_DOTTED_PROPERTY_);
+    		}
+    		case UProperty.TERMINAL_PUNCTUATION: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             TERMINAL_PUNCTUATION_PROPERTY_);
+    		}
+		    case UProperty.UNIFIED_IDEOGRAPH: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             UNIFIED_IDEOGRAPH_PROPERTY_);
+		    }
+    		case UProperty.UPPERCASE: {
+        		// Lu+Other_Uppercase 
+        		int generaltype = getPropType(getProperty(codepoint));
+        		if (generaltype == UCharacterCategory.UPPERCASE_LETTER) {
+        			return true;
+        		}
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+                     	                     OTHER_UPPERCASE_PROPERTY_);
+    		}
+    		case UProperty.WHITE_SPACE: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             WHITE_SPACE_PROPERTY_);
+    		}
+    		case UProperty.XID_CONTINUE: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             XID_CONTINUE_PROPERTY_);
+    		}
+    		case UProperty.XID_START: {
+        		return compareAdditionalType(getAdditional(codepoint, 1),
+        		                             XID_START_PROPERTY_);
+    		}
+    		default:
+        		// not a known binary property
+        		return false;
+    	}
+	}
+	
+	/**
+    * Forms a supplementary code point from the argument character<br>
+    * Note this is for internal use hence no checks for the validity of the
+    * surrogate characters are done
+    * @param lead lead surrogate character
+    * @param trail trailing surrogate character
+    * @return code point of the supplementary character
+    */
+    public static int getRawSupplementary(char lead, char trail)
+    {
+        return (lead << LEAD_SURROGATE_SHIFT_) + trail + SURROGATE_OFFSET_;
+    }
+    
+    /**
+    * Loads the property data and initialize the UCharacterProperty instance. 
+    * @Exception thrown when data is missing or data has been corrupted.
+    */    
+    public static UCharacterProperty getInstance() throws RuntimeException
+    {
+    	if (INSTANCE_ == null) {
+    		try {
+    			INSTANCE_ = new UCharacterProperty();
+    		}
+        	catch (Exception e) {
+            	throw new RuntimeException(e.getMessage());
+        	}
+    	}
+    	return INSTANCE_;
+    }
+        
+    /**
+    * Special casing lowercase management
+    * @param locale current locale
+    * @param ch code point to convert
+    * @param index of exception containing special case information
+    * @param uchariter text iterator with index at position of ch
+    * @param buffer to add lowercase
+    * @return size of the lower case character in UTF16 format
+    */
+    public int getSpecialLowerCase(Locale locale, int index, int ch, 
+                                   UnicodeCharacterIterator uchariter,
+                                   StringBuffer buffer)
+    {
+    	int exception = getException(index, 
+                                     UCharacterProperty.EXC_SPECIAL_CASING_);
+        if (exception < 0) {
+        	int offset = uchariter.getIndex();
+            // fill u and i with the case mapping result string
+            // use hardcoded conditions and mappings
+            // Test for conditional mappings first
+            // (otherwise the unconditional default mappings are always taken),
+            // then test for characters that have unconditional mappings in 
+            // SpecialCasing.txt, then get the UnicodeData.txt mappings.
+            if (locale.getLanguage().equals(LITHUANIAN_) &&
+                // base characters, find accents above
+                (((ch == LATIN_CAPITAL_LETTER_I_ || 
+                   ch == LATIN_CAPITAL_LETTER_J_ ||
+                   ch == LATIN_CAPITAL_I_WITH_OGONEK_) &&
+                  isFollowedByMOREABOVE(uchariter, offset)) ||
+                  // precomposed with accent above, no need to find one
+                  (ch == LATIN_CAPITAL_I_WITH_GRAVE_ || 
+                   ch == LATIN_CAPITAL_I_WITH_ACUTE_ || 
+                   ch == LATIN_CAPITAL_I_WITH_TILDE_))) {
+                   // lithuanian: add a dot above if there are more accents 
+                   // above (to always have the dot)
+                   // # Lithuanian
+                   // # Lithuanian retains the dot in a lowercase i when 
+                   //   followed by accents.
+                   // # Introduce an explicit dot above when lowercasing 
+                   // capital I's and J's
+                   // whenever there are more accents above.
+                   // (of the accents used in Lithuanian: grave, acute, tilde 
+                   // above, and ogonek)
+                   // 0049; 0069 0307; 0049; 0049; lt More_Above; 
+                   // # LATIN CAPITAL LETTER I
+                   // 004A; 006A 0307; 004A; 004A; lt More_Above; 
+                   // # LATIN CAPITAL LETTER J
+                   // 012E; 012F 0307; 012E; 012E; lt More_Above; 
+                   // # LATIN CAPITAL LETTER I WITH OGONEK
+                   // 00CC; 0069 0307 0300; 00CC; 00CC; lt; 
+                   // # LATIN CAPITAL LETTER I WITH GRAVE
+                   // 00CD; 0069 0307 0301; 00CD; 00CD; lt; 
+                   // # LATIN CAPITAL LETTER I WITH ACUTE
+                   // 0128; 0069 0307 0303; 0128; 0128; lt; 
+                   // # LATIN CAPITAL LETTER I WITH TILDE
+                   switch(ch) {
+                   case LATIN_CAPITAL_LETTER_I_: 
+                        buffer.append((char)LATIN_SMALL_LETTER_I_);
+                        buffer.append((char)COMBINING_DOT_ABOVE_);
+                        return 2;
+                   case LATIN_CAPITAL_LETTER_J_: 
+                        buffer.append((char)LATIN_SMALL_LETTER_J_);
+                        buffer.append((char)COMBINING_DOT_ABOVE_);
+                        return 2;
+                   case LATIN_CAPITAL_I_WITH_OGONEK_:
+                        buffer.append((char)LATIN_SMALL_LETTER_I_WITH_OGONEK_);
+                        buffer.append((char)COMBINING_DOT_ABOVE_);
+                        return 2;
+                   case LATIN_CAPITAL_I_WITH_GRAVE_: 
+                        buffer.append((char)LATIN_SMALL_LETTER_I_);
+                        buffer.append((char)COMBINING_DOT_ABOVE_);
+                        buffer.append((char)COMBINING_GRAVE_ACCENT_);
+                        return 3;
+                   case LATIN_CAPITAL_I_WITH_ACUTE_: 
+                        buffer.append((char)LATIN_SMALL_LETTER_I_);
+                        buffer.append((char)COMBINING_DOT_ABOVE_);
+                        buffer.append((char)COMBINING_ACUTE_ACCENT_);
+                        return 3;
+                   case LATIN_CAPITAL_I_WITH_TILDE_:
+                        buffer.append((char)LATIN_SMALL_LETTER_I_);
+                        buffer.append((char)COMBINING_DOT_ABOVE_);
+                        buffer.append((char)COMBINING_TILDE_);
+                        return 3;
+                   }
+            } 
+            
+            String language = locale.getLanguage();
+            if (language.equals(TURKISH_) || language.equals(AZERBAIJANI_)) { 
+                if (ch == 0x130) {
+                    // # I and i-dotless; I-dot and i are case pairs in Turkish 
+                    // and Azeri
+                    // # The following rules handle those cases.
+                    // 0130; 0069; 0130; 0130; tr 
+                    // # LATIN CAPITAL LETTER I WITH DOT ABOVE
+                    // 0130; 0069; 0130; 0130; az 
+                    // # LATIN CAPITAL LETTER I WITH DOT ABOVE
+                    buffer.append(LATIN_SMALL_LETTER_I_);
+                    return 1;
+                } 
+                if (ch == 0x307 && isPrecededBySoftDotted(uchariter, offset)) {
+                    // ### TODO see comment above about isAfter_I()
+                    // # When lowercasing, remove dot_above in the sequence 
+                    // I + dot_above, which will turn into i.
+                    // # This matches the behavior of the canonically
+                    // equivalent I-dot_above
+                    // 0307; ; 0307; 0307; tr After_Soft_Dotted; 
+                    // # COMBINING DOT ABOVE
+                    // 0307; ; 0307; 0307; az After_Soft_Dotted; 
+                    // # COMBINING DOT ABOVE
+                    return 0; // remove the dot (continue without output)
+
+                }
+                if (ch == LATIN_CAPITAL_LETTER_I_ && 
+                    !isFollowedByDotAbove(uchariter, offset)) {
+                    // turkish: I maps to dotless i
+                    // other languages or turkish with decomposed I+dot above: 
+                    // I maps to i
+                    // # When lowercasing, unless an I is before a dot_above, 
+                    // it turns into a dotless i.
+                    //  0049; 0131; 0049; 0049; tr Not_Before_Dot; 
+                    // # LATIN CAPITAL LETTER I
+                    // 0049; 0131; 0049; 0049; az Not_Before_Dot; 
+                    // # LATIN CAPITAL LETTER I
+                    buffer.append(LATIN_SMALL_LETTER_DOTLESS_I_);
+                    return 1;
+                }
+            } 
+            
+			if (ch == 0x130) {
+                // decomposed I+dot above becomes i (see handling of 
+                // U+0049 for turkish) and removes the dot above
+                // # Preserve canonical equivalence for I with dot. Turkic is 
+                // handled below.
+                // 0130; 0069 0307; 0130; 0130; 
+                // # LATIN CAPITAL LETTER I WITH DOT ABOVE
+                buffer.append(LATIN_SMALL_LETTER_I_);
+                buffer.append(COMBINING_DOT_ABOVE_);
+                return 2; // remove the dot (continue without output)
+            } 
+            
+            if (ch == GREEK_CAPITAL_LETTER_SIGMA_ && 
+                isCFINAL(uchariter, offset) && 
+                isNotCINITIAL(uchariter, offset)) {
+                // greek capital sigma maps depending on surrounding cased 
+                // letters
+                // greek capital sigma maps depending on surrounding cased 
+                // letters (see SpecialCasing.txt) */
+                // # Special case for final form of sigma
+                // 03A3; 03C2; 03A3; 03A3; Final_Sigma; 
+                // # GREEK CAPITAL LETTER SIGMA
+                buffer.append(GREEK_SMALL_LETTER_RHO_);
+                return 1;
+            } 
+            
+			// no known conditional special case mapping, use a normal mapping
+            if (hasExceptionValue(index, UCharacterProperty.EXC_LOWERCASE_)) {
+                int oldlength = buffer.length();
+                UTF16.append(buffer, getException(index, 
+                                            UCharacterProperty.EXC_LOWERCASE_)); 
+                return buffer.length() - oldlength;                            
+            }
+            
+			UTF16.append(buffer, ch);
+			return UTF16.getCharCount(ch);
+        }
+        else {
+            // get the special case mapping string from the data file
+            index = exception & LAST_CHAR_MASK_;
+            int oldlength = buffer.length();
+            getLowerCase(index, buffer);
+            return buffer.length() - oldlength;
+        }
+    }
+    
+    /**
+     * Gets the lower case map of the argument codepoint
+     * @param locale locale which the lowercase is looked for
+     * @param ch codepoint whose lower case is to be matched
+     * @param uchariter text iterator positioned at the codepoint ch
+     * @param buffer buffer to store result string
+     * @return size of the lowercased codepoint in UTF16 format
+     */
+    public int toLowerCase(Locale locale, int ch, 
+                                   UnicodeCharacterIterator uchariter, 
+                                   StringBuffer buffer)
+    {
+    	int props = getProperty(ch);
+        if (!UCharacterProperty.isExceptionIndicator(props)) {
+            int type = UCharacterProperty.getPropType(props);
+            if (type == UCharacterCategory.UPPERCASE_LETTER ||
+                type == UCharacterCategory.TITLECASE_LETTER) {
+                ch += UCharacterProperty.getSignedValue(props);
+            }
+        } else {
+            int index = UCharacterProperty.getExceptionIndex(props);
+            if (hasExceptionValue(index, 
+                                UCharacterProperty.EXC_SPECIAL_CASING_)) {
+                return getSpecialLowerCase(locale, index, ch, uchariter, 
+                                           buffer);
+            } 
+            if (hasExceptionValue(index, 
+                                       UCharacterProperty.EXC_LOWERCASE_)) {
+                ch = getException(index, UCharacterProperty.EXC_LOWERCASE_);
+            }
+        }
+        UTF16.append(buffer, ch);
+        return UTF16.getCharCount(ch);
+	}
+
+	/**
+     * Gets the lower case map of the argument codepoint
+     * @param locale locale which the lowercase is looked for
+     * @param ch codepoint whose lower case is to be matched
+     * @param uchariter text iterator positioned at the codepoint ch
+     * @param result array of char to store the result
+     * @return size oflowercased codepoint in UTF16 format
+     */
+    public int toLowerCase(Locale locale, int ch, 
+                           UnicodeCharacterIterator uchariter, char buffer[])
+    {
+        int props = getProperty(ch);
+        if (!UCharacterProperty.isExceptionIndicator(props)) {
+            int type = UCharacterProperty.getPropType(props);
+            if (type == UCharacterCategory.UPPERCASE_LETTER ||
+                type == UCharacterCategory.TITLECASE_LETTER) {
+                ch += UCharacterProperty.getSignedValue(props);
+            }
+        } else {
+            int index = UCharacterProperty.getExceptionIndex(props);
+            if (hasExceptionValue(index, 
+                                  UCharacterProperty.EXC_SPECIAL_CASING_)) {
+                StringBuffer strbuffer = new StringBuffer(1);
+                int result = getSpecialLowerCase(locale, index, ch, uchariter, 
+                                                 strbuffer);
+                strbuffer.getChars(0, result, buffer, 0);
+                return result;
+            } 
+            if (hasExceptionValue(index, UCharacterProperty.EXC_LOWERCASE_)) {
+                ch = getException(index, UCharacterProperty.EXC_LOWERCASE_);
+            }
+        }
+        if (ch < UTF16.SUPPLEMENTARY_MIN_VALUE) {
+        	buffer[0] = (char)ch;
+        	return 1;
+        }
+        buffer[0] = UTF16.getLeadSurrogate(ch);
+        buffer[1] = UTF16.getTrailSurrogate(ch);
+        return 2;
+	}
+    
+    /**
+     * Gets the lower case mappings of the substring from index start to the
+     * character before end.
+     * @param locale locale which the mappings will be searched
+     * @param str string to map 
+     * @param start start index of the substring to map
+     * @param limit one index pass the last character to map
+     * @param result string buffer to store lower case string
+     */
+    public void toLowerCase(Locale locale, String str, int start, int limit, 
+                            StringBuffer result) 
+    {
+        UnicodeCharacterIterator ucharIter = new UnicodeCharacterIterator(str);
+        int                strIndex  = start;
+        
+        while (strIndex < limit) { 
+        	ucharIter.setIndex(strIndex);
+	        int ch = ucharIter.currentCodePoint();
+	        
+	        toLowerCase(locale, ch, ucharIter, result);
+	        strIndex ++;
+	        if (ch >= UTF16.SUPPLEMENTARY_MIN_VALUE) {
+	        	strIndex ++;
+	        }
+        }
+    }
+    
+    /**
+    * Special casing uppercase management
+    * @param locale locale which the mappings will be based on
+    * @param index of exception containing special case information
+    * @param ch code point to convert
+    * @param uchariter text iterator which ch belongs to
+    * @param upperflag true if uppercase mapping is desired, false for title 
+    *        casing
+    * @param buffer to add uppercase
+    * @return size of uppercased codepoint in UTF16 format
+    */
+    public int getSpecialUpperOrTitleCase(Locale locale, int index, int ch, 
+                                          UnicodeCharacterIterator uchariter, 
+                                          boolean upperflag, 
+                                          StringBuffer buffer)
+    {
+        int exception = getException(index, 
+                                     UCharacterProperty.EXC_SPECIAL_CASING_);
+        if (exception < 0) {
+            String language = locale.getLanguage();
+            // use hardcoded conditions and mappings
+            if ((language.equals(TURKISH_) || language.equals(AZERBAIJANI_))
+                && ch == LATIN_SMALL_LETTER_I_) {
+                // turkish: i maps to dotted I
+                // # Turkish and Azeri
+                // # I and i-dotless; I-dot and i are case pairs in Turkish and Azeri
+                // # The following rules handle those cases.
+                // # When uppercasing, i turns into a dotted capital I
+                // 0069; 0069; 0130; 0130; tr; # LATIN SMALL LETTER I
+                // 0069; 0069; 0130; 0130; az; # LATIN SMALL LETTER I
+                buffer.append(LATIN_CAPITAL_LETTER_I_WITH_DOT_ABOVE_);
+                return 1;
+            } 
+            
+            if (language.equals(LITHUANIAN_) && ch == COMBINING_DOT_ABOVE_ 
+                && isPrecededBySoftDotted(uchariter, uchariter.getIndex())) {
+                // # Lithuanian
+                // # Lithuanian retains the dot in a lowercase i when followed 
+                // by accents.
+                // # Remove DOT ABOVE after "i" with upper or titlecase
+                // 0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE
+                                // lithuanian: remove DOT ABOVE after U+0069 "i" with 
+                // upper or titlecase
+                return 0; // remove the dot (continue without output)
+            } 
+            
+            // no known conditional special case mapping, use a normal mapping
+           if (!upperflag && hasExceptionValue(index, 
+                                          UCharacterProperty.EXC_TITLECASE_)) {
+               ch = getException(index, UCharacterProperty.EXC_TITLECASE_);                    
+           }
+           else {
+               if (hasExceptionValue(index, 
+                                     UCharacterProperty.EXC_UPPERCASE_)) {
+	               ch = getException(index, UCharacterProperty.EXC_UPPERCASE_); 
+               }
+           }
+           
+           UTF16.append(buffer, ch);
+           return UTF16.getCharCount(ch);
+        }
+        
+		// get the special case mapping string from the data file
+        index = exception & LAST_CHAR_MASK_;
+        int oldlength = buffer.length();
+        if (upperflag) {
+	        getUpperCase(index, buffer);
+        }
+        else {
+          	getTitleCase(index, buffer);
+        }
+        return buffer.length() - oldlength;
+    }
+    
+    /**
+     * Gets the upper or title case map of the codepoint
+     * @param locale locale which the mappings will be searched 
+     * @param ch codepoint whose upper or title case will be mapped
+     * @param uchariter text iterator positioned at the codepoint
+     * @param upperflag flag true if uppercase is desired, false for title case
+     * @param buffer buffer to store result map
+     * @return size of uppercased codepoint in UTF16 format
+     */
+	public int toUpperOrTitleCase(Locale locale, int ch, 
+	                              UnicodeCharacterIterator uchariter, 
+	                              boolean upperflag, StringBuffer buffer) 
+    {
+        int props = getProperty(ch);
+        if (!UCharacterProperty.isExceptionIndicator(props)) {
+            int type = UCharacterProperty.getPropType(props);
+            if (type == UCharacterCategory.LOWERCASE_LETTER) {
+            	ch -= UCharacterProperty.getSignedValue(props);
+            }
+        } else {
+            int index = UCharacterProperty.getExceptionIndex(props);
+            if (hasExceptionValue(index, 
+                                  UCharacterProperty.EXC_SPECIAL_CASING_)) {
+                return getSpecialUpperOrTitleCase(locale, index, ch, uchariter, 
+                                                  upperflag, buffer);
+            } 
+            if (!upperflag && hasExceptionValue(index, 
+                                         UCharacterProperty.EXC_TITLECASE_)) {
+                ch = getException(index, UCharacterProperty.EXC_TITLECASE_);
+            }
+            else {
+             	if (hasExceptionValue(index, 
+                                      UCharacterProperty.EXC_UPPERCASE_)) {
+                    ch = getException(index, 
+                                      UCharacterProperty.EXC_UPPERCASE_);
+                }
+            }
+        }
+        UTF16.append(buffer, ch);
+        return UTF16.getCharCount(ch);
+    }
+    
+    /**
+     * Gets the upper or title case map of the codepoint
+     * @param locale locale which the mappings will be searched 
+     * @param ch codepoint whose upper or title case will be mapped
+     * @param uchariter text iterator positioned at the codepoint
+     * @param upperflag flag true if uppercase is desired, false for title case
+     * @param buffer buffer to store result map
+     * @return size of uppercased codepoint in UTF16 format
+     */
+	public int toUpperOrTitleCase(Locale locale, int ch, 
+	                              UnicodeCharacterIterator uchariter, 
+	                              boolean upperflag, char buffer[]) 
+    {
+        int props = getProperty(ch);
+        if (!UCharacterProperty.isExceptionIndicator(props)) {
+            int type = UCharacterProperty.getPropType(props);
+            if (type == UCharacterCategory.LOWERCASE_LETTER) {
+            	ch -= UCharacterProperty.getSignedValue(props);
+            }
+        } else {
+            int index = UCharacterProperty.getExceptionIndex(props);
+            if (hasExceptionValue(index, 
+                                  UCharacterProperty.EXC_SPECIAL_CASING_)) {
+               	StringBuffer strbuffer = new StringBuffer(1);
+                int result = getSpecialUpperOrTitleCase(locale, index, ch, 
+                                                        uchariter, upperflag, 
+                                                        strbuffer);
+                strbuffer.getChars(0, result, buffer, 0);
+                return result;
+            } 
+            if (!upperflag && hasExceptionValue(index, 
+                                         UCharacterProperty.EXC_TITLECASE_)) {
+                ch = getException(index, UCharacterProperty.EXC_TITLECASE_);
+            }
+            else {
+             	if (hasExceptionValue(index, 
+                                      UCharacterProperty.EXC_UPPERCASE_)) {
+                    ch = getException(index, 
+                                      UCharacterProperty.EXC_UPPERCASE_);
+                }
+            }
+        }
+        if (ch < UTF16.SUPPLEMENTARY_MIN_VALUE) {
+        	buffer[0] = (char)ch;
+        	return 1;
+        }
+        buffer[0] = UTF16.getLeadSurrogate(ch);
+        buffer[1] = UTF16.getTrailSurrogate(ch);
+        return 2;
+    }
+    
+    /**
+     * Gets the uppercasing of the argument string.
+     * @param locale locale which the mappings will be searched
+     * @param str string to map 
+     * @param start start index of the substring to map
+     * @param limit one index pass the last character to map
+     */
+    public String toUpperCase(Locale locale, String str, int start, int limit) 
+    {
+        UnicodeCharacterIterator ucharIter = new UnicodeCharacterIterator(str);
+        int                strIndex  = start;
+        StringBuffer       result    = new StringBuffer(limit - start);
+        
+        while (strIndex < limit) { 
+        	ucharIter.setIndex(strIndex);
+	        int ch = ucharIter.currentCodePoint();
+	        
+	        toUpperOrTitleCase(locale, ch, ucharIter, true, result);
+	        strIndex ++;
+	        if (ch >= UTF16.SUPPLEMENTARY_MIN_VALUE) {
+	        	strIndex ++;
+	        }
+        }
+        return result.toString();
+    }
+    
+    /**
+    * <p>Gets the titlecase version of the argument string.</p>
+    * <p>Position for titlecasing is determined by the argument break 
+    * iterator, hence the user can customized his break iterator for 
+    * a specialized titlecasing. In this case only the forward iteration 
+    * needs to be implemented.
+    * If the break iterator passed in is null, the default Unicode algorithm
+    * will be used to determine the titlecase positions.
+    * </p>
+    * <p>Only positions returned by the break iterator will be title cased,
+    * character in between the positions will all be in lower case.</p>
+    * <p>Casing is dependent on the default locale and context-sensitive</p>
+    * @param str source string to be performed on
+    * @param breakiter break iterator to determine the positions in which
+    *        the character should be title cased.
+    * @return lowercase version of the argument string
+    */
+ 	public String toTitleCase(Locale locale, String str, 
+ 	                          BreakIterator breakiter)
+ 	{
+ 		UnicodeCharacterIterator ucharIter = new UnicodeCharacterIterator(str);
+		int                length    = str.length();
+        StringBuffer       result    = new StringBuffer();
+        
+        breakiter.setText(str);
+        
+        int                index     = breakiter.first();
+       	// titlecasing loop
+	    while (index != BreakIterator.DONE && index < length) {
+	    	// titlecase the character at the found index
+	        int ch = UTF16.charAt(str, index);
+	        ucharIter.setIndex(index);
+	        index += UTF16.getCharCount(ch);
+        	toUpperOrTitleCase(locale, ch, ucharIter, false, result);
+        	int next = breakiter.next();
+        	if (index != BreakIterator.DONE && index < next) {
+	        	// lowercase [prev..index]
+        		toLowerCase(locale, str, index, next, result);
+            }
+            index = next;
+        }
+        return result.toString();
+ 	}
+
+    /**
+     * <p>
+     * Unicode property names and property value names are compared
+     * "loosely". Property[Value]Aliases.txt say:
+     * <quote>
+     *   "With loose matching of property names, the case distinctions, 
+     *    whitespace, and '_' are ignored."
+     * </quote>
+     * </p>
+     * <p>
+     * This function does just that, for ASCII (char *) name strings.
+     * It is almost identical to ucnv_compareNames() but also ignores
+     * ASCII White_Space characters (U+0009..U+000d).
+     * </p>
+     * @param name1 name to compare
+     * @param name2 name to compare
+     * @return 0 if names are equal, < 0 if name1 is less than name2 and > 0
+     *         if name1 is greater than name2.
+     */
+    /* to be implemented in 2.4
+     * public static int comparePropertyNames(String name1, String name2) 
+    {
+        int result = 0;
+        int i1 = 0;
+        int i2 = 0;
+        while (true) {
+            char ch1 = 0;
+            char ch2 = 0;
+            // Ignore delimiters '-', '_', and ASCII White_Space 
+            if (i1 < name1.length()) {
+                ch1 = name1.charAt(i1 ++);
+            }
+            while (ch1 == '-' || ch1 == '_' || ch1 == ' ' || ch1 == '\t' 
+                   || ch1 == '\n' // synwee what is || ch1 == '\v'
+                   || ch1 == '\f' || ch1=='\r') {
+                if (i1 < name1.length()) {
+                    ch1 = name1.charAt(i1 ++);
+                }
+                else {
+                    ch1 = 0;
+                }
+            }
+            if (i2 < name2.length()) {
+                ch2 = name2.charAt(i2 ++);
+            }
+            while (ch2 == '-' || ch2 == '_' || ch2 == ' ' || ch2 == '\t' 
+                   || ch2 == '\n' // synwee what is || ch1 == '\v' 
+                   || ch2 == '\f' || ch2=='\r') {
+                if (i2 < name2.length()) {
+                    ch2 = name2.charAt(i2 ++);
+                }
+                else {
+                    ch2 = 0;
+                }
+            }
+    
+            // If we reach the ends of both strings then they match
+            if (ch1 == 0 && ch2 == 0) {
+                return 0;
+            }
+            
+            // Case-insensitive comparison
+            if (ch1 != ch2) {
+                result = Character.toLowerCase(ch1)
+                                                - Character.toLowerCase(ch2);
+                if (result != 0) {
+                    return result;
+                }
+            }
+        }
+    }
+    */
+    
+    /**
+     * Checks if the argument c is to be treated as a white space in ICU
+     * rules. Usually ICU rule white spaces are ignored unless quoted.
+     * @param c codepoint to check
+     * @return true if c is a ICU white space
+     */
+    public static boolean isRuleWhiteSpace(int c) 
+    {
+        // "white space" in the sense of ICU rule parsers: Cf+White_Space
+        UCharacterProperty property = UCharacterProperty.getInstance();
+        return property.getType(c) == UCharacterCategory.FORMAT ||
+               property.hasBinaryProperty(c, UProperty.WHITE_SPACE);
+    }
+
+    // protected variables -----------------------------------------------
+  
+    /**
+    * Case table
+    */
+    protected char m_case_[];
+      
+    /**
+    * Exception property table
+    */
+    protected int m_exception_[];
+    /**
+     * Extra property trie
+     */
+    protected CharTrie m_additionalTrie_;
+    /**
+     * Extra property vectors, 1st column for age and second for binary 
+     * properties.
+     */
+    protected int m_additionalVectors_[];
+    /**
+     * Number of additional columns
+     */
+    protected int m_additionalColumnsCount_;
+    
+    // private variables -------------------------------------------------
+  
+  	/**
+     * UnicodeData.txt property object
+     */
+    public static UCharacterProperty INSTANCE_ = null;   
+        
+    /**
+    * Default name of the datafile
+    */
+    private static final String DATA_FILE_NAME_ = "data/uprops.icu";
+      
+    /**
+    * Default buffer size of datafile
+    */
+    private static final int DATA_BUFFER_SIZE_ = 25000;
+      
+    /**
+    * This, from what i infer is the max size of the indicators used for the
+    * exception values.
+    * Number of bits in an 8-bit integer value 
+    */
+    private static final int EXC_GROUP_ = 8;
+      
+    /**
+    * Mask to get the group  
+    */
+    private static final int EXC_GROUP_MASK_ = 255;
+      
+    /**
+    * Mask to get the digit value in the exception result
+    */
+    private static final int EXC_DIGIT_MASK_ = 0xFFFF;
+      
+    /**
+    * Offset table for data in exception block.<br>
+    * Table formed by the number of bits used for the index, e.g. 0 = 0 bits, 
+    * 1 = 1 bits.
+    */
+    private static final byte FLAGS_OFFSET_[] = 
+    {
+        0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4,
+        1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+        1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+        1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+        3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+        4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8
+    };
+      
+    /**
+    * Numeric value shift
+    */
+    private static final int VALUE_SHIFT_ = 20;
+      
+    /**
+    * Exception test mask
+    */
+    private static final int EXCEPTION_MASK_ = 0x20;
+      
+    /**
+    * Mask to be applied after shifting to obtain an unsigned numeric value
+    */
+    private static final int UNSIGNED_VALUE_MASK_AFTER_SHIFT_ = 0x7FF;
+    
+    /**
+    * Shift to get bidi bits
+    */
+    private static final int BIDI_SHIFT_ = 6;
+      
+    /**
+    * Mask to be applied after shifting to get bidi bits
+    */
+    private static final int BIDI_MASK_AFTER_SHIFT_ = 0x1F;
+      
+    /**
+    * Mirror test mask
+    */
+    private static final int MIRROR_MASK_ = 1 << 11;
+    
+    /**
+     * Shift to get numeric type
+     */
+    private static final int NUMERIC_TYPE_SHIFT_ = 12;
+    
+    /**
+     * Mask to get numeric type
+     */
+    private static final int NUMERIC_TYPE_MASK_ = 0x7;
+
+	/**
+	 * Shift to get reserved value
+	 */
+	private static final int RESERVED_SHIFT_ = 15;
+	
+	/**
+	 * Bit indicating exception
+	 */
+  	private static final int EXCEPTION_BIT = 1 << 5;
+  	
+  	/** 
+  	 * Bit to get the actual property value
+  	 */
+    private static final int VALUE_BITS_ = 0x10000 - VALUE_SHIFT_;
+
+	/**
+	 * Minimum value of a property
+	 */
+    private static final int MIN_VALUE_ = -(1 << (VALUE_BITS_ - 1));
+    
+    /**
+     * Maximum value of a property
+     */
+    private static final int MAX_VALUE_ = (1 << (VALUE_BITS_ - 1)) - 1;
+    /**
+     * Maximum number of exceptions
+     */
+    private static int MAX_EXCEPTIONS_COUNT_ = 1 << VALUE_BITS_;
+
+      
+    /**
+    * To get the last 5 bits out from a data type
+    */
+    private static final int LAST_5_BIT_MASK_ = 0x1F;
+      
+    /**
+    * Shift 5 bits
+    */
+    private static final int SHIFT_5_ = 5;
+    /**
+    * Shift 10 bits
+    */
+    private static final int SHIFT_10_ = 10;
+      
+    /**
+    * Folding indicator mask
+    */
+    private static final int SUPPLEMENTARY_FOLD_INDICATOR_MASK_ = 0x8000;
+    /**
+    * Folding offset mask
+    */
+    private static final int SUPPLEMENTARY_FOLD_OFFSET_MASK_ = 0x7FFF;
+    /**
+    * Shift value for lead surrogate to form a supplementary character.
+    */
+	private static final int LEAD_SURROGATE_SHIFT_ = 10;
+	/** 
+    * Offset to add to combined surrogate pair to avoid msking.
+    */
+    private static final int SURROGATE_OFFSET_ = 
+                           UTF16.SUPPLEMENTARY_MIN_VALUE - 
+                           (UTF16.SURROGATE_MIN_VALUE << 
+                           LEAD_SURROGATE_SHIFT_) - 
+                           UTF16.TRAIL_SURROGATE_MIN_VALUE;   
+    /**
+    * Latin uppercase I
+    */
+    private static final char LATIN_CAPITAL_LETTER_I_ = 0x49;
+    /**
+    * Combining dot above
+    */
+    private static final char COMBINING_DOT_ABOVE_ = 0x307;
+    /**
+    * LATIN SMALL LETTER J
+    */
+    private static final int LATIN_SMALL_LETTER_J_ = 0x6a;
+    /**
+    * LATIN SMALL LETTER I WITH OGONEK
+    */
+    private static final int LATIN_SMALL_LETTER_I_WITH_OGONEK_ = 0x12f;
+    /**
+    * LATIN SMALL LETTER I WITH TILDE BELOW
+    */
+    private static final int LATIN_SMALL_LETTER_I_WITH_TILDE_BELOW_ = 0x1e2d;
+    /**
+    * LATIN SMALL LETTER I WITH DOT BELOW
+    */
+    private static final int LATIN_SMALL_LETTER_I_WITH_DOT_BELOW_ = 0x1ecb;
+    /**
+    * Combining class for combining mark above
+    */
+    private static final int COMBINING_MARK_ABOVE_CLASS_ = 230;
+    
+    /**
+    * LATIN CAPITAL LETTER J
+    */
+    private static final int LATIN_CAPITAL_LETTER_J_ = 0x4a;
+    
+    /**
+    * LATIN CAPITAL LETTER I WITH OGONEK
+    */
+    private static final int LATIN_CAPITAL_I_WITH_OGONEK_ = 0x12e;
+    /**
+    * LATIN CAPITAL LETTER I WITH TILDE
+    */
+    private static final int LATIN_CAPITAL_I_WITH_TILDE_ = 0x128;
+    /**
+    * LATIN CAPITAL LETTER I WITH GRAVE
+    */
+    private static final int LATIN_CAPITAL_I_WITH_GRAVE_ = 0xcc;
+    /**
+    * LATIN CAPITAL LETTER I WITH ACUTE
+    */
+    private static final int LATIN_CAPITAL_I_WITH_ACUTE_ = 0xcd;
+    /**
+    * COMBINING GRAVE ACCENT
+    */
+    private static final int COMBINING_GRAVE_ACCENT_ = 0x300;
+    /**
+    * COMBINING ACUTE ACCENT
+    */
+    private static final int COMBINING_ACUTE_ACCENT_ = 0x301;
+    /**
+    * COMBINING TILDE
+    */
+    private static final int COMBINING_TILDE_ = 0x303;
+    /**
+    * Greek capital letter sigma
+    */
+    private static final char GREEK_CAPITAL_LETTER_SIGMA_ = 0x3a3;
+    /**
+    * Greek small letter sigma
+    */
+    private static final char GREEK_SMALL_LETTER_SIGMA_ = 0x3c3;
+    /**
+    * Greek small letter rho
+    */
+    private static final char GREEK_SMALL_LETTER_RHO_ = 0x3c2;
+    /**
+    * Hyphens
+    */
+    private static final int HYPHEN_      = 0x2010;
+    private static final int SOFT_HYPHEN_ = 0xAD;
+    /**
+    * To get the last character out from a data type
+    */
+    private static final int LAST_CHAR_MASK_ = 0xFFFF;
+    /**
+    * To get the last byte out from a data type
+    */
+    private static final int LAST_BYTE_MASK_ = 0xFF;
+    /**
+    * Shift 16 bits
+    */
+    private static final int SHIFT_16_ = 16;
+   
+   	// additional properties ----------------------------------------------
+   	 
+   	/**
+   	 * Additional properties used in internal trie data
+   	 */
+    private static final int WHITE_SPACE_PROPERTY_ = 0;
+    private static final int BIDI_CONTROL_PROPERTY_ = 1;
+    private static final int JOIN_CONTROL_PROPERTY_ = 2;
+    private static final int DASH_PROPERTY_ = 3;
+    private static final int HYPHEN_PROPERTY_ = 4;
+    private static final int QUOTATION_MARK_PROPERTY_ = 5;
+    private static final int TERMINAL_PUNCTUATION_PROPERTY_ = 6;
+    private static final int OTHER_MATH_PROPERTY_ = 7;
+    private static final int HEX_DIGIT_PROPERTY_ = 8;
+    private static final int ASCII_HEX_DIGIT_PROPERTY_ = 9;
+    private static final int OTHER_ALPHABETIC_PROPERTY_ = 10;
+    private static final int IDEOGRAPHIC_PROPERTY_ = 11;
+    private static final int DIACRITIC_PROPERTY_ = 12;
+    private static final int EXTENDER_PROPERTY_ = 13;
+    private static final int OTHER_LOWERCASE_PROPERTY_ = 14;
+    private static final int OTHER_UPPERCASE_PROPERTY_ = 15;
+    private static final int NONCHARACTER_CODE_POINT_PROPERTY_ = 16;
+    private static final int OTHER_GRAPHEME_EXTEND_PROPERTY_ = 17;
+    private static final int GRAPHEME_LINK_PROPERTY_ = 18;
+    private static final int IDS_BINARY_OPERATOR_PROPERTY_ = 19;
+    private static final int IDS_TRINARY_OPERATOR_PROPERTY_ = 20;
+    private static final int RADICAL_PROPERTY_ = 21;
+    private static final int UNIFIED_IDEOGRAPH_PROPERTY_ = 22;
+    private static final int OTHER_DEFAULT_IGNORABLE_CODE_POINT_PROPERTY_ = 23;
+    private static final int DEPRECATED_PROPERTY_ = 24;
+    private static final int SOFT_DOTTED_PROPERTY_ = 25;
+    private static final int LOGICAL_ORDER_EXCEPTION_PROPERTY_ = 26;
+    private static final int XID_START_PROPERTY_ = 27;
+    private static final int XID_CONTINUE_PROPERTY_ = 28;
+    private static final int BINARY_1_TOP_PROPERTY_ = 29;
+    
+    /**
+     * First nibble shift
+     */
+    private static final int FIRST_NIBBLE_SHIFT_ = 0x4;
+    /**
+     * Second nibble mask
+     */
+    private static final int LAST_NIBBLE_MASK_ = 0xF;
+    /**
+     * Age value shift
+     */
+    private static final int AGE_SHIFT_ = 24;
+    
+    // private constructors --------------------------------------------------
+    
+    /**
+    * Constructor
+    * @exception thrown when data reading fails or data corrupted
+    */
+    private UCharacterProperty() throws IOException
+    {
+        // jar access
+        InputStream i = getClass().getResourceAsStream(DATA_FILE_NAME_);
+        BufferedInputStream b = new BufferedInputStream(i, 
+                                                        DATA_BUFFER_SIZE_);
+        UCharacterPropertyReader reader = new UCharacterPropertyReader(b);
+        reader.read(this);
+        b.close();
+        i.close();
+    }
+                                     
+	// private methods -------------------------------------------------------
+	
+    /**
+    * <p>Returns a value indicating a code point's Unicode category.</p>
+    * <p>This method does not check for the codepoint validity</p>
+    * @param ch code point whose type is to be determined
+    * @return category which is a value of UCharacterCategory
+    */
+    private int getType(int ch)
+    {
+        return getPropType(getProperty(ch));
+    }
+    
+    /**
+     * Unicode 3.2 UAX 21 "Case Mappings" defines the conditions as follows:
+     *
+     * Final_Sigma
+     *   C is preceded by a sequence consisting of
+     *     a cased letter and a case-ignorable sequence,
+     *   and C is not followed by a sequence consisting of
+     *     an ignorable sequence and then a cased letter.
+     *
+     * More_Above
+     *   C is followed by one or more characters of combining class 230 (ABOVE)
+     *   in the combining character sequence.
+     *
+     * After_Soft_Dotted
+     *   The last preceding character with combining class of zero before C
+     *   was Soft_Dotted,
+     *   and there is no intervening combining character class 230 (ABOVE).
+     *
+     * Before_Dot
+     *   C is followed by combining dot above (U+0307).
+     *   Any sequence of characters with a combining class that is neither 0 
+     *   nor 230 may intervene between the current character and the combining 
+     *   dot above.
+     *
+     * Helper definitions in Unicode 3.2 UAX 21:
+     *
+     * D1. A character C is defined to be cased
+     *     if it meets any of the following criteria:
+     *
+     *   - The general category of C is Titlecase Letter (Lt)
+     *   - In [CoreProps], C has one of the properties Uppercase, or Lowercase
+     *   - Given D = NFD(C), then it is not the case that:
+     *     D = UCD_lower(D) = UCD_upper(D) = UCD_title(D)
+     *     (This third criterium does not add any characters to the list
+     *      for Unicode 3.2. Ignored.)
+     *
+     * D2. A character C is defined to be case-ignorable
+     *     if it meets either of the following criteria:
+     *
+     *   - The general category of C is
+     *     Nonspacing Mark (Mn), or Enclosing Mark (Me), or Format Control (Cf), or
+     *     Letter Modifier (Lm), or Symbol Modifier (Sk)
+     *   - C is one of the following characters 
+     *     U+0027 APOSTROPHE
+     *     U+00AD SOFT HYPHEN (SHY)
+     *     U+2019 RIGHT SINGLE QUOTATION MARK
+     *            (the preferred character for apostrophe)
+     *
+     * D3. A case-ignorable sequence is a sequence of
+     *     zero or more case-ignorable characters.
+     */
+
+    /**
+    * Determines if a string at offset is preceded by any soft dotted character
+    * with no intervening character with combining class = 230
+    * @param uchariter text iterator to be determined
+    * @param offset offset in string to check
+    * @return true if some characters preceding the offset index belongs to
+    *         the set of soft dotted characters with no intervening character
+    * @see SpecialCasing.txt
+    */
+    private boolean isPrecededBySoftDotted(
+                                UnicodeCharacterIterator uchariter, int offset) 
+    {
+    	uchariter.setIndex(offset);
+    	
+    	int ch = uchariter.previousCodePoint();
+    	
+        while (ch != UnicodeCharacterIterator.DONE_CODEPOINT) {
+            if (isSoftDotted(ch)) {
+                return true; // preceded by TYPE_i
+            }
+    
+            int cc = NormalizerImpl.getCombiningClass(ch);
+            if (cc == 0 || cc == COMBINING_MARK_ABOVE_CLASS_) {
+                // preceded by different base character not TYPE_i), or 
+                // intervening cc == 230
+                return false; 
+            }
+            ch = uchariter.previousCodePoint();
+        }
+
+        return false; // not preceded by TYPE_i
+    }
+    
+    /** 
+    * Determines if codepoint at offset is not followed by a sequence 
+    * consisting of an ignorable sequence and then a cased letter 
+    * {Ll, Lu, Lt}.
+    * @param uchariter String iterator to determine
+    * @param offset codepoint offset in string to check
+    * @return false if any character after offset in src is a cased letter
+    * @see SpecialCasing.txt
+    */
+    private boolean isCFINAL(UnicodeCharacterIterator uchariter, int offset) 
+    {
+    	// iterator should have been determined to be not null by caller
+        uchariter.setIndex(offset);
+    	uchariter.nextCodePoint(); // rid of current codepoint
+        int ch = uchariter.nextCodePoint(); // start checking
+    	
+    	while (ch != UnicodeCharacterIterator.DONE_CODEPOINT) {
+            int cat = getType(ch);
+            if (isCased(ch, cat)) {
+                return false; // followed by cased letter
+            }
+            if (!isCaseIgnorable(ch, cat)) {
+                return true; // not ignorable
+            }
+            ch = uchariter.nextCodePoint();
+        }
+
+        return true;
+    }
+
+    /**
+    * Determines if codepoint at offset is not preceded by a sequence 
+    * consisting of a cased letter {Ll, Lu, Lt} and an ignorable sequence. 
+    * @param uchariter string iterator to determine
+    * @param offset codepoint offset in string to check
+    * @return true if any character before index in src is a cased letter
+    * @see SpecialCasing.txt
+    */
+    private boolean isNotCINITIAL(UnicodeCharacterIterator uchariter, 
+                                         int offset) 
+    {
+    	uchariter.setIndex(offset);
+    	int ch = uchariter.previousCodePoint();
+    	
+        while (ch != UnicodeCharacterIterator.DONE_CODEPOINT) {
+            int cat = getType(ch);
+            if (isCased(ch, cat)) {
+                return true; // preceded by cased letter
+            }
+            if (!isCaseIgnorable(ch, cat)) {
+                return false; // not ignorable
+            }
+			ch = uchariter.previousCodePoint();
+        }
+
+        return false; 
+    }
+
+    /** 
+    * Determines if a codepoint at offset in string is followed by one or 
+    * more characters of combining class = 230.
+    * @param uchariter text iterator to be determined
+    * @param offset codepoint offset in string to check
+    * @return true if a string at offset is followed by one or more characters 
+    *         of combining class = 230.
+    * @see SpecialCasing.txt
+    */
+    private static boolean isFollowedByMOREABOVE(UnicodeCharacterIterator uchariter, 
+                                                 int offset) 
+    {
+        uchariter.setIndex(offset);
+        uchariter.nextCodePoint(); // rid of current codepoint
+        int ch = uchariter.nextCodePoint(); // start checking
+        
+        while (ch != UnicodeCharacterIterator.DONE_CODEPOINT) {
+            int cc = NormalizerImpl.getCombiningClass(ch);
+            if (cc == COMBINING_MARK_ABOVE_CLASS_) {
+                return true; // at least one cc==230 following 
+            }
+            if (cc == 0) {
+                return false; // next base character, no more cc==230 following
+            }
+            ch = uchariter.nextCodePoint();
+        }
+
+        return false; // no more cc == 230 following
+    }
+
+    /** 
+    * Determines if a codepoint at offset in string is followed by a dot 
+    * above with no characters of combining class == 230 in between 
+    * @param uchariter text iterator to be determined
+    * @param offset codepoint offset of the character in string to check
+    * @return true if a string at offset is followed by oa dot above 
+    *         with no characters of combining class == 230 in between
+    * @see SpecialCasing.txt
+    */
+    private static boolean isFollowedByDotAbove(UnicodeCharacterIterator uchariter, 
+                                                int offset) 
+    {
+        uchariter.setIndex(offset);
+        uchariter.nextCodePoint(); // rid off current character
+        int ch = uchariter.nextCodePoint(); // start checking
+        
+        while (ch != UnicodeCharacterIterator.DONE_CODEPOINT) {
+            if (ch == COMBINING_DOT_ABOVE_) {
+                return true;
+            }
+            int cc = NormalizerImpl.getCombiningClass(ch);
+            if (cc == 0 || cc == COMBINING_MARK_ABOVE_CLASS_) {
+                return false; // next base character or cc==230 in between
+            }
+            ch = uchariter.nextCodePoint();
+        }
+
+        return false; // no dot above following
+    }
+    
+    /**  
+    * Checks if the case ignorable
+    * @param ch codepoint
+    * @param cat category of the argument codepoint
+    * @return true if ch is case ignorable.
+    */
+    private static boolean isCaseIgnorable(int ch, int cat) 
+    {
+        return cat == UCharacterCategory.NON_SPACING_MARK 
+               || cat == UCharacterCategory.ENCLOSING_MARK 
+               || cat == UCharacterCategory.FORMAT
+               || cat == UCharacterCategory.MODIFIER_LETTER
+               || cat == UCharacterCategory.MODIFIER_SYMBOL
+               || ch == 0x27 || ch == 0xad || ch == 0x2019;
+    }
+
+    /** 
+     * Is this a "cased" character? 
+     * @param ch codepoint
+     * @param cat category of the argument
+     * @return true if ch is a cased character
+     */
+    private boolean isCased(int ch, int cat) 
+    {
+        // Lt + Uppercase + Lowercase = Lt + Lu + Ll 
+        // + Other_Uppercase+Other_Lowercase
+        boolean result = (cat == UCharacterCategory.TITLECASE_LETTER 
+               || cat == UCharacterCategory.UPPERCASE_LETTER
+               || cat == UCharacterCategory.LOWERCASE_LETTER);
+        if (result) {
+            return result;
+        } 
+        int prop = getAdditional(ch, 1);
+        return compareAdditionalType(prop, OTHER_UPPERCASE_PROPERTY_) 
+               || compareAdditionalType(prop, OTHER_LOWERCASE_PROPERTY_);
+    }
+    
+    /** 
+     * Is Soft_Dotted? 
+     * @param ch codepoint
+     * @return true if ch is soft dotted
+     */
+    private boolean isSoftDotted(int ch) {
+        return compareAdditionalType(getAdditional(ch, 1), 
+                                     SOFT_DOTTED_PROPERTY_);
+    }
+    
+    /* Is followed by {case-ignorable}* cased  ? */
+    /**
+    * Getting the correct address for data in the exception value
+    * @param evalue exception value
+    * @param indicator type of data to retrieve
+    * @param address current address to move from
+    * @return the correct address
+    */
+    private int addExceptionOffset(int evalue, int indicator, int address) 
+    { 
+        int result = address;
+        if (indicator >= EXC_GROUP_) {
+        result += FLAGS_OFFSET_[evalue & EXC_GROUP_MASK_]; 
+        evalue >>= EXC_GROUP_; 
+        indicator -= EXC_GROUP_; 
+        }
+        int mask = (1 << indicator) - 1;
+        result += FLAGS_OFFSET_[evalue & mask]; 
+        return result;
+    }
+    
+    /**
+     * Compare additional properties to see if it has argument type 
+     * @param property 32 bit properties
+     * @param type character type
+     * @return true if property has type
+     */
+    private boolean compareAdditionalType(int property, int type) 
+    {
+    	return (property & (1 << type)) != 0;
+    }
+}
diff --git a/src/com/ibm/icu/impl/UCharacterPropertyReader.java b/src/com/ibm/icu/impl/UCharacterPropertyReader.java
new file mode 100644
index 0000000..f35186e
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterPropertyReader.java
@@ -0,0 +1,160 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/UCharacterPropertyReader.java,v $ 
+* $Date: 2002/08/01 19:50:26 $ 
+* $Revision: 1.6 $
+*
+*******************************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import com.ibm.icu.util.VersionInfo;
+
+/**
+* <p>Internal reader class for ICU data file uprops.icu containing 
+* Unicode codepoint data.</p> 
+* <p>This class simply reads uprops.icu, authenticates that it is a valid
+* ICU data file and split its contents up into blocks of data for use in
+* <a href=UCharacterProperty.html>com.ibm.icu.impl.UCharacterProperty</a>.
+* </p> 
+* <p>For more information about the format of uprops.icu refer to
+* <a href=oss.software.ibm.com/icu4j/icu4jhtml/com/ibm/icu/lang/readme.html>
+* ReadMe</a>.<\p>
+* <p>uprops.icu which is in big-endian format is jared together with this 
+* package.</p>
+* @author Syn Wee Quek
+* @since release 2.1, February 1st 2002
+* @draft 2.1
+*/
+
+final class UCharacterPropertyReader
+{
+    // protected constructor ---------------------------------------------
+    
+    /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU uprop.dat file input stream
+    * @exception IOException throw if data file fails authentication 
+    * @draft 2.1
+    */
+    protected UCharacterPropertyReader(InputStream inputStream) 
+                                                        throws IOException
+    {
+        m_unicodeVersion_ = ICUBinary.readHeader(inputStream, DATA_FORMAT_ID_, 
+                                                 DATA_FORMAT_VERSION_);
+        m_dataInputStream_ = new DataInputStream(inputStream);
+    }
+    
+    // protected methods -------------------------------------------------
+      
+    /**
+    * <p>Reads uprops.icu, parse it into blocks of data to be stored in
+    * UCharacterProperty.</P
+    * @param ucharppty UCharacterProperty instance
+    * @exception thrown when data reading fails
+    * @draft 2.1
+    */
+    protected void read(UCharacterProperty ucharppty) throws IOException
+    {
+        // read the indexes
+        int count = INDEX_SIZE_;
+        m_propertyOffset_          = m_dataInputStream_.readInt();
+        count --;
+        m_exceptionOffset_         = m_dataInputStream_.readInt();
+        count --;
+        m_caseOffset_              = m_dataInputStream_.readInt();
+        count --;
+        m_additionalOffset_        = m_dataInputStream_.readInt();
+        count --;
+    	m_additionalVectorsOffset_ = m_dataInputStream_.readInt();
+    	count --;
+    	m_additionalColumnsCount_  = m_dataInputStream_.readInt();
+    	count --;
+        m_reservedOffset_          = m_dataInputStream_.readInt();
+        count --;
+        m_dataInputStream_.skipBytes(count << 2);
+        
+        // read the trie index block
+        // m_props_index_ in terms of ints
+        ucharppty.m_trie_ = new CharTrie(m_dataInputStream_, ucharppty);
+        
+        // reads the 32 bit properties block
+        int size = m_exceptionOffset_ - m_propertyOffset_;
+        ucharppty.m_property_ = new int[size];
+        for (int i = 0; i < size; i ++) {
+            ucharppty.m_property_[i] = m_dataInputStream_.readInt();
+        }
+        
+        // reads the 32 bit exceptions block
+        size = m_caseOffset_ - m_exceptionOffset_;
+        ucharppty.m_exception_ = new int[size];
+        for (int i = 0; i < size; i ++) {
+            ucharppty.m_exception_[i] = m_dataInputStream_.readInt();
+        }
+        
+        // reads the 32 bit case block
+        size = (m_additionalOffset_ - m_caseOffset_) << 1;
+        ucharppty.m_case_ = new char[size];
+        for (int i = 0; i < size; i ++) {
+            ucharppty.m_case_[i] = m_dataInputStream_.readChar();
+        }
+        
+        // reads the additional property block
+        ucharppty.m_additionalTrie_ = new CharTrie(m_dataInputStream_, 
+                                                   ucharppty);
+                                                           
+        // additional properties
+        size = m_reservedOffset_ - m_additionalVectorsOffset_;
+        ucharppty.m_additionalVectors_ = new int[size];
+        for (int i = 0; i < size; i ++) {
+            ucharppty.m_additionalVectors_[i] = m_dataInputStream_.readInt();
+        }
+        
+        m_dataInputStream_.close();
+        ucharppty.m_additionalColumnsCount_ = m_additionalColumnsCount_;
+        ucharppty.m_unicodeVersion_ = VersionInfo.getInstance(
+                         (int)m_unicodeVersion_[0], (int)m_unicodeVersion_[1],
+                         (int)m_unicodeVersion_[2], (int)m_unicodeVersion_[3]);
+    }
+    
+    // private variables -------------------------------------------------
+      
+    /**
+    * Index size
+    */
+    private static final int INDEX_SIZE_ = 16;
+    
+    /**
+    * ICU data file input stream
+    */
+    private DataInputStream m_dataInputStream_;
+      
+    /**
+    * Offset information in the indexes.
+    */
+    private int m_propertyOffset_;
+    private int m_exceptionOffset_;
+    private int m_caseOffset_;
+    private int m_additionalOffset_;
+    private int m_additionalVectorsOffset_;
+    private int m_additionalColumnsCount_;
+    private int m_reservedOffset_;
+    private byte m_unicodeVersion_[];  
+                                      
+    /**
+    * File format version that this class understands.
+    * No guarantees are made if a older version is used
+    */
+    private static final byte DATA_FORMAT_ID_[] = {(byte)0x55, (byte)0x50, 
+                                                    (byte)0x72, (byte)0x6F};
+    private static final byte DATA_FORMAT_VERSION_[] = {(byte)0x3, (byte)0x1, 
+                                             (byte)Trie.INDEX_STAGE_1_SHIFT_, 
+                                             (byte)Trie.INDEX_STAGE_2_SHIFT_};
+}
diff --git a/src/com/ibm/icu/impl/UForwardCharacterIterator.java b/src/com/ibm/icu/impl/UForwardCharacterIterator.java
new file mode 100644
index 0000000..0d28771
--- /dev/null
+++ b/src/com/ibm/icu/impl/UForwardCharacterIterator.java
@@ -0,0 +1,93 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/Attic/UForwardCharacterIterator.java,v $ 
+ * $Date: 2002/06/20 01:18:09 $ 
+ * $Revision: 1.1 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl;
+
+/**
+ * Interface that defines an API for forward-only iteration
+ * on text objects.
+ * This is a minimal interface for iteration without random access
+ * or backwards iteration. It is especially useful for wrapping
+ * streams with converters into an object for collation or
+ * normalization.
+ *
+ * <p>Characters can be accessed in two ways: as code units or as
+ * code points.
+ * Unicode code points are 21-bit integers and are the scalar values
+ * of Unicode characters. ICU uses the type <code>int</code> for them.
+ * Unicode code units are the storage units of a given
+ * Unicode/UCS Transformation Format (a character encoding scheme).
+ * With UTF-16, all code points can be represented with either one
+ * or two code units ("surrogates").
+ * String storage is typically based on code units, while properties
+ * of characters are typically determined using code point values.
+ * Some processes may be designed to work with sequences of code units,
+ * or it may be known that all characters that are important to an
+ * algorithm can be represented with single code units.
+ * Other processes will need to use the code point access functions.</p>
+ *
+ * <p>ForwardCharacterIterator provides next() to access
+ * a code unit and advance an internal position into the text object,
+ * similar to a <code>return text[position++]</code>.<br>
+ * It provides nextCodePoint() to access a code point and advance an internal
+ * position.</p>
+ *
+ * <p>nextCodePoint() assumes that the current position is that of
+ * the beginning of a code point, i.e., of its first code unit.
+ * After nextCodePoint(), this will be true again.
+ * In general, access to code units and code points in the same
+ * iteration loop should not be mixed. In UTF-16, if the current position
+ * is on a second code unit (Low Surrogate), then only that code unit
+ * is returned even by nextCodePoint().</p>
+ *
+ * Usage:
+ * <code> 
+ *  public void function1(UForwardCharacterIterator it) {
+ *     int c;
+ *     while((c=it.next())!=UForwardCharacterIterator.DONE) {
+ *         // use c
+ *      }
+ *  }
+ * </code>
+ * </p>
+ *
+ */
+
+public interface UForwardCharacterIterator {
+      
+    /**
+     * Indicator that we have reached the ends of the UTF16 text.
+     */
+    public static final int DONE = -1;
+    /**
+     * Returns the UTF16 code unit at index, and increments to the next
+     * code unit (post-increment semantics).  If index is out of
+     * range, DONE is returned, and the iterator is reset to the limit
+     * of the text.
+     * @return the next UTF16 code unit, or DONE if the index is at the limit
+     *         of the text.  
+     */
+    public int next();
+
+    /**
+     * Returns the code point at index, and increments to the next code
+     * point (post-increment semantics).  If index does not point to a
+     * valid surrogate pair, the behavior is the same as
+     * <code>next()<code>.  Otherwise the iterator is incremented past
+     * the surrogate pair, and the code point represented by the pair
+     * is returned.
+     * @return the next codepoint in text, or DONE if the index is at
+     *         the limit of the text.  
+     */
+    public int nextCodePoint();
+
+}
diff --git a/src/com/ibm/icu/impl/USerializedSet.java b/src/com/ibm/icu/impl/USerializedSet.java
new file mode 100644
index 0000000..83ffa17
--- /dev/null
+++ b/src/com/ibm/icu/impl/USerializedSet.java
@@ -0,0 +1,226 @@
+/*
+ *******************************************************************************
+ *   Copyright (C) 2002, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/USerializedSet.java,v $ 
+ * $Date: 2002/06/20 01:18:09 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+*/
+
+package com.ibm.icu.impl;
+/**
+ * @version 	1.0
+ * @author     Markus W. Scherer
+ */
+
+/**
+ * Simple class for handling serialized USet/UnicodeSet structures
+ * without object creation. See ICU4C icu/source/common/uset.c.
+ *
+ * @internal
+ */
+public final class USerializedSet {
+	
+    public final boolean getSet(char src[], int srcStart) {
+        // leave most argument checking up to Java exceptions
+        array=null;
+        arrayOffset=bmpLength=length=0;
+
+        length=src[srcStart++];
+        
+        
+        if((length&0x8000) >0) {
+            /* there are supplementary values */
+            length&=0x7fff;
+            if(src.length<(srcStart+1+length)) {
+                length=0;
+               throw new IndexOutOfBoundsException();
+            }
+            bmpLength=src[srcStart++];
+        } else {
+            /* only BMP values */
+            if(src.length<(srcStart+length)) {
+                length=0;
+                throw new IndexOutOfBoundsException();
+            }
+            bmpLength=length;
+        }
+        array = new char[length];
+        System.arraycopy(src,srcStart,array,0,length);
+        //arrayOffset=srcStart;
+        return true;
+    }
+
+    public final  boolean  contains(int c) {
+        if(c<0 || 0x10ffff<c) {
+            return false;
+        }
+
+        if(c<=0xffff) {
+            /* find c in the BMP part */
+            int i, bmpLimit=arrayOffset+bmpLength;
+            for(i=arrayOffset; i<bmpLimit && c>=array[i]; ++i) {}
+            return (((i-arrayOffset)&1)>0);
+        } else {
+            /* find c in the supplementary part */
+            int i, limit=arrayOffset+length;
+            char high=(char)(c>>16), low=(char)c;
+            for(i=arrayOffset+bmpLength;
+                i<limit && (high>array[i] || (high==array[i] && low>=array[i+1]));
+                i+=2) {}
+
+            /* count pairs of 16-bit units even per BMP and check if the number of pairs is odd */
+            return ((i+bmpLength-arrayOffset)&2)!=0;
+        }
+    }
+
+    public final  boolean countRanges() {
+        return ((bmpLength+(length-bmpLength)/2+1)/2)>0;
+    }
+
+    public final  boolean getRange(int rangeIndex, int range[]) {
+        if(rangeIndex<0) {
+            return false;
+        }
+
+		range=new int[2];
+		
+        rangeIndex*=2; /* address start/limit pairs */
+        if(rangeIndex<bmpLength) {
+            range[0]=array[arrayOffset+rangeIndex++];
+            if(rangeIndex<bmpLength) {
+                range[1]=array[arrayOffset+rangeIndex];
+            } else if(rangeIndex<length) {
+                range[1]=(((int)array[arrayOffset+rangeIndex])<<16)|array[arrayOffset+rangeIndex+1];
+            } else {
+                range[1]=0x110000;
+            }
+            return true;
+        } else {
+            rangeIndex-=bmpLength;
+            rangeIndex*=2; /* address pairs of pairs of units */
+            int suppLength=length-bmpLength;
+            if(rangeIndex<suppLength) {
+                int offset=arrayOffset+bmpLength;
+                range[0]=(((int)array[offset+rangeIndex])<<16)|array[offset+rangeIndex+1];
+                rangeIndex+=2;
+                if(rangeIndex<suppLength) {
+                range[1]=(((int)array[offset+rangeIndex])<<16)|array[offset+rangeIndex+1];
+                } else {
+                    range[1]=0x110000;
+                }
+                return true;
+            } else {
+                return false;
+            }
+        }
+    }
+	public final void setSerializedToOne(int c) {
+	    if( 0x10ffff<c) {
+	        return;
+	    }
+
+	    if(c<0xffff) {
+	        bmpLength=length=2;
+	        array[0]=(char)c;
+	        array[1]=(char)(c+1);
+	    } else if(c==0xffff) {
+	        bmpLength=1;
+	        length=3;
+	        array[0]=0xffff;
+	        array[1]=1;
+	        array[2]=0;
+	    } else if(c<0x10ffff) {
+	        bmpLength=0;
+	        length=4;
+	        array[0]=(char)(c>>16);
+	        array[1]=(char)c;
+	        ++c;
+	        array[2]=(char)(c>>16);
+	        array[3]=(char)c;
+	    } else /* c==0x10ffff */ {
+	        bmpLength=0;
+	        length=2;
+	        array[0]=0x10;
+	        array[1]=0xffff;
+	    }
+	}
+	
+	
+	public final boolean getSerializedRange( int rangeIndex,int[] range) {
+	    if( rangeIndex<0) {
+	        return false;
+	    }
+	    if(array==null){
+			array = new char[8];
+		}
+        if(range==null || range.length <2){
+            throw new IllegalArgumentException();
+        }
+        rangeIndex*=2; /* address start/limit pairs */
+	    if(rangeIndex<bmpLength) {
+	        range[0]=array[rangeIndex++];
+	        if(rangeIndex<bmpLength) {
+	            range[1]=array[rangeIndex];
+	        } else if(rangeIndex<length) {
+	            range[1]=(((int)array[rangeIndex])<<16)|array[rangeIndex+1];
+	        } else {
+	            range[1]=0x110000;
+	        }
+            range[1]-=1;
+	        return true;
+	    } else {
+	        rangeIndex-=bmpLength;
+	        rangeIndex*=2; /* address pairs of pairs of units */
+	        length-=bmpLength;
+	        if(rangeIndex<length) {
+	            int offset=arrayOffset+bmpLength;
+	            range[0]=(((int)array[offset+rangeIndex])<<16)|array[offset+rangeIndex+1];
+	            rangeIndex+=2;
+	            if(rangeIndex<length) {
+	                range[1]=(((int)array[offset+rangeIndex])<<16)|array[offset+rangeIndex+1];
+	            } else {
+	                range[1]=0x110000;
+	            }
+                range[1]-=1;
+	            return true;
+	        } else {
+	            return false;
+	        }
+	    }
+	}
+	public final boolean serializedContains(int c) {
+	
+	    if(c>0x10ffff) {
+	        return false;
+	    }
+	    
+	    if(c<=0xffff) {
+	    	int i;
+	        /* find c in the BMP part */
+	        for(i=0; i<bmpLength && (char)c>=array[i]; ++i) {}
+	        return (boolean)((i&1) != 0);
+	    } else {
+	    	int i;
+	        /* find c in the supplementary part */
+	        char high=(char)(c>>16), low=(char)c;
+	        for(i=bmpLength;
+	            i<length && (high>array[i] || (high==array[i] && low>=array[i+1]));
+	            i+=2) {}
+	
+	        /* count pairs of 16-bit units even per BMP and check if the number of pairs is odd */
+	        return (boolean)(((i+bmpLength)&2)!=0);
+	    }
+	}
+	
+	public final int countSerializedRanges() {
+	    return (bmpLength+(length-bmpLength)/2+1)/2;
+	}
+
+    private char array[] = new char[8];
+    private int arrayOffset, bmpLength, length;
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/UnicodeCharacterIterator.java b/src/com/ibm/icu/impl/UnicodeCharacterIterator.java
new file mode 100644
index 0000000..47bfa40
--- /dev/null
+++ b/src/com/ibm/icu/impl/UnicodeCharacterIterator.java
@@ -0,0 +1,338 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/Attic/UnicodeCharacterIterator.java,v $ 
+ * $Date: 2002/08/07 17:55:03 $ 
+ * $Revision: 1.2 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.Replaceable;
+import com.ibm.icu.text.ReplaceableString;
+import com.ibm.icu.text.UTF16;
+import java.text.CharacterIterator;
+
+/**
+ * Internal class that iterates through a com.ibm.text.Replacable text object 
+ * to return either Unicode characters.
+ * @author synwee
+ * @version release 2.1, February 2002
+ */
+public final class UnicodeCharacterIterator implements CharacterIterator
+{
+	// public data members -----------------------------------------------------
+	
+	/**
+	 * Indicator that we have reached the ends of the UTF16 text when returning
+	 * 16 bit character.
+	 */
+	public static final int DONE = 0xFFFF;
+	/**
+	 * Indicator that we have reached the ends of the UTF16 text when returning
+	 * codepoints.
+	 */
+	public static final int DONE_CODEPOINT = -1;
+	
+	// public constructor ------------------------------------------------------
+	
+	/**
+	 * Public constructor.
+	 * By default the iteration range will be from 0 to the end of the text.
+	 * @param replacable text which the iterator will be based on
+	 */
+	public UnicodeCharacterIterator(Replaceable replaceable)
+	{
+		m_replaceable_  = replaceable;
+		m_index_        = 0;
+		m_start_        = 0;
+		m_limit_        = replaceable.length();
+	}
+	
+	/**
+	 * Public constructor
+	 * By default the iteration range will be from 0 to the end of the text.
+	 * @param str text which the iterator will be based on
+	 */
+	public UnicodeCharacterIterator(String str)
+	{
+		m_replaceable_  = new ReplaceableString(str);
+		m_index_        = 0;
+		m_start_        = 0;
+		m_limit_        = m_replaceable_.length();
+	}
+	
+	/**
+     * Constructs an iterator over the given range of the given string.
+     * @param  text  text to be iterated over
+     * @param  start offset of the first character to iterate
+     * @param  limit offset of the character following the last character to
+     * 					iterate
+     */
+    public UnicodeCharacterIterator(String str, int start, int limit) 
+    {
+    	m_replaceable_  = new ReplaceableString(str);
+		m_start_        = start;
+		m_limit_        = limit;
+		m_index_        = m_start_;
+    }   
+    
+    /**
+     * Constructs an iterator over the given range of the given replaceable 
+     * string.
+     * @param  text  text to be iterated over
+     * @param  start offset of the first character to iterate
+     * @param  limit offset of the character following the last character to
+     * 					iterate
+     */
+    public UnicodeCharacterIterator(Replaceable replaceable, int start, int limit) 
+    {
+    	m_replaceable_  = replaceable;
+		m_start_        = start;
+		m_limit_        = limit;
+		m_index_        = m_start_;
+    }   
+	
+	// public methods ----------------------------------------------------------
+	
+	/**
+     * Creates a copy of this iterator.
+     * Cloning will not duplicate a new Replaceable object.
+     * @return copy of this iterator
+     */
+    public Object clone()
+    {
+        try {
+            return super.clone();
+        }
+        catch (CloneNotSupportedException e) {
+            throw new InternalError(
+            "Cloning by the super class java.text.CharacterIterator is not " +
+            "supported");
+        }
+    }
+    
+	/**
+     * Returns the current UTF16 character.
+     * @return current UTF16 character
+     */
+    public char current()
+    {
+        if (m_index_ >= m_start_ && m_index_ < m_limit_) {
+            return m_replaceable_.charAt(m_index_);
+        }
+        return DONE;
+    }
+    
+    /**
+     * Returns the current codepoint
+     * @return current codepoint
+     */
+    public int currentCodePoint()
+    {
+        if (m_index_ >= m_start_ && m_index_ < m_limit_) {
+            return m_replaceable_.char32At(m_index_);
+        }
+        return DONE_CODEPOINT;
+    }
+    
+    /**
+     * Gets the first UTF16 character in text.
+     * @return the first UTF16 in text.
+     */
+    public char first()
+    {
+        m_index_ = m_start_;
+        return current();
+    }
+    
+    /**
+     * Returns the start of the text to iterate.
+     * @return by default this method will return 0, unless a range for 
+     * iteration had been specified during construction.
+     */
+    public int getBeginIndex()
+    {
+        return m_start_;
+    }
+
+    /**
+     * Returns the limit offset of the text to iterate
+     * @return by default this method returns the length of the text, unless a 
+     * range for iteration had been specified during construction.
+     */
+    public int getEndIndex()
+    {
+        return m_limit_;
+    }
+    
+    /**
+     * Gets the current index in text.
+     * @return current index in text.
+     */
+    public int getIndex()
+    {
+        return m_index_;
+    }
+    
+    /**
+     * Gets the last UTF16 iterateable character from the text and shifts the 
+     * index to the end of the text accordingly.
+     * @return the last UTF16 iterateable character
+     */
+    public char last()
+    {
+        if (m_limit_ != m_start_) {
+            m_index_ = m_limit_ - 1;
+            return m_replaceable_.charAt(m_index_);
+        } 
+		m_index_ = m_limit_;
+        return DONE;
+    }
+    
+	/**
+     * Returns next UTF16 character and increments the iterator's index by 1. 
+	 * If the resulting index is greater or equal to the iteration limit, the 
+	 * index is reset to the text iteration limit and a value of DONE_CODEPOINT is 
+	 * returned. 
+	 * @return next UTF16 character in text or DONE if the new index is off the 
+	 *         end of the text iteration limit.
+     */
+    public char next()
+    {
+        if (m_index_ < m_limit_) {
+        	char result = m_replaceable_.charAt(m_index_);
+            m_index_ ++;
+            return result;
+        }
+        return DONE;
+    }
+
+	/**
+	 * Returns next codepoint after current index and increments the iterator's 
+	 * index by a number depending on the returned codepoint. 
+	 * This assumes the text is stored as 16-bit code units
+     * with surrogate pairs intermixed. If the index of a leading or trailing 
+     * code unit of a surrogate pair is given, return the code point after the 
+     * surrogate pair.
+	 * If the resulting index is greater or equal to the text iterateable limit,
+	 * the current index is reset to the text iterateable limit and a value of 
+	 * DONE_CODEPOINT is returned. 
+	 * @return next codepoint in text or DONE_CODEPOINT if the new index is off the 
+	 *         end of the text iterateable limit.
+	 */	
+	public int nextCodePoint()
+	{
+        if (m_index_ < m_limit_) {
+            char ch = m_replaceable_.charAt(m_index_);
+            m_index_ ++;
+            if (ch >= UTF16.LEAD_SURROGATE_MIN_VALUE &&
+                ch <= UTF16.LEAD_SURROGATE_MAX_VALUE &&
+                m_index_ < m_limit_) {
+                char trail = m_replaceable_.charAt(m_index_);
+                if (trail >= UTF16.TRAIL_SURROGATE_MIN_VALUE &&
+                    trail <= UTF16.TRAIL_SURROGATE_MAX_VALUE) {
+                    m_index_ ++;
+                    return UCharacterProperty.getRawSupplementary(ch, 
+                                                                  trail);
+                }
+            }
+            return ch;
+        }
+        return DONE_CODEPOINT;
+	}
+
+    /**
+     * Returns previous UTF16 character and decrements the iterator's index by 
+     * 1. 
+	 * If the resulting index is less than the text iterateable limit, the 
+	 * index is reset to the start of the text iteration and a value of 
+	 * DONE_CODEPOINT is returned. 
+	 * @return next UTF16 character in text or DONE if the new index is off the 
+	 *         start of the text iteration range.
+     */
+    public char previous()
+    {
+        if (m_index_ > m_start_) {
+            m_index_ --;
+            return m_replaceable_.charAt(m_index_);
+        }
+        return DONE;
+    }
+    
+    /**
+     * Returns previous codepoint before current index and decrements the 
+     * iterator's index by a number depending on the returned codepoint. 
+	 * This assumes the text is stored as 16-bit code units
+     * with surrogate pairs intermixed. If the index of a leading or trailing 
+     * code unit of a surrogate pair is given, return the code point before the 
+     * surrogate pair.
+	 * If the resulting index is less than the text iterateable range, the 
+	 * current index is reset to the start of the range and a value of 
+	 * DONE_CODEPOINT is returned. 
+	 * @return previous codepoint in text or DONE_CODEPOINT if the new index is 
+	 *         off the start of the text iteration range.
+     */
+    public int previousCodePoint()
+    {
+        if (m_index_ > m_start_) {
+            m_index_ --;
+            char ch = m_replaceable_.charAt(m_index_);
+            if (ch >= UTF16.TRAIL_SURROGATE_MIN_VALUE &&
+                ch <= UTF16.TRAIL_SURROGATE_MAX_VALUE &&
+                m_index_ > m_start_) {
+                m_index_ --;
+                char lead = m_replaceable_.charAt(m_index_);
+                if (lead >= UTF16.LEAD_SURROGATE_MIN_VALUE &&
+                    lead <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
+                    return UCharacterProperty.getRawSupplementary(lead,ch);
+                }
+            }
+            return ch;
+        }
+        return DONE_CODEPOINT;
+    }
+
+	/**
+	 * <p>Sets the index to the specified index in the text and returns that 
+	 * single UTF16 character at index. 
+	 * This assumes the text is stored as 16-bit code units.</p>
+	 * @param index the index within the text. 
+	 * @exception IllegalArgumentException is thrown if an invalid index is 
+	 *            supplied. i.e. index is out of bounds.
+	 * @return the character at the specified index or DONE if the specified 
+	 *         index is equal to the limit of the text iteration range.
+	 */
+	public char setIndex(int index)
+	{
+		if (index < m_start_ || index > m_limit_) {
+			throw new IllegalArgumentException("Index index out of bounds");
+		}
+		m_index_ = index;
+		return current();
+	}
+	
+	// private data members ----------------------------------------------------
+	
+	/**
+	 * Replacable object
+	 */
+	private Replaceable m_replaceable_;
+	/**
+	 * Current index
+	 */
+	private int m_index_;
+	/**
+	 * Start offset of iterateable range, by default this is 0
+	 */
+	private int m_start_;
+	/**
+	 * Limit offset of iterateable range, by default this is the length of the
+	 * string
+	 */
+	private int m_limit_;
+}
diff --git a/src/com/ibm/icu/impl/Utility.java b/src/com/ibm/icu/impl/Utility.java
new file mode 100755
index 0000000..6c23d13
--- /dev/null
+++ b/src/com/ibm/icu/impl/Utility.java
@@ -0,0 +1,1559 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/Utility.java,v $
+ * $Date: 2002/07/26 21:17:42 $
+ * $Revision: 1.30 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.UCharacterProperty;
+
+public final class Utility {
+
+    private static final char APOSTROPHE = '\'';
+    private static final char BACKSLASH  = '\\';
+    
+    /**
+     * Convenience utility to compare two Object[]s.
+     * Ought to be in System
+     */
+    public final static boolean arrayEquals(Object[] source, Object target) {
+        if (source == null) return (target == null);
+        if (!(target instanceof Object[])) return false;
+        Object[] targ = (Object[]) target;
+        return (source.length == targ.length
+                && arrayRegionMatches(source, 0, targ, 0, source.length));
+    }
+
+    /**
+     * Convenience utility to compare two int[]s
+     * Ought to be in System
+     */
+    public final static boolean arrayEquals(int[] source, Object target) {
+        if (source == null) return (target == null);
+        if (!(target instanceof int[])) return false;
+        int[] targ = (int[]) target;
+        return (source.length == targ.length
+                && arrayRegionMatches(source, 0, targ, 0, source.length));
+    }
+
+    /**
+     * Convenience utility to compare two double[]s
+     * Ought to be in System
+     */
+    public final static boolean arrayEquals(double[] source, Object target) {
+        if (source == null) return (target == null);
+        if (!(target instanceof double[])) return false;
+        double[] targ = (double[]) target;
+        return (source.length == targ.length
+                && arrayRegionMatches(source, 0, targ, 0, source.length));
+    }
+
+    /**
+     * Convenience utility to compare two Object[]s
+     * Ought to be in System
+     */
+    public final static boolean arrayEquals(Object source, Object target) {
+        if (source == null) return (target == null);
+        // for some reason, the correct arrayEquals is not being called
+        // so do it by hand for now.
+        if (source instanceof Object[])
+            return(arrayEquals((Object[]) source,target));
+        if (source instanceof int[])
+            return(arrayEquals((int[]) source,target));
+        if (source instanceof double[])
+            return(arrayEquals((int[]) source,target));
+        return source.equals(target);
+    }
+
+    /**
+     * Convenience utility to compare two Object[]s
+     * Ought to be in System.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     */
+    public final static boolean arrayRegionMatches(Object[] source, int sourceStart,
+                                            Object[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (!arrayEquals(source[i],target[i + delta]))
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Convenience utility to compare two Object[]s
+     * Ought to be in System.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     */
+    public final static boolean arrayRegionMatches(char[] source, int sourceStart,
+                                            char[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i]!=target[i + delta])
+            return false;
+        }
+        return true;
+    }
+    
+    /**
+     * Convenience utility to compare two int[]s.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     * Ought to be in System
+     */
+    public final static boolean arrayRegionMatches(int[] source, int sourceStart,
+                                            int[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Convenience utility to compare two arrays of doubles.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     * Ought to be in System
+     */
+    public final static boolean arrayRegionMatches(double[] source, int sourceStart,
+                                            double[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Convenience utility. Does null checks on objects, then calls equals.
+     */
+    public final static boolean objectEquals(Object source, Object target) {
+    if (source == null)
+            return (target == null);
+    else
+            return source.equals(target);
+    }
+
+    /**
+     * The ESCAPE character is used during run-length encoding.  It signals
+     * a run of identical chars.
+     */
+    private static final char ESCAPE = '\uA5A5';
+
+    /**
+     * The ESCAPE_BYTE character is used during run-length encoding.  It signals
+     * a run of identical bytes.
+     */
+    static final byte ESCAPE_BYTE = (byte)0xA5;
+
+    /**
+     * Construct a string representing an int array.  Use run-length encoding.
+     * A character represents itself, unless it is the ESCAPE character.  Then
+     * the following notations are possible:
+     *   ESCAPE ESCAPE   ESCAPE literal
+     *   ESCAPE n c      n instances of character c
+     * Since an encoded run occupies 3 characters, we only encode runs of 4 or
+     * more characters.  Thus we have n > 0 and n != ESCAPE and n <= 0xFFFF.
+     * If we encounter a run where n == ESCAPE, we represent this as:
+     *   c ESCAPE n-1 c
+     * The ESCAPE value is chosen so as not to collide with commonly
+     * seen values.
+     */
+    static public final String arrayToRLEString(int[] a) {
+        StringBuffer buffer = new StringBuffer();
+
+        appendInt(buffer, a.length);
+        int runValue = a[0];
+        int runLength = 1;
+        for (int i=1; i<a.length; ++i) {
+            int s = a[i];
+            if (s == runValue && runLength < 0xFFFF) {
+                ++runLength;
+            } else {
+                encodeRun(buffer, runValue, runLength);
+                runValue = s;
+                runLength = 1;
+            }
+        }
+        encodeRun(buffer, runValue, runLength);
+        return buffer.toString();
+    }
+
+    /**
+     * Construct a string representing a short array.  Use run-length encoding.
+     * A character represents itself, unless it is the ESCAPE character.  Then
+     * the following notations are possible:
+     *   ESCAPE ESCAPE   ESCAPE literal
+     *   ESCAPE n c      n instances of character c
+     * Since an encoded run occupies 3 characters, we only encode runs of 4 or
+     * more characters.  Thus we have n > 0 and n != ESCAPE and n <= 0xFFFF.
+     * If we encounter a run where n == ESCAPE, we represent this as:
+     *   c ESCAPE n-1 c
+     * The ESCAPE value is chosen so as not to collide with commonly
+     * seen values.
+     */
+    static public final String arrayToRLEString(short[] a) {
+        StringBuffer buffer = new StringBuffer();
+        // for (int i=0; i<a.length; ++i) buffer.append((char) a[i]);
+        buffer.append((char) (a.length >> 16));
+        buffer.append((char) a.length);
+        short runValue = a[0];
+        int runLength = 1;
+        for (int i=1; i<a.length; ++i) {
+            short s = a[i];
+            if (s == runValue && runLength < 0xFFFF) ++runLength;
+            else {
+            encodeRun(buffer, runValue, runLength);
+            runValue = s;
+            runLength = 1;
+            }
+        }
+        encodeRun(buffer, runValue, runLength);
+        return buffer.toString();
+    }
+
+    /**
+     * Construct a string representing a char array.  Use run-length encoding.
+     * A character represents itself, unless it is the ESCAPE character.  Then
+     * the following notations are possible:
+     *   ESCAPE ESCAPE   ESCAPE literal
+     *   ESCAPE n c      n instances of character c
+     * Since an encoded run occupies 3 characters, we only encode runs of 4 or
+     * more characters.  Thus we have n > 0 and n != ESCAPE and n <= 0xFFFF.
+     * If we encounter a run where n == ESCAPE, we represent this as:
+     *   c ESCAPE n-1 c
+     * The ESCAPE value is chosen so as not to collide with commonly
+     * seen values.
+     */
+    static public final String arrayToRLEString(char[] a) {
+        StringBuffer buffer = new StringBuffer();
+        buffer.append((char) (a.length >> 16));
+        buffer.append((char) a.length);
+        char runValue = a[0];
+        int runLength = 1;
+        for (int i=1; i<a.length; ++i) {
+            char s = a[i];
+            if (s == runValue && runLength < 0xFFFF) ++runLength;
+            else {
+            encodeRun(buffer, (short)runValue, runLength);
+            runValue = s;
+            runLength = 1;
+            }
+        }
+        encodeRun(buffer, (short)runValue, runLength);
+        return buffer.toString();
+    }
+
+    /**
+     * Construct a string representing a byte array.  Use run-length encoding.
+     * Two bytes are packed into a single char, with a single extra zero byte at
+     * the end if needed.  A byte represents itself, unless it is the
+     * ESCAPE_BYTE.  Then the following notations are possible:
+     *   ESCAPE_BYTE ESCAPE_BYTE   ESCAPE_BYTE literal
+     *   ESCAPE_BYTE n b           n instances of byte b
+     * Since an encoded run occupies 3 bytes, we only encode runs of 4 or
+     * more bytes.  Thus we have n > 0 and n != ESCAPE_BYTE and n <= 0xFF.
+     * If we encounter a run where n == ESCAPE_BYTE, we represent this as:
+     *   b ESCAPE_BYTE n-1 b
+     * The ESCAPE_BYTE value is chosen so as not to collide with commonly
+     * seen values.
+     */
+    static public final String arrayToRLEString(byte[] a) {
+        StringBuffer buffer = new StringBuffer();
+        buffer.append((char) (a.length >> 16));
+        buffer.append((char) a.length);
+        byte runValue = a[0];
+        int runLength = 1;
+        byte[] state = new byte[2];
+        for (int i=1; i<a.length; ++i) {
+            byte b = a[i];
+            if (b == runValue && runLength < 0xFF) ++runLength;
+            else {
+                encodeRun(buffer, runValue, runLength, state);
+                runValue = b;
+                runLength = 1;
+            }
+        }
+        encodeRun(buffer, runValue, runLength, state);
+
+        // We must save the final byte, if there is one, by padding
+        // an extra zero.
+        if (state[0] != 0) appendEncodedByte(buffer, (byte)0, state);
+
+        return buffer.toString();
+    }
+
+    /**
+     * Encode a run, possibly a degenerate run (of < 4 values).
+     * @param length The length of the run; must be > 0 && <= 0xFFFF.
+     */
+    private static final void encodeRun(StringBuffer buffer, int value, int length) {
+        if (length < 4) {
+            for (int j=0; j<length; ++j) {
+                if (value == ESCAPE) {
+                    appendInt(buffer, value);
+                }
+                appendInt(buffer, value);
+            }
+        }
+        else {
+            if (length == (int) ESCAPE) {
+                if (value == (int) ESCAPE) {
+                    appendInt(buffer, ESCAPE);
+                }
+                appendInt(buffer, value);
+                --length;
+            }
+            appendInt(buffer, ESCAPE);
+            appendInt(buffer, length);
+            appendInt(buffer, value); // Don't need to escape this value
+        }
+    }
+    private static final void appendInt(StringBuffer buffer, int value) {
+        buffer.append((char)(value >>> 16));
+        buffer.append((char)(value & 0xFFFF));
+    }
+
+
+    /**
+     * Encode a run, possibly a degenerate run (of < 4 values).
+     * @param length The length of the run; must be > 0 && <= 0xFFFF.
+     */
+    private static final void encodeRun(StringBuffer buffer, short value, int length) {
+        if (length < 4) {
+            for (int j=0; j<length; ++j) {
+                if (value == (int) ESCAPE) buffer.append(ESCAPE);
+                buffer.append((char) value);
+            }
+        }
+        else {
+            if (length == (int) ESCAPE) {
+                if (value == (int) ESCAPE) buffer.append(ESCAPE);
+                buffer.append((char) value);
+                --length;
+            }
+            buffer.append(ESCAPE);
+            buffer.append((char) length);
+            buffer.append((char) value); // Don't need to escape this value
+        }
+    }
+
+    /**
+     * Encode a run, possibly a degenerate run (of < 4 values).
+     * @param length The length of the run; must be > 0 && <= 0xFF.
+     */
+    private static final void encodeRun(StringBuffer buffer, byte value, int length,
+                    byte[] state) {
+        if (length < 4) {
+            for (int j=0; j<length; ++j) {
+                if (value == ESCAPE_BYTE) appendEncodedByte(buffer, ESCAPE_BYTE, state);
+                appendEncodedByte(buffer, value, state);
+            }
+        }
+        else {
+            if (length == ESCAPE_BYTE) {
+            if (value == ESCAPE_BYTE) appendEncodedByte(buffer, ESCAPE_BYTE, state);
+            appendEncodedByte(buffer, value, state);
+            --length;
+            }
+            appendEncodedByte(buffer, ESCAPE_BYTE, state);
+            appendEncodedByte(buffer, (byte)length, state);
+            appendEncodedByte(buffer, value, state); // Don't need to escape this value
+        }
+    }
+
+    /**
+     * Append a byte to the given StringBuffer, packing two bytes into each
+     * character.  The state parameter maintains intermediary data between
+     * calls.
+     * @param state A two-element array, with state[0] == 0 if this is the
+     * first byte of a pair, or state[0] != 0 if this is the second byte
+     * of a pair, in which case state[1] is the first byte.
+     */
+    private static final void appendEncodedByte(StringBuffer buffer, byte value,
+                        byte[] state) {
+        if (state[0] != 0) {
+            char c = (char) ((state[1] << 8) | (((int) value) & 0xFF));
+            buffer.append(c);
+            state[0] = 0;
+        }
+        else {
+            state[0] = 1;
+            state[1] = value;
+        }
+    }
+
+    /**
+     * Construct an array of ints from a run-length encoded string.
+     */
+    static public final int[] RLEStringToIntArray(String s) {
+        int length = getInt(s, 0);
+        int[] array = new int[length];
+        int ai = 0, i = 1;
+
+        int maxI = s.length() / 2;
+        while (ai < length && i < maxI) {
+            int c = getInt(s, i++);
+
+            if (c == ESCAPE) {
+                c = getInt(s, i++);
+                if (c == ESCAPE) {
+                    array[ai++] = c;
+                } else {
+                    int runLength = c;
+                    int runValue = getInt(s, i++);
+                    for (int j=0; j<runLength; ++j) {
+                        array[ai++] = runValue;
+                    }
+                }
+            }
+            else {
+                array[ai++] = c;
+            }
+        }
+
+        if (ai != length || i != maxI) {
+            throw new InternalError("Bad run-length encoded int array");
+        }
+
+        return array;
+    }
+    static final int getInt(String s, int i) {
+        return (((int) s.charAt(2*i)) << 16) | (int) s.charAt(2*i+1);
+    }
+
+
+    /**
+     * Construct an array of shorts from a run-length encoded string.
+     */
+    static public final short[] RLEStringToShortArray(String s) {
+        int length = (((int) s.charAt(0)) << 16) | ((int) s.charAt(1));
+        short[] array = new short[length];
+        int ai = 0;
+        for (int i=2; i<s.length(); ++i) {
+            char c = s.charAt(i);
+            if (c == ESCAPE) {
+                c = s.charAt(++i);
+                if (c == ESCAPE) {
+                    array[ai++] = (short) c;
+                } else {
+                    int runLength = (int) c;
+                    short runValue = (short) s.charAt(++i);
+                    for (int j=0; j<runLength; ++j) array[ai++] = runValue;
+                }
+            }
+            else {
+                array[ai++] = (short) c;
+            }
+        }
+
+        if (ai != length)
+            throw new InternalError("Bad run-length encoded short array");
+
+        return array;
+    }
+
+    /**
+     * Construct an array of shorts from a run-length encoded string.
+     */
+    static public final char[] RLEStringToCharArray(String s) {
+        int length = (((int) s.charAt(0)) << 16) | ((int) s.charAt(1));
+        char[] array = new char[length];
+        int ai = 0;
+        for (int i=2; i<s.length(); ++i) {
+            char c = s.charAt(i);
+            if (c == ESCAPE) {
+                c = s.charAt(++i);
+                if (c == ESCAPE) {
+                    array[ai++] = c;
+                } else {
+                    int runLength = (int) c;
+                    char runValue = s.charAt(++i);
+                    for (int j=0; j<runLength; ++j) array[ai++] = runValue;
+                }
+            }
+            else {
+                array[ai++] = c;
+            }
+        }
+
+        if (ai != length)
+            throw new InternalError("Bad run-length encoded short array");
+
+        return array;
+    }
+
+    /**
+     * Construct an array of bytes from a run-length encoded string.
+     */
+    static public final byte[] RLEStringToByteArray(String s) {
+        int length = (((int) s.charAt(0)) << 16) | ((int) s.charAt(1));
+        byte[] array = new byte[length];
+        boolean nextChar = true;
+        char c = 0;
+        int node = 0;
+        int runLength = 0;
+        int i = 2;
+        for (int ai=0; ai<length; ) {
+            // This part of the loop places the next byte into the local
+            // variable 'b' each time through the loop.  It keeps the
+            // current character in 'c' and uses the boolean 'nextChar'
+            // to see if we've taken both bytes out of 'c' yet.
+            byte b;
+            if (nextChar) {
+                c = s.charAt(i++);
+                b = (byte) (c >> 8);
+                nextChar = false;
+            }
+            else {
+                b = (byte) (c & 0xFF);
+                nextChar = true;
+            }
+
+            // This part of the loop is a tiny state machine which handles
+            // the parsing of the run-length encoding.  This would be simpler
+            // if we could look ahead, but we can't, so we use 'node' to
+            // move between three nodes in the state machine.
+            switch (node) {
+            case 0:
+                // Normal idle node
+                if (b == ESCAPE_BYTE) {
+                    node = 1;
+                }
+                else {
+                    array[ai++] = b;
+                }
+                break;
+            case 1:
+                // We have seen one ESCAPE_BYTE; we expect either a second
+                // one, or a run length and value.
+                if (b == ESCAPE_BYTE) {
+                    array[ai++] = ESCAPE_BYTE;
+                    node = 0;
+                }
+                else {
+                    runLength = b;
+                    // Interpret signed byte as unsigned
+                    if (runLength < 0) runLength += 0x100;
+                    node = 2;
+                }
+                break;
+            case 2:
+                // We have seen an ESCAPE_BYTE and length byte.  We interpret
+                // the next byte as the value to be repeated.
+                for (int j=0; j<runLength; ++j) array[ai++] = b;
+                node = 0;
+                break;
+            }
+        }
+
+        if (node != 0)
+            throw new InternalError("Bad run-length encoded byte array");
+
+        if (i != s.length())
+            throw new InternalError("Excess data in RLE byte array string");
+
+        return array;
+    }
+
+    static public String LINE_SEPARATOR = System.getProperty("line.separator");
+
+    /**
+     * Format a String for representation in a source file.  This includes
+     * breaking it into lines and escaping characters using octal notation
+     * when necessary (control characters and double quotes).
+     */
+    static public final String formatForSource(String s) {
+        StringBuffer buffer = new StringBuffer();
+        for (int i=0; i<s.length();) {
+            if (i > 0) buffer.append('+').append(LINE_SEPARATOR);
+            buffer.append("        \"");
+            int count = 11;
+            while (i<s.length() && count<80) {
+            char c = s.charAt(i++);
+            if (c < '\u0020' || c == '"' || c == '\\') {
+                // Represent control characters, backslash and double quote
+                // using octal notation; otherwise the string we form
+                // won't compile, since Unicode escape sequences are
+                // processed before tokenization.
+                buffer.append('\\');
+                buffer.append(HEX_DIGIT[(c & 0700) >> 6]); // HEX_DIGIT works for octal
+                buffer.append(HEX_DIGIT[(c & 0070) >> 3]);
+                buffer.append(HEX_DIGIT[(c & 0007)]);
+                count += 4;
+            }
+            else if (c <= '\u007E') {
+                buffer.append(c);
+                count += 1;
+            }
+            else {
+                buffer.append("\\u");
+                buffer.append(HEX_DIGIT[(c & 0xF000) >> 12]);
+                buffer.append(HEX_DIGIT[(c & 0x0F00) >> 8]);
+                buffer.append(HEX_DIGIT[(c & 0x00F0) >> 4]);
+                buffer.append(HEX_DIGIT[(c & 0x000F)]);
+                count += 6;
+            }
+            }
+            buffer.append('"');
+        }
+        return buffer.toString();
+    }
+
+    static final char[] HEX_DIGIT = {'0','1','2','3','4','5','6','7',
+                     '8','9','A','B','C','D','E','F'};
+
+
+    /**
+     * Convert characters outside the range U+0020 to U+007F to
+     * Unicode escapes, and convert backslash to a double backslash.
+     */
+    public static final String escape(String s) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<s.length(); ) {
+            int c = UTF16.charAt(s, i);
+            i += UTF16.getCharCount(c);
+            if (c >= ' ' && c <= 0x007F) {
+                if (c == '\\') {
+                    buf.append("\\\\"); // That is, "\\"
+                } else {
+                    buf.append((char)c);
+                }
+            } else {
+                boolean four = c <= 0xFFFF;
+                buf.append(four ? "\\u" : "\\U");
+                hex(c, four ? 4 : 8, buf);
+            }
+        }
+        return buf.toString();
+    }
+
+    /* This map must be in ASCENDING ORDER OF THE ESCAPE CODE */
+    static private final char[] UNESCAPE_MAP = {
+        /*"   0x22, 0x22 */
+        /*'   0x27, 0x27 */
+        /*?   0x3F, 0x3F */
+        /*\   0x5C, 0x5C */
+        /*a*/ 0x61, 0x07,
+        /*b*/ 0x62, 0x08,
+        /*f*/ 0x66, 0x0c,
+        /*n*/ 0x6E, 0x0a,
+        /*r*/ 0x72, 0x0d,
+        /*t*/ 0x74, 0x09,
+        /*v*/ 0x76, 0x0b
+    };
+
+    /**
+     * Convert an escape to a 32-bit code point value.  We attempt
+     * to parallel the icu4c unesacpeAt() function.
+     * @param offset16 an array containing offset to the character
+     * <em>after</em> the backslash.  Upon return offset16[0] will
+     * be updated to point after the escape sequence.
+     * @return character value from 0 to 10FFFF, or -1 on error.
+     */
+    public static int unescapeAt(String s, int[] offset16) {
+        int c;
+        int result = 0;
+        int n = 0;
+        int minDig = 0;
+        int maxDig = 0;
+        int bitsPerDigit = 4;
+        int dig;
+        int i;
+
+        /* Check that offset is in range */
+        int offset = offset16[0];
+        int length = s.length();
+        if (offset < 0 || offset >= length) {
+            return -1;
+        }
+
+        /* Fetch first UChar after '\\' */
+        c = UTF16.charAt(s, offset);
+        offset += UTF16.getCharCount(c);
+
+        /* Convert hexadecimal and octal escapes */
+        switch (c) {
+        case 'u':
+            minDig = maxDig = 4;
+            break;
+        case 'U':
+            minDig = maxDig = 8;
+            break;
+        case 'x':
+            minDig = 1;
+            maxDig = 2;
+            break;
+        default:
+            dig = UCharacter.digit(c, 8);
+            if (dig >= 0) {
+                minDig = 1;
+                maxDig = 3;
+                n = 1; /* Already have first octal digit */
+                bitsPerDigit = 3;
+                result = dig;
+            }
+            break;
+        }
+        if (minDig != 0) {
+            while (offset < length && n < maxDig) {
+                // TEMPORARY
+                // TODO: Restore the char32-based code when UCharacter.digit
+                // is working (Bug 66).
+
+                //c = UTF16.charAt(s, offset);
+                //dig = UCharacter.digit(c, (bitsPerDigit == 3) ? 8 : 16);
+                c = s.charAt(offset);
+                dig = Character.digit((char)c, (bitsPerDigit == 3) ? 8 : 16);
+                if (dig < 0) {
+                    break;
+                }
+                result = (result << bitsPerDigit) | dig;
+                //offset += UTF16.getCharCount(c);
+                ++offset;
+                ++n;
+            }
+            if (n < minDig) {
+                return -1;
+            }
+            offset16[0] = offset;
+            return result;
+        }
+
+        /* Convert C-style escapes in table */
+        for (i=0; i<UNESCAPE_MAP.length; i+=2) {
+            if (c == UNESCAPE_MAP[i]) {
+                offset16[0] = offset;
+                return UNESCAPE_MAP[i+1];
+            } else if (c < UNESCAPE_MAP[i]) {
+                break;
+            }
+        }
+
+        /* If no special forms are recognized, then consider
+         * the backslash to generically escape the next character. */
+        offset16[0] = offset;
+        return c;
+    }
+
+    /**
+     * Convert all escapes in a given string using unescapeAt().
+     * @exception IllegalArgumentException if an invalid escape is
+     * seen.
+     */
+    public static String unescape(String s) {
+        StringBuffer buf = new StringBuffer();
+        int[] pos = new int[1];
+        for (int i=0; i<s.length(); ) {
+            char c = s.charAt(i++);
+            if (c == '\\') {
+                pos[0] = i;
+                int e = unescapeAt(s, pos);
+                if (e < 0) {
+                    throw new IllegalArgumentException("Invalid escape sequence " +
+                                                       s.substring(i-1, Math.min(i+8, s.length())));
+                }
+                UTF16.append(buf, e);
+                i = pos[0];
+            } else {
+                buf.append(c);
+            }
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Convert all escapes in a given string using unescapeAt().
+     * Leave invalid escape sequences unchanged.
+     */
+    public static String unescapeLeniently(String s) {
+        StringBuffer buf = new StringBuffer();
+        int[] pos = new int[1];
+        for (int i=0; i<s.length(); ) {
+            char c = s.charAt(i++);
+            if (c == '\\') {
+                pos[0] = i;
+                int e = unescapeAt(s, pos);
+                if (e < 0) {
+                    buf.append(c);
+                } else {
+                    UTF16.append(buf, e);
+                    i = pos[0];
+                }
+            } else {
+                buf.append(c);
+            }
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Convert a char to 4 hex uppercase digits.  E.g., hex('a') =>
+     * "0041".
+     */
+    public static String hex(char ch) {
+        StringBuffer temp = new StringBuffer();
+        return hex(ch, temp).toString();
+    }
+
+    /**
+     * Convert a string to comma-separated groups of 4 hex uppercase
+     * digits.  E.g., hex('ab') => "0041,0042".
+     */
+    public static String hex(String s) {
+        StringBuffer temp = new StringBuffer();
+        return hex(s, temp).toString();
+    }
+
+    /**
+     * Convert a string to comma-separated groups of 4 hex uppercase
+     * digits.  E.g., hex('ab') => "0041,0042".
+     */
+    public static String hex(StringBuffer s) {
+        return hex(s.toString());
+    }
+
+    /**
+     * Convert a char to 4 hex uppercase digits.  E.g., hex('a') =>
+     * "0041".  Append the output to the given StringBuffer.
+     */
+    public static StringBuffer hex(char ch, StringBuffer output) {
+        return appendNumber(output, ch, 16, 4);
+    }
+
+    /**
+     * Convert a integer to size width hex uppercase digits.
+     * E.g., hex('a', 4, str) => "0041".
+     * Append the output to the given StringBuffer.
+     * If width is too small to fit, nothing will be appended to output.
+     */
+    public static StringBuffer hex(int ch, int width, StringBuffer output) {
+        return appendNumber(output, ch, 16, width);
+    }
+
+    /**
+     * Convert a integer to size width (minimum) hex uppercase digits.
+     * E.g., hex('a', 4, str) => "0041".  If the integer requires more
+     * than width digits, more will be used.
+     */
+    public static String hex(int ch, int width) {
+        StringBuffer buf = new StringBuffer();
+        return appendNumber(buf, ch, 16, width).toString();
+    }
+
+    /**
+     * Convert a string to comma-separated groups of 4 hex uppercase
+     * digits.  E.g., hex('ab') => "0041,0042".  Append the output
+     * to the given StringBuffer.
+     */
+    public static StringBuffer hex(String s, StringBuffer result) {
+        for (int i = 0; i < s.length(); ++i) {
+            if (i != 0) result.append(',');
+            hex(s.charAt(i), result);
+        }
+        return result;
+    }
+
+    /**
+     * Split a string into pieces based on the given divider character
+     * @param s the string to split
+     * @param divider the character on which to split.  Occurrences of
+     * this character are not included in the output
+     * @param output an array to receive the substrings between
+     * instances of divider.  It must be large enough on entry to
+     * accomodate all output.  Adjacent instances of the divider
+     * character will place empty strings into output.  Before
+     * returning, output is padded out with empty strings.
+     */
+    public static void split(String s, char divider, String[] output) {
+        int last = 0;
+        int current = 0;
+        int i;
+        for (i = 0; i < s.length(); ++i) {
+            if (s.charAt(i) == divider) {
+                output[current++] = s.substring(last,i);
+                last = i+1;
+            }
+        }
+        output[current++] = s.substring(last,i);
+        while (current < output.length) {
+            output[current++] = "";
+        }
+    }
+
+    /**
+     * Look up a given string in a string array.  Returns the index at
+     * which the first occurrence of the string was found in the
+     * array, or -1 if it was not found.
+     * @param source the string to search for
+     * @param target the array of zero or more strings in which to
+     * look for source
+     * @return the index of target at which source first occurs, or -1
+     * if not found
+     */
+    public static int lookup(String source, String[] target) {
+        for (int i = 0; i < target.length; ++i) {
+            if (source.equals(target[i])) return i;
+        }
+        return -1;
+    }
+
+    /**
+     * Skip over a sequence of zero or more white space characters
+     * at pos.  Return the index of the first non-white-space character
+     * at or after pos, or str.length(), if there is none.
+     */
+    public static int skipWhitespace(String str, int pos) {
+        while (pos < str.length()) {
+            int c = UTF16.charAt(str, pos);
+            if (!UCharacterProperty.isRuleWhiteSpace(c)) {
+                break;
+            }
+            pos += UTF16.getCharCount(c);
+        }
+        return pos;
+    }
+
+    /**
+     * Skip over a sequence of zero or more white space characters
+     * at pos[0], advancing it.
+     */
+    public static void skipWhitespace(String str, int[] pos) {
+        pos[0] = skipWhitespace(str, pos[0]);
+    }
+
+    /**
+     * Parse a single non-whitespace character 'ch', optionally
+     * preceded by whitespace.
+     * @param id the string to be parsed
+     * @param pos INPUT-OUTPUT parameter.  On input, pos[0] is the
+     * offset of the first character to be parsed.  On output, pos[0]
+     * is the index after the last parsed character.  If the parse
+     * fails, pos[0] will be unchanged.
+     * @param ch the non-whitespace character to be parsed.
+     * @return true if 'ch' is seen preceded by zero or more
+     * whitespace characters.
+     */
+    public static boolean parseChar(String id, int[] pos, char ch) {
+        int start = pos[0];
+        skipWhitespace(id, pos);
+        if (pos[0] == id.length() ||
+            id.charAt(pos[0]) != ch) {
+            pos[0] = start;
+            return false;
+        }
+        ++pos[0];
+        return true;
+    }
+
+    /**
+     * Parse a pattern string starting at offset pos.  Keywords are
+     * matched case-insensitively.  Spaces may be skipped and may be
+     * optional or required.  Integer values may be parsed, and if
+     * they are, they will be returned in the given array.  If
+     * successful, the offset of the next non-space character is
+     * returned.  On failure, -1 is returned.
+     * @param pattern must only contain lowercase characters, which
+     * will match their uppercase equivalents as well.  A space
+     * character matches one or more required spaces.  A '~' character
+     * matches zero or more optional spaces.  A '#' character matches
+     * an integer and stores it in parsedInts, which the caller must
+     * ensure has enough capacity.
+     * @param parsedInts array to receive parsed integers.  Caller
+     * must ensure that parsedInts.length is >= the number of '#'
+     * signs in 'pattern'.
+     * @return the position after the last character parsed, or -1 if
+     * the parse failed
+     */
+    public static int parsePattern(String rule, int pos, int limit,
+                                   String pattern, int[] parsedInts) {
+        // TODO Update this to handle surrogates
+        int[] p = new int[1];
+        int intCount = 0; // number of integers parsed
+        for (int i=0; i<pattern.length(); ++i) {
+            char cpat = pattern.charAt(i);
+            char c;
+            switch (cpat) {
+            case ' ':
+                if (pos >= limit) {
+                    return -1;
+                }
+                c = rule.charAt(pos++);
+                if (!UCharacterProperty.isRuleWhiteSpace(c)) {
+                    return -1;
+                }
+                // FALL THROUGH to skipWhitespace
+            case '~':
+                pos = skipWhitespace(rule, pos);
+                break;
+            case '#':
+                p[0] = pos;
+                parsedInts[intCount++] = parseInteger(rule, p, limit);
+                if (p[0] == pos) {
+                    // Syntax error; failed to parse integer
+                    return -1;
+                }
+                pos = p[0];
+                break;
+            default:
+                if (pos >= limit) {
+                    return -1;
+                }
+                c = (char) UCharacter.toLowerCase(rule.charAt(pos++));
+                if (c != cpat) {
+                    return -1;
+                }
+                break;
+            }
+        }
+        return pos;
+    }
+
+    /**
+     * Parse an integer at pos, either of the form \d+ or of the form
+     * 0x[0-9A-Fa-f]+ or 0[0-7]+, that is, in standard decimal, hex,
+     * or octal format.
+     * @param pos INPUT-OUTPUT parameter.  On input, the first
+     * character to parse.  On output, the character after the last
+     * parsed character.
+     */
+    public static int parseInteger(String rule, int[] pos, int limit) {
+        int count = 0;
+        int value = 0;
+        int p = pos[0];
+        int radix = 10;
+
+        if (rule.regionMatches(true, p, "0x", 0, 2)) {
+            p += 2;
+            radix = 16;
+        } else if (p < limit && rule.charAt(p) == '0') {
+            p++;
+            count = 1;
+            radix = 8;
+        }
+
+        while (p < limit) {
+            int d = UCharacter.digit(rule.charAt(p++), radix);
+            if (d < 0) {
+                --p;
+                break;
+            }
+            ++count;
+            int v = (value * radix) + d;
+            if (v <= value) {
+                // If there are too many input digits, at some point
+                // the value will go negative, e.g., if we have seen
+                // "0x8000000" already and there is another '0', when
+                // we parse the next 0 the value will go negative.
+                return 0;
+            }
+            value = v;
+        }
+        if (count > 0) {
+            pos[0] = p;
+        }
+        return value;
+    }
+
+    /**
+     * Parse a Unicode identifier from the given string at the given
+     * position.  Return the identifier, or null if there is no
+     * identifier.
+     * @param str the string to parse
+     * @param pos INPUT-OUPUT parameter.  On INPUT, pos[0] is the
+     * first character to examine.  It must be less than str.length(),
+     * and it must not point to a whitespace character.  That is, must
+     * have pos[0] < str.length() and
+     * !UCharacterProperty.isRuleWhiteSpace(UTF16.charAt(str, pos[0])).  On
+     * OUTPUT, the position after the last parsed character.
+     * @return the Unicode identifier, or null if there is no valid
+     * identifier at pos[0].
+     */
+    public static String parseUnicodeIdentifier(String str, int[] pos) {
+        // assert(pos[0] < str.length());
+        // assert(!UCharacterProperty.isRuleWhiteSpace(UTF16.charAt(str, pos[0])));
+        StringBuffer buf = new StringBuffer();
+        int p = pos[0];
+        while (p < str.length()) {
+            int ch = UTF16.charAt(str, p);
+            if (buf.length() == 0) {
+                if (UCharacter.isUnicodeIdentifierStart(ch)) {
+                    UTF16.append(buf, ch);
+                } else {
+                    return null;
+                }
+            } else {
+                if (UCharacter.isUnicodeIdentifierPart(ch)) {
+                    UTF16.append(buf, ch);
+                } else {
+                    break;
+                }
+            }
+            p += UTF16.getCharCount(ch);
+        }
+        pos[0] = p;
+        return buf.toString();
+    }
+
+    /**
+     * Trim whitespace from ends of a StringBuffer.
+     */
+    public static StringBuffer trim(StringBuffer b) {
+        // TODO update to handle surrogates
+        int i;
+        for (i=0; i<b.length() && Character.isWhitespace(b.charAt(i)); ++i) {}
+        b.delete(0, i);
+        for (i=b.length()-1; i>=0 && Character.isWhitespace(b.charAt(i)); --i) {}
+        return b.delete(i+1, b.length());
+    }
+
+    // "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+    static final char DIGITS[] = {
+        48,49,50,51,52,53,54,55,56,57,
+        65,66,67,68,69,70,71,72,73,74,
+        75,76,77,78,79,80,81,82,83,84,
+        85,86,87,88,89,90
+    };
+
+    /**
+     * Append a number to the given StringBuffer in the radix 10
+     * generating at least one digit.
+     */
+    public static StringBuffer appendNumber(StringBuffer result, int n) {
+        return appendNumber(result, n, 10, 1);
+    }
+
+    /**
+     * Append a number to the given StringBuffer in the given radix.
+     * Standard digits '0'-'9' are used and letters 'A'-'Z' for
+     * radices 11 through 36.
+     * @param result the digits of the number are appended here
+     * @param n the number to be converted to digits; may be negative.
+     * If negative, a '-' is prepended to the digits.
+     * @param radix a radix from 2 to 36 inclusive.
+     * @param minDigits the minimum number of digits, not including
+     * any '-', to produce.  Values less than 2 have no effect.  One
+     * digit is always emitted regardless of this parameter.
+     * @return a reference to result
+     */
+    public static StringBuffer appendNumber(StringBuffer result, int n,
+                                            int radix, int minDigits) {
+        if (radix < 2 || radix > 36) {
+            // Bogus radix
+            throw new IllegalArgumentException("Illegal radix " + radix);
+        }
+        // Handle negatives
+        if (n < 0) {
+            n = -n;
+            result.append('-');
+        }
+        // First determine the number of digits
+        int nn = n;
+        int r = 1;
+        while (nn >= radix) {
+            nn /= radix;
+            r *= radix;
+            --minDigits;
+        }
+        // Now generate the digits
+        while (--minDigits > 0) {
+            result.append(DIGITS[0]);
+        }
+        while (r > 0) {
+            int digit = n / r;
+            result.append(DIGITS[digit]);
+            n -= digit * r;
+            r /= radix;
+        }
+        return result;
+    }
+
+    /**
+     * Parse an unsigned 31-bit integer at the given offset.  Use
+     * UCharacter.digit() to parse individual characters into digits.
+     * @param text the text to be parsed
+     * @param pos INPUT-OUTPUT parameter.  On entry, pos[0] is the
+     * offset within text at which to start parsing; it should point
+     * to a valid digit.  On exit, pos[0] is the offset after the last
+     * parsed character.  If the parse failed, it will be unchanged on
+     * exit.  Must be >= 0 on entry.
+     * @param radix the radix in which to parse; must be >= 2 and <=
+     * 36.
+     * @return a non-negative parsed number, or -1 upon parse failure.
+     * Parse fails if there are no digits, that is, if pos[0] does not
+     * point to a valid digit on entry, or if the number to be parsed
+     * does not fit into a 31-bit unsigned integer.
+     */
+    public static int parseNumber(String text, int[] pos, int radix) {
+        // assert(pos[0] >= 0);
+        // assert(radix >= 2);
+        // assert(radix <= 36);
+        int n = 0;
+        int p = pos[0];
+        while (p < text.length()) {
+            int ch = UTF16.charAt(text, p);
+            int d = UCharacter.digit(ch, radix);
+            if (d < 0) {
+                break;
+            }
+            n = radix*n + d;
+            // ASSUME that when a 32-bit integer overflows it becomes
+            // negative.  E.g., 214748364 * 10 + 8 => negative value.
+            if (n < 0) {
+                return -1;
+            }
+            ++p;
+        }
+        if (p == pos[0]) {
+            return -1;
+        }
+        pos[0] = p;
+        return n;
+    }
+
+    private static final char[] HEX = {'0','1','2','3','4','5','6','7',
+                                       '8','9','A','B','C','D','E','F'};
+
+    /**
+     * Return true if the character is NOT printable ASCII.  The tab,
+     * newline and linefeed characters are considered unprintable.
+     */
+    public static boolean isUnprintable(int c) {
+        return !(c >= 0x20 && c <= 0x7E);
+    }
+
+    /**
+     * Escape unprintable characters using <backslash>uxxxx notation
+     * for U+0000 to U+FFFF and <backslash>Uxxxxxxxx for U+10000 and
+     * above.  If the character is printable ASCII, then do nothing
+     * and return FALSE.  Otherwise, append the escaped notation and
+     * return TRUE.
+     */
+    public static boolean escapeUnprintable(StringBuffer result, int c) {
+        if (isUnprintable(c)) {
+            result.append('\\');
+            if ((c & ~0xFFFF) != 0) {
+                result.append('U');
+                result.append(HEX[0xF&(c>>28)]);
+                result.append(HEX[0xF&(c>>24)]);
+                result.append(HEX[0xF&(c>>20)]);
+                result.append(HEX[0xF&(c>>16)]);
+            } else {
+                result.append('u');
+            }
+            result.append(HEX[0xF&(c>>12)]);
+            result.append(HEX[0xF&(c>>8)]);
+            result.append(HEX[0xF&(c>>4)]);
+            result.append(HEX[0xF&c]);
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Returns the index of the first character in a set, ignoring quoted text.
+     * For example, in the string "abc'hide'h", the 'h' in "hide" will not be
+     * found by a search for "h".  Unlike String.indexOf(), this method searches
+     * not for a single character, but for any character of the string
+     * <code>setOfChars</code>.
+     * @param text text to be searched
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= text.length()</code>.
+     * @param setOfChars string with one or more distinct characters
+     * @return Offset of the first character in <code>setOfChars</code>
+     * found, or -1 if not found.
+     * @see String#indexOf
+     */
+    public static int quotedIndexOf(String text, int start, int limit,
+                                    String setOfChars) {
+        for (int i=start; i<limit; ++i) {
+            char c = text.charAt(i);
+            if (c == BACKSLASH) {
+                ++i;
+            } else if (c == APOSTROPHE) {
+                while (++i < limit
+                       && text.charAt(i) != APOSTROPHE) {}
+            } else if (setOfChars.indexOf(c) >= 0) {
+                return i;
+            }
+        }
+        return -1;
+    }
+
+    /**
+     * For debugging purposes; format the given text in the form
+     * aaa{bbb|ccc|ddd}eee, where the {} indicate the context start
+     * and limit, and the || indicate the start and limit.
+     */
+    public static String formatInput(ReplaceableString input,
+                                     Transliterator.Position pos) {
+        StringBuffer appendTo = new StringBuffer();
+        formatInput(appendTo, input, pos);
+        return com.ibm.icu.impl.Utility.escape(appendTo.toString());
+    }
+
+    /**
+     * For debugging purposes; format the given text in the form
+     * aaa{bbb|ccc|ddd}eee, where the {} indicate the context start
+     * and limit, and the || indicate the start and limit.
+     */
+    public static StringBuffer formatInput(StringBuffer appendTo,
+                                           ReplaceableString input,
+                                           Transliterator.Position pos) {
+        if (0 <= pos.contextStart &&
+            pos.contextStart <= pos.start &&
+            pos.start <= pos.limit &&
+            pos.limit <= pos.contextLimit &&
+            pos.contextLimit <= input.length()) {
+            
+            String a, b, c, d, e;
+            //a = input.substring(0, pos.contextStart);
+            b = input.substring(pos.contextStart, pos.start);
+            c = input.substring(pos.start, pos.limit);
+            d = input.substring(pos.limit, pos.contextLimit);
+            //e = input.substring(pos.contextLimit, input.length());
+            appendTo.//append(a).
+                append('{').append(b).
+                append('|').append(c).append('|').append(d).
+                append('}')
+                //.append(e)
+                ;
+        } else {
+            appendTo.append("INVALID Position {cs=" +
+                            pos.contextStart + ", s=" + pos.start + ", l=" +
+                            pos.limit + ", cl=" + pos.contextLimit + "} on " +
+                            input);
+        }
+        return appendTo;
+    }
+
+    /**
+     * Convenience method.
+     */
+    public static String formatInput(Replaceable input,
+                                     Transliterator.Position pos) {
+        return formatInput((ReplaceableString) input, pos);
+    }
+
+    /**
+     * Convenience method.
+     */
+    public static StringBuffer formatInput(StringBuffer appendTo,
+                                           Replaceable input,
+                                           Transliterator.Position pos) { 
+        return formatInput(appendTo, (ReplaceableString) input, pos);
+    }
+
+    /**
+    * Similar to StringBuffer.getChars, version 1.3.
+    * Since JDK 1.2 implements StringBuffer.getChars differently, this method 
+    * is here to provide consistent results.
+    * To be removed after JDK 1.2 ceased to be the reference platform.
+    * @param src source string buffer
+    * @param srcBegin offset to the start of the src to retrieve from
+    * @param srcEnd offset to the end of the src to retrieve from
+    * @param dst char array to store the retrieved chars
+    * @param dstBegin offset to the start of the destination char array to 
+    *                 store the retrieved chars
+    * @draft since ICU4J 2.0
+    */
+    public static void getChars(StringBuffer src, int srcBegin, int srcEnd, 
+                                char dst[], int dstBegin) 
+    {	
+        if (srcBegin == srcEnd) {	    
+            return;
+        }	
+        src.getChars(srcBegin, srcEnd, dst, dstBegin);
+    }
+    
+    /**
+     * Append a character to a rule that is being built up.  To flush
+     * the quoteBuf to rule, make one final call with isLiteral == true.
+     * If there is no final character, pass in (int)-1 as c.
+     * @param rule the string to append the character to
+     * @param c the character to append, or (int)-1 if none.
+     * @param isLiteral if true, then the given character should not be
+     * quoted or escaped.  Usually this means it is a syntactic element
+     * such as > or $
+     * @param escapeUnprintable if true, then unprintable characters
+     * should be escaped using escapeUnprintable().  These escapes will
+     * appear outside of quotes.
+     * @param quoteBuf a buffer which is used to build up quoted
+     * substrings.  The caller should initially supply an empty buffer,
+     * and thereafter should not modify the buffer.  The buffer should be
+     * cleared out by, at the end, calling this method with a literal
+     * character (which may be -1).
+     */
+    public static void appendToRule(StringBuffer rule,
+                                    int c,
+                                    boolean isLiteral,
+                                    boolean escapeUnprintable,
+                                    StringBuffer quoteBuf) {
+        // If we are escaping unprintables, then escape them outside
+        // quotes.  \\u and \\U are not recognized within quotes.  The same
+        // logic applies to literals, but literals are never escaped.
+        if (isLiteral ||
+            (escapeUnprintable && Utility.isUnprintable(c))) {
+            if (quoteBuf.length() > 0) {
+                // We prefer backslash APOSTROPHE to double APOSTROPHE
+                // (more readable, less similar to ") so if there are
+                // double APOSTROPHEs at the ends, we pull them outside
+                // of the quote.
+
+                // If the first thing in the quoteBuf is APOSTROPHE
+                // (doubled) then pull it out.
+                while (quoteBuf.length() >= 2 &&
+                       quoteBuf.charAt(0) == APOSTROPHE &&
+                       quoteBuf.charAt(1) == APOSTROPHE) {
+                    rule.append(BACKSLASH).append(APOSTROPHE);
+                    quoteBuf.delete(0, 2);
+                }
+                // If the last thing in the quoteBuf is APOSTROPHE
+                // (doubled) then remove and count it and add it after.
+                int trailingCount = 0;
+                while (quoteBuf.length() >= 2 &&
+                       quoteBuf.charAt(quoteBuf.length()-2) == APOSTROPHE &&
+                       quoteBuf.charAt(quoteBuf.length()-1) == APOSTROPHE) {
+                    quoteBuf.setLength(quoteBuf.length()-2);
+                    ++trailingCount;
+                }
+                if (quoteBuf.length() > 0) {
+                    rule.append(APOSTROPHE);
+                    // jdk 1.3.1 does not have append(StringBuffer) yet
+                    if(ICUDebug.isJDK14OrHigher){
+                        rule.append(quoteBuf);
+                    }else{
+                        rule.append(quoteBuf.toString());
+                    }
+                    rule.append(APOSTROPHE);
+                    quoteBuf.setLength(0);
+                }
+                while (trailingCount-- > 0) {
+                    rule.append(BACKSLASH).append(APOSTROPHE);
+                }
+            }
+            if (c != -1) {
+                /* Since spaces are ignored during parsing, they are
+                 * emitted only for readability.  We emit one here
+                 * only if there isn't already one at the end of the
+                 * rule.
+                 */
+                if (c == ' ') {
+                    int len = rule.length();
+                    if (len > 0 && rule.charAt(len-1) != ' ') {
+                        rule.append(' ');
+                    }
+                } else if (!escapeUnprintable || !Utility.escapeUnprintable(rule, c)) {
+                    UTF16.append(rule, c);
+                }
+            }
+        }
+
+        // Escape ' and '\' and don't begin a quote just for them
+        else if (quoteBuf.length() == 0 &&
+                 (c == APOSTROPHE || c == BACKSLASH)) {
+            rule.append(BACKSLASH).append((char)c);
+        }
+
+        // Specials (printable ascii that isn't [0-9a-zA-Z]) and
+        // whitespace need quoting.  Also append stuff to quotes if we are
+        // building up a quoted substring already.
+        else if (quoteBuf.length() > 0 ||
+                 (c >= 0x0021 && c <= 0x007E &&
+                  !((c >= 0x0030/*'0'*/ && c <= 0x0039/*'9'*/) ||
+                    (c >= 0x0041/*'A'*/ && c <= 0x005A/*'Z'*/) ||
+                    (c >= 0x0061/*'a'*/ && c <= 0x007A/*'z'*/))) ||
+                 UCharacterProperty.isRuleWhiteSpace(c)) {
+            UTF16.append(quoteBuf, c);
+            // Double ' within a quote
+            if (c == APOSTROPHE) {
+                quoteBuf.append((char)c);
+            }
+        }
+
+        // Otherwise just append
+        else {
+            UTF16.append(rule, c);
+        }
+    }
+
+    /**
+     * Append the given string to the rule.  Calls the single-character
+     * version of appendToRule for each character.
+     */
+    public static void appendToRule(StringBuffer rule,
+                                    String text,
+                                    boolean isLiteral,
+                                    boolean escapeUnprintable,
+                                    StringBuffer quoteBuf) {
+        for (int i=0; i<text.length(); ++i) {
+            // Okay to process in 16-bit code units here
+            appendToRule(rule, text.charAt(i), isLiteral, escapeUnprintable, quoteBuf);
+        }
+    }
+
+    /**
+     * Given a matcher reference, which may be null, append its
+     * pattern as a literal to the given rule.
+     */
+    public static void appendToRule(StringBuffer rule,
+                                    UnicodeMatcher matcher,
+                                    boolean escapeUnprintable,
+                                    StringBuffer quoteBuf) {
+        if (matcher != null) {
+            appendToRule(rule, matcher.toPattern(escapeUnprintable),
+                         true, escapeUnprintable, quoteBuf);
+        }
+    }
+    
+    /**
+     * Compares 2 unsigned integers
+     * @param source 32 bit unsigned integer
+     * @param target 32 bit unsigned integer
+     * @return 0 if equals, 1 if source is greater than target and -1 
+     *         otherwise
+     */
+    public static final int compareUnsigned(int source, int target) 
+    {
+        if (source == target) {
+            return 0;
+        }
+        if (source >= 0) {
+            if (source < target || target < 0) {
+                return -1;
+            } 
+        }
+        else if (source < target && target < 0) {
+            // source < 0, so
+            return -1;
+        }
+        return 1;
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/BreakIteratorRules.java b/src/com/ibm/icu/impl/data/BreakIteratorRules.java
new file mode 100755
index 0000000..77589fb
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/BreakIteratorRules.java
@@ -0,0 +1,391 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/BreakIteratorRules.java,v $
+ * $Date: 2002/03/01 02:37:47 $
+ * $Revision: 1.10 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default break-iterator rules.  These rules are more or less general for
+ * all locales, although there are probably a few we're missing.  The
+ * behavior currently mimics the behavior of BreakIterator in JDK 1.2.
+ * There are known deficiencies in this behavior, including the fact that
+ * the logic for handling CJK characters works for Japanese but not for
+ * Chinese, and that we don't currently have an appropriate locale for
+ * Thai.  The resources will eventually be updated to fix these problems.
+ */
+
+ /* Modified for Hindi 3/1/99. */
+
+public class BreakIteratorRules extends ListResourceBundle {
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    static final Object[][] contents = {
+        // BreakIteratorClasses lists the class names to instantiate for each
+        // built-in type of BreakIterator
+        { "BreakIteratorClasses",
+            new String[] { "RuleBasedBreakIterator",     // character-break iterator class
+                           "RuleBasedBreakIterator",     // word-break iterator class
+                           "RuleBasedBreakIterator",     // line-break iterator class
+                           "RuleBasedBreakIterator",     // sentence-break iterator class
+                           "RuleBasedBreakIterator"}     // Title-Case break iterator class
+        },
+
+        // rules describing how to break between logical characters
+        { "CharacterBreakRules",
+            // ignore non-spacing marks and enclosing marks (since we never
+            // put a break before ignore characters, this keeps combining
+            // accents with the base characters they modify)
+            // FIXME: the virama thing is probably a hack...
+              "$devaVirama=[\u094d];"
+            + "$_ignore_=[[[:Mn:]-$devaVirama][:Me:]];"
+
+            // other category definitions
+            + "$choseong=[\u1100-\u115f];"
+            + "$jungseong=[\u1160-\u11a7];"
+            + "$jongseong=[\u11a8-\u11ff];"
+            + "$surr_hi=[\ud800-\udbff];"
+            + "$surr_lo=[\udc00-\udfff];"
+
+            // break after every character, except as follows:
+            + ".;"
+
+            // keep CRLF sequences together
+            + "\r\n;"
+
+            // keep surrogate pairs together
+            + "$surr_hi$surr_lo;"
+
+            // keep Hangul syllables spelled out using conjoining jamo together
+            + "$choseong*$jungseong*$jongseong*;"
+
+            // revised Devanagari support - full syllables
+            // simplified by allowing some nonsense syllables
+            // FIXME: nukta, non-spacing matras, and the modifiers
+            // are all ignorable, so they don't need to be mentioned
+            // here... (but the rules read better if they are...)
+            + "$devaNukta=[\u093c];"
+            + "$devaVowel=[\u0905-\u0914];"
+            + "$devaMatra=[\u093e-\u094c\u0962\u0963];"
+            + "$devaConsonant=[\u0915-\u0939\u0958-\u095f];"
+            + "$devaModifier=[\u0901-\u0903\u0951-\u0954];"
+            + "$zwnj=[\u200c];"
+            + "$zwj=[\u200d];"
+
+            // consonant followed optionally by a nukta
+            + "$devaCN=($devaConsonant$devaNukta?);"
+
+            // a virama followed by an optional zwj or zwnj
+            + "$devaJoin=($devaVirama[$zwj$zwnj]?);"
+
+            // a syllable with at least one consonant
+            + "($devaCN$devaJoin)*$devaCN($devaJoin|$devaMatra?$devaModifier*);"
+
+            // a syllable without consonants
+            + "$devaVowel$devaModifier*;"
+        },
+
+        // default rules for finding word boundaries
+        { "WordBreakRules",
+
+            // Surrogates.  Until better support is available, ignore low surrogates
+            //              and classify high surrogates according to the characters within the block.
+              "$surr_lo=[\udc00-\udfff];"
+            + "$surr_hi_let=[\ud800\ud801\ud834\ud835];"   // Hi Surrogates for Old Italic, Gothic, Deseret, Music, Math
+            + "$surr_hi_ideo=[\ud840-\ud880];"             // Hi Surrogates for CJK
+			+ "$surr_hi_tag=[\udb40];"                     // Hi Surrogates for Tags
+            + "$surr_hi_pua=[\udb80-\udbff];"              // Hi Surrogates for Private Use.
+
+            // Private Use Area.  Treat like ideographs.
+			+ "$pua=[\ue000-\uf8ff$surr_hi_pua];"
+
+            // ignore non-spacing marks, enclosing marks, and format characters,
+            // all of which should not influence the algorithm
+            + "$_ignore_=[[:Mn:][:Me:][:Cf:]$surr_lo$surr_hi_tag];"
+
+            // Hindi phrase separator, kanji, katakana, hiragana, CJK diacriticals,
+            // other letters, and digits
+            + "$danda=[\u0964\u0965];"
+            + "$kanji=[\u3005\u3400-\u4db5\u4e00-\u9fa5\uf900-\ufa6a$surr_hi_ideo$pua];"
+            + "$kata=[\u3099-\u309c\u30a1-\u30fe];"
+            + "$hira=[\u3041-\u309e\u30fc];"
+            + "$let=[[[:L:][:Mc:]$surr_hi_let]-[$kanji$kata$hira]];"
+            + "$dgt=[:N:];"
+
+            // punctuation that can occur in the middle of a word: currently
+            // dashes, apostrophes, quotation marks, and periods
+            + "$mid_word=[[:Pd:]\u00ad\u2027\\\"\\\'\\.];"
+
+            // punctuation that can occur in the middle of a number: currently
+            // apostrophes, qoutation marks, periods, commas, and the Arabic
+            // decimal point
+            + "$mid_num=[\\\"\\\'\\,\u066b\\.];"
+
+            // punctuation that can occur at the beginning of a number: currently
+            // the period, the number sign, and all currency symbols except the cents sign
+            + "$pre_num=[[[:Sc:]-[\u00a2]]\\#\\.];"
+
+            // punctuation that can occur at the end of a number: currently
+            // the percent, per-thousand, per-ten-thousand, and Arabic percent
+            // signs, the cents sign, and the ampersand
+            + "$post_num=[\\%\\&\u00a2\u066a\u2030\u2031];"
+
+            // line separators: currently LF, FF, PS, and LS
+            + "$ls=[\n\u000c\u2028\u2029];"
+
+            // whitespace: all space separators and the tab character
+            + "$ws=[[:Zs:]\t];"
+
+            // a word is a sequence of letters that may contain internal
+            // punctuation, as long as it begins and ends with a letter and
+            // never contains two punctuation marks in a row
+            + "$word=($let+($mid_word$let+)*$danda?);"
+
+            // a number is a sequence of digits that may contain internal
+            // punctuation, as long as it begins and ends with a digit and
+            // never contains two punctuation marks in a row.
+            + "$number=($dgt+($mid_num$dgt+)*);"
+
+            // break after every character, with the following exceptions
+            // (this will cause punctuation marks that aren't considered
+            // part of words or numbers to be treated as words unto themselves)
+            + ".;"
+
+            // keep together any sequence of contiguous words and numbers
+            // (including just one of either), plus an optional trailing
+            // number-suffix character
+            + "$word?($number$word)*($number$post_num?)?;"
+
+            // keep together and sequence of contiguous words and numbers
+            // that starts with a number-prefix character and a number,
+            // and may end with a number-suffix character
+            + "$pre_num($number$word)*($number$post_num?)?;"
+
+            // keep together runs of whitespace (optionally with a single trailing
+            // line separator or CRLF sequence)
+            + "$ws*\r?$ls?;"
+
+            // keep together runs of Katakana
+            + "$kata*;"
+
+            // keep together runs of Hiragana
+            + "$hira*;"
+
+            // keep together runs of Kanji
+            + "$kanji*;"
+        },
+
+        // default rules for determining legal line-breaking positions
+        { "LineBreakRules",
+            // Surrogates.  Until better support is available, ignore low surrogates
+            //              and classify high surrogates according to the characters within the block.
+              "$surr_lo=[\udc00-\udfff];"
+            + "$surr_hi_let=[\ud800\ud801\ud834\ud835];"   // Hi Surrogates for Old Italic, Gothic, Deseret, Music, Math
+            + "$surr_hi_ideo=[\ud840-\ud880];"             // Hi Surrogates for CJK
+			+ "$surr_hi_tag=[\udb40];"                     // Hi Surrogates for Tags
+            + "$surr_hi_pua=[\udb80-\udbff];"              // Hi Surrogates for Private Use.
+
+            // Private Use Area.  Treat like ideographs.
+ 			+ "$pua=[\ue000-\uf8ff$surr_hi_pua];"
+
+            // ignore non-spacing marks, enclosing marks, and format characters
+            + "$_ignore_=[[:Mn:][:Me:][:Cf:]$surr_lo$surr_hi_tag];"
+
+            // Hindi phrase separators
+            + "$danda=[\u0964\u0965];"
+
+            // characters that always cause a break: ETX, tab, LF, FF, LS, and PS
+            + "$break=[\u0003\t\n\f\u2028\u2029];"
+
+            // characters that always prevent a break: the non-breaking space
+            // and similar characters
+            + "$nbsp=[\u00a0\u2007\u2011\ufeff];"
+
+            // whitespace: space separators and control characters, except for
+            // CR and the other characters mentioned above
+            + "$space=[[[:Zs:][:Cc:]]-[$nbsp$break\r]];"
+
+            // dashes: dash punctuation and the discretionary hyphen, except for
+            // non-breaking hyphens
+            + "$dash=[[[:Pd:]\u00ad]-[$nbsp]];"
+
+            // characters that stick to a word if they precede it: currency symbols
+            // (except the cents sign) and starting punctuation
+            + "$pre_word=[[[:Sc:]-[\u00a2]][:Ps:][:Pi:]\\\"\\\'];"
+
+            // characters that stick to a word if they follow it: ending punctuation,
+            // other punctuation that usually occurs at the end of a sentence,
+            // small Kana characters, some CJK diacritics, etc.
+            + "$post_word=[[:Pe:][:Pf:]\\!\\\"\\\'\\%\\.\\,\\:\\;\\?\u00a2\u00b0\u066a\u2030-\u2034"
+                    + "\u2103\u2105\u2109\u3001\u3002\u3005\u3041\u3043\u3045\u3047\u3049\u3063"
+                    + "\u3083\u3085\u3087\u308e\u3099-\u309e\u30a1\u30a3\u30a5\u30a7\u30a9"
+                    + "\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u30fc-\u30fe\uff01\uff0c"
+                    + "\uff0e\uff1f];"
+
+            // Kanji: actually includes both Kanji and Kana, except for small Kana and
+            // CJK diacritics
+            + "$kanji=[[$surr_hi_ideo$pua\u3400-\u4db5\u4e00-\u9fa5\uf900-\ufa6a\u3041-\u3094\u30a1-\u30fa]-[$post_word$_ignore_]];"
+
+            // digits
+            + "$digit=[[:Nd:][:No:]];"
+
+            // punctuation that can occur in the middle of a number: periods and commas
+            + "$mid_num=[\\.\\,];"
+
+            // everything not mentioned above, plus the quote marks (which are both
+            // <pre-word>, <post-word>, and <char>)
+            + "$char=[^$break$space$dash$kanji$nbsp$_ignore_$pre_word$post_word$mid_num$danda\r\\\"\\\'];"
+
+            // a "number" is a run of prefix characters and dashes, followed by one or
+            // more digits with isolated number-punctuation characters interspersed
+            + "$number=([$pre_word$dash]*$digit+($mid_num$digit+)*);"
+
+            // the basic core of a word can be either a "number" as defined above, a single
+            // "Kanji" character, or a run of any number of not-explicitly-mentioned
+            // characters (this includes Latin letters)
+            + "$word_core=([$pre_word$char]*|$kanji|$number);"
+
+            // a word may end with an optional suffix that be either a run of one or
+            // more dashes or a run of word-suffix characters, followed by an optional
+            // run of whitespace
+            + "$word_suffix=(($dash+|$post_word*)$space*);"
+
+            // a word, thus, is an optional run of word-prefix characters, followed by
+            // a word core and a word suffix (the syntax of <word-core> and <word-suffix>
+            // actually allows either of them to match the empty string, putting a break
+            // between things like ")(" or "aaa(aaa"
+            + "$word=($pre_word*$word_core$word_suffix);"
+
+            // finally, the rule that does the work: Keep together any run of words that
+            // are joined by runs of one of more non-spacing mark.  Also keep a trailing
+            // line-break character or CRLF combination with the word.  (line separators
+            // "win" over nbsp's)
+            + "$word($nbsp+$word)*\r?$break?;"
+        },
+
+        // default rules for finding sentence boundaries
+        { "SentenceBreakRules",
+            // Surrogates.  Until better support is available, ignore low surrogates
+            //              and classify high surrogates according to the characters within the block.
+              "$surr_lo=[\udc00-\udfff];"
+
+            // ignore non-spacing marks, enclosing marks, and format characters
+            + "$_ignore_=[[:Mn:][:Me:][:Cf:]$surr_lo];"
+
+            // lowercase letters
+            + "$lc=[:Ll:];"
+
+            // uppercase Latin letters
+            + "$ucLatin=[A-Z];"
+
+            // whitespace (line separators are treated as whitespace)
+            + "$space=[\t\r\f\n\u2028[:Zs:]];"
+
+            // punctuation which may occur at the beginning of a sentence: "starting
+            // punctuation" and quotation marks
+            + "$start=[[:Ps:][:Pi:]\\\"\\\'];"
+
+            // punctuation with may occur at the end of a sentence: "ending punctuation"
+            // and quotation marks
+            + "$end=[[:Pe:][:Pf:]\\\"\\\'];"
+
+            // digits
+            + "$digit=[:N:];"
+
+            // characters that unambiguously signal the end of a sentence
+            + "$term=[\\!\\?\u3002\uff01\uff1f];"
+
+            // periods, which MAY signal the end of a sentence
+            + "$period=[\\.\uff0e];"
+
+            // characters that may occur at the beginning of a sentence: basically anything
+            // not mentioned above (lowercase letters and digits are specifically excluded)
+            + "$sent_start=[^$lc$ucLatin$space$start$end$digit$term$period\u2029$_ignore_];"
+
+            // Hindi phrase separator
+            + "$danda=[\u0964\u0965];"
+
+            // always break sentences after paragraph separators
+            + ".*?\u2029?;"
+
+            // always break after a danda, if it's followed by whitespace
+            + ".*?$danda$space*;"
+
+            // if you see a period, skip over additional periods and ending punctuation
+            // and if the next character is a paragraph separator, break after the
+            // paragraph separator
+            + ".*?$period[$period$end]*$space*\u2029;"
+
+            // if you see a period, skip over additional periods and ending punctuation,
+            // followed by optional whitespace, followed by optional starting punctuation,
+            // and if the next character is something that can start a sentence
+            // (basically, a capital letter), then put the sentence break between the
+            // whitespace and the opening punctuation
+            + ".*?$period[$period$end]*$space*/($start*$sent_start|$start+$ucLatin);"
+
+            // same as above, except that there's a sentence break before a Latin capital
+            // letter only if there's at least one space after the period
+            + ".*?$period[$period$end]*$space+/$ucLatin;"
+
+            // if you see a sentence-terminating character, skip over any additional
+            // terminators, periods, or ending punctuation, followed by any whitespace,
+            // followed by a SINGLE optional paragraph separator, and put the break there
+            + ".*?$term[$term$period$end]*$space*\u2029?;"
+
+            // The following rules are here to aid in backwards iteration.  The automatically
+            // generated backwards state table will rewind to the beginning of the
+            // paragraph all the time (or all the way to the beginning of the document
+            // if the document doesn't use the Unicode PS character) because the only
+            // unambiguous character pairs are those involving paragraph separators.
+            // These specify a few more unambiguous breaking situations.
+
+            // if you see a sentence-starting character, followed by starting punctuation
+            // (remember, we're iterating backwards), followed by an optional run of
+            // whitespace, followed by an optional run of ending punctuation, followed
+            // by a period, this is a safe place to turn around
+            + "![$sent_start$ucLatin]$start*$space+$end*$period;"
+
+            // if you see a letter or a digit, followed by an optional run of
+            // starting punctuation, followed by an optional run of whitespace,
+            // followed by an optional run of ending punctuation, followed by
+            // a sentence terminator, this is a safe place to turn around
+            + "![$sent_start$lc$digit]$start*$space*$end*$term;"
+        },
+
+		// default rules for finding Title Case boundaries.
+		//   See  Unicode Technical Report #21 more information about these rules.
+		{ "TitleBreakRules",
+               "$case_ignorable=[[:Mn:][:Me:][:Cf:][:Lm:][:Sk:]\\u0027\u00AD\u2019];"
+             + "$cased=[[[:Lu:][:Lt:][:Ll:]"
+             +     "\u2160-\u216f"                       // Other Uppercase
+             +     "\u24b6-\u24cf"
+             +     "\u02b0-\u02b8"                       // Other Lower case
+             +     "\u02c0-\u02c1"
+             +     "\u02e0-\u02e4"
+             +     "\u0345\u037a"
+             +     "\u2170-\u217f"
+             +     "\u24d0-\u24e9]"
+             +     "-$case_ignorable];"                  // Remove anything that is case_ignorable
+                                                         //   from $cased.
+		     + "$not_cased=[^$cased$case_ignorable];"
+             // First time only, eat through any leading non-word-like stuff.
+		     + "[$not_cased$case_ignorable]*;"
+             //  Match a word (a cased item), plus any following spaces or other non-cased junk,
+             //    up to the start of the next cased item.
+             + "$cased[$cased$case_ignorable]*[$not_cased]*;"
+             + "!$not_cased*[$cased$case_ignorable]*$not_cased*;"   // Backwards rule.
+	    }
+
+    };
+}
diff --git a/src/com/ibm/icu/impl/data/BreakIteratorRules_th.java b/src/com/ibm/icu/impl/data/BreakIteratorRules_th.java
new file mode 100755
index 0000000..4cd6bf0
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/BreakIteratorRules_th.java
@@ -0,0 +1,243 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/BreakIteratorRules_th.java,v $
+ * $Date: 2002/02/16 03:05:39 $
+ * $Revision: 1.7 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+import java.util.MissingResourceException;
+import java.net.URL;
+
+public class BreakIteratorRules_th extends ListResourceBundle {
+    public Object[][] getContents() {
+
+        URL url = getClass().getResource("thai_dict");
+
+        // if dictionary wasn't found, then this resource bundle doesn't have
+        // much to contribute...
+        if (url == null) {
+            return new Object[0][0];
+        }
+
+        return new Object[][] {
+            // names of classes to instantiate for the different kinds of break
+            // iterator.  Notice we're now using DictionaryBasedBreakIterator
+            // for word and line breaking.
+            { "BreakIteratorClasses",
+                new String[] { "RuleBasedBreakIterator",           // character-break iterator class
+                               "DictionaryBasedBreakIterator",     // word-break iterator class
+                               "DictionaryBasedBreakIterator",     // line-break iterator class
+                               "RuleBasedBreakIterator" }          // sentence-break iterator class
+            },
+
+            { "WordBreakRules",
+                "$_dictionary_=[\u0e01-\u0e2e\u0e30-\u0e3a\u0e40-\u0e44\u0e47-\u0e4e];" // this rule breaks the iterator with mixed Thai and English
+
+                // Surrogates.  Until better support is available, ignore low surrogates
+                //              and classify high surrogates according to the characters within the block.
+                + "$surr_lo=[\udc00-\udfff];"
+                + "$surr_hi_let=[\ud800\ud801\ud834\ud835];"   // Hi Surrogates for Old Italic, Gothic, Deseret, Music, Math
+                + "$surr_hi_ideo=[\ud840-\ud880];"             // Hi Surrogates for CJK
+                + "$surr_hi_tag=[\udb40];"                     // Hi Surrogates for Tags
+                + "$surr_hi_pua=[\udb80-\udbff];"              // Hi Surrogates for Private Use.
+
+                // Private Use Area.  Treat like ideographs.
+                + "$pua=[\ue000-\uf8ff$surr_hi_pua];"
+
+                // ignore non-spacing marks, enclosing marks, and format characters,
+                // all of which should not influence the algorithm
+                + "$_ignore_=[[[:Mn:][:Me:][:Cf:]$surr_lo$surr_hi_tag]-$_dictionary_];"
+
+                + "$paiyannoi=[\u0e2f];"
+                + "$maiyamok=[\u0e46];"
+
+
+                // Hindi phrase separator, kanji, katakana, hiragana, CJK diacriticals,
+                // other letters, and digits
+                + "$danda=[\u0964\u0965];"
+                + "$kanji=[\u3005\u4e00-\u9fa5\uf900-\ufa2d$surr_hi_ideo$pua];"
+                + "$kata=[\u30a1-\u30fa];"
+                + "$hira=[\u3041-\u3094];"
+                + "$cjk_diacrit=[\u3099-\u309c];"
+                + "$let=[[[:L:][:Mc:]$surr_hi_let]-[$kanji$kata$hira$cjk_diacrit$_dictionary_]];"
+                + "$dgt=[:N:];"
+
+                // punctuation that can occur in the middle of a word: currently
+                // dashes, apostrophes, quotation marks, and periods
+                + "$mid_word=[[:Pd:]\u00ad\u2027\\\"\\\'\\.];"
+
+                // punctuation that can occur in the middle of a number: currently
+                // apostrophes, qoutation marks, periods, commas, and the Arabic
+                // decimal point
+                + "$mid_num=[\\\"\\\'\\,\u066b\\.];"
+
+                // punctuation that can occur at the beginning of a number: currently
+                // the period, the number sign, and all currency symbols except the cents sign
+                + "$pre_num=[[[:Sc:]-[\u00a2]]\\#\\.];"
+
+                // punctuation that can occur at the end of a number: currently
+                // the percent, per-thousand, per-ten-thousand, and Arabic percent
+                // signs, the cents sign, and the ampersand
+                + "$post_num=[\\%\\&\u00a2\u066a\u2030\u2031];"
+
+                // line separators: currently LF, FF, PS, and LS
+                + "$ls=[\n\u000c\u2028\u2029];"
+
+                // whitespace: all space separators and the tab character
+                + "$ws=[[:Zs:]\t];"
+
+                // a word is a sequence of letters that may contain internal
+                // punctuation, as long as it begins and ends with a letter and
+                // never contains two punctuation marks in a row
+                + "$word=(($let+($mid_word$let+)*)$danda?);"
+
+                // a number is a sequence of digits that may contain internal
+                // punctuation, as long as it begins and ends with a digit and
+                // never contains two punctuation marks in a row.
+                + "$number=($dgt+($mid_num$dgt+)*);"
+
+                + "$thai_etc=($paiyannoi\u0e25$paiyannoi);"
+
+
+                // break after every character, with the following exceptions
+                // (this will cause punctuation marks that aren't considered
+                // part of words or numbers to be treated as words unto themselves)
+                + ".;"
+
+                // keep together any sequence of contiguous words and numbers
+                // (including just one of either), plus an optional trailing
+                // number-suffix character
+                + "$word?($number$word)*($number$post_num?)?;"
+                + "$pre_num($number$word)*($number$post_num?)?;"
+
+                //+ "$_dictionary_+($paiyannoi$maiyamok?)?;"
+                + "$_dictionary_+($paiyannoi?$maiyamok)?;"
+
+                + "$_dictionary_+$paiyannoi/([^\u0e25$maiyamok$_ignore_]"
+                        + "|\u0e25[^$paiyannoi$_ignore_]);"
+
+                + "$thai_etc;"
+
+                // keep together runs of whitespace (optionally with a single trailing
+                // line separator or CRLF sequence)
+                + "$ws*\r?$ls?;"
+
+                // keep together runs of Katakana
+                + "[$kata$cjk_diacrit]*;"
+
+                // keep together runs of Hiragana
+                + "[$hira$cjk_diacrit]*;"
+
+                // keep together runs of Kanji
+                + "$kanji*;"
+            },
+
+            { "LineBreakRules",
+                "$_dictionary_=[\u0e01-\u0e2e\u0e30-\u0e3a\u0e40-\u0e44\u0e47-\u0e4e];" // this rule breaks the iterator with mixed Thai and English
+
+                // Surrogates.  Until better support is available, ignore low surrogates
+                //              and classify high surrogates according to the characters within the block.
+                + "$surr_lo=[\udc00-\udfff];"
+                + "$surr_hi_let=[\ud800\ud801\ud834\ud835];"   // Hi Surrogates for Old Italic, Gothic, Deseret, Music, Math
+                + "$surr_hi_ideo=[\ud840-\ud880];"             // Hi Surrogates for CJK
+                + "$surr_hi_tag=[\udb40];"                     // Hi Surrogates for Tags
+                + "$surr_hi_pua=[\udb80-\udbff];"              // Hi Surrogates for Private Use.
+
+                // Private Use Area.  Treat like ideographs.
+                + "$pua=[\ue000-\uf8ff$surr_hi_pua];"
+
+                // ignore non-spacing marks, enclosing marks, and format characters
+                + "$_ignore_=[[[:Mn:][:Me:][:Cf:]$surr_lo$surr_hi_tag]-[$_dictionary_]];"
+
+                // Hindi phrase separators
+                + "$danda=[\u0964\u0965];"
+
+                // characters that always cause a break: ETX, tab, LF, FF, LS, and PS
+                + "$break=[\u0003\t\n\f\u2028\u2029];"
+
+                // characters that always prevent a break: the non-breaking space
+                // and similar characters
+                + "$nbsp=[\u00a0\u2007\u2011\ufeff];"
+
+                // whitespace: space separators and control characters, except for
+                // CR and the other characters mentioned above
+                + "$space=[[[:Zs:][:Cc:]]-[$nbsp$break\r]];"
+
+                // dashes: dash punctuation and the discretionary hyphen, except for
+                // non-breaking hyphens
+                + "$dash=[[[:Pd:]\u00ad]-$nbsp];"
+
+                + "$paiyannoi=[\u0e2f];"
+                + "$maiyamok=[\u0e46];"
+                + "$thai_etc=($paiyannoi\u0e25$paiyannoi);"
+
+                // characters that stick to a word if they precede it: currency symbols
+                // (except the cents sign) and starting punctuation
+                + "$pre_word=[[[:Sc:]-[\u00a2]][:Ps:][:Pi:]\\\"];"
+
+                // characters that stick to a word if they follow it: ending punctuation,
+                // other punctuation that usually occurs at the end of a sentence,
+                // small Kana characters, some CJK diacritics, etc.
+                + "$post_word=[[:Pe:][:Pf:]\\!\\%\\.\\,\\:\\;\\?\\\"\u00a2\u00b0\u066a\u2030-\u2034\u2103"
+                        + "\u2105\u2109\u3001\u3002\u3005\u3041\u3043\u3045\u3047\u3049\u3063"
+                        + "\u3083\u3085\u3087\u308e\u3099-\u309e\u30a1\u30a3\u30a5\u30a7\u30a9"
+                        + "\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u30fc-\u30fe\uff01\uff0e"
+                        + "\uff1f$maiyamok];"
+
+                // Kanji: actually includes both Kanji and Kana, except for small Kana and
+                // CJK diacritics
+                + "$kanji=[[$surr_hi_ideo$pua\u4e00-\u9fa5\uf900-\ufa2d\u3041-\u3094\u30a1-\u30fa]-[$post_word$_ignore_]];"
+
+                // digits
+                + "$digit=[[:Nd:][:No:]];"
+
+                // punctuation that can occur in the middle of a number: periods and commas
+                + "$mid_num=[\\.\\,];"
+
+                // everything not mentioned above, plus the quote marks (which are both
+                // <pre-word>, <post-word>, and <char>)
+                + "$char=[^$break$space$dash$kanji$nbsp$_ignore_$pre_word$post_word"
+                        + "$mid_num\r$danda$_dictionary_$paiyannoi$maiyamok];"
+
+                // a "number" is a run of prefix characters and dashes, followed by one or
+                // more digits with isolated number-punctuation characters interspersed
+                + "$number=([$pre_word$dash]*$digit+($mid_num$digit+)*);"
+
+                // the basic core of a word can be either a "number" as defined above, a single
+                // "Kanji" character, or a run of any number of not-explicitly-mentioned
+                // characters (this includes Latin letters)
+                + "$word_core=($char*|$kanji|$number|$_dictionary_+|$thai_etc);"
+
+                // a word may end with an optional suffix that be either a run of one or
+                // more dashes or a run of word-suffix characters, followed by an optional
+                // run of whitespace
+                + "$word_suffix=(($dash+|$post_word*)$space*);"
+
+                // a word, thus, is an optional run of word-prefix characters, followed by
+                // a word core and a word suffix (the syntax of <word-core> and <word-suffix>
+                // actually allows either of them to match the empty string, putting a break
+                // between things like ")(" or "aaa(aaa"
+                + "$word=($pre_word*$word_core$word_suffix);"
+
+                // finally, the rule that does the work: Keep together any run of words that
+                // are joined by runs of one of more non-spacing mark.  Also keep a trailing
+                // line-break character or CRLF combination with the word.  (line separators
+                // "win" over nbsp's)
+                + "$word($nbsp+$word)*(\r?$break?|$paiyannoi\r$break|$paiyannoi$break)?;"
+                + "$word($nbsp+$word)*$paiyannoi/([^[\u0e25$_ignore_]]|"
+                        + "\u0e25[^$paiyannoi$_ignore_]);"
+            },
+
+            { "WordBreakDictionary", url },
+            { "LineBreakDictionary", url }
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/BuddhistCalendarSymbols.java b/src/com/ibm/icu/impl/data/BuddhistCalendarSymbols.java
new file mode 100755
index 0000000..25512bd
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/BuddhistCalendarSymbols.java
@@ -0,0 +1,33 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/BuddhistCalendarSymbols.java,v $ 
+ * $Date: 2002/02/16 03:05:39 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default Date Format symbols for the Buddhist Calendar
+ */
+public class BuddhistCalendarSymbols extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "Eras", new String[] {
+                "BE"
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/BuddhistCalendarSymbols_ar.java b/src/com/ibm/icu/impl/data/BuddhistCalendarSymbols_ar.java
new file mode 100755
index 0000000..e48ceac
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/BuddhistCalendarSymbols_ar.java
@@ -0,0 +1,33 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/BuddhistCalendarSymbols_ar.java,v $ 
+ * $Date: 2002/02/16 03:05:39 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default Date Format symbols for the Buddhist Calendar
+ */
+public class BuddhistCalendarSymbols_ar extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1999 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "Eras", new String[] {
+                "\u0627\u0644\u062A\u0642\u0648\u064A\u0645 \u0627\u0644\u0628\u0648\u0630\u064A"
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/BuddhistCalendarSymbols_hu.java b/src/com/ibm/icu/impl/data/BuddhistCalendarSymbols_hu.java
new file mode 100755
index 0000000..8a73df4
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/BuddhistCalendarSymbols_hu.java
@@ -0,0 +1,33 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/BuddhistCalendarSymbols_hu.java,v $ 
+ * $Date: 2002/02/16 03:05:39 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Hungarian Date Format symbols for the Buddhist Calendar
+ */
+public class BuddhistCalendarSymbols_hu extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "Eras", new String[] {
+                "BK"
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/BuddhistCalendarSymbols_th.java b/src/com/ibm/icu/impl/data/BuddhistCalendarSymbols_th.java
new file mode 100755
index 0000000..65269bf
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/BuddhistCalendarSymbols_th.java
@@ -0,0 +1,33 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/BuddhistCalendarSymbols_th.java,v $ 
+ * $Date: 2002/02/16 03:05:39 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Thai version of the Date Format symbols for the Buddhist calendar
+ */
+public class BuddhistCalendarSymbols_th extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "Eras", new String[] {
+                "\u0e1e.\u0e28."
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/CalendarData.java b/src/com/ibm/icu/impl/data/CalendarData.java
new file mode 100755
index 0000000..8dcea4a
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/CalendarData.java
@@ -0,0 +1,32 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/CalendarData.java,v $
+ * $Date: 2002/08/13 23:36:19 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+// Default
+public class CalendarData extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Weekend",
+                new String[] { // Saturday:Sunday
+                    "7", "0", // onset dow, millis in day
+                    "2", "0"  // cease dow, millis in day
+                }
+            },
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/CalendarData_ar_AE.java b/src/com/ibm/icu/impl/data/CalendarData_ar_AE.java
new file mode 100755
index 0000000..7d26c82
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/CalendarData_ar_AE.java
@@ -0,0 +1,32 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/CalendarData_ar_AE.java,v $
+ * $Date: 2002/08/13 23:36:19 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+// Arabic, United Arab Emirates
+public class CalendarData_ar_AE extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Weekend",
+                new String[] { // Thursday:Friday
+                    "5", "0", // onset dow, millis in day
+                    "7", "0"  // cease dow, millis in day
+                }
+            },
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/CalendarData_ar_BH.java b/src/com/ibm/icu/impl/data/CalendarData_ar_BH.java
new file mode 100755
index 0000000..7512233
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/CalendarData_ar_BH.java
@@ -0,0 +1,32 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/CalendarData_ar_BH.java,v $
+ * $Date: 2002/08/13 23:36:19 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+// Arabic, Bahrain
+public class CalendarData_ar_BH extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Weekend",
+                new String[] { // Thursday:Friday
+                    "5", "0", // onset dow, millis in day
+                    "7", "0"  // cease dow, millis in day
+                }
+            },
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/CalendarData_ar_DZ.java b/src/com/ibm/icu/impl/data/CalendarData_ar_DZ.java
new file mode 100755
index 0000000..141795f
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/CalendarData_ar_DZ.java
@@ -0,0 +1,32 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/CalendarData_ar_DZ.java,v $
+ * $Date: 2002/08/13 23:36:19 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+// Arabic, Algeria
+public class CalendarData_ar_DZ extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Weekend",
+                new String[] { // Thursday:Friday
+                    "5", "0", // onset dow, millis in day
+                    "7", "0"  // cease dow, millis in day
+                }
+            },
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/CalendarData_ar_EG.java b/src/com/ibm/icu/impl/data/CalendarData_ar_EG.java
new file mode 100755
index 0000000..20ce89e
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/CalendarData_ar_EG.java
@@ -0,0 +1,32 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/CalendarData_ar_EG.java,v $
+ * $Date: 2002/08/13 23:36:19 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+// Arabic, Egypt
+public class CalendarData_ar_EG extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Weekend",
+                new String[] { // Friday:Saturday
+                    "6", "0", // onset dow, millis in day
+                    "1", "0"  // cease dow, millis in day
+                }
+            },
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/CalendarData_ar_JO.java b/src/com/ibm/icu/impl/data/CalendarData_ar_JO.java
new file mode 100755
index 0000000..61571a7
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/CalendarData_ar_JO.java
@@ -0,0 +1,32 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/CalendarData_ar_JO.java,v $
+ * $Date: 2002/08/13 23:36:19 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+// Arabic, Jordan
+public class CalendarData_ar_JO extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Weekend",
+                new String[] { // Thursday:Friday
+                    "5", "0", // onset dow, millis in day
+                    "7", "0"  // cease dow, millis in day
+                }
+            },
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/CalendarData_ar_KW.java b/src/com/ibm/icu/impl/data/CalendarData_ar_KW.java
new file mode 100755
index 0000000..c050b44
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/CalendarData_ar_KW.java
@@ -0,0 +1,32 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/CalendarData_ar_KW.java,v $
+ * $Date: 2002/08/13 23:36:19 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+// Arabic, Kuwait
+public class CalendarData_ar_KW extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Weekend",
+                new String[] { // Thursday:Friday
+                    "5", "0", // onset dow, millis in day
+                    "7", "0"  // cease dow, millis in day
+                }
+            },
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/CalendarData_ar_OM.java b/src/com/ibm/icu/impl/data/CalendarData_ar_OM.java
new file mode 100755
index 0000000..fd677ac
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/CalendarData_ar_OM.java
@@ -0,0 +1,32 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/CalendarData_ar_OM.java,v $
+ * $Date: 2002/08/13 23:36:19 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+// Arabic, Oman
+public class CalendarData_ar_OM extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Weekend",
+                new String[] { // Thursday:Friday
+                    "5", "0", // onset dow, millis in day
+                    "7", "0"  // cease dow, millis in day
+                }
+            },
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/CalendarData_ar_QA.java b/src/com/ibm/icu/impl/data/CalendarData_ar_QA.java
new file mode 100755
index 0000000..8dd4ddd
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/CalendarData_ar_QA.java
@@ -0,0 +1,32 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/CalendarData_ar_QA.java,v $
+ * $Date: 2002/08/13 23:36:19 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+// Arabic, Qatar
+public class CalendarData_ar_QA extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Weekend",
+                new String[] { // Thursday:Friday
+                    "5", "0", // onset dow, millis in day
+                    "7", "0"  // cease dow, millis in day
+                }
+            },
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/CalendarData_ar_SA.java b/src/com/ibm/icu/impl/data/CalendarData_ar_SA.java
new file mode 100755
index 0000000..23a9164
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/CalendarData_ar_SA.java
@@ -0,0 +1,32 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/CalendarData_ar_SA.java,v $
+ * $Date: 2002/08/13 23:36:19 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+// Arabic, Saudi Arabia
+public class CalendarData_ar_SA extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Weekend",
+                new String[] { // Thursday:Friday
+                    "5", "0", // onset dow, millis in day
+                    "7", "0"  // cease dow, millis in day
+                }
+            },
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/CalendarData_ar_SY.java b/src/com/ibm/icu/impl/data/CalendarData_ar_SY.java
new file mode 100755
index 0000000..4af1942
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/CalendarData_ar_SY.java
@@ -0,0 +1,32 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/CalendarData_ar_SY.java,v $
+ * $Date: 2002/08/13 23:36:19 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+// Arabic, Syria
+public class CalendarData_ar_SY extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Weekend",
+                new String[] { // Friday:Saturday
+                    "6", "0", // onset dow, millis in day
+                    "1", "0"  // cease dow, millis in day
+                }
+            },
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/CalendarData_ar_YE.java b/src/com/ibm/icu/impl/data/CalendarData_ar_YE.java
new file mode 100755
index 0000000..a31f51e
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/CalendarData_ar_YE.java
@@ -0,0 +1,32 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/CalendarData_ar_YE.java,v $
+ * $Date: 2002/08/13 23:36:19 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+// Arabic, Yemen
+public class CalendarData_ar_YE extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Weekend",
+                new String[] { // Thursday:Friday
+                    "5", "0", // onset dow, millis in day
+                    "7", "0"  // cease dow, millis in day
+                }
+            },
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/CalendarData_iw_IL.java b/src/com/ibm/icu/impl/data/CalendarData_iw_IL.java
new file mode 100755
index 0000000..ee2bd29
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/CalendarData_iw_IL.java
@@ -0,0 +1,32 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/CalendarData_iw_IL.java,v $
+ * $Date: 2002/08/13 23:36:19 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+// Hebrew, Israel
+public class CalendarData_iw_IL extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Weekend",
+                new String[] { // Friday:Saturday
+                    "6", "0", // onset dow, millis in day
+                    "1", "0"  // cease dow, millis in day
+                }
+            },
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/CalendarData_ms_MY.java b/src/com/ibm/icu/impl/data/CalendarData_ms_MY.java
new file mode 100755
index 0000000..a50b7ab
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/CalendarData_ms_MY.java
@@ -0,0 +1,32 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/CalendarData_ms_MY.java,v $
+ * $Date: 2002/08/13 23:36:19 $
+ * $Revision: 1.4 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+// Bahasa Malaysia, Malaysia
+public class CalendarData_ms_MY extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Weekend",
+                new String[] { // Saturday - half day in some offices:Sunday
+                    "0", "0", // onset dow, millis in day
+                    "0", "0"  // cease dow, millis in day
+                }
+            },
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/CalendarData_te_IN.java b/src/com/ibm/icu/impl/data/CalendarData_te_IN.java
new file mode 100755
index 0000000..5e5b5a9
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/CalendarData_te_IN.java
@@ -0,0 +1,32 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/CalendarData_te_IN.java,v $
+ * $Date: 2002/08/13 23:36:19 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+// Telugu, India
+public class CalendarData_te_IN extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Weekend",
+                new String[] { // Sunday
+                    "1", "0", // onset dow, millis in day
+                    "2", "0"  // cease dow, millis in day
+                }
+            },
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/ChineseCalendarSymbols.java b/src/com/ibm/icu/impl/data/ChineseCalendarSymbols.java
new file mode 100755
index 0000000..1766b36
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/ChineseCalendarSymbols.java
@@ -0,0 +1,48 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/ChineseCalendarSymbols.java,v $
+ * $Date: 2002/08/13 23:37:48 $
+ * $Revision: 1.6 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default Date Format symbols for the Chinese calendar.
+ */
+public class ChineseCalendarSymbols extends ListResourceBundle {
+
+    static final Object[][] fContents = {
+        { "IsLeapMonth",
+            new String[] {
+                "",
+                "*"
+            },
+        },
+        { "DateTimePatterns",
+            new String[] {
+                "h:mm:ss a z", // full time pattern
+                "h:mm:ss a z", // long time pattern
+                "h:mm:ss a", // medium time pattern
+                "h:mm a", // short time pattern
+                // TODO Fix the following
+                "EEEE y'x'G-Ml-d", // full date pattern
+                "y'x'G-Ml-d", // long date pattern
+                "y'x'G-Ml-d", // medium date pattern
+                "y'x'G-Ml-d", // short date pattern
+                "{1} {0}" // date-time pattern
+            }
+        },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/HebrewCalendarSymbols.java b/src/com/ibm/icu/impl/data/HebrewCalendarSymbols.java
new file mode 100755
index 0000000..f60c1a3
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HebrewCalendarSymbols.java
@@ -0,0 +1,48 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/HebrewCalendarSymbols.java,v $ 
+ * $Date: 2002/02/16 03:05:43 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default Date Format symbols for the Hebrew Calendar
+ */
+public class HebrewCalendarSymbols extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] { 
+                "Tishri",
+                "Heshvan",
+                "Kislev",
+                "Tevet",
+                "Shevat",
+                "Adar I",       // Leap years only
+                "Adar",
+                "Nisan",
+                "Iyar",
+                "Sivan",
+                "Tamuz",
+                "Av",
+                "Elul",
+            } },
+        { "Eras", new String[] { 
+                "AM"
+            } },
+    };
+        
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/HebrewCalendarSymbols_fi.java b/src/com/ibm/icu/impl/data/HebrewCalendarSymbols_fi.java
new file mode 100755
index 0000000..4f5dcff
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HebrewCalendarSymbols_fi.java
@@ -0,0 +1,51 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/HebrewCalendarSymbols_fi.java,v $ 
+ * $Date: 2002/02/16 03:05:43 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Finnish date format symbols for the Hebrew Calendar
+ */
+public class HebrewCalendarSymbols_fi extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "Name",       "Juutalainen kalenteri" },
+        
+        { "MonthNames", new String[] {
+                "Ti\u0161r\u00ECkuu",       // Tishri
+                "He\u0161v\u00E1nkuu",      // Heshvan
+                "Kisl\u00E9vkuu",           // Kislev
+                "Tev\u00E9tkuu",            // Tevet
+                "\u0160evatkuu",            // Shevat
+                "Ad\u00E1rkuu",             // Adar I
+                "Ad\u00E1rkuu II",          // Adar
+                "Nis\u00E1nkuu",            // Nisan
+                "Ijj\u00E1rkuu",            // Iyar
+                "Siv\u00E1nkuu",            // Sivan
+                "Tamm\u00FAzkuu",           // Tamuz
+                "Abkuu",                    // Av
+                "El\u00FAlkuu",             // Elul
+            } },
+
+        { "Eras", new String[] { 
+                "AM"                        // Anno Mundi
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/HebrewCalendarSymbols_fr.java b/src/com/ibm/icu/impl/data/HebrewCalendarSymbols_fr.java
new file mode 100755
index 0000000..a1024bf
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HebrewCalendarSymbols_fr.java
@@ -0,0 +1,48 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/HebrewCalendarSymbols_fr.java,v $ 
+ * $Date: 2002/02/16 03:05:43 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * French date format symbols for the Hebrew Calendar.
+ * This data actually applies to French Canadian.  If we receive
+ * official French data from our France office, we should move the 
+ * French Canadian data (if it's different) down into _fr_CA
+ */
+public class HebrewCalendarSymbols_fr extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] {
+                "Tisseri",      // Tishri
+                "Hesvan",       // Heshvan
+                "Kislev",       // Kislev
+                "T\u00e9beth",  // Tevet
+                "Sch\u00e9bat", // Shevat
+                "Adar",         // Adar I
+                "Adar II",      // Adar
+                "Nissan",       // Nisan
+                "Iyar",         // Iyar
+                "Sivan",        // Sivan
+                "Tamouz",       // Tamuz
+                "Ab",           // Av
+                "Elloul",       // Elul
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/HebrewCalendarSymbols_hu.java b/src/com/ibm/icu/impl/data/HebrewCalendarSymbols_hu.java
new file mode 100755
index 0000000..3654f1e
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HebrewCalendarSymbols_hu.java
@@ -0,0 +1,48 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/HebrewCalendarSymbols_hu.java,v $ 
+ * $Date: 2002/02/16 03:05:43 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Hungarian date format symbols for the Hebrew Calendar
+ */
+public class HebrewCalendarSymbols_hu extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] {
+                "Tisri",                        // Tishri
+                "Hesv\u00E1n",                  // Heshvan
+                "Kiszl\u00E9v",                 // Kislev
+                "T\u00E9v\u00E9sz",             // Tevet
+                "Sv\u00E1t",                    // Shevat
+                "\u00C1d\u00E1r ris\u00F3n",    // Adar I
+                "\u00C1d\u00E1r s\u00E9ni",     // Adar
+                "Nisz\u00E1n",                  // Nisan
+                "Ij\u00E1r",                    // Iyar
+                "Sziv\u00E1n",                  // Sivan
+                "Tamuz",                        // Tamuz
+                "\u00C1v",                      // Av
+                "Elul",                         // Elul
+            } },
+        { "Eras", new String[] {
+                "T\u00C9"
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/HebrewCalendarSymbols_iw.java b/src/com/ibm/icu/impl/data/HebrewCalendarSymbols_iw.java
new file mode 100755
index 0000000..8b45287
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HebrewCalendarSymbols_iw.java
@@ -0,0 +1,48 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/HebrewCalendarSymbols_iw.java,v $ 
+ * $Date: 2002/02/16 03:05:43 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Hebrew-language date format symbols for the Hebrew Calendar
+ */
+public class HebrewCalendarSymbols_iw extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] { 
+                "\u05EA\u05E9\u05E8\u05D9",                 // Tishri
+                "\u05D7\u05E9\u05D5\u05DF",                 // Heshvan
+                "\u05DB\u05E1\u05DC\u05D5",                 // Kislev
+                "\u05D8\u05D1\u05EA",                       // Tevet
+                "\u05E9\u05D1\u05D8",                       // Shevat
+                "\u05E9\u05D1\u05D8",                       // Adar I
+                "\u05D0\u05D3\u05E8 \u05E9\u05E0\u05D9",    // Adar
+                "\u05E0\u05D9\u05E1\u05DF",                 // Nisan
+                "\u05D0\u05D9\u05D9\u05E8",                 // Iyar
+                "\u05E1\u05D9\u05D5\u05DF",                 // Sivan
+                "\u05EA\u05DE\u05D5\u05D6",                 // Tamuz
+                "\u05D0\u05D1",                             // Av
+                "\u05D0\u05DC\u05D5\u05DC",                 // Elul
+            } },
+        { "Eras", new String[] { 
+                "\u05DC\u05D1\u05D4\042\u05E2"
+            } },
+    };
+        
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/HebrewCalendarSymbols_nl.java b/src/com/ibm/icu/impl/data/HebrewCalendarSymbols_nl.java
new file mode 100755
index 0000000..e2c5cd6
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HebrewCalendarSymbols_nl.java
@@ -0,0 +1,45 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/HebrewCalendarSymbols_nl.java,v $ 
+ * $Date: 2002/02/16 03:05:44 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Dutch date format symbols for the Hebrew Calendar
+ */
+public class HebrewCalendarSymbols_nl extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] {
+                "Tisjrie",      // Tishri
+                "Chesjwan",     // Heshvan
+                "Kislev",       // Kislev
+                "Tevet",        // Tevet
+                "Sjevat",       // Shevat
+                "Adar",         // Adar I
+                "Adar B",       // Adar
+                "Nisan",        // Nisan
+                "Ijar",         // Iyar
+                "Sivan",        // Sivan
+                "Tammoez",      // Tamuz
+                "Av",           // Av
+                "Elloel",       // Elul
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle.java b/src/com/ibm/icu/impl/data/HolidayBundle.java
new file mode 100755
index 0000000..a891396
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle.java
@@ -0,0 +1,35 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle.java,v $ 
+ * $Date: 2002/02/16 03:05:44 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle extends ListResourceBundle {
+
+    // Normally, each HolidayBundle uses the holiday's US English name
+    // as the string key for looking up the localized name.  This means
+    // that the key itself can be used if no name is found for the requested
+    // locale.
+    //
+    // For holidays where the key is _not_ the English name, e.g. in the
+    // case of conflicts, the English name must be given here.
+    //
+    static private final Object[][] fContents = {
+        {   "", ""  },      // Can't be empty!
+    };
+
+    public synchronized Object[][] getContents() { return fContents; };
+
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_da.java b/src/com/ibm/icu/impl/data/HolidayBundle_da.java
new file mode 100755
index 0000000..6a61ebf
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_da.java
@@ -0,0 +1,38 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_da.java,v $ 
+ * $Date: 2002/02/16 03:05:44 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_da extends ListResourceBundle
+{
+    static private final Object[][] fContents =
+    {
+        {   "Armistice Day",        "v\u00e5benhvile" },
+        {   "Ascension",            "himmelfart" },
+        {   "Boxing Day",           "anden juledag" },
+        {   "Christmas Eve",        "juleaften" },
+        {   "Easter",               "p\u00e5ske" },
+        {   "Epiphany",             "helligtrekongersdag" },
+        {   "Good Friday",          "langfredag" },
+        {   "Halloween",            "allehelgensaften" },
+        {   "Maundy Thursday",      "sk\u00e6rtorsdag" },
+        {   "Palm Sunday",          "palmes\u00f8ndag" },
+        {   "Pentecost",            "pinse" },
+        {   "Shrove Tuesday",       "hvidetirsdag" },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_da_DK.java b/src/com/ibm/icu/impl/data/HolidayBundle_da_DK.java
new file mode 100755
index 0000000..9ebc0bd
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_da_DK.java
@@ -0,0 +1,44 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_da_DK.java,v $ 
+ * $Date: 2002/02/16 03:05:44 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_da_DK extends ListResourceBundle
+{
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.APRIL,   30, -Calendar.FRIDAY, "General Prayer Day"),
+        new SimpleHoliday(Calendar.JUNE,    5,                    "Constitution Day"),
+        SimpleHoliday.CHRISTMAS_EVE,
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+        SimpleHoliday.NEW_YEARS_EVE,
+
+        // Easter and related holidays
+        EasterHoliday.MAUNDY_THURSDAY,
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+        EasterHoliday.ASCENSION,
+        EasterHoliday.WHIT_MONDAY,
+    };
+
+    static private final Object[][] fContents = {
+        {   "holidays",             fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_de.java b/src/com/ibm/icu/impl/data/HolidayBundle_de.java
new file mode 100755
index 0000000..8358c31
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_de.java
@@ -0,0 +1,73 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_de.java,v $ 
+ * $Date: 2002/02/16 03:05:44 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_de extends ListResourceBundle {
+    static private final Object[][] fContents = {
+        {   "All Saints' Day",              "Allerheiligen" },
+        {   "All Souls' Day",               "Allerseelen" },
+        {   "Armistice Day",                "Waffenstillstandstag" },
+        {   "Ascension",                    "Christi Himmelfahrt" },
+        {   "Ash Wednesday",                "Aschermittwoch" },
+        {   "Assumption",                   "Mari\u00e4 Himmelfahrt" },
+        {   "Boxing Day",                   "2. Weihnachtstag" },
+        {   "Carnival",                     "Karneval" },
+        {   "Christmas",                    "Weihnachtstag" },
+        {   "Civic Holiday",                "B\u00fcrgerfeiertag" },
+        {   "Constitution Day",             "Verfassungstag" },
+        {   "Corpus Christi",               "Fronleichnam" },
+        {   "Day of Prayer and Repentance", "Bu\u00df- und Bettag" },
+        {   "Easter Monday",                "Ostermonntag" },
+        {   "Easter Sunday",                "Ostersonntag" },
+        {   "Epiphany",                     "Heilige 3 K\u00f6nige" },
+        {   "Father's Day",                 "Vatertag" },
+        {   "Flag Day",                     "Jahrestag der Nationalflagge" },
+        {   "German Unity Day",             "Tag der deutschen Einheit" },
+        {   "Good Friday",                  "Karfreitag" },
+        {   "Halloween",                    "Abend vor Allerheiligen" },
+        {   "Immaculate Conception",        "Mari\u00e4 Empf\u00e4ngnis" },
+        {   "Independence Day",             "Unabh\u00e4ngigkeitstag" },
+        {   "Labor Day",                    "Tag der Arbeit" },
+        {   "Liberation Day",               "Befreiungstag" },
+        {   "Mardi Gras",                   "Faschingsdienstag" },
+        {   "Maundy Thursday",              "Gr\u00fcndonnerstag" },
+        {   "May Day",                      "Maifeiertag" },
+        {   "Memorial Day",                 "Tag des Gedenkens" },
+        {   "Mother's Day",                 "Muttertag" },
+        {   "National Holiday",             "Nationalfeiertag" },
+        {   "New Year's Day",               "Neujahr" },
+        {   "New Year's Eve",               "Silvesterabend" },
+        {   "Palm Sunday",                  "Palmsonntag" },
+        {   "Pentecost",                    "Pfingsten" },
+        {   "Presidents' Day",              "Pr\u00e4sidentstag" },
+        {   "Remembrance Day",              "Volkstrauertag" },
+        {   "Revolution Day",               "Jahrestag der Revolution" },
+        {   "Rose Monday",                  "Rosenmontag" },
+        {   "St. Stephen's Day",            "Stephanitag" },
+        {   "Shrove Tuesday",               "Faschingsdienstag" },
+        {   "Spring Holiday",               "Tag des Fr\u00fchlings" },
+        {   "Summer Bank Holiday",          "Bankfeiertag" },
+        {   "Thanksgiving",                 "Dankfest" },
+        {   "Unity Day",                    "Einheitstag" },
+        {   "Veterans' Day",                "Veteranstag" },
+        {   "Victory Day",                  "Tag der Befreiung" },
+        {   "Washington's Birthday",        "Washingtons Geburtstag" },
+        {   "Whit Monday",                  "Pfingstmontag" },
+        {   "Whit Sunday",                  "Pfingstsonntag" },
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_de_AT.java b/src/com/ibm/icu/impl/data/HolidayBundle_de_AT.java
new file mode 100755
index 0000000..bcf6377
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_de_AT.java
@@ -0,0 +1,49 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_de_AT.java,v $ 
+ * $Date: 2002/02/16 03:05:45 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_de_AT extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.EPIPHANY,
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+        EasterHoliday.ASCENSION,
+        EasterHoliday.WHIT_SUNDAY,
+        EasterHoliday.WHIT_MONDAY,
+        EasterHoliday.CORPUS_CHRISTI,
+        SimpleHoliday.ASSUMPTION,
+        SimpleHoliday.ALL_SAINTS_DAY,
+        SimpleHoliday.IMMACULATE_CONCEPTION,
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.ST_STEPHENS_DAY,
+
+        new SimpleHoliday(Calendar.MAY,        1,  0,               "National Holiday"),
+        new SimpleHoliday(Calendar.OCTOBER,   31, -Calendar.MONDAY, "National Holiday"),
+    };
+
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+
+        // Only holidays names different from those used in Germany are listed here
+        {   "Christmas",        "Christtag" },
+        {   "New Year's Day",   "Neujahrstag" },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_de_DE.java b/src/com/ibm/icu/impl/data/HolidayBundle_de_DE.java
new file mode 100755
index 0000000..17849eb
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_de_DE.java
@@ -0,0 +1,44 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_de_DE.java,v $ 
+ * $Date: 2002/02/16 03:05:45 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_de_DE extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.MAY_DAY,
+        new SimpleHoliday(Calendar.JUNE,      15,  Calendar.WEDNESDAY,  "Memorial Day"),
+        new SimpleHoliday(Calendar.OCTOBER,    3,  0,                   "Unity Day"),
+        SimpleHoliday.ALL_SAINTS_DAY,
+        new SimpleHoliday(Calendar.NOVEMBER,  18,  0,                   "Day of Prayer and Repentance"),
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+
+        // Easter and related holidays
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+        EasterHoliday.ASCENSION,
+        EasterHoliday.WHIT_SUNDAY,
+        EasterHoliday.WHIT_MONDAY,
+    };
+
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_el.java b/src/com/ibm/icu/impl/data/HolidayBundle_el.java
new file mode 100755
index 0000000..3bc56f9
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_el.java
@@ -0,0 +1,37 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_el.java,v $ 
+ * $Date: 2002/02/16 03:05:45 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_el extends ListResourceBundle {
+    static private final Object[][] fContents =
+    {
+        {   "Assumption",           "15 \u0391\u03cd\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5" },
+        {   "Boxing Day",           "\u0394\u03b5\u03cd\u03c4\u03b5\u03c1\u03b7 \u03bc\u03ad\u03c1\u03b1 \u03c4\u03ce\u03bd \u03a7\u03c1\u03b9\u03c3\u03c4\u03bf\u03c5\u03b3\u03ad\u03bd\u03bd\u03c9\u03bd" },
+        {   "Christmas",            "\u03a7\u03c1\u03b9\u03c3\u03c4\u03bf\u03cd\u03b3\u03b5\u03bd\u03bd\u03b1" },
+        {   "Clean Monday",         "\u039a\u03b1\u03b8\u03b1\u03c1\u03ae \u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1" },
+        {   "Easter Monday",        "\u0394\u03b5\u03cd\u03c4\u03b5\u03c1\u03b7 \u03bc\u03ad\u03c1\u03b1 \u03c4\u03bf\u03cd \u03a0\u03ac\u03c3\u03c7\u03b1" },
+        {   "Epiphany",             "\u0388\u03c0\u03b9\u03c6\u03ac\u03bd\u03b5\u03b9\u03b1" },
+        {   "Good Friday",          "\u039c\u03b5\u03b3\u03ac\u03bb\u03b7 \u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae" },
+        {   "May Day",              "\u03a0\u03c1\u03c9\u03c4\u03bf\u03bc\u03b1\u03b3\u03b9\u03ac" },
+        {   "New Year's Day",       "\u03a0\u03c1\u03c9\u03c4\u03bf\u03c7\u03c1\u03bf\u03bd\u03b9\u03ac" },
+        {   "Ochi Day",             "28 \u038c\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5" },
+        {   "Whit Monday",          "\u0394\u03b5\u03cd\u03c4\u03b5\u03c1\u03b7 \u03bc\u03ad\u03c1\u03b1 \u03c4\u03bf\u03cd \u03a0\u03b5\u03bd\u03c4\u03b7\u03ba\u03bf\u03c3\u03c4\u03ae" },
+
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_el_GR.java b/src/com/ibm/icu/impl/data/HolidayBundle_el_GR.java
new file mode 100755
index 0000000..9aac83c
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_el_GR.java
@@ -0,0 +1,45 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_el_GR.java,v $ 
+ * $Date: 2002/02/16 03:05:45 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_el_GR extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.EPIPHANY,
+
+        new SimpleHoliday(Calendar.MARCH,     25,  0,    "Independence Day"),
+
+        SimpleHoliday.MAY_DAY,
+        SimpleHoliday.ASSUMPTION,
+
+        new SimpleHoliday(Calendar.OCTOBER,   28,  0,    "Ochi Day"),
+
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+
+        // Easter and related holidays in the Orthodox calendar
+        new EasterHoliday(-2,   true, "Good Friday"),
+        new EasterHoliday( 0,   true, "Easter Sunday"),
+        new EasterHoliday( 1,   true, "Easter Monday"),
+        new EasterHoliday(50,   true, "Whit Monday"),
+    };
+    static private final Object[][] fContents = {
+        {   "holidays",         fHolidays   },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_en.java b/src/com/ibm/icu/impl/data/HolidayBundle_en.java
new file mode 100755
index 0000000..72f45c3
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_en.java
@@ -0,0 +1,35 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_en.java,v $ 
+ * $Date: 2002/02/16 03:05:45 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_en extends ListResourceBundle {
+
+    // Normally, each HolidayBundle uses the holiday's US English name
+    // as the string key for looking up the localized name.  This means
+    // that the key itself can be used if no name is found for the requested
+    // locale.
+    //
+    // For holidays where the key is _not_ the English name, e.g. in the
+    // case of conflicts, the English name must be given here.
+    //
+    static private final Object[][] fContents = {
+        {   "", ""  },      // Can't be empty!
+    };
+
+    public synchronized Object[][] getContents() { return fContents; };
+
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_en_CA.java b/src/com/ibm/icu/impl/data/HolidayBundle_en_CA.java
new file mode 100755
index 0000000..e748c81
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_en_CA.java
@@ -0,0 +1,46 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_en_CA.java,v $ 
+ * $Date: 2002/02/16 03:05:46 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_en_CA extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.MAY,       19, 0,                  "Victoria Day"),
+        new SimpleHoliday(Calendar.JULY,       1, 0,                  "Canada Day"),
+        new SimpleHoliday(Calendar.AUGUST,     1, Calendar.MONDAY,    "Civic Holiday"),
+        new SimpleHoliday(Calendar.SEPTEMBER,  1, Calendar.MONDAY,    "Labor Day"),
+        new SimpleHoliday(Calendar.OCTOBER,    8, Calendar.MONDAY,    "Thanksgiving"),
+        new SimpleHoliday(Calendar.NOVEMBER,  11, 0,                  "Remembrance Day"),
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+        SimpleHoliday.NEW_YEARS_EVE,
+
+        // Easter and related holidays
+        //hey {jf} - where are these from?
+//        EasterHoliday.GOOD_FRIDAY,
+//        EasterHoliday.EASTER_SUNDAY,
+//        EasterHoliday.EASTER_MONDAY,
+    };
+
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+
+        { "Labor Day",  "Labour Day" },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_en_GB.java b/src/com/ibm/icu/impl/data/HolidayBundle_en_GB.java
new file mode 100755
index 0000000..f9dbe7b
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_en_GB.java
@@ -0,0 +1,42 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_en_GB.java,v $ 
+ * $Date: 2002/02/16 03:05:46 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_en_GB extends ListResourceBundle
+{
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.MAY_DAY,
+        new SimpleHoliday(Calendar.MAY,        31, -Calendar.MONDAY,    "Spring Holiday"),
+        new SimpleHoliday(Calendar.AUGUST,     31, -Calendar.MONDAY,    "Summer Bank Holiday"),
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+        new SimpleHoliday(Calendar.DECEMBER,   31, -Calendar.MONDAY,    "Christmas Holiday"),
+
+        // Easter and related holidays
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+
+        { "Labor Day",  "Labour Day" },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_en_US.java b/src/com/ibm/icu/impl/data/HolidayBundle_en_US.java
new file mode 100755
index 0000000..dedc18c
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_en_US.java
@@ -0,0 +1,52 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_en_US.java,v $ 
+ * $Date: 2002/02/16 03:05:46 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_en_US extends ListResourceBundle
+{
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.JANUARY,   15, Calendar.MONDAY,      "Martin Luther King Day",   1986),
+
+        new SimpleHoliday(Calendar.FEBRUARY,  15, Calendar.MONDAY,      "Presidents' Day",          1976),
+        new SimpleHoliday(Calendar.FEBRUARY,  22,                       "Washington's Birthday",    1776, 1975),
+
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+
+        new SimpleHoliday(Calendar.MAY,        8, Calendar.SUNDAY,      "Mother's Day",             1914),
+
+        new SimpleHoliday(Calendar.MAY,       31, -Calendar.MONDAY,     "Memorial Day",             1971),
+        new SimpleHoliday(Calendar.MAY,       30,                       "Memorial Day",             1868, 1970),
+
+        new SimpleHoliday(Calendar.JUNE,      15, Calendar.SUNDAY,      "Father's Day",             1956),
+        new SimpleHoliday(Calendar.JULY,       4,                       "Independence Day",         1776),
+        new SimpleHoliday(Calendar.SEPTEMBER,  1, Calendar.MONDAY,      "Labor Day",                1894),
+        new SimpleHoliday(Calendar.NOVEMBER,   2, Calendar.TUESDAY,     "Election Day"),
+        new SimpleHoliday(Calendar.OCTOBER,    8, Calendar.MONDAY,      "Columbus Day",             1971),
+        new SimpleHoliday(Calendar.OCTOBER ,  31,                       "Halloween"),
+        new SimpleHoliday(Calendar.NOVEMBER,  11,                       "Veterans' Day",            1918),
+        new SimpleHoliday(Calendar.NOVEMBER,  22, Calendar.THURSDAY,    "Thanksgiving",             1863),
+
+        SimpleHoliday.CHRISTMAS,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_es.java b/src/com/ibm/icu/impl/data/HolidayBundle_es.java
new file mode 100755
index 0000000..f774180
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_es.java
@@ -0,0 +1,57 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_es.java,v $ 
+ * $Date: 2002/02/16 03:05:46 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_es extends ListResourceBundle {
+    static private final Object[][] fContents = {
+        {   "All Saints' Day",          "Todos los Santos" },
+        {   "Armistice Day",            "D\u00eda del Armisticio" },
+        {   "Ascension",                "Ascensi\u00f3n" },
+        {   "Benito Ju\u00e1rez Day",        "D\u00eda de la Benito Ju\u00e1rez" },
+        {   "Boxing Day",               "D\u00eda en que se dan Aguinaldos Navide\u00f1os" },
+        {   "Canada Day",               "D\u00eda del Canad\u00e1" },
+        {   "Christmas Eve",            "V\u00EDspera de Navidad" },
+        {   "Christmas",                "Navidad" },
+        {   "Constitution Day",         "D\u00eda de la Constituci\u00f3n" },
+        {   "Day of the Dead",          "D\u00eda de los Muertos" },
+        {   "Easter Sunday",            "Pascua" },
+        {   "Easter Monday",            "Pascua Lunes" },
+        {   "Epiphany",                 "Epifan\u00eda" },
+        {   "Father's Day",             "D\u00eda del Padre" },
+        {   "Flag Day",                 "D\u00eda de la Bandera" },
+        {   "Good Friday",              "Viernes Santo" },
+        {   "Halloween",                "v\u00edspera de Todos los Santos" },
+        {   "Independence Day",         "D\u00eda de la Independencia" },
+        {   "Labor Day",                "D\u00eda de Trabajadores" },
+        {   "Maundy Thursday",          "Jueves Santo" },
+        {   "May Day",                  "Primero de Mayo" },
+        {   "Memorial Day",             "D\u00eda de la Rememoraci\u00f3n" },
+        {   "Mother's Day",             "D\u00eda de la Madre" },
+        {   "New Year's Day",           "A\u00f1o Nuevo" },
+        {   "Palm Sunday",              "Domingo de Ramos" },
+        {   "Pentecost",                "Pentecost\u00e9s" },
+        {   "Presidents' Day",          "D\u00eda de Presidentes" },
+        {   "Revolution Day",           "D\u00eda de la Revoluci\u00f3n" },
+        {   "Shrove Tuesday",           "Martes de Carnaval" },
+        {   "Thanksgiving",             "D\u00eda de Acci\u00f3n de Gracias" },
+        {   "Veterans' Day",            "D\u00eda de Veteranos" },
+        {   "Victoria Day",             "D\u00eda de Victoria" },
+        {   "Whit Sunday",              "Pentecost\u00e9s" },
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_es_MX.java b/src/com/ibm/icu/impl/data/HolidayBundle_es_MX.java
new file mode 100755
index 0000000..cd82b8d
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_es_MX.java
@@ -0,0 +1,40 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_es_MX.java,v $ 
+ * $Date: 2002/02/16 03:05:46 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_es_MX extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.FEBRUARY,   5,  0,    "Constitution Day"),
+        new SimpleHoliday(Calendar.MARCH,     21,  0,    "Benito Ju\u00E1rez Day"),
+        SimpleHoliday.MAY_DAY,
+        new SimpleHoliday(Calendar.MAY,        5,  0,    "Cinco de Mayo"),
+        new SimpleHoliday(Calendar.JUNE,       1,  0,    "Navy Day"),
+        new SimpleHoliday(Calendar.SEPTEMBER, 16,  0,    "Independence Day"),
+        new SimpleHoliday(Calendar.OCTOBER,   12,  0,    "D\u00EDa de la Raza"),
+        SimpleHoliday.ALL_SAINTS_DAY,
+        new SimpleHoliday(Calendar.NOVEMBER,   2,  0,    "Day of the Dead"),
+        new SimpleHoliday(Calendar.NOVEMBER,  20,  0,    "Revolution Day"),
+        new SimpleHoliday(Calendar.DECEMBER,  12,  0,    "Flag Day"),
+        SimpleHoliday.CHRISTMAS,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_fr.java b/src/com/ibm/icu/impl/data/HolidayBundle_fr.java
new file mode 100755
index 0000000..a6e1218
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_fr.java
@@ -0,0 +1,50 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_fr.java,v $ 
+ * $Date: 2002/02/16 03:05:47 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_fr extends ListResourceBundle {
+    static private final Object[][] fContents = {
+        {   "All Saints' Day",      "Toussaint" },
+        {   "Armistice Day",        "Jour de l'Armistice" },
+        {   "Ascension",            "Ascension" },
+        {   "Bastille Day",         "F\u00EAte de la Bastille" },
+        {   "Benito Ju\u00E1rez Day",    "F\u00EAte de Benito Ju\u00E1rez" },
+        {   "Boxing Day",           "Lendemain de No\u00EBl" },
+        {   "Christmas Eve",        "Veille de No\u00EBl" },
+        {   "Christmas",            "No\u00EBl" },
+        {   "Easter Monday",        "P\u00E2ques lundi" },
+        {   "Easter Sunday",        "P\u00E2ques" },
+        {   "Epiphany",             "l'\u00C9piphanie" },
+        {   "Flag Day",             "F\u00EAte du Drapeau" },
+        {   "Good Friday",          "Vendredi Saint" },
+        {   "Halloween",            "Veille de la Toussaint" },
+        {   "All Saints' Day",      "Toussaint" },
+        {   "Independence Day",     "F\u00EAte Ind\u00E9pendance" },
+        {   "Maundy Thursday",      "Jeudi Saint" },
+        {   "Mother's Day",         "F\u00EAte des m\u00E8res" },
+        {   "National Day",         "F\u00EAte Nationale" },
+        {   "New Year's Day",       "Jour de l'an" },
+        {   "Palm Sunday",          "les Rameaux" },
+        {   "Pentecost",            "Pentec\u00F4te" },
+        {   "Shrove Tuesday",       "Mardi Gras" },
+        {   "St. Stephen's Day",    "Saint-\u00C9tienne" },
+        {   "Victoria Day",         "F\u00EAte de la Victoria" },
+        {   "Victory Day",          "F\u00EAte de la Victoire" },
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_fr_CA.java b/src/com/ibm/icu/impl/data/HolidayBundle_fr_CA.java
new file mode 100755
index 0000000..3c20a33
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_fr_CA.java
@@ -0,0 +1,43 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_fr_CA.java,v $ 
+ * $Date: 2002/02/16 03:05:47 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_fr_CA extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        new SimpleHoliday(Calendar.JANUARY,    1,  0,                  "New Year's Day"),
+        new SimpleHoliday(Calendar.MAY,       19,  0,                  "Victoria Day"),
+        new SimpleHoliday(Calendar.JUNE,      24,  0,                  "National Day"),
+        new SimpleHoliday(Calendar.JULY,       1,  0,                  "Canada Day"),
+        new SimpleHoliday(Calendar.AUGUST,     1,  Calendar.MONDAY,    "Civic Holiday"),
+        new SimpleHoliday(Calendar.SEPTEMBER,  1,  Calendar.MONDAY,    "Labour Day"),
+        new SimpleHoliday(Calendar.OCTOBER,    8,  Calendar.MONDAY,    "Thanksgiving"),
+        new SimpleHoliday(Calendar.NOVEMBER,  11,  0,                  "Remembrance Day"),
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+        SimpleHoliday.NEW_YEARS_EVE,
+
+        // Easter and related holidays
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_fr_FR.java b/src/com/ibm/icu/impl/data/HolidayBundle_fr_FR.java
new file mode 100755
index 0000000..3be87b5
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_fr_FR.java
@@ -0,0 +1,42 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_fr_FR.java,v $ 
+ * $Date: 2002/02/16 03:05:47 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_fr_FR extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.MAY,        1,  0, "Labor Day"),
+        new SimpleHoliday(Calendar.MAY,        8,  0, "Victory Day"),
+        new SimpleHoliday(Calendar.JULY,      14,  0, "Bastille Day"),
+        SimpleHoliday.ASSUMPTION,
+        SimpleHoliday.ALL_SAINTS_DAY,
+        new SimpleHoliday(Calendar.NOVEMBER,  11,  0, "Armistice Day"),
+        SimpleHoliday.CHRISTMAS,
+
+        // Easter and related holidays
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+        EasterHoliday.ASCENSION,
+        EasterHoliday.WHIT_SUNDAY,
+        EasterHoliday.WHIT_MONDAY,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_it.java b/src/com/ibm/icu/impl/data/HolidayBundle_it.java
new file mode 100755
index 0000000..cfe1e61
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_it.java
@@ -0,0 +1,43 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_it.java,v $ 
+ * $Date: 2002/02/16 03:05:47 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_it extends ListResourceBundle {
+    static private final Object[][] fContents =
+    {
+        {   "All Saints' Day",      "Ognissanti" },
+        {   "Armistice Day",        "armistizio" },
+        {   "Ascension",            "ascensione" },
+        {   "Ash Wednesday",        "mercoled\u00ec delle ceneri" },
+        {   "Boxing Day",           "Santo Stefano" },
+        {   "Christmas",            "natale" },
+        {   "Easter Sunday",        "pasqua" },
+        {   "Epiphany",             "Epifania" },
+        {   "Good Friday",          "venerd\u00ec santo" },
+        {   "Halloween",            "vigilia di Ognissanti" },
+        {   "Maundy Thursday",      "gioved\u00ec santo" },
+        {   "New Year's Day",       "anno nuovo" },
+        {   "Palm Sunday",          "domenica delle palme" },
+        {   "Pentecost",            "di Pentecoste" },
+        {   "Shrove Tuesday",       "martedi grasso" },
+        {   "St. Stephen's Day",    "Santo Stefano" },
+        {   "Thanksgiving",         "Giorno del Ringraziamento" },
+
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_it_IT.java b/src/com/ibm/icu/impl/data/HolidayBundle_it_IT.java
new file mode 100755
index 0000000..6c453fa
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_it_IT.java
@@ -0,0 +1,41 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_it_IT.java,v $ 
+ * $Date: 2002/02/16 03:05:47 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_it_IT extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.EPIPHANY,
+        new SimpleHoliday(Calendar.APRIL,      1,  0,    "Liberation Day"),
+        new SimpleHoliday(Calendar.MAY,        1,  0,    "Labor Day"),
+        SimpleHoliday.ASSUMPTION,
+        SimpleHoliday.ALL_SAINTS_DAY,
+        SimpleHoliday.IMMACULATE_CONCEPTION,
+        SimpleHoliday.CHRISTMAS,
+        new SimpleHoliday(Calendar.DECEMBER,  26,  0,    "St. Stephens Day"),
+        SimpleHoliday.NEW_YEARS_EVE,
+
+        // Easter and related holidays
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",           fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_iw.java b/src/com/ibm/icu/impl/data/HolidayBundle_iw.java
new file mode 100755
index 0000000..0073c4e
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_iw.java
@@ -0,0 +1,27 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_iw.java,v $ 
+ * $Date: 2002/02/16 03:05:48 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_iw extends ListResourceBundle {
+
+    static private final Object[][] fContents = {
+        {   "", ""  },      // Can't be empty!
+    };
+
+    public synchronized Object[][] getContents() { return fContents; };
+
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_iw_IL.java b/src/com/ibm/icu/impl/data/HolidayBundle_iw_IL.java
new file mode 100755
index 0000000..6fecbe3
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_iw_IL.java
@@ -0,0 +1,35 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_iw_IL.java,v $ 
+ * $Date: 2002/02/16 03:05:48 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_iw_IL extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        HebrewHoliday.ROSH_HASHANAH,
+        HebrewHoliday.YOM_KIPPUR,
+        HebrewHoliday.HANUKKAH,
+        HebrewHoliday.PURIM,
+        HebrewHoliday.PASSOVER,
+        HebrewHoliday.SHAVUOT,
+        HebrewHoliday.SELIHOT,
+    };
+
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_ja_JP.java b/src/com/ibm/icu/impl/data/HolidayBundle_ja_JP.java
new file mode 100755
index 0000000..f6c3fc6
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_ja_JP.java
@@ -0,0 +1,28 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/HolidayBundle_ja_JP.java,v $ 
+ * $Date: 2002/02/16 03:05:48 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_ja_JP extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        new SimpleHoliday(Calendar.FEBRUARY,  11,  0,    "National Foundation Day"),
+    };
+    static private final Object[][] fContents = {
+        {   "holidays",         fHolidays   },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/icu/impl/data/ICULocaleData.jar b/src/com/ibm/icu/impl/data/ICULocaleData.jar
new file mode 100644
index 0000000..2835bb8
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/ICULocaleData.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b22eb14397c052acc4bd04704a9dac73d5550efea157dc9a167fca164c33991f
+size 1012478
diff --git a/src/com/ibm/icu/impl/data/IslamicCalendarSymbols.java b/src/com/ibm/icu/impl/data/IslamicCalendarSymbols.java
new file mode 100755
index 0000000..e7ccd7c
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/IslamicCalendarSymbols.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/IslamicCalendarSymbols.java,v $ 
+ * $Date: 2002/02/16 03:05:48 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default Date Format symbols for the Islamic Calendar
+ */
+public class IslamicCalendarSymbols extends ListResourceBundle {
+    
+    private static String copyright = "Copyright \u00a9 1998-1999 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] { 
+                "Muharram",
+                "Safar",
+                "Rabi' I",
+                "Rabi' II",
+                "Jumada I",
+                "Jumada I",
+                "Rajab",
+                "Sha'ban",
+                "Ramadan",
+                "Shawwal",
+                "Dhu'l-Qi'dah",
+                "Dhu'l-Hijjah",
+            } },
+        { "Eras", new String[] { 
+                "AH"
+            } },
+    };
+        
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_ar.java b/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_ar.java
new file mode 100755
index 0000000..50bcac7
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_ar.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/IslamicCalendarSymbols_ar.java,v $ 
+ * $Date: 2002/02/16 03:05:48 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default Date Format symbols for the Islamic Calendar
+ */
+public class IslamicCalendarSymbols_ar extends ListResourceBundle {
+    
+    private static String copyright = "Copyright \u00a9 1999 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] { 
+            "\u0645\u062D\u0631\u0645",                                             // Muharram
+            "\u0635\u0641\u0631",                                                   // Safar
+            "\u0631\u0628\u064A\u0639 \u0627\u0644\u0623\u0648\u0644",              // Rabi' I
+            "\u0631\u0628\u064A\u0639 \u0627\u0644\u0622\u062E\u0631",              // Rabi' II
+            "\u062C\u0645\u0627\u062F\u0649 \u0627\u0644\u0623\u0648\u0644\u0649",  // Jumada I
+            "\u062C\u0645\u0627\u062F\u0649 \u0627\u0644\u0622\u062E\u0631\u0629",  // Jumada I
+            "\u0631\u062C\u0628",                                                   // Rajab
+            "\u0634\u0639\u0628\u0627\u0646",                                       // Sha'ban
+            "\u0631\u0645\u0636\u0627\u0646",                                       // Ramadan
+            "\u0634\u0648\u0627\u0644",                                             // Shawwal
+            "\u0630\u0648 \u0627\u0644\u0642\u0639\u062F\u0629",                    // Dhu'l-Qi'dah
+            "\u0630\u0648 \u0627\u0644\u062D\u062C\u0629",                          // Dhu'l-Hijjah
+        } },
+        { "Eras", new String[] { 
+            "\u0647\u200D",  // AH
+        } },
+    };
+        
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_fi.java b/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_fi.java
new file mode 100755
index 0000000..dab6096
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_fi.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/IslamicCalendarSymbols_fi.java,v $ 
+ * $Date: 2002/02/16 03:05:49 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Finnish date format symbols for the Islamic Calendar
+ */
+public class IslamicCalendarSymbols_fi extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] {
+            "Muh\u00E1rram",                // Muharram
+            "S\u00E1far",                   // Safar
+            "Rab\u00ED' al-\u00E1wwal",     // Rabi' al-awwal
+            "Rab\u00ED' al-\u00E1khir",     // Rabi' al-thani
+            "D\u017Eumada-l-\u00FAla",      // Jumada al-awwal
+            "D\u017Eumada-l-\u00E1khira",   // Jumada al-thani
+            "Rad\u017Eab",                  // Rajab
+            "\u0160a'b\u00E1n",             // Sha'ban
+            "Ramad\u00E1n",                 // Ramadan
+            "\u0160awwal",                  // Shawwal
+            "Dhu-l-qada",                   // Dhu al-Qi'dah
+            "Dhu-l-hidd\u017Ea",            // Dhu al-Hijjah
+            } },
+        { "Eras", new String[] {
+            "AH"                            // Anno Hid\u017Era
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_fr.java b/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_fr.java
new file mode 100755
index 0000000..6a96ed0
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_fr.java
@@ -0,0 +1,50 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/IslamicCalendarSymbols_fr.java,v $ 
+ * $Date: 2002/02/16 03:05:49 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * French date format symbols for the Islamic Calendar
+ * This data actually applies to French Canadian.  If we receive
+ * official French data from our France office, we should move the 
+ * French Canadian data (if it's different) down into _fr_CA
+ */
+public class IslamicCalendarSymbols_fr extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] {
+            "Mouharram",            // Muharram
+            "Safar",                // Safar
+            "Rabi'-oul-Aououal",    // Rabi' al-awwal
+            "Rabi'-out-Tani",       // Rabi' al-thani
+            "Djoumada-l-Oula",      // Jumada al-awwal
+            "Djoumada-t-Tania",     // Jumada al-thani
+            "Radjab",               // Rajab
+            "Cha'ban",              // Sha'ban
+            "Ramadan",              // Ramadan
+            "Chaououal",            // Shawwal
+            "Dou-l-Qa'da",          // Dhu al-Qi'dah
+            "Dou-l-Hidjja",         // Dhu al-Hijjah
+            } },
+        { "Eras", new String[] {
+            "AH"        // Anno Hijri
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_hu.java b/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_hu.java
new file mode 100755
index 0000000..af1b071
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_hu.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/IslamicCalendarSymbols_hu.java,v $ 
+ * $Date: 2002/02/16 03:05:49 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Hungarian date format symbols for the Islamic Calendar
+ */
+public class IslamicCalendarSymbols_hu extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] {
+            "Moharrem",                 // Muharram
+            "Safar",                    // Safar
+            "R\u00E9bi el avvel",       // Rabi' al-awwal
+            "R\u00E9bi el accher",      // Rabi' al-thani
+            "Dsem\u00E1di el avvel",    // Jumada al-awwal
+            "Dsem\u00E1di el accher",   // Jumada al-thani
+            "Redseb",                   // Rajab
+            "Sab\u00E1n",               // Sha'ban
+            "Ramad\u00E1n",             // Ramadan
+            "Sevv\u00E1l",              // Shawwal
+            "Ds\u00FCl kade",           // Dhu al-Qi'dah
+            "Ds\u00FCl hedse",          // Dhu al-Hijjah
+            } },
+        { "Eras", new String[] {
+            "MF"
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_iw.java b/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_iw.java
new file mode 100755
index 0000000..bcf52cf
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_iw.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/IslamicCalendarSymbols_iw.java,v $ 
+ * $Date: 2002/02/16 03:05:49 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default Date Format symbols for the Islamic Calendar
+ */
+public class IslamicCalendarSymbols_iw extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] {
+            "\u05DE\u05D5\u05D7\u05E8\u05DD",                                               // Muharram
+            "\u05E1\u05E4\u05E8",                                                           // Safar
+            "\u05E8\u05D1\u05D9\u05E2 \u05D0\u05DC-\u05D0\u05D5\u05D5\u05D0\u05DC",         // Rabi' al-awwal
+            "\u05E8\u05D1\u05D9\u05E2 \u05D0\u05DC-\u05EA\u05E0\u05D9",                     // Rabi' al-thani
+            "\u05D2'\u05D5\u05DE\u05D3\u05D4 \u05D0\u05DC-\u05D0\u05D5\u05D5\u05D0\u05DC",  // Jumada al-awwal
+            "\u05D2'\u05D5\u05DE\u05D3\u05D4 \u05D0\u05DC-\u05EA\u05E0\u05D9",              // Jumada al-thani
+            "\u05E8\u05D2'\u05D0\u05D1",                                                    // Rajab
+            "\u05E9\u05E2\u05D1\u05D0\u05DF",                                               // Sha'ban
+            "\u05E8\u05D0\u05DE\u05D3\u05DF",                                               // Ramadan
+            "\u05E9\u05D5\u05D5\u05D0\u05DC",                                               // Shawwal
+            "\u05E9\u05D5\u05D5\u05D0\u05DC",                                               // Dhu al-Qi'dah
+            "\u05D6\u05D5 \u05D0\u05DC-\u05D7\u05D9\u05D2'\u05D4",                          // Dhu al-Hijjah
+            } },
+        { "Eras", new String[] {
+            "\u05E9\u05E0\u05EA \u05D4\u05D9\u05D2'\u05E8\u05D4"
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_nl.java b/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_nl.java
new file mode 100755
index 0000000..eb588ff
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/IslamicCalendarSymbols_nl.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/IslamicCalendarSymbols_nl.java,v $ 
+ * $Date: 2002/02/16 03:05:49 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Dutch date format symbols for the Islamic Calendar
+ */
+public class IslamicCalendarSymbols_nl extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] {
+            "Moeharram",            // Muharram
+            "Safar",                // Safar
+            "Rabi'a al awal ",      // Rabi' al-awwal
+            "Rabi'a al thani",      // Rabi' al-thani
+            "Joemad'al awal",       // Jumada al-awwal
+            "Joemad'al thani",      // Jumada al-thani
+            "Rajab",                // Rajab
+            "Sja'aban",             // Sha'ban
+            "Ramadan",              // Ramadan
+            "Sjawal",               // Shawwal
+            "Doe al ka'aba",        // Dhu al-Qi'dah
+            "Doe al hizja",         // Dhu al-Hijjah
+            } },
+        { "Eras", new String[] {
+            "Sa'na Hizjria"
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/JapaneseCalendarSymbols.java b/src/com/ibm/icu/impl/data/JapaneseCalendarSymbols.java
new file mode 100755
index 0000000..db648f2
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/JapaneseCalendarSymbols.java
@@ -0,0 +1,282 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/JapaneseCalendarSymbols.java,v $ 
+ * $Date: 2002/02/16 03:05:50 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default Date Format symbols for the Japanese Calendar
+ */
+public class JapaneseCalendarSymbols extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "DateTimePatterns",
+            new String[] {
+                "h:mm:ss a z", // full time pattern
+                "h:mm:ss a z", // long time pattern
+                "h:mm:ss a", // medium time pattern
+                "h:mm a", // short time pattern
+                "EEEE, MMMM d, yy G", // full date pattern
+                "MMMM d, yy G", // long date pattern
+                "MMM d, yy G", // medium date pattern
+                "M/d/yy", // short date pattern
+                "{1} {0}" // date-time pattern
+            }
+        },
+        { "Eras", new String[] {
+            // Name                         Gregorian Year
+            "Taika",                        //  645
+            "Hakuchi",                      //  650
+            "Hakuh\u014D",                  //  672
+            "Shuch\u014D",                  //  686
+            "Taih\u014D",                   //  701
+            "Keiun",                        //  704
+            "Wad\u014D",                    //  708
+            "Reiki",                        //  715
+            "Y\u014Dr\u014D",               //  717
+            "Jinki",                        //  724
+            "Tempy\u014D",                  //  729
+            "Tempy\u014D-kamp\u014D",       //  749
+            "Tempy\u014D-sh\u014Dh\u014D",  //  749
+            "Tempy\u014D-h\u014Dji",        //  757
+            "Temph\u014D-jingo",            //  765
+            "Jingo-keiun",                  //  767
+            "H\u014Dki",                    //  770
+            "Ten-\u014D",                   //  781
+            "Enryaku",                      //  782
+            "Daid\u014D",                   //  806
+            "K\u014Dnin",                   //  810
+            "Tench\u014D",                  //  824
+            "Sh\u014Dwa",                   //  834
+            "Kaj\u014D",                    //  848
+            "Ninju",                        //  851
+            "Saiko",                        //  854
+            "Tennan",                       //  857
+            "J\u014Dgan",                   //  859
+            "Genkei",                       //  877
+            "Ninna",                        //  885
+            "Kampy\u014D",                  //  889
+            "Sh\u014Dtai",                  //  898
+            "Engi",                         //  901
+            "Ench\u014D",                   //  923
+            "Sh\u014Dhei",                  //  931
+            "Tengy\u014D",                  //  938
+            "Tenryaku",                     //  947
+            "Tentoku",                      //  957
+            "\u014Cwa",                     //  961
+            "K\u014Dh\u014D",               //  964
+            "Anna",                         //  968
+            "Tenroku",                      //  970
+            "Ten-en",                       //  973
+            "J\u014Dgen",                   //  976
+            "Tengen",                       //  978
+            "Eikan",                        //  983
+            "Kanna",                        //  985
+            "Ei-en",                        //  987
+            "Eiso",                         //  989
+            "Sh\u014Dryaku",                //  990
+            "Ch\u014Dtoku",                 //  995
+            "Ch\u014Dh\u014D",              //  999
+            "Kank\u014D",                   // 1004
+            "Ch\u014Dwa",                   // 1012
+            "Kannin",                       // 1017
+            "Jian",                         // 1021
+            "Manju",                        // 1024
+            "Ch\u014Dgen",                  // 1028
+            "Ch\u014Dryaku",                // 1037
+            "Ch\u014Dky\u016B",             // 1040
+            "Kantoku",                      // 1044
+            "Eish\u014D",                   // 1046
+            "Tengi",                        // 1053
+            "K\u014Dhei",                   // 1058
+            "Jiryaku",                      // 1065
+            "Enky\u016B",                   // 1069
+            "Sh\u014Dho",                   // 1074
+            "Sh\u014Dryaku",                // 1077
+            "Eiho",                         // 1081
+            "\u014Ctoku",                   // 1084
+            "Kanji",                        // 1087
+            "Kaho",                         // 1094
+            "Eich\u014D",                   // 1096
+            "Sh\u014Dtoku",                 // 1097
+            "K\u014Dwa",                    // 1099
+            "Ch\u014Dji",                   // 1104
+            "Kash\u014D",                   // 1106
+            "Tennin",                       // 1108
+            "Ten-ei",                       // 1110
+            "Eiky\u016B",                   // 1113
+            "Gen-ei",                       // 1118
+            "Hoan",                         // 1120
+            "Tenji",                        // 1124
+            "Daiji",                        // 1126
+            "Tensh\u014D",                  // 1131
+            "Ch\u014Dsh\u014D",             // 1132
+            "Hoen",                         // 1135
+            "Eiji",                         // 1141
+            "K\u014Dji",                    // 1142
+            "Teny\u014D",                   // 1144
+            "Ky\u016Ban",                   // 1145
+            "Ninpei",                       // 1151
+            "Ky\u016Bju",                   // 1154
+            "Hogen",                        // 1156
+            "Heiji",                        // 1159
+            "Eiryaku",                      // 1160
+            "\u014Cho",                     // 1161
+            "Ch\u014Dkan",                  // 1163
+            "Eiman",                        // 1165
+            "Nin-an",                       // 1166
+            "Ka\u014D",                     // 1169
+            "Sh\u014Dan",                   // 1171
+            "Angen",                        // 1175
+            "Jish\u014D",                   // 1177
+            "Y\u014Dwa",                    // 1181
+            "Juei",                         // 1182
+            "Genryuku",                     // 1184
+            "Bunji",                        // 1185
+            "Kenky\u016B",                  // 1190
+            "Sh\u014Dji",                   // 1199
+            "Kennin",                       // 1201
+            "Genky\u016B",                  // 1204
+            "Ken-ei",                       // 1206
+            "Sh\u014Dgen",                  // 1207
+            "Kenryaku",                     // 1211
+            "Kenp\u014D",                   // 1213
+            "Sh\u014Dky\u016B",             // 1219
+            "J\u014D\u014D",                // 1222
+            "Gennin",                       // 1224
+            "Karoku",                       // 1225
+            "Antei",                        // 1227
+            "Kanki",                        // 1229
+            "J\u014Dei",                    // 1232
+            "Tempuku",                      // 1233
+            "Bunryaku",                     // 1234
+            "Katei",                        // 1235
+            "Ryakunin",                     // 1238
+            "En-\u014D",                    // 1239
+            "Ninji",                        // 1240
+            "Kangen",                       // 1243
+            "H\u014Dji",                    // 1247
+            "Kench\u014D",                  // 1249
+            "K\u014Dgen",                   // 1256
+            "Sh\u014Dka",                   // 1257
+            "Sh\u014Dgen",                  // 1259
+            "Bun-\u014D",                   // 1260
+            "K\u014Dch\u014D",              // 1261
+            "Bun-ei",                       // 1264
+            "Kenji",                        // 1275
+            "K\u014Dan",                    // 1278
+            "Sh\u014D\u014D",               // 1288
+            "Einin",                        // 1293
+            "Sh\u014Dan",                   // 1299
+            "Kengen",                       // 1302
+            "Kagen",                        // 1303
+            "Tokuji",                       // 1306
+            "Enkei",                        // 1308
+            "\u014Cch\u014D",               // 1311
+            "Sh\u014Dwa",                   // 1312
+            "Bunp\u014D",                   // 1317
+            "Gen\u014D",                    // 1319
+            "Genky\u014D",                  // 1321
+            "Sh\u014Dch\u016B",             // 1324
+            "Kareki",                       // 1326
+            "Gentoku",                      // 1329
+            "Genk\u014D",                   // 1331
+            "Kemmu",                        // 1334
+            "Engen",                        // 1336
+            "K\u014Dkoku",                  // 1340
+            "Sh\u014Dhei",                  // 1346
+            "Kentoku",                      // 1370
+            "Bunch\u0169",                  // 1372
+            "Tenju",                        // 1375
+            "K\u014Dwa",                    // 1381
+            "Gench\u0169",                  // 1384
+            "Meitoku",                      // 1384
+            "K\u014Dryaku",                 // 1379
+            "Kakei",                        // 1387
+            "K\u014D\u014D",                // 1389
+            "Meitoku",                      // 1390
+            "\u014Cei",                     // 1394
+            "Sh\u014Dch\u014D",             // 1428
+            "Eiky\u014D",                   // 1429
+            "Kakitsu",                      // 1441
+            "Bun-an",                       // 1444
+            "H\u014Dtoku",                  // 1449
+            "Ky\u014Dtoku",                 // 1452
+            "K\u014Dsh\u014D",              // 1455
+            "Ch\u014Droku",                 // 1457
+            "Kansh\u014D",                  // 1460
+            "Bunsh\u014D",                  // 1466
+            "\u014Cnin",                    // 1467
+            "Bunmei",                       // 1469
+            "Ch\u014Dky\u014D",             // 1487
+            "Entoku",                       // 1489
+            "Mei\u014D",                    // 1492
+            "Bunki",                        // 1501
+            "Eish\u014D",                   // 1504
+            "Taiei",                        // 1521
+            "Ky\u014Droku",                 // 1528
+            "Tenmon",                       // 1532
+            "K\u014Dji",                    // 1555
+            "Eiroku",                       // 1558
+            "Genki",                        // 1570
+            "Tensh\u014D",                  // 1573
+            "Bunroku",                      // 1592
+            "Keich\u014D",                  // 1596
+            "Genwa",                        // 1615
+            "Kan-ei",                       // 1624
+            "Sh\u014Dho",                   // 1644
+            "Keian",                        // 1648
+            "Sh\u014D\u014D",               // 1652
+            "Meiryaku",                     // 1655
+            "Manji",                        // 1658
+            "Kanbun",                       // 1661
+            "Enp\u014D",                    // 1673
+            "Tenwa",                        // 1681
+            "J\u014Dky\u014D",              // 1684
+            "Genroku",                      // 1688
+            "H\u014Dei",                    // 1704
+            "Sh\u014Dtoku",                 // 1711
+            "Ky\u014Dh\u014D",              // 1716
+            "Genbun",                       // 1736
+            "Kanp\u014D",                   // 1741
+            "Enky\u014D",                   // 1744
+            "Kan-en",                       // 1748
+            "H\u014Dryaku",                 // 1751
+            "Meiwa",                        // 1764
+            "An-ei",                        // 1772
+            "Tenmei",                       // 1781
+            "Kansei",                       // 1789
+            "Ky\u014Dwa",                   // 1801
+            "Bunka",                        // 1804
+            "Bunsei",                       // 1818
+            "Tenp\u014D",                   // 1830
+            "K\u014Dka",                    // 1844
+            "Kaei",                         // 1848
+            "Ansei",                        // 1854
+            "Man-en",                       // 1860
+            "Bunky\u016B",                  // 1861
+            "Genji",                        // 1864
+            "Kei\u014D",                    // 1865
+            "Meiji",                        // 1868
+            "Taish\u014D",                  // 1912
+            "Sh\u014Dwa",                   // 1926
+            "Heisei",                       // 1989
+        } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/JapaneseCalendarSymbols_ja.java b/src/com/ibm/icu/impl/data/JapaneseCalendarSymbols_ja.java
new file mode 100755
index 0000000..5196828
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/JapaneseCalendarSymbols_ja.java
@@ -0,0 +1,281 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/JapaneseCalendarSymbols_ja.java,v $ 
+ * $Date: 2002/02/16 03:05:50 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Japanese Kanji version of the Date Format symbols for the Japanese calendar
+ */
+public class JapaneseCalendarSymbols_ja extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "DateTimePatterns",
+            new String[] {
+                "H'\u6642'mm'\u5206'ss'\u79d2'z", // full time pattern
+                "H:mm:ss:z", // long time pattern
+                "H:mm:ss", // medium time pattern
+                "H:mm", // short time pattern
+                "G yy'\u5e74'M'\u6708'd'\u65e5'", // full date pattern
+                "G yy/MM/dd", // long date pattern
+                "G yy/MM/dd", // medium date pattern
+                "G yy/MM/dd", // short date pattern
+                "{1} {0}" // date-time pattern
+            }
+        },
+        { "Eras", new String[] {
+            "\u5927\u5316",             //  645 Taika
+            "\u767D\u96C9",             //  650 Hakuchi
+            "\u767D\u9CEF",             //  672 Hakuho
+            "\u6731\u9CE5",             //  686 Shucho
+            "\u5927\u5B9D",             //  701 Taiho
+            "\u6176\u96F2",             //  704 Keiun
+            "\u548C\u9285",             //  708 Wado
+            "\u970A\u4E80",             //  715 Reiki
+            "\u990A\u8001",             //  717 Yoro
+            "\u795E\u4E80",             //  724 Jinki
+            "\u5929\u5E73",             //  729 Tempyo
+            "\u5929\u5E73\u611F\u5B9D", //  749 Tempyo-kampo
+            "\u5929\u5E73\u52DD\u5B9D", //  749 Tempyo-shoho
+            "\u5929\u5E73\u5B9D\u5B57", //  757 Tempyo-hoji
+            "\u5929\u5E73\u795E\u8B77", //  765 Tempho-jingo
+            "\u795E\u8B77\u666F\u96F2", //  767 Jingo-keiun
+            "\u5B9D\u4E80",             //  770 Hoki
+            "\u5929\u5FDC",             //  781 Ten-o
+            "\u5EF6\u66A6",             //  782 Enryaku
+            "\u5927\u540C",             //  806 Daido
+            "\u5F18\u4EC1",             //  810 Konin
+            "\u5929\u9577",             //  824 Tencho
+            "\u627F\u548C",             //  834 Showa
+            "\u5609\u7965",             //  848 Kajo
+            "\u4EC1\u5BFF",             //  851 Ninju
+            "\u6589\u8861",             //  854 Saiko
+            "\u5929\u5B89",             //  857 Tennan
+            "\u8C9E\u89B3",             //  859 Jogan
+            "\u5143\u6176",             //  877 Genkei
+            "\u4EC1\u548C",             //  885 Ninna
+            "\u5BDB\u5E73",             //  889 Kampyo
+            "\u660C\u6CF0",             //  898 Shotai
+            "\u5EF6\u559C",             //  901 Engi
+            "\u5EF6\u9577",             //  923 Encho
+            "\u627F\u5E73",             //  931 Shohei
+            "\u5929\u6176",             //  938 Tengyo
+            "\u5929\u66A6",             //  947 Tenryaku
+            "\u5929\u5FB3",             //  957 Tentoku
+            "\u5FDC\u548C",             //  961 Owa
+            "\u5EB7\u4FDD",             //  964 Koho
+            "\u5B89\u548C",             //  968 Anna
+            "\u5929\u7984",             //  970 Tenroku
+            "\u5929\u5EF6",             //  973 Ten-en
+            "\u8C9E\u5143",             //  976 Jogen
+            "\u5929\u5143",             //  978 Tengen
+            "\u6C38\u89B3",             //  983 Eikan
+            "\u5BDB\u548C",             //  985 Kanna
+            "\u6C38\u5EF6",             //  987 Ei-en
+            "\u6C38\u795A",             //  989 Eiso
+            "\u6B63\u66A6",             //  990 Shoryaku
+            "\u9577\u5FB3",             //  995 Chotoku
+            "\u9577\u4FDD",             //  999 Choho
+            "\u5BDB\u5F18",             // 1004 Kanko
+            "\u9577\u548C",             // 1012 Chowa
+            "\u5BDB\u4EC1",             // 1017 Kannin
+            "\u6CBB\u5B89",             // 1021 Jian
+            "\u4E07\u5BFF",             // 1024 Manju
+            "\u9577\u5143",             // 1028 Chogen
+            "\u9577\u66A6",             // 1037 Choryaku
+            "\u9577\u4E45",             // 1040 Chokyu
+            "\u5BDB\u5FB3",             // 1044 Kantoku
+            "\u6C38\u627F",             // 1046 Eisho
+            "\u5929\u559C",             // 1053 Tengi
+            "\u5EB7\u5E73",             // 1058 Kohei
+            "\u6CBB\u66A6",             // 1065 Jiryaku
+            "\u5EF6\u4E45",             // 1069 Enkyu
+            "\u627F\u4FDD",             // 1074 Shoho
+            "\u627F\u66A6",             // 1077 Shoryaku
+            "\u6C38\u4FDD",             // 1081 Eiho
+            "\u5FDC\u5FB3",             // 1084 Otoku
+            "\u5BDB\u6CBB",             // 1087 Kanji
+            "\u5609\u4FDD",             // 1094 Kaho
+            "\u6C38\u9577",             // 1096 Eicho
+            "\u627F\u5FB3",             // 1097 Shotoku
+            "\u5EB7\u548C",             // 1099 Kowa
+            "\u9577\u6CBB",             // 1104 Choji
+            "\u5609\u627F",             // 1106 Kasho
+            "\u5929\u4EC1",             // 1108 Tennin
+            "\u5929\u6C38",             // 1110 Ten-ei
+            "\u6C38\u4E45",             // 1113 Eikyu
+            "\u5143\u6C38",             // 1118 Gen-ei
+            "\u4FDD\u5B89",             // 1120 Hoan
+            "\u5929\u6CBB",             // 1124 Tenji
+            "\u5927\u6CBB",             // 1126 Daiji
+            "\u5929\u627F",             // 1131 Tensho
+            "\u9577\u627F",             // 1132 Chosho
+            "\u4FDD\u5EF6",             // 1135 Hoen
+            "\u6C38\u6CBB",             // 1141 Eiji
+            "\u5EB7\u6CBB",             // 1142 Koji
+            "\u5929\u990A",             // 1144 Tenyo
+            "\u4E45\u5B89",             // 1145 Kyuan
+            "\u4EC1\u5E73",             // 1151 Ninpei
+            "\u4E45\u5BFF",             // 1154 Kyuju
+            "\u4FDD\u5143",             // 1156 Hogen
+            "\u5E73\u6CBB",             // 1159 Heiji
+            "\u6C38\u66A6",             // 1160 Eiryaku
+            "\u5FDC\u4FDD",             // 1161 Oho
+            "\u9577\u5BDB",             // 1163 Chokan
+            "\u6C38\u4E07",             // 1165 Eiman
+            "\u4EC1\u5B89",             // 1166 Nin-an
+            "\u5609\u5FDC",             // 1169 Kao
+            "\u627F\u5B89",             // 1171 Shoan
+            "\u5B89\u5143",             // 1175 Angen
+            "\u6CBB\u627F",             // 1177 Jisho
+            "\u990A\u548C",             // 1181 Yowa
+            "\u5BFF\u6C38",             // 1182 Juei
+            "\u5143\u66A6",             // 1184 Genryuku
+            "\u6587\u6CBB",             // 1185 Bunji
+            "\u5EFA\u4E45",             // 1190 Kenkyu
+            "\u6B63\u6CBB",             // 1199 Shoji
+            "\u5EFA\u4EC1",             // 1201 Kennin
+            "\u5143\u4E45",             // 1204 Genkyu
+            "\u5EFA\u6C38",             // 1206 Ken-ei
+            "\u627F\u5143",             // 1207 Shogen
+            "\u5EFA\u66A6",             // 1211 Kenryaku
+            "\u5EFA\u4FDD",             // 1213 Kenpo
+            "\u627F\u4E45",             // 1219 Shokyu
+            "\u8C9E\u5FDC",             // 1222 Joo
+            "\u5143\u4EC1",             // 1224 Gennin
+            "\u5609\u7984",             // 1225 Karoku
+            "\u5B89\u8C9E",             // 1227 Antei
+            "\u5BDB\u559C",             // 1229 Kanki
+            "\u8C9E\u6C38",             // 1232 Joei
+            "\u5929\u798F",             // 1233 Tempuku
+            "\u6587\u66A6",             // 1234 Bunryaku
+            "\u5609\u798E",             // 1235 Katei
+            "\u66A6\u4EC1",             // 1238 Ryakunin
+            "\u5EF6\u5FDC",             // 1239 En-o
+            "\u4EC1\u6CBB",             // 1240 Ninji
+            "\u5BDB\u5143",             // 1243 Kangen
+            "\u5B9D\u6CBB",             // 1247 Hoji
+            "\u5EFA\u9577",             // 1249 Kencho
+            "\u5EB7\u5143",             // 1256 Kogen
+            "\u6B63\u5609",             // 1257 Shoka
+            "\u6B63\u5143",             // 1259 Shogen
+            "\u6587\u5FDC",             // 1260 Bun-o
+            "\u5F18\u9577",             // 1261 Kocho
+            "\u6587\u6C38",             // 1264 Bun-ei
+            "\u5EFA\u6CBB",             // 1275 Kenji
+            "\u5F18\u5B89",             // 1278 Koan
+            "\u6B63\u5FDC",             // 1288 Shoo
+            "\u6C38\u4EC1",             // 1293 Einin
+            "\u6B63\u5B89",             // 1299 Shoan
+            "\u4E7E\u5143",             // 1302 Kengen
+            "\u5609\u5143",             // 1303 Kagen
+            "\u5FB3\u6CBB",             // 1306 Tokuji
+            "\u5EF6\u6176",             // 1308 Enkei
+            "\u5FDC\u9577",             // 1311 Ocho
+            "\u6B63\u548C",             // 1312 Showa
+            "\u6587\u4FDD",             // 1317 Bunpo
+            "\u5143\u5FDC",             // 1319 Geno
+            "\u5143\u4EA8",             // 1321 Genkyo
+            "\u6B63\u4E2D",             // 1324 Shochu
+            "\u5609\u66A6",             // 1326 Kareki
+            "\u5143\u5FB3",             // 1329 Gentoku
+            "\u5143\u5F18",             // 1331 Genko
+            "\u5EFA\u6B66",             // 1334 Kemmu
+            "\u5EF6\u5143",             // 1336 Engen
+            "\u8208\u56FD",             // 1340 Kokoku
+            "\u6B63\u5E73",             // 1346 Shohei
+            "\u5EFA\u5FB3",             // 1370 Kentoku
+            "\u6587\u4E2D",             // 1372 Bunchu
+            "\u5929\u6388",             // 1375 Tenju
+            "\u5F18\u548C",             // 1381 Kowa
+            "\u5143\u4E2D",             // 1384 Genchu
+            "\u81F3\u5FB3",             // 1384 Meitoku
+            "\u5EB7\u66A6",             // 1379 Koryaku
+            "\u5609\u6176",             // 1387 Kakei
+            "\u5EB7\u5FDC",             // 1389 Koo
+            "\u660E\u5FB3",             // 1390 Meitoku
+            "\u5FDC\u6C38",             // 1394 Oei
+            "\u6B63\u9577",             // 1428 Shocho
+            "\u6C38\u4EAB",             // 1429 Eikyo
+            "\u5609\u5409",             // 1441 Kakitsu
+            "\u6587\u5B89",             // 1444 Bun-an
+            "\u5B9D\u5FB3",             // 1449 Hotoku
+            "\u4EAB\u5FB3",             // 1452 Kyotoku
+            "\u5EB7\u6B63",             // 1455 Kosho
+            "\u9577\u7984",             // 1457 Choroku
+            "\u5BDB\u6B63",             // 1460 Kansho
+            "\u6587\u6B63",             // 1466 Bunsho
+            "\u5FDC\u4EC1",             // 1467 Onin
+            "\u6587\u660E",             // 1469 Bunmei
+            "\u9577\u4EAB",             // 1487 Chokyo
+            "\u5EF6\u5FB3",             // 1489 Entoku
+            "\u660E\u5FDC",             // 1492 Meio
+            "\u6587\u4E80",             // 1501 Bunki
+            "\u6C38\u6B63",             // 1504 Eisho
+            "\u5927\u6C38",             // 1521 Taiei
+            "\u4EAB\u7984",             // 1528 Kyoroku
+            "\u5929\u6587",             // 1532 Tenmon
+            "\u5F18\u6CBB",             // 1555 Koji
+            "\u6C38\u7984",             // 1558 Eiroku
+            "\u5143\u4E80",             // 1570 Genki
+            "\u5929\u6B63",             // 1573 Tensho
+            "\u6587\u7984",             // 1592 Bunroku
+            "\u6176\u9577",             // 1596 Keicho
+            "\u5143\u548C",             // 1615 Genwa
+            "\u5BDB\u6C38",             // 1624 Kan-ei
+            "\u6B63\u4FDD",             // 1644 Shoho
+            "\u6176\u5B89",             // 1648 Keian
+            "\u627F\u5FDC",             // 1652 Shoo
+            "\u660E\u66A6",             // 1655 Meiryaku
+            "\u4E07\u6CBB",             // 1658 Manji
+            "\u5BDB\u6587",             // 1661 Kanbun
+            "\u5EF6\u5B9D",             // 1673 Enpo
+            "\u5929\u548C",             // 1681 Tenwa
+            "\u8C9E\u4EAB",             // 1684 Jokyo
+            "\u5143\u7984",             // 1688 Genroku
+            "\u5B9D\u6C38",             // 1704 Hoei
+            "\u6B63\u5FB3",             // 1711 Shotoku
+            "\u4EAB\u4FDD",             // 1716 Kyoho
+            "\u5143\u6587",             // 1736 Genbun
+            "\u5BDB\u4FDD",             // 1741 Kanpo
+            "\u5EF6\u4EAB",             // 1744 Enkyo
+            "\u5BDB\u5EF6",             // 1748 Kan-en
+            "\u5B9D\u66A6",             // 1751 Horyaku
+            "\u660E\u548C",             // 1764 Meiwa
+            "\u5B89\u6C38",             // 1772 An-ei
+            "\u5929\u660E",             // 1781 Tenmei
+            "\u5BDB\u653F",             // 1789 Kansei
+            "\u4EAB\u548C",             // 1801 Kyowa
+            "\u6587\u5316",             // 1804 Bunka
+            "\u6587\u653F",             // 1818 Bunsei
+            "\u5929\u4FDD",             // 1830 Tenpo
+            "\u5F18\u5316",             // 1844 Koka
+            "\u5609\u6C38",             // 1848 Kaei
+            "\u5B89\u653F",             // 1854 Ansei
+            "\u4E07\u5EF6",             // 1860 Man-en
+            "\u6587\u4E45",             // 1861 Bunkyu
+            "\u5143\u6CBB",             // 1864 Genji
+            "\u6176\u5FDC",             // 1865 Keio
+            "\u660E\u6CBB",             // 1868 Meiji
+            "\u5927\u6B63",             // 1912 Taisho
+            "\u662D\u548C",             // 1926 Showa
+            "\u5E73\u6210",             // 1989 Heisei
+        } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
diff --git a/src/com/ibm/icu/impl/data/LocaleScript.java b/src/com/ibm/icu/impl/data/LocaleScript.java
new file mode 100755
index 0000000..e184e91
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/LocaleScript.java
@@ -0,0 +1,424 @@
+/*
+*******************************************************************************
+* Copyright (C) 2001-2003, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle; 
+import com.ibm.icu.lang.UScript;
+
+public class LocaleScript extends ListResourceBundle { 
+
+      public Object[][] getContents() { 
+             return localeScript;
+      }
+
+      private static final Object[][] localeScript = new Object[][] {
+           {
+               "af", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "am", new int[] {
+                                  UScript.ETHIOPIC,
+                               }
+           },
+           {
+               "ar", new int[] {
+                                  UScript.ARABIC,
+                               }
+           },
+           {
+               "az", new int[] {
+                                  UScript.CYRILLIC,
+                               }
+           },
+           {
+               "be", new int[] {
+                                  UScript.CYRILLIC,
+                               }
+           },
+           {
+               "bg", new int[] {
+                                  UScript.CYRILLIC,
+                               }
+           },
+           {
+               "bn", new int[] {
+                                  UScript.BENGALI,
+                               }
+           },
+           {
+               "ca", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "cs", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "da", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "de", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "div", new int[] {
+                                  UScript.THAANA,
+                               }
+           },
+           {
+               "el", new int[] {
+                                  UScript.GREEK,
+                               }
+           },
+           {
+               "en", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "eo", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "es", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "et", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "eu", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "fa", new int[] {
+                                  UScript.ARABIC,
+                               }
+           },
+           {
+               "fi", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "fo", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "fr", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "ga", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "gl", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "gu", new int[] {
+                                  UScript.GUJARATI,
+                               }
+           },
+           {
+               "gv", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "he", new int[] {
+                                  UScript.HEBREW,
+                               }
+           },
+           {
+               "hi", new int[] {
+                                  UScript.DEVANAGARI,
+                               }
+           },
+           {
+               "hr", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "hu", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "hy", new int[] {
+                                  UScript.ARMENIAN,
+                               }
+           },
+           {
+               "id", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "is", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "it", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "iw", new int[] {
+                                  UScript.HEBREW,
+                               }
+           },
+           {
+               "ja", new int[] {
+                                  UScript.KATAKANA,
+                                  UScript.HIRAGANA,
+                                  UScript.HAN,
+                               }
+           },
+           {
+               "ka", new int[] {
+                                  UScript.GEORGIAN,
+                               }
+           },
+           {
+               "kk", new int[] {
+                                  UScript.CYRILLIC,
+                               }
+           },
+           {
+               "kl", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "kn", new int[] {
+                                  UScript.KANNADA,
+                               }
+           },
+           {
+               "ko", new int[] {
+                                  UScript.HANGUL,
+                                  UScript.HAN,
+                               }
+           },
+           {
+               "kok", new int[] {
+                                  UScript.DEVANAGARI,
+                               }
+           },
+           {
+               "kw", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "ky", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "lt", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "lv", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "mk", new int[] {
+                                  UScript.CYRILLIC,
+                               }
+           },
+           {
+               "mn", new int[] {
+                                  UScript.CYRILLIC,
+                               }
+           },
+           {
+               "mr", new int[] {
+                                  UScript.DEVANAGARI,
+                               }
+           },
+           {
+               "ms", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "mt", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "nb", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "nl", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "nn", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "pa", new int[] {
+                                  UScript.GURMUKHI,
+                               }
+           },
+           {
+               "pl", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "pt", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "ro", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "root", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "ru", new int[] {
+                                  UScript.CYRILLIC,
+                               }
+           },
+           {
+               "sa", new int[] {
+                                  UScript.DEVANAGARI,
+                               }
+           },
+           {
+               "sh", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "sk", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "sl", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "sq", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "sr", new int[] {
+                                  UScript.CYRILLIC,
+                               }
+           },
+           {
+               "sv", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "sw", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "syr", new int[] {
+                                  UScript.SYRIAC,
+                               }
+           },
+           {
+               "ta", new int[] {
+                                  UScript.TAMIL,
+                               }
+           },
+           {
+               "te", new int[] {
+                                  UScript.TELUGU,
+                               }
+           },
+           {
+               "th", new int[] {
+                                  UScript.THAI,
+                               }
+           },
+           {
+               "tr", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "tt", new int[] {
+                                  UScript.CYRILLIC,
+                               }
+           },
+           {
+               "uk", new int[] {
+                                  UScript.CYRILLIC,
+                               }
+           },
+           {
+               "ur", new int[] {
+                                  UScript.ARABIC,
+                               }
+           },
+           {
+               "uz", new int[] {
+                                  UScript.CYRILLIC,
+                               }
+           },
+           {
+               "vi", new int[] {
+                                  UScript.LATIN,
+                               }
+           },
+           {
+               "zh", new int[] {
+                                  UScript.HAN,
+                               }
+           },
+           {
+               "zh_TW", new int[] {
+                                  UScript.HAN,
+                                  UScript.BOPOMOFO,
+                               }
+           },
+      };
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/data/ResourceReader.java b/src/com/ibm/icu/impl/data/ResourceReader.java
new file mode 100755
index 0000000..f913c3d
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/ResourceReader.java
@@ -0,0 +1,127 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/ResourceReader.java,v $
+ * $Date: 2002/08/13 23:37:48 $
+ * $Revision: 1.5 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.io.*;
+
+/**
+ * A reader for text resource data in the current package.  The
+ * resource data is loaded through the class loader, so it will
+ * typically be a file in the same directory as the *.class files, or
+ * a file within a JAR file in the corresponding subdirectory.  The
+ * file must be a text file in one of the supported encodings; when the
+ * resource is opened by constructing a <code>ResourceReader</code>
+ * object the encoding is specified.
+ *
+ * <p>Although this class has a public API, it is designed for
+ * internal use by classes in the <code>com.ibm.icu.text</code> package.
+ *
+ * @author Alan Liu
+ */
+public class ResourceReader {
+    private BufferedReader reader;
+    private String resourceName;
+    private String encoding; // null for default encoding
+    private boolean isReset; // TRUE if we are at the start of the file
+
+    /**
+     * Construct a reader object for the text file of the given name
+     * in this package, using the given encoding.
+     * @param resourceName the name of the text file located in this
+     * package
+     * @param encoding the encoding of the text file; if unsupported
+     * an exception is thrown
+     * @exception UnsupportedEncodingException if
+     * <code>encoding</code> is not supported by the JDK.
+     */
+    public ResourceReader(String resourceName, String encoding)
+        throws UnsupportedEncodingException {
+
+        this.resourceName = resourceName;
+        this.encoding = encoding;
+        isReset = false;
+        _reset();
+    }
+
+    /**
+     * Construct a reader object for the text file of the given name
+     * in this package, using the default encoding.
+     * @param resourceName the name of the text file located in this
+     * package
+     */
+    public ResourceReader(String resourceName) {
+        this.resourceName = resourceName;
+        this.encoding = null;
+        isReset = false;
+        try {
+            _reset();
+        } catch (UnsupportedEncodingException e) {}
+    }
+
+    /**
+     * Read and return the next line of the file or <code>null</code>
+     * if the end of the file has been reached.
+     */
+    public String readLine() throws IOException {
+        if (isReset) {
+            // Remove BOMs
+            isReset = false;
+            String line = reader.readLine();
+            if (line.charAt(0) == '\uFFEF' ||
+                line.charAt(0) == '\uFEFF') {
+                return line.substring(1);
+            }
+            return line;
+        }
+        return reader.readLine();
+    }
+
+    /**
+     * Reset this reader so that the next call to
+     * <code>readLine()</code> returns the first line of the file
+     * again.  This is a somewhat expensive call, however, calling
+     * <code>reset()</code> after calling it the first time does
+     * nothing if <code>readLine()</code> has not been called in
+     * between.
+     */
+    public void reset() {
+        try {
+            _reset();
+        } catch (UnsupportedEncodingException e) {}
+        // We swallow this exception, if there is one.  If the encoding is
+        // invalid, the constructor will have thrown this exception already and
+        // the caller shouldn't use the object afterwards.
+    }
+
+    /**
+     * Reset to the start by reconstructing the stream and readers.
+     * We could also use mark() and reset() on the stream or reader,
+     * but that would cause them to keep the stream data around in
+     * memory.  We don't want that because some of the resource files
+     * are large, e.g., 400k.
+     */
+    private void _reset() throws UnsupportedEncodingException {
+        if (isReset) {
+            return;
+        }
+        InputStream is = getClass().getResourceAsStream(resourceName);
+        if (is == null) {
+            throw new IllegalArgumentException("Can't open " + resourceName);
+        }
+        InputStreamReader isr =
+            (encoding == null) ? new InputStreamReader(is) :
+                                 new InputStreamReader(is, encoding);
+        reader = new BufferedReader(isr);
+        isReset = true;
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Any_Accents.txt b/src/com/ibm/icu/impl/data/Transliterator_Any_Accents.txt
new file mode 100755
index 0000000..7987386
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Any_Accents.txt
@@ -0,0 +1,294 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Any_Accents.txt,v $
+# $Date: 2001/09/25 22:58:55 $
+# $Revision: 1.3 $
+#--------------------------------------------------------------------
+
+:: NFD (NFC) ;
+
+# to do: make reversible
+
+# define special conversion characters.
+# varients of this could use different characters, or set one or the other to null.
+
+$pre = \< ;
+$post = \> ;
+
+# Provide keyboard equivalents for common diacritics used in transliteration
+
+$pre \` $post <> \u0300 ; # COMBINING GRAVE ACCENT
+$pre \' $post <> \u0301 ; # COMBINING ACUTE ACCENT
+$pre \^ $post <> \u0302 ; # COMBINING CIRCUMFLEX ACCENT
+$pre \~ $post <> \u0303 ; # COMBINING TILDE
+$pre \- $post <> \u0304 ; # COMBINING MACRON
+$pre \" $post <> \u0308 ; # COMBINING DIAERESIS
+$pre \* $post <> \u030A ; # COMBINING RING ABOVE
+$pre \, $post <> \u0327 ; # COMBINING CEDILLA
+$pre '/' $post <> \u0338 ; # COMBINING LONG SOLIDUS OVERLAY
+$pre \. $post <> \u0323 ; # COMBINING DOT BELOW
+
+# Combine common characters
+
+$pre AE $post <> \u00C6 ; # LATIN CAPITAL LETTER AE
+$pre ae $post <> \u00E6 ; # LATIN SMALL LETTER AE
+$pre D $post <> \u00D0 ; # LATIN CAPITAL LETTER ETH
+$pre d $post <> \u00F0 ; # LATIN SMALL LETTER ETH
+$pre O'/' $post <> \u00D8 ; # LATIN CAPITAL LETTER O WITH STROKE
+$pre o'/' $post <> \u00F8 ; # LATIN SMALL LETTER O WITH STROKE
+$pre TH $post <> \u00DE ; # LATIN CAPITAL LETTER THORN
+$pre th $post <> \u00FE ; # LATIN SMALL LETTER THORN
+$pre OE $post <> \u0152 ; # LATIN CAPITAL LIGATURE OE
+$pre oe $post <> \u0153 ; # LATIN SMALL LIGATURE OE
+
+$pre ss $post <> \u00DF ; # LATIN SMALL LETTER SHARP S
+
+$pre NG $post <> \u014A ; # LATIN CAPITAL LETTER ENG
+$pre ng $post <> \u014B ; # LATIN SMALL LETTER ENG
+
+$pre T $post <> \u0398 ; # THETA
+$pre t $post <> \u03B8 ; # THETA
+$pre SH $post <> \u01A9 ; # LATIN CAPITAL LETTER ESH
+$pre sh $post <> \u0283 ; # LATIN SMALL LETTER ESH
+$pre ZH $post <> \u01B7 ; # LATIN CAPITAL LETTER EZH
+$pre zh $post <> \u0292 ; # LATIN SMALL LETTER EZH
+
+$pre U $post <> \u01B1 ; # LATIN CAPITAL LETTER UPSILON
+$pre u $post <> \u028A ; # LATIN SMALL LETTER UPSILON
+$pre A $post <> \u018F ; # LATIN CAPITAL LETTER SCHWA
+$pre a $post <> \u0259 ; # LATIN SMALL LETTER SCHWA
+$pre O $post <> \u0186 ; # LATIN CAPITAL LETTER OPEN O
+$pre o $post <> \u0254 ; # LATIN SMALL LETTER OPEN O
+$pre E $post <> \u0190 ; # LATIN CAPITAL LETTER OPEN E
+$pre e $post <> \u025B ; # LATIN SMALL LETTER OPEN E
+
+# three that don't have uppercases
+
+$pre '?' $post <> \u0294 ; # LATIN LETTER GLOTTAL STOP
+$pre i $post <> \u026A ; # LATIN LETTER SMALL CAPITAL I
+$pre v $post <> \u028C ; # LATIN SMALL LETTER TURNED V
+
+# Additional Characters that may be added in the future
+
+# $pre XXX $post <> \u0306 ; # COMBINING BREVE
+# $pre XXX $post <> \u0307 ; # COMBINING DOT ABOVE
+# $pre XXX $post <> \u0309 ; # COMBINING HOOK ABOVE
+# $pre XXX $post <> \u030B ; # COMBINING DOUBLE ACUTE ACCENT
+# $pre XXX $post <> \u030C ; # COMBINING CARON
+# $pre XXX $post <> \u030F ; # COMBINING DOUBLE GRAVE ACCENT
+# $pre XXX $post <> \u0311 ; # COMBINING INVERTED BREVE
+# $pre XXX $post <> \u0313 ; # COMBINING COMMA ABOVE
+# $pre XXX $post <> \u0314 ; # COMBINING REVERSED COMMA ABOVE
+# $pre XXX $post <> \u031B ; # COMBINING HORN
+# $pre XXX $post <> \u0324 ; # COMBINING DIAERESIS BELOW
+# $pre XXX $post <> \u0325 ; # COMBINING RING BELOW
+# $pre XXX $post <> \u0326 ; # COMBINING COMMA BELOW
+# $pre XXX $post <> \u0328 ; # COMBINING OGONEK
+# $pre XXX $post <> \u032D ; # COMBINING CIRCUMFLEX ACCENT BELOW
+# $pre XXX $post <> \u032E ; # COMBINING BREVE BELOW
+# $pre XXX $post <> \u0330 ; # COMBINING TILDE BELOW
+# $pre XXX $post <> \u0331 ; # COMBINING MACRON BELOW
+
+# $pre YYY $post <> \u00AA ; # FEMININE ORDINAL INDICATOR
+# $pre YYY $post <> \u00BA ; # MASCULINE ORDINAL INDICATOR
+# $pre YYY $post <> \u0110 ; # LATIN CAPITAL LETTER D WITH STROKE
+# $pre YYY $post <> \u0111 ; # LATIN SMALL LETTER D WITH STROKE
+# $pre YYY $post <> \u0126 ; # LATIN CAPITAL LETTER H WITH STROKE
+# $pre YYY $post <> \u0127 ; # LATIN SMALL LETTER H WITH STROKE
+# $pre YYY $post <> \u0131 ; # LATIN SMALL LETTER DOTLESS I
+# $pre YYY $post <> \u0138 ; # LATIN SMALL LETTER KRA
+# $pre YYY $post <> \u013F ; # LATIN CAPITAL LETTER L WITH MIDDLE DOT
+# $pre YYY $post <> \u0140 ; # LATIN SMALL LETTER L WITH MIDDLE DOT
+# $pre YYY $post <> \u0141 ; # LATIN CAPITAL LETTER L WITH STROKE
+# $pre YYY $post <> \u0142 ; # LATIN SMALL LETTER L WITH STROKE
+# $pre YYY $post <> \u0149 ; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+# $pre YYY $post <> \u0166 ; # LATIN CAPITAL LETTER T WITH STROKE
+# $pre YYY $post <> \u0167 ; # LATIN SMALL LETTER T WITH STROKE
+# $pre YYY $post <> \u017F ; # LATIN SMALL LETTER LONG S
+# $pre YYY $post <> \u0180 ; # LATIN SMALL LETTER B WITH STROKE
+# $pre YYY $post <> \u0181 ; # LATIN CAPITAL LETTER B WITH HOOK
+# $pre YYY $post <> \u0182 ; # LATIN CAPITAL LETTER B WITH TOPBAR
+# $pre YYY $post <> \u0183 ; # LATIN SMALL LETTER B WITH TOPBAR
+# $pre YYY $post <> \u0184 ; # LATIN CAPITAL LETTER TONE SIX
+# $pre YYY $post <> \u0185 ; # LATIN SMALL LETTER TONE SIX
+# $pre YYY $post <> \u0187 ; # LATIN CAPITAL LETTER C WITH HOOK
+# $pre YYY $post <> \u0188 ; # LATIN SMALL LETTER C WITH HOOK
+# $pre YYY $post <> \u0189 ; # LATIN CAPITAL LETTER AFRICAN D
+# $pre YYY $post <> \u018A ; # LATIN CAPITAL LETTER D WITH HOOK
+# $pre YYY $post <> \u018B ; # LATIN CAPITAL LETTER D WITH TOPBAR
+# $pre YYY $post <> \u018C ; # LATIN SMALL LETTER D WITH TOPBAR
+# $pre YYY $post <> \u018D ; # LATIN SMALL LETTER TURNED DELTA
+# $pre YYY $post <> \u018E ; # LATIN CAPITAL LETTER REVERSED E
+# $pre YYY $post <> \u0191 ; # LATIN CAPITAL LETTER F WITH HOOK
+# $pre YYY $post <> \u0192 ; # LATIN SMALL LETTER F WITH HOOK
+# $pre YYY $post <> \u0193 ; # LATIN CAPITAL LETTER G WITH HOOK
+# $pre YYY $post <> \u0194 ; # LATIN CAPITAL LETTER GAMMA
+# $pre YYY $post <> \u0195 ; # LATIN SMALL LETTER HV
+# $pre YYY $post <> \u0196 ; # LATIN CAPITAL LETTER IOTA
+# $pre YYY $post <> \u0197 ; # LATIN CAPITAL LETTER I WITH STROKE
+# $pre YYY $post <> \u0198 ; # LATIN CAPITAL LETTER K WITH HOOK
+# $pre YYY $post <> \u0199 ; # LATIN SMALL LETTER K WITH HOOK
+# $pre YYY $post <> \u019A ; # LATIN SMALL LETTER L WITH BAR
+# $pre YYY $post <> \u019B ; # LATIN SMALL LETTER LAMBDA WITH STROKE
+# $pre YYY $post <> \u019C ; # LATIN CAPITAL LETTER TURNED M
+# $pre YYY $post <> \u019D ; # LATIN CAPITAL LETTER N WITH LEFT HOOK
+# $pre YYY $post <> \u019E ; # LATIN SMALL LETTER N WITH LONG RIGHT LEG
+# $pre YYY $post <> \u019F ; # LATIN CAPITAL LETTER O WITH MIDDLE TILDE
+# $pre YYY $post <> \u01A2 ; # LATIN CAPITAL LETTER OI
+# $pre YYY $post <> \u01A3 ; # LATIN SMALL LETTER OI
+# $pre YYY $post <> \u01A4 ; # LATIN CAPITAL LETTER P WITH HOOK
+# $pre YYY $post <> \u01A5 ; # LATIN SMALL LETTER P WITH HOOK
+# $pre YYY $post <> \u01A6 ; # LATIN LETTER YR
+# $pre YYY $post <> \u01A7 ; # LATIN CAPITAL LETTER TONE TWO
+# $pre YYY $post <> \u01A8 ; # LATIN SMALL LETTER TONE TWO
+# $pre YYY $post <> \u01AA ; # LATIN LETTER REVERSED ESH LOOP
+# $pre YYY $post <> \u01AB ; # LATIN SMALL LETTER T WITH PALATAL HOOK
+# $pre YYY $post <> \u01AC ; # LATIN CAPITAL LETTER T WITH HOOK
+# $pre YYY $post <> \u01AD ; # LATIN SMALL LETTER T WITH HOOK
+# $pre YYY $post <> \u01AE ; # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
+# $pre YYY $post <> \u01B2 ; # LATIN CAPITAL LETTER V WITH HOOK
+# $pre YYY $post <> \u01B3 ; # LATIN CAPITAL LETTER Y WITH HOOK
+# $pre YYY $post <> \u01B4 ; # LATIN SMALL LETTER Y WITH HOOK
+# $pre YYY $post <> \u01B5 ; # LATIN CAPITAL LETTER Z WITH STROKE
+# $pre YYY $post <> \u01B6 ; # LATIN SMALL LETTER Z WITH STROKE
+# $pre YYY $post <> \u01B8 ; # LATIN CAPITAL LETTER EZH REVERSED
+# $pre YYY $post <> \u01B9 ; # LATIN SMALL LETTER EZH REVERSED
+# $pre YYY $post <> \u01BA ; # LATIN SMALL LETTER EZH WITH TAIL
+# $pre YYY $post <> \u01BB ; # LATIN LETTER TWO WITH STROKE
+# $pre YYY $post <> \u01BC ; # LATIN CAPITAL LETTER TONE FIVE
+# $pre YYY $post <> \u01BD ; # LATIN SMALL LETTER TONE FIVE
+# $pre YYY $post <> \u01BE ; # LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE
+# $pre YYY $post <> \u01BF ; # LATIN LETTER WYNN
+# $pre YYY $post <> \u01C0 ; # LATIN LETTER DENTAL CLICK
+# $pre YYY $post <> \u01C1 ; # LATIN LETTER LATERAL CLICK
+# $pre YYY $post <> \u01C2 ; # LATIN LETTER ALVEOLAR CLICK
+# $pre YYY $post <> \u01C3 ; # LATIN LETTER RETROFLEX CLICK
+# $pre YYY $post <> \u01C4 ; # LATIN CAPITAL LETTER DZ WITH CARON
+# $pre YYY $post <> \u01C5 ; # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+# $pre YYY $post <> \u01C6 ; # LATIN SMALL LETTER DZ WITH CARON
+# $pre YYY $post <> \u01C7 ; # LATIN CAPITAL LETTER LJ
+# $pre YYY $post <> \u01C8 ; # LATIN CAPITAL LETTER L WITH SMALL LETTER J
+# $pre YYY $post <> \u01C9 ; # LATIN SMALL LETTER LJ
+# $pre YYY $post <> \u01CA ; # LATIN CAPITAL LETTER NJ
+# $pre YYY $post <> \u01CB ; # LATIN CAPITAL LETTER N WITH SMALL LETTER J
+# $pre YYY $post <> \u01CC ; # LATIN SMALL LETTER NJ
+# $pre YYY $post <> \u01DD ; # LATIN SMALL LETTER TURNED E
+# $pre YYY $post <> \u01E4 ; # LATIN CAPITAL LETTER G WITH STROKE
+# $pre YYY $post <> \u01E5 ; # LATIN SMALL LETTER G WITH STROKE
+# $pre YYY $post <> \u01F1 ; # LATIN CAPITAL LETTER DZ
+# $pre YYY $post <> \u01F2 ; # LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+# $pre YYY $post <> \u01F3 ; # LATIN SMALL LETTER DZ
+# $pre YYY $post <> \u01F6 ; # LATIN CAPITAL LETTER HWAIR
+# $pre YYY $post <> \u01F7 ; # LATIN CAPITAL LETTER WYNN
+# $pre YYY $post <> \u021C ; # LATIN CAPITAL LETTER YOGH
+# $pre YYY $post <> \u021D ; # LATIN SMALL LETTER YOGH
+# $pre YYY $post <> \u0222 ; # LATIN CAPITAL LETTER OU
+# $pre YYY $post <> \u0223 ; # LATIN SMALL LETTER OU
+# $pre YYY $post <> \u0224 ; # LATIN CAPITAL LETTER Z WITH HOOK
+# $pre YYY $post <> \u0225 ; # LATIN SMALL LETTER Z WITH HOOK
+# $pre YYY $post <> \u0250 ; # LATIN SMALL LETTER TURNED A
+# $pre YYY $post <> \u0251 ; # LATIN SMALL LETTER ALPHA
+# $pre YYY $post <> \u0252 ; # LATIN SMALL LETTER TURNED ALPHA
+# $pre YYY $post <> \u0253 ; # LATIN SMALL LETTER B WITH HOOK
+# $pre YYY $post <> \u0255 ; # LATIN SMALL LETTER C WITH CURL
+# $pre YYY $post <> \u0256 ; # LATIN SMALL LETTER D WITH TAIL
+# $pre YYY $post <> \u0257 ; # LATIN SMALL LETTER D WITH HOOK
+# $pre YYY $post <> \u0258 ; # LATIN SMALL LETTER REVERSED E
+# $pre YYY $post <> \u025A ; # LATIN SMALL LETTER SCHWA WITH HOOK
+# $pre YYY $post <> \u025C ; # LATIN SMALL LETTER REVERSED OPEN E
+# $pre YYY $post <> \u025D ; # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
+# $pre YYY $post <> \u025E ; # LATIN SMALL LETTER CLOSED REVERSED OPEN E
+# $pre YYY $post <> \u025F ; # LATIN SMALL LETTER DOTLESS J WITH STROKE
+# $pre YYY $post <> \u0260 ; # LATIN SMALL LETTER G WITH HOOK
+# $pre YYY $post <> \u0261 ; # LATIN SMALL LETTER SCRIPT G
+# $pre YYY $post <> \u0262 ; # LATIN LETTER SMALL CAPITAL G
+# $pre YYY $post <> \u0263 ; # LATIN SMALL LETTER GAMMA
+# $pre YYY $post <> \u0264 ; # LATIN SMALL LETTER RAMS HORN
+# $pre YYY $post <> \u0265 ; # LATIN SMALL LETTER TURNED H
+# $pre YYY $post <> \u0266 ; # LATIN SMALL LETTER H WITH HOOK
+# $pre YYY $post <> \u0267 ; # LATIN SMALL LETTER HENG WITH HOOK
+# $pre YYY $post <> \u0268 ; # LATIN SMALL LETTER I WITH STROKE
+# $pre YYY $post <> \u0269 ; # LATIN SMALL LETTER IOTA
+# $pre YYY $post <> \u026B ; # LATIN SMALL LETTER L WITH MIDDLE TILDE
+# $pre YYY $post <> \u026C ; # LATIN SMALL LETTER L WITH BELT
+# $pre YYY $post <> \u026D ; # LATIN SMALL LETTER L WITH RETROFLEX HOOK
+# $pre YYY $post <> \u026E ; # LATIN SMALL LETTER LEZH
+# $pre YYY $post <> \u026F ; # LATIN SMALL LETTER TURNED M
+# $pre YYY $post <> \u0270 ; # LATIN SMALL LETTER TURNED M WITH LONG LEG
+# $pre YYY $post <> \u0271 ; # LATIN SMALL LETTER M WITH HOOK
+# $pre YYY $post <> \u0272 ; # LATIN SMALL LETTER N WITH LEFT HOOK
+# $pre YYY $post <> \u0273 ; # LATIN SMALL LETTER N WITH RETROFLEX HOOK
+# $pre YYY $post <> \u0274 ; # LATIN LETTER SMALL CAPITAL N
+# $pre YYY $post <> \u0275 ; # LATIN SMALL LETTER BARRED O
+# $pre YYY $post <> \u0276 ; # LATIN LETTER SMALL CAPITAL OE
+# $pre YYY $post <> \u0277 ; # LATIN SMALL LETTER CLOSED OMEGA
+# $pre YYY $post <> \u0278 ; # LATIN SMALL LETTER PHI
+# $pre YYY $post <> \u0279 ; # LATIN SMALL LETTER TURNED R
+# $pre YYY $post <> \u027A ; # LATIN SMALL LETTER TURNED R WITH LONG LEG
+# $pre YYY $post <> \u027B ; # LATIN SMALL LETTER TURNED R WITH HOOK
+# $pre YYY $post <> \u027C ; # LATIN SMALL LETTER R WITH LONG LEG
+# $pre YYY $post <> \u027D ; # LATIN SMALL LETTER R WITH TAIL
+# $pre YYY $post <> \u027E ; # LATIN SMALL LETTER R WITH FISHHOOK
+# $pre YYY $post <> \u027F ; # LATIN SMALL LETTER REVERSED R WITH FISHHOOK
+# $pre YYY $post <> \u0280 ; # LATIN LETTER SMALL CAPITAL R
+# $pre YYY $post <> \u0281 ; # LATIN LETTER SMALL CAPITAL INVERTED R
+# $pre YYY $post <> \u0282 ; # LATIN SMALL LETTER S WITH HOOK
+# $pre YYY $post <> \u0284 ; # LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
+# $pre YYY $post <> \u0285 ; # LATIN SMALL LETTER SQUAT REVERSED ESH
+# $pre YYY $post <> \u0286 ; # LATIN SMALL LETTER ESH WITH CURL
+# $pre YYY $post <> \u0287 ; # LATIN SMALL LETTER TURNED T
+# $pre YYY $post <> \u0288 ; # LATIN SMALL LETTER T WITH RETROFLEX HOOK
+# $pre YYY $post <> \u0289 ; # LATIN SMALL LETTER U BAR
+# $pre YYY $post <> \u028B ; # LATIN SMALL LETTER V WITH HOOK
+# $pre YYY $post <> \u028D ; # LATIN SMALL LETTER TURNED W
+# $pre YYY $post <> \u028E ; # LATIN SMALL LETTER TURNED Y
+# $pre YYY $post <> \u028F ; # LATIN LETTER SMALL CAPITAL Y
+# $pre YYY $post <> \u0290 ; # LATIN SMALL LETTER Z WITH RETROFLEX HOOK
+# $pre YYY $post <> \u0291 ; # LATIN SMALL LETTER Z WITH CURL
+# $pre YYY $post <> \u0293 ; # LATIN SMALL LETTER EZH WITH CURL
+# $pre YYY $post <> \u0294 ; # LATIN LETTER GLOTTAL STOP
+# $pre YYY $post <> \u0295 ; # LATIN LETTER PHARYNGEAL VOICED FRICATIVE
+# $pre YYY $post <> \u0296 ; # LATIN LETTER INVERTED GLOTTAL STOP
+# $pre YYY $post <> \u0297 ; # LATIN LETTER STRETCHED C
+# $pre YYY $post <> \u0298 ; # LATIN LETTER BILABIAL CLICK
+# $pre YYY $post <> \u0299 ; # LATIN LETTER SMALL CAPITAL B
+# $pre YYY $post <> \u029A ; # LATIN SMALL LETTER CLOSED OPEN E
+# $pre YYY $post <> \u029B ; # LATIN LETTER SMALL CAPITAL G WITH HOOK
+# $pre YYY $post <> \u029C ; # LATIN LETTER SMALL CAPITAL H
+# $pre YYY $post <> \u029D ; # LATIN SMALL LETTER J WITH CROSSED-TAIL
+# $pre YYY $post <> \u029E ; # LATIN SMALL LETTER TURNED K
+# $pre YYY $post <> \u029F ; # LATIN LETTER SMALL CAPITAL L
+# $pre YYY $post <> \u02A0 ; # LATIN SMALL LETTER Q WITH HOOK
+# $pre YYY $post <> \u02A1 ; # LATIN LETTER GLOTTAL STOP WITH STROKE
+# $pre YYY $post <> \u02A2 ; # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
+# $pre YYY $post <> \u02A3 ; # LATIN SMALL LETTER DZ DIGRAPH
+# $pre YYY $post <> \u02A4 ; # LATIN SMALL LETTER DEZH DIGRAPH
+# $pre YYY $post <> \u02A5 ; # LATIN SMALL LETTER DZ DIGRAPH WITH CURL
+# $pre YYY $post <> \u02A6 ; # LATIN SMALL LETTER TS DIGRAPH
+# $pre YYY $post <> \u02A7 ; # LATIN SMALL LETTER TESH DIGRAPH
+# $pre YYY $post <> \u02A8 ; # LATIN SMALL LETTER TC DIGRAPH WITH CURL
+# $pre YYY $post <> \u02A9 ; # LATIN SMALL LETTER FENG DIGRAPH
+# $pre YYY $post <> \u02AA ; # LATIN SMALL LETTER LS DIGRAPH
+# $pre YYY $post <> \u02AB ; # LATIN SMALL LETTER LZ DIGRAPH
+# $pre YYY $post <> \u02AC ; # LATIN LETTER BILABIAL PERCUSSIVE
+# $pre YYY $post <> \u02AD ; # LATIN LETTER BIDENTAL PERCUSSIVE
+# $pre YYY $post <> \u02B0 ; # MODIFIER LETTER SMALL H
+# $pre YYY $post <> \u02B1 ; # MODIFIER LETTER SMALL H WITH HOOK
+# $pre YYY $post <> \u02B2 ; # MODIFIER LETTER SMALL J
+# $pre YYY $post <> \u02B3 ; # MODIFIER LETTER SMALL R
+# $pre YYY $post <> \u02B4 ; # MODIFIER LETTER SMALL TURNED R
+# $pre YYY $post <> \u02B5 ; # MODIFIER LETTER SMALL TURNED R WITH HOOK
+# $pre YYY $post <> \u02B6 ; # MODIFIER LETTER SMALL CAPITAL INVERTED R
+# $pre YYY $post <> \u02B7 ; # MODIFIER LETTER SMALL W
+# $pre YYY $post <> \u02B8 ; # MODIFIER LETTER SMALL Y
+# $pre YYY $post <> \u02E0 ; # MODIFIER LETTER SMALL GAMMA
+# $pre YYY $post <> \u02E1 ; # MODIFIER LETTER SMALL L
+# $pre YYY $post <> \u02E2 ; # MODIFIER LETTER SMALL S
+# $pre YYY $post <> \u02E3 ; # MODIFIER LETTER SMALL X
+# $pre YYY $post <> \u02E4 ; # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+# $pre YYY $post <> \u1E9A ; # LATIN SMALL LETTER A WITH RIGHT HALF RING
+# $pre YYY $post <> \u207F ; # SUPERSCRIPT LATIN SMALL LETTER N
+
+:: NFC (NFD) ;
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Any_Publishing.txt b/src/com/ibm/icu/impl/data/Transliterator_Any_Publishing.txt
new file mode 100755
index 0000000..6af91ee
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Any_Publishing.txt
@@ -0,0 +1,38 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Any_Publishing.txt,v $
+# $Date: 2001/10/23 00:23:46 $
+# $Revision: 1.4 $
+#--------------------------------------------------------------------
+
+# Test case
+# "The" "(quick)" ('brown') `fox' ` jumped --     "over?"
+
+# Variables
+
+$single = \' ;
+$space = ' ' ;
+$double = \" ;
+$back = \` ;
+$tab = '\u0008' ;
+$makeRight = [[:Z:][:Ps:][:Pi:]$] ;
+
+# fix UNIX quotes
+
+$back $back > “ ;
+$back > ‘ ;
+
+# fix typewriter quotes, by context
+
+$makeRight {$double} <> “ ;
+$double <> ” ;
+
+$makeRight {$single} <> ‘ ;
+$single <> ’;
+
+# fix multiple spaces and hyphens
+
+$space {$space} > ;
+'--' <> — ;
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Arabic_Latin.txt b/src/com/ibm/icu/impl/data/Transliterator_Arabic_Latin.txt
new file mode 100644
index 0000000..e74c0ce
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Arabic_Latin.txt
@@ -0,0 +1,150 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Arabic_Latin.txt,v $
+# $Date: 2002/07/15 23:26:26 $
+# $Revision: 1.3 $
+#--------------------------------------------------------------------
+
+# Generally follows UNGEGN <http://www.eki.ee/wgrs/rom1_ar.pdf>
+# Occasionally deviates in the direction of ISO 233 <http://homepage.mac.com/sirbinks/pdf/Arabic.pdf>
+# a) where required for disambiguation.
+# b) with underdot instead of cedilla for letter like SAD, since
+#     those are explicitly in Unicode for transliteration.
+# c) with extra non-Arabic-language letters, like PEH
+
+# Does *not* do assimilation of "al", nor hyphenation.
+# While it could be done, we need to determine whether a prefix "al" could
+# occur other than as the definite article (since no space is used).
+
+:: [[:Arabic:] [‎ⁿ\u060C\u061B\u061F\u0640\u064B-\u0655\u0660-\u066C\u06F0-\u06F9\uFDFC]] ;
+:: NFKD (NFC);
+$disambig =  ̱ ; 
+$disambig2 =  ̰ ;
+$under =  ̣ ;
+
+$notAbove = [[:^ccc=0:]&[:^ccc=230:]];
+
+# non-letters
+
+ ٫ <> '.' $disambig ; # ARABIC DECIMAL SEPARATOR
+ ٬ <> ',' $disambig ; # ARABIC THOUSANDS SEPARATOR
+#  ٭ <> ; # ARABIC FIVE POINTED STAR // no need to transliterate
+
+، <> ',' ; # ARABIC COMMA
+ ؛ <> ';' ; # ARABIC SEMICOLON
+ ؟ <> '?' ; # ARABIC QUESTION MARK
+ ٪ <> '%' ; # ARABIC PERCENT SIGN
+
+ ۰ <> 0 $disambig ; # EXTENDED ARABIC-INDIC DIGIT ZERO
+ ۱ <> 1 $disambig ; # EXTENDED ARABIC-INDIC DIGIT ONE
+ ۲ <> 2 $disambig ; # EXTENDED ARABIC-INDIC DIGIT TWO
+ ۳ <> 3 $disambig ; # EXTENDED ARABIC-INDIC DIGIT THREE
+ ۴ <> 4 $disambig ; # EXTENDED ARABIC-INDIC DIGIT FOUR
+ ۵ <> 5 $disambig ; # EXTENDED ARABIC-INDIC DIGIT FIVE
+ ۶ <> 6 $disambig ; # EXTENDED ARABIC-INDIC DIGIT SIX
+ ۷ <> 7 $disambig ; # EXTENDED ARABIC-INDIC DIGIT SEVEN
+ ۸ <> 8 $disambig ; # EXTENDED ARABIC-INDIC DIGIT EIGHT
+ ۹ <> 9 $disambig ; # EXTENDED ARABIC-INDIC DIGIT NINE
+
+ ٠ <> 0 ; # ARABIC-INDIC DIGIT ZERO
+ ١ <> 1 ; # ARABIC-INDIC DIGIT ONE
+ ٢ <> 2 ; # ARABIC-INDIC DIGIT TWO
+ ٣ <> 3 ; # ARABIC-INDIC DIGIT THREE
+ ٤ <> 4 ; # ARABIC-INDIC DIGIT FOUR
+ ٥ <> 5 ; # ARABIC-INDIC DIGIT FIVE
+ ٦ <> 6 ; # ARABIC-INDIC DIGIT SIX
+ ٧ <> 7 ; # ARABIC-INDIC DIGIT SEVEN
+ ٨ <> 8 ; # ARABIC-INDIC DIGIT EIGHT
+ ٩ <> 9 ; # ARABIC-INDIC DIGIT NINE
+
+# letters
+
+# long vowels
+  َا<> ā ; # ARABIC FATHA, ARABIC LETTER ALEF
+  ُو <> ū ; # ARABIC DAMMA, ARABIC LETTER WAW
+ ِي <> ī ; # ARABIC KASRA, ARABIC LETTER YEH
+
+# longer items moved here to prevent masking
+ ث <> t h $disambig ; # ARABIC LETTER THEH
+ ذ <> d h $disambig ; # ARABIC LETTER THAL
+ ش <> s h $disambig ; # ARABIC LETTER SHEEN
+ ص <> s $under ; # ARABIC LETTER SAD
+ ض <> d $under ; # ARABIC LETTER DAD
+ ط <> t $under ; # ARABIC LETTER TAH
+ ظ <> z $under ; # ARABIC LETTER ZAH
+ غ <> g h $disambig ; # ARABIC LETTER GHAIN
+
+# WARNING: special case
+# <t, umlaut, half-ring below> will be canonically ordered as <t, half-ring below, umlaut>
+# so on the return, we have to skip over (but preserve) the half-ring below (or others like it)
+# ةٕ < ẗ̹ ; # LATIN SMALL LETTER T, COMBINING RIGHT HALF RING BELOW, COMBINING DIAERESIS
+
+ ة <> t \u0308 ; # ARABIC LETTER TEH MARBUTA
+ ة | $1 < t ($notAbove+) \u0308 ; # ARABIC LETTER TEH MARBUTA
+
+# non-Arabic language
+ ژ <> z h $disambig ; # ARABIC LETTER JEH
+ ڭ <> n $disambig g ; # ARABIC LETTER NG
+ ۋ <> v $disambig ; # ARABIC LETTER VE
+ ی <> y $disambig2 ; # ARABIC LETTER FARSI YEH
+
+# Arabic language
+
+ ء <> ʾ ; # ARABIC LETTER HAMZA
+ ا <> a $under; # ARABIC LETTER ALEF
+ ب <> b ; # ARABIC LETTER BEH
+ ت <> t ; # ARABIC LETTER TEH
+ ج <> j ; # ARABIC LETTER JEEM
+ ح <> h $under ; # ARABIC LETTER HAH
+ خ <> k h $disambig ; # ARABIC LETTER KHAH
+ د <> d ; # ARABIC LETTER DAL
+ ر <> r ; # ARABIC LETTER REH
+ ز <> z ; # ARABIC LETTER ZAIN
+ س <> s ; # ARABIC LETTER SEEN
+ ع <> ʿ ; # ARABIC LETTER AIN
+  ـ > ; # ARABIC TATWEEL
+ ف <> f ; # ARABIC LETTER FEH
+ ق <> q ; # ARABIC LETTER QAF
+ ك <> k ; # ARABIC LETTER KAF
+ ل <> l ; # ARABIC LETTER LAM
+ م <> m ; # ARABIC LETTER MEEM
+ ن <> n ; # ARABIC LETTER NOON
+ ه <> h ; # ARABIC LETTER HEH
+ و <> w ; # ARABIC LETTER WAW
+ ى <> y $disambig ; # ARABIC LETTER ALEF MAKSURA
+ ي <> y ; # ARABIC LETTER YEH
+ ً <> aⁿ ; # ARABIC FATHATAN
+ ٌ <> uⁿ ; # ARABIC DAMMATAN
+ ٍ <> iⁿ ; # ARABIC KASRATAN
+ َ <> a ; # ARABIC FATHA
+ ُ <> u ; # ARABIC DAMMA
+ ِ <> i ; # ARABIC KASRA
+ ّ <>   ̃ ; # ARABIC SHADDA
+ ْ <>   ̊ ; # ARABIC SUKUN
+
+# special combining marks
+ ٓ <>  ̂ ; # ARABIC MADDAH ABOVE
+ ٔ <>  ̉ ; # ARABIC HAMZA ABOVE
+ ٕ <>  ̹ ; # ARABIC HAMZA BELOW
+
+# Some non-Arabic language (not in UNGEGN)
+ پ <> p ; # ARABIC LETTER PEH
+ چ <> c h $disambig ; # ARABIC LETTER TCHEH
+ ڤ <> v ; # ARABIC LETTER VEH
+# ڥ <> v $disambig ; # ARABIC LETTER FEH WITH THREE DOTS BELOW
+# ڢ <> f $disambig ; # ARABIC LETTER FEH WITH DOT MOVED BELOW
+ گ <> g ; # ARABIC LETTER GAF
+
+# fallbacks
+| s < c } [eiy];
+| k < c ;
+| i < e ;
+| u < o ;
+| ks < x ;
+| n < ‎ⁿ;
+
+:: (lower) ;
+::NFC (NFD);
+:: ( [[:Latin:] [%,.0-9;?\u02BE-\u02BF\u0302-\u0304\u0308-\u030A\u0323\u0330-\u0331\u0339\u037E]] );
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Bengali_InterIndic.txt b/src/com/ibm/icu/impl/data/Transliterator_Bengali_InterIndic.txt
new file mode 100755
index 0000000..aa37744
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Bengali_InterIndic.txt
@@ -0,0 +1,105 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Bengali_InterIndic.txt,v $
+# $Date: 2002/08/14 00:40:58 $
+# $Revision: 1.10 $
+#--------------------------------------------------------------------
+
+# Bengali-InterIndic
+
+\u09C7\u09BE>\uE04B; # VOWEL SIGN O
+\u09C7\u09D7>\uE04C; # VOWEL SIGN AU
+\u0981>\uE001; # SIGN CANDRABINDU
+\u0982>\uE002; # SIGN ANUSVARA
+\u0983>\uE003; # SIGN VISARGA
+\u0985>\uE005; # LETTER A
+\u0986>\uE006; # LETTER AA
+\u0987>\uE007; # LETTER I
+\u0988>\uE008; # LETTER II
+\u0989>\uE009; # LETTER U
+\u098A>\uE00A; # LETTER UU
+\u098B>\uE00B; # LETTER VOCALIC R
+\u098C>\uE00C; # LETTER VOCALIC L
+\u098F>\uE00F; # LETTER E
+\u0990>\uE010; # LETTER AI
+\u0993>\uE013; # LETTER O
+\u0994>\uE014; # LETTER AU
+\u0995>\uE015; # LETTER KA
+\u0996>\uE016; # LETTER KHA
+\u0997>\uE017; # LETTER GA
+\u0998>\uE018; # LETTER GHA
+\u0999>\uE019; # LETTER NGA
+\u099A>\uE01A; # LETTER CA
+\u099B>\uE01B; # LETTER CHA
+\u099C>\uE01C; # LETTER JA
+\u099D>\uE01D; # LETTER JHA
+\u099E>\uE01E; # LETTER NYA
+\u099F>\uE01F; # LETTER TTA
+\u09A0>\uE020; # LETTER TTHA
+\u09A1>\uE021; # LETTER DDA
+\u09A2>\uE022; # LETTER DDHA
+\u09A3>\uE023; # LETTER NNA
+\u09A4>\uE024; # LETTER TA
+\u09A5>\uE025; # LETTER THA
+\u09A6>\uE026; # LETTER DA
+\u09A7>\uE027; # LETTER DHA
+\u09A8>\uE028; # LETTER NA
+\u09AA>\uE02A; # LETTER PA
+\u09AB>\uE02B; # LETTER PHA
+\u09AC>\uE02C; # LETTER BA
+\u09AD>\uE02D; # LETTER BHA
+\u09AE>\uE02E; # LETTER MA
+\u09AF>\uE02F; # LETTER YA
+\u09B0>\uE030; # LETTER RA
+\u09B2>\uE032; # LETTER LA
+\u09B6>\uE036; # LETTER SHA
+\u09B7>\uE037; # LETTER SSA
+\u09B8>\uE038; # LETTER SA
+\u09B9>\uE039; # LETTER HA
+\u09BC>\uE03C; # SIGN NUKTA
+\u09BE>\uE03E; # VOWEL SIGN AA
+\u09BF>\uE03F; # VOWEL SIGN I
+\u09C0>\uE040; # VOWEL SIGN II
+\u09C1>\uE041; # VOWEL SIGN U
+\u09C2>\uE042; # VOWEL SIGN UU
+\u09C3>\uE043; # VOWEL SIGN VOCALIC R
+\u09C4>\uE044; # VOWEL SIGN VOCALIC RR
+\u09C7>\uE047; # VOWEL SIGN E
+\u09C8>\uE048; # VOWEL SIGN AI
+\u09CB>\uE04B;
+\u09CC>\uE04C;
+#
+\u09CD>\uE04D; # SIGN VIRAMA
+\u09D7>\uE057; # AU LENGTH MARK
+#
+\u09E0>\uE060; # LETTER VOCALIC RR
+\u09E1>\uE061; # LETTER VOCALIC LL
+\u09E2>\uE062; # VOWEL SIGN VOCALIC L
+\u09E3>\uE063; # VOWEL SIGN VOCALIC LL
+\u09E6>\uE066; # DIGIT ZERO
+\u09E7>\uE067; # DIGIT ONE
+\u09E8>\uE068; # DIGIT TWO
+\u09E9>\uE069; # DIGIT THREE
+\u09EA>\uE06A; # DIGIT FOUR
+\u09EB>\uE06B; # DIGIT FIVE
+\u09EC>\uE06C; # DIGIT SIX
+\u09ED>\uE06D; # DIGIT SEVEN
+\u09EE>\uE06E; # DIGIT EIGHT
+\u09EF>\uE06F; # DIGIT NINE
+\u09F0>\ue070; #  Bengali-InterIndic: LETTER RA WITH MIDDLE DIAGONAL
+\u09F1>\ue071; # Bengali-InterIndic: LETTER RA WITH LOWER DIAGONAL
+\u09F2>;       # UNMAPPED Bengali-InterIndic: RUPEE MARK
+\u09F3>;       # UNMAPPED Bengali-InterIndic: RUPEE SIGN
+\u09F4>;       # UNMAPPED Bengali-InterIndic: CURRENCY NUMERATOR ONE
+\u09F5>;       # UNMAPPED Bengali-InterIndic: CURRENCY NUMERATOR TWO
+\u09F6>;       # UNMAPPED Bengali-InterIndic: CURRENCY NUMERATOR THREE
+\u09F7>;       # UNMAPPED Bengali-InterIndic: CURRENCY NUMERATOR FOUR
+\u09F8>;       # UNMAPPED Bengali-InterIndic: CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
+\u09F9>;       # UNMAPPED Bengali-InterIndic: CURRENCY DENOMINATOR SIXTEEN
+\u09FA>\ue07A; # ISSHAR
+\u0964>\ue064;        # DANDA
+\u0965>\ue065;        # DOUBLE DANDA
+#    :: NFC (NFD) ;
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Cyrillic_Latin.txt b/src/com/ibm/icu/impl/data/Transliterator_Cyrillic_Latin.txt
new file mode 100755
index 0000000..953ec4c
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Cyrillic_Latin.txt
@@ -0,0 +1,310 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Cyrillic_Latin.txt,v $
+# $Date: 2001/12/01 00:14:55 $
+# $Revision: 1.9 $
+#--------------------------------------------------------------------
+# TODO: add remaining characters
+# Should add variants for Russian-English, Russian-German
+# Those can use this as a base, and then remap cases
+# like a $hat to ya or ja.
+
+# :: [\u0000-\u007E \u02B9 \u02BA [:Cyrillic:] [:Latin:] [:nonspacing mark:]] ;
+### WARNING, \u0308 must be added to the generated filters, in both directions ###
+# MINIMAL FILTER
+:: [\u0308\u0102-\u0103\u0114-\u0115\u011E-\u011F\u012C-\u012D\u014E-\u014F\u016C-\u016D\u0306\u0400-\u045F\u0490-\u0495\u0498-\u0499\u04C1-\u04C2\u04D0-\u04DF\u04E2-\u04E7\u04EC-\u04F5\u04F8-\u04F9\u1E1C-\u1E1D\u1EAE-\u1EB7\u1FB0\u1FB8\u1FD0\u1FD8\u1FE0\u1FE8] ;
+:: NFD (NFC) ;
+
+$modprime = \u02B9;
+$modprime2 = \u02BA;
+
+$grave = \u0300;
+$acute = \u0301;
+$hat = \u0302;
+$breve = \u0306 ;
+$dot = \u0307 ;
+$caron = \u030C ;
+$comma = \u0326 ;
+$under = \u0331 ;
+
+# move up so not masked
+
+я <> a  $hat ; # CYRILLIC SMALL LETTER YA
+Я <>  A $hat ; # CYRILLIC CAPITAL LETTER YA
+
+ч <> c $caron ; # CYRILLIC SMALL LETTER CHE
+Ч <> C $caron; # CYRILLIC CAPITAL LETTER CHE
+# ҷ <> XXX ; # CYRILLIC SMALL LETTER CHE WITH DESCENDER
+# Ҷ <> XXX ; # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+# ӌ <> XXX ; # CYRILLIC SMALL LETTER KHAKASSIAN CHE
+# Ӌ <> XXX ; # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+# ҹ <> XXX ; # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+# Ҹ <> XXX ; # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+
+э <> e $acute; # CYRILLIC SMALL LETTER E
+Э <> E $acute; # CYRILLIC CAPITAL LETTER E
+є <> e $hat; # CYRILLIC SMALL LETTER UKRAINIAN IE
+Є <> E $hat; # CYRILLIC CAPITAL LETTER UKRAINIAN IE
+
+ш <> s $caron ; # CYRILLIC SMALL LETTER SHA
+Ш <> S $caron ; # CYRILLIC CAPITAL LETTER SHA
+щ <> s $hat ; # CYRILLIC SMALL LETTER SHCHA
+Щ <> S $hat; # CYRILLIC CAPITAL LETTER SHCHA
+
+ѕ <> z $hat ; # CYRILLIC SMALL LETTER DZE
+Ѕ <> Z $hat; # CYRILLIC CAPITAL LETTER DZE
+# ӡ <> XXX ; # CYRILLIC SMALL LETTER ABKHASIAN DZE
+# Ӡ <> XXX ; # CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+
+ю <> u $hat ; # CYRILLIC SMALL LETTER YU
+Ю <>  U $hat ; # CYRILLIC CAPITAL LETTER YU
+
+і <> i $acute; # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+І <> I $acute; # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ј <> j $caron; # CYRILLIC SMALL LETTER JE
+Ј <> J $caron; # CYRILLIC CAPITAL LETTER JE
+
+љ <> l $hat ; # CYRILLIC SMALL LETTER LJE
+Љ <> L $hat ; # CYRILLIC CAPITAL LETTER LJE
+њ <> n $hat ; # CYRILLIC SMALL LETTER NJE
+Њ <> N $hat ; # CYRILLIC CAPITAL LETTER NJE
+
+ћ <> c $acute ; # CYRILLIC SMALL LETTER TSHE
+Ћ <> C $acute ; # CYRILLIC CAPITAL LETTER TSHE
+
+џ <> d $hat ; # CYRILLIC SMALL LETTER DZHE
+Џ <> D $hat ; # CYRILLIC CAPITAL LETTER DZHE
+
+# Normal order
+
+а <> a ; # CYRILLIC SMALL LETTER A
+А <> A ; # CYRILLIC CAPITAL LETTER A
+ә <>  \u0259 ; # CYRILLIC SMALL LETTER SCHWA
+Ә <> \u018F ; # CYRILLIC CAPITAL LETTER SCHWA
+ӕ <> \u00E6 ; # CYRILLIC SMALL LIGATURE A IE
+Ӕ <> \u00C6 ; # CYRILLIC CAPITAL LIGATURE A IE
+б <> b ; # CYRILLIC SMALL LETTER BE
+Б <> B ; # CYRILLIC CAPITAL LETTER BE
+в <> v ; # CYRILLIC SMALL LETTER VE
+В <> V ; # CYRILLIC CAPITAL LETTER VE
+
+ґ <> g $grave ; # CYRILLIC SMALL LETTER GHE WITH UPTURN
+Ґ <> G $grave ; # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ғ <> g $dot ; # CYRILLIC SMALL LETTER GHE WITH STROKE
+Ғ <> G $dot; # CYRILLIC CAPITAL LETTER GHE WITH STROKE
+ҕ <> g $breve; # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+Ҕ <> G $breve; # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+г <> g ; # CYRILLIC SMALL LETTER GHE
+Г <> G ; # CYRILLIC CAPITAL LETTER GHE
+
+д <> d; # CYRILLIC SMALL LETTER DE
+Д <> D; # CYRILLIC CAPITAL LETTER DE
+ђ <> đ ; # CYRILLIC SMALL LETTER DJE
+Ђ <> Đ ; # CYRILLIC CAPITAL LETTER DJE
+ҙ <> z $comma ; # CYRILLIC SMALL LETTER ZE WITH DESCENDER
+Ҙ <> Z $comma ; # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+е <> e ; # CYRILLIC SMALL LETTER IE
+Е <> E; # CYRILLIC CAPITAL LETTER IE
+
+ж <> z $caron; # CYRILLIC SMALL LETTER ZHE
+Ж <> Z $caron; # CYRILLIC CAPITAL LETTER ZHE
+
+# җ <> XXX ; # CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+# Җ <> XXX ; # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+
+з <> z ; # CYRILLIC SMALL LETTER ZE
+З <> Z; # CYRILLIC CAPITAL LETTER ZE
+
+й <> j ; # CYRILLIC SMALL LETTER I
+Й <> J ; # CYRILLIC CAPITAL LETTER I
+и <> i ; # CYRILLIC SMALL LETTER I
+И <> I ; # CYRILLIC CAPITAL LETTER I
+
+к <> k ; # CYRILLIC SMALL LETTER KA
+К <> K; # CYRILLIC CAPITAL LETTER KA
+
+# қ <> XXX ; # CYRILLIC SMALL LETTER KA WITH DESCENDER
+# Қ <> XXX ; # CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+# ӄ <> XXX ; # CYRILLIC SMALL LETTER KA WITH HOOK
+# Ӄ <> XXX ; # CYRILLIC CAPITAL LETTER KA WITH HOOK
+# ҡ <> XXX ; # CYRILLIC SMALL LETTER BASHKIR KA
+# Ҡ <> XXX ; # CYRILLIC CAPITAL LETTER BASHKIR KA
+# ҟ <> XXX ; # CYRILLIC SMALL LETTER KA WITH STROKE
+# Ҟ <> XXX ; # CYRILLIC CAPITAL LETTER KA WITH STROKE
+# ҝ <> XXX ; # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+# Ҝ <> XXX ; # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+л <> l ; # CYRILLIC SMALL LETTER EL
+Л <> L; # CYRILLIC CAPITAL LETTER EL
+
+м <> m ; # CYRILLIC SMALL LETTER EM
+М <> M ; # CYRILLIC CAPITAL LETTER EM
+н <> n ; # CYRILLIC SMALL LETTER EN
+Н <> N; # CYRILLIC CAPITAL LETTER EN
+# ң <> XXX ; # CYRILLIC SMALL LETTER EN WITH DESCENDER
+# Ң <> XXX ; # CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+# ӈ <> XXX ; # CYRILLIC SMALL LETTER EN WITH HOOK
+# Ӈ <> XXX ; # CYRILLIC CAPITAL LETTER EN WITH HOOK
+# ҥ <> XXX ; # CYRILLIC SMALL LIGATURE EN GHE
+# Ҥ <> XXX ; # CYRILLIC CAPITAL LIGATURE EN GHE
+
+о <> o ; # CYRILLIC SMALL LETTER O
+О <> O ; # CYRILLIC CAPITAL LETTER O
+# ө <> XXX ; # CYRILLIC SMALL LETTER BARRED O
+# Ө <> XXX ; # CYRILLIC CAPITAL LETTER BARRED O
+п <> p ; # CYRILLIC SMALL LETTER PE
+П <> P ; # CYRILLIC CAPITAL LETTER PE
+# ҧ <> XXX ; # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
+# Ҧ <> XXX ; # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+# ҁ <> XXX ; # CYRILLIC SMALL LETTER KOPPA
+# Ҁ <> XXX ; # CYRILLIC CAPITAL LETTER KOPPA
+р <> r ; # CYRILLIC SMALL LETTER ER
+Р <> R ; # CYRILLIC CAPITAL LETTER ER
+# ҏ <> XXX ; # CYRILLIC SMALL LETTER ER WITH TICK
+# Ҏ <> XXX ; # CYRILLIC CAPITAL LETTER ER WITH TICK
+с <> s ; # CYRILLIC SMALL LETTER ES
+С <> S ; # CYRILLIC CAPITAL LETTER ES
+# ҫ <> XXX ; # CYRILLIC SMALL LETTER ES WITH DESCENDER
+# Ҫ <> XXX ; # CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+т <> t ; # CYRILLIC SMALL LETTER TE
+Т <> T ; # CYRILLIC CAPITAL LETTER TE
+# ҭ <> XXX ; # CYRILLIC SMALL LETTER TE WITH DESCENDER
+# Ҭ <> XXX ; # CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+
+у <> u ; # CYRILLIC SMALL LETTER U
+У <> U ; # CYRILLIC CAPITAL LETTER U
+# ү <> XXX ; # CYRILLIC SMALL LETTER STRAIGHT U
+# Ү <> XXX ; # CYRILLIC CAPITAL LETTER STRAIGHT U
+# ұ <> XXX ; # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+# Ұ <> XXX ; # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+# ѹ <> XXX ; # CYRILLIC SMALL LETTER UK
+# Ѹ <> XXX ; # CYRILLIC CAPITAL LETTER UK
+ф <> f ; # CYRILLIC SMALL LETTER EF
+Ф <> F ; # CYRILLIC CAPITAL LETTER EF
+х <> h ; # CYRILLIC SMALL LETTER HA
+Х <> H; # CYRILLIC CAPITAL LETTER HA
+# ҳ <> XXX ; # CYRILLIC SMALL LETTER HA WITH DESCENDER
+# Ҳ <> XXX ; # CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+# һ <> XXX ; # CYRILLIC SMALL LETTER SHHA
+# Һ <> XXX ; # CYRILLIC CAPITAL LETTER SHHA
+# ѡ <> XXX ; # CYRILLIC SMALL LETTER OMEGA
+# Ѡ <> XXX ; # CYRILLIC CAPITAL LETTER OMEGA
+# ѿ <> XXX ; # CYRILLIC SMALL LETTER OT
+# Ѿ <> XXX ; # CYRILLIC CAPITAL LETTER OT
+# ѽ <> XXX ; # CYRILLIC SMALL LETTER OMEGA WITH TITLO
+# Ѽ <> XXX ; # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+# ѻ <> XXX ; # CYRILLIC SMALL LETTER ROUND OMEGA
+# Ѻ <> XXX ; # CYRILLIC CAPITAL LETTER ROUND OMEGA
+ц <> c ; # CYRILLIC SMALL LETTER TSE
+Ц <> C; # CYRILLIC CAPITAL LETTER TSE
+# ҵ <> XXX ; # CYRILLIC SMALL LIGATURE TE TSE
+# Ҵ <> XXX ; # CYRILLIC CAPITAL LIGATURE TE TSE
+
+# ҽ <> XXX ; # CYRILLIC SMALL LETTER ABKHASIAN CHE
+# Ҽ <> XXX ; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+# ҿ <> XXX ; # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+# Ҿ <> XXX ; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+
+
+Ъ <> $modprime2 $under ; # CYRILLIC CAPITAL LETTER HARD SIGN
+ъ <>  $modprime2 ; # CYRILLIC SMALL LETTER HARD SIGN
+Ь <> $modprime $under ; # CYRILLIC CAPITAL LETTER SOFT SIGN
+ь <>  $modprime ; # CYRILLIC SMALL LETTER SOFT SIGN
+
+ы <> y ; # CYRILLIC SMALL LETTER YERU
+Ы <> Y ; # CYRILLIC CAPITAL LETTER YERU
+
+# ҍ <> XXX ; # CYRILLIC SMALL LETTER SEMISOFT SIGN
+# Ҍ <> XXX ; # CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+# ѣ <> XXX ; # CYRILLIC SMALL LETTER YAT
+# Ѣ <> XXX ; # CYRILLIC CAPITAL LETTER YAT
+
+# ѥ <> XXX ; # CYRILLIC SMALL LETTER IOTIFIED E
+# Ѥ <> XXX ; # CYRILLIC CAPITAL LETTER IOTIFIED E
+# ѧ <> XXX ; # CYRILLIC SMALL LETTER LITTLE YUS
+# Ѧ <> XXX ; # CYRILLIC CAPITAL LETTER LITTLE YUS
+# ѫ <> XXX ; # CYRILLIC SMALL LETTER BIG YUS
+# Ѫ <> XXX ; # CYRILLIC CAPITAL LETTER BIG YUS
+# ѩ <> XXX ; # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
+# Ѩ <> XXX ; # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+# ѭ <> XXX ; # CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+# Ѭ <> XXX ; # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+# ѯ <> XXX ; # CYRILLIC SMALL LETTER KSI
+# Ѯ <> XXX ; # CYRILLIC CAPITAL LETTER KSI
+# ѱ <> XXX ; # CYRILLIC SMALL LETTER PSI
+# Ѱ <> XXX ; # CYRILLIC CAPITAL LETTER PSI
+# ѳ <> XXX ; # CYRILLIC SMALL LETTER FITA
+# Ѳ <> XXX ; # CYRILLIC CAPITAL LETTER FITA
+# ѵ <> XXX ; # CYRILLIC SMALL LETTER IZHITSA
+# Ѵ <> XXX ; # CYRILLIC CAPITAL LETTER IZHITSA
+# ҩ <> XXX ; # CYRILLIC SMALL LETTER ABKHASIAN HA
+# Ҩ <> XXX ; # CYRILLIC CAPITAL LETTER ABKHASIAN HA
+# Ӏ <> XXX ; # CYRILLIC LETTER PALOCHKA
+### ӑ <> XXX ; # CYRILLIC SMALL LETTER A
+### Ӑ <> XXX ; # CYRILLIC CAPITAL LETTER A
+### ӓ <> XXX ; # CYRILLIC SMALL LETTER A
+### Ӓ <> XXX ; # CYRILLIC CAPITAL LETTER A
+### ӛ <> XXX ; # CYRILLIC SMALL LETTER SCHWA
+### Ӛ <> XXX ; # CYRILLIC CAPITAL LETTER SCHWA
+### ѓ <> XXX ; # CYRILLIC SMALL LETTER GHE
+### Ѓ <> XXX ; # CYRILLIC CAPITAL LETTER GHE
+### ѐ <> XXX ; # CYRILLIC SMALL LETTER IE
+### Ѐ <> XXX ; # CYRILLIC CAPITAL LETTER IE
+### ё <> XXX ; # CYRILLIC SMALL LETTER IE
+### Ё <> XXX ; # CYRILLIC CAPITAL LETTER IE
+### ӗ <> XXX ; # CYRILLIC SMALL LETTER IE
+### Ӗ <> XXX ; # CYRILLIC CAPITAL LETTER IE
+### ӂ <> XXX ; # CYRILLIC SMALL LETTER ZHE
+### Ӂ <> XXX ; # CYRILLIC CAPITAL LETTER ZHE
+### ӝ <> XXX ; # CYRILLIC SMALL LETTER ZHE
+### Ӝ <> XXX ; # CYRILLIC CAPITAL LETTER ZHE
+### ӟ <> XXX ; # CYRILLIC SMALL LETTER ZE
+### Ӟ <> XXX ; # CYRILLIC CAPITAL LETTER ZE
+### ѝ <> XXX ; # CYRILLIC SMALL LETTER I
+### Ѝ <> XXX ; # CYRILLIC CAPITAL LETTER I
+### ӣ <> XXX ; # CYRILLIC SMALL LETTER I
+### Ӣ <> XXX ; # CYRILLIC CAPITAL LETTER I
+### ӥ <> XXX ; # CYRILLIC SMALL LETTER I
+### Ӥ <> XXX ; # CYRILLIC CAPITAL LETTER I
+### ї <> XXX ; # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+### Ї <> XXX ; # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+### ӧ <> XXX ; # CYRILLIC SMALL LETTER O
+### Ӧ <> XXX ; # CYRILLIC CAPITAL LETTER O
+### ӫ <> XXX ; # CYRILLIC SMALL LETTER BARRED O
+### Ӫ <> XXX ; # CYRILLIC CAPITAL LETTER BARRED O
+### ќ <> XXX ; # CYRILLIC SMALL LETTER KA
+### Ќ <> XXX ; # CYRILLIC CAPITAL LETTER KA
+### ӯ <> XXX ; # CYRILLIC SMALL LETTER U
+### Ӯ <> XXX ; # CYRILLIC CAPITAL LETTER U
+### ў <> XXX ; # CYRILLIC SMALL LETTER U
+### Ў <> XXX ; # CYRILLIC CAPITAL LETTER U
+### ӱ <> XXX ; # CYRILLIC SMALL LETTER U
+### Ӱ <> XXX ; # CYRILLIC CAPITAL LETTER U
+### ӳ <> XXX ; # CYRILLIC SMALL LETTER U
+### Ӳ <> XXX ; # CYRILLIC CAPITAL LETTER U
+### ӵ <> XXX ; # CYRILLIC SMALL LETTER CHE
+### Ӵ <> XXX ; # CYRILLIC CAPITAL LETTER CHE
+### ӹ <> XXX ; # CYRILLIC SMALL LETTER YERU
+### Ӹ <> XXX ; # CYRILLIC CAPITAL LETTER YERU
+### ӭ <> XXX ; # CYRILLIC SMALL LETTER E
+### Ӭ <> XXX ; # CYRILLIC CAPITAL LETTER E
+### ѷ <> XXX ; # CYRILLIC SMALL LETTER IZHITSA
+### Ѷ <> XXX ; # CYRILLIC CAPITAL LETTER IZHITSA
+
+# Completeness
+$ignore = [[:Mark:]''] * ;
+| k < q ;
+| K < Q ;
+| u < w ;
+| U < W ;
+| KS < X } $ignore [:UppercaseLetter:] ;
+| KS < [:UppercaseLetter:] $ignore { X ;
+| Ks < X ;
+| ks < x ;
+
+:: NFC (NFD) ;
+# note: a global filter is more efficient, but MUST include all source chars!!
+# :: ([\u0000-\u007E \u02B9 \u02BA [:Cyrillic:] [:Latin:] [:nonspacing mark:]]);
+# MINIMAL FILTER: Latin-Cyrillic
+:: ( [\u0308A-Za-z\u00C0-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u018F\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01F0\u01F4-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u0259\u02B9-\u02BA\u0300-\u0302\u0306-\u0307\u030C\u0326\u0331\u0340-\u0341\u0344\u0374\u0385-\u0386\u0388-\u038A\u038C\u038E-\u0390\u03AC-\u03B0\u03CC-\u03CE\u03D3\u0400\u0403\u040C-\u040E\u0419\u0439\u0450\u0453\u045C-\u045E\u04C1-\u04C2\u04D0-\u04D1\u04D6-\u04D7\u1E00-\u1E99\u1E9B\u1EA0-\u1EF9\u1F02-\u1F05\u1F0A-\u1F0D\u1F12-\u1F15\u1F1A-\u1F1D\u1F22-\u1F25\u1F2A-\u1F2D\u1F32-\u1F35\u1F3A-\u1F3D\u1F42-\u1F45\u1F4A-\u1F4D\u1F52-\u1F55\u1F5B\u1F5D\u1F62-\u1F65\u1F6A-\u1F6D\u1F70-\u1F7D\u1F82-\u1F85\u1F8A-\u1F8D\u1F92-\u1F95\u1F9A-\u1F9D\u1FA2-\u1FA5\u1FAA-\u1FAD\u1FB0\u1FB2\u1FB4\u1FB8\u1FBA-\u1FBB\u1FC2\u1FC4\u1FC8-\u1FCB\u1FCD-\u1FCE\u1FD0\u1FD2-\u1FD3\u1FD8\u1FDA-\u1FDB\u1FDD-\u1FDE\u1FE0\u1FE2-\u1FE3\u1FE8\u1FEA-\u1FEB\u1FED-\u1FEE\u1FF2\u1FF4\u1FF8-\u1FFB\u212A-\u212B] ) ;
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Devanagari_InterIndic.txt b/src/com/ibm/icu/impl/data/Transliterator_Devanagari_InterIndic.txt
new file mode 100755
index 0000000..57f8c86
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Devanagari_InterIndic.txt
@@ -0,0 +1,120 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Devanagari_InterIndic.txt,v $
+# $Date: 2002/03/02 00:27:27 $
+# $Revision: 1.9 $
+#--------------------------------------------------------------------
+
+# Devanagari-InterIndic
+# :: NFD;
+#Rules for Decomposed characters
+
+
+ \u0901>\uE001;  # SIGN CANDRABINDU
+ \u0902>\uE002;  # SIGN ANUSVARA
+ \u0903>\uE003;  # SIGN VISARGA
+ \u0905>\uE005;  # LETTER A
+ \u0906>\uE006;  # LETTER AA
+ \u0907>\uE007;  # LETTER I
+ \u0908>\uE008;  # LETTER II
+ \u0909>\uE009;  # LETTER U
+ \u090A>\uE00A;  # LETTER UU
+ \u090B>\uE00B;  # LETTER VOCALIC R
+ \u090C>\uE00C;  # LETTER VOCALIC L
+ \u090D>\uE00D;  # LETTER CANDRA E (For representing English sounds)
+ \u090E>\uE00E; # UNMAPPED LETTER SHORT E(For Southern Scripts)
+ \u090F>\uE00F;  # LETTER E
+ \u0910>\uE010;  # LETTER AI
+ \u0911>\uE011;  # LETTER CANDRA O (For representing English sounds)
+ \u0912>\uE012; # UNMAPPED LETTER SHORT O (For Southern Scripts)
+ \u0913>\uE013;  # LETTER O
+ \u0914>\uE014;  # LETTER AU
+ \u0915>\uE015;  # LETTER KA
+ \u0916>\uE016;  # LETTER KHA
+ \u0917>\uE017;  # LETTER GA
+ \u0918>\uE018;  # LETTER GHA
+ \u0919>\uE019;  # LETTER NGA
+ \u091A>\uE01A;  # LETTER CA
+ \u091B>\uE01B;  # LETTER CHA
+ \u091C>\uE01C;  # LETTER JA
+ \u091D>\uE01D;  # LETTER JHA
+ \u091E>\uE01E;  # LETTER NYA
+ \u091F>\uE01F;  # LETTER TTA
+ \u0920>\uE020;  # LETTER TTHA
+ \u0921>\uE021;  # LETTER DDA
+ \u0922>\uE022;  # LETTER DDHA
+ \u0923>\uE023;  # LETTER NNA
+ \u0924>\uE024;  # LETTER TA
+ \u0925>\uE025;  # LETTER THA
+ \u0926>\uE026;  # LETTER DA
+ \u0927>\uE027;  # LETTER DHA
+ \u0928>\uE028;  # LETTER NA
+ \u0929>\uE029;  
+ \u092A>\uE02A;  # LETTER PA
+ \u092B>\uE02B;  # LETTER PHA
+ \u092C>\uE02C;  # LETTER BA
+ \u092D>\uE02D;  # LETTER BHA
+ \u092E>\uE02E;  # LETTER MA
+ \u092F>\uE02F;  # LETTER YA
+ \u0930>\uE030;  # LETTER RA
+ \u0931>\uE031;
+ \u0932>\uE032;  # LETTER LA
+ \u0933>\uE033;  # LETTER LLA
+ \u0934>\uE034;
+
+ \u0935>\uE035;  # LETTER VA
+ \u0936>\uE036;  # LETTER SHA
+ \u0937>\uE037;  # LETTER SSA
+ \u0938>\uE038;  # LETTER SA
+ \u0939>\uE039;  # LETTER HA
+ \u093C>\uE03C;  # SIGN NUKTA
+ \u093D>\uE03D;  # SIGN AVAGRAHA
+ \u093E>\uE03E;  # VOWEL SIGN AA
+ \u093F>\uE03F;  # VOWEL SIGN I
+ \u0940>\uE040;  # VOWEL SIGN II
+ \u0941>\uE041;  # VOWEL SIGN U
+ \u0942>\uE042;  # VOWEL SIGN UU
+ \u0943>\uE043;  # VOWEL SIGN VOCALIC R
+ \u0944>\uE044;  # VOWEL SIGN VOCALIC RR
+ \u0945>\uE045;  # VOWEL SIGN CANDRA E
+ \u0946>\uE046; # UNMAPPED VOWEL SIGN SHORT E
+ \u0947>\uE047;  # VOWEL SIGN E
+ \u0948>\uE048;  # VOWEL SIGN AI
+ \u0949>\uE049;  # VOWEL SIGN CANDRA O
+ \u094A>\uE04A; # UNMAPPED VOWEL SIGN SHORT O
+ \u094B>\uE04B;  # VOWEL SIGN O
+ \u094C>\uE04C;  # VOWEL SIGN AU
+ \u094D>\uE04D;  # SIGN VIRAMA
+ \u0950>\uE050;  # OM
+ \u0951>\uE051;       # UNMAPPED STRESS SIGN UDATTA
+ \u0952>\uE052;       # UNMAPPED STRESS SIGN ANUDATTA
+ \u0953>\uE053;       # UNMAPPED GRAVE ACCENT
+ \u0954>\uE054;       # UNMAPPED ACUTE ACCENT
+ \u0958>\uE058;
+ \u0959>\uE059;
+ \u095A>\uE05a;
+ \u095B>\uE05b;
+ \u095C>\uE05c;
+ \u095D>\uE05d;
+ \u095E>\uE05e;
+ \u095F>\uE05f;
+ \u0960>\uE060;  # LETTER VOCALIC RR
+ \u0961>\uE061;  # LETTER VOCALIC LL
+ \u0962>\uE062;  # VOWEL SIGN VOCALIC L
+ \u0963>\uE063;  # VOWEL SIGN VOCALIC LL
+ \u0964>\ue064;  # DANDA
+ \u0965>\ue065;  # DOUBLE DANDA
+ \u0966>\uE066;  # DIGIT ZERO
+ \u0967>\uE067;  # DIGIT ONE
+ \u0968>\uE068;  # DIGIT TWO
+ \u0969>\uE069;  # DIGIT THREE
+ \u096A>\uE06A;  # DIGIT FOUR
+ \u096B>\uE06B;  # DIGIT FIVE
+ \u096C>\uE06C;  # DIGIT SIX
+ \u096D>\uE06D;  # DIGIT SEVEN
+ \u096E>\uE06E;  # DIGIT EIGHT
+ \u096F>\uE06F;  # DIGIT NINE
+# \u0970>; # UNMAPPED Devanagari-InterIndic: ABBREVIATION SIGN
+#    :: NFC (NFD) ;
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Fullwidth_Halfwidth.txt b/src/com/ibm/icu/impl/data/Transliterator_Fullwidth_Halfwidth.txt
new file mode 100755
index 0000000..733bbcc
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Fullwidth_Halfwidth.txt
@@ -0,0 +1,275 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Fullwidth_Halfwidth.txt,v $
+# $Date: 2002/03/02 00:27:27 $
+# $Revision: 1.3 $
+#--------------------------------------------------------------------
+
+# Fullwidth-Halfwidth
+
+# Mechanically generated from Unicode Character Database
+# IDEOGRAPHIC SPACE then added, and
+# FULLWIDTH MACRON changed to map to MACRON, not SPACE + COMBINING MACRON
+
+# multicharacter
+
+ガ<>ガ; # to KATAKANA LETTER GA
+ギ<>ギ; # to KATAKANA LETTER GI
+グ<>グ; # to KATAKANA LETTER GU
+ゲ<>ゲ; # to KATAKANA LETTER GE
+ゴ<>ゴ; # to KATAKANA LETTER GO
+ザ<>ザ; # to KATAKANA LETTER ZA
+ジ<>ジ; # to KATAKANA LETTER ZI
+ズ<>ズ; # to KATAKANA LETTER ZU
+ゼ<>ゼ; # to KATAKANA LETTER ZE
+ゾ<>ゾ; # to KATAKANA LETTER ZO
+ダ<>ダ; # to KATAKANA LETTER DA
+ヂ<>ヂ; # to KATAKANA LETTER DI
+ヅ<>ヅ; # to KATAKANA LETTER DU
+デ<>デ; # to KATAKANA LETTER DE
+ド<>ド; # to KATAKANA LETTER DO
+バ<>バ; # to KATAKANA LETTER BA
+パ<>パ; # to KATAKANA LETTER PA
+ビ<>ビ; # to KATAKANA LETTER BI
+ピ<>ピ; # to KATAKANA LETTER PI
+ブ<>ブ; # to KATAKANA LETTER BU
+プ<>プ; # to KATAKANA LETTER PU
+ベ<>ベ; # to KATAKANA LETTER BE
+ペ<>ペ; # to KATAKANA LETTER PE
+ボ<>ボ; # to KATAKANA LETTER BO
+ポ<>ポ; # to KATAKANA LETTER PO
+ヴ<>ヴ; # to KATAKANA LETTER VU
+ヷ<>ヷ; # to KATAKANA LETTER VA
+ヺ<>ヺ; # to KATAKANA LETTER VO
+
+# single character
+
+!<>'!'; # from FULLWIDTH EXCLAMATION MARK
+"<>'\"'; # from FULLWIDTH QUOTATION MARK
+#<>'#'; # from FULLWIDTH NUMBER SIGN
+$<>'$'; # from FULLWIDTH DOLLAR SIGN
+%<>'%'; # from FULLWIDTH PERCENT SIGN
+&<>'&'; # from FULLWIDTH AMPERSAND
+'<>''; # from FULLWIDTH APOSTROPHE
+(<>'('; # from FULLWIDTH LEFT PARENTHESIS
+)<>')'; # from FULLWIDTH RIGHT PARENTHESIS
+*<>'*'; # from FULLWIDTH ASTERISK
++<>'+'; # from FULLWIDTH PLUS SIGN
+,<>','; # from FULLWIDTH COMMA
+-<>'-'; # from FULLWIDTH HYPHEN-MINUS
+.<>'.'; # from FULLWIDTH FULL STOP
+/<>'/'; # from FULLWIDTH SOLIDUS
+0<>'0'; # from FULLWIDTH DIGIT ZERO
+1<>'1'; # from FULLWIDTH DIGIT ONE
+2<>'2'; # from FULLWIDTH DIGIT TWO
+3<>'3'; # from FULLWIDTH DIGIT THREE
+4<>'4'; # from FULLWIDTH DIGIT FOUR
+5<>'5'; # from FULLWIDTH DIGIT FIVE
+6<>'6'; # from FULLWIDTH DIGIT SIX
+7<>'7'; # from FULLWIDTH DIGIT SEVEN
+8<>'8'; # from FULLWIDTH DIGIT EIGHT
+9<>'9'; # from FULLWIDTH DIGIT NINE
+:<>':'; # from FULLWIDTH COLON
+;<>';'; # from FULLWIDTH SEMICOLON
+<<>'<'; # from FULLWIDTH LESS-THAN SIGN
+=<>'='; # from FULLWIDTH EQUALS SIGN
+><>'>'; # from FULLWIDTH GREATER-THAN SIGN
+?<>'?'; # from FULLWIDTH QUESTION MARK
+@<>'@'; # from FULLWIDTH COMMERCIAL AT
+A<>A; # from FULLWIDTH LATIN CAPITAL LETTER A
+B<>B; # from FULLWIDTH LATIN CAPITAL LETTER B
+C<>C; # from FULLWIDTH LATIN CAPITAL LETTER C
+D<>D; # from FULLWIDTH LATIN CAPITAL LETTER D
+E<>E; # from FULLWIDTH LATIN CAPITAL LETTER E
+F<>F; # from FULLWIDTH LATIN CAPITAL LETTER F
+G<>G; # from FULLWIDTH LATIN CAPITAL LETTER G
+H<>H; # from FULLWIDTH LATIN CAPITAL LETTER H
+I<>I; # from FULLWIDTH LATIN CAPITAL LETTER I
+J<>J; # from FULLWIDTH LATIN CAPITAL LETTER J
+K<>K; # from FULLWIDTH LATIN CAPITAL LETTER K
+L<>L; # from FULLWIDTH LATIN CAPITAL LETTER L
+M<>M; # from FULLWIDTH LATIN CAPITAL LETTER M
+N<>N; # from FULLWIDTH LATIN CAPITAL LETTER N
+O<>O; # from FULLWIDTH LATIN CAPITAL LETTER O
+P<>P; # from FULLWIDTH LATIN CAPITAL LETTER P
+Q<>Q; # from FULLWIDTH LATIN CAPITAL LETTER Q
+R<>R; # from FULLWIDTH LATIN CAPITAL LETTER R
+S<>S; # from FULLWIDTH LATIN CAPITAL LETTER S
+T<>T; # from FULLWIDTH LATIN CAPITAL LETTER T
+U<>U; # from FULLWIDTH LATIN CAPITAL LETTER U
+V<>V; # from FULLWIDTH LATIN CAPITAL LETTER V
+W<>W; # from FULLWIDTH LATIN CAPITAL LETTER W
+X<>X; # from FULLWIDTH LATIN CAPITAL LETTER X
+Y<>Y; # from FULLWIDTH LATIN CAPITAL LETTER Y
+Z<>Z; # from FULLWIDTH LATIN CAPITAL LETTER Z
+[<>'['; # from FULLWIDTH LEFT SQUARE BRACKET
+\<>'\\'; # from FULLWIDTH REVERSE SOLIDUS {double escape - aliu}
+]<>']'; # from FULLWIDTH RIGHT SQUARE BRACKET
+^<>'^'; # from FULLWIDTH CIRCUMFLEX ACCENT
+_<>'_'; # from FULLWIDTH LOW LINE
+`<>'`'; # from FULLWIDTH GRAVE ACCENT
+a<>a; # from FULLWIDTH LATIN SMALL LETTER A
+b<>b; # from FULLWIDTH LATIN SMALL LETTER B
+c<>c; # from FULLWIDTH LATIN SMALL LETTER C
+d<>d; # from FULLWIDTH LATIN SMALL LETTER D
+e<>e; # from FULLWIDTH LATIN SMALL LETTER E
+f<>f; # from FULLWIDTH LATIN SMALL LETTER F
+g<>g; # from FULLWIDTH LATIN SMALL LETTER G
+h<>h; # from FULLWIDTH LATIN SMALL LETTER H
+i<>i; # from FULLWIDTH LATIN SMALL LETTER I
+j<>j; # from FULLWIDTH LATIN SMALL LETTER J
+k<>k; # from FULLWIDTH LATIN SMALL LETTER K
+l<>l; # from FULLWIDTH LATIN SMALL LETTER L
+m<>m; # from FULLWIDTH LATIN SMALL LETTER M
+n<>n; # from FULLWIDTH LATIN SMALL LETTER N
+o<>o; # from FULLWIDTH LATIN SMALL LETTER O
+p<>p; # from FULLWIDTH LATIN SMALL LETTER P
+q<>q; # from FULLWIDTH LATIN SMALL LETTER Q
+r<>r; # from FULLWIDTH LATIN SMALL LETTER R
+s<>s; # from FULLWIDTH LATIN SMALL LETTER S
+t<>t; # from FULLWIDTH LATIN SMALL LETTER T
+u<>u; # from FULLWIDTH LATIN SMALL LETTER U
+v<>v; # from FULLWIDTH LATIN SMALL LETTER V
+w<>w; # from FULLWIDTH LATIN SMALL LETTER W
+x<>x; # from FULLWIDTH LATIN SMALL LETTER X
+y<>y; # from FULLWIDTH LATIN SMALL LETTER Y
+z<>z; # from FULLWIDTH LATIN SMALL LETTER Z
+{<>'{'; # from FULLWIDTH LEFT CURLY BRACKET
+|<>'|'; # from FULLWIDTH VERTICAL LINE
+}<>'}'; # from FULLWIDTH RIGHT CURLY BRACKET
+~<>'~'; # from FULLWIDTH TILDE
+。<>。; # to HALFWIDTH IDEOGRAPHIC FULL STOP
+「<>「; # to HALFWIDTH LEFT CORNER BRACKET
+」<>」; # to HALFWIDTH RIGHT CORNER BRACKET
+、<>、; # to HALFWIDTH IDEOGRAPHIC COMMA
+・<>・; # to HALFWIDTH KATAKANA MIDDLE DOT
+ヲ<>ヲ; # to HALFWIDTH KATAKANA LETTER WO
+ァ<>ァ; # to HALFWIDTH KATAKANA LETTER SMALL A
+ィ<>ィ; # to HALFWIDTH KATAKANA LETTER SMALL I
+ゥ<>ゥ; # to HALFWIDTH KATAKANA LETTER SMALL U
+ェ<>ェ; # to HALFWIDTH KATAKANA LETTER SMALL E
+ォ<>ォ; # to HALFWIDTH KATAKANA LETTER SMALL O
+ャ<>ャ; # to HALFWIDTH KATAKANA LETTER SMALL YA
+ュ<>ュ; # to HALFWIDTH KATAKANA LETTER SMALL YU
+ョ<>ョ; # to HALFWIDTH KATAKANA LETTER SMALL YO
+ッ<>ッ; # to HALFWIDTH KATAKANA LETTER SMALL TU
+ー<>ー; # to HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ア<>ア; # to HALFWIDTH KATAKANA LETTER A
+イ<>イ; # to HALFWIDTH KATAKANA LETTER I
+ウ<>ウ; # to HALFWIDTH KATAKANA LETTER U
+エ<>エ; # to HALFWIDTH KATAKANA LETTER E
+オ<>オ; # to HALFWIDTH KATAKANA LETTER O
+カ<>カ; # to HALFWIDTH KATAKANA LETTER KA
+キ<>キ; # to HALFWIDTH KATAKANA LETTER KI
+ク<>ク; # to HALFWIDTH KATAKANA LETTER KU
+ケ<>ケ; # to HALFWIDTH KATAKANA LETTER KE
+コ<>コ; # to HALFWIDTH KATAKANA LETTER KO
+サ<>サ; # to HALFWIDTH KATAKANA LETTER SA
+シ<>シ; # to HALFWIDTH KATAKANA LETTER SI
+ス<>ス; # to HALFWIDTH KATAKANA LETTER SU
+セ<>セ; # to HALFWIDTH KATAKANA LETTER SE
+ソ<>ソ; # to HALFWIDTH KATAKANA LETTER SO
+タ<>タ; # to HALFWIDTH KATAKANA LETTER TA
+チ<>チ; # to HALFWIDTH KATAKANA LETTER TI
+ツ<>ツ; # to HALFWIDTH KATAKANA LETTER TU
+テ<>テ; # to HALFWIDTH KATAKANA LETTER TE
+ト<>ト; # to HALFWIDTH KATAKANA LETTER TO
+ナ<>ナ; # to HALFWIDTH KATAKANA LETTER NA
+ニ<>ニ; # to HALFWIDTH KATAKANA LETTER NI
+ヌ<>ヌ; # to HALFWIDTH KATAKANA LETTER NU
+ネ<>ネ; # to HALFWIDTH KATAKANA LETTER NE
+ノ<>ノ; # to HALFWIDTH KATAKANA LETTER NO
+ハ<>ハ; # to HALFWIDTH KATAKANA LETTER HA
+ヒ<>ヒ; # to HALFWIDTH KATAKANA LETTER HI
+フ<>フ; # to HALFWIDTH KATAKANA LETTER HU
+ヘ<>ヘ; # to HALFWIDTH KATAKANA LETTER HE
+ホ<>ホ; # to HALFWIDTH KATAKANA LETTER HO
+マ<>マ; # to HALFWIDTH KATAKANA LETTER MA
+ミ<>ミ; # to HALFWIDTH KATAKANA LETTER MI
+ム<>ム; # to HALFWIDTH KATAKANA LETTER MU
+メ<>メ; # to HALFWIDTH KATAKANA LETTER ME
+モ<>モ; # to HALFWIDTH KATAKANA LETTER MO
+ヤ<>ヤ; # to HALFWIDTH KATAKANA LETTER YA
+ユ<>ユ; # to HALFWIDTH KATAKANA LETTER YU
+ヨ<>ヨ; # to HALFWIDTH KATAKANA LETTER YO
+ラ<>ラ; # to HALFWIDTH KATAKANA LETTER RA
+リ<>リ; # to HALFWIDTH KATAKANA LETTER RI
+ル<>ル; # to HALFWIDTH KATAKANA LETTER RU
+レ<>レ; # to HALFWIDTH KATAKANA LETTER RE
+ロ<>ロ; # to HALFWIDTH KATAKANA LETTER RO
+ワ<>ワ; # to HALFWIDTH KATAKANA LETTER WA
+ン<>ン; # to HALFWIDTH KATAKANA LETTER N
+゙<>゙; # to HALFWIDTH KATAKANA VOICED SOUND MARK
+゚<>゚; # to HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+ᅠ<>ᅠ; # to HALFWIDTH HANGUL FILLER
+ᄀ<>ᄀ; # to HALFWIDTH HANGUL LETTER KIYEOK
+ᄁ<>ᄁ; # to HALFWIDTH HANGUL LETTER SSANGKIYEOK
+ᆪ<>ᆪ; # to HALFWIDTH HANGUL LETTER KIYEOK-SIOS
+ᄂ<>ᄂ; # to HALFWIDTH HANGUL LETTER NIEUN
+ᆬ<>ᆬ; # to HALFWIDTH HANGUL LETTER NIEUN-CIEUC
+ᆭ<>ᆭ; # to HALFWIDTH HANGUL LETTER NIEUN-HIEUH
+ᄃ<>ᄃ; # to HALFWIDTH HANGUL LETTER TIKEUT
+ᄄ<>ᄄ; # to HALFWIDTH HANGUL LETTER SSANGTIKEUT
+ᄅ<>ᄅ; # to HALFWIDTH HANGUL LETTER RIEUL
+ᆰ<>ᆰ; # to HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
+ᆱ<>ᆱ; # to HALFWIDTH HANGUL LETTER RIEUL-MIEUM
+ᆲ<>ᆲ; # to HALFWIDTH HANGUL LETTER RIEUL-PIEUP
+ᆳ<>ᆳ; # to HALFWIDTH HANGUL LETTER RIEUL-SIOS
+ᆴ<>ᆴ; # to HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
+ᆵ<>ᆵ; # to HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
+ᄚ<>ᄚ; # to HALFWIDTH HANGUL LETTER RIEUL-HIEUH
+ᄆ<>ᄆ; # to HALFWIDTH HANGUL LETTER MIEUM
+ᄇ<>ᄇ; # to HALFWIDTH HANGUL LETTER PIEUP
+ᄈ<>ᄈ; # to HALFWIDTH HANGUL LETTER SSANGPIEUP
+ᄡ<>ᄡ; # to HALFWIDTH HANGUL LETTER PIEUP-SIOS
+ᄉ<>ᄉ; # to HALFWIDTH HANGUL LETTER SIOS
+ᄊ<>ᄊ; # to HALFWIDTH HANGUL LETTER SSANGSIOS
+ᄋ<>ᄋ; # to HALFWIDTH HANGUL LETTER IEUNG
+ᄌ<>ᄌ; # to HALFWIDTH HANGUL LETTER CIEUC
+ᄍ<>ᄍ; # to HALFWIDTH HANGUL LETTER SSANGCIEUC
+ᄎ<>ᄎ; # to HALFWIDTH HANGUL LETTER CHIEUCH
+ᄏ<>ᄏ; # to HALFWIDTH HANGUL LETTER KHIEUKH
+ᄐ<>ᄐ; # to HALFWIDTH HANGUL LETTER THIEUTH
+ᄑ<>ᄑ; # to HALFWIDTH HANGUL LETTER PHIEUPH
+ᄒ<>ᄒ; # to HALFWIDTH HANGUL LETTER HIEUH
+ᅡ<>ᅡ; # to HALFWIDTH HANGUL LETTER A
+ᅢ<>ᅢ; # to HALFWIDTH HANGUL LETTER AE
+ᅣ<>ᅣ; # to HALFWIDTH HANGUL LETTER YA
+ᅤ<>ᅤ; # to HALFWIDTH HANGUL LETTER YAE
+ᅥ<>ᅥ; # to HALFWIDTH HANGUL LETTER EO
+ᅦ<>ᅦ; # to HALFWIDTH HANGUL LETTER E
+ᅧ<>ᅧ; # to HALFWIDTH HANGUL LETTER YEO
+ᅨ<>ᅨ; # to HALFWIDTH HANGUL LETTER YE
+ᅩ<>ᅩ; # to HALFWIDTH HANGUL LETTER O
+ᅪ<>ᅪ; # to HALFWIDTH HANGUL LETTER WA
+ᅫ<>ᅫ; # to HALFWIDTH HANGUL LETTER WAE
+ᅬ<>ᅬ; # to HALFWIDTH HANGUL LETTER OE
+ᅭ<>ᅭ; # to HALFWIDTH HANGUL LETTER YO
+ᅮ<>ᅮ; # to HALFWIDTH HANGUL LETTER U
+ᅯ<>ᅯ; # to HALFWIDTH HANGUL LETTER WEO
+ᅰ<>ᅰ; # to HALFWIDTH HANGUL LETTER WE
+ᅱ<>ᅱ; # to HALFWIDTH HANGUL LETTER WI
+ᅲ<>ᅲ; # to HALFWIDTH HANGUL LETTER YU
+ᅳ<>ᅳ; # to HALFWIDTH HANGUL LETTER EU
+ᅴ<>ᅴ; # to HALFWIDTH HANGUL LETTER YI
+ᅵ<>ᅵ; # to HALFWIDTH HANGUL LETTER I
+¢<>'¢'; # from FULLWIDTH CENT SIGN
+£<>'£'; # from FULLWIDTH POUND SIGN
+¬<>'¬'; # from FULLWIDTH NOT SIGN
+ ̄<>'¯'; # from FULLWIDTH MACRON
+' '<>' '; # ideographic space (place this after MACRON)
+¦<>'¦'; # from FULLWIDTH BROKEN BAR
+¥<>'¥'; # from FULLWIDTH YEN SIGN
+₩<>₩; # from FULLWIDTH WON SIGN
+│<>│; # to HALFWIDTH FORMS LIGHT VERTICAL
+←<>←; # to HALFWIDTH LEFTWARDS ARROW
+↑<>↑; # to HALFWIDTH UPWARDS ARROW
+→<>→; # to HALFWIDTH RIGHTWARDS ARROW
+↓<>↓; # to HALFWIDTH DOWNWARDS ARROW
+■<>■; # to HALFWIDTH BLACK SQUARE
+○<>○; # to HALFWIDTH WHITE CIRCLE
+
+# eof
+
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Greek_Latin.txt b/src/com/ibm/icu/impl/data/Transliterator_Greek_Latin.txt
new file mode 100755
index 0000000..c240128
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Greek_Latin.txt
@@ -0,0 +1,342 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Greek_Latin.txt,v $
+# $Date: 2002/07/21 08:39:23 $
+# $Revision: 1.21 $
+#--------------------------------------------------------------------
+
+# Rules are predicated on running NFD first, and NFC afterwards
+# :: [\u0000-\u007F \u0370-\u03FF [:Greek:] [:nonspacing mark:]] ;
+# MINIMAL FILTER GENERATED FOR: Greek-Latin
+:: [;\u00B5\u00B7\u00C4\u00CB\u00CF\u00D6\u00DC\u00E4\u00EB\u00EF\u00F6\u00FC\u00FF-\u0101\u0112-\u0113\u012A-\u012B\u014C-\u014D\u016A-\u016B\u0178\u01D5-\u01DC\u01DE-\u01E3\u01EC-\u01ED\u022A-\u022D\u0230-\u0233\u0304\u0308\u0313-\u0314\u0342-\u0345\u037A\u037E\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03CE\u03D0-\u03D7\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F5\u0401\u0407\u0451\u0457\u04D2-\u04D3\u04DA-\u04DF\u04E2-\u04E7\u04EA-\u04F1\u04F4-\u04F5\u04F8-\u04F9\u1E14-\u1E17\u1E20-\u1E21\u1E26-\u1E27\u1E2E-\u1E2F\u1E38-\u1E39\u1E4E-\u1E53\u1E5C-\u1E5D\u1E7A-\u1E7B\u1E84-\u1E85\u1E8C-\u1E8D\u1E97\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC1-\u1FC4\u1FC6-\u1FCC\u1FCF-\u1FD3\u1FD6-\u1FDB\u1FDF-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2126] ;
+
+:: NFD (NFC) ; 
+
+# TEST CASES
+
+# Ὀλίγοι ἔμφονες πολλῶν ἀφρόνων φοβερώτεροι — Πλάτωνος
+# ᾂ ᾒ ᾢ ᾃ ᾓ ᾣ
+# ᾳ ῃ ῳ ὃ ὄ
+# ὠς ὡς ὢς ὣς
+# Ὠς Ὡς Ὢς Ὣς
+# ὨΣ ὩΣ ὪΣ ὫΣ
+# Ạ, ạ, Ẹ, ẹ, Ọ, ọ
+
+# Useful variables
+
+$lower = [[:latin:][:greek:] & [:Ll:]]; 
+$glower = [[:greek:] & [:Ll:]]; 
+$upper = [[:latin:][:greek:] & [:Lu:]] ; 
+$accent = [:M:] ;
+
+# NOTE: restrict to just the Greek & Latin accents that we care about
+# TODO: broaden out once interation is fixed
+$accentMinus = [ [\u0300-\u0345] & [:M:] - [\u0338]] ;
+
+$macron = \u0304 ;
+$ddot = \u0308 ;
+$ddotmac = [$ddot$macron];
+
+$lcgvowel = [αεηιουω] ; 
+$ucgvowel = [ΑΕΗΙΟΥΩ] ; 
+$gvowel = [$lcgvowel $ucgvowel] ; 
+$lcgvowelC = [$lcgvowel $accent] ; 
+
+$evowel = [aeiouyAEIOUY];
+$evowel2 = [iuyIUY];
+$vowel = [ $evowel $gvowel] ; 
+
+$gammaLike = [ΓΚΞΧγκξχϰ] ; 
+$egammaLike = [GKXCgkxc] ; 
+$smooth = ̓ ; 
+$rough = ̔ ; 
+$iotasub = ͅ ; 
+
+$evowel_i = [$evowel-[iI]] ;
+$evowel2_i = [uyUY];
+
+$underbar = \u0331;
+
+$afterLetter = [:L:] [[:M:]\']* ;
+$beforeLetter = [[:M:]\']* [:L:] ;
+$beforeLower = $accent * $lower ; 
+
+$notLetter = [^[:L:][:M:]] ;
+$under = ̱;
+
+# Fix punctuation
+# preserve original
+\: <> \: $under ;
+\? <> \? $under ;
+
+\; <> \? ;
+· <> \: ;
+
+# CIRCUMFLEX: convert greek circumflex to normal one. Could use tilde or inverted breve
+
+\u0342 <> \u0302 ; 
+
+# IOTA: convert iota subscript to iota
+# first make previous alpha long!
+
+$accent_minus = [[$accent]-[$iotasub$macron]];
+
+Α } $accent_minus * $iotasub > | Α $macron ;  
+α } $accent_minus * $iotasub > | α $macron ; 
+
+# now convert to uppercase if after uppercase, ow to lowercase
+
+$upper $accent * { $iotasub > I ; 
+$iotasub > i ; 
+
+| $1 $iotasub < ($evowel $macron $accentMinus *) i ;
+| $1 $iotasub < ($evowel $macron $accentMinus *) I ;
+
+# BREATHING
+
+# Convert rough breathing to h, and move before letters.
+
+# Make A ` x = > H a x
+
+ Α ($macron?) $rough } $beforeLower > H | α $1; 
+ Ε $rough } $beforeLower > H | ε; 
+ Η $rough } $beforeLower > H | η ; 
+ Ι ($ddot?) $rough } $beforeLower > H | ι  $1; 
+ Ο $rough } $beforeLower > H | ο ; 
+ Υ $rough } $beforeLower > H | υ ; 
+ Ω ($ddot?) $rough } $beforeLower > H | ω $1; 
+
+# Make A x ` = > H a x
+
+Α ($glower $macron?) $rough > H | α $1 ; 
+Ε ($glower) $rough > H | ε $1 ; 
+Η ($glower) $rough > H | η $1 ; 
+Ι ($glower $ddot?) $rough > H | ι $1 ; 
+Ο ($glower) $rough > H | ο $1 ; 
+Υ ($glower) $rough > H | υ $1 ; 
+Ω ($glower  $ddot?) $rough > H | ω $1 ; 
+
+#Otherwise, make x ` into h x and X ` into H X
+
+($lcgvowel + $ddotmac? ) $rough > h | $1 ; 
+($gvowel + $ddotmac? ) $rough > H | $1 ; 
+
+# Go backwards with H
+
+| $1 $rough < h ($evowel $macron $ddot? $evowel2_i $macron?) ;
+| $1 $rough < h ($evowel $ddot? $evowel2 $macron?) ;
+| $1 $rough < h ($evowel $macron? $ddot?) ;
+
+| $1 $rough < H ([AEIOUY] $macron $ddot? $evowel2_i $macron?) ;
+| $1 $rough < H ([AEIOUY] $ddot? $evowel2 $macron?) ;
+| $1 $rough < H ([AEIOUY] $macron? $ddot?) ;
+
+# titlecase, have to fix individually
+# in the future, we should add &uppercase() to make this easier
+
+| A $1 $rough < H a ($macron  $ddot? $evowel2_i $macron?) ;
+| E $1 $rough < H e ($macron  $ddot? $evowel2_i $macron?) ;
+| I $1 $rough < H i ($macron  $ddot? $evowel2_i $macron?) ;
+| O $1 $rough < H o ($macron  $ddot? $evowel2_i $macron?) ;
+| U $1 $rough < H u ($macron $ddot? $evowel2_i $macron?) ;
+| Y $1 $rough < H y ($macron $ddot? $evowel2_i $macron?) ;
+
+| A $1 $rough < H a ($ddot? $evowel2 $macron?) ;
+| E $1 $rough < H e ($ddot? $evowel2 $macron?) ;
+| I $1 $rough < H i ($ddot? $evowel2 $macron?) ;
+| O $1 $rough < H o ($ddot? $evowel2 $macron?) ;
+| U $1 $rough < H u ($ddot? $evowel2 $macron?) ;
+| Y $1 $rough < H y ($ddot? $evowel2 $macron?) ;
+
+| A $1 $rough < H a ($macron? $ddot? ) ;
+| E $1 $rough < H e ($macron? $ddot? ) ;
+| I $1 $rough < H i ($macron? $ddot? ) ;
+| O $1 $rough < H o ($macron? $ddot? ) ;
+| U $1 $rough < H u ($macron? $ddot? ) ;
+| Y $1 $rough < H y ($macron? $ddot? ) ;
+
+# Now do smooth
+
+#delete smooth breathing for Latin
+$smooth > ; 
+
+# insert in Greek
+# the assumption is that all Marks are on letters.
+
+ | $1 $smooth < $notLetter { ([rR]) } [^hH$smooth$rough] ;
+ | $1 $smooth < $notLetter { ($evowel $macron? $evowel2 $macron?) } [^$smooth$rough] ;
+ | $1 $smooth < $notLetter { ($evowel $macron?) } [^$evowel2$smooth$rough] ;
+
+# TODO: preserve smooth/rough breathing if not 
+# on initial vowel sequence
+
+# need to have these up here so the rules don't mask
+
+# remove now superfluous macron when returning
+
+Α < A $macron ;  
+α < a $macron ; 
+
+η <> e $macron ;
+Η <> E $macron ;
+
+φ <> ph ; 
+Ψ } $beforeLower <> Ps ; 
+Ψ <> PS ; 
+
+Φ } $beforeLower <> Ph ; 
+Φ <> PH ;
+ψ <> ps ; 
+
+ω <> o $macron ;
+Ω <>  O $macron;
+
+# NORMAL
+
+α <> a ; 
+Α <> A ; 
+
+β <> b ; 
+Β <> B ; 
+
+γ } $gammaLike <> n } $egammaLike ; 
+γ <> g ; 
+Γ } $gammaLike <> N } $egammaLike ; 
+Γ <> G ; 
+
+δ <> d ; 
+Δ <> D ; 
+
+ε <> e ; 
+Ε <> E ; 
+
+ζ <> z ; 
+Ζ <> Z ; 
+
+θ <> th ; 
+Θ } $beforeLower <> Th ; 
+Θ <> TH ; 
+
+ι <> i ; 
+Ι <> I ; 
+
+κ <> k ;
+Κ <> K ; 
+
+λ <> l ; 
+Λ <> L ; 
+
+μ <> m ; 
+Μ <> M ; 
+
+ν } $gammaLike > n\' ; 
+ν <> n ; 
+Ν } $gammaLike <> N\' ; 
+Ν <> N ; 
+
+ξ <> x ; 
+Ξ <> X ; 
+
+ο <> o ; 
+Ο <> O ; 
+
+π <> p ; 
+Π <> P ; 
+
+ρ $rough <> rh; 
+Ρ $rough } $beforeLower <> Rh ; 
+Ρ $rough <> RH ; 
+ρ <> r ; 
+Ρ <> R ; 
+
+# insert separator
+
+[Pp] { } ς > \' ; 
+[Pp] { } σ > \' ;
+
+# underbar means exception
+
+# before a letter, initial
+ς } $beforeLetter <> s $underbar } $beforeLetter;
+σ } $beforeLetter <> s } $beforeLetter;
+
+# otherwise, after a letter = final 
+$afterLetter { σ <> $afterLetter { s $underbar;
+$afterLetter { ς <> $afterLetter { s ;
+
+# otherwise (isolated) = initial
+ς <> s $underbar;
+σ <> s ;
+
+[Pp] { Σ <> \'S ; 
+Σ <> S ; 
+
+τ <> t ; 
+Τ <> T ; 
+
+$vowel {υ } <> u ; 
+υ <> y ; 
+$vowel { Υ <> U ; 
+Υ <> Y ; 
+
+χ <> ch ; 
+Χ } $beforeLower <> Ch ; 
+Χ <> CH ; 
+
+# Completeness for ASCII
+
+$ignore = [[:Mark:]''] * ;
+
+| k  < c ;
+| ph < f ;
+| i  < j ;
+| k < q ;
+| b < v } $vowel ;
+| b < w } $vowel;
+| u < v ;
+| u < w;
+| K < C ;
+| Ph < F ;
+| I < J ;
+| K < Q ;
+| B < V  } $vowel ;
+| B < W  } $vowel ;
+| U < V ;
+| U < W ;
+
+$rough } $ignore [:UppercaseLetter:] > H ;
+$ignore [:UppercaseLetter:] { $rough > H ;
+$rough < H ;
+$rough <> h ;
+
+# Completeness for Greek
+
+ϐ > | β ;
+ϑ > | θ ;
+ϒ > | Υ ;
+ϕ > | φ ;
+ϖ > | π ;
+
+ϰ > | κ ;
+ϱ > | ρ ;
+ϲ > | σ ;
+ϳ > j ;
+ϴ > | Θ ;
+ϵ > | ε ;
+
+µ > | μ ;
+
+ ͺ > i;
+
+# delete any trailing ' marks used for roundtripping
+
+ < [Ππ] { \' } [Ss] ;
+ < [Νν] { \' } $egammaLike ;
+
+::NFC (NFD) ;
+# ([\u0000-\u007F [:Latin:] [:Greek:] [:nonspacing mark:]]) ;
+# ([\u0000-\u007F \u00B7 [:Latin:] [:nonspacing mark:]]) ;
+# MINIMAL FILTER GENERATED FOR: Latin-Greek BACKWARD
+:: ( [':?A-Za-z\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01F0\u01F4-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u0300-\u0337\u0339-\u0345\u0385-\u0386\u0388-\u038A\u038C\u038E-\u0390\u03AA-\u03B0\u03CA-\u03CE\u03D3-\u03D4\u0400-\u0401\u0403\u0407\u040C-\u040E\u0419\u0439\u0450-\u0451\u0453\u0457\u045C-\u045E\u0476-\u0477\u04C1-\u04C2\u04D0-\u04D3\u04D6-\u04D7\u04DA-\u04DF\u04E2-\u04E7\u04EA-\u04F5\u04F8-\u04F9\u1E00-\u1E99\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FC1-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEE\u1FF2-\u1FF4\u1FF6-\u1FFC\u212A-\u212B] ) ;
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Greek_Latin_UNGEGN.txt b/src/com/ibm/icu/impl/data/Transliterator_Greek_Latin_UNGEGN.txt
new file mode 100644
index 0000000..c98768f
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Greek_Latin_UNGEGN.txt
@@ -0,0 +1,248 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Greek_Latin_UNGEGN.txt,v $
+# $Date: 2002/07/26 16:09:04 $
+# $Revision: 1.2 $
+#--------------------------------------------------------------------
+# For modern Greek, based on UNGEGN rules.
+
+# Rules are predicated on running NFD first, and NFC afterwards
+# MINIMAL FILTER GENERATED FOR: Greek-Latin/UNGEGN
+# WARNING: need to add accents to both filters ###
+# :: [́̄̆̈;µ·ÀÂÈÊÌÎÒÔÙÛàâèêìîòôùûĈ-ĉĜ-ĝĤ-ĥĴ-ĵŜ-ŝŴ-ŷǛ-ǜǸ-ǹ̀̂̓-̔̀͂-̓ͅͺ;Ά-ΊΌΎ-ΡΣ-ώϐ-ϖϰ-ϵЀЍѐѝḔ-ḕṐ-ṑẀ-ẁẐ-ẑẤ-ậẰ-ằẾ-ệỐ-ộỜ-ờỪ-ừỲ-ỳἀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼι῁-ῄῆ-῍῏-ΐῖ-Ί῝῟-῭ῲ-ῴῶ-ῼΩ] ;
+
+:: [[[:Greek:][:Mn:][:Me:]] [\:-;?\u00B7\u037E\u0387]] ;
+::NFD (NFC) ;
+
+# Useful variables
+
+$lower = [[:latin:][:greek:] & [:Ll:]] ;
+$upper = [[:latin:][:greek:] & [:Lu:]] ;
+$accent = [[:Mn:][:Me:]] ;
+
+$macron = ̄ ;
+$ddot = ̈ ;
+
+$lcgvowel = [αεηιουω] ;
+$ucgvowel = [ΑΕΗΙΟΥΩ] ;
+$gvowel = [$lcgvowel $ucgvowel] ;
+$lcgvowelC = [$lcgvowel $accent] ;
+
+$evowel = [aeiouyAEIOUY];
+$vowel = [ $evowel $gvowel] ;
+
+$beforeLower = $accent * $lower ;
+
+$gammaLike = [ΓΚΞΧγκξχϰ] ;
+$egammaLike = [GKXCgkxc] ;
+$smooth = ̓ ;
+$rough = ̔ ;
+$iotasub = ͅ ;
+
+$softener = [βΒγΓδΔζΖλΛμΜνΝρΡ$gvowel] ;
+
+$under = ̱;
+
+$caron = ̌;
+
+$afterLetter = [:L:] [\'$accent]* ;
+$beforeLetter = [\'$accent]* [:L:] ;
+
+# Fix punctuation
+
+# preserve orginal
+\: <> \: $under ;
+\? <> \? $under ;
+
+\; <> \? ;
+· <> \: ;
+
+# Fix any ancient characters that creep in
+
+͂ > ́ ;
+̂ > ́ ;
+̀ > ́ ;
+$smooth > ;
+$rough > ;
+$iotasub > ;
+ͺ > ;
+
+# need to have these up here so the rules don't mask
+
+η <> i $under ;
+Η <> I $under ;
+
+Ψ } $beforeLower <> Ps ;
+Ψ <> PS ;
+ψ <> ps ;
+
+ω <> o $under ;
+Ω <>  O $under;
+
+# at begining or end of word, convert mp to b
+
+[^[:L:]$accent] { μπ > b ;
+μπ } [^[:L:]$accent] > b ;
+[^[:L:]$accent] { [Μμ][Ππ] > B ;
+[Μμ][Ππ] } [^[:L:]$accent] > B ;
+
+μπ < b ;
+Μπ < B } $beforeLower ;
+ΜΠ < B ;
+
+# handle diphthongs ending with upsilon
+
+ου <> ou ;
+ΟΥ <> OU ;
+Ου <> Ou ;
+οΥ <> oU ;
+
+$fmaker = [aeiAEI] $under ? ;
+$shiftForwardVowels = [[:Mn:]-[\u0308]]; # note: a diaeresis keeps the items separate
+
+$fmaker { υ ( $shiftForwardVowels )* } $softener > $1 v $under ;
+υ $1 < ( $shiftForwardVowels )* v $under ;
+
+$fmaker { υ ( $shiftForwardVowels )* } > $1 f $under;
+υ $1 < ( $shiftForwardVowels )* f $under ;
+
+$fmaker { Υ } $softener <> V $under ;
+$fmaker { Υ <> U $under ;
+
+υ <> y ;
+Υ <> Y ;
+
+# NORMAL
+
+α <> a ;
+Α <> A ;
+
+β <> v ;
+Β <> V ;
+
+γ } $gammaLike <> n } $egammaLike ;
+γ <> g ;
+Γ } $gammaLike <> N } $egammaLike ;
+Γ <> G ;
+
+δ <> d ;
+Δ <> D ;
+
+ε <> e ;
+Ε <> E ;
+
+ζ <> z ;
+Ζ <> Z ;
+
+θ <> th ;
+Θ } $beforeLower <> Th ;
+Θ <> TH ;
+
+ι <> i ;
+Ι <> I ;
+
+κ <> k ;
+Κ <> K ;
+
+λ <> l ;
+Λ <> L ;
+
+μ <> m ;
+Μ <> M ;
+
+ν } $gammaLike > n\' ;
+ν <> n ;
+Ν } $gammaLike <> N\' ;
+Ν <> N ;
+
+ξ <> x ;
+Ξ <> X ;
+
+ο <> o ;
+Ο <> O ;
+
+π <> p ;
+Π <> P ;
+
+ρ <> r ;
+Ρ <> R ;
+
+[Pp] { } ς > \' ;
+[Pp] { } σ > \' ;
+
+# Caron means exception
+
+# before a letter, initial
+ς } $beforeLetter <> s $under } $beforeLetter;
+σ } $beforeLetter <> s } $beforeLetter;
+
+# otherwise, after a letter = final
+$afterLetter { σ <> $afterLetter { s $under;
+$afterLetter { ς <> $afterLetter { s ;
+
+# otherwise (isolated) = initial
+ς <> s $under;
+σ <> s ;
+
+[Pp] { Σ <> \'S ;
+Σ <> S ;
+
+τ <> t ;
+Τ <> T ;
+
+φ <> f ;
+Φ <> F ;
+
+χ <> ch ;
+Χ } $beforeLower <> Ch ;
+Χ <> CH ;
+
+# Completeness for ASCII
+
+# $ignore = [[:Mark:]''] * ;
+
+| ch < h ;
+| k  < c ;
+| i  < j ;
+| k < q ;
+| b < u } $vowel ;
+| b < w } $vowel ;
+| y < u ;
+| y < w ;
+
+| Ch < H ;
+| K < C ;
+| I < J ;
+| K < Q ;
+| B < W } $vowel ;
+| B < U } $vowel ;
+| Y < W ;
+| Y < U ;
+
+# Completeness for Greek
+
+ϐ > | β ;
+ϑ > | θ ;
+ϒ > | Υ ;
+ϕ > | φ ;
+ϖ > | π ;
+
+ϰ > | κ ;
+ϱ > | ρ ;
+ϲ > | σ ;
+ϳ > j ;
+ϴ > | Θ ;
+ϵ > | ε ;
+µ > | μ ;
+
+# delete any trailing ' marks used for roundtripping
+
+ < [Ππ] { \' } [Ss] ;
+ < [Νν] { \' } $egammaLike ;
+
+::NFC (NFD) ;
+
+# MINIMAL FILTER GENERATED FOR: Latin-Greek/UNGEGN BACKWARD
+:: ([[[:Latin:][:Mn:][:Me:]] ['\:?]]) ;
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Gujarati_InterIndic.txt b/src/com/ibm/icu/impl/data/Transliterator_Gujarati_InterIndic.txt
new file mode 100755
index 0000000..950bb1a
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Gujarati_InterIndic.txt
@@ -0,0 +1,93 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Gujarati_InterIndic.txt,v $
+# $Date: 2002/03/02 00:27:27 $
+# $Revision: 1.5 $
+#--------------------------------------------------------------------
+
+# Gujarati-InterIndic
+#:: NFD (NFC) ;
+\u0a81>\ue001; # SIGN CANDRABINDU
+\u0a82>\ue002; # SIGN ANUSVARA
+\u0a83>\ue003; # SIGN VISARGA
+\u0a85>\ue005; # LETTER A
+\u0a86>\ue006; # LETTER AA
+\u0a87>\ue007; # LETTER I
+\u0a88>\ue008; # LETTER II
+\u0a89>\ue009; # LETTER U
+\u0a8a>\ue00a; # LETTER UU
+\u0a8b>\ue00b; # LETTER VOCALIC R
+\u0a8d>\ue00d; # UNMAPPED Gujarati-InterIndic: VOWEL CANDRA E
+\u0a8f>\ue00f; # LETTER E
+\u0a90>\ue010; # LETTER AI
+\u0a91>\ue011; # UNMAPPED Gujarati-InterIndic: VOWEL CANDRA O
+\u0a93>\ue013; # LETTER O
+\u0a94>\ue014; # LETTER AU
+\u0a95>\ue015; # LETTER KA
+\u0a96>\ue016; # LETTER KHA
+\u0a97>\ue017; # LETTER GA
+\u0a98>\ue018; # LETTER GHA
+\u0a99>\ue019; # LETTER NGA
+\u0a9a>\ue01a; # LETTER CA
+\u0a9b>\ue01b; # LETTER CHA
+\u0a9c>\ue01c; # LETTER JA
+\u0a9d>\ue01d; # LETTER JHA
+\u0a9e>\ue01e; # LETTER NYA
+\u0a9f>\ue01f; # LETTER TTA
+\u0aa0>\ue020; # LETTER TTHA
+\u0aa1>\ue021; # LETTER DDA
+\u0aa2>\ue022; # LETTER DDHA
+\u0aa3>\ue023; # LETTER NNA
+\u0aa4>\ue024; # LETTER TA
+\u0aa5>\ue025; # LETTER THA
+\u0aa6>\ue026; # LETTER DA
+\u0aa7>\ue027; # LETTER DHA
+\u0aa8>\ue028; # LETTER NA
+\u0aaa>\ue02a; # LETTER PA
+\u0aab>\ue02b; # LETTER PHA
+\u0aac>\ue02c; # LETTER BA
+\u0aad>\ue02d; # LETTER BHA
+\u0aae>\ue02e; # LETTER MA
+\u0aaf>\ue02f; # LETTER YA
+\u0ab0>\ue030; # LETTER RA
+\u0ab2>\ue032; # LETTER LA
+\u0ab3>\ue033; # LETTER LLA
+\u0ab5>\ue035; # LETTER VA
+\u0ab6>\ue036; # LETTER SHA
+\u0ab7>\ue037; # LETTER SSA
+\u0ab8>\ue038; # LETTER SA
+\u0ab9>\ue039; # LETTER HA
+\u0abc>\ue03c; # SIGN NUKTA
+\u0abd>\ue03d; # SIGN AVAGRAHA
+\u0abe>\ue03e; # VOWEL SIGN AA
+\u0abf>\ue03f; # VOWEL SIGN I
+\u0ac0>\ue040; # VOWEL SIGN II
+\u0ac1>\ue041; # VOWEL SIGN U
+\u0ac2>\ue042; # VOWEL SIGN UU
+\u0ac3>\ue043; # VOWEL SIGN VOCALIC R
+\u0ac4>\ue044; # VOWEL SIGN VOCALIC RR
+\u0ac5>\ue045; # VOWEL SIGN CANDRA E
+\u0ac7>\ue047; # VOWEL SIGN E
+\u0ac8>\ue048; # VOWEL SIGN AI
+\u0ac9>\ue049; # VOWEL SIGN CANDRA O
+\u0acb>\ue04b; # VOWEL SIGN O
+\u0acc>\ue04c; # VOWEL SIGN AU
+\u0acd>\ue04d; # SIGN VIRAMA
+\u0ad0>\ue050; # OM
+\u0ae0>\ue060; # LETTER VOCALIC RR
+\u0ae6>\ue066; # DIGIT ZERO
+\u0ae7>\ue067; # DIGIT ONE
+\u0ae8>\ue068; # DIGIT TWO
+\u0ae9>\ue069; # DIGIT THREE
+\u0aea>\ue06a; # DIGIT FOUR
+\u0aeb>\ue06b; # DIGIT FIVE
+\u0aec>\ue06c; # DIGIT SIX
+\u0aed>\ue06d; # DIGIT SEVEN
+\u0aee>\ue06e; # DIGIT EIGHT
+\u0aef>\ue06f; # DIGIT NINE
+\u0964>\ue064;        # DANDA
+\u0965>\ue065;        # DOUBLE DANDA
+#    :: NFC (NFD) ;
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Gurmukhi_InterIndic.txt b/src/com/ibm/icu/impl/data/Transliterator_Gurmukhi_InterIndic.txt
new file mode 100755
index 0000000..6141e71
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Gurmukhi_InterIndic.txt
@@ -0,0 +1,99 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Gurmukhi_InterIndic.txt,v $
+# $Date: 2002/08/14 00:40:58 $
+# $Revision: 1.11 $
+#--------------------------------------------------------------------
+
+# Gurmukhi-InterIndic
+#:: NFD (NFC) ;
+
+#\u0A16\u0A3C>\uE059; # LETTER KHHA
+#\u0A17\u0A3C>\uE05A; # LETTER GHHA
+#\u0A1C\u0A3C>\uE05B; # LETTER ZA
+#\u0A38\u0A3C>\uE036; # LETTER SHA
+#\u0A32\u0A3C>\uE033; # LETTER LLA
+#\u0A2B\u0A3C>\uE05E; # LETTER FA
+
+\u0A02>\uE002;  # SIGN BINDI
+\u0A05>\uE005;  # LETTER A
+\u0A06>\uE006;  # LETTER AA
+\u0A07>\uE007;  # LETTER I
+\u0A08>\uE008;  # LETTER II
+\u0A09>\uE009;  # LETTER U
+\u0A0A>\uE00A;  # LETTER UU
+\u0A0C>;  # UNMAPPED 
+\u0A0F>\uE00F;  # LETTER EE
+\u0A10>\uE010;  # LETTER AI
+\u0A13>\uE013;  # LETTER OO
+\u0A14>\uE014;  # LETTER AU
+\u0A15>\uE015;  # LETTER KA
+\u0A16>\uE016;  # LETTER KHA
+\u0A17>\uE017;  # LETTER GA
+\u0A18>\uE018;  # LETTER GHA
+\u0A19>\uE019;  # LETTER NGA
+\u0A1A>\uE01A;  # LETTER CA
+\u0A1B>\uE01B;  # LETTER CHA
+\u0A1C>\uE01C;  # LETTER JA
+\u0A1D>\uE01D;  # LETTER JHA
+\u0A1E>\uE01E;  # LETTER NYA
+\u0A1F>\uE01F;  # LETTER TTA
+\u0A20>\uE020;  # LETTER TTHA
+\u0A21>\uE021;  # LETTER DDA
+\u0A22>\uE022;  # LETTER DDHA
+\u0A23>\uE023;  # LETTER NNA
+\u0A24>\uE024;  # LETTER TA
+\u0A25>\uE025;  # LETTER THA
+\u0A26>\uE026;  # LETTER DA
+\u0A27>\uE027;  # LETTER DHA
+\u0A28>\uE028;  # LETTER NA
+\u0A2A>\uE02A;  # LETTER PA
+\u0A2B>\uE02B;  # LETTER PHA
+\u0A2C>\uE02C;  # LETTER BA
+\u0A2D>\uE02D;  # LETTER BHA
+\u0A2E>\uE02E;  # LETTER MA
+\u0A2F>\uE02F;  # LETTER YA
+\u0A30>\uE030;  # LETTER RA
+\u0A32>\uE032;  # LETTER LA
+\u0a33>\uE033; # FALLBACK
+\u0A35>\uE035;  # LETTER VA
+\u0a36>\ue036;
+\u0A38\0a3c>\ue036;
+\u0A38>\uE038;  # LETTER SA
+\u0A39>\uE039;  # LETTER HA
+\u0A3C>\uE03C;  # SIGN NUKTA
+\u0A3E>\uE03E;  # VOWEL SIGN AA
+\u0A3F>\uE03F;  # VOWEL SIGN I
+\u0A40>\uE040;  # VOWEL SIGN II
+\u0A41>\uE041;  # VOWEL SIGN U
+\u0A42>\uE042;  # VOWEL SIGN UU
+\u0A47>\uE047;  # VOWEL SIGN EE
+\u0A48>\uE048;  # VOWEL SIGN AI
+\u0A4B>\uE04B;  # VOWEL SIGN OO
+\u0A4C>\uE04C;  # VOWEL SIGN AU
+\u0A4D>\uE04D;  # SIGN VIRAMA
+
+\u0A5C>\uE05C;  # LETTER RRA
+
+\u0A66>\uE066;  # DIGIT ZERO
+\u0A67>\uE067;  # DIGIT ONE
+\u0A68>\uE068;  # DIGIT TWO
+\u0A69>\uE069;  # DIGIT THREE
+\u0A6A>\uE06A;  # DIGIT FOUR
+\u0A6B>\uE06B;  # DIGIT FIVE
+\u0A6C>\uE06C;  # DIGIT SIX
+\u0A6D>\uE06D;  # DIGIT SEVEN
+\u0A6E>\uE06E;  # DIGIT EIGHT
+\u0A6F>\uE06F;  # DIGIT NINE
+\u0A70>\uE070;  # TIPPI
+\u0A71>\uE071;  # ADDAK
+\u0A72>\uE072;  # IRI
+\u0A73>\uE073;  # URA
+\u0A74>\uE074;  # EK ONKAR
+\u0964>\ue064;        # DANDA
+\u0965>\ue065;        # DOUBLE DANDA
+#    :: NFC (NFD) ;
+# eof
+
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Han_Latin.txt b/src/com/ibm/icu/impl/data/Transliterator_Han_Latin.txt
new file mode 100644
index 0000000..58b816e
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Han_Latin.txt
@@ -0,0 +1,25429 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Han_Latin.txt,v $
+# $Date: 2002/07/29 21:01:07 $
+# $Revision: 1.5 $
+#--------------------------------------------------------------------
+
+# Warning: does not do round-trip mapping!!
+
+# Convert CJK characters
+## :: (halfwidth-fullwidth);
+
+$terminalPunct = [\.\,\:\;\?\!.,:?!。、;[:Pe:][:Pf:]];
+$initialPunct = [:Ps:][:Pi:];
+
+# add space between any terminal punctuation and letters, and
+# between letters and Han or initial punct
+
+$terminalPunct { } [:L:] > ' ';
+[:L:] { } [[:Han:] $initialPunct] > ' ';
+
+# below, the rules add space after ideographs. Remove that space before terminals
+{ ' ' } $terminalPunct > ;
+
+# remove all spaces going backwards
+## < ' ';
+
+# Start RAW data for converting CJK characters
+双>shuang|\ ;
+创>chuàng|\ ;
+窗>chuang|\ ;
+状>zhuàng|\ ;
+床>chuáng|\ ;
+庄>zhuang|\ ;
+撞>zhuàng|\ ;
+壮>zhuàng|\ ;
+闯>chuăng|\ ;
+爽>shuăng|\ ;
+妆>zhuang|\ ;
+桩>zhuang|\ ;
+霜>shuang|\ ;
+幢>chuáng|\ ;
+葱>chuang|\ ;
+疮>chuang|\ ;
+怆>chuàng|\ ;
+剐>chuang|\ ;
+孀>shuang|\ ;
+泶>shuang|\ ;
+疒>chuáng|\ ;
+鹴>shuang|\ ;
+鸘>shuang|\ ;
+鷞>shuang|\ ;
+骦>shuang|\ ;
+驦>shuang|\ ;
+騻>shuăng|\ ;
+騺>shuang|\ ;
+雙>shuang|\ ;
+闖>chuăng|\ ;
+裝>zhuang|\ ;
+莊>zhuang|\ ;
+荘>zhuang|\ ;
+艭>shuang|\ ;
+縔>shuăng|\ ;
+糚>zhuang|\ ;
+窻>chuang|\ ;
+窓>chuang|\ ;
+礵>shuang|\ ;
+瘡>chuang|\ ;
+獊>chuàng|\ ;
+狀>zhuàng|\ ;
+牕>chuang|\ ;
+牎>chuang|\ ;
+牀>chuáng|\ ;
+爼>shuang|\ ;
+焋>zhuàng|\ ;
+灀>shuàng|\ ;
+漺>chuăng|\ ;
+欆>shuang|\ ;
+橦>chuáng|\ ;
+樉>shuăng|\ ;
+樁>zhuang|\ ;
+梉>zhuang|\ ;
+撝>chuáng|\ ;
+摤>chuăng|\ ;
+摐>chuang|\ ;
+戧>chuang|\ ;
+戇>zhuàng|\ ;
+慡>shuăng|\ ;
+愴>chuàng|\ ;
+孇>shuang|\ ;
+娤>zhuang|\ ;
+妝>zhuang|\ ;
+壵>zhuàng|\ ;
+壯>zhuàng|\ ;
+塽>shuăng|\ ;
+囯>chuang|\ ;
+噇>chuáng|\ ;
+創>chuang|\ ;
+剭>chuang|\ ;
+剙>chuàng|\ ;
+剏>chuang|\ ;
+刱>chuàng|\ ;
+刓>chuang|\ ;
+刅>chuang|\ ;
+䭚>chuáng|\ ;
+䫪>shuăng|\ ;
+䡴>chuáng|\ ;
+䡯>shuàng|\ ;
+䚒>chuáng|\ ;
+䗮>shuăng|\ ;
+䎫>chuàng|\ ;
+䇬>chuăng|\ ;
+䃥>chuáng|\ ;
+㼽>shuăng|\ ;
+㵂>chuăng|\ ;
+㦼>shuàng|\ ;
+㡖>chuáng|\ ;
+中>zhong|\ ;
+上>shàng|\ ;
+生>sheng|\ ;
+成>chéng|\ ;
+想>xiăng|\ ;
+两>liăng|\ ;
+长>cháng|\ ;
+将>jiang|\ ;
+种>zhŏng|\ ;
+声>sheng|\ ;
+向>xiàng|\ ;
+正>zheng|\ ;
+重>chóng|\ ;
+相>xiang|\ ;
+政>zheng|\ ;
+场>cháng|\ ;
+张>zhang|\ ;
+常>cháng|\ ;
+光>guang|\ ;
+象>xiàng|\ ;
+传>chuán|\ ;
+城>chéng|\ ;
+强>jiàng|\ ;
+转>zhuăn|\ ;
+量>liáng|\ ;
+众>zhòng|\ ;
+程>chéng|\ ;
+江>jiang|\ ;
+黄>huáng|\ ;
+商>shang|\ ;
+像>xiàng|\ ;
+香>xiang|\ ;
+专>zhuan|\ ;
+争>zheng|\ ;
+讲>jiăng|\ ;
+冲>chong|\ ;
+证>zhèng|\ ;
+响>xiăng|\ ;
+称>cheng|\ ;
+整>zhĕng|\ ;
+伤>shang|\ ;
+掌>zhăng|\ ;
+省>shĕng|\ ;
+装>chĕng|\ ;
+况>kuàng|\ ;
+娘>niáng|\ ;
+项>xiàng|\ ;
+章>zhang|\ ;
+兄>xiong|\ ;
+承>chéng|\ ;
+乡>xiang|\ ;
+穿>chuan|\ ;
+胜>sheng|\ ;
+皇>huáng|\ ;
+亮>liàng|\ ;
+雄>xióng|\ ;
+奖>jiăng|\ ;
+船>chuán|\ ;
+尚>shàng|\ ;
+厂>chăng|\ ;
+充>chong|\ ;
+良>liáng|\ ;
+丈>zhàng|\ ;
+枪>qiang|\ ;
+降>jiàng|\ ;
+升>sheng|\ ;
+唱>chàng|\ ;
+征>zheng|\ ;
+墙>qiáng|\ ;
+跃>qiàng|\ ;
+抢>cheng|\ ;
+胸>xiong|\ ;
+乘>chéng|\ ;
+盛>chéng|\ ;
+诚>chéng|\ ;
+狂>kuáng|\ ;
+川>chuan|\ ;
+粮>liáng|\ ;
+辆>liàng|\ ;
+享>xiăng|\ ;
+穷>qióng|\ ;
+梁>liáng|\ ;
+赏>shăng|\ ;
+凉>liáng|\ ;
+荒>huang|\ ;
+忠>zhong|\ ;
+箱>xiang|\ ;
+帐>zhàng|\ ;
+郑>zhèng|\ ;
+剩>shèng|\ ;
+晃>huăng|\ ;
+凶>xiong|\ ;
+崇>chóng|\ ;
+详>xiáng|\ ;
+汤>shang|\ ;
+挣>zheng|\ ;
+蒋>jiang|\ ;
+祥>xiáng|\ ;
+摔>shuai|\ ;
+仗>zhàng|\ ;
+障>zhàng|\ ;
+熊>xióng|\ ;
+尝>cháng|\ ;
+盗>chéng|\ ;
+慌>huang|\ ;
+牲>sheng|\ ;
+串>chuàn|\ ;
+偿>cháng|\ ;
+昌>chang|\ ;
+怔>zheng|\ ;
+疆>jiang|\ ;
+虫>chóng|\ ;
+绳>shéng|\ ;
+涨>zhăng|\ ;
+矿>kuàng|\ ;
+畅>chàng|\ ;
+仲>zhòng|\ ;
+撑>cheng|\ ;
+谅>liàng|\ ;
+肠>cháng|\ ;
+赚>zhuàn|\ ;
+迈>guăng|\ ;
+呈>chéng|\ ;
+衷>zhong|\ ;
+症>zheng|\ ;
+砖>zhuan|\ ;
+襄>xiang|\ ;
+帅>shuài|\ ;
+惶>huáng|\ ;
+喘>chuăn|\ ;
+腔>qiang|\ ;
+匠>jiàng|\ ;
+湘>xiang|\ ;
+煌>huáng|\ ;
+巷>xiàng|\ ;
+谎>huăng|\ ;
+厢>xiang|\ ;
+肿>zhŏng|\ ;
+胀>zhàng|\ ;
+琼>qióng|\ ;
+姜>jiang|\ ;
+倡>chàng|\ ;
+晌>shăng|\ ;
+僵>jiang|\ ;
+恍>huăng|\ ;
+惩>chéng|\ ;
+宠>chŏng|\ ;
+甩>shuăi|\ ;
+澄>chéng|\ ;
+酱>jiàng|\ ;
+账>zhàng|\ ;
+撰>zhuàn|\ ;
+蒸>zheng|\ ;
+旷>kuàng|\ ;
+框>kuàng|\ ;
+逛>guàng|\ ;
+匈>xiong|\ ;
+铮>zheng|\ ;
+浆>jiang|\ ;
+酿>niáng|\ ;
+敞>chăng|\ ;
+荆>chuăn|\ ;
+翔>xiáng|\ ;
+揣>chuai|\ ;
+汹>xiong|\ ;
+裳>cháng|\ ;
+笙>sheng|\ ;
+眶>kuàng|\ ;
+锺>zhong|\ ;
+筝>zheng|\ ;
+镶>xiang|\ ;
+怅>chàng|\ ;
+窘>jiŏng|\ ;
+彰>zhang|\ ;
+橡>xiàng|\ ;
+呛>qiang|\ ;
+炯>jiŏng|\ ;
+凰>huáng|\ ;
+逞>chĕng|\ ;
+璋>zhang|\ ;
+筐>kuang|\ ;
+踉>liáng|\ ;
+跄>qiang|\ ;
+桨>chong|\ ;
+幌>huăng|\ ;
+粱>liáng|\ ;
+拴>shuan|\ ;
+璜>huáng|\ ;
+缰>jiang|\ ;
+忡>chong|\ ;
+娼>chang|\ ;
+拯>zhĕng|\ ;
+猖>chang|\ ;
+诏>kuáng|\ ;
+闩>shuan|\ ;
+憧>chong|\ ;
+徵>zheng|\ ;
+甥>sheng|\ ;
+秤>chĕng|\ ;
+涮>shuàn|\ ;
+晾>liàng|\ ;
+踹>chuài|\ ;
+殇>shang|\ ;
+帧>zhèng|\ ;
+骋>chĕng|\ ;
+匡>kuang|\ ;
+踵>zhŏng|\ ;
+穹>qióng|\ ;
+篆>zhuàn|\ ;
+橙>chéng|\ ;
+簧>huáng|\ ;
+徨>huáng|\ ;
+丞>chéng|\ ;
+栓>shuan|\ ;
+迥>jiŏng|\ ;
+盅>zhong|\ ;
+蝗>huáng|\ ;
+锵>qiang|\ ;
+绛>jiàng|\ ;
+茧>chóng|\ ;
+漳>zhang|\ ;
+瞠>cheng|\ ;
+羌>qiang|\ ;
+饷>xiăng|\ ;
+蟀>shuài|\ ;
+幛>zhàng|\ ;
+飨>xiăng|\ ;
+潢>huáng|\ ;
+冢>zhŏng|\ ;
+瘴>zhàng|\ ;
+铎>cheng|\ ;
+蔷>qiáng|\ ;
+戕>qiang|\ ;
+磺>huáng|\ ;
+犟>jiàng|\ ;
+犷>guăng|\ ;
+咣>guang|\ ;
+忪>zhong|\ ;
+樟>zhang|\ ;
+邝>kuàng|\ ;
+嫦>cháng|\ ;
+锃>zhèng|\ ;
+遑>huáng|\ ;
+獐>zhang|\ ;
+徜>cháng|\ ;
+湟>huáng|\ ;
+隍>huáng|\ ;
+嶂>zhàng|\ ;
+椽>chuán|\ ;
+胱>guang|\ ;
+爿>qiáng|\ ;
+诳>kuáng|\ ;
+蟑>zhang|\ ;
+襁>qiăng|\ ;
+肓>huang|\ ;
+铳>chòng|\ ;
+伥>chang|\ ;
+觞>shang|\ ;
+舂>chong|\ ;
+诤>zheng|\ ;
+熵>shang|\ ;
+氅>chăng|\ ;
+骧>xiang|\ ;
+诮>kuàng|\ ;
+篁>huáng|\ ;
+嘬>chuài|\ ;
+舛>chuăn|\ ;
+啭>zhuàn|\ ;
+馔>zhuàn|\ ;
+钏>chuàn|\ ;
+戗>qiang|\ ;
+墒>shang|\ ;
+诓>kuang|\ ;
+茕>qióng|\ ;
+蟥>huáng|\ ;
+晟>shèng|\ ;
+圹>kuàng|\ ;
+炝>qiàng|\ ;
+嵊>shèng|\ ;
+缃>xiang|\ ;
+遄>chuán|\ ;
+鲞>xiăng|\ ;
+豇>jiang|\ ;
+镪>qiang|\ ;
+魉>liăng|\ ;
+蛩>qióng|\ ;
+菖>chang|\ ;
+嫱>qiáng|\ ;
+邛>qióng|\ ;
+颛>zhuan|\ ;
+裎>chéng|\ ;
+昶>chăng|\ ;
+蜣>qiang|\ ;
+蛏>cheng|\ ;
+耩>jiăng|\ ;
+鲳>chang|\ ;
+贶>kuàng|\ ;
+庠>xiáng|\ ;
+芗>xiang|\ ;
+埕>chéng|\ ;
+螽>zhong|\ ;
+锖>qiang|\ ;
+椋>liáng|\ ;
+鬯>chàng|\ ;
+跫>qióng|\ ;
+塍>chéng|\ ;
+氚>chuan|\ ;
+惝>chăng|\ ;
+垧>jiong|\ ;
+鄣>zhang|\ ;
+眚>shĕng|\ ;
+浈>chéng|\ ;
+阊>chang|\ ;
+芎>qiong|\ ;
+銎>qiong|\ ;
+礓>jiang|\ ;
+扃>jiong|\ ;
+桄>guang|\ ;
+嫜>zhang|\ ;
+仉>zhăng|\ ;
+鼪>sheng|\ ;
+鼚>chang|\ ;
+黋>kuăng|\ ;
+黊>kuàng|\ ;
+黆>guang|\ ;
+黃>huáng|\ ;
+麞>zhang|\ ;
+鷬>huáng|\ ;
+鷒>zhuan|\ ;
+鵿>sheng|\ ;
+鵟>kuáng|\ ;
+鴤>zhong|\ ;
+鳉>jiang|\ ;
+鳇>huáng|\ ;
+鲿>cháng|\ ;
+鱶>xiăng|\ ;
+鱨>cháng|\ ;
+鱦>shéng|\ ;
+鱑>huáng|\ ;
+鱌>xiàng|\ ;
+鱆>zhang|\ ;
+鱄>zhuan|\ ;
+鱂>jiang|\ ;
+鰉>huáng|\ ;
+鯧>chang|\ ;
+鯗>xiăng|\ ;
+鮝>xiăng|\ ;
+魎>liăng|\ ;
+鬺>shang|\ ;
+鬇>zheng|\ ;
+驤>xiang|\ ;
+騿>zhang|\ ;
+騬>chéng|\ ;
+騜>huáng|\ ;
+騁>chĕng|\ ;
+駺>liáng|\ ;
+駫>jiong|\ ;
+駉>jiŏng|\ ;
+饟>xiăng|\ ;
+饗>xiăng|\ ;
+饓>cheng|\ ;
+饌>zhuàn|\ ;
+餭>huáng|\ ;
+餦>zhang|\ ;
+餉>xiăng|\ ;
+颎>jiŏng|\ ;
+顜>jiăng|\ ;
+顓>zhuan|\ ;
+顈>jiŏng|\ ;
+頳>cheng|\ ;
+項>xiàng|\ ;
+響>xiăng|\ ;
+韹>huáng|\ ;
+韔>chàng|\ ;
+韁>jiang|\ ;
+鞝>zhăng|\ ;
+靗>chèng|\ ;
+陞>sheng|\ ;
+阷>cheng|\ ;
+闛>chang|\ ;
+闂>xiàng|\ ;
+闀>xiàng|\ ;
+閶>chang|\ ;
+閂>shuan|\ ;
+長>cháng|\ ;
+锽>huáng|\ ;
+锠>chang|\ ;
+铖>chéng|\ ;
+鑲>xiang|\ ;
+鑜>shàng|\ ;
+鑛>kuàng|\ ;
+鐺>cheng|\ ;
+鐘>zhong|\ ;
+鏿>cheng|\ ;
+鏹>qiang|\ ;
+鏳>zheng|\ ;
+鏛>cháng|\ ;
+鏘>qiang|\ ;
+鎤>huăng|\ ;
+鎣>jiŏng|\ ;
+鎗>qiang|\ ;
+鎑>cheng|\ ;
+鍾>zhong|\ ;
+鍠>huáng|\ ;
+錩>chang|\ ;
+錚>zheng|\ ;
+錆>qiang|\ ;
+鋿>cháng|\ ;
+鋹>chăng|\ ;
+鋮>chéng|\ ;
+銿>zhong|\ ;
+銧>guang|\ ;
+銄>shàng|\ ;
+銃>chòng|\ ;
+鉱>kuàng|\ ;
+鉦>zheng|\ ;
+鈡>zhong|\ ;
+釧>chuàn|\ ;
+釀>niàng|\ ;
+醸>niàng|\ ;
+醬>jiàng|\ ;
+醤>jiàng|\ ;
+醎>chéng|\ ;
+酲>chéng|\ ;
+酫>chóng|\ ;
+鄺>kuàng|\ ;
+鄭>zhèng|\ ;
+鄟>zhuan|\ ;
+鄕>xiang|\ ;
+鄉>xiang|\ ;
+郷>xiang|\ ;
+郕>chéng|\ ;
+邼>kuang|\ ;
+遧>zhang|\ ;
+逈>jiŏng|\ ;
+辌>liáng|\ ;
+轉>zhuăi|\ ;
+輲>chuán|\ ;
+輬>liáng|\ ;
+輛>liàng|\ ;
+輌>liàng|\ ;
+輄>guang|\ ;
+輁>qióng|\ ;
+軭>kuang|\ ;
+転>zhuăn|\ ;
+軖>qiáng|\ ;
+躀>kuàng|\ ;
+蹱>zhong|\ ;
+蹡>qiang|\ ;
+蹖>chong|\ ;
+蹌>qiang|\ ;
+踭>zheng|\ ;
+跩>zhuăi|\ ;
+趪>huáng|\ ;
+趚>cheng|\ ;
+赹>qióng|\ ;
+赬>cheng|\ ;
+赪>cheng|\ ;
+赨>xióng|\ ;
+贃>zhuàn|\ ;
+賺>zhuàn|\ ;
+賸>shèng|\ ;
+賯>xiong|\ ;
+賬>zhàng|\ ;
+賞>shăng|\ ;
+賗>chuàn|\ ;
+貺>kuàng|\ ;
+诇>xiòng|\ ;
+譝>shéng|\ ;
+譔>zhuàn|\ ;
+證>zhèng|\ ;
+謽>jiàng|\ ;
+謪>shang|\ ;
+講>jiăng|\ ;
+謒>qiang|\ ;
+謊>huăng|\ ;
+諯>chuán|\ ;
+諥>zhòng|\ ;
+諒>liàng|\ ;
+諐>liáng|\ ;
+諍>zheng|\ ;
+誯>chàng|\ ;
+誠>chéng|\ ;
+誑>kuáng|\ ;
+誆>kuang|\ ;
+詾>xiong|\ ;
+詳>xiáng|\ ;
+詤>huăng|\ ;
+詗>xiòng|\ ;
+証>zhèng|\ ;
+訩>xiong|\ ;
+觴>shang|\ ;
+襐>xiàng|\ ;
+襈>zhuàn|\ ;
+褼>qiăng|\ ;
+褧>jiŏng|\ ;
+褈>chóng|\ ;
+裿>chong|\ ;
+裲>liăng|\ ;
+裮>chang|\ ;
+袶>jiàng|\ ;
+衶>chong|\ ;
+衳>zhong|\ ;
+衝>chong|\ ;
+衆>zhòng|\ ;
+衁>huang|\ ;
+蠰>shàng|\ ;
+蠁>xiàng|\ ;
+蟶>cheng|\ ;
+蟲>chóng|\ ;
+螿>jiang|\ ;
+螪>shang|\ ;
+螀>jiang|\ ;
+蝩>chóng|\ ;
+蜽>liăng|\ ;
+蚛>zhòng|\ ;
+蚃>xiăng|\ ;
+虰>chéng|\ ;
+蘠>qiáng|\ ;
+蘔>jiong|\ ;
+蘏>jiong|\ ;
+蘌>jiŏng|\ ;
+藭>qióng|\ ;
+薔>qiáng|\ ;
+薑>jiang|\ ;
+薌>xiang|\ ;
+蔣>jiăng|\ ;
+蔢>jiang|\ ;
+蔏>shang|\ ;
+蔃>jiàng|\ ;
+蒃>zhuàn|\ ;
+葟>huáng|\ ;
+葙>xiang|\ ;
+葁>jiang|\ ;
+萫>xiàng|\ ;
+萇>cháng|\ ;
+荿>chéng|\ ;
+荈>chuăn|\ ;
+茽>zhòng|\ ;
+茺>chong|\ ;
+茳>jiang|\ ;
+茪>guang|\ ;
+苘>qiŏng|\ ;
+芖>xiăng|\ ;
+艎>huáng|\ ;
+舯>zhong|\ ;
+舩>chuán|\ ;
+臩>guàng|\ ;
+臦>guàng|\ ;
+膷>xiang|\ ;
+膞>zhuan|\ ;
+膙>jiăng|\ ;
+膗>chuái|\ ;
+膓>cháng|\ ;
+腸>cháng|\ ;
+腫>zhŏng|\ ;
+腨>chuăn|\ ;
+腄>chuái|\ ;
+脼>liăng|\ ;
+脹>zhàng|\ ;
+脷>cháng|\ ;
+脭>chéng|\ ;
+脀>chéng|\ ;
+胘>sheng|\ ;
+聲>sheng|\ ;
+聖>shèng|\ ;
+聇>zheng|\ ;
+耑>zhuan|\ ;
+翞>jiang|\ ;
+翀>chong|\ ;
+羾>chong|\ ;
+羻>qiàng|\ ;
+羫>qiang|\ ;
+羥>qiăng|\ ;
+羗>qiang|\ ;
+纩>kuàng|\ ;
+纕>xiang|\ ;
+纊>kuàng|\ ;
+繮>jiang|\ ;
+繩>shéng|\ ;
+繦>qiăng|\ ;
+繈>qiăng|\ ;
+縳>zhuàn|\ ;
+緽>cheng|\ ;
+緟>zhòng|\ ;
+緗>xiang|\ ;
+緔>zhàng|\ ;
+緉>liăng|\ ;
+綗>jiŏng|\ ;
+絾>chéng|\ ;
+絴>xiáng|\ ;
+絳>jiàng|\ ;
+絖>kuàng|\ ;
+絅>jiŏng|\ ;
+終>zhong|\ ;
+糽>zhĕng|\ ;
+糨>jiàng|\ ;
+糧>liáng|\ ;
+糡>jiàng|\ ;
+粻>zhang|\ ;
+籦>zhong|\ ;
+籑>zhuàn|\ ;
+篿>zhuan|\ ;
+篹>zhuàn|\ ;
+篬>qiang|\ ;
+篜>zheng|\ ;
+箵>shĕng|\ ;
+箏>zheng|\ ;
+筬>chéng|\ ;
+筗>zhòng|\ ;
+筇>qióng|\ ;
+笻>qióng|\ ;
+竱>zhuăn|\ ;
+竆>qióng|\ ;
+竀>cheng|\ ;
+窮>qióng|\ ;
+窚>chéng|\ ;
+穪>cheng|\ ;
+穞>kuàng|\ ;
+穔>huáng|\ ;
+種>zhŏng|\ ;
+稦>chóng|\ ;
+祌>zhòng|\ ;
+礦>kuàng|\ ;
+礃>zhăng|\ ;
+磢>qiăng|\ ;
+磚>zhuan|\ ;
+硄>kuang|\ ;
+矼>jiang|\ ;
+矌>kuàng|\ ;
+瞕>zhàng|\ ;
+瞏>qióng|\ ;
+睜>zheng|\ ;
+睘>qióng|\ ;
+睈>chĕng|\ ;
+眾>zhòng|\ ;
+眖>kuàng|\ ;
+眐>zheng|\ ;
+皩>huàng|\ ;
+皛>jiŏng|\ ;
+癥>zheng|\ ;
+癀>huáng|\ ;
+瘬>zhàng|\ ;
+瘇>zhŭng|\ ;
+痮>zhàng|\ ;
+痋>chóng|\ ;
+疅>jiang|\ ;
+畼>chàng|\ ;
+畻>shéng|\ ;
+畺>jiang|\ ;
+畕>jiang|\ ;
+甞>cháng|\ ;
+甎>zhuan|\ ;
+瓺>cháng|\ ;
+瓖>xiang|\ ;
+瓊>qióng|\ ;
+瑼>zhuan|\ ;
+瑺>cháng|\ ;
+瑲>qiang|\ ;
+瑝>huáng|\ ;
+瑑>zhuàn|\ ;
+瑏>chuan|\ ;
+琩>chang|\ ;
+琤>cheng|\ ;
+琞>shèng|\ ;
+珹>chéng|\ ;
+珵>chéng|\ ;
+珫>chong|\ ;
+珦>xiàng|\ ;
+珖>guang|\ ;
+珄>sheng|\ ;
+玱>qiang|\ ;
+玙>chàng|\ ;
+玔>chuàn|\ ;
+玌>chuàn|\ ;
+獷>guăng|\ ;
+獚>huáng|\ ;
+獎>jiăng|\ ;
+猙>zheng|\ ;
+猐>qiang|\ ;
+狌>sheng|\ ;
+狆>zhòng|\ ;
+牚>cheng|\ ;
+牆>qiáng|\ ;
+牄>qiang|\ ;
+爯>cheng|\ ;
+爭>zheng|\ ;
+爞>chóng|\ ;
+爌>huàng|\ ;
+熿>huáng|\ ;
+熲>jiŏng|\ ;
+熗>qiàng|\ ;
+熐>jiŏng|\ ;
+熍>qiong|\ ;
+熀>huăng|\ ;
+煢>qióng|\ ;
+煛>jiŏng|\ ;
+煚>jiŏng|\ ;
+煄>zhong|\ ;
+焻>chàng|\ ;
+焺>sheng|\ ;
+焭>qióng|\ ;
+焪>qiong|\ ;
+烱>jiŏng|\ ;
+烡>guang|\ ;
+烝>zheng|\ ;
+炾>huăng|\ ;
+炡>zheng|\ ;
+炛>guang|\ ;
+炚>guang|\ ;
+炗>guang|\ ;
+炂>zhong|\ ;
+灷>zhuàn|\ ;
+灮>guang|\ ;
+瀓>chéng|\ ;
+瀂>jiong|\ ;
+澠>shéng|\ ;
+澃>jiòng|\ ;
+澂>chéng|\ ;
+潨>zhong|\ ;
+漿>jiang|\ ;
+漴>chóng|\ ;
+漲>zhăng|\ ;
+漡>shang|\ ;
+漒>qiáng|\ ;
+滳>shang|\ ;
+滰>jiăng|\ ;
+滉>huăng|\ ;
+溬>qiang|\ ;
+溗>shéng|\ ;
+湸>liàng|\ ;
+湦>sheng|\ ;
+湞>chéng|\ ;
+淐>chang|\ ;
+涼>liáng|\ ;
+涹>liàng|\ ;
+涱>zhàng|\ ;
+涋>chong|\ ;
+浾>cheng|\ ;
+浺>chong|\ ;
+浄>jiàng|\ ;
+洸>guang|\ ;
+洶>xiong|\ ;
+洭>kuang|\ ;
+洚>jiàng|\ ;
+洆>chéng|\ ;
+泩>sheng|\ ;
+泟>cheng|\ ;
+泈>zhong|\ ;
+泂>jiŏng|\ ;
+況>kuàng|\ ;
+沖>chong|\ ;
+汑>shuàn|\ ;
+汌>chuàn|\ ;
+氶>zhĕng|\ ;
+殭>jiang|\ ;
+殤>shang|\ ;
+殅>sheng|\ ;
+歂>chuán|\ ;
+欀>xiang|\ ;
+櫎>guàng|\ ;
+檾>jiŏng|\ ;
+檣>qiáng|\ ;
+檉>cheng|\ ;
+橿>jiang|\ ;
+橩>qióng|\ ;
+橣>chong|\ ;
+橕>cheng|\ ;
+樤>guang|\ ;
+樕>cheng|\ ;
+樑>liáng|\ ;
+樀>chong|\ ;
+槳>jiăng|\ ;
+槍>qiang|\ ;
+榺>shèng|\ ;
+榥>huăng|\ ;
+榝>huàng|\ ;
+椌>qiang|\ ;
+椉>chéng|\ ;
+棾>qióng|\ ;
+棦>cheng|\ ;
+棖>chéng|\ ;
+梬>chĕng|\ ;
+柼>cheng|\ ;
+柊>zhong|\ ;
+枨>cheng|\ ;
+朚>huang|\ ;
+曠>kuàng|\ ;
+曏>xiàng|\ ;
+曂>huàng|\ ;
+暷>chuán|\ ;
+暲>zhang|\ ;
+暢>chàng|\ ;
+晿>chang|\ ;
+晠>shéng|\ ;
+晑>xiăng|\ ;
+晄>huăng|\ ;
+昿>kuàng|\ ;
+昇>sheng|\ ;
+斨>qiang|\ ;
+敻>xiòng|\ ;
+撜>zhĕng|\ ;
+撗>chéng|\ ;
+撐>cheng|\ ;
+摾>jiàng|\ ;
+摪>jiang|\ ;
+摏>chong|\ ;
+搶>qiang|\ ;
+揰>chòng|\ ;
+揨>chéng|\ ;
+揗>chuai|\ ;
+掚>liăng|\ ;
+掙>zheng|\ ;
+掁>chéng|\ ;
+挰>chéng|\ ;
+抂>kuáng|\ ;
+扙>zhàng|\ ;
+懲>chéng|\ ;
+懭>kuàng|\ ;
+懬>kuàng|\ ;
+憴>shéng|\ ;
+憕>chéng|\ ;
+憆>cheng|\ ;
+憃>chong|\ ;
+慯>shang|\ ;
+愸>zhĕng|\ ;
+愰>huăng|\ ;
+惸>qióng|\ ;
+悵>chàng|\ ;
+悢>liàng|\ ;
+悜>chĕng|\ ;
+恦>xiàng|\ ;
+恟>xiong|\ ;
+恇>kuang|\ ;
+怳>huăng|\ ;
+忷>xiong|\ ;
+忀>xiang|\ ;
+徸>chong|\ ;
+徴>zheng|\ ;
+徎>chĕng|\ ;
+彊>jiàng|\ ;
+彉>jiang|\ ;
+強>qiáng|\ ;
+弶>jiàng|\ ;
+張>zhang|\ ;
+弜>jiàng|\ ;
+廧>qiáng|\ ;
+廣>guăng|\ ;
+廠>chăng|\ ;
+廂>xiang|\ ;
+庱>chĕng|\ ;
+広>guăng|\ ;
+幜>jiŏng|\ ;
+幒>zhong|\ ;
+幀>zhèng|\ ;
+帳>zhàng|\ ;
+帥>shuài|\ ;
+巟>huang|\ ;
+巛>chuan|\ ;
+嶑>xiăng|\ ;
+嶈>qiang|\ ;
+嵹>jiàng|\ ;
+崲>huáng|\ ;
+崢>zheng|\ ;
+崝>zheng|\ ;
+崈>chóng|\ ;
+峸>chéng|\ ;
+岲>kuàng|\ ;
+尙>shàng|\ ;
+專>zhuan|\ ;
+將>jiang|\ ;
+尅>jiàng|\ ;
+専>zhuan|\ ;
+寵>chŏng|\ ;
+宺>huăng|\ ;
+宬>chéng|\ ;
+宆>qióng|\ ;
+孨>zhuăn|\ ;
+孈>shuai|\ ;
+孃>niáng|\ ;
+嬢>niáng|\ ;
+嬙>qiáng|\ ;
+嫥>zhuan|\ ;
+媓>huáng|\ ;
+媑>zhòng|\ ;
+娍>chéng|\ ;
+姯>guang|\ ;
+姠>shàng|\ ;
+姃>zheng|\ ;
+妕>zhòng|\ ;
+妐>zhong|\ ;
+奬>jiăng|\ ;
+奨>jiăng|\ ;
+夼>kuăng|\ ;
+壙>kuàng|\ ;
+壃>jiang|\ ;
+墴>huáng|\ ;
+墚>liáng|\ ;
+塼>zhuan|\ ;
+塲>cháng|\ ;
+塣>chĕng|\ ;
+塚>zhŏng|\ ;
+塖>chéng|\ ;
+塃>huang|\ ;
+塂>xiàng|\ ;
+堾>chuăn|\ ;
+堹>zhòng|\ ;
+場>chăng|\ ;
+堭>huáng|\ ;
+堩>chăng|\ ;
+堟>zhuàn|\ ;
+堘>chéng|\ ;
+埫>chŏng|\ ;
+埥>cheng|\ ;
+埛>jiong|\ ;
+垙>guang|\ ;
+坰>jiong|\ ;
+圱>chăng|\ ;
+囧>jiŏng|\ ;
+囀>zhuàn|\ ;
+嚮>xiàng|\ ;
+嚝>huang|\ ;
+嚐>cháng|\ ;
+嘪>chuài|\ ;
+嘗>cháng|\ ;
+嘃>chong|\ ;
+嗆>qiang|\ ;
+喨>liàng|\ ;
+喤>huáng|\ ;
+喠>zhŏng|\ ;
+啢>liăng|\ ;
+啌>xiang|\ ;
+唴>qiàng|\ ;
+唡>liăng|\ ;
+哴>liàng|\ ;
+咰>shuài|\ ;
+呏>sheng|\ ;
+厰>chăng|\ ;
+卭>qióng|\ ;
+卝>kuàng|\ ;
+卛>shuài|\ ;
+匞>jiàng|\ ;
+匔>qiong|\ ;
+勥>qiăng|\ ;
+勝>sheng|\ ;
+劻>kuang|\ ;
+剰>shèng|\ ;
+刣>zhong|\ ;
+凖>zhuĕn|\ ;
+冏>jiŏng|\ ;
+冋>jiong|\ ;
+冂>jiong|\ ;
+兩>liăng|\ ;
+兤>huáng|\ ;
+兏>cháng|\ ;
+兇>xiong|\ ;
+儣>kuàng|\ ;
+償>cháng|\ ;
+儝>qióng|\ ;
+僢>chuăn|\ ;
+僙>guang|\ ;
+僘>chăng|\ ;
+僒>jiŏng|\ ;
+僎>zhuàn|\ ;
+傽>zhang|\ ;
+傸>qiăng|\ ;
+傷>shang|\ ;
+傳>chuán|\ ;
+傓>chéng|\ ;
+偟>huáng|\ ;
+偗>shĕng|\ ;
+偅>zhòng|\ ;
+偁>cheng|\ ;
+倕>cháng|\ ;
+倄>liăng|\ ;
+倀>chang|\ ;
+俢>liăng|\ ;
+俇>guàng|\ ;
+侱>chĕng|\ ;
+侊>guang|\ ;
+佭>xiáng|\ ;
+伝>chuán|\ ;
+伀>zhong|\ ;
+仧>cháng|\ ;
+亯>xiăng|\ ;
+乗>chéng|\ ;
+乑>shèng|\ ;
+丬>qiáng|\ ;
+両>liăng|\ ;
+丄>shàng|\ ;
+䵃>kuàng|\ ;
+䵁>qiàng|\ ;
+䳯>chóng|\ ;
+䳨>huáng|\ ;
+䱰>zhòng|\ ;
+䱆>shéng|\ ;
+䯴>cháng|\ ;
+䮲>huáng|\ ;
+䮪>chéng|\ ;
+䭪>liáng|\ ;
+䬕>shăng|\ ;
+䫆>chéng|\ ;
+䪿>shĕng|\ ;
+䪄>huáng|\ ;
+䩫>liăng|\ ;
+䩨>chàng|\ ;
+䧺>xióng|\ ;
+䧠>shuàn|\ ;
+䧕>chéng|\ ;
+䦷>chuài|\ ;
+䦶>zhèng|\ ;
+䦤>chuài|\ ;
+䦟>chuài|\ ;
+䦛>zhèng|\ ;
+䥭>zhèng|\ ;
+䥌>zhèng|\ ;
+䣼>liáng|\ ;
+䢽>xiàng|\ ;
+䢦>shuài|\ ;
+䢛>jiŏng|\ ;
+䡱>zhuăn|\ ;
+䡕>zhĕng|\ ;
+䠻>qióng|\ ;
+䠆>cháng|\ ;
+䠃>liăng|\ ;
+䠀>chăng|\ ;
+䞹>huáng|\ ;
+䞪>jiàng|\ ;
+䞉>shèng|\ ;
+䝶>liáng|\ ;
+䜶>xiáng|\ ;
+䛫>zhèng|\ ;
+䛪>qióng|\ ;
+䚇>shĕng|\ ;
+䙹>jiăng|\ ;
+䗊>chéng|\ ;
+䗅>cháng|\ ;
+䖮>xiăng|\ ;
+䖝>chóng|\ ;
+䖆>niàng|\ ;
+䕋>chăng|\ ;
+䔲>chéng|\ ;
+䔗>xiáng|\ ;
+䓣>liăng|\ ;
+䓖>qióng|\ ;
+䒂>jiăng|\ ;
+䑟>huáng|\ ;
+䐵>huáng|\ ;
+䐠>huăng|\ ;
+䐟>xiàng|\ ;
+䐃>jiŏng|\ ;
+䎴>shèng|\ ;
+䍿>huáng|\ ;
+䌹>jiŏng|\ ;
+䌬>chóng|\ ;
+䌙>huăng|\ ;
+䋌>jiăng|\ ;
+䊯>kuàng|\ ;
+䊣>huáng|\ ;
+䊗>huáng|\ ;
+䊑>xiăng|\ ;
+䊄>qióng|\ ;
+䉵>zhuàn|\ ;
+䉃>jiăng|\ ;
+䈣>zhèng|\ ;
+䇸>chéng|\ ;
+䆸>chéng|\ ;
+䆵>chéng|\ ;
+䆳>qióng|\ ;
+䆑>chéng|\ ;
+䅣>huáng|\ ;
+䅚>qiăng|\ ;
+䅃>qióng|\ ;
+䄇>chéng|\ ;
+䂻>zhèng|\ ;
+䁰>jiăng|\ ;
+䁣>chuán|\ ;
+䁞>shĕng|\ ;
+䁜>huăng|\ ;
+䁎>chéng|\ ;
+䀕>chèng|\ ;
+㾮>huáng|\ ;
+㾪>shĕng|\ ;
+㾠>huáng|\ ;
+㽴>zhàng|\ ;
+㽀>zhèng|\ ;
+㼷>chuán|\ ;
+㼳>shĕng|\ ;
+㼩>chéng|\ ;
+㼇>qióng|\ ;
+㹐>chóng|\ ;
+㹁>liáng|\ ;
+㷡>jiŏng|\ ;
+㷗>jiŏng|\ ;
+㷀>qióng|\ ;
+㶈>liŏng|\ ;
+㲴>zhòng|\ ;
+㲂>chéng|\ ;
+㱛>chuăn|\ ;
+㱏>zhèng|\ ;
+㯍>jiăng|\ ;
+㯌>chuán|\ ;
+㮪>qióng|\ ;
+㬻>huăng|\ ;
+㫤>chăng|\ ;
+㫛>guàng|\ ;
+㪜>chuăi|\ ;
+㪓>chuái|\ ;
+㩖>qiáng|\ ;
+㨪>huàng|\ ;
+㨃>chéng|\ ;
+㧭>qióng|\ ;
+㧤>chòng|\ ;
+㦂>cháng|\ ;
+㤺>huăng|\ ;
+㤯>jiŏng|\ ;
+㤮>kuáng|\ ;
+㣫>zhŏng|\ ;
+㢡>jiăng|\ ;
+㢠>jiŏng|\ ;
+㡧>zhèng|\ ;
+㡠>zhèng|\ ;
+㟟>xiàng|\ ;
+㟄>xiáng|\ ;
+㞼>chéng|\ ;
+㞷>huáng|\ ;
+㛨>qiăng|\ ;
+㙣>zhàng|\ ;
+㙊>cháng|\ ;
+㗽>xiăng|\ ;
+㗂>shĕng|\ ;
+㖥>jiŏng|\ ;
+㕩>zhàng|\ ;
+㔝>liăng|\ ;
+㓽>chóng|\ ;
+㓏>jiŏng|\ ;
+㒳>liăng|\ ;
+㒌>qióng|\ ;
+㑋>jiòng|\ ;
+㐼>chèng|\ ;
+㐺>zhòng|\ ;
+𢘸>jiàng|\ ;
+𢥞>chong|\ ;
+说>shuì|\ ;
+年>nián|\ ;
+着>zháo|\ ;
+小>xiăo|\ ;
+天>tian|\ ;
+能>néng|\ ;
+还>huán|\ ;
+当>dang|\ ;
+手>shŏu|\ ;
+用>yòng|\ ;
+行>háng|\ ;
+方>fang|\ ;
+前>qián|\ ;
+见>jiàn|\ ;
+经>jing|\ ;
+面>miàn|\ ;
+公>gong|\ ;
+同>tóng|\ ;
+从>cóng|\ ;
+动>dòng|\ ;
+样>yáng|\ ;
+现>xiàn|\ ;
+身>shen|\ ;
+点>diăn|\ ;
+明>míng|\ ;
+全>quán|\ ;
+工>gong|\ ;
+情>qíng|\ ;
+名>míng|\ ;
+定>dìng|\ ;
+女>nu\:̆|\ ;
+等>dĕng|\ ;
+间>jian|\ ;
+便>biàn|\ ;
+电>diàn|\ ;
+东>dong|\ ;
+教>jiao|\ ;
+平>píng|\ ;
+真>zhen|\ ;
+听>ting|\ ;
+少>shăo|\ ;
+关>guan|\ ;
+并>bìng|\ ;
+产>chăn|\ ;
+先>xian|\ ;
+山>shan|\ ;
+水>shuĭ|\ ;
+总>zŏng|\ ;
+书>qián|\ ;
+员>yuán|\ ;
+笑>xiào|\ ;
+性>xìng|\ ;
+通>tong|\ ;
+命>mìng|\ ;
+神>shén|\ ;
+件>jiàn|\ ;
+表>biăo|\ ;
+原>yuán|\ ;
+应>yìng|\ ;
+叫>jiào|\ ;
+更>geng|\ ;
+放>fàng|\ ;
+受>shòu|\ ;
+王>wáng|\ ;
+京>jing|\ ;
+清>qing|\ ;
+边>bian|\ ;
+共>gòng|\ ;
+风>feng|\ ;
+望>wàng|\ ;
+建>jiàn|\ ;
+统>tŏng|\ ;
+请>qing|\ ;
+交>jiao|\ ;
+让>ràng|\ ;
+算>suàn|\ ;
+元>yuán|\ ;
+功>gong|\ ;
+青>qing|\ ;
+管>guăn|\ ;
+连>lián|\ ;
+远>yuăn|\ ;
+快>kuài|\ ;
+院>yuàn|\ ;
+变>biàn|\ ;
+联>lián|\ ;
+权>quán|\ ;
+往>wăng|\ ;
+展>zhăn|\ ;
+领>lĭng|\ ;
+红>gong|\ ;
+周>zhou|\ ;
+深>shen|\ ;
+空>kong|\ ;
+甚>shèn|\ ;
+轻>qing|\ ;
+英>ying|\ ;
+写>guàn|\ ;
+令>lìng|\ ;
+收>shou|\ ;
+脸>liăn|\ ;
+钱>qián|\ ;
+党>dăng|\ ;
+千>qian|\ ;
+片>pian|\ ;
+容>róng|\ ;
+找>zhăo|\ ;
+站>zhàn|\ ;
+形>xíng|\ ;
+房>fáng|\ ;
+首>shŏu|\ ;
+影>yĭng|\ ;
+网>wăng|\ ;
+兵>bing|\ ;
+谁>shuí|\ ;
+校>jiào|\ ;
+观>guan|\ ;
+编>bian|\ ;
+剑>jiàn|\ ;
+调>diào|\ ;
+曾>céng|\ ;
+准>zhŭn|\ ;
+团>tuán|\ ;
+段>duàn|\ ;
+精>jing|\ ;
+官>guan|\ ;
+竟>jìng|\ ;
+照>zhào|\ ;
+招>zhao|\ ;
+兴>xing|\ ;
+阳>yáng|\ ;
+惊>jing|\ ;
+选>xuăn|\ ;
+欢>huan|\ ;
+另>lìng|\ ;
+港>găng|\ ;
+星>xing|\ ;
+断>duàn|\ ;
+陈>chén|\ ;
+农>nóng|\ ;
+念>niàn|\ ;
+刚>gang|\ ;
+显>xiăn|\ ;
+消>xiao|\ ;
+送>sòng|\ ;
+紧>chou|\ ;
+帮>bang|\ ;
+线>xiàn|\ ;
+愿>yuàn|\ ;
+增>zeng|\ ;
+杨>yáng|\ ;
+料>liào|\ ;
+州>zhou|\ ;
+著>zhao|\ ;
+严>bàng|\ ;
+仍>réng|\ ;
+脚>jiăo|\ ;
+标>biao|\ ;
+病>bìng|\ ;
+境>jìng|\ ;
+软>ruăn|\ ;
+朝>cháo|\ ;
+护>beng|\ ;
+朋>péng|\ ;
+供>gong|\ ;
+乱>luàn|\ ;
+爷>xiào|\ ;
+龙>lóng|\ ;
+春>chun|\ ;
+忙>máng|\ ;
+痛>tòng|\ ;
+沉>chén|\ ;
+灵>líng|\ ;
+停>tíng|\ ;
+块>kuài|\ ;
+冷>lĕng|\ ;
+怪>guài|\ ;
+静>jìng|\ ;
+旁>páng|\ ;
+园>yuán|\ ;
+登>deng|\ ;
+较>jiào|\ ;
+宣>xuan|\ ;
+堂>táng|\ ;
+央>yang|\ ;
+怀>huái|\ ;
+营>yíng|\ ;
+姓>xìng|\ ;
+养>yăng|\ ;
+景>jĭng|\ ;
+维>bĕng|\ ;
+渐>chán|\ ;
+藏>cáng|\ ;
+摘>zhai|\ ;
+角>jiăo|\ ;
+瞧>qiáo|\ ;
+层>céng|\ ;
+馆>guăn|\ ;
+律>lu\:̀|\ ;
+田>tián|\ ;
+简>jiăn|\ ;
+免>miăn|\ ;
+型>xíng|\ ;
+换>huàn|\ ;
+洋>yáng|\ ;
+睡>shuì|\ ;
+康>kang|\ ;
+评>píng|\ ;
+追>zhui|\ ;
+店>diàn|\ ;
+环>huán|\ ;
+超>chao|\ ;
+占>zhan|\ ;
+永>yŏng|\ ;
+源>yuán|\ ;
+亿>shén|\ ;
+险>xiăn|\ ;
+钟>gàng|\ ;
+访>făng|\ ;
+伸>shen|\ ;
+限>xiàn|\ ;
+跳>tiào|\ ;
+练>liàn|\ ;
+幸>xìng|\ ;
+效>xiào|\ ;
+封>feng|\ ;
+攻>gong|\ ;
+顶>dĭng|\ ;
+宁>níng|\ ;
+防>fáng|\ ;
+抓>zhua|\ ;
+顺>shùn|\ ;
+警>jĭng|\ ;
+梦>mèng|\ ;
+善>shàn|\ ;
+蒙>meng|\ ;
+票>piào|\ ;
+坚>jian|\ ;
+端>duan|\ ;
+率>lu\:̀|\ ;
+掉>diào|\ ;
+授>shòu|\ ;
+守>shŏu|\ ;
+积>chèn|\ ;
+县>xiàn|\ ;
+庭>tíng|\ ;
+忘>wàng|\ ;
+洲>zhou|\ ;
+松>song|\ ;
+坏>huài|\ ;
+邓>dèng|\ ;
+鲜>xian|\ ;
+短>duăn|\ ;
+略>lu\:è|\ ;
+抗>kàng|\ ;
+睛>jing|\ ;
+纷>băng|\ ;
+销>xiao|\ ;
+宗>zong|\ ;
+赵>zhào|\ ;
+灯>deng|\ ;
+峰>feng|\ ;
+款>kuăn|\ ;
+洪>hóng|\ ;
+订>dìng|\ ;
+镇>zhèn|\ ;
+旅>lu\:̆|\ ;
+靖>jìng|\ ;
+申>shen|\ ;
+迎>yíng|\ ;
+丁>ding|\ ;
+审>shĕn|\ ;
+遍>biàn|\ ;
+桌>zhuo|\ ;
+晓>xiăo|\ ;
+弄>lòng|\ ;
+亡>wáng|\ ;
+桥>qiáo|\ ;
+闪>shăn|\ ;
+劲>jìng|\ ;
+恐>kŏng|\ ;
+敬>jìng|\ ;
+监>jian|\ ;
+厅>ting|\ ;
+震>zhèn|\ ;
+冰>bing|\ ;
+醒>xĭng|\ ;
+庆>qìng|\ ;
+硬>yìng|\ ;
+售>shòu|\ ;
+童>tóng|\ ;
+缓>huăn|\ ;
+烧>shao|\ ;
+控>kòng|\ ;
+篇>pian|\ ;
+洞>dòng|\ ;
+荣>róng|\ ;
+懂>dŏng|\ ;
+拥>yŏng|\ ;
+献>xiàn|\ ;
+横>héng|\ ;
+健>jiàn|\ ;
+签>qian|\ ;
+蓉>róng|\ ;
+潮>cháo|\ ;
+圆>yuán|\ ;
+卷>juăn|\ ;
+妙>miào|\ ;
+浪>làng|\ ;
+抽>chou|\ ;
+偏>pian|\ ;
+纵>sŏng|\ ;
+航>háng|\ ;
+拳>quán|\ ;
+唐>táng|\ ;
+检>jiăn|\ ;
+宫>gong|\ ;
+袁>yuán|\ ;
+灭>lìng|\ ;
+召>shào|\ ;
+猛>mĕng|\ ;
+宽>kuan|\ ;
+绍>jìng|\ ;
+典>diăn|\ ;
+圈>juan|\ ;
+丰>feng|\ ;
+挑>tiao|\ ;
+肩>jian|\ ;
+减>jiăn|\ ;
+针>zhen|\ ;
+竞>jìng|\ ;
+挺>tĭng|\ ;
+宋>sòng|\ ;
+钢>gang|\ ;
+悄>qiăo|\ ;
+乔>qiáo|\ ;
+仇>chóu|\ ;
+吹>chui|\ ;
+融>róng|\ ;
+净>jìng|\ ;
+仙>xian|\ ;
+巧>qiăo|\ ;
+零>líng|\ ;
+荡>dàng|\ ;
+珍>zhen|\ ;
+勇>yŏng|\ ;
+税>shuì|\ ;
+僧>seng|\ ;
+锋>feng|\ ;
+惯>guàn|\ ;
+凭>píng|\ ;
+冠>guan|\ ;
+碰>pèng|\ ;
+倾>qing|\ ;
+尖>jian|\ ;
+仿>făng|\ ;
+飘>piao|\ ;
+晨>chén|\ ;
+纯>chún|\ ;
+缘>yuán|\ ;
+冬>dong|\ ;
+郎>láng|\ ;
+闲>xián|\ ;
+镜>jìng|\ ;
+羊>yáng|\ ;
+驻>xiao|\ ;
+萍>píng|\ ;
+刑>xíng|\ ;
+凤>fèng|\ ;
+孔>kŏng|\ ;
+触>hóng|\ ;
+恋>liàn|\ ;
+隆>long|\ ;
+萧>xiao|\ ;
+怨>yuàn|\ ;
+龄>líng|\ ;
+仰>yăng|\ ;
+映>yìng|\ ;
+腾>téng|\ ;
+稍>shao|\ ;
+岗>găng|\ ;
+挡>dăng|\ ;
+奉>fèng|\ ;
+朗>lăng|\ ;
+兼>jian|\ ;
+劝>quàn|\ ;
+盈>yíng|\ ;
+陷>xiàn|\ ;
+鸣>míng|\ ;
+倘>tăng|\ ;
+振>zhèn|\ ;
+丧>sang|\ ;
+焦>jiao|\ ;
+凌>líng|\ ;
+骗>piàn|\ ;
+疗>liáo|\ ;
+尘>chén|\ ;
+躺>tăng|\ ;
+彪>biao|\ ;
+井>jĭng|\ ;
+汪>wang|\ ;
+漂>piao|\ ;
+聊>liáo|\ ;
+凝>níng|\ ;
+彭>péng|\ ;
+匆>cong|\ ;
+描>miáo|\ ;
+愁>chóu|\ ;
+涌>yŏng|\ ;
+玄>xuán|\ ;
+轰>hong|\ ;
+奸>jian|\ ;
+怜>lián|\ ;
+鸟>niăo|\ ;
+邦>bang|\ ;
+聪>cong|\ ;
+辩>biàn|\ ;
+瓶>píng|\ ;
+沈>chén|\ ;
+枫>feng|\ ;
+臣>chén|\ ;
+援>yuán|\ ;
+酸>suan|\ ;
+盟>méng|\ ;
+胖>pàng|\ ;
+哼>heng|\ ;
+瘦>shòu|\ ;
+箭>jiàn|\ ;
+潜>qián|\ ;
+鸿>hóng|\ ;
+绩>chao|\ ;
+亭>tíng|\ ;
+狼>láng|\ ;
+舰>jiàn|\ ;
+牵>qian|\ ;
+疯>feng|\ ;
+颤>zhàn|\ ;
+衫>shan|\ ;
+艰>jian|\ ;
+苍>cang|\ ;
+旋>xuán|\ ;
+桑>sang|\ ;
+莲>lián|\ ;
+钻>zuan|\ ;
+宏>hóng|\ ;
+幻>huàn|\ ;
+辽>liáo|\ ;
+患>huàn|\ ;
+衡>héng|\ ;
+丑>chŏu|\ ;
+暖>nuăn|\ ;
+浓>nóng|\ ;
+键>jiàn|\ ;
+臭>chòu|\ ;
+芳>fang|\ ;
+垂>chuí|\ ;
+捉>zhuo|\ ;
+恭>gong|\ ;
+泉>quán|\ ;
+览>jiào|\ ;
+脏>zang|\ ;
+疼>téng|\ ;
+铜>tóng|\ ;
+档>dăng|\ ;
+苗>miáo|\ ;
+柄>bĭng|\ ;
+舟>zhou|\ ;
+禅>shàn|\ ;
+敲>qiao|\ ;
+筹>chóu|\ ;
+浅>qiăn|\ ;
+柴>chái|\ ;
+雕>diao|\ ;
+寿>shòu|\ ;
+董>dŏng|\ ;
+鉴>jiàn|\ ;
+刷>shua|\ ;
+捐>juan|\ ;
+贯>guàn|\ ;
+殿>diàn|\ ;
+迁>qian|\ ;
+鞭>bian|\ ;
+茫>máng|\ ;
+逢>féng|\ ;
+圳>zhèn|\ ;
+踪>chuò|\ ;
+丛>cóng|\ ;
+吵>chăo|\ ;
+贡>gòng|\ ;
+赢>gòng|\ ;
+棒>bàng|\ ;
+恒>héng|\ ;
+贤>xián|\ ;
+拆>chai|\ ;
+缠>chán|\ ;
+缝>féng|\ ;
+肖>xiào|\ ;
+炼>liàn|\ ;
+宪>xiàn|\ ;
+庙>miào|\ ;
+冯>féng|\ ;
+唤>huàn|\ ;
+甜>tián|\ ;
+庸>yong|\ ;
+鹏>péng|\ ;
+玲>líng|\ ;
+综>zòng|\ ;
+嫌>xián|\ ;
+削>xiao|\ ;
+扔>reng|\ ;
+悬>xuán|\ ;
+廷>tíng|\ ;
+笼>lóng|\ ;
+颠>dian|\ ;
+扇>shan|\ ;
+唇>chún|\ ;
+捧>pĕng|\ ;
+冤>yuan|\ ;
+皱>zhòu|\ ;
+遣>qiăn|\ ;
+翁>weng|\ ;
+镖>biao|\ ;
+屏>bĭng|\ ;
+棉>mián|\ ;
+孟>mèng|\ ;
+葬>zàng|\ ;
+添>tian|\ ;
+兆>zhào|\ ;
+欠>qiàn|\ ;
+钓>diào|\ ;
+吊>diào|\ ;
+填>tián|\ ;
+抄>chao|\ ;
+瞪>dèng|\ ;
+剪>jiăn|\ ;
+债>zhài|\ ;
+晶>jing|\ ;
+卓>zhuó|\ ;
+糖>táng|\ ;
+绵>mián|\ ;
+妨>fáng|\ ;
+珊>shan|\ ;
+嚷>răng|\ ;
+盲>máng|\ ;
+辨>biàn|\ ;
+泳>yŏng|\ ;
+宅>zhái|\ ;
+膀>băng|\ ;
+颈>gĕng|\ ;
+践>jiàn|\ ;
+轿>jiào|\ ;
+娇>jiao|\ ;
+潇>xiao|\ ;
+颂>róng|\ ;
+杭>háng|\ ;
+瞬>shùn|\ ;
+乖>guai|\ ;
+炒>chăo|\ ;
+饼>bĭng|\ ;
+钉>ding|\ ;
+赠>zèng|\ ;
+哄>hong|\ ;
+铃>líng|\ ;
+鹰>ying|\ ;
+歉>qiàn|\ ;
+盯>ding|\ ;
+兽>shòu|\ ;
+罩>zhào|\ ;
+嵩>song|\ ;
+陵>líng|\ ;
+蜂>feng|\ ;
+廉>lián|\ ;
+骄>jiao|\ ;
+辰>chén|\ ;
+坑>keng|\ ;
+眠>mián|\ ;
+孝>xiào|\ ;
+虹>hóng|\ ;
+勉>miăn|\ ;
+慎>shèn|\ ;
+斩>zhăn|\ ;
+掠>lu\:è|\ ;
+郊>jiao|\ ;
+鼎>dĭng|\ ;
+冻>dòng|\ ;
+桐>tóng|\ ;
+艇>tĭng|\ ;
+谦>qian|\ ;
+岭>líng|\ ;
+桶>tŏng|\ ;
+嗓>săng|\ ;
+帘>lián|\ ;
+仓>cang|\ ;
+拐>guăi|\ ;
+绑>băng|\ ;
+荐>jiàn|\ ;
+廊>láng|\ ;
+诊>zhĕn|\ ;
+棚>péng|\ ;
+掀>xian|\ ;
+筒>tŏng|\ ;
+秒>miăo|\ ;
+沾>zhan|\ ;
+庞>páng|\ ;
+券>quàn|\ ;
+趟>tàng|\ ;
+灌>guàn|\ ;
+妄>wàng|\ ;
+宙>zhòu|\ ;
+罐>guàn|\ ;
+趁>chèn|\ ;
+婴>ying|\ ;
+躬>gong|\ ;
+叮>ding|\ ;
+晴>qíng|\ ;
+淮>huái|\ ;
+旺>wàng|\ ;
+窜>cuàn|\ ;
+寨>zhài|\ ;
+昭>zhao|\ ;
+囊>náng|\ ;
+蓬>péng|\ ;
+贱>jiàn|\ ;
+嘲>cháo|\ ;
+傍>bang|\ ;
+纲>gang|\ ;
+耕>geng|\ ;
+舱>cang|\ ;
+砰>peng|\ ;
+塘>táng|\ ;
+纤>xian|\ ;
+链>liàn|\ ;
+拱>gŏng|\ ;
+铭>míng|\ ;
+淳>chún|\ ;
+榜>băng|\ ;
+羡>xiàn|\ ;
+卿>qing|\ ;
+喧>xuan|\ ;
+履>lu\:̆|\ ;
+枉>wăng|\ ;
+衬>chèn|\ ;
+凳>dèng|\ ;
+缅>miăn|\ ;
+弦>xián|\ ;
+倦>juàn|\ ;
+酬>chóu|\ ;
+咒>zhòu|\ ;
+崩>beng|\ ;
+顷>qĭng|\ ;
+侦>zhen|\ ;
+陕>shăn|\ ;
+耸>sŏng|\ ;
+窄>zhăi|\ ;
+痒>yăng|\ ;
+沧>cang|\ ;
+贞>zhen|\ ;
+蠢>chŭn|\ ;
+逍>xiao|\ ;
+僚>liáo|\ ;
+雀>qiao|\ ;
+耍>shuă|\ ;
+枕>zhĕn|\ ;
+捡>jiăn|\ ;
+朦>méng|\ ;
+筷>kuài|\ ;
+缸>gang|\ ;
+弓>gong|\ ;
+爪>zhuă|\ ;
+芒>máng|\ ;
+缴>jiăo|\ ;
+哨>shào|\ ;
+颖>yĭng|\ ;
+淀>diàn|\ ;
+嚼>jiáo|\ ;
+骤>zhòu|\ ;
+苹>píng|\ ;
+晒>shài|\ ;
+拢>lŏng|\ ;
+胧>lóng|\ ;
+胶>jiao|\ ;
+乒>ping|\ ;
+讽>feng|\ ;
+戳>chuo|\ ;
+拣>jiăn|\ ;
+耿>gĕng|\ ;
+廿>niàn|\ ;
+棺>guan|\ ;
+坠>zhuì|\ ;
+冈>gang|\ ;
+莹>yíng|\ ;
+衔>xián|\ ;
+甸>diàn|\ ;
+贬>biăn|\ ;
+愣>lèng|\ ;
+搅>jiăo|\ ;
+炕>kàng|\ ;
+腥>xing|\ ;
+藤>téng|\ ;
+歼>jian|\ ;
+莽>măng|\ ;
+烫>tàng|\ ;
+钞>chao|\ ;
+坊>fang|\ ;
+箫>xiao|\ ;
+嗡>weng|\ ;
+溅>jiàn|\ ;
+栋>dòng|\ ;
+禀>bĭng|\ ;
+烁>shuò|\ ;
+厮>qian|\ ;
+粘>nián|\ ;
+朔>shuò|\ ;
+咸>xián|\ ;
+纺>făng|\ ;
+虐>nu\:è|\ ;
+锤>chuí|\ ;
+娴>xián|\ ;
+犬>quăn|\ ;
+冥>míng|\ ;
+盏>zhăn|\ ;
+焕>huàn|\ ;
+弘>hóng|\ ;
+擅>shàn|\ ;
+觅>chan|\ ;
+氓>máng|\ ;
+怦>peng|\ ;
+詹>zhan|\ ;
+扁>pian|\ ;
+慷>kang|\ ;
+篷>péng|\ ;
+绸>chóu|\ ;
+寥>liáo|\ ;
+垫>diàn|\ ;
+乓>pang|\ ;
+膛>táng|\ ;
+闵>kang|\ ;
+琢>zhuó|\ ;
+阮>ruăn|\ ;
+俏>qiào|\ ;
+楞>léng|\ ;
+拙>zhuo|\ ;
+奠>diàn|\ ;
+肘>zhŏu|\ ;
+膨>péng|\ ;
+壤>răng|\ ;
+渗>shèn|\ ;
+轩>xuan|\ ;
+苑>yuàn|\ ;
+巩>gŏng|\ ;
+粥>zhou|\ ;
+斋>zhai|\ ;
+斟>zhen|\ ;
+梢>shao|\ ;
+铅>qian|\ ;
+绒>róng|\ ;
+锻>duàn|\ ;
+谴>qiăn|\ ;
+沅>yuán|\ ;
+宵>xiao|\ ;
+珑>lóng|\ ;
+咚>dong|\ ;
+亨>heng|\ ;
+淌>tăng|\ ;
+扛>gang|\ ;
+彤>tóng|\ ;
+氧>yăng|\ ;
+琐>bĭng|\ ;
+狡>jiăo|\ ;
+婷>tíng|\ ;
+渺>miăo|\ ;
+嵌>qiàn|\ ;
+鞘>qiào|\ ;
+吭>háng|\ ;
+绰>chuò|\ ;
+绞>jiăo|\ ;
+轴>zhóu|\ ;
+邵>shào|\ ;
+憎>zeng|\ ;
+窍>qiào|\ ;
+坪>píng|\ ;
+瘫>shèn|\ ;
+佣>yong|\ ;
+卵>luăn|\ ;
+琅>láng|\ ;
+昼>zhòu|\ ;
+兢>jing|\ ;
+煎>jian|\ ;
+瞅>chŏu|\ ;
+熔>róng|\ ;
+绅>shen|\ ;
+蹦>bèng|\ ;
+聋>lóng|\ ;
+煽>shan|\ ;
+呻>shen|\ ;
+翘>qiáo|\ ;
+杏>xìng|\ ;
+虔>qián|\ ;
+拧>níng|\ ;
+烘>hong|\ ;
+删>shan|\ ;
+霄>xiao|\ ;
+眷>juàn|\ ;
+阐>chăn|\ ;
+讼>sòng|\ ;
+崭>zhăn|\ ;
+伶>líng|\ ;
+巢>cháo|\ ;
+啷>lang|\ ;
+俭>jiăn|\ ;
+溶>róng|\ ;
+湛>zhàn|\ ;
+翩>pian|\ ;
+嚣>xiao|\ ;
+琛>chen|\ ;
+浊>zhuó|\ ;
+杠>gang|\ ;
+瞄>miáo|\ ;
+撩>liao|\ ;
+猿>yuán|\ ;
+挠>dàng|\ ;
+灼>zhuó|\ ;
+钰>jiăn|\ ;
+椒>jiao|\ ;
+廖>liào|\ ;
+甭>béng|\ ;
+迢>tiáo|\ ;
+攘>răng|\ ;
+缎>duàn|\ ;
+矫>jiăo|\ ;
+瑛>ying|\ ;
+猩>xing|\ ;
+咙>lóng|\ ;
+嗔>chen|\ ;
+踌>chóu|\ ;
+绷>beng|\ ;
+缀>chuò|\ ;
+婶>shĕn|\ ;
+蹬>dèng|\ ;
+勺>sháo|\ ;
+瞻>zhan|\ ;
+踊>yŏng|\ ;
+眩>xuàn|\ ;
+迸>bèng|\ ;
+丙>bĭng|\ ;
+饺>jiăo|\ ;
+铲>chăn|\ ;
+敛>liàn|\ ;
+捅>tŏng|\ ;
+滕>téng|\ ;
+眺>tiào|\ ;
+棕>zong|\ ;
+绢>juàn|\ ;
+娟>juan|\ ;
+萌>méng|\ ;
+哽>gĕng|\ ;
+烹>peng|\ ;
+炊>chui|\ ;
+剿>chao|\ ;
+炫>xuàn|\ ;
+锥>zhui|\ ;
+锈>jiàn|\ ;
+刁>diao|\ ;
+亢>kàng|\ ;
+冕>miăn|\ ;
+瀛>yíng|\ ;
+庚>geng|\ ;
+峭>qiào|\ ;
+磅>bàng|\ ;
+雍>yong|\ ;
+倩>qiàn|\ ;
+蒜>suàn|\ ;
+炳>bĭng|\ ;
+惘>wăng|\ ;
+赃>zang|\ ;
+槐>huái|\ ;
+婊>biăo|\ ;
+辗>zhăn|\ ;
+秉>bĭng|\ ;
+侥>jiăo|\ ;
+馅>xiàn|\ ;
+袅>niăo|\ ;
+彷>făng|\ ;
+臻>zhen|\ ;
+樱>ying|\ ;
+忏>chàn|\ ;
+窖>jiào|\ ;
+碾>niăn|\ ;
+馋>chán|\ ;
+漾>yàng|\ ;
+秧>yang|\ ;
+讪>shàn|\ ;
+醇>chún|\ ;
+憔>qiáo|\ ;
+硝>xiao|\ ;
+蹭>céng|\ ;
+龚>gong|\ ;
+狞>hăng|\ ;
+缭>liáo|\ ;
+搀>chan|\ ;
+祯>zhen|\ ;
+舜>shùn|\ ;
+邢>xíng|\ ;
+槛>jiàn|\ ;
+畴>chóu|\ ;
+舔>tiăn|\ ;
+惺>xing|\ ;
+瞟>piăo|\ ;
+蝉>chán|\ ;
+毡>zhan|\ ;
+抨>peng|\ ;
+惴>zhuì|\ ;
+擎>qíng|\ ;
+蕉>jiao|\ ;
+泓>hóng|\ ;
+捎>shao|\ ;
+澎>péng|\ ;
+捶>chuí|\ ;
+滇>dian|\ ;
+肾>shèn|\ ;
+鸳>yuan|\ ;
+戎>róng|\ ;
+锭>dìng|\ ;
+攥>zuàn|\ ;
+拈>nián|\ ;
+柬>jiăn|\ ;
+痪>huàn|\ ;
+恙>yàng|\ ;
+貂>diao|\ ;
+茸>róng|\ ;
+垣>yuán|\ ;
+棱>léng|\ ;
+聆>líng|\ ;
+癫>dian|\ ;
+梗>gĕng|\ ;
+惆>chóu|\ ;
+肇>zhào|\ ;
+菱>líng|\ ;
+礁>jiao|\ ;
+帚>zhŏu|\ ;
+撵>niăn|\ ;
+殃>yang|\ ;
+恬>tián|\ ;
+涟>lián|\ ;
+镑>bàng|\ ;
+鸯>yang|\ ;
+嫖>piáo|\ ;
+舷>xián|\ ;
+桓>huán|\ ;
+椎>chuí|\ ;
+镣>liáo|\ ;
+酌>zhuó|\ ;
+荧>yíng|\ ;
+羹>geng|\ ;
+蘸>zhàn|\ ;
+惦>diàn|\ ;
+沥>feng|\ ;
+谤>bàng|\ ;
+筛>shai|\ ;
+撂>liào|\ ;
+膺>ying|\ ;
+憬>jĭng|\ ;
+钳>qián|\ ;
+篡>cuàn|\ ;
+痊>quán|\ ;
+阱>jĭng|\ ;
+悚>sŏng|\ ;
+跷>qiao|\ ;
+姗>shan|\ ;
+钗>chai|\ ;
+棠>táng|\ ;
+吮>shŭn|\ ;
+渲>xuàn|\ ;
+匾>biăn|\ ;
+玮>dian|\ ;
+囔>nang|\ ;
+藐>miăo|\ ;
+巅>dian|\ ;
+凋>diao|\ ;
+跤>jiao|\ ;
+辄>niăn|\ ;
+懵>mĕng|\ ;
+鲸>jing|\ ;
+笺>jian|\ ;
+汀>ting|\ ;
+膳>shàn|\ ;
+粽>zòng|\ ;
+酵>jiào|\ ;
+蜷>quán|\ ;
+稠>chóu|\ ;
+跚>shan|\ ;
+沼>zhăo|\ ;
+碱>jiăn|\ ;
+镰>lián|\ ;
+悻>xìng|\ ;
+腆>tiăn|\ ;
+涎>xián|\ ;
+瓢>piáo|\ ;
+窿>lóng|\ ;
+莞>guan|\ ;
+荃>quán|\ ;
+掂>dian|\ ;
+萦>yíng|\ ;
+叼>diao|\ ;
+甬>yŏng|\ ;
+莺>ying|\ ;
+樵>qiáo|\ ;
+赓>geng|\ ;
+枭>xiao|\ ;
+僮>tóng|\ ;
+赘>zhuì|\ ;
+椿>chun|\ ;
+钊>liăo|\ ;
+涧>jiàn|\ ;
+腺>xiàn|\ ;
+烨>ting|\ ;
+氢>qing|\ ;
+汕>shàn|\ ;
+蝙>bian|\ ;
+哮>xiao|\ ;
+峒>tóng|\ ;
+脓>nóng|\ ;
+崆>kong|\ ;
+谏>jiàn|\ ;
+捋>lu\:̆|\ ;
+佯>yáng|\ ;
+宦>huàn|\ ;
+璇>xuán|\ ;
+潺>chán|\ ;
+俑>yŏng|\ ;
+忱>chén|\ ;
+腼>miăn|\ ;
+萤>yíng|\ ;
+瓮>wèng|\ ;
+栈>zhàn|\ ;
+虻>méng|\ ;
+蚌>bàng|\ ;
+捻>niăn|\ ;
+佼>jiăo|\ ;
+谆>zhun|\ ;
+哝>nóng|\ ;
+韶>sháo|\ ;
+蚣>gong|\ ;
+暄>xuan|\ ;
+螃>páng|\ ;
+寰>huán|\ ;
+朕>zhèn|\ ;
+搪>táng|\ ;
+峦>luán|\ ;
+骁>xiao|\ ;
+茗>míng|\ ;
+蟾>chán|\ ;
+镯>zhuó|\ ;
+鬟>huán|\ ;
+罂>ying|\ ;
+泞>nìng|\ ;
+陇>lŏng|\ ;
+霆>tíng|\ ;
+焘>chóu|\ ;
+缈>miăo|\ ;
+撬>qiào|\ ;
+啄>zhuó|\ ;
+蹿>cuan|\ ;
+铿>keng|\ ;
+缥>piăo|\ ;
+侬>nóng|\ ;
+冗>rŏng|\ ;
+榕>róng|\ ;
+闰>jiàn|\ ;
+肪>fáng|\ ;
+甄>zhen|\ ;
+糠>kang|\ ;
+啜>chuò|\ ;
+梆>bang|\ ;
+翎>líng|\ ;
+踝>huái|\ ;
+裆>dang|\ ;
+玷>diàn|\ ;
+氯>lu\:̀|\ ;
+燎>liáo|\ ;
+蟒>măng|\ ;
+辕>yuán|\ ;
+鹃>juan|\ ;
+铛>dang|\ ;
+迳>jìng|\ ;
+茎>jing|\ ;
+埂>gĕng|\ ;
+嘭>peng|\ ;
+恸>juàn|\ ;
+瞳>tóng|\ ;
+鹪>jiao|\ ;
+膻>shan|\ ;
+怂>sŏng|\ ;
+瞑>míng|\ ;
+赈>zhèn|\ ;
+诠>quán|\ ;
+恿>yŏng|\ ;
+烽>feng|\ ;
+蒯>kuăi|\ ;
+缨>ying|\ ;
+舫>făng|\ ;
+莘>shen|\ ;
+掸>chán|\ ;
+嘤>ying|\ ;
+蜕>shuì|\ ;
+蛟>jiao|\ ;
+桢>zhen|\ ;
+涓>juan|\ ;
+佃>diàn|\ ;
+囱>cong|\ ;
+鳝>shàn|\ ;
+黏>nián|\ ;
+佟>tóng|\ ;
+缄>jian|\ ;
+隽>juàn|\ ;
+漩>xuán|\ ;
+狩>shòu|\ ;
+茜>qiàn|\ ;
+黔>qián|\ ;
+槌>chuí|\ ;
+斫>zhuó|\ ;
+纫>quán|\ ;
+炀>yáng|\ ;
+辍>chuò|\ ;
+咛>níng|\ ;
+椭>shen|\ ;
+怏>yàng|\ ;
+胄>zhòu|\ ;
+剽>piao|\ ;
+蜓>tíng|\ ;
+皎>jiăo|\ ;
+琏>lián|\ ;
+嘹>liáo|\ ;
+痉>jìng|\ ;
+搡>săng|\ ;
+孪>luán|\ ;
+挛>luán|\ ;
+旌>jing|\ ;
+羚>líng|\ ;
+浜>bang|\ ;
+泱>yang|\ ;
+泾>jing|\ ;
+蜻>qing|\ ;
+嵘>róng|\ ;
+倌>guan|\ ;
+螂>láng|\ ;
+苓>líng|\ ;
+蔫>nian|\ ;
+膂>lu\:̆|\ ;
+汴>biàn|\ ;
+摒>bìng|\ ;
+恫>dòng|\ ;
+绌>zhuó|\ ;
+踮>diăn|\ ;
+媛>yuán|\ ;
+豺>chái|\ ;
+箴>zhen|\ ;
+俸>fèng|\ ;
+罔>wăng|\ ;
+湍>tuan|\ ;
+仃>ding|\ ;
+纶>guan|\ ;
+鹦>ying|\ ;
+脍>kuài|\ ;
+胫>jìng|\ ;
+硷>jiăn|\ ;
+绉>zhòu|\ ;
+涣>huàn|\ ;
+闳>hóng|\ ;
+臃>yong|\ ;
+寮>liáo|\ ;
+缮>shàn|\ ;
+颧>quán|\ ;
+碉>diao|\ ;
+泵>bèng|\ ;
+赡>shàn|\ ;
+宕>dàng|\ ;
+沔>miăn|\ ;
+堑>qiàn|\ ;
+罡>gang|\ ;
+芍>sháo|\ ;
+魇>chuí|\ ;
+靓>jing|\ ;
+镌>juan|\ ;
+潼>tóng|\ ;
+垸>huàn|\ ;
+谄>chăn|\ ;
+掼>guàn|\ ;
+儆>jĭng|\ ;
+纂>zuăn|\ ;
+玎>ding|\ ;
+檬>méng|\ ;
+盥>guàn|\ ;
+噔>deng|\ ;
+疹>zhĕn|\ ;
+淙>cóng|\ ;
+橇>qiao|\ ;
+柠>níng|\ ;
+艄>shao|\ ;
+阆>lăng|\ ;
+疡>yáng|\ ;
+饯>jiàn|\ ;
+鬃>zong|\ ;
+殓>liàn|\ ;
+菁>jing|\ ;
+濯>zhuó|\ ;
+隼>zhŭn|\ ;
+翦>jiăn|\ ;
+淞>song|\ ;
+桧>kuài|\ ;
+潸>shan|\ ;
+龊>chuò|\ ;
+愆>qian|\ ;
+姣>jiao|\ ;
+膘>biao|\ ;
+卞>biàn|\ ;
+鸾>luán|\ ;
+镗>tang|\ ;
+娩>miăn|\ ;
+筱>xiăo|\ ;
+裱>biăo|\ ;
+溟>míng|\ ;
+陲>chuí|\ ;
+窕>tiăo|\ ;
+锏>jiăn|\ ;
+町>tĭng|\ ;
+纣>jian|\ ;
+谶>chèn|\ ;
+孬>huài|\ ;
+镳>biao|\ ;
+徉>yáng|\ ;
+谪>jiàn|\ ;
+佻>tiao|\ ;
+飙>biao|\ ;
+掮>qián|\ ;
+伉>kàng|\ ;
+锨>xian|\ ;
+磬>qìng|\ ;
+瑭>táng|\ ;
+骞>qian|\ ;
+镫>deng|\ ;
+臧>zang|\ ;
+傥>tăng|\ ;
+慵>yong|\ ;
+濂>lián|\ ;
+囹>líng|\ ;
+嬴>yíng|\ ;
+侩>kuài|\ ;
+枰>píng|\ ;
+滂>pang|\ ;
+芫>yuán|\ ;
+棂>líng|\ ;
+伧>cang|\ ;
+谗>chán|\ ;
+螳>táng|\ ;
+锷>chai|\ ;
+绫>líng|\ ;
+茁>zhuó|\ ;
+蜃>shèn|\ ;
+铄>shuò|\ ;
+缜>zhen|\ ;
+逄>páng|\ ;
+辶>chuò|\ ;
+舢>shan|\ ;
+淼>miăo|\ ;
+罄>qìng|\ ;
+碜>chĕn|\ ;
+甏>pèng|\ ;
+泠>líng|\ ;
+僭>jiàn|\ ;
+碘>diăn|\ ;
+殍>piăo|\ ;
+擤>xĭng|\ ;
+荞>jiao|\ ;
+阡>qian|\ ;
+汞>gŏng|\ ;
+婵>chán|\ ;
+嘣>beng|\ ;
+娉>ping|\ ;
+讧>hóng|\ ;
+砧>zhen|\ ;
+骈>pián|\ ;
+邈>miăo|\ ;
+肛>gang|\ ;
+獠>liáo|\ ;
+喁>yóng|\ ;
+哂>shĕn|\ ;
+榔>láng|\ ;
+绶>shòu|\ ;
+噌>ceng|\ ;
+誊>téng|\ ;
+宸>chén|\ ;
+佞>nìng|\ ;
+邕>yong|\ ;
+俦>chóu|\ ;
+鸢>yuan|\ ;
+湎>miăn|\ ;
+喵>miao|\ ;
+挝>zhua|\ ;
+飚>biao|\ ;
+琮>cóng|\ ;
+沭>jian|\ ;
+鞅>yăng|\ ;
+镛>yong|\ ;
+钿>diàn|\ ;
+抻>shèn|\ ;
+滦>luán|\ ;
+楹>yíng|\ ;
+涿>zhuo|\ ;
+氰>qing|\ ;
+鬈>quán|\ ;
+珩>héng|\ ;
+呤>líng|\ ;
+夯>hang|\ ;
+跹>xian|\ ;
+睑>jiăn|\ ;
+晁>cháo|\ ;
+嬗>shàn|\ ;
+忝>tiăn|\ ;
+墉>yong|\ ;
+凇>sòng|\ ;
+鲠>gĕng|\ ;
+醮>jiào|\ ;
+穰>ráng|\ ;
+楝>liàn|\ ;
+栾>hàng|\ ;
+暹>xian|\ ;
+沣>feng|\ ;
+茏>lóng|\ ;
+芡>qiàn|\ ;
+鳏>guan|\ ;
+殄>tiăn|\ ;
+桁>héng|\ ;
+缒>zhuì|\ ;
+骠>piào|\ ;
+菅>jian|\ ;
+茔>yíng|\ ;
+蝼>băng|\ ;
+烊>yáng|\ ;
+绻>quăn|\ ;
+劭>shào|\ ;
+蛹>yŏng|\ ;
+豢>huàn|\ ;
+侗>dòng|\ ;
+酩>míng|\ ;
+撺>cuan|\ ;
+癣>xiăn|\ ;
+眇>miăo|\ ;
+妯>zhóu|\ ;
+奘>zàng|\ ;
+萱>xuan|\ ;
+铉>xuàn|\ ;
+蹇>jiăn|\ ;
+悭>qian|\ ;
+弁>biàn|\ ;
+酮>tóng|\ ;
+钎>qian|\ ;
+鸩>zhèn|\ ;
+腚>dìng|\ ;
+胴>dòng|\ ;
+骢>cong|\ ;
+勐>mĕng|\ ;
+訇>hong|\ ;
+侪>chái|\ ;
+烃>jĭng|\ ;
+酊>dĭng|\ ;
+铨>quán|\ ;
+砭>bian|\ ;
+骓>zhui|\ ;
+藓>xiăn|\ ;
+銮>luán|\ ;
+鼋>yuán|\ ;
+缱>qiăn|\ ;
+泫>xuàn|\ ;
+嗵>piào|\ ;
+奂>huàn|\ ;
+佥>qian|\ ;
+腱>jiàn|\ ;
+崧>song|\ ;
+圜>yuán|\ ;
+壅>yong|\ ;
+冼>xiăn|\ ;
+粳>geng|\ ;
+郴>chen|\ ;
+龉>lŏng|\ ;
+笊>zhào|\ ;
+锒>láng|\ ;
+暝>míng|\ ;
+澶>chán|\ ;
+搠>shuò|\ ;
+茭>jiao|\ ;
+苕>tiáo|\ ;
+娠>shen|\ ;
+砷>shen|\ ;
+觥>gong|\ ;
+戆>gàng|\ ;
+煊>jiăn|\ ;
+杓>biao|\ ;
+谌>chén|\ ;
+瓤>ráng|\ ;
+爨>cuàn|\ ;
+缵>guàn|\ ;
+渖>shĕn|\ ;
+囝>jiăn|\ ;
+笤>tiáo|\ ;
+痫>xián|\ ;
+鹑>chún|\ ;
+棹>zhuo|\ ;
+苋>xiàn|\ ;
+垅>lŏng|\ ;
+鹳>guàn|\ ;
+钤>qián|\ ;
+樯>cóng|\ ;
+骟>shàn|\ ;
+挢>jiăo|\ ;
+抟>tuán|\ ;
+燹>xiăn|\ ;
+湫>jiăo|\ ;
+啁>zhou|\ ;
+塬>yuán|\ ;
+鲇>nián|\ ;
+箝>qián|\ ;
+瓴>líng|\ ;
+沆>háng|\ ;
+愀>qiăo|\ ;
+擢>zhuó|\ ;
+莴>lián|\ ;
+铣>xiăn|\ ;
+仟>qian|\ ;
+犍>jian|\ ;
+娈>luán|\ ;
+妁>shuò|\ ;
+羼>chàn|\ ;
+倥>kong|\ ;
+籼>lian|\ ;
+蜢>mĕng|\ ;
+裢>lián|\ ;
+竦>sŏng|\ ;
+绡>xiao|\ ;
+洹>huán|\ ;
+廛>chán|\ ;
+撄>ying|\ ;
+尥>liào|\ ;
+谯>qiáo|\ ;
+铰>jiăo|\ ;
+髋>kuan|\ ;
+鲦>tiáo|\ ;
+肱>gong|\ ;
+嶝>dèng|\ ;
+芊>qian|\ ;
+偬>zŏng|\ ;
+倬>zhuo|\ ;
+硼>péng|\ ;
+靛>diàn|\ ;
+霰>xiàn|\ ;
+簟>diàn|\ ;
+疔>ding|\ ;
+稹>zhĕn|\ ;
+碇>dìng|\ ;
+煅>duàn|\ ;
+旃>zhan|\ ;
+肫>zhun|\ ;
+甑>zèng|\ ;
+瑗>yuàn|\ ;
+猃>xiăn|\ ;
+哙>kuài|\ ;
+蓊>wĕng|\ ;
+荥>qián|\ ;
+酰>xian|\ ;
+羟>qian|\ ;
+蠓>mĕng|\ ;
+裣>liàn|\ ;
+毽>jiàn|\ ;
+戋>jian|\ ;
+橼>yuán|\ ;
+榛>zhen|\ ;
+珙>gŏng|\ ;
+溏>táng|\ ;
+郢>yĭng|\ ;
+谵>zhan|\ ;
+苫>shan|\ ;
+扦>qian|\ ;
+魍>wăng|\ ;
+煸>bian|\ ;
+焯>chao|\ ;
+胼>pián|\ ;
+爰>yuán|\ ;
+犏>pian|\ ;
+棰>chuí|\ ;
+绠>gĕng|\ ;
+浞>zhuó|\ ;
+悛>quan|\ ;
+狷>juàn|\ ;
+峤>jiào|\ ;
+嘌>piao|\ ;
+哓>xiao|\ ;
+蒹>jian|\ ;
+塄>léng|\ ;
+鄄>juàn|\ ;
+鞯>jian|\ ;
+鲢>lián|\ ;
+躜>zuan|\ ;
+蹁>pián|\ ;
+砻>lóng|\ ;
+砀>dàng|\ ;
+腈>jing|\ ;
+脘>guăn|\ ;
+辇>niăn|\ ;
+椹>shèn|\ ;
+璎>ying|\ ;
+谠>dăng|\ ;
+劁>qiao|\ ;
+螟>míng|\ ;
+跣>xiăn|\ ;
+籀>zhòu|\ ;
+癜>diàn|\ ;
+砦>zhài|\ ;
+枋>fang|\ ;
+潋>liàn|\ ;
+饧>xíng|\ ;
+掾>yuàn|\ ;
+蕻>hòng|\ ;
+莼>chún|\ ;
+莨>làng|\ ;
+谝>pián|\ ;
+鲛>jiăo|\ ;
+謦>qìng|\ ;
+艏>shŏu|\ ;
+笕>jiăn|\ ;
+蛉>líng|\ ;
+铫>tiáo|\ ;
+蠲>juan|\ ;
+眄>miăn|\ ;
+磴>dèng|\ ;
+媵>yìng|\ ;
+胗>zhen|\ ;
+轸>zhĕn|\ ;
+梃>tĭng|\ ;
+馕>náng|\ ;
+獾>huan|\ ;
+魈>xiao|\ ;
+鲮>líng|\ ;
+黾>méng|\ ;
+疝>shàn|\ ;
+戬>jiăn|\ ;
+骝>biao|\ ;
+謇>jiăn|\ ;
+漶>huàn|\ ;
+帑>tăng|\ ;
+揎>xuan|\ ;
+蒗>làng|\ ;
+酃>líng|\ ;
+陉>jìng|\ ;
+剡>shàn|\ ;
+鲂>fáng|\ ;
+粜>tiào|\ ;
+筲>shao|\ ;
+螈>yuán|\ ;
+颃>gang|\ ;
+褊>biăn|\ ;
+钍>shan|\ ;
+畛>zhĕn|\ ;
+曩>năng|\ ;
+辋>wăng|\ ;
+溱>zhen|\ ;
+忭>biàn|\ ;
+攮>năng|\ ;
+荇>xìng|\ ;
+苎>méng|\ ;
+邡>fang|\ ;
+谖>xuan|\ ;
+醛>quán|\ ;
+耪>păng|\ ;
+黥>qíng|\ ;
+髫>tiáo|\ ;
+鞒>qiao|\ ;
+鳔>biào|\ ;
+踔>zhuó|\ ;
+箜>kong|\ ;
+筌>quán|\ ;
+蟮>shàn|\ ;
+颡>chàn|\ ;
+聍>níng|\ ;
+耵>ting|\ ;
+裥>jiăn|\ ;
+砼>tóng|\ ;
+禳>ráng|\ ;
+觇>zhan|\ ;
+槊>shuò|\ ;
+缳>huán|\ ;
+婧>jìng|\ ;
+潲>shào|\ ;
+滢>yíng|\ ;
+浍>kuài|\ ;
+啶>dìng|\ ;
+薨>hong|\ ;
+瞢>méng|\ ;
+蓼>liăo|\ ;
+蓁>zhen|\ ;
+菘>song|\ ;
+茑>niăo|\ ;
+邙>máng|\ ;
+饔>yong|\ ;
+鲷>diao|\ ;
+隹>zhui|\ ;
+艨>méng|\ ;
+艟>tóng|\ ;
+舡>gang|\ ;
+鹇>xián|\ ;
+锶>song|\ ;
+钇>dìng|\ ;
+硎>xíng|\ ;
+祧>tiao|\ ;
+敫>jiào|\ ;
+楦>xuàn|\ ;
+椴>duàn|\ ;
+缯>zeng|\ ;
+嬲>niăo|\ ;
+噍>jiao|\ ;
+唪>fĕng|\ ;
+萑>huán|\ ;
+芟>shan|\ ;
+苌>căng|\ ;
+埝>niàn|\ ;
+鄯>shàn|\ ;
+脔>luán|\ ;
+汆>cuan|\ ;
+儇>xuan|\ ;
+刭>jĭng|\ ;
+鲶>nián|\ ;
+鲣>jian|\ ;
+龀>chèn|\ ;
+羰>tang|\ ;
+艋>mĕng|\ ;
+簦>deng|\ ;
+蠊>lián|\ ;
+螵>piao|\ ;
+螗>táng|\ ;
+蝾>róng|\ ;
+蜩>tiáo|\ ;
+蛸>shao|\ ;
+蚬>xiàn|\ ;
+瘿>yĭng|\ ;
+瘥>chài|\ ;
+鸫>dong|\ ;
+稂>láng|\ ;
+锾>huán|\ ;
+锩>juàn|\ ;
+硐>tóng|\ ;
+肜>róng|\ ;
+氡>dong|\ ;
+榇>chèn|\ ;
+枵>xiao|\ ;
+枞>cong|\ ;
+杪>miăo|\ ;
+缬>céng|\ ;
+彖>tuàn|\ ;
+湔>jian|\ ;
+渑>miăn|\ ;
+泷>lóng|\ ;
+慊>qiàn|\ ;
+圉>chuí|\ ;
+尢>wang|\ ;
+蘅>héng|\ ;
+蒡>bàng|\ ;
+苄>biàn|\ ;
+郐>kuài|\ ;
+诼>shéi|\ ;
+髟>biao|\ ;
+鳙>yóng|\ ;
+鳊>bian|\ ;
+鲭>qing|\ ;
+龆>tiáo|\ ;
+趼>jiăn|\ ;
+醣>táng|\ ;
+衄>nu\:̀|\ ;
+簖>duàn|\ ;
+箐>jing|\ ;
+蛘>yáng|\ ;
+虿>chài|\ ;
+颥>fĕng|\ ;
+瘳>chou|\ ;
+鹩>liáo|\ ;
+矧>shĕn|\ ;
+铞>diào|\ ;
+钪>kàng|\ ;
+钫>fang|\ ;
+钐>shàn|\ ;
+罾>zeng|\ ;
+畎>quăn|\ ;
+磉>săng|\ ;
+硗>qiao|\ ;
+硭>máng|\ ;
+恧>nu\:̀|\ ;
+祆>xian|\ ;
+胂>shèn|\ ;
+胨>dòng|\ ;
+氙>xian|\ ;
+辁>quán|\ ;
+檠>qíng|\ ;
+楗>jiàn|\ ;
+椠>qiàn|\ ;
+璁>cong|\ ;
+缣>jian|\ ;
+缏>biàn|\ ;
+绗>hèng|\ ;
+逭>huàn|\ ;
+搴>qian|\ ;
+宀>mián|\ ;
+闶>kàng|\ ;
+獍>jìng|\ ;
+徼>jiăo|\ ;
+吲>shĕn|\ ;
+蕹>yong|\ ;
+甍>méng|\ ;
+蓥>yìng|\ ;
+艽>jiao|\ ;
+埏>shan|\ ;
+垌>dòng|\ ;
+酆>feng|\ ;
+阽>diàn|\ ;
+诜>shen|\ ;
+仝>tóng|\ ;
+倮>lèng|\ ;
+俜>ping|\ ;
+龡>chuì|\ ;
+龗>líng|\ ;
+龖>lŏng|\ ;
+龔>gong|\ ;
+龓>lóng|\ ;
+龒>lóng|\ ;
+龐>páng|\ ;
+龏>gong|\ ;
+龍>lóng|\ ;
+齻>dian|\ ;
+齹>chuo|\ ;
+齴>xiăn|\ ;
+齱>chuò|\ ;
+齪>chuò|\ ;
+齤>quán|\ ;
+齢>líng|\ ;
+齡>líng|\ ;
+齠>tiáo|\ ;
+齞>niàn|\ ;
+齛>chái|\ ;
+齔>chèn|\ ;
+齓>chèn|\ ;
+齋>zhai|\ ;
+齉>nàng|\ ;
+齈>nóng|\ ;
+齆>wèng|\ ;
+鼱>jing|\ ;
+鼰>niàn|\ ;
+鼮>tíng|\ ;
+鼨>tóng|\ ;
+鼦>diao|\ ;
+鼟>teng|\ ;
+鼞>tang|\ ;
+鼝>yuan|\ ;
+鼘>yuan|\ ;
+鼕>dong|\ ;
+鼑>dĭng|\ ;
+鼌>cháo|\ ;
+鼆>máng|\ ;
+鼃>mĕng|\ ;
+鼂>cháo|\ ;
+黿>yuán|\ ;
+黰>zhĕn|\ ;
+黨>dăng|\ ;
+點>diăn|\ ;
+黚>qián|\ ;
+黗>tuăn|\ ;
+黌>héng|\ ;
+黉>héng|\ ;
+黇>tian|\ ;
+麺>miàn|\ ;
+麷>feng|\ ;
+麵>miàn|\ ;
+麲>xiàn|\ ;
+麫>miăn|\ ;
+麪>miăn|\ ;
+麨>chăo|\ ;
+麢>líng|\ ;
+麠>jing|\ ;
+麖>jing|\ ;
+麎>chén|\ ;
+麉>jian|\ ;
+麅>biao|\ ;
+麃>biao|\ ;
+鹼>jiăn|\ ;
+鹻>jiăn|\ ;
+鹹>xián|\ ;
+鹸>jiăn|\ ;
+鹷>líng|\ ;
+鹲>méng|\ ;
+鹯>zhan|\ ;
+鹮>xuán|\ ;
+鹨>liáo|\ ;
+鹟>weng|\ ;
+鹓>yuan|\ ;
+鹒>geng|\ ;
+鹐>qian|\ ;
+鹋>miáo|\ ;
+鸼>zhao|\ ;
+鸻>héng|\ ;
+鸰>líng|\ ;
+鸮>xiao|\ ;
+鸧>cang|\ ;
+鸞>luán|\ ;
+鸜>diăo|\ ;
+鸛>guàn|\ ;
+鸚>ying|\ ;
+鸗>lóng|\ ;
+鸏>méng|\ ;
+鸎>ying|\ ;
+鸉>yáng|\ ;
+鸇>zhan|\ ;
+鷼>xián|\ ;
+鷻>tuán|\ ;
+鷹>ying|\ ;
+鷴>xián|\ ;
+鷳>xián|\ ;
+鷯>liáo|\ ;
+鷮>jiao|\ ;
+鷦>jiao|\ ;
+鷤>quán|\ ;
+鷟>zhuó|\ ;
+鷛>róng|\ ;
+鷚>liáo|\ ;
+鷐>chén|\ ;
+鷏>tián|\ ;
+鷍>jiao|\ ;
+鷆>tián|\ ;
+鶼>jian|\ ;
+鶶>táng|\ ;
+鶲>weng|\ ;
+鶱>xuan|\ ;
+鶰>yuán|\ ;
+鶯>ying|\ ;
+鶭>făng|\ ;
+鶬>cang|\ ;
+鶧>ying|\ ;
+鶣>pian|\ ;
+鶞>chun|\ ;
+鶓>miáo|\ ;
+鶊>geng|\ ;
+鶉>chún|\ ;
+鶇>dong|\ ;
+鶄>jing|\ ;
+鶁>jing|\ ;
+鵽>zhuì|\ ;
+鵼>kong|\ ;
+鵻>zhui|\ ;
+鵷>yuan|\ ;
+鵳>jian|\ ;
+鵰>diao|\ ;
+鵮>qian|\ ;
+鵬>péng|\ ;
+鵫>fèng|\ ;
+鵧>píng|\ ;
+鵦>bìng|\ ;
+鵢>shen|\ ;
+鵛>jing|\ ;
+鵑>juan|\ ;
+鵉>luán|\ ;
+鵃>zhou|\ ;
+鵁>jiao|\ ;
+鴻>hóng|\ ;
+鴵>hòng|\ ;
+鴴>héng|\ ;
+鴭>zhui|\ ;
+鴬>ying|\ ;
+鴪>háng|\ ;
+鴧>ròng|\ ;
+鴦>yang|\ ;
+鴞>xiao|\ ;
+鴛>yuan|\ ;
+鴘>biàn|\ ;
+鴒>líng|\ ;
+鴌>fèng|\ ;
+鴋>fang|\ ;
+鴆>zhèn|\ ;
+鴅>huan|\ ;
+鳽>jian|\ ;
+鳶>yuan|\ ;
+鳴>míng|\ ;
+鳳>fèng|\ ;
+鳯>fèng|\ ;
+鳭>diao|\ ;
+鳥>niăo|\ ;
+鳣>zhan|\ ;
+鳒>jian|\ ;
+鳑>fáng|\ ;
+鳐>páng|\ ;
+鳈>quán|\ ;
+鲬>yŏng|\ ;
+鲝>huàn|\ ;
+鲙>kuài|\ ;
+鲗>jiao|\ ;
+鲖>tóng|\ ;
+鲆>píng|\ ;
+鱹>guàn|\ ;
+鱵>zhen|\ ;
+鱣>zhan|\ ;
+鱠>kuài|\ ;
+鱞>guan|\ ;
+鱙>miáo|\ ;
+鱔>shàn|\ ;
+鱓>shàn|\ ;
+鱎>jiăo|\ ;
+鱇>kang|\ ;
+鱅>yong|\ ;
+鰾>biào|\ ;
+鰹>jian|\ ;
+鰷>tiáo|\ ;
+鰱>lián|\ ;
+鰫>róng|\ ;
+鰥>guan|\ ;
+鰠>guan|\ ;
+鰟>fáng|\ ;
+鰜>jian|\ ;
+鰔>jiăn|\ ;
+鰑>yáng|\ ;
+鰎>jiàn|\ ;
+鰊>liàn|\ ;
+鰆>chun|\ ;
+鰁>quán|\ ;
+鰀>huàn|\ ;
+鯿>bian|\ ;
+鯾>bian|\ ;
+鯼>zong|\ ;
+鯹>xing|\ ;
+鯵>shen|\ ;
+鯰>nián|\ ;
+鯮>zong|\ ;
+鯭>mĕng|\ ;
+鯪>líng|\ ;
+鯩>huàn|\ ;
+鯨>jing|\ ;
+鯟>dong|\ ;
+鯞>zhŏu|\ ;
+鯛>diao|\ ;
+鯙>chún|\ ;
+鯖>qing|\ ;
+鯒>yŏng|\ ;
+鯍>méng|\ ;
+鯈>chóu|\ ;
+鯇>huàn|\ ;
+鯅>tíng|\ ;
+鯁>gĕng|\ ;
+鮹>shan|\ ;
+鮸>miăn|\ ;
+鮮>xian|\ ;
+鮫>jiao|\ ;
+鮩>bìng|\ ;
+鮦>tóng|\ ;
+鮢>zhòu|\ ;
+鮡>tiao|\ ;
+鮏>xing|\ ;
+鮉>diao|\ ;
+鮃>píng|\ ;
+魴>fáng|\ ;
+魫>shĕn|\ ;
+魧>háng|\ ;
+魡>diào|\ ;
+魟>gong|\ ;
+魙>zhăn|\ ;
+魗>chŏu|\ ;
+魒>piao|\ ;
+魐>chóu|\ ;
+鬷>zong|\ ;
+鬵>qián|\ ;
+鬳>juàn|\ ;
+鬨>hòng|\ ;
+鬤>ráng|\ ;
+鬡>hŏng|\ ;
+鬠>kuài|\ ;
+鬞>nóng|\ ;
+鬝>qian|\ ;
+鬜>qian|\ ;
+鬙>seng|\ ;
+鬔>péng|\ ;
+鬒>zhĕn|\ ;
+鬑>lián|\ ;
+鬋>jian|\ ;
+鬊>shùn|\ ;
+鬉>zong|\ ;
+鬆>song|\ ;
+鬅>péng|\ ;
+髾>shao|\ ;
+髽>zhua|\ ;
+髼>péng|\ ;
+髸>gong|\ ;
+髶>róng|\ ;
+髬>peng|\ ;
+髣>făng|\ ;
+髜>qiao|\ ;
+髚>qiào|\ ;
+髖>kuan|\ ;
+髒>zang|\ ;
+髎>liáo|\ ;
+髈>páng|\ ;
+髇>xiao|\ ;
+髃>băng|\ ;
+骿>pián|\ ;
+骾>gĕng|\ ;
+骹>qiao|\ ;
+骩>kăng|\ ;
+骣>chăn|\ ;
+骔>zong|\ ;
+骉>biao|\ ;
+驵>zăng|\ ;
+驫>biao|\ ;
+驩>huan|\ ;
+驣>téng|\ ;
+驢>lu\:́|\ ;
+驡>péng|\ ;
+驚>jing|\ ;
+驙>zhan|\ ;
+驕>jiao|\ ;
+驓>zeng|\ ;
+驐>diàn|\ ;
+驏>chăn|\ ;
+驍>xiao|\ ;
+驄>cong|\ ;
+驃>piào|\ ;
+騸>shàn|\ ;
+騵>yuán|\ ;
+騰>téng|\ ;
+騯>páng|\ ;
+騫>qian|\ ;
+騪>jiăn|\ ;
+騣>zong|\ ;
+騡>quán|\ ;
+騝>jian|\ ;
+騚>qián|\ ;
+騙>piàn|\ ;
+騘>cong|\ ;
+騗>piàn|\ ;
+騌>zong|\ ;
+騆>zhou|\ ;
+騅>zhui|\ ;
+騂>xing|\ ;
+駽>xuàn|\ ;
+駹>máng|\ ;
+駷>sŏng|\ ;
+駪>shen|\ ;
+駩>quán|\ ;
+駧>dòng|\ ;
+駥>róng|\ ;
+駢>pián|\ ;
+駚>yăng|\ ;
+駗>zhen|\ ;
+駔>zăng|\ ;
+駎>zhòu|\ ;
+駍>peng|\ ;
+駌>yuan|\ ;
+駋>zhao|\ ;
+駃>kuài|\ ;
+馮>féng|\ ;
+馫>xing|\ ;
+馦>xian|\ ;
+馢>jian|\ ;
+饤>dìng|\ ;
+饢>náng|\ ;
+饡>zuàn|\ ;
+饞>chán|\ ;
+饛>méng|\ ;
+饘>zhan|\ ;
+饍>shàn|\ ;
+饄>táng|\ ;
+餹>táng|\ ;
+餸>sòng|\ ;
+餳>táng|\ ;
+餰>jian|\ ;
+餪>nuăn|\ ;
+館>guăn|\ ;
+餡>xiàn|\ ;
+餠>bĭng|\ ;
+餟>zhuì|\ ;
+餞>jiàn|\ ;
+養>yăng|\ ;
+餇>tóng|\ ;
+餅>bĭng|\ ;
+餃>jiăo|\ ;
+餂>tiăn|\ ;
+飵>zhăi|\ ;
+飬>juàn|\ ;
+飦>zhan|\ ;
+飣>dìng|\ ;
+飑>biao|\ ;
+飐>zhăn|\ ;
+飍>biao|\ ;
+飌>feng|\ ;
+飉>liáo|\ ;
+飈>biăo|\ ;
+飇>biao|\ ;
+飆>biao|\ ;
+飄>piao|\ ;
+飃>biao|\ ;
+飂>liáo|\ ;
+颺>yáng|\ ;
+颵>shào|\ ;
+颴>xuàn|\ ;
+颮>biao|\ ;
+颭>zhăn|\ ;
+颩>biao|\ ;
+風>feng|\ ;
+颕>yĭng|\ ;
+颋>tiān|\ ;
+顴>quán|\ ;
+顯>xiăn|\ ;
+顭>hong|\ ;
+顫>zhàn|\ ;
+顩>qian|\ ;
+顦>qiáo|\ ;
+顠>piào|\ ;
+顟>liáo|\ ;
+顛>dian|\ ;
+顚>dian|\ ;
+顙>săng|\ ;
+願>yuàn|\ ;
+顕>tián|\ ;
+顒>yóng|\ ;
+顅>jian|\ ;
+顁>dìng|\ ;
+顀>chuí|\ ;
+頸>gĕng|\ ;
+頶>gĕng|\ ;
+頴>yĭng|\ ;
+頲>tĭng|\ ;
+頩>ping|\ ;
+頨>pian|\ ;
+頥>shĕn|\ ;
+頣>shĕn|\ ;
+頚>jĭng|\ ;
+領>lĭng|\ ;
+頏>háng|\ ;
+頌>sòng|\ ;
+順>shùn|\ ;
+頃>qĭng|\ ;
+頂>dĭng|\ ;
+韼>péng|\ ;
+韺>ying|\ ;
+韸>péng|\ ;
+韱>xian|\ ;
+韯>xian|\ ;
+韒>qiào|\ ;
+韏>juàn|\ ;
+韉>jian|\ ;
+韆>qian|\ ;
+韅>xiăn|\ ;
+韂>chàn|\ ;
+韀>jian|\ ;
+鞽>qiáo|\ ;
+鞺>tang|\ ;
+鞬>jian|\ ;
+鞤>bang|\ ;
+鞞>bĭng|\ ;
+鞛>bĕng|\ ;
+鞚>kòng|\ ;
+鞙>juan|\ ;
+鞗>tiáo|\ ;
+鞕>shao|\ ;
+鞓>ting|\ ;
+鞏>gŏng|\ ;
+鞃>hóng|\ ;
+靬>jian|\ ;
+靪>chai|\ ;
+靦>miăn|\ ;
+靣>miàn|\ ;
+靝>tian|\ ;
+靜>jìng|\ ;
+靚>jìng|\ ;
+靘>qìng|\ ;
+靕>zhen|\ ;
+靔>tian|\ ;
+靑>qing|\ ;
+靐>bìng|\ ;
+靊>feng|\ ;
+靈>líng|\ ;
+靇>lóng|\ ;
+霿>méng|\ ;
+霶>páng|\ ;
+霳>lóng|\ ;
+霯>dèng|\ ;
+霥>mèng|\ ;
+霟>hóng|\ ;
+霝>líng|\ ;
+霛>líng|\ ;
+霙>ying|\ ;
+霘>dòng|\ ;
+霔>chòu|\ ;
+霑>zhan|\ ;
+霐>weng|\ ;
+霌>chou|\ ;
+霊>líng|\ ;
+霃>chén|\ ;
+雿>zhào|\ ;
+雽>xíng|\ ;
+雼>dàng|\ ;
+電>diàn|\ ;
+雺>méng|\ ;
+雱>páng|\ ;
+雝>yong|\ ;
+雚>guàn|\ ;
+雔>chóu|\ ;
+雈>huán|\ ;
+隿>qiao|\ ;
+隴>lŏng|\ ;
+險>xiăn|\ ;
+隥>dèng|\ ;
+隚>táng|\ ;
+陿>shăn|\ ;
+陾>réng|\ ;
+陽>yáng|\ ;
+険>xiăn|\ ;
+陳>chén|\ ;
+陥>xiàn|\ ;
+陣>zhèn|\ ;
+陝>shăn|\ ;
+陜>shăn|\ ;
+陙>chún|\ ;
+陘>xíng|\ ;
+陗>jìng|\ ;
+陃>bĭng|\ ;
+阭>juàn|\ ;
+阬>keng|\ ;
+阛>huán|\ ;
+闤>huán|\ ;
+闣>dàng|\ ;
+闡>chăn|\ ;
+闝>piáo|\ ;
+關>guan|\ ;
+闗>guan|\ ;
+闐>tián|\ ;
+閳>chăn|\ ;
+閮>tíng|\ ;
+閭>lu\:́|\ ;
+閬>lăng|\ ;
+閧>hòng|\ ;
+関>guan|\ ;
+閞>biàn|\ ;
+閛>peng|\ ;
+閚>jian|\ ;
+間>jian|\ ;
+閒>jiàn|\ ;
+閑>xián|\ ;
+閎>hóng|\ ;
+閍>beng|\ ;
+閌>kàng|\ ;
+閃>shăn|\ ;
+镽>liăo|\ ;
+镵>chán|\ ;
+镮>huán|\ ;
+镩>cuàn|\ ;
+镨>cuan|\ ;
+镟>xuàn|\ ;
+镚>bèng|\ ;
+镕>róng|\ ;
+镋>tăng|\ ;
+锳>ying|\ ;
+锓>qian|\ ;
+铴>tàng|\ ;
+铦>xian|\ ;
+铓>máng|\ ;
+铏>xíng|\ ;
+钘>xíng|\ ;
+钌>diăo|\ ;
+钂>tăng|\ ;
+鑾>luán|\ ;
+鑽>zuan|\ ;
+鑹>cuàn|\ ;
+鑶>cáng|\ ;
+鑵>guàn|\ ;
+鑱>chán|\ ;
+鑯>jian|\ ;
+鑬>jiàn|\ ;
+鑨>lóng|\ ;
+鑣>biao|\ ;
+鑢>lu\:̀|\ ;
+鑡>chuò|\ ;
+鑠>shuò|\ ;
+鑝>péng|\ ;
+鑚>zuàn|\ ;
+鑒>jiàn|\ ;
+鑑>jiàn|\ ;
+鑏>níng|\ ;
+鑍>ying|\ ;
+鑋>qìng|\ ;
+鑆>zhuì|\ ;
+鑅>héng|\ ;
+鑃>diào|\ ;
+鑁>zong|\ ;
+鐶>huán|\ ;
+鐲>zhuó|\ ;
+鐱>qian|\ ;
+鐰>qiao|\ ;
+鐯>zhuó|\ ;
+鐮>lián|\ ;
+鐫>juan|\ ;
+鐧>jiăn|\ ;
+鐥>jian|\ ;
+鐤>dĭng|\ ;
+鐛>yìng|\ ;
+鐙>dèng|\ ;
+鐗>jiăn|\ ;
+鐕>dèng|\ ;
+鐐>liáo|\ ;
+鐎>jiao|\ ;
+鐌>liào|\ ;
+鐋>tàng|\ ;
+鐊>yáng|\ ;
+鐉>quan|\ ;
+鐈>qiáo|\ ;
+鐄>héng|\ ;
+鏰>bèng|\ ;
+鏮>kang|\ ;
+鏩>jiàn|\ ;
+鏧>lóng|\ ;
+鏦>cong|\ ;
+鏥>jiàn|\ ;
+鏢>biao|\ ;
+鏡>jìng|\ ;
+鏠>feng|\ ;
+鏟>chăn|\ ;
+鏞>yong|\ ;
+鏜>tang|\ ;
+鏗>keng|\ ;
+鏔>biao|\ ;
+鏓>cong|\ ;
+鏒>qiao|\ ;
+鏈>liàn|\ ;
+鏇>xuàn|\ ;
+鏆>guàn|\ ;
+鏄>tuán|\ ;
+鎸>juan|\ ;
+鎲>tăng|\ ;
+鎱>yuán|\ ;
+鎯>láng|\ ;
+鎮>zhèn|\ ;
+鎭>tián|\ ;
+鎪>jiăn|\ ;
+鎥>tiáo|\ ;
+鎠>gang|\ ;
+鎟>săng|\ ;
+鎚>chuí|\ ;
+鎕>táng|\ ;
+鎔>róng|\ ;
+鎓>weng|\ ;
+鎌>lián|\ ;
+鎊>bàng|\ ;
+鎈>chuo|\ ;
+鍽>bian|\ ;
+鍼>zhen|\ ;
+鍹>xuan|\ ;
+鍵>jiàn|\ ;
+鍴>duan|\ ;
+鍳>jiàn|\ ;
+鍰>huán|\ ;
+鍯>cong|\ ;
+鍬>qiao|\ ;
+鍫>qiao|\ ;
+鍩>tiăn|\ ;
+鍧>hong|\ ;
+鍣>zhao|\ ;
+鍟>xing|\ ;
+鍞>keng|\ ;
+鍛>duàn|\ ;
+鍚>yáng|\ ;
+鍙>hòng|\ ;
+鍖>chĕn|\ ;
+鍐>cong|\ ;
+鍌>xiăn|\ ;
+鍊>liàn|\ ;
+鍁>xian|\ ;
+錶>biăo|\ ;
+錳>mĕng|\ ;
+錱>zhen|\ ;
+錬>diao|\ ;
+錪>tiăn|\ ;
+錧>guăn|\ ;
+錣>zhuì|\ ;
+錢>qián|\ ;
+錠>dìng|\ ;
+錞>chún|\ ;
+錝>chún|\ ;
+錘>chuí|\ ;
+錐>zhui|\ ;
+錋>péng|\ ;
+錈>bèng|\ ;
+鋽>diào|\ ;
+鋼>gang|\ ;
+鋻>jiàn|\ ;
+鋺>yuan|\ ;
+鋩>máng|\ ;
+鋥>zèng|\ ;
+鋠>shèn|\ ;
+鋟>qian|\ ;
+鋞>xíng|\ ;
+鋝>lu\:è|\ ;
+鋜>zhuó|\ ;
+鋛>gŏng|\ ;
+鋗>xuan|\ ;
+鋓>chan|\ ;
+鋒>feng|\ ;
+鋑>cuan|\ ;
+鋐>hóng|\ ;
+鋌>dìng|\ ;
+鋋>chán|\ ;
+鋃>láng|\ ;
+鋁>lu\:̆|\ ;
+銾>gŏng|\ ;
+銺>zàng|\ ;
+銷>xiao|\ ;
+銵>keng|\ ;
+銱>diào|\ ;
+銭>qián|\ ;
+銜>xián|\ ;
+銛>xian|\ ;
+銚>diào|\ ;
+銘>míng|\ ;
+銓>quán|\ ;
+銒>jian|\ ;
+銑>xiăn|\ ;
+銏>shàn|\ ;
+銅>tóng|\ ;
+銂>zhou|\ ;
+鉼>bĭng|\ ;
+鉸>jiăo|\ ;
+鉷>hóng|\ ;
+鉶>xíng|\ ;
+鉵>tóng|\ ;
+鉮>shen|\ ;
+鉠>yang|\ ;
+鉛>qian|\ ;
+鉙>zhăi|\ ;
+鉗>qián|\ ;
+鉊>zhao|\ ;
+鉆>zhen|\ ;
+鈿>diàn|\ ;
+鈵>bìng|\ ;
+鈴>líng|\ ;
+鈧>kàng|\ ;
+鈜>hóng|\ ;
+鈔>chao|\ ;
+鈓>chăo|\ ;
+鈐>qián|\ ;
+鈄>qian|\ ;
+鈃>xíng|\ ;
+鈂>chén|\ ;
+鈁>fang|\ ;
+釼>jiàn|\ ;
+釺>qian|\ ;
+釹>nu\:̆|\ ;
+釵>chai|\ ;
+釯>máng|\ ;
+釭>gang|\ ;
+釤>shan|\ ;
+釣>diào|\ ;
+釠>luàn|\ ;
+針>zhen|\ ;
+釘>ding|\ ;
+釗>zhao|\ ;
+釕>liăo|\ ;
+釆>biàn|\ ;
+釂>jiào|\ ;
+醽>líng|\ ;
+醻>chóu|\ ;
+醶>jiào|\ ;
+醲>nóng|\ ;
+醦>shăn|\ ;
+醥>piăo|\ ;
+醟>yòng|\ ;
+醜>chŏu|\ ;
+醕>chún|\ ;
+醊>chuò|\ ;
+醆>zhăn|\ ;
+酧>chóu|\ ;
+酟>tian|\ ;
+酙>zhen|\ ;
+酎>zhòu|\ ;
+酄>huan|\ ;
+酁>chán|\ ;
+鄽>chán|\ ;
+鄻>liăn|\ ;
+鄸>méng|\ ;
+鄷>feng|\ ;
+鄶>kuài|\ ;
+鄫>céng|\ ;
+鄧>dèng|\ ;
+鄥>qiao|\ ;
+鄡>qiao|\ ;
+鄝>liăo|\ ;
+鄛>cháo|\ ;
+鄘>yong|\ ;
+鄍>míng|\ ;
+鄌>táng|\ ;
+郻>qiao|\ ;
+郺>yong|\ ;
+郱>píng|\ ;
+郬>qing|\ ;
+郠>gĕng|\ ;
+郞>láng|\ ;
+郉>xíng|\ ;
+郆>huán|\ ;
+邴>bĭng|\ ;
+邫>bang|\ ;
+邧>yuán|\ ;
+邥>shĕn|\ ;
+邟>kàng|\ ;
+邖>káng|\ ;
+邍>yuán|\ ;
+邊>bian|\ ;
+邉>bian|\ ;
+邆>téng|\ ;
+邅>zhan|\ ;
+遼>liáo|\ ;
+選>xuăn|\ ;
+遷>qian|\ ;
+遦>guàn|\ ;
+遡>qiàn|\ ;
+遠>yuăn|\ ;
+遉>zhen|\ ;
+逿>dàng|\ ;
+逺>yuăn|\ ;
+逴>chuò|\ ;
+週>zhou|\ ;
+逬>bèng|\ ;
+連>lián|\ ;
+逕>jìng|\ ;
+迵>tóng|\ ;
+迬>wăng|\ ;
+迧>chén|\ ;
+迒>háng|\ ;
+迍>zhun|\ ;
+迋>wàng|\ ;
+辿>chan|\ ;
+辺>bian|\ ;
+辸>réng|\ ;
+辵>chuò|\ ;
+辴>zhĕn|\ ;
+辳>nóng|\ ;
+農>nóng|\ ;
+辯>biàn|\ ;
+辮>biàn|\ ;
+辧>biàn|\ ;
+辡>biàn|\ ;
+辀>zhou|\ ;
+轟>hong|\ ;
+轞>xiàn|\ ;
+轘>huàn|\ ;
+轏>zhàn|\ ;
+轎>jiào|\ ;
+轈>cháo|\ ;
+轅>yuán|\ ;
+輾>zhăn|\ ;
+輷>hong|\ ;
+輴>chun|\ ;
+輱>xián|\ ;
+輰>yáng|\ ;
+輯>chun|\ ;
+輭>ruăn|\ ;
+輨>guăn|\ ;
+輧>pián|\ ;
+輦>niăn|\ ;
+輤>qiàn|\ ;
+輣>péng|\ ;
+輟>chuò|\ ;
+輞>wăng|\ ;
+輚>zhàn|\ ;
+輘>líng|\ ;
+輖>léng|\ ;
+輕>qing|\ ;
+輑>qìng|\ ;
+輐>huăn|\ ;
+輎>shao|\ ;
+輈>zhou|\ ;
+輇>quán|\ ;
+輆>chun|\ ;
+較>jiào|\ ;
+軿>píng|\ ;
+軽>peng|\ ;
+軸>zhóu|\ ;
+軵>rŏng|\ ;
+軫>zhĕn|\ ;
+軨>líng|\ ;
+軣>hong|\ ;
+軟>ruăn|\ ;
+軙>chén|\ ;
+軕>shan|\ ;
+軒>xuan|\ ;
+躿>kang|\ ;
+躴>láng|\ ;
+躳>gong|\ ;
+躦>zuan|\ ;
+躥>cuan|\ ;
+躟>ráng|\ ;
+躚>xian|\ ;
+躘>lóng|\ ;
+躖>duàn|\ ;
+躔>chán|\ ;
+躊>chóu|\ ;
+躈>qiào|\ ;
+躆>chuò|\ ;
+蹻>qiao|\ ;
+蹺>qiao|\ ;
+蹨>niăn|\ ;
+蹥>lián|\ ;
+蹤>zong|\ ;
+蹚>tang|\ ;
+蹘>liáo|\ ;
+蹍>niăn|\ ;
+踼>táng|\ ;
+踺>jiàn|\ ;
+踸>chĕn|\ ;
+踷>duàn|\ ;
+踴>yŏng|\ ;
+踳>chŭn|\ ;
+踫>pèng|\ ;
+踡>quán|\ ;
+踜>lèng|\ ;
+踒>chuo|\ ;
+踐>jiàn|\ ;
+踍>qiao|\ ;
+踋>jiăo|\ ;
+踇>làng|\ ;
+踃>xiao|\ ;
+踁>jìng|\ ;
+跰>bèng|\ ;
+跧>quán|\ ;
+跈>niăn|\ ;
+趽>fàng|\ ;
+趻>chĕn|\ ;
+趭>jiào|\ ;
+趬>qiáo|\ ;
+趫>qiáo|\ ;
+趠>chào|\ ;
+趝>jiàn|\ ;
+趙>zhào|\ ;
+趒>diào|\ ;
+趈>zhan|\ ;
+趂>chèn|\ ;
+趀>chén|\ ;
+赻>xiăn|\ ;
+赸>shàn|\ ;
+赯>táng|\ ;
+赗>fèng|\ ;
+赒>zhou|\ ;
+贠>yuán|\ ;
+贚>lòng|\ ;
+贙>xuàn|\ ;
+贓>zang|\ ;
+贏>yíng|\ ;
+贍>shàn|\ ;
+贈>zèng|\ ;
+贆>biao|\ ;
+贅>zhuì|\ ;
+贂>chĕn|\ ;
+賿>liáo|\ ;
+賶>càng|\ ;
+賵>fèng|\ ;
+賩>cóng|\ ;
+賨>cóng|\ ;
+賤>jiàn|\ ;
+賢>xián|\ ;
+賡>geng|\ ;
+賟>tiăn|\ ;
+賝>chen|\ ;
+賙>zhou|\ ;
+賘>zang|\ ;
+賑>zhèn|\ ;
+賏>yìng|\ ;
+賎>jiàn|\ ;
+賆>pián|\ ;
+貶>biăn|\ ;
+貵>piăn|\ ;
+貫>guàn|\ ;
+貥>háng|\ ;
+貢>gòng|\ ;
+貟>yuán|\ ;
+貞>zhen|\ ;
+貛>huan|\ ;
+貒>tuan|\ ;
+貆>huán|\ ;
+豼>huan|\ ;
+豵>zong|\ ;
+豲>huán|\ ;
+豣>jian|\ ;
+豜>jian|\ ;
+豐>feng|\ ;
+豏>xiàn|\ ;
+豋>deng|\ ;
+豊>feng|\ ;
+豅>lóng|\ ;
+谾>hong|\ ;
+谼>hóng|\ ;
+谹>hóng|\ ;
+谫>jiăn|\ ;
+谞>qiàn|\ ;
+谉>shĕn|\ ;
+谂>shĕn|\ ;
+诪>zhou|\ ;
+讻>róng|\ ;
+讝>hòng|\ ;
+讜>dăng|\ ;
+讙>huan|\ ;
+讖>chèn|\ ;
+讓>ràng|\ ;
+讒>chán|\ ;
+讐>chóu|\ ;
+讎>chóu|\ ;
+變>biàn|\ ;
+讇>chăn|\ ;
+讅>shĕn|\ ;
+讂>xuàn|\ ;
+譾>jiăn|\ ;
+譼>jiàn|\ ;
+譻>ying|\ ;
+譺>jian|\ ;
+譸>zhou|\ ;
+譵>zhuì|\ ;
+譴>qiăn|\ ;
+譲>ràng|\ ;
+譱>shàn|\ ;
+譫>zhan|\ ;
+譧>lián|\ ;
+譥>jiào|\ ;
+譣>qian|\ ;
+譡>dăng|\ ;
+譞>xuan|\ ;
+譙>qiáo|\ ;
+譑>jiăo|\ ;
+譍>yìng|\ ;
+譄>zeng|\ ;
+譂>chăn|\ ;
+謿>cháo|\ ;
+謶>zhuó|\ ;
+謰>lián|\ ;
+謭>jiăn|\ ;
+謥>còng|\ ;
+謤>biao|\ ;
+謟>qĭng|\ ;
+謜>yuàn|\ ;
+謙>qian|\ ;
+謗>bàng|\ ;
+謕>qiàn|\ ;
+謓>chen|\ ;
+謍>yíng|\ ;
+謆>shàn|\ ;
+謄>téng|\ ;
+諼>xuan|\ ;
+諻>heng|\ ;
+諹>chăo|\ ;
+諷>fèng|\ ;
+諶>chén|\ ;
+諴>xián|\ ;
+諫>jiàn|\ ;
+諪>tíng|\ ;
+諠>xuan|\ ;
+諞>piăn|\ ;
+諚>pián|\ ;
+諙>huài|\ ;
+諘>biăo|\ ;
+諗>shĕn|\ ;
+諓>jiàn|\ ;
+諑>zhuó|\ ;
+諌>dŏng|\ ;
+請>qĭng|\ ;
+諈>zhuì|\ ;
+諄>zhun|\ ;
+諃>chen|\ ;
+諂>chăn|\ ;
+諁>chuò|\ ;
+調>diào|\ ;
+誸>xuán|\ ;
+誷>wăng|\ ;
+誵>xiáo|\ ;
+誴>cóng|\ ;
+誰>shéi|\ ;
+説>shuo|\ ;
+誫>shuì|\ ;
+說>shuì|\ ;
+誩>jìng|\ ;
+誦>sòng|\ ;
+誢>xiàn|\ ;
+誜>shuà|\ ;
+誚>qiào|\ ;
+誙>héng|\ ;
+誗>chán|\ ;
+誔>tĭng|\ ;
+誏>lăng|\ ;
+誂>tiăo|\ ;
+誁>bĕng|\ ;
+詶>chóu|\ ;
+詵>shen|\ ;
+詮>quán|\ ;
+詨>jiao|\ ;
+詠>yŏng|\ ;
+評>píng|\ ;
+詔>zhào|\ ;
+詋>zhòu|\ ;
+詅>líng|\ ;
+詃>quăn|\ ;
+診>zhĕn|\ ;
+訷>shen|\ ;
+訮>xian|\ ;
+訬>chao|\ ;
+訪>făng|\ ;
+訦>chén|\ ;
+訤>xiáo|\ ;
+訟>sòng|\ ;
+訕>shàn|\ ;
+訌>hóng|\ ;
+訋>diào|\ ;
+訆>jiào|\ ;
+訂>dìng|\ ;
+訁>heng|\ ;
+觵>gong|\ ;
+觲>xing|\ ;
+觪>xing|\ ;
+觘>chào|\ ;
+觍>tiăn|\ ;
+觀>guan|\ ;
+覺>jiào|\ ;
+覹>jiào|\ ;
+覸>jiàn|\ ;
+覵>jiàn|\ ;
+覴>deng|\ ;
+観>guan|\ ;
+覱>zhàn|\ ;
+覮>yíng|\ ;
+覭>míng|\ ;
+覥>tiăn|\ ;
+覢>shăn|\ ;
+覝>lián|\ ;
+覜>tiào|\ ;
+覘>zhan|\ ;
+覑>piăn|\ ;
+覐>jiào|\ ;
+覍>biàn|\ ;
+覌>guan|\ ;
+見>jiàn|\ ;
+覅>biào|\ ;
+覂>fĕng|\ ;
+襺>jiăn|\ ;
+襳>xian|\ ;
+襱>lóng|\ ;
+襯>chèn|\ ;
+襠>dang|\ ;
+襝>liàn|\ ;
+襜>chan|\ ;
+襛>nóng|\ ;
+襘>chan|\ ;
+襉>jiàn|\ ;
+襇>jiăn|\ ;
+褾>biăo|\ ;
+褸>lu\:̆|\ ;
+褳>lián|\ ;
+褱>huái|\ ;
+褰>qian|\ ;
+褮>ying|\ ;
+褭>niăo|\ ;
+褬>săng|\ ;
+褤>yuàn|\ ;
+褣>róng|\ ;
+褢>huái|\ ;
+褖>tuàn|\ ;
+褑>yuàn|\ ;
+褍>duan|\ ;
+褉>pian|\ ;
+裷>yuan|\ ;
+裯>chóu|\ ;
+裬>líng|\ ;
+裫>yuàn|\ ;
+裧>chan|\ ;
+裞>shuì|\ ;
+裗>liăn|\ ;
+裖>zhĕn|\ ;
+裑>shen|\ ;
+裐>juan|\ ;
+裊>niăo|\ ;
+袨>xiàn|\ ;
+袗>zhĕn|\ ;
+袑>shào|\ ;
+袊>lĭng|\ ;
+衠>zhun|\ ;
+衘>xián|\ ;
+衖>lòng|\ ;
+衕>tòng|\ ;
+衒>xuàn|\ ;
+衑>líng|\ ;
+衏>yuàn|\ ;
+衉>háng|\ ;
+蠸>quán|\ ;
+蠳>ying|\ ;
+蠯>bèng|\ ;
+蠭>feng|\ ;
+蠬>lóng|\ ;
+蠪>lóng|\ ;
+蠨>xiao|\ ;
+蠗>zhuó|\ ;
+蠒>jiăn|\ ;
+蠑>róng|\ ;
+蠎>măng|\ ;
+蠉>xuan|\ ;
+蠆>chài|\ ;
+蠅>yíng|\ ;
+蠄>mĕng|\ ;
+蟺>shàn|\ ;
+蟷>dang|\ ;
+蟭>jiao|\ ;
+蟬>chán|\ ;
+蟟>liáo|\ ;
+蟜>jiăo|\ ;
+蟛>péng|\ ;
+蟚>péng|\ ;
+蟏>xiao|\ ;
+蟌>cong|\ ;
+蟉>liào|\ ;
+蟂>jiao|\ ;
+螹>jiàn|\ ;
+螸>chán|\ ;
+螶>bèng|\ ;
+螴>chén|\ ;
+螥>cang|\ ;
+螣>téng|\ ;
+螢>yíng|\ ;
+螎>róng|\ ;
+螊>lián|\ ;
+螉>weng|\ ;
+蝿>yíng|\ ;
+蝯>yuán|\ ;
+蝬>zong|\ ;
+蝪>tang|\ ;
+蝡>ruăn|\ ;
+蝝>yuán|\ ;
+蝖>xuan|\ ;
+蝒>mián|\ ;
+蝏>tíng|\ ;
+蝆>yăng|\ ;
+蝄>wăng|\ ;
+蝀>dong|\ ;
+蜸>jing|\ ;
+蜵>juăn|\ ;
+蜯>bàng|\ ;
+蜙>song|\ ;
+蜔>diàn|\ ;
+蜎>yuan|\ ;
+蜋>láng|\ ;
+蜆>xiăn|\ ;
+蜄>zhèn|\ ;
+蜁>xuán|\ ;
+蛵>xing|\ ;
+蛬>gŏng|\ ;
+蛧>wăng|\ ;
+蛥>gŏng|\ ;
+蛢>píng|\ ;
+蛝>xián|\ ;
+蛖>máng|\ ;
+蛍>yíng|\ ;
+蛃>bĭng|\ ;
+蛁>diao|\ ;
+蚿>xián|\ ;
+蚲>píng|\ ;
+蚫>piáo|\ ;
+蚢>háng|\ ;
+蚟>wáng|\ ;
+蚈>qian|\ ;
+蚄>bèng|\ ;
+虸>gòng|\ ;
+虭>diao|\ ;
+虦>zhàn|\ ;
+虥>zhàn|\ ;
+虠>jiăo|\ ;
+虓>xiao|\ ;
+虊>luán|\ ;
+虈>xiao|\ ;
+虇>quăn|\ ;
+虃>jian|\ ;
+蘾>huài|\ ;
+蘹>huài|\ ;
+蘴>feng|\ ;
+蘯>dàng|\ ;
+蘨>huái|\ ;
+蘦>líng|\ ;
+蘢>lóng|\ ;
+蘡>ying|\ ;
+蘟>lŏng|\ ;
+蘞>lián|\ ;
+蘝>liàn|\ ;
+蘚>xiăn|\ ;
+蘘>ráng|\ ;
+蘐>xian|\ ;
+蘉>máng|\ ;
+藽>chèn|\ ;
+藼>xuan|\ ;
+藮>qiáo|\ ;
+藨>biao|\ ;
+藧>biao|\ ;
+藠>xiào|\ ;
+藘>lu\:́|\ ;
+藖>xián|\ ;
+藑>jiào|\ ;
+藋>diào|\ ;
+藊>biăn|\ ;
+藆>jiăn|\ ;
+藂>còng|\ ;
+藀>yíng|\ ;
+薽>zhen|\ ;
+薼>chén|\ ;
+薻>cóng|\ ;
+薸>piao|\ ;
+薵>chóu|\ ;
+薴>néng|\ ;
+薦>jiàn|\ ;
+薡>dĭng|\ ;
+薟>liăn|\ ;
+薚>táng|\ ;
+薗>yuán|\ ;
+薕>lián|\ ;
+薓>shen|\ ;
+薐>léng|\ ;
+薍>luàn|\ ;
+蕿>xuan|\ ;
+蕽>nóng|\ ;
+蕶>líng|\ ;
+蕳>jian|\ ;
+蕯>lóng|\ ;
+蕭>xiao|\ ;
+蕫>dŏng|\ ;
+蕩>dàng|\ ;
+蕣>shùn|\ ;
+蕠>kuài|\ ;
+蕛>téng|\ ;
+蕑>jian|\ ;
+蕎>qiáo|\ ;
+蕋>jiao|\ ;
+蕇>diăn|\ ;
+蕆>chăn|\ ;
+蕄>méng|\ ;
+蔹>liàn|\ ;
+蔵>zang|\ ;
+蔳>qiàn|\ ;
+蔯>chén|\ ;
+蔮>cáng|\ ;
+蔪>jiàn|\ ;
+蔦>niăo|\ ;
+蔥>cong|\ ;
+蔙>xuàn|\ ;
+蔈>biao|\ ;
+蔆>líng|\ ;
+蓴>chún|\ ;
+蓱>píng|\ ;
+蓯>cong|\ ;
+蓮>lián|\ ;
+蓪>tong|\ ;
+蓨>tiao|\ ;
+蓧>diào|\ ;
+蓢>láng|\ ;
+蓎>táng|\ ;
+蓈>láng|\ ;
+蒼>cang|\ ;
+蒶>căng|\ ;
+蒴>shuò|\ ;
+蒬>yuan|\ ;
+蒨>qiàn|\ ;
+蒧>diăn|\ ;
+蒝>yuán|\ ;
+蒖>zhen|\ ;
+蒕>máng|\ ;
+蒓>chún|\ ;
+蒇>chăn|\ ;
+蒄>guan|\ ;
+葾>yuan|\ ;
+葼>zong|\ ;
+葶>tíng|\ ;
+葴>zhen|\ ;
+葲>quán|\ ;
+葮>duàn|\ ;
+葥>qián|\ ;
+葠>shen|\ ;
+葓>hóng|\ ;
+葒>hóng|\ ;
+葑>feng|\ ;
+葏>jing|\ ;
+葎>lu\:̀|\ ;
+葌>jian|\ ;
+葂>miăn|\ ;
+萾>yíng|\ ;
+萹>pian|\ ;
+萷>xiao|\ ;
+萶>chŭn|\ ;
+萲>yuán|\ ;
+萰>liàn|\ ;
+萮>xuan|\ ;
+萠>méng|\ ;
+萔>tiáo|\ ;
+萈>huán|\ ;
+萅>chun|\ ;
+萂>chŭn|\ ;
+菾>tián|\ ;
+菺>jian|\ ;
+菶>bĕng|\ ;
+菵>péng|\ ;
+菮>geng|\ ;
+菪>dàng|\ ;
+菤>juăn|\ ;
+菚>zhàn|\ ;
+菙>chuí|\ ;
+菗>chóu|\ ;
+菄>dong|\ ;
+菃>guan|\ ;
+莾>măng|\ ;
+莶>liăn|\ ;
+莬>miăn|\ ;
+莧>xiàn|\ ;
+莦>shao|\ ;
+莣>wáng|\ ;
+莛>tíng|\ ;
+莖>jing|\ ;
+莕>xìng|\ ;
+莔>méng|\ ;
+莑>feng|\ ;
+莐>chén|\ ;
+莄>gĕng|\ ;
+莀>chén|\ ;
+荮>zhòu|\ ;
+荭>hóng|\ ;
+荓>ping|\ ;
+荍>shou|\ ;
+荊>jing|\ ;
+荁>huán|\ ;
+茼>tóng|\ ;
+茻>măng|\ ;
+茞>chén|\ ;
+茝>chăi|\ ;
+茙>róng|\ ;
+茘>jiàn|\ ;
+苳>dong|\ ;
+苰>hóng|\ ;
+苮>xian|\ ;
+苪>bĭng|\ ;
+苨>chan|\ ;
+苚>yòng|\ ;
+苁>cong|\ ;
+苀>háng|\ ;
+芿>huán|\ ;
+芆>chai|\ ;
+芃>péng|\ ;
+芁>jiao|\ ;
+艼>dĭng|\ ;
+艵>píng|\ ;
+艱>jian|\ ;
+艬>chán|\ ;
+艦>jiàn|\ ;
+艡>dang|\ ;
+艙>cang|\ ;
+艕>bàng|\ ;
+艑>biàn|\ ;
+艐>zong|\ ;
+艌>niàn|\ ;
+艆>láng|\ ;
+艂>féng|\ ;
+舽>páng|\ ;
+舼>hóng|\ ;
+舲>líng|\ ;
+舘>guăn|\ ;
+興>xing|\ ;
+舃>qiăo|\ ;
+臽>xiàn|\ ;
+臶>jiàn|\ ;
+臱>mián|\ ;
+臰>chòu|\ ;
+臫>jiăo|\ ;
+臤>qian|\ ;
+臢>zang|\ ;
+臠>luán|\ ;
+臟>zàng|\ ;
+臜>zang|\ ;
+臗>kuan|\ ;
+臕>biao|\ ;
+臔>xiàn|\ ;
+臓>zàng|\ ;
+臉>liăn|\ ;
+臇>juăn|\ ;
+臁>lián|\ ;
+膿>nóng|\ ;
+膾>kuài|\ ;
+膯>teng|\ ;
+膮>xiao|\ ;
+膫>liáo|\ ;
+膧>pèng|\ ;
+膥>chun|\ ;
+膠>jiao|\ ;
+膟>lu\:̀|\ ;
+膖>pang|\ ;
+膐>biao|\ ;
+膋>liáo|\ ;
+膇>zhuì|\ ;
+膅>táng|\ ;
+膁>lián|\ ;
+腶>duàn|\ ;
+腳>jiăo|\ ;
+腝>ruăn|\ ;
+腙>zong|\ ;
+腖>dòng|\ ;
+腏>chuò|\ ;
+腎>shèn|\ ;
+腁>pián|\ ;
+腀>juàn|\ ;
+脿>biao|\ ;
+脽>zhou|\ ;
+脲>niào|\ ;
+脧>juan|\ ;
+脥>qiăn|\ ;
+脤>shèn|\ ;
+脣>chún|\ ;
+脡>tĭng|\ ;
+脠>chan|\ ;
+脝>heng|\ ;
+脛>jìng|\ ;
+脁>tiăo|\ ;
+胻>héng|\ ;
+胮>páng|\ ;
+胦>keng|\ ;
+胓>píng|\ ;
+胋>tián|\ ;
+肼>jĭng|\ ;
+肻>chen|\ ;
+肷>qian|\ ;
+肨>pàng|\ ;
+肙>yuan|\ ;
+肒>huán|\ ;
+肈>zhào|\ ;
+肁>zhào|\ ;
+聾>lóng|\ ;
+聽>ting|\ ;
+聼>ting|\ ;
+聹>níng|\ ;
+聴>ting|\ ;
+聳>sŏng|\ ;
+聰>cong|\ ;
+聯>lián|\ ;
+聮>lián|\ ;
+聬>wĕng|\ ;
+聫>lián|\ ;
+聦>cong|\ ;
+聤>tíng|\ ;
+聡>cong|\ ;
+聠>píng|\ ;
+聙>jing|\ ;
+聄>zhĕn|\ ;
+耾>hóng|\ ;
+耴>ding|\ ;
+耲>huái|\ ;
+耖>chào|\ ;
+耓>ting|\ ;
+耎>ruăn|\ ;
+翾>xuan|\ ;
+翹>qiáo|\ ;
+翴>lián|\ ;
+翲>piao|\ ;
+翪>zong|\ ;
+翧>xuan|\ ;
+翝>hóng|\ ;
+翐>qiào|\ ;
+翃>hóng|\ ;
+羷>liăn|\ ;
+羶>shan|\ ;
+羴>shan|\ ;
+羱>yuán|\ ;
+羮>geng|\ ;
+羬>xián|\ ;
+羨>xiàn|\ ;
+羦>huán|\ ;
+羢>róng|\ ;
+羠>xiàn|\ ;
+羘>zang|\ ;
+羕>yàng|\ ;
+羏>yáng|\ ;
+羉>luán|\ ;
+羄>zhào|\ ;
+羂>juàn|\ ;
+罿>tóng|\ ;
+罺>chao|\ ;
+罥>juàn|\ ;
+罓>gang|\ ;
+罒>wăng|\ ;
+罌>ying|\ ;
+罋>wèng|\ ;
+罆>guàn|\ ;
+罃>ying|\ ;
+罁>gang|\ ;
+缾>píng|\ ;
+缷>hóng|\ ;
+缐>biàn|\ ;
+纻>zhèn|\ ;
+纮>hóng|\ ;
+纞>liàn|\ ;
+纜>jiăo|\ ;
+纘>zuăn|\ ;
+纖>xian|\ ;
+纓>ying|\ ;
+纒>chán|\ ;
+纏>chán|\ ;
+纎>ráng|\ ;
+纉>zuăn|\ ;
+纄>péng|\ ;
+繾>qiăn|\ ;
+繵>chán|\ ;
+繳>jiăo|\ ;
+繱>cong|\ ;
+繰>qiao|\ ;
+繯>huán|\ ;
+繭>jiăn|\ ;
+繬>huàn|\ ;
+繤>zuăn|\ ;
+繟>chăn|\ ;
+繝>jiàn|\ ;
+繛>chao|\ ;
+繚>liáo|\ ;
+繕>shàn|\ ;
+繒>zeng|\ ;
+繑>céng|\ ;
+繏>xuàn|\ ;
+繆>miào|\ ;
+繃>beng|\ ;
+繂>bĕng|\ ;
+縿>shan|\ ;
+總>zŏng|\ ;
+縼>xuàn|\ ;
+縺>lián|\ ;
+縹>piăo|\ ;
+縷>lu\:̆|\ ;
+縴>qiàn|\ ;
+縱>zong|\ ;
+縰>cóng|\ ;
+縫>féng|\ ;
+縧>fèng|\ ;
+縦>zòng|\ ;
+縥>zhĕn|\ ;
+縤>cóng|\ ;
+縣>xiàn|\ ;
+縢>téng|\ ;
+縝>zhĕn|\ ;
+縙>róng|\ ;
+縘>chen|\ ;
+縓>quăn|\ ;
+縑>jian|\ ;
+縐>zhòu|\ ;
+縍>bang|\ ;
+縋>zhuì|\ ;
+縈>yíng|\ ;
+縆>geng|\ ;
+縂>zŏng|\ ;
+縁>yuán|\ ;
+緾>chán|\ ;
+緶>biàn|\ ;
+緵>zong|\ ;
+練>liàn|\ ;
+緲>miăo|\ ;
+緬>miăn|\ ;
+緫>cong|\ ;
+緪>geng|\ ;
+緩>huăn|\ ;
+編>bian|\ ;
+緤>biăn|\ ;
+緣>yuán|\ ;
+緢>miáo|\ ;
+緞>duàn|\ ;
+緜>mián|\ ;
+緛>ruăn|\ ;
+線>xiàn|\ ;
+緘>jian|\ ;
+緓>ying|\ ;
+総>zŏng|\ ;
+緈>xìng|\ ;
+綿>mián|\ ;
+綾>líng|\ ;
+綽>chuò|\ ;
+綻>zhàn|\ ;
+綴>chuò|\ ;
+綳>beng|\ ;
+網>wăng|\ ;
+綱>gang|\ ;
+綬>shòu|\ ;
+綫>xiàn|\ ;
+綪>qiàn|\ ;
+綧>zhŭn|\ ;
+綤>shào|\ ;
+綣>quăn|\ ;
+綢>chóu|\ ;
+綡>diào|\ ;
+綠>lu\:̀|\ ;
+綝>chen|\ ;
+綜>zong|\ ;
+綘>féng|\ ;
+經>jing|\ ;
+綎>ting|\ ;
+綋>hóng|\ ;
+綊>tíng|\ ;
+綆>gĕng|\ ;
+綄>huăn|\ ;
+綃>xiao|\ ;
+綂>tŏng|\ ;
+綁>băng|\ ;
+絼>zhĕn|\ ;
+絻>miăn|\ ;
+絹>juàn|\ ;
+絸>jiăn|\ ;
+統>tŏng|\ ;
+絭>quàn|\ ;
+絩>tiào|\ ;
+絨>róng|\ ;
+絧>juàn|\ ;
+絣>beng|\ ;
+絢>xuàn|\ ;
+絞>jiăo|\ ;
+絝>jiào|\ ;
+絚>geng|\ ;
+絙>geng|\ ;
+絒>chóu|\ ;
+絑>gèng|\ ;
+絎>háng|\ ;
+経>jing|\ ;
+絃>xián|\ ;
+紾>zhĕn|\ ;
+紻>yang|\ ;
+紹>shào|\ ;
+紷>líng|\ ;
+紳>shen|\ ;
+紭>hóng|\ ;
+紬>chóu|\ ;
+紡>făng|\ ;
+紘>hóng|\ ;
+純>chún|\ ;
+紅>hóng|\ ;
+紂>zhòu|\ ;
+糼>gong|\ ;
+糶>tiào|\ ;
+糰>tuán|\ ;
+糮>xiàn|\ ;
+糭>zòng|\ ;
+糫>huán|\ ;
+糩>kuài|\ ;
+糛>táng|\ ;
+糋>jiàn|\ ;
+糉>zòng|\ ;
+糄>bian|\ ;
+糃>táng|\ ;
+粯>xiàn|\ ;
+粡>tóng|\ ;
+粠>hóng|\ ;
+粇>kang|\ ;
+粁>qian|\ ;
+籹>nu\:̆|\ ;
+籸>shen|\ ;
+籶>shen|\ ;
+籱>zhuó|\ ;
+籯>yíng|\ ;
+籫>zuăn|\ ;
+籪>duàn|\ ;
+籩>bian|\ ;
+籨>lián|\ ;
+籤>qian|\ ;
+籠>lóng|\ ;
+籝>yíng|\ ;
+籛>jian|\ ;
+籘>téng|\ ;
+籗>zhuó|\ ;
+籕>lŏng|\ ;
+籐>téng|\ ;
+籌>chóu|\ ;
+籈>zhen|\ ;
+簾>lián|\ ;
+簽>qian|\ ;
+簹>dang|\ ;
+簫>xiao|\ ;
+簥>jiao|\ ;
+簡>jiăn|\ ;
+簝>liáo|\ ;
+簜>dàng|\ ;
+簘>xiao|\ ;
+簒>cuàn|\ ;
+簐>niăn|\ ;
+簎>xiăo|\ ;
+簉>chòu|\ ;
+簈>píng|\ ;
+簅>chăn|\ ;
+簁>chuò|\ ;
+篻>piào|\ ;
+篵>cong|\ ;
+篯>jian|\ ;
+篭>lóng|\ ;
+篩>shai|\ ;
+篧>zhuó|\ ;
+篣>páng|\ ;
+篢>gong|\ ;
+篠>xiăo|\ ;
+篟>qiàn|\ ;
+篘>chou|\ ;
+篖>táng|\ ;
+篏>qiàn|\ ;
+篎>miăo|\ ;
+篊>hóng|\ ;
+篈>feng|\ ;
+篅>chuí|\ ;
+篂>xing|\ ;
+箾>shuò|\ ;
+箽>dŏng|\ ;
+箺>chŭn|\ ;
+箹>shuò|\ ;
+箳>píng|\ ;
+箲>xiăn|\ ;
+箯>bian|\ ;
+箮>xuan|\ ;
+箢>yuan|\ ;
+箠>chuí|\ ;
+箞>quan|\ ;
+箌>zhào|\ ;
+箋>jian|\ ;
+箉>guăi|\ ;
+筿>xiăo|\ ;
+筻>gàng|\ ;
+筳>tíng|\ ;
+筭>suàn|\ ;
+筩>tŏng|\ ;
+筧>jiăn|\ ;
+筦>guăn|\ ;
+筤>láng|\ ;
+筡>jiàn|\ ;
+筜>dang|\ ;
+筕>háng|\ ;
+筊>jiăo|\ ;
+筅>xiăn|\ ;
+笾>bian|\ ;
+笭>líng|\ ;
+笘>shan|\ ;
+笗>dong|\ ;
+笐>gang|\ ;
+笎>yuán|\ ;
+笍>zhuì|\ ;
+笉>zhĕn|\ ;
+笇>suàn|\ ;
+笅>xiáo|\ ;
+笀>máng|\ ;
+竼>péng|\ ;
+竸>jìng|\ ;
+競>jìng|\ ;
+竵>huai|\ ;
+竳>deng|\ ;
+竲>céng|\ ;
+竰>sháo|\ ;
+竮>píng|\ ;
+竫>jìng|\ ;
+竨>diào|\ ;
+竧>jìng|\ ;
+竤>hóng|\ ;
+竝>bìng|\ ;
+竜>lóng|\ ;
+竛>líng|\ ;
+竚>bàng|\ ;
+竗>miào|\ ;
+竔>gong|\ ;
+竓>qian|\ ;
+竑>hóng|\ ;
+竏>qian|\ ;
+竉>lŏng|\ ;
+竅>qiào|\ ;
+竄>cuàn|\ ;
+竂>piáo|\ ;
+窾>kuăn|\ ;
+窼>zhao|\ ;
+窵>diào|\ ;
+窴>tián|\ ;
+窲>cháo|\ ;
+窱>tiào|\ ;
+窤>guan|\ ;
+窡>zhuì|\ ;
+窙>xiao|\ ;
+窎>diào|\ ;
+窌>jiào|\ ;
+窉>bĭng|\ ;
+窆>biăn|\ ;
+窀>zhun|\ ;
+穽>jĭng|\ ;
+穮>biao|\ ;
+穬>gŏng|\ ;
+穣>ráng|\ ;
+穠>nóng|\ ;
+穜>tóng|\ ;
+穛>zhuo|\ ;
+穚>jiao|\ ;
+穘>xiao|\ ;
+穎>yĭng|\ ;
+穇>shan|\ ;
+穅>kang|\ ;
+稸>bian|\ ;
+稴>lián|\ ;
+稱>chèn|\ ;
+稯>chèn|\ ;
+稨>bian|\ ;
+稟>bĭng|\ ;
+稜>léng|\ ;
+稖>bàng|\ ;
+稕>zhùn|\ ;
+稏>lèng|\ ;
+稉>geng|\ ;
+稆>jing|\ ;
+稅>shuì|\ ;
+稄>tuàn|\ ;
+秾>nóng|\ ;
+秥>nián|\ ;
+秢>líng|\ ;
+秔>geng|\ ;
+秊>nián|\ ;
+秈>xian|\ ;
+禯>nóng|\ ;
+禪>chán|\ ;
+禩>shàn|\ ;
+禤>xuan|\ ;
+禟>táng|\ ;
+禜>yŏng|\ ;
+禛>zhen|\ ;
+禚>zhuó|\ ;
+禓>yáng|\ ;
+禒>xiăn|\ ;
+禐>yuàn|\ ;
+禎>zhen|\ ;
+禈>chăo|\ ;
+禂>chán|\ ;
+祾>líng|\ ;
+祼>guàn|\ ;
+祳>chĕn|\ ;
+祱>shuì|\ ;
+祩>zhài|\ ;
+祡>chái|\ ;
+祘>suàn|\ ;
+祒>tiáo|\ ;
+祊>beng|\ ;
+礽>réng|\ ;
+礶>guàn|\ ;
+礲>lóng|\ ;
+礱>lóng|\ ;
+礯>ying|\ ;
+礥>xián|\ ;
+礞>méng|\ ;
+礝>ruăn|\ ;
+礛>jian|\ ;
+礑>dàng|\ ;
+礋>zhái|\ ;
+礈>zhuì|\ ;
+礆>xiăn|\ ;
+礄>qiáo|\ ;
+磽>qiao|\ ;
+磹>diàn|\ ;
+磸>dìng|\ ;
+磵>jiàn|\ ;
+磳>zeng|\ ;
+磰>shàn|\ ;
+磭>chuò|\ ;
+磫>zong|\ ;
+磦>biao|\ ;
+磞>peng|\ ;
+磛>chán|\ ;
+磘>qìng|\ ;
+磌>zhen|\ ;
+磄>táng|\ ;
+碿>pang|\ ;
+碽>gong|\ ;
+碹>xuàn|\ ;
+碸>feng|\ ;
+碭>dàng|\ ;
+碫>duàn|\ ;
+碪>zhen|\ ;
+碩>shuò|\ ;
+碥>biăn|\ ;
+碠>dìng|\ ;
+碝>ruăn|\ ;
+碙>gang|\ ;
+碐>líng|\ ;
+碊>jian|\ ;
+碃>qìng|\ ;
+碂>zòng|\ ;
+碀>céng|\ ;
+硿>kong|\ ;
+硾>zhuì|\ ;
+硻>keng|\ ;
+硺>zhuó|\ ;
+硹>song|\ ;
+硶>chĕn|\ ;
+硧>iŏng|\ ;
+硦>lòng|\ ;
+硥>măng|\ ;
+硣>xiao|\ ;
+硡>hong|\ ;
+硠>lăng|\ ;
+硟>chàn|\ ;
+硞>láng|\ ;
+硜>keng|\ ;
+硚>qiáo|\ ;
+硔>hóng|\ ;
+硑>peng|\ ;
+硏>dŏng|\ ;
+硂>quán|\ ;
+硁>keng|\ ;
+砯>ping|\ ;
+砜>feng|\ ;
+砊>kang|\ ;
+矴>diao|\ ;
+矰>zeng|\ ;
+矯>jiăo|\ ;
+矪>zhou|\ ;
+矨>yĭng|\ ;
+矤>shĕn|\ ;
+矟>shuò|\ ;
+矘>tăng|\ ;
+矔>guàn|\ ;
+矓>lóng|\ ;
+矒>méng|\ ;
+矏>mián|\ ;
+矎>xuan|\ ;
+矊>máng|\ ;
+矈>mián|\ ;
+矇>meng|\ ;
+矃>nĭng|\ ;
+矁>chŏu|\ ;
+瞾>zhào|\ ;
+瞼>jiăn|\ ;
+瞷>jiàn|\ ;
+瞯>xián|\ ;
+瞭>liăo|\ ;
+瞫>shĕn|\ ;
+瞦>liào|\ ;
+瞛>cong|\ ;
+瞚>shùn|\ ;
+瞗>diao|\ ;
+瞋>chen|\ ;
+瞊>dàng|\ ;
+瞈>wĕng|\ ;
+睻>xuan|\ ;
+睷>jian|\ ;
+睶>chŭn|\ ;
+睭>zhŏu|\ ;
+睠>juàn|\ ;
+睖>lèng|\ ;
+睓>tiăn|\ ;
+睒>shăn|\ ;
+睍>xiàn|\ ;
+睊>juàn|\ ;
+睆>huăn|\ ;
+睄>qiáo|\ ;
+眻>yáng|\ ;
+眹>zhèn|\ ;
+眴>xuàn|\ ;
+眳>míng|\ ;
+眮>dòng|\ ;
+眬>lóng|\ ;
+眪>bĭng|\ ;
+眧>chăo|\ ;
+眢>yuan|\ ;
+眞>zhen|\ ;
+眝>miăn|\ ;
+眘>shèn|\ ;
+眕>zhĕn|\ ;
+眒>shèn|\ ;
+眏>yang|\ ;
+県>dèng|\ ;
+眆>făng|\ ;
+眂>miào|\ ;
+眀>míng|\ ;
+盽>feng|\ ;
+盷>tián|\ ;
+盶>ruăn|\ ;
+盳>máng|\ ;
+盪>dàng|\ ;
+盩>zhou|\ ;
+監>jian|\ ;
+盢>jiàn|\ ;
+盞>zhăn|\ ;
+盄>zhao|\ ;
+盁>yíng|\ ;
+盀>diào|\ ;
+皽>zhăn|\ ;
+皻>mĭng|\ ;
+皺>zhòu|\ ;
+皭>jiào|\ ;
+皫>piăo|\ ;
+皨>xing|\ ;
+皦>jiăo|\ ;
+皢>xiăo|\ ;
+皘>qiàn|\ ;
+皗>chóu|\ ;
+皏>pĕng|\ ;
+皊>líng|\ ;
+癵>luán|\ ;
+癴>lüán|\ ;
+癲>dian|\ ;
+癰>yong|\ ;
+癭>yĭng|\ ;
+癬>xuăn|\ ;
+癢>yăng|\ ;
+癕>yong|\ ;
+癑>nóng|\ ;
+癐>guài|\ ;
+癏>guan|\ ;
+癎>xián|\ ;
+癇>xián|\ ;
+癄>qiáo|\ ;
+癃>lóng|\ ;
+療>liáo|\ ;
+瘹>diào|\ ;
+瘵>zhài|\ ;
+瘲>zòng|\ ;
+瘮>shen|\ ;
+瘭>biao|\ ;
+瘨>dian|\ ;
+瘧>nu\:è|\ ;
+瘝>guan|\ ;
+瘓>huàn|\ ;
+瘎>shèn|\ ;
+瘍>yáng|\ ;
+瘋>feng|\ ;
+瘆>shèn|\ ;
+痶>diăn|\ ;
+痯>guăn|\ ;
+痭>péng|\ ;
+痩>shòu|\ ;
+痠>suan|\ ;
+痟>xiao|\ ;
+痝>máng|\ ;
+痚>xiao|\ ;
+痙>jìng|\ ;
+痌>tong|\ ;
+痃>xián|\ ;
+痁>diàn|\ ;
+疭>zòng|\ ;
+疢>chèn|\ ;
+疛>zhŏu|\ ;
+疘>gang|\ ;
+疇>chóu|\ ;
+疃>tuăn|\ ;
+畽>tuăn|\ ;
+畷>chuò|\ ;
+當>dang|\ ;
+畳>dàng|\ ;
+畑>tián|\ ;
+畋>tián|\ ;
+畊>geng|\ ;
+甿>méng|\ ;
+甽>quăn|\ ;
+甼>tĭng|\ ;
+甹>ping|\ ;
+甯>níng|\ ;
+甮>fèng|\ ;
+産>chăn|\ ;
+產>chăn|\ ;
+甡>shen|\ ;
+甠>qíng|\ ;
+甖>ying|\ ;
+甕>wèng|\ ;
+甉>xián|\ ;
+甇>ying|\ ;
+甃>zhòu|\ ;
+甂>bian|\ ;
+甁>píng|\ ;
+甀>zhuì|\ ;
+瓾>mĕng|\ ;
+瓽>dàng|\ ;
+瓹>juàn|\ ;
+瓬>făng|\ ;
+瓩>qian|\ ;
+瓨>hóng|\ ;
+瓛>huán|\ ;
+瓘>guàn|\ ;
+瓔>ying|\ ;
+瓏>lóng|\ ;
+瓀>ruăn|\ ;
+璿>xuán|\ ;
+璹>shòu|\ ;
+璳>tián|\ ;
+環>huán|\ ;
+璬>jiăo|\ ;
+璫>dang|\ ;
+璥>jĭng|\ ;
+璢>huàn|\ ;
+璟>jĭng|\ ;
+璙>liáo|\ ;
+璗>dàng|\ ;
+璔>zeng|\ ;
+璓>xiòu|\ ;
+璒>deng|\ ;
+璉>lián|\ ;
+璄>liăn|\ ;
+瑽>cong|\ ;
+瑵>zhăo|\ ;
+瑱>tiàn|\ ;
+瑯>láng|\ ;
+瑩>yíng|\ ;
+瑢>róng|\ ;
+瑖>duàn|\ ;
+瑔>quán|\ ;
+瑓>huán|\ ;
+瑒>yáng|\ ;
+瑐>jiăn|\ ;
+瑍>huàn|\ ;
+瑌>ruăn|\ ;
+瑊>zhen|\ ;
+瑆>xing|\ ;
+瑄>xuan|\ ;
+瑃>chun|\ ;
+琸>zhuó|\ ;
+琱>diao|\ ;
+琯>guăn|\ ;
+琫>bĕng|\ ;
+琠>diăn|\ ;
+琖>zhăn|\ ;
+琔>diàn|\ ;
+琌>líng|\ ;
+琄>quăn|\ ;
+琂>juan|\ ;
+琁>xuan|\ ;
+珿>chuò|\ ;
+現>xiàn|\ ;
+珽>tĭng|\ ;
+珰>dang|\ ;
+珜>yáng|\ ;
+珘>zhou|\ ;
+珗>xian|\ ;
+珔>jiàn|\ ;
+珓>jiào|\ ;
+珎>zhen|\ ;
+珅>shen|\ ;
+玿>sháo|\ ;
+玹>xuán|\ ;
+玶>píng|\ ;
+玪>jian|\ ;
+玤>bàng|\ ;
+玣>bàng|\ ;
+玜>gong|\ ;
+玚>yáng|\ ;
+玒>hóng|\ ;
+玅>miào|\ ;
+玁>xiăn|\ ;
+獽>ráng|\ ;
+獻>xiàn|\ ;
+獸>shòu|\ ;
+獴>méng|\ ;
+獰>níng|\ ;
+獮>xiăn|\ ;
+獫>xiăn|\ ;
+獪>kuài|\ ;
+獧>juàn|\ ;
+獞>tóng|\ ;
+獑>chán|\ ;
+獉>zhen|\ ;
+獂>huán|\ ;
+猵>bian|\ ;
+猯>tuan|\ ;
+猭>yuán|\ ;
+猨>yuán|\ ;
+猦>feng|\ ;
+猣>zong|\ ;
+猏>jian|\ ;
+猋>biao|\ ;
+猄>jing|\ ;
+狻>suan|\ ;
+狵>máng|\ ;
+狪>tong|\ ;
+狨>róng|\ ;
+狦>kuài|\ ;
+狣>zhào|\ ;
+狟>huán|\ ;
+狝>xiăn|\ ;
+狑>líng|\ ;
+狅>qing|\ ;
+犿>huan|\ ;
+犺>kàng|\ ;
+犫>chou|\ ;
+犪>chái|\ ;
+犨>chou|\ ;
+犝>tóng|\ ;
+犎>feng|\ ;
+犈>quán|\ ;
+犅>gang|\ ;
+牽>qian|\ ;
+牼>keng|\ ;
+牻>máng|\ ;
+牷>quán|\ ;
+牶>quàn|\ ;
+牮>jiàn|\ ;
+牨>gang|\ ;
+牥>fang|\ ;
+牤>máng|\ ;
+牓>băng|\ ;
+牑>bian|\ ;
+牐>cong|\ ;
+牋>jian|\ ;
+牊>sháo|\ ;
+牅>yóng|\ ;
+牂>zang|\ ;
+爧>líng|\ ;
+爣>tăng|\ ;
+爟>guàn|\ ;
+爜>cóng|\ ;
+爙>răng|\ ;
+爖>lóng|\ ;
+爔>shuò|\ ;
+爒>liào|\ ;
+爍>shuò|\ ;
+爃>róng|\ ;
+爂>biao|\ ;
+燽>chóu|\ ;
+燳>zhào|\ ;
+燯>líng|\ ;
+燫>lián|\ ;
+燪>cong|\ ;
+營>yíng|\ ;
+燛>jĭng|\ ;
+燙>tàng|\ ;
+燗>dàng|\ ;
+燒>shao|\ ;
+燑>tóng|\ ;
+燍>liáo|\ ;
+燋>jiao|\ ;
+燊>shen|\ ;
+燈>deng|\ ;
+燅>xián|\ ;
+燂>qián|\ ;
+燀>chăn|\ ;
+熽>xiào|\ ;
+熸>jian|\ ;
+熷>zeng|\ ;
+熶>cuàn|\ ;
+熮>liáo|\ ;
+熧>zong|\ ;
+熥>tong|\ ;
+熢>feng|\ ;
+熞>jian|\ ;
+熜>zŏng|\ ;
+熛>biao|\ ;
+熒>yíng|\ ;
+熑>lián|\ ;
+熌>shàn|\ ;
+煼>chăo|\ ;
+煻>táng|\ ;
+煵>shàn|\ ;
+煬>yáng|\ ;
+煥>huàn|\ ;
+煘>chán|\ ;
+煖>nuăn|\ ;
+煔>tiàn|\ ;
+煓>qián|\ ;
+煐>ying|\ ;
+煍>jiăo|\ ;
+煋>xing|\ ;
+煉>liàn|\ ;
+煈>fèng|\ ;
+煁>chén|\ ;
+焼>shao|\ ;
+焵>gàng|\ ;
+焴>shén|\ ;
+焲>jiao|\ ;
+焩>ping|\ ;
+焨>fèng|\ ;
+焧>cong|\ ;
+焢>hong|\ ;
+焇>xiao|\ ;
+烿>róng|\ ;
+烻>shan|\ ;
+烺>lăng|\ ;
+烶>tĭng|\ ;
+烵>shán|\ ;
+烴>ting|\ ;
+烜>xuăn|\ ;
+烔>tóng|\ ;
+烍>xiăn|\ ;
+烋>xiao|\ ;
+烉>huàn|\ ;
+烇>quàn|\ ;
+烆>xíng|\ ;
+烄>jiăo|\ ;
+炵>tong|\ ;
+炴>yăng|\ ;
+炪>zhuó|\ ;
+炩>lìng|\ ;
+炤>zhào|\ ;
+炓>liào|\ ;
+炐>pàng|\ ;
+炏>gĕng|\ ;
+炁>gĕng|\ ;
+灴>hóng|\ ;
+灲>xiao|\ ;
+灱>xiao|\ ;
+灦>xiăn|\ ;
+灤>luán|\ ;
+灢>năng|\ ;
+灛>chăn|\ ;
+灚>jiăo|\ ;
+灙>dăng|\ ;
+灗>shàn|\ ;
+灓>luán|\ ;
+灊>qián|\ ;
+灉>yong|\ ;
+灇>cóng|\ ;
+灅>huàn|\ ;
+灃>feng|\ ;
+灂>zhuó|\ ;
+灁>yuan|\ ;
+瀽>jiăn|\ ;
+瀼>ráng|\ ;
+瀺>chán|\ ;
+瀸>jian|\ ;
+瀴>yĭng|\ ;
+瀳>jiàn|\ ;
+瀲>liàn|\ ;
+瀯>yíng|\ ;
+瀧>lóng|\ ;
+瀤>huái|\ ;
+瀠>yíng|\ ;
+瀟>xiao|\ ;
+瀞>jìng|\ ;
+瀜>yong|\ ;
+瀗>xiàn|\ ;
+瀍>chán|\ ;
+瀌>biao|\ ;
+瀋>shĕn|\ ;
+瀇>chèn|\ ;
+瀅>yíng|\ ;
+瀁>yàng|\ ;
+濾>lu\:̀|\ ;
+濽>cuán|\ ;
+濺>jiàn|\ ;
+濶>jian|\ ;
+濴>xíng|\ ;
+濳>qián|\ ;
+濪>jiàn|\ ;
+濢>cháo|\ ;
+濛>méng|\ ;
+濙>yíng|\ ;
+濘>nìng|\ ;
+濓>lián|\ ;
+濎>dĭng|\ ;
+濍>song|\ ;
+濃>nóng|\ ;
+濁>zhuó|\ ;
+澺>jiao|\ ;
+澵>zhen|\ ;
+澴>huán|\ ;
+澱>diàn|\ ;
+澰>liàn|\ ;
+澮>kuài|\ ;
+澭>yong|\ ;
+澣>huăn|\ ;
+澢>dang|\ ;
+澘>shan|\ ;
+澗>jiàn|\ ;
+澖>xian|\ ;
+澒>hòng|\ ;
+澋>hèng|\ ;
+澆>jiao|\ ;
+潽>dèng|\ ;
+潹>chán|\ ;
+潧>shàn|\ ;
+潛>qián|\ ;
+潚>xiao|\ ;
+潅>guàn|\ ;
+潂>hóng|\ ;
+潁>yĭng|\ ;
+潀>cóng|\ ;
+漻>liáo|\ ;
+漸>jian|\ ;
+漰>peng|\ ;
+漮>kang|\ ;
+漭>măng|\ ;
+漨>féng|\ ;
+漧>qián|\ ;
+漣>lián|\ ;
+漟>táng|\ ;
+漙>tuán|\ ;
+漘>chún|\ ;
+漗>cong|\ ;
+漖>chún|\ ;
+漎>cóng|\ ;
+漋>lóng|\ ;
+漊>lu\:̆|\ ;
+漅>jiăo|\ ;
+漀>biao|\ ;
+滽>yóng|\ ;
+滻>chăn|\ ;
+滲>shèn|\ ;
+滮>biao|\ ;
+滣>chún|\ ;
+滝>lóng|\ ;
+滘>jiào|\ ;
+滎>xíng|\ ;
+滄>cang|\ ;
+滃>wĕng|\ ;
+準>zhŭn|\ ;
+溕>mèng|\ ;
+溓>lián|\ ;
+溒>yuán|\ ;
+溌>liăn|\ ;
+溁>yíng|\ ;
+満>jian|\ ;
+湻>chún|\ ;
+湹>chán|\ ;
+湷>chuí|\ ;
+湶>quán|\ ;
+湲>yuán|\ ;
+湰>lóng|\ ;
+湯>tang|\ ;
+湭>qióu|\ ;
+湬>jiăo|\ ;
+湪>jiăo|\ ;
+湩>dòng|\ ;
+湧>yŏng|\ ;
+湗>fèng|\ ;
+湕>chén|\ ;
+湉>tián|\ ;
+湅>liàn|\ ;
+渻>xĭng|\ ;
+渹>hong|\ ;
+渶>ying|\ ;
+渢>féng|\ ;
+渟>tíng|\ ;
+渜>nuăn|\ ;
+減>jiăn|\ ;
+渙>huàn|\ ;
+渕>yuan|\ ;
+渁>yuan|\ ;
+淺>qian|\ ;
+淸>qing|\ ;
+淵>yuan|\ ;
+淲>piáo|\ ;
+淰>niăn|\ ;
+淭>liăn|\ ;
+淩>líng|\ ;
+淨>jìng|\ ;
+淣>guan|\ ;
+淟>tiăn|\ ;
+淜>péng|\ ;
+淓>fang|\ ;
+淎>pĕng|\ ;
+淃>juàn|\ ;
+涷>dong|\ ;
+涶>dòng|\ ;
+涳>kong|\ ;
+涰>chuò|\ ;
+涭>shòu|\ ;
+涬>xìng|\ ;
+涫>guàn|\ ;
+涚>shuì|\ ;
+涗>shuì|\ ;
+涍>diàn|\ ;
+涊>niăn|\ ;
+涇>jing|\ ;
+涁>shèn|\ ;
+涀>xiàn|\ ;
+浻>wĕng|\ ;
+浵>tóng|\ ;
+浲>féng|\ ;
+浱>chún|\ ;
+浭>geng|\ ;
+浧>yĭng|\ ;
+浤>hóng|\ ;
+浐>chăn|\ ;
+洺>míng|\ ;
+洴>píng|\ ;
+洨>xiáo|\ ;
+洤>quán|\ ;
+洘>hóng|\ ;
+洐>xíng|\ ;
+洊>jiàn|\ ;
+洀>zhou|\ ;
+泴>guàn|\ ;
+泙>píng|\ ;
+泎>zhuó|\ ;
+沨>féng|\ ;
+沝>zhuĭ|\ ;
+沗>tian|\ ;
+汼>niou|\ ;
+汻>hăng|\ ;
+汸>fang|\ ;
+汳>biàn|\ ;
+汱>quăn|\ ;
+汯>hóng|\ ;
+汬>jĭng|\ ;
+汧>qian|\ ;
+汘>qian|\ ;
+汒>máng|\ ;
+汋>zhuó|\ ;
+汈>diao|\ ;
+汅>miăn|\ ;
+氹>dàng|\ ;
+氷>bing|\ ;
+氱>niào|\ ;
+氭>dong|\ ;
+氫>qing|\ ;
+氠>shen|\ ;
+氋>méng|\ ;
+氊>zhan|\ ;
+氈>zhan|\ ;
+氄>rŏng|\ ;
+氃>băng|\ ;
+毨>xiăn|\ ;
+毧>róng|\ ;
+毚>chán|\ ;
+毌>guàn|\ ;
+毊>xiao|\ ;
+毈>duàn|\ ;
+殸>qìng|\ ;
+殲>jian|\ ;
+殮>liàn|\ ;
+殩>cuàn|\ ;
+殦>diao|\ ;
+殠>chòu|\ ;
+殑>qíng|\ ;
+殎>jìng|\ ;
+歬>qián|\ ;
+歡>huan|\ ;
+歠>chuò|\ ;
+歛>liăn|\ ;
+歗>xiào|\ ;
+歖>chua|\ ;
+歓>huan|\ ;
+歊>xiao|\ ;
+歀>kuăn|\ ;
+欻>chua|\ ;
+欶>shuò|\ ;
+欵>kuăn|\ ;
+欴>láng|\ ;
+欳>kuài|\ ;
+欩>chao|\ ;
+欦>qian|\ ;
+欞>líng|\ ;
+欜>náng|\ ;
+欓>dăng|\ ;
+欒>luán|\ ;
+權>quán|\ ;
+欉>còng|\ ;
+欃>chán|\ ;
+欁>nóng|\ ;
+櫿>liàn|\ ;
+櫼>jian|\ ;
+櫻>ying|\ ;
+櫺>líng|\ ;
+櫹>xiao|\ ;
+櫶>xiăn|\ ;
+櫳>lóng|\ ;
+櫰>huái|\ ;
+櫬>chèn|\ ;
+櫣>lián|\ ;
+櫢>guàn|\ ;
+櫡>zhuó|\ ;
+櫞>yuán|\ ;
+櫚>lu\:́|\ ;
+櫕>cuán|\ ;
+櫋>mián|\ ;
+櫈>dèng|\ ;
+櫄>chun|\ ;
+櫂>zhào|\ ;
+檻>jiàn|\ ;
+檸>níng|\ ;
+檲>bing|\ ;
+檰>mián|\ ;
+檧>song|\ ;
+檦>biăo|\ ;
+檢>jiăn|\ ;
+檛>zhua|\ ;
+檙>dĭng|\ ;
+檔>dàng|\ ;
+檒>dàng|\ ;
+檈>xuán|\ ;
+檆>shan|\ ;
+檂>nóng|\ ;
+橫>héng|\ ;
+橧>zeng|\ ;
+橗>méng|\ ;
+橖>táng|\ ;
+橓>shùn|\ ;
+橒>chén|\ ;
+橏>zhăn|\ ;
+橌>xiàn|\ ;
+橋>qiáo|\ ;
+橂>diàn|\ ;
+橀>chun|\ ;
+樿>zhăn|\ ;
+樼>zhen|\ ;
+樷>cong|\ ;
+樬>cong|\ ;
+樫>jian|\ ;
+権>quán|\ ;
+樥>péng|\ ;
+樣>yàng|\ ;
+樢>niăo|\ ;
+標>biao|\ ;
+樘>táng|\ ;
+樔>cháo|\ ;
+樌>guàn|\ ;
+樈>qíng|\ ;
+樅>cong|\ ;
+樄>chén|\ ;
+樃>láng|\ ;
+槺>kang|\ ;
+槵>huàn|\ ;
+槰>bèng|\ ;
+槫>tuán|\ ;
+槧>qiàn|\ ;
+槦>yóng|\ ;
+槤>lián|\ ;
+槜>bing|\ ;
+槙>dian|\ ;
+槕>zhuó|\ ;
+槓>gàng|\ ;
+槇>dian|\ ;
+榸>zhai|\ ;
+榶>táng|\ ;
+榵>róng|\ ;
+榳>tíng|\ ;
+榮>róng|\ ;
+榬>yuán|\ ;
+榩>qián|\ ;
+榠>míng|\ ;
+榞>yuán|\ ;
+榗>jiàn|\ ;
+榒>lăng|\ ;
+榐>zhăn|\ ;
+楻>héng|\ ;
+楯>shŭn|\ ;
+楩>pián|\ ;
+楨>zhen|\ ;
+楧>ying|\ ;
+楥>xuàn|\ ;
+楤>sŏng|\ ;
+楟>tíng|\ ;
+楓>feng|\ ;
+楊>yáng|\ ;
+楄>pián|\ ;
+椾>zhàn|\ ;
+椺>jian|\ ;
+椷>jian|\ ;
+椫>zhăn|\ ;
+椪>pèng|\ ;
+検>jiăn|\ ;
+椗>dìng|\ ;
+椖>péng|\ ;
+椓>zhuó|\ ;
+椊>chuí|\ ;
+椆>chóu|\ ;
+棽>chen|\ ;
+棭>niàn|\ ;
+棬>quan|\ ;
+棩>yuan|\ ;
+棧>zhàn|\ ;
+棤>quàn|\ ;
+棢>wăng|\ ;
+棡>gang|\ ;
+棟>dòng|\ ;
+棈>qiàn|\ ;
+棇>cong|\ ;
+棆>zhun|\ ;
+棅>bìng|\ ;
+棁>zhuó|\ ;
+梿>lián|\ ;
+梹>bing|\ ;
+梷>jìng|\ ;
+梴>chan|\ ;
+梲>zhuó|\ ;
+梥>song|\ ;
+梡>kuăn|\ ;
+梠>lu\:̆|\ ;
+梟>xiao|\ ;
+條>tiáo|\ ;
+梙>huàn|\ ;
+梘>jiàn|\ ;
+梋>xuan|\ ;
+梈>peng|\ ;
+梇>lòng|\ ;
+桻>feng|\ ;
+桹>láng|\ ;
+桱>jìng|\ ;
+桯>ting|\ ;
+桭>zhen|\ ;
+桟>zhàn|\ ;
+桜>ying|\ ;
+桘>chuí|\ ;
+桒>sang|\ ;
+桊>juàn|\ ;
+栴>zhan|\ ;
+栱>gŏng|\ ;
+栫>jiàn|\ ;
+栦>chóu|\ ;
+栤>bìng|\ ;
+栠>jiăo|\ ;
+栟>bing|\ ;
+栚>zhèn|\ ;
+栕>zhen|\ ;
+栄>róng|\ ;
+柺>guăi|\ ;
+柡>yŏng|\ ;
+柗>song|\ ;
+柖>zhao|\ ;
+柍>yang|\ ;
+柃>líng|\ ;
+枮>xian|\ ;
+枧>jiàn|\ ;
+枛>zhào|\ ;
+枀>song|\ ;
+杽>chŏu|\ ;
+杻>chŏu|\ ;
+杶>chun|\ ;
+杴>xian|\ ;
+東>dong|\ ;
+杬>yuán|\ ;
+杛>gong|\ ;
+杗>máng|\ ;
+杊>biao|\ ;
+杄>qian|\ ;
+朾>tíng|\ ;
+朲>piáo|\ ;
+朩>dĕng|\ ;
+朧>lóng|\ ;
+朤>lăng|\ ;
+朣>tóng|\ ;
+朢>wàng|\ ;
+朡>zong|\ ;
+朠>lŏng|\ ;
+朙>míng|\ ;
+朘>juan|\ ;
+朖>lăng|\ ;
+朓>tiào|\ ;
+朎>líng|\ ;
+朊>ruăn|\ ;
+曽>ceng|\ ;
+曭>tăng|\ ;
+曬>shài|\ ;
+曫>luán|\ ;
+曨>lóng|\ ;
+曧>róng|\ ;
+曟>chén|\ ;
+曚>méng|\ ;
+曕>yiàn|\ ;
+曔>jìng|\ ;
+曒>jiăo|\ ;
+曌>zhào|\ ;
+曉>xiăo|\ ;
+曈>tóng|\ ;
+暻>jĭng|\ ;
+暸>liáo|\ ;
+暶>xuán|\ ;
+暰>cong|\ ;
+暙>chun|\ ;
+暘>yáng|\ ;
+暕>jiăn|\ ;
+暒>qíng|\ ;
+暅>xuăn|\ ;
+暁>gĕng|\ ;
+暀>wăng|\ ;
+晸>zhĕn|\ ;
+晱>shăn|\ ;
+晭>zhŏu|\ ;
+晫>zhuó|\ ;
+晪>tiăn|\ ;
+晝>zhòu|\ ;
+晛>xiàn|\ ;
+晎>hŏng|\ ;
+晍>tóng|\ ;
+晈>jiăo|\ ;
+晅>xuan|\ ;
+晀>tiăo|\ ;
+昽>lóng|\ ;
+昺>bĭng|\ ;
+昸>dong|\ ;
+昮>zòng|\ ;
+昪>biàn|\ ;
+昤>ling|\ ;
+昣>chŭn|\ ;
+昡>xuàn|\ ;
+昞>bĭng|\ ;
+昜>yáng|\ ;
+昚>shèn|\ ;
+昘>făng|\ ;
+昍>xuan|\ ;
+昉>făng|\ ;
+旾>chun|\ ;
+旸>yáng|\ ;
+旵>chăn|\ ;
+旫>tiao|\ ;
+旝>guài|\ ;
+旜>zhan|\ ;
+旚>piao|\ ;
+旔>jiàn|\ ;
+旓>shao|\ ;
+旐>zhào|\ ;
+旍>jing|\ ;
+旊>făng|\ ;
+斻>háng|\ ;
+斷>duàn|\ ;
+斵>zhuó|\ ;
+斲>zhuó|\ ;
+斱>zhuó|\ ;
+斮>zhuó|\ ;
+斬>zhăn|\ ;
+斠>jiào|\ ;
+斘>liáo|\ ;
+斎>zhai|\ ;
+斆>jiăo|\ ;
+斅>jiăo|\ ;
+斂>liăn|\ ;
+斀>zhuó|\ ;
+敿>jiăo|\ ;
+敽>jiăo|\ ;
+敹>liáo|\ ;
+敶>zhèn|\ ;
+敭>yáng|\ ;
+敩>xiào|\ ;
+敧>jiăo|\ ;
+敤>diao|\ ;
+敟>diăn|\ ;
+敒>zhèn|\ ;
+敐>chén|\ ;
+敎>jiào|\ ;
+敁>dian|\ ;
+攪>jiăo|\ ;
+攩>dăng|\ ;
+攨>tăng|\ ;
+攧>dian|\ ;
+攣>luán|\ ;
+攢>cuán|\ ;
+攛>cuan|\ ;
+攙>chan|\ ;
+攖>ying|\ ;
+攓>qian|\ ;
+攑>qian|\ ;
+攐>qian|\ ;
+攏>lŏng|\ ;
+攍>xian|\ ;
+攊>huăn|\ ;
+攇>xiăn|\ ;
+攆>niăn|\ ;
+攁>yăng|\ ;
+擶>jiàn|\ ;
+擰>níng|\ ;
+擓>kuăi|\ ;
+擐>huàn|\ ;
+擏>jìng|\ ;
+擋>dăng|\ ;
+擉>chuo|\ ;
+擆>zhuó|\ ;
+擁>yong|\ ;
+撿>jiăn|\ ;
+撾>zhua|\ ;
+撽>qiào|\ ;
+撹>jiăo|\ ;
+撯>suàn|\ ;
+撨>liao|\ ;
+撟>jiăo|\ ;
+撚>niăn|\ ;
+撔>hèng|\ ;
+撍>xián|\ ;
+撋>ruán|\ ;
+撊>xiàn|\ ;
+撁>qian|\ ;
+摽>biao|\ ;
+摼>biao|\ ;
+摻>chan|\ ;
+摷>jiăo|\ ;
+摶>tuán|\ ;
+摲>shàn|\ ;
+摬>yìng|\ ;
+摥>tàng|\ ;
+摠>zŏng|\ ;
+摜>guàn|\ ;
+摚>táng|\ ;
+摓>féng|\ ;
+摎>liáo|\ ;
+摌>chăn|\ ;
+摃>gang|\ ;
+搼>quán|\ ;
+搷>shen|\ ;
+搧>shan|\ ;
+搥>chuí|\ ;
+搟>xiăn|\ ;
+搒>bèng|\ ;
+搑>bàng|\ ;
+搌>zhăn|\ ;
+搊>chou|\ ;
+搈>yŏng|\ ;
+搄>geng|\ ;
+揵>qián|\ ;
+揱>shuò|\ ;
+揯>geng|\ ;
+揝>zuàn|\ ;
+換>huàn|\ ;
+揚>yáng|\ ;
+揙>biàn|\ ;
+揘>héng|\ ;
+揕>zhèn|\ ;
+揔>zŏng|\ ;
+揈>hong|\ ;
+揃>jian|\ ;
+揁>zhen|\ ;
+揀>jiăn|\ ;
+掽>pèng|\ ;
+掻>jiăn|\ ;
+掱>shŏu|\ ;
+掤>bing|\ ;
+掞>shàn|\ ;
+掕>lìng|\ ;
+掔>qian|\ ;
+掆>gang|\ ;
+捵>chĕn|\ ;
+捴>zŏng|\ ;
+捳>chen|\ ;
+捲>juăn|\ ;
+捰>quán|\ ;
+捠>bang|\ ;
+捚>zhai|\ ;
+捖>huán|\ ;
+捒>sŏng|\ ;
+捁>jiăo|\ ;
+捀>feng|\ ;
+挻>shan|\ ;
+挸>jiăn|\ ;
+挷>péng|\ ;
+挵>lòng|\ ;
+挳>keng|\ ;
+挭>gĕng|\ ;
+挩>shuì|\ ;
+挏>dòng|\ ;
+挍>jiào|\ ;
+挋>zhèn|\ ;
+挊>nòng|\ ;
+拲>gŏng|\ ;
+拑>qián|\ ;
+抺>chen|\ ;
+抰>yăng|\ ;
+抦>bĭng|\ ;
+抌>zhĕn|\ ;
+抃>biàn|\ ;
+扟>shen|\ ;
+扚>diao|\ ;
+扄>shan|\ ;
+扂>diàn|\ ;
+戰>zhàn|\ ;
+戩>jiăn|\ ;
+戦>zhàn|\ ;
+戥>dĕng|\ ;
+戙>dòng|\ ;
+戔>jian|\ ;
+戅>gàng|\ ;
+戃>tăng|\ ;
+戀>liàn|\ ;
+懽>huan|\ ;
+懺>chàn|\ ;
+懹>ràng|\ ;
+懸>xuán|\ ;
+懷>huái|\ ;
+懴>chàn|\ ;
+懩>yăng|\ ;
+懤>chóu|\ ;
+懞>méng|\ ;
+懜>mèng|\ ;
+懐>huái|\ ;
+應>ying|\ ;
+懁>huán|\ ;
+憿>jiao|\ ;
+憽>song|\ ;
+憼>jĭng|\ ;
+憸>xian|\ ;
+憲>xiàn|\ ;
+憭>liăo|\ ;
+憪>xián|\ ;
+憢>xiao|\ ;
+憑>píng|\ ;
+憐>lián|\ ;
+憍>jiao|\ ;
+憌>chún|\ ;
+憉>péng|\ ;
+憅>tòng|\ ;
+憁>cong|\ ;
+憀>liáo|\ ;
+慿>píng|\ ;
+慻>juàn|\ ;
+慶>qìng|\ ;
+慳>qian|\ ;
+慱>tuán|\ ;
+慮>lu\:̀|\ ;
+慫>sŏng|\ ;
+慩>lián|\ ;
+慣>guàn|\ ;
+慟>tòng|\ ;
+慓>piào|\ ;
+慒>cóng|\ ;
+慏>mĭng|\ ;
+慃>yăng|\ ;
+慂>yŏng|\ ;
+愹>yŏng|\ ;
+愯>sŏng|\ ;
+愩>gong|\ ;
+愡>lèng|\ ;
+愖>chén|\ ;
+愓>dàng|\ ;
+愑>yŏng|\ ;
+愐>miăn|\ ;
+愌>huàn|\ ;
+愋>xuan|\ ;
+愃>xuan|\ ;
+惾>zong|\ ;
+惼>biăn|\ ;
+惷>chŭn|\ ;
+惥>yŏng|\ ;
+惤>jian|\ ;
+惙>chuò|\ ;
+惓>quán|\ ;
+惌>yuan|\ ;
+惉>chan|\ ;
+悿>tiăn|\ ;
+悾>kong|\ ;
+悺>guàn|\ ;
+悹>guàn|\ ;
+悰>cóng|\ ;
+悤>cong|\ ;
+悙>heng|\ ;
+悓>qiàn|\ ;
+悁>juan|\ ;
+悀>yŏng|\ ;
+恾>máng|\ ;
+恲>peng|\ ;
+恮>quán|\ ;
+恠>guài|\ ;
+恔>xiào|\ ;
+恌>tiao|\ ;
+恆>héng|\ ;
+怲>bĭng|\ ;
+怱>cong|\ ;
+怰>xuàn|\ ;
+怞>chou|\ ;
+怊>chao|\ ;
+忼>kang|\ ;
+忺>xian|\ ;
+忩>cong|\ ;
+応>ying|\ ;
+忊>dìng|\ ;
+徿>lòng|\ ;
+徺>jiăo|\ ;
+徱>piào|\ ;
+徰>biao|\ ;
+徬>páng|\ ;
+徧>biàn|\ ;
+徤>jiàn|\ ;
+從>cong|\ ;
+徖>cóng|\ ;
+従>cóng|\ ;
+徑>jìng|\ ;
+徃>wăng|\ ;
+彾>lĭng|\ ;
+彺>wáng|\ ;
+彸>wàng|\ ;
+彴>zhuó|\ ;
+彯>piao|\ ;
+彮>yŏng|\ ;
+彫>diao|\ ;
+彡>shan|\ ;
+彋>hóng|\ ;
+彇>xiao|\ ;
+弿>jiăn|\ ;
+弸>beng|\ ;
+弳>jìng|\ ;
+弲>xuan|\ ;
+弰>shao|\ ;
+弮>quan|\ ;
+弫>zhĕn|\ ;
+弪>jìng|\ ;
+弨>chao|\ ;
+弞>shĕn|\ ;
+弔>diào|\ ;
+弉>zàng|\ ;
+廾>gŏng|\ ;
+廳>ting|\ ;
+廱>yong|\ ;
+廰>ting|\ ;
+廯>xian|\ ;
+廮>yíng|\ ;
+廫>liáo|\ ;
+廥>kuài|\ ;
+廟>miào|\ ;
+廎>qĭng|\ ;
+廌>jiàn|\ ;
+庿>miào|\ ;
+庺>song|\ ;
+庰>ding|\ ;
+庬>páng|\ ;
+庨>xiao|\ ;
+庣>tiao|\ ;
+庝>tóng|\ ;
+庁>ting|\ ;
+幷>bing|\ ;
+幵>qian|\ ;
+幰>xiăn|\ ;
+幬>chóu|\ ;
+幫>bang|\ ;
+幪>méng|\ ;
+幨>chan|\ ;
+幧>qiao|\ ;
+幝>chăn|\ ;
+幚>bang|\ ;
+幖>biao|\ ;
+幓>shan|\ ;
+幐>jĭng|\ ;
+幊>gong|\ ;
+幈>píng|\ ;
+幇>bang|\ ;
+帲>jian|\ ;
+帱>chóu|\ ;
+帪>zhen|\ ;
+帩>qiào|\ ;
+帨>shuì|\ ;
+帣>juàn|\ ;
+帡>píng|\ ;
+帄>ding|\ ;
+巻>juàn|\ ;
+巸>juăn|\ ;
+巶>zhao|\ ;
+巣>cháo|\ ;
+巠>jing|\ ;
+巔>dian|\ ;
+巓>dian|\ ;
+巒>luán|\ ;
+巑>cuán|\ ;
+巐>chăo|\ ;
+巏>quán|\ ;
+巊>yĭng|\ ;
+巉>chán|\ ;
+巆>yíng|\ ;
+巄>lóng|\ ;
+巃>lóng|\ ;
+嶺>lĭng|\ ;
+嶸>róng|\ ;
+嶮>xiăn|\ ;
+嶦>zhan|\ ;
+嶣>qiáo|\ ;
+嶠>jiào|\ ;
+嶛>liáo|\ ;
+嶚>liáo|\ ;
+嶘>zhàn|\ ;
+嶕>jiao|\ ;
+嶒>céng|\ ;
+嶐>lóng|\ ;
+嶄>zhăn|\ ;
+嶃>zhăn|\ ;
+嵿>dĭng|\ ;
+嵼>chăn|\ ;
+嵻>kang|\ ;
+嵸>zong|\ ;
+嵷>sŏng|\ ;
+嵱>yŏng|\ ;
+嵮>dian|\ ;
+嵭>beng|\ ;
+嵪>qiao|\ ;
+嵤>hóng|\ ;
+嵣>dang|\ ;
+嵢>cang|\ ;
+嵏>zong|\ ;
+嵉>tíng|\ ;
+嵈>huăn|\ ;
+嵂>lu\:̀|\ ;
+崶>feng|\ ;
+崵>yáng|\ ;
+崬>dong|\ ;
+崠>dong|\ ;
+崚>léng|\ ;
+崘>dòng|\ ;
+崗>găng|\ ;
+崄>xiăn|\ ;
+崀>làng|\ ;
+峺>gĕng|\ ;
+峷>shen|\ ;
+峵>hóng|\ ;
+峴>xiàn|\ ;
+峯>feng|\ ;
+峧>jiao|\ ;
+峞>qiáo|\ ;
+峝>tóng|\ ;
+峚>dòng|\ ;
+峑>quán|\ ;
+峂>tóng|\ ;
+岽>dong|\ ;
+岺>líng|\ ;
+岹>tiáo|\ ;
+岧>tiáo|\ ;
+岡>gang|\ ;
+岟>yăng|\ ;
+岒>qián|\ ;
+岏>yuán|\ ;
+岍>qian|\ ;
+岄>gang|\ ;
+屾>shen|\ ;
+屸>lóng|\ ;
+屳>xian|\ ;
+屪>liáo|\ ;
+層>céng|\ ;
+屢>lu\:̆|\ ;
+屛>píng|\ ;
+屒>chén|\ ;
+屌>diăo|\ ;
+屇>tián|\ ;
+尫>wang|\ ;
+尪>wang|\ ;
+尨>máng|\ ;
+尦>liào|\ ;
+尣>méng|\ ;
+尠>xiăn|\ ;
+尟>xiăn|\ ;
+尞>liào|\ ;
+尛>liáo|\ ;
+寷>feng|\ ;
+寬>kuan|\ ;
+審>shĕn|\ ;
+寧>níng|\ ;
+寜>níng|\ ;
+寛>kuan|\ ;
+寘>nìng|\ ;
+寗>níng|\ ;
+寕>níng|\ ;
+寏>huán|\ ;
+寎>bìng|\ ;
+寍>níng|\ ;
+寋>jiăn|\ ;
+寊>zhen|\ ;
+寈>qing|\ ;
+寃>yuan|\ ;
+宯>xiao|\ ;
+宮>gong|\ ;
+宨>tiăo|\ ;
+宖>hóng|\ ;
+宔>yuan|\ ;
+宒>zhun|\ ;
+宑>jĭng|\ ;
+宂>rŏng|\ ;
+孿>luán|\ ;
+孾>ying|\ ;
+孯>qian|\ ;
+孮>cóng|\ ;
+孌>luán|\ ;
+孉>quán|\ ;
+孆>liàn|\ ;
+孅>xian|\ ;
+孂>jiăo|\ ;
+孁>líng|\ ;
+嬽>yuan|\ ;
+嬹>xìng|\ ;
+嬸>shĕn|\ ;
+嬵>mián|\ ;
+嬳>qian|\ ;
+嬰>ying|\ ;
+嬯>niăo|\ ;
+嬫>yong|\ ;
+嬦>chóu|\ ;
+嬥>tiăo|\ ;
+嬣>néng|\ ;
+嬞>dŏng|\ ;
+嬝>niăo|\ ;
+嬜>tiáo|\ ;
+嬛>huán|\ ;
+嬚>liăn|\ ;
+嬓>jiào|\ ;
+嬐>xian|\ ;
+嬌>jiao|\ ;
+嬋>chán|\ ;
+嬁>deng|\ ;
+嫾>lián|\ ;
+嫽>liáo|\ ;
+嫻>xián|\ ;
+嫺>xián|\ ;
+嫸>zhăn|\ ;
+嫶>jiáo|\ ;
+嫞>yóng|\ ;
+嫝>kang|\ ;
+嫙>xuán|\ ;
+嫏>láng|\ ;
+嫎>páng|\ ;
+嫋>niăo|\ ;
+嫈>ying|\ ;
+嫇>míng|\ ;
+嫆>yóng|\ ;
+嫄>yuán|\ ;
+嫃>zhen|\ ;
+嫀>piao|\ ;
+媶>róng|\ ;
+媴>yuán|\ ;
+媥>pian|\ ;
+媡>liàn|\ ;
+媗>xuan|\ ;
+媖>ying|\ ;
+媔>mián|\ ;
+媏>duan|\ ;
+媋>chun|\ ;
+媊>qián|\ ;
+媆>ruăn|\ ;
+婼>chuò|\ ;
+婸>dàng|\ ;
+婱>xián|\ ;
+婰>diăn|\ ;
+婥>chuò|\ ;
+婤>zhou|\ ;
+婡>chuò|\ ;
+婞>xìng|\ ;
+婝>diàn|\ ;
+婜>qian|\ ;
+婛>jing|\ ;
+婙>jìng|\ ;
+婘>quán|\ ;
+婖>tian|\ ;
+婑>juàn|\ ;
+婋>xiao|\ ;
+婈>díng|\ ;
+婃>cóng|\ ;
+婂>mián|\ ;
+娻>dong|\ ;
+娺>zhui|\ ;
+娹>xián|\ ;
+娷>shuì|\ ;
+娙>xíng|\ ;
+娗>dìng|\ ;
+娖>chuò|\ ;
+娏>máng|\ ;
+娎>xiào|\ ;
+娋>shào|\ ;
+娊>xiàn|\ ;
+娂>hóng|\ ;
+娀>song|\ ;
+姾>quan|\ ;
+姺>xiăn|\ ;
+姳>mĭng|\ ;
+姮>héng|\ ;
+姭>xiàn|\ ;
+姩>niàn|\ ;
+姧>jian|\ ;
+姦>jian|\ ;
+姢>juan|\ ;
+姛>tŏng|\ ;
+姕>jiăo|\ ;
+姎>yang|\ ;
+姍>shan|\ ;
+姈>líng|\ ;
+妽>shen|\ ;
+妶>xuán|\ ;
+妱>zhao|\ ;
+妧>yuán|\ ;
+妦>feng|\ ;
+妔>keng|\ ;
+妌>jìng|\ ;
+妅>hóng|\ ;
+奷>qian|\ ;
+奵>ding|\ ;
+奱>lián|\ ;
+奩>lián|\ ;
+奣>wĕng|\ ;
+奟>keng|\ ;
+奝>diao|\ ;
+奐>huàn|\ ;
+奌>diăn|\ ;
+奆>quăn|\ ;
+夬>guài|\ ;
+夦>chèn|\ ;
+夢>mèng|\ ;
+夝>qíng|\ ;
+夗>yuàn|\ ;
+夌>líng|\ ;
+変>biàn|\ ;
+夆>féng|\ ;
+夀>shòu|\ ;
+壾>măng|\ ;
+壽>shòu|\ ;
+壧>qiào|\ ;
+壠>lŏng|\ ;
+壟>lŏng|\ ;
+壞>huài|\ ;
+壖>ruán|\ ;
+壍>qiàn|\ ;
+壌>răng|\ ;
+壋>dàng|\ ;
+壊>huài|\ ;
+壂>diàn|\ ;
+墽>qiao|\ ;
+墱>dèng|\ ;
+墥>dŏng|\ ;
+墤>kuài|\ ;
+墡>shàn|\ ;
+墠>shàn|\ ;
+墝>qiao|\ ;
+墜>zhuì|\ ;
+増>zeng|\ ;
+墋>chĕn|\ ;
+墊>diàn|\ ;
+墇>yóng|\ ;
+墂>biao|\ ;
+塹>qiàn|\ ;
+塵>chén|\ ;
+塴>bèng|\ ;
+塱>lăng|\ ;
+塨>gong|\ ;
+塦>zhèn|\ ;
+塡>tián|\ ;
+塝>bàng|\ ;
+塜>péng|\ ;
+塕>wĕng|\ ;
+塎>yŏng|\ ;
+塋>yíng|\ ;
+塊>kuai|\ ;
+塇>xuan|\ ;
+塅>duàn|\ ;
+堿>jiăn|\ ;
+堽>gang|\ ;
+堼>feng|\ ;
+堻>zhen|\ ;
+堸>chun|\ ;
+堫>zong|\ ;
+堧>ruán|\ ;
+堜>liàn|\ ;
+堎>líng|\ ;
+堋>péng|\ ;
+堈>gang|\ ;
+堅>jian|\ ;
+埻>zhŭn|\ ;
+埲>bĕng|\ ;
+埬>dong|\ ;
+埪>kong|\ ;
+埩>bàng|\ ;
+埢>juăn|\ ;
+埍>xuàn|\ ;
+埌>làng|\ ;
+埇>yŏng|\ ;
+埅>fáng|\ ;
+埄>péng|\ ;
+埀>chuí|\ ;
+垹>bang|\ ;
+垷>xiàn|\ ;
+垶>xing|\ ;
+垱>dàng|\ ;
+垬>hóng|\ ;
+垨>diàn|\ ;
+垟>yáng|\ ;
+垗>zhào|\ ;
+坽>líng|\ ;
+坱>yang|\ ;
+坫>diàn|\ ;
+坙>jing|\ ;
+坕>jing|\ ;
+坓>xíng|\ ;
+坈>fáng|\ ;
+圵>dàng|\ ;
+圴>zhuó|\ ;
+圲>qian|\ ;
+圢>ting|\ ;
+圞>luán|\ ;
+圝>luán|\ ;
+團>tuán|\ ;
+圓>yuán|\ ;
+園>yuán|\ ;
+圏>quan|\ ;
+圎>yuán|\ ;
+圌>chuí|\ ;
+圊>qing|\ ;
+図>juàn|\ ;
+囲>tong|\ ;
+囪>cong|\ ;
+囨>pian|\ ;
+囦>yuan|\ ;
+囥>kàng|\ ;
+団>tuán|\ ;
+囏>jian|\ ;
+囆>chài|\ ;
+囅>chăn|\ ;
+囂>xiao|\ ;
+嚾>huan|\ ;
+嚽>chuò|\ ;
+嚻>xiao|\ ;
+嚸>diăn|\ ;
+嚶>ying|\ ;
+嚵>chán|\ ;
+嚫>chèn|\ ;
+嚨>lóng|\ ;
+嚋>chóu|\ ;
+嚀>níng|\ ;
+噹>dang|\ ;
+噲>kuài|\ ;
+噮>yuan|\ ;
+噭>jiào|\ ;
+噥>nóng|\ ;
+噣>zhòu|\ ;
+噟>yìng|\ ;
+噒>lián|\ ;
+嘺>chăn|\ ;
+嘵>xiao|\ ;
+嘯>xiào|\ ;
+嘨>xiào|\ ;
+嘦>jiào|\ ;
+嘐>xiao|\ ;
+嘋>xiao|\ ;
+嘄>jiao|\ ;
+嘂>jiào|\ ;
+嗹>lián|\ ;
+嗛>xián|\ ;
+嗙>păng|\ ;
+嗕>qiăn|\ ;
+嗊>hŏng|\ ;
+嗈>yong|\ ;
+営>yíng|\ ;
+單>chán|\ ;
+喬>qiáo|\ ;
+喪>sang|\ ;
+喛>huàn|\ ;
+喚>huàn|\ ;
+喍>chái|\ ;
+啺>táng|\ ;
+啴>chăn|\ ;
+啳>quán|\ ;
+啨>qing|\ ;
+啣>xián|\ ;
+啋>xiao|\ ;
+啈>hèng|\ ;
+唸>niàn|\ ;
+唩>bĕng|\ ;
+唝>hŏng|\ ;
+唕>gòng|\ ;
+唍>huăn|\ ;
+唌>xián|\ ;
+哾>shuo|\ ;
+哯>xiàn|\ ;
+哫>láng|\ ;
+哤>máng|\ ;
+哢>lòng|\ ;
+員>yuán|\ ;
+哃>tóng|\ ;
+咾>hŏng|\ ;
+咺>xuăn|\ ;
+咶>huài|\ ;
+咮>zhòu|\ ;
+咞>xiàn|\ ;
+咗>xián|\ ;
+咉>yang|\ ;
+呺>xiao|\ ;
+呯>píng|\ ;
+呪>zhòu|\ ;
+呍>hong|\ ;
+呌>jiào|\ ;
+呂>lu\:̆|\ ;
+吽>hong|\ ;
+吷>chui|\ ;
+吰>hóng|\ ;
+吜>chŏu|\ ;
+吅>xuan|\ ;
+叿>hong|\ ;
+叢>cóng|\ ;
+叕>zhuó|\ ;
+叏>guài|\ ;
+厷>gong|\ ;
+厵>yuán|\ ;
+厧>dian|\ ;
+厛>ting|\ ;
+厖>páng|\ ;
+厐>páng|\ ;
+卲>shào|\ ;
+卄>niàn|\ ;
+匴>suăn|\ ;
+匳>lián|\ ;
+匲>lián|\ ;
+匨>zang|\ ;
+匥>biàn|\ ;
+匟>kàng|\ ;
+匚>fang|\ ;
+匑>gong|\ ;
+匉>peng|\ ;
+勸>quàn|\ ;
+勷>ráng|\ ;
+勭>tóng|\ ;
+勬>juàn|\ ;
+勨>yăng|\ ;
+勧>quàn|\ ;
+勦>chao|\ ;
+勡>piào|\ ;
+勜>wĕng|\ ;
+動>dòng|\ ;
+勔>miăn|\ ;
+勍>qíng|\ ;
+勌>juàn|\ ;
+勈>yŏng|\ ;
+勆>láng|\ ;
+効>xiào|\ ;
+劷>yáng|\ ;
+劵>juàn|\ ;
+劰>miăo|\ ;
+劥>keng|\ ;
+劗>cuán|\ ;
+劖>chán|\ ;
+劔>jiàn|\ ;
+劒>jiàn|\ ;
+劏>tang|\ ;
+劎>jiàn|\ ;
+劍>jiàn|\ ;
+劋>jiăo|\ ;
+劆>lián|\ ;
+剼>shan|\ ;
+剹>chao|\ ;
+剸>tuán|\ ;
+剷>chăn|\ ;
+剶>juan|\ ;
+剱>jiàn|\ ;
+剬>duan|\ ;
+剦>tuán|\ ;
+剣>jiàn|\ ;
+剠>qíng|\ ;
+剛>gang|\ ;
+剗>chăn|\ ;
+剈>yuan|\ ;
+剄>jĭng|\ ;
+刬>chăn|\ ;
+刪>shan|\ ;
+刢>líng|\ ;
+刋>qiàn|\ ;
+凼>dàng|\ ;
+凷>kuài|\ ;
+凴>píng|\ ;
+凮>feng|\ ;
+凬>feng|\ ;
+凨>feng|\ ;
+凕>mĭng|\ ;
+凔>cang|\ ;
+凍>dòng|\ ;
+凊>jìng|\ ;
+凈>jìng|\ ;
+冿>jian|\ ;
+冮>gang|\ ;
+冫>bing|\ ;
+冡>méng|\ ;
+冑>zhòu|\ ;
+円>yuan|\ ;
+冁>chăn|\ ;
+兲>tian|\ ;
+兦>wáng|\ ;
+兟>shen|\ ;
+兛>qian|\ ;
+儾>nàng|\ ;
+儻>tăng|\ ;
+儴>ráng|\ ;
+儳>chàn|\ ;
+儱>lŏng|\ ;
+儯>téng|\ ;
+儭>chèn|\ ;
+儬>chèn|\ ;
+儦>biao|\ ;
+儜>níng|\ ;
+儚>méng|\ ;
+儙>qiàn|\ ;
+儕>chái|\ ;
+儔>chóu|\ ;
+儌>jiăo|\ ;
+儉>jiăn|\ ;
+儈>kuài|\ ;
+儅>dang|\ ;
+儃>chán|\ ;
+儂>nóng|\ ;
+僽>zhòu|\ ;
+僼>feng|\ ;
+僺>qiào|\ ;
+僴>xiàn|\ ;
+僬>jiao|\ ;
+僩>xiàn|\ ;
+僥>jiăo|\ ;
+僣>jiàn|\ ;
+僝>chán|\ ;
+僜>dèng|\ ;
+僑>qiáo|\ ;
+僐>shàn|\ ;
+働>dòng|\ ;
+僌>yíng|\ ;
+僊>xian|\ ;
+僉>qian|\ ;
+僆>lián|\ ;
+僄>piào|\ ;
+傾>qing|\ ;
+傹>jìng|\ ;
+債>zhài|\ ;
+傱>sŏng|\ ;
+傰>péng|\ ;
+傯>zŏng|\ ;
+傭>yong|\ ;
+傡>bìng|\ ;
+傟>yăng|\ ;
+傛>yŏng|\ ;
+傚>xiào|\ ;
+傖>cang|\ ;
+傔>qiàn|\ ;
+傏>táng|\ ;
+傎>dian|\ ;
+傇>rŏng|\ ;
+傆>páng|\ ;
+偵>zhen|\ ;
+偳>duan|\ ;
+偭>miăn|\ ;
+偢>chŏu|\ ;
+偡>zhàn|\ ;
+偒>tăng|\ ;
+偑>feng|\ ;
+偋>bĭng|\ ;
+偆>chŭn|\ ;
+偄>nuàn|\ ;
+偂>jian|\ ;
+偀>ying|\ ;
+倹>jiăn|\ ;
+倲>dong|\ ;
+倰>léng|\ ;
+倯>song|\ ;
+倧>zong|\ ;
+値>kŏng|\ ;
+倣>făng|\ ;
+倞>jìng|\ ;
+倗>péng|\ ;
+倖>xìng|\ ;
+倎>tian|\ ;
+倊>zòng|\ ;
+倉>cang|\ ;
+倂>bìng|\ ;
+俿>jiàn|\ ;
+俵>biăo|\ ;
+俴>jiàn|\ ;
+俲>xiào|\ ;
+俛>miăn|\ ;
+俔>xiàn|\ ;
+俓>jìng|\ ;
+俍>láng|\ ;
+侺>shèn|\ ;
+侹>tĭng|\ ;
+侶>lu\:̆|\ ;
+侴>chŏu|\ ;
+侲>zhèn|\ ;
+侫>nìng|\ ;
+侟>jiàn|\ ;
+侜>zhou|\ ;
+侁>shen|\ ;
+侀>xíng|\ ;
+佺>quán|\ ;
+併>bìng|\ ;
+佲>míng|\ ;
+佡>xuan|\ ;
+佔>zhan|\ ;
+佒>yang|\ ;
+佋>shào|\ ;
+佂>tián|\ ;
+伻>beng|\ ;
+伷>zhòu|\ ;
+伭>xuán|\ ;
+伣>xiàn|\ ;
+伖>tăng|\ ;
+伄>diào|\ ;
+仺>cang|\ ;
+仹>feng|\ ;
+仦>chào|\ ;
+仜>hóng|\ ;
+仚>xian|\ ;
+仌>bing|\ ;
+亾>wáng|\ ;
+亷>lián|\ ;
+亰>jing|\ ;
+亣>peng|\ ;
+亐>gèng|\ ;
+亂>luàn|\ ;
+乪>nang|\ ;
+丼>jĭng|\ ;
+丳>chăn|\ ;
+丱>guàn|\ ;
+丮>guàn|\ ;
+並>bìng|\ ;
+丒>chŏu|\ ;
+丏>miăn|\ ;
+䶱>tóng|\ ;
+䶢>xián|\ ;
+䶠>jiăn|\ ;
+䶟>xiàn|\ ;
+䶐>kuài|\ ;
+䶇>zhòu|\ ;
+䶄>píng|\ ;
+䶂>zhuó|\ ;
+䵺>tĭng|\ ;
+䵲>diào|\ ;
+䵯>tuăn|\ ;
+䵮>yàng|\ ;
+䵨>máng|\ ;
+䵤>jiăn|\ ;
+䵡>jiăn|\ ;
+䵞>jìng|\ ;
+䵜>nŏng|\ ;
+䵛>jiàn|\ ;
+䵖>jiàn|\ ;
+䵔>dŏng|\ ;
+䵐>chăn|\ ;
+䵇>xiàn|\ ;
+䵆>méng|\ ;
+䴿>méng|\ ;
+䴼>chăn|\ ;
+䴶>péng|\ ;
+䴵>bĭng|\ ;
+䴮>shàn|\ ;
+䴫>líng|\ ;
+䴩>piáo|\ ;
+䴟>huán|\ ;
+䴜>huái|\ ;
+䴛>jiăo|\ ;
+䴚>găng|\ ;
+䴒>líng|\ ;
+䴌>méng|\ ;
+䴋>xuán|\ ;
+䴉>xuán|\ ;
+䴇>líng|\ ;
+䴂>hàng|\ ;
+䴀>tóng|\ ;
+䳷>cóng|\ ;
+䳲>zhèn|\ ;
+䳪>juàn|\ ;
+䳣>yuán|\ ;
+䳠>chuí|\ ;
+䳞>bĕng|\ ;
+䳙>xĭng|\ ;
+䳒>yuán|\ ;
+䳋>tóng|\ ;
+䳂>tiáo|\ ;
+䲾>qiăo|\ ;
+䲻>xuán|\ ;
+䲴>zhèn|\ ;
+䲳>háng|\ ;
+䲱>făng|\ ;
+䲮>yuán|\ ;
+䲨>hóng|\ ;
+䲢>téng|\ ;
+䲛>méng|\ ;
+䲘>guăn|\ ;
+䲗>xián|\ ;
+䲖>chóu|\ ;
+䲔>qíng|\ ;
+䲍>téng|\ ;
+䲌>kuăn|\ ;
+䲂>xuán|\ ;
+䱿>chàn|\ ;
+䱼>zhăn|\ ;
+䱶>láng|\ ;
+䱴>gèng|\ ;
+䱭>gèng|\ ;
+䱤>xiàn|\ ;
+䱠>zhàn|\ ;
+䱔>tiáo|\ ;
+䱓>tíng|\ ;
+䱎>gèng|\ ;
+䱍>gèng|\ ;
+䱉>shàn|\ ;
+䱇>shàn|\ ;
+䱁>qiáo|\ ;
+䰷>bàng|\ ;
+䰱>líng|\ ;
+䰫>cháo|\ ;
+䰣>wăng|\ ;
+䰢>xìng|\ ;
+䰠>shén|\ ;
+䰝>zèng|\ ;
+䰖>cuán|\ ;
+䰓>mián|\ ;
+䰒>méng|\ ;
+䰌>zŏng|\ ;
+䰃>péng|\ ;
+䯾>tiáo|\ ;
+䯧>qĭng|\ ;
+䯤>kuài|\ ;
+䯡>jiăn|\ ;
+䯛>jiăn|\ ;
+䯘>huàn|\ ;
+䯖>láng|\ ;
+䯒>héng|\ ;
+䯍>líng|\ ;
+䮿>jiăn|\ ;
+䮾>páng|\ ;
+䮵>tóng|\ ;
+䮴>dèng|\ ;
+䮝>huán|\ ;
+䮚>lèng|\ ;
+䮕>chuò|\ ;
+䮓>zhào|\ ;
+䮍>niăo|\ ;
+䮄>xuán|\ ;
+䮁>pián|\ ;
+䭴>huán|\ ;
+䭰>bĕng|\ ;
+䭭>shŏu|\ ;
+䭨>shuì|\ ;
+䭤>qiăn|\ ;
+䭢>níng|\ ;
+䭠>jiăn|\ ;
+䭝>kuài|\ ;
+䭗>yĭng|\ ;
+䭕>jiàn|\ ;
+䭑>lián|\ ;
+䭐>yàng|\ ;
+䭊>yĭng|\ ;
+䭈>jiàn|\ ;
+䬼>yuàn|\ ;
+䬻>jiàn|\ ;
+䬺>yàng|\ ;
+䬰>shào|\ ;
+䬯>nián|\ ;
+䬬>yăng|\ ;
+䬧>yuán|\ ;
+䬤>cháo|\ ;
+䬝>héng|\ ;
+䬗>yáng|\ ;
+䬖>héng|\ ;
+䬋>léng|\ ;
+䬇>yuàn|\ ;
+䫺>hóng|\ ;
+䫹>hóng|\ ;
+䫵>mián|\ ;
+䫬>zhĕn|\ ;
+䫤>míng|\ ;
+䫡>qiàn|\ ;
+䫙>săng|\ ;
+䫖>chĕn|\ ;
+䫄>chuà|\ ;
+䫃>chún|\ ;
+䪻>biàn|\ ;
+䪴>zhĕn|\ ;
+䪯>yíng|\ ;
+䪮>chŏu|\ ;
+䪭>ruăn|\ ;
+䪦>hóng|\ ;
+䪜>chàn|\ ;
+䪒>jiào|\ ;
+䪌>zhàn|\ ;
+䪊>lóng|\ ;
+䪈>qiăn|\ ;
+䪀>guăn|\ ;
+䩼>féng|\ ;
+䩸>róng|\ ;
+䩶>chăn|\ ;
+䩰>xuàn|\ ;
+䩬>bĕng|\ ;
+䩪>guăn|\ ;
+䩩>yuăn|\ ;
+䩦>tiáo|\ ;
+䩞>nián|\ ;
+䩜>zhòu|\ ;
+䩙>xuàn|\ ;
+䩑>hóng|\ ;
+䩍>liăo|\ ;
+䩌>qiáo|\ ;
+䩆>jiăn|\ ;
+䩅>zhăn|\ ;
+䩄>tiăn|\ ;
+䨿>qián|\ ;
+䨻>bèng|\ ;
+䨷>xiàn|\ ;
+䨯>zhèn|\ ;
+䨬>lián|\ ;
+䨩>líng|\ ;
+䨦>páng|\ ;
+䨘>xiàn|\ ;
+䨎>hóng|\ ;
+䨍>yĭng|\ ;
+䨋>nyuè|\ ;
+䨅>liáo|\ ;
+䧯>chán|\ ;
+䧮>xiăn|\ ;
+䧟>xiàn|\ ;
+䧜>táng|\ ;
+䧛>bàng|\ ;
+䧙>líng|\ ;
+䧖>jiàn|\ ;
+䧎>xuàn|\ ;
+䧋>xiăn|\ ;
+䧆>hóng|\ ;
+䧃>diàn|\ ;
+䦳>hàng|\ ;
+䦲>qiàn|\ ;
+䦮>chŭn|\ ;
+䦥>xián|\ ;
+䦡>huán|\ ;
+䦒>dàng|\ ;
+䦐>tĭng|\ ;
+䦎>guăn|\ ;
+䦊>niăo|\ ;
+䦈>făng|\ ;
+䦅>shàn|\ ;
+䦂>shàn|\ ;
+䥵>xiăo|\ ;
+䥰>mèng|\ ;
+䥪>xiăn|\ ;
+䥧>huán|\ ;
+䥥>lián|\ ;
+䥢>lóng|\ ;
+䥞>jiăo|\ ;
+䥜>jiàn|\ ;
+䥗>kuăn|\ ;
+䥖>tián|\ ;
+䥒>chóu|\ ;
+䥎>chún|\ ;
+䥇>shàn|\ ;
+䥅>qiàn|\ ;
+䥂>mèng|\ ;
+䥀>chăn|\ ;
+䤼>xiàn|\ ;
+䤸>zuàn|\ ;
+䤰>wĕng|\ ;
+䤯>xíng|\ ;
+䤭>kuàn|\ ;
+䤫>chán|\ ;
+䤣>lyuè|\ ;
+䤟>chén|\ ;
+䤝>yìng|\ ;
+䤘>chăn|\ ;
+䤔>jiàn|\ ;
+䤓>méng|\ ;
+䤑>wàng|\ ;
+䤊>róng|\ ;
+䤄>miăn|\ ;
+䣩>chún|\ ;
+䣨>chún|\ ;
+䣤>jiào|\ ;
+䣣>dăng|\ ;
+䣘>táng|\ ;
+䣑>chán|\ ;
+䣊>dăng|\ ;
+䣈>hàng|\ ;
+䣆>xíng|\ ;
+䣅>chén|\ ;
+䢾>xiăn|\ ;
+䢻>chén|\ ;
+䢧>liào|\ ;
+䢢>càng|\ ;
+䢠>sòng|\ ;
+䢚>gòng|\ ;
+䢍>făng|\ ;
+䢉>nóng|\ ;
+䢈>chén|\ ;
+䢇>rŏng|\ ;
+䢅>chén|\ ;
+䡿>líng|\ ;
+䡼>líng|\ ;
+䡲>chán|\ ;
+䡰>kĕng|\ ;
+䡫>péng|\ ;
+䡪>chán|\ ;
+䡦>săng|\ ;
+䡥>róng|\ ;
+䡢>biàn|\ ;
+䡙>láng|\ ;
+䡘>tián|\ ;
+䡗>gŏng|\ ;
+䡖>jìng|\ ;
+䡓>juàn|\ ;
+䡒>tián|\ ;
+䡏>hóng|\ ;
+䡌>hóng|\ ;
+䡉>kăng|\ ;
+䡆>róng|\ ;
+䡁>lŏng|\ ;
+䡀>zhăn|\ ;
+䠾>shăn|\ ;
+䠼>diào|\ ;
+䠷>tiăo|\ ;
+䠲>líng|\ ;
+䠰>quán|\ ;
+䠮>téng|\ ;
+䠬>dèng|\ ;
+䠪>duàn|\ ;
+䠨>chàn|\ ;
+䠣>xuăn|\ ;
+䠢>mèng|\ ;
+䠜>róng|\ ;
+䠛>jiăo|\ ;
+䠄>tiăn|\ ;
+䟺>băng|\ ;
+䟴>zhèn|\ ;
+䟰>jiăn|\ ;
+䟭>tiáo|\ ;
+䟪>fĕng|\ ;
+䟧>tián|\ ;
+䟥>máng|\ ;
+䟢>chén|\ ;
+䟘>hàng|\ ;
+䟖>tàng|\ ;
+䟒>quán|\ ;
+䟍>dián|\ ;
+䟋>zhăn|\ ;
+䟅>jiàn|\ ;
+䞼>chuĭ|\ ;
+䞻>yŏng|\ ;
+䞒>dòng|\ ;
+䞑>hóng|\ ;
+䞐>chŭn|\ ;
+䞍>qíng|\ ;
+䞋>chèn|\ ;
+䞄>biào|\ ;
+䞂>ruăn|\ ;
+䞁>xiàn|\ ;
+䝼>qíng|\ ;
+䝺>guàn|\ ;
+䝮>xuàn|\ ;
+䝩>zhèn|\ ;
+䝨>xián|\ ;
+䝠>huán|\ ;
+䝖>zhăo|\ ;
+䝋>zòng|\ ;
+䝀>liáo|\ ;
+䜮>liáo|\ ;
+䜬>sŏng|\ ;
+䜫>hóng|\ ;
+䜢>xiăn|\ ;
+䜟>chén|\ ;
+䜝>tuăn|\ ;
+䜛>chán|\ ;
+䜘>jĭng|\ ;
+䜍>liáo|\ ;
+䜌>luán|\ ;
+䛵>shòu|\ ;
+䛳>jiăn|\ ;
+䛭>xìng|\ ;
+䛬>chóu|\ ;
+䛦>sòng|\ ;
+䛚>lyuè|\ ;
+䛒>biàn|\ ;
+䛇>yuăn|\ ;
+䛆>zhòu|\ ;
+䛄>yuăn|\ ;
+䛃>wàng|\ ;
+䚲>shàn|\ ;
+䚮>réng|\ ;
+䚩>jiăo|\ ;
+䚚>xiăn|\ ;
+䚘>chén|\ ;
+䚖>líng|\ ;
+䚓>niăn|\ ;
+䚏>lèng|\ ;
+䚈>juàn|\ ;
+䙼>shào|\ ;
+䙺>lián|\ ;
+䙮>guàn|\ ;
+䙬>yìng|\ ;
+䙪>lóng|\ ;
+䙩>méng|\ ;
+䙦>méng|\ ;
+䙥>líng|\ ;
+䙢>zèng|\ ;
+䙜>féng|\ ;
+䙛>guàn|\ ;
+䙚>niăo|\ ;
+䙇>nuăn|\ ;
+䙀>bĕng|\ ;
+䘾>guăn|\ ;
+䘺>zhàn|\ ;
+䘬>róng|\ ;
+䘩>xuàn|\ ;
+䘨>jiăo|\ ;
+䘕>háng|\ ;
+䘍>chài|\ ;
+䘆>xiăn|\ ;
+䗿>níng|\ ;
+䗾>xiăn|\ ;
+䗴>tíng|\ ;
+䗰>guàn|\ ;
+䗤>yóng|\ ;
+䗠>xuán|\ ;
+䗒>bìng|\ ;
+䗈>méng|\ ;
+䗆>guăn|\ ;
+䗃>zhàn|\ ;
+䖺>tiáo|\ ;
+䖹>yáng|\ ;
+䖭>juàn|\ ;
+䖫>bàng|\ ;
+䖢>miáo|\ ;
+䖠>yuán|\ ;
+䖟>măng|\ ;
+䖞>zhŏu|\ ;
+䖍>qián|\ ;
+䖅>líng|\ ;
+䖂>luán|\ ;
+䕺>cóng|\ ;
+䕴>zhuó|\ ;
+䕯>piáo|\ ;
+䕭>qián|\ ;
+䕨>téng|\ ;
+䕧>xiào|\ ;
+䕦>yíng|\ ;
+䕞>làng|\ ;
+䕘>líng|\ ;
+䕔>xián|\ ;
+䕀>kuăn|\ ;
+䔸>biăo|\ ;
+䔭>nìng|\ ;
+䔠>shăo|\ ;
+䔛>qĭng|\ ;
+䔚>chún|\ ;
+䔙>diào|\ ;
+䔖>líng|\ ;
+䔔>jìng|\ ;
+䔏>chòu|\ ;
+䓷>xìng|\ ;
+䓴>ruán|\ ;
+䓱>chái|\ ;
+䓦>diăn|\ ;
+䓝>méng|\ ;
+䓓>chóu|\ ;
+䓒>kuăi|\ ;
+䓑>bĭng|\ ;
+䓐>chún|\ ;
+䓎>chuò|\ ;
+䒸>xián|\ ;
+䒭>dĕng|\ ;
+䒪>biàn|\ ;
+䒞>chén|\ ;
+䒝>xiáo|\ ;
+䒛>héng|\ ;
+䒚>shăo|\ ;
+䒕>xiăo|\ ;
+䒒>tiáo|\ ;
+䒐>méng|\ ;
+䒎>măng|\ ;
+䒍>păng|\ ;
+䒌>mìng|\ ;
+䒋>yăng|\ ;
+䒅>téng|\ ;
+䑠>liăo|\ ;
+䑞>shùn|\ ;
+䑚>tián|\ ;
+䑗>dàng|\ ;
+䑐>zhĕn|\ ;
+䑏>quán|\ ;
+䑎>chăn|\ ;
+䑉>yíng|\ ;
+䑆>yăng|\ ;
+䑅>méng|\ ;
+䑃>méng|\ ;
+䐮>chăn|\ ;
+䐥>wĕng|\ ;
+䐏>chŭn|\ ;
+䐍>zhòu|\ ;
+䐌>tiăn|\ ;
+䐇>chún|\ ;
+䐁>niăo|\ ;
+䏻>néng|\ ;
+䏹>xiàn|\ ;
+䏵>mĕng|\ ;
+䏴>shào|\ ;
+䏝>chún|\ ;
+䏛>chŭn|\ ;
+䏚>chăo|\ ;
+䏖>zhèn|\ ;
+䏓>guăn|\ ;
+䏒>piàn|\ ;
+䏎>féng|\ ;
+䏍>yuàn|\ ;
+䏊>lóng|\ ;
+䏈>lián|\ ;
+䏇>piào|\ ;
+䏃>mián|\ ;
+䎻>zhŏu|\ ;
+䎧>bàng|\ ;
+䎡>nuăn|\ ;
+䎚>guàn|\ ;
+䎗>qiáo|\ ;
+䎒>zhăn|\ ;
+䎐>chăo|\ ;
+䎆>liào|\ ;
+䎄>tiáo|\ ;
+䍻>xuăn|\ ;
+䍺>huán|\ ;
+䍶>dòng|\ ;
+䍳>chuò|\ ;
+䍮>zhào|\ ;
+䍡>liào|\ ;
+䍟>zòng|\ ;
+䍜>zhào|\ ;
+䍚>làng|\ ;
+䍗>xuàn|\ ;
+䍔>hóng|\ ;
+䍋>chuí|\ ;
+䍉>qián|\ ;
+䍈>píng|\ ;
+䍅>líng|\ ;
+䍄>diăn|\ ;
+䌸>juàn|\ ;
+䌯>guàn|\ ;
+䌧>chóu|\ ;
+䌣>zuăn|\ ;
+䌢>líng|\ ;
+䌠>qìng|\ ;
+䌞>liăn|\ ;
+䌎>lyuè|\ ;
+䌅>táng|\ ;
+䌄>gĕng|\ ;
+䌃>shuò|\ ;
+䋽>bĕng|\ ;
+䋼>tĭng|\ ;
+䋞>wăng|\ ;
+䋜>qìng|\ ;
+䋘>chuò|\ ;
+䋓>zhòu|\ ;
+䋑>bĭng|\ ;
+䋎>zhàn|\ ;
+䋄>wăng|\ ;
+䋁>gĕng|\ ;
+䊽>guài|\ ;
+䊶>zhèn|\ ;
+䊴>qiàn|\ ;
+䊲>chăn|\ ;
+䊭>chóu|\ ;
+䊥>xiào|\ ;
+䊜>tuán|\ ;
+䊎>quăn|\ ;
+䊅>míng|\ ;
+䉼>liào|\ ;
+䉺>hóng|\ ;
+䉹>líng|\ ;
+䉸>biàn|\ ;
+䉴>ráng|\ ;
+䉳>xiăn|\ ;
+䉯>xiàn|\ ;
+䉥>sŏng|\ ;
+䉚>méng|\ ;
+䉘>cóng|\ ;
+䉖>líng|\ ;
+䉕>céng|\ ;
+䉎>táng|\ ;
+䉍>jiăn|\ ;
+䉆>diăo|\ ;
+䉄>léng|\ ;
+䉁>líng|\ ;
+䈾>shuò|\ ;
+䈶>róng|\ ;
+䈴>qiàn|\ ;
+䈭>huái|\ ;
+䈤>qián|\ ;
+䈠>huăn|\ ;
+䈛>kuài|\ ;
+䈙>zhòu|\ ;
+䈍>máng|\ ;
+䈊>líng|\ ;
+䈇>zhào|\ ;
+䈃>zhăo|\ ;
+䈂>bìng|\ ;
+䇺>chóu|\ ;
+䇯>róng|\ ;
+䇨>gòng|\ ;
+䇦>yăng|\ ;
+䇠>zhòu|\ ;
+䇟>jiàn|\ ;
+䇜>liăn|\ ;
+䇍>chuò|\ ;
+䇌>qiào|\ ;
+䇇>méng|\ ;
+䇀>róng|\ ;
+䆻>qiào|\ ;
+䆹>tŏng|\ ;
+䆯>chuò|\ ;
+䆩>míng|\ ;
+䆨>míng|\ ;
+䆦>shèn|\ ;
+䆣>chén|\ ;
+䆡>láng|\ ;
+䆠>huàn|\ ;
+䆚>tóng|\ ;
+䆘>cuán|\ ;
+䆗>jiào|\ ;
+䆖>hóng|\ ;
+䆍>lóng|\ ;
+䆄>shàn|\ ;
+䆂>lián|\ ;
+䅺>miăo|\ ;
+䅵>zhuó|\ ;
+䅯>táng|\ ;
+䅮>càng|\ ;
+䅭>páng|\ ;
+䅒>máng|\ ;
+䅐>jiăn|\ ;
+䅍>dòng|\ ;
+䅈>yuàn|\ ;
+䄽>tiăn|\ ;
+䄼>tiăn|\ ;
+䄻>cháo|\ ;
+䄹>nián|\ ;
+䄲>chuí|\ ;
+䄯>jiăn|\ ;
+䄭>nián|\ ;
+䄪>chuò|\ ;
+䄧>réng|\ ;
+䄦>liăo|\ ;
+䄥>líng|\ ;
+䄠>shàn|\ ;
+䄝>chŭn|\ ;
+䄙>míng|\ ;
+䄘>péng|\ ;
+䄓>héng|\ ;
+䄐>quàn|\ ;
+䄌>zhuì|\ ;
+䄅>juàn|\ ;
+䃸>xiàn|\ ;
+䃷>yíng|\ ;
+䃶>huái|\ ;
+䃵>niăo|\ ;
+䃱>xiàn|\ ;
+䃧>lóng|\ ;
+䃝>qiào|\ ;
+䃛>lián|\ ;
+䃗>chuò|\ ;
+䃔>hóng|\ ;
+䃍>zhào|\ ;
+䃇>mián|\ ;
+䂽>diào|\ ;
+䂯>guài|\ ;
+䂮>lyuè|\ ;
+䂬>gŏng|\ ;
+䂫>hóng|\ ;
+䂪>diào|\ ;
+䂧>zhĕn|\ ;
+䂦>zhĕn|\ ;
+䂢>dŏng|\ ;
+䂜>bàng|\ ;
+䂔>xìng|\ ;
+䂐>chuò|\ ;
+䂎>zuăn|\ ;
+䂈>tóng|\ ;
+䂇>náng|\ ;
+䂃>jiào|\ ;
+䂁>chán|\ ;
+䁸>nóng|\ ;
+䁶>jiăo|\ ;
+䁵>biăn|\ ;
+䁴>zhăn|\ ;
+䁳>măng|\ ;
+䁮>qián|\ ;
+䁬>céng|\ ;
+䁧>miáo|\ ;
+䁢>xuán|\ ;
+䁠>lián|\ ;
+䁝>yíng|\ ;
+䁑>yáng|\ ;
+䁐>yìng|\ ;
+䁄>xìng|\ ;
+䁂>xiàn|\ ;
+䁁>lăng|\ ;
+䀶>lăng|\ ;
+䀵>shùn|\ ;
+䀴>yĭng|\ ;
+䀮>máng|\ ;
+䀬>quán|\ ;
+䀪>háng|\ ;
+䀨>huàn|\ ;
+䀧>hŏng|\ ;
+䀥>shuò|\ ;
+䀢>shùn|\ ;
+䀡>chàn|\ ;
+䀓>huàn|\ ;
+䀏>xiàn|\ ;
+䀎>miăn|\ ;
+䀊>jiăo|\ ;
+䀉>qiáo|\ ;
+䀄>méng|\ ;
+㿮>yàng|\ ;
+㿪>huán|\ ;
+㿩>tăng|\ ;
+㿧>chóu|\ ;
+㿦>nìng|\ ;
+㿤>chŭn|\ ;
+㿘>yíng|\ ;
+㿅>xiăn|\ ;
+㾿>láng|\ ;
+㾾>lián|\ ;
+㾹>chái|\ ;
+㾭>zhòu|\ ;
+㾦>bàng|\ ;
+㾘>gĕng|\ ;
+㾗>lăng|\ ;
+㾕>shĕn|\ ;
+㾌>xuăn|\ ;
+㾉>líng|\ ;
+㽸>chén|\ ;
+㽷>shuì|\ ;
+㽲>jiăo|\ ;
+㽱>jiăo|\ ;
+㽭>ruăn|\ ;
+㽫>yŏng|\ ;
+㽪>zĕng|\ ;
+㽘>găng|\ ;
+㽇>guài|\ ;
+㼿>tóng|\ ;
+㼼>piáo|\ ;
+㼻>cóng|\ ;
+㼺>táng|\ ;
+㼸>róng|\ ;
+㼱>ruăn|\ ;
+㼯>dòng|\ ;
+㼭>diàn|\ ;
+㼬>xìng|\ ;
+㼫>huàn|\ ;
+㼧>tóng|\ ;
+㼦>gŏng|\ ;
+㼞>pèng|\ ;
+㼛>xíng|\ ;
+㼙>zhòu|\ ;
+㼗>dĭng|\ ;
+㼓>lián|\ ;
+㼑>liàn|\ ;
+㼐>pián|\ ;
+㻵>zhàn|\ ;
+㻰>miăn|\ ;
+㻞>biàn|\ ;
+㻏>líng|\ ;
+㻊>máng|\ ;
+㻂>píng|\ ;
+㺹>biàn|\ ;
+㺸>píng|\ ;
+㺱>réng|\ ;
+㺬>gŏng|\ ;
+㺦>lián|\ ;
+㺥>chán|\ ;
+㺟>zhuó|\ ;
+㺝>jiàn|\ ;
+㺘>zhàn|\ ;
+㺓>piào|\ ;
+㺒>liào|\ ;
+㺐>zhăo|\ ;
+㺎>róng|\ ;
+㺌>xiàn|\ ;
+㺊>yàng|\ ;
+㹿>diăo|\ ;
+㹾>piăo|\ ;
+㹽>chăn|\ ;
+㹶>tíng|\ ;
+㹵>jìng|\ ;
+㹲>xiào|\ ;
+㹡>xuán|\ ;
+㹚>yíng|\ ;
+㹙>yíng|\ ;
+㹖>huàn|\ ;
+㹌>chăn|\ ;
+㹉>yuán|\ ;
+㹅>zŏng|\ ;
+㸳>líng|\ ;
+㸫>qián|\ ;
+㸪>chún|\ ;
+㸥>chán|\ ;
+㸤>piàn|\ ;
+㸠>tiăo|\ ;
+㸜>kòng|\ ;
+㸛>sháo|\ ;
+㸗>tóng|\ ;
+㸑>cuàn|\ ;
+㸃>diăn|\ ;
+㷹>shào|\ ;
+㷷>juăn|\ ;
+㷯>bèng|\ ;
+㷫>qĭng|\ ;
+㷖>zhào|\ ;
+㷓>zŏng|\ ;
+㷏>yŏng|\ ;
+㷇>guài|\ ;
+㷅>chăo|\ ;
+㶺>tiàn|\ ;
+㶹>hòng|\ ;
+㶶>nóng|\ ;
+㶲>yòng|\ ;
+㶫>liăo|\ ;
+㶤>chăo|\ ;
+㶣>chán|\ ;
+㶞>năng|\ ;
+㶘>diàn|\ ;
+㶕>jiăn|\ ;
+㶓>cáng|\ ;
+㶒>shăn|\ ;
+㶑>liàn|\ ;
+㶎>huán|\ ;
+㶍>xiăn|\ ;
+㶌>lián|\ ;
+㶇>héng|\ ;
+㵾>jìng|\ ;
+㵹>huán|\ ;
+㵷>biàn|\ ;
+㵴>cáng|\ ;
+㵳>liáo|\ ;
+㵱>piăo|\ ;
+㵯>féng|\ ;
+㵮>chún|\ ;
+㵬>yíng|\ ;
+㵪>xián|\ ;
+㵤>diàn|\ ;
+㵞>chóu|\ ;
+㵕>shèn|\ ;
+㵌>chàn|\ ;
+㵊>shĕn|\ ;
+㵀>cuàn|\ ;
+㴿>dĭng|\ ;
+㴴>chén|\ ;
+㴳>lŏng|\ ;
+㴰>néng|\ ;
+㴨>zhèn|\ ;
+㴦>guàn|\ ;
+㴥>qiào|\ ;
+㴜>biàn|\ ;
+㴐>miàn|\ ;
+㴏>wăng|\ ;
+㴄>yíng|\ ;
+㳹>wăng|\ ;
+㳮>niào|\ ;
+㳭>xián|\ ;
+㳬>xuán|\ ;
+㳨>jiăn|\ ;
+㳙>xuàn|\ ;
+㳗>chài|\ ;
+㳒>biàn|\ ;
+㳎>biàn|\ ;
+㳅>jiăo|\ ;
+㳄>xián|\ ;
+㲿>wăng|\ ;
+㲽>niàn|\ ;
+㲰>níng|\ ;
+㲨>róng|\ ;
+㲥>táng|\ ;
+㲢>biàn|\ ;
+㲟>yĭng|\ ;
+㲝>rŏng|\ ;
+㲓>róng|\ ;
+㲌>nèng|\ ;
+㲋>chuò|\ ;
+㲈>sháo|\ ;
+㲆>líng|\ ;
+㲀>chén|\ ;
+㱶>bèng|\ ;
+㱮>kuài|\ ;
+㱭>duàn|\ ;
+㱨>liàn|\ ;
+㱥>líng|\ ;
+㱢>láng|\ ;
+㱍>luán|\ ;
+㰾>jiào|\ ;
+㰸>liăn|\ ;
+㰮>shèn|\ ;
+㰠>kàng|\ ;
+㰍>lóng|\ ;
+㰈>liăn|\ ;
+㰄>jiàn|\ ;
+㰃>mián|\ ;
+㰂>shĕn|\ ;
+㯺>jiàn|\ ;
+㯹>biăo|\ ;
+㯳>qíng|\ ;
+㯱>biăo|\ ;
+㯯>gòng|\ ;
+㯬>liăn|\ ;
+㯪>líng|\ ;
+㯢>zhèn|\ ;
+㯠>qiàn|\ ;
+㯞>juàn|\ ;
+㯘>kuăn|\ ;
+㯐>făng|\ ;
+㯋>yĭng|\ ;
+㯆>chăn|\ ;
+㯁>bàng|\ ;
+㯀>xiăn|\ ;
+㮾>lăng|\ ;
+㮸>sòng|\ ;
+㮳>zhèn|\ ;
+㮭>xián|\ ;
+㮡>guàn|\ ;
+㮔>tóng|\ ;
+㮐>xĭng|\ ;
+㮌>mián|\ ;
+㮇>tiàn|\ ;
+㮄>băng|\ ;
+㭻>táng|\ ;
+㭹>xián|\ ;
+㭬>zhuó|\ ;
+㭫>cuán|\ ;
+㭤>niăo|\ ;
+㭠>xiăn|\ ;
+㭟>gŏng|\ ;
+㭜>róng|\ ;
+㭓>biàn|\ ;
+㭋>bàng|\ ;
+㭇>yuàn|\ ;
+㭂>jiăo|\ ;
+㭁>réng|\ ;
+㬵>xiáo|\ ;
+㬴>hŏng|\ ;
+㬮>kuài|\ ;
+㬭>jiào|\ ;
+㬡>líng|\ ;
+㬠>shài|\ ;
+㬝>céng|\ ;
+㬗>xiàn|\ ;
+㬕>yáng|\ ;
+㬓>piào|\ ;
+㬒>măng|\ ;
+㬎>xiăn|\ ;
+㬌>jìng|\ ;
+㬊>huăn|\ ;
+㬉>nuăn|\ ;
+㬇>huàn|\ ;
+㬆>mián|\ ;
+㬄>chàn|\ ;
+㫳>chén|\ ;
+㫰>lăng|\ ;
+㫫>xiăn|\ ;
+㫥>mĭng|\ ;
+㫒>gŏng|\ ;
+㫄>páng|\ ;
+㫁>duàn|\ ;
+㫀>dĭng|\ ;
+㪻>juàn|\ ;
+㪱>huàn|\ ;
+㪮>líng|\ ;
+㪬>zhuó|\ ;
+㪨>shàn|\ ;
+㪣>qiào|\ ;
+㪢>shăo|\ ;
+㪠>qiàn|\ ;
+㪝>liàn|\ ;
+㪛>zhĕn|\ ;
+㪘>liăn|\ ;
+㪕>diào|\ ;
+㪎>shăn|\ ;
+㪌>tŏng|\ ;
+㪇>xiàn|\ ;
+㩾>chuí|\ ;
+㩳>sŏng|\ ;
+㩰>jiăo|\ ;
+㩮>qián|\ ;
+㩠>piăo|\ ;
+㩟>zhài|\ ;
+㩛>tuán|\ ;
+㩚>méng|\ ;
+㩈>xiàn|\ ;
+㨾>yàng|\ ;
+㨶>chóu|\ ;
+㨵>jiăn|\ ;
+㨴>jiàn|\ ;
+㨦>sŏng|\ ;
+㨜>qián|\ ;
+㨛>shăn|\ ;
+㨘>xĭng|\ ;
+㨕>yíng|\ ;
+㨄>zhào|\ ;
+㨂>dŏng|\ ;
+㨀>bĭng|\ ;
+㧼>biào|\ ;
+㧱>chèn|\ ;
+㧬>gŏng|\ ;
+㧦>xuàn|\ ;
+㧥>xiăn|\ ;
+㧟>kuăi|\ ;
+㧔>guài|\ ;
+㧐>sŏng|\ ;
+㧍>făng|\ ;
+㧋>xiăn|\ ;
+㧄>qiăn|\ ;
+㧂>tián|\ ;
+㦷>yŏng|\ ;
+㦮>qián|\ ;
+㦭>líng|\ ;
+㦥>huán|\ ;
+㦞>chóu|\ ;
+㦝>miăo|\ ;
+㦚>biăn|\ ;
+㦗>jiàn|\ ;
+㦕>lóng|\ ;
+㦓>xiàn|\ ;
+㦑>liăn|\ ;
+㦃>chăn|\ ;
+㦁>lián|\ ;
+㦀>féng|\ ;
+㥳>yuán|\ ;
+㥲>shèn|\ ;
+㥮>zhòu|\ ;
+㥬>páng|\ ;
+㥨>chuí|\ ;
+㥧>shùn|\ ;
+㥕>lián|\ ;
+㥐>yuàn|\ ;
+㥏>tiăn|\ ;
+㥊>péng|\ ;
+㥆>diàn|\ ;
+㥅>shòu|\ ;
+㥄>líng|\ ;
+㤽>chóu|\ ;
+㤶>páng|\ ;
+㤪>yuàn|\ ;
+㤨>gŏng|\ ;
+㤟>kŏng|\ ;
+㤚>háng|\ ;
+㤏>tóng|\ ;
+㤍>qiăo|\ ;
+㤊>xiào|\ ;
+㤃>fáng|\ ;
+㤁>miăn|\ ;
+㣿>zhuó|\ ;
+㣷>nìng|\ ;
+㣪>huăn|\ ;
+㣤>jiàn|\ ;
+㣣>shăn|\ ;
+㣠>tóng|\ ;
+㣜>xíng|\ ;
+㣚>tóng|\ ;
+㣒>cèng|\ ;
+㣑>róng|\ ;
+㣐>biàn|\ ;
+㣏>jìng|\ ;
+㣌>shàn|\ ;
+㣀>zhèn|\ ;
+㢾>juàn|\ ;
+㢺>xián|\ ;
+㢬>hóng|\ ;
+㢧>juàn|\ ;
+㢥>dòng|\ ;
+㢣>jìng|\ ;
+㢟>chăn|\ ;
+㢘>lián|\ ;
+㢗>qiào|\ ;
+㢔>zŏng|\ ;
+㢍>yíng|\ ;
+㢆>chán|\ ;
+㢅>lòng|\ ;
+㢃>láng|\ ;
+㡾>xiàn|\ ;
+㡽>zhào|\ ;
+㡻>liào|\ ;
+㡵>líng|\ ;
+㡲>huán|\ ;
+㡯>zhái|\ ;
+㡩>luán|\ ;
+㡨>qian|\ ;
+㡣>lóng|\ ;
+㡝>fèng|\ ;
+㡛>máng|\ ;
+㡘>lián|\ ;
+㡑>qiăo|\ ;
+㡉>xián|\ ;
+㠽>tóng|\ ;
+㠺>miáo|\ ;
+㠭>zhăn|\ ;
+㠡>niăo|\ ;
+㠝>cuán|\ ;
+㠓>méng|\ ;
+㠒>biăo|\ ;
+㠐>jiào|\ ;
+㠉>tóng|\ ;
+㟿>máng|\ ;
+㟽>biăo|\ ;
+㟻>qiàn|\ ;
+㟶>yuán|\ ;
+㟵>găng|\ ;
+㟴>kuài|\ ;
+㟰>mĭng|\ ;
+㟫>quán|\ ;
+㟨>quán|\ ;
+㟠>găng|\ ;
+㟞>zhàn|\ ;
+㟘>tiáo|\ ;
+㟖>lòng|\ ;
+㟐>măng|\ ;
+㟍>láng|\ ;
+㟌>máng|\ ;
+㟅>yáng|\ ;
+㟀>lián|\ ;
+㞲>yòng|\ ;
+㞡>zhăn|\ ;
+㞟>diàn|\ ;
+㞙>niào|\ ;
+㞋>niăn|\ ;
+㝽>chuí|\ ;
+㝺>lián|\ ;
+㝸>biàn|\ ;
+㝱>mèng|\ ;
+㝰>mián|\ ;
+㝯>qiáo|\ ;
+㝭>xĭng|\ ;
+㝫>lóng|\ ;
+㝪>diàn|\ ;
+㝠>míng|\ ;
+㝘>yóng|\ ;
+㝗>láng|\ ;
+㝕>níng|\ ;
+㝑>máng|\ ;
+㝐>róng|\ ;
+㝎>dìng|\ ;
+㝋>liáo|\ ;
+㝊>shŏu|\ ;
+㝈>luán|\ ;
+㝇>chún|\ ;
+㝄>chún|\ ;
+㜻>liàn|\ ;
+㜵>niăo|\ ;
+㜴>mèng|\ ;
+㜳>huái|\ ;
+㜲>wĕng|\ ;
+㜱>dòng|\ ;
+㜪>xiăn|\ ;
+㜤>shĕn|\ ;
+㜞>qiàn|\ ;
+㜕>lián|\ ;
+㜍>táng|\ ;
+㜊>pàng|\ ;
+㜃>liàn|\ ;
+㛾>xián|\ ;
+㛹>pián|\ ;
+㛶>chóu|\ ;
+㛯>miăn|\ ;
+㛩>zhóu|\ ;
+㛞>lòng|\ ;
+㛚>tŏng|\ ;
+㛔>péng|\ ;
+㚽>qiăo|\ ;
+㚲>diăn|\ ;
+㚣>xiáo|\ ;
+㚟>chuò|\ ;
+㚞>mĕng|\ ;
+㚒>shăn|\ ;
+㚅>lóng|\ ;
+㚂>ráng|\ ;
+㚁>qiáo|\ ;
+㙻>chán|\ ;
+㙹>méng|\ ;
+㙶>táng|\ ;
+㙴>chàn|\ ;
+㙲>yŏng|\ ;
+㙩>liáo|\ ;
+㙟>lăng|\ ;
+㙙>lŏng|\ ;
+㙗>kuài|\ ;
+㙕>kuài|\ ;
+㙉>tiăn|\ ;
+㙁>măng|\ ;
+㘸>zàng|\ ;
+㘫>jĭng|\ ;
+㘣>xuán|\ ;
+㘢>wĕng|\ ;
+㘝>niăn|\ ;
+㘋>xián|\ ;
+㘇>róng|\ ;
+㘅>xián|\ ;
+㗢>dòng|\ ;
+㗛>xiào|\ ;
+㖺>chŭn|\ ;
+㖭>tiăn|\ ;
+㖫>líng|\ ;
+㖦>dŏng|\ ;
+㖟>shòu|\ ;
+㖓>hóng|\ ;
+㕴>chén|\ ;
+㕬>sòng|\ ;
+㕫>făng|\ ;
+㕚>zhăo|\ ;
+㕕>huàn|\ ;
+㕋>jìng|\ ;
+㔶>gòng|\ ;
+㔵>xiàn|\ ;
+㔰>héng|\ ;
+㔯>suăn|\ ;
+㔦>yăng|\ ;
+㔤>shĕn|\ ;
+㔞>kuài|\ ;
+㔙>băng|\ ;
+㔓>jiăn|\ ;
+㔌>zhòu|\ ;
+㔋>jiàn|\ ;
+㔆>chán|\ ;
+㔅>xiào|\ ;
+㓺>jiàn|\ ;
+㓲>piàn|\ ;
+㓪>lăng|\ ;
+㓠>diàn|\ ;
+㓝>xíng|\ ;
+㓑>xìng|\ ;
+㓎>lián|\ ;
+㓋>gòng|\ ;
+㓊>dòng|\ ;
+㓉>huàn|\ ;
+㓄>zhèn|\ ;
+㓃>chuí|\ ;
+㓁>wăng|\ ;
+㒰>quán|\ ;
+㒟>niăo|\ ;
+㒛>diào|\ ;
+㒙>mián|\ ;
+㒉>tăng|\ ;
+㒄>nàng|\ ;
+㑿>tiáo|\ ;
+㑾>xiáo|\ ;
+㑽>táng|\ ;
+㑼>lyuè|\ ;
+㑳>zhòu|\ ;
+㑪>chái|\ ;
+㑤>miáo|\ ;
+㑟>bĕng|\ ;
+㑞>yìng|\ ;
+㑝>lòng|\ ;
+㑈>dòng|\ ;
+㑇>zhòu|\ ;
+㑂>făng|\ ;
+㐸>qiàn|\ ;
+㐱>zhĕn|\ ;
+㐩>xíng|\ ;
+㐜>chóu|\ ;
+㐁>tiăn|\ ;
+𨺹>jiao|\ ;
+是>shì|\ ;
+人>rén|\ ;
+在>zài|\ ;
+有>yŏu|\ ;
+这>zhè|\ ;
+来>lái|\ ;
+国>guó|\ ;
+到>dào|\ ;
+们>mēn|\ ;
+为>wèi|\ ;
+出>chu|\ ;
+道>dào|\ ;
+时>shí|\ ;
+就>jiù|\ ;
+要>yao|\ ;
+下>xià|\ ;
+会>guì|\ ;
+之>zhi|\ ;
+过>guo|\ ;
+家>jia|\ ;
+学>xué|\ ;
+对>duì|\ ;
+后>hòu|\ ;
+心>xin|\ ;
+多>duo|\ ;
+好>hăo|\ ;
+都>dou|\ ;
+然>rán|\ ;
+没>méi|\ ;
+事>shì|\ ;
+只>zhi|\ ;
+作>zuò|\ ;
+看>kan|\ ;
+文>wén|\ ;
+开>kai|\ ;
+十>shí|\ ;
+主>zhŭ|\ ;
+又>yòu|\ ;
+所>suŏ|\ ;
+本>bĕn|\ ;
+头>tóu|\ ;
+三>san|\ ;
+老>lăo|\ ;
+知>zhi|\ ;
+民>mín|\ ;
+分>fen|\ ;
+外>wài|\ ;
+但>dàn|\ ;
+些>xie|\ ;
+高>gao|\ ;
+进>jìn|\ ;
+实>shí|\ ;
+回>huí|\ ;
+美>mĕi|\ ;
+月>yuè|\ ;
+话>huà|\ ;
+者>zhĕ|\ ;
+问>wèn|\ ;
+给>gĕi|\ ;
+很>hĕn|\ ;
+最>zuì|\ ;
+新>xin|\ ;
+什>shí|\ ;
+位>wèi|\ ;
+因>yin|\ ;
+被>bèi|\ ;
+走>zŏu|\ ;
+门>mén|\ ;
+海>hăi|\ ;
+口>kŏu|\ ;
+使>shĭ|\ ;
+再>zài|\ ;
+世>shì|\ ;
+信>xìn|\ ;
+北>bĕi|\ ;
+内>nèi|\ ;
+加>jia|\ ;
+化>huà|\ ;
+由>yóu|\ ;
+却>què|\ ;
+代>dài|\ ;
+军>jun|\ ;
+太>tài|\ ;
+万>wàn|\ ;
+市>shì|\ ;
+眼>yăn|\ ;
+别>bié|\ ;
+处>chù|\ ;
+才>cái|\ ;
+师>shi|\ ;
+住>zhù|\ ;
+九>jiŭ|\ ;
+华>huá|\ ;
+报>bào|\ ;
+活>huó|\ ;
+难>nán|\ ;
+车>che|\ ;
+白>bái|\ ;
+感>găn|\ ;
+金>jin|\ ;
+反>făn|\ ;
+做>zuò|\ ;
+或>huò|\ ;
+果>guŏ|\ ;
+亲>qin|\ ;
+界>jiè|\ ;
+今>jin|\ ;
+制>zhì|\ ;
+解>jiĕ|\ ;
+任>rèn|\ ;
+至>zhì|\ ;
+台>tái|\ ;
+干>gan|\ ;
+接>jie|\ ;
+觉>jué|\ ;
+直>zhí|\ ;
+毛>máo|\ ;
+林>lín|\ ;
+南>nán|\ ;
+认>rèn|\ ;
+论>lùn|\ ;
+百>băi|\ ;
+吃>chi|\ ;
+怎>zĕn|\ ;
+社>shè|\ ;
+术>shù|\ ;
+结>jié|\ ;
+六>liù|\ ;
+指>zhĭ|\ ;
+非>fei|\ ;
+流>liú|\ ;
+每>mĕi|\ ;
+队>duì|\ ;
+跟>gen|\ ;
+带>dài|\ ;
+花>hua|\ ;
+条>lài|\ ;
+言>yán|\ ;
+该>gai|\ ;
+近>jìn|\ ;
+留>liú|\ ;
+治>zhì|\ ;
+决>jué|\ ;
+保>băo|\ ;
+办>bàn|\ ;
+运>yùn|\ ;
+半>bàn|\ ;
+候>hòu|\ ;
+完>wán|\ ;
+求>qiú|\ ;
+品>pĭn|\ ;
+士>shì|\ ;
+告>gào|\ ;
+派>pài|\ ;
+满>măn|\ ;
+式>shì|\ ;
+识>shì|\ ;
+倒>dăo|\ ;
+未>wèi|\ ;
+持>chí|\ ;
+设>shè|\ ;
+始>shĭ|\ ;
+版>băn|\ ;
+越>yuè|\ ;
+史>shĭ|\ ;
+研>yán|\ ;
+友>yŏu|\ ;
+孩>hái|\ ;
+改>găi|\ ;
+委>wei|\ ;
+早>zăo|\ ;
+音>yin|\ ;
+火>huŏ|\ ;
+单>dan|\ ;
+导>dăo|\ ;
+失>shi|\ ;
+石>dàn|\ ;
+若>ruò|\ ;
+志>zhì|\ ;
+飞>fei|\ ;
+究>jiu|\ ;
+包>bao|\ ;
+造>zào|\ ;
+视>shì|\ ;
+虽>sui|\ ;
+坐>zuò|\ ;
+宝>băo|\ ;
+谈>tán|\ ;
+黑>hei|\ ;
+且>qiĕ|\ ;
+随>suí|\ ;
+尽>jĭn|\ ;
+杀>sha|\ ;
+微>wei|\ ;
+根>gen|\ ;
+终>chù|\ ;
+切>qie|\ ;
+示>shì|\ ;
+男>nán|\ ;
+注>zhù|\ ;
+费>fèi|\ ;
+群>qún|\ ;
+推>tui|\ ;
+晚>wăn|\ ;
+待>dai|\ ;
+支>zhi|\ ;
+号>háo|\ ;
+绝>jué|\ ;
+参>can|\ ;
+刊>kan|\ ;
+类>lèi|\ ;
+备>bèi|\ ;
+势>shì|\ ;
+般>ban|\ ;
+价>jià|\ ;
+脑>năo|\ ;
+规>gui|\ ;
+确>què|\ ;
+泽>duó|\ ;
+存>cún|\ ;
+害>hài|\ ;
+节>jié|\ ;
+左>zuŏ|\ ;
+久>jiŭ|\ ;
+岁>suì|\ ;
+酒>jiŭ|\ ;
+初>chu|\ ;
+游>yóu|\ ;
+铁>tiĕ|\ ;
+除>chú|\ ;
+份>fèn|\ ;
+敢>găn|\ ;
+血>xiĕ|\ ;
+投>tóu|\ ;
+闻>wén|\ ;
+斗>dŏu|\ ;
+右>yòu|\ ;
+饭>fàn|\ ;
+云>yún|\ ;
+考>kăo|\ ;
+村>cun|\ ;
+刀>dao|\ ;
+仅>jĭn|\ ;
+查>chá|\ ;
+引>yĭn|\ ;
+罗>luo|\ ;
+买>măi|\ ;
+背>bei|\ ;
+卫>wèi|\ ;
+列>liè|\ ;
+室>shì|\ ;
+刘>liú|\ ;
+排>pái|\ ;
+树>shù|\ ;
+职>zhí|\ ;
+态>tài|\ ;
+印>yìn|\ ;
+夏>xià|\ ;
+助>zhù|\ ;
+球>qiú|\ ;
+划>huá|\ ;
+质>zhí|\ ;
+致>zhì|\ ;
+湾>wan|\ ;
+演>yăn|\ ;
+韦>wéi|\ ;
+围>wéi|\ ;
+否>fŏu|\ ;
+采>căi|\ ;
+食>shí|\ ;
+够>gòu|\ ;
+赛>sài|\ ;
+假>jiă|\ ;
+姐>jiĕ|\ ;
+楼>lóu|\ ;
+获>huò|\ ;
+孙>sun|\ ;
+诗>shi|\ ;
+试>shì|\ ;
+谢>xiè|\ ;
+验>yàn|\ ;
+止>zhĭ|\ ;
+属>shŭ|\ ;
+郭>guo|\ ;
+威>wei|\ ;
+慢>màn|\ ;
+座>zuò|\ ;
+罪>zuì|\ ;
+街>jie|\ ;
+施>shi|\ ;
+草>căo|\ ;
+某>mŏu|\ ;
+银>yín|\ ;
+值>zhí|\ ;
+班>ban|\ ;
+修>xiu|\ ;
+差>cha|\ ;
+味>wèi|\ ;
+织>zhi|\ ;
+药>yào|\ ;
+归>gui|\ ;
+救>jiù|\ ;
+退>tuì|\ ;
+劳>láo|\ ;
+婚>hun|\ ;
+络>luò|\ ;
+翻>fan|\ ;
+跑>păo|\ ;
+叶>xié|\ ;
+均>jun|\ ;
+烈>liè|\ ;
+赶>găn|\ ;
+兰>lán|\ ;
+画>huà|\ ;
+顿>dùn|\ ;
+判>pàn|\ ;
+嘴>zuĭ|\ ;
+察>chá|\ ;
+优>you|\ ;
+您>nín|\ ;
+烟>yan|\ ;
+阶>jie|\ ;
+担>dàn|\ ;
+散>săn|\ ;
+板>băn|\ ;
+妹>mèi|\ ;
+临>lín|\ ;
+摇>yáo|\ ;
+构>gou|\ ;
+玩>wán|\ ;
+犯>fàn|\ ;
+肯>kĕn|\ ;
+挥>hui|\ ;
+温>wen|\ ;
+肉>ròu|\ ;
+纸>zhĭ|\ ;
+寻>xún|\ ;
+沙>sha|\ ;
+卖>mài|\ ;
+范>fàn|\ ;
+靠>kào|\ ;
+杂>găn|\ ;
+贵>guì|\ ;
+稿>găo|\ ;
+拍>pai|\ ;
+旧>jiù|\ ;
+油>yóu|\ ;
+扬>róu|\ ;
+雪>xuĕ|\ ;
+菜>cài|\ ;
+牌>pái|\ ;
+牛>niú|\ ;
+脱>tuo|\ ;
+弹>dàn|\ ;
+置>zhì|\ ;
+楚>chŭ|\ ;
+智>zhì|\ ;
+岛>dăo|\ ;
+抱>bào|\ ;
+载>zài|\ ;
+败>bài|\ ;
+适>shì|\ ;
+爹>die|\ ;
+介>jiè|\ ;
+括>kuò|\ ;
+奔>ben|\ ;
+忍>rĕn|\ ;
+盘>pán|\ ;
+讯>xùn|\ ;
+配>pèi|\ ;
+禁>jin|\ ;
+索>suŏ|\ ;
+架>jià|\ ;
+托>tuo|\ ;
+伙>huŏ|\ ;
+毫>háo|\ ;
+套>tào|\ ;
+逃>táo|\ ;
+输>shu|\ ;
+困>kùn|\ ;
+泪>lèi|\ ;
+熟>shú|\ ;
+财>cái|\ ;
+鬼>guĭ|\ ;
+秋>qiu|\ ;
+秀>xiù|\ ;
+搞>găo|\ ;
+朱>zhu|\ ;
+执>zhí|\ ;
+悲>bei|\ ;
+辈>bèi|\ ;
+隐>yĭn|\ ;
+闹>nào|\ ;
+材>cái|\ ;
+腿>tuĭ|\ ;
+述>shù|\ ;
+尊>zun|\ ;
+借>jiè|\ ;
+折>shé|\ ;
+遗>wèi|\ ;
+暴>bào|\ ;
+缺>que|\ ;
+探>tàn|\ ;
+货>huò|\ ;
+伟>wĕi|\ ;
+君>jun|\ ;
+凡>fán|\ ;
+危>wei|\ ;
+彩>căi|\ ;
+束>shù|\ ;
+谓>wèi|\ ;
+概>gài|\ ;
+射>shè|\ ;
+杯>bei|\ ;
+透>tòu|\ ;
+邮>yóu|\ ;
+休>xiu|\ ;
+叹>tàn|\ ;
+狗>gŏu|\ ;
+偷>tou|\ ;
+阴>yin|\ ;
+拜>bài|\ ;
+厚>hòu|\ ;
+丹>dan|\ ;
+洛>luò|\ ;
+喊>hăn|\ ;
+轮>lún|\ ;
+奶>năi|\ ;
+淡>dàn|\ ;
+训>xùn|\ ;
+释>shì|\ ;
+诸>dòu|\ ;
+唯>wéi|\ ;
+夺>duó|\ ;
+逐>zhú|\ ;
+燕>yan|\ ;
+呆>dai|\ ;
+盖>gài|\ ;
+阅>yuè|\ ;
+购>gòu|\ ;
+挂>guà|\ ;
+恨>hèn|\ ;
+舍>shĕ|\ ;
+竹>zhú|\ ;
+弱>ruò|\ ;
+含>hán|\ ;
+址>zhĭ|\ ;
+摆>băi|\ ;
+番>fan|\ ;
+混>hún|\ ;
+袋>dài|\ ;
+赞>zàn|\ ;
+茶>chá|\ ;
+稳>wĕn|\ ;
+汇>huì|\ ;
+届>jiè|\ ;
+迹>dui|\ ;
+雷>léi|\ ;
+寒>hán|\ ;
+遭>zao|\ ;
+柔>róu|\ ;
+戴>dài|\ ;
+豪>háo|\ ;
+瑞>ruì|\ ;
+操>cao|\ ;
+腰>yao|\ ;
+梅>méi|\ ;
+伦>lún|\ ;
+诺>nuò|\ ;
+残>cán|\ ;
+延>yán|\ ;
+迅>xùn|\ ;
+灾>zai|\ ;
+岳>yuè|\ ;
+珠>zhu|\ ;
+叔>shu|\ ;
+谋>móu|\ ;
+础>chŭ|\ ;
+仁>rén|\ ;
+损>sŭn|\ ;
+敏>mĭn|\ ;
+累>léi|\ ;
+伴>bàn|\ ;
+奋>fèn|\ ;
+胆>dăn|\ ;
+烦>fán|\ ;
+犹>fan|\ ;
+培>péi|\ ;
+乃>năi|\ ;
+坦>tăn|\ ;
+後>hòu|\ ;
+眉>méi|\ ;
+餐>can|\ ;
+抬>tái|\ ;
+冒>mào|\ ;
+汗>hàn|\ ;
+灰>hui|\ ;
+韩>hán|\ ;
+漫>màn|\ ;
+沿>yán|\ ;
+袖>xiù|\ ;
+旦>dàn|\ ;
+扫>săo|\ ;
+尤>yóu|\ ;
+炮>pào|\ ;
+碗>wăn|\ ;
+贴>tie|\ ;
+插>cha|\ ;
+滚>gŭn|\ ;
+贝>bèi|\ ;
+润>rùn|\ ;
+氏>shì|\ ;
+扩>kuò|\ ;
+栏>lán|\ ;
+哲>zhé|\ ;
+堆>dui|\ ;
+俩>liă|\ ;
+蓝>lán|\ ;
+辛>xin|\ ;
+陪>péi|\ ;
+蛋>dàn|\ ;
+颜>yán|\ ;
+贫>pín|\ ;
+杰>jié|\ ;
+忧>you|\ ;
+貌>mào|\ ;
+塞>sai|\ ;
+森>sen|\ ;
+繁>fán|\ ;
+碎>suì|\ ;
+津>jin|\ ;
+侠>xiá|\ ;
+迟>chí|\ ;
+辉>hui|\ ;
+狠>hĕn|\ ;
+缩>suo|\ ;
+穴>xué|\ ;
+径>dai|\ ;
+赖>dàn|\ ;
+愤>fèn|\ ;
+询>xún|\ ;
+惨>căn|\ ;
+麦>mài|\ ;
+倍>bèi|\ ;
+截>jié|\ ;
+染>răn|\ ;
+柳>liŭ|\ ;
+涉>shè|\ ;
+躲>duŏ|\ ;
+裁>cái|\ ;
+霞>xiá|\ ;
+猪>zhu|\ ;
+筑>zhú|\ ;
+俊>jùn|\ ;
+鞋>xié|\ ;
+侵>qin|\ ;
+欣>xin|\ ;
+媒>méi|\ ;
+魂>hún|\ ;
+枝>zhi|\ ;
+甲>jiă|\ ;
+拖>tuo|\ ;
+舒>shu|\ ;
+惠>huì|\ ;
+昏>hun|\ ;
+戒>jiè|\ ;
+慧>huì|\ ;
+桃>táo|\ ;
+赤>chì|\ ;
+烂>làn|\ ;
+措>cuò|\ ;
+泰>tài|\ ;
+尸>shi|\ ;
+殊>shu|\ ;
+慰>wèi|\ ;
+坛>tán|\ ;
+甘>gan|\ ;
+咬>yăo|\ ;
+炸>zhá|\ ;
+饮>yĭn|\ ;
+祝>zhù|\ ;
+牢>láo|\ ;
+桂>guì|\ ;
+尾>wĕi|\ ;
+恰>qià|\ ;
+矛>máo|\ ;
+宾>bin|\ ;
+粉>fĕn|\ ;
+贼>zéi|\ ;
+盾>dùn|\ ;
+斜>xié|\ ;
+裂>liè|\ ;
+斐>fĕi|\ ;
+废>fèi|\ ;
+彻>chè|\ ;
+斤>jin|\ ;
+朵>duŏ|\ ;
+佳>jia|\ ;
+皆>jie|\ ;
+毁>huĭ|\ ;
+蛇>shé|\ ;
+搬>ban|\ ;
+舅>jiù|\ ;
+幽>you|\ ;
+琴>qín|\ ;
+聘>pìn|\ ;
+弯>wan|\ ;
+返>făn|\ ;
+违>wéi|\ ;
+亏>kui|\ ;
+丢>diu|\ ;
+魏>wèi|\ ;
+耐>nài|\ ;
+佩>pèi|\ ;
+傻>shă|\ ;
+绕>rào|\ ;
+秦>qín|\ ;
+昨>zuó|\ ;
+暂>zàn|\ ;
+署>shŭ|\ ;
+猜>cai|\ ;
+耀>yào|\ ;
+豆>dòu|\ ;
+闷>men|\ ;
+泛>fàn|\ ;
+悔>huĭ|\ ;
+爆>bào|\ ;
+幼>yòu|\ ;
+夹>jia|\ ;
+邀>yao|\ ;
+允>yŭn|\ ;
+恼>năo|\ ;
+尺>chĕ|\ ;
+侍>shì|\ ;
+扭>niŭ|\ ;
+菲>fei|\ ;
+奏>zòu|\ ;
+殷>yan|\ ;
+埋>mái|\ ;
+盼>pàn|\ ;
+吟>yín|\ ;
+跨>kuà|\ ;
+醉>zuì|\ ;
+掩>yăn|\ ;
+揭>jie|\ ;
+刃>rèn|\ ;
+峡>xiá|\ ;
+凯>kăi|\ ;
+丐>gài|\ ;
+猫>mao|\ ;
+涛>tao|\ ;
+溜>liu|\ ;
+锅>guo|\ ;
+奈>nài|\ ;
+拾>shí|\ ;
+脉>mài|\ ;
+锁>suŏ|\ ;
+邻>lín|\ ;
+恢>hui|\ ;
+砍>kăn|\ ;
+驾>jià|\ ;
+祸>huò|\ ;
+曹>cáo|\ ;
+抖>dŏu|\ ;
+羞>xiu|\ ;
+抛>niù|\ ;
+惑>huò|\ ;
+肥>féi|\ ;
+胞>bao|\ ;
+阔>kuò|\ ;
+勤>qín|\ ;
+帽>mào|\ ;
+撤>chè|\ ;
+频>pín|\ ;
+莱>lái|\ ;
+堪>kan|\ ;
+寸>cùn|\ ;
+巡>xún|\ ;
+扣>kòu|\ ;
+池>chí|\ ;
+嫁>jià|\ ;
+枚>méi|\ ;
+瓜>gua|\ ;
+跌>die|\ ;
+扯>chĕ|\ ;
+锦>jĭn|\ ;
+逊>shu|\ ;
+赔>péi|\ ;
+昆>kun|\ ;
+柏>băi|\ ;
+驶>shĭ|\ ;
+植>zhí|\ ;
+纽>niŭ|\ ;
+捷>jié|\ ;
+锐>duì|\ ;
+乾>gan|\ ;
+霍>huò|\ ;
+湿>shi|\ ;
+睁>suo|\ ;
+悠>you|\ ;
+沟>gou|\ ;
+陶>táo|\ ;
+浑>hún|\ ;
+驰>chí|\ ;
+拼>pin|\ ;
+邪>xié|\ ;
+脆>cuì|\ ;
+糟>zao|\ ;
+扮>bàn|\ ;
+饰>shì|\ ;
+摄>niè|\ ;
+嘿>hei|\ ;
+旨>zhĭ|\ ;
+翠>cuì|\ ;
+饱>băo|\ ;
+劫>jié|\ ;
+叛>pàn|\ ;
+储>chŭ|\ ;
+贪>tan|\ ;
+扰>răo|\ ;
+胁>xié|\ ;
+跪>guì|\ ;
+碑>bei|\ ;
+莎>sha|\ ;
+娜>nuó|\ ;
+侯>hóu|\ ;
+丘>qiu|\ ;
+晕>yun|\ ;
+拦>lán|\ ;
+燃>rán|\ ;
+吞>tun|\ ;
+舌>shé|\ ;
+琳>lín|\ ;
+曼>màn|\ ;
+耻>chĭ|\ ;
+柜>guì|\ ;
+摊>tan|\ ;
+杆>gan|\ ;
+岩>yán|\ ;
+喂>wèi|\ ;
+逝>shì|\ ;
+诞>dàn|\ ;
+崔>cui|\ ;
+凑>còu|\ ;
+痴>chi|\ ;
+盆>pén|\ ;
+姥>lăo|\ ;
+姻>yin|\ ;
+愧>kuì|\ ;
+芬>fen|\ ;
+掷>zhí|\ ;
+芯>xin|\ ;
+鼠>shŭ|\ ;
+纠>jiu|\ ;
+曰>yue|\ ;
+袍>páo|\ ;
+勾>gou|\ ;
+慨>kăi|\ ;
+筋>jin|\ ;
+柱>zhù|\ ;
+卑>bei|\ ;
+咽>yan|\ ;
+吨>dun|\ ;
+厨>chú|\ ;
+饶>ráo|\ ;
+煤>méi|\ ;
+腕>wàn|\ ;
+喷>pen|\ ;
+浩>hào|\ ;
+吩>fen|\ ;
+泄>xiè|\ ;
+搜>sou|\ ;
+遵>zun|\ ;
+伪>wĕi|\ ;
+炎>yán|\ ;
+氛>fen|\ ;
+杖>chi|\ ;
+瞎>xia|\ ;
+誓>shì|\ ;
+泡>pao|\ ;
+嘉>jia|\ ;
+烛>zhú|\ ;
+厦>shà|\ ;
+衰>cui|\ ;
+薛>xue|\ ;
+齿>chĭ|\ ;
+谨>jĭn|\ ;
+昂>áng|\ ;
+疏>shu|\ ;
+耗>hào|\ ;
+斥>chì|\ ;
+夸>kua|\ ;
+痕>hén|\ ;
+姚>yáo|\ ;
+妥>tuŏ|\ ;
+掏>tao|\ ;
+刹>chà|\ ;
+钦>qin|\ ;
+诱>yòu|\ ;
+歇>xie|\ ;
+棍>gùn|\ ;
+晋>jìn|\ ;
+淋>lìn|\ ;
+悦>men|\ ;
+敦>dun|\ ;
+罕>hăn|\ ;
+贷>dài|\ ;
+捏>nie|\ ;
+贾>jiă|\ ;
+堡>băo|\ ;
+浙>zhè|\ ;
+劣>liè|\ ;
+陀>tuó|\ ;
+坟>fén|\ ;
+漏>lòu|\ ;
+茅>máo|\ ;
+滩>tan|\ ;
+顽>wán|\ ;
+殖>zhí|\ ;
+蔡>cài|\ ;
+催>cui|\ ;
+彬>bin|\ ;
+拚>pàn|\ ;
+轨>dài|\ ;
+硕>shí|\ ;
+憾>hàn|\ ;
+懒>lăn|\ ;
+盐>yán|\ ;
+喉>hóu|\ ;
+宴>yàn|\ ;
+翰>hàn|\ ;
+逻>luó|\ ;
+裹>guŏ|\ ;
+贩>fàn|\ ;
+绘>huì|\ ;
+崖>yái|\ ;
+遮>zhe|\ ;
+擒>qín|\ ;
+蛮>mán|\ ;
+芷>zhĭ|\ ;
+挽>wăn|\ ;
+吻>wĕn|\ ;
+粹>cuì|\ ;
+竭>jié|\ ;
+歪>wai|\ ;
+械>xiè|\ ;
+斑>ban|\ ;
+寡>guă|\ ;
+循>xún|\ ;
+吕>lü̆|\ ;
+爵>jué|\ ;
+徽>hui|\ ;
+谭>tán|\ ;
+嫂>săo|\ ;
+婉>wăn|\ ;
+骆>luò|\ ;
+畏>wèi|\ ;
+鲍>bào|\ ;
+啥>shà|\ ;
+纹>wén|\ ;
+蹲>dun|\ ;
+骚>sao|\ ;
+艘>sao|\ ;
+芝>zhi|\ ;
+哗>hua|\ ;
+巾>jin|\ ;
+淫>yín|\ ;
+篮>lán|\ ;
+侄>zhí|\ ;
+叉>cha|\ ;
+宰>zăi|\ ;
+瞒>mán|\ ;
+吼>hŏu|\ ;
+侨>hòu|\ ;
+叠>dié|\ ;
+裙>qún|\ ;
+咳>hai|\ ;
+恳>kĕn|\ ;
+谜>mèi|\ ;
+呜>chi|\ ;
+颁>ban|\ ;
+薪>xin|\ ;
+尿>sui|\ ;
+颊>jiá|\ ;
+逮>dăi|\ ;
+浸>jìn|\ ;
+刮>gua|\ ;
+宛>wăn|\ ;
+嘱>zhŭ|\ ;
+挪>nuó|\ ;
+兜>dou|\ ;
+喃>nán|\ ;
+舵>duò|\ ;
+糕>gao|\ ;
+秩>zhì|\ ;
+钩>gou|\ ;
+煮>zhŭ|\ ;
+竖>shù|\ ;
+株>zhu|\ ;
+绣>xiù|\ ;
+妖>yao|\ ;
+胎>tai|\ ;
+滨>bin|\ ;
+嗤>chi|\ ;
+匪>fĕi|\ ;
+胃>wèi|\ ;
+躁>zào|\ ;
+狮>shi|\ ;
+凛>lĭn|\ ;
+龟>gui|\ ;
+嫣>yan|\ ;
+窑>dié|\ ;
+尹>yĭn|\ ;
+掘>jué|\ ;
+狭>xiá|\ ;
+馨>xin|\ ;
+潘>pan|\ ;
+渊>dòu|\ ;
+猴>hóu|\ ;
+畔>pàn|\ ;
+畜>chù|\ ;
+搂>lou|\ ;
+旬>xún|\ ;
+骇>hài|\ ;
+灿>càn|\ ;
+雁>yàn|\ ;
+韵>yùn|\ ;
+媚>mèi|\ ;
+攀>pan|\ ;
+窃>qiè|\ ;
+裘>qiú|\ ;
+嫩>nèn|\ ;
+遂>suì|\ ;
+陋>lòu|\ ;
+笨>bèn|\ ;
+匙>chí|\ ;
+踩>căi|\ ;
+啡>fei|\ ;
+黛>dài|\ ;
+霉>méi|\ ;
+坤>kun|\ ;
+帖>tie|\ ;
+焰>yàn|\ ;
+囚>qiú|\ ;
+侃>kăn|\ ;
+佐>zuŏ|\ ;
+帆>fan|\ ;
+惭>cán|\ ;
+涵>hán|\ ;
+逗>dòu|\ ;
+澡>zăo|\ ;
+粪>fèn|\ ;
+魁>kuí|\ ;
+捆>kŭn|\ ;
+肝>gan|\ ;
+滥>làn|\ ;
+驼>tuó|\ ;
+溃>kuì|\ ;
+烤>kăo|\ ;
+潭>tán|\ ;
+诀>jué|\ ;
+峻>jùn|\ ;
+郡>jùn|\ ;
+怯>qiè|\ ;
+茂>mào|\ ;
+肢>zhi|\ ;
+尴>gan|\ ;
+稻>dào|\ ;
+栽>zai|\ ;
+豹>bào|\ ;
+蹈>dăo|\ ;
+佑>yòu|\ ;
+淹>yan|\ ;
+屡>lü̆|\ ;
+耽>dan|\ ;
+暑>shŭ|\ ;
+襟>jin|\ ;
+诧>chà|\ ;
+揪>jiu|\ ;
+翅>chì|\ ;
+辖>xiá|\ ;
+悼>dào|\ ;
+阎>yán|\ ;
+昧>mèi|\ ;
+函>hán|\ ;
+哉>zai|\ ;
+祷>dăo|\ ;
+抒>shu|\ ;
+歹>dăi|\ ;
+旱>hàn|\ ;
+惟>wéi|\ ;
+谣>yáo|\ ;
+滞>mèn|\ ;
+孕>yùn|\ ;
+梳>shu|\ ;
+肺>fèi|\ ;
+丸>wán|\ ;
+汁>zhi|\ ;
+纱>rèn|\ ;
+诡>guĭ|\ ;
+坎>kăn|\ ;
+稼>jià|\ ;
+脂>zhi|\ ;
+萄>táo|\ ;
+捞>lao|\ ;
+屑>xiè|\ ;
+伞>săn|\ ;
+蝶>dié|\ ;
+稚>zhì|\ ;
+聂>niè|\ ;
+陡>dŏu|\ ;
+仑>lún|\ ;
+焉>yan|\ ;
+淘>táo|\ ;
+垮>kuă|\ ;
+尉>wèi|\ ;
+滔>tao|\ ;
+捣>dăo|\ ;
+涩>póu|\ ;
+瑰>gui|\ ;
+缆>làn|\ ;
+浏>gŭn|\ ;
+玫>méi|\ ;
+楣>méi|\ ;
+诈>zhà|\ ;
+挟>xié|\ ;
+煞>sha|\ ;
+焚>fén|\ ;
+霎>shà|\ ;
+摧>cui|\ ;
+毯>tăn|\ ;
+挫>cuò|\ ;
+迦>jia|\ ;
+朽>xiŭ|\ ;
+兑>duì|\ ;
+魅>mèi|\ ;
+辫>bàn|\ ;
+嗽>sòu|\ ;
+鳄>dié|\ ;
+堕>duò|\ ;
+谐>xié|\ ;
+蔑>miè|\ ;
+豁>huá|\ ;
+沸>fèi|\ ;
+屎>shĭ|\ ;
+卸>xiè|\ ;
+钥>yào|\ ;
+炭>tàn|\ ;
+眨>zhă|\ ;
+瞥>pie|\ ;
+叨>dao|\ ;
+蔬>shu|\ ;
+瘾>yĭn|\ ;
+邱>qiu|\ ;
+膏>gao|\ ;
+萃>cuì|\ ;
+妞>niu|\ ;
+孽>niè|\ ;
+淑>shú|\ ;
+灶>zào|\ ;
+斌>bin|\ ;
+寇>kòu|\ ;
+沛>pèi|\ ;
+屯>tún|\ ;
+恕>shù|\ ;
+妃>fei|\ ;
+鸠>jiu|\ ;
+沦>lún|\ ;
+缕>lü̆|\ ;
+暇>xiá|\ ;
+揉>róu|\ ;
+萝>luó|\ ;
+澜>lán|\ ;
+蛛>zhu|\ ;
+揽>lăn|\ ;
+荫>yìn|\ ;
+岱>dài|\ ;
+睬>căi|\ ;
+枣>zăo|\ ;
+撇>pie|\ ;
+奢>she|\ ;
+帜>zhì|\ ;
+菌>jun|\ ;
+寅>yín|\ ;
+蕾>lĕi|\ ;
+贿>huì|\ ;
+侣>lü̆|\ ;
+钧>jun|\ ;
+讳>huì|\ ;
+窥>kui|\ ;
+衍>yăn|\ ;
+锣>luó|\ ;
+撼>hàn|\ ;
+岔>chà|\ ;
+熏>xun|\ ;
+绥>sui|\ ;
+咧>lie|\ ;
+杉>sha|\ ;
+倏>shu|\ ;
+燥>zào|\ ;
+髦>máo|\ ;
+匀>yún|\ ;
+碟>dié|\ ;
+剖>pou|\ ;
+搓>cuo|\ ;
+嵋>méi|\ ;
+蝇>xie|\ ;
+嗦>suo|\ ;
+垒>lĕi|\ ;
+噪>zào|\ ;
+蕴>yùn|\ ;
+迭>dié|\ ;
+凿>záo|\ ;
+仞>rèn|\ ;
+扳>ban|\ ;
+咦>liē|\ ;
+墅>shù|\ ;
+憋>bie|\ ;
+奎>kuí|\ ;
+秽>huì|\ ;
+卦>guà|\ ;
+佬>lăo|\ ;
+蔚>wèi|\ ;
+洽>qià|\ ;
+蚀>shí|\ ;
+吆>yao|\ ;
+虾>xia|\ ;
+唾>tuò|\ ;
+谬>miù|\ ;
+蚕>cán|\ ;
+赦>shè|\ ;
+狈>bèi|\ ;
+邹>zou|\ ;
+寝>lóu|\ ;
+苟>gŏu|\ ;
+瑶>yáo|\ ;
+梭>suo|\ ;
+彦>yàn|\ ;
+悍>hàn|\ ;
+挚>zhì|\ ;
+悯>mĭn|\ ;
+薇>wéi|\ ;
+厥>jué|\ ;
+瞩>zhŭ|\ ;
+郝>hăo|\ ;
+颐>bin|\ ;
+檐>yán|\ ;
+牟>móu|\ ;
+嗅>xiù|\ ;
+崛>jué|\ ;
+枢>shu|\ ;
+磊>lĕi|\ ;
+忿>fèn|\ ;
+乍>zhà|\ ;
+瀑>bào|\ ;
+疚>jiù|\ ;
+隋>suí|\ ;
+勘>kan|\ ;
+晦>huì|\ ;
+诫>jiè|\ ;
+螺>luó|\ ;
+墩>dun|\ ;
+槽>cáo|\ ;
+惫>bèi|\ ;
+禽>qín|\ ;
+蚊>wén|\ ;
+巍>wei|\ ;
+攒>zăn|\ ;
+祟>suì|\ ;
+尧>yáo|\ ;
+绊>bàn|\ ;
+懈>xiè|\ ;
+崽>zăi|\ ;
+蔓>mán|\ ;
+藩>fan|\ ;
+勋>xun|\ ;
+萎>wei|\ ;
+叩>kòu|\ ;
+靴>xue|\ ;
+皂>zào|\ ;
+蟹>xiè|\ ;
+惮>dàn|\ ;
+搔>sao|\ ;
+徊>huí|\ ;
+冉>răn|\ ;
+馒>mán|\ ;
+闺>gui|\ ;
+嚎>háo|\ ;
+骏>jùn|\ ;
+矶>gàn|\ ;
+瓣>bàn|\ ;
+腮>sai|\ ;
+涅>niè|\ ;
+铐>kào|\ ;
+橱>chú|\ ;
+圭>gui|\ ;
+黝>yŏu|\ ;
+撮>cuo|\ ;
+躇>chú|\ ;
+踱>duò|\ ;
+哆>duo|\ ;
+夭>yao|\ ;
+樊>fán|\ ;
+徘>pái|\ ;
+亥>hài|\ ;
+褚>chŭ|\ ;
+苔>tai|\ ;
+恃>shì|\ ;
+酣>han|\ ;
+怠>dài|\ ;
+殉>xùn|\ ;
+揍>zòu|\ ;
+擂>léi|\ ;
+霖>lín|\ ;
+锄>chú|\ ;
+麟>lín|\ ;
+茵>yin|\ ;
+肴>yáo|\ ;
+骰>tóu|\ ;
+褂>guà|\ ;
+芸>yún|\ ;
+竿>gan|\ ;
+糙>cao|\ ;
+砚>yàn|\ ;
+砂>sha|\ ;
+闸>wèn|\ ;
+捍>hàn|\ ;
+肮>ang|\ ;
+咄>duo|\ ;
+唠>láo|\ ;
+颓>tuí|\ ;
+榴>liú|\ ;
+汰>tài|\ ;
+辙>chè|\ ;
+苇>wĕi|\ ;
+帷>wéi|\ ;
+谍>dié|\ ;
+臀>tún|\ ;
+啃>kĕn|\ ;
+羔>gao|\ ;
+芹>qín|\ ;
+拌>bàn|\ ;
+蜀>shŭ|\ ;
+诛>zhu|\ ;
+钝>dùn|\ ;
+栅>zhà|\ ;
+峙>zhì|\ ;
+韧>rèn|\ ;
+曙>shù|\ ;
+廓>kuò|\ ;
+茄>qié|\ ;
+呸>pei|\ ;
+仕>shì|\ ;
+渭>wèi|\ ;
+妾>qiè|\ ;
+肋>lèi|\ ;
+猾>huá|\ ;
+窒>zhì|\ ;
+咏>jué|\ ;
+皓>hào|\ ;
+掐>qia|\ ;
+懦>nuò|\ ;
+倔>jué|\ ;
+奄>yan|\ ;
+腓>féi|\ ;
+渣>zha|\ ;
+瘤>liú|\ ;
+薯>shŭ|\ ;
+楷>kăi|\ ;
+慑>shè|\ ;
+闽>mĭn|\ ;
+汛>xùn|\ ;
+啧>luó|\ ;
+嘈>cáo|\ ;
+梵>fàn|\ ;
+鳞>lín|\ ;
+拷>kăo|\ ;
+蓓>bèi|\ ;
+拭>shì|\ ;
+晖>hui|\ ;
+瑾>jĭn|\ ;
+骸>hái|\ ;
+骡>luó|\ ;
+硅>gui|\ ;
+侈>chĭ|\ ;
+夥>huŏ|\ ;
+穗>suì|\ ;
+沁>qìn|\ ;
+悴>cuì|\ ;
+琉>liú|\ ;
+驯>xún|\ ;
+纬>wĕi|\ ;
+嗜>shì|\ ;
+隧>suì|\ ;
+桔>jié|\ ;
+澈>chè|\ ;
+钮>niŭ|\ ;
+哧>chi|\ ;
+掺>càn|\ ;
+忖>cŭn|\ ;
+漱>shù|\ ;
+烙>lào|\ ;
+盔>kui|\ ;
+瘪>bie|\ ;
+眸>móu|\ ;
+蕃>fán|\ ;
+唆>suo|\ ;
+磋>cuo|\ ;
+伽>qié|\ ;
+垢>gòu|\ ;
+褪>tùn|\ ;
+瘸>qué|\ ;
+岚>lán|\ ;
+喳>cha|\ ;
+柿>shì|\ ;
+叱>chì|\ ;
+匣>xiá|\ ;
+惋>wăn|\ ;
+痰>tán|\ ;
+桦>huà|\ ;
+咎>jiù|\ ;
+憨>han|\ ;
+髓>suĭ|\ ;
+趾>zhĭ|\ ;
+炽>chì|\ ;
+孰>shú|\ ;
+揩>kai|\ ;
+窦>dòu|\ ;
+矢>shĭ|\ ;
+酝>yùn|\ ;
+潦>lăo|\ ;
+刨>bào|\ ;
+鬓>bìn|\ ;
+札>zhá|\ ;
+亵>xiè|\ ;
+俨>yăn|\ ;
+跺>duò|\ ;
+贮>zhŭ|\ ;
+悖>bèi|\ ;
+茬>chá|\ ;
+炙>zhì|\ ;
+濒>bin|\ ;
+睐>lài|\ ;
+偎>wei|\ ;
+蝎>xie|\ ;
+杵>chŭ|\ ;
+衅>xìn|\ ;
+楠>nán|\ ;
+韬>tao|\ ;
+抿>mĭn|\ ;
+垦>kĕn|\ ;
+筵>yán|\ ;
+瘟>wen|\ ;
+婪>lán|\ ;
+浒>cún|\ ;
+葵>kuí|\ ;
+飕>sou|\ ;
+蹑>niè|\ ;
+竺>zhú|\ ;
+吝>lìn|\ ;
+睫>jié|\ ;
+鹊>què|\ ;
+卉>huì|\ ;
+遁>dùn|\ ;
+庶>shù|\ ;
+蕊>ruĭ|\ ;
+诲>huì|\ ;
+缪>jiu|\ ;
+鑫>xin|\ ;
+睽>kuí|\ ;
+赣>gàn|\ ;
+喽>lōu|\ ;
+竣>jùn|\ ;
+馈>kuì|\ ;
+喋>dié|\ ;
+偌>ruò|\ ;
+碳>tàn|\ ;
+檀>tán|\ ;
+殆>dài|\ ;
+褒>bao|\ ;
+嗨>hai|\ ;
+诘>jié|\ ;
+抡>lún|\ ;
+鹫>jiù|\ ;
+晗>hán|\ ;
+沌>dùn|\ ;
+荤>hun|\ ;
+硫>liú|\ ;
+寐>mèi|\ ;
+橄>găn|\ ;
+榄>lăn|\ ;
+笋>sŭn|\ ;
+鼾>han|\ ;
+噬>shì|\ ;
+雯>wén|\ ;
+蟠>pán|\ ;
+阉>yan|\ ;
+桅>wéi|\ ;
+壕>háo|\ ;
+锚>máo|\ ;
+赁>rèn|\ ;
+剁>duò|\ ;
+腌>yan|\ ;
+缤>bin|\ ;
+嗖>sou|\ ;
+蜒>yán|\ ;
+淆>yáo|\ ;
+睿>ruì|\ ;
+豚>tún|\ ;
+雏>chú|\ ;
+遐>xiá|\ ;
+薰>xun|\ ;
+篓>lŏu|\ ;
+葆>băo|\ ;
+弛>chí|\ ;
+垛>duŏ|\ ;
+撅>jue|\ ;
+吠>fèi|\ ;
+绚>lào|\ ;
+馄>hún|\ ;
+饨>tún|\ ;
+枷>jia|\ ;
+胯>kuà|\ ;
+呗>bài|\ ;
+铝>lü̆|\ ;
+矜>jin|\ ;
+炖>dùn|\ ;
+闫>yàn|\ ;
+蹒>mán|\ ;
+泯>mĭn|\ ;
+袒>tăn|\ ;
+蜘>zhi|\ ;
+抠>kou|\ ;
+矗>chù|\ ;
+鳖>bie|\ ;
+耘>yún|\ ;
+醺>xun|\ ;
+烬>jìn|\ ;
+噤>jìn|\ ;
+髯>rán|\ ;
+蜿>wan|\ ;
+抉>jué|\ ;
+籁>lài|\ ;
+卯>măo|\ ;
+裴>péi|\ ;
+盎>àng|\ ;
+掰>bai|\ ;
+阪>băn|\ ;
+阑>lán|\ ;
+啐>cuì|\ ;
+湃>pài|\ ;
+啕>táo|\ ;
+诽>fĕi|\ ;
+斓>lán|\ ;
+娓>wĕi|\ ;
+摞>luò|\ ;
+刎>wĕn|\ ;
+刽>guì|\ ;
+榨>zhà|\ ;
+胭>yan|\ ;
+藻>zăo|\ ;
+驮>tuó|\ ;
+胚>pei|\ ;
+惰>duò|\ ;
+髅>lóu|\ ;
+嗫>niè|\ ;
+燔>fán|\ ;
+臊>sao|\ ;
+涝>lào|\ ;
+舀>yăo|\ ;
+咆>páo|\ ;
+拄>zhŭ|\ ;
+昊>hào|\ ;
+偕>jie|\ ;
+佗>tuó|\ ;
+赳>jiŭ|\ ;
+侏>zhu|\ ;
+躏>lìn|\ ;
+紊>wèn|\ ;
+箩>luó|\ ;
+咫>zhĭ|\ ;
+靳>jìn|\ ;
+鲨>sha|\ ;
+邃>suì|\ ;
+褴>băo|\ ;
+坍>tan|\ ;
+扉>fei|\ ;
+阙>què|\ ;
+涔>cén|\ ;
+皿>mĭn|\ ;
+傣>dăi|\ ;
+蹂>róu|\ ;
+瀚>hàn|\ ;
+皖>wăn|\ ;
+眈>dan|\ ;
+酋>qiú|\ ;
+雹>báo|\ ;
+忐>tăn|\ ;
+殡>bìn|\ ;
+猥>wĕi|\ ;
+亘>gèn|\ ;
+瘁>cuì|\ ;
+瑕>xiá|\ ;
+磷>lín|\ ;
+獗>jué|\ ;
+酉>yŏu|\ ;
+镐>găo|\ ;
+堰>yàn|\ ;
+芥>jiè|\ ;
+翡>fĕi|\ ;
+盹>dŭn|\ ;
+簪>zan|\ ;
+惬>qiè|\ ;
+糯>nuò|\ ;
+唁>yàn|\ ;
+谚>yàn|\ ;
+幺>yao|\ ;
+虱>shi|\ ;
+炜>wĕi|\ ;
+瑙>năo|\ ;
+纭>yún|\ ;
+遛>liù|\ ;
+骅>huá|\ ;
+谧>màn|\ ;
+褛>lü̆|\ ;
+恺>kăi|\ ;
+匮>guì|\ ;
+擞>sŏu|\ ;
+幡>fan|\ ;
+塾>shú|\ ;
+磐>pán|\ ;
+焊>hàn|\ ;
+敕>chì|\ ;
+馁>nĕi|\ ;
+汾>fén|\ ;
+晏>yàn|\ ;
+逅>hòu|\ ;
+崂>láo|\ ;
+娄>lóu|\ ;
+掣>chè|\ ;
+邂>xiè|\ ;
+叟>sŏu|\ ;
+臼>jiù|\ ;
+篾>miè|\ ;
+搐>chù|\ ;
+蚪>dŏu|\ ;
+淦>gàn|\ ;
+痘>dòu|\ ;
+苞>bao|\ ;
+戛>jiá|\ ;
+槟>bin|\ ;
+攫>jué|\ ;
+灸>jiŭ|\ ;
+溉>gài|\ ;
+谑>nüè|\ ;
+冽>liè|\ ;
+诌>zou|\ ;
+韭>jiŭ|\ ;
+麾>hui|\ ;
+裟>sha|\ ;
+恁>móu|\ ;
+汶>wèn|\ ;
+戍>shù|\ ;
+秸>jie|\ ;
+碴>chá|\ ;
+榭>xiè|\ ;
+纨>wán|\ ;
+酪>lào|\ ;
+粼>lín|\ ;
+璀>cuĭ|\ ;
+儡>lĕi|\ ;
+傀>gui|\ ;
+皈>gui|\ ;
+铀>yán|\ ;
+摺>zhé|\ ;
+袈>jia|\ ;
+叁>cen|\ ;
+镁>mĕi|\ ;
+忸>niŭ|\ ;
+瞰>kàn|\ ;
+珞>luò|\ ;
+傩>nuó|\ ;
+峥>yín|\ ;
+钅>jin|\ ;
+桀>jié|\ ;
+绯>fei|\ ;
+湮>yan|\ ;
+颏>hái|\ ;
+攸>bin|\ ;
+鸨>băo|\ ;
+垠>yín|\ ;
+蜗>gua|\ ;
+砺>gui|\ ;
+蚤>zăo|\ ;
+篙>gao|\ ;
+氮>dàn|\ ;
+黠>xiá|\ ;
+痣>zhì|\ ;
+榷>què|\ ;
+谩>mán|\ ;
+艮>gèn|\ ;
+轼>shì|\ ;
+馑>jĭn|\ ;
+馊>sou|\ ;
+饪>rèn|\ ;
+衩>chă|\ ;
+剜>wan|\ ;
+浚>jùn|\ ;
+钙>gài|\ ;
+镬>huò|\ ;
+愠>yùn|\ ;
+噙>qín|\ ;
+岑>cén|\ ;
+搽>chá|\ ;
+碣>jié|\ ;
+扪>mén|\ ;
+啾>jiu|\ ;
+呷>xia|\ ;
+衮>gŭn|\ ;
+忾>kài|\ ;
+蒿>hao|\ ;
+蚯>qiu|\ ;
+杳>yăo|\ ;
+芮>ruì|\ ;
+陨>yŭn|\ ;
+篝>gou|\ ;
+璨>càn|\ ;
+嶙>lín|\ ;
+蜚>fĕi|\ ;
+莓>méi|\ ;
+豌>wan|\ ;
+蓑>suo|\ ;
+娑>suo|\ ;
+仨>făn|\ ;
+蹶>jué|\ ;
+蚓>yĭn|\ ;
+褶>zhé|\ ;
+蛰>zhí|\ ;
+蹩>bié|\ ;
+怵>chù|\ ;
+亻>rén|\ ;
+癸>guĭ|\ ;
+舐>shì|\ ;
+袂>mèi|\ ;
+拮>jié|\ ;
+牒>dié|\ ;
+嗟>jie|\ ;
+疟>nüè|\ ;
+姘>pin|\ ;
+浣>wăn|\ ;
+沱>tuó|\ ;
+嗥>háo|\ ;
+嗲>diă|\ ;
+咤>zhà|\ ;
+厩>jiù|\ ;
+昙>tán|\ ;
+楂>chá|\ ;
+擀>găn|\ ;
+垓>gai|\ ;
+蔗>zhè|\ ;
+窈>yăo|\ ;
+徕>lái|\ ;
+幔>màn|\ ;
+啻>chì|\ ;
+槁>găo|\ ;
+妍>yán|\ ;
+邯>hán|\ ;
+挲>suo|\ ;
+遴>lín|\ ;
+峋>xún|\ ;
+诙>hui|\ ;
+偃>yăn|\ ;
+壬>rén|\ ;
+掇>duó|\ ;
+囤>dùn|\ ;
+耨>nòu|\ ;
+绺>liŭ|\ ;
+揿>qìn|\ ;
+袤>mào|\ ;
+釉>yòu|\ ;
+麝>shè|\ ;
+彗>huì|\ ;
+囡>nan|\ ;
+辔>pèi|\ ;
+荟>huì|\ ;
+霏>fei|\ ;
+胤>yìn|\ ;
+鸵>tuó|\ ;
+皋>gao|\ ;
+祗>zhi|\ ;
+栉>jié|\ ;
+姝>shu|\ ;
+佘>shé|\ ;
+蛀>zhù|\ ;
+趔>liè|\ ;
+颔>hàn|\ ;
+懑>mèn|\ ;
+孛>bèi|\ ;
+啮>niè|\ ;
+漕>cáo|\ ;
+蔻>kòu|\ ;
+偻>lóu|\ ;
+郸>dan|\ ;
+佰>băi|\ ;
+龛>kan|\ ;
+琨>kun|\ ;
+玳>dài|\ ;
+邰>tái|\ ;
+鲥>shí|\ ;
+孑>jié|\ ;
+逵>kuí|\ ;
+喟>kuì|\ ;
+纛>dào|\ ;
+炷>zhù|\ ;
+犒>kào|\ ;
+珈>jia|\ ;
+呦>you|\ ;
+镂>lòu|\ ;
+煲>bao|\ ;
+岷>mín|\ ;
+喑>yin|\ ;
+鱿>yóu|\ ;
+孱>càn|\ ;
+俪>lài|\ ;
+挞>jia|\ ;
+箸>zhù|\ ;
+铠>kăi|\ ;
+娆>răo|\ ;
+佝>gou|\ ;
+鳅>qiu|\ ;
+蚱>zhà|\ ;
+痨>láo|\ ;
+锲>qiè|\ ;
+祚>zuò|\ ;
+柚>yòu|\ ;
+狯>huá|\ ;
+赊>she|\ ;
+秆>găn|\ ;
+黜>chù|\ ;
+褓>băo|\ ;
+柩>jiù|\ ;
+遒>qiú|\ ;
+弑>shì|\ ;
+谲>jué|\ ;
+黍>shŭ|\ ;
+烩>huì|\ ;
+诿>wĕi|\ ;
+摈>bìn|\ ;
+螫>shì|\ ;
+颦>pín|\ ;
+覃>tán|\ ;
+昕>xin|\ ;
+淖>nào|\ ;
+贰>ben|\ ;
+筠>yún|\ ;
+恚>huì|\ ;
+莠>yŏu|\ ;
+睾>gao|\ ;
+荚>jiá|\ ;
+锉>cuò|\ ;
+橛>jué|\ ;
+阕>què|\ ;
+阄>jiu|\ ;
+峁>măo|\ ;
+咻>xiu|\ ;
+呲>hou|\ ;
+锌>xin|\ ;
+潍>wéi|\ ;
+馏>liù|\ ;
+苯>bĕn|\ ;
+桎>zhì|\ ;
+芾>fèi|\ ;
+矍>jué|\ ;
+忻>xin|\ ;
+篑>kuì|\ ;
+镢>jué|\ ;
+钛>tài|\ ;
+祉>zhĭ|\ ;
+氤>yin|\ ;
+狲>sun|\ ;
+夔>kuí|\ ;
+镔>bin|\ ;
+氲>yun|\ ;
+杈>cha|\ ;
+荀>xún|\ ;
+钺>huì|\ ;
+浃>jiá|\ ;
+痔>zhì|\ ;
+衽>rèn|\ ;
+燧>suì|\ ;
+囿>yòu|\ ;
+喙>huì|\ ;
+柑>gan|\ ;
+蜍>chú|\ ;
+缙>jìn|\ ;
+咩>mie|\ ;
+霾>mái|\ ;
+稔>rĕn|\ ;
+锛>ben|\ ;
+砣>tuó|\ ;
+珉>mín|\ ;
+嫔>pín|\ ;
+囵>lún|\ ;
+蹉>cuo|\ ;
+笞>chi|\ ;
+颉>jiá|\ ;
+铢>zhu|\ ;
+懋>mào|\ ;
+猱>náo|\ ;
+噱>jué|\ ;
+镍>niè|\ ;
+衾>qin|\ ;
+胛>jiă|\ ;
+耄>mào|\ ;
+橐>tuó|\ ;
+洙>zhu|\ ;
+恹>yàn|\ ;
+乜>mie|\ ;
+蛭>zhì|\ ;
+韪>wĕi|\ ;
+诨>hùn|\ ;
+赝>yàn|\ ;
+岿>kui|\ ;
+畹>wăn|\ ;
+彀>gòu|\ ;
+怫>fèi|\ ;
+荏>rĕn|\ ;
+蛔>huí|\ ;
+跎>tuó|\ ;
+聒>gua|\ ;
+鹞>yáo|\ ;
+逡>qun|\ ;
+楔>xie|\ ;
+玖>jiŭ|\ ;
+赭>zhĕ|\ ;
+羯>jié|\ ;
+蝈>guo|\ ;
+聩>kuì|\ ;
+痂>jia|\ ;
+殒>shì|\ ;
+逶>wei|\ ;
+宥>yòu|\ ;
+啖>dàn|\ ;
+燮>xiè|\ ;
+粲>càn|\ ;
+觐>jĭn|\ ;
+帼>guó|\ ;
+煨>wei|\ ;
+膑>bìn|\ ;
+辚>lín|\ ;
+樽>zun|\ ;
+媾>gòu|\ ;
+姹>chà|\ ;
+徇>xùn|\ ;
+薮>sŏu|\ ;
+坂>băn|\ ;
+庖>páo|\ ;
+鲟>xún|\ ;
+铧>huá|\ ;
+焖>mèn|\ ;
+肽>tài|\ ;
+牦>máo|\ ;
+猷>yóu|\ ;
+婕>jié|\ ;
+哞>mou|\ ;
+吒>zhà|\ ;
+谥>shì|\ ;
+铡>zhá|\ ;
+焙>bèi|\ ;
+榫>sŭn|\ ;
+洇>yin|\ ;
+饕>tao|\ ;
+殚>dan|\ ;
+绾>wăn|\ ;
+闱>wéi|\ ;
+噘>jue|\ ;
+唣>zào|\ ;
+葳>wei|\ ;
+诟>gòu|\ ;
+镭>léi|\ ;
+礅>dun|\ ;
+湄>méi|\ ;
+狎>xiá|\ ;
+撷>xié|\ ;
+诰>gào|\ ;
+豸>zhì|\ ;
+赧>năn|\ ;
+舨>băn|\ ;
+蜇>zhe|\ ;
+硌>luò|\ ;
+桤>guì|\ ;
+滟>yàn|\ ;
+洵>xún|\ ;
+刍>chú|\ ;
+兖>yăn|\ ;
+巽>xùn|\ ;
+铆>liŭ|\ ;
+虢>guó|\ ;
+濠>háo|\ ;
+渚>zhŭ|\ ;
+氵>san|\ ;
+呶>náo|\ ;
+荪>sun|\ ;
+圩>wéi|\ ;
+羸>léi|\ ;
+绦>tao|\ ;
+疥>jiè|\ ;
+鲧>gŭn|\ ;
+瘢>ban|\ ;
+歃>shà|\ ;
+觏>gòu|\ ;
+瑁>mào|\ ;
+珲>hún|\ ;
+澹>dàn|\ ;
+阗>jué|\ ;
+猡>luó|\ ;
+馗>kuí|\ ;
+泅>qiú|\ ;
+锰>jie|\ ;
+矾>fán|\ ;
+淬>cuì|\ ;
+稗>bài|\ ;
+躅>zhú|\ ;
+踯>zhí|\ ;
+蚩>chi|\ ;
+颀>kĕn|\ ;
+疸>dăn|\ ;
+鸷>zhì|\ ;
+柘>zhè|\ ;
+杼>zhù|\ ;
+缟>găo|\ ;
+孢>bao|\ ;
+洮>táo|\ ;
+岬>jiă|\ ;
+鲲>kun|\ ;
+耋>diè|\ ;
+铊>shé|\ ;
+苒>răn|\ ;
+柞>zuò|\ ;
+烷>wán|\ ;
+秫>shú|\ ;
+雉>zhì|\ ;
+矸>gan|\ ;
+焱>yàn|\ ;
+赅>gai|\ ;
+晷>guĭ|\ ;
+椁>guŏ|\ ;
+澍>shù|\ ;
+芩>qín|\ ;
+妊>rèn|\ ;
+酽>yàn|\ ;
+颢>hào|\ ;
+痱>fèi|\ ;
+牝>pìn|\ ;
+曜>yào|\ ;
+逑>qiú|\ ;
+饬>chì|\ ;
+岫>xiù|\ ;
+帏>wéi|\ ;
+哏>hĕn|\ ;
+坨>tuó|\ ;
+讦>jié|\ ;
+痈>lie|\ ;
+踅>chì|\ ;
+豕>shĭ|\ ;
+疱>pào|\ ;
+磔>zhé|\ ;
+悱>fĕi|\ ;
+揆>kuí|\ ;
+蕨>jué|\ ;
+酚>fen|\ ;
+鳗>mán|\ ;
+罅>xià|\ ;
+鹧>zhè|\ ;
+畈>fàn|\ ;
+瓒>zàn|\ ;
+夤>yín|\ ;
+囗>wéi|\ ;
+茱>zhu|\ ;
+餮>tiè|\ ;
+酡>tuó|\ ;
+暌>kuí|\ ;
+栀>zhi|\ ;
+濑>lài|\ ;
+庥>xiu|\ ;
+掴>guó|\ ;
+郗>chi|\ ;
+厝>cuò|\ ;
+笳>jia|\ ;
+痧>sha|\ ;
+铩>sha|\ ;
+睃>jùn|\ ;
+珏>jué|\ ;
+汊>chà|\ ;
+恽>yùn|\ ;
+恂>xún|\ ;
+忄>shù|\ ;
+氦>hài|\ ;
+鬣>liè|\ ;
+鞣>róu|\ ;
+颟>mán|\ ;
+怼>duì|\ ;
+焐>tao|\ ;
+韫>yùn|\ ;
+崴>wei|\ ;
+餍>yàn|\ ;
+踟>chí|\ ;
+皴>cun|\ ;
+衤>chă|\ ;
+旄>máo|\ ;
+缦>màn|\ ;
+缗>mín|\ ;
+廪>lĭn|\ ;
+趸>dŭn|\ ;
+豉>chĭ|\ ;
+痿>wĕi|\ ;
+睢>sui|\ ;
+瀣>xiè|\ ;
+淝>féi|\ ;
+怍>zuò|\ ;
+馐>xiu|\ ;
+徭>yáo|\ ;
+嚯>huò|\ ;
+呖>bēi|\ ;
+攉>huò|\ ;
+蕙>huì|\ ;
+邳>péi|\ ;
+貉>háo|\ ;
+滁>chú|\ ;
+龈>kĕn|\ ;
+繇>yáo|\ ;
+疖>jié|\ ;
+歆>xin|\ ;
+赉>lài|\ ;
+琰>yăn|\ ;
+纾>shu|\ ;
+迨>dài|\ ;
+狺>yín|\ ;
+帔>pèi|\ ;
+帙>zhì|\ ;
+咴>huá|\ ;
+薅>hao|\ ;
+麈>zhŭ|\ ;
+鲑>gui|\ ;
+蹰>chú|\ ;
+糌>zán|\ ;
+褫>chĭ|\ ;
+楮>chŭ|\ ;
+灏>hào|\ ;
+捭>băi|\ ;
+蕤>ruí|\ ;
+葭>jia|\ ;
+葚>rèn|\ ;
+荨>xún|\ ;
+郅>zhì|\ ;
+锗>duŏ|\ ;
+鳃>sai|\ ;
+镊>liù|\ ;
+鎏>liú|\ ;
+趵>bào|\ ;
+酹>lèi|\ ;
+箪>dan|\ ;
+蚶>han|\ ;
+镅>méi|\ ;
+畲>she|\ ;
+桡>náo|\ ;
+枸>gou|\ ;
+溴>xiù|\ ;
+浔>xún|\ ;
+狒>fèi|\ ;
+狁>yŭn|\ ;
+揸>zha|\ ;
+茴>huí|\ ;
+傧>bìn|\ ;
+郧>pŏu|\ ;
+辊>gŭn|\ ;
+钒>fán|\ ;
+麇>jun|\ ;
+酢>zuò|\ ;
+臬>niè|\ ;
+衿>jin|\ ;
+瘙>sao|\ ;
+毵>san|\ ;
+轫>rèn|\ ;
+琬>wăn|\ ;
+孓>jué|\ ;
+洌>liè|\ ;
+阚>kàn|\ ;
+闼>kai|\ ;
+苷>gan|\ ;
+堞>dié|\ ;
+坌>bèn|\ ;
+勰>xié|\ ;
+耒>lĕi|\ ;
+睚>yái|\ ;
+昀>yún|\ ;
+椤>luó|\ ;
+绀>gàn|\ ;
+妗>jìn|\ ;
+悝>kui|\ ;
+嵯>cuó|\ ;
+嘞>lēi|\ ;
+氽>tŭn|\ ;
+錾>huò|\ ;
+酯>zhĭ|\ ;
+箧>qiè|\ ;
+疣>yóu|\ ;
+镓>jia|\ ;
+锸>chá|\ ;
+胝>zhi|\ ;
+檩>lĭn|\ ;
+槎>chá|\ ;
+枳>zhĭ|\ ;
+尻>kao|\ ;
+沩>huì|\ ;
+悃>kŭn|\ ;
+蕞>zuì|\ ;
+荽>sui|\ ;
+墁>màn|\ ;
+畚>bĕn|\ ;
+俅>qiú|\ ;
+镏>liú|\ ;
+碓>duì|\ ;
+礻>shì|\ ;
+挈>qiè|\ ;
+杲>găo|\ ;
+楸>qiu|\ ;
+桕>gao|\ ;
+溷>hùn|\ ;
+泔>gan|\ ;
+愦>kuì|\ ;
+崤>yáo|\ ;
+菽>shú|\ ;
+俳>pái|\ ;
+雠>chi|\ ;
+趱>zăn|\ ;
+翥>zhù|\ ;
+筮>shì|\ ;
+颞>niè|\ ;
+鸱>zhi|\ ;
+锴>kăi|\ ;
+脬>pao|\ ;
+戡>kan|\ ;
+缫>sao|\ ;
+骖>can|\ ;
+妫>gui|\ ;
+涞>guo|\ ;
+洄>huí|\ ;
+阈>yàn|\ ;
+獯>xun|\ ;
+狍>páo|\ ;
+嵬>wéi|\ ;
+呔>dai|\ ;
+墀>chí|\ ;
+鄢>yan|\ ;
+郯>tán|\ ;
+鼐>nài|\ ;
+谰>lán|\ ;
+鼹>yăn|\ ;
+魑>chi|\ ;
+鳕>xuĕ|\ ;
+跆>tái|\ ;
+袢>pàn|\ ;
+矬>cuó|\ ;
+镞>xín|\ ;
+碚>bèi|\ ;
+愍>mĭn|\ ;
+歙>shè|\ ;
+暾>tun|\ ;
+濉>sui|\ ;
+溲>sou|\ ;
+飧>sun|\ ;
+犭>făn|\ ;
+喈>jie|\ ;
+捩>liè|\ ;
+菀>wăn|\ ;
+荦>luò|\ ;
+埙>xun|\ ;
+陟>zhì|\ ;
+侉>kua|\ ;
+氖>năi|\ ;
+骱>xiè|\ ;
+鳟>zùn|\ ;
+霈>pèi|\ ;
+蠖>huò|\ ;
+皲>jun|\ ;
+瘊>hóu|\ ;
+鸹>gua|\ ;
+铙>náo|\ ;
+腩>năn|\ ;
+刖>yuè|\ ;
+氘>dao|\ ;
+曛>xun|\ ;
+槿>jĭn|\ ;
+榧>fĕi|\ ;
+骘>zhì|\ ;
+潴>zhu|\ ;
+泮>pàn|\ ;
+搦>nuò|\ ;
+堇>jĭn|\ ;
+莳>shí|\ ;
+堙>yin|\ ;
+垴>năo|\ ;
+坻>chí|\ ;
+隗>wĕi|\ ;
+厣>yăn|\ ;
+囟>xìn|\ ;
+丿>piĕ|\ ;
+鼬>yòu|\ ;
+骺>gòu|\ ;
+鍪>móu|\ ;
+跏>jia|\ ;
+跖>zhí|\ ;
+醪>láo|\ ;
+糅>rŏu|\ ;
+蚋>ruì|\ ;
+袷>jiá|\ ;
+癍>ban|\ ;
+镧>làn|\ ;
+铗>jiá|\ ;
+辏>còu|\ ;
+橥>zhu|\ ;
+桫>suo|\ ;
+骀>tái|\ ;
+嫘>léi|\ ;
+懔>lĭn|\ ;
+憷>chŭ|\ ;
+猞>shè|\ ;
+嵝>lŏu|\ ;
+摭>zhí|\ ;
+藿>huò|\ ;
+蒌>liŭ|\ ;
+埒>lèi|\ ;
+鄞>yín|\ ;
+郜>gào|\ ;
+儋>dan|\ ;
+卣>yŏu|\ ;
+爻>yáo|\ ;
+炔>que|\ ;
+雒>luò|\ ;
+霪>yín|\ ;
+糗>qiŭ|\ ;
+箬>ruò|\ ;
+痤>cuó|\ ;
+镲>chă|\ ;
+锟>kun|\ ;
+钕>nü̆|\ ;
+眭>sui|\ ;
+旒>liú|\ ;
+旆>pèi|\ ;
+旰>gàn|\ ;
+樾>yuè|\ ;
+枘>ruì|\ ;
+阍>hun|\ ;
+忉>dao|\ ;
+廨>xiè|\ ;
+彳>chì|\ ;
+岣>gŏu|\ ;
+嗾>sŏu|\ ;
+哚>duŏ|\ ;
+掊>póu|\ ;
+拶>zăn|\ ;
+蓍>shi|\ ;
+芪>chí|\ ;
+艹>căo|\ ;
+坩>gan|\ ;
+郇>xún|\ ;
+隈>wei|\ ;
+谳>yàn|\ ;
+讠>yán|\ ;
+侑>yòu|\ ;
+亍>chù|\ ;
+躐>liè|\ ;
+蹯>fán|\ ;
+踬>zhì|\ ;
+糁>san|\ ;
+篚>fĕi|\ ;
+篌>hóu|\ ;
+蛱>jiá|\ ;
+裰>duo|\ ;
+镙>luó|\ ;
+锇>tiĕ|\ ;
+钽>dàn|\ ;
+钣>băn|\ ;
+砘>dùn|\ ;
+砗>che|\ ;
+熘>liu|\ ;
+胙>zuò|\ ;
+毳>cuì|\ ;
+樗>chu|\ ;
+柰>nài|\ ;
+玢>bin|\ ;
+缧>léi|\ ;
+绐>dài|\ ;
+绁>xiè|\ ;
+潆>pie|\ ;
+溆>lóu|\ ;
+阃>kŭn|\ ;
+崃>lái|\ ;
+噻>sāi|\ ;
+撙>zŭn|\ ;
+蔸>dou|\ ;
+菡>hàn|\ ;
+郓>yùn|\ ;
+陧>niè|\ ;
+诔>lĕi|\ ;
+龠>yuè|\ ;
+偾>fèn|\ ;
+剀>kăi|\ ;
+卮>zhi|\ ;
+钡>bèi|\ ;
+髡>kun|\ ;
+鳜>jué|\ ;
+鼍>tuó|\ ;
+蹀>dié|\ ;
+螭>chi|\ ;
+蝤>qiú|\ ;
+蝣>yóu|\ ;
+蚧>jiè|\ ;
+虺>hui|\ ;
+襻>pàn|\ ;
+褙>bèi|\ ;
+窨>xun|\ ;
+锎>kai|\ ;
+铈>shì|\ ;
+钔>mén|\ ;
+砉>huò|\ ;
+煺>tuì|\ ;
+栲>kăo|\ ;
+柝>tuò|\ ;
+甾>zai|\ ;
+浼>mĕi|\ ;
+唑>zuò|\ ;
+蕈>xùn|\ ;
+菸>yan|\ ;
+埭>dài|\ ;
+埽>sào|\ ;
+埴>zhí|\ ;
+坼>chè|\ ;
+劢>mài|\ ;
+郏>dòu|\ ;
+诖>guà|\ ;
+蠃>luŏ|\ ;
+厍>shè|\ ;
+鬏>jiu|\ ;
+髹>xiu|\ ;
+鲱>fei|\ ;
+鲩>wăn|\ ;
+鲒>jié|\ ;
+觖>jué|\ ;
+貅>xiu|\ ;
+躞>xiè|\ ;
+醢>hăi|\ ;
+醅>pei|\ ;
+艉>wĕi|\ ;
+舳>zhú|\ ;
+筘>kòu|\ ;
+笱>gŏu|\ ;
+缶>fŏu|\ ;
+蟪>huì|\ ;
+蟊>máo|\ ;
+螓>qín|\ ;
+蜾>guŏ|\ ;
+蚰>yóu|\ ;
+聃>dan|\ ;
+瓞>dié|\ ;
+锞>kuă|\ ;
+铟>yin|\ ;
+铕>yŏu|\ ;
+瞀>mào|\ ;
+眵>chi|\ ;
+憝>duì|\ ;
+爝>jué|\ ;
+熳>màn|\ ;
+焓>hán|\ ;
+殳>shu|\ ;
+腧>shù|\ ;
+胍>gua|\ ;
+牖>yŏu|\ ;
+赆>jìn|\ ;
+昴>măo|\ ;
+昝>zăn|\ ;
+炅>guì|\ ;
+瓿>pŏu|\ ;
+桷>jué|\ ;
+柽>jué|\ ;
+柙>xiá|\ ;
+缑>gou|\ ;
+驺>zou|\ ;
+彘>zhì|\ ;
+遘>gòu|\ ;
+隳>hui|\ ;
+廑>jĭn|\ ;
+庹>tuŏ|\ ;
+馓>săn|\ ;
+狃>niŭ|\ ;
+豳>bin|\ ;
+崞>guo|\ ;
+唼>shà|\ ;
+哳>zha|\ ;
+摅>jiu|\ ;
+揲>shé|\ ;
+匏>páo|\ ;
+蘩>fán|\ ;
+藁>găo|\ ;
+荬>măi|\ ;
+荩>jìn|\ ;
+茛>gèn|\ ;
+茌>chí|\ ;
+艿>năi|\ ;
+垲>kăi|\ ;
+垤>dié|\ ;
+邗>hán|\ ;
+陔>gai|\ ;
+卺>jĭn|\ ;
+侔>móu|\ ;
+刿>guì|\ ;
+鼢>fén|\ ;
+髌>bìn|\ ;
+鳘>mĭn|\ ;
+鲽>dié|\ ;
+鲔>wĕi|\ ;
+鲐>tái|\ ;
+龅>páo|\ ;
+觯>zhì|\ ;
+酐>gan|\ ;
+絷>zhí|\ ;
+糇>hóu|\ ;
+艚>cáo|\ ;
+簋>guĭ|\ ;
+篼>dou|\ ;
+螨>măn|\ ;
+蛑>móu|\ ;
+蛞>kuò|\ ;
+蛲>ráo|\ ;
+蚺>rán|\ ;
+裉>kèn|\ ;
+袼>luò|\ ;
+瘕>jiă|\ ;
+疳>gan|\ ;
+镤>lán|\ ;
+镘>màn|\ ;
+镄>fèi|\ ;
+铹>láo|\ ;
+钆>qiú|\ ;
+罨>yăn|\ ;
+磙>gŭn|\ ;
+硇>náo|\ ;
+砩>fèi|\ ;
+悫>què|\ ;
+炱>tái|\ ;
+炻>luò|\ ;
+膦>lìn|\ ;
+膪>zhà|\ ;
+脞>cuŏ|\ ;
+毹>shu|\ ;
+赇>qiú|\ ;
+轺>yáo|\ ;
+轵>dié|\ ;
+檫>chá|\ ;
+榍>xiè|\ ;
+榀>pĭn|\ ;
+棼>fén|\ ;
+栝>gua|\ ;
+栳>lăo|\ ;
+栊>láo|\ ;
+绲>gŭn|\ ;
+媸>chi|\ ;
+宄>guĭ|\ ;
+漤>gan|\ ;
+滠>shè|\ ;
+阌>wén|\ ;
+庋>guĭ|\ ;
+馇>cha|\ ;
+饣>shí|\ ;
+夂>chŭ|\ ;
+獬>xiè|\ ;
+崦>yan|\ ;
+嚆>hao|\ ;
+甙>dài|\ ;
+撖>hàn|\ ;
+薹>tái|\ ;
+薤>xiè|\ ;
+萏>dàn|\ ;
+莰>kăn|\ ;
+茆>măo|\ ;
+堠>hòu|\ ;
+埘>shí|\ ;
+郾>yăn|\ ;
+郄>què|\ ;
+卩>jié|\ ;
+谮>zèn|\ ;
+谇>suì|\ ;
+僦>jiù|\ ;
+匦>guĭ|\ ;
+乇>zhé|\ ;
+酞>tài|\ ;
+龤>xié|\ ;
+龣>dou|\ ;
+龞>bie|\ ;
+龝>jun|\ ;
+龜>gui|\ ;
+龕>kan|\ ;
+龑>yăn|\ ;
+龂>kĕn|\ ;
+齽>jìn|\ ;
+齼>chŭ|\ ;
+齺>zou|\ ;
+齳>nĕn|\ ;
+齰>cuò|\ ;
+齭>chŭ|\ ;
+齫>kŭn|\ ;
+齩>yăo|\ ;
+齨>jiù|\ ;
+齧>niè|\ ;
+齦>kĕn|\ ;
+齥>xiè|\ ;
+齣>chu|\ ;
+齝>chi|\ ;
+齚>cuò|\ ;
+齙>páo|\ ;
+齘>xiè|\ ;
+齗>kĕn|\ ;
+齒>chĭ|\ ;
+齇>zha|\ ;
+齅>xiù|\ ;
+齁>hou|\ ;
+鼽>qiú|\ ;
+鼼>yăo|\ ;
+鼺>léi|\ ;
+鼸>hou|\ ;
+鼴>yăn|\ ;
+鼲>hún|\ ;
+鼭>shí|\ ;
+鼫>shí|\ ;
+鼧>tuó|\ ;
+鼤>wén|\ ;
+鼣>fèi|\ ;
+鼡>shŭ|\ ;
+鼛>gao|\ ;
+鼗>táo|\ ;
+鼖>fén|\ ;
+鼉>tuó|\ ;
+鼈>bie|\ ;
+鼅>zhi|\ ;
+鼄>zhu|\ ;
+黽>mĭn|\ ;
+黺>fĕn|\ ;
+黹>zhĭ|\ ;
+黶>yăn|\ ;
+黵>dăn|\ ;
+黴>méi|\ ;
+黲>căn|\ ;
+黱>dài|\ ;
+黮>dăn|\ ;
+黭>yan|\ ;
+黫>yin|\ ;
+黪>căn|\ ;
+黤>yăn|\ ;
+黣>mĕi|\ ;
+黡>yăn|\ ;
+黕>dan|\ ;
+黒>dăn|\ ;
+黐>chi|\ ;
+黈>tŏu|\ ;
+黅>jin|\ ;
+黂>fén|\ ;
+黁>nen|\ ;
+黀>zou|\ ;
+麳>lái|\ ;
+麰>móu|\ ;
+麭>pào|\ ;
+麥>mài|\ ;
+麣>yán|\ ;
+麚>jia|\ ;
+麙>yán|\ ;
+麕>jun|\ ;
+麔>jiù|\ ;
+麐>lín|\ ;
+麏>jun|\ ;
+麍>liú|\ ;
+麆>chú|\ ;
+麀>you|\ ;
+鹾>cuó|\ ;
+鹽>yán|\ ;
+鹺>cuó|\ ;
+鹶>jin|\ ;
+鹱>huò|\ ;
+鹠>liú|\ ;
+鹛>méi|\ ;
+鹎>bei|\ ;
+鹍>kun|\ ;
+鸺>xiu|\ ;
+鸴>xué|\ ;
+鸤>shi|\ ;
+鸙>yuè|\ ;
+鸔>bào|\ ;
+鸓>lĕi|\ ;
+鸑>yuè|\ ;
+鸌>huò|\ ;
+鸅>zhé|\ ;
+鸁>luó|\ ;
+鸀>shú|\ ;
+鷽>xué|\ ;
+鷷>zun|\ ;
+鷶>măi|\ ;
+鷲>jiù|\ ;
+鷱>kao|\ ;
+鷰>yàn|\ ;
+鷭>fán|\ ;
+鷪>yan|\ ;
+鷨>hua|\ ;
+鷣>yín|\ ;
+鷢>jué|\ ;
+鷜>lóu|\ ;
+鷙>zhì|\ ;
+鷘>chì|\ ;
+鷕>yăo|\ ;
+鷓>zhè|\ ;
+鷎>gao|\ ;
+鷇>kòu|\ ;
+鷃>yàn|\ ;
+鷂>yào|\ ;
+鶽>sŭn|\ ;
+鶹>liú|\ ;
+鶸>ruò|\ ;
+鶷>xià|\ ;
+鶵>chú|\ ;
+鶳>shi|\ ;
+鶨>dùn|\ ;
+鶥>méi|\ ;
+鶤>yùn|\ ;
+鶢>kun|\ ;
+鶠>yăn|\ ;
+鶜>máo|\ ;
+鶛>jie|\ ;
+鶖>qiu|\ ;
+鶔>róu|\ ;
+鶒>chì|\ ;
+鶐>shù|\ ;
+鶆>lái|\ ;
+鵾>kun|\ ;
+鵲>què|\ ;
+鵯>bei|\ ;
+鵭>duò|\ ;
+鵨>shu|\ ;
+鵣>lài|\ ;
+鵘>jùn|\ ;
+鵔>xùn|\ ;
+鵐>jùn|\ ;
+鵎>tuŏ|\ ;
+鵊>jiá|\ ;
+鵅>luò|\ ;
+鵄>chi|\ ;
+鵂>xiu|\ ;
+鵀>rèn|\ ;
+鴾>móu|\ ;
+鴼>luò|\ ;
+鴹>rén|\ ;
+鴸>zhu|\ ;
+鴷>liè|\ ;
+鴳>yàn|\ ;
+鴲>zhi|\ ;
+鴰>gua|\ ;
+鴩>tiĕ|\ ;
+鴢>yòu|\ ;
+鴠>dàn|\ ;
+鴟>chi|\ ;
+鴙>zhì|\ ;
+鴖>wén|\ ;
+鴕>tuó|\ ;
+鴓>miè|\ ;
+鴐>jia|\ ;
+鴍>wén|\ ;
+鴊>jia|\ ;
+鴈>yàn|\ ;
+鴇>băo|\ ;
+鴃>jué|\ ;
+鴂>juè|\ ;
+鴁>jué|\ ;
+鴀>fŏu|\ ;
+鳾>shi|\ ;
+鳼>wén|\ ;
+鳻>fen|\ ;
+鳹>qín|\ ;
+鳷>zhi|\ ;
+鳵>băo|\ ;
+鳲>shi|\ ;
+鳱>gan|\ ;
+鳮>hàn|\ ;
+鳫>yàn|\ ;
+鳩>jiu|\ ;
+鳤>dăo|\ ;
+鳡>găn|\ ;
+鳚>guì|\ ;
+鳋>sao|\ ;
+鳂>wei|\ ;
+鳁>wen|\ ;
+鳀>shì|\ ;
+鲼>fèn|\ ;
+鲺>shi|\ ;
+鲰>zou|\ ;
+鲪>jun|\ ;
+鲘>hòu|\ ;
+鲓>kăo|\ ;
+鲎>hòu|\ ;
+鲊>zhă|\ ;
+鲉>yóu|\ ;
+鲀>tún|\ ;
+鱽>dao|\ ;
+鱴>miè|\ ;
+鱲>liè|\ ;
+鱯>huò|\ ;
+鱥>guì|\ ;
+鱤>găn|\ ;
+鱢>sao|\ ;
+鱡>zéi|\ ;
+鱟>hòu|\ ;
+鱝>fèn|\ ;
+鱘>xún|\ ;
+鱗>lín|\ ;
+鱖>guì|\ ;
+鱕>fan|\ ;
+鱒>zùn|\ ;
+鱏>xún|\ ;
+鱊>jué|\ ;
+鱉>bie|\ ;
+鱈>xuĕ|\ ;
+鱃>qiu|\ ;
+鱁>zhú|\ ;
+鰽>qiú|\ ;
+鰻>mán|\ ;
+鰺>sao|\ ;
+鰵>mĭn|\ ;
+鰴>hui|\ ;
+鰯>ruò|\ ;
+鰮>wen|\ ;
+鰬>can|\ ;
+鰩>yáo|\ ;
+鰧>dié|\ ;
+鰤>shi|\ ;
+鰣>shí|\ ;
+鰡>liú|\ ;
+鰝>hào|\ ;
+鰛>wen|\ ;
+鰙>ruò|\ ;
+鰖>tuŏ|\ ;
+鰕>xiá|\ ;
+鰓>sai|\ ;
+鰍>qiu|\ ;
+鰌>qiú|\ ;
+鰋>yăn|\ ;
+鰈>dié|\ ;
+鰇>qiè|\ ;
+鰄>wei|\ ;
+鰃>wei|\ ;
+鯺>zéi|\ ;
+鯸>hóu|\ ;
+鯷>shì|\ ;
+鯶>hŭn|\ ;
+鯴>shi|\ ;
+鯯>zhì|\ ;
+鯫>zou|\ ;
+鯦>jiù|\ ;
+鯤>kun|\ ;
+鯡>fei|\ ;
+鯠>lái|\ ;
+鯜>qiè|\ ;
+鯘>nĕi|\ ;
+鯌>gào|\ ;
+鯋>sha|\ ;
+鯊>sha|\ ;
+鯄>qiú|\ ;
+鯀>gŭn|\ ;
+鮿>zhé|\ ;
+鮾>nĕi|\ ;
+鮼>qin|\ ;
+鮻>sha|\ ;
+鮶>jun|\ ;
+鮵>duó|\ ;
+鮳>kăo|\ ;
+鮰>huí|\ ;
+鮭>gui|\ ;
+鮪>wĕi|\ ;
+鮥>luò|\ ;
+鮤>liè|\ ;
+鮣>yìn|\ ;
+鮠>wéi|\ ;
+鮜>hòu|\ ;
+鮛>shu|\ ;
+鮚>jié|\ ;
+鮓>zhă|\ ;
+鮑>bào|\ ;
+鮐>tái|\ ;
+鮎>bao|\ ;
+鮌>gŭn|\ ;
+鮇>wèi|\ ;
+鮀>tuó|\ ;
+魽>han|\ ;
+魻>xiá|\ ;
+魷>yóu|\ ;
+魵>fén|\ ;
+魭>wăn|\ ;
+魬>făn|\ ;
+魪>jiè|\ ;
+魨>tún|\ ;
+魦>sha|\ ;
+魤>băn|\ ;
+魠>tuo|\ ;
+魜>rén|\ ;
+魛>dao|\ ;
+魘>yăn|\ ;
+魋>tuí|\ ;
+魀>jiè|\ ;
+鬽>mèi|\ ;
+鬹>gui|\ ;
+鬸>liù|\ ;
+鬶>gui|\ ;
+鬮>jiu|\ ;
+鬭>dòu|\ ;
+鬬>dòu|\ ;
+鬫>hăn|\ ;
+鬪>dòu|\ ;
+鬧>nào|\ ;
+鬦>dòu|\ ;
+鬥>dòu|\ ;
+鬢>bìn|\ ;
+鬛>liè|\ ;
+鬘>mán|\ ;
+鬗>màn|\ ;
+鬖>san|\ ;
+鬌>duŏ|\ ;
+鬂>bìn|\ ;
+髿>sha|\ ;
+髺>guà|\ ;
+髳>máo|\ ;
+髱>pào|\ ;
+髩>bìn|\ ;
+髨>kun|\ ;
+髧>dàn|\ ;
+髥>rán|\ ;
+髤>xiu|\ ;
+髞>zào|\ ;
+髝>lào|\ ;
+髛>kao|\ ;
+髙>gao|\ ;
+髕>bìn|\ ;
+髐>náo|\ ;
+髏>lóu|\ ;
+髄>suĭ|\ ;
+骽>tuĭ|\ ;
+骻>kuà|\ ;
+骴>chi|\ ;
+骲>bao|\ ;
+骯>ang|\ ;
+骭>gàn|\ ;
+骫>wĕi|\ ;
+骪>wĕi|\ ;
+骙>kuí|\ ;
+骎>qin|\ ;
+骍>xin|\ ;
+骃>yin|\ ;
+驠>chí|\ ;
+驟>zòu|\ ;
+驞>bin|\ ;
+驝>tuo|\ ;
+驘>luó|\ ;
+驗>yàn|\ ;
+驖>tiĕ|\ ;
+驔>tán|\ ;
+驒>tuó|\ ;
+驑>liú|\ ;
+驎>lín|\ ;
+驊>huá|\ ;
+驇>zhì|\ ;
+驂>can|\ ;
+騾>luó|\ ;
+騷>sao|\ ;
+騶>zou|\ ;
+騴>yàn|\ ;
+騲>căo|\ ;
+騮>liú|\ ;
+騭>zhì|\ ;
+騩>kuì|\ ;
+騨>tuó|\ ;
+騧>gua|\ ;
+騥>róu|\ ;
+騤>kuí|\ ;
+騢>xiá|\ ;
+騟>gui|\ ;
+騞>huò|\ ;
+騛>fei|\ ;
+騕>yăo|\ ;
+騔>jié|\ ;
+験>yăn|\ ;
+騒>sao|\ ;
+騑>fei|\ ;
+騐>yàn|\ ;
+騋>lái|\ ;
+騊>táo|\ ;
+騉>kun|\ ;
+騇>shĕ|\ ;
+駿>jùn|\ ;
+駾>tuì|\ ;
+駻>hàn|\ ;
+駸>qin|\ ;
+駵>liú|\ ;
+駴>xiè|\ ;
+駳>dàn|\ ;
+駱>luò|\ ;
+駰>yin|\ ;
+駯>zhu|\ ;
+駭>hài|\ ;
+駨>xún|\ ;
+駦>jià|\ ;
+駤>zhì|\ ;
+駣>táo|\ ;
+駠>liú|\ ;
+駞>tuó|\ ;
+駝>tuó|\ ;
+駛>shĭ|\ ;
+駘>tái|\ ;
+駖>dài|\ ;
+駕>jià|\ ;
+駐>zhù|\ ;
+駂>băo|\ ;
+駀>yóu|\ ;
+馾>dàn|\ ;
+馽>zhí|\ ;
+馼>wén|\ ;
+馻>yĭn|\ ;
+馸>xìn|\ ;
+馷>pèi|\ ;
+馶>zhi|\ ;
+馵>zhù|\ ;
+馴>xún|\ ;
+馳>chí|\ ;
+馲>tuo|\ ;
+馱>duò|\ ;
+馰>dài|\ ;
+馯>hán|\ ;
+馪>bin|\ ;
+馩>fén|\ ;
+馧>wen|\ ;
+馣>yăn|\ ;
+馡>fei|\ ;
+馠>han|\ ;
+馚>fén|\ ;
+馘>guó|\ ;
+馃>guŏ|\ ;
+馂>jùn|\ ;
+饾>dòu|\ ;
+饸>jiá|\ ;
+饳>duò|\ ;
+饦>tuo|\ ;
+饠>luó|\ ;
+饜>yàn|\ ;
+饚>hài|\ ;
+饙>fen|\ ;
+饖>huì|\ ;
+饒>ráo|\ ;
+饏>dàn|\ ;
+饎>chì|\ ;
+饋>kuì|\ ;
+饊>săn|\ ;
+饉>jĭn|\ ;
+饈>xiu|\ ;
+饅>mán|\ ;
+饂>yún|\ ;
+饀>táo|\ ;
+餿>sou|\ ;
+餾>liù|\ ;
+餽>kuì|\ ;
+餻>gao|\ ;
+餷>cha|\ ;
+餵>wèi|\ ;
+餴>fen|\ ;
+餱>hóu|\ ;
+餯>huì|\ ;
+餫>hún|\ ;
+餧>wèi|\ ;
+餥>fĕi|\ ;
+餤>tán|\ ;
+餝>shì|\ ;
+餜>guŏ|\ ;
+餛>hún|\ ;
+餚>yáo|\ ;
+餙>kun|\ ;
+餖>dòu|\ ;
+餕>jùn|\ ;
+餒>nĕi|\ ;
+餋>sùn|\ ;
+餆>yáo|\ ;
+餁>rèn|\ ;
+餀>hài|\ ;
+飿>duò|\ ;
+飾>shì|\ ;
+飽>băo|\ ;
+飻>tiè|\ ;
+飹>liŭ|\ ;
+飸>tao|\ ;
+飷>jiĕ|\ ;
+飲>yĭn|\ ;
+飱>sun|\ ;
+飰>fàn|\ ;
+飯>fàn|\ ;
+飮>yĭn|\ ;
+飭>chì|\ ;
+飪>rèn|\ ;
+飩>tún|\ ;
+飥>tuo|\ ;
+飡>can|\ ;
+飠>shí|\ ;
+飝>fei|\ ;
+飜>fan|\ ;
+飛>fei|\ ;
+飗>liú|\ ;
+飖>yáo|\ ;
+飅>liú|\ ;
+飀>liú|\ ;
+颿>fán|\ ;
+颾>sao|\ ;
+颽>kăi|\ ;
+颼>sou|\ ;
+颻>yáo|\ ;
+颹>wĕi|\ ;
+颳>gua|\ ;
+颲>liè|\ ;
+颱>tái|\ ;
+颬>xia|\ ;
+颣>lèi|\ ;
+颙>man|\ ;
+颒>huì|\ ;
+顳>niè|\ ;
+顲>lăn|\ ;
+顰>pín|\ ;
+顮>bin|\ ;
+顬>kuĭ|\ ;
+顪>hui|\ ;
+顨>xùn|\ ;
+顥>hào|\ ;
+顤>qin|\ ;
+顢>man|\ ;
+顡>man|\ ;
+類>lèi|\ ;
+顖>xìn|\ ;
+顔>yán|\ ;
+顑>kăn|\ ;
+顐>hún|\ ;
+顏>yán|\ ;
+顋>sai|\ ;
+顉>qin|\ ;
+顇>cuì|\ ;
+顄>hàn|\ ;
+顃>yán|\ ;
+顂>lài|\ ;
+頽>tuí|\ ;
+頻>pín|\ ;
+頺>tuí|\ ;
+頹>tuí|\ ;
+頷>hàn|\ ;
+頵>jun|\ ;
+頰>jiá|\ ;
+頯>kuí|\ ;
+頮>huì|\ ;
+頭>tóu|\ ;
+頬>jiá|\ ;
+頪>lèi|\ ;
+頧>dui|\ ;
+頢>gua|\ ;
+頡>xié|\ ;
+頠>wĕi|\ ;
+頝>jiá|\ ;
+頛>lĕi|\ ;
+頖>pàn|\ ;
+頕>dan|\ ;
+頓>dùn|\ ;
+頒>ban|\ ;
+頑>wán|\ ;
+頍>kuĭ|\ ;
+頇>han|\ ;
+頄>qiú|\ ;
+韾>huò|\ ;
+韽>yin|\ ;
+韻>yùn|\ ;
+韰>xiè|\ ;
+韮>jiŭ|\ ;
+韢>huì|\ ;
+韡>wĕi|\ ;
+韞>yùn|\ ;
+韝>gou|\ ;
+韜>tao|\ ;
+韛>bèi|\ ;
+韙>wĕi|\ ;
+韘>shè|\ ;
+韗>xùn|\ ;
+韖>róu|\ ;
+韓>hán|\ ;
+韑>wĕi|\ ;
+韎>mèi|\ ;
+韌>rèn|\ ;
+韋>wéi|\ ;
+韊>lán|\ ;
+鞾>xue|\ ;
+鞼>guì|\ ;
+鞻>lóu|\ ;
+鞹>kuò|\ ;
+鞶>pán|\ ;
+鞵>lü̆|\ ;
+鞴>bèi|\ ;
+鞲>gou|\ ;
+鞱>tao|\ ;
+鞩>móu|\ ;
+鞧>qiu|\ ;
+鞦>qiu|\ ;
+鞢>xiè|\ ;
+鞡>eng|\ ;
+鞖>sui|\ ;
+鞔>wăn|\ ;
+鞎>hén|\ ;
+鞉>táo|\ ;
+鞈>jiá|\ ;
+鞄>páo|\ ;
+鞂>bào|\ ;
+鞁>tuó|\ ;
+鞀>táo|\ ;
+靿>bèi|\ ;
+靽>bàn|\ ;
+靷>yĭn|\ ;
+靵>niŭ|\ ;
+靲>qín|\ ;
+靱>rèn|\ ;
+靭>rèn|\ ;
+靫>cha|\ ;
+靧>huì|\ ;
+靤>pào|\ ;
+靟>fei|\ ;
+靌>băo|\ ;
+靆>dài|\ ;
+靅>fèi|\ ;
+靃>huò|\ ;
+靁>léi|\ ;
+靀>lèi|\ ;
+霺>wéi|\ ;
+霴>dài|\ ;
+霮>dàn|\ ;
+霩>huò|\ ;
+霨>wèi|\ ;
+霦>bin|\ ;
+霤>liù|\ ;
+霣>yŭn|\ ;
+霠>yin|\ ;
+霕>tún|\ ;
+霒>yin|\ ;
+霅>zhá|\ ;
+雵>ăng|\ ;
+雲>yún|\ ;
+雰>fen|\ ;
+雬>fŏu|\ ;
+雤>xué|\ ;
+難>nán|\ ;
+雡>liù|\ ;
+雛>chú|\ ;
+雘>huò|\ ;
+雗>hàn|\ ;
+雖>sui|\ ;
+雋>jùn|\ ;
+雊>gòu|\ ;
+雂>qín|\ ;
+隻>zhi|\ ;
+隷>cui|\ ;
+隲>dài|\ ;
+隱>yĭn|\ ;
+隯>dăo|\ ;
+隫>fen|\ ;
+隨>suí|\ ;
+隤>tuí|\ ;
+隣>lín|\ ;
+隢>rào|\ ;
+隠>yĭn|\ ;
+隝>dăo|\ ;
+隖>gui|\ ;
+隕>yŭn|\ ;
+隓>hui|\ ;
+隑>gai|\ ;
+階>jie|\ ;
+隊>duì|\ ;
+隉>niè|\ ;
+隇>suì|\ ;
+隂>yin|\ ;
+隁>yàn|\ ;
+陼>zhŭ|\ ;
+陻>yin|\ ;
+陸>liù|\ ;
+陰>yin|\ ;
+陯>lún|\ ;
+陬>zou|\ ;
+陫>péi|\ ;
+陖>xùn|\ ;
+陒>guĭ|\ ;
+陏>duò|\ ;
+陎>shu|\ ;
+陊>duò|\ ;
+陁>tuó|\ ;
+阼>zuò|\ ;
+阯>zhĭ|\ ;
+阫>péi|\ ;
+阩>pei|\ ;
+阧>dŏu|\ ;
+阤>tuó|\ ;
+阠>wèi|\ ;
+阓>huì|\ ;
+闿>kăi|\ ;
+闬>hàn|\ ;
+闦>wén|\ ;
+闠>huì|\ ;
+闞>kàn|\ ;
+闚>kui|\ ;
+闘>dòu|\ ;
+闕>que|\ ;
+闓>kăi|\ ;
+闑>niè|\ ;
+闌>lán|\ ;
+闋>què|\ ;
+闊>kuò|\ ;
+闉>yin|\ ;
+闈>wéi|\ ;
+闆>băn|\ ;
+闅>wén|\ ;
+闄>yăo|\ ;
+闁>bao|\ ;
+閿>wén|\ ;
+閽>hun|\ ;
+閻>yán|\ ;
+閺>wén|\ ;
+閹>yan|\ ;
+閸>kŭn|\ ;
+閷>sha|\ ;
+閵>lìn|\ ;
+閲>yuè|\ ;
+閱>yuè|\ ;
+閯>shà|\ ;
+閫>kŭn|\ ;
+閩>mĭn|\ ;
+閨>gui|\ ;
+閦>chù|\ ;
+閠>rùn|\ ;
+閜>xiă|\ ;
+閘>zhá|\ ;
+閗>dòu|\ ;
+閕>xia|\ ;
+閔>mĭn|\ ;
+閐>sàn|\ ;
+閏>rùn|\ ;
+開>kai|\ ;
+閈>hàn|\ ;
+閆>yán|\ ;
+閅>mén|\ ;
+閄>huò|\ ;
+門>mén|\ ;
+镻>dié|\ ;
+镹>jiŭ|\ ;
+镦>duì|\ ;
+镡>tán|\ ;
+镠>liú|\ ;
+锼>sou|\ ;
+锬>tán|\ ;
+锫>péi|\ ;
+锪>huo|\ ;
+锧>zhì|\ ;
+锘>nuò|\ ;
+锍>liŭ|\ ;
+锊>lüè|\ ;
+锆>gào|\ ;
+铼>lái|\ ;
+铪>jiá|\ ;
+铥>diu|\ ;
+铚>zhì|\ ;
+铑>lăo|\ ;
+铇>bào|\ ;
+钬>huó|\ ;
+钃>shŭ|\ ;
+钁>jué|\ ;
+钀>niè|\ ;
+鑿>záo|\ ;
+鑼>luó|\ ;
+鑻>pàn|\ ;
+鑸>lĕi|\ ;
+鑷>niè|\ ;
+鑳>hui|\ ;
+鑰>yào|\ ;
+鑭>lán|\ ;
+鑤>bào|\ ;
+鑘>léi|\ ;
+鑖>miè|\ ;
+鑕>zhì|\ ;
+鑔>chă|\ ;
+鑎>kuì|\ ;
+鑌>bin|\ ;
+鑊>huò|\ ;
+鑈>nie|\ ;
+鑄>zhù|\ ;
+鑂>xùn|\ ;
+鐾>bèi|\ ;
+鐼>ben|\ ;
+鐹>guŏ|\ ;
+鐸>duó|\ ;
+鐵>tiĕ|\ ;
+鐳>léi|\ ;
+鐬>huì|\ ;
+鐩>suì|\ ;
+鐨>fèi|\ ;
+鐦>kai|\ ;
+鐡>tiĕ|\ ;
+鐞>nòu|\ ;
+鐝>jué|\ ;
+鐜>duì|\ ;
+鐔>tán|\ ;
+鐓>dun|\ ;
+鐒>láo|\ ;
+鐑>dui|\ ;
+鐏>zun|\ ;
+鐍>jué|\ ;
+鐇>fán|\ ;
+鐆>suì|\ ;
+鐅>piĕ|\ ;
+鐃>náo|\ ;
+鐂>liù|\ ;
+鐁>liú|\ ;
+鐀>kuì|\ ;
+鏾>săn|\ ;
+鏽>xiù|\ ;
+鏼>suŏ|\ ;
+鏻>lín|\ ;
+鏸>huì|\ ;
+鏵>huá|\ ;
+鏬>xià|\ ;
+鏪>cáo|\ ;
+鏨>zàn|\ ;
+鏤>lòu|\ ;
+鏣>shù|\ ;
+鏝>màn|\ ;
+鏙>cui|\ ;
+鏐>liú|\ ;
+鏏>wèi|\ ;
+鏍>luó|\ ;
+鏅>xiu|\ ;
+鏁>suŏ|\ ;
+鎻>suŏ|\ ;
+鎵>jia|\ ;
+鎳>niè|\ ;
+鎬>găo|\ ;
+鎫>wàn|\ ;
+鎩>sha|\ ;
+鎨>sŭn|\ ;
+鎧>kăi|\ ;
+鎦>liú|\ ;
+鎜>pán|\ ;
+鎖>suŏ|\ ;
+鎒>nòu|\ ;
+鎍>suŏ|\ ;
+鎋>xiá|\ ;
+鎇>méi|\ ;
+鎅>jiè|\ ;
+鎃>pài|\ ;
+鎂>mĕi|\ ;
+鎀>xiu|\ ;
+鍻>jié|\ ;
+鍺>zhĕ|\ ;
+鍲>mín|\ ;
+鍮>tou|\ ;
+鍭>hóu|\ ;
+鍨>kuí|\ ;
+鍦>shé|\ ;
+鍥>qiè|\ ;
+鍤>chá|\ ;
+鍡>wĕi|\ ;
+鍝>cha|\ ;
+鍜>xia|\ ;
+鍘>zhá|\ ;
+鍕>róu|\ ;
+鍒>róu|\ ;
+鍏>wéi|\ ;
+鍋>guo|\ ;
+鍈>chí|\ ;
+鍇>kăi|\ ;
+鍆>mén|\ ;
+鍄>jie|\ ;
+鍃>huo|\ ;
+錽>wăn|\ ;
+錼>nài|\ ;
+錹>kĕn|\ ;
+錸>lái|\ ;
+錵>hua|\ ;
+錯>cuò|\ ;
+錭>táo|\ ;
+錨>máo|\ ;
+錦>jĭn|\ ;
+錟>tán|\ ;
+錜>nie|\ ;
+錛>ben|\ ;
+錗>wèi|\ ;
+錕>kun|\ ;
+錓>gŭn|\ ;
+錑>lèi|\ ;
+錊>zuì|\ ;
+錉>mín|\ ;
+錇>póu|\ ;
+錃>bei|\ ;
+錀>lún|\ ;
+鋾>táo|\ ;
+鋷>zuì|\ ;
+鋶>liŭ|\ ;
+鋳>zhù|\ ;
+鋯>gào|\ ;
+鋭>ruì|\ ;
+鋬>pàn|\ ;
+鋫>duì|\ ;
+鋤>chú|\ ;
+鋣>xié|\ ;
+鋢>lüè|\ ;
+鋡>hán|\ ;
+鋚>jìn|\ ;
+鋕>zhì|\ ;
+鋔>wăn|\ ;
+鋏>jiá|\ ;
+鋎>hàn|\ ;
+鋇>bèi|\ ;
+鋆>yún|\ ;
+鋅>xin|\ ;
+鋄>wăn|\ ;
+鋂>méi|\ ;
+鋀>dòu|\ ;
+銽>gua|\ ;
+銼>cuò|\ ;
+銹>xiù|\ ;
+銸>zhé|\ ;
+銶>qiú|\ ;
+銴>shì|\ ;
+銳>ruì|\ ;
+銲>hàn|\ ;
+銬>kào|\ ;
+銪>yŏu|\ ;
+銩>diu|\ ;
+銦>yin|\ ;
+銠>lăo|\ ;
+銟>cha|\ ;
+銞>jun|\ ;
+銝>xiu|\ ;
+銙>kuă|\ ;
+銗>hóu|\ ;
+銖>zhu|\ ;
+銕>tiĕ|\ ;
+銐>chì|\ ;
+銍>zhì|\ ;
+銌>zùn|\ ;
+銋>rén|\ ;
+銇>lèi|\ ;
+銁>jun|\ ;
+銀>yín|\ ;
+鉾>móu|\ ;
+鉽>shì|\ ;
+鉹>chĭ|\ ;
+鉳>bĕi|\ ;
+鉭>dàn|\ ;
+鉫>jia|\ ;
+鉩>nie|\ ;
+鉥>shù|\ ;
+鉤>gou|\ ;
+鉣>jié|\ ;
+鉡>bàn|\ ;
+鉟>gòu|\ ;
+鉞>yuè|\ ;
+鉚>măo|\ ;
+鉓>chì|\ ;
+鉒>zhù|\ ;
+鉏>chú|\ ;
+鉋>bào|\ ;
+鉉>páo|\ ;
+鉇>shi|\ ;
+鉄>tiĕ|\ ;
+鉃>shì|\ ;
+鉂>shĭ|\ ;
+鉁>shé|\ ;
+鉀>jiă|\ ;
+鈾>yóu|\ ;
+鈼>zuó|\ ;
+鈱>mín|\ ;
+鈰>shì|\ ;
+鈬>duó|\ ;
+鈦>tài|\ ;
+鈥>huŏ|\ ;
+鈣>gài|\ ;
+鈢>nie|\ ;
+鈟>shi|\ ;
+鈞>jun|\ ;
+鈝>yín|\ ;
+鈛>guo|\ ;
+鈙>qín|\ ;
+鈗>yŭn|\ ;
+鈖>fen|\ ;
+鈕>niŭ|\ ;
+鈑>băn|\ ;
+鈏>yĭn|\ ;
+鈎>gou|\ ;
+鈍>dùn|\ ;
+鈌>jué|\ ;
+鈊>xin|\ ;
+鈆>yán|\ ;
+鈅>yuè|\ ;
+釿>yín|\ ;
+釾>jin|\ ;
+釶>shé|\ ;
+釲>cha|\ ;
+釮>dài|\ ;
+釬>hàn|\ ;
+釫>huá|\ ;
+釪>gan|\ ;
+釩>fán|\ ;
+釦>kòu|\ ;
+釥>făn|\ ;
+釢>nái|\ ;
+釞>zhí|\ ;
+釚>qiú|\ ;
+釖>dao|\ ;
+釋>shì|\ ;
+釈>shì|\ ;
+釅>yàn|\ ;
+釄>căi|\ ;
+釁>xìn|\ ;
+醼>yàn|\ ;
+醰>tán|\ ;
+醩>záo|\ ;
+醡>zhà|\ ;
+醠>àng|\ ;
+醞>yùn|\ ;
+醝>cuó|\ ;
+醙>sou|\ ;
+醖>yùn|\ ;
+醔>jiu|\ ;
+醓>tăn|\ ;
+醌>kun|\ ;
+醈>tán|\ ;
+醄>táo|\ ;
+醃>yan|\ ;
+醂>lăn|\ ;
+醀>wéi|\ ;
+酼>hăi|\ ;
+酻>zuì|\ ;
+酳>yìn|\ ;
+酭>yòu|\ ;
+酨>zài|\ ;
+酠>qiă|\ ;
+酘>tóu|\ ;
+酖>dan|\ ;
+酕>máo|\ ;
+酔>zuì|\ ;
+酓>yăn|\ ;
+酇>zàn|\ ;
+酂>zàn|\ ;
+酀>yan|\ ;
+鄾>you|\ ;
+鄼>zàn|\ ;
+鄹>zou|\ ;
+鄵>cao|\ ;
+鄳>cào|\ ;
+鄲>dan|\ ;
+鄰>lín|\ ;
+鄮>mào|\ ;
+鄬>lìn|\ ;
+鄩>xín|\ ;
+鄤>màn|\ ;
+鄗>hào|\ ;
+鄖>yún|\ ;
+鄒>zou|\ ;
+鄐>chù|\ ;
+鄋>sou|\ ;
+鄈>kuí|\ ;
+鄇>hòu|\ ;
+鄆>yùn|\ ;
+鄁>bèi|\ ;
+鄀>ruò|\ ;
+郿>méi|\ ;
+郵>yóu|\ ;
+郲>lái|\ ;
+郰>zou|\ ;
+郮>lán|\ ;
+郥>bèi|\ ;
+郟>jiá|\ ;
+郘>lü̆|\ ;
+郖>dou|\ ;
+郔>yán|\ ;
+郍>nuó|\ ;
+郌>gui|\ ;
+郈>hòu|\ ;
+郂>gai|\ ;
+邿>shi|\ ;
+邾>zhu|\ ;
+邽>gui|\ ;
+邶>bèi|\ ;
+邩>huŏ|\ ;
+邨>cun|\ ;
+邤>shé|\ ;
+邠>bin|\ ;
+邏>luó|\ ;
+邎>yáo|\ ;
+還>hái|\ ;
+邁>mài|\ ;
+遾>hái|\ ;
+遶>rào|\ ;
+遳>cuo|\ ;
+遲>chí|\ ;
+遱>lóu|\ ;
+遯>dùn|\ ;
+適>shì|\ ;
+遟>chí|\ ;
+遜>xùn|\ ;
+遚>chù|\ ;
+遙>yáo|\ ;
+違>wéi|\ ;
+過>guò|\ ;
+運>yùn|\ ;
+遊>yóu|\ ;
+遈>shí|\ ;
+遅>chí|\ ;
+遃>yăn|\ ;
+遀>qun|\ ;
+逽>nuò|\ ;
+進>jìn|\ ;
+逰>yóu|\ ;
+逫>jué|\ ;
+逪>cuò|\ ;
+逩>bèn|\ ;
+逨>lái|\ ;
+逥>huí|\ ;
+逤>ben|\ ;
+這>zhè|\ ;
+逘>yàn|\ ;
+逎>qiú|\ ;
+逌>yóu|\ ;
+逇>dùn|\ ;
+迿>xùn|\ ;
+迾>kuò|\ ;
+迼>jié|\ ;
+迺>năi|\ ;
+迶>yòu|\ ;
+迴>huí|\ ;
+迱>tuó|\ ;
+迯>mèi|\ ;
+迣>zhì|\ ;
+迠>chè|\ ;
+迌>jia|\ ;
+迀>gan|\ ;
+辬>ban|\ ;
+辦>bàn|\ ;
+辥>xue|\ ;
+辠>ban|\ ;
+辒>wen|\ ;
+轥>lìn|\ ;
+轡>pèi|\ ;
+轠>lĕi|\ ;
+轛>duì|\ ;
+轙>léi|\ ;
+轗>kăn|\ ;
+轔>lín|\ ;
+轓>fan|\ ;
+轒>fén|\ ;
+轑>lăo|\ ;
+轍>chè|\ ;
+轋>hún|\ ;
+轊>wèi|\ ;
+轇>jiu|\ ;
+轄>xiá|\ ;
+轁>tao|\ ;
+轀>wen|\ ;
+輽>bèn|\ ;
+輼>wen|\ ;
+輸>shu|\ ;
+輶>yóu|\ ;
+輳>còu|\ ;
+輮>róu|\ ;
+輫>pái|\ ;
+輪>lún|\ ;
+輩>bèi|\ ;
+輥>gŭn|\ ;
+輡>kăn|\ ;
+輠>guŏ|\ ;
+輝>hui|\ ;
+輙>zhé|\ ;
+輓>wăn|\ ;
+輒>zhé|\ ;
+輏>yóu|\ ;
+輋>she|\ ;
+輊>zhì|\ ;
+載>zăi|\ ;
+軾>shì|\ ;
+軺>yáo|\ ;
+軹>zhĭ|\ ;
+軴>zhù|\ ;
+軳>páo|\ ;
+軰>bèi|\ ;
+軮>ăng|\ ;
+軬>fàn|\ ;
+軩>dài|\ ;
+軦>bèn|\ ;
+軡>făn|\ ;
+軠>rèn|\ ;
+軞>máo|\ ;
+軚>dài|\ ;
+軘>tún|\ ;
+軗>shu|\ ;
+軔>rèn|\ ;
+軓>fàn|\ ;
+軑>dài|\ ;
+軐>xìn|\ ;
+軏>yuè|\ ;
+軎>wèi|\ ;
+軍>jun|\ ;
+軌>guĭ|\ ;
+車>che|\ ;
+軇>dào|\ ;
+軃>tuŏ|\ ;
+軂>lào|\ ;
+軁>lóu|\ ;
+躽>yăn|\ ;
+躶>luŏ|\ ;
+躱>duŏ|\ ;
+躭>dan|\ ;
+躪>lìn|\ ;
+躩>jué|\ ;
+躨>kuí|\ ;
+躧>lìn|\ ;
+躤>jiè|\ ;
+躡>niè|\ ;
+躠>xiĕ|\ ;
+躝>lán|\ ;
+躛>wèi|\ ;
+躙>lìn|\ ;
+躗>wèi|\ ;
+躕>chú|\ ;
+躓>zhì|\ ;
+躑>zhí|\ ;
+躎>luò|\ ;
+躍>yuè|\ ;
+躉>dŭn|\ ;
+蹾>dun|\ ;
+蹸>lìn|\ ;
+蹷>jué|\ ;
+蹮>fan|\ ;
+蹪>tuí|\ ;
+蹧>zao|\ ;
+蹣>pán|\ ;
+蹠>zhí|\ ;
+蹞>kuĭ|\ ;
+蹛>dài|\ ;
+蹔>zàn|\ ;
+蹓>liù|\ ;
+蹆>tuĭ|\ ;
+蹅>chă|\ ;
+踻>gua|\ ;
+踲>dùn|\ ;
+踨>kuí|\ ;
+踠>wăn|\ ;
+踚>lún|\ ;
+踙>huà|\ ;
+踗>nie|\ ;
+踕>jié|\ ;
+踓>wĕi|\ ;
+踈>shu|\ ;
+踆>cun|\ ;
+踂>niè|\ ;
+踀>chù|\ ;
+跾>shú|\ ;
+跴>căi|\ ;
+跲>jiá|\ ;
+跱>zhì|\ ;
+跮>chì|\ ;
+跭>dié|\ ;
+跬>kuĭ|\ ;
+跦>zhu|\ ;
+跥>duò|\ ;
+跢>dài|\ ;
+跜>luò|\ ;
+跘>pán|\ ;
+跕>dié|\ ;
+跓>zhù|\ ;
+跒>qiă|\ ;
+跍>căi|\ ;
+跊>mèi|\ ;
+跉>bèi|\ ;
+跅>tuò|\ ;
+趹>jué|\ ;
+趶>guì|\ ;
+趲>zăn|\ ;
+趮>yuè|\ ;
+趩>chì|\ ;
+趥>qiu|\ ;
+趤>cŏu|\ ;
+趡>cuĭ|\ ;
+趞>què|\ ;
+趛>yĭn|\ ;
+趖>suo|\ ;
+趕>găn|\ ;
+趓>duŏ|\ ;
+趐>xuè|\ ;
+趏>gua|\ ;
+趎>chú|\ ;
+趍>chí|\ ;
+趌>jié|\ ;
+趉>zhú|\ ;
+趃>dié|\ ;
+赿>chí|\ ;
+赾>qĭn|\ ;
+赽>jué|\ ;
+赺>qín|\ ;
+赱>zŏu|\ ;
+赮>xiá|\ ;
+赩>shì|\ ;
+赟>yun|\ ;
+赕>tàn|\ ;
+贳>shì|\ ;
+贜>yún|\ ;
+贛>gàn|\ ;
+贗>yàn|\ ;
+贖>shú|\ ;
+贒>shù|\ ;
+贑>găn|\ ;
+贐>jìn|\ ;
+贎>gàn|\ ;
+贋>yàn|\ ;
+贊>zàn|\ ;
+贉>tăn|\ ;
+贇>yun|\ ;
+贄>zhì|\ ;
+贁>bài|\ ;
+贀>wèi|\ ;
+賽>sài|\ ;
+購>gòu|\ ;
+賴>lài|\ ;
+賳>zai|\ ;
+賲>băo|\ ;
+賱>yŭn|\ ;
+賮>jìn|\ ;
+質>zhì|\ ;
+賧>tàn|\ ;
+賥>suì|\ ;
+賣>mài|\ ;
+賠>péi|\ ;
+賛>zàn|\ ;
+賚>lài|\ ;
+賖>she|\ ;
+賕>qiú|\ ;
+賔>bin|\ ;
+賓>bin|\ ;
+賒>she|\ ;
+賐>xùn|\ ;
+賍>sha|\ ;
+賌>gài|\ ;
+賋>gai|\ ;
+賊>zéi|\ ;
+賅>gai|\ ;
+賄>huì|\ ;
+賃>lìn|\ ;
+賁>ben|\ ;
+貿>mào|\ ;
+貾>chí|\ ;
+貼>tie|\ ;
+費>fèi|\ ;
+貸>dài|\ ;
+買>măi|\ ;
+貴>guì|\ ;
+貰>shì|\ ;
+貯>zhŭ|\ ;
+貭>zhí|\ ;
+貪>tan|\ ;
+販>fàn|\ ;
+貨>huò|\ ;
+貧>pín|\ ;
+貦>wàn|\ ;
+財>cái|\ ;
+貝>bèi|\ ;
+貜>jué|\ ;
+貚>tán|\ ;
+貙>chu|\ ;
+貓>mao|\ ;
+貑>jia|\ ;
+貋>hàn|\ ;
+貇>háo|\ ;
+貁>yòu|\ ;
+豿>gŏu|\ ;
+豶>fén|\ ;
+豱>wen|\ ;
+豭>jia|\ ;
+豬>zhu|\ ;
+豩>bin|\ ;
+豥>gai|\ ;
+豤>kĕn|\ ;
+豞>hòu|\ ;
+豛>yàn|\ ;
+豘>tún|\ ;
+豗>hui|\ ;
+豖>chù|\ ;
+豔>yàn|\ ;
+豓>yàn|\ ;
+豒>zhì|\ ;
+豑>zhì|\ ;
+豎>shù|\ ;
+豃>hăn|\ ;
+豂>kăi|\ ;
+谽>han|\ ;
+谻>jué|\ ;
+谺>xia|\ ;
+诹>zou|\ ;
+讱>rèn|\ ;
+讬>tuo|\ ;
+讞>yàn|\ ;
+讚>zàn|\ ;
+讘>zhé|\ ;
+讗>huò|\ ;
+讕>lán|\ ;
+讔>yĭn|\ ;
+讑>yào|\ ;
+讏>wèi|\ ;
+讌>yàn|\ ;
+讋>zhé|\ ;
+讆>wèi|\ ;
+讄>lĕi|\ ;
+讃>zàn|\ ;
+讁>shè|\ ;
+讀>dòu|\ ;
+譿>huì|\ ;
+譹>háo|\ ;
+譳>nòu|\ ;
+譮>huà|\ ;
+譭>huĭ|\ ;
+譩>xià|\ ;
+譨>nóu|\ ;
+譢>suì|\ ;
+譠>tan|\ ;
+譟>zào|\ ;
+譛>zèn|\ ;
+譚>tán|\ ;
+識>shí|\ ;
+譗>shí|\ ;
+譖>zèn|\ ;
+譓>huì|\ ;
+譐>zŭn|\ ;
+譎>jué|\ ;
+譋>lán|\ ;
+譊>náo|\ ;
+譈>duì|\ ;
+譇>she|\ ;
+譁>huá|\ ;
+譀>hàn|\ ;
+謾>mán|\ ;
+謺>zhé|\ ;
+謹>jĭn|\ ;
+謲>can|\ ;
+謱>lóu|\ ;
+謯>jie|\ ;
+謬>miù|\ ;
+謫>zhé|\ ;
+謡>yáo|\ ;
+謠>yáo|\ ;
+謞>xuè|\ ;
+謝>xiè|\ ;
+謚>shì|\ ;
+謘>chí|\ ;
+謔>nüè|\ ;
+謏>sŏu|\ ;
+謋>huò|\ ;
+謉>kuì|\ ;
+謅>zou|\ ;
+謂>wèi|\ ;
+謀>móu|\ ;
+諾>nuò|\ ;
+諺>yàn|\ ;
+諸>zhu|\ ;
+諵>nán|\ ;
+諲>yin|\ ;
+諱>huì|\ ;
+諧>xié|\ ;
+諣>huà|\ ;
+諢>hùn|\ ;
+諡>shì|\ ;
+諟>shì|\ ;
+諜>dié|\ ;
+論>lún|\ ;
+諕>háo|\ ;
+諔>zhù|\ ;
+諏>zou|\ ;
+諉>wĕi|\ ;
+談>tán|\ ;
+誾>yín|\ ;
+誺>chi|\ ;
+誹>fĕi|\ ;
+誶>suì|\ ;
+誱>jié|\ ;
+誨>huì|\ ;
+誥>gào|\ ;
+誡>jiè|\ ;
+誛>qin|\ ;
+誘>yòu|\ ;
+誕>dàn|\ ;
+認>rèn|\ ;
+誌>zhì|\ ;
+誇>kua|\ ;
+誅>zhu|\ ;
+誄>lĕi|\ ;
+誃>chĭ|\ ;
+詿>guà|\ ;
+詽>yán|\ ;
+詼>hui|\ ;
+詺>luò|\ ;
+詷>dàn|\ ;
+詴>wei|\ ;
+該>gai|\ ;
+話>huà|\ ;
+詰>jié|\ ;
+詯>huì|\ ;
+詭>guĭ|\ ;
+詬>gòu|\ ;
+詫>chà|\ ;
+詪>hĕn|\ ;
+詩>shi|\ ;
+詧>chá|\ ;
+試>shì|\ ;
+詢>xún|\ ;
+詟>zhé|\ ;
+詝>zhŭ|\ ;
+詜>tao|\ ;
+詑>tuó|\ ;
+詐>zhà|\ ;
+詌>gàn|\ ;
+詊>pàn|\ ;
+詉>náo|\ ;
+詇>dài|\ ;
+詄>dié|\ ;
+詀>chè|\ ;
+訽>gòu|\ ;
+註>zhù|\ ;
+訵>chi|\ ;
+訰>tún|\ ;
+訯>shă|\ ;
+設>shè|\ ;
+訫>xìn|\ ;
+訨>zhĭ|\ ;
+訧>yóu|\ ;
+訣>jué|\ ;
+訢>xin|\ ;
+訡>yín|\ ;
+訠>jìn|\ ;
+訞>yao|\ ;
+訜>fen|\ ;
+訚>yín|\ ;
+訙>xùn|\ ;
+託>tuo|\ ;
+訔>yín|\ ;
+訓>xùn|\ ;
+訒>rèn|\ ;
+訐>jié|\ ;
+討>tăo|\ ;
+訍>chà|\ ;
+訊>xùn|\ ;
+訉>fàn|\ ;
+訅>qiú|\ ;
+訄>qiú|\ ;
+觾>yàn|\ ;
+觼>jué|\ ;
+觺>yàn|\ ;
+觸>chù|\ ;
+觷>xué|\ ;
+觶>zhì|\ ;
+觩>qiú|\ ;
+觨>hùn|\ ;
+觧>jiĕ|\ ;
+觤>chù|\ ;
+觢>chì|\ ;
+觠>jiè|\ ;
+觟>huà|\ ;
+觛>dàn|\ ;
+觗>fán|\ ;
+觔>jin|\ ;
+觓>jiu|\ ;
+觃>kui|\ ;
+覽>lăn|\ ;
+覼>luó|\ ;
+覻>làn|\ ;
+覶>luó|\ ;
+覲>jĭn|\ ;
+覯>gòu|\ ;
+覫>jìn|\ ;
+親>qin|\ ;
+覧>lăn|\ ;
+覣>wei|\ ;
+覠>jun|\ ;
+覟>zhì|\ ;
+覞>yào|\ ;
+覚>jué|\ ;
+覙>luó|\ ;
+視>shì|\ ;
+覕>miè|\ ;
+覒>máo|\ ;
+規>gui|\ ;
+覎>guì|\ ;
+襹>shi|\ ;
+襸>zàn|\ ;
+襶>dài|\ ;
+襵>zhé|\ ;
+襴>lán|\ ;
+襰>lài|\ ;
+襭>xié|\ ;
+襬>băi|\ ;
+襫>shì|\ ;
+襩>shŭ|\ ;
+襧>zhĭ|\ ;
+襤>lán|\ ;
+襢>tăn|\ ;
+襡>shú|\ ;
+襚>suì|\ ;
+襙>cào|\ ;
+襗>duó|\ ;
+襕>lán|\ ;
+襔>măn|\ ;
+襓>ráo|\ ;
+襒>bié|\ ;
+襑>xín|\ ;
+襎>fán|\ ;
+襌>dan|\ ;
+襊>zuì|\ ;
+襃>bao|\ ;
+襂>sen|\ ;
+褿>cáo|\ ;
+褽>wèi|\ ;
+褻>xiè|\ ;
+褺>dié|\ ;
+褷>dié|\ ;
+褯>jiè|\ ;
+褩>ban|\ ;
+褨>suŏ|\ ;
+褦>nài|\ ;
+褠>gou|\ ;
+褞>yŭn|\ ;
+褘>hui|\ ;
+褗>yăn|\ ;
+褏>xiù|\ ;
+褎>xiù|\ ;
+褌>hui|\ ;
+褋>dié|\ ;
+褃>kèn|\ ;
+褁>zhí|\ ;
+製>zhì|\ ;
+裺>yăn|\ ;
+裶>fei|\ ;
+裵>gŭn|\ ;
+裭>chĭ|\ ;
+裪>táo|\ ;
+裩>dao|\ ;
+裦>fóu|\ ;
+裠>qún|\ ;
+裒>póu|\ ;
+裏>bao|\ ;
+裍>kŭn|\ ;
+裌>jiá|\ ;
+裋>shù|\ ;
+裈>kun|\ ;
+裀>yin|\ ;
+袿>gui|\ ;
+袾>zhu|\ ;
+袺>jié|\ ;
+袸>cún|\ ;
+袵>rèn|\ ;
+袴>jié|\ ;
+袳>chĭ|\ ;
+袬>duŏ|\ ;
+袧>kou|\ ;
+袥>tuo|\ ;
+袣>móu|\ ;
+袡>rán|\ ;
+袠>zhì|\ ;
+袟>zhì|\ ;
+袞>gŭn|\ ;
+袝>fán|\ ;
+袕>shù|\ ;
+袏>zuò|\ ;
+袎>yào|\ ;
+袌>bào|\ ;
+袉>tuó|\ ;
+袇>rán|\ ;
+袆>hui|\ ;
+袃>bào|\ ;
+袀>jun|\ ;
+衼>zhi|\ ;
+衻>rán|\ ;
+衺>qìn|\ ;
+衸>xiè|\ ;
+衴>dăn|\ ;
+衱>jié|\ ;
+衯>fen|\ ;
+衦>găn|\ ;
+衟>dào|\ ;
+衞>wèi|\ ;
+衜>dào|\ ;
+衛>wèi|\ ;
+術>shù|\ ;
+衎>kàn|\ ;
+衊>miè|\ ;
+衃>mài|\ ;
+衂>niù|\ ;
+蠿>zhá|\ ;
+蠾>zhú|\ ;
+蠽>jié|\ ;
+蠼>jué|\ ;
+蠻>mán|\ ;
+蠺>cán|\ ;
+蠶>cán|\ ;
+蠩>zhu|\ ;
+蠥>niè|\ ;
+蠤>qiu|\ ;
+蠞>jié|\ ;
+蠝>léi|\ ;
+蠜>fán|\ ;
+蠛>miè|\ ;
+蠙>bin|\ ;
+蠘>jié|\ ;
+蠔>háo|\ ;
+蠍>xie|\ ;
+蠋>zhú|\ ;
+蠂>shè|\ ;
+蟳>xún|\ ;
+蟱>móu|\ ;
+蟯>ráo|\ ;
+蟫>yín|\ ;
+蟩>jué|\ ;
+蟨>jué|\ ;
+蟧>láo|\ ;
+蟦>fèi|\ ;
+蟤>ben|\ ;
+蟡>guĭ|\ ;
+蟞>bié|\ ;
+蟙>zhí|\ ;
+蟗>qiu|\ ;
+蟕>zui|\ ;
+蟓>fán|\ ;
+蟎>măn|\ ;
+蟈>guo|\ ;
+蟄>zhé|\ ;
+蟃>wàn|\ ;
+蟁>wén|\ ;
+螾>yĭn|\ ;
+螼>qĭn|\ ;
+螻>lóu|\ ;
+螲>zhì|\ ;
+螱>wèi|\ ;
+螬>cáo|\ ;
+螤>shì|\ ;
+螡>wén|\ ;
+螝>huì|\ ;
+螚>nài|\ ;
+螖>huá|\ ;
+螒>hàn|\ ;
+螑>qiù|\ ;
+螌>ban|\ ;
+螋>pán|\ ;
+蝽>qŭn|\ ;
+蝻>năn|\ ;
+蝸>gua|\ ;
+蝷>guŏ|\ ;
+蝵>qiu|\ ;
+蝱>dài|\ ;
+蝰>huĭ|\ ;
+蝫>zhu|\ ;
+蝨>shi|\ ;
+蝧>kuí|\ ;
+蝥>máo|\ ;
+蝢>jiu|\ ;
+蝟>wèi|\ ;
+蝞>mèi|\ ;
+蝛>wei|\ ;
+蝚>róu|\ ;
+蝘>yăn|\ ;
+蝕>shí|\ ;
+蝔>jie|\ ;
+蝐>mài|\ ;
+蝅>cán|\ ;
+蝂>băn|\ ;
+蜼>wĕi|\ ;
+蜹>ruì|\ ;
+蜳>dun|\ ;
+蜲>wĕi|\ ;
+蜰>féi|\ ;
+蜭>hàn|\ ;
+蜬>gan|\ ;
+蜫>kun|\ ;
+蜪>guo|\ ;
+蜨>dié|\ ;
+蜦>lún|\ ;
+蜠>jŭn|\ ;
+蜖>huí|\ ;
+蜑>dàn|\ ;
+蜐>jié|\ ;
+蜏>dàn|\ ;
+蛿>hàn|\ ;
+蛽>bài|\ ;
+蛼>che|\ ;
+蛻>tuì|\ ;
+蛺>jiá|\ ;
+蛷>qiú|\ ;
+蛶>liè|\ ;
+蛫>guĭ|\ ;
+蛪>qiè|\ ;
+蛣>jié|\ ;
+蛚>liè|\ ;
+蛕>huí|\ ;
+蛈>tiè|\ ;
+蛅>rán|\ ;
+蛂>biĕ|\ ;
+蚼>gŏu|\ ;
+蚻>zhá|\ ;
+蚴>yòu|\ ;
+蚳>chí|\ ;
+蚦>rán|\ ;
+蚡>fén|\ ;
+蚠>fén|\ ;
+蚙>qín|\ ;
+蚘>huí|\ ;
+蚗>jué|\ ;
+蚖>háo|\ ;
+蚒>rán|\ ;
+蚐>jun|\ ;
+蚏>yuè|\ ;
+蚎>cán|\ ;
+蚉>wén|\ ;
+蚇>chĭ|\ ;
+虷>gan|\ ;
+虶>hán|\ ;
+虵>shé|\ ;
+虴>zhé|\ ;
+虯>qiú|\ ;
+虪>shú|\ ;
+虨>ban|\ ;
+虧>kui|\ ;
+虤>yán|\ ;
+虣>bào|\ ;
+號>háo|\ ;
+虘>cuó|\ ;
+處>chŭ|\ ;
+虌>bie|\ ;
+虋>mén|\ ;
+虆>léi|\ ;
+虁>kuí|\ ;
+蘿>luó|\ ;
+蘽>lĕi|\ ;
+蘷>kuí|\ ;
+蘶>wèi|\ ;
+蘵>zhí|\ ;
+蘳>huă|\ ;
+蘲>léi|\ ;
+蘱>lèi|\ ;
+蘭>lán|\ ;
+蘬>kui|\ ;
+蘫>lán|\ ;
+蘤>wĕi|\ ;
+蘣>hua|\ ;
+蘗>niè|\ ;
+蘍>xun|\ ;
+蘋>pín|\ ;
+蘊>yùn|\ ;
+蘈>tuí|\ ;
+蘃>ruĭ|\ ;
+蘀>tuò|\ ;
+藾>lài|\ ;
+藺>lìn|\ ;
+藸>chú|\ ;
+藷>shŭ|\ ;
+藳>găo|\ ;
+藱>huì|\ ;
+藰>liú|\ ;
+藯>wèi|\ ;
+藬>tui|\ ;
+藫>huí|\ ;
+藪>sŏu|\ ;
+藥>yào|\ ;
+藣>bei|\ ;
+藢>zhĭ|\ ;
+藟>lĕi|\ ;
+藛>xiĕ|\ ;
+藒>qiè|\ ;
+藎>jìn|\ ;
+藍>lán|\ ;
+藃>hào|\ ;
+薳>wĕi|\ ;
+薲>pín|\ ;
+薱>duì|\ ;
+薬>yào|\ ;
+薫>xun|\ ;
+薧>kăo|\ ;
+薥>shŭ|\ ;
+薢>jie|\ ;
+薠>fán|\ ;
+薞>sun|\ ;
+薝>kàn|\ ;
+薒>càn|\ ;
+薎>miè|\ ;
+薉>wèi|\ ;
+薈>huì|\ ;
+薃>hào|\ ;
+薀>yùn|\ ;
+蕼>hăo|\ ;
+蕸>xiá|\ ;
+蕵>sun|\ ;
+蕰>yùn|\ ;
+蕢>kuì|\ ;
+蕡>fén|\ ;
+蕝>jué|\ ;
+蕜>fĕi|\ ;
+蕘>ráo|\ ;
+蕕>yóu|\ ;
+蕔>bao|\ ;
+蕓>yún|\ ;
+蕒>măi|\ ;
+蕐>huá|\ ;
+蕏>chú|\ ;
+蕌>lĕi|\ ;
+蕁>xún|\ ;
+蔿>wéi|\ ;
+蔲>kòu|\ ;
+蔱>sha|\ ;
+蔭>yìn|\ ;
+蔩>yín|\ ;
+蔨>jùn|\ ;
+蔧>huì|\ ;
+蔞>lóu|\ ;
+蔘>sen|\ ;
+蔖>cuó|\ ;
+蔒>xun|\ ;
+蔎>shè|\ ;
+蔊>hăn|\ ;
+蔉>gŭn|\ ;
+蔅>yán|\ ;
+蔄>màn|\ ;
+蔂>luó|\ ;
+蓸>cáo|\ ;
+蓷>tui|\ ;
+蓶>wĕi|\ ;
+蓵>jié|\ ;
+蓳>jìn|\ ;
+蓲>qiu|\ ;
+蓫>zhú|\ ;
+蓩>mào|\ ;
+蓡>can|\ ;
+蓚>xiu|\ ;
+蓘>gŭn|\ ;
+蓕>guì|\ ;
+蓔>yăo|\ ;
+蓏>luŏ|\ ;
+蓌>cuò|\ ;
+蓋>gài|\ ;
+蓅>liú|\ ;
+蓃>sou|\ ;
+蓂>huò|\ ;
+蓀>sun|\ ;
+蒻>ruò|\ ;
+蒷>yún|\ ;
+蒭>chú|\ ;
+蒫>cuo|\ ;
+蒥>liú|\ ;
+蒢>chú|\ ;
+蒛>que|\ ;
+蒔>shí|\ ;
+蒒>shi|\ ;
+蒑>yin|\ ;
+蒐>sou|\ ;
+蒎>pài|\ ;
+蒍>wéi|\ ;
+蒉>kuì|\ ;
+蒈>kăi|\ ;
+蒆>xue|\ ;
+蒁>shù|\ ;
+蒀>yun|\ ;
+葿>méi|\ ;
+葽>yao|\ ;
+葻>lán|\ ;
+葹>shi|\ ;
+葷>hun|\ ;
+葰>jùn|\ ;
+葯>yào|\ ;
+葨>wei|\ ;
+葦>wĕi|\ ;
+葤>jiè|\ ;
+葢>gài|\ ;
+葝>bèi|\ ;
+葜>jié|\ ;
+葘>rèn|\ ;
+葕>yán|\ ;
+葔>hóu|\ ;
+葐>pén|\ ;
+葇>róu|\ ;
+葄>zuò|\ ;
+葃>zuó|\ ;
+葀>gua|\ ;
+萿>huó|\ ;
+萬>wàn|\ ;
+萩>qiu|\ ;
+萜>tie|\ ;
+萛>jiu|\ ;
+萚>tuò|\ ;
+萘>nài|\ ;
+萖>wăn|\ ;
+萐>shà|\ ;
+萊>lái|\ ;
+萉>féi|\ ;
+菿>dào|\ ;
+菼>tăn|\ ;
+菻>lĭn|\ ;
+華>hua|\ ;
+菭>tái|\ ;
+菬>hua|\ ;
+菫>jĭn|\ ;
+菨>jie|\ ;
+菦>bèi|\ ;
+菣>qìn|\ ;
+菢>bào|\ ;
+菛>mén|\ ;
+菕>lún|\ ;
+菓>guŏ|\ ;
+菎>kun|\ ;
+菍>jùn|\ ;
+菋>wèi|\ ;
+菆>zou|\ ;
+莸>yóu|\ ;
+莮>nán|\ ;
+莭>jié|\ ;
+莥>niŭ|\ ;
+莤>yóu|\ ;
+莢>jiá|\ ;
+莡>cuò|\ ;
+莟>hàn|\ ;
+莝>cuò|\ ;
+莚>yán|\ ;
+莙>jun|\ ;
+莗>che|\ ;
+莏>mèi|\ ;
+莍>qiú|\ ;
+莌>duó|\ ;
+莇>chí|\ ;
+莂>bié|\ ;
+荺>yún|\ ;
+荶>yín|\ ;
+荵>rĕn|\ ;
+荳>dòu|\ ;
+荲>chù|\ ;
+荱>wĕi|\ ;
+荛>ráo|\ ;
+荗>shù|\ ;
+荖>lăo|\ ;
+荕>jin|\ ;
+荎>chí|\ ;
+荄>gai|\ ;
+荂>kua|\ ;
+茿>zhú|\ ;
+茩>gŏu|\ ;
+茥>gui|\ ;
+茢>liè|\ ;
+茡>duo|\ ;
+茠>xiu|\ ;
+茚>yìn|\ ;
+茓>xué|\ ;
+茍>gŏu|\ ;
+苿>wèi|\ ;
+苺>méi|\ ;
+苶>nié|\ ;
+苵>dié|\ ;
+苲>zhă|\ ;
+苭>yăo|\ ;
+苬>qiú|\ ;
+苧>zhù|\ ;
+苤>piĕ|\ ;
+苠>mín|\ ;
+苝>pèi|\ ;
+苃>yŏu|\ ;
+苂>yín|\ ;
+芼>mào|\ ;
+芻>chú|\ ;
+芶>gou|\ ;
+芵>jué|\ ;
+芲>hua|\ ;
+芤>kou|\ ;
+芣>fóu|\ ;
+芢>rén|\ ;
+芠>fóu|\ ;
+芛>wĕi|\ ;
+芚>tún|\ ;
+芕>sui|\ ;
+芔>huĭ|\ ;
+芉>gan|\ ;
+芈>mie|\ ;
+芄>wán|\ ;
+芀>jie|\ ;
+艸>căo|\ ;
+艷>yàn|\ ;
+艶>yàn|\ ;
+艧>huò|\ ;
+艥>jiè|\ ;
+艢>tán|\ ;
+艞>yào|\ ;
+艜>dài|\ ;
+艛>lóu|\ ;
+艖>cha|\ ;
+艓>dié|\ ;
+艒>mào|\ ;
+艁>zào|\ ;
+舺>xiá|\ ;
+舧>fán|\ ;
+舦>tài|\ ;
+舠>dao|\ ;
+舝>xiá|\ ;
+舚>tan|\ ;
+舙>huà|\ ;
+舕>dàn|\ ;
+舓>shì|\ ;
+舑>tan|\ ;
+舏>jiŭ|\ ;
+舋>xìn|\ ;
+舊>jiù|\ ;
+臿>cha|\ ;
+臺>tái|\ ;
+臹>xiu|\ ;
+臸>zhì|\ ;
+臷>dié|\ ;
+臲>niè|\ ;
+臯>gao|\ ;
+臮>dié|\ ;
+臨>lín|\ ;
+臝>luŏ|\ ;
+臛>huò|\ ;
+臙>yan|\ ;
+臖>lü̆|\ ;
+臒>huò|\ ;
+臐>xun|\ ;
+臏>bìn|\ ;
+臎>cuì|\ ;
+臅>chù|\ ;
+臄>jué|\ ;
+膽>dăn|\ ;
+膼>bèi|\ ;
+膹>fèn|\ ;
+膸>suĭ|\ ;
+膶>rùn|\ ;
+膵>cuì|\ ;
+膱>zhí|\ ;
+膰>fán|\ ;
+膭>gui|\ ;
+膬>cuì|\ ;
+膣>lìn|\ ;
+膡>liú|\ ;
+膕>guó|\ ;
+膎>xié|\ ;
+膄>sòu|\ ;
+腵>jia|\ ;
+腲>jué|\ ;
+腬>róu|\ ;
+腪>yùn|\ ;
+腦>năo|\ ;
+腢>nào|\ ;
+腡>gua|\ ;
+腠>còu|\ ;
+腟>luó|\ ;
+腞>dùn|\ ;
+腜>méi|\ ;
+腍>rĕn|\ ;
+腉>jie|\ ;
+腇>nĕi|\ ;
+腅>dàn|\ ;
+腃>kuì|\ ;
+腂>guò|\ ;
+脻>jié|\ ;
+脺>cuì|\ ;
+脶>gua|\ ;
+脰>dòu|\ ;
+脮>nĕi|\ ;
+脫>tuo|\ ;
+脪>tuì|\ ;
+脩>xiu|\ ;
+脢>méi|\ ;
+脜>qie|\ ;
+脙>jué|\ ;
+脗>wĕn|\ ;
+脕>wăn|\ ;
+脈>mài|\ ;
+脇>xié|\ ;
+脅>xié|\ ;
+脄>méi|\ ;
+脃>cuì|\ ;
+胿>gui|\ ;
+胵>zhì|\ ;
+胲>hăi|\ ;
+胟>chĭ|\ ;
+胑>zhi|\ ;
+胇>bei|\ ;
+胅>dié|\ ;
+肵>jìn|\ ;
+肰>rán|\ ;
+肧>pei|\ ;
+肦>ban|\ ;
+肞>cha|\ ;
+肕>rèn|\ ;
+肏>cào|\ ;
+肎>kĕn|\ ;
+肍>qiú|\ ;
+肊>jin|\ ;
+聸>dan|\ ;
+職>zhí|\ ;
+聶>niè|\ ;
+聵>kuì|\ ;
+聭>kuì|\ ;
+聧>kuí|\ ;
+聞>wén|\ ;
+聝>guó|\ ;
+聗>liè|\ ;
+聕>hào|\ ;
+聑>dié|\ ;
+聎>guo|\ ;
+聈>yŏu|\ ;
+聅>chè|\ ;
+聀>zhí|\ ;
+耼>dan|\ ;
+耺>yún|\ ;
+耹>qín|\ ;
+耰>you|\ ;
+耯>huò|\ ;
+耮>lào|\ ;
+耬>lóu|\ ;
+耧>lóu|\ ;
+耥>lŏu|\ ;
+耣>lŭn|\ ;
+耢>lào|\ ;
+耡>chú|\ ;
+耞>jia|\ ;
+耝>chú|\ ;
+耛>chí|\ ;
+耚>huo|\ ;
+耊>diè|\ ;
+耉>gŏu|\ ;
+耈>gŏu|\ ;
+耇>gŏu|\ ;
+翿>dào|\ ;
+翽>huì|\ ;
+翸>pĕn|\ ;
+翷>lín|\ ;
+翭>hóu|\ ;
+翬>hui|\ ;
+翫>wàn|\ ;
+翨>shì|\ ;
+翤>chì|\ ;
+翣>shà|\ ;
+翢>tao|\ ;
+翛>shù|\ ;
+翚>hui|\ ;
+翙>huì|\ ;
+翓>xié|\ ;
+翏>liù|\ ;
+翉>pĕn|\ ;
+翈>xiá|\ ;
+翆>cuì|\ ;
+翄>chì|\ ;
+翂>fen|\ ;
+羵>fĕn|\ ;
+羳>fán|\ ;
+羧>suo|\ ;
+羣>qún|\ ;
+羜>zhù|\ ;
+羙>gao|\ ;
+羒>fén|\ ;
+羑>yŏu|\ ;
+羐>yŏu|\ ;
+羅>luó|\ ;
+羀>liŭ|\ ;
+罻>wèi|\ ;
+罶>liŭ|\ ;
+罱>năn|\ ;
+罬>lăn|\ ;
+罫>guà|\ ;
+罧>lín|\ ;
+罣>guà|\ ;
+罠>mín|\ ;
+罜>jie|\ ;
+罎>tán|\ ;
+罍>léi|\ ;
+罈>tán|\ ;
+罇>zun|\ ;
+缿>hòu|\ ;
+缻>fŏu|\ ;
+缹>fŏu|\ ;
+缲>zăo|\ ;
+缞>cui|\ ;
+缍>duŏ|\ ;
+缋>huì|\ ;
+缊>wen|\ ;
+绱>mĭn|\ ;
+绖>dié|\ ;
+纼>yĭn|\ ;
+纴>rén|\ ;
+纝>léi|\ ;
+纙>luò|\ ;
+纔>cái|\ ;
+纍>léi|\ ;
+纋>you|\ ;
+纈>xié|\ ;
+纇>lèi|\ ;
+纃>lĕi|\ ;
+纁>xun|\ ;
+繿>lán|\ ;
+繽>bin|\ ;
+繸>suì|\ ;
+繷>náo|\ ;
+繲>jiè|\ ;
+繪>huì|\ ;
+繣>huà|\ ;
+繢>huì|\ ;
+繡>xiù|\ ;
+繠>ruĭ|\ ;
+繞>rào|\ ;
+繜>zun|\ ;
+繙>fan|\ ;
+繗>lín|\ ;
+繖>săn|\ ;
+織>zhi|\ ;
+繓>zhì|\ ;
+繐>suì|\ ;
+繎>rán|\ ;
+繍>xiù|\ ;
+繉>hún|\ ;
+繅>sao|\ ;
+繀>suì|\ ;
+縶>zhí|\ ;
+縵>màn|\ ;
+縲>léi|\ ;
+縯>yăn|\ ;
+縮>suo|\ ;
+縩>cài|\ ;
+縡>zăi|\ ;
+縞>găo|\ ;
+縜>yún|\ ;
+縚>tao|\ ;
+縗>cui|\ ;
+縖>cui|\ ;
+縕>yun|\ ;
+縒>cuŏ|\ ;
+縏>pán|\ ;
+縉>jìn|\ ;
+縀>xiá|\ ;
+緿>dài|\ ;
+緼>yun|\ ;
+緻>zhì|\ ;
+緺>gua|\ ;
+緸>yin|\ ;
+緷>guo|\ ;
+緳>xié|\ ;
+緱>gou|\ ;
+緯>wĕi|\ ;
+緭>wèi|\ ;
+緧>qiu|\ ;
+緥>băo|\ ;
+緡>mín|\ ;
+緐>fán|\ ;
+緍>mín|\ ;
+緌>ruí|\ ;
+緋>fei|\ ;
+緊>jĭn|\ ;
+緅>zou|\ ;
+緄>gŭn|\ ;
+緃>hún|\ ;
+緂>tan|\ ;
+緁>qiè|\ ;
+綼>bei|\ ;
+綹>liŭ|\ ;
+綸>lún|\ ;
+綷>cuì|\ ;
+綶>guŏ|\ ;
+綵>căi|\ ;
+綰>wăn|\ ;
+綯>táo|\ ;
+維>wéi|\ ;
+綩>wăn|\ ;
+綞>duŏ|\ ;
+綖>yán|\ ;
+綕>zhi|\ ;
+綑>kŭn|\ ;
+綐>duì|\ ;
+綏>suí|\ ;
+綉>tòu|\ ;
+綅>qin|\ ;
+綀>shu|\ ;
+絿>qiú|\ ;
+絽>lü̆|\ ;
+絺>chi|\ ;
+絶>jué|\ ;
+絵>huì|\ ;
+絰>dié|\ ;
+絯>gai|\ ;
+絬>xiè|\ ;
+絫>lĕi|\ ;
+絪>yin|\ ;
+給>gĕi|\ ;
+絤>bèi|\ ;
+絡>lào|\ ;
+絠>găi|\ ;
+絟>lào|\ ;
+絜>jié|\ ;
+絛>tao|\ ;
+絕>jué|\ ;
+絔>băi|\ ;
+絓>guà|\ ;
+結>jie|\ ;
+絏>xiè|\ ;
+絍>rén|\ ;
+絊>zuì|\ ;
+絉>shù|\ ;
+絆>bàn|\ ;
+絀>chù|\ ;
+紿>dài|\ ;
+紽>tuó|\ ;
+紺>gàn|\ ;
+紸>zhù|\ ;
+紵>zhù|\ ;
+紴>bèi|\ ;
+紲>xiè|\ ;
+紩>zhì|\ ;
+紥>zhá|\ ;
+紤>jiŭ|\ ;
+紣>cuì|\ ;
+紟>jin|\ ;
+紞>dăn|\ ;
+紝>rèn|\ ;
+紜>yún|\ ;
+紛>fen|\ ;
+紙>zhĭ|\ ;
+紗>sha|\ ;
+紖>yĭn|\ ;
+紓>shu|\ ;
+紒>jiè|\ ;
+紑>fóu|\ ;
+紐>niŭ|\ ;
+紏>tŏu|\ ;
+紋>wén|\ ;
+紉>rèn|\ ;
+紈>wán|\ ;
+約>yao|\ ;
+紃>xún|\ ;
+紁>chà|\ ;
+糾>jiu|\ ;
+糺>jiu|\ ;
+糷>lán|\ ;
+糵>niè|\ ;
+糳>zuò|\ ;
+糱>niè|\ ;
+糥>nuò|\ ;
+糤>chì|\ ;
+糣>săn|\ ;
+糞>fèn|\ ;
+糝>săn|\ ;
+糔>xiŭ|\ ;
+糒>bèi|\ ;
+糏>xiè|\ ;
+糂>róu|\ ;
+粿>guŏ|\ ;
+粺>bài|\ ;
+粵>yuè|\ ;
+粨>băi|\ ;
+粦>lín|\ ;
+粓>gan|\ ;
+粎>chĭ|\ ;
+粋>cuì|\ ;
+粈>rŏu|\ ;
+粆>sha|\ ;
+粄>băn|\ ;
+籿>cùn|\ ;
+籺>xié|\ ;
+籷>zhé|\ ;
+籵>fán|\ ;
+籰>yuè|\ ;
+籮>luó|\ ;
+籥>yuè|\ ;
+籣>lán|\ ;
+籟>lài|\ ;
+籜>tuò|\ ;
+籔>sŏu|\ ;
+籓>fan|\ ;
+籒>fán|\ ;
+籉>tái|\ ;
+籇>háo|\ ;
+籆>yuè|\ ;
+籄>kuì|\ ;
+籃>lán|\ ;
+簺>sài|\ ;
+簷>yán|\ ;
+簳>gàn|\ ;
+簲>găn|\ ;
+簰>pái|\ ;
+簮>zan|\ ;
+簭>shì|\ ;
+簩>láo|\ ;
+簨>sŭn|\ ;
+簤>dài|\ ;
+簣>kuì|\ ;
+簢>mĭn|\ ;
+簞>dan|\ ;
+簔>suo|\ ;
+簑>suo|\ ;
+簍>lŏu|\ ;
+簆>kòu|\ ;
+簂>guó|\ ;
+篺>pái|\ ;
+篸>sen|\ ;
+篶>yan|\ ;
+篲>huì|\ ;
+篫>zhú|\ ;
+篪>chí|\ ;
+篨>chú|\ ;
+篞>niè|\ ;
+篛>ruò|\ ;
+篗>yuè|\ ;
+篔>yún|\ ;
+篍>qiu|\ ;
+篋>qiè|\ ;
+築>zhú|\ ;
+範>fàn|\ ;
+篃>méi|\ ;
+節>jié|\ ;
+箷>shi|\ ;
+箰>sŭn|\ ;
+箨>tuò|\ ;
+箟>jùn|\ ;
+箚>zhá|\ ;
+箘>jùn|\ ;
+箖>lín|\ ;
+箑>shà|\ ;
+箎>chí|\ ;
+箈>chí|\ ;
+箃>zou|\ ;
+箂>lái|\ ;
+筼>yún|\ ;
+筸>gan|\ ;
+筶>găo|\ ;
+筰>zuó|\ ;
+筯>zhù|\ ;
+筫>zhì|\ ;
+筪>jia|\ ;
+筨>hán|\ ;
+筙>lái|\ ;
+筍>sŭn|\ ;
+筈>gua|\ ;
+筄>yào|\ ;
+筃>yin|\ ;
+筂>chí|\ ;
+筀>guì|\ ;
+笿>luò|\ ;
+笷>măo|\ ;
+笶>shĭ|\ ;
+笵>fàn|\ ;
+笲>fán|\ ;
+笯>fán|\ ;
+笩>pèi|\ ;
+笣>bao|\ ;
+笢>mĭn|\ ;
+笡>qiè|\ ;
+笜>zhú|\ ;
+笚>xiá|\ ;
+笒>cén|\ ;
+笁>zhú|\ ;
+竾>chí|\ ;
+竻>găn|\ ;
+竷>kàn|\ ;
+竴>cui|\ ;
+竪>shù|\ ;
+竕>shí|\ ;
+竐>chù|\ ;
+竎>fòu|\ ;
+竍>shí|\ ;
+竌>chù|\ ;
+竊>qiè|\ ;
+竈>wèi|\ ;
+竇>dòu|\ ;
+竃>zào|\ ;
+竁>cuì|\ ;
+窺>kui|\ ;
+窷>kuĭ|\ ;
+窰>yáo|\ ;
+窯>yáo|\ ;
+窞>dàn|\ ;
+窛>kòu|\ ;
+窔>yăo|\ ;
+窐>gui|\ ;
+窋>zhú|\ ;
+窇>báo|\ ;
+窅>yăo|\ ;
+窂>láo|\ ;
+穾>yào|\ ;
+穼>sen|\ ;
+穻>tún|\ ;
+穳>zàn|\ ;
+穱>jué|\ ;
+穭>lü̆|\ ;
+穫>huò|\ ;
+穩>wĕn|\ ;
+穨>tuí|\ ;
+穦>bin|\ ;
+穤>nuò|\ ;
+穢>huì|\ ;
+穟>suì|\ ;
+穕>qiè|\ ;
+穐>qiu|\ ;
+穏>wĕn|\ ;
+穉>zhì|\ ;
+穈>mén|\ ;
+穂>suì|\ ;
+穁>căn|\ ;
+稾>găo|\ ;
+稲>dào|\ ;
+稭>jie|\ ;
+稬>nuò|\ ;
+稤>lüè|\ ;
+稡>lüĕ|\ ;
+稝>huà|\ ;
+稛>kŭn|\ ;
+稙>zhí|\ ;
+稓>zuó|\ ;
+稐>lŭn|\ ;
+稈>găn|\ ;
+稇>kŭn|\ ;
+稁>kăo|\ ;
+秼>gào|\ ;
+秹>chĭ|\ ;
+秷>zhí|\ ;
+秵>yin|\ ;
+秳>huó|\ ;
+秲>zhì|\ ;
+秮>huó|\ ;
+秪>zhi|\ ;
+秨>zuó|\ ;
+秞>yóu|\ ;
+秚>bàn|\ ;
+秖>zhi|\ ;
+秓>zhi|\ ;
+秐>yún|\ ;
+秏>hào|\ ;
+秎>fén|\ ;
+秌>qiu|\ ;
+秅>chá|\ ;
+秂>rén|\ ;
+禼>xiè|\ ;
+禸>róu|\ ;
+禷>lèi|\ ;
+禶>zăn|\ ;
+禴>yuè|\ ;
+禱>dăo|\ ;
+禬>guì|\ ;
+禫>tăn|\ ;
+禞>gào|\ ;
+禖>méi|\ ;
+禍>huò|\ ;
+禋>yin|\ ;
+禉>yŏu|\ ;
+禇>zhĕ|\ ;
+禆>bei|\ ;
+禃>zhí|\ ;
+祽>zuì|\ ;
+祹>táo|\ ;
+祶>bĭn|\ ;
+祵>kŭn|\ ;
+祴>gai|\ ;
+祲>jin|\ ;
+祰>gào|\ ;
+祮>gào|\ ;
+祬>zhi|\ ;
+祫>xiá|\ ;
+祪>guĭ|\ ;
+祣>lü̆|\ ;
+祙>mèi|\ ;
+祑>zhì|\ ;
+祐>yòu|\ ;
+祏>shí|\ ;
+祎>fèi|\ ;
+祋>duì|\ ;
+祅>yao|\ ;
+祄>xiè|\ ;
+礿>yuè|\ ;
+礹>yán|\ ;
+礸>zăn|\ ;
+礷>lán|\ ;
+礮>pào|\ ;
+礭>què|\ ;
+礬>fán|\ ;
+礩>zhì|\ ;
+礨>lĕi|\ ;
+礧>lèi|\ ;
+礣>miè|\ ;
+礟>pào|\ ;
+礜>léi|\ ;
+礚>kài|\ ;
+礗>pin|\ ;
+礐>què|\ ;
+礎>chŭ|\ ;
+礌>léi|\ ;
+礊>huò|\ ;
+磻>pán|\ ;
+磱>láo|\ ;
+磪>cui|\ ;
+磥>lĕi|\ ;
+磤>yin|\ ;
+磡>kàn|\ ;
+磓>dui|\ ;
+磑>wèi|\ ;
+磈>wĕi|\ ;
+磆>huá|\ ;
+磂>liù|\ ;
+碻>què|\ ;
+確>què|\ ;
+碯>năo|\ ;
+碬>xiá|\ ;
+碨>wei|\ ;
+碤>wĕi|\ ;
+碞>yán|\ ;
+碖>lùn|\ ;
+碒>yín|\ ;
+碏>què|\ ;
+碈>mín|\ ;
+碅>jun|\ ;
+碄>lín|\ ;
+硽>liù|\ ;
+硸>nuè|\ ;
+硱>kŭn|\ ;
+硰>sha|\ ;
+硯>yàn|\ ;
+硩>chè|\ ;
+硨>che|\ ;
+硤>xiá|\ ;
+硙>wèi|\ ;
+硍>kèn|\ ;
+硊>wĕi|\ ;
+硈>jiá|\ ;
+硃>zhu|\ ;
+砹>nuŏ|\ ;
+砲>pào|\ ;
+砫>zhŭ|\ ;
+砤>tuó|\ ;
+砢>luŏ|\ ;
+砟>zhă|\ ;
+砙>pan|\ ;
+砕>suì|\ ;
+砓>zhé|\ ;
+砏>fen|\ ;
+砎>jiè|\ ;
+砋>qiè|\ ;
+砈>nuŏ|\ ;
+砇>mín|\ ;
+砄>jué|\ ;
+砃>dan|\ ;
+矺>tuo|\ ;
+矲>băi|\ ;
+矱>huò|\ ;
+矦>hóu|\ ;
+矡>jué|\ ;
+矝>jué|\ ;
+矚>zhŭ|\ ;
+矙>kàn|\ ;
+矕>măn|\ ;
+矐>huò|\ ;
+矉>bin|\ ;
+矆>huò|\ ;
+矅>yào|\ ;
+矄>xun|\ ;
+矂>sào|\ ;
+矀>wéi|\ ;
+瞺>huì|\ ;
+瞶>guì|\ ;
+瞵>lín|\ ;
+瞴>móu|\ ;
+瞮>chè|\ ;
+瞞>mán|\ ;
+瞝>chi|\ ;
+瞜>lou|\ ;
+瞓>mén|\ ;
+瞐>mào|\ ;
+瞍>sŏu|\ ;
+瞉>kòu|\ ;
+瞆>kuì|\ ;
+瞃>guì|\ ;
+睺>hóu|\ ;
+睸>mèi|\ ;
+睵>cai|\ ;
+睴>gùn|\ ;
+睱>xià|\ ;
+睯>hun|\ ;
+睧>hun|\ ;
+睟>suì|\ ;
+睞>lài|\ ;
+睙>liè|\ ;
+睗>shì|\ ;
+睕>wan|\ ;
+睔>hŭn|\ ;
+睏>kùn|\ ;
+睌>wăn|\ ;
+睉>cuo|\ ;
+睅>hàn|\ ;
+睂>méi|\ ;
+眿>mài|\ ;
+眰>dié|\ ;
+眣>dié|\ ;
+眛>mèi|\ ;
+眓>huò|\ ;
+眑>yăo|\ ;
+眎>shì|\ ;
+眊>mào|\ ;
+眅>pan|\ ;
+眃>yún|\ ;
+盿>mín|\ ;
+盺>fén|\ ;
+盰>găn|\ ;
+盨>shŭ|\ ;
+盤>pán|\ ;
+盡>jìn|\ ;
+盠>jĭn|\ ;
+盜>dào|\ ;
+盚>qiú|\ ;
+盕>fàn|\ ;
+盌>wăn|\ ;
+盃>bei|\ ;
+皹>jun|\ ;
+皸>jun|\ ;
+皶>zha|\ ;
+皵>què|\ ;
+皳>qiú|\ ;
+皰>pào|\ ;
+皯>găn|\ ;
+皥>hào|\ ;
+皡>hào|\ ;
+皠>cuĭ|\ ;
+皞>hào|\ ;
+皝>cuì|\ ;
+皜>hào|\ ;
+皔>hàn|\ ;
+皐>gao|\ ;
+皌>hui|\ ;
+皃>mào|\ ;
+癳>luŏ|\ ;
+癱>tan|\ ;
+癮>yĭn|\ ;
+癩>lài|\ ;
+癨>huò|\ ;
+癤>jié|\ ;
+癡>chi|\ ;
+癟>biĕ|\ ;
+癝>lĭn|\ ;
+癛>lĭn|\ ;
+癚>dàn|\ ;
+癙>shŭ|\ ;
+癗>lĕi|\ ;
+癓>wéi|\ ;
+癉>dan|\ ;
+癈>fèi|\ ;
+癆>láo|\ ;
+癅>liú|\ ;
+瘽>jìn|\ ;
+瘺>lòu|\ ;
+瘷>suŏ|\ ;
+瘶>lòu|\ ;
+瘰>luŏ|\ ;
+瘣>lĕi|\ ;
+瘛>chì|\ ;
+瘚>jué|\ ;
+瘖>yin|\ ;
+瘒>wén|\ ;
+瘑>gua|\ ;
+瘅>dàn|\ ;
+瘃>zhú|\ ;
+痽>dui|\ ;
+痻>mín|\ ;
+痸>chì|\ ;
+痳>lín|\ ;
+痥>duó|\ ;
+痗>mèi|\ ;
+痓>chì|\ ;
+痑>duŏ|\ ;
+痐>huí|\ ;
+痏>wĕi|\ ;
+痎>kai|\ ;
+痄>zhà|\ ;
+痀>gou|\ ;
+疿>fèi|\ ;
+疻>zhĭ|\ ;
+疶>xiè|\ ;
+疰>zhù|\ ;
+疩>cuì|\ ;
+疨>xia|\ ;
+疧>zhi|\ ;
+疦>jué|\ ;
+疜>xià|\ ;
+疓>năi|\ ;
+疐>zhì|\ ;
+疎>shu|\ ;
+疍>dàn|\ ;
+疌>niè|\ ;
+疊>dié|\ ;
+疉>dié|\ ;
+疄>lín|\ ;
+疁>liú|\ ;
+疀>cha|\ ;
+畾>léi|\ ;
+畵>huà|\ ;
+畱>liú|\ ;
+畯>jùn|\ ;
+畭>liŭ|\ ;
+畫>huà|\ ;
+畨>pan|\ ;
+畧>fan|\ ;
+畤>zhì|\ ;
+畡>gai|\ ;
+畘>liŭ|\ ;
+畍>jiè|\ ;
+畇>yún|\ ;
+畄>liú|\ ;
+畃>wei|\ ;
+畂>jiù|\ ;
+甴>zhá|\ ;
+甧>sen|\ ;
+甤>ruí|\ ;
+甝>han|\ ;
+甛>hán|\ ;
+甗>yăn|\ ;
+甔>dan|\ ;
+甐>lín|\ ;
+甊>lŏu|\ ;
+瓻>chi|\ ;
+瓭>dăn|\ ;
+瓫>pén|\ ;
+瓟>báo|\ ;
+瓚>zàn|\ ;
+瓙>dào|\ ;
+瓓>làn|\ ;
+瓍>suì|\ ;
+瓌>gui|\ ;
+瓉>zàn|\ ;
+瓇>róu|\ ;
+瓆>zhí|\ ;
+瓃>léi|\ ;
+瓂>gài|\ ;
+瓁>huò|\ ;
+璼>lán|\ ;
+璻>zuĭ|\ ;
+璺>wèn|\ ;
+璸>bin|\ ;
+璶>jìn|\ ;
+璲>suì|\ ;
+璯>huì|\ ;
+璮>tăn|\ ;
+璭>gùn|\ ;
+璪>zăo|\ ;
+璡>jìn|\ ;
+璠>fán|\ ;
+璝>gui|\ ;
+璛>jin|\ ;
+璚>jué|\ ;
+璘>lín|\ ;
+璕>xún|\ ;
+璏>zhì|\ ;
+璌>yín|\ ;
+璊>mén|\ ;
+璆>qiú|\ ;
+璅>suŏ|\ ;
+瑻>kun|\ ;
+瑸>bin|\ ;
+瑴>jìn|\ ;
+瑳>cuŏ|\ ;
+瑬>liú|\ ;
+瑫>tao|\ ;
+瑨>jìn|\ ;
+瑧>jin|\ ;
+瑥>wen|\ ;
+瑤>yáo|\ ;
+瑣>suŏ|\ ;
+瑡>shi|\ ;
+瑠>liú|\ ;
+瑎>jie|\ ;
+瑋>wĕi|\ ;
+瑉>mín|\ ;
+瑈>róu|\ ;
+瑇>dài|\ ;
+瑂>méi|\ ;
+琿>hún|\ ;
+琾>jiè|\ ;
+琹>qín|\ ;
+琷>què|\ ;
+琲>bèi|\ ;
+琣>hui|\ ;
+琡>chù|\ ;
+琟>wéi|\ ;
+琝>wén|\ ;
+琜>lái|\ ;
+琘>mín|\ ;
+琗>cuì|\ ;
+琕>pín|\ ;
+琓>wán|\ ;
+琎>jin|\ ;
+琇>xiù|\ ;
+琀>hán|\ ;
+珼>bèi|\ ;
+珻>méi|\ ;
+珺>jùn|\ ;
+珳>hàn|\ ;
+珮>pèi|\ ;
+珪>gui|\ ;
+珨>xiá|\ ;
+珧>yáo|\ ;
+珤>băo|\ ;
+珣>xún|\ ;
+珢>kèn|\ ;
+珡>qín|\ ;
+珛>xiù|\ ;
+珚>yan|\ ;
+珒>jin|\ ;
+珋>liŭ|\ ;
+珃>răn|\ ;
+玾>jiă|\ ;
+玽>gŏu|\ ;
+玬>dăn|\ ;
+玨>jué|\ ;
+玧>yŭn|\ ;
+玦>jué|\ ;
+玥>yuè|\ ;
+玠>jiè|\ ;
+玟>mín|\ ;
+玕>gan|\ ;
+玃>jué|\ ;
+玀>luó|\ ;
+獶>náo|\ ;
+獵>liè|\ ;
+獳>nòu|\ ;
+獲>huò|\ ;
+獱>pín|\ ;
+獩>huì|\ ;
+獢>huá|\ ;
+獡>què|\ ;
+獟>yào|\ ;
+獜>lín|\ ;
+獖>fén|\ ;
+獕>cui|\ ;
+獔>háo|\ ;
+獌>màn|\ ;
+獋>háo|\ ;
+獆>háo|\ ;
+獅>shi|\ ;
+獃>dai|\ ;
+獀>sou|\ ;
+猻>sun|\ ;
+猺>yáo|\ ;
+猹>zha|\ ;
+猸>méi|\ ;
+猶>yóu|\ ;
+猳>jia|\ ;
+猘>zhì|\ ;
+猓>guŏ|\ ;
+猒>yan|\ ;
+猑>kun|\ ;
+猍>lái|\ ;
+猌>yìn|\ ;
+猇>yáo|\ ;
+猆>fei|\ ;
+猅>pái|\ ;
+猂>hàn|\ ;
+猀>sha|\ ;
+狿>yán|\ ;
+狾>zhì|\ ;
+狽>bèi|\ ;
+狹>xiá|\ ;
+狫>lăo|\ ;
+狥>xùn|\ ;
+狚>dàn|\ ;
+狘>yuè|\ ;
+狖>yòu|\ ;
+狏>tuó|\ ;
+犾>yín|\ ;
+犼>hŏu|\ ;
+犲>cái|\ ;
+犰>qiú|\ ;
+犩>wèi|\ ;
+犦>bào|\ ;
+犣>liè|\ ;
+犜>bei|\ ;
+犚>wèi|\ ;
+犙>san|\ ;
+犗>jiè|\ ;
+犖>luò|\ ;
+犕>bèi|\ ;
+犓>chú|\ ;
+犌>jia|\ ;
+犉>rún|\ ;
+犇>ben|\ ;
+犃>pŏu|\ ;
+牰>yòu|\ ;
+牬>bèi|\ ;
+牪>yàn|\ ;
+牣>rèn|\ ;
+牞>jiu|\ ;
+牏>tóu|\ ;
+牉>pàn|\ ;
+牃>dié|\ ;
+爲>wèi|\ ;
+爮>páo|\ ;
+爥>zhú|\ ;
+爤>làn|\ ;
+爡>chè|\ ;
+爛>làn|\ ;
+爚>yuè|\ ;
+爕>xiè|\ ;
+爓>yàn|\ ;
+爑>jué|\ ;
+爋>xun|\ ;
+爈>liè|\ ;
+爁>làn|\ ;
+燿>yào|\ ;
+燾>dào|\ ;
+燼>jìn|\ ;
+燻>xun|\ ;
+燺>dào|\ ;
+燷>lán|\ ;
+燴>huì|\ ;
+燲>xié|\ ;
+燰>wei|\ ;
+燭>zhú|\ ;
+燬>huĭ|\ ;
+燩>què|\ ;
+燦>càn|\ ;
+燤>tài|\ ;
+燣>lán|\ ;
+燢>xué|\ ;
+燜>mèn|\ ;
+燚>cuo|\ ;
+燘>mĕi|\ ;
+燖>xún|\ ;
+燓>fen|\ ;
+燐>lín|\ ;
+燌>bèn|\ ;
+燉>dùn|\ ;
+燇>zùn|\ ;
+燆>dun|\ ;
+燄>yàn|\ ;
+熾>chì|\ ;
+熯>hàn|\ ;
+熭>dăn|\ ;
+熫>zhì|\ ;
+熦>jué|\ ;
+熣>sui|\ ;
+熡>lóu|\ ;
+熓>liù|\ ;
+熎>yào|\ ;
+熋>nái|\ ;
+熉>yún|\ ;
+熇>kăo|\ ;
+熅>yùn|\ ;
+熁>xié|\ ;
+煹>gòu|\ ;
+煴>yun|\ ;
+煱>gua|\ ;
+煰>gào|\ ;
+煯>jie|\ ;
+煭>bao|\ ;
+煫>suì|\ ;
+煪>qiú|\ ;
+煩>fán|\ ;
+煣>rŏu|\ ;
+煡>xìn|\ ;
+煟>wèi|\ ;
+煝>mèi|\ ;
+煙>yan|\ ;
+煗>méi|\ ;
+煒>wĕi|\ ;
+煑>zhŭ|\ ;
+煇>hui|\ ;
+煆>xia|\ ;
+煃>kuĭ|\ ;
+焳>jué|\ ;
+焮>xìn|\ ;
+焫>ruò|\ ;
+焠>cuì|\ ;
+焞>tun|\ ;
+焝>hùn|\ ;
+焜>kun|\ ;
+焛>hŭn|\ ;
+焔>yàn|\ ;
+焎>xiè|\ ;
+焌>jùn|\ ;
+焆>jué|\ ;
+焄>xun|\ ;
+焂>shú|\ ;
+烾>chì|\ ;
+烸>hăi|\ ;
+烲>chè|\ ;
+烣>hui|\ ;
+烢>zhè|\ ;
+烠>huĭ|\ ;
+烚>huĭ|\ ;
+烗>kài|\ ;
+烕>xuè|\ ;
+烓>wei|\ ;
+烒>shì|\ ;
+烑>yáo|\ ;
+烐>miè|\ ;
+烎>yín|\ ;
+為>wéi|\ ;
+炶>han|\ ;
+炲>tái|\ ;
+炰>páo|\ ;
+炨>bao|\ ;
+炧>duò|\ ;
+炢>zhú|\ ;
+炠>xiá|\ ;
+炘>xin|\ ;
+炍>pàn|\ ;
+炌>kài|\ ;
+炄>niŭ|\ ;
+炃>fén|\ ;
+災>zai|\ ;
+灻>chì|\ ;
+灺>xiè|\ ;
+灹>zhà|\ ;
+灳>hui|\ ;
+灩>yàn|\ ;
+灨>găn|\ ;
+灧>yàn|\ ;
+灥>xún|\ ;
+灣>wan|\ ;
+灡>lán|\ ;
+灠>lăn|\ ;
+灟>zhú|\ ;
+灝>hào|\ ;
+灘>tan|\ ;
+灔>yàn|\ ;
+灒>hàn|\ ;
+灎>yàn|\ ;
+灆>lán|\ ;
+灄>shè|\ ;
+瀿>fán|\ ;
+瀾>lán|\ ;
+瀻>dài|\ ;
+瀹>yuè|\ ;
+瀶>lín|\ ;
+瀵>fèn|\ ;
+瀬>lài|\ ;
+瀪>fán|\ ;
+瀩>duì|\ ;
+瀨>lài|\ ;
+瀦>zhu|\ ;
+瀥>hào|\ ;
+瀢>wéi|\ ;
+瀡>suĭ|\ ;
+瀙>qin|\ ;
+瀖>huò|\ ;
+瀕>bin|\ ;
+瀒>qìn|\ ;
+瀐>bào|\ ;
+瀏>liú|\ ;
+瀊>pán|\ ;
+瀉>xiè|\ ;
+瀈>hui|\ ;
+瀄>jié|\ ;
+瀀>you|\ ;
+濼>luò|\ ;
+濻>duì|\ ;
+濷>fèi|\ ;
+濱>bin|\ ;
+濰>wéi|\ ;
+濬>jùn|\ ;
+濫>làn|\ ;
+濩>huò|\ ;
+濧>duì|\ ;
+濦>yĭn|\ ;
+濤>tao|\ ;
+濜>jìn|\ ;
+濕>shi|\ ;
+濋>chŭ|\ ;
+濊>huì|\ ;
+濆>fén|\ ;
+濅>fèn|\ ;
+濄>guo|\ ;
+澿>qín|\ ;
+澻>suì|\ ;
+澸>dăn|\ ;
+澷>dan|\ ;
+澯>càn|\ ;
+澫>màn|\ ;
+澪>huá|\ ;
+澩>xué|\ ;
+澨>shì|\ ;
+澥>xiè|\ ;
+澟>lĭn|\ ;
+澔>hào|\ ;
+澑>liù|\ ;
+澐>yún|\ ;
+澏>hàn|\ ;
+澊>cun|\ ;
+澉>găn|\ ;
+澇>lào|\ ;
+潿>wéi|\ ;
+潾>lín|\ ;
+潻>shŭ|\ ;
+潵>sàn|\ ;
+潰>kuì|\ ;
+潯>xún|\ ;
+潬>dàn|\ ;
+潫>wan|\ ;
+潤>rùn|\ ;
+潣>láo|\ ;
+潡>dùn|\ ;
+潠>xùn|\ ;
+潙>gui|\ ;
+潔>jié|\ ;
+潓>huì|\ ;
+潏>jué|\ ;
+潌>zhì|\ ;
+潄>shù|\ ;
+潃>xún|\ ;
+漼>cuĭ|\ ;
+漹>liú|\ ;
+漷>kuò|\ ;
+漢>hàn|\ ;
+漛>tan|\ ;
+漑>gài|\ ;
+漐>yàn|\ ;
+漍>guó|\ ;
+漌>jĭn|\ ;
+滿>măn|\ ;
+滾>gŭn|\ ;
+滼>fàn|\ ;
+滱>kòu|\ ;
+滯>zhì|\ ;
+滫>xiu|\ ;
+滜>gao|\ ;
+滛>yín|\ ;
+滙>huì|\ ;
+滖>sui|\ ;
+滐>jié|\ ;
+滍>zhĭ|\ ;
+滈>hào|\ ;
+滅>miè|\ ;
+滀>chù|\ ;
+溿>pàn|\ ;
+溾>wei|\ ;
+溼>shi|\ ;
+溵>yin|\ ;
+溳>hún|\ ;
+溰>qín|\ ;
+溮>shi|\ ;
+溫>wen|\ ;
+溨>cái|\ ;
+溣>lún|\ ;
+溠>zhà|\ ;
+溝>gou|\ ;
+溙>liú|\ ;
+溔>kài|\ ;
+溑>suŏ|\ ;
+溎>guì|\ ;
+溍>jìn|\ ;
+溈>gui|\ ;
+溇>lü̆|\ ;
+湼>niè|\ ;
+湺>yán|\ ;
+湵>yŏu|\ ;
+湴>bàn|\ ;
+湳>năn|\ ;
+湱>huò|\ ;
+湣>mĭn|\ ;
+湠>hun|\ ;
+湝>jie|\ ;
+湜>shí|\ ;
+湚>yìn|\ ;
+湓>pén|\ ;
+湏>huì|\ ;
+湌>can|\ ;
+湋>wéi|\ ;
+湊>còu|\ ;
+湈>méi|\ ;
+湁>shí|\ ;
+湀>kuí|\ ;
+渾>hún|\ ;
+渽>zai|\ ;
+渼>mĕi|\ ;
+渷>yăn|\ ;
+渵>liú|\ ;
+渰>yan|\ ;
+渫>xiè|\ ;
+渪>dié|\ ;
+渨>wei|\ ;
+渦>guo|\ ;
+渞>qiú|\ ;
+渘>huì|\ ;
+渉>shè|\ ;
+渆>dié|\ ;
+渄>fei|\ ;
+渂>wèn|\ ;
+渀>ben|\ ;
+淾>yĭn|\ ;
+淽>zhĭ|\ ;
+淶>lái|\ ;
+淪>lún|\ ;
+淛>zhè|\ ;
+淚>lèi|\ ;
+淔>chì|\ ;
+淏>hào|\ ;
+淍>chù|\ ;
+淊>yan|\ ;
+淉>guŏ|\ ;
+淁>qiè|\ ;
+涽>hun|\ ;
+涻>gàn|\ ;
+涢>yún|\ ;
+涠>wéi|\ ;
+涙>lèi|\ ;
+涒>tun|\ ;
+涏>shù|\ ;
+涆>hàn|\ ;
+涄>pin|\ ;
+涃>kùn|\ ;
+浿>pèi|\ ;
+浽>sui|\ ;
+浹>jia|\ ;
+浶>láo|\ ;
+浫>hăi|\ ;
+浨>lăn|\ ;
+浢>dòu|\ ;
+浟>yóu|\ ;
+浛>hán|\ ;
+浘>wĕi|\ ;
+浗>qiú|\ ;
+浖>liè|\ ;
+浕>jìn|\ ;
+洷>zhì|\ ;
+洯>jié|\ ;
+洬>dào|\ ;
+洩>xiè|\ ;
+洧>wĕi|\ ;
+洡>lĕi|\ ;
+洠>móu|\ ;
+洕>yin|\ ;
+洔>zhĭ|\ ;
+洓>suŏ|\ ;
+洉>hòu|\ ;
+洈>wéi|\ ;
+洅>yan|\ ;
+洃>hui|\ ;
+洂>huì|\ ;
+泿>yín|\ ;
+泬>jué|\ ;
+泧>yuè|\ ;
+泜>chí|\ ;
+泖>măo|\ ;
+泑>yŏu|\ ;
+泏>chù|\ ;
+泍>ben|\ ;
+泇>jia|\ ;
+沺>chí|\ ;
+沲>duò|\ ;
+沰>tuo|\ ;
+沯>chí|\ ;
+沬>mèi|\ ;
+沠>liú|\ ;
+沜>pàn|\ ;
+沚>zhĭ|\ ;
+沒>méi|\ ;
+沑>róu|\ ;
+沎>huò|\ ;
+沋>yóu|\ ;
+沊>dàn|\ ;
+沇>yăn|\ ;
+沄>yún|\ ;
+決>jué|\ ;
+汷>gai|\ ;
+汵>gàn|\ ;
+汮>jun|\ ;
+汭>ruì|\ ;
+汫>mén|\ ;
+汦>chí|\ ;
+汖>gan|\ ;
+汓>qiú|\ ;
+汎>fàn|\ ;
+汍>wán|\ ;
+汄>hàn|\ ;
+汃>bin|\ ;
+氿>guĭ|\ ;
+氾>fàn|\ ;
+氳>yun|\ ;
+氝>nèi|\ ;
+氕>pie|\ ;
+氒>jué|\ ;
+氎>dié|\ ;
+氌>luó|\ ;
+氉>sào|\ ;
+氂>máo|\ ;
+毿>san|\ ;
+毻>tuò|\ ;
+毺>máo|\ ;
+毸>sui|\ ;
+毷>mào|\ ;
+毲>duó|\ ;
+毰>péi|\ ;
+毭>dòu|\ ;
+毬>qiú|\ ;
+毥>xún|\ ;
+毢>sai|\ ;
+毠>jia|\ ;
+毞>mào|\ ;
+毑>zuŏ|\ ;
+毎>mĕi|\ ;
+毇>huĭ|\ ;
+毃>què|\ ;
+毀>huĭ|\ ;
+殾>huì|\ ;
+殽>yáo|\ ;
+殺>sha|\ ;
+殶>zhù|\ ;
+殯>bìn|\ ;
+殫>dan|\ ;
+殨>huì|\ ;
+殥>yín|\ ;
+殣>jìn|\ ;
+殟>wen|\ ;
+殞>yŭn|\ ;
+殙>hun|\ ;
+殘>cán|\ ;
+殗>dié|\ ;
+殕>fŏu|\ ;
+殏>qiù|\ ;
+殌>jué|\ ;
+殀>yăo|\ ;
+歽>zhé|\ ;
+歺>dăi|\ ;
+歸>gui|\ ;
+歵>cuò|\ ;
+歳>suì|\ ;
+歲>suì|\ ;
+歱>kuì|\ ;
+歯>chĭ|\ ;
+歭>chí|\ ;
+歞>kăn|\ ;
+歜>chù|\ ;
+歕>pen|\ ;
+歏>jìn|\ ;
+歎>tàn|\ ;
+歅>yin|\ ;
+歄>gua|\ ;
+歁>kăn|\ ;
+欿>kăn|\ ;
+欽>qin|\ ;
+欼>chĭ|\ ;
+欱>xià|\ ;
+欮>jué|\ ;
+欬>kài|\ ;
+欫>chi|\ ;
+欪>chù|\ ;
+欙>léi|\ ;
+欘>zhŭ|\ ;
+欗>lán|\ ;
+欖>lăn|\ ;
+欔>jué|\ ;
+欑>zàn|\ ;
+欏>luó|\ ;
+欈>wéi|\ ;
+欇>shè|\ ;
+欄>lán|\ ;
+櫾>yóu|\ ;
+櫽>yĭn|\ ;
+櫴>lài|\ ;
+櫱>niè|\ ;
+櫫>zhu|\ ;
+櫩>yán|\ ;
+櫧>zhu|\ ;
+櫥>chú|\ ;
+櫠>fèi|\ ;
+櫜>gao|\ ;
+櫛>jié|\ ;
+櫘>huì|\ ;
+櫗>miè|\ ;
+櫑>lĕi|\ ;
+櫐>lĕi|\ ;
+櫏>léi|\ ;
+櫍>zhì|\ ;
+櫌>you|\ ;
+櫉>chú|\ ;
+櫆>kuí|\ ;
+櫃>guì|\ ;
+檿>yăn|\ ;
+檼>yĭn|\ ;
+檺>găo|\ ;
+檶>kăn|\ ;
+檴>huò|\ ;
+檳>bin|\ ;
+檯>tái|\ ;
+檮>táo|\ ;
+檭>yín|\ ;
+檨>she|\ ;
+檤>dào|\ ;
+檡>shì|\ ;
+檟>jiă|\ ;
+檞>jiĕ|\ ;
+檜>guì|\ ;
+檚>chŭ|\ ;
+檖>suì|\ ;
+檓>huĭ|\ ;
+檑>léi|\ ;
+檎>qín|\ ;
+檊>gàn|\ ;
+檇>zuì|\ ;
+檅>suì|\ ;
+檃>yĭn|\ ;
+檁>lĭn|\ ;
+橾>shu|\ ;
+橷>dou|\ ;
+橰>gao|\ ;
+橯>lào|\ ;
+橮>liŭ|\ ;
+橬>cén|\ ;
+橪>răn|\ ;
+橨>fén|\ ;
+橤>ruĭ|\ ;
+橢>tuŏ|\ ;
+橠>nuŏ|\ ;
+橞>duŏ|\ ;
+橝>tan|\ ;
+橜>jué|\ ;
+橔>tuí|\ ;
+橑>lăo|\ ;
+橎>fán|\ ;
+橍>rùn|\ ;
+橊>liú|\ ;
+橉>lìn|\ ;
+橈>náo|\ ;
+橆>cuì|\ ;
+橁>xún|\ ;
+樻>kuì|\ ;
+樺>huà|\ ;
+樹>shù|\ ;
+樶>zui|\ ;
+樴>zhí|\ ;
+樳>xín|\ ;
+樧>sha|\ ;
+樦>zhù|\ ;
+樠>mén|\ ;
+樞>shu|\ ;
+樝>zha|\ ;
+樜>shù|\ ;
+樛>jiu|\ ;
+樓>lóu|\ ;
+樏>lĕi|\ ;
+樎>suo|\ ;
+樋>léi|\ ;
+樇>xiu|\ ;
+樆>fàn|\ ;
+槾>mán|\ ;
+槼>gui|\ ;
+槻>gui|\ ;
+槹>gao|\ ;
+槸>niè|\ ;
+槶>kuì|\ ;
+槱>yŏu|\ ;
+槯>cui|\ ;
+槮>sen|\ ;
+槬>huà|\ ;
+槪>gài|\ ;
+槩>gài|\ ;
+槨>guŏ|\ ;
+槥>huì|\ ;
+槚>jiă|\ ;
+様>kăn|\ ;
+槖>tuó|\ ;
+槔>gao|\ ;
+槑>méi|\ ;
+槏>chù|\ ;
+構>gòu|\ ;
+槈>nòu|\ ;
+槆>dui|\ ;
+槄>tao|\ ;
+槃>pán|\ ;
+槀>kăo|\ ;
+榿>găo|\ ;
+榲>yún|\ ;
+榱>cui|\ ;
+榰>zhi|\ ;
+榯>shí|\ ;
+榦>gàn|\ ;
+榤>jié|\ ;
+榣>yáo|\ ;
+榢>jià|\ ;
+榚>yăo|\ ;
+榎>jiă|\ ;
+榅>yún|\ ;
+楺>róu|\ ;
+楶>jié|\ ;
+楳>méi|\ ;
+楲>jie|\ ;
+楱>còu|\ ;
+楬>jié|\ ;
+楢>yóu|\ ;
+楙>mào|\ ;
+楖>zhì|\ ;
+楑>kuí|\ ;
+楐>jiè|\ ;
+楏>kuí|\ ;
+楎>hún|\ ;
+楍>bĕn|\ ;
+楌>yán|\ ;
+楉>ruò|\ ;
+楇>huò|\ ;
+楆>yao|\ ;
+楃>hui|\ ;
+楁>cha|\ ;
+椼>yăn|\ ;
+椻>yàn|\ ;
+椶>hán|\ ;
+椵>jiă|\ ;
+椳>wei|\ ;
+椲>wĕi|\ ;
+椱>fòu|\ ;
+椯>duó|\ ;
+椮>sen|\ ;
+椥>zhi|\ ;
+椝>gui|\ ;
+椘>chŭ|\ ;
+椕>bin|\ ;
+椑>bei|\ ;
+椄>jie|\ ;
+椃>háo|\ ;
+椀>wăn|\ ;
+棿>niè|\ ;
+棻>fen|\ ;
+棸>zou|\ ;
+棷>zou|\ ;
+棶>lái|\ ;
+棯>rĕn|\ ;
+棪>yăn|\ ;
+棥>fán|\ ;
+棞>hún|\ ;
+棗>zăo|\ ;
+棔>dài|\ ;
+棓>pŏu|\ ;
+棑>pái|\ ;
+棐>fĕi|\ ;
+棎>bài|\ ;
+梾>lái|\ ;
+梽>tuo|\ ;
+梼>dăo|\ ;
+梶>wĕi|\ ;
+梱>kŭn|\ ;
+梫>cen|\ ;
+梪>dòu|\ ;
+梤>fén|\ ;
+梣>cén|\ ;
+梜>jiá|\ ;
+梛>nuó|\ ;
+梚>wăn|\ ;
+梖>bèi|\ ;
+梕>rèn|\ ;
+梔>zhi|\ ;
+梒>hán|\ ;
+梍>zào|\ ;
+梄>yŏu|\ ;
+梂>qiú|\ ;
+桿>găn|\ ;
+桾>jun|\ ;
+桽>wĕn|\ ;
+桺>liŭ|\ ;
+桵>ruĭ|\ ;
+桳>bèn|\ ;
+桰>gua|\ ;
+桮>bei|\ ;
+桬>sha|\ ;
+桪>xín|\ ;
+桚>ráo|\ ;
+桙>móu|\ ;
+桗>duò|\ ;
+桖>duŏ|\ ;
+栻>shì|\ ;
+栺>zhĭ|\ ;
+栶>yin|\ ;
+栯>yŏu|\ ;
+栬>zuì|\ ;
+栨>jié|\ ;
+栣>rĕn|\ ;
+栢>băi|\ ;
+栞>ben|\ ;
+栙>shè|\ ;
+栒>xún|\ ;
+栐>sŭn|\ ;
+栂>méi|\ ;
+栁>liŭ|\ ;
+査>chá|\ ;
+柹>shì|\ ;
+柸>pei|\ ;
+柷>zhù|\ ;
+柵>zhà|\ ;
+柮>duò|\ ;
+柦>dàn|\ ;
+柤>zha|\ ;
+柣>zhí|\ ;
+柟>nán|\ ;
+柛>guì|\ ;
+柕>mào|\ ;
+柋>dài|\ ;
+柉>fán|\ ;
+柈>pán|\ ;
+柁>tuó|\ ;
+枿>niè|\ ;
+枾>shì|\ ;
+枺>duò|\ ;
+枴>gou|\ ;
+枬>nán|\ ;
+枡>dŏu|\ ;
+枟>yún|\ ;
+枔>xún|\ ;
+枓>dŏu|\ ;
+枏>nán|\ ;
+枌>fén|\ ;
+枊>àng|\ ;
+枃>jìn|\ ;
+枂>yuè|\ ;
+杺>xin|\ ;
+杹>huà|\ ;
+杸>niŭ|\ ;
+杮>bèi|\ ;
+杘>chì|\ ;
+杔>duò|\ ;
+杒>rèn|\ ;
+杋>fan|\ ;
+朻>jiu|\ ;
+朹>guĭ|\ ;
+朷>dao|\ ;
+朶>duŏ|\ ;
+朮>shù|\ ;
+朜>tun|\ ;
+朏>fĕi|\ ;
+朌>ban|\ ;
+朆>fen|\ ;
+朅>qiè|\ ;
+朄>yĭn|\ ;
+會>huì|\ ;
+朁>căn|\ ;
+曺>cáo|\ ;
+書>shu|\ ;
+曵>mán|\ ;
+曱>yue|\ ;
+曯>chú|\ ;
+曮>yăn|\ ;
+曪>luŏ|\ ;
+曤>huò|\ ;
+曣>yàn|\ ;
+曡>dié|\ ;
+曓>bào|\ ;
+曑>sen|\ ;
+曍>hào|\ ;
+曋>qĭn|\ ;
+曊>fèi|\ ;
+曇>tán|\ ;
+曃>tài|\ ;
+暽>lín|\ ;
+暼>pie|\ ;
+暺>dàn|\ ;
+暵>hàn|\ ;
+暳>huì|\ ;
+暭>hào|\ ;
+暬>xiè|\ ;
+暫>zàn|\ ;
+暪>mĕn|\ ;
+暩>guì|\ ;
+暥>yàn|\ ;
+暤>hào|\ ;
+暠>găo|\ ;
+暟>kăi|\ ;
+暞>hào|\ ;
+暜>jìn|\ ;
+暛>suŏ|\ ;
+暚>yáo|\ ;
+暔>nán|\ ;
+暓>mào|\ ;
+暐>wĕi|\ ;
+暎>lán|\ ;
+暋>mĭn|\ ;
+暉>hui|\ ;
+暈>yun|\ ;
+暆>xià|\ ;
+晽>lín|\ ;
+晼>wăn|\ ;
+晬>zuì|\ ;
+晩>wăn|\ ;
+晧>hào|\ ;
+晥>hàn|\ ;
+晣>zhe|\ ;
+晢>zhé|\ ;
+晜>kun|\ ;
+晙>jùn|\ ;
+晘>hàn|\ ;
+晐>gai|\ ;
+晊>zhĭ|\ ;
+晉>jìn|\ ;
+晆>kua|\ ;
+時>shí|\ ;
+昻>áng|\ ;
+昷>wen|\ ;
+昳>dié|\ ;
+昲>fèi|\ ;
+昰>shì|\ ;
+昬>hun|\ ;
+昦>hào|\ ;
+昢>pĕi|\ ;
+昖>yán|\ ;
+昑>qĭn|\ ;
+昐>cuò|\ ;
+昋>guì|\ ;
+昅>jié|\ ;
+昄>băn|\ ;
+昁>bèi|\ ;
+旿>hùn|\ ;
+旽>tun|\ ;
+旼>mín|\ ;
+旻>mín|\ ;
+旹>shí|\ ;
+旲>tái|\ ;
+旪>xié|\ ;
+旤>huò|\ ;
+旛>fan|\ ;
+旙>fan|\ ;
+旘>zhì|\ ;
+旈>liú|\ ;
+斿>yóu|\ ;
+斾>liú|\ ;
+斸>zhŭ|\ ;
+斶>chù|\ ;
+斴>lín|\ ;
+斳>qín|\ ;
+斦>yín|\ ;
+斣>chù|\ ;
+斢>tŏu|\ ;
+斝>jiă|\ ;
+斚>jiă|\ ;
+斖>wĕi|\ ;
+斕>lán|\ ;
+斒>ban|\ ;
+斍>jué|\ ;
+斈>fei|\ ;
+數>shŭ|\ ;
+敯>hun|\ ;
+敮>xiá|\ ;
+敪>duó|\ ;
+敨>dŏu|\ ;
+敥>yàn|\ ;
+敠>duó|\ ;
+敜>niè|\ ;
+敚>duó|\ ;
+敗>bài|\ ;
+敓>duó|\ ;
+敊>chù|\ ;
+敆>guó|\ ;
+敃>mĭn|\ ;
+敂>kòu|\ ;
+攽>ban|\ ;
+攼>gan|\ ;
+攷>kăo|\ ;
+攵>kăo|\ ;
+攱>guĭ|\ ;
+攰>guì|\ ;
+攬>lăn|\ ;
+攤>tan|\ ;
+攡>chi|\ ;
+攟>jùn|\ ;
+攞>luo|\ ;
+攝>shè|\ ;
+攜>xié|\ ;
+攗>méi|\ ;
+攕>san|\ ;
+攔>lán|\ ;
+攌>hàn|\ ;
+攈>jùn|\ ;
+攅>zăn|\ ;
+攄>shu|\ ;
+攃>huo|\ ;
+攂>lèi|\ ;
+擾>răo|\ ;
+擽>lüè|\ ;
+擻>sŏu|\ ;
+擺>băi|\ ;
+擹>sòu|\ ;
+擸>liè|\ ;
+擷>xié|\ ;
+擴>kuò|\ ;
+擳>jié|\ ;
+擲>zhì|\ ;
+擯>bìn|\ ;
+擭>huò|\ ;
+擪>huò|\ ;
+擥>lăn|\ ;
+擣>dăo|\ ;
+擡>tái|\ ;
+擔>dan|\ ;
+擑>cha|\ ;
+擌>cào|\ ;
+擃>kuŏ|\ ;
+撴>dun|\ ;
+撳>qìn|\ ;
+撱>tuŏ|\ ;
+撪>bèn|\ ;
+撧>jué|\ ;
+撦>chĕ|\ ;
+撣>dăn|\ ;
+撢>dăn|\ ;
+撡>cao|\ ;
+撛>lĭn|\ ;
+撓>náo|\ ;
+撏>xún|\ ;
+撌>guì|\ ;
+撉>dun|\ ;
+撈>lao|\ ;
+撆>pie|\ ;
+撃>guì|\ ;
+撀>gòu|\ ;
+摿>yin|\ ;
+摵>suŏ|\ ;
+摴>shu|\ ;
+摳>kou|\ ;
+摱>mán|\ ;
+摰>niè|\ ;
+摯>zhì|\ ;
+摫>gui|\ ;
+摦>huà|\ ;
+摣>zha|\ ;
+摡>gài|\ ;
+摟>lou|\ ;
+摛>chi|\ ;
+摗>sou|\ ;
+摑>guó|\ ;
+摍>suo|\ ;
+摉>sou|\ ;
+摂>shè|\ ;
+搾>zhà|\ ;
+搻>niè|\ ;
+搵>wèn|\ ;
+搳>xiá|\ ;
+搱>huá|\ ;
+搯>tao|\ ;
+搫>pán|\ ;
+搩>jié|\ ;
+搣>miè|\ ;
+搢>jìn|\ ;
+搝>qiŭ|\ ;
+搚>xié|\ ;
+搘>zhi|\ ;
+搗>dăo|\ ;
+搖>yáo|\ ;
+搎>sun|\ ;
+損>sŭn|\ ;
+搋>chĭ|\ ;
+搉>què|\ ;
+搇>qìn|\ ;
+搆>gòu|\ ;
+搃>cha|\ ;
+揾>wèn|\ ;
+揺>yáo|\ ;
+揹>bei|\ ;
+揷>cha|\ ;
+揳>jiá|\ ;
+揮>hui|\ ;
+揫>jiu|\ ;
+揜>yăn|\ ;
+揓>shì|\ ;
+揑>nie|\ ;
+揌>sai|\ ;
+揋>wei|\ ;
+揇>năn|\ ;
+揅>yán|\ ;
+揂>jiu|\ ;
+掿>nuò|\ ;
+掲>jie|\ ;
+掯>kèn|\ ;
+掫>zou|\ ;
+採>căi|\ ;
+掟>luĕ|\ ;
+掝>huò|\ ;
+掛>guà|\ ;
+掓>shú|\ ;
+掍>gŭn|\ ;
+掅>duo|\ ;
+掄>lun|\ ;
+掃>săo|\ ;
+捾>sào|\ ;
+捼>nuó|\ ;
+捹>bèn|\ ;
+捸>nie|\ ;
+捯>dáo|\ ;
+捫>mén|\ ;
+捨>shĕ|\ ;
+捦>qín|\ ;
+捥>wàn|\ ;
+捝>tuo|\ ;
+捜>sou|\ ;
+捛>lü̆|\ ;
+捘>zùn|\ ;
+捔>jué|\ ;
+捑>gua|\ ;
+捊>póu|\ ;
+捇>huò|\ ;
+捄>jiù|\ ;
+捃>jùn|\ ;
+挿>cha|\ ;
+挾>jia|\ ;
+挼>nuò|\ ;
+挴>mĕi|\ ;
+挱>suo|\ ;
+挦>xún|\ ;
+挗>jué|\ ;
+挕>dié|\ ;
+挔>lü̆|\ ;
+挓>zha|\ ;
+挒>liè|\ ;
+挆>duŏ|\ ;
+挅>duŏ|\ ;
+挄>kuò|\ ;
+挃>zhì|\ ;
+拻>hui|\ ;
+拹>xié|\ ;
+拸>chĭ|\ ;
+拵>cún|\ ;
+拰>nĭn|\ ;
+拫>hén|\ ;
+拪>kuò|\ ;
+拡>kuò|\ ;
+拝>bài|\ ;
+拋>pao|\ ;
+拃>zhà|\ ;
+拁>jia|\ ;
+拀>chù|\ ;
+抶>chì|\ ;
+抯>zha|\ ;
+抭>yăo|\ ;
+抩>tan|\ ;
+抧>zhĭ|\ ;
+抔>póu|\ ;
+抏>wán|\ ;
+抎>yŭn|\ ;
+抍>wàn|\ ;
+抋>qìn|\ ;
+抆>wèn|\ ;
+抁>yăn|\ ;
+扽>dùn|\ ;
+扺>zhĭ|\ ;
+扴>jiá|\ ;
+扲>pan|\ ;
+扨>rèn|\ ;
+扥>tuo|\ ;
+扡>chĭ|\ ;
+扠>cha|\ ;
+扞>găn|\ ;
+扗>zài|\ ;
+扊>yăn|\ ;
+戼>măo|\ ;
+戺>shì|\ ;
+戭>yăn|\ ;
+戤>gài|\ ;
+戣>kuí|\ ;
+戠>shì|\ ;
+戞>jiá|\ ;
+戝>zéi|\ ;
+戜>dié|\ ;
+戉>yuè|\ ;
+戄>jué|\ ;
+戁>năn|\ ;
+懾>shè|\ ;
+懶>lăn|\ ;
+懱>miè|\ ;
+懰>liú|\ ;
+懮>yŏu|\ ;
+懫>zhí|\ ;
+懨>yan|\ ;
+懧>nuò|\ ;
+懥>zhì|\ ;
+懣>mèn|\ ;
+懢>lán|\ ;
+懟>duì|\ ;
+懛>dai|\ ;
+懚>yìn|\ ;
+懘>chì|\ ;
+懗>xià|\ ;
+懖>gua|\ ;
+懕>yan|\ ;
+懏>jùn|\ ;
+懍>lĭn|\ ;
+懇>kĕn|\ ;
+懆>căo|\ ;
+懄>qín|\ ;
+懃>qín|\ ;
+懀>wài|\ ;
+憻>tăn|\ ;
+憺>dàn|\ ;
+憹>náo|\ ;
+憳>tăn|\ ;
+憰>jué|\ ;
+憯>căn|\ ;
+憫>mĭn|\ ;
+憦>lào|\ ;
+憥>láo|\ ;
+憤>fèn|\ ;
+憣>fán|\ ;
+憠>jué|\ ;
+憞>duì|\ ;
+憜>duŏ|\ ;
+憛>tán|\ ;
+憚>dàn|\ ;
+憗>yìn|\ ;
+憖>yìn|\ ;
+憓>huì|\ ;
+憒>kuì|\ ;
+憏>chì|\ ;
+憊>bèi|\ ;
+憇>fan|\ ;
+憄>zhì|\ ;
+憂>you|\ ;
+慺>lóu|\ ;
+慹>zhí|\ ;
+慴>zhé|\ ;
+慲>mán|\ ;
+慭>yìn|\ ;
+慬>jĭn|\ ;
+慦>jìn|\ ;
+慥>zào|\ ;
+慤>què|\ ;
+慞>cào|\ ;
+慜>mĭn|\ ;
+慛>cuí|\ ;
+慚>cán|\ ;
+慙>cán|\ ;
+慘>căn|\ ;
+慗>chì|\ ;
+慖>guó|\ ;
+慍>yùn|\ ;
+態>tài|\ ;
+慇>yin|\ ;
+慆>tao|\ ;
+慅>sao|\ ;
+慁>hùn|\ ;
+慀>xié|\ ;
+愾>kài|\ ;
+愼>căo|\ ;
+愻>sùn|\ ;
+愺>căo|\ ;
+愷>kăi|\ ;
+愶>xié|\ ;
+愮>yáo|\ ;
+愪>yún|\ ;
+愨>què|\ ;
+愢>sai|\ ;
+愞>nuò|\ ;
+愝>yăn|\ ;
+愜>qiè|\ ;
+愗>mòu|\ ;
+愔>yin|\ ;
+愒>kài|\ ;
+愇>wĕi|\ ;
+愄>tou|\ ;
+愂>bèi|\ ;
+惽>hun|\ ;
+惵>diè|\ ;
+惲>yùn|\ ;
+惱>năo|\ ;
+惣>bĕi|\ ;
+惢>ruĭ|\ ;
+惛>hun|\ ;
+惗>nie|\ ;
+惔>tán|\ ;
+惐>dàn|\ ;
+惏>lín|\ ;
+惍>jin|\ ;
+惈>guŏ|\ ;
+惇>dun|\ ;
+惃>kun|\ ;
+惂>kăn|\ ;
+惀>lún|\ ;
+悶>men|\ ;
+悳>duó|\ ;
+悩>năo|\ ;
+悘>hui|\ ;
+悗>mán|\ ;
+悏>qiè|\ ;
+悎>hào|\ ;
+悋>lìn|\ ;
+悊>zhé|\ ;
+悈>jiè|\ ;
+悅>yuè|\ ;
+恵>huì|\ ;
+恱>yuè|\ ;
+恥>chĭ|\ ;
+恡>lìn|\ ;
+恝>jiá|\ ;
+恜>chì|\ ;
+恛>huí|\ ;
+恘>qiu|\ ;
+恗>kuă|\ ;
+恑>guĭ|\ ;
+恏>hăo|\ ;
+恎>dié|\ ;
+恊>xié|\ ;
+恉>zhĭ|\ ;
+恅>lăo|\ ;
+恀>chĭ|\ ;
+怹>tan|\ ;
+怮>you|\ ;
+怣>yóu|\ ;
+怗>tie|\ ;
+怓>náo|\ ;
+怑>bàn|\ ;
+怐>kòu|\ ;
+怌>pei|\ ;
+怋>mín|\ ;
+怉>băo|\ ;
+忹>sai|\ ;
+忶>hún|\ ;
+忴>niŭ|\ ;
+忳>tún|\ ;
+忲>tài|\ ;
+忰>cuì|\ ;
+忮>zhì|\ ;
+忨>wàn|\ ;
+忟>mín|\ ;
+忞>mín|\ ;
+忛>fán|\ ;
+忕>shì|\ ;
+忓>gan|\ ;
+忎>rén|\ ;
+忋>găi|\ ;
+忈>rén|\ ;
+忁>bào|\ ;
+徾>méi|\ ;
+徻>wèi|\ ;
+徹>chè|\ ;
+徶>biè|\ ;
+徲>chí|\ ;
+徫>wĕi|\ ;
+徦>jiă|\ ;
+徥>chí|\ ;
+徣>jiè|\ ;
+徢>fòu|\ ;
+徠>lái|\ ;
+徟>lái|\ ;
+徝>zhì|\ ;
+徏>zhì|\ ;
+彽>chí|\ ;
+彵>tuŏ|\ ;
+彲>chi|\ ;
+彨>chi|\ ;
+彥>yàn|\ ;
+彣>wén|\ ;
+彠>huò|\ ;
+彟>huò|\ ;
+彚>huì|\ ;
+彙>huì|\ ;
+彏>jué|\ ;
+彎>wan|\ ;
+彍>kuò|\ ;
+彈>dàn|\ ;
+彆>biè|\ ;
+彄>kou|\ ;
+弾>dàn|\ ;
+弽>shè|\ ;
+弴>dun|\ ;
+弢>tao|\ ;
+弡>jué|\ ;
+弚>tuí|\ ;
+弒>shì|\ ;
+弎>san|\ ;
+弇>yăn|\ ;
+弅>fén|\ ;
+廽>huí|\ ;
+廼>năi|\ ;
+廻>huí|\ ;
+廵>xún|\ ;
+廴>yĭn|\ ;
+廩>lĭn|\ ;
+廢>fèi|\ ;
+廞>xin|\ ;
+廚>chú|\ ;
+廗>dài|\ ;
+廕>yìn|\ ;
+廔>lóu|\ ;
+廐>jiù|\ ;
+廏>jiù|\ ;
+廍>jĭn|\ ;
+廋>sou|\ ;
+廈>shà|\ ;
+廇>liù|\ ;
+廆>huì|\ ;
+廄>jiù|\ ;
+廃>fèi|\ ;
+廀>sou|\ ;
+庻>shù|\ ;
+庲>lái|\ ;
+庮>yóu|\ ;
+庪>guĭ|\ ;
+庤>zhì|\ ;
+庢>zhì|\ ;
+庎>jiè|\ ;
+庍>bài|\ ;
+庉>dùn|\ ;
+庈>qín|\ ;
+幹>gàn|\ ;
+幱>lán|\ ;
+幯>jié|\ ;
+幮>chú|\ ;
+幭>miè|\ ;
+幩>fén|\ ;
+幟>zhì|\ ;
+幗>guó|\ ;
+幑>hui|\ ;
+幏>jia|\ ;
+幍>dao|\ ;
+幋>pán|\ ;
+幃>wéi|\ ;
+帿>hóu|\ ;
+帹>shà|\ ;
+帶>dài|\ ;
+帵>jià|\ ;
+帴>sha|\ ;
+帰>gui|\ ;
+帯>dài|\ ;
+帬>qún|\ ;
+師>shi|\ ;
+帢>qià|\ ;
+帒>dài|\ ;
+帎>dàn|\ ;
+帋>zhĭ|\ ;
+帉>fen|\ ;
+帇>niè|\ ;
+巺>xùn|\ ;
+巹>jĭn|\ ;
+巵>zhi|\ ;
+巰>qiú|\ ;
+巯>qiú|\ ;
+巤>lie|\ ;
+巜>guì|\ ;
+巚>yăn|\ ;
+巙>náo|\ ;
+巘>yăn|\ ;
+巗>yán|\ ;
+巖>yán|\ ;
+巎>kun|\ ;
+巌>yán|\ ;
+巋>kui|\ ;
+巂>suĭ|\ ;
+巀>jie|\ ;
+嶾>yĭn|\ ;
+嶽>yuè|\ ;
+嶹>dăo|\ ;
+嶵>zuĭ|\ ;
+嶰>xiè|\ ;
+嶩>náo|\ ;
+嶨>xué|\ ;
+嶥>jué|\ ;
+嶤>yáo|\ ;
+嶢>yáo|\ ;
+嶡>guì|\ ;
+嶟>zun|\ ;
+嶞>duò|\ ;
+嶜>jin|\ ;
+嶗>láo|\ ;
+嶖>yăn|\ ;
+嶔>qin|\ ;
+嶌>dăo|\ ;
+嶋>dăo|\ ;
+嶊>zuĭ|\ ;
+嶉>zui|\ ;
+嶆>cáo|\ ;
+嶁>lŏu|\ ;
+嵾>cen|\ ;
+嵽>dié|\ ;
+嵳>cuó|\ ;
+嵲>niè|\ ;
+嵧>liú|\ ;
+嵥>jié|\ ;
+嵟>dui|\ ;
+嵚>qin|\ ;
+嵗>suì|\ ;
+嵖>chá|\ ;
+嵕>lü̆|\ ;
+嵔>wĕi|\ ;
+嵓>yán|\ ;
+嵒>yán|\ ;
+嵑>jué|\ ;
+嵐>lán|\ ;
+嵅>gan|\ ;
+嵄>mĕi|\ ;
+嵃>yăn|\ ;
+嵁>kan|\ ;
+嵀>zhù|\ ;
+崾>yăo|\ ;
+崼>shì|\ ;
+崻>zhì|\ ;
+崸>dùn|\ ;
+崷>qiú|\ ;
+崯>yín|\ ;
+崫>jué|\ ;
+崨>jié|\ ;
+崣>wĕi|\ ;
+崡>cuì|\ ;
+崟>yín|\ ;
+崜>duo|\ ;
+崙>lún|\ ;
+崑>kun|\ ;
+崐>kun|\ ;
+崏>mín|\ ;
+崍>lái|\ ;
+崋>huá|\ ;
+崊>lin|\ ;
+崅>què|\ ;
+崁>kăn|\ ;
+峾>yin|\ ;
+峽>xiá|\ ;
+峼>hào|\ ;
+島>dăo|\ ;
+峳>yóu|\ ;
+峱>náo|\ ;
+峮>qun|\ ;
+峣>yáo|\ ;
+峟>yòu|\ ;
+峗>wéi|\ ;
+峕>shí|\ ;
+峐>gai|\ ;
+峌>dié|\ ;
+峃>xué|\ ;
+峀>xiù|\ ;
+岻>chí|\ ;
+岯>pei|\ ;
+岮>péi|\ ;
+岥>bei|\ ;
+岤>xuè|\ ;
+岞>zuò|\ ;
+岝>zuò|\ ;
+岕>jiè|\ ;
+岎>fen|\ ;
+岊>jié|\ ;
+岇>áng|\ ;
+岆>yăo|\ ;
+岅>băn|\ ;
+岀>chu|\ ;
+屽>hàn|\ ;
+屻>rèn|\ ;
+屮>chè|\ ;
+屬>shŭ|\ ;
+屫>jué|\ ;
+屩>jué|\ ;
+屧>xiè|\ ;
+屟>xiè|\ ;
+屝>fèi|\ ;
+屚>lòu|\ ;
+屘>măn|\ ;
+屍>shi|\ ;
+屆>jiè|\ ;
+尷>gan|\ ;
+尶>gan|\ ;
+尵>tuí|\ ;
+尲>gan|\ ;
+尰>chĕ|\ ;
+尯>kuì|\ ;
+尮>duò|\ ;
+尭>yáo|\ ;
+尩>kuĭ|\ ;
+尗>shú|\ ;
+導>dăo|\ ;
+對>duì|\ ;
+尌>dào|\ ;
+尋>xún|\ ;
+対>duì|\ ;
+寶>băo|\ ;
+寴>qìn|\ ;
+寳>băo|\ ;
+寯>jùn|\ ;
+寭>huì|\ ;
+寫>xiĕ|\ ;
+寪>wĕi|\ ;
+實>shí|\ ;
+寢>qĭn|\ ;
+寚>băo|\ ;
+寖>jìn|\ ;
+寔>shí|\ ;
+寑>qĭn|\ ;
+寉>què|\ ;
+寁>zăn|\ ;
+寀>cài|\ ;
+宼>kòu|\ ;
+宷>bìn|\ ;
+宲>băo|\ ;
+宱>zhà|\ ;
+宭>qún|\ ;
+宩>shĭ|\ ;
+実>shí|\ ;
+宎>yăo|\ ;
+宍>ròu|\ ;
+孼>niè|\ ;
+孻>lái|\ ;
+學>xué|\ ;
+孭>càn|\ ;
+孫>sun|\ ;
+孡>tai|\ ;
+孞>xìn|\ ;
+孒>jué|\ ;
+孏>lăn|\ ;
+孎>zhŭ|\ ;
+孍>yán|\ ;
+孄>lăn|\ ;
+嬿>yàn|\ ;
+嬾>lăn|\ ;
+嬼>liŭ|\ ;
+嬱>cán|\ ;
+嬮>yan|\ ;
+嬭>năi|\ ;
+嬪>pín|\ ;
+嬧>jìn|\ ;
+嬠>cán|\ ;
+嬘>suì|\ ;
+嬕>shì|\ ;
+嬒>wèi|\ ;
+嬏>fan|\ ;
+嬎>fàn|\ ;
+嬍>mĕi|\ ;
+嬊>yàn|\ ;
+嬈>ráo|\ ;
+嬇>huì|\ ;
+嬅>huá|\ ;
+嬂>zhi|\ ;
+嬀>gui|\ ;
+嫿>huà|\ ;
+嫹>máo|\ ;
+嫷>tuŏ|\ ;
+嫳>piè|\ ;
+嫰>nèn|\ ;
+嫬>zhe|\ ;
+嫪>lào|\ ;
+嫨>han|\ ;
+嫤>jìn|\ ;
+嫢>gui|\ ;
+嫚>màn|\ ;
+嫑>báo|\ ;
+嫐>năo|\ ;
+嫍>tao|\ ;
+嫅>cha|\ ;
+媿>kuì|\ ;
+媻>pán|\ ;
+媺>mĕi|\ ;
+媹>liú|\ ;
+媱>yáo|\ ;
+媰>zou|\ ;
+媯>gui|\ ;
+媮>tou|\ ;
+媬>băo|\ ;
+媨>jiù|\ ;
+媦>wèi|\ ;
+媣>răn|\ ;
+媢>mào|\ ;
+媠>tuŏ|\ ;
+媟>xiè|\ ;
+媝>qiu|\ ;
+媙>wei|\ ;
+媘>jie|\ ;
+媎>jiĕ|\ ;
+媌>máo|\ ;
+媈>hui|\ ;
+媇>qin|\ ;
+媅>dan|\ ;
+媄>mĕi|\ ;
+媃>róu|\ ;
+媁>wei|\ ;
+婾>tou|\ ;
+婽>jiă|\ ;
+婻>nàn|\ ;
+婹>yăo|\ ;
+婳>huà|\ ;
+婬>yín|\ ;
+婫>kun|\ ;
+婩>yàn|\ ;
+婨>lún|\ ;
+婣>yin|\ ;
+婔>wei|\ ;
+婓>fei|\ ;
+婒>tán|\ ;
+婎>hui|\ ;
+婌>shŭ|\ ;
+婇>căi|\ ;
+婄>pŏu|\ ;
+婁>lóu|\ ;
+娫>yán|\ ;
+娨>hàn|\ ;
+娧>tuì|\ ;
+娦>pín|\ ;
+娢>hán|\ ;
+娡>zhì|\ ;
+娞>nĕi|\ ;
+娝>pei|\ ;
+娚>nán|\ ;
+娕>lài|\ ;
+姽>guĭ|\ ;
+姼>chĭ|\ ;
+姸>yán|\ ;
+姷>yòu|\ ;
+姶>yăn|\ ;
+姵>pèi|\ ;
+姴>liè|\ ;
+姲>yàn|\ ;
+姱>kua|\ ;
+姰>jun|\ ;
+姪>zhí|\ ;
+姤>gòu|\ ;
+姡>kuò|\ ;
+姟>gai|\ ;
+姙>rèn|\ ;
+姏>mán|\ ;
+姌>răn|\ ;
+姅>bàn|\ ;
+姄>mín|\ ;
+妷>zhí|\ ;
+妵>tŏu|\ ;
+妳>năi|\ ;
+妢>fén|\ ;
+妡>xin|\ ;
+妟>yàn|\ ;
+妜>yuè|\ ;
+妚>pei|\ ;
+妘>yún|\ ;
+妏>wèn|\ ;
+妎>xiè|\ ;
+妉>dan|\ ;
+奿>fàn|\ ;
+奾>pèi|\ ;
+奼>chà|\ ;
+奻>nán|\ ;
+奺>jiŭ|\ ;
+奲>duŏ|\ ;
+奯>huò|\ ;
+奮>fèn|\ ;
+奭>shì|\ ;
+奫>yun|\ ;
+奪>duó|\ ;
+奤>păn|\ ;
+奞>xùn|\ ;
+奜>fĕi|\ ;
+奙>bĕn|\ ;
+奓>she|\ ;
+奒>kai|\ ;
+奊>xié|\ ;
+夾>jia|\ ;
+夽>yùn|\ ;
+夵>jiá|\ ;
+夳>tài|\ ;
+夲>bĕn|\ ;
+夰>găo|\ ;
+夣>dài|\ ;
+夠>gòu|\ ;
+夛>duo|\ ;
+夘>măo|\ ;
+夓>xià|\ ;
+夒>náo|\ ;
+夎>jiă|\ ;
+夋>qun|\ ;
+夊>sui|\ ;
+壿>zun|\ ;
+壼>kŭn|\ ;
+壸>kŭn|\ ;
+売>mài|\ ;
+壨>léi|\ ;
+壦>xun|\ ;
+壣>lín|\ ;
+壡>ruì|\ ;
+壝>wéi|\ ;
+壜>tán|\ ;
+壛>yán|\ ;
+壘>lĕi|\ ;
+壔>dăo|\ ;
+壐>huò|\ ;
+壏>hăn|\ ;
+壎>xun|\ ;
+壈>lăn|\ ;
+壇>tán|\ ;
+墾>kĕn|\ ;
+墻>bei|\ ;
+墵>tán|\ ;
+墳>fén|\ ;
+墯>duò|\ ;
+墮>duò|\ ;
+墭>hui|\ ;
+墫>zun|\ ;
+墪>dun|\ ;
+墧>què|\ ;
+墦>fán|\ ;
+墕>yàn|\ ;
+墔>cui|\ ;
+墐>jĭn|\ ;
+墎>guo|\ ;
+墌>zhi|\ ;
+墈>kàn|\ ;
+塿>lŏu|\ ;
+塻>dié|\ ;
+塺>méi|\ ;
+塯>liù|\ ;
+塮>xiè|\ ;
+塭>wen|\ ;
+塪>kăn|\ ;
+塩>yán|\ ;
+塤>xun|\ ;
+塠>dui|\ ;
+塙>què|\ ;
+塒>shí|\ ;
+塏>kăi|\ ;
+堺>jiè|\ ;
+堷>yìn|\ ;
+堶>tuó|\ ;
+堳>méi|\ ;
+報>bào|\ ;
+堯>yáo|\ ;
+堦>jie|\ ;
+堢>băo|\ ;
+堝>guo|\ ;
+堚>hún|\ ;
+堃>kun|\ ;
+埾>bàn|\ ;
+執>zhí|\ ;
+埵>duŏ|\ ;
+埳>kăn|\ ;
+埱>shú|\ ;
+埰>cài|\ ;
+埮>tàn|\ ;
+埨>lŭn|\ ;
+埦>wăn|\ ;
+埣>suì|\ ;
+埡>bei|\ ;
+埓>liè|\ ;
+埑>zhé|\ ;
+埐>jin|\ ;
+埉>jiá|\ ;
+埈>xùn|\ ;
+埆>mái|\ ;
+埁>cén|\ ;
+垾>hàn|\ ;
+垽>yìn|\ ;
+垺>pei|\ ;
+垥>xié|\ ;
+垞>chá|\ ;
+垝>guĭ|\ ;
+垜>duŏ|\ ;
+垚>yáo|\ ;
+垖>dui|\ ;
+垕>hòu|\ ;
+垔>yin|\ ;
+垑>chĭ|\ ;
+垉>páo|\ ;
+垁>zhì|\ ;
+坾>zhù|\ ;
+坹>xuè|\ ;
+坵>qiu|\ ;
+坬>guà|\ ;
+坧>zhi|\ ;
+坢>păn|\ ;
+坋>fèn|\ ;
+坉>tún|\ ;
+坆>fén|\ ;
+坅>qĭn|\ ;
+坄>tóu|\ ;
+坃>xun|\ ;
+坁>zhĭ|\ ;
+圿>jiá|\ ;
+圶>qià|\ ;
+圚>huì|\ ;
+圙>lüè|\ ;
+圍>wéi|\ ;
+國>guó|\ ;
+圇>lún|\ ;
+圅>hán|\ ;
+圂>hùn|\ ;
+圁>yín|\ ;
+圀>guó|\ ;
+囼>tai|\ ;
+囻>guó|\ ;
+囷>jun|\ ;
+囶>guó|\ ;
+囬>huí|\ ;
+囩>yùn|\ ;
+囜>nín|\ ;
+囙>yin|\ ;
+囘>huí|\ ;
+囓>niè|\ ;
+囒>lán|\ ;
+囑>zhŭ|\ ;
+囋>zàn|\ ;
+囉>luo|\ ;
+囁>niè|\ ;
+嚿>huò|\ ;
+嚴>yán|\ ;
+嚲>duŏ|\ ;
+嚬>pín|\ ;
+嚪>dàn|\ ;
+嚥>yàn|\ ;
+嚠>liú|\ ;
+嚞>zhé|\ ;
+嚚>yín|\ ;
+嚙>niè|\ ;
+嚘>you|\ ;
+嚖>huì|\ ;
+嚍>jìn|\ ;
+嚉>duo|\ ;
+嚇>xià|\ ;
+嚄>huò|\ ;
+嚂>làn|\ ;
+噿>zuĭ|\ ;
+噾>yin|\ ;
+噸>dun|\ ;
+噷>hen|\ ;
+噵>dào|\ ;
+噴>pen|\ ;
+噰>xué|\ ;
+噦>yuĕ|\ ;
+噡>dan|\ ;
+噞>yăn|\ ;
+噛>niè|\ ;
+噚>xún|\ ;
+噖>yín|\ ;
+噕>hui|\ ;
+噑>háo|\ ;
+噋>tun|\ ;
+噉>dàn|\ ;
+噆>zăn|\ ;
+噅>hui|\ ;
+噄>chi|\ ;
+噃>fan|\ ;
+噂>zŭn|\ ;
+噀>xùn|\ ;
+嘾>hei|\ ;
+嘽>tan|\ ;
+嘼>xiù|\ ;
+嘷>háo|\ ;
+嘳>kuì|\ ;
+嘮>láo|\ ;
+嘫>rán|\ ;
+嘩>hua|\ ;
+嘡>chì|\ ;
+嘕>dai|\ ;
+嘓>guo|\ ;
+嘒>huì|\ ;
+嘍>lóu|\ ;
+嘇>san|\ ;
+嘆>tàn|\ ;
+嘅>kăi|\ ;
+嗿>tăn|\ ;
+嗻>zhe|\ ;
+嗺>cui|\ ;
+嗮>sài|\ ;
+嗪>qín|\ ;
+嗩>suŏ|\ ;
+嗧>jia|\ ;
+嗠>luò|\ ;
+嗐>hài|\ ;
+嗏>cha|\ ;
+嗂>yáo|\ ;
+嗀>huò|\ ;
+喿>sào|\ ;
+喼>jié|\ ;
+喹>kuí|\ ;
+喴>pèn|\ ;
+喰>can|\ ;
+喯>cha|\ ;
+喭>yàn|\ ;
+喫>chi|\ ;
+喦>niè|\ ;
+喢>shà|\ ;
+喡>wĕi|\ ;
+喗>yŭn|\ ;
+喓>yao|\ ;
+喐>yìn|\ ;
+喎>wai|\ ;
+喌>nuò|\ ;
+喆>zhé|\ ;
+啿>dàn|\ ;
+啱>jué|\ ;
+啰>luo|\ ;
+啯>guō|\ ;
+啫>zhĕ|\ ;
+啩>guà|\ ;
+啠>zhé|\ ;
+啛>cuì|\ ;
+啗>dàn|\ ;
+啑>shà|\ ;
+問>wèn|\ ;
+啍>tun|\ ;
+啉>lán|\ ;
+啅>lín|\ ;
+啂>nòu|\ ;
+唻>lăi|\ ;
+唺>qiè|\ ;
+唶>jiè|\ ;
+唫>wĕi|\ ;
+唦>sha|\ ;
+唞>dŏu|\ ;
+唚>qìn|\ ;
+唗>dou|\ ;
+唓>che|\ ;
+唒>qiú|\ ;
+唋>dàn|\ ;
+唊>jiá|\ ;
+唅>han|\ ;
+唄>bài|\ ;
+唀>bēi|\ ;
+哻>hàn|\ ;
+哹>fóu|\ ;
+哸>sui|\ ;
+哶>mie|\ ;
+哰>láo|\ ;
+哣>pŏu|\ ;
+哠>hào|\ ;
+哕>yuĕ|\ ;
+哌>gén|\ ;
+哅>duo|\ ;
+咼>guo|\ ;
+咷>táo|\ ;
+咵>kua|\ ;
+咲>hai|\ ;
+咥>dié|\ ;
+咟>chà|\ ;
+咑>què|\ ;
+咍>hai|\ ;
+咅>pòu|\ ;
+咃>tuo|\ ;
+咁>gèm|\ ;
+呬>gua|\ ;
+呫>tie|\ ;
+呩>shì|\ ;
+呥>răn|\ ;
+呡>wĕn|\ ;
+呠>pen|\ ;
+呞>shi|\ ;
+呙>guo|\ ;
+呎>chĭ|\ ;
+呅>méi|\ ;
+呁>dai|\ ;
+吿>gào|\ ;
+吺>dou|\ ;
+吤>jiè|\ ;
+吣>qìn|\ ;
+吢>qìn|\ ;
+吙>xue|\ ;
+吋>cùn|\ ;
+吂>chi|\ ;
+吀>mie|\ ;
+叺>chĭ|\ ;
+叴>qiú|\ ;
+叧>guă|\ ;
+叡>ruì|\ ;
+叞>wèi|\ ;
+叝>gào|\ ;
+叜>sŏu|\ ;
+叚>jiă|\ ;
+叓>shì|\ ;
+叇>dài|\ ;
+叅>can|\ ;
+叄>can|\ ;
+參>can|\ ;
+叀>huì|\ ;
+厽>lĕi|\ ;
+厹>qiú|\ ;
+厸>lín|\ ;
+厴>yăn|\ ;
+厳>yán|\ ;
+厱>lán|\ ;
+厭>yàn|\ ;
+厬>guĭ|\ ;
+厪>qín|\ ;
+厡>xià|\ ;
+厞>fèi|\ ;
+厜>zui|\ ;
+厙>shè|\ ;
+厔>zhì|\ ;
+厏>zhă|\ ;
+厎>zhĭ|\ ;
+厈>hăn|\ ;
+厇>zhé|\ ;
+卻>què|\ ;
+卶>shì|\ ;
+卬>áng|\ ;
+卪>jié|\ ;
+卨>xiè|\ ;
+単>dan|\ ;
+協>xié|\ ;
+卐>wàn|\ ;
+卍>wàn|\ ;
+卋>shì|\ ;
+卂>xìn|\ ;
+匶>jiù|\ ;
+匱>kuì|\ ;
+匰>dan|\ ;
+匯>huì|\ ;
+匭>guĭ|\ ;
+匬>tóu|\ ;
+匩>fei|\ ;
+匧>qiè|\ ;
+匛>jiù|\ ;
+匘>năo|\ ;
+匓>jiù|\ ;
+匋>táo|\ ;
+匄>gài|\ ;
+匃>gài|\ ;
+勽>bào|\ ;
+勼>jiu|\ ;
+勻>yún|\ ;
+勹>bao|\ ;
+勶>chè|\ ;
+勳>xun|\ ;
+勲>xun|\ ;
+勱>mài|\ ;
+勯>dan|\ ;
+勫>fán|\ ;
+勪>jué|\ ;
+勢>shì|\ ;
+勞>láo|\ ;
+勛>xun|\ ;
+勓>kài|\ ;
+勑>lài|\ ;
+勏>pŏu|\ ;
+勅>chì|\ ;
+勄>mĭn|\ ;
+勂>chì|\ ;
+勁>jìn|\ ;
+劽>liè|\ ;
+劼>jié|\ ;
+劺>móu|\ ;
+劶>jìn|\ ;
+労>láo|\ ;
+劯>zhu|\ ;
+劧>zhĭ|\ ;
+劦>xié|\ ;
+劤>jìn|\ ;
+劚>zhú|\ ;
+劕>zhí|\ ;
+劐>huo|\ ;
+劌>guì|\ ;
+劊>guì|\ ;
+劉>liú|\ ;
+劄>zhá|\ ;
+劃>huà|\ ;
+劂>jué|\ ;
+劀>gua|\ ;
+剾>kou|\ ;
+剻>fóu|\ ;
+剴>kăi|\ ;
+剳>zha|\ ;
+剮>guă|\ ;
+剫>duó|\ ;
+剨>huò|\ ;
+剢>bao|\ ;
+剟>duo|\ ;
+剕>fèi|\ ;
+剒>cuò|\ ;
+剎>chà|\ ;
+剉>cuò|\ ;
+剆>gen|\ ;
+剅>lóu|\ ;
+刼>jié|\ ;
+刴>duò|\ ;
+刲>kui|\ ;
+刯>gen|\ ;
+刧>jié|\ ;
+刦>jié|\ ;
+別>bié|\ ;
+刡>mĭn|\ ;
+刔>jué|\ ;
+刐>dăn|\ ;
+刌>cŭn|\ ;
+刄>rèn|\ ;
+刂>dao|\ ;
+凾>hán|\ ;
+凲>gan|\ ;
+凱>kăi|\ ;
+処>chŭ|\ ;
+凣>fán|\ ;
+凢>fán|\ ;
+凜>lĭn|\ ;
+凚>jìn|\ ;
+凙>duó|\ ;
+凗>cuí|\ ;
+凐>yin|\ ;
+凎>gàn|\ ;
+凂>mĕi|\ ;
+凁>shù|\ ;
+冾>xiá|\ ;
+冺>mĭn|\ ;
+冸>pàn|\ ;
+冭>tái|\ ;
+冩>xiĕ|\ ;
+冦>kòu|\ ;
+冟>shì|\ ;
+冚>kăn|\ ;
+冘>yín|\ ;
+冓>gòu|\ ;
+冐>mào|\ ;
+冎>guă|\ ;
+冇>măo|\ ;
+冄>răn|\ ;
+冃>mao|\ ;
+兪>shù|\ ;
+內>nèi|\ ;
+兡>băi|\ ;
+兠>dou|\ ;
+兞>máo|\ ;
+兝>fen|\ ;
+兙>shí|\ ;
+兘>shĭ|\ ;
+兗>yăn|\ ;
+兌>duì|\ ;
+兊>duì|\ ;
+兂>zan|\ ;
+儽>lĕi|\ ;
+儼>yăn|\ ;
+儺>nuó|\ ;
+儹>zăn|\ ;
+儸>luó|\ ;
+儶>huì|\ ;
+儵>shu|\ ;
+儲>chŭ|\ ;
+儰>wĕi|\ ;
+儫>háo|\ ;
+優>you|\ ;
+儨>zhí|\ ;
+儧>zăn|\ ;
+儤>bào|\ ;
+儢>lü̆|\ ;
+儠>liè|\ ;
+儘>jĭn|\ ;
+儖>lán|\ ;
+儓>tái|\ ;
+儐>bin|\ ;
+儎>zài|\ ;
+儊>chù|\ ;
+儁>jùn|\ ;
+僿>sài|\ ;
+價>jià|\ ;
+僸>jìn|\ ;
+僶>mĭn|\ ;
+僯>jiē|\ ;
+僪>jué|\ ;
+僨>fèn|\ ;
+僤>dàn|\ ;
+僡>huì|\ ;
+僠>fan|\ ;
+僞>wĕi|\ ;
+僗>láo|\ ;
+僔>wèi|\ ;
+僓>tuĭ|\ ;
+僋>tàn|\ ;
+僈>màn|\ ;
+僅>jĭn|\ ;
+僃>bèi|\ ;
+僂>lóu|\ ;
+傿>yàn|\ ;
+傼>hàn|\ ;
+傺>chì|\ ;
+傶>còu|\ ;
+傮>cáo|\ ;
+傫>lĕi|\ ;
+傪>can|\ ;
+傤>zài|\ ;
+傢>jia|\ ;
+傞>suo|\ ;
+傝>tàn|\ ;
+傜>yáo|\ ;
+備>bèi|\ ;
+傘>săn|\ ;
+傗>chù|\ ;
+傕>jué|\ ;
+傑>jié|\ ;
+傐>hào|\ ;
+傋>gòu|\ ;
+傊>yŭn|\ ;
+傄>xia|\ ;
+傂>zhì|\ ;
+偽>wĕi|\ ;
+偼>jié|\ ;
+偹>bèi|\ ;
+偸>tou|\ ;
+偱>xún|\ ;
+偰>xiè|\ ;
+偫>zhì|\ ;
+偧>zha|\ ;
+偤>yŏu|\ ;
+偣>yan|\ ;
+偠>yăo|\ ;
+偝>bèi|\ ;
+偛>cha|\ ;
+偘>kăn|\ ;
+偖>chĕ|\ ;
+偓>jie|\ ;
+偐>yàn|\ ;
+偉>wĕi|\ ;
+倽>jià|\ ;
+倸>căi|\ ;
+倷>nài|\ ;
+倴>bèn|\ ;
+倱>hùn|\ ;
+倫>lún|\ ;
+倢>jié|\ ;
+倠>sui|\ ;
+倝>gàn|\ ;
+倓>juè|\ ;
+們>mēn|\ ;
+倐>shu|\ ;
+倈>lái|\ ;
+倇>lài|\ ;
+倆>liă|\ ;
+倅>cuì|\ ;
+倃>zán|\ ;
+倁>chí|\ ;
+俽>xin|\ ;
+俻>bèi|\ ;
+俷>fèi|\ ;
+俶>chù|\ ;
+俫>lái|\ ;
+俥>che|\ ;
+俠>xiá|\ ;
+俖>păi|\ ;
+俕>sàn|\ ;
+俒>hùn|\ ;
+俀>shu|\ ;
+侾>hao|\ ;
+侽>nán|\ ;
+侻>tuo|\ ;
+侸>shù|\ ;
+侳>zuò|\ ;
+侰>cuò|\ ;
+侭>jĭn|\ ;
+侢>zài|\ ;
+価>jià|\ ;
+侚>xùn|\ ;
+侙>chì|\ ;
+侘>chà|\ ;
+侖>lún|\ ;
+侌>yin|\ ;
+侇>kuă|\ ;
+來>lái|\ ;
+侅>gai|\ ;
+侂>tuo|\ ;
+佹>guĭ|\ ;
+佸>huó|\ ;
+佷>hĕn|\ ;
+佪>huí|\ ;
+佇>zhù|\ ;
+佅>mài|\ ;
+佄>bèn|\ ;
+伳>pàn|\ ;
+伩>xìn|\ ;
+伨>wèi|\ ;
+伡>che|\ ;
+伜>cuì|\ ;
+伔>dăn|\ ;
+伓>bei|\ ;
+伒>jìn|\ ;
+伈>xĭn|\ ;
+伆>wèn|\ ;
+伅>dùn|\ ;
+伂>pèi|\ ;
+仼>bin|\ ;
+仸>rén|\ ;
+仴>jià|\ ;
+仯>áng|\ ;
+仮>jiă|\ ;
+仭>rèn|\ ;
+仠>gán|\ ;
+仛>tuo|\ ;
+仐>săn|\ ;
+亹>wĕi|\ ;
+亸>duŏ|\ ;
+亶>dăn|\ ;
+亴>yòu|\ ;
+亠>tóu|\ ;
+亙>gèn|\ ;
+亗>suì|\ ;
+亊>shì|\ ;
+亅>jué|\ ;
+亃>lín|\ ;
+亁>gan|\ ;
+亀>gui|\ ;
+乿>chì|\ ;
+乹>gan|\ ;
+乷>sha|\ ;
+乵>yăn|\ ;
+乴>xué|\ ;
+乭>shí|\ ;
+乫>jia|\ ;
+乨>shĭ|\ ;
+乣>diu|\ ;
+乢>gài|\ ;
+乚>yĭn|\ ;
+乆>jiŭ|\ ;
+丶>zhŭ|\ ;
+丵>wéi|\ ;
+丯>jiè|\ ;
+丩>jiu|\ ;
+丣>yŏu|\ ;
+丠>qiu|\ ;
+丟>diu|\ ;
+丗>shì|\ ;
+丅>wàn|\ ;
+丂>kăo|\ ;
+䶵>chí|\ ;
+䶳>yuè|\ ;
+䶲>nán|\ ;
+䶮>yán|\ ;
+䶫>kăn|\ ;
+䶪>chá|\ ;
+䶧>yăo|\ ;
+䶤>huá|\ ;
+䶡>shí|\ ;
+䶝>qià|\ ;
+䶖>jìn|\ ;
+䶔>chí|\ ;
+䶎>shà|\ ;
+䶌>pào|\ ;
+䶊>nyù|\ ;
+䶉>liú|\ ;
+䶃>hán|\ ;
+䵿>tiè|\ ;
+䵵>zhá|\ ;
+䵴>yùn|\ ;
+䵳>wèi|\ ;
+䵭>zhè|\ ;
+䵪>gùn|\ ;
+䵧>zài|\ ;
+䵦>xiè|\ ;
+䵥>shè|\ ;
+䵢>mèi|\ ;
+䵟>găn|\ ;
+䵚>tăo|\ ;
+䵙>zhă|\ ;
+䵘>shà|\ ;
+䵏>lăo|\ ;
+䵋>wĕi|\ ;
+䵉>tóu|\ ;
+䵂>zhí|\ ;
+䵀>suŏ|\ ;
+䴾>cuó|\ ;
+䴽>bài|\ ;
+䴹>guŏ|\ ;
+䴷>hún|\ ;
+䴴>tiè|\ ;
+䴱>tuó|\ ;
+䴰>shú|\ ;
+䴭>cái|\ ;
+䴦>rén|\ ;
+䴠>yăo|\ ;
+䴕>liè|\ ;
+䴑>dié|\ ;
+䴐>băo|\ ;
+䴏>yàn|\ ;
+䴎>lĕi|\ ;
+䴅>fén|\ ;
+䴃>náo|\ ;
+䳿>lán|\ ;
+䳻>cán|\ ;
+䳺>yàn|\ ;
+䳹>kòu|\ ;
+䳵>chì|\ ;
+䳰>băo|\ ;
+䳫>kuí|\ ;
+䳧>hóu|\ ;
+䳟>kòu|\ ;
+䳛>yàn|\ ;
+䳖>nèi|\ ;
+䳕>fóu|\ ;
+䳔>jiù|\ ;
+䳓>lăo|\ ;
+䳑>yŏu|\ ;
+䳏>guì|\ ;
+䳎>jiù|\ ;
+䳉>dàn|\ ;
+䳈>băo|\ ;
+䳆>bái|\ ;
+䳅>zhĭ|\ ;
+䳃>wăn|\ ;
+䳀>dié|\ ;
+䲽>dăo|\ ;
+䲺>gàn|\ ;
+䲹>péi|\ ;
+䲸>jiè|\ ;
+䲰>yùn|\ ;
+䲦>chá|\ ;
+䲟>yìn|\ ;
+䲚>lài|\ ;
+䲙>jié|\ ;
+䲓>yăn|\ ;
+䲒>xiè|\ ;
+䲏>láo|\ ;
+䲎>nĕi|\ ;
+䲋>cén|\ ;
+䲊>tuŏ|\ ;
+䲄>mín|\ ;
+䲃>zăo|\ ;
+䲁>wèi|\ ;
+䲀>dié|\ ;
+䱾>lóu|\ ;
+䱻>huá|\ ;
+䱺>hái|\ ;
+䱲>yán|\ ;
+䱨>zhì|\ ;
+䱥>zhí|\ ;
+䱞>liú|\ ;
+䱜>cuò|\ ;
+䱖>liú|\ ;
+䱕>móu|\ ;
+䱑>xué|\ ;
+䱏>tŏu|\ ;
+䱋>dăn|\ ;
+䱄>jiè|\ ;
+䱂>yŏu|\ ;
+䰿>tuó|\ ;
+䰽>bèi|\ ;
+䰼>xín|\ ;
+䰺>jiè|\ ;
+䰭>nòu|\ ;
+䰪>mèi|\ ;
+䰩>chĕ|\ ;
+䰨>mèi|\ ;
+䰥>huò|\ ;
+䰡>chì|\ ;
+䰟>hún|\ ;
+䰞>zhŭ|\ ;
+䰚>wén|\ ;
+䰘>liú|\ ;
+䰔>pán|\ ;
+䰐>lán|\ ;
+䰎>guì|\ ;
+䰋>mán|\ ;
+䰉>pán|\ ;
+䰈>chă|\ ;
+䰆>róu|\ ;
+䰄>shì|\ ;
+䰂>cài|\ ;
+䰁>fèi|\ ;
+䯺>kuò|\ ;
+䯶>mán|\ ;
+䯵>niè|\ ;
+䯰>jiè|\ ;
+䯮>nái|\ ;
+䯬>duŏ|\ ;
+䯫>hào|\ ;
+䯪>kăo|\ ;
+䯨>fén|\ ;
+䯣>guì|\ ;
+䯟>duì|\ ;
+䯝>suĭ|\ ;
+䯔>cén|\ ;
+䯓>kuí|\ ;
+䯐>hái|\ ;
+䯏>huó|\ ;
+䯎>gàn|\ ;
+䯊>qià|\ ;
+䯈>wán|\ ;
+䯅>niè|\ ;
+䯁>luó|\ ;
+䯀>niè|\ ;
+䮼>lín|\ ;
+䮻>chì|\ ;
+䮹>wèi|\ ;
+䮳>fán|\ ;
+䮱>zhú|\ ;
+䮰>dăn|\ ;
+䮮>mài|\ ;
+䮫>lóu|\ ;
+䮨>zăi|\ ;
+䮧>hán|\ ;
+䮢>dié|\ ;
+䮟>sŏu|\ ;
+䮞>chù|\ ;
+䮜>shà|\ ;
+䮔>zuĭ|\ ;
+䮑>lèi|\ ;
+䮈>chí|\ ;
+䭾>tuó|\ ;
+䭽>qún|\ ;
+䭺>áng|\ ;
+䭹>áng|\ ;
+䭷>liú|\ ;
+䭵>fán|\ ;
+䭳>wèi|\ ;
+䭱>bié|\ ;
+䭥>xuè|\ ;
+䭛>dàn|\ ;
+䭙>jĭn|\ ;
+䭘>yàn|\ ;
+䭖>zhù|\ ;
+䭎>xié|\ ;
+䭋>băo|\ ;
+䭉>suĭ|\ ;
+䭄>shì|\ ;
+䭃>rĕn|\ ;
+䭁>zhì|\ ;
+䭀>xùn|\ ;
+䬿>wĕi|\ ;
+䬽>duì|\ ;
+䬹>zhì|\ ;
+䬷>shĕ|\ ;
+䬳>băn|\ ;
+䬱>bèn|\ ;
+䬫>căn|\ ;
+䬦>dòu|\ ;
+䬡>zhù|\ ;
+䬟>liú|\ ;
+䬞>táo|\ ;
+䬙>yáo|\ ;
+䬑>wèi|\ ;
+䬐>wĕi|\ ;
+䬎>guó|\ ;
+䬊>qiè|\ ;
+䬉>hào|\ ;
+䬈>duì|\ ;
+䬂>xuè|\ ;
+䬀>yŏu|\ ;
+䫼>xuè|\ ;
+䫻>xué|\ ;
+䫸>náo|\ ;
+䫶>fán|\ ;
+䫴>jìn|\ ;
+䫲>hàn|\ ;
+䫰>lìn|\ ;
+䫮>cán|\ ;
+䫭>huì|\ ;
+䫫>lóu|\ ;
+䫩>săn|\ ;
+䫥>kuĭ|\ ;
+䫠>péi|\ ;
+䫟>hún|\ ;
+䫞>ráo|\ ;
+䫛>hóu|\ ;
+䫗>xiá|\ ;
+䫕>zhì|\ ;
+䫒>mén|\ ;
+䫐>lín|\ ;
+䫋>tuí|\ ;
+䫉>mào|\ ;
+䫈>zèn|\ ;
+䫇>rán|\ ;
+䫅>sàn|\ ;
+䫂>duŏ|\ ;
+䫀>gĕn|\ ;
+䪽>hào|\ ;
+䪹>péi|\ ;
+䪸>mín|\ ;
+䪷>hòu|\ ;
+䪳>yŭn|\ ;
+䪱>găi|\ ;
+䪩>yín|\ ;
+䪨>báo|\ ;
+䪧>chí|\ ;
+䪥>dié|\ ;
+䪤>fán|\ ;
+䪛>fán|\ ;
+䪘>wĕi|\ ;
+䪗>xiá|\ ;
+䪑>tuó|\ ;
+䪍>lán|\ ;
+䪋>wèi|\ ;
+䩿>fén|\ ;
+䩾>zhè|\ ;
+䩵>yùn|\ ;
+䩳>shŭ|\ ;
+䩱>shù|\ ;
+䩧>xiè|\ ;
+䩥>dàn|\ ;
+䩣>duŏ|\ ;
+䩡>jiá|\ ;
+䩝>páo|\ ;
+䩕>áng|\ ;
+䩔>duò|\ ;
+䩏>miè|\ ;
+䩊>wăn|\ ;
+䩈>huì|\ ;
+䩃>shì|\ ;
+䩀>bèi|\ ;
+䨾>fĕi|\ ;
+䨽>fĕi|\ ;
+䨺>duì|\ ;
+䨸>yĭn|\ ;
+䨶>yŭn|\ ;
+䨵>dàn|\ ;
+䨴>duì|\ ;
+䨲>nóu|\ ;
+䨮>xuĕ|\ ;
+䨫>mài|\ ;
+䨪>mái|\ ;
+䨢>dàn|\ ;
+䨡>hán|\ ;
+䨙>cén|\ ;
+䨔>báo|\ ;
+䨓>léi|\ ;
+䨐>qià|\ ;
+䨌>báo|\ ;
+䨄>yàn|\ ;
+䨁>chè|\ ;
+䧿>què|\ ;
+䧽>cuĭ|\ ;
+䧷>róu|\ ;
+䧶>kuí|\ ;
+䧲>hàn|\ ;
+䧰>hùn|\ ;
+䧫>háo|\ ;
+䧪>chè|\ ;
+䧦>wéi|\ ;
+䧥>huì|\ ;
+䧚>hào|\ ;
+䧒>lái|\ ;
+䧂>dào|\ ;
+䧁>chù|\ ;
+䦾>yŭn|\ ;
+䦼>jué|\ ;
+䦹>shí|\ ;
+䦱>kuĭ|\ ;
+䦯>zhì|\ ;
+䦬>què|\ ;
+䦨>lán|\ ;
+䦧>qié|\ ;
+䦦>qín|\ ;
+䦢>kuò|\ ;
+䦠>shĭ|\ ;
+䦞>rùn|\ ;
+䦚>huò|\ ;
+䦖>xiá|\ ;
+䦔>tăn|\ ;
+䦑>xiè|\ ;
+䦏>xiè|\ ;
+䦌>chù|\ ;
+䦆>jué|\ ;
+䥾>xiĕ|\ ;
+䥷>zhá|\ ;
+䥱>xiĕ|\ ;
+䥮>zhú|\ ;
+䥫>tiĕ|\ ;
+䥩>wéi|\ ;
+䥨>lyù|\ ;
+䥤>báo|\ ;
+䥣>záo|\ ;
+䥛>jié|\ ;
+䥙>suì|\ ;
+䥕>piĕ|\ ;
+䥑>wàn|\ ;
+䥐>móu|\ ;
+䥍>zhì|\ ;
+䥆>jĭn|\ ;
+䥃>yuè|\ ;
+䥁>hán|\ ;
+䤿>qiè|\ ;
+䤻>duò|\ ;
+䤺>yĭn|\ ;
+䤷>yán|\ ;
+䤵>fèi|\ ;
+䤴>hán|\ ;
+䤲>chì|\ ;
+䤱>shì|\ ;
+䤮>shè|\ ;
+䤪>duŏ|\ ;
+䤩>chá|\ ;
+䤧>huì|\ ;
+䤦>yuè|\ ;
+䤥>guĭ|\ ;
+䤡>răn|\ ;
+䤞>yŭn|\ ;
+䤜>dùn|\ ;
+䤛>qiú|\ ;
+䤗>găn|\ ;
+䤖>bào|\ ;
+䤕>xuè|\ ;
+䤐>jĭn|\ ;
+䤋>guó|\ ;
+䤆>kuí|\ ;
+䤃>yìn|\ ;
+䤂>méi|\ ;
+䤁>cén|\ ;
+䣸>răn|\ ;
+䣶>huó|\ ;
+䣲>fàn|\ ;
+䣭>tài|\ ;
+䣬>zăi|\ ;
+䣦>lèi|\ ;
+䣠>jié|\ ;
+䣟>cán|\ ;
+䣜>cuó|\ ;
+䣚>lóu|\ ;
+䣙>péi|\ ;
+䣔>suŏ|\ ;
+䣍>yăn|\ ;
+䣋>căi|\ ;
+䣇>qiú|\ ;
+䣂>lĕi|\ ;
+䣀>guĭ|\ ;
+䢵>yún|\ ;
+䢲>yuè|\ ;
+䢰>tái|\ ;
+䢯>lín|\ ;
+䢮>lèi|\ ;
+䢭>yàn|\ ;
+䢫>suí|\ ;
+䢥>yán|\ ;
+䢤>shù|\ ;
+䢣>yáo|\ ;
+䢡>xiè|\ ;
+䢟>yóu|\ ;
+䢙>bài|\ ;
+䢖>lyù|\ ;
+䢊>yóu|\ ;
+䢁>yuè|\ ;
+䡾>nèi|\ ;
+䡻>mín|\ ;
+䡺>wèi|\ ;
+䡹>zhì|\ ;
+䡷>kài|\ ;
+䡶>bèi|\ ;
+䡵>suì|\ ;
+䡬>màn|\ ;
+䡨>chà|\ ;
+䡡>xié|\ ;
+䡝>yŭn|\ ;
+䡛>yìn|\ ;
+䡚>mào|\ ;
+䡑>mín|\ ;
+䡐>tuó|\ ;
+䡊>fán|\ ;
+䡈>jué|\ ;
+䡇>yuè|\ ;
+䡅>mĭn|\ ;
+䡂>jiù|\ ;
+䠿>wài|\ ;
+䠽>hái|\ ;
+䠶>shè|\ ;
+䠴>qĭn|\ ;
+䠱>shŭ|\ ;
+䠯>yuè|\ ;
+䠭>lái|\ ;
+䠫>zòu|\ ;
+䠩>guì|\ ;
+䠧>chú|\ ;
+䠦>zhè|\ ;
+䠥>bié|\ ;
+䠤>duŏ|\ ;
+䠡>cuó|\ ;
+䠠>chì|\ ;
+䠟>dié|\ ;
+䠙>bèi|\ ;
+䠗>qiù|\ ;
+䠔>suì|\ ;
+䠑>kuĭ|\ ;
+䠍>qiá|\ ;
+䠊>fèi|\ ;
+䠉>huà|\ ;
+䠇>jué|\ ;
+䠅>kŭn|\ ;
+䠂>chú|\ ;
+䟾>juĕ|\ ;
+䟹>liè|\ ;
+䟸>kuí|\ ;
+䟷>chì|\ ;
+䟶>cuò|\ ;
+䟵>qiú|\ ;
+䟯>kuò|\ ;
+䟬>qiù|\ ;
+䟩>liĕ|\ ;
+䟨>mín|\ ;
+䟣>chù|\ ;
+䟠>yuè|\ ;
+䟞>chú|\ ;
+䟝>tòu|\ ;
+䟙>qiè|\ ;
+䟗>shì|\ ;
+䟕>chà|\ ;
+䟉>zhú|\ ;
+䟈>zhí|\ ;
+䟂>mán|\ ;
+䞾>chí|\ ;
+䞽>suŏ|\ ;
+䞷>jué|\ ;
+䞵>juĕ|\ ;
+䞰>zuó|\ ;
+䞭>qiŭ|\ ;
+䞬>tòu|\ ;
+䞫>yŭn|\ ;
+䞨>guĭ|\ ;
+䞧>hòu|\ ;
+䞥>yòu|\ ;
+䞣>chĕ|\ ;
+䞢>zhà|\ ;
+䞡>tăn|\ ;
+䞖>shŭ|\ ;
+䞕>dié|\ ;
+䞔>wĕi|\ ;
+䞌>shé|\ ;
+䞊>xùn|\ ;
+䞈>guĭ|\ ;
+䞇>dié|\ ;
+䞆>suŏ|\ ;
+䞃>zhì|\ ;
+䞀>gòu|\ ;
+䝿>guì|\ ;
+䝹>wăn|\ ;
+䝷>zhì|\ ;
+䝳>cán|\ ;
+䝲>jìn|\ ;
+䝭>gòu|\ ;
+䝬>zhù|\ ;
+䝫>zuó|\ ;
+䝪>shú|\ ;
+䝧>mén|\ ;
+䝥>háo|\ ;
+䝤>lăo|\ ;
+䝢>màn|\ ;
+䝡>màn|\ ;
+䝞>hào|\ ;
+䝕>zhé|\ ;
+䝒>zhù|\ ;
+䝐>wéi|\ ;
+䝏>lóu|\ ;
+䝍>jùn|\ ;
+䝌>jué|\ ;
+䝊>shà|\ ;
+䝃>zhé|\ ;
+䝂>shù|\ ;
+䝁>láo|\ ;
+䜻>chĭ|\ ;
+䜹>shù|\ ;
+䜸>mĕi|\ ;
+䜵>chĭ|\ ;
+䜴>chù|\ ;
+䜲>liè|\ ;
+䜱>măn|\ ;
+䜭>jùn|\ ;
+䜪>qiú|\ ;
+䜩>yàn|\ ;
+䜧>năo|\ ;
+䜠>chè|\ ;
+䜜>wèi|\ ;
+䜗>xìn|\ ;
+䜖>tàn|\ ;
+䜕>mài|\ ;
+䜔>suí|\ ;
+䜓>niè|\ ;
+䜑>qià|\ ;
+䜎>láo|\ ;
+䜋>huì|\ ;
+䜊>zào|\ ;
+䜇>gŭn|\ ;
+䜅>wéi|\ ;
+䜄>chí|\ ;
+䜀>năo|\ ;
+䛽>zhă|\ ;
+䛼>huĭ|\ ;
+䛻>yòu|\ ;
+䛺>jiè|\ ;
+䛹>càn|\ ;
+䛸>chè|\ ;
+䛷>wăn|\ ;
+䛶>lĕi|\ ;
+䛲>mán|\ ;
+䛰>hún|\ ;
+䛮>jiù|\ ;
+䛨>xìn|\ ;
+䛡>huà|\ ;
+䛠>dòu|\ ;
+䛟>jiá|\ ;
+䛞>hăn|\ ;
+䛝>náo|\ ;
+䛜>xùn|\ ;
+䛛>huì|\ ;
+䛘>nín|\ ;
+䛗>zhĭ|\ ;
+䛍>fèi|\ ;
+䛌>páo|\ ;
+䛈>shì|\ ;
+䛅>xiá|\ ;
+䛂>chí|\ ;
+䛁>nán|\ ;
+䛀>făn|\ ;
+䚿>yìn|\ ;
+䚾>nín|\ ;
+䚽>hào|\ ;
+䚼>nyù|\ ;
+䚻>yáo|\ ;
+䚺>yáo|\ ;
+䚸>xiè|\ ;
+䚵>tăo|\ ;
+䚳>xiè|\ ;
+䚱>xìn|\ ;
+䚯>tăo|\ ;
+䚬>lín|\ ;
+䚨>fèi|\ ;
+䚧>liú|\ ;
+䚦>zhì|\ ;
+䚥>nuò|\ ;
+䚢>chè|\ ;
+䚠>hùn|\ ;
+䚟>dăi|\ ;
+䚞>dăi|\ ;
+䚑>mái|\ ;
+䚋>yùn|\ ;
+䚅>lái|\ ;
+䚃>yóu|\ ;
+䙿>wèi|\ ;
+䙨>guŏ|\ ;
+䙤>duŏ|\ ;
+䙡>huì|\ ;
+䙠>jué|\ ;
+䙟>duò|\ ;
+䙝>xiè|\ ;
+䙙>chí|\ ;
+䙘>chŭ|\ ;
+䙕>chù|\ ;
+䙓>băi|\ ;
+䙎>xié|\ ;
+䙌>huì|\ ;
+䙊>xiè|\ ;
+䙉>xún|\ ;
+䙈>hóu|\ ;
+䙆>guì|\ ;
+䙅>yào|\ ;
+䙃>duò|\ ;
+䙁>cán|\ ;
+䘿>jué|\ ;
+䘼>wăn|\ ;
+䘹>zuì|\ ;
+䘶>hàn|\ ;
+䘭>dié|\ ;
+䘫>nòu|\ ;
+䘥>xiá|\ ;
+䘤>shù|\ ;
+䘢>zhŭ|\ ;
+䘚>zhú|\ ;
+䘙>wèi|\ ;
+䘓>kàn|\ ;
+䘑>mài|\ ;
+䘐>nyù|\ ;
+䘊>miè|\ ;
+䘉>cán|\ ;
+䘇>wén|\ ;
+䘅>nái|\ ;
+䗽>wèi|\ ;
+䗻>jié|\ ;
+䗺>yăn|\ ;
+䗲>lìn|\ ;
+䗯>jìn|\ ;
+䗪>zhè|\ ;
+䗣>găo|\ ;
+䗢>suŏ|\ ;
+䗡>yán|\ ;
+䗞>cán|\ ;
+䗝>cán|\ ;
+䗜>liú|\ ;
+䗙>hán|\ ;
+䗖>chì|\ ;
+䗕>wăn|\ ;
+䗔>hóu|\ ;
+䗋>móu|\ ;
+䖼>jué|\ ;
+䖻>yóu|\ ;
+䖴>yáo|\ ;
+䖳>zhà|\ ;
+䖲>xún|\ ;
+䖰>pài|\ ;
+䖯>guì|\ ;
+䖨>shí|\ ;
+䖤>wăn|\ ;
+䖣>sào|\ ;
+䖡>nyù|\ ;
+䖜>yín|\ ;
+䖛>suŏ|\ ;
+䖗>yán|\ ;
+䖖>xiá|\ ;
+䖔>hàn|\ ;
+䖐>jìn|\ ;
+䖏>chŭ|\ ;
+䖎>xiá|\ ;
+䖌>qín|\ ;
+䖋>nuè|\ ;
+䖈>nuè|\ ;
+䖄>rán|\ ;
+䖃>yuè|\ ;
+䕿>hàn|\ ;
+䕾>yán|\ ;
+䕽>zhú|\ ;
+䕼>nán|\ ;
+䕵>xié|\ ;
+䕲>lĭn|\ ;
+䕱>dŏu|\ ;
+䕰>bàn|\ ;
+䕫>kuí|\ ;
+䕩>lăo|\ ;
+䕢>zhă|\ ;
+䕠>fèi|\ ;
+䕛>jiá|\ ;
+䕚>kuì|\ ;
+䕙>jié|\ ;
+䕕>màn|\ ;
+䕓>chá|\ ;
+䕑>jùn|\ ;
+䕌>zhì|\ ;
+䕊>tán|\ ;
+䕈>xiè|\ ;
+䕇>huì|\ ;
+䕆>dòu|\ ;
+䕅>săo|\ ;
+䕃>yìn|\ ;
+䕁>fĕi|\ ;
+䔿>jiè|\ ;
+䔺>wéi|\ ;
+䔹>suì|\ ;
+䔷>qín|\ ;
+䔳>năn|\ ;
+䔪>duì|\ ;
+䔢>huá|\ ;
+䔟>chí|\ ;
+䔞>lyù|\ ;
+䔜>nán|\ ;
+䔘>zuò|\ ;
+䔒>bèi|\ ;
+䔑>xié|\ ;
+䔈>găn|\ ;
+䔄>yáo|\ ;
+䓿>hăn|\ ;
+䓺>mĕi|\ ;
+䓶>lài|\ ;
+䓳>hĕn|\ ;
+䓲>ruì|\ ;
+䓮>mào|\ ;
+䓭>chà|\ ;
+䓟>liè|\ ;
+䓘>jiù|\ ;
+䓕>tuŏ|\ ;
+䓍>hăn|\ ;
+䓌>zhì|\ ;
+䓆>zhé|\ ;
+䓄>yín|\ ;
+䓂>yán|\ ;
+䒽>méi|\ ;
+䒺>jĭn|\ ;
+䒹>lèi|\ ;
+䒵>hào|\ ;
+䒴>yŏu|\ ;
+䒳>duŏ|\ ;
+䒲>chà|\ ;
+䒫>dài|\ ;
+䒨>shĭ|\ ;
+䒦>fàn|\ ;
+䒣>răn|\ ;
+䒢>áng|\ ;
+䒡>yĭn|\ ;
+䒠>făn|\ ;
+䒜>niú|\ ;
+䒖>xìn|\ ;
+䒔>bài|\ ;
+䒓>kăi|\ ;
+䒑>căo|\ ;
+䒆>chè|\ ;
+䒃>cào|\ ;
+䑻>yóu|\ ;
+䑶>cán|\ ;
+䑳>lún|\ ;
+䑲>chè|\ ;
+䑱>mán|\ ;
+䑬>yào|\ ;
+䑨>duò|\ ;
+䑤>jìn|\ ;
+䑝>jiă|\ ;
+䑛>chĭ|\ ;
+䑙>rán|\ ;
+䑘>chá|\ ;
+䑕>shŭ|\ ;
+䑔>fèi|\ ;
+䑓>tái|\ ;
+䑍>yàn|\ ;
+䑌>lán|\ ;
+䑋>náo|\ ;
+䑊>wéi|\ ;
+䑇>zhì|\ ;
+䐾>duó|\ ;
+䐽>mán|\ ;
+䐺>tàn|\ ;
+䐹>sào|\ ;
+䐸>guó|\ ;
+䐶>jĭn|\ ;
+䐴>guì|\ ;
+䐲>zhé|\ ;
+䐯>léi|\ ;
+䐭>zhì|\ ;
+䐬>cáo|\ ;
+䐪>fàn|\ ;
+䐩>kăi|\ ;
+䐧>kào|\ ;
+䐤>chí|\ ;
+䐣>cuò|\ ;
+䐢>zhù|\ ;
+䐞>ruò|\ ;
+䐝>suŏ|\ ;
+䐘>jué|\ ;
+䐔>bìn|\ ;
+䐓>róu|\ ;
+䐑>zhé|\ ;
+䐈>zhí|\ ;
+䐆>căi|\ ;
+䐄>hàn|\ ;
+䏼>cán|\ ;
+䏷>hàn|\ ;
+䏳>zhè|\ ;
+䏲>dié|\ ;
+䏰>rĕn|\ ;
+䏯>zhì|\ ;
+䏬>móu|\ ;
+䏨>huĭ|\ ;
+䏦>huá|\ ;
+䏣>jué|\ ;
+䏡>shì|\ ;
+䏟>biè|\ ;
+䏙>tăn|\ ;
+䏗>gài|\ ;
+䏕>rĕn|\ ;
+䏔>niŭ|\ ;
+䏐>jué|\ ;
+䏆>cáo|\ ;
+䏄>zhì|\ ;
+䏂>sŏu|\ ;
+䏁>zăi|\ ;
+䎿>qiú|\ ;
+䎾>gŭn|\ ;
+䎽>wén|\ ;
+䎺>zhĭ|\ ;
+䎹>wén|\ ;
+䎷>zhù|\ ;
+䎲>zhé|\ ;
+䎰>zuó|\ ;
+䎯>hàn|\ ;
+䎦>yăn|\ ;
+䎤>chú|\ ;
+䎝>chú|\ ;
+䎉>shù|\ ;
+䎃>răn|\ ;
+䎂>băo|\ ;
+䎀>xuè|\ ;
+䍾>tuí|\ ;
+䍼>cán|\ ;
+䍷>guì|\ ;
+䍴>duò|\ ;
+䍲>nái|\ ;
+䍯>guĭ|\ ;
+䍫>tuó|\ ;
+䍪>kuì|\ ;
+䍩>ăng|\ ;
+䍥>lèi|\ ;
+䍣>léi|\ ;
+䍙>méi|\ ;
+䍒>mŏu|\ ;
+䍑>hăn|\ ;
+䍐>hăn|\ ;
+䍎>cùn|\ ;
+䍊>jué|\ ;
+䍆>zhù|\ ;
+䍃>yáo|\ ;
+䍁>suì|\ ;
+䍀>lán|\ ;
+䌾>rén|\ ;
+䌽>căi|\ ;
+䌼>ruì|\ ;
+䌵>zhú|\ ;
+䌴>luò|\ ;
+䌱>luò|\ ;
+䌰>shè|\ ;
+䌫>lăn|\ ;
+䌪>yán|\ ;
+䌨>cài|\ ;
+䌦>dăo|\ ;
+䌥>yĭn|\ ;
+䌤>zhĭ|\ ;
+䌝>jìn|\ ;
+䌜>niè|\ ;
+䌛>yáo|\ ;
+䌖>jié|\ ;
+䌓>fán|\ ;
+䌍>hàn|\ ;
+䌊>yáo|\ ;
+䌇>huì|\ ;
+䌆>guì|\ ;
+䋾>zhă|\ ;
+䋻>nín|\ ;
+䋸>xún|\ ;
+䋷>liú|\ ;
+䋴>niù|\ ;
+䋳>bèi|\ ;
+䋲>chĕ|\ ;
+䋱>lái|\ ;
+䋮>jìn|\ ;
+䋭>huò|\ ;
+䋦>fán|\ ;
+䋤>yào|\ ;
+䋣>fán|\ ;
+䋢>biè|\ ;
+䋕>rèn|\ ;
+䋐>yuè|\ ;
+䋏>zuò|\ ;
+䋋>mín|\ ;
+䋉>jué|\ ;
+䋃>mào|\ ;
+䋂>yáo|\ ;
+䋀>kuà|\ ;
+䊼>chĭ|\ ;
+䊻>yăn|\ ;
+䊵>qiú|\ ;
+䊰>chŭ|\ ;
+䊬>chà|\ ;
+䊫>cuĭ|\ ;
+䊩>fán|\ ;
+䊨>luó|\ ;
+䊤>tán|\ ;
+䊡>mán|\ ;
+䊟>mén|\ ;
+䊞>zhé|\ ;
+䊝>xiè|\ ;
+䊙>yán|\ ;
+䊘>jiù|\ ;
+䊖>lăn|\ ;
+䊓>shì|\ ;
+䊊>mèi|\ ;
+䊉>săn|\ ;
+䊈>méi|\ ;
+䊆>jiù|\ ;
+䊃>pèi|\ ;
+䉽>băn|\ ;
+䉷>dàn|\ ;
+䉲>biè|\ ;
+䉰>yáo|\ ;
+䉮>lìn|\ ;
+䉭>liè|\ ;
+䉬>fèi|\ ;
+䉪>lèi|\ ;
+䉧>liú|\ ;
+䉤>sŏu|\ ;
+䉣>xiè|\ ;
+䉡>tán|\ ;
+䉠>wéi|\ ;
+䉟>huò|\ ;
+䉞>dăn|\ ;
+䉜>zhì|\ ;
+䉙>yún|\ ;
+䉓>léi|\ ;
+䉒>fán|\ ;
+䉏>xiè|\ ;
+䉌>suì|\ ;
+䉋>mèi|\ ;
+䉊>fàn|\ ;
+䉈>săn|\ ;
+䉅>zhì|\ ;
+䉂>lĕi|\ ;
+䉀>shù|\ ;
+䈿>mài|\ ;
+䈼>miè|\ ;
+䈹>sŏu|\ ;
+䈷>luò|\ ;
+䈲>pán|\ ;
+䈧>wĕi|\ ;
+䈢>săi|\ ;
+䈜>qìn|\ ;
+䈚>tái|\ ;
+䈗>suŏ|\ ;
+䈕>chí|\ ;
+䈒>năn|\ ;
+䈑>guă|\ ;
+䈐>kuì|\ ;
+䈏>báo|\ ;
+䈉>shà|\ ;
+䈈>féi|\ ;
+䈆>dài|\ ;
+䈄>hán|\ ;
+䈁>lún|\ ;
+䇾>yán|\ ;
+䇽>zhì|\ ;
+䇼>chì|\ ;
+䇻>huì|\ ;
+䇹>jùn|\ ;
+䇶>jué|\ ;
+䇮>rèn|\ ;
+䇭>lăo|\ ;
+䇧>zhù|\ ;
+䇤>duì|\ ;
+䇡>zhù|\ ;
+䇞>găn|\ ;
+䇛>zhĭ|\ ;
+䇙>yĭn|\ ;
+䇖>yŭn|\ ;
+䇔>luò|\ ;
+䇒>jiè|\ ;
+䇏>duì|\ ;
+䇎>què|\ ;
+䇋>hài|\ ;
+䇈>guì|\ ;
+䆾>lán|\ ;
+䆱>tăn|\ ;
+䆮>jìn|\ ;
+䆬>yŭn|\ ;
+䆢>jué|\ ;
+䆞>yăo|\ ;
+䆝>shù|\ ;
+䆜>yòu|\ ;
+䆛>chá|\ ;
+䆙>yáo|\ ;
+䆕>jué|\ ;
+䆒>jiù|\ ;
+䆐>guó|\ ;
+䆏>fèi|\ ;
+䆊>cuì|\ ;
+䆈>zhì|\ ;
+䆃>dăo|\ ;
+䆀>mĕi|\ ;
+䅿>huá|\ ;
+䅾>cén|\ ;
+䅼>mán|\ ;
+䅹>lóu|\ ;
+䅶>nòu|\ ;
+䅴>suŏ|\ ;
+䅳>chú|\ ;
+䅱>hùn|\ ;
+䅪>tuí|\ ;
+䅩>zhĭ|\ ;
+䅧>yàn|\ ;
+䅦>máo|\ ;
+䅥>jié|\ ;
+䅢>jiù|\ ;
+䅟>căn|\ ;
+䅜>duò|\ ;
+䅙>hùn|\ ;
+䅘>lái|\ ;
+䅗>suì|\ ;
+䅑>ruí|\ ;
+䅏>huì|\ ;
+䅎>yŏu|\ ;
+䅋>wăn|\ ;
+䅀>liè|\ ;
+䄾>ròu|\ ;
+䄺>zhì|\ ;
+䄷>dàn|\ ;
+䄩>náo|\ ;
+䄤>lài|\ ;
+䄟>cuì|\ ;
+䄛>lóu|\ ;
+䄚>cáo|\ ;
+䄕>shè|\ ;
+䄒>niè|\ ;
+䄑>huó|\ ;
+䄋>yăn|\ ;
+䄈>dòu|\ ;
+䄆>huó|\ ;
+䄂>liù|\ ;
+䄀>huò|\ ;
+䃹>làn|\ ;
+䃲>pán|\ ;
+䃭>găn|\ ;
+䃬>wĕi|\ ;
+䃫>dăn|\ ;
+䃪>tán|\ ;
+䃩>náo|\ ;
+䃣>huĭ|\ ;
+䃡>cén|\ ;
+䃞>shú|\ ;
+䃕>láo|\ ;
+䃓>gòu|\ ;
+䃑>pán|\ ;
+䃉>mín|\ ;
+䃂>gŭn|\ ;
+䃀>cuì|\ ;
+䂾>lăi|\ ;
+䂼>niè|\ ;
+䂺>wăn|\ ;
+䂹>suŏ|\ ;
+䂸>guó|\ ;
+䂶>jié|\ ;
+䂴>yán|\ ;
+䂳>cuŏ|\ ;
+䂱>cuì|\ ;
+䂩>yàn|\ ;
+䂥>mín|\ ;
+䂠>shé|\ ;
+䂞>zhè|\ ;
+䂝>jié|\ ;
+䂚>yáo|\ ;
+䂖>shí|\ ;
+䂕>huì|\ ;
+䂒>jié|\ ;
+䂉>hóu|\ ;
+䂄>huò|\ ;
+䁾>miè|\ ;
+䁽>liè|\ ;
+䁺>shì|\ ;
+䁷>jué|\ ;
+䁲>mái|\ ;
+䁯>shè|\ ;
+䁪>năn|\ ;
+䁨>huò|\ ;
+䁤>chè|\ ;
+䁟>chá|\ ;
+䁛>guĭ|\ ;
+䁚>sŭn|\ ;
+䁙>yăn|\ ;
+䁘>yăo|\ ;
+䁗>kăi|\ ;
+䁕>mín|\ ;
+䁔>hàn|\ ;
+䁓>jiè|\ ;
+䁏>yăo|\ ;
+䁍>jià|\ ;
+䁋>shé|\ ;
+䁅>bèi|\ ;
+䀽>yán|\ ;
+䀼>rèn|\ ;
+䀻>pìn|\ ;
+䀹>jiá|\ ;
+䀷>jié|\ ;
+䀫>jiá|\ ;
+䀩>luò|\ ;
+䀤>mào|\ ;
+䀟>fán|\ ;
+䀛>mèi|\ ;
+䀚>áng|\ ;
+䀗>jué|\ ;
+䀔>niú|\ ;
+䀐>săn|\ ;
+䀍>kàn|\ ;
+䀋>yán|\ ;
+䀆>jìn|\ ;
+䀅>shè|\ ;
+䀃>tuí|\ ;
+䀁>yòu|\ ;
+䀀>fán|\ ;
+㿾>zhù|\ ;
+㿼>yán|\ ;
+㿺>báo|\ ;
+㿸>wăn|\ ;
+㿷>zào|\ ;
+㿵>răn|\ ;
+㿱>xué|\ ;
+㿭>chè|\ ;
+㿢>yào|\ ;
+㿟>bái|\ ;
+㿞>mào|\ ;
+㿜>biĕ|\ ;
+㿚>luò|\ ;
+㿗>tuí|\ ;
+㿕>yán|\ ;
+㿔>lĕi|\ ;
+㿓>jiá|\ ;
+㿒>dăo|\ ;
+㿑>yào|\ ;
+㿏>qún|\ ;
+㿎>fèn|\ ;
+㿍>jiè|\ ;
+㿋>sào|\ ;
+㿊>căn|\ ;
+㿉>tuí|\ ;
+㿃>dài|\ ;
+㾽>tuí|\ ;
+㾼>tuĭ|\ ;
+㾻>zhù|\ ;
+㾸>găo|\ ;
+㾱>bèi|\ ;
+㾯>tuí|\ ;
+㾢>lài|\ ;
+㾡>què|\ ;
+㾞>yŏu|\ ;
+㾝>chè|\ ;
+㾜>qiè|\ ;
+㾛>qĭn|\ ;
+㾙>yĭn|\ ;
+㾔>lyŭ|\ ;
+㾏>jiè|\ ;
+㾍>nái|\ ;
+㾋>xiù|\ ;
+㾆>rán|\ ;
+㾃>tuó|\ ;
+㾁>shù|\ ;
+㾀>qiè|\ ;
+㽹>fàn|\ ;
+㽳>hàn|\ ;
+㽰>shù|\ ;
+㽩>càn|\ ;
+㽨>cuó|\ ;
+㽦>xún|\ ;
+㽥>róu|\ ;
+㽠>xiá|\ ;
+㽟>liè|\ ;
+㽞>liú|\ ;
+㽜>wăn|\ ;
+㽛>kòu|\ ;
+㽚>chì|\ ;
+㽙>jùn|\ ;
+㽖>nán|\ ;
+㽕>yóu|\ ;
+㽑>tán|\ ;
+㽎>dăn|\ ;
+㽌>liù|\ ;
+㽋>luó|\ ;
+㽊>xiè|\ ;
+㽉>hăn|\ ;
+㼲>liè|\ ;
+㼮>mái|\ ;
+㼪>jiá|\ ;
+㼨>hán|\ ;
+㼥>chú|\ ;
+㼣>băi|\ ;
+㼠>tuó|\ ;
+㼟>bái|\ ;
+㼝>fàn|\ ;
+㼜>àng|\ ;
+㼒>qiŭ|\ ;
+㼏>nĕi|\ ;
+㼎>bèi|\ ;
+㼍>lĕi|\ ;
+㼊>tún|\ ;
+㼉>yìn|\ ;
+㼈>luó|\ ;
+㻿>shŭ|\ ;
+㻽>suì|\ ;
+㻸>cén|\ ;
+㻲>lyŭ|\ ;
+㻮>càn|\ ;
+㻪>suì|\ ;
+㻧>duò|\ ;
+㻡>dié|\ ;
+㻟>suí|\ ;
+㻗>bèi|\ ;
+㻖>dài|\ ;
+㻕>jué|\ ;
+㻔>duŏ|\ ;
+㻒>jùn|\ ;
+㻅>huì|\ ;
+㻄>băo|\ ;
+㻀>yóu|\ ;
+㺺>mào|\ ;
+㺵>jiú|\ ;
+㺳>méi|\ ;
+㺲>niŭ|\ ;
+㺫>qiú|\ ;
+㺩>jiù|\ ;
+㺠>yòu|\ ;
+㺜>băn|\ ;
+㺛>zhù|\ ;
+㺗>dàn|\ ;
+㺖>hăn|\ ;
+㺕>fán|\ ;
+㺔>hài|\ ;
+㺑>cán|\ ;
+㺏>lóu|\ ;
+㺅>hóu|\ ;
+㺃>gŏu|\ ;
+㺂>găn|\ ;
+㺁>năo|\ ;
+㺀>náo|\ ;
+㹼>chŭ|\ ;
+㹷>shĭ|\ ;
+㹬>shĭ|\ ;
+㹨>yòu|\ ;
+㹥>zhù|\ ;
+㹤>qiè|\ ;
+㹠>tún|\ ;
+㹟>jué|\ ;
+㹞>yín|\ ;
+㹝>shì|\ ;
+㹜>yín|\ ;
+㹛>ráo|\ ;
+㹗>táo|\ ;
+㹏>jĭn|\ ;
+㹎>léi|\ ;
+㹊>yuè|\ ;
+㸾>rèn|\ ;
+㸽>bèi|\ ;
+㸹>liè|\ ;
+㸸>hŏu|\ ;
+㸷>shì|\ ;
+㸵>guĭ|\ ;
+㸲>zuó|\ ;
+㸱>tuó|\ ;
+㸰>tuó|\ ;
+㸮>fén|\ ;
+㸬>bèi|\ ;
+㸧>kèn|\ ;
+㸢>bèi|\ ;
+㸞>băn|\ ;
+㸝>kăn|\ ;
+㸘>wàn|\ ;
+㸕>jué|\ ;
+㸒>yín|\ ;
+㸐>rán|\ ;
+㸎>niè|\ ;
+㸌>huò|\ ;
+㸋>fán|\ ;
+㸉>xiè|\ ;
+㸅>jié|\ ;
+㸁>hăn|\ ;
+㸀>tái|\ ;
+㷾>jué|\ ;
+㷼>yàn|\ ;
+㷸>dié|\ ;
+㷶>bèi|\ ;
+㷳>yàn|\ ;
+㷪>cuì|\ ;
+㷢>zhă|\ ;
+㷠>lín|\ ;
+㷟>tuì|\ ;
+㷘>tái|\ ;
+㷕>qiú|\ ;
+㷔>yàn|\ ;
+㷐>huĭ|\ ;
+㷍>lún|\ ;
+㷋>tán|\ ;
+㷊>fén|\ ;
+㷉>wèi|\ ;
+㷆>dòu|\ ;
+㷄>huì|\ ;
+㷃>cuĭ|\ ;
+㷂>shù|\ ;
+㶵>rèn|\ ;
+㶴>chĭ|\ ;
+㶳>jìn|\ ;
+㶰>hán|\ ;
+㶯>liù|\ ;
+㶭>jiù|\ ;
+㶬>méi|\ ;
+㶧>nèn|\ ;
+㶦>jìn|\ ;
+㶡>dài|\ ;
+㶟>lĕi|\ ;
+㶗>fàn|\ ;
+㶖>shù|\ ;
+㶔>bèi|\ ;
+㶆>chú|\ ;
+㶅>xué|\ ;
+㶄>yán|\ ;
+㶁>guó|\ ;
+㵽>duì|\ ;
+㵻>sòu|\ ;
+㵺>pái|\ ;
+㵸>yào|\ ;
+㵵>zòu|\ ;
+㵭>zhŭ|\ ;
+㵦>suí|\ ;
+㵢>léi|\ ;
+㵡>báo|\ ;
+㵘>màn|\ ;
+㵖>nyù|\ ;
+㵔>chĕ|\ ;
+㵓>shí|\ ;
+㵒>fèi|\ ;
+㵐>jué|\ ;
+㵏>cuĭ|\ ;
+㵎>hăn|\ ;
+㵍>mèn|\ ;
+㵆>hào|\ ;
+㵅>dàn|\ ;
+㵄>hàn|\ ;
+㵃>chè|\ ;
+㴽>xiè|\ ;
+㴶>què|\ ;
+㴮>xiè|\ ;
+㴭>yăo|\ ;
+㴬>xiè|\ ;
+㴫>jùn|\ ;
+㴪>niè|\ ;
+㴛>zhì|\ ;
+㴚>suì|\ ;
+㴙>zhá|\ ;
+㴘>mào|\ ;
+㴖>luò|\ ;
+㴓>zăi|\ ;
+㴈>yìn|\ ;
+㴇>shè|\ ;
+㴆>jìn|\ ;
+㴃>lèi|\ ;
+㴀>fàn|\ ;
+㳿>xiè|\ ;
+㳺>yóu|\ ;
+㳷>wĕn|\ ;
+㳶>gòu|\ ;
+㳪>pàn|\ ;
+㳦>xiè|\ ;
+㳕>lán|\ ;
+㳔>duì|\ ;
+㳏>chĭ|\ ;
+㳈>pèi|\ ;
+㳆>shŭ|\ ;
+㳃>cuì|\ ;
+㳂>yán|\ ;
+㳀>guò|\ ;
+㲹>guĭ|\ ;
+㲷>dàn|\ ;
+㲶>lv̀|\ ;
+㲳>dié|\ ;
+㲲>dié|\ ;
+㲱>liè|\ ;
+㲯>rán|\ ;
+㲭>tăn|\ ;
+㲧>zào|\ ;
+㲦>hàn|\ ;
+㲡>nài|\ ;
+㲠>máo|\ ;
+㲜>tán|\ ;
+㲛>zhĭ|\ ;
+㲕>lèi|\ ;
+㲒>bào|\ ;
+㲏>băo|\ ;
+㲎>lóu|\ ;
+㲊>ruì|\ ;
+㲉>kài|\ ;
+㲄>kòu|\ ;
+㲃>jiù|\ ;
+㱿>què|\ ;
+㱽>dàn|\ ;
+㱻>luŏ|\ ;
+㱵>bèn|\ ;
+㱱>huì|\ ;
+㱰>zăi|\ ;
+㱬>wĕi|\ ;
+㱫>làn|\ ;
+㱪>mèn|\ ;
+㱣>tuĭ|\ ;
+㱜>zhá|\ ;
+㱚>cán|\ ;
+㱙>xiŭ|\ ;
+㱖>cuì|\ ;
+㱌>chè|\ ;
+㱋>què|\ ;
+㱈>jìn|\ ;
+㱃>yĭn|\ ;
+㱁>shì|\ ;
+㱀>chĭ|\ ;
+㰼>qiè|\ ;
+㰺>xiá|\ ;
+㰹>jìn|\ ;
+㰶>yŏu|\ ;
+㰱>shà|\ ;
+㰰>qiè|\ ;
+㰯>kòu|\ ;
+㰬>xún|\ ;
+㰥>huì|\ ;
+㰡>xiè|\ ;
+㰛>yuè|\ ;
+㰙>nuó|\ ;
+㰖>lăn|\ ;
+㰔>xiè|\ ;
+㰒>shé|\ ;
+㰐>jué|\ ;
+㰎>zuì|\ ;
+㰌>què|\ ;
+㰋>pín|\ ;
+㰊>xún|\ ;
+㰆>bèi|\ ;
+㰁>luŏ|\ ;
+㯿>liè|\ ;
+㯻>gŭn|\ ;
+㯸>jĭn|\ ;
+㯲>jìn|\ ;
+㯰>zhé|\ ;
+㯮>shŭ|\ ;
+㯥>cáo|\ ;
+㯡>pào|\ ;
+㯜>cuì|\ ;
+㯙>chè|\ ;
+㯗>răn|\ ;
+㯔>cuì|\ ;
+㯎>nèn|\ ;
+㯊>hén|\ ;
+㯉>huò|\ ;
+㯂>dài|\ ;
+㮺>bĕn|\ ;
+㮹>zhĭ|\ ;
+㮶>shì|\ ;
+㮯>huá|\ ;
+㮮>jié|\ ;
+㮥>fèn|\ ;
+㮣>gài|\ ;
+㮢>hóu|\ ;
+㮞>jié|\ ;
+㮛>chí|\ ;
+㮘>mào|\ ;
+㮗>qín|\ ;
+㮖>jiá|\ ;
+㮓>gèn|\ ;
+㮏>nài|\ ;
+㮋>yŏu|\ ;
+㮈>nài|\ ;
+㮆>niè|\ ;
+㮃>ruí|\ ;
+㮁>yáo|\ ;
+㮀>hán|\ ;
+㭿>áng|\ ;
+㭾>jué|\ ;
+㭺>yăn|\ ;
+㭯>dié|\ ;
+㭮>zuò|\ ;
+㭭>fèi|\ ;
+㭩>lèi|\ ;
+㭨>xié|\ ;
+㭞>liè|\ ;
+㭝>qiú|\ ;
+㭛>pài|\ ;
+㭚>lyŭ|\ ;
+㭙>shé|\ ;
+㭑>mèi|\ ;
+㭏>wĕi|\ ;
+㭌>móu|\ ;
+㭉>huá|\ ;
+㭈>jué|\ ;
+㭄>xìn|\ ;
+㬿>dùn|\ ;
+㬶>hào|\ ;
+㬯>liè|\ ;
+㬫>yàn|\ ;
+㬪>dié|\ ;
+㬩>huì|\ ;
+㬦>yuè|\ ;
+㬣>duì|\ ;
+㬜>jìn|\ ;
+㬚>chè|\ ;
+㬙>wĕi|\ ;
+㬔>háo|\ ;
+㬐>jĭn|\ ;
+㬋>hóu|\ ;
+㬅>màn|\ ;
+㬃>tái|\ ;
+㫼>dié|\ ;
+㫻>kùn|\ ;
+㫹>dài|\ ;
+㫸>qiè|\ ;
+㫶>cŏu|\ ;
+㫲>pèi|\ ;
+㫱>năn|\ ;
+㫯>mào|\ ;
+㫧>bào|\ ;
+㫟>yán|\ ;
+㫜>dàn|\ ;
+㫗>hòu|\ ;
+㫔>gèn|\ ;
+㫑>shí|\ ;
+㫐>yăo|\ ;
+㫏>yăo|\ ;
+㫎>gŭn|\ ;
+㫍>yóu|\ ;
+㫅>chá|\ ;
+㫃>yăn|\ ;
+㫂>zhù|\ ;
+㪿>zhé|\ ;
+㪽>suŏ|\ ;
+㪹>lŏu|\ ;
+㪷>dŏu|\ ;
+㪵>bàn|\ ;
+㪴>jiá|\ ;
+㪯>chá|\ ;
+㪫>ruì|\ ;
+㪦>yìn|\ ;
+㪞>mào|\ ;
+㪚>sàn|\ ;
+㪗>tŏu|\ ;
+㪔>sàn|\ ;
+㪋>hàn|\ ;
+㪊>qún|\ ;
+㪈>guì|\ ;
+㪁>qín|\ ;
+㩻>guĭ|\ ;
+㩹>dié|\ ;
+㩸>dié|\ ;
+㩶>niè|\ ;
+㩲>kŭn|\ ;
+㩱>jué|\ ;
+㩯>băn|\ ;
+㩪>xié|\ ;
+㩨>huì|\ ;
+㩦>xié|\ ;
+㩡>luŏ|\ ;
+㩝>háo|\ ;
+㩜>lăn|\ ;
+㩔>tún|\ ;
+㩓>huĭ|\ ;
+㩒>qín|\ ;
+㩌>fèi|\ ;
+㩉>xié|\ ;
+㩇>huà|\ ;
+㩆>jiù|\ ;
+㩁>què|\ ;
+㨼>luè|\ ;
+㨻>cán|\ ;
+㨺>mén|\ ;
+㨹>huì|\ ;
+㨷>jìn|\ ;
+㨳>guĭ|\ ;
+㨱>yáo|\ ;
+㨯>huò|\ ;
+㨫>lăn|\ ;
+㨩>jié|\ ;
+㨨>liù|\ ;
+㨧>bèn|\ ;
+㨤>huì|\ ;
+㨡>hún|\ ;
+㨟>hái|\ ;
+㨝>xiè|\ ;
+㨚>xún|\ ;
+㨙>xié|\ ;
+㨗>jié|\ ;
+㨖>zhì|\ ;
+㨔>hàn|\ ;
+㨓>láo|\ ;
+㨒>kuí|\ ;
+㨌>gòu|\ ;
+㨋>chĕ|\ ;
+㨊>wĕi|\ ;
+㨉>mĭn|\ ;
+㨆>lĭn|\ ;
+㨅>nèi|\ ;
+㨁>zhí|\ ;
+㧻>zhĭ|\ ;
+㧷>duò|\ ;
+㧵>póu|\ ;
+㧲>săn|\ ;
+㧯>lăo|\ ;
+㧪>guĭ|\ ;
+㧩>pèi|\ ;
+㧨>qiú|\ ;
+㧣>zhù|\ ;
+㧡>hài|\ ;
+㧜>liè|\ ;
+㧘>cuì|\ ;
+㧕>jiù|\ ;
+㧒>xué|\ ;
+㧑>wéi|\ ;
+㧌>mào|\ ;
+㧉>gài|\ ;
+㧈>yĭn|\ ;
+㧇>măo|\ ;
+㦹>àng|\ ;
+㦶>dié|\ ;
+㦯>huò|\ ;
+㦬>luŏ|\ ;
+㦪>xiè|\ ;
+㦩>yĭn|\ ;
+㦨>lán|\ ;
+㦧>căn|\ ;
+㦣>wèi|\ ;
+㦢>jié|\ ;
+㦟>hài|\ ;
+㦜>huò|\ ;
+㦖>mèn|\ ;
+㦔>yàn|\ ;
+㦏>sŭn|\ ;
+㦎>huà|\ ;
+㦌>tuì|\ ;
+㦊>huá|\ ;
+㥼>yĭn|\ ;
+㥹>fĕn|\ ;
+㥸>mĭn|\ ;
+㥵>hùn|\ ;
+㥱>fĕi|\ ;
+㥯>yĭn|\ ;
+㥭>tài|\ ;
+㥪>lóu|\ ;
+㥩>duŏ|\ ;
+㥦>qiè|\ ;
+㥣>huì|\ ;
+㥢>qiú|\ ;
+㥟>xié|\ ;
+㥞>cuì|\ ;
+㥜>wèi|\ ;
+㥒>căi|\ ;
+㥎>lái|\ ;
+㥉>chè|\ ;
+㥈>dié|\ ;
+㥇>cán|\ ;
+㥃>mèn|\ ;
+㤾>sàn|\ ;
+㤹>qiú|\ ;
+㤳>bĕi|\ ;
+㤲>qiè|\ ;
+㤰>zăn|\ ;
+㤬>huì|\ ;
+㤧>hóu|\ ;
+㤥>hài|\ ;
+㤠>liè|\ ;
+㤞>chà|\ ;
+㤜>jué|\ ;
+㤛>nín|\ ;
+㤘>chù|\ ;
+㤖>zhù|\ ;
+㤕>chù|\ ;
+㤓>bèn|\ ;
+㤑>yòu|\ ;
+㤉>qià|\ ;
+㤈>qìn|\ ;
+㤆>fàn|\ ;
+㤄>pèi|\ ;
+㣾>chà|\ ;
+㣽>shù|\ ;
+㣼>rĕn|\ ;
+㣲>wéi|\ ;
+㣰>xiè|\ ;
+㣯>xiè|\ ;
+㣧>yìn|\ ;
+㣥>zhì|\ ;
+㣞>duó|\ ;
+㣓>càn|\ ;
+㣍>tái|\ ;
+㣅>zàn|\ ;
+㣁>bèi|\ ;
+㢼>biè|\ ;
+㢻>wĕi|\ ;
+㢵>shè|\ ;
+㢲>xùn|\ ;
+㢯>mín|\ ;
+㢮>chí|\ ;
+㢨>hàn|\ ;
+㢛>yàn|\ ;
+㢙>qín|\ ;
+㢓>yăo|\ ;
+㢒>chá|\ ;
+㢑>tuí|\ ;
+㢏>tóu|\ ;
+㢎>chà|\ ;
+㢋>chĭ|\ ;
+㢉>chá|\ ;
+㢈>tuí|\ ;
+㢄>dòu|\ ;
+㢂>yăn|\ ;
+㢁>chĭ|\ ;
+㡿>chì|\ ;
+㡺>dàn|\ ;
+㡸>zhă|\ ;
+㡷>bĕn|\ ;
+㡱>jiŭ|\ ;
+㡪>nié|\ ;
+㡥>yĭn|\ ;
+㡢>màn|\ ;
+㡡>chú|\ ;
+㡞>lĕi|\ ;
+㡜>xuĕ|\ ;
+㡏>tóu|\ ;
+㡌>mào|\ ;
+㡊>qià|\ ;
+㡈>mén|\ ;
+㡅>nuŏ|\ ;
+㡄>sŭn|\ ;
+㡁>kăi|\ ;
+㠹>jiè|\ ;
+㠶>fán|\ ;
+㠴>rèn|\ ;
+㠥>lv̀|\ ;
+㠣>lài|\ ;
+㠢>huà|\ ;
+㠚>duì|\ ;
+㠙>háo|\ ;
+㠕>wĕi|\ ;
+㠔>bài|\ ;
+㠑>zuì|\ ;
+㠏>huá|\ ;
+㠎>jjí|\ ;
+㠈>rùn|\ ;
+㠇>jiù|\ ;
+㠀>dăo|\ ;
+㟺>lóu|\ ;
+㟹>láo|\ ;
+㟲>jué|\ ;
+㟱>yăo|\ ;
+㟭>mín|\ ;
+㟬>shŭ|\ ;
+㟪>wĕi|\ ;
+㟩>mín|\ ;
+㟦>yùn|\ ;
+㟝>péi|\ ;
+㟛>zàn|\ ;
+㟙>lăo|\ ;
+㟔>hán|\ ;
+㟏>hán|\ ;
+㟎>tuŏ|\ ;
+㟋>duì|\ ;
+㟉>láo|\ ;
+㟈>qiú|\ ;
+㟇>cuó|\ ;
+㟆>huá|\ ;
+㟂>chĭ|\ ;
+㞿>chì|\ ;
+㞽>xuè|\ ;
+㞻>hào|\ ;
+㞸>suì|\ ;
+㞶>mĭn|\ ;
+㞴>chí|\ ;
+㞳>dŏu|\ ;
+㞯>jié|\ ;
+㞭>dài|\ ;
+㞬>qìn|\ ;
+㞪>náo|\ ;
+㞩>lán|\ ;
+㞨>zăi|\ ;
+㞧>huì|\ ;
+㞥>cén|\ ;
+㞤>yín|\ ;
+㞠>láo|\ ;
+㞘>tún|\ ;
+㞗>qiú|\ ;
+㞕>xiè|\ ;
+㞑>wĕi|\ ;
+㞏>zhé|\ ;
+㞌>yùn|\ ;
+㞇>wĕi|\ ;
+㞅>guŏ|\ ;
+㞂>tuĭ|\ ;
+㞁>yào|\ ;
+㝾>zuŏ|\ ;
+㝻>jĭn|\ ;
+㝹>nóu|\ ;
+㝴>wán|\ ;
+㝲>qĭn|\ ;
+㝮>cuì|\ ;
+㝧>wĕn|\ ;
+㝦>jùn|\ ;
+㝤>gòu|\ ;
+㝡>zuì|\ ;
+㝟>máo|\ ;
+㝝>lín|\ ;
+㝙>yín|\ ;
+㝔>yào|\ ;
+㝏>jiè|\ ;
+㝍>xiĕ|\ ;
+㝌>jié|\ ;
+㝉>zhù|\ ;
+㝅>gòu|\ ;
+㝃>fàn|\ ;
+㝂>zhì|\ ;
+㝁>xún|\ ;
+㝀>hào|\ ;
+㜾>hái|\ ;
+㜼>zhí|\ ;
+㜺>zàn|\ ;
+㜸>niè|\ ;
+㜶>wăn|\ ;
+㜰>yuè|\ ;
+㜮>làn|\ ;
+㜧>yuè|\ ;
+㜦>hàn|\ ;
+㜥>mái|\ ;
+㜣>rán|\ ;
+㜛>nèn|\ ;
+㜗>căn|\ ;
+㜖>cáo|\ ;
+㜐>shù|\ ;
+㜏>yún|\ ;
+㜌>gòu|\ ;
+㜇>huì|\ ;
+㜄>xún|\ ;
+㛿>zhì|\ ;
+㛼>shà|\ ;
+㛻>kuĭ|\ ;
+㛸>shù|\ ;
+㛴>năo|\ ;
+㛳>chà|\ ;
+㛱>ruì|\ ;
+㛮>săo|\ ;
+㛪>yàn|\ ;
+㛧>măn|\ ;
+㛦>lăn|\ ;
+㛝>bèi|\ ;
+㛜>yóu|\ ;
+㛛>xìn|\ ;
+㛙>qiè|\ ;
+㛗>zuò|\ ;
+㛒>dòu|\ ;
+㛑>càn|\ ;
+㛐>sŏu|\ ;
+㛍>qiè|\ ;
+㛊>duŏ|\ ;
+㛆>duŏ|\ ;
+㛃>jié|\ ;
+㛂>nuŏ|\ ;
+㚿>páo|\ ;
+㚺>yùn|\ ;
+㚹>măo|\ ;
+㚯>xín|\ ;
+㚭>yóu|\ ;
+㚫>shà|\ ;
+㚪>hào|\ ;
+㚩>răn|\ ;
+㚧>yăn|\ ;
+㚝>kuí|\ ;
+㚘>bàn|\ ;
+㚗>qié|\ ;
+㚖>găo|\ ;
+㚔>niè|\ ;
+㚓>lái|\ ;
+㚐>tào|\ ;
+㚏>găo|\ ;
+㚍>guó|\ ;
+㚌>huà|\ ;
+㚃>yún|\ ;
+㙼>lĕi|\ ;
+㙺>guì|\ ;
+㙸>bào|\ ;
+㙷>zhí|\ ;
+㙵>tái|\ ;
+㙳>hăn|\ ;
+㙱>hào|\ ;
+㙰>xiè|\ ;
+㙬>yín|\ ;
+㙥>gŭn|\ ;
+㙤>xià|\ ;
+㙢>mán|\ ;
+㙞>niè|\ ;
+㙝>xié|\ ;
+㙜>chí|\ ;
+㙔>hán|\ ;
+㙓>kuí|\ ;
+㙐>duŏ|\ ;
+㙈>hán|\ ;
+㙇>chù|\ ;
+㙅>băo|\ ;
+㙂>duì|\ ;
+㙀>liù|\ ;
+㘿>niè|\ ;
+㘶>jié|\ ;
+㘴>zuò|\ ;
+㘪>hào|\ ;
+㘨>nèi|\ ;
+㘦>qín|\ ;
+㘥>yóu|\ ;
+㘡>xiá|\ ;
+㘞>huò|\ ;
+㘜>chĭ|\ ;
+㘚>hăn|\ ;
+㘙>yán|\ ;
+㘖>yán|\ ;
+㘕>hăn|\ ;
+㘔>căn|\ ;
+㘓>lán|\ ;
+㘐>pào|\ ;
+㘎>hăn|\ ;
+㘉>zhì|\ ;
+㘆>tái|\ ;
+㘀>zuò|\ ;
+㗿>xià|\ ;
+㗷>săi|\ ;
+㗴>yán|\ ;
+㗲>huò|\ ;
+㗰>chù|\ ;
+㗫>qiè|\ ;
+㗧>zhì|\ ;
+㗦>láo|\ ;
+㗥>kuò|\ ;
+㗜>xiù|\ ;
+㗗>băi|\ ;
+㗖>dàn|\ ;
+㗕>gòu|\ ;
+㗑>bài|\ ;
+㗌>zhì|\ ;
+㗋>hóu|\ ;
+㗈>màn|\ ;
+㗇>xiá|\ ;
+㗄>mán|\ ;
+㗃>wĕn|\ ;
+㖿>xié|\ ;
+㖼>duŏ|\ ;
+㖻>róu|\ ;
+㖹>fèn|\ ;
+㖸>xué|\ ;
+㖷>shí|\ ;
+㖮>lún|\ ;
+㖪>guó|\ ;
+㖩>sŏu|\ ;
+㖧>wĕn|\ ;
+㖤>hán|\ ;
+㖣>tòu|\ ;
+㖗>yín|\ ;
+㖖>niè|\ ;
+㖔>tŭn|\ ;
+㖑>xiè|\ ;
+㖐>wĕi|\ ;
+㖏>nèi|\ ;
+㖃>hŏu|\ ;
+㖁>lìn|\ ;
+㕻>pŏu|\ ;
+㕺>háo|\ ;
+㕷>huà|\ ;
+㕶>ng̀|\ ;
+㕵>guó|\ ;
+㕲>huá|\ ;
+㕱>yóu|\ ;
+㕯>nèi|\ ;
+㕪>dăn|\ ;
+㕨>fàn|\ ;
+㕦>huà|\ ;
+㕤>qiú|\ ;
+㕣>yăn|\ ;
+㕢>gài|\ ;
+㕟>kuì|\ ;
+㕜>shĭ|\ ;
+㕙>jùn|\ ;
+㕗>yòu|\ ;
+㕒>wéi|\ ;
+㕑>chú|\ ;
+㕐>xiĕ|\ ;
+㕏>chú|\ ;
+㕈>hòu|\ ;
+㕅>jiă|\ ;
+㕄>zhì|\ ;
+㕂>yín|\ ;
+㕁>què|\ ;
+㔿>zòu|\ ;
+㔾>jié|\ ;
+㔽>yào|\ ;
+㔼>sŭn|\ ;
+㔺>shì|\ ;
+㔷>lòu|\ ;
+㔳>guĭ|\ ;
+㔮>nuó|\ ;
+㔭>chè|\ ;
+㔨>bèi|\ ;
+㔧>lyù|\ ;
+㔣>léi|\ ;
+㔢>jué|\ ;
+㔚>kŏu|\ ;
+㔘>chù|\ ;
+㔗>fèi|\ ;
+㔑>chì|\ ;
+㔎>xiè|\ ;
+㔍>duŏ|\ ;
+㔊>dăn|\ ;
+㔉>zhú|\ ;
+㔃>jué|\ ;
+㔂>lín|\ ;
+㔀>lvè|\ ;
+㓾>chí|\ ;
+㓼>chì|\ ;
+㓹>ruì|\ ;
+㓸>jué|\ ;
+㓶>qiè|\ ;
+㓴>jùn|\ ;
+㓱>tóu|\ ;
+㓰>huà|\ ;
+㓧>yăn|\ ;
+㓤>jié|\ ;
+㓣>qià|\ ;
+㓢>luò|\ ;
+㓜>yòu|\ ;
+㓗>jié|\ ;
+㓔>xiè|\ ;
+㓓>nán|\ ;
+㓈>bèi|\ ;
+㓂>kòu|\ ;
+㒾>shì|\ ;
+㒼>mán|\ ;
+㒻>mào|\ ;
+㒸>suì|\ ;
+㒷>guă|\ ;
+㒵>mào|\ ;
+㒲>cái|\ ;
+㒩>luŏ|\ ;
+㒦>lĕi|\ ;
+㒤>shè|\ ;
+㒡>yóu|\ ;
+㒠>xiè|\ ;
+㒞>jùn|\ ;
+㒝>miè|\ ;
+㒚>wĕn|\ ;
+㒗>tái|\ ;
+㒔>shŭ|\ ;
+㒑>huì|\ ;
+㒍>léi|\ ;
+㒈>hàn|\ ;
+㒆>chì|\ ;
+㒀>zhă|\ ;
+㑺>jùn|\ ;
+㑹>huì|\ ;
+㑷>tài|\ ;
+㑵>hàn|\ ;
+㑱>răo|\ ;
+㑰>huì|\ ;
+㑮>hún|\ ;
+㑩>luó|\ ;
+㑣>lán|\ ;
+㑚>nuó|\ ;
+㑙>dié|\ ;
+㑘>jiè|\ ;
+㑏>zhù|\ ;
+㑎>năo|\ ;
+㑍>lĕi|\ ;
+㑅>zuò|\ ;
+㐲>dài|\ ;
+㐰>xìn|\ ;
+㐭>lĭn|\ ;
+㐬>liú|\ ;
+㐤>qiú|\ ;
+㐡>nuò|\ ;
+㐆>yĭn|\ ;
+𦉆>chá|\ ;
+𣎴>dŭn|\ ;
+𡽱>jiè|\ ;
+𢦏>zai|\ ;
+𠀍>shì|\ ;
+𠀉>qiu|\ ;
+𠀅>hài|\ ;
+的>dē|\ ;
+一>yi|\ ;
+不>bù|\ ;
+了>lē|\ ;
+我>wŏ|\ ;
+他>ta|\ ;
+大>dà|\ ;
+个>gè|\ ;
+子>zĭ|\ ;
+和>hé|\ ;
+你>nĭ|\ ;
+地>dē|\ ;
+也>yĕ|\ ;
+得>dé|\ ;
+那>nă|\ ;
+以>yĭ|\ ;
+自>zì|\ ;
+去>qù|\ ;
+可>kĕ|\ ;
+她>ta|\ ;
+里>lĭ|\ ;
+么>mā|\ ;
+而>ér|\ ;
+日>rì|\ ;
+于>yú|\ ;
+起>qĭ|\ ;
+发>fa|\ ;
+无>wú|\ ;
+如>rú|\ ;
+已>yĭ|\ ;
+与>yú|\ ;
+意>yì|\ ;
+把>bă|\ ;
+法>fă|\ ;
+此>cĭ|\ ;
+二>èr|\ ;
+理>lĭ|\ ;
+其>qí|\ ;
+己>jĭ|\ ;
+儿>ér|\ ;
+部>bù|\ ;
+力>lì|\ ;
+机>ji|\ ;
+几>ji|\ ;
+业>yè|\ ;
+打>dá|\ ;
+四>sì|\ ;
+第>dì|\ ;
+次>cì|\ ;
+西>xi|\ ;
+气>qì|\ ;
+入>rù|\ ;
+五>wŭ|\ ;
+体>tĭ|\ ;
+比>bĭ|\ ;
+目>mù|\ ;
+立>lì|\ ;
+马>mă|\ ;
+数>cù|\ ;
+安>an|\ ;
+路>lù|\ ;
+期>qi|\ ;
+死>sĭ|\ ;
+提>di|\ ;
+何>hé|\ ;
+合>gĕ|\ ;
+系>xì|\ ;
+计>jì|\ ;
+司>si|\ ;
+利>lì|\ ;
+及>jí|\ ;
+务>wù|\ ;
+各>gè|\ ;
+物>wù|\ ;
+记>jì|\ ;
+战>zé|\ ;
+它>ta|\ ;
+许>hŭ|\ ;
+八>ba|\ ;
+特>tè|\ ;
+服>fú|\ ;
+题>dì|\ ;
+度>dù|\ ;
+色>sè|\ ;
+字>zì|\ ;
+爱>ài|\ ;
+义>wù|\ ;
+科>ke|\ ;
+思>si|\ ;
+夫>fu|\ ;
+资>zi|\ ;
+达>dá|\ ;
+武>wŭ|\ ;
+七>qi|\ ;
+必>bì|\ ;
+父>fù|\ ;
+步>bù|\ ;
+革>gé|\ ;
+区>qu|\ ;
+即>jí|\ ;
+技>jì|\ ;
+语>yŭ|\ ;
+基>ji|\ ;
+李>lĭ|\ ;
+息>xi|\ ;
+呢>nē|\ ;
+极>jí|\ ;
+德>dé|\ ;
+取>qŭ|\ ;
+历>lì|\ ;
+广>an|\ ;
+议>yì|\ ;
+际>jì|\ ;
+则>zé|\ ;
+据>ju|\ ;
+拿>ná|\ ;
+似>sì|\ ;
+斯>si|\ ;
+弟>dì|\ ;
+读>dú|\ ;
+组>zŭ|\ ;
+落>là|\ ;
+济>jì|\ ;
+喜>xĭ|\ ;
+离>lí|\ ;
+集>jí|\ ;
+府>fŭ|\ ;
+拉>la|\ ;
+格>gé|\ ;
+布>bù|\ ;
+怕>pà|\ ;
+母>mŭ|\ ;
+局>jú|\ ;
+乐>lè|\ ;
+级>jí|\ ;
+克>kè|\ ;
+哪>nă|\ ;
+乎>hu|\ ;
+举>jŭ|\ ;
+客>kè|\ ;
+苦>kŭ|\ ;
+足>zú|\ ;
+尔>ĕr|\ ;
+热>rè|\ ;
+约>jĭ|\ ;
+哥>ge|\ ;
+吗>mā|\ ;
+古>gŭ|\ ;
+汉>yì|\ ;
+突>tu|\ ;
+吧>ba|\ ;
+亚>ya|\ ;
+复>fù|\ ;
+刻>kè|\ ;
+夜>yè|\ ;
+底>dē|\ ;
+故>gù|\ ;
+妈>ma|\ ;
+句>jù|\ ;
+衣>yi|\ ;
+陆>lù|\ ;
+器>qì|\ ;
+破>pò|\ ;
+具>jù|\ ;
+居>ju|\ ;
+批>pi|\ ;
+奇>ji|\ ;
+易>yì|\ ;
+急>jí|\ ;
+低>di|\ ;
+需>xu|\ ;
+河>hé|\ ;
+族>zú|\ ;
+胡>hú|\ ;
+企>qĭ|\ ;
+纪>jì|\ ;
+苏>dì|\ ;
+医>yi|\ ;
+答>da|\ ;
+土>tŭ|\ ;
+击>jí|\ ;
+育>yù|\ ;
+续>xù|\ ;
+独>dú|\ ;
+户>hù|\ ;
+喝>he|\ ;
+责>zé|\ ;
+余>yú|\ ;
+希>xi|\ ;
+图>tú|\ ;
+咱>zá|\ ;
+席>xí|\ ;
+错>cù|\ ;
+暗>àn|\ ;
+须>xu|\ ;
+案>àn|\ ;
+呼>hu|\ ;
+细>xì|\ ;
+诉>sù|\ ;
+笔>bĭ|\ ;
+福>fú|\ ;
+姑>gu|\ ;
+既>jì|\ ;
+巴>ba|\ ;
+木>mù|\ ;
+副>fù|\ ;
+辑>jí|\ ;
+米>mĭ|\ ;
+歌>ge|\ ;
+速>sù|\ ;
+忽>hu|\ ;
+敌>dí|\ ;
+顾>gù|\ ;
+丽>lì|\ ;
+依>yi|\ ;
+按>àn|\ ;
+激>ji|\ ;
+异>yì|\ ;
+负>fù|\ ;
+模>mó|\ ;
+露>lù|\ ;
+阵>ài|\ ;
+密>mì|\ ;
+习>xí|\ ;
+毒>dú|\ ;
+波>bo|\ ;
+屋>wu|\ ;
+寄>jì|\ ;
+帝>dì|\ ;
+丝>si|\ ;
+湖>hú|\ ;
+妇>fù|\ ;
+伯>bó|\ ;
+尼>ní|\ ;
+皮>pí|\ ;
+祖>zŭ|\ ;
+哈>ha|\ ;
+礼>lĭ|\ ;
+压>ya|\ ;
+婆>pó|\ ;
+富>fù|\ ;
+录>lù|\ ;
+遇>yù|\ ;
+艺>yì|\ ;
+普>pŭ|\ ;
+素>sù|\ ;
+继>jì|\ ;
+雨>yŭ|\ ;
+佛>fó|\ ;
+讨>nà|\ ;
+吴>wú|\ ;
+曲>qu|\ ;
+玉>yù|\ ;
+协>cù|\ ;
+齐>qí|\ ;
+疑>yí|\ ;
+策>cè|\ ;
+例>lì|\ ;
+股>gŭ|\ ;
+剧>jù|\ ;
+怒>nù|\ ;
+啦>la|\ ;
+莫>mò|\ ;
+恩>en|\ ;
+益>yì|\ ;
+哭>ku|\ ;
+罢>bà|\ ;
+午>wŭ|\ ;
+卡>kă|\ ;
+博>bó|\ ;
+毕>bì|\ ;
+欧>ou|\ ;
+妻>qi|\ ;
+虚>xu|\ ;
+预>po|\ ;
+刺>cì|\ ;
+鱼>yú|\ ;
+耳>ĕr|\ ;
+野>yĕ|\ ;
+默>mò|\ ;
+徒>tú|\ ;
+移>yí|\ ;
+爸>bà|\ ;
+狐>hú|\ ;
+互>hù|\ ;
+骂>mà|\ ;
+秘>mì|\ ;
+词>cí|\ ;
+骨>gú|\ ;
+欲>yù|\ ;
+私>si|\ ;
+舞>wŭ|\ ;
+巨>jù|\ ;
+吸>xi|\ ;
+圣>ku|\ ;
+避>bì|\ ;
+忌>jì|\ ;
+域>yù|\ ;
+呀>yā|\ ;
+付>fù|\ ;
+库>kù|\ ;
+绿>lǜ|\ ;
+徐>xú|\ ;
+误>wù|\ ;
+纳>nà|\ ;
+迷>mí|\ ;
+鲁>lŭ|\ ;
+戏>xì|\ ;
+趣>qù|\ ;
+课>kè|\ ;
+麻>má|\ ;
+洗>xĭ|\ ;
+迫>pò|\ ;
+汽>qì|\ ;
+鼓>gŭ|\ ;
+岸>àn|\ ;
+测>cè|\ ;
+途>tú|\ ;
+耶>ye|\ ;
+摸>mo|\ ;
+择>zé|\ ;
+誉>yù|\ ;
+仪>yí|\ ;
+旗>qí|\ ;
+奥>ào|\ ;
+握>wò|\ ;
+牙>yá|\ ;
+虑>lǜ|\ ;
+核>hé|\ ;
+补>bŭ|\ ;
+雅>yă|\ ;
+吉>jí|\ ;
+亦>yì|\ ;
+谷>gŭ|\ ;
+厉>lì|\ ;
+序>xù|\ ;
+附>fù|\ ;
+鸡>ji|\ ;
+忆>yì|\ ;
+惜>xi|\ ;
+隔>gé|\ ;
+播>bo|\ ;
+麽>mā|\ ;
+棋>qí|\ ;
+臂>bì|\ ;
+替>tì|\ ;
+固>gù|\ ;
+虎>hŭ|\ ;
+季>jì|\ ;
+聚>jù|\ ;
+译>yì|\ ;
+伊>yi|\ ;
+末>mò|\ ;
+弃>qì|\ ;
+糊>hú|\ ;
+抵>dĭ|\ ;
+遥>dí|\ ;
+摩>mó|\ ;
+币>bì|\ ;
+启>qĭ|\ ;
+码>mă|\ ;
+俗>sú|\ ;
+督>du|\ ;
+颇>pŏ|\ ;
+贸>bì|\ ;
+孤>gu|\ ;
+予>yú|\ ;
+紫>zĭ|\ ;
+侧>cè|\ ;
+拔>bá|\ ;
+幕>mù|\ ;
+壁>bì|\ ;
+闭>bì|\ ;
+寺>sì|\ ;
+逼>bi|\ ;
+吓>hè|\ ;
+骑>qí|\ ;
+促>cù|\ ;
+宜>yí|\ ;
+嘛>mā|\ ;
+幅>fú|\ ;
+污>wu|\ ;
+扑>pu|\ ;
+萨>sà|\ ;
+狱>yù|\ ;
+岂>qĭ|\ ;
+析>xi|\ ;
+磨>mó|\ ;
+伏>fú|\ ;
+辞>cí|\ ;
+泥>ní|\ ;
+鼻>bí|\ ;
+慕>mù|\ ;
+宿>sù|\ ;
+粗>cu|\ ;
+乌>wu|\ ;
+愈>yù|\ ;
+铺>pu|\ ;
+疾>jí|\ ;
+踏>tà|\ ;
+伍>wŭ|\ ;
+籍>jí|\ ;
+努>nŭ|\ ;
+彼>bĭ|\ ;
+悉>xi|\ ;
+扎>za|\ ;
+薄>bó|\ ;
+距>jù|\ ;
+挤>jĭ|\ ;
+吐>tŭ|\ ;
+洁>jí|\ ;
+阻>zŭ|\ ;
+颗>ke|\ ;
+爬>pá|\ ;
+偶>ŏu|\ ;
+页>yè|\ ;
+坡>po|\ ;
+勒>lè|\ ;
+塔>tă|\ ;
+拒>jù|\ ;
+撒>sa|\ ;
+於>yú|\ ;
+绪>xù|\ ;
+肚>dŭ|\ ;
+乏>fá|\ ;
+滑>gŭ|\ ;
+寂>jì|\ ;
+扶>fú|\ ;
+捕>bŭ|\ ;
+魔>mó|\ ;
+墓>mù|\ ;
+欺>qi|\ ;
+悟>wù|\ ;
+赫>hè|\ ;
+屈>qu|\ ;
+辱>rŭ|\ ;
+赴>fù|\ ;
+递>dì|\ ;
+涂>tú|\ ;
+割>ge|\ ;
+励>lì|\ ;
+宇>yŭ|\ ;
+搭>da|\ ;
+浮>fú|\ ;
+符>fú|\ ;
+肃>sù|\ ;
+奴>nú|\ ;
+姊>zĭ|\ ;
+租>zu|\ ;
+椅>yĭ|\ ;
+腐>fŭ|\ ;
+瓦>wă|\ ;
+擦>ca|\ ;
+辣>là|\ ;
+渡>dù|\ ;
+荷>hé|\ ;
+娃>wá|\ ;
+罚>fá|\ ;
+姆>mŭ|\ ;
+挨>ai|\ ;
+慈>cí|\ ;
+澳>ào|\ ;
+驱>qu|\ ;
+窝>wo|\ ;
+裤>kù|\ ;
+估>gu|\ ;
+杜>dù|\ ;
+玛>mă|\ ;
+柯>ke|\ ;
+哀>ai|\ ;
+腹>fù|\ ;
+勃>bó|\ ;
+埃>ai|\ ;
+稀>xi|\ ;
+厌>ya|\ ;
+趋>cù|\ ;
+傲>ào|\ ;
+拨>bo|\ ;
+踢>ti|\ ;
+姿>zi|\ ;
+黎>lí|\ ;
+祭>jì|\ ;
+滴>di|\ ;
+袭>xí|\ ;
+屠>tú|\ ;
+咐>fù|\ ;
+惧>jù|\ ;
+漠>mò|\ ;
+喇>la|\ ;
+仔>zi|\ ;
+墨>mò|\ ;
+俱>ju|\ ;
+屁>pì|\ ;
+匹>pi|\ ;
+拟>nĭ|\ ;
+滋>zi|\ ;
+贺>hè|\ ;
+抚>fŭ|\ ;
+挖>wa|\ ;
+册>cè|\ ;
+熙>xi|\ ;
+碧>bì|\ ;
+盒>hé|\ ;
+谊>yí|\ ;
+卧>wò|\ ;
+翼>yì|\ ;
+洒>să|\ ;
+谱>pŭ|\ ;
+阁>gé|\ ;
+覆>fù|\ ;
+抹>mŏ|\ ;
+卢>bù|\ ;
+碍>ài|\ ;
+狄>dí|\ ;
+押>ya|\ ;
+雾>wù|\ ;
+戚>qi|\ ;
+御>yù|\ ;
+酷>kù|\ ;
+艾>ài|\ ;
+唉>ai|\ ;
+携>xi|\ ;
+穆>mù|\ ;
+郁>yù|\ ;
+傅>fù|\ ;
+稣>su|\ ;
+牧>mù|\ ;
+儒>rú|\ ;
+疲>pí|\ ;
+赌>dŭ|\ ;
+咨>zi|\ ;
+嘻>xi|\ ;
+炉>lú|\ ;
+迪>dí|\ ;
+披>pi|\ ;
+剥>bo|\ ;
+役>yì|\ ;
+逆>nì|\ ;
+矮>ăi|\ ;
+夕>xi|\ ;
+液>yè|\ ;
+仆>pu|\ ;
+弥>mí|\ ;
+渴>kĕ|\ ;
+梯>ti|\ ;
+蒂>dì|\ ;
+娶>qŭ|\ ;
+弗>fú|\ ;
+璃>lí|\ ;
+肤>fu|\ ;
+鹿>lù|\ ;
+拓>tà|\ ;
+哩>li|\ ;
+枯>ku|\ ;
+塑>sù|\ ;
+豫>yù|\ ;
+抑>yì|\ ;
+艳>bó|\ ;
+玻>bo|\ ;
+砸>zá|\ ;
+葛>gé|\ ;
+矩>jŭ|\ ;
+脖>bó|\ ;
+脾>pí|\ ;
+赐>sì|\ ;
+蓄>xù|\ ;
+鹤>hè|\ ;
+辟>bì|\ ;
+渔>yú|\ ;
+霸>bà|\ ;
+哑>yă|\ ;
+浦>pŭ|\ ;
+牺>xi|\ ;
+吁>xu|\ ;
+锡>xí|\ ;
+芙>fú|\ ;
+哟>yō|\ ;
+惹>rĕ|\ ;
+契>qì|\ ;
+愚>yú|\ ;
+姨>yí|\ ;
+陌>mò|\ ;
+猎>xí|\ ;
+饥>ji|\ ;
+凄>qi|\ ;
+膝>xi|\ ;
+劈>pi|\ ;
+涯>yá|\ ;
+戈>ge|\ ;
+堵>dŭ|\ ;
+雇>gù|\ ;
+泊>bó|\ ;
+撕>si|\ ;
+叙>xù|\ ;
+棵>ke|\ ;
+朴>pò|\ ;
+溪>qi|\ ;
+莉>lì|\ ;
+磕>ke|\ ;
+昔>xi|\ ;
+磁>cí|\ ;
+俯>fŭ|\ ;
+拂>fú|\ ;
+俺>ăn|\ ;
+帕>pà|\ ;
+嗯>en|\ ;
+泼>po|\ ;
+妓>jì|\ ;
+菩>pú|\ ;
+厕>cè|\ ;
+俘>fú|\ ;
+毅>yì|\ ;
+丫>ya|\ ;
+粒>lì|\ ;
+秃>tu|\ ;
+腊>là|\ ;
+倪>ní|\ ;
+瑟>sè|\ ;
+鸭>ya|\ ;
+蜜>mì|\ ;
+媳>xí|\ ;
+歧>qí|\ ;
+亩>mŭ|\ ;
+寞>mò|\ ;
+搁>ge|\ ;
+俞>yú|\ ;
+伐>fá|\ ;
+漆>qi|\ ;
+怖>bù|\ ;
+吾>wú|\ ;
+啸>ka|\ ;
+肆>sì|\ ;
+泣>qì|\ ;
+赋>fù|\ ;
+熬>ao|\ ;
+愉>yú|\ ;
+辜>gu|\ ;
+肌>ji|\ ;
+羽>yŭ|\ ;
+毙>bì|\ ;
+拘>ju|\ ;
+哇>wa|\ ;
+逸>yì|\ ;
+卜>bō|\ ;
+寓>yù|\ ;
+驳>bó|\ ;
+浴>yù|\ ;
+咕>gu|\ ;
+搏>bó|\ ;
+渠>qú|\ ;
+夷>yí|\ ;
+沪>hù|\ ;
+魄>pò|\ ;
+晰>xi|\ ;
+裔>yì|\ ;
+倚>yĭ|\ ;
+塌>ta|\ ;
+裕>yù|\ ;
+乳>rŭ|\ ;
+勿>wù|\ ;
+睹>dŭ|\ ;
+讶>yà|\ ;
+咖>ka|\ ;
+娱>yú|\ ;
+鸦>ya|\ ;
+妮>ni|\ ;
+裸>kè|\ ;
+甫>fŭ|\ ;
+坝>bà|\ ;
+沐>mù|\ ;
+侮>wŭ|\ ;
+兀>wù|\ ;
+粞>xi|\ ;
+溢>yì|\ ;
+乞>qĭ|\ ;
+缚>fú|\ ;
+舆>yú|\ ;
+堤>di|\ ;
+蹄>tí|\ ;
+沫>mò|\ ;
+壶>hú|\ ;
+碌>lù|\ ;
+驴>lǘ|\ ;
+鄙>bĭ|\ ;
+壳>ké|\ ;
+芦>lú|\ ;
+胳>ge|\ ;
+矣>yĭ|\ ;
+脊>jĭ|\ ;
+辅>fŭ|\ ;
+膊>bó|\ ;
+垃>la|\ ;
+隶>lì|\ ;
+哎>ai|\ ;
+兔>tù|\ ;
+圾>jí|\ ;
+喻>yù|\ ;
+尬>gà|\ ;
+呐>nè|\ ;
+菊>jú|\ ;
+喀>ka|\ ;
+瓷>cí|\ ;
+蜡>là|\ ;
+剂>jì|\ ;
+庐>lú|\ ;
+奚>xi|\ ;
+葡>pú|\ ;
+蓦>mò|\ ;
+乙>yĭ|\ ;
+诵>ei|\ ;
+祁>qí|\ ;
+暮>mù|\ ;
+腻>nì|\ ;
+啤>pí|\ ;
+禾>hé|\ ;
+铸>pù|\ ;
+躯>qu|\ ;
+馀>yú|\ ;
+梨>lí|\ ;
+琪>qí|\ ;
+僻>pì|\ ;
+匕>bi|\ ;
+隙>xì|\ ;
+兹>zi|\ ;
+怡>yí|\ ;
+珂>ke|\ ;
+癌>ái|\ ;
+膜>mó|\ ;
+茨>cí|\ ;
+疫>yì|\ ;
+汝>rŭ|\ ;
+鞑>dá|\ ;
+窟>ku|\ ;
+笛>dí|\ ;
+蔽>bì|\ ;
+卒>cù|\ ;
+藉>jí|\ ;
+熄>xí|\ ;
+绮>qĭ|\ ;
+吏>lì|\ ;
+譬>pì|\ ;
+婿>xù|\ ;
+逾>yú|\ ;
+妒>dù|\ ;
+浇>ào|\ ;
+咪>mi|\ ;
+祈>qí|\ ;
+黯>àn|\ ;
+禹>yŭ|\ ;
+鞍>an|\ ;
+啪>pa|\ ;
+绽>lù|\ ;
+叭>ba|\ ;
+嘶>si|\ ;
+弊>bì|\ ;
+啼>tí|\ ;
+醋>cù|\ ;
+眯>mĭ|\ ;
+稽>ji|\ ;
+嘟>du|\ ;
+袜>wà|\ ;
+冶>yĕ|\ ;
+吱>zi|\ ;
+惕>tì|\ ;
+栗>lì|\ ;
+斧>fŭ|\ ;
+讥>ji|\ ;
+迄>qì|\ ;
+漓>lí|\ ;
+兮>xi|\ ;
+敷>fu|\ ;
+毓>yù|\ ;
+瑜>yú|\ ;
+梓>zĭ|\ ;
+敝>bì|\ ;
+袱>fú|\ ;
+赎>cì|\ ;
+虏>lŭ|\ ;
+剃>tì|\ ;
+鳌>áo|\ ;
+沃>wò|\ ;
+梧>wú|\ ;
+姬>ji|\ ;
+霓>ní|\ ;
+葫>hú|\ ;
+涕>tì|\ ;
+笃>dŭ|\ ;
+咋>zé|\ ;
+呕>ou|\ ;
+旭>xù|\ ;
+捂>wŭ|\ ;
+巫>wu|\ ;
+坞>wù|\ ;
+嫉>jí|\ ;
+禄>lù|\ ;
+嘘>xu|\ ;
+诬>wú|\ ;
+募>mù|\ ;
+垄>ao|\ ;
+芭>ba|\ ;
+叽>ji|\ ;
+趴>pa|\ ;
+漪>yi|\ ;
+疤>ba|\ ;
+蚁>yĭ|\ ;
+娅>yà|\ ;
+粟>sù|\ ;
+伺>cì|\ ;
+觑>qù|\ ;
+拎>jŭ|\ ;
+噜>lu|\ ;
+蒲>pú|\ ;
+泻>bo|\ ;
+凸>tu|\ ;
+嬉>xi|\ ;
+栖>qi|\ ;
+跋>bá|\ ;
+沮>jŭ|\ ;
+嘎>gá|\ ;
+咯>ge|\ ;
+扒>ba|\ ;
+圪>ge|\ ;
+驹>ju|\ ;
+暨>jì|\ ;
+絮>xù|\ ;
+蝴>hú|\ ;
+鸽>ge|\ ;
+凹>ao|\ ;
+惚>hu|\ ;
+渝>yú|\ ;
+靡>mí|\ ;
+揖>yi|\ ;
+殴>ou|\ ;
+嘀>dí|\ ;
+噗>pu|\ ;
+缉>qì|\ ;
+簇>cù|\ ;
+芽>yá|\ ;
+懊>ào|\ ;
+饲>sì|\ ;
+阀>fá|\ ;
+谕>yù|\ ;
+缔>dì|\ ;
+庇>bì|\ ;
+拇>mŭ|\ ;
+匿>nì|\ ;
+厘>lí|\ ;
+袄>ăo|\ ;
+蚂>mă|\ ;
+猬>hè|\ ;
+剔>ti|\ ;
+屿>yŭ|\ ;
+庵>an|\ ;
+俐>lì|\ ;
+拗>ăo|\ ;
+孜>zi|\ ;
+溯>sù|\ ;
+禧>xĭ|\ ;
+衙>yá|\ ;
+鞠>ju|\ ;
+冀>jì|\ ;
+晤>wù|\ ;
+奕>yì|\ ;
+屉>tì|\ ;
+拽>yè|\ ;
+诣>yì|\ ;
+祠>cí|\ ;
+簌>sù|\ ;
+棘>jí|\ ;
+掳>lŭ|\ ;
+狸>lí|\ ;
+苛>ke|\ ;
+簿>bù|\ ;
+屹>yì|\ ;
+砌>qì|\ ;
+衲>nà|\ ;
+洼>wa|\ ;
+榻>tà|\ ;
+虞>yú|\ ;
+蛙>wa|\ ;
+锯>jù|\ ;
+瞿>jù|\ ;
+唬>hŭ|\ ;
+脯>fŭ|\ ;
+诅>zŭ|\ ;
+牡>mŭ|\ ;
+嗒>tà|\ ;
+辐>fú|\ ;
+墟>xu|\ ;
+恤>xù|\ ;
+褥>rù|\ ;
+疙>ge|\ ;
+涡>wo|\ ;
+婢>bì|\ ;
+漉>lù|\ ;
+馍>mó|\ ;
+粤>yù|\ ;
+犁>lí|\ ;
+沂>yí|\ ;
+曳>yè|\ ;
+酥>su|\ ;
+颅>lú|\ ;
+钵>bo|\ ;
+蛤>gé|\ ;
+隘>ài|\ ;
+瘩>dá|\ ;
+戮>lù|\ ;
+渥>wò|\ ;
+蹋>tà|\ ;
+睦>mù|\ ;
+雌>cí|\ ;
+轧>gá|\ ;
+埔>pŭ|\ ;
+溺>nì|\ ;
+蝠>fú|\ ;
+噎>ye|\ ;
+芜>wú|\ ;
+羁>ji|\ ;
+咀>jŭ|\ ;
+阜>fù|\ ;
+靶>bă|\ ;
+呱>gu|\ ;
+弧>hú|\ ;
+腑>fŭ|\ ;
+谛>dì|\ ;
+炬>jù|\ ;
+噶>gá|\ ;
+蔼>ăi|\ ;
+舶>bó|\ ;
+渎>dú|\ ;
+痞>pĭ|\ ;
+捺>nà|\ ;
+毋>wú|\ ;
+簸>bŏ|\ ;
+戊>wù|\ ;
+茹>rú|\ ;
+蛐>qu|\ ;
+陛>bì|\ ;
+璧>bì|\ ;
+唔>wú|\ ;
+篱>lí|\ ;
+迂>yu|\ ;
+腋>yè|\ ;
+崎>qí|\ ;
+恪>kè|\ ;
+轶>yì|\ ;
+琶>pá|\ ;
+剌>lá|\ ;
+赂>lù|\ ;
+敖>áo|\ ;
+琵>pí|\ ;
+仄>zè|\ ;
+涤>dí|\ ;
+邬>wu|\ ;
+坷>kĕ|\ ;
+麓>lù|\ ;
+褐>hé|\ ;
+嚓>ca|\ ;
+绎>yì|\ ;
+哺>bŭ|\ ;
+卅>sà|\ ;
+渍>zì|\ ;
+戟>jĭ|\ ;
+跛>bŏ|\ ;
+蟆>má|\ ;
+邑>yì|\ ;
+璐>lù|\ ;
+忒>tè|\ ;
+隅>yú|\ ;
+埠>bù|\ ;
+笈>jí|\ ;
+栩>xŭ|\ ;
+悸>jì|\ ;
+汲>jí|\ ;
+睨>nì|\ ;
+淤>yu|\ ;
+箍>gu|\ ;
+嗣>sì|\ ;
+挎>ku|\ ;
+踞>jù|\ ;
+恻>cè|\ ;
+唷>yo|\ ;
+蠕>rú|\ ;
+霹>pi|\ ;
+蹊>xi|\ ;
+璞>pú|\ ;
+笠>lì|\ ;
+唧>ji|\ ;
+祺>qí|\ ;
+钠>nà|\ ;
+菇>gu|\ ;
+鸥>ou|\ ;
+雳>lì|\ ;
+榆>yú|\ ;
+摹>mó|\ ;
+沓>tà|\ ;
+猝>cù|\ ;
+弩>nŭ|\ ;
+曝>pù|\ ;
+伎>jì|\ ;
+犀>xi|\ ;
+曦>xi|\ ;
+蛊>gŭ|\ ;
+驸>fù|\ ;
+癖>pĭ|\ ;
+讷>nè|\ ;
+渤>bó|\ ;
+辘>lù|\ ;
+琦>qí|\ ;
+藕>ŏu|\ ;
+嗷>áo|\ ;
+跻>ji|\ ;
+哒>da|\ ;
+戌>xu|\ ;
+釜>fŭ|\ ;
+荼>tú|\ ;
+狰>xi|\ ;
+畸>ji|\ ;
+羲>xi|\ ;
+暧>ài|\ ;
+翌>yì|\ ;
+蜈>wú|\ ;
+弈>yì|\ ;
+贻>yí|\ ;
+祀>sì|\ ;
+瞌>ke|\ ;
+孚>fú|\ ;
+亟>jí|\ ;
+愫>sù|\ ;
+谙>an|\ ;
+聿>yù|\ ;
+熹>xi|\ ;
+嚅>rú|\ ;
+镀>dù|\ ;
+卤>lŭ|\ ;
+皑>ái|\ ;
+娣>dì|\ ;
+咔>kă|\ ;
+筏>fá|\ ;
+癞>là|\ ;
+飒>sà|\ ;
+樨>xi|\ ;
+滤>lǜ|\ ;
+蹙>cù|\ ;
+胥>xu|\ ;
+伫>bà|\ ;
+籽>zĭ|\ ;
+徙>xĭ|\ ;
+唏>xi|\ ;
+荔>lì|\ ;
+犊>dú|\ ;
+煦>xŭ|\ ;
+汩>gŭ|\ ;
+毗>pí|\ ;
+坳>ào|\ ;
+脐>ji|\ ;
+圃>pŭ|\ ;
+熠>yì|\ ;
+鲤>lĭ|\ ;
+帛>bó|\ ;
+骷>ku|\ ;
+髻>jì|\ ;
+蠡>lí|\ ;
+丕>pi|\ ;
+坯>pi|\ ;
+妩>wŭ|\ ;
+嫡>dí|\ ;
+沽>gu|\ ;
+驭>yù|\ ;
+斡>wò|\ ;
+啬>sè|\ ;
+芋>yù|\ ;
+蘑>mó|\ ;
+忑>tè|\ ;
+珥>ĕr|\ ;
+喏>rĕ|\ ;
+咂>za|\ ;
+邸>dĭ|\ ;
+掬>jú|\ ;
+笆>ba|\ ;
+倭>wo|\ ;
+虬>jĭ|\ ;
+壑>hè|\ ;
+臆>yì|\ ;
+孺>rú|\ ;
+馥>fù|\ ;
+咿>yi|\ ;
+俾>bĭ|\ ;
+泌>bì|\ ;
+霭>ăi|\ ;
+骥>gu|\ ;
+昵>nì|\ ;
+驿>yì|\ ;
+嵇>ji|\ ;
+阂>hé|\ ;
+骼>gé|\ ;
+牯>gŭ|\ ;
+鄱>pó|\ ;
+沏>qi|\ ;
+稷>jì|\ ;
+劾>hé|\ ;
+玑>ji|\ ;
+俟>sì|\ ;
+峪>yù|\ ;
+嚏>tì|\ ;
+砾>lì|\ ;
+箕>ji|\ ;
+弼>bì|\ ;
+耙>bà|\ ;
+锢>gù|\ ;
+岜>ba|\ ;
+唰>jí|\ ;
+耷>da|\ ;
+菠>bo|\ ;
+噼>pi|\ ;
+诃>he|\ ;
+孵>fu|\ ;
+饵>ĕr|\ ;
+濡>rú|\ ;
+禺>yú|\ ;
+蝌>ke|\ ;
+涸>hé|\ ;
+痹>bì|\ ;
+氨>an|\ ;
+扈>hù|\ ;
+淅>xi|\ ;
+阖>gé|\ ;
+巳>sì|\ ;
+媲>pì|\ ;
+闾>lǘ|\ ;
+泗>sì|\ ;
+驷>sì|\ ;
+锹>lì|\ ;
+怩>ní|\ ;
+彝>yí|\ ;
+掖>ye|\ ;
+淇>qí|\ ;
+诋>dĭ|\ ;
+岖>qu|\ ;
+憩>qì|\ ;
+戾>lì|\ ;
+嗬>he|\ ;
+蟋>xi|\ ;
+瘠>jí|\ ;
+橘>jú|\ ;
+溥>pŭ|\ ;
+谒>tí|\ ;
+恣>zì|\ ;
+觎>yú|\ ;
+橹>lŭ|\ ;
+呓>yì|\ ;
+椰>yé|\ ;
+觊>gŭ|\ ;
+嗝>gé|\ ;
+唢>ji|\ ;
+匝>za|\ ;
+谀>yú|\ ;
+痢>lì|\ ;
+睇>dì|\ ;
+熨>yù|\ ;
+牍>dú|\ ;
+叵>pŏ|\ ;
+糜>mí|\ ;
+嗑>kè|\ ;
+嗳>ài|\ ;
+瑚>hú|\ ;
+皙>xi|\ ;
+捱>ái|\ ;
+盂>yú|\ ;
+壹>yi|\ ;
+酶>lí|\ ;
+衢>qú|\ ;
+杞>qĭ|\ ;
+翱>áo|\ ;
+珀>pò|\ ;
+岌>jí|\ ;
+偈>jì|\ ;
+诩>xŭ|\ ;
+耆>qí|\ ;
+玺>xĭ|\ ;
+疵>ci|\ ;
+迤>yí|\ ;
+翟>dí|\ ;
+榈>lǘ|\ ;
+遢>tà|\ ;
+茉>mò|\ ;
+酗>xù|\ ;
+棣>dì|\ ;
+纥>ge|\ ;
+藜>lí|\ ;
+礴>bó|\ ;
+滓>zĭ|\ ;
+霁>jì|\ ;
+鹂>lí|\ ;
+罹>lí|\ ;
+妪>yù|\ ;
+夙>sù|\ ;
+岐>qí|\ ;
+唿>hu|\ ;
+咝>si|\ ;
+靥>yè|\ ;
+鹘>gú|\ ;
+揄>yú|\ ;
+鹉>wŭ|\ ;
+狙>ju|\ ;
+粑>ba|\ ;
+圻>qí|\ ;
+妲>dá|\ ;
+郦>lì|\ ;
+讴>ou|\ ;
+忤>wŭ|\ ;
+龌>wò|\ ;
+鹭>lù|\ ;
+咭>ji|\ ;
+佚>yì|\ ;
+蹴>cù|\ ;
+趄>ju|\ ;
+邋>lá|\ ;
+宓>mì|\ ;
+揶>yé|\ ;
+粕>pò|\ ;
+遨>áo|\ ;
+匍>pú|\ ;
+迩>ĕr|\ ;
+噫>yi|\ ;
+弋>yì|\ ;
+俎>zŭ|\ ;
+铂>bó|\ ;
+骛>ào|\ ;
+钾>hé|\ ;
+嘁>qi|\ ;
+轲>ke|\ ;
+俚>lĭ|\ ;
+钹>bá|\ ;
+靼>dá|\ ;
+腴>yú|\ ;
+檄>xí|\ ;
+莆>pú|\ ;
+汨>mì|\ ;
+懿>yì|\ ;
+倜>tì|\ ;
+蛆>qu|\ ;
+铬>gé|\ ;
+颌>gé|\ ;
+贲>bì|\ ;
+蓟>jì|\ ;
+鹜>mù|\ ;
+辎>zi|\ ;
+胰>yí|\ ;
+臾>yú|\ ;
+泸>lú|\ ;
+鏖>áo|\ ;
+圄>yŭ|\ ;
+铤>ha|\ ;
+飓>jù|\ ;
+遽>jù|\ ;
+汐>xi|\ ;
+饽>bó|\ ;
+倨>jù|\ ;
+讣>fù|\ ;
+梏>gù|\ ;
+祛>qu|\ ;
+旎>nĭ|\ ;
+桠>yá|\ ;
+淄>zi|\ ;
+畦>qí|\ ;
+裾>ju|\ ;
+屐>ji|\ ;
+摁>èn|\ ;
+荻>dí|\ ;
+洱>ĕr|\ ;
+裨>bì|\ ;
+猢>hú|\ ;
+蒺>jí|\ ;
+烯>xi|\ ;
+趿>sà|\ ;
+旖>yĭ|\ ;
+荠>qí|\ ;
+匐>fú|\ ;
+鲫>jì|\ ;
+翕>xì|\ ;
+缢>yì|\ ;
+骊>lí|\ ;
+囫>hú|\ ;
+柢>dĭ|\ ;
+畿>ji|\ ;
+铱>yĭ|\ ;
+縻>mí|\ ;
+龇>zi|\ ;
+踽>jŭ|\ ;
+褡>da|\ ;
+窠>ke|\ ;
+菏>ge|\ ;
+舸>gĕ|\ ;
+眙>yí|\ ;
+盱>xu|\ ;
+煜>yù|\ ;
+杷>pá|\ ;
+葩>pa|\ ;
+胺>àn|\ ;
+髭>zi|\ ;
+鸪>gu|\ ;
+旯>lá|\ ;
+旮>xù|\ ;
+琥>hŭ|\ ;
+麒>qí|\ ;
+砥>dĭ|\ ;
+蝮>fù|\ ;
+瘀>yu|\ ;
+萸>yú|\ ;
+蚝>cì|\ ;
+枇>pí|\ ;
+哔>bì|\ ;
+挹>yì|\ ;
+斛>hú|\ ;
+秣>mò|\ ;
+祜>hù|\ ;
+擘>bò|\ ;
+犄>ji|\ ;
+轱>ku|\ ;
+愎>bì|\ ;
+唳>lì|\ ;
+氐>di|\ ;
+砒>pi|\ ;
+沤>òu|\ ;
+氟>fú|\ ;
+麋>mí|\ ;
+痍>yí|\ ;
+邺>yè|\ ;
+獭>tă|\ ;
+黢>qu|\ ;
+潞>lù|\ ;
+昱>yù|\ ;
+轳>lú|\ ;
+娲>wa|\ ;
+萋>qi|\ ;
+谘>zi|\ ;
+籴>dí|\ ;
+疽>ju|\ ;
+颍>ke|\ ;
+硒>xi|\ ;
+鳍>qí|\ ;
+涪>fú|\ ;
+箔>bó|\ ;
+鹄>hú|\ ;
+胪>lú|\ ;
+弭>mĭ|\ ;
+怄>òu|\ ;
+茯>fú|\ ;
+醍>tí|\ ;
+锂>lĭ|\ ;
+睥>bì|\ ;
+瓯>ou|\ ;
+莅>lì|\ ;
+谟>mó|\ ;
+讫>qì|\ ;
+翳>yì|\ ;
+癯>qú|\ ;
+钸>bó|\ ;
+眦>zì|\ ;
+楫>jí|\ ;
+娌>lĭ|\ ;
+逦>lĭ|\ ;
+幄>wò|\ ;
+亳>bó|\ ;
+肄>yì|\ ;
+砝>fá|\ ;
+骜>áo|\ ;
+卟>bŭ|\ ;
+佶>jí|\ ;
+龃>jŭ|\ ;
+蜮>yù|\ ;
+欹>yi|\ ;
+晔>ye|\ ;
+缛>rù|\ ;
+蔺>fù|\ ;
+诂>gŭ|\ ;
+羿>yì|\ ;
+蛎>lì|\ ;
+榘>jŭ|\ ;
+纰>bĭ|\ ;
+逋>bu|\ ;
+凫>fú|\ ;
+龋>qŭ|\ ;
+蜥>xi|\ ;
+痼>gù|\ ;
+鬻>yù|\ ;
+濮>pú|\ ;
+溧>lì|\ ;
+阒>qù|\ ;
+黩>dú|\ ;
+醐>hú|\ ;
+蠹>dù|\ ;
+悌>tì|\ ;
+饴>yí|\ ;
+撸>lŭ|\ ;
+蜴>yì|\ ;
+钜>jù|\ ;
+澧>lĭ|\ ;
+悒>yì|\ ;
+猕>mí|\ ;
+葺>qì|\ ;
+糍>cí|\ ;
+疴>ke|\ ;
+绔>kù|\ ;
+怃>wŭ|\ ;
+呒>fŭ|\ ;
+訾>zi|\ ;
+顸>dú|\ ;
+嬷>ma|\ ;
+漯>tà|\ ;
+溘>kè|\ ;
+蓿>sù|\ ;
+苻>fú|\ ;
+圮>pĭ|\ ;
+诒>yí|\ ;
+伢>yá|\ ;
+鲈>lú|\ ;
+竽>yú|\ ;
+蛳>si|\ ;
+曷>hé|\ ;
+尕>gă|\ ;
+怛>dá|\ ;
+怙>hù|\ ;
+拊>fŭ|\ ;
+陂>pí|\ ;
+瘌>là|\ ;
+鹌>an|\ ;
+钚>bù|\ ;
+瑷>ài|\ ;
+庾>yŭ|\ ;
+喱>lí|\ ;
+蓖>bì|\ ;
+耦>ŏu|\ ;
+鸶>si|\ ;
+钴>gu|\ ;
+妣>bĭ|\ ;
+崮>gù|\ ;
+岙>ào|\ ;
+醚>mí|\ ;
+篦>bì|\ ;
+螯>áo|\ ;
+蜉>fú|\ ;
+蜊>lí|\ ;
+痖>pi|\ ;
+膈>gé|\ ;
+轾>yà|\ ;
+殁>mò|\ ;
+獒>áo|\ ;
+枥>lì|\ ;
+觚>gu|\ ;
+綦>qí|\ ;
+鹬>yù|\ ;
+稞>ke|\ ;
+瞽>gŭ|\ ;
+赀>zi|\ ;
+贽>gŭ|\ ;
+妤>yú|\ ;
+傈>lì|\ ;
+毖>bì|\ ;
+麂>jĭ|\ ;
+醴>lĭ|\ ;
+锱>zi|\ ;
+辂>lù|\ ;
+驽>nú|\ ;
+媪>ăo|\ ;
+迓>yà|\ ;
+灞>bà|\ ;
+蘼>mí|\ ;
+仵>wŭ|\ ;
+瓠>hù|\ ;
+欤>yú|\ ;
+屣>xĭ|\ ;
+渌>lù|\ ;
+岘>pí|\ ;
+薏>yì|\ ;
+苜>mù|\ ;
+芨>ji|\ ;
+厶>si|\ ;
+珐>fà|\ ;
+黧>lí|\ ;
+蹼>pú|\ ;
+跸>bì|\ ;
+笸>pŏ|\ ;
+笏>hù|\ ;
+蛄>gu|\ ;
+蚍>bĭ|\ ;
+詈>lì|\ ;
+碡>dú|\ ;
+祢>mí|\ ;
+煳>hú|\ ;
+齑>ji|\ ;
+毂>gŭ|\ ;
+牾>wú|\ ;
+缁>ji|\ ;
+孳>zi|\ ;
+阋>xì|\ ;
+薜>bì|\ ;
+苣>jù|\ ;
+讵>jù|\ ;
+乩>ji|\ ;
+钨>wù|\ ;
+趺>fu|\ ;
+瘗>yì|\ ;
+穑>sè|\ ;
+铋>bì|\ ;
+碛>qì|\ ;
+戽>hù|\ ;
+桴>fú|\ ;
+桉>an|\ ;
+寤>wù|\ ;
+浠>xi|\ ;
+奁>di|\ ;
+荸>bí|\ ;
+圯>yí|\ ;
+矽>xi|\ ;
+翊>yì|\ ;
+罴>pí|\ ;
+赍>ji|\ ;
+殛>jí|\ ;
+椐>ju|\ ;
+猗>yi|\ ;
+嶷>yí|\ ;
+啵>bō|\ ;
+莒>jŭ|\ ;
+鼙>pí|\ ;
+埸>yì|\ ;
+僖>xi|\ ;
+佤>wă|\ ;
+鬲>gé|\ ;
+僳>sù|\ ;
+髀>bì|\ ;
+鏊>áo|\ ;
+麸>fu|\ ;
+蜞>qí|\ ;
+瘐>yŭ|\ ;
+纡>yu|\ ;
+嫒>ài|\ ;
+蘖>bì|\ ;
+蓠>lí|\ ;
+勖>xù|\ ;
+伛>yŭ|\ ;
+麴>qú|\ ;
+窳>yŭ|\ ;
+癔>yì|\ ;
+鹚>zi|\ ;
+秭>zĭ|\ ;
+镒>yì|\ ;
+黻>fú|\ ;
+顼>xù|\ ;
+洎>jì|\ ;
+岈>yá|\ ;
+吡>bĭ|\ ;
+菰>gu|\ ;
+萁>qí|\ ;
+莜>dí|\ ;
+圬>wu|\ ;
+刳>ku|\ ;
+捌>ba|\ ;
+雎>ju|\ ;
+羝>di|\ ;
+笥>sì|\ ;
+鹈>tí|\ ;
+燠>yù|\ ;
+戢>jí|\ ;
+殂>cú|\ ;
+椟>dú|\ ;
+骐>qí|\ ;
+婺>wù|\ ;
+庑>wŭ|\ ;
+堍>tù|\ ;
+劬>qú|\ ;
+郫>pí|\ ;
+阝>fù|\ ;
+刈>yì|\ ;
+觫>sù|\ ;
+筚>bì|\ ;
+笄>ji|\ ;
+痦>wù|\ ;
+镉>gé|\ ;
+铵>an|\ ;
+氩>yà|\ ;
+骒>kè|\ ;
+嬖>bì|\ ;
+姒>sì|\ ;
+濞>pì|\ ;
+汔>qì|\ ;
+徂>cú|\ ;
+嗉>sù|\ ;
+揠>yà|\ ;
+蓰>xĭ|\ ;
+葸>xĭ|\ ;
+菟>tù|\ ;
+垭>wù|\ ;
+垡>fá|\ ;
+谡>sù|\ ;
+蚜>yá|\ ;
+趑>ci|\ ;
+糸>mì|\ ;
+疋>pĭ|\ ;
+疠>lì|\ ;
+鹕>hú|\ ;
+鸬>lú|\ ;
+镱>yì|\ ;
+硖>ái|\ ;
+氪>kè|\ ;
+栌>lú|\ ;
+琊>yé|\ ;
+纟>si|\ ;
+孥>nú|\ ;
+迮>zé|\ ;
+滹>hu|\ ;
+溽>rù|\ ;
+怿>yì|\ ;
+莩>fú|\ ;
+荜>bì|\ ;
+苴>ju|\ ;
+垆>lú|\ ;
+劓>yì|\ ;
+锑>ti|\ ;
+髑>dú|\ ;
+觜>zi|\ ;
+跽>jì|\ ;
+醯>xi|\ ;
+酤>gu|\ ;
+粝>lì|\ ;
+敉>mĭ|\ ;
+簏>lù|\ ;
+筢>pá|\ ;
+蚨>fú|\ ;
+虮>ji|\ ;
+秕>bĭ|\ ;
+镝>dí|\ ;
+钯>bă|\ ;
+盍>hé|\ ;
+碲>dì|\ ;
+烀>hu|\ ;
+欷>xi|\ ;
+臌>gŭ|\ ;
+朐>qú|\ ;
+檗>bò|\ ;
+榉>jŭ|\ ;
+栎>lì|\ ;
+璩>qú|\ ;
+琚>ju|\ ;
+绂>fú|\ ;
+嫫>mó|\ ;
+浯>wú|\ ;
+饫>yù|\ ;
+猁>lì|\ ;
+嗍>má|\ ;
+蕲>qí|\ ;
+蔌>sù|\ ;
+荑>tí|\ ;
+堀>ku|\ ;
+诶>ai|\ ;
+鲵>ní|\ ;
+貔>pí|\ ;
+跗>fu|\ ;
+綮>qĭ|\ ;
+翮>hé|\ ;
+笫>zĭ|\ ;
+螅>xi|\ ;
+聱>áo|\ ;
+窬>yú|\ ;
+疬>lì|\ ;
+铒>èr|\ ;
+罘>fú|\ ;
+磲>qú|\ ;
+觳>hú|\ ;
+氆>pŭ|\ ;
+氇>lŭ|\ ;
+犋>jù|\ ;
+觌>dí|\ ;
+昃>zè|\ ;
+槠>qi|\ ;
+杌>wù|\ ;
+缡>lí|\ ;
+绨>tí|\ ;
+溻>ta|\ ;
+涑>sù|\ ;
+泺>bó|\ ;
+汜>sì|\ ;
+犸>mà|\ ;
+嵫>zi|\ ;
+嗌>yì|\ ;
+擗>pĭ|\ ;
+蔟>cù|\ ;
+苡>yĭ|\ ;
+芰>jì|\ ;
+郛>fú|\ ;
+俣>yŭ|\ ;
+伲>nĭ|\ ;
+仳>pĭ|\ ;
+鼯>wú|\ ;
+魃>bá|\ ;
+髂>gé|\ ;
+鲴>gù|\ ;
+鲅>bo|\ ;
+雩>yú|\ ;
+貊>mò|\ ;
+踣>bó|\ ;
+醵>jù|\ ;
+粢>zi|\ ;
+襞>bì|\ ;
+舄>xì|\ ;
+舁>yú|\ ;
+笪>dá|\ ;
+蛴>qí|\ ;
+耜>sì|\ ;
+裼>tì|\ ;
+穸>xì|\ ;
+皤>pó|\ ;
+镆>mò|\ ;
+锔>ju|\ ;
+铷>rŭ|\ ;
+铍>pi|\ ;
+铌>nĭ|\ ;
+钼>mù|\ ;
+钋>pò|\ ;
+畀>bì|\ ;
+眍>ou|\ ;
+黼>fŭ|\ ;
+砑>yà|\ ;
+慝>tè|\ ;
+脒>mĭ|\ ;
+牿>gù|\ ;
+甓>pì|\ ;
+槭>cù|\ ;
+屦>jù|\ ;
+逖>tì|\ ;
+迕>wù|\ ;
+滗>bĭ|\ ;
+洳>rù|\ ;
+洫>xù|\ ;
+庳>bì|\ ;
+屺>qĭ|\ ;
+幞>fú|\ ;
+帻>zé|\ ;
+哜>jì|\ ;
+揞>ăn|\ ;
+蕖>qú|\ ;
+蓐>rù|\ ;
+菹>ju|\ ;
+埯>ăn|\ ;
+埚>bù|\ ;
+隰>xí|\ ;
+阢>wù|\ ;
+佾>yì|\ ;
+嘏>gŭ|\ ;
+柒>qi|\ ;
+幂>mì|\ ;
+骶>dĭ|\ ;
+鳎>tà|\ ;
+鳆>fù|\ ;
+鲻>zi|\ ;
+鲡>lí|\ ;
+鋈>wù|\ ;
+舾>xi|\ ;
+舭>bĭ|\ ;
+舣>yĭ|\ ;
+箦>zé|\ ;
+虼>gè|\ ;
+虍>hu|\ ;
+耱>mò|\ ;
+瘘>lǘ|\ ;
+鸸>ér|\ ;
+镎>ná|\ ;
+钲>gú|\ ;
+钭>pá|\ ;
+祓>fú|\ ;
+觋>xí|\ ;
+晡>bu|\ ;
+轹>lì|\ ;
+殪>yì|\ ;
+缂>kè|\ ;
+嫠>lí|\ ;
+艴>fú|\ ;
+逯>lù|\ ;
+澌>si|\ ;
+滏>fŭ|\ ;
+廒>áo|\ ;
+庀>pĭ|\ ;
+猊>ní|\ ;
+狴>bì|\ ;
+犴>àn|\ ;
+峄>yì|\ ;
+岵>hù|\ ;
+嘧>mì|\ ;
+呋>fu|\ ;
+蘧>qú|\ ;
+菔>fú|\ ;
+芴>wù|\ ;
+塥>gé|\ ;
+埤>pí|\ ;
+坭>ní|\ ;
+凵>qu|\ ;
+哿>gĕ|\ ;
+诎>qù|\ ;
+兕>sì|\ ;
+仡>yì|\ ;
+赜>zé|\ ;
+龥>yù|\ ;
+龢>hé|\ ;
+龘>tà|\ ;
+龎>kè|\ ;
+龁>hé|\ ;
+齾>yà|\ ;
+齸>yì|\ ;
+齷>wò|\ ;
+齵>óu|\ ;
+齲>qŭ|\ ;
+齯>ní|\ ;
+齮>yĭ|\ ;
+齬>yŭ|\ ;
+齟>jŭ|\ ;
+齜>zi|\ ;
+齖>yá|\ ;
+齕>hé|\ ;
+齏>ji|\ ;
+齎>ji|\ ;
+齍>qí|\ ;
+齌>jì|\ ;
+齊>qí|\ ;
+齄>ji|\ ;
+齃>gé|\ ;
+齀>wù|\ ;
+鼿>wu|\ ;
+鼷>xi|\ ;
+鼶>si|\ ;
+鼵>tú|\ ;
+鼳>jú|\ ;
+鼩>qú|\ ;
+鼥>bá|\ ;
+鼜>qì|\ ;
+鼔>gŭ|\ ;
+鼒>zi|\ ;
+鼏>mì|\ ;
+鼊>bì|\ ;
+鼇>áo|\ ;
+鼁>qù|\ ;
+鼀>cù|\ ;
+黸>lú|\ ;
+黷>dú|\ ;
+黳>yi|\ ;
+黬>àn|\ ;
+黦>yù|\ ;
+黟>yi|\ ;
+黙>mò|\ ;
+黖>xì|\ ;
+黓>yì|\ ;
+麼>mē|\ ;
+麹>qú|\ ;
+麱>fu|\ ;
+麯>qú|\ ;
+麮>qù|\ ;
+麬>fu|\ ;
+麩>fu|\ ;
+麧>ge|\ ;
+麤>cu|\ ;
+麡>ji|\ ;
+麜>lì|\ ;
+麛>mí|\ ;
+麘>hé|\ ;
+麗>lí|\ ;
+麑>ní|\ ;
+麌>wú|\ ;
+麊>mí|\ ;
+麄>cu|\ ;
+麁>cu|\ ;
+鹵>lŭ|\ ;
+鹥>yi|\ ;
+鹣>hù|\ ;
+鹢>nì|\ ;
+鹡>jí|\ ;
+鹝>nì|\ ;
+鹙>cí|\ ;
+鹖>hé|\ ;
+鹔>sù|\ ;
+鹆>yù|\ ;
+鹁>bó|\ ;
+鹀>wú|\ ;
+鸲>qú|\ ;
+鸝>lí|\ ;
+鸖>hè|\ ;
+鸕>lú|\ ;
+鸒>yú|\ ;
+鸐>dí|\ ;
+鸍>mí|\ ;
+鸋>hù|\ ;
+鸊>pì|\ ;
+鸈>yè|\ ;
+鸆>yú|\ ;
+鸄>jí|\ ;
+鸃>bì|\ ;
+鸂>qi|\ ;
+鷿>pì|\ ;
+鷾>yì|\ ;
+鷺>lù|\ ;
+鷸>yù|\ ;
+鷵>tú|\ ;
+鷫>sù|\ ;
+鷩>bì|\ ;
+鷧>yì|\ ;
+鷥>si|\ ;
+鷡>wú|\ ;
+鷠>yú|\ ;
+鷝>bì|\ ;
+鷗>ou|\ ;
+鷖>yi|\ ;
+鷔>áo|\ ;
+鷑>lì|\ ;
+鷌>mă|\ ;
+鷋>tú|\ ;
+鷊>nì|\ ;
+鷉>ti|\ ;
+鷈>ti|\ ;
+鷅>lì|\ ;
+鷄>ji|\ ;
+鷁>nì|\ ;
+鷀>cí|\ ;
+鶿>zi|\ ;
+鶾>cí|\ ;
+鶻>hú|\ ;
+鶺>jí|\ ;
+鶴>hè|\ ;
+鶮>gù|\ ;
+鶪>jú|\ ;
+鶩>wù|\ ;
+鶦>hú|\ ;
+鶡>hé|\ ;
+鶟>tú|\ ;
+鶝>fú|\ ;
+鶙>tí|\ ;
+鶘>hú|\ ;
+鶗>tí|\ ;
+鶕>an|\ ;
+鶏>ji|\ ;
+鶌>qu|\ ;
+鶋>ju|\ ;
+鶈>qi|\ ;
+鶅>zi|\ ;
+鶃>yì|\ ;
+鶂>yì|\ ;
+鶀>qí|\ ;
+鵺>yè|\ ;
+鵹>lí|\ ;
+鵸>qí|\ ;
+鵶>ya|\ ;
+鵵>tù|\ ;
+鵴>jú|\ ;
+鵱>lù|\ ;
+鵪>an|\ ;
+鵩>fú|\ ;
+鵡>wŭ|\ ;
+鵠>gŭ|\ ;
+鵜>tí|\ ;
+鵚>tú|\ ;
+鵙>jú|\ ;
+鵗>ti|\ ;
+鵖>bì|\ ;
+鵕>bi|\ ;
+鵓>bó|\ ;
+鵒>yù|\ ;
+鵏>bu|\ ;
+鵍>bŭ|\ ;
+鵌>yú|\ ;
+鵋>jì|\ ;
+鴿>ge|\ ;
+鴽>rú|\ ;
+鴺>yí|\ ;
+鴶>jí|\ ;
+鴱>ài|\ ;
+鴯>ér|\ ;
+鴮>wu|\ ;
+鴨>ya|\ ;
+鴥>yù|\ ;
+鴣>gu|\ ;
+鴡>ju|\ ;
+鴝>qú|\ ;
+鴜>zi|\ ;
+鴚>ge|\ ;
+鴗>lì|\ ;
+鴔>fú|\ ;
+鴑>nú|\ ;
+鴏>tè|\ ;
+鴎>ou|\ ;
+鴉>ya|\ ;
+鴄>pi|\ ;
+鳿>yù|\ ;
+鳺>fu|\ ;
+鳸>hù|\ ;
+鳬>fú|\ ;
+鳪>bŭ|\ ;
+鳨>lì|\ ;
+鳧>fú|\ ;
+鳦>yĭ|\ ;
+鳢>lĭ|\ ;
+鳠>hù|\ ;
+鳛>xí|\ ;
+鳓>lè|\ ;
+鲾>bì|\ ;
+鲹>bi|\ ;
+鲯>qí|\ ;
+鲚>jì|\ ;
+鲕>ér|\ ;
+鲏>pi|\ ;
+鲌>bó|\ ;
+鲋>bà|\ ;
+鲄>bà|\ ;
+鲃>ba|\ ;
+鱾>jĭ|\ ;
+鱻>bà|\ ;
+鱺>lí|\ ;
+鱸>lú|\ ;
+鱳>lì|\ ;
+鱱>lĭ|\ ;
+鱮>xù|\ ;
+鱭>jì|\ ;
+鱬>rú|\ ;
+鱧>lĭ|\ ;
+鱚>xĭ|\ ;
+鱐>sù|\ ;
+鱍>bo|\ ;
+鱋>qu|\ ;
+鱀>jì|\ ;
+鰿>ji|\ ;
+鰼>xí|\ ;
+鰸>qu|\ ;
+鰶>jì|\ ;
+鰳>lè|\ ;
+鰲>áo|\ ;
+鰭>qí|\ ;
+鰪>gé|\ ;
+鰨>tà|\ ;
+鰢>mă|\ ;
+鰞>wu|\ ;
+鰗>hú|\ ;
+鰒>fù|\ ;
+鰏>bì|\ ;
+鰅>yú|\ ;
+鰂>zé|\ ;
+鯽>jì|\ ;
+鯻>là|\ ;
+鯬>lí|\ ;
+鯥>lù|\ ;
+鯣>yì|\ ;
+鯢>ní|\ ;
+鯝>gù|\ ;
+鯚>jì|\ ;
+鯕>qí|\ ;
+鯔>zi|\ ;
+鯓>ní|\ ;
+鯉>lĭ|\ ;
+鯆>fŭ|\ ;
+鯃>wú|\ ;
+鯂>su|\ ;
+鮽>yú|\ ;
+鮺>ză|\ ;
+鮷>tí|\ ;
+鮯>gé|\ ;
+鮬>bù|\ ;
+鮨>qí|\ ;
+鮧>tí|\ ;
+鮟>àn|\ ;
+鮞>ér|\ ;
+鮙>tà|\ ;
+鮕>gu|\ ;
+鮔>jù|\ ;
+鮒>fù|\ ;
+鮍>pi|\ ;
+鮋>pí|\ ;
+鮊>bó|\ ;
+鮈>ju|\ ;
+鮆>jì|\ ;
+鮅>bì|\ ;
+鮄>fú|\ ;
+鮂>bà|\ ;
+鮁>bo|\ ;
+魿>bà|\ ;
+魾>pí|\ ;
+魼>qu|\ ;
+魺>hé|\ ;
+魶>nà|\ ;
+魳>zá|\ ;
+魲>lú|\ ;
+魱>hú|\ ;
+魰>pi|\ ;
+魯>lŭ|\ ;
+魮>bí|\ ;
+魩>mò|\ ;
+魣>xù|\ ;
+魢>jĭ|\ ;
+魝>jì|\ ;
+魚>yú|\ ;
+魖>xu|\ ;
+魕>jĭ|\ ;
+魓>bì|\ ;
+魌>qi|\ ;
+魊>yù|\ ;
+魆>xù|\ ;
+鬿>qí|\ ;
+鬾>jì|\ ;
+鬴>fŭ|\ ;
+鬱>yù|\ ;
+鬰>yù|\ ;
+鬩>hè|\ ;
+鬚>xu|\ ;
+鬕>mò|\ ;
+鬐>qí|\ ;
+鬎>là|\ ;
+鬍>hú|\ ;
+鬄>tì|\ ;
+鬁>lì|\ ;
+鬀>dí|\ ;
+髷>qu|\ ;
+髵>ér|\ ;
+髴>fú|\ ;
+髲>pi|\ ;
+髰>tì|\ ;
+髮>fà|\ ;
+髪>fà|\ ;
+髢>tì|\ ;
+髠>dí|\ ;
+髗>lú|\ ;
+體>tĭ|\ ;
+髍>mó|\ ;
+髊>ci|\ ;
+髉>bo|\ ;
+髆>bó|\ ;
+髁>ke|\ ;
+骵>ti|\ ;
+骳>bì|\ ;
+骮>yì|\ ;
+骬>yú|\ ;
+骕>sù|\ ;
+驲>rì|\ ;
+驪>lí|\ ;
+驨>xi|\ ;
+驧>jú|\ ;
+驥>jì|\ ;
+驜>yè|\ ;
+驛>yì|\ ;
+驌>sù|\ ;
+驋>bo|\ ;
+驉>xu|\ ;
+驈>yù|\ ;
+驆>bì|\ ;
+驅>qu|\ ;
+驁>ào|\ ;
+驀>mò|\ ;
+騽>xí|\ ;
+騼>lù|\ ;
+騹>lí|\ ;
+騳>dú|\ ;
+騱>xi|\ ;
+騦>si|\ ;
+騠>tí|\ ;
+騖>wù|\ ;
+騏>qí|\ ;
+騎>qí|\ ;
+騍>kè|\ ;
+騈>jì|\ ;
+騄>lù|\ ;
+騃>ái|\ ;
+駼>tú|\ ;
+駶>jú|\ ;
+駮>bó|\ ;
+駬>ĕr|\ ;
+駡>mà|\ ;
+駟>sì|\ ;
+駜>bì|\ ;
+駙>fù|\ ;
+駓>pi|\ ;
+駒>ju|\ ;
+駑>nú|\ ;
+駏>jù|\ ;
+駊>bŏ|\ ;
+駈>qu|\ ;
+駆>qu|\ ;
+駅>yì|\ ;
+駄>pŏ|\ ;
+駁>bó|\ ;
+馿>lǘ|\ ;
+馺>sà|\ ;
+馹>rì|\ ;
+馭>yù|\ ;
+馬>mă|\ ;
+馤>ăi|\ ;
+馟>tú|\ ;
+馞>bó|\ ;
+馝>bì|\ ;
+馜>nĭ|\ ;
+馛>bá|\ ;
+馎>bó|\ ;
+馌>yè|\ ;
+馉>gŭ|\ ;
+饻>yi|\ ;
+饹>bo|\ ;
+饩>xì|\ ;
+饝>mó|\ ;
+饑>ji|\ ;
+饐>yì|\ ;
+饇>yù|\ ;
+饆>bì|\ ;
+饃>mó|\ ;
+饁>yè|\ ;
+餼>xì|\ ;
+餺>bó|\ ;
+餶>gŭ|\ ;
+餲>hé|\ ;
+餬>hú|\ ;
+餣>yè|\ ;
+餢>bù|\ ;
+餘>yú|\ ;
+餗>sù|\ ;
+餔>bu|\ ;
+餑>bo|\ ;
+餏>yi|\ ;
+餎>lē|\ ;
+餌>ĕr|\ ;
+餈>cí|\ ;
+餄>hé|\ ;
+飼>sì|\ ;
+飺>cí|\ ;
+飶>bì|\ ;
+飴>yí|\ ;
+飳>sì|\ ;
+飫>yù|\ ;
+飤>sì|\ ;
+飢>ji|\ ;
+飔>si|\ ;
+飏>sì|\ ;
+飋>sè|\ ;
+飁>xí|\ ;
+颸>si|\ ;
+颷>bi|\ ;
+颶>jù|\ ;
+颰>bá|\ ;
+颯>sà|\ ;
+颫>fú|\ ;
+顱>lú|\ ;
+顧>gù|\ ;
+顣>cù|\ ;
+顝>ku|\ ;
+顗>yĭ|\ ;
+題>tí|\ ;
+顊>dì|\ ;
+顆>ke|\ ;
+頿>zi|\ ;
+頾>zi|\ ;
+頼>kĕ|\ ;
+頱>lè|\ ;
+頫>fŭ|\ ;
+頦>ke|\ ;
+頤>yí|\ ;
+頜>hé|\ ;
+頙>cè|\ ;
+頗>po|\ ;
+頔>dí|\ ;
+預>yù|\ ;
+頎>qí|\ ;
+頋>gù|\ ;
+頊>xù|\ ;
+頉>yí|\ ;
+須>xu|\ ;
+頁>yè|\ ;
+頀>hù|\ ;
+韷>lè|\ ;
+韴>an|\ ;
+韲>ji|\ ;
+韨>fú|\ ;
+韥>dú|\ ;
+韤>wà|\ ;
+韣>dú|\ ;
+韠>bì|\ ;
+韚>gé|\ ;
+韐>gé|\ ;
+韍>fú|\ ;
+韈>wà|\ ;
+韇>dú|\ ;
+韄>hù|\ ;
+韃>dá|\ ;
+鞿>ji|\ ;
+鞸>bì|\ ;
+鞷>gé|\ ;
+鞳>tà|\ ;
+鞮>di|\ ;
+鞫>ju|\ ;
+鞪>mù|\ ;
+鞨>hé|\ ;
+鞥>yì|\ ;
+鞟>ju|\ ;
+鞜>tà|\ ;
+鞌>an|\ ;
+鞊>jí|\ ;
+鞇>gé|\ ;
+靾>yì|\ ;
+靻>zŭ|\ ;
+靺>mò|\ ;
+靹>nà|\ ;
+靸>să|\ ;
+靰>wù|\ ;
+靯>dù|\ ;
+靮>dí|\ ;
+靨>yè|\ ;
+靏>hè|\ ;
+靎>hè|\ ;
+靋>lì|\ ;
+靉>ài|\ ;
+靄>ăi|\ ;
+靂>lì|\ ;
+霽>jì|\ ;
+霼>xĭ|\ ;
+霷>pò|\ ;
+霵>jí|\ ;
+霱>yù|\ ;
+霬>yì|\ ;
+霫>xí|\ ;
+霧>wù|\ ;
+霢>mò|\ ;
+霡>mò|\ ;
+霚>wù|\ ;
+霋>qi|\ ;
+霂>mù|\ ;
+雸>án|\ ;
+雴>lì|\ ;
+雮>mù|\ ;
+雭>sè|\ ;
+雫>nă|\ ;
+雧>jí|\ ;
+雦>jí|\ ;
+雥>zá|\ ;
+離>lí|\ ;
+雟>xi|\ ;
+雞>ji|\ ;
+雜>zá|\ ;
+雓>yú|\ ;
+雑>zá|\ ;
+雐>hu|\ ;
+雃>yă|\ ;
+隺>hè|\ ;
+隸>lì|\ ;
+隵>xi|\ ;
+隮>ji|\ ;
+隭>ér|\ ;
+隬>nĭ|\ ;
+隩>yù|\ ;
+隦>pĭ|\ ;
+隟>xì|\ ;
+隞>áo|\ ;
+際>jì|\ ;
+隒>ji|\ ;
+隌>ăn|\ ;
+隄>di|\ ;
+隃>yú|\ ;
+隀>an|\ ;
+陹>dŭ|\ ;
+陴>pí|\ ;
+陱>ju|\ ;
+陮>an|\ ;
+陭>qi|\ ;
+陠>pu|\ ;
+陚>fù|\ ;
+陓>yu|\ ;
+陑>ér|\ ;
+阺>dĭ|\ ;
+阹>qu|\ ;
+阰>pí|\ ;
+阦>ài|\ ;
+阥>an|\ ;
+阣>yĭ|\ ;
+阞>lè|\ ;
+阘>tà|\ ;
+阇>du|\ ;
+闥>tà|\ ;
+闢>bì|\ ;
+闟>sà|\ ;
+闙>qĭ|\ ;
+闔>hé|\ ;
+闒>tà|\ ;
+闍>du|\ ;
+闇>àn|\ ;
+闃>qù|\ ;
+閾>yù|\ ;
+閴>qù|\ ;
+閰>jú|\ ;
+閥>fá|\ ;
+閤>gé|\ ;
+閣>gé|\ ;
+閡>hé|\ ;
+閟>bì|\ ;
+閝>ài|\ ;
+閙>kĕ|\ ;
+閉>bì|\ ;
+閇>bì|\ ;
+閁>mà|\ ;
+镾>mí|\ ;
+镼>qu|\ ;
+镺>ăo|\ ;
+镸>ào|\ ;
+镴>là|\ ;
+镥>lŭ|\ ;
+镈>bó|\ ;
+镃>zi|\ ;
+锿>ai|\ ;
+锝>dé|\ ;
+锜>qí|\ ;
+铽>tè|\ ;
+铻>wú|\ ;
+铯>sè|\ ;
+铘>yé|\ ;
+铔>yà|\ ;
+钷>po|\ ;
+钖>xí|\ ;
+钑>jí|\ ;
+钄>gá|\ ;
+鑺>qú|\ ;
+鑴>xi|\ ;
+鑮>bó|\ ;
+鑪>lú|\ ;
+鑥>lŭ|\ ;
+鑟>dú|\ ;
+鑞>là|\ ;
+鑙>ji|\ ;
+鑗>lí|\ ;
+鑐>xu|\ ;
+鑉>tà|\ ;
+鑇>ji|\ ;
+鑀>ài|\ ;
+鐿>yì|\ ;
+鐽>bì|\ ;
+鐻>jù|\ ;
+鐷>yè|\ ;
+鐴>bì|\ ;
+鐭>yù|\ ;
+鐪>lŭ|\ ;
+鐠>pŭ|\ ;
+鐟>tì|\ ;
+鐚>yà|\ ;
+鐖>ji|\ ;
+鏺>po|\ ;
+鏷>pú|\ ;
+鏶>jí|\ ;
+鏴>lù|\ ;
+鏭>xi|\ ;
+鏫>lí|\ ;
+鏚>qì|\ ;
+鏕>lù|\ ;
+鏑>di|\ ;
+鏎>bì|\ ;
+鏌>mò|\ ;
+鏋>di|\ ;
+鏉>ào|\ ;
+鏃>zú|\ ;
+鏂>ou|\ ;
+鏀>lŭ|\ ;
+鎿>ná|\ ;
+鎷>mă|\ ;
+鎶>ge|\ ;
+鎴>xí|\ ;
+鎰>yì|\ ;
+鎢>wu|\ ;
+鎡>zi|\ ;
+鎞>bi|\ ;
+鎝>sà|\ ;
+鎛>bó|\ ;
+鎙>da|\ ;
+鎘>gé|\ ;
+鎐>zú|\ ;
+鎎>xì|\ ;
+鎉>tà|\ ;
+鎄>ai|\ ;
+鎁>yé|\ ;
+鍿>zi|\ ;
+鍸>hú|\ ;
+鍷>dŭ|\ ;
+鍶>si|\ ;
+鍱>yè|\ ;
+鍢>fù|\ ;
+鍗>tí|\ ;
+鍓>jí|\ ;
+鍑>fù|\ ;
+鍎>tú|\ ;
+鍍>dù|\ ;
+鍉>di|\ ;
+鍀>dé|\ ;
+錷>gá|\ ;
+錴>lù|\ ;
+録>lù|\ ;
+錰>lǜ|\ ;
+錮>gù|\ ;
+錫>xí|\ ;
+錥>tì|\ ;
+錤>ji|\ ;
+錡>qí|\ ;
+錙>zi|\ ;
+錖>dŭ|\ ;
+錔>tà|\ ;
+錏>yà|\ ;
+錎>ke|\ ;
+錍>pí|\ ;
+錌>àn|\ ;
+錅>lí|\ ;
+錄>lù|\ ;
+錂>fú|\ ;
+錁>kè|\ ;
+鋸>ju|\ ;
+鋵>tu|\ ;
+鋱>tè|\ ;
+鋰>lĭ|\ ;
+鋪>pu|\ ;
+鋦>ju|\ ;
+鋙>wú|\ ;
+鋘>wú|\ ;
+鋖>si|\ ;
+鋍>bó|\ ;
+鋊>yù|\ ;
+鋉>sù|\ ;
+銻>ti|\ ;
+銰>ai|\ ;
+銫>sè|\ ;
+銨>ăn|\ ;
+銥>yi|\ ;
+銤>mĭ|\ ;
+銣>rú|\ ;
+銢>pĭ|\ ;
+銡>jí|\ ;
+銔>pi|\ ;
+銊>xù|\ ;
+銉>yù|\ ;
+銈>ji|\ ;
+銆>mò|\ ;
+鉿>ha|\ ;
+鉻>gè|\ ;
+鉺>ĕr|\ ;
+鉲>kă|\ ;
+鉰>si|\ ;
+鉯>ĕr|\ ;
+鉬>mù|\ ;
+鉪>dì|\ ;
+鉨>nĭ|\ ;
+鉧>mŭ|\ ;
+鉢>bo|\ ;
+鉝>lì|\ ;
+鉜>fú|\ ;
+鉘>fú|\ ;
+鉖>an|\ ;
+鉕>po|\ ;
+鉔>za|\ ;
+鉑>bó|\ ;
+鉐>pŏ|\ ;
+鉎>jŭ|\ ;
+鉍>bì|\ ;
+鉌>hé|\ ;
+鉈>ta|\ ;
+鉅>jù|\ ;
+鈽>bù|\ ;
+鈻>sì|\ ;
+鈺>yù|\ ;
+鈹>pí|\ ;
+鈸>bó|\ ;
+鈷>gŭ|\ ;
+鈶>yí|\ ;
+鈳>ke|\ ;
+鈲>gu|\ ;
+鈯>ke|\ ;
+鈮>ní|\ ;
+鈭>zi|\ ;
+鈤>rì|\ ;
+鈠>yì|\ ;
+鈚>pí|\ ;
+鈘>jĭ|\ ;
+鈒>jí|\ ;
+鈉>nà|\ ;
+鈈>bù|\ ;
+鈇>fu|\ ;
+鈀>bă|\ ;
+釽>pi|\ ;
+釸>xì|\ ;
+釷>tŭ|\ ;
+釴>yì|\ ;
+釳>xì|\ ;
+釱>dì|\ ;
+釰>rì|\ ;
+釨>zĭ|\ ;
+釡>fŭ|\ ;
+釟>ba|\ ;
+釛>hé|\ ;
+釙>po|\ ;
+釔>yĭ|\ ;
+釓>gá|\ ;
+釒>gá|\ ;
+釐>lí|\ ;
+釃>xĭ|\ ;
+醿>mí|\ ;
+醾>mí|\ ;
+醹>rú|\ ;
+醷>yì|\ ;
+醳>yì|\ ;
+醱>pò|\ ;
+醭>bú|\ ;
+醫>yi|\ ;
+醨>lí|\ ;
+醧>yù|\ ;
+醘>kè|\ ;
+醗>pò|\ ;
+醑>xŭ|\ ;
+醏>du|\ ;
+醁>lù|\ ;
+酾>xĭ|\ ;
+酺>pú|\ ;
+酴>tú|\ ;
+酦>pò|\ ;
+酑>yŭ|\ ;
+酏>yí|\ ;
+酈>lì|\ ;
+酅>xi|\ ;
+鄿>qí|\ ;
+鄴>yè|\ ;
+鄪>bì|\ ;
+鄨>bì|\ ;
+鄦>xŭ|\ ;
+鄠>hù|\ ;
+鄜>fu|\ ;
+鄚>mò|\ ;
+鄔>wu|\ ;
+鄓>jú|\ ;
+鄑>zi|\ ;
+鄏>rù|\ ;
+鄎>xì|\ ;
+鄊>rŭ|\ ;
+鄅>yŭ|\ ;
+鄃>yú|\ ;
+郼>yi|\ ;
+郹>jú|\ ;
+郶>bù|\ ;
+郳>ní|\ ;
+郪>qi|\ ;
+郩>ci|\ ;
+郤>xì|\ ;
+郣>bó|\ ;
+郚>wú|\ ;
+郙>fŭ|\ ;
+郋>xí|\ ;
+郃>hé|\ ;
+郀>ku|\ ;
+邷>wă|\ ;
+邲>bì|\ ;
+邭>jù|\ ;
+邞>fu|\ ;
+邚>rú|\ ;
+邘>yú|\ ;
+邔>qĭ|\ ;
+邒>jì|\ ;
+邐>lĭ|\ ;
+邌>lí|\ ;
+邇>ĕr|\ ;
+遻>wù|\ ;
+遺>yí|\ ;
+遹>yù|\ ;
+遰>dì|\ ;
+遬>sù|\ ;
+遫>sù|\ ;
+遪>cè|\ ;
+遞>dì|\ ;
+遝>tà|\ ;
+達>dá|\ ;
+遆>tí|\ ;
+逹>dá|\ ;
+逷>tì|\ ;
+逳>yù|\ ;
+逜>wù|\ ;
+逓>dì|\ ;
+迻>yí|\ ;
+迡>nì|\ ;
+迖>dá|\ ;
+迏>jì|\ ;
+迊>za|\ ;
+迉>qí|\ ;
+迆>yĭ|\ ;
+迃>yí|\ ;
+辭>cí|\ ;
+辤>cí|\ ;
+辢>là|\ ;
+辝>cí|\ ;
+轷>hu|\ ;
+轪>dì|\ ;
+轤>lú|\ ;
+轣>lì|\ ;
+轢>lì|\ ;
+轝>yú|\ ;
+轜>ér|\ ;
+轚>jí|\ ;
+轖>sè|\ ;
+轕>gé|\ ;
+轐>pú|\ ;
+轆>lù|\ ;
+轃>hé|\ ;
+轂>gu|\ ;
+輿>yú|\ ;
+輻>fú|\ ;
+輺>zi|\ ;
+輹>fù|\ ;
+輵>gé|\ ;
+輢>yĭ|\ ;
+輜>zi|\ ;
+輗>ní|\ ;
+輔>fŭ|\ ;
+輍>yù|\ ;
+輅>lù|\ ;
+輂>jú|\ ;
+輀>ér|\ ;
+軼>yì|\ ;
+軻>ke|\ ;
+軷>bá|\ ;
+軲>ku|\ ;
+軱>gu|\ ;
+軯>fŭ|\ ;
+軪>ao|\ ;
+軧>dĭ|\ ;
+軥>qú|\ ;
+軤>hu|\ ;
+軝>qí|\ ;
+軜>nà|\ ;
+軋>yà|\ ;
+軉>yù|\ ;
+軆>tĭ|\ ;
+軄>ju|\ ;
+軀>qu|\ ;
+躹>jú|\ ;
+躸>ji|\ ;
+躷>ăi|\ ;
+躰>tĭ|\ ;
+躣>qú|\ ;
+躢>tà|\ ;
+躒>lì|\ ;
+躌>wŭ|\ ;
+躋>ji|\ ;
+躄>bì|\ ;
+躃>bì|\ ;
+躂>tà|\ ;
+蹽>dā|\ ;
+蹹>tà|\ ;
+蹵>cù|\ ;
+蹳>bo|\ ;
+蹫>jú|\ ;
+蹢>dí|\ ;
+蹟>ji|\ ;
+蹝>xĭ|\ ;
+蹜>sù|\ ;
+蹗>lù|\ ;
+蹕>bì|\ ;
+蹐>jí|\ ;
+蹏>tí|\ ;
+蹎>dì|\ ;
+蹃>dì|\ ;
+踿>zú|\ ;
+踾>fú|\ ;
+踶>dì|\ ;
+踰>yú|\ ;
+踧>cù|\ ;
+踦>jĭ|\ ;
+踥>ji|\ ;
+踤>cù|\ ;
+踛>lù|\ ;
+踘>jú|\ ;
+踖>jí|\ ;
+踑>qí|\ ;
+踄>bó|\ ;
+跿>tú|\ ;
+跼>jú|\ ;
+跶>tà|\ ;
+跡>ji|\ ;
+跠>yí|\ ;
+跞>lì|\ ;
+跙>jŭ|\ ;
+跔>ju|\ ;
+跐>cĭ|\ ;
+跇>yì|\ ;
+跂>qí|\ ;
+跁>pá|\ ;
+跀>qĭ|\ ;
+趷>ke|\ ;
+趯>tì|\ ;
+趨>qu|\ ;
+趧>tí|\ ;
+趦>zi|\ ;
+趢>lù|\ ;
+趜>jú|\ ;
+趘>xí|\ ;
+趗>cù|\ ;
+趇>sè|\ ;
+趆>di|\ ;
+赼>ci|\ ;
+赲>lì|\ ;
+赥>xì|\ ;
+赙>fù|\ ;
+赑>bì|\ ;
+贕>dú|\ ;
+贔>bì|\ ;
+賾>zé|\ ;
+賻>fù|\ ;
+賹>ài|\ ;
+賷>ji|\ ;
+賰>qí|\ ;
+賭>dŭ|\ ;
+賫>ji|\ ;
+賦>fù|\ ;
+賜>cì|\ ;
+賉>xù|\ ;
+賈>gŭ|\ ;
+資>zi|\ ;
+賂>lù|\ ;
+賀>hè|\ ;
+貽>yí|\ ;
+貹>bì|\ ;
+貳>èr|\ ;
+貲>zi|\ ;
+貱>bì|\ ;
+貮>èr|\ ;
+責>zé|\ ;
+貤>yí|\ ;
+貣>tè|\ ;
+負>fù|\ ;
+貘>mò|\ ;
+貗>jù|\ ;
+貕>xi|\ ;
+貐>yŭ|\ ;
+貏>bĭ|\ ;
+貎>ní|\ ;
+貍>lí|\ ;
+貈>hé|\ ;
+貄>sì|\ ;
+貃>mò|\ ;
+貀>nà|\ ;
+豾>pi|\ ;
+豽>nà|\ ;
+豻>àn|\ ;
+豷>yì|\ ;
+豴>dí|\ ;
+豰>bó|\ ;
+豯>xi|\ ;
+豨>xi|\ ;
+豧>fu|\ ;
+豦>qú|\ ;
+豠>cú|\ ;
+豝>ba|\ ;
+豙>yì|\ ;
+豍>bi|\ ;
+豈>qĭ|\ ;
+豄>dú|\ ;
+豀>xi|\ ;
+谿>qi|\ ;
+谸>qi|\ ;
+诐>bì|\ ;
+讟>dú|\ ;
+讛>yì|\ ;
+讉>yí|\ ;
+讈>lì|\ ;
+譽>yù|\ ;
+護>hù|\ ;
+譶>tà|\ ;
+議>yì|\ ;
+譯>yì|\ ;
+譪>ài|\ ;
+譤>ji|\ ;
+譜>pŭ|\ ;
+譕>mú|\ ;
+譒>bò|\ ;
+譏>ji|\ ;
+譆>xi|\ ;
+譅>sè|\ ;
+譃>xu|\ ;
+謼>hu|\ ;
+謻>yí|\ ;
+謸>áo|\ ;
+謷>áo|\ ;
+謵>xí|\ ;
+謴>ào|\ ;
+謳>ou|\ ;
+謮>zé|\ ;
+謩>mò|\ ;
+謨>mó|\ ;
+謧>lí|\ ;
+謣>yú|\ ;
+謖>sù|\ ;
+謑>xì|\ ;
+謐>mì|\ ;
+謎>mí|\ ;
+謌>ge|\ ;
+謈>bó|\ ;
+謁>yè|\ ;
+諿>qì|\ ;
+諽>gé|\ ;
+諳>an|\ ;
+諰>xĭ|\ ;
+諮>zi|\ ;
+諭>yù|\ ;
+諬>qĭ|\ ;
+諩>pŭ|\ ;
+諨>fú|\ ;
+諦>dì|\ ;
+諝>xŭ|\ ;
+諛>yú|\ ;
+諎>zé|\ ;
+諊>jú|\ ;
+諆>qi|\ ;
+諅>ji|\ ;
+諀>pĭ|\ ;
+誽>ná|\ ;
+誼>yì|\ ;
+誻>tà|\ ;
+誳>qu|\ ;
+課>kè|\ ;
+読>dú|\ ;
+誧>pŭ|\ ;
+誤>wù|\ ;
+誣>wu|\ ;
+誟>wu|\ ;
+語>yŭ|\ ;
+誝>an|\ ;
+誖>bó|\ ;
+誒>ai|\ ;
+誎>sù|\ ;
+誋>jì|\ ;
+誈>wú|\ ;
+誀>èr|\ ;
+詸>mí|\ ;
+詥>hé|\ ;
+詣>yì|\ ;
+詡>xŭ|\ ;
+詞>cí|\ ;
+詛>zŭ|\ ;
+詚>dá|\ ;
+詙>bá|\ ;
+詘>qu|\ ;
+詖>bì|\ ;
+詓>qŭ|\ ;
+詒>yí|\ ;
+詏>ào|\ ;
+詎>jù|\ ;
+詍>yì|\ ;
+詆>dĭ|\ ;
+詂>fù|\ ;
+詁>gŭ|\ ;
+訿>zi|\ ;
+訹>xù|\ ;
+訸>hé|\ ;
+訶>he|\ ;
+訴>sù|\ ;
+訳>yì|\ ;
+訲>ci|\ ;
+許>xŭ|\ ;
+訥>nè|\ ;
+訝>yà|\ ;
+記>jì|\ ;
+訖>qì|\ ;
+訑>yí|\ ;
+訏>xu|\ ;
+計>jì|\ ;
+訃>fù|\ ;
+觿>xi|\ ;
+觽>xi|\ ;
+觻>lù|\ ;
+觹>xi|\ ;
+觱>bì|\ ;
+觰>dă|\ ;
+觮>lù|\ ;
+觭>ji|\ ;
+觬>ní|\ ;
+觡>gé|\ ;
+觝>dĭ|\ ;
+觙>jí|\ ;
+觕>cu|\ ;
+覿>dí|\ ;
+覾>jí|\ ;
+覷>qù|\ ;
+覰>qù|\ ;
+覬>jì|\ ;
+覩>dŭ|\ ;
+覦>yú|\ ;
+覤>xì|\ ;
+覡>xí|\ ;
+覛>mì|\ ;
+覗>si|\ ;
+覔>mì|\ ;
+覓>mì|\ ;
+覊>ji|\ ;
+覉>ji|\ ;
+覈>hé|\ ;
+覇>bà|\ ;
+覀>xi|\ ;
+襾>yà|\ ;
+襼>yì|\ ;
+襲>xí|\ ;
+襮>bó|\ ;
+襪>wà|\ ;
+襦>rú|\ ;
+襥>pú|\ ;
+襣>bí|\ ;
+襖>ăo|\ ;
+襏>bó|\ ;
+襍>zá|\ ;
+襋>jí|\ ;
+襆>pú|\ ;
+襀>ji|\ ;
+褹>yì|\ ;
+褵>lí|\ ;
+褲>kù|\ ;
+褟>dá|\ ;
+褕>yú|\ ;
+褔>fù|\ ;
+複>fù|\ ;
+褆>tí|\ ;
+褅>tì|\ ;
+褀>jì|\ ;
+裻>dŭ|\ ;
+裡>lĭ|\ ;
+補>bŭ|\ ;
+裛>yì|\ ;
+裚>jì|\ ;
+裓>gé|\ ;
+袽>rú|\ ;
+袻>ér|\ ;
+袹>mò|\ ;
+袲>yí|\ ;
+袯>bó|\ ;
+袪>qu|\ ;
+袩>bì|\ ;
+袦>nà|\ ;
+袛>di|\ ;
+袚>fú|\ ;
+袙>mò|\ ;
+袘>yí|\ ;
+袔>hè|\ ;
+袓>jŭ|\ ;
+袐>bì|\ ;
+衹>qí|\ ;
+衵>nì|\ ;
+衭>fu|\ ;
+衪>yĭ|\ ;
+衧>yú|\ ;
+衚>hú|\ ;
+衋>xì|\ ;
+衈>ĕr|\ ;
+衇>mò|\ ;
+蠷>qú|\ ;
+蠵>xi|\ ;
+蠱>gŭ|\ ;
+蠮>ye|\ ;
+蠫>lì|\ ;
+蠧>dù|\ ;
+蠦>lú|\ ;
+蠣>lì|\ ;
+蠠>mì|\ ;
+蠟>là|\ ;
+蠚>he|\ ;
+蠐>qí|\ ;
+蠏>rú|\ ;
+蠌>zé|\ ;
+蠈>zé|\ ;
+蠇>lì|\ ;
+蠀>ci|\ ;
+蟿>qì|\ ;
+蟽>dá|\ ;
+蟼>jì|\ ;
+蟻>yĭ|\ ;
+蟸>lĭ|\ ;
+蟴>si|\ ;
+蟰>lí|\ ;
+蟣>jĭ|\ ;
+蟢>xĭ|\ ;
+蟝>qú|\ ;
+蟘>tè|\ ;
+蟖>si|\ ;
+蟔>mò|\ ;
+蟍>lí|\ ;
+蟇>má|\ ;
+蟅>mò|\ ;
+螷>pí|\ ;
+螰>lù|\ ;
+螮>dì|\ ;
+螠>yì|\ ;
+螞>ma|\ ;
+螜>hú|\ ;
+螛>hé|\ ;
+螙>dù|\ ;
+螘>yĭ|\ ;
+螕>bi|\ ;
+螔>yí|\ ;
+螐>wu|\ ;
+螏>jí|\ ;
+螇>xi|\ ;
+螆>cì|\ ;
+螄>si|\ ;
+蝺>jŭ|\ ;
+蝹>án|\ ;
+蝳>dú|\ ;
+蝲>là|\ ;
+蝭>tí|\ ;
+蝦>há|\ ;
+蝜>fù|\ ;
+蝓>yú|\ ;
+蝑>lì|\ ;
+蝍>jí|\ ;
+蝋>là|\ ;
+蝃>dì|\ ;
+蜺>ní|\ ;
+蜶>sù|\ ;
+蜱>pí|\ ;
+蜧>lì|\ ;
+蜤>si|\ ;
+蜟>yù|\ ;
+蜝>qí|\ ;
+蜛>ju|\ ;
+蜌>bì|\ ;
+蜅>fŭ|\ ;
+蛨>mò|\ ;
+蛦>yí|\ ;
+蛡>yì|\ ;
+蛠>lì|\ ;
+蛜>yi|\ ;
+蛗>fù|\ ;
+蛓>cì|\ ;
+蛒>gé|\ ;
+蛌>gŭ|\ ;
+蚾>bŏ|\ ;
+蚽>pí|\ ;
+蚹>fù|\ ;
+蚸>lì|\ ;
+蚷>jù|\ ;
+蚮>tè|\ ;
+蚭>ní|\ ;
+蚥>fŭ|\ ;
+蚞>mù|\ ;
+蚚>qí|\ ;
+蚔>qí|\ ;
+蚑>qí|\ ;
+蚆>pa|\ ;
+虳>dì|\ ;
+虩>xì|\ ;
+虡>jù|\ ;
+虝>hŭ|\ ;
+虜>lŭ|\ ;
+虛>xu|\ ;
+虙>fú|\ ;
+虗>qu|\ ;
+虖>hu|\ ;
+虒>si|\ ;
+虉>yì|\ ;
+虂>lù|\ ;
+虀>ji|\ ;
+蘻>jì|\ ;
+蘺>lí|\ ;
+蘮>jì|\ ;
+蘪>mí|\ ;
+蘥>qù|\ ;
+蘜>jú|\ ;
+蘛>yú|\ ;
+蘙>yì|\ ;
+蘓>su|\ ;
+蘎>jì|\ ;
+蘇>su|\ ;
+蘆>lú|\ ;
+蘄>qí|\ ;
+蘂>ji|\ ;
+蘁>wù|\ ;
+藹>ăi|\ ;
+藶>lì|\ ;
+藴>hé|\ ;
+藦>mó|\ ;
+藡>dí|\ ;
+藞>lă|\ ;
+藝>yì|\ ;
+藚>xù|\ ;
+藙>yì|\ ;
+藗>sù|\ ;
+藌>lā|\ ;
+藈>jí|\ ;
+藇>xù|\ ;
+藅>fá|\ ;
+藄>qí|\ ;
+薿>nĭ|\ ;
+薾>ĕr|\ ;
+薺>jì|\ ;
+薷>rú|\ ;
+薶>lí|\ ;
+薩>sà|\ ;
+薣>gŭ|\ ;
+薙>tì|\ ;
+薘>dá|\ ;
+薖>ke|\ ;
+薋>ci|\ ;
+薊>jì|\ ;
+薆>ài|\ ;
+薂>xí|\ ;
+薁>yù|\ ;
+蕺>jí|\ ;
+蕷>yù|\ ;
+蕮>xì|\ ;
+蕬>si|\ ;
+蕪>wú|\ ;
+蕧>fù|\ ;
+蕦>xu|\ ;
+蕥>yă|\ ;
+蕟>fà|\ ;
+蕗>lù|\ ;
+蕍>yú|\ ;
+蕅>ŏu|\ ;
+蕂>bo|\ ;
+蕀>jí|\ ;
+蔾>lí|\ ;
+蔴>má|\ ;
+蔰>hù|\ ;
+蔤>mì|\ ;
+蔠>ca|\ ;
+蔝>mĭ|\ ;
+蔜>áo|\ ;
+蔛>hú|\ ;
+蔕>dì|\ ;
+蔔>bō|\ ;
+蔐>dí|\ ;
+蔍>lù|\ ;
+蔋>dí|\ ;
+蔇>jì|\ ;
+蔁>xì|\ ;
+蔀>bù|\ ;
+蓾>lŭ|\ ;
+蓽>bì|\ ;
+蓻>jí|\ ;
+蓺>yì|\ ;
+蓹>yŭ|\ ;
+蓭>an|\ ;
+蓣>yù|\ ;
+蓛>cè|\ ;
+蓗>lā|\ ;
+蓒>bì|\ ;
+蓇>gŭ|\ ;
+蓆>xí|\ ;
+蒾>mí|\ ;
+蒽>en|\ ;
+蒵>xi|\ ;
+蒳>nà|\ ;
+蒱>pú|\ ;
+蒰>bó|\ ;
+蒮>yù|\ ;
+蒪>pò|\ ;
+蒩>zu|\ ;
+蒦>wò|\ ;
+蒤>tú|\ ;
+蒣>xú|\ ;
+蒠>xí|\ ;
+蒟>jŭ|\ ;
+蒞>lì|\ ;
+蒚>hé|\ ;
+蒘>nú|\ ;
+葪>jì|\ ;
+葧>bó|\ ;
+葞>mĭ|\ ;
+葖>tú|\ ;
+葍>fú|\ ;
+葋>qú|\ ;
+葊>an|\ ;
+葉>yè|\ ;
+葈>xĭ|\ ;
+葅>ju|\ ;
+萻>an|\ ;
+萺>là|\ ;
+萵>wo|\ ;
+萴>zé|\ ;
+萳>cè|\ ;
+萯>fù|\ ;
+萭>yŭ|\ ;
+萪>ke|\ ;
+萗>cè|\ ;
+萕>qí|\ ;
+萓>yí|\ ;
+萒>jŭ|\ ;
+萆>bì|\ ;
+萀>hŭ|\ ;
+菷>yu|\ ;
+菴>an|\ ;
+菳>ăn|\ ;
+菧>dĭ|\ ;
+菥>xi|\ ;
+菞>lí|\ ;
+菝>bá|\ ;
+菒>bó|\ ;
+菑>zi|\ ;
+菐>pú|\ ;
+菉>lù|\ ;
+菈>la|\ ;
+菂>di|\ ;
+莿>cì|\ ;
+莯>mù|\ ;
+莋>jí|\ ;
+莈>mò|\ ;
+莃>xi|\ ;
+莁>wú|\ ;
+荾>pú|\ ;
+荹>bù|\ ;
+荴>fu|\ ;
+荰>dù|\ ;
+荝>zé|\ ;
+荙>dá|\ ;
+荌>àn|\ ;
+荋>ér|\ ;
+荅>da|\ ;
+茷>fá|\ ;
+茲>zi|\ ;
+茰>yú|\ ;
+茮>ci|\ ;
+茦>cè|\ ;
+茤>jì|\ ;
+茣>wú|\ ;
+茟>yù|\ ;
+茖>gé|\ ;
+茋>dĭ|\ ;
+茊>zi|\ ;
+茈>cí|\ ;
+茇>bá|\ ;
+茀>fú|\ ;
+苾>bì|\ ;
+苽>gu|\ ;
+苼>bó|\ ;
+苸>hu|\ ;
+苩>bó|\ ;
+苢>qŭ|\ ;
+苙>lì|\ ;
+苖>dĭ|\ ;
+苐>yí|\ ;
+苉>pĭ|\ ;
+苈>lì|\ ;
+苅>yì|\ ;
+芺>ăo|\ ;
+芧>xù|\ ;
+芞>qĭ|\ ;
+芘>pí|\ ;
+芓>zĭ|\ ;
+芑>qĭ|\ ;
+芐>hù|\ ;
+芏>dù|\ ;
+芌>xu|\ ;
+芇>mĭ|\ ;
+芅>yì|\ ;
+艻>lè|\ ;
+艫>lú|\ ;
+艪>lŭ|\ ;
+艩>qí|\ ;
+艤>yĭ|\ ;
+艣>lŭ|\ ;
+艗>yì|\ ;
+艍>ju|\ ;
+艊>bó|\ ;
+艅>mù|\ ;
+艃>lí|\ ;
+艀>fú|\ ;
+舻>lú|\ ;
+舴>zé|\ ;
+舥>pa|\ ;
+舗>pu|\ ;
+舖>pù|\ ;
+舉>jŭ|\ ;
+與>yú|\ ;
+臵>gé|\ ;
+臥>wò|\ ;
+臡>ní|\ ;
+臞>qú|\ ;
+臚>lú|\ ;
+臘>là|\ ;
+臑>rú|\ ;
+臍>qí|\ ;
+臋>ér|\ ;
+臈>là|\ ;
+膴>hu|\ ;
+膲>hu|\ ;
+膩>nì|\ ;
+膢>lǘ|\ ;
+膚>fu|\ ;
+膔>lù|\ ;
+膒>ou|\ ;
+膍>pí|\ ;
+膌>jí|\ ;
+膉>yì|\ ;
+膆>sù|\ ;
+膃>wà|\ ;
+腽>wà|\ ;
+腷>bì|\ ;
+腯>tú|\ ;
+腤>an|\ ;
+腣>dì|\ ;
+腛>wu|\ ;
+腘>ér|\ ;
+腗>pí|\ ;
+腒>ju|\ ;
+脵>gŭ|\ ;
+脴>pĭ|\ ;
+脨>cù|\ ;
+脦>de|\ ;
+脟>lè|\ ;
+脎>sà|\ ;
+胾>zì|\ ;
+胹>ér|\ ;
+胷>àn|\ ;
+胬>nú|\ ;
+胩>kă|\ ;
+胣>yĭ|\ ;
+胢>ke|\ ;
+胠>qu|\ ;
+胕>fù|\ ;
+胔>zì|\ ;
+胒>fu|\ ;
+胐>ku|\ ;
+胏>zĭ|\ ;
+胊>qú|\ ;
+胉>bó|\ ;
+胈>bá|\ ;
+肹>bì|\ ;
+肸>xì|\ ;
+肶>pí|\ ;
+肳>qí|\ ;
+肭>nà|\ ;
+肬>nǜ|\ ;
+肣>bĭ|\ ;
+肟>wò|\ ;
+肗>dŭ|\ ;
+肔>yĭ|\ ;
+肑>dì|\ ;
+肐>ge|\ ;
+肅>sù|\ ;
+肂>sì|\ ;
+肀>yù|\ ;
+聻>ji|\ ;
+聺>jí|\ ;
+聥>yŭ|\ ;
+聟>xù|\ ;
+聜>dĭ|\ ;
+聛>bì|\ ;
+聐>yà|\ ;
+聏>ér|\ ;
+聉>wa|\ ;
+耭>ji|\ ;
+耫>zé|\ ;
+耤>jí|\ ;
+耠>hé|\ ;
+耟>jù|\ ;
+耔>zĭ|\ ;
+耏>ér|\ ;
+翺>áo|\ ;
+翵>qú|\ ;
+翯>hè|\ ;
+翜>sè|\ ;
+翗>qí|\ ;
+翖>xì|\ ;
+習>xí|\ ;
+翑>qú|\ ;
+翍>pi|\ ;
+翋>la|\ ;
+翇>fú|\ ;
+羺>hù|\ ;
+羭>yú|\ ;
+義>yì|\ ;
+羛>yì|\ ;
+羖>gŭ|\ ;
+羓>ba|\ ;
+羍>tà|\ ;
+羋>mĭ|\ ;
+羈>ji|\ ;
+羇>ji|\ ;
+羆>pí|\ ;
+羃>mì|\ ;
+罽>jì|\ ;
+罼>bì|\ ;
+罸>fá|\ ;
+罷>bà|\ ;
+罵>mà|\ ;
+罳>si|\ ;
+罰>fá|\ ;
+罯>ăn|\ ;
+罭>yù|\ ;
+罦>fú|\ ;
+罤>tí|\ ;
+罟>gŭ|\ ;
+罞>bā|\ ;
+罝>ju|\ ;
+罛>gu|\ ;
+罙>mí|\ ;
+罏>lú|\ ;
+罊>qì|\ ;
+缽>bo|\ ;
+缌>si|\ ;
+缇>tí|\ ;
+绹>kù|\ ;
+绤>xì|\ ;
+绋>fú|\ ;
+纚>xĭ|\ ;
+纗>lí|\ ;
+纑>lú|\ ;
+續>xù|\ ;
+纆>mò|\ ;
+纅>lì|\ ;
+纀>pú|\ ;
+繼>jì|\ ;
+繻>xu|\ ;
+繺>rú|\ ;
+繹>yì|\ ;
+繶>yì|\ ;
+繴>bì|\ ;
+繫>xì|\ ;
+繨>dá|\ ;
+繥>xi|\ ;
+繘>yù|\ ;
+繋>xì|\ ;
+繄>yi|\ ;
+績>ji|\ ;
+縸>mò|\ ;
+縭>lí|\ ;
+縬>cù|\ ;
+縪>bì|\ ;
+縠>hú|\ ;
+縟>rù|\ ;
+縛>fú|\ ;
+縎>gŭ|\ ;
+縌>nì|\ ;
+縊>yì|\ ;
+縃>xu|\ ;
+緹>tí|\ ;
+緰>yú|\ ;
+緮>fù|\ ;
+緦>si|\ ;
+締>dì|\ ;
+緝>qi|\ ;
+緙>kè|\ ;
+緖>xù|\ ;
+緒>xù|\ ;
+緑>ji|\ ;
+緎>yù|\ ;
+緇>zi|\ ;
+緆>yì|\ ;
+緀>qi|\ ;
+綺>qĭ|\ ;
+綨>qí|\ ;
+綥>qì|\ ;
+綟>lì|\ ;
+継>jì|\ ;
+綔>hù|\ ;
+綒>fu|\ ;
+綍>fú|\ ;
+綌>xì|\ ;
+綈>tí|\ ;
+綇>tì|\ ;
+絲>si|\ ;
+絥>fú|\ ;
+絘>cì|\ ;
+絗>hú|\ ;
+絈>mò|\ ;
+絇>jù|\ ;
+組>zŭ|\ ;
+絁>qu|\ ;
+紼>fú|\ ;
+紶>qŭ|\ ;
+紱>fú|\ ;
+細>xì|\ ;
+紮>za|\ ;
+紪>cĭ|\ ;
+紨>fù|\ ;
+級>jí|\ ;
+紕>pi|\ ;
+紎>zi|\ ;
+納>nà|\ ;
+紌>jì|\ ;
+紇>ge|\ ;
+紆>yu|\ ;
+紀>jì|\ ;
+糿>jĭ|\ ;
+糹>si|\ ;
+糴>dí|\ ;
+糲>lì|\ ;
+糪>bó|\ ;
+糦>xi|\ ;
+糢>mó|\ ;
+糓>gŭ|\ ;
+糑>nì|\ ;
+糐>fu|\ ;
+糎>lí|\ ;
+糈>xŭ|\ ;
+糆>hu|\ ;
+粸>qí|\ ;
+粷>jú|\ ;
+粶>lù|\ ;
+粴>lĭ|\ ;
+粰>fú|\ ;
+粧>fu|\ ;
+粣>cè|\ ;
+粛>sù|\ ;
+粚>lí|\ ;
+粙>xi|\ ;
+粖>mò|\ ;
+粔>jù|\ ;
+粍>lí|\ ;
+粊>bì|\ ;
+粅>wù|\ ;
+粃>bĭ|\ ;
+籾>ní|\ ;
+籲>yù|\ ;
+籭>si|\ ;
+籬>lí|\ ;
+籧>qú|\ ;
+籢>jŭ|\ ;
+籞>yù|\ ;
+籚>lú|\ ;
+籙>lù|\ ;
+籋>mí|\ ;
+籊>tì|\ ;
+籅>yú|\ ;
+簼>bù|\ ;
+簻>ke|\ ;
+簶>bŏ|\ ;
+簵>dù|\ ;
+簴>jù|\ ;
+簬>lù|\ ;
+簠>fŭ|\ ;
+簛>si|\ ;
+簚>mì|\ ;
+簙>bó|\ ;
+簕>lè|\ ;
+簊>ji|\ ;
+簄>hù|\ ;
+簃>yí|\ ;
+簀>zé|\ ;
+篽>yŭ|\ ;
+篴>dí|\ ;
+篳>bì|\ ;
+篰>bù|\ ;
+篥>lì|\ ;
+篤>dŭ|\ ;
+篕>hé|\ ;
+箿>jí|\ ;
+箼>wu|\ ;
+箻>lǜ|\ ;
+箶>hú|\ ;
+箥>bŏ|\ ;
+箤>jú|\ ;
+箣>cè|\ ;
+箛>gu|\ ;
+箙>fú|\ ;
+箓>lù|\ ;
+箒>dá|\ ;
+箊>yu|\ ;
+箇>gè|\ ;
+箆>bì|\ ;
+箅>bì|\ ;
+箄>bì|\ ;
+箁>pú|\ ;
+筴>cè|\ ;
+筥>jŭ|\ ;
+筣>lì|\ ;
+筟>fu|\ ;
+筞>cè|\ ;
+筓>da|\ ;
+筎>rú|\ ;
+筆>bĭ|\ ;
+筁>qŭ|\ ;
+笴>gĕ|\ ;
+笰>fú|\ ;
+笮>zé|\ ;
+笧>cè|\ ;
+笟>gu|\ ;
+笝>nà|\ ;
+笖>yĭ|\ ;
+笓>pí|\ ;
+笌>yá|\ ;
+竬>qŭ|\ ;
+竩>yì|\ ;
+竢>sì|\ ;
+竡>yi|\ ;
+竘>jŭ|\ ;
+竒>qí|\ ;
+窹>wù|\ ;
+窸>xi|\ ;
+窶>jù|\ ;
+窭>jù|\ ;
+窫>yà|\ ;
+窪>wa|\ ;
+窩>wo|\ ;
+窣>sù|\ ;
+窢>xù|\ ;
+窏>wu|\ ;
+窊>wa|\ ;
+穵>wa|\ ;
+穲>lí|\ ;
+穧>jì|\ ;
+穥>yù|\ ;
+穡>sè|\ ;
+穙>pú|\ ;
+穖>jĭ|\ ;
+穓>yì|\ ;
+積>ji|\ ;
+穌>su|\ ;
+穋>lù|\ ;
+穊>jì|\ ;
+穄>jì|\ ;
+穀>gŭ|\ ;
+稺>qĭ|\ ;
+稶>yù|\ ;
+稵>zi|\ ;
+稰>xu|\ ;
+稫>bi|\ ;
+稪>fù|\ ;
+稩>jì|\ ;
+稧>xì|\ ;
+稢>yù|\ ;
+稘>ji|\ ;
+稒>gù|\ ;
+稑>lù|\ ;
+稌>tú|\ ;
+稊>tí|\ ;
+稃>fu|\ ;
+秿>fŭ|\ ;
+秺>dù|\ ;
+秶>zi|\ ;
+秴>hé|\ ;
+秱>cí|\ ;
+秬>jù|\ ;
+秡>bá|\ ;
+秠>pi|\ ;
+秝>ju|\ ;
+秜>ní|\ ;
+秛>pi|\ ;
+秙>kù|\ ;
+秗>bì|\ ;
+秇>yì|\ ;
+秄>zĭ|\ ;
+禿>tu|\ ;
+禵>tí|\ ;
+禲>lì|\ ;
+禰>mí|\ ;
+禮>lĭ|\ ;
+禭>mí|\ ;
+禨>ji|\ ;
+禦>yù|\ ;
+禥>qí|\ ;
+禢>ta|\ ;
+禡>mà|\ ;
+禠>si|\ ;
+禝>jí|\ ;
+禘>dì|\ ;
+禗>si|\ ;
+禕>yi|\ ;
+禔>tí|\ ;
+禑>wú|\ ;
+禌>zi|\ ;
+禊>xì|\ ;
+祿>lù|\ ;
+祻>gù|\ ;
+祦>wú|\ ;
+祤>yŭ|\ ;
+祕>mì|\ ;
+祔>fù|\ ;
+祇>qí|\ ;
+祃>mà|\ ;
+祂>ta|\ ;
+礳>mò|\ ;
+礰>lì|\ ;
+礫>lì|\ ;
+礪>lì|\ ;
+礤>că|\ ;
+礡>bó|\ ;
+礠>cí|\ ;
+礙>ài|\ ;
+礘>qì|\ ;
+礖>yù|\ ;
+礕>pi|\ ;
+礔>pì|\ ;
+礒>yĭ|\ ;
+礏>jí|\ ;
+礍>ke|\ ;
+礉>hé|\ ;
+礇>yù|\ ;
+磿>lì|\ ;
+磾>di|\ ;
+磼>áo|\ ;
+磶>xì|\ ;
+磯>ji|\ ;
+磩>qi|\ ;
+磧>qì|\ ;
+磣>cà|\ ;
+磠>lŭ|\ ;
+磟>lù|\ ;
+磝>áo|\ ;
+磜>qì|\ ;
+磖>la|\ ;
+磒>kĕ|\ ;
+磏>ái|\ ;
+磎>qi|\ ;
+磍>xi|\ ;
+磇>pi|\ ;
+磃>si|\ ;
+碼>mă|\ ;
+碶>qì|\ ;
+碮>tí|\ ;
+碦>kè|\ ;
+碢>kè|\ ;
+碕>qí|\ ;
+碔>wŭ|\ ;
+碋>hè|\ ;
+碆>bo|\ ;
+碁>qí|\ ;
+硵>lŭ|\ ;
+硲>yù|\ ;
+硢>wò|\ ;
+硋>ài|\ ;
+硉>lù|\ ;
+砶>pò|\ ;
+砵>bo|\ ;
+砳>lè|\ ;
+砱>ài|\ ;
+砮>nŭ|\ ;
+砬>lá|\ ;
+砪>mŭ|\ ;
+砨>ài|\ ;
+砡>ke|\ ;
+砠>qu|\ ;
+砞>mò|\ ;
+砆>fu|\ ;
+砅>lì|\ ;
+矻>kù|\ ;
+矹>ku|\ ;
+矷>zĭ|\ ;
+矵>qì|\ ;
+矠>cè|\ ;
+矞>yù|\ ;
+矖>xĭ|\ ;
+矑>lú|\ ;
+矋>lì|\ ;
+瞹>ài|\ ;
+瞸>jí|\ ;
+瞲>xù|\ ;
+瞱>yè|\ ;
+瞨>pú|\ ;
+瞤>bì|\ ;
+瞡>jì|\ ;
+瞙>mò|\ ;
+瞘>ou|\ ;
+瞖>yì|\ ;
+瞔>zé|\ ;
+瞇>mi|\ ;
+瞂>fa|\ ;
+瞁>fá|\ ;
+睼>tì|\ ;
+睳>xi|\ ;
+睲>jì|\ ;
+睰>mà|\ ;
+睮>yú|\ ;
+睪>yì|\ ;
+睩>lù|\ ;
+睤>bì|\ ;
+睝>lí|\ ;
+睎>xi|\ ;
+眽>mò|\ ;
+眲>èr|\ ;
+眱>yí|\ ;
+眫>mĭ|\ ;
+眥>zì|\ ;
+眤>yí|\ ;
+眡>di|\ ;
+眜>mò|\ ;
+眗>ju|\ ;
+眔>dà|\ ;
+盻>xì|\ ;
+盵>qì|\ ;
+盭>lì|\ ;
+盬>gŭ|\ ;
+盫>an|\ ;
+盧>lú|\ ;
+盦>an|\ ;
+盝>lù|\ ;
+盙>fŭ|\ ;
+盓>gĕ|\ ;
+盋>bo|\ ;
+盉>hé|\ ;
+盇>hé|\ ;
+皾>dú|\ ;
+皼>gŭ|\ ;
+皷>gŭ|\ ;
+皬>hè|\ ;
+皪>lì|\ ;
+皧>ài|\ ;
+皣>yè|\ ;
+皟>zé|\ ;
+皚>ái|\ ;
+皕>bi|\ ;
+皍>jí|\ ;
+皉>cĭ|\ ;
+皅>pa|\ ;
+皁>dí|\ ;
+皀>bi|\ ;
+癿>jí|\ ;
+發>fa|\ ;
+発>fa|\ ;
+癹>po|\ ;
+癶>bo|\ ;
+癧>lì|\ ;
+癠>jì|\ ;
+癘>lì|\ ;
+癒>yù|\ ;
+癋>hè|\ ;
+癊>ái|\ ;
+癁>fú|\ ;
+瘼>mò|\ ;
+瘻>lǘ|\ ;
+瘱>yì|\ ;
+瘯>cù|\ ;
+瘞>yì|\ ;
+瘜>xí|\ ;
+瘔>kù|\ ;
+瘏>tú|\ ;
+瘉>yù|\ ;
+瘈>jì|\ ;
+瘄>cù|\ ;
+瘂>yă|\ ;
+痺>bì|\ ;
+痷>an|\ ;
+痵>jì|\ ;
+痲>má|\ ;
+痬>yì|\ ;
+痡>pu|\ ;
+痜>tu|\ ;
+痆>nì|\ ;
+疺>fá|\ ;
+疷>qí|\ ;
+疪>bì|\ ;
+疞>xu|\ ;
+疕>bĭ|\ ;
+疈>bò|\ ;
+異>yì|\ ;
+畮>mŭ|\ ;
+畬>yú|\ ;
+畣>dá|\ ;
+畢>bì|\ ;
+畟>cè|\ ;
+畞>mŭ|\ ;
+畝>mŭ|\ ;
+畗>dá|\ ;
+畖>wa|\ ;
+畒>mŭ|\ ;
+畐>fú|\ ;
+畉>fú|\ ;
+畆>mŭ|\ ;
+畁>qí|\ ;
+甶>fú|\ ;
+甪>lù|\ ;
+甦>su|\ ;
+甒>wŭ|\ ;
+甌>ou|\ ;
+甋>dì|\ ;
+甈>qì|\ ;
+甆>cí|\ ;
+瓵>yí|\ ;
+瓳>hú|\ ;
+瓪>bù|\ ;
+瓥>lì|\ ;
+瓡>wà|\ ;
+瓝>bó|\ ;
+瓗>xi|\ ;
+瓕>mí|\ ;
+瓑>lì|\ ;
+瓐>lú|\ ;
+瓎>là|\ ;
+瓋>bó|\ ;
+瓈>lí|\ ;
+瓅>lì|\ ;
+瓄>dú|\ ;
+璾>jì|\ ;
+璽>xĭ|\ ;
+璷>lú|\ ;
+璵>yú|\ ;
+璱>sè|\ ;
+璦>ài|\ ;
+璣>ji|\ ;
+璖>qú|\ ;
+璑>wú|\ ;
+璈>áo|\ ;
+璂>qí|\ ;
+瑿>lī|\ ;
+瑹>tú|\ ;
+瑮>lì|\ ;
+瑪>mă|\ ;
+瑦>wu|\ ;
+瑘>yé|\ ;
+瑅>tí|\ ;
+瑀>yŭ|\ ;
+琽>dŭ|\ ;
+琺>fà|\ ;
+琭>lù|\ ;
+琙>yù|\ ;
+琍>lì|\ ;
+琋>lí|\ ;
+琈>fú|\ ;
+珸>wú|\ ;
+珷>wŭ|\ ;
+珶>dì|\ ;
+珬>xù|\ ;
+珟>sù|\ ;
+珝>xŭ|\ ;
+珕>lì|\ ;
+珌>bì|\ ;
+珇>zŭ|\ ;
+珆>yí|\ ;
+珁>cí|\ ;
+玼>cĭ|\ ;
+玸>ci|\ ;
+玵>án|\ ;
+玴>yì|\ ;
+玭>pí|\ ;
+玡>yà|\ ;
+玞>fu|\ ;
+玝>wŭ|\ ;
+玘>jĭ|\ ;
+玗>yú|\ ;
+玓>dì|\ ;
+玐>ba|\ ;
+玏>lè|\ ;
+玍>gă|\ ;
+玊>sù|\ ;
+玈>lú|\ ;
+玆>zi|\ ;
+玂>qí|\ ;
+獼>mí|\ ;
+獺>tă|\ ;
+獹>lú|\ ;
+獨>dú|\ ;
+獦>gé|\ ;
+獥>xí|\ ;
+獝>yù|\ ;
+獛>pú|\ ;
+獙>bì|\ ;
+獘>bì|\ ;
+獓>áo|\ ;
+獏>mú|\ ;
+獈>yì|\ ;
+獄>yù|\ ;
+獁>mà|\ ;
+猽>mă|\ ;
+猼>bó|\ ;
+猲>hè|\ ;
+猰>yà|\ ;
+猧>wo|\ ;
+猤>jì|\ ;
+猚>yá|\ ;
+猉>qí|\ ;
+猈>bà|\ ;
+狶>xĭ|\ ;
+狳>yú|\ ;
+狧>tà|\ ;
+狤>jí|\ ;
+狢>hé|\ ;
+狜>gŭ|\ ;
+狛>pò|\ ;
+狕>ăo|\ ;
+狔>nĭ|\ ;
+狓>pi|\ ;
+狋>ní|\ ;
+狊>jú|\ ;
+狉>pi|\ ;
+狇>mù|\ ;
+犽>yá|\ ;
+犻>bó|\ ;
+犵>qì|\ ;
+犳>án|\ ;
+犱>jĭ|\ ;
+犮>bá|\ ;
+犧>xi|\ ;
+犥>bó|\ ;
+犤>pí|\ ;
+犢>dú|\ ;
+犡>lì|\ ;
+犛>lí|\ ;
+犘>má|\ ;
+犔>xì|\ ;
+犑>jú|\ ;
+犐>ke|\ ;
+犆>tè|\ ;
+犂>lí|\ ;
+牸>zì|\ ;
+牴>dĭ|\ ;
+牳>mŭ|\ ;
+牱>ge|\ ;
+牭>sì|\ ;
+牫>ge|\ ;
+牠>ta|\ ;
+牘>dú|\ ;
+牔>bó|\ ;
+牁>ge|\ ;
+爾>ĕr|\ ;
+爺>yé|\ ;
+爴>fŭ|\ ;
+爩>yù|\ ;
+爢>mí|\ ;
+爗>yè|\ ;
+爐>lú|\ ;
+爏>lì|\ ;
+爊>ao|\ ;
+爉>là|\ ;
+爇>rè|\ ;
+爅>mò|\ ;
+爄>lì|\ ;
+爀>bó|\ ;
+燸>rú|\ ;
+燱>yì|\ ;
+燨>xi|\ ;
+燡>yì|\ ;
+燏>yù|\ ;
+燁>yè|\ ;
+熼>yì|\ ;
+熻>xi|\ ;
+熺>xi|\ ;
+熱>rè|\ ;
+熰>ou|\ ;
+熪>yí|\ ;
+熩>ao|\ ;
+熤>yì|\ ;
+熝>lù|\ ;
+熚>bì|\ ;
+熈>xi|\ ;
+熆>hé|\ ;
+熃>wù|\ ;
+熂>xì|\ ;
+煿>bó|\ ;
+煠>yè|\ ;
+煕>xi|\ ;
+煏>bì|\ ;
+煂>hè|\ ;
+焸>gŭ|\ ;
+焷>pí|\ ;
+焬>xí|\ ;
+焥>wò|\ ;
+焤>fŭ|\ ;
+焣>jù|\ ;
+無>wú|\ ;
+焟>xí|\ ;
+焗>jú|\ ;
+焏>jí|\ ;
+焍>dì|\ ;
+焈>xi|\ ;
+焅>kù|\ ;
+焃>hè|\ ;
+焁>xi|\ ;
+焀>hú|\ ;
+烼>hu|\ ;
+烳>pŭ|\ ;
+烰>fú|\ ;
+烞>pò|\ ;
+烖>gé|\ ;
+烏>wu|\ ;
+烌>wù|\ ;
+烅>xù|\ ;
+炦>bá|\ ;
+炥>fú|\ ;
+炣>kĕ|\ ;
+炟>dá|\ ;
+炑>mù|\ ;
+炋>pi|\ ;
+炈>yì|\ ;
+炇>pò|\ ;
+炆>lú|\ ;
+灪>yù|\ ;
+灖>mĭ|\ ;
+灕>lí|\ ;
+灑>să|\ ;
+灍>lí|\ ;
+灋>fă|\ ;
+灈>qú|\ ;
+瀷>yì|\ ;
+瀱>jì|\ ;
+瀰>mí|\ ;
+瀫>hú|\ ;
+瀝>lì|\ ;
+瀘>lú|\ ;
+瀔>gŭ|\ ;
+瀎>mò|\ ;
+瀆>dú|\ ;
+瀃>sì|\ ;
+濿>lì|\ ;
+濲>gŭ|\ ;
+濭>ài|\ ;
+濨>cí|\ ;
+濥>xi|\ ;
+濣>wò|\ ;
+濟>jì|\ ;
+濝>qí|\ ;
+濚>bì|\ ;
+濗>mì|\ ;
+濖>nì|\ ;
+濔>mĭ|\ ;
+濐>mí|\ ;
+濌>tà|\ ;
+濈>jí|\ ;
+濇>sè|\ ;
+澾>tà|\ ;
+澽>jù|\ ;
+澼>pì|\ ;
+澲>yè|\ ;
+澬>zi|\ ;
+澦>yù|\ ;
+澤>zé|\ ;
+澞>yú|\ ;
+澙>xì|\ ;
+澕>hé|\ ;
+澓>fú|\ ;
+澅>ào|\ ;
+澁>sè|\ ;
+澀>sè|\ ;
+潷>bĭ|\ ;
+潶>bì|\ ;
+潳>tú|\ ;
+潱>să|\ ;
+潪>dí|\ ;
+潩>yì|\ ;
+潥>sù|\ ;
+潟>xì|\ ;
+潝>xi|\ ;
+潗>jí|\ ;
+潖>pá|\ ;
+潕>wŭ|\ ;
+潒>bo|\ ;
+潑>po|\ ;
+潐>bo|\ ;
+潎>pì|\ ;
+潊>xù|\ ;
+漽>tí|\ ;
+漵>xù|\ ;
+漬>zì|\ ;
+漦>lí|\ ;
+漥>wa|\ ;
+漞>mì|\ ;
+漝>xí|\ ;
+漜>yĕ|\ ;
+漚>ou|\ ;
+漈>jì|\ ;
+漇>xĭ|\ ;
+漄>yá|\ ;
+漃>jí|\ ;
+漁>yú|\ ;
+滺>dí|\ ;
+滸>hŭ|\ ;
+滷>lŭ|\ ;
+滶>áo|\ ;
+滵>mì|\ ;
+滭>bì|\ ;
+滬>hù|\ ;
+滪>yù|\ ;
+滒>bì|\ ;
+滌>dí|\ ;
+滊>cí|\ ;
+滆>hé|\ ;
+溹>sù|\ ;
+溸>sù|\ ;
+溭>zé|\ ;
+溩>wù|\ ;
+溦>qi|\ ;
+溤>mă|\ ;
+溡>bó|\ ;
+溞>mì|\ ;
+溛>wa|\ ;
+溚>dá|\ ;
+湽>zi|\ ;
+湨>qù|\ ;
+湥>tú|\ ;
+湤>jú|\ ;
+湢>bì|\ ;
+湡>yú|\ ;
+湙>yì|\ ;
+湒>jí|\ ;
+湑>xŭ|\ ;
+湐>mò|\ ;
+湇>qì|\ ;
+湆>qì|\ ;
+渿>bá|\ ;
+渳>mĭ|\ ;
+渱>ĕr|\ ;
+渮>ge|\ ;
+測>cè|\ ;
+渧>dì|\ ;
+渒>pì|\ ;
+済>jì|\ ;
+渇>kĕ|\ ;
+渃>rè|\ ;
+淿>mì|\ ;
+淴>hu|\ ;
+淯>yù|\ ;
+淧>mì|\ ;
+淥>lù|\ ;
+淢>yù|\ ;
+淠>pì|\ ;
+淗>jú|\ ;
+淕>lù|\ ;
+淒>qi|\ ;
+淈>gŭ|\ ;
+淂>dé|\ ;
+涾>tà|\ ;
+涺>ju|\ ;
+涴>wò|\ ;
+涜>dú|\ ;
+涘>sì|\ ;
+涖>lì|\ ;
+浳>yì|\ ;
+浰>lì|\ ;
+浬>lĭ|\ ;
+浥>yì|\ ;
+浡>bó|\ ;
+浝>dí|\ ;
+浉>jĭ|\ ;
+浂>yì|\ ;
+浀>qŭ|\ ;
+洿>wu|\ ;
+洰>jù|\ ;
+洦>mò|\ ;
+洣>mĭ|\ ;
+洢>yi|\ ;
+洟>yí|\ ;
+洝>àn|\ ;
+洖>wú|\ ;
+洑>fú|\ ;
+洏>ér|\ ;
+洍>sì|\ ;
+泲>jĭ|\ ;
+泭>fu|\ ;
+泦>jú|\ ;
+泤>nĭ|\ ;
+泝>sù|\ ;
+泚>cĭ|\ ;
+泘>hu|\ ;
+泒>gu|\ ;
+泐>lè|\ ;
+泋>bì|\ ;
+泆>yi|\ ;
+泃>jù|\ ;
+泀>ju|\ ;
+沷>fa|\ ;
+沶>fú|\ ;
+沵>mĭ|\ ;
+沴>lì|\ ;
+沢>ou|\ ;
+沞>za|\ ;
+沘>bĭ|\ ;
+沕>wù|\ ;
+沍>hù|\ ;
+沀>xù|\ ;
+汿>xù|\ ;
+汥>gŭ|\ ;
+汚>wa|\ ;
+汙>wu|\ ;
+汏>dà|\ ;
+氼>nì|\ ;
+氻>lè|\ ;
+氬>yà|\ ;
+氥>xi|\ ;
+氣>qì|\ ;
+氜>rì|\ ;
+気>qì|\ ;
+氍>qú|\ ;
+氁>mú|\ ;
+氀>lǘ|\ ;
+毾>tà|\ ;
+毼>hé|\ ;
+毴>bi|\ ;
+毱>jú|\ ;
+毪>mú|\ ;
+毩>jú|\ ;
+毦>èr|\ ;
+毤>ĕr|\ ;
+毣>mù|\ ;
+毘>pí|\ ;
+毐>ăi|\ ;
+毉>yi|\ ;
+毆>ou|\ ;
+毄>ji|\ ;
+殼>ké|\ ;
+殻>ké|\ ;
+殹>yì|\ ;
+殰>dú|\ ;
+殬>dù|\ ;
+殧>cù|\ ;
+殢>tì|\ ;
+殝>nì|\ ;
+殜>yè|\ ;
+殔>yì|\ ;
+殐>sù|\ ;
+殈>xù|\ ;
+歿>mò|\ ;
+歾>mò|\ ;
+歷>lì|\ ;
+歶>yú|\ ;
+歴>lì|\ ;
+歰>sè|\ ;
+歮>sè|\ ;
+歫>jù|\ ;
+歩>bù|\ ;
+歨>bù|\ ;
+歟>yú|\ ;
+歝>yì|\ ;
+歘>xu|\ ;
+歔>xu|\ ;
+歒>tì|\ ;
+歑>hu|\ ;
+歐>ou|\ ;
+歍>wu|\ ;
+歋>yí|\ ;
+歈>ŏu|\ ;
+欸>ăi|\ ;
+欰>xu|\ ;
+欯>xí|\ ;
+欭>he|\ ;
+欨>ké|\ ;
+欥>yù|\ ;
+欝>yù|\ ;
+欛>bà|\ ;
+欚>lĭ|\ ;
+欐>lĭ|\ ;
+欎>yù|\ ;
+欋>qú|\ ;
+欅>jŭ|\ ;
+欂>bó|\ ;
+櫸>jŭ|\ ;
+櫲>yù|\ ;
+櫯>su|\ ;
+櫭>jì|\ ;
+櫪>lì|\ ;
+櫨>lú|\ ;
+櫟>lì|\ ;
+櫝>dú|\ ;
+櫙>ou|\ ;
+櫖>lǘ|\ ;
+櫔>lì|\ ;
+櫓>lŭ|\ ;
+櫒>sà|\ ;
+櫇>pó|\ ;
+櫅>ji|\ ;
+櫁>mì|\ ;
+櫀>qí|\ ;
+檽>ér|\ ;
+檹>yi|\ ;
+檷>mí|\ ;
+檵>jì|\ ;
+檱>qí|\ ;
+檥>yĭ|\ ;
+檝>jí|\ ;
+檘>bì|\ ;
+檕>jì|\ ;
+檏>pŭ|\ ;
+檍>yì|\ ;
+檌>pú|\ ;
+檋>ju|\ ;
+橽>tà|\ ;
+橶>jí|\ ;
+橭>gu|\ ;
+機>ji|\ ;
+橚>sù|\ ;
+橅>mó|\ ;
+橃>fa|\ ;
+樸>pú|\ ;
+樲>èr|\ ;
+樚>lù|\ ;
+樖>ke|\ ;
+樒>mì|\ ;
+樐>lŭ|\ ;
+樍>ji|\ ;
+樂>lè|\ ;
+槷>yì|\ ;
+槴>hù|\ ;
+槲>hú|\ ;
+槣>qĭ|\ ;
+槢>xí|\ ;
+槒>xù|\ ;
+槉>jí|\ ;
+槅>gé|\ ;
+槂>hé|\ ;
+榾>gŭ|\ ;
+榽>xi|\ ;
+榼>kè|\ ;
+榹>si|\ ;
+榪>mà|\ ;
+榡>sù|\ ;
+榟>zĭ|\ ;
+榙>tă|\ ;
+榖>gŭ|\ ;
+榓>mì|\ ;
+榑>fù|\ ;
+榏>yì|\ ;
+榃>fú|\ ;
+楽>lè|\ ;
+極>jí|\ ;
+楴>dì|\ ;
+楰>yú|\ ;
+業>yè|\ ;
+楪>yè|\ ;
+楡>yú|\ ;
+楜>hú|\ ;
+楛>hù|\ ;
+楘>mù|\ ;
+楕>jí|\ ;
+楒>si|\ ;
+楋>là|\ ;
+楈>xu|\ ;
+楅>bì|\ ;
+楀>yŭ|\ ;
+椸>yí|\ ;
+椞>xì|\ ;
+椔>zi|\ ;
+椏>ya|\ ;
+椈>jú|\ ;
+椇>jŭ|\ ;
+椂>lù|\ ;
+棴>fú|\ ;
+棳>kĕ|\ ;
+棲>qi|\ ;
+棫>yù|\ ;
+棨>qĭ|\ ;
+棝>gù|\ ;
+棜>yù|\ ;
+棛>yù|\ ;
+棙>lì|\ ;
+棏>tè|\ ;
+棌>ao|\ ;
+棊>qí|\ ;
+棄>qì|\ ;
+棃>lí|\ ;
+梸>lí|\ ;
+梮>jú|\ ;
+梩>lí|\ ;
+梞>jì|\ ;
+梑>dí|\ ;
+梐>bì|\ ;
+梎>ao|\ ;
+梌>tú|\ ;
+梊>dì|\ ;
+梀>cù|\ ;
+桼>qi|\ ;
+桸>xi|\ ;
+桲>bó|\ ;
+桏>jú|\ ;
+桍>ku|\ ;
+桋>yí|\ ;
+桇>an|\ ;
+栿>fú|\ ;
+栵>lì|\ ;
+栰>fá|\ ;
+栮>ĕr|\ ;
+栭>ér|\ ;
+栧>yì|\ ;
+栥>zi|\ ;
+栜>sù|\ ;
+栛>lì|\ ;
+栘>yĭ|\ ;
+栔>qì|\ ;
+柾>cè|\ ;
+柶>sì|\ ;
+柲>bì|\ ;
+柭>bo|\ ;
+柫>fú|\ ;
+柪>ao|\ ;
+柨>pu|\ ;
+柧>gu|\ ;
+柎>fu|\ ;
+柌>cí|\ ;
+柇>hé|\ ;
+柆>la|\ ;
+柅>nĭ|\ ;
+柂>yí|\ ;
+柀>bĭ|\ ;
+枽>yè|\ ;
+枼>yè|\ ;
+枻>yì|\ ;
+枹>fu|\ ;
+枲>xĭ|\ ;
+枱>yí|\ ;
+枖>kè|\ ;
+枒>yá|\ ;
+枑>hù|\ ;
+枎>fú|\ ;
+枍>yì|\ ;
+枈>bì|\ ;
+枆>bĭ|\ ;
+枅>ji|\ ;
+杫>sì|\ ;
+杩>mà|\ ;
+杧>mă|\ ;
+杝>yí|\ ;
+杚>gŭ|\ ;
+杙>yì|\ ;
+杕>dì|\ ;
+杍>zĭ|\ ;
+杇>wu|\ ;
+杅>yú|\ ;
+朿>cì|\ ;
+朼>bĭ|\ ;
+朸>lì|\ ;
+朳>ba|\ ;
+朞>ji|\ ;
+朒>nǜ|\ ;
+朇>pí|\ ;
+朂>xù|\ ;
+曶>hu|\ ;
+曥>lú|\ ;
+曞>lì|\ ;
+曘>rú|\ ;
+曗>yè|\ ;
+曖>ài|\ ;
+曐>bó|\ ;
+曎>yì|\ ;
+曆>lì|\ ;
+曅>yè|\ ;
+曄>yè|\ ;
+曁>jì|\ ;
+曀>yì|\ ;
+暿>xĭ|\ ;
+暱>nì|\ ;
+暯>mò|\ ;
+暦>lì|\ ;
+暣>qì|\ ;
+暡>bó|\ ;
+暏>dŭ|\ ;
+暍>hè|\ ;
+暊>fŭ|\ ;
+晻>ăn|\ ;
+晹>yì|\ ;
+晵>qĭ|\ ;
+晳>xi|\ ;
+晲>yĭ|\ ;
+晞>xi|\ ;
+晇>xu|\ ;
+昹>ăi|\ ;
+昫>xŭ|\ ;
+昩>mò|\ ;
+昛>jù|\ ;
+昗>zè|\ ;
+昒>hu|\ ;
+昈>hù|\ ;
+旴>xu|\ ;
+旳>dì|\ ;
+旣>jì|\ ;
+旡>jì|\ ;
+旟>yú|\ ;
+旞>mó|\ ;
+旑>yĭ|\ ;
+旉>fu|\ ;
+旇>pi|\ ;
+旂>qí|\ ;
+斺>wu|\ ;
+斪>qú|\ ;
+斞>yŭ|\ ;
+斔>yŭ|\ ;
+斊>qí|\ ;
+斉>qí|\ ;
+斄>lì|\ ;
+斃>bì|\ ;
+斁>yì|\ ;
+敼>xĭ|\ ;
+敺>qu|\ ;
+敵>dí|\ ;
+敳>ái|\ ;
+敱>ái|\ ;
+敡>yì|\ ;
+敘>xù|\ ;
+敔>yŭ|\ ;
+敍>xù|\ ;
+敋>gé|\ ;
+敇>cè|\ ;
+敄>wù|\ ;
+敀>bó|\ ;
+攺>yĭ|\ ;
+攴>pu|\ ;
+攳>po|\ ;
+攲>qi|\ ;
+攭>lì|\ ;
+攦>lì|\ ;
+攠>mí|\ ;
+攎>lú|\ ;
+攋>là|\ ;
+擿>tì|\ ;
+擼>lì|\ ;
+擵>mó|\ ;
+擱>ge|\ ;
+擮>jí|\ ;
+擬>nĭ|\ ;
+擫>yè|\ ;
+擩>rŭ|\ ;
+擨>yé|\ ;
+擧>jŭ|\ ;
+擠>jĭ|\ ;
+擟>mí|\ ;
+擛>yè|\ ;
+據>jù|\ ;
+擙>ào|\ ;
+擖>gĕ|\ ;
+擕>xi|\ ;
+擊>ji|\ ;
+擈>bŭ|\ ;
+擇>zé|\ ;
+擄>lŭ|\ ;
+撻>tà|\ ;
+撲>pu|\ ;
+撫>fŭ|\ ;
+撥>bo|\ ;
+撠>jĭ|\ ;
+撘>da|\ ;
+撎>yì|\ ;
+摮>áo|\ ;
+摨>ma|\ ;
+摢>hù|\ ;
+摝>lù|\ ;
+摙>lí|\ ;
+摖>qì|\ ;
+摕>dì|\ ;
+摋>sà|\ ;
+摀>wŭ|\ ;
+搿>gé|\ ;
+搸>xí|\ ;
+搲>wa|\ ;
+搰>hú|\ ;
+搮>gŭ|\ ;
+搨>tà|\ ;
+搛>da|\ ;
+搙>nù|\ ;
+搕>kè|\ ;
+揬>tú|\ ;
+揧>là|\ ;
+揦>lá|\ ;
+揥>tì|\ ;
+揤>dì|\ ;
+揢>kè|\ ;
+揟>xu|\ ;
+揊>pì|\ ;
+掭>pá|\ ;
+掦>tì|\ ;
+掜>yĭ|\ ;
+掗>yà|\ ;
+掑>qí|\ ;
+掎>jĭ|\ ;
+掋>dĭ|\ ;
+捿>xi|\ ;
+捽>zú|\ ;
+捬>fŭ|\ ;
+捪>ju|\ ;
+捙>yì|\ ;
+捗>bù|\ ;
+捓>yé|\ ;
+捈>tú|\ ;
+挶>jú|\ ;
+挮>tĭ|\ ;
+挬>bó|\ ;
+挜>yà|\ ;
+挙>jŭ|\ ;
+挐>ná|\ ;
+挌>gé|\ ;
+挀>bò|\ ;
+拺>cè|\ ;
+拠>jù|\ ;
+拞>dĭ|\ ;
+拕>ào|\ ;
+拏>ná|\ ;
+抾>qu|\ ;
+抸>za|\ ;
+抷>pi|\ ;
+抴>yì|\ ;
+抳>nĭ|\ ;
+抲>he|\ ;
+抮>yè|\ ;
+抪>pu|\ ;
+択>zé|\ ;
+抝>ăo|\ ;
+抜>bá|\ ;
+抙>fu|\ ;
+抐>nù|\ ;
+抈>bà|\ ;
+抇>gŭ|\ ;
+抅>ju|\ ;
+扻>zì|\ ;
+扸>xi|\ ;
+扷>ào|\ ;
+扵>yú|\ ;
+扱>xi|\ ;
+扤>wù|\ ;
+扢>gŭ|\ ;
+扝>ku|\ ;
+扜>wu|\ ;
+払>fú|\ ;
+扐>lè|\ ;
+扏>pu|\ ;
+扆>yĭ|\ ;
+扅>yí|\ ;
+戻>lì|\ ;
+戸>hù|\ ;
+戶>hù|\ ;
+戵>qú|\ ;
+戲>xì|\ ;
+戱>xì|\ ;
+戯>xì|\ ;
+戫>yù|\ ;
+戨>ge|\ ;
+戓>ge|\ ;
+戂>mí|\ ;
+懼>jù|\ ;
+懻>jì|\ ;
+懯>fu|\ ;
+懪>bó|\ ;
+懡>mŏ|\ ;
+懠>qí|\ ;
+懝>ài|\ ;
+懙>yŭ|\ ;
+懓>ài|\ ;
+懎>sè|\ ;
+懌>yì|\ ;
+懅>qú|\ ;
+憶>yì|\ ;
+憵>pi|\ ;
+憱>cù|\ ;
+憮>wŭ|\ ;
+憡>cè|\ ;
+憟>sù|\ ;
+憙>xĭ|\ ;
+憘>xĭ|\ ;
+憈>qu|\ ;
+慾>yù|\ ;
+慽>qi|\ ;
+慼>qi|\ ;
+慸>dì|\ ;
+慪>òu|\ ;
+慠>ào|\ ;
+慔>mò|\ ;
+慉>xù|\ ;
+慄>lì|\ ;
+愽>bó|\ ;
+愵>nì|\ ;
+愳>jù|\ ;
+愲>gŭ|\ ;
+愱>jí|\ ;
+愭>qí|\ ;
+愬>sù|\ ;
+愛>ài|\ ;
+愙>kè|\ ;
+愘>kè|\ ;
+愊>bì|\ ;
+愅>gé|\ ;
+惿>tí|\ ;
+惻>cè|\ ;
+惪>dé|\ ;
+惞>wu|\ ;
+惖>tì|\ ;
+惒>hé|\ ;
+惎>jì|\ ;
+惄>nì|\ ;
+惁>xi|\ ;
+悽>qi|\ ;
+悷>lì|\ ;
+悮>wù|\ ;
+悧>lì|\ ;
+悥>yì|\ ;
+悡>lí|\ ;
+悞>wù|\ ;
+悕>xi|\ ;
+悑>bù|\ ;
+悐>tì|\ ;
+悇>yù|\ ;
+悆>yù|\ ;
+悂>pi|\ ;
+恴>dé|\ ;
+恞>yí|\ ;
+恖>si|\ ;
+恓>xi|\ ;
+恈>mú|\ ;
+恄>xì|\ ;
+怸>xi|\ ;
+怷>xi|\ ;
+怶>pi|\ ;
+怴>xù|\ ;
+怭>bì|\ ;
+怬>xì|\ ;
+怤>fu|\ ;
+怢>tú|\ ;
+怟>dì|\ ;
+怚>jù|\ ;
+怘>gù|\ ;
+怈>yì|\ ;
+怇>jù|\ ;
+忯>qí|\ ;
+忬>yù|\ ;
+忦>yè|\ ;
+忥>xì|\ ;
+忣>jí|\ ;
+忢>wù|\ ;
+忚>xi|\ ;
+忔>qì|\ ;
+忇>lè|\ ;
+忂>qú|\ ;
+徳>dé|\ ;
+徯>xi|\ ;
+復>fù|\ ;
+徛>qì|\ ;
+徍>wa|\ ;
+徆>xi|\ ;
+彿>fú|\ ;
+彶>jí|\ ;
+彧>yù|\ ;
+彞>yí|\ ;
+彜>yí|\ ;
+彛>yí|\ ;
+彔>lù|\ ;
+彑>jì|\ ;
+彐>jì|\ ;
+彌>mí|\ ;
+彃>bì|\ ;
+彂>fa|\ ;
+弻>bì|\ ;
+弬>yí|\ ;
+弤>dĭ|\ ;
+弣>fŭ|\ ;
+弝>bà|\ ;
+弙>wu|\ ;
+弖>hù|\ ;
+弐>èr|\ ;
+弍>èr|\ ;
+弌>yi|\ ;
+弆>jŭ|\ ;
+廹>pò|\ ;
+廸>dí|\ ;
+廲>lí|\ ;
+廬>lú|\ ;
+廦>bì|\ ;
+廡>wŭ|\ ;
+廝>si|\ ;
+廜>tu|\ ;
+廙>yì|\ ;
+廘>lù|\ ;
+廅>hé|\ ;
+廁>cè|\ ;
+庽>yù|\ ;
+庼>cè|\ ;
+庴>jí|\ ;
+庯>bĭ|\ ;
+庫>kù|\ ;
+庩>tú|\ ;
+庡>yĭ|\ ;
+庛>ci|\ ;
+庘>ya|\ ;
+庌>yă|\ ;
+庅>mō|\ ;
+庂>zè|\ ;
+幾>ji|\ ;
+幦>mì|\ ;
+幣>bì|\ ;
+幠>hu|\ ;
+幙>mù|\ ;
+幘>zé|\ ;
+幎>mì|\ ;
+幆>yì|\ ;
+幁>xu|\ ;
+帾>dŭ|\ ;
+帺>qí|\ ;
+帤>rú|\ ;
+帠>yì|\ ;
+帟>yì|\ ;
+帞>mò|\ ;
+帗>fú|\ ;
+帓>mà|\ ;
+帍>hù|\ ;
+帊>pà|\ ;
+帀>za|\ ;
+巿>fú|\ ;
+巈>jú|\ ;
+巇>xi|\ ;
+巁>lì|\ ;
+嶼>yŭ|\ ;
+嶻>zá|\ ;
+嶴>ào|\ ;
+嶳>dì|\ ;
+嶲>xi|\ ;
+嶱>kĕ|\ ;
+嶯>jí|\ ;
+嶬>yí|\ ;
+嶫>yè|\ ;
+嶪>yè|\ ;
+嶧>yì|\ ;
+嶓>bo|\ ;
+嶏>bó|\ ;
+嶎>yù|\ ;
+嶍>xí|\ ;
+嶇>qu|\ ;
+嶅>áo|\ ;
+嶀>tu|\ ;
+嵺>dì|\ ;
+嵴>jí|\ ;
+嵰>ci|\ ;
+嵨>wŭ|\ ;
+嵦>ái|\ ;
+嵡>ci|\ ;
+嵠>xi|\ ;
+嵞>ji|\ ;
+嵛>yú|\ ;
+嵎>yú|\ ;
+嵍>hé|\ ;
+嵆>ji|\ ;
+崺>yĭ|\ ;
+崹>tí|\ ;
+崳>yú|\ ;
+崱>zé|\ ;
+崪>zú|\ ;
+崥>pĭ|\ ;
+崕>yá|\ ;
+崓>gù|\ ;
+崒>zú|\ ;
+崌>ju|\ ;
+崉>tà|\ ;
+峿>wú|\ ;
+峹>tú|\ ;
+峲>lĭ|\ ;
+峬>bu|\ ;
+峫>yé|\ ;
+峢>lĭ|\ ;
+峜>ji|\ ;
+峛>lĭ|\ ;
+峘>hu|\ ;
+峖>an|\ ;
+峔>mŭ|\ ;
+峓>yí|\ ;
+峏>ĕr|\ ;
+峎>an|\ ;
+峍>lù|\ ;
+峊>fù|\ ;
+峇>ke|\ ;
+峆>he|\ ;
+岶>pò|\ ;
+岴>qu|\ ;
+岰>ba|\ ;
+岪>fú|\ ;
+岨>qu|\ ;
+岦>jŭ|\ ;
+岢>kĕ|\ ;
+岠>jù|\ ;
+岓>qí|\ ;
+岉>wù|\ ;
+屼>wù|\ ;
+屵>xù|\ ;
+屴>lì|\ ;
+屰>lè|\ ;
+屭>xì|\ ;
+屨>jù|\ ;
+屜>tì|\ ;
+屖>xi|\ ;
+屔>ní|\ ;
+屓>xì|\ ;
+屄>bi|\ ;
+屃>xì|\ ;
+尳>gŭ|\ ;
+尜>gá|\ ;
+尓>ĕr|\ ;
+尒>ĕr|\ ;
+尐>ji|\ ;
+尃>fu|\ ;
+尀>pŏ|\ ;
+寽>lǜ|\ ;
+寲>yí|\ ;
+寱>yì|\ ;
+寣>hu|\ ;
+寠>jù|\ ;
+寙>yŭ|\ ;
+宻>mì|\ ;
+宧>yí|\ ;
+宐>yí|\ ;
+宊>tú|\ ;
+孹>bò|\ ;
+孷>lí|\ ;
+孶>zi|\ ;
+孴>nĭ|\ ;
+孲>ya|\ ;
+孠>sì|\ ;
+孖>zi|\ ;
+孋>lí|\ ;
+孊>mĭ|\ ;
+嬻>dú|\ ;
+嬺>nì|\ ;
+嬬>xu|\ ;
+嬩>yú|\ ;
+嬨>cí|\ ;
+嬤>ma|\ ;
+嬡>ài|\ ;
+嬟>yì|\ ;
+嬔>fù|\ ;
+嬑>yì|\ ;
+嬆>xi|\ ;
+嬄>yi|\ ;
+嬃>xu|\ ;
+嫼>mò|\ ;
+嫵>wŭ|\ ;
+嫴>gu|\ ;
+嫯>ào|\ ;
+嫮>hù|\ ;
+嫭>hù|\ ;
+嫧>cè|\ ;
+嫟>nì|\ ;
+嫛>yi|\ ;
+嫗>yù|\ ;
+嫕>yì|\ ;
+嫓>pì|\ ;
+嫊>sù|\ ;
+媽>ma|\ ;
+媼>ăo|\ ;
+媷>rù|\ ;
+媭>xu|\ ;
+媩>hú|\ ;
+媧>wa|\ ;
+媤>si|\ ;
+媞>tí|\ ;
+媜>dì|\ ;
+媕>an|\ ;
+媐>xi|\ ;
+媍>fù|\ ;
+媉>wu|\ ;
+媂>tí|\ ;
+媀>yú|\ ;
+婯>lì|\ ;
+婮>ju|\ ;
+婭>yà|\ ;
+婦>fù|\ ;
+婠>wà|\ ;
+婟>hù|\ ;
+婗>ní|\ ;
+婏>fù|\ ;
+婍>qĭ|\ ;
+婅>jú|\ ;
+娾>ăi|\ ;
+娽>lù|\ ;
+娸>qí|\ ;
+娵>ju|\ ;
+娰>sì|\ ;
+娯>yú|\ ;
+娮>wŏ|\ ;
+娭>xi|\ ;
+娬>wŭ|\ ;
+娪>ai|\ ;
+娛>yú|\ ;
+娔>kè|\ ;
+娒>wŭ|\ ;
+娐>fu|\ ;
+姫>ji|\ ;
+姞>jí|\ ;
+姖>jù|\ ;
+姉>zĭ|\ ;
+姇>fu|\ ;
+姂>fá|\ ;
+姁>xŭ|\ ;
+姀>hé|\ ;
+妼>bì|\ ;
+妺>mò|\ ;
+妴>qì|\ ;
+妰>nĭ|\ ;
+妭>bá|\ ;
+妬>dù|\ ;
+妠>nà|\ ;
+妑>pa|\ ;
+妋>fu|\ ;
+妀>jĭ|\ ;
+奰>bì|\ ;
+奧>ào|\ ;
+奦>wù|\ ;
+奡>ào|\ ;
+奛>hă|\ ;
+奅>ji|\ ;
+奃>dì|\ ;
+奀>en|\ ;
+夿>ba|\ ;
+夶>bĭ|\ ;
+夨>fú|\ ;
+夡>qì|\ ;
+夐>xì|\ ;
+夅>fù|\ ;
+夃>gu|\ ;
+夁>yi|\ ;
+壻>xù|\ ;
+壺>hú|\ ;
+壷>hú|\ ;
+壴>yì|\ ;
+壱>yi|\ ;
+壩>bà|\ ;
+壢>lì|\ ;
+壚>lú|\ ;
+壓>ya|\ ;
+壒>ài|\ ;
+壉>jù|\ ;
+壆>bó|\ ;
+壄>yĕ|\ ;
+壀>pí|\ ;
+墿>yì|\ ;
+墼>ji|\ ;
+墺>ào|\ ;
+墷>ào|\ ;
+墶>da|\ ;
+墲>wŭ|\ ;
+墰>dā|\ ;
+墬>dē|\ ;
+墣>pu|\ ;
+墢>bá|\ ;
+墘>qí|\ ;
+墖>tă|\ ;
+墑>di|\ ;
+墏>bo|\ ;
+墍>xì|\ ;
+墆>dì|\ ;
+墄>qi|\ ;
+塸>ŏu|\ ;
+塷>lŭ|\ ;
+塶>cù|\ ;
+塳>ou|\ ;
+塧>ài|\ ;
+塢>wù|\ ;
+塟>wù|\ ;
+塛>lì|\ ;
+塗>tú|\ ;
+塓>mì|\ ;
+塐>sù|\ ;
+塉>jí|\ ;
+塈>jì|\ ;
+堲>jí|\ ;
+堬>yú|\ ;
+堥>ài|\ ;
+堣>yú|\ ;
+堛>bì|\ ;
+堗>tu|\ ;
+堖>bŭ|\ ;
+堓>àn|\ ;
+堐>yá|\ ;
+堌>gù|\ ;
+堉>yù|\ ;
+堄>nì|\ ;
+堁>kè|\ ;
+埿>ní|\ ;
+埼>qí|\ ;
+埶>yì|\ ;
+埧>jù|\ ;
+埞>dĭ|\ ;
+埜>yĕ|\ ;
+埗>bù|\ ;
+埊>dì|\ ;
+垿>xù|\ ;
+垼>yì|\ ;
+垻>bà|\ ;
+垵>ăn|\ ;
+垘>fú|\ ;
+垐>cí|\ ;
+垏>lù|\ ;
+垎>kè|\ ;
+垍>jì|\ ;
+垇>ào|\ ;
+垀>hu|\ ;
+坿>fù|\ ;
+坺>bá|\ ;
+坸>bo|\ ;
+坶>mù|\ ;
+坴>ke|\ ;
+坲>fó|\ ;
+坮>ao|\ ;
+坥>qu|\ ;
+坣>nì|\ ;
+坜>lì|\ ;
+坘>dĭ|\ ;
+坖>jì|\ ;
+坔>dì|\ ;
+坒>bì|\ ;
+圽>mò|\ ;
+圼>ji|\ ;
+圫>yù|\ ;
+圧>ya|\ ;
+圥>lù|\ ;
+圤>pú|\ ;
+圡>tŭ|\ ;
+圠>yà|\ ;
+圛>yì|\ ;
+圗>tú|\ ;
+圖>tú|\ ;
+圕>tú|\ ;
+圑>fù|\ ;
+圐>ku|\ ;
+囸>rì|\ ;
+囐>zá|\ ;
+囍>xĭ|\ ;
+囌>su|\ ;
+囈>yì|\ ;
+囇>lì|\ ;
+囄>lí|\ ;
+囃>cà|\ ;
+嚺>tà|\ ;
+嚹>la|\ ;
+嚳>kù|\ ;
+嚱>xì|\ ;
+嚰>mó|\ ;
+嚭>pĭ|\ ;
+嚩>fú|\ ;
+嚧>lú|\ ;
+嚦>lì|\ ;
+嚤>mó|\ ;
+嚢>áo|\ ;
+嚟>lí|\ ;
+嚜>mò|\ ;
+嚛>hù|\ ;
+嚗>bó|\ ;
+嚕>lu|\ ;
+嚔>tì|\ ;
+嚌>jì|\ ;
+嚊>xì|\ ;
+嚈>mā|\ ;
+嚃>tà|\ ;
+嚁>dí|\ ;
+噽>pĭ|\ ;
+噳>yŭ|\ ;
+噯>ăi|\ ;
+噧>ai|\ ;
+噠>da|\ ;
+噝>si|\ ;
+噓>xu|\ ;
+噐>qì|\ ;
+噏>xi|\ ;
+噊>yù|\ ;
+噈>cù|\ ;
+嘸>fŭ|\ ;
+嘰>ji|\ ;
+嘢>yĕ|\ ;
+嘠>ga|\ ;
+嘝>hú|\ ;
+嘜>gă|\ ;
+嘚>dé|\ ;
+嘙>pó|\ ;
+嘖>zé|\ ;
+嘔>ŏu|\ ;
+嘑>hu|\ ;
+嘊>ái|\ ;
+嗼>mò|\ ;
+嗸>áo|\ ;
+嗶>bì|\ ;
+嗱>ná|\ ;
+嗰>ai|\ ;
+嗢>wà|\ ;
+嗞>zi|\ ;
+嗚>wu|\ ;
+嗘>ji|\ ;
+嗗>wa|\ ;
+嗎>mă|\ ;
+嗋>ài|\ ;
+嗇>sè|\ ;
+嗃>hè|\ ;
+嗁>tí|\ ;
+喾>kù|\ ;
+喺>xì|\ ;
+喲>yō|\ ;
+喩>yù|\ ;
+喥>dù|\ ;
+喣>xŭ|\ ;
+喞>ji|\ ;
+喖>hú|\ ;
+喕>hé|\ ;
+喅>yù|\ ;
+啽>án|\ ;
+啲>dì|\ ;
+啟>qĭ|\ ;
+啞>ya|\ ;
+啝>hé|\ ;
+啚>bĭ|\ ;
+啙>tú|\ ;
+啘>yè|\ ;
+啔>qĭ|\ ;
+啓>qĭ|\ ;
+啒>hu|\ ;
+啎>wŭ|\ ;
+啇>dí|\ ;
+啀>ái|\ ;
+唽>xi|\ ;
+唹>yu|\ ;
+唵>ăn|\ ;
+唲>ér|\ ;
+唭>qi|\ ;
+唨>zŭ|\ ;
+唛>mà|\ ;
+唙>dí|\ ;
+唘>qĭ|\ ;
+唖>yă|\ ;
+唎>lì|\ ;
+唈>yì|\ ;
+唃>gŭ|\ ;
+唂>gŭ|\ ;
+哷>lè|\ ;
+哵>ba|\ ;
+哱>bo|\ ;
+哬>hé|\ ;
+哋>dì|\ ;
+哊>yù|\ ;
+咡>èr|\ ;
+咠>qì|\ ;
+咘>bù|\ ;
+咓>wă|\ ;
+咊>hé|\ ;
+咈>fú|\ ;
+咇>bì|\ ;
+呿>qu|\ ;
+呾>dá|\ ;
+呹>yì|\ ;
+呴>xu|\ ;
+呰>zĭ|\ ;
+呮>qì|\ ;
+呭>yì|\ ;
+呧>dĭ|\ ;
+呟>nē|\ ;
+呑>ŏu|\ ;
+呉>wú|\ ;
+呇>nà|\ ;
+呄>gé|\ ;
+吶>nà|\ ;
+吳>wú|\ ;
+吥>bù|\ ;
+吚>yi|\ ;
+吘>ŏu|\ ;
+吔>má|\ ;
+吇>zĭ|\ ;
+叻>lè|\ ;
+叒>lì|\ ;
+叐>bá|\ ;
+収>bo|\ ;
+叆>ài|\ ;
+厾>du|\ ;
+厺>qù|\ ;
+厲>lì|\ ;
+厯>lì|\ ;
+厫>áo|\ ;
+厤>lì|\ ;
+厠>cè|\ ;
+厗>tí|\ ;
+厓>yá|\ ;
+厒>hé|\ ;
+厊>yă|\ ;
+厃>àn|\ ;
+厀>xi|\ ;
+卽>jí|\ ;
+卼>wù|\ ;
+卹>xù|\ ;
+卥>xi|\ ;
+卙>jí|\ ;
+卌>xì|\ ;
+卆>zú|\ ;
+區>ou|\ ;
+匽>ou|\ ;
+匼>ăn|\ ;
+匸>xĭ|\ ;
+匷>qú|\ ;
+匵>dú|\ ;
+匫>hu|\ ;
+匤>qu|\ ;
+匢>hu|\ ;
+匜>yí|\ ;
+匒>dá|\ ;
+匎>àn|\ ;
+匌>gé|\ ;
+匊>jú|\ ;
+勵>lì|\ ;
+勴>lǜ|\ ;
+勮>jù|\ ;
+勩>yì|\ ;
+勣>ji|\ ;
+勠>lù|\ ;
+勚>yì|\ ;
+務>wù|\ ;
+勗>xù|\ ;
+勎>lù|\ ;
+勊>kè|\ ;
+勀>kè|\ ;
+劸>wa|\ ;
+劮>yì|\ ;
+劜>ya|\ ;
+劙>lí|\ ;
+劘>mó|\ ;
+劑>jì|\ ;
+劇>jù|\ ;
+劅>pĭ|\ ;
+剺>lí|\ ;
+剤>jì|\ ;
+剞>ji|\ ;
+剝>bo|\ ;
+剚>zì|\ ;
+剘>qí|\ ;
+剓>lí|\ ;
+剋>kè|\ ;
+則>zé|\ ;
+刾>cì|\ ;
+刵>èr|\ ;
+刟>ju|\ ;
+刞>qù|\ ;
+刜>fú|\ ;
+刕>lí|\ ;
+刏>ji|\ ;
+刉>ji|\ ;
+凥>ju|\ ;
+凟>dú|\ ;
+凞>xi|\ ;
+凘>si|\ ;
+凓>lì|\ ;
+凒>yí|\ ;
+凅>gù|\ ;
+凃>tú|\ ;
+冹>fú|\ ;
+冴>hù|\ ;
+冱>hù|\ ;
+冪>mì|\ ;
+冨>fù|\ ;
+冣>jù|\ ;
+冞>mí|\ ;
+冝>yí|\ ;
+冖>mì|\ ;
+冔>xŭ|\ ;
+冊>cè|\ ;
+兿>yì|\ ;
+兾>jì|\ ;
+兣>lĭ|\ ;
+兓>kè|\ ;
+兒>ér|\ ;
+児>ér|\ ;
+兎>tù|\ ;
+儷>lì|\ ;
+儮>lì|\ ;
+儩>sì|\ ;
+儥>dú|\ ;
+儞>nĭ|\ ;
+儛>wŭ|\ ;
+儗>nĭ|\ ;
+儑>àn|\ ;
+億>yì|\ ;
+儀>yí|\ ;
+僾>ài|\ ;
+僷>yè|\ ;
+僱>gù|\ ;
+僰>bó|\ ;
+僟>ji|\ ;
+僛>qi|\ ;
+僕>pú|\ ;
+僇>lù|\ ;
+僁>xi|\ ;
+僀>dì|\ ;
+傴>yŭ|\ ;
+傠>fa|\ ;
+傒>xi|\ ;
+傌>mà|\ ;
+傉>rù|\ ;
+傃>sù|\ ;
+傁>fu|\ ;
+偺>zá|\ ;
+側>cè|\ ;
+偲>si|\ ;
+偯>yĭ|\ ;
+偮>jí|\ ;
+偪>bi|\ ;
+偩>fù|\ ;
+偨>ci|\ ;
+偦>xu|\ ;
+偞>yè|\ ;
+偙>dì|\ ;
+偍>tí|\ ;
+偊>yŭ|\ ;
+倻>ye|\ ;
+倶>jù|\ ;
+倵>wŭ|\ ;
+倳>zì|\ ;
+倛>qi|\ ;
+個>gè|\ ;
+俼>yù|\ ;
+俹>yà|\ ;
+俰>hè|\ ;
+俤>tì|\ ;
+俙>xi|\ ;
+俌>fŭ|\ ;
+俋>yì|\ ;
+俉>wù|\ ;
+俈>kù|\ ;
+俆>xú|\ ;
+係>xì|\ ;
+俁>yŭ|\ ;
+侼>bó|\ ;
+侷>jú|\ ;
+侞>rŭ|\ ;
+侕>ér|\ ;
+侓>lù|\ ;
+侒>an|\ ;
+侐>xù|\ ;
+侎>mĭ|\ ;
+佽>cì|\ ;
+佴>èr|\ ;
+佱>fă|\ ;
+佮>gé|\ ;
+佫>hè|\ ;
+佧>kă|\ ;
+佢>qú|\ ;
+佖>bì|\ ;
+佌>cĭ|\ ;
+佊>bĭ|\ ;
+佉>qu|\ ;
+佈>bù|\ ;
+佁>ăi|\ ;
+佀>sì|\ ;
+伿>yì|\ ;
+伾>pi|\ ;
+伹>qu|\ ;
+伵>cì|\ ;
+伱>nĭ|\ ;
+伮>nú|\ ;
+伕>fu|\ ;
+伌>ài|\ ;
+伋>jí|\ ;
+伇>yì|\ ;
+伃>yú|\ ;
+仾>di|\ ;
+仱>pí|\ ;
+仫>mù|\ ;
+仢>dí|\ ;
+仏>fó|\ ;
+仈>ba|\ ;
+仂>lè|\ ;
+亼>jí|\ ;
+亱>yè|\ ;
+亞>yà|\ ;
+亝>qí|\ ;
+亜>yà|\ ;
+亖>sì|\ ;
+亓>qí|\ ;
+亄>yì|\ ;
+乸>nă|\ ;
+乶>fŭ|\ ;
+乕>hŭ|\ ;
+乂>ài|\ ;
+乁>yí|\ ;
+乀>fú|\ ;
+丨>gĕ|\ ;
+丌>ji|\ ;
+䶩>jì|\ ;
+䶦>zé|\ ;
+䶥>jŭ|\ ;
+䶣>ái|\ ;
+䶞>qí|\ ;
+䶜>gù|\ ;
+䶛>là|\ ;
+䶚>qŭ|\ ;
+䶙>jù|\ ;
+䶘>lì|\ ;
+䶗>kè|\ ;
+䶕>pá|\ ;
+䶓>jì|\ ;
+䶒>qí|\ ;
+䶑>tì|\ ;
+䶏>tĭ|\ ;
+䶍>dì|\ ;
+䶈>bó|\ ;
+䶅>hé|\ ;
+䶁>tà|\ ;
+䶀>tà|\ ;
+䵾>fú|\ ;
+䵽>cà|\ ;
+䵻>gŭ|\ ;
+䵶>qú|\ ;
+䵱>hè|\ ;
+䵬>tà|\ ;
+䵫>yù|\ ;
+䵩>lí|\ ;
+䵣>dá|\ ;
+䵠>dí|\ ;
+䵝>yà|\ ;
+䵗>fú|\ ;
+䵕>jù|\ ;
+䵓>lí|\ ;
+䵒>nì|\ ;
+䵑>nì|\ ;
+䵅>áo|\ ;
+䵄>bí|\ ;
+䴻>lí|\ ;
+䴺>bù|\ ;
+䴳>hè|\ ;
+䴲>mò|\ ;
+䴬>yì|\ ;
+䴪>lù|\ ;
+䴢>mí|\ ;
+䴡>lì|\ ;
+䴞>dí|\ ;
+䴝>bù|\ ;
+䴙>pì|\ ;
+䴗>jú|\ ;
+䴊>yí|\ ;
+䴈>ău|\ ;
+䴆>pú|\ ;
+䴄>lì|\ ;
+䴁>yù|\ ;
+䳽>hè|\ ;
+䳸>má|\ ;
+䳴>dá|\ ;
+䳳>xù|\ ;
+䳱>wù|\ ;
+䳮>mò|\ ;
+䳭>jí|\ ;
+䳢>qí|\ ;
+䳝>bù|\ ;
+䳜>tú|\ ;
+䳚>hé|\ ;
+䳐>cì|\ ;
+䳊>bá|\ ;
+䳇>wŭ|\ ;
+䳄>cí|\ ;
+䳁>bá|\ ;
+䲿>cí|\ ;
+䲵>hù|\ ;
+䲯>jí|\ ;
+䲬>qí|\ ;
+䲪>xì|\ ;
+䲧>dù|\ ;
+䲣>yú|\ ;
+䲞>lì|\ ;
+䲜>yè|\ ;
+䲕>pŭ|\ ;
+䲑>yí|\ ;
+䲐>lŭ|\ ;
+䱹>nà|\ ;
+䱷>yú|\ ;
+䱱>dì|\ ;
+䱯>mú|\ ;
+䱫>là|\ ;
+䱣>zú|\ ;
+䱡>jú|\ ;
+䱟>jù|\ ;
+䱝>bà|\ ;
+䱛>xù|\ ;
+䱚>lù|\ ;
+䱘>lí|\ ;
+䱒>yì|\ ;
+䱌>yí|\ ;
+䱊>mĭ|\ ;
+䱈>qí|\ ;
+䱅>mò|\ ;
+䱃>dĭ|\ ;
+䰾>bà|\ ;
+䰻>yú|\ ;
+䰹>zé|\ ;
+䰴>qì|\ ;
+䰲>yà|\ ;
+䰰>rú|\ ;
+䰯>nĭ|\ ;
+䰬>jú|\ ;
+䰦>pĭ|\ ;
+䰜>lì|\ ;
+䰛>lì|\ ;
+䰙>yĭ|\ ;
+䰕>lú|\ ;
+䰏>jì|\ ;
+䰍>cì|\ ;
+䰊>bó|\ ;
+䰇>qí|\ ;
+䰀>wŏ|\ ;
+䯿>zú|\ ;
+䯽>fŭ|\ ;
+䯼>dí|\ ;
+䯸>cì|\ ;
+䯲>pá|\ ;
+䯱>fù|\ ;
+䯦>mà|\ ;
+䯥>àn|\ ;
+䯢>mó|\ ;
+䯠>ăo|\ ;
+䯜>tì|\ ;
+䯚>ŏu|\ ;
+䯙>pò|\ ;
+䯗>bì|\ ;
+䯋>bó|\ ;
+䯉>yà|\ ;
+䯆>yì|\ ;
+䯂>jí|\ ;
+䮺>jì|\ ;
+䮸>hú|\ ;
+䮷>dú|\ ;
+䮯>ào|\ ;
+䮭>mì|\ ;
+䮬>mò|\ ;
+䮩>gú|\ ;
+䮥>lì|\ ;
+䮤>dí|\ ;
+䮡>bì|\ ;
+䮛>fù|\ ;
+䮙>yù|\ ;
+䮘>ér|\ ;
+䮗>àn|\ ;
+䮏>wú|\ ;
+䮎>xì|\ ;
+䮋>lì|\ ;
+䮊>yí|\ ;
+䮉>lú|\ ;
+䮇>yù|\ ;
+䮂>bó|\ ;
+䮀>bó|\ ;
+䭿>yì|\ ;
+䭼>qí|\ ;
+䭸>fù|\ ;
+䭶>qí|\ ;
+䭲>nĭ|\ ;
+䭯>bó|\ ;
+䭮>bì|\ ;
+䭬>qĭ|\ ;
+䭫>qĭ|\ ;
+䭩>mì|\ ;
+䭧>mĭ|\ ;
+䭦>bó|\ ;
+䭣>cí|\ ;
+䭡>èn|\ ;
+䭟>yè|\ ;
+䭞>yì|\ ;
+䭓>èn|\ ;
+䭍>hú|\ ;
+䭌>hú|\ ;
+䭇>yì|\ ;
+䭆>nè|\ ;
+䭅>hú|\ ;
+䭂>yì|\ ;
+䬾>tí|\ ;
+䬶>èn|\ ;
+䬵>ài|\ ;
+䬴>mò|\ ;
+䬮>yí|\ ;
+䬪>bó|\ ;
+䬨>cù|\ ;
+䬥>yì|\ ;
+䬣>qì|\ ;
+䬛>bì|\ ;
+䬔>xù|\ ;
+䬓>àn|\ ;
+䬏>bù|\ ;
+䬆>lì|\ ;
+䬅>lì|\ ;
+䬄>yù|\ ;
+䬃>sà|\ ;
+䬁>yí|\ ;
+䫾>bì|\ ;
+䫳>dú|\ ;
+䫱>ná|\ ;
+䫨>ào|\ ;
+䫦>gé|\ ;
+䫣>xí|\ ;
+䫝>fŭ|\ ;
+䫘>hé|\ ;
+䫔>qì|\ ;
+䫓>wú|\ ;
+䫍>fŭ|\ ;
+䫌>pĭ|\ ;
+䫊>bó|\ ;
+䫁>bì|\ ;
+䪾>mí|\ ;
+䪺>gé|\ ;
+䪵>yă|\ ;
+䪬>bó|\ ;
+䪞>zá|\ ;
+䪝>hù|\ ;
+䪚>hè|\ ;
+䪙>fú|\ ;
+䪖>pò|\ ;
+䪕>jú|\ ;
+䪔>bŭ|\ ;
+䪐>bì|\ ;
+䪏>nà|\ ;
+䪉>là|\ ;
+䪇>bó|\ ;
+䪆>tĭ|\ ;
+䪅>dú|\ ;
+䪂>gé|\ ;
+䪁>bŭ|\ ;
+䩻>bà|\ ;
+䩴>hú|\ ;
+䩯>jí|\ ;
+䩮>lù|\ ;
+䩤>xì|\ ;
+䩢>dá|\ ;
+䩟>yí|\ ;
+䩛>bì|\ ;
+䩚>dì|\ ;
+䩘>dì|\ ;
+䩗>bà|\ ;
+䩓>qí|\ ;
+䩒>yú|\ ;
+䩐>gé|\ ;
+䩋>mŏ|\ ;
+䩉>fŭ|\ ;
+䨼>hù|\ ;
+䨳>xì|\ ;
+䨱>fù|\ ;
+䨰>pò|\ ;
+䨥>hù|\ ;
+䨤>dí|\ ;
+䨣>gé|\ ;
+䨠>ăi|\ ;
+䨞>yŭ|\ ;
+䨛>sè|\ ;
+䨗>fú|\ ;
+䨖>jì|\ ;
+䨒>yù|\ ;
+䨑>tí|\ ;
+䨏>cí|\ ;
+䨆>bí|\ ;
+䨀>dí|\ ;
+䧼>hú|\ ;
+䧵>qí|\ ;
+䧳>cí|\ ;
+䧨>yè|\ ;
+䧧>yĭ|\ ;
+䧤>pú|\ ;
+䧞>fù|\ ;
+䧝>dì|\ ;
+䧘>qí|\ ;
+䧗>bì|\ ;
+䧔>mù|\ ;
+䧍>xì|\ ;
+䧉>lĭ|\ ;
+䧇>nĭ|\ ;
+䧅>tì|\ ;
+䧄>gè|\ ;
+䦽>xù|\ ;
+䦻>cì|\ ;
+䦵>nĭ|\ ;
+䦴>yì|\ ;
+䦪>yà|\ ;
+䦣>fù|\ ;
+䦜>wú|\ ;
+䦙>sì|\ ;
+䦘>bì|\ ;
+䦗>xù|\ ;
+䦍>wù|\ ;
+䦋>áo|\ ;
+䦇>jì|\ ;
+䥺>yé|\ ;
+䥸>mí|\ ;
+䥶>lì|\ ;
+䥯>bà|\ ;
+䥬>bó|\ ;
+䥡>yè|\ ;
+䥟>yè|\ ;
+䥝>áo|\ ;
+䥘>cù|\ ;
+䥔>sù|\ ;
+䥏>yŭ|\ ;
+䥈>mŭ|\ ;
+䥄>cù|\ ;
+䤶>yè|\ ;
+䤳>yè|\ ;
+䤨>pì|\ ;
+䤠>ji|\ ;
+䤚>lĭ|\ ;
+䤙>lì|\ ;
+䤒>jĭ|\ ;
+䤏>pĭ|\ ;
+䤎>jú|\ ;
+䤍>mí|\ ;
+䤉>mì|\ ;
+䤅>tú|\ ;
+䣾>mì|\ ;
+䣽>tĭ|\ ;
+䣹>fá|\ ;
+䣵>èr|\ ;
+䣴>xù|\ ;
+䣱>xù|\ ;
+䣰>jù|\ ;
+䣮>pò|\ ;
+䣫>lí|\ ;
+䣪>pò|\ ;
+䣧>yì|\ ;
+䣥>bĭ|\ ;
+䣢>jí|\ ;
+䣡>tí|\ ;
+䣝>tú|\ ;
+䣖>mă|\ ;
+䣕>mă|\ ;
+䣓>lí|\ ;
+䣌>dĭ|\ ;
+䣄>tú|\ ;
+䣁>yŭ|\ ;
+䢹>jŭ|\ ;
+䢳>jĭ|\ ;
+䢱>dú|\ ;
+䢪>bó|\ ;
+䢩>yù|\ ;
+䢞>nù|\ ;
+䢝>yà|\ ;
+䢗>hé|\ ;
+䢕>xù|\ ;
+䢔>gé|\ ;
+䢓>yú|\ ;
+䢑>dĭ|\ ;
+䢐>cú|\ ;
+䢌>bó|\ ;
+䢋>jì|\ ;
+䢄>xĭ|\ ;
+䢃>yì|\ ;
+䢀>qì|\ ;
+䡩>gŭ|\ ;
+䡧>wŭ|\ ;
+䡟>pì|\ ;
+䡞>jú|\ ;
+䡜>lù|\ ;
+䡔>qĭ|\ ;
+䡎>lú|\ ;
+䡍>fú|\ ;
+䡋>qí|\ ;
+䡃>lì|\ ;
+䠹>ái|\ ;
+䠵>fù|\ ;
+䠞>cù|\ ;
+䠚>wà|\ ;
+䠘>pì|\ ;
+䠓>cù|\ ;
+䠒>hú|\ ;
+䠐>qù|\ ;
+䠏>jì|\ ;
+䠎>wò|\ ;
+䠋>bĭ|\ ;
+䠈>tú|\ ;
+䟿>lù|\ ;
+䟼>wŭ|\ ;
+䟻>dù|\ ;
+䟮>fú|\ ;
+䟦>bá|\ ;
+䟤>bì|\ ;
+䟡>dì|\ ;
+䟟>cù|\ ;
+䟜>nà|\ ;
+䟛>bó|\ ;
+䟚>qí|\ ;
+䟔>fù|\ ;
+䟑>lă|\ ;
+䟐>lì|\ ;
+䟏>lì|\ ;
+䟌>jí|\ ;
+䟊>qú|\ ;
+䟆>bì|\ ;
+䟄>qì|\ ;
+䟃>cà|\ ;
+䞸>fù|\ ;
+䞶>dì|\ ;
+䞳>bó|\ ;
+䞱>hú|\ ;
+䞯>fù|\ ;
+䞦>hé|\ ;
+䞤>qú|\ ;
+䞟>pò|\ ;
+䞞>fú|\ ;
+䞝>ăo|\ ;
+䞜>fù|\ ;
+䞚>qí|\ ;
+䞙>zá|\ ;
+䞘>jí|\ ;
+䞅>yí|\ ;
+䝾>fù|\ ;
+䝽>ài|\ ;
+䝸>jì|\ ;
+䝵>bù|\ ;
+䝰>tí|\ ;
+䝯>yì|\ ;
+䝣>qú|\ ;
+䝟>yà|\ ;
+䝝>yĭ|\ ;
+䝚>ní|\ ;
+䝘>yì|\ ;
+䝓>là|\ ;
+䜽>yú|\ ;
+䜼>gú|\ ;
+䜺>cè|\ ;
+䜯>jú|\ ;
+䜡>xù|\ ;
+䜞>jì|\ ;
+䜚>tà|\ ;
+䜙>án|\ ;
+䜒>ào|\ ;
+䜆>mò|\ ;
+䜁>xì|\ ;
+䛿>gé|\ ;
+䛾>sù|\ ;
+䛴>qĭ|\ ;
+䛱>tí|\ ;
+䛯>jù|\ ;
+䛩>wù|\ ;
+䛧>mí|\ ;
+䛥>xì|\ ;
+䛤>cù|\ ;
+䛙>xù|\ ;
+䛕>yù|\ ;
+䛔>ná|\ ;
+䛑>mì|\ ;
+䛐>cí|\ ;
+䛏>ní|\ ;
+䛎>hù|\ ;
+䛋>gé|\ ;
+䛉>mì|\ ;
+䚹>pĭ|\ ;
+䚷>xì|\ ;
+䚴>wà|\ ;
+䚰>pĭ|\ ;
+䚫>áo|\ ;
+䚣>tí|\ ;
+䚝>zú|\ ;
+䚛>hú|\ ;
+䚕>lì|\ ;
+䚐>jí|\ ;
+䚍>qì|\ ;
+䚉>qì|\ ;
+䚆>ŏu|\ ;
+䚄>lù|\ ;
+䚂>hè|\ ;
+䙽>xì|\ ;
+䙸>dé|\ ;
+䙷>dé|\ ;
+䙱>dú|\ ;
+䙰>lí|\ ;
+䙯>cù|\ ;
+䙣>sà|\ ;
+䙗>tì|\ ;
+䙒>xù|\ ;
+䙐>kè|\ ;
+䙏>bó|\ ;
+䙄>qì|\ ;
+䘽>ní|\ ;
+䘻>sù|\ ;
+䘸>yì|\ ;
+䘵>lù|\ ;
+䘱>yù|\ ;
+䘮>sà|\ ;
+䘦>ní|\ ;
+䘣>zĭ|\ ;
+䘡>bĭ|\ ;
+䘠>fú|\ ;
+䘝>yì|\ ;
+䘘>yù|\ ;
+䘏>xù|\ ;
+䘌>nì|\ ;
+䘈>lì|\ ;
+䘄>fù|\ ;
+䘃>mò|\ ;
+䘁>gé|\ ;
+䘀>fù|\ ;
+䗹>cì|\ ;
+䗷>yì|\ ;
+䗶>là|\ ;
+䗱>pú|\ ;
+䗫>má|\ ;
+䗨>yú|\ ;
+䗟>yì|\ ;
+䗚>bó|\ ;
+䗘>gé|\ ;
+䗑>yì|\ ;
+䗍>lĭ|\ ;
+䗇>jú|\ ;
+䗄>fŭ|\ ;
+䗂>hŭ|\ ;
+䗁>jì|\ ;
+䖿>lí|\ ;
+䖽>lí|\ ;
+䖪>cí|\ ;
+䖩>bì|\ ;
+䖧>nà|\ ;
+䖥>lí|\ ;
+䖘>tú|\ ;
+䖕>zŭ|\ ;
+䖓>nà|\ ;
+䖑>mì|\ ;
+䖊>yí|\ ;
+䖇>yù|\ ;
+䖁>yì|\ ;
+䕻>gé|\ ;
+䕹>zá|\ ;
+䕷>mí|\ ;
+䕶>hù|\ ;
+䕳>mí|\ ;
+䕮>jú|\ ;
+䕪>zé|\ ;
+䕥>nĭ|\ ;
+䕣>hé|\ ;
+䕡>lŭ|\ ;
+䕗>bì|\ ;
+䕎>fú|\ ;
+䕍>yì|\ ;
+䕉>zé|\ ;
+䔽>ài|\ ;
+䔼>sè|\ ;
+䔶>tí|\ ;
+䔴>cè|\ ;
+䔰>fú|\ ;
+䔯>hú|\ ;
+䔬>yì|\ ;
+䔧>lí|\ ;
+䔣>lí|\ ;
+䔡>yú|\ ;
+䔕>pú|\ ;
+䔓>xŭ|\ ;
+䔎>sù|\ ;
+䔉>lì|\ ;
+䔇>qĭ|\ ;
+䔆>lí|\ ;
+䔃>zŭ|\ ;
+䔂>zĭ|\ ;
+䔁>lì|\ ;
+䓽>jì|\ ;
+䓼>hè|\ ;
+䓹>yì|\ ;
+䓯>dú|\ ;
+䓫>jì|\ ;
+䓧>cì|\ ;
+䓥>là|\ ;
+䓢>gù|\ ;
+䓠>tà|\ ;
+䓞>lì|\ ;
+䓛>fŭ|\ ;
+䓚>cú|\ ;
+䓉>yé|\ ;
+䓈>yì|\ ;
+䓇>xì|\ ;
+䓅>qí|\ ;
+䓃>yì|\ ;
+䒻>qĭ|\ ;
+䒬>mò|\ ;
+䒩>hé|\ ;
+䒧>qù|\ ;
+䒥>fà|\ ;
+䒤>rì|\ ;
+䒗>qì|\ ;
+䒉>wŭ|\ ;
+䒈>bŭ|\ ;
+䒇>fù|\ ;
+䒄>bó|\ ;
+䒁>jì|\ ;
+䒀>fú|\ ;
+䑿>sù|\ ;
+䑽>dá|\ ;
+䑵>mù|\ ;
+䑴>qí|\ ;
+䑰>bù|\ ;
+䑯>dì|\ ;
+䑭>dì|\ ;
+䑧>fú|\ ;
+䑜>tà|\ ;
+䑑>pú|\ ;
+䑈>bó|\ ;
+䑄>pì|\ ;
+䑂>ăi|\ ;
+䑁>wù|\ ;
+䑀>pì|\ ;
+䐿>áo|\ ;
+䐼>xì|\ ;
+䐳>yú|\ ;
+䐨>gŭ|\ ;
+䐡>qí|\ ;
+䐚>jí|\ ;
+䐙>gé|\ ;
+䐗>dŭ|\ ;
+䐖>yí|\ ;
+䐕>jí|\ ;
+䐊>dá|\ ;
+䐉>zì|\ ;
+䐅>yí|\ ;
+䐂>lù|\ ;
+䐀>jì|\ ;
+䏿>qĭ|\ ;
+䏽>bù|\ ;
+䏸>yú|\ ;
+䏶>bì|\ ;
+䏱>jú|\ ;
+䏮>xí|\ ;
+䏪>èr|\ ;
+䏧>ná|\ ;
+䏤>sì|\ ;
+䏢>bĭ|\ ;
+䏠>qì|\ ;
+䏞>mò|\ ;
+䏘>pĭ|\ ;
+䏑>dì|\ ;
+䏌>qì|\ ;
+䏋>sù|\ ;
+䏅>qì|\ ;
+䏀>là|\ ;
+䎼>lù|\ ;
+䎸>wù|\ ;
+䎶>èr|\ ;
+䎵>bì|\ ;
+䎳>wà|\ ;
+䎱>bà|\ ;
+䎮>tì|\ ;
+䎬>bà|\ ;
+䎪>nè|\ ;
+䎨>àn|\ ;
+䎣>sì|\ ;
+䎢>qĭ|\ ;
+䎠>ér|\ ;
+䎟>ér|\ ;
+䎘>sù|\ ;
+䎓>tà|\ ;
+䎑>lù|\ ;
+䎏>àn|\ ;
+䎎>nà|\ ;
+䎌>cù|\ ;
+䎋>hè|\ ;
+䎊>pò|\ ;
+䎈>yì|\ ;
+䎅>fù|\ ;
+䎁>hú|\ ;
+䍽>lì|\ ;
+䍸>bó|\ ;
+䍱>xú|\ ;
+䍨>bó|\ ;
+䍦>lí|\ ;
+䍤>jĭ|\ ;
+䍢>wú|\ ;
+䍠>lí|\ ;
+䍞>yù|\ ;
+䍝>tà|\ ;
+䍛>gù|\ ;
+䍘>mí|\ ;
+䍖>fú|\ ;
+䍕>dĭ|\ ;
+䍓>hù|\ ;
+䍍>gŭ|\ ;
+䍌>bù|\ ;
+䍇>tà|\ ;
+䍂>yú|\ ;
+䌿>fú|\ ;
+䌻>yì|\ ;
+䌺>ĕr|\ ;
+䌩>mì|\ ;
+䌡>tĭ|\ ;
+䌟>bì|\ ;
+䌚>sù|\ ;
+䌘>mí|\ ;
+䌗>fŭ|\ ;
+䌕>mí|\ ;
+䌔>òu|\ ;
+䌒>lù|\ ;
+䌐>mì|\ ;
+䌏>mì|\ ;
+䌌>qì|\ ;
+䌈>tà|\ ;
+䌂>òu|\ ;
+䋹>fú|\ ;
+䋶>xù|\ ;
+䋵>yì|\ ;
+䋰>jú|\ ;
+䋯>qĭ|\ ;
+䋩>ér|\ ;
+䋨>fŭ|\ ;
+䋧>qú|\ ;
+䋥>lí|\ ;
+䋠>bŭ|\ ;
+䋟>jì|\ ;
+䋛>mí|\ ;
+䋚>yì|\ ;
+䋙>ĕr|\ ;
+䋖>yù|\ ;
+䋔>bì|\ ;
+䋈>rú|\ ;
+䊿>bó|\ ;
+䊾>mù|\ ;
+䊺>gŭ|\ ;
+䊳>mí|\ ;
+䊮>dí|\ ;
+䊪>lì|\ ;
+䊧>bì|\ ;
+䊦>yá|\ ;
+䊠>xì|\ ;
+䊛>să|\ ;
+䊐>èn|\ ;
+䊍>lí|\ ;
+䊇>bù|\ ;
+䊂>cè|\ ;
+䊀>hú|\ ;
+䉿>hú|\ ;
+䉾>mì|\ ;
+䉻>qí|\ ;
+䉫>lí|\ ;
+䉨>yì|\ ;
+䉢>sè|\ ;
+䉝>qĭ|\ ;
+䉛>yù|\ ;
+䉑>mó|\ ;
+䉉>hú|\ ;
+䈻>pú|\ ;
+䈸>hú|\ ;
+䈳>tà|\ ;
+䈮>jŭ|\ ;
+䈬>pú|\ ;
+䈫>nà|\ ;
+䈪>xì|\ ;
+䈟>cè|\ ;
+䈞>dŭ|\ ;
+䈘>cí|\ ;
+䈓>gé|\ ;
+䈎>yè|\ ;
+䈋>tà|\ ;
+䈅>yù|\ ;
+䇷>bĭ|\ ;
+䇵>yí|\ ;
+䇱>nà|\ ;
+䇩>yì|\ ;
+䇥>zé|\ ;
+䇣>nà|\ ;
+䇢>kŭ|\ ;
+䇘>hù|\ ;
+䇑>bà|\ ;
+䇐>lì|\ ;
+䇅>fá|\ ;
+䇃>sì|\ ;
+䆿>yì|\ ;
+䆽>jù|\ ;
+䆷>yù|\ ;
+䆟>gé|\ ;
+䆉>bà|\ ;
+䆅>cí|\ ;
+䅽>gŭ|\ ;
+䅻>lí|\ ;
+䅸>zú|\ ;
+䅷>tú|\ ;
+䅲>qí|\ ;
+䅰>ĕn|\ ;
+䅬>ài|\ ;
+䅤>qì|\ ;
+䅡>xŭ|\ ;
+䅠>tí|\ ;
+䅞>nà|\ ;
+䅖>ăn|\ ;
+䅓>jŭ|\ ;
+䅊>dù|\ ;
+䅉>yà|\ ;
+䅇>sù|\ ;
+䅆>zì|\ ;
+䅄>lì|\ ;
+䅂>hé|\ ;
+䅁>àn|\ ;
+䄿>yì|\ ;
+䄸>pò|\ ;
+䄶>bì|\ ;
+䄰>yá|\ ;
+䄬>yí|\ ;
+䄫>qĭ|\ ;
+䄨>yú|\ ;
+䄢>qí|\ ;
+䄜>lí|\ ;
+䄔>jŭ|\ ;
+䄏>yú|\ ;
+䄎>qĭ|\ ;
+䄍>dù|\ ;
+䄁>yì|\ ;
+䃾>bĭ|\ ;
+䃽>fú|\ ;
+䃻>bà|\ ;
+䃺>mó|\ ;
+䃳>là|\ ;
+䃯>lì|\ ;
+䃮>dá|\ ;
+䃤>sù|\ ;
+䃚>cù|\ ;
+䃙>lù|\ ;
+䃖>wù|\ ;
+䃒>hé|\ ;
+䃎>zé|\ ;
+䃋>yú|\ ;
+䃊>jŭ|\ ;
+䂿>tà|\ ;
+䂲>fă|\ ;
+䂰>là|\ ;
+䂤>fù|\ ;
+䂣>cí|\ ;
+䂡>dĭ|\ ;
+䂛>yú|\ ;
+䂍>bó|\ ;
+䂊>yù|\ ;
+䂆>xù|\ ;
+䂂>qú|\ ;
+䁿>mò|\ ;
+䁼>mò|\ ;
+䁻>lì|\ ;
+䁹>bì|\ ;
+䁱>àu|\ ;
+䁫>hú|\ ;
+䁩>yú|\ ;
+䁦>qù|\ ;
+䁥>nì|\ ;
+䁒>jí|\ ;
+䁌>yù|\ ;
+䁊>wò|\ ;
+䁉>qì|\ ;
+䁈>qì|\ ;
+䁇>mì|\ ;
+䁆>ăn|\ ;
+䀿>dì|\ ;
+䀾>dŭ|\ ;
+䀸>dì|\ ;
+䀳>ài|\ ;
+䀲>mù|\ ;
+䀰>gŭ|\ ;
+䀯>bŭ|\ ;
+䀦>gŭ|\ ;
+䀣>bì|\ ;
+䀠>qú|\ ;
+䀜>gŭ|\ ;
+䀙>qì|\ ;
+䀘>xí|\ ;
+䀑>nà|\ ;
+䀈>qì|\ ;
+䀇>gŭ|\ ;
+㿿>yă|\ ;
+㿹>tà|\ ;
+㿰>áo|\ ;
+㿯>dá|\ ;
+㿫>bì|\ ;
+㿨>lì|\ ;
+㿥>hú|\ ;
+㿣>hé|\ ;
+㿛>lí|\ ;
+㿙>pì|\ ;
+㿖>lú|\ ;
+㿇>xí|\ ;
+㿄>ài|\ ;
+㾺>mà|\ ;
+㾶>gŭ|\ ;
+㾵>jì|\ ;
+㾰>hú|\ ;
+㾨>qĭ|\ ;
+㾧>kè|\ ;
+㾥>xù|\ ;
+㾟>bù|\ ;
+㾖>lĭ|\ ;
+㾒>jì|\ ;
+㾑>dá|\ ;
+㾐>lì|\ ;
+㾊>jí|\ ;
+㾈>fù|\ ;
+㾇>mù|\ ;
+㾅>sì|\ ;
+㾄>dú|\ ;
+㽾>wù|\ ;
+㽽>gù|\ ;
+㽺>jí|\ ;
+㽯>xí|\ ;
+㽬>fù|\ ;
+㽤>jú|\ ;
+㽣>yù|\ ;
+㽢>ăn|\ ;
+㽝>lì|\ ;
+㽈>yì|\ ;
+㽂>sà|\ ;
+㽁>lì|\ ;
+㼾>lù|\ ;
+㼶>yú|\ ;
+㼵>dì|\ ;
+㼴>ŏu|\ ;
+㼤>qì|\ ;
+㼘>wă|\ ;
+㼖>lì|\ ;
+㼌>yŭ|\ ;
+㼋>gŭ|\ ;
+㻺>lì|\ ;
+㻷>jí|\ ;
+㻶>bĭ|\ ;
+㻯>tú|\ ;
+㻭>sè|\ ;
+㻬>tú|\ ;
+㻫>bì|\ ;
+㻠>tú|\ ;
+㻝>là|\ ;
+㻑>jì|\ ;
+㻎>lì|\ ;
+㻍>wú|\ ;
+㻌>tú|\ ;
+㻋>là|\ ;
+㻉>bù|\ ;
+㺿>yí|\ ;
+㺷>xù|\ ;
+㺮>yú|\ ;
+㺭>zĭ|\ ;
+㺪>pú|\ ;
+㺡>lì|\ ;
+㺞>yú|\ ;
+㺚>tă|\ ;
+㺉>hù|\ ;
+㺄>yŭ|\ ;
+㹺>tà|\ ;
+㹸>ní|\ ;
+㹳>wú|\ ;
+㹱>hú|\ ;
+㹮>mò|\ ;
+㹭>yì|\ ;
+㹫>xì|\ ;
+㹘>rú|\ ;
+㹓>yì|\ ;
+㹒>pŭ|\ ;
+㹑>sì|\ ;
+㹍>dí|\ ;
+㹈>lí|\ ;
+㹇>hé|\ ;
+㹄>jì|\ ;
+㹃>bì|\ ;
+㹂>cì|\ ;
+㹀>bó|\ ;
+㸿>dú|\ ;
+㸻>sì|\ ;
+㸩>àn|\ ;
+㸦>hù|\ ;
+㸣>yè|\ ;
+㸚>lĭ|\ ;
+㸓>mì|\ ;
+㸏>mí|\ ;
+㸍>xì|\ ;
+㸊>là|\ ;
+㸄>jì|\ ;
+㷻>wú|\ ;
+㷵>mò|\ ;
+㷴>gé|\ ;
+㷰>lí|\ ;
+㷬>mò|\ ;
+㷦>xù|\ ;
+㷤>hè|\ ;
+㷒>yú|\ ;
+㷎>hè|\ ;
+㶿>bó|\ ;
+㶠>yì|\ ;
+㶛>yú|\ ;
+㶚>bà|\ ;
+㵿>xí|\ ;
+㵲>wŭ|\ ;
+㵰>xù|\ ;
+㵫>nĭ|\ ;
+㵩>yì|\ ;
+㵨>bì|\ ;
+㵧>gé|\ ;
+㵥>bì|\ ;
+㵣>kĕ|\ ;
+㵝>yì|\ ;
+㵗>fù|\ ;
+㵑>hè|\ ;
+㵋>mì|\ ;
+㴾>bó|\ ;
+㴼>sù|\ ;
+㴸>nà|\ ;
+㴵>mì|\ ;
+㴝>lí|\ ;
+㴕>jí|\ ;
+㴔>sè|\ ;
+㴒>yì|\ ;
+㴑>sù|\ ;
+㴋>sù|\ ;
+㴉>jĭ|\ ;
+㴁>yì|\ ;
+㳽>mĭ|\ ;
+㳼>bì|\ ;
+㳻>zé|\ ;
+㳵>jì|\ ;
+㳴>mì|\ ;
+㳫>tà|\ ;
+㳧>xí|\ ;
+㳥>jù|\ ;
+㳠>tà|\ ;
+㳛>yú|\ ;
+㳚>yù|\ ;
+㳑>yì|\ ;
+㳐>sà|\ ;
+㳍>bù|\ ;
+㳇>fù|\ ;
+㳁>zè|\ ;
+㲾>yŭ|\ ;
+㲼>yì|\ ;
+㲻>nì|\ ;
+㲺>jí|\ ;
+㲫>pú|\ ;
+㲞>zú|\ ;
+㲘>qú|\ ;
+㲅>jì|\ ;
+㱺>lú|\ ;
+㱹>lì|\ ;
+㱸>bì|\ ;
+㱴>zì|\ ;
+㱳>mò|\ ;
+㱲>yì|\ ;
+㱯>ái|\ ;
+㱩>dú|\ ;
+㱧>wò|\ ;
+㱟>bó|\ ;
+㱞>jí|\ ;
+㱘>àn|\ ;
+㱉>yè|\ ;
+㱇>sè|\ ;
+㱅>yì|\ ;
+㱄>mò|\ ;
+㰽>mĭ|\ ;
+㰻>yĭ|\ ;
+㰷>zì|\ ;
+㰵>zú|\ ;
+㰴>pó|\ ;
+㰳>yà|\ ;
+㰲>xù|\ ;
+㰪>wá|\ ;
+㰦>qù|\ ;
+㰤>kĕ|\ ;
+㰣>zì|\ ;
+㰟>jì|\ ;
+㰝>yĭ|\ ;
+㰚>lí|\ ;
+㰘>yí|\ ;
+㰗>cù|\ ;
+㰅>dí|\ ;
+㰀>lí|\ ;
+㯷>pú|\ ;
+㯭>lŭ|\ ;
+㯫>qú|\ ;
+㯩>tì|\ ;
+㯦>qí|\ ;
+㯤>lì|\ ;
+㯟>lù|\ ;
+㯝>lù|\ ;
+㯛>hú|\ ;
+㯚>dá|\ ;
+㯖>dé|\ ;
+㯓>tà|\ ;
+㯏>gŭ|\ ;
+㯈>sù|\ ;
+㯇>bì|\ ;
+㯅>pí|\ ;
+㮿>bì|\ ;
+㮰>bí|\ ;
+㮫>hé|\ ;
+㮨>jí|\ ;
+㮦>sè|\ ;
+㮟>jí|\ ;
+㮝>hé|\ ;
+㮚>lì|\ ;
+㮕>ér|\ ;
+㮑>qì|\ ;
+㮂>jú|\ ;
+㭽>dĭ|\ ;
+㭼>tà|\ ;
+㭸>tú|\ ;
+㭲>jí|\ ;
+㭱>hé|\ ;
+㭰>jì|\ ;
+㭡>xì|\ ;
+㭘>hé|\ ;
+㭔>lú|\ ;
+㭒>sì|\ ;
+㬼>fù|\ ;
+㬳>wŭ|\ ;
+㬱>tì|\ ;
+㬰>yú|\ ;
+㬬>jù|\ ;
+㬧>bó|\ ;
+㬥>pù|\ ;
+㬞>hè|\ ;
+㬘>sù|\ ;
+㬏>lì|\ ;
+㬍>bó|\ ;
+㬂>yú|\ ;
+㫽>lù|\ ;
+㫢>qù|\ ;
+㫙>fú|\ ;
+㫘>mì|\ ;
+㫓>qĭ|\ ;
+㫊>yĭ|\ ;
+㪾>gé|\ ;
+㪼>kĕ|\ ;
+㪶>hú|\ ;
+㪭>lú|\ ;
+㪪>sà|\ ;
+㪩>sù|\ ;
+㪤>bì|\ ;
+㪡>kĕ|\ ;
+㪙>kĕ|\ ;
+㪖>lù|\ ;
+㪒>ní|\ ;
+㪑>yè|\ ;
+㪐>lù|\ ;
+㪏>bĭ|\ ;
+㪍>bó|\ ;
+㪉>hé|\ ;
+㪆>dĭ|\ ;
+㪄>fú|\ ;
+㪃>kĕ|\ ;
+㪀>yú|\ ;
+㩽>qí|\ ;
+㩴>jú|\ ;
+㩭>bó|\ ;
+㩩>qĭ|\ ;
+㩧>bó|\ ;
+㩢>mí|\ ;
+㩞>cì|\ ;
+㩘>yĭ|\ ;
+㩗>xí|\ ;
+㩎>yè|\ ;
+㩍>cè|\ ;
+㩋>sù|\ ;
+㩀>jù|\ ;
+㨿>jù|\ ;
+㨽>pĭ|\ ;
+㨸>mà|\ ;
+㨲>cè|\ ;
+㨰>gé|\ ;
+㨭>hù|\ ;
+㨥>nà|\ ;
+㨠>mì|\ ;
+㨞>sù|\ ;
+㨐>bŭ|\ ;
+㨎>rú|\ ;
+㨈>jĭ|\ ;
+㨇>pó|\ ;
+㧽>gù|\ ;
+㧺>tà|\ ;
+㧹>tè|\ ;
+㧴>wŏ|\ ;
+㧳>bó|\ ;
+㧰>lì|\ ;
+㧫>ér|\ ;
+㧚>wă|\ ;
+㧙>bì|\ ;
+㧗>zĭ|\ ;
+㧎>yá|\ ;
+㧊>bá|\ ;
+㧅>mù|\ ;
+㧁>qù|\ ;
+㧀>jí|\ ;
+㦿>hù|\ ;
+㦾>yí|\ ;
+㦽>xù|\ ;
+㦻>xí|\ ;
+㦺>rŭ|\ ;
+㦸>jĭ|\ ;
+㦴>gé|\ ;
+㦱>wŏ|\ ;
+㦦>hè|\ ;
+㦤>yì|\ ;
+㦡>lè|\ ;
+㦛>yú|\ ;
+㦒>lí|\ ;
+㦐>nì|\ ;
+㦉>yì|\ ;
+㦇>lù|\ ;
+㦅>dì|\ ;
+㦄>má|\ ;
+㥿>ào|\ ;
+㥾>nì|\ ;
+㥽>cè|\ ;
+㥺>hé|\ ;
+㥷>yè|\ ;
+㥶>sè|\ ;
+㥴>yí|\ ;
+㥥>yú|\ ;
+㥡>xì|\ ;
+㥠>xŭ|\ ;
+㥝>mĭ|\ ;
+㥛>jí|\ ;
+㥚>yú|\ ;
+㥔>yú|\ ;
+㥓>qĭ|\ ;
+㥍>jì|\ ;
+㥌>jú|\ ;
+㥂>tè|\ ;
+㥁>dé|\ ;
+㥀>dé|\ ;
+㤸>xì|\ ;
+㤵>cí|\ ;
+㤴>xí|\ ;
+㤱>fù|\ ;
+㤫>dé|\ ;
+㤩>kè|\ ;
+㤦>lì|\ ;
+㤤>yú|\ ;
+㤢>xù|\ ;
+㤡>lì|\ ;
+㤔>fú|\ ;
+㤇>ăo|\ ;
+㤅>ài|\ ;
+㤂>jí|\ ;
+㣻>yì|\ ;
+㣵>tà|\ ;
+㣱>zé|\ ;
+㣬>qì|\ ;
+㣢>tí|\ ;
+㣟>xì|\ ;
+㣛>tà|\ ;
+㣙>dí|\ ;
+㣎>mù|\ ;
+㣈>sì|\ ;
+㣇>nĭ|\ ;
+㣆>mí|\ ;
+㣄>qú|\ ;
+㣃>yŭ|\ ;
+㣂>yì|\ ;
+㢽>ĕr|\ ;
+㢸>bì|\ ;
+㢶>bì|\ ;
+㢳>lú|\ ;
+㢰>bì|\ ;
+㢩>dì|\ ;
+㢞>yì|\ ;
+㢚>lŭ|\ ;
+㢊>ăi|\ ;
+㢀>cì|\ ;
+㡼>yì|\ ;
+㡹>cì|\ ;
+㡶>jì|\ ;
+㡳>dĭ|\ ;
+㡰>yŭ|\ ;
+㡮>jí|\ ;
+㡭>jì|\ ;
+㡫>yì|\ ;
+㡙>bì|\ ;
+㡗>tí|\ ;
+㡔>wù|\ ;
+㡇>jí|\ ;
+㡂>lì|\ ;
+㡀>bì|\ ;
+㠿>cĭ|\ ;
+㠸>kù|\ ;
+㠷>gé|\ ;
+㠲>bĭ|\ ;
+㠱>jì|\ ;
+㠯>yĭ|\ ;
+㠪>jù|\ ;
+㠨>yù|\ ;
+㠧>mí|\ ;
+㠠>lú|\ ;
+㠟>lí|\ ;
+㠜>nì|\ ;
+㠛>wò|\ ;
+㠘>yŭ|\ ;
+㠗>ào|\ ;
+㠖>jì|\ ;
+㠍>jí|\ ;
+㠅>fú|\ ;
+㠄>xí|\ ;
+㠂>áo|\ ;
+㟼>áo|\ ;
+㟷>dā|\ ;
+㟳>lì|\ ;
+㟤>lù|\ ;
+㟢>qí|\ ;
+㟜>mí|\ ;
+㟚>qí|\ ;
+㟓>qí|\ ;
+㟑>bó|\ ;
+㟊>fú|\ ;
+㟁>àn|\ ;
+㞾>ní|\ ;
+㞺>zú|\ ;
+㞹>kĕ|\ ;
+㞰>xŭ|\ ;
+㞫>jù|\ ;
+㞦>jĭ|\ ;
+㞛>jĭ|\ ;
+㞚>qì|\ ;
+㞖>cì|\ ;
+㞔>yí|\ ;
+㞓>qĭ|\ ;
+㞒>xì|\ ;
+㞐>ju|\ ;
+㞎>bă|\ ;
+㞊>xù|\ ;
+㞆>jĭ|\ ;
+㞃>jí|\ ;
+㝿>bó|\ ;
+㝶>ài|\ ;
+㝵>dé|\ ;
+㝥>mĭ|\ ;
+㝣>yè|\ ;
+㝢>yŭ|\ ;
+㝞>yà|\ ;
+㝛>sù|\ ;
+㝖>yí|\ ;
+㝓>gé|\ ;
+㜿>xù|\ ;
+㜽>zĭ|\ ;
+㜹>qú|\ ;
+㜷>mí|\ ;
+㜫>mà|\ ;
+㜩>àu|\ ;
+㜨>ér|\ ;
+㜝>ăn|\ ;
+㜜>ào|\ ;
+㜚>sù|\ ;
+㜙>lù|\ ;
+㜘>jù|\ ;
+㜓>dá|\ ;
+㜒>yì|\ ;
+㜑>fú|\ ;
+㜎>qí|\ ;
+㜋>yì|\ ;
+㜈>mù|\ ;
+㜆>mì|\ ;
+㜅>xù|\ ;
+㛲>fà|\ ;
+㛬>lù|\ ;
+㛥>tà|\ ;
+㛘>pò|\ ;
+㛕>yì|\ ;
+㛏>òu|\ ;
+㛅>èr|\ ;
+㚷>ĕr|\ ;
+㚶>sì|\ ;
+㚴>bù|\ ;
+㚰>bĭ|\ ;
+㚦>yí|\ ;
+㚥>yú|\ ;
+㚤>yì|\ ;
+㚢>nú|\ ;
+㚡>jĭ|\ ;
+㚜>xù|\ ;
+㚛>xì|\ ;
+㚕>fú|\ ;
+㚉>gŭ|\ ;
+㚆>fù|\ ;
+㙾>xì|\ ;
+㙯>yì|\ ;
+㙫>jí|\ ;
+㙪>yè|\ ;
+㙨>jì|\ ;
+㙠>yì|\ ;
+㙛>bŭ|\ ;
+㙒>yĕ|\ ;
+㙑>yŭ|\ ;
+㙏>fù|\ ;
+㙄>bì|\ ;
+㘺>fá|\ ;
+㘹>cí|\ ;
+㘷>ài|\ ;
+㘵>bù|\ ;
+㘲>jú|\ ;
+㘭>ào|\ ;
+㘬>ào|\ ;
+㘩>bì|\ ;
+㘧>xù|\ ;
+㘠>bì|\ ;
+㘑>lì|\ ;
+㘍>jí|\ ;
+㘌>jù|\ ;
+㘊>yì|\ ;
+㘈>yi|\ ;
+㘂>cí|\ ;
+㘁>yì|\ ;
+㗼>yè|\ ;
+㗵>xù|\ ;
+㗳>tă|\ ;
+㗱>jí|\ ;
+㗨>ăi|\ ;
+㗤>cù|\ ;
+㗣>tì|\ ;
+㗚>lì|\ ;
+㗙>nà|\ ;
+㗘>bó|\ ;
+㗒>ài|\ ;
+㗊>jí|\ ;
+㗉>bì|\ ;
+㗆>gé|\ ;
+㗅>hú|\ ;
+㖽>zé|\ ;
+㖶>yè|\ ;
+㖨>lù|\ ;
+㖢>jí|\ ;
+㖡>yè|\ ;
+㖠>bà|\ ;
+㖕>bò|\ ;
+㖒>tí|\ ;
+㖇>ér|\ ;
+㖆>qú|\ ;
+㖅>xù|\ ;
+㖂>yì|\ ;
+㖀>lè|\ ;
+㕽>sì|\ ;
+㕹>fá|\ ;
+㕸>lì|\ ;
+㕰>hè|\ ;
+㕮>fŭ|\ ;
+㕭>ào|\ ;
+㕥>yĭ|\ ;
+㕡>hé|\ ;
+㕛>xù|\ ;
+㕖>sù|\ ;
+㕌>ài|\ ;
+㕉>kè|\ ;
+㕇>lá|\ ;
+㕆>hù|\ ;
+㔹>lè|\ ;
+㔴>yì|\ ;
+㔱>yŭ|\ ;
+㔪>lŭ|\ ;
+㔥>pí|\ ;
+㔠>hé|\ ;
+㔜>bá|\ ;
+㔕>jí|\ ;
+㔒>xí|\ ;
+㔏>lì|\ ;
+㔄>sù|\ ;
+㓷>yì|\ ;
+㓯>lí|\ ;
+㓭>hé|\ ;
+㓨>cí|\ ;
+㓡>fŭ|\ ;
+㓞>qì|\ ;
+㓘>sù|\ ;
+㓖>bì|\ ;
+㓐>lù|\ ;
+㒿>lí|\ ;
+㒴>gŭ|\ ;
+㒫>jì|\ ;
+㒧>lì|\ ;
+㒜>yú|\ ;
+㒖>ŏu|\ ;
+㒓>tà|\ ;
+㒒>pú|\ ;
+㒎>să|\ ;
+㒊>sè|\ ;
+㒇>mù|\ ;
+㒅>qĭ|\ ;
+㒃>èr|\ ;
+㒂>kù|\ ;
+㒁>yŭ|\ ;
+㑻>mà|\ ;
+㑸>ăi|\ ;
+㑶>xì|\ ;
+㑯>xŭ|\ ;
+㑨>yŭ|\ ;
+㑧>jì|\ ;
+㑦>lì|\ ;
+㑥>yì|\ ;
+㑜>yì|\ ;
+㑛>sù|\ ;
+㑔>xŭ|\ ;
+㑊>yì|\ ;
+㑉>sù|\ ;
+㑄>wŭ|\ ;
+㑃>ăo|\ ;
+㐻>n̆|\ ;
+㐹>yì|\ ;
+㐷>mă|\ ;
+㐳>wù|\ ;
+㐨>xù|\ ;
+㐖>yè|\ ;
+㐌>sì|\ ;
+㐅>wŭ|\ ;
+𥜌>ăo|\ ;
+𡜱>jì|\ ;
+𠼻>ji|\ ;
+𠁥>gă|\ ;
+𠀁>qi|\ ;
+𠀀>ha|\ ;
+阿>a|\ ;
+啊>a|\ ;
+恶>è|\ ;
+额>é|\ ;
+俄>é|\ ;
+饿>è|\ ;
+呵>a|\ ;
+哦>é|\ ;
+鹅>é|\ ;
+娥>é|\ ;
+噢>o|\ ;
+峨>é|\ ;
+愕>è|\ ;
+遏>è|\ ;
+厄>è|\ ;
+扼>è|\ ;
+萼>è|\ ;
+噩>è|\ ;
+鄂>è|\ ;
+蛾>é|\ ;
+喔>o|\ ;
+讹>é|\ ;
+呃>è|\ ;
+鹗>è|\ ;
+婀>e|\ ;
+哐>è|\ ;
+颚>è|\ ;
+屙>e|\ ;
+轭>è|\ ;
+嗄>á|\ ;
+谔>è|\ ;
+垩>è|\ ;
+腭>è|\ ;
+阏>è|\ ;
+莪>é|\ ;
+蚵>é|\ ;
+齶>è|\ ;
+齂>è|\ ;
+鶚>è|\ ;
+鵞>é|\ ;
+鵝>é|\ ;
+鱷>è|\ ;
+鰐>è|\ ;
+魥>è|\ ;
+騀>é|\ ;
+餩>è|\ ;
+餓>è|\ ;
+顎>è|\ ;
+額>é|\ ;
+頟>é|\ ;
+頞>è|\ ;
+阾>ă|\ ;
+阸>è|\ ;
+阨>è|\ ;
+閼>è|\ ;
+锕>a|\ ;
+钶>e|\ ;
+鑩>è|\ ;
+鍔>è|\ ;
+錒>a|\ ;
+鋨>é|\ ;
+鋧>é|\ ;
+鈋>é|\ ;
+遌>è|\ ;
+迗>é|\ ;
+軶>è|\ ;
+軛>è|\ ;
+貖>è|\ ;
+豟>è|\ ;
+讍>è|\ ;
+譌>é|\ ;
+諤>è|\ ;
+誐>é|\ ;
+詻>è|\ ;
+訛>é|\ ;
+覨>è|\ ;
+蝁>è|\ ;
+蚅>è|\ ;
+蕚>è|\ ;
+苊>è|\ ;
+磀>é|\ ;
+硪>é|\ ;
+硆>è|\ ;
+砐>è|\ ;
+睋>é|\ ;
+皒>é|\ ;
+痾>e|\ ;
+琧>è|\ ;
+珴>é|\ ;
+獿>ĕ|\ ;
+猔>e|\ ;
+煾>n|\ ;
+湂>è|\ ;
+涐>é|\ ;
+櫮>è|\ ;
+枙>è|\ ;
+搹>è|\ ;
+搤>è|\ ;
+戹>è|\ ;
+惡>ĕ|\ ;
+悪>è|\ ;
+嶭>è|\ ;
+崿>è|\ ;
+峩>é|\ ;
+峉>e|\ ;
+峈>è|\ ;
+岋>è|\ ;
+婐>e|\ ;
+娿>e|\ ;
+妿>e|\ ;
+妸>e|\ ;
+堮>è|\ ;
+堨>è|\ ;
+堊>è|\ ;
+圔>è|\ ;
+囮>é|\ ;
+噁>ĕ|\ ;
+喒>o|\ ;
+咹>è|\ ;
+咢>è|\ ;
+呣>ḿ|\ ;
+呝>è|\ ;
+吪>é|\ ;
+吖>a|\ ;
+卾>è|\ ;
+儍>è|\ ;
+僫>è|\ ;
+偔>è|\ ;
+䳬>è|\ ;
+䳘>é|\ ;
+䳗>é|\ ;
+䱮>é|\ ;
+䫷>è|\ ;
+䩹>é|\ ;
+䣞>è|\ ;
+䞩>è|\ ;
+䝈>è|\ ;
+䛖>è|\ ;
+䙳>è|\ ;
+䖸>é|\ ;
+䕏>é|\ ;
+䔾>è|\ ;
+䓊>è|\ ;
+䑪>è|\ ;
+䑥>è|\ ;
+䆓>è|\ ;
+䄉>é|\ ;
+㼰>é|\ ;
+㼢>ĕ|\ ;
+㼂>é|\ ;
+㷈>è|\ ;
+㱦>è|\ ;
+㮙>è|\ ;
+㩵>è|\ ;
+㧖>è|\ ;
+㦍>è|\ ;
+㡋>è|\ ;
+㠋>è|\ ;
+㟧>è|\ ;
+㗁>è|\ ;
+㖾>è|\ ;
+㕎>è|\ ;
+㔩>è|\ ;
+㓵>è|\ ;
+。 <> '.';
+# End RAW data for converting CJK characters
+
+
+
+# fallbacks
+
+## | yi < i;
+## | wu < u;
+## | bi < b;
+## | ci < c;
+## | di < d;
+## | fu < f;
+## | gu < g;
+## | he < h;
+## | ji < j;
+## | ku < k;
+## | li < l;
+## | mi < m;
+## | pi < p;
+## | qi < q;
+## | l < r;
+## | si < s;
+## | ti < t;
+## | f < v;
+## | wa < w;
+## | xi < x;
+## | yi < y;
+## | zi < z;
+
+# filter out the half-width hangul
+:: [^\uFFBE-\uFFEE] fullwidth-halfwidth ();
+## :: (lower) ;
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_Definition.txt b/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_Definition.txt
new file mode 100644
index 0000000..fd399af
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_Definition.txt
@@ -0,0 +1,55802 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_Definition.txt,v $
+# $Date: 2002/07/14 21:59:15 $
+# $Revision: 1.2 $
+#--------------------------------------------------------------------
+# Convert CJK characters, according to the defintions in CEDICT and Unihan.txt
+# Note: adds space between them and letters.
+{ ([:Han:]) } [:L:] > | $1 ' ';
+[\.\,\?\!.,?!、。[:Pe:][:Pf:]] { } [:L:] > ' ';
+[:L:] { } [[:Han:][:Ps:][:Pi:]]> ' ';
+
+變文 < a\-popular\-form\-of\-narrative\-literature\-flourishing\-in\-the\-tang\-dynasty\-\(618\-907\)\-with\-alternate\-prose\-and\-rhymed\-parts\-for\-recitation\-and\-singing\-\(often\-on\-buddhistic\-themes\);
+邊幣 < border\-region\-currency\-\(consisting\-of\-the\-currency\-notes\-issued\-by\-the\-border\-region\-governments\-during\-the\-war\-of\-resistance\-against\-japan\-and\-the\-war\-of\-liberation\);
+直通車 < \"through\-train\"\-\(refers\-to\-the\-idea\-of\-retaining\-previous\-legislature\-after\-transition\-to\-chinese\-rule\-in\-hong\-kong\-or\-macau\);
+小臟鬼 < dirty\-little\-monster\-\(spoken\-affectionately\-to\-a\-child\-who\-has\-gotten\-him\(her\)self\-dirty\;\-literally\-\"little\-dirty\-ghost\"\);
+殺雞給猴看 < \"kill\-a\-chicken\-in\-front\-of\-a\-monkey\"\-\-\-\-make\-an\-example\-out\-of\-someone\-\(by\-punishing\-them\)\-to\-frighten\-others;
+抱薪救火 < carry\-faggots\-to\-put\-out\-a\-fire\-\-\-adopt\-a\-wrong\-method\-to\-save\-a\-situation\-and\-end\-up\-by\-making\-it\-worse;
+不見棺材不落淚 < not\-shed\-a\-tear\-until\-one\-sees\-the\-coffin\-\-\-refuse\-to\-be\-convinced\-until\-one\-is\-faced\-with\-grim\-reality;
+同期 < the\-corresponding\-time\-period\-\(eg\,\-compare\-inflation\-now\-with\-the\-rate\-during\-the\-same\-month\-last\-year\);
+㡎 < the\-long\-bands\-or\-ribbons\-attrached\-to\-flags\-and\-banners\-the\-feather\-decorected\-carriages\-or\-dresses;
+郯 < name\-of\-a\-small\-ancient\-principality\-which\-was\-situated\-in\-what\-is\-now\-part\-of\-shantung\-and\-kiangsu;
+杯水車薪 < trying\-to\-put\-out\-a\-burning\-cartload\-of\-faggots\-with\-a\-cup\-of\-water\-\-\-an\-utterly\-inadequate\-measure;
+䐞 < the\-thin\-membrane\-between\-skin\-and\-flesh\-that\-protects\-internal\-organs\-or\-tissues\-in\-the\-human\-body;
+偏偏 < \(indicates\-that\-sth\.\-turns\-out\-just\-the\-opposite\-of\-what\-one\-would\-expect\-or\-what\-would\-be\-normal\);
+敬祝 < to\-respectfully\-offer\-\(written\-at\-the\-end\-of\-letter\-from\-someone\-of\-lower\-status\-to\-higher\-status\);
+卜辭 < oracle\-inscriptions\-of\-the\-shang\-dynasty\-\(16th\-11th\-century\-bc\)\-on\-tortoiseshells\-or\-animal\-bones;
+病急亂投醫 < turn\-to\-any\-doctor\-one\-can\-find\-when\-critically\-ill\-\-\-try\-anything\-when\-in\-a\-desperate\-situation;
+辯証施治 < diagnosis\-and\-treatment\-based\-on\-an\-overall\-analysis\-of\-the\-illness\-and\-the\-patient''s\-condition;
+珪 < a\-jade\-table\-conferred\-upon\-feudal\-princes\-by\-the\-emperor\-as\-a\-symbol\-of\-dignity\-and\-authority;
+敝帚自珍 < value\-one''s\-own\-old\-broom\-\-\-cherish\-something\-of\-little\-value\-simply\-because\-it\-is\-one''s\-own;
+不知天高地厚 < not\-know\-the\-immensity\-of\-heaven\-and\-earth\-\-\-have\-an\-exaggerated\-opinion\-of\-one''s\-abilities;
+㺺 < a\-very\-precious\-piece\-of\-jade\-worn\-by\-ancient\-emperors\-to\-match\-tables\-borne\-by\-the\-nobles;
+䀘 < to\-cover\-the\-line\-of\-vision\-or\-sight\-\-\-the\-straight\-line\-between\-an\-object\-and\-one''s\-eyes;
+兵不血刃 < the\-edges\-of\-the\-swords\-not\-being\-stained\-with\-blood\-\-\-win\-victory\-without\-firing\-a\-shot;
+㨧 < wooden\-stick\-or\-bamboo\-cane\-used\-to\-support\-the\-covering\-of\-a\-carriage\-in\-ancient\-times;
+㔣 < in\-ancient\-times\-to\-fight\-against\-the\-enemy\-by\-pushing\-down\-the\-big\-rocks\-from\-up\-high;
+洛德 < \(winston\)\-lord\-\(former\-assistant\-secretary\-of\-state\-for\-east\-asia\-and\-pacific\-affairs\);
+不到黃河心不死 < not\-stop\-until\-one\-reaches\-the\-huanghe\-river\-\-\-not\-stop\-until\-one\-reaches\-one''s\-goal;
+彷徨 < name\-of\-a\-collection\-of\-short\-stories\,\-pang\-huang\,\-\"wandering\-about\"\,\-by\-lu3\-xun4\-魯迅;
+䚫 < ornamental\-articles\-made\-of\-horns\-used\-to\-decorate\-the\-top\-of\-a\-stick\-or\-horsewhip;
+養兒防老 < \(of\-parents\)\-to\-bring\-up\-cihldren\-for\-the\-purpose\-of\-being\-looked\-after\-in\-old\-age;
+陳毅 < chen\-yi\,\-former\-mayor\-of\-shanghai\-and\-highest\-ranking\-military\-commander\-in\-china;
+綺色佳 < ithaca\,\-ny\-\(but\-pronounced\-yi3\-se4\-jia1\,\-following\-a\-mistake\-made\-by\-hu2\-shi4\-胡適\);
+笐 < bamboos\-placed\-across\-wooden\-frames\-on\-which\-grain\-may\-be\-stored\-in\-damp\-climates;
+䣞 < name\-of\-an\-ancient\-state\-which\-occupied\-the\-site\-of\-the\-present\-province\-of\-hubei;
+䇶 < a\-small\-rafters\-made\-of\-bamboo\-which\-project\-form\-the\-eaves\-and\-support\-the\-tiles;
+雷峰塔 < leifeng\-pagoda\,\-by\-west\-lake\-until\-it\-was\-destroyed\-\(also\-from\-madam\-white\-snake\);
+賨 < tribute\-paid\-in\-cloth\-by\-the\-tribes\-in\-szechwan\-and\-yunnan\-under\-the\-han\-dynasty;
+不共戴天 < will\-not\-live\-under\-the\-same\-sky\-\(with\-one''s\-enemy\)\-\-\-absolutely\-irreconcilable;
+禫 < sacrifice\-offered\-at\-the\-end\-of\-the\-three\-years''\-mourning\-the\-death\-of\-a\-parent;
+䂩 < an\-in\-slab\-or\-ink\-stone\-sound\-of\-pebbles\-or\-stones\-rubbing\-or\-knocking\-together;
+䂍 < a\-kind\-of\-weapon\-carried\-by\-the\-honor\-guard\-before\-the\-emperor\-in\-ancient\-times;
+擊其惰歸 < avoid\-the\-enemy\-when\-he\-is\-fresh\-and\-strike\-him\-when\-he\-is\-tired\-and\-withdraws;
+保甲制度 < the\-bao\-jia\-system\-\(an\-administrative\-system\-organized\-on\-basis\-of\-households\);
+包工 < undertake\-to\-perform\-work\-within\-a\-time\-limit\-and\-according\-to\-specifications;
+部首 < radicals\-by\-which\-characters\-are\-arranged\-in\-traditional\-chinese\-dictionaries;
+霸主 < a\-powerful\-chief\-of\-the\-princes\-of\-the\-spring\-and\-autumn\-period\-\(770\-476\-bc\);
+衈 < the\-blood\-of\-a\-sacrificial\-fowl\-which\-was\-sprinkled\-on\-the\-doors\-and\-vessels;
+㯩 < to\-put\-the\-growing\-up\-silkworms\-in\-different\-frames\-according\-to\-their\-sizes;
+㚳 < a\-lady\-teacher\-to\-teach\-the\-proper\-rules\-of\-female\-behavior\-in\-ancient\-times;
+不辨菽麥 < be\-unable\-to\-tell\-beans\-from\-wheat\-\-\-have\-no\-knowledge\-of\-practical\-matters;
+絥 < to\-harness\-a\-horse\-a\-board\-in\-front\-of\-a\-carriage\-for\-the\-driver\-to\-lean\-on;
+䋭 < to\-weave\-silk\-fabrics\-with\-green\-color\-for\-longitude\-and\-white\-for\-latitude;
+㭼 < a\-rectangle\-shaped\-peg\-or\-short\-post\-between\-the\-beans\-and\-the\-roof\-timbers;
+恭喜發財 < congratulations\-for\-getting\-rich\-\(traditional\-chinese\-new\-year''s\-future\-use;
+瑄 < a\-ornamental\-piece\-of\-jade\-several\-inches\-across\-with\-a\-hole\-in\-the\-center;
+牡丹卡 < peony\-card\-\(credit\-card\-issued\-by\-industrial\-and\-commercial\-bank\-of\-china\);
+䬤 < to\-put\-the\-thick\-soup\-or\-broth\-on\-top\-of\-the\-rice\-thick\-congee\-or\-porridge;
+在於 < \(the\-problem\-or\-explanation\-or\-advantage\-etc\.\)\-lies\-in\-\(the\-fact\-that\.\.\.\);
+䥯 < a\-farm\-tool\-to\-crush\-the\-clod\-of\-earth\-into\-pieces\-and\-make\-the\-land\-flat;
+䍖 < a\-kind\-of\-net\-equipted\-with\-tricky\-machine\-used\-to\-catch\-birds\-and\-beasts;
+塞韋裡諾 < \[jean\-michel\]\-severino\-\[world\-bank\-vice\-president\,\-east\-asia\-and\-pacific\];
+䎭 < a\-kind\-of\-farm\-tool\-made\-of\-twisted\-thron\-strips\-used\-to\-flaten\-the\-land;
+教訓 < \(teach\-someone\-or\-learn\-a\)\-lesson\-\(ie\,\-obtain\-wisdom\-from\-an\-experience\);
+三岔口 < at\-the\-crossroads\,\-the\-name\-of\-a\-famous\-opera\,\-story\-from\-shui\-hu\-zhuan;
+筓 < a\-hairpin\-on\-which\-the\-hair\-is\-bound\-at\-the\-back\-of\-the\-head\.\-15\-of\-age;
+李自成 < name\-of\-a\-person\,\-li\-zi\-cheng\,\-leader\-of\-ming\-dynasty\-peasant\-rebellion;
+有期徒刑 < limited\-term\-of\-imprisonment\-\(ie\,\-anything\-less\-than\-life\-imprisonment\);
+江八點 < \"jiang\-zemin''s\-eight\-point\-formula\"\-\(for\-resuming\-a\-dialog\-with\-taiwan\);
+鄧亮洪 < tang\-liang\-hong\-\(opposition\-candidate\-in\-jan\-1996\-singapore\-elections\);
+閉目塞聽 < shuts\-one''s\-eyes\-and\-stop\-up\-one''s\-ears\-\-\-be\-out\-of\-touch\-with\-reality;
+笨鳥先飛 < clumsy\-birds\-have\-to\-start\-flying\-early\-\-\-the\-slow\-need\-to\-start\-early;
+㮲 < a\-small\-ring\-or\-a\-small\-piece\-of\-board\-attached\-to\-the\-muzzle\-of\-an\-ox;
+駁岸 < a\-low\-stone\-wall\-built\-along\-the\-water''s\-edge\-to\-protect\-an\-embankment;
+百聞不如一見 < seeing\-for\-oneself\-is\-a\-hundred\-times\-better\-than\-hearing\-from\-others;
+補法 < treatment\-involving\-the\-use\-of\-tonics\-to\-restore\-the\-patient''s\-health;
+䵻 < a\-small\-tripod\-of\-bronze\-with\-two\-ears\-tripod\-of\-bronze\-with\-two\-ears;
+三不 < \"the\-three\-no''s\"\-\(an\-example\-of\-an\-abbreviated\-slogan\-or\-catchphrase\);
+白朮 < the\-rhizome\-of\-large\-headed\-atractylodes\-\(atractylodes\-macrocephaia\);
+本草綱目 < an\-outline\-treatise\-of\-medical\-herbs\,\-compiled\-by\-li3\-shi2\-zhen1\-李時珍;
+玠 < large\-jade\-tablet\-used\-by\-officials\-at\-court\-to\-indicate\-their\-ranks;
+吃大戶 < mass\-seizure\-of\-food\-from\-landlords\-during\-famines\-before\-liberation;
+䂜 < rocky\-fine\-stone\-which\-is\-little\-less\-valuable\-than\-jade\-to\-collapse;
+㡆 < an\-artisan\-to\-soften\-raw\-silk\-by\-boiling\-and\-to\-dye\-the\-dressed\-silk;
+李時珍 < li\-shi\-zhen\-\(1518\-1593\,\-famous\-doctor\,\-author\-of\-ben3\-cao3\-gang1\-mu4;
+兵強馬壯 < strong\-soldiers\-and\-sturdy\-horses\-\-\-a\-well\-trained\-and\-powerful\-army;
+裎 < to\-take\-off\-the\-clothes\-and\-expose\-the\-body\.\-to\-carry\-in\-the\-girdle;
+鎋 < the\-linch\-pin\-of\-a\-wheel\-to\-govern\-or\-control\-the\-noise\-of\-a\-barrow;
+禽流感 < \"bird\-flu\"\-\(flu\-carried\-by\-birds\-\-\-found\-in\-hong\-kong\-in\-late\-1997\);
+䪐 < something\-made\-of\-bamboo\-put\-in\-the\-bow\-case\-to\-pretect\-from\-damage;
+業余大學 < college\-for\-people\-who\-attend\-after\-work\-\(lit\.\:\-spare\-time\-college\);
+䇭 < containers\-made\-of\-thin\-and\-long\-strip\-of\-bamboo\-or\-willow\-branches;
+㟬 < a\-mountain\-in\-today''s\-shandong\-province\-southwest\-of\-mengyin\-county;
+㚥 < to\-become\-associated\-with\-each\-other\-in\-good\-manners\-and\-politeness;
+宣判 < pronounce\-a\-\(judicial\)\-sentence\-\(after\-a\-verdict\-in\-a\-court\-of\-law\);
+蒙代爾 < \(walter\)\-mondale\-\(us\-ambassador\-to\-japan\,\-former\-us\-vice\-president\);
+陳納德 < \(claire\)\-chennault\,\-commander\-of\-flying\-tigers\-during\-world\-war\-ii;
+病友 < a\-friend\-made\-in\-hospital\-or\-people\-who\-become\-friends\-in\-hospital;
+捕風捉影 < chase\-the\-wind\-and\-clutch\-at\-shadows\-\-\-make\-groundless\-accusations;
+就是 < \(emphasizes\-that\-something\-is\-precisely\-or\-exactly\-what\-is\-stated\);
+䤞 < a\-kind\-of\-weapons\-held\-by\-the\-officials\-in\-attendance\-in\-old\-times;
+㹫 < a\-kind\-of\-animal\-generally\-called\-for\-minority\-groups\-in\-old\-china;
+㳻 < a\-bank\-of\-earth\-or\-an\-embankment\-to\-block\-the\-current\-of\-the\-water;
+㯢 < a\-piece\-of\-cross\-wise\-board\-used\-for\-frame\-on\-which\-silkworms\-spin;
+維爾容 < \(johannes\-lodewikus\)\-viljoen\-\(south\-african\-ambassador\-to\-taiwan\);
+葛洲壩 < name\-of\-a\-place\,\-gezhouba\-dam\-on\-the\-changjiang\-river\,\-in\-sichuan;
+䃘 < simple\-and\-crude\-the\-sound\-of\-pebbles\-or\-stones\-knocking\-together;
+㰱 < to\-smear\-the\-mouth\-with\-the\-blood\-of\-a\-victim\-when\-taking\-an\-oath;
+不分彼此 < make\-no\-distinction\-between\-what''s\-one''s\-own\-and\-what''s\-another''s;
+老驥伏櫪志在千里 < \(lit\.\)\-an\-old\-steed\-in\-the\-stable\-still\-aspires\-to\-gallop\-1000\-li;
+大禹 < da\-yu\,\-name\-of\-an\-ancient\-hero\-who\-successfully\-controlled\-floods;
+獯 < a\-tribe\-of\-scythians\-which\-invaded\-china\-during\-the\-hsia\-dynasty;
+鞔 < sides\-or\-uppers\-of\-shoes\-to\-stretch\-a\-skin\-on\-a\-frame\-for\-a\-drum;
+表證 < illness\-that\-has\-not\-attacked\-the\-vital\-organs\-of\-the\-human\-body;
+國際電話電報諮詢委員會 < international\-consultative\-committee\-for\-telephone\-and\-telegraph;
+不知凡幾 < can''t\-tell\-how\-many\-there\-are\-\-\-there\-are\-numerous\-similar\-cases;
+䕽 < the\-rhododendron\-\-\-\-it\-is\-said\-to\-cause\-sheep\-to\-stagger\-and\-die;
+鼻韻母 < \(of\-chinese\-pronunciation\)\-a\-vowel\-followed\-by\-a\-nasal\-consonant;
+幫閑 < hang\-on\-to\-and\-serve\-the\-rich\-and\-powerful\-by\-literary\-hack\-work;
+郜 < name\-of\-fief\-in\-shantong\-bestowed\-on\-the\-eldest\-son\-of\-wen\-wang;
+描紅 < to\-trace\-over\-red\-characters\-\(as\-a\-method\-of\-learning\-to\-write\);
+金永南 < kim\-yong\-nam\-\(north\-korean\-deputy\-premier\-and\-foreign\-minister\);
+抗戰 < war\-of\-resistance\,\-especially\-the\-war\-against\-japan\-\(1937\-1945\);
+抱殘守缺 < cherish\-the\-outmoded\-and\-preserve\-the\-outworn\-\-\-be\-conservative;
+閉塞眼睛捉麻雀 < try\-to\-catch\-sparrows\-with\-one''s\-eyes\-blindfolded\-\-\-act\-blindly;
+䍿 < a\-kind\-of\-dance\-accompanied\-by\-music\-performed\-in\-ancient\-times;
+䌞 < a\-knot\-to\-hang\-the\-apparatus\-made\-of\-reed\-for\-raising\-silkworms;
+䇉 < capacity\-unit\-in\-france\-equal\-to\-one\-hundred\-times\-of\-one\-litre;
+㽈 < a\-large\-earthenware\-jar\-with\-a\-small\-mouth\-and\-two\-or\-four\-ears;
+㹐 < to\-tow\-a\-boat\-against\-the\-current\-in\-swift\-stream\-from\-the\-bank;
+沅 < name\-of\-a\-river\-in\-western\-hunan\-that\-flows\-into\-dongting\-lake;
+簋 < a\-square\-basket\-of\-bamboo\-for\-holding\-grain\-used\-at\-sacrifices;
+不費吹灰之力 < as\-easy\-as\-blowing\-off\-dust\-\-\-not\-needing\-the\-slightest\-effort;
+斗批改 < struggle\-criticism\-transformation\-\(cultural\-revolution\-slogan\);
+阿不來提\.阿不都熱西提 < abdulaidi\-amudurexiti\-\(chairman\-of\-xinjiang\-autonomous\-region\);
+鷴 < silver\-pheasant\-badge\-worn\-by\-civil\-officials\-of\-the\-5th\-grade;
+博古通今 < conversant\-with\-things\-past\-and\-present\-\-\-erudite\-and\-informed;
+蟕 < a\-species\-of\-tortoise\-found\-near\-the\-mouth\-of\-the\-yellow\-river;
+今音 < modern\-\(i\.e\.\-not\-ancient\)\-pronunciation\-of\-a\-chinese\-character;
+斯特凡諾普洛斯 < stephanopoulos\-\(eg\,\-former\-clinton\-aide\-george\-stephanopoulos\);
+㬆 < posthumous\-title\-conferred\-upon\-emperors\-and\-eminent\-officials;
+不入虎穴焉得虎子 < how\-can\-you\-catch\-tiger\-cubs\-without\-entering\-the\-tiger''s\-lair;
+鞝 < the\-piece\-of\-leather\-used\-for\-soles\-on\-chinese\-shoes\.\-a\-patch;
+大鬧天宮 < \"the\-monkey\-creates\-havoc\-in\-heaven\"\,\-story\-about\-sun\-wu\-kong;
+蔛 < a\-small\-orchid\-like\-plant\-it\-bears\-white\-flowers\-a\-dendrobium;
+端午節 < the\-dragon\-boat\-festival\-\(the\-5th\-day\-of\-the\-5th\-lunar\-month\);
+䰙 < an\-ancient\-unit\-of\-capacity\-with\-three\-feet\-and\-a\-big\-opening;
+䔹 < a\-fungus\-which\-grows\-on\-rotten\-plants\-and\-is\-eaten\-when\-fresh;
+㯣 < a\-kind\-of\-fragrant\-tree\-used\-to\-produce\-perfume\-by\-burning\-it;
+㯡 < to\-lacquer\-some\-kind\-of\-ashes\-on\-wooden\-articals\-or\-furniture;
+悲天憫人 < bemoan\-the\-state\-of\-the\-universe\-and\-pity\-the\-fate\-of\-mankind;
+惋惜 < to\-feel\-sorry\-for\-a\-person\-over\-sth\-that\-should\-have\-happened;
+峋 < ranges\-of\-hills\-stretching\-on\-beyond\-another\-irregular\-peaks;
+歃 < smear\-one''s\-mouth\-with\-blood\-of\-a\-victim\-when\-taking\-an\-oath;
+白茫茫 < \(of\-mist\,\-snow\,\-floodwater\,\-etc\)\-a\-vast\-expanse\-of\-whiteness;
+睥睨 < look\-at\-somebody\-disdainfully\-out\-of\-the\-corner\-of\-one''s\-eye;
+羗 < tribes\-in\-west\-china\-strong\.\-educated\.\-obstinate\.\-a\-particle;
+胡適 < hu\-shi\-\(1891\-1962\)\,\-original\-proponent\-of\-bai2\-hua4\-wen2\-白話文;
+軍委 < military\-commission\-of\-the\-communist\-party\-central\-committee;
+不服水土 < \(of\-a\-stranger\)\-not\-accustomed\-to\-the\-climate\-of\-a\-new\-place;
+斯佩羅 < \(joan\)\-spero\-\(under\-secretary\-of\-state\-for\-economic\-affairs\);
+丣 < ancient\-form\-of\-the\-tenth\-of\-the\-twelve\-terrestrial\-branches;
+䡅 < something\-used\-to\-bind\-the\-frame\-work\-in\-a\-cart\-of\-old\-times;
+䚨 < a\-string\-fastened\-to\-an\-arrow\-to\-draw\-it\-back\-after\-shooting;
+䎠 < to\-twist\-or\-to\-crumple\-between\-hands\-and\-make\-something\-turn;
+㟹 < the\-appearance\-of\-a\-mountain\-is\-lofty\-and\-steep\-and\-profound;
+㝸 < a\-conical\-cap\-worn\-on\-ceremonious\-occasions\-in\-ancient\-times;
+㙨 < the\-royal\-domains\-set\-apart\-in\-ancient\-times\-for\-the\-emperor;
+燈節 < the\-lantern\-festival\-\(15th\-of\-first\-month\-of\-lunar\-calendar\);
+衩 < the\-open\-seam\-of\-a\-garment\-which\-allows\-freedom\-of\-movement;
+屺 < a\-hill\-with\-trees\-or\-grass\-\-\-some\-give\-the\-opposite\-meaning;
+北洋 < the\-qing\-dynasty\-name\-for\-the\-coastal\-provinces\-of\-liaoning;
+八旗 < the\-\"eight\-banners\"\-\(military\-organisation\-in\-qing\-dynasty\);
+䶦 < upper\-and\-lower\-teeth\-in\-order\-and\-corresponding\-each\-other;
+䧂 < to\-turn\-over\-the\-clod\-of\-the\-earth\-with\-a\-shovel\-or\-a\-spade;
+藤野 < name\-of\-a\-person\,\-teng\-ye\,\-a\-japanese\-friend\-of\-lu3\-xun4\-魯迅;
+華表 < marble\-pillar\-\(ornamental\-column\-in\-front\-of\-places\,\-tombs\);
+待業 < to\-await\-job\-assignment\-\(term\-used\-only\-in\-mainland\-china\);
+太極拳 < a\-kind\-of\-traditional\-chinese\-shadowboxing\-\(tai\-chi\-chuan\);
+哀兵必勝 < an\-army\-burning\-with\-righteous\-indignation\-is\-bound\-to\-win;
+會不會 < \(posing\-a\-question\:\-whether\-someone\,\-something\)\-can\-or\-not;
+扮相 < the\-appearance\-of\-an\-actor\-or\-actress\-in\-costume\-or\-makeup;
+抱佛腳 < clasp\-budda''s\-feet\-\-\-profess\-devotion\-only\-when\-in\-trouble;
+噞 < the\-movement\-of\-a\-fish''s\-mouth\-at\-the\-surface\-of\-the\-water;
+唵 < used\-in\-buddhist\-texts\-to\-transliterate\-non\-chinese\-sounds;
+䠂 < name\-of\-a\-powerful\-feudal\-state\-which\-existed\-740\-330\-b\.c\.;
+䖶 < to\-raise\-up\-the\-nose\-in\-order\-to\-get\-the\-bugs\-in\-the\-earth;
+蛋花湯 < clear\-soup\-containing\-beaten\-egg\-and\-green\-leafy\-vegetable;
+䄛 < service\-or\-rites\-of\-offering\-sacrifices\-for\-drink\-and\-food;
+㼰 < an\-earthenware\-jar\-with\-a\-small\-mouth\-and\-two\-or\-four\-ears;
+㸖 < hide\-or\-to\-keep\-in\-store\-the\-vegetable\-in\-cold\-winter\-days;
+㷟 < to\-scald\-the\-bristles\-off\-a\-pig\-or\-the\-feathers\-off\-a\-bird;
+㰇 < the\-square\-peck\-shaped\-box\-half\-way\-up\-a\-chinese\-flagstaff;
+㦼 < a\-wooden\-piles\-used\-as\-a\-cable\-to\-make\-immovable\-of\-a\-boat;
+㢧 < a\-book\-or\-painting\-which\-can\-be\-easily\-folded\-or\-rolled\-up;
+金山寺 < jinshan\-temple\,\-where\-fahai\-lives\-\(from\-madam\-white\-snake\);
+並蒂蓮 < twin\-lotus\-flowers\-on\-one\-stalk\-\-\-a\-devoted\-married\-couple;
+武術 < wushu\,\-martial\-arts\-such\-as\-shadow\-boxing\,\-swordplay\,\-etc\.;
+中共 < \(abbreviation\-for\)\-chinese\-communist\-\(party\,\-regime\,\-etc\.\);
+钲 < kind\-of\-gong\-used\-in\-ancient\-times\-by\-troops\-on\-the\-march;
+政協 < cppcc\-\(chinese\-people''s\-political\-consultative\-committee\);
+採取 < adopt\-or\-carry\-out\-\(measures\,\-policies\,\-course\-of\-action\);
+癟三 < a\-wretched\-looking\-tramp\-who\-lives\-by\-begging\-or\-stealing;
+表兄 < male\-cousin\-with\-a\-different\-surname\-\(older\-than\-oneself\);
+矛頭指向 < target\-someone\-or\-something\-\(for\-attack\,\-criticism\,\-etc\.\);
+仙草 < a\-kind\-of\-plant\-used\-as\-a\-medicinal\-herb\-in\-ancient\-times;
+䪳 < slanted\-face\-causing\-by\-the\-paralyzed\-of\-the\-facial\-nerve;
+板胡 < a\-bowed\-stringed\-instrument\-with\-a\-thin\-wooden\-soundboard;
+䞋 < to\-do\-alms\-for\-the\-buddhist\-priests\-or\-monks\-in\-old\-times;
+䙆 < slits\-on\-the\-lower\-part\-of\-a\-gown\-for\-freedom\-of\-movement;
+䀏 < to\-move\-one''s\-eyes\-to\-express\-or\-indicate\-with\-eyes\-dizzy;
+㿄 < the\-groans\-or\-moans\-from\-a\-person\-in\-a\-critical\-condition;
+㶏 < an\-ancient\-name\-of\-a\-river\-in\-henan\-province\-dengfengxian;
+㳇 < name\-of\-a\-place\-in\-today''s\-jiangsu\-province\-yixing\-county;
+㫋 < a\-silken\-banner\-hanging\-from\-a\-staff\-bent\-over\-at\-the\-top;
+斯卡伯勒礁 < scarborough\-shoal\-\(philippines''\-name\-for\-huangyan\-island\);
+不恥下問 < not\-feel\-ashamed\-to\-ask\-and\-learn\-from\-one''s\-subordinates;
+狽 < a\-legendary\-animal\-with\-short\-forelegs\-which\-rode\-a\-wolf;
+歐 < used\-in\-transliterating\-non\-chinese\-words\-such\-as\-europe;
+汨 < mi\-river\-in\-hunan\-province\-where\-qu\-yuan\-drowned\-himself;
+汜 < a\-stream\-which\-leaves\-the\-main\-branch\-then\-later\-returns;
+卡拉OK < karaoke\-\(singing\-to\-recorded\-instrumental\-accompaniment\);
+中國民航 < general\-administration\-of\-civil\-aviation\-of\-china\-\(caac\);
+補養 < take\-a\-tonic\-or\-nourishing\-food\-to\-build\-up\-one''s\-health;
+沙利科什維利 < general\-shalikashvili\-\(head\-of\-us\-joint\-chiefs\-of\-staff\);
+簈 < bamboo\-mat\-used\-to\-protect\-carriage\-passengers\-from\-dust;
+爼 < a\-small\-table\-or\-tiered\-stand\-filled\-with\-meat\-offerings;
+三國演義 < name\-of\-a\-classic\-novel\,\-\"romance\-of\-the\-three\-kingdoms\";
+拼命 < to\-be\-ready\-to\-risk\-one''s\-life\-\(in\-fighting\,\-work\,\-etc\.\);
+背水一戰 < fight\-with\-one''s\-back\-to\-the\-river\-\-\-fight\-to\-win\-or\-die;
+䳚 < a\-sort\-of\-nightingale\-which\-is\-said\-to\-sing\-for\-the\-dawn;
+䡂 < the\-long\-wooden\-bumper\-at\-the\-rear\-of\-a\-cart\-or\-carriage;
+杯弓蛇影 < mistaking\-the\-reflection\-of\-a\-bow\-in\-the\-cup\-for\-a\-snake;
+䃾 < to\-offer\-small\-pig\-as\-sacrifice\-when\-warship\-god\-of\-life;
+㼪 < fragments\-of\-a\-tile\-haven''t\-t\-been\-kiln\-dried\-completely;
+㴖 < name\-of\-a\-stream\-in\-shandong\-province\-southwest\-of\-jinan;
+㝉 < space\-between\-the\-throne\-and\-the\-retiring\-room\-behind\-it;
+㖫 < used\-in\-names\-for\-minority\-ethnic\-group\-in\-ancient\-china;
+背井離鄉 < leave\-one''s\-native\-place\-\(especially\-against\-one''s\-will\);
+炝 < stir\-fry\-or\-boil\-in\-water\-or\-oil\-then\-cook\-with\-a\-sauce;
+遷怒 < to\-take\-one''s\-anger\-out\-on\-sb\-\(who\-does\-not\-deserve\-it\);
+波瀾起伏 < of\-a\-piece\-of\-writing\-with\-one\-climax\-following\-another;
+不為已甚 < refrain\-from\-going\-to\-extremes\-in\-meting\-out\-punishment;
+不約而同 < take\-the\-same\-action\-or\-view\-without\-prior\-consultation;
+飛虎隊 < flying\-tigers\-\(us\-airmen\-in\-china\-during\-world\-war\-two\);
+掛好 < to\-hang\-up\-properly\-\(telephone\,\-picture\,\-clothes\,\-etc\.\);
+拔毒 < draw\-out\-pus\-by\-applying\-a\-plaster\-to\-the\-affected\-area;
+弮 < a\-crowwbow\-which\-discharged\-several\-bolts\-in\-succession;
+䪙 < leather\-wrapped\-collar\-for\-a\-draft\-animal\-of\-a\-carriage;
+䧚 < the\-name\-of\-a\-place\-in\-the\-south\-west\-of\-hebei\-province;
+畜力 < animal\-powered\-\(as\-opposed\-to\-human\-or\-machine\-powered\);
+䡞 < leather\-that\-wind\-round\-on\-the\-shafts\-of\-a\-big\-carriage;
+䍜 < a\-basket\-or\-a\-cage\-used\-to\-keep\-wild\-and\-domestic\-fowls;
+䇆 < capacity\-unit\-in\-france\-equal\-to\-ten\-times\-of\-one\-litre;
+䂅 < to\-have\-insight\-or\-vision\-of\-a\-simple\-and\-honest\-person;
+㲽 < name\-of\-a\-river\-in\-today''s\-southwest\-of\-shanxi\-province;
+㮐 < a\-rack\-or\-a\-stand\-with\-three\-sticks\-to\-cross\-each\-other;
+㬸 < a\-kind\-of\-services\-or\-ceremonies\-of\-offering\-sacrifices;
+暗花兒 < a\-veiled\-design\-incised\-in\-porcelain\-or\-woven\-in\-fabric;
+冰炭不相容 < as\-incompatible\-or\-irreconcilable\-as\-ice\-and\-hot\-coals;
+幫腔 < vocal\-accompaniment\-in\-some\-traditional\-chinese\-operas;
+奔喪 < hasten\-home\-for\-the\-funeral\-of\-a\-parent\-or\-grandparent;
+白芍 < \(peeled\)\-root\-of\-herbaceous\-peony\-\(paeonia\-lactiflora\);
+郌 < name\-of\-an\-ancient\-hsien\-in\-modern\-gansu\/shaanxi\-area\.;
+興趣 < interest\-\(directed\-towards\,\-not\-inherent\-in\-something\);
+拔罐子 < cupping\-technique\-used\-in\-traditional\-chinese\-medicine;
+耰 < toothless\-rake\-for\-drawing\-earth\-over\-newly\-sown\-grain;
+琀 < gems\-of\-pearls\-formerly\-put\-into\-the\-mouth\-of\-a\-corpse;
+標兵 < parade\-guards\-\(usually\-spaced\-out\-along\-parade\-routes\);
+䪃 < wine\-container\-used\-by\-minority\-tribe\-in\-ancient\-times;
+䥷 < a\-hinged\-shear\-or\-long\-knife\-for\-cutting\-fodder\-or\-hay;
+䤩 < an\-ornament\-at\-the\-end\-of\-a\-belt\-used\-in\-ancient\-times;
+䝪 < to\-provide\-money\-or\-gift\-and\-to\-consult\-fortune\-teller;
+䙛 < ceremonial\-dress\-of\-the\-emperor\-or\-very\-high\-officials;
+䘦 < a\-kind\-of\-head\-dress\-wore\-in\-funeral\-rites\-in\-old\-days;
+䘟 < kind\-of\-silk\-woven\-with\-double\-threads\-and\-water\-proof;
+䔑 < a\-white\-colored\-cluster\-grown\-at\-the\-tip\-of\-cogongrass;
+䉲 < thin\-and\-flat\-slips\-of\-bamboo\-used\-for\-weaving\-purpose;
+㼽 < fragments\-of\-a\-tile\-haven''t\-been\-kiln\-dried\-completely;
+㶁 < after\-blocking\-the\-water\-flow\-takes\-different\-waterway;
+㯀 < bonds\-and\-fetters\-for\-falcons\-and\-dogs\-used\-in\-hunting;
+㒾 < a\-kind\-of\-wrapper\-used\-to\-cover\-over\-the\-face\-and\-head;
+八面玲瓏 < be\-smooth\-and\-slick\-\(in\-establishing\-social\-relations\);
+元宵節 < the\-lantern\-festival\,\-january\-15\-on\-the\-lunar\-calendar;
+眾志成城 < \"unity\-of\-will\-is\-an\-impregnable\-stronghold\"\-\(proverb\);
+個體戶 < a\-small\-private\-business\-\(used\-in\-mainland\-china\-only\);
+法海 < name\-of\-a\-buddhist\-monk\,\-fahai\,\-from\-madam\-white\-snake;
+蠲 < the\-millipede\-sometimes\-confounded\-with\-the\-grow\-worm;
+蘧 < a\-plant\-which\-resembles\-wheat\-but\-has\-no\-edible\-grain;
+景德鎮 < jing\-de\-zhen\-\(a\-chinese\-city\-in\-jiang\-xi\-江西\-province\);
+韋爾弗雷茲 < \(george\)\-wehrfritz\-\(beijing\-bureau\-chief\-of\-newsweek\);
+長城卡 < great\-wall\-card\-\(credit\-card\-issued\-by\-bank\-of\-china\);
+哈貝爾 < \(webster\)\-hubbell\-\(former\-associate\-attorney\-general\);
+萬壽山 < name\-of\-a\-place\,\-longevity\-hill\,\-in\-summer\-palace\-頤和園;
+拉那烈 < \(prince\)\-ranariddh\-\(son\-of\-king\-sihanouk\-of\-cambodia\);
+䡴 < carriage\-used\-in\-ancient\-times\-to\-take\-enemy\-position;
+䟺 < walk\-slowly\-because\-of\-the\-wrong\-position\-of\-the\-feet;
+䉣 < slips\-of\-bamboo\-provided\-for\-writing\-in\-ancient\-times;
+䁹 < to\-look\-askance\-\-\-\-a\-expression\-of\-disdain\-or\-despise;
+㼌 < lot\-of\-melons\-growing\-but\-the\-root\-is\-weak\-and\-feeble;
+㻠 < jade\-hanging\-on\-the\-sides\-of\-the\-cap\-in\-ancient\-times;
+㮣 < a\-piece\-of\-wood\-used\-to\-strike\-off\-grain\-in\-a\-measure;
+㓤 < to\-strip\-the\-skin\-of\-the\-face\-\-\-\-an\-imminent\-calamity;
+包干制 < a\-system\-of\-payment\-partly\-in\-kind\-and\-partly\-in\-cash;
+抗日戰爭 < \(china''s\)\-war\-of\-resistance\-against\-japan\-\(1937\-1945\);
+顏真卿 < name\-of\-a\-person\,\-yan\-zhenqing\,\-a\-famous\-calligrapher;
+白素貞 < \(name\-of\-a\-person\)\-bai\-suzhen\,\-from\-madam\-white\-snake;
+砀 < brilliantly\-colored\-stone\-with\-veined\-patterns\-in\-it;
+彈琴 < to\-play\-or\-strum\-a\-lute\-or\-other\-stringed\-instrument;
+白陶 < white\-pottery\-\(of\-shang\-dynastry\-16\-11th\-century\-bc\);
+包干 < be\-responsible\-for\-a\-task\-unit\-until\-it\-is\-completed;
+大材小用 < using\-a\-talented\-person\-in\-an\-insignificant\-position;
+琳\.戴維斯 < lynn\-davis\-\(us\-state\-department\-arms\-control\-expert\);
+平方 < square\-\(as\-in\-square\-foot\,\-square\-mile\,\-square\-root\);
+虒 < an\-amphibious\-beast\-resembling\-a\-tiger\-with\-one\-horn;
+筁 < a\-bamboo\-frame\-on\-which\-silkworms\-spin\-their\-cocoons;
+人民英雄紀念碑 < monument\-to\-the\-people''s\-heroes\,\-at\-tiananmen\-square;
+冋 < a\-desert\-a\-border\-prairie\-the\-1st\-form\-is\-radical\-13;
+䴷 < use\-the\-whole\-piece\-of\-barley\-to\-ferment\-for\-brewing;
+䭞 < a\-kind\-of\-sacrifices\-offered\-to\-gods\-or\-the\-deceased;
+䧠 < name\-of\-a\-place\-in\-what\-is\-today''s\-shandong\-province;
+䑩 < a\-kind\-of\-inland\-rivers\-warship\-used\-in\-qing\-dynasty;
+䍸 < a\-legendary\-goat\-like\-animal\-with\-4\-ears\-and\-9\-tails;
+䃫 < a\-silicate\-substance\-from\-the\-salt\-wells\-in\-szechwan;
+㸜 < to\-get\-through\-the\-space\-enclosed\-by\-a\-constellation;
+㷭 < a\-conical\-brick\-structure\-in\-which\-to\-light\-a\-beacon;
+不聞不問 < not\-bother\-to\-ask\-questions\-or\-listen\-to\-what''s\-said;
+並行不悖 < both\-can\-be\-implemented\-without\-coming\-into\-conflict;
+步步為營 < advance\-gradually\-and\-entrench\-oneself\-at\-every\-step;
+甾 < ground\-that\-has\-been\-under\-cultivation\-for\-one\-year;
+一望無際 < as\-far\-as\-the\-eye\-can\-see\-\(lit\:\-look\-afar\-no\-bound\);
+不見經傳 < not\-to\-be\-found\-in\-the\-classics\-\-\-not\-authoritative;
+撥雲見日 < dispel\-the\-clouds\-and\-see\-the\-sun\-\-\-restore\-justice;
+比上不足比下有余 < fall\-short\-of\-the\-best\-but\-be\-better\-than\-the\-worst;
+白冰冰 < pai\-ping\-ping\-\(well\-known\-taiwan\-performing\-artist\);
+拉貝 < \(john\)\-rabe\-\(german\-eyewitness\-to\-nanjing\-massacre\);
+巫山 < mt\.\-wu\,\-on\-the\-changjiang\-river\-by\-the\-three\-gorges;
+禡 < a\-sacrifice\-at\-the\-beginning\-of\-a\-military\-campaign;
+礮 < ancient\-ballista\-for\-throwing\-heavy\-stones\-a\-cannon;
+捕俘 < capture\-enemy\-personnel\-\(for\-intelligence\-purposes\);
+伯恩斯 < \(nicholas\)\-burns\-\(us\-state\-department\-spokesperson\);
+䯠 < the\-five\-lowest\-pieces\-of\-bone\-of\-the\-spinal\-column;
+䬦 < food\-items\-merely\-arranged\-for\-display\-purpose\-only;
+䙑 < a\-piece\-of\-sackcloth\-worn\-on\-the\-breast\-in\-mourning;
+鏢客 < armed\-escort\-\(of\-travellers\-or\-merchants''\-caravans\);
+䈱 < an\-open\-bamboo\-basket\-used\-to\-feed\-domestic\-animals;
+㪵 < half\-of\-a\-unit\-of\-measurement\-used\-in\-ancient\-times;
+㡈 < the\-ropes\-attached\-to\-the\-bier\-and\-held\-by\-mourners;
+㚤 < a\-lady\-officer\-of\-the\-monarch''s\-palace\-in\-old\-times;
+安步當車 < walk\-over\-leisurely\-instead\-of\-riding\-in\-a\-carriage;
+貝母 < the\-bulb\-of\-the\-fritillary\-\(fritillaria\-thunbergii\);
+名勝 < a\-place\-famous\-for\-its\-scenery\-or\-historical\-relics;
+民樂 < music\,\-esp\.\-folk\-music\,\-for\-traditional\-instruments;
+呀 < particle\-used\-to\-express\-surprise\-or\-mild\-emphasis;
+陝西 < shaanxi\-province\,\-china\-\(capitol\-city\-is\-xi''an\-西安\);
+日方 < the\-japanese\-side\-or\-party\-\(in\-negotiations\,\-etc\.\);
+不勝枚舉 < too\-numerous\-to\-mention\-individually\-or\-one\-by\-one;
+靷 < the\-leather\-belt\-that\-connects\-a\-horse\-with\-a\-cart;
+譼 < to\-supervise\-to\-confine\-a\-government\-establishment;
+橫折 < \(horizontal\-starting\-right\-angle\-character\-stroke\);
+西安 < xi''an\-\(city\)\,\-the\-capitol\-city\-of\-shaanxi\-province;
+小青 < name\-of\-a\-person\,\-xiaoqing\,\-from\-madam\-white\-snake;
+臨摹 < to\-copy\-\(a\-model\-of\-calligraphy\-or\-painting\,\-etc\.\);
+坫 < a\-stand\-on\-which\-to\-replace\-goblets\-after\-drinking;
+備取 < be\-on\-the\-waiting\-list\-\(for\-admission\-to\-a\-school\);
+䴽 < a\-small\-round\-piece\-of\-distiller''s\-grains\-or\-yeast;
+䰎 < to\-twist\-the\-hair\-in\-a\-knot\-on\-the\-top\-of\-the\-head;
+䪝 < leather\-cord\-that\-winding\-on\-the\-handle\-of\-a\-knife;
+賓至如歸 < guests\-feel\-at\-home\-\(in\-a\-hotel\,\-guesthouse\,\-etc\.\);
+䡇 < the\-cross\-bar\-at\-the\-end\-of\-the\-pole\-of\-a\-carriage;
+䞀 < to\-desire\-for\-more\-money\-than\-one''s\-rightful\-share;
+䘭 < the\-pleates\-on\-the\-lapel\-of\-a\-garment\-of\-thin\-silk;
+䐈 < a\-piece\-of\-one\-foot\-two\-inches\-dried\-seasoned\-meat;
+䍅 < containers\-for\-water\-or\-wine\-used\-in\-ancient\-times;
+䋾 < cotton\-and\-silk\-to\-be\-laid\-and\-attached\-each\-other;
+䉐 < a\-thin\-and\-long\-strip\-of\-bamboo\-for\-making\-baskets;
+䈻 < a\-heavy\-mats\-of\-bamboo\-used\-for\-deep\-water\-fishing;
+䇠 < wrench\-to\-adjust\-the\-string\-on\-stringed\-instrument;
+䄌 < to\-perform\-rities\-in\-honor\-of\-the\-ancestral\-temple;
+䃦 < a\-flat\-and\-great\-rock\-people\-squat\-or\-crouch\-on\-it;
+㻀 < fine\-stone\-which\-is\-little\-less\-valuable\-than\-jade;
+㲬 < hair\-decorations\-on\-a\-helmet\-used\-in\-ancient\-times;
+㱯 < get\-the\-unborn\-baby\-goat\-by\-killng\-the\-mother\-goat;
+㮰 < the\-small\-beam\-supporting\-the\-rafters\-at\-the\-eaves;
+㪶 < a\-dry\-measure\-10\-or\-5\-times\-that\-of\-a\-chinese\-peck;
+尼赫魯 < \(jawaharlal\)\-nehru\-\(first\-prime\-minister\-of\-india\);
+㟗 < name\-of\-a\-small\-principality\-in\-what\-is\-now\-shanxi;
+撥浪鼓 < a\-drum\-shaped\-rattle\-\(used\-by\-pedlars\-or\-as\-a\-toy\);
+尖閣列島 < senkaku\-islands\-\(japanese\-name\-for\-diaoyu\-islands\);
+本末 < the\-whole\-course\-of\-an\-event\-from\-beginning\-to\-end;
+頓挫 < with\-syncopated\-cadence\-\(brush\-stroke\-in\-painting\);
+維吾爾族 < the\-uygur\-\(uighur\)\-nationality\,\-living\-in\-xinjiang;
+版畫 < a\-picture\-printed\-from\-an\-engraved\-or\-etched\-plate;
+避諱 < taboo\-against\-using\-the\-personal\-names\-of\-emperors;
+按下葫蘆浮起瓢 < solve\-one\-problem\-only\-to\-find\-another\-cropping\-up;
+伽 < transcription\-of\-sanskrit\-''gha''\-in\-buddhist\-texts;
+屣 < straw\-sandals\-or\-slippers\-that\-have\-no\-heel\-backs;
+北大荒 < the\-great\-northern\-wilderness\-\(in\-northern\-china\);
+武松 < wusong\,\-name\-of\-a\-person\,\-a\-hero\-in\-shui\-hu\-zhuan;
+十五大 < 1\-5th\-party\-congress\-\(of\-chinese\-communist\-party\);
+李光耀 < lee\-kuan\-yew\-\(former\-prime\-minister\-of\-singapore\);
+許仙 < name\-of\-a\-person\,\-xu\-xian\,\-from\-madam\-white\-snake;
+儐相 < attendant\-of\-the\-bride\-or\-bridegroom\-at\-a\-wedding;
+補瀉 < reinforcing\-and\-reducing\-methods\-\(in\-acupuncture\);
+南華早報 < south\-china\-morning\-post\-\(newspaper\-in\-hong\-kong\);
+幹事 < administrative\-secretary\-\(in\-charge\-of\-something\);
+病入膏肓 < the\-disease\-has\-attacked\-the\-vitals\-\-\-beyond\-cure;
+巫峽 < wuxia\-gorge\,\-in\-the\-changjiang\-river\-three\-gorges;
+漎 < a\-place\-where\-small\-streams\-flow\-into\-a\-large\-one;
+折筆 < against\-the\-bristles\-\(brush\-movement\-in\-painting\);
+檾 < grassy\-plant\-with\-fibres\-from\-which\-cloth\-is\-made;
+專線 < special\-purpose\-phone\-line\-or\-communications\-link;
+圖克 < \(gary\-l\.\)\-tooker\-\(motorola\-chairman\-of\-the\-board\);
+䰌 < to\-bind\-the\-hair\-in\-a\-knot\-on\-the\-top\-of\-the\-head;
+䩵 < tanner\-who\-made\-the\-leather\-drum\-in\-ancient\-times;
+人民行動黨 < people''s\-action\-party\-\(ruling\-party\-in\-singapore\);
+䚙 < a\-spoon\-for\-cooked\-rice\-made\-of\-horn\-of\-an\-animal;
+䌳 < a\-kind\-of\-unrefined\-or\-unpolished\-silken\-textiles;
+䊺 < an\-implement\-to\-draw\-or\-to\-collect\-ropes\-or\-cords;
+䉃 < sliped\-open\-bamboo\-with\-the\-joints\-used\-as\-an\-oar;
+䉀 < rectangular\-chest\-or\-box\-woven\-from\-bamboo\-strips;
+䄋 < to\-pray\-for\-preventing\-or\-forestalling\-calamities;
+䃮 < a\-stone\-build\-hydraulic\-measures\-in\-ancient\-times;
+㾿 < roar\-of\-asthma\-or\-expectorate\-from\-a\-dying\-person;
+㻨 < ine\-stone\-which\-is\-little\-less\-valuable\-than\-jade;
+㺐 < generally\-called\-for\-minority\-groups\-in\-old\-china;
+㯂 < pillar\-or\-post\-of\-a\-frame\-on\-which\-silkworms\-spin;
+㟋 < deep\-and\-level\-ground\-gully\-at\-the\-foot\-of\-a\-hill;
+㞪 < the\-appearance\-of\-the\-mountain\-is\-flat\-and\-smooth;
+斜鉤 < \(downwards\-right\-concave\-hooked\-character\-stroke\);
+豎折 < \(downwards\-starting\-right\-angle\-character\-stroke\);
+老兄 < ''old\-chap''\-\(form\-of\-address\-between\-male\-friends\);
+約翰拉貝 < john\-rabe\-\(german\-eyewitness\-to\-nanjing\-massacre\);
+衅 < consecrate\-sacrificial\-vessels\-by\-smearing\-blood;
+虢 < name\-of\-ancient\-feudal\-state\-in\-shenxi\-and\-hunan;
+跑江湖 < to\-make\-a\-living\-as\-a\-travelling\-performer\,\-etc\.;
+交易額 < sum\-or\-volume\-or\-amount\-of\-business\-transactions;
+齉 < stoppage\-of\-the\-nose\-to\-speak\-with\-a\-nasal\-twang;
+橫筆 < bristles\-lying\-down\-\(brush\-movement\-in\-painting\);
+不敢越雷池一步 < dare\-not\-go\-one\-step\-beyond\-the\-prescribed\-limit;
+採購 < make\-purchases\-for\-an\-organization\-or\-enterprise;
+正在 < in\-the\-process\-of\-\(doing\-something\-or\-happening\);
+褯 < children''s\-garments\.\-a\-mat\-for\-wrapping\-garments;
+林豐正 < lin\-feng\-cheng\-\(taiwan\-minister\-of\-the\-interior\);
+報國 < dedicate\-oneself\-to\-the\-service\-of\-one''s\-country;
+董建華 < tung\-chee\-hwa\-\(hong\-kong\-leader\-after\-july\-1997\);
+筆觸 < brush\-stroke\-in\-chinese\-painting\-and\-calligraphy;
+不破不立 < without\-destruction\-there\-can\-be\-no\-construction;
+南京路 < nanjing\-st\.\,\-large\-commercial\-street\-in\-shanghai;
+梠 < a\-small\-beam\-supporting\-the\-rafters\-at\-the\-eaves;
+摣 < a\-handful\.\-to\-pick\-up\-with\-the\-fingers\.\-to\-seize;
+堘 < a\-raised\-path\-between\-field\-which\-acts\-as\-a\-dyke;
+䶜 < the\-process\-to\-whiten\-the\-ivory\-or\-elephant\-tusk;
+䮉 < horses\-kept\-at\-a\-courier\-station\-in\-former\-times;
+䢵 < name\-of\-an\-old\-country\-in\-today''s\-hubei\-province;
+䡟 < a\-ring\-of\-the\-horizontal\-front\-bar\-on\-a\-carriage;
+䞛 < dancing\-of\-a\-eastern\-minority\-group\-in\-old\-china;
+䝌 < a\-pig\-seek\-for\-food\-through\-digging\-on\-the\-earth;
+䒁 < a\-small\-boat\-connected\-to\-the\-back\-of\-a\-big\-boat;
+䉋 < a\-variety\-of\-bamboo\-shoots\-that\-sprout\-in\-winter;
+䈔 < whistle\-made\-of\-reed\-without\-holes\-for\-fingering;
+㽙 < official\-in\-charge\-of\-farmlands\-in\-ancient\-times;
+㳎 < guide\-or\-lead\-to\-make\-the\-water\-flowing\-smoothly;
+㲪 < woolen\-blanket\-with\-decorative\-design\-or\-pattern;
+㲨 < a\-decorative\-fine\-blanket\-on\-the\-top\-of\-a\-saddle;
+㧋 < to\-lengthen\-and\-extenuate\-\-\-\-as\-in\-making\-noodle;
+㠜 < young\-kids\-smart\-and\-familiar\-with\-human\-affairs;
+便人 < somebody\-who\-happens\-to\-be\-on\-hand\-for\-an\-errand;
+㙱 < earthenware\-used\-to\-bake\-cakes\-in\-northern\-china;
+謝辛 < chea\-sim\-\(cambodian\-national\-assembly\-president\);
+外電 < reports\-from\-foreign\-\(non\-chinese\)\-news\-agancies;
+喁 < the\-mouth\-of\-a\-fish\-at\-the\-surface\-of\-the\-water;
+揎 < to\-pull\-up\-the\-sleeves\-and\-stretch\-out\-the\-arms;
+箬 < the\-cuticle\-of\-the\-bamboo\-a\-broad\-leaved\-bamboo;
+罷了 < a\-modal\-particle\-indicating\-\(don''t\-mind\-it\,\-ok\);
+靜山 < cheng\-san\-\(electoral\-constituency\-in\-singapore\);
+八仙桌 < old\-fashioned\-square\-table\-to\-seat\-eight\-people;
+包產到戶 < fixing\-of\-farm\-output\-quotas\-for\-each\-household;
+軾 < horizontal\-wooden\-bar\-in\-front\-of\-a\-sedan\-chair;
+抓飯 < a\-kind\-of\-food\-popular\-among\-believers\-in\-islam;
+萆 < the\-castor\-oil\-plant\-also\-used\-for\-other\-plants;
+塞拉凡 < \(sonny\)\-seraphin\-\(haitian\-ambassador\-to\-taiwan\);
+金大中 < kim\-dae\-jung\-\(newly\-elected\-president\-of\-korea\);
+白描 < line\-drawing\-in\-traditional\-ink\-and\-brush\-style;
+簠 < an\-ancient\-vessel\-used\-for\-holding\-boiled\-grain;
+范斯坦 < \(dianne\)\-feinstein\-\(us\-senator\-from\-california\);
+駱駝祥子 < name\-of\-a\-novel\,\-luo\-tuo\-xiangzi\,\-by\-lao\-she\-老舍;
+䲰 < a\-second\-name\-for\-the\-pigeon\-or\-the\-turtle\-dove;
+耶穌基督末世聖徒教會 < the\-church\-of\-jesus\-christ\-of\-latter\-day\-saints;
+䝥 < to\-roar\-or\-howl\-frantic\-barks\-of\-dogs\-or\-wolves;
+䔤 < the\-lush\-and\-luxuriant\-of\-the\-grass\-and\-flowers;
+液態水 < liquid\-water\-\(as\-opposed\-to\-steam\-or\-ice\,\-e\.g\.\);
+㯮 < a\-kind\-of\-tree\-with\-big\-leaves\-and\-in\-red\-color;
+逼上樑山 < be\-driven\-to\-join\-the\-liangshan\-mountain\-rebels;
+㔍 < a\-hinged\-shear\-or\-long\-knife\-for\-cutting\-fodder;
+解放軍 < people''s\-liberation\-army\-\(ie\,\-the\-chinese\-army\);
+唐山 < tang\-shan\-\(a\-chinese\-city\-in\-hebei\-河北\-province\);
+常任理事國 < permanent\-member\-state\-\(of\-un\-security\-council\);
+璜 < a\-semicircular\-jade\-ornament\-used\-as\-a\-pendant;
+避嫌 < avoid\-doing\-anything\-that\-may\-arouse\-suspicion;
+趙紫陽 < zhao\-ziyang\-\(former\-chinese\-leadership\-figure\);
+報幕 < announce\-the\-items\-on\-a\-\(theatrical\)\-programme;
+諬 < to\-open\-to\-begin\-to\-explain\-to\-inform\-a\-letter;
+親家 < parents\-of\-one''s\-daughter\-in\-law\-or\-son\-in\-law;
+南轅北轍 < \(fig\.\)\-act\-in\-a\-way\-that\-defeats\-one''s\-purpose;
+猹 < wild\-animal\-mentioned\-in\-short\-story\-by\-lu\-xun;
+犼 < a\-fierce\-mongolian\-wolf\-dragon''s\-head\-on\-roofs;
+湓 < an\-affluent\-of\-the\-river\-yangtze\-near\-kiukiang;
+歚 < used\-in\-name\-of\-famous\-korean\-painter\-ceng\-sen;
+保外就醫 < \(of\-a\-prisoner\)\-released\-for\-medical\-treatment;
+喜糖 < sweet\-given\-on\-a\-happy\-occasion\-\(esp\.\-wedding\);
+拜壽 < congratulate\-an\-elderly\-person\-on\-his\-birthday;
+蒸蒸日上 < becoming\-more\-prosperous\-with\-each\-passing\-day;
+䶛 < to\-separate\-the\-meat\-from\-the\-bones\-with\-teeth;
+䳜 < a\-kind\-of\-bird\-which\-shares\-its\-nest\-with\-rats;
+䲍 < a\-perch\-like\-fish\-with\-white\-body\-and\-red\-tail;
+䩶 < saddle\-and\-rein\-etc\.\-for\-the\-imperial\-carriage;
+烏魯木齊 < urumqi\-\(capital\-of\-xinjiang\-autonomous\-region\);
+安土重遷 < hate\-to\-leave\-a\-place\-where\-one\-has\-lived\-long;
+䗽 < a\-small\-gadfly\-that\-suck\-blood\-of\-horse\-or\-cow;
+䉴 < a\-bamboo\-ware\-to\-collect\-and\-keep\-something\-in;
+䉅 < small\-bamboo\-whose\-joints\-are\-three\-feet\-apart;
+䄦 < to\-put\-forth\-ears\-and\-to\-blossom\-of\-the\-grains;
+政府機關開放系統互連總則 < government\-open\-system\-interconnection\-profile;
+㽩 < connected\-banks\-of\-earth\-or\-paths\-in\-the\-field;
+並行 < in\-parallel\-\[development\,\-implementation\,\-etc\];
+㹃 < two\-brindled\-cows\-to\-plough\-face\-to\-each\-other;
+伯杰 < \(samuel\)\-berger\-\(us\-national\-security\-advisor\);
+㶟 < an\-ancient\-neme\-of\-a\-river\-in\-shanxi\-and\-hebei;
+東盟 < asean\-\(association\-of\-southeast\-asian\-nations\);
+㲈 < the\-name\-of\-the\-music\-of\-the\-legendary\-emperor;
+㬐 < a\-state\-during\-the\-period\-of\-spring\-and\-autumn;
+㡛 < name\-for\-a\-workman\-who\-apply\-color\-in\-painting;
+工商銀行 < industrial\-and\-commercial\-bank\-of\-china\-\(icbc\);
+㟢 < the\-rocks\-on\-the\-hills\-are\-of\-different\-shapes;
+㜼 < children\-of\-one''s\-brother\-\-\-\-nephews\-or\-nieces;
+曾經 < \(refers\-to\-something\-that\-happened\-previously\);
+㔽 < a\-kind\-of\-wine\-pot\-or\-jar\-used\-in\-ancient\-time;
+㓃 < to\-sacrifice\-by\-pouring\-out\-a\-libation\-of\-wine;
+㑞 < a\-maid\-who\-accompanies\-a\-bride\-to\-her\-new\-home;
+可見 < it\-can\-clearly\-be\-seen\-\(that\-this\-is\-the\-case\);
+事與願違 < things\-don''t\-turn\-out\-the\-way\-you\-want\-or\-plan;
+慰問 < express\-sympathy\,\-greetings\,\-consolation\,\-etc\.;
+海德 < hyde\-\(eg\,\-house\-judiciary\-chairman\-henry\-hyde\);
+張燈結綵 < be\-decorated\-with\-lanterns\-and\-colored\-banners;
+閉門思過 < shut\-oneself\-up\-and\-ponder\-over\-one''s\-mistakes;
+羅斯 < roth\-\(eg\,\-hrw\-executive\-director\-kenneth\-roth\);
+閉關自守 < close\-the\-country\-to\-international\-intercourse;
+旁聽 < be\-a\-visitor\-\(at\-a\-meeting\,\-class\,\-trial\,\-etc\);
+互通性 < interoperability\-\(of\-communications\-equipment\);
+畲 < to\-cultivate\-land\-by\-first\-setting\-fire\-to\-it;
+篚 < round\-or\-oval\-covered\-baskets\-with\-short\-legs;
+推辭 < to\-decline\-\(an\-appointment\,\-invitation\,\-etc\.\);
+不避艱險 < shrink\-or\-flinch\-from\-no\-difficulty\-or\-danger;
+白痢 < dysentery\-characterized\-by\-white\-mucous\-stool;
+華佗 < name\-of\-a\-famous\-doctor\-in\-old\-times\,\-hua\-tuo;
+粔 < cakes\-made\-from\-rice\-flour\-twisted\-into\-rings;
+戤 < to\-infringe\-a\-trade\-mark\-to\-pledge\-an\-article;
+阿旺曲沛 < ngawang\-choepel\-\(tibetan\,\-fullbright\-scholar\);
+棒槌 < wooden\-club\-\(used\-to\-beat\-clothes\-in\-washing\);
+全斗煥 < chun\-doo\-hwan\-\(former\-south\-korean\-president\);
+乤 < first\-character\-of\-korean\-place\-name\-''halpho'';
+䶨 < in\-the\-manner\-a\-toothless\-person\-chewing\-food;
+䮛 < extra\-horse\-harnessed\-by\-the\-side\-of\-the\-team;
+䣠 < name\-of\-a\-village\-in\-today''s\-sichuan\-province;
+䣟 < name\-of\-pavilion\-in\-today''s\-shandong\-province;
+䠒 < courtesy\-of\-a\-minority\-group\-in\-ancient\-times;
+䝰 < to\-store\-or\-to\-accumulate\-riches\-or\-valuables;
+䜱 < name\-of\-a\-pavilion\-in\-today''s\-shanxi\-province;
+䓝 < chinese\-pennisetum\)\-pennisetum\-alopecuroides\);
+䋉 < a\-numerary\-adjunct\-for\-practically\-everything;
+䊣 < light\-yellow\-dust\-like\-fungoid\-growth\-on\-wine;
+䇒 < numerary\-adjunct\-for\-periodic\-terms\-or\-events;
+㿗 < disease\-of\-the\-private\-part\-of\-the\-human\-body;
+㾫 < hemiplegia\-\-\-\-paralysis\-of\-half\-of\-one''s\-body;
+㻞 < flourishing\-and\-radiant\-of\-the\-colorful\-jades;
+㹱 < name\-of\-a\-dog\-in\-the\-period\-of\-warring\-states;
+㲥 < a\-kind\-of\-woolen\-textiles\-with\-curved\-pattern;
+㭹 < name\-of\-a\-county\-in\-today''s\-shandong\-province;
+㣯 < the\-dresses\-toss\-and\-flying\-about\-in\-the\-wind;
+㢯 < bows\-used\-by\-the\-son\-of\-heaven\-\-\-\-the\-emperor;
+㡊 < a\-kind\-of\-cap\-worn\-by\-an\-officer\-in\-old\-china;
+人民大會堂 < great\-hall\-of\-the\-people\,\-at\-tiananmen\-square;
+㙫 < a\-fountain\-or\-spring\-out\-from\-the\-underground;
+㙍 < name\-of\-a\-place\-in\-today''s\-guangdong\-province;
+探路者 < pathfinder\-\(space\-craft\-sent\-to\-mars\-by\-nasa\);
+畫蛇添足 < ruin\-the\-effect\-by\-adding\-what\-is\-superfluous;
+崔亞琳 < charles\-yah\-lin\-trie\-\(arkansas\-restauranteur\);
+北大西洋公約組織 < the\-north\-atlantic\-treaty\-organization\-\(nato\);
+專案組 < special\-\(legal\|judicial\)\-investigations\-group;
+仗義執言 < speak\-out\-on\-a\-matter\-of\-principle\-or\-justice;
+兵臨城下 < the\-attacking\-army\-has\-reached\-the\-city\-gates;
+吞吐 < to\-take\-in\-and\-send\-out\-\(in\-large\-quantities\);
+钧 < unit\-of\-measure\-equivalent\-to\-thirty\-catties;
+妲 < concubine\-of\-last\-ruler\-of\-the\-shang\-dynasty;
+瓴 < concave\-channels\-of\-tiling\-a\-long\-necked\-jar;
+媵 < a\-maid\-who\-accompanies\-bride\-to\-her\-new\-home;
+胙 < meat\-offered\-in\-sacrifice\-to\-one''s\-ancestors;
+蟊 < a\-fly\-which\-is\-used\-similarly\-to\-cantharides;
+斷橋 < the\-broken\-bridge\-\(at\-west\-lake\-in\-hangzhou\);
+失敗是成功之母 < \"failure\-is\-the\-mother\-of\-success\"\-\(proverb\);
+氣功 < qigong\,\-a\-system\-of\-deep\-breathing\-exercises;
+省級 < provincial\-level\-\(eg\,\-provincial\-government\);
+武打 < acrobatic\-fighting\-in\-chinese\-opera\-or\-dance;
+橋本龍太郎 < hashimoto\,\-ryutaro\-\(prime\-minister\-of\-japan\);
+騲 < the\-female\-of\-certain\-animals\-such\-as\-horses;
+報失 < report\-the\-loss\-to\-the\-authorities\-concerned;
+保養 < take\-good\-care\-of\-\(or\-conserve\)\-one''s\-health;
+平信 < ordinary\-mail\-\(as\-opposed\-to\-air\-mail\,\-etc\.\);
+分享 < obtain\-one''s\-share\-\(of\-wealth\,\-rights\,\-etc\.\);
+紅堡 < red\-fort\-\(historic\-building\-in\-delhi\,\-india\);
+珓 < two\-hemispherical\-objects\-used\-in\-divination;
+元宵 < sweet\-dumplings\-made\-of\-glutinous\-rice\-flour;
+背城借一 < make\-a\-last\-ditch\-stand\-before\-the\-city\-wall;
+敧 < to\-pick\-up\-thing\-with\-chopsticks\-or\-pincers\.;
+扄 < large\-ring\-on\-a\-front\-door\-used\-as\-a\-knocker;
+嫏 < the\-place\-where\-the\-supreme\-stores\-his\-books;
+臨寫 < to\-copy\-\(a\-model\-of\-calligraphy\-or\-painting\);
+月餅 < moon\-cake\-\(esp\.\-for\-the\-mid\-autumn\-festival\);
+百感交集 < all\-sorts\-of\-feelings\-well\-up\-in\-one''s\-heart;
+䱁 < a\-kind\-of\-medium\-sized\-fish\-grown\-in\-the\-sea;
+䰏 < sparse\-hair\-on\-a\-knot\-on\-the\-top\-of\-the\-head;
+䮆 < a\-horse\-with\-mixed\-color\-of\-yellow\-and\-white;
+䩛 < leather\-belt\-used\-to\-bind\-or\-restrain\-a\-cart;
+抄家 < to\-search\-a\-house\-and\-confiscate\-possessions;
+䦹 < name\-of\-a\-county\-in\-today''s\-sichuan\-province;
+䣔 < name\-of\-a\-pavilion\-in\-today''s\-henan\-province;
+䣑 < living\-space\-for\-one\-family\-in\-ancient\-times;
+䣄 < name\-of\-a\-place\-in\-today''s\-shandong\-province;
+䢹 < name\-of\-a\-pavilion\-in\-today''s\-hunan\-province;
+䢪 < a\-sledge\-for\-transportation\-over\-mud\-or\-snow;
+䟆 < to\-keep\-persons\-off\-the\-route\-of\-the\-emperor;
+會見 < to\-meet\-with\-\(someone\-who\-is\-paying\-a\-visit\);
+䈐 < an\-arched\-frame\-made\-of\-bamboo\-of\-wood\-board;
+䅿 < luxuriant\-or\-exuberant\-of\-the\-grains\-flowery;
+䃈 < mountain\-rocks\-a\-black\-stone\-resembling\-jade;
+䂬 < big\-rocks\-on\-the\-riverside\-an\-arched\-opening;
+䁝 < deluding\-and\-causing\-disorder\-lights\-shining;
+㽟 < to\-till\-or\-to\-plough\-the\-fields\-an\-enclosure;
+㮄 < publicly\-posted\-roll\-of\-successful\-examinees;
+㭸 < the\-branches\-to\-spread\-out\-in\-all\-directions;
+㩉 < to\-take\-a\-rubbing\-of\-an\-inscription\-on\-stone;
+㣁 < to\-equipt\-a\-bow\-with\-silk\-and\-muscular\-fibre;
+㝙 < the\-third\-of\-the\-twelve\-terrestrial\-branches;
+長沙灣 < cheung\-sha\-wan\-\(poultry\-market\-in\-hong\-kong\);
+奧爾布賴特 < \(madeleine\)\-albright\-\(us\-secretary\-of\-state\);
+正常化 < normalization\-\(of\-diplomatic\-relations\,\-etc\);
+兵不厭詐 < there\-can\-never\-be\-too\-much\-deception\-in\-war;
+五六十歲 < \(in\-one''s\)\-fifties\-or\-sixties\-\(years\-of\-age\);
+避重就輕 < avoid\-the\-important\-and\-dwell\-on\-the\-trivial;
+大舉 < carry\-out\-a\-large\-scale\-\(military\)\-operation;
+日漸 < \(keep\-increasing\,\-changing\,\-etc\.\)\-day\-by\-day;
+標新立異 < start\-something\-new\-in\-order\-to\-be\-different;
+議席 < seat\-in\-a\-parliament\-or\-legislative\-assembly;
+乎 < interrogative\-or\-exclamatory\-final\-particle;
+澄 < purify\-water\-by\-allowing\-sediment\-to\-settle;
+歟 < a\-final\-particle\-used\-to\-express\-admiration;
+梢 < pointed\-tip\-of\-something\-long\-like\-a\-branch;
+哒 < a\-sound\-made\-to\-get\-a\-horse\-to\-move\-forward;
+琮 < octagonal\-piece\-of\-jade\-with\-hole\-in\-middle;
+唼 < speaking\-evil\.\-gobbling\-sound\-made\-by\-ducks;
+大功告成 < successfully\-accomplished\-\(project\-or\-goal\);
+通緝 < wanted\-by\-the\-police\-\(fugitive\-or\-criminal\);
+真納 < \(mohammad\-ali\)\-jinnah\-\(founder\-of\-pakistan\);
+謝裡夫 < \(nawaz\)\-sharif\-\(prime\-minister\-of\-pakistan\);
+魯賓 < rubin\-\(eg\,\-treasury\-secretary\-robert\-rubin\);
+力寶 < lippo\-\(group\)\-\(indonesian\-business\-concern\);
+吳作棟 < goh\-chok\-tong\-\(prime\-minister\-of\-singapore\);
+無所用心 < eat\-three\-square\-meals\-a\-day\-and\-do\-no\-work;
+側鋒 < oblique\-attack\-\(brush\-movement\-in\-painting\);
+邴 < name\-of\-a\-city\-in\-the\-ancient\-state\-of\-song;
+班門弄斧 < display\-one''s\-slight\-skill\-before\-an\-expert;
+中國日報 < china\-daily\-\(an\-english\-language\-newspaper\);
+崇禎 < chongzhen\,\-last\-emperor\-of\-the\-ming\-dynasty;
+白字 < wrongly\-written\-and\-mispronounced\-character;
+不可終日 < be\-unable\-to\-carry\-on\-even\-for\-a\-single\-day;
+寄予很大期望 < to\-place\-great\-hope\-or\-expectation\-on\-\(sth\);
+工人黨 < workers''\-party\-\(singapore\-opposition\-party\);
+對策 < countermeasure\-for\-dealing\-with\-a\-situation;
+䶘 < the\-sound\-of\-chewing\-something\-dry\-and\-hard;
+䮲 < horse\-with\-mixed\-colors\-of\-yellow\-and\-white;
+䦼 < to\-dig\-a\-passage\-through\-a\-mountain\-or\-hill;
+䥑 < a\-kind\-of\-decoration\-on\-the\-head\-of\-a\-horse;
+䣯 < wine\-or\-any\-thick\-fluid\-of\-the\-best\-quality;
+䣚 < name\-of\-a\-village\-in\-today''s\-henan\-province;
+䣙 < name\-of\-a\-county\-in\-today''s\-shanxi\-province;
+䢺 < name\-of\-a\-place\-in\-today''s\-sichuan\-province;
+䡿 < frames\-on\-the\-sides\-and\-front\-of\-a\-carriage;
+䜯 < name\-of\-a\-valley\-in\-today''s\-shanxi\-province;
+䘿 < shirt\-or\-a\-jacket\-without\-any\-decorated\-hem;
+䖂 < an\-edib\-le\-water\-plant\-\-\-\-brasenia\-purpurca;
+䏮 < the\-sides\-of\-the\-trunk\-from\-armpits\-to\-ribs;
+䅍 < straight\-upward\-of\-the\-wheat\-and\-rice\-plant;
+䂸 < to\-smash\-or\-to\-knock\-to\-pieces\-of\-the\-stone;
+筆力 < vigour\-of\-strokes\-in\-calligraphy\-or\-drawing;
+罰酒 < to\-drink\-as\-the\-result\-of\-having\-lost\-a\-bet;
+㾼 < to\-suffer\-a\-stroke\-of\-paralysis\-or\-apoplexy;
+㽫 < seeds\-of\-the\-plant\-allied\-to\-the\-water\-lily;
+㸷 < a\-kind\-of\-cattle\-with\-two\-horns\-straight\-up;
+㶬 < bright\-lights\-and\-illuminations\-of\-the\-fire;
+㶆 < name\-of\-a\-stream\-in\-hebei\-province\-hengshan;
+斯佩林 < spelling\-\(eg\,\-spelling\-entertainment\-group\);
+㮫 < a\-wooden\-artical\-to\-be\-used\-to\-adjust\-a\-bow;
+㫍 < the\-scallops\-along\-the\-lower\-edge\-of\-a\-flag;
+㧏 < to\-carry\-on\-the\-shouldersof\-two\-or\-more\-men;
+星體 < celestial\-body\-\(eg\,\-planet\,\-satellite\,\-etc\);
+㛶 < do\-not\-care\-about\-appearance\-and\-deportment;
+㚔 < instrument\-of\-torture\-used\-in\-ancient\-times;
+㙇 < the\-cattle\-and\-horses\-trampled\-on\-the\-field;
+主管 < \(be\)\-person\-in\-charge\-of\-\(a\-position\,\-etc\.\);
+單槍匹馬 < single\-handed\-\(lit\:\-single\-spear\-one\-horse\);
+盧泰愚 < roh\-tae\-woo\-\(former\-south\-korean\-president\);
+步韻 < to\-write\-a\-poem\-using\-another\-poem''s\-rhymes;
+口氣 < \(friendly\-or\-unfriendly\)\-tone\-\(of\-comments\);
+正鋒 < frontal\-attack\-\(brush\-movement\-in\-painting\);
+齊白石 < name\-of\-a\-famous\-chinese\-artist\,\-qi\-bai\-shi;
+下來 < \(verb\-suffix\-indicating\-continuation\,\-etc\.\);
+幹部 < a\-cadre\-\(ie\,\-manager\,\-staff\,\-officer\,\-etc\.\);
+娅 < mutual\-term\-of\-address\-used\-by\-sons\-in\-law;
+商務部 < commerce\-department\-\(of\-the\-us\-government\);
+名副其實 < not\-just\-in\-name\-only\,\-but\-also\-in\-reality;
+不當一回事 < not\-regard\-as\-a\-matter\-\(of\-any\-importance\);
+老伴兒 < \(of\-an\-old\-married\-couple\)\-husband\-or\-wife;
+不打不相識 < from\-an\-exchange\-of\-blows\-friendship\-grows;
+巴爾舍夫斯基 < \(charlene\)\-barshefsky\,\-us\-trade\-negotiator;
+鮠 < a\-kind\-of\-shad\-with\-a\-head\-like\-a\-sturgeon;
+接納 < admit\-\(into\-membership\-of\-an\-organization\);
+喜新厭舊 < literal\:\-to\-like\-the\-new\,\-and\-hate\-the\-old;
+把風 < keep\-watch\-\(during\-a\-clandestine\-activity\);
+備耕 < make\-preparations\-for\-ploughing\-and\-sowing;
+撥冗 < find\-time\-in\-the\-midst\-of\-pressing\-affairs;
+胑 < the\-limbs\.\-wings\-of\-birds\.\-legs\-of\-animals;
+筭 < an\-ancient\-device\-for\-working\-with\-numbers;
+梆子腔 < a\-general\-term\-for\-local\-operas\-in\-shangxi;
+滝 < onomatopoeic\-for\-the\-sound\-of\-falling\-rain;
+栽贓 < to\-frame\-someone\-\(by\-planting\-sth\-on\-them\);
+換取 < give\-something\-and\-get\-something\-in\-return;
+拍案叫絕 < lit\.\:\-slap\-the\-table\-and\-shout\-with\-praise;
+偽書 < \(forged\,\-dubious\,\-misclassified\)\-old\-books;
+梅蘭芳 < name\-of\-a\-very\-famous\-beijing\-opera\-artist;
+簿冊 < books\-for\-taking\-notes\-or\-keeping\-accounts;
+䳵 < a\-kind\-of\-water\-bird\-with\-colorful\-feather;
+䳛 < a\-small\-brown\-speckled\-bird\-like\-the\-quail;
+䩑 < horizontal\-front\-bar\-on\-a\-cart\-or\-carriage;
+䦓 < to\-wait\-for\-something\-tohappen\-immediately;
+䣤 < name\-of\-village\-in\-today''s\-shanxi\-province;
+䣝 < name\-of\-a\-place\-in\-today''s\-shanxi\-province;
+䣂 < name\-of\-a\-county\-in\-today''s\-hunan\-province;
+䡩 < sound\-of\-carts\-or\-stones\-knocking\-together;
+䠀 < to\-sit\-cross\-legged\-like\-a\-buddhist\-priest;
+䜫 < name\-of\-a\-valley\-in\-today''s\-hobei\-province;
+䜚 < to\-speak\-recklessly\-or\-without\-forethought;
+䓥 < sound\-of\-the\-wriggled\-insects\-on\-the\-grass;
+䐄 < the\-unsatisfaction\-of\-hunger\-requires\-meat;
+䍴 < to\-squeeze\-and\-to\-crowd\-against\-each\-other;
+䍆 < container\-for\-grains\-used\-in\-ancient\-times;
+上車 < to\-get\-on\-or\-into\-\(a\-bus\,\-train\,\-car\-etc\.\);
+䇯 < a\-kind\-of\-bamboo\-with\-patterns\-on\-the\-head;
+行政院 < executive\-yuan\-\(government\-body\-in\-taiwan\);
+㼱 < to\-manage\-or\-regulate\-the\-leather\-material;
+㯊 < even\-measuring\-board\-for\-pecks\-and\-bushels;
+筆下 < the\-wording\-and\-purport\-of\-what\-one\-writes;
+便函 < an\-informal\-letter\-sent\-by\-an\-organization;
+㨐 < to\-slap\-lightly\-on\-the\-clothes\-or\-coverlet;
+㢥 < a\-big\-piece\-of\-log\-to\-join\-the\-thick\-ropes;
+首席 < chief\-\(representative\,\-correspondent\,\-etc\);
+贅婿 < son\-in\-law\-living\-at\-wife''s\-parent''s\-house;
+杰佛茲 < \(james\)\-jeffords\-\(us\-senator\-from\-vermont\);
+處於 < be\-\(in\-some\-state\,\-position\,\-or\-condition\);
+風土人情 < local\-conditions\-\(human\-and\-environmental\);
+阿拉塔斯 < \(ali\)\-alatas\-\(indonesian\-foreign\-minister\);
+羅布泊 < lop\-nor\-\(nuclear\-testing\-site\-in\-xinjiang\);
+民進黨 < dpp\-\(democratic\-progressive\-party\,\-taiwan\);
+敗筆 < a\-faulty\-stroke\-in\-calligraphy\-or\-painting;
+珈 < an\-ornament\-attached\-to\-a\-woman''s\-hairpin;
+蜃 < marine\-monster\-which\-can\-change\-its\-shape;
+斛 < dry\-measure\-equal\-to\-some\-five\-or\-ten\-dou;
+鄯 < district\-in\-gansu\-during\-the\-tang\-dynasty;
+庹 < the\-length\-of\-one''s\-two\-outstretched\-arms;
+揲 < to\-sort\-out\-the\-stalks\-used\-in\-divination;
+出路 < a\-way\-out\-\(of\-a\-difficult\-situation\,\-etc\);
+約定資訊速率 < committed\-inforrmation\-rate\-\(frame\-relay\);
+白花蛇 < long\-nosed\-pit\-viper\-\(agkistrodon\-acutus\);
+中共中央 < chinese\-communist\-party\-central\-committee;
+博聞強記 < have\-wide\-learning\-and\-a\-retentive\-memory;
+度日 < scratch\-out\-a\-difficult\,\-meager\-existence;
+眾議員 < member\-of\-the\-us\-house\-of\-representatives;
+韍 < a\-leather\-knee\-pad\-worn\-during\-sacrifices;
+報案 < report\-a\-case\-to\-the\-security\-authorities;
+鏞 < a\-large\-bell\-used\-as\-a\-musical\-instrument;
+軎 < a\-brass\-parts\-for\-a\-cart\-in\-ancient\-china;
+兵源 < manpower\-resources\-\(for\-military\-service\);
+虋 < asparagus\-a\-variety\-of\-red\-stalked\-millet;
+百年大計 < a\-project\-of\-vital\-and\-lasting\-importance;
+邁科裡 < \(mike\)\-mccurry\-\(white\-house\-spokesperson\);
+拔苗助長 < spoil\-things\-through\-excessive\-enthusiasm;
+報告會 < public\-lecture\-\(with\-guest\-speakers\,\-etc\);
+利伯曼 < \(connecticut\-senator\-joseph\-i\.\)\-lieberman;
+肯普索恩 < \(dirk\)\-kempthorne\-\(us\-senator\-from\-idaho\);
+廞 < to\-prepare\-horses\-and\-chariots\-for\-battle;
+婗 < a\-new\-born\-child\-the\-whimper\-of\-an\-infant;
+妺 < wife\-of\-the\-last\-ruler\-of\-the\-xia\-dynasty;
+噠 < sound\-made\-to\-get\-a\-horse\-to\-move\-forward;
+外孫女兒 < granddaughter\-\(daughter\-of\-one''s\-daugher\);
+有電 < \(of\-a\-dwelling\)\-supplied\-with\-electricity;
+百折不撓 < keep\-on\-fighting\-in\-spite\-of\-all\-setbacks;
+神女峰 < name\-of\-a\-peak\-by\-changjiang\-three\-gorges;
+丂 < obstruction\-of\-breath\-as\-it\-seeks\-release;
+賁臨 < \(of\-distinguished\-guests\)\-honour\-my\-house;
+䰿 < a\-kind\-of\-small\-fish\-grown\-in\-fresh\-water;
+安身立命 < settle\-down\-and\-get\-on\-with\-one''s\-pursuit;
+䢿 < name\-of\-a\-place\-in\-today''s\-hobei\-province;
+䡈 < the\-cross\-bar\-at\-the\-sides\-of\-a\-carritage;
+䔉 < scattered\-or\-dispersed\-of\-grass\-and\-trees;
+䑒 < a\-kind\-of\-farm\-tool\-used\-in\-ancient\-times;
+䐣 < soup\-made\-of\-cutted\-meat\-mixed\-with\-blood;
+䌮 < silk\-fabrics\-with\-the\-color\-of\-new\-leaves;
+䄨 < grains\-producing\-neither\-flower\-nor\-fruit;
+䄝 < show\-no\-respect\-to\-the\-service\-of\-worship;
+㼭 < to\-steady\-by\-putting\-something\-underneath;
+㻲 < a\-rite\-or\-service\-for\-beginning\-of\-autumn;
+逆向擁塞通知 < backward\-explicit\-congestion\-notification;
+經營管理和維護 < operations\-administration\-and\-maintenance;
+㪪 < to\-use\-a\-wooden\-pole\-to\-support\-something;
+㢦 < wooden\-post\-or\-pile\-for\-tethering\-animals;
+㜢 < a\-bad\-term\-by\-which\-one\-addresses\-a\-woman;
+㚒 < concealed\-the\-stolen\-goods\-in\-one''s\-dress;
+白曉燕 < pai\-hsiao\-yen\-\(daughter\-of\-pai\-ping\-ping\);
+不經一事不長一智 < you\-can''t\-gain\-knowledge\-without\-practice;
+松下 < matsushita\-\(japanese\-electronics\-company\);
+不妙 < \(of\-a\-turn\-of\-events\)\-not\-too\-encouraging;
+踣 < to\-stumble\-and\-fall\-prone\-stiff\-in\-death;
+黼 < embroidered\-official\-or\-sacrificial\-robe;
+峄 < a\-range\-of\-peaks\-in\-shandong\-and\-jiangsu;
+勉強 < manage\-\(to\-do\-something\)\-with\-difficulty;
+別無 < have\-no\-other\-\(choice\,\-alternative\,\-etc\);
+不可一世 < consider\-oneself\-unexcelled\-in\-the\-world;
+金日成 < kim\-il\-sung\-\(former\-north\-korean\-leader\);
+公約 < convention\-\(ie\,\-international\-agreement\);
+闗 < a\-frontier\-pass\-or\-gate\-to\-shut\-or\-close;
+邾 < a\-feudal\-state\-which\-existed\-b\.c\.700\-469;
+太極劍 < a\-kind\-of\-traditional\-chinese\-sword\-play;
+年度 < year\-\(eg\,\-school\-year\,\-fiscal\-year\,\-etc\);
+絕對數字 < absolute\-\(as\-opposed\-to\-relative\)\-number;
+薩 < transliteration\-of\-''sat''\-in\-''bodhisattva;
+筆順 < order\-of\-strokes\-observed\-in\-calligraphy;
+膰 < to\-cook\-meat\-for\-a\-sacrifice\-or\-offering;
+扎針 < to\-give\-or\-have\-an\-acupuncture\-treatment;
+司法部 < justice\-deparment\-\(of\-the\-us\-government\);
+瑌 < a\-white\-opaque\-quartz\-used\-for\-ornaments;
+潟 < land\-impregnated\-with\-salt\-from\-the\-tide;
+製劑 < \(chemical\-or\-pharmaceutical\)\-preparation;
+體會 < know\-\(through\-learning\-or\-by\-experience\);
+偽托 < faking\-a\-modern\-object\-as\-an\-ancient\-one;
+庫納南 < \(andrew\)\-cunanan\-\(alleged\-serial\-killer\);
+海關 < customs\-\(ie\,\-border\-crossing\-inspection\);
+抱頭鼠竄 < cover\-the\-head\-and\-sneak\-away\-like\-a\-rat;
+黃建南 < john\-huang\-\(democratic\-party\-fundraiser\);
+䵞 < ancient\-punishment\-of\-tattooing\-the\-face;
+䱹 < a\-condiment\-made\-from\-minced\-fish\-salted;
+䯰 < use\-a\-hair\-pin\-to\-set\-and\-dress\-the\-hair;
+䬯 < to\-have\-congee\-with\-friends\-in\-old\-times;
+䡋 < decoration\-on\-the\-nave\-or\-hub\-of\-a\-wheel;
+䞃 < to\-relieve\-or\-give\-aid\-to\-the\-distressed;
+䘯 < the\-lapel\-or\-collar\-of\-a\-garment\-or\-robe;
+䘤 < a\-sword\-covering\-to\-protect\-the\-scabbard;
+䑌 < lwhat\-is\-left\-over\-of\-the\-food\-\-overripe;
+䋧 < ornamennts\-for\-the\-frontal\-part\-of\-shoes;
+䋣 < decorations\-put\-on\-the\-mane\-or\-horsehair;
+䈕 < the\-metal\-tongue\-in\-the\-reed\-instruments;
+䃴 < a\-whetstone\-used\-to\-grind\-precious\-stone;
+䁼 < to\-look\-but\-see\-nothing\-\-\-\-absent\-minded;
+㿆 < damage\-by\-the\-pests\-to\-the\-rice\-seedling;
+㻶 < a\-jade\-tube\-with\-white\-and\-nature\-colors;
+㻰 < decorated\-jade\-or\-ornament\-on\-a\-scabbard;
+㻡 < a\-jade\-ring\-with\-a\-small\-segment\-cut\-off;
+㮆 < eaves\-sprouting\-from\-the\-stump\-of\-a\-tree;
+㫔 < one\-of\-the\-eight\-diagrams\-for\-divination;
+㪻 < a\-kind\-of\-utensil\-used\-to\-ladle\-out\-wine;
+㩊 < to\-pull\-up\-the\-sleeves\-and\-show\-the\-arms;
+㧭 < to\-get\-something\-with\-both\-raising\-hands;
+㧚 < the\-gesture\-of\-using\-an\-indented\-contain;
+㧆 < to\-cover\-something\-with\-a\-piece\-of\-cloth;
+百廢俱興 < all\-neglected\-tasks\-are\-being\-undertaken;
+㡋 < a\-kind\-of\-headdress\-for\-man\-in\-old\-china;
+㠸 < the\-lapel\-or\-collor\-of\-a\-garment\-or\-robe;
+㜚 < a\-local\-government\-post\-in\-ancient\-times;
+㙟 < low\-lying\-on\-the\-side\-of\-a\-river\-or\-lake;
+避實就虛 < stay\-clear\-of\-the\-enemy''s\-main\-force\-and;
+不求甚解 < not\-seek\-to\-understand\-things\-thoroughly;
+碑記 < a\-record\-of\-events\-inscribed\-on\-a\-tablet;
+中央全會 < plenary\-session\-of\-the\-central\-committee;
+包辦 < take\-care\-of\-everything\-concerning\-a\-job;
+古杰拉爾 < \(i\.\-k\.\)\-gujral\-\(prime\-minister\-of\-india\);
+黃岩島 < huangyan\-island\-\(in\-the\-south\-china\-sea\);
+機關報 < official\-\(government\-operated\)\-newspaper;
+前向擁塞通知 < forward\-explicit\-congestion\-notification;
+出面 < act\-in\-a\-\(official\-or\-personal\)\-capacity;
+喏 < respectful\-reply\-of\-assent\-to\-superiors;
+笏 < tablet\-held\-by\-someone\-having\-authority;
+趼 < callous\-skin\-on\-hands\-or\-feet\.\-blisters;
+相隔 < be\-separated\-by\-\(distance\-or\-time\,\-etc\);
+美國廣播公司 < abc\-\(american\-broadcasting\-corporation\);
+時報 < \"times\"\-\(newspaper\,\-eg\,\-new\-york\-times\);
+通航 < connected\-by\-air\|sea\-traffic\-or\-service;
+核武器研製計劃 < nuclear\-weapons\-\(manufacturing\)\-program;
+冷淡關係 < cold\-relations\-\(e\.g\.\-between\-countries\);
+不了了之 < settle\-a\-matter\-by\-leaving\-it\-unsettled;
+遷居 < to\-move\-\(from\-one\-residence\-to\-another\);
+饝 < to\-feed\-an\-infant\-by\-hand\-steamed\-bread;
+不即不離 < be\-neither\-too\-familiar\-nor\-too\-distant;
+總政治部 < \(military\)\-general\-political\-department;
+哈裡森史密特 < harrison\-schmitt\-\(apollo\-1\-7\-astronaut\);
+入學率 < percentage\-of\-children\-who\-enter\-school;
+裍 < a\-border\-or\-band\-on\-the\-edge\-of\-a\-dress;
+年代 < a\-decade\-of\-a\-century\-\(eg\,\-the\-sixties\);
+畢其功于一役 < accomplish\-the\-whole\-task\-at\-one\-stroke;
+半路出家 < switch\-to\-a\-job\-one\-was\-not\-trained\-for;
+籪 < a\-weir\-of\-bamboo\-to\-catch\-fish\-or\-crabs;
+瘲 < spasms\-or\-convulsions\-in\-young\-children;
+瑲 < tinkling\-sound\-tinkling\-of\-pendant\-gems;
+病毒學家 < virologist\-\(person\-who\-studies\-viruses\);
+建立正式外交關係 < formally\-establish\-diplomatic\-relations;
+茅臺酒 < maotai\-or\-maitai\-\(chinese\-strong\-drink\);
+結社自由 < \(constitutional\)\-freedom\-of\-association;
+弝 < the\-part\-of\-a\-bow\-grasped\-when\-shooting;
+喬石 < qiao\-shi\-\(chinese\-leadership\-contender\);
+豎鉤 < \(straight\-down\-hooked\-character\-stroke\);
+䥜 < protective\-metal\-on\-the\-axis\-of\-a\-wheel;
+成本 < \(manufacturing\,\-production\,\-etc\.\)\-costs;
+䙖 < a\-cloth\-to\-carry\-an\-iinfant\-on\-the\-back;
+王羲之 < name\-of\-a\-person\,\-a\-famous\-calligrapher;
+䏫 < in\-between\-of\-the\-abdomen\-and\-the\-spine;
+䍉 < traces\-or\-marks\-of\-incomplete\-or\-damage;
+䌸 < fine\-silk\-fabric\-of\-bright\-white\-colour;
+邊角科 < leftover\-bits\-and\-pieces\-\(of\-industrial;
+䋿 < a\-decorative\-knot\-made\-of\-colorful\-silk;
+䈜 < a\-thread\-used\-by\-carpenters\-for\-marking;
+䈆 < a\-shallow\-and\-long\-shaped\-bamboo\-basket;
+代理 < acting\-\(temporarily\-filling\-a\-position\);
+㿹 < jutting\-on\-the\-epidermis\-or\-the\-cuticle;
+㼫 < earthenware\-or\-pottery\-with\-big\-opening;
+㵻 < to\-perspire\-from\-embarrassment\-or\-shame;
+蔓延全國 < to\-spread\-throughout\-the\-entire\-country;
+㭩 < a\-kind\-of\-tree\-can\-be\-used\-as\-dye\-stuff;
+㣙 < to\-walk\-in\-an\-easy\-and\-leisurely\-manner;
+㢪 < to\-draw\-a\-full\-bow\-to\-aim\-at\-the\-target;
+客廳 < drawing\-room\-\(room\-for\-arriving\-guests\);
+㘊 < the\-abrupt\-and\-hasty\-sound\-of\-the\-crowd;
+㖮 < an\-interjection\-used\-in\-poems\-and\-songs;
+㔮 < a\-kind\-of\-animal\-which\-looks\-like\-a\-rat;
+蓮霧 < wax\-apple\-\(a\-reddish\-pear\-shaped\-fruit\);
+題簽 < to\-write\-the\-title\-of\-a\-book\-on\-a\-label;
+百思不解 < remain\-puzzled\-after\-pondering\-over\-sth;
+半勞動力 < one\-able\-to\-do\-light\-manual\-labour\-only;
+總後勤部 < \(military\)\-general\-logistics\-department;
+一國兩制 < one\-country\,\-two\-systems\-\(china\-taiwan\);
+擺事實講道理 < present\-the\-facts\-and\-reason\-things\-out;
+老二 < the\-second\-child\-or\-brother\-\(or\-sister\);
+中南 < \(abbreviation\-for\)\-china\-\-\-south\-africa;
+阿昌族 < the\-achang\-nationality\-living\-in\-yunnan;
+版次 < the\-order\-in\-which\-editions\-are\-printed;
+啧 < interjection\-of\-approval\-or\-admiration;
+捺 < to\-press\-down\-heavily\-with\-the\-fingers;
+傣 < the\-dai\-minority\-living\-in\-south\-china;
+鸩 < a\-bird\-resembling\-the\-secretary\-falcon;
+淝 < name\-of\-an\-affluent\-of\-the\-poyang\-lake;
+郅 < to\-go\-up\-to\.\-flourishing\-a\-superlative;
+轫 < a\-block\-that\-keeps\-a\-wheel\-from\-moving;
+嶷 < a\-range\-of\-mountains\-in\-hunan\-province;
+鬲 < type\-of\-caldron\-with\-three\-hollow\-legs;
+刖 < cutting\-off\-feet\-as\-form\-of\-punishment;
+穸 < the\-gloom\-of\-the\-grave\-a\-tomb\-or\-grave;
+蘅 < a\-fragrant\-plant\-the\-root\-is\-medicinal;
+白頭諧老 < live\-to\-ripe\-old\-age\-in\-conjugal\-bliss;
+受傷 < suffer\-injuries\-\(in\-an\-accident\,\-etc\.\);
+訂立 < agree\-to\-\(treaty\,\-contract\,\-agreement\);
+夏曆 < the\-traditional\-chinese\-lunar\-calendar;
+成千上萬 < by\-the\-thousands\-and\-tens\-of\-thousands;
+師範 < normal\-\(eg\,\-beijing\-normal\-university\);
+佩洛西 < \(nancy\)\-pelosi\-\(member\-of\-us\-congress\);
+驆 < used\-in\-transliterating\-buddhist\-books;
+駏 < offspring\-of\-a\-stallion\-and\-a\-she\-mule;
+廣場 < a\-public\-square\-\(eg\,\-tiananmen\-square\);
+鉌 < the\-bells\-on\-the\-cart\-in\-ancient\-china;
+補票 < buy\-one''s\-ticket\-after\-the\-normal\-time;
+發燒 < have\-a\-high\-temperature\-\(from\-illness\);
+詧 < to\-examine\-into\-judicially\-to\-find\-out;
+綳 < a\-cloth\-to\-carry\-an\-infant\-on\-the\-back;
+綖 < the\-hanging\-flap\-in\-the\-front\-of\-a\-hat;
+祫 < triennial\-sacrifice\-to\-one''s\-ancestors;
+盆地 < basin\-\(low\-lying\-geographical\-feature\);
+磻 < a\-tributary\-of\-the\-wei\-river\-in\-shanxi;
+手跡 < sb\.''s\-original\-handwriting\-or\-painting;
+璧還 < return\-\(a\-borrowed\-object\)\-with\-thanks;
+不宣而戰 < open\-hostilities\-without\-declaring\-war;
+國際電信聯盟 < international\-telecommunications\-union;
+不遠千里 < make\-light\-of\-travelling\-a\-thousand\-li;
+斴 < the\-sound\-of\-water\-flowing\-among\-rocks;
+安居樂業 < live\-and\-work\-in\-peace\-and\-contentment;
+表妹 < female\-cousin\-with\-a\-different\-surname;
+崑 < kunlun\-mountains\-in\-jiang\-su\-province\.;
+拆散 < to\-break\-up\-\(a\-marriage\,\-family\,\-etc\.\);
+吐魯番 < the\-turfan\-basin\,\-in\-xinjiang\-province;
+備品 < machine\-parts\-or\-tools\-kept\-in\-reserve;
+䰘 < to\-kill\-by\-hanging\-or\-to\-strangulation;
+䮗 < white\-from\-forehead\-to\-lips\-of\-a\-horse;
+䪲 < ancient\-punishment\-of\-shaving\-the\-head;
+䩸 < fine\-woolen\-blanket\-on\-top\-of\-a\-saddle;
+䩫 < a\-unit\-to\-count\-shoes\-in\-ancient\-times;
+䦅 < a\-kind\-of\-weapon\-used\-in\-ancient\-times;
+䥐 < cooking\-utensils\-used\-in\-ancient\-times;
+䢇 < a\-son\-who\-is\-not\-so\-good\-as\-his\-father;
+䛗 < to\-pry\-into\-or\-expose\-another''s\-secret;
+䚅 < to\-look\-after\-home\-or\-domestic\-affairs;
+䘨 < short\-leggings\-drawn\-over\-the\-trousers;
+䖿 < a\-kind\-of\-clam\-with\-thick\-white\-shells;
+䕰 < a\-second\-name\-for\-rhizome\-of\-wind\-weed;
+䓭 < weed\-or\-grass\-with\-narrow\-thick\-glades;
+半脫產 < partly\-released\-from\-productive\-labour;
+䍻 < young\-goat\-of\-sheep\-under\-one\-year\-old;
+䍦 < a\-kind\-of\-turban\-used\-in\-ancient\-times;
+䌹 < a\-garment\-of\-one\-colour\-with\-no\-lining;
+不可同日而語 < cannot\-be\-mentioned\-in\-the\-same\-breath;
+䄪 < hanging\-down\-of\-the\-ears\-of\-the\-grains;
+䄍 < year\-end\-sacrifice\-of\-the\-zhou\-dynasty;
+㽠 < connection\-of\-the\-ditches\-or\-waterways;
+㼮 < to\-rub\-out\-the\-filth\-with\-broken\-tiles;
+㫩 < the\-first\-of\-the\-four\-season\-\-\-\-spring;
+㤝 < palpitation\-or\-fluttering\-of\-the\-heart;
+㟌 < a\-mountain\-in\-today''s\-sichuan\-province;
+㔯 < a\-large\-basket\-for\-holding\-cooked\-rice;
+首任 < first\-person\-to\-be\-appointed\-to\-a\-post;
+總書記 < general\-secretary\-\(of\-communist\-party\);
+部長 < head\-of\-a\-\(government\,\-etc\)\-department;
+比量 < take\-rough\-measurements\-\(with\-the\-hand;
+遍體鱗傷 < covered\-all\-over\-with\-cuts\-and\-bruises;
+笙 < small\-gourd\-shaped\-musical\-instrument;
+滕 < an\-ancient\-state\-in\-shandong\-province;
+镛 < large\-bell\-used\-as\-musical\-instrument;
+讵 < an\-interjection\-used\-express\-surprise;
+泔 < water\-from\-washing\-rice\-to\-boil\-thick;
+瘐 < to\-die\-in\-prison\-from\-cold\-and\-hunger;
+棼 < beams\-in\-the\-roof\-of\-a\-house\-confused;
+教授畢竟是教授 < professors\-are\-\(after\-all\)\-professors;
+百足之蟲死而不僵 < a\-centipede\-dies\-but\-never\-falls\-down;
+博愛 < universal\-fraternity\-\(or\-brotherhood\);
+敗火 < relieve\-inflammation\-or\-internal\-heat;
+經營 < engage\-in\-\(a\-business\-activity\,\-etc\.\);
+集成 < integrated\-\(as\-in\-integrated\-circuit\);
+麅 < a\-small\-spotted\-deer\-found\-in\-n\.china;
+內懮外患 < domestic\-strife\-and\-foreign\-agression;
+安全與交換委員會 < securities\-and\-exchange\-communication;
+政委 < political\-commissar\-\(within\-the\-army\);
+沈國放 < chinese\-foreign\-ministry\-spokesperson;
+編導 < write\-and\-direct\-\(a\-play\,\-film\,\-etc\.\);
+行駛 < \(vehicles\,\-etc\.\)\-travel\-along\-a\-route;
+兵種 < \(military\)\-branch\-of\-the\-armed\-forces;
+阼 < the\-steps\-leading\-to\-the\-eastern\-door;
+逼宮 < force\-the\-king\-or\-emperor\-to\-abdicate;
+輗 < a\-cross\-bar\-at\-end\-of\-a\-carriage\-pole;
+航行 < sail\-or\-fly\-\(in\-air\,\-water\,\-or\-space\);
+詎 < interjection\-used\-to\-express\-surprise;
+缌 < coarse\-cotton\-cloth\-used\-for\-mourning;
+硜 < the\-sound\-of\-stones\-knocking\-together;
+相信 < be\-convinced\-\(that\-something\-is\-true\);
+犉 < an\-ox\-with\-yellow\-hair\-and\-black\-lips;
+拔秧 < pull\-up\-seedlings\-\(for\-transplanting\);
+煝 < twisted\-paper\-for\-lighting\-cigarettes;
+手裡 < \(a\-situation\-is\)\-in\-\(someone''s\)\-hands;
+捕撈 < fish\-for\-\(aquatic\-animals\-and\-plants\);
+穆桂英 < mu\-gui\-ying\-\(name\-of\-a\-woman\-warrior\);
+簽名 < to\-sign\-\(one''s\-name\-with\-a\-pen\,\-etc\.\);
+濟南 < ji''nan\-\(capital\-of\-shandong\-province\);
+帬 < the\-skirt\-of\-a\-lady''s\-dress\-petticoat;
+嵠 < a\-valley\-with\-a\-stream\-in\-it\.\-a\-gorge;
+虛擬通道標誌符 < virtual\-channel\-connection\-identifier;
+屏條 < set\-of\-\(usually\-four\)\-hanging\-scrolls;
+孫女兒 < granddaughter\-\(daughter\-of\-one''s\-son\);
+究竟 < after\-all\-\(when\-all\-is\-said\-and\-done\);
+鎮江 < zhenjiang\-\(city\)\,\-in\-jiangsu\-province;
+䱗 < a\-long\-narrow\-fish\-trichiurus\-armatus;
+䱔 < a\-long\-narrow\-and\-silver\-colored\-fish;
+䪓 < a\-metal\-ornament\-on\-some\-kind\-of\-belt;
+䨙 < to\-rain\-cats\-and\-dogs\-for\-a\-long\-time;
+䦊 < an\-appliance\-for\-walking\-on\-the\-sands;
+䥂 < the\-sharp\-edge\-of\-a\-shovel\-or\-a\-spade;
+䡕 < the\-rear\-platform\-of\-a\-light\-carriage;
+䜔 < to\-speak\-on\-the\-ideas\-of\-someone\-else;
+治病救人 < cure\-the\-sickness\-to\-save\-the\-patient;
+䖠 < a\-kind\-of\-lizard\-found\-in\-damp\-places;
+䖜 < the\-fighting\-sound\-made\-by\-two\-tigers;
+有志者事竟成 < where\-there\-is\-a\-will\,\-there\-is\-a\-way;
+䎒 < flying\-quickly\-and\-to\-attack\-suddenly;
+䋊 < decorations\-of\-the\-emperor''s\-carriage;
+䀛 < to\-look\-far\-with\-the\-eyes\-half\-closed;
+㼨 < a\-water\-jar\-with\-ears\-for\-carrying\-it;
+㻎 < a\-large\-horizontal\-musical\-instrument;
+㺪 < an\-uncarved\-of\-unpolished\-jade\-or\-gem;
+㵿 < endlessly\-long\-or\-vast\-water\-currents;
+㴩 < name\-of\-a\-stream\-in\-shandong\-province;
+㯘 < a\-small\-wooden\-stand\-having\-four\-legs;
+㤍 < never\-reveal\-one''s\-feeling\-or\-emotion;
+㣠 < a\-rope\-decorated\-with\-bronze\-ornament;
+㡑 < ancient\-mourning\-turban\-worn\-by\-women;
+㠑 < high\-mountain\-steep\-rugged\-and\-uneven;
+㠄 < name\-of\-a\-mountain\-in\-yunnan\-province;
+㠁 < irregular\-outline\-of\-a\-range\-of\-hills;
+㟚 < name\-of\-a\-mountain\-in\-shanxi\-province;
+㚶 < wife\-of\-one''s\-husband''s\-elder\-brother;
+㘈 < able\-to\-take\-a\-correct\-view\-of\-things;
+㗰 < the\-character\-used\-in\-transliteration;
+㒿 < a\-kind\-of\-turban\-used\-in\-ancient\-time;
+主科 < required\-courses\-in\-the\-major\-subject;
+尚慕杰 < james\-sasser\-\(us\-ambassador\-to\-china\);
+哀鴻遍野 < a\-land\-swarming\-with\-disaster\-victims;
+病從口入 < illness\-finds\-its\-way\-in\-by\-the\-mouth;
+班底 < ordinary\-members\-of\-theatrical\-troupe;
+金缽 < \(gold\)\-alms\-bowl\-\(of\-a\-buddhist\-monk\);
+塞爾南 < \(eugene\)\-cernan\-\(apollo\-17\-astronaut\);
+聯名 < jointly\-\(signed\,\-declared\,\-sponsored\);
+總參謀部 < \(military\)\-general\-staff\-headquarters;
+下榻 < stay\-at\-\(a\-hotel\,\-etc\.\-during\-a\-trip\);
+年畫兒 < new\-year\-\(or\-spring\-festival\)\-picture;
+鐵飯碗 < \"iron\-rice\-bowl\"\-\-\-\-secure\-employment;
+聯邦調查局 < fbi\-\(federal\-bureau\-of\-investigation\);
+胡志明 < ho\-chi\-minh\-\(vietnamese\-leader\,\-city\);
+記述 < make\-a\-descriptive\-record\-\(of\-events\);
+撥絃樂器 < plucked\-string\-or\-stringed\-instrument;
+弁 < conical\-cap\-worn\-during\-zhou\-dynasty;
+酉 < tenth\-of\-the\-twelve\-earthly\-branches;
+旌 < banner\-or\-flag\-adorned\-with\-feathers;
+衮 < ceremonial\-dress\-worn\-by\-the\-emperor;
+溧 < river\-in\-anhui\-and\-jiangsu\-provinces;
+糍 < food\-made\-of\-crushed\-and\-cooked\-rice;
+殛 < to\-put\-to\-death\-to\-imprison\-for\-life;
+狍 < species\-of\-deer\-found\-in\-north\-china;
+绂 < ribbon\-or\-cord\-used\-attach\-ornaments;
+磉 < the\-stone\-base\-or\-plinth\-of\-a\-pillar;
+蕹 < ipomoea\-aquatica\-used\-as\-a\-vegetable;
+暗傷 < internal\-\(invisible\)\-injury\-\(damage\);
+檔案轉送存取及管理 < file\-transfer\,\-access\-and\-management;
+太湖 < tai\-hu\-lake\,\-a\-big\-lake\-by\-wuxi\-city;
+橫鉤 < \(horizontal\-hooked\-character\-stroke\);
+北宋 < the\-northern\-song\-dynasty\-\(960\-1127\);
+齈 < cold\-in\-the\-head\-catarrh\-of\-the\-nose;
+鹻 < impure\-carbonate\-of\-sodium\-of\-natron;
+鄉下 < country\-\(as\-opposed\-to\-town\-or\-city\);
+鶢 < a\-bird\-which\-frequents\-the\-sea\-shore;
+別具一格 < having\-a\-unique\-or\-distinctive\-style;
+簽訂 < to\-agree\-to\-and\-sign\-\(a\-treaty\,\-etc\);
+郪 < name\-of\-a\-stream\-in\-sichuan\-province;
+徐悲鴻 < name\-of\-a\-famous\-painter\,\-xu\-beihong;
+轞 < a\-vehicle\-for\-transporting\-prisoners;
+輹 < two\-pieces\-of\-wood\-underneath\-a\-cart;
+讀賣新聞 < yomiuri\-shimbun\-\(japanese\-newspaper\);
+增值 < appreciation\-\(of\-a\-car\,\-house\,\-etc\.\);
+一九四九年 < the\-year\-1949\-\(communist\-revolution\);
+芿 < grass\-which\-has\-been\-cut\-and\-regrown;
+胬 < a\-disease''s\-name\-in\-chinese\-medicine;
+禊 < semi\-annual\-ceremony\-of\-purification;
+兵家 < military\-strategist\-in\-ancient\-china;
+英尺 < \(english\)\-foot\-\(unit\-of\-measurement\);
+國際標準組織 < international\-standards\-organization;
+才疏學淺 < have\-little\-talent\-and\-less\-learning;
+淪陷 < \(territory\)\-fall\-to\-enemy\-occupation;
+戥 < a\-small\-steelyard\-for\-weighing\-money;
+花木蘭 < hua\-mu\-lan\-\(name\-of\-a\-woman\-warrior\);
+打不過 < not\-to\-be\-able\-to\-beat\-or\-defeat\-sb\.;
+世界性古老問題 < a\-problem\-as\-old\-as\-the\-world\-itself;
+避坑落井 < dodge\-a\-pit\-only\-to\-fall\-into\-a\-well;
+寍 < used\-as\-a\-term\-of\-comparison\:\-rather;
+人選 < person\(s\)\-selected\-\(for\-a\-job\,\-etc\.\);
+發了言 < \(\"past\-tense\"\-of\-\:發言\)\-spoke\-publicly;
+咗 < verbal\-particle\-of\-perfective\-aspect;
+變溫動物 < poikilothermal\-\(cold\-blooded\)\-animal;
+會長 < president\-of\-a\-club\,\-committee\,\-etc\.;
+丱 < child''s\-hairstyle\-bound\-in\-two\-tufts;
+不自量 < not\-take\-a\-proper\-measure\-of\-oneself;
+䮤 < one\-of\-the\-36\-gardens\-in\-han\-dynasty;
+䬭 < name\-of\-a\-legendary\-ferocious\-animal;
+䪔 < cross\-bar\-of\-wood\-under\-the\-carriage;
+䧤 < name\-of\-a\-river\-in\-shandong\-province;
+䤌 < a\-kind\-of\-wine\-be\-brewed\-from\-grains;
+䠷 < the\-appearance\-of\-height\-in\-a\-person;
+䠅 < hands\-and\-feet\-chapped\-from\-the\-cold;
+䝤 < a\-primitive\-tribe\-in\-southwest\-china;
+䝟 < a\-fierce\-man\-eating\-animal\-in\-legend;
+䝝 < an\-exclamation\-indicating\-admiration;
+䛓 < an\-official\-position\-in\-former\-times;
+䚘 < the\-long\-and\-upright\-horns\-of\-cattle;
+䖒 < earthenware\-with\-the\-shape\-of\-a\-bean;
+䕎 < name\-of\-a\-variety\-of\-grass\-perennial;
+䓑 < name\-of\-a\-variety\-of\-grass\-duckweeds;
+䑗 < to\-pound\-in\-order\-to\-remove\-the\-husk;
+䐱 < to\-pick\-the\-meat\-in\-between\-of\-bones;
+䏁 < unable\-to\-hear\-distinctly\-or\-clearly;
+寫成 < to\-compile\-\(fashion\-through\-writing\);
+䊠 < to\-give\-a\-supply\-f\-grain\-for\-rations;
+䉟 < a\-bamboo\-basket\-used\-to\-catch\-fishes;
+䈰 < a\-brush\-for\-washing\-kitchen\-utensils;
+䇼 < a\-bamboo\-vessel\-used\-to\-catch\-fishes;
+吞金 < to\-commit\-suicide\-by\-swallowing\-gold;
+䄫 < a\-kind\-of\-sorghum\-with\-white\-sprouts;
+䄈 < sacrifice\-to\-happiness\-and\-good\-luck;
+䃤 < black\-colored\-grindstone\-or\-whestone;
+䃎 < name\-of\-a\-place\-\-small\-piece\-of\-coal;
+䂹 < sound\-of\-the\-falling\-pieces\-of\-rocks;
+䁶 < to\-look\-at\-something\-without\-winking;
+䁵 < newborn\-baby\-with\-the\-eyelids\-closed;
+板眼 < measure\-in\-traditional\-chinese\-music;
+㽅 < vessel\-for\-ceremony\-in\-ancient\-times;
+㸹 < cattle\-with\-white\-stripe\-on\-the\-back;
+㸗 < not\-a\-real\-father\-or\-a\-nature\-father;
+㳘 < a\-fountain\-or\-spring\-flows\-downwards;
+㮯 < whole\-piece\-of\-or\-unbroken\-firewoods;
+㮜 < a\-blocks\-engraved\-for\-holding\-things;
+㟼 < name\-of\-a\-place\-in\-shandong\-province;
+首府 < capital\-city\-of\-an\-autonomous\-region;
+㞔 < the\-upright\-bar\-for\-fastening\-a\-door;
+㝞 < pretend\-to\-be\-delicate\-and\-beautiful;
+㜹 < name\-of\-a\-folk\-song\-in\-ancient\-times;
+㚁 < the\-long\-tail\-feathers\-which\-curl\-up;
+班次 < order\-of\-classes\-or\-grades\-at\-school;
+抄後路 < to\-outflank\-and\-attack\-from\-the\-rear;
+編年體 < annalistic\-style\-\(in\-historiography\);
+家鄉雞 < ''home\-town\-chicken''\-\(a\-type\-of\-dish\);
+章孝嚴 < john\-chang\-\(taiwan\-foreign\-minister\);
+貴州 < name\-of\-a\-province\-in\-china\,\-guizhou;
+蓋茨 < \(bill\)\-gates\-\(chairman\-of\-microsoft\);
+吸引 < attract\-\(interest\,\-investment\,\-etc\.\);
+來不及 < there''s\-not\-enough\-time\-\(to\-do\-sth\.\);
+暗娼 < unlicensed\-\(unregistered\)\-prostitute;
+非對稱式數據用戶線 < asymmetrical\-digital\-subscriber\-line;
+霸王 < xiang4yu3\-\(232\-202\-bc\)\-the\-conqueror;
+壽禮 < birthday\-present\-\(for\-an\-old\-person\);
+阮 < ancient\-musical\-instrument\:\-surname;
+喔 < descriptive\-of\-crying\-or\-of\-crowing;
+琏 < vessel\-used\-to\-hold\-grain\-offerings;
+邕 < former\-or\-literary\-name\-for\-nanning;
+魑 < a\-mountain\-demon\-resembling\-a\-tiger;
+昶 < a\-long\-day\.\-bright\.\-extended\.\-clear;
+缧 < a\-chain\-or\-rope\-used\-bind\-criminals;
+螭 < a\-dragon\-whose\-horns\-have\-not\-grown;
+龀 < lose\-baby\-teeth\-and\-get\-adult\-teeth;
+肜 < to\-sacrifice\-on\-two\-successive\-days;
+邗 < an\-ancient\-place\-in\-the\-state\-of\-wu;
+萬縣 < wanxian\-county\,\-in\-sichuan\-province;
+死不了 < portulaca\-sundial\-\(a\-type\-of\-plant\);
+大中學生 < university\-and\-high\-school\-students;
+迎春花 < winter\-jasmine\,\-jasminum\-nudiflorum;
+約翰內斯堡 < johannesburg\-\(city\-in\-south\-africa\);
+主人翁 < master\-\(of\-one''s\-own\-destiny\,\-etc\.\);
+分佈式環境 < distributed\-\(computing\)\-environment;
+兵部 < the\-ministry\-of\-war\-in\-feudal\-china;
+北周 < the\-northern\-zhou\-dynasty\-\(557\-581\);
+安分守己 < abide\-by\-the\-law\-and\-behave\-oneself;
+北京 < beijing\-\(capital\-of\-mainland\-china\);
+大顯身手 < fully\-displaying\-one''s\-capabilities;
+電信服務供應商 < telecommunications\-service\-provider;
+哈密瓜 < hami\-melon\-\(a\-variety\-of\-muskmelon\);
+鐤 < huge\-tripod\-of\-bronze\-with\-two\-ears;
+貿易額 < volume\-of\-trade\-\(between\-countries\);
+草案 < draft\-\(legislation\,\-proposal\,\-etc\.\);
+親愛 < dear\-\.\.\.\-\(way\-of\-starting\-a\-letter\);
+觭 < one\-turning\-up\-and\-one\-turning\-down;
+補白 < filler\-\(in\-a\-newspaper\-or\-magazine\);
+褱 < to\-carry\-in\-the\-bosom\-or\-the\-sleeve;
+波瀾壯闊 < surging\-forward\-with\-great\-momentum;
+舉行 < to\-hold\-\(a\-meeting\,\-ceremony\,\-etc\.\);
+回歸中國 < to\-return\-to\-china\-\(e\.g\.\-hong\-kong\);
+艜 < a\-long\-narrow\-vessel\-with\-two\-masts;
+總動員 < general\-mobilization\-\(for\-war\,\-etc\);
+臿 < to\-separate\-the\-grain\-from\-the\-husk;
+絰 < white\-hempen\-cloth\-worn\-by\-mourners;
+保送 < recommend\-\(for\-admission\-to\-school\);
+愛莫能助 < willing\-to\-help\-but\-unable\-to\-do\-so;
+碪 < stone\-slab\-used\-for\-washing\-clothes;
+轉帳 < transfer\-money\-from\|into\-an\-account;
+席位 < parliamentary\-or\-congressional\-seat;
+盇 < why\-not\?\-would\-it\-not\-be\-better\-to\?;
+布什 < \(george\)\-bush\-\(former\-us\-president\);
+崩龍族 < the\-benglong\-\(penglung\)\-nationality;
+滫 < water\-in\-which\-rice\-has\-been\-boiled;
+非政府組織 < non\-governmental\-organization\-\(ngo\);
+審訊 < a\-\(judicial\)\-trial\-\(in\-a\-courtroom\);
+檑 < logs\-rolled\-down\-in\-defense\-of\-city;
+棳 < small\-pillars\-that\-support\-the\-roof;
+帗 < a\-multicolored\-prop\-used\-in\-dancing;
+綜合服務數位網絡 < integrated\-services\-digital\-network;
+嘠 < the\-chirping\-of\-birds\-loud\-laughter;
+筆桿 < the\-shaft\-of\-a\-pen\-or\-writing\-brush;
+病勢 < degree\-of\-seriousness\-of\-an\-illness;
+唄 < final\-particle\-of\-assertion\-pathaka;
+倻 < phonetic\-used\-in\-korean\-place\-names;
+䵺 < boundary\-between\-agricultural\-lands;
+䵹 < insects\-that\-are\-injurious\-to\-crops;
+䭍 < to\-live\-with\-another\-at\-his\-expense;
+䬥 < cooked\-food\-which\-has\-become\-mouldy;
+䬙 < to\-dance\-and\-toss\-about\-in\-the\-wind;
+主辦 < host\-\(a\-conference\-or\-sports\-event\);
+䠫 < to\-succumb\-to\-the\-effect\-of\-alcohol;
+䝦 < a\-kind\-of\-animal\-looks\-like\-leopard;
+䜠 < language\-of\-the\-savage\-or\-barbarian;
+䖺 < a\-legendary\-animal\-in\-ancient\-times;
+䒼 < a\-bamboo\-tray\-for\-raising\-silkworms;
+䑳 < a\-horizontal\-bar\-in\-front\-of\-a\-boat;
+䐧 < to\-reward\-or\-cheer\-troops\-with\-food;
+䎰 < name\-of\-a\-place\-in\-sichuan\-province;
+䍟 < a\-kind\-of\-fish\-net\-with\-fine\-meshes;
+䇨 < a\-bamboo\-basket\-for\-food\-containers;
+霸王鞭 < a\-rattle\-stick\-used\-in\-folk\-dancing;
+本草 < a\-book\-on\-chinese\-\(herbal\)\-medicine;
+䆎 < grass\-and\-grains\-producing\-no\-fruit;
+䄻 < a\-second\-time\-growing\-of\-rice\-plant;
+䀚 < to\-lift\-up\-the\-eyes\-and\-look\-around;
+㿖 < carbuncle\-used\-in\-naming\-of\-a\-place;
+㺛 < name\-of\-a\-village\-in\-henan\-province;
+㷈 < embers\-kept\-for\-starting\-a\-new\-fire;
+㵁 < vast\-and\-boundless\-of\-flowing\-water;
+㳕 < water\-in\-which\-rice\-has\-been\-washed;
+㯪 < carved\-or\-patterned\-window\-railings;
+人物 < characters\-\(in\-a\-play\,\-novel\,\-etc\.\);
+議長 < speaker\-\(of\-a\-legislative\-assembly\);
+㠙 < a\-mountain\-paths\-name\-of\-a\-mountain;
+調查結果 < results\-\(of\-an\-investigation\,\-poll\);
+㓭 < to\-make\-ready\-the\-leather\-for\-shoes;
+㐷 < a\-kind\-of\-punishment\-in\-han\-dynasty;
+百端待舉 < a\-thousand\-things\-remain\-to\-be\-done;
+安南 < \[kofi\]\-annan\-\[un\-secretary\-general\];
+包飯 < get\-or\-supply\-meals\-at\-a\-fixed\-rate;
+有水 < \(of\-a\-dwelling\)\-supplied\-with\-water;
+白殭蠶 < the\-larva\-of\-silkworm\-with\-batrytis;
+話題 < subject\-\(of\-a\-talk\-or\-conversation\);
+事務 < \(political\,\-economic\,\-etc\.\)\-affairs;
+咱們 < we\-\(including\-the\-person\-spoken\-to\);
+尤金塞爾南 < eugene\-cernan\-\(apollo\-17\-astronaut\);
+率先 < take\-the\-lead\-\(showing\-inititative\);
+目前還不清楚 < at\-present\-it\-is\-still\-unclear\-\.\.\.\.;
+秋高氣爽 < clear\-and\-refreshing\-autumn\-weather;
+包租 < rent\-land\-or\-a\-house\-for\-subletting;
+明文 < \(laws\,\-rules\,\-etc\)\-state\-in\-writing;
+袱 < a\-piece\-of\-cloth\-used\-wrap\-bundles;
+挲 < to\-feel\-or\-fondle\-with\-the\-fingers;
+篑 < a\-bamboo\-basket\-for\-carrying\-earth;
+肓 < region\-between\-heart\-and\-diaphragm;
+滦 < river\-and\-county\-in\-hebei\-province;
+郗 < city\-under\-the\-chou\-dyn\.\-a\-surname;
+珏 < two\-pieces\-of\-jade\-joined\-together;
+綦 < dark\-grey\.\-variegated\.\-superlative;
+麇 < general\-name\-for\-the\-hornless\-deer;
+璎 < a\-necklace\-made\-of\-precious\-stones;
+掾 < a\-general\-designation\-of\-officials;
+郇 < an\-ancient\-feudal\-state\-in\-shaanxi;
+透視 < to\-examine\-by\-fluoroscope\-or\-x\-ray;
+報警 < report\-\(an\-incident\)\-to\-the\-police;
+碑帖 < a\-rubbing\-from\-a\-stone\-inscription;
+牛年 < year\-of\-the\-ox\-\(in\-chinese\-zodiac\);
+簡單網絡管理協議 < simple\-network\-management\-protocol;
+臨時的本地管理接口 < interim\-local\-management\-interface;
+包廂 < box\-\(in\-a\-theatre\-or\-concert\-hall\);
+轉讓 < transfer\-\(technology\,\-goods\,\-etc\.\);
+冰消瓦解 < melt\-like\-ice\-and\-break\-like\-tiles;
+龘 < the\-appearance\-of\-a\-dragon\-walking;
+半斤八兩 < not\-much\-to\-choose\-between\-the\-two;
+鴽 < a\-species\-of\-bird\-resembling\-quail;
+盜版 < pirate\-version\-\(of\-software\,\-e\.g\.\);
+步人後塵 < follow\-in\-other\-people''s\-footsteps;
+鄫 < state\-in\-today''s\-shandong\-province;
+鄇 < a\-name\-of\-a\-town\-in\-henan\-province;
+迿 < to\-be\-the\-first\-to\-begin\-a\-quarrel;
+轕 < great\-array\-of\-spears\-and\-chariots;
+輠 < grease\-pot\-hung\-under\-axle\-of\-cart;
+龍飛鳳舞 < lit\.\:\-dragon\-flies\,\-phoenix\-dances;
+緣份 < fate\-\(which\-brings\-people\-together;
+平壤 < pyongyang\-\(capital\-of\-north\-korea\);
+國際見聞 < international\-background\-knowledge;
+擔任 < hold\-a\-governmental\-office\-or\-post;
+膲 < the\-three\-divisions\-of\-the\-viscera;
+克服 < \(try\-to\)\-overcome\-\(hardships\,\-etc\);
+抄送 < to\-make\-a\-copy\-\(and\-send\-it\-to\-sb\);
+不失為 < can\-still\-be\-considered\-\(to\-be\.\.\.\);
+紖 < a\-rope\-for\-leading\-cattle\-or\-horse;
+最惠國 < most\-favored\-nation\-\(trade\-status\);
+笮 < boards\-which\-support\-tiles\-on\-roof;
+案驗 < investigate\-the\-evidence\-of\-a\-case;
+托運 < to\-book\-or\-check\-through\-\(baggage\);
+砅 < cross\-stream\-by\-stepping\-on\-stones;
+國務委員 < member\-of\-state\-council\-\(in\-china\);
+戶部 < feudal\-chinese\-ministry\-of\-revenue;
+璉 < a\-vessel\-used\-hold\-grain\-offerings;
+梡 < tray\-for\-carrying\-sacrificial\-meat;
+可移植性 < portability\-\(programming\-language\);
+推動 < to\-push\-\(for\-acceptance\-of\-a\-plan\);
+幵 < even\-level\.\-to\-raise\-in\-both\-hands;
+嫄 < an\-ancient\-emperor''s\-mother''s\-name;
+整體數位服務網路 < integrated\-service\-digital\-network;
+囷 < round\-shaped\-storage\-bin\-for\-grain;
+亞軍 < second\-place\-\(in\-a\-sports\-contest\);
+呼和浩特 < hohhot\-\(capital\-of\-inner\-mongolia\);
+基金會 < a\-foundation\-\(ie\,\-an\-organization\);
+䴙 < a\-kind\-of\-bird\-resembling\-the\-duck;
+䲃 < a\-carp\-like\-fish\-with\-chicken\-feet;
+顏體 < yan\-style\-\(in\-chinese\-calligraphy\);
+久違 < \(haven''t\-done\-sth\)\-for\-a\-long\-time;
+䩗 < to\-rule\-by\-might\-rather\-than\-right;
+䢕 < a\-group\-of\-people\-walking\-together;
+䚡 < bones\-in\-a\-horn\-of\-cattle\-and\-goat;
+䙬 < plaits\-on\-the\-sides\-of\-a\-petticoat;
+䐀 < to\-dismember\-body\-of\-the\-livestock;
+䎎 < to\-glide\-or\-to\-hover\-up\-in\-the\-air;
+䍊 < clay\-made\-blowing\-wind\-instruments;
+䈿 < belt\-of\-the\-canvas\-top\-on\-vehicles;
+䇮 < a\-bamboo\-mat\-used\-in\-ancient\-times;
+小題大做 < make\-a\-big\-fuss\-over\-a\-minor\-issue;
+䅚 < closely\-growing\-of\-the\-rice\-plants;
+䄶 < rice\-plant\-growing\-the\-second\-time;
+䁾 < red\-and\-swelling\-of\-the\-eye\-socket;
+䁨 < to\-open\-the\-eyes\-with\-astonishment;
+㽛 < narrow\-trail\-of\-path\-in\-the\-fields;
+㺑 < dogs\-wormed\-through\-a\-narrow\-place;
+㹢 < a\-large\-ape\-found\-in\-western\-china;
+㹜 < two\-dogs\-are\-barking\-to\-each\-other;
+㹉 < a\-legendary\-animal\-with\-three\-feet;
+㶀 < deep\-and\-vast\-of\-the\-flowing\-water;
+打錯了 < \"you\-have\-dialed\-the\-wrong\-number\";
+㰶 < to\-wrinkle\-the\-nose\-with\-sorrowful;
+㭲 < a\-wooden\-frame\-for\-carrying\-things;
+病包兒 < a\-person\-who\-is\-always\-falling\-ill;
+㡡 < screen\-to\-make\-a\-temporary\-kitchen;
+㠿 < a\-kind\-of\-delicate\-and\-fine\-fabric;
+㜺 < nice\-white\-color\-and\-looks\-so\-good;
+㜵 < with\-a\-charming\-sprightly\-carriage;
+㙈 < name\-of\-a\-place\-in\-shanxi\-province;
+香山 < fragrance\-hill\-\(a\-park\-in\-beijing\);
+㖡 < the\-birds\-singing\-during\-the\-night;
+㕺 < looks\-big\-outside\-but\-empty\-inside;
+㕄 < to\-apply\-knowledge\-to\-final\-causes;
+不虛此行 < the\-trip\-has\-not\-been\-made\-in\-vain;
+銷毀 < to\-destroy\-\(by\-melting\-or\-burning\);
+拉莫斯 < \(philippine\-president\-fidel\)\-ramos;
+比勒陀利亞 < pretoria\-\(capital\-of\-south\-africa\);
+北魏 < the\-northern\-wei\-dynasty\-\(386\-534\);
+言論自由 < \(constitutional\)\-freedom\-of\-speech;
+暴病 < sudden\-attack\-of\-a\-serious\-illness;
+人大 < \(china\)\-national\-people''s\-congress;
+熱鬧 < bustling\-with\-noise\-and\-excitement;
+呈文 < petition\-\(submitted\-to\-a\-superior\);
+春節 < spring\-festival\-\(chinese\-new\-year\);
+開發環境 < development\-environment\-\(computer\);
+不識時務 < show\-no\-understanding\-of\-the\-times;
+𠼻 < a\-particle\-used\-in\-transliteration;
+胡志強 < jason\-hu\-\(taiwan\-foreign\-minister\);
+新疆 < xinjiang\-\(uygur\-autonomous\-region\);
+幫倒忙 < be\-more\-of\-a\-hindrance\-than\-a\-help;
+俱樂部 < club\-\(ie\,\-a\-group\-or\-organization\);
+社 < god\-of\-the\-soil\-and\-altars\-to\-him;
+瑟 < large\-stringed\-musical\-instrument;
+楞 < used\-for\-ceylon\-in\-buddhist\-texts;
+喽 < used\-in\-onomatopoetic\-expressions;
+嚅 < talk\-indistinctly\-and\-falteringly;
+裱 < to\-mount\-maps\-or\-scrolls\-to\-paste;
+猢 < a\-kind\-of\-monkey\-found\-in\-w\.china;
+蜮 < a\-fabulous\-creature\-like\-a\-turtle;
+碡 < stone\-roller\-used\-to\-level\-fields;
+鄣 < name\-of\-ancient\-city\-in\-n\.jiangsu;
+粢 < grain\-offered\-in\-ritual\-sacrifice;
+簦 < large\-umbrella\-with\-a\-long\-handle;
+螓 < a\-small\-cicada\-with\-a\-square\-head;
+不時之需 < a\-possible\-period\-of\-want\-or\-need;
+公共交換電話網路 < public\-switched\-telephone\-network;
+網絡 < \(computer\,\-telecom\,\-etc\.\)\-network;
+以牙還牙 < a\-tooth\-for\-a\-tooth\-\(retaliation\);
+壁毯 < tapestry\-\(used\-as\-a\-wall\-hanging\);
+擦澡 < rub\-oneself\-down\-with\-a\-wet\-towel;
+認定 < maintain\-\(that\-something\-is\-true\);
+百戰百勝 < emerge\-victorious\-in\-every\-battle;
+魊 < a\-mythical\-creature\-said\-hurl\-san;
+分歧 < difference\-\(of\-opinion\,\-position\);
+勞動節 < international\-labor\-day\-\(may\-day\);
+韐 < knee\-pad\-made\-of\-red\-dyed\-leather;
+連戰 < lien\-chan\-\(taiwan\-vice\-president\);
+抱粗腿 < latch\-on\-to\-the\-rich\-and\-powerful;
+制度 < \(political\)\-system\-or\-institution;
+補習 < take\-lessons\-after\-school\-or\-work;
+由此可見 < from\-this\,\-it\-can\-be\-seen\-that\.\.\.;
+聯邦電信交通委員會 < federal\-communications\-commission;
+建交 < to\-establish\-diplomatic\-relations;
+軏 < cross\-bar\-at\-end\-of\-poles\-of\-cart;
+火災 < fire\-\(that\-burns\-buildings\,\-etc\.\);
+備課 < \(of\-a\-teacher\)\-to\-prepare\-lessons;
+金正日 < kim\-jong\-il\-\(north\-korean\-leader\);
+開演 < \(of\-a\-play\,\-movie\,\-etc\.\)\-to\-begin;
+備荒 < prepare\-against\-natural\-disasters;
+薀 < the\-hippuris\-or\-mare''s\-tail\-plant;
+不摸頭 < not\-acquainted\-with\-the\-situation;
+全會 < plenary\-session\-\(at\-a\-conference\);
+魏京生 < wei\-jingsheng\-\(chinese\-dissident\);
+聝 < to\-cut\-the\-left\-ears\-of\-the\-slain;
+耔 < to\-hoe\-up\-the\-earth\-around\-plants;
+便難 < retort\-with\-challenging\-questions;
+答辯 < to\-reply\-\(to\-an\-accusation\,\-e\.g\.\);
+簫 < musical\-instrument\-like\-pan\-pipes;
+簨 < a\-beam\-for\-hanging\-bells\-or\-drums;
+礳 < name\-of\-place\-in\-shan\-xi\-province;
+寸草不生 < \"not\-even\-a\-blade\-of\-grass\-grows\";
+碫 < coarse\-stone\-\(used\-for\-whetstone\);
+璯 < jade\-ornament\-in\-the\-seams\-of\-cap;
+琯 < a\-jade\-tube\-used\-as\-an\-instrument;
+玁 < a\-dog\-with\-a\-long\-snout\-or\-muzzle;
+圖書 < books\-\(in\-a\-library\-or\-bookstore\);
+家長 < the\-parent\-or\-guardian\-of\-a\-child;
+回歸 < to\-return\-\(to\-previous\-condition\);
+擦亮眼睛 < remove\-the\-scales\-from\-one''s\-eyes;
+補偏救弊 < remedy\-defects\-and\-rectify\-errors;
+棟 < the\-main\-beams\-supporting\-a\-house;
+骨法 < bone\-\(property\-of\-a\-brush\-stroke\);
+百川歸海 < all\-things\-tends\-in\-one\-direction;
+誓不反悔 < to\-vow\-not\-to\-break\-one''s\-promise;
+吃不上 < be\-unable\-to\-get\-something\-to\-eat;
+戠 < a\-sword\.\-potter''s\-clay\.\-to\-gather;
+科學編輯 < science\-editor\-\(of\-a\-publication\);
+昂首闊步 < stride\-forward\-with\-one''s\-chin\-up;
+日經指數 < nikkei\-index\-\(of\-japanese\-stocks\);
+科隆 < cologne\,\-germany\-or\-colon\,\-panama;
+打消 < dispel\-\(doubts\,\-misgivings\,\-etc\.\);
+呭 < final\-particle\-expressing\-consent;
+呡 < the\-corners\-of\-the\-mouth\-the\-lips;
+疾病預防中心 < \(u\.s\.\)\-center\-for\-disease\-control;
+䶬 < hard\-fins\-on\-the\-back\-of\-a\-dragon;
+䶅 < a\-marmot\-like\-rat\-with\-a\-big\-head;
+䴓 < general\-term\-for\-small\-bird\-group;
+䬗 < blown\-or\-tossed\-about\-by\-the\-wind;
+䧉 < name\-of\-a\-pavilion\-in\-han\-dynasty;
+䥶 < cooking\-utensil\-used\-in\-old\-times;
+䥬 < a\-musical\-instrument\-in\-old\-times;
+䣜 < name\-of\-a\-county\-in\-ancient\-times;
+䣌 < residence\-of\-a\-prince\-or\-nobility;
+䡝 < a\-rear\-covering\-of\-a\-big\-carriage;
+䡊 < the\-protruded\-sides\-of\-a\-carriage;
+䠚 < to\-step\-on\-the\-ground\-with\-a\-bang;
+䖃 < the\-water\-is\-waving\-in\-the\-breeze;
+䒧 < a\-vessel\-or\-utensil\-made\-of\-straw;
+䍲 < a\-kind\-of\-sheep\-with\-curled\-hairs;
+䋸 < back\-center\-suture\-of\-the\-clothes;
+䋛 < the\-clustered\-embroidery\-patterns;
+䊖 < to\-eat\-rice\-gruel\-mixed\-with\-meat;
+䆅 < to\-accumulate\-or\-to\-store\-up\-rice;
+䂧 < rocks\-clustered\-pile\-up\-togethers;
+䀿 < to\-have\-a\-casual\-and\-short\-glance;
+找到 < find\-\(what\-one\-was\-searching\-for\);
+召開 < convene\-\(a\-conference\-or\-meeting\);
+㹗 < cattle\-and\-sheep\-have\-no\-children;
+㶲 < measuring\-unit\-for\-thermodynamics;
+㵺 < name\-of\-a\-stream\-in\-ancient\-times;
+㵐 < name\-of\-a\-river\-in\-hubei\-province;
+㵋 < name\-of\-a\-river\-in\-hunan\-province;
+㱒 < to\-scold\-or\-blame\-in\-a\-loud\-voice;
+㮾 < a\-place\-in\-today''s\-hunan\-province;
+㬈 < the\-sun\-was\-shining\-and\-it''s\-warm;
+㪊 < infested\-with\-bandits\-and\-robbers;
+㨘 < to\-blow\-the\-nose\-with\-the\-fingers;
+㟾 < name\-of\-a\-mountain\-in\-county\-jian;
+㟸 < name\-of\-pavilion\-in\-ancient\-china;
+㟂 < name\-of\-cape\-in\-shandong\-province;
+呼籲 < call\-on\-\(someone\-to\-do\-something\);
+㚪 < to\-make\-a\-deceptive\-show\-of\-power;
+電腦輔助設計與繪圖 < computer\-aided\-design\-and\-drawing;
+㒍 < utterly\-weary\-in\-body\-and\-spirits;
+㐌 < a\-tribe\-of\-savages\-in\-south\-china;
+科爾 < \(helmut\)\-kohl\-\(german\-chancellor\);
+齋月 < ramadan\-\(muslim\-month\-of\-fasting\);
+得寸進尺 < literal\:\-get\-an\-inch\,\-want\-a\-foot;
+起來 < beginning\-or\-continuing\-an\-action;
+北齊 < the\-northern\-qi\-dynasty\-\(550\-557\);
+北洋軍閥 < the\-northern\-warlords\-\(1912\-1927\);
+吐穗 < to\-have\-the\-ears\-of\-grain\-come\-up;
+大惑不解 < do\-not\-understand\-a\-certain\-thing;
+請願 < petition\-\(for\-action\-to\-be\-taken\);
+半日制學校 < half\-day\-\(or\-double\-shift\-school\);
+明文規定 < expressly\-stipulated\-\(in\-writing\);
+享受 < to\-enjoy\-\(rights\,\-benefits\,\-etc\.\);
+大庭廣眾 < public\-place\-with\-numerous\-people;
+百無一失 < no\-danger\-of\-anything\-going\-wrong;
+三峽 < the\-three\-changjiang\-river\-gorges;
+取暖 < to\-warm\-oneself\-\(by\-a\-fire\,\-etc\.\);
+人權觀察 < human\-rights\-watch\-\(organization\);
+院長 < president\-\(of\-a\-university\,\-etc\.\);
+檢察官 < the\-prosecution\-\(in\-a\-court\-case\);
+備而不用 < have\-something\-ready\-just\-in\-case;
+言論 < expression\-of\-\(political\)\-opinion;
+應用程式介面 < application\-programming\-interface;
+捻 < to\-twist\-or\-nip\-with\-the\-fingers;
+戌 < eleventh\-of\-terrestrial\-branches;
+搓 < to\-rub\-or\-roll\-between\-the\-hands;
+尧 < a\-legendary\-ancient\-emperor\-sage;
+婶 < wife\-of\-father''s\-younger\-brother;
+掬 < to\-grasp\-or\-hold\-with\-both\-hands;
+幛 < scroll\-of\-silk\-or\-cloth\-presente;
+棂 < carved\-or\-patterned\-window\-sills;
+氲 < life\-giving\-influences\-of\-nature;
+蚝 < hairy\-and\-poisonous\-caterpillars;
+澧 < river\-in\-northern\-hunan\-province;
+筮 < divination\-with\-stalks\-of\-plants;
+笪 < a\-coarse\-mat\-of\-rushes\-or\-bamboo;
+馓 < fried\-round\-cakes\-of\-wheat\-flour;
+箐 < to\-draw\-a\-bamboo\-bow\-or\-crossbow;
+扃 < a\-door\-bar\-placed\-outside\-a\-door;
+仉 < surname\-of\-the\-mother\-of\-mencius;
+節外生枝 < new\-problems\-complicate\-an\-issue;
+鼻青臉腫 < a\-bloody\-nose\-and\-a\-swollen\-face;
+政界 < political\-and\-government\-circles;
+性別 < distinguishing\-between\-the\-sexes;
+違禁 < to\-violate\-a\-prohibtition\-or\-ban;
+酬和 < to\-respond\-to\-a\-poem\-with\-a\-poem;
+報考 < enter\-oneself\-for\-an\-examination;
+北國 < the\-northern\-part\-of\-the\-country;
+企業管理 < business\-management\-\(as\-a\-study\);
+外孫 < grandson\-\(son\-of\-one''s\-daughter\);
+光纖分佈式數據介面 < fiber\-distributed\-data\-interface;
+垃圾車 < garbage\-truck\-\(or\-other\-vehicle\);
+大國 < a\-power\-\(ie\,\-a\-dominant\-country\);
+骾 < any\-object\-that\-sticks\-in\-throat;
+探親 < to\-go\-home\-to\-visit\-one''s\-family;
+布法羅 < buffalo\-\(city\-in\-new\-york\-state\);
+八會穴 < the\-eight\-strategic\-nerve\-points;
+難以 < hard\-to\-\(predict\,\-imagine\,\-etc\.\);
+報效 < render\-service\-to\-repay\-kindness;
+醼 < offer\-food\-and\-wine\-one''s\-guests;
+輧 < curtained\-carriage\-used\-by\-women;
+軙 < a\-chinese\-family\-name\-to\-arrange;
+親戚 < \(a\)\-relative\-\(ie\,\-family\-member\);
+為期 < \(to\-be\-done\)\-by\-\(a\-certain\-date\);
+農曆 < the\-traditional\-chinese\-calendar;
+贁 < to\-defeat\-to\-spoil\-or\-be\-spoiled;
+賏 < pearls\-or\-shells\-strung\-together;
+諊 < to\-make\-a\-judicial\-investigation;
+按說 < in\-the\-ordinary\-course\-of\-events;
+連任 < continue\-in\-\(a\-political\)\-office;
+矮子裡拔將軍 < choose\-the\-best\-person\-available;
+臉譜 < types\-of\-facial\-makeup\-in\-operas;
+纙 < string\-on\-which\-coins\-are\-strung;
+筴 < type\-of\-grass\-used\-in\-divination;
+開庭 < begin\-a\-\(judicial\)\-court\-session;
+公審 < public\-trial\-\(in\-a\-court\-of\-law\);
+琇 < coarse\-variety\-of\-jasper\-or\-jade;
+但願 < if\-only\-\(it\-were\-possible\-to\.\.\.\);
+開普敦 < cape\-town\-\(city\-in\-south\-africa\);
+越來越嚴重 < to\-become\-more\-serious\-every\-day;
+不謀而合 < agree\-without\-prior\-consultation;
+捨得 < to\-be\-willing\-to\-part\-with\-\(sth\);
+棫 < thorny\-shrub\-with\-yellow\-flowers;
+見不得 < may\-not\-be\-seen\-by\-or\-exposed\-to;
+旓 < serrated\-edges\-on\-a\-chinese\-flag;
+持有 < hold\-\(eg\,\-passport\,\-views\,\-etc\.\);
+抗爭 < make\-a\-stand\-and\-fight\-\(against\);
+近乎同步數位階層 < plesiochronous\-digital\-hierarchy;
+按兵不動 < not\-throw\-the\-troops\-into\-battle;
+嶲 < a\-name\-of\-an\-old\-town\-in\-sichuan;
+篦子 < a\-double\-edged\-fine\-toothed\-comb;
+投機 < be\-a\-speculator\-\(profit\-seeking\);
+塱 < place\-name\-in\-guangdong\-province;
+剨 < sound\-of\-something\-being\-smashed;
+挪借 < to\-borrow\-money\-for\-a\-short\-time;
+宰相 < prime\-minister\-\(in\-feudal\-china\);
+一中一臺 < \"one\-china\,\-one\-taiwan\"\-\(policy\);
+䵬 < black\-sound\-of\-the\-flowing\-water;
+䴍 < a\-kind\-of\-strange\-and\-weird\-bird;
+䴉 < general\-term\-for\-a\-group\-of\-bird;
+䳰 < a\-bird\-resembling\-the\-wild\-goose;
+䱙 < a\-small\-kind\-of\-tuna\-or\-sturgeon;
+䰔 < dressed\-hair\-in\-a\-horizontal\-way;
+䪬 < sound\-of\-pressing\-something\-down;
+䩬 < an\-ornamental\-item\-on\-a\-scabbard;
+䧵 < a\-bird\-like\-the\-secretary\-falcon;
+䦎 < a\-mechanical\-device\-for\-lead\-ore;
+䥾 < to\-melt\-or\-cast\-by\-using\-a\-mould;
+䥙 < a\-speculum\-used\-in\-ancient\-times;
+䤷 < a\-lance\-with\-three\-or\-two\-points;
+中日韓越 < china\,\-japan\,\-korea\,\-and\-vietnam;
+䣢 < name\-of\-a\-place\-in\-ancient\-times;
+䝁 < a\-kind\-of\-wild\-leguminous\-plants;
+䛶 < writings\-eulogizing\-adead\-person;
+虛腕 < empty\-wrist\-\(method\-of\-painting\);
+䗤 < a\-kind\-of\-worm\-produced\-in\-water;
+取得大學學位 < to\-obtain\-a\-university\-education;
+䍰 < a\-plague\-or\-a\-pestilence\-of\-goat;
+䊊 < well\-boiled\-congee\-or\-rice\-gruel;
+䉈 < a\-kind\-of\-bamboo\-with\-a\-red\-skin;
+䇈 < to\-put\-into\-a\-cupboard\-or\-closet;
+䇀 < ornaments\-of\-fine\-feather\-or\-fur;
+䅹 < a\-kind\-of\-drill\-for\-sowing\-grain;
+䅩 < crooked\-and\-winding\-of\-the\-grass;
+䄷 < a\-measurement\-equal\-to\-120\-catty;
+䃪 < a\-platform\-for\-sacrificial\-rites;
+䂞 < a\-thorny\-tree\-about\-15\-feet\-high;
+創辦人 < founder\-\(of\-an\-institution\,\-etc\);
+㺜 < fierce\-dog\-with\-long\-shaggy\-hair;
+㺉 < a\-fierce\-animal\-of\-the\-dog\-tribe;
+不論 < no\-matter\-\(what\,\-who\,\-how\,\-etc\.\);
+㹡 < a\-rush\-and\-impatient\-disposition;
+㸡 < board\-to\-block\-the\-water\-current;
+㸚 < scattered\-or\-dispersed\-and\-clear;
+㴭 < immeasurable\-depth\-or\-profundity;
+㱨 < to\-prepare\-a\-body\-for\-the\-coffin;
+保修 < guarantee\-to\-keep\-in\-good\-repair;
+㬇 < name\-of\-a\-state\-in\-ancient\-china;
+㩽 < branches\-to\-be\-a\-parasite\-a\-tree;
+㨒 < to\-cut\-open\-and\-clean\-\-\-\-as\-fish;
+金邊 < phnom\-penh\-\(capital\-of\-cambodia\);
+㢲 < the\-5th\-of\-the\-eight\-diagrams\-八卦;
+㟨 < a\-fountain\-in\-the\-side\-of\-a\-hill;
+㛍 < to\-have\-one''s\-ambition\-fulfilled;
+㚡 < standing\-without\-a\-straight\-back;
+㚉 < to\-make\-a\-profit\-on\-sell\-and\-buy;
+侵佔 < to\-invade\-and\-occupy\-\(territory\);
+㕣 < a\-marsh\-at\-the\-foot\-of\-the\-hills;
+柯密 < kermit\-\(communications\-protocol\);
+享有 < enjoy\-\(rights\,\-privileges\,\-etc\.\);
+禮炮 < a\-gun\-salute\-\(eg\,\-21\-gun\-salute\);
+突厥 < turkic\-\(minority\-group\-in\-china\);
+戈爾巴喬夫 < \(former\-soviet\-leader\)\-gorbachev;
+逼供信 < obtain\-confessions\-by\-compulsion;
+安保 < \(abbreviation\)\-maintain\-security;
+壽麵 < birthday\-noodles\-\(for\-longevity\);
+浴室 < bathroom\-\(room\-used\-for\-bathing\);
+令人 < cause\-someone\-to\-\(be\,\-feel\,\-etc\);
+形影不離 < inseparable\-\(as\-form\-and\-shadow\);
+商業版本 < commercial\-version\-\(of\-software\);
+百讀不厭 < be\-worth\-reading\-a\-hundred\-times;
+除非 < only\-if\-\(\.\.\.\,\-or\-otherwise\,\-\.\.\.\);
+歧視 < discrimination\-\(against\-someone\);
+敗落 < decline\-\(in\-wealth\-and\-position\);
+無錫 < wuxi\-\(city\)\,\-in\-jiangsu\-province;
+分波多工 < wavelength\-division\-multiplexing;
+必由之路 < the\-road\-one\-must\-follow\-or\-take;
+们 < adjunct\-pronoun\-indicate\-plural;
+呢 < interrogative\-or\-emphatic\-final;
+楼 < building\-of\-two\-or\-more\-stories;
+药 < leaf\-of\-dahurian\-angelica\-plant;
+齎 < take\-in\-both\-hands\-and\-offer\-to;
+丈 < unit\-of\-length\-equal\-3\.3\-meters;
+挑 < a\-load\-carried\-on\-the\-shoulders;
+祝 < pray\-for\-happiness\-or\-blessings;
+杉 < various\-species\-of\-pine\-and\-fir;
+朧 < condition\-or\-appearance\-of\-moon;
+霸 < rule\-by\-might\-rather\-than\-right;
+箪 < small\-bamboo\-basket\-for\-holding;
+醤 < any\-jam\-like\-or\-paste\-like\-food;
+炕 < the\-brick\-bed\-in\-northern\-china;
+亥 < last\-of\-twelve\-earthly\-branches;
+粤 < guangdong\-and\-guangxi\-provinces;
+粽 < dumpling\-made\-of\-glutinous\-rice;
+陇 < mountain\-located\-between\-shanxi;
+闾 < village\-of\-twenty\-five\-families;
+郦 < place\-in\-today''s\-henan\-province;
+鞅 < leather\-strap\-over\-horse''s\-neck;
+铡 < sickle\-for\-cutting\-grass\-or\-hay;
+骧 < gallop\-about\-with\-head\-uplifted;
+骢 < horse\-with\-a\-bluish\-white\-color;
+蛳 < kind\-of\-snail\-with\-spiral\-shell;
+邳 < a\-department\-in\-the\-state\-of\-lu;
+郢 < state\-in\-today''s\-hubei\-province;
+骖 < two\-outside\-ones\-in\-three\-horse;
+轸 < cross\-board\-at\-rear\-of\-carriage;
+箜 < ancient\-string\-music\-instrument;
+郐 < state\-in\-today''s\-henan\-province;
+轹 < run\-over\-something\-with\-vehicle;
+栝 < a\-builder''s\-frame\-for\-measuring;
+獍 < an\-animal\-which\-eats\-its\-mother;
+負責人 < person\-in\-charge\-\(of\-something\);
+姐夫 < brother\-in\-law\-\(husband''s\-side\);
+十三經 < the\-thirteen\-confucian\-classics;
+實時操作環境 < real\-time\-operating\-environment;
+特區 < special\-\(administrative\)\-region;
+日圓 < japanese\-yen\-\(unit\-of\-currency\);
+病蟲害 < plant\-diseases\-and\-insect\-pests;
+亨特泰羅 < hunter\-tylo\-\(hollywood\-actress\);
+壁櫥 < a\-built\-in\-wardrobe\-or\-cupboard;
+閉門造車 < make\-a\-cart\-behind\-closed\-doors;
+避暑 < be\-away\-for\-the\-summer\-holidays;
+步搖 < dangling\-ornament\-worn\-by\-women;
+國際商業機器 < international\-business\-machines;
+鼗 < small\-revolving\-drum\-with\-knobs;
+鼒 < large\-tripod\-caldron\-with\-small;
+鶖 < large\-waterfowl\-with\-naked\-head;
+騄 < name\-of\-a\-legendary\-swift\-horse;
+餖 < food\-item\-set\-out\-for\-show\-only;
+頣 < to\-view\-others\-with\-raised\-eyes;
+邦交 < relations\-between\-two\-countries;
+鄴 < place\-in\-today''s\-honan\-province;
+鄚 < place\-in\-today''s\-hebei\-province;
+郔 < place\-name\-in\-shandong\-province;
+邽 < name\-of\-a\-county\-in\-han\-dynasty;
+軨 < lattice\-work\-on\-front\-and\-sides;
+踋 < the\-foot\-or\-feet\-cast\-of\-a\-play;
+數據鏈路連接識別碼 < data\-link\-connection\-identifier;
+襭 < tuck\-up\-hem\-of\-garment\-and\-wrap;
+裋 < cotton\-clothes\-of\-a\-boy\-servant;
+衺 < slit\-in\-garment\-to\-aid\-movement;
+蠨 < a\-kind\-of\-spider\-with\-long\-legs;
+螣 < mythological\-wingless\-dragon\-of;
+提煉 < to\-extract\-\(ore\,\-minerals\,\-etc\);
+苤 < brassica\-campestris\-subsp\.\-rapa;
+橋接 < bridging\-\(in\-computer\-networks\);
+艕 < two\-boats\-fastened\-side\-by\-side;
+八方 < the\-eight\-points\-of\-the\-compass;
+膫 < the\-fat\-covering\-the\-intestines;
+悲喜交集 < mixed\-feelings\-of\-grief\-and\-joy;
+內政 < internal\-affairs\-\(of\-a\-country\);
+縗 < sackcloth\-worn\-on\-breast\-during;
+迫使 < force\-\(someone\-to\-do\-something\);
+篪 < a\-bamboo\-flute\-with\-seven\-holes;
+吃不服 < not\-be\-accustomed\-to\-eating\-sth;
+長廊 < the\-long\-corridor\-at\-yi\-he\-yuan;
+瞖 < a\-cataract\-or\-film\-over\-the\-eye;
+不修邊幅 < not\-care\-about\-one''s\-appearance;
+畤 < place\-for\-worshipping\-the\-haven;
+元帥 < a\-marshal\-\(in\-the\-armed\-forces\);
+甗 < earthenware\-vessel\-in\-two\-parts;
+符合美國利益 < in\-line\-with\-american\-interests;
+大快人心 < to\-the\-satisfaction\-of\-everyone;
+校長 < \(college\,\-university\)\-president;
+烳 < to\-travel\-by\-the\-light\-of\-torch;
+灕 < short\-name\-for\-guangxi\-province;
+馬尼拉 < manila\-\(capital\-of\-philippines\);
+開刀 < to\-perform\-or\-have\-an\-operation;
+沴 < foul\-and\-poisonous\-in\-confusion;
+樐 < a\-lookout\-turret\-on\-a\-city\-wall;
+棻 < kind\-of\-wood\-from\-which\-perfume;
+輩分 < seniority\-in\-the\-family\-or\-clan;
+枌 < variety\-of\-elm\-with\-small\-seeds;
+鞭長莫及 < beyond\-the\-reach\-of\-one''s\-power;
+不學無術 < have\-neither\-learning\-nor\-skill;
+應該說 < it\-should\-be\-mentioned\-that\-\.\.\.;
+不得不 < have\-no\-choice\-or\-option\-but\-to;
+不寒而慄 < shiver\-all\-over\-though\-not\-cold;
+尾牙 < a\-year\-end\-dinner\-for\-employees;
+班輪 < regular\-passenger\-or\-cargo\-ship;
+垟 < clay\-sheep\-buried\-with\-the\-dead;
+抨擊 < attack\-\(verbally\-or\-in\-writing\);
+舞台 < \(theatrical\-or\-political\)\-stage;
+咠 < to\-whisper\.\-to\-blame\-to\-slander;
+叧 < to\-cut\-meat\-off\-away\-from\-bones;
+冔 < cap\-worn\-during\-the\-yin\-dynasty;
+亼 < to\-assemble\.\-to\-gather\-together;
+乄 < shime\:\-to\-find\-a\-place\-to\-dwell;
+䵸 < the\-toad\-that\-lives\-in\-the\-moon;
+䳡 < a\-kind\-of\-bird\-in\-ancient\-books;
+北伐軍 < the\-northern\-expeditionary\-army;
+䲞 < a\-second\-general\-name\-for\-perch;
+䱌 < a\-second\-name\-for\-the\-globefish;
+䰝 < a\-large\-earthen\-pot\-for\-cooking;
+䰀 < dressed\-hair\-of\-a\-chinese\-woman;
+䮸 < to\-move\-slowly\-and\-then\-swiftly;
+䬻 < to\-entertain\-a\-departing\-friend;
+䪾 < to\-deal\-with\-affairs\-cautiously;
+䪍 < a\-container\-for\-bows\-and\-arrows;
+䨣 < leather\-to\-be\-moistened\-by\-rain;
+軟體出版協會 < software\-publishers\-association;
+䣣 < name\-of\-a\-place\-name\-of\-a\-place;
+䟚 < to\-sit\-with\-the\-legs\-spread\-out;
+䜷 < fermented\-and\-seasoned\-soybeans;
+䜪 < name\-of\-a\-pavilion\-in\-old\-times;
+䛀 < reasonable\-authority\-statements;
+䘅 < a\-small\-gadflies\-and\-mosquitoes;
+可移植 < portable\-\(programming\-language\);
+䐃 < fat\-in\-the\-abdomen\-or\-intestine;
+䍛 < a\-kind\-of\-tool\-used\-to\-get\-fish;
+䊤 < vegetable\-mixed\-with\-thick\-soup;
+䂲 < standard\-weights\-used\-in\-scales;
+䁰 < to\-look\-in\-a\-evil\-or\-wicked\-way;
+㼖 < gourd\-used\-as\-a\-ladle\-or\-dipper;
+㻫 < a\-gem\-or\-ornament\-on\-a\-scabbard;
+猛跌 < drop\-sharply\-\(eg\,\-stock\-prices\);
+層出不窮 < to\-come\-out\-one\-after\-the\-other;
+信件 < a\-letter\-\(ie\,\-sent\-in\-the\-mail\);
+㬹 < tendons\-of\-the\-heel\-of\-the\-foot;
+㬁 < the\-sun\-is\-shining\-on\-the\-water;
+㥆 < indulgent\-and\-without\-restraint;
+八級工資制 < eight\-grade\-wage\-scale\-\(system\);
+㗘 < to\-bite\-the\-hard\-and\-solid\-food;
+使命 < a\-\(diplomatic\-or\-other\)\-mission;
+㓢 < to\-cut\-the\-flesh\-from\-the\-bones;
+㓔 < faded\-and\-fallen\-\-\-\-as\-blossoms;
+㒻 < to\-go\-forward\-with\-eyes\-covered;
+丹皮 < the\-root\-bark\-of\-the\-peony\-tree;
+定做 < to\-have\-something\-made\-to\-order;
+在密切注意 < to\-pay\-close\-attention\-\(to\-sth\);
+安民告示 < a\-notice\-to\-reassure\-the\-public;
+松下電氣工業 < matsushita\-electronics\-industry;
+重用 < to\-put\-in\-an\-important\-position;
+細菌武器 < biological\-weapon\-\(using\-germs\);
+比賽 < \[athletic\-or\-other\]\-competition;
+別開生面 < start\-something\-new\-or\-original;
+敘述 < relate\-\(a\-story\-or\-information\);
+加重 < become\|make\-more\-serious\|graver;
+蔚為 < to\-afford\-\(a\-view\-of\-sth\,\-e\.g\.\);
+經濟學 < economics\-\(as\-a\-field\-of\-study\);
+電臺 < radio\-\(or\-broadcasting\)\-station;
+如飢似渴 < thirsting\-or\-hungering\-for\-sth\.;
+開國元勛 < founding\-fathers\-\(of\-a\-country\);
+碑林 < the\-forest\-of\-steles\-\(in\-xi''an\);
+幹 < trunk\-of\-tree\-or\-of\-human\-body;
+尺 < chinese\-measure\-approx\.\-''foot'';
+米 < hulled\-or\-husked\-uncooked\-rice;
+鹏 < fabulous\-bird\-of\-enormous\-size;
+喂 < interjection\-to\-call\-attention;
+潇 < sound\-of\-beating\-wind\-and\-rain;
+禹 < legendary\-hsia\-dynasty\-founder;
+斟 < to\-pour\-wine\-or\-tea\-into\-a\-cup;
+萼 < the\-stem\-and\-calyx\-of\-a\-flower;
+阀 < powerful\-and\-influential\-group;
+楷 < model\-style\-of\-chinese\-writing;
+辄 < sides\-of\-chariot\-where\-weapons;
+俑 < wooden\-figure\-buried\-with\-dead;
+嘹 < used\-describe\-clarity\-of\-voice;
+轼 < horizontal\-wooden\-bar\-in\-front;
+馑 < time\-of\-famine\-or\-crop\-failure;
+伥 < ghost\-of\-one\-devoured\-by\-tiger;
+绶 < silk\-ribbon\-attached\-as\-a\-seal;
+鬈 < fine\-growth\-of\-hair\-curly\-hair;
+磔 < downward\-stroke\-slanting\-right;
+裢 < folding\-purse\-inserted\-in\-belt;
+枸 < kind\-of\-aspen\-found\-in\-sichuan;
+芊 < exuberant\-and\-vigorous\-foliage;
+鄄 < name\-of\-a\-district\-in\-shandong;
+鼹 < a\-kind\-of\-insectivorous\-rodent;
+莼 < an\-edible\-water\-plant\-brasenia;
+圬 < plaster\-over\-with\-layer\-of\-mud;
+莩 < membrane\-lining\-inside\-of\-reed;
+诶 < an\-exclamation\-of\-confirmation;
+褙 < paper\-or\-cloth\-pasted\-together;
+直接數據 < data\-direct\-\(in\-lan\-emulation\);
+外灘 < waitan\-\(the\-bund\)\,\-in\-shanghai;
+證實 < confirm\-\(something\-to\-be\-true\);
+愛面子 < be\-concerned\-about\-face\-saving;
+議員 < member\-\(of\-a\-legislative\-body\);
+報表 < forms\-for\-reporting\-statistics;
+明報 < ming\-pao\-newspaper\-\(hong\-kong\);
+前程 < future\-\(career\,\-etc\)\-prospects;
+登門 < pay\-a\-visit\-to\-someone''s\-house;
+邊民 < people\-living\-on\-the\-frontiers;
+那末 < if\-that''s\-the\-case\,\-then\-\(\.\.\.\);
+效應 < effect\-\(eg\,\-greenhouse\-effect\);
+墨爾缽 < melbourne\-\(an\-australian\-city\);
+歹徒 < evil\-person\-who\-commits\-crimes;
+收復 < recover\-\(lost\-territory\,\-etc\.\);
+傲骨 < lofty\-and\-unyielding\-character;
+斷交 < break\-off\-diplomatic\-relations;
+電腦與電話系統整合 < computer\-telephony\-integration;
+鶋 < a\-sea\-bird\-with\-a\-white\-breast;
+鯏 < a\-dialect\.\.\.\.\.\.\.\.\-name\-of\-fish;
+饁 < carry\-meal\-to\-workers\-in\-field;
+日本電報電話公司 < nippon\-telegraph\-and\-telephone;
+鎫 < ornament\-over\-the\-horse''s\-head;
+傳統醫藥 < \(chinese\)\-traditional\-medicine;
+赙 < gift\-of\-money\-help\-pay\-funeral;
+有史以來 < since\-the\-beginning\-of\-history;
+帳戶 < \(bank\,\-computer\,\-etc\.\)\-account;
+詤 < to\-make\-wild\-statements\-to\-lie;
+核威懾政策 < policy\-of\-nuclear\-intimidation;
+蘴 < young\-shoots\-of\-the\-rapeturnip;
+莝 < to\-chop\-straw\-fine\-for\-animals;
+索杰納 < sojourner\-\(martian\-land\-rover\);
+腠 < between\-the\-skin\-and\-the\-flesh;
+包治百病 < guarantee\-to\-cure\-all\-diseases;
+翿 < streamer\-adorned\-with\-feathers;
+筥 < round\-shaped\-bamboo\-basket\-for;
+固然 < admittedly\-\(it''s\-true\-that\.\.\.\);
+痄 < scrofulous\-swellings\-and\-sores;
+中華人民共和國 < the\-people''s\-republic\-of\-china;
+玤 < a\-kind\-of\-gem\-inferior\-to\-jade;
+服務廣告協議 < service\-advertisement\-protocol;
+煠 < to\-fry\-in\-fat\-or\-oil\.\-to\-scald;
+臺獨 < taiwan\-independence\-\(movement\);
+潏 < fareshare\-reclaimed\-from\-river;
+漼 < having\-the\-appearance\-of\-depth;
+保苗 < keep\-a\-full\-stand\-of\-seedlings;
+欞 < the\-lattice\-of\-a\-window\-a\-sill;
+按需分配 < distribution\-according\-to\-need;
+世貿組織 < wto\-\(world\-trade\-organization\);
+曚 < twilight\-just\-before\-sun\-rises;
+沒有什麼 < there''s\-nothing\-\(\.\.\.\-about\-it\);
+斚 < a\-small\-cup\-of\-stone\-with\-ears;
+按勞分配 < distribution\-according\-to\-work;
+路由 < routing\-\(in\-computer\-networks\);
+對美 < \(policy\,\-etc\.\)\-towards\-america;
+指數 < \(numerical\,\-statistical\)\-index;
+筆畫 < strokes\-of\-a\-chinese\-character;
+扊 < upright\-bar\-for\-fastening\-door;
+慜 < name\-of\-a\-monk\-in\-tang\-dynasty;
+空襲 < \(military\)\-attack\-from\-the\-air;
+崠 < place\-name\-in\-guangxi\-province;
+表報 < statistical\-tables\-and\-reports;
+岝 < name\-of\-a\-mountain\-in\-shandong;
+拘押 < \(arrest\-and\)\-take\-into\-custody;
+談得來 < able\-to\-talk\-to\-or\-get\-on\-with;
+堭 < a\-dry\-moat\-outside\-a\-city\-wall;
+堎 < character\-used\-for\-place\-names;
+嚹 < a\-particle\-implying\-completion;
+阿拉木圖 < almaty\-\(capital\-of\-kazakhstan\);
+匳 < ladies\-toilet\-case\-with\-mirror;
+刵 < punishment\-by\-cutting\-off\-ears;
+尚書 < high\-official\-in\-ancient\-china;
+䲁 < general\-term\-of\-a\-kind\-of\-fish;
+七層架構 < seven\-layer\-architecture\-\(osi\);
+䰚 < the\-top\-part\-of\-the\-rice\-gruel;
+䯵 < hair\-style\-for\-little\-children;
+䯤 < boneware\-used\-to\-comb\-the\-hair;
+䯒 < the\-upper\-part\-of\-the\-shinbone;
+䮔 < a\-young\-and\-fleet\-footed\-horse;
+䭺 < a\-horse\-to\-raise\-its\-head\-high;
+䫮 < to\-bend\-or\-lower\-of\-one''s\-head;
+䫆 < the\-front\-and\-back\-of\-the\-neck;
+䧒 < steps\-leading\-up\-to\-a\-building;
+䤛 < component\-parts\-of\-a\-cross\-bow;
+䣹 < to\-brew\-10\-percent\-of\-the\-wine;
+䣵 < to\-brew\-the\-wine\-a\-second\-time;
+䣬 < the\-shiny\-colorful\-of\-the\-wine;
+聳立 < to\-tower\-above\-\(on\-top\-of\-sth\);
+䢾 < name\-of\-an\-ancient\-small\-state;
+䡃 < a\-tool\-for\-brushing\-the\-thread;
+䜲 < name\-of\-a\-village\-in\-old\-china;
+班組 < teams\-and\-groups\-\(in\-factories;
+䘓 < thick\-blood\-of\-cattle\-and\-goat;
+䓿 < a\-second\-name\-for\-lotus\-flower;
+䓹 < to\-stuff\-full\-and\-to\-gulp\-down;
+䍁 < the\-hem\-or\-border\-of\-a\-garment;
+䋴 < silk\-fabrics\-with\-mixed\-colors;
+䋳 < cloth\-or\-paper\-pasted\-together;
+伯母 < wife\-of\-father''s\-elder\-brother;
+䉤 < a\-bamboo\-ware\-for\-washing\-rice;
+䉛 < bamboo\-basket\-for\-washing\-rice;
+䉓 < mattress\-made\-of\-bamboo\-strips;
+䇬 < thin\-bamboo\-laths\-knitted\-sail;
+䇧 < to\-fill\-an\-opening\-with\-bamboo;
+䄡 < northern\-minority\-ethnic\-group;
+䃶 < rugged\-and\-uneven\-of\-the\-rocks;
+䃚 < rugged\-land\-of\-sand\-and\-pebble;
+䃂 < dull\-sound\-of\-the\-tolling\-bell;
+㼡 < a\-small\-jar\-with\-a\-small\-mouth;
+㵷 < turbulent\-flowing\-of\-the\-water;
+中藥 < \(traditional\)\-chinese\-medicine;
+語音通訊通道 < voice\-\(communications\)\-channel;
+㲹 < the\-dry\-soil\-on\-the\-river\-side;
+㲝 < fine\-hair\-of\-birds\-and\-animals;
+㯅 < the\-branches\-growing\-downwards;
+㮂 < an\-appliance\-used\-to\-lift\-food;
+㬤 < wet\-clothes\-not\-completely\-dry;
+㪾 < to\-cut\-the\-flesh\-from\-the\-bone;
+㨙 < to\-clasp\-or\-hold\-under\-the\-arm;
+㦲 < a\-particle\-expressing\-surprise;
+㥋 < sound\-of\-the\-anguish\-of\-sorrow;
+㤯 < clever\-or\-smart\-in\-a\-small\-way;
+㤔 < to\-concede\-or\-submit\-willingly;
+㣇 < a\-kind\-of\-beast\-with\-long\-hair;
+㡞 < a\-sack\-used\-to\-feed\-the\-horses;
+㠣 < a\-mountain\-in\-jiangxi\-province;
+㞯 < the\-turning\-area\-of\-a\-mountain;
+班主任 < a\-teacher\-in\-charge\-of\-a\-class;
+㜆 < commonly\-known\-as\-mother\-in\-wu;
+㙚 < red\-colored\-hard\-and\-solid\-mud;
+㘞 < yelling\-sound\-of\-towing\-a\-boat;
+㔩 < hair\-ornments\-used\-in\-old\-time;
+㔀 < to\-brand\-criminals\-on\-the\-face;
+暗袋 < camera\-bag\-\(for\-changing\-film\);
+可選擇丟棄 < discard\-eligible\-\(frame\-relay\);
+處決 < execute\-\(a\-condemned\-criminal\);
+應有盡有 < everything\-\(one\-could\-imagine\);
+新鮮 < fresh\-\(experience\,\-food\,\-etc\.\);
+導航員 < navigator\-\(on\-a\-plane\-or\-boat\);
+叫聲 < yelling\-\(sound\-made\-by\-person\);
+班師 < withdraw\-troops\-from\-the\-front;
+哀悼 < grieve\-\(mourn\)\-over\-sb''s\-death;
+科恩 < cohen\-\(u\.s\.\-defence\-secretary\);
+敗陣 < be\-defeated\-on\-the\-battlefield;
+眾議院 < house\-of\-representatives\-\(usa\);
+包賠 < guarantee\-to\-pay\-compensations;
+名次 < position\-in\-a\-ranking\-of\-names;
+嫂嫂 < sister\-in\-law\-\(husband''s\-side\);
+奉行 < to\-pursue\-\(a\-course\,\-a\-policy\);
+青山綠水 < verdant\-hills\-and\-green\-waters;
+呼喚 < call\-out\-\(someone''s\-name\,\-etc\);
+𠀁 < the\-original\-form\-for\-七\-u\+4e03;
+𠀀 < the\-sound\-made\-by\-breathing\-in;
+虹橋機場 < hongqiao\-airport\-\(in\-shanghai\);
+統一招生 < national\-unified\-entrance\-exam;
+示威 < hold\-a\-\(protest\)\-demonstration;
+東部時間 < \(u\.s\.\)\-eastern\-\(standard\)\-time;
+當事人 < persons\-involved\-or\-implicated;
+時大時小 < sometimes\-big\,\-sometimes\-small;
+常規銅電話線 < ordinary\-copper\-telephone\-line;
+迦 < character\-for\-transliteration;
+庵 < buddhist\-monastery\-or\-nunnery;
+庚 < seventh\-of\-ten\-cyclical\-stems;
+趣 < what\-attracts\-one''s\-attention;
+畔 < boundary\-path\-dividing\-fields;
+夾 < be\-wedged\-or\-inserted\-between;
+辆 < numerary\-adjunct\-for\-vehicles;
+怔 < a\-disease\-resembling\-neurosis;
+陌 < foot\-path\-between\-rice\-fields;
+骆 < a\-white\-horse\-with\-black\-mane;
+楣 < crossbeam\-above\-or\-under\-gate;
+璧 < piece\-of\-jade\-with\-hole\-in\-it;
+膻 < rank\-odor\-\(of\-sheep\-or\-goats\);
+玑 < pearl\-that\-is\-not\-quite\-round;
+唢 < flute\-like\-musical\-instrument;
+楂 < a\-raft\.\-to\-hew\.\-to\-fell\-trees;
+犒 < entertain\-victorious\-soldiers;
+矍 < look\-about\-in\-fright\-or\-alarm;
+擤 < to\-blow\-the\-nose\-with\-fingers;
+芡 < plant\-allied\-to\-the\-waterlily;
+籼 < non\-glutinous\-long\-grain\-rice;
+桡 < bent\-or\-twisted\-piece\-of\-wood;
+黻 < special\-pattern\-of\-embroidery;
+嵝 < goulou\-mountain\-peak\-in\-hunan;
+垭 < character\-used\-in\-place\-names;
+硖 < \<arch\>\-town\-in\-hebei\-province;
+邡 < name\-of\-a\-district\-in\-sichuan;
+讠 < simplified\-kangxi\-radical\-149;
+噻 < character\-used\-in\-translation;
+疬 < scrofulous\-lumps\-or\-swellings;
+蔟 < frame\-on\-which\-silkworms\-spin;
+垧 < variable\-unit\-of\-land\-measure;
+鬏 < a\-coiffure\-on\-top\-of\-the\-head;
+筘 < \(a\-measure\-of\-width\-of\-cloth\);
+缑 < cord\-binding\-on\-hilt\-of\-sword;
+簖 < bamboo\-trap\-for\-catching\-fish;
+庋 < a\-cupboard\-or\-pantry\-to\-store;
+甍 < rafters\-supporting\-roof\-tiles;
+吃刀 < penetration\-of\-a\-cutting\-tool;
+各位 < everybody\-\(a\-term\-of\-address\);
+韓圓 < korean\-won\-\(unit\-of\-currency\);
+不辭而別 < leave\-without\-saying\-good\-bye;
+百聽不厭 < worth\-hearing\-a\-hundred\-times;
+低階語言 < low\-level\-\(computer\)\-language;
+不足為訓 < not\-to\-be\-taken\-as\-an\-example;
+報社 < general\-office\-of\-a\-newspaper;
+發跡 < to\-rise\-to\-power\-and\-position;
+支援 < provide\-assistance\-or\-backing;
+觀測 < \(scientific\,\-etc\)\-observation;
+違心 < against\-ones\-will\-or\-feelings;
+駹 < black\-horse\-with\-a\-white\-face;
+饎 < wine\-and\-food\-eaten\-with\-wine;
+同步數位階層 < synchronous\-digital\-hierarchy;
+拼音 < pinyin\-\(chinese\-romanization\);
+大吹大擂 < make\-an\-exhibition\-of\-oneself;
+釄 < wine\-brew\-for\-the\-second\-time;
+釁 < smear\-with\-blood\-in\-sacrifice;
+境外 < outside\-\(a\-country''s\)\-borders;
+上海戲劇學院 < shanghai\-theatrical\-institute;
+迧 < a\-chinese\-family\-name\-arrange;
+轘 < tear\-asunder\-between\-chariots;
+輙 < sides\-of\-chariot\-were\-weapons;
+拌面 < noodles\-served\-with\-soy\-sauce;
+直接 < direct\-\(opposite\-of\-indirect\);
+詀 < garrulous\-to\-whisper\.\-to\-joke;
+訹 < to\-beguile\-with\-false\-stories;
+藊 < a\-kind\-of\-bean\-with\-flat\-pods;
+安之若素 < bear\-hardship\-with\-equanimity;
+舠 < long\-narrow\-knife\-shaped\-boat;
+鏡頭 < camera\-shot\-\(in\-a\-movie\,\-etc\);
+翣 < feathers\-used\-decorate\-coffin;
+莫不 < there\-is\-no\-one\-\(who\-doesn''t\);
+送人 < to\-see\-\(or\-walk\)\-someone\-home;
+白文 < the\-text\-of\-an\-annotated\-book;
+縓 < orange\-or\-reddish\-yellow\-silk;
+西哈努克 < \(king\)\-sihanouk\-\(of\-cambodia\);
+將領 < high\-ranking\-military\-officer;
+殺人案件 < \(case\-of\,\-incident\-of\)\-murder;
+糏 < rice\-grits\-left\-after\-hulling;
+篘 < a\-utensil\-used\-to\-filter\-wine;
+紅綠燈 < \(red\-and\-green\)\-traffic\-light;
+掌權 < wield\-\(political\,\-etc\.\)\-power;
+促進 < to\-promote\-\(an\-idea\-or\-cause\);
+矰 < arrow\-with\-attached\-silk\-cord;
+公安 < \(ministry\-of\)\-public\-security;
+玃 < a\-large\-ape\-found\-in\-w\.\-china;
+猇 < the\-scream\-or\-roar\-of\-a\-tiger;
+牸 < the\-female\-of\-certain\-animals;
+背道而馳 < run\-in\-the\-opposite\-direction;
+滙 < waters\-converging\-to\-one\-spot;
+傳輸控制協定 < transmission\-control\-protocol;
+病根 < an\-incompletely\-cured\-illness;
+補報 < make\-a\-report\-after\-the\-event;
+重複節 < repeated\-segment\-\(networking\);
+椊 < to\-fit\-a\-handle\-into\-a\-socket;
+不名一文 < without\-a\-penny\-to\-one''s\-name;
+不無小補 < not\-be\-without\-some\-advantage;
+對臺 < \(policy\,\-etc\.\)\-towards\-taiwan;
+板鼓 < a\-small\-drum\-for\-marking\-time;
+暐 < the\-bright\-shining\-of\-the\-sun;
+昳 < the\-declining\-sun\-in\-the\-west;
+特別行政區 < special\-administrative\-region;
+贅述 < to\-say\-more\-than\-is\-necessary;
+捬 < press\-down\-heavily\-with\-hands;
+抔 < take\-or\-hold\-up\-in\-both\-hands;
+實肘 < full\-arm\-\(method\-of\-painting\);
+淘金 < panning\-\(for\-precious\-metals\);
+崾 < place\-name\-in\-shanxi\-province;
+峫 < mountain\-in\-shandong\-province;
+姅 < woman\-at\-time\-of\-menstruation;
+壼 < palace\-corridor\-or\-passageway;
+壍 < moat\-around\-a\-city\.\-a\-channel;
+加強管制 < to\-tighten\-control\-\(over\-sth\);
+啩 < particle\-implying\-probability;
+叐 < to\-prick\-a\-dog\-to\-make\-him\-go;
+卐 < swastika\-fourth\-of\-auspicious;
+戈爾 < \(al\)\-gore\-\(us\-vice\-president\);
+䶕 < irregular\-and\-prominent\-teeth;
+䵘 < dosen''t\-t\-stick\-to\-each\-other;
+䲵 < a\-general\-name\-of\-small\-birds;
+亂說 < to\-make\-irresponsible\-remarks;
+䯆 < small\-and\-thin\-piece\-of\-bones;
+人民日報 < renmin\-ribao\-\(people''s\-daily\);
+䫲 < thin\-and\-sickly\-in\-appearance;
+䫤 < between\-the\-eyebrows\-and\-eyes;
+䫡 < a\-long\-shape\-of\-head\-and\-face;
+䫋 < female\-attendants\-or\-servants;
+開始以前 < before\-the\-beginning\-\(of\-sth\);
+䧐 < a\-mountain\-in\-shanxi\-province;
+䥣 < an\-instrument\-for\-boring\-wood;
+䥉 < the\-curved\-iron\-part\-of\-a\-hoe;
+䤒 < wine\-made\-from\-glutinous\-rice;
+䤍 < rotten\-paste\-or\-soybean\-sauce;
+不識大體 < fail\-to\-see\-the\-larger\-issues;
+䠽 < height\-or\-stature\-of\-a\-person;
+䠱 < to\-walk\-slowly\-and\-cautiously;
+䟧 < sound\-of\-treading\-or\-stepping;
+䞇 < gifts\-to\-superiors\-or\-friends;
+䝽 < name\-of\-a\-person\-in\-old\-china;
+兵工廠 < munitions\-or\-ordnance\-factory;
+䝙 < a\-kind\-of\-animal\-like\-a\-tiger;
+䜈 < to\-speak\-on\-behalf\-of\-another;
+䘳 < a\-garment\-of\-single\-thickness;
+䏼 < what\-is\-left\-over\-of\-the\-food;
+不打自招 < confess\-without\-being\-pressed;
+䎢 < to\-measure\-by\-pints\-and\-pecks;
+䎑 < flying\-over\-the\-water\-surface;
+䍮 < young\-goat\-under\-one\-year\-old;
+䍂 < tools\-to\-draw\-water\-or\-liquid;
+䌿 < the\-breadth\-of\-cloth\-or\-paper;
+䌗 < the\-left\-over\-of\-drawing\-silk;
+䌈 < to\-get\-something\-with\-a\-lasso;
+一舉兩得 < kill\-two\-birds\-with\-one\-stone;
+不軌 < against\-the\-law\-or\-discipline;
+䉥 < a\-small\-basket\-for\-chopsticks;
+半身像 < half\-length\-photo\-or\-portrait;
+䆺 < whirling\-of\-the\-flowing\-water;
+䅢 < mature\-or\-ripen\-of\-the\-grains;
+保商 < preservation\-of\-soil\-moisture;
+㿶 < the\-sides\-of\-a\-shoe\-or\-gutter;
+㽰 < carved\-window\-frame\-on\-a\-door;
+作戰 < conduct\-\(military\-operations\);
+㹂 < untamed\-and\-indocility\-cattle;
+㴄 < the\-water\-flowing\-in\-a\-turned;
+世行 < \[abbreviation\-for\]\-world\-bank;
+㰉 < the\-hazel\-nut\-or\-filbert\-tree;
+中華 < china\-\(alternate\-formal\-name\);
+㭟 < torture\-used\-in\-ancient\-times;
+㫐 < distant\-and\-indistinguishable;
+㡻 < name\-of\-a\-small\-ancient\-state;
+侵入 < to\-make\-\(military\)\-incursions;
+球檯 < table\-\(for\-games\-using\-balls\);
+㛐 < wife\-of\-one''s\-elder''s\-brother;
+㚆 < to\-do\-something\-in\-an\-old\-way;
+㖟 < to\-deliver\-over\-to\-personally;
+下臺 < step\-down\-\(from\-office\,\-etc\.\);
+貪污 < \(political\,\-moral\)\-corruption;
+中級 < middle\-level\-\(in\-a\-hierarchy\);
+有的 < \(there\-are\)\-some\-\(who\-are\.\.\.\);
+蓋飯 < rice\-with\-meat\-and\-vegitables;
+不速之客 < uninvited\-or\-unexpected\-guest;
+下班 < to\-come\-or\-go\-or\-get\-off\-work;
+發電量 < \(generated\)\-electrical\-energy;
+不得要領 < fail\-to\-grasp\-the\-main\-points;
+包銷 < have\-exclusive\-selling\-rights;
+進行調查 < to\-carry\-out\-an\-investigation;
+讓球 < to\-concede\-points\-\(in\-a\-game\);
+書房 < study\-\(i\.e\.\-the\-kind\-of\-room\);
+通用資源識別號 < universal\-resource\-identifier;
+認識 < be\-acquainted\-with\-\(a\-person\);
+卻病 < to\-prevent\-or\-treat\-a\-disease;
+遲遲 < \(be\)\-late\-\(with\-a\-task\,\-etc\.\);
+大街小巷 < large\-streets\-and\-small\-lanes;
+𠀅 < an\-alternate\-form\-of\-u\+4ea5\-亥;
+德班 < durban\-\(city\-in\-south\-africa\);
+保安族 < the\-baoan\-\(paoan\)\-nationality;
+擺輪 < balance\-\(of\-a\-watch\-or\-clock\);
+擺設 < furnish\-and\-decorate\-\(a\-room\);
+江澤民 < jiang\-zemin\-\(chinese\-premier\);
+熱線 < hotline\-\(communications\-link\);
+法制 < legal\-system\-and\-institutions;
+件 < numerary\-adjunct\-for\-article;
+吗 < final\-interrogative\-particle;
+麽 < interrogative\-final\-particle;
+矣 < particle\-of\-completed\-action;
+乒 < used\-with\-pong\-for\-ping\-pong;
+乓 < used\-with\-ping\-for\-ping\-pong;
+咚 < used\-as\-description\-of\-sound;
+琅 < a\-variety\-of\-white\-carnelian;
+孰 < who\?\-which\?\-what\?\-which\-one\?;
+戊 < fifth\-of\-ten\-celestial\-stems;
+渲 < add\-repeated\-washes\-of\-color;
+咫 < foot\-measure\-of\-zhou\-dynasty;
+饷 < rations\-and\-pay\-for\-soldiers;
+汶 < a\-river\-in\-shandong\-province;
+叁 < bank\-form\-of\-numeral\-''three'';
+壬 < ninth\-of\-ten\-celestial\-stems;
+柩 < coffin\-which\-contains\-corpse;
+桠 < the\-forking\-branch\-of\-a\-tree;
+甏 < a\-squat\-jar\-for\-holding\-wine;
+笞 < bamboo\-rod\-used\-for\-beatings;
+阗 < a\-place\-in\-xinjiang\-province;
+铉 < device\-for\-carrying\-a\-tripod;
+觥 < a\-cup\-made\-of\-horn\-obstinate;
+裣 < draw\-one''s\-hands\-into\-sleeve;
+崃 < mountain\-in\-sichuan\-province;
+罘 < screen\-used\-in\-ancient\-times;
+氇 < thick\-rough\-serge\-from\-tibet;
+埴 < soil\-with\-large\-clay\-content;
+昴 < one\-of\-the\-28\-constellations;
+菹 < salted\-or\-pickled\-vegetables;
+各大軍區 < \"the\-greater\-military\-areas\";
+水平 < level\-\(of\-achievement\,\-etc\.\);
+夫權 < authority\-over\-the\-household;
+印尼 < \(abbreviation\-for\)\-indonesia;
+變價 < appraise\-at\-the\-current\-rate;
+年夜飯 < new\-year''s\-eve\-family\-dinner;
+妹夫 < brother\-in\-law\-\(wife''s\-side\);
+進而 < and\-then\-\(what\-follows\-next\);
+李登輝 < lee\-teng\-hui\-\(taiwan\-leader\);
+陣線 < a\-front\-\(ie\,\-militant\-group\);
+呼籲美國 < to\-call\-on\-the\-united\-states;
+傳統中國醫藥 < chinese\-traditional\-medicine;
+歲月 < the\-years\-of\-a\-person''s\-life;
+豐衣足食 < have\-ample\-food\-and\-clothing;
+不知好歹 < not\-know\-what''s\-good\-for\-one;
+歸屬 < be\-under\-the\-jurisdiction\-of;
+在野 < be\-out\-of\-\(political\)\-office;
+廠房 < a\-building\-used\-as\-a\-factory;
+判決 < judgment\-\(by\-a\-court\-of\-law\);
+困難 < \(financial\,\-etc\.\)\-difficulty;
+鵭 < a\-small\-bird\-with\-black\-neck;
+大自然 < nature\-\(as\-in\-mother\-nature\);
+網管接口 < network\-management\-interface;
+隒 < the\-appearance\-of\-a\-mountain;
+掛號 < to\-register\-\(a\-letter\,\-etc\.\);
+補苗 < fill\-the\-gaps\-with\-seedlings;
+根據上表 < according\-to\-the\-above\-table;
+武力 < \(make\-use\-of\)\-military\-force;
+放假 < to\-have\-a\-holidy\-or\-vacation;
+醁 < a\-kind\-of\-green\-colored\-wine;
+舉重 < \(the\-sport\-of\)\-weightlifting;
+邿 < a\-state\-in\-shandong\-province;
+轖 < framework\-of\-lattice\-on\-cart;
+嚴詞 < \(criticize\,\-etc\.\)\-forcefully;
+觵 < a\-cup\-made\-of\-corn\-obstinate;
+華盛頓時報 < washington\-times\-\(newspaper\);
+境內 < within\-\(a\-country''s\)\-borders;
+華人 < ethnic\-chinese\-person\|people;
+橋本 < \(japanese\-surname\)\-hashimoto;
+地皮 < lot\,\-section\-of\-land\,\-ground;
+立方米 < cubic\-meter\-\(unit\-of\-volume\);
+轉機 < \(take\-a\)\-turn\-for\-the\-better;
+固定虛擬連接 < permanent\-virtual\-connection;
+常委 < member\-of\-standing\-committee;
+吃不消 < be\-unable\-to\-stand\-\(exertion;
+投票站 < polling\-station\-\(for\-a\-vote\);
+耇 < wrinkled\-face\-of\-the\-elderly;
+羴 < rank\-odour\-of\-sheep\-or\-goats;
+得票率 < percentage\-of\-votes\-obtained;
+絃 < string\-on\-musical\-instrument;
+國防利益 < \(national\)\-defence\-interests;
+開放系統互連 < open\-systems\-interconnection;
+筻 < place\-name\-in\-hunan\-province;
+竚 < stand\-and\-wait\-for\-long\-time;
+起飛 < to\-take\-off\-\(in\-an\-airplane\);
+開幕 < to\-open\-\(a\-conference\,\-e\.g\.\);
+打針 < to\-give\-or\-have\-an\-injection;
+睙 < to\-roll\-the\-eyeballs\-to\-look;
+瑂 < \(stone\-which\-resembles\-jade\);
+本末倒置 < take\-the\-branch\-for\-the\-root;
+燺 < the\-dry\-at\-the\-fire\-to\-roast;
+瀔 < river\-name\-in\-henan\-province;
+抱頭痛哭 < cry\-on\-each\-other''s\-shoulder;
+汧 < name\-of\-a\-river\-in\-shangdong;
+璧謝 < decline\-\(a\-gift\)\-with\-thanks;
+橵 < wood\-placed\-under\-roof\-tiles;
+對華 < \(policy\,\-etc\.\)\-towards\-china;
+不一而足 < by\-no\-means\-an\-isolated\-case;
+曈 < twilight\-just\-before\-sunrise;
+旟 < an\-military\-flag\-oa\-standard;
+儀器 < \(scientific\,\-etc\)\-instrument;
+原子科學家通報 < journal\-of\-atomic\-scientists;
+究辦 < to\-investigate\-and\-deal\-with;
+吃不住 < be\-unable\-to\-bear\-or\-support;
+扨 < pick\-up\-with\-fork\-or\-pincers;
+幰 < curtain\-at\-front\-of\-carriage;
+娀 < name\-of\-a\-concubine\-of\-di\-ku;
+白紙黑字 < \(written\)\-in\-black\-and\-white;
+埄 < whirling\-of\-dust\-in\-the\-wind;
+定罪 < convict\-\(someone\-of\-a\-crime\);
+本題 < the\-subject\-under\-discussion;
+背簍 < a\-basket\-carried\-on\-the\-back;
+北京藝術學院 < beijing\-academy\-of\-fine\-arts;
+不碎玻璃 < shatterproof\-or\-safety\-glass;
+有關 < to\-have\-something\-to\-do\-with;
+來源 < source\-\(of\-information\,\-etc\);
+䵠 < rushes\-used\-form\-making\-mats;
+䳍 < a\-kind\-of\-pheasant\-like\-bird;
+獲釋 < obtain\-release\-\(from\-prison\);
+䱱 < a\-kind\-of\-slippery\-long\-fish;
+䮇 < black\-horse\-with\-white\-thigh;
+對日 < \(policy\,\-etc\.\)\-towards\-japan;
+䬠 < the\-falling\-of\-snow\-and\-rain;
+䪭 < a\-kind\-of\-musical\-instrument;
+䪉 < metal\-decoration\-on\-a\-halter;
+䩡 < a\-kind\-of\-boots\-in\-old\-times;
+莫衷一是 < cannot\-decide\-which\-is\-right;
+䦜 < name\-of\-a\-state\-in\-old\-times;
+䥺 < name\-of\-a\-double\-edged\-sword;
+䥕 < the\-blade\-or\-edge\-of\-a\-spade;
+䤉 < emptied\-the\-drink\-completely;
+䣡 < name\-of\-a\-place\-in\-old\-times;
+䡑 < the\-rim\-or\-felloe\-of\-a\-wheel;
+䠴 < with\-a\-symmetric\-well\-formed;
+䝵 < to\-thank\-with\-money\-or\-gifts;
+䙗 < a\-swaddling\-cloth\-for\-infant;
+䘻 < curtain\-on\-a\-carriage\-or\-car;
+䘺 < a\-seam\-which\-has\-come\-unsewn;
+䘵 < hissing\-sound\-of\-the\-clothes;
+䔛 < fibrous\-plant\-of\-which\-cloth;
+䑹 < a\-numerary\-adjunct\-for\-ships;
+䍠 < turban\-used\-in\-ancient\-times;
+䌋 < a\-herchief\-hung\-at\-the\-waist;
+䋩 < pretty\-and\-fine\-silk\-fabrics;
+䋏 < thick\-and\-big\-ropes\-or\-cords;
+䋋 < a\-kind\-of\-spring\-fishing\-net;
+八國聯軍 < the\-eight\-power\-allied\-force;
+䆶 < noise\-of\-a\-mouse\-in\-the\-cave;
+䅳 < stalk\-of\-the\-panicled\-millet;
+䅭 < a\-variety\-of\-panicled\-millet;
+䅌 < stalk\-of\-wheat\-or\-rice\-plant;
+䃋 < a\-fine\-stone\-resembling\-jade;
+䂵 < sound\-of\-bumping\-or\-striking;
+䂫 < noise\-of\-stones\-rolling\-down;
+䀳 < not\-to\-look\-straight\-forward;
+㾴 < the\-erythema\-of\-acne\-rosacea;
+多年以來 < for\-many\-years\-\(in\-the\-past\);
+㹥 < a\-yellow\-dog\-with\-black\-head;
+㹁 < generally\-called\-the\-animals;
+㵵 < swift\-currents\-of\-the\-stream;
+㵎 < a\-mountain\-stream\-or\-torrent;
+㴚 < the\-small\-ditch\-in\-the\-field;
+知識產權 < intellectual\-property\-rights;
+憋氣 < feel\-suffocated\-or\-oppressed;
+㰆 < an\-instrument\-to\-blow\-a\-fire;
+㰁 < a\-tree\-with\-slanted\-branches;
+㯳 < a\-kind\-of\-tool\-to\-adjust\-bow;
+㥜 < unsuccessful\-in\-one''s\-career;
+㡱 < to\-cauterize\-by\-burning\-moxa;
+㠱 < to\-set\-with\-the\-legs\-clossed;
+㜌 < a\-different\-name\-for\-breasts;
+㙾 < hills\-with\-lots\-of\-big\-rocks;
+㙛 < a\-person''s\-name\-in\-old\-times;
+㗾 < to\-give\-vent\-to\-the\-feelings;
+㗆 < sound\-of\-the\-ringed\-pheasant;
+㓳 < use\-knife\-to\-split\-something;
+㑟 < insincere\-and\-cunning\-person;
+自治區 < autonomous\-region\-\(in\-china\);
+同胞 < fellow\-citizen\-or\-countryman;
+匾額 < a\-horizontal\-inscribed\-board;
+廣播和未知服務器 < broadcast\-and\-unknown\-server;
+確診 < to\-make\-a\-definite\-diagnosis;
+張純如 < \(american\-author\)\-iris\-chang;
+它們 < they\-\(for\-inanimate\-objects\);
+現場 < scene\-\(of\-event\-or\-incident\);
+愛情 < love\-\(between\-man\-and\-woman\);
+變節 < make\-a\-political\-recantation;
+誓死不降 < to\-vow\-to\-fight\-to\-the\-death;
+沒有必要 < there\-is\-no\-need\-to\-\(do\-sth\);
+涉嫌 < to\-be\-a\-suspect\-\(in\-a\-crime\);
+班務會 < a\-routine\-meeting\-of\-a\-squad;
+新德裡 < new\-delhi\-\(capital\-of\-india\);
+反對黨 < opposition\-\(political\)\-party;
+失足 < to\-take\-a\-wrong\-step\-in\-life;
+中文廣播 < chinese\-\(language\)\-broadcast;
+移殖手術 < \(organ\)\-transplant\-operation;
+犧牲 < sacrifice\-\(one''s\-life\,\-etc\.\);
+亞伯 < abe\-\(short\-form\-for\-abraham\);
+猜忌 < be\-suspicious\-and\-jealous\-of;
+黨內 < within\-the\-\(communist\)\-party;
+說明書 < synopsis\-\(of\-a\-play\-or\-film\);
+動蕩 < \(social\-or\-political\)\-unrest;
+王丹 < wang\-dan\-\(chinese\-dissident\);
+叛亂罪 < the\-crime\-of\-armed\-rebellion;
+浪子回頭 < the\-return\-of\-a\-prodigal\-son;
+差得多 < fall\-short\-by\-a\-large\-amount;
+不急之務 < a\-matter\-of\-no\-great\-urgency;
+電磁干擾 < electromagnetic\-interference;
+台灣話 < taiwanese\-chinese\-\(language\);
+啦 < final\-particle\-of\-assertion;
+综 < arrange\-threads\-for\-weaving;
+拭 < wipe\-away\-stains\-with\-cloth;
+叮 < exhort\-or\-enjoin\-repeatedly;
+戟 < halberd\-with\-crescent\-blade;
+凛 < to\-shiver\-with\-cold\-or\-fear;
+栋 < main\-beams\-supporting\-house;
+髦 < flowing\-hair\-of\-young\-child;
+筝 < stringed\-musical\-instrument;
+丙 < third\-of\-the\-heavenly\-stems;
+沂 < river\-in\-southeast\-shandong;
+笈 < bamboo\-box\-used\-carry\-books;
+瓢 < ladle\-made\-from\-dried\-gourd;
+簧 < reed\-of\-woodwind\-instrument;
+蛟 < scaly\-dragon\-with\-four\-legs;
+敕 < an\-imperial\-order\-or\-decree;
+裟 < a\-cassock\-or\-robe\-of\-a\-monk;
+碴 < chipped\-edge\-of\-a\-container;
+瘴 < malaria\-pestilential\-vapors;
+纶 < green\-silk\-thread\-or\-tassel;
+罡 < the\-name\-of\-a\-certain\-stars;
+癸 < last\-of\-ten\-celestial\-stems;
+橇 < a\-sledge\-for\-transportation;
+皋 < the\-high\-land\-along\-a\-river;
+潍 < county\-in\-shandong\-province;
+洙 < name\-of\-a\-river\-in\-shandong;
+獠 < to\-hunt\-at\-night\-by\-torches;
+麒 < legendary\-auspicious\-animal;
+珩 < the\-top\-gem\-of\-the\-pendants;
+谥 < to\-confer\-posthumous\-titles;
+秫 < glutinous\-variety\-of\-millet;
+竽 < ancient\-woodwind\-instrument;
+崮 < \(element\-in\-mountain\-names\);
+愀 < to\-change\-one''s\-countenance;
+鄢 < name\-of\-a\-district\-in\-honan;
+癍 < unhealthy\-marks\-on\-the\-skin;
+鄞 < county\-in\-zhejiang\-province;
+雒 < black\-horse\-with\-white\-mane;
+旒 < fringes\-of\-pearls\-on\-crowns;
+琊 < a\-place\-in\-eastern\-shandong;
+蚨 < a\-kind\-of\-water\-beetle\-cash;
+毳 < fine\-hair\-or\-fur\-on\-animals;
+瘥 < to\-recover\-from\-any\-disease;
+浈 < river\-in\-guangdong\-province;
+嘧 < \(phonetic\)\-as\-in\-pyrimidine;
+不易之論 < perfectly\-sound\-proposition;
+似乎很安全 < to\-appear\-\(to\-be\)\-very\-safe;
+決定 < to\-decide\-\(to\-do\-something\);
+姊妹 < \(older\-and\-younger\)\-sisters;
+逼肖 < bear\-a\-close\-resemblance\-to;
+葉利欽 < \(russian\-president\)\-yeltsin;
+復審 < reexamine\-\(a\-judicial\-case\);
+入門 < introduction\-\(to\-a\-subject\);
+白露 < white\-dew\-\(15th\-solar\-term\);
+各種各樣 < various\-sorts\-and\-varieties;
+補體 < complement\-\(in\-blood\-serum\);
+評比 < to\-evaluate\-\(by\-comparison\);
+不違農時 < not\-miss\-the\-farming\-season;
+黃浦江 < huangpu\-river\-\(in\-shanghai\);
+轉身 < \(of\-a\-person\)\-to\-turn\-round;
+爪哇 < java\-\(programming\-language\);
+效忠 < vow\-loyalty\-and\-devotion\-to;
+亂作決定 < to\-make\-arbitrary\-decisions;
+採辦 < buy\-on\-a\-considerable\-scale;
+弟妹 < sister\-in\-law\-\(wife''s\-side\);
+陷於 < caught\-in\-\(a\-bad\-situation\);
+鵾 < a\-bird\-resembling\-the\-crane;
+外匯 < foreign\-\(currency\)\-exchange;
+大器晚成 < grand\-talents\-mature\-slowly;
+摘由 < high\-points\-\(of\-a\-document\);
+鮨 < epinephelus\-septemfasciatus;
+飦 < well\-boiled\-congee\-or\-gruel;
+雊 < the\-crow\-of\-a\-male\-pheasant;
+隺 < a\-bird\-flying\-high\-ambition;
+背包袱 < have\-a\-weight\-on\-one''s\-mind;
+按步就班 < follow\-the\-prescribed\-order;
+外交部長 < minister\-of\-foreign\-affairs;
+醱 < to\-brew\-for\-the\-second\-time;
+酖 < wine\-with\-bird\-poison\-added;
+百尺杆頭更盡一步 < make\-still\-further\-progress;
+鄿 < county\-in\-xinjiang\-province;
+鄍 < a\-town\-in\-shandong\-province;
+蹚 < tread\-through\-mud\-and\-water;
+中央情報局 < central\-intelligence\-agency;
+側躺 < to\-lie\-down\-\(on\-one''s\-side\);
+報戶口 < apply\-for\-a\-resident\-permit;
+褘 < ceremonial\-gowns\-of\-a\-queen;
+蟰 < small\-spider\-with\-long\-legs;
+蛕 < the\-common\-intestinal\-worms;
+服務提供商 < \(internet\)\-service\-provider;
+搜捕 < hunt\-and\-arrest\-\(fugitives\);
+揹書 < recite\-a\-lesson\-from\-memory;
+幸免 < narrowly\-and\-luckily\-escape;
+不登大雅之堂 < not\-appeal\-to\-refined\-taste;
+肷 < area\-between\-waist\-and\-hips;
+舉世矚目 < attract\-worldwide\-attention;
+獨斷專行 < act\-in\-an\-arbitrary\-fashion;
+籄 < a\-basket\-for\-carrying\-earth;
+國際級 < \(at\-an\)\-international\-level;
+筎 < thin\-outside\-skin\-of\-bamboo;
+瞤 < to\-blink\-or\-twitch\-the\-eyes;
+管理信息庫 < management\-information\-base;
+華盛頓郵報 < washington\-post\-\(newspaper\);
+國標 < guobiao\-\(encoding\-standard\);
+便血 < having\-blood\-in\-one''s\-stool;
+淠 < luxuriant\-\(of\-water\-plants\);
+浰 < attend\-\(official\-functions\);
+病機 < interpretation\-of\-the\-cause;
+泑 < the\-vitreous\-glaze\-on\-china;
+殨 < to\-open\-as\-an\-ulcer\-or\-sore;
+才華 < literary\-or\-artistic\-talent;
+指法 < finger\-method\-\(in\-painting\);
+寶藏 < precious\-\(mineral\)\-deposits;
+提前 < to\-shift\-to\-an\-earlier\-date;
+輩出 < come\-forth\-in\-large\-numbers;
+枏 < a\-variety\-of\-evergreen\-tree;
+板鴨 < pressed\-\(dried\)\-salted\-duck;
+拔海 < elevation\-\(above\-sea\-level\);
+願意不願意 < whether\-one\-wants\-to\-or\-not;
+吃不來 < not\-be\-fond\-of\-certain\-food;
+搇 < to\-press\-down\-with\-the\-hand;
+據報導 < according\-to\-\(news\)\-reports;
+超文件傳輸協定 < hypertext\-transfer\-protocol;
+弸 < a\-bow\-stretched\-to\-the\-full;
+巠 < streams\-running\-underground;
+崙 < kunlun\-mountains\-in\-jiangsu;
+倫敦 < london\-\(capital\-of\-england\);
+堳 < land\-allotment\-feudal\-noble;
+北京語言學院 < beijing\-languages\-institute;
+噕 < to\-speak\-falsely\-or\-wrongly;
+條款 < clause\-\(of\-contract\-or\-law\);
+病例 < \[medical\]\-case\-\[of\-illness\];
+器官 < organ\-\(part\-of\-body\-tissue\);
+丩 < to\-join\-or\-connect\-the\-vine;
+丒 < the\-period\-from\-1\-to\-3\-a\.m\.;
+䵅 < to\-extract\-by\-applying\-heat;
+䴳 < distiller''s\-grains\-or\-yeast;
+䳞 < birds\-flying\-all\-directions;
+䳊 < a\-wild\-duck\-like\-water\-bird;
+䳃 < a\-kind\-of\-phoenix\-like\-bird;
+䪷 < to\-toil\-or\-labor\-sedulously;
+䪇 < cushioned\-seat\-on\-a\-vehicle;
+䩿 < a\-big\-drum\-used\-in\-the\-army;
+䧘 < a\-low\-wall\-on\-the\-road\-side;
+䦲 < eaves\-of\-a\-ancestral\-temple;
+䤻 < heavy\-iron\-part\-of\-a\-plough;
+䣲 < to\-heat\-the\-wine\-over\-night;
+䢯 < to\-choose\-or\-select\-careful;
+䠋 < bell\-shaped\-with\-large\-base;
+䟮 < to\-crawl\-on\-hands\-and\-knees;
+䜸 < small\-pieces\-of\-bean\-stalks;
+䜇 < to\-speak\-not\-in\-a\-clear\-way;
+班級 < classes\-or\-grades\-in\-school;
+䚣 < crooked\-horns\-of\-the\-animal;
+䚜 < cattle\-with\-crosswise\-horns;
+䙣 < ragged\-garments\-or\-clothing;
+䙕 < clothes\-that\-have\-no\-lining;
+䙔 < clothes\-made\-of\-poor\-fabric;
+䙓 < the\-lower\-part\-of\-a\-garment;
+䘥 < the\-front\-of\-a\-chinese\-gown;
+䘁 < a\-blue\-green\-colored\-cicada;
+䗵 < a\-disease\-attacked\-silkworm;
+䕮 < flower\-of\-the\-chrysanthemum;
+䔥 < common\-variety\-of\-artemisia;
+䔟 < shake\-and\-wave\-of\-the\-grass;
+病毒學 < virology\-\(study\-of\-viruses\);
+䐼 < thin\-membrane\-of\-the\-throat;
+䐯 < ugly\-appearance\-of\-a\-person;
+䐑 < thin\-cut\-of\-the\-sliced\-meat;
+䍺 < a\-legendary\-goat\-like\-beast;
+䌼 < a\-kind\-of\-fine\-silk\-fabrics;
+䌄 < a\-rope\-for\-drawing\-up\-water;
+私人鑰匙 < private\-key\-\(in\-encryption\);
+䊞 < to\-roll\-round\-with\-the\-hand;
+䉺 < deteriorated\-and\-become\-red;
+䉹 < name\-of\-a\-variety\-of\-bamboo;
+䉸 < slips\-of\-bamboo\-for\-writing;
+䈲 < a\-bamboo\-basket\-for\-fishing;
+䇺 < beans\-and\-peas\-collectively;
+䇵 < one\-of\-the\-wind\-instruments;
+憲法 < constitution\-\(of\-a\-country\);
+䅪 < disease\-of\-the\-private\-part;
+䄰 < forty\-bundles\-of\-rice\-plant;
+䃇 < ink\-for\-imprinting\-of\-seals;
+䀑 < to\-gouge\-out\-an\-eye\-or\-eyes;
+㽎 < the\-profundity\-of\-the\-harem;
+㼠 < a\-crock\-with\-narrow\-opening;
+㺬 < a\-large\-piece\-of\-jade\-stone;
+㺒 < barking\-of\-a\-frightened\-dog;
+不諱 < without\-concealing\-anything;
+㹖 < to\-feed\-animals\-with\-grains;
+㸒 < to\-absurd\-pursuit\-or\-desire;
+地址解析協議 < address\-resolution\-protocol;
+㮀 < tool\-to\-clear\-out\-the\-water;
+㭕 < a\-board\-for\-carrying\-things;
+㩆 < to\-be\-in\-full\-possession\-of;
+而不需 < without\-needing\-\(to\-so\-sth\);
+㧕 < to\-feel\-or\-touch\-with\-hands;
+㧂 < a\-cave\-a\-hold\-in\-the\-ground;
+㦐 < a\-straightforward\-character;
+安插 < place\-in\-a\-certain\-position;
+㥴 < do\-not\-care\-about\-something;
+交換機 < switch\-\(telecommunications\);
+駱 < white\-horse\-with\-black\-mane;
+㡵 < roof\-of\-the\-house\-connected;
+㠟 < a\-mountain\-in\-ancient\-times;
+古蹟 < places\-of\-historic\-interest;
+㛽 < to\-walk\-slowly\-like\-a\-woman;
+㛮 < wife\-of\-one''s\-elder\-brother;
+㓈 < sound\-of\-flying\-or\-speeding;
+㒫 < choked\-and\-unable\-to\-breath;
+㒖 < the\-root\-stock\-of\-the\-lotus;
+氣體 < gas\-\(ie\,\-gaseous\-substance\);
+大陸話 < mainland\-chinese\-\(language\);
+孫子 < grandson\-\(son\-of\-one''s\-son\);
+奔騰 < \(of\-waves\)\-to\-surge\-forward;
+卻之不恭 < to\-refuse\-would\-be\-impolite;
+交換器 < \(telecom\-or\-network\)\-switch;
+通訊社 < a\-news\-service\-\(eg\,\-xinhua\);
+郵電 < post\-and\-telecommunications;
+問候 < give\-someone\-one''s\-respects;
+祖父 < grandfather\-\(father''s\-side\);
+愛好者 < lover\-\(of\-art\,\-sports\,\-etc\);
+決策 < \(make\-a\)\-strategic\-decision;
+祖母 < grandmother\-\(father''s\-side\);
+國際貨幣基金組織 < international\-monetary\-fund;
+馬太福音 < gospel\-according\-to\-matthew;
+針灸 < acupuncture\-and\-moxibustion;
+電話會議 < \(telephone\)\-conference\-call;
+一旦 < in\-case\-\(something\-happens\);
+壽辰 < birthday\-\(of\-an\-old\-person\);
+不落窠臼 < not\-follow\-the\-beaten\-track;
+按照計劃 < according\-to\-\(the\)\-plan\-\.\.\.;
+公安部 < ministry\-of\-public\-security;
+抱不平 < be\-outraged\-by\-an\-injustice;
+事情要做 < thing\-that\-needs\-to\-be\-done;
+復甦 < recovery\-\(health\,\-economic\);
+時期 < a\-period\-in\-time\-or\-history;
+各地 < in\-all\-parts\-of\-\(a\-country\);
+男子漢 < man\-\(i\.e\.\-manly\,\-masculine\);
+畦 < sections\-in\-vegetable\-farm;
+町 < raised\-path\-between\-fields;
+囁 < move\-lips\-as\-when\-speaking;
+伦 < normal\-human\-relationships;
+嘛 < final\-exclamatory\-particle;
+萨 < buddhist\-gods\-or\-immortals;
+桐 < name\-applied\-various\-trees;
+蒂 < peduncle\-or\-stem\-of\-plants;
+紺 < dark\-blue\-or\-reddish\-color;
+棵 < numerary\-adjunct\-for\-trees;
+憋 < to\-suppress\-inner\-feelings;
+孜 < be\-as\-diligent\-as\-possible;
+粱 < better\-varieties\-of\-millet;
+峒 < mountain\-in\-gansu\-province;
+榨 < to\-press\-or\-extract\-juices;
+鄱 < county\-and\-lake\-in\-jiangxi;
+菠 < spinach\-and\-similar\-greens;
+淞 < name\-of\-a\-river\-in\-jiangsu;
+淄 < river\-in\-shandong\-province;
+悱 < to\-be\-desirous\-of\-speaking;
+漯 < river\-in\-northern\-shandong;
+蕙 < species\-of\-fragrant\-orchid;
+滁 < district\-in\-anhui\-province;
+狁 < a\-tribe\-of\-scythian\-nomads;
+酢 < toast\-one''s\-host\-with\-wine;
+衿 < collar\-or\-lapel\-of\-garment;
+嶝 < path\-leading\-up\-a\-mountain;
+旃 < silk\-banner\-with\-bent\-pole;
+齑 < break\-or\-smash\-into\-pieces;
+脘 < internal\-cavity\-of\-stomach;
+镒 < measure\-of\-weight\-for\-gold;
+眭 < evil\-look\-of\-deep\-set\-eyes;
+锖 < the\-color\-of\-the\-a\-mineral;
+邙 < mountain\-in\-henan\-province;
+敫 < ancient\-musical\-instrument;
+萑 < grass\-used\-for\-making\-mats;
+觯 < wine\-goblet\-made\-from\-horn;
+舣 < to\-moor\-a\-boat\-to\-the\-bank;
+碑文 < an\-inscription\-on\-a\-tablet;
+巴兒狗 < pekingese\-\(a\-breed\-of\-dog\);
+一路平安 < to\-have\-a\-pleasant\-journey;
+紐約時報 < new\-york\-times\-\(newspaper\);
+台北 < taipei\-\(capital\-of\-taiwan\);
+常問問題 < frequently\-asked\-questions;
+百孔千瘡 < riddled\-with\-gaping\-wounds;
+兵連禍結 < ravaged\-by\-successive\-wars;
+河內 < hanoi\-\(capital\-of\-vietnam\);
+量力 < to\-estimate\-one''s\-strength;
+本地管理界面 < local\-management\-interface;
+長期以來 < ever\-since\-a\-long\-time\-ago;
+存車處 < parking\-lot\-\(for\-bicycles\);
+斡旋 < mediate\-\(a\-conflict\,\-etc\.\);
+發展核武器 < to\-develop\-nuclear\-weapons;
+安家落戶 < make\-one''s\-home\-in\-a\-place;
+入木三分 < written\-in\-a\-forceful\-hand;
+牌匾 < board\-\(attached\-to\-a\-wall\);
+動手 < to\-hit\-with\-hands\-or\-fists;
+鼻牛兒 < hardened\-mucus\-in\-nostrils;
+步月 < to\-stroll\-beneath\-the\-moon;
+異步傳輸模式 < asynchronous\-transfer\-mode;
+誓師 < to\-vow\-before\-one''s\-troops;
+部委 < ministries\-and\-commissions;
+難怪 < \(it''s\)\-no\-wonder\-\(that\.\.\.\);
+凍結 < \(loan\,\-wage\,\-price\)\-freeze;
+施加 < exert\-\(effort\-or\-pressure\);
+視窗 < windows\-\(operating\-system\);
+巨著 < monumental\-\(literary\)\-work;
+分時多工 < time\-division\-multiplexing;
+募化 < to\-collect\-alms\-\(buddhism\);
+根深蒂固 < deep\-rooted\-\(problem\,\-etc\);
+叛變的省份 < renegade\-province\-\(taiwan\);
+部下 < troops\-under\-one''s\-command;
+馵 < horse\-with\-white\-back\-legs;
+飣 < display\-food\-for\-show\-only;
+星島日報 < sing\-tao\-daily\-\(newspaper\);
+闒 < upper\-story\-door\-or\-window;
+全程 < \(during\-an\)\-entire\-journey;
+長篇 < lengthy\-\(report\-or\-speech\);
+電腦輔助教材 < computer\-aided\-instruction;
+西湖 < the\-west\-lake\,\-in\-hangzhou;
+客戶機服務器環境 < client\-server\-environement;
+銁 < a\-weight\-of\-thirty\-cattics;
+醊 < to\-pour\-wine\-in\-a\-libation;
+郿 < county\-in\-shaanxi\-province;
+郳 < state\-in\-shandong\-province;
+郠 < place\-in\-shandong\-province;
+郚 < towns\-in\-shandong\-province;
+輤 < a\-pall\-to\-cover\-the\-hearse;
+撥弄 < move\-to\-and\-fro\-\(with\-hand;
+表記 < something\-given\-as\-a\-token;
+踒 < to\-slip\-and\-sprain\-a\-blimb;
+表裡 < the\-outside\-and\-the\-inside;
+覐 < a\-sleep\-to\-realize\-to\-feel;
+桃花運 < luck\-with\-the\-opposite\-sex;
+電信服務 < telecommunications\-service;
+逼債 < press\-for\-payment\-of\-debts;
+公開鑰匙 < public\-key\-\(in\-encryption\);
+虡 < support\-structure\-for\-bell;
+薾 < luxuriant\-growth\-of\-flower;
+弗塞奇 < versace\-\(fashion\-designer\);
+茈 < a\-plant\-yielding\-a\-red\-dye;
+普通話 < mandarin\-\(common\-language\);
+電信網路 < telecommunications\-network;
+膆 < the\-corp\-of\-a\-bird\-or\-fowl;
+電腦輔助工程 < computer\-aided\-engineering;
+感染人數 < number\-of\-infected\-persons;
+筆鋒 < the\-tip\-of\-a\-writing\-brush;
+報刊 < newspapers\-and\-periodicals;
+百步穿楊 < shoot\-with\-great\-precision;
+罭 < drag\-net\-made\-of\-fine\-mesh;
+罏 < earthen\-stand\-for\-wine\-jug;
+罍 < large\-earthenware\-wine\-jar;
+演講 < \(give\)\-a\-speech\-or\-lecture;
+繸 < hem\-or\-border\-of\-a\-garment;
+國父 < father\|founder\-of\-a\-nation;
+篟 < luxuriant\-growth\-of\-bamboo;
+依靠 < rely\-on\-\(for\-support\,\-etc\);
+所長 < head\-of\-an\-institute\,\-etc\.;
+窆 < to\-put\-a\-coffin\-in\-a\-grave;
+祲 < ominous\-or\-sinister\-spirit;
+幾年來 < for\-the\-past\-several\-years;
+若干 < a\-certain\-number\|amount\-of;
+癕 < loss\-of\-the\-sense\-of\-smell;
+頤和園 < summer\-palace\-\(in\-beijing\);
+競選 < run\-for\-\(electoral\)\-office;
+搶先 < to\-rush\-\(to\-do\-sth\-urgent\);
+珛 < quickly\-deteriorating\-jade;
+停留 < stay\-somewhere\-temporarily;
+澷 < water\-overflowing\-diffused;
+出現意外 < \(to\-appear\)\-unexpected\(ly\);
+毩 < a\-leather\-ball\-for\-kicking;
+病株 < diseased\-or\-infected\-plant;
+俗稱 < be\-commonly\-referred\-to\-as;
+揹 < carry\-things\-on\-one''s\-back;
+揁 < sound\-of\-setting\-up\-a\-koto;
+一觸即發 < could\-happen\-at\-any\-moment;
+行將 < be\-about\-to\-\(do\-something\);
+足球 < football\-\(british\-english\);
+纖芯直徑 < core\-diameter\-\(of\-a\-fiber\);
+媧 < mythological\-snail\-goddess;
+背脊 < the\-back\-of\-the\-human\-body;
+囉 < exclamatory\-final\-particle;
+客戶服務器結構 < client\-server\-architecture;
+嘷 < the\-roaring\-of\-wild\-beasts;
+進行交易 < to\-carry\-out\-a\-transaction;
+抗擊 < resist\-\(a\-military\-attack\);
+剞 < carving\-or\-engraving\-knife;
+馬來人 < malaysian\-person\-or\-people;
+冏 < abutilon\-avicennae\-\(plant\);
+別出心裁 < adopt\-an\-original\-approach;
+尋機 < to\-look\-for\-an\-opportunity;
+乫 < used\-in\-korean\-place\-names;
+實況 < what\-is\-actually\-happening;
+䵆 < grains\-from\-the\-distillery;
+䲯 < a\-kind\-of\-black\-small\-bird;
+䯓 < the\-head\-bone\-of\-livestock;
+䮶 < flock\-of\-horses\-stampeding;
+䮣 < a\-yellow\-with\-a\-white\-tail;
+媒體接口連接器 < medium\-interface\-connector;
+底特律 < detroit\-\(a\-city\-in\-the\-us\);
+䬱 < coarse\-grains\-such\-as\-corn;
+中國科學院 < chinese\-acadamy\-of\-science;
+䩲 < a\-tool\-used\-to\-cut\-leather;
+䩚 < to\-mend\-the\-soles\-of\-shoes;
+百發百中 < every\-shot\-hits\-the\-target;
+丁雲 < ding\-yun\-\(a\-personal\-name\);
+虛擬通道連接 < virtual\-channel\-connection;
+䡦 < the\-empty\-space\-of\-a\-wheel;
+案板 < kneading\-or\-chopping\-board;
+䠉 < to\-run\-away\-or\-escape\-from;
+䞑 < a\-red\-swelling\-of\-the\-skin;
+保守 < \(politically\)\-conservative;
+䛯 < the\-reasonable\-of\-speeking;
+䖅 < name\-of\-a\-variety\-of\-grass;
+䔅 < name\-of\-a\-variety\-of\-trees;
+䒱 < twigs\-of\-hemp\-used\-fo\-fuel;
+䎷 < an\-old\-man\-with\-white\-hair;
+不送 < don''t\-bother\-to\-see\-me\-out;
+䌠 < hold\-on\-to\-one''s\-own\-views;
+面嚮對象的技術 < object\-oriented\-technology;
+神道 < shinto\-\(japanese\-religion\);
+䋀 < shoes\-made\-of\-hemp\-or\-hair;
+䊮 < name\-of\-a\-variety\-of\-grain;
+䉂 < a\-basket\-for\-earth\-or\-soil;
+䇖 < rope\-made\-of\-bamboo\-strips;
+䆀 < to\-corrupt\-or\-be\-corrupted;
+䅾 < starting\-to\-put\-forth\-ears;
+䅬 < small\-bundle\-of\-rice\-plant;
+將就 < accept\-\(a\-bit\-reluctantly\);
+不亢不卑 < neither\-haughty\-nor\-humble;
+䁎 < to\-make\-a\-close\-inspection;
+䀊 < a\-kind\-of\-water\-containers;
+懷抱 < \(within\-someone''s\)\-embrace;
+㼩 < concave\-channels\-of\-tiling;
+用戶端設備 < customer\-premise\-equipment;
+情況下 < under\-\(this\)\-circumstances;
+㺠 < a\-black\-ape\-with\-long\-tail;
+㺕 < the\-fighting\-sound\-of\-dogs;
+㹚 < sound\-of\-calling\-to\-a\-calf;
+㷶 < to\-dry\-or\-warm\-near\-a\-fire;
+溫哥華 < vancouver\-\(city\-in\-canada\);
+㷃 < fire\-burns\-for\-a\-long\-time;
+㴔 < the\-noise\-of\-flowing\-water;
+㴋 < deep\-and\-clear\-\-to\-urinate;
+㳧 < the\-water\-flowing\-from\-\.\.\.;
+㱽 < to\-hit\-or\-to\-strikeheavily;
+㱻 < diseases\-of\-dumb\-creatures;
+㱡 < the\-soul\-out\-of\-one''s\-body;
+㱔 < a\-small\-quantity\-or\-number;
+㯟 < foot\-of\-a\-hill\-or\-mountain;
+㭮 < a\-kind\-of\-liquor\-container;
+右邊 < right\-\(as\-opposed\-to\-left\);
+不等價交換 < exchange\-of\-unequal\-values;
+白頭翁 < root\-of\-chinese\-pulsatilla;
+兀 < duplicate\-of\-big\-five\-a461;
+白壁無瑕 < impeccable\-moral\-integrity;
+㦃 < perfect\-personal\-character;
+社論 < editorial\-\(in\-a\-newspaper\);
+家常 < the\-daily\-life\-of\-a\-family;
+㥍 < to\-bear\-jealous\-hatred\-for;
+㤬 < full\-of\-anger\-and\-vexation;
+㤎 < a\-model\-or\-typical\-example;
+㤄 < raging\-animosity\-or\-hatred;
+㣧 < the\-succession\-in\-a\-family;
+㣣 < to\-walk\-in\-an\-unsteady\-way;
+㢸 < device\-for\-regulating\-bows;
+㢒 < an\-almost\-collapsing\-house;
+書聖 < a\-great\-calligraphy\-master;
+㜪 < name\-of\-a\-family\-or\-a\-clan;
+㜕 < relatives\-through\-marriage;
+㛲 < the\-hair\-on\-the\-human\-head;
+㚿 < a\-goddess''s\-name\-in\-legend;
+㙡 < a\-kind\-of\-eatable\-mushroom;
+㘹 < to\-spread\-soil\-on\-the\-road;
+中文版 < chinese\-\(language\)\-version;
+㘤 < circle\-of\-the\-moving\-water;
+㖨 < indistinct\-nasal\-utterance;
+㒽 < a\-kind\-of\-cap\-for\-children;
+高中生 < senior\-high\-school\-student;
+㐖 < a\-translated\-name\-of\-india;
+資本 < capital\-\(as\-in\-capitalism\);
+板羽球 < battledore\-and\-shuttlecock;
+風琴 < organ\-\(musical\-instrument\);
+字帖 < copybook\-\(for\-calligraphy\);
+敗子回頭 < return\-of\-the\-prodigal\-son;
+訪問美國 < to\-visit\-the\-united\-states;
+不失時機 < seize\-the\-opportune\-moment;
+安分 < not\-go\-beyond\-one''s\-bounds;
+暗笑 < laugh\-in\-\(up\)\-one''s\-sleeve;
+導彈潛艇 < \(guided\)\-missile\-submarine;
+美玲 < mei\-ling\-\(a\-person''s\-name\);
+碧血 < blood\-shed\-in\-a\-just\-cause;
+參兩院 < both\-houses\-of\-us\-congress;
+洪森 < hun\-sen\-\(cambodian\-leader\);
+稟告 < report\-\(to\-one''s\-superior\);
+遺體 < remains\-\(of\-a\-dead\-person\);
+避風 < take\-shelter\-from\-the\-wind;
+福建 < fujian\-\(province\-of\-china\);
+安如泰山 < as\-secure\-as\-mount\-taishan;
+勘誤 < to\-correct\-printing\-errors;
+升級 < to\-escalate\-\(in\-intensity\);
+強調 < to\-emphasize\-\(a\-statement\);
+而且 < not\-only\-\.\.\.\-but\-also\-\.\.\.\.;
+遷都 < to\-move\-the\-capitol\-\(city\);
+不義之財 < ill\-gotten\-wealth\-or\-gains;
+重要的是 < it\-is\-important\-\(that\)\-\.\.\.;
+不但 < not\-only\-\(\.\.\.\-but\-also\.\.\.\);
+包產 < make\-a\-production\-contract;
+癟螺痧 < cholera\-\(with\-dehydration\);
+届 < numerary\-adjunct\-for\-time;
+谁 < who\?\-whom\?\-whose\?\-anyone\?;
+阿 < prefix\-for\-people''s\-names;
+莢 < pods\-of\-leguminous\-plants;
+狄 < tribe\-from\-northern\-china;
+繰 < to\-reel\-silk\-from\-cocoons;
+漓 < river\-in\-guangxi\-province;
+咋 < question\-forming\-particle;
+麟 < female\-of\-chinese\-unicorn;
+渭 < name\-of\-a\-river\-in\-shanxi;
+芜 < luxurious\-growth\-of\-weeds;
+绎 < to\-unravel\-or\-unreel\-silk;
+璐 < beautiful\-variety\-of\-jade;
+韶 < music\-of\-the\-emperor\-shun;
+鬟 < dress\-hair\-in\-coiled\-knot;
+罂 < long\-necked\-jar\-or\-bottle;
+靳 < strap\-on\-a\-horse''s\-breast;
+淦 < river\-in\-jiangxi\-province;
+搡 < to\-push\-over\-or\-push\-back;
+艮 < seventh\-of\-eight\-diagrams;
+湟 < river\-in\-qinghai\-province;
+猱 < a\-monkey\-with\-yellow\-hair;
+涪 < river\-in\-sichuan\-province;
+亳 < name\-of\-district\-in\-anhui;
+蔺 < rush\-used\-for\-making\-mats;
+琬 < the\-virtue\-of\-a\-gentleman;
+猗 < exclamation\-of\-admiration;
+鼙 < drum\-carried\-on\-horseback;
+蕲 < variety\-of\-artemisia\-seek;
+瓞 < young\-melons\-just\-forming;
+辁 < cart\-wheel\-with\-no\-spokes;
+酆 < name\-of\-zhou\-period\-state;
+北朝 < the\-northern\-dynasties\-\(a;
+超文本標記語言 < hypertext\-markup\-language;
+永久虛電路 < permanent\-virtual\-circuit;
+包攬 < undertake\-the\-whole\-thing;
+勞教 < reeducation\-through\-labor;
+半場 < half\-of\-a\-game\-or\-contest;
+通信技術 < communications\-technology;
+發達 < developed\-\(country\,\-etc\.\);
+塞爾維亞克羅地亞語 < serbo\-croatian\-\(language\);
+瀉露 < to\-leak\-out\-\(information\);
+歲數 < age\-\(number\-of\-years\-old\);
+外匯儲備 < foreign\-exchange\-reserves;
+開設 < offer\-\(goods\-or\-services\);
+廣東 < guangdong\-province\,\-china;
+放心 < to\-set\-one''s\-mind\-at\-rest;
+魯迅 < name\-of\-an\-author\,\-lu\-xun;
+遙望 < to\-look\-into\-the\-distance;
+電子郵件傳送服務 < \(e\-\)mail\-delivery\-service;
+補足 < bring\-up\-to\-full\-strength;
+透通性 < transparency\-\(networking\);
+熬夜 < stay\-up\-late\-or\-all\-night;
+鰼 < the\-weather\-or\-dojo\-loach;
+體驗 < to\-experience\-for\-oneself;
+撕毀 < tear\-up\-\(a\-contract\,\-etc\);
+傾銷 < to\-dump\-\(goods\,\-products\);
+韔 < a\-wrapper\-or\-case\-for\-bow;
+看法 < way\-of\-looking\-at\-a\-thing;
+陗 < a\-steep\-hill\.\-precipitous;
+營業額 < sum\-or\-volume\-of\-business;
+鏾 < the\-trigger\-of\-a\-crossbow;
+關注 < follow\-\(an\-issue\)\-closely;
+鄠 < county\-in\-shanxi\-province;
+鄎 < a\-place\-in\-henan\-province;
+剝啄 < tap\-\(on\-a\-door\-or\-window\);
+辨析 < differentiate\-and\-analyse;
+不辭辛苦 < make\-nothing\-of\-hardships;
+程式理員 < program\-manager\-\(windows\);
+觷 < to\-process\-or\-carve\-horns;
+民主黨人 < a\-democratic\-party\-member;
+蝰 < vipera\-russelii\-siamensis;
+十億位元以太網絡聯盟 < gigabit\-ethernet\-alliance;
+葶 < draba\-nemerosa\-bebe\-carpa;
+芔 < a\-general\-term\-for\-plants;
+膥 < eggs\-of\-birds\-or\-reptiles;
+三十年來 < for\-the\-past\-thirty\-years;
+技術發展 < technological\-development;
+國產 < made\-in\-one''s\-own\-country;
+高等學校 < colleges\-and\-universities;
+白族 < the\-bai\-\(pai\)\-nationality;
+纑 < to\-soften\-hemp\-by\-boiling;
+原因很簡單 < the\-reason\-is\-very\-simple;
+籩 < bamboo\-container\-for\-food;
+籝 < a\-tube\-to\-hold\-chopsticks;
+康涅狄格 < connecticut\-\(state\-in\-us\);
+笎 < bamboo\-with\-black\-patches;
+單連接站 < single\-attachment\-station;
+禘 < imperial\-ancestor\-worship;
+矮個兒 < a\-person\-of\-short\-stature;
+病癒 < recover\-\(from\-an\-illness\);
+礄 < place\-in\-sichuan\-province;
+寬限 < extend\-\(a\-deadline\,\-etc\.\);
+璪 < pearl\-pendants\-on\-coronet;
+瑽 < tinkling\-of\-jade\-pendants;
+猲 < smoke\-or\-flames\-from\-fire;
+符合標準 < to\-comply\-with\-a\-standard;
+示威遊行 < a\-\(protest\)\-demonstration;
+泜 < a\-river\-in\-hebei\-province;
+泒 < a\-river\-in\-hubei\-province;
+汭 < confluence\-of\-two\-streams;
+櫽 < shape\-wood\-by\-use\-of\-heat;
+晬 < first\-birthday\-of\-a\-child;
+表態 < make\-known\-one''s\-position;
+宣誓 < swear\-an\-oath\-\(of\-office\);
+大敵當前 < confront\-a\-powerful\-enemy;
+悊 < wise\.\-to\-know\-intuitively;
+拜望 < call\-to\-pay\-one''s\-respect;
+彍 < to\-draw\-a\-bow\-to\-the\-full;
+核大國 < a\-nuclear\-power\-\(country\);
+庅 < an\-interrogative\-particle;
+研製過程 < manufacturing\-environment;
+篇幅 < \(take\-up\-or\-devote\)\-space;
+反唇相譏 < answer\-back\-sarcastically;
+核轟炸機 < nuclear\-bomber\-\(aircraft\);
+希臘語 < \(modern\)\-greek\-\(language\);
+首相 < \(japanese\)\-prime\-minister;
+時間內 < within\-\(a\-period\-of\-time\);
+網絡管理系統 < network\-management\-system;
+把式 < person\-skilled\-in\-a\-trade;
+䵵 < yellowish\-black\-and\-white;
+䵫 < light\-red\-yellowish\-black;
+䴛 < to\-make\-decoction\-of\-salt;
+䳷 < a\-second\-name\-for\-chicken;
+䳆 < a\-kind\-of\-species\-of\-myna;
+䰂 < a\-coiffure\-with\-a\-topknot;
+䮕 < horse\-with\-white\-forehead;
+䭨 < wine\-poured\-in\-a\-libation;
+䫀 < the\-lower\-end\-of\-the\-jaws;
+䩝 < to\-tan\-and\-soften\-leather;
+不得人心 < not\-enjoy\-popular\-support;
+淘籮 < basket\-\(for\-washing\-rice\);
+䤂 < a\-second\-name\-for\-vinegar;
+甥女 < niece\-\(sister''s\-daughter\);
+䣴 < to\-lose\-temper\-when\-drunk;
+䣆 < name\-of\-a\-county\-in\-gaomi;
+䢲 < to\-go\-all\-the\-way\-forward;
+䢮 < rapid\-marching\-or\-running;
+䢡 < to\-stamp\-the\-foot\-forward;
+䡹 < the\-low\-rear\-of\-a\-chariot;
+䡯 < sound\-of\-moving\-carriages;
+䡡 < to\-get\-up\-into\-a\-carriage;
+直言不諱 < speak\-frankly\-and\-bluntly;
+景山公園 < name\-of\-a\-park\-in\-beijing;
+䘸 < the\-lower\-front\-of\-a\-robe;
+䘒 < boy''s\-reproductive\-organs;
+䕄 < meat\-in\-the\-form\-of\-paste;
+䓋 < elm\-seeds\-\-\-\-used\-as\-food;
+䑢 < a\-knife\-shaped\-small\-boat;
+䑈 < meat\-to\-offer\-for\-worship;
+漢人 < han\-chinese\-person\|people;
+䍯 < gaot\-with\-different\-horns;
+䍢 < netted\-veined\-window\-sill;
+䋟 < the\-weight\-on\-a\-steelyard;
+䊶 < a\-rope\-for\-leading\-cattle;
+世界衛生組織 < world\-health\-organization;
+伺機 < to\-watch\-for\-one''s\-chance;
+䉗 < a\-receptacle\-or\-container;
+䄸 < grains\-producing\-no\-fruit;
+䄒 < ripening\-of\-paddy\-or\-rice;
+䃁 < uneven\-or\-rugged\-terrains;
+䁔 < big\-eyes\-protuberant\-eyes;
+㿰 < durable\-and\-solid\-leather;
+頸部 < the\-neck\-area\-of\-the\-body;
+㿂 < obstraction\-of\-the\-bowels;
+㾵 < a\-dark\-colored\-birth\-mark;
+㾜 < weak\-breath\-of\-a\-sick\-man;
+㽾 < a\-kind\-of\-woman''s\-disease;
+通訊自動化 < communications\-automation;
+㸲 < a\-kind\-of\-mountain\-cattle;
+㷯 < smoke\-and\-dust\-everywhere;
+㶺 < the\-light\-or\-glow\-of\-fire;
+㵽 < the\-strength\-of\-a\-current;
+㱥 < the\-evil\-spirits\-come\-out;
+㰦 < to\-breath\-with\-mouth\-open;
+㰔 < a\-kind\-of\-edible\-mushroom;
+㰎 < a\-wooden\-pestle\-or\-rammer;
+㭛 < a\-kind\-of\-climbing\-plants;
+㩠 < a\-fierce\-or\-bloody\-battle;
+㦛 < to\-walk\-in\-a\-composed\-way;
+面臨困難 < to\-be\-faced\-with\-problems;
+背影 < a\-view\-of\-somebody''s\-back;
+㠝 < lofty\-and\-steep\-mountains;
+㠐 < high\-and\-pointed\-mountain;
+㞚 < to\-pile\-up\-layer\-by\-layer;
+㜯 < a\-word\-to\-designate\-woman;
+㜮 < to\-go\-beyond\-normal\-limit;
+不務正業 < not\-engage\-in\-honest\-work;
+㚓 < tie\-beams\-of\-a\-small\-boat;
+狡賴 < to\-deny\-\(through\-sophism\);
+㘌 < to\-laugh\-without\-stopping;
+㗦 < a\-loud\-and\-confused\-noise;
+㗚 < vexingly\-verbose\-or\-wordy;
+㗕 < the\-crowing\-of\-a\-pheasant;
+㖄 < sound\-of\-calling\-chickens;
+㕚 < claws\-of\-birds\-or\-animals;
+愛理不理 < look\-cold\-and\-indifferent;
+㐳 < high\-and\-level\-on\-the\-top;
+變賣 < sell\-off\-\(one''s\-property\);
+下工夫 < to\-put\-in\-time\-and\-energy;
+決賽 < finals\-\(of\-a\-competition\);
+板書 < writing\-on\-the\-blackboard;
+珀斯 < perth\-\(city\-in\-australia\);
+改善通訊 < to\-improve\-communications;
+總參謀長 < \(military\)\-chief\-of\-staff;
+愛憐 < show\-tender\-affection\-for;
+暴漲 < rise\-suddenly\-and\-sharply;
+錄共 < to\-take\-down\-a\-confession;
+本家 < a\-member\-of\-the\-same\-clan;
+面臨 < be\-faced\-with\-\(a\-problem\);
+背信棄義 < break\-faith\-with\-somebody;
+值得注意的是 < it''s\-worth\-noting\-that\.\.\.;
+跨國公司 < transnational\-corporation;
+日本人 < japanese\-person\-or\-people;
+共和黨人 < a\-republican\-party\-member;
+池湯 < large\-pool\-in\-a\-bathhouse;
+無限期 < unlimited\-\(time\)\-duration;
+獎勵 < reward\-\(as\-encouragement\);
+順差 < \(trade\-or\-budget\)\-surplus;
+環球定位系統 < global\-positioning\-system;
+初選 < \(us\)\-primaries\-\(election\);
+帕蘭卡 < palanka\-\(a\-personal\-name\);
+報銷 < submit\-an\-expense\-account;
+蜀 < name\-of\-an\-ancient\-state;
+洛 < river\-in\-shanxi\-province;
+叔 < father''s\-younger\-brother;
+絹 < kind\-of\-thick\-stiff\-silk;
+罩 < basket\-for\-catching\-fish;
+夷 < ancient\-barbarian\-tribes;
+砰 < sound\-of\-crashing\-stones;
+哎 < interjection\-of\-surprise;
+朔 < first\-day\-of\-lunar\-month;
+揣 < put\-things\-under\-clothes;
+嵋 < omei\-mountain\-in\-sichuan;
+缉 < to\-sew\-in\-close\-stitches;
+噶 < used\-in\-transliterations;
+掰 < to\-break\-with\-both\-hands;
+霆 < a\-sudden\-peal\-of\-thunder;
+漳 < name\-of\-a\-river\-in\-henan;
+巳 < sixth\-of\-twelve\-branches;
+嗝 < cackling\-of\-fowls\-to\-gag;
+姘 < illicit\-sexual\-relations;
+霏 < falling\-of\-snow\-and\-rain;
+郸 < county\-in\-hebei\-province;
+呦 < the\-bleating\-of\-the\-deer;
+掮 < to\-bear\-on\-the\-shoulders;
+莆 < a\-kind\-of\-legendary\-tree;
+阡 < footpaths\-between\-fields;
+鸪 < species\-of\-taiwan\-pigeon;
+氐 < name\-of\-an\-ancient\-tribe;
+呤 < purine\-in\-chem\.\-compound;
+嬗 < succession\-to\-the\-throne;
+觏 < meet\-or\-see\-unexpectedly;
+濮 < county\-in\-henan\-province;
+郴 < county\-in\-hunan\-province;
+轾 < low\-rear\-portion\-of\-cart;
+稞 < grain\-ready\-for\-grinding;
+郧 < county\-in\-hubei\-province;
+蹼 < webbed\-feet\-of\-waterfowl;
+甑 < boiler\-for\-steaming\-rice;
+妗 < wife\-of\-mother''s\-brother;
+浠 < name\-of\-a\-river\-in\-hubei;
+鳔 < swimming\-bladder\-of\-fish;
+篌 < ancient\-music\-instrument;
+秕 < empty\-grain\-or\-rice\-husk;
+琚 < ornamental\-gems\-for\-belt;
+鲵 < cryptobranchus\-japonicus;
+艨 < long\-and\-narrow\-war\-boat;
+涑 < river\-in\-shansi\-province;
+雩 < offer\-sacrifice\-for\-rain;
+佾 < a\-row\-or\-file\-of\-dancers;
+缂 < the\-woof\-of\-a\-woven\-item;
+艴 < the\-countenance\-changing;
+滏 < name\-of\-a\-river\-in\-hebei;
+人民幣 < chinese\-unit\-of\-currency;
+馬可福音 < gospel\-according\-to\-mark;
+流氓罪 < the\-crime\-of\-hooliganism;
+城關 < area\-outside\-a\-city\-gate;
+錄音機 < \(tape\)\-recording\-machine;
+運算 < \(mathematical\)\-operation;
+州長 < governor\-\(of\-a\-us\-state\);
+每年一度 < once\-a\-year\-\(every\-year\);
+域名註冊 < domain\-name\-registration;
+代之以 < \(has\-been\)\-replaced\-with;
+部屬 < affiliated\-to\-a\-ministry;
+引擎 < engine\-\(transliteration\);
+兵貴神速 < speed\-is\-precious\-in\-war;
+變戲法 < perform\-conjuring\-tricks;
+多邊合作 < multilateral\-cooperation;
+發行額 < \(periodical\)\-circulation;
+登記 < to\-register\-\(one''s\-name\);
+十三日 < thirtieth\-day\-of\-a\-month;
+幀首定界符 < start\-of\-frame\-delimiter;
+投放市場 < to\-put\-sth\-on\-the\-market;
+機組 < flight\-crew\-\(on\-a\-plane\);
+鷞 < the\-turquoise\-kingfisher;
+下半身 < lower\-half\-of\-one''s\-body;
+鵁 < mycticorax\-prasinosceles;
+荒無人煙 < desolate\-and\-uninhabited;
+鮰 < a\-small\-kind\-of\-sturgeon;
+遼寧 < liaoning\-province\,\-china;
+髠 < shave\-head\-as\-punishment;
+騕 < name\-of\-a\-fabulous\-horse;
+照常 < \(business\,\-etc\)\-as\-usual;
+韂 < a\-saddle\-flap\.\-trappings;
+因特網提供商 < internet\-sevice\-provider;
+約翰福音 < gospel\-according\-to\-john;
+陴 < a\-parapet\-on\-a\-city\-wall;
+闤 < wall\-around\-market\-place;
+印歐語言 < indo\-european\-\(language\);
+撫摸 < gently\-caress\-and\-stroke;
+切斷 < cut\-off\-\(a\-supply\,\-etc\.\);
+網絡操作系統 < network\-operating\-system;
+習以為常 < be\-accustomed\-or\-used\-to;
+兵荒馬亂 < turmoil\-and\-chaos\-of\-war;
+建制 < organizational\-structure;
+不承認主義 < policy\-of\-nonrecognition;
+退役 < retire\-from\-the\-military;
+違反 < to\-violate\-\(a\-law\,\-e\.g\.\);
+幫廚 < help\-in\-the\-mess\-kitchen;
+不動聲色 < maintain\-one''s\-composure;
+浮點運算 < floating\-point\-operation;
+贑 < \<abbrv\>\-jiangxi\-province;
+補稅 < pay\-a\-tax\-one\-has\-evaded;
+訡 < to\-chant\-to\-moan\-to\-sigh;
+襲擊 < \(make\-a\)\-surprise\-attack;
+內政部長 < minister\-of\-the\-interior;
+白淨 < \(of\-skin\)\-fair\-and\-clear;
+蛁 < pomponia\-maculatiocollis;
+巡查 < to\-go\-around\-and\-inspect;
+蘀 < falling\-leaves\-and\-barks;
+藺 < rush\-used\-in\-making\-mats;
+兵書 < a\-book\-on\-the\-art\-of\-war;
+菴 < small\-buddhist\-monastery;
+鼻針療法 < nose\-acupuncture\-therapy;
+莔 < fritillaria\-verticillata;
+茼 < chrysanthemum\-coronarium;
+艥 < an\-oar\-or\-paddle\.\-to\-row;
+產銷 < production\-and\-marketing;
+膙 < callous\-skin\-on\-the\-feet;
+腜 < quickening\-of\-the\-foetus;
+肳 < the\-corners\-of\-the\-mouth;
+闌尾 < appendix\-\(in\-human\-body\);
+翛 < look\-of\-rumpled\-feathers;
+罝 < net\-for\-catching\-rabbits;
+幅員 < a\-country''s\-surface\-area;
+虛擬環境 < theorhetical\-environment;
+撥付 < appropriate\-sum\-of\-money;
+緌 < tassels\-hanging\-from\-hat;
+密切注意 < close\-attention\-\(to\-sth\);
+國營 < state\-run\-\(company\,\-etc\);
+圖像用戶介面 < graphical\-user\-interface;
+筸 < name\-of\-a\-place\-in\-honan;
+面嚮對象語言 < object\-oriented\-language;
+損失 < a\-\(financial\,\-etc\.\)\-loss;
+辦公 < handle\-official\-business;
+楊百翰大學 < brigham\-young\-university;
+璠 < a\-piece\-of\-precious\-jade;
+玶 < name\-of\-one\-kind\-of\-jade;
+獞 < name\-of\-a\-variety\-of\-dog;
+不拘一格 < not\-stick\-to\-one\-pattern;
+余震 < \(earthquake\)\-aftershocks;
+畚箕 < a\-bamboo\-or\-wicker\-scoop;
+灨 < the\-river\-gan\-in\-jiangxi;
+濲 < name\-of\-a\-river\-in\-hunan;
+完全懂得 < to\-understand\-completely;
+突顯 < make\-something\-stand\-out;
+不平則鳴 < where\-there\-is\-injustice;
+洧 < name\-of\-a\-river\-in\-honan;
+核不擴散 < nuclear\-nonproliferation;
+握力 < \(strength\-of\-one''s\)\-grip;
+樧 < zanthoxylum\-ailanthoides;
+榤 < perch\-for\-fowls\-roost\-on;
+內政部 < ministry\-of\-the\-interior;
+共同閘道介面 < common\-gateway\-interface;
+擺脫危機 < to\-break\-out\-of\-a\-crisis;
+栂 < a\-kind\-of\-evergreen\-tree;
+富布賴特 < fullbright\-\(scholarship\);
+旡 < choke\-on\-something\-eaten;
+馬裡 < mali\-\(name\-of\-a\-country\);
+撋 < to\-rub\-between\-the\-hands;
+病態 < morbid\-or\-abnormal\-state;
+控制 < to\-\(have\)\-control\-\(over\);
+撥亂反正 < bring\-order\-out\-of\-chaos;
+惌 < to\-bear\-a\-grudge\-against;
+佳能 < canon\-\(japanese\-company\);
+病家 < a\-patient\-and\-his\-family;
+疑惑 < \(a\-sense\-of\)\-uncertainty;
+崶 < name\-of\-a\-legendary\-hill;
+崁 < a\-place\-in\-taiwan\-tainan;
+尞 < fuel\-used\-for\-sacrifices;
+無黨派 < politically\-unaffiliated;
+打牌 < to\-play\-mahjong\-or\-cards;
+奞 < the\-stride\-made\-by\-a\-man;
+夗 < to\-turn\-over\-when\-asleep;
+變電站 < \(transformer\)\-substation;
+做客 < to\-be\-a\-guest\-or\-visitor;
+安第斯山 < the\-andes\-mountain\-range;
+凜 < shiver\-with\-cold\-or\-fear;
+僰 < ancient\-aboriginal\-tribe;
+百煉成鋼 < be\-tempered\-into\-a\-steel;
+行使 < exercise\-\(a\-right\,\-etc\.\);
+筆挺 < \(standing\)\-very\-straight;
+分佈式結構 < distributed\-architecture;
+安神 < calm\-\(soothe\)\-the\-nerves;
+聳肩 < to\-shrug\-one''s\-shoulders;
+亃 < name\-of\-a\-kind\-of\-animal;
+乺 < painting\-tool\-place\-name;
+乶 < korean\-place\-name\-pholha;
+䵂 < to\-grind\-wheat\-to\-powder;
+䲳 < birds\-flying\-up\-and\-down;
+國務次卿 < under\-secretary\-of\-state;
+䲛 < an\-ancient\-name\-for\-tuna;
+䲄 < a\-kind\-of\-fiish\-in\-ocean;
+䰍 < a\-kind\-of\-dark\-red\-paint;
+䰆 < beautiful\-and\-hairy\-mane;
+䯖 < the\-muscles\-of\-the\-thigh;
+半信半疑 < half\-believe\,\-half\-doubt;
+䬳 < cakes\-made\-of\-rice\-flour;
+䫯 < to\-take\-a\-casual\-look\-at;
+深空 < deep\-space\-\(outer\-space\);
+䪀 < known\-together\-as\-saddle;
+䨒 < sound\-of\-the\-water\-drops;
+唐納 < tanner\-\(english\-surname\);
+䦨 < a\-door\-curtain\-or\-screen;
+䤯 < container\-for\-thick\-soup;
+木乃伊 < mummy\-\(preserved\-corpse\);
+䡍 < the\-linch\-pin\-of\-a\-sheel;
+䟗 < to\-stand\-for\-a\-long\-time;
+䟃 < to\-move\-or\-march\-swiftly;
+䚶 < to\-scold\-in\-a\-loud\-voice;
+䙜 < legendary\-mountain\-deity;
+䙈 < a\-loose\-garment\-or\-cloak;
+䙇 < clothes\-of\-coarse\-fabric;
+䗂 < diemyctylus\-pyrrhogaster;
+䔣 < a\-tribe\-in\-ancient\-times;
+䓴 < edible\-fungus\-from\-trees;
+䑎 < soup\-of\-pig''s\-intestines;
+䐻 < big\-pieces\-of\-dried\-meat;
+䐹 < perserved\-and\-dried\-meat;
+䐰 < to\-offer\-food\-as\-tribute;
+外交部 < foreign\-affairs\-ministry;
+䐂 < fat\-of\-animals\-or\-plants;
+䎵 < to\-look\-straight\-forward;
+䊐 < fluffy\-stuffed\-dumplings;
+䊍 < thick\-congee\-or\-porridge;
+持不同政見 < \(politically\)\-dissenting;
+䇏 < to\-pile\-one\-upon\-another;
+䄜 < happiness\-and\-well\-being;
+䄖 < used\-in\-name\-of\-a\-person;
+䃢 < name\-of\-a\-mountain\-lofty;
+䁇 < to\-look\-for\-a\-short\-time;
+䀫 < narrow\-and\-dim\-eye\-sight;
+㿺 < jutting\-on\-the\-epidermis;
+呈請 < to\-submit\-\(to\-superiors\);
+㽒 < the\-children\-of\-a\-sister;
+㼿 < the\-brick\-wall\-of\-a\-well;
+㼛 < long\-necked\-wine\-vessels;
+㻪 < a\-kind\-of\-jade\-fine\-jade;
+㶅 < dried\-up\-mountain\-creeks;
+上訴 < appeal\-\(a\-judicial\-case\);
+㵢 < a\-marsh\-in\-ancient\-times;
+㴰 < a\-river\-in\-ancient\-times;
+懷念 < to\-cherish\-the\-memory\-of;
+㳍 < a\-place\-in\-ancient\-times;
+㳊 < the\-flowing\-of\-the\-water;
+㲊 < to\-understand\-thoroughly;
+㰾 < songs\-of\-the\-people\-of\-楚;
+㰽 < to\-exert\-oneself\-to\-yell;
+㯫 < a\-wattle\-or\-bamboo\-fence;
+㮦 < branches\-growing\-upwards;
+特點 < characteristic\-\(feature\);
+字母 < letter\-\(of\-the\-alphabet\);
+㪛 < to\-pound\-rocks\-to\-pieces;
+㪙 < to\-go\-to\-the\-very\-source;
+㩭 < to\-disturb\-or\-to\-agitate;
+拔火罐兒 < detachable\-stove\-chimney;
+同謀 < to\-conspire\-with\-someone;
+㡪 < the\-varnish\-on\-the\-floor;
+㡧 < to\-stretch\-open\-painting;
+㠇 < name\-of\-a\-mountain\-ridge;
+桃園 < taoyuan\-\(city\-in\-taiwan\);
+㜿 < name\-of\-a\-fish\-in\-legend;
+江面 < the\-surface\-of\-the\-river;
+㗩 < sound\-of\-endure\-coldness;
+㗧 < to\-scold\-with\-loud\-voice;
+古希臘語 < ancient\-greek\-\(language\);
+㓡 < the\-middle\-part\-of\-a\-bow;
+㐨 < a\-kind\-of\-fish\-in\-legend;
+遲浩田 < chinese\-defense\-minister;
+碑額 < the\-top\-part\-of\-a\-tablet;
+伴奏 < to\-accompany\-\(musically\);
+北溫帶 < the\-north\-temperate\-zone;
+打電話 < to\-make\-a\-telephone\-call;
+右翼 < \(politically\)\-right\-wing;
+浙江 < zhejiang\-province\,\-china;
+人民解放軍 < people''s\-liberation\-army;
+識見 < knowledge\-and\-experience;
+買帳 < to\-show\-respect\-\(for\-sb\);
+暗箭 < attack\-by\-a\-hidden\-enemy;
+深圳 < shenzhen\-\(city\-in\-china\);
+程度 < degree\-\(level\-or\-extent\);
+大關 < \(reach\-a\)\-critical\-point;
+從外表來看 < looking\-from\-the\-outside;
+頭版 < \(newspaper''s\)\-front\-page;
+千絲萬縷 < linked\-in\-countless\-ways;
+春聯 < spring\-festivel\-couplets;
+公眾電信網路 < public\-telephone\-network;
+交換虛電路 < switched\-virtual\-circuit;
+以來 < since\-\(a\-previous\-event\);
+蓮花 < lotus\-\(computer\-company\);
+不日 < within\-the\-next\-few\-days;
+諒解 < \(reach\)\-an\-understanding;
+破土典禮 < ground\-breaking\-ceremony;
+教學機構 < educational\-organization;
+不遺余力 < spare\-no\-pains\-or\-effort;
+表示敬意 < respectful\,\-show\-respect;
+蓋章 < to\-affix\-a\-seal\-\(to\-sth\);
+止痛法 < method\-of\-relieving\-pain;
+觸電 < to\-get\-an\-electric\-shock;
+主動 < \(to\-take\-the\)\-initiative;
+路加福音 < gospel\-according\-to\-luke;
+訴說 < tell\-\(to\-another\-person\);
+總統 < president\-\(of\-a\-country\);
+報頭 < masthead\-\(of\-a\-newspaper;
+南沙 < nansha\-\(spratly\)\-islands;
+通道 < \(communications\)\-channel;
+政績 < \(political\)\-achievements;
+瞥 < take\-fleeting\-glance\-at;
+州 < administrative\-division;
+吧 < emphatic\-final\-particle;
+某 < certain\-thing\-or\-person;
+票 < slip\-of\-paper\-or\-bamboo;
+耶 < used\-in\-transliteration;
+厘 < thousandth\-part\-of\-tael;
+彭 < name\-of\-ancient\-country;
+肴 < cooked\-or\-prepared\-meat;
+俎 < chopping\-board\-or\-block;
+淮 < river\-in\-anhui\-province;
+哦 < oh\?\-really\?\-is\-that\-so\?;
+锤 < balance\-weight\-on\-scale;
+仞 < ancient\-unit\-of\-measure;
+芭 < plantain\-or\-banana\-palm;
+磊 < pile\-of\-rocks\-or\-stones;
+呸 < expression\-of\-reprimand;
+拷 < torture\-and\-interrogate;
+抿 < pucker\-up\-lips\-in\-smile;
+卉 < general\-term\-for\-plants;
+髻 < hair\-rolled\-up\-in\-a\-bun;
+裆 < crotch\-or\-seat\-of\-pants;
+蘑 < type\-of\-edible\-mushroom;
+咿 < descriptive\-of\-creaking;
+篾 < bamboo\-splints\-or\-slats;
+淇 < river\-in\-henan\-province;
+蓑 < rain\-coat\-made\-of\-straw;
+檬 < type\-of\-locust\-oracacia;
+淙 < gurgling\-sound\-of\-water;
+殓 < dress\-corpse\-for\-burial;
+琥 < jewel\-in\-shape\-of\-tiger;
+潞 < river\-in\-northern\-china;
+醍 < essential\-oil\-of\-butter;
+妯 < wives\-of\-one''s\-brothers;
+帏 < curtain\-that\-forms\-wall;
+瓒 < ceremonial\-libation\-cup;
+瑗 < large\-ring\-of\-fine\-jade;
+涞 < river\-in\-hebei\-province;
+爻 < diagrams\-for\-divination;
+锟 < ancient\-treasured\-sword;
+芗 < fragrant\-smell\-of\-grain;
+楦 < a\-last\-for\-making\-shoes;
+舁 < carry\-on\-one''s\-shoulder;
+滠 < river\-in\-hubei\-province;
+忌恨 < hate\-\(due\-to\-envy\,\-etc\);
+雹災 < disaster\-caused\-by\-hail;
+出訪 < visit\-a\-foreign\-country;
+核武器材料 < nuclear\-weapon\-material;
+通訊行業 < communications\-industry;
+北半球 < the\-northern\-hemisphere;
+雙絞線 < unshielded\-twisted\-pait;
+發佈新軟件 < to\-release\-new\-software;
+斑斑 < full\-of\-stains\-or\-spots;
+西裝 < \(western\-style\)\-clothes;
+加油 < to\-make\-an\-extra\-effort;
+募捐 < to\-solict\-contributions;
+專屬經濟區 < exclusive\-economic\-zone;
+皴裂 < chap\-\(lips\,\-skin\,\-etc\.\);
+見聞 < what\-one\-sees\-and\-hears;
+包承制 < responsible\-crew\-system;
+南京 < nanjing\-\(city\-in\-china\);
+規約 < terms\-\(of\-an\-agreement\);
+歸心 < converted\-to\-\(religion\);
+逼死 < hound\-somebody\-to\-death;
+本位主義 < selfish\-departmentalism;
+為所欲為 < do\-whatever\-one\-pleases;
+人民法院 < people''s\-court\-\(of\-law\);
+商業機構 < commercial\-organization;
+鼏 < cover\-of\-tripod\-caldron;
+黰 < young\-girl''s\-hair\-style;
+統治 < \(political\)\-rule\-\(over\);
+補課 < make\-up\-a\-missed\-lesson;
+這樣 < this\-\(kind\-of\,\-sort\-of\);
+播放機 < player\-\(e\.g\.\-cd\-player\);
+達成 < to\-reach\-\(an\-agreement\);
+百般 < in\-hundred\-and\-one\-ways;
+鬂 < the\-hair\-on\-the\-temples;
+禁止核武器試驗條約 < nuclear\-test\-ban\-treaty;
+駮 < a\-kind\-of\-fierce\-animal;
+不翼而飛 < disappear\-without\-trace;
+授計 < to\-confide\-a\-plan\-to\-sb;
+畢恭畢敬 < reverent\-and\-respectful;
+科研人員 < \(scientific\)\-researcher;
+報曉 < herald\-the\-break\-of\-day;
+據統計 < according\-to\-statistics;
+透露消息 < to\-disclose\-information;
+中國時報 < china\-times\-\(newspaper\);
+鄾 < place\-in\-hubei\-province;
+鄬 < place\-in\-henan\-province;
+鄘 < state\-in\-henan\-province;
+利市 < \"lai\-see\"\-\(lucky\-money\);
+郰 < birthplace\-of\-confucius;
+邧 < town\-in\-shanxi\-province;
+側重 < place\-extra\-emphasis\-on;
+報恩 < pay\-a\-debt\-of\-gratitude;
+留學生 < student\-studying\-abroad;
+威廉斯堡 < williamsburg\-\(virginia\);
+便宜行事 < act\-at\-one''s\-discretion;
+幫子 < outer\-\(of\-cabbage\,\-etc\);
+自豪 < \(feel\-a\-sense\-of\)\-pride;
+反艦艇巡航導彈 < anti\-ship\-cruise\-missle;
+蚻 < small\-species\-of\-cicada;
+蒱 < gambling\-game\-with\-dice;
+葧 < heleocharis\-plantaginea;
+流亡在海外 < to\-be\-in\-exile\-overseas;
+防務 < \(pertaining\-to\)\-defense;
+業績 < outstanding\-achievement;
+舲 < small\-boat\-with\-windows;
+商業管理 < business\-administration;
+留言 < to\-leave\-one''s\-comments;
+羫 < the\-skeleton\-of\-a\-sheep;
+年來 < over\-the\-last\-\.\.\.\-years;
+罽 < a\-kind\-of\-woolen\-fabric;
+開拍 < begin\-shooting\-\(a\-film\);
+分之 < \(indicating\-a\-fraction\);
+粺 < polished\-rice\-or\-millet;
+多年來 < for\-the\-past\-many\-years;
+篧 < creel\-for\-trapping\-fish;
+篛 < cuticle\-of\-bamboo\-plant;
+基礎速率 < basic\-rate\-\(as\-in\-isdn\);
+答謝 < to\-express\-one''s\-thanks;
+祔 < worship\-one''s\-ancestors;
+筆談 < conversation\-by\-writing;
+瑪麗 < mali\-\(a\-person''s''\-name\);
+睖 < to\-stare\-straight\-ahead;
+眢 < eyes\-without\-brightness;
+症狀 < symptom\-\(of\-an\-illness\);
+畾 < fields\-divided\-by\-dikes;
+璲 < pendant\-girdle\-ornament;
+瑿 < a\-black\-stone\-like\-jade;
+瑯 < kind\-of\-white\-cornelian;
+瑢 < gem\-ornaments\-for\-belts;
+珶 < white\-jade\-worn\-on\-belt;
+中秋節 < the\-mid\-autumn\-festival;
+玕 < inferior\-variety\-of\-gem;
+佔領 < to\-occupy\-\(a\-territory\);
+猈 < dog\-with\-short\-shinbone;
+手寫識別 < handwriting\-recognition;
+澉 < to\-wash\-name\-of\-a\-place;
+潖 < name\-of\-a\-certain\-river;
+非盈利的組織 < non\-profit\-organization;
+殙 < to\-die\-by\-taking\-poison;
+歁 < unsatisfied\-\(of\-eating\);
+欨 < to\-blow\-or\-breathe\-upon;
+欏 < tree\-the\-horse\-chestnut;
+檇 < wooden\-rammer\-or\-pestle;
+橔 < a\-wooden\-chopping\-block;
+訊息處理系統 < message\-handling\-system;
+備料 < get\-the\-materials\-ready;
+坦克 < tank\-\(military\-vehicle\);
+馬路口 < intersection\-\(of\-roads\);
+四川 < sichuan\-province\,\-china;
+怸 < cns\-2\-2a40\-is\-different;
+比比皆是 < can\-be\-found\-everywhere;
+不抵抗主義 < policy\-of\-nonresistance;
+販運 < to\-transport\-\(for\-sale\);
+墄 < the\-steps\-of\-a\-stairway;
+數字訂購線路 < digital\-subscriber\-line;
+棄舊換新 < to\-turn\-over\-a\-new\-leaf;
+今譯 < modern\-language\-version;
+不情之請 < my\-presumptuous\-request;
+啫 < interjection\-of\-warning;
+投放 < to\-put\-in\-\(circulation\);
+吚 < used\-to\-represent\-sound;
+匁 < japanese\-unit\-of\-weight;
+病倒 < be\-down\-with\-an\-illness;
+拷問 < to\-question\-via\-torture;
+仾 < to\-hang\-or\-bow\-the\-head;
+䶝 < growing\-irregular\-teeth;
+䵈 < unsmelted\-hemp\-and\-silk;
+䵀 < coarse\-crumbs\-of\-barley;
+䴑 < a\-legendary\-weired\-bird;
+䴇 < a\-second\-name\-for\-crane;
+䴁 < a\-kind\-of\-rat\-like\-bird;
+䳲 < a\-swarm\-of\-flying\-birds;
+䲴 < a\-kind\-of\-venomous\-bird;
+䱾 < a\-carp\-like\-savory\-fish;
+䰫 < nimble\-and\-active\-ghost;
+雙連接站 < dual\-attachment\-station;
+䭇 < to\-be\-chocked\-with\-food;
+䭆 < small\-children\-eat\-less;
+䬲 < to\-eat\-to\-the\-half\-full;
+䬪 < a\-kind\-of\-cooked\-noodle;
+䬛 < the\-roaring\-of\-the\-wind;
+患難 < trials\-and\-tribulations;
+䨗 < excessive\-rain\-and\-snow;
+䨅 < small\-birds\-\-\-\-the\-wren;
+鍛煉 < to\-do\-physical\-training;
+䥖 < silver\-of\-gold\-filagree;
+䥏 < unfitted\-for\-each\-other;
+䤥 < agricultural\-implements;
+䢜 < the\-marriage\-of\-a\-woman;
+䡽 < the\-shafts\-of\-a\-vehicle;
+䡺 < the\-end\-of\-an\-axle\-tree;
+䡣 < a\-piece\-of\-curved\-board;
+䠣 < net\-to\-trap\-the\-animals;
+䝈 < a\-big\-and\-strenuous\-pig;
+䚐 < getting\-red\-in\-the\-eyes;
+䚊 < to\-look\-from\-a\-distance;
+䙐 < furs\-and\-linen\-garments;
+䘆 < a\-second\-form\-earthworm;
+䗠 < the\-larva\-of\-mosquitoes;
+䗔 < a\-house\-lizard\-or\-gecko;
+䖱 < large\-shrimp\-in\-the\-sea;
+䔾 < a\-kind\-of\-fragrant\-herb;
+䓱 < a\-kind\-of\-herb\-medicine;
+戴維斯 < davis\-\(english\-surname\);
+補助組織 < auxiliary\-organizations;
+䐤 < dried\-and\-seasoned\-meat;
+䐐 < curved\-part\-of\-the\-knee;
+䏙 < brine\-from\-pickled\-meat;
+䏕 < to\-cook\-food\-thoroughly;
+紅樓夢 < a\-dream\-of\-red\-mansions;
+䍹 < odor\-of\-a\-sheep\-or\-goat;
+䍙 < nets\-for\-catching\-birds;
+䍘 < a\-general\-term\-for\-nets;
+䍓 < net\-for\-catching\-rabbit;
+䋫 < to\-wind\-round\-the\-ropes;
+䋨 < to\-set\-in\-order\-the\-old;
+䊴 < food\-made\-of\-rice\-flour;
+䊪 < coarse\-rice\-\-\-\-unhulled;
+䉜 < young\-and\-tender\-bamboo;
+䉖 < framework\-of\-a\-carriage;
+䇗 < bamboo\-with\-long\-joints;
+䇑 < a\-standing\-short\-person;
+䆊 < unhusked\-glutinous\-rice;
+䆉 < the\-swing\-of\-rice\-plant;
+蛙泳 < \(swimming\)\-breaststroke;
+䃉 < a\-stone\-resembling\-jade;
+怎麼 < \(interrogative\-pronoun\);
+䁌 < to\-see\-for\-a\-short\-time;
+㾀 < to\-be\-weaked\-by\-disease;
+㽸 < diseases\-of\-the\-abdomen;
+在今年年底 < at\-the\-end\-of\-this\-year;
+㼧 < tiles\-in\-cylinder\-shape;
+過不去 < make\-life\-difficult\-for;
+㹲 < a\-frightened\-pig\-or\-dog;
+㹮 < a\-kind\-of\-animal\-\-tapir;
+㹝 < a\-legendary\-wild\-animal;
+㹑 < a\-four\-years\-old\-cattle;
+㹊 < a\-cattle\-of\-white\-color;
+㹆 < the\-coulter\-of\-a\-plough;
+回顧歷史 < to\-look\-back\-at\-history;
+通訊協定 < communications\-protocol;
+㸋 < meats\-used\-in\-sacrifice;
+㷮 < scorched\-or\-burned\-wood;
+㷫 < fire\-causing\-by\-dryness;
+㶒 < the\-current\-of\-a\-stream;
+㴲 < a\-river\-in\-ancient\-time;
+㴑 < to\-trace\-up\-to\-a\-source;
+㴏 < the\-pond\-water\-is\-still;
+㲿 < extensive\-body\-of\-water;
+㲄 < unburnt\-bricks\-or\-tiles;
+㱬 < cannot\-recognize\-people;
+㯙 < the\-buckthorn\-or\-jujube;
+駐守 < \(man\-a\-post\-and\)\-defend;
+㭾 < to\-cut\-the\-timber\-apart;
+溫和 < moderate\-\(policy\,\-etc\.\);
+㭃 < the\-large\-rope\-of\-a\-net;
+㭂 < height\-of\-the\-end\-point;
+㬻 < in\-between\-of\-the\-flesh;
+否認 < to\-declare\-to\-be\-untrue;
+㧯 < a\-bucket\-made\-of\-willow;
+㧥 < to\-nip\-with\-the\-fingers;
+㦽 < with\-elegant\-appearance;
+情報處 < source\-\(of\-information\);
+㦺 < a\-lance\-with\-two\-points;
+㦇 < a\-peaceful\-or\-easy\-mood;
+㥅 < used\-in\-a\-person''s\-name;
+㤌 < to\-have\-one''s\-heart\-own;
+㣻 < to\-remedy\-by\-punishment;
+㣪 < to\-walk\-with\-slow\-steps;
+㣆 < to\-loose\-the\-bow\-string;
+㢾 < the\-curved\-end\-of\-a\-bow;
+㢵 < powerful\-and\-strong\-bow;
+㡹 < to\-rely\-upon\-each\-other;
+㡒 < a\-calico\-sack\-for\-grain;
+㡏 < to\-cut\-a\-strip\-of\-cloth;
+㞼 < to\-respectfully\-receive;
+㚬 < a\-lady\-start\-to\-doll\-up;
+㚖 < to\-come\-out\-to\-the\-open;
+㙊 < an\-area\-of\-level\-ground;
+㕸 < sound\-of\-rolling\-a\-boat;
+㔤 < to\-exert\-one''s\-strength;
+腐敗罪 < the\-crime\-of\-corruption;
+㒤 < to\-have\-one''s\-heart\-won;
+㒙 < to\-hand\-or\-bow\-the\-head;
+步履維艱 < have\-difficulty\-walking;
+共同篩選 < collaborative\-filtering;
+白蛇傳 < tale\-of\-the\-white\-snake;
+大驚小怪 < much\-fuss\-about\-nothing;
+辯証唯物主義 < dialectical\-materialism;
+江西 < jiangxi\-province\,\-china;
+愛撫 < to\-show\-tender\-care\-for;
+參與 < to\-participate\-\(in\-sth\);
+港人 < hong\-kong\-person\|people;
+黃河 < yellow\-river\-\(huang\-he\);
+江蘇 < jiangsu\-province\,\-china;
+任命 < to\-appoint\-and\-nominate;
+公安官員 < public\-safety\-officials;
+餅子 < maize\-or\-millet\-pancake;
+期攷 < end\-of\-term\-examination;
+總額 < total\-\(amount\-or\-value\);
+謂語 < \(grammatical\)\-predicate;
+半成品 < semi\-manufactured\-goods;
+中旬 < middle\-third\-of\-a\-month;
+下旬 < last\-third\-of\-the\-month;
+傳輸技術 < transmission\-technology;
+貝克 < baker\-\(english\-surname\);
+亂吃 < to\-eat\-indiscriminantly;
+奔頭兒 < something\-to\-strive\-for;
+冰天雪地 < a\-world\-of\-ice\-and\-snow;
+政府機構 < government\-organization;
+中轉站 < hub\-\(network\-equipment\);
+恩怨 < \(feeling\-of\)\-resentment;
+不外 < not\-beyond\-the\-scope\-of;
+服刑 < serve\-a\-prison\-sentence;
+莫非 < can\-it\-be\-possible\-that;
+廣西 < guangxi\-province\,\-china;
+不可理喻 < be\-impervious\-to\-reason;
+奔瀉 < \(of\-torrents\)\-rush\-down;
+么 < interrogative\-particle;
+被 < passive\-indicator\-''by'';
+申 < to\-state\-to\-a\-superior;
+岡 < ridge\-or\-crest\-of\-hill;
+琴 < chinese\-lute\-or\-guitar;
+嬌 < seductive\-and\-loveable;
+罗 < net\-for\-catching\-birds;
+摸 < gently\-touch\-with\-hand;
+仰 < raise\-the\-head\-to\-look;
+臍 < abdominal\-area\-of\-crab;
+郑 < state\-in\-today''s\-henan;
+贯 < a\-string\-of\-1000\-coins;
+竭 < put\-forth\-great\-effort;
+秒 < beard\-of\-grain\-or\-corn;
+奚 < where\?\-what\?\-how\?\-why\?;
+盏 < small\-cup\-or\-container;
+萝 < type\-of\-creeping\-plant;
+梧 < sterculia\-platanifolia;
+咦 < expression\-of\-surprise;
+筐 < bamboo\-basket\-or\-chest;
+谍 < an\-intelligence\-report;
+篱 < bamboo\-or\-wooden\-fence;
+琶 < guitar\-like\-instrument;
+潺 < sound\-of\-flowing\-water;
+坳 < a\-hollow\-in\-the\-ground;
+埂 < ditches\-for\-irrigation;
+倌 < assistant\-in\-wine\-shop;
+霁 < to\-clear\-up\-after\-rain;
+邯 < city\-in\-hebei\-province;
+粑 < tsamba\-\(food\-in\-tibet\);
+蛀 < insects\-that\-eat\-books;
+嫦 < name\-of\-a\-moon\-goddess;
+赊 < buy\-and\-sell\-on\-credit;
+弑 < to\-kill\-one''s\-superior;
+摁 < to\-press\-with\-the\-hand;
+畹 < a\-field\-of\-20\-or\-30\-mu;
+觐 < have\-imperial\-audience;
+讦 < expose\-other''s\-secrets;
+旄 < a\-kind\-of\-ancient\-flag;
+趵 < noise\-of\-tramping\-feet;
+酹 < to\-pour\-out\-a\-libation;
+孳 < breed\-in\-large\-numbers;
+塄 < elevated\-bank\-in\-field;
+螈 < diemyelilus\-pyrogaster;
+窬 < a\-small\-door\-or\-window;
+笱 < a\-basket\-trap\-for\-fish;
+牿 < shed\-or\-pen\-for\-cattle;
+蛘 < a\-weevil\-found\-in\-rice;
+畎 < a\-drain\-between\-fields;
+職業中學 < vocational\-high\-school;
+網路節點介面 < network\-node\-interface;
+正在中國訪問 < during\-a\-trip\-to\-china;
+遺留 < \(leave\-or\-be\-a\)\-legacy;
+常規 < conventional\-\(weapons\);
+自食其果 < reap\-what\-one\-has\-sown;
+證券 < \(financial\)\-securities;
+不露聲色 < not\-show\-one''s\-feeling;
+慕道友 < religious\-investigator;
+往常 < habitually\-in\-the\-past;
+大煞風景 < dampening\-one''s\-spirit;
+剝採比 < stripping\-to\-ore\-ratio;
+羅曼語族 < romance\-language\-group;
+孰能生巧 < practice\-makes\-perfect;
+妖冶 < pretty\-and\-flirtatious;
+革命 < \(political\)\-revolution;
+論壇 < forum\-\(for\-discussion\);
+壟斷 < enjoy\-market\-dominance;
+牡丹 < peony\-\(type\-of\-flower\);
+報稅 < declare\-dutiable\-goods;
+目的地 < destination\-\(location\);
+公認 < publicly\-known\-\(to\-be\);
+嗷嗷待哺 < cry\-piteously\-for\-food;
+發表 < to\-issue\-\(a\-statement\);
+不痛不痒 < scratching\-the\-surface;
+國務院 < state\-department\-\(usa\);
+齯 < teeth\-grown\-in\-old\-age;
+電器 < \(electrical\)\-appliance;
+鹣 < fabulous\-mythical\-bird;
+殷勤 < politely\,\-solicitously;
+十五億 < one\-and\-a\-half\-billion;
+鰆 < scomberomorus\-sinensis;
+鮓 < minced\-and\-salted\-fish;
+紅燒肉 < red\-cooked\-\(pork\)\-meat;
+到期 < become\-due\-\(eg\,\-loans\);
+驌 < name\-of\-a\-famous\-horse;
+公安局 < public\-security\-bureau;
+病院 < a\-specialized\-hospital;
+聯網環境 < networking\-environment;
+韹 < music\-of\-bell\-and\-drum;
+解釋執行 < interpreted\-\(computer\);
+八小時工作制 < eight\-hour\-working\-day;
+消息靈通人士 < a\-well\-informed\-source;
+雘 < dye\-made\-from\-red\-soil;
+阇 < a\-buddhist\-high\-priest;
+不近人情 < not\-amenable\-to\-reason;
+鑐 < bolt\-of\-a\-chinese\-lock;
+政治機構 < political\-organization;
+錆 < the\-color\-of\-a\-mineral;
+鄐 < town\-in\-henan\-province;
+遰 < grunting\-sound\-of\-pigs;
+辥 < variety\-of\-marsh\-grass;
+病象 < symptom\-\(of\-a\-disease\);
+日本經濟新聞 < japanese\-economic\-news;
+欺凌 < to\-bully\-and\-humiliate;
+遍及 < to\-extend\-\(everywhere\);
+谂 < consult\-carefully\-with;
+簽署 < to\-sign\-\(an\-agreement\);
+詪 < difficulty\-in\-speaking;
+報導 < to\-cover\-\(report\)\-news;
+觿 < a\-bodkin\-made\-of\-ivory;
+布朗 < english\-surname\,\-brown;
+覀 < variant\-of\-radical\-146;
+褟 < inner\-shirt\-or\-singlet;
+衭 < the\-lapel\-of\-a\-garment;
+衦 < smooth\-out\-the\-clothes;
+標準 < \(an\-official\)\-standard;
+訊息傳遞中介 < message\-transfer\-agent;
+另眼相看 < to\-view\-in\-a\-new\-light;
+蕕 < caryopteris\-divaricata;
+蔯 < a\-variety\-of\-artemisia;
+萴 < medicinal\-poison\-plant;
+菶 < species\-of\-water\-plant;
+信息技術 < information\-technology;
+脤 < raw\-meat\-for\-sacrifice;
+發病率 < incidence\-of\-a\-disease;
+耬 < drill\-for\-sowing\-grain;
+疑問句 < interrogative\-sentance;
+耂 < variant\-of\-radical\-125;
+退休 < retirement\-\(from\-work\);
+繦 < string\-of\-copper\-coins;
+來回來去地 < backwards\-and\-forwards;
+安全考慮 < security\-consideration;
+緅 < silk\-of\-purplish\-color;
+趨附 < to\-ingratiation\-onself;
+此一時 < that\-was\-one\-situation;
+篢 < the\-name\-of\-bamboo\-hat;
+筆跡 < a\-person''s\-handwriting;
+信息管理 < information\-management;
+盡力 < do\-one''s\-best\-\(effort\);
+網絡層協議 < network\-layer\-protocol;
+筆記 < take\-down\-\(in\-writing\);
+不好惹 < not\-to\-be\-trifled\-with;
+褥子 < cotton\-padded\-mattress;
+癊 < a\-disease\-of\-the\-heart;
+瑱 < a\-gem\-used\-as\-ear\-plug;
+蹦蹦跳跳 < bouncing\-and\-vivacious;
+珣 < name\-of\-a\-kind\-of\-jade;
+玼 < beautiful\-color\-of\-gem;
+牷 < cow\-or\-ox\-of\-one\-color;
+儘快 < as\-quickly\-as\-possible;
+通信密度 < communications\-density;
+不得已 < act\-against\-one''s\-will;
+焄 < rising\-flames\-or\-fumes;
+烖 < calamities\-from\-heaven;
+沒有差別 < there\-is\-no\-difference;
+激昂 < aroused\-to\-indignation;
+不言而喻 < it\-goes\-without\-saying;
+工業化國家 < industrialized\-country;
+步調一致 < to\-be\-united\-in\-action;
+童話 < children''s\-fairy\-tales;
+殢 < be\-in\-great\-difficulty;
+槱 < firewood\-for\-sacrifice;
+上半年 < first\-half\-\(of\-a\-year\);
+不要臉 < have\-no\-sense\-of\-shame;
+背地風 < behind\-somebody''s\-back;
+用戶到網絡的接口 < user\-network\-interface;
+朏 < light\-of\-crescent\-moon;
+旐 < an\-embroidered\-pennant;
+攙 < to\-give\-a\-helping\-hand;
+提交 < submit\-\(a\-report\,\-etc\);
+摰 < to\-seize\-with\-the\-hand;
+供職 < hold\-an\-office\-or\-post;
+摀 < to\-cover\-with\-the\-hand;
+搾 < to\-crush\-with\-the\-hand;
+來自 < to\-come\-from\-\(a\-place\);
+定語 < attributive\-\(modifier\);
+近年來 < for\-the\-past\-few\-years;
+怹 < a\-polite\-version\-of\-he;
+漂流 < carried\-by\-the\-current;
+庈 < used\-in\-person''s\-names;
+嵶 < low\-part\-of\-a\-mountain;
+孒 < larvae\-of\-the\-mosquito;
+棄權 < to\-abstain\-from\-voting;
+捏合 < to\-act\-as\-a\-go\-between;
+壖 < open\-space\-along\-water;
+甲板 < deck\-\(of\-a\-boat\,\-etc\.\);
+其自身 < one''s\-own\-\(respective\);
+教義和聖約 < doctrine\-and\-covenants;
+噀 < spirt\-out\-of\-the\-mouth;
+梅派 < the\-mei\-lanfang\-school;
+火焰山 < the\-mountain\-of\-flames;
+涉過 < ford\-\(a\-stream\,\-river\);
+叝 < to\-respectfully\-inform;
+工作站 < \(computer\)\-workstation;
+體內 < internal\-\(to\-the\-body\);
+伮 < to\-make\-a\-great\-effort;
+通訊通道 < communications\-channel;
+䶥 < unevenly\-fitting\-teeth;
+䶤 < sound\-of\-chewing\-bones;
+䶂 < a\-squirrel\-like\-animal;
+䳮 < to\-look\-at\-in\-surprise;
+䲚 < a\-second\-name\-for\-shad;
+採訪記者 < investigative\-reporter;
+䰵 < looks\-like\-common\-carp;
+䰰 < dreary\-cries\-of\-ghosts;
+䮺 < luxuriant\-of\-the\-grass;
+䮪 < to\-geld\-a\-horse\-or\-ass;
+䩼 < stitches\-on\-a\-coverlet;
+䩍 < to\-look\-pale\-or\-pallid;
+䨵 < rained\-for\-a\-long\-time;
+䦈 < to\-sigh\-in\-lamentation;
+䥟 < a\-metal\-marking\-\-stake;
+脊椎 < back\-\(of\-a\-vertibrate\);
+伯父 < father''s\-elder\-brother;
+䢎 < indicating\-exclamation;
+䡵 < decoration\-on\-carriage;
+䡰 < strong\-and\-durable\-hub;
+䡬 < covering\-of\-a\-carriage;
+䡁 < not\-well\-formed\-figure;
+䟽 < scattered\-or\-dispersed;
+䞘 < to\-go\-straight\-forward;
+䝢 < an\-animal\-in\-old\-times;
+保安 < ensure\-public\-security;
+䝓 < long\-beard\-or\-whiskers;
+䜺 < husking\-beans\-for\-cake;
+䜡 < to\-smell\-the\-fragrants;
+䛙 < to\-smell\-the\-fragrance;
+䚞 < the\-middle\-of\-the\-horn;
+印歐人 < indo\-european\-\(person\);
+䙄 < clothes\-with\-thick\-hem;
+䘽 < clothing\-and\-ornaments;
+䕴 < a\-second\-for\-monkshood;
+䔠 < thin\-root\-of\-the\-lotus;
+䏩 < to\-shrug\-the\-shoulders;
+䍱 < the\-wild\-goat\-or\-sheep;
+䋪 < fine\-and\-delicate\-silk;
+䊏 < mixing\-rice\-with\-broth;
+䈄 < a\-kind\-of\-solid\-bamboo;
+上身 < upper\-part\-of\-the\-body;
+䇣 < bamboo\-with\-white\-bark;
+䄠 < to\-sacrifice\-to\-heaven;
+䃧 < sound\-of\-falling\-rocks;
+䀄 < container\-full\-of\-food;
+㿋 < a\-kind\-of\-skin\-disease;
+㼞 < jar\-with\-a\-small\-mouth;
+㺞 < to\-sign\-in\-lamentation;
+坦克車 < tank\-\(armored\-vehicle\);
+㸯 < a\-fine\-breed\-of\-cattle;
+比較而言 < comparatively\-speaking;
+㵯 < sound\-of\-water\-flowing;
+㳯 < goddess\-of\-an\-ink\-slab;
+㱆 < to\-smile\-at\-each\-other;
+㰨 < to\-take\-breath\-or\-rest;
+㮑 < sound\-of\-broken\-sticks;
+㭯 < tree\-with\-small\-leaves;
+字段 < \(numeric\,\-datda\)\-field;
+㫊 < fluttering\-of\-the\-flag;
+㪣 < a\-place\-in\-han\-dynasty;
+㪟 < to\-regard\-as\-important;
+㪞 < to\-be\-held\-by\-the\-hand;
+㩺 < a\-crack\-on\-the\-utensil;
+㩜 < to\-be\-in\-possession\-of;
+㩎 < to\-press\-with\-a\-finger;
+㧶 < the\-jingling\-of\-metals;
+㧙 < to\-give\-a\-playful\-blow;
+㧃 < to\-receive\-what\-is\-due;
+㦣 < to\-talk\-in\-one''s\-sleep;
+㦄 < hard\-to\-say\-or\-predict;
+㤊 < cheerful\-and\-exuberant;
+並舉 < develop\-simultaneously;
+㢉 < a\-room\-with\-open\-space;
+一號 < first\-day\-of\-the\-month;
+㠔 < shapes\-of\-the\-mountain;
+㟻 < the\-moat\-around\-a\-city;
+離開故鄉 < to\-leave\-one''\-homeland;
+㛳 < an\-abnomal\-unborn\-baby;
+㚷 < the\-breasts\-of\-a\-woman;
+㙳 < ruggedness\-of\-the\-road;
+㙤 < a\-crack\-in\-earthenware;
+㙘 < used\-in\-naming\-a\-place;
+㗂 < to\-keep\-the\-mouth\-shut;
+㖐 < sound\-of\-calling\-ducks;
+㔴 < agricultural\-implement;
+㓹 < a\-sharp\-pointed\-weapon;
+㓦 < to\-deliberate\-and\-plan;
+㓘 < jade\-with\-some\-defects;
+不像樣 < in\-no\-shape\-to\-be\-seen;
+審判 < put\-\(someone\)\-to\-trial;
+吐蕃 < ancient\-name\-for\-tibet;
+測定 < to\-survey\-and\-evaluate;
+泰羅 < \(english\-surname\)\-tylo;
+吞聲 < to\-swallow\-one''s\-cries;
+變分法 < calculus\-of\-variations;
+財會 < finance\-and\-accounting;
+通信網絡 < communications\-network;
+交易 < \(business\)\-transaction;
+西遊記 < pilgrimage\-to\-the\-west;
+數字通信 < digital\-communications;
+現役 < \(military\)\-active\-duty;
+共產黨員 < communist\-party\-member;
+民選 < democratically\-elected;
+海拔 < height\-above\-sea\-level;
+網路架構 < network\-infrastructure;
+科技 < science\-and\-technology;
+任免 < to\-appoint\-and\-dismiss;
+畢業生 < graduate\-\(of\-a\-school\);
+亂寫 < to\-write\-without\-basis;
+零錢 < change\-\(said\-of\-money\);
+不服 < not\-accept\-\(something\);
+鼻兒 < a\-hole\-in\-an\-implement;
+感嘆 < to\-sigh\-\(with\-feeling\);
+化裝 < \(of\-actors\)\-to\-make\-up;
+云南 < yunnan\-province\,\-china;
+服完 < serve\-out\-\(a\-sentence\);
+黃山 < mt\.\-huang\-\(huang\-shan\);
+古波 < gubo\-\(a\-personal\-name\);
+猜拳 < a\-finger\-guessing\-game;
+美國之音 < voice\-of\-america\-radio;
+背黑鍋 < to\-be\-made\-a\-scapegoat;
+助詞 < particle\-\(grammatical\);
+靈敏度 < \(level\-of\)\-sensitivity;
+標準組織 < standards\-organization;
+獨攬市場 < to\-monopolize\-a\-market;
+觉 < to\-wake\-up\-from\-sleep;
+環 < jade\-ring\-or\-bracelet;
+划 < to\-row\-or\-paddle\-boat;
+堪 < adequately\-capable\-of;
+吴 < name\-of\-warring\-state;
+鳴 < cry\-of\-bird\-or\-animal;
+呉 < one\-of\-warring\-states;
+馳 < go\-quickly\-or\-swiftly;
+榎 < small\-evergreen\-shrub;
+姻 < relatives\-by\-marriage;
+筒 < thick\-piece\-of\-bamboo;
+帘 < flag\-sign\-of\-a\-tavern;
+稻 < rice\-growing\-in\-field;
+禰 < one''s\-deceased\-father;
+剂 < medicinal\-preparation;
+珂 < inferior\-kind\-of\-jade;
+嘟 < sound\-of\-horn\-tooting;
+瑜 < flawless\-gem\-or\-jewel;
+珑 < a\-gem\-cut\-like\-dragon;
+诬 < make\-false\-accusation;
+嫖 < patronize\-prostitutes;
+飒 < the\-sound\-of\-the\-wind;
+锢 < run\-metal\-into\-cracks;
+掖 < support\-with\-the\-arms;
+棣 < kerria\-japonica\-plant;
+菁 < flower\-of\-leek\-family;
+咩 < the\-bleating\-of\-sheep;
+珉 < stone\-resembling\-jade;
+钎 < tool\-for\-boring\-holes;
+抟 < roll\-around\-with\-hand;
+趸 < sell\-or\-buy\-wholesale;
+妣 < one''s\-deceased\-mother;
+嵊 < district\-in\-shaohsing;
+笸 < flat\-basket\-for\-grain;
+肫 < the\-gizzard\-of\-a\-fowl;
+苫 < rush\-or\-straw\-matting;
+峤 < high\-pointed\-mountain;
+秭 < one\-thousand\-millions;
+姒 < wife\-of\-elder\-brother;
+蓰 < to\-increase\-five\-fold;
+蒌 < artemisia\-stelleriana;
+酃 < the\-spirit\-of\-a\-being;
+糗 < parched\-wheat\-or\-rice;
+辋 < exterior\-rim\-of\-wheel;
+髫 < children''s\-hair\-style;
+虺 < large\-poisonous\-snake;
+醵 < contribute\-for\-drinks;
+蚬 < a\-variety\-of\-bivalves;
+裼 < to\-take\-off\-one''s\-top;
+眵 < eyes\-diseased\-and\-dim;
+枵 < hollo\-stump\-of\-a\-tree;
+蘩 < artemisia\-stellariana;
+讓坐 < to\-give\-up\-one''s\-seat;
+彬彬有禮 < refined\-and\-courteous;
+網絡管理員 < network\-administrator;
+油價 < oil\-\(petroleum\)\-price;
+軟硬件 < software\-and\-hardware;
+巨額 < a\-huge\-sum\-\(of\-money\);
+奔放 < bold\-and\-unrestrained;
+得意 < \(be\)\-proud\-of\-oneself;
+完全兼容 < completely\-compatible;
+熱門貨 < goods\-in\-great\-demand;
+通信量 < communications\-volume;
+奔忙 < be\-busy\-rushing\-about;
+觀測衛星 < observation\-satellite;
+剛直 < upright\-and\-outspoken;
+巡邏 < be\-on\-\(police\)\-patrol;
+祝賀詞 < congratulatory\-speech;
+電腦輔助設計 < computer\-aided\-design;
+降福 < blessings\-from\-heaven;
+炸藥 < explosive\-\(substance\);
+幾十年 < several\-tens\-of\-years;
+夢想 < to\-dream\-of\-\(in\-vain\);
+防空 < anti\-aircraft\-defense;
+三萬七千 < thirty\-seven\-thousand;
+先進 < advanced\-\(technology\);
+大赦國際 < amnesty\-international;
+情報官員 < intelligence\-official;
+奔命 < rush\-about\-on\-errands;
+比方說 < to\-make\-an\-analogy\.\.\.;
+電磁噪聲 < electromagnetic\-noise;
+長途網路 < long\-distance\-network;
+芝加哥大學 < university\-of\-chicago;
+解決 < to\-settle\-\(a\-dispute\);
+鼃 < the\-edible\-water\-frog;
+麥芽糖 < maltose\-\(sweet\-syrup\);
+鷀 < the\-fishing\-cormorant;
+美聯社 < associated\-press\-\(ap\);
+鴠 < a\-kind\-of\-nightingale;
+防治 < \(prevention\-and\)\-cure;
+鰤 < seriola\-qinqueradiata;
+比色分析 < colorimetric\-analysis;
+鯄 < lepidotrigla\-strauchi;
+髈 < defined\-as\-the\-pelvis;
+推薦信 < recommendation\-letter;
+庫爾德人 < kurdish\-person\|people;
+微軟公司 < microsoft\-corporation;
+分機 < \(telephone\)\-extension;
+颸 < cool\-breeze\-of\-autumn;
+眾望 < people''s\-expectations;
+不識抬舉 < fail\-to\-appreciate\-sb;
+白糖 < \(refined\)\-white\-sugar;
+擁戴 < to\-support\-\(a\-person\);
+席卷亞洲 < to\-sweep\-through\-asia;
+表達 < to\-voice\-\(an\-opinion\);
+幾天來 < for\-the\-past\-few\-days;
+報時 < give\-the\-correct\-time;
+隨和 < amiable\-\(disposition\);
+作業環境 < operating\-environment;
+酎 < double\-fermented\-wine;
+函授 < correspondence\-course;
+迷戀 < to\-be\-infatuated\-with;
+陸海空三軍 < army\,\-navy\,\-air\-force;
+投了票 < past\-tense\-of\-to\-vote;
+肯尼迪 < kennedy\-\(proper\-name\);
+拗陷 < geological\-depression;
+免疫 < immunity\-\(to\-disease\);
+公然 < \(do\-something\)\-openly;
+智慧產權 < intellectual\-property;
+谺 < the\-mouth\-of\-a\-valley;
+堅持 < to\-continue\-upholding;
+出差 < be\-on\-a\-business\-trip;
+蠸 < aulacophora\-femoralis;
+漸進 < progress\-step\-by\-step;
+蜺 < reflection\-of\-rainbow;
+本土化軟件 < software\-localization;
+蘘 < a\-kind\-of\-wild\-ginger;
+限制 < \(impose\)\-restrictions;
+蕚 < the\-calyx\-of\-a\-flower;
+保護區 < conservation\-district;
+葹 < kind\-of\-chrysanthemum;
+萻 < small\-buddhist\-temple;
+年初 < beginning\-of\-the\-year;
+舚 < to\-put\-out\-the\-tongue;
+奧德賽 < the\-odyssey\,\-by\-homer;
+高級官員 < high\-ranking\-official;
+半夜三更 < in\-the\-depth\-of\-night;
+筆錄 < put\-down\-\(in\-writing\);
+按脈 < feel\-\(take\)\-the\-pulse;
+繴 < a\-kind\-of\-fishing\-net;
+竼 < bamboo\-cover\-for\-boat;
+取消禁令 < to\-life\-a\-prohibition;
+禨 < pray\-for\-good\-fortune;
+招聘 < take\-job\-applications;
+越南語 < vietnamese\-\(language\);
+癥 < obstruction\-of\-bowels;
+痏 < a\-bruise\-or\-contusion;
+持不同政見者 < \(political\)\-dissident;
+光州 < kwangju\-\(south\-korea\);
+實際應用 < practical\-application;
+璡 < jade\-look\-alike\-stone;
+工商 < industry\-and\-commerce;
+澳洲 < australia\-\(continent\);
+生產能力 < manufacturing\-ability;
+總統選舉 < presidential\-election;
+皮兒 < \(dough\,\-etc\.\)wrappers;
+澂 < clear\-and\-still\-water;
+甘肅 < gansu\-province\,\-china;
+不擇手段 < by\-fair\-means\-or\-foul;
+淜 < roar\-of\-dashing\-waves;
+沇 < flowing\-and\-engulfing;
+安閒 < peaceful\-and\-carefree;
+艱巨 < very\-difficult\-\(task\);
+蠻橫 < rude\-and\-unreasonable;
+簽字 < to\-sign\-\(a\-signature\);
+暎 < sun\-beginning\-decline;
+安適 < quiet\-and\-comfortable;
+國際標準 < interntional\-standard;
+金陵大學 < university\-of\-nanking;
+異質網路 < heterogeneous\-network;
+白手起家 < build\-up\-from\-nothing;
+嵼 < winding\-mountain\-path;
+葡萄牙語 < portuguese\-\(language\);
+測良 < to\-survey\-and\-measure;
+資料傳送服務 < data\-delivery\-service;
+班車 < regular\-bus\-\(service\);
+埵 < hardened\-dirt\-or\-clay;
+嗻 < to\-screen\.\-loquacious;
+案由 < main\-points\-of\-a\-case;
+貶謫 < banish\-from\-the\-court;
+黃魚 < yellow\-croaker\-\(fish\);
+身世 < one''s\-life\-experience;
+抱恨 < have\-a\-gnawing\-regret;
+匟 < divan\-for\-two\-persons;
+剾 < to\-pick\-up\-with\-knife;
+四年前 < four\-years\-previously;
+自古 < \(since\)\-ancient\-times;
+䵗 < to\-clean\-the\-withered;
+䵄 < to\-boil\-or\-stew\-wheat;
+䳹 < a\-kind\-dove\-like\-bird;
+䳝 < a\-kind\-of\-small\-birds;
+䱟 < a\-kind\-of\-silver\-fish;
+介質訪問控制 < medium\-access\-control;
+䯯 < hang\-down\-of\-the\-hair;
+䯭 < of\-nice\-and\-good\-hair;
+䮄 < an\-one\-year\-old\-horse;
+笆斗 < round\-bottomed\-basket;
+一臂之力 < \(lend\)\-a\-helping\-hand;
+䪥 < shallots\-or\-scallions;
+䩩 < a\-measure\-of\-capacity;
+䦽 < an\-east\-and\-west\-wall;
+製造商 < manufacturing\-company;
+䦚 < wide\-open\-of\-the\-door;
+䦌 < the\-door\-is\-wide\-open;
+二號 < 2\-nd\-day\-of\-the\-month;
+䥈 < the\-symbol\-for\-cobalt;
+不倫不類 < neither\-fish\-nor\-fowl;
+䤗 < taste\-of\-strong\-drink;
+䢩 < to\-forbid\-to\-prohibit;
+䡶 < vehicles\-and\-garments;
+䞚 < to\-hang\-on\-a\-big\-tree;
+䝖 < reptiles\-without\-feet;
+䛱 < to\-talk\-unremittingly;
+䛊 < cheerful\-all\-the\-time;
+䛃 < used\-in\-person''s\-name;
+䘐 < the\-bleed\-at\-the\-nose;
+䗉 < a\-small\-solitary\-wasp;
+基本原理 < fundamental\-principle;
+䖔 < a\-kind\-of\-white\-tiger;
+䖍 < to\-act\-with\-reverence;
+䔵 < fragrant\-thoroughwort;
+財經 < finance\-and\-economics;
+䔊 < dense\-growth\-of\-grass;
+䓒 < scirpus\-cyperinus\-var;
+撫養成人 < to\-bring\-up\-\(a\-child\);
+䒦 < grass\-floats\-on\-water;
+䒄 < fully\-laden\-of\-a\-boat;
+䑝 < a\-small\-cup\-with\-ears;
+䏤 < top\-of\-the\-human\-head;
+主語 < \(grammatical\)\-subject;
+䎶 < offering\-blood\-to\-god;
+通信服務 < communication\-service;
+䎚 < the\-end\-of\-bird\-wings;
+䎖 < soaring\-up\-in\-the\-sky;
+䌧 < a\-kind\-of\-silk\-fabric;
+䌟 < to\-weave\-silk\-ribbons;
+嘖嘖 < to\-click\-one''s\-tongue;
+䋂 < dresses\-for\-the\-bride;
+䈧 < skin\-of\-bamboo\-shoots;
+䈞 < ancient\-name\-of\-india;
+䇾 < a\-flute\-with\-23\-tubes;
+䇰 < a\-bamboo\-binded\-torch;
+䇡 < the\-shuttle\-of\-a\-loom;
+䆠 < a\-government\-official;
+䆛 < something\-in\-the\-cave;
+鼻祖 < the\-earliest\-ancestor;
+䅗 < four\-bundle\-of\-grains;
+反革命 < counter\-revolutionary;
+䁭 < to\-give\-an\-angry\-look;
+䁚 < a\-kind\-of\-eye\-disease;
+䀽 < to\-look\-at\-each\-other;
+䀠 < a\-chinese\-family\-name;
+䀓 < to\-turn\-one''s\-eyes\-to;
+㿴 < wide\-piece\-of\-leather;
+㿫 < to\-split\-tangled\-hemp;
+㿏 < paralysis\-of\-the\-body;
+㾾 < disease\-of\-the\-throat;
+㼲 < sound\-of\-broken\-tiles;
+戀愛 < to\-have\-a\-love\-affair;
+㼐 < a\-kind\-of\-white\-melon;
+㹶 < a\-kind\-of\-wild\-animal;
+㹦 < dog\-with\-a\-short\-tail;
+㹔 < cattle\-with\-long\-back;
+暴跌 < steep\-fall\-\(in\-price\);
+㵨 < a\-dry\-land\-in\-a\-river;
+㳈 < a\-great\-flow\-of\-water;
+讓開 < to\-get\-out\-of\-the\-way;
+㱟 < to\-rip\-open\-the\-flesh;
+㰄 < a\-small\-chestnut\-tree;
+㮗 < the\-handle\-of\-a\-spear;
+㭍 < capital\-form\-of\-seven;
+㬠 < to\-expose\-to\-sunlight;
+檔案分配區 < file\-allocation\-table;
+㩟 < to\-sew\-some\-ornaments;
+㨌 < to\-milk\-a\-cow\-or\-goat;
+就便 < at\-\(your\)\-convenience;
+可身 < to\-fit\-well\-\(clothes\);
+科研 < \(scientific\)\-research;
+㠋 < a\-lofty\-mountain\-peak;
+㟞 < precipitous\-and\-lofty;
+㟝 < to\-bank\-up\-with\-earth;
+㟜 < shape\-of\-the\-mountain;
+㟖 < a\-dialect\-of\-minority;
+㟎 < a\-long\-mountain\-ridge;
+㞁 < can\-not\-walk\-normally;
+㘰 < name\-of\-a\-old\-country;
+㘡 < a\-pen\-for\-wild\-beasts;
+㘖 < to\-make\-a\-disturbance;
+老兩口 < an\-old\-married\-couple;
+㗁 < the\-roof\-of\-the\-mouth;
+㖗 < high\-ridges\-of\-cliffs;
+地對空導彈 < ground\-to\-air\-missile;
+㕢 < profound\-significance;
+可謂 < it\-could\-even\-be\-said;
+讓路 < to\-make\-way\-\(for\-sth\);
+㒆 < to\-gather\-the\-harvest;
+戶主 < head\-of\-the\-household;
+頒行 < issue\-for\-enforcement;
+國營企業 < nationalized\-industry;
+二十八號 < 28th\-day\-of\-the\-month;
+湖南 < hunan\-province\,\-china;
+本固枝榮 < when\-the\-root\-is\-firm;
+傳輸設備 < transmission\-facility;
+餘數 < \(numerical\)\-remainder;
+不管 < no\-matter\-\(what\,\-how\);
+版面 < space\-of\-a\-whole\-page;
+不是味兒 < not\-the\-right\-flavour;
+不禁 < can''t\-help\-\(doing\-sth;
+隨機時間 < random\-period\-of\-time;
+昏迷 < to\-lose\-consciousness;
+吐絮 < the\-opening\-of\-a\-boll;
+鋪平 < spread\-out\-\(material\);
+傳輸距離 < transmission\-distance;
+拜把子 < become\-sworn\-brothers;
+北寒帶 < the\-north\-frigid\-zone;
+不理 < refuse\-to\-acknowledge;
+變臉 < suddenly\-turn\-hostile;
+印度尼西亞語 < indonesian\-\(language\);
+海斯 < hayes\-\(microcomputer\);
+東德 < \(former\)\-east\-germany;
+暗礁 < submerged\-reef\-\(rock\);
+買好 < to\-ingratiate\-oneself;
+八路軍 < the\-eighth\-route\-army;
+暗疾 < unmentionable\-disease;
+聳動 < to\-create\-a\-sensation;
+另起爐灶 < to\-start\-from\-scratch;
+首腦會議 < leadership\-conference;
+板凳 < wooden\-bench\-or\-stool;
+不暇 < have\-no\-time\-\(for\-sth;
+悲憤 < grief\-and\-indignation;
+不信任投票 < vote\-of\-no\-confidence;
+南北極 < south\-and\-north\-poles;
+如出一轍 < be\-precisely\-the\-same;
+董事長 < chairman\-of\-the\-board;
+本人的觀點 < \(one''s\)\-personal\-view;
+特產 < special\-local\-product;
+蕭條 < \(economic\)\-depression;
+不行了 < on\-the\-point\-of\-death;
+矮杆品種 < short\-stalked\-variety;
+殯葬 < funeral\-and\-interment;
+命令 < \(an\)\-order\-or\-command;
+流亡 < to\-\(force\-into\)\-exile;
+絞盡腦汁 < to\-wrack\-one''s\-brains;
+光磁碟機 < magneto\-optical\-drive;
+卡西尼 < cassini\-\(proper\-name\);
+卑污 < despicable\-and\-filthy;
+國有企業 < nationalized\-business;
+暴卒 < die\-of\-sudden\-illness;
+逼視 < look\-at\-from\-close\-up;
+旺月 < busy\-\(business\)\-month;
+什 < file\-of\-ten\-soldiers;
+責 < one''s\-responsibility;
+爵 < feudal\-title\-or\-rank;
+啊 < exclamatory\-particle;
+楚 < name\-of\-feudal\-state;
+托 < to\-hold\-up\-with\-palm;
+汲 < draw\-water\-from\-well;
+魅 < kind\-of\-forest\-demon;
+伊 < third\-person\-pronoun;
+鸿 < species\-of\-wild\-swan;
+姥 < maternal\-grandmother;
+捧 < hold\-up\-in\-two\-hands;
+乙 < second\-heaven''s\-stem;
+吁 < interjection\-''alas\!'';
+姨 < mother\/wife''s\-sister;
+亩 < chinese\-land\-measure;
+僵 < stiff\-and\-motionless;
+拱 < fold\-hands\-on\-breast;
+禾 < grain\-still\-on\-stalk;
+嗡 < sound\-of\-flying\-bees;
+猩 < species\-of\-orangutan;
+狞 < ferocious\-appearance;
+拈 < pick\-up\-with\-fingers;
+陛 < steps\-leading\-throne;
+鸯 < female\-mandarin\-duck;
+卯 < th\-of\-earth\-branches;
+熠 < bright\-and\-sparkling;
+阂 < blocked\-or\-separated;
+淅 < water\-used\-wash\-rice;
+佚 < indulge\-in\-pleasures;
+辚 < rumbling\-of\-vehicles;
+巽 < th\-of\-the\-8\-trigrams;
+訇 < the\-sound\-of\-a\-crash;
+狺 < the\-snarling\-of\-dogs;
+浔 < steep\-bank\-by\-stream;
+蓊 < luxuriant\-vegetation;
+蓠 < gracilaria\-verrucosa;
+菀 < luxuriance\-of\-growth;
+胗 < pustules\-of\-any\-kind;
+颃 < fly\-down\-or\-downward;
+垆 < black\-clods\-of\-earth;
+樗 < ailanthus\-glandulosa;
+蚧 < a\-red\-spotted\-lizard;
+缶 < earthen\-crock\-or\-jar;
+豳 < a\-zhou\-dynasty\-state;
+轺 < small\-light\-carriage;
+逯 < leave\-without\-reason;
+列車 < train\-\(railway\-term\);
+友好 < friendly\-\(relations\);
+櫃邊 < to\-lie\-on\-one''s\-side;
+制裁 < \(economic\)\-sanctions;
+社交 < \(social\)\-interaction;
+操行 < \(student''s\)\-behavior;
+光磁碟 < magneto\-optical\-disk;
+編組 < organize\-into\-groups;
+親近 < get\-close\-to\-someone;
+博覽會 < \(international\)\-fair;
+多種語言支持 < multilingual\-support;
+結論 < \(reach\-a\)\-conclusion;
+闡述 < expound\-\(a\-position\);
+維吾爾人 < uighur\-person\|people;
+開除學籍 < to\-expel\-from\-school;
+心寒 < be\-very\-disappointed;
+組裝 < assemble\-and\-install;
+誓死 < to\-pledge\-one''s\-life;
+一般性 < \(in\)\-general\-\(terms\);
+城鄉 < city\-and\-countryside;
+協定 < \(reach\-an\)\-agreement;
+逋逃藪 < refuge\-for\-fugitives;
+首席代表 < chief\-representative;
+水域 < \(territorial\)\-waters;
+勻整 < neat\-and\-well\-spaced;
+白眼珠 < the\-white\-of\-the\-eye;
+物理結構 < physical\-composition;
+內閣 < \(government\)\-cabinet;
+廠牌 < brand\-\(of\-a\-product\);
+奶奶 < paternal\-grandmother;
+編次 < order\-of\-arrangement;
+國會議長 < speaker\-of\-the\-house;
+應用平台 < application\-platform;
+教授 < university\-professor;
+勢必 < is\-bound\-to\-\(happen\);
+墨汁 < prepared\-chinese\-ink;
+大將 < a\-general\-or\-admiral;
+氣人 < to\-get\-someone\-angry;
+包場 < book\-a\-whole\-theatre;
+六號 < 6th\-day\-of\-the\-month;
+匈牙利語 < hungarian\-\(language\);
+詞彙 < \(list\-of\)\-vocabulary;
+軟體配送者 < software\-distributor;
+不信任案 < no\-confidence\-motion;
+齞 < to\-display\-the\-teeth;
+鼈 < a\-fresh\-water\-turtle;
+鼂 < a\-kind\-of\-sea\-turtle;
+捕蟲葉 < insect\-catching\-leaf;
+鸇 < kind\-of\-bird\-of\-prey;
+攝影 < to\-take\-a\-photograph;
+鸂 < a\-kind\-of\-water\-bird;
+鷫 < turquoise\-kingfisher;
+鷁 < fishhawk\-bow\-or\-prow;
+改善關係 < to\-improve\-relations;
+辯白 < offer\-an\-explanation;
+鰜 < big\-mouthed\-flounder;
+髺 < the\-hair\-dishevelled;
+採訪 < cover\-\(a\-news\-story\);
+骣 < horse\-without\-saddle;
+停火協議 < cease\-fire\-agreement;
+餽 < make\-present\-of\-food;
+兵站 < army\-service\-station;
+韱 < wild\-onions\-or\-leeks;
+軍費 < military\-expenditure;
+二十二號 < 22\-nd\-day\-of\-a\-month;
+霃 < long\-continued\-rains;
+據悉 < according\-to\-reports;
+前年 < the\-year\-before\-last;
+闍 < tower\-over\-city\-gate;
+補色 < complementary\-colour;
+攻勢 < \(military\)\-offensive;
+確有其事 < \(confirm\-to\-be\)\-true;
+大型企業 < large\-scale\-industry;
+分擔 < share\-responsibility;
+鍱 < thin\-plates\-of\-metal;
+使徒行傳 < acts\-of\-the\-apostles;
+鉶 < sacrificial\-cauldron;
+開發 < exploit\-\(a\-resource\);
+歷代 < successive\-dynasties;
+醰 < bitter\-taste\-in\-wine;
+近日 < in\-the\-past\-few\-days;
+回訪 < \(pay\-a\)\-return\-visit;
+必不可少 < absolutely\-necessary;
+病變 < pathological\-changes;
+凌晨 < early\-in\-the\-morning;
+趂 < to\-take\-advantage\-of;
+不雅觀 < offensive\-to\-the\-eye;
+接收器靈敏度 < receiver\-sensitivity;
+不在話下 < be\-nothing\-difficult;
+陳述句 < declarative\-sentence;
+襬 < lower\-part\-of\-a\-robe;
+這個月 < this\-\(current\)\-month;
+袳 < spread\-one''s\-clothes;
+歷來最低點 < all\-time\-low\-\(point\);
+倍頻器 < frequency\-multiplier;
+槳狀 < certificate\-of\-merit;
+蜛 < hydrophilus\-cognatus;
+蛚 < cyrtoxiphus\-ritsemae;
+民族主義情緒 < nationalist\-feelings;
+領導權 < leadership\-authority;
+薢 < woody\-climbing\-plant;
+倚重 < to\-rely\-heavily\-upon;
+紀念日 < day\-of\-commemoration;
+茀 < overgrown\-with\-grass;
+芄 < metaplexis\-stauntoni;
+應用軟件 < application\-software;
+舺 < place\-name\-in\-taiwan;
+脡 < strips\-of\-dried\-meat;
+把酒 < raise\-one''s\-wine\-cup;
+軍用 < \(for\)\-military\-\(use\);
+交換技術 < switching\-technology;
+米德爾伯裡 < middlebury\-\(college\);
+保重 < take\-care\-of\-oneself;
+報仇 < to\-revenge\-\(oneself\);
+抄身 < to\-search\-\(a\-person\);
+粃 < empty\-husks\-of\-grain;
+程式語言 < programming\-language;
+白棉紙 < stencil\-tissue\-paper;
+窣 < to\-rush\-out\-of\-a\-den;
+穇 < panicum\-frumentaceum;
+棉襖 < cotton\-padded\-jacket;
+磒 < to\-fall\-from\-or\-into;
+儘早 < as\-early\-as\-possible;
+矑 < the\-pupil\-of\-the\-eye;
+睍 < to\-look\-at\-fearfully;
+培修 < to\-repair\-earthworks;
+尊重 < to\-value\-\(something\);
+甽 < drain\-between\-fields;
+甃 < brick\-wall\-of\-a\-well;
+發表聲明 < to\-issue\-a\-statement;
+琖 < carved\-jade\-wine\-cup;
+玦 < broken\-piece\-of\-jade;
+病灶 < focus\-\(of\-infection\);
+兩點十九分 < 2\-\:1\-9\-\(time\-of\-day\);
+侵襲 < to\-invade\-and\-attack;
+瀳 < to\-arrive\-\(of\-water\);
+電子工業 < electronics\-industry;
+澬 < to\-rain\-continuously;
+簡朴 < simple\-and\-unadorned;
+駁運 < transport\-by\-lighter;
+挪窩兒 < to\-move\-\(to\-a\-house\);
+召開會議 < to\-call\-a\-conference;
+洤 < a\-fountain\-or\-spring;
+例言 < introductory\-remarks;
+備查 < for\-future\-reference;
+槾 < paste\-wall\-with\-dirt;
+德國人 < german\-person\|people;
+棨 < tally\-or\-wooden\-pass;
+桬 < pear\-and\-other\-trees;
+安逸 < easy\-and\-comfortable;
+敳 < to\-govern\-forcefully;
+敁 < to\-weigh\-in\-the\-hand;
+病房 < ward\-\(of\-a\-hospital\);
+百事通 < knowledgeable\-person;
+表彰 < cite\-\(in\-dispatches\);
+搎 < to\-rub\-with\-the\-hand;
+不死心 < unwilling\-to\-give\-up;
+礦泉水 < mineral\-spring\-water;
+吃不下 < not\-feel\-like\-eating;
+幀檢驗序列 < frame\-check\-sequence;
+萬維網 < world\-wide\-web\-\(www\);
+商業應用 < business\-application;
+每況愈下 < steadily\-deteriorate;
+拜會 < pay\-an\-official\-call;
+專程 < special\-purpose\-trip;
+媒體訪問控制 < media\-access\-control;
+偽幣 < counterfeit\-currency;
+軍事機構 < military\-institution;
+嵏 < a\-mountain\-in\-shenxi;
+才略 < ability\-and\-sagacity;
+孭 < to\-carry\-on\-the\-back;
+四年制的大學 < four\-year\-university;
+層次 < arrangement\-of\-ideas;
+判處死刑 < to\-sentance\-to\-death;
+嫋 < slender\-and\-delicate;
+婣 < marriage\-connections;
+筆法 < technique\-of\-writing;
+實體層 < physical\-layer\-\(osi\);
+囬 < to\-return\-to\-or\-from;
+交通 < \(automobile\)\-traffic;
+現階段 < at\-the\-present\-stage;
+貨幣貶值 < currency\-devaluation;
+叛國罪 < the\-crime\-of\-treason;
+按照法律 < according\-to\-the\-law;
+劂 < chisel\-for\-engraving;
+啟程 < set\-out\-on\-a\-journey;
+不完全中立 < imperfect\-neutrality;
+畫報 < pictorial\-\(magazine\);
+北回歸線 < the\-tropic\-of\-cancer;
+克里斯托弗 < \(warren\)\-christopher;
+電子元件 < electronic\-component;
+經濟衰退 < \(economic\)\-recession;
+䶙 < swelling\-of\-the\-gums;
+䶊 < to\-bleed\-at\-the\-nose;
+光二極管 < light\-emitting\-diode;
+䴟 < an\-one\-year\-old\-deer;
+䳳 < a\-kind\-of\-small\-bird;
+䳑 < a\-pheasant\-like\-bird;
+䲱 < a\-kind\-of\-black\-bird;
+䲕 < the\-yangtze\-porpoise;
+䱐 < a\-kind\-of\-black\-fish;
+䱀 < a\-kind\-of\-small\-fish;
+侵擾 < to\-invade\-and\-harass;
+屏幕 < \(tv\-or\-movie\)\-screen;
+䮡 < a\-supernatural\-horse;
+䮂 < horse\-with\-long\-hair;
+䭷 < horse\-with\-long\-mane;
+䬩 < to\-abstain\-from\-meat;
+䬣 < a\-sacrificial\-victim;
+䫠 < short\-hair\-and\-beard;
+錦標賽 < championship\-contest;
+䩽 < a\-quiver\-one\-a\-horse;
+䩂 < to\-come\-to\-the\-front;
+球網 < net\-\(for\-ball\-games\);
+䧗 < mountains\-collapsing;
+䦦 < a\-musical\-instrument;
+䥤 < the\-neck\-of\-a\-pestle;
+䥄 < to\-plaster\-with\-gold;
+䤸 < short\-spear\-or\-lance;
+不穩平衡 < unstable\-equilibrium;
+漢化 < chinese\-localization;
+䠑 < between\-the\-buttocks;
+䠈 < hard\-to\-move\-forward;
+䟩 < hard\-of\-walk\-forward;
+䞙 < to\-walk\-in\-hurriedly;
+䝑 < a\-local\-produced\-pig;
+䜧 < to\-insult\-with\-words;
+䜓 < a\-slip\-of\-the\-tongue;
+䛌 < to\-provoke\-or\-arouse;
+䙮 < strip\-of\-the\-clothes;
+䘾 < legs\-of\-the\-trousers;
+信息資源 < information\-resource;
+䕫 < a\-one\-legged\-monster;
+䔈 < lush\-growth\-of\-grass;
+六十五歲 < sixty\-five\-years\-old;
+䑠 < long\-and\-narrow\-boat;
+䐸 < the\-back\-of\-the\-knee;
+䏿 < the\-calf\-of\-the\-legs;
+䏡 < uncooked\-or\-raw\-meat;
+䊳 < to\-break\-into\-pieces;
+䊲 < to\-hull\-rice\-roughly;
+䊂 < poor\-quality\-of\-rice;
+對峙 < mutual\-confrontation;
+䉑 < black\-skinned\-bamboo;
+䈦 < a\-curved\-bamboo\-whip;
+䈑 < tools\-to\-unreel\-silk;
+䈁 < tools\-used\-on\-a\-boat;
+䇘 < tool\-to\-collect\-rope;
+䆣 < abode\-of\-the\-emperor;
+䆏 < a\-kind\-of\-rice\-plant;
+䅮 < a\-full\-head\-of\-grain;
+䅓 < curved\-piece\-of\-wood;
+䅏 < rice\-boiled\-to\-gruel;
+䄯 < ten\-handle\-of\-grains;
+美軍 < us\-army\|armed\-forces;
+䄂 < to\-pray\-and\-to\-curse;
+䃰 < brick\-or\-stone\-steps;
+䂒 < short\-to\-curry\-favor;
+䂂 < to\-gaze\-at\-in\-terror;
+䁬 < to\-act\-pretentiously;
+䀷 < to\-have\-quick\-glance;
+䀲 < diseases\-in\-the\-eyes;
+位於 < be\-situated\-\(in\,\-at\);
+㿸 < to\-cast\-off\-the\-skin;
+㿞 < an\-old\-man\-of\-eighty;
+㽤 < a\-small\-plot\-of\-land;
+㽢 < to\-plough\-the\-fields;
+㽕 < new\-branches\-growing;
+㽃 < a\-big\-piece\-of\-brick;
+㼢 < bricks\-an\-eathen\-jar;
+㼉 < green\-colored\-melons;
+㻮 < bright\-and\-brilliant;
+㺮 < fine\-stone\-like\-jade;
+㺂 < big\-and\-strong\-sheep;
+㹘 < shinbone\-of\-a\-cattle;
+㸪 < an\-ox\-walking\-slowly;
+變頻 < frequency\-conversion;
+競爭力 < competitive\-strength;
+㷙 < to\-fry\-in\-fat\-or\-oil;
+㶔 < swift\-and\-torrential;
+㵞 < bellied\-in\-water\-gas;
+㳼 < bubbling\-of\-fountain;
+㳚 < flowing\-of\-the\-water;
+㳔 < to\-soak\-or\-be\-soaked;
+㲫 < hair\-knots\-in\-a\-mess;
+㰋 < a\-kind\-of\-fruit\-tree;
+㯌 < to\-operate\-or\-manage;
+智能大樓 < intelligent\-building;
+少數民族 < minority\-nationality;
+單字 < individual\-character;
+㭞 < a\-kind\-inferior\-wood;
+㭒 < a\-farming\-instrument;
+㩻 < rugged\-mountain\-path;
+㩔 < a\-tool\-to\-make\-a\-bow;
+㧹 < to\-strike\-with\-fists;
+背心 < a\-sleeveless\-garment;
+戶口 < registered\-residence;
+㡙 < curtain\-for\-carriage;
+本科 < undergraduate\-course;
+㠗 < deep\-in\-the\-mountain;
+㞟 < savings\-and\-reserves;
+㙣 < to\-pile\-a\-sand\-hills;
+便中 < at\-one''s\-convenience;
+㙑 < the\-canopy\-of\-heaven;
+㘎 < the\-roars\-of\-a\-tiger;
+鑒定委員會 < evaluation\-committee;
+㘅 < to\-hold\-in\-the\-mouth;
+寶劍 < a\-double\-edged\-sword;
+㕡 < the\-bed\-of\-a\-torrent;
+㕌 < to\-raise\-the\-curtain;
+㔋 < cut\-into\-thin\-slices;
+㒅 < to\-unbind\-the\-collar;
+㑉 < cannot\-straighten\-up;
+醞釀 < mull\-over\-\(an\-issue\);
+全面禁止 < complete\-prohibition;
+暗號 < secret\-signal\-\(sign\);
+老爺 < maternal\-grandfather;
+班期 < schedule\-\(for\-flight;
+買方 < buyer\-\(in\-contracts\);
+安娜 < anna\-\(person''s\-name\);
+騾馬大車 < mule\-and\-horse\-carts;
+經濟發展 < economic\-development;
+通訊系統 < communication\-system;
+責成 < give\-somebody\-a\-task;
+不二法門 < the\-one\-and\-only\-way;
+邏輯鏈路控制 < logical\-link\-control;
+多麼 < how\-\(wonderful\,\-etc\);
+酬謝 < to\-thank\-with\-a\-gift;
+無價珍珠 < pearl\-of\-great\-price;
+往返 < to\-go\-back\-and\-forth;
+包金 < cover\-with\-gold\-leaf;
+未成年者 < minor\-\(not\-an\-adult\);
+暑熱 < hot\-\(summer\)\-weather;
+巡迴分析端口 < roving\-analysis\-port;
+伊斯蘭堡 < islamabad\-\(pakistan\);
+運動會 < a\-sports\-competition;
+不曾 < never\-\(have\-done\-sth;
+總部 < general\-headquarters;
+貶值 < to\-become\-devaluated;
+遺骸 < \(dead\)\-human\-remains;
+二十四號 < 24\-th\-day\-of\-a\-month;
+類推 < to\-reason\-by\-analogy;
+大失所望 < greatly\-dissapointed;
+和好 < to\-become\-reconciled;
+本土 < one''s\-native\-country;
+亞倫 < aaron\-\(a\-man''s\-name\);
+羞恥 < \(a\-feeling\-of\)\-shame;
+哈佛 < harvard\-\(university\);
+暑期 < summer\-vacation\-time;
+企業集團 < industry\-association;
+管理接口 < management\-interface;
+呼喊 < shout\-\(slogans\,\-etc\);
+繽紛 < in\-riotous\-profusion;
+呈報 < to\-\(submit\-a\)\-report;
+生產設備 < production\-equipment;
+半白 < fifty\-\(years\-of\-age\);
+𠁥 < the\-horns\-of\-a\-sheep;
+跑龍套 < to\-play\-a\-small\-role;
+昂然 < upright\-and\-unafraid;
+還說 < to\-add\-\(in\-speaking\);
+更加 < more\-\(than\-sth\-else\);
+德雷爾 < \(june\-teufel\)\-dreyer;
+義務教育 < cumpulsory\-education;
+爺爺 < paternal\-grandfather;
+傳輸控制 < transmission\-control;
+不勝 < cannot\-bear\-or\-stand;
+敗胃 < spoil\-one''s\-appetite;
+變心 < cease\-to\-be\-faithful;
+不懷好意 < harbour\-evil\-designs;
+上個 < first\-\(of\-two\-parts\);
+只不過幾年前 < only\-a\-few\-years\-ago;
+幾 < how\-many\?\-how\-much\?;
+奏 < memorialize\-emperor;
+您 < honorific\-for\-''you'';
+吏 < government\-official;
+兀 < to\-cut\-off\-the\-feet;
+胴 < the\-large\-intestine;
+秦 < feudal\-state\-of\-qin;
+桁 < cross\-beams\-of\-roof;
+莎 < kind\-of\-sedge\-grass;
+薛 < kind\-of\-marsh\-grass;
+絣 < to\-baste\-for\-sewing;
+悖 < be\-contradictory\-to;
+芒 < miscanthus\-sinensis;
+嘶 < neighing\-of\-a\-horse;
+叽 < sigh\-in\-disapproval;
+厥 < personal\-pronoun\-he;
+圭 < jade\-pointed\-at\-top;
+徘 < walk\-back\-and\-forth;
+晤 < have\-interview\-with;
+舷 < the\-sides\-of\-a\-boat;
+邬 < various\-place\-names;
+褐 < coarse\-woolen\-cloth;
+馈 < offer\-food\-superior;
+唧 < chirping\-of\-insects;
+咔 < used\-in\-translation;
+灸 < cauterize\-with\-moxa;
+驷 < team\-of\-four\-horses;
+粼 < clear\-\(as\-of\-water\);
+羚 < species\-of\-antelope;
+呓 < talk\-in\-one''s\-sleep;
+篙 < pole\-used\-punt\-boat;
+湍 < rapid\-water\-current;
+脍 < minced\-meat\-or\-fish;
+鏖 < to\-fight\-to\-the\-end;
+肽 < a\-chemical\-compound;
+銮 < bells\-hung\-on\-horse;
+笳 < a\-reed\-leaf\-whistle;
+薏 < seed\-of\-job''s\-tears;
+悝 < to\-laugh\-at\-to\-pity;
+豇 < a\-small\-kidney\-bean;
+桉 < eucalyptus\-globulus;
+蹁 < to\-walk\-with\-a\-limp;
+腈 < an\-organic\-compound;
+螟 < kind\-of\-caterpillar;
+泮 < zhou\-dynasty\-school;
+鲳 < the\-silvery\-pomfret;
+霪 < long\-and\-heavy\-rain;
+枘 < the\-handle\-of\-tools;
+滹 < the\-bank\-of\-a\-steam;
+彳 < step\-with\-left\-foot;
+亍 < to\-take\-small\-steps;
+砘 < a\-kind\-of\-farm\-tool;
+栎 < chestnut\-leaved\-oak;
+鹇 < the\-silver\-pheasant;
+苌 < averrhora\-carambola;
+郛 < outer\-walls\-of\-city;
+醢 < minced\-pickled\-meat;
+眚 < disease\-of\-the\-eyes;
+裉 < s\-seam\-in\-a\-garment;
+崦 < a\-mountain\-in\-kansu;
+兕 < a\-female\-rhinoceros;
+診斷功能 < diagnostic\-function;
+財政部 < ministry\-of\-finance;
+奔流 < flow\-at\-great\-speed;
+廣告商 < advertising\-company;
+一百五十多年 < more\-than\-150\-years;
+日文 < japanese\-\(language\);
+馬來西亞語 < malasian\-\(language\);
+撞見 < to\-meet\-by\-accident;
+差額 < balance\-\(financial\);
+半截 < half\-\(of\-a\-section\);
+剛纔 < \(just\)\-a\-moment\-ago;
+慰安婦 < comfort\-woman\|women;
+折射率 < index\-of\-refraction;
+廠礦 < factories\-and\-mines;
+傳輸媒體 < transmission\-medium;
+起死回生 < arise\-from\-the\-dead;
+熱烈 < warm\-\(welcome\,\-etc\);
+高階語言 < high\-level\-language;
+年代初 < beginning\-of\-an\-age;
+亞洲與太平洋地區 < asia\-pacific\-region;
+辯護 < speak\-in\-defence\-of;
+美國人民 < the\-american\-people;
+哥倫比亞大學 < columbia\-university;
+防禦性 < defensive\-\(weapons\);
+過了五分鐘 < five\-minutes\-passed;
+打橫炮 < speak\-unwarrantedly;
+大批 < large\-quantities\-of;
+面嚮連接 < connection\-oriented;
+專業人才 < expert\-\(in\-a\-field\);
+無縫連接 < seamless\-connection;
+綁票 < kidnap\-\(for\-ransom\);
+白銅 < copper\-nickel\-alloy;
+克羅地亞語 < croatian\-\(language\);
+統稱 < collectively\-called;
+發言權 < the\-right\-of\-speech;
+廢氣 < waste\-\(exhaust\)\-gas;
+討論的議題 < topic\-of\-discussion;
+包子 < steamed\-stuffed\-bun;
+紅葉 < red\-autumnal\-leaves;
+層見迭出 < to\-occur\-frequently;
+百貨 < general\-merchandise;
+鬢髮 < hair\-on\-the\-temples;
+美國以外 < outside\-of\-the\-u\.s\.;
+儘量 < as\-much\-as\-possible;
+身高 < \(a\-person''s\)\-height;
+教學 < teacher\-and\-student;
+鄙人 < your\-humble\-servant;
+地址的轉換 < address\-translation;
+故宮 < the\-imperial\-palace;
+政局 < political\-situation;
+睿智 < wise\-and\-farsighted;
+自動地工作 < automatic\-operation;
+此時此刻 < at\-this\-very\-moment;
+鸒 < the\-eastern\-jackdaw;
+鶲 < siberian\-flycatcher;
+年之久 < period\-of\-\.\.\.\-years;
+補角 < supplementary\-angle;
+鰶 < konosirus\-punctatus;
+鯥 < pomatomus\-saltatrix;
+鯕 < coryphaena\-hippurus;
+鮶 < sebastodes\-guntheri;
+進攻 < attack\-\(militarily\);
+擺弄 < move\-back\-and\-forth;
+不中意 < not\-to\-one''s\-liking;
+飂 < wind\-in\-high\-places;
+颾 < blowing\-of\-the\-wind;
+頍 < to\-raise\-one''s\-head;
+韘 < archer''s\-thumb\-ring;
+鞬 < a\-quiver\-on\-a\-horse;
+貿易保護主義 < trade\-protectionism;
+遍布 < be\-found\-everywhere;
+多黨選舉 < multiparty\-election;
+霶 < downpouring\-of\-rain;
+霮 < denseness\-of\-clouds;
+光纖衰減 < optical\-attenuation;
+改名 < to\-change\-ones\-name;
+鑴 < to\-engrave\-or\-carve;
+不勞而獲 < reap\-without\-sowing;
+鎄 < iridium\-einsteinium;
+技術標準 < technology\-standard;
+補考 < make\-up\-examination;
+開發過程 < development\-process;
+百分制 < hundred\-mark\-system;
+鈃 < ancient\-wine\-vessel;
+酧 < to\-pledge\-with\-wine;
+分析家 < \(political\)\-analyst;
+播弄 < order\-subject\-about;
+年底 < the\-end\-of\-the\-year;
+約櫃 < ark\-of\-the\-covenant;
+幫工 < help\-with\-farm\-work;
+報廢 < report\-as\-worthless;
+通信負載 < communications\-load;
+常規武器 < conventional\-weapon;
+統計結果 < statistical\-results;
+司空見慣 < a\-common\-occurrence;
+立法會 < legislative\-council;
+執掌 < wield\-\(power\,\-etc\.\);
+襴 < a\-one\-piece\-garment;
+褃 < a\-seam\-in\-a\-garment;
+引力場 < gravitational\-field;
+兵權 < military\-leadership;
+蠰 < cerambyx\-rugicollis;
+蟨 < the\-siberian\-jerboa;
+蝝 < the\-larva\-of\-locust;
+二十七號 < 27th\-day\-of\-a\-month;
+逼供 < extort\-a\-confession;
+視而不見 < turn\-a\-blind\-eye\-to;
+保安自動化 < security\-automation;
+蔊 < nasturtium\-montanum;
+蓇 < follicles\-of\-plants;
+葇 < elsholtria\-paltrini;
+莕 < nymphoides\-peltatum;
+茳 < cyperus\-malaccensis;
+苳 < petasites\-japonicus;
+艫 < bow\-or\-prow\-of\-boat;
+消耗量 < rate\-of\-consumption;
+電子文件 < electronic\-document;
+開放 < lift\-\(restrictions\);
+登月 < go\-\(up\)\-to\-the\-moon;
+羢 < fine\-woolen\-fabrics;
+核電站 < nuclear\-power\-plant;
+羑 < a\-guide\-to\-goodness;
+結構助詞 < structural\-particle;
+字斟句酌 < weighing\-every\-word;
+繲 < to\-work\-as\-a\-tailor;
+幣值 < value\-of\-a\-currency;
+綀 < a\-kind\-of\-sackcloth;
+政治關係 < political\-relations;
+冰場 < skating\-or\-ice\-rink;
+相互兼容 < mutually\-compatible;
+尋事生非 < to\-look\-for\-trouble;
+竑 < be\-vast\-and\-endless;
+禓 < to\-drive\-out\-demons;
+祐 < divine\-intervention;
+目前 < at\-the\-present\-time;
+表面化 < come\-to\-the\-surface;
+筆譯 < written\-translation;
+筆試 < written\-examination;
+矔 < brilliant\-\(of\-eyes\);
+關切 < be\-deeply\-concerned;
+小寫字母 < lowercase\-\(letters\);
+瞕 < cataract\-in\-the\-eye;
+走開 < get\-out\-of\-the\-way\!;
+覆亡 < fall\-\(of\-an\-empire\);
+電話機 < telephone\-equipment;
+裁斷 < consider\-and\-decide;
+總統府 < presidential\-palace;
+紀元 < beginning\-of\-an\-era;
+兵團 < large\-military\-unit;
+辦事 < to\-handle\-\(affairs\);
+糾偏 < to\-correct\-an\-error;
+才識 < ability\-and\-insight;
+按理 < according\-to\-reason;
+輔幣 < fractional\-currency;
+搭伴 < travel\-with\-another;
+在某種程度上 < to\-a\-certain\-extent;
+國旗 < flag\-\(of\-a\-country\);
+軍政 < army\-and\-government;
+病況 < state\-of\-an\-illness;
+分佈式網絡 < distributed\-network;
+管理功能 < management\-function;
+轉向 < change\-of\-direction;
+橋接器 < bridge\-\(networking\);
+白卷 < blank\-examine\-paper;
+曼徹斯特編碼 < manchester\-encoding;
+八仙 < the\-eight\-immortals;
+較大 < comparatively\-large;
+筆算 < do\-a\-sum\-in\-writing;
+桪 < mythical\-giant\-tree;
+提出 < to\-raise\-\(an\-issue\);
+白人 < white\-man\-and\-woman;
+柮 < flat\-pieces\-of\-wood;
+做法 < way\-of\-doing\-things;
+暵 < dry\-by\-exposing\-sun;
+抽煙 < smoke\-\(a\-cigarette\);
+斝 < small\-jade\-wine\-cup;
+表情 < \(facial\)\-expression;
+補助 < \(financial\)\-subsidy;
+敄 < to\-put\-forth\-effort;
+膠片 < \(photographic\)\-film;
+撍 < to\-hold\-in\-the\-hand;
+不期然而然 < happen\-unexpectedly;
+揕 < roll\-up\-the\-sleeves;
+柔道 < \(the\-sport\-of\)\-judo;
+加值型網路 < value\-added\-network;
+採制 < collect\-and\-process;
+不得了 < desperately\-serious;
+抄獲 < to\-search\-and\-seize;
+表姐 < older\-female\-cousin;
+分佈控制 < distributed\-control;
+尗 < younger\-of\-brothers;
+軟件 < \(computer\)\-software;
+壐 < the\-imperial\-signet;
+招待 < to\-receive\-\(guests\);
+板梁橋 < plate\-girder\-bridge;
+垕 < used\-in\-place\-names;
+拜年 < pay\-a\-new\-year\-call;
+栽跟頭 < to\-suffer\-a\-setback;
+唚 < vomiting\-of\-animals;
+核工程 < nuclear\-engineering;
+因特網聯通 < internet\-connection;
+呺 < voice\-of\-anger\-vast;
+互通 < to\-intercommunicate;
+科學的交流 < scientific\-exchange;
+安理會 < un\-security\-council;
+網絡應用 < network\-application;
+偘 < ancient\-family\-name;
+篡位 < to\-seize\-the\-throne;
+機械翻譯 < machine\-translation;
+罷黜 < dismiss\-from\-office;
+䶯 < used\-in\-girl''s\-name;
+䶒 < outstanding\-ability;
+䶌 < a\-pustule\-or\-pimple;
+䶄 < striped\-mottled\-rat;
+䵱 < red\-and\-black\-color;
+䵔 < to\-turn\-on\-the\-heel;
+䴪 < a\-fabulous\-creature;
+䴠 < a\-young\-tailed\-deer;
+屬實 < turn\-out\-to\-be\-true;
+䱧 < a\-kind\-of\-fish\-eels;
+䰜 < a\-large\-earthen\-pot;
+䮷 < movement\-of\-a\-horse;
+䮃 < to\-go\-before\-others;
+派遣 < send\-\(on\-a\-mission\);
+䫱 < a\-part\-of\-the\-skull;
+䫩 < to\-shake\-one''s\-head;
+䪿 < the\-top\-of\-the\-head;
+䪽 < hoary\-haired\-person;
+䩷 < the\-sides\-of\-a\-shoe;
+䩧 < to\-tie\-up\-hurriedly;
+䩌 < to\-have\-a\-worn\-look;
+䧔 < to\-meet\-at\-the\-bank;
+䦙 < a\-government\-agency;
+䥧 < a\-fine\-kind\-of\-jade;
+訊框傳送服務 < frame\-relay\-service;
+䤆 < a\-kind\-of\-rice\-wine;
+䤁 < cooked\-or\-well\-done;
+䢋 < a\-marshal\-or\-herald;
+並重 < lay\-equal\-stress\-on;
+軟件技術 < software\-technology;
+䟣 < an\-animal\-in\-legend;
+䞳 < to\-stumble\-and\-fall;
+䝠 < a\-kind\-of\-wild\-boar;
+䜁 < to\-abuse\-and\-insult;
+䙒 < to\-store\-or\-save\-up;
+䙏 < short\-sleeves\-shirt;
+䙁 < children''s\-garments;
+䘪 < clothes\-without\-hem;
+䖢 < first\-born\-silkworm;
+䖖 < to\-show\-familiarity;
+䕾 < a\-kind\-of\-vegetable;
+䕘 < a\-variety\-of\-fungus;
+䕃 < the\-shade\-of\-a\-tree;
+䓷 < nymphoides\-peltalum;
+䓍 < cruciferous\-flowers;
+䒈 < side\-beam\-of\-a\-boat;
+䒀 < short\-and\-deep\-boat;
+䑇 < medicine\-for\-a\-sore;
+䐭 < a\-discharge\-or\-flux;
+䏹 < to\-watch\-stealthily;
+䏨 < to\-swell\-up\-greatly;
+䏆 < buzzing\-in\-the\-ears;
+䍷 < to\-chase\-each\-other;
+䋹 < breadth\-of\-material;
+䋰 < to\-bind\-or\-restrain;
+才學 < talent\-and\-learning;
+耕耘 < plowing\-and\-weeding;
+擺門面 < keep\-up\-appearances;
+訊框傳送網路 < frame\-relay\-network;
+䇽 < a\-coarse\-bamboo\-mat;
+䆯 < a\-short\-shaped\-face;
+䅯 < a\-variety\-of\-millet;
+䅟 < varieties\-of\-millet;
+䅒 < a\-sharp\-edged\-grass;
+慈祥 < \(a\)\-kindly\-\(person\);
+䁋 < with\-one\-eye\-closed;
+䁃 < to\-look\-attentively;
+䀤 < insight\-of\-jealousy;
+䀣 < to\-look\-steadily\-at;
+奶油菜花 < creamed\-cauliflower;
+㿓 < disease\-of\-the\-hoof;
+光發送器 < optical\-transmitter;
+㾻 < not\-any\-progressive;
+㾶 < disease\-of\-the\-knee;
+安樂 < peace\-and\-happiness;
+㾢 < a\-malignant\-disease;
+㽭 < vacant\-lot\-or\-space;
+㽌 < the\-ridge\-of\-a\-roof;
+㽂 < a\-cracked\-container;
+㼙 < brickwork\-of\-a\-well;
+㼒 < a\-kind\-of\-big\-melon;
+網絡環境 < network\-environment;
+愛人如己 < love\-others\-as\-self;
+㸶 < color\-of\-the\-oxtail;
+㸵 < the\-lowing\-of\-an\-ox;
+㸥 < household\-registers;
+㸢 < cross\-beam\-of\-a\-bed;
+㸞 < blocks\-for\-printing;
+㸓 < to\-have\-disappeared;
+㸀 < blackened\-with\-soot;
+㷤 < rosy\-clouds\-of\-dawn;
+騙取 < to\-gain\-by\-cheating;
+㲇 < the\-rattle\-of\-drums;
+㱾 < a\-kind\-of\-ornaments;
+㱹 < to\-die\-from\-disease;
+㱫 < destroyed\-or\-ruined;
+㱪 < stupid\-and\-confused;
+㱊 < asthmatic\-breathing;
+㱉 < moving\-of\-the\-mouth;
+㰴 < to\-grate\-on\-the\-ear;
+㰯 < the\-way\-of\-speaking;
+路透社 < reuters\-news\-agency;
+涼爽 < cool\-and\-refreshing;
+黨組 < leading\-party\-group;
+例外 < \(make\-an\)\-exception;
+㫯 < in\-contravention\-of;
+資源 < \(natural\)\-resources;
+商會 < chamber\-of\-commerce;
+赤字 < \(financial\)\-deficit;
+㩦 < to\-lead\-by\-the\-hand;
+㩘 < to\-moor\-to\-the\-bank;
+㨝 < the\-very\-hard\-stuff;
+㧅 < to\-turn\-upside\-down;
+㦓 < difficult\-intention;
+㥝 < to\-arouse\-to\-action;
+阿拉巴馬 < alabama\-\(u\.s\.state\);
+㢊 < to\-set\-side\-by\-side;
+㢂 < of\-highly\-strategic;
+鋰離子電池 < lithium\-ion\-battery;
+終點地址 < destination\-address;
+㟱 < shape\-of\-a\-mountain;
+㟓 < lofty\-and\-dangerous;
+㟒 < mountains\-adjoining;
+並聯 < parallel\-connection;
+㘫 < to\-fall\-into\-a\-well;
+財源 < financial\-resources;
+㗶 < to\-expel\-the\-breath;
+科學院 < academy\-of\-sciences;
+㖪 < sound\-of\-surprising;
+㔹 < a\-surplus\-or\-excess;
+㓷 < to\-cut\-off\-the\-nose;
+㒄 < brittle\-and\-friable;
+㒃 < capital\-form\-of\-two;
+量變 < quantitative\-change;
+耐煩 < patient\-\(adjective\);
+丙綸 < polypropylene\-fibre;
+二十六號 < 26th\-day\-of\-a\-month;
+步進制 < step\-by\-step\-system;
+前蘇聯 < former\-soviet\-union;
+不在意 < pay\-no\-attention\-to;
+決議 < \(pass\-a\)\-resolution;
+錯字 < incorrect\-character;
+中國當局 < chinese\-authorities;
+伴唱 < vocal\-accompaniment;
+識貨 < to\-know\-what''s\-what;
+稟性 < natural\-disposition;
+預習 < to\-prepare\-a\-lesson;
+合情合理 < reasonable\-and\-fair;
+流派 < school\-\(of\-thought\);
+百依百順 < docile\-and\-obedient;
+半自耕農 < semi\-tenant\-peasant;
+哀憐 < feel\-compassion\-for;
+反彈導彈 < antimissile\-missile;
+財寶 < money\-and\-valuables;
+生產設施 < production\-facility;
+葡萄牙人 < portuguese\-\(person\);
+事宜 < \(make\)\-arrangements;
+敗類 < scum\-of\-a\-community;
+不絕如縷 < hanging\-by\-a\-thread;
+旗袍 < chinese\-style\-dress;
+長期穩定性 < long\-term\-stability;
+技術知識 < technical\-knowledge;
+徐行 < walk\-slowly\,\-stroll;
+藏族 < tibetan\-nationality;
+樓宇自動化 < building\-automation;
+外孫女 < daughter''s\-daughter;
+冰醋酸 < glacial\-acetic\-acid;
+美國軍人 < american\-serviceman;
+阿比西尼亞人 < abyssinian\-\(person\);
+消炎藥 < antibiotic\-medicine;
+照顧 < take\-\(good\)\-care\-of;
+委員長 < head\-of\-a\-committee;
+視窗加速器 < windows\-accelarator;
+讓步 < \(make\-a\)\-concession;
+邊遠 < far\-from\-the\-center;
+華爾街日報 < wall\-street\-journal;
+擺闊 < parade\-one''s\-wealth;
+情報局 < intelligence\-agency;
+晴朗 < sunny\-and\-cloudless;
+悲壯 < solemn\-and\-stirring;
+國際貿易 < international\-trade;
+罷市 < shopkeeper''s\-strike;
+不妨 < there\-is\-no\-harm\-in;
+人造語言 < artificial\-language;
+亞太經合組織 < apec\-\(organization\);
+丹參 < salvia\-miltiorrhiza;
+零落 < withered\-and\-fallen;
+包身工 < indentured\-labourer;
+得知 < \(find\-out\-and\)\-know;
+變故 < an\-unforeseen\-event;
+不敗之地 < invincible\-position;
+恐怕 < \(i''m\)\-afraid\-\(that\);
+自身利益 < one''s\-own\-interests;
+廠規 < factory\-regulations;
+預定 < schedule\-in\-advance;
+不凡 < out\-of\-the\-ordinary;
+競爭產品 < competitive\-product;
+敗績 < be\-utterly\-defeated;
+暴利 < sudden\-huge\-profits;
+非核國家 < non\-nuclear\-country;
+罪名 < a\-\(criminal\)\-charge;
+不乏 < there\-is\-no\-lack\-of;
+合同 < \(business\)\-contract;
+北京人 < person\-from\-beijing;
+氣候狀況 < climatic\-conditions;
+玖 < black\-colored\-jade;
+哪 < which\?\-where\?\-how\?;
+牲 < sacrificial\-animal;
+漢 < the\-chinese\-people;
+漕 < transport\-by\-water;
+阴 < ''female''\-principle;
+仙 < taoist\-super\-being;
+驻 < to\-be\-stationed\-at;
+腮 < lower\-part\-of\-face;
+拒 < ward\-off\-with\-hand;
+桂 < cassia\-or\-cinnamon;
+朵 < cluster\-of\-flowers;
+曹 < ministry\-officials;
+罎 < an\-earthenware\-jar;
+丸 < small\-round\-object;
+矩 < carpenter''s\-square;
+腊 < year\-end\-sacrifice;
+龟 < turtle\-or\-tortoise;
+邸 < official\-residence;
+侃 < upright\-and\-strong;
+邂 < unexpected\-meeting;
+怯 < lacking\-in\-courage;
+甸 < suburbs\-of\-capital;
+捞 < scoop\-out\-of\-water;
+扛 < carry\-on\-shoulders;
+虔 < act\-with\-reverence;
+霖 < long\-spell\-of\-rain;
+韧 < strong\-and\-pliable;
+瑾 < brilliance\-of\-gems;
+桔 < chinese\-bellflower;
+鸳 < male\-mandarin\-duck;
+钗 < ornamental\-hairpin;
+巅 < summit\-of\-mountain;
+樨 < osmanthus\-fragrans;
+蠡 < wood\-boring\-insect;
+蹂 < trample\-under\-foot;
+骥 < thoroughbred\-horse;
+唁 < express\-condolence;
+骅 < an\-excellent\-horse;
+碉 < room\-made\-of\-stone;
+疟 < intermittent\-fever;
+纣 < name\-of\-an\-emperor;
+磬 < musical\-instrument;
+爿 < half\-of\-tree\-trunk;
+旎 < fluttering\-of\-flag;
+夔 < one\-legged\-monster;
+殍 < to\-starve\-to\-death;
+骊 < a\-pure\-black\-horse;
+湎 < flushed\-with\-drink;
+喵 < the\-mew\-of\-the\-cat;
+焙 < dry\-over\-slow\-fire;
+绾 < to\-string\-together;
+眦 < corner\-of\-the\-eyes;
+瑁 < fine\-piece\-of\-jade;
+粳 < non\-glutinous\-rice;
+餮 < a\-legendary\-animal;
+汊 < a\-branching\-stream;
+缃 < light\-yellow\-color;
+檩 < the\-bole\-of\-a\-tree;
+奁 < lady''s\-vanity\-case;
+楸 < mallotus\-japonicus;
+骺 < tip\-of\-a\-long\-bone;
+藿 < lophanthus\-rugosus;
+樾 < the\-shade\-of\-trees;
+酤 < to\-deal\-in\-spirits;
+臌 < dropsical\-swelling;
+跫 < sound\-of\-footsteps;
+綮 < embroidered\-banner;
+觳 < an\-ancient\-measure;
+杌 < the\-stump\-f\-a\-tree;
+嵫 < a\-hill\-in\-shantung;
+擗 < to\-beat\-the\-breast;
+脔 < small\-lump\-of\-meat;
+醅 < unstrained\-spirits;
+羰 < carbonyl\-\(radical\);
+蛸 < long\-legged\-spider;
+瞀 < to\-look\-at\-closely;
+殳 < name\-of\-old\-weapon;
+崞 < mountain\-in\-shanxi;
+垲 < high\-and\-dry\-place;
+虿 < a\-kind\-of\-scorpion;
+疳 < childhood\-diseases;
+罾 < a\-large\-square\-net;
+獬 < a\-fabulous\-monster;
+負責任 < responsibility\-for;
+幫辦 < assist\-in\-managing;
+酬應 < social\-interaction;
+無論 < no\-matter\-what\|how;
+原定 < originally\-planned;
+通行 < licence\-\(computer\);
+環形結構 < ring\-configuration;
+司令 < commanding\-officer;
+糾集 < to\-gather\-together;
+送行 < to\-see\-someone\-off;
+西班牙語 < spanish\-\(language\);
+違約 < to\-break\-a\-promise;
+危局 < perilous\-situation;
+一般來說 < generally\-speaking;
+軟件開發人員 < software\-developer;
+撥號 < dial\-\(a\-telephone\);
+國民黨軍隊 < nationalist\-forces;
+首腦會晤 < leadership\-meeting;
+變修 < become\-revisionist;
+違章 < to\-break\-the\-rules;
+重要問題 < an\-important\-issue;
+網管 < network\-management;
+蒙文 < mongolian\-language;
+性交 < sexual\-intercourse;
+中山裝 < chinese\-tunic\-suit;
+緬甸語 < burmese\-\(language\);
+政治犯 < political\-prisoner;
+年以來 < since\-the\-year\-\.\.\.;
+新華社 < xinhua\-news\-agency;
+不中用 < unfit\-for\-anything;
+一小時以後 < a\-short\-time\-later;
+領先地位 < lead\(ing\)\-position;
+進一步 < \(one\-step\)\-further;
+物價 < \(commodity\)\-prices;
+信息系統 < information\-system;
+後天 < day\-after\-tomorrow;
+提供商 < provider\-\(company\);
+太平 < peace\-and\-security;
+矚望 < to\-look\-forward\-to;
+協助 < provide\-assistance;
+採風 < collect\-folk\-songs;
+種族清洗 < \"ethnic\-cleansing\";
+描金 < to\-outline\-in\-gold;
+助教 < teaching\-assistant;
+夫婦 < a\-\(married\)\-couple;
+乒乓球檯 < table\-tennis\-table;
+英語 < english\-\(language\);
+運氣 < luck\-\(good\-or\-bad\);
+非常嚴厲 < to\-punish\-severely;
+原蘇聯 < fomer\-soviet\-union;
+採錄 < collect\-and\-record;
+熊掌 < bear\-paw\-\(as\-food\);
+內部結構 < internal\-strucutre;
+新兵 < new\-\(army\)\-recruit;
+數據通信 < data\-communication;
+天安門 < tiananmen\-\(square\);
+非常感謝 < extremely\-grateful;
+龖 < flight\-of\-a\-dragon;
+斃命 < meet\-violent\-death;
+鸜 < a\-species\-of\-mynah;
+鷽 < oriental\-bullfinch;
+克隆技術 < cloning\-technology;
+電子網絡 < electronic\-network;
+鴗 < alcedo\-bengalensis;
+鱵 < hyporhampus\-sajuri;
+失事 < \(have\-an\)\-accident;
+不受理 < reject\-a\-complaint;
+鬠 < to\-make\-a\-top\-knot;
+發達國 < developing\-country;
+白麵書生 < pale\-faced\-scholar;
+跑警報 < to\-run\-for\-shelter;
+餼 < sacrificial\-victim;
+電信 < telecommunications;
+捨身 < to\-give\-one''s\-life;
+頔 < good\-and\-beautiful;
+芝蘭 < irises\-and\-orchids;
+財務軟件 < financial\-software;
+改口 < to\-correct\-oneself;
+白開水 < plain\-boiled\-water;
+政務 < government\-affairs;
+內科 < medical\-department;
+元素 < \(chemical\)\-element;
+加入 < to\-become\-a\-member;
+招待會 < \(press\)\-conference;
+選區 < electoral\-district;
+釒 < kangxi\-radical\-167;
+鄮 < ancient\-place\-name;
+土著 < native\,\-aboriginal;
+懷俄明 < wyoming\-\(us\-state\);
+卡拉奇 < karachi\-\(pakistan\);
+操守 < personal\-integrity;
+轙 < rings\-on\-the\-yokes;
+傲視 < turn\-up\-one''s\-nose;
+軰 < a\-row\-of\-carriages;
+半規管 < semicircular\-canal;
+馬來語 < malaysian\-language;
+古典語言 < classical\-language;
+谽 < a\-mouth\-or\-opening;
+莫如 < it\-would\-be\-better;
+結帳 < to\-settle\-accounts;
+四處 < all\-over\-the\-place;
+比不上 < can''t\-compare\-with;
+網路連接層 < network\-link\-layer;
+訁 < kangxi\-radical\-149;
+襵 < a\-pleat\-in\-a\-skirt;
+褰 < lift\-up\-the\-skirts;
+坦率 < frank\-\(discussion\);
+運作 < thread\-\(computing\);
+多米尼加共和國 < dominican\-republic;
+週刊 < weekly\-publication;
+蚹 < eulota\-peliomphala;
+薷 < elshotria\-paltrini;
+保駕 < escort\-the\-emperor;
+蕺 < houttuynia\-cordata;
+蓴 < edible\-water\-plant;
+兩個中國 < two\-china\-\(policy\);
+葴 < physalis\-alkekengi;
+共有 < to\-have\-altogether;
+報喜 < announce\-good\-news;
+跑電 < electrical\-leakage;
+荅 < answer\:\-small\-bean;
+茖 < allium\-victorialis;
+國防部 < defense\-department;
+芣 < medicinal\-plantago;
+撥刺 < splash\-\(of\-a\-fish\);
+拜見 < pay\-a\-formal\-visit;
+外來投資 < foreign\-investment;
+趕不上 < can''t\-keep\-up\-with;
+翯 < glistening\-plumage;
+翖 < ksc\-extension\-3108;
+初中 < junior\-high\-school;
+羧 < carboxyl\-\(radical\);
+土耳其語 < turkish\-\(language\);
+不正之風 < unhealthy\-tendency;
+抄道 < to\-take\-a\-shortcut;
+演說 < \(deliver\-a\)\-speech;
+要地 < strategic\-location;
+辦報 < to\-run\-a\-newspaper;
+集成電路 < integrated\-circuit;
+糒 < food\-for\-a\-journey;
+出任 < start\-in\-a\-new\-job;
+閉關政策 < closed\-door\-policy;
+內情 < inside\-information;
+拿主意 < to\-make\-a\-decision;
+網絡技術 < network\-technology;
+常委會 < standing\-committee;
+中國政府 < chinese\-government;
+開展 < \(begin\-to\)\-develop;
+令牌環網 < token\-ring\-network;
+皪 < luster\-\(of\-pearls\);
+大明鼎鼎 < a\-grand\-reputation;
+痜 < a\-scabby\-bald\-head;
+大學生 < university\-student;
+甿 < farming\-population;
+貿易組織 < trade\-organization;
+甋 < a\-jar\-without\-ears;
+琤 < jade\-of\-jade\-being;
+玘 < court\-dress\-jewels;
+遍地開花 < blossom\-everywhere;
+獳 < fierce\-dog\-looking;
+俄語 < russian\-\(language\);
+山腳 < foot\-of\-a\-mountain;
+煍 < to\-colour\-by\-smoke;
+高速網絡 < high\-speed\-network;
+灥 < a\-group\-of\-springs;
+康奈爾大學 < cornell\-university;
+公司 < \(business\)\-company;
+拉票 < campaign\-for\-votes;
+手術 < surgical\-operation;
+八卦 < the\-eight\-diagrams;
+瀏覽器 < browser\-\(software\);
+體溫 < \(body\)\-temperature;
+書面許可 < written\-permission;
+泲 < kind\-of\-white\-wine;
+世紀末 < end\-of\-the\-century;
+氍 < fine\-woollen\-cloth;
+漂移 < drift\-\(electrical\);
+聯合公報 < joint\-announcement;
+研究機構 < research\-institute;
+佛蘭芒語 < flemish\-\(language\);
+停滯 < be\-at\-a\-standstill;
+國會議員 < member\-of\-congress;
+最近幾年 < the\-last\-few\-years;
+精簡開支 < to\-reduce\-spending;
+柺 < an\-old\-man''s\-staff;
+杻 < ligustrum\-sinenese;
+杙 < a\-tiny\-wooden\-post;
+不置可否 < decline\-to\-comment;
+軍官 < \(military\)\-officer;
+昷 < to\-feed\-a\-prisoner;
+旼 < gentle\-and\-affable;
+塞爾維亞語 < serbian\-\(language\);
+擭 < trap\-catch\-animals;
+三角腹帶 < athletic\-supporter;
+筆直 < perfectly\-straight;
+產生 < to\-come\-into\-being;
+駐華 < stationed\-in\-china;
+斯瓦希裡語 < swahili\-\(language\);
+授受 < to\-give\-and\-accept;
+疫情 < epidemic\-situation;
+深造 < advanced\-\(studies\);
+衛生設備 < sanitary\-equipment;
+造成問題 < to\-create\-an\-issue;
+彄 < nock\-at\-end\-of\-bow;
+捨命 < to\-risk\-one''s\-life;
+擁護者 < supporter\-\(person\);
+國務卿 < secretary\-of\-state;
+嶨 < big\-rocky\-mountain;
+裁並 < cut\-down\-and\-merge;
+嵖 < name\-of\-a\-mountain;
+使節 < \(diplomatic\)\-envoy;
+國家標準碼 < gb\-\(guo\-biao\)\-code;
+半輩子 < half\-of\-a\-lifetime;
+本初子午線 < the\-first\-meridian;
+家庭消費者 < household\-consumer;
+壜 < earthen\-jar\-or\-jug;
+至少 < \(to\-say\-the\)\-least;
+墐 < to\-build\-with\-soil;
+站管理 < station\-management;
+買賣 < buying\-and\-selling;
+噋 < to\-swallow\-hastily;
+測繪 < to\-survey\-and\-draw;
+背約 < break\-an\-agreement;
+色情小說 < pornographic\-novel;
+哰 < incoherent\-chatter;
+芬蘭語 < finnish\-\(language\);
+貴妃醉酒 < the\-drunken\-beauty;
+變法兒 < try\-different\-ways;
+海空軍 < navy\-and\-air\-force;
+電子信箱 < electronic\-mailbox;
+路徑 < route\-\(networking\);
+佷 < to\-act\-contrary\-to;
+舉例 < to\-give\-an\-example;
+撒哈拉以南非洲 < sub\-saharan\-africa;
+乑 < stand\-side\-by\-side;
+才智 < ability\-and\-wisdom;
+䶣 < to\-grind\-the\-teeth;
+䶟 < to\-gnash\-the\-teeth;
+䵕 < a\-varietyof\-millet;
+䴱 < cakes\-and\-biscuits;
+䳨 < the\-female\-phoenix;
+䳔 < a\-pigeon\-like\-bird;
+䱳 < a\-kind\-of\-sturgeon;
+䱣 < a\-long\-narrow\-fish;
+䰪 < mischievous\-spirit;
+䯱 < the\-hair\-stands\-up;
+䯏 < the\-shoulder\-blade;
+䮥 < color\-of\-the\-horse;
+細菌戰 < biological\-warfare;
+䭰 < strong\-sweet\-smell;
+䭋 < to\-eat\-to\-the\-full;
+䭃 < to\-eat\-to\-the\-fool;
+䬴 < fodder\-for\-animals;
+䬧 < round\-shaped\-cakes;
+打拳 < to\-do\-shadowboxing;
+脈欂 < beating\-\(of\-heart\);
+䫐 < to\-bend\-one''s\-head;
+䪌 < cushion\-for\-saddle;
+䨆 < a\-kind\-of\-pheasant;
+䧼 < the\-the\-snow\-goose;
+䧦 < name\-of\-a\-hillside;
+新加坡人 < singaporean\-person;
+䦮 < door\-of\-the\-center;
+自主 < to\-act\-for\-oneself;
+䦒 < the\-door\-is\-closed;
+䦐 < the\-bolt\-of\-a\-door;
+期貨 < futures\-\(on\-goods\);
+䥳 < a\-chemical\-element;
+䥞 < to\-cut\-with\-shears;
+䥝 < desperate\-fighting;
+侵截 < to\-hack\-\(computer\);
+䣺 < filtrated\-the\-wine;
+頭髮 < hair\-\(on\-the\-head\);
+䡠 < strong\-and\-durable;
+䡛 < name\-of\-a\-carriage;
+䠧 < hard\-to\-go\-forward;
+䟝 < to\-walk\-right\-into;
+䝞 < name\-of\-a\-immortal;
+䛉 < to\-induce\-by\-words;
+䚧 < curved\-with\-angles;
+大力發展 < vigorous\-expansion;
+䙃 < sleeveless\-clothes;
+質疑 < call\-into\-question;
+䗻 < a\-kind\-of\-sea\-crab;
+䗨 < lepsima\-saccharina;
+䗣 < insect\-of\-mulberry;
+服務規章 < service\-regulation;
+䖧 < a\-poisonous\-insect;
+䖓 < of\-a\-walking\-tiger;
+䕪 < the\-water\-plantain;
+䔼 < sound\-of\-the\-grass;
+䔃 < cordate\-houttuynia;
+䓨 < long\-necked\-bottle;
+䓖 < cnidium\-officinale;
+䓃 < melancholy\-and\-sad;
+䒝 < root\-of\-the\-thatch;
+首次 < for\-the\-first\-time;
+䑙 < put\-out\-the\-tongue;
+䑆 < feel\-like\-vomiting;
+在傳輸過程中 < while\-transmitting;
+䐔 < muscle\-of\-the\-calf;
+䎾 < big\-and\-round\-eyes;
+域名服務器 < domain\-name\-server;
+䎴 < a\-legendary\-spirit;
+䎪 < the\-stalk\-of\-grain;
+梆子 < watchman''s\-clapper;
+䎔 < fine\-and\-soft\-hair;
+䎏 < young\-birds\-flying;
+油餅 < deep\-fried\-pancake;
+䍩 < to\-offer\-provision;
+䍣 < a\-kind\-of\-fish\-net;
+䌍 < fine\-woven\-pattern;
+䌉 < the\-large\-of\-a\-net;
+泄露 < leak\-\(information\);
+䋈 < to\-bind\-loose\-hemp;
+䉬 < coarse\-bamboo\-mats;
+䈮 < a\-woven\-instrument;
+䇳 < a\-memoradum\-tablet;
+䆪 < color\-of\-the\-light;
+䆥 < to\-pierce\-throughj;
+䆑 < a\-little\-protruded;
+投入 < put\-into\-operation;
+䅽 < fragrance\-or\-aroma;
+䅧 < fine\-rice\-seedling;
+䅜 < to\-store\-up\-grains;
+䄚 < to\-worship\-the\-god;
+䃜 < a\-fine\-black\-stone;
+䁊 < dark\-and\-deep\-eyed;
+䀞 < with\-heavy\-eyelids;
+䀗 < to\-look\-askance\-at;
+析疑 < to\-resolve\-a\-doubt;
+㿌 < lump\-in\-the\-throat;
+竭盡全力 < to\-spare\-no\-effort;
+瑞典語 < swedish\-\(language\);
+㼣 < bricks\-of\-the\-well;
+㼇 < fine\-jade\-or\-agate;
+涉嫌人 < \(criminal\)\-suspect;
+㻗 < a\-string\-of\-pearls;
+㻊 < a\-red\-colored\-jade;
+㻅 < jade\-decorated\-cap;
+藏語 < tibetan\-\(language\);
+不折不扣 < a\-hundred\-per\-cent;
+㺧 < a\-white\-yellow\-dog;
+㸽 < a\-two\-years\-old\-ox;
+木耳 < edible\-tree\-fungus;
+㸈 < scorched\-or\-burned;
+㷳 < color\-of\-the\-flame;
+喘息 < to\-gasp\-for\-breath;
+棄世 < to\-leave\-this\-word;
+㷢 < bundle\-of\-charcoal;
+㷠 < a\-will\-o''\-the\-wisp;
+㵓 < the\-water\-is\-clear;
+㴾 < swelling\-or\-rising;
+併捲機 < ribbon\-lap\-machine;
+別動隊 < special\-detachment;
+㳂 < to\-follow\-a\-course;
+㲡 < thick\-coat\-of\-hair;
+㲗 < to\-smooth\-the\-hair;
+愛稱 < term\-of\-endearment;
+科研樣機 < research\-prototype;
+㯶 < the\-coir\-palm\-tree;
+㯲 < a\-wooden\-framework;
+㯛 < gourd\-shaped\-dates;
+㮻 < to\-scratch\-lightly;
+區域網路 < local\-area\-network;
+㮍 < amemorandum\-tablet;
+㭨 < the\-cocoa\-nut\-palm;
+㭝 < name\-of\-a\-pavilion;
+發送功率 < transmission\-power;
+㬴 < the\-moon\-is\-dimmed;
+㬒 < the\-sun\-are\-dimmed;
+㬎 < motes\-in\-a\-sunbeam;
+政府警告 < government\-warning;
+㫦 < of\-look\-of\-the\-sun;
+㪸 < to\-fill\-a\-cup\-with;
+㩃 < to\-take\-or\-capture;
+㨽 < to\-cut\-or\-rip\-open;
+㨡 < to\-push\-with\-hands;
+㨜 < to\-help\-each\-other;
+核能技術 < nuclear\-technology;
+年輕化 < make\-more\-youthful;
+專員 < assistant\-director;
+㥸 < to\-sympathize\-with;
+㥨 < unhappy\-displeased;
+㤪 < to\-find\-fault\-with;
+㣌 < to\-join\-two\-things;
+㡯 < wall\-of\-a\-building;
+頓足 < stamp\-\(one''s\-feet\);
+加速器 < accelerator\-\(comp\);
+㘳 < a\-hillock\-or\-mound;
+㘱 < to\-fall\-into\-ruins;
+意大利語 < italian\-\(language\);
+㘜 < a\-kind\-of\-silkworm;
+㖅 < sound\-of\-a\-whistle;
+㖃 < to\-roar\-of\-animals;
+㔢 < to\-break\-something;
+不等號 < sign\-of\-inequality;
+現有 < currently\-existing;
+西半球 < western\-hemisphere;
+鼻樑 < bridge\-of\-the\-nose;
+參贊 < diplomatic\-officer;
+並立 < exist\-side\-by\-side;
+貿易 < \(commercial\)\-trade;
+多端中繼器 < multiport\-repeater;
+北京大學 < beijing\-university;
+報務員 < telegraph\-operator;
+酬酢 < to\-exchange\-toasts;
+浪涌 < \(electrical\)\-surge;
+佔先 < to\-take\-precedence;
+背光 < be\-in\-a\-poor\-light;
+光波長 < optical\-wavelength;
+深夜 < very\-late\-at\-night;
+喉擦音 < guttural\-fricative;
+八級工 < eight\-grade\-worker;
+佛蒙特 < vermont\-\[us\-state\];
+露面 < appear\-\(in\-public\);
+商務 < commercial\-affairs;
+聯邦政府 < federal\-government;
+猜疑 < harbour\-suspicions;
+生活必需品 < life''s\-necessities;
+貴姓 < what\-is\-your\-name\?;
+猙獰 < mean\-and\-ferocious;
+進行編程 < executable\-program;
+液壓 < hydraulic\-pressure;
+管理站 < management\-station;
+鼻塞 < have\-a\-stuffy\-nose;
+虛擬連接 < virtual\-connection;
+點心 < light\-refreshments;
+客戶應用 < client\-application;
+不隨意肌 < involuntary\-muscle;
+說不定 < can''t\-say\-for\-sure;
+波斯語 < bosnian\-\(language\);
+海域 < territorial\-waters;
+比試 < have\-a\-competition;
+採取措施 < to\-adopt\-a\-measure;
+儘可能 < as\-far\-as\-possible;
+哈佛大學 < harvard\-university;
+電路 < \(electric\)\-circuit;
+中將 < lieutenant\-general;
+包承組 < \(responsible\)\-crew;
+百葉箱 < thermometer\-screen;
+暗線光譜 < dark\-line\-spectrum;
+文藝 < literature\-and\-art;
+版稅 < royalty\-\(on\-books\);
+電視節目 < television\-program;
+情報 < \(spy\)\-intelligence;
+編遣 < reorganize\-\(troops;
+避雷器 < lightning\-arrester;
+必不可少組成 < absolute\-necessity;
+泰山 < taishan\-\(mountain\);
+悉尼 < sydney\-\(australia\);
+戰鬥機 < fighter\-\(aircraft\);
+薄情 < inconstant\-in\-love;
+民用 < \(for\)\-civilian\-use;
+編譯 < translate\-and\-edit;
+福利 < \(material\)\-welfare;
+簡短介紹 < brief\-introduction;
+海灣戰爭 < \(persian\)\-gulf\-war;
+地球大氣 < earth''s\-atmosphere;
+同學 < \(fellow\)\-classmate;
+不和 < not\-get\-along\-well;
+不厭 < not\-mind\-doing\-sth;
+反感 < \(strongly\)\-dislike;
+針對 < in\-connection\-with;
+服務質量 < quality\-of\-service;
+另寄 < to\-mail\-separately;
+變幻 < change\-irregularly;
+報關 < declare\-at\-customs;
+署名 < sign\-\(a\-signature\);
+遊覽 < to\-go\-sight\-seeing;
+不攻自破 < collapse\-of\-itself;
+文化傳統 < cultural\-tradition;
+顯示器 < monitor\-\(computer\);
+皿 < shallow\-container;
+屓 < gigantic\-strength;
+派 < school\-of\-thought;
+姓 < one''s\-family\-name;
+煎 < fry\-in\-fat\-or\-oil;
+襁 < swaddling\-clothes;
+哈 < sound\-of\-laughter;
+鸚 < species\-of\-parrot;
+欧 < translit\.\:\-europe;
+订 < draw\-up\-agreement;
+偏 < inclined\-one\-side;
+歔 < blow\-through\-nose;
+培 < bank\-up\-with\-dirt;
+漫 < overflow\-of\-water;
+侠 < chivalrous\-person;
+姆 < child''s\-governess;
+盒 < small\-box\-or\-case;
+儒 < confucian\-scholar;
+阪 < hillside\-farmland;
+迈 < take\-a\-big\-stride;
+捏 < pick\-with\-fingers;
+浙 < zhejiang\-province;
+筧 < bamboo\-water\-pipe;
+艘 < counter\-for\-ships;
+趁 < take\-advantage\-of;
+鉢 < earthenware\-basin;
+蓬 < type\-of\-raspberry;
+辖 < linchpin\-of\-wheel;
+逅 < meet\-unexpectedly;
+酣 < enjoy\-intoxicants;
+饺 < stuffed\-dumplings;
+咏 < sing\-song\-or\-poem;
+搀 < give\-helping\-hand;
+捶 < strike\-with\-stick;
+刨 < carpenter''s\-plane;
+蠕 < eumenes\-polifomis;
+崆 < kongtong\-mountain;
+盅 < small\-cup\-or\-bowl;
+梆 < watchman''s\-rattle;
+嵇 < mountain\-in\-henan;
+耷 < ears\-hanging\-down;
+羌 < qiang\-nationality;
+苞 < a\-variety\-of\-rush;
+藜 < chenopodium\-album;
+艄 < stern\-of\-a\-vessel;
+峁 < yellow\-dirt\-mount;
+镔 < high\-quality\-iron;
+鲫 < carassius\-auratus;
+龇 < to\-show\-the\-teeth;
+沭 < river\-in\-shantung;
+榫 < mortise\-and\-tenon;
+萋 < luxuriant\-foliage;
+醮 < religious\-service;
+牝 < female\-of\-species;
+曷 < why\?\-what\?\-where\?;
+瑷 < fine\-quality\-jade;
+耦 < plow\-side\-by\-side;
+鸶 < the\-eastern\-egret;
+篦 < fine\-toothed\-comb;
+妁 < act\-as\-go\-between;
+荥 < a\-county\-in\-henan;
+戽 < to\-bale\-out\-water;
+枳 < trifoliate\-orange;
+椐 < zelkowa\-acuminata;
+魉 < a\-kind\-of\-monster;
+颞 < the\-temporal\-bone;
+耩 < to\-plough\.\-to\-sow;
+廨 < government\-office;
+蟮 < type\-of\-earthworm;
+蛱 < kind\-of\-butterfly;
+禳 < pray\-or\-sacrifice;
+瞢 < eyesight\-obscured;
+蔸 < counter\-for\-plant;
+螅 < \(intestinal\-worm\);
+祧 < an\-ancestral\-hall;
+蠃 < the\-solitary\-wasp;
+聃 < ears\-without\-rims;
+耜 < spade\-shaped\-tool;
+慝 < do\-evil\-in\-secret;
+庳 < a\-low\-built\-house;
+鼢 < a\-variety\-of\-mole;
+蚺 < a\-boa\-constrictor;
+硇 < a\-kind\-of\-mineral;
+硭 < a\-crude\-saltpetre;
+胨 < a\-kind\-of\-protein;
+外界 < the\-outside\-world;
+變天 < change\-of\-weather;
+比濕 < specific\-humidity;
+可行性研究 < feasibility\-study;
+網絡遷移 < network\-migration;
+電腦軟件 < computer\-software;
+必修課 < a\-required\-course;
+德文 < german\-\(language\);
+僅次于 < second\-only\-to\.\.\.;
+朝鮮語 < korean\-\(language\);
+資料傳輸 < data\-transmission;
+卑怯 < mean\-and\-cowardly;
+兵馬 < troops\-and\-horses;
+數據庫軟件 < database\-software;
+碩士 < master''s\-\(degree\);
+西裡爾字母 < cyrillic\-alphabet;
+國防部長 < defence\-secretary;
+白骨 < bones\-of\-the\-dead;
+巨大壓力 < enormous\-pressure;
+照相 < take\-a\-photograph;
+白飯 < plain\-cooked\-rice;
+日子 < a\-\(calendar\)\-date;
+建築業 < building\-industry;
+政治氣候 < political\-climate;
+廣域網路 < wide\-area\-network;
+教友大會 < church\-conference;
+美國航空公司 < american\-airlines;
+教材 < teaching\-material;
+鄰國 < bordering\-country;
+機製 < machine\-processed;
+長達 < extend\-as\-long\-as;
+化妝 < to\-put\-on\-make\-up;
+難捱 < trying\,\-difficult;
+大局 < general\-situation;
+撒迦利亞書 < book\-of\-zechariah;
+敏感 < sensitive\-\(issue\);
+紡織 < spinning\-\(thread\);
+大多 < for\-the\-most\-part;
+徒刑 < \(prison\)\-sentence;
+軍事力量 < military\-strength;
+波士頓大學 < boston\-university;
+支持 < to\-be\-in\-favor\-of;
+紛紛 < one\-after\-another;
+麥克維 < \(timothy\)\-mcveigh;
+應用層 < application\-layer;
+桌別林 < \(charlie\)\-chaplin;
+電話服務 < telephone\-service;
+蓋爾語 < gaelic\-\(language\);
+交換以太網絡 < switched\-ethernet;
+外國 < foreign\-\(country\);
+阿拉伯語 < arabic\-\(language\);
+捕食 < catch\-and\-feed\-on;
+支柱產業 < mainstay\-industry;
+無所謂 < to\-be\-indifferent;
+多站地址 < multicast\-address;
+齄 < red\-sores\-on\-nose;
+經濟安全 < economic\-security;
+黟 < black\-and\-shining;
+鹁 < species\-of\-pigeon;
+輔課 < subsidiary\-course;
+外交風波 < diplomatic\-crisis;
+鵵 < scops\-semitorques;
+八股 < eight\-\-part\-essay;
+平民 < \(ordinary\)\-people;
+郊區 < suburban\-district;
+兩者 < both\-sides\|things;
+鮸 < sciaena\-albiflora;
+魫 < the\-young\-of\-fish;
+部份 < part\-\(of\-a\-whole\);
+髽 < to\-dress\-the\-hair;
+電話網路 < telephone\-network;
+白肉 < plain\-boiled\-pork;
+饩 < sacrficial\-victim;
+邊塞 < frontier\-fortress;
+餂 < to\-obtain\-by\-hook;
+石刻 < stone\-inscription;
+鞸 < leather\-arm\-guard;
+靿 < the\-leg\-of\-a\-boot;
+緊密 < inseparably\-close;
+隸 < be\-subservient\-to;
+機器人 < mechanical\-person;
+閪 < to\-lose\-lost\-item;
+邊卡 < border\-checkpoint;
+緩和 < to\-ease\-\(tension\);
+反過來說 < on\-the\-other\-hand;
+維持費 < maintenance\-costs;
+銠 < rhodium\-ruthenium;
+編印 < compile\-and\-print;
+鉕 < promethium\-bronze;
+辦公自動化 < office\-automation;
+鈳 < columbium\-niobium;
+凱旋 < return\-triumphant;
+歐洲語言 < european\-language;
+瀉肚 < to\-have\-diarrhoea;
+醭 < moulds\-on\-liquids;
+醑 < to\-strain\-spirits;
+酺 < drink\-with\-others;
+網絡設備 < network\-equipment;
+白眼 < supercilious\-look;
+板擦兒 < blackboard\-eraser;
+日益增加 < to\-increase\-daily;
+貍 < a\-fox\-like\-animal;
+眼尖 < to\-have\-good\-eyes;
+豋 < ceremonial\-vessel;
+報帳 < render\-an\-account;
+經濟力量 < economic\-strength;
+覼 < explain\-in\-detail;
+同性戀 < homosexual\-\(love\);
+補發 < supply\-again\-\(sth;
+變本加厲 < become\-aggravated;
+不及物動詞 < intransitive\-verb;
+光纖接口 < optical\-interface;
+諾貝爾和平獎 < nobel\-peace\-prize;
+蜔 < inlaid\-shell\-work;
+把頭 < labour\-contractor;
+商業行為 < business\-activity;
+軍費開支 < military\-spending;
+蘵 < physalis\-angulata;
+性騷擾 < sexual\-harassment;
+藨 < kind\-of\-raspberry;
+蕸 < water\-lily''s\-leaf;
+蕑 < valeriana\-villosa;
+軟件平臺 < software\-platform;
+葎 < humulus\-japonicus;
+屏障 < protective\-screen;
+菣 < artemisia\-apiacea;
+莛 < stalks\-of\-grasses;
+火星 < mars\-\(the\-planet\);
+茍 < to\-be\-circumspect;
+騎馬 < ride\-on\-horseback;
+橫斷物 < transverse\-object;
+抄錄 < to\-make\-a\-copy\-of;
+揭曉 < announce\-publicly;
+罛 < large\-fishing\-net;
+白屈菜 < greater\-celandine;
+縰 < band\-for\-the\-hair;
+綎 < silk\-braided\-cord;
+按圖索驥 < try\-to\-locate\-sth;
+紬 < kind\-of\-thin\-silk;
+病程 < course\-of\-disease;
+傳輸率 < transmission\-rate;
+籸 < powdery\-substance;
+希伯來語 < hebrew\-\(language\);
+籓 < big\-winnow\-basket;
+開發週期 < development\-cycle;
+篨 < coarse\-bamboo\-mat;
+申訴 < to\-appeal\-\(to\-sb\);
+伺服器 < server\-\(computer\);
+供需 < supply\-and\-demand;
+地殼 < the\-earth''s\-crust;
+閉幕 < the\-curtain\-falls;
+祊 < river\-in\-shandong;
+盛名 < famous\-reputation;
+工委 < working\-committee;
+戰略夥伴 < strategic\-partner;
+筆調 < \(of\-writing\)\-tone;
+展覽 < to\-put\-on\-display;
+白布 < plain\-white\-cloth;
+靜脈吸毒 < intraveneous\-drug;
+瘵 < a\-wasting\-disease;
+無期徒刑 < life\-imprisonment;
+工地 < construction\-site;
+璫 < pendant\-ornaments;
+百分之百 < a\-hundred\-percent;
+棕色 < brown\-\(the\-color\);
+篇目 < table\-of\-contents;
+玞 < an\-inferior\-agate;
+膝上型電腦 < laptop\-\(computer\);
+萊溫斯基 < \(monica\)\-lewinsky;
+熀 < the\-blaze\-of\-fire;
+住院 < to\-be\-in\-hospital;
+傳輸服務 < transport\-service;
+搏動 < beat\-rhythmically;
+接待 < receive\-\(a\-visit\);
+灎 < movement\-of\-water;
+公務 < official\-business;
+渰 < forming\-or\-rising;
+拘留 < detain\-\(prisoner\);
+洶 < the\-rush\-of\-water;
+綜合布線 < integrated\-wiring;
+國際法 < international\-law;
+公佈 < publicly\-announce;
+內亂 < internal\-disorder;
+衛星 < \(space\)\-satellite;
+拍照 < to\-take\-a\-picture;
+病故 < die\-of\-an\-illness;
+衝擊 < \(be\-under\)\-attack;
+長久 < \(for\-a\)\-long\-time;
+朠 < color\-of\-the\-moon;
+傳輸通道 < transport\-channel;
+政府部門 < government\-branch;
+暔 < name\-of\-a\-country;
+錄音 < \(sound\)\-recording;
+新聞週刊 < newsweek\-magazine;
+攰 < totally\-exhausted;
+保祐 < bless\-and\-protect;
+掫 < be\-on\-night\-watch;
+捷報 < report\-of\-success;
+捥 < to\-bend\-the\-wrist;
+團圓 < to\-have\-a\-reunion;
+直接競爭 < direct\-competitor;
+中央委員會 < central\-committee;
+醫療經驗 < medical\-expertise;
+廣播地址 < broadcast\-address;
+愰 < clearness\-of\-mind;
+授勛 < to\-award\-an\-honor;
+哀鳴 < a\-plaintive\-whine;
+生物武器 < biological\-weapon;
+弖 < phonetic\-for\-''te'';
+懂行 < to\-know\-the\-ropes;
+軍區 < a\-military\-region;
+保爾 < \(a\-personal\-name\);
+財閥 < financial\-magnate;
+暗無天日 < complete\-darkness;
+尨 < shaggy\-haired\-dog;
+拍攝 < \(shoot\-a\)\-picture;
+侵截者 < \(computer\)\-hacker;
+考驗 < \(put\-to\-the\)\-test;
+保溫 < heat\-preservation;
+高級研究 < advanced\-research;
+屏氣 < hold\-one''s\-breath;
+自主系統 < autonomous\-system;
+白金漢宮 < buckingham\-palace;
+運行狀況 < operational\-state;
+夊 < kangxi\-radical\-35;
+困難在於 < the\-problem\-is\.\.\.;
+日耳曼語 < germanic\-language;
+稟賦 < natural\-endowment;
+病危 < be\-critically\-ill;
+傳輸協定 < transfer\-protocol;
+喿 < chirping\-of\-birds;
+喼 < used\-phonetically;
+喹 < chemical\-compound;
+併發 < be\-complicated\-by;
+哵 < the\-cry\-of\-a\-bird;
+哴 < crying\-of\-infants;
+財貿 < finance\-and\-trade;
+大刀闊斧 < bold\-and\-decisive;
+特別待遇 < special\-treatment;
+吢 < vomiting\-of\-a\-dog;
+初學者 < beginning\-student;
+專用網路 < dedicated\-network;
+西王母 < name\-of\-a\-goddess;
+五角大樓官員 < pentagon\-official;
+敘利亞文 < syriac\-\(language\);
+漢字 < chinese\-character;
+安穩 < smooth\-and\-steady;
+倈 < to\-induce\-to\-come;
+俈 < to\-inform\-quickly;
+到那個時候 < until\-this\-moment;
+仂 < surplus\-or\-excess;
+在頭版 < on\-the\-front\-page;
+專業 < specialized\-field;
+乪 < a\-bend\-in\-a\-river;
+趨時 < to\-follow\-fashion;
+䶰 < feather\-ornaments;
+䶖 < disease\-of\-tongue;
+䵜 < to\-plough\-and\-sow;
+䴊 < the\-crow\-pheasant;
+仍舊 < still\-\(remaining\);
+䳤 < a\-kind\-of\-strange;
+䳙 < a\-egret\-like\-bird;
+拗口 < hard\-to\-pronounce;
+䯥 < with\-a\-high\-skull;
+䯢 < partial\-paralysis;
+䮫 < a\-big\-mule\-an\-ass;
+䮚 < diseases\-of\-horse;
+䮐 < in\-good\-condition;
+䭔 < steamed\-dumplings;
+䬰 < light\-refreshment;
+䬕 < sound\-of\-the\-wind;
+䬍 < the\-sound\-of\-wind;
+䬆 < a\-blustering\-gale;
+䫦 < the\-lower\-jawbone;
+䫟 < facial\-complexion;
+䫍 < to\-bow\-one''s\-head;
+䫉 < facial\-appearance;
+不歡而散 < part\-on\-bad\-terms;
+䨕 < pouring\-with\-rain;
+中華民國 < republic\-of\-china;
+䧺 < the\-male\-of\-birds;
+䦪 < sound\-of\-the\-door;
+喘氣 < to\-breathe\-deeply;
+䦃 < to\-dig\-with\-a\-hoe;
+䣻 < color\-of\-the\-wine;
+拜倒 < prostrate\-oneself;
+波蘭語 < polish\-\(language\);
+䢝 < the\-next\-in\-order;
+䡷 < noise\-of\-vehicles;
+䡪 < fan\-of\-a\-carriage;
+䡙 < an\-armed\-carriage;
+䞕 < color\-of\-the\-fire;
+䞂 < fairly\-prosperous;
+才思 < imaginative\-power;
+䝺 < to\-pierce\-through;
+䝳 < to\-kill\-for\-money;
+䝲 < farewell\-presents;
+並駕齊驅 < run\-neck\-and\-neck;
+波音 < boeing\-\(aircraft\);
+轟炸機 < bomber\-\(aircraft\);
+䜢 < cruel\-and\-violent;
+難以應付 < hard\-to\-deal\-with;
+䚠 < unbroken\-firewood;
+䚝 < new\-growing\-horns;
+䚚 < horn\-of\-an\-animal;
+䚑 < to\-steal\-a\-glance;
+䚀 < to\-see\-stealthily;
+䙴 < to\-soar\-as\-a\-bird;
+䙪 < a\-loop\-for\-button;
+洛杉磯時報 < los\-angeles\-times;
+䘎 < name\-of\-an\-insect;
+硬件平臺 < hardware\-platform;
+䗹 < hairy\-caterpillar;
+作業 < school\-assignment;
+官方語言 < official\-language;
+鼓舞 < heartening\-\(news\);
+䕧 < zizania\-latifolia;
+䕆 < round\-straw\-quilt;
+醫學家 < medical\-scientist;
+䓛 < molecular\-formula;
+䒽 < illicium\-anisatum;
+䒐 < disturbed\-in\-mind;
+䑼 < ocean\-going\-liner;
+北京近郊 < suburb\-of\-beijing;
+䐠 < between\-the\-flesh;
+䐘 < to\-laugh\-heartily;
+䏰 < a\-kind\-of\-insects;
+華盛頓 < washington\-\(d\.c\.\);
+䍭 < a\-ewe\-or\-she\-goat;
+䍇 < flat\-bottom\-crock;
+䌨 < thin\-silk\-fabrics;
+䋻 < to\-spin\-and\-weave;
+䋺 < a\-swing\-a\-crupper;
+䋘 < to\-hand\-by\-a\-rope;
+文化的交流 < cultural\-exchange;
+䊯 < grains\-with\-beard;
+䉌 < crude\-bamboo\-mats;
+䈠 < books\-and\-volumes;
+斯洛伐克語 < slovak\-\(language\);
+案情 < details\-of\-a\-case;
+丟飯碗 < to\-lose\-one''s\-job;
+䄉 < a\-rite\-or\-service;
+財神 < the\-god\-of\-wealth;
+䁄 < to\-close\-the\-eyes;
+䀹 < to\-wink\-eyelashes;
+比較新 < comparatively\-new;
+㿃 < an\-ox\-headed\-boil;
+㾱 < incurable\-disease;
+㽍 < an\-earthen\-vessel;
+㺿 < a\-jade\-like\-stone;
+外國旅遊者 < foreign\-traveller;
+現狀 < current\-situation;
+小報 < tabloid\-newspaper;
+㶿 < the\-smoke\-went\-up;
+㶴 < a\-very\-great\-fire;
+一般原則 < general\-principle;
+㵫 < water\-gushing\-out;
+㵍 < filled\-with\-water;
+㵄 < name\-of\-a\-dynasty;
+朝聖 < make\-a\-pilgrimage;
+㳜 < the\-flowing\-water;
+㲲 < fine\-cotton\-cloth;
+㲘 < fine\-woolen\-cloth;
+㲋 < a\-kind\-of\-animals;
+㲃 < smooth\-and\-curved;
+保健 < health\-protection;
+㯿 < handle\-of\-a\-ladle;
+㯦 < the\-game\-of\-chess;
+淫水 < sexual\-secretions;
+㮵 < common\-sandalwood;
+㮨 < codium\-macronatum;
+㮚 < the\-chestnut\-tree;
+㬛 < to\-dry\-in\-the\-sun;
+射頻干擾 < radio\-interferece;
+㩮 < to\-lift\-up\-or\-off;
+㩩 < to\-come\-to\-an\-end;
+㩙 < a\-cork\-or\-stopper;
+㨢 < to\-rip\-open\-flesh;
+電信號 < electrical\-signal;
+尋味 < to\-think\-sth\-over;
+板煙 < plug\-\(of\-tobacco\);
+注視 < watch\-attentively;
+㣢 < to\-rest\-from\-work;
+㣓 < literary\-in\-taste;
+㣍 < a\-raised\-platform;
+㢮 < to\-unstring\-a\-bow;
+㢑 < a\-collapsed\-house;
+㢄 < a\-kind\-of\-utensil;
+法語 < french\-\(language\);
+㡟 < bed\-mats\-for\-baby;
+㠷 < a\-vessel\-for\-rice;
+㠥 < rugged\-and\-uneven;
+㟴 < lump\-on\-the\-hills;
+㟤 < zhuang\-in\-guangxi;
+㟃 < to\-have\-charge\-of;
+㞭 < name\-of\-an\-island;
+四面八方 < in\-all\-directions;
+㝌 < prolonged\-illness;
+㛴 < to\-anger\-to\-annoy;
+㚅 < to\-worship\-of\-god;
+㙩 < an\-enclosing\-wall;
+㘦 < wall\-made\-of\-soil;
+㘚 < angry\-air\-of\-look;
+㗼 < eating\-or\-talking;
+㗥 < sound\-of\-striking;
+㖧 < can\-not\-see\-clear;
+㔝 < strong\-resistance;
+㓾 < to\-wound\-the\-skin;
+獨立 < to\-be\-independent;
+㑝 < to\-make\-a\-fool\-of;
+㑏 < to\-stand\-and\-wait;
+㑊 < a\-kind\-of\-disease;
+秘書長 < secretary\-general;
+走出 < to\-move\-away\-from;
+聲援 < support\-\(a\-cause\);
+礦藏 < mineral\-resources;
+寫信 < to\-write\-a\-letter;
+三維 < three\-dimensional;
+穴居 < to\-live\-in\-a\-cave;
+狀語 < adverbial\-adjunct;
+在大多數情況下 < in\-most\-instances;
+酬金 < \(monetary\)\-reward;
+國家安全 < national\-security;
+財政 < finances\-\(public\);
+海洋溫度 < ocean\-temperature;
+網際協定 < internet\-protocol;
+外交關係 < foreign\-relations;
+安危 < safety\-and\-danger;
+巴克夏豬 < berkshire\-\(swine\);
+名稱 < name\-\(of\-a\-thing\);
+物質 < \(physical\)\-matter;
+吃穿 < food\-and\-clothing;
+訊框傳送論壇 < frame\-relay\-forum;
+穴位 < acupuncture\-point;
+學位 < educational\-level;
+各界 < all\-walks\-of\-life;
+耳子 < handle\-\(on\-a\-pot\);
+歐洲人 < european\-\(person\);
+思維 < \(line\-of\)\-thought;
+衛生部 < health\-department;
+業界標準 < industry\-standard;
+以免 < in\-order\-to\-avoid;
+一千七百萬 < seventeen\-million;
+事實 < \(the\)\-fact\-\(that\);
+本性 < natural\-instincts;
+難題 < difficult\-problem;
+委員會會議 < committee\-meeting;
+變相 < in\-disguised\-form;
+財務 < financial\-affairs;
+服役 < serve\-in\-the\-army;
+醫療 < medical\-treatment;
+陸基導彈 < land\-based\-missle;
+敬重 < to\-respect\-deeply;
+暗河 < underground\-river;
+頸椎 < cervical\-vertibra;
+網點 < node\-in\-a\-network;
+黑客 < hacker\-\(computer\);
+纖芯 < core\-\(of\-a\-fiber\);
+編隊 < form\-into\-columns;
+敗退 < retreat\-in\-defeat;
+本國 < one''s\-own\-country;
+太平洋 < the\-pacific\-ocean;
+原因是 < the\-reason\-is\-\.\.\.;
+計算機工業 < computer\-industry;
+西番雅書 < book\-of\-zephaniah;
+語言 < \(spoken\)\-language;
+一年半 < a\-year\-and\-a\-half;
+專家評論 < expert\-commentary;
+阿爾巴尼亞人 < albanian\-\(person\);
+不屑 < disdain\-to\-do\-sth;
+嚇得發抖 < tremble\-with\-fear;
+半票 < half\-price\-ticket;
+獨唱 < \(in\-singing\)\-solo;
+不甘心 < not\-reconciled\-to;
+四門轎車 < sedan\-\(motor\-car\);
+私人 < private\-\(citizen\);
+獲准 < obtain\-permission;
+客戶機 < client\-\(computer\);
+權鑰 < keys\-of\-authority;
+失業率 < unemployment\-rate;
+爆管 < cartridge\-igniter;
+礦床 < \(mineral\)\-deposit;
+愛不釋手 < fondle\-admiringly;
+止血 < stanch\-\(bleeding\);
+名字 < \(a\-person''s\)\-name;
+警察局 < police\-department;
+台幣 < new\-taiwan\-dollar;
+顧及 < take\-into\-account;
+歸心者 < religious\-convert;
+沒關係 < it\-doesn''t\-matter;
+下去 < go\-down\-\(descend\);
+從頭到腳 < from\-head\-to\-foot;
+勻稱 < well\-proportioned;
+不力 < not\-do\-one''s\-best;
+道謝 < to\-express\-thanks;
+硝煙 < smoke\-\(from\-guns\);
+藝人 < performing\-artist;
+包園兒 < buy\-the\-whole\-lot;
+教練 < \(athlete''s\)\-coach;
+出院 < to\-leave\-hospital;
+阿里 < ali\-\(proper\-name\);
+一身汗 < sweating\-all\-over;
+附近 < \(in\-the\)\-vicinity;
+廣播網路 < broadcast\-network;
+笨口拙舌 < awkward\-in\-speech;
+牌樓 < decorated\-archway;
+巴斯克語 < basque\-\(language\);
+父母 < father\-and\-mother;
+華北平原 < north\-china\-plain;
+救恩計劃 < plan\-of\-salvation;
+个 < numerary\-adjunct;
+里 < unit\-of\-distance;
+阳 < ''male''\-principle;
+訝 < express\-surprise;
+黍 < glutinous\-millet;
+剧 < theatrical\-plays;
+蘂 < stamen\-or\-pistil;
+挺 < to\-stand\-upright;
+础 < foundation\-stone;
+舅 < mother''s\-brother;
+萧 < common\-artemisia;
+俺 < personal\-pronoun;
+玲 < tinkling\-of\-jade;
+捩 < twist\-with\-hands;
+黛 < blacken\-eyebrows;
+妆 < to\-adorn\-oneself;
+幢 < carriage\-curtain;
+梭 < weaver''s\-shuttle;
+漪 < ripples\-on\-water;
+眷 < take\-interest\-in;
+勋 < meritorious\-deed;
+甭 < there\-is\-no\-need;
+祠 < ancestral\-temple;
+舔 < lick\-with\-tongue;
+蕊 < unopened\-flowers;
+赣 < jiangxi\-province;
+跷 < raise\-one''s\-foot;
+剁 < chop\-by\-pounding;
+薰 < a\-medicinal\-herb;
+叼 < holding\-in\-mouth;
+荼 < bitter\-vegetable;
+徙 < move\-one''s\-abode;
+涔 < river\-in\-shaanxi;
+潢 < expanse\-of\-water;
+秸 < stalks\-of\-millet;
+袈 < buddhist\-cassock;
+珞 < kind\-of\-necklace;
+啾 < wailing\-of\-child;
+亻 < radical\-number\-9;
+夙 < early\-in\-morning;
+鹘 < a\-kind\-of\-pigeon;
+娩 < give\-birth\-child;
+姝 < a\-beautiful\-girl;
+懑 < be\-sick\-at\-heart;
+锉 < carpenter''s\-file;
+洱 < a\-lake\-in\-yunnan;
+蝈 < small\-green\-frog;
+帼 < women''s\-headgear;
+狎 < be\-familiar\-with;
+胪 < arrange\-in\-order;
+豢 < domestic\-animals;
+眇 < blind\-in\-one\-eye;
+羿 < legendary\-archer;
+芩 < salt\-marsh\-plant;
+茭 < an\-aquatic\-grass;
+蓖 < castor\-oil\-plant;
+傧 < entertain\-guests;
+薜 < evergreen\-shrubs;
+趺 < sit\-cross\-legged;
+椹 < a\-chopping\-board;
+霈 < torrential\-rains;
+曩 < in\-ancient\-times;
+栌 < supporting\-block;
+哚 < chemical\-element;
+筌 < bamboo\-fish\-trap;
+浍 < irrigation\-ditch;
+猁 < a\-kind\-of\-monkey;
+啶 < \-d\-\+\-ine\-\(chem\.\);
+鬯 < sacrificial\-wine;
+鲷 < pagrosomus\-major;
+聱 < bent\-and\-twisted;
+劢 < put\-forth\-effort;
+蟪 < a\-kind\-of\-cicada;
+赆 < farewell\-present;
+埯 < cover\-with\-earth;
+鲔 < kind\-of\-sturgeon;
+罨 < medical\-compress;
+嫜 < husband''s\-parent;
+漤 < marinate\-in\-salt;
+嚆 < give\-forth\-sound;
+薹 < cyperus\-rotundus;
+茆 < species\-of\-grass;
+磨子 < mill\,\-millstones;
+共產黨部隊 < communist\-forces;
+后人 < later\-generation;
+航空母艦 < aircraft\-carrier;
+識字 < to\-learn\-to\-read;
+中國大陸 < chinese\-mainland;
+影像會議 < video\-conference;
+心得 < knowledge\-gained;
+悲歡離合 < joys\-and\-sorrows;
+百里挑一 < one\-in\-a\-hundred;
+白細胞 < white\-blood\-cell;
+語法術語 < grammatical\-term;
+求婚 < propose\-marriage;
+編目 < make\-a\-catalogue;
+電流 < electric\-current;
+城鎮 < cities\-and\-towns;
+委員 < committee\-member;
+壁畫 < mural\-\(painting\);
+姓名 < name\-and\-surname;
+是否 < whether\-\(or\-not\);
+總機 < central\-exchange;
+過程 < course\-of\-events;
+熊猴 < assamese\-macaque;
+大會 < general\-assembly;
+基調 < \(speech\)\-keynote;
+誤會 < to\-misunderstand;
+更高性能 < high\-performance;
+超高速乙太網路 < gigabit\-ethernet;
+訂票 < to\-issue\-tickets;
+壽桃 < birthday\-peaches;
+軍事科學 < military\-science;
+服務提供者 < service\-provider;
+器官移殖 < organ\-transplant;
+移動式電話 < mobile\-telephone;
+巴豆 < \(purging\)\-croton;
+壽星 < god\-of\-longevity;
+影像處理 < image\-processing;
+入迷 < to\-be\-fascinated;
+明代 < the\-ming\-dynasty;
+性關係 < sexual\-relations;
+人事部門 < personnel\-office;
+退票 < bounce\-\(a\-check\);
+潛在威脅 < potential\-threat;
+殯儀館 < the\-undertaker''s;
+統計數據 < statistical\-data;
+繃子 < embroidery\-frame;
+得出 < obtain\-\(results\);
+免費 < free\-\(of\-charge\);
+遲暮 < past\-one''s\-prime;
+研討會 < discussion\-forum;
+不分青紅皂白 < indiscriminately;
+特定含義 < specific\-meaning;
+金融系統 < financial\-system;
+導致死亡 < to\-lead\-to\-death;
+板上釘釘 < that\-clinches\-it;
+網橋 < \(network\)\-bridge;
+列為 < be\-classified\-as;
+婚外性接觸 < extramarital\-sex;
+國防 < national\-defence;
+故居 < former\-residence;
+波美比重計 < baume\-hydrometer;
+齙 < projecting\-teeth;
+鹶 < salty\-and\-bitter;
+剽悍 < swift\-and\-fierce;
+武官 < military\-attache;
+不等邊三角形 < scalene\-triangle;
+違憲 < unconstitutional;
+鯆 < the\-skate\-or\-ray;
+勞動 < \(physical\)\-labor;
+為生 < to\-make\-a\-living;
+電腦企業 < computer\-company;
+公羊 < ram\-\(male\-sheep\);
+船隊 < fleet\-\(of\-ships\);
+魬 < sole\-or\-flounder;
+廣州 < guangzhou\-\(city\);
+唉聲嘆氣 < heave\-deep\-sighs;
+不好意思 < feel\-embarrassed;
+電力 < electrical\-power;
+補血 < enrich\-the\-blood;
+骴 < a\-putrid\-carcase;
+外國投資者 < foreign\-investor;
+馘 < cut\-off\-left\-ear;
+巴布亞新幾內亞 < papau\-new\-guinea;
+資料量 < quantity\-of\-data;
+編輯室 < editorial\-office;
+飀 < soughing\-of\-wind;
+燈光 < \(stage\)\-lighting;
+韝 < leather\-arm\-band;
+韊 < a\-case\-for\-a\-bow;
+鞶 < big\-leather\-belt;
+透支 < \(bank\)\-overdraft;
+正常工作 < normal\-operation;
+雗 < a\-white\-pheasant;
+隤 < to\-fall\-in\-ruins;
+傳真發送 < fax\-transmission;
+闠 < gate\-of\-a\-market;
+異性性接觸 < heterosexual\-sex;
+迴旋 < maneuvering\-room;
+拉丁語 < latin\-\(language\);
+操作系統 < operating\-system;
+銻 < antimony\-stibium;
+銧 < point\-of\-a\-sword;
+鉀 < potassium\-kalium;
+白磷 < white\-phosphorus;
+適配層 < adaptation\-layer;
+出風頭 < to\-create\-a\-stir;
+報捷 < report\-a\-success;
+訪問 < pay\-a\-visit\-\(to\);
+傳輸媒界 < transport\-method;
+除夕 < \(new\-year''s\)\-eve;
+躷 < of\-short\-stature;
+蹱 < to\-stagger\-along;
+蹐 < take\-short\-steps;
+桌上型電腦 < desktop\-computer;
+辦案 < to\-handle\-a\-case;
+賙 < give\-for\-charity;
+越野車 < off\-road\-vehical;
+豏 < half\-grown\-beans;
+網絡直徑 < network\-diameter;
+訂單 < \(purchase\)\-order;
+成群結隊 < in\-large\-numbers;
+適配器 < adapter\-\(device\);
+副主席 < vice\-chairperson;
+華僑 < overseas\-chinese;
+誕 < to\-bear\-children;
+滑鼠 < mouse\-\(computer\);
+覂 < to\-throw\-a\-rider;
+襱 < legs\-of\-trousers;
+裛 < to\-wrap\-and\-bind;
+袗 < unlined\-garments;
+無所不賣 < to\-sell\-anything;
+衎 < to\-give\-pleasure;
+蟿 < acrida\-chinensis;
+螋 < spider\-millipede;
+蝻 < immature\-locusts;
+病菌 < harmful\-bacteria;
+記者招待會 < press\-conference;
+捷克語 < czech\-\(language\);
+虥 < striped\-wild\-cat;
+筆底下 < ability\-to\-write;
+進修 < advanced\-studies;
+藦 < edible\-mushrooms;
+長江 < changjiang\-river;
+藋 < sambucu\-javinica;
+薃 < cyperus\-amuricus;
+通用電器 < general\-electric;
+蔇 < luxuriant\-growth;
+幾千 < several\-thousand;
+朝鮮半島 < korean\-peninsula;
+葙 < celosia\-argentea;
+菉 < the\-green\-bamboo;
+芘 < malva\-sylvestris;
+到了 < in\-\(a\-past\-time\);
+核原料 < nuclear\-material;
+有關人士 < persons\-involved;
+報名 < enter\-one''s\-name;
+出名 < well\-known\-\(for\);
+授獎 < to\-award\-a\-prize;
+體育 < physical\-culture;
+耶利米書 < book\-of\-jeremiah;
+耼 < ears\-without\-rim;
+不爭氣 < be\-disappointing;
+漢語 < chinese\-language;
+金融市場 < financial\-market;
+綵 < varicolored\-silk;
+紽 < a\-strand\-of\-silk;
+糵 < fermenting\-grain;
+糈 < sacrificial\-rice;
+兵役 < military\-service;
+籧 < crude\-bamboo\-mat;
+北冰洋 < the\-arctic\-ocean;
+兩岸對話 < bilaterial\-talks;
+箯 < bamboo\-palanquin;
+箊 < bamboo\-with\-thin;
+秷 < sound\-of\-reaping;
+磥 < a\-heap\-of\-stones;
+羅密歐與朱麗葉 < romeo\-and\-juliet;
+砫 < ancestral\-tablet;
+瞘 < deeply\-sunk\-eyes;
+瞋 < glare\-with\-anger;
+畢肖 < resemble\-closely;
+睜 < to\-open\-the\-eyes;
+不經之談 < absurd\-statement;
+崩漏 < uterine\-bleeding;
+盦 < lid\-of\-a\-caldron;
+癉 < to\-hate\-bitterly;
+冗員 < excess\-personnel;
+兵士 < ordinary\-soldier;
+要人 < important\-person;
+採擇 < select\-and\-adopt;
+踩線 < step\-on\-the\-line;
+瓟 < the\-bottle\-gourd;
+猸 < a\-kind\-of\-animal;
+又來了 < here\-we\-go\-again;
+癱子 < paralyzed\-person;
+狻 < a\-fabulous\-beast;
+巨匠 < master\-craftsman;
+閱兵 < to\-review\-troops;
+傲氣 < air\-of\-arrogance;
+烜 < light\-of\-the\-sun;
+便衣 < civilian\-clothes;
+網際網路協會 < internet\-society;
+路由協定 < routing\-protocol;
+澦 < place\-in\-sichuan;
+澥 < a\-blocked\-stream;
+澔 < radiance\-of\-gems;
+尋訪 < to\-inquire\-after;
+寶貝 < treasured\-object;
+閱世 < to\-see\-the\-world;
+渫 < beating\-of\-ocean;
+簡明 < simple\-and\-clear;
+網路平台 < network\-platform;
+安頓 < find\-a\-place\-for;
+公公 < husband''s\-father;
+例語 < example\-sentance;
+毮 < to\-pull\-out\-hair;
+毪 < serge\-from\-tibet;
+樛 < bending\-branches;
+閃亮 < brilliant\,\-shiny;
+光檢測器 < optical\-detector;
+枲 < male\-nettle\-hemp;
+電腦網路 < computer\-network;
+枒 < the\-coconut\-tree;
+波爾多液 < bordeaux\-mixture;
+斵 < to\-cut\-to\-pieces;
+斞 < a\-stack\-of\-grain;
+撚 < twirl\-in\-fingers;
+原子科學家 < atomic\-scientist;
+均勢 < balance\-of\-power;
+發達國家 < developed\-nation;
+十多億 < over\-one\-billion;
+已經進行 < already\-underway;
+傳送服務 < delivery\-service;
+挷 < to\-propel\-a\-boat;
+保留 < continue\-to\-have;
+人頭 < number\-of\-people;
+接人 < to\-meet\-a\-person;
+讀者來信 < reader''s\-letters;
+弳 < circular\-measure;
+廵 < to\-go\-on\-circuit;
+一下子 < in\-a\-short\-while;
+哈巴谷書 < book\-of\-habakkuk;
+核設施 < nuclear\-facility;
+國力 < a\-nation''s\-power;
+白壁微瑕 < a\-slight\-blemish;
+十幾個月 < ten\-months\-or\-so;
+非政府 < non\-governmental;
+主幹線 < backbone\-\(cable\);
+嬎 < to\-bear\-multiple;
+電視機 < television\-\(set\);
+媤 < husband''s\-family;
+扮演 < play\-the\-part\-of;
+流行病 < epidemic\-disease;
+病因 < cause\-of\-disease;
+軍事 < military\-affairs;
+佔線 < busy\-\(telephone\);
+山村 < mountain\-village;
+信用證 < letter\-of\-credit;
+不加思索 < without\-thinking;
+囍 < double\-happiness;
+嚳 < mythical\-emperor;
+學術界 < academic\-circles;
+拐彎 < to\-turn\-a\-corner;
+聚變 < \(nuclear\)\-fusion;
+表冊 < statistical\-form;
+嘅 < sound\-of\-sighing;
+單模光纖 < singlemode\-fiber;
+最大能力 < maximum\-capacity;
+衛星城 < \"satellite\"\-town;
+嗞 < to\-consult\-about;
+喺 < to\-be\-located\-at;
+審理 < to\-hear\-\(a\-case\);
+抄本 < handwritten\-copy;
+舔吮 < to\-lick\-and\-suck;
+的一種 < is\-one\-\(kind\-of\);
+曼德拉 < \(nelson\)\-mandela;
+有線電視 < cable\-television;
+印地語 < hindi\-\(language\);
+便橋 < temporary\-bridge;
+工業化 < to\-industrialize;
+冓 < a\-secluded\-place;
+不變資本 < constant\-capital;
+儊 < rough\-and\-rugged;
+傜 < a\-minority\-tribe;
+筆戰 < written\-polemics;
+便服 < everyday\-clothes;
+感謝 < \(express\)\-thanks;
+䶱 < a\-kind\-of\-turtle;
+䵤 < to\-crack\-or\-chap;
+䵣 < white\-with\-black;
+䵃 < a\-kind\-of\-barley;
+䴬 < crumbs\-of\-barley;
+出版社 < publishing\-house;
+下馬 < dismount\-a\-horse;
+䴅 < a\-legendary\-bird;
+沖繩島 < okinawa\-\(island\);
+䳢 < small\-wild\-goose;
+䳐 < an\-owl\-like\-bird;
+安眠 < sleep\-peacefully;
+䲲 < a\-hawk\-like\-bird;
+層層 < layer\-upon\-layer;
+䰃 < dishevelled\-hair;
+䯳 < loosely\-arranged;
+筆帽 < the\-cap\-of\-a\-pen;
+䯇 < to\-exert\-oneself;
+䮴 < unstable\-walking;
+䮳 < to\-give\-birth\-to;
+䮁 < a\-pair\-of\-horses;
+䫌 < bowed\-one''s\-head;
+䪎 < strings\-of\-a\-cap;
+䩥 < a\-belt\-for\-horse;
+䨻 < roar\-of\-thunders;
+䨴 < gathering\-clouds;
+䨳 < the\-rain\-stopped;
+䨏 < sound\-of\-raining;
+䨊 < a\-flock\-of\-birds;
+䧡 < a\-fortified\-wall;
+貶義 < derogatory\-sense;
+䧄 < name\-of\-a\-person;
+䦕 < bang\-of\-the\-door;
+䥛 < a\-kind\-of\-sickle;
+長度指示符 < length\-indicator;
+作法 < course\-of\-action;
+䣮 < smell\-of\-alcohol;
+䣫 < soured\-bean\-curd;
+䢞 < rows\-and\-columns;
+䡮 < trace\-of\-a\-wheel;
+䡢 < a\-small\-carriage;
+演員 < actor\-or\-actress;
+䠻 < to\-bend\-the\-body;
+鑒別 < to\-differentiate;
+䟋 < to\-press\-forward;
+保密 < maintain\-secrecy;
+䞌 < to\-lose\-in\-trade;
+䝋 < a\-little\-of\-pigs;
+䝇 < grunting\-of\-pigs;
+䛏 < to\-call\-somebody;
+䛎 < to\-shout\-in\-rage;
+䛂 < to\-separate\-from;
+䚔 < to\-look\-suddenly;
+䚒 < eyesight\-blurred;
+䚃 < to\-realize\-fully;
+借助 < to\-get\-help\-from;
+䙭 < to\-lift\-or\-raise;
+電話信號 < telephone\-signal;
+䘋 < a\-kind\-of\-insect;
+民主黨 < democratic\-party;
+䗏 < name\-of\-a\-insect;
+䖯 < poisonous\-insect;
+䖐 < sound\-of\-a\-tiger;
+甘地 < \(mahatma\)\-gandhi;
+仿真服務器 < emulation\-server;
+䒣 < lush\-or\-delicate;
+䑸 < a\-group\-of\-boats;
+䑅 < dizzy\-and\-sleepy;
+䐨 < back\-of\-the\-foot;
+䏒 < half\-of\-the\-body;
+䏏 < signs\-and\-groans;
+䎯 < winter\-ploughing;
+䎂 < colorful\-feather;
+電視劇 < tv\-drama\-program;
+䋤 < plain\-white\-silk;
+䋔 < to\-band\-together;
+䉷 < a\-feather\-screen;
+䉉 < a\-writing\-tablet;
+䈙 < bamboo\-to\-wither;
+䈈 < a\-kind\-of\-bamboo;
+注重 < pay\-attention\-to;
+䆿 < to\-talk\-in\-sleep;
+䆲 < a\-spacious\-house;
+䆈 < young\-and\-tender;
+䅼 < a\-kind\-of\-grains;
+䅺 < grain\-in\-the\-ear;
+輻射波 < radiation\-\(wave\);
+懸掛 < \(car\)\-suspension;
+䂪 < hard\-barren\-land;
+䀃 < a\-kind\-of\-vessel;
+㾦 < scab\-over\-a\-sore;
+㾁 < walking\-like\-mad;
+㽮 < a\-point\-of\-light;
+㽊 < cracking\-of\-tile;
+㻒 < red\-colored\-jade;
+㻁 < a\-kind\-of\-jasper;
+不謝 < don''t\-mention\-it;
+㺵 < black\-jade\-stone;
+㺴 < name\-of\-a\-spirit;
+㺦 < a\-running\-animal;
+㹺 < dog\-to\-take\-food;
+㹇 < a\-kind\-of\-cattle;
+㸣 < in\-ancient\-china;
+本義 < original\-meaning;
+㶾 < tough\-and\-honest;
+㶍 < name\-of\-a\-stream;
+伴星 < companion\-\(star\);
+保全 < save\-from\-damage;
+㴧 < of\-flowing\-water;
+威爾士語 < welsh\-\(language\);
+抄件 < duplicate\-\(copy\);
+㳽 < a\-watery\-expanse;
+㱶 < a\-swellen\-corpse;
+㱭 < an\-infertile\-egg;
+㰤 < to\-laugh\-hertily;
+㰛 < name\-of\-a\-county;
+㰅 < eaves\-of\-a\-house;
+㯕 < sticks\-or\-frames;
+㯃 < the\-varnish\-tree;
+男子籃球 < men''s\-basketball;
+㮓 < an\-extreme\-limit;
+㭺 < the\-cherry\-apple;
+聯邦大樓 < federal\-building;
+㪭 < to\-draw\-together;
+㪖 < sound\-of\-beating;
+普通問題 < common\-questions;
+㨼 < to\-take\-by\-force;
+罷課 < student''s\-strike;
+㧺 < a\-finger\-wrapper;
+輸送媒介 < transport\-medium;
+㦜 < to\-move\-the\-mind;
+應戰 < face\-a\-challenge;
+核威 < nuclear\-strength;
+㢰 < to\-stretch\-a\-bow;
+虜獲 < capture\-\(people\);
+㡽 < depraved\-talking;
+㡉 < a\-kind\-of\-fabric;
+㠧 < a\-little\-slanted;
+㠎 < a\-lofty\-mountain;
+本票 < cashier''s\-cheque;
+防衛武器 < defensive\-weapon;
+㝫 < shape\-of\-the\-sky;
+㝪 < a\-slanting\-house;
+㝩 < spaciously\-rooms;
+過份簡單化 < oversimplication;
+㜴 < dark\-and\-obscure;
+㜝 < to\-cherish\-anger;
+㜈 < a\-beaugiful\-face;
+體育之窗 < window\-on\-sports;
+書寫語言 < written\-language;
+㚜 < with\-great\-power;
+㚗 < with\-a\-big\-mouth;
+㚇 < draw\-the\-feet\-up;
+㙞 < a\-small\-mountain;
+㙎 < breach\-of\-a\-tank;
+㙅 < a\-walled\-viliage;
+㙀 < a\-vegetable\-plot;
+㗻 < baby''s\-answering;
+㗙 < to\-shout\-or\-bawl;
+㕭 < to\-bark\-as\-a\-dog;
+㕩 < sound\-of\-tapping;
+安徽 < anhui\-\(province\);
+㕇 < rocks\-collapsing;
+㔑 < an\-incised\-wound;
+商業化 < to\-commercialize;
+㒭 < an\-elder\-brother;
+㒁 < of\-great\-stature;
+站台 < railway\-platform;
+共享帶寬 < shared\-bandwidth;
+㐀 < hillock\-or\-mound;
+文化障礙 < cultural\-barrier;
+直接影響 < direct\-influence;
+與此同時 < at\-the\-same\-time;
+主要來源 < principle\-source;
+人民公社 < people''s\-commune;
+獲益 < obtain\-a\-benefit;
+下面請看 < please\-see\-below;
+今昔 < past\-and\-present;
+板栗 < chinese\-chestnut;
+吸管 < \(drinking\)\-straw;
+家務 < household\-duties;
+金融風波 < financial\-crisis;
+開幕式 < opening\-ceremony;
+實習生 < intern\-\(student\);
+民間 < among\-the\-people;
+婚禮 < wedding\-ceremony;
+警衛 < \(security\)\-guard;
+知識工程師 < knowledge\-worker;
+國賓館 < state\-guesthouse;
+乾杯 < to\-drink\-a\-toast;
+猿猴 < apes\-and\-monkeys;
+網絡協議 < network\-protocol;
+並激 < shunt\-excitation;
+量綱 < dimension\-\(unit\);
+質問 < \(ask\-a\)\-question;
+蒐集 < to\-gather\-\(data\);
+三千到五千萬 < 30\-to\-50\-million;
+不至於 < cannot\-go\-so\-far;
+暑瘟 < tropical\-disease;
+博覽 < read\-extensively;
+深入 < penetrate\-deeply;
+丹桂 < orange\-osmanthus;
+板壁 < wooden\-partition;
+某人 < a\-certain\-person;
+月曆 < monthly\-calendar;
+治病 < treat\-an\-illness;
+十誡 < ten\-commandments;
+白衣戰士 < warrior\-in\-white;
+安如磐石 < as\-solid\-as\-rock;
+外長 < foreign\-minister;
+百分點 < percentage\-point;
+配藥 < dispense\-\(drugs\);
+功能集 < function\-library;
+字串 < character\-string;
+故障排除 < fault\-resolution;
+金融改革 < financial\-reform;
+一個中國政策 < one\-china\-policy;
+化學戰 < chemical\-warfare;
+大多數 < \(great\)\-majority;
+大選 < general\-election;
+唐代 < the\-tang\-dynasty;
+性病 < venereal\-disease;
+君權 < monarchial\-power;
+雌性接口 < female\-connector;
+藏文 < tibetan\-language;
+心臟移殖 < heart\-transplant;
+菏蘭語 < dutch\-\(language\);
+一年多 < more\-than\-a\-year;
+遙控操作 < remote\-operation;
+簡單的說 < to\-put\-it\-simply;
+光接收器 < optical\-receiver;
+機械語言 < machine\-language;
+胡志明市 < ho\-chi\-minh\-city;
+讀物 < reading\-material;
+邊防 < frontier\-defence;
+共和黨 < republican\-party;
+脖頸兒 < back\-of\-the\-neck;
+向東 < towards\-the\-east;
+大無畏 < utterly\-fearless;
+集錦 < best\-of\-the\-best;
+罷教 < teacher''s\-strike;
+外語 < foreign\-language;
+課表 < school\-timetable;
+誤解 < misunderstanding;
+不知所云 < not\-know\-what\-sb;
+不忙 < there''s\-no\-hurry;
+超高速 < ultra\-high\-speed;
+集郵 < stamp\-collecting;
+廠長 < factory\-director;
+變法 < political\-reform;
+波折 < twists\-and\-turns;
+群島 < group\-of\-islands;
+太陽微系統公司 < sun\-microsystems;
+聯席會議 < joint\-conference;
+交換網路 < switched\-network;
+犯法 < to\-break\-the\-law;
+不少 < not\-\(just\)\-a\-few;
+年齡 < \(a\-person''s\)\-age;
+性接觸 < sexual\-encounter;
+比翼 < fly\-wing\-to\-wing;
+骨幹網路 < backbone\-network;
+軟件企業 < software\-company;
+拿手菜 < specialty\-\(dish\);
+施洗約翰 < john\-the\-baptist;
+神奇 < magical\-mystical;
+禁品 < contraband\-goods;
+尼希米記 < book\-of\-nehemiah;
+報紙報導 < newspaper\-report;
+最先 < \(the\)\-very\-first;
+明淨 < bright\-and\-clean;
+重慶 < chongqing\-\(city\);
+婆婆 < husband''s\-mother;
+互操性 < interoperability;
+吃完 < to\-finish\-eating;
+逼近 < press\-on\-towards;
+報館 < newspaper\-office;
+電纜 < \(electric\)\-cable;
+功能群 < functional\-group;
+狀態 < state\-of\-affairs;
+中介 < agent\-\(computer\);
+不光 < not\-the\-only\-one;
+暑天 < hot\-\(summer\)\-day;
+反對 < to\-fight\-against;
+不久 < not\-long\-\(after\);
+離開北京 < to\-leave\-beijing;
+一輩子 < \(for\)\-a\-lifetime;
+睨 < look\-askance\-at;
+怎 < what\?\-why\?\-how\?;
+收 < gather\-together;
+党 < political\-party;
+版 < printing\-blocks;
+季 < quarter\-of\-year;
+牡 < male\-of\-animals;
+診 < examine\-patient;
+姑 < father''s\-sister;
+褓 < swaddling\-cloth;
+馆 < public\-building;
+漿 < any\-thick\-fluid;
+雄 < male\-of\-species;
+亿 < hundred\-million;
+固 < to\-become\-solid;
+溪 < mountain\-stream;
+虞 < concerned\-about;
+嗚 < sound\-of\-crying;
+薇 < osmunda\-regalis;
+戏 < theatrical\-play;
+召 < imperial\-decree;
+瑞 < felicitous\-omen;
+鬢 < hair\-on\-temples;
+僧 < buddhist\-priest;
+檜 < chinese\-cypress;
+檎 < small\-red\-apple;
+驅 < spur\-a\-horse\-on;
+臟 < internal\-organs;
+圳 < furrow\-in\-field;
+繻 < fine\-silk\-guaze;
+孟 < first\-in\-series;
+縋 < climb\-down\-rope;
+閤 < small\-side\-door;
+斎 < vegetarian\-diet;
+盯 < rivet\-gaze\-upon;
+粟 < unhusked\-millet;
+籐 < climbing\-plants;
+掻 < scratch\-lightly;
+俘 < prisoner\-of\-war;
+挾 < clasp\-under\-arm;
+媳 < daughter\-in\-law;
+宙 < time\-as\-concept;
+卜 < fortune\-telling;
+帖 < invitation\-card;
+逞 < indulge\-oneself;
+揪 < grasp\-with\-hand;
+仑 < logical\-reasons;
+煞 < malignant\-deity;
+鳌 < huge\-sea\-turtle;
+瞩 < watch\-carefully;
+疚 < chronic\-disease;
+蔓 < creeping\-plants;
+骏 < excellent\-horse;
+闽 < fujian\-province;
+袅 < curling\-upwards;
+辐 < spokes\-of\-wheel;
+琉 < sparkling\-stone;
+舜 < legendary\-ruler;
+轧 < crush\-by\-weight;
+滇 < yunnan\-province;
+桓 < variety\-of\-tree;
+棠 < crab\-apple\-tree;
+吮 < suck\-with\-mouth;
+蜷 < creep\-like\-worm;
+枷 < cangue\-scaffold;
+羲 < ancient\-emperor;
+孚 < brood\-over\-eggs;
+皑 < brilliant\-white;
+缥 < light\-blue\-silk;
+诌 < play\-with\-words;
+泾 < name\-of\-a\-river;
+觎 < desire\-strongly;
+玺 < imperial\-signet;
+卞 < to\-be\-impatient;
+辔 < bridle\-of\-horse;
+趔 < not\-progressing;
+徜 < walking\-and\-fro;
+荠 < water\-chestnuts;
+汞 < element\-mercury;
+畿 < imperial\-domain;
+舂 < grind\-in\-mortar;
+籴 < purchase\-grains;
+穰 < stalks\-of\-grain;
+嗄 < hoarse\-of\-voice;
+渚 < small\-sand\-bank;
+砝 < balance\-weights;
+杼 < shuttle\-of\-loom;
+龃 < irregular\-teeth;
+勐 < imperial\-degree;
+矸 < a\-rock\-or\-cliff;
+蕨 < pteris\-aquilina;
+豉 < fermented\-beans;
+徭 < conscript\-labor;
+麈 < species\-of\-deer;
+蕤 < drooping\-leaves;
+绡 < raw\-silk\-fabric;
+芨 < name\-of\-a\-plant;
+苣 < kind\-of\-lettuce;
+碛 < sand\-and\-gravel;
+莒 < hemp\-like\-plant;
+萁 < kind\-of\-grasses;
+眄 < to\-look\-askance;
+囟 < top\-of\-the\-head;
+岣 < a\-hill\-in\-hunan;
+嗾 < to\-set\-a\-dog\-on;
+荜 < species\-of\-bean;
+糁 < a\-grain\-of\-rice;
+粝 < unpolished\-rice;
+裰 < to\-mend\-clothes;
+薨 < death\-of\-prince;
+茑 < the\-convovulvus;
+翮 < stem\-of\-feather;
+艟 < ancient\-warship;
+鼯 < flying\-squirrel;
+砩 < name\-of\-a\-stone;
+炻 < a\-kind\-of\-china;
+檫 < sassafras\-tzumu;
+狴 < a\-kind\-of\-tapir;
+高效率 < high\-efficiency;
+天父 < heavenly\-father;
+幾乎完全 < almost\-entirely;
+特徵 < characteristics;
+信息時代 < information\-age;
+暑假 < summer\-vacation;
+擺脫 < break\-away\-from;
+半數 < half\-the\-number;
+冰霜 < moral\-integrity;
+勻溜 < even\-and\-smooth;
+原委 < the\-whole\-story;
+產品經理 < product\-manager;
+資料鏈結層 < data\-link\-layer;
+軍事威脅 < military\-threat;
+特寫 < feature\-article;
+春天 < spring\-\(season\);
+網路服務 < network\-service;
+研究中心 < research\-center;
+止痛 < to\-relieve\-pain;
+前不久 < not\-long\-before;
+叛亂 < armed\-rebellion;
+文檔 < \(computer\)\-file;
+崇拜儀式 < worship\-service;
+緬甸 < myanmar\-\(burma\);
+方興未艾 < to\-be\-unfolding;
+雙邊貿易 < bilateral\-trade;
+失望 < be\-disappointed;
+軍事部門 < military\-branch;
+網站 < network\-station;
+除此之外 < apart\-from\-this;
+太陽公司 < sun\-corporation;
+外國資本 < foreign\-capital;
+開門 < open\-\(the\)\-door;
+生產隊 < production\-team;
+經管 < be\-in\-charge\-of;
+用戶線 < subscriber\-line;
+美國人 < american\-person;
+半天 < half\-of\-the\-day;
+語族 < language\-branch;
+往年 < in\-former\-years;
+日報 < daily\-newspaper;
+光電 < opto\-electrical;
+白鐵 < galvanized\-iron;
+雅歌 < song\-of\-solomon;
+彼岸 < the\-other\-shore;
+配合 < coordinate\-with;
+報系 < newspaper\-chain;
+豐富多彩 < richly\-colorful;
+標量 < scalar\-quantity;
+南北 < north\-and\-south;
+比容 < specific\-volume;
+看上去 < it\-would\-appear;
+盈虧 < profit\-and\-loss;
+勸導 < try\-to\-convince;
+陣營 < group\-of\-people;
+幾百 < several\-hundred;
+大寫 < capital\-letters;
+過活 < live\-one''s\-life;
+牌位 < memorial\-tablet;
+早些 < \(a\-bit\)\-earlier;
+課外 < extracurricular;
+零等待狀態 < zero\-wait\-state;
+收拾 < to\-put\-in\-order;
+不白之冤 < unrighted\-wrong;
+網段 < network\-segment;
+弟弟 < younger\-brother;
+遲早 < sooner\-or\-later;
+戒備森嚴 < heavily\-guarded;
+矮小 < short\-and\-small;
+半途而廢 < give\-up\-halfway;
+比價 < price\-relations;
+龑 < high\-and\-bright;
+新任 < newly\-appointed;
+霸佔 < forcibly\-occupy;
+鼕 < rattle\-of\-drums;
+幾十億 < several\-billion;
+病魔 < serious\-illness;
+常用 < in\-common\-usage;
+冰磚 < ice\-cream\-brick;
+鴒 < species\-of\-lark;
+白菜 < chinese\-cabbage;
+鴂 < the\-tailor\-bird;
+鳻 < the\-wild\-pigeon;
+鳓 < chinese\-herring;
+鱡 < the\-cuttle\-fish;
+鱅 < a\-kind\-of\-tench;
+不待說 < needless\-to\-say;
+批量生產 < to\-mass\-produce;
+魰 < the\-flying\-fish;
+在很多方面 < in\-many\-aspects;
+髾 < tail\-of\-a\-comet;
+髴 < disheveled\-hair;
+操作速率 < operating\-speed;
+強加 < impose\-by\-force;
+騘 < a\-piebald\-horse;
+饇 < to\-eat\-too\-much;
+颻 < floating\-in\-air;
+颮 < storm\-whirlwind;
+外事 < foreign\-affairs;
+聯合發表 < joint\-statement;
+邊地 < border\-district;
+韞 < an\-orange\-color;
+鞴 < saddle\-up\-horse;
+靸 < a\-child''s\-shoes;
+雱 < snowing\-heavily;
+舌面 < blade\-of\-tongue;
+創記錄 < to\-set\-a\-record;
+著作 < a\-literary\-work;
+白米 < \(polished\)\-rice;
+瀕臨 < on\-the\-verge\-of;
+不完全葉 < incomplete\-leaf;
+選單 < \(software\)\-menu;
+執法 < law\-enforcement;
+鎤 < sound\-of\-a\-bell;
+不名數 < abstract\-number;
+進展 < to\-make\-headway;
+為此 < for\-this\-reason;
+醾 < unfiltered\-wine;
+核反應堆 < nuclear\-reactor;
+經濟改革 < economic\-reform;
+鄹 < name\-of\-a\-state;
+廠史 < factory\-history;
+光磁 < magneto\-optical;
+隘口 < \(mountain\)\-pass;
+網址 < \(internet\)\-site;
+畫面 < \(picture\)\-frame;
+菜地 < vegetable\-field;
+畜類 < domestic\-animal;
+躀 < to\-stumble\-over;
+總經理 < general\-manager;
+趮 < easily\-provoked;
+半壁江山 < half\-of\-country;
+抱養 < adopt\-\(a\-child\);
+城樓 < city\-gate\-tower;
+諡 < posthumous\-name;
+採種 < seed\-collecting;
+俄巴底亞書 < book\-of\-obadiah;
+訒 < hesitate\-to\-say;
+古典音樂 < classical\-music;
+花白 < grizzled\-\(hair\);
+不可多得 < hard\-to\-come\-by;
+襼 < ''kimono''\-sleeve;
+襌 < unlined\-garment;
+褧 < unlined\-clothes;
+重新開始 < resume\,\-restart;
+屍體 < \(lifeless\)\-body;
+圖簽 < \(computer\)\-icon;
+巴望 < look\-forward\-to;
+螚 < eristalis\-tenax;
+層雲 < stratus\-\(cloud\);
+數百萬 < several\-million;
+拼起來 < to\-put\-together;
+籌碼 < bargaining\-chip;
+藶 < a\-kind\-of\-plant;
+蕢 < edible\-amaranth;
+蕍 < alisma\-plantags;
+蔾 < kind\-of\-bramble;
+蒨 < lush\-vegetation;
+蒓 < an\-edible\-water;
+電子郵件 < electronic\-mail;
+降價 < price\-reduction;
+葑 < the\-rape\-turnip;
+米粉肉 < rice\-flour\-meat;
+標樁 < \(marking\)\-stake;
+閉會 < close\-a\-meeting;
+艅 < a\-despatch\-boat;
+純屬 < pure\-and\-simple;
+光榮 < honor\-and\-glory;
+腢 < the\-collar\-bone;
+辦學 < to\-run\-a\-school;
+標杆 < surveyor''s\-pole;
+幣制 < currency\-system;
+報到 < report\-for\-duty;
+罿 < net\-catch\-birds;
+經濟前途 < economic\-future;
+年份 < particular\-year;
+工讀學校 < the\-reformatory;
+基地 < \(military\)\-base;
+嚴重關切 < serious\-concern;
+光明 < bright\-\(future\);
+高技術 < high\-technology;
+保釋 < release\-on\-bail;
+絍 < to\-lay\-the\-warp;
+經濟危機 < economic\-crisis;
+射頻 < radio\-frequency;
+動態助詞 < aspect\-particle;
+閉音節 < closed\-syllable;
+簔 < a\-coat\-raincoat;
+篰 < a\-bamboo\-basket;
+鬥爭 < struggle\-\(with\);
+裡根 < \(ronald\)\-reagan;
+穄 < panicled\-millet;
+禋 < offer\-sacrifice;
+磪 < a\-high\-mountain;
+暴跳如雷 < stamp\-with\-fury;
+抗衡 < contend\-against;
+級別 < \(military\)\-rank;
+筆誤 < a\-slip\-of\-a\-pen;
+八寶 < eight\-treasures;
+百年 < a\-hundred\-years;
+以西結書 < book\-of\-ezekiel;
+摘借 < to\-borrow\-money;
+化學武器 < chemical\-weapon;
+瘈 < prolonged\-fever;
+瘃 < sores\-from\-cold;
+痾 < chronic\-illness;
+痵 < a\-heart\-symptom;
+痮 < a\-swelled\-belly;
+痠 < aching\-of\-limbs;
+痁 < chronic\-malaria;
+畬 < reclaimed\-field;
+長官 < senior\-official;
+虛電路 < virtual\-circuit;
+登記用戶 < registered\-user;
+種族主義者 < racist\-\(person\);
+琭 < jade\-like\-stone;
+從去年 < since\-last\-year;
+珧 < mother\-of\-pearl;
+入境 < enter\-a\-country;
+珇 < carving\-on\-jade;
+嚴重問題 < serious\-problem;
+臂紗 < \(black\)\-armband;
+玟 < streaks\-in\-jade;
+當務之急 < urgent\-priority;
+獱 < a\-kind\-of\-otter;
+軍校 < military\-school;
+狫 < name\-of\-a\-tribe;
+軟件系統 < software\-system;
+牄 < to\-walk\-rapidly;
+熓 < the\-bank\-a\-fire;
+焵 < to\-temper\-steel;
+把舵 < hold\-the\-rudder;
+菲律賓 < the\-philippines;
+被捕 < be\-under\-arrest;
+瀞 < pool\-in\-a\-river;
+潙 < river\-in\-shanxi;
+網絡瀏覽器 < network\-browser;
+滎 < county\-in\-henan;
+本族語 < native\-language;
+泩 < rising\-of\-water;
+購物中心 < shopping\-center;
+沚 < islet\-in\-stream;
+百十 < a\-hundred\-or\-so;
+坐好 < to\-sit\-properly;
+絆腳石 < stumbling\-block;
+感染者 < infected\-person;
+多樣化 < diversification;
+榡 < quercus\-dentata;
+壁壘森嚴 < closely\-guarded;
+椺 < beam\-of\-a\-house;
+網管員 < network\-manager;
+帖撒羅尼迦後書 < 2\-thessalonians;
+錦雞 < golden\-pheasant;
+柎 < calyx\-of\-flower;
+柁 < large\-tie\-beams;
+枬 < an\-even\-grained;
+自殺 < to\-kill\-oneself;
+朣 < the\-rising\-moon;
+瑪拉基書 < book\-of\-malachi;
+高昂 < in\-high\-spirits;
+貿易夥伴 < trading\-partner;
+穿過 < to\-pass\-through;
+備戰 < prepare\-for\-war;
+月份會議 < monthly\-meeting;
+摻 < a\-delicate\-hand;
+安身 < make\-one''s\-home;
+游說 < drum\-up\-support;
+至於 < go\-so\-far\-as\-to;
+戄 < to\-be\-in\-awe\-of;
+研究報告 < research\-report;
+先進武器 < advanced\-weapon;
+生物 < living\-creature;
+戶籍 < census\-register;
+大發雷霆 < extremely\-angry;
+徬 < to\-wander\-about;
+弴 < red\-lacquer\-bow;
+美國政府 < u\.s\.\-government;
+校舍 < school\-building;
+巹 < nuptial\-winecup;
+不干涉 < noninterference;
+善良 < good\-and\-honest;
+嵎 < mountain\-recess;
+亞爾發和奧米加 < alpha\-and\-omega;
+峞 < high\-and\-uneven;
+塞爾特語 < celtic\-language;
+核武庫 < nuclear\-arsenal;
+客戶機軟件 < client\-software;
+措辭強硬 < strongly\-worded;
+軍備 < \(military\)\-arms;
+首腦 < head\-\(of\-state\);
+安葬 < bury\-\(the\-dead\);
+自動售貨機 < vending\-machine;
+夲 < advance\-quickly;
+中美洲 < central\-america;
+極力 < do\-at\-all\-costs;
+跑步 < to\-walk\-quickly;
+坴 < a\-clod\-of\-earth;
+喣 < to\-breathe\-upon;
+唲 < forced\-laughter;
+公司會議 < company\-meeting;
+貶詞 < derogatory\-term;
+互連 < interconnection;
+厜 < a\-mountain\-peak;
+天主教 < catholic\-church;
+匉 < noise\-of\-waters;
+匄 < to\-beg\-for\-alms;
+改變形像 < transfiguration;
+劘 < make\-into\-mince;
+悲鳴 < utter\-sad\-calls;
+滿意 < to\-be\-satisfied;
+海運 < shipping\-by\-sea;
+留學 < to\-study\-abroad;
+金裡奇 < \(newt\)\-gingrich;
+便條 < \(informal\)\-note;
+傽 < terror\-stricken;
+甚或 < so\-much\-so\-that;
+佔 < occupy\-by\-force;
+山峰 < \(mountain\)\-peak;
+溫柔 < gentle\-and\-soft;
+乸 < feminine\-suffix;
+高中 < high\-and\-middle;
+百兒八十 < about\-a\-hundred;
+帖撒羅尼迦前書 < 1\-thessalonians;
+䶡 < sound\-of\-biting;
+䶎 < sound\-of\-breath;
+胃病 < stomach\-trouble;
+䴾 < to\-grind\-barley;
+䴮 < cakes\-pf\-leaven;
+多模光纖 < multimode\-fiber;
+同齡 < of\-the\-same\-age;
+軟件市場 < software\-market;
+校園骨幹 < campus\-backbone;
+䯄 < a\-piebalk\-horse;
+䮽 < bit\-for\-a\-horse;
+䮵 < name\-of\-a\-horse;
+䮱 < a\-kind\-of\-beast;
+䮧 < long\-hair\-horse;
+䮢 < a\-walking\-horse;
+䮎 < a\-running\-horse;
+䭼 < dark\-blue\-horse;
+䬫 < clarfied\-butter;
+䬁 < a\-light\-cyclone;
+吸音 < sound\-absorbing;
+沒有聯繫 < to\-be\-unrelated;
+䪮 < beautiful\-sound;
+䪕 < to\-wrap\-or\-band;
+䩹 < to\-repair\-shoes;
+䩒 < dressed\-leather;
+麻醉 < to\-anaesthetize;
+䩄 < to\-face\-to\-face;
+䨢 < a\-passing\-cloud;
+䨖 < to\-stop\-raining;
+䨀 < to\-lay\-in\-grain;
+䧯 < name\-of\-a\-place;
+網絡規劃人員 < network\-planner;
+䦫 < inside\-the\-door;
+投奔 < to\-seek\-shelter;
+䥗 < a\-branding\-iron;
+䤱 < a\-solemn\-pledge;
+䣶 < unstrained\-wine;
+例會 < regular\-meeting;
+共產黨 < communist\-party;
+䢦 < to\-lead\-the\-way;
+䢖 < to\-be\-scattered;
+䢁 < tire\-of\-a\-wheel;
+䡻 < shake\-of\-a\-cart;
+䡨 < connected\-carts;
+餅肥 < cake\-fertilizer;
+䡐 < to\-move\-swiftly;
+世界最大 < world''s\-largest;
+䠵 < to\-wear\-clothes;
+䠨 < walking\-rapidly;
+尖銳批評 < sharp\-criticism;
+不見得 < not\-necessarily;
+䝯 < to\-change\-hands;
+䝐 < a\-castrated\-hog;
+䜄 < slow\-on\-talking;
+䛵 < to\-teach\-orally;
+䛟 < wild\-statements;
+䛔 < to\-hold\-in\-hand;
+暴雨 < torrential\-rain;
+䚦 < slanted\-corners;
+䚥 < to\-adjust\-a\-bow;
+䙻 < to\-steal\-a\-look;
+䙨 < to\-wrap\-or\-bind;
+䙝 < under\-garrments;
+䗾 < corbicula\-leana;
+䖼 < the\-dung\-beetle;
+䖙 < a\-resting\-tiger;
+䖉 < to\-roar\-or\-howl;
+䕙 < to\-set\-in\-order;
+䒌 < dark\-blue\-color;
+䏲 < protruded\-bones;
+便宴 < informal\-dinner;
+䎳 < lose\-of\-the\-ear;
+䎉 < to\-walk\-swiftly;
+上述 < above\-mentioned;
+䋷 < a\-kind\-of\-thick;
+䊵 < young\-and\-small;
+䊗 < a\-kind\-of\-grain;
+䊉 < preserved\-fruit;
+䉧 < sound\-of\-bamboo;
+賀年片 < new\-year''s\-card;
+䅷 < an\-ear\-of\-grain;
+䅰 < a\-kind\-of\-grass;
+標準化 < standardization;
+䄮 < dark\-rice\-plant;
+䄕 < god\-of\-the\-land;
+電腦系統 < computer\-system;
+䃷 < a\-kind\-of\-stone;
+䃒 < poor\-and\-barren;
+䁴 < keep\-on\-looking;
+䁳 < to\-lose\-one\-eye;
+實彈 < live\-ammunition;
+貨幣危機 < monetary\-crisis;
+䀉 < food\-containers;
+㿱 < dry\-and\-decayed;
+㾩 < malignant\-boils;
+共享以太網絡 < shared\-ethernet;
+產值 < value\-of\-output;
+暗送秋波 < make\-eyes\-at\-sb;
+使滿意 < to\-make\-content;
+祝賀 < to\-congratulate;
+㼕 < pulp\-of\-a\-melon;
+㼔 < a\-kind\-of\-melon;
+不鏽鋼 < stainless\-steel;
+㼂 < a\-crack\-in\-jade;
+㻍 < name\-of\-a\-sword;
+㺌 < endless\-barking;
+以為 < consider\-\(that\);
+㹧 < fox\-like\-animal;
+㸱 < hornless\-cattle;
+㸩 < to\-desist\-an\-ox;
+核彈 < nuclear\-warhead;
+㸑 < a\-cooking\-stove;
+印度人 < indian\-\(person\);
+上課 < to\-attend\-class;
+奧運村 < olympic\-village;
+㷍 < a\-chemical\-term;
+符合 < in\-keeping\-with;
+技倆 < tricky\-maneuver;
+暗適應 < dark\-adaptation;
+數位網路 < digital\-network;
+㳿 < rolling\-billows;
+㳗 < bank\-of\-a\-river;
+㲔 < woolen\-textiles;
+㱎 < cannot\-be\-known;
+㰬 < shortwindedness;
+㰗 < a\-kind\-of\-maple;
+㰈 < nice\-and\-pretty;
+㯱 < an\-enlarged\-bag;
+㯤 < the\-jujube\-tree;
+㯔 < to\-hull\-heavily;
+泰語 < thai\-\(language\);
+㮡 < to\-light\-a\-fire;
+寵壞 < spoil\-\(a\-child\);
+㭤 < the\-convolvulus;
+交界 < common\-boundary;
+虛擬網絡 < virtual\-network;
+光明日報 < guangming\-daily;
+㫠 < a\-kind\-of\-water;
+㪫 < wise\-and\-clever;
+歷史久遠 < ancient\-history;
+㧎 < forked\-branches;
+老百姓 < ordinary\-people;
+㥞 < to\-think\-deeply;
+㥛 < with\-expedition;
+㢞 < rooms\-connected;
+㢍 < a\-long\-verabdah;
+夫妻店 < family\-run\-shop;
+㡲 < tiles\-on\-a\-roof;
+㡀 < ragged\-clothing;
+㟔 < steep\-and\-lofty;
+㝥 < have\-a\-nighmare;
+三萬 < thirty\-thousand;
+㝅 < to\-give\-suck\-to;
+㜲 < to\-have\-surplus;
+貨源 < supply\-of\-goods;
+㛰 < to\-marry\-a\-wife;
+㚦 < a\-charming\-girl;
+㙼 < a\-military\-wall;
+窗帘 < window\-curtains;
+㙗 < a\-lump\-of\-earth;
+㘺 < cultivated\-land;
+期票 < promissory\-note;
+㗿 < to\-laugh\-loudly;
+㕲 < to\-gag\-or\-bribe;
+㕘 < to\-take\-part\-in;
+㒟 < with\-a\-charming;
+口語 < spoken\-language;
+斯拉夫語 < slavic\-language;
+私營 < privately\-owned;
+外國公司 < foreign\-company;
+寒假 < winter\-vacation;
+哀歌 < a\-mournful\-song;
+兒化韻 < retroflex\-final;
+牽連 < \(be\)\-implicated;
+性行 < sexual\-activity;
+學士 < bachelor\-degree;
+負擔 < \(bear\-a\)\-burden;
+商業中心 < business\-center;
+一秘 < first\-secretary;
+藥瓶 < medicine\-bottle;
+慚愧 < \(to\-be\)\-ashamed;
+人才 < talented\-person;
+不甘 < unreconciled\-to;
+不相上下 < equally\-matched;
+班子 < organized\-group;
+每隔 < at\-intervals\-of;
+愛戴 < love\-and\-esteem;
+愛戀 < be\-in\-love\-with;
+機密文件 < secret\-document;
+杭州 < hangzhou\-\(city\);
+問世 < to\-be\-published;
+悲泣 < weep\-with\-grief;
+法理 < legal\-principle;
+秩序 < order\-\(orderly\);
+網絡打印機 < network\-printer;
+名片 < \(business\)\-card;
+旅費 < travel\-expenses;
+財團 < financial\-group;
+沙石 < sand\-and\-stones;
+禁果 < forbidden\-fruit;
+郵遞 < to\-send\-by\-mail;
+板板六十四 < unaccommodating;
+析出 < to\-seperate\-out;
+第一個層次 < the\-first\-stage;
+具體計劃 < a\-concrete\-plan;
+奔襲 < long\-range\-raid;
+板刷 < scrubbing\-brush;
+服從 < obey\-\(an\-order\);
+施行 < to\-put\-in\-place;
+莫尼卡萊溫斯基 < monica\-lewinsky;
+文書處理 < word\-processing;
+罰款 < \(impose\-a\)\-fine;
+雌雄 < male\-and\-female;
+邊音 < lateral\-\(sound\);
+母親 < mother\-\(formal\);
+有聯繫 < to\-be\-connected;
+磁盤 < \(computer\)\-disk;
+預防措施 < protective\-step;
+礦業 < mining\-industry;
+公然表示 < to\-state\-openly;
+流失 < be\-drained\-away;
+引起 < to\-give\-rise\-to;
+𣎴 < stump\-of\-a\-tree;
+證物 < exhibit\-\(legal\);
+縫補 < darn\-\(clothing\);
+編選 < select\-and\-edit;
+負債纍纍 < heavily\-in\-debt;
+審判長 < presiding\-judge;
+上學 < to\-go\-to\-school;
+頻帶 < frequency\-range;
+政見 < political\-views;
+悲嘆 < sigh\-mournfully;
+半生 < half\-a\-lifetime;
+博物 < natural\-science;
+經濟體制 < economic\-system;
+不過爾爾 < merely\-mediocre;
+盜版者 < software\-pirate;
+大部份 < \(in\)\-large\-part;
+流感病毒 < influenza\-virus;
+郵票 < \(postage\)\-stamp;
+恰好 < as\-it\-turns\-out;
+氣溫 < air\-temperature;
+矮胖 < short\-and\-stout;
+語系 < language\-system;
+變形 < be\-out\-of\-shape;
+南海 < south\-china\-sea;
+冷氣機 < air\-conditioner;
+美元 < american\-dollar;
+世人 < \(common\)\-people;
+名單 < list\-\(of\-names\);
+電磁 < electromagnetic;
+民權 < civil\-liberties;
+據說 < it\-is\-said\-that;
+原性 < original\-nature;
+衛生官員 < health\-official;
+躅 < walk\-carefully;
+巴 < greatly\-desire;
+期 < period\-of\-time;
+司 < take\-charge\-of;
+甥 < sister''s\-child;
+屏 < folding\-screen;
+狐 < species\-of\-fox;
+汉 < chinese\-people;
+妹 < younger\-sister;
+企 < plan\-a\-project;
+襖 < outer\-garments;
+壁 < partition\-wall;
+韦 < tanned\-leather;
+潰 < flooding\-river;
+珠 < precious\-stone;
+锋 < point\-of\-spear;
+俗 < social\-customs;
+檐 < eaves\-of\-house;
+骑 < ride\-horseback;
+函 < correspondence;
+魏 < kingdom\-of\-wei;
+枚 < stalk\-of\-shrub;
+仲 < middle\-brother;
+琳 < beautiful\-jade;
+凑 < piece\-together;
+郁 < sweet\-smelling;
+芯 < pith\-from\-rush;
+縞 < white\-raw\-silk;
+旬 < ten\-day\-period;
+綺 < fine\-thin\-silk;
+妨 < interfere\-with;
+骄 < spirited\-horse;
+掴 < box\-one''s\-ears;
+嗯 < final\-particle;
+岭 < mountain\-ridge;
+湘 < hunan\-province;
+銃 < ancient\-weapon;
+铮 < clanging\-sound;
+莹 < luster\-of\-gems;
+僻 < out\-of\-the\-way;
+渺 < endlessly\-long;
+佣 < commission\-fee;
+呛 < choke\-by\-smoke;
+凰 < female\-phoenix;
+闺 < small\-entrance;
+缀 < patch\-together;
+璋 < jade\-plaything;
+拴 < bind\-with\-rope;
+秧 < rice\-seedlings;
+蕃 < foreign\-things;
+鄂 < hubei\-province;
+棱 < squared\-timber;
+梗 < stem\-of\-flower;
+菱 < water\-chestnut;
+镑 < pound\-sterling;
+栩 < species\-of\-oak;
+璞 < unpolished\-gem;
+雯 < cloud\-patterns;
+讷 < slow\-of\-speech;
+狰 < fierce\-looking;
+峦 < mountain\-range;
+湃 < sound\-of\-waves;
+蝗 < kind\-of\-locust;
+皖 < anhui\-province;
+酋 < chief\-of\-tribe;
+壑 < bed\-of\-torrent;
+糯 < glutinous\-rice;
+稷 < god\-of\-cereals;
+塾 < village\-school;
+狩 < winter\-hunting;
+戍 < defend\-borders;
+璀 < lustre\-of\-gems;
+牍 < writing\-tablet;
+镌 < engraving\-tool;
+饯 < farewell\-party;
+鹂 < chinese\-oriole;
+囡 < one''s\-daughter;
+溟 < drizzling\-rain;
+锏 < kind\-of\-rapier;
+屙 < to\-ease\-nature;
+玳 < tortoise\-shell;
+瑭 < a\-kind\-of\-jade;
+杈 < fork\-of\-a\-tree;
+匐 < fall\-prostrate;
+砣 < a\-stone\-roller;
+铢 < unit\-of\-weight;
+骈 < team\-of\-horses;
+噱 < laugh\-heartily;
+盱 < wide\-open\-eyes;
+耄 < elderly\-person;
+榔 < betel\-nut\-tree;
+诤 < to\-expostulate;
+蝮 < venomous\-snake;
+颍 < river\-in\-anhui;
+楝 < melia\-japonica;
+蝼 < a\-mole\-cricket;
+荪 < aromatic\-grass;
+娌 < brother''s\-wife;
+晷 < shadows\-of\-sun;
+嗵 < used\-for\-sound;
+踅 < to\-walk\-around;
+揆 < prime\-minister;
+猕 < macacus\-monkey;
+厝 < cut\-or\-engrave;
+葚 < mulberry\-fruit;
+耒 < handle\-of\-plow;
+俅 < ornamental\-cap;
+菽 < beans\-and\-peas;
+鞯 < saddle\-blanket;
+鼐 < incense\-tripod;
+谰 < accuse\-falsely;
+骱 < joint\-of\-bones;
+謦 < t\-speak\-softly;
+磴 < steps\-on\-ledge;
+婺 < name\-of\-a\-star;
+堍 < side\-of\-bridge;
+桫 < horse\-chestnut;
+漶 < indecipherable;
+孥 < one''s\-children;
+溱 < river\-in\-henan;
+黥 < tattooing\-face;
+躐 < to\-stride\-over;
+蹯 < paws\-of\-animal;
+盍 < what\?\-why\-not\?;
+溆 < river\-in\-hunan;
+磲 < tridacna\-gigas;
+昝 < a\-dual\-pronoun;
+柽 < type\-of\-willow;
+缬 < patterned\-silk;
+驺 < mounted\-escort;
+阊 < gate\-of\-heaven;
+荩 < a\-kind\-of\-weed;
+芎 < a\-kind\-of\-herb;
+鋈 < silver\-plating;
+龅 < teeth\-protrude;
+晡 < late\-afternoon;
+檠 < stand\-for\-lamp;
+逭 < to\-escape\-from;
+操課 < military\-drill;
+伊甸園 < garden\-of\-eden;
+成員國 < member\-country;
+具體問題 < concrete\-issue;
+協會 < an\-association;
+文物 < cultural\-relic;
+通訊 < communications;
+危房 < decrepit\-house;
+特工 < secret\-service;
+電燈 < electric\-light;
+釣魚臺 < diaoyu\-islands;
+北極 < the\-north\-pole;
+複韻母 < compound\-final;
+預付 < pay\-in\-advance;
+國防預算 < defence\-budget;
+殺氣 < murderous\-look;
+磁場 < magnetic\-field;
+裁減軍備 < arms\-reduction;
+牙床 < alveolar\-ridge;
+參加 < to\-participate;
+民意 < public\-opinion;
+出口商品 < export\-product;
+往日 < in\-former\-days;
+勘測 < to\-investigate;
+冰釋 < \(of\-misgivings;
+大樓 < large\-building;
+改革進程 < reform\-process;
+全球資訊網 < world\-wide\-web;
+薄胎瓷器 < eggshell\-china;
+怪人 < strange\-person;
+營業 < to\-do\-business;
+塑膠 < plastic\-cement;
+晚上 < in\-the\-evening;
+散步 < to\-take\-a\-walk;
+識別 < to\-distinguish;
+幀太長 < oversize\-frame;
+擺蕩吊環 < swinging\-rings;
+全球氣候 < global\-climate;
+失控 < out\-of\-control;
+數月 < several\-months;
+往復 < to\-reciprocate;
+對外政策 < foreign\-policy;
+靶場 < shooting\-range;
+糖醋 < sweet\-and\-sour;
+伴生氣 < associated\-gas;
+帳號 < account\-number;
+爪子 < \(animal''s\)\-paw;
+別管 < no\-matter\-\(who;
+進行通信 < to\-communicate;
+刨程 < planing\-length;
+素菜 < vegetable\-dish;
+不咎既往 < not\-censure\-sb;
+開車 < to\-drive\-a\-car;
+煙火 < smoke\-and\-fire;
+轉運 < transportation;
+巡警 < police\-officer;
+校園網絡 < campus\-network;
+數位信號 < digital\-signal;
+放映 < show\-\(a\-movie\);
+物理層 < physical\-layer;
+聯合國 < united\-nations;
+製造 < to\-manufacture;
+利率 < interest\-rates;
+英國人 < british\-person;
+生長激素 < growth\-hormone;
+白熱化 < turn\-white\-hot;
+弱小 < small\-and\-weak;
+敝屣 < worn\-out\-shoes;
+十一月 < eleventh\-month;
+指揮中心 < command\-center;
+矮子 < a\-short\-person;
+原子核 < atomic\-nucleus;
+把兄弟 < sworn\-brothers;
+速決 < quick\-decision;
+關稅 < \(customs\)\-duty;
+白蘇 < common\-perilla;
+比值 < specific\-value;
+電話線路 < telephone\-line;
+基督 < jesus\-\(christ\);
+探路 < to\-find\-a\-path;
+遙控 < remote\-control;
+北斗星 < the\-big\-dipper;
+開玩笑 < to\-play\-a\-joke;
+鸎 < the\-mango\-bird;
+鶗 < a\-kind\-of\-hawk;
+以太網絡幀 < ethernet\-frame;
+遙感 < remote\-sensing;
+白色 < white\-\(colour\);
+鮧 < the\-sheat\-fish;
+撥款 < allocate\-funds;
+鬘 < beautiful\-hair;
+鬗 < head\-ornaments;
+廠工 < factory\-worker;
+語氣助詞 < modal\-particle;
+髆 < shoulder\-blade;
+正好 < just\-\(in\-time\);
+約書亞記 < book\-of\-joshua;
+探視 < pay\-a\-visit\-to;
+騌 < a\-horse''s\-mane;
+餡 < pastry\-filling;
+餗 < food\-in\-tripod;
+引咎 < take\-the\-blame;
+審判席 < judgement\-seat;
+白粉病 < powdery\-mildew;
+壁報 < wall\-newspaper;
+改善 < to\-make\-better;
+經濟有效 < cost\-effective;
+堅決否認 < to\-firmly\-deny;
+造成 < to\-bring\-about;
+幫會 < secret\-society;
+锪 < a\-kind\-of\-tool;
+操心 < to\-worry\-about;
+鏴 < to\-plug\-a\-hole;
+鎩 < moult\-samarium;
+書寫符號 < writing\-symbol;
+白種 < the\-white\-race;
+鍆 < md\-mendelevium;
+鋩 < point\-of\-sword;
+鋃 < lock\-lanthanum;
+補缺 < fill\-a\-vacancy;
+古希臘 < ancient\-greece;
+西歐 < western\-europe;
+中國人 < chinese\-person;
+逕庭 < very\-different;
+卡納維拉爾角 < cape\-canaveral;
+補綴 < mend\-\(clothes\);
+不知死活 < act\-recklessly;
+監督人 < superintendent;
+集中 < to\-concentrate;
+逩 < to\-run\-quickly;
+遲到 < to\-arrive\-late;
+輶 < light\-carriage;
+波羅的海 < the\-baltic\-sea;
+趹 < kick\-with\-hoof;
+報復 < make\-reprisals;
+真情 < real\-situation;
+桌面系統 < desktop\-system;
+東南亞國 < southeast\-asia;
+巨流 < strong\-current;
+豣 < pig\-of\-3\-years;
+豖 < a\-shackled\-pig;
+退學 < to\-quit\-school;
+讅 < know\-in\-detail;
+廉價 < cheaply\-priced;
+小型企業 < small\-business;
+詨 < kind\-of\-cicada;
+順序數 < ordinal\-number;
+病號 < sick\-personnel;
+團結 < \(hold\-a\)\-rally;
+褉 < short\-garments;
+圍繞 < revolve\-around;
+近年 < recent\-year\(s\);
+衂 < to\-be\-defeated;
+蠂 < podisma\-mikado;
+蟳 < a\-kind\-of\-crab;
+蟭 < very\-small\-bug;
+倒閉 < to\-go\-bankrupt;
+螬 < grubs\-in\-fruit;
+冷戰 < \(the\)\-cold\-war;
+蜎 < mosquito\-larva;
+資料介面 < data\-interface;
+虀 < minced\-pickles;
+薳 < name\-of\-a\-herb;
+薘 < plantago\-major;
+價目 < \(marked\)\-price;
+蓯 < medicinal\-herb;
+蓏 < fruit\-of\-plant;
+葥 < rubus\-palmatus;
+病脈 < abnormal\-pulse;
+不怎麼樣 < not\-up\-to\-much;
+漸變 < gradual\-change;
+茞 < fragrant\-plant;
+非常重要 < very\-important;
+紀念 < to\-commemorate;
+開會 < have\-a\-meeting;
+醫學專家 < medical\-expert;
+芈 < bleat\-of\-sheep;
+先進水平 < advanced\-level;
+區域網路技術 < lan\-technology;
+全景 < panoramic\-view;
+刀叉 < knife\-and\-fork;
+脦 < used\-in\-''lede'';
+連鎖反應 < chain\-reaction;
+特別感謝 < special\-thanks;
+人壽保險 < life\-insurance;
+布帛 < cloth\-and\-silk;
+找錢 < to\-give\-change;
+補液 < fluid\-infusion;
+起點 < starting\-point;
+就是說 < in\-other\-words;
+報分 < call\-the\-score;
+教育界 < academic\-world;
+挺立 < to\-stand\-erect;
+不平等條約 < unequal\-treaty;
+八成 < eighty\-percent;
+兩手 < double\-tactics;
+絜 < a\-marking\-line;
+採油 < oil\-extraction;
+紾 < turns\-or\-twist;
+糺 < to\-collaborate;
+跨越 < to\-step\-across;
+跑道 < athletic\-track;
+不敢當 < you\-flatter\-me;
+籫 < bamboo\-utensil;
+筬 < reed\-of\-a\-loom;
+喘不過氣來 < cannot\-breathe;
+握拳 < to\-make\-a\-fist;
+副總統 < vice\-president;
+甚至於 < so\-much\-\(that\);
+握手 < to\-shake\-hands;
+稭 < stalk\-of\-grain;
+精干 < crack\-\(troops\);
+長征 < the\-long\-march;
+病痛 < slight\-illness;
+不平衡 < disequilibrium;
+砢 < pile\-of\-stones;
+矉 < an\-angry\-glare;
+睱 < to\-gaze\-slowly;
+睯 < to\-be\-agonized;
+英寸 < \(english\)\-inch;
+眣 < prominent\-eyes;
+採收率 < recovery\-ratio;
+自由化 < liberalization;
+標尺 < surveyor''s\-rod;
+薩達姆侯賽因 < saddam\-hussein;
+璸 < jade''s\-streaks;
+璘 < luster\-of\-jade;
+將軍 < \(army\)\-general;
+玥 < mysterious\-gem;
+狨 < hapale\-jacchus;
+兩國 < both\-countries;
+全國 < entire\-country;
+犨 < panting\-of\-cow;
+不適用 < not\-applicable;
+但以理書 < book\-of\-daniel;
+燉 < heat\-with\-fire;
+燀 < to\-make\-a\-fire;
+熉 < \(yellow\-color\);
+輩子 < all\-one''s\-life;
+長城 < the\-great\-wall;
+表決 < decide\-by\-vote;
+成都 < chengdu\-\(city\);
+鬥智 < battle\-of\-wits;
+八千 < eight\-thousand;
+溛 < to\-form\-hollow;
+湱 < sound\-of\-water;
+捷克共和國 < czech\-republic;
+病歷 < medical\-record;
+渢 < pleasant\-sound;
+涬 < watery\-expanse;
+簡單化 < simplification;
+伸開 < to\-stretch\-out;
+洿 < stagnant\-water;
+迫不得已 < have\-no\-choice;
+評價分類 < rank\,\-classify;
+泂 < clear\-and\-deep;
+演示 < to\-demonstrate;
+沷 < to\-remove\-evil;
+從事研究 < to\-do\-research;
+殭 < a\-stiff\-corpse;
+以賽亞書 < book\-of\-isaiah;
+鹽湖城 < salt\-lake\-city;
+檖 < wild\-pear\-tree;
+橿 < quercus\-glauca;
+傳播 < to\-disseminate;
+入伍 < enter\-the\-army;
+首都 < capital\-\(city\);
+榾 < pieces\-of\-wood;
+榠 < chinese\-quince;
+榖 < paper\-mulberry;
+椪 < machilus\-nanmu;
+潔淨 < cleanse\-\(sins\);
+棐 < species\-of\-yew;
+梊 < squeeze\-out\-of;
+半數以上 < more\-than\-half;
+柾 < straight\-grain;
+柃 < eurya\-japonica;
+舌根 < back\-of\-tongue;
+檔案屬性 < file\-attribute;
+曏 < once\-upon\-time;
+行政 < administration;
+血製品 < blood\-products;
+晢 < light\-of\-stars;
+小聲 < in\-a\-low\-voice;
+昰 < var\-of\-''to\-be'';
+篡改 < to\-tamper\-with;
+截至 < up\-to\-\(a\-time\);
+攂 < to\-beat\-a\-drum;
+起草 < draft\-\(a\-bill\);
+挨打 < take\-a\-beating;
+層理 < stratification;
+球鞋 < athletic\-shoes;
+鍋貼 < fried\-dumpling;
+凹面鏡 < concave\-mirror;
+授命 < to\-give\-orders;
+開心果 < pistachio\-nuts;
+從來沒有 < have\|has\-never;
+以斯帖記 < book\-of\-esther;
+最佳利益 < best\-interests;
+世界語 < world\-language;
+惡性循環 < vicious\-circle;
+核能 < nuclear\-energy;
+浮點 < floating\-point;
+幱 < official\-dress;
+不省人事 < be\-unconscious;
+巟 < a\-watery\-waste;
+百無聊賴 < bored\-to\-death;
+行星際 < interplanetary;
+中心語 < qualified\-word;
+參謀長 < chief\-of\-staff;
+自從 < since\-\(a\-time\);
+棄櫻 < abandoned\-baby;
+產權 < property\-right;
+齒輪 < \(machine\)\-gear;
+侵犯 < to\-infringe\-on;
+醫學中心 < medical\-center;
+血壓 < blood\-pressure;
+錄像機 < video\-recorder;
+塕 < a\-gust\-of\-wind;
+埇 < name\-of\-bridge;
+光信號 < optical\-signal;
+綜合報導 < summary\-report;
+噹 < sound\-of\-bells;
+嘓 < gurgling\-sound;
+減肥 < to\-lose\-weight;
+代表 < representative;
+大同小異 < almost\-similar;
+啌 < animal\-disease;
+畫展 < art\-exhibition;
+生效 < to\-take\-effect;
+核武器 < nuclear\-weapon;
+達不到 < cannot\-achieve;
+才氣 < liteary\-talent;
+厃 < to\-look\-upward;
+卭 < high\.\-to\-raise;
+卂 < to\-fly\-rapidly;
+卑躬屈節 < bow\-and\-scrape;
+恭賀新禧 < happy\-new\-year;
+專欄 < special\-column;
+學籍 < school\-roll\(s\);
+禁食 < fast\-\(not\-eat\);
+克林頓 < \(bill\)\-clinton;
+伕 < common\-laborer;
+亇 < kwukyel\-hammer;
+䶔 < prominent\-gums;
+䶐 < to\-take\-breath;
+䶀 < sound\-of\-drums;
+䵶 < a\-kind\-of\-frog;
+䵌 < reddish\-yellow;
+䴴 < a\-kind\-of\-cake;
+䴩 < a\-kind\-of\-deer;
+䴘 < a\-kind\-of\-bird;
+䳸 < the\-wild\-goose;
+䳫 < a\-small\-pigeon;
+䲢 < a\-kind\-of\-fish;
+某種 < some\-kind\-\(of\);
+䰹 < the\-cuttlefish;
+䰴 < a\-wafting\-fish;
+䰡 < a\-fierce\-ghost;
+將會 < will\,\-going\-to;
+䯛 < the\-knee\-bones;
+䮹 < an\-angry\-horse;
+䮮 < a\-kind\-of\-mule;
+䭻 < a\-swifty\-horse;
+䭭 < the\-eldest\-son;
+䭩 < to\-feed\-a\-baby;
+前生召喚 < foreordination;
+䭁 < stinking\-smell;
+䬺 < same\-as\-u\+4b50;
+䬘 < the\-wind\-blows;
+䬒 < to\-blow\-chilly;
+豎起 < hold\-up\-\(high\);
+網際電話 < internet\-phone;
+䫫 < human\-skeleton;
+䪼 < the\-cheek\-bone;
+䪈 < a\-leather\-belt;
+䩐 < tie\-it\-tightly;
+䨥 < a\-pouring\-rain;
+䧧 < high\-mountains;
+寶書 < treasured\-book;
+䦺 < name\-of\-a\-hill;
+䦤 < seed\-of\-grains;
+䦑 < without\-a\-door;
+䦏 < wing\-of\-a\-door;
+聖誕節 < christmas\-time;
+䤖 < a\-kind\-of\-wine;
+䣎 < name\-of\-county;
+白令海 < the\-bering\-sea;
+䢨 < to\-walk\-slowly;
+䡾 < high\-cartloads;
+䡲 < rim\-of\-a\-wheel;
+摩門經 < book\-of\-mormon;
+䡉 < a\-kind\-of\-cart;
+蘋果電腦 < apple\-computer;
+䜽 < a\-kind\-of\-bean;
+䜜 < words\-of\-anger;
+䛠 < unable\-to\-talk;
+吃驚 < to\-be\-startled;
+䚖 < mountain\-deity;
+䚄 < to\-make\-fun\-of;
+䙳 < spiting\-flames;
+䙦 < upper\-garments;
+䘢 < old\-and\-shabby;
+䗷 < a\-kind\-of\-wasp;
+䗪 < a\-kind\-of\-worm;
+䗚 < eggs\-of\-mantis;
+䗒 < a\-kind\-of\-clam;
+䖰 < a\-kind\-of\-gnat;
+撞擊式印表機 < impact\-printer;
+䕚 < a\-straw\-basket;
+䔕 < chicken\-breast;
+䔋 < a\-kind\-of\-tree;
+導彈 < guided\-missile;
+䔂 < vegetable\-soup;
+清爽 < fresh\-and\-cool;
+䓡 < a\-medical\-herb;
+䒓 < to\-do\-violence;
+䒇 < name\-of\-a\-ship;
+䒅 < beautiful\-eyes;
+䑶 < sprightly\-boat;
+䑫 < tools\-for\-boat;
+䑣 < a\-sailing\-boat;
+䑜 < to\-eat\-heavily;
+互聯 < interconnected;
+䐕 < oil\-and\-grease;
+䐍 < excellent\-food;
+䍡 < small\-fish\-net;
+䍑 < a\-net\-or\-snare;
+䍍 < unburnt\-bricks;
+唱片 < \(vinyl\)\-record;
+䌵 < lapel\-and\-belt;
+䌰 < connected\-silk;
+䌥 < to\-sew\-clothes;
+䌡 < to\-wind\-around;
+二者 < both\-\[of\-them\];
+䋽 < hempen\-sandals;
+䋯 < crucial\-points;
+䋢 < to\-twist\-ropes;
+䊼 < measuring\-unit;
+才子 < gifted\-scholar;
+侵害 < to\-encroach\-on;
+䊨 < storing\-grains;
+䈷 < a\-bamboo\-fence;
+䈚 < a\-bamboo\-shoot;
+不脛而走 < get\-round\-fast;
+䇫 < bamboo\-splints;
+䇅 < to\-stand\-still;
+三輪車伕 < pedicab\-driver;
+寶庫 < treasure\-house;
+保單 < guarantee\-slip;
+飽經風霜 < weather\-beaten;
+䅥 < ripening\-crops;
+小學 < primary\-school;
+仔畜 < newborn\-animal;
+䃹 < jade\-and\-stone;
+䃡 < a\-small\-pebble;
+本色 < natural\-colour;
+䃏 < a\-kind\-of\-rock;
+䃌 < rocky\-mountain;
+來往 < to\-come\-and\-go;
+䂌 < a\-short\-weapon;
+全心全意 < heart\-and\-soul;
+䁤 < moistened\-eyes;
+䁏 < farsightedness;
+䀺 < squinting\-eyes;
+工業的巨頭 < industry\-mogol;
+㽦 < reclaimed\-land;
+㽥 < fertile\-fields;
+㽋 < a\-kind\-of\-tile;
+㽄 < an\-earthen\-jar;
+題跋 < short\-comments;
+㸫 < castrated\-bull;
+㸤 < broken\-leather;
+㸊 < fierce\-of\-fire;
+㶠 < water\-currents;
+不解 < not\-understand;
+泰米爾語 < tamil\-language;
+㵘 < great\-currents;
+懮慮 < \(feel\)\-anxiety;
+㴸 < swift\-currents;
+犯不著 < not\-worthwhile;
+㴙 < water\-dripping;
+㳃 < to\-temper\-iron;
+㲏 < flying\-feather;
+余悸 < lingering\-fear;
+㱏 < the\-right\-side;
+成就 < accomplishment;
+㭻 < the\-crab\-apple;
+不用謝 < you''re\-welcome;
+㭏 < a\-kind\-of\-wood;
+㭄 < a\-king\-of\-tree;
+容忍 < to\-put\-up\-with;
+㫏 < a\-kind\-of\-flag;
+㫂 < to\-chop\-or\-cut;
+罷論 < abandoned\-idea;
+患處 < afflicted\-part;
+㨇 < to\-sweep\-clean;
+㥺 < to\-blow\-a\-fire;
+不期而遇 < meet\-by\-chance;
+㥉 < a\-little\-angry;
+㥇 < to\-be\-perverse;
+㤾 < not\-doing\-well;
+㤖 < to\-have\-wisdom;
+㣦 < a\-winding\-path;
+架構 < infrastructure;
+穴播 < bunch\-planting;
+半自動 < semi\-automatic;
+㡜 < ragged\-clothes;
+懷孕 < to\-be\-pregnant;
+㠨 < misty\-mountain;
+㠡 < high\-and\-lofty;
+㟿 < high\-and\-steep;
+職業 < job\-occupation;
+內蒙古 < inner\-mongolia;
+退休金 < retirement\-pay;
+留言簿 < visitor''s\-book;
+㞩 < mountain\-vapor;
+㞗 < the\-male\-organ;
+任期 < term\-of\-office;
+㞊 < unable\-to\-walk;
+㝰 < unable\-to\-meet;
+㝛 < ahalting\-place;
+㜤 < fooling\-around;
+㜑 < an\-older\-woman;
+近乎同步 < plesiochronous;
+㛩 < sisters\-in\-law;
+㛂 < weak\-and\-small;
+㚃 < to\-take\-a\-hint;
+㙷 < low\-lying\-area;
+不興 < out\-of\-fashion;
+㖢 < to\-reject\-food;
+㕤 < a\-proud\-temper;
+球棒 < \(baseball\)\-bat;
+㔙 < great\-strength;
+㒛 < to\-stand\-alone;
+㒀 < do\-not\-fear\-to;
+資格 < qualifications;
+東海 < east\-china\-sea;
+死亡率 < mortality\-rate;
+哥本哈根 < copenhagen\-\?\?\?;
+東歐 < eastern\-europe;
+任憑 < no\-matter\-what;
+今朝 < at\-the\-present;
+作品 < works\-\(of\-art\);
+憋悶 < feel\-oppressed;
+飼槽 < feeding\-trough;
+警車 < police\-vehicle;
+寒冷 < cold\-\(climate\);
+哈該書 < book\-of\-haggai;
+安好 < safe\-and\-sound;
+液晶 < liquid\-crystal;
+參觀 < to\-look\-around;
+阿伏伽德羅定律 < avogadro''s\-law;
+擺攤子 < set\-up\-a\-stall;
+可能 < might\-\(happen\);
+首先 < first\-\(of\-all\);
+瑞士人 < swiss\-\(person\);
+每端口價格 < price\-per\-port;
+液態 < liquid\-\(state\);
+孕婦 < pregnant\-woman;
+乘法 < multiplication;
+差不多 < almost\,\-nearly;
+定價 < to\-set\-a\-price;
+括弧裡 < in\-parentheses;
+暗箱 < camera\-bellows;
+減刑 < reduce\-penalty;
+百米賽跑 < 100\-metre\-dash;
+信號臺 < signal\-station;
+世界上 < \(of\-the\)\-world;
+調查報告 < memoir\,\-report;
+圓珠筆 < ball\-point\-pen;
+中歐 < central\-europe;
+全球氣候升溫 < global\-warming;
+犯罪 < \(commit\)\-crime;
+份兒 < degree\,\-extent;
+跑腿兒 < to\-run\-errands;
+不正常狀況 < abnormal\-state;
+特色 < characteristic;
+中斷 < to\-discontinue;
+秕子 < blighted\-grain;
+世界經濟 < global\-economy;
+有待 < not\-yet\-\(done\);
+題材 < subject\-matter;
+礦泉 < mineral\-spring;
+通用汽車 < general\-motors;
+毛衣 < \(wool\)\-sweater;
+責任 < responsibility;
+北京週報 < beijing\-review;
+半職 < part\-time\-work;
+波狀熱 < undulant\-fever;
+顯得 < appear\-\(to\-be\);
+不忍 < cannot\-bear\-to;
+知識庫 < knowledge\-base;
+源點地址 < source\-address;
+這次危機 < present\-crisis;
+多工運作 < multithreading;
+媽咪 < mummy\-\(mother\);
+波恩 < bonn\-\(germany\);
+敗訴 < lose\-a\-lawsuit;
+電信局 < central\-office;
+壽衣 < burial\-clothes;
+西南亞 < southwest\-asia;
+二氧化碳 < carbon\-dioxide;
+擺鐘 < pendulum\-clock;
+撥號盤 < telephone\-dial;
+北緯 < north\-latitude;
+及格 < to\-pass\-a\-test;
+法庭 < court\-\(of\-law\);
+這類 < this\-kind\-\(of\);
+網絡設計 < network\-design;
+後兩者 < the\-latter\-two;
+主修 < \(school\)\-major;
+變成 < to\-change\-into;
+廠禮拜 < day\-off\-\(work\);
+不合 < not\-conform\-to;
+開放式系統 < open\-system\(s\);
+斑竹 < mottled\-bamboo;
+不及 < not\-as\-good\-as;
+分類 < classification;
+兩百億 < twenty\-billion;
+無連接 < connectionless;
+重建 < reconstruction;
+猜謎兒 < guess\-a\-riddle;
+請看 < please\-see\-\.\.\.;
+五年計劃 < five\-year\-plan;
+氫氣 < hydrogen\-\(gas\);
+市場經濟 < market\-economy;
+檔案執行 < file\-execution;
+互動電視 < interactive\-tv;
+美差事 < a\-terrific\-job;
+數種 < numerous\-types;
+冰點 < freezing\-point;
+歐洲聯盟 < european\-union;
+華裔 < ethnic\-chinese;
+不仁 < not\-benevolent;
+收聽 < to\-listen\-\(to\);
+经 < classic\-works;
+弟 < young\-brother;
+廻 < circle\-around;
+关 < frontier\-pass;
+帝 < supreme\-ruler;
+番 < to\-take\-turns;
+略 < approximately;
+共 < together\-with;
+义 < right\-conduct;
+嫂 < sister\-in\-law;
+哥 < elder\-brother;
+婦 < married\-women;
+訣 < take\-leave\-of;
+族 < a\-family\-clan;
+奪 < take\-by\-force;
+笔 < writing\-brush;
+袷 < lined\-garment;
+瀬 < swift\-current;
+伯 < older\-brother;
+漲 < rise\-in\-price;
+礼 < social\-custom;
+嘩 < rushing\-sound;
+啣 < hold\-in\-mouth;
+泊 < anchor\-vessel;
+沿 < follow\-course;
+咄 < noise\-of\-rage;
+菊 < chrysanthemum;
+岳 < mountain\-peak;
+匹 < bolt\-of\-cloth;
+颇 < lean\-one\-side;
+晨 < early\-morning;
+撞 < knock\-against;
+愈 < more\-and\-more;
+槇 < tip\-of\-a\-tree;
+駅 < relay\-station;
+饅 < steamed\-bread;
+炸 < to\-fry\-in\-oil;
+脈 < blood\-vessels;
+绪 < end\-of\-thread;
+飼 < raise\-animals;
+梓 < catalpa\-ovata;
+肌 < muscle\-tissue;
+佩 < belt\-ornament;
+署 < public\-office;
+搭 < join\-together;
+栗 < chestnut\-tree;
+桑 < mulberry\-tree;
+鞄 < to\-work\-hides;
+杓 < handle\-of\-cup;
+佃 < tenant\-farmer;
+贡 < offer\-tribute;
+曇 < become\-cloudy;
+亙 < extend\-across;
+诞 < bear\-children;
+晴 < clear\-weather;
+塑 < model\-in\-clay;
+浦 < bank\-of\-river;
+籔 < bamboo\-basket;
+慎 < act\-with\-care;
+莉 < white\-jasmine;
+捗 < make\-progress;
+塌 < fall\-in\-ruins;
+竖 < perpendicular;
+陕 < mountain\-pass;
+惚 < absent\-minded;
+淀 < shallow\-water;
+淘 < wash\-in\-sieve;
+瑰 < extraordinary;
+垫 < advance\-money;
+灶 < kitchen\-range;
+毓 < give\-birth\-to;
+咧 < stretch\-mouth;
+奎 < stride\-of\-man;
+洽 < to\-blend\-with;
+瑶 < precious\-jade;
+钰 < rare\-treasure;
+瑛 < luster\-of\-gem;
+殉 < die\-for\-cause;
+唬 < to\-intimidate;
+瘪 < shrivelled\-up;
+唆 < make\-mischief;
+岚 < mountain\-mist;
+桦 < type\-of\-birch;
+涟 < flowing\-water;
+飕 < sound\-of\-wind;
+坷 < clod\-of\-earth;
+鑫 < used\-in\-names;
+笋 < bamboo\-shoots;
+荃 < aromatic\-herb;
+馄 < dumpling\-soup;
+穹 < high\-and\-vast;
+弈 < chinese\-chess;
+驮 < carry\-on\-back;
+芥 < mustard\-plant;
+炜 < brilliant\-red;
+岜 < rock\-mountain;
+纫 < thread\-needle;
+桀 < chicken\-roost;
+拮 < laboring\-hard;
+纥 < inferior\-silk;
+忤 < insubordinate;
+鸾 < fabulous\-bird;
+嘁 < to\-be\-grieved;
+辎 < a\-supply\-cart;
+芫 < daphne\-genkwa;
+伧 < vulgar\-person;
+泠 < nice\-and\-cool;
+縻 < halter\-for\-ox;
+踽 < to\-walk\-alone;
+赭 < reddish\-brown;
+颀 < tall\-and\-slim;
+柘 < a\-thorny\-tree;
+谔 < honest\-speech;
+骓 < piebald\-horse;
+崧 < high\-mountain;
+酚 < carbolic\-acid;
+夤 < distant\-place;
+暌 < in\-opposition;
+怍 < to\-be\-ashamed;
+贽 < gift\-superior;
+毖 < guard\-against;
+迓 < to\-go\-to\-meet;
+毵 < long\-feathers;
+睚 < corner\-of\-eye;
+毽 < a\-shuttlecock;
+僳 < minority\-name;
+辏 < hubs\-of\-wheel;
+旆 < flag\-ornament;
+荇 < a\-water\-plant;
+卮 < measuring\-cup;
+髡 < to\-shear\-tree;
+鳜 < mandarin\-fish;
+鼍 < large\-reptile;
+笫 < planks\-of\-bed;
+缡 < a\-bridal\-veil;
+绨 < coarse\-pongee;
+芰 < water\-caltrop;
+魃 < drought\-demon;
+舳 < stern\-of\-ship;
+屦 < straw\-sandals;
+蓐 < straw\-bed\-mat;
+銎 < eye\-of\-an\-axe;
+醣 < carbohydrates;
+蛑 < a\-marine\-crab;
+椠 < wooden\-tablet;
+媸 < an\-ugly\-woman;
+馇 < stir\-and\-cook;
+甙 < sugar\-product;
+薤 < allium\-bakeri;
+塥 < dry\-clay\-lump;
+檔案轉送 < file\-transfer;
+諾貝爾 < nobel\-\(prize\);
+菲菲 < very\-fragrant;
+昂揚 < high\-spirited;
+保證金 < earnest\-money;
+磁帶 < magnetic\-tape;
+解調 < to\-demodulate;
+北海 < the\-north\-sea;
+薄利 < small\-profits;
+排山倒海 < earth\-shaking;
+晚報 < evening\-paper;
+星座 < constellation;
+激光打引機 < laser\-printer;
+冰鞋 < skating\-boots;
+掛號證 < register\-card;
+廠絲 < filature\-silk;
+矛盾 < contradictory;
+出賣 < to\-sell\-\(off\);
+到處 < in\-all\-places;
+經營費用 < business\-cost;
+原子能 < atomic\-energy;
+古代 < ancient\-times;
+新月 < crescent\-moon;
+紀念館 < memorial\-hall;
+單韻母 < simple\-finals;
+即將 < on\-the\-eve\-of;
+卑微 < petty\-and\-low;
+危害 < to\-jeopardize;
+直截了當 < plain\-talking;
+冷戰以後 < post\-cold\-war;
+有可能 < it''s\-possible;
+刨花 < wood\-shavings;
+莨菪 < black\-henbane;
+調查 < investigation;
+綁腿 < leg\-wrappings;
+列舉 < \(make\-a\)\-list;
+適用 < be\-applicable;
+摘記 < to\-take\-notes;
+元首 < head\-of\-state;
+未提及 < not\-mentioned;
+方式 < way\-\(of\-life\);
+日夜 < day\-and\-night;
+芝麻 < sesame\-\(seed\);
+本生燈 < bunsen\-burner;
+牌坊 < memorial\-arch;
+心臟病 < heart\-disease;
+前生 < pre\-existence;
+勢在必行 < be\-imperative;
+昇值 < rise\-in\-value;
+十五年 < fifteen\-years;
+米飯 < \(cooked\)\-rice;
+鄧小平 < deng\-xiaoping;
+轉道 < make\-a\-detour;
+舊約全書 < old\-testament;
+長途 < long\-distance;
+日前 < the\-other\-day;
+幾個小時 < several\-hours;
+那鴻書 < book\-of\-nahum;
+網絡層 < network\-layer;
+墜毀 < \(plane\)\-crash;
+雙手 < pair\-of\-hands;
+哥林多後書 < 2\-corinthians;
+南亞 < southern\-asia;
+刊登 < carry\-a\-story;
+誇張 < to\-exaggerate;
+難忘 < unforgettable;
+太太 < married\-woman;
+撥用 < appropriation;
+審判欄 < judgement\-bar;
+境況 < circumstances;
+民事 < civil\-matters;
+女佣 < \(female\)\-maid;
+不可缺少 < indispensable;
+勘察 < reconnaisance;
+籌集 < collect\-money;
+操演 < demonstration;
+白花花 < shining\-white;
+建築學 < architectural;
+視窗基準 < windows\-based;
+電郵位置 < email\-address;
+幻燈 < latern\-slides;
+研究領域 < research\-area;
+中國式 < chinese\-style;
+加快 < to\-accelerate;
+冰糖 < crystal\-sugar;
+國際 < international;
+半失業 < semi\-employed;
+鬥雞 < cock\-fighting;
+過時 < old\-fashioned;
+進接服務 < access\-server;
+隨意 < as\-one\-wishes;
+失利 < suffer\-defeat;
+表決權 < right\-to\-vote;
+空間站 < space\-station;
+損耗 < wear\-and\-tear;
+相當 < equivalent\-to;
+逐步 < progressively;
+鵩 < owl\-like\-bird;
+大公司 < large\-company;
+不記名投票 < secret\-ballot;
+二次大戰 < world\-war\-two;
+幾次 < several\-times;
+巨細 < big\-and\-small;
+幾樣 < several\-kinds;
+大使 < an\-ambassador;
+編審 < read\-and\-edit;
+強化 < to\-strengthen;
+避孕 < contraception;
+髃 < shoulder\-bone;
+不列顛諸島 < british\-isles;
+骪 < crooked\-bones;
+大容量 < high\-capacity;
+大事 < a\-major\-event;
+楊百翰 < brigham\-young;
+大問題 < great\-problem;
+馣 < fragrant\-odor;
+教友 < church\-member;
+光功率 < optical\-power;
+速效 < quick\-results;
+餚 < prepared\-meat;
+權威性 < authoritative;
+利於 < be\-beneficial;
+初期 < initial\-stage;
+女朋友 < female\-friend;
+基本概念 < basic\-concept;
+不周延 < undistributed;
+鞮 < leather\-shoes;
+詢問 < inquire\-about;
+霝 < drops\-of\-rain;
+摁釦兒 < snap\-fastener;
+死刑 < death\-penalty;
+铖 < person''s\-name;
+白皮松 < lacebark\-pine;
+錡 < a\-kind\-of\-pen;
+兵痞 < army\-riffraff;
+存儲器 < memory\-\(unit\);
+貿易順差 < trade\-surplus;
+彌迦書 < book\-of\-micah;
+鈄 < a\-wine\-flagon;
+武器系統 < weapon\-system;
+釭 < tire\-of\-wheel;
+醨 < dregs\-of\-wine;
+體重 < \(body\)\-weight;
+白砒 < white\-arsenic;
+梅塞迪斯奔馳 < mercedes\-benz;
+相架 < picture\-frame;
+辡 < recrimination;
+家用電腦 < home\-computer;
+現代化 < modernization;
+轏 < sleeping\-cart;
+兵營 < military\-camp;
+主禱文 < lord''s\-prayer;
+市民 < city\-resident;
+庭園 < flower\-garden;
+跮 < hasty\-walking;
+轟炸 < \(drop\-a\)\-bomb;
+過去 < \(in\-the\)\-past;
+賮 < farewell\-gift;
+艦艇 < naval\-vessels;
+大公無私 < just\-and\-fair;
+哥林多前書 < 1\-corinthians;
+冰期 < glacial\-epoch;
+關於 < pertaining\-to;
+剛剛 < just\-recently;
+廠主 < factory\-owner;
+再次 < one\-more\-time;
+謍 < humming\-sound;
+新約全書 < new\-testament;
+覶 < to\-look\-about;
+覔 < to\-search\-for;
+襚 < grave\-clothes;
+權力 < \(wield\)\-power;
+蠵 < large\-turtles;
+簿籍 < account\-books;
+螾 < the\-earthworm;
+螥 < the\-house\-fly;
+螙 < grubs\-in\-wood;
+蛅 < a\-caterpillar;
+橫掃 < to\-sweep\-away;
+度假 < go\-on\-holiday;
+蘯 < to\-toss\-about;
+異質 < heterogeneous;
+車站 < \(bus\)\-station;
+亞洲國家 < asian\-country;
+暴風驟雨 < violent\-storm;
+蔎 < thea\-sinensis;
+備至 < to\-the\-utmost;
+葽 < type\-of\-grain;
+菼 < rush\-or\-sedge;
+菺 < althaea\-rosea;
+跑鞋 < running\-shoes;
+菑 < to\-weed\-grass;
+報單 < taxation\-form;
+莧 < edible\-greens;
+茥 < rubus\-tokkura;
+鑒賞 < to\-appreciate;
+苘 < indian\-mallow;
+這位 < this\-\(person\);
+困窘 < embarrassment;
+降世 < come\-to\-earth;
+脥 < pelvic\-cavity;
+便飯 < a\-simple\-meal;
+胲 < hydroxylamine;
+輻條 < \(wheel\)\-spoke;
+好幾年 < several\-years;
+罳 < wooden\-screen;
+缇 < reddish\-color;
+打開 < to\-break\-open;
+售票處 < ticket\-office;
+發揮 < bring\-to\-bear;
+糭 < rice\-dumpling;
+捉取圖像 < capture\-image;
+籾 < unhulled\-rice;
+籜 < bamboo\-sheath;
+六點半 < half\-past\-six;
+開心 < to\-feel\-happy;
+無意識 < unconsciously;
+實驗 < to\-experiment;
+笵 < a\-bamboo\-form;
+笭 < bamboo\-screen;
+轉彎 < turn\-\(around\);
+案頭 < on\-one''s\-desk;
+拜金主義 < money\-worship;
+永久和平 < lasting\-peace;
+砞 < to\-smash\-rock;
+矞 < bore\-with\-awl;
+辨別 < differentiate;
+抄襲 < to\-plagiarize;
+辦到 < to\-accomplish;
+先後 < in\-succession;
+畜肥 < animal\-manure;
+推動力 < driving\-force;
+拉美 < latin\-america;
+核電 < nuclear\-power;
+越野 < cross\-country;
+璂 < jade\-ornament;
+琕 < type\-of\-pearl;
+獙 < die\-violently;
+公園 < a\-public\-park;
+百姓 < common\-people;
+哈薩克人 < kazakh\-person;
+災區 < disaster\-area;
+避風處 < lee\,\-windstop;
+牁 < mooring\-stake;
+構成 < to\-constitute;
+熰 < great\-drought;
+保藏 < keep\-in\-store;
+瑞香 < winter\-daphne;
+拌種 < seed\-dressing;
+籌措 < raise\-\(money\);
+棄置 < to\-throw\-away;
+使用量 < volume\-of\-use;
+賣點 < selling\-point;
+瘦弱 < thin\-and\-weak;
+浬 < nautical\-mile;
+白匪 < white\-bandits;
+肉體 < physical\-body;
+欵 < to\-treat\-well;
+欓 < a\-cross\-piece;
+半導體 < semiconductor;
+備案 < put\-on\-record;
+櫌 < a\-kind\-of\-hoe;
+檮 < block\-of\-wood;
+巡航導彈 < cruise\-missle;
+不可能的事 < impossibility;
+榌 < wooden\-ladder;
+百分之五十 < fifty\-percent;
+鬥志 < will\-to\-fight;
+扁荳 < hyacinth\-bean;
+百倍 < a\-hundredfold;
+楙 < name\-of\-plant;
+筆筒 < pen\-container;
+梹 < the\-areca\-nut;
+寶藍 < sapphire\-blue;
+梎 < sickle\-handle;
+栰 < a\-bamboo\-raft;
+滲碳 < carburization;
+暴力犯罪 < violent\-crime;
+朩 < kwukyel\:\-rank;
+渡過 < to\-cross\-over;
+字集 < character\-set;
+駁殼槍 < mauser\-pistol;
+何西阿書 < book\-of\-hosea;
+空運 < air\-transport;
+奧克拉荷馬市 < oklahoma\-city;
+搢 < to\-stick\-into;
+掭 < to\-manipulate;
+挶 < hold\-in\-hands;
+拕 < to\-drag\-after;
+抃 < to\-clap\-hands;
+不成文法 < unwritten\-law;
+戺 < stone\-boarder;
+戹 < in\-difficulty;
+高速乙太網路 < fast\-ethernet;
+不方便 < inconvenience;
+沒經驗 < inexperienced;
+表層 < surface\-layer;
+怾 < mountain\-name;
+圓周 < circumference;
+彽 < go\-to\-and\-fro;
+彲 < yellow\-dragon;
+彔 < to\-carve\-wood;
+主日學 < sunday\-school;
+病害 < plant\-disease;
+巰 < an\-atom\-group;
+售貨 < to\-sell\-goods;
+峂 < name\-of\-place;
+有助于 < contribute\-to;
+寀 < feudal\-estate;
+舌尖 < tip\-of\-tongue;
+案稱 < counter\-scale;
+媢 < be\-jealous\-of;
+消防 < fire\-fighting;
+喉結 < adam''s''\-apple;
+島國 < island\-nation;
+鬧事 < cause\-trouble;
+京都 < kyoto\-\(japan\);
+四千 < four\-thousand;
+當年 < in\-those\-days;
+垻 < an\-embankment;
+財迷 < money\-grubber;
+三十億 < three\-billion;
+理解 < to\-comprehend;
+嚚 < argumentative;
+不凍港 < ice\-free\-port;
+步話機 < walkie\-talkie;
+密碼 < \(secret\)\-code;
+築城 < fortification;
+咡 < side\-of\-mouth;
+衛兵 < \(body\)\-guard\);
+艾滋病抗體 < aids\-antibody;
+集線器 < hub\-\(network\);
+疑問 < interrogation;
+凟 < to\-be\-rude\-to;
+喉痧 < scarlet\-fever;
+個性 < individuality;
+儹 < to\-accumulate;
+儲 < to\-save\-money;
+儛 < to\-skip\-about;
+不舒適 < uncomfortable;
+傒 < personal\-name;
+兩千年 < the\-year\-2000;
+標本蟲 < spider\-beetle;
+啟示 < enlightenment;
+進出口 < import\|export;
+不可侵犯權 < inviolability;
+侂 < to\-commission;
+向西南 < southwestward;
+致函 < send\-a\-letter;
+乨 < the\-beginning;
+䶚 < decayed\-tooth;
+䶈 < a\-kind\-of\-rat;
+䵿 < a\-silent\-drum;
+䵁 < decayed\-dough;
+䴰 < a\-family\-name;
+䲺 < birds\-singing;
+䲅 < the\-globefish;
+䰻 < to\-catch\-fish;
+意識 < consciousness;
+䰱 < name\-of\-a\-god;
+售票員 < ticket\-seller;
+䯅 < a\-swift\-horse;
+䮈 < to\-go\-swiftly;
+䫿 < a\-cool\-breeze;
+䫴 < weak\-and\-dull;
+聯絡 < communication;
+售票口 < ticket\-window;
+扁擔 < carrying\-pole;
+䫁 < the\-first\-son;
+䪫 < ancient\-music;
+䪒 < leather\-pants;
+䩾 < herb\-medicine;
+䩤 < to\-lead\-an\-ox;
+䩣 < shoe\-cushions;
+䩞 < a\-saddle\-flap;
+䨎 < deep\-and\-dark;
+安定化 < stabilization;
+䧖 < a\-small\-mound;
+䦴 < open\-the\-door;
+䦳 < between\-steps;
+交換端 < switched\-port;
+哀號 < cry\-piteously;
+䦡 < a\-door\-keeper;
+䥩 < hooks\-to\-hang;
+䤵 < a\-tiny\-needle;
+䤎 < soybean\-sauce;
+䤃 < drunken\-sound;
+䣰 < to\-pool\-money;
+䢧 < to\-go\-forward;
+䢚 < a\-narrow\-path;
+䢃 < to\-administer;
+䡥 < a\-moving\-cart;
+䟘 < to\-straighten;
+䟊 < short\-strides;
+桂林 < guilin\-\(city\);
+䞁 < corresponding;
+䝶 < to\-levy\-taxes;
+䝬 < a\-wealthy\-man;
+金黃 < golden\-yellow;
+䛾 < familiar\-with;
+不相干 < be\-irrelevant;
+目標市場 < target\-market;
+䛐 < an\-expression;
+天曉得 < heaven\-knows\!;
+䚕 < to\-search\-out;
+䙹 < to\-vomit\-milk;
+䙥 < shiny\-dresses;
+䙢 < short\-t\-shirt;
+䙠 < short\-clothes;
+䙟 < heavy\-clothes;
+䙞 < woolen\-string;
+䙅 < the\-waistline;
+跨國 < transnational;
+䗗 < the\-millipede;
+䖩 < a\-kind\-of\-bee;
+䖑 < a\-white\-tiger;
+䖇 < fragrant\-herb;
+演出 < \(acting\)\-play;
+吃飯 < to\-eat\-a\-meal;
+䒎 < without\-color;
+䑲 < to\-row\-a\-boat;
+䑥 < a\-moving\-boat;
+䐲 < half\-raw\-meat;
+䐙 < the\-diaphragm;
+䏘 < a\-big\-abdomen;
+䏄 < not\-to\-listen;
+不通 < be\-obstructed;
+最高法院 < supreme\-court;
+䍽 < a\-fierce\-goat;
+䍼 < salted\-mutton;
+䍪 < castrated\-ram;
+䍤 < to\-strain\-out;
+戒指 < \(finger\)\-ring;
+最後更新 < latest\-update;
+䌙 < hank\-of\-ropes;
+䌅 < a\-thick\-ropes;
+䋦 < ravelled\-silk;
+䋝 < a\-throat\-band;
+杏仁豆腐 < almond\-junket;
+䊽 < a\-fine\-thread;
+䊔 < polished\-rice;
+䉩 < a\-bamboo\-ware;
+䉨 < bamboo\-joints;
+䈾 < move\-a\-little;
+䈳 < a\-window\-leaf;
+少將 < major\-general;
+䆚 < to\-go\-through;
+杜絕 < put\-an\-end\-to;
+䅛 < husks\-of\-rice;
+䃳 < falling\-stone;
+䂶 < the\-crustacea;
+䂗 < to\-be\-careful;
+䂎 < a\-short\-spear;
+䂁 < an\-angry\-look;
+䁙 < eloquent\-eyes;
+䀮 < sight\-blurred;
+䀭 < with\-big\-eyes;
+䀖 < to\-look\-up\-to;
+䀕 < angry\-glances;
+暗鎖 < built\-in\-lock;
+㿬 < nasal\-disease;
+㾽 < swelling\-feet;
+㽲 < griping\-colic;
+㽇 < unburnt\-tiles;
+㼵 < a\-small\-basin;
+㼟 < a\-tiled\-house;
+㼎 < a\-small\-melon;
+㻾 < jade\-articles;
+同盟國 < confederation;
+㺈 < to\-go\-hunting;
+㹹 < a\-kind\-of\-dog;
+㹵 < a\-hunting\-dog;
+㹳 < a\-kind\-of\-ape;
+懲戒 < to\-discipline;
+這種方式 < \(in\)\-this\-way;
+下課 < class\-is\-over;
+不詳 < not\-in\-detail;
+㸄 < a\-raging\-fire;
+㷾 < blaze\-of\-fire;
+反響 < repercussions;
+㷖 < to\-shine\-upon;
+㷕 < hearing\-sound;
+㷒 < to\-cook\-meals;
+㶘 < full\-of\-water;
+奧運會 < olympic\-games;
+㵳 < crystal\-clear;
+㵠 < to\-gush\-forth;
+㴽 < water\-current;
+㴫 < great\-flowing;
+㴦 < to\-wash\-hands;
+㴥 < great\-billows;
+㴐 < great\-current;
+保護主義 < protectionism;
+㲛 < hairy\-animals;
+在未來 < in\-the\-future;
+宿怨 < an\-old\-grudge;
+㰻 < asses\-braying;
+㰏 < a\-bamboo\-pole;
+㰌 < to\-monopolize;
+㭿 < oblique\-angle;
+單子 < list\-of\-items;
+㭓 < a\-pillar\-arch;
+貢獻 < to\-contribute;
+㬥 < to\-sun\-to\-air;
+叫醒 < to\-call\-awake;
+㬄 < warm\-and\-damp;
+㫟 < day\-after\-day;
+南美洲 < south\-america;
+美術 < the\-fine\-arts;
+㩥 < delicate\-hand;
+㨞 < to\-feel\-about;
+㧼 < to\-distribute;
+㧷 < to\-wipe\-tears;
+㦫 < lax\-and\-crude;
+㦌 < keen\-or\-sharp;
+㥼 < to\-be\-near\-to;
+㣿 < painfully\-sad;
+㣤 < to\-tread\-upon;
+㢻 < to\-draw\-a\-bow;
+㢖 < a\-store\-house;
+七百萬 < seven\-million;
+㠴 < a\-pillow\-case;
+㠛 < name\-a\-county;
+月球表面 < lunar\-surface;
+㟭 < the\-min\-river;
+能夠 < be\-capable\-of;
+㞬 < close\-or\-near;
+㞋 < soft\-and\-meek;
+家屬 < family\-member;
+㝻 < barely\-enough;
+㝃 < to\-bear\-a\-son;
+地方停車 < parking\-place;
+㛒 < can\-not\-speak;
+㚴 < a\-pretty\-girl;
+鼻淵 < nasosinusitis;
+懂得 < to\-understand;
+㘛 < a\-deep\-valley;
+有良心 < conscientious;
+㘓 < prolix\-speech;
+㘉 < to\-make\-sound;
+㗴 < dogs\-fighting;
+㕰 < sound\-angrily;
+㕪 < birds''\-chirps;
+㕙 < a\-wily\-rabbit;
+㕉 < to\-dig\-a\-hole;
+㔥 < full\-of\-anger;
+㓴 < to\-cut\-in\-two;
+半點 < the\-least\-bit;
+㓖 < bitterly\-cold;
+以太網絡端口 < ethernet\-port;
+㑥 < disrespectful;
+鉛筆 < \(lead\)\-pencil;
+單向 < undirectional;
+㐰 < to\-believe\-in;
+受賄 < accept\-bribes;
+鼻飼法 < nasal\-feeding;
+知名人士 < public\-figure;
+約拿書 < book\-of\-jonah;
+例假 < legal\-holiday;
+水面 < water\-surface;
+步行蟲 < ground\-beetle;
+移殖 < to\-transplant;
+起伏 < ups\-and\-downs;
+變調 < modified\-tone;
+友誼 < companionship;
+美國國會 < u\.s\.\-congress;
+哀樂 < funeral\-music;
+不幸的是 < unfortunately;
+富于 < to\-be\-full\-of;
+便步走 < march\-at\-ease;
+聲帶 < vocal\-cord\(s\);
+不知 < unknowing\(ly\);
+孫女 < granddaughter;
+光纖電纜 < optical\-fiber;
+社交語言 < lingua\-franca;
+涼快 < nice\-and\-cold;
+三百 < three\-hundred;
+連接至 < to\-connect\-to;
+京戲 < beijing\-opera;
+低于 < be\-lower\-than;
+鳶尾花 < iris\-\(flower\);
+南部 < southern\-part;
+變色 < change\-colour;
+半官方 < semi\-official;
+北面 < northern\-side;
+上班 < to\-go\-to\-work;
+百科全書 < encyclopaedia;
+各種 < every\-kind\-of;
+貝彫 < shell\-carving;
+日軍 < japanese\-army;
+功率惡化 < power\-penalty;
+南越 < south\-vietnam;
+愛憎 < love\-and\-hate;
+職員 < office\-worker;
+洋溢 < brimming\-with;
+不可抗力 < force\-majeure;
+協調 < to\-coordinate;
+大阪 < osaka\-\(japan\);
+考慮 < to\-think\-over;
+生命的遺跡 < trace\-of\-life;
+北部 < northern\-part;
+兼容性 < compatibility;
+解壓縮 < to\-decompress;
+本意 < original\-idea;
+吸毒 < to\-take\-drugs;
+中國銀行 < bank\-of\-china;
+泳池 < swimming\-pond;
+一步 < \(single\)\-step;
+北越 < north\-vietnam;
+響應時間 < response\-time;
+雜項 < miscellaneous;
+傳輸模式 < transfer\-mode;
+採棉機 < cotton\-picker;
+外部 < external\-part;
+聞人 < famous\-person;
+前所未有 < unprecedented;
+和尚 < buddhist\-monk;
+蘇州 < suzhou\-\(city\);
+礦水 < mineral\-water;
+暑氣 < \(summer\)\-heat;
+一九九七年 < the\-year\-1997;
+哀告 < beg\-piteously;
+外貿 < foreign\-trade;
+避難 < \[take\]\-refuge;
+包袱 < cloth\-wrapper;
+感冒 < to\-catch\-cold;
+彩蚌 < painted\-shell;
+芭蕉扇 < palm\-leaf\-fan;
+禮堂 < assembly\-hall;
+總計 < \(grand\)\-total;
+娛樂 < entertainment;
+中學 < middle\-school;
+五一 < 5\-1\-\(may\-1st\);
+磁片 < magnetic\-disk;
+會場 < meeting\-place;
+媾和 < to\-make\-peace;
+公元前 < before\-christ;
+上市 < on\-the\-market;
+訪問方式 < access\-method;
+檔案建立 < file\-creation;
+私利 < personal\-gain;
+遲鈍 < slow\-\(witted\);
+波美度 < baume\-degrees;
+北美 < north\-america;
+經驗 < to\-experience;
+出生日期 < date\-of\-birth;
+不可思議 < inconceivable;
+格子花呢 < plaid\,\-tartan;
+汲水 < to\-draw\-water;
+獲勝 < be\-victorious;
+觀點 < point\-of\-view;
+半復賽 < eighth\-finals;
+水牛 < water\-buffalo;
+雙生兄弟 < twin\-brothers;
+同年 < the\-same\-year;
+最大速率 < maximum\-speed;
+變星 < variable\-star;
+邊界線 < boundary\-line;
+蘇俄 < soviet\-russia;
+現實情況 < current\-state;
+步行 < to\-go\-on\-foot;
+擅長 < to\-be\-good\-at;
+不啻 < not\-less\-than;
+牌照 < license\-plate;
+支持率 < support\-level;
+試一試 < to\-have\-a\-try;
+暗害 < kill\-secretly;
+包羅萬象 < all\-embracing;
+勃興 < rise\-suddenly;
+變態 < metamorphosis;
+性慾 < sexual\-desire;
+匯率 < exchange\-rate;
+治安 < law\-and\-order;
+視頻節目 < video\-program;
+雌花 < female\-flower;
+全世界第一 < world''s\-first;
+多種 < many\-kinds\-of;
+吸入 < to\-breathe\-in;
+變工 < exchange\-work;
+下至上 < bottom\-to\-top;
+受害 < to\-be\-injured;
+找不到 < couldn''t\-find;
+決心 < determination;
+下令 < give\-an\-order;
+莫逆 < very\-friendly;
+羅馬字母 < roman\-letters;
+比熱 < specific\-heat;
+不可名狀 < indescribable;
+瞳 < pupil\-of\-eye;
+万 < ten\-thousand;
+布 < cotton\-cloth;
+通 < pass\-through;
+提 < hold\-in\-hand;
+京 < capital\-city;
+甚 < great\-extent;
+周 < zhou\-dynasty;
+尻 < end\-of\-spine;
+宴 < to\-entertain;
+宰 < to\-slaughter;
+犯 < commit\-crime;
+婢 < servant\-girl;
+参 < take\-part\-in;
+掌 < palm\-of\-hand;
+姿 < one''s\-manner;
+姉 < elder\-sister;
+斗 < chinese\-peck;
+呼 < breathe\-sigh;
+衝 < rush\-against;
+螺 < spiral\-shell;
+坊 < neighborhood;
+尼 < buddhist\-nun;
+鼾 < snore\-loudly;
+叶 < to\-harmonize;
+野 < open\-country;
+移 < change\-place;
+唐 < tang\-dynasty;
+秀 < ear\-of\-grain;
+蒲 < type\-of\-rush;
+庆 < congratulate;
+蒟 < betel\-pepper;
+汗 < perspiration;
+拜 < do\-obeisance;
+虑 < be\-concerned;
+宋 < song\-dynasty;
+胆 < gall\-bladder;
+剖 < split\-in\-two;
+凤 < male\-phoenix;
+询 < inquire\-into;
+筑 < ancient\-lute;
+偶 < accidentally;
+飽 < eat\-heartily;
+胎 < unborn\-child;
+悟 < to\-apprehend;
+肅 < pay\-respects;
+侘 < disappointed;
+祭 < sacrifice\-to;
+宪 < constitution;
+碑 < stone\-tablet;
+昌 < light\-of\-sun;
+携 < lead\-by\-hand;
+厦 < big\-building;
+仆 < fall\-forward;
+妥 < satisfactory;
+杭 < cross\-stream;
+赠 < give\-present;
+腔 < chest\-cavity;
+孝 < filial\-piety;
+笹 < small\-bamboo;
+笛 < bamboo\-flute;
+歧 < fork\-of\-road;
+鉛 < lead\-plumbum;
+喃 < keep\-talking;
+舱 < hold\-of\-ship;
+醜 < ugly\-looking;
+裘 < fur\-garments;
+栽 < to\-cultivate;
+诧 < be\-surprised;
+阎 < village\-gate;
+愣 < be\-in\-a\-daze;
+琪 < type\-of\-jade;
+娥 < be\-beautiful;
+咪 < sound\-of\-cat;
+渗 < soak\-through;
+葫 < bottle\-gourd;
+坪 < level\-ground;
+坞 < entrenchment;
+橡 < chestnut\-oak;
+絮 < waste\-cotton;
+跄 < walk\-rapidly;
+屹 < to\-rise\-high;
+惘 < disconcerted;
+揩 < rub\-and\-wipe;
+楠 < name\-of\-tree;
+麓 < foot\-of\-hill;
+恻 < feel\-anguish;
+桅 < mast\-of\-ship;
+骋 < gallop\-horse;
+蹒 < to\-jump\-over;
+祀 < to\-sacrifice;
+寰 < great\-domain;
+斓 < multicolored;
+伫 < look\-towards;
+躏 < trample\-down;
+沽 < buy\-and\-sell;
+珥 < ear\-ornament;
+笆 < bamboo\-fence;
+虬 < young\-dragon;
+惬 < be\-satisfied;
+缨 < a\-chin\-strap;
+劾 < examine\-into;
+嘤 < seek\-friends;
+诃 < scold\-loudly;
+冽 < cold\-and\-raw;
+飨 < host\-banquet;
+怏 < discontented;
+冢 < burial\-mound;
+嗳 < interjection;
+宕 < stone\-quarry;
+耆 < man\-of\-sixty;
+靓 < make\-up\-face;
+蛰 < to\-hibernate;
+掼 < throw\-ground;
+囤 < grain\-basket;
+筱 < dwarf\-bamboo;
+樟 < camphor\-tree;
+鲥 < reeves''\-shad;
+逵 < thoroughfare;
+岷 < min\-mountain;
+枰 < smooth\-board;
+屐 < wooden\-shoes;
+胛 < the\-shoulder;
+鹞 < sparrow\-hawk;
+犄 < animal\-horns;
+跹 < wander\-about;
+昱 < bright\-light;
+湄 < water''s\-edge;
+菅 < coarse\-grass;
+绻 < affectionate;
+篁 < bamboo\-grove;
+赅 < prepared\-for;
+椁 < outer\-coffin;
+纰 < spoiled\-silk;
+鼋 < large\-turtle;
+醐 < purest\-cream;
+龉 < uneven\-teeth;
+苻 < kind\-of\-herb;
+鬣 < horse''s\-mane;
+缗 < fishing\-line;
+湫 < a\-small\-pond;
+仟 < one\-thousand;
+蚶 < kind\-of\-clam;
+蛄 < mole\-cricket;
+毂 < hub\-of\-wheel;
+畚 < straw\-basket;
+洄 < a\-back\-water;
+飧 < evening\-meal;
+醪 < unclear\-wine;
+骝 < famous\-horse;
+骒 < mother\-horse;
+懔 < be\-afraid\-of;
+劓 < cut\-off\-nose;
+踔 < to\-get\-ahead;
+颡 < the\-forehead;
+潲 < driving\-rain;
+缯 < silk\-fabrics;
+甓 < glazed\-tiles;
+荬 < a\-plant\-name;
+柒 < number\-seven;
+瘳 < to\-be\-healed;
+谇 < speak\-ill\-of;
+乇 < to\-depend\-on;
+其他的人 < other\-people;
+加緊 < to\-intensify;
+萬事達 < master\(card\);
+睡覺 < to\-go\-to\-bed;
+早期 < early\-period;
+約珥書 < book\-of\-joel;
+媒體報導 < media\-report;
+相關 < interrelated;
+艾滋病患者 < aids\-patient;
+火龍 < fiery\-dragon;
+合作 < to\-cooperate;
+賠償金 < compensation;
+簿記管理員 < commissarian;
+智力 < intelligence;
+示威者 < demonstrator;
+昔年 < former\-years;
+和平條約 < peace\-treaty;
+毛主席 < chairman\-mao;
+礦井 < mine\-\(shaft\);
+熟知 < acquaintance;
+支票 < \(bank\)\-check;
+建築物 < \(a\)\-building;
+姐姐 < older\-sister;
+股票市場 < stock\-market;
+閱覽室 < reading\-room;
+警報 < \(fire\)\-alarm;
+後果 < consequences;
+不名譽 < disreputable;
+收盤 < market\-close;
+城防 < city\-defence;
+頂住 < to\-withstand;
+西部 < western\-part;
+好感 < good\-opinion;
+機械碼 < machine\-code;
+失業 < unemployment;
+擅自 < unauthorized;
+大驚失色 < apprehensive;
+高層旅館 < luxury\-hotel;
+逕自 < on\-one''s\-own;
+近視 < shortsighted;
+步犁 < walking\-plow;
+不成功 < unsuccessful;
+水滸傳 < water\-margin;
+不重視 < indifference;
+開關 < power\-switch;
+去世 < to\-pass\-away;
+亞洲與太平洋 < asia\-pacific;
+十九歲 < 19\-years\-old;
+靈的世界 < spirit\-world;
+多方 < in\-many\-ways;
+搶購 < panic\-buying;
+巡迴 < to\-go\-around;
+這種 < this\-kind\-of;
+大意 < general\-idea;
+半文盲 < semiliterate;
+別稱 < another\-name;
+步步 < step\-by\-step;
+協商 < consult\-with;
+矮星 < dwarf\-\(star\);
+核武器試驗 < nuclear\-test;
+丙烯酸 < acrylic\-acid;
+半熟練 < semi\-skilled;
+那時 < at\-that\-time;
+吃不開 < be\-unpopular;
+大師 < great\-master;
+組織 < organization;
+出乎預料 < unexpectedly;
+通用 < common\-\(use\);
+多工 < to\-multiplex;
+糾葛 < entanglement;
+試探 < to\-sound\-out;
+夫妻 < man\-and\-wife;
+地方主義 < \"local\-\-ism\";
+道歉 < to\-apologize;
+故意 < deliberately;
+請問 < may\-i\-ask\.\.\.;
+激光唱片 < compact\-disk;
+二十一世紀 < 21st\-century;
+出發 < to\-start\-out;
+縮寫 < abbreviation;
+中央銀行 < central\-bank;
+壁掛 < wall\-hanging;
+熟悉 < to\-know\-well;
+熟思 < deliberation;
+整天 < all\-day\-long;
+鱉甲 < turtle\-shell;
+身體 < \(human\)\-body;
+斯密約瑟 < joseph\-smith;
+糾纏 < be\-entangled;
+不合理 < unreasonable;
+目前世界 < modern\-world;
+複製 < to\-duplicate;
+隊旗 < team\-pennant;
+加強 < to\-reinforce;
+出獄 < leave\-prison;
+不愉快 < disagreeable;
+談判 < to\-negotiate;
+看病 < see\-a\-doctor;
+民意調查 < opinion\-poll;
+很不 < very\-un\-\.\.\.\.;
+毅力 < perseverance;
+落實 < to\-implement;
+支店 < branch\-store;
+齆 < stuffed\-noze;
+鼽 < clogged\-nose;
+白薯 < sweet\-potato;
+綵旗 < colored\-flag;
+養雞場 < chicken\-farm;
+麕 < muntjac\-deer;
+現代音樂 < modern\-music;
+回顧 < to\-look\-back;
+殭化 < become\-rigid;
+鳐 < the\-nautilus;
+鱑 < the\-sturgeon;
+鱂 < name\-of\-fish;
+製造業者 < manufacturer;
+膝上型 < laptop\-\(adj\);
+瀏覽 < to\-skim\-over;
+心理學家 < psychologist;
+魦 < shark\-family;
+鬵 < big\-iron\-pot;
+鬅 < unkempt\-hair;
+課余 < after\-school;
+車道 < traffic\-lane;
+正如 < be\-just\-like;
+驈 < black\-horses;
+騆 < divine\-horse;
+駜 < strong\-horse;
+駗 < chatter\-mark;
+有條有理地 < methodically;
+不是玩兒的 < it''s\-no\-joke;
+實際性 < practicality;
+十一年 < eleven\-years;
+餀 < tainted\-food;
+不能抵抗 < irresistible;
+颭 < sway\-in\-wind;
+紙牌 < playing\-card;
+鞦 < leather\-stap;
+過境簽証 < transit\-visa;
+霑 < be\-moistened;
+陁 < a\-steep\-bank;
+發紅 < flush\-\(face\);
+集合 < congregation;
+速成 < crash\-course;
+闑 < the\-doorsill;
+光線 < optical\-line;
+镨 < praseodymium;
+努力 < great\-effort;
+引入 < to\-draw\-into;
+廠址 < factory\-site;
+鏷 < protactinium;
+相似性 < ressemblance;
+非同步 < asynchronous;
+鍊 < smelt\-metals;
+錈 < to\-bend\-iron;
+傳道書 < ecclesiastes;
+隨同 < accompanying;
+耶穌基督 < jesus\-christ;
+熒光 < flourescence;
+記者報導 < press\-report;
+釪 < an\-alms\-bowl;
+廣告 < to\-advertise;
+醽 < kind\-of\-wine;
+挨近 < get\-close\-to;
+編劇 < write\-a\-play;
+壓倒 < overwhelming;
+採脂 < tree\-tapping;
+郙 < to\-be\-exiled;
+邲 < good\-looking;
+迣 < to\-leap\-over;
+速寫 < quick\-sketch;
+多工作業 < multitaksing;
+發言人 < spokesperson;
+踼 < to\-fall\-flat;
+踤 < butt\-against;
+集中器 < concentrator;
+不大離兒 < pretty\-close;
+週圍 < surroundings;
+濾紙 < filter\-paper;
+賉 < to\-give\-alms;
+貆 < small\-badger;
+豶 < castrate\-pig;
+足球迷 < football\-fan;
+本來面目 < true\-colours;
+訪俄 < visit\-russia;
+拔錨 < weigh\-anchor;
+標燈 < beacon\-light;
+冰晶 < ice\-crystals;
+誾 < speak\-gently;
+幾天 < several\-days;
+授精 < insemination;
+髒話 < bad\-language;
+凹岸 < concave\-bank;
+襛 < fine\-clothes;
+襆 < hood\-or\-cowl;
+過來 < to\-come\-over;
+操勞 < to\-work\-hard;
+那樣的 < that\-kind\-of;
+光源 < light\-source;
+粗俗的階級 < vulgar\-class;
+速凍 < quick\-freeze;
+網路節點 < network\-node;
+坐牢 < imprisonment;
+補牙 < fill\-a\-tooth;
+刨刀 < planing\-tool;
+把關 < guard\-a\-pass;
+打印服務器 < print\-server;
+不可收拾 < irremediable;
+半邊天 < half\-the\-sky;
+葜 < smilax\-china;
+萩 < scandent\-hop;
+萘 < naphthanlene;
+自衛 < self\-defense;
+賓西法尼亞 < pennsylvania;
+莦 < jungle\-grass;
+國家機密 < state\-secret;
+陛下 < your\-majesty;
+八月 < eighth\-month;
+芚 < green\-sprout;
+備考 < \(an\-appendix;
+芑 < white\-millet;
+年前 < \.\.\.years\-ago;
+膗 < ugly\-and\-fat;
+開支 < expenditures;
+捏積 < chiropractic;
+葡萄酒 < \(grape\)\-wine;
+肙 < a\-small\-worm;
+羀 < fishing\-trap;
+調查人員 < investigator;
+武裝部隊 < armed\-forces;
+報價 < quoted\-price;
+迷信 < superstition;
+纁 < shade\-of\-red;
+繙 < to\-interpret;
+縕 < tangled\-hemp;
+轉換 < to\-transform;
+搬家 < move\-\(house\);
+戶頭 < bank\-account;
+農作物 < \(farm\)\-crops;
+籯 < bamboo\-chest;
+四十多 < more\-than\-40;
+親信 < trusted\-aide;
+筤 < young\-bamboo;
+行程 < travel\-route;
+筍 < bamboo\-shoot;
+筅 < bamboo\-brush;
+嚴竣 < tight\.strict;
+證實禮 < confirmation;
+名錄服務 < name\-service;
+秬 < black\-millet;
+看作 < look\-upon\-as;
+語音信號 < voice\-signal;
+寧願 < would\-rather;
+祘 < to\-calculate;
+磠 < sal\-ammoniac;
+碶 < a\-flood\-gate;
+接枝 < \(tree\)\-graft;
+授權 < to\-authorize;
+矼 < stone\-bridge;
+開學 < school\-opens;
+睒 < to\-glance\-at;
+保證 < to\-guarantee;
+批評 < to\-criticize;
+宇航局 < space\-agency;
+皦 < bright\-white;
+令人驚異 < surprisingly;
+瘺 < anal\-fistula;
+去國外 < to\-go\-abroad;
+疿 < prickly\-heat;
+拔絲 < wire\-drawing;
+打賭 < \(make\-a\)\-bet;
+優惠 < preferential;
+第二位 < second\-place;
+公報 < announcement;
+基礎設施 < base\-station;
+密集 < concentrated;
+授時 < time\-service;
+在旁 < by\-\(a\-place\);
+同時代 < contemporary;
+玍 < ill\-tempered;
+拼盤 < cold\-platter;
+狆 < pekinese\-dog;
+牂 < female\-sheep;
+捐款 < donate\-money;
+副總理 < vice\-premier;
+國有 < nationalized;
+系上 < to\-buckle\-up;
+背離 < deviate\-from;
+按照 < according\-to;
+偶然 < incidentally;
+喉鏡 < laryngoscope;
+背陰 < in\-the\-shade;
+生命跡象 < sign\-of\-life;
+兩千 < two\-thousand;
+滊 < a\-river\-name;
+路得記 < book\-of\-ruth;
+插圖 < illustration;
+泖 < still\-waters;
+知識分子 < intellectual;
+管理 < to\-supervise;
+三合一 < three\-in\-one;
+毈 < fertile\-eggs;
+殜 < half\-sitting;
+四百萬 < four\-million;
+梅花 < plum\-blossom;
+阿摩司書 < book\-of\-amos;
+當然 < only\-natural;
+橒 < wood\-streaks;
+高質量 < high\-quality;
+標價 < mark\-a\-price;
+槻 < zelkova\-tree;
+棒硫 < roll\-sulphur;
+槔 < water\-pulley;
+夢游症 < to\-sleepwalk;
+耶利米哀歌 < lamentations;
+饅頭 < steamed\-roll;
+保管 < take\-care\-of;
+用戶定義 < user\-defined;
+垂下 < to\-hang\-down;
+成吉思汗 < genghis\-khan;
+摙 < to\-transport;
+裁員 < to\-cut\-staff;
+清醒 < clear\-headed;
+補充 < to\-replenish;
+不結盟 < nonalignment;
+揑 < to\-fabricate;
+八級風 < force\-8\-wind;
+戉 < a\-battle\-axe;
+便秘 < constipation;
+病床 < hospital\-bed;
+幼兒園 < kindergarten;
+桔子水 < orange\-juice;
+枘鑿 < incompatible;
+主幹網路 < core\-network;
+廹 < to\-persecute;
+創造性 < creativeness;
+嚮往 < to\-yearn\-for;
+自拔 < free\-oneself;
+帨 < handkerchief;
+嶢 < high\-or\-tall;
+屘 < the\-youngest;
+航天 < space\-flight;
+高密 < high\-density;
+表土 < surface\-soil;
+歷代志下 < 2\-chronicles;
+歷代志上 < 1\-chronicles;
+嫲 < grand\-mother;
+賞識 < appreciation;
+消除 < to\-eliminate;
+瑞色 < lovely\-color;
+聽說 < to\-hear\-told;
+周總理 < premier\-zhou;
+執政黨 < ruling\-party;
+當心 < to\-take\-care;
+異性 < heterosexual;
+交鋒 < cross\-swords;
+興奮 < \(be\)\-excited;
+指令名字 < command\-name;
+禽類 < bird\-species;
+母親節 < mother''s\-day;
+喭 < condole\-with;
+一小部分 < a\-small\-part;
+偽善 < hypocritical;
+抱愧 < feel\-ashamed;
+呹 < to\-eat\-grass;
+一下兒 < a\-little\-bit;
+負責 < in\-charge\-of;
+現行 < be\-in\-effect;
+屈服 < to\-surrender;
+厷 < the\-fore\-arm;
+減緩 < to\-slow\-down;
+勣 < achievements;
+下齒 < bottom\-teeth;
+媒體 < \(news\)\-media;
+剷 < to\-level\-off;
+驚愕 < astonishment;
+當場 < at\-the\-scene;
+複製品 < reproduction;
+儗 < compare\-with;
+司法權 < jurisdiction;
+婚齡 < marrying\-age;
+抱屈 < feel\-wronged;
+佔便宜 < adventageous;
+佭 < unsubmissive;
+食譜 < cookery\-book;
+丼 < bowl\-of\-food;
+並非 < really\-isn''t;
+突破 < breakthrough;
+鼻中隔 < nasal\-septum;
+新聞處 < news\-service;
+侵晨 < towards\-dawn;
+䴼 < to\-extirpate;
+䴕 < a\-woodpecker;
+漢城 < seoul\,\-korea;
+䳖 < flying\-birds;
+䲜 < lots\-of\-fish;
+䱊 < roe\-or\-spawn;
+䯶 < fair\-of\-hair;
+䯧 < a\-small\-hall;
+運動鞋 < sports\-shoes;
+䮟 < big\-and\-tall;
+少數 < small\-number;
+䮑 < a\-gray\-horse;
+䭘 < well\-stacked;
+䭖 < animal\-feeds;
+拌和 < mix\-and\-stir;
+䭉 < mashed\-beans;
+䬜 < evil\-spirits;
+䬚 < to\-move\-fast;
+䬋 < violent\-wind;
+流通 < to\-circulate;
+䫨 < tall\-and\-big;
+䫚 < short\-headed;
+䫕 < small\-headed;
+咨詢 < consultative;
+䫇 < the\-whiskers;
+扒拉 < push\-lightly;
+䪹 < a\-large\-face;
+䪡 < to\-fall\-down;
+䪋 < silk\-cordage;
+䩏 < a\-small\-face;
+䩋 < a\-green\-face;
+䩇 < a\-small\-head;
+專政 < dictatorship;
+䨶 < thunderstorm;
+䨲 < a\-small\-hare;
+䨪 < a\-dust\-storm;
+䨝 < a\-pure\-woman;
+䨈 < a\-small\-bird;
+飼草 < forage\-grass;
+䧢 < a\-rough\-road;
+䧙 < a\-high\-mound;
+鼻腔 < nasal\-cavity;
+核轟炸 < nuclear\-bomb;
+浴血 < blood\-soaked;
+䥃 < a\-big\-hammer;
+䤬 < a\-small\-gong;
+䤣 < a\-metal\-ring;
+䤋 < yellow\-faced;
+䣾 < cheese\-dregs;
+䣼 < mixed\-starch;
+屬國 < vassal\-state;
+䠔 < far\-and\-deep;
+䟿 < to\-reverence;
+䟹 < to\-hop\-about;
+轉賬卡 < a\-debit\-card;
+鋼筆 < fountain\-pen;
+䟕 < to\-step\-upon;
+䞱 < to\-fall\-over;
+䞧 < hard\-to\-walk;
+偉人 < great\-person;
+安營 < pitch\-a\-camp;
+和解 < conciliatory;
+面對面 < face\-to\-face;
+䚪 < curved\-horns;
+條子 < a\-short\-note;
+揮霍無度 < extravagance;
+根本 < \(not\)\-at\-all;
+䘄 < cicada\-famiy;
+䘀 < grasshoppers;
+䗧 < libellulidae;
+種種 < all\-kinds\-of;
+䖞 < a\-sea\-insect;
+䕻 < to\-adhere\-to;
+䕺 < dense\-growth;
+䕝 < medical\-herb;
+䕋 < of\-elm\-group;
+䓯 < water\-pepper;
+登陸月球 < moon\-landing;
+複寫紙 < carbon\-paper;
+䑽 < a\-large\-boat;
+䑵 < a\-small\-boat;
+法院 < court\-of\-law;
+䐅 < the\-buttocks;
+䏀 < inharmonious;
+䎘 < birds\-flying;
+河馬 < hippopotamus;
+生命 < life\-\(force\);
+䍄 < an\-indenture;
+䌶 < \)\-black\-silk;
+䌇 < a\-thick\-rope;
+主角 < leading\-role;
+淫猥 < abominations;
+產卵 < lay\-\(an\-egg\);
+果皮 < \(fruit\)\-peel;
+䊅 < to\-soak\-rice;
+䉯 < dried\-bamboo;
+䉕 < a\-bamboo\-hat;
+䉔 < bamboo\-slips;
+䈟 < broken\-sound;
+䇸 < a\-bamboo\-mat;
+䇝 < to\-break\-off;
+䆢 < to\-penetrate;
+䆟 < coresponding;
+䆍 < cutted\-crops;
+不足 < insufficient;
+䅁 < to\-husk\-rice;
+打孔器 < hole\-puncher;
+䃲 < a\-great\-rock;
+䃯 < small\-stones;
+䃝 < rugged\-rocks;
+䂐 < short\-stupid;
+䁧 < to\-open\-wide;
+家政 < housekeeping;
+不貲 < immeasurable;
+䀁 < a\-small\-bowl;
+㿵 < soft\-leather;
+㿲 < a\-fierce\-dog;
+㿪 < skin\-disease;
+㿊 < very\-painful;
+㾔 < long\-illness;
+什麼是 < what\-is\-\.\.\.\?;
+軍事援助 < military\-aid;
+凹透鏡 < concave\-lens;
+㼋 < the\-cucumber;
+本本主義 < book\-worship;
+㺖 < dogs\-barking;
+㺎 < fierce\-beast;
+五角大樓 < the\-pentagon;
+㸾 < to\-filled\-up;
+㸭 < the\-opposite;
+㷹 < intense\-heat;
+㶕 < to\-wash\-rice;
+作愛 < to\-make\-love;
+㵊 < moving\-image;
+㴕 < to\-boil\-away;
+㳞 < deep\-and\-far;
+㳑 < to\-flow\-over;
+㰷 < resurrection;
+㯠 < a\-cross\-beam;
+㯜 < decayed\-wood;
+㮮 < a\-well\-sweep;
+㮬 < a\-fruit\-tree;
+蘇聯 < soviet\-union;
+㬵 < the\-shinbone;
+摩西律法 < law\-of\-moses;
+㫒 < hands\-joined;
+害怕 < to\-be\-afraid;
+㫃 < flags\-flying;
+㫁 < to\-cut\-apart;
+晚間 < evening\-time;
+五百 < five\-hundred;
+㧴 < to\-rub\-hands;
+㦎 < cantankerous;
+㥵 < to\-dishonour;
+㤧 < conciliation;
+㣒 < hair\-raising;
+㣑 < double\-image;
+迅速蔓延 < rapid\-spread;
+㢗 < a\-high\-house;
+㡔 < oiled\-calico;
+㡅 < storage\-room;
+證驗 < real\-results;
+㠾 < a\-dish\-cloth;
+懊悔 < feel\-remorse;
+㠒 < mountain\-top;
+㟐 < big\-and\-high;
+㟇 < a\-land\-slide;
+㞢 < to\-arrive\-at;
+㞛 < red\-slippers;
+㞅 < not\-straight;
+古羅馬 < ancient\-rome;
+㜗 < covetousness;
+㛼 < to\-interrupt;
+俄中 < russia\-china;
+㛥 < to\-prostrate;
+㛊 < to\-speculate;
+二十萬 < 200\-thousand;
+㘢 < a\-round\-cave;
+㘍 < sound\-of\-rat;
+變速 < speed\-change;
+㖷 < bird\-singing;
+年輕人 < young\-people;
+㖠 < an\-auxiliary;
+㕯 < slow\-tongued;
+安心 < feel\-at\-ease;
+㕒 < a\-lofty\-peak;
+㔬 < to\-establish;
+㔦 < to\-encourage;
+㔕 < with\-purpose;
+㔃 < to\-cut\-short;
+㓣 < to\-sink\-into;
+人民 < \(the\)\-people;
+將來 < \(the\)\-future;
+㑪 < a\-generation;
+㑔 < all\-together;
+㐸 < to\-own\-money;
+㐴 < to\-drag\-down;
+題花 < title\-design;
+可觀 < considerable;
+人權 < human\-rights;
+乒乓球 < table\-tennis;
+階級式 < hierarchical;
+以斯拉記 < book\-of\-ezra;
+趕上 < keep\-up\-with;
+聽說過 < to\-hear\-said;
+闌尾炎 < appendicitis;
+移民 < to\-immigrate;
+今晨 < this\-morning;
+密友 < close\-friend;
+南非 < south\-africa;
+不符 < inconsistent;
+開放式網路 < open\-network;
+丹田 < pubic\-region;
+半響 < half\-the\-day;
+主環 < primary\-ring;
+大一些 < a\-bit\-bigger;
+你們 < you\-\(plural\);
+一直 < continuously;
+生物戰 < germ\-warfare;
+不知所措 < be\-at\-a\-loss;
+暗算 < plot\-against;
+建設性 < constructive;
+亮度 < illumination;
+參考 < consultation;
+喉塞音 < glottal\-stop;
+壯麗 < magnificence;
+黨政 < party\-policy;
+檔案服務 < file\-servoce;
+虐待 < mistreatment;
+感恩 < thanksgiving;
+大都會 < metropolitan;
+罰球 < penalty\-shot;
+費城 < philadelphia;
+最低點 < lowest\-point;
+油畫 < oil\-painting;
+美洲 < the\-americas;
+貧困 < impoverished;
+降落地點 < landing\-site;
+基督教 < christianity;
+大量 < great\-amount;
+頂用 < to\-be\-of\-use;
+安眠酮 < methaqualone;
+暗灘 < hidden\-shoal;
+藥方 < prescription;
+試驗性 < experimental;
+主持 < preside\-over;
+銀幕 < movie\-screen;
+老家 < native\-place;
+暗潮 < undercurrent;
+買價 < buying\-price;
+多邊 < multilateral;
+現代 < modern\-times;
+他人 < other\-person;
+之後 < after\(wards\);
+慣例 < conventional;
+並排 < side\-by\-side;
+耕地 < ariable\-land;
+貴族化 < aristocratic;
+浴場 < bathing\-spot;
+五百萬 < five\-million;
+蓋菜 < leaf\-mustard;
+冰洲石 < iceland\-spar;
+核軍備 < nuclear\-arms;
+不拘 < not\-stick\-to;
+三十五億 < 3\-\.5\-billion;
+鞭砲 < firecrackers;
+二十六歲 < 26\-years\-old;
+感動 < to\-move\-\(sb\);
+意味 < significance;
+速記員 < stenographer;
+白水泥 < white\-cement;
+不愧 < be\-worthy\-of;
+靶紙 < target\-sheet;
+數據網絡 < data\-network;
+龐然大物 < huge\-monster;
+象聲詞 < onomatopoeia;
+愈加 < all\-the\-more;
+遠離 < removed\-from;
+和善 < good\-natured;
+認證 < authenticate;
+刨齒 < gear\-shaping;
+注意 < take\-note\-of;
+風味 < local\-flavor;
+繡花 < to\-embroider;
+暗探 < secret\-agent;
+暴怒 < violent\-rage;
+不容 < not\-tolerate;
+不宜 < not\-suitable;
+犯毒 < illegal\-drug;
+世界知名 < world\-famous;
+幀格式 < frame\-format;
+大致 < more\-or\-less;
+不如 < not\-equal\-to;
+得票 < vote\-getting;
+派別 < denomination;
+線軸 < thread\-spool;
+有利 < advantageous;
+衛生紙 < toilet\-paper;
+訂閱 < subscription;
+恢復 < to\-reinstate;
+這項 < this\-\(thing\);
+快速發展 < rapid\-growth;
+多種語言 < multilingual;
+可惜 < it\-is\-a\-pity;
+當時的 < of\-that\-time;
+婚外 < extramarital;
+不單 < not\-the\-only;
+安全問題 < safety\-issue;
+之一 < one\-of\-\(sth\);
+境遇 < circumstance;
+野心 < wild\-schemes;
+卻步 < to\-step\-back;
+中俄 < china\-russia;
+危殆 < grave\-danger;
+中亞 < central\-asia;
+變性 < denaturation;
+原料 < raw\-material;
+消防栓 < fire\-hydrant;
+不利 < unfavourable;
+透明度 < transparency;
+爆發 < to\-break\-out;
+多站 < multistation;
+氧氣 < oxygen\-\(gas\);
+念日 < memorial\-day;
+各國 < each\-country;
+不便 < inconvenient;
+時態 < \(verb\)\-tense;
+羅列 < to\-spead\-out;
+一億 < 1\-00\-million;
+暴動 < insurrection;
+靶機 < target\-drone;
+運行 < be\-in\-motion;
+編舞 < choreography;
+二十七 < twenty\-seven;
+以 < by\-means\-of;
+農 < agriculture;
+径 < narrow\-path;
+几 < small\-table;
+便 < convenience;
+电 < electricity;
+百 < one\-hundred;
+跣 < bare\-footed;
+贅 < unnecessary;
+功 < achievement;
+江 < large\-river;
+注 < concentrate;
+牧 < tend\-cattle;
+婚 < get\-married;
+刊 < publication;
+熟 < well\-cooked;
+饭 < cooked\-rice;
+奢 < extravagant;
+查 < investigate;
+章 < composition;
+按 < put\-hand\-on;
+蝠 < kind\-of\-bat;
+蝕 < nibble\-away;
+困 < to\-surround;
+险 < narrow\-pass;
+练 < to\-practice;
+溯 < go\-upstream;
+渉 < ford\-stream;
+败 < be\-defeated;
+纷 < in\-disorder;
+缺 < be\-short\-of;
+遭 < come\-across;
+戴 < wear\-on\-top;
+勤 < industrious;
+髄 < bone\-marrow;
+効 < efficacious;
+貌 < countenance;
+繁 < complicated;
+柳 < willow\-tree;
+凄 < bitter\-cold;
+霞 < rosy\-clouds;
+飴 < sweet\-meats;
+聪 < intelligent;
+倦 < be\-tired\-of;
+摔 < fall\-ground;
+醉 < intoxicated;
+涛 < large\-waves;
+锅 < cooking\-pot;
+仔 < small\-thing;
+會 < to\-assemble;
+拆 < to\-break\-up;
+翠 < color\-green;
+晕 < halo\-in\-sky;
+辨 < distinguish;
+葛 < edible\-bean;
+轿 < sedan\-chair;
+攫 < snatch\-away;
+鍛 < forge\-metal;
+厕 < mingle\-with;
+竿 < bamboo\-pole;
+券 < certificate;
+穉 < young\-grain;
+驳 < varicolored;
+憔 < be\-worn\-out;
+粞 < ground\-rice;
+遂 < comply\-with;
+隶 < subservient;
+缸 < earthen\-jug;
+肢 < human\-limbs;
+尴 < embarrassed;
+呐 < raise\-voice;
+颖 < rice\-tassel;
+砥 < a\-whetstone;
+孕 < be\-pregnant;
+钞 < paper\-money;
+琢 < polish\-jade;
+绽 < ripped\-seam;
+奠 < pay\-respect;
+澜 < overflowing;
+惕 < be\-cautious;
+趴 < lying\-prone;
+隋 < sui\-dynasty;
+瞄 < take\-aim\-at;
+祟 < evil\-spirit;
+嗔 < be\-angry\-at;
+奕 < in\-sequence;
+榴 < pomegranate;
+棘 < jujube\-tree;
+峙 < stand\-erect;
+砌 < stone\-steps;
+槐 < locust\-tree;
+鳞 < fish\-scales;
+炽 < burning\-hot;
+迂 < doctrinaire;
+缪 < wind\-around;
+凋 < be\-withered;
+缤 < flourishing;
+雳 < thunderclap;
+驸 < extra\-horse;
+嗷 < loud\-clamor;
+炖 < stew\-slowly;
+谏 < remonstrate;
+篆 < seal\-script;
+宦 < officialdom;
+瓮 < earthen\-jar;
+朕 < pronoun\-''i'';
+阑 < door\-screen;
+卤 < saline\-soil;
+唏 < weep\-or\-sob;
+汩 < run\-swiftly;
+榕 < banyan\-tree;
+闰 < intercalary;
+昊 < summer\-time;
+玷 < flaw\-in\-gem;
+阙 < watch\-tower;
+泌 < to\-seep\-out;
+烽 < signal\-fire;
+孵 < sit\-on\-eggs;
+椭 < oval\-shaped;
+痉 < convulsions;
+匝 < full\-circle;
+饪 < cooked\-food;
+嶙 < precipitous;
+颧 < cheek\-bones;
+镗 < boring\-tool;
+揶 < make\-fun\-of;
+炷 < candle\-wick;
+贲 < forge\-ahead;
+蚱 < grasshopper;
+痨 < consumption;
+濂 < a\-waterfall;
+汐 < night\-tides;
+筠 < bamboo\-skin;
+氤 < hanging\-fog;
+痔 < hemorrhoids;
+趿 < to\-tread\-on;
+觞 < wine\-vessel;
+挹 < to\-bale\-out;
+膑 < the\-kneecap;
+唳 < cry\-of\-bird;
+礅 < stone\-block;
+箔 < reed\-screen;
+豸 < radical\-153;
+烃 < hydrocarbon;
+砭 < stone\-probe;
+澍 < timely\-rain;
+龋 < tooth\-decay;
+缱 < attached\-to;
+奂 < be\-numerous;
+黩 < to\-dishonor;
+壅 < to\-obstruct;
+澶 < still\-water;
+餍 < be\-satiated;
+枥 < type\-of\-oak;
+桕 < tallow\-tree;
+鲢 < silver\-carp;
+趱 < go\-in\-hurry;
+妫 < family\-name;
+暾 < morning\-sun;
+荦 < brindled\-ox;
+邛 < in\-distress;
+戢 < to\-put\-away;
+榧 < type\-of\-yew;
+堇 < yellow\-loam;
+劬 < be\-diligent;
+魈 < mischevious;
+鍪 < an\-iron\-pan;
+蜣 < dung\-beetle;
+痦 < \(flat\)\-mole;
+戬 < exterminate;
+嗉 < bird''s\-crop;
+儋 < a\-small\-jar;
+蚜 < plant\-louse;
+粜 < sell\-grains;
+攮 < to\-fend\-off;
+苎 < china\-grass;
+坩 < earthenware;
+榉 < type\-of\-elm;
+玢 < porphyrites;
+绁 < to\-contract;
+潆 < tiny\-stream;
+髹 < red\-lacquer;
+觖 < to\-long\-for;
+螵 < a\-chrysalis;
+杪 < tip\-of\-twig;
+幂 < cover\-cloth;
+硗 < barren\-land;
+脞 < minced\-meat;
+轵 < end\-of\-axle;
+楗 < bar\-of\-door;
+桄 < a\-coir\-palm;
+堠 < battlements;
+俜 < to\-trust\-to;
+壓縮 < to\-compress;
+大規模 < large\-scale;
+度量衡 < measurement;
+航空術 < aeronautics;
+訪華 < visit\-china;
+認知 < acknowledge;
+叫喊 < exclamation;
+訪問者 < interviewer;
+沉重打擊 < to\-hit\-hard;
+連詞 < conjunction;
+好朋友 < good\-friend;
+四面體 < tetrahedron;
+自然而然 < involuntary;
+弊端 < malpractice;
+非核 < non\-nuclear;
+拔釘錘 < claw\-hammer;
+申命記 < deuteronomy;
+收穫 < acquisition;
+才外流 < brain\-drain;
+民族 < nationality;
+不贊一詞 < keep\-silent;
+暗井 < blind\-shaft;
+暗中 < in\-the\-dark;
+矚目 < to\-focus\-on;
+布鞋 < cloth\-shoes;
+人體器官 < human\-organ;
+埋頭 < steamed\-bun;
+創作力 < originality;
+白矮星 < white\-dwarf;
+判處 < to\-sentance;
+民族主義 < nationalism;
+刻苦 < hardworking;
+標點 < punctuation;
+白麵 < wheat\-flour;
+冒險 < take\-a\-risk;
+白鶴 < white\-crane;
+不贊成 < disapproval;
+往昔 < in\-the\-past;
+半月刊 < semimonthly;
+邊疆 < border\-area;
+讓位 < to\-abdicate;
+怪僻 < peculiarity;
+征收 < levy\-\(fine\);
+母板 < motherboard;
+需求 < requirement;
+大業 < great\-cause;
+旺季 < busy\-season;
+備用環 < backup\-ring;
+必定 < be\-bound\-to;
+半年 < half\-a\-year;
+課桌 < school\-desk;
+滴答聲 < tick\-\(tock\);
+間隔 < compartment;
+遲疑 < to\-hesitate;
+靈感 < inspiration;
+精子密度 < sperm\-count;
+溫度計 < thermograph;
+遷居移民 < immigration;
+不重要 < unimportant;
+野生動物 < wild\-animal;
+說服 < to\-persuade;
+制約 < to\-restrict;
+有影響 < influential;
+鞏固 < consolidate;
+發電廠 < power\-plant;
+聖誕老人 < santa\-claus;
+包括 < to\-comprise;
+妥善 < appropriate;
+辯証 < dialectical;
+浪漫主義 < romanticism;
+柏林牆 < berlin\-wall;
+瀉鹽 < epsom\-salts;
+不可知論 < agnosticism;
+不切實際 < unrealistic;
+典型用途 < typical\-use;
+富於想像 < imaginative;
+巡邏艇 < patrol\-boat;
+不含糊 < unambiguous;
+本土化 < to\-localize;
+即刻 < immediately;
+安全燈 < safety\-lamp;
+勘探 < exploration;
+有意思 < interesting;
+博取 < try\-to\-gain;
+窗玻璃 < window\-pane;
+放棄 < to\-renounce;
+冰蛋 < frozen\-eggs;
+郵局 < post\-office;
+雙數 < even\-number;
+蒐尋 < to\-look\-for;
+白道 < moon''s\-path;
+動態 < development;
+永久 < everlasting;
+發送 < to\-transmit;
+配備 < to\-allocate;
+新西蘭 < new\-zealand;
+比如 < for\-example;
+國事訪問 < state\-visit;
+克裡姆林宮 < the\-kremlin;
+多山 < mountainous;
+半半拉拉 < incompleted;
+電工 < electrician;
+紅色 < red\-\(color\);
+描述 < to\-describe;
+十億 < one\-billion;
+不可分離 < inseparable;
+兵蟻 < soldier\-ant;
+毀壞 < destruction;
+削減 < to\-cut\-down;
+日中 < japan\-china;
+電纜調制解調器 < cable\-modem;
+隨時 < at\-any\-time;
+一千零五十億 < 105\-billion;
+長談 < a\-long\-talk;
+補選 < by\-election;
+敗血症 < septicaemia;
+無產階級 < proletariat;
+落後 < fall\-behind;
+分佈式 < distrubuted;
+失去意識 < unconscious;
+推遲 < to\-postpone;
+百萬富翁 < millionaire;
+貴族社會 < aristocracy;
+操法 < drill\-rules;
+軍隊 < army\-troops;
+樹葉 < tree\-leaves;
+剛架 < rigid\-frame;
+談到 < to\-refer\-to;
+再者 < furthermore;
+調制 < to\-modulate;
+基石 < cornerstone;
+往事 < past\-events;
+麀 < female\-deer;
+大功 < great\-merit;
+有些人 < some\-people;
+裁軍 < disarmament;
+誡命 < commandment;
+鸏 < tropic\-bird;
+內臣 < chamberlain;
+波多黎各 < puerto\-rico;
+鴺 < the\-pelican;
+立法機關 < legislature;
+鱠 < minced\-fish;
+鬙 < matted\-hair;
+坦蕩 < magnanimous;
+不吐氣 < unaspirated;
+主要原因 < main\-reason;
+增強 < to\-increase;
+驔 < black\-horse;
+驇 < heavy\-horse;
+有經驗 < experienced;
+限於 < restrict\-at;
+閉經 < amenorrhoea;
+認出 < recognition;
+免職 < degradation;
+工程 < engineering;
+記得 < to\-remember;
+擺布 < order\-about;
+頋 < to\-care\-for;
+透明 < transparent;
+力圖 < try\-hard\-to;
+有生以來 < since\-birth;
+鞫 < interrogate;
+貝加爾湖 < lake\-baikal;
+典禮 < celebration;
+刑期 < prison\-term;
+精簡 < to\-simplify;
+和平會談 < peace\-talks;
+花茶 < scented\-tea;
+散佈 < disseminate;
+簿記 < bookkeeping;
+太平洋週邊 < pacific\-rim;
+觸怒 < provocation;
+攪和 < to\-mix\-\(up\);
+週年 < anniversary;
+絕望 < desperation;
+敗仗 < lost\-battle;
+不變價格 < fixed\-price;
+鐦 < californium;
+結束 < termination;
+無意 < inadvertant;
+鏻 < phosphonium;
+男朋友 < male\-friend;
+相比 < compared\-to;
+覆沒 < annihilated;
+白皮書 < white\-paper;
+鍐 < a\-headstall;
+眉梢 < tip\-of\-brow;
+切換 < to\-cut\-over;
+翻譯者 < interpreter;
+兩百 < two\-hundred;
+女繼承人 < inheritress;
+假設語氣 < subjunctive;
+地心吸力 < gravitation;
+醹 < strong\-wine;
+醓 < salted\-meat;
+不注意 < thoughtless;
+評價 < to\-evaluate;
+酏 < millet\-wine;
+保不住 < most\-likely;
+崩裂 < burst\-apart;
+巴哈馬 < the\-bahamas;
+激光二極管 < laser\-diode;
+發送器 < transmitter;
+加以 < in\-addition;
+按鈕 < push\-button;
+迊 < to\-go\-round;
+報應 < retribution;
+幾年 < a\-few\-years;
+盼望 < to\-hope\-for;
+隊員 < team\-member;
+行蹤 < whereabouts;
+支付 < pay\-\(money\);
+第一章 < chapter\-one;
+運貨馬車 < cargo\-wagon;
+表語 < predicative;
+輦 < a\-hand\-cart;
+註冊 < to\-register;
+附屬 < subordinate;
+連環圖 < comic\-strip;
+偽軍 < puppet\-army;
+優秀 < outstanding;
+贗 < counterfeit;
+貘 < the\-panther;
+體貼 < considerate;
+豦 < a\-wild\-boar;
+豘 < a\-small\-pig;
+執政 < be\-in\-power;
+在地下 < underground;
+第三世界 < third\-world;
+魚竿 < fishing\-rod;
+無關緊要 < indifferent;
+希望 < ro\-wish\-for;
+約會 < appointment;
+體認 < realization;
+幸好 < fortunately;
+授粉 < pollination;
+觱 < tartar\-horn;
+褵 < bridal\-veil;
+製片 < moviemaking;
+傳真機 < fax\-machine;
+機會 < opportunity;
+關押 < put\-in\-jail;
+大便乾燥 < constipated;
+裝甲車 < armored\-car;
+蠋 < caterpillar;
+不偏不倚 < even\-handed;
+蟛 < a\-land\-crab;
+灌溉 < to\-irrigate;
+通告 < to\-announce;
+蝛 < the\-sow\-bug;
+蝍 < a\-centipede;
+驕陽 < blazing\-sun;
+前任 < predecessor;
+藚 < water\-plant;
+分散注意 < to\-distract;
+藄 < edible\-fern;
+軟碟 < floppy\-disk;
+蓪 < paper\-plant;
+蓂 < lucky\-place;
+蒭 < to\-cutgrass;
+萐 < lucky\-plant;
+菢 < to\-incubate;
+獲益者 < beneficiary;
+屏門 < screen\-door;
+拜訪 < pay\-a\-visit;
+半透明 < translucent;
+艗 < bow\-of\-junk;
+退出 < to\-withdraw;
+採煤 < coal\-mining;
+第一流 < first\-class;
+平凡 < commonplace;
+謀殺案 < murder\-case;
+括號 < parenthesis;
+胔 < rotten\-meat;
+肈 < to\-commence;
+聦 < the\-hearing;
+耑 < specialized;
+羖 < a\-black\-ram;
+獎學金 < scholarship;
+罱 < fishing\-net;
+滲透 < to\-permeate;
+罠 < animal\-trap;
+罒 < radical\-122;
+偷聽 < to\-evesdrop;
+出兵 < send\-troops;
+培土 < to\-earth\-up;
+開戰 < start\-a\-war;
+分佈 < distributed;
+迷人 < fascinating;
+不動產 < real\-estate;
+糢 < rice\-snacks;
+出來 < to\-come\-out;
+信道 < signal\-path;
+啟示錄 < revelations;
+簹 < tall\-bamboo;
+簵 < fine\-bamboo;
+簰 < bamboo\-raft;
+魔法 < enchantment;
+申請 < apply\-\(for\);
+第三方 < third\-party;
+筩 < bamboo\-pipe;
+筊 < bamboo\-rope;
+筇 < bamboo\-name;
+跑車 < racing\-bike;
+笯 < a\-bird\-cage;
+表蒙子 < watch\-glass;
+擺架子 < put\-on\-airs;
+窸 < faint\-sound;
+不確定 < uncertainty;
+八年 < eight\-years;
+穵 < deep\-hollow;
+超級市場 < supermarket;
+磹 < stone\-wedge;
+碔 < \/2\-pr\-stone;
+籌款 < fundraising;
+域名 < domain\-name;
+砃 < white\-stone;
+瞵 < to\-stare\-at;
+古典派 < classicists;
+八字 < character\-8;
+相似 < to\-resemble;
+挪用 < to\-embezzle;
+可行性 < feasibility;
+眥 < eye\-sockets;
+眑 < sunken\-eyes;
+眊 < dim\-sighted;
+瘚 < to\-hiccough;
+痳 < pock\-marked;
+痭 < menorrhagia;
+痃 < indigestion;
+裝扮 < dress\-up\-as;
+城區 < city\-proper;
+溝通 < communicate;
+為了 < in\-order\-to;
+白宮 < white\-house;
+合法化 < to\-legalize;
+冠冕 < royal\-crown;
+珽 < jade\-tablet;
+像樣 < presentable;
+巧合 < coincidence;
+狢 < animal\-name;
+戰車 < war\-chariot;
+探照燈 < searchlight;
+安寧片 < meprobamate;
+白夜 < white\-night;
+是不是 < is\-or\-isn''t;
+花店 < flower\-shop;
+便覽 < brief\-guide;
+燖 < reheat\-food;
+舊版 < old\-version;
+多工器 < multiplexer;
+煟 < bright\-room;
+煏 < dry\-by\-fire;
+煆 < raging\-fire;
+因此 < that\-is\-why;
+潾 < clear\-water;
+勞動力 < labor\-force;
+語言學 < linguistics;
+潠 < to\-blow\-out;
+滷 < thick\-gravy;
+分期付款 < installment;
+瑞雪 < timely\-snow;
+渟 < not\-flowing;
+公元 < \(year\)\-a\.d\.;
+浡 < burst\-forth;
+幸運兒 < a\-lucky\-guy;
+沰 < to\-let\-drop;
+色情 < pornography;
+本質上 < essentially;
+地下水 < groundwater;
+申請書 < application;
+殰 < an\-abortion;
+白刃 < naked\-sword;
+發出 < to\-send\-out;
+教育性 < instructive;
+就職 < take\-office;
+繼承權 < inheritance;
+槢 < a\-hard\-wood;
+拔營 < strike\-camp;
+把穩 < trustworthy;
+梘 < bamboo\-tube;
+梖 < a\-palm\-tree;
+梄 < a\-soft\-wood;
+世界貿易 < world\-trade;
+舒服 < comfortable;
+昜 < to\-open\-out;
+昉 < bright\-dawn;
+旉 < to\-state\-to;
+手續 < formalities;
+按期 < on\-schedule;
+摎 < to\-strangle;
+敗家子 < spendthrift;
+踩水 < tread\-water;
+宣言 < declaration;
+莎士比亞 < shakespeare;
+局限性 < limitations;
+慉 < to\-bring\-up;
+售貨員 < salesperson;
+可尊敬 < respectable;
+偷懶 < to\-goof\-off;
+鼻音 < nasal\-sound;
+非數字 < non\-numeric;
+徻 < a\-wide\-room;
+困境 < predicament;
+爆米花 < puffed\-rice;
+三十天 < thirty\-days;
+滲濾 < percolation;
+弰 < ends\-of\-bow;
+四分之一 < one\-quarter;
+病容 < sickly\-look;
+成績 < performance;
+人間 < man''s\-world;
+端站 < end\-station;
+茅屋頂 < thatch\-roof;
+衍射 < diffraction;
+崪 < rocky\-peaks;
+回報 < \(in\)\-return;
+三十四 < thirty\-four;
+屰 < disobedient;
+屝 < straw\-shoes;
+尜 < a\-child\-toy;
+器官捐獻者 < organ\-donor;
+訊框傳送 < frame\-relay;
+性伴侶 < sex\-partner;
+嬔 < baby\-rabbit;
+或稱 < also\-called;
+乳白色 < milky\-white;
+畫插圖者 < illustrator;
+第二次世界大戰 < world\-war\-2;
+高壓 < high\-handed;
+塿 < small\-mound;
+仲裁 < arbitration;
+堊 < white\-earth;
+垝 < dilapidated;
+垔 < to\-restrain;
+值得 < to\-be\-worth;
+異常 < exceptional;
+鑽孔 < bore\-a\-hole;
+蓋然性 < probability;
+文件服務器 < file\-server;
+當局 < authorities;
+喎 < a\-wry\-mouth;
+高唱 < sing\-loudly;
+越南戰爭 < vietnam\-war;
+唹 < to\-smile\-at;
+介詞 < preposition;
+可能性 < possibility;
+咅 < to\-spit\-out;
+舞劇 < dance\-drama;
+叻 < place\-names;
+厾 < lightly\-tap;
+傑出 < illustrious;
+疆場 < battlefield;
+登山家 < mountaineer;
+信服 < to\-convince;
+匯 < a\-concourse;
+勠 < join\-forces;
+無所不在 < omnipresent;
+劼 < be\-discreet;
+脾氣 < temperament;
+不出所料 < as\-expected;
+上齒 < upper\-teeth;
+慰藉 < consolation;
+剦 < to\-castrate;
+板規 < plate\-gauge;
+凩 < wintry\-wind;
+病人 < sick\-person;
+鑒定 < to\-appraise;
+世界和平 < world\-piece;
+備件 < spare\-parts;
+哲學家 < philosopher;
+生成 < be\-produced;
+便桶 < chamber\-pot;
+傏 < to\-ward\-off;
+脫氧 < deoxidation;
+情願 < willingness;
+生態 < way\-of\-life;
+指出 < to\-indicate;
+俛 < make\-effort;
+系列片 < film\-series;
+阿富汗 < afghanistan;
+佹 < depend\-upon;
+洛杉磯 < los\-angeles;
+扁桃 < almond\-tree;
+跋扈 < domineering;
+䶪 < sharp\-teeth;
+陰涼處 < shady\-place;
+修復 < restoration;
+䵴 < black\-color;
+䵳 < light\-black;
+䵩 < dark\-yellow;
+筆心 < pencil\-lead;
+䲻 < the\-swallow;
+信息 < information;
+䱽 < the\-pomfret;
+䱺 < a\-male\-crab;
+䱒 < salted\-fish;
+轉來轉去 < rove\-around;
+不顧 < in\-spite\-of;
+䮘 < young\-horse;
+立法 < legislation;
+對方 < counterpart;
+空白 < blank\-space;
+男女 < male\-female;
+䫳 < human\-skull;
+䫰 < sparse\-hair;
+䫭 < bald\-headed;
+針鋒相對 < tit\-for\-tat;
+䫄 < better\-than;
+䪴 < the\-occiput;
+伸縮性 < flexibility;
+䪄 < great\-blaze;
+䩻 < to\-be\-chief;
+䩜 < descendants;
+閉會祈禱 < benediction;
+䨱 < spilt\-water;
+䧓 < a\-big\-mound;
+䦷 < to\-struggle;
+當做 < to\-treat\-as;
+䦘 < a\-threshold;
+閉元音 < close\-vowel;
+䥀 < to\-pull\-out;
+䤭 < to\-ornament;
+䤅 < southerwood;
+跛子 < lame\-person;
+不可估量 < inestimable;
+五萬 < 50\-thousand;
+䠝 < to\-stand\-up;
+䠍 < at\-the\-feet;
+最大化 < to\-maximize;
+䟅 < to\-go\-ahead;
+䟁 < a\-foot\-race;
+䞽 < to\-lie\-flat;
+䞨 < half\-a\-pace;
+䞄 < to\-disperse;
+䝀 < garden\-peas;
+䜰 < deep\-valley;
+保存 < to\-conserve;
+䜗 < angry\-words;
+䜆 < hasty\-words;
+䛘 < to\-think\-of;
+䚳 < do\-not\-know;
+䚲 < to\-laugh\-at;
+淘神 < troublesome;
+䙾 < to\-wait\-for;
+䙱 < a\-long\-coat;
+䙰 < new\-feather;
+䙂 < short\-pants;
+筆墨 < pen\-and\-ink;
+䗖 < the\-rainbow;
+薑餅 < gingerbread;
+第十七 < seventeenth;
+䕸 < wheat\-straw;
+溫度 < temperature;
+䔿 < lush\-growth;
+跑壘 < baserunning;
+開放系統 < open\-system;
+蜜桃 < honey\-peach;
+鑒于 < in\-light\-of;
+䒋 < air\-current;
+可驚 < astonishing;
+有限公司 < corporation;
+空間探測 < space\-probe;
+䐚 < good\-graces;
+䏶 < the\-stomach;
+䏔 < to\-eat\-meat;
+便宜 < inexpensive;
+哲學上 < philosophic;
+否有效 < inefficient;
+不迭 < cannot\-cope;
+北朝鮮 < north\-korea;
+䌪 < to\-continue;
+䌦 < green\-color;
+吉爾吉斯斯坦 < kirghizstan;
+手寫 < handwriting;
+䊭 < to\-overturn;
+䊫 < coarse\-rice;
+䊢 < thick\-fluid;
+䊓 < to\-paste\-up;
+下載 < to\-download;
+䉝 < bamboo\-ware;
+䈸 < a\-big\-chest;
+踏上 < set\-foot\-on;
+䆳 < far\-distant;
+䆘 < acupuncture;
+䆖 < a\-big\-house;
+䅄 < long\-grains;
+䄽 < common\-rice;
+䃭 < a\-stone\-box;
+環形 < ring\-shaped;
+䂱 < to\-wear\-out;
+䂓 < regulations;
+䁻 < pretty\-eyes;
+䁷 < bright\-eyes;
+䁱 < hollow\-eyed;
+佈景 < \(stage\)\-set;
+䀂 < a\-big\-basin;
+基礎問題 < basic\-issue;
+㿣 < white\-color;
+㿘 < to\-get\-sick;
+㾺 < eye\-disease;
+㾝 < to\-leak\-out;
+騷動 < disturbance;
+㾈 < hunchbacked;
+㾃 < hump\-backed;
+㽪 < paddy\-field;
+悲觀 < pessimistic;
+口香糖 < chewing\-gum;
+㼘 < of\-mountain;
+㼓 < melon\-seeds;
+西乃山 < mount\-sinai;
+㻓 < a\-fine\-jade;
+美貌 < goodlooking;
+麻藥 < anaesthetic;
+㹠 < a\-small\-big;
+邁阿密灘 < miami\-beach;
+㸠 < thick\-stick;
+小型 < small\-scale;
+㵤 < to\-overflow;
+㴘 < to\-ooze\-out;
+金屬板 < metal\-plate;
+㲰 < a\-hairy\-dog;
+㰲 < to\-blow\-off;
+㯈 < small\-trees;
+題詞 < inscription;
+㮝 < angle\-steel;
+㭴 < the\-oscines;
+㭎 < a\-tall\-tree;
+趣味 < to\-interest;
+信仰 < firm\-belief;
+㬩 < a\-tiny\-star;
+股東 < stockholder;
+鎮壓 < suppression;
+㫘 < disappeared;
+板牙 < front\-tooth;
+泳褲 < swim\-trunks;
+同質 < homogeneous;
+㩅 < to\-draw\-out;
+兩百萬 < two\-million;
+㨵 < to\-cut\-away;
+㨴 < to\-turnover;
+㨕 < to\-shoulder;
+環境 < environment;
+㧔 < to\-disturbe;
+修理廠 < repair\-shop;
+㦒 < to\-deceived;
+㤡 < to\-surprise;
+㤕 < melancholoy;
+㤁 < to\-disgrace;
+㣾 < do\-not\-care;
+㣵 < to\-run\-away;
+㣥 < to\-store\-up;
+㢓 < to\-separate;
+果汁 < fruit\-juice;
+耕畜 < farm\-animal;
+增長率 < growth\-rate;
+重返 < return\-\(to\);
+丟臉 < humiliation;
+㝴 < a\-round\-off;
+㝔 < deep\-bottom;
+我國 < our\-country;
+㜣 < a\-last\-name;
+㜎 < slave\-girls;
+㛑 < three\-women;
+㚾 < to\-have\-fun;
+玻意耳定律 < boyle''s\-law;
+㘶 < a\-hen\-roost;
+身心爽快 < refreshment;
+㘥 < to\-inveigle;
+佈局 < arrangement;
+他們都 < all\-of\-them;
+變通 < be\-flexible;
+鼻涕 < nasal\-mucus;
+㖽 < to\-call\-out;
+貸款 < \(bank\)\-loan;
+㖑 < to\-shout\-at;
+㔼 < to\-fit\-into;
+㔶 < a\-small\-cup;
+㔏 < to\-cut\-open;
+㓩 < horned\-hair;
+準備 < preparation;
+㒨 < an\-immortal;
+安康 < good\-health;
+預計 < to\-forecast;
+祭司權術 < priestcraft;
+類似點 < resemblance;
+量詞 < meaure\-word;
+雙人房 < double\-room;
+名著 < masterpiece;
+美術館 < art\-gallery;
+任意 < arbitrarily;
+安家 < settle\-down;
+饒恕 < forgiveness;
+宇宙 < outer\-space;
+瑞士 < switzerland;
+在這期間 < during\-time;
+喇叭 < loudspeaker;
+約伯記 < book\-of\-job;
+無法忍受 < intolerable;
+悲喜劇 < tragicomedy;
+駁倒 < demolish\-sb;
+半封建 < semi\-feudal;
+浴池 < public\-bath;
+反動分子 < reactionary;
+實質性 < substantive;
+變壓器 < transformer;
+使用方便 < easy\-to\-use;
+奔馳 < run\-quickly;
+現年 < current\-age;
+無法形容 < unspeakable;
+蘋果汁 < apple\-juice;
+示範 < demonstrate;
+交換 < to\-exchange;
+藥物 < medicaments;
+有同情心 < sympathetic;
+暗記兒 < secret\-mark;
+鄙陋 < superficial;
+夜鶯 < nightingale;
+餐廳 < dining\-hall;
+威脅 < to\-threaten;
+空前 < unprecedent;
+預約 < reservation;
+碰見 < to\-run\-into;
+查出 < to\-find\-out;
+半邊 < half\-of\-sth;
+暗示 < drop\-a\-hint;
+交往 < association;
+配送者 < distributor;
+書法 < calligraphy;
+金銀花 < honeysuckle;
+元老院 < upper\-house;
+卓越 < distinction;
+股價 < stock\-price;
+九月 < ninth\-month;
+主權 < sovereignty;
+可想像 < conceivable;
+多餘 < superfluous;
+聽取 < hear\-\(news\);
+感性 < sensibility;
+商人 < businessman;
+禁止 < to\-prohibit;
+秉承 < take\-orders;
+售價 < to\-sell\-for;
+嬌媚 < flirtatious;
+頁碼 < page\-number;
+交媾 < to\-have\-sex;
+上流 < upper\-class;
+信用卡 < credit\-card;
+霸道 < overbearing;
+波瀾 < great\-waves;
+不止 < incessantly;
+爭議 < controversy;
+中東 < middle\-east;
+女管家 < housekeeper;
+一千四百億 < 140\-billion;
+丹方 < folk\-remedy;
+重疊 < overlapping;
+中日 < china\-japan;
+自由選擇權 < free\-agency;
+喜歡吵架 < quarrelsome;
+有害的 < destructive;
+重現 < to\-reappear;
+模糊邏輯 < fuzzy\-logic;
+靶船 < target\-ship;
+千萬 < ten\-million;
+一月 < first\-month;
+犯病 < to\-fall\-ill;
+同步 < synchronous;
+哺乳 < breast\-feed;
+主張 < to\-advocate;
+婚期 < wedding\-day;
+暗殺 < assassinate;
+主席 < chairperson;
+危篤 < deathly\-ill;
+互動 < interactive;
+天然氣 < natural\-gas;
+供血者 < blood\-donor;
+中年 < middle\-aged;
+營養品 < nourishment;
+貝丘 < shell\-mound;
+意向 < disposition;
+適應性 < suitability;
+沈澱 < precipitate;
+天文台 < observatory;
+鑿石場 < rock\-quarry;
+就﹍而言 < considering;
+三年 < three\-years;
+𡽱 < a\-high\-hill;
+上層 < upper\-layer;
+壯觀 < spectacular;
+有選舉權 < constituent;
+政變 < coup\-d''etat;
+神學 < theological;
+測驗結果 < test\-result;
+合影 < joint\-photo;
+如畫 < picturesque;
+不堪 < cannot\-bear;
+終點 < destination;
+爆竹 < firecracker;
+管家職務 < stewardship;
+小汽車 < compact\-car;
+特權 < prerogative;
+螺絲刀 < screwdriver;
+狗交媾般 < doggy\-style;
+分離 < to\-seperate;
+副作用 < side\-effect;
+禁令 < prohibition;
+不免 < unavoidable;
+誓約 < honor\-bound;
+證書 < credentials;
+沈思 < contemplate;
+解釋 < explanation;
+礁島 < reef\-island;
+榮獲諾貝爾獎 < nobel\-prize;
+二十億 < two\-billion;
+迎風 < in\-the\-wind;
+移植性 < portability;
+如此 < in\-this\-way;
+悠久 < established;
+專有名詞 < proper\-noun;
+上下 < up\-and\-down;
+二十五 < twenty\-five;
+朋比為奸 < to\-conspire;
+搬弄是非 < sow\-discord;
+的 < possessive;
+込 < crowd\-into;
+辻 < crossroads;
+能 < to\-be\-able;
+都 < metropolis;
+文 < literature;
+轍 < wagon\-ruts;
+輩 < generation;
+眩 < to\-confuse;
+眠 < close\-eyes;
+輝 < brightness;
+弐 < number\-two;
+者 < that\-which;
+业 < profession;
+府 < prefecture;
+政 < government;
+产 < give\-birth;
+场 < open\-space;
+比 < to\-compare;
+疲 < feel\-tired;
+画 < a\-painting;
+望 < to\-look\-at;
+賺 < make\-money;
+六 < number\-six;
+屡 < frequently;
+尤 < especially;
+專 < monopolize;
+基 < foundation;
+双 < set\-of\-two;
+孫 < grandchild;
+嬪 < court\-lady;
+离 < rare\-beast;
+媒 < go\-between;
+誌 < write\-down;
+誇 < exaggerate;
+响 < make\-sound;
+婿 < son\-in\-law;
+爭 < to\-dispute;
+器 < receptacle;
+營 < encampment;
+妙 < mysterious;
+胡 < recklessly;
+妓 < prostitute;
+襦 < short\-coat;
+壱 < number\-one;
+郭 < outer\-part;
+讨 < to\-discuss;
+滅 < extinguish;
+虜 < to\-capture;
+积 < accumulate;
+菜 < vegetables;
+嗣 < to\-connect;
+嗜 < be\-fond\-of;
+介 < forerunner;
+索 < large\-rope;
+丁 < male\-adult;
+遍 < everywhere;
+蒔 < transplant;
+懂 < understand;
+释 < interprete;
+纵 < indulge\-in;
+歴 < take\-place;
+仁 < humaneness;
+檀 < sandalwood;
+削 < scrape\-off;
+刑 < punishment;
+岂 < how\?\-what\?;
+隆 < prosperous;
+刃 < edged\-tool;
+析 < split\-wood;
+腸 < intestines;
+楓 < maple\-tree;
+餅 < rice\-cakes;
+傍 < by\-side\-of;
+栓 < wooden\-peg;
+凯 < triumphant;
+恭 < respectful;
+祸 < misfortune;
+禅 < meditation;
+柯 < axe\-handle;
+捐 < contribute;
+踪 < footprints;
+屁 < break\-wind;
+谊 < friendship;
+储 < save\-money;
+雁 < wild\-goose;
+摊 < spread\-out;
+吨 < metric\-ton;
+乍 < first\-time;
+陀 < steep\-bank;
+綿 < cotton\-wad;
+綱 < heavy\-rope;
+抑 < press\-down;
+彬 < cultivated;
+撮 < little\-bit;
+粥 < rice\-gruel;
+蛮 < barbarians;
+箸 < chopsticks;
+筵 < bamboo\-mat;
+艇 < small\-boat;
+捌 < break\-open;
+笠 < bamboo\-hat;
+庞 < disorderly;
+竝 < to\-combine;
+扉 < door\-panel;
+坝 < embankment;
+憧 < irresolute;
+甩 < throw\-away;
+酌 < serve\-wine;
+磐 < large\-rock;
+辅 < cheek\-bone;
+捡 < to\-pick\-up;
+蹈 < stamp\-feet;
+晒 < dry\-in\-sun;
+歼 < annihilate;
+涩 < astringent;
+霎 < light\-rain;
+绸 < silk\-cloth;
+眯 < be\-blinded;
+寅 < to\-respect;
+眶 < eye\-socket;
+碟 < small\-dish;
+蕴 < to\-collect;
+迭 < repeatedly;
+旭 < rising\-sun;
+悍 < courageous;
+枢 < door\-hinge;
+跋 < go\-by\-foot;
+圪 < \(phonetic\);
+搔 < to\-scratch;
+嚎 < cry\-loudly;
+汛 < high\-water;
+脯 < dried\-meat;
+嗒 < to\-despair;
+墟 < high\-mound;
+馋 < gluttonous;
+蹭 < to\-shuffle;
+澈 < thoroughly;
+缭 < wind\-round;
+喳 < whispering;
+弧 < wooden\-bow;
+惆 < distressed;
+撵 < drive\-away;
+轶 < rush\-forth;
+窿 < mine\-shaft;
+樵 < woodcutter;
+犀 < rhinoceros;
+绚 < variegated;
+藕 < lotus\-root;
+摞 < to\-pile\-up;
+滤 < strain\-out;
+缈 < indistinct;
+肪 < animal\-fat;
+甄 < to\-examine;
+铛 < frying\-pan;
+嫡 < legal\-wife;
+磷 < phosphorus;
+翡 < kingfisher;
+霭 < cloudy\-sky;
+舫 < fancy\-boat;
+纨 < white\-silk;
+榷 < footbridge;
+蔗 < sugar\-cane;
+彗 < broomstick;
+喟 < heave\-sigh;
+喑 < to\-be\-dumb;
+鱿 < cuttlefish;
+倜 < raise\-high;
+滂 < torrential;
+忻 < delightful;
+燧 < flintstone;
+稔 < ripe\-grain;
+颉 < fly\-upward;
+舸 < large\-boat;
+眙 < to\-gaze\-at;
+瘀 < a\-hematoma;
+夯 < heavy\-load;
+鲠 < fish\-bones;
+茏 < tall\-grass;
+茯 < china\-root;
+鲧 < giant\-fish;
+逦 < meandering;
+骜 < wild\-horse;
+欹 < fierce\-dog;
+缛 < decorative;
+苕 < rush\-plant;
+顸 < large\-face;
+缦 < plain\-silk;
+帙 < book\-cover;
+鳃 < fish\-gills;
+醴 < sweet\-wine;
+辊 < turn\-round;
+岘 < steep\-hill;
+倬 < noticeable;
+鲞 < dried\-fish;
+缁 < black\-silk;
+箧 < rattan\-box;
+墁 < to\-plaster;
+罴 < brown\-bear;
+爰 < lead\-on\-to;
+杲 < bright\-sun;
+癔 < hysterical;
+莜 < avena\-nuda;
+埙 < instrument;
+獾 < the\-badger;
+郫 < place\-name;
+蛏 < razor\-clam;
+帑 < a\-treasury;
+揠 < to\-pull\-up;
+趑 < can''t\-move;
+阍 < gatekeeper;
+掊 < to\-extract;
+镝 < dysprosium;
+砗 < giant\-clam;
+嫫 < ugly\-woman;
+跗 < the\-instep;
+浼 < to\-request;
+嗌 < the\-throat;
+汆 < to\-parboil;
+刭 < cut\-throat;
+髂 < the\-pelvis;
+钼 < molybdenum;
+憝 < to\-dislike;
+炅 < brilliance;
+隳 < to\-destroy;
+茛 < ranunculus;
+糇 < dried\-rice;
+钆 < gadolinium;
+澌 < to\-exhaust;
+庀 < to\-prepare;
+犴 < a\-wild\-dog;
+埏 < a\-boundary;
+谮 < to\-slander;
+縮短 < to\-curtail;
+改組 < reorganize;
+沒問題 < no\-problem;
+第五類 < category\-5;
+擁護 < to\-endorse;
+進行 < to\-advance;
+奔波 < rush\-about;
+後母 < stepmother;
+散發 < distribute;
+失火 < catch\-fire;
+誕生 < to\-be\-born;
+多爾 < \(bob\)\-dole;
+巴枯寧主義 < bakuninism;
+彼此 < each\-other;
+預先 < beforehand;
+關門 < close\-down;
+違背 < to\-violate;
+冰染染料 < azoic\-dyes;
+統計 < statistics;
+函購 < mail\-order;
+壁立 < \(of\-cliffs;
+春季 < springtime;
+頒佈 < promulgate;
+每次 < every\-time;
+編程 < to\-program;
+分詞 < participle;
+後期 < late\-stage;
+效用 < usefulness;
+糧食 < foodstuffs;
+荒野 < wilderness;
+撒謊 < tell\-a\-lie;
+燃燒 < combustion;
+弄直 < straighten;
+遷移 < to\-migrate;
+非官方 < unofficial;
+大氣 < atmosphere;
+認為 < to\-believe;
+降落 < to\-descend;
+前者 < the\-former;
+效率 < efficiency;
+靶心 < bull''s\-eye;
+國民黨 < kuomintang;
+勃然 < agitatedly;
+講師 < instructor;
+取代 < substitute;
+新教 < protestant;
+多次 < many\-times;
+奇數 < odd\-number;
+必將 < inevitably;
+陰精 < sex\-fluids;
+白色體 < leucoplast;
+妖嬈 < enchanting;
+不耐煩 < impatience;
+百分率 < percentage;
+繼承 < to\-inherit;
+令牌環 < token\-ring;
+操縱 < to\-operate;
+全面 < all\-around;
+四個小時 < four\-hours;
+厘升 < centiliter;
+調整 < adjustment;
+荒謬 < ridiculous;
+自白書 < confession;
+展覽會 < exhibition;
+白頭 < hoary\-head;
+天文學家 < astronomer;
+決不 < not\-at\-all;
+說明 < to\-explain;
+眼花繚亂 < be\-dazzled;
+魯佛爾宮 < the\-louvre;
+出色 < remarkable;
+不堪忍受 < unbearable;
+高速率 < high\-speed;
+免除 < to\-prevent;
+妥協 < compromise;
+巨輪 < large\-ship;
+照片 < photograph;
+附筆 < postscript;
+親自 < personally;
+說不出話來 < speechless;
+娛樂中心 < recreation;
+改正 < to\-correct;
+大城市 < major\-city;
+自由貿易 < free\-trade;
+半圓 < semicircle;
+爭奪 < fight\-over;
+短期 < short\-term;
+每年 < every\-year;
+喬治敦 < georgetown;
+三分之二 < two\-thirds;
+傳道者 < missionary;
+敵手 < antagonist;
+印像 < impression;
+不可能 < impossible;
+精通 < proficient;
+很大 < tremendous;
+白酒 < spirit\-usu;
+錄音帶 < audio\-tape;
+草莓 < strawberry;
+錫安山 < mount\-zion;
+塔吉克斯坦 < tajikistan;
+報章 < newspapers;
+多年 < many\-years;
+語彙 < vocabulary;
+早先 < previously;
+總統任期 < presidency;
+牌價 < list\-price;
+巫術 < witchcraft;
+過渡 < transition;
+探險 < to\-explore;
+大學 < university;
+無理 < irrational;
+半價 < half\-price;
+區別 < difference;
+關聯 < be\-related;
+硬磁盤 < hard\-drive;
+地震 < earthquake;
+觀眾 < spectators;
+排隊 < to\-line\-up;
+攪擾 < to\-disturb;
+不可逾越 < impassable;
+數學 < mathematic;
+熱心 < enthusiasm;
+加利福尼亞 < california;
+歷史上 < historical;
+記帳員 < bookkeeper;
+電子 < electronic;
+白話 < vernacular;
+炸糕 < fried\-cake;
+散射 < scattering;
+蓋世 < unrivelled;
+編排 < to\-arrange;
+捕魚 < catch\-fish;
+允諾 < to\-promise;
+調和 < harmonious;
+後來 < afterwards;
+使失望 < disappoint;
+大喜 < exultation;
+設施 < facilities;
+方便 < convenient;
+此後 < after\-this;
+座標 < coordinate;
+經歷 < experience;
+樂觀 < optimistic;
+太古 < immemorial;
+離婚 < to\-divorce;
+教堂墓地 < churchyard;
+龢 < in\-harmony;
+燈塔 < lighthouse;
+出版 < to\-publish;
+兵船 < man\-of\-war;
+行政長官 < magistrate;
+鼧 < the\-marmot;
+鼄 < the\-spider;
+黹 < embroidery;
+黲 < grey\-black;
+黤 < blue\-black;
+傷風 < catch\-cold;
+放射 < to\-radiate;
+比例 < proportion;
+鸺 < horned\-owl;
+隨後 < soon\-after;
+前景 < foreground;
+遷延 < long\-delay;
+補語 < complement;
+鵒 < mynah\-bird;
+鴷 < woodpecker;
+加密 < to\-encrypt;
+整合 < to\-conform;
+承包人 < contractor;
+違抗 < to\-disobey;
+監督 < to\-control;
+鳲 < turtledove;
+文具 < stationery;
+每人 < per\-person;
+物質上 < materially;
+鲰 < small\-fish;
+防水 < waterproof;
+鱇 < anglerfish;
+貴族論者 < aristocrat;
+半公開 < semi\-overt;
+使免除 < get\-rid\-of;
+更衣室 < changeroom;
+鮁 < the\-bonito;
+退步 < degenerate;
+適度 < moderately;
+魛 < the\-mullet;
+遠征 < expedition;
+鬨 < boisterous;
+鬜 < to\-go\-bald;
+白臉 < white\-face;
+總共 < altogether;
+髣 < similar\-to;
+髁 < thigh\-bone;
+解析 < to\-analyze;
+騗 < to\-swindle;
+騋 < tall\-horse;
+騉 < fine\-horse;
+駰 < grey\-horse;
+馹 < post\-horse;
+試圖 < to\-attempt;
+艦載 < ship\-based;
+知名 < well\-known;
+多事 < meddlesome;
+冰球 < ice\-hockey;
+解放 < liberation;
+鞡 < leg\-warmer;
+靝 < the\-heaven;
+偽頂 < false\-roof;
+高階 < high\-level;
+捏造 < to\-make\-up;
+隮 < ti\-rise\-up;
+陻 < small\-hill;
+新聞記者 < journalist;
+擁抱 < to\-embrace;
+零下 < below\-zero;
+闟 < peacefully;
+鞭闢入裡 < penetrated;
+超媒體 < hypermedia;
+镚 < small\-coin;
+锬 < long\-spear;
+不明確 < indefinite;
+钷 < promethium;
+放出 < to\-let\-off;
+鐶 < metal\-ring;
+鐚 < soft\-steel;
+公石 < hectoliter;
+鐒 < lawrencium;
+鐀 < a\-cupboard;
+不景氣 < depression;
+他們自己 < themselves;
+資本家 < capitalist;
+鎪 < to\-engrave;
+鎛 < large\-bell;
+報數 < number\-off;
+鍀 < technetium;
+收入 < to\-take\-in;
+詞典 < dictionary;
+設在 < located\-at;
+限度 < limitation;
+裱糊 < wall\-paper;
+鈊 < cadolinium;
+醡 < wine\-press;
+醝 < white\-wine;
+檢查 < inspection;
+酅 < raise\-feet;
+阿塞拜疆 < azerbaijan;
+瀆職 < wrongdoing;
+庇廕 < \(of\-a\-tree;
+二手貨 < secondhand;
+陰天 < cloudy\-day;
+終於 < eventually;
+訂婚 < engagement;
+陸基 < land\-based;
+邏輯炸彈 < logic\-bomb;
+廚司 < cook\,\-chef;
+傳說 < it\-is\-said;
+制定 < to\-draw\-up;
+易接近 < accessible;
+逬 < to\-scatter;
+速射 < rapid\-fire;
+遺傳 < hereditary;
+舉辦 < to\-conduct;
+利害 < formidable;
+躩 < take\-quick;
+入獄 < go\-to\-jail;
+米粉 < rice\-flour;
+圖解說明 < illustrate;
+不屈不撓 < unyielding;
+踧 < uneasiness;
+踜 < to\-stumble;
+踖 < trample\-on;
+農村 < rural\-area;
+想像力 < conception;
+跐 < to\-trample;
+副刊 < supplement;
+有決心 < determined;
+橄欖樹 < olive\-tree;
+操場 < playground;
+基於 < because\-of;
+衍變 < to\-develop;
+全然 < completely;
+大腦死亡 < brain\-dead;
+團聚 < to\-reunite;
+豀 < to\-quarrel;
+爭論點 < contention;
+白狐 < arctic\-fox;
+擁塞 < congestion;
+討厭 < disgusting;
+謪 < to\-consult;
+白熾 < white\-heat;
+複雜性 < complexity;
+白熊 < polar\-bear;
+白煤 < anthracite;
+倚靠 < to\-lean\-on;
+幼女 < young\-girl;
+觀察 < to\-observe;
+使用者中介 < user\-agent;
+兵法 < art\-of\-war;
+當選 < be\-elected;
+覸 < steal\-look;
+監控 < to\-monitor;
+結局 < conclusion;
+裪 < the\-sleeve;
+欠佳 < suboptimal;
+週到 < thoughtful;
+規律 < discipline;
+蟫 < silverfish;
+蟣 < louse\-eggs;
+管轄 < administer;
+蟁 < a\-mosquito;
+胡思亂想 < imaginings;
+奶牛場 < dairy\-farm;
+樹樁 < tree\-stump;
+襯托 < to\-set\-off;
+蛜 < wood\-louse;
+操典 < drill\-book;
+跑馬 < horse\-race;
+薧 < dried\-food;
+檢察 < to\-inspect;
+蕡 < hemp\-seeds;
+巨星 < giant\-star;
+字節數 < byte\-count;
+蓷 < motherwort;
+附加 < additional;
+蒽 < anthracene;
+蒦 < to\-measure;
+蒖 < plant\-name;
+一切事物 < everything;
+葯 < orris\-root;
+歌羅西書 < colossians;
+相對 < relatively;
+無價 < invaluable;
+搏斗 < to\-wrestle;
+荵 < polemonium;
+出生地 < birthplace;
+不由自主 < can''t\-help;
+拜託 < request\-sb;
+排球 < volleyball;
+店主 < shop\-owner;
+不下于 < as\-many\-as;
+瓶頸 < bottleneck;
+幫助 < assistance;
+脪 < erysipelas;
+脗 < coinciding;
+幫凶 < accomplice;
+公撮 < milliliter;
+肦 < large\-head;
+籃球 < basketball;
+抱負 < aspiration;
+曼徹斯特 < manchester;
+伽馬射線 < gamma\-rays;
+大媒體 < macromedia;
+算術 < arithmetic;
+推測 < conjecture;
+要塞 < stronghold;
+白旗 < white\-flag;
+滿足 < to\-satisfy;
+驅逐 < banishment;
+極為龐大 < monumental;
+繐 < fine\-cloth;
+備忘錄 < memorandum;
+縇 < decoration;
+表示 < to\-express;
+挨個兒 < one\-by\-one;
+農園 < plantation;
+兄弟會 < fraternity;
+留聲機 < gramophone;
+絺 < fine\-linen;
+有利可圖 < profitable;
+絛 < silk\-braid;
+絖 < fine\-silks;
+絓 < obstructed;
+投資 < investment;
+粻 < provisions;
+無所不能 < omnipotent;
+看到 < see\-\(that\);
+提昇 < to\-promote;
+哈薩克斯坦 < kazakhstan;
+簥 < large\-pipe;
+分離主義 < separatism;
+兌換 < to\-convert;
+世界銀行 < world\-bank;
+黑莓子 < blackberry;
+篋 < ratton\-box;
+箠 < horse\-whip;
+箚 < brief\-note;
+公引 < hectometer;
+窰 < brick\-kiln;
+專門 < specialist;
+穭 < wild\-grain;
+看來 < apparently;
+臉色 < complexion;
+草叢 < underbrush;
+兼容 < compatible;
+在下面 < underneath;
+祅 < calamities;
+不變化 < invariably;
+軍港 < naval\-port;
+按立 < ordination;
+生計 < livelihood;
+磑 < stone\-mill;
+掌櫃 < shopkeeper;
+表現 < expression;
+兩岸 < bilaterial;
+硃 < a\-red\-mole;
+共存 < to\-coexist;
+睟 < clear\-eyed;
+囚犯 < a\-prisoner;
+偉績 < great\-acts;
+衍生 < derviative;
+冰刀 < ice\-skates;
+接收 < to\-receive;
+技術 < technology;
+疕 < head\-sores;
+畓 < rice\-field;
+畁 < to\-give\-to;
+宿題 < assignment;
+陌生人 < a\-stranger;
+玔 < green\-jade;
+魚排 < fish\-steak;
+無所不知 < omniscient;
+指甲 < fingernail;
+開會祈禱 < invocation;
+學齡 < school\-age;
+犛 < a\-black\-ox;
+不適當 < inadequate;
+捨棄 < to\-give\-up;
+電視臺 < tv\-station;
+牏 < privy\-hole;
+爫 < radical\-87;
+使醉 < intoxicate;
+拘禁 < constraint;
+熅 < smooth\-out;
+國會 < parliament;
+領導能力 < leadership;
+超越 < to\-surpass;
+灺 < candle\-end;
+灒 < to\-spatter;
+推廣 < popularize;
+主力艦 < battleship;
+濙 < to\-revolve;
+濆 < river\-bank;
+佣金 < commission;
+白喉 < diphtheria;
+授意 < to\-inspire;
+公分 < centimeter;
+筆者 < the\-author;
+泆 < licentious;
+保育 < child\-care;
+白區 < white\-area;
+揹債 < be\-in\-debt;
+漫畫 < caricature;
+行不通 < won''t\-work;
+停火 < cease\-fire;
+競爭者 < competitor;
+良心 < conscience;
+櫾 < the\-pomelo;
+單調 < monotonous;
+檼 < ridge\-pole;
+表明 < make\-known;
+有系統 < systematic;
+沒人住 < unoccupied;
+榼 < wine\-glass;
+榦 < tree\-trunk;
+動物學 < zoological;
+椵 < pompelmous;
+椳 < the\-pivots;
+模仿 < to\-imitate;
+意見不合 < dissension;
+盧森堡 < luxembourg;
+發佈 < to\-release;
+第七十 < seventieth;
+栛 < the\-lichee;
+栘 < fruit\-tree;
+條約 < treatypact;
+導航 < navigation;
+排外 < xenophobic;
+導致 < to\-lead\-to;
+展示 < to\-open\-up;
+冰凝器 < cryophorus;
+尋舋 < to\-provoke;
+杢 < woodworker;
+先例 < antecedent;
+賓館 < guesthouse;
+樓下 < downstairs;
+斢 < to\-plunder;
+打結 < tie\-a\-knot;
+孟加拉國 < bangladesh;
+臆測 < assumption;
+心理學 < psychology;
+擪 < to\-tuck\-in;
+撱 < to\-shorten;
+氣喘喘 < breathless;
+拔河 < tug\-of\-war;
+第一例 < first\-case;
+生產 < to\-produce;
+補償 < compensate;
+掱 < pickpocket;
+掎 < drag\-aside;
+人體 < human\-body;
+胞衣 < afterbirth;
+挖掘 < excavation;
+四年 < four\-years;
+百分之九十 < 90\-percent;
+扡 < drag\-along;
+餐館 < restaurant;
+聖靈 < holy\-ghost;
+憸 < to\-flatter;
+指控 < accusation;
+憍 < be\-haughty;
+憀 < to\-rely\-on;
+引人注意 < attractive;
+手稿 < manuscript;
+抹油 < to\-annoint;
+愓 < profligate;
+表尺 < rear\-sight;
+惏 < avaricious;
+摩天摟 < skyscraper;
+畢業 < graduation;
+恛 < disordered;
+固執 < persistent;
+怲 < be\-anxious;
+彿 < resembling;
+查詢 < to\-inquire;
+弇 < cover\-over;
+廀 < to\-conceal;
+忘恩負義 < ungrateful;
+疑慮 < hesitation;
+喉舌 < mouthpiece;
+聯通 < connection;
+得不到 < cannot\-get;
+駐紮 < to\-station;
+簽出 < to\-log\-off;
+屄 < the\-vagina;
+重要性 < importance;
+餅鐺 < baking\-pan;
+宼 < tyrannical;
+技術員 < technician;
+鎗管 < gun\-barrel;
+媟 < lust\-after;
+鐵板 < iron\-panel;
+鏈環 < chain\-link;
+相同名字 < like\-named;
+竭盡 < exhaustion;
+軍人 < serviceman;
+使人信服 < convincing;
+老頭 < old\-fellow;
+周恩來 < zhou\-enlai;
+現象 < appearance;
+鎮痛 < analgesiac;
+堃 < compliance;
+有興趣 < interested;
+自尊 < self\-pride;
+定義 < definition;
+圦 < water\-gate;
+囌 < loquacious;
+嚲 < read\-aloud;
+不經意 < carelessly;
+競爭 < to\-compete;
+打字機 < typewriter;
+唽 < to\-twitter;
+實現 < to\-achieve;
+傷亡 < casualties;
+呴 < breathe\-on;
+倍增器 < multiplier;
+業余 < spare\-time;
+金屬線 < metal\-wire;
+行列 < procession;
+卝 < hair\-style;
+病假 < sick\-leave;
+期限 < time\-limit;
+劏 < to\-butcher;
+電子空間 < cyberspace;
+冘 < to\-move\-on;
+識別號 < identifier;
+把戲 < acrobatics;
+生有權 < birthright;
+偭 < transgress;
+偝 < not\-facing;
+消費 < to\-consume;
+持卡人 < cardholder;
+行人 < pedestrian;
+倀 < bewildered;
+毛澤東 < mao\-zedong;
+書面 < in\-writing;
+六十五 < sixty\-five;
+伷 < descendent;
+多媒體 < multimedia;
+節制 < temperance;
+抵抗力 < resistance;
+腐敗 < corruption;
+䶫 < fine\-teeth;
+䶉 < guinea\-pig;
+䵪 < pure\-black;
+䵝 < dark\-black;
+獸醫 < veterinary;
+微不足道 < negligible;
+做出 < to\-put\-out;
+作為 < accomplish;
+䳕 < the\-pigeon;
+䳌 < the\-cuckoo;
+折射 < refraction;
+䱝 < black\-carp;
+䱄 < a\-flatfish;
+喉炎 < laryngitis;
+䰬 < wild\-ghost;
+信心 < confidence;
+䰄 < short\-hair;
+䯔 < to\-incline;
+䯌 < the\-sacrum;
+珍藏 < collection;
+大主教 < archbishop;
+䮍 < curling\-up;
+䭸 < a\-stallion;
+試算表 < speadsheet;
+䬷 < well\-feed\.;
+聖職 < priesthood;
+䫥 < a\-wry\-neck;
+達賴喇嘛 < dalai\-lama;
+䪺 < teethridge;
+䪠 < pulverized;
+錶盤 < dial\-plate;
+䩱 < a\-scabbard;
+桃樹 < peach\-tree;
+白口鐵 < white\-iron;
+䩁 < thin\-hairs;
+單模 < singlemode;
+䨽 < to\-resolve;
+䨩 < the\-spirit;
+不揣冒昧 < venture\-to;
+䧿 < the\-magpie;
+䧣 < to\-stop\-up;
+想象 < to\-imagine;
+䦯 < very\-dense;
+下降 < to\-decline;
+䦍 < to\-include;
+䤾 < to\-contain;
+䤽 < farm\-tools;
+層壓 < lamination;
+第十八 < eighteenth;
+周速 < cycle\-time;
+暴風 < storm\-wind;
+實驗室 < laboratory;
+䡧 < a\-carriage;
+䡚 < implements;
+屬地 < dependency;
+䡎 < a\-windlass;
+䠸 < obsequious;
+䠶 < to\-project;
+䠩 < to\-urinate;
+䠟 < to\-trip\-up;
+漲價 < appreciate;
+䠘 < one\-legged;
+聖經 < holy\-bible;
+仿真 < to\-emulate;
+省略符號 < apostrophe;
+不對碴兒 < not\-proper;
+介紹 < to\-present;
+䟙 < to\-stagger;
+䟄 < in\-a\-hurry;
+䝿 < honourabel;
+䝷 < securities;
+䝱 < to\-trouble;
+䜙 < not\-clever;
+䜋 < to\-suspend;
+缺點 < weak\-point;
+䛲 < to\-deceive;
+䛦 < litigation;
+䛄 < to\-console;
+本行 < one''s\-line;
+滲坑 < sewage\-pit;
+競技 < tournament;
+第十九 < nineteenth;
+䖳 < jelly\-fish;
+鐵匠 < blacksmith;
+任用 < to\-appoint;
+板紙 < paperboard;
+第十三 < thirteenth;
+䕡 < compositae;
+機關車 < locomotive;
+保潔箱 < litter\-bin;
+䔘 < fish\-paste;
+老年人 < old\-people;
+䓵 < to\-blossom;
+波長 < wavelength;
+䓤 < vegetation;
+專心 < absorption;
+䓆 < to\-cut\-the;
+䒢 < sweet\-flag;
+發聲法 < intonation;
+䑭 < war\-vessel;
+䑍 < to\-swallow;
+䐢 < to\-wrinkle;
+䏭 < the\-cheeks;
+䏌 < to\-vibrate;
+䎟 < to\-fawn\-on;
+個別 < individual;
+會計 < accountant;
+䍵 < young\-goat;
+䍞 < a\-drag\-net;
+䍗 < to\-hang\-up;
+䍔 < a\-full\-net;
+意想不到 < unexpected;
+流血 < shed\-blood;
+肉片 < meat\-slice;
+䋱 < a\-wild\-yak;
+冰上運動 < ice\-sports;
+公開討論會 < open\-forum;
+䊩 < rice\-gravy;
+溫室 < greenhouse;
+美乃滋醬 < mayonnaise;
+不平凡 < marvellous;
+抑制 < to\-inhibit;
+䇎 < to\-startle;
+作料 < condiments;
+䇇 < the\-people;
+䆋 < the\-autumn;
+䅔 < dead\-crops;
+崑崙山 < mt\.\-kunlun;
+便壺 < bed\-urinal;
+䄟 < to\-worship;
+使怒 < exasperate;
+依屬 < dependence;
+䁞 < a\-province;
+䁁 < strabismus;
+等到 < wait\-until;
+小姐 < young\-lady;
+代表團 < delegation;
+㽨 < fragmented;
+㽣 < a\-frontier;
+㽘 < borderland;
+桌布 < tablecloth;
+㼹 < eartenware;
+背景 < background;
+不變 < unchanging;
+一貫 < consistent;
+㺳 < black\-mica;
+㺅 < the\-monkey;
+批准 < to\-approve;
+㸨 < a\-big\-bull;
+㸌 < to\-twinkle;
+㷷 < thick\-soup;
+㶭 < almost\-dry;
+㶜 < deep\-water;
+科系 < department;
+㵀 < water\-flow;
+愁緒 < melancholy;
+神話 < fairy\-tale;
+住所 < habitation;
+影像檔 < image\-file;
+㲯 < long\-hairy;
+顛覆 < subversion;
+㲌 < dog''s\-hair;
+㲉 < egg\-shells;
+㱦 < to\-discard;
+㱜 < pestilence;
+案子 < long\-table;
+㯇 < a\-stockade;
+居住者 < inhabitant;
+㬱 < to\-replace;
+㬪 < to\-fold\-up;
+㫤 < a\-long\-day;
+㪌 < to\-lead\-on;
+㩹 < to\-pile\-on;
+㩞 < to\-back\-up;
+㨯 < to\-enlarge;
+㨮 < to\-lift\-up;
+淘汰 < to\-die\-out;
+肥料 < fertilizer;
+㦂 < constantly;
+㥶 < to\-fill\-up;
+㥣 < to\-benefit;
+㤷 < to\-debauch;
+㤐 < disharmony;
+狡辯 < to\-quibble;
+㣽 < to\-forgive;
+㣅 < bow\-string;
+㣀 < to\-rebound;
+㢭 < a\-bow\-case;
+㢚 < a\-corridor;
+㢏 < a\-cesspool;
+㡥 < to\-curl\-up;
+暴行 < savage\-act;
+四百億 < 40\-billion;
+實在 < in\-reality;
+艾滋病病毒 < aids\-virus;
+㞠 < male\-organ;
+陸軍中尉 < lieutenant;
+㞎 < body\-waste;
+㝯 < to\-sojourn;
+㚠 < full\-grown;
+㙺 < cross\-road;
+超升 < exaltation;
+叛軍 < rebel\-army;
+㘧 < precedence;
+獸穴 < animal\-den;
+㗬 < thick\-lips;
+㗫 < to\-whisper;
+彪形大漢 < burly\-chap;
+警鐘 < alarm\-bell;
+㖆 < to\-condemn;
+胖子 < fat\-person;
+㕍 < to\-heap\-up;
+㕆 < fine\-stone;
+㔷 < to\-secrete;
+㔘 < to\-degrade;
+㔓 < to\-stammer;
+㔌 < to\-cut\-off;
+㓺 < castration;
+存放 < to\-deposit;
+餓死 < starvation;
+㒷 < to\-prosper;
+㐤 < to\-implore;
+萬事達卡 < mastercard;
+併吞 < swallow\-up;
+學徒 < apprentice;
+板樁 < sheet\-pile;
+否決權 < veto\-power;
+成分 < ingredient;
+崇拜者 < worshipper;
+悔罪 < conviction;
+能力 < capability;
+戲劇化 < theatrical;
+必須 < to\-have\-to;
+肯定 < to\-be\-sure;
+任性 < capricious;
+王牌 < trump\-card;
+新聞媒體 < news\-media;
+堅定不移 < unswerving;
+非盈利 < non\-profit;
+南面 < south\-side;
+使容易 < facilitate;
+研究員 < researcher;
+薄荷 < field\-mint;
+馬力 < horsepower;
+月球 < \(the\)\-moon;
+現成 < ready\-made;
+議論 < to\-comment;
+風濕 < rheumatism;
+群眾 < the\-masses;
+三月二十三號 < march\-23rd;
+此時以前 < heretofore;
+仁慈 < benevolent;
+目擊者 < eyewitness;
+今後 < henceforth;
+虛擬 < fictitious;
+專門化 < specialize;
+多黨 < multiparty;
+不當 < unsuitable;
+沈落 < sink\,\-fall;
+講述 < talk\-about;
+宣佈 < to\-declare;
+摩托車 < motorcycle;
+朝鮮戰爭 < korean\-war;
+鼓掌 < to\-applaud;
+以外 < apart\-from;
+訂購者 < subscriber;
+爆音 < sonic\-boom;
+大體 < in\-general;
+食指 < forefinger;
+牴觸 < contradict;
+程序 < procedures;
+明言 < pronounced;
+顯微鏡 < microscope;
+本月 < this\-month;
+原生質 < protoplasm;
+多方面 < many\-sided;
+哲學 < philosophy;
+氣象 < meteorolgy;
+互惠 < reciprocal;
+含燐 < phosphoric;
+更正 < correction;
+黑板 < blackboard;
+新聞學 < journalism;
+不定詞 < infinitive;
+預知 < anticipate;
+以及 < as\-well\-as;
+主格 < nominative;
+錄取 < to\-recruit;
+新郎 < bridegroom;
+而後 < after\-that;
+悲歌 < sad\-melody;
+人均 < per\-capita;
+可疑 < suspicious;
+而已 < that''s\-all;
+難以置信 < incredible;
+浴巾 < bath\-towel;
+吊燈 < chandelier;
+共和政體 < republican;
+聲價 < reputation;
+不簡單 < not\-simple;
+受傷害 < be\-injured;
+端系統 < end\-system;
+薄片 < thin\-slice;
+更新 < up\-to\-date;
+顫栗 < to\-tremble;
+集體 < collective;
+外交手腕 < diplomatic;
+敗露 < \(of\-a\-plot;
+試驗 < experiment;
+人口 < population;
+三百億 < 30\-billion;
+歸順 < submission;
+失蹤 < be\-missing;
+飽和 < saturation;
+歡騰 < jubilation;
+後裔 < descendant;
+金牌 < gold\-medal;
+非對稱 < asymmetric;
+不會 < improbable;
+上月 < last\-month;
+半決賽 < semifinals;
+碧綠 < dark\-green;
+老套 < old\-things;
+及物 < transitive;
+莫須有 < groundless;
+不買賬 < not\-buy\-it;
+磁盤驅動器 < disl\-drive;
+電車 < trolleybus;
+顧慮 < misgivings;
+可比 < comparable;
+腓立比書 < philipians;
+事先 < in\-advance;
+警犬 < police\-dog;
+剛體 < rigid\-body;
+景氣 < prosperity;
+卜筮 < divination;
+女裝裁縫師 < dressmaker;
+不快 < be\-unhappy;
+女學生 < schoolgirl;
+改進 < to\-improve;
+電視 < television;
+後者 < the\-latter;
+纏繞 < intertwine;
+加速 < accelerate;
+諳練 < conversant;
+下個月 < next\-month;
+騎士風格 < knighthood;
+鏈路層 < link\-layer;
+一度 < for\-a\-time;
+歡迎 < to\-welcome;
+化妝舞會 < masquerade;
+墨鏡 < sunglasses;
+剝離 < \(of\-tissue;
+彈藥 < ammunition;
+溫和性 < tenderness;
+不安 < intranquil;
+期刊 < periodical;
+知覺 < perception;
+所有者 < proprietor;
+同情 < compassion;
+適配 < adaptation;
+合意 < acceptable;
+大臣 < chancellor;
+同性 < homosexual;
+日益 < day\-by\-day;
+半空中 < in\-mid\-air;
+本份 < one''s\-duty;
+女服物員 < stewardess;
+沒有知覺 < insensible;
+不等式 < inequality;
+會友 < membership;
+暗間兒 < inner\-room;
+自動化 < automation;
+不夠 < not\-enough;
+單方面 < unilateral;
+私下 < in\-private;
+波峰 < wave\-crest;
+三天 < three\-days;
+反日 < anti\-japan;
+建議 < to\-propose;
+佛教徒 < a\-buddhist;
+波導 < wave\-guide;
+婢女 < slave\-girl;
+沒收 < confiscate;
+快活 < gay\,\-happy;
+可悲 < lamentable;
+評註 < commentary;
+必然 < inevitable;
+半球 < hemisphere;
+響應 < respond\-to;
+大綱 < main\-point;
+氣勢洶洶 < aggressive;
+烤鴨 < roast\-duck;
+歌詞 < song\-lyric;
+並入 < merge\-into;
+弱脈 < weak\-pulse;
+操舵室 < pilothouse;
+原本 < originally;
+吸吮 < to\-suck\-in;
+爆破 < to\-blow\-up;
+道賀 < compliment;
+取得 < to\-acquire;
+上半 < first\-half;
+教育 < to\-educate;
+不動 < motionless;
+七十年代 < the\-1970''s;
+西點 < west\-point;
+斗眼 < cross\-eyed;
+眼鏡 < spectacles;
+不備 < unprepared;
+恫嚇 < intimidate;
+奉獻 < consecrate;
+不依 < not\-comply;
+電唱機 < phonograph;
+文盲 < illiterate;
+明智 < not\-unwise;
+流程圖 < flow\-chart;
+監督者 < supervisor;
+一百五十億 < 15\-billion;
+撞針 < firing\-pin;
+南極 < south\-pole;
+所有物 < belongings;
+視窗新技 < windows\-nt;
+二十一 < twenty\-one;
+了 < to\-finish;
+子 < offspring;
+徹 < penetrate;
+要 < necessary;
+辱 < humiliate;
+着 < make\-move;
+成 < completed;
+督 < supervise;
+輯 < gather\-up;
+弥 < extensive;
+美 < beautiful;
+廂 < side\-room;
+问 < ask\-about;
+庭 < courtyard;
+療 < be\-healed;
+痺 < paralysis;
+差 < to\-differ;
+难 < difficult;
+超 < jump\-over;
+異 < different;
+亲 < relatives;
+畫 < delineate;
+畜 < livestock;
+畑 < dry\-field;
+甘 < sweetness;
+认 < recognize;
+貴 < expensive;
+貝 < sea\-shell;
+达 < arrive\-at;
+众 < multitude;
+倒 < fall\-over;
+玩 < play\-with;
+像 < a\-picture;
+宅 < residence;
+据 < to\-occupy;
+譯 < translate;
+譫 < talkative;
+造 < construct;
+媼 < old\-woman;
+犠 < sacrifice;
+牒 < documents;
+牌 < signboard;
+爐 < fireplace;
+久 < long\-time;
+妾 < concubine;
+初 < beginning;
+除 < eliminate;
+况 < condition;
+乱 < confusion;
+创 < establish;
+福 < happiness;
+假 < falsehood;
+顾 < look\-back;
+蠶 < silkworms;
+渐 < gradually;
+瞧 < glance\-at;
+埒 < enclosure;
+埃 < fine\-dust;
+螢 < glow\-worm;
+退 < step\-back;
+蜻 < dragonfly;
+翻 < flip\-over;
+圏 < to\-circle;
+普 < universal;
+蛹 < chrysalis;
+临 < draw\-near;
+协 < be\-united;
+湯 < hot\-water;
+例 < precedent;
+洲 < continent;
+松 < pine\-tree;
+伙 < companion;
+毫 < fine\-hair;
+蕎 < buckwheat;
+输 < transport;
+折 < break\-off;
+汰 < excessive;
+君 < sovereign;
+危 < dangerous;
+概 < generally;
+厄 < adversity;
+汇 < concourse;
+厉 < whetstone;
+附 < adhere\-to;
+肩 < shoulders;
+魘 < nightmare;
+荒 < wasteland;
+鬱 < luxuriant;
+匠 < craftsman;
+匂 < fragrance;
+勸 < recommend;
+飘 < whirlwind;
+炮 < large\-gun;
+郎 < gentleman;
+陪 < accompany;
+凝 < coagulate;
+剩 < leftovers;
+饒 < bountiful;
+肘 < the\-elbow;
+肖 < look\-like;
+昨 < yesterday;
+暂 < temporary;
+递 < hand\-over;
+祥 < good\-luck;
+倹 < temperate;
+仗 < rely\-upon;
+柿 < persimmon;
+键 < door\-bolt;
+枯 < dried\-out;
+莱 < goosefoot;
+赔 < indemnify;
+逢 < come\-upon;
+睁 < open\-eyes;
+嘿 < be\-silent;
+贪 < be\-greedy;
+逝 < pass\-away;
+艾 < artemisia;
+袍 < long\-gown;
+冤 < grievance;
+迪 < enlighten;
+嘉 < excellent;
+閾 < threshold;
+綾 < thin\-silk;
+膀 < upper\-arm;
+顽 < obstinate;
+歉 < deficient;
+帅 < commander;
+憾 < to\-regret;
+劈 < cut\-apart;
+拂 < shake\-off;
+筈 < arrow\-end;
+熬 < cook\-down;
+稼 < sow\-grain;
+恍 < seemingly;
+绣 < embroider;
+懃 < courteous;
+衬 < underwear;
+慊 < to\-resent;
+潭 < deep\-pool;
+硝 < saltpeter;
+骤 < procedure;
+忿 < get\-angry;
+坠 < fall\-down;
+蝶 < butterfly;
+焉 < thereupon;
+禀 < report\-to;
+挫 < push\-down;
+鳄 < alligator;
+谐 < harmonize;
+屎 < excrement;
+葱 < scallions;
+枣 < date\-tree;
+谴 < reprimand;
+汹 < turbulent;
+泻 < drain\-off;
+瀑 < waterfall;
+樊 < a\-railing;
+敛 < draw\-back;
+茵 < a\-cushion;
+棕 < hemp\-palm;
+辗 < turn\-over;
+恤 < show\-pity;
+侈 < luxurious;
+沁 < soak\-into;
+匣 < small\-box;
+捎 < to\-select;
+痞 < dyspepsia;
+睐 < squint\-at;
+垦 < cultivate;
+浒 < riverbank;
+葵 < sunflower;
+睫 < eyelashes;
+哺 < chew\-food;
+竣 < terminate;
+囔 < muttering;
+藐 < disregard;
+埠 < port\-city;
+荤 < meat\-diet;
+蜒 < millipede;
+菇 < mushrooms;
+豚 < small\-pig;
+沓 < connected;
+弩 < cross\-bow;
+殇 < die\-young;
+栈 < warehouse;
+醺 < get\-drunk;
+蜈 < centipede;
+愫 < guileless;
+谙 < versed\-in;
+熹 < dim\-light;
+怂 < instigate;
+遛 < take\-walk;
+麾 < a\-pennant;
+媲 < marry\-off;
+镁 < magnesium;
+椰 < palm\-tree;
+痢 < dysentery;
+嗑 < eat\-seeds;
+蚯 < earthworm;
+蜚 < cockroach;
+阆 < high\-door;
+擀 < roll\-flat;
+袤 < longitude;
+麝 < musk\-deer;
+佻 < frivolous;
+钾 < potassium;
+孑 < remaining;
+檄 < call\-arms;
+隍 < dry\-ditch;
+诿 < pass\-buck;
+逄 < a\-surname;
+梏 < handcuffs;
+钺 < broad\-axe;
+柑 < tangerine;
+乜 < to\-squint;
+娲 < a\-goddess;
+忝 < disgraced;
+诮 < criticize;
+鳏 < huge\-fish;
+蜇 < jellyfish;
+劭 < encourage;
+癣 < ringworms;
+绦 < silk\-cord;
+钸 < plutonium;
+馗 < cheekbone;
+锰 < manganese;
+侪 < a\-company;
+凫 < wild\-duck;
+痱 < heat\-rash;
+痈 < carbuncle;
+悌 < brotherly;
+冼 < \(surname\);
+鹧 < partridge;
+悒 < sorrowful;
+怃 < regretful;
+墒 < wet\-tilth;
+訾 < bad\-mouth;
+圮 < destroyed;
+鲈 < sea\-perch;
+攉 < to\-beckon;
+鲇 < sheatfish;
+膈 < diaphragm;
+犍 < a\-bullock;
+锗 < germanium;
+鎏 < pure\-gold;
+镅 < americium;
+辂 < a\-chariot;
+跸 < clear\-way;
+煳 < be\-burned;
+牾 < to\-oppose;
+昀 < sun\-light;
+乩 < to\-divine;
+羟 < hydroxide;
+荽 < coriander;
+绠 < well\-rope;
+哓 < garrulous;
+脬 < a\-bladder;
+戡 < subjugate;
+辇 < hand\-cart;
+鹚 < cormorant;
+镞 < arrowhead;
+菰 < wild\-rice;
+蠖 < inch\-worm;
+铫 < large\-hoe;
+氘 < deuterium;
+黾 < to\-strive;
+镧 < lanthanum;
+垡 < plow\-soil;
+炔 < acetylene;
+镱 < ytterbium;
+钕 < neodymium;
+忭 < delighted;
+苴 < sackcloth;
+谳 < to\-decide;
+钯 < palladium;
+碲 < tellurium;
+璩 < jade\-ring;
+饫 < surfeited;
+撙 < economize;
+蓼 < smartweed;
+饔 < breakfast;
+锶 < strontium;
+昃 < afternoon;
+唪 < to\-recite;
+儇 < ingenious;
+鲴 < fish\-guts;
+鲅 < fish\-name;
+铍 < beryllium;
+熳 < to\-spread;
+胍 < guanidine;
+鲐 < globefish;
+酐 < anhydride;
+衄 < epistaxis;
+矧 < much\-more;
+悫 < sincerity;
+膦 < phosphine;
+缣 < fine\-silk;
+宄 < a\-traitor;
+阌 < wen\-xiang;
+酞 < phthalein;
+收縮 < pull\-back;
+多疑 < skeptical;
+合力 < cooperate;
+爆炸 < explosion;
+縮小模型 < miniature;
+割草 < mow\-grass;
+變奏 < variation;
+領受 < to\-accept;
+以弗所書 < ephesians;
+動盪 < commotion;
+可哀 < miserably;
+沒有形狀 < shapeless;
+菠蘿 < pineapple;
+穩定性 < stability;
+厚度 < thickness;
+速記 < shorthand;
+用戶數據 < user\-data;
+徐步 < to\-stroll;
+西面 < west\-side;
+連接器 < connector;
+摘除 < to\-excise;
+警官 < constable;
+開發人員 < developer;
+名人 < personage;
+蔓延 < to\-extend;
+地質學家 < geologist;
+同事 < colleague;
+形容辭 < adjective;
+半旗 < half\-mast;
+金匠 < goldsmith;
+同一 < identical;
+可得到 < available;
+碰巧 < by\-chance;
+科學家 < scientist;
+普及 < widespead;
+設置 < to\-set\-up;
+志願者 < volunteer;
+燒燬 < burn\-down;
+明年 < next\-year;
+擦邊球 < edge\-ball;
+古典 < classical;
+叫做 < be\-called;
+綠茶 < green\-tea;
+怎麼樣 < how\-about;
+所有權 < ownership;
+別處 < elsewhere;
+述語 < predicate;
+白報紙 < newsprint;
+防衛 < to\-defend;
+討論會 < symposium;
+教父 < godfather;
+受僱 < mercenary;
+語源 < etymology;
+說法 < statement;
+城門 < city\-gate;
+接受者 < recipient;
+生物學家 < biologist;
+靈敏 < sensitive;
+助理 < assistant;
+每個人 < everybody;
+不育性 < sterility;
+檢查員 < inspector;
+論斷 < inference;
+受事 < recepient;
+熬煎 < suffering;
+分號 < semicolon;
+原告 < complaint;
+白魚 < whitefish;
+表現型 < phenotype;
+多樣 < diversity;
+多模 < multimode;
+無能 < inability;
+白體 < lean\-type;
+標高 < elevation;
+妖媚 < seductive;
+無聲 < noiseless;
+十年 < ten\-years;
+半島 < peninsula;
+不可磨滅 < indelible;
+連續 < continous;
+原則 < principle;
+皮鞋匠 < shoemaker;
+阿比西尼亞 < abyssinia;
+鄭州 < zhengzhou;
+計策 < stratagem;
+底線 < underline;
+閃電 < lightning;
+引渡 < extradite;
+保護者 < protector;
+教母 < godmother;
+文明 < civilized;
+偽君子 < hypocryte;
+直覺 < intuition;
+壁燈 < wall\-lamp;
+發音 < pronounce;
+厘克 < centigram;
+馬蹄鐵 < horseshoe;
+擔架床 < stretcher;
+無籟 < scoundrel;
+加深 < to\-deepen;
+執行 < implement;
+雹暴 < hailstorm;
+確信 < confident;
+那樣 < that\-kind;
+公里 < kilometer;
+誠摯 < sincerely;
+差距 < disparity;
+不亦樂乎 < extremely;
+襯裙 < petticoat;
+鰾膠 < isinglass;
+按照字面 < literally;
+證件 < paperwork;
+細菌 < bacterial;
+蒼天 < firmament;
+三分之一 < one\-third;
+緩沖 < to\-buffer;
+選派 < set\-apart;
+不完善 < imperfect;
+大志 < high\-aims;
+輔音 < consonant;
+張揚 < publicize;
+解碼 < to\-decode;
+播種 < sow\-seeds;
+化學 < chemistry;
+報紙 < newspaper;
+無知 < ignorance;
+接駁 < to\-access;
+不可救藥 < incurable;
+很多 < very\-many;
+耶路撒冷 < jerusalem;
+雙方 < bilateral;
+晴雨表 < barometer;
+千禧年 < millenium;
+長遠 < long\-term;
+千周 < kilohertz;
+過濾 < to\-filter;
+褻瀆的話 < blasphemy;
+奇妙 < fantastic;
+冰蓋 < ice\-sheet;
+國內戰爭 < civil\-war;
+危地馬拉 < guatamala;
+遙測 < telemetry;
+接班人 < successor;
+農舍 < farmhouse;
+剪貼簿 < scrapbook;
+偉晶岩 < pegmatite;
+紅蓮 < red\-lotus;
+指示符 < indicator;
+共識 < consensus;
+加密後的 < encrypted;
+有攻擊性 < offensive;
+大小 < dimension;
+惡名昭彰 < notorious;
+保惠師 < comforter;
+大家 < authority;
+爭取 < fight\-for;
+每天 < every\-day;
+經濟學家 < economist;
+攻擊 < to\-attack;
+紅茶 < black\-tea;
+文字 < character;
+常綠 < evergreen;
+殘廢 < deformity;
+隱晦 < obscurity;
+建築師 < architect;
+照樣 < as\-before;
+方向 < direction;
+焰火 < fireworks;
+救恩 < salvation;
+阿空加瓜 < aconcagua;
+加拉太書 < galatians;
+後勤 < logistics;
+委員會 < committee;
+網際色情 < cyberporn;
+辦罪 < to\-punish;
+要緊 < important;
+民主 < democracy;
+務實 < pragmatic;
+推銷 < to\-market;
+彙報 < to\-report;
+要素 < essential;
+航海者 < navigator;
+夢境 < dreamland;
+課堂 < classroom;
+報界 < the\-press;
+十七 < seventeen;
+火藥 < gunpowder;
+診斷 < diagnosis;
+毫克 < milligram;
+副本 < duplicate;
+花粉過敏 < hay\-fever;
+廣播 < broadcast;
+敗局 < lost\-game;
+郊外 < outskirts;
+白蠟 < white\-wax;
+出現 < to\-appear;
+冰糕 < ice\-cream;
+允許 < to\-permit;
+小吃店 < snack\-bar;
+後代 < posterity;
+維士卡 < visa\-card;
+為時過早 < premature;
+聯合組織 < syndicate;
+構造 < structure;
+齳 < toothless;
+齭 < toothache;
+好奇心 < curiosity;
+勾劃 < to\-sketch;
+人物描寫 < portrayal;
+增援 < reinforce;
+無比 < matchless;
+教士 < churchman;
+次數 < frequency;
+大力 < energetic;
+政治性 < political;
+滑鼠墊 < mouse\-pad;
+壯大 < to\-expand;
+鷾 < a\-swallow;
+鷭 < water\-hen;
+拜物教 < fetishism;
+遵循 < to\-follow;
+鷥 < the\-egret;
+適意 < agreeable;
+鷏 < bird\-name;
+鶡 < crossbill;
+調停 < reconcile;
+鵷 < co\-worker;
+干涉 < interfere;
+鳢 < snakehead;
+社會主義者 < socialist;
+低速率 < low\-speed;
+鲎 < king\-crab;
+鱷 < crocodile;
+勤勉 < diligence;
+款待 < entertain;
+令人欽佩 < admirable;
+鯠 < to\-confer;
+發芽 < germinate;
+鮦 < snakefish;
+撥正 < set\-right;
+魞 < fish\-trap;
+阿奇里斯 < aeschylus;
+壽命 < life\-span;
+鬖 < wild\-hair;
+髧 < long\-hair;
+髗 < the\-skull;
+提摩太后書 < 2\-timothy;
+骭 < shin\-bone;
+政治局 < politburo;
+經文 < scripture;
+零售商 < tradesman;
+敲入 < to\-key\-in;
+隊形 < formation;
+騧 < tan\-horse;
+騐 < to\-verity;
+天上 < celestial;
+駸 < galloping;
+政治家 < statesman;
+饠 < rice\-cake;
+辦理 < to\-handle;
+餱 < dry\-goods;
+安全帶 < seat\-belt;
+孟加拉語 < bengalese;
+註定 < be\-doomed;
+無數 < countless;
+收回 < to\-regain;
+外交 < diplomacy;
+過度 < exceeding;
+操持 < to\-manage;
+登廣告 < advertise;
+檢測 < to\-detect;
+矮凳 < low\-stool;
+階層 < hierarchy;
+靪 < to\-cobble;
+香檳酒 < champagne;
+靧 < wash\-face;
+至高 < paramount;
+靀 < drizzling;
+排行 < seniority;
+霂 < fine\-rain;
+前往 < leave\-for;
+教儀 < ordinance;
+機械裝置 < machinery;
+隃 < to\-exceed;
+墳墓 < sepulcher;
+綜合性 < synthesis;
+公秉 < kiloliter;
+阻撓 < to\-thwart;
+傳送 < to\-convey;
+閺 < look\-down;
+遺囑 < testament;
+歡呼 < cheer\-for;
+锫 < berkelium;
+锆 < zirconium;
+钶 < columbium;
+遊客 < traveller;
+钌 < ruthenium;
+摁釘兒 < thumbtack;
+钁 < a\-mattock;
+文具商 < stationer;
+新加坡 < singapore;
+城牆 < city\-wall;
+內碼 < to\-encode;
+鐻 < drumstick;
+摧殘 < to\-ravage;
+撞擊 < to\-strike;
+加劇 < aggravate;
+鏛 < to\-polish;
+阻抗 < impedance;
+捐贈 < to\-donate;
+自願 < voluntary;
+鎿 < neptunium;
+樹皮 < tree\-bark;
+鎞 < plowshare;
+隨員 < attendant;
+光筆 < light\-pen;
+報攤 < newsstand;
+出於 < be\-due\-to;
+無形 < invisible;
+裝置 < equipment;
+鈌 < to\-pierce;
+故事 < narrative;
+共產 < communist;
+推翻 < overthrow;
+領事館 < consulate;
+園藝 < gardening;
+劃分 < to\-divide;
+傳記 < biography;
+迷惑 < to\-puzzle;
+加上 < to\-put\-in;
+輘 < a\-car\-rut;
+通宵 < overnight;
+軄 < to\-govern;
+躔 < follow\-in;
+廣傳 < propagate;
+發生 < to\-happen;
+跩 < to\-waddle;
+超聯結 < hyperlink;
+趝 < to\-pursue;
+赿 < late\-slow;
+組成 < component;
+接管 < take\-over;
+豵 < young\-pig;
+總會會長 < president;
+隆冬 < midwinter;
+凹度 < concavity;
+漫長 < very\-long;
+界面 < interface;
+創作 < to\-create;
+到目前為止 < until\-now;
+譊 < wrangling;
+譅 < wriggling;
+諝 < knowledge;
+毫無疑問 < certainty;
+綜合 < composite;
+披露 < to\-reveal;
+看待 < look\-upon;
+陷入 < sink\-into;
+衰落 < decompose;
+撥奏 < pizzicato;
+迫害 < persecute;
+進化 < evolution;
+流行性感冒 < influenza;
+裲 < waistcoat;
+辯才 < eloquence;
+自負 < conceited;
+螌 < a\-striped;
+市政 < municipal;
+儼然 < just\-like;
+保皇黨 < royalists;
+絕妙 < exquisite;
+東北方 < northeast;
+投降 < surrender;
+簽章 < signature;
+蘞 < wild\-vine;
+綁匪 < kidnapper;
+無力 < powerless;
+好萊塢 < hollywood;
+擔保 < guarantee;
+推理 < reasoning;
+蕗 < leucacene;
+因而 < therefore;
+逆向 < backwards;
+蓆 < straw\-mat;
+按蚊 < anopheles;
+樣機 < prototype;
+蒢 < hedysarum;
+刨冰 < water\-ice;
+帶寬 < bandwidth;
+葓 < vegetable;
+異議 < objection;
+規定 < provision;
+展開 < to\-unfold;
+輪流 < alternate;
+持久性 < constancy;
+傳統 < tradition;
+偏見 < prejudice;
+白血病 < leukaemia;
+全世界 < worldwide;
+地理 < geography;
+地球 < the\-earth;
+苙 < a\-pig\-sty;
+芼 < to\-choose;
+降低 < to\-reduce;
+保險 < insurance;
+保障 < to\-ensure;
+艣 < stern\-oar;
+場合 < situation;
+艎 < fast\-boat;
+報告 < to\-inform;
+舝 < linch\-pin;
+舘 < a\-mansion;
+臯 < to\-praise;
+澳大利亞 < australia;
+公斗 < decaliter;
+返回 < return\-to;
+大寫鎖定 < caps\-lock;
+分割 < to\-cut\-up;
+胦 < the\-navel;
+扁骨 < flat\-bone;
+耥 < farm\-tool;
+羶 < rank\-odor;
+保鏢 < bodyguard;
+跑錶 < stopwatch;
+紙夾 < paperclip;
+罁 < a\-cistern;
+發明 < to\-invent;
+模擬 < imitation;
+半工半讀 < part\-work;
+激發 < to\-arouse;
+再度 < once\-more;
+糾察 < to\-picket;
+拷花 < to\-emboss;
+我們自己 < ourselves;
+潛艇 < submarine;
+迷住 < fascinate;
+艾炷 < moxa\-cone;
+囚禁 < captivity;
+緥 < swaddling;
+羅徹斯特 < rochester;
+便門 < side\-door;
+抗議者 < protester;
+衣帽間 < cloakroom;
+一匹馬 < one\-horse;
+有時候 < sometimes;
+糰 < rice\-ball;
+糝 < scattered;
+候選人 < candidate;
+管弦樂團 < orchestra;
+向北地 < northward;
+籨 < trousseau;
+下決心 < determine;
+規勸 < to\-advise;
+表皮 < epidermis;
+表白 < vindicate;
+白日做夢 < day\-dream;
+竕 < deciliter;
+保證人 < guarantor;
+竆 < exhausted;
+看做 < regard\-as;
+窋 < in\-a\-hole;
+稬 < glutinous;
+上星期 < last\-week;
+兇手 < assailant;
+寬頻 < broadband;
+西南 < southwest;
+西北 < northwest;
+礽 < blessings;
+礞 < \(mineral\);
+精巧 < elaborate;
+第二十 < twentieth;
+嶄新 < brand\-new;
+碆 < arrow\-tip;
+打進 < to\-breach;
+砬 < big\-stone;
+公寸 < decimeter;
+公寓 < apartment;
+常任 < permanent;
+光彩 < honorable;
+睡過頭 < oversleep;
+指示 < point\-out;
+眕 < restraint;
+病理 < pathology;
+任何其他 < any\-other;
+辛勞 < laborious;
+損壞 < to\-damage;
+瘭 < a\-whitlow;
+瘜 < a\-polypus;
+巴勒斯坦 < palestine;
+痡 < a\-disease;
+利未記 < leviticus;
+童子軍 < boy\-scout;
+畱 < to\-detain;
+嘉許 < favorable;
+畋 < till\-land;
+八天 < eight\-day;
+甦 < be\-reborn;
+瓸 < hectogram;
+拒絕 < to\-refuse;
+要不 < otherwise;
+璿 < fine\-jade;
+標定 < demarcate;
+瑴 < twin\-gems;
+瑣 < fragments;
+輻射 < radiation;
+四十六 < forty\-six;
+排放 < discharge;
+體現 < to\-embody;
+衰減 < to\-weaken;
+籃板 < backboard;
+在﹍旁邊 < alongside;
+馬鞭 < horsewhip;
+獀 < to\-gather;
+第九十 < ninetieth;
+狳 < armadillo;
+燶 < to\-scorch;
+畢竟 < after\-all;
+熿 < brilliant;
+先見之明 < foresight;
+低階 < low\-level;
+所謂 < so\-called;
+潰爛 < to\-fester;
+儲存 < stockpile;
+車前燈 < headlight;
+濩 < pour\-down;
+掛念 < concerned;
+宇航員 < astronaut;
+轟動 < sensation;
+臺燈 < desk\-lamp;
+使困窘 < embarrass;
+湼 < black\-mud;
+湅 < boil\-silk;
+淩 < pass\-over;
+實質 < substance;
+隨之而後 < from\-that;
+涷 < rainstorm;
+洑 < whirlpool;
+巧克力 < chocolate;
+有雄心 < ambitious;
+殈 < infertile;
+欕 < tree\-name;
+植物 < botanical;
+空防 < air\-force;
+入侵 < to\-invade;
+處理器 < processor;
+主管人員 < executive;
+橚 < tall\-tree;
+公丈 < decameter;
+輸出 < to\-export;
+榪 < headboard;
+知更鳥 < redbreast;
+啟示者 < revelator;
+輸入 < to\-import;
+等等 < et\-cetera;
+第三十 < thirtieth;
+棖 < door\-stop;
+梜 < chopstick;
+激怒 < infuriate;
+栱 < large\-peg;
+栭 < king\-post;
+栒 < cross\-bar;
+停泊 < anchorage;
+柈 < container;
+枙 < tree\-knot;
+白鎢礦 < scheelite;
+朞 < full\-year;
+手提包 < \(hand\)bag;
+技術性 < technical;
+漲潮 < high\-tide;
+暍 < sunstroke;
+家譜 < genealogy;
+驚異 < amazement;
+輔助 < to\-assist;
+旪 < united\-in;
+提供 < to\-supply;
+不誠實 < dishonest;
+豌豆粥 < pea\-gruel;
+變流器 < converter;
+攋 < to\-clutch;
+攃 < preceding;
+擐 < to\-put\-on;
+體操 < gymnastic;
+摽 < throw\-out;
+提摩太前書 < 1\-timothy;
+摮 < to\-rattle;
+揥 < scratcher;
+便箋 < notepaper;
+聖餐 < sacrament;
+財務秘書 < treasurer;
+批發 < wholesale;
+趕緊 < hurriedly;
+扳道員 < pointsman;
+扤 < to\-thrust;
+骨架 < framework;
+戜 < to\-scrape;
+偵探 < detective;
+兩星期 < fortnight;
+挑戰 < challenge;
+格式化 < to\-format;
+被告 < defendant;
+波利尼西亞 < polynesia;
+悁 < irritable;
+恑 < to\-change;
+怺 < to\-endure;
+怞 < to\-grieve;
+怗 < observant;
+採石場 < stone\-pit;
+加勒比 < caribbean;
+電報機 < telegraph;
+貝類 < shellfish;
+在內 < including;
+拿手 < expert\-in;
+工作表 < worksheet;
+暴風雪 < snowstorm;
+竊聽 < eavesdrop;
+廾 < two\-hands;
+庉 < a\-village;
+幩 < trappings;
+幙 < a\-curtain;
+宿舍 < dormitory;
+山水 < landscape;
+四天 < four\-days;
+挺好 < very\-good;
+簽入 < to\-log\-on;
+馬背 < horseback;
+驕氣 < arrogance;
+疑心 < suspicion;
+渺茫 < uncertain;
+寽 < a\-handful;
+文字檔 < text\-file;
+寘 < put\-aside;
+激動 < to\-excite;
+嫛 < compliant;
+媬 < governess;
+媕 < undecided;
+添補 < fill\-\(up\);
+貿易戰 < trade\-war;
+奉承者 < flatterer;
+生育能力 < fertility;
+修正 < to\-revise;
+指揮者 < conductor;
+夌 < to\-dawdle;
+某處 < somewhere;
+塝 < flat\-bank;
+參考書 < reference;
+共享軟體 < shareware;
+貨輪 < freighter;
+半衰期 < half\-life;
+圊 < rest\-room;
+體團 < community;
+抵抗 < to\-resist;
+不受歡迎 < unwelcome;
+噁 < nastiness;
+颱風 < hurricane;
+嘑 < to\-menace;
+拉斐特 < lafayette;
+贖罪 < atonement;
+寵物 < house\-pet;
+聖誕 < christmas;
+哫 < to\-cajole;
+咵 < to\-revile;
+不結果 < fruitless;
+呧 < to\-rebuke;
+假定 < to\-assume;
+申請人 < applicant;
+行動 < operation;
+主體 < main\-part;
+手法 < technique;
+消遣 < amusement;
+出版者 < publisher;
+叅 < to\-counel;
+厓 < precipice;
+凹凸印刷 < embossing;
+就業 < get\-a\-job;
+疆域 < territory;
+本星期 < this\-week;
+匘 < the\-brain;
+勩 < work\-hard;
+怪不得 < no\-wonder;
+撒都該人 < sadducees;
+承擔 < undertake;
+刔 < scoop\-out;
+膽小 < cowardice;
+凷 < dirt\-clod;
+凙 < an\-icicle;
+創造力 < ingenuity;
+屬性 < attribute;
+兇 < atrocious;
+主頁 < home\-page;
+可容忍 < tolerable;
+會面 < meet\-with;
+傺 < to\-hinder;
+成為 < to\-become;
+交誼 < communion;
+圖書管理員 < librarian;
+基本上 < basically;
+侎 < to\-soothe;
+伻 < messenger;
+伋 < deceptive;
+潛力 < potential;
+稻草人 < scarecrow;
+學童 < schoolboy;
+多用戶 < multiuser;
+自動 < automatic;
+共產主義 < communism;
+䶳 < to\-lookup;
+䶑 < to\-sneeze;
+蠕動 < to\-wiggle;
+打敗 < to\-defeat;
+豪豬 < porcupine;
+不以為然 < object\-to;
+䳺 < the\-quail;
+流量 < flow\-rate;
+䲨 < wild\-swan;
+社會主義 < socialism;
+䱈 < fish\-pulp;
+䰥 < a\-cyclone;
+賜給 < to\-bestow;
+蜜月假期 < honeymoon;
+䯦 < tiny\-bone;
+䮜 < to\-gallop;
+招募 < to\-recuit;
+䭬 < to\-kowtow;
+對於 < regarding;
+䭛 < tasteless;
+䭑 < incorrupt;
+同班同學 < classmate;
+䬶 < to\-strave;
+䫻 < a\-typhoon;
+䫔 < a\-servant;
+上面 < on\-top\-of;
+羽毛球 < badminton;
+䩦 < the\-reins;
+五號 < the\-fifth;
+䨭 < the\-skies;
+䨍 < deep\-pond;
+䦵 < incapable;
+䦬 < a\-vacancy;
+䦆 < a\-big\-hoe;
+拆卸 < to\-unload;
+救護車 < ambulance;
+蛋白 < egg\-white;
+第十六 < sixteenth;
+䢱 < to\-slight;
+䢟 < to\-travel;
+吞食 < to\-devour;
+䢍 < to\-hasten;
+使生氣 < displease;
+胃炎 < gastritis;
+對抗 < withstand;
+䠲 < to\-listen;
+䠯 < to\-ascend;
+䠮 < to\-prance;
+䟻 < bare\-feet;
+䟞 < to\-falter;
+不公正 < injustice;
+脫掉 < strip\-off;
+香港 < hong\-kong;
+䟌 < diverging;
+䞼 < to\-escape;
+䞒 < red\-color;
+䞐 < plentiful;
+䞉 < a\-surplus;
+䜭 < to\-dredge;
+實時 < real\-time;
+肺炎 < pneumonia;
+䜟 < to\-verify;
+光射線 < light\-ray;
+䛻 < to\-induce;
+䛹 < to\-accuse;
+䛳 < to\-malign;
+䛬 < baby\-talk;
+䛪 < loquacity;
+䛋 < to\-scheme;
+䛁 < to\-murmur;
+慶祝 < celebrate;
+䙸 < to\-obtain;
+外國人 < foreigner;
+䘼 < stockings;
+宰殺 < slaughter;
+第十五 < fifteenth;
+䘑 < the\-pulse;
+䕩 < dry\-fruit;
+浪蕩 < to\-loiter;
+䔳 < chickling;
+䓰 < absinthin;
+某物 < something;
+䒊 < a\-patient;
+䑪 < a\-sailing;
+䑓 < a\-lookout;
+津貼 < allowance;
+䐺 < delicious;
+䐛 < to\-loosen;
+䐆 < big\-belly;
+䏽 < meat\-pulp;
+䏬 < the\-spine;
+䏠 < meat\-soup;
+䏞 < the\-belly;
+肝炎 < hepatitis;
+䎡 < to\-shrink;
+消耗 < to\-use\-up;
+䎃 < fine\-down;
+阿根廷 < argentina;
+䍎 < a\-spindle;
+䌲 < light\-red;
+䌛 < entourage;
+䋠 < to\-repair;
+䊰 < foodstuff;
+䊜 < dumplings;
+䉼 < materials;
+上載 < to\-upload;
+蘭花 < cymbidium;
+書記 < secretary;
+浪船 < swingboat;
+偽善者 < hypocrite;
+䇐 < to\-arrive;
+小寫 < lowercase;
+䆐 < a\-country;
+螺旋槳 < propeller;
+用具 < appliance;
+古風 < antiquity;
+䅃 < late\-crop;
+安歇 < go\-to\-bed;
+䃩 < a\-mineral;
+家族 < household;
+䃕 < stoneware;
+自動樓梯 < escalator;
+緊急事件 < emergency;
+䃀 < millstone;
+何故 < wherefore;
+腳印 < footprint;
+瓷器 < chinaware;
+貯水處 < reservoir;
+䁐 < deep\-eyed;
+童年 < childhood;
+印度尼西亞 < indonesia;
+半流體 < semifluid;
+䀬 < to\-glance;
+䀡 < to\-spy\-on;
+䀐 < to\-regard;
+起床 < to\-get\-up;
+㿿 < wine\-cups;
+民主主義者 < democrats;
+㿟 < he\-bright;
+征服者 < conqueror;
+㾥 < bellyache;
+㾣 < to\-shiver;
+今生 < this\-life;
+捕鼠器 < mousetrap;
+㽞 < to\-remain;
+㽉 < a\-big\-jar;
+㼺 < porcelain;
+變色龍 < chameleon;
+㼚 < earthware;
+對抗者 < adversary;
+本職 < one''s\-job;
+退黑激素 < melatonin;
+背斜 < anticline;
+暴躁 < irascible;
+池鹽 < lake\-salt;
+薄油層 < oil\-sheet;
+不許 < not\-allow;
+商標 < trademark;
+飯碗 < rice\-bowl;
+無知覺 < senseless;
+晤面 < interview;
+重開 < to\-reopen;
+㵔 < not\-clear;
+變革 < transform;
+㴁 < to\-add\-to;
+白云母 < muscovite;
+㳨 < to\-splash;
+截奪 < intercept;
+彫刻品 < sculpture;
+深水 < deepwater;
+㰖 < the\-olive;
+㯺 < a\-cabinet;
+變焦距鏡頭 < zoom\-lens;
+㯯 < small\-cup;
+㯝 < paulownia;
+㮙 < a\-pitfall;
+㭢 < mechanics;
+起始 < originate;
+㬿 < moonlight;
+祇讀 < read\-only;
+㬫 < clear\-sky;
+一千噸 < 1000\-tons;
+不規則 < irregular;
+波狀雲 < undulatus;
+學會 < institute;
+㪈 < to\-let\-go;
+㩒 < to\-arrest;
+㩇 < the\-thumb;
+㨶 < to\-thresh;
+㨉 < to\-smooth;
+㧩 < to\-dispel;
+㧗 < to\-clatch;
+僚 < officials;
+㦯 < a\-certain;
+㦖 < resentful;
+㥾 < mortified;
+㥳 < to\-survey;
+㥦 < satisfied;
+㥀 < exclusive;
+㤵 < copassion;
+末端 < extremity;
+㤇 < terrified;
+㤆 < nauseated;
+㣺 < the\-heart;
+瓜分 < partition;
+㢡 < to\-exhort;
+㡼 < a\-granary;
+㡺 < a\-cottage;
+㡗 < red\-paper;
+㠘 < an\-island;
+涌現 < spring\-up;
+禮節 < etiquette;
+變醜 < disfigure;
+㜻 < to\-admire;
+蜂巢 < honeycomb;
+㜘 < delicated;
+㜏 < last\-name;
+中美 < china\-usa;
+㛾 < not\-clean;
+暗語 < code\-word;
+擴音器 < megaphone;
+不見了 < disappear;
+㚰 < an\-embryo;
+㚛 < corpulent;
+㚘 < a\-partner;
+重蹈 < to\-repeat;
+㘣 < compasses;
+㗳 < forgetful;
+九月份 < september;
+超文本 < hypertext;
+基督教徒 < christian;
+㕹 < a\-buckler;
+㕕 < deception;
+㕑 < a\-kitchen;
+休戰 < armistice;
+㕋 < rock\-land;
+㕈 < to\-linger;
+㔧 < to\-incite;
+讀書人 < a\-scholar;
+㓋 < to\-freeze;
+㓄 < to\-plough;
+叛賣 < to\-betray;
+㑧 < perturbed;
+㑄 < to\-insult;
+㐯 < to\-employ;
+伸展 < extension;
+一致 < unanimous;
+引用句 < quotation;
+老牌 < old\-brand;
+妖風 < evil\-wind;
+錶帶 < watchband;
+減少 < to\-lessen;
+有益 < wholesome;
+立刻 < forthwith;
+八倍體 < octoploid;
+深思 < to\-ponder;
+野蠻 < barbarous;
+財東 < shopowner;
+虛構 < imaginary;
+被禁止 < forbidden;
+聯想 < associate;
+浸沒 < immersion;
+淒慘 < miserable;
+一篇 < one\-sided;
+介質訪問控制層 < mac\-layer;
+不自然 < unnatural;
+期滿 < to\-expire;
+警覺 < vigilance;
+原諒 < to\-excuse;
+家俱 < furniture;
+高科技 < high\-tech;
+感染 < infection;
+孔子 < confucius;
+亞格門農 < agamemnon;
+家事 < housework;
+怪物似 < monstrous;
+冰棍兒 < ice\-lolly;
+今年 < this\-year;
+白班兒 < day\-shift;
+一百 < a\-hundred;
+仲夏 < midsummer;
+證詞 < testimony;
+不逞之徒 < desperado;
+突出 < prominent;
+星期三 < wednesday;
+惡毒 < malicious;
+野蠻人 < barbarian;
+十字軍 < crusaders;
+露韓 < to\-expose;
+法國人 < frenchman;
+五千噸 < 5000\-tons;
+影響 < influence;
+暴發 < break\-out;
+應付 < deal\-with;
+有毒 < poisonous;
+弱鹼 < weak\-base;
+汽船 < steamboat;
+遇難船 < shipwreck;
+可笑 < laughable;
+半載 < half\-load;
+微軟 < microsoft;
+仙境 < fairyland;
+旨趣 < objective;
+大類 < main\-type;
+本文 < this\-text;
+羊皮紙 < parchment;
+憤憤不平 < indignant;
+營養 < nutrition;
+反艦艇 < anti\-ship;
+協議 < agreement;
+那麼 < so\-\(much\);
+必需品 < necessity;
+碧藍 < dark\-blue;
+待遇 < treatment;
+下個星期 < next\-week;
+合理 < rationale;
+玩弄 < resort\-to;
+旁路 < to\-bypass;
+夜間 < nighttime;
+比鄰 < neighbour;
+書架 < bookshelf;
+有效 < effective;
+缽盂 < alms\-bowl;
+石灰石 < limestone;
+資助 < subsidize;
+歷史學家 < historian;
+修道院 < monastery;
+上次 < last\-time;
+望遠鏡 < telescope;
+擺設兒 < ornaments;
+五天 < five\-days;
+心靈上 < spiritual;
+旁觀 < spectator;
+堅忍不拔 < fortitude;
+介入 < intervene;
+以上 < more\-than;
+矛頭 < spearhead;
+夢遺 < wet\-dream;
+天文學 < astronomy;
+巴比妥 < barbitone;
+波段 < wave\-band;
+離開 < to\-depart;
+實質上 < virtually;
+吐氣 < aspirated;
+東南 < southeast;
+奇觀 < spectacle;
+改革 < to\-reform;
+愛國 < patriotic;
+不斷 < unceasing;
+未婚 < unmarried;
+弱酸 < weak\-acid;
+乘客 < passenger;
+配置 < to\-deploy;
+失調 < imbalance;
+本壘 < home\-base;
+人事 < personnel;
+有意識 < conscious;
+書店 < bookstore;
+受害者 < casulties;
+不完美 < defective;
+司機 < chauffeur;
+東亞 < east\-asia;
+合格 < qualified;
+情緒化 < emotional;
+耐力 < endurance;
+支持者 < supporter;
+明確 < clear\-cut;
+不惜 < not\-stint;
+借書單 < book\-slip;
+主婦 < housewife;
+表意文字 < ideograph;
+通貨膨脹 < inflation;
+玩具 < plaything;
+電話 < telephone;
+施肥 < fertilize;
+第八十 < eightieth;
+里程碑 < milestone;
+不已 < endlessly;
+雜貨 < groceries;
+木匠 < carpenter;
+醬油 < soy\-sauce;
+不情願 < unwilling;
+觸鬚 < tentacles;
+下定義 < to\-define;
+擦音 < fricative;
+周圍 < encompass;
+對不起 < i''m\-sorry;
+不對 < incorrect;
+心目 < mentality;
+可敬 < venerable;
+大荳 < soya\-bean;
+𢥞 < same\-as\-忡;
+假象牙 < celluloid;
+降落傘 < parachute;
+波幅 < amplitude;
+右手 < righthand;
+流入 < flow\-into;
+注射 < injection;
+硬盤 < hard\-disk;
+功課 < classwork;
+週長 < perimeter;
+購買者 < purchaser;
+大教堂 < cathedral;
+組織者 < organizer;
+婚姻 < matrimony;
+不在 < not\-be\-in;
+丙種射線 < gamma\-ray;
+鞭毛 < flagellum;
+撫養 < to\-foster;
+刪除 < to\-delete;
+遠足 < excursion;
+無限 < unlimited;
+頑強 < tenacious;
+無關 < unrelated;
+蒸發 < evaporate;
+古怪 < eccentric;
+得當 < expedient;
+油布 < tarpaulin;
+下唇 < lower\-lip;
+上唇 < upper\-lip;
+聖迭哥 < san\-diego;
+頁心 < type\-page;
+污染 < pollution;
+意氣相投 < congenial;
+長方形 < rectangle;
+前途 < prospects;
+熊蜂 < bumblebee;
+總結 < summarize;
+吸取 < to\-absorb;
+週邊 < periphery;
+年限 < age\-limit;
+下列 < following;
+題名 < autograph;
+多端 < multiport;
+效能 < efficient;
+灰獵犬 < greyhound;
+獲暴利者 < profiteer;
+不停 < incessant;
+大砲 < artillery;
+不值 < not\-worth;
+沙岩 < sandstone;
+波及 < spread\-to;
+微波 < microwave;
+無辜 < innocence;
+次要 < secondary;
+不予 < not\-grant;
+去年 < last\-year;
+不了 < unable\-to;
+韌性 < toughness;
+版權 < copyright;
+向南 < southward;
+民歌 < folk\-song;
+即時 < immediate;
+習慣性 < customary;
+幸運 < fortunate;
+美中 < usa\-china;
+熟練 < practiced;
+念 < think\-of;
+会 < assemble;
+学 < learning;
+徒 < disciple;
+睦 < friendly;
+无 < negative;
+方 < a\-square;
+前 < in\-front;
+眉 < eyebrows;
+省 < province;
+直 < straight;
+廢 < abrogate;
+盛 < abundant;
+軒 < carriage;
+全 < maintain;
+廊 < corridor;
+皺 < wrinkles;
+康 < peaceful;
+间 < midpoint;
+躊 < hesitate;
+第 < sequence;
+幻 < illusion;
+癇 < epilepsy;
+山 < mountain;
+巾 < kerchief;
+巧 < skillful;
+距 < distance;
+界 < boundary;
+任 < trust\-to;
+台 < platform;
+象 < elephant;
+题 < forehead;
+賢 < virtuous;
+資 < property;
+貼 < paste\-to;
+費 < expenses;
+履 < footwear;
+武 < military;
+琲 < necklace;
+尠 < very\-few;
+完 < complete;
+即 < promptly;
+寵 < favorite;
+语 < language;
+珍 < precious;
+商 < commerce;
+宝 < treasure;
+千 < thousand;
+宜 < suitable;
+官 < official;
+站 < stand\-up;
+譬 < metaphor;
+香 < fragrant;
+似 < resemble;
+嬢 < troubled;
+虽 < although;
+且 < moreover;
+调 < transfer;
+嫉 < jealousy;
+狃 < to\-covet;
+嫁 < to\-marry;
+媚 < charming;
+誘 < persuade;
+誄 < eulogize;
+詳 < detailed;
+詰 < question;
+惊 < frighten;
+支 < disperse;
+突 < suddenly;
+評 < appraise;
+娠 < pregnant;
+句 < sentence;
+显 < manifest;
+增 < increase;
+料 < consider;
+妊 < conceive;
+续 < continue;
+炭 < charcoal;
+围 < surround;
+災 < calamity;
+塚 < cemetery;
+瀕 < approach;
+濺 < sprinkle;
+濯 < wash\-out;
+垣 < low\-wall;
+习 < practice;
+垂 < let\-down;
+坂 < hillside;
+祖 < ancestor;
+优 < superior;
+滯 < block\-up;
+溢 < overflow;
+温 < lukewarm;
+蚊 < mosquito;
+鹸 < alkaline;
+噪 < be\-noisy;
+嘲 < ridicule;
+減 < decrease;
+嘔 < to\-vomit;
+恩 < kindness;
+脱 < take\-off;
+涸 < dried\-up;
+喪 < mourning;
+奔 < run\-fast;
+涌 < surge\-up;
+禁 < restrict;
+浮 < to\-float;
+互 < mutually;
+搞 < to\-clear;
+朱 < cinnabar;
+域 < district;
+材 < material;
+偷 < to\-steal;
+蓉 < hibiscus;
+抽 < draw\-out;
+仪 < ceremony;
+卸 < lay\-down;
+忆 < remember;
+隔 < separate;
+卓 < profound;
+损 < diminish;
+茄 < eggplant;
+勿 < must\-not;
+髭 < mustache;
+遥 < far\-away;
+櫛 < comb\-out;
+币 < currency;
+勉 < endeavor;
+骸 < skeleton;
+努 < to\-exert;
+萍 < duckweed;
+樅 < fir\-tree;
+缩 < contract;
+臥 < lie\-down;
+慕 < long\-for;
+臣 < minister;
+挡 < obstruct;
+膜 < membrane;
+榛 < hazelnut;
+俊 < talented;
+枝 < branches;
+陷 < submerge;
+勒 < strangle;
+聊 < somewhat;
+飾 < decorate;
+斜 < slanting;
+斐 < graceful;
+梟 < owl\-thus;
+傘 < umbrella;
+亭 < pavilion;
+泛 < to\-drift;
+符 < i\.d\.\-tag;
+允 < to\-grant;
+跨 < straddle;
+掩 < to\-cover;
+頃 < a\-moment;
+柴 < firewood;
+俯 < bow\-down;
+俥 < rickshaw;
+邻 < neighbor;
+驾 < to\-drive;
+羞 < disgrace;
+裤 < trousers;
+估 < merchant;
+鞘 < scabbard;
+咐 < instruct;
+恒 < constant;
+糟 < sediment;
+扮 < dress\-up;
+曜 < glorious;
+暢 < smoothly;
+押 < mortgage;
+戚 < relative;
+穆 < majestic;
+嘻 < mirthful;
+並 < equal\-to;
+昔 < formerly;
+闘 < struggle;
+瞪 < stare\-at;
+斥 < to\-scold;
+剪 < scissors;
+姚 < handsome;
+掏 < take\-out;
+間 < interval;
+惹 < irritate;
+簿 < register;
+芷 < angelica;
+磁 < magnetic;
+毅 < resolute;
+笥 < a\-hamper;
+拘 < restrain;
+伐 < cut\-down;
+竊 < secretly;
+銘 < inscribe;
+愉 < pleasant;
+窜 < run\-away;
+寨 < stockade;
+戻 < perverse;
+沪 < shanghai;
+釜 < cauldron;
+嗤 < laugh\-at;
+娱 < pleasure;
+禄 < blessing;
+愕 < startled;
+啡 < morphine;
+囚 < prisoner;
+账 < accounts;
+瓷 < crockery;
+腥 < raw\-meat;
+咸 < together;
+疫 < epidemic;
+啪 < syllable;
+膨 < to\-swell;
+吱 < chirping;
+菌 < mushroom;
+琐 < trifling;
+苟 < careless;
+崛 < towering;
+凸 < protrude;
+嘀 < backbite;
+铐 < shackles;
+谕 < proclaim;
+迸 < gush\-out;
+剔 < pick\-out;
+冀 < hope\-for;
+砚 < inkstone;
+捍 < ward\-off;
+臀 < buttocks;
+倔 < stubborn;
+奄 < ere\-long;
+侥 < be\-lucky;
+梵 < buddhist;
+褥 < mattress;
+晖 < sunshine;
+畴 < farmland;
+瞟 < glare\-at;
+瘸 < lameness;
+澎 < splatter;
+潦 < to\-flood;
+偎 < cling\-to;
+蝎 < scorpion;
+簸 < winnower;
+庶 < numerous;
+撂 < put\-down;
+晗 < pre\-dawn;
+蹊 < footpath;
+阉 < castrate;
+淆 < confused;
+萦 < entangle;
+榆 < elm\-tree;
+猝 < abruptly;
+曦 < sunlight;
+渤 < swelling;
+辘 < windlass;
+铝 < aluminum;
+捋 < to\-pluck;
+虻 < horsefly;
+瞌 < doze\-off;
+亟 < urgently;
+徨 < doubtful;
+啐 < to\-taste;
+镯 < bracelet;
+刽 < amputate;
+藻 < splendid;
+惰 < indolent;
+燔 < to\-roast;
+涝 < inundate;
+绛 < deep\-red;
+氯 < chlorine;
+坍 < collapse;
+忐 < timorous;
+殡 < encoffin;
+昵 < intimate;
+俟 < wait\-for;
+桢 < hardwood;
+黏 < stick\-to;
+痘 < smallpox;
+槟 < betelnut;
+韭 < scallion;
+蔫 < withered;
+膂 < backbone;
+胫 < shinbone;
+臃 < swell\-up;
+岌 < perilous;
+玎 < jingling;
+隼 < aquiline;
+陲 < frontier;
+谶 < prophecy;
+偻 < humpback;
+铂 < platinum;
+纛 < a\-banner;
+铬 < chromium;
+胰 < pancreas;
+覃 < reach\-to;
+睾 < testicle;
+倨 < arrogant;
+讣 < obituary;
+钛 < titanium;
+浃 < saturate;
+旖 < romantic;
+缙 < red\-silk;
+衾 < coverlet;
+宸 < imperial;
+佞 < flattery;
+蛔 < tapeworm;
+氅 < overcoat;
+氟 < fluorine;
+氰 < cyanogen;
+鲟 < sturgeon;
+硒 < selenium;
+舨 < a\-sampan;
+烊 < to\-smelt;
+萱 < day\-lily;
+疸 < jaundice;
+铊 < thallium;
+诂 < exegesis;
+雉 < pheasant;
+颢 < luminous;
+栀 < gardenia;
+诒 < bequeath;
+颟 < dawdling;
+苋 < amaranth;
+瀣 < sea\-mist;
+箝 < tweezers;
+楮 < mulberry;
+遄 < to\-hurry;
+钒 < vanadium;
+苷 < licorice;
+钨 < tungsten;
+埸 < a\-border;
+嫒 < daughter;
+癜 < erythema;
+鸹 < the\-crow;
+曛 < twilight;
+骘 < stallion;
+坻 < an\-islet;
+觫 < to\-start;
+铵 < ammonium;
+氩 < argonium;
+卣 < wine\-pot;
+锑 < antimony;
+醛 < aldehyde;
+钽 < tantalum;
+砼 < concrete;
+熘 < to\-steam;
+窨 < a\-cellar;
+栲 < mangrove;
+鲣 < skipjack;
+铷 < rubidium;
+铕 < europium;
+钋 < polonium;
+砑 < to\-grind;
+洫 < to\-ditch;
+埚 < crucible;
+垤 < ant\-hill;
+卺 < winecups;
+嘏 < felicity;
+鲽 < flatfish;
+鲭 < mackerel;
+钪 < scandium;
+钫 < francium;
+钐 < samarium;
+祓 < exorcise;
+栳 < a\-basket;
+吲 < smile\-at;
+莰 < camphane;
+芴 < fluorene;
+赜 < abstruse;
+改編 < to\-adapt;
+白內障 < cataract;
+壓緊 < compress;
+醫學 < medicine;
+吞併 < to\-annex;
+靈活 < flexible;
+大篷車 < schooner;
+文獻 < document;
+外用 < external;
+監護人 < guardian;
+邊線 < sideline;
+正統 < orthodox;
+斯洛伐克 < slovakia;
+頻仍 < frequent;
+緯線 < latitude;
+不合適 < improper;
+無誤 < verified;
+日曆 < calendar;
+剝落 < peel\-off;
+預卜 < foretell;
+謹慎 < cautious;
+茶館 < teahouse;
+企業間網路 < extranet;
+觀察者 < observer;
+鳥籠 < birdcage;
+建築 < building;
+藥劑士 < druggist;
+不信任 < mistrust;
+建立 < creation;
+因特網 < internet;
+心手 < new\-hand;
+冰隙 < crevasse;
+霸權 < hegemony;
+危急 < critical;
+隙縫 < aperture;
+對稱性 < symmetry;
+親身 < personal;
+確定 < definite;
+檢測器 < detector;
+終身 < lifelong;
+魔術師 < magician;
+記者 < reporter;
+規避 < to\-evade;
+牧師 < chaplain;
+收益 < earnings;
+平行 < parallel;
+忠實 < faithful;
+步發 < footwork;
+分裂 < split\-up;
+新書 < new\-book;
+不朽的 < immortal;
+口交 < oral\-sex;
+創立 < to\-found;
+煤箱 < coal\-box;
+油炸圈餅 < doughnut;
+缺乏 < shortage;
+日後 < sometime;
+歷史性 < historic;
+因﹍之故 < inasmuch;
+災難 < disaster;
+徹底 < thorough;
+檸檬水 < lemonade;
+鱉裙 < calipash;
+警句 < aphorism;
+早已 < long\-ago;
+破曉 < daybreak;
+雨滴 < raindrop;
+以太網 < ethernet;
+明天 < tomorrow;
+妖孽 < evildoer;
+電氣 < electric;
+酬報 < to\-repay;
+負重擔 < burdened;
+遺產 < heritage;
+硬度 < hardness;
+無聊 < nonsense;
+橫過 < traverse;
+雍容大度 < generous;
+征戰 < campaign;
+課本 < textbook;
+凋謝 < languish;
+十二月 < december;
+計算 < to\-count;
+開除 < to\-expel;
+纖巧 < delicate;
+擦網球 < net\-ball;
+無縫 < seamless;
+冠軍 < champion;
+准許 < to\-allow;
+電梯 < elevator;
+蓋層 < cap\-rock;
+面對 < confront;
+無線 < wireless;
+聖保羅 < st\.\-paul;
+通紅 < very\-red;
+包抄 < outflank;
+辨認 < identify;
+原來 < original;
+好好兒地 < properly;
+多數 < majority;
+物品 < articles;
+政治 < politics;
+半夜 < midnight;
+新年 < new\-year;
+旅客 < traveler;
+逼真 < lifelike;
+騎士氣概 < chivalry;
+西裡爾 < cyrillic;
+公釐 < decigram;
+殺戮 < massacre;
+艾德蕾德 < adelaide;
+力氣 < strength;
+內部 < interior;
+繡帷 < tapestry;
+太忙 < too\-busy;
+睡眠 < sleeping;
+十四 < fourteen;
+常坐汽車者 < motorist;
+平等 < equality;
+包層 < cladding;
+汽車展覽會 < car\-show;
+再見 < good\-bye;
+可擦寫 < erasable;
+免費軟件 < freeware;
+危亡 < at\-stake;
+巧計 < maneuver;
+著手 < commence;
+桃花心木 < mahogany;
+盲腸 < appendix;
+牧羊者 < shepherd;
+支柱 < mainstay;
+形容 < describe;
+無疑 < no\-doubt;
+強悍 < valliant;
+粗野 < insolent;
+袋鼠 < kangaroo;
+軟體 < software;
+新型 < new\-type;
+培育 < to\-train;
+煤油 < kerosene;
+加時 < overtime;
+標準規格 < standard;
+光輝 < radiance;
+復元 < recovery;
+十八 < eighteen;
+多少 < how\-much;
+十克 < decagram;
+地雷 < landmine;
+如今 < nowadays;
+邪惡 < sinister;
+無論何時 < whenever;
+觀看 < to\-watch;
+得分 < to\-score;
+筆記本 < notebook;
+軀體 < the\-body;
+硬件 < hardware;
+天堂 < paradise;
+薰衣草 < lavender;
+十九 < nineteen;
+光譜 < spectrum;
+補遺 < addendum;
+遠東 < far\-east;
+幾乎沒有 < scarcely;
+十三 < thirteen;
+不必要 < needless;
+機能 < function;
+蒙古 < mongolia;
+牧師之職 < ministry;
+遠景 < prospect;
+紐約 < new\-york;
+提議 < proposal;
+進步 < progress;
+電報 < telegram;
+請願書 < petition;
+車間 < workshop;
+往來 < dealings;
+引導 < to\-guide;
+龓 < a\-halter;
+裝貨 < shipping;
+力度 < dynamism;
+投資者 < investor;
+過於 < too\-much;
+鼚 < drumming;
+監禁 < imprison;
+冰窖 < icehouse;
+堂皇 < imposing;
+麮 < porridge;
+省略 < omission;
+六十四萬 < 64\-0\-000;
+寄生物 < parasite;
+肯塔基 < kentucky;
+母係 < maternal;
+柬埔寨 < cambodia;
+鵙 < a\-shrike;
+採買 < purchase;
+輕視 < contempt;
+精致 < delicacy;
+鳮 < chickens;
+遲延 < to\-delay;
+鲺 < cat\-fish;
+攜帶 < to\-carry;
+延展 < to\-scale;
+鯺 < blowfish;
+一小時 < one\-hour;
+部位 < position;
+蒙托羅拉 < motorola;
+人行道 < sidewalk;
+鬋 < forelock;
+鬀 < to\-shave;
+髵 < whiskers;
+內置 < internal;
+限期 < deadline;
+安全性 < security;
+髎 < hip\-bone;
+記憶 < memories;
+遷就 < to\-yield;
+強勁 < powerful;
+殺人 < homicide;
+再保証 < reassure;
+駦 < to\-mount;
+馩 < aromatic;
+人工流產 < abortion;
+剛性 < rigidity;
+餫 < dumpling;
+餩 < hiccough;
+餟 < libation;
+餙 < to\-adorn;
+颱 < taiphoon;
+勃勃 < thriving;
+擁擠 < to\-crowd;
+授課 < to\-teach;
+解散 < dissolve;
+韡 < gorgeous;
+韠 < knee\-pad;
+陰性 < feminine;
+靺 < stocking;
+動作 < movement;
+雞尾酒 < cocktail;
+敦促 < to\-press;
+霨 < clouding;
+橄欖球 < football;
+雇員 < employee;
+瀉藥 < laxative;
+換置 < displace;
+平底鍋 < saucepan;
+紀念碑 < monument;
+圖謀 < conspire;
+董事 < director;
+動人 < touching;
+阸 < distress;
+阻擊 < to\-check;
+補花 < applique;
+镥 < lutetium;
+塗抹 < to\-smear;
+裝船 < shipment;
+欺壓 < to\-bully;
+荒涼 < desolate;
+凹板 < intaglio;
+劣勢 < inferior;
+喇叭水仙 < daffodil;
+分數 < fraction;
+壓力 < pressure;
+那個 < that\-one;
+無情 < pitiless;
+擦寫 < to\-erase;
+壓制 < suppress;
+精確 < accurate;
+鍩 < nobelium;
+鍚 < frontlet;
+侵入者 < intruder;
+經常 < everyday;
+錒 < actinium;
+改革者 < reformer;
+步兵 < infantry;
+銍 < a\-sickle;
+平房 < bungalow;
+冰涼 < ice\-cold;
+企業內網路 < intranet;
+幻想 < delusion;
+序幕 < prologue;
+醆 < wine\-cup;
+醃 < marinate;
+酲 < hangover;
+鄈 < slippers;
+避免 < to\-avert;
+場所 < location;
+邅 < hesitant;
+雇主 < employer;
+揭發 < disclose;
+迻 < to\-shift;
+傳訊 < subpoena;
+評估 < evaluate;
+手提箱 < suitcase;
+偽造 < to\-forge;
+火牆 < firewall;
+轊 < axle\-tip;
+輬 < a\-hearse;
+凶手 < murderer;
+不同意 < disagree;
+共和國 < republic;
+無害 < harmless;
+軟膏 < ointment;
+蹾 < to\-squat;
+掌聲 < applause;
+表觀 < apparent;
+蹧 < to\-spoil;
+埋沒 < oblivion;
+平常 < ordinary;
+踦 < the\-shin;
+拔除 < pull\-out;
+增加 < to\-raise;
+跂 < creeping;
+無論何事 < anything;
+摩擦 < friction;
+覺得 < to\-think;
+高貴 < grandeur;
+棒磨機 < rod\-mill;
+充當 < serve\-as;
+為時 < timewise;
+達到 < to\-reach;
+豎 < vertical;
+西方 < the\-west;
+精力充沛 < vigorous;
+譹 < to\-shout;
+通報 < bulletin;
+撥子 < plectrum;
+抗體 < antibody;
+臨近 < close\-to;
+莫大 < greatest;
+哥倫布紀 < columbus;
+切實 < feasible;
+諆 < to\-cheat;
+詋 < to\-curse;
+詊 < pleasing;
+分子 < molecule;
+相應 < relevant;
+左輪手槍 < revolver;
+阻塞 < to\-block;
+襶 < ignorant;
+絕對 < absolute;
+襫 < raincoat;
+分娩 < delivery;
+管道 < pipeline;
+哥倫比亞 < colombia;
+遊伴 < playmate;
+工業 < industry;
+冰排 < ice\-raft;
+進入 < to\-enter;
+小夜曲 < serenade;
+小標題 < subtitle;
+路面 < pavement;
+蝟 < hedgehog;
+蝏 < \(insect\);
+撒母耳記下 < 2\-samuel;
+撒母耳記上 < 1\-samuel;
+有機體 < organism;
+直徑 < diameter;
+無名 < nameless;
+堵塞 < blockage;
+撤回 < withdraw;
+蚳 < ant\-eggs;
+經典 < classics;
+死衚衕 < dead\-end;
+騰騰 < steaming;
+交響曲 < symphony;
+逼人 < pressing;
+無助 < helpless;
+採用 < to\-adopt;
+已故 < the\-late;
+發汗 < to\-sweat;
+國立 < national;
+時間表 < schedule;
+蔉 < earth\-up;
+箴言 < proverbs;
+補爐 < fettling;
+自製 < homemade;
+葖 < follicle;
+頭向前 < headlong;
+阻力 < obstacle;
+探險者 < explorer;
+蠕蠕 < wiggling;
+艩 < tholepin;
+送別 < farewell;
+艌 < to\-caulk;
+無人 < unmanned;
+公斤 < kilogram;
+君主政治 < monarchy;
+受難者 < sufferer;
+抽象 < abstract;
+出口 < to\-speak;
+脰 < the\-neck;
+親善 < goodwill;
+興致 < interest;
+途中 < en\-route;
+肏 < copulate;
+間接 < indirect;
+鐵路 < railroad;
+搬弄 < move\-sth;
+巴拉圭 < paraguay;
+標本 < specimen;
+第一步 < step\-one;
+調味汁 < dressing;
+退位 < abdicate;
+罇 < a\-goblet;
+逃亡 < fugitive;
+戰鬥 < to\-fight;
+統一 < to\-unify;
+刑事 < criminal;
+數據庫 < database;
+縿 < streamer;
+縴 < tow\-line;
+債權人 < creditor;
+衝突 < conflict;
+追上 < overtake;
+綯 < to\-braid;
+綪 < dark\-red;
+航空 < aviation;
+修辭 < rhetoric;
+濾液 < filtrate;
+人口稠密 < populous;
+紞 < a\-fringe;
+對面 < opposite;
+函件 < letteres;
+弟兄們 < brethren;
+小說家 < novelist;
+籣 < bow\-case;
+簬 < \(bamboo\);
+馴鹿 < reindeer;
+驚訝 < confound;
+捕獲 < to\-catch;
+採樣 < sampling;
+純品 < sterling;
+近來 < recently;
+秏 < to\-waste;
+第五十 < fiftieth;
+三明治 < sandwich;
+寺院 < cloister;
+答話 < to\-reply;
+催化劑 < catalyst;
+火山 < volcanic;
+其實 < actually;
+生詞 < new\-word;
+磟 < mediocre;
+梵語 < sanskrit;
+碏 < coloured;
+便道 < shortcut;
+消費者 < consumer;
+寧靜 < tranquil;
+砹 < astatine;
+矋 < to\-stare;
+封鎖 < blockade;
+俯視 < overlook;
+瞓 < to\-sleep;
+睏 < be\-tired;
+引人注目 < striking;
+睅 < big\-eyed;
+濕氣 < moisture;
+盬 < salt\-pit;
+阿奇歷斯 < achilles;
+精密 < accuracy;
+茶匙 < teaspoon;
+兄弟 < brothers;
+癒 < get\-well;
+癃 < weakness;
+瘼 < sickness;
+瘶 < to\-cough;
+瘰 < scrofula;
+興盛 < flourish;
+倘若 < provided;
+關係 < relation;
+發射 < to\-shoot;
+瓩 < kilowatt;
+琫 < ornament;
+採掘 < excavate;
+越過 < to\-cross;
+珷 < \/2\-pr\-st;
+兵器 < weaponry;
+拔節 < jointing;
+演習 < exercise;
+奧德修斯 < odysseus;
+紊亂 < disorder;
+跳舞 < to\-dance;
+犎 < the\-zebu;
+牳 < \(bovine\);
+範疇 < category;
+兵員 < soldiers;
+滲色 < bleeding;
+熤 < \(person\);
+蛋黃 < egg\-yolk;
+焌 < to\-light;
+炤 < illumine;
+背面 < the\-back;
+瀡 < slippery;
+坦桑尼亞 < tanzania;
+輔導 < to\-coach;
+寶貴 < valuable;
+潎 < rippling;
+入口 < entrance;
+湢 < bathroom;
+開創 < initiate;
+侵蝕 < to\-erode;
+扁蟲 < flatworm;
+經陸路 < overland;
+容量 < capacity;
+描圖 < to\-trace;
+四月十七號 < april\-17;
+赤足 < barefoot;
+泐 < to\-write;
+沍 < freezing;
+在戶外 < outdoors;
+氉 < restless;
+毾 < a\-coarse;
+毻 < to\-moult;
+不顧一切 < reckless;
+殽 < mixed\-up;
+製品 < products;
+共享 < to\-share;
+欛 < a\-handle;
+擦棒球 < foul\-tip;
+櫃 < cupboard;
+公主 < princess;
+提名 < nominate;
+四方 < four\-way;
+中世紀 < medieval;
+樚 < a\-pulley;
+粗厲 < abrasive;
+傾聽者 < listener;
+椄 < to\-graft;
+梱 < doorsill;
+接收器 < receiver;
+勢如破竹 < sweeping;
+自治 < autonomy;
+高架 < overhead;
+困惑 < bewilder;
+柤 < hawthorn;
+枻 < long\-oar;
+笑聲 < laughter;
+農家庭院 < farmyard;
+松鼠 < squirrel;
+家庭作業 < homework;
+先令 < shilling;
+渠道 < channels;
+昡 < long\-day;
+校訂 < revision;
+旘 < a\-pennon;
+棒球 < baseball;
+優先 < priority;
+敪 < to\-weigh;
+攞 < to\-split;
+擩 < to\-stain;
+噴泉 < fountain;
+摷 < to\-knock;
+搵 < wipe\-off;
+搲 < to\-seize;
+搋 < to\-thump;
+揰 < poke\-out;
+揜 < cover\-up;
+軍士 < sergeant;
+揌 < to\-shake;
+衣廚 < wardrobe;
+拑 < to\-clamp;
+份量 < quantity;
+扅 < gate\-bar;
+應該 < ought\-to;
+採光 < lighting;
+懕 < satiated;
+憪 < composed;
+葡萄牙 < portugal;
+裁判 < judgment;
+即將來臨 < imminent;
+慫 < to\-alarm;
+慅 < agitated;
+慁 < dishonor;
+人類 < humanity;
+估計 < estimate;
+惔 < cheerful;
+坐下 < sit\-down;
+回家 < homeward;
+使者 < emissary;
+恝 < carefree;
+打破 < to\-break;
+恌 < to\-worry;
+假期 < vacation;
+不正常 < abnormal;
+衣子 < covering;
+音樂光碟 < music\-cd;
+軼事 < anecdote;
+廤 < to\-place;
+抱歉 < be\-sorry;
+極好 < fabulous;
+極大 < enormous;
+界標 < landmark;
+不透氣 < airtight;
+五彩賓紛 < colorful;
+帵 < remnants;
+節慶 < festival;
+暖氣機 < radiator;
+嶭 < elevated;
+阿肯色 < arkansas;
+神學研究所 < seminary;
+鬧區 < downtown;
+岊 < foothill;
+鼓吹者 < advocate;
+侵略 < invasion;
+併紗 < doubling;
+病夫 < sick\-man;
+授予 < to\-award;
+地下室 < basement;
+國內 < domestic;
+宬 < archives;
+嬬 < mistress;
+簡化 < simplify;
+漢密爾頓 < hamilton;
+買通 < to\-bribe;
+冒犯者 < offender;
+姦 < adultery;
+篡奪 < to\-usurp;
+臨床 < clinical;
+保真度 < fidelity;
+栽種 < to\-plant;
+戰略 < strategy;
+園丁 < gardener;
+本體 < noumenon;
+人造 < man\-made;
+語言學家 < linguist;
+居民 < resident;
+腳步 < footstep;
+埼 < headland;
+拼字 < spelling;
+東部 < the\-east;
+不體面 < shameful;
+高地 < highland;
+固件 < firmware;
+龍頭老大 < big\-boss;
+腓利門書 < philemon;
+鑲嵌 < to\-inlay;
+業務 < business;
+倍數 < multiple;
+對照 < contrast;
+囮 < inveigle;
+肩膀 < shoulder;
+身份 < identity;
+嗃 < to\-flute;
+就此 < and\-thus;
+埃塞俄比亞 < ethiopia;
+啇 < to\-stalk;
+筆架 < pen\-rack;
+唥 < a\-bundle;
+生日 < birthday;
+呠 < to\-spurt;
+鐘擺 < pendulum;
+小衝突 < skirmish;
+叒 < obedient;
+厵 < a\-spring;
+抱怨 < complain;
+卼 < unsteady;
+卹 < sympathy;
+學習 < to\-learn;
+折扣 < discount;
+勌 < to\-labor;
+劻 < flurried;
+懸疑 < suspense;
+劙 < a\-divide;
+懷疑 < to\-doubt;
+當天 < that\-day;
+剟 < to\-prick;
+鍵盤 < keyboard;
+凥 < to\-dwell;
+冇 < have\-not;
+排水渠 < drainage;
+巴基斯坦 < pakistan;
+麻醉劑 < narcotic;
+僃 < prepared;
+家用 < home\-use;
+佴 < a\-second;
+被侵害 < stricken;
+致力 < work\-for;
+五角 < pentagon;
+䶲 < the\-edge;
+䵲 < raw\-hemp;
+䵚 < kaoliang;
+䵓 < the\-mole;
+䵉 < abutilon;
+䴻 < dry\-food;
+䴫 < antelope;
+房東 < landlord;
+䴚 < saltpond;
+䳻 < an\-eagle;
+修建 < to\-build;
+䲖 < big\-fish;
+計算機 < computer;
+突發 < outburst;
+䰟 < the\-soul;
+䯪 < big\-head;
+信徒 < believer;
+䯚 < the\-ribs;
+䯉 < to\-choke;
+白木耳 < tremella;
+打掃 < to\-clean;
+技工 < mechanic;
+持久 < duration;
+䭱 < a\-little;
+風車 < windmill;
+獨裁者 < dictator;
+䬉 < hot\-wind;
+䫷 < the\-jowl;
+手提 < portable;
+不靈 < not\-work;
+䫃 < the\-lips;
+䪶 < the\-chin;
+䪩 < to\-chant;
+䪜 < a\-shield;
+䪑 < to\-stick;
+䪅 < a\-quiver;
+䩠 < a\-girdle;
+䩉 < the\-face;
+䩈 < a\-plumpy;
+䨼 < dyestuff;
+生存 < to\-exist;
+賦稅 < taxation;
+䧫 < a\-trench;
+䧁 < to\-leave;
+浴衣 < bathrobe;
+一面 < one\-side;
+䥭 < evidence;
+恐龍 < dinosaur;
+記錄員 < recorder;
+䤿 < to\-carve;
+䤶 < a\-hammer;
+䤳 < a\-mirrow;
+巴巴多斯 < barbados;
+䤫 < a\-chisel;
+䤐 < to\-drink;
+畫像 < portrait;
+當作 < treat\-as;
+禮貌 < courtesy;
+䢐 < to\-go\-to;
+蘇格蘭 < scotland;
+信封 < envelope;
+䠾 < to\-dodge;
+䠬 < insomnia;
+䠞 < wrinkled;
+聲稱 < to\-claim;
+䠁 < to\-go\-up;
+䟸 < the\-calf;
+對手 < opponent;
+信守 < abide\-by;
+䞮 < to\-crawl;
+聖約 < covenant;
+校正 < regulate;
+䝂 < to\-erect;
+䜬 < a\-cavern;
+䜘 < to\-guard;
+䜐 < to\-libel;
+䜃 < to\-blame;
+䛒 < to\-argue;
+重點 < emphasis;
+䛇 < to\-laugh;
+䚷 < to\-treat;
+䚯 < to\-quell;
+聽眾 < audience;
+葡萄園 < vineyard;
+䘫 < old\-rags;
+䘜 < a\-napkin;
+䘉 < silkworm;
+騎師 < horseman;
+秧苗 < seedling;
+䗘 < a\-weevil;
+䗈 < a\-gadfly;
+使興奮 < exciting;
+䗇 < the\-toad;
+䖻 < ephemera;
+䖤 < to\-creep;
+䖛 < of\-tiger;
+第十一 < eleventh;
+恭順 < deferent;
+鍵槽 < key\-slot;
+購物 < shopping;
+單據 < receipts;
+會變 < variable;
+䓕 < polygala;
+䒳 < a\-flower;
+少年 < juvenile;
+騙子 < swindler;
+聯盟 < alliance;
+䑘 < to\-pound;
+䑃 < dim\-moon;
+䐒 < not\-fine;
+方程式 < equation;
+路口 < crossing;
+䏟 < fat\-meat;
+處罰 < penalize;
+䏉 < to\-waver;
+䏈 < to\-unite;
+金魚 < goldfish;
+䎲 < ear\-lobe;
+䎣 < a\-plough;
+彫刻家 < sculptor;
+䌷 < a\-thread;
+䌯 < a\-truban;
+䌫 < a\-hawser;
+含量 < contents;
+䌃 < raw\-silk;
+阿托品 < atropine;
+䋡 < to\-relax;
+䋃 < stinging;
+䊸 < to\-twist;
+䊝 < to\-exile;
+用功 < diligent;
+䊁 < leavings;
+䉻 < red\-rice;
+䉱 < a\-cradle;
+䉒 < a\-winnow;
+䈶 < an\-arrow;
+地區性 < regional;
+䇌 < to\-stand;
+䆸 < spacious;
+筆名 < pen\-name;
+佛教 < buddhism;
+可靠 < reliable;
+三角形 < triangle;
+寓所 < dwelling;
+䃑 < speckles;
+䁥 < to\-blink;
+䁜 < big\-eyes;
+由余 < owing\-to;
+䀈 < a\-vessel;
+㿢 < to\-shine;
+㿡 < a\-helmet;
+㿈 < an\-ulcer;
+㿅 < ringworm;
+㾸 < a\-scabby;
+頁面 < web\-page;
+㾍 < diseases;
+㽹 < to\-faint;
+渴望 < desirous;
+本能 < instinct;
+嗜好 < fondness;
+終端用戶 < end\-user;
+墨水瓶架 < inkstand;
+㺚 < an\-otter;
+誘拐者 < abductor;
+缺陷 < a\-defect;
+㺇 < a\-warden;
+㹸 < the\-lion;
+蛋殼 < eggshell;
+戲劇性 < dramatic;
+懲罰性 < punitive;
+㸝 < a\-shovel;
+八角楓 < alangium;
+㷀 < solitary;
+㶼 < very\-hot;
+㴶 < to\-water;
+滑冰 < to\-skate;
+㴊 < an\-abyss;
+㳫 < repeated;
+㳒 < statutes;
+北海道 < hokkaido;
+㲷 < nitrogen;
+㲳 < to\-touch;
+宗教 < religion;
+低成本 < low\-cost;
+㱿 < the\-husk;
+㱺 < the\-skin;
+㱢 < the\-dead;
+㱗 < a\-breath;
+命脈 < lifeline;
+乃至 < and\-even;
+租稅 < land\-tax;
+不行 < won''t\-do;
+守時 < punctual;
+㮭 < a\-casket;
+暗轉 < blackout;
+打印 < to\-print;
+㬧 < a\-collar;
+明信片 < postcard;
+救贖主 < redeemer;
+㫽 < darkness;
+㪐 < unstable;
+貂皮 < mink\-fur;
+㩨 < to\-crack;
+㩓 < to\-wound;
+醫院 < hospital;
+㨓 < to\-close;
+㨁 < to\-throw;
+㧵 < to\-exact;
+㧱 < to\-bring;
+泳衣 < swimsuit;
+㦿 < a\-window;
+淚水 < teardrop;
+生命力 < vitality;
+㥰 < mournful;
+㥁 < morality;
+㤮 < an\-error;
+㤏 < grievous;
+肉桂 < cinnamon;
+㣫 < the\-heel;
+減掉 < subtract;
+㣞 < to\-walki;
+鼻炎 < rhinitis;
+㠹 < a\-turban;
+產量多 < fruitful;
+看守者 < watchman;
+㠊 < a\-rugged;
+法利賽人 < pharisee;
+㞷 < luxuiant;
+向西 < westward;
+叛逆 < to\-rebel;
+㞑 < the\-tail;
+㞉 < big\-foot;
+㝭 < to\-awake;
+㝘 < harmonoy;
+㜶 < a\-couple;
+戰區 < war\-zone;
+叱責 < reproach;
+佔領者 < occupant;
+科羅拉多 < colorado;
+貞潔 < chastity;
+㙢 < a\-trowel;
+㙃 < a\-cavity;
+栗子 < chestnut;
+㘙 < to\-groan;
+㘀 < to\-sound;
+中繼 < to\-relay;
+㗪 < mouthful;
+㗜 < to\-smell;
+㗉 < incisive;
+㖩 < not\-pure;
+㕼 < to\-brawl;
+鎮區 < township;
+㕛 < a\-friend;
+㕐 < inclined;
+㕊 < to\-slant;
+板油 < leaf\-fat;
+匪徒集團 < gangster;
+㓓 < thin\-ice;
+㒹 < to\-upset;
+懸垂 < overhang;
+射頻噪音 < rf\-noise;
+酒鬼 < drunkard;
+不肖 < unworthy;
+班機 < airliner;
+㐜 < an\-enemy;
+使吃驚 < astonish;
+窗子 < casement;
+應對 < response;
+交流 < exchange;
+叛變 < renegade;
+戰事 < fighting;
+幸存者 < survivor;
+人道主義 < humanism;
+一心一意 < intently;
+櫻花草 < primrose;
+核准 < sanction;
+星期四 < thursday;
+決定性 < decisive;
+日耳曼 < germanic;
+譴責 < denounce;
+案件 < law\-case;
+幾何學 < geometry;
+姻親 < affinity;
+村民 < villager;
+慷慨 < vehement;
+論點 < argument;
+傾向於 < prone\-to;
+黃瓜 < cucumber;
+暗自 < inwardly;
+懊喪 < dejected;
+稀有 < uncommon;
+飛機 < airplane;
+室友 < roommate;
+貶抑 < belittle;
+背包 < knapsack;
+精神錯亂 < insanity;
+黨派 < partisan;
+子層 < sublayer;
+飲料 < beverage;
+三月二十一號 < march\-21;
+人手 < manpower;
+星期六 < saturday;
+防守者 < defender;
+二月 < february;
+沒落 < downfall;
+含碳 < carbonic;
+嘉年華會 < carnival;
+最為 < the\-most;
+博茨瓦納 < botswana;
+不用 < need\-not;
+風水 < fengshui;
+水路 < waterway;
+子女 < children;
+事故 < accident;
+刺激物 < stimulus;
+壟斷販賣 < monopoly;
+不獨 < not\-only;
+奧克拉荷馬 < oklahoma;
+孵化 < breeding;
+鞭蟲 < whipworm;
+不爽 < not\-well;
+保加利亞 < bulgaria;
+懂事 < sensible;
+食慾 < appetite;
+震驚 < to\-shock;
+吸煙 < to\-smoke;
+謝謝 < to\-thank;
+不濟 < not\-good;
+頭痛 < headache;
+暗盒 < magazine;
+中止 < to\-cease;
+講話 < a\-speech;
+林地 < woodland;
+架勢 < attitude;
+貴族身份 < lordship;
+不信用 < distrust;
+太長 < oversize;
+勢頭 < momentum;
+愚弄 < derision;
+往還 < contacts;
+礦產 < minerals;
+提供諸 < provider;
+爐邊 < fireside;
+肌肉發達 < muscular;
+工程師 < engineer;
+變種 < mutation;
+中繼器 < repeater;
+論述 < treatise;
+洋琵琶 < mandolin;
+聖化 < sanctify;
+惡作劇 < mischief;
+重申 < reaffirm;
+暴洪 < a\-sudden;
+子午線 < meridian;
+製作者 < producer;
+不在乎 < not\-mind;
+餡兒 < stuffing;
+音樂家 < musician;
+使麻痺 < paralyze;
+千字節 < kilobyte;
+變阻器 < theostat;
+流感疫苗 < flu\-shot;
+海外 < overseas;
+王家 < princely;
+哨兵 < sentinel;
+想家 < homesick;
+買主 < customer;
+預測 < forecast;
+美日 < us\-japan;
+負債 < indebted;
+雨量 < rainfall;
+司法 < judicial;
+女房東 < landlady;
+工作過度 < overwork;
+加長 < lengthen;
+吐棄 < to\-spurn;
+處分 < disposal;
+日美 < japan\-us;
+增高 < heighten;
+遲頓 < inactive;
+財主 < rich\-man;
+夢話 < daydream;
+提供者 < supplier;
+不懈 < untiring;
+最少 < smallest;
+堅固性 < firmness;
+護照 < passport;
+主宰 < dominate;
+夢見 < to\-dream;
+不怕 < fearless;
+沖洗 < to\-rinse;
+不很 < not\-very;
+白化病 < albinism;
+剷除 < root\-out;
+神性 < divinity;
+總裁 < chairman;
+沉浸 < permeate;
+第六十 < sixtieth;
+美德 < a\-virtue;
+雄辯 < eloquent;
+點名 < rollcall;
+豪俠 < cavalier;
+文明化 < civilize;
+外號 < nickname;
+海上 < maritime;
+熱誠 < devotion;
+合成 < compound;
+外交官 < diplomat;
+同意 < to\-agree;
+向後 < backward;
+服務 < to\-serve;
+民眾 < populace;
+威望 < prestige;
+活動 < activity;
+叛教 < apostacy;
+白雲石 < dolomite;
+大能 < almighty;
+時機 < occasion;
+反映 < reaction;
+文職 < civilian;
+婚嫁 < marriage;
+君子 < nobleman;
+特派 < dispatch;
+使習慣 < accustom;
+一團 < regiment;
+播音 < transmit;
+台座 < pedestal;
+過載 < overload;
+祖國 < homeland;
+泰國 < thailand;
+解開 < to\-untie;
+愛因斯坦 < einstein;
+暗室 < darkroom;
+奶牛 < milk\-cow;
+冰晶石 < cryolite;
+年青 < youthful;
+一周 < one\-week;
+一向 < all\-long;
+曝光 < exposure;
+不小心 < heedless;
+納稅人 < taxpayer;
+無論何處 < anywhere;
+再出現 < reappear;
+一匙 < spoonful;
+研究 < research;
+怠惰 < idleness;
+包皮 < wrapping;
+靠背椅 < armchair;
+奉現 < offering;
+不倦 < tireless;
+操作者 < operator;
+訂購 < to\-order;
+絲狀物 < filament;
+斑白 < grizzled;
+暴力 < violence;
+警惕 < vigilant;
+波動 < undulate;
+奇特 < peculiar;
+忠於 < loyal\-to;
+發明家 < inventor;
+選舉 < to\-elect;
+大西洋 < atlantic;
+韌帶 < ligament;
+迷 < bewitch;
+述 < narrate;
+迥 < distant;
+中 < central;
+志 < purpose;
+迎 < receive;
+忌 < jealous;
+和 < harmony;
+辯 < dispute;
+去 < go\-away;
+对 < correct;
+瞠 < look\-at;
+律 < statute;
+役 < service;
+張 < stretch;
+已 < already;
+弘 < enlarge;
+引 < to\-pull;
+弔 < condole;
+較 < compare;
+意 < thought;
+进 < advance;
+盡 < exhaust;
+廉 < upright;
+情 < feeling;
+皰 < pimples;
+庖 < kitchen;
+躓 < stumble;
+庄 < village;
+并 < combine;
+蹠 < step\-on;
+癖 < craving;
+幕 < curtain;
+代 < replace;
+師 < teacher;
+总 < collect;
+痴 < foolish;
+华 < flowery;
+症 < disease;
+病 < illness;
+反 < reverse;
+疎 < neglect;
+务 < affairs;
+崩 < rupture;
+特 < special;
+服 < clothes;
+賽 < compete;
+賑 < relieve;
+科 < section;
+豫 < relaxed;
+联 < connect;
+保 < protect;
+革 < leather;
+尊 < respect;
+品 < article;
+尉 < officer;
+士 < scholar;
+量 < measure;
+程 < journey;
+審 < examine;
+极 < extreme;
+令 < command;
+未 < not\-yet;
+持 < sustain;
+历 < history;
+宣 < declare;
+宗 < lineage;
+议 < consult;
+率 < to\-lead;
+委 < appoint;
+兵 < soldier;
+孔 < opening;
+謹 < prudent;
+講 < explain;
+格 < pattern;
+諸 < several;
+諦 < careful;
+怕 < to\-fear;
+狡 < cunning;
+准 < approve;
+精 < essence;
+竟 < finally;
+誠 < sincere;
+整 < orderly;
+婉 < amiable;
+备 < prepare;
+另 < another;
+陈 < exhibit;
+故 < ancient;
+訛 < swindle;
+託 < entrust;
+訊 < inquire;
+爆 < crackle;
+批 < comment;
+送 < see\-off;
+奇 < strange;
+燕 < swallow;
+燈 < lantern;
+游 < to\-swim;
+份 < portion;
+敢 < to\-dare;
+煽 < stir\-up;
+朝 < dynasty;
+育 < produce;
+图 < diagram;
+刘 < surname;
+夕 < evening;
+承 < inherit;
+乡 < country;
+裁 < cut\-out;
+演 < perform;
+袂 < sleeves;
+衰 < decline;
+塞 < stop\-up;
+景 < scenery;
+蠢 < wriggle;
+依 < rely\-on;
+瀝 < trickle;
+胜 < victory;
+濡 < immerse;
+濟 < to\-help;
+蟋 < cricket;
+漆 < varnish;
+漁 < to\-fish;
+散 < scatter;
+蛆 < maggots;
+曲 < crooked;
+溶 < to\-melt;
+厂 < factory;
+肯 < willing;
+抓 < scratch;
+虫 < insects;
+湧 < well\-up;
+靠 < lean\-on;
+授 < give\-to;
+渇 < thirsty;
+淺 < shallow;
+淫 < obscene;
+鷄 < chicken;
+嗇 < miserly;
+抱 < embrace;
+睛 < eyeball;
+括 < include;
+降 < descend;
+私 < private;
+蔑 < disdain;
+泡 < bubbles;
+闹 < quarrel;
+醒 < wake\-up;
+沌 < chaotic;
+暴 < violent;
+抢 < plunder;
+篇 < chapter;
+鱈 < codfish;
+诸 < various;
+叭 < trumpet;
+叙 < express;
+厭 < dislike;
+雅 < elegant;
+雷 < thunder;
+竞 < contend;
+操 < conduct;
+诺 < promise;
+匆 < hastily;
+欅 < zelkova;
+苺 < berries;
+苗 < sprouts;
+碰 < collide;
+苑 < pasture;
+仿 < imitate;
+機 < machine;
+栏 < railing;
+刈 < cut\-off;
+狠 < vicious;
+映 < project;
+忠 < loyalty;
+扎 < pull\-up;
+腹 < stomach;
+舒 < open\-up;
+凶 < culprit;
+慰 < comfort;
+餘 < surplus;
+撒 < release;
+愁 < anxiety;
+斤 < a\-catty;
+僑 < sojourn;
+扶 < support;
+毁 < destroy;
+械 < weapons;
+违 < disobey;
+丢 < discard;
+肆 < indulge;
+绕 < entwine;
+聳 < urge\-on;
+舰 < warship;
+恼 < angered;
+辣 < peppery;
+旋 < revolve;
+倉 < granary;
+罚 < penalty;
+拾 < pick\-up;
+恢 < restore;
+翁 < old\-man;
+羽 < feather;
+抖 < tremble;
+侯 < marquis;
+惑 < confuse;
+雕 < engrave;
+寿 < old\-age;
+锦 < brocade;
+杏 < apricot;
+慌 < nervous;
+屠 < butcher;
+柏 < cypress;
+霍 < quickly;
+陶 < pottery;
+摄 < take\-in;
+闯 < rush\-in;
+扰 < disturb;
+雀 < sparrow;
+阁 < chamber;
+卢 < cottage;
+柜 < cabinet;
+暇 < leisure;
+愧 < ashamed;
+晶 < crystal;
+晝 < daytime;
+筋 < muscles;
+撑 < prop\-up;
+填 < fill\-in;
+旺 < prosper;
+耗 < consume;
+悦 < pleased;
+斑 < mottled;
+践 < trample;
+惶 < fearful;
+簾 < a\-blind;
+贩 < peddler;
+戈 < halberd;
+鐐 < fetters;
+虹 < rainbow;
+寡 < widowed;
+郊 < suburbs;
+徽 < a\-badge;
+鲍 < abalone;
+笄 < hairpin;
+沾 < moisten;
+瞒 < deceive;
+竃 < furnace;
+裔 < progeny;
+匪 < bandits;
+榜 < placard;
+枉 < useless;
+骇 < terrify;
+撰 < compose;
+垃 < garbage;
+驼 < a\-camel;
+豹 < leopard;
+缴 < deliver;
+哨 < whistle;
+嚼 < prattle;
+昧 < obscure;
+旱 < drought;
+聂 < whisper;
+莽 < thicket;
+厮 < servant;
+茨 < caltrop;
+粘 < viscous;
+朽 < decayed;
+焕 < shining;
+熄 < put\-out;
+逾 < go\-over;
+醋 < vinegar;
+斌 < refined;
+恕 < forgive;
+沦 < be\-lost;
+岱 < daishan;
+讳 < conceal;
+岔 < diverge;
+垒 < rampart;
+翘 < turn\-up;
+觑 < peep\-at;
+拎 < to\-haul;
+噜 < verbose;
+凹 < concave;
+撩 < lift\-up;
+崽 < a\-child;
+涅 < blacken;
+簌 < falling;
+诛 < execute;
+掳 < capture;
+馅 < filling;
+硅 < silicon;
+抨 < impeach;
+肾 < kidneys;
+锭 < spindle;
+茬 < harvest;
+谤 < slander;
+钳 < pincers;
+睽 < staring;
+阱 < pitfall;
+汀 < sandbar;
+秤 < balance;
+晾 < air\-dry;
+跚 < stagger;
+莞 < smiling;
+鸥 < seagull;
+葆 < reserve;
+氢 < ammonia;
+帧 < picture;
+佯 < pretend;
+烬 < cinders;
+蚌 < oysters;
+谆 < patient;
+癞 < leprosy;
+啄 < to\-peck;
+燎 < to\-burn;
+迳 < pass\-by;
+恸 < sadness;
+咂 < to\-suck;
+盹 < to\-doze;
+俾 < so\-that;
+谚 < proverb;
+掸 < to\-dust;
+匮 < to\-lack;
+幡 < pennant;
+囱 < chimney;
+崂 < laoshan;
+蝌 < tadpole;
+铀 < uranium;
+挛 < tangled;
+绯 < scarlet;
+鸨 < bustard;
+蜗 < a\-snail;
+恫 < in\-pain;
+谀 < flatter;
+踮 < tip\-toe;
+馊 < spoiled;
+钙 < calcium;
+捱 < put\-off;
+蒿 < mugwort;
+酶 < enzymes;
+衢 < highway;
+磺 < sulphur;
+蹩 < to\-limp;
+浣 < to\-wash;
+疹 < measles;
+靥 < dimples;
+愆 < a\-fault;
+鸵 < ostrich;
+窕 < slender;
+迩 < be\-near;
+佰 < hundred;
+钹 < cymbals;
+靼 < tartars;
+煲 < to\-heat;
+獐 < roebuck;
+佝 < rickets;
+蓟 < circium;
+黜 < dismiss;
+摈 < exclude;
+飓 < cyclone;
+胱 < bladder;
+饽 < ferrule;
+馏 < distill;
+苯 < benzene;
+淼 < a\-flood;
+铱 < iridium;
+葩 < flowers;
+逡 < retreat;
+逶 < winding;
+萸 < dogwood;
+挝 < to\-beat;
+熵 < entropy;
+煨 < to\-stew;
+砒 < arsenic;
+晁 < morning;
+凇 < dewdrop;
+噘 < pouting;
+唣 < chatter;
+骠 < charger;
+怄 < annoyed;
+锂 < lithium;
+疥 < scabies;
+稗 < darnels;
+洮 < cleanse;
+酮 < ketones;
+腚 < buttock;
+腱 < tendons;
+馔 < to\-feed;
+搠 < to\-daub;
+酡 < flushed;
+呒 < unclear;
+痧 < cholera;
+笤 < a\-broom;
+韫 < secrete;
+怛 < grieved;
+皴 < chapped;
+睢 < gaze\-at;
+塬 < plateau;
+螯 < nippers;
+獒 < mastiff;
+沆 < a\-ferry;
+帔 < a\-skirt;
+薅 < to\-weed;
+莴 < lettuce;
+捭 < to\-open;
+葭 < bulrush;
+倥 < boorish;
+溴 < bromine;
+廛 < a\-store;
+揸 < handful;
+仵 < similar;
+髋 < hipbone;
+肱 < forearm;
+蚍 < mussels;
+镓 < gallium;
+铋 < bismuth;
+胝 < callous;
+赍 < present;
+翥 < to\-soar;
+蜞 < grapsus;
+谠 < counsel;
+矬 < a\-dwarf;
+溲 < urinate;
+蕻 < budding;
+鹈 < pelican;
+镉 < cadmium;
+謇 < stutter;
+憷 < painful;
+谡 < rise\-up;
+褊 < cramped;
+钍 < thorium;
+氪 < krypton;
+迮 < to\-rise;
+蓍 < milfoil;
+螽 < katydid;
+剀 < sharpen;
+蹀 < to\-skip;
+锎 < caesium;
+钇 < yttrium;
+氚 < tritium;
+犸 < mammoth;
+菸 < to\-fade;
+鲱 < herring;
+躞 < to\-walk;
+铌 < niobium;
+畀 < to\-give;
+遘 < to\-meet;
+泷 < raining;
+蒡 < burdock;
+髌 < kneecap;
+鳙 < bighead;
+絷 < confine;
+箦 < bed\-mat;
+瘘 < fistula;
+镄 < fermium;
+祆 < ormazda;
+嫠 < a\-widow;
+搴 < extract;
+僦 < to\-heir;
+牽扯 < involve;
+看得見 < visible;
+婚事 < wedding;
+檢閱 < inspect;
+訴苦 < grumble;
+有資格 < entitle;
+暫停 < suspend;
+歡迎光臨 < welcome;
+觸角 < antenna;
+圓石頭 < boulder;
+罷休 < give\-up;
+奧地利 < austria;
+認真 < earnest;
+時尚 < fashion;
+版本 < version;
+庇護 < shelter;
+酸性 < acidity;
+編纂 < compile;
+君主 < monarch;
+總理 < premier;
+天然 < natural;
+睡衣 < pajamas;
+整理 < arrange;
+煙草 < tobacco;
+燦爛 < glitter;
+可動 < movable;
+水手 < mariner;
+傳道部 < mission;
+口吃 < stammer;
+創世紀 < genesis;
+菏蘭 < holland;
+菠菜 < spinach;
+十月 < october;
+千位元 < kilobit;
+揚聲器 < speaker;
+毛毯 < blanket;
+管理員 < manager;
+陽臺 < balcony;
+狂喜 < ecstasy;
+永恆 < eternal;
+請求 < request;
+海軍總司令 < admiral;
+出走 < to\-flee;
+老資格 < veteran;
+效益 < benefit;
+重力 < gravity;
+金銀塊 < bullion;
+碼字 < numeral;
+弄碎 < crumble;
+沙丁魚 < sardine;
+姐妹 < sisters;
+目錄 < catalog;
+心愛 < beloved;
+弄短 < shorten;
+無處 < nowhere;
+變厚 < thicken;
+妖怪 < monster;
+緊緊 < closely;
+隱私 < privacy;
+關鍵 < crucial;
+姿勢 < posture;
+安提瓜島 < antigua;
+喪心病狂 < lunatic;
+強烈 < intense;
+好戰 < warlike;
+弄皺 < crumple;
+相連 < to\-link;
+文法 < grammar;
+古來 < oldtime;
+天氣 < weather;
+酒廠 < brewery;
+征服 < conquer;
+索道 < ropeway;
+陸續 < in\-turn;
+隱瞞 < to\-hide;
+外流 < outflow;
+工頭 < foreman;
+遠端 < far\-end;
+出納員 < cashier;
+加甜 < sweeten;
+音信 < message;
+障礙 < barrier;
+警告 < to\-warn;
+然而 < however;
+大概 < roughly;
+愛遊玩 < playful;
+格子棉布 < gingham;
+鋼琴家 < pianist;
+電池 < battery;
+比方 < analogy;
+計數者 < counter;
+退落 < subside;
+變亂 < turmoil;
+熱潮 < upsurge;
+解剖學 < anatomy;
+欺瞞 < to\-fool;
+有學問 < learned;
+議價 < bargain;
+纖弱 < fragile;
+見證 < witness;
+加熱 < heating;
+半吊子 < dabbler;
+非常 < unusual;
+勇氣 < courage;
+失效 < to\-fail;
+先驅 < pioneer;
+犯人 < convict;
+難民 < refugee;
+遺物 < remnant;
+毒打 < beat\-up;
+醜事 < scandal;
+降級 < degrade;
+焦糖 < caramel;
+摘要 < summary;
+進程 < process;
+摔角 < wrestle;
+包扎 < wrap\-up;
+廢物 < rubbish;
+天花板 < ceiling;
+殘株 < stubble;
+好奇 < curious;
+登陸 < to\-land;
+監視 < oversee;
+形成 < to\-form;
+總數 < a\-total;
+德國 < germany;
+統統 < totally;
+大盤子 < platter;
+無窮 < endless;
+矮林 < coppice;
+境界 < boundry;
+不能不 < have\-to;
+弄歪 < distort;
+冰袋 < ice\-bag;
+出入口 < gateway;
+消防隊員 < fireman;
+起皺紋 < shrivel;
+閱讀 < to\-read;
+郵差 < postman;
+面嚮 < to\-face;
+觸發 < trigger;
+瀝青 < asphalt;
+即便 < even\-if;
+大廈 < edifice;
+發酵 < ferment;
+幸福 < blessed;
+無益 < no\-good;
+防禦 < defense;
+歷時 < to\-last;
+托兒所 < nursery;
+艷紅色 < crimson;
+特許狀 < charter;
+拖曳機 < tractor;
+版刻 < carving;
+配偶 < consort;
+預言家 < prophet;
+救援 < to\-save;
+日出 < sunrise;
+氣候 < climate;
+繃帶 < bandage;
+逗留 < stay\-at;
+利用 < exploit;
+區區 < trivial;
+背叛者 < traitor;
+微光 < glimmer;
+每夜 < nightly;
+違法 < illegal;
+出租 < to\-rent;
+雀斑 < freckle;
+大使館 < embassy;
+大草原 < prairie;
+物理學 < physics;
+收據 < receipt;
+十六 < sixteen;
+繪圖 < to\-draw;
+知悉 < to\-know;
+熱情 < cordial;
+十倍 < tenfold;
+剛毛 < bristle;
+橫臥 < recline;
+刺激 < provoke;
+經濟 < economy;
+細節 < details;
+扳不倒兒 < tumbler;
+樂趣 < delight;
+爬蟲動物 < reptile;
+索馬裡 < somalia;
+十五 < fifteen;
+多大 < how\-big;
+共處 < coexist;
+攪拌 < to\-stir;
+輕輕 < lightly;
+廣播網 < network;
+巴格達 < baghdad;
+利潤 < profits;
+外科醫生 < surgeon;
+裝載 < to\-load;
+包含 < contain;
+擯棄 < abandon;
+在﹍之間 < between;
+發行 < publish;
+白蟻 < termite;
+選手 < athlete;
+失去 < to\-lose;
+輪詢 < to\-poll;
+花費 < expense;
+葉子 < foliage;
+草稿 < outline;
+武庫 < arsenal;
+銀行業 < banking;
+弄平 < flatten;
+制止 < to\-curb;
+照搬 < to\-copy;
+龡 < to\-blow;
+補貼 < subsidy;
+齰 < to\-bite;
+齩 < to\-chew;
+正常 < regular;
+鼷 < a\-mouse;
+文化 < culture;
+崩陷 < fall\-in;
+鸑 < a\-large;
+巴結 < fawn\-on;
+鷟 < phoenix;
+鶺 < wagtail;
+鶹 < the\-owl;
+手推車 < trolley;
+皺紋 < wrinkle;
+權杖 < scepter;
+百萬 < million;
+多半 < chiefly;
+週末 < weekend;
+鴫 < a\-snipe;
+初步 < initial;
+勞動者 < laborer;
+煩惱 < agonize;
+鲚 < anchovy;
+煩悶 < anguish;
+幫派 < faction;
+美洲豹 < panther;
+表面 < surface;
+糟糕 < too\-bad;
+總則 < profile;
+險峻 < arduous;
+制服 < uniform;
+像銀 < silvery;
+魜 < mermaid;
+前提 < premise;
+維持 < to\-keep;
+接觸 < contact;
+花崗石 < granite;
+夥伴 < partner;
+骫 < be\-bent;
+骉 < running;
+擁有 < to\-have;
+在其中 < therein;
+驙 < \(horse\);
+驒 < dappled;
+此外 < besides;
+強制 < enforce;
+車輛 < vehicle;
+芬蘭 < finland;
+數位 < digital;
+十億位元 < gigabit;
+颫 < a\-storm;
+執照 < license;
+無效 < in\-vain;
+韣 < bow\-bag;
+韅 < harness;
+紙煙 < cigaret;
+眺望 < lookout;
+關照 < concern;
+雚 < a\-heron;
+冰片 < borneol;
+劇場 < theater;
+熱切 < fervent;
+陾 < in\-file;
+五月十五號 < may\-1\-5;
+陞 < promote;
+阻攔 < to\-stop;
+阧 < sloping;
+弟兄 < brother;
+眉毛 < eyebrow;
+被褥 < bedding;
+擺子 < malaria;
+擔心 < anxious;
+身體障害 < cripple;
+公社 < commune;
+铽 < terbium;
+铼 < rhenium;
+铪 < hafnium;
+铥 < thulium;
+铑 < rhodium;
+钬 < holmium;
+結果 < outcome;
+歲入 < revenue;
+墊子 < cushion;
+監測 < monitor;
+梵帝岡 < vatican;
+同義字 < synonym;
+錶 < a\-watch;
+鬢角 < temples;
+錀 < \(metal\);
+揭示 < to\-show;
+鋊 < a\-poker;
+鋂 < bit\-cup;
+痕跡 < vestige;
+剝奪 < deprive;
+農民 < peasant;
+愛國者 < patriot;
+廠商 < company;
+女主人 < hostess;
+白榴石 < leucite;
+你自己 < thyself;
+冒煙 < smoking;
+簡要 < concise;
+紅海 < red\-sea;
+冰河 < glacial;
+純正 < genuine;
+刨工 < planing;
+派給工作 < to\-task;
+幻影 < phantom;
+自由派 < liberal;
+拔頂 < topping;
+疾走 < scamper;
+轒 < chariot;
+已滅 < extinct;
+籠罩 < envelop;
+軲 < a\-wheel;
+軘 < war\-car;
+螢火蟲 < firefly;
+躦 < to\-jump;
+躝 < to\-pass;
+百分之 < percent;
+鬆緊帶 < elastic;
+薔薇花蕾 < rosebud;
+附寄 < enclose;
+無論何人 < whoever;
+跬 < to\-step;
+寄宿生 < boarder;
+跕 < shuffle;
+趷 < to\-jolt;
+絨布 < flannel;
+儘管 < despite;
+阻尼 < damping;
+甜點 < dessert;
+發現 < to\-find;
+贇 < affable;
+贃 < to\-earn;
+閃爍 < flicker;
+衣裝 < garment;
+賝 < preious;
+備註 < remarks;
+闡明 < clarify;
+受歡迎 < popular;
+豗 < clamour;
+到場 < show\-up;
+盛會 < pageant;
+讌 < a\-feast;
+謳 < to\-sing;
+謆 < beguile;
+飛機場 < airport;
+詾 < noisily;
+偽證 < perjury;
+詫 < to\-brag;
+詅 < to\-sell;
+照亮 < lighten;
+陳列 < display;
+阿爾及利亞 < algeria;
+觡 < antlers;
+陽傘 < parasol;
+山頂 < hilltop;
+掌管 < control;
+襜 < flutter;
+襃 < commend;
+褔 < complex;
+袺 < hold\-up;
+擠入 < intrude;
+衵 < chemise;
+權利 < a\-power;
+花環 < garland;
+公民 < citizen;
+巴林 < bahrain;
+偽裝 < to\-fake;
+堅強 < staunch;
+斯瓦希裡 < swahili;
+航空郵件 < airmail;
+亞特蘭大 < atlanta;
+進退兩難 < dilemma;
+平均 < average;
+實際上 < in\-fact;
+刺刀 < bayonet;
+簸箕 < dustpan;
+充滿 < full\-of;
+帳帘 < drapery;
+薽 < \(grass\);
+薶 < to\-bury;
+反應堆 < reactor;
+薓 < ginseng;
+激素 < hormone;
+解剖 < dissect;
+莊嚴 < stately;
+平台 < terrace;
+菪 < henbane;
+菧 < stibene;
+拍賣 < auction;
+滋養 < nourish;
+解僱 < to\-fire;
+莀 < to\-farm;
+到來 < arrival;
+床側 < bedside;
+標槍 < javelin;
+疫苗 < vaccine;
+超齡 < too\-old;
+因素 < element;
+冰川 < glacier;
+闊度 < breadth;
+舓 < to\-lick;
+臝 < be\-bare;
+轟擊 < bombard;
+腖 < peptone;
+冰島 < iceland;
+異教徒 < heathen;
+圖畫 < drawing;
+脝 < distend;
+分析人士 < analyst;
+冰山 < iceberg;
+外邦人 < gentile;
+移民者 < migrant;
+不吉利 < ominous;
+罖 < kwukyel;
+最低限度 < minimum;
+缲 < to\-reel;
+療法 < therapy;
+創造者 < creator;
+尖頂 < steeple;
+腹部 < abdomen;
+發放 < provide;
+瘋狂 < madness;
+緁 < to\-join;
+插曲 < episode;
+絪 < matting;
+克什米爾 < kashmir;
+女英雄 < heroine;
+活動房屋 < trailer;
+什一奉獻 < tithing;
+內羅畢 < nairobi;
+抗議 < protest;
+帶動 < to\-spur;
+公式 < formula;
+笓 < to\-comb;
+墨西哥人 < mexican;
+災害 < scourge;
+花束 < bouquet;
+已婚 < married;
+痒痒 < to\-itch;
+使高貴 < dignify;
+例題 < example;
+稇 < to\-bind;
+優於 < surpass;
+終于 < at\-last;
+加榮耀於 < glorify;
+禂 < to\-pray;
+信賴 < confide;
+芥末 < mustard;
+地質學 < geology;
+冷卻 < cooling;
+桌面 < desktop;
+履行 < fulfill;
+皇帝 < emperor;
+碃 < \(stone\);
+篇章 < writing;
+矟 < ''\-lance;
+瞯 < to\-peep;
+不干不淨 < unclean;
+寬闊 < expanse;
+關鍵詞 < keyword;
+內容 < content;
+眽 < to\-gaze;
+眴 < dazzled;
+三位一體 < trinity;
+傲然 < loftily;
+巴松管 < bassoon;
+因為 < because;
+樵夫 < woodman;
+布隆迪 < burundi;
+畐 < to\-fill;
+自私 < selfish;
+典型 < typical;
+茶具 < tea\-set;
+甔 < big\-jar;
+糊塗 < muddled;
+瓛 < scaptre;
+璺 < a\-crack;
+璊 < reddish;
+蒙大拿 < montana;
+獹 < a\-hound;
+炭疽病 < anthrax;
+獚 < spaniel;
+公益事業 < utility;
+節目 < program;
+鑽石 < diamond;
+園林 < gardens;
+狉 < fox\-cub;
+軌枕 < sleeper;
+英國 < england;
+首飾 < jewelry;
+日常工作 < routine;
+工匠 < artisan;
+熯 < by\-fire;
+俘虜 < captive;
+煻 < to\-warm;
+臂章 < armband;
+自由 < freedom;
+史密特 < schmitt;
+灴 < to\-bake;
+布丁 < pudding;
+瀹 < to\-boil;
+圍攻 < besiege;
+喝采 < acclaim;
+澐 < billows;
+生育 < to\-bear;
+赤道 < equator;
+潬 < a\-rapid;
+富士通 < fujitsu;
+男性親屬 < kinsman;
+溦 < drizzle;
+門口 < doorway;
+烹調術 < cookery;
+貨物運輸 < freight;
+損傷 < to\-harm;
+渼 < ripples;
+渧 < to\-drop;
+身材 < stature;
+英勇 < bravery;
+印刷者 < printer;
+混合物 < mixture;
+阿克倫 < acheron;
+涶 < to\-spit;
+涒 < meander;
+洸 < sparkle;
+牙科醫生 < dentist;
+問題 < problem;
+寄送 < to\-send;
+傾斜 < incline;
+郡治安官 < sheriff;
+無神論 < atheism;
+汋 < to\-pour;
+不動搖 < unmoved;
+氼 < to\-sink;
+困擾 < perplex;
+氕 < protium;
+押沙龍 < absalom;
+抄網 < dip\-net;
+歜 < furious;
+嚴正 < sternly;
+催眠曲 < lullaby;
+亞伯拉罕 < abraham;
+或許 < perhaps;
+榮幸 < honored;
+克羅地亞 < croatia;
+馬蹬 < stirrup;
+橆 < without;
+商隊 < caravan;
+牛頭犬 < bulldog;
+學院 < college;
+僵局 < impasse;
+捕手 < catcher;
+榢 < a\-frame;
+投票 < to\-vote;
+使魔法 < conjure;
+全神灌注 < rapture;
+椗 < \(plant\);
+安乃近 < analgin;
+蛋白質 < protein;
+專科院校 < academy;
+行李 < luggage;
+提到 < mention;
+驕矜 < haughty;
+芝加哥 < chicago;
+八帶魚 < octopus;
+洗衣店 < laundry;
+信箱 < mailbox;
+枼 < a\-table;
+枓 < capital;
+杸 < to\-kill;
+朾 < to\-bump;
+概念 < concept;
+不得勁 < awkward;
+地址 < address;
+孔雀 < peacock;
+滑稽 < comical;
+敾 < to\-rule;
+敯 < to\-defy;
+敜 < fill\-up;
+低調 < low\-key;
+擸 < to\-hold;
+按時 < on\-time;
+摠 < general;
+長頸鹿 < giraffe;
+打算 < to\-plan;
+掯 < oppress;
+小組 < a\-group;
+挍 < collate;
+女高音 < soprano;
+按摩 < massage;
+抈 < to\-bend;
+扽 < to\-move;
+質量 < quality;
+節日 < holiday;
+比利時 < belgium;
+不調和 < discord;
+懰 < be\-glad;
+懫 < enraged;
+有陰影 < shadowy;
+懛 < alarmed;
+懅 < bashful;
+產物 < product;
+供給 < furnish;
+惣 < overall;
+惇 < be\-kind;
+舞弄 < to\-wave;
+指關節 < knuckle;
+打碎 < shatter;
+恉 < meaning;
+在前 < forward;
+給與資格 < qualify;
+七月三十號 < july\-30;
+李鵬 < li\-peng;
+安設 < install;
+責難 < censure;
+島嶼 < islands;
+查調 < inquiry;
+便盆 < bed\-pan;
+蠱惑 < enchant;
+廌 < unicorn;
+滲漏 < seepage;
+平常日 < weekday;
+聯邦 < federal;
+漂泊 < drifter;
+儲藏室 < storage;
+噸數 < tonnage;
+匈牙利 < hungary;
+商討 < discuss;
+香菜 < parsley;
+海鮮 < seafood;
+臥房 < bedroom;
+印地安那 < indiana;
+僥倖 < luckily;
+傳單 < leaflet;
+不得而知 < unknown;
+墓誌銘 < epitaph;
+香腸 < sausage;
+航空公司 < airline;
+媞 < at\-ease;
+走私 < smuggle;
+有耐久力 < durable;
+一會兒 < a\-while;
+不道德 < immoral;
+龍蝦 < lobster;
+烏克蘭 < ukraine;
+太陽黑子 < sunspot;
+在室內 < indoors;
+夣 < a\-dream;
+壝 < a\-mound;
+希伯來書 < hebrews;
+塓 < plaster;
+椰子 < coconut;
+鑒戒 < warning;
+堄 < parapet;
+代詞 < pronoun;
+埗 < a\-wharf;
+丹麥 < denmark;
+不離兒 < not\-bad;
+圕 < library;
+圂 < pig\-sty;
+畫廊 < gallery;
+白蛋白 < albumin;
+嚊 < to\-pant;
+主席臺 < rostrum;
+衝力 < impulse;
+類固醇 < steroid;
+喥 < a\-place;
+完美 < perfect;
+展望 < outlook;
+評議會 < council;
+有希望 < hopeful;
+竊盜 < burglar;
+唞 < to\-gasp;
+唅 < a\-sound;
+家禽 < poultry;
+傷寒症 < typhoid;
+咾 < a\-noise;
+咉 < an\-echo;
+奧林匹克 < olympic;
+到那裡 < thither;
+呿 < to\-yawn;
+呬 < to\-rest;
+亞利桑那 < arizona;
+呌 < to\-call;
+空缺 < vacancy;
+最高 < highest;
+畫家 < painter;
+養老金 < pension;
+疲勞 < fatigue;
+卲 < eminent;
+匧 < a\-trunk;
+不齒 < despise;
+投手 < pitcher;
+海邊 < seaside;
+蓋世太保 < gestapo;
+噁心 < to\-hate;
+尋求 < to\-seek;
+儶 < valiant;
+小冊子 < booklet;
+儦 < milling;
+儤 < on\-duty;
+未武裝 < unarmed;
+噴墨 < ink\-jet;
+有限 < limited;
+托架 < bracket;
+侇 < a\-class;
+伀 < excited;
+最長 < longest;
+乿 < to\-cure;
+乬 < to\-hang;
+扳手 < spanner;
+便於 < easy\-to;
+海豚 < dolphin;
+愛護 < cherish;
+䶩 < to\-gnaw;
+愛屋及烏 < love\-me;
+節儉 < thrifty;
+神體 < godhead;
+䴧 < venison;
+中間 < betwixt;
+䲝 < pomfret;
+䲔 < a\-whale;
+感覺 < to\-feel;
+有幫助 < helpful;
+䱉 < the\-eel;
+䰞 < to\-cook;
+孤立 < isolate;
+䮼 < piebald;
+當前 < current;
+䮦 < untamed;
+層子 < stratum;
+䭠 < a\-snack;
+用字 < diction;
+䬎 < hot\-air;
+阿拉伯 < arabian;
+䫘 < healthy;
+促成 < procure;
+安瓿 < ampoule;
+䪣 < smashed;
+至上 < supreme;
+䩳 < tanning;
+䩔 < the\-hem;
+以馬內利 < emanuel;
+䨞 < to\-rain;
+一項 < an\-item;
+䨂 < a\-chick;
+䧟 < to\-skin;
+阿拉丁 < aladdin;
+不覺察 < unaware;
+清真 < islamic;
+䦋 < to\-grow;
+喜歡 < to\-like;
+甘藍菜 < cabbage;
+䤟 < a\-spade;
+上門 < drop\-in;
+䢶 < a\-state;
+學生 < student;
+女修道 < convent;
+䢙 < to\-ruin;
+獎金 < premium;
+規劃人員 < planner;
+䠼 < to\-wear;
+人群 < a\-crowd;
+假使 < suppose;
+發現物 < finding;
+更遠 < farther;
+在下方 < beneath;
+驚嚇 < horrify;
+䜖 < to\-talk;
+䜉 < to\-jest;
+䛷 < to\-obey;
+䛰 < sketchy;
+蒸汽機 < steamer;
+䚱 < honesty;
+䚮 < thicker;
+䚗 < to\-lift;
+䚏 < to\-love;
+丙酮 < acetone;
+小瀑布 < cascade;
+慈善機構 < charity;
+男性尊稱 < esquire;
+䘱 < wealthy;
+䘠 < greaves;
+䘝 < a\-shirt;
+第十二 < twelfth;
+不三不四 < dubious;
+才干 < ability;
+香水 < perfume;
+香氣 < incense;
+䖚 < a\-tiger;
+成文 < written;
+䔺 < heading;
+吐露 < to\-tell;
+未決定 < pending;
+趕快 < at\-once;
+會議 < meeting;
+飛船 < airship;
+曼谷 < bangkok;
+䒶 < the\-sky;
+列王紀下 < 2\-kings;
+列王紀上 < 1\-kings;
+䑧 < a\-short;
+䐿 < gizzard;
+䐷 < paunchy;
+䐴 < lumbago;
+䐫 < obesity;
+䏖 < a\-wound;
+䏇 < to\-hear;
+䎩 < to\-till;
+旅遊者 < tourist;
+主詞 < subject;
+沉默 < silence;
+打字 < to\-type;
+受託人 < trustee;
+䌘 < to\-knit;
+䌔 < to\-soak;
+䌁 < a\-pleat;
+䋎 < to\-mend;
+䊟 < adorned;
+䊘 < a\-grain;
+䉢 < a\-sieve;
+䉎 < a\-cover;
+䈬 < a\-small;
+宴會 < banquet;
+䇔 < atrophy;
+䇍 < to\-wait;
+領隊 < captain;
+月蝕 < eclipse;
+䄏 < bizarre;
+倉促 < hurried;
+肥沃 < fertile;
+䂀 < to\-wink;
+召集 < convene;
+䁛 < to\-look;
+神跡 < miracle;
+使徒 < apostle;
+㾷 < to\-ache;
+㾠 < a\-fever;
+㾟 < relapse;
+㾘 < ailment;
+㾕 < a\-chill;
+㾆 < ecdysis;
+㾅 < defects;
+陸軍上校 < colonel;
+㽖 < a\-human;
+㼼 < a\-ladle;
+㼷 < a\-basin;
+脹大 < swollen;
+㼗 < a\-brick;
+虛構小說 < fiction;
+寶寶 < darling;
+㺲 < buttons;
+㺊 < a\-beast;
+㹞 < to\-bark;
+㹛 < a\-tamed;
+等候 < waiting;
+跌到 < to\-fall;
+懺悔 < confess;
+㷓 < a\-torch;
+㷉 < to\-iron;
+戶外 < outdoor;
+石南屬 < heather;
+寬容 < lenient;
+㵒 < boiling;
+㵌 < to\-flow;
+㵅 < a\-river;
+能幹 < capable;
+不見 < not\-see;
+㴇 < to\-wade;
+㳭 < spittle;
+㳬 < an\-eddy;
+住房 < housing;
+㳙 < a\-brook;
+戰士 < fighter;
+㲂 < to\-push;
+㱖 < to\-stay;
+㱌 < to\-take;
+翡翠 < emerald;
+尊嚴 < dignity;
+薄烤餅 < pancake;
+㯓 < a\-couch;
+㯐 < tubular;
+㯋 < a\-chest;
+密度 < density;
+㮛 < a\-spoon;
+㭪 < a\-shrub;
+毒草名 < hemlock;
+㫴 < to\-roar;
+㫝 < the\-sun;
+地平線 < horizon;
+尖叫 < screech;
+㩰 < to\-stab;
+她自己 < herself;
+安撫 < placate;
+㨷 < to\-wipe;
+頂針 < thimble;
+㨰 < to\-turn;
+核子 < nuclear;
+休會 < adjourn;
+貢物 < tribute;
+㧻 < a\-thorn;
+㦹 < a\-spear;
+㦭 < to\-pity;
+飛盤 < frisbee;
+淘氣 < naughty;
+㥒 < corrupt;
+騎兵 < cavalry;
+㤺 < blurred;
+㣷 < walking;
+矮壯素 < cycocel;
+外科手術 < surgery;
+㡸 < a\-house;
+第七 < seventh;
+㡨 < a\-label;
+㡘 < screens;
+㡓 < drawers;
+㡂 < remains;
+促使 < spur\-on;
+風箱 < bellows;
+㟧 < a\-cliff;
+浴盆 < bathtub;
+㞺 < a\-tribe;
+群花 < blossom;
+各色各樣 < diverse;
+佛羅裡達 < florida;
+馬子 < commode;
+越南 < vietnam;
+向何處 < whither;
+㜓 < womanly;
+空戰 < air\-war;
+成圈 < wreathe;
+㜇 < unhappy;
+應得 < deserve;
+戰勝 < prevail;
+㚢 < a\-slave;
+不苟 < not\-lax;
+籃板球 < rebound;
+住宿 < lodging;
+㙔 < a\-fence;
+㙏 < caverns;
+變遷 < changes;
+㘩 < to\-mate;
+㗃 < the\-lip;
+封入 < inclose;
+馬克思主義 < marxism;
+㕟 < to\-sign;
+㕞 < a\-brush;
+㔿 < a\-tally;
+㔡 < greatly;
+㔂 < to\-pare;
+㓰 < to\-rive;
+㓟 < to\-peel;
+㒴 < to\-come;
+㒦 < puppets;
+聽得見 < audible;
+野貓 < wildcat;
+㒕 < unyield;
+㒑 < grow\-up;
+代替 < instead;
+㑅 < to\-make;
+案卷 < records;
+百慕大 < bermuda;
+代數 < algebra;
+有條紋 < striped;
+木瓦 < shingle;
+成功 < success;
+安息日 < sabbath;
+中立 < neutral;
+世紀 < century;
+低地 < lowland;
+海澡 < seaweed;
+今晚 < tonight;
+裁紙機 < trimmer;
+哀求 < entreat;
+洗禮 < baptism;
+妓院 < brothel;
+不等 < to\-vary;
+公爵夫人 < duchess;
+名義 < titular;
+消極 < passive;
+水銀 < mercury;
+暈船 < seasick;
+懷敵意 < hostile;
+職工 < workers;
+孟子 < mencius;
+官司 < lawsuit;
+非難 < reproof;
+永遠 < forever;
+酬載 < payload;
+聽寫 < dictate;
+虧損 < deficit;
+麻煩 < trouble;
+阿爾巴尼亞 < albania;
+彼得後書 < 2\-peter;
+創立者 < founder;
+維他命 < vitamin;
+譏誚 < cynical;
+確認 < confirm;
+裝置物 < fixture;
+王權 < royalty;
+玻利維亞 < bolivia;
+企圖 < attempt;
+參議員 < senator;
+羅盤 < compass;
+星期二 < tuesday;
+現實 < reality;
+質地 < texture;
+音樂會 < concert;
+贊助 < sponsor;
+忠誠 < devoted;
+體育場 < stadium;
+鄭重 < serious;
+印像深刻 < impress;
+半途 < halfway;
+好轉 < improve;
+惡棍 < villain;
+愛爾蘭 < ireland;
+逃亡者 < runaway;
+鼻孔 < nostril;
+哀思 < pensive;
+指導教授 < adviser;
+猖獗 < rampant;
+果園 < orchard;
+旁邊 < lateral;
+咯咯笑 < chuckle;
+生物學 < biology;
+飛彈 < missile;
+聽力 < hearing;
+使憤慨 < outrage;
+日誌 < journal;
+居住於 < inhabit;
+外面 < outside;
+雄黃 < realgar;
+會期 < session;
+不法 < lawless;
+不知何故 < somehow;
+淡光 < shimmer;
+彌賽亞 < messiah;
+沒甚麼 < nothing;
+大錯 < blunder;
+老年 < elderly;
+變硬 < stiffen;
+海岸 < coastal;
+煙灰缸 < ashtray;
+礦物 < mineral;
+著陸 < landing;
+不在了 < be\-dead;
+紡織品 < textile;
+科學 < science;
+液化 < liquify;
+阿司匹林 < aspirin;
+方言 < dialect;
+古物 < antique;
+日落 < sundown;
+金光閃爍 < spangle;
+郵費 < postage;
+曖昧 < illicit;
+不人道 < inhuman;
+雄雞 < rooster;
+放開 < unleash;
+被沒收 < forfeit;
+奴隸制度 < slavery;
+羨慕 < envious;
+路西弗 < lucifer;
+化學家 < chemist;
+餅乾 < biscuit;
+有害 < harmful;
+酒精 < alcohol;
+社會 < society;
+暴政 < tyranny;
+王國 < kingdom;
+易碎 < brittle;
+釘死 < crucify;
+訓練者 < trainer;
+清潔器 < cleaner;
+顧忌 < scruple;
+愈合 < to\-heal;
+詳述 < recount;
+願意 < to\-wish;
+愛德玲 < adeline;
+迫切性 < urgency;
+玩兒 < to\-play;
+女演員 < actress;
+中子 < neutron;
+金橘 < kumquat;
+需要 < to\-need;
+悔恨 < remorse;
+最大 < biggest;
+最多 < at\-most;
+耕作 < farming;
+急流 < torrent;
+巴比倫 < babylon;
+老公 < husband;
+嬰兒期 < infancy;
+百葉窗 < shutter;
+避彈坑 < foxhole;
+馬來西亞 < malasia;
+山胡桃木 < hickory;
+脫衣服 < undress;
+乏味 < tedious;
+𡜱 < to\-envy;
+呼吸 < breathe;
+猜度 < surmise;
+呻吟 < to\-moan;
+彼得前書 < 1\-peter;
+遴選 < to\-pick;
+女神 < goddess;
+想像 < imagine;
+業餘者 < amateur;
+同志 < comrade;
+沒有 < haven''t;
+南瓜 < pumpkin;
+變暖 < warming;
+金字塔 < pyramid;
+氣球 < balloon;
+狂暴 < frantic;
+他自己 < himself;
+吊床 < hammock;
+及時 < in\-time;
+部署 < dispose;
+也不 < neither;
+可憐 < pitiful;
+女皇 < empress;
+定居者 < settler;
+一天 < one\-day;
+二十多 < over\-20;
+改裝 < remodel;
+阿飛 < hoodlum;
+可恨 < hateful;
+收留所 < barrack;
+法官 < a\-judge;
+美國 < america;
+最佳 < optimum;
+幽靈 < specter;
+運轉 < to\-work;
+運輸 < transit;
+悲劇 < tragedy;
+書信 < epistle;
+劍術 < fencing;
+就寢時間 < bedtime;
+緒言 < preface;
+誇耀 < proudly;
+缺席 < absence;
+一口 < readily;
+七十 < seventy;
+燕麥粥 < oatmeal;
+新生 < newborn;
+不再 < no\-more;
+亞拉巴馬 < alabama;
+世俗 < profane;
+年鑑 < almanac;
+比畫 < gesture;
+量子 < quantum;
+猿人 < ape\-man;
+叫好 < applaud;
+自行車 < bicycle;
+逐退 < repulse;
+民數記 < numbers;
+小斑點 < speckle;
+注入 < pour\-in;
+正義 < justice;
+使厭煩 < disgust;
+艾迪生 < addison;
+是 < indeed;
+迫 < coerce;
+応 < should;
+忘 < forget;
+国 < nation;
+返 < return;
+忍 < endure;
+迄 < extend;
+必 < surely;
+出 < go\-out;
+辿 < follow;
+瞼 < eyelid;
+得 < obtain;
+辷 < smooth;
+徴 < summon;
+徳 < virtue;
+瞭 < bright;
+辛 < bitter;
+徐 < slowly;
+後 < behind;
+徊 < linger;
+影 < shadow;
+事 < affair;
+轟 < rumble;
+彈 < pellet;
+主 < master;
+強 < strong;
+弛 < loosen;
+民 < people;
+県 < county;
+现 < appear;
+分 < divide;
+些 < little;
+相 < mutual;
+理 < reason;
+益 < profit;
+话 < speech;
+向 < toward;
+定 < decide;
+庫 < armory;
+度 < degree;
+底 < bottom;
+打 < strike;
+位 < throne;
+序 < series;
+幼 < infant;
+干 < oppose;
+内 < inside;
+癪 < spasms;
+加 < add\-to;
+化 < change;
+癌 < cancer;
+常 < common;
+踰 < exceed;
+市 < market;
+才 < talent;
+住 < reside;
+员 < member;
+巻 < scroll;
+性 < nature;
+报 < report;
+神 < spirit;
+数 < number;
+跡 < search;
+原 < source;
+巡 < patrol;
+川 < stream;
+疊 < repeat;
+系 < system;
+畠 < garden;
+记 < record;
+林 < forest;
+统 < govern;
+字 < letter;
+島 < island;
+質 < matter;
+论 < debate;
+貰 < borrow;
+指 < finger;
+財 < wealth;
+花 < flower;
+層 < storey;
+条 < clause;
+屍 < corpse;
+局 < bureau;
+办 < manage;
+谷 < valley;
+城 < castle;
+父 < father;
+導 < direct;
+寧 < repose;
+黄 < yellow;
+德 < ethics;
+害 < injure;
+宮 < palace;
+友 < friend;
+守 < defend;
+讃 < praise;
+际 < border;
+单 < single;
+孤 < orphan;
+校 < school;
+獄 < prison;
+猾 < crafty;
+謙 < humble;
+謎 < riddle;
+狹 < narrow;
+母 < mother;
+狙 < an\-ape;
+团 < sphere;
+狂 < insane;
+課 < lesson;
+招 < beckon;
+兴 < thrive;
+约 < treaty;
+詩 < poetry;
+绝 < to\-cut;
+选 < choose;
+星 < a\-star;
+訴 < accuse;
+爛 < rotten;
+消 < vanish;
+燭 < candle;
+姫 < beauty;
+杨 < willow;
+严 < strict;
+熊 < a\-bear;
+妄 < absurd;
+苏 < revive;
+答 < answer;
+奮 < strive;
+煩 < bother;
+襤 < ragged;
+供 < supply;
+央 < center;
+列 < a\-line;
+焦 < burned;
+龙 < dragon;
+夏 < summer;
+春 < spring;
+态 < manner;
+袖 < sleeve;
+袋 < pocket;
+副 < assist;
+够 < enough;
+街 < street;
+激 < arouse;
+银 < silver;
+阵 < column;
+简 < simple;
+毒 < poison;
+湖 < a\-lake;
+蝉 < cicada;
+追 < pursue;
+鼬 < weasel;
+络 < enmesh;
+漠 < desert;
+蜘 < spider;
+占 < divine;
+圓 < circle;
+兰 < orchid;
+阶 < stairs;
+黙 < silent;
+佛 < buddha;
+效 < result;
+攻 < attack;
+策 < scheme;
+股 < thighs;
+莫 < do\-not;
+嘘 < exhale;
+窗 < window;
+添 < append;
+混 < to\-mix;
+鷲 < condor;
+博 < gamble;
+藤 < rattan;
+智 < wisdom;
+抗 < resist;
+喰 < to\-eat;
+喧 < lively;
+喉 < throat;
+浚 < dredge;
+逃 < escape;
+唸 < recite;
+靖 < pacify;
+秘 < secret;
+欲 < desire;
+征 < invade;
+秋 < autumn;
+吸 < inhale;
+鳩 < pigeon;
+悲 < sorrow;
+桥 < bridge;
+蒻 < rushes;
+葡 < grapes;
+汚 < filthy;
+胸 < breast;
+邮 < postal;
+吝 < stingy;
+横 < across;
+萎 < wither;
+菫 < celery;
+择 < select;
+恨 < hatred;
+竹 < bamboo;
+菓 < fruits;
+旗 < banner;
+殻 < casing;
+稳 < stable;
+迹 < traces;
+针 < needle;
+櫻 < cherry;
+弃 < reject;
+紫 < purple;
+拔 < uproot;
+芝 < sesame;
+赏 < reward;
+插 < insert;
+驢 < donkey;
+冬 < winter;
+扩 < expand;
+橘 < orange;
+逼 < compel;
+騷 < harass;
+刹 < temple;
+镜 < mirror;
+標 < a\-mark;
+舌 < tongue;
+槽 < trough;
+臼 < mortar;
+伏 < crouch;
+愤 < resent;
+俄 < sudden;
+凍 < freeze;
+槌 < hammer;
+阻 < impede;
+饑 < starve;
+腑 < bowels;
+兎 < rabbit;
+腋 < armpit;
+儘 < utmost;
+崇 < esteem;
+餓 < hungry;
+棺 < coffin;
+粉 < powder;
+盾 < shield;
+飢 < hunger;
+捕 < arrest;
+梯 < ladder;
+聘 < engage;
+梃 < a\-club;
+顫 < shiver;
+闷 < gloomy;
+悔 < repent;
+邀 < invite;
+頬 < cheeks;
+患 < suffer;
+丐 < beggar;
+柱 < pillar;
+柚 < pomelo;
+柄 < handle;
+侮 < insult;
+铜 < copper;
+枕 < pillow;
+杵 < pestle;
+扯 < rip\-up;
+趋 < hasten;
+串 < string;
+雲 < clouds;
+雌 < female;
+雇 < employ;
+隅 < corner;
+繕 < repair;
+棉 < cotton;
+縛 < to\-tie;
+谅 < excuse;
+呈 < submit;
+線 < thread;
+敷 < spread;
+脾 < spleen;
+紳 < girdle;
+鹰 < falcon;
+愚 < stupid;
+糞 < manure;
+粧 < toilet;
+採 < gather;
+帕 < turban;
+丫 < forked;
+拐 < kidnap;
+倪 < feeble;
+錐 < gimlet;
+篮 < basket;
+侄 < nephew;
+叉 < crotch;
+怖 < terror;
+颁 < confer;
+咕 < mumble;
+舵 < rudder;
+惩 < punish;
+咖 < coffee;
+淳 < honest;
+猴 < monkey;
+霉 < mildew;
+悼 < grieve;
+逍 < ramble;
+耍 < frolic;
+捆 < tie\-up;
+遊 < wander;
+廿 < twenty;
+腻 < greasy;
+缆 < hawser;
+鞑 < tatars;
+慷 < ardent;
+篷 < awning;
+荆 < thorns;
+膏 < grease;
+鞍 < saddle;
+睬 < notice;
+绥 < soothe;
+氧 < oxygen;
+婷 < pretty;
+凿 < chisel;
+巫 < wizard;
+虾 < shrimp;
+伶 < lonely;
+椒 < pepper;
+揖 < salute;
+冉 < tender;
+踱 < stroll;
+猬 < vulgar;
+褂 < jacket;
+糙 < coarse;
+闸 < sluice;
+颓 < ruined;
+屉 < drawer;
+刁 < tricky;
+洼 < hollow;
+蒜 < garlic;
+渣 < refuse;
+慑 < afraid;
+忏 < regret;
+碾 < roller;
+疙 < pimple;
+漉 < filter;
+隧 < tunnel;
+酥 < butter;
+钮 < button;
+漱 < gargle;
+盔 < helmet;
+磋 < polish;
+蕉 < banana;
+痰 < phlegm;
+羁 < halter;
+诏 < decree;
+靶 < target;
+酝 < liquor;
+亵 < slight;
+貂 < marten;
+聆 < listen;
+韬 < sheath;
+鹊 < magpie;
+卅 < thirty;
+碳 < carbon;
+硫 < sulfur;
+镰 < sickle;
+涎 < saliva;
+壕 < trench;
+锚 < anchor;
+钠 < sodium;
+睿 < shrewd;
+莺 < oriole;
+胯 < pelvis;
+跻 < ascend;
+鳖 < turtle;
+腼 < modest;
+娓 < comply;
+刎 < behead;
+蹙 < urgent;
+胚 < embryo;
+荔 < lichee;
+锵 < tinkle;
+茧 < cocoon;
+蟒 < python;
+鹃 < cuckoo;
+獗 < unruly;
+蒯 < a\-rush;
+沏 < infuse;
+嚏 < sneeze;
+砾 < gravel;
+佟 < a\-name;
+茜 < madder;
+扈 < escort;
+咛 < enjoin;
+泗 < mucous;
+锹 < shovel;
+鹗 < osprey;
+儡 < puppet;
+螂 < mantis;
+苓 < fungus;
+叵 < cannot;
+寮 < shanty;
+犷 < fierce;
+沱 < rivers;
+疡 < ulcers;
+徕 < induce;
+骛 < gallop;
+徉 < wonder;
+谪 < charge;
+俚 < rustic;
+俪 < spouse;
+臾 < moment;
+嬴 < to\-win;
+烩 < ragout;
+铤 < ingots;
+茁 < sprout;
+舢 < sampan;
+碜 < gritty;
+僭 < assume;
+碘 < iodine;
+烯 < alkene;
+囿 < pen\-up;
+囫 < entire;
+镍 < nickel;
+橐 < a\-sack;
+杷 < loquat;
+聒 < clamor;
+羯 < wether;
+秣 < fodder;
+樽 < goblet;
+焖 < simmer;
+轳 < pulley;
+镭 < radium;
+殄 < to\-end;
+诰 < inform;
+莅 < attend;
+讫 < finish;
+淬 < temper;
+嘬 < to\-lap;
+烷 < alkane;
+蛎 < oyster;
+焱 < flames;
+蜥 < lizard;
+葺 < thatch;
+恽 < devise;
+蓿 < clover;
+瘌 < severe;
+喱 < gramme;
+钴 < cobalt;
+貉 < badger;
+蜉 < mayfly;
+鲑 < salmon;
+娈 < lovely;
+荨 < nettle;
+竦 < revere;
+狒 < baboon;
+蘼 < millet;
+茴 < fennel;
+鲦 < minnow;
+渌 < strain;
+阚 < glance;
+珐 < enamel;
+靛 < indigo;
+黧 < a\-dark;
+蠓 < midges;
+橼 < citrus;
+魍 < demons;
+翊 < flying;
+镏 < distil;
+胼 < callus;
+犏 < yak\-ox;
+碚 < suburb;
+腭 < palate;
+鳟 < barbel;
+殂 < to\-die;
+筚 < wicker;
+疝 < hernia;
+骀 < an\-old;
+蒗 < \(herb\);
+菟 < dodder;
+陉 < defile;
+疠 < a\-sore;
+旰 < sunset;
+聍 < earwax;
+锇 < osmium;
+钡 < barium;
+襻 < a\-loop;
+铒 < erbium;
+铈 < cerium;
+椴 < poplar;
+苡 < barley;
+舄 < a\-shoe;
+鸫 < thrush;
+锔 < curium;
+铟 < indium;
+眍 < sunken;
+桷 < rafter;
+苄 < benzyl;
+陔 < a\-step;
+骶 < coccyx;
+鲻 < mullet;
+螨 < insect;
+虼 < a\-flea;
+瘕 < asthma;
+镘 < trowel;
+胂 < arsine;
+菔 < turnip;
+從此 < thence;
+鳥羽 < pinion;
+編者 < editor;
+誤用 < misuse;
+強盜 < bandit;
+詩篇 < psalms;
+方法 < method;
+政策 < policy;
+哺乳動物 < mammal;
+伊尼伊德 < aeneid;
+警察 < police;
+士師記 < judges;
+發電機 < dynamo;
+罪人 < sinner;
+大炮 < cannon;
+大災 < plague;
+塞爾維亞 < serbia;
+吉他 < guitar;
+毀滅 < perish;
+穆斯林 < muslim;
+開車人 < driver;
+帶釦 < buckle;
+動物 < animal;
+使﹍豐富 < enrich;
+緊縮 < reduce;
+燒焦 < scorch;
+領事 < consul;
+嘶啞聲 < hoarse;
+大浪 < billow;
+睡著 < asleep;
+氣息 < breath;
+擱置 < shelve;
+整潔 < neatly;
+弊病 < malady;
+選票 < a\-vote;
+剽竊 < pirate;
+編碼 < coding;
+拔尖兒 < tiptop;
+巨頭 < tycoon;
+頂事 < useful;
+撕裂 < mangle;
+附著 < adhere;
+伊尼亞斯 < aeneas;
+正當 < timely;
+怒吼 < bellow;
+奇景 < marvel;
+版式 < format;
+驅逐出境 < deport;
+遠程 < remote;
+半徑 < radius;
+降臨 < befall;
+管理人 < keeper;
+醜化 < defame;
+狂人 < madman;
+大桶 < barrel;
+有人情 < humane;
+西紅柿 < tomato;
+看見 < to\-see;
+解脫 < relief;
+破敗 < beaten;
+旗幟 < ensign;
+水壺 < kettle;
+殖民 < colony;
+旋律 < melody;
+動機 < motive;
+厭倦 < dreary;
+內陸 < inland;
+工錢 < salary;
+公開 < public;
+原先 < former;
+八開 < octavo;
+熊熊 < raging;
+短歌 < ballad;
+博士 < doctor;
+忠告 < advice;
+砲手 < gunner;
+多星 < starry;
+律師 < lawyer;
+八分音符 < quaver;
+微妙 < subtle;
+好好 < nicely;
+總是 < always;
+開鎖 < unlock;
+步測 < pacing;
+營救 < rescue;
+敬服 < admire;
+天竺牡丹 < dahlia;
+得宜 < proper;
+初級 < junior;
+輕鬆 < gentle;
+爐床 < hearth;
+謊報 < to\-lie;
+確保 < ensure;
+離奇有趣 < quaint;
+運用 < to\-use;
+絲絨 < velvet;
+版圖 < domain;
+政權 < regime;
+很少 < seldom;
+爵士 < knight;
+襯裡 < lining;
+謙和 < meekly;
+網球 < tennis;
+荒蕪 < barren;
+電影院 < cinema;
+天性 < inborn;
+小妖精 < goblin;
+金絲雀 < canary;
+歐洲 < europe;
+勾引 < seduce;
+熱望 < aspire;
+精選 < chosen;
+誘拐 < abduct;
+誠懇 < hearty;
+動名詞 < gerund;
+通知 < notify;
+刺痛 < tingle;
+徵召 < enlist;
+歡樂 < gaiety;
+競賽者 < player;
+先鋒 < herald;
+編年史 < annals;
+敵意 < enmity;
+巴西 < brazil;
+缺氧症 < anoxia;
+物件 < object;
+卸下 < unload;
+包容 < pardon;
+誘惑 < entice;
+牧人 < pastor;
+大地洞 < cavern;
+外形 < figure;
+隨機 < random;
+兵變 < mutiny;
+發嘎嘎聲 < rattle;
+敏捷 < nimble;
+牛仔 < cowboy;
+提醒 < remind;
+觸犯 < offend;
+奪取 < snatch;
+夫子 < pedant;
+太子 < prince;
+真空 < vacu\:m;
+殺害 < murder;
+殘忍 < bloody;
+閒話 < gossip;
+辭職 < resign;
+線條 < streak;
+滑翔機 < glider;
+徒勞 < futile;
+得到 < to\-get;
+希臘 < greece;
+濺開 < splash;
+遊歷 < travel;
+復仇 < avenge;
+殘餘物 < litter;
+壓扁 < squash;
+詩意 < poetic;
+攝政 < regent;
+標語 < slogan;
+不可告人 < hidden;
+發誓 < to\-vow;
+橡膠 < rubber;
+力足以做 < afford;
+在﹍期間 < during;
+地鐵 < subway;
+十一 < eleven;
+從事 < go\-for;
+熱帶 < tropic;
+有責任 < liable;
+雜工 < porter;
+出產 < output;
+奢侈 < luxury;
+掛鉤 < couple;
+純粹 < purely;
+種族主義 < racism;
+孩子氣 < boyish;
+小牝牛 < heifer;
+跑步者 < runner;
+露出 < expose;
+攀昇 < rising;
+解渴 < quench;
+歌手 < singer;
+吐綬雞 < turkey;
+巡航 < cruise;
+布線 < wiring;
+正式 < formal;
+冰箱 < icebox;
+無法 < unable;
+逕流 < runoff;
+大吃 < gobble;
+毫不 < hardly;
+道教 < taoism;
+齵 < uneven;
+診所 < clinic;
+遺恨 < grudge;
+鼫 < marmot;
+鼔 < a\-drum;
+鬆餅 < muffin;
+加崙 < gallon;
+鹨 < anthus;
+跨接器 < jumper;
+教堂 < church;
+鷇 < chicks;
+鶽 < a\-hawk;
+鶸 < siskin;
+詞尾 < suffix;
+鵀 < hoopoe;
+週期 < period;
+鴢 < \(duck\);
+負擔者 < bearer;
+零售 < retail;
+鴃 < shrike;
+在車 < aboard;
+徒步旅行 < hiking;
+鱎 < \(fish\);
+鱆 < poulpe;
+茶碗 < teacup;
+緞帶 < ribbon;
+分派 < assign;
+合唱團 < chorus;
+阻橈 < thwart;
+搖籃 < cradle;
+領導者 < leader;
+著名 < famous;
+強勢 < mighty;
+紮營 < encamp;
+驫 < horses;
+凹洞 < cavity;
+弱化 < weaken;
+陰戶 < vagina;
+擊敗 < defeat;
+進接 < access;
+馿 < an\-ass;
+絕氣 < expire;
+曲棍球 < hockey;
+証實 < verify;
+餤 < incite;
+連擊 < batter;
+教區 < parish;
+火箭 < rocket;
+隱士 < hermit;
+路由器 < router;
+短劍 < dagger;
+顒 < solemn;
+強健 < sturdy;
+一節\(詩\) < stanza;
+武器 < weapon;
+鞚 < bridle;
+煤屑 < cinder;
+平板 < tablet;
+凹槽 < socket;
+刮掉 < scrape;
+高雅 < dainty;
+雂 < \(bird\);
+父母親 < parent;
+歡喜 < joyful;
+分枝 < branch;
+步哨 < sentry;
+傳達 < convey;
+化妝品 < makeup;
+急促聲 < patter;
+闉 < curved;
+衡量 < weight;
+使硬化 < harden;
+骨髓 < marrow;
+铯 < cesium;
+搔癢 < tickle;
+雕像 < statue;
+鑞 < solder;
+正午 < midday;
+鑀 < ionium;
+鐝 < a\-pick;
+鎒 < to\-hoe;
+交易者 < dealer;
+鎅 < to\-saw;
+撫抱 < caress;
+錩 < vessel;
+救主 < savior;
+粘粘 < sticky;
+日內瓦 < geneva;
+鋙 < misfit;
+巴爾 < baltic;
+的確 < really;
+鋅 < zincum;
+過失 < defect;
+銀行家 < banker;
+植物學 < botany;
+紀念獎 < trophy;
+酴 < leaven;
+長短 < length;
+幫手 < helper;
+偽造的 < forged;
+旅行裝備 < outfit;
+附庸 < vassal;
+適合 < to\-fit;
+第二次 < second;
+高達 < attain;
+鵝卵石 < pebble;
+有氣派 < lordly;
+債務人 < debtor;
+花粉 < pollen;
+逌 < please;
+迍 < falter;
+轜 < hearse;
+白痴 < idiocy;
+峽谷 < canyon;
+躧 < sandal;
+表親 < cousin;
+觀念 < notion;
+踡 < curled;
+裁縫 < tailor;
+採納 < accept;
+補種 < reseed;
+小碟子 < saucer;
+貪 < greedy;
+冰柱 < icicle;
+舞蹈家 < dancer;
+阿姨 < auntie;
+線上 < online;
+譆 < scream;
+諵 < mutter;
+驚駭 < fright;
+素描 < sketch;
+閒混 < loiter;
+詻 < orders;
+詗 < to\-spy;
+摟抱 < to\-hug;
+自身 < itself;
+進口 < import;
+採礦 < mining;
+襮 < collar;
+擾亂 < infest;
+結尾 < ending;
+閣樓 < garret;
+花生 < peanut;
+袚 < greave;
+過份 < unduly;
+驟雨 < shower;
+幃幕 < screen;
+使濕透 < drench;
+蠩 < a\-toad;
+蠁 < larvae;
+威士忌酒 < whisky;
+光澤 < luster;
+逝去 < elapse;
+蛣 < beetle;
+蛌 < cricke;
+光滑 < glossy;
+逕向 < radial;
+虖 < to\-cry;
+批評家 < critic;
+相差 < differ;
+薑 < ginger;
+關心 < caring;
+在深處 < deeply;
+蔔 < radish;
+蓚 < oxalic;
+蒎 < pinane;
+抵達 < arrive;
+勝利者 < victor;
+地產 < estate;
+連字符號 < hyphen;
+菆 < jungle;
+廢除軍備 < disarm;
+局面 < aspect;
+茢 < sedges;
+蹺蹺板 < seesaw;
+澱粉 < starch;
+標榜 < flaunt;
+艢 < a\-mast;
+滑雪 < to\-ski;
+回絕 < rebuff;
+襪帶 < garter;
+綁住 < fasten;
+眼光 < vision;
+磨坊主 < miller;
+樣本 < sample;
+烈士 < martyr;
+精明 < astute;
+腳鐐 < fetter;
+胹 < cooked;
+白果 < ginkgo;
+帆布 < canvas;
+跳進 < plunge;
+有關連 < relate;
+多樹木 < wooded;
+附上 < attach;
+抬起 < uplift;
+顛倒過來 < invert;
+耤 < plough;
+吱吱聲 < squeak;
+幾乎 < almost;
+瀉湖 < lagoon;
+罫 < hinder;
+罥 < impete;
+簡直 < simply;
+未完成 < undone;
+繨 < a\-knot;
+光是 < solely;
+縆 < a\-rope;
+給予 < accord;
+七月一號 < july\-1;
+複數 < plural;
+白搭 < no\-use;
+魔賽克 < mosaic;
+航程 < flight;
+紩 < to\-sew;
+紟 < a\-sash;
+紃 < a\-cord;
+援手 < succor;
+帝國 < empire;
+茶壺 < teapot;
+伯仲叔季 < eldest;
+籲 < appeal;
+盟國 < allies;
+簉 < deputy;
+裁決 < ruling;
+篥 < bulgle;
+實體 < entity;
+箙 < quiver;
+烏干達 < uganda;
+索取 < to\-ask;
+席卷 < engulf;
+不確實 < untrue;
+地毯 < carpet;
+竉 < a\-hole;
+八度 < octave;
+用語 < syntax;
+鼻口部分 < muzzle;
+尖聲啼哭 < squeal;
+節約 < frugal;
+祏 < shrine;
+辦公室 < office;
+承諾 < effort;
+衛生 < health;
+補救 < remedy;
+修訂 < revise;
+羅馬書 < romans;
+迄今 < so\-far;
+實際 < actual;
+睪 < spy\-on;
+眾 < masses;
+嘗試 < to\-try;
+垂幕 < canopy;
+蠟筆 < crayon;
+服務員 < waiter;
+命運註定 < ordain;
+人頭獅身 < sphinx;
+皀 < kernel;
+不幸之事 < mishap;
+蜘蛛網 < cobweb;
+疃 < hamlet;
+執事 < deacon;
+畽 < ground;
+成長 < mature;
+溝道 < groove;
+阿米巴 < amoeba;
+農人 < farmer;
+滾落 < tumble;
+融解 < molten;
+圖案 < design;
+腔調 < accent;
+修補匠 < tinker;
+走錯 < astray;
+珔 < \(jade\);
+玓 < pearly;
+節省 < saving;
+猺 < jackal;
+信號 < signal;
+小貓 < kitten;
+行為 < action;
+大理石 < marble;
+在﹍之旁 < beside;
+持有人 < holder;
+煃 < remove;
+撒哈拉 < sahara;
+大鐮刀 < scythe;
+埋伏 < ambush;
+約翰二書 < 2\-john;
+對話 < dialog;
+符號 < symbol;
+瀌 < plenty;
+胸針 < brooch;
+濵 < a\-bank;
+搭乘 < embark;
+澼 < bleach;
+娛樂場 < resort;
+八十 < eighty;
+簸揚 < winnow;
+棒糖 < sucker;
+算盤 < abacus;
+醃黃瓜 < pickle;
+渨 < a\-cove;
+淟 < turbid;
+精力 < energy;
+收割者 < reaper;
+傳染 < infect;
+工人 < worker;
+洟 < snivel;
+泭 < a\-raft;
+氫 < amonia;
+起訴 < to\-sue;
+蝗蟲 < locust;
+傳教 < preach;
+較好 < better;
+花圈 < wreath;
+橰 < a\-spar;
+腎臟 < kidney;
+橤 < stamen;
+橜 < a\-post;
+橕 < a\-prop;
+樲 < jujube;
+路程 < course;
+先前 < before;
+憂鬱 < sullen;
+螺旋鉗 < wrench;
+參議院 < senate;
+穗飾 < tassel;
+楢 < tinder;
+瑞金 < ruijin;
+抱病 < be\-ill;
+傳授 < impart;
+車庫 < garage;
+測量 < survey;
+字首 < prefix;
+魚夫 < fisher;
+椧 < gutter;
+棃 < a\-pear;
+桲 < quince;
+花哨 < garish;
+輕咬 < nibble;
+條紋 < stripe;
+致死 < deadly;
+任何人 < anyone;
+贖金 < ransom;
+行星 < planet;
+曀 < stormy;
+回憶 < recall;
+穀類 < cereal;
+偵查 < detect;
+旻 < heaven;
+容許 < permit;
+敡 < rebuke;
+敂 < deduct;
+十四行詩 < sonnet;
+擓 < to\-rub;
+有道德 < chaste;
+漣漪 < ripple;
+二者之一 < either;
+捽 < clutch;
+國外 < abroad;
+液體 < liquid;
+藝術家 < artist;
+崎嶇 < rugged;
+餑餑 < pastry;
+餐飲 < repast;
+使膨脹 < dilate;
+何處 < whence;
+信用 < credit;
+約翰三書 < 3\-john;
+小提琴 < fiddle;
+因子 < factor;
+恟 < scared;
+拳擊 < boxing;
+軟化 < soften;
+安詳 < serene;
+懶洋洋 < lazily;
+約翰一書 < 1\-john;
+扣留 < detain;
+松雞 < grouse;
+弣 < middle;
+高度 < height;
+廆 < a\-room;
+異教 < heresy;
+巤 < a\-mane;
+巘 < summit;
+嶓 < boshan;
+崿 < cliffs;
+地主 < a\-host;
+馬戲團 < circus;
+高山 < alpine;
+生涯 < career;
+作者 < author;
+挪威 < norway;
+尅 < subdue;
+尋的 < homing;
+寎 < drowsy;
+馬鈴薯 < potato;
+孾 < a\-baby;
+使轉向 < divert;
+沒有人 < nobody;
+嬃 < sister;
+嫪 < hanker;
+婼 < person;
+博物館 < museum;
+娒 < matron;
+朋黨 < clique;
+禮拜堂 < chapel;
+混血 < hybrid;
+跋涉 < trudge;
+夬 < parted;
+僅僅 < barely;
+漏斗 < funnel;
+不透明 < opaque;
+堧 < adjoin;
+乳頭 < nipple;
+理論 < theory;
+介質 < medium;
+嚿 < a\-lump;
+由於 < due\-to;
+噚 < fathom;
+和風 < breeze;
+喆 < a\-sage;
+扶植 < foster;
+環球 < global;
+唫 < to\-hum;
+除了之外 < except;
+唈 < to\-sob;
+哤 < jargon;
+便池 < urinal;
+呮 < to\-sit;
+厎 < settle;
+宣稱 < assert;
+哀辭 < lament;
+扁桃體 < tonsil;
+勄 < active;
+乾酪 < cheese;
+更高 < higher;
+偌大 < so\-big;
+正方形 < square;
+肌肉 < muscle;
+驚恐 < appall;
+可信任 < trusty;
+文學家 < writer;
+手槍 < pistol;
+僬 < clever;
+傎 < topple;
+移動式 < mobile;
+家畜 < cattle;
+福音 < gospel;
+起源 < origin;
+倃 < damage;
+亂跳 < bounce;
+到此處 < hither;
+膽大 < daring;
+仚 < to\-fly;
+製陶工人 < potter;
+健全 < robust;
+䶁 < noises;
+䵧 < to\-dye;
+䴥 < a\-stag;
+䳾 < an\-owl;
+拌嘴 < bicker;
+打擊 < to\-hit;
+䳇 < parrot;
+笨拙 < clumsy;
+䲹 < ospery;
+人口調查 < census;
+䲌 < a\-fish;
+䱕 < labrus;
+䰣 < an\-elf;
+瑕疵 < stigma;
+䯨 < to\-rap;
+䯁 < a\-mule;
+墨西哥 < mexico;
+清真寺 < mosque;
+䭪 < grains;
+䭥 < a\-bait;
+䭌 < congee;
+䬸 < a\-meal;
+䬑 < a\-gale;
+䫬 < to\-bow;
+海裡 < marine;
+味道 < flavor;
+䨺 < cloudy;
+䨟 < puddle;
+䨇 < a\-pair;
+無論如何 < anyhow;
+䧴 < a\-bird;
+䧑 < a\-dike;
+出埃及記 < exodus;
+安哥拉 < angola;
+有藥癮者 < addict;
+䥪 < to\-cup;
+䥨 < a\-file;
+䥍 < a\-whip;
+以色列 < israel;
+私語 < murmur;
+釣魚用具 < tackle;
+最近 < recent;
+䣘 < a\-hall;
+清瘦 < meager;
+䣈 < a\-lane;
+釘書針 < staple;
+岸上 < ashore;
+照相機 < camera;
+䠰 < coiled;
+䠤 < toddle;
+紡織者 < weaver;
+中途 < midway;
+斯拉夫 < slavic;
+䝜 < a\-lion;
+䝄 < cowpea;
+俄羅斯 < russia;
+䜞 < a\-dose;
+木製 < wooden;
+安然 < safely;
+飢荒 < famine;
+䘰 < a\-hood;
+趾尖 < tiptoe;
+䘬 < armour;
+䘌 < gadfly;
+䗫 < a\-frog;
+䖹 < weevil;
+信奉 < belief;
+成效 < effect;
+䔯 < salted;
+瓶子 < bottle;
+䔢 < cathay;
+䔏 < a\-lush;
+三重 < treble;
+䓦 < a\-rule;
+客氣 < polite;
+䓄 < grassy;
+浮著 < afloat;
+變黑 < darken;
+䒉 < a\-long;
+䒂 < an\-oar;
+弓箭手 < archer;
+䑺 < a\-sail;
+䑴 < a\-boat;
+浮華 < vanity;
+䐦 < sleepy;
+䐥 < stinky;
+駁斥 < refute;
+不適 < unwell;
+䏪 < tendon;
+羞辱 < baffle;
+留下 < remain;
+䏣 < maggot;
+上邊 < upside;
+䎱 < a\-drag;
+胡桃 < walnut;
+䍃 < a\-vase;
+封建 < feudal;
+和藹 < kindly;
+䋐 < fabric;
+䊧 < a\-fart;
+塞爾特 < celtic;
+䊛 < shreds;
+穿洞 < pierce;
+䈴 < a\-cage;
+䈎 < a\-leaf;
+䇚 < to\-tap;
+䇁 < a\-cave;
+䆼 < a\-nest;
+䆮 < to\-dip;
+䆙 < a\-kiln;
+客棧 < tavern;
+叩頭 < kowtow;
+房客 < tenant;
+第四 < fourth;
+䄹 < a\-year;
+野餐 < picnic;
+䄘 < a\-rite;
+䃥 < stones;
+專家 < expert;
+䂷 < broken;
+使得 < usable;
+㿼 < a\-bowl;
+㿻 < a\-tray;
+打字員 < typist;
+㿭 < cracks;
+㿧 < fields;
+蜃景 < mirage;
+㿔 < a\-wart;
+反駁 < retort;
+少女 < maiden;
+㽷 < dropsy;
+㼾 < bricks;
+海綿 < sponge;
+星期日 < sunday;
+㼄 < pearls;
+用于 < use\-in;
+㸿 < a\-calf;
+晚飯 < supper;
+㷋 < embers;
+葡萄乾 < raisin;
+賭注 < stakes;
+㶤 < to\-fry;
+㶈 < creeks;
+神諭 < oracle;
+㵝 < moving;
+不要 < don''t\!;
+㴞 < fluent;
+我自己 < myself;
+材積 < volume;
+扁圓 < oblate;
+㳌 < marshy;
+㱞 < danger;
+㱍 < to\-owe;
+叮鈴 < jingle;
+㰃 < a\-tree;
+大步走 < stride;
+第八 < eighth;
+上衫 < blouse;
+㮖 < to\-lay;
+㭱 < a\-case;
+比較喜歡 < prefer;
+寶塔 < pagoda;
+㫺 < bygone;
+不公平 < unfair;
+客戶 < client;
+㫅 < a\-flag;
+㪹 < to\-rob;
+㩲 < a\-fist;
+芭蕾舞 < ballet;
+㨾 < a\-type;
+㧧 < a\-comb;
+家庭 < family;
+柏林 < berlin;
+㦔 < silkly;
+有罪 < guilty;
+㦊 < lavish;
+㦅 < uneasy;
+鍵帽 < keycap;
+小包 < packet;
+亨特 < hunter;
+打傷 < bruise;
+頁邊 < margin;
+手冊 < manual;
+㡁 < a\-robe;
+㠲 < ripped;
+牙齒 < dental;
+名言 < saying;
+㝹 < a\-hare;
+耀眼 < dazzle;
+伯利茲 < belize;
+港彎 < harbor;
+背帶 < braces;
+螺旋形 < spiral;
+㚼 < a\-girl;
+㚻 < sodomy;
+㚌 < a\-band;
+㙹 < a\-damp;
+比較少 < lesser;
+犯錯 < to\-err;
+在此處 < herein;
+暴虐 < brutal;
+被害人 < victim;
+阿多尼斯 < adonis;
+波蘭 < poland;
+㔺 < an\-age;
+㔉 < to\-dig;
+㓵 < swords;
+㓠 < a\-flaw;
+㓅 < frozen;
+星雲 < nebula;
+海狸 < beaver;
+阿波羅 < apollo;
+依偎 < nestle;
+懦夫 < coward;
+使耳聾 < deafen;
+休惜 < recess;
+蓬鬆 < fluffy;
+磁鐵 < magnet;
+校園 < campus;
+變質 < go\-bad;
+義賣會 < bazaar;
+羊肉 < mutton;
+工作室 < studio;
+吊著 < dangle;
+紫羅蘭色 < violet;
+門外漢 < layman;
+憎惡 < loathe;
+透印版印刷 < offset;
+在附近 < nearby;
+憎恨 < detest;
+塗油於 < anoint;
+雜貨商 < grocer;
+喜劇 < comedy;
+寒冬 < wintry;
+貶斥 < demote;
+單位 < a\-unit;
+球拍 < racket;
+維吾爾 < uighur;
+英雄式 < heroic;
+子彈 < bullet;
+理髮師 < barber;
+傭人領班 < butler;
+安培 < ampere;
+食槽 < manger;
+背叛 < betray;
+贖回 < redeem;
+獨特 < unique;
+毛織運動衫 < jersey;
+金色 < golden;
+起泡沫 < seethe;
+不戰不和 < no\-war;
+室內 < indoor;
+賓客 < guests;
+瑞典 < sweden;
+贊同 < assent;
+薄紙 < tissue;
+悶熱 < sultry;
+星期五 < friday;
+星期一 < monday;
+現存 < extant;
+餐巾 < napkin;
+以太 < ether\-;
+巴爾干 < balkan;
+瑣事 < trifle;
+格格笑 < giggle;
+預算 < budget;
+孟加拉 < bengal;
+青銅 < bronze;
+頑童 < urchin;
+會死 < mortal;
+不然 < not\-so;
+讀者 < reader;
+洪水 < deluge;
+白蘭地 < brandy;
+木料 < lumber;
+愛德華 < edward;
+深化 < deepen;
+現在 < modern;
+蘇格蘭帽 < bonnet;
+變紅 < redden;
+減低速度 < retard;
+猖狂 < savage;
+淨化 < purify;
+後退 < recoil;
+阿拉斯加 < alaska;
+片語 < phrase;
+流星 < meteor;
+悲歎 < bewail;
+存儲 < memory;
+使具體化 < embody;
+典獄長 < warden;
+看不見 < unseen;
+使作嘔 < sicken;
+象徵 < emblem;
+不比 < unlike;
+大錘 < sledge;
+最新 < latest;
+主教 < bishop;
+恐水病 < rabies;
+處女 < virgin;
+賣主 < seller;
+羊毛 < fleece;
+含水 < watery;
+加﹍於 < impose;
+處境 < plight;
+議程 < agenda;
+惡意 < malice;
+本州 < honshu;
+橡皮搽 < eraser;
+數量 < amount;
+斷言 < affirm;
+浪子 < loafer;
+有意 < intend;
+波士頓 < boston;
+名流 < gentry;
+台灣 < taiwan;
+不智 < unwise;
+故障 < glitch;
+合法 < lawful;
+名氣 < repute;
+大路 < avenue;
+海報 < poster;
+亦即 < namely;
+經紀人 < broker;
+紅蘿蔔 < carrot;
+悄悄地 < gently;
+暖氣 < heater;
+使﹍能夠 < enable;
+吸收 < absorb;
+意圖 < intent;
+緣飾 < fringe;
+避難所 < refuge;
+周年 < annual;
+白麵兒 < heroin;
+口渴 < thirst;
+針法 < stitch;
+消化 < digest;
+正門 < portal;
+海員 < sailor;
+吐根 < ipecac;
+雙重 < double;
+青苔 < lichen;
+多變 < fickle;
+鉋床 < planer;
+飼養者 < feeder;
+名望 < renown;
+取消 < cancel;
+那邊 < yonder;
+巴斯克 < basque;
+劈開 < cleave;
+酒窩 < dimple;
+動議 < motion;
+放逐 < banish;
+配稱 < worthy;
+活塞 < piston;
+莫斯科 < moscow;
+𥜌 < a\-coat;
+杏仁 < almond;
+月桂樹 < laurel;
+預期 < expect;
+秉公 < justly;
+禱告 < prayer;
+更大 < bigger;
+九十 < ninety;
+破舊 < shabby;
+一帶 < region;
+碧玉 < jasper;
+微薄的 < meagre;
+只是 < merely;
+小淘氣 < rascal;
+惡化 < worsen;
+一局 < inning;
+無法無天 < outlaw;
+未來 < future;
+鄉紳 < squire;
+詭計 < deceit;
+豁免 < exempt;
+心理 < mental;
+牢牢 < firmly;
+風俗 < custom;
+𠀉 < a\-hill;
+創辦 < launch;
+過量 < excess;
+起訴者 < suitor;
+熔解 < fusion;
+石英 < quartz;
+巴拿馬 < panama;
+包管 < assure;
+動脈 < artery;
+最低 < lowest;
+祭司 < priest;
+特此 < hereby;
+雌蕊 < pistil;
+干預 < meddle;
+化石 < fossil;
+捕鯨船 < whaler;
+水泥 < cement;
+水泡 < bubble;
+演說者 < orator;
+蓋爾 < gaelic;
+前輩 < senior;
+擺樣子 < do\-sth;
+副詞 < adverb;
+危機 < crisis;
+不公 < unjust;
+法國 < france;
+沉思 < ponder;
+暗堡 < bunker;
+狗屋 < kennel;
+暴君 < tyrant;
+波斯尼亞 < bosnia;
+三倍 < triple;
+霜白 < frosty;
+否則 < if\-not;
+分鐘 < minute;
+葬禮 < burial;
+水桶 < bucket;
+撤銷 < repeal;
+加拿大 < canada;
+反射 < reflex;
+不丹 < bhutan;
+非洲 < africa;
+剝蝕 < denude;
+一串 < strand;
+纖毛 < cilium;
+石 < stone;
+短 < short;
+快 < rapid;
+在 < be\-at;
+他 < other;
+矢 < arrow;
+到 < go\-to;
+说 < speak;
+迅 < quick;
+地 < earth;
+心 < heart;
+下 < under;
+辭 < words;
+微 < small;
+家 < house;
+御 < drive;
+后 < queen;
+待 < treat;
+还 < still;
+发 < issue;
+彫 < carve;
+想 < think;
+睡 < sleep;
+轉 < shift;
+所 < place;
+輪 < wheel;
+三 < three;
+輕 < light;
+式 < style;
+样 < shape;
+建 < build;
+延 < delay;
+盲 < blind;
+廣 < broad;
+声 < sound;
+工 < labor;
+盆 < basin;
+盃 < glass;
+正 < right;
+庸 < usual;
+女 < woman;
+力 < power;
+躑 < waver;
+因 < cause;
+重 < heavy;
+皇 < royal;
+庇 < cover;
+次 < order;
+口 < mouth;
+白 < white;
+幽 < quiet;
+教 < teach;
+再 < again;
+气 < steam;
+信 < trust;
+北 < north;
+蹲 < squat;
+蹟 < trace;
+幅 < piece;
+入 < enter;
+先 < first;
+水 < water;
+巷 < alley;
+笑 < smile;
+立 < stand;
+跪 < kneel;
+马 < horse;
+巨 < large;
+疑 < doubt;
+利 < gains;
+果 < fruit;
+赧 < blush;
+至 < reach;
+清 < clear;
+物 < thing;
+嵌 < inlay;
+甲 < armor;
+田 < field;
+许 < allow;
+八 < eight;
+崖 < cliff;
+崎 < rough;
+南 < south;
+色 < color;
+瓜 < melon;
+算 < count;
+賊 < thief;
+貯 < store;
+貨 < goods;
+每 < every;
+屬 < class;
+豪 < brave;
+豆 < beans;
+七 < seven;
+尖 < sharp;
+射 < shoot;
+空 < empty;
+技 < skill;
+寺 < court;
+寫 < write;
+英 < petal;
+密 < dense;
+钱 < money;
+容 < looks;
+宵 < night;
+始 < begin;
+客 < guest;
+片 < slice;
+研 < grind;
+早 < early;
+獻 < offer;
+獺 < otter;
+獸 < beast;
+獨 < alone;
+警 < guard;
+存 < exist;
+證 < proof;
+謝 < thank;
+猜 < guess;
+嬉 < enjoy;
+黑 < black;
+謁 < visit;
+剑 < sword;
+乐 < happy;
+级 < level;
+举 < raise;
+证 < prove;
+照 < shine;
+誓 < swear;
+群 < group;
+誂 < tempt;
+伤 < wound;
+断 < sever;
+价 < price;
+脑 < brain;
+规 < rules;
+娑 < dance;
+破 < break;
+泽 < marsh;
+燻 < smoke;
+紧 < tense;
+觸 < touch;
+装 < dress;
+河 < river;
+血 < blood;
+投 < throw;
+奴 < slave;
+刀 < knife;
+襟 < lapel;
+喝 < drink;
+褪 < strip;
+夢 < dream;
+错 < error;
+案 < table;
+印 < print;
+壓 < press;
+烈 < fiery;
+壇 < altar;
+裂 < split;
+袴 < pants;
+墓 < grave;
+炎 < flame;
+灰 < ashes;
+塗 < smear;
+敌 < enemy;
+塔 < tower;
+怀 < bosom;
+罪 < crime;
+蟲 < worms;
+濱 < beach;
+摘 < pluck;
+施 < grant;
+模 < model;
+草 < grass;
+濃 < thick;
+濁 < muddy;
+修 < study;
+味 < taste;
+织 < weave;
+龕 < niche;
+蝿 < flies;
+免 < spare;
+波 < waves;
+潔 < clean;
+洋 < ocean;
+均 < equal;
+奖 < prize;
+顿 < pause;
+漂 < float;
+判 < judge;
+担 < carry;
+板 < plank;
+钟 < clock;
+黐 < stick;
+蛇 < snake;
+构 < frame;
+溺 < drown;
+麦 < wheat;
+溝 < ditch;
+溜 < slide;
+肉 < flesh;
+纸 < paper;
+虚 < false;
+虎 < tiger;
+噌 < scold;
+杂 < mixed;
+怒 < anger;
+稿 < draft;
+渦 < swirl;
+渡 < cross;
+罢 < cease;
+鷺 < heron;
+鷹 < eagle;
+藩 < fence;
+藥 < drugs;
+鲜 < fresh;
+嗅 < smell;
+藁 < straw;
+鶴 < crane;
+枪 < spear;
+涯 < shore;
+涙 < tears;
+配 < match;
+浴 < bathe;
+升 < arise;
+浜 < creek;
+蔭 < shade;
+津 < ferry;
+鬼 < ghost;
+蓮 < lotus;
+避 < avoid;
+亡 < death;
+闪 < flash;
+震 < shake;
+咳 < cough;
+绿 < green;
+咎 < fault;
+纳 < admit;
+呪 < curse;
+童 < child;
+伟 < great;
+汁 < juice;
+荣 < glory;
+吐 < vomit;
+鰌 < loach;
+喊 < shout;
+吉 < lucky;
+逐 < chase;
+叩 < knock;
+检 < check;
+握 < grasp;
+牙 < tooth;
+殖 < breed;
+卿 < noble;
+歯 < teeth;
+歪 < slant;
+棋 < chess;
+魔 < demon;
+腰 < waist;
+梅 < plums;
+钢 < steel;
+茹 < roots;
+欺 < cheat;
+鬚 < beard;
+匙 < spoon;
+匍 < crawl;
+茅 < reeds;
+累 < tired;
+末 < final;
+糊 < paste;
+税 < taxes;
+惯 < habit;
+倾 < upset;
+贸 < trade;
+扫 < sweep;
+吓 < scare;
+剃 < shave;
+刷 < brush;
+羊 < sheep;
+扑 < pound;
+倍 < times;
+冶 < smelt;
+膳 < meals;
+兼 < unite;
+鞋 < shoes;
+挤 < crowd;
+颗 < grain;
+惠 < favor;
+腕 < wrist;
+桃 < peach;
+坡 < slope;
+償 < repay;
+植 < plant;
+脊 < spine;
+椅 < chair;
+肚 < belly;
+棲 < perch;
+肝 < liver;
+疯 < crazy;
+耻 < shame;
+侍 < serve;
+衫 < shirt;
+钻 < drill;
+峡 < gorge;
+韻 < rhyme;
+丑 < clown;
+澳 < inlet;
+疼 < aches;
+档 < shelf;
+玛 < agate;
+靴 < boots;
+傲 < proud;
+霜 < frost;
+吵 < argue;
+邪 < wrong;
+脆 < crisp;
+曳 < trail;
+離 < leave;
+叛 < rebel;
+翼 < wings;
+甜 < sweet;
+隙 < crack;
+傅 < tutor;
+喷 < spurt;
+娶 < marry;
+闇 < close;
+糖 < sugar;
+珊 < coral;
+砸 < smash;
+絞 < twist;
+轨 < track;
+籖 < tally;
+擒 < catch;
+揃 < shear;
+箒 < broom;
+鍮 < brass;
+嗓 < voice;
+啥 < what\?;
+蜜 < honey;
+鋏 < tongs;
+肿 < swell;
+裙 < skirt;
+尿 < urine;
+逮 < seize;
+倡 < guide;
+兜 < pouch;
+魄 < vigor;
+糕 < cakes;
+稚 < young;
+鈍 < blunt;
+禽 < birds;
+憺 < peace;
+链 < chain;
+憬 < rouse;
+凳 < bench;
+酬 < toast;
+灿 < vivid;
+攀 < climb;
+沫 < froth;
+魁 < chief;
+滥 < flood;
+戳 < prick;
+桩 < stake;
+肺 < lungs;
+纱 < gauze;
+陡 < steep;
+烫 < scald;
+鹅 < goose;
+敞 < roomy;
+峨 < lofty;
+虐 < cruel;
+辫 < braid;
+怦 < eager;
+浇 < spray;
+膛 < chest;
+闵 < mourn;
+袜 < socks;
+贿 < bribe;
+墅 < villa;
+秽 < dirty;
+呻 < groan;
+拧 < pinch;
+杠 < lever;
+缎 < satin;
+惮 < dread;
+噗 < burst;
+矶 < jetty;
+簇 < swarm;
+懊 < vexed;
+拇 < thumb;
+铲 < spade;
+哽 < choke;
+冕 < crown;
+疮 < tumor;
+赃 < booty;
+婊 < whore;
+锯 < a\-saw;
+嘈 < noisy;
+缰 < reins;
+讪 < abuse;
+忡 < a\-sad;
+馍 < bread;
+颅 < skull;
+烙 < brand;
+埔 < plain;
+阜 < mound;
+炬 < torch;
+炙 < roast;
+婪 < covet;
+蹑 < tread;
+竺 < india;
+剌 < slash;
+筛 < sieve;
+篡 < usurp;
+鲸 < whale;
+抡 < swing;
+涮 < rinse;
+酵 < yeast;
+橄 < olive;
+雏 < chick;
+涧 < brook;
+腺 < gland;
+忱 < truth;
+蜿 < creep;
+镀 < plate;
+胭 < rouge;
+赳 < grand;
+糠 < chaff;
+帛 < silks;
+鲨 < shark;
+踝 < ankle;
+眈 < gloat;
+倭 < dwarf;
+镐 < stove;
+虱 < louse;
+搐 < cramp;
+戛 < lance;
+呃 < belch;
+榭 < kiosk;
+酪 < cream;
+孀 < widow;
+孪 < twins;
+瞰 < watch;
+氮 < xenon;
+痣 < spots;
+摒 < expel;
+俸 < wages;
+愠 < angry;
+扪 < stoke;
+绉 < crepe;
+珀 < amber;
+诩 < boast;
+芍 < peony;
+褶 < pleat;
+酗 < drunk;
+柠 < lemon;
+诙 < tease;
+绺 < skein;
+釉 < glaze;
+孛 < comet;
+椽 < beams;
+颦 < frown;
+淖 < slush;
+莠 < weeds;
+橛 < a\-peg;
+蒺 < furze;
+翕 < agree;
+霾 < misty;
+砧 < anvil;
+胺 < amine;
+蛭 < leech;
+诨 < jokes;
+怫 < sorry;
+楔 < wedge;
+疽 < ulcer;
+桤 < alder;
+铆 < rivet;
+撺 < hurry;
+肄 < learn;
+孢 < spore;
+鲲 < spawn;
+铨 < weigh;
+豕 < a\-pig;
+笊 < ladle;
+囗 < erect;
+铩 < moult;
+鹑 < quail;
+啁 < chirp;
+醚 < ether;
+琰 < jewel;
+迨 < until;
+鹬 < snipe;
+傈 < tribe;
+铰 < hinge;
+硼 < borax;
+酯 < ester;
+镪 < coins;
+扦 < probe;
+溷 < privy;
+俳 < actor;
+蘖 < stump;
+墀 < porch;
+喈 < music;
+吡 < blame;
+瘊 < warts;
+厣 < shell;
+糅 < blend;
+阏 < block;
+鲂 < bream;
+溽 < moist;
+簏 < a\-box;
+裥 < folds;
+缳 < noose;
+龠 < flute;
+蝤 < larva;
+埭 < a\-dam;
+鲶 < sheat;
+锞 < ingot;
+氡 < radon;
+槭 < maple;
+彘 < swine;
+彖 < a\-hog;
+滗 < drain;
+廑 < a\-hut;
+匏 < gourd;
+篼 < sedan;
+蛞 < snail;
+璁 < \(gem\);
+绗 < baste;
+埘 < roost;
+巴黎 < paris;
+代理人 < agent;
+遊蕩 < stray;
+弄糟 < spoil;
+恩典 < grace;
+大爺 < uncle;
+日本 < japan;
+可可 < cocoa;
+可口 < tasty;
+延緩 < defer;
+姪女 < niece;
+陷落 < slump;
+牛排 < steak;
+隱約 < vague;
+合併 < annex;
+護士 < nurse;
+泊位 < berth;
+獨木舟 < canoe;
+條板箱 < crate;
+陳列臺 < stall;
+遊艇 < barge;
+陰莖 < penis;
+智利 < chile;
+壓碎 < crush;
+每每 < often;
+韓國 < korea;
+石狀 < stony;
+男修道院長 < abbot;
+別號 < alias;
+引用 < quote;
+市長 < mayor;
+爐架 < grate;
+機關 < organ;
+泥水匠 < mason;
+鴉片 < opium;
+植物群 < flora;
+在高處 < aloft;
+撐竿跳 < vault;
+放牧 < graze;
+每日 < daily;
+套房 < suite;
+違礙 < taboo;
+優點 < merit;
+徘徊 < hover;
+視覺 < sight;
+敘利亞 < syria;
+刀葉 < blade;
+摩西 < moses;
+虛張聲勢 < bluff;
+調制解調器 < modem;
+青年 < youth;
+標題 < title;
+氨基 < amino;
+機軸 < arbor;
+醒來 < waken;
+門閂 < latch;
+靈巧 < handy;
+元音 < vowel;
+克隆 < clone;
+整整 < whole;
+匯寄 < remit;
+剁碎 < mince;
+調情 < flirt;
+未成年人 < minor;
+匆忙 < hasty;
+毛巾 < towel;
+芳香 < balmy;
+年級 < grade;
+紫丁香 < lilac;
+散文 < prose;
+不新鮮 < stale;
+西藏 < tibet;
+大農場 < ranch;
+火車 < train;
+死板 < rigid;
+矛柄 < shaft;
+長釘 < spike;
+步槍 < rifle;
+刻痕 < notch;
+選民 < voter;
+魔鬼 < devil;
+新娘 < bride;
+謠傳 < rumor;
+新奇 < novel;
+煤渣 < slack;
+花開 < bloom;
+物主 < owner;
+彈弓 < sling;
+多水分 < juicy;
+報窩 < brood;
+麵包師傅 < baker;
+電影 < movie;
+摸索 < grope;
+速率 < speed;
+破壞 < wreck;
+約莫 < about;
+壁架 < ledge;
+呼叫器 < pager;
+階段 < stage;
+十分 < fully;
+地面 < floor;
+諷刺 < irony;
+白費 < waste;
+運河 < canal;
+八角 < anise;
+陰涼 < shady;
+擦洗 < scour;
+熱忱 < ardor;
+綠洲 < oasis;
+下水道 < sewer;
+固體 < solid;
+僧院 < abbey;
+推選 < elect;
+推進 < impel;
+關節 < joint;
+從來不 < never;
+艦隊 < fleet;
+比分 < score;
+剛果 < congo;
+火花 < spark;
+影像 < image;
+盜竊 < steal;
+麺 < flour;
+麘 < scent;
+鹾 < salty;
+鸲 < mynah;
+二極管 < diode;
+睡椅 < couch;
+競技場 < arena;
+加寬 < widen;
+鴪 < swoop;
+可擦寫可編程祇讀存儲器 < eprom;
+說出 < utter;
+澳門 < aomen;
+推論 < infer;
+糢糊 < foggy;
+鰞 < squid;
+動向 < trend;
+天使 < angel;
+褐色 < brown;
+鬆開 < loose;
+櫸木 < beech;
+部件 < parts;
+軌道 < orbit;
+鬎 < favus;
+閃耀 < glint;
+臭鼬 < skunk;
+髳 < state;
+髲 < a\-wig;
+疾風 < blast;
+攤子 < booth;
+大人 < adult;
+麥阿密 < miami;
+出沒 < haunt;
+駞 < camel;
+道德 < moral;
+發聲 < vocal;
+長老 < elder;
+休息室 < lobby;
+樹籬 < hedge;
+饘 < gruel;
+球狀物 < globe;
+餪 < feast;
+餦 < candy;
+帝王 < regal;
+強光 < glare;
+飶 < odour;
+飑 < storm;
+軌跡 < locus;
+軌距 < gauge;
+補藥 < tonic;
+對敵者 < rival;
+幽暗 < gloom;
+擔懮 < worry;
+榮譽 < honor;
+魔術 < magic;
+鞃 < board;
+靦 < timid;
+霱 < cloud;
+霙 < sleet;
+開端 < start;
+雞冠 < crest;
+陼 < islet;
+阹 < a\-pen;
+切望 < crave;
+冬青樹 < holly;
+標籤 < label;
+镟 < lathe;
+然後 < after;
+那兒 < there;
+钃 < metal;
+圖表 < chart;
+圍裙 < apron;
+粗糙 < crude;
+果子凍 < jelly;
+大地圖 < atlas;
+剪報 < scrap;
+規模 < scale;
+那些 < those;
+鈇 < an\-ax;
+辦法 < means;
+船貨 < cargo;
+歌劇 < opera;
+烏木 < ebony;
+雅各書 < james;
+粉筆 < chalk;
+絕技 < stunt;
+臉頰 < cheek;
+白癡 < idiot;
+角度 < angle;
+發病 < onset;
+感化餅乾 < wafer;
+基本 < basic;
+火焰 < blaze;
+探索 < quest;
+填塞 < stuff;
+糖漿 < syrup;
+粉碎 < crash;
+英代爾 < intel;
+貤 < steps;
+舉起 < heave;
+豔 < plump;
+這天 < today;
+讙 < cheer;
+譁 < noise;
+尼龍 < nylon;
+毛茸茸 < hairy;
+隊伍 < ranks;
+觔 < catty;
+幅度 < width;
+橡木 < oaken;
+精液 < semen;
+床單 < sheet;
+剃刀 < razor;
+蠗 < \(ape\);
+尼日爾 < niger;
+蟢 < caulk;
+凳子 < stool;
+膽量 < nerve;
+蝘 < gecko;
+再會 < adieu;
+檳子 < binzi;
+兩次 < twice;
+修飾 < adorn;
+索引 < index;
+僵硬 < stark;
+蘓 < thyme;
+蘋 < apple;
+工會 < union;
+裂痕 < chasm;
+細小 < petty;
+驅除 < repel;
+樹林 < woods;
+潛行 < sneak;
+垂死 < dying;
+樺木 < birch;
+莿 < thorn;
+公會 < guild;
+苶 < weary;
+收音機 < radio;
+搓揉 < knead;
+臽 < a\-pit;
+臲 < jumpy;
+臛 < broth;
+這些 < these;
+庇佑 < bless;
+假裝 < feign;
+辮子 < plait;
+降下 < lower;
+腡 < lines;
+樓梯 < stair;
+第三次 < third;
+高聲 < aloud;
+尊魚 < trout;
+肕 < tough;
+回答 < reply;
+耞 < flail;
+招待員 < usher;
+簡短 < brief;
+翽 < whirr;
+囤積 < hoard;
+翄 < winds;
+駿馬 < steed;
+罉 < a\-pot;
+色狼 < satyr;
+纻 < ramie;
+轉播 < relay;
+批量 < batch;
+縏 < purse;
+綌 < cloth;
+皮帶 < strap;
+撒但 < satan;
+冰塔 < serac;
+粎 < metre;
+箛 < bugle;
+輕染 < tinge;
+筰 < cable;
+筦 < a\-key;
+竔 < litre;
+招致 < incur;
+一線微光 < gleam;
+穧 < sheaf;
+栗鼠 < bunny;
+巫婆 < witch;
+門廊 < stoop;
+礶 < a\-jug;
+意大利 < italy;
+磈 < rocky;
+烘乾 < parch;
+水平面 < plane;
+公尺 < meter;
+矓 < faint;
+瞏 < round;
+亞麻布 < linen;
+眹 < pupil;
+五花八門 < myrid;
+盎司 < ounce;
+皽 < scurf;
+騎車 < cycle;
+精子 < sperm;
+癡 < silly;
+凌亂 < chaos;
+俚語 < slang;
+紅利 < bonus;
+溜冰鞋 < skate;
+甎 < brick;
+作哼聲 < snort;
+埃及 < egypt;
+製造者 < maker;
+瑔 < \(jade;
+珖 < carat;
+符記 < token;
+喪鐘 < knell;
+脹起 < bulge;
+公噸 < tonne;
+無生命 < inert;
+牜 < an\-ox;
+牔 < gable;
+酪農業 < dairy;
+生苔 < mossy;
+騙術 < trick;
+打製 < forge;
+灣 < a\-bay;
+腐蝕 < rusty;
+水蒸氣 < vapor;
+六十 < sixty;
+公升 < liter;
+似雪 < snowy;
+病毒 < virus;
+推崇 < value;
+路線 < route;
+巨人 < giant;
+像片簿 < album;
+手藝 < craft;
+贈與者 < giver;
+斜紋軟呢 < tweed;
+汳 < henan;
+德克薩斯 < texas;
+馬達 < motor;
+四月 < april;
+殑 < swoon;
+其中 < among;
+歈 < songs;
+欸 < sighs;
+滑翔 < glide;
+天藍色 < azure;
+衰敗 < decay;
+苛刻 < harsh;
+檨 < mango;
+空間 < space;
+樕 < shrub;
+掠奪 < harry;
+察覺 < aware;
+屋簷 < eaves;
+格言 < maxim;
+楅 < buard;
+瓣膜 < valve;
+椈 < cedar;
+棁 < joist;
+圍巾 < scarf;
+寓言 < fable;
+被子 < quilt;
+栍 < a\-lot;
+小舌 < uvula;
+就緒 < ready;
+軀幹 < trunk;
+手肘 < elbow;
+客車 < coach;
+艾姬 < aggie;
+飛行員 < pilot;
+在外 < outer;
+崇拜 < adore;
+充份 < ample;
+高明 < smart;
+痛恨 < abhor;
+痛快 < jolly;
+捐贈者 < donor;
+敔 < gavel;
+西班牙 < spain;
+男爵 < baron;
+固定 < fixed;
+尖細 < taper;
+花俏 < fancy;
+赫茲 < hertz;
+挌 < fight;
+提多書 < titus;
+圍城 < siege;
+扢 < caper;
+致敬 < greet;
+軍團 < corps;
+愃 < relax;
+排列 < array;
+俏皮 < saucy;
+舞弊 < fraud;
+悾 < naive;
+補丁 < patch;
+生麵糰 < dough;
+滿身塵埃 < dusty;
+漿果 < berry;
+阿拉摩 < alamo;
+魅力 < charm;
+漂游 < drift;
+彑 < snout;
+調味肉汁 < gravy;
+潑掉 < spill;
+帒 < a\-bag;
+資金 < funds;
+男高音 < tenor;
+一點兒 < a\-bit;
+嶞 < ridge;
+自我 < self\-;
+果酒 < cider;
+崚 < hilly;
+捷克 < czech;
+用法 < usage;
+存貨 < stock;
+高尚 < nobly;
+拍擊 < smack;
+嫚 < scorn;
+小樹林 < grove;
+布萊爾 < blair;
+在﹍之下 < below;
+在﹍之上 < above;
+激光 < laser;
+安華 < anwar;
+拂掃 < whisk;
+船只 < ships;
+壆 < stiff;
+墺 < walls;
+墍 < paint;
+塙 < truly;
+四十 < forty;
+坰 < wilds;
+撥火棍 < poker;
+噺 < story;
+嗐 < alas\!;
+流體 < fluid;
+喴 < hello;
+啲 < a\-few;
+啍 < creak;
+哶 < bleat;
+咍 < laugh;
+吰 < clang;
+範圍 < range;
+厺 < to\-go;
+厖 < bulky;
+三色紫羅蘭 < pansy;
+修改 < amend;
+有風 < windy;
+驚慌 < panic;
+在旁邊 < aside;
+冧 < a\-bud;
+主題 < theme;
+營業員 < clerk;
+哪裡 < where;
+國際電報電話咨詢委員會 < ccitt;
+警報器 < siren;
+當地 < local;
+倉庫 < depot;
+佺 < fairy;
+伊索 < aesop;
+動態影像 < video;
+三角洲 < delta;
+笑林 < humor;
+威爾士 < wales;
+棚子 < shack;
+䶇 < a\-rat;
+肯尼亞 < kenya;
+男子 < a\-man;
+股票 < share;
+䳱 < ducks;
+麵包皮 < crust;
+肥碩 < stout;
+䯍 < bones;
+石南樹 < heath;
+拴住 < hitch;
+蠢事 < folly;
+䪻 < a\-cap;
+䩕 < clogs;
+下雨 < rainy;
+驚奇 < amaze;
+䨹 < swift;
+噴出 < spout;
+䧪 < sissy;
+䦞 < extra;
+䥓 < a\-hoe;
+䤙 < dregs;
+腱子 < sinew;
+更遲 < later;
+黑貂 < sable;
+䝒 < a\-sow;
+䚟 < horns;
+螺絲釘 < screw;
+䚉 < o\-see;
+沙龍 < salon;
+䗕 < bends;
+保姆 < nanny;
+唱詩班 < choir;
+拉丁 < latin;
+䑁 < fatty;
+會談 < talks;
+脈搏 < pulse;
+䏳 < olein;
+䏯 < moles;
+䍥 < smoky;
+金髮 < blond;
+䍌 < a\-jar;
+三千五百 < 3\-500;
+䌑 < tight;
+䌐 < ropes;
+䊻 < silky;
+小屋 < cabin;
+䈉 < a\-fan;
+嘎嘎 < quack;
+䄥 < a\-god;
+䄢 < pious;
+便士 < penny;
+耶穌 < jesus;
+䃙 < rocks;
+鋼琴 < piano;
+騎士 < rider;
+手套 < glove;
+跟前 < front;
+修剪 < prune;
+㾚 < itchy;
+香料 < spice;
+伺服 < servo;
+租約 < lease;
+㼏 < a\-bad;
+尖塔 < spire;
+嗶嘰 < serge;
+污點 < stain;
+法郎 < franc;
+活著 < alive;
+㺃 < a\-dog;
+㹻 < puppy;
+㹋 < a\-cow;
+肅清 < purge;
+㸃 < a\-dot;
+發牢騷 < whine;
+淹沒 < flush;
+第十 < tenth;
+時髦 < vogue;
+打呼 < snore;
+㰼 < greed;
+餘燼 < ember;
+㯷 < dates;
+第六 < sixth;
+㮥 < sails;
+羽莖 < quill;
+封地 < manor;
+題解 < notes;
+長頸瓶 < flask;
+一行 < party;
+㨗 < alert;
+㨃 < a\-row;
+小吃 < snack;
+安全理事會 < the\-u;
+㧍 < alike;
+珍珠 < pearl;
+鼻煙 < snuff;
+洋蔥 < onion;
+示威運動 < rally;
+趣劇 < farce;
+低廉 < cheap;
+哀痛 < grief;
+第五 < fifth;
+第九 < ninth;
+㡶 < dwell;
+㡐 < flags;
+㡌 < a\-hat;
+㡇 < colar;
+有線 < wired;
+㞾 < a\-nun;
+㞕 < chips;
+㞒 < lusty;
+戲劇 < drama;
+載貨汽車 < lorry;
+罩衫 < smock;
+㖤 < wrath;
+㕎 < caves;
+皺眉頭 < scowl;
+㓝 < a\-law;
+㓁 < a\-net;
+㒩 < naked;
+㒌 < along;
+率直 < frank;
+㐱 < bushy;
+景象 < scene;
+象牙 < ivory;
+喝叱 < chide;
+琴弦 < chord;
+獎章 < medal;
+子房 < ovary;
+怪誕 < freak;
+深度 < depth;
+午餐 < lunch;
+獵犬 < hound;
+理想 < ideal;
+耽擱 < tarry;
+旅館 < hotel;
+馬來 < malay;
+馬伕 < groom;
+大鹿 < moose;
+聖徒 < saint;
+世界 < world;
+伊斯蘭教 < islam;
+減去 < minus;
+人性 < human;
+慈悲 < mercy;
+論題 < topic;
+卡車 < truck;
+罌粟 < poppy;
+斑馬 < zebra;
+套鐘 < chime;
+守候 < abide;
+板岩 < slate;
+頭皮 < scalp;
+卑賤 < lowly;
+升起 < hoist;
+流浪者 < rover;
+貝寧 < benin;
+旋轉 < whirl;
+灌木叢 < scrub;
+日記 < diary;
+乃是 < to\-be;
+新近 < newly;
+吸氣 < sniff;
+誘陷 < snare;
+杓子 < scoop;
+感官 < sense;
+本影 < umbra;
+人員 < staff;
+續訂 < renew;
+更改 < alter;
+吉普賽人 < gypsy;
+收養 < adopt;
+怪異 < weird;
+貓咪 < kitty;
+沼澤 < glade;
+碎布條 < shred;
+污穢 < nasty;
+三月 < march;
+內在的 < inner;
+電郵 < email;
+勝過 < excel;
+證章 < badge;
+海地 < haiti;
+雷達 < radar;
+鬱金香 < tulip;
+失誤 < lapse;
+邊際 < limit;
+狂熱 < craze;
+五十 < fifty;
+雪茄煙 < cigar;
+東京 < tokyo;
+毒蛇 < viper;
+頌歌 < carol;
+咕嚕 < grunt;
+一打 < dozen;
+試金 < assay;
+頭暈 < dizzy;
+吹笛者 < piper;
+一巴掌 < spank;
+焦點 < focus;
+統治者 < ruler;
+纖維 < fiber;
+事件 < event;
+逗點 < comma;
+咆哮 < growl;
+呼叫聲 < whoop;
+邏輯 < logic;
+更壞 < worse;
+座右銘 < motto;
+三稜鏡 < prism;
+中國 < china;
+多葉 < leafy;
+一層 < layer;
+燻肉 < bacon;
+擢陞 < exalt;
+愛克斯光 < x\-ray;
+大腿 < thigh;
+本人 < i\-\(me;
+韻文 < verse;
+熊貓 < panda;
+斑羚 < goral;
+矮墩墩 < pudgy;
+葡萄 < grape;
+獎品 < award;
+黏住 < cling;
+可怕 < awful;
+過道 < aisle;
+礦工 < miner;
+歌謠 < chant;
+沙拉 < salad;
+斗篷 < cloak;
+月份 < month;
+雛菊 < daisy;
+包穀 < maize;
+阿爾法 < alpha;
+逼迫 < force;
+媒介 < media;
+哪一個 < which;
+教義 < creed;
+合股線 < twine;
+頁岩 < shale;
+瑞典人 < swede;
+厭惡 < loath;
+使羞愧 < abash;
+昏暗 < dusky;
+比率 < ratio;
+霎眼 < blink;
+晴天 < sunny;
+男子氣 < manly;
+使娛樂 < amuse;
+有 < have;
+知 < know;
+这 < this;
+矜 < pity;
+忙 < busy;
+来 < come;
+近 < near;
+道 < path;
+也 < also;
+时 < time;
+年 < year;
+瞻 < look;
+辺 < edge;
+就 < just;
+那 < that;
+生 < life;
+自 < self;
+瞬 < wink;
+过 < pass;
+循 < obey;
+從 < from;
+多 < much;
+好 < good;
+起 < rise;
+只 < only;
+作 < make;
+当 < bear;
+形 < form;
+开 < open;
+手 < hand;
+弱 < weak;
+本 < root;
+头 < head;
+真 < real;
+面 < face;
+公 < fair;
+同 < same;
+动 < move;
+长 < long;
+載 < load;
+将 < will;
+身 < body;
+高 < high;
+把 < hold;
+盥 < wash;
+月 < moon;
+种 < seed;
+軍 < army;
+車 < cart;
+部 < part;
+名 < name;
+皮 < skin;
+机 < desk;
+给 < give;
+等 < rank;
+座 < seat;
+很 < very;
+最 < most;
+店 < shop;
+躍 < skip;
+走 < walk;
+四 < four;
+门 < gate;
+东 < east;
+庁 < hall;
+西 < west;
+平 < flat;
+听 < hear;
+幸 < luck;
+蹴 < kick;
+五 < five;
+帷 < tent;
+帶 < belt;
+希 < rare;
+踊 < leap;
+书 < book;
+九 < nine;
+跳 < jump;
+路 < road;
+痩 < thin;
+活 < live;
+左 < left;
+巣 < nest;
+表 < show;
+跟 < heel;
+痛 < pain;
+痕 < scar;
+痒 < itch;
+感 < feel;
+足 < foot;
+金 < gold;
+何 < what;
+更 < more;
+疋 < roll;
+做 < work;
+计 < plan;
+王 < king;
+各 < each;
+留 < stop;
+畏 < fear;
+男 < male;
+风 < wind;
+崗 < post;
+毛 < hair;
+峰 < peak;
+爱 < love;
+瓦 < tile;
+賣 < sell;
+賃 < rent;
+貸 < lend;
+岸 < bank;
+结 < knot;
+岬 < cape;
+流 < flow;
+貧 < poor;
+青 < blue;
+管 < pipe;
+连 < join;
+队 < team;
+屑 < bits;
+领 < neck;
+屈 < bend;
+尾 < tail;
+半 < half;
+候 < wait;
+步 < step;
+深 < deep;
+区 < area;
+尋 < seek;
+球 < ball;
+告 < tell;
+寸 < inch;
+满 < fill;
+李 < plum;
+息 < rest;
+寒 < cold;
+寄 < send;
+取 < take;
+室 < room;
+宛 < seem;
+孩 < baby;
+广 < wide;
+玉 < jade;
+火 < fire;
+讀 < read;
+譽 < fame;
+则 < rule;
+失 < lose;
+包 < wrap;
+猶 < like;
+落 < fall;
+济 < help;
+謡 < sing;
+编 < knit;
+谈 < talk;
+拉 < pull;
+狼 < wolf;
+杀 < kill;
+嫌 < hate;
+克 < gram;
+冲 < soar;
+推 < push;
+称 < call;
+試 < test;
+号 < mark;
+亚 < asia;
+港 < port;
+般 < sort;
+爪 < claw;
+刚 < hard;
+陆 < land;
+确 < sure;
+具 < tool;
+威 < pomp;
+线 < line;
+触 < butt;
+角 < horn;
+燒 < burn;
+妻 < wife;
+需 < need;
+酒 < wine;
+铁 < iron;
+覗 < peek;
+医 < cure;
+襲 < raid;
+煮 < cook;
+土 < soil;
+软 < soft;
+煤 < coal;
+套 < case;
+户 < door;
+背 < back;
+暗 < dark;
+须 < must;
+裸 < bare;
+树 < tree;
+沉 < sink;
+职 < duty;
+细 < fine;
+補 < mend;
+袢 < robe;
+旁 < side;
+塵 < dust;
+塩 < salt;
+歌 < song;
+灌 < pour;
+塀 < wall;
+堤 < dike;
+恶 < evil;
+堆 < heap;
+慢 < slow;
+堀 < cave;
+蟻 < ants;
+藏 < hide;
+埋 < bury;
+澹 < calm;
+垢 < dirt;
+融 < melt;
+潮 < tide;
+救 < save;
+丝 < silk;
+齊 < even;
+鼻 < nose;
+漬 < soak;
+鼓 < drum;
+漏 < leak;
+录 < copy;
+遇 < meet;
+船 < ship;
+黴 < mold;
+滴 < drip;
+雨 < rain;
+蛙 < frog;
+滑 < slip;
+麻 < hemp;
+蚤 < flea;
+鹿 < deer;
+沙 < sand;
+噛 < bite;
+拍 < clap;
+掉 < turn;
+哭 < weep;
+嘆 < sigh;
+午 < noon;
+卡 < card;
+雪 < snow;
+淵 < gulf;
+涼 < cool;
+刺 < stab;
+薪 < fuel;
+鱼 < fish;
+喘 < pant;
+盘 < tray;
+薔 < rose;
+架 < rack;
+款 < item;
+浪 < wave;
+蕩 < pond;
+洪 < vast;
+镇 < town;
+浄 < pure;
+旅 < trip;
+唾 < spit;
+骨 < bone;
+唖 < dumb;
+鴉 < crow;
+唇 < lips;
+泳 < dive;
+哲 < wise;
+哩 < mile;
+圣 < holy;
+鳥 < bird;
+晓 < dawn;
+沼 < lake;
+腿 < legs;
+探 < find;
+葦 < reed;
+池 < pool;
+葉 < leaf;
+束 < bind;
+呆 < dull;
+吻 < kiss;
+吹 < blow;
+氏 < clan;
+签 < sign;
+氈 < felt;
+奶 < milk;
+菩 < herb;
+叢 < bush;
+挂 < hang;
+航 < sail;
+拳 < fist;
+乘 < ride;
+址 < site;
+毆 < beat;
+魂 < soul;
+乔 < tall;
+粮 < food;
+敏 < fast;
+茎 < stem;
+零 < zero;
+勾 < hook;
+乃 < then;
+抬 < lift;
+苔 < moss;
+冒 < risk;
+檣 < mast;
+闭 < shut;
+碗 < bowl;
+剥 < peel;
+蛋 < eggs;
+促 < urge;
+杰 < hero;
+舟 < boat;
+迟 < late;
+赖 < rely;
+駒 < colt;
+馴 < tame;
+膝 < knee;
+拖 < drag;
+昏 < dusk;
+戒 < warn;
+页 < page;
+井 < well;
+脇 < ribs;
+乏 < lack;
+胞 < womb;
+梨 < pear;
+酸 < tart;
+桶 < pail;
+绩 < spin;
+擦 < wipe;
+殷 < many;
+耕 < plow;
+暖 < warm;
+锁 < lock;
+砍 < hack;
+慈 < kind;
+羹 < soup;
+鞭 < whip;
+羨 < envy;
+撤 < omit;
+筹 < chip;
+杖 < cane;
+霰 < hail;
+滋 < grow;
+谱 < list;
+丘 < hill;
+杆 < pole;
+隈 < cove;
+纂 < edit;
+唉 < alas;
+笼 < cage;
+繪 < draw;
+繩 < rope;
+矿 < mine;
+镖 < dart;
+兆 < omen;
+披 < wear;
+债 < debt;
+堡 < fort;
+颂 < laud;
+絆 < loop;
+钉 < nail;
+哄 < coax;
+铃 < bell;
+契 < deed;
+懒 < lazy;
+猎 < hunt;
+摺 < fold;
+箋 < note;
+捲 < curl;
+秃 < bald;
+鸭 < duck;
+吼 < roar;
+窺 < peep;
+叠 < pile;
+銑 < mill;
+逸 < flee;
+贱 < mean;
+狮 < lion;
+妮 < maid;
+窑 < kiln;
+慾 < lust;
+祷 < pray;
+蹄 < hoof;
+烤 < bake;
+尬 < limp;
+週 < week;
+怠 < idle;
+胶 < glue;
+梳 < comb;
+啤 < beer;
+酿 < brew;
+捣 < hull;
+噢 < moan;
+窟 < hole;
+兑 < cash;
+沸 < boil;
+瘾 < rash;
+妞 < girl;
+帜 < flag;
+蕾 < buds;
+铅 < lead;
+锣 < gong;
+嗦 < suck;
+轴 < axle;
+涕 < tear;
+吆 < bawl;
+聋 < deaf;
+募 < levy;
+皂 < soap;
+蟹 < crab;
+唠 < chat;
+啃 < gnaw;
+羔 < lamb;
+锈 < rust;
+腓 < calf;
+骡 < mule;
+醇 < rich;
+纬 < woof;
+蛤 < clam;
+呱 < wail;
+戎 < arms;
+蔼 < lush;
+礁 < reef;
+闩 < bolt;
+跛 < lame;
+偌 < thus;
+箍 < hoop;
+蟠 < coil;
+掂 < heft;
+遐 < afar;
+吠 < bark;
+蛾 < moth;
+耘 < weed;
+蟾 < toad;
+筏 < raft;
+鲤 < carp;
+芋 < taro;
+鹪 < wren;
+蜕 < molt;
+焊 < weld;
+耙 < rake;
+缄 < seal;
+漩 < eddy;
+饵 < bait;
+谑 < jeer;
+颏 < chin;
+芮 < tiny;
+璨 < gems;
+泵 < pump;
+豌 < peas;
+堑 < moat;
+疵 < flaw;
+榈 < palm;
+鬃 < mane;
+咝 < hiss;
+邋 < rags;
+胤 < heir;
+粕 < lees;
+挞 < flog;
+镫 < lamp;
+阄 < lots;
+锌 < zinc;
+喙 < beak;
+肛 < anus;
+痂 < scab;
+鸢 < kite;
+轭 < yoke;
+洵 < true;
+泅 < swim;
+矾 < alum;
+蚩 < worm;
+鸷 < hawk;
+耋 < aged;
+坨 < lump;
+疱 < acne;
+爨 < oven;
+拊 < slap;
+骟 < geld;
+圹 < tomb;
+龈 < gums;
+阋 < feud;
+酰 < acyl;
+疣 < wart;
+穑 < farm;
+礻 < cult;
+佤 < kawa;
+麸 < bran;
+菖 < iris;
+嫱 < lady;
+谝 < brag;
+氖 < neon;
+跖 < sole;
+蚋 < gnat;
+偾 < ruin;
+疒 < sick;
+噍 < chew;
+洳 < damp;
+炱 < soot;
+膪 < pork;
+绲 < cord;
+宀 < roof;
+帶露 < dewy;
+薄命 < \(usu;
+功績 < feat;
+暴亂 < riot;
+爛泥 < ooze;
+日期 < date;
+姨媽 < aunt;
+伊拉克 < iraq;
+幽谷 < dell;
+教皇 < pope;
+向下 < down;
+速行 < rush;
+有能力 < able;
+這裡 < here;
+缺口 < nick;
+原子 < atom;
+狂吠 < howl;
+心情 < mood;
+野兔 < hare;
+基金 < fund;
+埃米爾 < emir;
+石片 < slab;
+咖啡館 < cafe;
+冰鎮 < iced;
+熾熱 < glow;
+石灰 < lime;
+皮鞭 < lash;
+冷酷 < grim;
+硬幣 < coin;
+凝視 < gaze;
+教派 < sect;
+公雞 < cock;
+角色 < role;
+纖度 < size;
+奉承 < fawn;
+露齒而笑 < grin;
+課文 < text;
+長靴 < boot;
+牢固 < firm;
+百靈 < lark;
+通行稅 < toll;
+玉蜀黍 < corn;
+透紅 < rosy;
+數據 < data;
+詩歌 < poem;
+小毛蟲 < slug;
+樂隊 < band;
+氣味 < odor;
+無禮 < rude;
+都市 < city;
+西薄 < cake;
+最主要 < main;
+雪撬 < sled;
+遨游 < roam;
+毒害 < bane;
+猶他州 < utah;
+細胞 < cell;
+卑劣 < base;
+復原 < heal;
+別的 < else;
+公豬 < boar;
+調子 < tune;
+眼看 < soon;
+面具 < mask;
+弧形 < arch;
+使受傷 < hurt;
+瘦長 < slim;
+花邊 < lace;
+填滿 < cram;
+諾亞 < noah;
+外套 < coat;
+長襪 < hose;
+立方體 < cube;
+長袍 < gown;
+強姦 < rape;
+照料 < tend;
+採邑 < fief;
+掠過 < flit;
+灰色 < gray;
+白骨頂 < coot;
+細看 < peer;
+黶 < mole;
+褪色 < fade;
+麚 < buck;
+適應 < suit;
+麌 < stag;
+麃 < till;
+鹆 < myna;
+一角銀幣 < dime;
+剝掉 < pare;
+郵件 < mail;
+瞑想 < muse;
+遊戲 < game;
+節點 < node;
+騯 < loud;
+駽 < grey;
+捲軸 < reel;
+饌 < feed;
+散出 < shed;
+飡 < meal;
+巢穴 < lair;
+洋娃娃 < doll;
+阿曼 < oman;
+廠子 < yard;
+躲避 < shun;
+熱力 < heat;
+阞 < vein;
+下一次 < next;
+淺黃色 < buff;
+闆 < boss;
+簽証 < visa;
+鳴叫 < hoot;
+镩 < pick;
+镕 < fuse;
+鑢 < file;
+鐩 < lens;
+收割 < reap;
+網孔 < mesh;
+雜亂 < mess;
+掉落 < flop;
+飲食療養 < diet;
+詩人 < bard;
+大袋子 < sack;
+表象 < idea;
+舒適 < cozy;
+英畝 < acre;
+步伐 < pace;
+轗 < fail;
+接縫 < seam;
+公牛 < bull;
+粗砂 < grit;
+公爵 < duke;
+跼 < bent;
+出租車 < taxi;
+跲 < hood;
+菜單 < menu;
+橫樑 < beam;
+賵 < gift;
+術語 < term;
+剛勁 < bold;
+衚衕 < lane;
+艾絨 < moxa;
+誧 < huge;
+觝 < gore;
+先見者 < seer;
+花瓶 < vase;
+蠭 < bees;
+機智 < tact;
+傾聽 < hark;
+螉 < wasp;
+鐘頭 < hour;
+蘒 < \:143;
+藟 < vine;
+炸彈 < bomb;
+回聲 < echo;
+蓫 < dock;
+解凍 < thaw;
+萜 < c5h8;
+菾 < beet;
+長槍 < pike;
+六月 < june;
+僱用 < hire;
+圓盤 < disk;
+地獄 < hell;
+爵士舞 < jazz;
+阿們 < amen;
+腶 < meat;
+脲 < urea;
+路邊 < curb;
+視圖 < view;
+撇去 < skim;
+農奴 < serf;
+艾滋病 < aids;
+帳單 < bill;
+草坪 < lawn;
+搶奪 < snap;
+電燈泡 < bulb;
+竁 < bore;
+穜 < rice;
+禸 < rump;
+價款 < cost;
+樣式 < type;
+損害 < harm;
+模式 < mode;
+盟友 < ally;
+矻 < toil;
+疼痛 < ache;
+樓廂 < loft;
+目瞪口呆 < stun;
+屁話 < shit;
+鏈路 < link;
+猶大書 < jude;
+低音 < bass;
+用膳 < dine;
+笑話 < joke;
+山羊 < goat;
+競賽 < race;
+笨蛋 < fool;
+岩石 < rock;
+略碼 < code;
+涴 < daub;
+較少 < less;
+百合 < lily;
+腰肉 < loin;
+地帶 < zone;
+閣下 < sire;
+龍骨 < keel;
+大頭釘 < tack;
+保羅 < paul;
+色彩 < tint;
+檍 < ilex;
+槹 < spar;
+捲帶 < tape;
+椑 < oval;
+鍍金 < gild;
+指標 < norm;
+衝撞 < dash;
+柣 < sill;
+岩漿 < lava;
+柂 < helm;
+握住 < grip;
+朘 < wane;
+圓屋頂 < dome;
+擫 < tuck;
+策略 < plot;
+摲 < raze;
+搘 < prop;
+亞麻 < flax;
+掞 < easy;
+圈套 < trap;
+雙胞胎 < twin;
+籃圈 < ring;
+膽汁 < gall;
+憰 < wily;
+怳 < wild;
+採伐 < fell;
+一塊麵 < loaf;
+電機及電子學工程師聯合會 < ieee;
+借款 < loan;
+到﹍之上 < onto;
+袖口 < cuff;
+全體人員 < crew;
+使用者 < user;
+秘魯 < peru;
+僧侶 < monk;
+孻 < last;
+拖拉 < haul;
+媊 < star;
+娸 < ugly;
+遠程監控 < rmon;
+在﹍之中 < amid;
+圍住 < gird;
+姤 < mate;
+棍棒 < club;
+拍打 < flap;
+飾釘 < stud;
+偏差 < bias;
+骰子 < dice;
+聖詩 < hymn;
+外小腿 < shin;
+鋪設 < pave;
+吽 < ''om'';
+蛋白石 < opal;
+枯萎 < wilt;
+刜 < chop;
+刓 < trim;
+一分錢 < cent;
+疲倦 < tire;
+賢能 < sage;
+海軍 < navy;
+臭味 < fume;
+侜 < lies;
+伱 < thou;
+偶像 < idol;
+小起重機 < jack;
+跨度 < span;
+䳼 < gull;
+果肉 < pulp;
+䱴 < tuna;
+䯕 < bony;
+命運 < fate;
+字節 < byte;
+羅馬 < rome;
+考試 < exam;
+䧻 < dove;
+倍塔 < beta;
+圓錐體 < cone;
+悠閒 < ease;
+伯爵 < earl;
+周遊 < tour;
+䡀 < nude;
+䠏 < feet;
+䚽 < news;
+琵琶 < lute;
+䙊 < arid;
+膠卷 < film;
+䖭 < grub;
+專用集成電路 < asic;
+䒺 < clay;
+品脫 < pint;
+小島 < isle;
+薄霧 < mist;
+何時 < when;
+口頭 < oral;
+令狀 < writ;
+䁆 < eyes;
+䁅 < rage;
+蕨類 < fern;
+䀀 < cups;
+㿙 < full;
+㾹 < lean;
+抓住 < grab;
+蜂蜜酒 < mead;
+核心 < core;
+決鬥 < duel;
+豆腐 < tofu;
+咒罵 < damn;
+㲻 < sunk;
+㲴 < mind;
+㲜 < rugs;
+㰫 < glad;
+㰟 < hope;
+㮤 < pine;
+蜂房 < hive;
+㮒 < wood;
+㫱 < mild;
+馬廄 < barn;
+亞當 < adam;
+翅膀 < wing;
+金屬薄片 < foil;
+伊朗 < iran;
+主義 < \-ism;
+麥芽 < malt;
+狹谷 < glen;
+牡鹿 < hart;
+在之上 < over;
+名詞 < noun;
+存根 < stub;
+頭腦清楚 < sane;
+㚧 < agil;
+史詩 < epic;
+貴婦人 < dame;
+家園 < home;
+牛飲 < gulp;
+賺得 < earn;
+豎琴 < harp;
+一群 < gang;
+音調 < tone;
+板條 < lath;
+貴族 < lord;
+哈欠 < yawn;
+豬油 < lard;
+錫安 < zion;
+獵物 < prey;
+紅寶石 < ruby;
+犯規 < foul;
+軟木塞 < cork;
+油膏 < balm;
+班房 < jail;
+斑點 < spot;
+浮標 < buoy;
+家伙 < chap;
+後面 < rear;
+天鵝 < swan;
+整齊 < tidy;
+在水步行 < wade;
+母馬 < mare;
+字型 < font;
+安全 < safe;
+粉紅色 < pink;
+孤單 < lone;
+木桶 < cask;
+飾帶 < sash;
+老撾 < laos;
+朦朧 < blur;
+課題 < task;
+珠子 < bead;
+呼呼聲 < whir;
+快步跑 < trot;
+波特 < baud;
+野禽 < fowl;
+暈眩 < daze;
+說謊者 < liar;
+某些 < some;
+強風 < gale;
+麻木 < numb;
+陪審團 < jury;
+韁繩 < rein;
+否決 < veto;
+沙發 < sofa;
+他們 < they;
+泡沫 < foam;
+牛肉 < beef;
+七月 < july;
+一服 < dose;
+豆子 < bean;
+媽媽 < mama;
+敏銳 < keen;
+油油 < oily;
+包裝 < pack;
+污痕 < blot;
+猛撞 < slam;
+面罩 < veil;
+鞭痕 < welt;
+亞丁 < aden;
+獨奏 < solo;
+沐浴 < bath;
+最好 < best;
+誓詞 < oath;
+動詞 < verb;
+高爾夫球 < golf;
+暴徒 < thug;
+汽水 < soda;
+短襪 < sock;
+引證 < cite;
+鈕帶 < bond;
+前面 < fore;
+陣風 < gust;
+惡劣 < vile;
+毛線 < yarn;
+北約 < nato;
+重擊 < bang;
+步調 < gait;
+通風 < airy;
+變換 < vary;
+蒼白 < pale;
+水滴 < drop;
+織布機 < loom;
+電話鈴聲 < buzz;
+收藏 < keep;
+電線 < wire;
+一吹 < puff;
+毛皮 < pelt;
+運費 < fare;
+壁虱 < tick;
+撥開 < poke;
+迷陣 < maze;
+藥丸 < pill;
+光纖分佈數據接口 < fddi;
+露營 < camp;
+毒物 < pest;
+一 < one;
+人 < man;
+我 < our;
+大 < big;
+上 < top;
+你 < you;
+可 < may;
+她 < she;
+天 < sky;
+而 < and;
+然 < yes;
+没 < not;
+日 < sun;
+彩 < hue;
+十 < ten;
+用 < use;
+眼 < eye;
+见 < see;
+老 < old;
+两 < two;
+外 < out;
+法 < law;
+点 < dot;
+盜 < rob;
+其 < his;
+儿 < son;
+新 < new;
+床 < bed;
+皆 < all;
+海 < sea;
+少 < few;
+帽 < hat;
+叫 < cry;
+死 < die;
+放 < put;
+今 < now;
+赤 < red;
+畢 < end;
+战 < war;
+購 < buy;
+瓶 < jug;
+请 < ask;
+交 < mix;
+吃 < eat;
+运 < run;
+网 < net;
+飞 < fly;
+猿 < ape;
+猫 < cat;
+猪 < pig;
+坐 < sit;
+謂 < say;
+狗 < dog;
+切 < cut;
+誤 < err;
+热 < hot;
+牛 < cow;
+低 < low;
+仍 < yet;
+脚 < leg;
+奈 < but;
+排 < row;
+壞 < bad;
+湾 < bay;
+墨 < ink;
+術 < art;
+濘 < mud;
+濕 < wet;
+露 < dew;
+齢 < age;
+蝙 < bat;
+蝋 < wax;
+鼠 < rat;
+蜂 < bee;
+摇 < wag;
+油 < oil;
+藉 < mat;
+液 < sap;
+薯 < yam;
+耳 < ear;
+喋 < nag;
+啜 < sip;
+哀 < sad;
+冰 < ice;
+杯 < cup;
+氣 < air;
+萌 < bud;
+途 < way;
+茶 < tea;
+卵 < egg;
+播 < sow;
+臂 < arm;
+欷 < sob;
+匚 < box;
+摩 < rub;
+冠 < cap;
+芸 < rue;
+缘 < hem;
+染 < dye;
+膿 < pus;
+榻 < cot;
+円 < yen;
+腐 < rot;
+脂 < fat;
+援 < aid;
+哼 < hum;
+偵 < spy;
+顎 < jaw;
+罐 < jar;
+捷 < win;
+霧 < fog;
+乾 < dry;
+缝 < sew;
+抚 < pat;
+挖 < dig;
+扇 < fan;
+乞 < beg;
+赌 < bet;
+欠 < owe;
+氛 < gas;
+締 < tie;
+炒 < fry;
+锡 < tin;
+坑 < pit;
+撕 < rip;
+磕 < hit;
+谎 < lie;
+銜 < bit;
+赋 < tax;
+囊 < bag;
+搂 < hug;
+弓 < bow;
+庐 < hut;
+毯 < rug;
+钥 < key;
+斧 < axe;
+蹦 < hop;
+迢 < far;
+蚂 < ant;
+锄 < hoe;
+捅 < jab;
+桨 < oar;
+狸 < fox;
+猖 < mad;
+趾 < toe;
+蘸 < dip;
+琦 < gem;
+畸 < odd;
+坯 < dam;
+鳝 < eel;
+怩 < shy;
+黠 < sly;
+锛 < adz;
+麋 < elk;
+鳍 < fin;
+刍 < mow;
+柞 < oak;
+鞣 < tan;
+僖 < joy;
+羝 < ram;
+埤 < add;
+空白點 < gap;
+求愛 < woo;
+同位 < par;
+為甚麼 < why;
+受到 < get;
+可以 < can;
+酒廊 < bar;
+男孩子 < boy;
+液晶顯示 < lcd;
+破布 < rag;
+強拉 < tug;
+無花果 < fig;
+經由 < via;
+設法 < try;
+如何 < how;
+眼界 < ken;
+幼獸 < cub;
+離子 < ion;
+貓叫聲 < mew;
+焦油 < tar;
+退潮 < ebb;
+齣 < act;
+火腿 < ham;
+鹋 < emu;
+陰暗 < dim;
+總和 < sum;
+鴞 < owl;
+鲕 < roe;
+鬷 < pot;
+鬆 < lax;
+髢 < wig;
+砍伐 < hew;
+刺探 < pry;
+常春藤 < ivy;
+鑯 < awl;
+烏合之眾 < mob;
+前夕 < eve;
+堅果 < nut;
+轑 < rut;
+踶 < paw;
+先生 < sir;
+欄圈 < pen;
+小精靈 < elf;
+親屬 < kin;
+索具裝置 < rig;
+拖車 < tow;
+填充 < pad;
+公共汽車 < bus;
+蒴 < pod;
+老天爺 < god;
+零點六 < 0\.6;
+樅樹 < fir;
+甜酒 < rum;
+羇 < inn;
+出價 < bid;
+傳真 < fax;
+苦惱 < ail;
+六點六 < 6\.6;
+骨罈 < urn;
+軟毛 < fur;
+砲 < gun;
+癙 < ill;
+輕打 < tap;
+小費 < tip;
+榆樹 < elm;
+潚 < gay;
+工作 < job;
+肋骨 < rib;
+楎 < peg;
+梩 < hod;
+體育館 < gym;
+杅 < tub;
+七點五 < 7\.5;
+七點二 < 7\.2;
+地圖 < map;
+攵 < rap;
+動物園 < zoo;
+鬆弛 < sag;
+餡餅 < pie;
+圖像互換格式 < gif;
+射線 < ray;
+鋸開 < saw;
+果醬 < jam;
+圍兜 < bib;
+嬛 < apt;
+猶太人 < jew;
+拖把 < mop;
+么點 < ace;
+小狗 < pup;
+貨車 < van;
+圓形木材 < log;
+點頭 < nod;
+對準 < aim;
+噴射 < jet;
+傢伙 < guy;
+乢 < lid;
+驢子 < ass;
+飛蟲 < bug;
+筆尖 < nib;
+䡜 < car;
+麥酒 < ale;
+修女 < nun;
+䝆 < hog;
+會費 < due;
+乾草 < hay;
+䌢 < raw;
+䋞 < web;
+䊑 < pay;
+屢加 < ply;
+九七年 < ''97;
+圓形麵包 < bun;
+安放 < lay;
+㜸 < sin;
+計乘車 < cab;
+頌詞 < ode;
+脫氧核糖核酸 < dna;
+杜松子酒 < gin;
+何人 < who;
+燕麥 < oat;
+母雞 < hen;
+礦石 < ore;
+怕羞 < coy;
+任何 < any;
+流感 < flu;
+哎喲 < hey;
+方舟 < ark;
+爆聲 < pop;
+收費 < fee;
+母羊 < ewe;
+小伙子 < lad;
+別針 < pin;
+平鍋 < pan;
+不 < no;
+为 < do;
+之 < ''s;
+徃 < go;
+于 < in;
+如 < if;
+或 < or;
+它 < it;
+咱 < us;
+哟 < ah;
+嗨 < hi;
+彝 < yi;
+锱 < oz;
+钔 < md;
+伲 < we;
+镤 < pa;
+镎 < np;
+铹 < lr;
+向上地 < up;
+锿 < es;
+锝 < tc;
+锕 < ac;
+光碟 < cd;
+繄 < be;
+糎 < mm;
+粨 < hm;
+粁 < km;
+籵 < dm;
+嚇聲 < ho;
+祂 < he;
+我的 < my;
+嗈 < oh;
+咁 < so;
+兡 < hg;
+兞 < mg;
+兝 < dg;
+斧頭 < ax;
+余 < i;
+樶 < c;
+一個 < a;
+政府機關開放系統互連總則 > government\-open\-system\-interconnection\-profile;
+電機及電子學工程師聯合會 > ieee;
+國際電話電報諮詢委員會 > international\-consultative\-committee\-for\-telephone\-and\-telegraph;
+阿不來提\.阿不都熱西提 > abdulaidi\-amudurexiti\-\(chairman\-of\-xinjiang\-autonomous\-region\);
+可擦寫可編程祇讀存儲器 > eprom;
+國際電報電話咨詢委員會 > ccitt;
+耶穌基督末世聖徒教會 > the\-church\-of\-jesus\-christ\-of\-latter\-day\-saints;
+十億位元以太網絡聯盟 > gigabit\-ethernet\-alliance;
+檔案轉送存取及管理 > file\-transfer\,\-access\-and\-management;
+非對稱式數據用戶線 > asymmetrical\-digital\-subscriber\-line;
+臨時的本地管理接口 > interim\-local\-management\-interface;
+聯邦電信交通委員會 > federal\-communications\-commission;
+電腦輔助設計與繪圖 > computer\-aided\-design\-and\-drawing;
+光纖分佈式數據介面 > fiber\-distributed\-data\-interface;
+光纖分散式資料介面 > fiber\-distributed\-data\-interface;
+數據鏈路連接識別碼 > data\-link\-connection\-identifier;
+電腦與電話系統整合 > computer\-telephony\-integration;
+塞爾維亞克羅地亞語 > serbo\-croatian\-\(language\);
+禁止核武器試驗條約 > nuclear\-test\-ban\-treaty;
+老驥伏櫪志在千里 > \(lit\.\)\-an\-old\-steed\-in\-the\-stable\-still\-aspires\-to\-gallop\-1000\-li;
+不入虎穴焉得虎子 > how\-can\-you\-catch\-tiger\-cubs\-without\-entering\-the\-tiger''s\-lair;
+比上不足比下有余 > fall\-short\-of\-the\-best\-but\-be\-better\-than\-the\-worst;
+北大西洋公約組織 > the\-north\-atlantic\-treaty\-organization\-\(nato\);
+不經一事不長一智 > you\-can''t\-gain\-knowledge\-without\-practice;
+建立正式外交關係 > formally\-establish\-diplomatic\-relations;
+百足之蟲死而不僵 > a\-centipede\-dies\-but\-never\-falls\-down;
+安全與交換委員會 > securities\-and\-exchange\-communication;
+綜合服務數位網絡 > integrated\-services\-digital\-network;
+整體服務數位網路 > integrated\-services\-digital\-network;
+簡單網絡管理協議 > simple\-network\-management\-protocol;
+整體數位服務網路 > integrated\-service\-digital\-network;
+公共交換電話網路 > public\-switched\-telephone\-network;
+近乎同步數位階層 > plesiochronous\-digital\-hierarchy;
+日本電報電話公司 > nippon\-telegraph\-and\-telephone;
+廣播和未知服務器 > broadcast\-and\-unknown\-server;
+百尺杆頭更盡一步 > make\-still\-further\-progress;
+國際貨幣基金組織 > international\-monetary\-fund;
+客戶機服務器環境 > client\-server\-environement;
+電子郵件傳送服務 > \(e\-\)mail\-delivery\-service;
+用戶到網絡的接口 > user\-network\-interface;
+亞洲與太平洋地區 > asia\-pacific\-region;
+十億位元以太網絡 > gigabit\-ethernet;
+光纖分佈數據接口 > fddi;
+不見棺材不落淚 > not\-shed\-a\-tear\-until\-one\-sees\-the\-coffin\-\-\-refuse\-to\-be\-convinced\-until\-one\-is\-faced\-with\-grim\-reality;
+不到黃河心不死 > not\-stop\-until\-one\-reaches\-the\-huanghe\-river\-\-\-not\-stop\-until\-one\-reaches\-one''s\-goal;
+閉塞眼睛捉麻雀 > try\-to\-catch\-sparrows\-with\-one''s\-eyes\-blindfolded\-\-\-act\-blindly;
+斯特凡諾普洛斯 > stephanopoulos\-\(eg\,\-former\-clinton\-aide\-george\-stephanopoulos\);
+人民英雄紀念碑 > monument\-to\-the\-people''s\-heroes\,\-at\-tiananmen\-square;
+按下葫蘆浮起瓢 > solve\-one\-problem\-only\-to\-find\-another\-cropping\-up;
+不敢越雷池一步 > dare\-not\-go\-one\-step\-beyond\-the\-prescribed\-limit;
+東南亞國家聯盟 > asean\-\(association\-of\-southeast\-asian\-nations\);
+失敗是成功之母 > \"failure\-is\-the\-mother\-of\-success\"\-\(proverb\);
+經營管理和維護 > operations\-administration\-and\-maintenance;
+核武器研製計劃 > nuclear\-weapons\-\(manufacturing\)\-program;
+教授畢竟是教授 > professors\-are\-\(after\-all\)\-professors;
+虛擬通道標誌符 > virtual\-channel\-connection\-identifier;
+世界性古老問題 > a\-problem\-as\-old\-as\-the\-world\-itself;
+電信服務供應商 > telecommunications\-service\-provider;
+公用交換電話網 > public\-switched\-telephone\-network;
+中華人民共和國 > the\-people''s\-republic\-of\-china;
+通用資源識別號 > universal\-resource\-identifier;
+原子科學家通報 > journal\-of\-atomic\-scientists;
+超文件傳輸協定 > hypertext\-transfer\-protocol;
+超文本傳輸協定 > hypertext\-transfer\-protocol;
+客戶服務器結構 > client\-server\-architecture;
+媒體接口連接器 > medium\-interface\-connector;
+面嚮對象的技術 > object\-oriented\-technology;
+非同步傳輸模式 > asynchronous\-transfer\-mode;
+超文本標記語言 > hypertext\-markup\-language;
+反艦艇巡航導彈 > anti\-ship\-cruise\-missle;
+用戶到網絡接口 > user\-network\-interface;
+亞洲太平洋地區 > asia\-pacific\-region;
+多米尼加共和國 > dominican\-republic;
+撒哈拉以南非洲 > sub\-saharan\-africa;
+在大多數情況下 > in\-most\-instances;
+超高速乙太網路 > gigabit\-ethernet;
+巴布亞新幾內亞 > papau\-new\-guinea;
+羅密歐與朱麗葉 > romeo\-and\-juliet;
+太陽微系統公司 > sun\-microsystems;
+帖撒羅尼迦後書 > 2\-thessalonians;
+亞爾發和奧米加 > alpha\-and\-omega;
+帖撒羅尼迦前書 > 1\-thessalonians;
+莫尼卡萊溫斯基 > monica\-lewinsky;
+阿伏伽德羅定律 > avogadro''s\-law;
+電纜調制解調器 > cable\-modem;
+第二次世界大戰 > world\-war\-2;
+介質訪問控制層 > mac\-layer;
+不知天高地厚 > not\-know\-the\-immensity\-of\-heaven\-and\-earth\-\-\-have\-an\-exaggerated\-opinion\-of\-one''s\-abilities;
+百聞不如一見 > seeing\-for\-oneself\-is\-a\-hundred\-times\-better\-than\-hearing\-from\-others;
+不費吹灰之力 > as\-easy\-as\-blowing\-off\-dust\-\-\-not\-needing\-the\-slightest\-effort;
+沙利科什維利 > general\-shalikashvili\-\(head\-of\-us\-joint\-chiefs\-of\-staff\);
+寄予很大期望 > to\-place\-great\-hope\-or\-expectation\-on\-\(sth\);
+巴爾舍夫斯基 > \(charlene\)\-barshefsky\,\-us\-trade\-negotiator;
+約定資訊速率 > committed\-inforrmation\-rate\-\(frame\-relay\);
+逆向擁塞通知 > backward\-explicit\-congestion\-notification;
+前向擁塞通知 > forward\-explicit\-congestion\-notification;
+美國廣播公司 > abc\-\(american\-broadcasting\-corporation\);
+哈裡森史密特 > harrison\-schmitt\-\(apollo\-1\-7\-astronaut\);
+畢其功于一役 > accomplish\-the\-whole\-task\-at\-one\-stroke;
+擺事實講道理 > present\-the\-facts\-and\-reason\-things\-out;
+國際電信聯盟 > international\-telecommunications\-union;
+不可同日而語 > cannot\-be\-mentioned\-in\-the\-same\-breath;
+有志者事竟成 > where\-there\-is\-a\-will\,\-there\-is\-a\-way;
+國際標準組織 > international\-standards\-organization;
+目前還不清楚 > at\-present\-it\-is\-still\-unclear\-\.\.\.\.;
+疾病預防中心 > \(u\.s\.\)\-center\-for\-disease\-control;
+應用程式介面 > application\-programming\-interface;
+矮子裡拔將軍 > choose\-the\-best\-person\-available;
+取得大學學位 > to\-obtain\-a\-university\-education;
+實時操作環境 > real\-time\-operating\-environment;
+國際商業機器 > international\-business\-machines;
+符合美國利益 > in\-line\-with\-american\-interests;
+軟體出版協會 > software\-publishers\-association;
+松下電氣工業 > matsushita\-electronics\-industry;
+服務廣告協議 > service\-advertisement\-protocol;
+語音通訊通道 > voice\-\(communications\)\-channel;
+世界貿易組織 > wto\-\(world\-trade\-organization\);
+常規銅電話線 > ordinary\-copper\-telephone\-line;
+同步數位階層 > synchronous\-digital\-hierarchy;
+上海戲劇學院 > shanghai\-theatrical\-institute;
+傳輸控制協定 > transmission\-control\-protocol;
+傳統中國醫藥 > chinese\-traditional\-medicine;
+固定虛擬連接 > permanent\-virtual\-connection;
+開放系統互連 > open\-systems\-interconnection;
+北京藝術學院 > beijing\-academy\-of\-fine\-arts;
+不登大雅之堂 > not\-appeal\-to\-refined\-taste;
+北京語言學院 > beijing\-languages\-institute;
+地址解析協議 > address\-resolution\-protocol;
+本地管理界面 > local\-management\-interface;
+異步傳輸模式 > asynchronous\-transfer\-mode;
+電腦輔助教材 > computer\-aided\-instruction;
+電腦輔助工程 > computer\-aided\-engineering;
+虛擬通道連接 > virtual\-channel\-connection;
+網絡管理系統 > network\-management\-system;
+世界衛生組織 > world\-health\-organization;
+值得注意的是 > it''s\-worth\-noting\-that\.\.\.;
+環球定位系統 > global\-positioning\-system;
+因特網提供商 > internet\-sevice\-provider;
+網絡操作系統 > network\-operating\-system;
+圖像用戶介面 > graphical\-user\-interface;
+面嚮對象語言 > object\-oriented\-language;
+共同閘道介面 > common\-gateway\-interface;
+網路作業系統 > network\-operating\-system;
+公眾電信網路 > public\-telephone\-network;
+非盈利的組織 > non\-profit\-organization;
+訊息處理系統 > message\-handling\-system;
+數字訂購線路 > digital\-subscriber\-line;
+辯証唯物主義 > dialectical\-materialism;
+網路節點介面 > network\-node\-interface;
+正在中國訪問 > during\-a\-trip\-to\-china;
+八小時工作制 > eight\-hour\-working\-day;
+消息靈通人士 > a\-well\-informed\-source;
+日本經濟新聞 > japanese\-economic\-news;
+訊息傳遞中介 > message\-transfer\-agent;
+電腦輔助設計 > computer\-aided\-design;
+持不同政見者 > \(political\)\-dissident;
+資料傳送服務 > data\-delivery\-service;
+介質訪問控制 > medium\-access\-control;
+印度尼西亞語 > indonesian\-\(language\);
+多種語言支持 > multilingual\-support;
+接收器靈敏度 > receiver\-sensitivity;
+民族主義情緒 > nationalist\-feelings;
+媒體訪問控制 > media\-access\-control;
+四年制的大學 > four\-year\-university;
+邏輯鏈路控制 > logical\-link\-control;
+萬維天羅地網 > world\-wide\-web\-\(www\);
+巡迴分析端口 > roving\-analysis\-port;
+只不過幾年前 > only\-a\-few\-years\-ago;
+一百五十多年 > more\-than\-150\-years;
+哥倫比亞大學 > columbia\-university;
+貿易保護主義 > trade\-protectionism;
+在某種程度上 > to\-a\-certain\-extent;
+曼徹斯特編碼 > manchester\-encoding;
+訊框傳送服務 > frame\-relay\-service;
+訊框傳送網路 > frame\-relay\-network;
+阿比西尼亞人 > abyssinian\-\(person\);
+亞太經合組織 > apec\-\(organization\);
+軟件開發人員 > software\-developer;
+在傳輸過程中 > while\-transmitting;
+必不可少組成 > absolute\-necessity;
+美國航空公司 > american\-airlines;
+交換以太網絡 > switched\-ethernet;
+諾貝爾和平獎 > nobel\-peace\-prize;
+五角大樓官員 > pentagon\-official;
+訊框傳送論壇 > frame\-relay\-forum;
+阿爾巴尼亞人 > albanian\-\(person\);
+不分青紅皂白 > indiscriminately;
+不等邊三角形 > scalene\-triangle;
+網際網路協會 > internet\-society;
+三千到五千萬 > 30\-to\-50\-million;
+一個中國政策 > one\-china\-policy;
+網絡規劃人員 > network\-planner;
+共享以太網絡 > shared\-ethernet;
+卡納維拉爾角 > cape\-canaveral;
+區域網路技術 > lan\-technology;
+薩達姆侯賽因 > saddam\-hussein;
+撞擊式印表機 > impact\-printer;
+撞擊式打印機 > impact\-printer;
+全球氣候升溫 > global\-warming;
+梅塞迪斯奔馳 > mercedes\-benz;
+奧克拉荷馬市 > oklahoma\-city;
+高速乙太網路 > fast\-ethernet;
+快速以太網絡 > fast\-ethernet;
+以太網絡端口 > ethernet\-port;
+亞洲與太平洋 > asia\-pacific;
+一千零五十億 > 105\-billion;
+吉爾吉斯斯坦 > kirghizstan;
+榮獲諾貝爾獎 > nobel\-prize;
+三月二十三號 > march\-23rd;
+沒有生育能力 > infertile;
+國際互聯網絡 > internet;
+三月二十一號 > march\-21;
+專用集成電路 > asic;
+圖像互換格式 > gif;
+脫氧核糖核酸 > dna;
+殺雞給猴看 > \"kill\-a\-chicken\-in\-front\-of\-a\-monkey\"\-\-\-\-make\-an\-example\-out\-of\-someone\-\(by\-punishing\-them\)\-to\-frighten\-others;
+病急亂投醫 > turn\-to\-any\-doctor\-one\-can\-find\-when\-critically\-ill\-\-\-try\-anything\-when\-in\-a\-desperate\-situation;
+斯卡伯勒礁 > scarborough\-shoal\-\(philippines''\-name\-for\-huangyan\-island\);
+冰炭不相容 > as\-incompatible\-or\-irreconcilable\-as\-ice\-and\-hot\-coals;
+韋爾弗雷茲 > \(george\)\-wehrfritz\-\(beijing\-bureau\-chief\-of\-newsweek\);
+琳\.戴維斯 > lynn\-davis\-\(us\-state\-department\-arms\-control\-expert\);
+人民行動黨 > people''s\-action\-party\-\(ruling\-party\-in\-singapore\);
+常任理事國 > permanent\-member\-state\-\(of\-un\-security\-council\);
+人民大會堂 > great\-hall\-of\-the\-people\,\-at\-tiananmen\-square;
+橋本龍太郎 > hashimoto\,\-ryutaro\-\(prime\-minister\-of\-japan\);
+奧爾布賴特 > \(madeleine\)\-albright\-\(us\-secretary\-of\-state\);
+不當一回事 > not\-regard\-as\-a\-matter\-\(of\-any\-importance\);
+不打不相識 > from\-an\-exchange\-of\-blows\-friendship\-grows;
+聯邦調查局 > fbi\-\(federal\-bureau\-of\-investigation\);
+一九四九年 > the\-year\-1949\-\(communist\-revolution\);
+約翰內斯堡 > johannesburg\-\(city\-in\-south\-africa\);
+分佈式環境 > distributed\-\(computing\)\-environment;
+非政府組織 > non\-governmental\-organization\-\(ngo\);
+尤金塞爾南 > eugene\-cernan\-\(apollo\-17\-astronaut\);
+比勒陀利亞 > pretoria\-\(capital\-of\-south\-africa\);
+半日制學校 > half\-day\-\(or\-double\-shift\-school\);
+越來越嚴重 > to\-become\-more\-serious\-every\-day;
+戈爾巴喬夫 > \(former\-soviet\-leader\)\-gorbachev;
+八級工資制 > eight\-grade\-wage\-scale\-\(system\);
+在密切注意 > to\-pay\-close\-attention\-\(to\-sth\);
+核威懾政策 > policy\-of\-nuclear\-intimidation;
+可選擇丟棄 > discard\-eligible\-\(frame\-relay\);
+特別行政區 > special\-administrative\-region;
+華盛頓時報 > washington\-times\-\(newspaper\);
+似乎很安全 > to\-appear\-\(to\-be\)\-very\-safe;
+中央情報局 > central\-intelligence\-agency;
+服務提供商 > \(internet\)\-service\-provider;
+管理信息庫 > management\-information\-base;
+華盛頓郵報 > washington\-post\-\(newspaper\);
+願意不願意 > whether\-one\-wants\-to\-or\-not;
+發展核武器 > to\-develop\-nuclear\-weapons;
+叛變的省份 > renegade\-province\-\(taiwan\);
+中國科學院 > chinese\-acadamy\-of\-science;
+用戶端設備 > customer\-premise\-equipment;
+不等價交換 > exchange\-of\-unequal\-values;
+永久虛電路 > permanent\-virtual\-circuit;
+原因很簡單 > the\-reason\-is\-very\-simple;
+通訊自動化 > communications\-automation;
+幀首定界符 > start\-of\-frame\-delimiter;
+不承認主義 > policy\-of\-nonrecognition;
+楊百翰大學 > brigham\-young\-university;
+分佈式結構 > distributed\-architecture;
+持不同政見 > \(politically\)\-dissenting;
+人民解放軍 > people''s\-liberation\-army;
+從外表來看 > looking\-from\-the\-outside;
+交換虛電路 > switched\-virtual\-circuit;
+核武器材料 > nuclear\-weapon\-material;
+發佈新軟件 > to\-release\-new\-software;
+專屬經濟區 > exclusive\-economic\-zone;
+流亡在海外 > to\-be\-in\-exile\-overseas;
+不抵抗主義 > policy\-of\-nonresistance;
+在今年年底 > at\-the\-end\-of\-this\-year;
+來回來去地 > backwards\-and\-forwards;
+網絡層協議 > network\-layer\-protocol;
+工業化國家 > industrialized\-country;
+教義和聖約 > doctrine\-and\-covenants;
+網絡管理員 > network\-administrator;
+芝加哥大學 > university\-of\-chicago;
+陸海空三軍 > army\,\-navy\,\-air\-force;
+本土化軟件 > software\-localization;
+檔案分配區 > file\-allocation\-table;
+地對空導彈 > ground\-to\-air\-missile;
+不信任投票 > vote\-of\-no\-confidence;
+本人的觀點 > \(one''s\)\-personal\-view;
+軟體配送者 > software\-distributor;
+歷來最低點 > all\-time\-low\-\(point\);
+米德爾伯裡 > middlebury\-\(college\);
+兩點十九分 > 2\-\:1\-9\-\(time\-of\-day\);
+幀檢驗序列 > frame\-check\-sequence;
+不完全中立 > imperfect\-neutrality;
+克里斯托弗 > \(warren\)\-christopher;
+鑒定委員會 > evaluation\-committee;
+馬來西亞語 > malasian\-\(language\);
+過了五分鐘 > five\-minutes\-passed;
+克羅地亞語 > croatian\-\(language\);
+討論的議題 > topic\-of\-discussion;
+地址的轉換 > address\-translation;
+自動地工作 > automatic\-operation;
+保安自動化 > security\-automation;
+分佈式網絡 > distributed\-network;
+不期然而然 > happen\-unexpectedly;
+加值型網路 > value\-added\-network;
+因特網聯通 > internet\-connection;
+科學的交流 > scientific\-exchange;
+鋰離子電池 > lithium\-ion\-battery;
+長期穩定性 > long\-term\-stability;
+樓宇自動化 > building\-automation;
+視窗加速器 > windows\-accelarator;
+華爾街日報 > wall\-street\-journal;
+國民黨軍隊 > nationalist\-forces;
+一小時以後 > a\-short\-time\-later;
+網路連接層 > network\-link\-layer;
+康奈爾大學 > cornell\-university;
+塞爾維亞語 > serbian\-\(language\);
+斯瓦希裡語 > swahili\-\(language\);
+國家標準碼 > gb\-\(guo\-biao\)\-code;
+本初子午線 > the\-first\-meridian;
+家庭消費者 > household\-consumer;
+域名服務器 > domain\-name\-server;
+發展中國家 > developing\-country;
+多端中繼器 > multiport\-repeater;
+發展的國家 > developing\-country;
+生活必需品 > life''s\-necessities;
+可行性研究 > feasibility\-study;
+數據庫軟件 > database\-software;
+西裡爾字母 > cyrillic\-alphabet;
+撒迦利亞書 > book\-of\-zechariah;
+波士頓大學 > boston\-university;
+辦公自動化 > office\-automation;
+不及物動詞 > intransitive\-verb;
+膝上型電腦 > laptop\-\(computer\);
+中央委員會 > central\-committee;
+到那個時候 > until\-this\-moment;
+洛杉磯時報 > los\-angeles\-times;
+文化的交流 > cultural\-exchange;
+斯洛伐克語 > slovak\-\(language\);
+外國旅遊者 > foreign\-traveller;
+一千七百萬 > seventeen\-million;
+委員會會議 > committee\-meeting;
+計算機工業 > computer\-industry;
+共產黨部隊 > communist\-forces;
+服務提供者 > service\-provider;
+移動式電話 > mobile\-telephone;
+婚外性接觸 > extramarital\-sex;
+波美比重計 > baume\-hydrometer;
+外國投資者 > foreign\-investor;
+異性性接觸 > heterosexual\-sex;
+桌上型電腦 > desktop\-computer;
+記者招待會 > press\-conference;
+原子科學家 > atomic\-scientist;
+長度指示符 > length\-indicator;
+仿真服務器 > emulation\-server;
+計算機網絡 > computer\-network;
+過份簡單化 > oversimplication;
+知識工程師 > knowledge\-worker;
+資料鏈結層 > data\-link\-layer;
+零等待狀態 > zero\-wait\-state;
+在很多方面 > in\-many\-aspects;
+俄巴底亞書 > book\-of\-obadiah;
+數據鏈路層 > data\-link\-layer;
+種族主義者 > racist\-\(person\);
+網絡瀏覽器 > network\-browser;
+客戶機軟件 > client\-software;
+自動售貨機 > vending\-machine;
+網絡打印機 > network\-printer;
+板板六十四 > unaccommodating;
+第一個層次 > the\-first\-stage;
+全球資訊網 > world\-wide\-web;
+以太網絡幀 > ethernet\-frame;
+不平等條約 > unequal\-treaty;
+喘不過氣來 > cannot\-breathe;
+捷克共和國 > czech\-republic;
+工業的巨頭 > industry\-mogol;
+每端口價格 > price\-per\-port;
+不正常狀況 > abnormal\-state;
+開放式系統 > open\-system\(s\);
+世界的語言 > world\-language;
+激光打引機 > laser\-printer;
+哥林多後書 > 2\-corinthians;
+不記名投票 > secret\-ballot;
+不列顛諸島 > british\-isles;
+哥林多前書 > 1\-corinthians;
+不可能的事 > impossibility;
+百分之五十 > fifty\-percent;
+艾滋病抗體 > aids\-antibody;
+不可侵犯權 > inviolability;
+鐳射印表機 > laser\-printer;
+生命的遺跡 > trace\-of\-life;
+一九九七年 > the\-year\-1997;
+全世界第一 > world''s\-first;
+普通老百姓 > common\-people;
+艾滋病患者 > aids\-patient;
+簿記管理員 > commissarian;
+核武器試驗 > nuclear\-test;
+二十一世紀 > 21st\-century;
+有條有理地 > methodically;
+不是玩兒的 > it''s\-no\-joke;
+粗俗的階級 > vulgar\-class;
+打印服務器 > print\-server;
+賓西法尼亞 > pennsylvania;
+耶利米哀歌 > lamentations;
+八九不離十 > pretty\-close;
+開放式網路 > open\-network;
+克裡姆林宮 > the\-kremlin;
+太平洋週邊 > pacific\-rim;
+激光二極管 > laser\-diode;
+器官捐獻者 > organ\-donor;
+文件服務器 > file\-server;
+玻意耳定律 > boyle''s\-law;
+一千四百億 > 140\-billion;
+自由選擇權 > free\-agency;
+巴枯寧主義 > bakuninism;
+說不出話來 > speechless;
+塔吉克斯坦 > tajikistan;
+加利福尼亞 > california;
+使用者中介 > user\-agent;
+哈薩克斯坦 > kazakhstan;
+百分之九十 > 90\-percent;
+公開討論會 > open\-forum;
+艾滋病病毒 > aids\-virus;
+地方官職位 > prefecture;
+磁盤驅動器 > disl\-drive;
+女裝裁縫師 > dressmaker;
+長子的名份 > birthright;
+一百五十億 > 15\-billion;
+阿比西尼亞 > abyssinia;
+社會主義者 > socialist;
+提摩太后書 > 2\-timothy;
+到目前為止 > until\-now;
+流行性感冒 > influenza;
+不穩定氣流 > turbulent;
+提摩太前書 > 1\-timothy;
+波利尼西亞 > polynesia;
+圖書管理員 > librarian;
+印度尼西亞 > indonesia;
+民主主義者 > democrats;
+變焦距鏡頭 > zoom\-lens;
+企業間網路 > extranet;
+常坐汽車者 > motorist;
+汽車展覽會 > car\-show;
+企業內網路 > intranet;
+撒母耳記下 > 2\-samuel;
+撒母耳記上 > 1\-samuel;
+四月十七號 > april\-17;
+神學研究所 > seminary;
+埃塞俄比亞 > ethiopia;
+奧克拉荷馬 > oklahoma;
+不名譽事物 > dishonor;
+海軍總司令 > admiral;
+五月十五號 > may\-1\-5;
+阿爾及利亞 > algeria;
+七月三十號 > july\-30;
+馬克思主義 > marxism;
+阿爾巴尼亞 > albania;
+一節\(詩\) > stanza;
+透印版印刷 > offset;
+毛織運動衫 > jersey;
+男修道院長 > abbot;
+調制解調器 > modem;
+三色紫羅蘭 > pansy;
+安全理事會 > the\-u;
+抱薪救火 > carry\-faggots\-to\-put\-out\-a\-fire\-\-\-adopt\-a\-wrong\-method\-to\-save\-a\-situation\-and\-end\-up\-by\-making\-it\-worse;
+杯水車薪 > trying\-to\-put\-out\-a\-burning\-cartload\-of\-faggots\-with\-a\-cup\-of\-water\-\-\-an\-utterly\-inadequate\-measure;
+辯証施治 > diagnosis\-and\-treatment\-based\-on\-an\-overall\-analysis\-of\-the\-illness\-and\-the\-patient''s\-condition;
+敝帚自珍 > value\-one''s\-own\-old\-broom\-\-\-cherish\-something\-of\-little\-value\-simply\-because\-it\-is\-one''s\-own;
+兵不血刃 > the\-edges\-of\-the\-swords\-not\-being\-stained\-with\-blood\-\-\-win\-victory\-without\-firing\-a\-shot;
+養兒防老 > \(of\-parents\)\-to\-bring\-up\-cihldren\-for\-the\-purpose\-of\-being\-looked\-after\-in\-old\-age;
+不共戴天 > will\-not\-live\-under\-the\-same\-sky\-\(with\-one''s\-enemy\)\-\-\-absolutely\-irreconcilable;
+擊其惰歸 > avoid\-the\-enemy\-when\-he\-is\-fresh\-and\-strike\-him\-when\-he\-is\-tired\-and\-withdraws;
+避其銳氣 > avoid\-the\-enemy\-when\-he\-is\-fresh\-and\-strike\-him\-when\-he\-is\-tired\-and\-withdraws;
+保甲制度 > the\-bao\-jia\-system\-\(an\-administrative\-system\-organized\-on\-basis\-of\-households\);
+不辨菽麥 > be\-unable\-to\-tell\-beans\-from\-wheat\-\-\-have\-no\-knowledge\-of\-practical\-matters;
+恭喜發財 > congratulations\-for\-getting\-rich\-\(traditional\-chinese\-new\-year''s\-future\-use;
+塞韋裡諾 > \[jean\-michel\]\-severino\-\[world\-bank\-vice\-president\,\-east\-asia\-and\-pacific\];
+有期徒刑 > limited\-term\-of\-imprisonment\-\(ie\,\-anything\-less\-than\-life\-imprisonment\);
+閉目塞聽 > shuts\-one''s\-eyes\-and\-stop\-up\-one''s\-ears\-\-\-be\-out\-of\-touch\-with\-reality;
+笨鳥先飛 > clumsy\-birds\-have\-to\-start\-flying\-early\-\-\-the\-slow\-need\-to\-start\-early;
+本草綱目 > an\-outline\-treatise\-of\-medical\-herbs\,\-compiled\-by\-li3\-shi2\-zhen1\-李時珍;
+兵強馬壯 > strong\-soldiers\-and\-sturdy\-horses\-\-\-a\-well\-trained\-and\-powerful\-army;
+業余大學 > college\-for\-people\-who\-attend\-after\-work\-\(lit\.\:\-spare\-time\-college\);
+捕風捉影 > chase\-the\-wind\-and\-clutch\-at\-shadows\-\-\-make\-groundless\-accusations;
+不分彼此 > make\-no\-distinction\-between\-what''s\-one''s\-own\-and\-what''s\-another''s;
+不知凡幾 > can''t\-tell\-how\-many\-there\-are\-\-\-there\-are\-numerous\-similar\-cases;
+抱殘守缺 > cherish\-the\-outmoded\-and\-preserve\-the\-outworn\-\-\-be\-conservative;
+博古通今 > conversant\-with\-things\-past\-and\-present\-\-\-erudite\-and\-informed;
+大鬧天宮 > \"the\-monkey\-creates\-havoc\-in\-heaven\"\,\-story\-about\-sun\-wu\-kong;
+悲天憫人 > bemoan\-the\-state\-of\-the\-universe\-and\-pity\-the\-fate\-of\-mankind;
+不服水土 > \(of\-a\-stranger\)\-not\-accustomed\-to\-the\-climate\-of\-a\-new\-place;
+哀兵必勝 > an\-army\-burning\-with\-righteous\-indignation\-is\-bound\-to\-win;
+矛頭指向 > target\-someone\-or\-something\-\(for\-attack\,\-criticism\,\-etc\.\);
+不恥下問 > not\-feel\-ashamed\-to\-ask\-and\-learn\-from\-one''s\-subordinates;
+卡拉OK > karaoke\-\(singing\-to\-recorded\-instrumental\-accompaniment\);
+中國民航 > general\-administration\-of\-civil\-aviation\-of\-china\-\(caac\);
+三國演義 > name\-of\-a\-classic\-novel\,\-\"romance\-of\-the\-three\-kingdoms\";
+背水一戰 > fight\-with\-one''s\-back\-to\-the\-river\-\-\-fight\-to\-win\-or\-die;
+杯弓蛇影 > mistaking\-the\-reflection\-of\-a\-bow\-in\-the\-cup\-for\-a\-snake;
+背井離鄉 > leave\-one''s\-native\-place\-\(especially\-against\-one''s\-will\);
+波瀾起伏 > of\-a\-piece\-of\-writing\-with\-one\-climax\-following\-another;
+不為已甚 > refrain\-from\-going\-to\-extremes\-in\-meting\-out\-punishment;
+不約而同 > take\-the\-same\-action\-or\-view\-without\-prior\-consultation;
+八面玲瓏 > be\-smooth\-and\-slick\-\(in\-establishing\-social\-relations\);
+眾志成城 > \"unity\-of\-will\-is\-an\-impregnable\-stronghold\"\-\(proverb\);
+抗日戰爭 > \(china''s\)\-war\-of\-resistance\-against\-japan\-\(1937\-1945\);
+大材小用 > using\-a\-talented\-person\-in\-an\-insignificant\-position;
+不聞不問 > not\-bother\-to\-ask\-questions\-or\-listen\-to\-what''s\-said;
+並行不悖 > both\-can\-be\-implemented\-without\-coming\-into\-conflict;
+步步為營 > advance\-gradually\-and\-entrench\-oneself\-at\-every\-step;
+一望無際 > as\-far\-as\-the\-eye\-can\-see\-\(lit\:\-look\-afar\-no\-bound\);
+不見經傳 > not\-to\-be\-found\-in\-the\-classics\-\-\-not\-authoritative;
+撥雲見日 > dispel\-the\-clouds\-and\-see\-the\-sun\-\-\-restore\-justice;
+安步當車 > walk\-over\-leisurely\-instead\-of\-riding\-in\-a\-carriage;
+不勝枚舉 > too\-numerous\-to\-mention\-individually\-or\-one\-by\-one;
+賓至如歸 > guests\-feel\-at\-home\-\(in\-a\-hotel\,\-guesthouse\,\-etc\.\);
+尖閣列島 > senkaku\-islands\-\(japanese\-name\-for\-diaoyu\-islands\);
+維吾爾族 > the\-uygur\-\(uighur\)\-nationality\,\-living\-in\-xinjiang;
+南華早報 > south\-china\-morning\-post\-\(newspaper\-in\-hong\-kong\);
+病入膏肓 > the\-disease\-has\-attacked\-the\-vitals\-\-\-beyond\-cure;
+約翰拉貝 > john\-rabe\-\(german\-eyewitness\-to\-nanjing\-massacre\);
+不破不立 > without\-destruction\-there\-can\-be\-no\-construction;
+包產到戶 > fixing\-of\-farm\-output\-quotas\-for\-each\-household;
+駱駝祥子 > name\-of\-a\-novel\,\-luo\-tuo\-xiangzi\,\-by\-lao\-she\-老舍;
+逼上樑山 > be\-driven\-to\-join\-the\-liangshan\-mountain\-rebels;
+南轅北轍 > \(fig\.\)\-act\-in\-a\-way\-that\-defeats\-one''s\-purpose;
+保外就醫 > \(of\-a\-prisoner\)\-released\-for\-medical\-treatment;
+蒸蒸日上 > becoming\-more\-prosperous\-with\-each\-passing\-day;
+烏魯木齊 > urumqi\-\(capital\-of\-xinjiang\-autonomous\-region\);
+安土重遷 > hate\-to\-leave\-a\-place\-where\-one\-has\-lived\-long;
+工商銀行 > industrial\-and\-commercial\-bank\-of\-china\-\(icbc\);
+事與願違 > things\-don''t\-turn\-out\-the\-way\-you\-want\-or\-plan;
+張燈結綵 > be\-decorated\-with\-lanterns\-and\-colored\-banners;
+閉門思過 > shut\-oneself\-up\-and\-ponder\-over\-one''s\-mistakes;
+閉關自守 > close\-the\-country\-to\-international\-intercourse;
+不避艱險 > shrink\-or\-flinch\-from\-no\-difficulty\-or\-danger;
+阿旺曲沛 > ngawang\-choepel\-\(tibetan\,\-fullbright\-scholar\);
+畫蛇添足 > ruin\-the\-effect\-by\-adding\-what\-is\-superfluous;
+仗義執言 > speak\-out\-on\-a\-matter\-of\-principle\-or\-justice;
+兵臨城下 > the\-attacking\-army\-has\-reached\-the\-city\-gates;
+背城借一 > make\-a\-last\-ditch\-stand\-before\-the\-city\-wall;
+百感交集 > all\-sorts\-of\-feelings\-well\-up\-in\-one''s\-heart;
+兵不厭詐 > there\-can\-never\-be\-too\-much\-deception\-in\-war;
+五六十歲 > \(in\-one''s\)\-fifties\-or\-sixties\-\(years\-of\-age\);
+避重就輕 > avoid\-the\-important\-and\-dwell\-on\-the\-trivial;
+標新立異 > start\-something\-new\-in\-order\-to\-be\-different;
+大功告成 > successfully\-accomplished\-\(project\-or\-goal\);
+無所用心 > eat\-three\-square\-meals\-a\-day\-and\-do\-no\-work;
+班門弄斧 > display\-one''s\-slight\-skill\-before\-an\-expert;
+中國日報 > china\-daily\-\(an\-english\-language\-newspaper\);
+不可終日 > be\-unable\-to\-carry\-on\-even\-for\-a\-single\-day;
+飽食終日 > eat\-three\-square\-meals\-a\-day\-and\-do\-no\-work;
+單槍匹馬 > single\-handed\-\(lit\:\-single\-spear\-one\-horse\);
+名副其實 > not\-just\-in\-name\-only\,\-but\-also\-in\-reality;
+喜新厭舊 > literal\:\-to\-like\-the\-new\,\-and\-hate\-the\-old;
+拍案叫絕 > lit\.\:\-slap\-the\-table\-and\-shout\-with\-praise;
+風土人情 > local\-conditions\-\(human\-and\-environmental\);
+阿拉塔斯 > \(ali\)\-alatas\-\(indonesian\-foreign\-minister\);
+中共中央 > chinese\-communist\-party\-central\-committee;
+博聞強記 > have\-wide\-learning\-and\-a\-retentive\-memory;
+百年大計 > a\-project\-of\-vital\-and\-lasting\-importance;
+拔苗助長 > spoil\-things\-through\-excessive\-enthusiasm;
+肯普索恩 > \(dirk\)\-kempthorne\-\(us\-senator\-from\-idaho\);
+外孫女兒 > granddaughter\-\(daughter\-of\-one''s\-daugher\);
+百折不撓 > keep\-on\-fighting\-in\-spite\-of\-all\-setbacks;
+安身立命 > settle\-down\-and\-get\-on\-with\-one''s\-pursuit;
+不可一世 > consider\-oneself\-unexcelled\-in\-the\-world;
+絕對數字 > absolute\-\(as\-opposed\-to\-relative\)\-number;
+抱頭鼠竄 > cover\-the\-head\-and\-sneak\-away\-like\-a\-rat;
+百廢俱興 > all\-neglected\-tasks\-are\-being\-undertaken;
+避實就虛 > stay\-clear\-of\-the\-enemy''s\-main\-force\-and;
+不求甚解 > not\-seek\-to\-understand\-things\-thoroughly;
+中央全會 > plenary\-session\-of\-the\-central\-committee;
+古杰拉爾 > \(i\.\-k\.\)\-gujral\-\(prime\-minister\-of\-india\);
+冷淡關係 > cold\-relations\-\(e\.g\.\-between\-countries\);
+不了了之 > settle\-a\-matter\-by\-leaving\-it\-unsettled;
+不即不離 > be\-neither\-too\-familiar\-nor\-too\-distant;
+總政治部 > \(military\)\-general\-political\-department;
+半路出家 > switch\-to\-a\-job\-one\-was\-not\-trained\-for;
+病毒學家 > virologist\-\(person\-who\-studies\-viruses\);
+結社自由 > \(constitutional\)\-freedom\-of\-association;
+蔓延全國 > to\-spread\-throughout\-the\-entire\-country;
+百思不解 > remain\-puzzled\-after\-pondering\-over\-sth;
+半勞動力 > one\-able\-to\-do\-light\-manual\-labour\-only;
+總後勤部 > \(military\)\-general\-logistics\-department;
+一國兩制 > one\-country\,\-two\-systems\-\(china\-taiwan\);
+白頭諧老 > live\-to\-ripe\-old\-age\-in\-conjugal\-bliss;
+成千上萬 > by\-the\-thousands\-and\-tens\-of\-thousands;
+不宣而戰 > open\-hostilities\-without\-declaring\-war;
+不遠千里 > make\-light\-of\-travelling\-a\-thousand\-li;
+安居樂業 > live\-and\-work\-in\-peace\-and\-contentment;
+遍體鱗傷 > covered\-all\-over\-with\-cuts\-and\-bruises;
+內懮外患 > domestic\-strife\-and\-foreign\-agression;
+治病救人 > cure\-the\-sickness\-to\-save\-the\-patient;
+哀鴻遍野 > a\-land\-swarming\-with\-disaster\-victims;
+病從口入 > illness\-finds\-its\-way\-in\-by\-the\-mouth;
+總參謀部 > \(military\)\-general\-staff\-headquarters;
+撥絃樂器 > plucked\-string\-or\-stringed\-instrument;
+別具一格 > having\-a\-unique\-or\-distinctive\-style;
+讀賣新聞 > yomiuri\-shimbun\-\(japanese\-newspaper\);
+才疏學淺 > have\-little\-talent\-and\-less\-learning;
+避坑落井 > dodge\-a\-pit\-only\-to\-fall\-into\-a\-well;
+變溫動物 > poikilothermal\-\(cold\-blooded\)\-animal;
+大中學生 > university\-and\-high\-school\-students;
+安分守己 > abide\-by\-the\-law\-and\-behave\-oneself;
+大顯身手 > fully\-displaying\-one''s\-capabilities;
+波瀾壯闊 > surging\-forward\-with\-great\-momentum;
+回歸中國 > to\-return\-to\-china\-\(e\.g\.\-hong\-kong\);
+愛莫能助 > willing\-to\-help\-but\-unable\-to\-do\-so;
+調查結果 > results\-\(of\-an\-investigation\,\-poll\);
+百端待舉 > a\-thousand\-things\-remain\-to\-be\-done;
+秋高氣爽 > clear\-and\-refreshing\-autumn\-weather;
+冰消瓦解 > melt\-like\-ice\-and\-break\-like\-tiles;
+半斤八兩 > not\-much\-to\-choose\-between\-the\-two;
+步人後塵 > follow\-in\-other\-people''s\-footsteps;
+龍飛鳳舞 > lit\.\:\-dragon\-flies\,\-phoenix\-dances;
+國際見聞 > international\-background\-knowledge;
+國務委員 > member\-of\-state\-council\-\(in\-china\);
+可移植性 > portability\-\(programming\-language\);
+呼和浩特 > hohhot\-\(capital\-of\-inner\-mongolia\);
+小題大做 > make\-a\-big\-fuss\-over\-a\-minor\-issue;
+不虛此行 > the\-trip\-has\-not\-been\-made\-in\-vain;
+言論自由 > \(constitutional\)\-freedom\-of\-speech;
+開發環境 > development\-environment\-\(computer\);
+不識時務 > show\-no\-understanding\-of\-the\-times;
+不時之需 > a\-possible\-period\-of\-want\-or\-need;
+以牙還牙 > a\-tooth\-for\-a\-tooth\-\(retaliation\);
+百戰百勝 > emerge\-victorious\-in\-every\-battle;
+由此可見 > from\-this\,\-it\-can\-be\-seen\-that\.\.\.;
+寸草不生 > \"not\-even\-a\-blade\-of\-grass\-grows\";
+擦亮眼睛 > remove\-the\-scales\-from\-one''s\-eyes;
+補偏救弊 > remedy\-defects\-and\-rectify\-errors;
+百川歸海 > all\-things\-tends\-in\-one\-direction;
+誓不反悔 > to\-vow\-not\-to\-break\-one''s\-promise;
+科學編輯 > science\-editor\-\(of\-a\-publication\);
+昂首闊步 > stride\-forward\-with\-one''s\-chin\-up;
+日經指數 > nikkei\-index\-\(of\-japanese\-stocks\);
+得寸進尺 > literal\:\-get\-an\-inch\,\-want\-a\-foot;
+北洋軍閥 > the\-northern\-warlords\-\(1912\-1927\);
+大惑不解 > do\-not\-understand\-a\-certain\-thing;
+明文規定 > expressly\-stipulated\-\(in\-writing\);
+大庭廣眾 > public\-place\-with\-numerous\-people;
+百無一失 > no\-danger\-of\-anything\-going\-wrong;
+人權觀察 > human\-rights\-watch\-\(organization\);
+備而不用 > have\-something\-ready\-just\-in\-case;
+節外生枝 > new\-problems\-complicate\-an\-issue;
+鼻青臉腫 > a\-bloody\-nose\-and\-a\-swollen\-face;
+企業管理 > business\-management\-\(as\-a\-study\);
+不謀而合 > agree\-without\-prior\-consultation;
+按兵不動 > not\-throw\-the\-troops\-into\-battle;
+一中一臺 > \"one\-china\,\-one\-taiwan\"\-\(policy\);
+中日韓越 > china\,\-japan\,\-korea\,\-and\-vietnam;
+形影不離 > inseparable\-\(as\-form\-and\-shadow\);
+商業版本 > commercial\-version\-\(of\-software\);
+百讀不厭 > be\-worth\-reading\-a\-hundred\-times;
+分波多工 > wavelength\-division\-multiplexing;
+必由之路 > the\-road\-one\-must\-follow\-or\-take;
+亨特泰羅 > hunter\-tylo\-\(hollywood\-actress\);
+閉門造車 > make\-a\-cart\-behind\-closed\-doors;
+悲喜交集 > mixed\-feelings\-of\-grief\-and\-joy;
+不修邊幅 > not\-care\-about\-one''s\-appearance;
+大快人心 > to\-the\-satisfaction\-of\-everyone;
+鞭長莫及 > beyond\-the\-reach\-of\-one''s\-power;
+不學無術 > have\-neither\-learning\-nor\-skill;
+不寒而慄 > shiver\-all\-over\-though\-not\-cold;
+層出不窮 > to\-come\-out\-one\-after\-the\-other;
+安民告示 > a\-notice\-to\-reassure\-the\-public;
+細菌武器 > biological\-weapon\-\(using\-germs\);
+別開生面 > start\-something\-new\-or\-original;
+如飢似渴 > thirsting\-or\-hungering\-for\-sth\.;
+開國元勛 > founding\-fathers\-\(of\-a\-country\);
+直接數據 > data\-direct\-\(in\-lan\-emulation\);
+傳統醫藥 > \(chinese\)\-traditional\-medicine;
+有史以來 > since\-the\-beginning\-of\-history;
+包治百病 > guarantee\-to\-cure\-all\-diseases;
+按需分配 > distribution\-according\-to\-need;
+世貿組織 > wto\-\(world\-trade\-organization\);
+沒有什麼 > there''s\-nothing\-\(\.\.\.\-about\-it\);
+按勞分配 > distribution\-according\-to\-work;
+阿拉木圖 > almaty\-\(capital\-of\-kazakhstan\);
+七層架構 > seven\-layer\-architecture\-\(osi\);
+應有盡有 > everything\-\(one\-could\-imagine\);
+青山綠水 > verdant\-hills\-and\-green\-waters;
+虹橋機場 > hongqiao\-airport\-\(in\-shanghai\);
+統一招生 > national\-unified\-entrance\-exam;
+東部時間 > \(u\.s\.\)\-eastern\-\(standard\)\-time;
+時大時小 > sometimes\-big\,\-sometimes\-small;
+不辭而別 > leave\-without\-saying\-good\-bye;
+百聽不厭 > worth\-hearing\-a\-hundred\-times;
+低階語言 > low\-level\-\(computer\)\-language;
+不足為訓 > not\-to\-be\-taken\-as\-an\-example;
+大吹大擂 > make\-an\-exhibition\-of\-oneself;
+安之若素 > bear\-hardship\-with\-equanimity;
+西哈努克 > \(king\)\-sihanouk\-\(of\-cambodia\);
+殺人案件 > \(case\-of\,\-incident\-of\)\-murder;
+背道而馳 > run\-in\-the\-opposite\-direction;
+低級語言 > low\-level\-\(computer\)\-language;
+不名一文 > without\-a\-penny\-to\-one''s\-name;
+不無小補 > not\-be\-without\-some\-advantage;
+加強管制 > to\-tighten\-control\-\(over\-sth\);
+人民日報 > renmin\-ribao\-\(people''s\-daily\);
+開始以前 > before\-the\-beginning\-\(of\-sth\);
+不識大體 > fail\-to\-see\-the\-larger\-issues;
+不打自招 > confess\-without\-being\-pressed;
+一舉兩得 > kill\-two\-birds\-with\-one\-stone;
+不速之客 > uninvited\-or\-unexpected\-guest;
+不得要領 > fail\-to\-grasp\-the\-main\-points;
+進行調查 > to\-carry\-out\-an\-investigation;
+大街小巷 > large\-streets\-and\-small\-lanes;
+各大軍區 > \"the\-greater\-military\-areas\";
+呼籲美國 > to\-call\-on\-the\-united\-states;
+豐衣足食 > have\-ample\-food\-and\-clothing;
+不知好歹 > not\-know\-what''s\-good\-for\-one;
+網管接口 > network\-management\-interface;
+根據上表 > according\-to\-the\-above\-table;
+國防利益 > \(national\)\-defence\-interests;
+本末倒置 > take\-the\-branch\-for\-the\-root;
+抱頭痛哭 > cry\-on\-each\-other''s\-shoulder;
+不一而足 > by\-no\-means\-an\-isolated\-case;
+白紙黑字 > \(written\)\-in\-black\-and\-white;
+不碎玻璃 > shatterproof\-or\-safety\-glass;
+莫衷一是 > cannot\-decide\-which\-is\-right;
+八國聯軍 > the\-eight\-power\-allied\-force;
+多年以來 > for\-many\-years\-\(in\-the\-past\);
+知識產權 > intellectual\-property\-rights;
+誓死不降 > to\-vow\-to\-fight\-to\-the\-death;
+沒有必要 > there\-is\-no\-need\-to\-\(do\-sth\);
+中文廣播 > chinese\-\(language\)\-broadcast;
+移殖手術 > \(organ\)\-transplant\-operation;
+浪子回頭 > the\-return\-of\-a\-prodigal\-son;
+不急之務 > a\-matter\-of\-no\-great\-urgency;
+電磁干擾 > electromagnetic\-interference;
+不易之論 > perfectly\-sound\-proposition;
+各種各樣 > various\-sorts\-and\-varieties;
+不違農時 > not\-miss\-the\-farming\-season;
+亂作決定 > to\-make\-arbitrary\-decisions;
+大器晚成 > grand\-talents\-mature\-slowly;
+按步就班 > follow\-the\-prescribed\-order;
+外交部長 > minister\-of\-foreign\-affairs;
+舉世矚目 > attract\-worldwide\-attention;
+獨斷專行 > act\-in\-an\-arbitrary\-fashion;
+私人鑰匙 > private\-key\-\(in\-encryption\);
+卻之不恭 > to\-refuse\-would\-be\-impolite;
+馬太福音 > gospel\-according\-to\-matthew;
+電話會議 > \(telephone\)\-conference\-call;
+不落窠臼 > not\-follow\-the\-beaten\-track;
+按照計劃 > according\-to\-\(the\)\-plan\-\.\.\.;
+事情要做 > thing\-that\-needs\-to\-be\-done;
+一路平安 > to\-have\-a\-pleasant\-journey;
+紐約時報 > new\-york\-times\-\(newspaper\);
+常問問題 > frequently\-asked\-questions;
+百孔千瘡 > riddled\-with\-gaping\-wounds;
+兵連禍結 > ravaged\-by\-successive\-wars;
+長期以來 > ever\-since\-a\-long\-time\-ago;
+安家落戶 > make\-one''s\-home\-in\-a\-place;
+入木三分 > written\-in\-a\-forceful\-hand;
+分時多工 > time\-division\-multiplexing;
+根深蒂固 > deep\-rooted\-\(problem\,\-etc\);
+星島日報 > sing\-tao\-daily\-\(newspaper\);
+電信服務 > telecommunications\-service;
+公開鑰匙 > public\-key\-\(in\-encryption\);
+電信網路 > telecommunications\-network;
+感染人數 > number\-of\-infected\-persons;
+百步穿楊 > shoot\-with\-great\-precision;
+出現意外 > \(to\-appear\)\-unexpected\(ly\);
+一觸即發 > could\-happen\-at\-any\-moment;
+纖芯直徑 > core\-diameter\-\(of\-a\-fiber\);
+進行交易 > to\-carry\-out\-a\-transaction;
+別出心裁 > adopt\-an\-original\-approach;
+百發百中 > every\-shot\-hits\-the\-target;
+不亢不卑 > neither\-haughty\-nor\-humble;
+白壁無瑕 > impeccable\-moral\-integrity;
+敗子回頭 > return\-of\-the\-prodigal\-son;
+訪問美國 > to\-visit\-the\-united\-states;
+不失時機 > seize\-the\-opportune\-moment;
+導彈潛艇 > \(guided\)\-missile\-submarine;
+安如泰山 > as\-secure\-as\-mount\-taishan;
+不義之財 > ill\-gotten\-wealth\-or\-gains;
+重要的是 > it\-is\-important\-\(that\)\-\.\.\.;
+通信技術 > communications\-technology;
+外匯儲備 > foreign\-exchange\-reserves;
+勞動教養 > reeducation\-through\-labor;
+不辭辛苦 > make\-nothing\-of\-hardships;
+程式理員 > program\-manager\-\(windows\);
+民主黨人 > a\-democratic\-party\-member;
+三十年來 > for\-the\-past\-thirty\-years;
+技術發展 > technological\-development;
+高等學校 > colleges\-and\-universities;
+康涅狄格 > connecticut\-\(state\-in\-us\);
+單連接站 > single\-attachment\-station;
+符合標準 > to\-comply\-with\-a\-standard;
+示威遊行 > a\-\(protest\)\-demonstration;
+大敵當前 > confront\-a\-powerful\-enemy;
+研製過程 > manufacturing\-environment;
+反唇相譏 > answer\-back\-sarcastically;
+核轟炸機 > nuclear\-bomber\-\(aircraft\);
+不得人心 > not\-enjoy\-popular\-support;
+直言不諱 > speak\-frankly\-and\-bluntly;
+景山公園 > name\-of\-a\-park\-in\-beijing;
+面臨困難 > to\-be\-faced\-with\-problems;
+不務正業 > not\-engage\-in\-honest\-work;
+愛理不理 > look\-cold\-and\-indifferent;
+改善通訊 > to\-improve\-communications;
+總參謀長 > \(military\)\-chief\-of\-staff;
+背信棄義 > break\-faith\-with\-somebody;
+跨國公司 > transnational\-corporation;
+共和黨人 > a\-republican\-party\-member;
+馬可福音 > gospel\-according\-to\-mark;
+每年一度 > once\-a\-year\-\(every\-year\);
+域名註冊 > domain\-name\-registration;
+兵貴神速 > speed\-is\-precious\-in\-war;
+多邊合作 > multilateral\-cooperation;
+投放市場 > to\-put\-sth\-on\-the\-market;
+荒無人煙 > desolate\-and\-uninhabited;
+約翰福音 > gospel\-according\-to\-john;
+印歐語言 > indo\-european\-\(language\);
+習以為常 > be\-accustomed\-or\-used\-to;
+兵荒馬亂 > turmoil\-and\-chaos\-of\-war;
+不動聲色 > maintain\-one''s\-composure;
+浮點運算 > floating\-point\-operation;
+內政部長 > minister\-of\-the\-interior;
+鼻針療法 > nose\-acupuncture\-therapy;
+虛擬環境 > theorhetical\-environment;
+密切注意 > close\-attention\-\(to\-sth\);
+不拘一格 > not\-stick\-to\-one\-pattern;
+完全懂得 > to\-understand\-completely;
+不平則鳴 > where\-there\-is\-injustice;
+核不擴散 > nuclear\-nonproliferation;
+擺脫危機 > to\-break\-out\-of\-a\-crisis;
+富布賴特 > fullbright\-\(scholarship\);
+撥亂反正 > bring\-order\-out\-of\-chaos;
+安第斯山 > the\-andes\-mountain\-range;
+百煉成鋼 > be\-tempered\-into\-a\-steel;
+國務次卿 > under\-secretary\-of\-state;
+半信半疑 > half\-believe\,\-half\-doubt;
+拔火罐兒 > detachable\-stove\-chimney;
+古希臘語 > ancient\-greek\-\(language\);
+千絲萬縷 > linked\-in\-countless\-ways;
+破土典禮 > ground\-breaking\-ceremony;
+教學機構 > educational\-organization;
+不遺余力 > spare\-no\-pains\-or\-effort;
+表示敬意 > respectful\,\-show\-respect;
+路加福音 > gospel\-according\-to\-luke;
+通訊行業 > communications\-industry;
+本位主義 > selfish\-departmentalism;
+為所欲為 > do\-whatever\-one\-pleases;
+人民法院 > people''s\-court\-\(of\-law\);
+商業機構 > commercial\-organization;
+不翼而飛 > disappear\-without\-trace;
+畢恭畢敬 > reverent\-and\-respectful;
+科研人員 > \(scientific\)\-researcher;
+透露消息 > to\-disclose\-information;
+中國時報 > china\-times\-\(newspaper\);
+威廉斯堡 > williamsburg\-\(virginia\);
+便宜行事 > act\-at\-one''s\-discretion;
+商業管理 > business\-administration;
+基礎速率 > basic\-rate\-\(as\-in\-isdn\);
+手寫識別 > handwriting\-recognition;
+手寫辯識 > handwriting\-recognition;
+比比皆是 > can\-be\-found\-everywhere;
+棄舊換新 > to\-turn\-over\-a\-new\-leaf;
+不情之請 > my\-presumptuous\-request;
+雙連接站 > dual\-attachment\-station;
+補助組織 > auxiliary\-organizations;
+回顧歷史 > to\-look\-back\-at\-history;
+通訊協定 > communications\-protocol;
+步履維艱 > have\-difficulty\-walking;
+共同篩選 > collaborative\-filtering;
+大驚小怪 > much\-fuss\-about\-nothing;
+通信協定 > communications\-protocol;
+公安官員 > public\-safety\-officials;
+傳輸技術 > transmission\-technology;
+冰天雪地 > a\-world\-of\-ice\-and\-snow;
+政府機構 > government\-organization;
+不可理喻 > be\-impervious\-to\-reason;
+職業中學 > vocational\-high\-school;
+自食其果 > reap\-what\-one\-has\-sown;
+不露聲色 > not\-show\-one''s\-feeling;
+大煞風景 > dampening\-one''s\-spirit;
+羅曼語族 > romance\-language\-group;
+孰能生巧 > practice\-makes\-perfect;
+嗷嗷待哺 > cry\-piteously\-for\-food;
+不痛不痒 > scratching\-the\-surface;
+聯網環境 > networking\-environment;
+解釋執行 > interpreted\-\(computer\);
+不近人情 > not\-amenable\-to\-reason;
+政治機構 > political\-organization;
+另眼相看 > to\-view\-in\-a\-new\-light;
+信息技術 > information\-technology;
+安全考慮 > security\-consideration;
+信息管理 > information\-management;
+蹦蹦跳跳 > bouncing\-and\-vivacious;
+通信密度 > communications\-density;
+沒有差別 > there\-is\-no\-difference;
+不言而喻 > it\-goes\-without\-saying;
+步調一致 > to\-be\-united\-in\-action;
+通訊通道 > communications\-channel;
+採訪記者 > investigative\-reporter;
+比較而言 > comparatively\-speaking;
+離開故鄉 > to\-leave\-one''\-homeland;
+通信網絡 > communications\-network;
+數字通信 > digital\-communications;
+共產黨員 > communist\-party\-member;
+網路架構 > network\-infrastructure;
+技術情報 > information\-technology;
+美國之音 > voice\-of\-america\-radio;
+標準組織 > standards\-organization;
+獨攬市場 > to\-monopolize\-a\-market;
+彬彬有禮 > refined\-and\-courteous;
+完全兼容 > completely\-compatible;
+觀測衛星 > observation\-satellite;
+三萬七千 > thirty\-seven\-thousand;
+大赦國際 > amnesty\-international;
+情報官員 > intelligence\-official;
+電磁噪聲 > electromagnetic\-noise;
+長途網路 > long\-distance\-network;
+比色分析 > colorimetric\-analysis;
+庫爾德人 > kurdish\-person\|people;
+微軟公司 > microsoft\-corporation;
+不識抬舉 > fail\-to\-appreciate\-sb;
+席卷亞洲 > to\-sweep\-through\-asia;
+作業環境 > operating\-environment;
+智慧產權 > intellectual\-property;
+高級官員 > high\-ranking\-official;
+半夜三更 > in\-the\-depth\-of\-night;
+取消禁令 > to\-life\-a\-prohibition;
+實際應用 > practical\-application;
+生產能力 > manufacturing\-ability;
+總統選舉 > presidential\-election;
+不擇手段 > by\-fair\-means\-or\-foul;
+國際標準 > interntional\-standard;
+金陵大學 > university\-of\-nanking;
+異質網路 > heterogeneous\-network;
+白手起家 > build\-up\-from\-nothing;
+葡萄牙語 > portuguese\-\(language\);
+一臂之力 > \(lend\)\-a\-helping\-hand;
+不倫不類 > neither\-fish\-nor\-fowl;
+基本原理 > fundamental\-principle;
+撫養成人 > to\-bring\-up\-\(a\-child\);
+通信服務 > communication\-service;
+國營企業 > nationalized\-industry;
+二十八號 > 28th\-day\-of\-the\-month;
+本固枝榮 > when\-the\-root\-is\-firm;
+傳輸設備 > transmission\-facility;
+不是味兒 > not\-the\-right\-flavour;
+操作環境 > operating\-environment;
+隨機時間 > random\-period\-of\-time;
+傳輸距離 > transmission\-distance;
+另起爐灶 > to\-start\-from\-scratch;
+首腦會議 > leadership\-conference;
+如出一轍 > be\-precisely\-the\-same;
+矮杆品種 > short\-stalked\-variety;
+運算環境 > operating\-environment;
+絞盡腦汁 > to\-wrack\-one''s\-brains;
+光磁碟機 > magneto\-optical\-drive;
+國有企業 > nationalized\-business;
+維吾爾人 > uighur\-person\|people;
+開除學籍 > to\-expel\-from\-school;
+首席代表 > chief\-representative;
+物理結構 > physical\-composition;
+國會議長 > speaker\-of\-the\-house;
+應用平台 > application\-platform;
+匈牙利語 > hungarian\-\(language\);
+不信任案 > no\-confidence\-motion;
+改善關係 > to\-improve\-relations;
+停火協議 > cease\-fire\-agreement;
+二十二號 > 22\-nd\-day\-of\-a\-month;
+確有其事 > \(confirm\-to\-be\)\-true;
+大型企業 > large\-scale\-industry;
+使徒行傳 > acts\-of\-the\-apostles;
+必不可少 > absolutely\-necessary;
+不在話下 > be\-nothing\-difficult;
+應用軟件 > application\-software;
+交換技術 > switching\-technology;
+程式語言 > programming\-language;
+發表聲明 > to\-issue\-a\-statement;
+電腦語言 > programming\-language;
+電子工業 > electronics\-industry;
+召開會議 > to\-call\-a\-conference;
+商業應用 > business\-application;
+每況愈下 > steadily\-deteriorate;
+軍事機構 > military\-institution;
+判處死刑 > to\-sentance\-to\-death;
+貨幣貶值 > currency\-devaluation;
+按照法律 > according\-to\-the\-law;
+北回歸線 > the\-tropic\-of\-cancer;
+電子元件 > electronic\-component;
+經濟衰退 > \(economic\)\-recession;
+光二極管 > light\-emitting\-diode;
+不穩平衡 > unstable\-equilibrium;
+信息資源 > information\-resource;
+六十五歲 > sixty\-five\-years\-old;
+智能大樓 > intelligent\-building;
+少數民族 > minority\-nationality;
+全面禁止 > complete\-prohibition;
+騾馬大車 > mule\-and\-horse\-carts;
+經濟發展 > economic\-development;
+通訊系統 > communication\-system;
+不二法門 > the\-one\-and\-only\-way;
+無價珍珠 > pearl\-of\-great\-price;
+未成年者 > minor\-\(not\-an\-adult\);
+伊斯蘭堡 > islamabad\-\(pakistan\);
+二十四號 > 24\-th\-day\-of\-a\-month;
+大失所望 > greatly\-dissapointed;
+企業集團 > industry\-association;
+管理接口 > management\-interface;
+應用軟體 > application\-software;
+生產設備 > production\-equipment;
+義務教育 > cumpulsory\-education;
+傳輸控制 > transmission\-control;
+不懷好意 > harbour\-evil\-designs;
+診斷功能 > diagnostic\-function;
+傳輸媒體 > transmission\-medium;
+起死回生 > arise\-from\-the\-dead;
+高階語言 > high\-level\-language;
+美國人民 > the\-american\-people;
+面嚮連接 > connection\-oriented;
+專業人才 > expert\-\(in\-a\-field\);
+無縫連接 > seamless\-connection;
+傳輸媒質 > transmission\-medium;
+層見迭出 > to\-occur\-frequently;
+美國以外 > outside\-of\-the\-u\.s\.;
+此時此刻 > at\-this\-very\-moment;
+多黨選舉 > multiparty\-election;
+光纖衰減 > optical\-attenuation;
+不勞而獲 > reap\-without\-sowing;
+技術標準 > technology\-standard;
+開發過程 > development\-process;
+通信負載 > communications\-load;
+常規武器 > conventional\-weapon;
+統計結果 > statistical\-results;
+司空見慣 > a\-common\-occurrence;
+二十七號 > 27th\-day\-of\-a\-month;
+視而不見 > turn\-a\-blind\-eye\-to;
+電子文件 > electronic\-document;
+結構助詞 > structural\-particle;
+字斟句酌 > weighing\-every\-word;
+政治關係 > political\-relations;
+相互兼容 > mutually\-compatible;
+尋事生非 > to\-look\-for\-trouble;
+小寫字母 > lowercase\-\(letters\);
+管理功能 > management\-function;
+高級語言 > high\-level\-language;
+分佈控制 > distributed\-control;
+網絡應用 > network\-application;
+機械翻譯 > machine\-translation;
+軟件技術 > software\-technology;
+奶油菜花 > creamed\-cauliflower;
+光發送器 > optical\-transmitter;
+網絡環境 > network\-environment;
+愛人如己 > love\-others\-as\-self;
+阿拉巴馬 > alabama\-\(u\.s\.state\);
+終點地址 > destination\-address;
+網路應用 > network\-application;
+目標地址 > destination\-address;
+二十六號 > 26th\-day\-of\-a\-month;
+中國當局 > chinese\-authorities;
+合情合理 > reasonable\-and\-fair;
+百依百順 > docile\-and\-obedient;
+半自耕農 > semi\-tenant\-peasant;
+網路環境 > network\-environment;
+反彈導彈 > antimissile\-missile;
+生產設施 > production\-facility;
+葡萄牙人 > portuguese\-\(person\);
+不絕如縷 > hanging\-by\-a\-thread;
+技術知識 > technical\-knowledge;
+美國軍人 > american\-serviceman;
+國際貿易 > international\-trade;
+人造語言 > artificial\-language;
+不敗之地 > invincible\-position;
+自身利益 > one''s\-own\-interests;
+競爭產品 > competitive\-product;
+非核國家 > non\-nuclear\-country;
+氣候狀況 > climatic\-conditions;
+環形結構 > ring\-configuration;
+西班牙語 > spanish\-\(language\);
+一般來說 > generally\-speaking;
+首腦會晤 > leadership\-meeting;
+重要問題 > an\-important\-issue;
+領先地位 > lead\(ing\)\-position;
+信息系統 > information\-system;
+種族清洗 > \"ethnic\-cleansing\";
+乒乓球檯 > table\-tennis\-table;
+非常嚴厲 > to\-punish\-severely;
+內部結構 > internal\-strucutre;
+數據通信 > data\-communication;
+非常感謝 > extremely\-grateful;
+克隆技術 > cloning\-technology;
+電子網絡 > electronic\-network;
+白麵書生 > pale\-faced\-scholar;
+財務軟件 > financial\-software;
+西班牙文 > spanish\-\(language\);
+古典語言 > classical\-language;
+兩個中國 > two\-china\-\(policy\);
+外來投資 > foreign\-investment;
+土耳其語 > turkish\-\(language\);
+不正之風 > unhealthy\-tendency;
+集成電路 > integrated\-circuit;
+閉關政策 > closed\-door\-policy;
+網絡技術 > network\-technology;
+中國政府 > chinese\-government;
+令牌環網 > token\-ring\-network;
+大明鼎鼎 > a\-grand\-reputation;
+貿易組織 > trade\-organization;
+遍地開花 > blossom\-everywhere;
+網絡管理 > network\-management;
+高速網絡 > high\-speed\-network;
+書面許可 > written\-permission;
+聯合公報 > joint\-announcement;
+研究機構 > research\-institute;
+佛蘭芒語 > flemish\-\(language\);
+國會議員 > member\-of\-congress;
+最近幾年 > the\-last\-few\-years;
+精簡開支 > to\-reduce\-spending;
+不置可否 > decline\-to\-comment;
+三角腹帶 > athletic\-supporter;
+衛生設備 > sanitary\-equipment;
+造成問題 > to\-create\-an\-issue;
+總的來說 > generally\-speaking;
+色情小說 > pornographic\-novel;
+貴妃醉酒 > the\-drunken\-beauty;
+電子信箱 > electronic\-mailbox;
+新加坡人 > singaporean\-person;
+驚濤駭浪 > perilous\-situation;
+大力發展 > vigorous\-expansion;
+服務規章 > service\-regulation;
+竭盡全力 > to\-spare\-no\-effort;
+不折不扣 > a\-hundred\-per\-cent;
+科研樣機 > research\-prototype;
+區域網路 > local\-area\-network;
+發送功率 > transmission\-power;
+政府警告 > government\-warning;
+核能技術 > nuclear\-technology;
+意大利語 > italian\-\(language\);
+北京大學 > beijing\-university;
+區域網絡 > local\-area\-network;
+網絡科技 > network\-technology;
+聯邦政府 > federal\-government;
+電腦業者 > software\-developer;
+進行編程 > executable\-program;
+虛擬連接 > virtual\-connection;
+客戶應用 > client\-application;
+不隨意肌 > involuntary\-muscle;
+採取措施 > to\-adopt\-a\-measure;
+哈佛大學 > harvard\-university;
+網管系統 > network\-management;
+暗線光譜 > dark\-line\-spectrum;
+電視節目 > television\-program;
+中國人民 > the\-chinese\-people;
+簡短介紹 > brief\-introduction;
+海灣戰爭 > \(persian\)\-gulf\-war;
+地球大氣 > earth''s\-atmosphere;
+簡要介紹 > brief\-introduction;
+服務質量 > quality\-of\-service;
+不攻自破 > collapse\-of\-itself;
+文化傳統 > cultural\-tradition;
+網絡遷移 > network\-migration;
+電腦軟件 > computer\-software;
+資料傳輸 > data\-transmission;
+國防部長 > defence\-secretary;
+巨大壓力 > enormous\-pressure;
+數據傳輸 > data\-transmission;
+政治氣候 > political\-climate;
+廣域網路 > wide\-area\-network;
+教友大會 > church\-conference;
+軍事力量 > military\-strength;
+電話服務 > telephone\-service;
+阿拉伯語 > arabic\-\(language\);
+支柱產業 > mainstay\-industry;
+多站地址 > multicast\-address;
+經濟安全 > economic\-security;
+外交風波 > diplomatic\-crisis;
+電話網路 > telephone\-network;
+反過來說 > on\-the\-other\-hand;
+歐洲語言 > european\-language;
+網絡設備 > network\-equipment;
+日益增加 > to\-increase\-daily;
+經濟力量 > economic\-strength;
+變本加厲 > become\-aggravated;
+光纖接口 > optical\-interface;
+商業行為 > business\-activity;
+軍費開支 > military\-spending;
+軟件平臺 > software\-platform;
+按圖索驥 > try\-to\-locate\-sth;
+希伯來語 > hebrew\-\(language\);
+開發週期 > development\-cycle;
+阿拉伯文 > arabic\-\(language\);
+戰略夥伴 > strategic\-partner;
+靜脈吸毒 > intraveneous\-drug;
+無期徒刑 > life\-imprisonment;
+百分之百 > a\-hundred\-percent;
+萊溫斯基 > \(monica\)\-lewinsky;
+傳輸服務 > transport\-service;
+綜合布線 > integrated\-wiring;
+傳輸通道 > transport\-channel;
+政府部門 > government\-branch;
+新聞週刊 > newsweek\-magazine;
+直接競爭 > direct\-competitor;
+醫療經驗 > medical\-expertise;
+廣播地址 > broadcast\-address;
+生物武器 > biological\-weapon;
+暗無天日 > complete\-darkness;
+高級研究 > advanced\-research;
+自主系統 > autonomous\-system;
+白金漢宮 > buckingham\-palace;
+運行狀況 > operational\-state;
+困難在於 > the\-problem\-is\.\.\.;
+日耳曼語 > germanic\-language;
+傳輸協定 > transfer\-protocol;
+大刀闊斧 > bold\-and\-decisive;
+特別待遇 > special\-treatment;
+專用網路 > dedicated\-network;
+敘利亞文 > syriac\-\(language\);
+傳輸速率 > transmission\-rate;
+不歡而散 > part\-on\-bad\-terms;
+中華民國 > republic\-of\-china;
+並駕齊驅 > run\-neck\-and\-neck;
+難以應付 > hard\-to\-deal\-with;
+硬件平臺 > hardware\-platform;
+官方語言 > official\-language;
+北京近郊 > suburb\-of\-beijing;
+一般原則 > general\-principle;
+射頻干擾 > radio\-interferece;
+四面八方 > in\-all\-directions;
+國家安全 > national\-security;
+海洋溫度 > ocean\-temperature;
+網際協定 > internet\-protocol;
+外交關係 > foreign\-relations;
+巴克夏豬 > berkshire\-\(swine\);
+不治之症 > incurable\-disease;
+業界標準 > industry\-standard;
+陸基導彈 > land\-based\-missle;
+西番雅書 > book\-of\-zephaniah;
+專家評論 > expert\-commentary;
+嚇得發抖 > tremble\-with\-fear;
+四門轎車 > sedan\-\(motor\-car\);
+愛不釋手 > fondle\-admiringly;
+從頭到腳 > from\-head\-to\-foot;
+軍事實力 > military\-strength;
+廣播網路 > broadcast\-network;
+笨口拙舌 > awkward\-in\-speech;
+巴斯克語 > basque\-\(language\);
+華北平原 > north\-china\-plain;
+救恩計劃 > plan\-of\-salvation;
+航空母艦 > aircraft\-carrier;
+中國大陸 > chinese\-mainland;
+影像會議 > video\-conference;
+悲歡離合 > joys\-and\-sorrows;
+百里挑一 > one\-in\-a\-hundred;
+語法術語 > grammatical\-term;
+更高性能 > high\-performance;
+軍事科學 > military\-science;
+器官移殖 > organ\-transplant;
+影像處理 > image\-processing;
+人事部門 > personnel\-office;
+潛在威脅 > potential\-threat;
+統計數據 > statistical\-data;
+特定含義 > specific\-meaning;
+金融系統 > financial\-system;
+導致死亡 > to\-lead\-to\-death;
+板上釘釘 > that\-clinches\-it;
+電腦企業 > computer\-company;
+唉聲嘆氣 > heave\-deep\-sighs;
+不好意思 > feel\-embarrassed;
+正常工作 > normal\-operation;
+傳真發送 > fax\-transmission;
+操作系統 > operating\-system;
+傳輸媒界 > transport\-method;
+移動電話 > mobile\-telephone;
+網絡直徑 > network\-diameter;
+成群結隊 > in\-large\-numbers;
+無所不賣 > to\-sell\-anything;
+通用電器 > general\-electric;
+朝鮮半島 > korean\-peninsula;
+有關人士 > persons\-involved;
+耶利米書 > book\-of\-jeremiah;
+金融市場 > financial\-market;
+兩岸對話 > bilaterial\-talks;
+不經之談 > absurd\-statement;
+路由協定 > routing\-protocol;
+網路平台 > network\-platform;
+光檢測器 > optical\-detector;
+電腦網路 > computer\-network;
+波爾多液 > bordeaux\-mixture;
+發達國家 > developed\-nation;
+已經進行 > already\-underway;
+傳送服務 > delivery\-service;
+讀者來信 > reader''s\-letters;
+哈巴谷書 > book\-of\-habakkuk;
+白壁微瑕 > a\-slight\-blemish;
+十幾個月 > ten\-months\-or\-so;
+不加思索 > without\-thinking;
+單模光纖 > singlemode\-fiber;
+最大能力 > maximum\-capacity;
+有線電視 > cable\-television;
+不變資本 > constant\-capital;
+電話信號 > telephone\-signal;
+威爾士語 > welsh\-\(language\);
+男子籃球 > men''s\-basketball;
+聯邦大樓 > federal\-building;
+普通問題 > common\-questions;
+輸送媒介 > transport\-medium;
+防衛武器 > defensive\-weapon;
+作業系統 > operating\-system;
+體育之窗 > window\-on\-sports;
+書寫語言 > written\-language;
+共享帶寬 > shared\-bandwidth;
+文化障礙 > cultural\-barrier;
+直接影響 > direct\-influence;
+與此同時 > at\-the\-same\-time;
+主要來源 > principle\-source;
+人民公社 > people''s\-commune;
+下面請看 > please\-see\-below;
+金融風波 > financial\-crisis;
+網絡協議 > network\-protocol;
+白衣戰士 > warrior\-in\-white;
+安如磐石 > as\-solid\-as\-rock;
+故障排除 > fault\-resolution;
+金融改革 > financial\-reform;
+行動電話 > mobile\-telephone;
+雌性接口 > female\-connector;
+心臟移殖 > heart\-transplant;
+遙控操作 > remote\-operation;
+簡單的說 > to\-put\-it\-simply;
+光接收器 > optical\-receiver;
+機械語言 > machine\-language;
+胡志明市 > ho\-chi\-minh\-city;
+不知所云 > not\-know\-what\-sb;
+電腦公司 > computer\-company;
+聯席會議 > joint\-conference;
+交換網路 > switched\-network;
+骨幹網路 > backbone\-network;
+軟件企業 > software\-company;
+力量均衡 > balance\-of\-power;
+施洗約翰 > john\-the\-baptist;
+尼希米記 > book\-of\-nehemiah;
+報紙報導 > newspaper\-report;
+金融危機 > financial\-crisis;
+離開北京 > to\-leave\-beijing;
+幾乎完全 > almost\-entirely;
+信息時代 > information\-age;
+產品經理 > product\-manager;
+軍事威脅 > military\-threat;
+網路服務 > network\-service;
+研究中心 > research\-center;
+崇拜儀式 > worship\-service;
+方興未艾 > to\-be\-unfolding;
+雙邊貿易 > bilateral\-trade;
+軍事部門 > military\-branch;
+除此之外 > apart\-from\-this;
+太陽公司 > sun\-corporation;
+外國資本 > foreign\-capital;
+豐富多彩 > richly\-colorful;
+不白之冤 > unrighted\-wrong;
+戒備森嚴 > heavily\-guarded;
+半途而廢 > give\-up\-halfway;
+批量生產 > to\-mass\-produce;
+操作速率 > operating\-speed;
+聯合發表 > joint\-statement;
+不完全葉 > incomplete\-leaf;
+核反應堆 > nuclear\-reactor;
+經濟改革 > economic\-reform;
+半壁江山 > half\-of\-country;
+古典音樂 > classical\-music;
+不可多得 > hard\-to\-come\-by;
+重新開始 > resume\,\-restart;
+電子郵件 > electronic\-mail;
+經濟前途 > economic\-future;
+工讀學校 > the\-reformatory;
+嚴重關切 > serious\-concern;
+經濟危機 > economic\-crisis;
+動態助詞 > aspect\-particle;
+暴跳如雷 > stamp\-with\-fury;
+以西結書 > book\-of\-ezekiel;
+化學武器 > chemical\-weapon;
+登記用戶 > registered\-user;
+嚴重問題 > serious\-problem;
+當務之急 > urgent\-priority;
+軟件系統 > software\-system;
+購物中心 > shopping\-center;
+壁壘森嚴 > closely\-guarded;
+瑪拉基書 > book\-of\-malachi;
+貿易夥伴 > trading\-partner;
+月份會議 > monthly\-meeting;
+研究報告 > research\-report;
+先進武器 > advanced\-weapon;
+大發雷霆 > extremely\-angry;
+美國政府 > u\.s\.\-government;
+塞爾特語 > celtic\-language;
+措辭強硬 > strongly\-worded;
+公司會議 > company\-meeting;
+改變形像 > transfiguration;
+百兒八十 > about\-a\-hundred;
+多模光纖 > multimode\-fiber;
+軟件市場 > software\-market;
+校園骨幹 > campus\-backbone;
+沒有聯繫 > to\-be\-unrelated;
+世界最大 > world''s\-largest;
+尖銳批評 > sharp\-criticism;
+電腦系統 > computer\-system;
+貨幣危機 > monetary\-crisis;
+暗送秋波 > make\-eyes\-at\-sb;
+數位網路 > digital\-network;
+全力以赴 > do\-at\-all\-costs;
+虛擬網絡 > virtual\-network;
+光明日報 > guangming\-daily;
+歷史久遠 > ancient\-history;
+斯拉夫語 > slavic\-language;
+外國公司 > foreign\-company;
+商業中心 > business\-center;
+不相上下 > equally\-matched;
+機密文件 > secret\-document;
+具體計劃 > a\-concrete\-plan;
+文書處理 > word\-processing;
+預防措施 > protective\-step;
+公然表示 > to\-state\-openly;
+負債纍纍 > heavily\-in\-debt;
+經濟體制 > economic\-system;
+不過爾爾 > merely\-mediocre;
+流感病毒 > influenza\-virus;
+衛生官員 > health\-official;
+具體問題 > concrete\-issue;
+國防預算 > defence\-budget;
+裁減軍備 > arms\-reduction;
+出口商品 > export\-product;
+改革進程 > reform\-process;
+薄胎瓷器 > eggshell\-china;
+擺蕩吊環 > swinging\-rings;
+全球氣候 > global\-climate;
+對外政策 > foreign\-policy;
+進行通信 > to\-communicate;
+不咎既往 > not\-censure\-sb;
+校園網絡 > campus\-network;
+數位信號 > digital\-signal;
+生長激素 > growth\-hormone;
+指揮中心 > command\-center;
+電話線路 > telephone\-line;
+語氣助詞 > modal\-particle;
+約書亞記 > book\-of\-joshua;
+經濟有效 > cost\-effective;
+堅決否認 > to\-firmly\-deny;
+書寫符號 > writing\-symbol;
+不知死活 > act\-recklessly;
+波羅的海 > the\-baltic\-sea;
+桌面系統 > desktop\-system;
+東南亞國 > southeast\-asia;
+小型企業 > small\-business;
+資料介面 > data\-interface;
+不怎麼樣 > not\-up\-to\-much;
+非常重要 > very\-important;
+醫學專家 > medical\-expert;
+先進水平 > advanced\-level;
+數據接口 > data\-interface;
+連鎖反應 > chain\-reaction;
+特別感謝 > special\-thanks;
+人壽保險 > life\-insurance;
+數據介面 > data\-interface;
+但以理書 > book\-of\-daniel;
+迫不得已 > have\-no\-choice;
+評價分類 > rank\,\-classify;
+從事研究 > to\-do\-research;
+以賽亞書 > book\-of\-isaiah;
+半數以上 > more\-than\-half;
+檔案屬性 > file\-attribute;
+從來沒有 > have\|has\-never;
+以斯帖記 > book\-of\-esther;
+最佳利益 > best\-interests;
+惡性循環 > vicious\-circle;
+不省人事 > be\-unconscious;
+百無聊賴 > bored\-to\-death;
+醫學中心 > medical\-center;
+白色人種 > the\-white\-race;
+綜合報導 > summary\-report;
+大同小異 > almost\-similar;
+卑躬屈節 > bow\-and\-scrape;
+恭賀新禧 > happy\-new\-year;
+前生召喚 > foreordination;
+網際電話 > internet\-phone;
+蘋果電腦 > apple\-computer;
+不脛而走 > get\-round\-fast;
+三輪車伕 > pedicab\-driver;
+飽經風霜 > weather\-beaten;
+全心全意 > heart\-and\-soul;
+泰米爾語 > tamil\-language;
+不期而遇 > meet\-by\-chance;
+近乎同步 > plesiochronous;
+哥本哈根 > copenhagen\-\?\?\?;
+百米賽跑 > 100\-metre\-dash;
+調查報告 > memoir\,\-report;
+數字信號 > digital\-signal;
+世界經濟 > global\-economy;
+通用汽車 > general\-motors;
+北京週報 > beijing\-review;
+源點地址 > source\-address;
+這次危機 > present\-crisis;
+出口產品 > export\-product;
+多工運作 > multithreading;
+二氧化碳 > carbon\-dioxide;
+網絡設計 > network\-design;
+五年計劃 > five\-year\-plan;
+市場經濟 > market\-economy;
+檔案執行 > file\-execution;
+互動電視 > interactive\-tv;
+公眾意見 > public\-opinion;
+歐洲聯盟 > european\-union;
+檔案轉送 > file\-transfer;
+排山倒海 > earth\-shaking;
+經營費用 > business\-cost;
+直截了當 > plain\-talking;
+冷戰以後 > post\-cold\-war;
+勢在必行 > be\-imperative;
+舊約全書 > old\-testament;
+幾個小時 > several\-hours;
+不可缺少 > indispensable;
+視窗基準 > windows\-based;
+電郵位置 > email\-address;
+研究領域 > research\-area;
+進接服務 > access\-server;
+二次大戰 > world\-war\-two;
+基本概念 > basic\-concept;
+貿易順差 > trade\-surplus;
+武器系統 > weapon\-system;
+家用電腦 > home\-computer;
+大公無私 > just\-and\-fair;
+新約全書 > new\-testament;
+亞洲國家 > asian\-country;
+暴風驟雨 > violent\-storm;
+捉取圖像 > capture\-image;
+拜金主義 > money\-worship;
+永久和平 > lasting\-peace;
+哈薩克人 > kazakh\-person;
+巡航導彈 > cruise\-missle;
+暴力犯罪 > violent\-crime;
+何西阿書 > book\-of\-hosea;
+不成文法 > unwritten\-law;
+亞太國家 > asian\-country;
+目標市場 > target\-market;
+最高法院 > supreme\-court;
+最後更新 > latest\-update;
+杏仁豆腐 > almond\-junket;
+這種方式 > \(in\)\-this\-way;
+保護主義 > protectionism;
+月球表面 > lunar\-surface;
+地方停車 > parking\-place;
+知名人士 > public\-figure;
+美國國會 > u\.s\.\-congress;
+不幸的是 > unfortunately;
+光纖電纜 > optical\-fiber;
+社交語言 > lingua\-franca;
+越來越多 > more\-and\-more;
+百科全書 > encyclopaedia;
+功率惡化 > power\-penalty;
+不可抗力 > force\-majeure;
+中國銀行 > bank\-of\-china;
+響應時間 > response\-time;
+傳輸模式 > transfer\-mode;
+不知不覺 > unconsciously;
+前所未有 > unprecedented;
+訪問方式 > access\-method;
+檔案建立 > file\-creation;
+出生日期 > date\-of\-birth;
+不可思議 > inconceivable;
+格子花呢 > plaid\,\-tartan;
+雙生兄弟 > twin\-brothers;
+最大速率 > maximum\-speed;
+現實情況 > current\-state;
+包羅萬象 > all\-embracing;
+視頻節目 > video\-program;
+羅馬字母 > roman\-letters;
+不可名狀 > indescribable;
+其他的人 > other\-people;
+媒體報導 > media\-report;
+和平條約 > peace\-treaty;
+股票市場 > stock\-market;
+大驚失色 > apprehensive;
+高層旅館 > luxury\-hotel;
+靈的世界 > spirit\-world;
+出乎預料 > unexpectedly;
+地方主義 > \"local\-\-ism\";
+激光唱片 > compact\-disk;
+中央銀行 > central\-bank;
+斯密約瑟 > joseph\-smith;
+目前世界 > modern\-world;
+民意調查 > opinion\-poll;
+現代音樂 > modern\-music;
+製造業者 > manufacturer;
+心理學家 > psychologist;
+不能抵抗 > irresistible;
+過境簽証 > transit\-visa;
+耶穌基督 > jesus\-christ;
+記者報導 > press\-report;
+多工作業 > multitaksing;
+不大離兒 > pretty\-close;
+本來面目 > true\-colours;
+網路節點 > network\-node;
+不可收拾 > irremediable;
+國家機密 > state\-secret;
+調查人員 > investigator;
+武裝部隊 > armed\-forces;
+生產企業 > manufacturer;
+名錄服務 > name\-service;
+語音信號 > voice\-signal;
+令人驚異 > surprisingly;
+基礎設施 > base\-station;
+生命跡象 > sign\-of\-life;
+知識分子 > intellectual;
+阿摩司書 > book\-of\-amos;
+用戶定義 > user\-defined;
+成吉思汗 > genghis\-khan;
+主幹網路 > core\-network;
+民意測驗 > opinion\-poll;
+歷代志下 > 2\-chronicles;
+歷代志上 > 1\-chronicles;
+指令名字 > command\-name;
+一小部分 > a\-small\-part;
+主幹網絡 > core\-network;
+揮霍無度 > extravagance;
+登陸月球 > moon\-landing;
+軍事援助 > military\-aid;
+本本主義 > book\-worship;
+五角大樓 > the\-pentagon;
+摩西律法 > law\-of\-moses;
+迅速蔓延 > rapid\-spread;
+以斯拉記 > book\-of\-ezra;
+不知所措 > be\-at\-a\-loss;
+形形色色 > all\-kinds\-of;
+檔案服務 > file\-servoce;
+降落地點 > landing\-site;
+三十五億 > 3\-\.5\-billion;
+二十六歲 > 26\-years\-old;
+數據網絡 > data\-network;
+龐然大物 > huge\-monster;
+世界知名 > world\-famous;
+知識份子 > intellectual;
+快速發展 > rapid\-growth;
+多種語言 > multilingual;
+安全問題 > safety\-issue;
+沉重打擊 > to\-hit\-hard;
+自然而然 > involuntary;
+不贊一詞 > keep\-silent;
+人體器官 > human\-organ;
+民族主義 > nationalism;
+精子密度 > sperm\-count;
+遷居移民 > immigration;
+野生動物 > wild\-animal;
+聖誕老人 > santa\-claus;
+浪漫主義 > romanticism;
+不可知論 > agnosticism;
+不切實際 > unrealistic;
+典型用途 > typical\-use;
+富於想像 > imaginative;
+國事訪問 > state\-visit;
+半半拉拉 > incompleted;
+不可分離 > inseparable;
+無產階級 > proletariat;
+失去意識 > unconscious;
+百萬富翁 > millionaire;
+貴族社會 > aristocracy;
+波多黎各 > puerto\-rico;
+立法機關 > legislature;
+主要原因 > main\-reason;
+有生以來 > since\-birth;
+貝加爾湖 > lake\-baikal;
+和平會談 > peace\-talks;
+不變價格 > fixed\-price;
+女繼承人 > inheritress;
+假設語氣 > subjunctive;
+地心吸力 > gravitation;
+運貨馬車 > cargo\-wagon;
+第三世界 > third\-world;
+無關緊要 > indifferent;
+大便乾燥 > constipated;
+不偏不倚 > even\-handed;
+分散注意 > to\-distract;
+不毛之地 > barren\-land;
+超級市場 > supermarket;
+必要條件 > requirement;
+分期付款 > installment;
+舉例來說 > for\-example;
+世界貿易 > world\-trade;
+莎士比亞 > shakespeare;
+四分之一 > one\-quarter;
+訊框傳送 > frame\-relay;
+畫插圖者 > illustrator;
+越南戰爭 > vietnam\-war;
+無所不在 > omnipresent;
+不出所料 > as\-expected;
+世界和平 > world\-piece;
+不同凡響 > outstanding;
+應用程式 > application;
+轉來轉去 > rove\-around;
+針鋒相對 > tit\-for\-tat;
+閉會祈禱 > benediction;
+不可估量 > inestimable;
+開放系統 > open\-system;
+有限公司 > corporation;
+空間探測 > space\-probe;
+基礎問題 > basic\-issue;
+邁阿密灘 > miami\-beach;
+身心爽快 > refreshment;
+祭司權術 > priestcraft;
+恰如其份 > appropriate;
+在這期間 > during\-time;
+無法忍受 > intolerable;
+反動分子 > reactionary;
+使用方便 > easy\-to\-use;
+無法形容 > unspeakable;
+有同情心 > sympathetic;
+進行性交 > to\-have\-sex;
+喜歡吵架 > quarrelsome;
+模糊邏輯 > fuzzy\-logic;
+就﹍而言 > considering;
+有選舉權 > constituent;
+測驗結果 > test\-result;
+管家職務 > stewardship;
+狗交媾般 > doggy\-style;
+專有名詞 > proper\-noun;
+朋比為奸 > to\-conspire;
+搬弄是非 > sow\-discord;
+冰染染料 > azoic\-dyes;
+四個小時 > four\-hours;
+天文學家 > astronomer;
+眼花繚亂 > be\-dazzled;
+魯佛爾宮 > the\-louvre;
+不堪忍受 > unbearable;
+娛樂中心 > recreation;
+自由貿易 > free\-trade;
+三分之二 > two\-thirds;
+總統任期 > presidency;
+不可逾越 > impassable;
+教堂墓地 > churchyard;
+行政長官 > magistrate;
+貴族論者 > aristocrat;
+新聞記者 > journalist;
+鞭闢入裡 > penetrated;
+他們自己 > themselves;
+阿塞拜疆 > azerbaijan;
+邏輯炸彈 > logic\-bomb;
+圖解說明 > illustrate;
+不屈不撓 > unyielding;
+大腦死亡 > brain\-dead;
+胡思亂想 > imaginings;
+一切事物 > everything;
+歌羅西書 > colossians;
+不由自主 > can''t\-help;
+曼徹斯特 > manchester;
+伽馬射線 > gamma\-rays;
+極為龐大 > monumental;
+有利可圖 > profitable;
+無所不能 > omnipotent;
+分離主義 > separatism;
+世界銀行 > world\-bank;
+無所不知 > omniscient;
+開會祈禱 > invocation;
+領導能力 > leadership;
+意見不合 > dissension;
+孟加拉國 > bangladesh;
+引人注意 > attractive;
+忘恩負義 > ungrateful;
+相同名字 > like\-named;
+使人信服 > convincing;
+取而代之 > substitute;
+電子空間 > cyberspace;
+微不足道 > negligible;
+達賴喇嘛 > dalai\-lama;
+不揣冒昧 > venture\-to;
+省略符號 > apostrophe;
+不對碴兒 > not\-proper;
+意想不到 > unexpected;
+冰上運動 > ice\-sports;
+美乃滋醬 > mayonnaise;
+陸軍中尉 > lieutenant;
+彪形大漢 > burly\-chap;
+萬事達卡 > mastercard;
+過渡時期 > transition;
+新聞媒體 > news\-media;
+堅定不移 > unswerving;
+此時以前 > heretofore;
+朝鮮戰爭 > korean\-war;
+難以置信 > incredible;
+共和政體 > republican;
+外交手腕 > diplomatic;
+畢業典禮 > graduation;
+腓立比書 > philipians;
+騎士風格 > knighthood;
+化妝舞會 > masquerade;
+女服物員 > stewardess;
+沒有知覺 > insensible;
+斑駮陸離 > variegated;
+氣勢洶洶 > aggressive;
+七十年代 > the\-1970''s;
+從今以後 > henceforth;
+視窗新技 > windows\-nt;
+縮小模型 > miniature;
+以弗所書 > ephesians;
+沒有形狀 > shapeless;
+用戶數據 > user\-data;
+開發人員 > developer;
+地質學家 > geologist;
+生物學家 > biologist;
+不可磨滅 > indelible;
+不亦樂乎 > extremely;
+按照字面 > literally;
+三分之一 > one\-third;
+不可救藥 > incurable;
+耶路撒冷 > jerusalem;
+褻瀆的話 > blasphemy;
+國內戰爭 > civil\-war;
+危地馬拉 > guatamala;
+加密後的 > encrypted;
+有攻擊性 > offensive;
+惡名昭彰 > notorious;
+經濟學家 > economist;
+阿空加瓜 > aconcagua;
+加拉太書 > galatians;
+網際色情 > cyberporn;
+花粉過敏 > hay\-fever;
+為時過早 > premature;
+聯合組織 > syndicate;
+有創造力 > ingenious;
+人物描寫 > portrayal;
+令人欽佩 > admirable;
+阿奇里斯 > aeschylus;
+孟加拉語 > bengalese;
+機械裝置 > machinery;
+斑翅山鶉 > partridge;
+不可勝數 > countless;
+總會會長 > president;
+毫無疑問 > certainty;
+澳大利亞 > australia;
+大寫鎖定 > caps\-lock;
+半工半讀 > part\-work;
+我們自己 > ourselves;
+羅徹斯特 > rochester;
+管弦樂團 > orchestra;
+白日做夢 > day\-dream;
+任何其他 > any\-other;
+巴勒斯坦 > palestine;
+在﹍旁邊 > alongside;
+先見之明 > foresight;
+隨之而後 > from\-that;
+上個星期 > last\-week;
+民主政治 > democracy;
+主管人員 > executive;
+財務秘書 > treasurer;
+生育能力 > fertility;
+共享軟體 > shareware;
+不受歡迎 > unwelcome;
+凹凸印刷 > embossing;
+撒都該人 > sadducees;
+共產主義 > communism;
+不以為然 > object\-to;
+社會主義 > socialism;
+蜜月假期 > honeymoon;
+同班同學 > classmate;
+具有主權 > sovereign;
+自動樓梯 > escalator;
+緊急事件 > emergency;
+退黑激素 > melatonin;
+不計其數 > countless;
+基督教徒 > christian;
+凹凸軋花 > embossing;
+不然的話 > otherwise;
+亞格門農 > agamemnon;
+不逞之徒 > desperado;
+置之度外 > disregard;
+憤憤不平 > indignant;
+下個星期 > next\-week;
+歷史學家 > historian;
+堅忍不拔 > fortitude;
+全場一致 > unanimous;
+羅切斯特 > rochester;
+表意文字 > ideograph;
+通貨膨脹 > inflation;
+變換設備 > converter;
+經濟學者 > economist;
+丙種射線 > gamma\-ray;
+意氣相投 > congenial;
+獲暴利者 > profiteer;
+斯洛伐克 > slovakia;
+油炸圈餅 > doughnut;
+因﹍之故 > inasmuch;
+雍容大度 > generous;
+好好兒地 > properly;
+騎士氣概 > chivalry;
+艾德蕾德 > adelaide;
+免費軟件 > freeware;
+以太網絡 > ethernet;
+桃花心木 > mahogany;
+標準規格 > standard;
+無論何時 > whenever;
+幾乎沒有 > scarcely;
+牧師之職 > ministry;
+六十四萬 > 64\-0\-000;
+蒙托羅拉 > motorola;
+人工流產 > abortion;
+喇叭水仙 > daffodil;
+國際網絡 > internet;
+無論何事 > anything;
+精力充沛 > vigorous;
+哥倫布紀 > columbus;
+左輪手槍 > revolver;
+哥倫比亞 > colombia;
+君主政治 > monarchy;
+人口稠密 > populous;
+引人注目 > striking;
+阿奇歷斯 > achilles;
+奧德修斯 > odysseus;
+坦桑尼亞 > tanzania;
+不顧一切 > reckless;
+勢如破竹 > sweeping;
+農家庭院 > farmyard;
+家庭作業 > homework;
+即將來臨 > imminent;
+音樂光碟 > music\-cd;
+五彩賓紛 > colorful;
+漢密爾頓 > hamilton;
+語言學家 > linguist;
+龍頭老大 > big\-boss;
+腓利門書 > philemon;
+電腦網絡 > internet;
+摩托羅拉 > motorola;
+巴基斯坦 > pakistan;
+巴巴多斯 > barbados;
+競選活動 > campaign;
+終端用戶 > end\-user;
+墨水瓶架 > inkstand;
+網際網路 > internet;
+無人駕駛 > unmanned;
+法利賽人 > pharisee;
+科羅拉多 > colorado;
+匪徒集團 > gangster;
+射頻噪音 > rf\-noise;
+人道主義 > humanism;
+一心一意 > intently;
+網際網絡 > internet;
+精神錯亂 > insanity;
+嘉年華會 > carnival;
+博茨瓦納 > botswana;
+壟斷販賣 > monopoly;
+保加利亞 > bulgaria;
+貴族身份 > lordship;
+肌肉發達 > muscular;
+流感疫苗 > flu\-shot;
+工作過度 > overwork;
+乙太網路 > ethernet;
+骨頭架子 > skeleton;
+愛因斯坦 > einstein;
+無論何處 > anywhere;
+公開指責 > denounce;
+歡迎光臨 > welcome;
+安提瓜島 > antigua;
+喪心病狂 > lunatic;
+格子棉布 > gingham;
+萬有引力 > gravity;
+消防隊員 > fireman;
+扳不倒兒 > tumbler;
+爬蟲動物 > reptile;
+退伍軍人 > veteran;
+外科醫生 > surgeon;
+在﹍之間 > between;
+十億位元 > gigabit;
+身體障害 > cripple;
+阿摩尼亞 > ammonia;
+蠕動前進 > wriggle;
+派給工作 > to\-task;
+薔薇花蕾 > rosebud;
+無論何人 > whoever;
+斯瓦希裡 > swahili;
+航空郵件 > airmail;
+亞特蘭大 > atlanta;
+進退兩難 > dilemma;
+不稂不莠 > useless;
+分析人士 > analyst;
+最低限度 > minimum;
+克什米爾 > kashmir;
+活動房屋 > trailer;
+什一奉獻 > tithing;
+墨西哥人 > mexican;
+加榮耀於 > glorify;
+不干不淨 > unclean;
+三位一體 > trinity;
+女用內衣 > chemise;
+公益事業 > utility;
+日常工作 > routine;
+男性親屬 > kinsman;
+貨物運輸 > freight;
+牙科醫生 > dentist;
+郡治安官 > sheriff;
+亞伯拉罕 > abraham;
+克羅地亞 > croatia;
+全神灌注 > rapture;
+專科院校 > academy;
+高速公路 > highway;
+給與資格 > qualify;
+印地安那 > indiana;
+不得而知 > unknown;
+航空公司 > airline;
+有耐久力 > durable;
+太陽黑子 > sunspot;
+希伯來書 > hebrews;
+奧林匹克 > olympic;
+亞利桑那 > arizona;
+蓋世太保 > gestapo;
+喋喋不休 > chatter;
+愛屋及烏 > love\-me;
+經濟制度 > economy;
+以馬內利 > emanuel;
+規劃人員 > planner;
+慈善機構 > charity;
+男性尊稱 > esquire;
+不三不四 > dubious;
+列王紀下 > 2\-kings;
+列王紀上 > 1\-kings;
+陸軍上校 > colonel;
+虛構小說 > fiction;
+外科手術 > surgery;
+各色各樣 > diverse;
+佛羅裡達 > florida;
+公爵夫人 > duchess;
+有好奇心 > curious;
+彼得後書 > 2\-peter;
+玻利維亞 > bolivia;
+小型櫃櫥 > cabinet;
+印像深刻 > impress;
+指導教授 > adviser;
+不知何故 > somehow;
+阿司匹林 > aspirin;
+金光閃爍 > spangle;
+互聯網絡 > network;
+奴隸制度 > slavery;
+恢復原狀 > restore;
+馬來西亞 > malasia;
+山胡桃木 > hickory;
+彼得前書 > 1\-peter;
+就寢時間 > bedtime;
+四輪馬車 > chariot;
+亞拉巴馬 > alabama;
+彈道導彈 > missile;
+有精神病 > insane;
+哺乳動物 > mammal;
+伊尼伊德 > aeneid;
+塞爾維亞 > serbia;
+使﹍豐富 > enrich;
+伊尼亞斯 > aeneas;
+驅逐出境 > deport;
+八分音符 > quaver;
+天竺牡丹 > dahlia;
+離奇有趣 > quaint;
+發嘎嘎聲 > rattle;
+超過限度 > exceed;
+不可告人 > hidden;
+力足以做 > afford;
+在﹍期間 > during;
+種族主義 > racism;
+徒步旅行 > hiking;
+旅行裝備 > outfit;
+地下鐵路 > subway;
+威士忌酒 > whisky;
+連字符號 > hyphen;
+廢除軍備 > disarm;
+顛倒過來 > invert;
+七月一號 > july\-1;
+點頭招呼 > beckon;
+伯仲叔季 > eldest;
+鼻口部分 > muzzle;
+尖聲啼哭 > squeal;
+命運註定 > ordain;
+人頭獅身 > sphinx;
+不幸之事 > mishap;
+在﹍之旁 > beside;
+約翰二書 > 2\-john;
+轟轟烈烈 > strong;
+十四行詩 > sonnet;
+二者之一 > either;
+約翰三書 > 3\-john;
+約翰一書 > 1\-john;
+美洲兀鷹 > condor;
+五分美金 > nickel;
+除了之外 > except;
+製陶工人 > potter;
+人口調查 > census;
+無論如何 > anyhow;
+出埃及記 > exodus;
+有藥癮者 > addict;
+釣魚用具 > tackle;
+比較喜歡 > prefer;
+阿多尼斯 > adonis;
+逃之夭夭 > escape;
+紫羅蘭色 > violet;
+傭人領班 > butler;
+不戰不和 > no\-war;
+蘇格蘭帽 > bonnet;
+減低速度 > retard;
+阿拉斯加 > alaska;
+使具體化 > embody;
+酒精飲料 > liquor;
+跑堂兒的 > waiter;
+使﹍能夠 > enable;
+生氣勃勃 > lively;
+無法無天 > outlaw;
+波斯尼亞 > bosnia;
+虛張聲勢 > bluff;
+未成年人 > minor;
+麵包師傅 > baker;
+感化餅乾 > wafer;
+非常害怕 > dread;
+一線微光 > gleam;
+五花八門 > myrid;
+斜紋軟呢 > tweed;
+德克薩斯 > texas;
+滿身塵埃 > dusty;
+調味肉汁 > gravy;
+標準尺寸 > gauge;
+在﹍之下 > below;
+在﹍之上 > above;
+蟲鳥叫聲 > chirp;
+動態影像 > video;
+三千五百 > 3\-500;
+示威運動 > rally;
+載貨汽車 > lorry;
+布帛菽粟 > cloth;
+神經過敏 > jumpy;
+伊斯蘭教 > islam;
+愁眉苦臉 > frown;
+吉普賽人 > gypsy;
+愛克斯光 > x\-ray;
+家庭教師 > tutor;
+露齒而笑 > grin;
+從容不迫 > calm;
+一角銀幣 > dime;
+飲食療養 > diet;
+目瞪口呆 > stun;
+擺龍門陣 > chat;
+到﹍之上 > onto;
+全體人員 > crew;
+遠程監控 > rmon;
+在﹍之中 > amid;
+小起重機 > jack;
+輕而易舉 > easy;
+金屬薄片 > foil;
+頭腦清楚 > sane;
+在水步行 > wade;
+出租汽車 > taxi;
+高爾夫球 > golf;
+電話鈴聲 > buzz;
+液晶顯示 > lcd;
+烏合之眾 > mob;
+索具裝置 > rig;
+公共汽車 > bus;
+莫名其妙 > odd;
+圓形木材 > log;
+不分勝負 > tie;
+衣服縫邊 > hem;
+圓形麵包 > bun;
+杜松子酒 > gin;
+在﹍之內 > in;
+直通車 > \"through\-train\"\-\(refers\-to\-the\-idea\-of\-retaining\-previous\-legislature\-after\-transition\-to\-chinese\-rule\-in\-hong\-kong\-or\-macau\);
+小臟鬼 > dirty\-little\-monster\-\(spoken\-affectionately\-to\-a\-child\-who\-has\-gotten\-him\(her\)self\-dirty\;\-literally\-\"little\-dirty\-ghost\"\);
+綺色佳 > ithaca\,\-ny\-\(but\-pronounced\-yi3\-se4\-jia1\,\-following\-a\-mistake\-made\-by\-hu2\-shi4\-胡適\);
+雷峰塔 > leifeng\-pagoda\,\-by\-west\-lake\-until\-it\-was\-destroyed\-\(also\-from\-madam\-white\-snake\);
+牡丹卡 > peony\-card\-\(credit\-card\-issued\-by\-industrial\-and\-commercial\-bank\-of\-china\);
+三岔口 > at\-the\-crossroads\,\-the\-name\-of\-a\-famous\-opera\,\-story\-from\-shui\-hu\-zhuan;
+李自成 > name\-of\-a\-person\,\-li\-zi\-cheng\,\-leader\-of\-ming\-dynasty\-peasant\-rebellion;
+江八點 > \"jiang\-zemin''s\-eight\-point\-formula\"\-\(for\-resuming\-a\-dialog\-with\-taiwan\);
+鄧亮洪 > tang\-liang\-hong\-\(opposition\-candidate\-in\-jan\-1996\-singapore\-elections\);
+吃大戶 > mass\-seizure\-of\-food\-from\-landlords\-during\-famines\-before\-liberation;
+李時珍 > li\-shi\-zhen\-\(1518\-1593\,\-famous\-doctor\,\-author\-of\-ben3\-cao3\-gang1\-mu4;
+禽流感 > \"bird\-flu\"\-\(flu\-carried\-by\-birds\-\-\-found\-in\-hong\-kong\-in\-late\-1997\);
+蒙代爾 > \(walter\)\-mondale\-\(us\-ambassador\-to\-japan\,\-former\-us\-vice\-president\);
+陳納德 > \(claire\)\-chennault\,\-commander\-of\-flying\-tigers\-during\-world\-war\-ii;
+維爾容 > \(johannes\-lodewikus\)\-viljoen\-\(south\-african\-ambassador\-to\-taiwan\);
+葛洲壩 > name\-of\-a\-place\,\-gezhouba\-dam\-on\-the\-changjiang\-river\,\-in\-sichuan;
+鼻韻母 > \(of\-chinese\-pronunciation\)\-a\-vowel\-followed\-by\-a\-nasal\-consonant;
+金永南 > kim\-yong\-nam\-\(north\-korean\-deputy\-premier\-and\-foreign\-minister\);
+斗批改 > struggle\-criticism\-transformation\-\(cultural\-revolution\-slogan\);
+端午節 > the\-dragon\-boat\-festival\-\(the\-5th\-day\-of\-the\-5th\-lunar\-month\);
+白茫茫 > \(of\-mist\,\-snow\,\-floodwater\,\-etc\)\-a\-vast\-expanse\-of\-whiteness;
+斯佩羅 > \(joan\)\-spero\-\(under\-secretary\-of\-state\-for\-economic\-affairs\);
+太極拳 > a\-kind\-of\-traditional\-chinese\-shadowboxing\-\(tai\-chi\-chuan\);
+會不會 > \(posing\-a\-question\:\-whether\-someone\,\-something\)\-can\-or\-not;
+抱佛腳 > clasp\-budda''s\-feet\-\-\-profess\-devotion\-only\-when\-in\-trouble;
+蛋花湯 > clear\-soup\-containing\-beaten\-egg\-and\-green\-leafy\-vegetable;
+金山寺 > jinshan\-temple\,\-where\-fahai\-lives\-\(from\-madam\-white\-snake\);
+並蒂蓮 > twin\-lotus\-flowers\-on\-one\-stalk\-\-\-a\-devoted\-married\-couple;
+飛虎隊 > flying\-tigers\-\(us\-airmen\-in\-china\-during\-world\-war\-two\);
+暗花兒 > a\-veiled\-design\-incised\-in\-porcelain\-or\-woven\-in\-fabric;
+拔罐子 > cupping\-technique\-used\-in\-traditional\-chinese\-medicine;
+元宵節 > the\-lantern\-festival\,\-january\-15\-on\-the\-lunar\-calendar;
+個體戶 > a\-small\-private\-business\-\(used\-in\-mainland\-china\-only\);
+景德鎮 > jing\-de\-zhen\-\(a\-chinese\-city\-in\-jiang\-xi\-江西\-province\);
+長城卡 > great\-wall\-card\-\(credit\-card\-issued\-by\-bank\-of\-china\);
+哈貝爾 > \(webster\)\-hubbell\-\(former\-associate\-attorney\-general\);
+萬壽山 > name\-of\-a\-place\,\-longevity\-hill\,\-in\-summer\-palace\-頤和園;
+拉那烈 > \(prince\)\-ranariddh\-\(son\-of\-king\-sihanouk\-of\-cambodia\);
+包干制 > a\-system\-of\-payment\-partly\-in\-kind\-and\-partly\-in\-cash;
+顏真卿 > name\-of\-a\-person\,\-yan\-zhenqing\,\-a\-famous\-calligrapher;
+白素貞 > \(name\-of\-a\-person\)\-bai\-suzhen\,\-from\-madam\-white\-snake;
+白冰冰 > pai\-ping\-ping\-\(well\-known\-taiwan\-performing\-artist\);
+伯恩斯 > \(nicholas\)\-burns\-\(us\-state\-department\-spokesperson\);
+尼赫魯 > \(jawaharlal\)\-nehru\-\(first\-prime\-minister\-of\-india\);
+撥浪鼓 > a\-drum\-shaped\-rattle\-\(used\-by\-pedlars\-or\-as\-a\-toy\);
+北大荒 > the\-great\-northern\-wilderness\-\(in\-northern\-china\);
+十五大 > 1\-5th\-party\-congress\-\(of\-chinese\-communist\-party\);
+李光耀 > lee\-kuan\-yew\-\(former\-prime\-minister\-of\-singapore\);
+跑江湖 > to\-make\-a\-living\-as\-a\-travelling\-performer\,\-etc\.;
+交易額 > sum\-or\-volume\-or\-amount\-of\-business\-transactions;
+林豐正 > lin\-feng\-cheng\-\(taiwan\-minister\-of\-the\-interior\);
+董建華 > tung\-chee\-hwa\-\(hong\-kong\-leader\-after\-july\-1997\);
+南京路 > nanjing\-st\.\,\-large\-commercial\-street\-in\-shanghai;
+八仙桌 > old\-fashioned\-square\-table\-to\-seat\-eight\-people;
+塞拉凡 > \(sonny\)\-seraphin\-\(haitian\-ambassador\-to\-taiwan\);
+金大中 > kim\-dae\-jung\-\(newly\-elected\-president\-of\-korea\);
+范斯坦 > \(dianne\)\-feinstein\-\(us\-senator\-from\-california\);
+液態水 > liquid\-water\-\(as\-opposed\-to\-steam\-or\-ice\,\-e\.g\.\);
+解放軍 > people''s\-liberation\-army\-\(ie\,\-the\-chinese\-army\);
+趙紫陽 > zhao\-ziyang\-\(former\-chinese\-leadership\-figure\);
+互通性 > interoperability\-\(of\-communications\-equipment\);
+全斗煥 > chun\-doo\-hwan\-\(former\-south\-korean\-president\);
+探路者 > pathfinder\-\(space\-craft\-sent\-to\-mars\-by\-nasa\);
+崔亞琳 > charles\-yah\-lin\-trie\-\(arkansas\-restauranteur\);
+專案組 > special\-\(legal\|judicial\)\-investigations\-group;
+長沙灣 > cheung\-sha\-wan\-\(poultry\-market\-in\-hong\-kong\);
+正常化 > normalization\-\(of\-diplomatic\-relations\,\-etc\);
+謝裡夫 > \(nawaz\)\-sharif\-\(prime\-minister\-of\-pakistan\);
+吳作棟 > goh\-chok\-tong\-\(prime\-minister\-of\-singapore\);
+工人黨 > workers''\-party\-\(singapore\-opposition\-party\);
+斯佩林 > spelling\-\(eg\,\-spelling\-entertainment\-group\);
+盧泰愚 > roh\-tae\-woo\-\(former\-south\-korean\-president\);
+齊白石 > name\-of\-a\-famous\-chinese\-artist\,\-qi\-bai\-shi;
+商務部 > commerce\-department\-\(of\-the\-us\-government\);
+老伴兒 > \(of\-an\-old\-married\-couple\)\-husband\-or\-wife;
+梆子腔 > a\-general\-term\-for\-local\-operas\-in\-shangxi;
+梅蘭芳 > name\-of\-a\-very\-famous\-beijing\-opera\-artist;
+行政院 > executive\-yuan\-\(government\-body\-in\-taiwan\);
+杰佛茲 > \(james\)\-jeffords\-\(us\-senator\-from\-vermont\);
+羅布泊 > lop\-nor\-\(nuclear\-testing\-site\-in\-xinjiang\);
+民進黨 > dpp\-\(democratic\-progressive\-party\,\-taiwan\);
+白花蛇 > long\-nosed\-pit\-viper\-\(agkistrodon\-acutus\);
+眾議員 > member\-of\-the\-us\-house\-of\-representatives;
+邁科裡 > \(mike\)\-mccurry\-\(white\-house\-spokesperson\);
+報告會 > public\-lecture\-\(with\-guest\-speakers\,\-etc\);
+利伯曼 > \(connecticut\-senator\-joseph\-i\.\)\-lieberman;
+麥科裡 > \(mike\)\-mccurry\-\(white\-house\-spokesperson\);
+神女峰 > name\-of\-a\-peak\-by\-changjiang\-three\-gorges;
+白曉燕 > pai\-hsiao\-yen\-\(daughter\-of\-pai\-ping\-ping\);
+金日成 > kim\-il\-sung\-\(former\-north\-korean\-leader\);
+太極劍 > a\-kind\-of\-traditional\-chinese\-sword\-play;
+司法部 > justice\-deparment\-\(of\-the\-us\-government\);
+庫納南 > \(andrew\)\-cunanan\-\(alleged\-serial\-killer\);
+黃建南 > john\-huang\-\(democratic\-party\-fundraiser\);
+黃岩島 > huangyan\-island\-\(in\-the\-south\-china\-sea\);
+機關報 > official\-\(government\-operated\)\-newspaper;
+入學率 > percentage\-of\-children\-who\-enter\-school;
+茅臺酒 > maotai\-or\-maitai\-\(chinese\-strong\-drink\);
+王羲之 > name\-of\-a\-person\,\-a\-famous\-calligrapher;
+邊角科 > leftover\-bits\-and\-pieces\-\(of\-industrial;
+阿昌族 > the\-achang\-nationality\-living\-in\-yunnan;
+佩洛西 > \(nancy\)\-pelosi\-\(member\-of\-us\-congress\);
+吐魯番 > the\-turfan\-basin\,\-in\-xinjiang\-province;
+半脫產 > partly\-released\-from\-productive\-labour;
+總書記 > general\-secretary\-\(of\-communist\-party\);
+沈國放 > chinese\-foreign\-ministry\-spokesperson;
+穆桂英 > mu\-gui\-ying\-\(name\-of\-a\-woman\-warrior\);
+孫女兒 > granddaughter\-\(daughter\-of\-one''s\-son\);
+尚慕杰 > james\-sasser\-\(us\-ambassador\-to\-china\);
+塞爾南 > \(eugene\)\-cernan\-\(apollo\-17\-astronaut\);
+年畫兒 > new\-year\-\(or\-spring\-festival\)\-picture;
+鐵飯碗 > \"iron\-rice\-bowl\"\-\-\-\-secure\-employment;
+胡志明 > ho\-chi\-minh\-\(vietnamese\-leader\,\-city\);
+徐悲鴻 > name\-of\-a\-famous\-painter\,\-xu\-beihong;
+花木蘭 > hua\-mu\-lan\-\(name\-of\-a\-woman\-warrior\);
+打不過 > not\-to\-be\-able\-to\-beat\-or\-defeat\-sb\.;
+發了言 > \(\"past\-tense\"\-of\-\:發言\)\-spoke\-publicly;
+不自量 > not\-take\-a\-proper\-measure\-of\-oneself;
+抄後路 > to\-outflank\-and\-attack\-from\-the\-rear;
+編年體 > annalistic\-style\-\(in\-historiography\);
+家鄉雞 > ''home\-town\-chicken''\-\(a\-type\-of\-dish\);
+章孝嚴 > john\-chang\-\(taiwan\-foreign\-minister\);
+來不及 > there''s\-not\-enough\-time\-\(to\-do\-sth\.\);
+死不了 > portulaca\-sundial\-\(a\-type\-of\-plant\);
+迎春花 > winter\-jasmine\,\-jasminum\-nudiflorum;
+主人翁 > master\-\(of\-one''s\-own\-destiny\,\-etc\.\);
+哈密瓜 > hami\-melon\-\(a\-variety\-of\-muskmelon\);
+貿易額 > volume\-of\-trade\-\(between\-countries\);
+總動員 > general\-mobilization\-\(for\-war\,\-etc\);
+崩龍族 > the\-benglong\-\(penglung\)\-nationality;
+霸王鞭 > a\-rattle\-stick\-used\-in\-folk\-dancing;
+白殭蠶 > the\-larva\-of\-silkworm\-with\-batrytis;
+不失為 > can\-still\-be\-considered\-\(to\-be\.\.\.\);
+最惠國 > most\-favored\-nation\-\(trade\-status\);
+基金會 > a\-foundation\-\(ie\,\-an\-organization\);
+打錯了 > \"you\-have\-dialed\-the\-wrong\-number\";
+病包兒 > a\-person\-who\-is\-always\-falling\-ill;
+拉莫斯 > \(philippine\-president\-fidel\)\-ramos;
+胡志強 > jason\-hu\-\(taiwan\-foreign\-minister\);
+幫倒忙 > be\-more\-of\-a\-hindrance\-than\-a\-help;
+俱樂部 > club\-\(ie\,\-a\-group\-or\-organization\);
+勞動節 > international\-labor\-day\-\(may\-day\);
+抱粗腿 > latch\-on\-to\-the\-rich\-and\-powerful;
+金正日 > kim\-jong\-il\-\(north\-korean\-leader\);
+不摸頭 > not\-acquainted\-with\-the\-situation;
+魏京生 > wei\-jingsheng\-\(chinese\-dissident\);
+吃不上 > be\-unable\-to\-get\-something\-to\-eat;
+檢察官 > the\-prosecution\-\(in\-a\-court\-case\);
+垃圾車 > garbage\-truck\-\(or\-other\-vehicle\);
+布法羅 > buffalo\-\(city\-in\-new\-york\-state\);
+八會穴 > the\-eight\-strategic\-nerve\-points;
+開普敦 > cape\-town\-\(city\-in\-south\-africa\);
+見不得 > may\-not\-be\-seen\-by\-or\-exposed\-to;
+創辦人 > founder\-\(of\-an\-institution\,\-etc\);
+逼供信 > obtain\-confessions\-by\-compulsion;
+負責人 > person\-in\-charge\-\(of\-something\);
+十三經 > the\-thirteen\-confucian\-classics;
+病蟲害 > plant\-diseases\-and\-insect\-pests;
+吃不服 > not\-be\-accustomed\-to\-eating\-sth;
+馬尼拉 > manila\-\(capital\-of\-philippines\);
+應該說 > it\-should\-be\-mentioned\-that\-\.\.\.;
+不得不 > have\-no\-choice\-or\-option\-but\-to;
+北伐軍 > the\-northern\-expeditionary\-army;
+可移植 > portable\-\(programming\-language\);
+經濟學 > economics\-\(as\-a\-field\-of\-study\);
+愛面子 > be\-concerned\-about\-face\-saving;
+墨爾缽 > melbourne\-\(an\-australian\-city\);
+索杰納 > sojourner\-\(martian\-land\-rover\);
+談得來 > able\-to\-talk\-to\-or\-get\-on\-with;
+班主任 > a\-teacher\-in\-charge\-of\-a\-class;
+導航員 > navigator\-\(on\-a\-plane\-or\-boat\);
+眾議院 > house\-of\-representatives\-\(usa\);
+當事人 > persons\-involved\-or\-implicated;
+紅綠燈 > \(red\-and\-green\)\-traffic\-light;
+重複節 > repeated\-segment\-\(networking\);
+兵工廠 > munitions\-or\-ordnance\-factory;
+半身像 > half\-length\-photo\-or\-portrait;
+發電量 > \(generated\)\-electrical\-energy;
+保安族 > the\-baoan\-\(paoan\)\-nationality;
+江澤民 > jiang\-zemin\-\(chinese\-premier\);
+年夜飯 > new\-year''s\-eve\-family\-dinner;
+李登輝 > lee\-teng\-hui\-\(taiwan\-leader\);
+大自然 > nature\-\(as\-in\-mother\-nature\);
+立方米 > cubic\-meter\-\(unit\-of\-volume\);
+吃不消 > be\-unable\-to\-stand\-\(exertion;
+投票站 > polling\-station\-\(for\-a\-vote\);
+得票率 > percentage\-of\-votes\-obtained;
+吃不住 > be\-unable\-to\-bear\-or\-support;
+自治區 > autonomous\-region\-\(in\-china\);
+張純如 > \(american\-author\)\-iris\-chang;
+班務會 > a\-routine\-meeting\-of\-a\-squad;
+新德裡 > new\-delhi\-\(capital\-of\-india\);
+反對黨 > opposition\-\(political\)\-party;
+說明書 > synopsis\-\(of\-a\-play\-or\-film\);
+叛亂罪 > the\-crime\-of\-armed\-rebellion;
+差得多 > fall\-short\-by\-a\-large\-amount;
+台灣話 > taiwanese\-chinese\-\(language\);
+葉利欽 > \(russian\-president\)\-yeltsin;
+黃浦江 > huangpu\-river\-\(in\-shanghai\);
+背包袱 > have\-a\-weight\-on\-one''s\-mind;
+報戶口 > apply\-for\-a\-resident\-permit;
+國際級 > \(at\-an\)\-international\-level;
+吃不來 > not\-be\-fond\-of\-certain\-food;
+據報導 > according\-to\-\(news\)\-reports;
+病毒學 > virology\-\(study\-of\-viruses\);
+而不需 > without\-needing\-\(to\-so\-sth\);
+交換機 > switch\-\(telecommunications\);
+大陸話 > mainland\-chinese\-\(language\);
+交換器 > \(telecom\-or\-network\)\-switch;
+通訊社 > a\-news\-service\-\(eg\,\-xinhua\);
+愛好者 > lover\-\(of\-art\,\-sports\,\-etc\);
+公安部 > ministry\-of\-public\-security;
+抱不平 > be\-outraged\-by\-an\-injustice;
+男子漢 > man\-\(i\.e\.\-manly\,\-masculine\);
+巴兒狗 > pekingese\-\(a\-breed\-of\-dog\);
+存車處 > parking\-lot\-\(for\-bicycles\);
+鼻牛兒 > hardened\-mucus\-in\-nostrils;
+桃花運 > luck\-with\-the\-opposite\-sex;
+弗塞奇 > versace\-\(fashion\-designer\);
+普通話 > mandarin\-\(common\-language\);
+幾年來 > for\-the\-past\-several\-years;
+頤和園 > summer\-palace\-\(in\-beijing\);
+馬來人 > malaysian\-person\-or\-people;
+底特律 > detroit\-\(a\-city\-in\-the\-us\);
+情況下 > under\-\(this\)\-circumstances;
+溫哥華 > vancouver\-\(city\-in\-canada\);
+白頭翁 > root\-of\-chinese\-pulsatilla;
+中文版 > chinese\-\(language\)\-version;
+高中生 > senior\-high\-school\-student;
+板羽球 > battledore\-and\-shuttlecock;
+參兩院 > both\-houses\-of\-us\-congress;
+癟螺痧 > cholera\-\(with\-dehydration\);
+透通性 > transparency\-\(networking\);
+營業額 > sum\-or\-volume\-of\-business;
+矮個兒 > a\-person\-of\-short\-stature;
+核大國 > a\-nuclear\-power\-\(country\);
+希臘語 > \(modern\)\-greek\-\(language\);
+時間內 > within\-\(a\-period\-of\-time\);
+下工夫 > to\-put\-in\-time\-and\-energy;
+日本人 > japanese\-person\-or\-people;
+無限期 > unlimited\-\(time\)\-duration;
+帕蘭卡 > palanka\-\(a\-personal\-name\);
+人民幣 > chinese\-unit\-of\-currency;
+流氓罪 > the\-crime\-of\-hooliganism;
+錄音機 > \(tape\)\-recording\-machine;
+代之以 > \(has\-been\)\-replaced\-with;
+變戲法 > perform\-conjuring\-tricks;
+發行額 > \(periodical\)\-circulation;
+十三日 > thirtieth\-day\-of\-a\-month;
+下半身 > lower\-half\-of\-one''s\-body;
+印歐語 > indo\-european\-\(language\);
+內政部 > ministry\-of\-the\-interior;
+印歐文 > indo\-european\-\(language\);
+無黨派 > politically\-unaffiliated;
+變電站 > \(transformer\)\-substation;
+木乃伊 > mummy\-\(preserved\-corpse\);
+外交部 > foreign\-affairs\-ministry;
+遲浩田 > chinese\-defense\-minister;
+北溫帶 > the\-north\-temperate\-zone;
+打電話 > to\-make\-a\-telephone\-call;
+止痛法 > method\-of\-relieving\-pain;
+北半球 > the\-northern\-hemisphere;
+雙絞線 > unshielded\-twisted\-pait;
+包承制 > responsible\-crew\-system;
+播放機 > player\-\(e\.g\.\-cd\-player\);
+據統計 > according\-to\-statistics;
+留學生 > student\-studying\-abroad;
+多年來 > for\-the\-past\-many\-years;
+中秋節 > the\-mid\-autumn\-festival;
+馬路口 > intersection\-\(of\-roads\);
+戴維斯 > davis\-\(english\-surname\);
+紅樓夢 > a\-dream\-of\-red\-mansions;
+過不去 > make\-life\-difficult\-for;
+情報處 > source\-\(of\-information\);
+腐敗罪 > the\-crime\-of\-corruption;
+白蛇傳 > tale\-of\-the\-white\-snake;
+半成品 > semi\-manufactured\-goods;
+奔頭兒 > something\-to\-strive\-for;
+中轉站 > hub\-\(network\-equipment\);
+香港人 > hong\-kong\-person\|people;
+慕道友 > religious\-investigator;
+剝採比 > stripping\-to\-ore\-ratio;
+目的地 > destination\-\(location\);
+國務院 > state\-department\-\(usa\);
+十五億 > one\-and\-a\-half\-billion;
+紅燒肉 > red\-cooked\-\(pork\)\-meat;
+公安局 > public\-security\-bureau;
+發病率 > incidence\-of\-a\-disease;
+疑問句 > interrogative\-sentance;
+此一時 > that\-was\-one\-situation;
+不好惹 > not\-to\-be\-trifled\-with;
+不得已 > act\-against\-one''s\-will;
+上半年 > first\-half\-\(of\-a\-year\);
+不要臉 > have\-no\-sense\-of\-shame;
+背地風 > behind\-somebody''s\-back;
+近年來 > for\-the\-past\-few\-years;
+其自身 > one''s\-own\-\(respective\);
+火焰山 > the\-mountain\-of\-flames;
+工作站 > \(computer\)\-workstation;
+印歐人 > indo\-european\-\(person\);
+坦克車 > tank\-\(armored\-vehicle\);
+不像樣 > in\-no\-shape\-to\-be\-seen;
+變分法 > calculus\-of\-variations;
+西遊記 > pilgrimage\-to\-the\-west;
+畢業生 > graduate\-\(of\-a\-school\);
+背黑鍋 > to\-be\-made\-a\-scapegoat;
+靈敏度 > \(level\-of\)\-sensitivity;
+彼一時 > that\-was\-one\-situation;
+軟硬件 > software\-and\-hardware;
+熱門貨 > goods\-in\-great\-demand;
+通信量 > communications\-volume;
+祝賀詞 > congratulatory\-speech;
+幾十年 > several\-tens\-of\-years;
+比方說 > to\-make\-an\-analogy\.\.\.;
+麥芽糖 > maltose\-\(sweet\-syrup\);
+美聯社 > associated\-press\-\(ap\);
+推薦信 > recommendation\-letter;
+幾天來 > for\-the\-past\-few\-days;
+投了票 > past\-tense\-of\-to\-vote;
+肯尼迪 > kennedy\-\(proper\-name\);
+保護區 > conservation\-district;
+奧德賽 > the\-odyssey\,\-by\-homer;
+越南語 > vietnamese\-\(language\);
+四年前 > four\-years\-previously;
+製造商 > manufacturing\-company;
+反革命 > counter\-revolutionary;
+老兩口 > an\-old\-married\-couple;
+拜把子 > become\-sworn\-brothers;
+北寒帶 > the\-north\-frigid\-zone;
+八路軍 > the\-eighth\-route\-army;
+南北極 > south\-and\-north\-poles;
+董事長 > chairman\-of\-the\-board;
+不行了 > on\-the\-point\-of\-death;
+卡西尼 > cassini\-\(proper\-name\);
+光磁碟 > magneto\-optical\-disk;
+博覽會 > \(international\)\-fair;
+一般性 > \(in\)\-general\-\(terms\);
+逋逃藪 > refuge\-for\-fugitives;
+白眼珠 > the\-white\-of\-the\-eye;
+捕蟲葉 > insect\-catching\-leaf;
+不雅觀 > offensive\-to\-the\-eye;
+陳述句 > declarative\-sentence;
+這個月 > this\-\(current\)\-month;
+一清早 > early\-in\-the\-morning;
+倍頻器 > frequency\-multiplier;
+領導權 > leadership\-authority;
+紀念日 > day\-of\-commemoration;
+白棉紙 > stencil\-tissue\-paper;
+挪窩兒 > to\-move\-\(to\-a\-house\);
+德國人 > german\-person\|people;
+大清早 > early\-in\-the\-morning;
+百事通 > knowledgeable\-person;
+不死心 > unwilling\-to\-give\-up;
+礦泉水 > mineral\-spring\-water;
+吃不下 > not\-feel\-like\-eating;
+萬維網 > world\-wide\-web\-\(www\);
+實體層 > physical\-layer\-\(osi\);
+現階段 > at\-the\-present\-stage;
+叛國罪 > the\-crime\-of\-treason;
+錦標賽 > championship\-contest;
+競爭力 > competitive\-strength;
+運動會 > a\-sports\-competition;
+跑龍套 > to\-play\-a\-small\-role;
+德雷爾 > \(june\-teufel\)\-dreyer;
+財政部 > ministry\-of\-finance;
+廣告商 > advertising\-company;
+慰安婦 > comfort\-woman\|women;
+折射率 > index\-of\-refraction;
+年代初 > beginning\-of\-an\-age;
+防禦性 > defensive\-\(weapons\);
+打橫炮 > speak\-unwarrantedly;
+發言權 > the\-right\-of\-speech;
+年之久 > period\-of\-\.\.\.\-years;
+不中意 > not\-to\-one''s\-liking;
+百分制 > hundred\-mark\-system;
+分析家 > \(political\)\-analyst;
+立法會 > legislative\-council;
+引力場 > gravitational\-field;
+消耗量 > rate\-of\-consumption;
+核電站 > nuclear\-power\-plant;
+表面化 > come\-to\-the\-surface;
+電話機 > telephone\-equipment;
+總統府 > presidential\-palace;
+橋接器 > bridge\-\(networking\);
+馬來文 > malasian\-\(language\);
+不得了 > desperately\-serious;
+板梁橋 > plate\-girder\-bridge;
+栽跟頭 > to\-suffer\-a\-setback;
+核工程 > nuclear\-engineering;
+安理會 > un\-security\-council;
+擺門面 > keep\-up\-appearances;
+路透社 > reuters\-news\-agency;
+科學院 > academy\-of\-sciences;
+步進制 > step\-by\-step\-system;
+前蘇聯 > former\-soviet\-union;
+不在意 > pay\-no\-attention\-to;
+外孫女 > daughter''s\-daughter;
+冰醋酸 > glacial\-acetic\-acid;
+消炎藥 > antibiotic\-medicine;
+委員長 > head\-of\-a\-committee;
+情報局 > intelligence\-agency;
+包身工 > indentured\-labourer;
+決議案 > \(pass\-a\)\-resolution;
+北京人 > person\-from\-beijing;
+負責任 > responsibility\-for;
+中山裝 > chinese\-tunic\-suit;
+緬甸語 > burmese\-\(language\);
+政治犯 > political\-prisoner;
+年以來 > since\-the\-year\-\.\.\.;
+新華社 > xinhua\-news\-agency;
+不中用 > unfit\-for\-anything;
+進一步 > \(one\-step\)\-further;
+提供商 > provider\-\(company\);
+原蘇聯 > fomer\-soviet\-union;
+天安門 > tiananmen\-\(square\);
+不受理 > reject\-a\-complaint;
+發達國 > developing\-country;
+跑警報 > to\-run\-for\-shelter;
+白開水 > plain\-boiled\-water;
+招待會 > \(press\)\-conference;
+懷俄明 > wyoming\-\(us\-state\);
+卡拉奇 > karachi\-\(pakistan\);
+半規管 > semicircular\-canal;
+馬來語 > malaysian\-language;
+比不上 > can''t\-compare\-with;
+國防部 > defense\-department;
+趕不上 > can''t\-keep\-up\-with;
+拿主意 > to\-make\-a\-decision;
+常委會 > standing\-committee;
+大學生 > university\-student;
+瀏覽器 > browser\-\(software\);
+世紀末 > end\-of\-the\-century;
+擁護者 > supporter\-\(person\);
+國務卿 > secretary\-of\-state;
+半輩子 > half\-of\-a\-lifetime;
+站管理 > station\-management;
+芬蘭語 > finnish\-\(language\);
+變法兒 > try\-different\-ways;
+海空軍 > navy\-and\-air\-force;
+細菌戰 > biological\-warfare;
+瑞典語 > swedish\-\(language\);
+涉嫌人 > \(criminal\)\-suspect;
+併捲機 > ribbon\-lap\-machine;
+別動隊 > special\-detachment;
+研究所 > research\-institute;
+年輕化 > make\-more\-youthful;
+加速器 > accelerator\-\(comp\);
+不等號 > sign\-of\-inequality;
+西半球 > western\-hemisphere;
+核技術 > nuclear\-technology;
+報務員 > telegraph\-operator;
+光波長 > optical\-wavelength;
+喉擦音 > guttural\-fricative;
+八級工 > eight\-grade\-worker;
+佛蒙特 > vermont\-\[us\-state\];
+管理站 > management\-station;
+說不定 > can''t\-say\-for\-sure;
+波斯語 > bosnian\-\(language\);
+儘可能 > as\-far\-as\-possible;
+包承組 > \(responsible\)\-crew;
+百葉箱 > thermometer\-screen;
+避雷器 > lightning\-arrester;
+戰鬥機 > fighter\-\(aircraft\);
+顯示器 > monitor\-\(computer\);
+必修課 > a\-required\-course;
+僅次于 > second\-only\-to\.\.\.;
+朝鮮語 > korean\-\(language\);
+建築業 > building\-industry;
+麥克維 > \(timothy\)\-mcveigh;
+應用層 > application\-layer;
+桌別林 > \(charlie\)\-chaplin;
+蓋爾語 > gaelic\-\(language\);
+無所謂 > to\-be\-indifferent;
+機器人 > mechanical\-person;
+廣域網 > wide\-area\-network;
+維持費 > maintenance\-costs;
+板擦兒 > blackboard\-eraser;
+同性戀 > homosexual\-\(love\);
+電話網 > telephone\-network;
+性騷擾 > sexual\-harassment;
+橫斷物 > transverse\-object;
+白屈菜 > greater\-celandine;
+傳輸率 > transmission\-rate;
+伺服器 > server\-\(computer\);
+服務器 > server\-\(computer\);
+國際法 > international\-law;
+侵截者 > \(computer\)\-hacker;
+初學者 > beginning\-student;
+西王母 > name\-of\-a\-goddess;
+在頭版 > on\-the\-front\-page;
+波蘭語 > polish\-\(language\);
+轟炸機 > bomber\-\(aircraft\);
+醫學家 > medical\-scientist;
+華盛頓 > washington\-\(d\.c\.\);
+丟飯碗 > to\-lose\-one''s\-job;
+比較新 > comparatively\-new;
+電信號 > electrical\-signal;
+秘書長 > secretary\-general;
+歐洲人 > european\-\(person\);
+衛生部 > health\-department;
+太平洋 > the\-pacific\-ocean;
+原因是 > the\-reason\-is\-\.\.\.;
+一年半 > a\-year\-and\-a\-half;
+不甘心 > not\-reconciled\-to;
+客戶機 > client\-\(computer\);
+失業率 > unemployment\-rate;
+警察局 > police\-department;
+歸心者 > religious\-convert;
+沒關係 > it\-doesn''t\-matter;
+包園兒 > buy\-the\-whole\-lot;
+一身汗 > sweating\-all\-over;
+白細胞 > white\-blood\-cell;
+性關係 > sexual\-relations;
+殯儀館 > the\-undertaker''s;
+研討會 > discussion\-forum;
+資料量 > quantity\-of\-data;
+編輯室 > editorial\-office;
+拉丁語 > latin\-\(language\);
+適配層 > adaptation\-layer;
+出風頭 > to\-create\-a\-stir;
+越野車 > off\-road\-vehical;
+適配器 > adapter\-\(device\);
+副主席 > vice\-chairperson;
+捷克語 > czech\-\(language\);
+筆底下 > ability\-to\-write;
+核原料 > nuclear\-material;
+白血球 > white\-blood\-cell;
+不爭氣 > be\-disappointing;
+北冰洋 > the\-arctic\-ocean;
+又來了 > here\-we\-go\-again;
+十多億 > over\-one\-billion;
+一下子 > in\-a\-short\-while;
+核設施 > nuclear\-facility;
+非政府 > non\-governmental;
+主幹線 > backbone\-\(cable\);
+電視機 > television\-\(set\);
+流行病 > epidemic\-disease;
+信用證 > letter\-of\-credit;
+學術界 > academic\-circles;
+衛星城 > \"satellite\"\-town;
+的一種 > is\-one\-\(kind\-of\);
+曼德拉 > \(nelson\)\-mandela;
+印地語 > hindi\-\(language\);
+工業化 > to\-industrialize;
+記者會 > press\-conference;
+出版社 > publishing\-house;
+沖繩島 > okinawa\-\(island\);
+民主黨 > democratic\-party;
+電視劇 > tv\-drama\-program;
+輻射波 > radiation\-\(wave\);
+商業化 > to\-commercialize;
+電腦網 > computer\-network;
+高性能 > high\-performance;
+開幕式 > opening\-ceremony;
+實習生 > intern\-\(student\);
+國賓館 > state\-guesthouse;
+不至於 > cannot\-go\-so\-far;
+百分點 > percentage\-point;
+功能集 > function\-library;
+化學戰 > chemical\-warfare;
+大多數 > \(great\)\-majority;
+菏蘭語 > dutch\-\(language\);
+一年多 > more\-than\-a\-year;
+共和黨 > republican\-party;
+脖頸兒 > back\-of\-the\-neck;
+大無畏 > utterly\-fearless;
+超高速 > ultra\-high\-speed;
+性接觸 > sexual\-encounter;
+拿手菜 > specialty\-\(dish\);
+鼠標器 > mouse\-\(computer\);
+互操性 > interoperability;
+功能群 > functional\-group;
+一輩子 > \(for\)\-a\-lifetime;
+高效率 > high\-efficiency;
+前不久 > not\-long\-before;
+生產隊 > production\-team;
+用戶線 > subscriber\-line;
+美國人 > american\-person;
+看上去 > it\-would\-appear;
+幾十億 > several\-billion;
+不待說 > needless\-to\-say;
+創記錄 > to\-set\-a\-record;
+不名數 > abstract\-number;
+數十億 > several\-billion;
+總經理 > general\-manager;
+數百萬 > several\-million;
+拼起來 > to\-put\-together;
+米粉肉 > rice\-flour\-meat;
+高技術 > high\-technology;
+閉音節 > closed\-syllable;
+虛電路 > virtual\-circuit;
+從去年 > since\-last\-year;
+菲律賓 > the\-philippines;
+本族語 > native\-language;
+絆腳石 > stumbling\-block;
+感染者 > infected\-person;
+多樣化 > diversification;
+網管員 > network\-manager;
+不干涉 > noninterference;
+核武庫 > nuclear\-arsenal;
+中美洲 > central\-america;
+天主教 > catholic\-church;
+金裡奇 > \(newt\)\-gingrich;
+注意看 > watch\-carefully;
+共產黨 > communist\-party;
+不見得 > not\-necessarily;
+賀年片 > new\-year''s\-card;
+標準化 > standardization;
+使滿意 > to\-make\-content;
+不鏽鋼 > stainless\-steel;
+印度人 > indian\-\(person\);
+奧運村 > olympic\-village;
+暗適應 > dark\-adaptation;
+老百姓 > ordinary\-people;
+夫妻店 > family\-run\-shop;
+數字網 > digital\-network;
+兒化韻 > retroflex\-final;
+有聯繫 > to\-be\-connected;
+審判長 > presiding\-judge;
+高效能 > high\-efficiency;
+盜版者 > software\-pirate;
+大部份 > \(in\)\-large\-part;
+冷氣機 > air\-conditioner;
+伊甸園 > garden\-of\-eden;
+成員國 > member\-country;
+釣魚臺 > diaoyu\-islands;
+複韻母 > compound\-final;
+幀太長 > oversize\-frame;
+伴生氣 > associated\-gas;
+物理層 > physical\-layer;
+聯合國 > united\-nations;
+英國人 > british\-person;
+白熱化 > turn\-white\-hot;
+十一月 > eleventh\-month;
+原子核 > atomic\-nucleus;
+把兄弟 > sworn\-brothers;
+北斗星 > the\-big\-dipper;
+開玩笑 > to\-play\-a\-joke;
+審判席 > judgement\-seat;
+白粉病 > powdery\-mildew;
+釣魚島 > diaoyu\-islands;
+古希臘 > ancient\-greece;
+中國人 > chinese\-person;
+監督人 > superintendent;
+順序數 > ordinal\-number;
+電話線 > telephone\-line;
+就是說 > in\-other\-words;
+教育界 > academic\-world;
+不敢當 > you\-flatter\-me;
+副總統 > vice\-president;
+甚至於 > so\-much\-\(that\);
+不平衡 > disequilibrium;
+東南亞 > southeast\-asia;
+採收率 > recovery\-ratio;
+自由化 > liberalization;
+不適用 > not\-applicable;
+簡單化 > simplification;
+鹽湖城 > salt\-lake\-city;
+血製品 > blood\-products;
+凹面鏡 > concave\-mirror;
+開心果 > pistachio\-nuts;
+世界語 > world\-language;
+行星際 > interplanetary;
+中心語 > qualified\-word;
+參謀長 > chief\-of\-staff;
+錄像機 > video\-recorder;
+光信號 > optical\-signal;
+核武器 > nuclear\-weapon;
+達不到 > cannot\-achieve;
+克林頓 > \(bill\)\-clinton;
+聖誕節 > christmas\-time;
+白令海 > the\-bering\-sea;
+摩門經 > book\-of\-mormon;
+尋開心 > to\-make\-fun\-of;
+犯不著 > not\-worthwhile;
+不用謝 > you''re\-welcome;
+半自動 > semi\-automatic;
+內蒙古 > inner\-mongolia;
+退休金 > retirement\-pay;
+留言簿 > visitor''s\-book;
+死亡率 > mortality\-rate;
+哈該書 > book\-of\-haggai;
+擺攤子 > set\-up\-a\-stall;
+瑞士人 > swiss\-\(person\);
+差不多 > almost\,\-nearly;
+括弧裡 > in\-parentheses;
+信號臺 > signal\-station;
+世界上 > \(of\-the\)\-world;
+圓珠筆 > ball\-point\-pen;
+跑腿兒 > to\-run\-errands;
+波狀熱 > undulant\-fever;
+知識庫 > knowledge\-base;
+電信局 > central\-office;
+西南亞 > southwest\-asia;
+撥號盤 > telephone\-dial;
+後兩者 > the\-latter\-two;
+廠禮拜 > day\-off\-\(work\);
+兩百億 > twenty\-billion;
+無連接 > connectionless;
+猜謎兒 > guess\-a\-riddle;
+半以上 > more\-than\-half;
+不客氣 > you''re\-welcome;
+美差事 > a\-terrific\-job;
+諾貝爾 > nobel\-\(prize\);
+保證金 > earnest\-money;
+掛號證 > register\-card;
+原子能 > atomic\-energy;
+紀念館 > memorial\-hall;
+單韻母 > simple\-finals;
+有可能 > it''s\-possible;
+未提及 > not\-mentioned;
+本生燈 > bunsen\-burner;
+心臟病 > heart\-disease;
+十五年 > fifteen\-years;
+鄧小平 > deng\-xiaoping;
+那鴻書 > book\-of\-nahum;
+網絡層 > network\-layer;
+審判欄 > judgement\-bar;
+白花花 > shining\-white;
+建築學 > architectural;
+中國式 > chinese\-style;
+半失業 > semi\-employed;
+表決權 > right\-to\-vote;
+空間站 > space\-station;
+大公司 > large\-company;
+大容量 > high\-capacity;
+楊百翰 > brigham\-young;
+大問題 > great\-problem;
+光功率 > optical\-power;
+權威性 > authoritative;
+女朋友 > female\-friend;
+不周延 > undistributed;
+摁釦兒 > snap\-fastener;
+白皮松 > lacebark\-pine;
+存儲器 > memory\-\(unit\);
+彌迦書 > book\-of\-micah;
+現代化 > modernization;
+主禱文 > lord''s\-prayer;
+好幾年 > several\-years;
+售票處 > ticket\-office;
+六點半 > half\-past\-six;
+無意識 > unconsciously;
+推動力 > driving\-force;
+避風處 > lee\,\-windstop;
+使用量 > volume\-of\-use;
+半導體 > semiconductor;
+駁殼槍 > mauser\-pistol;
+不方便 > inconvenience;
+沒經驗 > inexperienced;
+主日學 > sunday\-school;
+有助于 > contribute\-to;
+有權威 > authoritative;
+三十億 > three\-billion;
+不凍港 > ice\-free\-port;
+步話機 > walkie\-talkie;
+集線器 > hub\-\(network\);
+不舒適 > uncomfortable;
+兩千年 > the\-year\-2000;
+標本蟲 > spider\-beetle;
+進出口 > import\|export;
+向西南 > southwestward;
+售票員 > ticket\-seller;
+售票口 > ticket\-window;
+安定化 > stabilization;
+交換端 > switched\-port;
+不相干 > be\-irrelevant;
+天曉得 > heaven\-knows\!;
+報話機 > walkie\-talkie;
+同盟國 > confederation;
+奧運會 > olympic\-games;
+在未來 > in\-the\-future;
+南美洲 > south\-america;
+七百萬 > seven\-million;
+有良心 > conscientious;
+鼻飼法 > nasal\-feeding;
+約拿書 > book\-of\-jonah;
+步行蟲 > ground\-beetle;
+便步走 > march\-at\-ease;
+連接至 > to\-connect\-to;
+鳶尾花 > iris\-\(flower\);
+半官方 > semi\-official;
+兼容性 > compatibility;
+解壓縮 > to\-decompress;
+採棉機 > cotton\-picker;
+芭蕉扇 > palm\-leaf\-fan;
+公元前 > before\-christ;
+波美度 > baume\-degrees;
+半復賽 > eighth\-finals;
+邊界線 > boundary\-line;
+北美洲 > north\-america;
+核能源 > nuclear\-power;
+支持率 > support\-level;
+試一試 > to\-have\-a\-try;
+越來越 > more\-and\-more;
+下至上 > bottom\-to\-top;
+找不到 > couldn''t\-find;
+很遺憾 > unfortunately;
+萬事達 > master\(card\);
+約珥書 > book\-of\-joel;
+賠償金 > compensation;
+示威者 > demonstrator;
+毛主席 > chairman\-mao;
+建築物 > \(a\)\-building;
+閱覽室 > reading\-room;
+不名譽 > disreputable;
+機械碼 > machine\-code;
+不成功 > unsuccessful;
+水滸傳 > water\-margin;
+不重視 > indifference;
+十九歲 > 19\-years\-old;
+半文盲 > semiliterate;
+丙烯酸 > acrylic\-acid;
+半熟練 > semi\-skilled;
+吃不開 > be\-unpopular;
+不合理 > unreasonable;
+不愉快 > disagreeable;
+養雞場 > chicken\-farm;
+膝上型 > laptop\-\(adj\);
+實際性 > practicality;
+十一年 > eleven\-years;
+相似性 > ressemblance;
+非同步 > asynchronous;
+傳道書 > ecclesiastes;
+發言人 > spokesperson;
+集中器 > concentrator;
+感嘆詞 > interjection;
+足球迷 > football\-fan;
+那樣的 > that\-kind\-of;
+半邊天 > half\-the\-sky;
+葡萄酒 > \(grape\)\-wine;
+農作物 > \(farm\)\-crops;
+四十多 > more\-than\-40;
+證實禮 > confirmation;
+宇航局 > space\-agency;
+去國外 > to\-go\-abroad;
+第二位 > second\-place;
+同時代 > contemporary;
+副總理 > vice\-premier;
+路得記 > book\-of\-ruth;
+多工化 > to\-multiplex;
+三合一 > three\-in\-one;
+四百萬 > four\-million;
+高質量 > high\-quality;
+夢游症 > to\-sleepwalk;
+不結盟 > nonalignment;
+八級風 > force\-8\-wind;
+幼兒園 > kindergarten;
+桔子水 > orange\-juice;
+創造性 > creativeness;
+研究者 > investigator;
+周總理 > premier\-zhou;
+執政黨 > ruling\-party;
+母親節 > mother''s\-day;
+一下兒 > a\-little\-bit;
+不像話 > unreasonable;
+複製品 > reproduction;
+司法權 > jurisdiction;
+佔便宜 > adventageous;
+鼻中隔 > nasal\-septum;
+新聞處 > news\-service;
+運動鞋 > sports\-shoes;
+核轟炸 > nuclear\-bomb;
+轉賬卡 > a\-debit\-card;
+面對面 > face\-to\-face;
+複寫紙 > carbon\-paper;
+不相容 > incompatible;
+打孔器 > hole\-puncher;
+什麼是 > what\-is\-\.\.\.\?;
+凹透鏡 > concave\-lens;
+古羅馬 > ancient\-rome;
+二十萬 > 200\-thousand;
+年輕人 > young\-people;
+乒乓球 > table\-tennis;
+階級式 > hierarchical;
+聽說過 > to\-hear\-said;
+闌尾炎 > appendicitis;
+大一些 > a\-bit\-bigger;
+生物戰 > germ\-warfare;
+建設性 > constructive;
+喉塞音 > glottal\-stop;
+大都會 > metropolitan;
+最低點 > lowest\-point;
+基督教 > christianity;
+安眠酮 > methaqualone;
+試驗性 > experimental;
+貴族化 > aristocratic;
+五百萬 > five\-million;
+冰洲石 > iceland\-spar;
+核軍備 > nuclear\-arms;
+速記員 > stenographer;
+白水泥 > white\-cement;
+象聲詞 > onomatopoeia;
+幀格式 > frame\-format;
+衛生紙 > toilet\-paper;
+當時的 > of\-that\-time;
+消防栓 > fire\-hydrant;
+透明度 > transparency;
+壓倒性 > overwhelming;
+二十七 > twenty\-seven;
+大規模 > large\-scale;
+度量衡 > measurement;
+航空術 > aeronautics;
+訪問者 > interviewer;
+好朋友 > good\-friend;
+四面體 > tetrahedron;
+拔釘錘 > claw\-hammer;
+申命記 > deuteronomy;
+才外流 > brain\-drain;
+創作力 > originality;
+白矮星 > white\-dwarf;
+不贊成 > disapproval;
+半月刊 > semimonthly;
+備用環 > backup\-ring;
+滴答聲 > tick\-\(tock\);
+溫度計 > thermograph;
+不重要 > unimportant;
+有影響 > influential;
+發電廠 > power\-plant;
+柏林牆 > berlin\-wall;
+巡邏艇 > patrol\-boat;
+不含糊 > unambiguous;
+本土化 > to\-localize;
+安全燈 > safety\-lamp;
+有意思 > interesting;
+窗玻璃 > window\-pane;
+新西蘭 > new\-zealand;
+敗血症 > septicaemia;
+分佈式 > distrubuted;
+有些人 > some\-people;
+不吐氣 > unaspirated;
+有經驗 > experienced;
+男朋友 > male\-friend;
+白皮書 > white\-paper;
+翻譯者 > interpreter;
+不注意 > thoughtless;
+保不住 > most\-likely;
+巴哈馬 > the\-bahamas;
+發送器 > transmitter;
+第一章 > chapter\-one;
+連環圖 > comic\-strip;
+在地下 > underground;
+傳真機 > fax\-machine;
+裝甲車 > armored\-car;
+獲益者 > beneficiary;
+半透明 > translucent;
+第一流 > first\-class;
+謀殺案 > murder\-case;
+獎學金 > scholarship;
+不動產 > real\-estate;
+啟示錄 > revelations;
+第三方 > third\-party;
+表蒙子 > watch\-glass;
+擺架子 > put\-on\-airs;
+不確定 > uncertainty;
+古典派 > classicists;
+可行性 > feasibility;
+合法化 > to\-legalize;
+探照燈 > searchlight;
+安寧片 > meprobamate;
+是不是 > is\-or\-isn''t;
+多工器 > multiplexer;
+勞動力 > labor\-force;
+語言學 > linguistics;
+幸運兒 > a\-lucky\-guy;
+本質上 > essentially;
+地下水 > groundwater;
+申請書 > application;
+教育性 > instructive;
+繼承權 > inheritance;
+製片人 > moviemaking;
+不要緊 > unimportant;
+敗家子 > spendthrift;
+局限性 > limitations;
+售貨員 > salesperson;
+可尊敬 > respectable;
+非數字 > non\-numeric;
+爆米花 > puffed\-rice;
+三十天 > thirty\-days;
+茅屋頂 > thatch\-roof;
+三十四 > thirty\-four;
+不送氣 > unaspirated;
+性伴侶 > sex\-partner;
+乳白色 > milky\-white;
+殺人案 > murder\-case;
+蓋然性 > probability;
+可能性 > possibility;
+房地產 > real\-estate;
+登山家 > mountaineer;
+哲學家 > philosopher;
+分散式 > distributed;
+系列片 > film\-series;
+阿富汗 > afghanistan;
+洛杉磯 > los\-angeles;
+陰涼處 > shady\-place;
+伸縮性 > flexibility;
+閉元音 > close\-vowel;
+最大化 > to\-maximize;
+第十七 > seventeenth;
+哲學上 > philosophic;
+否有效 > inefficient;
+北朝鮮 > north\-korea;
+靈活性 > flexibility;
+使信服 > to\-convince;
+口香糖 > chewing\-gum;
+西乃山 > mount\-sinai;
+金屬板 > metal\-plate;
+不做聲 > keep\-silent;
+兩百萬 > two\-million;
+修理廠 > repair\-shop;
+機動性 > flexibility;
+增長率 > growth\-rate;
+介系詞 > preposition;
+主機板 > motherboard;
+他們都 > all\-of\-them;
+類似點 > resemblance;
+雙人房 > double\-room;
+美術館 > art\-gallery;
+連接詞 > conjunction;
+約伯記 > book\-of\-job;
+悲喜劇 > tragicomedy;
+軟磁碟 > floppy\-disk;
+半封建 > semi\-feudal;
+實質性 > substantive;
+軟磁盤 > floppy\-disk;
+變壓器 > transformer;
+蘋果汁 > apple\-juice;
+暗記兒 > secret\-mark;
+配送者 > distributor;
+金銀花 > honeysuckle;
+元老院 > upper\-house;
+可想像 > conceivable;
+證明書 > certificate;
+信用卡 > credit\-card;
+女管家 > housekeeper;
+工程學 > engineering;
+有害的 > destructive;
+天然氣 > natural\-gas;
+供血者 > blood\-donor;
+營養品 > nourishment;
+適應性 > suitability;
+天文台 > observatory;
+鑿石場 > rock\-quarry;
+小汽車 > compact\-car;
+螺絲刀 > screwdriver;
+副作用 > side\-effect;
+二十億 > two\-billion;
+移植性 > portability;
+二十五 > twenty\-five;
+沒問題 > no\-problem;
+第五類 > category\-5;
+非官方 > unofficial;
+國民黨 > kuomintang;
+白色體 > leucoplast;
+不耐煩 > impatience;
+百分率 > percentage;
+令牌環 > token\-ring;
+自白書 > confession;
+展覽會 > exhibition;
+高速率 > high\-speed;
+大城市 > major\-city;
+喬治敦 > georgetown;
+百分比 > percentage;
+傳道者 > missionary;
+不可能 > impossible;
+錄音帶 > audio\-tape;
+錫安山 > mount\-zion;
+硬磁盤 > hard\-drive;
+百分數 > percentage;
+歷史上 > historical;
+記帳員 > bookkeeper;
+使失望 > disappoint;
+承包人 > contractor;
+物質上 > materially;
+半公開 > semi\-overt;
+使免除 > get\-rid\-of;
+更衣室 > changeroom;
+超媒體 > hypermedia;
+不明確 > indefinite;
+不景氣 > depression;
+資本家 > capitalist;
+二手貨 > secondhand;
+傳教士 > missionary;
+易接近 > accessible;
+想像力 > conception;
+有決心 > determined;
+橄欖樹 > olive\-tree;
+爭論點 > contention;
+複雜性 > complexity;
+奶牛場 > dairy\-farm;
+字節數 > byte\-count;
+出生地 > birthplace;
+不下于 > as\-many\-as;
+大媒體 > macromedia;
+備忘錄 > memorandum;
+挨個兒 > one\-by\-one;
+兄弟會 > fraternity;
+留聲機 > gramophone;
+黑莓子 > blackberry;
+統計學 > statistics;
+在下面 > underneath;
+不變化 > invariably;
+陌生人 > a\-stranger;
+不適當 > inadequate;
+電視臺 > tv\-station;
+主力艦 > battleship;
+行不通 > won''t\-work;
+競爭者 > competitor;
+有系統 > systematic;
+短時間 > short\-term;
+沒人住 > unoccupied;
+動物學 > zoological;
+盧森堡 > luxembourg;
+第七十 > seventieth;
+冰凝器 > cryophorus;
+心理學 > psychology;
+氣喘喘 > breathless;
+第一例 > first\-case;
+摩天摟 > skyscraper;
+不透水 > waterproof;
+得不到 > cannot\-get;
+重要性 > importance;
+技術員 > technician;
+非正式 > unofficial;
+周恩來 > zhou\-enlai;
+有興趣 > interested;
+不經意 > carelessly;
+打字機 > typewriter;
+倍增器 > multiplier;
+金屬線 > metal\-wire;
+有膽量 > courageous;
+識別號 > identifier;
+生有權 > birthright;
+持卡人 > cardholder;
+刺繡品 > embroidery;
+毛澤東 > mao\-zedong;
+六十五 > sixty\-five;
+多媒體 > multimedia;
+不平常 > remarkable;
+抵抗力 > resistance;
+大主教 > archbishop;
+試算表 > speadsheet;
+白口鐵 > white\-iron;
+第十八 > eighteenth;
+實驗室 > laboratory;
+第十九 > nineteenth;
+第十三 > thirteenth;
+機關車 > locomotive;
+保潔箱 > litter\-bin;
+老年人 > old\-people;
+發聲法 > intonation;
+識別碼 > identifier;
+不平凡 > marvellous;
+崑崙山 > mt\.\-kunlun;
+代表團 > delegation;
+影像檔 > image\-file;
+居住者 > inhabitant;
+傳染病 > pestilence;
+符記環 > token\-ring;
+四百億 > 40\-billion;
+盧浮宮 > the\-louvre;
+否決權 > veto\-power;
+崇拜者 > worshipper;
+戲劇化 > theatrical;
+啄木鳥 > woodpecker;
+非盈利 > non\-profit;
+使容易 > facilitate;
+研究員 > researcher;
+目擊者 > eyewitness;
+專門化 > specialize;
+摩托車 > motorcycle;
+按手禮 > ordination;
+訂購者 > subscriber;
+顯微鏡 > microscope;
+原生質 > protoplasm;
+多方面 > many\-sided;
+會長團 > presidency;
+新聞學 > journalism;
+不定詞 > infinitive;
+大氣層 > atmosphere;
+不簡單 > not\-simple;
+受傷害 > be\-injured;
+端系統 > end\-system;
+代替者 > substitute;
+三百億 > 30\-billion;
+非對稱 > asymmetric;
+無煙煤 > anthracite;
+半決賽 > semifinals;
+莫須有 > groundless;
+不買賬 > not\-buy\-it;
+女學生 > schoolgirl;
+不自在 > uneasiness;
+下個月 > next\-month;
+鏈路層 > link\-layer;
+不由得 > can''t\-help;
+溫和性 > tenderness;
+所有者 > proprietor;
+上個月 > last\-month;
+半空中 > in\-mid\-air;
+不等式 > inequality;
+暗間兒 > inner\-room;
+自動化 > automation;
+單方面 > unilateral;
+運動場 > playground;
+附加物 > complement;
+佛教徒 > a\-buddhist;
+操舵室 > pilothouse;
+電唱機 > phonograph;
+流程圖 > flow\-chart;
+監督者 > supervisor;
+所有物 > belongings;
+二十一 > twenty\-one;
+穩定性 > stability;
+連接器 > connector;
+形容辭 > adjective;
+可得到 > available;
+科學家 > scientist;
+志願者 > volunteer;
+擦邊球 > edge\-ball;
+怎麼樣 > how\-about;
+所有權 > ownership;
+白報紙 > newsprint;
+討論會 > symposium;
+接受者 > recipient;
+形容詞 > adjective;
+每個人 > everybody;
+不育性 > sterility;
+檢查員 > inspector;
+表現型 > phenotype;
+皮鞋匠 > shoemaker;
+保護者 > protector;
+偽君子 > hypocryte;
+聲明書 > statement;
+馬蹄鐵 > horseshoe;
+擔架床 > stretcher;
+不完善 > imperfect;
+晴雨表 > barometer;
+千禧年 > millenium;
+使蔓延 > to\-spread;
+接班人 > successor;
+剪貼簿 > scrapbook;
+偉晶岩 > pegmatite;
+指示符 > indicator;
+保惠師 > comforter;
+建築師 > architect;
+委員會 > committee;
+航海者 > navigator;
+小吃店 > snack\-bar;
+維士卡 > visa\-card;
+好奇心 > curiosity;
+政治性 > political;
+滑鼠墊 > mouse\-pad;
+拜物教 > fetishism;
+低速率 > low\-speed;
+政治局 > politburo;
+零售商 > tradesman;
+政治家 > statesman;
+安全帶 > seat\-belt;
+登廣告 > advertise;
+有活力 > energetic;
+香檳酒 > champagne;
+綜合性 > synthesis;
+摁釘兒 > thumbtack;
+文具商 > stationer;
+新加坡 > singapore;
+領事館 > consulate;
+超聯結 > hyperlink;
+保皇黨 > royalists;
+東北方 > northeast;
+好萊塢 > hollywood;
+持久性 > constancy;
+白血病 > leukaemia;
+全世界 > worldwide;
+繼承者 > successor;
+抗議者 > protester;
+衣帽間 > cloakroom;
+一匹馬 > one\-horse;
+有時候 > sometimes;
+候選人 > candidate;
+向北地 > northward;
+下決心 > determine;
+保證人 > guarantor;
+上星期 > last\-week;
+第二十 > twentieth;
+睡過頭 > oversleep;
+利未記 > leviticus;
+童子軍 > boy\-scout;
+四十六 > forty\-six;
+第九十 > ninetieth;
+車前燈 > headlight;
+宇航員 > astronaut;
+使困窘 > embarrass;
+巧克力 > chocolate;
+有雄心 > ambitious;
+處理器 > processor;
+知更鳥 > redbreast;
+啟示者 > revelator;
+第三十 > thirtieth;
+白鎢礦 > scheelite;
+手提包 > \(hand\)bag;
+技術性 > technical;
+不誠實 > dishonest;
+豌豆粥 > pea\-gruel;
+變流器 > converter;
+潛水艇 > submarine;
+扳道員 > pointsman;
+繼任者 > successor;
+兩星期 > fortnight;
+格式化 > to\-format;
+採石場 > stone\-pit;
+加勒比 > caribbean;
+電報機 > telegraph;
+工作表 > worksheet;
+暴風雪 > snowstorm;
+暴風雨 > rainstorm;
+文字檔 > text\-file;
+貿易戰 > trade\-war;
+保証人 > guarantor;
+奉承者 > flatterer;
+指揮者 > conductor;
+參考書 > reference;
+針對性 > direction;
+半衰期 > half\-life;
+拉斐特 > lafayette;
+要不然 > otherwise;
+不結果 > fruitless;
+申請人 > applicant;
+出版者 > publisher;
+本星期 > this\-week;
+怪不得 > no\-wonder;
+創造力 > ingenuity;
+可容忍 > tolerable;
+基本上 > basically;
+稻草人 > scarecrow;
+多用戶 > multiuser;
+羽毛球 > badminton;
+救護車 > ambulance;
+第十六 > sixteenth;
+使生氣 > displease;
+不公正 > injustice;
+光射線 > light\-ray;
+外國人 > foreigner;
+第十五 > fifteenth;
+阿根廷 > argentina;
+偽善者 > hypocrite;
+螺旋槳 > propeller;
+貯水處 > reservoir;
+半流體 > semifluid;
+征服者 > conqueror;
+捕鼠器 > mousetrap;
+變色龍 > chameleon;
+對抗者 > adversary;
+薄油層 > oil\-sheet;
+無知覺 > senseless;
+氣壓計 > barometer;
+白云母 > muscovite;
+彫刻品 > sculpture;
+新聞界 > the\-press;
+一千噸 > 1000\-tons;
+不規則 > irregular;
+波狀雲 > undulatus;
+擴音器 > megaphone;
+不見了 > disappear;
+九月份 > september;
+超文本 > hypertext;
+讀書人 > a\-scholar;
+指揮官 > commander;
+引用句 > quotation;
+千赫茲 > kilohertz;
+八倍體 > octoploid;
+被禁止 > forbidden;
+不自然 > unnatural;
+高科技 > high\-tech;
+怪物似 > monstrous;
+冰棍兒 > ice\-lolly;
+白班兒 > day\-shift;
+星期三 > wednesday;
+野蠻人 > barbarian;
+十字軍 > crusaders;
+法國人 > frenchman;
+五千噸 > 5000\-tons;
+遇難船 > shipwreck;
+出席者 > attendant;
+羊皮紙 > parchment;
+反艦艇 > anti\-ship;
+內衣褲 > underwear;
+必需品 > necessity;
+冰淇淋 > ice\-cream;
+石灰石 > limestone;
+修道院 > monastery;
+西北方 > northwest;
+望遠鏡 > telescope;
+超文件 > hypertext;
+擺設兒 > ornaments;
+太好了 > very\-good;
+本年度 > this\-year;
+心靈上 > spiritual;
+天文學 > astronomy;
+巴比妥 > barbitone;
+實質上 > virtually;
+有節制 > temperate;
+有意識 > conscious;
+受害者 > casulties;
+不完美 > defective;
+情緒化 > emotional;
+支持者 > supporter;
+數不盡 > countless;
+借書單 > book\-slip;
+有禮貌 > courteous;
+第八十 > eightieth;
+里程碑 > milestone;
+不情願 > unwilling;
+下定義 > to\-define;
+對不起 > i''m\-sorry;
+假象牙 > celluloid;
+降落傘 > parachute;
+不育症 > sterility;
+必要性 > necessity;
+數不清 > countless;
+購買者 > purchaser;
+大教堂 > cathedral;
+組織者 > organizer;
+聖迭哥 > san\-diego;
+長方形 > rectangle;
+生殖力 > fertility;
+灰獵犬 > greyhound;
+習慣性 > customary;
+白內障 > cataract;
+大篷車 > schooner;
+監護人 > guardian;
+不合適 > improper;
+觀察者 > observer;
+藥劑士 > druggist;
+不信任 > mistrust;
+因特網 > internet;
+對稱性 > symmetry;
+檢測器 > detector;
+魔術師 > magician;
+不朽的 > immortal;
+歷史性 > historic;
+檸檬水 > lemonade;
+以太網 > ethernet;
+負重擔 > burdened;
+探測器 > detector;
+十二月 > december;
+擦網球 > net\-ball;
+聖保羅 > st\.\-paul;
+西裡爾 > cyrillic;
+女孩兒 > daughter;
+有德行 > virtuous;
+可擦寫 > erasable;
+牧羊者 > shepherd;
+最喜愛 > favorite;
+筆記本 > notebook;
+薰衣草 > lavender;
+不必要 > needless;
+請願書 > petition;
+投資者 > investor;
+寄生物 > parasite;
+肯塔基 > kentucky;
+柬埔寨 > cambodia;
+一小時 > one\-hour;
+人行道 > sidewalk;
+安全性 > security;
+再保証 > reassure;
+政治學 > politics;
+觀察家 > observer;
+雞尾酒 > cocktail;
+橄欖球 > football;
+平底鍋 > saucepan;
+紀念碑 > monument;
+侵入者 > intruder;
+改革者 > reformer;
+手提箱 > suitcase;
+不同意 > disagree;
+共和國 > republic;
+棒磨機 > rod\-mill;
+比目魚 > flatfish;
+大屠殺 > massacre;
+小夜曲 > serenade;
+小標題 > subtitle;
+有機體 > organism;
+死衚衕 > dead\-end;
+交響曲 > symphony;
+時間表 > schedule;
+頭向前 > headlong;
+探險者 > explorer;
+受難者 > sufferer;
+巴拉圭 > paraguay;
+第一步 > step\-one;
+調味汁 > dressing;
+數據庫 > database;
+債權人 > creditor;
+弟兄們 > brethren;
+小說家 > novelist;
+第五十 > fiftieth;
+三明治 > sandwich;
+催化劑 > catalyst;
+消費者 > consumer;
+牧羊人 > shepherd;
+有彈性 > flexible;
+經陸路 > overland;
+在戶外 > outdoors;
+擦棒球 > foul\-tip;
+中世紀 > medieval;
+傾聽者 > listener;
+接收器 > receiver;
+資料庫 > database;
+殺人犯 > murderer;
+葡萄牙 > portugal;
+不正常 > abnormal;
+內部網 > intranet;
+不透氣 > airtight;
+暖氣機 > radiator;
+阿肯色 > arkansas;
+教科書 > textbook;
+鼓吹者 > advocate;
+地下室 > basement;
+大肚子 > pregnant;
+不過意 > be\-sorry;
+冒犯者 > offender;
+保真度 > fidelity;
+不體面 > shameful;
+小衝突 > skirmish;
+排水渠 > drainage;
+麻醉劑 > narcotic;
+被侵害 > stricken;
+計算機 > computer;
+白木耳 > tremella;
+獨裁者 > dictator;
+記錄員 > recorder;
+蘇格蘭 > scotland;
+葡萄園 > vineyard;
+使興奮 > exciting;
+第十一 > eleventh;
+方程式 > equation;
+無線電 > wireless;
+彫刻家 > sculptor;
+工商界 > industry;
+阿托品 > atropine;
+地區性 > regional;
+裝飾物 > ornament;
+三角形 > triangle;
+誘拐者 > abductor;
+戲劇性 > dramatic;
+懲罰性 > punitive;
+八角楓 > alangium;
+北海道 > hokkaido;
+低成本 > low\-cost;
+明信片 > postcard;
+救贖主 > redeemer;
+生命力 > vitality;
+所在地 > location;
+產量多 > fruitful;
+看守者 > watchman;
+佔領者 > occupant;
+暗地裡 > secretly;
+低費用 > low\-cost;
+使吃驚 > astonish;
+幸存者 > survivor;
+使駭怕 > frighten;
+櫻花草 > primrose;
+星期四 > thursday;
+決定性 > decisive;
+日耳曼 > germanic;
+幾何學 > geometry;
+傾向於 > prone\-to;
+生還者 > survivor;
+星期六 > saturday;
+防守者 > defender;
+有價值 > valuable;
+刺激物 > stimulus;
+不信用 > distrust;
+提供諸 > provider;
+工程師 > engineer;
+中繼器 > repeater;
+洋琵琶 > mandolin;
+惡作劇 > mischief;
+子午線 > meridian;
+製作者 > producer;
+不在乎 > not\-mind;
+音樂家 > musician;
+使麻痺 > paralyze;
+千字節 > kilobyte;
+變阻器 > theostat;
+女房東 > landlady;
+不值得 > unworthy;
+提供者 > supplier;
+堅固性 > firmness;
+白化病 > albinism;
+第六十 > sixtieth;
+文明化 > civilize;
+外交官 > diplomat;
+白雲石 > dolomite;
+使習慣 > accustom;
+冰晶石 > cryolite;
+不小心 > heedless;
+富色彩 > colorful;
+納稅人 > taxpayer;
+再出現 > reappear;
+靠背椅 > armchair;
+操作者 > operator;
+全國性 > national;
+絲狀物 > filament;
+發明家 > inventor;
+藥劑師 > druggist;
+不怎麼 > not\-very;
+大西洋 > atlantic;
+看得見 > visible;
+有資格 > entitle;
+圓石頭 > boulder;
+奧地利 > austria;
+傳道部 > mission;
+創世紀 > genesis;
+千位元 > kilobit;
+揚聲器 > speaker;
+管理員 > manager;
+老資格 > veteran;
+金銀塊 > bullion;
+沙丁魚 > sardine;
+出納員 > cashier;
+愛遊玩 > playful;
+鋼琴家 > pianist;
+計數者 > counter;
+解剖學 > anatomy;
+有學問 > learned;
+半吊子 > dabbler;
+天花板 > ceiling;
+大盤子 > platter;
+不能不 > have\-to;
+出入口 > gateway;
+起皺紋 > shrivel;
+油光漆 > varnish;
+托兒所 > nursery;
+艷紅色 > crimson;
+特許狀 > charter;
+拖曳機 > tractor;
+預言家 > prophet;
+背叛者 > traitor;
+大使館 > embassy;
+大草原 > prairie;
+物理學 > physics;
+不聽命 > disobey;
+索馬裡 > somalia;
+廣播網 > network;
+巴格達 > baghdad;
+銀行業 > banking;
+手推車 > trolley;
+勞動者 > laborer;
+美洲豹 > panther;
+花崗石 > granite;
+在其中 > therein;
+不合法 > illegal;
+梵帝岡 > vatican;
+同義字 > synonym;
+愛國者 > patriot;
+女主人 > hostess;
+白榴石 > leucite;
+你自己 > thyself;
+自由派 > liberal;
+螢火蟲 > firefly;
+百分之 > percent;
+鬆緊帶 > elastic;
+寄宿生 > boarder;
+受歡迎 > popular;
+飛機場 > airport;
+計數器 > counter;
+實際上 > in\-fact;
+反應堆 > reactor;
+異教徒 > heathen;
+外邦人 > gentile;
+移民者 > migrant;
+不吉利 > ominous;
+創造者 > creator;
+熔礦爐 > furnace;
+女英雄 > heroine;
+內羅畢 > nairobi;
+叛逆者 > traitor;
+使高貴 > dignify;
+地質學 > geology;
+關鍵詞 > keyword;
+巴松管 > bassoon;
+布隆迪 > burundi;
+充電器 > charger;
+蒙大拿 > montana;
+炭疽病 > anthrax;
+史密特 > schmitt;
+富士通 > fujitsu;
+烹調術 > cookery;
+印刷者 > printer;
+混合物 > mixture;
+阿克倫 > acheron;
+無神論 > atheism;
+不動搖 > unmoved;
+隱藏處 > shelter;
+押沙龍 > absalom;
+催眠曲 > lullaby;
+牛頭犬 > bulldog;
+使魔法 > conjure;
+吹口哨 > whistle;
+安乃近 > analgin;
+蛋白質 > protein;
+芝加哥 > chicago;
+八帶魚 > octopus;
+洗衣店 > laundry;
+不得勁 > awkward;
+半瓶醋 > dabbler;
+長頸鹿 > giraffe;
+女高音 > soprano;
+比利時 > belgium;
+不調和 > discord;
+有陰影 > shadowy;
+指關節 > knuckle;
+平常日 > weekday;
+儲藏室 > storage;
+匈牙利 > hungary;
+墓誌銘 > epitaph;
+一會兒 > a\-while;
+不道德 > immoral;
+烏克蘭 > ukraine;
+在室內 > indoors;
+不離兒 > not\-bad;
+白蛋白 > albumin;
+主席臺 > rostrum;
+類固醇 > steroid;
+評議會 > council;
+有希望 > hopeful;
+傷寒症 > typhoid;
+到那裡 > thither;
+養老金 > pension;
+睡眠者 > sleeper;
+喘吁吁 > to\-blow;
+小冊子 > booklet;
+未武裝 > unarmed;
+帶紅色 > reddish;
+合夥人 > partner;
+有幫助 > helpful;
+阿拉伯 > arabian;
+阿拉丁 > aladdin;
+不覺察 > unaware;
+甘藍菜 > cabbage;
+女修道 > convent;
+發現物 > finding;
+在下方 > beneath;
+蒸汽機 > steamer;
+小瀑布 > cascade;
+第十二 > twelfth;
+巴不得 > anxious;
+未決定 > pending;
+旅遊者 > tourist;
+受託人 > trustee;
+見證人 > witness;
+石南屬 > heather;
+圖書館 > library;
+薄烤餅 > pancake;
+毒草名 > hemlock;
+地平線 > horizon;
+她自己 > herself;
+使孤立 > isolate;
+矮壯素 > cycocel;
+向何處 > whither;
+籃板球 > rebound;
+聽得見 > audible;
+做禱告 > to\-pray;
+百慕大 > bermuda;
+有條紋 > striped;
+安息日 > sabbath;
+不倒翁 > tumbler;
+裁紙機 > trimmer;
+一部分 > portion;
+懷敵意 > hostile;
+創立者 > founder;
+維他命 > vitamin;
+裝置物 > fixture;
+參議員 > senator;
+印表機 > printer;
+星期二 > tuesday;
+音樂會 > concert;
+體育場 > stadium;
+愛爾蘭 > ireland;
+逃亡者 > runaway;
+咯咯笑 > chuckle;
+生物學 > biology;
+戰鬥者 > fighter;
+使憤慨 > outrage;
+居住於 > inhabit;
+打印機 > printer;
+使憤怒 > provoke;
+彌賽亞 > messiah;
+沒甚麼 > nothing;
+煙灰缸 > ashtray;
+深紅色 > scarlet;
+不在了 > be\-dead;
+紡織品 > textile;
+代名詞 > pronoun;
+不濟事 > no\-good;
+開拓者 > pioneer;
+不人道 > inhuman;
+被沒收 > forfeit;
+路西弗 > lucifer;
+化學家 > chemist;
+訓練者 > trainer;
+清潔器 > cleaner;
+愛德玲 > adeline;
+迫切性 > urgency;
+女演員 > actress;
+桌上型 > desktop;
+巴比倫 > babylon;
+嬰兒期 > infancy;
+百葉窗 > shutter;
+避彈坑 > foxhole;
+有才幹 > capable;
+脫衣服 > undress;
+觀光客 > tourist;
+運動家 > athlete;
+業餘者 > amateur;
+金字塔 > pyramid;
+他自己 > himself;
+定居者 > settler;
+二十多 > over\-20;
+收留所 > barrack;
+毛毛雨 > drizzle;
+運動員 > athlete;
+燕麥粥 > oatmeal;
+標語牌 > placard;
+自行車 > bicycle;
+民數記 > numbers;
+小斑點 > speckle;
+使厭煩 > disgust;
+艾迪生 > addison;
+士師記 > judges;
+護送者 > escort;
+發電機 > dynamo;
+穆斯林 > muslim;
+開車人 > driver;
+嘶啞聲 > hoarse;
+拔尖兒 > tiptop;
+管理人 > keeper;
+黃鼠狼 > weasel;
+有人情 > humane;
+西紅柿 > tomato;
+電影院 > cinema;
+小妖精 > goblin;
+金絲雀 > canary;
+動名詞 > gerund;
+競賽者 > player;
+編年史 > annals;
+缺氧症 > anoxia;
+大地洞 > cavern;
+滑翔機 > glider;
+殘餘物 > litter;
+有責任 > liable;
+孩子氣 > boyish;
+小牝牛 > heifer;
+跑步者 > runner;
+吐綬雞 > turkey;
+跨接器 > jumper;
+負擔者 > bearer;
+合唱團 > chorus;
+領導者 > leader;
+曲棍球 > hockey;
+路由器 > router;
+父母親 > parent;
+化妝品 > makeup;
+急促聲 > patter;
+使硬化 > harden;
+交易者 > dealer;
+日內瓦 > geneva;
+銀行家 > banker;
+植物學 > botany;
+紀念獎 > trophy;
+偽造的 > forged;
+第二次 > second;
+鵝卵石 > pebble;
+有氣派 > lordly;
+債務人 > debtor;
+畫眉鳥 > thrush;
+小碟子 > saucer;
+舞蹈家 > dancer;
+叮噹聲 > tinkle;
+使濕透 > drench;
+批評家 > critic;
+在深處 > deeply;
+勝利者 > victor;
+蹺蹺板 > seesaw;
+磨坊主 > miller;
+有關連 > relate;
+多樹木 > wooded;
+吱吱聲 > squeak;
+未完成 > undone;
+魔賽克 > mosaic;
+強有力 > strong;
+烏干達 > uganda;
+不確實 > untrue;
+辦公室 > office;
+羅馬書 > romans;
+服務員 > waiter;
+蜘蛛網 > cobweb;
+阿米巴 > amoeba;
+修補匠 > tinker;
+大理石 > marble;
+持有人 > holder;
+撒哈拉 > sahara;
+大鐮刀 > scythe;
+濾波器 > filter;
+娛樂場 > resort;
+使高興 > please;
+最年長 > eldest;
+醃黃瓜 > pickle;
+收割者 > reaper;
+杜鵑鳥 > cuckoo;
+打噴嚏 > sneeze;
+螺旋鉗 > wrench;
+參議院 > senate;
+領導人 > leader;
+變形蟲 > amoeba;
+任何人 > anyone;
+有道德 > chaste;
+藝術家 > artist;
+頂樑柱 > pillar;
+使膨脹 > dilate;
+小提琴 > fiddle;
+懶洋洋 > lazily;
+馬戲團 > circus;
+高腳杯 > goblet;
+馬鈴薯 > potato;
+使轉向 > divert;
+沒有人 > nobody;
+博物館 > museum;
+使困擾 > harass;
+禮拜堂 > chapel;
+不透明 > opaque;
+它本身 > itself;
+扁桃體 > tonsil;
+排水溝 > gutter;
+正方形 > square;
+可信任 > trusty;
+文學家 > writer;
+移動式 > mobile;
+到此處 > hither;
+殖民地 > colony;
+墨西哥 > mexico;
+清真寺 > mosque;
+辦事處 > office;
+安哥拉 > angola;
+以色列 > israel;
+釘書針 > staple;
+照相機 > camera;
+紡織者 > weaver;
+斯拉夫 > slavic;
+俄羅斯 > russia;
+裁縫師 > tailor;
+弓箭手 > archer;
+塞爾特 > celtic;
+女舍監 > matron;
+打字員 > typist;
+星期日 > sunday;
+葡萄乾 > raisin;
+我自己 > myself;
+大步走 > stride;
+不公平 > unfair;
+芭蕾舞 > ballet;
+評論家 > critic;
+伯利茲 > belize;
+螺旋形 > spiral;
+比較少 > lesser;
+在此處 > herein;
+被害人 > victim;
+阿波羅 > apollo;
+使耳聾 > deafen;
+義賣會 > bazaar;
+星期天 > sunday;
+工作室 > studio;
+門外漢 > layman;
+在附近 > nearby;
+塗油於 > anoint;
+雜貨商 > grocer;
+維吾爾 > uighur;
+英雄式 > heroic;
+理髮師 > barber;
+起泡沫 > seethe;
+星期五 > friday;
+星期一 > monday;
+巴爾干 > balkan;
+格格笑 > giggle;
+孟加拉 > bengal;
+土耳其 > turkey;
+白蘭地 > brandy;
+愛德華 > edward;
+半中腰 > middle;
+白乾兒 > spirit;
+典獄長 > warden;
+看不見 > unseen;
+使作嘔 > sicken;
+恐水病 > rabies;
+加﹍於 > impose;
+橡皮搽 > eraser;
+波士頓 > boston;
+經紀人 > broker;
+紅蘿蔔 > carrot;
+悄悄地 > gently;
+避難所 > refuge;
+白麵兒 > heroin;
+飼養者 > feeder;
+巴斯克 > basque;
+莫斯科 > moscow;
+月桂樹 > laurel;
+門診室 > clinic;
+微薄的 > meagre;
+小淘氣 > rascal;
+攝影機 > camera;
+起訴者 > suitor;
+巴拿馬 > panama;
+捕鯨船 > whaler;
+演說者 > orator;
+擺樣子 > do\-sth;
+幾乎不 > hardly;
+加拿大 > canada;
+醫務所 > clinic;
+十字架 > cross;
+代理人 > agent;
+驅動器 > drive;
+獨木舟 > canoe;
+條板箱 > crate;
+陳列臺 > stall;
+講解員 > guide;
+泥水匠 > mason;
+植物群 > flora;
+在高處 > aloft;
+撐竿跳 > vault;
+頭蓋骨 > skull;
+敘利亞 > syria;
+紫丁香 > lilac;
+不新鮮 > stale;
+大農場 > ranch;
+多水分 > juicy;
+呼叫器 > pager;
+下水道 > sewer;
+從來不 > never;
+二極管 > diode;
+競技場 > arena;
+麥阿密 > miami;
+休息室 > lobby;
+球狀物 > globe;
+對敵者 > rival;
+冬青樹 > holly;
+果子凍 > jelly;
+大地圖 > atlas;
+成年者 > adult;
+雅各書 > james;
+英代爾 > intel;
+毛茸茸 > hairy;
+使煩惱 > worry;
+尼日爾 > niger;
+收音機 > radio;
+第三次 > third;
+招待員 > usher;
+第一次 > first;
+意大利 > italy;
+水平面 > plane;
+亞麻布 > linen;
+溜冰鞋 > skate;
+作哼聲 > snort;
+製造者 > maker;
+無生命 > inert;
+酪農業 > dairy;
+水蒸氣 > vapor;
+像片簿 > album;
+贈與者 > giver;
+板條箱 > crate;
+天藍色 > azure;
+飛行員 > pilot;
+捐贈者 > donor;
+西班牙 > spain;
+提多書 > titus;
+生麵糰 > dough;
+阿拉摩 > alamo;
+男高音 > tenor;
+一點兒 > a\-bit;
+英特爾 > intel;
+小樹林 > grove;
+布萊爾 > blair;
+撥火棍 > poker;
+在旁邊 > aside;
+營業員 > clerk;
+使固定 > rivet;
+警報器 > siren;
+三角洲 > delta;
+威爾士 > wales;
+肯尼亞 > kenya;
+麵包皮 > crust;
+石南樹 > heath;
+螺絲釘 > screw;
+西洋棋 > chess;
+唱詩班 > choir;
+西洋杉 > cedar;
+使溺死 > drown;
+再一次 > again;
+地方性 > local;
+發牢騷 > whine;
+長頸瓶 > flask;
+皺眉頭 > scowl;
+駕駛員 > pilot;
+來福槍 > rifle;
+吵鬧聲 > noise;
+楔形物 > wedge;
+流浪者 > rover;
+毛嗶嘰 > serge;
+灌木叢 > scrub;
+起重機 > crane;
+碎布條 > shred;
+內在的 > inner;
+鬱金香 > tulip;
+雪茄煙 > cigar;
+烤麵包 > toast;
+吹笛者 > piper;
+一巴掌 > spank;
+統治者 > ruler;
+呼叫聲 > whoop;
+座右銘 > motto;
+三稜鏡 > prism;
+矮墩墩 > pudgy;
+阿爾法 > alpha;
+比例尺 > scale;
+反抗者 > rebel;
+哪一個 > which;
+合股線 > twine;
+邁阿密 > miami;
+輿論界 > media;
+瑞典人 > swede;
+使羞愧 > abash;
+男子氣 > manly;
+使娛樂 > amuse;
+媳婦兒 > wife;
+伊拉克 > iraq;
+有能力 > able;
+埃米爾 > emir;
+咖啡館 > cafe;
+一定要 > must;
+通行稅 > toll;
+玉蜀黍 > corn;
+小毛蟲 > slug;
+最主要 > main;
+猶他州 > utah;
+使受傷 > hurt;
+立方體 > cube;
+白骨頂 > coot;
+護城河 > moat;
+洋娃娃 > doll;
+感覺到 > feel;
+下一次 > next;
+淺黃色 > buff;
+大袋子 > sack;
+圈狀物 > hoop;
+不及格 > fail;
+出租車 > taxi;
+保險絲 > fuse;
+先見者 > seer;
+手拉車 > cart;
+爵士舞 > jazz;
+咖啡店 > cafe;
+艾滋病 > aids;
+八哥兒 > myna;
+電燈泡 > bulb;
+猶大書 > jude;
+大頭釘 > tack;
+愛滋病 > aids;
+赤裸裸 > bare;
+圓屋頂 > dome;
+雙胞胎 > twin;
+一塊麵 > loaf;
+使用者 > user;
+外小腿 > shin;
+蛋白石 > opal;
+一分錢 > cent;
+圓錐體 > cone;
+百合花 > lily;
+計程車 > taxi;
+蜂蜜酒 > mead;
+非常多 > much;
+在之上 > over;
+眨眼睛 > wink;
+貴婦人 > dame;
+紅寶石 > ruby;
+軟木塞 > cork;
+粉紅色 > pink;
+呼呼聲 > whir;
+快步跑 > trot;
+說謊者 > liar;
+陪審團 > jury;
+繼乘人 > heir;
+光禿禿 > bald;
+果餡餅 > tart;
+嘶嘶聲 > hiss;
+擦黑兒 > dusk;
+水果酒 > wine;
+癩哈蟆 > toad;
+織布機 > loom;
+橢圓形 > oval;
+空白點 > gap;
+為甚麼 > why;
+男孩子 > boy;
+浸一下 > dip;
+在眼前 > now;
+無花果 > fig;
+男孩兒 > boy;
+貓叫聲 > mew;
+細頸瓶 > jug;
+常春藤 > ivy;
+為什麼 > why;
+無尾猿 > ape;
+小精靈 > elf;
+老天爺 > god;
+零點六 > 0\.6;
+墨水兒 > ink;
+六點六 > 6\.6;
+用油炸 > fry;
+體育館 > gym;
+七點五 > 7\.5;
+七點二 > 7\.2;
+動物園 > zoo;
+猶太人 > jew;
+黃褐色 > tan;
+筆桿子 > pen;
+九七年 > ''97;
+計乘車 > cab;
+小伙子 > lad;
+貓頭鷹 > owl;
+向上地 > up;
+變文 > a\-popular\-form\-of\-narrative\-literature\-flourishing\-in\-the\-tang\-dynasty\-\(618\-907\)\-with\-alternate\-prose\-and\-rhymed\-parts\-for\-recitation\-and\-singing\-\(often\-on\-buddhistic\-themes\);
+邊幣 > border\-region\-currency\-\(consisting\-of\-the\-currency\-notes\-issued\-by\-the\-border\-region\-governments\-during\-the\-war\-of\-resistance\-against\-japan\-and\-the\-war\-of\-liberation\);
+同期 > the\-corresponding\-time\-period\-\(eg\,\-compare\-inflation\-now\-with\-the\-rate\-during\-the\-same\-month\-last\-year\);
+偏偏 > \(indicates\-that\-sth\.\-turns\-out\-just\-the\-opposite\-of\-what\-one\-would\-expect\-or\-what\-would\-be\-normal\);
+敬祝 > to\-respectfully\-offer\-\(written\-at\-the\-end\-of\-letter\-from\-someone\-of\-lower\-status\-to\-higher\-status\);
+卜辭 > oracle\-inscriptions\-of\-the\-shang\-dynasty\-\(16th\-11th\-century\-bc\)\-on\-tortoiseshells\-or\-animal\-bones;
+洛德 > \(winston\)\-lord\-\(former\-assistant\-secretary\-of\-state\-for\-east\-asia\-and\-pacific\-affairs\);
+彷徨 > name\-of\-a\-collection\-of\-short\-stories\,\-pang\-huang\,\-\"wandering\-about\"\,\-by\-lu3\-xun4\-魯迅;
+陳毅 > chen\-yi\,\-former\-mayor\-of\-shanghai\-and\-highest\-ranking\-military\-commander\-in\-china;
+包工 > undertake\-to\-perform\-work\-within\-a\-time\-limit\-and\-according\-to\-specifications;
+部首 > radicals\-by\-which\-characters\-are\-arranged\-in\-traditional\-chinese\-dictionaries;
+霸主 > a\-powerful\-chief\-of\-the\-princes\-of\-the\-spring\-and\-autumn\-period\-\(770\-476\-bc\);
+在於 > \(the\-problem\-or\-explanation\-or\-advantage\-etc\.\)\-lies\-in\-\(the\-fact\-that\.\.\.\);
+教訓 > \(teach\-someone\-or\-learn\-a\)\-lesson\-\(ie\,\-obtain\-wisdom\-from\-an\-experience\);
+駁岸 > a\-low\-stone\-wall\-built\-along\-the\-water''s\-edge\-to\-protect\-an\-embankment;
+補法 > treatment\-involving\-the\-use\-of\-tonics\-to\-restore\-the\-patient''s\-health;
+三不 > \"the\-three\-no''s\"\-\(an\-example\-of\-an\-abbreviated\-slogan\-or\-catchphrase\);
+白朮 > the\-rhizome\-of\-large\-headed\-atractylodes\-\(atractylodes\-macrocephaia\);
+宣判 > pronounce\-a\-\(judicial\)\-sentence\-\(after\-a\-verdict\-in\-a\-court\-of\-law\);
+病友 > a\-friend\-made\-in\-hospital\-or\-people\-who\-become\-friends\-in\-hospital;
+就是 > \(emphasizes\-that\-something\-is\-precisely\-or\-exactly\-what\-is\-stated\);
+大禹 > da\-yu\,\-name\-of\-an\-ancient\-hero\-who\-successfully\-controlled\-floods;
+表證 > illness\-that\-has\-not\-attacked\-the\-vital\-organs\-of\-the\-human\-body;
+幫閑 > hang\-on\-to\-and\-serve\-the\-rich\-and\-powerful\-by\-literary\-hack\-work;
+描紅 > to\-trace\-over\-red\-characters\-\(as\-a\-method\-of\-learning\-to\-write\);
+抗戰 > war\-of\-resistance\,\-especially\-the\-war\-against\-japan\-\(1937\-1945\);
+今音 > modern\-\(i\.e\.\-not\-ancient\)\-pronunciation\-of\-a\-chinese\-character;
+惋惜 > to\-feel\-sorry\-for\-a\-person\-over\-sth\-that\-should\-have\-happened;
+睥睨 > look\-at\-somebody\-disdainfully\-out\-of\-the\-corner\-of\-one''s\-eye;
+胡適 > hu\-shi\-\(1891\-1962\)\,\-original\-proponent\-of\-bai2\-hua4\-wen2\-白話文;
+軍委 > military\-commission\-of\-the\-communist\-party\-central\-committee;
+燈節 > the\-lantern\-festival\-\(15th\-of\-first\-month\-of\-lunar\-calendar\);
+北洋 > the\-qing\-dynasty\-name\-for\-the\-coastal\-provinces\-of\-liaoning;
+八旗 > the\-\"eight\-banners\"\-\(military\-organisation\-in\-qing\-dynasty\);
+藤野 > name\-of\-a\-person\,\-teng\-ye\,\-a\-japanese\-friend\-of\-lu3\-xun4\-魯迅;
+華表 > marble\-pillar\-\(ornamental\-column\-in\-front\-of\-places\,\-tombs\);
+待業 > to\-await\-job\-assignment\-\(term\-used\-only\-in\-mainland\-china\);
+扮相 > the\-appearance\-of\-an\-actor\-or\-actress\-in\-costume\-or\-makeup;
+武術 > wushu\,\-martial\-arts\-such\-as\-shadow\-boxing\,\-swordplay\,\-etc\.;
+中共 > \(abbreviation\-for\)\-chinese\-communist\-\(party\,\-regime\,\-etc\.\);
+政協 > cppcc\-\(chinese\-people''s\-political\-consultative\-committee\);
+採取 > adopt\-or\-carry\-out\-\(measures\,\-policies\,\-course\-of\-action\);
+癟三 > a\-wretched\-looking\-tramp\-who\-lives\-by\-begging\-or\-stealing;
+表兄 > male\-cousin\-with\-a\-different\-surname\-\(older\-than\-oneself\);
+仙草 > a\-kind\-of\-plant\-used\-as\-a\-medicinal\-herb\-in\-ancient\-times;
+板胡 > a\-bowed\-stringed\-instrument\-with\-a\-thin\-wooden\-soundboard;
+補養 > take\-a\-tonic\-or\-nourishing\-food\-to\-build\-up\-one''s\-health;
+拼命 > to\-be\-ready\-to\-risk\-one''s\-life\-\(in\-fighting\,\-work\,\-etc\.\);
+遷怒 > to\-take\-one''s\-anger\-out\-on\-sb\-\(who\-does\-not\-deserve\-it\);
+掛好 > to\-hang\-up\-properly\-\(telephone\,\-picture\,\-clothes\,\-etc\.\);
+拔毒 > draw\-out\-pus\-by\-applying\-a\-plaster\-to\-the\-affected\-area;
+畜力 > animal\-powered\-\(as\-opposed\-to\-human\-or\-machine\-powered\);
+幫腔 > vocal\-accompaniment\-in\-some\-traditional\-chinese\-operas;
+奔喪 > hasten\-home\-for\-the\-funeral\-of\-a\-parent\-or\-grandparent;
+白芍 > \(peeled\)\-root\-of\-herbaceous\-peony\-\(paeonia\-lactiflora\);
+興趣 > interest\-\(directed\-towards\,\-not\-inherent\-in\-something\);
+標兵 > parade\-guards\-\(usually\-spaced\-out\-along\-parade\-routes\);
+法海 > name\-of\-a\-buddhist\-monk\,\-fahai\,\-from\-madam\-white\-snake;
+彈琴 > to\-play\-or\-strum\-a\-lute\-or\-other\-stringed\-instrument;
+白陶 > white\-pottery\-\(of\-shang\-dynastry\-16\-11th\-century\-bc\);
+包干 > be\-responsible\-for\-a\-task\-unit\-until\-it\-is\-completed;
+平方 > square\-\(as\-in\-square\-foot\,\-square\-mile\,\-square\-root\);
+拉貝 > \(john\)\-rabe\-\(german\-eyewitness\-to\-nanjing\-massacre\);
+巫山 > mt\.\-wu\,\-on\-the\-changjiang\-river\-by\-the\-three\-gorges;
+捕俘 > capture\-enemy\-personnel\-\(for\-intelligence\-purposes\);
+鏢客 > armed\-escort\-\(of\-travellers\-or\-merchants''\-caravans\);
+貝母 > the\-bulb\-of\-the\-fritillary\-\(fritillaria\-thunbergii\);
+名勝 > a\-place\-famous\-for\-its\-scenery\-or\-historical\-relics;
+民樂 > music\,\-esp\.\-folk\-music\,\-for\-traditional\-instruments;
+陝西 > shaanxi\-province\,\-china\-\(capitol\-city\-is\-xi''an\-西安\);
+日方 > the\-japanese\-side\-or\-party\-\(in\-negotiations\,\-etc\.\);
+橫折 > \(horizontal\-starting\-right\-angle\-character\-stroke\);
+西安 > xi''an\-\(city\)\,\-the\-capitol\-city\-of\-shaanxi\-province;
+小青 > name\-of\-a\-person\,\-xiaoqing\,\-from\-madam\-white\-snake;
+臨摹 > to\-copy\-\(a\-model\-of\-calligraphy\-or\-painting\,\-etc\.\);
+備取 > be\-on\-the\-waiting\-list\-\(for\-admission\-to\-a\-school\);
+本末 > the\-whole\-course\-of\-an\-event\-from\-beginning\-to\-end;
+頓挫 > with\-syncopated\-cadence\-\(brush\-stroke\-in\-painting\);
+版畫 > a\-picture\-printed\-from\-an\-engraved\-or\-etched\-plate;
+避諱 > taboo\-against\-using\-the\-personal\-names\-of\-emperors;
+武松 > wusong\,\-name\-of\-a\-person\,\-a\-hero\-in\-shui\-hu\-zhuan;
+許仙 > name\-of\-a\-person\,\-xu\-xian\,\-from\-madam\-white\-snake;
+儐相 > attendant\-of\-the\-bride\-or\-bridegroom\-at\-a\-wedding;
+補瀉 > reinforcing\-and\-reducing\-methods\-\(in\-acupuncture\);
+幹事 > administrative\-secretary\-\(in\-charge\-of\-something\);
+巫峽 > wuxia\-gorge\,\-in\-the\-changjiang\-river\-three\-gorges;
+折筆 > against\-the\-bristles\-\(brush\-movement\-in\-painting\);
+專線 > special\-purpose\-phone\-line\-or\-communications\-link;
+圖克 > \(gary\-l\.\)\-tooker\-\(motorola\-chairman\-of\-the\-board\);
+斜鉤 > \(downwards\-right\-concave\-hooked\-character\-stroke\);
+豎折 > \(downwards\-starting\-right\-angle\-character\-stroke\);
+老兄 > ''old\-chap''\-\(form\-of\-address\-between\-male\-friends\);
+橫筆 > bristles\-lying\-down\-\(brush\-movement\-in\-painting\);
+採購 > make\-purchases\-for\-an\-organization\-or\-enterprise;
+正在 > in\-the\-process\-of\-\(doing\-something\-or\-happening\);
+報國 > dedicate\-oneself\-to\-the\-service\-of\-one''s\-country;
+筆觸 > brush\-stroke\-in\-chinese\-painting\-and\-calligraphy;
+便人 > somebody\-who\-happens\-to\-be\-on\-hand\-for\-an\-errand;
+謝辛 > chea\-sim\-\(cambodian\-national\-assembly\-president\);
+外電 > reports\-from\-foreign\-\(non\-chinese\)\-news\-agancies;
+罷了 > a\-modal\-particle\-indicating\-\(don''t\-mind\-it\,\-ok\);
+靜山 > cheng\-san\-\(electoral\-constituency\-in\-singapore\);
+抓飯 > a\-kind\-of\-food\-popular\-among\-believers\-in\-islam;
+白描 > line\-drawing\-in\-traditional\-ink\-and\-brush\-style;
+唐山 > tang\-shan\-\(a\-chinese\-city\-in\-hebei\-河北\-province\);
+避嫌 > avoid\-doing\-anything\-that\-may\-arouse\-suspicion;
+報幕 > announce\-the\-items\-on\-a\-\(theatrical\)\-programme;
+親家 > parents\-of\-one''s\-daughter\-in\-law\-or\-son\-in\-law;
+喜糖 > sweet\-given\-on\-a\-happy\-occasion\-\(esp\.\-wedding\);
+拜壽 > congratulate\-an\-elderly\-person\-on\-his\-birthday;
+並行 > in\-parallel\-\[development\,\-implementation\,\-etc\];
+伯杰 > \(samuel\)\-berger\-\(us\-national\-security\-advisor\);
+東盟 > asean\-\(association\-of\-southeast\-asian\-nations\);
+曾經 > \(refers\-to\-something\-that\-happened\-previously\);
+可見 > it\-can\-clearly\-be\-seen\-\(that\-this\-is\-the\-case\);
+慰問 > express\-sympathy\,\-greetings\,\-consolation\,\-etc\.;
+海德 > hyde\-\(eg\,\-house\-judiciary\-chairman\-henry\-hyde\);
+羅斯 > roth\-\(eg\,\-hrw\-executive\-director\-kenneth\-roth\);
+旁聽 > be\-a\-visitor\-\(at\-a\-meeting\,\-class\,\-trial\,\-etc\);
+推辭 > to\-decline\-\(an\-appointment\,\-invitation\,\-etc\.\);
+白痢 > dysentery\-characterized\-by\-white\-mucous\-stool;
+華佗 > name\-of\-a\-famous\-doctor\-in\-old\-times\,\-hua\-tuo;
+棒槌 > wooden\-club\-\(used\-to\-beat\-clothes\-in\-washing\);
+吞吐 > to\-take\-in\-and\-send\-out\-\(in\-large\-quantities\);
+斷橋 > the\-broken\-bridge\-\(at\-west\-lake\-in\-hangzhou\);
+氣功 > qigong\,\-a\-system\-of\-deep\-breathing\-exercises;
+省級 > provincial\-level\-\(eg\,\-provincial\-government\);
+武打 > acrobatic\-fighting\-in\-chinese\-opera\-or\-dance;
+報失 > report\-the\-loss\-to\-the\-authorities\-concerned;
+保養 > take\-good\-care\-of\-\(or\-conserve\)\-one''s\-health;
+平信 > ordinary\-mail\-\(as\-opposed\-to\-air\-mail\,\-etc\.\);
+分享 > obtain\-one''s\-share\-\(of\-wealth\,\-rights\,\-etc\.\);
+紅堡 > red\-fort\-\(historic\-building\-in\-delhi\,\-india\);
+元宵 > sweet\-dumplings\-made\-of\-glutinous\-rice\-flour;
+臨寫 > to\-copy\-\(a\-model\-of\-calligraphy\-or\-painting\);
+月餅 > moon\-cake\-\(esp\.\-for\-the\-mid\-autumn\-festival\);
+抄家 > to\-search\-a\-house\-and\-confiscate\-possessions;
+會見 > to\-meet\-with\-\(someone\-who\-is\-paying\-a\-visit\);
+大舉 > carry\-out\-a\-large\-scale\-\(military\)\-operation;
+日漸 > \(keep\-increasing\,\-changing\,\-etc\.\)\-day\-by\-day;
+議席 > seat\-in\-a\-parliament\-or\-legislative\-assembly;
+通緝 > wanted\-by\-the\-police\-\(fugitive\-or\-criminal\);
+真納 > \(mohammad\-ali\)\-jinnah\-\(founder\-of\-pakistan\);
+魯賓 > rubin\-\(eg\,\-treasury\-secretary\-robert\-rubin\);
+力寶 > lippo\-\(group\)\-\(indonesian\-business\-concern\);
+側鋒 > oblique\-attack\-\(brush\-movement\-in\-painting\);
+崇禎 > chongzhen\,\-last\-emperor\-of\-the\-ming\-dynasty;
+白字 > wrongly\-written\-and\-mispronounced\-character;
+對策 > countermeasure\-for\-dealing\-with\-a\-situation;
+筆力 > vigour\-of\-strokes\-in\-calligraphy\-or\-drawing;
+罰酒 > to\-drink\-as\-the\-result\-of\-having\-lost\-a\-bet;
+星體 > celestial\-body\-\(eg\,\-planet\,\-satellite\,\-etc\);
+主管 > \(be\)\-person\-in\-charge\-of\-\(a\-position\,\-etc\.\);
+步韻 > to\-write\-a\-poem\-using\-another\-poem''s\-rhymes;
+口氣 > \(friendly\-or\-unfriendly\)\-tone\-\(of\-comments\);
+正鋒 > frontal\-attack\-\(brush\-movement\-in\-painting\);
+星球 > celestial\-body\-\(eg\,\-planet\,\-satellite\,\-etc\);
+下來 > \(verb\-suffix\-indicating\-continuation\,\-etc\.\);
+幹部 > a\-cadre\-\(ie\,\-manager\,\-staff\,\-officer\,\-etc\.\);
+接納 > admit\-\(into\-membership\-of\-an\-organization\);
+把風 > keep\-watch\-\(during\-a\-clandestine\-activity\);
+備耕 > make\-preparations\-for\-ploughing\-and\-sowing;
+撥冗 > find\-time\-in\-the\-midst\-of\-pressing\-affairs;
+栽贓 > to\-frame\-someone\-\(by\-planting\-sth\-on\-them\);
+換取 > give\-something\-and\-get\-something\-in\-return;
+偽書 > \(forged\,\-dubious\,\-misclassified\)\-old\-books;
+簿冊 > books\-for\-taking\-notes\-or\-keeping\-accounts;
+上車 > to\-get\-on\-or\-into\-\(a\-bus\,\-train\,\-car\-etc\.\);
+筆下 > the\-wording\-and\-purport\-of\-what\-one\-writes;
+便函 > an\-informal\-letter\-sent\-by\-an\-organization;
+首席 > chief\-\(representative\,\-correspondent\,\-etc\);
+贅婿 > son\-in\-law\-living\-at\-wife''s\-parent''s\-house;
+處於 > be\-\(in\-some\-state\,\-position\,\-or\-condition\);
+敗筆 > a\-faulty\-stroke\-in\-calligraphy\-or\-painting;
+出路 > a\-way\-out\-\(of\-a\-difficult\-situation\,\-etc\);
+度日 > scratch\-out\-a\-difficult\,\-meager\-existence;
+報案 > report\-a\-case\-to\-the\-security\-authorities;
+兵源 > manpower\-resources\-\(for\-military\-service\);
+有電 > \(of\-a\-dwelling\)\-supplied\-with\-electricity;
+賁臨 > \(of\-distinguished\-guests\)\-honour\-my\-house;
+松下 > matsushita\-\(japanese\-electronics\-company\);
+不妙 > \(of\-a\-turn\-of\-events\)\-not\-too\-encouraging;
+勉強 > manage\-\(to\-do\-something\)\-with\-difficulty;
+別無 > have\-no\-other\-\(choice\,\-alternative\,\-etc\);
+公約 > convention\-\(ie\,\-international\-agreement\);
+年度 > year\-\(eg\,\-school\-year\,\-fiscal\-year\,\-etc\);
+筆順 > order\-of\-strokes\-observed\-in\-calligraphy;
+扎針 > to\-give\-or\-have\-an\-acupuncture\-treatment;
+製劑 > \(chemical\-or\-pharmaceutical\)\-preparation;
+體會 > know\-\(through\-learning\-or\-by\-experience\);
+偽托 > faking\-a\-modern\-object\-as\-an\-ancient\-one;
+海關 > customs\-\(ie\,\-border\-crossing\-inspection\);
+碑記 > a\-record\-of\-events\-inscribed\-on\-a\-tablet;
+包辦 > take\-care\-of\-everything\-concerning\-a\-job;
+出面 > act\-in\-a\-\(official\-or\-personal\)\-capacity;
+相隔 > be\-separated\-by\-\(distance\-or\-time\,\-etc\);
+時報 > \"times\"\-\(newspaper\,\-eg\,\-new\-york\-times\);
+通航 > connected\-by\-air\|sea\-traffic\-or\-service;
+遷居 > to\-move\-\(from\-one\-residence\-to\-another\);
+年代 > a\-decade\-of\-a\-century\-\(eg\,\-the\-sixties\);
+喬石 > qiao\-shi\-\(chinese\-leadership\-contender\);
+豎鉤 > \(straight\-down\-hooked\-character\-stroke\);
+成本 > \(manufacturing\,\-production\,\-etc\.\)\-costs;
+代理 > acting\-\(temporarily\-filling\-a\-position\);
+客廳 > drawing\-room\-\(room\-for\-arriving\-guests\);
+蓮霧 > wax\-apple\-\(a\-reddish\-pear\-shaped\-fruit\);
+題簽 > to\-write\-the\-title\-of\-a\-book\-on\-a\-label;
+老二 > the\-second\-child\-or\-brother\-\(or\-sister\);
+中南 > \(abbreviation\-for\)\-china\-\-\-south\-africa;
+版次 > the\-order\-in\-which\-editions\-are\-printed;
+受傷 > suffer\-injuries\-\(in\-an\-accident\,\-etc\.\);
+訂立 > agree\-to\-\(treaty\,\-contract\,\-agreement\);
+夏曆 > the\-traditional\-chinese\-lunar\-calendar;
+師範 > normal\-\(eg\,\-beijing\-normal\-university\);
+廣場 > a\-public\-square\-\(eg\,\-tiananmen\-square\);
+補票 > buy\-one''s\-ticket\-after\-the\-normal\-time;
+發燒 > have\-a\-high\-temperature\-\(from\-illness\);
+盆地 > basin\-\(low\-lying\-geographical\-feature\);
+手跡 > sb\.''s\-original\-handwriting\-or\-painting;
+璧還 > return\-\(a\-borrowed\-object\)\-with\-thanks;
+表妹 > female\-cousin\-with\-a\-different\-surname;
+拆散 > to\-break\-up\-\(a\-marriage\,\-family\,\-etc\.\);
+備品 > machine\-parts\-or\-tools\-kept\-in\-reserve;
+首任 > first\-person\-to\-be\-appointed\-to\-a\-post;
+部長 > head\-of\-a\-\(government\,\-etc\)\-department;
+比量 > take\-rough\-measurements\-\(with\-the\-hand;
+博愛 > universal\-fraternity\-\(or\-brotherhood\);
+敗火 > relieve\-inflammation\-or\-internal\-heat;
+經營 > engage\-in\-\(a\-business\-activity\,\-etc\.\);
+集成 > integrated\-\(as\-in\-integrated\-circuit\);
+政委 > political\-commissar\-\(within\-the\-army\);
+編導 > write\-and\-direct\-\(a\-play\,\-film\,\-etc\.\);
+行駛 > \(vehicles\,\-etc\.\)\-travel\-along\-a\-route;
+兵種 > \(military\)\-branch\-of\-the\-armed\-forces;
+逼宮 > force\-the\-king\-or\-emperor\-to\-abdicate;
+航行 > sail\-or\-fly\-\(in\-air\,\-water\,\-or\-space\);
+相信 > be\-convinced\-\(that\-something\-is\-true\);
+拔秧 > pull\-up\-seedlings\-\(for\-transplanting\);
+手裡 > \(a\-situation\-is\)\-in\-\(someone''s\)\-hands;
+捕撈 > fish\-for\-\(aquatic\-animals\-and\-plants\);
+簽名 > to\-sign\-\(one''s\-name\-with\-a\-pen\,\-etc\.\);
+濟南 > ji''nan\-\(capital\-of\-shandong\-province\);
+屏條 > set\-of\-\(usually\-four\)\-hanging\-scrolls;
+究竟 > after\-all\-\(when\-all\-is\-said\-and\-done\);
+鎮江 > zhenjiang\-\(city\)\,\-in\-jiangsu\-province;
+主科 > required\-courses\-in\-the\-major\-subject;
+班底 > ordinary\-members\-of\-theatrical\-troupe;
+金缽 > \(gold\)\-alms\-bowl\-\(of\-a\-buddhist\-monk\);
+聯名 > jointly\-\(signed\,\-declared\,\-sponsored\);
+下榻 > stay\-at\-\(a\-hotel\,\-etc\.\-during\-a\-trip\);
+記述 > make\-a\-descriptive\-record\-\(of\-events\);
+暗傷 > internal\-\(invisible\)\-injury\-\(damage\);
+太湖 > tai\-hu\-lake\,\-a\-big\-lake\-by\-wuxi\-city;
+橫鉤 > \(horizontal\-hooked\-character\-stroke\);
+北宋 > the\-northern\-song\-dynasty\-\(960\-1127\);
+鄉下 > country\-\(as\-opposed\-to\-town\-or\-city\);
+簽訂 > to\-agree\-to\-and\-sign\-\(a\-treaty\,\-etc\);
+增值 > appreciation\-\(of\-a\-car\,\-house\,\-etc\.\);
+兵家 > military\-strategist\-in\-ancient\-china;
+英尺 > \(english\)\-foot\-\(unit\-of\-measurement\);
+淪陷 > \(territory\)\-fall\-to\-enemy\-occupation;
+人選 > person\(s\)\-selected\-\(for\-a\-job\,\-etc\.\);
+會長 > president\-of\-a\-club\,\-committee\,\-etc\.;
+寫成 > to\-compile\-\(fashion\-through\-writing\);
+吞金 > to\-commit\-suicide\-by\-swallowing\-gold;
+板眼 > measure\-in\-traditional\-chinese\-music;
+首府 > capital\-city\-of\-an\-autonomous\-region;
+班次 > order\-of\-classes\-or\-grades\-at\-school;
+貴州 > name\-of\-a\-province\-in\-china\,\-guizhou;
+蓋茨 > \(bill\)\-gates\-\(chairman\-of\-microsoft\);
+吸引 > attract\-\(interest\,\-investment\,\-etc\.\);
+暗娼 > unlicensed\-\(unregistered\)\-prostitute;
+霸王 > xiang4yu3\-\(232\-202\-bc\)\-the\-conqueror;
+壽禮 > birthday\-present\-\(for\-an\-old\-person\);
+萬縣 > wanxian\-county\,\-in\-sichuan\-province;
+兵部 > the\-ministry\-of\-war\-in\-feudal\-china;
+北周 > the\-northern\-zhou\-dynasty\-\(557\-581\);
+北京 > beijing\-\(capital\-of\-mainland\-china\);
+草案 > draft\-\(legislation\,\-proposal\,\-etc\.\);
+親愛 > dear\-\.\.\.\-\(way\-of\-starting\-a\-letter\);
+補白 > filler\-\(in\-a\-newspaper\-or\-magazine\);
+舉行 > to\-hold\-\(a\-meeting\,\-ceremony\,\-etc\.\);
+保送 > recommend\-\(for\-admission\-to\-school\);
+轉帳 > transfer\-money\-from\|into\-an\-account;
+席位 > parliamentary\-or\-congressional\-seat;
+布什 > \(george\)\-bush\-\(former\-us\-president\);
+審訊 > a\-\(judicial\)\-trial\-\(in\-a\-courtroom\);
+筆桿 > the\-shaft\-of\-a\-pen\-or\-writing\-brush;
+病勢 > degree\-of\-seriousness\-of\-an\-illness;
+主辦 > host\-\(a\-conference\-or\-sports\-event\);
+本草 > a\-book\-on\-chinese\-\(herbal\)\-medicine;
+人物 > characters\-\(in\-a\-play\,\-novel\,\-etc\.\);
+議長 > speaker\-\(of\-a\-legislative\-assembly\);
+安南 > \[kofi\]\-annan\-\[un\-secretary\-general\];
+包飯 > get\-or\-supply\-meals\-at\-a\-fixed\-rate;
+有水 > \(of\-a\-dwelling\)\-supplied\-with\-water;
+話題 > subject\-\(of\-a\-talk\-or\-conversation\);
+事務 > \(political\,\-economic\,\-etc\.\)\-affairs;
+咱們 > we\-\(including\-the\-person\-spoken\-to\);
+率先 > take\-the\-lead\-\(showing\-inititative\);
+包租 > rent\-land\-or\-a\-house\-for\-subletting;
+明文 > \(laws\,\-rules\,\-etc\)\-state\-in\-writing;
+透視 > to\-examine\-by\-fluoroscope\-or\-x\-ray;
+報警 > report\-\(an\-incident\)\-to\-the\-police;
+碑帖 > a\-rubbing\-from\-a\-stone\-inscription;
+牛年 > year\-of\-the\-ox\-\(in\-chinese\-zodiac\);
+包廂 > box\-\(in\-a\-theatre\-or\-concert\-hall\);
+轉讓 > transfer\-\(technology\,\-goods\,\-etc\.\);
+盜版 > pirate\-version\-\(of\-software\,\-e\.g\.\);
+緣份 > fate\-\(which\-brings\-people\-together;
+平壤 > pyongyang\-\(capital\-of\-north\-korea\);
+擔任 > hold\-a\-governmental\-office\-or\-post;
+克服 > \(try\-to\)\-overcome\-\(hardships\,\-etc\);
+抄送 > to\-make\-a\-copy\-\(and\-send\-it\-to\-sb\);
+案驗 > investigate\-the\-evidence\-of\-a\-case;
+托運 > to\-book\-or\-check\-through\-\(baggage\);
+戶部 > feudal\-chinese\-ministry\-of\-revenue;
+推動 > to\-push\-\(for\-acceptance\-of\-a\-plan\);
+亞軍 > second\-place\-\(in\-a\-sports\-contest\);
+顏體 > yan\-style\-\(in\-chinese\-calligraphy\);
+久違 > \(haven''t\-done\-sth\)\-for\-a\-long\-time;
+香山 > fragrance\-hill\-\(a\-park\-in\-beijing\);
+銷毀 > to\-destroy\-\(by\-melting\-or\-burning\);
+北魏 > the\-northern\-wei\-dynasty\-\(386\-534\);
+暴病 > sudden\-attack\-of\-a\-serious\-illness;
+人大 > \(china\)\-national\-people''s\-congress;
+熱鬧 > bustling\-with\-noise\-and\-excitement;
+呈文 > petition\-\(submitted\-to\-a\-superior\);
+春節 > spring\-festival\-\(chinese\-new\-year\);
+𠼻 > a\-particle\-used\-in\-transliteration;
+新疆 > xinjiang\-\(uygur\-autonomous\-region\);
+網絡 > \(computer\,\-telecom\,\-etc\.\)\-network;
+壁毯 > tapestry\-\(used\-as\-a\-wall\-hanging\);
+擦澡 > rub\-oneself\-down\-with\-a\-wet\-towel;
+認定 > maintain\-\(that\-something\-is\-true\);
+分歧 > difference\-\(of\-opinion\,\-position\);
+連戰 > lien\-chan\-\(taiwan\-vice\-president\);
+制度 > \(political\)\-system\-or\-institution;
+補習 > take\-lessons\-after\-school\-or\-work;
+建交 > to\-establish\-diplomatic\-relations;
+火災 > fire\-\(that\-burns\-buildings\,\-etc\.\);
+備課 > \(of\-a\-teacher\)\-to\-prepare\-lessons;
+開演 > \(of\-a\-play\,\-movie\,\-etc\.\)\-to\-begin;
+備荒 > prepare\-against\-natural\-disasters;
+全會 > plenary\-session\-\(at\-a\-conference\);
+便難 > retort\-with\-challenging\-questions;
+答辯 > to\-reply\-\(to\-an\-accusation\,\-e\.g\.\);
+圖書 > books\-\(in\-a\-library\-or\-bookstore\);
+家長 > the\-parent\-or\-guardian\-of\-a\-child;
+回歸 > to\-return\-\(to\-previous\-condition\);
+骨法 > bone\-\(property\-of\-a\-brush\-stroke\);
+科隆 > cologne\,\-germany\-or\-colon\,\-panama;
+打消 > dispel\-\(doubts\,\-misgivings\,\-etc\.\);
+找到 > find\-\(what\-one\-was\-searching\-for\);
+召開 > convene\-\(a\-conference\-or\-meeting\);
+呼籲 > call\-on\-\(someone\-to\-do\-something\);
+科爾 > \(helmut\)\-kohl\-\(german\-chancellor\);
+齋月 > ramadan\-\(muslim\-month\-of\-fasting\);
+起來 > beginning\-or\-continuing\-an\-action;
+北齊 > the\-northern\-qi\-dynasty\-\(550\-557\);
+吐穗 > to\-have\-the\-ears\-of\-grain\-come\-up;
+請願 > petition\-\(for\-action\-to\-be\-taken\);
+享受 > to\-enjoy\-\(rights\,\-benefits\,\-etc\.\);
+三峽 > the\-three\-changjiang\-river\-gorges;
+取暖 > to\-warm\-oneself\-\(by\-a\-fire\,\-etc\.\);
+院長 > president\-\(of\-a\-university\,\-etc\.\);
+言論 > expression\-of\-\(political\)\-opinion;
+政界 > political\-and\-government\-circles;
+性別 > distinguishing\-between\-the\-sexes;
+違禁 > to\-violate\-a\-prohibtition\-or\-ban;
+酬和 > to\-respond\-to\-a\-poem\-with\-a\-poem;
+報考 > enter\-oneself\-for\-an\-examination;
+北國 > the\-northern\-part\-of\-the\-country;
+外孫 > grandson\-\(son\-of\-one''s\-daughter\);
+大國 > a\-power\-\(ie\,\-a\-dominant\-country\);
+探親 > to\-go\-home\-to\-visit\-one''s\-family;
+難以 > hard\-to\-\(predict\,\-imagine\,\-etc\.\);
+報效 > render\-service\-to\-repay\-kindness;
+親戚 > \(a\)\-relative\-\(ie\,\-family\-member\);
+為期 > \(to\-be\-done\)\-by\-\(a\-certain\-date\);
+農曆 > the\-traditional\-chinese\-calendar;
+按說 > in\-the\-ordinary\-course\-of\-events;
+連任 > continue\-in\-\(a\-political\)\-office;
+臉譜 > types\-of\-facial\-makeup\-in\-operas;
+開庭 > begin\-a\-\(judicial\)\-court\-session;
+公審 > public\-trial\-\(in\-a\-court\-of\-law\);
+但願 > if\-only\-\(it\-were\-possible\-to\.\.\.\);
+捨得 > to\-be\-willing\-to\-part\-with\-\(sth\);
+持有 > hold\-\(eg\,\-passport\,\-views\,\-etc\.\);
+抗爭 > make\-a\-stand\-and\-fight\-\(against\);
+篦子 > a\-double\-edged\-fine\-toothed\-comb;
+投機 > be\-a\-speculator\-\(profit\-seeking\);
+挪借 > to\-borrow\-money\-for\-a\-short\-time;
+宰相 > prime\-minister\-\(in\-feudal\-china\);
+虛腕 > empty\-wrist\-\(method\-of\-painting\);
+不論 > no\-matter\-\(what\,\-who\,\-how\,\-etc\.\);
+保修 > guarantee\-to\-keep\-in\-good\-repair;
+金邊 > phnom\-penh\-\(capital\-of\-cambodia\);
+侵佔 > to\-invade\-and\-occupy\-\(territory\);
+柯密 > kermit\-\(communications\-protocol\);
+享有 > enjoy\-\(rights\,\-privileges\,\-etc\.\);
+禮炮 > a\-gun\-salute\-\(eg\,\-21\-gun\-salute\);
+突厥 > turkic\-\(minority\-group\-in\-china\);
+安保 > \(abbreviation\)\-maintain\-security;
+壽麵 > birthday\-noodles\-\(for\-longevity\);
+浴室 > bathroom\-\(room\-used\-for\-bathing\);
+令人 > cause\-someone\-to\-\(be\,\-feel\,\-etc\);
+除非 > only\-if\-\(\.\.\.\,\-or\-otherwise\,\-\.\.\.\);
+歧視 > discrimination\-\(against\-someone\);
+敗落 > decline\-\(in\-wealth\-and\-position\);
+無錫 > wuxi\-\(city\)\,\-in\-jiangsu\-province;
+暗合 > agree\-without\-prior\-consultation;
+姐夫 > brother\-in\-law\-\(husband''s\-side\);
+特區 > special\-\(administrative\)\-region;
+日圓 > japanese\-yen\-\(unit\-of\-currency\);
+壁櫥 > a\-built\-in\-wardrobe\-or\-cupboard;
+避暑 > be\-away\-for\-the\-summer\-holidays;
+步搖 > dangling\-ornament\-worn\-by\-women;
+邦交 > relations\-between\-two\-countries;
+提煉 > to\-extract\-\(ore\,\-minerals\,\-etc\);
+橋接 > bridging\-\(in\-computer\-networks\);
+八方 > the\-eight\-points\-of\-the\-compass;
+內政 > internal\-affairs\-\(of\-a\-country\);
+迫使 > force\-\(someone\-to\-do\-something\);
+長廊 > the\-long\-corridor\-at\-yi\-he\-yuan;
+元帥 > a\-marshal\-\(in\-the\-armed\-forces\);
+校長 > \(college\,\-university\)\-president;
+開刀 > to\-perform\-or\-have\-an\-operation;
+輩分 > seniority\-in\-the\-family\-or\-clan;
+尾牙 > a\-year\-end\-dinner\-for\-employees;
+班輪 > regular\-passenger\-or\-cargo\-ship;
+抨擊 > attack\-\(verbally\-or\-in\-writing\);
+舞台 > \(theatrical\-or\-political\)\-stage;
+猛跌 > drop\-sharply\-\(eg\,\-stock\-prices\);
+信件 > a\-letter\-\(ie\,\-sent\-in\-the\-mail\);
+使命 > a\-\(diplomatic\-or\-other\)\-mission;
+丹皮 > the\-root\-bark\-of\-the\-peony\-tree;
+定做 > to\-have\-something\-made\-to\-order;
+重用 > to\-put\-in\-an\-important\-position;
+比賽 > \[athletic\-or\-other\]\-competition;
+敘述 > relate\-\(a\-story\-or\-information\);
+加重 > become\|make\-more\-serious\|graver;
+蔚為 > to\-afford\-\(a\-view\-of\-sth\,\-e\.g\.\);
+電臺 > radio\-\(or\-broadcasting\)\-station;
+碑林 > the\-forest\-of\-steles\-\(in\-xi''an\);
+外灘 > waitan\-\(the\-bund\)\,\-in\-shanghai;
+證實 > confirm\-\(something\-to\-be\-true\);
+議員 > member\-\(of\-a\-legislative\-body\);
+報表 > forms\-for\-reporting\-statistics;
+明報 > ming\-pao\-newspaper\-\(hong\-kong\);
+前程 > future\-\(career\,\-etc\)\-prospects;
+登門 > pay\-a\-visit\-to\-someone''s\-house;
+邊民 > people\-living\-on\-the\-frontiers;
+那末 > if\-that''s\-the\-case\,\-then\-\(\.\.\.\);
+效應 > effect\-\(eg\,\-greenhouse\-effect\);
+歹徒 > evil\-person\-who\-commits\-crimes;
+收復 > recover\-\(lost\-territory\,\-etc\.\);
+傲骨 > lofty\-and\-unyielding\-character;
+斷交 > break\-off\-diplomatic\-relations;
+帳戶 > \(bank\,\-computer\,\-etc\.\)\-account;
+固然 > admittedly\-\(it''s\-true\-that\.\.\.\);
+臺獨 > taiwan\-independence\-\(movement\);
+保苗 > keep\-a\-full\-stand\-of\-seedlings;
+路由 > routing\-\(in\-computer\-networks\);
+對美 > \(policy\,\-etc\.\)\-towards\-america;
+指數 > \(numerical\,\-statistical\)\-index;
+筆畫 > strokes\-of\-a\-chinese\-character;
+空襲 > \(military\)\-attack\-from\-the\-air;
+表報 > statistical\-tables\-and\-reports;
+拘押 > \(arrest\-and\)\-take\-into\-custody;
+尚書 > high\-official\-in\-ancient\-china;
+聳立 > to\-tower\-above\-\(on\-top\-of\-sth\);
+班組 > teams\-and\-groups\-\(in\-factories;
+伯母 > wife\-of\-father''s\-elder\-brother;
+中藥 > \(traditional\)\-chinese\-medicine;
+暗袋 > camera\-bag\-\(for\-changing\-film\);
+處決 > execute\-\(a\-condemned\-criminal\);
+新鮮 > fresh\-\(experience\,\-food\,\-etc\.\);
+叫聲 > yelling\-\(sound\-made\-by\-person\);
+班師 > withdraw\-troops\-from\-the\-front;
+哀悼 > grieve\-\(mourn\)\-over\-sb''s\-death;
+科恩 > cohen\-\(u\.s\.\-defence\-secretary\);
+敗陣 > be\-defeated\-on\-the\-battlefield;
+包賠 > guarantee\-to\-pay\-compensations;
+名次 > position\-in\-a\-ranking\-of\-names;
+嫂嫂 > sister\-in\-law\-\(husband''s\-side\);
+奉行 > to\-pursue\-\(a\-course\,\-a\-policy\);
+呼喚 > call\-out\-\(someone''s\-name\,\-etc\);
+𠀁 > the\-original\-form\-for\-七\-u\+4e03;
+𠀀 > the\-sound\-made\-by\-breathing\-in;
+示威 > hold\-a\-\(protest\)\-demonstration;
+吃刀 > penetration\-of\-a\-cutting\-tool;
+各位 > everybody\-\(a\-term\-of\-address\);
+韓圓 > korean\-won\-\(unit\-of\-currency\);
+報社 > general\-office\-of\-a\-newspaper;
+發跡 > to\-rise\-to\-power\-and\-position;
+支援 > provide\-assistance\-or\-backing;
+觀測 > \(scientific\,\-etc\)\-observation;
+違心 > against\-ones\-will\-or\-feelings;
+拼音 > pinyin\-\(chinese\-romanization\);
+境外 > outside\-\(a\-country''s\)\-borders;
+拌面 > noodles\-served\-with\-soy\-sauce;
+直接 > direct\-\(opposite\-of\-indirect\);
+鏡頭 > camera\-shot\-\(in\-a\-movie\,\-etc\);
+莫不 > there\-is\-no\-one\-\(who\-doesn''t\);
+送人 > to\-see\-\(or\-walk\)\-someone\-home;
+白文 > the\-text\-of\-an\-annotated\-book;
+將領 > high\-ranking\-military\-officer;
+掌權 > wield\-\(political\,\-etc\.\)\-power;
+促進 > to\-promote\-\(an\-idea\-or\-cause\);
+公安 > \(ministry\-of\)\-public\-security;
+病根 > an\-incompletely\-cured\-illness;
+補報 > make\-a\-report\-after\-the\-event;
+對臺 > \(policy\,\-etc\.\)\-towards\-taiwan;
+板鼓 > a\-small\-drum\-for\-marking\-time;
+贅述 > to\-say\-more\-than\-is\-necessary;
+實肘 > full\-arm\-\(method\-of\-painting\);
+淘金 > panning\-\(for\-precious\-metals\);
+戈爾 > \(al\)\-gore\-\(us\-vice\-president\);
+亂說 > to\-make\-irresponsible\-remarks;
+不軌 > against\-the\-law\-or\-discipline;
+保商 > preservation\-of\-soil\-moisture;
+作戰 > conduct\-\(military\-operations\);
+世行 > \[abbreviation\-for\]\-world\-bank;
+中華 > china\-\(alternate\-formal\-name\);
+侵入 > to\-make\-\(military\)\-incursions;
+球檯 > table\-\(for\-games\-using\-balls\);
+下臺 > step\-down\-\(from\-office\,\-etc\.\);
+貪污 > \(political\,\-moral\)\-corruption;
+中級 > middle\-level\-\(in\-a\-hierarchy\);
+有的 > \(there\-are\)\-some\-\(who\-are\.\.\.\);
+蓋飯 > rice\-with\-meat\-and\-vegitables;
+下班 > to\-come\-or\-go\-or\-get\-off\-work;
+包銷 > have\-exclusive\-selling\-rights;
+讓球 > to\-concede\-points\-\(in\-a\-game\);
+書房 > study\-\(i\.e\.\-the\-kind\-of\-room\);
+認識 > be\-acquainted\-with\-\(a\-person\);
+卻病 > to\-prevent\-or\-treat\-a\-disease;
+遲遲 > \(be\)\-late\-\(with\-a\-task\,\-etc\.\);
+𠀅 > an\-alternate\-form\-of\-u\+4ea5\-亥;
+德班 > durban\-\(city\-in\-south\-africa\);
+擺輪 > balance\-\(of\-a\-watch\-or\-clock\);
+擺設 > furnish\-and\-decorate\-\(a\-room\);
+熱線 > hotline\-\(communications\-link\);
+法制 > legal\-system\-and\-institutions;
+水平 > level\-\(of\-achievement\,\-etc\.\);
+夫權 > authority\-over\-the\-household;
+印尼 > \(abbreviation\-for\)\-indonesia;
+變價 > appraise\-at\-the\-current\-rate;
+妹夫 > brother\-in\-law\-\(wife''s\-side\);
+進而 > and\-then\-\(what\-follows\-next\);
+陣線 > a\-front\-\(ie\,\-militant\-group\);
+歲月 > the\-years\-of\-a\-person''s\-life;
+歸屬 > be\-under\-the\-jurisdiction\-of;
+在野 > be\-out\-of\-\(political\)\-office;
+廠房 > a\-building\-used\-as\-a\-factory;
+判決 > judgment\-\(by\-a\-court\-of\-law\);
+困難 > \(financial\,\-etc\.\)\-difficulty;
+掛號 > to\-register\-\(a\-letter\,\-etc\.\);
+補苗 > fill\-the\-gaps\-with\-seedlings;
+武力 > \(make\-use\-of\)\-military\-force;
+放假 > to\-have\-a\-holidy\-or\-vacation;
+舉重 > \(the\-sport\-of\)\-weightlifting;
+嚴詞 > \(criticize\,\-etc\.\)\-forcefully;
+境內 > within\-\(a\-country''s\)\-borders;
+華人 > ethnic\-chinese\-person\|people;
+橋本 > \(japanese\-surname\)\-hashimoto;
+地皮 > lot\,\-section\-of\-land\,\-ground;
+轉機 > \(take\-a\)\-turn\-for\-the\-better;
+常委 > member\-of\-standing\-committee;
+起飛 > to\-take\-off\-\(in\-an\-airplane\);
+開幕 > to\-open\-\(a\-conference\,\-e\.g\.\);
+打針 > to\-give\-or\-have\-an\-injection;
+璧謝 > decline\-\(a\-gift\)\-with\-thanks;
+對華 > \(policy\,\-etc\.\)\-towards\-china;
+儀器 > \(scientific\,\-etc\)\-instrument;
+究辦 > to\-investigate\-and\-deal\-with;
+定罪 > convict\-\(someone\-of\-a\-crime\);
+本題 > the\-subject\-under\-discussion;
+背簍 > a\-basket\-carried\-on\-the\-back;
+有關 > to\-have\-something\-to\-do\-with;
+來源 > source\-\(of\-information\,\-etc\);
+獲釋 > obtain\-release\-\(from\-prison\);
+對日 > \(policy\,\-etc\.\)\-towards\-japan;
+憋氣 > feel\-suffocated\-or\-oppressed;
+同胞 > fellow\-citizen\-or\-countryman;
+匾額 > a\-horizontal\-inscribed\-board;
+確診 > to\-make\-a\-definite\-diagnosis;
+它們 > they\-\(for\-inanimate\-objects\);
+現場 > scene\-\(of\-event\-or\-incident\);
+愛情 > love\-\(between\-man\-and\-woman\);
+變節 > make\-a\-political\-recantation;
+涉嫌 > to\-be\-a\-suspect\-\(in\-a\-crime\);
+失足 > to\-take\-a\-wrong\-step\-in\-life;
+犧牲 > sacrifice\-\(one''s\-life\,\-etc\.\);
+亞伯 > abe\-\(short\-form\-for\-abraham\);
+猜忌 > be\-suspicious\-and\-jealous\-of;
+黨內 > within\-the\-\(communist\)\-party;
+動蕩 > \(social\-or\-political\)\-unrest;
+王丹 > wang\-dan\-\(chinese\-dissident\);
+決定 > to\-decide\-\(to\-do\-something\);
+姊妹 > \(older\-and\-younger\)\-sisters;
+逼肖 > bear\-a\-close\-resemblance\-to;
+復審 > reexamine\-\(a\-judicial\-case\);
+入門 > introduction\-\(to\-a\-subject\);
+白露 > white\-dew\-\(15th\-solar\-term\);
+補體 > complement\-\(in\-blood\-serum\);
+評比 > to\-evaluate\-\(by\-comparison\);
+轉身 > \(of\-a\-person\)\-to\-turn\-round;
+爪哇 > java\-\(programming\-language\);
+效忠 > vow\-loyalty\-and\-devotion\-to;
+採辦 > buy\-on\-a\-considerable\-scale;
+弟妹 > sister\-in\-law\-\(wife''s\-side\);
+陷於 > caught\-in\-\(a\-bad\-situation\);
+外匯 > foreign\-\(currency\)\-exchange;
+摘由 > high\-points\-\(of\-a\-document\);
+側躺 > to\-lie\-down\-\(on\-one''s\-side\);
+搜捕 > hunt\-and\-arrest\-\(fugitives\);
+揹書 > recite\-a\-lesson\-from\-memory;
+幸免 > narrowly\-and\-luckily\-escape;
+國標 > guobiao\-\(encoding\-standard\);
+便血 > having\-blood\-in\-one''s\-stool;
+病機 > interpretation\-of\-the\-cause;
+才華 > literary\-or\-artistic\-talent;
+指法 > finger\-method\-\(in\-painting\);
+寶藏 > precious\-\(mineral\)\-deposits;
+提前 > to\-shift\-to\-an\-earlier\-date;
+輩出 > come\-forth\-in\-large\-numbers;
+板鴨 > pressed\-\(dried\)\-salted\-duck;
+拔海 > elevation\-\(above\-sea\-level\);
+倫敦 > london\-\(capital\-of\-england\);
+條款 > clause\-\(of\-contract\-or\-law\);
+病例 > \[medical\]\-case\-\[of\-illness\];
+器官 > organ\-\(part\-of\-body\-tissue\);
+班級 > classes\-or\-grades\-in\-school;
+憲法 > constitution\-\(of\-a\-country\);
+不諱 > without\-concealing\-anything;
+安插 > place\-in\-a\-certain\-position;
+古蹟 > places\-of\-historic\-interest;
+氣體 > gas\-\(ie\,\-gaseous\-substance\);
+孫子 > grandson\-\(son\-of\-one''s\-son\);
+奔騰 > \(of\-waves\)\-to\-surge\-forward;
+郵電 > post\-and\-telecommunications;
+問候 > give\-someone\-one''s\-respects;
+祖父 > grandfather\-\(father''s\-side\);
+決策 > \(make\-a\)\-strategic\-decision;
+祖母 > grandmother\-\(father''s\-side\);
+針灸 > acupuncture\-and\-moxibustion;
+一旦 > in\-case\-\(something\-happens\);
+壽辰 > birthday\-\(of\-an\-old\-person\);
+復甦 > recovery\-\(health\,\-economic\);
+時期 > a\-period\-in\-time\-or\-history;
+各地 > in\-all\-parts\-of\-\(a\-country\);
+碑文 > an\-inscription\-on\-a\-tablet;
+台北 > taipei\-\(capital\-of\-taiwan\);
+河內 > hanoi\-\(capital\-of\-vietnam\);
+量力 > to\-estimate\-one''s\-strength;
+斡旋 > mediate\-\(a\-conflict\,\-etc\.\);
+牌匾 > board\-\(attached\-to\-a\-wall\);
+動手 > to\-hit\-with\-hands\-or\-fists;
+步月 > to\-stroll\-beneath\-the\-moon;
+誓師 > to\-vow\-before\-one''s\-troops;
+部委 > ministries\-and\-commissions;
+難怪 > \(it''s\)\-no\-wonder\-\(that\.\.\.\);
+凍結 > \(loan\,\-wage\,\-price\)\-freeze;
+施加 > exert\-\(effort\-or\-pressure\);
+視窗 > windows\-\(operating\-system\);
+巨著 > monumental\-\(literary\)\-work;
+募化 > to\-collect\-alms\-\(buddhism\);
+部下 > troops\-under\-one''s\-command;
+全程 > \(during\-an\)\-entire\-journey;
+長篇 > lengthy\-\(report\-or\-speech\);
+西湖 > the\-west\-lake\,\-in\-hangzhou;
+撥弄 > move\-to\-and\-fro\-\(with\-hand;
+表記 > something\-given\-as\-a\-token;
+表裡 > the\-outside\-and\-the\-inside;
+逼債 > press\-for\-payment\-of\-debts;
+筆鋒 > the\-tip\-of\-a\-writing\-brush;
+報刊 > newspapers\-and\-periodicals;
+演講 > \(give\)\-a\-speech\-or\-lecture;
+國父 > father\|founder\-of\-a\-nation;
+依靠 > rely\-on\-\(for\-support\,\-etc\);
+所長 > head\-of\-an\-institute\,\-etc\.;
+若干 > a\-certain\-number\|amount\-of;
+競選 > run\-for\-\(electoral\)\-office;
+搶先 > to\-rush\-\(to\-do\-sth\-urgent\);
+停留 > stay\-somewhere\-temporarily;
+病株 > diseased\-or\-infected\-plant;
+俗稱 > be\-commonly\-referred\-to\-as;
+行將 > be\-about\-to\-\(do\-something\);
+足球 > football\-\(british\-english\);
+背脊 > the\-back\-of\-the\-human\-body;
+抗擊 > resist\-\(a\-military\-attack\);
+尋機 > to\-look\-for\-an\-opportunity;
+實況 > what\-is\-actually\-happening;
+丁雲 > ding\-yun\-\(a\-personal\-name\);
+案板 > kneading\-or\-chopping\-board;
+保守 > \(politically\)\-conservative;
+不送 > don''t\-bother\-to\-see\-me\-out;
+神道 > shinto\-\(japanese\-religion\);
+將就 > accept\-\(a\-bit\-reluctantly\);
+懷抱 > \(within\-someone''s\)\-embrace;
+右邊 > right\-\(as\-opposed\-to\-left\);
+社論 > editorial\-\(in\-a\-newspaper\);
+家常 > the\-daily\-life\-of\-a\-family;
+書聖 > a\-great\-calligraphy\-master;
+資本 > capital\-\(as\-in\-capitalism\);
+風琴 > organ\-\(musical\-instrument\);
+字帖 > copybook\-\(for\-calligraphy\);
+安分 > not\-go\-beyond\-one''s\-bounds;
+暗笑 > laugh\-in\-\(up\)\-one''s\-sleeve;
+美玲 > mei\-ling\-\(a\-person''s\-name\);
+碧血 > blood\-shed\-in\-a\-just\-cause;
+洪森 > hun\-sen\-\(cambodian\-leader\);
+稟告 > report\-\(to\-one''s\-superior\);
+遺體 > remains\-\(of\-a\-dead\-person\);
+避風 > take\-shelter\-from\-the\-wind;
+福建 > fujian\-\(province\-of\-china\);
+勘誤 > to\-correct\-printing\-errors;
+升級 > to\-escalate\-\(in\-intensity\);
+強調 > to\-emphasize\-\(a\-statement\);
+而且 > not\-only\-\.\.\.\-but\-also\-\.\.\.\.;
+遷都 > to\-move\-the\-capitol\-\(city\);
+不但 > not\-only\-\(\.\.\.\-but\-also\.\.\.\);
+包產 > make\-a\-production\-contract;
+北朝 > the\-northern\-dynasties\-\(a;
+包攬 > undertake\-the\-whole\-thing;
+勞教 > reeducation\-through\-labor;
+半場 > half\-of\-a\-game\-or\-contest;
+發達 > developed\-\(country\,\-etc\.\);
+瀉露 > to\-leak\-out\-\(information\);
+歲數 > age\-\(number\-of\-years\-old\);
+開設 > offer\-\(goods\-or\-services\);
+廣東 > guangdong\-province\,\-china;
+放心 > to\-set\-one''s\-mind\-at\-rest;
+魯迅 > name\-of\-an\-author\,\-lu\-xun;
+遙望 > to\-look\-into\-the\-distance;
+補足 > bring\-up\-to\-full\-strength;
+熬夜 > stay\-up\-late\-or\-all\-night;
+體驗 > to\-experience\-for\-oneself;
+撕毀 > tear\-up\-\(a\-contract\,\-etc\);
+傾銷 > to\-dump\-\(goods\,\-products\);
+看法 > way\-of\-looking\-at\-a\-thing;
+關注 > follow\-\(an\-issue\)\-closely;
+剝啄 > tap\-\(on\-a\-door\-or\-window\);
+辨析 > differentiate\-and\-analyse;
+國產 > made\-in\-one''s\-own\-country;
+白族 > the\-bai\-\(pai\)\-nationality;
+病癒 > recover\-\(from\-an\-illness\);
+寬限 > extend\-\(a\-deadline\,\-etc\.\);
+表態 > make\-known\-one''s\-position;
+宣誓 > swear\-an\-oath\-\(of\-office\);
+拜望 > call\-to\-pay\-one''s\-respect;
+篇幅 > \(take\-up\-or\-devote\)\-space;
+首相 > \(japanese\)\-prime\-minister;
+把式 > person\-skilled\-in\-a\-trade;
+淘籮 > basket\-\(for\-washing\-rice\);
+甥女 > niece\-\(sister''s\-daughter\);
+漢人 > han\-chinese\-person\|people;
+伺機 > to\-watch\-for\-one''s\-chance;
+頸部 > the\-neck\-area\-of\-the\-body;
+背影 > a\-view\-of\-somebody''s\-back;
+狡賴 > to\-deny\-\(through\-sophism\);
+變賣 > sell\-off\-\(one''s\-property\);
+決賽 > finals\-\(of\-a\-competition\);
+板書 > writing\-on\-the\-blackboard;
+珀斯 > perth\-\(city\-in\-australia\);
+愛憐 > show\-tender\-affection\-for;
+暴漲 > rise\-suddenly\-and\-sharply;
+錄共 > to\-take\-down\-a\-confession;
+本家 > a\-member\-of\-the\-same\-clan;
+面臨 > be\-faced\-with\-\(a\-problem\);
+池湯 > large\-pool\-in\-a\-bathhouse;
+獎勵 > reward\-\(as\-encouragement\);
+順差 > \(trade\-or\-budget\)\-surplus;
+初選 > \(us\)\-primaries\-\(election\);
+報銷 > submit\-an\-expense\-account;
+叔叔 > father''s\-younger\-brother;
+城關 > area\-outside\-a\-city\-gate;
+運算 > \(mathematical\)\-operation;
+州長 > governor\-\(of\-a\-us\-state\);
+部屬 > affiliated\-to\-a\-ministry;
+引擎 > engine\-\(transliteration\);
+登記 > to\-register\-\(one''s\-name\);
+機組 > flight\-crew\-\(on\-a\-plane\);
+遼寧 > liaoning\-province\,\-china;
+照常 > \(business\,\-etc\)\-as\-usual;
+撫摸 > gently\-caress\-and\-stroke;
+切斷 > cut\-off\-\(a\-supply\,\-etc\.\);
+建制 > organizational\-structure;
+退役 > retire\-from\-the\-military;
+違反 > to\-violate\-\(a\-law\,\-e\.g\.\);
+幫廚 > help\-in\-the\-mess\-kitchen;
+補稅 > pay\-a\-tax\-one\-has\-evaded;
+襲擊 > \(make\-a\)\-surprise\-attack;
+白淨 > \(of\-skin\)\-fair\-and\-clear;
+巡查 > to\-go\-around\-and\-inspect;
+兵書 > a\-book\-on\-the\-art\-of\-war;
+產銷 > production\-and\-marketing;
+闌尾 > appendix\-\(in\-human\-body\);
+幅員 > a\-country''s\-surface\-area;
+撥付 > appropriate\-sum\-of\-money;
+國營 > state\-run\-\(company\,\-etc\);
+損失 > a\-\(financial\,\-etc\.\)\-loss;
+辦公 > handle\-official\-business;
+余震 > \(earthquake\)\-aftershocks;
+畚箕 > a\-bamboo\-or\-wicker\-scoop;
+突顯 > make\-something\-stand\-out;
+握力 > \(strength\-of\-one''s\)\-grip;
+馬裡 > mali\-\(name\-of\-a\-country\);
+病態 > morbid\-or\-abnormal\-state;
+控制 > to\-\(have\)\-control\-\(over\);
+佳能 > canon\-\(japanese\-company\);
+病家 > a\-patient\-and\-his\-family;
+疑惑 > \(a\-sense\-of\)\-uncertainty;
+打牌 > to\-play\-mahjong\-or\-cards;
+做客 > to\-be\-a\-guest\-or\-visitor;
+行使 > exercise\-\(a\-right\,\-etc\.\);
+筆挺 > \(standing\)\-very\-straight;
+安神 > calm\-\(soothe\)\-the\-nerves;
+聳肩 > to\-shrug\-one''s\-shoulders;
+深空 > deep\-space\-\(outer\-space\);
+唐納 > tanner\-\(english\-surname\);
+呈請 > to\-submit\-\(to\-superiors\);
+上訴 > appeal\-\(a\-judicial\-case\);
+懷念 > to\-cherish\-the\-memory\-of;
+特點 > characteristic\-\(feature\);
+字母 > letter\-\(of\-the\-alphabet\);
+同謀 > to\-conspire\-with\-someone;
+桃園 > taoyuan\-\(city\-in\-taiwan\);
+江面 > the\-surface\-of\-the\-river;
+碑額 > the\-top\-part\-of\-a\-tablet;
+伴奏 > to\-accompany\-\(musically\);
+右翼 > \(politically\)\-right\-wing;
+浙江 > zhejiang\-province\,\-china;
+識見 > knowledge\-and\-experience;
+買帳 > to\-show\-respect\-\(for\-sb\);
+暗箭 > attack\-by\-a\-hidden\-enemy;
+深圳 > shenzhen\-\(city\-in\-china\);
+程度 > degree\-\(level\-or\-extent\);
+大關 > \(reach\-a\)\-critical\-point;
+頭版 > \(newspaper''s\)\-front\-page;
+春聯 > spring\-festivel\-couplets;
+以來 > since\-\(a\-previous\-event\);
+蓮花 > lotus\-\(computer\-company\);
+不日 > within\-the\-next\-few\-days;
+諒解 > \(reach\)\-an\-understanding;
+蓋章 > to\-affix\-a\-seal\-\(to\-sth\);
+觸電 > to\-get\-an\-electric\-shock;
+主動 > \(to\-take\-the\)\-initiative;
+訴說 > tell\-\(to\-another\-person\);
+總統 > president\-\(of\-a\-country\);
+報頭 > masthead\-\(of\-a\-newspaper;
+南沙 > nansha\-\(spratly\)\-islands;
+通道 > \(communications\)\-channel;
+政績 > \(political\)\-achievements;
+忌恨 > hate\-\(due\-to\-envy\,\-etc\);
+雹災 > disaster\-caused\-by\-hail;
+出訪 > visit\-a\-foreign\-country;
+斑斑 > full\-of\-stains\-or\-spots;
+西裝 > \(western\-style\)\-clothes;
+加油 > to\-make\-an\-extra\-effort;
+募捐 > to\-solict\-contributions;
+皴裂 > chap\-\(lips\,\-skin\,\-etc\.\);
+見聞 > what\-one\-sees\-and\-hears;
+南京 > nanjing\-\(city\-in\-china\);
+規約 > terms\-\(of\-an\-agreement\);
+歸心 > converted\-to\-\(religion\);
+逼死 > hound\-somebody\-to\-death;
+統治 > \(political\)\-rule\-\(over\);
+補課 > make\-up\-a\-missed\-lesson;
+這樣 > this\-\(kind\-of\,\-sort\-of\);
+達成 > to\-reach\-\(an\-agreement\);
+百般 > in\-hundred\-and\-one\-ways;
+授計 > to\-confide\-a\-plan\-to\-sb;
+報曉 > herald\-the\-break\-of\-day;
+利市 > \"lai\-see\"\-\(lucky\-money\);
+側重 > place\-extra\-emphasis\-on;
+報恩 > pay\-a\-debt\-of\-gratitude;
+幫子 > outer\-\(of\-cabbage\,\-etc\);
+自豪 > \(feel\-a\-sense\-of\)\-pride;
+防務 > \(pertaining\-to\)\-defense;
+業績 > outstanding\-achievement;
+留言 > to\-leave\-one''s\-comments;
+年來 > over\-the\-last\-\.\.\.\-years;
+開拍 > begin\-shooting\-\(a\-film\);
+分之 > \(indicating\-a\-fraction\);
+答謝 > to\-express\-one''s\-thanks;
+筆談 > conversation\-by\-writing;
+瑪麗 > mali\-\(a\-person''s''\-name\);
+症狀 > symptom\-\(of\-an\-illness\);
+佔領 > to\-occupy\-\(a\-territory\);
+備料 > get\-the\-materials\-ready;
+坦克 > tank\-\(military\-vehicle\);
+四川 > sichuan\-province\,\-china;
+販運 > to\-transport\-\(for\-sale\);
+今譯 > modern\-language\-version;
+投放 > to\-put\-in\-\(circulation\);
+病倒 > be\-down\-with\-an\-illness;
+拷問 > to\-question\-via\-torture;
+患難 > trials\-and\-tribulations;
+鍛煉 > to\-do\-physical\-training;
+蛙泳 > \(swimming\)\-breaststroke;
+怎麼 > \(interrogative\-pronoun\);
+駐守 > \(man\-a\-post\-and\)\-defend;
+溫和 > moderate\-\(policy\,\-etc\.\);
+否認 > to\-declare\-to\-be\-untrue;
+江西 > jiangxi\-province\,\-china;
+愛撫 > to\-show\-tender\-care\-for;
+參與 > to\-participate\-\(in\-sth\);
+港人 > hong\-kong\-person\|people;
+黃河 > yellow\-river\-\(huang\-he\);
+江蘇 > jiangsu\-province\,\-china;
+任命 > to\-appoint\-and\-nominate;
+餅子 > maize\-or\-millet\-pancake;
+期攷 > end\-of\-term\-examination;
+總額 > total\-\(amount\-or\-value\);
+謂語 > \(grammatical\)\-predicate;
+中旬 > middle\-third\-of\-a\-month;
+下旬 > last\-third\-of\-the\-month;
+貝克 > baker\-\(english\-surname\);
+亂吃 > to\-eat\-indiscriminantly;
+恩怨 > \(feeling\-of\)\-resentment;
+不外 > not\-beyond\-the\-scope\-of;
+服刑 > serve\-a\-prison\-sentence;
+莫非 > can\-it\-be\-possible\-that;
+廣西 > guangxi\-province\,\-china;
+奔瀉 > \(of\-torrents\)\-rush\-down;
+遺留 > \(leave\-or\-be\-a\)\-legacy;
+常規 > conventional\-\(weapons\);
+證券 > \(financial\)\-securities;
+往常 > habitually\-in\-the\-past;
+妖冶 > pretty\-and\-flirtatious;
+革命 > \(political\)\-revolution;
+論壇 > forum\-\(for\-discussion\);
+壟斷 > enjoy\-market\-dominance;
+牡丹 > peony\-\(type\-of\-flower\);
+報稅 > declare\-dutiable\-goods;
+公認 > publicly\-known\-\(to\-be\);
+發表 > to\-issue\-\(a\-statement\);
+電器 > \(electrical\)\-appliance;
+殷勤 > politely\,\-solicitously;
+到期 > become\-due\-\(eg\,\-loans\);
+病院 > a\-specialized\-hospital;
+病象 > symptom\-\(of\-a\-disease\);
+欺凌 > to\-bully\-and\-humiliate;
+遍及 > to\-extend\-\(everywhere\);
+簽署 > to\-sign\-\(an\-agreement\);
+報導 > to\-cover\-\(report\)\-news;
+布朗 > english\-surname\,\-brown;
+標準 > \(an\-official\)\-standard;
+退休 > retirement\-\(from\-work\);
+趨附 > to\-ingratiation\-onself;
+筆跡 > a\-person''s\-handwriting;
+盡力 > do\-one''s\-best\-\(effort\);
+筆記 > take\-down\-\(in\-writing\);
+褥子 > cotton\-padded\-mattress;
+病狀 > symptom\-\(of\-a\-disease\);
+儘快 > as\-quickly\-as\-possible;
+激昂 > aroused\-to\-indignation;
+童話 > children''s\-fairy\-tales;
+提交 > submit\-\(a\-report\,\-etc\);
+供職 > hold\-an\-office\-or\-post;
+來自 > to\-come\-from\-\(a\-place\);
+病征 > symptom\-\(of\-a\-disease\);
+定語 > attributive\-\(modifier\);
+漂流 > carried\-by\-the\-current;
+棄權 > to\-abstain\-from\-voting;
+捏合 > to\-act\-as\-a\-go\-between;
+甲板 > deck\-\(of\-a\-boat\,\-etc\.\);
+捏估 > to\-act\-as\-a\-go\-between;
+梅派 > the\-mei\-lanfang\-school;
+涉過 > ford\-\(a\-stream\,\-river\);
+體內 > internal\-\(to\-the\-body\);
+任職 > hold\-an\-office\-or\-post;
+脊椎 > back\-\(of\-a\-vertibrate\);
+伯父 > father''s\-elder\-brother;
+保安 > ensure\-public\-security;
+上身 > upper\-part\-of\-the\-body;
+字段 > \(numeric\,\-datda\)\-field;
+並舉 > develop\-simultaneously;
+一號 > first\-day\-of\-the\-month;
+審判 > put\-\(someone\)\-to\-trial;
+吐蕃 > ancient\-name\-for\-tibet;
+測定 > to\-survey\-and\-evaluate;
+泰羅 > \(english\-surname\)\-tylo;
+吞聲 > to\-swallow\-one''s\-cries;
+財會 > finance\-and\-accounting;
+交易 > \(business\)\-transaction;
+現役 > \(military\)\-active\-duty;
+民選 > democratically\-elected;
+伯伯 > father''s\-elder\-brother;
+海拔 > height\-above\-sea\-level;
+科技 > science\-and\-technology;
+任免 > to\-appoint\-and\-dismiss;
+亂寫 > to\-write\-without\-basis;
+妖艷 > pretty\-and\-flirtatious;
+零錢 > change\-\(said\-of\-money\);
+不服 > not\-accept\-\(something\);
+鼻兒 > a\-hole\-in\-an\-implement;
+感嘆 > to\-sigh\-\(with\-feeling\);
+化裝 > \(of\-actors\)\-to\-make\-up;
+云南 > yunnan\-province\,\-china;
+服完 > serve\-out\-\(a\-sentence\);
+黃山 > mt\.\-huang\-\(huang\-shan\);
+古波 > gubo\-\(a\-personal\-name\);
+猜拳 > a\-finger\-guessing\-game;
+助詞 > particle\-\(grammatical\);
+讓坐 > to\-give\-up\-one''s\-seat;
+油價 > oil\-\(petroleum\)\-price;
+巨額 > a\-huge\-sum\-\(of\-money\);
+奔放 > bold\-and\-unrestrained;
+得意 > \(be\)\-proud\-of\-oneself;
+奔忙 > be\-busy\-rushing\-about;
+剛直 > upright\-and\-outspoken;
+巡邏 > be\-on\-\(police\)\-patrol;
+降福 > blessings\-from\-heaven;
+炸藥 > explosive\-\(substance\);
+夢想 > to\-dream\-of\-\(in\-vain\);
+防空 > anti\-aircraft\-defense;
+先進 > advanced\-\(technology\);
+奔命 > rush\-about\-on\-errands;
+解決 > to\-settle\-\(a\-dispute\);
+防治 > \(prevention\-and\)\-cure;
+分機 > \(telephone\)\-extension;
+眾望 > people''s\-expectations;
+白糖 > \(refined\)\-white\-sugar;
+擁戴 > to\-support\-\(a\-person\);
+表達 > to\-voice\-\(an\-opinion\);
+報時 > give\-the\-correct\-time;
+隨和 > amiable\-\(disposition\);
+函授 > correspondence\-course;
+迷戀 > to\-be\-infatuated\-with;
+拗陷 > geological\-depression;
+免疫 > immunity\-\(to\-disease\);
+公然 > \(do\-something\)\-openly;
+堅持 > to\-continue\-upholding;
+出差 > be\-on\-a\-business\-trip;
+漸進 > progress\-step\-by\-step;
+限制 > \(impose\)\-restrictions;
+年初 > beginning\-of\-the\-year;
+筆錄 > put\-down\-\(in\-writing\);
+按脈 > feel\-\(take\)\-the\-pulse;
+招聘 > take\-job\-applications;
+光州 > kwangju\-\(south\-korea\);
+工商 > industry\-and\-commerce;
+澳洲 > australia\-\(continent\);
+皮兒 > \(dough\,\-etc\.\)wrappers;
+甘肅 > gansu\-province\,\-china;
+安閒 > peaceful\-and\-carefree;
+艱巨 > very\-difficult\-\(task\);
+蠻橫 > rude\-and\-unreasonable;
+簽字 > to\-sign\-\(a\-signature\);
+安適 > quiet\-and\-comfortable;
+測良 > to\-survey\-and\-measure;
+班車 > regular\-bus\-\(service\);
+案由 > main\-points\-of\-a\-case;
+貶謫 > banish\-from\-the\-court;
+黃魚 > yellow\-croaker\-\(fish\);
+身世 > one''s\-life\-experience;
+抱恨 > have\-a\-gnawing\-regret;
+自古 > \(since\)\-ancient\-times;
+笆斗 > round\-bottomed\-basket;
+二號 > 2\-nd\-day\-of\-the\-month;
+財經 > finance\-and\-economics;
+主語 > \(grammatical\)\-subject;
+嘖嘖 > to\-click\-one''s\-tongue;
+鼻祖 > the\-earliest\-ancestor;
+戀愛 > to\-have\-a\-love\-affair;
+暴跌 > steep\-fall\-\(in\-price\);
+讓開 > to\-get\-out\-of\-the\-way;
+就便 > at\-\(your\)\-convenience;
+可身 > to\-fit\-well\-\(clothes\);
+科研 > \(scientific\)\-research;
+可謂 > it\-could\-even\-be\-said;
+讓路 > to\-make\-way\-\(for\-sth\);
+戶主 > head\-of\-the\-household;
+頒行 > issue\-for\-enforcement;
+湖南 > hunan\-province\,\-china;
+餘數 > \(numerical\)\-remainder;
+不管 > no\-matter\-\(what\,\-how\);
+版面 > space\-of\-a\-whole\-page;
+不禁 > can''t\-help\-\(doing\-sth;
+昏迷 > to\-lose\-consciousness;
+吐絮 > the\-opening\-of\-a\-boll;
+鋪平 > spread\-out\-\(material\);
+不理 > refuse\-to\-acknowledge;
+變臉 > suddenly\-turn\-hostile;
+海斯 > hayes\-\(microcomputer\);
+東德 > \(former\)\-east\-germany;
+暗礁 > submerged\-reef\-\(rock\);
+買好 > to\-ingratiate\-oneself;
+暗疾 > unmentionable\-disease;
+聳動 > to\-create\-a\-sensation;
+板凳 > wooden\-bench\-or\-stool;
+不暇 > have\-no\-time\-\(for\-sth;
+悲憤 > grief\-and\-indignation;
+特產 > special\-local\-product;
+蕭條 > \(economic\)\-depression;
+殯葬 > funeral\-and\-interment;
+命令 > \(an\)\-order\-or\-command;
+流亡 > to\-\(force\-into\)\-exile;
+卑污 > despicable\-and\-filthy;
+暴卒 > die\-of\-sudden\-illness;
+逼視 > look\-at\-from\-close\-up;
+旺月 > busy\-\(business\)\-month;
+列車 > train\-\(railway\-term\);
+友好 > friendly\-\(relations\);
+櫃邊 > to\-lie\-on\-one''s\-side;
+制裁 > \(economic\)\-sanctions;
+社交 > \(social\)\-interaction;
+操行 > \(student''s\)\-behavior;
+姥姥 > maternal\-grandmother;
+編組 > organize\-into\-groups;
+親近 > get\-close\-to\-someone;
+結論 > \(reach\-a\)\-conclusion;
+闡述 > expound\-\(a\-position\);
+心寒 > be\-very\-disappointed;
+組裝 > assemble\-and\-install;
+誓死 > to\-pledge\-one''s\-life;
+城鄉 > city\-and\-countryside;
+協定 > \(reach\-an\)\-agreement;
+水域 > \(territorial\)\-waters;
+勻整 > neat\-and\-well\-spaced;
+內閣 > \(government\)\-cabinet;
+廠牌 > brand\-\(of\-a\-product\);
+奶奶 > paternal\-grandmother;
+編次 > order\-of\-arrangement;
+教授 > university\-professor;
+勢必 > is\-bound\-to\-\(happen\);
+墨汁 > prepared\-chinese\-ink;
+大將 > a\-general\-or\-admiral;
+氣人 > to\-get\-someone\-angry;
+包場 > book\-a\-whole\-theatre;
+六號 > 6th\-day\-of\-the\-month;
+詞彙 > \(list\-of\)\-vocabulary;
+攝影 > to\-take\-a\-photograph;
+辯白 > offer\-an\-explanation;
+採訪 > cover\-\(a\-news\-story\);
+兵站 > army\-service\-station;
+軍費 > military\-expenditure;
+據悉 > according\-to\-reports;
+前年 > the\-year\-before\-last;
+補色 > complementary\-colour;
+攻勢 > \(military\)\-offensive;
+分擔 > share\-responsibility;
+開發 > exploit\-\(a\-resource\);
+歷代 > successive\-dynasties;
+近日 > in\-the\-past\-few\-days;
+回訪 > \(pay\-a\)\-return\-visit;
+病變 > pathological\-changes;
+凌晨 > early\-in\-the\-morning;
+籠統 > \(in\)\-general\-\(terms\);
+槳狀 > certificate\-of\-merit;
+倚重 > to\-rely\-heavily\-upon;
+把酒 > raise\-one''s\-wine\-cup;
+軍用 > \(for\)\-military\-\(use\);
+保重 > take\-care\-of\-oneself;
+報仇 > to\-revenge\-\(oneself\);
+抄身 > to\-search\-\(a\-person\);
+棉襖 > cotton\-padded\-jacket;
+儘早 > as\-early\-as\-possible;
+培修 > to\-repair\-earthworks;
+尊重 > to\-value\-\(something\);
+病灶 > focus\-\(of\-infection\);
+侵襲 > to\-invade\-and\-attack;
+簡朴 > simple\-and\-unadorned;
+駁運 > transport\-by\-lighter;
+例言 > introductory\-remarks;
+備查 > for\-future\-reference;
+安逸 > easy\-and\-comfortable;
+病房 > ward\-\(of\-a\-hospital\);
+表彰 > cite\-\(in\-dispatches\);
+拜會 > pay\-an\-official\-call;
+專程 > special\-purpose\-trip;
+偽幣 > counterfeit\-currency;
+才略 > ability\-and\-sagacity;
+層次 > arrangement\-of\-ideas;
+筆法 > technique\-of\-writing;
+交通 > \(automobile\)\-traffic;
+啟程 > set\-out\-on\-a\-journey;
+畫報 > pictorial\-\(magazine\);
+侵擾 > to\-invade\-and\-harass;
+屏幕 > \(tv\-or\-movie\)\-screen;
+球網 > net\-\(for\-ball\-games\);
+漢化 > chinese\-localization;
+對峙 > mutual\-confrontation;
+美軍 > us\-army\|armed\-forces;
+位於 > be\-situated\-\(in\,\-at\);
+變頻 > frequency\-conversion;
+單字 > individual\-character;
+清早 > early\-in\-the\-morning;
+背心 > a\-sleeveless\-garment;
+戶口 > registered\-residence;
+本科 > undergraduate\-course;
+便中 > at\-one''s\-convenience;
+寶劍 > a\-double\-edged\-sword;
+醞釀 > mull\-over\-\(an\-issue\);
+暗號 > secret\-signal\-\(sign\);
+老爺 > maternal\-grandfather;
+班期 > schedule\-\(for\-flight;
+買方 > buyer\-\(in\-contracts\);
+安娜 > anna\-\(person''s\-name\);
+責成 > give\-somebody\-a\-task;
+多麼 > how\-\(wonderful\,\-etc\);
+酬謝 > to\-thank\-with\-a\-gift;
+往返 > to\-go\-back\-and\-forth;
+包金 > cover\-with\-gold\-leaf;
+暑熱 > hot\-\(summer\)\-weather;
+不曾 > never\-\(have\-done\-sth;
+總部 > general\-headquarters;
+貶值 > to\-become\-devaluated;
+遺骸 > \(dead\)\-human\-remains;
+遺骨 > \(dead\)\-human\-remains;
+酬答 > to\-thank\-with\-a\-gift;
+類推 > to\-reason\-by\-analogy;
+和好 > to\-become\-reconciled;
+本土 > one''s\-native\-country;
+亞倫 > aaron\-\(a\-man''s\-name\);
+羞恥 > \(a\-feeling\-of\)\-shame;
+哈佛 > harvard\-\(university\);
+暑期 > summer\-vacation\-time;
+呼喊 > shout\-\(slogans\,\-etc\);
+繽紛 > in\-riotous\-profusion;
+呈報 > to\-\(submit\-a\)\-report;
+半白 > fifty\-\(years\-of\-age\);
+𠁥 > the\-horns\-of\-a\-sheep;
+昂然 > upright\-and\-unafraid;
+還說 > to\-add\-\(in\-speaking\);
+更加 > more\-\(than\-sth\-else\);
+爺爺 > paternal\-grandfather;
+不勝 > cannot\-bear\-or\-stand;
+敗胃 > spoil\-one''s\-appetite;
+變心 > cease\-to\-be\-faithful;
+上個 > first\-\(of\-two\-parts\);
+奔流 > flow\-at\-great\-speed;
+日文 > japanese\-\(language\);
+撞見 > to\-meet\-by\-accident;
+差額 > balance\-\(financial\);
+半截 > half\-\(of\-a\-section\);
+剛纔 > \(just\)\-a\-moment\-ago;
+廠礦 > factories\-and\-mines;
+熱烈 > warm\-\(welcome\,\-etc\);
+辯護 > speak\-in\-defence\-of;
+大批 > large\-quantities\-of;
+綁票 > kidnap\-\(for\-ransom\);
+白銅 > copper\-nickel\-alloy;
+統稱 > collectively\-called;
+廢氣 > waste\-\(exhaust\)\-gas;
+包子 > steamed\-stuffed\-bun;
+紅葉 > red\-autumnal\-leaves;
+百貨 > general\-merchandise;
+鬢髮 > hair\-on\-the\-temples;
+儘量 > as\-much\-as\-possible;
+身高 > \(a\-person''s\)\-height;
+教學 > teacher\-and\-student;
+鄙人 > your\-humble\-servant;
+故宮 > the\-imperial\-palace;
+政局 > political\-situation;
+睿智 > wise\-and\-farsighted;
+補角 > supplementary\-angle;
+進攻 > attack\-\(militarily\);
+擺弄 > move\-back\-and\-forth;
+遍布 > be\-found\-everywhere;
+改名 > to\-change\-ones\-name;
+補考 > make\-up\-examination;
+播弄 > order\-subject\-about;
+年底 > the\-end\-of\-the\-year;
+約櫃 > ark\-of\-the\-covenant;
+幫工 > help\-with\-farm\-work;
+報廢 > report\-as\-worthless;
+抬頭 > to\-raise\-one''s\-head;
+執掌 > wield\-\(power\,\-etc\.\);
+兵權 > military\-leadership;
+逼供 > extort\-a\-confession;
+開放 > lift\-\(restrictions\);
+登月 > go\-\(up\)\-to\-the\-moon;
+幣值 > value\-of\-a\-currency;
+冰場 > skating\-or\-ice\-rink;
+目前 > at\-the\-present\-time;
+筆譯 > written\-translation;
+筆試 > written\-examination;
+關切 > be\-deeply\-concerned;
+走開 > get\-out\-of\-the\-way\!;
+覆亡 > fall\-\(of\-an\-empire\);
+裁斷 > consider\-and\-decide;
+紀元 > beginning\-of\-an\-era;
+兵團 > large\-military\-unit;
+辦事 > to\-handle\-\(affairs\);
+糾偏 > to\-correct\-an\-error;
+才識 > ability\-and\-insight;
+按理 > according\-to\-reason;
+輔幣 > fractional\-currency;
+搭伴 > travel\-with\-another;
+國旗 > flag\-\(of\-a\-country\);
+軍政 > army\-and\-government;
+病況 > state\-of\-an\-illness;
+轉向 > change\-of\-direction;
+白卷 > blank\-examine\-paper;
+八仙 > the\-eight\-immortals;
+較大 > comparatively\-large;
+筆算 > do\-a\-sum\-in\-writing;
+裁奪 > consider\-and\-decide;
+提出 > to\-raise\-\(an\-issue\);
+白人 > white\-man\-and\-woman;
+做法 > way\-of\-doing\-things;
+抽煙 > smoke\-\(a\-cigarette\);
+表情 > \(facial\)\-expression;
+補助 > \(financial\)\-subsidy;
+膠片 > \(photographic\)\-film;
+病情 > state\-of\-an\-illness;
+柔道 > \(the\-sport\-of\)\-judo;
+採制 > collect\-and\-process;
+抄獲 > to\-search\-and\-seize;
+表姐 > older\-female\-cousin;
+軟件 > \(computer\)\-software;
+招待 > to\-receive\-\(guests\);
+拜年 > pay\-a\-new\-year\-call;
+互通 > to\-intercommunicate;
+篡位 > to\-seize\-the\-throne;
+罷黜 > dismiss\-from\-office;
+屬實 > turn\-out\-to\-be\-true;
+派遣 > send\-\(on\-a\-mission\);
+並重 > lay\-equal\-stress\-on;
+才學 > talent\-and\-learning;
+耕耘 > plowing\-and\-weeding;
+慈祥 > \(a\)\-kindly\-\(person\);
+安樂 > peace\-and\-happiness;
+騙取 > to\-gain\-by\-cheating;
+涼爽 > cool\-and\-refreshing;
+黨組 > leading\-party\-group;
+例外 > \(make\-an\)\-exception;
+議題 > topic\-of\-discussion;
+資源 > \(natural\)\-resources;
+商會 > chamber\-of\-commerce;
+赤字 > \(financial\)\-deficit;
+並聯 > parallel\-connection;
+財源 > financial\-resources;
+量變 > quantitative\-change;
+耐煩 > patient\-\(adjective\);
+丙綸 > polypropylene\-fibre;
+決議 > \(pass\-a\)\-resolution;
+錯字 > incorrect\-character;
+伴唱 > vocal\-accompaniment;
+識貨 > to\-know\-what''s\-what;
+官員 > government\-official;
+稟性 > natural\-disposition;
+預習 > to\-prepare\-a\-lesson;
+流派 > school\-\(of\-thought\);
+哀憐 > feel\-compassion\-for;
+財寶 > money\-and\-valuables;
+耐心 > patient\-\(adjective\);
+日語 > japanese\-\(language\);
+事宜 > \(make\)\-arrangements;
+敗類 > scum\-of\-a\-community;
+旗袍 > chinese\-style\-dress;
+徐行 > walk\-slowly\,\-stroll;
+財力 > financial\-resources;
+藏族 > tibetan\-nationality;
+照顧 > take\-\(good\)\-care\-of;
+讓步 > \(make\-a\)\-concession;
+邊遠 > far\-from\-the\-center;
+擺闊 > parade\-one''s\-wealth;
+晴朗 > sunny\-and\-cloudless;
+悲壯 > solemn\-and\-stirring;
+罷市 > shopkeeper''s\-strike;
+不妨 > there\-is\-no\-harm\-in;
+大腸 > the\-large\-intestine;
+丹參 > salvia\-miltiorrhiza;
+零落 > withered\-and\-fallen;
+得知 > \(find\-out\-and\)\-know;
+罷官 > dismiss\-from\-office;
+變故 > an\-unforeseen\-event;
+恐怕 > \(i''m\)\-afraid\-\(that\);
+不問 > pay\-no\-attention\-to;
+廠規 > factory\-regulations;
+預定 > schedule\-in\-advance;
+不凡 > out\-of\-the\-ordinary;
+敗績 > be\-utterly\-defeated;
+暴利 > sudden\-huge\-profits;
+罪名 > a\-\(criminal\)\-charge;
+不乏 > there\-is\-no\-lack\-of;
+合同 > \(business\)\-contract;
+幫辦 > assist\-in\-managing;
+酬應 > social\-interaction;
+無論 > no\-matter\-what\|how;
+原定 > originally\-planned;
+通行 > licence\-\(computer\);
+司令 > commanding\-officer;
+糾集 > to\-gather\-together;
+送行 > to\-see\-someone\-off;
+違約 > to\-break\-a\-promise;
+危局 > perilous\-situation;
+撥號 > dial\-\(a\-telephone\);
+變修 > become\-revisionist;
+違章 > to\-break\-the\-rules;
+網管 > network\-management;
+蒙文 > mongolian\-language;
+性交 > sexual\-intercourse;
+物價 > \(commodity\)\-prices;
+後天 > day\-after\-tomorrow;
+太平 > peace\-and\-security;
+矚望 > to\-look\-forward\-to;
+協助 > provide\-assistance;
+採風 > collect\-folk\-songs;
+描金 > to\-outline\-in\-gold;
+助教 > teaching\-assistant;
+夫婦 > a\-\(married\)\-couple;
+英語 > english\-\(language\);
+運氣 > luck\-\(good\-or\-bad\);
+採錄 > collect\-and\-record;
+熊掌 > bear\-paw\-\(as\-food\);
+新兵 > new\-\(army\)\-recruit;
+斃命 > meet\-violent\-death;
+失事 > \(have\-an\)\-accident;
+電信 > telecommunications;
+捨身 > to\-give\-one''s\-life;
+芝蘭 > irises\-and\-orchids;
+改口 > to\-correct\-oneself;
+政務 > government\-affairs;
+內科 > medical\-department;
+元素 > \(chemical\)\-element;
+加入 > to\-become\-a\-member;
+選區 > electoral\-district;
+土著 > native\,\-aboriginal;
+操守 > personal\-integrity;
+傲視 > turn\-up\-one''s\-nose;
+莫如 > it\-would\-be\-better;
+結帳 > to\-settle\-accounts;
+四處 > all\-over\-the\-place;
+違例 > to\-break\-the\-rules;
+坦率 > frank\-\(discussion\);
+運作 > thread\-\(computing\);
+週刊 > weekly\-publication;
+保駕 > escort\-the\-emperor;
+共有 > to\-have\-altogether;
+報喜 > announce\-good\-news;
+跑電 > electrical\-leakage;
+撥刺 > splash\-\(of\-a\-fish\);
+拜見 > pay\-a\-formal\-visit;
+英文 > english\-\(language\);
+初中 > junior\-high\-school;
+抄道 > to\-take\-a\-shortcut;
+演說 > \(deliver\-a\)\-speech;
+要地 > strategic\-location;
+辦報 > to\-run\-a\-newspaper;
+出任 > start\-in\-a\-new\-job;
+內情 > inside\-information;
+開展 > \(begin\-to\)\-develop;
+俄語 > russian\-\(language\);
+山腳 > foot\-of\-a\-mountain;
+公司 > \(business\)\-company;
+拉票 > campaign\-for\-votes;
+手術 > surgical\-operation;
+八卦 > the\-eight\-diagrams;
+體溫 > \(body\)\-temperature;
+漂移 > drift\-\(electrical\);
+停滯 > be\-at\-a\-standstill;
+官邸 > official\-residence;
+拜渴 > pay\-a\-formal\-visit;
+軍官 > \(military\)\-officer;
+筆直 > perfectly\-straight;
+產生 > to\-come\-into\-being;
+駐華 > stationed\-in\-china;
+授受 > to\-give\-and\-accept;
+疫情 > epidemic\-situation;
+深造 > advanced\-\(studies\);
+捨命 > to\-risk\-one''s\-life;
+裁並 > cut\-down\-and\-merge;
+使節 > \(diplomatic\)\-envoy;
+至少 > \(to\-say\-the\)\-least;
+買賣 > buying\-and\-selling;
+測繪 > to\-survey\-and\-draw;
+背約 > break\-an\-agreement;
+路徑 > route\-\(networking\);
+舉例 > to\-give\-an\-example;
+俄文 > russian\-\(language\);
+才智 > ability\-and\-wisdom;
+打拳 > to\-do\-shadowboxing;
+脈欂 > beating\-\(of\-heart\);
+自主 > to\-act\-for\-oneself;
+期貨 > futures\-\(on\-goods\);
+侵截 > to\-hack\-\(computer\);
+頭髮 > hair\-\(on\-the\-head\);
+質疑 > call\-into\-question;
+首次 > for\-the\-first\-time;
+梆子 > watchman''s\-clapper;
+油餅 > deep\-fried\-pancake;
+泄露 > leak\-\(information\);
+投入 > put\-into\-operation;
+析疑 > to\-resolve\-a\-doubt;
+藏語 > tibetan\-\(language\);
+木耳 > edible\-tree\-fungus;
+喘息 > to\-gasp\-for\-breath;
+棄世 > to\-leave\-this\-word;
+愛稱 > term\-of\-endearment;
+專員 > assistant\-director;
+頓足 > stamp\-\(one''s\-feet\);
+現有 > currently\-existing;
+鼻樑 > bridge\-of\-the\-nose;
+參贊 > diplomatic\-officer;
+並立 > exist\-side\-by\-side;
+貿易 > \(commercial\)\-trade;
+酬酢 > to\-exchange\-toasts;
+浪涌 > \(electrical\)\-surge;
+佔先 > to\-take\-precedence;
+背光 > be\-in\-a\-poor\-light;
+深夜 > very\-late\-at\-night;
+露面 > appear\-\(in\-public\);
+商務 > commercial\-affairs;
+猜疑 > harbour\-suspicions;
+貴姓 > what\-is\-your\-name\?;
+猙獰 > mean\-and\-ferocious;
+液壓 > hydraulic\-pressure;
+鼻塞 > have\-a\-stuffy\-nose;
+點心 > light\-refreshments;
+期待 > to\-look\-forward\-to;
+海域 > territorial\-waters;
+比試 > have\-a\-competition;
+外資 > foreign\-investment;
+電路 > \(electric\)\-circuit;
+中將 > lieutenant\-general;
+文藝 > literature\-and\-art;
+版稅 > royalty\-\(on\-books\);
+情報 > \(spy\)\-intelligence;
+編遣 > reorganize\-\(troops;
+泰山 > taishan\-\(mountain\);
+悉尼 > sydney\-\(australia\);
+薄情 > inconstant\-in\-love;
+民用 > \(for\)\-civilian\-use;
+編譯 > translate\-and\-edit;
+福利 > \(material\)\-welfare;
+同學 > \(fellow\)\-classmate;
+並列 > stand\-side\-by\-side;
+不和 > not\-get\-along\-well;
+不厭 > not\-mind\-doing\-sth;
+反感 > \(strongly\)\-dislike;
+針對 > in\-connection\-with;
+另寄 > to\-mail\-separately;
+變幻 > change\-irregularly;
+報關 > declare\-at\-customs;
+署名 > sign\-\(a\-signature\);
+遊覽 > to\-go\-sight\-seeing;
+外界 > the\-outside\-world;
+變天 > change\-of\-weather;
+比濕 > specific\-humidity;
+德文 > german\-\(language\);
+卑怯 > mean\-and\-cowardly;
+兵馬 > troops\-and\-horses;
+碩士 > master''s\-\(degree\);
+白骨 > bones\-of\-the\-dead;
+照相 > take\-a\-photograph;
+白飯 > plain\-cooked\-rice;
+日子 > a\-\(calendar\)\-date;
+教材 > teaching\-material;
+鄰國 > bordering\-country;
+機製 > machine\-processed;
+長達 > extend\-as\-long\-as;
+化妝 > to\-put\-on\-make\-up;
+難捱 > trying\,\-difficult;
+大局 > general\-situation;
+敏感 > sensitive\-\(issue\);
+紡織 > spinning\-\(thread\);
+大多 > for\-the\-most\-part;
+徒刑 > \(prison\)\-sentence;
+支持 > to\-be\-in\-favor\-of;
+紛紛 > one\-after\-another;
+外國 > foreign\-\(country\);
+捕食 > catch\-and\-feed\-on;
+輔課 > subsidiary\-course;
+八股 > eight\-\-part\-essay;
+平民 > \(ordinary\)\-people;
+郊區 > suburban\-district;
+兩者 > both\-sides\|things;
+部份 > part\-\(of\-a\-whole\);
+白肉 > plain\-boiled\-pork;
+邊塞 > frontier\-fortress;
+石刻 > stone\-inscription;
+緊密 > inseparably\-close;
+邊卡 > border\-checkpoint;
+緩和 > to\-ease\-\(tension\);
+編印 > compile\-and\-print;
+凱旋 > return\-triumphant;
+瀉肚 > to\-have\-diarrhoea;
+白眼 > supercilious\-look;
+眼尖 > to\-have\-good\-eyes;
+報帳 > render\-an\-account;
+補發 > supply\-again\-\(sth;
+把頭 > labour\-contractor;
+屏障 > protective\-screen;
+火星 > mars\-\(the\-planet\);
+騎馬 > ride\-on\-horseback;
+抄錄 > to\-make\-a\-copy\-of;
+揭曉 > announce\-publicly;
+病程 > course\-of\-disease;
+申訴 > to\-appeal\-\(to\-sb\);
+供需 > supply\-and\-demand;
+地殼 > the\-earth''s\-crust;
+閉幕 > the\-curtain\-falls;
+盛名 > famous\-reputation;
+工委 > working\-committee;
+筆調 > \(of\-writing\)\-tone;
+展覽 > to\-put\-on\-display;
+白布 > plain\-white\-cloth;
+工地 > construction\-site;
+棕色 > brown\-\(the\-color\);
+篇目 > table\-of\-contents;
+住院 > to\-be\-in\-hospital;
+搏動 > beat\-rhythmically;
+接待 > receive\-\(a\-visit\);
+兵力 > military\-strength;
+公務 > official\-business;
+拘留 > detain\-\(prisoner\);
+挨次 > one\-after\-another;
+公佈 > publicly\-announce;
+內亂 > internal\-disorder;
+衛星 > \(space\)\-satellite;
+拍照 > to\-take\-a\-picture;
+病故 > die\-of\-an\-illness;
+衝擊 > \(be\-under\)\-attack;
+長久 > \(for\-a\)\-long\-time;
+錄音 > \(sound\)\-recording;
+保祐 > bless\-and\-protect;
+捷報 > report\-of\-success;
+團圓 > to\-have\-a\-reunion;
+授勛 > to\-award\-an\-honor;
+哀鳴 > a\-plaintive\-whine;
+懂行 > to\-know\-the\-ropes;
+軍區 > a\-military\-region;
+保爾 > \(a\-personal\-name\);
+財閥 > financial\-magnate;
+拍攝 > \(shoot\-a\)\-picture;
+考驗 > \(put\-to\-the\)\-test;
+保溫 > heat\-preservation;
+屏氣 > hold\-one''s\-breath;
+稟賦 > natural\-endowment;
+病危 > be\-critically\-ill;
+併發 > be\-complicated\-by;
+財貿 > finance\-and\-trade;
+漢字 > chinese\-character;
+安穩 > smooth\-and\-steady;
+專業 > specialized\-field;
+屏息 > hold\-one''s\-breath;
+趨時 > to\-follow\-fashion;
+仍舊 > still\-\(remaining\);
+拗口 > hard\-to\-pronounce;
+喘氣 > to\-breathe\-deeply;
+拜倒 > prostrate\-oneself;
+才思 > imaginative\-power;
+波音 > boeing\-\(aircraft\);
+作業 > school\-assignment;
+鼓舞 > heartening\-\(news\);
+案情 > details\-of\-a\-case;
+財神 > the\-god\-of\-wealth;
+展出 > to\-put\-on\-display;
+現狀 > current\-situation;
+小報 > tabloid\-newspaper;
+朝聖 > make\-a\-pilgrimage;
+保健 > health\-protection;
+淫水 > sexual\-secretions;
+尋味 > to\-think\-sth\-over;
+板煙 > plug\-\(of\-tobacco\);
+注視 > watch\-attentively;
+法語 > french\-\(language\);
+獨立 > to\-be\-independent;
+走出 > to\-move\-away\-from;
+聲援 > support\-\(a\-cause\);
+礦藏 > mineral\-resources;
+寫信 > to\-write\-a\-letter;
+三維 > three\-dimensional;
+穴居 > to\-live\-in\-a\-cave;
+狀語 > adverbial\-adjunct;
+酬金 > \(monetary\)\-reward;
+財政 > finances\-\(public\);
+安危 > safety\-and\-danger;
+名稱 > name\-\(of\-a\-thing\);
+物質 > \(physical\)\-matter;
+吃穿 > food\-and\-clothing;
+穴位 > acupuncture\-point;
+學位 > educational\-level;
+德語 > german\-\(language\);
+各界 > all\-walks\-of\-life;
+耳子 > handle\-\(on\-a\-pot\);
+思維 > \(line\-of\)\-thought;
+以免 > in\-order\-to\-avoid;
+事實 > \(the\)\-fact\-\(that\);
+本性 > natural\-instincts;
+難題 > difficult\-problem;
+變相 > in\-disguised\-form;
+財務 > financial\-affairs;
+服役 > serve\-in\-the\-army;
+醫療 > medical\-treatment;
+敬重 > to\-respect\-deeply;
+暗河 > underground\-river;
+頸椎 > cervical\-vertibra;
+網點 > node\-in\-a\-network;
+黑客 > hacker\-\(computer\);
+纖芯 > core\-\(of\-a\-fiber\);
+編隊 > form\-into\-columns;
+敗退 > retreat\-in\-defeat;
+本國 > one''s\-own\-country;
+法文 > french\-\(language\);
+語言 > \(spoken\)\-language;
+不屑 > disdain\-to\-do\-sth;
+半票 > half\-price\-ticket;
+獨唱 > \(in\-singing\)\-solo;
+私人 > private\-\(citizen\);
+獲准 > obtain\-permission;
+權鑰 > keys\-of\-authority;
+爆管 > cartridge\-igniter;
+礦床 > \(mineral\)\-deposit;
+止血 > stanch\-\(bleeding\);
+名字 > \(a\-person''s\)\-name;
+台幣 > new\-taiwan\-dollar;
+顧及 > take\-into\-account;
+下去 > go\-down\-\(descend\);
+勻稱 > well\-proportioned;
+不力 > not\-do\-one''s\-best;
+道謝 > to\-express\-thanks;
+硝煙 > smoke\-\(from\-guns\);
+藝人 > performing\-artist;
+教練 > \(athlete''s\)\-coach;
+出院 > to\-leave\-hospital;
+阿里 > ali\-\(proper\-name\);
+附近 > \(in\-the\)\-vicinity;
+牌樓 > decorated\-archway;
+父母 > father\-and\-mother;
+磨子 > mill\,\-millstones;
+后人 > later\-generation;
+識字 > to\-learn\-to\-read;
+心得 > knowledge\-gained;
+求婚 > propose\-marriage;
+編目 > make\-a\-catalogue;
+電流 > electric\-current;
+城鎮 > cities\-and\-towns;
+委員 > committee\-member;
+壁畫 > mural\-\(painting\);
+姓名 > name\-and\-surname;
+是否 > whether\-\(or\-not\);
+總機 > central\-exchange;
+過程 > course\-of\-events;
+熊猴 > assamese\-macaque;
+大會 > general\-assembly;
+基調 > \(speech\)\-keynote;
+誤會 > to\-misunderstand;
+訂票 > to\-issue\-tickets;
+壽桃 > birthday\-peaches;
+巴豆 > \(purging\)\-croton;
+壽星 > god\-of\-longevity;
+入迷 > to\-be\-fascinated;
+明代 > the\-ming\-dynasty;
+退票 > bounce\-\(a\-check\);
+繃子 > embroidery\-frame;
+得出 > obtain\-\(results\);
+免費 > free\-\(of\-charge\);
+遲暮 > past\-one''s\-prime;
+網橋 > \(network\)\-bridge;
+列為 > be\-classified\-as;
+國防 > national\-defence;
+故居 > former\-residence;
+剽悍 > swift\-and\-fierce;
+武官 > military\-attache;
+違憲 > unconstitutional;
+勞動 > \(physical\)\-labor;
+為生 > to\-make\-a\-living;
+公羊 > ram\-\(male\-sheep\);
+船隊 > fleet\-\(of\-ships\);
+廣州 > guangzhou\-\(city\);
+電力 > electrical\-power;
+補血 > enrich\-the\-blood;
+燈光 > \(stage\)\-lighting;
+透支 > \(bank\)\-overdraft;
+迴旋 > maneuvering\-room;
+白磷 > white\-phosphorus;
+報捷 > report\-a\-success;
+訪問 > pay\-a\-visit\-\(to\);
+除夕 > \(new\-year''s\)\-eve;
+辦案 > to\-handle\-a\-case;
+訂單 > \(purchase\)\-order;
+華僑 > overseas\-chinese;
+滑鼠 > mouse\-\(computer\);
+病菌 > harmful\-bacteria;
+進修 > advanced\-studies;
+長江 > changjiang\-river;
+筆頭 > ability\-to\-write;
+幾千 > several\-thousand;
+到了 > in\-\(a\-past\-time\);
+報名 > enter\-one''s\-name;
+出名 > well\-known\-\(for\);
+授獎 > to\-award\-a\-prize;
+體育 > physical\-culture;
+漢語 > chinese\-language;
+兵役 > military\-service;
+畢肖 > resemble\-closely;
+崩漏 > uterine\-bleeding;
+冗員 > excess\-personnel;
+兵士 > ordinary\-soldier;
+要人 > important\-person;
+採擇 > select\-and\-adopt;
+踩線 > step\-on\-the\-line;
+癱子 > paralyzed\-person;
+巨匠 > master\-craftsman;
+閱兵 > to\-review\-troops;
+傲氣 > air\-of\-arrogance;
+便衣 > civilian\-clothes;
+尋訪 > to\-inquire\-after;
+寶貝 > treasured\-object;
+閱世 > to\-see\-the\-world;
+簡明 > simple\-and\-clear;
+安頓 > find\-a\-place\-for;
+公公 > husband''s\-father;
+例語 > example\-sentance;
+閃亮 > brilliant\,\-shiny;
+均勢 > balance\-of\-power;
+保留 > continue\-to\-have;
+人頭 > number\-of\-people;
+接人 > to\-meet\-a\-person;
+國力 > a\-nation''s\-power;
+扮演 > play\-the\-part\-of;
+病因 > cause\-of\-disease;
+軍事 > military\-affairs;
+佔線 > busy\-\(telephone\);
+山村 > mountain\-village;
+屬於 > be\-classified\-as;
+拐彎 > to\-turn\-a\-corner;
+病原 > cause\-of\-disease;
+聚變 > \(nuclear\)\-fusion;
+表冊 > statistical\-form;
+審理 > to\-hear\-\(a\-case\);
+抄本 > handwritten\-copy;
+安置 > find\-a\-place\-for;
+舔吮 > to\-lick\-and\-suck;
+便橋 > temporary\-bridge;
+筆戰 > written\-polemics;
+便服 > everyday\-clothes;
+感謝 > \(express\)\-thanks;
+下馬 > dismount\-a\-horse;
+安眠 > sleep\-peacefully;
+層層 > layer\-upon\-layer;
+筆帽 > the\-cap\-of\-a\-pen;
+貶義 > derogatory\-sense;
+作法 > course\-of\-action;
+演員 > actor\-or\-actress;
+鑒別 > to\-differentiate;
+保密 > maintain\-secrecy;
+筆套 > the\-cap\-of\-a\-pen;
+借助 > to\-get\-help\-from;
+甘地 > \(mahatma\)\-gandhi;
+注重 > pay\-attention\-to;
+懸掛 > \(car\)\-suspension;
+不謝 > don''t\-mention\-it;
+本義 > original\-meaning;
+伴星 > companion\-\(star\);
+保全 > save\-from\-damage;
+抄件 > duplicate\-\(copy\);
+罷課 > student''s\-strike;
+重重 > layer\-upon\-layer;
+應戰 > face\-a\-challenge;
+核威 > nuclear\-strength;
+虜獲 > capture\-\(people\);
+本票 > cashier''s\-cheque;
+例句 > example\-sentance;
+安徽 > anhui\-\(province\);
+蓖麻 > castor\-oil\-plant;
+站台 > railway\-platform;
+理會 > pay\-attention\-to;
+獲益 > obtain\-a\-benefit;
+今昔 > past\-and\-present;
+板栗 > chinese\-chestnut;
+吸管 > \(drinking\)\-straw;
+人數 > number\-of\-people;
+家務 > household\-duties;
+民間 > among\-the\-people;
+婚禮 > wedding\-ceremony;
+警衛 > \(security\)\-guard;
+乾杯 > to\-drink\-a\-toast;
+猿猴 > apes\-and\-monkeys;
+並激 > shunt\-excitation;
+量綱 > dimension\-\(unit\);
+質問 > \(ask\-a\)\-question;
+蒐集 > to\-gather\-\(data\);
+暑瘟 > tropical\-disease;
+博覽 > read\-extensively;
+深入 > penetrate\-deeply;
+丹桂 > orange\-osmanthus;
+板壁 > wooden\-partition;
+某人 > a\-certain\-person;
+月曆 > monthly\-calendar;
+治病 > treat\-an\-illness;
+十誡 > ten\-commandments;
+外長 > foreign\-minister;
+配藥 > dispense\-\(drugs\);
+字串 > character\-string;
+中文 > chinese\-language;
+大選 > general\-election;
+唐代 > the\-tang\-dynasty;
+性病 > venereal\-disease;
+君權 > monarchial\-power;
+藏文 > tibetan\-language;
+讀物 > reading\-material;
+邊防 > frontier\-defence;
+向東 > towards\-the\-east;
+集錦 > best\-of\-the\-best;
+罷教 > teacher''s\-strike;
+外語 > foreign\-language;
+課表 > school\-timetable;
+誤解 > misunderstanding;
+同時 > at\-the\-same\-time;
+不忙 > there''s\-no\-hurry;
+集郵 > stamp\-collecting;
+廠長 > factory\-director;
+變法 > political\-reform;
+波折 > twists\-and\-turns;
+群島 > group\-of\-islands;
+犯法 > to\-break\-the\-law;
+不少 > not\-\(just\)\-a\-few;
+年齡 > \(a\-person''s\)\-age;
+比翼 > fly\-wing\-to\-wing;
+神奇 > magical\-mystical;
+禁品 > contraband\-goods;
+最先 > \(the\)\-very\-first;
+婆家 > husband''s\-family;
+明淨 > bright\-and\-clean;
+重慶 > chongqing\-\(city\);
+婆婆 > husband''s\-mother;
+吃完 > to\-finish\-eating;
+逼近 > press\-on\-towards;
+報館 > newspaper\-office;
+電纜 > \(electric\)\-cable;
+狀態 > state\-of\-affairs;
+中介 > agent\-\(computer\);
+不光 > not\-the\-only\-one;
+暑天 > hot\-\(summer\)\-day;
+華語 > chinese\-language;
+不僅 > not\-the\-only\-one;
+反對 > to\-fight\-against;
+不久 > not\-long\-\(after\);
+天父 > heavenly\-father;
+特徵 > characteristics;
+暑假 > summer\-vacation;
+擺脫 > break\-away\-from;
+半數 > half\-the\-number;
+冰霜 > moral\-integrity;
+勻溜 > even\-and\-smooth;
+原委 > the\-whole\-story;
+特寫 > feature\-article;
+春天 > spring\-\(season\);
+止痛 > to\-relieve\-pain;
+叛亂 > armed\-rebellion;
+文檔 > \(computer\)\-file;
+緬甸 > myanmar\-\(burma\);
+失望 > be\-disappointed;
+網站 > network\-station;
+開門 > open\-\(the\)\-door;
+經管 > be\-in\-charge\-of;
+半天 > half\-of\-the\-day;
+語族 > language\-branch;
+往年 > in\-former\-years;
+日報 > daily\-newspaper;
+光電 > opto\-electrical;
+語支 > language\-branch;
+白鐵 > galvanized\-iron;
+雅歌 > song\-of\-solomon;
+彼岸 > the\-other\-shore;
+配合 > coordinate\-with;
+報系 > newspaper\-chain;
+標量 > scalar\-quantity;
+南北 > north\-and\-south;
+比容 > specific\-volume;
+盈虧 > profit\-and\-loss;
+勸導 > try\-to\-convince;
+陣營 > group\-of\-people;
+幾百 > several\-hundred;
+大寫 > capital\-letters;
+過活 > live\-one''s\-life;
+牌位 > memorial\-tablet;
+早些 > \(a\-bit\)\-earlier;
+課外 > extracurricular;
+收拾 > to\-put\-in\-order;
+網段 > network\-segment;
+弟弟 > younger\-brother;
+遲早 > sooner\-or\-later;
+矮小 > short\-and\-small;
+比價 > price\-relations;
+新任 > newly\-appointed;
+霸佔 > forcibly\-occupy;
+病魔 > serious\-illness;
+常用 > in\-common\-usage;
+冰磚 > ice\-cream\-brick;
+白菜 > chinese\-cabbage;
+強加 > impose\-by\-force;
+外事 > foreign\-affairs;
+邊地 > border\-district;
+舌面 > blade\-of\-tongue;
+著作 > a\-literary\-work;
+白米 > \(polished\)\-rice;
+瀕臨 > on\-the\-verge\-of;
+損益 > profit\-and\-loss;
+選單 > \(software\)\-menu;
+執法 > law\-enforcement;
+進展 > to\-make\-headway;
+為此 > for\-this\-reason;
+廠史 > factory\-history;
+光磁 > magneto\-optical;
+隘口 > \(mountain\)\-pass;
+網址 > \(internet\)\-site;
+畫面 > \(picture\)\-frame;
+菜地 > vegetable\-field;
+畜類 > domestic\-animal;
+抱養 > adopt\-\(a\-child\);
+城樓 > city\-gate\-tower;
+採種 > seed\-collecting;
+花白 > grizzled\-\(hair\);
+屍體 > \(lifeless\)\-body;
+圖簽 > \(computer\)\-icon;
+巴望 > look\-forward\-to;
+層雲 > stratus\-\(cloud\);
+籌碼 > bargaining\-chip;
+降價 > price\-reduction;
+標樁 > \(marking\)\-stake;
+閉會 > close\-a\-meeting;
+純屬 > pure\-and\-simple;
+光榮 > honor\-and\-glory;
+辦學 > to\-run\-a\-school;
+標杆 > surveyor''s\-pole;
+幣制 > currency\-system;
+報到 > report\-for\-duty;
+年份 > particular\-year;
+基地 > \(military\)\-base;
+光明 > bright\-\(future\);
+保釋 > release\-on\-bail;
+射頻 > radio\-frequency;
+鬥爭 > struggle\-\(with\);
+裡根 > \(ronald\)\-reagan;
+抗衡 > contend\-against;
+級別 > \(military\)\-rank;
+筆誤 > a\-slip\-of\-a\-pen;
+八寶 > eight\-treasures;
+百年 > a\-hundred\-years;
+摘借 > to\-borrow\-money;
+圖標 > \(computer\)\-icon;
+長官 > senior\-official;
+入境 > enter\-a\-country;
+兒媳 > daughter\-in\-law;
+臂紗 > \(black\)\-armband;
+軍校 > military\-school;
+把舵 > hold\-the\-rudder;
+被捕 > be\-under\-arrest;
+首長 > senior\-official;
+百十 > a\-hundred\-or\-so;
+坐好 > to\-sit\-properly;
+畜生 > domestic\-animal;
+錦雞 > golden\-pheasant;
+自殺 > to\-kill\-oneself;
+高昂 > in\-high\-spirits;
+穿過 > to\-pass\-through;
+備戰 > prepare\-for\-war;
+安身 > make\-one''s\-home;
+游說 > drum\-up\-support;
+至於 > go\-so\-far\-as\-to;
+生物 > living\-creature;
+戶籍 > census\-register;
+校舍 > school\-building;
+善良 > good\-and\-honest;
+軍備 > \(military\)\-arms;
+首腦 > head\-\(of\-state\);
+安葬 > bury\-\(the\-dead\);
+極力 > do\-at\-all\-costs;
+跑步 > to\-walk\-quickly;
+貶詞 > derogatory\-term;
+互連 > interconnection;
+悲鳴 > utter\-sad\-calls;
+滿意 > to\-be\-satisfied;
+海運 > shipping\-by\-sea;
+留學 > to\-study\-abroad;
+便條 > \(informal\)\-note;
+甚或 > so\-much\-so\-that;
+山峰 > \(mountain\)\-peak;
+溫柔 > gentle\-and\-soft;
+高中 > high\-and\-middle;
+胃病 > stomach\-trouble;
+同齡 > of\-the\-same\-age;
+吸音 > sound\-absorbing;
+麻醉 > to\-anaesthetize;
+投奔 > to\-seek\-shelter;
+例會 > regular\-meeting;
+餅肥 > cake\-fertilizer;
+暴雨 > torrential\-rain;
+便宴 > informal\-dinner;
+上述 > above\-mentioned;
+實彈 > live\-ammunition;
+產值 > value\-of\-output;
+祝賀 > to\-congratulate;
+以為 > consider\-\(that\);
+核彈 > nuclear\-warhead;
+上課 > to\-attend\-class;
+符合 > in\-keeping\-with;
+技倆 > tricky\-maneuver;
+泰語 > thai\-\(language\);
+寵壞 > spoil\-\(a\-child\);
+交界 > common\-boundary;
+三萬 > thirty\-thousand;
+貨源 > supply\-of\-goods;
+窗帘 > window\-curtains;
+期票 > promissory\-note;
+口語 > spoken\-language;
+私營 > privately\-owned;
+寒假 > winter\-vacation;
+哀歌 > a\-mournful\-song;
+牽連 > \(be\)\-implicated;
+性行 > sexual\-activity;
+學士 > bachelor\-degree;
+負擔 > \(bear\-a\)\-burden;
+一秘 > first\-secretary;
+藥瓶 > medicine\-bottle;
+慚愧 > \(to\-be\)\-ashamed;
+人才 > talented\-person;
+不甘 > unreconciled\-to;
+班子 > organized\-group;
+每隔 > at\-intervals\-of;
+愛戴 > love\-and\-esteem;
+愛戀 > be\-in\-love\-with;
+杭州 > hangzhou\-\(city\);
+問世 > to\-be\-published;
+悲泣 > weep\-with\-grief;
+法理 > legal\-principle;
+秩序 > order\-\(orderly\);
+政黨 > political\-party;
+名片 > \(business\)\-card;
+旅費 > travel\-expenses;
+財團 > financial\-group;
+沙石 > sand\-and\-stones;
+禁果 > forbidden\-fruit;
+郵遞 > to\-send\-by\-mail;
+析出 > to\-seperate\-out;
+奔襲 > long\-range\-raid;
+板刷 > scrubbing\-brush;
+服從 > obey\-\(an\-order\);
+施行 > to\-put\-in\-place;
+罰款 > \(impose\-a\)\-fine;
+雌雄 > male\-and\-female;
+邊音 > lateral\-\(sound\);
+母語 > native\-language;
+母親 > mother\-\(formal\);
+泰文 > thai\-\(language\);
+磁盤 > \(computer\)\-disk;
+媳婦 > daughter\-in\-law;
+礦業 > mining\-industry;
+流失 > be\-drained\-away;
+引起 > to\-give\-rise\-to;
+𣎴 > stump\-of\-a\-tree;
+證物 > exhibit\-\(legal\);
+縫補 > darn\-\(clothing\);
+編選 > select\-and\-edit;
+上學 > to\-go\-to\-school;
+頻帶 > frequency\-range;
+庭長 > presiding\-judge;
+政見 > political\-views;
+悲嘆 > sigh\-mournfully;
+頻寬 > frequency\-range;
+半生 > half\-a\-lifetime;
+博物 > natural\-science;
+郵票 > \(postage\)\-stamp;
+恰好 > as\-it\-turns\-out;
+氣溫 > air\-temperature;
+矮胖 > short\-and\-stout;
+語系 > language\-system;
+變形 > be\-out\-of\-shape;
+南海 > south\-china\-sea;
+美元 > american\-dollar;
+世人 > \(common\)\-people;
+名單 > list\-\(of\-names\);
+電磁 > electromagnetic;
+民權 > civil\-liberties;
+據說 > it\-is\-said\-that;
+原性 > original\-nature;
+數百 > several\-hundred;
+操課 > military\-drill;
+協會 > an\-association;
+文物 > cultural\-relic;
+通訊 > communications;
+危房 > decrepit\-house;
+特工 > secret\-service;
+電燈 > electric\-light;
+北極 > the\-north\-pole;
+預付 > pay\-in\-advance;
+殺氣 > murderous\-look;
+磁場 > magnetic\-field;
+牙床 > alveolar\-ridge;
+參加 > to\-participate;
+民意 > public\-opinion;
+妹妹 > younger\-sister;
+往日 > in\-former\-days;
+勘測 > to\-investigate;
+冰釋 > \(of\-misgivings;
+大樓 > large\-building;
+怪人 > strange\-person;
+營業 > to\-do\-business;
+塑膠 > plastic\-cement;
+晚上 > in\-the\-evening;
+散步 > to\-take\-a\-walk;
+識別 > to\-distinguish;
+失控 > out\-of\-control;
+數月 > several\-months;
+往復 > to\-reciprocate;
+靶場 > shooting\-range;
+糖醋 > sweet\-and\-sour;
+帳號 > account\-number;
+爪子 > \(animal''s\)\-paw;
+別管 > no\-matter\-\(who;
+刨程 > planing\-length;
+素菜 > vegetable\-dish;
+開車 > to\-drive\-a\-car;
+煙火 > smoke\-and\-fire;
+轉運 > transportation;
+巡警 > police\-officer;
+放映 > show\-\(a\-movie\);
+製造 > to\-manufacture;
+利率 > interest\-rates;
+輿論 > public\-opinion;
+弱小 > small\-and\-weak;
+敝屣 > worn\-out\-shoes;
+矮子 > a\-short\-person;
+速決 > quick\-decision;
+關稅 > \(customs\)\-duty;
+白蘇 > common\-perilla;
+比值 > specific\-value;
+基督 > jesus\-\(christ\);
+探路 > to\-find\-a\-path;
+遙控 > remote\-control;
+遙感 > remote\-sensing;
+白色 > white\-\(colour\);
+撥款 > allocate\-funds;
+廠工 > factory\-worker;
+正好 > just\-\(in\-time\);
+探視 > pay\-a\-visit\-to;
+判明 > to\-distinguish;
+引咎 > take\-the\-blame;
+壁報 > wall\-newspaper;
+改善 > to\-make\-better;
+造成 > to\-bring\-about;
+幫會 > secret\-society;
+操心 > to\-worry\-about;
+白種 > the\-white\-race;
+補缺 > fill\-a\-vacancy;
+西歐 > western\-europe;
+逕庭 > very\-different;
+補綴 > mend\-\(clothes\);
+集中 > to\-concentrate;
+遲到 > to\-arrive\-late;
+報復 > make\-reprisals;
+真情 > real\-situation;
+巨流 > strong\-current;
+退學 > to\-quit\-school;
+廉價 > cheaply\-priced;
+病號 > sick\-personnel;
+團結 > \(hold\-a\)\-rally;
+圍繞 > revolve\-around;
+近年 > recent\-year\(s\);
+倒閉 > to\-go\-bankrupt;
+冷戰 > \(the\)\-cold\-war;
+價目 > \(marked\)\-price;
+病脈 > abnormal\-pulse;
+漸變 > gradual\-change;
+通信 > to\-communicate;
+紀念 > to\-commemorate;
+開會 > have\-a\-meeting;
+全景 > panoramic\-view;
+刀叉 > knife\-and\-fork;
+布帛 > cloth\-and\-silk;
+找錢 > to\-give\-change;
+補液 > fluid\-infusion;
+起點 > starting\-point;
+報分 > call\-the\-score;
+挺立 > to\-stand\-erect;
+八成 > eighty\-percent;
+兩手 > double\-tactics;
+採油 > oil\-extraction;
+跨越 > to\-step\-across;
+跑道 > athletic\-track;
+握拳 > to\-make\-a\-fist;
+握手 > to\-shake\-hands;
+精干 > crack\-\(troops\);
+長征 > the\-long\-march;
+病痛 > slight\-illness;
+英寸 > \(english\)\-inch;
+標尺 > surveyor''s\-rod;
+將軍 > \(army\)\-general;
+兩國 > both\-countries;
+全國 > entire\-country;
+輩子 > all\-one''s\-life;
+長城 > the\-great\-wall;
+表決 > decide\-by\-vote;
+成都 > chengdu\-\(city\);
+鬥智 > battle\-of\-wits;
+八千 > eight\-thousand;
+病歷 > medical\-record;
+伸開 > to\-stretch\-out;
+演示 > to\-demonstrate;
+畢生 > all\-one''s\-life;
+握別 > to\-shake\-hands;
+傳播 > to\-disseminate;
+入伍 > enter\-the\-army;
+首都 > capital\-\(city\);
+潔淨 > cleanse\-\(sins\);
+舌根 > back\-of\-tongue;
+傍晚 > in\-the\-evening;
+行政 > administration;
+小聲 > in\-a\-low\-voice;
+篡改 > to\-tamper\-with;
+截至 > up\-to\-\(a\-time\);
+起草 > draft\-\(a\-bill\);
+挨打 > take\-a\-beating;
+層理 > stratification;
+球鞋 > athletic\-shoes;
+鍋貼 > fried\-dumpling;
+授命 > to\-give\-orders;
+核能 > nuclear\-energy;
+浮點 > floating\-point;
+生火 > to\-make\-a\-fire;
+自從 > since\-\(a\-time\);
+寶石 > precious\-stone;
+棄櫻 > abandoned\-baby;
+產權 > property\-right;
+齒輪 > \(machine\)\-gear;
+侵犯 > to\-infringe\-on;
+血壓 > blood\-pressure;
+病員 > sick\-personnel;
+減肥 > to\-lose\-weight;
+代表 > representative;
+畫展 > art\-exhibition;
+生效 > to\-take\-effect;
+才氣 > liteary\-talent;
+期間 > period\-of\-time;
+專欄 > special\-column;
+學籍 > school\-roll\(s\);
+禁食 > fast\-\(not\-eat\);
+某種 > some\-kind\-\(of\);
+將會 > will\,\-going\-to;
+豎起 > hold\-up\-\(high\);
+寶書 > treasured\-book;
+吃驚 > to\-be\-startled;
+導彈 > guided\-missile;
+清爽 > fresh\-and\-cool;
+互聯 > interconnected;
+唱片 > \(vinyl\)\-record;
+二者 > both\-\[of\-them\];
+才子 > gifted\-scholar;
+侵害 > to\-encroach\-on;
+寶庫 > treasure\-house;
+保單 > guarantee\-slip;
+小學 > primary\-school;
+仔畜 > newborn\-animal;
+本色 > natural\-colour;
+來往 > to\-come\-and\-go;
+題跋 > short\-comments;
+不解 > not\-understand;
+懮慮 > \(feel\)\-anxiety;
+余悸 > lingering\-fear;
+成就 > accomplishment;
+容忍 > to\-put\-up\-with;
+罷論 > abandoned\-idea;
+患處 > afflicted\-part;
+架構 > infrastructure;
+穴播 > bunch\-planting;
+懷孕 > to\-be\-pregnant;
+職業 > job\-occupation;
+任期 > term\-of\-office;
+不興 > out\-of\-fashion;
+球棒 > \(baseball\)\-bat;
+資格 > qualifications;
+東海 > east\-china\-sea;
+東歐 > eastern\-europe;
+任憑 > no\-matter\-what;
+今朝 > at\-the\-present;
+作品 > works\-\(of\-art\);
+憋悶 > feel\-oppressed;
+飼槽 > feeding\-trough;
+警車 > police\-vehicle;
+寒冷 > cold\-\(climate\);
+安好 > safe\-and\-sound;
+液晶 > liquid\-crystal;
+參觀 > to\-look\-around;
+可能 > might\-\(happen\);
+首先 > first\-\(of\-all\);
+液態 > liquid\-\(state\);
+孕婦 > pregnant\-woman;
+乘法 > multiplication;
+定價 > to\-set\-a\-price;
+暗箱 > camera\-bellows;
+減刑 > reduce\-penalty;
+一生 > all\-one''s\-life;
+中歐 > central\-europe;
+犯罪 > \(commit\)\-crime;
+份兒 > degree\,\-extent;
+特色 > characteristic;
+中斷 > to\-discontinue;
+秕子 > blighted\-grain;
+現任 > at\-the\-present;
+有待 > not\-yet\-\(done\);
+題材 > subject\-matter;
+礦泉 > mineral\-spring;
+毛衣 > \(wool\)\-sweater;
+責任 > responsibility;
+半職 > part\-time\-work;
+顯得 > appear\-\(to\-be\);
+研製 > to\-manufacture;
+不忍 > cannot\-bear\-to;
+媽咪 > mummy\-\(mother\);
+波恩 > bonn\-\(germany\);
+敗訴 > lose\-a\-lawsuit;
+壽衣 > burial\-clothes;
+擺鐘 > pendulum\-clock;
+北緯 > north\-latitude;
+及格 > to\-pass\-a\-test;
+法庭 > court\-\(of\-law\);
+這類 > this\-kind\-\(of\);
+主修 > \(school\)\-major;
+變成 > to\-change\-into;
+不合 > not\-conform\-to;
+斑竹 > mottled\-bamboo;
+不及 > not\-as\-good\-as;
+分類 > classification;
+重建 > reconstruction;
+請看 > please\-see\-\.\.\.;
+類別 > classification;
+氫氣 > hydrogen\-\(gas\);
+數種 > numerous\-types;
+破產 > to\-go\-bankrupt;
+冰點 > freezing\-point;
+華裔 > ethnic\-chinese;
+不仁 > not\-benevolent;
+收聽 > to\-listen\-\(to\);
+菲菲 > very\-fragrant;
+昂揚 > high\-spirited;
+早晨 > early\-morning;
+磁帶 > magnetic\-tape;
+解調 > to\-demodulate;
+北海 > the\-north\-sea;
+薄利 > small\-profits;
+晚報 > evening\-paper;
+星座 > constellation;
+冰鞋 > skating\-boots;
+廠絲 > filature\-silk;
+矛盾 > contradictory;
+出賣 > to\-sell\-\(off\);
+到處 > in\-all\-places;
+古代 > ancient\-times;
+新月 > crescent\-moon;
+即將 > on\-the\-eve\-of;
+卑微 > petty\-and\-low;
+危害 > to\-jeopardize;
+刨花 > wood\-shavings;
+莨菪 > black\-henbane;
+調查 > investigation;
+綁腿 > leg\-wrappings;
+列舉 > \(make\-a\)\-list;
+適用 > be\-applicable;
+摘記 > to\-take\-notes;
+元首 > head\-of\-state;
+方式 > way\-\(of\-life\);
+日夜 > day\-and\-night;
+芝麻 > sesame\-\(seed\);
+牌坊 > memorial\-arch;
+前生 > pre\-existence;
+昇值 > rise\-in\-value;
+米飯 > \(cooked\)\-rice;
+轉道 > make\-a\-detour;
+長途 > long\-distance;
+日前 > the\-other\-day;
+墜毀 > \(plane\)\-crash;
+雙手 > pair\-of\-hands;
+南亞 > southern\-asia;
+刊登 > carry\-a\-story;
+誇張 > to\-exaggerate;
+難忘 > unforgettable;
+早上 > early\-morning;
+太太 > married\-woman;
+撥用 > appropriation;
+境況 > circumstances;
+民事 > civil\-matters;
+女佣 > \(female\)\-maid;
+勘察 > reconnaisance;
+籌集 > collect\-money;
+操演 > demonstration;
+幻燈 > latern\-slides;
+加快 > to\-accelerate;
+冰糖 > crystal\-sugar;
+國際 > international;
+鬥雞 > cock\-fighting;
+形勢 > circumstances;
+過時 > old\-fashioned;
+隨意 > as\-one\-wishes;
+失利 > suffer\-defeat;
+損耗 > wear\-and\-tear;
+相當 > equivalent\-to;
+逐步 > progressively;
+幾次 > several\-times;
+巨細 > big\-and\-small;
+幾樣 > several\-kinds;
+大使 > an\-ambassador;
+編審 > read\-and\-edit;
+強化 > to\-strengthen;
+避孕 > contraception;
+大事 > a\-major\-event;
+教友 > church\-member;
+速效 > quick\-results;
+利於 > be\-beneficial;
+敗北 > suffer\-defeat;
+初期 > initial\-stage;
+詢問 > inquire\-about;
+死刑 > death\-penalty;
+兵痞 > army\-riffraff;
+體重 > \(body\)\-weight;
+白砒 > white\-arsenic;
+相架 > picture\-frame;
+垂直 > perpendicular;
+境地 > circumstances;
+兵營 > military\-camp;
+市民 > city\-resident;
+隨便 > as\-one\-wishes;
+庭園 > flower\-garden;
+轟炸 > \(drop\-a\)\-bomb;
+過去 > \(in\-the\)\-past;
+艦艇 > naval\-vessels;
+冰期 > glacial\-epoch;
+關於 > pertaining\-to;
+剛剛 > just\-recently;
+廠主 > factory\-owner;
+再次 > one\-more\-time;
+權力 > \(wield\)\-power;
+連同 > together\-with;
+簿籍 > account\-books;
+橫掃 > to\-sweep\-away;
+度假 > go\-on\-holiday;
+異質 > heterogeneous;
+車站 > \(bus\)\-station;
+備至 > to\-the\-utmost;
+跑鞋 > running\-shoes;
+報單 > taxation\-form;
+鑒賞 > to\-appreciate;
+這位 > this\-\(person\);
+困窘 > embarrassment;
+降世 > come\-to\-earth;
+便飯 > a\-simple\-meal;
+輻條 > \(wheel\)\-spoke;
+打開 > to\-break\-open;
+發揮 > bring\-to\-bear;
+開心 > to\-feel\-happy;
+實驗 > to\-experiment;
+轉彎 > turn\-\(around\);
+案頭 > on\-one''s\-desk;
+辨別 > differentiate;
+抄襲 > to\-plagiarize;
+辦到 > to\-accomplish;
+先後 > in\-succession;
+畜肥 > animal\-manure;
+拉美 > latin\-america;
+核電 > nuclear\-power;
+越野 > cross\-country;
+駁雜 > heterogeneous;
+公園 > a\-public\-park;
+百姓 > common\-people;
+災區 > disaster\-area;
+構成 > to\-constitute;
+保藏 > keep\-in\-store;
+瑞香 > winter\-daphne;
+拌種 > seed\-dressing;
+籌措 > raise\-\(money\);
+棄置 > to\-throw\-away;
+賣點 > selling\-point;
+開列 > \(make\-a\)\-list;
+瘦弱 > thin\-and\-weak;
+白匪 > white\-bandits;
+肉體 > physical\-body;
+備案 > put\-on\-record;
+鬥志 > will\-to\-fight;
+扁荳 > hyacinth\-bean;
+百倍 > a\-hundredfold;
+筆筒 > pen\-container;
+寶藍 > sapphire\-blue;
+滲碳 > carburization;
+渡過 > to\-cross\-over;
+字集 > character\-set;
+空運 > air\-transport;
+表層 > surface\-layer;
+圓周 > circumference;
+病害 > plant\-disease;
+售貨 > to\-sell\-goods;
+舌尖 > tip\-of\-tongue;
+案稱 > counter\-scale;
+消防 > fire\-fighting;
+喉結 > adam''s''\-apple;
+島國 > island\-nation;
+鬧事 > cause\-trouble;
+京都 > kyoto\-\(japan\);
+四千 > four\-thousand;
+當年 > in\-those\-days;
+財迷 > money\-grubber;
+理解 > to\-comprehend;
+密碼 > \(secret\)\-code;
+築城 > fortification;
+衛兵 > \(body\)\-guard\);
+疑問 > interrogation;
+喉痧 > scarlet\-fever;
+個性 > individuality;
+啟示 > enlightenment;
+致函 > send\-a\-letter;
+意識 > consciousness;
+聯絡 > communication;
+拜別 > take\-leave\-of;
+扁擔 > carrying\-pole;
+哀號 > cry\-piteously;
+桂林 > guilin\-\(city\);
+金黃 > golden\-yellow;
+跨國 > transnational;
+演出 > \(acting\)\-play;
+吃飯 > to\-eat\-a\-meal;
+不通 > be\-obstructed;
+戒指 > \(finger\)\-ring;
+少將 > major\-general;
+杜絕 > put\-an\-end\-to;
+暗鎖 > built\-in\-lock;
+懲戒 > to\-discipline;
+下課 > class\-is\-over;
+不詳 > not\-in\-detail;
+反響 > repercussions;
+宿怨 > an\-old\-grudge;
+單子 > list\-of\-items;
+貢獻 > to\-contribute;
+叫醒 > to\-call\-awake;
+美術 > the\-fine\-arts;
+能夠 > be\-capable\-of;
+家屬 > family\-member;
+鼻淵 > nasosinusitis;
+懂得 > to\-understand;
+半點 > the\-least\-bit;
+鉛筆 > \(lead\)\-pencil;
+單向 > undirectional;
+受賄 > accept\-bribes;
+例假 > legal\-holiday;
+水面 > water\-surface;
+移殖 > to\-transplant;
+起伏 > ups\-and\-downs;
+變調 > modified\-tone;
+友誼 > companionship;
+移植 > to\-transplant;
+哀樂 > funeral\-music;
+富于 > to\-be\-full\-of;
+聲帶 > vocal\-cord\(s\);
+不知 > unknowing\(ly\);
+孫女 > granddaughter;
+涼快 > nice\-and\-cold;
+三百 > three\-hundred;
+京戲 > beijing\-opera;
+低于 > be\-lower\-than;
+南部 > southern\-part;
+清單 > list\-of\-items;
+變色 > change\-colour;
+北面 > northern\-side;
+上班 > to\-go\-to\-work;
+各種 > every\-kind\-of;
+貝彫 > shell\-carving;
+日軍 > japanese\-army;
+南越 > south\-vietnam;
+情況 > circumstances;
+愛憎 > love\-and\-hate;
+職員 > office\-worker;
+洋溢 > brimming\-with;
+協調 > to\-coordinate;
+大阪 > osaka\-\(japan\);
+考慮 > to\-think\-over;
+北部 > northern\-part;
+本意 > original\-idea;
+獨攬 > to\-monopolize;
+吸毒 > to\-take\-drugs;
+泳池 > swimming\-pond;
+一步 > \(single\)\-step;
+北越 > north\-vietnam;
+雜項 > miscellaneous;
+哥哥 > older\-brother;
+外部 > external\-part;
+聞人 > famous\-person;
+京劇 > beijing\-opera;
+和尚 > buddhist\-monk;
+蘇州 > suzhou\-\(city\);
+礦水 > mineral\-water;
+暑氣 > \(summer\)\-heat;
+哀告 > beg\-piteously;
+情形 > circumstances;
+中式 > chinese\-style;
+外貿 > foreign\-trade;
+避難 > \[take\]\-refuge;
+包袱 > cloth\-wrapper;
+感冒 > to\-catch\-cold;
+彩蚌 > painted\-shell;
+禮堂 > assembly\-hall;
+不恭 > disrespectful;
+總計 > \(grand\)\-total;
+娛樂 > entertainment;
+中學 > middle\-school;
+五一 > 5\-1\-\(may\-1st\);
+磁片 > magnetic\-disk;
+會場 > meeting\-place;
+媾和 > to\-make\-peace;
+不巧 > unfortunately;
+上市 > on\-the\-market;
+私利 > personal\-gain;
+遲鈍 > slow\-\(witted\);
+北美 > north\-america;
+經驗 > to\-experience;
+汲水 > to\-draw\-water;
+獲勝 > be\-victorious;
+觀點 > point\-of\-view;
+水牛 > water\-buffalo;
+同年 > the\-same\-year;
+變星 > variable\-star;
+毛筆 > writing\-brush;
+蘇俄 > soviet\-russia;
+步行 > to\-go\-on\-foot;
+別離 > take\-leave\-of;
+擅長 > to\-be\-good\-at;
+不啻 > not\-less\-than;
+大約 > approximately;
+牌照 > license\-plate;
+暗害 > kill\-secretly;
+勃興 > rise\-suddenly;
+前進 > to\-go\-forward;
+變態 > metamorphosis;
+性慾 > sexual\-desire;
+匯率 > exchange\-rate;
+治安 > law\-and\-order;
+欣賞 > to\-appreciate;
+雌花 > female\-flower;
+邦聯 > confederation;
+多種 > many\-kinds\-of;
+吸入 > to\-breathe\-in;
+變工 > exchange\-work;
+受害 > to\-be\-injured;
+決心 > determination;
+下令 > give\-an\-order;
+莫逆 > very\-friendly;
+比熱 > specific\-heat;
+昂昂 > high\-spirited;
+分配 > to\-distribute;
+加緊 > to\-intensify;
+睡覺 > to\-go\-to\-bed;
+早期 > early\-period;
+相關 > interrelated;
+火龍 > fiery\-dragon;
+合作 > to\-cooperate;
+智力 > intelligence;
+忌憚 > be\-afraid\-of;
+昔年 > former\-years;
+礦井 > mine\-\(shaft\);
+熟知 > acquaintance;
+支票 > \(bank\)\-check;
+姐姐 > older\-sister;
+警報 > \(fire\)\-alarm;
+後果 > consequences;
+姊姊 > older\-sister;
+收盤 > market\-close;
+城防 > city\-defence;
+頂住 > to\-withstand;
+西部 > western\-part;
+好感 > good\-opinion;
+失業 > unemployment;
+擅自 > unauthorized;
+逕自 > on\-one''s\-own;
+索賠 > compensation;
+近視 > shortsighted;
+步犁 > walking\-plow;
+相識 > acquaintance;
+開關 > power\-switch;
+去世 > to\-pass\-away;
+培訓 > to\-cultivate;
+多方 > in\-many\-ways;
+搶購 > panic\-buying;
+巡迴 > to\-go\-around;
+這種 > this\-kind\-of;
+大意 > general\-idea;
+別稱 > another\-name;
+步步 > step\-by\-step;
+協商 > consult\-with;
+矮星 > dwarf\-\(star\);
+那時 > at\-that\-time;
+大師 > great\-master;
+組織 > organization;
+通用 > common\-\(use\);
+多工 > to\-multiplex;
+糾葛 > entanglement;
+試探 > to\-sound\-out;
+夫妻 > man\-and\-wife;
+道歉 > to\-apologize;
+故意 > deliberately;
+請問 > may\-i\-ask\.\.\.;
+出發 > to\-start\-out;
+縮寫 > abbreviation;
+壁掛 > wall\-hanging;
+熟悉 > to\-know\-well;
+熟思 > deliberation;
+整天 > all\-day\-long;
+鱉甲 > turtle\-shell;
+身體 > \(human\)\-body;
+糾纏 > be\-entangled;
+複製 > to\-duplicate;
+隊旗 > team\-pennant;
+加強 > to\-reinforce;
+出獄 > leave\-prison;
+談判 > to\-negotiate;
+看病 > see\-a\-doctor;
+很不 > very\-un\-\.\.\.\.;
+毅力 > perseverance;
+落實 > to\-implement;
+支店 > branch\-store;
+白薯 > sweet\-potato;
+綵旗 > colored\-flag;
+回顧 > to\-look\-back;
+殭化 > become\-rigid;
+瀏覽 > to\-skim\-over;
+課余 > after\-school;
+車道 > traffic\-lane;
+正如 > be\-just\-like;
+紙牌 > playing\-card;
+發紅 > flush\-\(face\);
+集合 > congregation;
+速成 > crash\-course;
+光線 > optical\-line;
+努力 > great\-effort;
+引入 > to\-draw\-into;
+廠址 > factory\-site;
+隨同 > accompanying;
+熒光 > flourescence;
+廣告 > to\-advertise;
+挨近 > get\-close\-to;
+編劇 > write\-a\-play;
+壓倒 > overwhelming;
+採脂 > tree\-tapping;
+熟人 > acquaintance;
+培植 > to\-cultivate;
+速寫 > quick\-sketch;
+週圍 > surroundings;
+濾紙 > filter\-paper;
+機構 > organization;
+訪俄 > visit\-russia;
+拔錨 > weigh\-anchor;
+標燈 > beacon\-light;
+冰晶 > ice\-crystals;
+幾天 > several\-days;
+授精 > insemination;
+髒話 > bad\-language;
+凹岸 > concave\-bank;
+過來 > to\-come\-over;
+操勞 > to\-work\-hard;
+別名 > another\-name;
+光源 > light\-source;
+速凍 > quick\-freeze;
+坐牢 > imprisonment;
+補牙 > fill\-a\-tooth;
+刨刀 > planing\-tool;
+把關 > guard\-a\-pass;
+自衛 > self\-defense;
+陛下 > your\-majesty;
+八月 > eighth\-month;
+備考 > \(an\-appendix;
+年前 > \.\.\.years\-ago;
+簡稱 > abbreviation;
+別人 > other\-people;
+開支 > expenditures;
+捏積 > chiropractic;
+報價 > quoted\-price;
+迷信 > superstition;
+轉換 > to\-transform;
+搬家 > move\-\(house\);
+戶頭 > bank\-account;
+親信 > trusted\-aide;
+行程 > travel\-route;
+嚴竣 > tight\.strict;
+看作 > look\-upon\-as;
+寧願 > would\-rather;
+接枝 > \(tree\)\-graft;
+授權 > to\-authorize;
+開學 > school\-opens;
+保證 > to\-guarantee;
+批評 > to\-criticize;
+拔絲 > wire\-drawing;
+嘆詞 > interjection;
+打賭 > \(make\-a\)\-bet;
+優惠 > preferential;
+公報 > announcement;
+密集 > concentrated;
+授時 > time\-service;
+在旁 > by\-\(a\-place\);
+拼盤 > cold\-platter;
+捐款 > donate\-money;
+國有 > nationalized;
+依賴 > to\-depend\-on;
+系上 > to\-buckle\-up;
+背離 > deviate\-from;
+按照 > according\-to;
+偶然 > incidentally;
+喉鏡 > laryngoscope;
+背陰 > in\-the\-shade;
+演算 > to\-calculate;
+兩千 > two\-thousand;
+插圖 > illustration;
+審議 > deliberation;
+管理 > to\-supervise;
+梅花 > plum\-blossom;
+當然 > only\-natural;
+標價 > mark\-a\-price;
+棒硫 > roll\-sulphur;
+孝順 > filial\-piety;
+饅頭 > steamed\-roll;
+保管 > take\-care\-of;
+垂下 > to\-hang\-down;
+裁員 > to\-cut\-staff;
+清醒 > clear\-headed;
+異步 > asynchronous;
+補充 > to\-replenish;
+便秘 > constipation;
+病床 > hospital\-bed;
+枘鑿 > incompatible;
+嚮往 > to\-yearn\-for;
+自拔 > free\-oneself;
+航天 > space\-flight;
+捲入 > to\-draw\-into;
+高密 > high\-density;
+表土 > surface\-soil;
+賞識 > appreciation;
+慶賀 > congratulate;
+消除 > to\-eliminate;
+街坊 > neighborhood;
+瑞色 > lovely\-color;
+聽說 > to\-hear\-told;
+當心 > to\-take\-care;
+異性 > heterosexual;
+交鋒 > cross\-swords;
+興奮 > \(be\)\-excited;
+宇航 > space\-flight;
+禽類 > bird\-species;
+偽善 > hypocritical;
+抱愧 > feel\-ashamed;
+負責 > in\-charge\-of;
+現行 > be\-in\-effect;
+屈服 > to\-surrender;
+減緩 > to\-slow\-down;
+下齒 > bottom\-teeth;
+媒體 > \(news\)\-media;
+竟然 > unexpectedly;
+驚愕 > astonishment;
+當場 > at\-the\-scene;
+婚齡 > marrying\-age;
+抱屈 > feel\-wronged;
+食譜 > cookery\-book;
+並非 > really\-isn''t;
+突破 > breakthrough;
+侵晨 > towards\-dawn;
+漢城 > seoul\,\-korea;
+少數 > small\-number;
+當初 > at\-that\-time;
+拌和 > mix\-and\-stir;
+流通 > to\-circulate;
+咨詢 > consultative;
+扒拉 > push\-lightly;
+專政 > dictatorship;
+飼草 > forage\-grass;
+鼻腔 > nasal\-cavity;
+浴血 > blood\-soaked;
+依據 > according\-to;
+屬國 > vassal\-state;
+鋼筆 > fountain\-pen;
+偉人 > great\-person;
+安營 > pitch\-a\-camp;
+和解 > conciliatory;
+實施 > to\-implement;
+條子 > a\-short\-note;
+根本 > \(not\)\-at\-all;
+種種 > all\-kinds\-of;
+手帕 > handkerchief;
+法院 > court\-of\-law;
+根據 > according\-to;
+河馬 > hippopotamus;
+生命 > life\-\(force\);
+主角 > leading\-role;
+淫猥 > abominations;
+產卵 > lay\-\(an\-egg\);
+果皮 > \(fruit\)\-peel;
+獨裁 > dictatorship;
+不足 > insufficient;
+家政 > housekeeping;
+不貲 > immeasurable;
+晚餐 > evening\-meal;
+作愛 > to\-make\-love;
+蘇聯 > soviet\-union;
+害怕 > to\-be\-afraid;
+晚間 > evening\-time;
+五百 > five\-hundred;
+和約 > peace\-treaty;
+證驗 > real\-results;
+懊悔 > feel\-remorse;
+扣上 > to\-buckle\-up;
+俄中 > russia\-china;
+一萬 > ten\-thousand;
+變速 > speed\-change;
+安心 > feel\-at\-ease;
+人民 > \(the\)\-people;
+將來 > \(the\)\-future;
+題花 > title\-design;
+可觀 > considerable;
+人權 > human\-rights;
+趕上 > keep\-up\-with;
+股市 > stock\-market;
+移民 > to\-immigrate;
+深愛 > affectionate;
+今晨 > this\-morning;
+密友 > close\-friend;
+存心 > deliberately;
+南非 > south\-africa;
+不符 > inconsistent;
+告示 > announcement;
+丹田 > pubic\-region;
+半響 > half\-the\-day;
+主環 > primary\-ring;
+你們 > you\-\(plural\);
+一直 > continuously;
+姿色 > good\-looking;
+暗算 > plot\-against;
+稍微 > a\-little\-bit;
+亮度 > illumination;
+參考 > consultation;
+人家 > other\-people;
+壯麗 > magnificence;
+黨政 > party\-policy;
+虐待 > mistreatment;
+感恩 > thanksgiving;
+罰球 > penalty\-shot;
+費城 > philadelphia;
+油畫 > oil\-painting;
+美洲 > the\-americas;
+貧困 > impoverished;
+亞太 > asia\-pacific;
+大量 > great\-amount;
+頂用 > to\-be\-of\-use;
+費力 > great\-effort;
+暗灘 > hidden\-shoal;
+藥方 > prescription;
+主持 > preside\-over;
+銀幕 > movie\-screen;
+老家 > native\-place;
+暗潮 > undercurrent;
+買價 > buying\-price;
+多邊 > multilateral;
+現代 > modern\-times;
+他人 > other\-person;
+之後 > after\(wards\);
+慣例 > conventional;
+並排 > side\-by\-side;
+耕地 > ariable\-land;
+暗流 > undercurrent;
+浴場 > bathing\-spot;
+不料 > unexpectedly;
+蓋菜 > leaf\-mustard;
+識破 > to\-penetrate;
+不拘 > not\-stick\-to;
+鼓勵 > to\-encourage;
+鞭砲 > firecrackers;
+感動 > to\-move\-\(sb\);
+意味 > significance;
+不愧 > be\-worthy\-of;
+不意 > unexpectedly;
+靶紙 > target\-sheet;
+愈加 > all\-the\-more;
+遠離 > removed\-from;
+和善 > good\-natured;
+認證 > authenticate;
+刨齒 > gear\-shaping;
+注意 > take\-note\-of;
+𦉆 > to\-break\-off;
+風味 > local\-flavor;
+繡花 > to\-embroider;
+知識 > intellectual;
+暗探 > secret\-agent;
+暴怒 > violent\-rage;
+不容 > not\-tolerate;
+不宜 > not\-suitable;
+犯毒 > illegal\-drug;
+大致 > more\-or\-less;
+好看 > good\-looking;
+不如 > not\-equal\-to;
+得票 > vote\-getting;
+派別 > denomination;
+線軸 > thread\-spool;
+有利 > advantageous;
+訂閱 > subscription;
+恢復 > to\-reinstate;
+這項 > this\-\(thing\);
+可惜 > it\-is\-a\-pity;
+婚外 > extramarital;
+不單 > not\-the\-only;
+運送 > to\-transport;
+之一 > one\-of\-\(sth\);
+境遇 > circumstance;
+野心 > wild\-schemes;
+敗興 > disappointed;
+卻步 > to\-step\-back;
+中俄 > china\-russia;
+危殆 > grave\-danger;
+中亞 > central\-asia;
+變性 > denaturation;
+原料 > raw\-material;
+不利 > unfavourable;
+一千 > one\-thousand;
+爆發 > to\-break\-out;
+多站 > multistation;
+氧氣 > oxygen\-\(gas\);
+念日 > memorial\-day;
+各國 > each\-country;
+不便 > inconvenient;
+時態 > \(verb\)\-tense;
+羅列 > to\-spead\-out;
+一億 > 1\-00\-million;
+復活 > resurrection;
+暴動 > insurrection;
+靶機 > target\-drone;
+運行 > be\-in\-motion;
+編舞 > choreography;
+比照 > according\-to;
+壓縮 > to\-compress;
+訪華 > visit\-china;
+認知 > acknowledge;
+叫喊 > exclamation;
+連詞 > conjunction;
+弊端 > malpractice;
+非核 > non\-nuclear;
+收穫 > acquisition;
+民族 > nationality;
+暗井 > blind\-shaft;
+暗中 > in\-the\-dark;
+矚目 > to\-focus\-on;
+布鞋 > cloth\-shoes;
+埋頭 > steamed\-bun;
+判處 > to\-sentance;
+刻苦 > hardworking;
+標點 > punctuation;
+白麵 > wheat\-flour;
+冒險 > take\-a\-risk;
+白鶴 > white\-crane;
+往昔 > in\-the\-past;
+邊疆 > border\-area;
+讓位 > to\-abdicate;
+怪僻 > peculiarity;
+征收 > levy\-\(fine\);
+母板 > motherboard;
+需求 > requirement;
+大業 > great\-cause;
+旺季 > busy\-season;
+必定 > be\-bound\-to;
+半年 > half\-a\-year;
+課桌 > school\-desk;
+間隔 > compartment;
+遲疑 > to\-hesitate;
+靈感 > inspiration;
+失敗 > be\-defeated;
+說服 > to\-persuade;
+制約 > to\-restrict;
+鞏固 > consolidate;
+包括 > to\-comprise;
+妥善 > appropriate;
+辯証 > dialectical;
+瀉鹽 > epsom\-salts;
+複雜 > complicated;
+即刻 > immediately;
+勘探 > exploration;
+博取 > try\-to\-gain;
+放棄 > to\-renounce;
+冰蛋 > frozen\-eggs;
+阻礙 > to\-obstruct;
+追究 > investigate;
+郵局 > post\-office;
+雙數 > even\-number;
+蒐尋 > to\-look\-for;
+白道 > moon''s\-path;
+動態 > development;
+永久 > everlasting;
+發送 > to\-transmit;
+配備 > to\-allocate;
+謀取 > try\-to\-gain;
+比如 > for\-example;
+多山 > mountainous;
+電工 > electrician;
+紅色 > red\-\(color\);
+描述 > to\-describe;
+十億 > one\-billion;
+兵蟻 > soldier\-ant;
+毀壞 > destruction;
+削減 > to\-cut\-down;
+日中 > japan\-china;
+隨時 > at\-any\-time;
+証書 > certificate;
+長談 > a\-long\-talk;
+大型 > large\-scale;
+補選 > by\-election;
+落後 > fall\-behind;
+推遲 > to\-postpone;
+操法 > drill\-rules;
+軍隊 > army\-troops;
+樹葉 > tree\-leaves;
+剛架 > rigid\-frame;
+談到 > to\-refer\-to;
+再者 > furthermore;
+調制 > to\-modulate;
+基石 > cornerstone;
+往事 > past\-events;
+大功 > great\-merit;
+裁軍 > disarmament;
+誡命 > commandment;
+內臣 > chamberlain;
+坦蕩 > magnanimous;
+探討 > investigate;
+增強 > to\-increase;
+遵守 > comply\-with;
+限於 > restrict\-at;
+閉經 > amenorrhoea;
+認出 > recognition;
+免職 > degradation;
+工程 > engineering;
+記得 > to\-remember;
+擺布 > order\-about;
+透明 > transparent;
+力圖 > try\-hard\-to;
+追查 > investigate;
+典禮 > celebration;
+刑期 > prison\-term;
+精簡 > to\-simplify;
+花茶 > scented\-tea;
+散佈 > disseminate;
+覆滅 > destruction;
+簿記 > bookkeeping;
+觸怒 > provocation;
+攪和 > to\-mix\-\(up\);
+描繪 > to\-describe;
+週年 > anniversary;
+絕望 > desperation;
+敗仗 > lost\-battle;
+增多 > to\-increase;
+結束 > termination;
+無意 > inadvertant;
+邊區 > border\-area;
+相比 > compared\-to;
+覆沒 > annihilated;
+眉梢 > tip\-of\-brow;
+切換 > to\-cut\-over;
+兩百 > two\-hundred;
+評價 > to\-evaluate;
+崩裂 > burst\-apart;
+加以 > in\-addition;
+按鈕 > push\-button;
+農業 > agriculture;
+報應 > retribution;
+幾年 > a\-few\-years;
+盼望 > to\-hope\-for;
+隊員 > team\-member;
+行蹤 > whereabouts;
+支付 > pay\-\(money\);
+表語 > predicative;
+註冊 > to\-register;
+附屬 > subordinate;
+偽軍 > puppet\-army;
+優秀 > outstanding;
+體貼 > considerate;
+執政 > be\-in\-power;
+魚竿 > fishing\-rod;
+希望 > ro\-wish\-for;
+約會 > appointment;
+體認 > realization;
+幸好 > fortunately;
+授粉 > pollination;
+製片 > moviemaking;
+機會 > opportunity;
+關押 > put\-in\-jail;
+記住 > to\-remember;
+灌溉 > to\-irrigate;
+通告 > to\-announce;
+驕陽 > blazing\-sun;
+濃縮 > concentrate;
+國籍 > nationality;
+前任 > predecessor;
+軟碟 > floppy\-disk;
+軟盤 > floppy\-disk;
+屏門 > screen\-door;
+拜訪 > pay\-a\-visit;
+退出 > to\-withdraw;
+採煤 > coal\-mining;
+平凡 > commonplace;
+括號 > parenthesis;
+便鞋 > cloth\-shoes;
+滲透 > to\-permeate;
+偷聽 > to\-evesdrop;
+出兵 > send\-troops;
+培土 > to\-earth\-up;
+開戰 > start\-a\-war;
+分佈 > distributed;
+迷人 > fascinating;
+出來 > to\-come\-out;
+信道 > signal\-path;
+魔法 > enchantment;
+申請 > apply\-\(for\);
+跑車 > racing\-bike;
+描摹 > to\-describe;
+八年 > eight\-years;
+籌款 > fundraising;
+域名 > domain\-name;
+八字 > character\-8;
+相似 > to\-resemble;
+挪用 > to\-embezzle;
+發展 > development;
+裝扮 > dress\-up\-as;
+城區 > city\-proper;
+溝通 > communicate;
+為了 > in\-order\-to;
+白宮 > white\-house;
+冠冕 > royal\-crown;
+像樣 > presentable;
+巧合 > coincidence;
+戰車 > war\-chariot;
+白夜 > white\-night;
+花店 > flower\-shop;
+描寫 > to\-describe;
+便覽 > brief\-guide;
+舊版 > old\-version;
+因此 > that\-is\-why;
+實踐 > to\-practice;
+尋覓 > to\-look\-for;
+瑞雪 > timely\-snow;
+公元 > \(year\)\-a\.d\.;
+色情 > pornography;
+來訪 > pay\-a\-visit;
+白刃 > naked\-sword;
+發出 > to\-send\-out;
+就職 > take\-office;
+拔營 > strike\-camp;
+把穩 > trustworthy;
+容貌 > countenance;
+舒服 > comfortable;
+手續 > formalities;
+按期 > on\-schedule;
+踩水 > tread\-water;
+宣言 > declaration;
+仿造 > counterfeit;
+實習 > to\-practice;
+偷懶 > to\-goof\-off;
+鼻音 > nasal\-sound;
+查證 > investigate;
+環繞 > to\-surround;
+困境 > predicament;
+滲濾 > percolation;
+病容 > sickly\-look;
+成績 > performance;
+人間 > man''s\-world;
+端站 > end\-station;
+衍射 > diffraction;
+回報 > \(in\)\-return;
+棗樹 > jujube\-tree;
+或稱 > also\-called;
+括弧 > parenthesis;
+高壓 > high\-handed;
+仲裁 > arbitration;
+值得 > to\-be\-worth;
+異常 > exceptional;
+蚱蜢 > grasshopper;
+鑽孔 > bore\-a\-hole;
+當局 > authorities;
+高唱 > sing\-loudly;
+介詞 > preposition;
+舞劇 > dance\-drama;
+傑出 > illustrious;
+疆場 > battlefield;
+信服 > to\-convince;
+脾氣 > temperament;
+上齒 > upper\-teeth;
+慰藉 > consolation;
+板規 > plate\-gauge;
+病人 > sick\-person;
+鑒定 > to\-appraise;
+備件 > spare\-parts;
+生成 > be\-produced;
+便桶 > chamber\-pot;
+脫氧 > deoxidation;
+情願 > willingness;
+生態 > way\-of\-life;
+指出 > to\-indicate;
+扁桃 > almond\-tree;
+跋扈 > domineering;
+修復 > restoration;
+筆心 > pencil\-lead;
+信息 > information;
+不顧 > in\-spite\-of;
+立法 > legislation;
+對方 > counterpart;
+空白 > blank\-space;
+男女 > male\-female;
+當做 > to\-treat\-as;
+跛子 > lame\-person;
+五萬 > 50\-thousand;
+有趣 > interesting;
+保存 > to\-conserve;
+淘神 > troublesome;
+筆墨 > pen\-and\-ink;
+薑餅 > gingerbread;
+溫度 > temperature;
+跑壘 > baserunning;
+蜜桃 > honey\-peach;
+鑒于 > in\-light\-of;
+可驚 > astonishing;
+便宜 > inexpensive;
+不迭 > cannot\-cope;
+手寫 > handwriting;
+下載 > to\-download;
+踏上 > set\-foot\-on;
+作文 > composition;
+滲入 > to\-permeate;
+環形 > ring\-shaped;
+佈景 > \(stage\)\-set;
+戒律 > commandment;
+驚人 > astonishing;
+騷動 > disturbance;
+悲觀 > pessimistic;
+屬下 > subordinate;
+美貌 > goodlooking;
+用以 > in\-order\-to;
+麻藥 > anaesthetic;
+小型 > small\-scale;
+戰場 > battlefield;
+題詞 > inscription;
+例如 > for\-example;
+趣味 > to\-interest;
+信仰 > firm\-belief;
+股東 > stockholder;
+鎮壓 > suppression;
+板牙 > front\-tooth;
+泳褲 > swim\-trunks;
+條例 > regulations;
+同質 > homogeneous;
+環境 > environment;
+顯著 > outstanding;
+二百 > two\-hundred;
+就任 > take\-office;
+果汁 > fruit\-juice;
+耕畜 > farm\-animal;
+重返 > return\-\(to\);
+下落 > whereabouts;
+丟臉 > humiliation;
+法規 > legislation;
+我國 > our\-country;
+佈局 > arrangement;
+變通 > be\-flexible;
+鼻涕 > nasal\-mucus;
+貸款 > \(bank\)\-loan;
+準備 > preparation;
+安康 > good\-health;
+預計 > to\-forecast;
+聰明 > intelligent;
+量詞 > meaure\-word;
+立即 > immediately;
+名著 > masterpiece;
+任意 > arbitrarily;
+安家 > settle\-down;
+饒恕 > forgiveness;
+宇宙 > outer\-space;
+瑞士 > switzerland;
+喇叭 > loudspeaker;
+成份 > composition;
+駁倒 > demolish\-sb;
+浴池 > public\-bath;
+以往 > in\-the\-past;
+顯目 > outstanding;
+奔馳 > run\-quickly;
+現年 > current\-age;
+鈔票 > paper\-money;
+示範 > demonstrate;
+智能 > intelligent;
+交換 > to\-exchange;
+風波 > disturbance;
+藥物 > medicaments;
+鄙陋 > superficial;
+考查 > investigate;
+夜鶯 > nightingale;
+餐廳 > dining\-hall;
+北韓 > north\-korea;
+互換 > to\-exchange;
+威脅 > to\-threaten;
+空前 > unprecedent;
+預約 > reservation;
+碰見 > to\-run\-into;
+查出 > to\-find\-out;
+半邊 > half\-of\-sth;
+暗示 > drop\-a\-hint;
+交往 > association;
+氣質 > temperament;
+書法 > calligraphy;
+卓越 > distinction;
+股價 > stock\-price;
+九月 > ninth\-month;
+主權 > sovereignty;
+多餘 > superfluous;
+恰當 > appropriate;
+聽取 > hear\-\(news\);
+感性 > sensibility;
+商人 > businessman;
+禁止 > to\-prohibit;
+秉承 > take\-orders;
+售價 > to\-sell\-for;
+嬌媚 > flirtatious;
+頁碼 > page\-number;
+交媾 > to\-have\-sex;
+上流 > upper\-class;
+霸道 > overbearing;
+波瀾 > great\-waves;
+波濤 > great\-waves;
+不止 > incessantly;
+爭議 > controversy;
+中東 > middle\-east;
+丹方 > folk\-remedy;
+重疊 > overlapping;
+中日 > china\-japan;
+吞沒 > to\-embezzle;
+重現 > to\-reappear;
+食堂 > dining\-hall;
+曲折 > complicated;
+靶船 > target\-ship;
+千萬 > ten\-million;
+一月 > first\-month;
+犯病 > to\-fall\-ill;
+同步 > synchronous;
+哺乳 > breast\-feed;
+調變 > to\-modulate;
+主張 > to\-advocate;
+婚期 > wedding\-day;
+暗殺 > assassinate;
+毛蟲 > caterpillar;
+主席 > chairperson;
+邊陲 > border\-area;
+危篤 > deathly\-ill;
+互動 > interactive;
+妖精 > evil\-spirit;
+中年 > middle\-aged;
+貝丘 > shell\-mound;
+意向 > disposition;
+沈澱 > precipitate;
+取決 > depend\-upon;
+繁複 > complicated;
+隔離 > to\-separate;
+三年 > three\-years;
+隔開 > to\-separate;
+𡽱 > a\-high\-hill;
+下屬 > subordinate;
+上層 > upper\-layer;
+繼續 > to\-continue;
+壯觀 > spectacular;
+政變 > coup\-d''etat;
+神學 > theological;
+繁華 > flourishing;
+題字 > inscription;
+合影 > joint\-photo;
+如畫 > picturesque;
+不堪 > cannot\-bear;
+藥品 > medicaments;
+順應 > comply\-with;
+終點 > destination;
+爆竹 > firecracker;
+得病 > to\-fall\-ill;
+透露 > to\-leak\-out;
+阻隔 > to\-separate;
+特權 > prerogative;
+太空 > outer\-space;
+分離 > to\-seperate;
+禁令 > prohibition;
+不免 > unavoidable;
+誓約 > honor\-bound;
+證書 > credentials;
+沈思 > contemplate;
+解釋 > explanation;
+分開 > to\-separate;
+礁島 > reef\-island;
+通過 > by\-means\-of;
+迎風 > in\-the\-wind;
+上任 > take\-office;
+如此 > in\-this\-way;
+論爭 > controversy;
+悠久 > established;
+上下 > up\-and\-down;
+恐嚇 > to\-threaten;
+素食 > vegetables;
+縮短 > to\-curtail;
+改組 > reorganize;
+擁護 > to\-endorse;
+進行 > to\-advance;
+奔波 > rush\-about;
+後母 > stepmother;
+散發 > distribute;
+失火 > catch\-fire;
+誕生 > to\-be\-born;
+多爾 > \(bob\)\-dole;
+彼此 > each\-other;
+預先 > beforehand;
+關門 > close\-down;
+違背 > to\-violate;
+統計 > statistics;
+函購 > mail\-order;
+預備 > to\-prepare;
+壁立 > \(of\-cliffs;
+春季 > springtime;
+摘錄 > to\-extract;
+頒佈 > promulgate;
+每次 > every\-time;
+編程 > to\-program;
+分詞 > participle;
+後期 > late\-stage;
+效用 > usefulness;
+糧食 > foodstuffs;
+荒野 > wilderness;
+撒謊 > tell\-a\-lie;
+燃燒 > combustion;
+弄直 > straighten;
+遷移 > to\-migrate;
+大氣 > atmosphere;
+認為 > to\-believe;
+降落 > to\-descend;
+前者 > the\-former;
+效率 > efficiency;
+靶心 > bull''s\-eye;
+勃然 > agitatedly;
+碟子 > small\-dish;
+講師 > instructor;
+取代 > substitute;
+新教 > protestant;
+多次 > many\-times;
+奇數 > odd\-number;
+必將 > inevitably;
+陰精 > sex\-fluids;
+妖嬈 > enchanting;
+狂亂 > hysterical;
+繁榮 > prosperous;
+繼承 > to\-inherit;
+操縱 > to\-operate;
+全面 > all\-around;
+厘升 > centiliter;
+調整 > adjustment;
+妓女 > prostitute;
+荒謬 > ridiculous;
+白頭 > hoary\-head;
+決不 > not\-at\-all;
+說明 > to\-explain;
+出色 > remarkable;
+女婿 > son\-in\-law;
+特別 > especially;
+免除 > to\-prevent;
+妥協 > compromise;
+巨輪 > large\-ship;
+熄滅 > extinguish;
+照片 > photograph;
+附筆 > postscript;
+親自 > personally;
+改正 > to\-correct;
+半圓 > semicircle;
+違犯 > to\-violate;
+爭奪 > fight\-over;
+短期 > short\-term;
+每年 > every\-year;
+敵手 > antagonist;
+印像 > impression;
+精通 > proficient;
+很大 > tremendous;
+白酒 > spirit\-usu;
+明亮 > brightness;
+草莓 > strawberry;
+報章 > newspapers;
+多年 > many\-years;
+語彙 > vocabulary;
+早先 > previously;
+牌價 > list\-price;
+巫術 > witchcraft;
+過渡 > transition;
+探險 > to\-explore;
+大學 > university;
+無理 > irrational;
+半價 > half\-price;
+區別 > difference;
+文學 > literature;
+從前 > previously;
+關聯 > be\-related;
+地震 > earthquake;
+觀眾 > spectators;
+排隊 > to\-line\-up;
+分發 > distribute;
+攪擾 > to\-disturb;
+數學 > mathematic;
+熱心 > enthusiasm;
+電子 > electronic;
+白話 > vernacular;
+炸糕 > fried\-cake;
+堆積 > accumulate;
+散射 > scattering;
+蓋世 > unrivelled;
+編排 > to\-arrange;
+捕魚 > catch\-fish;
+出生 > to\-be\-born;
+允諾 > to\-promise;
+調和 > harmonious;
+後來 > afterwards;
+大喜 > exultation;
+政府 > government;
+設施 > facilities;
+方便 > convenient;
+接通 > to\-connect;
+此後 > after\-this;
+座標 > coordinate;
+經歷 > experience;
+樂觀 > optimistic;
+太古 > immemorial;
+離婚 > to\-divorce;
+燈塔 > lighthouse;
+出版 > to\-publish;
+誇大 > exaggerate;
+兵船 > man\-of\-war;
+加州 > california;
+傷風 > catch\-cold;
+放射 > to\-radiate;
+比例 > proportion;
+遷徙 > to\-migrate;
+隨後 > soon\-after;
+前景 > foreground;
+遷延 > long\-delay;
+補語 > complement;
+加密 > to\-encrypt;
+整合 > to\-conform;
+違抗 > to\-disobey;
+監督 > to\-control;
+文具 > stationery;
+每人 > per\-person;
+阻止 > to\-prevent;
+防水 > waterproof;
+防止 > to\-prevent;
+退步 > degenerate;
+適度 > moderately;
+遠征 > expedition;
+白臉 > white\-face;
+總共 > altogether;
+解析 > to\-analyze;
+試圖 > to\-attempt;
+艦載 > ship\-based;
+知名 > well\-known;
+多事 > meddlesome;
+冰球 > ice\-hockey;
+解放 > liberation;
+偽頂 > false\-roof;
+高階 > high\-level;
+捏造 > to\-make\-up;
+分析 > to\-analyze;
+擁抱 > to\-embrace;
+零下 > below\-zero;
+差異 > difference;
+放出 > to\-let\-off;
+公石 > hectoliter;
+攻克 > to\-capture;
+報數 > number\-off;
+收入 > to\-take\-in;
+詞典 > dictionary;
+設在 > located\-at;
+限度 > limitation;
+裱糊 > wall\-paper;
+檢查 > inspection;
+瀆職 > wrongdoing;
+庇廕 > \(of\-a\-tree;
+陰天 > cloudy\-day;
+終於 > eventually;
+訂婚 > engagement;
+陸基 > land\-based;
+廚司 > cook\,\-chef;
+傳說 > it\-is\-said;
+高速 > high\-speed;
+制定 > to\-draw\-up;
+速射 > rapid\-fire;
+遺傳 > hereditary;
+舉辦 > to\-conduct;
+利害 > formidable;
+攪亂 > to\-confuse;
+入獄 > go\-to\-jail;
+米粉 > rice\-flour;
+糾正 > to\-correct;
+親手 > personally;
+農村 > rural\-area;
+副刊 > supplement;
+操場 > playground;
+基於 > because\-of;
+衍變 > to\-develop;
+全然 > completely;
+團聚 > to\-reunite;
+白狐 > arctic\-fox;
+擁塞 > congestion;
+討厭 > disgusting;
+違傲 > to\-disobey;
+白熾 > white\-heat;
+白熱 > white\-heat;
+白熊 > polar\-bear;
+白煤 > anthracite;
+倚靠 > to\-lean\-on;
+幼女 > young\-girl;
+觀察 > to\-observe;
+兵法 > art\-of\-war;
+當選 > be\-elected;
+摘抄 > to\-extract;
+監控 > to\-monitor;
+堤岸 > embankment;
+結局 > conclusion;
+欠佳 > suboptimal;
+週到 > thoughtful;
+規律 > discipline;
+管轄 > administer;
+常常 > frequently;
+樹樁 > tree\-stump;
+襯托 > to\-set\-off;
+操典 > drill\-book;
+跑馬 > horse\-race;
+檢察 > to\-inspect;
+巨星 > giant\-star;
+附加 > additional;
+操作 > to\-operate;
+相對 > relatively;
+無價 > invaluable;
+屏除 > get\-rid\-of;
+搏斗 > to\-wrestle;
+拜託 > request\-sb;
+排球 > volleyball;
+紀律 > discipline;
+店主 > shop\-owner;
+瓶頸 > bottleneck;
+幫助 > assistance;
+幫凶 > accomplice;
+分別 > difference;
+公撮 > milliliter;
+結合 > to\-combine;
+籃球 > basketball;
+抱負 > aspiration;
+算術 > arithmetic;
+推測 > conjecture;
+要塞 > stronghold;
+白旗 > white\-flag;
+演變 > to\-develop;
+滿足 > to\-satisfy;
+驅逐 > banishment;
+表示 > to\-express;
+農園 > plantation;
+高級 > high\-level;
+投資 > investment;
+看到 > see\-\(that\);
+提昇 > to\-promote;
+兌換 > to\-convert;
+公引 > hectometer;
+駕馭 > to\-control;
+專門 > specialist;
+看來 > apparently;
+臉色 > complexion;
+草叢 > underbrush;
+兼容 > compatible;
+軍港 > naval\-port;
+按立 > ordination;
+生計 > livelihood;
+掌櫃 > shopkeeper;
+表現 > expression;
+兩岸 > bilaterial;
+共存 > to\-coexist;
+囚犯 > a\-prisoner;
+偉績 > great\-acts;
+相互 > each\-other;
+衍生 > derviative;
+冰刀 > ice\-skates;
+接收 > to\-receive;
+用處 > usefulness;
+技術 > technology;
+花托 > receptacle;
+宿題 > assignment;
+魚排 > fish\-steak;
+指甲 > fingernail;
+學齡 > school\-age;
+捨棄 > to\-give\-up;
+差別 > difference;
+使醉 > intoxicate;
+拘禁 > constraint;
+國會 > parliament;
+超越 > to\-surpass;
+推廣 > popularize;
+佣金 > commission;
+白喉 > diphtheria;
+授意 > to\-inspire;
+公分 > centimeter;
+筆者 > the\-author;
+保育 > child\-care;
+白區 > white\-area;
+揹債 > be\-in\-debt;
+漫畫 > caricature;
+停火 > cease\-fire;
+良心 > conscience;
+單調 > monotonous;
+表明 > make\-known;
+投稿 > contribute;
+模仿 > to\-imitate;
+發佈 > to\-release;
+條約 > treatypact;
+導航 > navigation;
+排外 > xenophobic;
+導致 > to\-lead\-to;
+展示 > to\-open\-up;
+尋舋 > to\-provoke;
+先例 > antecedent;
+滅絕 > extinguish;
+賓館 > guesthouse;
+樓下 > downstairs;
+提倡 > to\-promote;
+打結 > tie\-a\-knot;
+臆測 > assumption;
+興旺 > prosperous;
+岸標 > lighthouse;
+拔河 > tug\-of\-war;
+生產 > to\-produce;
+補償 > compensate;
+人體 > human\-body;
+推出 > to\-release;
+胞衣 > afterbirth;
+挖掘 > excavation;
+四年 > four\-years;
+餐館 > restaurant;
+指揮 > to\-conduct;
+聖靈 > holy\-ghost;
+指控 > accusation;
+手稿 > manuscript;
+抹油 > to\-annoint;
+表尺 > rear\-sight;
+畢業 > graduation;
+固執 > persistent;
+查詢 > to\-inquire;
+飯館 > restaurant;
+疑慮 > hesitation;
+喉舌 > mouthpiece;
+便當 > convenient;
+聯通 > connection;
+駐紮 > to\-station;
+簽出 > to\-log\-off;
+高層 > high\-level;
+餅鐺 > baking\-pan;
+屢次 > repeatedly;
+鎗管 > gun\-barrel;
+鐵板 > iron\-panel;
+鏈環 > chain\-link;
+捉取 > to\-capture;
+竭盡 > exhaustion;
+軍人 > serviceman;
+意願 > aspiration;
+老頭 > old\-fellow;
+現象 > appearance;
+鎮痛 > analgesiac;
+自尊 > self\-pride;
+定義 > definition;
+競爭 > to\-compete;
+實現 > to\-achieve;
+傷亡 > casualties;
+截然 > completely;
+業余 > spare\-time;
+行列 > procession;
+病假 > sick\-leave;
+期限 > time\-limit;
+把戲 > acrobatics;
+消費 > to\-consume;
+行人 > pedestrian;
+書面 > in\-writing;
+筷子 > chopsticks;
+節制 > temperance;
+腐敗 > corruption;
+獸醫 > veterinary;
+做出 > to\-put\-out;
+作為 > accomplish;
+折射 > refraction;
+喉炎 > laryngitis;
+了解 > understand;
+信心 > confidence;
+聯繫 > connection;
+珍藏 > collection;
+自信 > confidence;
+聖職 > priesthood;
+錶盤 > dial\-plate;
+桃樹 > peach\-tree;
+單模 > singlemode;
+想象 > to\-imagine;
+下降 > to\-decline;
+審查 > to\-examine;
+層壓 > lamination;
+周速 > cycle\-time;
+暴風 > storm\-wind;
+屬地 > dependency;
+漲價 > appreciate;
+聖經 > holy\-bible;
+仿真 > to\-emulate;
+和諧 > harmonious;
+介紹 > to\-present;
+頻頻 > repeatedly;
+缺點 > weak\-point;
+本行 > one''s\-line;
+滲坑 > sewage\-pit;
+競技 > tournament;
+抵制 > resistance;
+鐵匠 > blacksmith;
+任用 > to\-appoint;
+單數 > odd\-number;
+板紙 > paperboard;
+呈遞 > to\-present;
+波長 > wavelength;
+專心 > absorption;
+個別 > individual;
+會計 > accountant;
+流血 > shed\-blood;
+肉片 > meat\-slice;
+溫室 > greenhouse;
+倚仗 > to\-lean\-on;
+抑制 > to\-inhibit;
+作料 > condiments;
+便壺 > bed\-urinal;
+趨奉 > to\-fawn\-on;
+使怒 > exasperate;
+依屬 > dependence;
+預防 > to\-prevent;
+個人 > individual;
+等到 > wait\-until;
+小姐 > young\-lady;
+桌布 > tablecloth;
+背景 > background;
+不變 > unchanging;
+一貫 > consistent;
+批准 > to\-approve;
+科系 > department;
+愁緒 > melancholy;
+神話 > fairy\-tale;
+住所 > habitation;
+顛覆 > subversion;
+案子 > long\-table;
+互相 > each\-other;
+便利 > convenient;
+河邊 > river\-bank;
+不虞 > unexpected;
+尤其 > especially;
+淘汰 > to\-die\-out;
+肥料 > fertilizer;
+安排 > to\-arrange;
+議院 > parliament;
+狡辯 > to\-quibble;
+第二 > number\-two;
+格外 > especially;
+暴行 > savage\-act;
+實在 > in\-reality;
+超升 > exaltation;
+叛軍 > rebel\-army;
+獸穴 > animal\-den;
+孝敬 > to\-respect;
+警鐘 > alarm\-bell;
+胖子 > fat\-person;
+存放 > to\-deposit;
+餓死 > starvation;
+併吞 > swallow\-up;
+學徒 > apprentice;
+感激 > appreciate;
+板樁 > sheet\-pile;
+成分 > ingredient;
+容器 > receptacle;
+重視 > importance;
+悔罪 > conviction;
+能力 > capability;
+必須 > to\-have\-to;
+肯定 > to\-be\-sure;
+任性 > capricious;
+王牌 > trump\-card;
+南面 > south\-side;
+薄荷 > field\-mint;
+馬力 > horsepower;
+月球 > \(the\)\-moon;
+婚約 > engagement;
+現成 > ready\-made;
+頻繁 > frequently;
+議論 > to\-comment;
+交替 > to\-replace;
+神秘 > mysterious;
+風濕 > rheumatism;
+群眾 > the\-masses;
+神祕 > mysterious;
+寄予 > to\-express;
+仁慈 > benevolent;
+今後 > henceforth;
+虛擬 > fictitious;
+顯現 > appearance;
+多黨 > multiparty;
+不當 > unsuitable;
+沈落 > sink\,\-fall;
+講述 > talk\-about;
+宣佈 > to\-declare;
+鼓掌 > to\-applaud;
+以外 > apart\-from;
+爆音 > sonic\-boom;
+似乎 > apparently;
+大體 > in\-general;
+空兒 > spare\-time;
+食指 > forefinger;
+牴觸 > contradict;
+程序 > procedures;
+弱點 > weak\-point;
+明言 > pronounced;
+本月 > this\-month;
+哲學 > philosophy;
+丹毒 > erysipelas;
+氣象 > meteorolgy;
+互惠 > reciprocal;
+總體 > completely;
+蔬菜 > vegetables;
+飯店 > restaurant;
+含燐 > phosphoric;
+更正 > correction;
+黑板 > blackboard;
+彙集 > to\-collect;
+講解 > to\-explain;
+預知 > anticipate;
+部門 > department;
+以及 > as\-well\-as;
+聯合 > to\-combine;
+主格 > nominative;
+錄取 > to\-recruit;
+新郎 > bridegroom;
+而後 > after\-that;
+字典 > dictionary;
+悲歌 > sad\-melody;
+罪狀 > accusation;
+比重 > proportion;
+賠償 > compensate;
+流放 > banishment;
+人均 > per\-capita;
+可疑 > suspicious;
+聞名 > well\-known;
+而已 > that''s\-all;
+浴巾 > bath\-towel;
+吊燈 > chandelier;
+聲價 > reputation;
+薄片 > thin\-slice;
+更新 > up\-to\-date;
+顫栗 > to\-tremble;
+本底 > background;
+集體 > collective;
+敗露 > \(of\-a\-plot;
+試驗 > experiment;
+人口 > population;
+厘米 > centimeter;
+歸順 > submission;
+失蹤 > be\-missing;
+飽和 > saturation;
+歡騰 > jubilation;
+後裔 > descendant;
+氣色 > complexion;
+金牌 > gold\-medal;
+不會 > improbable;
+上月 > last\-month;
+吵架 > to\-quarrel;
+意外 > unexpected;
+碧綠 > dark\-green;
+不時 > frequently;
+老套 > old\-things;
+並把 > to\-include;
+談論 > to\-discuss;
+及物 > transitive;
+電車 > trolleybus;
+欺騙 > to\-deceive;
+顧慮 > misgivings;
+可比 > comparable;
+事先 > in\-advance;
+警犬 > police\-dog;
+剛體 > rigid\-body;
+景氣 > prosperity;
+卜筮 > divination;
+不快 > be\-unhappy;
+昌盛 > prosperous;
+改過 > to\-correct;
+改進 > to\-improve;
+不幸 > misfortune;
+電視 > television;
+後者 > the\-latter;
+纏繞 > intertwine;
+加速 > accelerate;
+諳練 > conversant;
+一度 > for\-a\-time;
+歡迎 > to\-welcome;
+化肥 > fertilizer;
+墨鏡 > sunglasses;
+剝離 > \(of\-tissue;
+不屈 > unyielding;
+彈藥 > ammunition;
+預料 > anticipate;
+頂替 > to\-replace;
+不定 > indefinite;
+不安 > intranquil;
+老人 > old\-people;
+期刊 > periodical;
+知覺 > perception;
+同情 > compassion;
+適配 > adaptation;
+合意 > acceptable;
+大臣 > chancellor;
+同性 > homosexual;
+日益 > day\-by\-day;
+大膽 > courageous;
+本份 > one''s\-duty;
+不妥 > not\-proper;
+會友 > membership;
+繳納 > contribute;
+不夠 > not\-enough;
+私下 > in\-private;
+波峰 > wave\-crest;
+三天 > three\-days;
+𠀍 > generation;
+面目 > appearance;
+反日 > anti\-japan;
+建議 > to\-propose;
+波導 > wave\-guide;
+婢女 > slave\-girl;
+沒收 > confiscate;
+快活 > gay\,\-happy;
+可悲 > lamentable;
+評註 > commentary;
+婊子 > prostitute;
+必然 > inevitable;
+半球 > hemisphere;
+響應 > respond\-to;
+彙編 > collection;
+議會 > parliament;
+大綱 > main\-point;
+撞騙 > to\-swindle;
+烤鴨 > roast\-duck;
+歌詞 > song\-lyric;
+並入 > merge\-into;
+記載 > write\-down;
+弱脈 > weak\-pulse;
+顫動 > to\-tremble;
+原本 > originally;
+吸吮 > to\-suck\-in;
+爆破 > to\-blow\-up;
+道賀 > compliment;
+取得 > to\-acquire;
+上半 > first\-half;
+教育 > to\-educate;
+不動 > motionless;
+吞噬 > to\-swallow;
+要點 > main\-point;
+反復 > repeatedly;
+西點 > west\-point;
+並不 > not\-at\-all;
+斗眼 > cross\-eyed;
+氣氛 > atmosphere;
+眼鏡 > spectacles;
+不備 > unprepared;
+檢驗 > to\-inspect;
+一再 > repeatedly;
+恫嚇 > intimidate;
+一共 > altogether;
+奉獻 > consecrate;
+不依 > not\-comply;
+不住 > repeatedly;
+只好 > to\-have\-to;
+討論 > to\-discuss;
+文盲 > illiterate;
+明智 > not\-unwise;
+另外 > additional;
+撞針 > firing\-pin;
+南極 > south\-pole;
+一代 > generation;
+收縮 > pull\-back;
+多疑 > skeptical;
+合力 > cooperate;
+爆炸 > explosion;
+割草 > mow\-grass;
+變奏 > variation;
+領受 > to\-accept;
+動盪 > commotion;
+可哀 > miserably;
+菠蘿 > pineapple;
+厚度 > thickness;
+速記 > shorthand;
+徐步 > to\-stroll;
+西面 > west\-side;
+摘除 > to\-excise;
+警官 > constable;
+同伴 > companion;
+名人 > personage;
+蔓延 > to\-extend;
+同事 > colleague;
+半旗 > half\-mast;
+金匠 > goldsmith;
+同一 > identical;
+碰巧 > by\-chance;
+普及 > widespead;
+設置 > to\-set\-up;
+燒燬 > burn\-down;
+明年 > next\-year;
+古典 > classical;
+叫做 > be\-called;
+綠茶 > green\-tea;
+別處 > elsewhere;
+述語 > predicate;
+防衛 > to\-defend;
+昨天 > yesterday;
+教父 > godfather;
+受僱 > mercenary;
+於是 > thereupon;
+語源 > etymology;
+說法 > statement;
+城門 > city\-gate;
+靈敏 > sensitive;
+助理 > assistant;
+設立 > to\-set\-up;
+論斷 > inference;
+受事 > recepient;
+熬煎 > suffering;
+分號 > semicolon;
+原告 > complaint;
+白魚 > whitefish;
+多樣 > diversity;
+多模 > multimode;
+開頭 > beginning;
+無能 > inability;
+白體 > lean\-type;
+標高 > elevation;
+妖媚 > seductive;
+無聲 > noiseless;
+刺繡 > embroider;
+十年 > ten\-years;
+半島 > peninsula;
+連續 > continous;
+原則 > principle;
+鄭州 > zhengzhou;
+計策 > stratagem;
+底線 > underline;
+閃電 > lightning;
+引渡 > extradite;
+教母 > godmother;
+壁爐 > fireplace;
+文明 > civilized;
+直覺 > intuition;
+壁燈 > wall\-lamp;
+發音 > pronounce;
+厘克 > centigram;
+無籟 > scoundrel;
+加深 > to\-deepen;
+執行 > implement;
+雹暴 > hailstorm;
+確信 > confident;
+奠定 > establish;
+那樣 > that\-kind;
+公里 > kilometer;
+誠摯 > sincerely;
+差距 > disparity;
+襯裙 > petticoat;
+鰾膠 > isinglass;
+證件 > paperwork;
+細菌 > bacterial;
+芬香 > fragrance;
+占卜 > to\-divine;
+蒼天 > firmament;
+緩沖 > to\-buffer;
+選派 > set\-apart;
+散播 > to\-spread;
+大志 > high\-aims;
+輔音 > consonant;
+張揚 > publicize;
+解碼 > to\-decode;
+播種 > sow\-seeds;
+化學 > chemistry;
+報紙 > newspaper;
+無知 > ignorance;
+接駁 > to\-access;
+很多 > very\-many;
+誠意 > sincerity;
+廣泛 > extensive;
+鳳梨 > pineapple;
+雙方 > bilateral;
+長遠 > long\-term;
+千周 > kilohertz;
+過濾 > to\-filter;
+奇妙 > fantastic;
+冰蓋 > ice\-sheet;
+遙測 > telemetry;
+農舍 > farmhouse;
+紅蓮 > red\-lotus;
+共識 > consensus;
+輸送 > transport;
+大小 > dimension;
+大家 > authority;
+爭取 > fight\-for;
+每天 > every\-day;
+攻擊 > to\-attack;
+紅茶 > black\-tea;
+文字 > character;
+常綠 > evergreen;
+殘廢 > deformity;
+隱晦 > obscurity;
+照樣 > as\-before;
+方向 > direction;
+焰火 > fireworks;
+救恩 > salvation;
+天天 > every\-day;
+後勤 > logistics;
+助手 > assistant;
+內褲 > underwear;
+辦罪 > to\-punish;
+要緊 > important;
+民主 > democracy;
+務實 > pragmatic;
+推銷 > to\-market;
+彙報 > to\-report;
+要素 > essential;
+夢境 > dreamland;
+課堂 > classroom;
+選擇 > to\-select;
+報界 > the\-press;
+發言 > statement;
+十七 > seventeen;
+火藥 > gunpowder;
+診斷 > diagnosis;
+毫克 > milligram;
+副本 > duplicate;
+艱難 > difficult;
+廣播 > broadcast;
+敗局 > lost\-game;
+郊外 > outskirts;
+教室 > classroom;
+白蠟 > white\-wax;
+出現 > to\-appear;
+逐漸 > gradually;
+冰糕 > ice\-cream;
+允許 > to\-permit;
+後代 > posterity;
+艦長 > commander;
+構造 > structure;
+勾劃 > to\-sketch;
+增援 > reinforce;
+無比 > matchless;
+教士 > churchman;
+次數 > frequency;
+大力 > energetic;
+壯大 > to\-expand;
+權柄 > authority;
+遵循 > to\-follow;
+適意 > agreeable;
+調停 > reconcile;
+干涉 > interfere;
+勤勉 > diligence;
+款待 > entertain;
+發芽 > germinate;
+大便 > excrement;
+撥正 > set\-right;
+壽命 > life\-span;
+經文 > scripture;
+敲入 > to\-key\-in;
+隊形 > formation;
+天上 > celestial;
+辦理 > to\-handle;
+註定 > be\-doomed;
+無數 > countless;
+收回 > to\-regain;
+外交 > diplomacy;
+過度 > exceeding;
+判斷 > to\-decide;
+操持 > to\-manage;
+檢測 > to\-detect;
+矮凳 > low\-stool;
+階層 > hierarchy;
+至高 > paramount;
+推薦 > recommend;
+排行 > seniority;
+前往 > leave\-for;
+教儀 > ordinance;
+結構 > structure;
+墳墓 > sepulcher;
+播放 > broadcast;
+公秉 > kiloliter;
+阻撓 > to\-thwart;
+傳送 > to\-convey;
+遺囑 > testament;
+歡呼 > cheer\-for;
+傳輸 > transport;
+干擾 > interfere;
+推荐 > recommend;
+遊客 > traveller;
+城牆 > city\-wall;
+內碼 > to\-encode;
+摧殘 > to\-ravage;
+撞擊 > to\-strike;
+加劇 > aggravate;
+阻抗 > impedance;
+捐贈 > to\-donate;
+自願 > voluntary;
+樹皮 > tree\-bark;
+經度 > longitude;
+隨員 > attendant;
+光筆 > light\-pen;
+報攤 > newsstand;
+出於 > be\-due\-to;
+救世 > salvation;
+擴大 > to\-expand;
+過多 > excessive;
+無形 > invisible;
+裝置 > equipment;
+故事 > narrative;
+共產 > communist;
+篩選 > to\-filter;
+推翻 > overthrow;
+院子 > courtyard;
+園藝 > gardening;
+廣博 > extensive;
+權威 > authority;
+劃分 > to\-divide;
+傳記 > biography;
+迷惑 > to\-puzzle;
+加上 > to\-put\-in;
+延伸 > to\-extend;
+通宵 > overnight;
+艱苦 > difficult;
+廣傳 > propagate;
+發生 > to\-happen;
+癱瘓 > paralysis;
+組成 > component;
+隊列 > formation;
+接管 > take\-over;
+設備 > equipment;
+隆冬 > midwinter;
+凹度 > concavity;
+漫長 > very\-long;
+界面 > interface;
+創作 > to\-create;
+陪同 > accompany;
+擴充 > to\-expand;
+指責 > criticize;
+綜合 > composite;
+披露 > to\-reveal;
+看待 > look\-upon;
+陷入 > sink\-into;
+衰落 > decompose;
+剛健 > energetic;
+撥奏 > pizzicato;
+逆境 > adversity;
+迫害 > persecute;
+進化 > evolution;
+辯才 > eloquence;
+自負 > conceited;
+市政 > municipal;
+儼然 > just\-like;
+絕妙 > exquisite;
+投降 > surrender;
+簽章 > signature;
+陪伴 > accompany;
+綁匪 > kidnapper;
+無力 > powerless;
+擔保 > guarantee;
+推理 > reasoning;
+因而 > therefore;
+逆向 > backwards;
+跟隨 > to\-follow;
+按蚊 > anopheles;
+樣機 > prototype;
+刨冰 > water\-ice;
+帶寬 > bandwidth;
+異議 > objection;
+規定 > provision;
+展開 > to\-unfold;
+輪流 > alternate;
+傳統 > tradition;
+偏見 > prejudice;
+地理 > geography;
+地球 > the\-earth;
+降低 > to\-reduce;
+保險 > insurance;
+保障 > to\-ensure;
+場合 > situation;
+報告 > to\-inform;
+紳士 > gentleman;
+公斗 > decaliter;
+逝世 > pass\-away;
+返回 > return\-to;
+附件 > enclosure;
+分割 > to\-cut\-up;
+長期 > long\-term;
+扁骨 > flat\-bone;
+保鏢 > bodyguard;
+跑錶 > stopwatch;
+紙夾 > paperclip;
+發明 > to\-invent;
+模擬 > imitation;
+激發 > to\-arouse;
+再度 > once\-more;
+糾察 > to\-picket;
+拷花 > to\-emboss;
+潛艇 > submarine;
+迷住 > fascinate;
+艾炷 > moxa\-cone;
+囚禁 > captivity;
+內戰 > civil\-war;
+便門 > side\-door;
+裁減 > to\-reduce;
+迷亂 > confusion;
+圍牆 > enclosure;
+相同 > identical;
+規勸 > to\-advise;
+表皮 > epidermis;
+表白 > vindicate;
+戶限 > threshold;
+看做 > regard\-as;
+捐獻 > to\-donate;
+兇手 > assailant;
+蟑螂 > cockroach;
+寬頻 > broadband;
+西南 > southwest;
+使館 > consulate;
+西北 > northwest;
+棉被 > comforter;
+精巧 > elaborate;
+嶄新 > brand\-new;
+打進 > to\-breach;
+公寸 > decimeter;
+承認 > recognize;
+公寓 > apartment;
+常任 > permanent;
+光彩 > honorable;
+保護 > to\-defend;
+指示 > point\-out;
+病理 > pathology;
+辛勞 > laborious;
+損壞 > to\-damage;
+保証 > guarantee;
+嘉許 > favorable;
+八天 > eight\-day;
+拒絕 > to\-refuse;
+要不 > otherwise;
+標定 > demarcate;
+膨脹 > to\-expand;
+輻射 > radiation;
+排放 > discharge;
+體現 > to\-embody;
+衰減 > to\-weaken;
+籃板 > backboard;
+馬鞭 > horsewhip;
+苦境 > grievance;
+畢竟 > after\-all;
+低階 > low\-level;
+所謂 > so\-called;
+潰爛 > to\-fester;
+儲存 > stockpile;
+膀臂 > upper\-arm;
+瀑布 > waterfall;
+掛念 > concerned;
+全同 > identical;
+轟動 > sensation;
+臺燈 > desk\-lamp;
+蝴蝶 > butterfly;
+甜美 > sweetness;
+伴隨 > to\-follow;
+實質 > substance;
+公兩 > hectogram;
+植物 > botanical;
+空防 > air\-force;
+入侵 > to\-invade;
+克制 > restraint;
+公丈 > decameter;
+輸出 > to\-export;
+折磨 > persecute;
+輸入 > to\-import;
+實行 > implement;
+等等 > et\-cetera;
+清除 > eliminate;
+打聽 > ask\-about;
+表揚 > to\-praise;
+激怒 > infuriate;
+打翻 > overthrow;
+停泊 > anchorage;
+蜻蜓 > dragonfly;
+漸漸 > gradually;
+子音 > consonant;
+漲潮 > high\-tide;
+家譜 > genealogy;
+驚異 > amazement;
+輔助 > to\-assist;
+提供 > to\-supply;
+穿透 > penetrate;
+接口 > interface;
+接受 > to\-accept;
+體操 > gymnastic;
+便箋 > notepaper;
+空軍 > air\-force;
+超聯 > hyperlink;
+聖餐 > sacrament;
+裝備 > equipment;
+批發 > wholesale;
+漸次 > gradually;
+趕緊 > hurriedly;
+骨架 > framework;
+介面 > interface;
+偵探 > detective;
+臨時 > temporary;
+挑戰 > challenge;
+被告 > defendant;
+排出 > discharge;
+拔染 > discharge;
+貝類 > shellfish;
+在內 > including;
+拿手 > expert\-in;
+竊聽 > eavesdrop;
+宿舍 > dormitory;
+山水 > landscape;
+四天 > four\-days;
+挺好 > very\-good;
+簽入 > to\-log\-on;
+馬背 > horseback;
+驕氣 > arrogance;
+疑心 > suspicion;
+渺茫 > uncertain;
+激勵 > encourage;
+激動 > to\-excite;
+成立 > establish;
+添補 > fill\-\(up\);
+修正 > to\-revise;
+某處 > somewhere;
+賓詞 > predicate;
+稱讚 > to\-praise;
+低級 > low\-level;
+貨輪 > freighter;
+體團 > community;
+極其 > extremely;
+抵抗 > to\-resist;
+颱風 > hurricane;
+伸縮 > to\-extend;
+蚯蚓 > earthworm;
+贖罪 > atonement;
+寵物 > house\-pet;
+聖誕 > christmas;
+假定 > to\-assume;
+行動 > operation;
+主體 > main\-part;
+手法 > technique;
+消遣 > amusement;
+極了 > extremely;
+就業 > get\-a\-job;
+疆域 > territory;
+桌燈 > desk\-lamp;
+疆土 > territory;
+承擔 > undertake;
+膽小 > cowardice;
+屬性 > attribute;
+高價 > expensive;
+主頁 > home\-page;
+美麗 > beautiful;
+會面 > meet\-with;
+成為 > to\-become;
+交誼 > communion;
+錦繡 > beautiful;
+潛力 > potential;
+居所 > residence;
+學童 > schoolboy;
+自動 > automatic;
+蠕動 > to\-wiggle;
+打敗 > to\-defeat;
+豪豬 > porcupine;
+啟發 > enlighten;
+流量 > flow\-rate;
+賜給 > to\-bestow;
+招募 > to\-recuit;
+完畢 > to\-finish;
+對於 > regarding;
+至今 > until\-now;
+翻譯 > translate;
+上面 > on\-top\-of;
+五號 > the\-fifth;
+信差 > messenger;
+膀子 > upper\-arm;
+拆卸 > to\-unload;
+蛋白 > egg\-white;
+吞食 > to\-devour;
+框架 > framework;
+胃炎 > gastritis;
+對抗 > withstand;
+器具 > implement;
+脫掉 > strip\-off;
+香港 > hong\-kong;
+實時 > real\-time;
+肺炎 > pneumonia;
+慶祝 > celebrate;
+宰殺 > slaughter;
+浪蕩 > to\-loiter;
+豪華 > luxurious;
+某物 > something;
+津貼 > allowance;
+肝炎 > hepatitis;
+消耗 > to\-use\-up;
+上載 > to\-upload;
+蘭花 > cymbidium;
+書記 > secretary;
+浪船 > swingboat;
+小寫 > lowercase;
+用具 > appliance;
+古風 > antiquity;
+安歇 > go\-to\-bed;
+家族 > household;
+何故 > wherefore;
+腳印 > footprint;
+瓷器 > chinaware;
+童年 > childhood;
+佔據 > to\-occupy;
+起床 > to\-get\-up;
+寬帶 > broadband;
+來年 > next\-year;
+今生 > this\-life;
+頻道 > frequency;
+本職 > one''s\-job;
+局勢 > situation;
+背斜 > anticline;
+暴躁 > irascible;
+池鹽 > lake\-salt;
+不許 > not\-allow;
+商標 > trademark;
+飯碗 > rice\-bowl;
+晤面 > interview;
+桔子 > tangerine;
+重開 > to\-reopen;
+變革 > transform;
+截奪 > intercept;
+深水 > deepwater;
+趨向 > direction;
+起始 > originate;
+祇讀 > read\-only;
+學會 > institute;
+懸崖 > precipice;
+條件 > condition;
+鷓鴣 > partridge;
+末端 > extremity;
+瓜分 > partition;
+處理 > to\-handle;
+涌現 > spring\-up;
+禮節 > etiquette;
+普遍 > universal;
+變醜 > disfigure;
+並肩 > alongside;
+蜂巢 > honeycomb;
+中美 > china\-usa;
+暗語 > code\-word;
+端口 > interface;
+低層 > low\-level;
+重蹈 > to\-repeat;
+住宅 > residence;
+休戰 > armistice;
+所以 > therefore;
+讚賞 > to\-admire;
+減弱 > to\-weaken;
+叛賣 > to\-betray;
+嫌疑 > suspicion;
+伸展 > extension;
+一致 > unanimous;
+聲明 > statement;
+養殖 > cultivate;
+柿子 > persimmon;
+老牌 > old\-brand;
+妖風 > evil\-wind;
+錶帶 > watchband;
+重要 > important;
+減少 > to\-lessen;
+有益 > wholesome;
+重複 > to\-repeat;
+立刻 > forthwith;
+深思 > to\-ponder;
+早餐 > breakfast;
+野蠻 > barbarous;
+早飯 > breakfast;
+必需 > essential;
+財東 > shopowner;
+虛構 > imaginary;
+聯想 > associate;
+浸沒 > immersion;
+板斧 > broad\-axe;
+含糊 > obscurity;
+淒慘 > miserable;
+一篇 > one\-sided;
+鍵入 > to\-key\-in;
+旋風 > whirlwind;
+祝福 > blessings;
+期滿 > to\-expire;
+警覺 > vigilance;
+原諒 > to\-excuse;
+家俱 > furniture;
+感染 > infection;
+孔子 > confucius;
+子孫 > offspring;
+家人 > household;
+家事 > housework;
+宣傳 > publicize;
+今年 > this\-year;
+呈現 > to\-appear;
+一百 > a\-hundred;
+貫徹 > implement;
+仲夏 > midsummer;
+證詞 > testimony;
+秘書 > secretary;
+突出 > prominent;
+惡毒 > malicious;
+伴侶 > companion;
+昂貴 > expensive;
+露韓 > to\-expose;
+影響 > influence;
+夢魘 > nightmare;
+好運 > good\-luck;
+暴發 > break\-out;
+應付 > deal\-with;
+有毒 > poisonous;
+弱鹼 > weak\-base;
+汽船 > steamboat;
+可笑 > laughable;
+半載 > half\-load;
+微軟 > microsoft;
+仙境 > fairyland;
+旨趣 > objective;
+日趨 > gradually;
+事態 > situation;
+大類 > main\-type;
+本文 > this\-text;
+營養 > nutrition;
+頻率 > frequency;
+協議 > agreement;
+不滿 > resentful;
+那麼 > so\-\(much\);
+必要 > necessary;
+大陸 > continent;
+碧藍 > dark\-blue;
+待遇 > treatment;
+合理 > rationale;
+玩弄 > resort\-to;
+有時 > sometimes;
+旁路 > to\-bypass;
+夜間 > nighttime;
+比鄰 > neighbour;
+非議 > criticize;
+書架 > bookshelf;
+混亂 > confusion;
+有效 > effective;
+缽盂 > alms\-bowl;
+資助 > subsidize;
+上次 > last\-time;
+牌號 > trademark;
+五天 > five\-days;
+消失 > disappear;
+旁觀 > spectator;
+磨石 > millstone;
+介入 > intervene;
+以上 > more\-than;
+矛頭 > spearhead;
+夢遺 > wet\-dream;
+變異 > variation;
+波段 > wave\-band;
+離開 > to\-depart;
+獲得 > to\-obtain;
+吐氣 > aspirated;
+東南 > southeast;
+東北 > northeast;
+不明 > not\-clear;
+奇觀 > spectacle;
+改革 > to\-reform;
+愛國 > patriotic;
+不斷 > unceasing;
+今世 > this\-life;
+未婚 > unmarried;
+弱酸 > weak\-acid;
+收集 > to\-gather;
+乘客 > passenger;
+一時 > temporary;
+助長 > encourage;
+交出 > hand\-over;
+食品 > foodstuff;
+配置 > to\-deploy;
+失調 > imbalance;
+消去 > eliminate;
+本壘 > home\-base;
+人事 > personnel;
+悲慘 > miserable;
+識相 > sensitive;
+書店 > bookstore;
+邊門 > side\-door;
+中庭 > courtyard;
+司機 > chauffeur;
+獨家 > exclusive;
+東亞 > east\-asia;
+復習 > to\-revise;
+合格 > qualified;
+暫時 > temporary;
+雙邊 > bilateral;
+耐力 > endurance;
+明確 > clear\-cut;
+不惜 > not\-stint;
+惡夢 > nightmare;
+原理 > principle;
+主婦 > housewife;
+玩具 > plaything;
+電話 > telephone;
+施肥 > fertilize;
+改造 > to\-change;
+狀況 > condition;
+不平 > injustice;
+這麼 > so\-\(much\);
+不已 > endlessly;
+雜貨 > groceries;
+木匠 > carpenter;
+評選 > to\-choose;
+醬油 > soy\-sauce;
+建造 > construct;
+觸鬚 > tentacles;
+擦音 > fricative;
+周圍 > encompass;
+不對 > incorrect;
+心目 > mentality;
+可敬 > venerable;
+受格 > objective;
+大荳 > soya\-bean;
+𢥞 > same\-as\-忡;
+契約 > agreement;
+鱷魚 > alligator;
+波幅 > amplitude;
+改變 > to\-change;
+庭院 > courtyard;
+禮儀 > etiquette;
+右手 > righthand;
+創造 > to\-create;
+流入 > flow\-into;
+注射 > injection;
+硬盤 > hard\-disk;
+功課 > classwork;
+週長 > perimeter;
+月光 > moonlight;
+失縱 > disappear;
+婚姻 > matrimony;
+口才 > eloquence;
+不在 > not\-be\-in;
+鞭毛 > flagellum;
+撫養 > to\-foster;
+派任 > set\-apart;
+刪除 > to\-delete;
+遠足 > excursion;
+無限 > unlimited;
+頑強 > tenacious;
+無關 > unrelated;
+蒸發 > evaporate;
+古怪 > eccentric;
+得當 > expedient;
+油布 > tarpaulin;
+下唇 > lower\-lip;
+義務 > volunteer;
+上唇 > upper\-lip;
+頁心 > type\-page;
+不吝 > not\-stint;
+不同 > different;
+污染 > pollution;
+前途 > prospects;
+熊蜂 > bumblebee;
+總結 > summarize;
+美味 > delicious;
+吸取 > to\-absorb;
+下午 > afternoon;
+週邊 > periphery;
+年限 > age\-limit;
+下列 > following;
+不准 > not\-allow;
+題名 > autograph;
+多端 > multiport;
+效能 > efficient;
+不停 > incessant;
+大砲 > artillery;
+不值 > not\-worth;
+沙岩 > sandstone;
+波及 > spread\-to;
+微波 > microwave;
+不休 > endlessly;
+無辜 > innocence;
+次要 > secondary;
+不予 > not\-grant;
+去年 > last\-year;
+不了 > unable\-to;
+領土 > territory;
+韌性 > toughness;
+社區 > community;
+版權 > copyright;
+向南 > southward;
+民歌 > folk\-song;
+即時 > immediate;
+播送 > broadcast;
+幸運 > fortunate;
+美中 > usa\-china;
+隕落 > fall\-down;
+熟練 > practiced;
+改編 > to\-adapt;
+磁性 > magnetic;
+壓緊 > compress;
+醫學 > medicine;
+吞併 > to\-annex;
+靈活 > flexible;
+文獻 > document;
+外用 > external;
+邊線 > sideline;
+正統 > orthodox;
+延續 > continue;
+頻仍 > frequent;
+緯線 > latitude;
+無誤 > verified;
+日曆 > calendar;
+剝落 > peel\-off;
+預卜 > foretell;
+幻象 > illusion;
+謹慎 > cautious;
+特性 > property;
+茶館 > teahouse;
+鳥籠 > birdcage;
+微明 > twilight;
+建築 > building;
+友善 > friendly;
+建立 > creation;
+順利 > smoothly;
+心手 > new\-hand;
+冰隙 > crevasse;
+霸權 > hegemony;
+危急 > critical;
+隙縫 > aperture;
+親身 > personal;
+確定 > definite;
+終身 > lifelong;
+記者 > reporter;
+規避 > to\-evade;
+牧師 > chaplain;
+收益 > earnings;
+具體 > concrete;
+平行 > parallel;
+忠實 > faithful;
+步發 > footwork;
+分裂 > split\-up;
+新書 > new\-book;
+口交 > oral\-sex;
+創立 > to\-found;
+煤箱 > coal\-box;
+缺乏 > shortage;
+日後 > sometime;
+邊界 > boundary;
+災難 > disaster;
+徹底 > thorough;
+鱉裙 > calipash;
+警句 > aphorism;
+早已 > long\-ago;
+雖然 > although;
+破曉 > daybreak;
+雨滴 > raindrop;
+明天 > tomorrow;
+妖孽 > evildoer;
+電氣 > electric;
+酬報 > to\-repay;
+遺產 > heritage;
+硬度 > hardness;
+無聊 > nonsense;
+橫過 > traverse;
+征戰 > campaign;
+課本 > textbook;
+凋謝 > languish;
+計算 > to\-count;
+開除 > to\-expel;
+適當 > suitable;
+纖巧 > delicate;
+平臺 > platform;
+大方 > generous;
+無縫 > seamless;
+冠軍 > champion;
+准許 > to\-allow;
+鄰居 > neighbor;
+電梯 > elevator;
+蓋層 > cap\-rock;
+面對 > confront;
+無線 > wireless;
+確切 > definite;
+通紅 > very\-red;
+包抄 > outflank;
+辨認 > identify;
+原來 > original;
+多數 > majority;
+物品 > articles;
+政治 > politics;
+半夜 > midnight;
+午夜 > midnight;
+新年 > new\-year;
+旅客 > traveler;
+逼真 > lifelike;
+步法 > footwork;
+公釐 > decigram;
+殺戮 > massacre;
+力氣 > strength;
+內部 > interior;
+覆蓋 > to\-cover;
+繡帷 > tapestry;
+太忙 > too\-busy;
+睡眠 > sleeping;
+裝飾 > decorate;
+十四 > fourteen;
+平等 > equality;
+白金 > platinum;
+包層 > cladding;
+轉送 > transfer;
+再見 > good\-bye;
+夢幻 > illusion;
+逕直 > straight;
+危亡 > at\-stake;
+草草 > careless;
+巧計 > maneuver;
+著手 > commence;
+料子 > material;
+盲腸 > appendix;
+支柱 > mainstay;
+形容 > describe;
+無疑 > no\-doubt;
+強悍 > valliant;
+粗野 > insolent;
+袋鼠 > kangaroo;
+妖人 > magician;
+軟體 > software;
+新型 > new\-type;
+培育 > to\-train;
+煤油 > kerosene;
+加時 > overtime;
+光輝 > radiance;
+復元 > recovery;
+強度 > strength;
+十八 > eighteen;
+女兒 > daughter;
+多少 > how\-much;
+十克 > decagram;
+地雷 > landmine;
+如今 > nowadays;
+邪惡 > sinister;
+觀看 > to\-watch;
+得分 > to\-score;
+包圍 > surround;
+比喻 > metaphor;
+規範 > standard;
+軀體 > the\-body;
+硬件 > hardware;
+天堂 > paradise;
+十九 > nineteen;
+光譜 > spectrum;
+補遺 > addendum;
+遠東 > far\-east;
+十三 > thirteen;
+機能 > function;
+蒙古 > mongolia;
+遠景 > prospect;
+紐約 > new\-york;
+教導 > instruct;
+提議 > proposal;
+優越 > superior;
+進步 > progress;
+遮掩 > to\-cover;
+電報 > telegram;
+摹畫 > describe;
+車間 > workshop;
+往來 > dealings;
+調動 > transfer;
+引導 > to\-guide;
+裝貨 > shipping;
+力度 > dynamism;
+過於 > too\-much;
+監禁 > imprison;
+冰窖 > icehouse;
+堂皇 > imposing;
+崇高 > majestic;
+省略 > omission;
+母係 > maternal;
+採買 > purchase;
+輕視 > contempt;
+精致 > delicacy;
+遲延 > to\-delay;
+攜帶 > to\-carry;
+延展 > to\-scale;
+農田 > farmland;
+部位 > position;
+創建 > to\-found;
+內置 > internal;
+限期 > deadline;
+緊張 > critical;
+記憶 > memories;
+遷就 > to\-yield;
+精美 > delicate;
+強勁 > powerful;
+文件 > document;
+殺人 > homicide;
+邊境 > frontier;
+外來 > external;
+剛性 > rigidity;
+勃勃 > thriving;
+適宜 > suitable;
+擁擠 > to\-crowd;
+授課 > to\-teach;
+解散 > dissolve;
+陰性 > feminine;
+動作 > movement;
+敦促 > to\-press;
+雇員 > employee;
+瀉藥 > laxative;
+換置 > displace;
+雨傘 > umbrella;
+圖謀 > conspire;
+董事 > director;
+動人 > touching;
+阻擊 > to\-check;
+補花 > applique;
+塗抹 > to\-smear;
+骨骼 > skeleton;
+裝船 > shipment;
+欺壓 > to\-bully;
+荒涼 > desolate;
+凹板 > intaglio;
+劣勢 > inferior;
+分數 > fraction;
+盎然 > abundant;
+壓力 > pressure;
+連忙 > promptly;
+那個 > that\-one;
+無情 > pitiless;
+擦寫 > to\-erase;
+壓制 > suppress;
+精確 > accurate;
+優美 > graceful;
+航運 > shipping;
+函數 > function;
+經常 > everyday;
+步兵 > infantry;
+平房 > bungalow;
+冰涼 > ice\-cold;
+幻想 > delusion;
+序幕 > prologue;
+刻寫 > inscribe;
+墓地 > cemetery;
+避免 > to\-avert;
+規格 > standard;
+場所 > location;
+追悼 > mourning;
+雇主 > employer;
+揭發 > disclose;
+許可 > to\-allow;
+傳訊 > subpoena;
+評估 > evaluate;
+拖鞋 > slippers;
+偽造 > to\-forge;
+火牆 > firewall;
+凶手 > murderer;
+無害 > harmless;
+軟膏 > ointment;
+掌聲 > applause;
+表觀 > apparent;
+埋沒 > oblivion;
+平常 > ordinary;
+拔除 > pull\-out;
+增加 > to\-raise;
+軌范 > standard;
+摩擦 > friction;
+覺得 > to\-think;
+高貴 > grandeur;
+剪刀 > scissors;
+充當 > serve\-as;
+為時 > timewise;
+達到 > to\-reach;
+西方 > the\-west;
+運動 > movement;
+欺侮 > to\-bully;
+通報 > bulletin;
+撥子 > plectrum;
+床墊 > mattress;
+抗體 > antibody;
+臨近 > close\-to;
+莫大 > greatest;
+約束 > restrict;
+切實 > feasible;
+界限 > boundary;
+陽光 > sunshine;
+分子 > molecule;
+相應 > relevant;
+眾多 > numerous;
+阻塞 > to\-block;
+絕對 > absolute;
+分娩 > delivery;
+管道 > pipeline;
+遊伴 > playmate;
+工業 > industry;
+冰排 > ice\-raft;
+進入 > to\-enter;
+路面 > pavement;
+直徑 > diameter;
+無名 > nameless;
+結婚 > to\-marry;
+堵塞 > blockage;
+撤回 > withdraw;
+睾丸 > testicle;
+經典 > classics;
+騰騰 > steaming;
+逼人 > pressing;
+輝煌 > splendid;
+無助 > helpless;
+採用 > to\-adopt;
+已故 > the\-late;
+序列 > sequence;
+發汗 > to\-sweat;
+國立 > national;
+箴言 > proverbs;
+補爐 > fettling;
+距離 > distance;
+自製 > homemade;
+阻力 > obstacle;
+瘟疫 > epidemic;
+蠕蠕 > wiggling;
+送別 > farewell;
+無人 > unmanned;
+公斤 > kilogram;
+公文 > document;
+抽象 > abstract;
+出口 > to\-speak;
+親善 > goodwill;
+興致 > interest;
+途中 > en\-route;
+間接 > indirect;
+鐵路 > railroad;
+搬弄 > move\-sth;
+標本 > specimen;
+退位 > abdicate;
+組合 > assemble;
+塌下 > collapse;
+逃亡 > fugitive;
+戰鬥 > to\-fight;
+統一 > to\-unify;
+刑事 > criminal;
+提案 > proposal;
+衝突 > conflict;
+追上 > overtake;
+航空 > aviation;
+修辭 > rhetoric;
+濾液 > filtrate;
+對面 > opposite;
+函件 > letteres;
+相反 > opposite;
+持續 > continue;
+馴鹿 > reindeer;
+手鐲 > bracelet;
+脫離 > separate;
+驚訝 > confound;
+脊骨 > backbone;
+捕獲 > to\-catch;
+駕駛 > to\-drive;
+採樣 > sampling;
+純品 > sterling;
+門徒 > disciple;
+近來 > recently;
+寺院 > cloister;
+答話 > to\-reply;
+業界 > industry;
+火山 > volcanic;
+其實 > actually;
+生詞 > new\-word;
+近乎 > close\-to;
+梵語 > sanskrit;
+便道 > shortcut;
+褲子 > trousers;
+寧靜 > tranquil;
+省份 > province;
+封鎖 > blockade;
+俯視 > overlook;
+崩潰 > collapse;
+載攜 > to\-carry;
+濕氣 > moisture;
+精密 > accuracy;
+茶匙 > teaspoon;
+國民 > national;
+兄弟 > brothers;
+校驗 > to\-check;
+粗心 > careless;
+冰冷 > ice\-cold;
+興盛 > flourish;
+倘若 > provided;
+關係 > relation;
+發射 > to\-shoot;
+手足 > movement;
+機動 > flexible;
+採掘 > excavate;
+越過 > to\-cross;
+裁撤 > dissolve;
+兵器 > weaponry;
+拔節 > jointing;
+演習 > exercise;
+紊亂 > disorder;
+跳舞 > to\-dance;
+範疇 > category;
+兵員 > soldiers;
+溶解 > dissolve;
+掙扎 > struggle;
+滲色 > bleeding;
+蛋黃 > egg\-yolk;
+共和 > republic;
+軍方 > military;
+構想 > conceive;
+背面 > the\-back;
+輔導 > to\-coach;
+寶貴 > valuable;
+入口 > entrance;
+驕縱 > arrogant;
+開創 > initiate;
+侵蝕 > to\-erode;
+儀式 > ceremony;
+扁蟲 > flatworm;
+兼併 > to\-annex;
+樂園 > paradise;
+容量 > capacity;
+描圖 > to\-trace;
+赤足 > barefoot;
+屁股 > buttocks;
+發動 > to\-start;
+製品 > products;
+共享 > to\-share;
+英俊 > handsome;
+捷徑 > shortcut;
+行業 > industry;
+馬車 > carriage;
+公主 > princess;
+提名 > nominate;
+四方 > four\-way;
+粗厲 > abrasive;
+車廂 > carriage;
+自治 > autonomy;
+高架 > overhead;
+困惑 > bewilder;
+笑聲 > laughter;
+松鼠 > squirrel;
+優勢 > superior;
+簿子 > notebook;
+傲慢 > arrogant;
+先令 > shilling;
+渠道 > channels;
+校訂 > revision;
+棒球 > baseball;
+優先 > priority;
+噴泉 > fountain;
+軍士 > sergeant;
+來臨 > approach;
+衣廚 > wardrobe;
+份量 > quantity;
+僱員 > employee;
+應該 > ought\-to;
+採光 > lighting;
+聚集 > assemble;
+按捺 > restrain;
+裁判 > judgment;
+人類 > humanity;
+估計 > estimate;
+坐下 > sit\-down;
+安謐 > tranquil;
+回家 > homeward;
+使者 > emissary;
+崩塌 > collapse;
+打破 > to\-break;
+對稱 > symmetry;
+假期 > vacation;
+飼養 > to\-raise;
+衣子 > covering;
+購買 > purchase;
+軼事 > anecdote;
+稀飯 > porridge;
+抱歉 > be\-sorry;
+漂浮 > to\-float;
+極好 > fabulous;
+極大 > enormous;
+界標 > landmark;
+地位 > position;
+稱重 > to\-weigh;
+節慶 > festival;
+蠻干 > reckless;
+鬧區 > downtown;
+準確 > accurate;
+侵略 > invasion;
+併紗 > doubling;
+病夫 > sick\-man;
+授予 > to\-award;
+學術 > learning;
+國內 > domestic;
+貴重 > precious;
+屠殺 > massacre;
+拔掉 > to\-pluck;
+簡化 > simplify;
+驕橫 > arrogant;
+買進 > purchase;
+買通 > to\-bribe;
+慎重 > cautious;
+滑溜 > slippery;
+指導 > to\-guide;
+位置 > position;
+篡奪 > to\-usurp;
+臨床 > clinical;
+栽種 > to\-plant;
+戰略 > strategy;
+園丁 > gardener;
+本體 > noumenon;
+骨幹 > backbone;
+人道 > humanity;
+身分 > position;
+人造 > man\-made;
+產業 > industry;
+居民 > resident;
+腳步 > footstep;
+拼字 > spelling;
+東部 > the\-east;
+高地 > highland;
+固件 > firmware;
+人身 > personal;
+鑲嵌 > to\-inlay;
+業務 > business;
+察看 > to\-watch;
+倍數 > multiple;
+對照 > contrast;
+抵押 > mortgage;
+肩膀 > shoulder;
+箱子 > suitcase;
+身份 > identity;
+低等 > inferior;
+就此 > and\-thus;
+筆架 > pen\-rack;
+寶物 > treasure;
+生日 > birthday;
+鐘擺 > pendulum;
+驅散 > disperse;
+抱怨 > complain;
+等於 > equal\-to;
+學習 > to\-learn;
+折扣 > discount;
+懸疑 > suspense;
+珍貴 > precious;
+懷疑 > to\-doubt;
+當天 > that\-day;
+鍵盤 > keyboard;
+指南 > to\-guide;
+家用 > home\-use;
+生意 > business;
+耗費 > to\-waste;
+致力 > work\-for;
+些許 > trifling;
+五角 > pentagon;
+等待 > wait\-for;
+房東 > landlord;
+修建 > to\-build;
+浪費 > to\-waste;
+突發 > outburst;
+信徒 > believer;
+打掃 > to\-clean;
+技工 > mechanic;
+持久 > duration;
+答對 > to\-reply;
+風車 > windmill;
+手提 > portable;
+飛行 > aviation;
+不靈 > not\-work;
+安生 > peaceful;
+打扮 > dress\-up;
+倒塌 > collapse;
+生存 > to\-exist;
+賦稅 > taxation;
+孔穴 > aperture;
+浴衣 > bathrobe;
+一面 > one\-side;
+恐龍 > dinosaur;
+山坡 > hillside;
+鐵器 > hardware;
+畫像 > portrait;
+當作 > treat\-as;
+禮貌 > courtesy;
+栽植 > to\-plant;
+信封 > envelope;
+聲稱 > to\-claim;
+對手 > opponent;
+信守 > abide\-by;
+聖約 > covenant;
+校正 > regulate;
+重點 > emphasis;
+聽眾 > audience;
+騎師 > horseman;
+秧苗 > seedling;
+恭順 > deferent;
+鍵槽 > key\-slot;
+購物 > shopping;
+單據 > receipts;
+會變 > variable;
+少年 > juvenile;
+騙子 > swindler;
+聯盟 > alliance;
+路口 > crossing;
+處罰 > penalize;
+金魚 > goldfish;
+媚詞 > flattery;
+含量 > contents;
+用功 > diligent;
+筆名 > pen\-name;
+佛教 > buddhism;
+可靠 > reliable;
+資產 > property;
+驅動 > to\-drive;
+驕傲 > arrogant;
+寓所 > dwelling;
+由余 > owing\-to;
+蘑菰 > mushroom;
+頁面 > web\-page;
+一起 > together;
+渴望 > desirous;
+走廊 > corridor;
+本能 > instinct;
+嗜好 > fondness;
+對外 > external;
+缺陷 > a\-defect;
+蛋殼 > eggshell;
+吃醋 > jealousy;
+合適 > suitable;
+官方 > official;
+滑冰 > to\-skate;
+商業 > business;
+財產 > property;
+宗教 > religion;
+韌體 > firmware;
+命脈 > lifeline;
+乃至 > and\-even;
+租稅 > land\-tax;
+項鍊 > necklace;
+恥辱 > disgrace;
+不行 > won''t\-do;
+守時 > punctual;
+暗轉 > blackout;
+打印 > to\-print;
+完整 > complete;
+侵吞 > to\-annex;
+波譜 > spectrum;
+栽子 > seedling;
+貂皮 > mink\-fur;
+醫院 > hospital;
+財物 > property;
+泳衣 > swimsuit;
+淚水 > teardrop;
+肉桂 > cinnamon;
+減掉 > subtract;
+鼻炎 > rhinitis;
+某時 > sometime;
+藥膏 > ointment;
+完成 > complete;
+溢出 > overflow;
+向西 > westward;
+變量 > variable;
+叛逆 > to\-rebel;
+戰區 > war\-zone;
+叱責 > reproach;
+立場 > position;
+貞潔 > chastity;
+栗子 > chestnut;
+中繼 > to\-relay;
+翳眼 > cataract;
+鎮區 > township;
+板油 > leaf\-fat;
+懸垂 > overhang;
+酒鬼 > drunkard;
+不肖 > unworthy;
+班機 > airliner;
+預言 > prophecy;
+窗子 > casement;
+實力 > strength;
+應對 > response;
+羚羊 > antelope;
+交流 > exchange;
+叛變 > renegade;
+戰事 > fighting;
+可行 > feasible;
+憔悴 > languish;
+危難 > calamity;
+安寧 > peaceful;
+丹砂 > cinnabar;
+核准 > sanction;
+譴責 > denounce;
+案件 > law\-case;
+姻親 > affinity;
+浪漫 > romantic;
+村民 > villager;
+慷慨 > vehement;
+論點 > argument;
+木炭 > charcoal;
+黃瓜 > cucumber;
+不端 > improper;
+暗自 > inwardly;
+懊喪 > dejected;
+稀有 > uncommon;
+飛機 > airplane;
+室友 > roommate;
+貶抑 > belittle;
+薄膜 > membrane;
+東方 > the\-east;
+稅收 > taxation;
+風潮 > campaign;
+背包 > knapsack;
+黨派 > partisan;
+子層 > sublayer;
+飲料 > beverage;
+人手 > manpower;
+二月 > february;
+沒落 > downfall;
+含碳 > carbonic;
+最為 > the\-most;
+醫藥 > medicine;
+深奧 > profound;
+啟動 > to\-start;
+學問 > learning;
+不用 > need\-not;
+風水 > fengshui;
+愚昧 > ignorant;
+材料 > material;
+水路 > waterway;
+子女 > children;
+事故 > accident;
+采聲 > applause;
+完全 > complete;
+碰觸 > to\-touch;
+不獨 > not\-only;
+定位 > position;
+存在 > to\-exist;
+貨幣 > currency;
+下獄 > imprison;
+孵化 > breeding;
+蚊子 > mosquito;
+不特 > not\-only;
+鞭蟲 > whipworm;
+不爽 > not\-well;
+性能 > function;
+洪流 > cataract;
+懂事 > sensible;
+食慾 > appetite;
+部類 > category;
+同盟 > alliance;
+震驚 > to\-shock;
+吸煙 > to\-smoke;
+謝謝 > to\-thank;
+不濟 > not\-good;
+頭痛 > headache;
+伙伴 > partisan;
+暗盒 > magazine;
+肖像 > portrait;
+中止 > to\-cease;
+講話 > a\-speech;
+林地 > woodland;
+深刻 > profound;
+亭子 > pavilion;
+音節 > syllable;
+架勢 > attitude;
+不測 > accident;
+太長 > oversize;
+勢頭 > momentum;
+大門 > entrance;
+愚弄 > derision;
+往還 > contacts;
+治療 > to\-treat;
+礦產 > minerals;
+上海 > shanghai;
+罪犯 > criminal;
+爐邊 > fireside;
+愉快 > cheerful;
+變種 > mutation;
+論述 > treatise;
+募集 > to\-raise;
+海峽 > straight;
+爭論 > to\-argue;
+聖化 > sanctify;
+明膫 > manifest;
+重申 > reaffirm;
+暴洪 > a\-sudden;
+替換 > exchange;
+餡兒 > stuffing;
+有所 > somewhat;
+斥責 > denounce;
+重獲 > recovery;
+不朽 > immortal;
+海外 > overseas;
+王家 > princely;
+哨兵 > sentinel;
+貶低 > belittle;
+雉雞 > pheasant;
+想家 > homesick;
+哥兒 > brothers;
+華麗 > gorgeous;
+買主 > customer;
+慘事 > disaster;
+預測 > forecast;
+美日 > us\-japan;
+負債 > indebted;
+雨量 > rainfall;
+司法 > judicial;
+誕辰 > birthday;
+咳嗽 > to\-cough;
+悲慟 > mournful;
+加長 > lengthen;
+吐棄 > to\-spurn;
+勸說 > persuade;
+處分 > disposal;
+日美 > japan\-us;
+增高 > heighten;
+遲頓 > inactive;
+財主 > rich\-man;
+不成 > won''t\-do;
+夢話 > daydream;
+不懈 > untiring;
+大要 > abstract;
+最少 > smallest;
+護照 > passport;
+主宰 > dominate;
+夢見 > to\-dream;
+不惟 > not\-only;
+事兒 > business;
+大衣 > overcoat;
+移交 > transfer;
+書寫 > to\-write;
+不怕 > fearless;
+不必 > need\-not;
+沖洗 > to\-rinse;
+不得 > must\-not;
+不很 > not\-very;
+暗暗 > secretly;
+剷除 > root\-out;
+𨺹 > mournful;
+神性 > divinity;
+總裁 > chairman;
+外表 > external;
+沉浸 > permeate;
+支配 > dominate;
+美德 > a\-virtue;
+雄辯 > eloquent;
+點名 > rollcall;
+忽然 > suddenly;
+日程 > schedule;
+姦淫 > adultery;
+豪俠 > cavalier;
+旺盛 > vigorous;
+外號 > nickname;
+奇聞 > anecdote;
+前額 > forehead;
+海上 > maritime;
+雜誌 > magazine;
+網際 > internet;
+熱誠 > devotion;
+合成 > compound;
+呼叫 > to\-shout;
+天花 > smallpox;
+雨衣 > raincoat;
+同意 > to\-agree;
+本來 > original;
+本位 > standard;
+向後 > backward;
+服務 > to\-serve;
+民眾 > populace;
+威望 > prestige;
+活動 > activity;
+叛教 > apostacy;
+不大 > not\-very;
+大能 > almighty;
+有力 > powerful;
+時機 > occasion;
+否定 > negative;
+藥商 > druggist;
+反映 > reaction;
+遺贈 > bequeath;
+文職 > civilian;
+婚嫁 > marriage;
+緊迫 > pressing;
+變數 > variable;
+議案 > proposal;
+君子 > nobleman;
+建設 > to\-build;
+特派 > dispatch;
+電腦 > computer;
+同屋 > roommate;
+藥劑 > medicine;
+一團 > regiment;
+磨擦 > friction;
+播音 > transmit;
+台座 > pedestal;
+欺負 > to\-bully;
+過載 > overload;
+遲誤 > to\-delay;
+祖國 > homeland;
+順從 > obedient;
+主任 > director;
+泰國 > thailand;
+解開 > to\-untie;
+暗室 > darkroom;
+奶牛 > milk\-cow;
+反應 > reaction;
+悲切 > mournful;
+不只 > not\-only;
+年青 > youthful;
+順序 > sequence;
+中保 > advocate;
+平靜 > tranquil;
+姿態 > attitude;
+告別 > to\-leave;
+一周 > one\-week;
+欺詐 > to\-cheat;
+一向 > all\-long;
+曝光 > exposure;
+氮氣 > nitrogen;
+附錄 > appendix;
+一匙 > spoonful;
+碗櫃 > cupboard;
+研究 > research;
+怠惰 > idleness;
+包皮 > wrapping;
+犯愁 > to\-worry;
+到達 > to\-reach;
+句子 > sentence;
+奉現 > offering;
+不倦 > tireless;
+每當 > whenever;
+訂購 > to\-order;
+斑白 > grizzled;
+證據 > evidence;
+祖先 > ancestor;
+常駐 > resident;
+暴力 > violence;
+集聚 > assemble;
+昔日 > formerly;
+功能 > function;
+警惕 > vigilant;
+波動 > undulate;
+預報 > forecast;
+奇特 > peculiar;
+忠於 > loyal\-to;
+明日 > tomorrow;
+詳細 > detailed;
+暴光 > exposure;
+頑固 > stubborn;
+選舉 > to\-elect;
+退避 > withdraw;
+練習 > exercise;
+培養 > to\-train;
+韌帶 > ligament;
+撤退 > retreat;
+牽扯 > involve;
+婚事 > wedding;
+檢閱 > inspect;
+訴苦 > grumble;
+暫停 > suspend;
+觸角 > antenna;
+彪炳 > shining;
+罷休 > give\-up;
+細長 > slender;
+認真 > earnest;
+時尚 > fashion;
+版本 > version;
+迴轉 > revolve;
+庇護 > shelter;
+酸性 > acidity;
+編纂 > compile;
+君主 > monarch;
+總理 > premier;
+天然 > natural;
+睡衣 > pajamas;
+整理 > arrange;
+煙草 > tobacco;
+燦爛 > glitter;
+可動 > movable;
+水手 > mariner;
+各個 > various;
+口吃 > stammer;
+菏蘭 > holland;
+領先 > to\-lead;
+菠菜 > spinach;
+十月 > october;
+讚同 > approve;
+毛毯 > blanket;
+陽臺 > balcony;
+近郊 > suburbs;
+狂喜 > ecstasy;
+永恆 > eternal;
+請求 > request;
+鄙棄 > disdain;
+出走 > to\-flee;
+效益 > benefit;
+重力 > gravity;
+碼字 > numeral;
+紡錘 > spindle;
+弄碎 > crumble;
+姐妹 > sisters;
+目錄 > catalog;
+正確 > correct;
+心愛 > beloved;
+弄短 > shorten;
+無處 > nowhere;
+變厚 > thicken;
+妖怪 > monster;
+緊緊 > closely;
+隱私 > privacy;
+關鍵 > crucial;
+姿勢 > posture;
+妒忌 > jealous;
+強烈 > intense;
+好戰 > warlike;
+平衡 > balance;
+特定 > special;
+弄皺 > crumple;
+相連 > to\-link;
+文法 > grammar;
+古來 > oldtime;
+天氣 > weather;
+正直 > upright;
+酒廠 > brewery;
+征服 > conquer;
+索道 > ropeway;
+陸續 > in\-turn;
+隱瞞 > to\-hide;
+外流 > outflow;
+工頭 > foreman;
+另一 > another;
+遠端 > far\-end;
+皮革 > leather;
+加甜 > sweeten;
+音信 > message;
+熱燙 > to\-burn;
+障礙 > barrier;
+語法 > grammar;
+警告 > to\-warn;
+然而 > however;
+大概 > roughly;
+電池 > battery;
+好幾 > several;
+比方 > analogy;
+退落 > subside;
+變亂 > turmoil;
+請教 > consult;
+熱潮 > upsurge;
+欺瞞 > to\-fool;
+比擬 > compare;
+議價 > bargain;
+纖弱 > fragile;
+博學 > learned;
+見證 > witness;
+加熱 > heating;
+城郊 > suburbs;
+牧場 > pasture;
+非常 > unusual;
+勇氣 > courage;
+失效 > to\-fail;
+先驅 > pioneer;
+鮑魚 > abalone;
+犯人 > convict;
+荷蘭 > holland;
+難民 > refugee;
+連結 > connect;
+很快 > quickly;
+遺物 > remnant;
+毒打 > beat\-up;
+醜事 > scandal;
+降級 > degrade;
+焦糖 > caramel;
+摘要 > summary;
+進程 > process;
+辯解 > explain;
+摔角 > wrestle;
+包扎 > wrap\-up;
+廢物 > rubbish;
+奇怪 > strange;
+委任 > appoint;
+櫃臺 > counter;
+殘株 > stubble;
+好奇 > curious;
+登陸 > to\-land;
+毆打 > beat\-up;
+監視 > oversee;
+形成 > to\-form;
+總數 > a\-total;
+特制 > special;
+強暴 > violent;
+德國 > germany;
+統統 > totally;
+無窮 > endless;
+矮林 > coppice;
+境界 > boundry;
+弄歪 > distort;
+冰袋 > ice\-bag;
+證人 > witness;
+閱讀 > to\-read;
+郵差 > postman;
+面嚮 > to\-face;
+觸發 > trigger;
+爭執 > dispute;
+瀝青 > asphalt;
+即便 > even\-if;
+大廈 > edifice;
+發酵 > ferment;
+即使 > even\-if;
+閱覽 > to\-read;
+幸福 > blessed;
+無益 > no\-good;
+利益 > benefit;
+防禦 > defense;
+歷時 > to\-last;
+版刻 > carving;
+經理 > manager;
+配偶 > consort;
+歪曲 > distort;
+救援 > to\-save;
+日出 > sunrise;
+氣候 > climate;
+繃帶 > bandage;
+無用 > useless;
+逗留 > stay\-at;
+利用 > exploit;
+區區 > trivial;
+爭吵 > dispute;
+微光 > glimmer;
+每夜 > nightly;
+違法 > illegal;
+出租 > to\-rent;
+雀斑 > freckle;
+收據 > receipt;
+十六 > sixteen;
+繪圖 > to\-draw;
+坦途 > highway;
+知悉 > to\-know;
+支撐 > prop\-up;
+熱情 > cordial;
+排除 > exclude;
+十倍 > tenfold;
+剛毛 > bristle;
+橫臥 > recline;
+刺激 > provoke;
+經濟 > economy;
+細節 > details;
+精製 > refined;
+教師 > teacher;
+樂趣 > delight;
+收成 > harvest;
+十五 > fifteen;
+多大 > how\-big;
+共處 > coexist;
+攪拌 > to\-stir;
+輕輕 > lightly;
+利潤 > profits;
+裝載 > to\-load;
+包含 > contain;
+擯棄 > abandon;
+發行 > publish;
+白蟻 > termite;
+選手 > athlete;
+失去 > to\-lose;
+輪詢 > to\-poll;
+彫刻 > engrave;
+花費 > expense;
+葉子 > foliage;
+草稿 > outline;
+武庫 > arsenal;
+弄平 > flatten;
+制止 > to\-curb;
+糾紛 > dispute;
+茅舍 > cottage;
+照搬 > to\-copy;
+兵艦 > warship;
+補貼 > subsidy;
+正常 > regular;
+廚房 > kitchen;
+文化 > culture;
+崩陷 > fall\-in;
+這次 > present;
+已經 > already;
+巴結 > fawn\-on;
+皺紋 > wrinkle;
+權杖 > scepter;
+匆促 > hastily;
+欄柵 > barrier;
+百萬 > million;
+多半 > chiefly;
+目的 > purpose;
+週末 > weekend;
+初步 > initial;
+欄杆 > railing;
+煩惱 > agonize;
+彈劾 > impeach;
+煩悶 > anguish;
+幫派 > faction;
+表面 > surface;
+糟糕 > too\-bad;
+總則 > profile;
+險峻 > arduous;
+制服 > uniform;
+像銀 > silvery;
+前提 > premise;
+編寫 > compile;
+維持 > to\-keep;
+接觸 > contact;
+勝利 > victory;
+夥伴 > partner;
+教員 > teacher;
+髕骨 > kneecap;
+擁有 > to\-have;
+此外 > besides;
+強制 > enforce;
+車輛 > vehicle;
+霍亂 > cholera;
+芬蘭 > finland;
+數位 > digital;
+輕蔑 > disdain;
+絲柏 > cypress;
+執照 > license;
+櫃檯 > counter;
+無效 > in\-vain;
+壁壘 > rampart;
+連接 > to\-link;
+訊息 > message;
+紙煙 > cigaret;
+歷史 > history;
+眺望 > lookout;
+關照 > concern;
+冰片 > borneol;
+劇場 > theater;
+熱切 > fervent;
+動亂 > turmoil;
+掩蓋 > conceal;
+阻攔 > to\-stop;
+弟兄 > brother;
+阻擋 > to\-stop;
+眉毛 > eyebrow;
+士兵 > soldier;
+被褥 > bedding;
+擺子 > malaria;
+衰退 > decline;
+引出 > extract;
+擔心 > anxious;
+公社 > commune;
+結果 > outcome;
+摧毀 > destroy;
+歲入 > revenue;
+分散 > scatter;
+墊子 > cushion;
+焦急 > anxiety;
+收到 > receive;
+監測 > monitor;
+鬢角 > temples;
+揭示 > to\-show;
+要求 > request;
+痕跡 > vestige;
+剝奪 > deprive;
+農民 > peasant;
+廠商 > company;
+到底 > finally;
+冒煙 > smoking;
+簡要 > concise;
+放任 > indulge;
+通常 > regular;
+真摯 > sincere;
+紅海 > red\-sea;
+冰河 > glacial;
+純正 > genuine;
+刨工 > planing;
+煙囪 > chimney;
+幻影 > phantom;
+拔頂 > topping;
+白白 > in\-vain;
+先知 > prophet;
+疾走 > scamper;
+已滅 > extinct;
+籠罩 > envelop;
+統帥 > command;
+陶器 > pottery;
+附寄 > enclose;
+絨布 > flannel;
+迎接 > to\-meet;
+儘管 > despite;
+阻尼 > damping;
+甜點 > dessert;
+軍艦 > warship;
+發現 > to\-find;
+閃爍 > flicker;
+衣裝 > garment;
+備註 > remarks;
+攔住 > to\-stop;
+裂紋 > crackle;
+挑起 > stir\-up;
+闡明 > clarify;
+到場 > show\-up;
+過剩 > surplus;
+蹣跚 > stagger;
+盛會 > pageant;
+剝削 > exploit;
+描畫 > to\-draw;
+裨益 > benefit;
+遇到 > to\-meet;
+偽證 > perjury;
+機械 > machine;
+照亮 > lighten;
+陳列 > display;
+停車 > to\-stop;
+陽傘 > parasol;
+山頂 > hilltop;
+掌管 > control;
+補益 > benefit;
+拷貝 > to\-copy;
+擠入 > intrude;
+權利 > a\-power;
+花環 > garland;
+公民 > citizen;
+巴林 > bahrain;
+偽裝 > to\-fake;
+堅強 > staunch;
+平均 > average;
+刺刀 > bayonet;
+簸箕 > dustpan;
+充滿 > full\-of;
+帳帘 > drapery;
+接生 > deliver;
+激素 > hormone;
+解剖 > dissect;
+振興 > promote;
+除了 > besides;
+瘧疾 > malaria;
+莊嚴 > stately;
+粗淺 > shallow;
+棲身 > stay\-at;
+平台 > terrace;
+拍賣 > auction;
+滋養 > nourish;
+解僱 > to\-fire;
+到來 > arrival;
+閒暇 > leisure;
+床側 > bedside;
+標槍 > javelin;
+疫苗 > vaccine;
+超齡 > too\-old;
+出售 > to\-sell;
+因素 > element;
+冰川 > glacier;
+闊度 > breadth;
+踐踏 > trample;
+業經 > already;
+轟擊 > bombard;
+幾個 > several;
+冰島 > iceland;
+挑舋 > provoke;
+圖畫 > drawing;
+冰山 > iceberg;
+極端 > extreme;
+農夫 > peasant;
+白晝 > daytime;
+兵戈 > weapons;
+跳躍 > to\-jump;
+療法 > therapy;
+尖頂 > steeple;
+腹部 > abdomen;
+發放 > provide;
+瘋狂 > madness;
+痲疹 > measles;
+親切 > amiable;
+工廠 > factory;
+插曲 > episode;
+血統 > lineage;
+濡濕 > moisten;
+抗議 > protest;
+絆倒 > stumble;
+糊弄 > to\-fool;
+帶動 > to\-spur;
+公式 > formula;
+災害 > scourge;
+花束 > bouquet;
+已婚 > married;
+扭轉 > reverse;
+戲院 > theater;
+痒痒 > to\-itch;
+例題 > example;
+茅屋 > cottage;
+優於 > surpass;
+機場 > airport;
+終于 > at\-last;
+模形 > pattern;
+蟋蟀 > cricket;
+信賴 > confide;
+芥末 > mustard;
+激烈 > intense;
+病症 > disease;
+冷卻 > cooling;
+桌面 > desktop;
+履行 > fulfill;
+皇帝 > emperor;
+表率 > example;
+揭幕 > opening;
+篇章 > writing;
+接替 > replace;
+機器 > machine;
+疾病 > disease;
+備用 > reserve;
+寬闊 > expanse;
+措施 > measure;
+內容 > content;
+採暖 > heating;
+相仿 > similar;
+傲然 > loftily;
+因為 > because;
+樵夫 > woodman;
+自私 > selfish;
+典型 > typical;
+茶具 > tea\-set;
+輪廓 > outline;
+糊塗 > muddled;
+榜樣 > example;
+閉塞 > stop\-up;
+表演 > perform;
+超過 > surpass;
+節目 > program;
+鑽石 > diamond;
+園林 > gardens;
+生菜 > lettuce;
+小販 > peddler;
+軌枕 > sleeper;
+白天 > daytime;
+英國 > england;
+首飾 > jewelry;
+工匠 > artisan;
+盈余 > surplus;
+俘虜 > captive;
+臂章 > armband;
+自由 > freedom;
+布丁 > pudding;
+圍攻 > besiege;
+喝采 > acclaim;
+生育 > to\-bear;
+赤道 > equator;
+高漲 > upsurge;
+門口 > doorway;
+損傷 > to\-harm;
+身材 > stature;
+英勇 > bravery;
+例證 > example;
+問題 > problem;
+寄送 > to\-send;
+傾斜 > incline;
+困擾 > perplex;
+複合 > complex;
+抄網 > dip\-net;
+百分 > percent;
+嚴正 > sternly;
+衣服 > clothes;
+或許 > perhaps;
+成語 > proverb;
+榮幸 > honored;
+漂礫 > boulder;
+馬蹬 > stirrup;
+模倣 > imitate;
+例行 > routine;
+商隊 > caravan;
+學院 > college;
+僵局 > impasse;
+捕手 > catcher;
+投票 > to\-vote;
+行李 > luggage;
+提到 > mention;
+驕矜 > haughty;
+信箱 > mailbox;
+密談 > commune;
+用盡 > exhaust;
+概念 > concept;
+停止 > to\-stop;
+元件 > element;
+地址 > address;
+國家 > country;
+孔雀 > peacock;
+鍵詞 > keyword;
+滑稽 > comical;
+商量 > consult;
+低調 > low\-key;
+按時 > on\-time;
+裝入 > to\-load;
+打算 > to\-plan;
+小結 > summary;
+小組 > a\-group;
+按摩 > massage;
+偉業 > exploit;
+質量 > quality;
+節日 > holiday;
+裁剪 > cut\-out;
+產物 > product;
+供給 > furnish;
+舞弄 > to\-wave;
+打碎 > shatter;
+拯救 > to\-save;
+在前 > forward;
+李鵬 > li\-peng;
+安設 > install;
+責難 > censure;
+島嶼 > islands;
+查調 > inquiry;
+拋棄 > discard;
+便盆 > bed\-pan;
+蠱惑 > enchant;
+假日 > holiday;
+安裝 > install;
+滲漏 > seepage;
+艦只 > warship;
+拷打 > to\-beat;
+聯邦 > federal;
+漂泊 > drifter;
+噸數 > tonnage;
+商討 > discuss;
+售賣 > to\-sell;
+香菜 > parsley;
+海鮮 > seafood;
+臥房 > bedroom;
+章節 > chapter;
+滴流 > trickle;
+疏忽 > neglect;
+僥倖 > luckily;
+懲罰 > penalty;
+傳單 > leaflet;
+香腸 > sausage;
+走私 > smuggle;
+專用 > special;
+龍蝦 > lobster;
+指定 > appoint;
+僕人 > servant;
+容納 > contain;
+侯爵 > marquis;
+椰子 > coconut;
+鑒戒 > warning;
+代詞 > pronoun;
+丹麥 > denmark;
+簡介 > summary;
+畫廊 > gallery;
+臥室 > bedroom;
+扳機 > trigger;
+衝力 > impulse;
+完美 > perfect;
+展望 > outlook;
+竊盜 > burglar;
+瑣細 > trivial;
+挪動 > to\-move;
+家禽 > poultry;
+空缺 > vacancy;
+最高 > highest;
+高原 > plateau;
+畫家 > painter;
+屈曲 > crooked;
+學者 > scholar;
+疲勞 > fatigue;
+滿手 > handful;
+不齒 > despise;
+投手 > pitcher;
+海邊 > seaside;
+把持 > control;
+噁心 > to\-hate;
+尋求 > to\-seek;
+本錢 > capital;
+膽子 > courage;
+耳語 > whisper;
+噴墨 > ink\-jet;
+之間 > between;
+有限 > limited;
+托架 > bracket;
+品質 > quality;
+本金 > capital;
+錦緞 > brocade;
+麻雀 > sparrow;
+扶持 > to\-help;
+虔誠 > sincere;
+保持 > to\-keep;
+扶手 > railing;
+最長 > longest;
+扳手 > spanner;
+便於 > easy\-to;
+海豚 > dolphin;
+愛護 > cherish;
+節儉 > thrifty;
+神體 > godhead;
+打擾 > disturb;
+中間 > betwixt;
+來歷 > history;
+感覺 > to\-feel;
+範例 > example;
+孤立 > isolate;
+當前 > current;
+層子 > stratum;
+本質 > essence;
+用字 > diction;
+聯網 > network;
+潛伏 > to\-hide;
+聯結 > to\-bind;
+管制 > control;
+促成 > procure;
+尊敬 > respect;
+安瓿 > ampoule;
+至上 > supreme;
+一項 > an\-item;
+抄寫 > to\-copy;
+贅瘤 > useless;
+清真 > islamic;
+畫兒 > picture;
+喜歡 > to\-like;
+仔細 > careful;
+屠夫 > butcher;
+上門 > drop\-in;
+學生 > student;
+獎金 > premium;
+人群 > a\-crowd;
+當今 > current;
+假使 > suppose;
+更遠 > farther;
+尋找 > to\-seek;
+併條 > drawing;
+也許 > perhaps;
+驚嚇 > horrify;
+扳子 > spanner;
+抽出 > extract;
+尷尬 > awkward;
+不錯 > correct;
+核查 > examine;
+丙酮 > acetone;
+才干 > ability;
+香水 > perfume;
+香氣 > incense;
+小心 > careful;
+成文 > written;
+吐露 > to\-tell;
+趕快 > at\-once;
+會議 > meeting;
+飛船 > airship;
+曼谷 > bangkok;
+呈送 > present;
+主詞 > subject;
+沉默 > silence;
+打字 > to\-type;
+沈默 > silence;
+跳動 > to\-beat;
+流行 > popular;
+佔有 > to\-have;
+宴會 > banquet;
+背棄 > abandon;
+領隊 > captain;
+月蝕 > eclipse;
+承受 > to\-bear;
+倉促 > hurried;
+抓傷 > scratch;
+不賴 > not\-bad;
+肥沃 > fertile;
+意義 > meaning;
+召集 > convene;
+神跡 > miracle;
+使徒 > apostle;
+清洗 > to\-wash;
+告訴 > to\-tell;
+脹大 > swollen;
+喜愛 > to\-like;
+寶寶 > darling;
+等候 > waiting;
+跌到 > to\-fall;
+懺悔 > confess;
+戶外 > outdoor;
+寬容 > lenient;
+能幹 > capable;
+不見 > not\-see;
+住房 > housing;
+耕種 > to\-till;
+戰士 > fighter;
+翡翠 > emerald;
+尊嚴 > dignity;
+密度 > density;
+尖叫 > screech;
+企業 > company;
+安撫 > placate;
+頂針 > thimble;
+核子 > nuclear;
+休會 > adjourn;
+貢物 > tribute;
+淘河 > pelican;
+飛盤 > frisbee;
+淘氣 > naughty;
+騎兵 > cavalry;
+懊惱 > annoyed;
+第七 > seventh;
+打倒 > flatten;
+促使 > spur\-on;
+風箱 > bellows;
+浴盆 > bathtub;
+群花 > blossom;
+托付 > entrust;
+栽培 > to\-grow;
+科目 > subject;
+馬子 > commode;
+越南 > vietnam;
+安慰 > comfort;
+空戰 > air\-war;
+成圈 > wreathe;
+應得 > deserve;
+戰勝 > prevail;
+不苟 > not\-lax;
+住宿 > lodging;
+贊成 > approve;
+變遷 > changes;
+未知 > unknown;
+情緒 > feeling;
+封入 > inclose;
+野貓 > wildcat;
+代替 > instead;
+案卷 > records;
+患者 > patient;
+來到 > to\-come;
+代數 > algebra;
+木瓦 > shingle;
+成功 > success;
+中立 > neutral;
+現時 > current;
+世紀 > century;
+低地 > lowland;
+海澡 > seaweed;
+含義 > meaning;
+今晚 > tonight;
+金融 > banking;
+哀求 > entreat;
+洗禮 > baptism;
+學家 > scholar;
+妓院 > brothel;
+不等 > to\-vary;
+顯示 > to\-show;
+博雅 > learned;
+青魚 > herring;
+馬具 > harness;
+名義 > titular;
+不祥 > ominous;
+消極 > passive;
+水銀 > mercury;
+暈船 > seasick;
+職工 > workers;
+日間 > daytime;
+孟子 > mencius;
+神祖 > godhead;
+曉示 > to\-tell;
+蒸餾 > distill;
+完善 > perfect;
+悲痛 > grieved;
+官司 > lawsuit;
+非難 > reproof;
+永遠 > forever;
+酬載 > payload;
+聽寫 > dictate;
+委託 > entrust;
+虧損 > deficit;
+麻煩 > trouble;
+馬上 > at\-once;
+景色 > scenery;
+祈禱 > to\-pray;
+忽視 > neglect;
+譏誚 > cynical;
+確認 > confirm;
+王權 > royalty;
+方面 > respect;
+古老 > ancient;
+企圖 > attempt;
+題目 > subject;
+污衊 > slander;
+羅盤 > compass;
+現實 > reality;
+質地 > texture;
+乾旱 > drought;
+珍愛 > cherish;
+贊助 > sponsor;
+忠誠 > devoted;
+斑駮 > mottled;
+鄭重 > serious;
+升遷 > promote;
+半途 > halfway;
+反而 > instead;
+好轉 > improve;
+王朝 > dynasty;
+惡棍 > villain;
+半路 > halfway;
+整體 > overall;
+羽毛 > feather;
+感情 > feeling;
+鼻孔 > nostril;
+哀思 > pensive;
+任務 > mission;
+愛惜 > cherish;
+猖獗 > rampant;
+果園 > orchard;
+旁邊 > lateral;
+風景 > scenery;
+鴕鳥 > ostrich;
+醜聞 > scandal;
+飽學 > learned;
+殘骸 > remains;
+文雅 > elegant;
+飛彈 > missile;
+聽力 > hearing;
+仿傚 > to\-copy;
+日誌 > journal;
+外面 > outside;
+頑皮 > naughty;
+暴烈 > violent;
+雄黃 > realgar;
+會期 > session;
+不法 > lawless;
+周末 > weekend;
+淡光 > shimmer;
+類比 > analogy;
+諺語 > proverb;
+大錯 > blunder;
+老年 > elderly;
+丟棄 > discard;
+老師 > teacher;
+變硬 > stiffen;
+海岸 > coastal;
+日蝕 > eclipse;
+礦物 > mineral;
+豹子 > leopard;
+奇蹟 > miracle;
+比較 > compare;
+奇跡 > miracle;
+以便 > so\-that;
+著陸 > landing;
+張開 > stretch;
+大都 > general;
+好處 > benefit;
+科學 > science;
+愛好 > to\-like;
+液化 > liquify;
+鄙視 > despise;
+更換 > replace;
+方言 > dialect;
+古物 > antique;
+日落 > sundown;
+神格 > godhead;
+本屆 > current;
+郵費 > postage;
+曖昧 > illicit;
+如花 > flowery;
+鞭策 > spur\-on;
+情感 > feeling;
+丹心 > loyalty;
+雄雞 > rooster;
+沿海 > coastal;
+放開 > unleash;
+繪製 > to\-draw;
+中性 > neutral;
+鄙薄 > despise;
+誹謗 > slander;
+怪物 > monster;
+復興 > restore;
+涉及 > involve;
+羨慕 > envious;
+包裹 > wrap\-up;
+著述 > writing;
+外貌 > profile;
+餅乾 > biscuit;
+有害 > harmful;
+酒精 > alcohol;
+社會 > society;
+羞愧 > ashamed;
+主導 > to\-lead;
+暴政 > tyranny;
+感到 > to\-feel;
+王國 > kingdom;
+易碎 > brittle;
+釘死 > crucify;
+顧忌 > scruple;
+愈合 > to\-heal;
+哀傷 > grieved;
+數詞 > numeral;
+詳述 > recount;
+剩餘 > surplus;
+願意 > to\-wish;
+包藏 > contain;
+玩兒 > to\-play;
+中子 > neutron;
+金橘 > kumquat;
+需要 > to\-need;
+悔恨 > remorse;
+含意 > meaning;
+最大 > biggest;
+最多 > at\-most;
+曉得 > to\-know;
+耕作 > farming;
+急流 > torrent;
+罷手 > give\-up;
+老兵 > veteran;
+老公 > husband;
+壓迫 > oppress;
+猜想 > suppose;
+中央 > central;
+隊長 > captain;
+砲臺 > battery;
+乏味 > tedious;
+𡜱 > to\-envy;
+擯除 > discard;
+編造 > compile;
+上將 > general;
+呼吸 > breathe;
+𢘸 > to\-hate;
+猜度 > surmise;
+呻吟 > to\-moan;
+物理 > physics;
+遴選 > to\-pick;
+爭端 > dispute;
+女神 > goddess;
+想像 > imagine;
+引言 > forward;
+同志 > comrade;
+包羅 > include;
+不好 > no\-good;
+讌會 > banquet;
+旅程 > journey;
+本事 > ability;
+釋放 > release;
+沒有 > haven''t;
+南瓜 > pumpkin;
+變暖 > warming;
+氣球 > balloon;
+狂暴 > frantic;
+丈夫 > husband;
+神女 > goddess;
+吊床 > hammock;
+及時 > in\-time;
+妖物 > monster;
+部署 > dispose;
+也不 > neither;
+可憐 > pitiful;
+女皇 > empress;
+增進 > promote;
+遙遠 > distant;
+遙遙 > distant;
+評論 > comment;
+一天 > one\-day;
+可愛 > amiable;
+改裝 > remodel;
+牽涉 > involve;
+阿飛 > hoodlum;
+可恨 > hateful;
+悲哀 > grieved;
+顧問 > adviser;
+天線 > antenna;
+勳績 > exploit;
+法官 > a\-judge;
+美國 > america;
+最佳 > optimum;
+幽靈 > specter;
+運轉 > to\-work;
+雷聲 > thunder;
+運輸 > transit;
+特殊 > special;
+悲劇 > tragedy;
+石膏 > plaster;
+書信 > epistle;
+度量 > measure;
+經銷 > to\-sell;
+劍術 > fencing;
+叛徒 > traitor;
+註解 > comment;
+網路 > network;
+上午 > morning;
+緒言 > preface;
+訴訟 > lawsuit;
+誇耀 > proudly;
+文章 > article;
+缺席 > absence;
+一口 > readily;
+吮吸 > to\-suck;
+七十 > seventy;
+狂怒 > furious;
+新生 > newborn;
+隱藏 > to\-hide;
+經過 > to\-pass;
+不再 > no\-more;
+隱蔽 > conceal;
+世俗 > profane;
+思想 > thought;
+年鑑 > almanac;
+改良 > improve;
+急忙 > hastily;
+繪畫 > drawing;
+比畫 > gesture;
+燈籠 > lantern;
+編著 > compile;
+警戒 > to\-warn;
+維護 > defense;
+量子 > quantum;
+猿人 > ape\-man;
+叫好 > applaud;
+類似 > similar;
+逐退 > repulse;
+碰撞 > collide;
+注入 > pour\-in;
+頂多 > at\-most;
+前言 > preface;
+非法 > illegal;
+水晶 > crystal;
+正義 > justice;
+晚宴 > banquet;
+向前 > forward;
+辯駁 > dispute;
+從此 > thence;
+鳥羽 > pinion;
+報酬 > reward;
+編者 > editor;
+誤用 > misuse;
+外甥 > nephew;
+重回 > return;
+強盜 > bandit;
+詩篇 > psalms;
+方法 > method;
+政策 > policy;
+逃走 > escape;
+警察 > police;
+法令 > decree;
+危懼 > afraid;
+罪人 > sinner;
+大炮 > cannon;
+大災 > plague;
+勃發 > thrive;
+吉他 > guitar;
+包涵 > excuse;
+毀滅 > perish;
+帶釦 > buckle;
+確實 > indeed;
+動物 > animal;
+緊縮 > reduce;
+燒焦 > scorch;
+領事 > consul;
+大浪 > billow;
+睡著 > asleep;
+變化 > change;
+氣息 > breath;
+擱置 > shelve;
+變動 > change;
+整潔 > neatly;
+旨意 > decree;
+弊病 > malady;
+選票 > a\-vote;
+剽竊 > pirate;
+編碼 > coding;
+鄉村 > rustic;
+巨頭 > tycoon;
+頂事 > useful;
+撕裂 > mangle;
+附著 > adhere;
+正當 > timely;
+怒吼 > bellow;
+奇景 > marvel;
+版式 > format;
+遠程 > remote;
+縮減 > to\-cut;
+半徑 > radius;
+磨光 > polish;
+鮭魚 > salmon;
+降臨 > befall;
+課業 > lesson;
+醜化 > defame;
+角落 > corner;
+狂人 > madman;
+時刻 > moment;
+大桶 > barrel;
+看見 > to\-see;
+緣由 > reason;
+解脫 > relief;
+破敗 > beaten;
+旗幟 > ensign;
+水壺 > kettle;
+殖民 > colony;
+旋律 > melody;
+郵政 > postal;
+靶子 > target;
+後悔 > regret;
+動機 > motive;
+厭倦 > dreary;
+徐徐 > slowly;
+內陸 > inland;
+工錢 > salary;
+公開 > public;
+原先 > former;
+八開 > octavo;
+熊熊 > raging;
+辯論 > debate;
+短歌 > ballad;
+博士 > doctor;
+奶子 > breast;
+忠告 > advice;
+砲手 > gunner;
+多星 > starry;
+律師 > lawyer;
+微妙 > subtle;
+好好 > nicely;
+總是 > always;
+開鎖 > unlock;
+步測 > pacing;
+營救 > rescue;
+敬服 > admire;
+酬勞 > reward;
+得宜 > proper;
+初級 > junior;
+輕鬆 > gentle;
+爐床 > hearth;
+謊報 > to\-lie;
+確保 > ensure;
+運用 > to\-use;
+天才 > talent;
+絲絨 > velvet;
+道理 > reason;
+攪混 > to\-mix;
+壽材 > coffin;
+解答 > answer;
+版圖 > domain;
+政權 > regime;
+很少 > seldom;
+爵士 > knight;
+襯裡 > lining;
+謙和 > meekly;
+網球 > tennis;
+荒蕪 > barren;
+包庇 > shield;
+分給 > divide;
+天性 > inborn;
+歐洲 > europe;
+勾引 > seduce;
+白銀 > silver;
+熱望 > aspire;
+精選 > chosen;
+效果 > result;
+誘拐 > abduct;
+誠懇 > hearty;
+通知 > notify;
+刺痛 > tingle;
+徵召 > enlist;
+歡樂 > gaiety;
+紫色 > purple;
+裡面 > inside;
+先鋒 > herald;
+平穩 > smooth;
+敵意 > enmity;
+巴西 > brazil;
+物件 > object;
+卸下 > unload;
+包容 > pardon;
+誘惑 > entice;
+牧人 > pastor;
+增添 > add\-to;
+外形 > figure;
+集會 > gather;
+隨機 > random;
+兵變 > mutiny;
+敏捷 > nimble;
+牛仔 > cowboy;
+提醒 > remind;
+觸犯 > offend;
+奪取 > snatch;
+夫子 > pedant;
+太子 > prince;
+採集 > gather;
+真空 > vacu\:m;
+殺害 > murder;
+殘忍 > bloody;
+閒話 > gossip;
+眼皮 > eyelid;
+細線 > string;
+辭職 > resign;
+鄙吝 > vulgar;
+線條 > streak;
+鴿子 > pigeon;
+徒勞 > futile;
+得到 > to\-get;
+轉變 > change;
+細粉 > powder;
+誠實 > honest;
+希臘 > greece;
+難得 > seldom;
+大夫 > doctor;
+數字 > number;
+濺開 > splash;
+攻打 > attack;
+遊歷 > travel;
+剛正 > honest;
+復仇 > avenge;
+階梯 > ladder;
+壓扁 > squash;
+詩意 > poetic;
+緣故 > reason;
+攝政 > regent;
+從來 > always;
+標語 > slogan;
+縮小 > reduce;
+發誓 > to\-vow;
+橡膠 > rubber;
+地鐵 > subway;
+雌性 > female;
+十一 > eleven;
+從事 > go\-for;
+熱帶 > tropic;
+雜工 > porter;
+出產 > output;
+奢侈 > luxury;
+蒙受 > suffer;
+掛鉤 > couple;
+純粹 > purely;
+夏天 > summer;
+鄙俚 > vulgar;
+鄙俗 > vulgar;
+露出 > expose;
+攀昇 > rising;
+煩擾 > bother;
+解渴 > quench;
+遺憾 > regret;
+歌手 > singer;
+巡航 > cruise;
+布線 > wiring;
+正式 > formal;
+冰箱 > icebox;
+系統 > system;
+無法 > unable;
+逕流 > runoff;
+夾克 > jacket;
+大吃 > gobble;
+毫不 > hardly;
+道教 > taoism;
+診所 > clinic;
+遺恨 > grudge;
+擴散 > spread;
+鬆餅 > muffin;
+擯斥 > reject;
+加崙 > gallon;
+奇事 > marvel;
+教堂 > church;
+詞尾 > suffix;
+週期 > period;
+零售 > retail;
+櫻桃 > cherry;
+在車 > aboard;
+茶碗 > teacup;
+緞帶 > ribbon;
+分派 > assign;
+疾馳 > gallop;
+緊急 > urgent;
+廁所 > toilet;
+度數 > degree;
+阻橈 > thwart;
+控訴 > accuse;
+搖籃 > cradle;
+著名 > famous;
+強勢 > mighty;
+紮營 > encamp;
+綁架 > kidnap;
+凹洞 > cavity;
+弱化 > weaken;
+陰戶 > vagina;
+擊敗 > defeat;
+進接 > access;
+短句 > clause;
+絕氣 > expire;
+証實 > verify;
+連擊 > batter;
+教區 > parish;
+逮捕 > arrest;
+監獄 > prison;
+火箭 > rocket;
+隱士 > hermit;
+芹菜 > celery;
+短劍 > dagger;
+芭蕉 > banana;
+強健 > sturdy;
+武器 > weapon;
+舌頭 > tongue;
+煤屑 > cinder;
+平板 > tablet;
+凹槽 > socket;
+記帳 > charge;
+刮掉 > scrape;
+陰影 > shadow;
+高雅 > dainty;
+歡喜 > joyful;
+分枝 > branch;
+削弱 > weaken;
+步哨 > sentry;
+搪瓷 > enamel;
+傳達 > convey;
+擴展 > extend;
+分會 > branch;
+激起 > arouse;
+衡量 > weight;
+骨髓 > marrow;
+搔癢 > tickle;
+雕像 > statue;
+正午 > midday;
+撫抱 > caress;
+公眾 > public;
+救主 > savior;
+粘粘 > sticky;
+歷來 > always;
+攪動 > to\-mix;
+街道 > street;
+巴爾 > baltic;
+的確 > really;
+過失 > defect;
+長短 > length;
+幫手 > helper;
+正值 > honest;
+公用 > public;
+遭受 > suffer;
+附庸 > vassal;
+目標 > target;
+適合 > to\-fit;
+高達 > attain;
+補給 > supply;
+花粉 > pollen;
+全球 > entire;
+挑選 > choose;
+遭到 > suffer;
+白痴 > idiocy;
+峽谷 > canyon;
+噪音 > rumble;
+捍衛 > defend;
+表親 > cousin;
+觀念 > notion;
+裁縫 > tailor;
+採納 > accept;
+補種 > reseed;
+允當 > proper;
+冰柱 > icicle;
+閱歷 > to\-see;
+坦白 > honest;
+防守 > defend;
+阿姨 > auntie;
+草料 > fodder;
+線上 > online;
+出席 > attend;
+驚駭 > fright;
+素描 > sketch;
+兇猛 > fierce;
+閒混 > loiter;
+摟抱 > to\-hug;
+自身 > itself;
+進口 > import;
+採礦 > mining;
+擾亂 > infest;
+結尾 > ending;
+閣樓 > garret;
+花生 > peanut;
+過份 > unduly;
+驟雨 > shower;
+幃幕 > screen;
+搶救 > rescue;
+光澤 > luster;
+搜查 > search;
+逝去 > elapse;
+光漆 > enamel;
+搭救 > rescue;
+光滑 > glossy;
+逕向 > radial;
+屏風 > screen;
+逼仄 > narrow;
+相差 > differ;
+關心 > caring;
+搖晃 > falter;
+抵達 > arrive;
+地產 > estate;
+細嫩 > tender;
+局面 > aspect;
+澱粉 > starch;
+標榜 > flaunt;
+白楊 > poplar;
+源點 > source;
+滑雪 > to\-ski;
+回絕 > rebuff;
+襪帶 > garter;
+綁住 > fasten;
+眼光 > vision;
+樣本 > sample;
+烈士 > martyr;
+精明 > astute;
+腳鐐 > fetter;
+產量 > output;
+白果 > ginkgo;
+帆布 > canvas;
+布幕 > screen;
+跳進 > plunge;
+嚴肅 > solemn;
+附上 > attach;
+抬起 > uplift;
+幾乎 > almost;
+迫切 > urgent;
+瀉湖 > lagoon;
+約定 > engage;
+簡直 > simply;
+跟進 > follow;
+光是 > solely;
+給予 > accord;
+山谷 > valley;
+報信 > notify;
+簡略 > simple;
+複數 > plural;
+白搭 > no\-use;
+巡弋 > cruise;
+機密 > secret;
+航程 > flight;
+冬天 > winter;
+援手 > succor;
+體系 > system;
+帝國 > empire;
+茶壺 > teapot;
+盟國 > allies;
+橘子 > orange;
+裁決 > ruling;
+視力 > vision;
+實體 > entity;
+發抖 > shiver;
+索取 > to\-ask;
+席卷 > engulf;
+地毯 > carpet;
+八度 > octave;
+用語 > syntax;
+市場 > market;
+城堡 > castle;
+節約 > frugal;
+甲蟲 > beetle;
+承諾 > effort;
+衛生 > health;
+長度 > length;
+補救 > remedy;
+修訂 > revise;
+師傅 > master;
+迄今 > so\-far;
+實際 > actual;
+嘗試 > to\-try;
+垂幕 > canopy;
+蠟筆 > crayon;
+冰凍 > freeze;
+侮辱 > insult;
+樣子 > manner;
+疫病 > plague;
+執事 > deacon;
+成長 > mature;
+溝道 > groove;
+農人 > farmer;
+插座 > socket;
+滾落 > tumble;
+將近 > almost;
+系列 > series;
+盈利 > profit;
+排斥 > reject;
+扮裝 > makeup;
+拉緊 > strain;
+保衛 > defend;
+融解 > molten;
+圖案 > design;
+腔調 > accent;
+走錯 > astray;
+喉頭 > throat;
+節省 > saving;
+輕微 > slight;
+圓柱 > column;
+棉花 > cotton;
+屏蔽 > screen;
+內地 > inland;
+信號 > signal;
+小貓 > kitten;
+行為 > action;
+對象 > target;
+共同 > common;
+埋伏 > ambush;
+疆界 > border;
+對話 > dialog;
+符號 > symbol;
+胸針 > brooch;
+搭乘 > embark;
+脅迫 > coerce;
+喚醒 > arouse;
+八十 > eighty;
+樣品 > sample;
+簸揚 > winnow;
+棒糖 > sucker;
+算盤 > abacus;
+簡易 > simple;
+蠟燭 > candle;
+精力 > energy;
+公共 > public;
+傳染 > infect;
+工人 > worker;
+在後 > behind;
+自然 > nature;
+滾筒 > roller;
+潤滑 > smooth;
+起訴 > to\-sue;
+蝗蟲 > locust;
+岸然 > solemn;
+傳教 > preach;
+裁定 > ruling;
+等級 > degree;
+較好 > better;
+花園 > garden;
+花圈 > wreath;
+腎臟 > kidney;
+捕拿 > arrest;
+路程 > course;
+先前 > before;
+憂鬱 > sullen;
+馬路 > street;
+穗飾 > tassel;
+倫理 > ethics;
+瑞金 > ruijin;
+抱病 > be\-ill;
+傳授 > impart;
+車庫 > garage;
+測量 > survey;
+字首 > prefix;
+魚夫 > fisher;
+粗劣 > coarse;
+花哨 > garish;
+才能 > talent;
+輕咬 > nibble;
+條紋 > stripe;
+致死 > deadly;
+嚴格 > strict;
+插入 > insert;
+漂白 > bleach;
+挫敗 > thwart;
+贖金 > ransom;
+籃子 > basket;
+行星 > planet;
+回憶 > recall;
+光亮 > bright;
+濾器 > filter;
+粗俗 > vulgar;
+穀類 > cereal;
+偵查 > detect;
+傷心 > grieve;
+容許 > permit;
+控告 > accuse;
+袖子 > sleeve;
+低語 > mutter;
+花兒 > flower;
+蜥蜴 > lizard;
+漣漪 > ripple;
+固守 > adhere;
+國外 > abroad;
+液體 > liquid;
+背誦 > recite;
+枕頭 > pillow;
+蜘蛛 > spider;
+崎嶇 > rugged;
+餑餑 > pastry;
+疲憊 > beaten;
+侍者 > waiter;
+餐飲 > repast;
+傷害 > injure;
+修理 > repair;
+何處 > whence;
+漫步 > ramble;
+信用 > credit;
+涼鞋 > sandal;
+海龜 > turtle;
+因子 > factor;
+拳擊 > boxing;
+軟化 > soften;
+安詳 > serene;
+土匪 > bandit;
+拔根 > uproot;
+扣留 > detain;
+松雞 > grouse;
+香蕉 > banana;
+高度 > height;
+構件 > member;
+商談 > confer;
+異教 > heresy;
+簡單 > simple;
+棺材 > coffin;
+地主 > a\-host;
+高山 > alpine;
+僱佣 > employ;
+飢餓 > hunger;
+生涯 > career;
+森林 > forest;
+作者 > author;
+挪威 > norway;
+尋的 > homing;
+嚴密 > strict;
+拘捕 > arrest;
+健康 > health;
+表哥 > cousin;
+朋黨 > clique;
+混血 > hybrid;
+跋涉 > trudge;
+僅僅 > barely;
+回去 > return;
+漏斗 > funnel;
+賓語 > object;
+乳頭 > nipple;
+滿期 > expire;
+理論 > theory;
+介質 > medium;
+答案 > answer;
+鑿子 > chisel;
+由於 > due\-to;
+把柄 > handle;
+和風 > breeze;
+使用 > to\-use;
+聘請 > engage;
+扶植 > foster;
+環球 > global;
+崗位 > a\-post;
+便池 > urinal;
+回來 > return;
+拓展 > expand;
+溪流 > stream;
+嚴厲 > severe;
+潛在 > hidden;
+船上 > aboard;
+宣稱 > assert;
+哀辭 > lament;
+手段 > method;
+乾酪 > cheese;
+更高 > higher;
+偌大 > so\-big;
+宣示 > to\-vow;
+小氣 > stingy;
+體制 > system;
+成熟 > mature;
+肌肉 > muscle;
+作用 > action;
+抽屜 > drawer;
+驚恐 > appall;
+把手 > handle;
+手槍 > pistol;
+家畜 > cattle;
+福音 > gospel;
+起源 > origin;
+群體 > colony;
+亂跳 > bounce;
+男巫 > wizard;
+膽大 > daring;
+安祥 > serene;
+答復 > answer;
+跟從 > follow;
+健全 > robust;
+根源 > origin;
+能源 > energy;
+本身 > itself;
+拌嘴 > bicker;
+打擊 > to\-hit;
+應當 > should;
+扣押 > detain;
+笨拙 > clumsy;
+個子 > height;
+應用 > to\-use;
+瑕疵 > stigma;
+曝露 > expose;
+海裡 > marine;
+味道 > flavor;
+手指 > finger;
+把子 > handle;
+私語 > murmur;
+養育 > foster;
+最近 > recent;
+清瘦 > meager;
+活躍 > active;
+岸上 > ashore;
+成果 > result;
+中途 > midway;
+頂點 > summit;
+暴露 > expose;
+突然 > sudden;
+木製 > wooden;
+安然 > safely;
+飢荒 > famine;
+趾尖 > tiptoe;
+束腰 > girdle;
+宮殿 > palace;
+板結 > harden;
+供應 > supply;
+信奉 > belief;
+成效 > effect;
+瓶子 > bottle;
+三重 > treble;
+客氣 > polite;
+浮著 > afloat;
+媒質 > medium;
+變黑 > darken;
+孤獨 > lonely;
+渠溝 > trench;
+胡椒 > pepper;
+浮華 > vanity;
+駁斥 > refute;
+不適 > unwell;
+羞辱 > baffle;
+留下 > remain;
+上邊 > upside;
+鏡子 > mirror;
+胡桃 > walnut;
+鏟子 > shovel;
+封建 > feudal;
+果真 > really;
+和藹 > kindly;
+鸚鵡 > parrot;
+穿洞 > pierce;
+寺廟 > temple;
+理由 > reason;
+足夠 > enough;
+蕁麻 > nettle;
+客棧 > tavern;
+寶座 > throne;
+叩頭 > kowtow;
+房客 > tenant;
+第四 > fourth;
+野餐 > picnic;
+專家 > expert;
+柳樹 > willow;
+由來 > origin;
+使得 > usable;
+漂亮 > pretty;
+嗓子 > throat;
+蜃景 > mirage;
+重音 > accent;
+反駁 > retort;
+少女 > maiden;
+由于 > due\-to;
+海綿 > sponge;
+球狀 > sphere;
+用于 > use\-in;
+應有 > proper;
+貧瘠 > barren;
+號碼 > number;
+晚飯 > supper;
+賭注 > stakes;
+神諭 > oracle;
+愚笨 > stupid;
+果然 > really;
+不要 > don''t\!;
+材積 > volume;
+扁圓 > oblate;
+黃色 > yellow;
+叮鈴 > jingle;
+第八 > eighth;
+居住 > reside;
+學校 > school;
+上衫 > blouse;
+波谷 > trough;
+上衣 > jacket;
+寶塔 > pagoda;
+客戶 > client;
+窗戶 > window;
+家庭 > family;
+重量 > weight;
+柏林 > berlin;
+有罪 > guilty;
+鍵帽 > keycap;
+小包 > packet;
+亨特 > hunter;
+積極 > active;
+打傷 > bruise;
+頁邊 > margin;
+手冊 > manual;
+寂寞 > lonely;
+海盜 > pirate;
+背後 > behind;
+牙齒 > dental;
+作家 > author;
+名言 > saying;
+普通 > common;
+耀眼 > dazzle;
+主編 > editor;
+港彎 > harbor;
+背帶 > braces;
+犯錯 > to\-err;
+聖殿 > temple;
+暴虐 > brutal;
+波蘭 > poland;
+駁回 > reject;
+成員 > member;
+想睡 > drowsy;
+星雲 > nebula;
+變軟 > soften;
+不能 > cannot;
+海狸 > beaver;
+依偎 > nestle;
+憤慨 > resent;
+懦夫 > coward;
+休惜 > recess;
+蓬鬆 > fluffy;
+可親 > kindly;
+磁鐵 > magnet;
+領袖 > leader;
+不羈 > unruly;
+校園 > campus;
+成勣 > result;
+神聖 > divine;
+中等 > medium;
+變質 > go\-bad;
+羊肉 > mutton;
+消滅 > perish;
+喉嚨 > throat;
+性質 > nature;
+吊著 > dangle;
+柱子 > pillar;
+清廉 > honest;
+危險 > danger;
+安定 > stable;
+憎惡 > loathe;
+口袋 > pocket;
+憎恨 > detest;
+喜劇 > comedy;
+寒冬 > wintry;
+貶斥 > demote;
+奮鬥 > strive;
+單位 > a\-unit;
+有用 > useful;
+球拍 > racket;
+句號 > period;
+口號 > slogan;
+穩定 > stable;
+單一 > single;
+子彈 > bullet;
+安培 > ampere;
+硬領 > collar;
+顆粒 > kernel;
+食槽 > manger;
+媒界 > medium;
+本源 > origin;
+宰割 > invade;
+背叛 > betray;
+贖回 > redeem;
+波紋 > ripple;
+窗口 > window;
+獨特 > unique;
+字尾 > suffix;
+神社 > shrine;
+蕪菁 > turnip;
+油脂 > grease;
+靛青 > indigo;
+鞠躬 > to\-bow;
+金色 > golden;
+卷軸 > scroll;
+大麥 > barley;
+鵓鴿 > pigeon;
+室內 > indoor;
+何以 > whence;
+受苦 > suffer;
+伸出 > extend;
+一瞥 > glance;
+伯勞 > shrike;
+活潑 > lively;
+斬首 > behead;
+賓客 > guests;
+匕首 > dagger;
+瑞典 > sweden;
+講道 > preach;
+鼻息 > breath;
+謙遜 > humble;
+貪心 > greedy;
+贊同 > assent;
+薄紙 > tissue;
+悶熱 > sultry;
+頒給 > confer;
+讚美 > admire;
+現存 > extant;
+餐巾 > napkin;
+以太 > ether\-;
+態度 > manner;
+奶酪 > cheese;
+狹窄 > narrow;
+瑣事 > trifle;
+老是 > always;
+蕃茄 > tomato;
+財帛 > wealth;
+預算 > budget;
+青銅 > bronze;
+忘記 > forget;
+頑童 > urchin;
+混合 > to\-mix;
+會死 > mortal;
+不然 > not\-so;
+讀者 > reader;
+洪水 > deluge;
+感慨 > lament;
+賭博 > gamble;
+事情 > affair;
+存取 > access;
+木料 > lumber;
+財富 > wealth;
+深化 > deepen;
+方針 > policy;
+頂端 > summit;
+妖言 > heresy;
+現在 > modern;
+變紅 > redden;
+名產 > staple;
+昆蟲 > insect;
+後邊 > behind;
+猖狂 > savage;
+孤兒 > orphan;
+淨化 > purify;
+後退 > recoil;
+牡蠣 > oyster;
+人士 > person;
+職務 > a\-post;
+片語 > phrase;
+民謠 > ballad;
+猛烈 > fierce;
+流星 > meteor;
+悲歎 > bewail;
+存儲 > memory;
+以前 > before;
+象徵 > emblem;
+不毛 > barren;
+不比 > unlike;
+象征 > symbol;
+毗連 > adjoin;
+大錘 > sledge;
+最新 > latest;
+治理 > govern;
+主教 > bishop;
+謙虛 > modest;
+父親 > father;
+處女 > virgin;
+賣主 > seller;
+羊毛 > fleece;
+放鬆 > loosen;
+含水 > watery;
+秘密 > secret;
+處境 > plight;
+議程 > agenda;
+狡猾 > crafty;
+王座 > throne;
+惡意 > malice;
+弄髒 > defile;
+本州 > honshu;
+嬰兒 > infant;
+薪水 > salary;
+獸性 > brutal;
+數量 > amount;
+斷言 > affirm;
+旅行 > travel;
+浪子 > loafer;
+有意 > intend;
+秋季 > autumn;
+名流 > gentry;
+台灣 > taiwan;
+不智 > unwise;
+如草 > grassy;
+故障 > glitch;
+願望 > desire;
+合法 > lawful;
+名氣 > repute;
+大路 > avenue;
+海報 > poster;
+詞頭 > prefix;
+亦即 > namely;
+哀嘆 > lament;
+王子 > prince;
+縫針 > needle;
+殯車 > hearse;
+醫生 > doctor;
+秋天 > autumn;
+人們 > people;
+暖氣 > heater;
+移動 > mobile;
+吸收 > absorb;
+意圖 > intent;
+強迫 > compel;
+顫抖 > quiver;
+緣飾 > fringe;
+中心 > center;
+悔改 > repent;
+周年 > annual;
+口渴 > thirst;
+針法 > stitch;
+消化 > digest;
+正門 > portal;
+海員 > sailor;
+二十 > twenty;
+吐根 > ipecac;
+雙重 > double;
+青苔 > lichen;
+多變 > fickle;
+沙漠 > desert;
+鉋床 > planer;
+延長 > extend;
+名望 > renown;
+取消 > cancel;
+妨礙 > hinder;
+交互 > mutual;
+那邊 > yonder;
+歸還 > return;
+劈開 > cleave;
+酒窩 > dimple;
+咖啡 > coffee;
+瞬間 > moment;
+動議 > motion;
+陰鬱 > gloomy;
+放逐 > banish;
+配稱 > worthy;
+活塞 > piston;
+未可 > cannot;
+外行 > layman;
+𥜌 > a\-coat;
+杏仁 > almond;
+碎石 > gravel;
+預期 > expect;
+更好 > better;
+愛人 > spouse;
+隆隆 > rumble;
+秉公 > justly;
+禱告 > prayer;
+更大 > bigger;
+朝向 > toward;
+九十 > ninety;
+破舊 > shabby;
+一帶 > region;
+顧客 > client;
+叢林 > jungle;
+碧玉 > jasper;
+𥥅 > a\-hole;
+只是 > merely;
+猴子 > monkey;
+𢦏 > to\-cut;
+隧道 > tunnel;
+惡化 > worsen;
+木偶 > puppet;
+會員 > member;
+一局 > inning;
+有名 > famous;
+朋友 > friend;
+菌類 > fungus;
+一對 > couple;
+硫磺 > sulfur;
+未來 > future;
+一定 > surely;
+遭遇 > befall;
+之前 > before;
+罷工 > strike;
+鄉紳 > squire;
+詭計 > deceit;
+豁免 > exempt;
+流利 > fluent;
+性格 > nature;
+活力 > energy;
+變更 > change;
+心理 > mental;
+變暗 > darken;
+牢牢 > firmly;
+風俗 > custom;
+緣起 > origin;
+記錄 > record;
+𠀉 > a\-hill;
+創辦 > launch;
+暗影 > shadow;
+隊部 > office;
+讚揚 > praise;
+乞丐 > beggar;
+過量 > excess;
+熔解 > fusion;
+隘路 > defile;
+邀請 > invite;
+循環 > circle;
+智慧 > wisdom;
+獵人 > hunter;
+恐怖 > terror;
+斑紋 > stripe;
+石英 > quartz;
+包管 > assure;
+酵母 > leaven;
+解除 > remove;
+動脈 > artery;
+最低 > lowest;
+祭司 > priest;
+特此 > hereby;
+雌蕊 > pistil;
+天篷 > canopy;
+干預 > meddle;
+化石 > fossil;
+不可 > cannot;
+水泥 > cement;
+水泡 > bubble;
+警方 > police;
+爸爸 > father;
+蓋爾 > gaelic;
+前輩 > senior;
+記起 > recall;
+三十 > thirty;
+繃簧 > spring;
+撤除 > remove;
+釦子 > button;
+彈簧 > spring;
+副詞 > adverb;
+牛油 > butter;
+課程 > course;
+年長 > senior;
+性情 > nature;
+編號 > number;
+氣泡 > bubble;
+危機 > crisis;
+不公 > unjust;
+底部 > bottom;
+不克 > cannot;
+法國 > france;
+沉思 > ponder;
+暗堡 > bunker;
+狗屋 > kennel;
+暴君 > tyrant;
+凹陷 > hollow;
+三倍 > triple;
+大眾 > people;
+霜白 > frosty;
+否則 > if\-not;
+分鐘 > minute;
+領域 > domain;
+葬禮 > burial;
+水桶 > bucket;
+撤銷 > repeal;
+合唱 > chorus;
+醫師 > doctor;
+反射 > reflex;
+不丹 > bhutan;
+敬禮 > salute;
+非洲 > africa;
+通路 > access;
+美人 > beauty;
+謀殺 > murder;
+罷免 > recall;
+言語 > speech;
+剝蝕 > denude;
+退還 > return;
+數目 > amount;
+召回 > recall;
+破爛 > ragged;
+一串 > strand;
+纖毛 > cilium;
+性子 > temper;
+追逐 > chase;
+逕賽 > track;
+靜止 > still;
+巴黎 > paris;
+年輕 > young;
+迴避 > avoid;
+蒸汽 > steam;
+權衡 > weigh;
+遊蕩 > stray;
+弄糟 > spoil;
+恩典 > grace;
+大爺 > uncle;
+日本 > japan;
+可可 > cocoa;
+可口 > tasty;
+延緩 > defer;
+編織 > weave;
+南方 > south;
+置于 > place;
+姪女 > niece;
+陷落 > slump;
+牛排 > steak;
+隱約 > vague;
+鯨魚 > whale;
+合併 > annex;
+護士 > nurse;
+泊位 > berth;
+遊艇 > barge;
+關閉 > close;
+陰莖 > penis;
+智利 > chile;
+線索 > trail;
+壓碎 > crush;
+原始 > first;
+每每 > often;
+反叛 > rebel;
+韓國 > korea;
+雙生 > twins;
+相配 > match;
+印度 > india;
+石狀 > stony;
+迅速 > rapid;
+幼蟲 > larva;
+鯊魚 > shark;
+別號 > alias;
+綠色 > green;
+引用 > quote;
+相近 > close;
+市長 > mayor;
+爐架 > grate;
+機關 > organ;
+權能 > power;
+原因 > cause;
+急劇 > rapid;
+大權 > power;
+鴉片 > opium;
+訓練 > drill;
+北方 > north;
+論文 > paper;
+放牧 > graze;
+功率 > power;
+每日 > daily;
+套房 > suite;
+違礙 > taboo;
+優點 > merit;
+徘徊 > hover;
+視覺 > sight;
+操練 > drill;
+強權 > power;
+刀葉 > blade;
+摩西 > moses;
+警備 > guard;
+課時 > class;
+彗星 > comet;
+搬運 > carry;
+青年 > youth;
+標題 > title;
+提高 > raise;
+氨基 > amino;
+夜晚 > night;
+熱氣 > steam;
+機軸 > arbor;
+醒來 > waken;
+女子 > woman;
+門閂 > latch;
+往往 > often;
+蓋子 > cover;
+靈巧 > handy;
+元音 > vowel;
+克隆 > clone;
+整整 > whole;
+匯寄 > remit;
+剁碎 > mince;
+調情 > flirt;
+地點 > place;
+敲擊 > pound;
+匆忙 > hasty;
+毛巾 > towel;
+芳香 > balmy;
+年級 > grade;
+式樣 > style;
+襯衫 > shirt;
+襯衣 > shirt;
+印刷 > print;
+散文 > prose;
+試樣 > style;
+全部 > whole;
+短暫 > short;
+西藏 > tibet;
+動搖 > waver;
+燃放 > light;
+火車 > train;
+工資 > wages;
+勇敢 > brave;
+死板 > rigid;
+矛柄 > shaft;
+長釘 > spike;
+步槍 > rifle;
+刻痕 > notch;
+優雅 > grace;
+選民 > voter;
+魔鬼 > devil;
+新娘 > bride;
+夾子 > cramp;
+謠傳 > rumor;
+新奇 > novel;
+報答 > repay;
+煤渣 > slack;
+邊框 > frame;
+花開 > bloom;
+物主 > owner;
+彈弓 > sling;
+報窩 > brood;
+擺渡 > ferry;
+電影 > movie;
+摸索 > grope;
+鬼魂 > ghost;
+速率 > speed;
+破壞 > wreck;
+約莫 > about;
+壁架 > ledge;
+階段 > stage;
+夢寐 > dream;
+延期 > delay;
+十分 > fully;
+勞工 > labor;
+團體 > group;
+地面 > floor;
+諷刺 > irony;
+白費 > waste;
+運河 > canal;
+八角 > anise;
+陰涼 > shady;
+擦洗 > scour;
+熱忱 > ardor;
+阿片 > opium;
+焙燒 > roast;
+女人 > woman;
+綠洲 > oasis;
+証明 > prove;
+相等 > equal;
+償還 > repay;
+毒品 > drugs;
+固體 > solid;
+規程 > rules;
+直立 > erect;
+僧院 > abbey;
+証據 > proof;
+推選 > elect;
+毛刷 > brush;
+鬍鬚 > beard;
+推進 > impel;
+關節 > joint;
+價錢 > price;
+切片 > slice;
+艦隊 > fleet;
+強大 > large;
+真理 > truth;
+比分 > score;
+擱板 > shelf;
+剛果 > congo;
+剪斷 > shear;
+火花 > spark;
+影像 > image;
+盜竊 > steal;
+標號 > grade;
+迷濛 > misty;
+睡椅 > couch;
+加寬 > widen;
+震動 > shake;
+說出 > utter;
+計數 > count;
+澳門 > aomen;
+推論 > infer;
+糢糊 > foggy;
+每一 > every;
+勢力 > power;
+緞布 > satin;
+動向 > trend;
+天使 > angel;
+褐色 > brown;
+鬆開 > loose;
+櫸木 > beech;
+部件 > parts;
+烘烤 > roast;
+軌道 > orbit;
+閃耀 > glint;
+臭鼬 > skunk;
+儲藏 > store;
+擦拭 > clean;
+疾風 > blast;
+攤子 > booth;
+大人 > adult;
+功夫 > skill;
+動力 > power;
+相片 > image;
+髒髒 > dirty;
+燙傷 > scald;
+均衡 > equal;
+出沒 > haunt;
+道德 > moral;
+觸摸 > touch;
+發聲 > vocal;
+長老 > elder;
+樹籬 > hedge;
+典範 > model;
+集團 > group;
+整個 > whole;
+帝王 > regal;
+強光 > glare;
+盔甲 > armor;
+軌跡 > locus;
+軌距 > gauge;
+補藥 > tonic;
+歸咎 > blame;
+敵人 > enemy;
+幽暗 > gloom;
+擔懮 > worry;
+榮譽 > honor;
+魔術 > magic;
+照射 > shine;
+搗碎 > smash;
+檸檬 > lemon;
+開端 > start;
+模糊 > vague;
+雞冠 > crest;
+光纖 > light;
+雕刻 > carve;
+骯髒 > dirty;
+切望 > crave;
+詛咒 > curse;
+標籤 > label;
+然後 > after;
+那兒 > there;
+長笛 > flute;
+精神 > vigor;
+圖表 > chart;
+轉移 > shift;
+兒童 > child;
+圍裙 > apron;
+推舉 > elect;
+停頓 > pause;
+粗糙 > crude;
+剪報 > scrap;
+髮辮 > braid;
+死亡 > death;
+規模 > scale;
+速度 > speed;
+那些 > those;
+箭頭 > arrow;
+雄偉 > grand;
+辦法 > means;
+為止 > until;
+嚴重 > grave;
+船貨 > cargo;
+長矛 > lance;
+歌劇 > opera;
+高遠 > lofty;
+凡是 > every;
+烏木 > ebony;
+舞蹈 > dance;
+粉筆 > chalk;
+絕技 > stunt;
+臉頰 > cheek;
+白癡 > idiot;
+授與 > grant;
+角度 > angle;
+發病 > onset;
+基本 > basic;
+火焰 > blaze;
+判定 > judge;
+探索 > quest;
+裂縫 > crack;
+火炬 > torch;
+填塞 > stuff;
+撰寫 > write;
+糖漿 > syrup;
+粉碎 > crash;
+陽台 > porch;
+擺動 > swing;
+押韻 > rhyme;
+型狀 > shape;
+舉起 > heave;
+割傷 > slash;
+這天 > today;
+籬笆 > fence;
+榮耀 > honor;
+遏制 > check;
+發狂 > crazy;
+別墅 > villa;
+岸邊 > shore;
+尼龍 > nylon;
+隊伍 > ranks;
+刀子 > knife;
+幅度 > width;
+橡木 > oaken;
+精液 > semen;
+床單 > sheet;
+花瓣 > petal;
+剃刀 > razor;
+凳子 > stool;
+膽量 > nerve;
+造反 > rebel;
+訓令 > order;
+再會 > adieu;
+檳子 > binzi;
+踴躍 > eager;
+兩次 > twice;
+修飾 > adorn;
+揣測 > guess;
+索引 > index;
+僵硬 > stark;
+傳聞 > rumor;
+自誇 > boast;
+摘引 > quote;
+工會 > union;
+糖果 > candy;
+裂痕 > chasm;
+火柴 > match;
+細小 > petty;
+欄位 > fence;
+驅除 > repel;
+樹林 > woods;
+小麥 > wheat;
+潛行 > sneak;
+垂死 > dying;
+樺木 > birch;
+逐出 > expel;
+巨擘 > thumb;
+紗布 > gauze;
+平原 > field;
+公會 > guild;
+田野 > field;
+濫用 > abuse;
+長椅 > bench;
+高興 > happy;
+搓揉 > knead;
+長條 > strip;
+這些 > these;
+庇佑 > bless;
+假裝 > feign;
+辮子 > plait;
+降下 > lower;
+樓梯 > stair;
+高聳 > erect;
+高聲 > aloud;
+尊魚 > trout;
+血肉 > flesh;
+盛宴 > feast;
+回答 > reply;
+簡短 > brief;
+囤積 > hoard;
+駿馬 > steed;
+榮獲 > prize;
+襪子 > socks;
+蝙魚 > bream;
+報償 > repay;
+傳神 > vivid;
+色狼 > satyr;
+探測 > probe;
+轉播 > relay;
+批量 > batch;
+駱駝 > camel;
+圖片 > image;
+冠子 > crest;
+腰部 > waist;
+皮帶 > strap;
+粗暴 > rough;
+撒但 > satan;
+小雞 > chick;
+冰塔 > serac;
+笨重 > heavy;
+輕染 > tinge;
+內心 > heart;
+腳踝 > ankle;
+排水 > drain;
+招致 > incur;
+栗鼠 > bunny;
+扒釘 > cramp;
+直到 > until;
+巫婆 > witch;
+援引 > quote;
+答詞 > reply;
+尖銳 > sharp;
+門廊 > stoop;
+偷竊 > steal;
+槓桿 > lever;
+其它 > other;
+答覆 > reply;
+烘乾 > parch;
+公尺 > meter;
+噪聲 > noise;
+盎司 > ounce;
+騎車 > cycle;
+價格 > price;
+精子 > sperm;
+地板 > floor;
+凌亂 > chaos;
+俚語 > slang;
+紅利 > bonus;
+開始 > begin;
+採摘 > pluck;
+埃及 > egypt;
+寂靜 > quiet;
+符記 > token;
+喪鐘 > knell;
+脹起 > bulge;
+背骨 > spine;
+左右 > about;
+公噸 > tonne;
+掌握 > grasp;
+生苔 > mossy;
+搖動 > shake;
+輪子 > wheel;
+騙術 > trick;
+打製 > forge;
+小說 > novel;
+腐蝕 > rusty;
+閉合 > close;
+駕車 > drive;
+滑落 > slide;
+六十 > sixty;
+公升 > liter;
+似雪 > snowy;
+胸部 > chest;
+病毒 > virus;
+技能 > skill;
+推崇 > value;
+小袋 > pouch;
+火兒 > angry;
+街段 > block;
+路線 > route;
+巨人 > giant;
+裙子 > skirt;
+抓緊 > grasp;
+血液 > blood;
+安靜 > quiet;
+手藝 > craft;
+馬達 > motor;
+閃光 > flash;
+其他 > other;
+四月 > april;
+其中 > among;
+楓樹 > maple;
+竊賊 > thief;
+滑翔 > glide;
+掃帚 > broom;
+衰敗 > decay;
+苛刻 > harsh;
+鐵砧 > anvil;
+捕捉 > catch;
+空間 > space;
+發光 > shine;
+掠奪 > harry;
+察覺 > aware;
+屋簷 > eaves;
+格言 > maxim;
+瓣膜 > valve;
+採場 > slope;
+舞會 > dance;
+圍巾 > scarf;
+寓言 > fable;
+手腕 > skill;
+被子 > quilt;
+小舌 > uvula;
+就緒 > ready;
+軀幹 > trunk;
+軀干 > trunk;
+發亮 > shine;
+手肘 > elbow;
+補品 > tonic;
+客車 > coach;
+艾姬 > aggie;
+在外 > outer;
+崇拜 > adore;
+充份 > ample;
+高明 > smart;
+漲滿 > swell;
+痛恨 > abhor;
+聲音 > voice;
+痛快 > jolly;
+接合 > joint;
+土堆 > mound;
+戲耍 > tease;
+種類 > class;
+男爵 > baron;
+固定 > fixed;
+尖細 > taper;
+均分 > split;
+花俏 > fancy;
+赫茲 > hertz;
+箭桿 > shaft;
+圍城 > siege;
+傲岸 > proud;
+致敬 > greet;
+軍團 > corps;
+鬍子 > beard;
+排列 > array;
+俏皮 > saucy;
+舞弊 > fraud;
+餅餌 > cakes;
+補丁 > patch;
+駁船 > barge;
+蜂蜜 > honey;
+漿果 > berry;
+魅力 > charm;
+胸膛 > chest;
+漂游 > drift;
+價值 > value;
+潑掉 > spill;
+興建 > build;
+資金 > funds;
+滲溝 > sewer;
+胭脂 > rouge;
+自我 > self\-;
+錯誤 > error;
+果酒 > cider;
+捷克 > czech;
+用法 > usage;
+篩子 > sieve;
+圖像 > image;
+存貨 > stock;
+高尚 > nobly;
+在下 > under;
+拍擊 > smack;
+嚮導 > guide;
+傾向 > trend;
+生氣 > angry;
+偏愛 > favor;
+害羞 > blush;
+蝸牛 > snail;
+商號 > store;
+錢袋 > purse;
+激光 > laser;
+安華 > anwar;
+峭壁 > cliff;
+捐助 > offer;
+拇指 > thumb;
+拂掃 > whisk;
+船只 > ships;
+臺子 > table;
+朝鮮 > korea;
+四十 > forty;
+抽打 > strap;
+惡魔 > demon;
+本領 > skill;
+棲息 > perch;
+流體 > fluid;
+依然 > still;
+肝臟 > liver;
+範圍 > range;
+單獨 > alone;
+修改 > amend;
+椅子 > chair;
+有風 > windy;
+把握 > grasp;
+小河 > brook;
+業主 > owner;
+驚慌 > panic;
+偉大 > great;
+主題 > theme;
+哪裡 > where;
+答應 > reply;
+一點 > a\-bit;
+學級 > class;
+當地 > local;
+稻草 > straw;
+東西 > thing;
+倉庫 > depot;
+伊索 > aesop;
+山崖 > cliff;
+笑林 > humor;
+嘴巴 > mouth;
+鐳射 > laser;
+棚子 > shack;
+吵鬧 > noisy;
+男子 > a\-man;
+股票 > share;
+棒子 > stick;
+指令 > order;
+肥碩 > stout;
+黃銅 > brass;
+棍子 > stick;
+致使 > cause;
+技巧 > skill;
+秘訣 > trick;
+拴住 > hitch;
+下面 > below;
+蠢事 > folly;
+愚蠢 > silly;
+把守 > guard;
+下雨 > rainy;
+驚奇 > amaze;
+臥位 > berth;
+噴出 > spout;
+風趣 > humor;
+尺度 > scale;
+射擊 > shoot;
+賄絡 > bribe;
+屋子 > house;
+責罵 > scold;
+腱子 > sinew;
+更遲 > later;
+黑貂 > sable;
+當中 > among;
+喬木 > arbor;
+老虎 > tiger;
+沙龍 > salon;
+保姆 > nanny;
+小徑 > alley;
+騙局 > fraud;
+對待 > treat;
+拉丁 > latin;
+琥珀 > amber;
+會談 > talks;
+脈搏 > pulse;
+產品 > goods;
+尋常 > usual;
+服裝 > dress;
+金髮 > blond;
+戲弄 > caper;
+浪花 > spray;
+小屋 > cabin;
+清潔 > clean;
+房屋 > house;
+嘎嘎 > quack;
+生動 > vivid;
+下跪 > kneel;
+小孩 > child;
+清湯 > broth;
+便士 > penny;
+房子 > house;
+耶穌 > jesus;
+鋼琴 > piano;
+騎士 > rider;
+鏈子 > chain;
+手套 > glove;
+男人 > a\-man;
+跟前 > front;
+修剪 > prune;
+寬度 > width;
+香料 > spice;
+伺服 > servo;
+滋味 > taste;
+租約 > lease;
+尖塔 > spire;
+嗶嘰 > serge;
+污點 > stain;
+法郎 > franc;
+活著 > alive;
+喜悅 > happy;
+成年 > adult;
+肅清 > purge;
+翱翔 > hover;
+孟浪 > hasty;
+黑色 > black;
+淹沒 > flush;
+秕糠 > chaff;
+第十 > tenth;
+品種 > breed;
+時髦 > vogue;
+打呼 > snore;
+桌子 > table;
+仍然 > still;
+清楚 > clear;
+餘燼 > ember;
+第六 > sixth;
+錦標 > prize;
+獨自 > alone;
+羽莖 > quill;
+桃子 > peach;
+封地 > manor;
+信任 > trust;
+作弊 > fraud;
+題解 > notes;
+保佑 > bless;
+貨物 > goods;
+寡婦 > widow;
+飲用 > drink;
+一行 > party;
+趨勢 > trend;
+狹路 > gorge;
+小吃 > snack;
+珊瑚 > coral;
+珍珠 > pearl;
+懸岩 > cliff;
+鼻煙 > snuff;
+洋蔥 > onion;
+趣劇 > farce;
+低廉 > cheap;
+哀痛 > grief;
+第五 > fifth;
+第九 > ninth;
+第三 > third;
+第一 > first;
+玻璃 > glass;
+窒息 > choke;
+有線 > wired;
+板滯 > stiff;
+打仗 > fight;
+戲劇 > drama;
+沉重 > heavy;
+沈重 > heavy;
+最終 > final;
+罪行 > crime;
+罩衫 > smock;
+你好 > hello;
+位子 > place;
+波蕩 > heave;
+走向 > trend;
+麵粉 > flour;
+妖魔 > demon;
+率直 > frank;
+明顯 > clear;
+顏色 > color;
+小丑 > clown;
+景象 > scene;
+狡詐 > craft;
+憤怒 > angry;
+貝殼 > shell;
+侍候 > serve;
+象牙 > ivory;
+商店 > store;
+喝叱 > chide;
+海灘 > beach;
+琴弦 > chord;
+獎章 > medal;
+子房 > ovary;
+蒼鷺 > heron;
+赦免 > remit;
+今日 > today;
+木版 > plank;
+神經 > nerve;
+怪誕 > freak;
+站住 > stand;
+沿著 > along;
+乾淨 > clean;
+密切 > close;
+深度 > depth;
+午餐 > lunch;
+成人 > adult;
+午飯 > lunch;
+海洋 > ocean;
+肚子 > belly;
+獵犬 > hound;
+理想 > ideal;
+鵪鶉 > quail;
+以後 > after;
+孩子 > child;
+耽擱 > tarry;
+事業 > cause;
+孢子 > spore;
+旅館 > hotel;
+奴隸 > slave;
+吊繩 > sling;
+馬來 > malay;
+馬伕 > groom;
+大鹿 > moose;
+聖徒 > saint;
+世界 > world;
+渡口 > ferry;
+減去 > minus;
+人性 > human;
+慈悲 > mercy;
+響聲 > noise;
+論題 > topic;
+卡車 > truck;
+客人 > guest;
+罌粟 > poppy;
+顯然 > clear;
+斑馬 > zebra;
+母音 > vowel;
+仙女 > fairy;
+稠密 > dense;
+套鐘 > chime;
+守候 > abide;
+洗澡 > bathe;
+板岩 > slate;
+謬誤 > error;
+風格 > style;
+洗滌 > rinse;
+一片 > piece;
+錢包 > purse;
+頭皮 > scalp;
+板子 > board;
+卑賤 > lowly;
+今天 > today;
+愛慕 > adore;
+思考 > think;
+風暴 > storm;
+升起 > hoist;
+蘋果 > apple;
+貝寧 > benin;
+謠言 > rumor;
+旋轉 > whirl;
+取笑 > tease;
+水蛭 > leech;
+語音 > voice;
+夾鉗 > tongs;
+日記 > diary;
+頒發 > issue;
+乃是 > to\-be;
+新近 > newly;
+嫌惡 > abhor;
+壁龕 > niche;
+吸氣 > sniff;
+誘陷 > snare;
+石頭 > stone;
+猜測 > guess;
+代價 > price;
+杓子 > scoop;
+感官 > sense;
+三次 > third;
+本影 > umbra;
+人員 > staff;
+一次 > first;
+續訂 > renew;
+更改 > alter;
+磨碎 > grind;
+警笛 > siren;
+習慣 > habit;
+今兒 > today;
+以下 > below;
+野獸 > beast;
+和平 > peace;
+收養 > adopt;
+怪異 > weird;
+貓咪 > kitty;
+心臟 > heart;
+沼澤 > glade;
+污穢 > nasty;
+三月 > march;
+磅秤 > scale;
+哪兒 > where;
+交叉 > cross;
+責備 > blame;
+電郵 > email;
+丟掉 > throw;
+聖人 > saint;
+勝過 > excel;
+殘酷 > cruel;
+叔父 > uncle;
+證章 > badge;
+海地 > haiti;
+最後 > final;
+正面 > front;
+雷達 > radar;
+品味 > taste;
+主幹 > trunk;
+失誤 > lapse;
+爆裂 > burst;
+邊際 > limit;
+顏料 > paint;
+狂熱 > craze;
+五十 > fifty;
+破裂 > burst;
+河流 > river;
+悲悼 > mourn;
+青草 > grass;
+木塊 > block;
+乙太 > ether;
+銳利 > sharp;
+虛偽 > false;
+本地 > local;
+東京 > tokyo;
+毒蛇 > viper;
+頌歌 > carol;
+咕嚕 > grunt;
+款項 > funds;
+一打 > dozen;
+試金 > assay;
+頭暈 > dizzy;
+徽章 > badge;
+力量 > power;
+焦點 > focus;
+鉋子 > plane;
+明白 > clear;
+王后 > queen;
+纖維 > fiber;
+事件 > event;
+逗點 > comma;
+麥子 > wheat;
+一張 > sheet;
+咆哮 > growl;
+微笑 > smile;
+碧瓦 > green;
+水盆 > basin;
+煙霧 > smoke;
+邏輯 > logic;
+音樂 > music;
+更壞 > worse;
+部落 > tribe;
+延遲 > delay;
+幽默 > humor;
+王冠 > crown;
+陷阱 > snare;
+斷絕 > sever;
+中國 > china;
+多葉 > leafy;
+一層 > layer;
+燻肉 > bacon;
+引証 > quote;
+擢陞 > exalt;
+重新 > again;
+大腿 > thigh;
+大腦 > brain;
+本人 > i\-\(me;
+祭壇 > altar;
+韻文 > verse;
+遺跡 > trace;
+那裡 > there;
+熊貓 > panda;
+斑羚 > goral;
+隆重 > grand;
+彎腰 > stoop;
+婦女 > woman;
+葡萄 > grape;
+美好 > happy;
+讀書 > study;
+獎品 > award;
+最初 > first;
+恐慌 > panic;
+麵包 > bread;
+額外 > extra;
+黏住 > cling;
+一塊 > piece;
+可怕 > awful;
+過道 > aisle;
+汁液 > juice;
+礦工 > miner;
+歌謠 > chant;
+沙拉 > salad;
+麵兒 > cover;
+斗篷 > cloak;
+之下 > under;
+月份 > month;
+水準 > level;
+女王 > queen;
+雛菊 > daisy;
+編製 > weave;
+包穀 > maize;
+快樂 > happy;
+逼迫 > force;
+如火 > fiery;
+泥土 > earth;
+媒介 > media;
+一同 > along;
+場面 > scene;
+壁虎 > gecko;
+教義 > creed;
+毛病 > fault;
+頁岩 > shale;
+金屬 > metal;
+證明 > proof;
+厭惡 > loath;
+昏暗 > dusky;
+比率 > ratio;
+奶油 > cream;
+霎眼 > blink;
+水果 > fruit;
+短簡 > brief;
+姿容 > looks;
+經費 > funds;
+視頻 > video;
+遊行 > march;
+晴天 > sunny;
+重大 > great;
+帶領 > guide;
+逕跡 > track;
+爐灶 > stove;
+時常 > often;
+強硬 > tough;
+帶露 > dewy;
+形狀 > form;
+薄命 > \(usu;
+功績 > feat;
+記號 > seal;
+見面 > meet;
+邊緣 > edge;
+暴亂 > riot;
+爛泥 > ooze;
+日期 > date;
+姨媽 > aunt;
+幽谷 > dell;
+冷靜 > calm;
+教皇 > pope;
+徵收 > levy;
+向下 > down;
+速行 > rush;
+這裡 > here;
+缺口 > nick;
+遲緩 > slow;
+氏族 > clan;
+原子 > atom;
+毛氈 > felt;
+冰雹 > hail;
+預兆 > omen;
+姑媽 > aunt;
+池子 > pond;
+姑娘 > girl;
+勻淨 > even;
+方案 > plan;
+狂吠 > howl;
+心情 > mood;
+野兔 > hare;
+鞭子 > whip;
+基金 > fund;
+妻子 > wife;
+半拉 > half;
+鯉魚 > carp;
+石片 > slab;
+必得 > must;
+冰鎮 > iced;
+池塘 > pool;
+熾熱 > glow;
+石灰 > lime;
+皮鞭 > lash;
+冷酷 > grim;
+契據 > deed;
+硬幣 > coin;
+凝視 > gaze;
+教派 > sect;
+公雞 > cock;
+角色 > role;
+纖度 > size;
+牌子 > sign;
+牛奶 > milk;
+奉承 > fawn;
+時候 > time;
+英雄 > hero;
+開闊 > wide;
+彎曲 > bend;
+課文 > text;
+長靴 > boot;
+牢固 > firm;
+百靈 > lark;
+旗子 > flag;
+女孩 > girl;
+纖小 > fine;
+年老 > aged;
+左邊 > left;
+牆壁 > wall;
+透紅 > rosy;
+數據 > data;
+詩歌 > poem;
+煮熟 > boil;
+石板 > slab;
+女士 > lady;
+忍受 > bear;
+微型 > tiny;
+邊沿 > edge;
+英里 > mile;
+樂隊 > band;
+氣味 > odor;
+無禮 > rude;
+都市 > city;
+區域 > area;
+計畫 > plan;
+燃料 > fuel;
+形式 > form;
+西薄 > cake;
+擘畫 > plan;
+煤灰 > soot;
+開辦 > open;
+敲打 > beat;
+雪撬 > sled;
+很好 > well;
+遨游 > roam;
+如同 > like;
+大廳 > hall;
+毒害 > bane;
+繩子 > cord;
+繁忙 > busy;
+細胞 > cell;
+卑劣 > base;
+復原 > heal;
+別的 > else;
+公豬 > boar;
+調子 > tune;
+勻實 > even;
+徵兆 > omen;
+揹負 > bear;
+閒談 > chat;
+眼看 > soon;
+辛苦 > hard;
+癱軟 > limp;
+面具 > mask;
+撕破 > tear;
+埋葬 > bury;
+大娘 > aunt;
+歌曲 > song;
+弧形 > arch;
+輪軸 > axle;
+帆船 > sail;
+卑下 > base;
+標識 > mark;
+帳篷 > tent;
+瘦長 > slim;
+花邊 > lace;
+填滿 > cram;
+塊狀 > lump;
+標誌 > sign;
+雹子 > hail;
+諾亞 > noah;
+規章 > rule;
+標記 > sign;
+外套 > coat;
+長襪 > hose;
+團隊 > team;
+從中 > from;
+長袍 > gown;
+雄性 > male;
+睫毛 > lash;
+強姦 > rape;
+照料 > tend;
+採邑 > fief;
+接近 > near;
+皮膚 > skin;
+掠過 > flit;
+緩慢 > slow;
+基礎 > base;
+網架 > rack;
+規矩 > rule;
+灰色 > gray;
+細看 > peer;
+遲慢 > slow;
+褪色 > fade;
+適應 > suit;
+敗壞 > ruin;
+部分 > part;
+眼淚 > tear;
+苔蘚 > moss;
+形像 > form;
+剝掉 > pare;
+郵件 > mail;
+步子 > step;
+追求 > seek;
+表露 > show;
+瞑想 > muse;
+擦掉 > wipe;
+遊戲 > game;
+節點 > node;
+夫人 > lady;
+廚師 > cook;
+捲軸 > reel;
+高飛 > soar;
+散出 > shed;
+巢穴 > lair;
+阿曼 > oman;
+廠子 > yard;
+索然 > dull;
+剛強 > firm;
+真正 > real;
+躲避 > shun;
+廚子 > cook;
+熱力 > heat;
+廣大 > vast;
+鳥嘴 > beak;
+基準 > data;
+簽証 > visa;
+鳴叫 > hoot;
+堅決 > firm;
+許多 > many;
+灰白 > grey;
+收割 > reap;
+網孔 > mesh;
+拳頭 > fist;
+歌唱 > sing;
+雜亂 > mess;
+冷淡 > cold;
+骨頭 > bone;
+剛好 > just;
+壁助 > help;
+掉落 > flop;
+詩人 > bard;
+落下 > fall;
+表象 > idea;
+陵墓 > tomb;
+舒適 > cozy;
+英畝 > acre;
+步伐 > pace;
+檔案 > file;
+簸蕩 > roll;
+帶有 > have;
+歌兒 > song;
+接縫 > seam;
+幫忙 > help;
+結成 > form;
+行走 > walk;
+冰橇 > sled;
+公牛 > bull;
+城池 > city;
+粗砂 > grit;
+公爵 > duke;
+要有 > need;
+膳食 > meal;
+躲藏 > hide;
+菜單 > menu;
+橫樑 > beam;
+術語 > term;
+遲了 > late;
+剛勁 > bold;
+衚衕 > lane;
+艾絨 > moxa;
+計劃 > plan;
+按語 > note;
+真實 > true;
+痛苦 > pain;
+花瓶 > vase;
+其次 > next;
+機智 > tact;
+傾聽 > hark;
+棕閭 > palm;
+公正 > just;
+平坦 > flat;
+臀部 > butt;
+鐘頭 > hour;
+操切 > rash;
+坦然 > calm;
+要得 > good;
+炸彈 > bomb;
+座位 > seat;
+芯片 > chip;
+回聲 > echo;
+鐵銹 > rust;
+屋頂 > roof;
+堡壘 > fort;
+具有 > have;
+這兒 > here;
+解凍 > thaw;
+生長 > grow;
+堅定 > firm;
+巴掌 > palm;
+瘢痕 > scar;
+帶子 > band;
+長槍 > pike;
+六月 > june;
+這個 > this;
+門栓 > bolt;
+蠕蟲 > worm;
+僱用 > hire;
+圓盤 > disk;
+地獄 > hell;
+阿們 > amen;
+蠕虫 > worm;
+盤子 > tray;
+筆錢 > fund;
+路邊 > curb;
+灌木 > bush;
+視圖 > view;
+撇去 > skim;
+農奴 > serf;
+城市 > city;
+堅固 > firm;
+小馬 > colt;
+兵戎 > arms;
+光束 > beam;
+標明 > mark;
+複本 > copy;
+蟾蜍 > toad;
+農場 > farm;
+盒子 > case;
+國王 > king;
+帳單 > bill;
+草坪 > lawn;
+草地 > lawn;
+搶奪 > snap;
+血管 > vein;
+軍火 > arms;
+跛足 > lame;
+房間 > room;
+規劃 > plan;
+腳跟 > heel;
+跡象 > mark;
+規則 > rule;
+公平 > fair;
+鎮靜 > calm;
+價款 > cost;
+樣式 > type;
+損害 > harm;
+模式 > mode;
+盟友 > ally;
+兜帽 > hood;
+巨大 > huge;
+工夫 > work;
+疼痛 > ache;
+跳蚤 > flea;
+樓廂 > loft;
+膝蓋 > knee;
+修補 > mend;
+屁話 > shit;
+灰塵 > dust;
+偷看 > peep;
+模子 > mold;
+疤痕 > scar;
+地方 > area;
+兔子 > hare;
+小路 > lane;
+鏈路 > link;
+甘蔗 > cane;
+掌擊 > slap;
+差勁 > poor;
+低音 > bass;
+溜走 > slip;
+甜菜 > beet;
+捲曲 > curl;
+測驗 > test;
+用膳 > dine;
+笑話 > joke;
+山羊 > goat;
+競賽 > race;
+笨蛋 > fool;
+岩石 > rock;
+公告 > post;
+工具 > tool;
+甚至 > even;
+略碼 > code;
+跌落 > fall;
+潮濕 > damp;
+較少 > less;
+百合 > lily;
+腰肉 > loin;
+地帶 > zone;
+表格 > form;
+閣下 > sire;
+龍骨 > keel;
+轉動 > turn;
+其余 > rest;
+潮流 > tide;
+保羅 > paul;
+色彩 > tint;
+嘲笑 > jeer;
+潮汐 > tide;
+捲帶 > tape;
+啤酒 > beer;
+潛水 > dive;
+鍍金 > gild;
+小船 > boat;
+什麼 > what;
+指標 > norm;
+衝撞 > dash;
+岩漿 > lava;
+握住 > grip;
+地域 > area;
+鼴鼠 > mole;
+製作 > make;
+土壤 > soil;
+小羊 > lamb;
+接吻 > kiss;
+良好 > good;
+策略 > plot;
+衰弱 > weak;
+漩渦 > eddy;
+土地 > land;
+亞麻 > flax;
+哺養 > feed;
+圈套 > trap;
+籃圈 > ring;
+鏈結 > link;
+膽汁 > gall;
+地區 > area;
+柔軟 > soft;
+漏洞 > hole;
+採伐 > fell;
+當時 > then;
+借款 > loan;
+袖口 > cuff;
+招收 > hire;
+現金 > cash;
+香草 > herb;
+嚴峻 > grim;
+疹子 > rash;
+秘魯 > peru;
+稅關 > pike;
+生活 > life;
+僧侶 > monk;
+打獵 > hunt;
+拖拉 > haul;
+拱形 > arch;
+抱有 > have;
+圍住 > gird;
+棍棒 > club;
+聲譽 > fame;
+自己 > self;
+拍打 > flap;
+拍手 > clap;
+債務 > debt;
+聽見 > hear;
+飾釘 > stud;
+小牛 > calf;
+血塊 > gore;
+浪頭 > wave;
+偏差 > bias;
+傾倒 > pour;
+骰子 > dice;
+負載 > load;
+折斷 > snap;
+老闆 > boss;
+聖詩 > hymn;
+催促 > urge;
+鋪設 > pave;
+租金 > rent;
+打死 > kill;
+風險 > risk;
+枯萎 > wilt;
+用戶 > user;
+浸透 > soak;
+疲倦 > tire;
+膠帶 > tape;
+賢能 > sage;
+海軍 > navy;
+臭味 > fume;
+偶像 > idol;
+手杖 > cane;
+海豹 > seal;
+跨度 > span;
+溫暖 > warm;
+季節 > time;
+果肉 > pulp;
+小時 > hour;
+投射 > dart;
+黃金 > gold;
+命運 > fate;
+字節 > byte;
+海角 > cape;
+嘆息 > sigh;
+唧筒 > pump;
+略去 > omit;
+哺育 > feed;
+羅馬 > rome;
+考試 > exam;
+手掌 > palm;
+肥皂 > soap;
+意見 > view;
+倍塔 > beta;
+尾巴 > tail;
+贅疣 > wart;
+悠閒 > ease;
+伯爵 > earl;
+周遊 > tour;
+梨子 > pear;
+尺寸 > size;
+頸項 > neck;
+琵琶 > lute;
+案文 > text;
+膠卷 > film;
+銀行 > bank;
+游泳 > swim;
+虧缺 > wane;
+借出 > lend;
+富有 > rich;
+係小 > tiny;
+品脫 > pint;
+宗派 > sect;
+不遜 > rude;
+馴服 > tame;
+不過 > only;
+不遂 > fail;
+尖峰 > peak;
+滾動 > roll;
+貧窮 > poor;
+小島 > isle;
+主要 > main;
+束縛 > bind;
+束緊 > gird;
+薄霧 > mist;
+清澈 > fair;
+策劃 > plot;
+豬肉 > pork;
+何時 > when;
+容易 > easy;
+下跌 > fall;
+黃蜂 > wasp;
+口頭 > oral;
+罰金 > fine;
+令狀 > writ;
+蕨類 > fern;
+費用 > cost;
+告誡 > warn;
+蘆葦 > reed;
+抓住 > grab;
+板皮 > slab;
+脆弱 > weak;
+核心 > core;
+頭部 > head;
+格式 > form;
+深深 > deep;
+決鬥 > duel;
+豆腐 > tofu;
+懶惰 > idle;
+滴下 > drip;
+扁坯 > slab;
+例子 > case;
+咒罵 > damn;
+脖子 > neck;
+同輩 > peer;
+玩笑 > joke;
+藤蔓 > vine;
+侍女 > maid;
+蜂房 > hive;
+戒子 > ring;
+滑倒 > slip;
+溶化 > melt;
+游戲 > game;
+學期 > term;
+馬廄 > barn;
+亞當 > adam;
+翅膀 > wing;
+伊朗 > iran;
+主義 > \-ism;
+麥芽 > malt;
+密室 > cell;
+狹谷 > glen;
+窩巢 > nest;
+牡鹿 > hart;
+風箏 > kite;
+名詞 > noun;
+存根 > stub;
+時間 > time;
+派系 > sect;
+現款 > cash;
+碼頭 > dock;
+釀造 > brew;
+藍色 > blue;
+安息 > rest;
+聖歌 > hymn;
+飽滿 > full;
+哭泣 > weep;
+食物 > food;
+慾望 > lust;
+史詩 > epic;
+一般 > same;
+小丘 > hill;
+情節 > plot;
+穿帶 > wear;
+休息 > rest;
+須要 > must;
+松樹 > pine;
+薔薇 > rose;
+亞洲 > asia;
+家園 > home;
+憐憫 > pity;
+暗藏 > hide;
+牛飲 > gulp;
+賺得 > earn;
+資料 > data;
+豎琴 > harp;
+一群 > gang;
+果斷 > firm;
+種族 > race;
+黑痣 > mole;
+音調 > tone;
+洞穴 > cave;
+板條 > lath;
+上絃 > wind;
+哀泣 > wail;
+貴族 > lord;
+哈欠 > yawn;
+浪潮 > wave;
+禮物 > gift;
+各自 > each;
+豬油 > lard;
+錫安 > zion;
+獵物 > prey;
+快速 > fast;
+靈魂 > soul;
+犯規 > foul;
+宰制 > rule;
+乃爾 > thus;
+飼料 > feed;
+油膏 > balm;
+班房 > jail;
+龐大 > huge;
+港口 > port;
+斑點 > spot;
+一碗 > bowl;
+大麻 > hemp;
+浮標 > buoy;
+想法 > idea;
+家伙 > chap;
+交接 > join;
+後面 > rear;
+天鵝 > swan;
+會漏 > leak;
+整齊 > tidy;
+昇起 > rise;
+商品 > good;
+卑鄙 > base;
+犄角 > horn;
+母馬 > mare;
+字型 > font;
+安全 > safe;
+種子 > seed;
+孤單 > lone;
+程式 > form;
+木桶 > cask;
+羹湯 > soup;
+印證 > seal;
+木板 > slab;
+吹牛 > brag;
+木材 > wood;
+飾帶 > sash;
+老撾 > laos;
+朦朧 > blur;
+靠近 > near;
+虛弱 > weak;
+消息 > news;
+課題 > task;
+期望 > hope;
+深厚 > deep;
+主機 > core;
+鼻子 > nose;
+珠子 > bead;
+旅遊 > trip;
+穩健 > firm;
+部隊 > army;
+上漲 > rise;
+泰然 > calm;
+齧咬 > gnaw;
+稀少 > rare;
+黑暗 > dark;
+波特 > baud;
+野禽 > fowl;
+暈眩 > daze;
+奔逃 > flee;
+黎明 > dawn;
+治癒 > cure;
+意思 > idea;
+某些 > some;
+意念 > idea;
+繁雜 > many;
+意志 > will;
+稱呼 > call;
+書桌 > desk;
+強風 > gale;
+雄鹿 > buck;
+麻木 > numb;
+會晤 > meet;
+黃昏 > dusk;
+項目 > item;
+韁繩 > rein;
+唯一 > only;
+雲雀 > lark;
+燒開 > boil;
+穀倉 > barn;
+李子 > plum;
+職位 > post;
+野生 > wild;
+否決 > veto;
+沙發 > sofa;
+波浪 > wave;
+一樣 > same;
+他們 > they;
+泡沫 > foam;
+步驟 > step;
+老婆 > wife;
+主意 > plan;
+青蛙 > frog;
+本子 > book;
+牛肉 > beef;
+豐富 > rich;
+七月 > july;
+銷售 > sell;
+上昇 > rise;
+哎呀 > damn;
+鞭笞 > flog;
+一服 > dose;
+天賦 > gift;
+談話 > talk;
+豆子 > bean;
+媽媽 > mama;
+同樣 > same;
+磚瓦 > tile;
+敏銳 > keen;
+油油 > oily;
+波束 > beam;
+包裝 > pack;
+法案 > bill;
+污痕 > blot;
+鉤子 > hook;
+印章 > seal;
+靜脈 > vein;
+知道 > know;
+猛撞 > slam;
+遼闊 > vast;
+故鄉 > home;
+面罩 > veil;
+從而 > thus;
+忙碌 > busy;
+鞭痕 > welt;
+邊鋒 > wing;
+酸痛 > ache;
+廣闊 > wide;
+神情 > look;
+亞丁 > aden;
+獨奏 > solo;
+沐浴 > bath;
+最好 > best;
+猖披 > wild;
+咀嚼 > chew;
+外袍 > robe;
+誓詞 > oath;
+動詞 > verb;
+玩偶 > doll;
+誓言 > oath;
+薄暮 > dusk;
+纖細 > fine;
+下巴 > chin;
+新聞 > news;
+獅子 > lion;
+更多 > more;
+增長 > grow;
+只有 > only;
+呆子 > fool;
+暴徒 > thug;
+汽水 > soda;
+面積 > area;
+命名 > name;
+段落 > part;
+短襪 > sock;
+引證 > cite;
+鈕帶 > bond;
+前面 > fore;
+陣風 > gust;
+編輯 > edit;
+死記 > cram;
+惡劣 > vile;
+流動 > flow;
+會合 > meet;
+毛線 > yarn;
+北約 > nato;
+重擊 > bang;
+派出 > send;
+𠱃 > thin;
+池沼 > pool;
+步調 > gait;
+繩索 > rope;
+通風 > airy;
+恐懼 > fear;
+碎片 > chip;
+線路 > line;
+一套 > suit;
+卡片 > card;
+類型 > type;
+包紮 > bind;
+中午 > noon;
+武裝 > arms;
+薄弱 > weak;
+一堆 > pile;
+變換 > vary;
+蒼白 > pale;
+水滴 > drop;
+緩解 > ease;
+有些 > some;
+月亮 > moon;
+年頭 > year;
+礦山 > mine;
+道路 > road;
+洗刷 > wash;
+陸軍 > army;
+收藏 > keep;
+擠進 > tuck;
+上司 > boss;
+領導 > lead;
+水池 > pond;
+電線 > wire;
+一吹 > puff;
+毛皮 > pelt;
+烏鴉 > crow;
+勞累 > toil;
+運費 > fare;
+壁虱 > tick;
+撥開 > poke;
+設計 > plan;
+迷陣 > maze;
+吝嗇 > mean;
+一半 > half;
+頂峰 > peak;
+藥丸 > pill;
+星期 > week;
+水槽 > sink;
+缺少 > lack;
+世仇 > feud;
+撞鎖 > lock;
+鞭撻 > lash;
+陰謀 > plot;
+厭恨 > hate;
+遇見 > meet;
+明星 > star;
+不一 > vary;
+謀求 > seek;
+露營 > camp;
+毒物 > pest;
+暖和 > warm;
+一些 > some;
+鞭打 > whip;
+叫囂 > hoot;
+為首 > head;
+求愛 > woo;
+同位 > par;
+露水 > dew;
+受到 > get;
+可以 > can;
+酒廊 > bar;
+博得 > win;
+及其 > and;
+石油 > oil;
+時代 > age;
+毯子 > rug;
+年紀 > age;
+套子 > cap;
+破布 > rag;
+魚鰭 > fin;
+強拉 > tug;
+經由 > via;
+墨水 > ink;
+設法 > try;
+間諜 > spy;
+眼睛 > eye;
+此時 > now;
+如何 > how;
+終端 > end;
+眼界 > ken;
+幼獸 > cub;
+離子 > ion;
+焦油 > tar;
+退潮 > ebb;
+火腿 > ham;
+陰暗 > dim;
+緊抱 > hug;
+總和 > sum;
+規率 > law;
+隱密 > sly;
+砍伐 > hew;
+刺探 > pry;
+芸芸 > all;
+色調 > hue;
+假髮 > wig;
+途徑 > way;
+前夕 > eve;
+堅果 > nut;
+先生 > sir;
+欄圈 > pen;
+橡樹 > oak;
+茶杯 > cup;
+親屬 > kin;
+拖車 > tow;
+填充 > pad;
+帽子 > hat;
+搖擺 > wag;
+眼前 > now;
+刀口 > cut;
+樅樹 > fir;
+用途 > use;
+甜酒 > rum;
+眼下 > now;
+出價 > bid;
+襯墊 > pad;
+傳真 > fax;
+苦惱 > ail;
+腳趾 > toe;
+拖船 > tow;
+骨罈 > urn;
+發怒 > mad;
+軟毛 > fur;
+臂膀 > arm;
+輕打 > tap;
+搶劫 > rob;
+兒子 > son;
+扯裂 > rip;
+小費 > tip;
+榆樹 > elm;
+啜飲 > sip;
+工作 > job;
+援助 > aid;
+肋骨 > rib;
+蝙蝠 > bat;
+龍頭 > tap;
+手臂 > arm;
+混雜 > mix;
+地圖 > map;
+鬆弛 > sag;
+生病 > ill;
+袋子 > bag;
+餡餅 > pie;
+射線 > ray;
+鋤頭 > hoe;
+鋸開 > saw;
+老鼠 > rat;
+果醬 > jam;
+衣夾 > peg;
+圍兜 > bib;
+拖把 > mop;
+么點 > ace;
+小狗 > pup;
+貨車 > van;
+戰爭 > war;
+點頭 > nod;
+肥胖 > fat;
+對準 > aim;
+噴射 > jet;
+傢伙 > guy;
+舉動 > act;
+麋鹿 > elk;
+木釘 > peg;
+瓦斯 > gas;
+驢子 > ass;
+男孩 > boy;
+所有 > all;
+鑰匙 > key;
+哼聲 > hum;
+久遠 > old;
+飛蟲 > bug;
+筆尖 > nib;
+麥酒 > ale;
+修女 > nun;
+便帽 > cap;
+會費 > due;
+尼姑 > nun;
+乾草 > hay;
+借債 > owe;
+懇求 > beg;
+屢加 > ply;
+飛翔 > fly;
+扇子 > fan;
+腐壞 > rot;
+空氣 > air;
+但是 > but;
+藝術 > art;
+安放 > lay;
+嗚咽 > sob;
+染料 > dye;
+付款 > pay;
+不良 > bad;
+贏得 > win;
+頌詞 > ode;
+乾燥 > dry;
+告終 > end;
+汽車 > car;
+海灣 > bay;
+耳朵 > ear;
+位元 > bit;
+五月 > may;
+何人 > who;
+燕麥 > oat;
+氣車 > bus;
+末期 > end;
+母雞 > hen;
+哀愁 > sad;
+礦石 > ore;
+哀怨 > sad;
+太陽 > sun;
+怕羞 > coy;
+杯子 > cup;
+謊話 > lie;
+謊言 > lie;
+零頭 > odd;
+任何 > any;
+淨值 > net;
+奔跑 > run;
+奔走 > run;
+流感 > flu;
+哎喲 > hey;
+現今 > now;
+暗淡 > dim;
+是的 > yes;
+一排 > row;
+方舟 > ark;
+新興 > new;
+上帝 > god;
+而今 > now;
+可是 > but;
+汽油 > gas;
+爆聲 > pop;
+罪惡 > sin;
+收費 > fee;
+母羊 > ewe;
+法律 > law;
+怎樣 > how;
+雞蛋 > egg;
+不善 > bad;
+鰻魚 > eel;
+天空 > sky;
+悲傷 > sad;
+床鋪 > bed;
+並且 > and;
+別針 > pin;
+縫紉 > sew;
+一切 > all;
+通通 > all;
+平鍋 > pan;
+放置 > put;
+年邁 > old;
+母牛 > cow;
+如果 > if;
+還是 > or;
+的話 > if;
+光碟 > cd;
+要是 > if;
+若是 > if;
+嚇聲 > ho;
+或者 > or;
+我的 > my;
+假如 > if;
+我們 > we;
+啊呀 > oh;
+斧頭 > ax;
+一但 > if;
+一個 > a;
+㡎 > the\-long\-bands\-or\-ribbons\-attrached\-to\-flags\-and\-banners\-the\-feather\-decorected\-carriages\-or\-dresses;
+郯 > name\-of\-a\-small\-ancient\-principality\-which\-was\-situated\-in\-what\-is\-now\-part\-of\-shantung\-and\-kiangsu;
+䐞 > the\-thin\-membrane\-between\-skin\-and\-flesh\-that\-protects\-internal\-organs\-or\-tissues\-in\-the\-human\-body;
+珪 > a\-jade\-table\-conferred\-upon\-feudal\-princes\-by\-the\-emperor\-as\-a\-symbol\-of\-dignity\-and\-authority;
+㺺 > a\-very\-precious\-piece\-of\-jade\-worn\-by\-ancient\-emperors\-to\-match\-tables\-borne\-by\-the\-nobles;
+䀘 > to\-cover\-the\-line\-of\-vision\-or\-sight\-\-\-the\-straight\-line\-between\-an\-object\-and\-one''s\-eyes;
+㨧 > wooden\-stick\-or\-bamboo\-cane\-used\-to\-support\-the\-covering\-of\-a\-carriage\-in\-ancient\-times;
+㔣 > in\-ancient\-times\-to\-fight\-against\-the\-enemy\-by\-pushing\-down\-the\-big\-rocks\-from\-up\-high;
+䚫 > ornamental\-articles\-made\-of\-horns\-used\-to\-decorate\-the\-top\-of\-a\-stick\-or\-horsewhip;
+笐 > bamboos\-placed\-across\-wooden\-frames\-on\-which\-grain\-may\-be\-stored\-in\-damp\-climates;
+䣞 > name\-of\-an\-ancient\-state\-which\-occupied\-the\-site\-of\-the\-present\-province\-of\-hubei;
+䇶 > a\-small\-rafters\-made\-of\-bamboo\-which\-project\-form\-the\-eaves\-and\-support\-the\-tiles;
+賨 > tribute\-paid\-in\-cloth\-by\-the\-tribes\-in\-szechwan\-and\-yunnan\-under\-the\-han\-dynasty;
+禫 > sacrifice\-offered\-at\-the\-end\-of\-the\-three\-years''\-mourning\-the\-death\-of\-a\-parent;
+䂩 > an\-in\-slab\-or\-ink\-stone\-sound\-of\-pebbles\-or\-stones\-rubbing\-or\-knocking\-together;
+䂍 > a\-kind\-of\-weapon\-carried\-by\-the\-honor\-guard\-before\-the\-emperor\-in\-ancient\-times;
+衈 > the\-blood\-of\-a\-sacrificial\-fowl\-which\-was\-sprinkled\-on\-the\-doors\-and\-vessels;
+㯩 > to\-put\-the\-growing\-up\-silkworms\-in\-different\-frames\-according\-to\-their\-sizes;
+㚳 > a\-lady\-teacher\-to\-teach\-the\-proper\-rules\-of\-female\-behavior\-in\-ancient\-times;
+絥 > to\-harness\-a\-horse\-a\-board\-in\-front\-of\-a\-carriage\-for\-the\-driver\-to\-lean\-on;
+䋭 > to\-weave\-silk\-fabrics\-with\-green\-color\-for\-longitude\-and\-white\-for\-latitude;
+㭼 > a\-rectangle\-shaped\-peg\-or\-short\-post\-between\-the\-beans\-and\-the\-roof\-timbers;
+瑄 > a\-ornamental\-piece\-of\-jade\-several\-inches\-across\-with\-a\-hole\-in\-the\-center;
+䬤 > to\-put\-the\-thick\-soup\-or\-broth\-on\-top\-of\-the\-rice\-thick\-congee\-or\-porridge;
+䥯 > a\-farm\-tool\-to\-crush\-the\-clod\-of\-earth\-into\-pieces\-and\-make\-the\-land\-flat;
+䍖 > a\-kind\-of\-net\-equipted\-with\-tricky\-machine\-used\-to\-catch\-birds\-and\-beasts;
+䎭 > a\-kind\-of\-farm\-tool\-made\-of\-twisted\-thron\-strips\-used\-to\-flaten\-the\-land;
+筓 > a\-hairpin\-on\-which\-the\-hair\-is\-bound\-at\-the\-back\-of\-the\-head\.\-15\-of\-age;
+㮲 > a\-small\-ring\-or\-a\-small\-piece\-of\-board\-attached\-to\-the\-muzzle\-of\-an\-ox;
+䵻 > a\-small\-tripod\-of\-bronze\-with\-two\-ears\-tripod\-of\-bronze\-with\-two\-ears;
+玠 > large\-jade\-tablet\-used\-by\-officials\-at\-court\-to\-indicate\-their\-ranks;
+䂜 > rocky\-fine\-stone\-which\-is\-little\-less\-valuable\-than\-jade\-to\-collapse;
+㡆 > an\-artisan\-to\-soften\-raw\-silk\-by\-boiling\-and\-to\-dye\-the\-dressed\-silk;
+㡃 > an\-artisan\-to\-soften\-raw\-silk\-by\-boiling\-and\-to\-dye\-the\-dressed\-silk;
+裎 > to\-take\-off\-the\-clothes\-and\-expose\-the\-body\.\-to\-carry\-in\-the\-girdle;
+鎋 > the\-linch\-pin\-of\-a\-wheel\-to\-govern\-or\-control\-the\-noise\-of\-a\-barrow;
+䪐 > something\-made\-of\-bamboo\-put\-in\-the\-bow\-case\-to\-pretect\-from\-damage;
+䇭 > containers\-made\-of\-thin\-and\-long\-strip\-of\-bamboo\-or\-willow\-branches;
+㟬 > a\-mountain\-in\-today''s\-shandong\-province\-southwest\-of\-mengyin\-county;
+㚥 > to\-become\-associated\-with\-each\-other\-in\-good\-manners\-and\-politeness;
+䤞 > a\-kind\-of\-weapons\-held\-by\-the\-officials\-in\-attendance\-in\-old\-times;
+㹫 > a\-kind\-of\-animal\-generally\-called\-for\-minority\-groups\-in\-old\-china;
+㳻 > a\-bank\-of\-earth\-or\-an\-embankment\-to\-block\-the\-current\-of\-the\-water;
+㯢 > a\-piece\-of\-cross\-wise\-board\-used\-for\-frame\-on\-which\-silkworms\-spin;
+䃘 > simple\-and\-crude\-the\-sound\-of\-pebbles\-or\-stones\-knocking\-together;
+㰱 > to\-smear\-the\-mouth\-with\-the\-blood\-of\-a\-victim\-when\-taking\-an\-oath;
+獯 > a\-tribe\-of\-scythians\-which\-invaded\-china\-during\-the\-hsia\-dynasty;
+鞔 > sides\-or\-uppers\-of\-shoes\-to\-stretch\-a\-skin\-on\-a\-frame\-for\-a\-drum;
+䕽 > the\-rhododendron\-\-\-\-it\-is\-said\-to\-cause\-sheep\-to\-stagger\-and\-die;
+郜 > name\-of\-fief\-in\-shantong\-bestowed\-on\-the\-eldest\-son\-of\-wen\-wang;
+䍿 > a\-kind\-of\-dance\-accompanied\-by\-music\-performed\-in\-ancient\-times;
+䌞 > a\-knot\-to\-hang\-the\-apparatus\-made\-of\-reed\-for\-raising\-silkworms;
+䇉 > capacity\-unit\-in\-france\-equal\-to\-one\-hundred\-times\-of\-one\-litre;
+㽈 > a\-large\-earthenware\-jar\-with\-a\-small\-mouth\-and\-two\-or\-four\-ears;
+㹐 > to\-tow\-a\-boat\-against\-the\-current\-in\-swift\-stream\-from\-the\-bank;
+沅 > name\-of\-a\-river\-in\-western\-hunan\-that\-flows\-into\-dongting\-lake;
+簋 > a\-square\-basket\-of\-bamboo\-for\-holding\-grain\-used\-at\-sacrifices;
+鷴 > silver\-pheasant\-badge\-worn\-by\-civil\-officials\-of\-the\-5th\-grade;
+蟕 > a\-species\-of\-tortoise\-found\-near\-the\-mouth\-of\-the\-yellow\-river;
+㬆 > posthumous\-title\-conferred\-upon\-emperors\-and\-eminent\-officials;
+㔳 > a\-square\-basket\-of\-bamboo\-for\-holding\-grain\-used\-at\-sacrifices;
+鞝 > the\-piece\-of\-leather\-used\-for\-soles\-on\-chinese\-shoes\.\-a\-patch;
+蔛 > a\-small\-orchid\-like\-plant\-it\-bears\-white\-flowers\-a\-dendrobium;
+䰙 > an\-ancient\-unit\-of\-capacity\-with\-three\-feet\-and\-a\-big\-opening;
+䔹 > a\-fungus\-which\-grows\-on\-rotten\-plants\-and\-is\-eaten\-when\-fresh;
+㯣 > a\-kind\-of\-fragrant\-tree\-used\-to\-produce\-perfume\-by\-burning\-it;
+㯡 > to\-lacquer\-some\-kind\-of\-ashes\-on\-wooden\-articals\-or\-furniture;
+峋 > ranges\-of\-hills\-stretching\-on\-beyond\-another\-irregular\-peaks;
+歃 > smear\-one''s\-mouth\-with\-blood\-of\-a\-victim\-when\-taking\-an\-oath;
+羗 > tribes\-in\-west\-china\-strong\.\-educated\.\-obstinate\.\-a\-particle;
+丣 > ancient\-form\-of\-the\-tenth\-of\-the\-twelve\-terrestrial\-branches;
+䡅 > something\-used\-to\-bind\-the\-frame\-work\-in\-a\-cart\-of\-old\-times;
+䚨 > a\-string\-fastened\-to\-an\-arrow\-to\-draw\-it\-back\-after\-shooting;
+䎠 > to\-twist\-or\-to\-crumple\-between\-hands\-and\-make\-something\-turn;
+㟹 > the\-appearance\-of\-a\-mountain\-is\-lofty\-and\-steep\-and\-profound;
+㝸 > a\-conical\-cap\-worn\-on\-ceremonious\-occasions\-in\-ancient\-times;
+㙨 > the\-royal\-domains\-set\-apart\-in\-ancient\-times\-for\-the\-emperor;
+衩 > the\-open\-seam\-of\-a\-garment\-which\-allows\-freedom\-of\-movement;
+屺 > a\-hill\-with\-trees\-or\-grass\-\-\-some\-give\-the\-opposite\-meaning;
+䶦 > upper\-and\-lower\-teeth\-in\-order\-and\-corresponding\-each\-other;
+䧂 > to\-turn\-over\-the\-clod\-of\-the\-earth\-with\-a\-shovel\-or\-a\-spade;
+噞 > the\-movement\-of\-a\-fish''s\-mouth\-at\-the\-surface\-of\-the\-water;
+唵 > used\-in\-buddhist\-texts\-to\-transliterate\-non\-chinese\-sounds;
+䠂 > name\-of\-a\-powerful\-feudal\-state\-which\-existed\-740\-330\-b\.c\.;
+䖶 > to\-raise\-up\-the\-nose\-in\-order\-to\-get\-the\-bugs\-in\-the\-earth;
+䄛 > service\-or\-rites\-of\-offering\-sacrifices\-for\-drink\-and\-food;
+㼰 > an\-earthenware\-jar\-with\-a\-small\-mouth\-and\-two\-or\-four\-ears;
+㸖 > hide\-or\-to\-keep\-in\-store\-the\-vegetable\-in\-cold\-winter\-days;
+㷟 > to\-scald\-the\-bristles\-off\-a\-pig\-or\-the\-feathers\-off\-a\-bird;
+㰇 > the\-square\-peck\-shaped\-box\-half\-way\-up\-a\-chinese\-flagstaff;
+㮞 > the\-square\-peck\-shaped\-box\-half\-way\-up\-a\-chinese\-flagstaff;
+㦼 > a\-wooden\-piles\-used\-as\-a\-cable\-to\-make\-immovable\-of\-a\-boat;
+㢧 > a\-book\-or\-painting\-which\-can\-be\-easily\-folded\-or\-rolled\-up;
+钲 > kind\-of\-gong\-used\-in\-ancient\-times\-by\-troops\-on\-the\-march;
+鉦 > kind\-of\-gong\-used\-in\-ancient\-times\-by\-troops\-on\-the\-march;
+䪳 > slanted\-face\-causing\-by\-the\-paralyzed\-of\-the\-facial\-nerve;
+䞋 > to\-do\-alms\-for\-the\-buddhist\-priests\-or\-monks\-in\-old\-times;
+䙆 > slits\-on\-the\-lower\-part\-of\-a\-gown\-for\-freedom\-of\-movement;
+䀏 > to\-move\-one''s\-eyes\-to\-express\-or\-indicate\-with\-eyes\-dizzy;
+㿄 > the\-groans\-or\-moans\-from\-a\-person\-in\-a\-critical\-condition;
+㶏 > an\-ancient\-name\-of\-a\-river\-in\-henan\-province\-dengfengxian;
+㳇 > name\-of\-a\-place\-in\-today''s\-jiangsu\-province\-yixing\-county;
+㫋 > a\-silken\-banner\-hanging\-from\-a\-staff\-bent\-over\-at\-the\-top;
+狽 > a\-legendary\-animal\-with\-short\-forelegs\-which\-rode\-a\-wolf;
+歐 > used\-in\-transliterating\-non\-chinese\-words\-such\-as\-europe;
+狈 > a\-legendary\-animal\-with\-short\-forelegs\-which\-rode\-a\-wolf;
+汨 > mi\-river\-in\-hunan\-province\-where\-qu\-yuan\-drowned\-himself;
+汜 > a\-stream\-which\-leaves\-the\-main\-branch\-then\-later\-returns;
+簈 > bamboo\-mat\-used\-to\-protect\-carriage\-passengers\-from\-dust;
+箳 > bamboo\-mat\-used\-to\-protect\-carriage\-passengers\-from\-dust;
+爼 > a\-small\-table\-or\-tiered\-stand\-filled\-with\-meat\-offerings;
+䳚 > a\-sort\-of\-nightingale\-which\-is\-said\-to\-sing\-for\-the\-dawn;
+䡂 > the\-long\-wooden\-bumper\-at\-the\-rear\-of\-a\-cart\-or\-carriage;
+䃾 > to\-offer\-small\-pig\-as\-sacrifice\-when\-warship\-god\-of\-life;
+㼪 > fragments\-of\-a\-tile\-haven''t\-t\-been\-kiln\-dried\-completely;
+㴖 > name\-of\-a\-stream\-in\-shandong\-province\-southwest\-of\-jinan;
+㝉 > space\-between\-the\-throne\-and\-the\-retiring\-room\-behind\-it;
+㖫 > used\-in\-names\-for\-minority\-ethnic\-group\-in\-ancient\-china;
+炝 > stir\-fry\-or\-boil\-in\-water\-or\-oil\-then\-cook\-with\-a\-sauce;
+熗 > stir\-fry\-or\-boil\-in\-water\-or\-oil\-then\-cook\-with\-a\-sauce;
+弮 > a\-crowwbow\-which\-discharged\-several\-bolts\-in\-succession;
+䪙 > leather\-wrapped\-collar\-for\-a\-draft\-animal\-of\-a\-carriage;
+䪖 > leather\-wrapped\-collar\-for\-a\-draft\-animal\-of\-a\-carriage;
+䧚 > the\-name\-of\-a\-place\-in\-the\-south\-west\-of\-hebei\-province;
+䡞 > leather\-that\-wind\-round\-on\-the\-shafts\-of\-a\-big\-carriage;
+䍜 > a\-basket\-or\-a\-cage\-used\-to\-keep\-wild\-and\-domestic\-fowls;
+䇆 > capacity\-unit\-in\-france\-equal\-to\-ten\-times\-of\-one\-litre;
+䂅 > to\-have\-insight\-or\-vision\-of\-a\-simple\-and\-honest\-person;
+㲽 > name\-of\-a\-river\-in\-today''s\-southwest\-of\-shanxi\-province;
+㮐 > a\-rack\-or\-a\-stand\-with\-three\-sticks\-to\-cross\-each\-other;
+㬸 > a\-kind\-of\-services\-or\-ceremonies\-of\-offering\-sacrifices;
+郌 > name\-of\-an\-ancient\-hsien\-in\-modern\-gansu\/shaanxi\-area\.;
+耰 > toothless\-rake\-for\-drawing\-earth\-over\-newly\-sown\-grain;
+琀 > gems\-of\-pearls\-formerly\-put\-into\-the\-mouth\-of\-a\-corpse;
+䪃 > wine\-container\-used\-by\-minority\-tribe\-in\-ancient\-times;
+䥷 > a\-hinged\-shear\-or\-long\-knife\-for\-cutting\-fodder\-or\-hay;
+䤩 > an\-ornament\-at\-the\-end\-of\-a\-belt\-used\-in\-ancient\-times;
+䝪 > to\-provide\-money\-or\-gift\-and\-to\-consult\-fortune\-teller;
+䙛 > ceremonial\-dress\-of\-the\-emperor\-or\-very\-high\-officials;
+䘦 > a\-kind\-of\-head\-dress\-wore\-in\-funeral\-rites\-in\-old\-days;
+䘟 > kind\-of\-silk\-woven\-with\-double\-threads\-and\-water\-proof;
+䔑 > a\-white\-colored\-cluster\-grown\-at\-the\-tip\-of\-cogongrass;
+䉲 > thin\-and\-flat\-slips\-of\-bamboo\-used\-for\-weaving\-purpose;
+㼽 > fragments\-of\-a\-tile\-haven''t\-been\-kiln\-dried\-completely;
+㶁 > after\-blocking\-the\-water\-flow\-takes\-different\-waterway;
+㯀 > bonds\-and\-fetters\-for\-falcons\-and\-dogs\-used\-in\-hunting;
+㒾 > a\-kind\-of\-wrapper\-used\-to\-cover\-over\-the\-face\-and\-head;
+蠲 > the\-millipede\-sometimes\-confounded\-with\-the\-grow\-worm;
+蘧 > a\-plant\-which\-resembles\-wheat\-but\-has\-no\-edible\-grain;
+䡴 > carriage\-used\-in\-ancient\-times\-to\-take\-enemy\-position;
+䟺 > walk\-slowly\-because\-of\-the\-wrong\-position\-of\-the\-feet;
+䉣 > slips\-of\-bamboo\-provided\-for\-writing\-in\-ancient\-times;
+䁹 > to\-look\-askance\-\-\-\-a\-expression\-of\-disdain\-or\-despise;
+㼌 > lot\-of\-melons\-growing\-but\-the\-root\-is\-weak\-and\-feeble;
+㻠 > jade\-hanging\-on\-the\-sides\-of\-the\-cap\-in\-ancient\-times;
+㮣 > a\-piece\-of\-wood\-used\-to\-strike\-off\-grain\-in\-a\-measure;
+㓤 > to\-strip\-the\-skin\-of\-the\-face\-\-\-\-an\-imminent\-calamity;
+砀 > brilliantly\-colored\-stone\-with\-veined\-patterns\-in\-it;
+虒 > an\-amphibious\-beast\-resembling\-a\-tiger\-with\-one\-horn;
+筁 > a\-bamboo\-frame\-on\-which\-silkworms\-spin\-their\-cocoons;
+碭 > brilliantly\-colored\-stone\-with\-veined\-patterns\-in\-it;
+冋 > a\-desert\-a\-border\-prairie\-the\-1st\-form\-is\-radical\-13;
+䴷 > use\-the\-whole\-piece\-of\-barley\-to\-ferment\-for\-brewing;
+䭞 > a\-kind\-of\-sacrifices\-offered\-to\-gods\-or\-the\-deceased;
+䧠 > name\-of\-a\-place\-in\-what\-is\-today''s\-shandong\-province;
+䑩 > a\-kind\-of\-inland\-rivers\-warship\-used\-in\-qing\-dynasty;
+䍸 > a\-legendary\-goat\-like\-animal\-with\-4\-ears\-and\-9\-tails;
+䍫 > a\-legendary\-goat\-like\-animal\-with\-4\-ears\-and\-9\-tails;
+䃫 > a\-silicate\-substance\-from\-the\-salt\-wells\-in\-szechwan;
+㸜 > to\-get\-through\-the\-space\-enclosed\-by\-a\-constellation;
+㷭 > a\-conical\-brick\-structure\-in\-which\-to\-light\-a\-beacon;
+㶻 > a\-conical\-brick\-structure\-in\-which\-to\-light\-a\-beacon;
+甾 > ground\-that\-has\-been\-under\-cultivation\-for\-one\-year;
+禡 > a\-sacrifice\-at\-the\-beginning\-of\-a\-military\-campaign;
+礮 > ancient\-ballista\-for\-throwing\-heavy\-stones\-a\-cannon;
+礟 > ancient\-ballista\-for\-throwing\-heavy\-stones\-a\-cannon;
+䯠 > the\-five\-lowest\-pieces\-of\-bone\-of\-the\-spinal\-column;
+䯙 > the\-five\-lowest\-pieces\-of\-bone\-of\-the\-spinal\-column;
+䬦 > food\-items\-merely\-arranged\-for\-display\-purpose\-only;
+䙑 > a\-piece\-of\-sackcloth\-worn\-on\-the\-breast\-in\-mourning;
+䈱 > an\-open\-bamboo\-basket\-used\-to\-feed\-domestic\-animals;
+㪵 > half\-of\-a\-unit\-of\-measurement\-used\-in\-ancient\-times;
+㡈 > the\-ropes\-attached\-to\-the\-bier\-and\-held\-by\-mourners;
+㚤 > a\-lady\-officer\-of\-the\-monarch''s\-palace\-in\-old\-times;
+呀 > particle\-used\-to\-express\-surprise\-or\-mild\-emphasis;
+靷 > the\-leather\-belt\-that\-connects\-a\-horse\-with\-a\-cart;
+譼 > to\-supervise\-to\-confine\-a\-government\-establishment;
+坫 > a\-stand\-on\-which\-to\-replace\-goblets\-after\-drinking;
+䴽 > a\-small\-round\-piece\-of\-distiller''s\-grains\-or\-yeast;
+䰎 > to\-twist\-the\-hair\-in\-a\-knot\-on\-the\-top\-of\-the\-head;
+䪝 > leather\-cord\-that\-winding\-on\-the\-handle\-of\-a\-knife;
+䡇 > the\-cross\-bar\-at\-the\-end\-of\-the\-pole\-of\-a\-carriage;
+䞀 > to\-desire\-for\-more\-money\-than\-one''s\-rightful\-share;
+䘭 > the\-pleates\-on\-the\-lapel\-of\-a\-garment\-of\-thin\-silk;
+䐈 > a\-piece\-of\-one\-foot\-two\-inches\-dried\-seasoned\-meat;
+䍅 > containers\-for\-water\-or\-wine\-used\-in\-ancient\-times;
+䋾 > cotton\-and\-silk\-to\-be\-laid\-and\-attached\-each\-other;
+䉐 > a\-thin\-and\-long\-strip\-of\-bamboo\-for\-making\-baskets;
+䈻 > a\-heavy\-mats\-of\-bamboo\-used\-for\-deep\-water\-fishing;
+䇠 > wrench\-to\-adjust\-the\-string\-on\-stringed\-instrument;
+䄌 > to\-perform\-rities\-in\-honor\-of\-the\-ancestral\-temple;
+䃦 > a\-flat\-and\-great\-rock\-people\-squat\-or\-crouch\-on\-it;
+㻀 > fine\-stone\-which\-is\-little\-less\-valuable\-than\-jade;
+㲬 > hair\-decorations\-on\-a\-helmet\-used\-in\-ancient\-times;
+㱯 > get\-the\-unborn\-baby\-goat\-by\-killng\-the\-mother\-goat;
+㮰 > the\-small\-beam\-supporting\-the\-rafters\-at\-the\-eaves;
+㪶 > a\-dry\-measure\-10\-or\-5\-times\-that\-of\-a\-chinese\-peck;
+㟗 > name\-of\-a\-small\-principality\-in\-what\-is\-now\-shanxi;
+伽 > transcription\-of\-sanskrit\-''gha''\-in\-buddhist\-texts;
+屣 > straw\-sandals\-or\-slippers\-that\-have\-no\-heel\-backs;
+漎 > a\-place\-where\-small\-streams\-flow\-into\-a\-large\-one;
+檾 > grassy\-plant\-with\-fibres\-from\-which\-cloth\-is\-made;
+䰌 > to\-bind\-the\-hair\-in\-a\-knot\-on\-the\-top\-of\-the\-head;
+䩵 > tanner\-who\-made\-the\-leather\-drum\-in\-ancient\-times;
+䚙 > a\-spoon\-for\-cooked\-rice\-made\-of\-horn\-of\-an\-animal;
+䌳 > a\-kind\-of\-unrefined\-or\-unpolished\-silken\-textiles;
+䌤 > a\-kind\-of\-unrefined\-or\-unpolished\-silken\-textiles;
+䊺 > an\-implement\-to\-draw\-or\-to\-collect\-ropes\-or\-cords;
+䉃 > sliped\-open\-bamboo\-with\-the\-joints\-used\-as\-an\-oar;
+䉀 > rectangular\-chest\-or\-box\-woven\-from\-bamboo\-strips;
+䄋 > to\-pray\-for\-preventing\-or\-forestalling\-calamities;
+䃮 > a\-stone\-build\-hydraulic\-measures\-in\-ancient\-times;
+㾿 > roar\-of\-asthma\-or\-expectorate\-from\-a\-dying\-person;
+㻨 > ine\-stone\-which\-is\-little\-less\-valuable\-than\-jade;
+㺐 > generally\-called\-for\-minority\-groups\-in\-old\-china;
+㯂 > pillar\-or\-post\-of\-a\-frame\-on\-which\-silkworms\-spin;
+㟋 > deep\-and\-level\-ground\-gully\-at\-the\-foot\-of\-a\-hill;
+㞪 > the\-appearance\-of\-the\-mountain\-is\-flat\-and\-smooth;
+衅 > consecrate\-sacrificial\-vessels\-by\-smearing\-blood;
+虢 > name\-of\-ancient\-feudal\-state\-in\-shenxi\-and\-hunan;
+齉 > stoppage\-of\-the\-nose\-to\-speak\-with\-a\-nasal\-twang;
+褯 > children''s\-garments\.\-a\-mat\-for\-wrapping\-garments;
+梠 > a\-small\-beam\-supporting\-the\-rafters\-at\-the\-eaves;
+摣 > a\-handful\.\-to\-pick\-up\-with\-the\-fingers\.\-to\-seize;
+堘 > a\-raised\-path\-between\-field\-which\-acts\-as\-a\-dyke;
+䶜 > the\-process\-to\-whiten\-the\-ivory\-or\-elephant\-tusk;
+䮉 > horses\-kept\-at\-a\-courier\-station\-in\-former\-times;
+䢵 > name\-of\-an\-old\-country\-in\-today''s\-hubei\-province;
+䡟 > a\-ring\-of\-the\-horizontal\-front\-bar\-on\-a\-carriage;
+䞛 > dancing\-of\-a\-eastern\-minority\-group\-in\-old\-china;
+䝌 > a\-pig\-seek\-for\-food\-through\-digging\-on\-the\-earth;
+䒁 > a\-small\-boat\-connected\-to\-the\-back\-of\-a\-big\-boat;
+䉋 > a\-variety\-of\-bamboo\-shoots\-that\-sprout\-in\-winter;
+䈔 > whistle\-made\-of\-reed\-without\-holes\-for\-fingering;
+㽙 > official\-in\-charge\-of\-farmlands\-in\-ancient\-times;
+㳎 > guide\-or\-lead\-to\-make\-the\-water\-flowing\-smoothly;
+㲪 > woolen\-blanket\-with\-decorative\-design\-or\-pattern;
+㲨 > a\-decorative\-fine\-blanket\-on\-the\-top\-of\-a\-saddle;
+㲣 > woolen\-blanket\-with\-decorative\-design\-or\-pattern;
+㲙 > woolen\-blanket\-with\-decorative\-design\-or\-pattern;
+㧋 > to\-lengthen\-and\-extenuate\-\-\-\-as\-in\-making\-noodle;
+㠜 > young\-kids\-smart\-and\-familiar\-with\-human\-affairs;
+㙱 > earthenware\-used\-to\-bake\-cakes\-in\-northern\-china;
+喁 > the\-mouth\-of\-a\-fish\-at\-the\-surface\-of\-the\-water;
+揎 > to\-pull\-up\-the\-sleeves\-and\-stretch\-out\-the\-arms;
+箬 > the\-cuticle\-of\-the\-bamboo\-a\-broad\-leaved\-bamboo;
+軾 > horizontal\-wooden\-bar\-in\-front\-of\-a\-sedan\-chair;
+萆 > the\-castor\-oil\-plant\-also\-used\-for\-other\-plants;
+簠 > an\-ancient\-vessel\-used\-for\-holding\-boiled\-grain;
+䲰 > a\-second\-name\-for\-the\-pigeon\-or\-the\-turtle\-dove;
+䝥 > to\-roar\-or\-howl\-frantic\-barks\-of\-dogs\-or\-wolves;
+䔤 > the\-lush\-and\-luxuriant\-of\-the\-grass\-and\-flowers;
+㯮 > a\-kind\-of\-tree\-with\-big\-leaves\-and\-in\-red\-color;
+㔍 > a\-hinged\-shear\-or\-long\-knife\-for\-cutting\-fodder;
+璜 > a\-semicircular\-jade\-ornament\-used\-as\-a\-pendant;
+諬 > to\-open\-to\-begin\-to\-explain\-to\-inform\-a\-letter;
+猹 > wild\-animal\-mentioned\-in\-short\-story\-by\-lu\-xun;
+犼 > a\-fierce\-mongolian\-wolf\-dragon''s\-head\-on\-roofs;
+湓 > an\-affluent\-of\-the\-river\-yangtze\-near\-kiukiang;
+歚 > used\-in\-name\-of\-famous\-korean\-painter\-ceng\-sen;
+䶛 > to\-separate\-the\-meat\-from\-the\-bones\-with\-teeth;
+䳜 > a\-kind\-of\-bird\-which\-shares\-its\-nest\-with\-rats;
+䳅 > a\-kind\-of\-bird\-which\-shares\-its\-nest\-with\-rats;
+䲍 > a\-perch\-like\-fish\-with\-white\-body\-and\-red\-tail;
+䩶 > saddle\-and\-rein\-etc\.\-for\-the\-imperial\-carriage;
+䗽 > a\-small\-gadfly\-that\-suck\-blood\-of\-horse\-or\-cow;
+䉴 > a\-bamboo\-ware\-to\-collect\-and\-keep\-something\-in;
+䉅 > small\-bamboo\-whose\-joints\-are\-three\-feet\-apart;
+䈛 > small\-bamboo\-whose\-joints\-are\-three\-feet\-apart;
+䄦 > to\-put\-forth\-ears\-and\-to\-blossom\-of\-the\-grains;
+㽩 > connected\-banks\-of\-earth\-or\-paths\-in\-the\-field;
+㹃 > two\-brindled\-cows\-to\-plough\-face\-to\-each\-other;
+㶟 > an\-ancient\-neme\-of\-a\-river\-in\-shanxi\-and\-hebei;
+㲈 > the\-name\-of\-the\-music\-of\-the\-legendary\-emperor;
+㬐 > a\-state\-during\-the\-period\-of\-spring\-and\-autumn;
+㡛 > name\-for\-a\-workman\-who\-apply\-color\-in\-painting;
+㟢 > the\-rocks\-on\-the\-hills\-are\-of\-different\-shapes;
+㜼 > children\-of\-one''s\-brother\-\-\-\-nephews\-or\-nieces;
+㔽 > a\-kind\-of\-wine\-pot\-or\-jar\-used\-in\-ancient\-time;
+㓃 > to\-sacrifice\-by\-pouring\-out\-a\-libation\-of\-wine;
+㑞 > a\-maid\-who\-accompanies\-a\-bride\-to\-her\-new\-home;
+畲 > to\-cultivate\-land\-by\-first\-setting\-fire\-to\-it;
+篚 > round\-or\-oval\-covered\-baskets\-with\-short\-legs;
+粔 > cakes\-made\-from\-rice\-flour\-twisted\-into\-rings;
+戤 > to\-infringe\-a\-trade\-mark\-to\-pledge\-an\-article;
+乤 > first\-character\-of\-korean\-place\-name\-''halpho'';
+䶨 > in\-the\-manner\-a\-toothless\-person\-chewing\-food;
+䮛 > extra\-horse\-harnessed\-by\-the\-side\-of\-the\-team;
+䣠 > name\-of\-a\-village\-in\-today''s\-sichuan\-province;
+䣟 > name\-of\-pavilion\-in\-today''s\-shandong\-province;
+䠒 > courtesy\-of\-a\-minority\-group\-in\-ancient\-times;
+䝰 > to\-store\-or\-to\-accumulate\-riches\-or\-valuables;
+䜱 > name\-of\-a\-pavilion\-in\-today''s\-shanxi\-province;
+䓝 > chinese\-pennisetum\)\-pennisetum\-alopecuroides\);
+䋉 > a\-numerary\-adjunct\-for\-practically\-everything;
+䊣 > light\-yellow\-dust\-like\-fungoid\-growth\-on\-wine;
+䇒 > numerary\-adjunct\-for\-periodic\-terms\-or\-events;
+㿗 > disease\-of\-the\-private\-part\-of\-the\-human\-body;
+㿉 > disease\-of\-the\-private\-part\-of\-the\-human\-body;
+㾫 > hemiplegia\-\-\-\-paralysis\-of\-half\-of\-one''s\-body;
+㻞 > flourishing\-and\-radiant\-of\-the\-colorful\-jades;
+㹱 > name\-of\-a\-dog\-in\-the\-period\-of\-warring\-states;
+㲥 > a\-kind\-of\-woolen\-textiles\-with\-curved\-pattern;
+㭹 > name\-of\-a\-county\-in\-today''s\-shandong\-province;
+㣯 > the\-dresses\-toss\-and\-flying\-about\-in\-the\-wind;
+㢯 > bows\-used\-by\-the\-son\-of\-heaven\-\-\-\-the\-emperor;
+㡊 > a\-kind\-of\-cap\-worn\-by\-an\-officer\-in\-old\-china;
+㙫 > a\-fountain\-or\-spring\-out\-from\-the\-underground;
+㙍 > name\-of\-a\-place\-in\-today''s\-guangdong\-province;
+钧 > unit\-of\-measure\-equivalent\-to\-thirty\-catties;
+妲 > concubine\-of\-last\-ruler\-of\-the\-shang\-dynasty;
+瓴 > concave\-channels\-of\-tiling\-a\-long\-necked\-jar;
+媵 > a\-maid\-who\-accompanies\-bride\-to\-her\-new\-home;
+胙 > meat\-offered\-in\-sacrifice\-to\-one''s\-ancestors;
+蟊 > a\-fly\-which\-is\-used\-similarly\-to\-cantharides;
+騲 > the\-female\-of\-certain\-animals\-such\-as\-horses;
+鈞 > unit\-of\-measure\-equivalent\-to\-thirty\-catties;
+蝥 > a\-fly\-which\-is\-used\-similarly\-to\-cantharides;
+珓 > two\-hemispherical\-objects\-used\-in\-divination;
+敧 > to\-pick\-up\-thing\-with\-chopsticks\-or\-pincers\.;
+扄 > large\-ring\-on\-a\-front\-door\-used\-as\-a\-knocker;
+嫏 > the\-place\-where\-the\-supreme\-stores\-his\-books;
+䱁 > a\-kind\-of\-medium\-sized\-fish\-grown\-in\-the\-sea;
+䰏 > sparse\-hair\-on\-a\-knot\-on\-the\-top\-of\-the\-head;
+䮆 > a\-horse\-with\-mixed\-color\-of\-yellow\-and\-white;
+䩛 > leather\-belt\-used\-to\-bind\-or\-restrain\-a\-cart;
+䦹 > name\-of\-a\-county\-in\-today''s\-sichuan\-province;
+䣔 > name\-of\-a\-pavilion\-in\-today''s\-henan\-province;
+䣑 > living\-space\-for\-one\-family\-in\-ancient\-times;
+䣄 > name\-of\-a\-place\-in\-today''s\-shandong\-province;
+䣁 > name\-of\-a\-pavilion\-in\-today''s\-henan\-province;
+䢹 > name\-of\-a\-pavilion\-in\-today''s\-hunan\-province;
+䢪 > a\-sledge\-for\-transportation\-over\-mud\-or\-snow;
+䟆 > to\-keep\-persons\-off\-the\-route\-of\-the\-emperor;
+䈐 > an\-arched\-frame\-made\-of\-bamboo\-of\-wood\-board;
+䅿 > luxuriant\-or\-exuberant\-of\-the\-grains\-flowery;
+䃈 > mountain\-rocks\-a\-black\-stone\-resembling\-jade;
+䂬 > big\-rocks\-on\-the\-riverside\-an\-arched\-opening;
+䁝 > deluding\-and\-causing\-disorder\-lights\-shining;
+㽟 > to\-till\-or\-to\-plough\-the\-fields\-an\-enclosure;
+㮄 > publicly\-posted\-roll\-of\-successful\-examinees;
+㭸 > the\-branches\-to\-spread\-out\-in\-all\-directions;
+㩉 > to\-take\-a\-rubbing\-of\-an\-inscription\-on\-stone;
+㣁 > to\-equipt\-a\-bow\-with\-silk\-and\-muscular\-fibre;
+㢆 > living\-space\-for\-one\-family\-in\-ancient\-times;
+㝙 > the\-third\-of\-the\-twelve\-terrestrial\-branches;
+㙻 > living\-space\-for\-one\-family\-in\-ancient\-times;
+乎 > interrogative\-or\-exclamatory\-final\-particle;
+澄 > purify\-water\-by\-allowing\-sediment\-to\-settle;
+歟 > a\-final\-particle\-used\-to\-express\-admiration;
+梢 > pointed\-tip\-of\-something\-long\-like\-a\-branch;
+哒 > a\-sound\-made\-to\-get\-a\-horse\-to\-move\-forward;
+琮 > octagonal\-piece\-of\-jade\-with\-hole\-in\-middle;
+欤 > a\-final\-particle\-used\-to\-express\-admiration;
+唼 > speaking\-evil\.\-gobbling\-sound\-made\-by\-ducks;
+邴 > name\-of\-a\-city\-in\-the\-ancient\-state\-of\-song;
+䶘 > the\-sound\-of\-chewing\-something\-dry\-and\-hard;
+䮲 > horse\-with\-mixed\-colors\-of\-yellow\-and\-white;
+䦼 > to\-dig\-a\-passage\-through\-a\-mountain\-or\-hill;
+䥑 > a\-kind\-of\-decoration\-on\-the\-head\-of\-a\-horse;
+䣯 > wine\-or\-any\-thick\-fluid\-of\-the\-best\-quality;
+䣚 > name\-of\-a\-village\-in\-today''s\-henan\-province;
+䣙 > name\-of\-a\-county\-in\-today''s\-shanxi\-province;
+䢺 > name\-of\-a\-place\-in\-today''s\-sichuan\-province;
+䢸 > name\-of\-a\-county\-in\-today''s\-shanxi\-province;
+䡿 > frames\-on\-the\-sides\-and\-front\-of\-a\-carriage;
+䡼 > frames\-on\-the\-sides\-and\-front\-of\-a\-carriage;
+䜯 > name\-of\-a\-valley\-in\-today''s\-shanxi\-province;
+䘿 > shirt\-or\-a\-jacket\-without\-any\-decorated\-hem;
+䖂 > an\-edib\-le\-water\-plant\-\-\-\-brasenia\-purpurca;
+䏮 > the\-sides\-of\-the\-trunk\-from\-armpits\-to\-ribs;
+䅍 > straight\-upward\-of\-the\-wheat\-and\-rice\-plant;
+䂸 > to\-smash\-or\-to\-knock\-to\-pieces\-of\-the\-stone;
+㾼 > to\-suffer\-a\-stroke\-of\-paralysis\-or\-apoplexy;
+㾯 > to\-suffer\-a\-stroke\-of\-paralysis\-or\-apoplexy;
+㽫 > seeds\-of\-the\-plant\-allied\-to\-the\-water\-lily;
+㸷 > a\-kind\-of\-cattle\-with\-two\-horns\-straight\-up;
+㶬 > bright\-lights\-and\-illuminations\-of\-the\-fire;
+㶡 > bright\-lights\-and\-illuminations\-of\-the\-fire;
+㶆 > name\-of\-a\-stream\-in\-hebei\-province\-hengshan;
+㮫 > a\-wooden\-artical\-to\-be\-used\-to\-adjust\-a\-bow;
+㫍 > the\-scallops\-along\-the\-lower\-edge\-of\-a\-flag;
+㧏 > to\-carry\-on\-the\-shouldersof\-two\-or\-more\-men;
+㛶 > do\-not\-care\-about\-appearance\-and\-deportment;
+㛧 > name\-of\-a\-county\-in\-today''s\-shanxi\-province;
+㚔 > instrument\-of\-torture\-used\-in\-ancient\-times;
+㙇 > the\-cattle\-and\-horses\-trampled\-on\-the\-field;
+娅 > mutual\-term\-of\-address\-used\-by\-sons\-in\-law;
+鮠 > a\-kind\-of\-shad\-with\-a\-head\-like\-a\-sturgeon;
+胑 > the\-limbs\.\-wings\-of\-birds\.\-legs\-of\-animals;
+筭 > an\-ancient\-device\-for\-working\-with\-numbers;
+滝 > onomatopoeic\-for\-the\-sound\-of\-falling\-rain;
+婭 > mutual\-term\-of\-address\-used\-by\-sons\-in\-law;
+䳵 > a\-kind\-of\-water\-bird\-with\-colorful\-feather;
+䳛 > a\-small\-brown\-speckled\-bird\-like\-the\-quail;
+䩑 > horizontal\-front\-bar\-on\-a\-cart\-or\-carriage;
+䦓 > to\-wait\-for\-something\-tohappen\-immediately;
+䣤 > name\-of\-village\-in\-today''s\-shanxi\-province;
+䣝 > name\-of\-a\-place\-in\-today''s\-shanxi\-province;
+䣂 > name\-of\-a\-county\-in\-today''s\-hunan\-province;
+䡩 > sound\-of\-carts\-or\-stones\-knocking\-together;
+䡏 > horizontal\-front\-bar\-on\-a\-cart\-or\-carriage;
+䡌 > horizontal\-front\-bar\-on\-a\-cart\-or\-carriage;
+䠀 > to\-sit\-cross\-legged\-like\-a\-buddhist\-priest;
+䜫 > name\-of\-a\-valley\-in\-today''s\-hobei\-province;
+䜚 > to\-speak\-recklessly\-or\-without\-forethought;
+䓥 > sound\-of\-the\-wriggled\-insects\-on\-the\-grass;
+䐄 > the\-unsatisfaction\-of\-hunger\-requires\-meat;
+䍴 > to\-squeeze\-and\-to\-crowd\-against\-each\-other;
+䍆 > container\-for\-grains\-used\-in\-ancient\-times;
+䇯 > a\-kind\-of\-bamboo\-with\-patterns\-on\-the\-head;
+㼱 > to\-manage\-or\-regulate\-the\-leather\-material;
+㯊 > even\-measuring\-board\-for\-pecks\-and\-bushels;
+㨐 > to\-slap\-lightly\-on\-the\-clothes\-or\-coverlet;
+㢥 > a\-big\-piece\-of\-log\-to\-join\-the\-thick\-ropes;
+珈 > an\-ornament\-attached\-to\-a\-woman''s\-hairpin;
+蜃 > marine\-monster\-which\-can\-change\-its\-shape;
+斛 > dry\-measure\-equal\-to\-some\-five\-or\-ten\-dou;
+鄯 > district\-in\-gansu\-during\-the\-tang\-dynasty;
+庹 > the\-length\-of\-one''s\-two\-outstretched\-arms;
+揲 > to\-sort\-out\-the\-stalks\-used\-in\-divination;
+韍 > a\-leather\-knee\-pad\-worn\-during\-sacrifices;
+鏞 > a\-large\-bell\-used\-as\-a\-musical\-instrument;
+軎 > a\-brass\-parts\-for\-a\-cart\-in\-ancient\-china;
+虋 > asparagus\-a\-variety\-of\-red\-stalked\-millet;
+廞 > to\-prepare\-horses\-and\-chariots\-for\-battle;
+婗 > a\-new\-born\-child\-the\-whimper\-of\-an\-infant;
+妺 > wife\-of\-the\-last\-ruler\-of\-the\-xia\-dynasty;
+噠 > sound\-made\-to\-get\-a\-horse\-to\-move\-forward;
+丂 > obstruction\-of\-breath\-as\-it\-seeks\-release;
+䰿 > a\-kind\-of\-small\-fish\-grown\-in\-fresh\-water;
+䢿 > name\-of\-a\-place\-in\-today''s\-hobei\-province;
+䡈 > the\-cross\-bar\-at\-the\-sides\-of\-a\-carritage;
+䔉 > scattered\-or\-dispersed\-of\-grass\-and\-trees;
+䑒 > a\-kind\-of\-farm\-tool\-used\-in\-ancient\-times;
+䐣 > soup\-made\-of\-cutted\-meat\-mixed\-with\-blood;
+䌮 > silk\-fabrics\-with\-the\-color\-of\-new\-leaves;
+䄨 > grains\-producing\-neither\-flower\-nor\-fruit;
+䄝 > show\-no\-respect\-to\-the\-service\-of\-worship;
+㼭 > to\-steady\-by\-putting\-something\-underneath;
+㻲 > a\-rite\-or\-service\-for\-beginning\-of\-autumn;
+㪪 > to\-use\-a\-wooden\-pole\-to\-support\-something;
+㢦 > wooden\-post\-or\-pile\-for\-tethering\-animals;
+㜢 > a\-bad\-term\-by\-which\-one\-addresses\-a\-woman;
+㚒 > concealed\-the\-stolen\-goods\-in\-one''s\-dress;
+踣 > to\-stumble\-and\-fall\-prone\-stiff\-in\-death;
+黼 > embroidered\-official\-or\-sacrificial\-robe;
+峄 > a\-range\-of\-peaks\-in\-shandong\-and\-jiangsu;
+闗 > a\-frontier\-pass\-or\-gate\-to\-shut\-or\-close;
+邾 > a\-feudal\-state\-which\-existed\-b\.c\.700\-469;
+薩 > transliteration\-of\-''sat''\-in\-''bodhisattva;
+膰 > to\-cook\-meat\-for\-a\-sacrifice\-or\-offering;
+瑌 > a\-white\-opaque\-quartz\-used\-for\-ornaments;
+潟 > land\-impregnated\-with\-salt\-from\-the\-tide;
+嶧 > a\-range\-of\-peaks\-in\-shandong\-and\-jiangsu;
+䵞 > ancient\-punishment\-of\-tattooing\-the\-face;
+䱹 > a\-condiment\-made\-from\-minced\-fish\-salted;
+䰼 > a\-condiment\-made\-from\-minced\-fish\-salted;
+䯰 > use\-a\-hair\-pin\-to\-set\-and\-dress\-the\-hair;
+䬯 > to\-have\-congee\-with\-friends\-in\-old\-times;
+䡋 > decoration\-on\-the\-nave\-or\-hub\-of\-a\-wheel;
+䞃 > to\-relieve\-or\-give\-aid\-to\-the\-distressed;
+䝩 > to\-relieve\-or\-give\-aid\-to\-the\-distressed;
+䘯 > the\-lapel\-or\-collar\-of\-a\-garment\-or\-robe;
+䘤 > a\-sword\-covering\-to\-protect\-the\-scabbard;
+䑌 > lwhat\-is\-left\-over\-of\-the\-food\-\-overripe;
+䋧 > ornamennts\-for\-the\-frontal\-part\-of\-shoes;
+䋣 > decorations\-put\-on\-the\-mane\-or\-horsehair;
+䊿 > the\-lapel\-or\-collar\-of\-a\-garment\-or\-robe;
+䈕 > the\-metal\-tongue\-in\-the\-reed\-instruments;
+䃴 > a\-whetstone\-used\-to\-grind\-precious\-stone;
+䁼 > to\-look\-but\-see\-nothing\-\-\-\-absent\-minded;
+㿆 > damage\-by\-the\-pests\-to\-the\-rice\-seedling;
+㻶 > a\-jade\-tube\-with\-white\-and\-nature\-colors;
+㻰 > decorated\-jade\-or\-ornament\-on\-a\-scabbard;
+㻡 > a\-jade\-ring\-with\-a\-small\-segment\-cut\-off;
+㮆 > eaves\-sprouting\-from\-the\-stump\-of\-a\-tree;
+㫔 > one\-of\-the\-eight\-diagrams\-for\-divination;
+㪻 > a\-kind\-of\-utensil\-used\-to\-ladle\-out\-wine;
+㩊 > to\-pull\-up\-the\-sleeves\-and\-show\-the\-arms;
+㧭 > to\-get\-something\-with\-both\-raising\-hands;
+㧚 > the\-gesture\-of\-using\-an\-indented\-contain;
+㧆 > to\-cover\-something\-with\-a\-piece\-of\-cloth;
+㡋 > a\-kind\-of\-headdress\-for\-man\-in\-old\-china;
+㠸 > the\-lapel\-or\-collor\-of\-a\-garment\-or\-robe;
+㜚 > a\-local\-government\-post\-in\-ancient\-times;
+㙟 > low\-lying\-on\-the\-side\-of\-a\-river\-or\-lake;
+喏 > respectful\-reply\-of\-assent\-to\-superiors;
+笏 > tablet\-held\-by\-someone\-having\-authority;
+趼 > callous\-skin\-on\-hands\-or\-feet\.\-blisters;
+饝 > to\-feed\-an\-infant\-by\-hand\-steamed\-bread;
+裍 > a\-border\-or\-band\-on\-the\-edge\-of\-a\-dress;
+籪 > a\-weir\-of\-bamboo\-to\-catch\-fish\-or\-crabs;
+瘲 > spasms\-or\-convulsions\-in\-young\-children;
+瑲 > tinkling\-sound\-tinkling\-of\-pendant\-gems;
+弝 > the\-part\-of\-a\-bow\-grasped\-when\-shooting;
+䥜 > protective\-metal\-on\-the\-axis\-of\-a\-wheel;
+䙖 > a\-cloth\-to\-carry\-an\-iinfant\-on\-the\-back;
+䙀 > a\-cloth\-to\-carry\-an\-iinfant\-on\-the\-back;
+䏫 > in\-between\-of\-the\-abdomen\-and\-the\-spine;
+䍉 > traces\-or\-marks\-of\-incomplete\-or\-damage;
+䌸 > fine\-silk\-fabric\-of\-bright\-white\-colour;
+䋿 > a\-decorative\-knot\-made\-of\-colorful\-silk;
+䈜 > a\-thread\-used\-by\-carpenters\-for\-marking;
+䈆 > a\-shallow\-and\-long\-shaped\-bamboo\-basket;
+㿹 > jutting\-on\-the\-epidermis\-or\-the\-cuticle;
+㼫 > earthenware\-or\-pottery\-with\-big\-opening;
+㵻 > to\-perspire\-from\-embarrassment\-or\-shame;
+㭩 > a\-kind\-of\-tree\-can\-be\-used\-as\-dye\-stuff;
+㣙 > to\-walk\-in\-an\-easy\-and\-leisurely\-manner;
+㢪 > to\-draw\-a\-full\-bow\-to\-aim\-at\-the\-target;
+㘊 > the\-abrupt\-and\-hasty\-sound\-of\-the\-crowd;
+㖮 > an\-interjection\-used\-in\-poems\-and\-songs;
+㔮 > a\-kind\-of\-animal\-which\-looks\-like\-a\-rat;
+啧 > interjection\-of\-approval\-or\-admiration;
+捺 > to\-press\-down\-heavily\-with\-the\-fingers;
+傣 > the\-dai\-minority\-living\-in\-south\-china;
+鸩 > a\-bird\-resembling\-the\-secretary\-falcon;
+淝 > name\-of\-an\-affluent\-of\-the\-poyang\-lake;
+郅 > to\-go\-up\-to\.\-flourishing\-a\-superlative;
+轫 > a\-block\-that\-keeps\-a\-wheel\-from\-moving;
+嶷 > a\-range\-of\-mountains\-in\-hunan\-province;
+鬲 > type\-of\-caldron\-with\-three\-hollow\-legs;
+刖 > cutting\-off\-feet\-as\-form\-of\-punishment;
+穸 > the\-gloom\-of\-the\-grave\-a\-tomb\-or\-grave;
+蘅 > a\-fragrant\-plant\-the\-root\-is\-medicinal;
+鴆 > a\-bird\-resembling\-the\-secretary\-falcon;
+驆 > used\-in\-transliterating\-buddhist\-books;
+駏 > offspring\-of\-a\-stallion\-and\-a\-she\-mule;
+鉌 > the\-bells\-on\-the\-cart\-in\-ancient\-china;
+軔 > a\-block\-that\-keeps\-a\-wheel\-from\-moving;
+詧 > to\-examine\-into\-judicially\-to\-find\-out;
+綳 > a\-cloth\-to\-carry\-an\-infant\-on\-the\-back;
+綖 > the\-hanging\-flap\-in\-the\-front\-of\-a\-hat;
+祫 > triennial\-sacrifice\-to\-one''s\-ancestors;
+磻 > a\-tributary\-of\-the\-wei\-river\-in\-shanxi;
+斴 > the\-sound\-of\-water\-flowing\-among\-rocks;
+崑 > kunlun\-mountains\-in\-jiang\-su\-province\.;
+嘖 > interjection\-of\-approval\-or\-admiration;
+䰘 > to\-kill\-by\-hanging\-or\-to\-strangulation;
+䮗 > white\-from\-forehead\-to\-lips\-of\-a\-horse;
+䪲 > ancient\-punishment\-of\-shaving\-the\-head;
+䩸 > fine\-woolen\-blanket\-on\-top\-of\-a\-saddle;
+䩫 > a\-unit\-to\-count\-shoes\-in\-ancient\-times;
+䦅 > a\-kind\-of\-weapon\-used\-in\-ancient\-times;
+䥐 > cooking\-utensils\-used\-in\-ancient\-times;
+䢇 > a\-son\-who\-is\-not\-so\-good\-as\-his\-father;
+䛗 > to\-pry\-into\-or\-expose\-another''s\-secret;
+䚅 > to\-look\-after\-home\-or\-domestic\-affairs;
+䘨 > short\-leggings\-drawn\-over\-the\-trousers;
+䖿 > a\-kind\-of\-clam\-with\-thick\-white\-shells;
+䖽 > a\-kind\-of\-clam\-with\-thick\-white\-shells;
+䕰 > a\-second\-name\-for\-rhizome\-of\-wind\-weed;
+䓭 > weed\-or\-grass\-with\-narrow\-thick\-glades;
+䍻 > young\-goat\-of\-sheep\-under\-one\-year\-old;
+䍦 > a\-kind\-of\-turban\-used\-in\-ancient\-times;
+䌹 > a\-garment\-of\-one\-colour\-with\-no\-lining;
+䄪 > hanging\-down\-of\-the\-ears\-of\-the\-grains;
+䄍 > year\-end\-sacrifice\-of\-the\-zhou\-dynasty;
+㽠 > connection\-of\-the\-ditches\-or\-waterways;
+㼮 > to\-rub\-out\-the\-filth\-with\-broken\-tiles;
+㫩 > the\-first\-of\-the\-four\-season\-\-\-\-spring;
+磻 > a\-tributary\-of\-the\-wei\-river\-in\-shanxi;
+㤝 > palpitation\-or\-fluttering\-of\-the\-heart;
+㤑 > palpitation\-or\-fluttering\-of\-the\-heart;
+㟌 > a\-mountain\-in\-today''s\-sichuan\-province;
+㔯 > a\-large\-basket\-for\-holding\-cooked\-rice;
+笙 > small\-gourd\-shaped\-musical\-instrument;
+滕 > an\-ancient\-state\-in\-shandong\-province;
+镛 > large\-bell\-used\-as\-musical\-instrument;
+讵 > an\-interjection\-used\-express\-surprise;
+泔 > water\-from\-washing\-rice\-to\-boil\-thick;
+瘐 > to\-die\-in\-prison\-from\-cold\-and\-hunger;
+棼 > beams\-in\-the\-roof\-of\-a\-house\-confused;
+麅 > a\-small\-spotted\-deer\-found\-in\-n\.china;
+阼 > the\-steps\-leading\-to\-the\-eastern\-door;
+輗 > a\-cross\-bar\-at\-end\-of\-a\-carriage\-pole;
+詎 > interjection\-used\-to\-express\-surprise;
+缌 > coarse\-cotton\-cloth\-used\-for\-mourning;
+緦 > coarse\-cotton\-cloth\-used\-for\-mourning;
+硜 > the\-sound\-of\-stones\-knocking\-together;
+犉 > an\-ox\-with\-yellow\-hair\-and\-black\-lips;
+煝 > twisted\-paper\-for\-lighting\-cigarettes;
+帬 > the\-skirt\-of\-a\-lady''s\-dress\-petticoat;
+嵠 > a\-valley\-with\-a\-stream\-in\-it\.\-a\-gorge;
+䱗 > a\-long\-narrow\-fish\-trichiurus\-armatus;
+䱔 > a\-long\-narrow\-and\-silver\-colored\-fish;
+䪓 > a\-metal\-ornament\-on\-some\-kind\-of\-belt;
+䨙 > to\-rain\-cats\-and\-dogs\-for\-a\-long\-time;
+䦊 > an\-appliance\-for\-walking\-on\-the\-sands;
+䥂 > the\-sharp\-edge\-of\-a\-shovel\-or\-a\-spade;
+䡕 > the\-rear\-platform\-of\-a\-light\-carriage;
+䜔 > to\-speak\-on\-the\-ideas\-of\-someone\-else;
+䖠 > a\-kind\-of\-lizard\-found\-in\-damp\-places;
+䖜 > the\-fighting\-sound\-made\-by\-two\-tigers;
+䎒 > flying\-quickly\-and\-to\-attack\-suddenly;
+䋊 > decorations\-of\-the\-emperor''s\-carriage;
+䀛 > to\-look\-far\-with\-the\-eyes\-half\-closed;
+㼨 > a\-water\-jar\-with\-ears\-for\-carrying\-it;
+㻎 > a\-large\-horizontal\-musical\-instrument;
+㺪 > an\-uncarved\-of\-unpolished\-jade\-or\-gem;
+㵿 > endlessly\-long\-or\-vast\-water\-currents;
+㴩 > name\-of\-a\-stream\-in\-shandong\-province;
+㯘 > a\-small\-wooden\-stand\-having\-four\-legs;
+㤍 > never\-reveal\-one''s\-feeling\-or\-emotion;
+㣠 > a\-rope\-decorated\-with\-bronze\-ornament;
+㡑 > ancient\-mourning\-turban\-worn\-by\-women;
+㠑 > high\-mountain\-steep\-rugged\-and\-uneven;
+㠄 > name\-of\-a\-mountain\-in\-yunnan\-province;
+㠁 > irregular\-outline\-of\-a\-range\-of\-hills;
+㟚 > name\-of\-a\-mountain\-in\-shanxi\-province;
+㞿 > name\-of\-a\-mountain\-in\-shanxi\-province;
+㞹 > name\-of\-a\-mountain\-in\-shanxi\-province;
+㚶 > wife\-of\-one''s\-husband''s\-elder\-brother;
+㘈 > able\-to\-take\-a\-correct\-view\-of\-things;
+㗰 > the\-character\-used\-in\-transliteration;
+㒿 > a\-kind\-of\-turban\-used\-in\-ancient\-time;
+弁 > conical\-cap\-worn\-during\-zhou\-dynasty;
+酉 > tenth\-of\-the\-twelve\-earthly\-branches;
+旌 > banner\-or\-flag\-adorned\-with\-feathers;
+衮 > ceremonial\-dress\-worn\-by\-the\-emperor;
+溧 > river\-in\-anhui\-and\-jiangsu\-provinces;
+糍 > food\-made\-of\-crushed\-and\-cooked\-rice;
+殛 > to\-put\-to\-death\-to\-imprison\-for\-life;
+狍 > species\-of\-deer\-found\-in\-north\-china;
+绂 > ribbon\-or\-cord\-used\-attach\-ornaments;
+磉 > the\-stone\-base\-or\-plinth\-of\-a\-pillar;
+蕹 > ipomoea\-aquatica\-used\-as\-a\-vegetable;
+齈 > cold\-in\-the\-head\-catarrh\-of\-the\-nose;
+鹻 > impure\-carbonate\-of\-sodium\-of\-natron;
+鶢 > a\-bird\-which\-frequents\-the\-sea\-shore;
+郪 > name\-of\-a\-stream\-in\-sichuan\-province;
+轞 > a\-vehicle\-for\-transporting\-prisoners;
+輹 > two\-pieces\-of\-wood\-underneath\-a\-cart;
+袞 > ceremonial\-dress\-worn\-by\-the\-emperor;
+芿 > grass\-which\-has\-been\-cut\-and\-regrown;
+胬 > a\-disease''s\-name\-in\-chinese\-medicine;
+紱 > ribbon\-or\-cord\-used\-attach\-ornaments;
+禊 > semi\-annual\-ceremony\-of\-purification;
+戥 > a\-small\-steelyard\-for\-weighing\-money;
+寍 > used\-as\-a\-term\-of\-comparison\:\-rather;
+咗 > verbal\-particle\-of\-perfective\-aspect;
+丱 > child''s\-hairstyle\-bound\-in\-two\-tufts;
+䮤 > one\-of\-the\-36\-gardens\-in\-han\-dynasty;
+䬭 > name\-of\-a\-legendary\-ferocious\-animal;
+䪔 > cross\-bar\-of\-wood\-under\-the\-carriage;
+䧤 > name\-of\-a\-river\-in\-shandong\-province;
+䤌 > a\-kind\-of\-wine\-be\-brewed\-from\-grains;
+䠷 > the\-appearance\-of\-height\-in\-a\-person;
+䠅 > hands\-and\-feet\-chapped\-from\-the\-cold;
+䝤 > a\-primitive\-tribe\-in\-southwest\-china;
+䝟 > a\-fierce\-man\-eating\-animal\-in\-legend;
+䝝 > an\-exclamation\-indicating\-admiration;
+䛓 > an\-official\-position\-in\-former\-times;
+䚘 > the\-long\-and\-upright\-horns\-of\-cattle;
+䖒 > earthenware\-with\-the\-shape\-of\-a\-bean;
+䕎 > name\-of\-a\-variety\-of\-grass\-perennial;
+䓑 > name\-of\-a\-variety\-of\-grass\-duckweeds;
+䑗 > to\-pound\-in\-order\-to\-remove\-the\-husk;
+䑔 > to\-pound\-in\-order\-to\-remove\-the\-husk;
+䐱 > to\-pick\-the\-meat\-in\-between\-of\-bones;
+䏁 > unable\-to\-hear\-distinctly\-or\-clearly;
+䊠 > to\-give\-a\-supply\-f\-grain\-for\-rations;
+䉟 > a\-bamboo\-basket\-used\-to\-catch\-fishes;
+䈰 > a\-brush\-for\-washing\-kitchen\-utensils;
+䇼 > a\-bamboo\-vessel\-used\-to\-catch\-fishes;
+䄫 > a\-kind\-of\-sorghum\-with\-white\-sprouts;
+䄈 > sacrifice\-to\-happiness\-and\-good\-luck;
+䃤 > black\-colored\-grindstone\-or\-whestone;
+䃎 > name\-of\-a\-place\-\-small\-piece\-of\-coal;
+䂿 > to\-pound\-in\-order\-to\-remove\-the\-husk;
+䂹 > sound\-of\-the\-falling\-pieces\-of\-rocks;
+䁶 > to\-look\-at\-something\-without\-winking;
+䁵 > newborn\-baby\-with\-the\-eyelids\-closed;
+㽅 > vessel\-for\-ceremony\-in\-ancient\-times;
+㸹 > cattle\-with\-white\-stripe\-on\-the\-back;
+㸗 > not\-a\-real\-father\-or\-a\-nature\-father;
+㳘 > a\-fountain\-or\-spring\-flows\-downwards;
+㮯 > whole\-piece\-of\-or\-unbroken\-firewoods;
+㮜 > a\-blocks\-engraved\-for\-holding\-things;
+㫪 > to\-pound\-in\-order\-to\-remove\-the\-husk;
+㟼 > name\-of\-a\-place\-in\-shandong\-province;
+㞔 > the\-upright\-bar\-for\-fastening\-a\-door;
+㝞 > pretend\-to\-be\-delicate\-and\-beautiful;
+㜹 > name\-of\-a\-folk\-song\-in\-ancient\-times;
+㚁 > the\-long\-tail\-feathers\-which\-curl\-up;
+阮 > ancient\-musical\-instrument\:\-surname;
+喔 > descriptive\-of\-crying\-or\-of\-crowing;
+琏 > vessel\-used\-to\-hold\-grain\-offerings;
+邕 > former\-or\-literary\-name\-for\-nanning;
+魑 > a\-mountain\-demon\-resembling\-a\-tiger;
+昶 > a\-long\-day\.\-bright\.\-extended\.\-clear;
+缧 > a\-chain\-or\-rope\-used\-bind\-criminals;
+螭 > a\-dragon\-whose\-horns\-have\-not\-grown;
+龀 > lose\-baby\-teeth\-and\-get\-adult\-teeth;
+肜 > to\-sacrifice\-on\-two\-successive\-days;
+邗 > an\-ancient\-place\-in\-the\-state\-of\-wu;
+龆 > lose\-baby\-teeth\-and\-get\-adult\-teeth;
+齠 > lose\-baby\-teeth\-and\-get\-adult\-teeth;
+齔 > lose\-baby\-teeth\-and\-get\-adult\-teeth;
+鐤 > huge\-tripod\-of\-bronze\-with\-two\-ears;
+觭 > one\-turning\-up\-and\-one\-turning\-down;
+褱 > to\-carry\-in\-the\-bosom\-or\-the\-sleeve;
+褢 > to\-carry\-in\-the\-bosom\-or\-the\-sleeve;
+艜 > a\-long\-narrow\-vessel\-with\-two\-masts;
+臿 > to\-separate\-the\-grain\-from\-the\-husk;
+縲 > a\-chain\-or\-rope\-used\-bind\-criminals;
+絰 > white\-hempen\-cloth\-worn\-by\-mourners;
+碪 > stone\-slab\-used\-for\-washing\-clothes;
+盇 > why\-not\?\-would\-it\-not\-be\-better\-to\?;
+滫 > water\-in\-which\-rice\-has\-been\-boiled;
+檑 > logs\-rolled\-down\-in\-defense\-of\-city;
+棳 > small\-pillars\-that\-support\-the\-roof;
+帗 > a\-multicolored\-prop\-used\-in\-dancing;
+嘠 > the\-chirping\-of\-birds\-loud\-laughter;
+唄 > final\-particle\-of\-assertion\-pathaka;
+倻 > phonetic\-used\-in\-korean\-place\-names;
+䵺 > boundary\-between\-agricultural\-lands;
+䵹 > insects\-that\-are\-injurious\-to\-crops;
+䭍 > to\-live\-with\-another\-at\-his\-expense;
+䬥 > cooked\-food\-which\-has\-become\-mouldy;
+䬙 > to\-dance\-and\-toss\-about\-in\-the\-wind;
+䠫 > to\-succumb\-to\-the\-effect\-of\-alcohol;
+䝦 > a\-kind\-of\-animal\-looks\-like\-leopard;
+䜠 > language\-of\-the\-savage\-or\-barbarian;
+䖺 > a\-legendary\-animal\-in\-ancient\-times;
+䖥 > insects\-that\-are\-injurious\-to\-crops;
+䒼 > a\-bamboo\-tray\-for\-raising\-silkworms;
+䑳 > a\-horizontal\-bar\-in\-front\-of\-a\-boat;
+䐧 > to\-reward\-or\-cheer\-troops\-with\-food;
+䎰 > name\-of\-a\-place\-in\-sichuan\-province;
+䍟 > a\-kind\-of\-fish\-net\-with\-fine\-meshes;
+䇨 > a\-bamboo\-basket\-for\-food\-containers;
+䆎 > grass\-and\-grains\-producing\-no\-fruit;
+䄻 > a\-second\-time\-growing\-of\-rice\-plant;
+䀚 > to\-lift\-up\-the\-eyes\-and\-look\-around;
+㿖 > carbuncle\-used\-in\-naming\-of\-a\-place;
+㺛 > name\-of\-a\-village\-in\-henan\-province;
+㷈 > embers\-kept\-for\-starting\-a\-new\-fire;
+㵁 > vast\-and\-boundless\-of\-flowing\-water;
+㳕 > water\-in\-which\-rice\-has\-been\-washed;
+㯪 > carved\-or\-patterned\-window\-railings;
+㫀 > huge\-tripod\-of\-bronze\-with\-two\-ears;
+璉 > vessel\-used\-to\-hold\-grain\-offerings;
+㠙 > a\-mountain\-paths\-name\-of\-a\-mountain;
+㓭 > to\-make\-ready\-the\-leather\-for\-shoes;
+㐷 > a\-kind\-of\-punishment\-in\-han\-dynasty;
+袱 > a\-piece\-of\-cloth\-used\-wrap\-bundles;
+挲 > to\-feel\-or\-fondle\-with\-the\-fingers;
+篑 > a\-bamboo\-basket\-for\-carrying\-earth;
+肓 > region\-between\-heart\-and\-diaphragm;
+滦 > river\-and\-county\-in\-hebei\-province;
+郗 > city\-under\-the\-chou\-dyn\.\-a\-surname;
+珏 > two\-pieces\-of\-jade\-joined\-together;
+綦 > dark\-grey\.\-variegated\.\-superlative;
+麇 > general\-name\-for\-the\-hornless\-deer;
+璎 > a\-necklace\-made\-of\-precious\-stones;
+掾 > a\-general\-designation\-of\-officials;
+郇 > an\-ancient\-feudal\-state\-in\-shaanxi;
+龘 > the\-appearance\-of\-a\-dragon\-walking;
+鴽 > a\-species\-of\-bird\-resembling\-quail;
+鄫 > state\-in\-today''s\-shandong\-province;
+鄇 > a\-name\-of\-a\-town\-in\-henan\-province;
+迿 > to\-be\-the\-first\-to\-begin\-a\-quarrel;
+轕 > great\-array\-of\-spears\-and\-chariots;
+輵 > great\-array\-of\-spears\-and\-chariots;
+輠 > grease\-pot\-hung\-under\-axle\-of\-cart;
+膲 > the\-three\-divisions\-of\-the\-viscera;
+紖 > a\-rope\-for\-leading\-cattle\-or\-horse;
+簣 > a\-bamboo\-basket\-for\-carrying\-earth;
+笮 > boards\-which\-support\-tiles\-on\-roof;
+砅 > cross\-stream\-by\-stepping\-on\-stones;
+瓔 > a\-necklace\-made\-of\-precious\-stones;
+璉 > a\-vessel\-used\-hold\-grain\-offerings;
+珱 > a\-necklace\-made\-of\-precious\-stones;
+玨 > two\-pieces\-of\-jade\-joined\-together;
+灤 > river\-and\-county\-in\-hebei\-province;
+梡 > tray\-for\-carrying\-sacrificial\-meat;
+挱 > to\-feel\-or\-fondle\-with\-the\-fingers;
+幵 > even\-level\.\-to\-raise\-in\-both\-hands;
+嫄 > an\-ancient\-emperor''s\-mother''s\-name;
+囷 > round\-shaped\-storage\-bin\-for\-grain;
+䴙 > a\-kind\-of\-bird\-resembling\-the\-duck;
+䲃 > a\-carp\-like\-fish\-with\-chicken\-feet;
+䩗 > to\-rule\-by\-might\-rather\-than\-right;
+䢕 > a\-group\-of\-people\-walking\-together;
+䚡 > bones\-in\-a\-horn\-of\-cattle\-and\-goat;
+䙬 > plaits\-on\-the\-sides\-of\-a\-petticoat;
+䐀 > to\-dismember\-body\-of\-the\-livestock;
+䎎 > to\-glide\-or\-to\-hover\-up\-in\-the\-air;
+䍊 > clay\-made\-blowing\-wind\-instruments;
+䈿 > belt\-of\-the\-canvas\-top\-on\-vehicles;
+䇮 > a\-bamboo\-mat\-used\-in\-ancient\-times;
+䅚 > closely\-growing\-of\-the\-rice\-plants;
+䄶 > rice\-plant\-growing\-the\-second\-time;
+䁾 > red\-and\-swelling\-of\-the\-eye\-socket;
+䁨 > to\-open\-the\-eyes\-with\-astonishment;
+㽛 > narrow\-trail\-of\-path\-in\-the\-fields;
+㺑 > dogs\-wormed\-through\-a\-narrow\-place;
+㹢 > a\-large\-ape\-found\-in\-western\-china;
+㹜 > two\-dogs\-are\-barking\-to\-each\-other;
+㹉 > a\-legendary\-animal\-with\-three\-feet;
+㷦 > to\-open\-the\-eyes\-with\-astonishment;
+㶀 > deep\-and\-vast\-of\-the\-flowing\-water;
+㰶 > to\-wrinkle\-the\-nose\-with\-sorrowful;
+㭲 > a\-wooden\-frame\-for\-carrying\-things;
+㡡 > screen\-to\-make\-a\-temporary\-kitchen;
+㠿 > a\-kind\-of\-delicate\-and\-fine\-fabric;
+㜺 > nice\-white\-color\-and\-looks\-so\-good;
+㜵 > with\-a\-charming\-sprightly\-carriage;
+㚩 > with\-a\-charming\-sprightly\-carriage;
+㙈 > name\-of\-a\-place\-in\-shanxi\-province;
+㖡 > the\-birds\-singing\-during\-the\-night;
+㕺 > looks\-big\-outside\-but\-empty\-inside;
+㕄 > to\-apply\-knowledge\-to\-final\-causes;
+社 > god\-of\-the\-soil\-and\-altars\-to\-him;
+瑟 > large\-stringed\-musical\-instrument;
+楞 > used\-for\-ceylon\-in\-buddhist\-texts;
+喽 > used\-in\-onomatopoetic\-expressions;
+嚅 > talk\-indistinctly\-and\-falteringly;
+裱 > to\-mount\-maps\-or\-scrolls\-to\-paste;
+猢 > a\-kind\-of\-monkey\-found\-in\-w\.china;
+蜮 > a\-fabulous\-creature\-like\-a\-turtle;
+呖 > used\-in\-onomatopoetic\-expressions;
+碡 > stone\-roller\-used\-to\-level\-fields;
+鄣 > name\-of\-ancient\-city\-in\-n\.jiangsu;
+粢 > grain\-offered\-in\-ritual\-sacrifice;
+簦 > large\-umbrella\-with\-a\-long\-handle;
+螓 > a\-small\-cicada\-with\-a\-square\-head;
+魊 > a\-mythical\-creature\-said\-hurl\-san;
+韐 > knee\-pad\-made\-of\-red\-dyed\-leather;
+軏 > cross\-bar\-at\-end\-of\-poles\-of\-cart;
+薀 > the\-hippuris\-or\-mare''s\-tail\-plant;
+蕰 > the\-hippuris\-or\-mare''s\-tail\-plant;
+聝 > to\-cut\-the\-left\-ears\-of\-the\-slain;
+耔 > to\-hoe\-up\-the\-earth\-around\-plants;
+簫 > musical\-instrument\-like\-pan\-pipes;
+簨 > a\-beam\-for\-hanging\-bells\-or\-drums;
+簘 > musical\-instrument\-like\-pan\-pipes;
+箾 > musical\-instrument\-like\-pan\-pipes;
+礳 > name\-of\-place\-in\-shan\-xi\-province;
+碫 > coarse\-stone\-\(used\-for\-whetstone\);
+璯 > jade\-ornament\-in\-the\-seams\-of\-cap;
+琯 > a\-jade\-tube\-used\-as\-an\-instrument;
+玁 > a\-dog\-with\-a\-long\-snout\-or\-muzzle;
+棟 > the\-main\-beams\-supporting\-a\-house;
+戠 > a\-sword\.\-potter''s\-clay\.\-to\-gather;
+嚦 > used\-in\-onomatopoetic\-expressions;
+嘍 > used\-in\-onomatopoetic\-expressions;
+呭 > final\-particle\-expressing\-consent;
+呡 > the\-corners\-of\-the\-mouth\-the\-lips;
+䶬 > hard\-fins\-on\-the\-back\-of\-a\-dragon;
+䶅 > a\-marmot\-like\-rat\-with\-a\-big\-head;
+䴓 > general\-term\-for\-small\-bird\-group;
+䬗 > blown\-or\-tossed\-about\-by\-the\-wind;
+䧉 > name\-of\-a\-pavilion\-in\-han\-dynasty;
+䥶 > cooking\-utensil\-used\-in\-old\-times;
+䥬 > a\-musical\-instrument\-in\-old\-times;
+䣜 > name\-of\-a\-county\-in\-ancient\-times;
+䣖 > name\-of\-a\-county\-in\-ancient\-times;
+䣕 > name\-of\-a\-county\-in\-ancient\-times;
+䣌 > residence\-of\-a\-prince\-or\-nobility;
+䡝 > a\-rear\-covering\-of\-a\-big\-carriage;
+䡊 > the\-protruded\-sides\-of\-a\-carriage;
+䠚 > to\-step\-on\-the\-ground\-with\-a\-bang;
+䖃 > the\-water\-is\-waving\-in\-the\-breeze;
+䕤 > name\-of\-a\-county\-in\-ancient\-times;
+䒧 > a\-vessel\-or\-utensil\-made\-of\-straw;
+䍲 > a\-kind\-of\-sheep\-with\-curled\-hairs;
+䋸 > back\-center\-suture\-of\-the\-clothes;
+䋛 > the\-clustered\-embroidery\-patterns;
+䊖 > to\-eat\-rice\-gruel\-mixed\-with\-meat;
+䆅 > to\-accumulate\-or\-to\-store\-up\-rice;
+䂧 > rocks\-clustered\-pile\-up\-togethers;
+䀿 > to\-have\-a\-casual\-and\-short\-glance;
+䀸 > to\-have\-a\-casual\-and\-short\-glance;
+㹗 > cattle\-and\-sheep\-have\-no\-children;
+㶲 > measuring\-unit\-for\-thermodynamics;
+㵺 > name\-of\-a\-stream\-in\-ancient\-times;
+㵐 > name\-of\-a\-river\-in\-hubei\-province;
+㵋 > name\-of\-a\-river\-in\-hunan\-province;
+㱒 > to\-scold\-or\-blame\-in\-a\-loud\-voice;
+㮾 > a\-place\-in\-today''s\-hunan\-province;
+㬈 > the\-sun\-was\-shining\-and\-it''s\-warm;
+㪊 > infested\-with\-bandits\-and\-robbers;
+㨘 > to\-blow\-the\-nose\-with\-the\-fingers;
+㟾 > name\-of\-a\-mountain\-in\-county\-jian;
+㟸 > name\-of\-pavilion\-in\-ancient\-china;
+㟉 > name\-of\-pavilion\-in\-ancient\-china;
+㟂 > name\-of\-cape\-in\-shandong\-province;
+㚪 > to\-make\-a\-deceptive\-show\-of\-power;
+㒍 > utterly\-weary\-in\-body\-and\-spirits;
+㐌 > a\-tribe\-of\-savages\-in\-south\-china;
+捻 > to\-twist\-or\-nip\-with\-the\-fingers;
+戌 > eleventh\-of\-terrestrial\-branches;
+搓 > to\-rub\-or\-roll\-between\-the\-hands;
+尧 > a\-legendary\-ancient\-emperor\-sage;
+婶 > wife\-of\-father''s\-younger\-brother;
+掬 > to\-grasp\-or\-hold\-with\-both\-hands;
+幛 > scroll\-of\-silk\-or\-cloth\-presente;
+棂 > carved\-or\-patterned\-window\-sills;
+氲 > life\-giving\-influences\-of\-nature;
+蚝 > hairy\-and\-poisonous\-caterpillars;
+澧 > river\-in\-northern\-hunan\-province;
+筮 > divination\-with\-stalks\-of\-plants;
+笪 > a\-coarse\-mat\-of\-rushes\-or\-bamboo;
+馓 > fried\-round\-cakes\-of\-wheat\-flour;
+箐 > to\-draw\-a\-bamboo\-bow\-or\-crossbow;
+扃 > a\-door\-bar\-placed\-outside\-a\-door;
+仉 > surname\-of\-the\-mother\-of\-mencius;
+骾 > any\-object\-that\-sticks\-in\-throat;
+饊 > fried\-round\-cakes\-of\-wheat\-flour;
+醼 > offer\-food\-and\-wine\-one''s\-guests;
+輧 > curtained\-carriage\-used\-by\-women;
+軿 > curtained\-carriage\-used\-by\-women;
+軙 > a\-chinese\-family\-name\-to\-arrange;
+贁 > to\-defeat\-to\-spoil\-or\-be\-spoiled;
+賏 > pearls\-or\-shells\-strung\-together;
+諊 > to\-make\-a\-judicial\-investigation;
+螆 > hairy\-and\-poisonous\-caterpillars;
+纙 > string\-on\-which\-coins\-are\-strung;
+糤 > fried\-round\-cakes\-of\-wheat\-flour;
+筴 > type\-of\-grass\-used\-in\-divination;
+琇 > coarse\-variety\-of\-jasper\-or\-jade;
+氳 > life\-giving\-influences\-of\-nature;
+櫺 > carved\-or\-patterned\-window\-sills;
+棫 > thorny\-shrub\-with\-yellow\-flowers;
+旓 > serrated\-edges\-on\-a\-chinese\-flag;
+嶲 > a\-name\-of\-an\-old\-town\-in\-sichuan;
+尭 > a\-legendary\-ancient\-emperor\-sage;
+嬸 > wife\-of\-father''s\-younger\-brother;
+塱 > place\-name\-in\-guangdong\-province;
+堯 > a\-legendary\-ancient\-emperor\-sage;
+剨 > sound\-of\-something\-being\-smashed;
+䵬 > black\-sound\-of\-the\-flowing\-water;
+䴍 > a\-kind\-of\-strange\-and\-weird\-bird;
+䴉 > general\-term\-for\-a\-group\-of\-bird;
+䳰 > a\-bird\-resembling\-the\-wild\-goose;
+䳈 > a\-bird\-resembling\-the\-wild\-goose;
+䱙 > a\-small\-kind\-of\-tuna\-or\-sturgeon;
+䰔 > dressed\-hair\-in\-a\-horizontal\-way;
+䰉 > dressed\-hair\-in\-a\-horizontal\-way;
+䪬 > sound\-of\-pressing\-something\-down;
+䩬 > an\-ornamental\-item\-on\-a\-scabbard;
+䧵 > a\-bird\-like\-the\-secretary\-falcon;
+䦎 > a\-mechanical\-device\-for\-lead\-ore;
+䥾 > to\-melt\-or\-cast\-by\-using\-a\-mould;
+䥱 > to\-melt\-or\-cast\-by\-using\-a\-mould;
+䥙 > a\-speculum\-used\-in\-ancient\-times;
+䤷 > a\-lance\-with\-three\-or\-two\-points;
+䣢 > name\-of\-a\-place\-in\-ancient\-times;
+䣛 > name\-of\-a\-place\-in\-ancient\-times;
+䝁 > a\-kind\-of\-wild\-leguminous\-plants;
+䛶 > writings\-eulogizing\-adead\-person;
+䗤 > a\-kind\-of\-worm\-produced\-in\-water;
+䍰 > a\-plague\-or\-a\-pestilence\-of\-goat;
+䊊 > well\-boiled\-congee\-or\-rice\-gruel;
+䉈 > a\-kind\-of\-bamboo\-with\-a\-red\-skin;
+䈓 > a\-kind\-of\-bamboo\-with\-a\-red\-skin;
+䇈 > to\-put\-into\-a\-cupboard\-or\-closet;
+䇀 > ornaments\-of\-fine\-feather\-or\-fur;
+䅹 > a\-kind\-of\-drill\-for\-sowing\-grain;
+䅩 > crooked\-and\-winding\-of\-the\-grass;
+䄼 > name\-of\-a\-place\-in\-ancient\-times;
+䄷 > a\-measurement\-equal\-to\-120\-catty;
+䃪 > a\-platform\-for\-sacrificial\-rites;
+䂞 > a\-thorny\-tree\-about\-15\-feet\-high;
+㺜 > fierce\-dog\-with\-long\-shaggy\-hair;
+㺉 > a\-fierce\-animal\-of\-the\-dog\-tribe;
+㹡 > a\-rush\-and\-impatient\-disposition;
+㸡 > board\-to\-block\-the\-water\-current;
+㸚 > scattered\-or\-dispersed\-and\-clear;
+㴭 > immeasurable\-depth\-or\-profundity;
+㳆 > name\-of\-a\-place\-in\-ancient\-times;
+㱨 > to\-prepare\-a\-body\-for\-the\-coffin;
+㬇 > name\-of\-a\-state\-in\-ancient\-china;
+㩽 > branches\-to\-be\-a\-parasite\-a\-tree;
+㨒 > to\-cut\-open\-and\-clean\-\-\-\-as\-fish;
+㢲 > the\-5th\-of\-the\-eight\-diagrams\-八卦;
+㟨 > a\-fountain\-in\-the\-side\-of\-a\-hill;
+㛍 > to\-have\-one''s\-ambition\-fulfilled;
+㚡 > standing\-without\-a\-straight\-back;
+㚉 > to\-make\-a\-profit\-on\-sell\-and\-buy;
+㙰 > name\-of\-a\-place\-in\-ancient\-times;
+㕣 > a\-marsh\-at\-the\-foot\-of\-the\-hills;
+们 > adjunct\-pronoun\-indicate\-plural;
+呢 > interrogative\-or\-emphatic\-final;
+楼 > building\-of\-two\-or\-more\-stories;
+药 > leaf\-of\-dahurian\-angelica\-plant;
+齎 > take\-in\-both\-hands\-and\-offer\-to;
+丈 > unit\-of\-length\-equal\-3\.3\-meters;
+挑 > a\-load\-carried\-on\-the\-shoulders;
+樓 > building\-of\-two\-or\-more\-stories;
+祝 > pray\-for\-happiness\-or\-blessings;
+杉 > various\-species\-of\-pine\-and\-fir;
+朧 > condition\-or\-appearance\-of\-moon;
+朦 > condition\-or\-appearance\-of\-moon;
+霸 > rule\-by\-might\-rather\-than\-right;
+箪 > small\-bamboo\-basket\-for\-holding;
+醤 > any\-jam\-like\-or\-paste\-like\-food;
+酱 > any\-jam\-like\-or\-paste\-like\-food;
+胧 > condition\-or\-appearance\-of\-moon;
+炕 > the\-brick\-bed\-in\-northern\-china;
+亥 > last\-of\-twelve\-earthly\-branches;
+粤 > guangdong\-and\-guangxi\-provinces;
+粽 > dumpling\-made\-of\-glutinous\-rice;
+陇 > mountain\-located\-between\-shanxi;
+闾 > village\-of\-twenty\-five\-families;
+郦 > place\-in\-today''s\-henan\-province;
+鞅 > leather\-strap\-over\-horse''s\-neck;
+邺 > place\-in\-today''s\-henan\-province;
+铡 > sickle\-for\-cutting\-grass\-or\-hay;
+骧 > gallop\-about\-with\-head\-uplifted;
+骢 > horse\-with\-a\-bluish\-white\-color;
+蛳 > kind\-of\-snail\-with\-spiral\-shell;
+邳 > a\-department\-in\-the\-state\-of\-lu;
+郢 > state\-in\-today''s\-hubei\-province;
+骖 > two\-outside\-ones\-in\-three\-horse;
+轸 > cross\-board\-at\-rear\-of\-carriage;
+箜 > ancient\-string\-music\-instrument;
+郐 > state\-in\-today''s\-henan\-province;
+轹 > run\-over\-something\-with\-vehicle;
+栝 > a\-builder''s\-frame\-for\-measuring;
+獍 > an\-animal\-which\-eats\-its\-mother;
+鼗 > small\-revolving\-drum\-with\-knobs;
+鼒 > large\-tripod\-caldron\-with\-small;
+鶖 > large\-waterfowl\-with\-naked\-head;
+驤 > gallop\-about\-with\-head\-uplifted;
+驄 > horse\-with\-a\-bluish\-white\-color;
+驂 > two\-outside\-ones\-in\-three\-horse;
+騄 > name\-of\-a\-legendary\-swift\-horse;
+駬 > name\-of\-a\-legendary\-swift\-horse;
+餖 > food\-item\-set\-out\-for\-show\-only;
+頣 > to\-view\-others\-with\-raised\-eyes;
+隴 > mountain\-located\-between\-shanxi;
+閭 > village\-of\-twenty\-five\-families;
+鍘 > sickle\-for\-cutting\-grass\-or\-hay;
+鋐 > state\-in\-today''s\-hubei\-province;
+醬 > any\-jam\-like\-or\-paste\-like\-food;
+酈 > place\-in\-today''s\-henan\-province;
+鄶 > state\-in\-today''s\-henan\-province;
+鄴 > place\-in\-today''s\-honan\-province;
+鄚 > place\-in\-today''s\-hebei\-province;
+郔 > place\-name\-in\-shandong\-province;
+邽 > name\-of\-a\-county\-in\-han\-dynasty;
+邶 > place\-in\-today''s\-henan\-province;
+轢 > run\-over\-something\-with\-vehicle;
+軫 > cross\-board\-at\-rear\-of\-carriage;
+軨 > lattice\-work\-on\-front\-and\-sides;
+踋 > the\-foot\-or\-feet\-cast\-of\-a\-play;
+覇 > rule\-by\-might\-rather\-than\-right;
+襭 > tuck\-up\-hem\-of\-garment\-and\-wrap;
+裋 > cotton\-clothes\-of\-a\-boy\-servant;
+衺 > slit\-in\-garment\-to\-aid\-movement;
+蠨 > a\-kind\-of\-spider\-with\-long\-legs;
+螣 > mythological\-wingless\-dragon\-of;
+螄 > kind\-of\-snail\-with\-spiral\-shell;
+苤 > brassica\-campestris\-subsp\.\-rapa;
+艕 > two\-boats\-fastened\-side\-by\-side;
+膫 > the\-fat\-covering\-the\-intestines;
+縗 > sackcloth\-worn\-on\-breast\-during;
+糉 > dumpling\-made\-of\-glutinous\-rice;
+粵 > guangdong\-and\-guangxi\-provinces;
+簞 > small\-bamboo\-basket\-for\-holding;
+篪 > a\-bamboo\-flute\-with\-seven\-holes;
+瞖 > a\-cataract\-or\-film\-over\-the\-eye;
+畤 > place\-for\-worshipping\-the\-haven;
+甗 > earthenware\-vessel\-in\-two\-parts;
+烳 > to\-travel\-by\-the\-light\-of\-torch;
+灕 > short\-name\-for\-guangxi\-province;
+沴 > foul\-and\-poisonous\-in\-confusion;
+樐 > a\-lookout\-turret\-on\-a\-city\-wall;
+棻 > kind\-of\-wood\-from\-which\-perfume;
+枌 > variety\-of\-elm\-with\-small\-seeds;
+垟 > clay\-sheep\-buried\-with\-the\-dead;
+咠 > to\-whisper\.\-to\-blame\-to\-slander;
+叧 > to\-cut\-meat\-off\-away\-from\-bones;
+冔 > cap\-worn\-during\-the\-yin\-dynasty;
+們 > adjunct\-pronoun\-indicate\-plural;
+亼 > to\-assemble\.\-to\-gather\-together;
+乄 > shime\:\-to\-find\-a\-place\-to\-dwell;
+䶵 > a\-bamboo\-flute\-with\-seven\-holes;
+䵸 > the\-toad\-that\-lives\-in\-the\-moon;
+䳡 > a\-kind\-of\-bird\-in\-ancient\-books;
+䲞 > a\-second\-general\-name\-for\-perch;
+䱌 > a\-second\-name\-for\-the\-globefish;
+䰝 > a\-large\-earthen\-pot\-for\-cooking;
+䰀 > dressed\-hair\-of\-a\-chinese\-woman;
+䮸 > to\-move\-slowly\-and\-then\-swiftly;
+䬻 > to\-entertain\-a\-departing\-friend;
+䪾 > to\-deal\-with\-affairs\-cautiously;
+䪍 > a\-container\-for\-bows\-and\-arrows;
+䨣 > leather\-to\-be\-moistened\-by\-rain;
+䦇 > dressed\-hair\-of\-a\-chinese\-woman;
+䣣 > name\-of\-a\-place\-name\-of\-a\-place;
+䟚 > to\-sit\-with\-the\-legs\-spread\-out;
+䜷 > fermented\-and\-seasoned\-soybeans;
+䜪 > name\-of\-a\-pavilion\-in\-old\-times;
+䛀 > reasonable\-authority\-statements;
+䘅 > a\-small\-gadflies\-and\-mosquitoes;
+䐃 > fat\-in\-the\-abdomen\-or\-intestine;
+䍛 > a\-kind\-of\-tool\-used\-to\-get\-fish;
+䊤 > vegetable\-mixed\-with\-thick\-soup;
+䂲 > standard\-weights\-used\-in\-scales;
+䁰 > to\-look\-in\-a\-evil\-or\-wicked\-way;
+㼖 > gourd\-used\-as\-a\-ladle\-or\-dipper;
+㻫 > a\-gem\-or\-ornament\-on\-a\-scabbard;
+㯭 > a\-lookout\-turret\-on\-a\-city\-wall;
+㮇 > a\-builder''s\-frame\-for\-measuring;
+㬹 > tendons\-of\-the\-heel\-of\-the\-foot;
+㬁 > the\-sun\-is\-shining\-on\-the\-water;
+㧽 > name\-of\-a\-county\-in\-han\-dynasty;
+轢 > run\-over\-something\-with\-vehicle;
+閭 > village\-of\-twenty\-five\-families;
+樓 > building\-of\-two\-or\-more\-stories;
+㥆 > indulgent\-and\-without\-restraint;
+㗘 > to\-bite\-the\-hard\-and\-solid\-food;
+㓢 > to\-cut\-the\-flesh\-from\-the\-bones;
+㓔 > faded\-and\-fallen\-\-\-\-as\-blossoms;
+㒻 > to\-go\-forward\-with\-eyes\-covered;
+幹 > trunk\-of\-tree\-or\-of\-human\-body;
+尺 > chinese\-measure\-approx\.\-''foot'';
+米 > hulled\-or\-husked\-uncooked\-rice;
+鹏 > fabulous\-bird\-of\-enormous\-size;
+喂 > interjection\-to\-call\-attention;
+潇 > sound\-of\-beating\-wind\-and\-rain;
+禹 > legendary\-hsia\-dynasty\-founder;
+斟 > to\-pour\-wine\-or\-tea\-into\-a\-cup;
+萼 > the\-stem\-and\-calyx\-of\-a\-flower;
+阀 > powerful\-and\-influential\-group;
+楷 > model\-style\-of\-chinese\-writing;
+辄 > sides\-of\-chariot\-where\-weapons;
+俑 > wooden\-figure\-buried\-with\-dead;
+嘹 > used\-describe\-clarity\-of\-voice;
+轼 > horizontal\-wooden\-bar\-in\-front;
+馑 > time\-of\-famine\-or\-crop\-failure;
+伥 > ghost\-of\-one\-devoured\-by\-tiger;
+绶 > silk\-ribbon\-attached\-as\-a\-seal;
+鬈 > fine\-growth\-of\-hair\-curly\-hair;
+磔 > downward\-stroke\-slanting\-right;
+裢 > folding\-purse\-inserted\-in\-belt;
+枸 > kind\-of\-aspen\-found\-in\-sichuan;
+芊 > exuberant\-and\-vigorous\-foliage;
+鄄 > name\-of\-a\-district\-in\-shandong;
+鼹 > a\-kind\-of\-insectivorous\-rodent;
+莼 > an\-edible\-water\-plant\-brasenia;
+圬 > plaster\-over\-with\-layer\-of\-mud;
+莩 > membrane\-lining\-inside\-of\-reed;
+诶 > an\-exclamation\-of\-confirmation;
+褙 > paper\-or\-cloth\-pasted\-together;
+茌 > name\-of\-a\-district\-in\-shandong;
+鼴 > a\-kind\-of\-insectivorous\-rodent;
+鶋 > a\-sea\-bird\-with\-a\-white\-breast;
+鵬 > fabulous\-bird\-of\-enormous\-size;
+鯏 > a\-dialect\.\.\.\.\.\.\.\.\-name\-of\-fish;
+饉 > time\-of\-famine\-or\-crop\-failure;
+饁 > carry\-meal\-to\-workers\-in\-field;
+閥 > powerful\-and\-influential\-group;
+鎫 > ornament\-over\-the\-horse''s\-head;
+輒 > sides\-of\-chariot\-where\-weapons;
+赙 > gift\-of\-money\-help\-pay\-funeral;
+賻 > gift\-of\-money\-help\-pay\-funeral;
+誒 > an\-exclamation\-of\-confirmation;
+詤 > to\-make\-wild\-statements\-to\-lie;
+褳 > folding\-purse\-inserted\-in\-belt;
+蘴 > young\-shoots\-of\-the\-rapeturnip;
+莝 > to\-chop\-straw\-fine\-for\-animals;
+腠 > between\-the\-skin\-and\-the\-flesh;
+翿 > streamer\-adorned\-with\-feathers;
+綬 > silk\-ribbon\-attached\-as\-a\-seal;
+筥 > round\-shaped\-bamboo\-basket\-for;
+痄 > scrofulous\-swellings\-and\-sores;
+玤 > a\-kind\-of\-gem\-inferior\-to\-jade;
+煠 > to\-fry\-in\-fat\-or\-oil\.\-to\-scald;
+瀟 > sound\-of\-beating\-wind\-and\-rain;
+潏 > fareshare\-reclaimed\-from\-river;
+漼 > having\-the\-appearance\-of\-depth;
+欞 > the\-lattice\-of\-a\-window\-a\-sill;
+曚 > twilight\-just\-before\-sun\-rises;
+斚 > a\-small\-cup\-of\-stone\-with\-ears;
+扊 > upright\-bar\-for\-fastening\-door;
+慜 > name\-of\-a\-monk\-in\-tang\-dynasty;
+崠 > place\-name\-in\-guangxi\-province;
+岽 > place\-name\-in\-guangxi\-province;
+岝 > name\-of\-a\-mountain\-in\-shandong;
+堭 > a\-dry\-moat\-outside\-a\-city\-wall;
+堎 > character\-used\-for\-place\-names;
+嚹 > a\-particle\-implying\-completion;
+匳 > ladies\-toilet\-case\-with\-mirror;
+刵 > punishment\-by\-cutting\-off\-ears;
+䲁 > general\-term\-of\-a\-kind\-of\-fish;
+䰚 > the\-top\-part\-of\-the\-rice\-gruel;
+䯵 > hair\-style\-for\-little\-children;
+䯤 > boneware\-used\-to\-comb\-the\-hair;
+䯒 > the\-upper\-part\-of\-the\-shinbone;
+䮔 > a\-young\-and\-fleet\-footed\-horse;
+䭺 > a\-horse\-to\-raise\-its\-head\-high;
+䫮 > to\-bend\-or\-lower\-of\-one''s\-head;
+䫆 > the\-front\-and\-back\-of\-the\-neck;
+䧒 > steps\-leading\-up\-to\-a\-building;
+䤛 > component\-parts\-of\-a\-cross\-bow;
+䣹 > to\-brew\-10\-percent\-of\-the\-wine;
+䣵 > to\-brew\-the\-wine\-a\-second\-time;
+䣬 > the\-shiny\-colorful\-of\-the\-wine;
+䢾 > name\-of\-an\-ancient\-small\-state;
+䡃 > a\-tool\-for\-brushing\-the\-thread;
+䜲 > name\-of\-a\-village\-in\-old\-china;
+䘓 > thick\-blood\-of\-cattle\-and\-goat;
+䓿 > a\-second\-name\-for\-lotus\-flower;
+䓹 > to\-stuff\-full\-and\-to\-gulp\-down;
+䍁 > the\-hem\-or\-border\-of\-a\-garment;
+䋴 > silk\-fabrics\-with\-mixed\-colors;
+䋳 > cloth\-or\-paper\-pasted\-together;
+䉤 > a\-bamboo\-ware\-for\-washing\-rice;
+䉛 > bamboo\-basket\-for\-washing\-rice;
+䉓 > mattress\-made\-of\-bamboo\-strips;
+䈹 > a\-bamboo\-ware\-for\-washing\-rice;
+䇬 > thin\-bamboo\-laths\-knitted\-sail;
+䇧 > to\-fill\-an\-opening\-with\-bamboo;
+䄡 > northern\-minority\-ethnic\-group;
+䃶 > rugged\-and\-uneven\-of\-the\-rocks;
+䃚 > rugged\-land\-of\-sand\-and\-pebble;
+䃂 > dull\-sound\-of\-the\-tolling\-bell;
+㼡 > a\-small\-jar\-with\-a\-small\-mouth;
+㵷 > turbulent\-flowing\-of\-the\-water;
+㵏 > having\-the\-appearance\-of\-depth;
+㲹 > the\-dry\-soil\-on\-the\-river\-side;
+㲝 > fine\-hair\-of\-birds\-and\-animals;
+㯅 > the\-branches\-growing\-downwards;
+㮂 > an\-appliance\-used\-to\-lift\-food;
+㬤 > wet\-clothes\-not\-completely\-dry;
+㪾 > to\-cut\-the\-flesh\-from\-the\-bone;
+㨙 > to\-clasp\-or\-hold\-under\-the\-arm;
+㦲 > a\-particle\-expressing\-surprise;
+㥋 > sound\-of\-the\-anguish\-of\-sorrow;
+㤯 > clever\-or\-smart\-in\-a\-small\-way;
+㤔 > to\-concede\-or\-submit\-willingly;
+㣇 > a\-kind\-of\-beast\-with\-long\-hair;
+㡞 > a\-sack\-used\-to\-feed\-the\-horses;
+㠣 > a\-mountain\-in\-jiangxi\-province;
+㞯 > the\-turning\-area\-of\-a\-mountain;
+㜆 > commonly\-known\-as\-mother\-in\-wu;
+㙚 > red\-colored\-hard\-and\-solid\-mud;
+㘞 > yelling\-sound\-of\-towing\-a\-boat;
+㔩 > hair\-ornments\-used\-in\-old\-time;
+㔀 > to\-brand\-criminals\-on\-the\-face;
+迦 > character\-for\-transliteration;
+庵 > buddhist\-monastery\-or\-nunnery;
+庚 > seventh\-of\-ten\-cyclical\-stems;
+趣 > what\-attracts\-one''s\-attention;
+畔 > boundary\-path\-dividing\-fields;
+夾 > be\-wedged\-or\-inserted\-between;
+辆 > numerary\-adjunct\-for\-vehicles;
+夹 > be\-wedged\-or\-inserted\-between;
+怔 > a\-disease\-resembling\-neurosis;
+陌 > foot\-path\-between\-rice\-fields;
+骆 > a\-white\-horse\-with\-black\-mane;
+楣 > crossbeam\-above\-or\-under\-gate;
+璧 > piece\-of\-jade\-with\-hole\-in\-it;
+膻 > rank\-odor\-\(of\-sheep\-or\-goats\);
+玑 > pearl\-that\-is\-not\-quite\-round;
+唢 > flute\-like\-musical\-instrument;
+楂 > a\-raft\.\-to\-hew\.\-to\-fell\-trees;
+犒 > entertain\-victorious\-soldiers;
+矍 > look\-about\-in\-fright\-or\-alarm;
+擤 > to\-blow\-the\-nose\-with\-fingers;
+芡 > plant\-allied\-to\-the\-waterlily;
+籼 > non\-glutinous\-long\-grain\-rice;
+桡 > bent\-or\-twisted\-piece\-of\-wood;
+黻 > special\-pattern\-of\-embroidery;
+嵝 > goulou\-mountain\-peak\-in\-hunan;
+垭 > character\-used\-in\-place\-names;
+硖 > \<arch\>\-town\-in\-hebei\-province;
+邡 > name\-of\-a\-district\-in\-sichuan;
+讠 > simplified\-kangxi\-radical\-149;
+噻 > character\-used\-in\-translation;
+疬 > scrofulous\-lumps\-or\-swellings;
+蔟 > frame\-on\-which\-silkworms\-spin;
+垧 > variable\-unit\-of\-land\-measure;
+鬏 > a\-coiffure\-on\-top\-of\-the\-head;
+筘 > \(a\-measure\-of\-width\-of\-cloth\);
+缑 > cord\-binding\-on\-hilt\-of\-sword;
+簖 > bamboo\-trap\-for\-catching\-fish;
+庋 > a\-cupboard\-or\-pantry\-to\-store;
+甍 > rafters\-supporting\-roof\-tiles;
+駹 > black\-horse\-with\-a\-white\-face;
+駱 > a\-white\-horse\-with\-black\-mane;
+饎 > wine\-and\-food\-eaten\-with\-wine;
+釄 > wine\-brew\-for\-the\-second\-time;
+釁 > smear\-with\-blood\-in\-sacrifice;
+迧 > a\-chinese\-family\-name\-arrange;
+轘 > tear\-asunder\-between\-chariots;
+輛 > numerary\-adjunct\-for\-vehicles;
+輙 > sides\-of\-chariot\-were\-weapons;
+輌 > numerary\-adjunct\-for\-vehicles;
+詀 > garrulous\-to\-whisper\.\-to\-joke;
+訹 > to\-beguile\-with\-false\-stories;
+藊 > a\-kind\-of\-bean\-with\-flat\-pods;
+舠 > long\-narrow\-knife\-shaped\-boat;
+翣 > feathers\-used\-decorate\-coffin;
+縓 > orange\-or\-reddish\-yellow\-silk;
+緱 > cord\-binding\-on\-hilt\-of\-sword;
+糏 > rice\-grits\-left\-after\-hulling;
+篘 > a\-utensil\-used\-to\-filter\-wine;
+秈 > non\-glutinous\-long\-grain\-rice;
+硤 > \<arch\>\-town\-in\-hebei\-province;
+矰 > arrow\-with\-attached\-silk\-cord;
+癧 > scrofulous\-lumps\-or\-swellings;
+璣 > pearl\-that\-is\-not\-quite\-round;
+玃 > a\-large\-ape\-found\-in\-w\.\-china;
+猇 > the\-scream\-or\-roar\-of\-a\-tiger;
+牸 > the\-female\-of\-certain\-animals;
+滙 > waters\-converging\-to\-one\-spot;
+滘 > character\-used\-in\-place\-names;
+橈 > bent\-or\-twisted\-piece\-of\-wood;
+椊 > to\-fit\-a\-handle\-into\-a\-socket;
+暐 > the\-bright\-shining\-of\-the\-sun;
+昳 > the\-declining\-sun\-in\-the\-west;
+捬 > press\-down\-heavily\-with\-hands;
+抔 > take\-or\-hold\-up\-in\-both\-hands;
+嶁 > goulou\-mountain\-peak\-in\-hunan;
+崾 > place\-name\-in\-shanxi\-province;
+峫 > mountain\-in\-shandong\-province;
+姅 > woman\-at\-time\-of\-menstruation;
+壼 > palace\-corridor\-or\-passageway;
+壍 > moat\-around\-a\-city\.\-a\-channel;
+埡 > character\-used\-in\-place\-names;
+嗪 > character\-used\-in\-translation;
+嗩 > flute\-like\-musical\-instrument;
+啩 > particle\-implying\-probability;
+叐 > to\-prick\-a\-dog\-to\-make\-him\-go;
+卐 > swastika\-fourth\-of\-auspicious;
+卍 > swastika\-fourth\-of\-auspicious;
+䶕 > irregular\-and\-prominent\-teeth;
+䵘 > dosen''t\-t\-stick\-to\-each\-other;
+䲵 > a\-general\-name\-of\-small\-birds;
+䯆 > small\-and\-thin\-piece\-of\-bones;
+䫲 > thin\-and\-sickly\-in\-appearance;
+䫤 > between\-the\-eyebrows\-and\-eyes;
+䫡 > a\-long\-shape\-of\-head\-and\-face;
+䫋 > female\-attendants\-or\-servants;
+䧐 > a\-mountain\-in\-shanxi\-province;
+䥣 > an\-instrument\-for\-boring\-wood;
+䥉 > the\-curved\-iron\-part\-of\-a\-hoe;
+䤒 > wine\-made\-from\-glutinous\-rice;
+䤍 > rotten\-paste\-or\-soybean\-sauce;
+䠽 > height\-or\-stature\-of\-a\-person;
+䠱 > to\-walk\-slowly\-and\-cautiously;
+䟧 > sound\-of\-treading\-or\-stepping;
+䞇 > gifts\-to\-superiors\-or\-friends;
+䝽 > name\-of\-a\-person\-in\-old\-china;
+䝙 > a\-kind\-of\-animal\-like\-a\-tiger;
+䝗 > a\-kind\-of\-animal\-like\-a\-tiger;
+䜈 > to\-speak\-on\-behalf\-of\-another;
+䘳 > a\-garment\-of\-single\-thickness;
+䏼 > what\-is\-left\-over\-of\-the\-food;
+䎢 > to\-measure\-by\-pints\-and\-pecks;
+䎑 > flying\-over\-the\-water\-surface;
+䍮 > young\-goat\-under\-one\-year\-old;
+䍂 > tools\-to\-draw\-water\-or\-liquid;
+䌿 > the\-breadth\-of\-cloth\-or\-paper;
+䌗 > the\-left\-over\-of\-drawing\-silk;
+䌈 > to\-get\-something\-with\-a\-lasso;
+䉥 > a\-small\-basket\-for\-chopsticks;
+䆺 > whirling\-of\-the\-flowing\-water;
+䅢 > mature\-or\-ripen\-of\-the\-grains;
+㿶 > the\-sides\-of\-a\-shoe\-or\-gutter;
+㽰 > carved\-window\-frame\-on\-a\-door;
+㹯 > a\-kind\-of\-animal\-like\-a\-tiger;
+㹂 > untamed\-and\-indocility\-cattle;
+㴄 > the\-water\-flowing\-in\-a\-turned;
+㰉 > the\-hazel\-nut\-or\-filbert\-tree;
+㭟 > torture\-used\-in\-ancient\-times;
+㫐 > distant\-and\-indistinguishable;
+㡻 > name\-of\-a\-small\-ancient\-state;
+㛐 > wife\-of\-one''s\-elder''s\-brother;
+㚆 > to\-do\-something\-in\-an\-old\-way;
+㖟 > to\-deliver\-over\-to\-personally;
+件 > numerary\-adjunct\-for\-article;
+吗 > final\-interrogative\-particle;
+麽 > interrogative\-final\-particle;
+矣 > particle\-of\-completed\-action;
+乒 > used\-with\-pong\-for\-ping\-pong;
+乓 > used\-with\-ping\-for\-ping\-pong;
+咚 > used\-as\-description\-of\-sound;
+琅 > a\-variety\-of\-white\-carnelian;
+孰 > who\?\-which\?\-what\?\-which\-one\?;
+戊 > fifth\-of\-ten\-celestial\-stems;
+渲 > add\-repeated\-washes\-of\-color;
+咫 > foot\-measure\-of\-zhou\-dynasty;
+饷 > rations\-and\-pay\-for\-soldiers;
+汶 > a\-river\-in\-shandong\-province;
+叁 > bank\-form\-of\-numeral\-''three'';
+壬 > ninth\-of\-ten\-celestial\-stems;
+柩 > coffin\-which\-contains\-corpse;
+桠 > the\-forking\-branch\-of\-a\-tree;
+甏 > a\-squat\-jar\-for\-holding\-wine;
+笞 > bamboo\-rod\-used\-for\-beatings;
+阗 > a\-place\-in\-xinjiang\-province;
+铉 > device\-for\-carrying\-a\-tripod;
+觥 > a\-cup\-made\-of\-horn\-obstinate;
+裣 > draw\-one''s\-hands\-into\-sleeve;
+崃 > mountain\-in\-sichuan\-province;
+罘 > screen\-used\-in\-ancient\-times;
+氇 > thick\-rough\-serge\-from\-tibet;
+埴 > soil\-with\-large\-clay\-content;
+昴 > one\-of\-the\-28\-constellations;
+菹 > salted\-or\-pickled\-vegetables;
+麼 > interrogative\-final\-particle;
+鵭 > a\-small\-bird\-with\-black\-neck;
+饟 > rations\-and\-pay\-for\-soldiers;
+餉 > rations\-and\-pay\-for\-soldiers;
+隒 > the\-appearance\-of\-a\-mountain;
+闐 > a\-place\-in\-xinjiang\-province;
+鉉 > device\-for\-carrying\-a\-tripod;
+醁 > a\-kind\-of\-green\-colored\-wine;
+邿 > a\-state\-in\-shandong\-province;
+轖 > framework\-of\-lattice\-on\-cart;
+觵 > a\-cup\-made\-of\-corn\-obstinate;
+襝 > draw\-one''s\-hands\-into\-sleeve;
+耇 > wrinkled\-face\-of\-the\-elderly;
+羴 > rank\-odour\-of\-sheep\-or\-goats;
+絃 > string\-on\-musical\-instrument;
+筻 > place\-name\-in\-hunan\-province;
+竚 > stand\-and\-wait\-for\-long\-time;
+睙 > to\-roll\-the\-eyeballs\-to\-look;
+瑂 > \(stone\-which\-resembles\-jade\);
+燺 > the\-dry\-at\-the\-fire\-to\-roast;
+灉 > a\-river\-in\-shandong\-province;
+瀔 > river\-name\-in\-henan\-province;
+汧 > name\-of\-a\-river\-in\-shangdong;
+氌 > thick\-rough\-serge\-from\-tibet;
+橵 > wood\-placed\-under\-roof\-tiles;
+椏 > the\-forking\-branch\-of\-a\-tree;
+曈 > twilight\-just\-before\-sunrise;
+旟 > an\-military\-flag\-oa\-standard;
+扨 > pick\-up\-with\-fork\-or\-pincers;
+扠 > pick\-up\-with\-fork\-or\-pincers;
+幰 > curtain\-at\-front\-of\-carriage;
+崍 > mountain\-in\-sichuan\-province;
+崀 > place\-name\-in\-hunan\-province;
+娀 > name\-of\-a\-concubine\-of\-di\-ku;
+埄 > whirling\-of\-dust\-in\-the\-wind;
+嗎 > final\-interrogative\-particle;
+䵠 > rushes\-used\-form\-making\-mats;
+䳍 > a\-kind\-of\-pheasant\-like\-bird;
+䱱 > a\-kind\-of\-slippery\-long\-fish;
+䮇 > black\-horse\-with\-white\-thigh;
+䬠 > the\-falling\-of\-snow\-and\-rain;
+䪭 > a\-kind\-of\-musical\-instrument;
+䪉 > metal\-decoration\-on\-a\-halter;
+䩡 > a\-kind\-of\-boots\-in\-old\-times;
+䦜 > name\-of\-a\-state\-in\-old\-times;
+䥺 > name\-of\-a\-double\-edged\-sword;
+䥕 > the\-blade\-or\-edge\-of\-a\-spade;
+䤉 > emptied\-the\-drink\-completely;
+䣡 > name\-of\-a\-place\-in\-old\-times;
+䣏 > name\-of\-a\-state\-in\-old\-times;
+䢼 > name\-of\-a\-state\-in\-old\-times;
+䡑 > the\-rim\-or\-felloe\-of\-a\-wheel;
+䠴 > with\-a\-symmetric\-well\-formed;
+䝵 > to\-thank\-with\-money\-or\-gifts;
+䙗 > a\-swaddling\-cloth\-for\-infant;
+䘻 > curtain\-on\-a\-carriage\-or\-car;
+䘺 > a\-seam\-which\-has\-come\-unsewn;
+䘵 > hissing\-sound\-of\-the\-clothes;
+䔛 > fibrous\-plant\-of\-which\-cloth;
+䓜 > salted\-or\-pickled\-vegetables;
+䑹 > a\-numerary\-adjunct\-for\-ships;
+䍠 > turban\-used\-in\-ancient\-times;
+䌋 > a\-herchief\-hung\-at\-the\-waist;
+䋩 > pretty\-and\-fine\-silk\-fabrics;
+䋏 > thick\-and\-big\-ropes\-or\-cords;
+䋋 > a\-kind\-of\-spring\-fishing\-net;
+䆶 > noise\-of\-a\-mouse\-in\-the\-cave;
+䅳 > stalk\-of\-the\-panicled\-millet;
+䅭 > a\-variety\-of\-panicled\-millet;
+䅣 > a\-variety\-of\-panicled\-millet;
+䅌 > stalk\-of\-wheat\-or\-rice\-plant;
+䃋 > a\-fine\-stone\-resembling\-jade;
+䂵 > sound\-of\-bumping\-or\-striking;
+䂯 > a\-fine\-stone\-resembling\-jade;
+䂫 > noise\-of\-stones\-rolling\-down;
+䂥 > a\-fine\-stone\-resembling\-jade;
+䀳 > not\-to\-look\-straight\-forward;
+㾴 > the\-erythema\-of\-acne\-rosacea;
+㹥 > a\-yellow\-dog\-with\-black\-head;
+㹁 > generally\-called\-the\-animals;
+㵵 > swift\-currents\-of\-the\-stream;
+㵎 > a\-mountain\-stream\-or\-torrent;
+㴚 > the\-small\-ditch\-in\-the\-field;
+㰆 > an\-instrument\-to\-blow\-a\-fire;
+㰁 > a\-tree\-with\-slanted\-branches;
+㯳 > a\-kind\-of\-tool\-to\-adjust\-bow;
+㮴 > a\-numerary\-adjunct\-for\-ships;
+㥜 > unsuccessful\-in\-one''s\-career;
+㡱 > to\-cauterize\-by\-burning\-moxa;
+㠱 > to\-set\-with\-the\-legs\-clossed;
+㜌 > a\-different\-name\-for\-breasts;
+㙾 > hills\-with\-lots\-of\-big\-rocks;
+㙛 > a\-person''s\-name\-in\-old\-times;
+㗾 > to\-give\-vent\-to\-the\-feelings;
+㗆 > sound\-of\-the\-ringed\-pheasant;
+㓳 > use\-knife\-to\-split\-something;
+㑟 > insincere\-and\-cunning\-person;
+啦 > final\-particle\-of\-assertion;
+综 > arrange\-threads\-for\-weaving;
+拭 > wipe\-away\-stains\-with\-cloth;
+叮 > exhort\-or\-enjoin\-repeatedly;
+戟 > halberd\-with\-crescent\-blade;
+凛 > to\-shiver\-with\-cold\-or\-fear;
+栋 > main\-beams\-supporting\-house;
+髦 > flowing\-hair\-of\-young\-child;
+筝 > stringed\-musical\-instrument;
+丙 > third\-of\-the\-heavenly\-stems;
+沂 > river\-in\-southeast\-shandong;
+笈 > bamboo\-box\-used\-carry\-books;
+瓢 > ladle\-made\-from\-dried\-gourd;
+呗 > final\-particle\-of\-assertion;
+簧 > reed\-of\-woodwind\-instrument;
+蛟 > scaly\-dragon\-with\-four\-legs;
+敕 > an\-imperial\-order\-or\-decree;
+裟 > a\-cassock\-or\-robe\-of\-a\-monk;
+碴 > chipped\-edge\-of\-a\-container;
+瘴 > malaria\-pestilential\-vapors;
+纶 > green\-silk\-thread\-or\-tassel;
+罡 > the\-name\-of\-a\-certain\-stars;
+癸 > last\-of\-ten\-celestial\-stems;
+橇 > a\-sledge\-for\-transportation;
+皋 > the\-high\-land\-along\-a\-river;
+潍 > county\-in\-shandong\-province;
+洙 > name\-of\-a\-river\-in\-shandong;
+獠 > to\-hunt\-at\-night\-by\-torches;
+麒 > legendary\-auspicious\-animal;
+珩 > the\-top\-gem\-of\-the\-pendants;
+谥 > to\-confer\-posthumous\-titles;
+秫 > glutinous\-variety\-of\-millet;
+竽 > ancient\-woodwind\-instrument;
+崮 > \(element\-in\-mountain\-names\);
+愀 > to\-change\-one''s\-countenance;
+鄢 > name\-of\-a\-district\-in\-honan;
+癍 > unhealthy\-marks\-on\-the\-skin;
+鄞 > county\-in\-zhejiang\-province;
+雒 > black\-horse\-with\-white\-mane;
+旒 > fringes\-of\-pearls\-on\-crowns;
+琊 > a\-place\-in\-eastern\-shandong;
+蚨 > a\-kind\-of\-water\-beetle\-cash;
+毳 > fine\-hair\-or\-fur\-on\-animals;
+瘥 > to\-recover\-from\-any\-disease;
+渑 > name\-of\-a\-river\-in\-shandong;
+浈 > river\-in\-guangdong\-province;
+嘧 > \(phonetic\)\-as\-in\-pyrimidine;
+鵾 > a\-bird\-resembling\-the\-crane;
+鮨 > epinephelus\-septemfasciatus;
+飦 > well\-boiled\-congee\-or\-gruel;
+雊 > the\-crow\-of\-a\-male\-pheasant;
+隺 > a\-bird\-flying\-high\-ambition;
+醱 > to\-brew\-for\-the\-second\-time;
+醗 > to\-brew\-for\-the\-second\-time;
+酖 > wine\-with\-bird\-poison\-added;
+鄿 > county\-in\-xinjiang\-province;
+鄩 > county\-in\-shandong\-province;
+鄍 > a\-town\-in\-shandong\-province;
+蹚 > tread\-through\-mud\-and\-water;
+謚 > to\-confer\-posthumous\-titles;
+褘 > ceremonial\-gowns\-of\-a\-queen;
+蟰 > small\-spider\-with\-long\-legs;
+蛕 > the\-common\-intestinal\-worms;
+肷 > area\-between\-waist\-and\-hips;
+綸 > green\-silk\-thread\-or\-tassel;
+綜 > arrange\-threads\-for\-weaving;
+籄 > a\-basket\-for\-carrying\-earth;
+箏 > stringed\-musical\-instrument;
+箎 > ancient\-woodwind\-instrument;
+筎 > thin\-outside\-skin\-of\-bamboo;
+瞤 > to\-blink\-or\-twitch\-the\-eyes;
+皐 > the\-high\-land\-along\-a\-river;
+濰 > county\-in\-shandong\-province;
+澠 > name\-of\-a\-river\-in\-shandong;
+湞 > river\-in\-guangdong\-province;
+淠 > luxuriant\-\(of\-water\-plants\);
+浰 > attend\-\(official\-functions\);
+泑 > the\-vitreous\-glaze\-on\-china;
+殨 > to\-open\-as\-an\-ulcer\-or\-sore;
+枏 > a\-variety\-of\-evergreen\-tree;
+旈 > fringes\-of\-pearls\-on\-crowns;
+搇 > to\-press\-down\-with\-the\-hand;
+弸 > a\-bow\-stretched\-to\-the\-full;
+巠 > streams\-running\-underground;
+嵛 > county\-in\-shandong\-province;
+崳 > county\-in\-shandong\-province;
+崙 > kunlun\-mountains\-in\-jiangsu;
+崘 > kunlun\-mountains\-in\-jiangsu;
+崐 > kunlun\-mountains\-in\-jiangsu;
+堳 > land\-allotment\-feudal\-noble;
+噕 > to\-speak\-falsely\-or\-wrongly;
+噅 > to\-speak\-falsely\-or\-wrongly;
+丩 > to\-join\-or\-connect\-the\-vine;
+丒 > the\-period\-from\-1\-to\-3\-a\.m\.;
+䵅 > to\-extract\-by\-applying\-heat;
+䴳 > distiller''s\-grains\-or\-yeast;
+䴭 > distiller''s\-grains\-or\-yeast;
+䳞 > birds\-flying\-all\-directions;
+䳊 > a\-wild\-duck\-like\-water\-bird;
+䳃 > a\-kind\-of\-phoenix\-like\-bird;
+䳁 > a\-wild\-duck\-like\-water\-bird;
+䪷 > to\-toil\-or\-labor\-sedulously;
+䪇 > cushioned\-seat\-on\-a\-vehicle;
+䩿 > a\-big\-drum\-used\-in\-the\-army;
+䧘 > a\-low\-wall\-on\-the\-road\-side;
+䦲 > eaves\-of\-a\-ancestral\-temple;
+䤻 > heavy\-iron\-part\-of\-a\-plough;
+䣲 > to\-heat\-the\-wine\-over\-night;
+䢯 > to\-choose\-or\-select\-careful;
+䠋 > bell\-shaped\-with\-large\-base;
+䟮 > to\-crawl\-on\-hands\-and\-knees;
+䜸 > small\-pieces\-of\-bean\-stalks;
+䜇 > to\-speak\-not\-in\-a\-clear\-way;
+䚣 > crooked\-horns\-of\-the\-animal;
+䚜 > cattle\-with\-crosswise\-horns;
+䙣 > ragged\-garments\-or\-clothing;
+䙕 > clothes\-that\-have\-no\-lining;
+䙔 > clothes\-made\-of\-poor\-fabric;
+䙓 > the\-lower\-part\-of\-a\-garment;
+䘹 > clothes\-that\-have\-no\-lining;
+䘥 > the\-front\-of\-a\-chinese\-gown;
+䘣 > clothes\-that\-have\-no\-lining;
+䘁 > a\-blue\-green\-colored\-cicada;
+䗵 > a\-disease\-attacked\-silkworm;
+䕮 > flower\-of\-the\-chrysanthemum;
+䕦 > flower\-of\-the\-chrysanthemum;
+䔥 > common\-variety\-of\-artemisia;
+䔟 > shake\-and\-wave\-of\-the\-grass;
+䐼 > thin\-membrane\-of\-the\-throat;
+䐯 > ugly\-appearance\-of\-a\-person;
+䐑 > thin\-cut\-of\-the\-sliced\-meat;
+䍺 > a\-legendary\-goat\-like\-beast;
+䌼 > a\-kind\-of\-fine\-silk\-fabrics;
+䌄 > a\-rope\-for\-drawing\-up\-water;
+䋁 > a\-rope\-for\-drawing\-up\-water;
+䊞 > to\-roll\-round\-with\-the\-hand;
+䊕 > well\-boiled\-congee\-or\-gruel;
+䊈 > distiller''s\-grains\-or\-yeast;
+䉺 > deteriorated\-and\-become\-red;
+䉹 > name\-of\-a\-variety\-of\-bamboo;
+䉸 > slips\-of\-bamboo\-for\-writing;
+䉳 > name\-of\-a\-variety\-of\-bamboo;
+䉭 > name\-of\-a\-variety\-of\-bamboo;
+䉫 > name\-of\-a\-variety\-of\-bamboo;
+䉦 > name\-of\-a\-variety\-of\-bamboo;
+䉡 > name\-of\-a\-variety\-of\-bamboo;
+䉠 > name\-of\-a\-variety\-of\-bamboo;
+䉚 > name\-of\-a\-variety\-of\-bamboo;
+䉙 > name\-of\-a\-variety\-of\-bamboo;
+䉏 > name\-of\-a\-variety\-of\-bamboo;
+䉆 > name\-of\-a\-variety\-of\-bamboo;
+䉄 > name\-of\-a\-variety\-of\-bamboo;
+䉁 > name\-of\-a\-variety\-of\-bamboo;
+䈽 > name\-of\-a\-variety\-of\-bamboo;
+䈼 > name\-of\-a\-variety\-of\-bamboo;
+䈲 > a\-bamboo\-basket\-for\-fishing;
+䈯 > name\-of\-a\-variety\-of\-bamboo;
+䈭 > name\-of\-a\-variety\-of\-bamboo;
+䈣 > name\-of\-a\-variety\-of\-bamboo;
+䈢 > name\-of\-a\-variety\-of\-bamboo;
+䈡 > name\-of\-a\-variety\-of\-bamboo;
+䈝 > name\-of\-a\-variety\-of\-bamboo;
+䈘 > name\-of\-a\-variety\-of\-bamboo;
+䈗 > name\-of\-a\-variety\-of\-bamboo;
+䈖 > name\-of\-a\-variety\-of\-bamboo;
+䈏 > name\-of\-a\-variety\-of\-bamboo;
+䈍 > name\-of\-a\-variety\-of\-bamboo;
+䈌 > name\-of\-a\-variety\-of\-bamboo;
+䈋 > name\-of\-a\-variety\-of\-bamboo;
+䈊 > name\-of\-a\-variety\-of\-bamboo;
+䇺 > beans\-and\-peas\-collectively;
+䇵 > one\-of\-the\-wind\-instruments;
+䇪 > name\-of\-a\-variety\-of\-bamboo;
+䇞 > name\-of\-a\-variety\-of\-bamboo;
+䇛 > name\-of\-a\-variety\-of\-bamboo;
+䇙 > name\-of\-a\-variety\-of\-bamboo;
+䅪 > disease\-of\-the\-private\-part;
+䄰 > forty\-bundles\-of\-rice\-plant;
+䃇 > ink\-for\-imprinting\-of\-seals;
+䀑 > to\-gouge\-out\-an\-eye\-or\-eyes;
+㿀 > unhealthy\-marks\-on\-the\-skin;
+㽎 > the\-profundity\-of\-the\-harem;
+㼠 > a\-crock\-with\-narrow\-opening;
+㺬 > a\-large\-piece\-of\-jade\-stone;
+㺒 > barking\-of\-a\-frightened\-dog;
+㹖 > to\-feed\-animals\-with\-grains;
+㸒 > to\-absurd\-pursuit\-or\-desire;
+㮀 > tool\-to\-clear\-out\-the\-water;
+㭕 > a\-board\-for\-carrying\-things;
+㩛 > to\-roll\-round\-with\-the\-hand;
+㩆 > to\-be\-in\-full\-possession\-of;
+㨫 > to\-be\-in\-full\-possession\-of;
+崙 > kunlun\-mountains\-in\-jiangsu;
+㧕 > to\-feel\-or\-touch\-with\-hands;
+㧂 > a\-cave\-a\-hold\-in\-the\-ground;
+㦐 > a\-straightforward\-character;
+㥴 > do\-not\-care\-about\-something;
+駱 > white\-horse\-with\-black\-mane;
+㢬 > a\-bow\-stretched\-to\-the\-full;
+㡵 > roof\-of\-the\-house\-connected;
+㠟 > a\-mountain\-in\-ancient\-times;
+㛽 > to\-walk\-slowly\-like\-a\-woman;
+㛮 > wife\-of\-one''s\-elder\-brother;
+㓈 > sound\-of\-flying\-or\-speeding;
+㒫 > choked\-and\-unable\-to\-breath;
+㒖 > the\-root\-stock\-of\-the\-lotus;
+畦 > sections\-in\-vegetable\-farm;
+町 > raised\-path\-between\-fields;
+囁 > move\-lips\-as\-when\-speaking;
+伦 > normal\-human\-relationships;
+嘛 > final\-exclamatory\-particle;
+萨 > buddhist\-gods\-or\-immortals;
+桐 > name\-applied\-various\-trees;
+蒂 > peduncle\-or\-stem\-of\-plants;
+紺 > dark\-blue\-or\-reddish\-color;
+棵 > numerary\-adjunct\-for\-trees;
+株 > numerary\-adjunct\-for\-trees;
+哉 > final\-exclamatory\-particle;
+憋 > to\-suppress\-inner\-feelings;
+孜 > be\-as\-diligent\-as\-possible;
+粱 > better\-varieties\-of\-millet;
+峒 > mountain\-in\-gansu\-province;
+榨 > to\-press\-or\-extract\-juices;
+嗫 > move\-lips\-as\-when\-speaking;
+鄱 > county\-and\-lake\-in\-jiangxi;
+菠 > spinach\-and\-similar\-greens;
+淞 > name\-of\-a\-river\-in\-jiangsu;
+淄 > river\-in\-shandong\-province;
+菏 > river\-in\-shandong\-province;
+悱 > to\-be\-desirous\-of\-speaking;
+漯 > river\-in\-northern\-shandong;
+蕙 > species\-of\-fragrant\-orchid;
+滁 > district\-in\-anhui\-province;
+狁 > a\-tribe\-of\-scythian\-nomads;
+酢 > toast\-one''s\-host\-with\-wine;
+衿 > collar\-or\-lapel\-of\-garment;
+嶝 > path\-leading\-up\-a\-mountain;
+旃 > silk\-banner\-with\-bent\-pole;
+齑 > break\-or\-smash\-into\-pieces;
+绀 > dark\-blue\-or\-reddish\-color;
+脘 > internal\-cavity\-of\-stomach;
+镒 > measure\-of\-weight\-for\-gold;
+眭 > evil\-look\-of\-deep\-set\-eyes;
+锖 > the\-color\-of\-the\-a\-mineral;
+邙 > mountain\-in\-henan\-province;
+塍 > raised\-path\-between\-fields;
+敫 > ancient\-musical\-instrument;
+泺 > river\-in\-shandong\-province;
+萑 > grass\-used\-for\-making\-mats;
+觯 > wine\-goblet\-made\-from\-horn;
+舣 > to\-moor\-a\-boat\-to\-the\-bank;
+齏 > break\-or\-smash\-into\-pieces;
+馵 > horse\-with\-white\-back\-legs;
+飣 > display\-food\-for\-show\-only;
+韲 > break\-or\-smash\-into\-pieces;
+闒 > upper\-story\-door\-or\-window;
+鎰 > measure\-of\-weight\-for\-gold;
+銁 > a\-weight\-of\-thirty\-cattics;
+醊 > to\-pour\-wine\-in\-a\-libation;
+郿 > county\-in\-shaanxi\-province;
+郳 > state\-in\-shandong\-province;
+郠 > place\-in\-shandong\-province;
+郚 > towns\-in\-shandong\-province;
+郕 > state\-in\-shandong\-province;
+郈 > place\-in\-shandong\-province;
+邠 > county\-in\-shaanxi\-province;
+輤 > a\-pall\-to\-cover\-the\-hearse;
+踒 > to\-slip\-and\-sprain\-a\-blimb;
+觶 > wine\-goblet\-made\-from\-horn;
+覐 > a\-sleep\-to\-realize\-to\-feel;
+虡 > support\-structure\-for\-bell;
+薾 > luxuriant\-growth\-of\-flower;
+蔕 > peduncle\-or\-stem\-of\-plants;
+茈 > a\-plant\-yielding\-a\-red\-dye;
+艤 > to\-moor\-a\-boat\-to\-the\-bank;
+膆 > the\-corp\-of\-a\-bird\-or\-fowl;
+罭 > drag\-net\-made\-of\-fine\-mesh;
+罏 > earthen\-stand\-for\-wine\-jug;
+罍 > large\-earthenware\-wine\-jar;
+繸 > hem\-or\-border\-of\-a\-garment;
+篟 > luxuriant\-growth\-of\-bamboo;
+窆 > to\-put\-a\-coffin\-in\-a\-grave;
+祲 > ominous\-or\-sinister\-spirit;
+癕 > loss\-of\-the\-sense\-of\-smell;
+畷 > raised\-path\-between\-fields;
+甼 > raised\-path\-between\-fields;
+璈 > ancient\-musical\-instrument;
+珛 > quickly\-deteriorating\-jade;
+濼 > river\-in\-shandong\-province;
+澷 > water\-overflowing\-diffused;
+渮 > river\-in\-shandong\-province;
+毩 > a\-leather\-ball\-for\-kicking;
+榃 > raised\-path\-between\-fields;
+揹 > carry\-things\-on\-one''s\-back;
+揁 > sound\-of\-setting\-up\-a\-koto;
+峝 > mountain\-in\-gansu\-province;
+媧 > mythological\-snail\-goddess;
+囉 > exclamatory\-final\-particle;
+嘷 > the\-roaring\-of\-wild\-beasts;
+嘐 > final\-exclamatory\-particle;
+剞 > carving\-or\-engraving\-knife;
+冏 > abutilon\-avicennae\-\(plant\);
+倫 > normal\-human\-relationships;
+乫 > used\-in\-korean\-place\-names;
+䵆 > grains\-from\-the\-distillery;
+䴿 > grains\-from\-the\-distillery;
+䲯 > a\-kind\-of\-black\-small\-bird;
+䯓 > the\-head\-bone\-of\-livestock;
+䮶 > flock\-of\-horses\-stampeding;
+䮣 > a\-yellow\-with\-a\-white\-tail;
+䬱 > coarse\-grains\-such\-as\-corn;
+䩲 > a\-tool\-used\-to\-cut\-leather;
+䩚 > to\-mend\-the\-soles\-of\-shoes;
+䩘 > to\-mend\-the\-soles\-of\-shoes;
+䡦 > the\-empty\-space\-of\-a\-wheel;
+䠉 > to\-run\-away\-or\-escape\-from;
+䞑 > a\-red\-swelling\-of\-the\-skin;
+䛯 > the\-reasonable\-of\-speeking;
+䖅 > name\-of\-a\-variety\-of\-grass;
+䕿 > name\-of\-a\-variety\-of\-grass;
+䕼 > name\-of\-a\-variety\-of\-grass;
+䕶 > name\-of\-a\-variety\-of\-grass;
+䕵 > name\-of\-a\-variety\-of\-grass;
+䕳 > name\-of\-a\-variety\-of\-grass;
+䕱 > name\-of\-a\-variety\-of\-grass;
+䕭 > name\-of\-a\-variety\-of\-grass;
+䕛 > name\-of\-a\-variety\-of\-grass;
+䕗 > name\-of\-a\-variety\-of\-grass;
+䕕 > name\-of\-a\-variety\-of\-grass;
+䕔 > name\-of\-a\-variety\-of\-grass;
+䕓 > name\-of\-a\-variety\-of\-grass;
+䕒 > name\-of\-a\-variety\-of\-grass;
+䕍 > name\-of\-a\-variety\-of\-grass;
+䕊 > name\-of\-a\-variety\-of\-grass;
+䕈 > name\-of\-a\-variety\-of\-grass;
+䕇 > name\-of\-a\-variety\-of\-grass;
+䕅 > name\-of\-a\-variety\-of\-grass;
+䕀 > name\-of\-a\-variety\-of\-grass;
+䔻 > name\-of\-a\-variety\-of\-grass;
+䔸 > name\-of\-a\-variety\-of\-grass;
+䔶 > name\-of\-a\-variety\-of\-grass;
+䔴 > name\-of\-a\-variety\-of\-grass;
+䔲 > name\-of\-a\-variety\-of\-grass;
+䔱 > name\-of\-a\-variety\-of\-grass;
+䔰 > name\-of\-a\-variety\-of\-grass;
+䔮 > name\-of\-a\-variety\-of\-grass;
+䔭 > name\-of\-a\-variety\-of\-grass;
+䔪 > name\-of\-a\-variety\-of\-grass;
+䔡 > name\-of\-a\-variety\-of\-grass;
+䔝 > name\-of\-a\-variety\-of\-grass;
+䔙 > name\-of\-a\-variety\-of\-grass;
+䔔 > name\-of\-a\-variety\-of\-grass;
+䔒 > name\-of\-a\-variety\-of\-grass;
+䔎 > name\-of\-a\-variety\-of\-grass;
+䔌 > name\-of\-a\-variety\-of\-grass;
+䔅 > name\-of\-a\-variety\-of\-trees;
+䔄 > name\-of\-a\-variety\-of\-grass;
+䔁 > name\-of\-a\-variety\-of\-grass;
+䓽 > name\-of\-a\-variety\-of\-grass;
+䓼 > name\-of\-a\-variety\-of\-grass;
+䓺 > name\-of\-a\-variety\-of\-grass;
+䓳 > name\-of\-a\-variety\-of\-grass;
+䓣 > name\-of\-a\-variety\-of\-grass;
+䓢 > name\-of\-a\-variety\-of\-grass;
+䓟 > name\-of\-a\-variety\-of\-grass;
+䓓 > name\-of\-a\-variety\-of\-grass;
+䓐 > name\-of\-a\-variety\-of\-grass;
+䓎 > name\-of\-a\-variety\-of\-grass;
+䓊 > name\-of\-a\-variety\-of\-grass;
+䓉 > name\-of\-a\-variety\-of\-grass;
+䓂 > name\-of\-a\-variety\-of\-grass;
+䒵 > name\-of\-a\-variety\-of\-grass;
+䒴 > name\-of\-a\-variety\-of\-grass;
+䒱 > twigs\-of\-hemp\-used\-fo\-fuel;
+䒪 > name\-of\-a\-variety\-of\-grass;
+䒩 > name\-of\-a\-variety\-of\-grass;
+䒤 > name\-of\-a\-variety\-of\-grass;
+䒡 > name\-of\-a\-variety\-of\-grass;
+䒟 > name\-of\-a\-variety\-of\-grass;
+䒞 > name\-of\-a\-variety\-of\-grass;
+䒜 > name\-of\-a\-variety\-of\-grass;
+䒛 > name\-of\-a\-variety\-of\-grass;
+䒚 > name\-of\-a\-variety\-of\-grass;
+䒔 > name\-of\-a\-variety\-of\-grass;
+䎷 > an\-old\-man\-with\-white\-hair;
+䌠 > hold\-on\-to\-one''s\-own\-views;
+䋀 > shoes\-made\-of\-hemp\-or\-hair;
+䊮 > name\-of\-a\-variety\-of\-grain;
+䊬 > name\-of\-a\-variety\-of\-grain;
+䉂 > a\-basket\-for\-earth\-or\-soil;
+䇖 > rope\-made\-of\-bamboo\-strips;
+䆀 > to\-corrupt\-or\-be\-corrupted;
+䅾 > starting\-to\-put\-forth\-ears;
+䅬 > small\-bundle\-of\-rice\-plant;
+䁎 > to\-make\-a\-close\-inspection;
+䀊 > a\-kind\-of\-water\-containers;
+㼩 > concave\-channels\-of\-tiling;
+㺠 > a\-black\-ape\-with\-long\-tail;
+㺕 > the\-fighting\-sound\-of\-dogs;
+㹚 > sound\-of\-calling\-to\-a\-calf;
+㹙 > sound\-of\-calling\-to\-a\-calf;
+㷶 > to\-dry\-or\-warm\-near\-a\-fire;
+㷃 > fire\-burns\-for\-a\-long\-time;
+㴔 > the\-noise\-of\-flowing\-water;
+㴋 > deep\-and\-clear\-\-to\-urinate;
+㳧 > the\-water\-flowing\-from\-\.\.\.;
+㱽 > to\-hit\-or\-to\-strikeheavily;
+㱻 > diseases\-of\-dumb\-creatures;
+㱡 > the\-soul\-out\-of\-one''s\-body;
+㱔 > a\-small\-quantity\-or\-number;
+㯟 > foot\-of\-a\-hill\-or\-mountain;
+㭮 > a\-kind\-of\-liquor\-container;
+兀 > duplicate\-of\-big\-five\-a461;
+倫 > normal\-human\-relationships;
+阮 > ancient\-musical\-instrument;
+㦃 > perfect\-personal\-character;
+㥱 > to\-be\-desirous\-of\-speaking;
+㥍 > to\-bear\-jealous\-hatred\-for;
+㤬 > full\-of\-anger\-and\-vexation;
+㤎 > a\-model\-or\-typical\-example;
+㤄 > raging\-animosity\-or\-hatred;
+㣧 > the\-succession\-in\-a\-family;
+㣣 > to\-walk\-in\-an\-unsteady\-way;
+㢸 > device\-for\-regulating\-bows;
+㢶 > device\-for\-regulating\-bows;
+㢒 > an\-almost\-collapsing\-house;
+㜪 > name\-of\-a\-family\-or\-a\-clan;
+㜕 > relatives\-through\-marriage;
+㛲 > the\-hair\-on\-the\-human\-head;
+㚿 > a\-goddess''s\-name\-in\-legend;
+㙡 > a\-kind\-of\-eatable\-mushroom;
+㘹 > to\-spread\-soil\-on\-the\-road;
+㘤 > circle\-of\-the\-moving\-water;
+㖨 > indistinct\-nasal\-utterance;
+㒽 > a\-kind\-of\-cap\-for\-children;
+㐖 > a\-translated\-name\-of\-india;
+届 > numerary\-adjunct\-for\-time;
+屆 > numerary\-adjunct\-for\-time;
+谁 > who\?\-whom\?\-whose\?\-anyone\?;
+誰 > who\?\-whom\?\-whose\?\-anyone\?;
+阿 > prefix\-for\-people''s\-names;
+莢 > pods\-of\-leguminous\-plants;
+狄 > tribe\-from\-northern\-china;
+繰 > to\-reel\-silk\-from\-cocoons;
+漓 > river\-in\-guangxi\-province;
+咋 > question\-forming\-particle;
+麟 > female\-of\-chinese\-unicorn;
+渭 > name\-of\-a\-river\-in\-shanxi;
+芜 > luxurious\-growth\-of\-weeds;
+绎 > to\-unravel\-or\-unreel\-silk;
+璐 > beautiful\-variety\-of\-jade;
+韶 > music\-of\-the\-emperor\-shun;
+鬟 > dress\-hair\-in\-coiled\-knot;
+罂 > long\-necked\-jar\-or\-bottle;
+靳 > strap\-on\-a\-horse''s\-breast;
+淦 > river\-in\-jiangxi\-province;
+搡 > to\-push\-over\-or\-push\-back;
+艮 > seventh\-of\-eight\-diagrams;
+湟 > river\-in\-qinghai\-province;
+泸 > river\-in\-jiangxi\-province;
+荚 > pods\-of\-leguminous\-plants;
+猱 > a\-monkey\-with\-yellow\-hair;
+涪 > river\-in\-sichuan\-province;
+亳 > name\-of\-district\-in\-anhui;
+蔺 > rush\-used\-for\-making\-mats;
+琬 > the\-virtue\-of\-a\-gentleman;
+沩 > name\-of\-a\-river\-in\-shanxi;
+猗 > exclamation\-of\-admiration;
+鼙 > drum\-carried\-on\-horseback;
+蕲 > variety\-of\-artemisia\-seek;
+瓞 > young\-melons\-just\-forming;
+辁 > cart\-wheel\-with\-no\-spokes;
+酆 > name\-of\-zhou\-period\-state;
+麐 > female\-of\-chinese\-unicorn;
+鰼 > the\-weather\-or\-dojo\-loach;
+韔 > a\-wrapper\-or\-case\-for\-bow;
+陗 > a\-steep\-hill\.\-precipitous;
+鏾 > the\-trigger\-of\-a\-crossbow;
+鄠 > county\-in\-shanxi\-province;
+鄜 > county\-in\-shanxi\-province;
+鄎 > a\-place\-in\-henan\-province;
+郃 > county\-in\-shanxi\-province;
+輇 > cart\-wheel\-with\-no\-spokes;
+觷 > to\-process\-or\-carve\-horns;
+蝰 > vipera\-russelii\-siamensis;
+蘄 > variety\-of\-artemisia\-seek;
+蕪 > luxurious\-growth\-of\-weeds;
+葶 > draba\-nemerosa\-bebe\-carpa;
+芔 > a\-general\-term\-for\-plants;
+膥 > eggs\-of\-birds\-or\-reptiles;
+罌 > long\-necked\-jar\-or\-bottle;
+罃 > long\-necked\-jar\-or\-bottle;
+纑 > to\-soften\-hemp\-by\-boiling;
+繹 > to\-unravel\-or\-unreel\-silk;
+籩 > bamboo\-container\-for\-food;
+籝 > a\-tube\-to\-hold\-chopsticks;
+笾 > bamboo\-container\-for\-food;
+笎 > bamboo\-with\-black\-patches;
+禘 > imperial\-ancestor\-worship;
+礄 > place\-in\-sichuan\-province;
+璪 > pearl\-pendants\-on\-coronet;
+瑽 > tinkling\-of\-jade\-pendants;
+猲 > smoke\-or\-flames\-from\-fire;
+瀘 > river\-in\-jiangxi\-province;
+溎 > river\-in\-guangxi\-province;
+溈 > name\-of\-a\-river\-in\-shanxi;
+泜 > a\-river\-in\-hebei\-province;
+泒 > a\-river\-in\-hubei\-province;
+汭 > confluence\-of\-two\-streams;
+櫽 > shape\-wood\-by\-use\-of\-heat;
+晬 > first\-birthday\-of\-a\-child;
+悊 > wise\.\-to\-know\-intuitively;
+彍 > to\-draw\-a\-bow\-to\-the\-full;
+庅 > an\-interrogative\-particle;
+嬀 > name\-of\-a\-river\-in\-shanxi;
+䵵 > yellowish\-black\-and\-white;
+䵫 > light\-red\-yellowish\-black;
+䴛 > to\-make\-decoction\-of\-salt;
+䳷 > a\-second\-name\-for\-chicken;
+䳆 > a\-kind\-of\-species\-of\-myna;
+䰂 > a\-coiffure\-with\-a\-topknot;
+䯿 > a\-coiffure\-with\-a\-topknot;
+䯼 > a\-coiffure\-with\-a\-topknot;
+䯴 > a\-coiffure\-with\-a\-topknot;
+䯲 > a\-coiffure\-with\-a\-topknot;
+䮕 > horse\-with\-white\-forehead;
+䭨 > wine\-poured\-in\-a\-libation;
+䬽 > wine\-poured\-in\-a\-libation;
+䫀 > the\-lower\-end\-of\-the\-jaws;
+䩨 > a\-wrapper\-or\-case\-for\-bow;
+䩝 > to\-tan\-and\-soften\-leather;
+䤂 > a\-second\-name\-for\-vinegar;
+䣴 > to\-lose\-temper\-when\-drunk;
+䣆 > name\-of\-a\-county\-in\-gaomi;
+䢲 > to\-go\-all\-the\-way\-forward;
+䢮 > rapid\-marching\-or\-running;
+䢡 > to\-stamp\-the\-foot\-forward;
+䡹 > the\-low\-rear\-of\-a\-chariot;
+䡯 > sound\-of\-moving\-carriages;
+䡫 > sound\-of\-moving\-carriages;
+䡡 > to\-get\-up\-into\-a\-carriage;
+䡘 > sound\-of\-moving\-carriages;
+䡒 > sound\-of\-moving\-carriages;
+䠕 > rapid\-marching\-or\-running;
+䘸 > the\-lower\-front\-of\-a\-robe;
+䘒 > boy''s\-reproductive\-organs;
+䕄 > meat\-in\-the\-form\-of\-paste;
+䓋 > elm\-seeds\-\-\-\-used\-as\-food;
+䑢 > a\-knife\-shaped\-small\-boat;
+䑈 > meat\-to\-offer\-for\-worship;
+䍯 > gaot\-with\-different\-horns;
+䍢 > netted\-veined\-window\-sill;
+䋟 > the\-weight\-on\-a\-steelyard;
+䊶 > a\-rope\-for\-leading\-cattle;
+䉗 > a\-receptacle\-or\-container;
+䄸 > grains\-producing\-no\-fruit;
+䄒 > ripening\-of\-paddy\-or\-rice;
+䃁 > uneven\-or\-rugged\-terrains;
+䁔 > big\-eyes\-protuberant\-eyes;
+㿰 > durable\-and\-solid\-leather;
+㿂 > obstraction\-of\-the\-bowels;
+㾵 > a\-dark\-colored\-birth\-mark;
+㾜 > weak\-breath\-of\-a\-sick\-man;
+㽾 > a\-kind\-of\-woman''s\-disease;
+㻏 > tinkling\-of\-jade\-pendants;
+㺀 > a\-monkey\-with\-yellow\-hair;
+㸲 > a\-kind\-of\-mountain\-cattle;
+㷯 > smoke\-and\-dust\-everywhere;
+㶺 > the\-light\-or\-glow\-of\-fire;
+㶚 > name\-of\-a\-river\-in\-shanxi;
+㵽 > the\-strength\-of\-a\-current;
+㱥 > the\-evil\-spirits\-come\-out;
+㰦 > to\-breath\-with\-mouth\-open;
+㰔 > a\-kind\-of\-edible\-mushroom;
+㰎 > a\-wooden\-pestle\-or\-rammer;
+㭛 > a\-kind\-of\-climbing\-plants;
+㩠 > a\-fierce\-or\-bloody\-battle;
+麟 > female\-of\-chinese\-unicorn;
+㦛 > to\-walk\-in\-a\-composed\-way;
+㠝 > lofty\-and\-steep\-mountains;
+㠐 > high\-and\-pointed\-mountain;
+㞚 > to\-pile\-up\-layer\-by\-layer;
+㜯 > a\-word\-to\-designate\-woman;
+㜮 > to\-go\-beyond\-normal\-limit;
+㚓 > tie\-beams\-of\-a\-small\-boat;
+㘌 > to\-laugh\-without\-stopping;
+㗦 > a\-loud\-and\-confused\-noise;
+㗚 > vexingly\-verbose\-or\-wordy;
+㗕 > the\-crowing\-of\-a\-pheasant;
+㖄 > sound\-of\-calling\-chickens;
+㕚 > claws\-of\-birds\-or\-animals;
+㐳 > high\-and\-level\-on\-the\-top;
+蜀 > name\-of\-an\-ancient\-state;
+洛 > river\-in\-shanxi\-province;
+叔 > father''s\-younger\-brother;
+絹 > kind\-of\-thick\-stiff\-silk;
+罩 > basket\-for\-catching\-fish;
+夷 > ancient\-barbarian\-tribes;
+砰 > sound\-of\-crashing\-stones;
+哎 > interjection\-of\-surprise;
+朔 > first\-day\-of\-lunar\-month;
+揣 > put\-things\-under\-clothes;
+嵋 > omei\-mountain\-in\-sichuan;
+邹 > name\-of\-an\-ancient\-state;
+缉 > to\-sew\-in\-close\-stitches;
+绢 > kind\-of\-thick\-stiff\-silk;
+噶 > used\-in\-transliterations;
+汕 > basket\-for\-catching\-fish;
+掰 > to\-break\-with\-both\-hands;
+霆 > a\-sudden\-peal\-of\-thunder;
+漳 > name\-of\-a\-river\-in\-henan;
+汾 > river\-in\-shanxi\-province;
+巳 > sixth\-of\-twelve\-branches;
+汴 > name\-of\-a\-river\-in\-henan;
+嗝 > cackling\-of\-fowls\-to\-gag;
+姘 > illicit\-sexual\-relations;
+霏 > falling\-of\-snow\-and\-rain;
+郸 > county\-in\-hebei\-province;
+呦 > the\-bleating\-of\-the\-deer;
+掮 > to\-bear\-on\-the\-shoulders;
+莆 > a\-kind\-of\-legendary\-tree;
+阡 > footpaths\-between\-fields;
+鸪 > species\-of\-taiwan\-pigeon;
+哔 > used\-in\-transliterations;
+氐 > name\-of\-an\-ancient\-tribe;
+呤 > purine\-in\-chem\.\-compound;
+嬗 > succession\-to\-the\-throne;
+沣 > river\-in\-shanxi\-province;
+觏 > meet\-or\-see\-unexpectedly;
+濮 > county\-in\-henan\-province;
+郴 > county\-in\-hunan\-province;
+轾 > low\-rear\-portion\-of\-cart;
+稞 > grain\-ready\-for\-grinding;
+灞 > river\-in\-shanxi\-province;
+郧 > county\-in\-hubei\-province;
+蹼 > webbed\-feet\-of\-waterfowl;
+甑 > boiler\-for\-steaming\-rice;
+妗 > wife\-of\-mother''s\-brother;
+浠 > name\-of\-a\-river\-in\-hubei;
+鳔 > swimming\-bladder\-of\-fish;
+篌 > ancient\-music\-instrument;
+秕 > empty\-grain\-or\-rice\-husk;
+琚 > ornamental\-gems\-for\-belt;
+鲵 > cryptobranchus\-japonicus;
+艨 > long\-and\-narrow\-war\-boat;
+涑 > river\-in\-shansi\-province;
+郏 > county\-in\-henan\-province;
+雩 > offer\-sacrifice\-for\-rain;
+佾 > a\-row\-or\-file\-of\-dancers;
+缂 > the\-woof\-of\-a\-woven\-item;
+艴 > the\-countenance\-changing;
+滏 > name\-of\-a\-river\-in\-hebei;
+郾 > county\-in\-henan\-province;
+鷞 > the\-turquoise\-kingfisher;
+鵁 > mycticorax\-prasinosceles;
+鴣 > species\-of\-taiwan\-pigeon;
+鰾 > swimming\-bladder\-of\-fish;
+鯢 > cryptobranchus\-japonicus;
+鮰 > a\-small\-kind\-of\-sturgeon;
+髠 > shave\-head\-as\-punishment;
+騕 > name\-of\-a\-fabulous\-horse;
+韂 > a\-saddle\-flap\.\-trappings;
+陴 > a\-parapet\-on\-a\-city\-wall;
+闤 > wall\-around\-market\-place;
+鄲 > county\-in\-hebei\-province;
+鄗 > county\-in\-hebei\-province;
+鄖 > county\-in\-hubei\-province;
+鄒 > name\-of\-an\-ancient\-state;
+郟 > county\-in\-henan\-province;
+輊 > low\-rear\-portion\-of\-cart;
+贑 > \<abbrv\>\-jiangxi\-province;
+訡 > to\-chant\-to\-moan\-to\-sigh;
+覯 > meet\-or\-see\-unexpectedly;
+蛁 > pomponia\-maculatiocollis;
+蘀 > falling\-leaves\-and\-barks;
+藺 > rush\-used\-in\-making\-mats;
+菴 > small\-buddhist\-monastery;
+莔 > fritillaria\-verticillata;
+茼 > chrysanthemum\-coronarium;
+艥 > an\-oar\-or\-paddle\.\-to\-row;
+膙 > callous\-skin\-on\-the\-feet;
+腜 > quickening\-of\-the\-foetus;
+肳 > the\-corners\-of\-the\-mouth;
+翛 > look\-of\-rumpled\-feathers;
+罝 > net\-for\-catching\-rabbits;
+緝 > to\-sew\-in\-close\-stitches;
+緙 > the\-woof\-of\-a\-woven\-item;
+緌 > tassels\-hanging\-from\-hat;
+筸 > name\-of\-a\-place\-in\-honan;
+稙 > grain\-ready\-for\-grinding;
+璠 > a\-piece\-of\-precious\-jade;
+玶 > name\-of\-one\-kind\-of\-jade;
+獞 > name\-of\-a\-variety\-of\-dog;
+猔 > name\-of\-an\-ancient\-tribe;
+灨 > the\-river\-gan\-in\-jiangxi;
+灃 > river\-in\-shanxi\-province;
+濲 > name\-of\-a\-river\-in\-hunan;
+湋 > river\-in\-shanxi\-province;
+洧 > name\-of\-a\-river\-in\-honan;
+樧 > zanthoxylum\-ailanthoides;
+榤 > perch\-for\-fowls\-roost\-on;
+栂 > a\-kind\-of\-evergreen\-tree;
+旡 > choke\-on\-something\-eaten;
+撋 > to\-rub\-between\-the\-hands;
+惌 > to\-bear\-a\-grudge\-against;
+崶 > name\-of\-a\-legendary\-hill;
+崁 > a\-place\-in\-taiwan\-tainan;
+尞 > fuel\-used\-for\-sacrifices;
+姺 > name\-of\-an\-ancient\-state;
+奞 > the\-stride\-made\-by\-a\-man;
+夗 > to\-turn\-over\-when\-asleep;
+嗶 > used\-in\-transliterations;
+凜 > shiver\-with\-cold\-or\-fear;
+僰 > ancient\-aboriginal\-tribe;
+亃 > name\-of\-a\-kind\-of\-animal;
+乺 > painting\-tool\-place\-name;
+乶 > korean\-place\-name\-pholha;
+䵂 > to\-grind\-wheat\-to\-powder;
+䲳 > birds\-flying\-up\-and\-down;
+䲛 > an\-ancient\-name\-for\-tuna;
+䲄 > a\-kind\-of\-fiish\-in\-ocean;
+䰍 > a\-kind\-of\-dark\-red\-paint;
+䰆 > beautiful\-and\-hairy\-mane;
+䯖 > the\-muscles\-of\-the\-thigh;
+䬳 > cakes\-made\-of\-rice\-flour;
+䫯 > to\-take\-a\-casual\-look\-at;
+䪀 > known\-together\-as\-saddle;
+䩪 > known\-together\-as\-saddle;
+䨒 > sound\-of\-the\-water\-drops;
+䦨 > a\-door\-curtain\-or\-screen;
+䤯 > container\-for\-thick\-soup;
+䣍 > name\-of\-an\-ancient\-state;
+䣅 > name\-of\-an\-ancient\-state;
+䡍 > the\-linch\-pin\-of\-a\-sheel;
+䟗 > to\-stand\-for\-a\-long\-time;
+䟃 > to\-move\-or\-march\-swiftly;
+䚶 > to\-scold\-in\-a\-loud\-voice;
+䙜 > legendary\-mountain\-deity;
+䙈 > a\-loose\-garment\-or\-cloak;
+䙇 > clothes\-of\-coarse\-fabric;
+䗂 > diemyctylus\-pyrrhogaster;
+䔣 > a\-tribe\-in\-ancient\-times;
+䓴 > edible\-fungus\-from\-trees;
+䑎 > soup\-of\-pig''s\-intestines;
+䐻 > big\-pieces\-of\-dried\-meat;
+䐹 > perserved\-and\-dried\-meat;
+䐰 > to\-offer\-food\-as\-tribute;
+䐂 > fat\-of\-animals\-or\-plants;
+䏦 > fat\-of\-animals\-or\-plants;
+䎵 > to\-look\-straight\-forward;
+䊱 > cakes\-made\-of\-rice\-flour;
+䊐 > fluffy\-stuffed\-dumplings;
+䊍 > thick\-congee\-or\-porridge;
+䇏 > to\-pile\-one\-upon\-another;
+䄜 > happiness\-and\-well\-being;
+䄖 > used\-in\-name\-of\-a\-person;
+䃢 > name\-of\-a\-mountain\-lofty;
+䁇 > to\-look\-for\-a\-short\-time;
+䀴 > to\-look\-straight\-forward;
+䀫 > narrow\-and\-dim\-eye\-sight;
+䀪 > birds\-flying\-up\-and\-down;
+㿺 > jutting\-on\-the\-epidermis;
+㽒 > the\-children\-of\-a\-sister;
+㼿 > the\-brick\-wall\-of\-a\-well;
+㼛 > long\-necked\-wine\-vessels;
+㻪 > a\-kind\-of\-jade\-fine\-jade;
+㶅 > dried\-up\-mountain\-creeks;
+㵢 > a\-marsh\-in\-ancient\-times;
+㴰 > a\-river\-in\-ancient\-times;
+㴬 > a\-river\-in\-ancient\-times;
+㳥 > a\-river\-in\-ancient\-times;
+㳝 > a\-river\-in\-ancient\-times;
+㳏 > a\-river\-in\-ancient\-times;
+㳍 > a\-place\-in\-ancient\-times;
+㳋 > a\-river\-in\-ancient\-times;
+㳊 > the\-flowing\-of\-the\-water;
+㳀 > a\-river\-in\-ancient\-times;
+㲊 > to\-understand\-thoroughly;
+㰾 > songs\-of\-the\-people\-of\-楚;
+㰽 > to\-exert\-oneself\-to\-yell;
+㯫 > a\-wattle\-or\-bamboo\-fence;
+㮦 > branches\-growing\-upwards;
+㪛 > to\-pound\-rocks\-to\-pieces;
+㪙 > to\-go\-to\-the\-very\-source;
+㩭 > to\-disturb\-or\-to\-agitate;
+藺 > rush\-used\-in\-making\-mats;
+凜 > shiver\-with\-cold\-or\-fear;
+洛 > river\-in\-shanxi\-province;
+㡪 > the\-varnish\-on\-the\-floor;
+㡧 > to\-stretch\-open\-painting;
+㠇 > name\-of\-a\-mountain\-ridge;
+㜿 > name\-of\-a\-fish\-in\-legend;
+㚝 > the\-stride\-made\-by\-a\-man;
+㗩 > sound\-of\-endure\-coldness;
+㗧 > to\-scold\-with\-loud\-voice;
+㗌 > to\-scold\-with\-loud\-voice;
+㗀 > the\-bleating\-of\-the\-deer;
+㓡 > the\-middle\-part\-of\-a\-bow;
+㐨 > a\-kind\-of\-fish\-in\-legend;
+瞥 > take\-fleeting\-glance\-at;
+州 > administrative\-division;
+吧 > emphatic\-final\-particle;
+某 > certain\-thing\-or\-person;
+票 > slip\-of\-paper\-or\-bamboo;
+耶 > used\-in\-transliteration;
+厘 > thousandth\-part\-of\-tael;
+彭 > name\-of\-ancient\-country;
+肴 > cooked\-or\-prepared\-meat;
+俎 > chopping\-board\-or\-block;
+淮 > river\-in\-anhui\-province;
+郡 > administrative\-division;
+哦 > oh\?\-really\?\-is\-that\-so\?;
+锤 > balance\-weight\-on\-scale;
+仞 > ancient\-unit\-of\-measure;
+芭 > plantain\-or\-banana\-palm;
+磊 > pile\-of\-rocks\-or\-stones;
+呸 > expression\-of\-reprimand;
+拷 > torture\-and\-interrogate;
+抿 > pucker\-up\-lips\-in\-smile;
+卉 > general\-term\-for\-plants;
+髻 > hair\-rolled\-up\-in\-a\-bun;
+裆 > crotch\-or\-seat\-of\-pants;
+蘑 > type\-of\-edible\-mushroom;
+咿 > descriptive\-of\-creaking;
+篾 > bamboo\-splints\-or\-slats;
+淇 > river\-in\-henan\-province;
+蓑 > rain\-coat\-made\-of\-straw;
+檬 > type\-of\-locust\-oracacia;
+淙 > gurgling\-sound\-of\-water;
+殓 > dress\-corpse\-for\-burial;
+琥 > jewel\-in\-shape\-of\-tiger;
+潞 > river\-in\-northern\-china;
+醍 > essential\-oil\-of\-butter;
+妯 > wives\-of\-one''s\-brothers;
+帏 > curtain\-that\-forms\-wall;
+瓒 > ceremonial\-libation\-cup;
+洹 > river\-in\-henan\-province;
+瑗 > large\-ring\-of\-fine\-jade;
+涞 > river\-in\-hebei\-province;
+爻 > diagrams\-for\-divination;
+锟 > ancient\-treasured\-sword;
+芗 > fragrant\-smell\-of\-grain;
+楦 > a\-last\-for\-making\-shoes;
+舁 > carry\-on\-one''s\-shoulder;
+滠 > river\-in\-hubei\-province;
+鼏 > cover\-of\-tripod\-caldron;
+黰 > young\-girl''s\-hair\-style;
+鬂 > the\-hair\-on\-the\-temples;
+駮 > a\-kind\-of\-fierce\-animal;
+錘 > balance\-weight\-on\-scale;
+錕 > ancient\-treasured\-sword;
+鄾 > place\-in\-hubei\-province;
+鄬 > place\-in\-henan\-province;
+鄤 > place\-in\-henan\-province;
+鄘 > state\-in\-henan\-province;
+鄏 > place\-in\-henan\-province;
+鄀 > state\-in\-henan\-province;
+郰 > birthplace\-of\-confucius;
+邧 > town\-in\-shanxi\-province;
+邘 > state\-in\-henan\-province;
+襠 > crotch\-or\-seat\-of\-pants;
+蚻 > small\-species\-of\-cicada;
+薌 > fragrant\-smell\-of\-grain;
+蒱 > gambling\-game\-with\-dice;
+葧 > heleocharis\-plantaginea;
+舲 > small\-boat\-with\-windows;
+羫 > the\-skeleton\-of\-a\-sheep;
+罽 > a\-kind\-of\-woolen\-fabric;
+粺 > polished\-rice\-or\-millet;
+篧 > creel\-for\-trapping\-fish;
+篛 > cuticle\-of\-bamboo\-plant;
+祔 > worship\-one''s\-ancestors;
+睖 > to\-stare\-straight\-ahead;
+眢 > eyes\-without\-brightness;
+畾 > fields\-divided\-by\-dikes;
+瓚 > ceremonial\-libation\-cup;
+璲 > pendant\-girdle\-ornament;
+瑿 > a\-black\-stone\-like\-jade;
+瑯 > kind\-of\-white\-cornelian;
+瑢 > gem\-ornaments\-for\-belts;
+珶 > white\-jade\-worn\-on\-belt;
+玕 > inferior\-variety\-of\-gem;
+猈 > dog\-with\-short\-shinbone;
+灄 > river\-in\-hubei\-province;
+瀼 > river\-in\-henan\-province;
+瀍 > river\-in\-henan\-province;
+濜 > river\-in\-hubei\-province;
+澴 > river\-in\-hubei\-province;
+澉 > to\-wash\-name\-of\-a\-place;
+潖 > name\-of\-a\-certain\-river;
+漷 > river\-in\-hebei\-province;
+漊 > river\-in\-hubei\-province;
+溮 > river\-in\-henan\-province;
+溠 > river\-in\-hubei\-province;
+淶 > river\-in\-hebei\-province;
+涖 > river\-in\-hebei\-province;
+浭 > river\-in\-hebei\-province;
+洺 > river\-in\-hebei\-province;
+洨 > river\-in\-hebei\-province;
+殮 > dress\-corpse\-for\-burial;
+殙 > to\-die\-by\-taking\-poison;
+歁 > unsatisfied\-\(of\-eating\);
+欨 > to\-blow\-or\-breathe\-upon;
+欏 > tree\-the\-horse\-chestnut;
+檇 > wooden\-rammer\-or\-pestle;
+橔 > a\-wooden\-chopping\-block;
+楥 > a\-last\-for\-making\-shoes;
+暼 > take\-fleeting\-glance\-at;
+怸 > cns\-2\-2a40\-is\-different;
+幃 > curtain\-that\-forms\-wall;
+墄 > the\-steps\-of\-a\-stairway;
+啫 > interjection\-of\-warning;
+吚 > used\-to\-represent\-sound;
+匁 > japanese\-unit\-of\-weight;
+仾 > to\-hang\-or\-bow\-the\-head;
+仭 > ancient\-unit\-of\-measure;
+䶝 > growing\-irregular\-teeth;
+䵈 > unsmelted\-hemp\-and\-silk;
+䵀 > coarse\-crumbs\-of\-barley;
+䴑 > a\-legendary\-weired\-bird;
+䴇 > a\-second\-name\-for\-crane;
+䴁 > a\-kind\-of\-rat\-like\-bird;
+䳲 > a\-swarm\-of\-flying\-birds;
+䲴 > a\-kind\-of\-venomous\-bird;
+䱾 > a\-carp\-like\-savory\-fish;
+䰫 > nimble\-and\-active\-ghost;
+䭇 > to\-be\-chocked\-with\-food;
+䭆 > small\-children\-eat\-less;
+䬲 > to\-eat\-to\-the\-half\-full;
+䬪 > a\-kind\-of\-cooked\-noodle;
+䬛 > the\-roaring\-of\-the\-wind;
+䨗 > excessive\-rain\-and\-snow;
+䨅 > small\-birds\-\-\-\-the\-wren;
+䥖 > silver\-of\-gold\-filagree;
+䥏 > unfitted\-for\-each\-other;
+䤥 > agricultural\-implements;
+䢜 > the\-marriage\-of\-a\-woman;
+䡽 > the\-shafts\-of\-a\-vehicle;
+䡺 > the\-end\-of\-an\-axle\-tree;
+䡣 > a\-piece\-of\-curved\-board;
+䠣 > net\-to\-trap\-the\-animals;
+䝈 > a\-big\-and\-strenuous\-pig;
+䚐 > getting\-red\-in\-the\-eyes;
+䚊 > to\-look\-from\-a\-distance;
+䙐 > furs\-and\-linen\-garments;
+䘆 > a\-second\-form\-earthworm;
+䗠 > the\-larva\-of\-mosquitoes;
+䗔 > a\-house\-lizard\-or\-gecko;
+䖱 > large\-shrimp\-in\-the\-sea;
+䔾 > a\-kind\-of\-fragrant\-herb;
+䓱 > a\-kind\-of\-herb\-medicine;
+䒖 > a\-kind\-of\-herb\-medicine;
+䒕 > a\-kind\-of\-herb\-medicine;
+䐤 > dried\-and\-seasoned\-meat;
+䐐 > curved\-part\-of\-the\-knee;
+䏙 > brine\-from\-pickled\-meat;
+䏕 > to\-cook\-food\-thoroughly;
+䎧 > agricultural\-implements;
+䍹 > odor\-of\-a\-sheep\-or\-goat;
+䍙 > nets\-for\-catching\-birds;
+䍘 > a\-general\-term\-for\-nets;
+䍓 > net\-for\-catching\-rabbit;
+䋫 > to\-wind\-round\-the\-ropes;
+䋨 > to\-set\-in\-order\-the\-old;
+䊴 > food\-made\-of\-rice\-flour;
+䊪 > coarse\-rice\-\-\-\-unhulled;
+䉜 > young\-and\-tender\-bamboo;
+䉖 > framework\-of\-a\-carriage;
+䇗 > bamboo\-with\-long\-joints;
+䇑 > a\-standing\-short\-person;
+䆊 > unhusked\-glutinous\-rice;
+䆉 > the\-swing\-of\-rice\-plant;
+䃉 > a\-stone\-resembling\-jade;
+䁌 > to\-see\-for\-a\-short\-time;
+㾀 > to\-be\-weaked\-by\-disease;
+㽺 > to\-be\-weaked\-by\-disease;
+㽸 > diseases\-of\-the\-abdomen;
+㽚 > agricultural\-implements;
+㼧 > tiles\-in\-cylinder\-shape;
+㹲 > a\-frightened\-pig\-or\-dog;
+㹮 > a\-kind\-of\-animal\-\-tapir;
+㹝 > a\-legendary\-wild\-animal;
+㹑 > a\-four\-years\-old\-cattle;
+㹊 > a\-cattle\-of\-white\-color;
+㹆 > the\-coulter\-of\-a\-plough;
+㸋 > meats\-used\-in\-sacrifice;
+㷮 > scorched\-or\-burned\-wood;
+㷫 > fire\-causing\-by\-dryness;
+㶵 > to\-cook\-food\-thoroughly;
+㶒 > the\-current\-of\-a\-stream;
+㴲 > a\-river\-in\-ancient\-time;
+㴑 > to\-trace\-up\-to\-a\-source;
+㴏 > the\-pond\-water\-is\-still;
+㲿 > extensive\-body\-of\-water;
+㲄 > unburnt\-bricks\-or\-tiles;
+㱬 > cannot\-recognize\-people;
+㱕 > the\-marriage\-of\-a\-woman;
+㯙 > the\-buckthorn\-or\-jujube;
+㭾 > to\-cut\-the\-timber\-apart;
+㭃 > the\-large\-rope\-of\-a\-net;
+㭂 > height\-of\-the\-end\-point;
+㬻 > in\-between\-of\-the\-flesh;
+㧯 > a\-bucket\-made\-of\-willow;
+㧥 > to\-nip\-with\-the\-fingers;
+㦽 > with\-elegant\-appearance;
+㦺 > a\-lance\-with\-two\-points;
+㦸 > a\-lance\-with\-two\-points;
+殮 > dress\-corpse\-for\-burial;
+㦇 > a\-peaceful\-or\-easy\-mood;
+磊 > pile\-of\-rocks\-or\-stones;
+㥅 > used\-in\-a\-person''s\-name;
+㤌 > to\-have\-one''s\-heart\-own;
+㣻 > to\-remedy\-by\-punishment;
+㣪 > to\-walk\-with\-slow\-steps;
+㣆 > to\-loose\-the\-bow\-string;
+㢾 > the\-curved\-end\-of\-a\-bow;
+㢵 > powerful\-and\-strong\-bow;
+㡹 > to\-rely\-upon\-each\-other;
+㡒 > a\-calico\-sack\-for\-grain;
+㡏 > to\-cut\-a\-strip\-of\-cloth;
+㞼 > to\-respectfully\-receive;
+㚬 > a\-lady\-start\-to\-doll\-up;
+㚖 > to\-come\-out\-to\-the\-open;
+㙊 > an\-area\-of\-level\-ground;
+㕸 > sound\-of\-rolling\-a\-boat;
+㕧 > used\-to\-represent\-sound;
+㔤 > to\-exert\-one''s\-strength;
+㓧 > agricultural\-implements;
+㒤 > to\-have\-one''s\-heart\-won;
+㒙 > to\-hand\-or\-bow\-the\-head;
+么 > interrogative\-particle;
+被 > passive\-indicator\-''by'';
+申 > to\-state\-to\-a\-superior;
+岡 > ridge\-or\-crest\-of\-hill;
+琴 > chinese\-lute\-or\-guitar;
+嬌 > seductive\-and\-loveable;
+罗 > net\-for\-catching\-birds;
+摸 > gently\-touch\-with\-hand;
+仰 > raise\-the\-head\-to\-look;
+臍 > abdominal\-area\-of\-crab;
+郑 > state\-in\-today''s\-henan;
+羅 > net\-for\-catching\-birds;
+贯 > a\-string\-of\-1000\-coins;
+娇 > seductive\-and\-loveable;
+竭 > put\-forth\-great\-effort;
+秒 > beard\-of\-grain\-or\-corn;
+奚 > where\?\-what\?\-how\?\-why\?;
+冈 > ridge\-or\-crest\-of\-hill;
+盏 > small\-cup\-or\-container;
+萝 > type\-of\-creeping\-plant;
+梧 > sterculia\-platanifolia;
+咦 > expression\-of\-surprise;
+筐 > bamboo\-basket\-or\-chest;
+谍 > an\-intelligence\-report;
+篱 > bamboo\-or\-wooden\-fence;
+琶 > guitar\-like\-instrument;
+琵 > guitar\-like\-instrument;
+潺 > sound\-of\-flowing\-water;
+坳 > a\-hollow\-in\-the\-ground;
+脐 > abdominal\-area\-of\-crab;
+埂 > ditches\-for\-irrigation;
+倌 > assistant\-in\-wine\-shop;
+霁 > to\-clear\-up\-after\-rain;
+邯 > city\-in\-hebei\-province;
+粑 > tsamba\-\(food\-in\-tibet\);
+蛀 > insects\-that\-eat\-books;
+嫦 > name\-of\-a\-moon\-goddess;
+赊 > buy\-and\-sell\-on\-credit;
+弑 > to\-kill\-one''s\-superior;
+摁 > to\-press\-with\-the\-hand;
+畹 > a\-field\-of\-20\-or\-30\-mu;
+觐 > have\-imperial\-audience;
+讦 > expose\-other''s\-secrets;
+旄 > a\-kind\-of\-ancient\-flag;
+趵 > noise\-of\-tramping\-feet;
+酹 > to\-pour\-out\-a\-libation;
+孳 > breed\-in\-large\-numbers;
+塄 > elevated\-bank\-in\-field;
+螈 > diemyelilus\-pyrogaster;
+窬 > a\-small\-door\-or\-window;
+笱 > a\-basket\-trap\-for\-fish;
+牿 > shed\-or\-pen\-for\-cattle;
+蛘 > a\-weevil\-found\-in\-rice;
+畎 > a\-drain\-between\-fields;
+齯 > teeth\-grown\-in\-old\-age;
+鹣 > fabulous\-mythical\-bird;
+鶼 > fabulous\-mythical\-bird;
+鰆 > scomberomorus\-sinensis;
+鯙 > scomberomorus\-sinensis;
+鮓 > minced\-and\-salted\-fish;
+驌 > name\-of\-a\-famous\-horse;
+韹 > music\-of\-bell\-and\-drum;
+霽 > to\-clear\-up\-after\-rain;
+雘 > dye\-made\-from\-red\-soil;
+阇 > a\-buddhist\-high\-priest;
+鑐 > bolt\-of\-a\-chinese\-lock;
+錆 > the\-color\-of\-a\-mineral;
+鄭 > state\-in\-today''s\-henan;
+鄐 > town\-in\-henan\-province;
+遰 > grunting\-sound\-of\-pigs;
+辥 > variety\-of\-marsh\-grass;
+賒 > buy\-and\-sell\-on\-credit;
+貫 > a\-string\-of\-1000\-coins;
+谂 > consult\-carefully\-with;
+諜 > an\-intelligence\-report;
+諗 > consult\-carefully\-with;
+詪 > difficulty\-in\-speaking;
+訐 > expose\-other''s\-secrets;
+觿 > a\-bodkin\-made\-of\-ivory;
+覲 > have\-imperial\-audience;
+覀 > variant\-of\-radical\-146;
+褟 > inner\-shirt\-or\-singlet;
+衭 > the\-lapel\-of\-a\-garment;
+衦 > smooth\-out\-the\-clothes;
+蘿 > type\-of\-creeping\-plant;
+蕕 > caryopteris\-divaricata;
+蔯 > a\-variety\-of\-artemisia;
+萴 > medicinal\-poison\-plant;
+菶 > species\-of\-water\-plant;
+莸 > caryopteris\-divaricata;
+莙 > species\-of\-water\-plant;
+脤 > raw\-meat\-for\-sacrifice;
+耬 > drill\-for\-sowing\-grain;
+耧 > drill\-for\-sowing\-grain;
+耂 > variant\-of\-radical\-125;
+繦 > string\-of\-copper\-coins;
+繈 > string\-of\-copper\-coins;
+緅 > silk\-of\-purplish\-color;
+籬 > bamboo\-or\-wooden\-fence;
+篢 > the\-name\-of\-bamboo\-hat;
+筺 > bamboo\-basket\-or\-chest;
+盞 > small\-cup\-or\-container;
+癊 > a\-disease\-of\-the\-heart;
+瑱 > a\-gem\-used\-as\-ear\-plug;
+琠 > a\-gem\-used\-as\-ear\-plug;
+珣 > name\-of\-a\-kind\-of\-jade;
+玼 > beautiful\-color\-of\-gem;
+牷 > cow\-or\-ox\-of\-one\-color;
+焄 > rising\-flames\-or\-fumes;
+烖 > calamities\-from\-heaven;
+殢 > be\-in\-great\-difficulty;
+槱 > firewood\-for\-sacrifice;
+朏 > light\-of\-crescent\-moon;
+旐 > an\-embroidered\-pennant;
+攙 > to\-give\-a\-helping\-hand;
+摰 > to\-seize\-with\-the\-hand;
+摀 > to\-cover\-with\-the\-hand;
+搾 > to\-crush\-with\-the\-hand;
+怹 > a\-polite\-version\-of\-he;
+弒 > to\-kill\-one''s\-superior;
+庈 > used\-in\-person''s\-names;
+嵶 > low\-part\-of\-a\-mountain;
+孒 > larvae\-of\-the\-mosquito;
+壖 > open\-space\-along\-water;
+噀 > spirt\-out\-of\-the\-mouth;
+叝 > to\-respectfully\-inform;
+伮 > to\-make\-a\-great\-effort;
+䶥 > unevenly\-fitting\-teeth;
+䶤 > sound\-of\-chewing\-bones;
+䶂 > a\-squirrel\-like\-animal;
+䳮 > to\-look\-at\-in\-surprise;
+䲚 > a\-second\-name\-for\-shad;
+䰵 > looks\-like\-common\-carp;
+䰰 > dreary\-cries\-of\-ghosts;
+䰭 > dreary\-cries\-of\-ghosts;
+䮺 > luxuriant\-of\-the\-grass;
+䮭 > to\-look\-at\-in\-surprise;
+䮪 > to\-geld\-a\-horse\-or\-ass;
+䩼 > stitches\-on\-a\-coverlet;
+䩍 > to\-look\-pale\-or\-pallid;
+䨵 > rained\-for\-a\-long\-time;
+䨬 > rained\-for\-a\-long\-time;
+䨡 > rained\-for\-a\-long\-time;
+䦈 > to\-sigh\-in\-lamentation;
+䥟 > a\-metal\-marking\-\-stake;
+䢎 > indicating\-exclamation;
+䡵 > decoration\-on\-carriage;
+䡰 > strong\-and\-durable\-hub;
+䡬 > covering\-of\-a\-carriage;
+䡁 > not\-well\-formed\-figure;
+䟽 > scattered\-or\-dispersed;
+䞘 > to\-go\-straight\-forward;
+䝢 > an\-animal\-in\-old\-times;
+䝡 > an\-animal\-in\-old\-times;
+䝓 > long\-beard\-or\-whiskers;
+䜺 > husking\-beans\-for\-cake;
+䜡 > to\-smell\-the\-fragrants;
+䛙 > to\-smell\-the\-fragrance;
+䚞 > the\-middle\-of\-the\-horn;
+䙄 > clothes\-with\-thick\-hem;
+䘽 > clothing\-and\-ornaments;
+䗐 > a\-weevil\-found\-in\-rice;
+䕴 > a\-second\-for\-monkshood;
+䔠 > thin\-root\-of\-the\-lotus;
+䏩 > to\-shrug\-the\-shoulders;
+䍱 > the\-wild\-goat\-or\-sheep;
+䋪 > fine\-and\-delicate\-silk;
+䋍 > fine\-and\-delicate\-silk;
+䊏 > mixing\-rice\-with\-broth;
+䊃 > mixing\-rice\-with\-broth;
+䈄 > a\-kind\-of\-solid\-bamboo;
+䇣 > bamboo\-with\-white\-bark;
+䄠 > to\-sacrifice\-to\-heaven;
+䃧 > sound\-of\-falling\-rocks;
+䃔 > sound\-of\-falling\-rocks;
+䂢 > sound\-of\-falling\-rocks;
+䂠 > sound\-of\-falling\-rocks;
+䀄 > container\-full\-of\-food;
+㿋 > a\-kind\-of\-skin\-disease;
+㼞 > jar\-with\-a\-small\-mouth;
+㺞 > to\-sign\-in\-lamentation;
+㸯 > a\-fine\-breed\-of\-cattle;
+㵯 > sound\-of\-water\-flowing;
+㳯 > goddess\-of\-an\-ink\-slab;
+㲱 > long\-beard\-or\-whiskers;
+㱆 > to\-smile\-at\-each\-other;
+㰿 > to\-sigh\-in\-lamentation;
+㰨 > to\-take\-breath\-or\-rest;
+㮑 > sound\-of\-broken\-sticks;
+㭯 > tree\-with\-small\-leaves;
+㫊 > fluttering\-of\-the\-flag;
+㪣 > a\-place\-in\-han\-dynasty;
+㪟 > to\-regard\-as\-important;
+㪞 > to\-be\-held\-by\-the\-hand;
+㩺 > a\-crack\-on\-the\-utensil;
+㩜 > to\-be\-in\-possession\-of;
+㩎 > to\-press\-with\-a\-finger;
+㧶 > the\-jingling\-of\-metals;
+㧙 > to\-give\-a\-playful\-blow;
+㧃 > to\-receive\-what\-is\-due;
+㦣 > to\-talk\-in\-one''s\-sleep;
+㦄 > hard\-to\-say\-or\-predict;
+蘿 > type\-of\-creeping\-plant;
+羅 > net\-for\-catching\-birds;
+㤊 > cheerful\-and\-exuberant;
+㣚 > to\-go\-straight\-forward;
+㢉 > a\-room\-with\-open\-space;
+㠔 > shapes\-of\-the\-mountain;
+㟻 > the\-moat\-around\-a\-city;
+㛳 > an\-abnomal\-unborn\-baby;
+㚷 > the\-breasts\-of\-a\-woman;
+㙳 > ruggedness\-of\-the\-road;
+㙤 > a\-crack\-in\-earthenware;
+㙘 > used\-in\-naming\-a\-place;
+㘭 > a\-hollow\-in\-the\-ground;
+㘬 > a\-hollow\-in\-the\-ground;
+㗂 > to\-keep\-the\-mouth\-shut;
+㖐 > sound\-of\-calling\-ducks;
+㔴 > agricultural\-implement;
+㓹 > a\-sharp\-pointed\-weapon;
+㓦 > to\-deliberate\-and\-plan;
+㓘 > jade\-with\-some\-defects;
+觉 > to\-wake\-up\-from\-sleep;
+環 > jade\-ring\-or\-bracelet;
+覺 > to\-wake\-up\-from\-sleep;
+覚 > to\-wake\-up\-from\-sleep;
+划 > to\-row\-or\-paddle\-boat;
+堪 > adequately\-capable\-of;
+环 > jade\-ring\-or\-bracelet;
+吴 > name\-of\-warring\-state;
+鳴 > cry\-of\-bird\-or\-animal;
+呉 > one\-of\-warring\-states;
+馳 > go\-quickly\-or\-swiftly;
+榎 > small\-evergreen\-shrub;
+鸣 > cry\-of\-bird\-or\-animal;
+驰 > go\-quickly\-or\-swiftly;
+姻 > relatives\-by\-marriage;
+筒 > thick\-piece\-of\-bamboo;
+帘 > flag\-sign\-of\-a\-tavern;
+稻 > rice\-growing\-in\-field;
+稲 > rice\-growing\-in\-field;
+禰 > one''s\-deceased\-father;
+剂 > medicinal\-preparation;
+珂 > inferior\-kind\-of\-jade;
+嘟 > sound\-of\-horn\-tooting;
+瑜 > flawless\-gem\-or\-jewel;
+珑 > a\-gem\-cut\-like\-dragon;
+诬 > make\-false\-accusation;
+嫖 > patronize\-prostitutes;
+飒 > the\-sound\-of\-the\-wind;
+锢 > run\-metal\-into\-cracks;
+掖 > support\-with\-the\-arms;
+棣 > kerria\-japonica\-plant;
+菁 > flower\-of\-leek\-family;
+咩 > the\-bleating\-of\-sheep;
+珉 > stone\-resembling\-jade;
+钎 > tool\-for\-boring\-holes;
+抟 > roll\-around\-with\-hand;
+趸 > sell\-or\-buy\-wholesale;
+妣 > one''s\-deceased\-mother;
+嵊 > district\-in\-shaohsing;
+笸 > flat\-basket\-for\-grain;
+祢 > one''s\-deceased\-father;
+肫 > the\-gizzard\-of\-a\-fowl;
+苫 > rush\-or\-straw\-matting;
+峤 > high\-pointed\-mountain;
+秭 > one\-thousand\-millions;
+姒 > wife\-of\-elder\-brother;
+蓰 > to\-increase\-five\-fold;
+蒌 > artemisia\-stelleriana;
+酃 > the\-spirit\-of\-a\-being;
+糗 > parched\-wheat\-or\-rice;
+辋 > exterior\-rim\-of\-wheel;
+髫 > children''s\-hair\-style;
+虺 > large\-poisonous\-snake;
+醵 > contribute\-for\-drinks;
+蚬 > a\-variety\-of\-bivalves;
+裼 > to\-take\-off\-one''s\-top;
+眵 > eyes\-diseased\-and\-dim;
+枵 > hollo\-stump\-of\-a\-tree;
+蘩 > artemisia\-stellariana;
+鼃 > the\-edible\-water\-frog;
+鷀 > the\-fishing\-cormorant;
+鴠 > a\-kind\-of\-nightingale;
+鰤 > seriola\-qinqueradiata;
+鯄 > lepidotrigla\-strauchi;
+髈 > defined\-as\-the\-pelvis;
+颸 > cool\-breeze\-of\-autumn;
+颯 > the\-sound\-of\-the\-wind;
+錮 > run\-metal\-into\-cracks;
+釺 > tool\-for\-boring\-holes;
+酎 > double\-fermented\-wine;
+輮 > exterior\-rim\-of\-wheel;
+輞 > exterior\-rim\-of\-wheel;
+躉 > sell\-or\-buy\-wholesale;
+谺 > the\-mouth\-of\-a\-valley;
+誣 > make\-false\-accusation;
+蠸 > aulacophora\-femoralis;
+螒 > aulacophora\-femoralis;
+蜺 > reflection\-of\-rainbow;
+蜆 > a\-variety\-of\-bivalves;
+蘘 > a\-kind\-of\-wild\-ginger;
+蕚 > the\-calyx\-of\-a\-flower;
+蔞 > artemisia\-stelleriana;
+葹 > kind\-of\-chrysanthemum;
+萻 > small\-buddhist\-temple;
+舚 > to\-put\-out\-the\-tongue;
+翏 > the\-sound\-of\-the\-wind;
+繴 > a\-kind\-of\-fishing\-net;
+竼 > bamboo\-cover\-for\-boat;
+禨 > pray\-for\-good\-fortune;
+癥 > obstruction\-of\-bowels;
+痏 > a\-bruise\-or\-contusion;
+瓏 > a\-gem\-cut\-like\-dragon;
+璡 > jade\-look\-alike\-stone;
+瑨 > jade\-look\-alike\-stone;
+瑀 > stone\-resembling\-jade;
+澂 > clear\-and\-still\-water;
+淜 > roar\-of\-dashing\-waves;
+沇 > flowing\-and\-engulfing;
+檟 > small\-evergreen\-shrub;
+暎 > sun\-beginning\-decline;
+摶 > roll\-around\-with\-hand;
+嶠 > high\-pointed\-mountain;
+嵼 > winding\-mountain\-path;
+埵 > hardened\-dirt\-or\-clay;
+嗻 > to\-screen\.\-loquacious;
+吳 > one\-of\-warring\-states;
+匟 > divan\-for\-two\-persons;
+劑 > medicinal\-preparation;
+剾 > to\-pick\-up\-with\-knife;
+剤 > medicinal\-preparation;
+䵗 > to\-clean\-the\-withered;
+䵄 > to\-boil\-or\-stew\-wheat;
+䴶 > to\-boil\-or\-stew\-wheat;
+䴔 > the\-fishing\-cormorant;
+䳹 > a\-kind\-dove\-like\-bird;
+䳝 > a\-kind\-of\-small\-birds;
+䱟 > a\-kind\-of\-silver\-fish;
+䯯 > hang\-down\-of\-the\-hair;
+䯭 > of\-nice\-and\-good\-hair;
+䮄 > an\-one\-year\-old\-horse;
+䭴 > an\-one\-year\-old\-horse;
+䫹 > the\-sound\-of\-the\-wind;
+䪥 > shallots\-or\-scallions;
+䩩 > a\-measure\-of\-capacity;
+䦽 > an\-east\-and\-west\-wall;
+䦚 > wide\-open\-of\-the\-door;
+䦌 > the\-door\-is\-wide\-open;
+䥈 > the\-symbol\-for\-cobalt;
+䤗 > taste\-of\-strong\-drink;
+䢩 > to\-forbid\-to\-prohibit;
+䡶 > vehicles\-and\-garments;
+䞚 > to\-hang\-on\-a\-big\-tree;
+䝖 > reptiles\-without\-feet;
+䛱 > to\-talk\-unremittingly;
+䛊 > cheerful\-all\-the\-time;
+䛃 > used\-in\-person''s\-name;
+䘐 > the\-bleed\-at\-the\-nose;
+䗊 > to\-put\-out\-the\-tongue;
+䗉 > a\-small\-solitary\-wasp;
+䖔 > a\-kind\-of\-white\-tiger;
+䖍 > to\-act\-with\-reverence;
+䔵 > fragrant\-thoroughwort;
+䔊 > dense\-growth\-of\-grass;
+䓒 > scirpus\-cyperinus\-var;
+䒦 > grass\-floats\-on\-water;
+䒄 > fully\-laden\-of\-a\-boat;
+䑝 > a\-small\-cup\-with\-ears;
+䏤 > top\-of\-the\-human\-head;
+䎶 > offering\-blood\-to\-god;
+䎚 > the\-end\-of\-bird\-wings;
+䎖 > soaring\-up\-in\-the\-sky;
+䎁 > used\-in\-person''s\-name;
+䌧 > a\-kind\-of\-silk\-fabric;
+䌟 > to\-weave\-silk\-ribbons;
+䋂 > dresses\-for\-the\-bride;
+䈧 > skin\-of\-bamboo\-shoots;
+䈞 > ancient\-name\-of\-india;
+䇾 > a\-flute\-with\-23\-tubes;
+䇰 > a\-bamboo\-binded\-torch;
+䇡 > the\-shuttle\-of\-a\-loom;
+䆠 > a\-government\-official;
+䆛 > something\-in\-the\-cave;
+䅗 > four\-bundle\-of\-grains;
+䅑 > four\-bundle\-of\-grains;
+䁭 > to\-give\-an\-angry\-look;
+䁚 > a\-kind\-of\-eye\-disease;
+䀽 > to\-look\-at\-each\-other;
+䀠 > a\-chinese\-family\-name;
+䀓 > to\-turn\-one''s\-eyes\-to;
+㿴 > wide\-piece\-of\-leather;
+㿯 > wide\-piece\-of\-leather;
+㿫 > to\-split\-tangled\-hemp;
+㿏 > paralysis\-of\-the\-body;
+㾾 > disease\-of\-the\-throat;
+㾤 > disease\-of\-the\-throat;
+㼲 > sound\-of\-broken\-tiles;
+㼐 > a\-kind\-of\-white\-melon;
+㹶 > a\-kind\-of\-wild\-animal;
+㹦 > dog\-with\-a\-short\-tail;
+㹔 > cattle\-with\-long\-back;
+㷗 > used\-in\-person''s\-name;
+㷏 > used\-in\-person''s\-name;
+㵬 > used\-in\-person''s\-name;
+㵨 > a\-dry\-land\-in\-a\-river;
+㳈 > a\-great\-flow\-of\-water;
+㱟 > to\-rip\-open\-the\-flesh;
+㰄 > a\-small\-chestnut\-tree;
+㯥 > a\-chinese\-family\-name;
+㮗 > the\-handle\-of\-a\-spear;
+㭍 > capital\-form\-of\-seven;
+㬠 > to\-expose\-to\-sunlight;
+㬓 > to\-expose\-to\-sunlight;
+㬂 > used\-in\-person''s\-name;
+㩟 > to\-sew\-some\-ornaments;
+㨌 > to\-milk\-a\-cow\-or\-goat;
+㣝 > a\-chinese\-family\-name;
+㠋 > a\-lofty\-mountain\-peak;
+㟞 > precipitous\-and\-lofty;
+㟝 > to\-bank\-up\-with\-earth;
+㟜 > shape\-of\-the\-mountain;
+㟙 > shape\-of\-the\-mountain;
+㟖 > a\-dialect\-of\-minority;
+㟎 > a\-long\-mountain\-ridge;
+㞁 > can\-not\-walk\-normally;
+㝾 > can\-not\-walk\-normally;
+㘰 > name\-of\-a\-old\-country;
+㘡 > a\-pen\-for\-wild\-beasts;
+㘖 > to\-make\-a\-disturbance;
+㗁 > the\-roof\-of\-the\-mouth;
+㖗 > high\-ridges\-of\-cliffs;
+㕢 > profound\-significance;
+㒆 > to\-gather\-the\-harvest;
+什 > file\-of\-ten\-soldiers;
+責 > one''s\-responsibility;
+爵 > feudal\-title\-or\-rank;
+责 > one''s\-responsibility;
+啊 > exclamatory\-particle;
+楚 > name\-of\-feudal\-state;
+托 > to\-hold\-up\-with\-palm;
+汲 > draw\-water\-from\-well;
+魅 > kind\-of\-forest\-demon;
+伊 > third\-person\-pronoun;
+鸿 > species\-of\-wild\-swan;
+姥 > maternal\-grandmother;
+捧 > hold\-up\-in\-two\-hands;
+乙 > second\-heaven''s\-stem;
+吁 > interjection\-''alas\!'';
+姨 > mother\/wife''s\-sister;
+亩 > chinese\-land\-measure;
+僵 > stiff\-and\-motionless;
+拱 > fold\-hands\-on\-breast;
+禾 > grain\-still\-on\-stalk;
+嗡 > sound\-of\-flying\-bees;
+兮 > exclamatory\-particle;
+猩 > species\-of\-orangutan;
+狞 > ferocious\-appearance;
+拈 > pick\-up\-with\-fingers;
+陛 > steps\-leading\-throne;
+鸯 > female\-mandarin\-duck;
+卯 > th\-of\-earth\-branches;
+熠 > bright\-and\-sparkling;
+阂 > blocked\-or\-separated;
+淅 > water\-used\-wash\-rice;
+佚 > indulge\-in\-pleasures;
+辚 > rumbling\-of\-vehicles;
+巽 > th\-of\-the\-8\-trigrams;
+訇 > the\-sound\-of\-a\-crash;
+狺 > the\-snarling\-of\-dogs;
+浔 > steep\-bank\-by\-stream;
+蓊 > luxuriant\-vegetation;
+蓠 > gracilaria\-verrucosa;
+菀 > luxuriance\-of\-growth;
+胗 > pustules\-of\-any\-kind;
+颃 > fly\-down\-or\-downward;
+垆 > black\-clods\-of\-earth;
+樗 > ailanthus\-glandulosa;
+蚧 > a\-red\-spotted\-lizard;
+缶 > earthen\-crock\-or\-jar;
+豳 > a\-zhou\-dynasty\-state;
+轺 > small\-light\-carriage;
+逯 > leave\-without\-reason;
+齞 > to\-display\-the\-teeth;
+鼈 > a\-fresh\-water\-turtle;
+鼂 > a\-kind\-of\-sea\-turtle;
+鸇 > kind\-of\-bird\-of\-prey;
+鸂 > a\-kind\-of\-water\-bird;
+鷫 > turquoise\-kingfisher;
+鷁 > fishhawk\-bow\-or\-prow;
+鴻 > species\-of\-wild\-swan;
+鴦 > female\-mandarin\-duck;
+鰜 > big\-mouthed\-flounder;
+髺 > the\-hair\-dishevelled;
+骣 > horse\-without\-saddle;
+驏 > horse\-without\-saddle;
+餽 > make\-present\-of\-food;
+頏 > fly\-down\-or\-downward;
+韱 > wild\-onions\-or\-leeks;
+韯 > wild\-onions\-or\-leeks;
+霃 > long\-continued\-rains;
+闍 > tower\-over\-city\-gate;
+閡 > blocked\-or\-separated;
+鍱 > thin\-plates\-of\-metal;
+鉶 > sacrificial\-cauldron;
+醰 > bitter\-taste\-in\-wine;
+轔 > rumbling\-of\-vehicles;
+軺 > small\-light\-carriage;
+趂 > to\-take\-advantage\-of;
+襬 > lower\-part\-of\-a\-robe;
+袳 > spread\-one''s\-clothes;
+蜛 > hydrophilus\-cognatus;
+蛚 > cyrtoxiphus\-ritsemae;
+蘺 > gracilaria\-verrucosa;
+薢 > woody\-climbing\-plant;
+茀 > overgrown\-with\-grass;
+芄 > metaplexis\-stauntoni;
+舺 > place\-name\-in\-taiwan;
+脡 > strips\-of\-dried\-meat;
+粃 > empty\-husks\-of\-grain;
+窣 > to\-rush\-out\-of\-a\-den;
+穇 > panicum\-frumentaceum;
+磒 > to\-fall\-from\-or\-into;
+矑 > the\-pupil\-of\-the\-eye;
+睍 > to\-look\-at\-fearfully;
+畝 > chinese\-land\-measure;
+畒 > chinese\-land\-measure;
+畆 > chinese\-land\-measure;
+甽 > drain\-between\-fields;
+甃 > brick\-wall\-of\-a\-well;
+琖 > carved\-jade\-wine\-cup;
+玦 > broken\-piece\-of\-jade;
+獰 > ferocious\-appearance;
+瀳 > to\-arrive\-\(of\-water\);
+澬 > to\-rain\-continuously;
+潯 > steep\-bank\-by\-stream;
+洤 > a\-fountain\-or\-spring;
+槾 > paste\-wall\-with\-dirt;
+棨 > tally\-or\-wooden\-pass;
+桬 > pear\-and\-other\-trees;
+敳 > to\-govern\-forcefully;
+敁 > to\-weigh\-in\-the\-hand;
+搎 > to\-rub\-with\-the\-hand;
+戼 > th\-of\-earth\-branches;
+巺 > th\-of\-the\-8\-trigrams;
+嵏 > a\-mountain\-in\-shenxi;
+孭 > to\-carry\-on\-the\-back;
+嫋 > slender\-and\-delicate;
+婣 > marriage\-connections;
+夘 > th\-of\-earth\-branches;
+壚 > black\-clods\-of\-earth;
+囬 > to\-return\-to\-or\-from;
+劂 > chisel\-for\-engraving;
+䶙 > swelling\-of\-the\-gums;
+䶊 > to\-bleed\-at\-the\-nose;
+䴟 > an\-one\-year\-old\-deer;
+䴖 > a\-kind\-of\-water\-bird;
+䴌 > a\-kind\-of\-water\-bird;
+䴋 > a\-kind\-of\-water\-bird;
+䴈 > a\-kind\-of\-water\-bird;
+䴂 > a\-kind\-of\-water\-bird;
+䴀 > a\-kind\-of\-water\-bird;
+䳶 > a\-kind\-of\-water\-bird;
+䳳 > a\-kind\-of\-small\-bird;
+䳓 > a\-kind\-of\-water\-bird;
+䳑 > a\-pheasant\-like\-bird;
+䳋 > a\-pheasant\-like\-bird;
+䳉 > a\-kind\-of\-water\-bird;
+䳄 > a\-kind\-of\-water\-bird;
+䳂 > a\-kind\-of\-small\-bird;
+䲱 > a\-kind\-of\-black\-bird;
+䲕 > the\-yangtze\-porpoise;
+䱐 > a\-kind\-of\-black\-fish;
+䱀 > a\-kind\-of\-small\-fish;
+䯺 > the\-hair\-dishevelled;
+䮡 > a\-supernatural\-horse;
+䮂 > horse\-with\-long\-hair;
+䭾 > to\-carry\-on\-the\-back;
+䭷 > horse\-with\-long\-mane;
+䬩 > to\-abstain\-from\-meat;
+䬣 > a\-sacrificial\-victim;
+䫠 > short\-hair\-and\-beard;
+䩽 > a\-quiver\-one\-a\-horse;
+䩂 > to\-come\-to\-the\-front;
+䧗 > mountains\-collapsing;
+䦦 > a\-musical\-instrument;
+䥤 > the\-neck\-of\-a\-pestle;
+䥡 > thin\-plates\-of\-metal;
+䥆 > a\-musical\-instrument;
+䥅 > a\-musical\-instrument;
+䥄 > to\-plaster\-with\-gold;
+䤸 > short\-spear\-or\-lance;
+䠑 > between\-the\-buttocks;
+䠈 > hard\-to\-move\-forward;
+䟩 > hard\-of\-walk\-forward;
+䞙 > to\-walk\-in\-hurriedly;
+䝑 > a\-local\-produced\-pig;
+䜧 > to\-insult\-with\-words;
+䜓 > a\-slip\-of\-the\-tongue;
+䜀 > to\-insult\-with\-words;
+䛌 > to\-provoke\-or\-arouse;
+䙮 > strip\-of\-the\-clothes;
+䘾 > legs\-of\-the\-trousers;
+䕫 > a\-one\-legged\-monster;
+䔈 > lush\-growth\-of\-grass;
+䑠 > long\-and\-narrow\-boat;
+䐸 > the\-back\-of\-the\-knee;
+䏿 > the\-calf\-of\-the\-legs;
+䏡 > uncooked\-or\-raw\-meat;
+䊳 > to\-break\-into\-pieces;
+䊲 > to\-hull\-rice\-roughly;
+䊂 > poor\-quality\-of\-rice;
+䉑 > black\-skinned\-bamboo;
+䈦 > a\-curved\-bamboo\-whip;
+䈑 > tools\-to\-unreel\-silk;
+䈅 > tools\-to\-unreel\-silk;
+䈁 > tools\-used\-on\-a\-boat;
+䇘 > tool\-to\-collect\-rope;
+䆣 > abode\-of\-the\-emperor;
+䆏 > a\-kind\-of\-rice\-plant;
+䆃 > a\-kind\-of\-rice\-plant;
+䅮 > a\-full\-head\-of\-grain;
+䅓 > curved\-piece\-of\-wood;
+䅏 > rice\-boiled\-to\-gruel;
+䅉 > a\-kind\-of\-rice\-plant;
+䄿 > a\-kind\-of\-rice\-plant;
+䄯 > ten\-handle\-of\-grains;
+䄂 > to\-pray\-and\-to\-curse;
+䃰 > brick\-or\-stone\-steps;
+䂒 > short\-to\-curry\-favor;
+䂂 > to\-gaze\-at\-in\-terror;
+䁬 > to\-act\-pretentiously;
+䀷 > to\-have\-quick\-glance;
+䀲 > diseases\-in\-the\-eyes;
+㿸 > to\-cast\-off\-the\-skin;
+㿞 > an\-old\-man\-of\-eighty;
+㽤 > a\-small\-plot\-of\-land;
+㽢 > to\-plough\-the\-fields;
+㽕 > new\-branches\-growing;
+㽃 > a\-big\-piece\-of\-brick;
+㼢 > bricks\-an\-eathen\-jar;
+㼉 > green\-colored\-melons;
+㻮 > bright\-and\-brilliant;
+㺮 > fine\-stone\-like\-jade;
+㺨 > fine\-stone\-like\-jade;
+㺂 > big\-and\-strong\-sheep;
+㹘 > shinbone\-of\-a\-cattle;
+㸪 > an\-ox\-walking\-slowly;
+㷙 > to\-fry\-in\-fat\-or\-oil;
+㶔 > swift\-and\-torrential;
+㶎 > swift\-and\-torrential;
+㵡 > swift\-and\-torrential;
+㵞 > bellied\-in\-water\-gas;
+㳼 > bubbling\-of\-fountain;
+㳚 > flowing\-of\-the\-water;
+㳔 > to\-soak\-or\-be\-soaked;
+㳐 > flowing\-of\-the\-water;
+㲫 > hair\-knots\-in\-a\-mess;
+㲢 > hair\-knots\-in\-a\-mess;
+㰋 > a\-kind\-of\-fruit\-tree;
+㯌 > to\-operate\-or\-manage;
+㭞 > a\-kind\-inferior\-wood;
+㭒 > a\-farming\-instrument;
+㪰 > to\-abstain\-from\-meat;
+㩻 > rugged\-mountain\-path;
+㩔 > a\-tool\-to\-make\-a\-bow;
+什 > file\-of\-ten\-soldiers;
+㧹 > to\-strike\-with\-fists;
+㡙 > curtain\-for\-carriage;
+㠗 > deep\-in\-the\-mountain;
+㞥 > deep\-in\-the\-mountain;
+㞟 > savings\-and\-reserves;
+㜒 > maternal\-grandmother;
+㙣 > to\-pile\-a\-sand\-hills;
+㙑 > the\-canopy\-of\-heaven;
+㘎 > the\-roars\-of\-a\-tiger;
+㘅 > to\-hold\-in\-the\-mouth;
+㕡 > the\-bed\-of\-a\-torrent;
+㕌 > to\-raise\-the\-curtain;
+㔋 > cut\-into\-thin\-slices;
+㒅 > to\-unbind\-the\-collar;
+㑉 > cannot\-straighten\-up;
+幾 > how\-many\?\-how\-much\?;
+奏 > memorialize\-emperor;
+您 > honorific\-for\-''you'';
+吏 > government\-official;
+兀 > to\-cut\-off\-the\-feet;
+胴 > the\-large\-intestine;
+秦 > feudal\-state\-of\-qin;
+桁 > cross\-beams\-of\-roof;
+莎 > kind\-of\-sedge\-grass;
+薛 > kind\-of\-marsh\-grass;
+絣 > to\-baste\-for\-sewing;
+悖 > be\-contradictory\-to;
+芒 > miscanthus\-sinensis;
+嘶 > neighing\-of\-a\-horse;
+叽 > sigh\-in\-disapproval;
+厥 > personal\-pronoun\-he;
+圭 > jade\-pointed\-at\-top;
+徘 > walk\-back\-and\-forth;
+晤 > have\-interview\-with;
+舷 > the\-sides\-of\-a\-boat;
+邬 > various\-place\-names;
+褐 > coarse\-woolen\-cloth;
+馈 > offer\-food\-superior;
+唧 > chirping\-of\-insects;
+咔 > used\-in\-translation;
+灸 > cauterize\-with\-moxa;
+驷 > team\-of\-four\-horses;
+粼 > clear\-\(as\-of\-water\);
+羚 > species\-of\-antelope;
+呓 > talk\-in\-one''s\-sleep;
+篙 > pole\-used\-punt\-boat;
+湍 > rapid\-water\-current;
+脍 > minced\-meat\-or\-fish;
+鏖 > to\-fight\-to\-the\-end;
+肽 > a\-chemical\-compound;
+卟 > a\-chemical\-compound;
+銮 > bells\-hung\-on\-horse;
+笳 > a\-reed\-leaf\-whistle;
+薏 > seed\-of\-job''s\-tears;
+悝 > to\-laugh\-at\-to\-pity;
+豇 > a\-small\-kidney\-bean;
+桉 > eucalyptus\-globulus;
+蹁 > to\-walk\-with\-a\-limp;
+腈 > an\-organic\-compound;
+螟 > kind\-of\-caterpillar;
+泮 > zhou\-dynasty\-school;
+鲳 > the\-silvery\-pomfret;
+霪 > long\-and\-heavy\-rain;
+枘 > the\-handle\-of\-tools;
+滹 > the\-bank\-of\-a\-steam;
+彳 > step\-with\-left\-foot;
+亍 > to\-take\-small\-steps;
+砘 > a\-kind\-of\-farm\-tool;
+栎 > chestnut\-leaved\-oak;
+鹇 > the\-silver\-pheasant;
+苌 > averrhora\-carambola;
+郛 > outer\-walls\-of\-city;
+醢 > minced\-pickled\-meat;
+眚 > disease\-of\-the\-eyes;
+耱 > a\-kind\-of\-farm\-tool;
+裉 > s\-seam\-in\-a\-garment;
+崦 > a\-mountain\-in\-kansu;
+兕 > a\-female\-rhinoceros;
+鸒 > the\-eastern\-jackdaw;
+鷳 > the\-silver\-pheasant;
+鶲 > siberian\-flycatcher;
+鰶 > konosirus\-punctatus;
+鯧 > the\-silvery\-pomfret;
+鯥 > pomatomus\-saltatrix;
+鯕 > coryphaena\-hippurus;
+鮶 > sebastodes\-guntheri;
+駟 > team\-of\-four\-horses;
+饋 > offer\-food\-superior;
+飂 > wind\-in\-high\-places;
+颾 > blowing\-of\-the\-wind;
+頖 > zhou\-dynasty\-school;
+頍 > to\-raise\-one''s\-head;
+韘 > archer''s\-thumb\-ring;
+鞬 > a\-quiver\-on\-a\-horse;
+霶 > downpouring\-of\-rain;
+霮 > denseness\-of\-clouds;
+鑾 > bells\-hung\-on\-horse;
+鑴 > to\-engrave\-or\-carve;
+鎄 > iridium\-einsteinium;
+鋑 > to\-engrave\-or\-carve;
+鈃 > ancient\-wine\-vessel;
+酧 > to\-pledge\-with\-wine;
+鄔 > various\-place\-names;
+襴 > a\-one\-piece\-garment;
+褃 > a\-seam\-in\-a\-garment;
+蠰 > cerambyx\-rugicollis;
+蟨 > the\-siberian\-jerboa;
+蝝 > the\-larva\-of\-locust;
+蔊 > nasturtium\-montanum;
+蓇 > follicles\-of\-plants;
+蒈 > an\-organic\-compound;
+葇 > elsholtria\-paltrini;
+萇 > averrhora\-carambola;
+莕 > nymphoides\-peltatum;
+茳 > cyperus\-malaccensis;
+茚 > an\-organic\-compound;
+苳 > petasites\-japonicus;
+苊 > an\-organic\-compound;
+艫 > bow\-or\-prow\-of\-boat;
+舻 > bow\-or\-prow\-of\-boat;
+舮 > bow\-or\-prow\-of\-boat;
+膾 > minced\-meat\-or\-fish;
+腙 > an\-organic\-compound;
+脎 > an\-organic\-compound;
+胩 > an\-organic\-compound;
+肼 > an\-organic\-compound;
+肟 > an\-organic\-compound;
+耢 > a\-kind\-of\-farm\-tool;
+羢 > fine\-woolen\-fabrics;
+羑 > a\-guide\-to\-goodness;
+繲 > to\-work\-as\-a\-tailor;
+綀 > a\-kind\-of\-sackcloth;
+竑 > be\-vast\-and\-endless;
+禓 > to\-drive\-out\-demons;
+祐 > divine\-intervention;
+砜 > an\-organic\-compound;
+矔 > brilliant\-\(of\-eyes\);
+瞕 > cataract\-in\-the\-eye;
+櫟 > chestnut\-leaved\-oak;
+檪 > chestnut\-leaved\-oak;
+桪 > mythical\-giant\-tree;
+柮 > flat\-pieces\-of\-wood;
+暵 > dry\-by\-exposing\-sun;
+斝 > small\-jade\-wine\-cup;
+敄 > to\-put\-forth\-effort;
+撍 > to\-hold\-in\-the\-hand;
+揝 > to\-hold\-in\-the\-hand;
+揕 > roll\-up\-the\-sleeves;
+尗 > younger\-of\-brothers;
+壐 > the\-imperial\-signet;
+垕 > used\-in\-place\-names;
+圛 > used\-in\-place\-names;
+囈 > talk\-in\-one''s\-sleep;
+嘰 > sigh\-in\-disapproval;
+喞 > chirping\-of\-insects;
+唚 > vomiting\-of\-animals;
+哌 > used\-in\-translation;
+呺 > voice\-of\-anger\-vast;
+吖 > used\-in\-translation;
+偘 > ancient\-family\-name;
+䶯 > used\-in\-girl''s\-name;
+䶒 > outstanding\-ability;
+䶌 > a\-pustule\-or\-pimple;
+䶄 > striped\-mottled\-rat;
+䵱 > red\-and\-black\-color;
+䵮 > red\-and\-black\-color;
+䵔 > to\-turn\-on\-the\-heel;
+䴪 > a\-fabulous\-creature;
+䴠 > a\-young\-tailed\-deer;
+䱧 > a\-kind\-of\-fish\-eels;
+䰜 > a\-large\-earthen\-pot;
+䰛 > a\-large\-earthen\-pot;
+䮷 > movement\-of\-a\-horse;
+䮃 > to\-go\-before\-others;
+䭹 > movement\-of\-a\-horse;
+䫱 > a\-part\-of\-the\-skull;
+䫩 > to\-shake\-one''s\-head;
+䫅 > to\-shake\-one''s\-head;
+䪿 > the\-top\-of\-the\-head;
+䪽 > hoary\-haired\-person;
+䩷 > the\-sides\-of\-a\-shoe;
+䩧 > to\-tie\-up\-hurriedly;
+䩌 > to\-have\-a\-worn\-look;
+䧔 > to\-meet\-at\-the\-bank;
+䦙 > a\-government\-agency;
+䥴 > to\-engrave\-or\-carve;
+䥧 > a\-fine\-kind\-of\-jade;
+䤆 > a\-kind\-of\-rice\-wine;
+䤁 > cooked\-or\-well\-done;
+䣭 > an\-organic\-compound;
+䢋 > a\-marshal\-or\-herald;
+䠊 > to\-cut\-off\-the\-feet;
+䟣 > an\-animal\-in\-legend;
+䞳 > to\-stumble\-and\-fall;
+䝠 > a\-kind\-of\-wild\-boar;
+䜶 > a\-small\-kidney\-bean;
+䜁 > to\-abuse\-and\-insult;
+䙒 > to\-store\-or\-save\-up;
+䙏 > short\-sleeves\-shirt;
+䙁 > children''s\-garments;
+䘪 > clothes\-without\-hem;
+䖢 > first\-born\-silkworm;
+䖖 > to\-show\-familiarity;
+䕾 > a\-kind\-of\-vegetable;
+䕟 > a\-kind\-of\-vegetable;
+䕘 > a\-variety\-of\-fungus;
+䕃 > the\-shade\-of\-a\-tree;
+䔗 > a\-kind\-of\-vegetable;
+䓷 > nymphoides\-peltalum;
+䓚 > a\-kind\-of\-vegetable;
+䓍 > cruciferous\-flowers;
+䒨 > a\-kind\-of\-vegetable;
+䒈 > side\-beam\-of\-a\-boat;
+䒀 > short\-and\-deep\-boat;
+䑇 > medicine\-for\-a\-sore;
+䐭 > a\-discharge\-or\-flux;
+䏹 > to\-watch\-stealthily;
+䏷 > medicine\-for\-a\-sore;
+䏨 > to\-swell\-up\-greatly;
+䏆 > buzzing\-in\-the\-ears;
+䎿 > buzzing\-in\-the\-ears;
+䍷 > to\-chase\-each\-other;
+䍀 > clothes\-without\-hem;
+䌎 > to\-baste\-for\-sewing;
+䋹 > breadth\-of\-material;
+䋰 > to\-bind\-or\-restrain;
+䊙 > cooked\-or\-well\-done;
+䇽 > a\-coarse\-bamboo\-mat;
+䆯 > a\-short\-shaped\-face;
+䅯 > a\-variety\-of\-millet;
+䅟 > varieties\-of\-millet;
+䅕 > a\-variety\-of\-millet;
+䅒 > a\-sharp\-edged\-grass;
+䁋 > with\-one\-eye\-closed;
+䁃 > to\-look\-attentively;
+䀤 > insight\-of\-jealousy;
+䀣 > to\-look\-steadily\-at;
+㿓 > disease\-of\-the\-hoof;
+㾻 > not\-any\-progressive;
+㾶 > disease\-of\-the\-knee;
+㾢 > a\-malignant\-disease;
+㽭 > vacant\-lot\-or\-space;
+㽌 > the\-ridge\-of\-a\-roof;
+㽂 > a\-cracked\-container;
+㽁 > a\-large\-earthen\-pot;
+㼙 > brickwork\-of\-a\-well;
+㼒 > a\-kind\-of\-big\-melon;
+㸶 > color\-of\-the\-oxtail;
+㸵 > the\-lowing\-of\-an\-ox;
+㸥 > household\-registers;
+㸢 > cross\-beam\-of\-a\-bed;
+㸞 > blocks\-for\-printing;
+㸓 > to\-have\-disappeared;
+㸏 > cooked\-or\-well\-done;
+㸀 > blackened\-with\-soot;
+㷤 > rosy\-clouds\-of\-dawn;
+㲇 > the\-rattle\-of\-drums;
+㱾 > a\-kind\-of\-ornaments;
+㱼 > a\-kind\-of\-ornaments;
+㱹 > to\-die\-from\-disease;
+㱫 > destroyed\-or\-ruined;
+㱪 > stupid\-and\-confused;
+㱊 > asthmatic\-breathing;
+㱉 > moving\-of\-the\-mouth;
+㰴 > to\-grate\-on\-the\-ear;
+㰰 > asthmatic\-breathing;
+㰯 > the\-way\-of\-speaking;
+㯁 > household\-registers;
+㫯 > in\-contravention\-of;
+㩦 > to\-lead\-by\-the\-hand;
+㩘 > to\-moor\-to\-the\-bank;
+㩗 > to\-lead\-by\-the\-hand;
+㨝 > the\-very\-hard\-stuff;
+㨀 > to\-hold\-in\-the\-hand;
+吏 > government\-official;
+㧅 > to\-turn\-upside\-down;
+羚 > species\-of\-antelope;
+㦓 > difficult\-intention;
+㥝 > to\-arouse\-to\-action;
+㢊 > to\-set\-side\-by\-side;
+㢂 > of\-highly\-strategic;
+㟱 > shape\-of\-a\-mountain;
+㟓 > lofty\-and\-dangerous;
+㟒 > mountains\-adjoining;
+㝟 > in\-contravention\-of;
+㜱 > used\-in\-girl''s\-name;
+㜦 > used\-in\-girl''s\-name;
+㜡 > used\-in\-girl''s\-name;
+㜠 > used\-in\-girl''s\-name;
+㜙 > used\-in\-girl''s\-name;
+㜐 > used\-in\-girl''s\-name;
+㜍 > used\-in\-girl''s\-name;
+㜋 > used\-in\-girl''s\-name;
+㜂 > used\-in\-girl''s\-name;
+㛸 > used\-in\-girl''s\-name;
+㛷 > used\-in\-girl''s\-name;
+㛵 > used\-in\-girl''s\-name;
+㛭 > used\-in\-girl''s\-name;
+㛬 > used\-in\-girl''s\-name;
+㛫 > used\-in\-girl''s\-name;
+㛞 > used\-in\-girl''s\-name;
+㛝 > used\-in\-girl''s\-name;
+㛜 > used\-in\-girl''s\-name;
+㛙 > used\-in\-girl''s\-name;
+㛘 > used\-in\-girl''s\-name;
+㛖 > used\-in\-girl''s\-name;
+㛓 > used\-in\-girl''s\-name;
+㛏 > used\-in\-girl''s\-name;
+㛅 > used\-in\-girl''s\-name;
+㛄 > used\-in\-girl''s\-name;
+㚽 > used\-in\-girl''s\-name;
+㚸 > used\-in\-girl''s\-name;
+㚵 > used\-in\-girl''s\-name;
+㚱 > used\-in\-girl''s\-name;
+㚭 > used\-in\-girl''s\-name;
+㚫 > used\-in\-girl''s\-name;
+㚨 > used\-in\-girl''s\-name;
+㘫 > to\-fall\-into\-a\-well;
+㗶 > to\-expel\-the\-breath;
+㖪 > sound\-of\-surprising;
+㔹 > a\-surplus\-or\-excess;
+㔇 > a\-kind\-of\-farm\-tool;
+㓽 > a\-kind\-of\-farm\-tool;
+㓷 > to\-cut\-off\-the\-nose;
+㒔 > to\-shake\-one''s\-head;
+㒄 > brittle\-and\-friable;
+㒃 > capital\-form\-of\-two;
+㑛 > to\-shake\-one''s\-head;
+玖 > black\-colored\-jade;
+哪 > which\?\-where\?\-how\?;
+牲 > sacrificial\-animal;
+漢 > the\-chinese\-people;
+漕 > transport\-by\-water;
+阴 > ''female''\-principle;
+仙 > taoist\-super\-being;
+驻 > to\-be\-stationed\-at;
+駐 > to\-be\-stationed\-at;
+腮 > lower\-part\-of\-face;
+拒 > ward\-off\-with\-hand;
+桂 > cassia\-or\-cinnamon;
+朵 > cluster\-of\-flowers;
+曹 > ministry\-officials;
+罎 > an\-earthenware\-jar;
+陰 > ''female''\-principle;
+丸 > small\-round\-object;
+矩 > carpenter''s\-square;
+腊 > year\-end\-sacrifice;
+龟 > turtle\-or\-tortoise;
+邸 > official\-residence;
+侃 > upright\-and\-strong;
+邂 > unexpected\-meeting;
+怯 > lacking\-in\-courage;
+甸 > suburbs\-of\-capital;
+捞 > scoop\-out\-of\-water;
+扛 > carry\-on\-shoulders;
+虔 > act\-with\-reverence;
+霖 > long\-spell\-of\-rain;
+韧 > strong\-and\-pliable;
+瑾 > brilliance\-of\-gems;
+桔 > chinese\-bellflower;
+鸳 > male\-mandarin\-duck;
+钗 > ornamental\-hairpin;
+巅 > summit\-of\-mountain;
+樨 > osmanthus\-fragrans;
+蠡 > wood\-boring\-insect;
+蹂 > trample\-under\-foot;
+骥 > thoroughbred\-horse;
+唁 > express\-condolence;
+骅 > an\-excellent\-horse;
+碉 > room\-made\-of\-stone;
+疟 > intermittent\-fever;
+纣 > name\-of\-an\-emperor;
+磬 > musical\-instrument;
+爿 > half\-of\-tree\-trunk;
+旎 > fluttering\-of\-flag;
+夔 > one\-legged\-monster;
+殍 > to\-starve\-to\-death;
+骊 > a\-pure\-black\-horse;
+湎 > flushed\-with\-drink;
+喵 > the\-mew\-of\-the\-cat;
+焙 > dry\-over\-slow\-fire;
+绾 > to\-string\-together;
+眦 > corner\-of\-the\-eyes;
+瑁 > fine\-piece\-of\-jade;
+榘 > carpenter''s\-square;
+粳 > non\-glutinous\-rice;
+餮 > a\-legendary\-animal;
+汊 > a\-branching\-stream;
+缃 > light\-yellow\-color;
+檩 > the\-bole\-of\-a\-tree;
+奁 > lady''s\-vanity\-case;
+楸 > mallotus\-japonicus;
+骺 > tip\-of\-a\-long\-bone;
+藿 > lophanthus\-rugosus;
+樾 > the\-shade\-of\-trees;
+酤 > to\-deal\-in\-spirits;
+臌 > dropsical\-swelling;
+跫 > sound\-of\-footsteps;
+綮 > embroidered\-banner;
+觳 > an\-ancient\-measure;
+杌 > the\-stump\-f\-a\-tree;
+嵫 > a\-hill\-in\-shantung;
+擗 > to\-beat\-the\-breast;
+脔 > small\-lump\-of\-meat;
+醅 > unstrained\-spirits;
+羰 > carbonyl\-\(radical\);
+蛸 > long\-legged\-spider;
+瞀 > to\-look\-at\-closely;
+殳 > name\-of\-old\-weapon;
+崞 > mountain\-in\-shanxi;
+垲 > high\-and\-dry\-place;
+虿 > a\-kind\-of\-scorpion;
+疳 > childhood\-diseases;
+罾 > a\-large\-square\-net;
+獬 > a\-fabulous\-monster;
+龜 > turtle\-or\-tortoise;
+龖 > flight\-of\-a\-dragon;
+鸜 > a\-species\-of\-mynah;
+鷽 > oriental\-bullfinch;
+鴛 > male\-mandarin\-duck;
+鴗 > alcedo\-bengalensis;
+鱵 > hyporhampus\-sajuri;
+鬠 > to\-make\-a\-top\-knot;
+驪 > a\-pure\-black\-horse;
+驥 > thoroughbred\-horse;
+驊 > an\-excellent\-horse;
+餼 > sacrificial\-victim;
+顋 > lower\-part\-of\-face;
+頔 > good\-and\-beautiful;
+韌 > strong\-and\-pliable;
+靱 > strong\-and\-pliable;
+靭 > strong\-and\-pliable;
+靫 > strong\-and\-pliable;
+釵 > ornamental\-hairpin;
+釒 > kangxi\-radical\-167;
+鄮 > ancient\-place\-name;
+轙 > rings\-on\-the\-yokes;
+軰 > a\-row\-of\-carriages;
+谽 > a\-mouth\-or\-opening;
+訁 > kangxi\-radical\-149;
+襵 > a\-pleat\-in\-a\-skirt;
+褰 > lift\-up\-the\-skirts;
+蠆 > a\-kind\-of\-scorpion;
+蚹 > eulota\-peliomphala;
+蘷 > one\-legged\-monster;
+薷 > elshotria\-paltrini;
+蕺 > houttuynia\-cordata;
+蓴 > edible\-water\-plant;
+葴 > physalis\-alkekengi;
+荅 > answer\:\-small\-bean;
+茖 > allium\-victorialis;
+芣 > medicinal\-plantago;
+臠 > small\-lump\-of\-meat;
+臘 > year\-end\-sacrifice;
+臈 > year\-end\-sacrifice;
+翯 > glistening\-plumage;
+翖 > ksc\-extension\-3108;
+羧 > carboxyl\-\(radical\);
+罈 > an\-earthenware\-jar;
+緗 > light\-yellow\-color;
+綰 > to\-string\-together;
+紂 > name\-of\-an\-emperor;
+糒 > food\-for\-a\-journey;
+稉 > non\-glutinous\-rice;
+秔 > non\-glutinous\-rice;
+碞 > room\-made\-of\-stone;
+皪 > luster\-\(of\-pearls\);
+瘧 > intermittent\-fever;
+痜 > a\-scabby\-bald\-head;
+甿 > farming\-population;
+甋 > a\-jar\-without\-ears;
+琤 > jade\-of\-jade\-being;
+玘 > court\-dress\-jewels;
+獳 > fierce\-dog\-looking;
+煍 > to\-colour\-by\-smoke;
+灥 > a\-group\-of\-springs;
+泲 > kind\-of\-white\-wine;
+氍 > fine\-woollen\-cloth;
+檁 > the\-bole\-of\-a\-tree;
+柺 > an\-old\-man''s\-staff;
+杻 > ligustrum\-sinenese;
+杙 > a\-tiny\-wooden\-post;
+朶 > cluster\-of\-flowers;
+昷 > to\-feed\-a\-prisoner;
+旼 > gentle\-and\-affable;
+擭 > trap\-catch\-animals;
+撈 > scoop\-out\-of\-water;
+彄 > nock\-at\-end\-of\-bow;
+巔 > summit\-of\-mountain;
+巓 > summit\-of\-mountain;
+嶨 > big\-rocky\-mountain;
+嵖 > name\-of\-a\-mountain;
+峹 > name\-of\-a\-mountain;
+峱 > name\-of\-a\-mountain;
+岢 > name\-of\-a\-mountain;
+岍 > name\-of\-a\-mountain;
+奩 > lady''s\-vanity\-case;
+壜 > earthen\-jar\-or\-jug;
+墰 > an\-earthenware\-jar;
+墐 > to\-build\-with\-soil;
+塏 > high\-and\-dry\-place;
+噋 > to\-swallow\-hastily;
+哰 > incoherent\-chatter;
+僊 > taoist\-super\-being;
+佷 > to\-act\-contrary\-to;
+亀 > turtle\-or\-tortoise;
+乑 > stand\-side\-by\-side;
+丬 > half\-of\-tree\-trunk;
+䶣 > to\-grind\-the\-teeth;
+䶟 > to\-gnash\-the\-teeth;
+䵕 > a\-varietyof\-millet;
+䴱 > cakes\-and\-biscuits;
+䴦 > a\-legendary\-animal;
+䳨 > the\-female\-phoenix;
+䳔 > a\-pigeon\-like\-bird;
+䳎 > a\-pigeon\-like\-bird;
+䱳 > a\-kind\-of\-sturgeon;
+䱣 > a\-long\-narrow\-fish;
+䰪 > mischievous\-spirit;
+䰨 > mischievous\-spirit;
+䯱 > the\-hair\-stands\-up;
+䯏 > the\-shoulder\-blade;
+䯋 > the\-shoulder\-blade;
+䮥 > color\-of\-the\-horse;
+䮝 > a\-legendary\-animal;
+䭰 > strong\-sweet\-smell;
+䭯 > strong\-sweet\-smell;
+䭋 > to\-eat\-to\-the\-full;
+䭃 > to\-eat\-to\-the\-fool;
+䬾 > cakes\-and\-biscuits;
+䬴 > fodder\-for\-animals;
+䬬 > to\-eat\-to\-the\-full;
+䬨 > to\-eat\-to\-the\-full;
+䬧 > round\-shaped\-cakes;
+䫐 > to\-bend\-one''s\-head;
+䪌 > cushion\-for\-saddle;
+䨆 > a\-kind\-of\-pheasant;
+䧼 > the\-the\-snow\-goose;
+䧦 > name\-of\-a\-hillside;
+䧇 > name\-of\-a\-hillside;
+䦮 > door\-of\-the\-center;
+䦒 > the\-door\-is\-closed;
+䦐 > the\-bolt\-of\-a\-door;
+䥳 > a\-chemical\-element;
+䥲 > a\-chemical\-element;
+䥞 > to\-cut\-with\-shears;
+䥝 > desperate\-fighting;
+䤄 > flushed\-with\-drink;
+䣺 > filtrated\-the\-wine;
+䣀 > name\-of\-a\-mountain;
+䡠 > strong\-and\-durable;
+䡛 > name\-of\-a\-carriage;
+䠧 > hard\-to\-go\-forward;
+䠡 > sound\-of\-footsteps;
+䟝 > to\-walk\-right\-into;
+䝞 > name\-of\-a\-immortal;
+䛉 > to\-induce\-by\-words;
+䚧 > curved\-with\-angles;
+䙃 > sleeveless\-clothes;
+䘍 > a\-kind\-of\-scorpion;
+䗻 > a\-kind\-of\-sea\-crab;
+䗨 > lepsima\-saccharina;
+䗣 > insect\-of\-mulberry;
+䗍 > wood\-boring\-insect;
+䖧 > a\-poisonous\-insect;
+䖓 > of\-a\-walking\-tiger;
+䕪 > the\-water\-plantain;
+䔼 > sound\-of\-the\-grass;
+䔃 > cordate\-houttuynia;
+䓫 > name\-of\-a\-mountain;
+䓨 > long\-necked\-bottle;
+䓠 > the\-water\-plantain;
+䓖 > cnidium\-officinale;
+䓃 > melancholy\-and\-sad;
+䒝 > root\-of\-the\-thatch;
+䑙 > put\-out\-the\-tongue;
+䑆 > feel\-like\-vomiting;
+䐔 > muscle\-of\-the\-calf;
+䎾 > big\-and\-round\-eyes;
+䎴 > a\-legendary\-spirit;
+䎪 > the\-stalk\-of\-grain;
+䎔 > fine\-and\-soft\-hair;
+䎏 > young\-birds\-flying;
+䎍 > fine\-and\-soft\-hair;
+䍩 > to\-offer\-provision;
+䍣 > a\-kind\-of\-fish\-net;
+䌍 > fine\-woven\-pattern;
+䌉 > the\-large\-of\-a\-net;
+䋗 > strong\-and\-durable;
+䋈 > to\-bind\-loose\-hemp;
+䉬 > coarse\-bamboo\-mats;
+䈮 > a\-woven\-instrument;
+䇳 > a\-memoradum\-tablet;
+䆪 > color\-of\-the\-light;
+䆥 > to\-pierce\-throughj;
+䆤 > to\-pierce\-throughj;
+䆑 > a\-little\-protruded;
+䅽 > fragrance\-or\-aroma;
+䅱 > to\-eat\-to\-the\-full;
+䅧 > fine\-rice\-seedling;
+䅝 > the\-stalk\-of\-grain;
+䅜 > to\-store\-up\-grains;
+䅀 > the\-stalk\-of\-grain;
+䄚 > to\-worship\-the\-god;
+䃽 > name\-of\-a\-mountain;
+䃜 > a\-fine\-black\-stone;
+䁊 > dark\-and\-deep\-eyed;
+䀞 > with\-heavy\-eyelids;
+䀗 > to\-look\-askance\-at;
+㿌 > lump\-in\-the\-throat;
+㼣 > bricks\-of\-the\-well;
+㼇 > fine\-jade\-or\-agate;
+㻗 > a\-string\-of\-pearls;
+㻊 > a\-red\-colored\-jade;
+㻅 > jade\-decorated\-cap;
+㺧 > a\-white\-yellow\-dog;
+㹤 > lacking\-in\-courage;
+㸽 > a\-two\-years\-old\-ox;
+㸬 > a\-two\-years\-old\-ox;
+㸈 > scorched\-or\-burned;
+㷳 > color\-of\-the\-flame;
+㷢 > bundle\-of\-charcoal;
+㷠 > a\-will\-o''\-the\-wisp;
+㶶 > scorched\-or\-burned;
+㵓 > the\-water\-is\-clear;
+㴾 > swelling\-or\-rising;
+㳂 > to\-follow\-a\-course;
+㲡 > thick\-coat\-of\-hair;
+㲗 > to\-smooth\-the\-hair;
+㯶 > the\-coir\-palm\-tree;
+㯲 > a\-wooden\-framework;
+㯛 > gourd\-shaped\-dates;
+㮻 > to\-scratch\-lightly;
+㮍 > amemorandum\-tablet;
+㭨 > the\-cocoa\-nut\-palm;
+㭡 > name\-of\-a\-mountain;
+㭝 > name\-of\-a\-pavilion;
+㬴 > the\-moon\-is\-dimmed;
+㬒 > the\-sun\-are\-dimmed;
+㬎 > motes\-in\-a\-sunbeam;
+㫦 > of\-look\-of\-the\-sun;
+㫞 > of\-look\-of\-the\-sun;
+㪸 > to\-fill\-a\-cup\-with;
+㩃 > to\-take\-or\-capture;
+㨽 > to\-cut\-or\-rip\-open;
+㨡 > to\-push\-with\-hands;
+㨜 > to\-help\-each\-other;
+杻 > ligustrum\-sinenese;
+㧀 > the\-bolt\-of\-a\-door;
+㦾 > the\-bolt\-of\-a\-door;
+驪 > a\-pure\-black\-horse;
+㥸 > to\-sympathize\-with;
+㥨 > unhappy\-displeased;
+㤪 > to\-find\-fault\-with;
+臘 > year\-end\-sacrifice;
+龜 > turtle\-or\-tortoise;
+龜 > turtle\-or\-tortoise;
+㣌 > to\-join\-two\-things;
+㡯 > wall\-of\-a\-building;
+㠦 > name\-of\-a\-mountain;
+㠠 > name\-of\-a\-mountain;
+㠓 > name\-of\-a\-mountain;
+㠏 > name\-of\-a\-mountain;
+㠆 > name\-of\-a\-mountain;
+㟳 > name\-of\-a\-mountain;
+㟰 > name\-of\-a\-mountain;
+㟪 > name\-of\-a\-mountain;
+㟦 > name\-of\-a\-mountain;
+㟘 > name\-of\-a\-mountain;
+㟍 > name\-of\-a\-mountain;
+㟊 > name\-of\-a\-mountain;
+㟈 > name\-of\-a\-mountain;
+㟆 > name\-of\-a\-mountain;
+㟄 > name\-of\-a\-mountain;
+㟀 > name\-of\-a\-mountain;
+㞻 > name\-of\-a\-mountain;
+㞴 > name\-of\-a\-mountain;
+㞳 > name\-of\-a\-mountain;
+㞲 > name\-of\-a\-mountain;
+㞰 > name\-of\-a\-mountain;
+㞨 > name\-of\-a\-mountain;
+㞦 > name\-of\-a\-mountain;
+㘳 > a\-hillock\-or\-mound;
+㘱 > to\-fall\-into\-ruins;
+㘜 > a\-kind\-of\-silkworm;
+㖅 > sound\-of\-a\-whistle;
+㖃 > to\-roar\-of\-animals;
+㔢 > to\-break\-something;
+皿 > shallow\-container;
+屓 > gigantic\-strength;
+派 > school\-of\-thought;
+姓 > one''s\-family\-name;
+煎 > fry\-in\-fat\-or\-oil;
+襁 > swaddling\-clothes;
+哈 > sound\-of\-laughter;
+鸚 > species\-of\-parrot;
+欧 > translit\.\:\-europe;
+鵡 > species\-of\-parrot;
+订 > draw\-up\-agreement;
+偏 > inclined\-one\-side;
+歔 > blow\-through\-nose;
+培 > bank\-up\-with\-dirt;
+漫 > overflow\-of\-water;
+侠 > chivalrous\-person;
+姆 > child''s\-governess;
+盒 > small\-box\-or\-case;
+儒 > confucian\-scholar;
+阪 > hillside\-farmland;
+迈 > take\-a\-big\-stride;
+捏 > pick\-with\-fingers;
+浙 > zhejiang\-province;
+筧 > bamboo\-water\-pipe;
+艘 > counter\-for\-ships;
+趁 > take\-advantage\-of;
+鉢 > earthenware\-basin;
+蓬 > type\-of\-raspberry;
+辖 > linchpin\-of\-wheel;
+逅 > meet\-unexpectedly;
+嘎 > sound\-of\-laughter;
+酣 > enjoy\-intoxicants;
+饺 > stuffed\-dumplings;
+咏 > sing\-song\-or\-poem;
+钵 > earthenware\-basin;
+搀 > give\-helping\-hand;
+捶 > strike\-with\-stick;
+刨 > carpenter''s\-plane;
+蠕 > eumenes\-polifomis;
+饨 > stuffed\-dumplings;
+崆 > kongtong\-mountain;
+盅 > small\-cup\-or\-bowl;
+梆 > watchman''s\-rattle;
+嵇 > mountain\-in\-henan;
+耷 > ears\-hanging\-down;
+羌 > qiang\-nationality;
+苞 > a\-variety\-of\-rush;
+鹦 > species\-of\-parrot;
+藜 > chenopodium\-album;
+艄 > stern\-of\-a\-vessel;
+鹉 > species\-of\-parrot;
+峁 > yellow\-dirt\-mount;
+镔 > high\-quality\-iron;
+鲫 > carassius\-auratus;
+龇 > to\-show\-the\-teeth;
+沭 > river\-in\-shantung;
+榫 > mortise\-and\-tenon;
+萋 > luxuriant\-foliage;
+醮 > religious\-service;
+牝 > female\-of\-species;
+曷 > why\?\-what\?\-where\?;
+瑷 > fine\-quality\-jade;
+耦 > plow\-side\-by\-side;
+鸶 > the\-eastern\-egret;
+篦 > fine\-toothed\-comb;
+妁 > act\-as\-go\-between;
+荥 > a\-county\-in\-henan;
+戽 > to\-bale\-out\-water;
+枳 > trifoliate\-orange;
+椐 > zelkowa\-acuminata;
+崤 > mountain\-in\-henan;
+魉 > a\-kind\-of\-monster;
+颞 > the\-temporal\-bone;
+锴 > high\-quality\-iron;
+笕 > bamboo\-water\-pipe;
+耩 > to\-plough\.\-to\-sow;
+廨 > government\-office;
+蟮 > type\-of\-earthworm;
+蛱 > kind\-of\-butterfly;
+禳 > pray\-or\-sacrifice;
+瞢 > eyesight\-obscured;
+蔸 > counter\-for\-plant;
+螅 > \(intestinal\-worm\);
+祧 > an\-ancestral\-hall;
+柝 > watchman''s\-rattle;
+蠃 > the\-solitary\-wasp;
+蜾 > the\-solitary\-wasp;
+聃 > ears\-without\-rims;
+耜 > spade\-shaped\-tool;
+慝 > do\-evil\-in\-secret;
+庳 > a\-low\-built\-house;
+鼢 > a\-variety\-of\-mole;
+蚺 > a\-boa\-constrictor;
+颥 > the\-temporal\-bone;
+硇 > a\-kind\-of\-mineral;
+硭 > a\-crude\-saltpetre;
+胨 > a\-kind\-of\-protein;
+齜 > to\-show\-the\-teeth;
+齄 > red\-sores\-on\-nose;
+黟 > black\-and\-shining;
+鹁 > species\-of\-pigeon;
+鵵 > scops\-semitorques;
+鵓 > species\-of\-pigeon;
+鯽 > carassius\-auratus;
+鮸 > sciaena\-albiflora;
+魫 > the\-young\-of\-fish;
+魎 > a\-kind\-of\-monster;
+髽 > to\-dress\-the\-hair;
+饩 > sacrficial\-victim;
+餃 > stuffed\-dumplings;
+餂 > to\-obtain\-by\-hook;
+飩 > stuffed\-dumplings;
+顳 > the\-temporal\-bone;
+顬 > the\-temporal\-bone;
+鞸 > leather\-arm\-guard;
+鞲 > leather\-arm\-guard;
+靿 > the\-leg\-of\-a\-boot;
+隸 > be\-subservient\-to;
+隷 > be\-subservient\-to;
+閪 > to\-lose\-lost\-item;
+鑤 > carpenter''s\-plane;
+鑌 > high\-quality\-iron;
+鍇 > high\-quality\-iron;
+銠 > rhodium\-ruthenium;
+鉕 > promethium\-bronze;
+鉋 > carpenter''s\-plane;
+鈳 > columbium\-niobium;
+醭 > moulds\-on\-liquids;
+醑 > to\-strain\-spirits;
+酺 > drink\-with\-others;
+邁 > take\-a\-big\-stride;
+轄 > linchpin\-of\-wheel;
+貍 > a\-fox\-like\-animal;
+豋 > ceremonial\-vessel;
+訂 > draw\-up\-agreement;
+覼 > explain\-in\-detail;
+覙 > explain\-in\-detail;
+蝡 > eumenes\-polifomis;
+蜔 > inlaid\-shell\-work;
+蛺 > kind\-of\-butterfly;
+蚦 > a\-boa\-constrictor;
+蘵 > physalis\-angulata;
+藨 > kind\-of\-raspberry;
+蕸 > water\-lily''s\-leaf;
+蕑 > valeriana\-villosa;
+葎 > humulus\-japonicus;
+菣 > artemisia\-apiacea;
+莛 > stalks\-of\-grasses;
+茍 > to\-be\-circumspect;
+罛 > large\-fishing\-net;
+缽 > earthenware\-basin;
+縰 > band\-for\-the\-hair;
+綎 > silk\-braided\-cord;
+紬 > kind\-of\-thin\-silk;
+籸 > powdery\-substance;
+籓 > big\-winnow\-basket;
+篨 > coarse\-bamboo\-mat;
+箆 > fine\-toothed\-comb;
+祊 > river\-in\-shandong;
+瘵 > a\-wasting\-disease;
+璫 > pendant\-ornaments;
+璦 > fine\-quality\-jade;
+玞 > an\-inferior\-agate;
+熀 > the\-blaze\-of\-fire;
+灎 > movement\-of\-water;
+湑 > to\-strain\-spirits;
+渰 > forming\-or\-rising;
+洶 > the\-rush\-of\-water;
+朠 > color\-of\-the\-moon;
+暔 > name\-of\-a\-country;
+攰 > totally\-exhausted;
+掫 > be\-on\-night\-watch;
+捥 > to\-bend\-the\-wrist;
+抌 > to\-bale\-out\-water;
+愰 > clearness\-of\-mind;
+弖 > phonetic\-for\-''te'';
+嵆 > mountain\-in\-henan;
+屭 > gigantic\-strength;
+尨 > shaggy\-haired\-dog;
+夊 > kangxi\-radical\-35;
+喿 > chirping\-of\-birds;
+喼 > used\-phonetically;
+喹 > chemical\-compound;
+哵 > the\-cry\-of\-a\-bird;
+哴 > crying\-of\-infants;
+吢 > vomiting\-of\-a\-dog;
+倈 > to\-induce\-to\-come;
+俠 > chivalrous\-person;
+俈 > to\-inform\-quickly;
+仂 > surplus\-or\-excess;
+乪 > a\-bend\-in\-a\-river;
+䶰 > feather\-ornaments;
+䶖 > disease\-of\-tongue;
+䵜 > to\-plough\-and\-sow;
+䴊 > the\-crow\-pheasant;
+䳤 > a\-kind\-of\-strange;
+䳙 > a\-egret\-like\-bird;
+䯥 > with\-a\-high\-skull;
+䯢 > partial\-paralysis;
+䮫 > a\-big\-mule\-an\-ass;
+䮚 > diseases\-of\-horse;
+䮐 > in\-good\-condition;
+䭔 > steamed\-dumplings;
+䬰 > light\-refreshment;
+䬕 > sound\-of\-the\-wind;
+䬍 > the\-sound\-of\-wind;
+䬆 > a\-blustering\-gale;
+䬃 > the\-sound\-of\-wind;
+䬀 > sound\-of\-the\-wind;
+䫦 > the\-lower\-jawbone;
+䫟 > facial\-complexion;
+䫍 > to\-bow\-one''s\-head;
+䫉 > facial\-appearance;
+䨕 > pouring\-with\-rain;
+䧺 > the\-male\-of\-birds;
+䦪 > sound\-of\-the\-door;
+䦝 > sound\-of\-the\-door;
+䦖 > sound\-of\-the\-door;
+䦃 > to\-dig\-with\-a\-hoe;
+䣻 > color\-of\-the\-wine;
+䣪 > color\-of\-the\-wine;
+䢝 > the\-next\-in\-order;
+䡷 > noise\-of\-vehicles;
+䡪 > fan\-of\-a\-carriage;
+䡙 > an\-armed\-carriage;
+䞕 > color\-of\-the\-fire;
+䞂 > fairly\-prosperous;
+䝺 > to\-pierce\-through;
+䝹 > fairly\-prosperous;
+䝳 > to\-kill\-for\-money;
+䝲 > farewell\-presents;
+䜢 > cruel\-and\-violent;
+䚠 > unbroken\-firewood;
+䚝 > new\-growing\-horns;
+䚚 > horn\-of\-an\-animal;
+䚑 > to\-steal\-a\-glance;
+䚀 > to\-see\-stealthily;
+䙴 > to\-soar\-as\-a\-bird;
+䙪 > a\-loop\-for\-button;
+䘎 > name\-of\-an\-insect;
+䗹 > hairy\-caterpillar;
+䗥 > the\-solitary\-wasp;
+䕧 > zizania\-latifolia;
+䕠 > coarse\-bamboo\-mat;
+䕆 > round\-straw\-quilt;
+䓛 > molecular\-formula;
+䒽 > illicium\-anisatum;
+䒐 > disturbed\-in\-mind;
+䒏 > disturbed\-in\-mind;
+䑼 > ocean\-going\-liner;
+䐠 > between\-the\-flesh;
+䐘 > to\-laugh\-heartily;
+䐖 > to\-laugh\-heartily;
+䏰 > a\-kind\-of\-insects;
+䏛 > a\-kind\-of\-insects;
+䎨 > to\-plough\-and\-sow;
+䍭 > a\-ewe\-or\-she\-goat;
+䍧 > a\-ewe\-or\-she\-goat;
+䍇 > flat\-bottom\-crock;
+䌨 > thin\-silk\-fabrics;
+䋻 > to\-spin\-and\-weave;
+䋺 > a\-swing\-a\-crupper;
+䋘 > to\-hand\-by\-a\-rope;
+䊯 > grains\-with\-beard;
+䊚 > steamed\-dumplings;
+䉌 > crude\-bamboo\-mats;
+䈠 > books\-and\-volumes;
+䆕 > to\-pierce\-through;
+䆔 > to\-pierce\-through;
+䄉 > a\-rite\-or\-service;
+䃿 > a\-rite\-or\-service;
+䂣 > a\-kind\-of\-mineral;
+䁽 > eyesight\-obscured;
+䁸 > eyesight\-obscured;
+䁄 > to\-close\-the\-eyes;
+䀹 > to\-wink\-eyelashes;
+㿃 > an\-ox\-headed\-boil;
+㾱 > incurable\-disease;
+㽍 > an\-earthen\-vessel;
+㼴 > an\-earthen\-vessel;
+㺿 > a\-jade\-like\-stone;
+㶿 > the\-smoke\-went\-up;
+㶴 > a\-very\-great\-fire;
+㵫 > water\-gushing\-out;
+㵍 > filled\-with\-water;
+㵄 > name\-of\-a\-dynasty;
+㳜 > the\-flowing\-water;
+㲲 > fine\-cotton\-cloth;
+㲘 > fine\-woolen\-cloth;
+㲋 > a\-kind\-of\-animals;
+㲃 > smooth\-and\-curved;
+㰩 > sound\-of\-laughter;
+㯿 > handle\-of\-a\-ladle;
+㯦 > the\-game\-of\-chess;
+㮵 > common\-sandalwood;
+㮨 > codium\-macronatum;
+㮚 > the\-chestnut\-tree;
+㬛 > to\-dry\-in\-the\-sun;
+㩮 > to\-lift\-up\-or\-off;
+㩩 > to\-come\-to\-an\-end;
+㩙 > a\-cork\-or\-stopper;
+㨢 > to\-rip\-open\-flesh;
+隸 > be\-subservient\-to;
+㣢 > to\-rest\-from\-work;
+㣓 > literary\-in\-taste;
+㣍 > a\-raised\-platform;
+㢮 > to\-unstring\-a\-bow;
+㢑 > a\-collapsed\-house;
+㢈 > a\-collapsed\-house;
+㢄 > a\-kind\-of\-utensil;
+㡟 > bed\-mats\-for\-baby;
+㠷 > a\-vessel\-for\-rice;
+㠥 > rugged\-and\-uneven;
+㠢 > rugged\-and\-uneven;
+㟴 > lump\-on\-the\-hills;
+㟤 > zhuang\-in\-guangxi;
+㟃 > to\-have\-charge\-of;
+㞭 > name\-of\-an\-island;
+㝌 > prolonged\-illness;
+㛴 > to\-anger\-to\-annoy;
+㚅 > to\-worship\-of\-god;
+㙩 > an\-enclosing\-wall;
+㘦 > wall\-made\-of\-soil;
+㘚 > angry\-air\-of\-look;
+㗼 > eating\-or\-talking;
+㗥 > sound\-of\-striking;
+㖸 > to\-laugh\-heartily;
+㖧 > can\-not\-see\-clear;
+㔝 > strong\-resistance;
+㓾 > to\-wound\-the\-skin;
+㑝 > to\-make\-a\-fool\-of;
+㑏 > to\-stand\-and\-wait;
+㑊 > a\-kind\-of\-disease;
+㐲 > name\-of\-an\-island;
+个 > numerary\-adjunct;
+里 > unit\-of\-distance;
+阳 > ''male''\-principle;
+訝 > express\-surprise;
+黍 > glutinous\-millet;
+剧 > theatrical\-plays;
+蘂 > stamen\-or\-pistil;
+挺 > to\-stand\-upright;
+础 > foundation\-stone;
+劇 > theatrical\-plays;
+舅 > mother''s\-brother;
+萧 > common\-artemisia;
+個 > numerary\-adjunct;
+俺 > personal\-pronoun;
+玲 > tinkling\-of\-jade;
+陽 > ''male''\-principle;
+箇 > numerary\-adjunct;
+捩 > twist\-with\-hands;
+讶 > express\-surprise;
+黛 > blacken\-eyebrows;
+妆 > to\-adorn\-oneself;
+幢 > carriage\-curtain;
+梭 > weaver''s\-shuttle;
+漪 > ripples\-on\-water;
+眷 > take\-interest\-in;
+勋 > meritorious\-deed;
+甭 > there\-is\-no\-need;
+祠 > ancestral\-temple;
+舔 > lick\-with\-tongue;
+蕊 > unopened\-flowers;
+赣 > jiangxi\-province;
+跷 > raise\-one''s\-foot;
+剁 > chop\-by\-pounding;
+薰 > a\-medicinal\-herb;
+叼 > holding\-in\-mouth;
+荼 > bitter\-vegetable;
+徙 > move\-one''s\-abode;
+涔 > river\-in\-shaanxi;
+潢 > expanse\-of\-water;
+秸 > stalks\-of\-millet;
+袈 > buddhist\-cassock;
+珞 > kind\-of\-necklace;
+啾 > wailing\-of\-child;
+亻 > radical\-number\-9;
+舐 > lick\-with\-tongue;
+夙 > early\-in\-morning;
+鹘 > a\-kind\-of\-pigeon;
+娩 > give\-birth\-child;
+姝 > a\-beautiful\-girl;
+懑 > be\-sick\-at\-heart;
+锉 > carpenter''s\-file;
+洱 > a\-lake\-in\-yunnan;
+蝈 > small\-green\-frog;
+帼 > women''s\-headgear;
+狎 > be\-familiar\-with;
+胪 > arrange\-in\-order;
+豢 > domestic\-animals;
+眇 > blind\-in\-one\-eye;
+羿 > legendary\-archer;
+芩 > salt\-marsh\-plant;
+茭 > an\-aquatic\-grass;
+蓖 > castor\-oil\-plant;
+傧 > entertain\-guests;
+薜 > evergreen\-shrubs;
+趺 > sit\-cross\-legged;
+椹 > a\-chopping\-board;
+霈 > torrential\-rains;
+跏 > sit\-cross\-legged;
+曩 > in\-ancient\-times;
+栌 > supporting\-block;
+哚 > chemical\-element;
+筌 > bamboo\-fish\-trap;
+浍 > irrigation\-ditch;
+猁 > a\-kind\-of\-monkey;
+啶 > \-d\-\+\-ine\-\(chem\.\);
+鬯 > sacrificial\-wine;
+鲷 > pagrosomus\-major;
+聱 > bent\-and\-twisted;
+劢 > put\-forth\-effort;
+蟪 > a\-kind\-of\-cicada;
+螗 > a\-kind\-of\-cicada;
+赆 > farewell\-present;
+埯 > cover\-with\-earth;
+鲔 > kind\-of\-sturgeon;
+罨 > medical\-compress;
+嫜 > husband''s\-parent;
+漤 > marinate\-in\-salt;
+嚆 > give\-forth\-sound;
+薹 > cyperus\-rotundus;
+茆 > species\-of\-grass;
+齙 > projecting\-teeth;
+鹶 > salty\-and\-bitter;
+鶻 > a\-kind\-of\-pigeon;
+鯛 > pagrosomus\-major;
+鯆 > the\-skate\-or\-ray;
+鮪 > kind\-of\-sturgeon;
+魬 > sole\-or\-flounder;
+骴 > a\-putrid\-carcase;
+馘 > cut\-off\-left\-ear;
+飀 > soughing\-of\-wind;
+韝 > leather\-arm\-band;
+韊 > a\-case\-for\-a\-bow;
+鞶 > big\-leather\-belt;
+雗 > a\-white\-pheasant;
+隤 > to\-fall\-in\-ruins;
+闠 > gate\-of\-a\-market;
+銼 > carpenter''s\-file;
+銻 > antimony\-stibium;
+銧 > point\-of\-a\-sword;
+鉀 > potassium\-kalium;
+躷 > of\-short\-stature;
+蹺 > raise\-one''s\-foot;
+蹱 > to\-stagger\-along;
+蹐 > take\-short\-steps;
+贛 > jiangxi\-province;
+贐 > farewell\-present;
+賙 > give\-for\-charity;
+豏 > half\-grown\-beans;
+誕 > to\-bear\-children;
+覂 > to\-throw\-a\-rider;
+襱 > legs\-of\-trousers;
+裛 > to\-wrap\-and\-bind;
+袗 > unlined\-garments;
+衎 > to\-give\-pleasure;
+蟿 > acrida\-chinensis;
+蟈 > small\-green\-frog;
+螋 > spider\-millipede;
+蝻 > immature\-locusts;
+虥 > striped\-wild\-cat;
+藦 > edible\-mushrooms;
+藋 > sambucu\-javinica;
+薫 > a\-medicinal\-herb;
+薃 > cyperus\-amuricus;
+蕭 > common\-artemisia;
+蕋 > unopened\-flowers;
+蔇 > luxuriant\-growth;
+葙 > celosia\-argentea;
+菉 > the\-green\-bamboo;
+芘 > malva\-sylvestris;
+芃 > luxuriant\-growth;
+臚 > arrange\-in\-order;
+耼 > ears\-without\-rim;
+綵 > varicolored\-silk;
+紽 > a\-strand\-of\-silk;
+糵 > fermenting\-grain;
+糱 > fermenting\-grain;
+糈 > sacrificial\-rice;
+籧 > crude\-bamboo\-mat;
+箯 > bamboo\-palanquin;
+箊 > bamboo\-with\-thin;
+秷 > sound\-of\-reaping;
+礎 > foundation\-stone;
+磥 > a\-heap\-of\-stones;
+砫 > ancestral\-tablet;
+瞘 > deeply\-sunk\-eyes;
+瞋 > glare\-with\-anger;
+睜 > to\-open\-the\-eyes;
+盦 > lid\-of\-a\-caldron;
+癉 > to\-hate\-bitterly;
+瘅 > to\-hate\-bitterly;
+瓟 > the\-bottle\-gourd;
+猸 > a\-kind\-of\-animal;
+狻 > a\-fabulous\-beast;
+烜 > light\-of\-the\-sun;
+灠 > marinate\-in\-salt;
+澮 > irrigation\-ditch;
+澦 > place\-in\-sichuan;
+澥 > a\-blocked\-stream;
+澔 > radiance\-of\-gems;
+渫 > beating\-of\-ocean;
+浤 > beating\-of\-ocean;
+毮 > to\-pull\-out\-hair;
+毪 > serge\-from\-tibet;
+櫨 > supporting\-block;
+樛 > bending\-branches;
+枲 > male\-nettle\-hemp;
+枒 > the\-coconut\-tree;
+晅 > light\-of\-the\-sun;
+斵 > to\-cut\-to\-pieces;
+斞 > a\-stack\-of\-grain;
+撚 > twirl\-in\-fingers;
+挷 > to\-propel\-a\-boat;
+懣 > be\-sick\-at\-heart;
+弳 > circular\-measure;
+弪 > circular\-measure;
+廵 > to\-go\-on\-circuit;
+幗 > women''s\-headgear;
+嬎 > to\-bear\-multiple;
+媤 > husband''s\-family;
+妝 > to\-adorn\-oneself;
+墤 > to\-fall\-in\-ruins;
+囍 > double\-happiness;
+嚳 > mythical\-emperor;
+嘅 > sound\-of\-sighing;
+嗞 > to\-consult\-about;
+嗁 > give\-forth\-sound;
+喺 > to\-be\-located\-at;
+勳 > meritorious\-deed;
+勲 > meritorious\-deed;
+勱 > put\-forth\-effort;
+勛 > meritorious\-deed;
+刴 > chop\-by\-pounding;
+冓 > a\-secluded\-place;
+儐 > entertain\-guests;
+儊 > rough\-and\-rugged;
+傜 > a\-minority\-tribe;
+䶱 > a\-kind\-of\-turtle;
+䵤 > to\-crack\-or\-chap;
+䵣 > white\-with\-black;
+䵡 > to\-crack\-or\-chap;
+䵃 > a\-kind\-of\-barley;
+䴬 > crumbs\-of\-barley;
+䴤 > a\-kind\-of\-animal;
+䴣 > a\-kind\-of\-animal;
+䴅 > a\-legendary\-bird;
+䳢 > small\-wild\-goose;
+䳟 > a\-legendary\-bird;
+䳐 > an\-owl\-like\-bird;
+䲲 > a\-hawk\-like\-bird;
+䲦 > a\-legendary\-bird;
+䰃 > dishevelled\-hair;
+䯳 > loosely\-arranged;
+䯮 > dishevelled\-hair;
+䯇 > to\-exert\-oneself;
+䮴 > unstable\-walking;
+䮳 > to\-give\-birth\-to;
+䮩 > a\-kind\-of\-animal;
+䮠 > a\-kind\-of\-animal;
+䮁 > a\-pair\-of\-horses;
+䮀 > a\-kind\-of\-animal;
+䫌 > bowed\-one''s\-head;
+䪎 > strings\-of\-a\-cap;
+䩥 > a\-belt\-for\-horse;
+䨻 > roar\-of\-thunders;
+䨴 > gathering\-clouds;
+䨳 > the\-rain\-stopped;
+䨏 > sound\-of\-raining;
+䨊 > a\-flock\-of\-birds;
+䧸 > a\-kind\-of\-pigeon;
+䧡 > a\-fortified\-wall;
+䧄 > name\-of\-a\-person;
+䦕 > bang\-of\-the\-door;
+䦂 > chemical\-element;
+䥛 > a\-kind\-of\-sickle;
+䥇 > chemical\-element;
+䤲 > chemical\-element;
+䤠 > chemical\-element;
+䣮 > smell\-of\-alcohol;
+䣫 > soured\-bean\-curd;
+䢞 > rows\-and\-columns;
+䡮 > trace\-of\-a\-wheel;
+䡢 > a\-small\-carriage;
+䠿 > name\-of\-a\-person;
+䠻 > to\-bend\-the\-body;
+䟋 > to\-press\-forward;
+䞖 > name\-of\-a\-person;
+䞌 > to\-lose\-in\-trade;
+䝣 > a\-kind\-of\-animal;
+䝚 > a\-kind\-of\-animal;
+䝋 > a\-little\-of\-pigs;
+䝇 > grunting\-of\-pigs;
+䛏 > to\-call\-somebody;
+䛎 > to\-shout\-in\-rage;
+䛂 > to\-separate\-from;
+䚿 > to\-shout\-in\-rage;
+䚔 > to\-look\-suddenly;
+䚒 > eyesight\-blurred;
+䚎 > eyesight\-blurred;
+䚋 > eyesight\-blurred;
+䚃 > to\-realize\-fully;
+䙭 > to\-lift\-or\-raise;
+䘋 > a\-kind\-of\-insect;
+䘂 > a\-kind\-of\-insect;
+䗿 > a\-kind\-of\-insect;
+䗼 > a\-kind\-of\-insect;
+䗸 > a\-kind\-of\-insect;
+䗱 > a\-kind\-of\-insect;
+䗯 > a\-kind\-of\-insect;
+䗮 > a\-kind\-of\-insect;
+䗡 > a\-kind\-of\-insect;
+䗟 > a\-kind\-of\-insect;
+䗛 > a\-kind\-of\-insect;
+䗏 > name\-of\-a\-insect;
+䗎 > a\-kind\-of\-insect;
+䗆 > a\-kind\-of\-insect;
+䗄 > a\-kind\-of\-insect;
+䗁 > a\-kind\-of\-cicada;
+䖷 > a\-kind\-of\-insect;
+䖴 > a\-kind\-of\-insect;
+䖲 > a\-kind\-of\-insect;
+䖯 > poisonous\-insect;
+䖐 > sound\-of\-a\-tiger;
+䔷 > cyperus\-rotundus;
+䒣 > lush\-or\-delicate;
+䑸 > a\-group\-of\-boats;
+䑅 > dizzy\-and\-sleepy;
+䐨 > back\-of\-the\-foot;
+䏒 > half\-of\-the\-body;
+䏏 > signs\-and\-groans;
+䎼 > a\-kind\-of\-insect;
+䎯 > winter\-ploughing;
+䎂 > colorful\-feather;
+䌽 > varicolored\-silk;
+䌂 > in\-ancient\-times;
+䋤 > plain\-white\-silk;
+䋔 > to\-band\-together;
+䊋 > to\-adorn\-oneself;
+䉷 > a\-feather\-screen;
+䉉 > a\-writing\-tablet;
+䈙 > bamboo\-to\-wither;
+䈈 > a\-kind\-of\-bamboo;
+䈃 > a\-kind\-of\-bamboo;
+䈂 > a\-kind\-of\-bamboo;
+䇻 > a\-kind\-of\-bamboo;
+䇹 > a\-kind\-of\-bamboo;
+䇷 > in\-ancient\-times;
+䇦 > a\-kind\-of\-bamboo;
+䆿 > to\-talk\-in\-sleep;
+䆲 > a\-spacious\-house;
+䆈 > young\-and\-tender;
+䅼 > a\-kind\-of\-grains;
+䅺 > grain\-in\-the\-ear;
+䅊 > a\-spacious\-house;
+䄺 > young\-and\-tender;
+䂪 > hard\-barren\-land;
+䀃 > a\-kind\-of\-vessel;
+㾦 > scab\-over\-a\-sore;
+㾁 > walking\-like\-mad;
+㽮 > a\-point\-of\-light;
+㽊 > cracking\-of\-tile;
+㻒 > red\-colored\-jade;
+㻁 > a\-kind\-of\-jasper;
+㺵 > black\-jade\-stone;
+㺴 > name\-of\-a\-spirit;
+㺦 > a\-running\-animal;
+㺣 > a\-kind\-of\-animal;
+㺢 > a\-kind\-of\-animal;
+㺝 > sound\-of\-a\-tiger;
+㺘 > a\-kind\-of\-animal;
+㹼 > a\-kind\-of\-animal;
+㹺 > dog\-to\-take\-food;
+㹴 > a\-kind\-of\-animal;
+㹭 > a\-kind\-of\-monkey;
+㹬 > a\-kind\-of\-animal;
+㹨 > a\-kind\-of\-animal;
+㹟 > a\-kind\-of\-animal;
+㹓 > a\-kind\-of\-animal;
+㹇 > a\-kind\-of\-cattle;
+㹄 > a\-kind\-of\-cattle;
+㸻 > a\-kind\-of\-cattle;
+㸳 > a\-kind\-of\-cattle;
+㸣 > in\-ancient\-china;
+㶾 > tough\-and\-honest;
+㶍 > name\-of\-a\-stream;
+㶌 > name\-of\-a\-stream;
+㵰 > name\-of\-a\-stream;
+㵆 > radiance\-of\-gems;
+㵃 > name\-of\-a\-stream;
+㴧 > of\-flowing\-water;
+㳽 > a\-watery\-expanse;
+㱶 > a\-swellen\-corpse;
+㱭 > an\-infertile\-egg;
+㱈 > name\-of\-a\-person;
+㰤 > to\-laugh\-hertily;
+㰛 > name\-of\-a\-county;
+㰅 > eaves\-of\-a\-house;
+㯕 > sticks\-or\-frames;
+㯃 > the\-varnish\-tree;
+㮓 > an\-extreme\-limit;
+㭺 > the\-cherry\-apple;
+㪭 > to\-draw\-together;
+㪘 > to\-draw\-together;
+㪖 > sound\-of\-beating;
+㨼 > to\-take\-by\-force;
+㧺 > a\-finger\-wrapper;
+里 > unit\-of\-distance;
+玲 > tinkling\-of\-jade;
+㦜 > to\-move\-the\-mind;
+撚 > twirl\-in\-fingers;
+㥔 > to\-move\-the\-mind;
+菉 > the\-green\-bamboo;
+㤴 > to\-move\-the\-mind;
+㤢 > to\-move\-the\-mind;
+珞 > kind\-of\-necklace;
+㣈 > a\-kind\-of\-animal;
+㢰 > to\-stretch\-a\-bow;
+㡽 > depraved\-talking;
+㡉 > a\-kind\-of\-fabric;
+㠧 > a\-little\-slanted;
+㠎 > a\-lofty\-mountain;
+㝫 > shape\-of\-the\-sky;
+㝪 > a\-slanting\-house;
+㝩 > spaciously\-rooms;
+㝗 > spaciously\-rooms;
+㜴 > dark\-and\-obscure;
+㜝 > to\-cherish\-anger;
+㜈 > a\-beaugiful\-face;
+㚟 > a\-kind\-of\-animal;
+㚜 > with\-great\-power;
+㚗 > with\-a\-big\-mouth;
+㚇 > draw\-the\-feet\-up;
+㙞 > a\-small\-mountain;
+㙎 > breach\-of\-a\-tank;
+㙅 > a\-walled\-viliage;
+㙀 > a\-vegetable\-plot;
+㗻 > baby''s\-answering;
+㗙 > to\-shout\-or\-bawl;
+㕭 > to\-bark\-as\-a\-dog;
+㕩 > sound\-of\-tapping;
+㕇 > rocks\-collapsing;
+㔵 > a\-kind\-of\-vessel;
+㔱 > a\-stack\-of\-grain;
+㔨 > name\-of\-a\-person;
+㔚 > to\-exert\-oneself;
+㔑 > an\-incised\-wound;
+㓼 > an\-incised\-wound;
+㓸 > to\-cut\-to\-pieces;
+㒭 > an\-elder\-brother;
+㒡 > name\-of\-a\-person;
+㒁 > of\-great\-stature;
+㑱 > a\-kind\-of\-monkey;
+㐻 > name\-of\-a\-person;
+㐀 > hillock\-or\-mound;
+睨 > look\-askance\-at;
+怎 > what\?\-why\?\-how\?;
+收 > gather\-together;
+党 > political\-party;
+版 > printing\-blocks;
+季 > quarter\-of\-year;
+牡 > male\-of\-animals;
+診 > examine\-patient;
+姑 > father''s\-sister;
+褓 > swaddling\-cloth;
+馆 > public\-building;
+漿 > any\-thick\-fluid;
+雄 > male\-of\-species;
+亿 > hundred\-million;
+固 > to\-become\-solid;
+黨 > political\-party;
+溪 > mountain\-stream;
+虞 > concerned\-about;
+嗚 > sound\-of\-crying;
+薇 > osmunda\-regalis;
+戏 > theatrical\-play;
+召 > imperial\-decree;
+収 > gather\-together;
+瑞 > felicitous\-omen;
+鬢 > hair\-on\-temples;
+僧 > buddhist\-priest;
+檜 > chinese\-cypress;
+檎 > small\-red\-apple;
+驅 > spur\-a\-horse\-on;
+臟 > internal\-organs;
+駈 > spur\-a\-horse\-on;
+駆 > spur\-a\-horse\-on;
+館 > public\-building;
+億 > hundred\-million;
+桧 > chinese\-cypress;
+脏 > internal\-organs;
+驱 > spur\-a\-horse\-on;
+圳 > furrow\-in\-field;
+繻 > fine\-silk\-guaze;
+孟 > first\-in\-series;
+縋 > climb\-down\-rope;
+閤 > small\-side\-door;
+斎 > vegetarian\-diet;
+盯 > rivet\-gaze\-upon;
+粟 > unhusked\-millet;
+籐 > climbing\-plants;
+掻 > scratch\-lightly;
+俘 > prisoner\-of\-war;
+挾 > clasp\-under\-arm;
+诊 > examine\-patient;
+媳 > daughter\-in\-law;
+宙 > time\-as\-concept;
+呜 > sound\-of\-crying;
+卜 > fortune\-telling;
+戲 > theatrical\-play;
+戯 > theatrical\-play;
+帖 > invitation\-card;
+逞 > indulge\-oneself;
+揪 > grasp\-with\-hand;
+仑 > logical\-reasons;
+浆 > any\-thick\-fluid;
+挟 > clasp\-under\-arm;
+煞 > malignant\-deity;
+斋 > vegetarian\-diet;
+鳌 > huge\-sea\-turtle;
+卦 > fortune\-telling;
+瞩 > watch\-carefully;
+疚 > chronic\-disease;
+蔓 > creeping\-plants;
+骏 > excellent\-horse;
+闽 > fujian\-province;
+袅 > curling\-upwards;
+辐 > spokes\-of\-wheel;
+琉 > sparkling\-stone;
+舜 > legendary\-ruler;
+轧 > crush\-by\-weight;
+滇 > yunnan\-province;
+鬓 > hair\-on\-temples;
+桓 > variety\-of\-tree;
+棠 > crab\-apple\-tree;
+吮 > suck\-with\-mouth;
+蜷 > creep\-like\-worm;
+枷 > cangue\-scaffold;
+羲 > ancient\-emperor;
+孚 > brood\-over\-eggs;
+骁 > excellent\-horse;
+皑 > brilliant\-white;
+缥 > light\-blue\-silk;
+诌 > play\-with\-words;
+泾 > name\-of\-a\-river;
+恣 > indulge\-oneself;
+觎 > desire\-strongly;
+玺 > imperial\-signet;
+卞 > to\-be\-impatient;
+辔 > bridle\-of\-horse;
+趔 > not\-progressing;
+徜 > walking\-and\-fro;
+荠 > water\-chestnuts;
+汞 > element\-mercury;
+畿 > imperial\-domain;
+舂 > grind\-in\-mortar;
+籴 > purchase\-grains;
+穰 > stalks\-of\-grain;
+缒 > climb\-down\-rope;
+嗄 > hoarse\-of\-voice;
+睥 > look\-askance\-at;
+渚 > small\-sand\-bank;
+砝 > balance\-weights;
+杼 > shuttle\-of\-loom;
+龃 > irregular\-teeth;
+勐 > imperial\-degree;
+矸 > a\-rock\-or\-cliff;
+痼 > chronic\-disease;
+蕨 > pteris\-aquilina;
+豉 > fermented\-beans;
+徭 > conscript\-labor;
+麈 > species\-of\-deer;
+蕤 > drooping\-leaves;
+麂 > species\-of\-deer;
+绡 > raw\-silk\-fabric;
+芨 > name\-of\-a\-plant;
+苣 > kind\-of\-lettuce;
+碛 > sand\-and\-gravel;
+莒 > hemp\-like\-plant;
+濉 > name\-of\-a\-river;
+萁 > kind\-of\-grasses;
+眄 > to\-look\-askance;
+囟 > top\-of\-the\-head;
+岣 > a\-hill\-in\-hunan;
+嗾 > to\-set\-a\-dog\-on;
+荜 > species\-of\-bean;
+糁 > a\-grain\-of\-rice;
+粝 > unpolished\-rice;
+裰 > to\-mend\-clothes;
+柰 > crab\-apple\-tree;
+薨 > death\-of\-prince;
+茑 > the\-convovulvus;
+翮 > stem\-of\-feather;
+艟 > ancient\-warship;
+鼯 > flying\-squirrel;
+砩 > name\-of\-a\-stone;
+炻 > a\-kind\-of\-china;
+檫 > sassafras\-tzumu;
+狴 > a\-kind\-of\-tapir;
+龑 > high\-and\-bright;
+齟 > irregular\-teeth;
+齋 > vegetarian\-diet;
+鼕 > rattle\-of\-drums;
+鼇 > huge\-sea\-turtle;
+鸓 > flying\-squirrel;
+鴒 > species\-of\-lark;
+鴂 > the\-tailor\-bird;
+鳻 > the\-wild\-pigeon;
+鳓 > chinese\-herring;
+鱡 > the\-cuttle\-fish;
+鱅 > a\-kind\-of\-tench;
+鰳 > chinese\-herring;
+鰲 > huge\-sea\-turtle;
+魰 > the\-flying\-fish;
+髾 > tail\-of\-a\-comet;
+髴 > disheveled\-hair;
+驵 > excellent\-horse;
+驍 > excellent\-horse;
+騘 > a\-piebald\-horse;
+駿 > excellent\-horse;
+駔 > excellent\-horse;
+饇 > to\-eat\-too\-much;
+颻 > floating\-in\-air;
+颮 > storm\-whirlwind;
+顖 > top\-of\-the\-head;
+韞 > an\-orange\-color;
+鞴 > saddle\-up\-horse;
+靸 > a\-child''s\-shoes;
+雱 > snowing\-heavily;
+閩 > fujian\-province;
+鎤 > sound\-of\-a\-bell;
+銾 > element\-mercury;
+醾 > unfiltered\-wine;
+鄹 > name\-of\-a\-state;
+轡 > bridle\-of\-horse;
+輻 > spokes\-of\-wheel;
+軋 > crush\-by\-weight;
+躀 > to\-stumble\-over;
+趮 > easily\-provoked;
+謅 > play\-with\-words;
+諡 > posthumous\-name;
+訒 > hesitate\-to\-say;
+覦 > desire\-strongly;
+襼 > ''kimono''\-sleeve;
+襌 > unlined\-garment;
+褧 > unlined\-clothes;
+褝 > unlined\-garment;
+裊 > curling\-upwards;
+螚 > eristalis\-tenax;
+藶 > a\-kind\-of\-plant;
+薺 > water\-chestnuts;
+蕢 > edible\-amaranth;
+蕍 > alisma\-plantags;
+蔾 > kind\-of\-bramble;
+蔦 > the\-convovulvus;
+蓽 > species\-of\-bean;
+蒨 > lush\-vegetation;
+蒓 > an\-edible\-water;
+蒉 > edible\-amaranth;
+葑 > the\-rape\-turnip;
+萕 > water\-chestnuts;
+苈 > a\-kind\-of\-plant;
+艅 > a\-despatch\-boat;
+臓 > internal\-organs;
+腢 > the\-collar\-bone;
+罿 > net\-catch\-birds;
+縹 > light\-blue\-silk;
+綃 > raw\-silk\-fabric;
+絍 > to\-lay\-the\-warp;
+絅 > unlined\-garment;
+糴 > purchase\-grains;
+糲 > unpolished\-rice;
+籘 > climbing\-plants;
+簔 > a\-coat\-raincoat;
+簑 > a\-coat\-raincoat;
+篰 > a\-bamboo\-basket;
+穣 > stalks\-of\-grain;
+穄 > panicled\-millet;
+禋 > offer\-sacrifice;
+磪 > a\-high\-mountain;
+磧 > sand\-and\-gravel;
+磎 > mountain\-stream;
+矚 > watch\-carefully;
+皚 > brilliant\-white;
+瘈 > prolonged\-fever;
+瘃 > sores\-from\-cold;
+痾 > chronic\-illness;
+痵 > a\-heart\-symptom;
+痮 > a\-swelled\-belly;
+痠 > aching\-of\-limbs;
+痁 > chronic\-malaria;
+疢 > aching\-of\-limbs;
+畬 > reclaimed\-field;
+甤 > drooping\-leaves;
+璽 > imperial\-signet;
+琭 > jade\-like\-stone;
+珧 > mother\-of\-pearl;
+珇 > carving\-on\-jade;
+玟 > streaks\-in\-jade;
+獱 > a\-kind\-of\-otter;
+狫 > name\-of\-a\-tribe;
+牄 > to\-walk\-rapidly;
+熓 > the\-bank\-a\-fire;
+焵 > to\-temper\-steel;
+瀵 > name\-of\-a\-river;
+瀞 > pool\-in\-a\-river;
+潙 > river\-in\-shanxi;
+漵 > name\-of\-a\-river;
+滎 > county\-in\-henan;
+溤 > name\-of\-a\-river;
+渓 > mountain\-stream;
+淓 > name\-of\-a\-river;
+涇 > name\-of\-a\-river;
+泩 > rising\-of\-water;
+沚 > islet\-in\-stream;
+沘 > name\-of\-a\-river;
+榡 > quercus\-dentata;
+椺 > beam\-of\-a\-house;
+柎 > calyx\-of\-flower;
+柁 > large\-tie\-beams;
+枬 > an\-even\-grained;
+朣 > the\-rising\-moon;
+摻 > a\-delicate\-hand;
+揫 > grasp\-with\-hand;
+戱 > theatrical\-play;
+戄 > to\-be\-in\-awe\-of;
+忓 > concerned\-about;
+徬 > to\-wander\-about;
+弴 > red\-lacquer\-bow;
+巹 > nuptial\-winecup;
+嵎 > mountain\-recess;
+峞 > high\-and\-uneven;
+夲 > advance\-quickly;
+坴 > a\-clod\-of\-earth;
+喣 > to\-breathe\-upon;
+唲 > forced\-laughter;
+厜 > a\-mountain\-peak;
+匉 > noise\-of\-waters;
+匄 > to\-beg\-for\-alms;
+勅 > imperial\-degree;
+劘 > make\-into\-mince;
+劖 > make\-into\-mince;
+傽 > terror\-stricken;
+侖 > logical\-reasons;
+佔 > occupy\-by\-force;
+乸 > feminine\-suffix;
+䶡 > sound\-of\-biting;
+䶎 > sound\-of\-breath;
+䵛 > panicled\-millet;
+䵖 > panicled\-millet;
+䴾 > to\-grind\-barley;
+䴮 > cakes\-pf\-leaven;
+䴎 > flying\-squirrel;
+䲾 > the\-tailor\-bird;
+䯄 > a\-piebalk\-horse;
+䮽 > bit\-for\-a\-horse;
+䮵 > name\-of\-a\-horse;
+䮱 > a\-kind\-of\-beast;
+䮰 > a\-kind\-of\-beast;
+䮬 > name\-of\-a\-horse;
+䮨 > a\-piebald\-horse;
+䮧 > long\-hair\-horse;
+䮢 > a\-walking\-horse;
+䮞 > a\-piebald\-horse;
+䮙 > name\-of\-a\-horse;
+䮖 > name\-of\-a\-horse;
+䮓 > a\-walking\-horse;
+䮒 > name\-of\-a\-horse;
+䮏 > name\-of\-a\-horse;
+䮎 > a\-running\-horse;
+䮋 > name\-of\-a\-horse;
+䮊 > name\-of\-a\-horse;
+䭼 > dark\-blue\-horse;
+䭶 > dark\-blue\-horse;
+䬫 > clarfied\-butter;
+䬁 > a\-light\-cyclone;
+䪮 > beautiful\-sound;
+䪕 > to\-wrap\-or\-band;
+䩹 > to\-repair\-shoes;
+䩒 > dressed\-leather;
+䩄 > to\-face\-to\-face;
+䨦 > snowing\-heavily;
+䨢 > a\-passing\-cloud;
+䨖 > to\-stop\-raining;
+䨑 > to\-stop\-raining;
+䨀 > to\-lay\-in\-grain;
+䧯 > name\-of\-a\-place;
+䧮 > name\-of\-a\-place;
+䧝 > name\-of\-a\-place;
+䧌 > name\-of\-a\-place;
+䧋 > name\-of\-a\-place;
+䧃 > name\-of\-a\-place;
+䦻 > name\-of\-a\-place;
+䦫 > inside\-the\-door;
+䦠 > name\-of\-a\-river;
+䥗 > a\-branding\-iron;
+䤱 > a\-solemn\-pledge;
+䣶 > unstrained\-wine;
+䣳 > unstrained\-wine;
+䣓 > name\-of\-a\-state;
+䣐 > name\-of\-a\-place;
+䣋 > name\-of\-a\-place;
+䣊 > name\-of\-a\-place;
+䣇 > name\-of\-a\-place;
+䢻 > name\-of\-a\-place;
+䢴 > name\-of\-a\-place;
+䢳 > name\-of\-a\-place;
+䢦 > to\-lead\-the\-way;
+䢖 > to\-be\-scattered;
+䢁 > tire\-of\-a\-wheel;
+䡻 > shake\-of\-a\-cart;
+䡨 > connected\-carts;
+䡓 > shake\-of\-a\-cart;
+䡐 > to\-move\-swiftly;
+䠵 > to\-wear\-clothes;
+䠨 > walking\-rapidly;
+䟛 > walking\-rapidly;
+䟑 > walking\-rapidly;
+䞷 > walking\-rapidly;
+䞶 > walking\-rapidly;
+䞰 > walking\-rapidly;
+䞭 > walking\-rapidly;
+䞬 > to\-pass\-through;
+䞪 > walking\-rapidly;
+䝯 > to\-change\-hands;
+䝐 > a\-castrated\-hog;
+䜾 > fermented\-beans;
+䜻 > fermented\-beans;
+䜵 > fermented\-beans;
+䜄 > slow\-on\-talking;
+䛵 > to\-teach\-orally;
+䛟 > wild\-statements;
+䛔 > to\-hold\-in\-hand;
+䚦 > slanted\-corners;
+䚥 > to\-adjust\-a\-bow;
+䙻 > to\-steal\-a\-look;
+䙨 > to\-wrap\-or\-bind;
+䙝 > under\-garrments;
+䗾 > corbicula\-leana;
+䖼 > the\-dung\-beetle;
+䖙 > a\-resting\-tiger;
+䖉 > to\-roar\-or\-howl;
+䕷 > a\-kind\-of\-plant;
+䕙 > to\-set\-in\-order;
+䕉 > a\-kind\-of\-plant;
+䔧 > a\-kind\-of\-plant;
+䔇 > a\-kind\-of\-plant;
+䓶 > a\-kind\-of\-plant;
+䓞 > a\-kind\-of\-plant;
+䓘 > a\-kind\-of\-plant;
+䓈 > a\-kind\-of\-plant;
+䒷 > a\-kind\-of\-plant;
+䒒 > name\-of\-a\-plant;
+䒌 > dark\-blue\-color;
+䐜 > a\-swelled\-belly;
+䏲 > protruded\-bones;
+䎳 > lose\-of\-the\-ear;
+䎉 > to\-walk\-swiftly;
+䌾 > to\-lay\-the\-warp;
+䋷 > a\-kind\-of\-thick;
+䋕 > to\-lay\-the\-warp;
+䊵 > young\-and\-small;
+䊗 > a\-kind\-of\-grain;
+䊉 > preserved\-fruit;
+䉧 > sound\-of\-bamboo;
+䆂 > a\-kind\-of\-grain;
+䅷 > an\-ear\-of\-grain;
+䅰 > a\-kind\-of\-grass;
+䅡 > a\-kind\-of\-grass;
+䅠 > a\-kind\-of\-grass;
+䅞 > stalks\-of\-grain;
+䅋 > a\-kind\-of\-grain;
+䅂 > a\-kind\-of\-grain;
+䄱 > a\-kind\-of\-grain;
+䄮 > dark\-rice\-plant;
+䄧 > a\-kind\-of\-grain;
+䄕 > god\-of\-the\-land;
+䃷 > a\-kind\-of\-stone;
+䃵 > a\-kind\-of\-stone;
+䃞 > a\-kind\-of\-stone;
+䃒 > poor\-and\-barren;
+䂭 > name\-of\-a\-place;
+䂚 > a\-kind\-of\-stone;
+䁴 > keep\-on\-looking;
+䁳 > to\-lose\-one\-eye;
+䀩 > to\-look\-askance;
+䀎 > to\-look\-askance;
+䀉 > food\-containers;
+㿱 > dry\-and\-decayed;
+㾩 > malignant\-boils;
+㽽 > chronic\-disease;
+㽧 > name\-of\-a\-place;
+㼕 > pulp\-of\-a\-melon;
+㼔 > a\-kind\-of\-melon;
+㼑 > pulp\-of\-a\-melon;
+㼍 > pulp\-of\-a\-melon;
+㼊 > a\-kind\-of\-melon;
+㼂 > a\-crack\-in\-jade;
+㻸 > jade\-like\-stone;
+㻷 > name\-of\-a\-place;
+㻍 > name\-of\-a\-sword;
+㺤 > a\-kind\-of\-beast;
+㺡 > a\-kind\-of\-beast;
+㺟 > a\-kind\-of\-beast;
+㺔 > a\-kind\-of\-beast;
+㺍 > a\-kind\-of\-otter;
+㺌 > endless\-barking;
+㺄 > a\-kind\-of\-beast;
+㺁 > a\-kind\-of\-beast;
+㹧 > fox\-like\-animal;
+㸱 > hornless\-cattle;
+㸰 > hornless\-cattle;
+㸩 > to\-desist\-an\-ox;
+㸑 > a\-cooking\-stove;
+㷍 > a\-chemical\-term;
+㶛 > name\-of\-a\-river;
+㵲 > name\-of\-a\-river;
+㵧 > name\-of\-a\-river;
+㵑 > name\-of\-a\-river;
+㵂 > name\-of\-a\-river;
+㴪 > name\-of\-a\-river;
+㳿 > rolling\-billows;
+㳾 > name\-of\-a\-river;
+㳸 > name\-of\-a\-river;
+㳷 > dark\-blue\-color;
+㳶 > name\-of\-a\-river;
+㳵 > name\-of\-a\-river;
+㳡 > name\-of\-a\-river;
+㳗 > bank\-of\-a\-river;
+㳖 > name\-of\-a\-river;
+㲼 > name\-of\-a\-river;
+㲔 > woolen\-textiles;
+㲎 > woolen\-textiles;
+㲍 > woolen\-textiles;
+㱎 > cannot\-be\-known;
+㰬 > shortwindedness;
+㰗 > a\-kind\-of\-maple;
+㰈 > nice\-and\-pretty;
+㯱 > an\-enlarged\-bag;
+㯤 > the\-jujube\-tree;
+㯔 > to\-hull\-heavily;
+㮡 > to\-light\-a\-fire;
+㭤 > the\-convolvulus;
+㫠 > a\-kind\-of\-water;
+㪫 > wise\-and\-clever;
+館 > public\-building;
+輻 > spokes\-of\-wheel;
+㧎 > forked\-branches;
+琉 > sparkling\-stone;
+㥞 > to\-think\-deeply;
+㥛 > with\-expedition;
+㢞 > rooms\-connected;
+㢍 > a\-long\-verabdah;
+㡲 > tiles\-on\-a\-roof;
+㡀 > ragged\-clothing;
+㠈 > name\-of\-a\-place;
+㠂 > name\-of\-a\-place;
+㟔 > steep\-and\-lofty;
+㟏 > steep\-and\-lofty;
+㝥 > have\-a\-nighmare;
+㝅 > to\-give\-suck\-to;
+㜲 > to\-have\-surplus;
+㛰 > to\-marry\-a\-wife;
+㚦 > a\-charming\-girl;
+㙼 > a\-military\-wall;
+㙸 > a\-clod\-of\-earth;
+㙗 > a\-lump\-of\-earth;
+㘺 > cultivated\-land;
+㘵 > name\-of\-a\-place;
+㗿 > to\-laugh\-loudly;
+㕲 > to\-gag\-or\-bribe;
+㕘 > to\-take\-part\-in;
+㒟 > with\-a\-charming;
+㐽 > name\-of\-a\-place;
+躅 > walk\-carefully;
+巴 > greatly\-desire;
+期 > period\-of\-time;
+司 > take\-charge\-of;
+甥 > sister''s\-child;
+屏 > folding\-screen;
+狐 > species\-of\-fox;
+汉 > chinese\-people;
+妹 > younger\-sister;
+企 > plan\-a\-project;
+襖 > outer\-garments;
+壁 > partition\-wall;
+韦 > tanned\-leather;
+潰 > flooding\-river;
+珠 > precious\-stone;
+锋 > point\-of\-spear;
+俗 > social\-customs;
+檐 > eaves\-of\-house;
+骑 > ride\-horseback;
+函 > correspondence;
+魏 > kingdom\-of\-wei;
+枚 > stalk\-of\-shrub;
+仲 > middle\-brother;
+琳 > beautiful\-jade;
+凑 > piece\-together;
+郁 > sweet\-smelling;
+芯 > pith\-from\-rush;
+縞 > white\-raw\-silk;
+旬 > ten\-day\-period;
+綺 > fine\-thin\-silk;
+妨 > interfere\-with;
+骄 > spirited\-horse;
+簷 > eaves\-of\-house;
+掴 > box\-one''s\-ears;
+嗯 > final\-particle;
+岭 > mountain\-ridge;
+湘 > hunan\-province;
+銃 > ancient\-weapon;
+溃 > flooding\-river;
+铮 > clanging\-sound;
+莹 > luster\-of\-gems;
+僻 > out\-of\-the\-way;
+绮 > fine\-thin\-silk;
+渺 > endlessly\-long;
+佣 > commission\-fee;
+咯 > final\-particle;
+呛 > choke\-by\-smoke;
+凰 > female\-phoenix;
+闺 > small\-entrance;
+缀 > patch\-together;
+袄 > outer\-garments;
+璋 > jade\-plaything;
+拴 > bind\-with\-rope;
+秧 > rice\-seedlings;
+蕃 > foreign\-things;
+鄂 > hubei\-province;
+棱 > squared\-timber;
+梗 > stem\-of\-flower;
+菱 > water\-chestnut;
+镑 > pound\-sterling;
+栩 > species\-of\-oak;
+唷 > final\-particle;
+璞 > unpolished\-gem;
+雯 > cloud\-patterns;
+讷 > slow\-of\-speech;
+璇 > beautiful\-jade;
+狰 > fierce\-looking;
+峦 > mountain\-range;
+湃 > sound\-of\-waves;
+娣 > younger\-sister;
+蝗 > kind\-of\-locust;
+皖 > anhui\-province;
+酋 > chief\-of\-tribe;
+壑 > bed\-of\-torrent;
+糯 > glutinous\-rice;
+稷 > god\-of\-cereals;
+塾 > village\-school;
+狩 > winter\-hunting;
+戍 > defend\-borders;
+璀 > lustre\-of\-gems;
+牍 > writing\-tablet;
+镌 > engraving\-tool;
+饯 > farewell\-party;
+鹂 > chinese\-oriole;
+囡 > one''s\-daughter;
+溟 > drizzling\-rain;
+锏 > kind\-of\-rapier;
+屙 > to\-ease\-nature;
+琨 > beautiful\-jade;
+玳 > tortoise\-shell;
+瑭 > a\-kind\-of\-jade;
+杈 > fork\-of\-a\-tree;
+匐 > fall\-prostrate;
+砣 > a\-stone\-roller;
+铢 > unit\-of\-weight;
+骈 > team\-of\-horses;
+噱 > laugh\-heartily;
+铳 > ancient\-weapon;
+盱 > wide\-open\-eyes;
+耄 > elderly\-person;
+榔 > betel\-nut\-tree;
+诤 > to\-expostulate;
+蝮 > venomous\-snake;
+颍 > river\-in\-anhui;
+楝 > melia\-japonica;
+蝼 > a\-mole\-cricket;
+荪 > aromatic\-grass;
+娌 > brother''s\-wife;
+缟 > white\-raw\-silk;
+晷 > shadows\-of\-sun;
+嗵 > used\-for\-sound;
+踅 > to\-walk\-around;
+揆 > prime\-minister;
+猕 > macacus\-monkey;
+厝 > cut\-or\-engrave;
+葚 > mulberry\-fruit;
+耒 > handle\-of\-plow;
+嘞 > final\-particle;
+錾 > engraving\-tool;
+珙 > precious\-stone;
+荸 > water\-chestnut;
+俅 > ornamental\-cap;
+菽 > beans\-and\-peas;
+鞯 > saddle\-blanket;
+鼐 > incense\-tripod;
+谰 > accuse\-falsely;
+骱 > joint\-of\-bones;
+謦 > t\-speak\-softly;
+磴 > steps\-on\-ledge;
+婺 > name\-of\-a\-star;
+堍 > side\-of\-bridge;
+桫 > horse\-chestnut;
+漶 > indecipherable;
+孥 > one''s\-children;
+溱 > river\-in\-henan;
+庠 > village\-school;
+黥 > tattooing\-face;
+躐 > to\-stride\-over;
+蹯 > paws\-of\-animal;
+盍 > what\?\-why\-not\?;
+溆 > river\-in\-hunan;
+磲 > tridacna\-gigas;
+昝 > a\-dual\-pronoun;
+柽 > type\-of\-willow;
+缬 > patterned\-silk;
+驺 > mounted\-escort;
+阊 > gate\-of\-heaven;
+荩 > a\-kind\-of\-weed;
+芎 > a\-kind\-of\-herb;
+鋈 > silver\-plating;
+龅 > teeth\-protrude;
+晡 > late\-afternoon;
+檠 > stand\-for\-lamp;
+逭 > to\-escape\-from;
+鸝 > chinese\-oriole;
+鸎 > the\-mango\-bird;
+鶗 > a\-kind\-of\-hawk;
+鮧 > the\-sheat\-fish;
+鬘 > beautiful\-hair;
+鬗 > head\-ornaments;
+髆 > shoulder\-blade;
+驕 > spirited\-horse;
+騶 > mounted\-escort;
+騎 > ride\-horseback;
+騌 > a\-horse''s\-mane;
+騈 > team\-of\-horses;
+駢 > team\-of\-horses;
+餡 > pastry\-filling;
+餞 > farewell\-party;
+餗 > food\-in\-tripod;
+韋 > tanned\-leather;
+韉 > saddle\-blanket;
+霡 > drizzling\-rain;
+閶 > gate\-of\-heaven;
+閨 > small\-entrance;
+锪 > a\-kind\-of\-tool;
+鐫 > engraving\-tool;
+鐧 > kind\-of\-rapier;
+鏴 > to\-plug\-a\-hole;
+鏨 > engraving\-tool;
+鎩 > moult\-samarium;
+鎊 > pound\-sterling;
+鍆 > md\-mendelevium;
+錚 > clanging\-sound;
+鋩 > point\-of\-sword;
+鋒 > point\-of\-spear;
+鋃 > lock\-lanthanum;
+銖 > unit\-of\-weight;
+釯 > point\-of\-sword;
+逩 > to\-run\-quickly;
+輶 > light\-carriage;
+蹜 > walk\-carefully;
+趹 > kick\-with\-hoof;
+豣 > pig\-of\-3\-years;
+豜 > pig\-of\-3\-years;
+豖 > a\-shackled\-pig;
+讕 > accuse\-falsely;
+讅 > know\-in\-detail;
+諍 > to\-expostulate;
+詨 > kind\-of\-cicada;
+訥 > slow\-of\-speech;
+褉 > short\-garments;
+衂 > to\-be\-defeated;
+蠂 > podisma\-mikado;
+蟳 > a\-kind\-of\-crab;
+蟭 > very\-small\-bug;
+螿 > kind\-of\-cicada;
+螻 > a\-mole\-cricket;
+螬 > grubs\-in\-fruit;
+蜎 > mosquito\-larva;
+虀 > minced\-pickles;
+藎 > a\-kind\-of\-weed;
+薳 > name\-of\-a\-herb;
+薘 > plantago\-major;
+蔆 > water\-chestnut;
+蓯 > medicinal\-herb;
+蓏 > fruit\-of\-plant;
+蓀 > aromatic\-grass;
+葥 > rubus\-palmatus;
+菎 > beautiful\-jade;
+茞 > fragrant\-plant;
+苁 > medicinal\-herb;
+芈 > bleat\-of\-sheep;
+脦 > used\-in\-''lede'';
+羋 > bleat\-of\-sheep;
+纈 > patterned\-silk;
+綴 > patch\-together;
+絜 > a\-marking\-line;
+紾 > turns\-or\-twist;
+糺 > to\-collaborate;
+籫 > bamboo\-utensil;
+筬 > reed\-of\-a\-loom;
+稭 > stalk\-of\-grain;
+稌 > glutinous\-rice;
+稈 > stalk\-of\-grain;
+砢 > pile\-of\-stones;
+矉 > an\-angry\-glare;
+睱 > to\-gaze\-slowly;
+睯 > to\-be\-agonized;
+眣 > prominent\-eyes;
+璸 > jade''s\-streaks;
+璵 > beautiful\-jade;
+璥 > a\-kind\-of\-jade;
+璢 > precious\-stone;
+璘 > luster\-of\-jade;
+璆 > beautiful\-jade;
+瑩 > lustre\-of\-gems;
+瑠 > precious\-stone;
+瑇 > tortoise\-shell;
+琁 > beautiful\-jade;
+珺 > beautiful\-jade;
+珦 > a\-kind\-of\-jade;
+珢 > precious\-stone;
+玥 > mysterious\-gem;
+獼 > macacus\-monkey;
+猙 > fierce\-looking;
+狨 > hapale\-jacchus;
+犨 > panting\-of\-cow;
+牘 > writing\-tablet;
+燉 > heat\-with\-fire;
+燀 > to\-make\-a\-fire;
+熉 > \(yellow\-color\);
+潕 > river\-in\-henan;
+潁 > river\-in\-anhui;
+溛 > to\-form\-hollow;
+湱 > sound\-of\-water;
+湊 > piece\-together;
+渢 > pleasant\-sound;
+涬 > watery\-expanse;
+洿 > stagnant\-water;
+泃 > river\-in\-henan;
+泂 > clear\-and\-deep;
+沷 > to\-remove\-evil;
+殭 > a\-stiff\-corpse;
+檖 > wild\-pear\-tree;
+檉 > type\-of\-willow;
+橿 > quercus\-glauca;
+榾 > pieces\-of\-wood;
+榠 > chinese\-quince;
+榖 > paper\-mulberry;
+椪 > machilus\-nanmu;
+棐 > species\-of\-yew;
+梊 > squeeze\-out\-of;
+柾 > straight\-grain;
+柟 > machilus\-nanmu;
+柃 > eurya\-japonica;
+曏 > once\-upon\-time;
+晥 > anhui\-province;
+晢 > light\-of\-stars;
+昰 > var\-of\-''to\-be'';
+攂 > to\-beat\-a\-drum;
+摴 > to\-stretch\-out;
+摑 > box\-one''s\-ears;
+幱 > official\-dress;
+巟 > a\-watery\-waste;
+巒 > mountain\-range;
+嶺 > mountain\-ridge;
+嵴 > mountain\-ridge;
+岺 > mountain\-ridge;
+屛 > folding\-screen;
+墚 > mountain\-range;
+塕 > a\-gust\-of\-wind;
+埇 > name\-of\-bridge;
+圅 > correspondence;
+噹 > sound\-of\-bells;
+嘓 > gurgling\-sound;
+嗆 > choke\-by\-smoke;
+喒 > a\-dual\-pronoun;
+啌 > animal\-disease;
+厃 > to\-look\-upward;
+卭 > high\.\-to\-raise;
+卂 > to\-fly\-rapidly;
+凾 > correspondence;
+伕 > common\-laborer;
+亇 > kwukyel\-hammer;
+䶔 > prominent\-gums;
+䶐 > to\-take\-breath;
+䶀 > sound\-of\-drums;
+䵾 > sound\-of\-drums;
+䵽 > sound\-of\-drums;
+䵶 > a\-kind\-of\-frog;
+䵌 > reddish\-yellow;
+䴴 > a\-kind\-of\-cake;
+䴯 > a\-kind\-of\-cake;
+䴩 > a\-kind\-of\-deer;
+䴢 > a\-kind\-of\-deer;
+䴘 > a\-kind\-of\-bird;
+䴐 > a\-kind\-of\-bird;
+䴆 > a\-kind\-of\-bird;
+䴄 > a\-kind\-of\-bird;
+䳿 > a\-kind\-of\-bird;
+䳸 > the\-wild\-goose;
+䳴 > a\-kind\-of\-bird;
+䳯 > a\-kind\-of\-bird;
+䳬 > a\-kind\-of\-bird;
+䳫 > a\-small\-pigeon;
+䳪 > a\-kind\-of\-bird;
+䳩 > a\-kind\-of\-bird;
+䳒 > a\-kind\-of\-bird;
+䲽 > a\-kind\-of\-bird;
+䲼 > a\-kind\-of\-bird;
+䲸 > a\-kind\-of\-bird;
+䲮 > a\-kind\-of\-bird;
+䲪 > a\-kind\-of\-bird;
+䲢 > a\-kind\-of\-fish;
+䲠 > a\-kind\-of\-fish;
+䲟 > a\-kind\-of\-fish;
+䲙 > a\-kind\-of\-fish;
+䲘 > a\-kind\-of\-fish;
+䲗 > a\-kind\-of\-fish;
+䲓 > a\-kind\-of\-fish;
+䲐 > a\-kind\-of\-fish;
+䲏 > a\-kind\-of\-fish;
+䲋 > a\-kind\-of\-fish;
+䲉 > a\-kind\-of\-fish;
+䲂 > a\-kind\-of\-fish;
+䲀 > a\-kind\-of\-fish;
+䱿 > a\-kind\-of\-fish;
+䱼 > a\-kind\-of\-fish;
+䱻 > a\-kind\-of\-fish;
+䱵 > a\-kind\-of\-fish;
+䱲 > a\-kind\-of\-fish;
+䱰 > a\-kind\-of\-fish;
+䱯 > a\-kind\-of\-fish;
+䱮 > a\-kind\-of\-fish;
+䱬 > a\-kind\-of\-fish;
+䱫 > a\-kind\-of\-fish;
+䱨 > a\-kind\-of\-fish;
+䱥 > a\-kind\-of\-fish;
+䱤 > a\-kind\-of\-fish;
+䱢 > a\-kind\-of\-fish;
+䱠 > a\-kind\-of\-fish;
+䱞 > a\-kind\-of\-fish;
+䱛 > a\-kind\-of\-fish;
+䱚 > a\-kind\-of\-fish;
+䱓 > a\-kind\-of\-fish;
+䰾 > a\-kind\-of\-fish;
+䰹 > the\-cuttlefish;
+䰴 > a\-wafting\-fish;
+䰲 > the\-sheat\-fish;
+䰡 > a\-fierce\-ghost;
+䯛 > the\-knee\-bones;
+䮹 > an\-angry\-horse;
+䮮 > a\-kind\-of\-mule;
+䭻 > a\-swifty\-horse;
+䭳 > a\-kind\-of\-herb;
+䭲 > sweet\-smelling;
+䭭 > the\-eldest\-son;
+䭩 > to\-feed\-a\-baby;
+䭧 > to\-feed\-a\-baby;
+䭁 > stinking\-smell;
+䬺 > same\-as\-u\+4b50;
+䬘 > the\-wind\-blows;
+䬒 > to\-blow\-chilly;
+䬌 > the\-wind\-blows;
+䫫 > human\-skeleton;
+䪼 > the\-cheek\-bone;
+䪈 > a\-leather\-belt;
+䩐 > tie\-it\-tightly;
+䨫 > drizzling\-rain;
+䨥 > a\-pouring\-rain;
+䨜 > a\-pouring\-rain;
+䧾 > a\-kind\-of\-bird;
+䧷 > a\-kind\-of\-bird;
+䧧 > high\-mountains;
+䦺 > name\-of\-a\-hill;
+䦤 > seed\-of\-grains;
+䦑 > without\-a\-door;
+䦏 > wing\-of\-a\-door;
+䥢 > sound\-of\-drums;
+䤖 > a\-kind\-of\-wine;
+䣥 > a\-kind\-of\-wine;
+䣎 > name\-of\-county;
+䢨 > to\-walk\-slowly;
+䡾 > high\-cartloads;
+䡲 > rim\-of\-a\-wheel;
+䡗 > rim\-of\-a\-wheel;
+䡉 > a\-kind\-of\-cart;
+䟓 > to\-walk\-slowly;
+䝸 > a\-kind\-of\-tool;
+䜽 > a\-kind\-of\-bean;
+䜼 > a\-kind\-of\-bean;
+䜜 > words\-of\-anger;
+䛠 > unable\-to\-talk;
+䚖 > mountain\-deity;
+䚄 > to\-make\-fun\-of;
+䙳 > spiting\-flames;
+䙦 > upper\-garments;
+䘢 > old\-and\-shabby;
+䘃 > a\-kind\-of\-crab;
+䗷 > a\-kind\-of\-wasp;
+䗪 > a\-kind\-of\-worm;
+䗜 > a\-mole\-cricket;
+䗚 > eggs\-of\-mantis;
+䗒 > a\-kind\-of\-clam;
+䗀 > a\-kind\-of\-clam;
+䖰 > a\-kind\-of\-gnat;
+䖆 > medicinal\-herb;
+䕚 > a\-straw\-basket;
+䔕 > chicken\-breast;
+䔋 > a\-kind\-of\-tree;
+䔆 > a\-kind\-of\-bean;
+䔂 > vegetable\-soup;
+䓡 > a\-medical\-herb;
+䒻 > a\-medical\-herb;
+䒲 > a\-medical\-herb;
+䒓 > to\-do\-violence;
+䒇 > name\-of\-a\-ship;
+䒆 > name\-of\-a\-ship;
+䒅 > beautiful\-eyes;
+䑶 > sprightly\-boat;
+䑫 > tools\-for\-boat;
+䑣 > a\-sailing\-boat;
+䑜 > to\-eat\-heavily;
+䐕 > oil\-and\-grease;
+䐍 > excellent\-food;
+䍡 > small\-fish\-net;
+䍑 > a\-net\-or\-snare;
+䍐 > a\-net\-or\-snare;
+䍍 > unburnt\-bricks;
+䌵 > lapel\-and\-belt;
+䌰 > connected\-silk;
+䌥 > to\-sew\-clothes;
+䌡 > to\-wind\-around;
+䋽 > hempen\-sandals;
+䋯 > crucial\-points;
+䋢 > to\-twist\-ropes;
+䋜 > crucial\-points;
+䊼 > measuring\-unit;
+䊨 > storing\-grains;
+䈷 > a\-bamboo\-fence;
+䈚 > a\-bamboo\-shoot;
+䇫 > bamboo\-splints;
+䇅 > to\-stand\-still;
+䅥 > ripening\-crops;
+䅖 > sweet\-smelling;
+䃹 > jade\-and\-stone;
+䃸 > electric\-light;
+䃱 > electric\-light;
+䃡 > a\-small\-pebble;
+䃏 > a\-kind\-of\-rock;
+䃌 > rocky\-mountain;
+䂛 > a\-kind\-of\-rock;
+䂌 > a\-short\-weapon;
+䁤 > moistened\-eyes;
+䁏 > farsightedness;
+䀺 > squinting\-eyes;
+䀥 > beautiful\-eyes;
+㽦 > reclaimed\-land;
+㽥 > fertile\-fields;
+㽋 > a\-kind\-of\-tile;
+㽄 > an\-earthen\-jar;
+㻿 > a\-kind\-of\-jade;
+㻺 > a\-kind\-of\-jade;
+㻵 > a\-kind\-of\-jade;
+㻯 > a\-kind\-of\-jade;
+㻬 > a\-kind\-of\-jade;
+㻧 > a\-kind\-of\-jade;
+㻟 > a\-kind\-of\-jade;
+㻝 > a\-kind\-of\-jade;
+㻖 > a\-kind\-of\-jade;
+㻕 > a\-kind\-of\-jade;
+㻔 > a\-kind\-of\-jade;
+㻑 > a\-kind\-of\-jade;
+㻋 > a\-kind\-of\-jade;
+㻂 > a\-kind\-of\-jade;
+㺹 > a\-kind\-of\-jade;
+㺸 > a\-kind\-of\-jade;
+㺷 > a\-kind\-of\-jade;
+㺱 > a\-kind\-of\-jade;
+㺰 > a\-kind\-of\-jade;
+㺭 > a\-kind\-of\-jade;
+㺫 > a\-kind\-of\-jade;
+㸫 > castrated\-bull;
+㸤 > broken\-leather;
+㸊 > fierce\-of\-fire;
+㶠 > water\-currents;
+㶞 > water\-currents;
+㵥 > water\-currents;
+㵘 > great\-currents;
+㴸 > swift\-currents;
+㴙 > water\-dripping;
+㳃 > to\-temper\-iron;
+㲏 > flying\-feather;
+㱧 > stinking\-smell;
+㱏 > the\-right\-side;
+㰚 > a\-bamboo\-fence;
+㰘 > a\-kind\-of\-tree;
+㰊 > a\-kind\-of\-tree;
+㰂 > a\-kind\-of\-tree;
+㰀 > a\-kind\-of\-tree;
+㯞 > a\-kind\-of\-tree;
+㯚 > a\-kind\-of\-tree;
+㯗 > a\-kind\-of\-tree;
+㮋 > a\-kind\-of\-tree;
+㮅 > a\-kind\-of\-tree;
+㭻 > the\-crab\-apple;
+㭭 > a\-kind\-of\-tree;
+㭜 > a\-kind\-of\-tree;
+㭚 > a\-kind\-of\-tree;
+㭔 > a\-kind\-of\-tree;
+㭑 > a\-kind\-of\-tree;
+㭏 > a\-kind\-of\-wood;
+㭇 > a\-kind\-of\-tree;
+㭄 > a\-king\-of\-tree;
+㭁 > a\-kind\-of\-tree;
+㬋 > name\-of\-a\-star;
+㫏 > a\-kind\-of\-flag;
+㫂 > to\-chop\-or\-cut;
+㪇 > to\-disseminate;
+㨇 > to\-sweep\-clean;
+璘 > luster\-of\-jade;
+瑩 > lustre\-of\-gems;
+嶺 > mountain\-ridge;
+㦍 > to\-be\-startled;
+㥺 > to\-blow\-a\-fire;
+菱 > water\-chestnut;
+㥉 > a\-little\-angry;
+㥇 > to\-be\-perverse;
+㤾 > not\-doing\-well;
+㤖 > to\-have\-wisdom;
+㣦 > a\-winding\-path;
+㢟 > to\-walk\-slowly;
+㡜 > ragged\-clothes;
+㠨 > misty\-mountain;
+㠡 > high\-and\-lofty;
+㠚 > high\-and\-lofty;
+㟿 > high\-and\-steep;
+㟛 > high\-and\-steep;
+㞩 > mountain\-vapor;
+㞜 > hempen\-sandals;
+㞗 > the\-male\-organ;
+㞌 > to\-be\-pregnant;
+㞊 > unable\-to\-walk;
+㝰 > unable\-to\-meet;
+㝛 > ahalting\-place;
+㜤 > fooling\-around;
+㜑 > an\-older\-woman;
+㛩 > sisters\-in\-law;
+㛂 > weak\-and\-small;
+㚺 > to\-be\-pregnant;
+㚲 > small\-and\-weak;
+㚃 > to\-take\-a\-hint;
+㙷 > low\-lying\-area;
+㗊 > public\-opinion;
+㖾 > to\-beat\-a\-drum;
+㖢 > to\-reject\-food;
+㕬 > public\-opinion;
+㕤 > a\-proud\-temper;
+㔙 > great\-strength;
+㔁 > a\-kind\-of\-tool;
+㒛 > to\-stand\-alone;
+㒀 > do\-not\-fear\-to;
+经 > classic\-works;
+弟 > young\-brother;
+廻 > circle\-around;
+关 > frontier\-pass;
+帝 > supreme\-ruler;
+番 > to\-take\-turns;
+略 > approximately;
+共 > together\-with;
+义 > right\-conduct;
+嫂 > sister\-in\-law;
+哥 > elder\-brother;
+婦 > married\-women;
+訣 > take\-leave\-of;
+族 > a\-family\-clan;
+奪 > take\-by\-force;
+兄 > elder\-brother;
+笔 > writing\-brush;
+袷 > lined\-garment;
+瀬 > swift\-current;
+妇 > married\-women;
+伯 > older\-brother;
+漲 > rise\-in\-price;
+礼 > social\-custom;
+嘩 > rushing\-sound;
+啣 > hold\-in\-mouth;
+泊 > anchor\-vessel;
+沿 > follow\-course;
+咄 > noise\-of\-rage;
+含 > hold\-in\-mouth;
+夺 > take\-by\-force;
+菊 > chrysanthemum;
+岳 > mountain\-peak;
+匹 > bolt\-of\-cloth;
+颇 > lean\-one\-side;
+劫 > take\-by\-force;
+晨 > early\-morning;
+撞 > knock\-against;
+愈 > more\-and\-more;
+槇 > tip\-of\-a\-tree;
+駅 > relay\-station;
+饅 > steamed\-bread;
+炸 > to\-fry\-in\-oil;
+脈 > blood\-vessels;
+绪 > end\-of\-thread;
+飼 > raise\-animals;
+梓 > catalpa\-ovata;
+肌 > muscle\-tissue;
+佩 > belt\-ornament;
+署 > public\-office;
+搭 > join\-together;
+頗 > lean\-one\-side;
+栗 > chestnut\-tree;
+桑 > mulberry\-tree;
+脉 > blood\-vessels;
+義 > right\-conduct;
+鞄 > to\-work\-hides;
+杓 > handle\-of\-cup;
+佃 > tenant\-farmer;
+昆 > elder\-brother;
+贡 > offer\-tribute;
+拼 > join\-together;
+曇 > become\-cloudy;
+亙 > extend\-across;
+亘 > extend\-across;
+诞 > bear\-children;
+晴 > clear\-weather;
+涨 > rise\-in\-price;
+關 > frontier\-pass;
+緒 > end\-of\-thread;
+関 > frontier\-pass;
+塑 > model\-in\-clay;
+經 > classic\-works;
+経 > classic\-works;
+浦 > bank\-of\-river;
+翰 > writing\-brush;
+籔 > bamboo\-basket;
+辰 > early\-morning;
+慎 > act\-with\-care;
+莉 > white\-jasmine;
+捗 > make\-progress;
+筆 > writing\-brush;
+哗 > rushing\-sound;
+塌 > fall\-in\-ruins;
+竖 > perpendicular;
+禮 > social\-custom;
+陕 > mountain\-pass;
+惚 > absent\-minded;
+诀 > take\-leave\-of;
+淀 > shallow\-water;
+淘 > wash\-in\-sieve;
+瑰 > extraordinary;
+垫 > advance\-money;
+灶 > kitchen\-range;
+毓 > give\-birth\-to;
+咧 > stretch\-mouth;
+奎 > stride\-of\-man;
+洽 > to\-blend\-with;
+瑶 > precious\-jade;
+钰 > rare\-treasure;
+瑛 > luster\-of\-gem;
+馒 > steamed\-bread;
+饲 > raise\-animals;
+殉 > die\-for\-cause;
+衙 > public\-office;
+唬 > to\-intimidate;
+瘪 > shrivelled\-up;
+唆 > make\-mischief;
+岚 > mountain\-mist;
+桦 > type\-of\-birch;
+涟 > flowing\-water;
+唔 > hold\-in\-mouth;
+飕 > sound\-of\-wind;
+坷 > clod\-of\-earth;
+鑫 > used\-in\-names;
+笋 > bamboo\-shoots;
+荃 > aromatic\-herb;
+篓 > bamboo\-basket;
+馄 > dumpling\-soup;
+穹 > high\-and\-vast;
+弈 > chinese\-chess;
+聿 > writing\-brush;
+驮 > carry\-on\-back;
+箩 > bamboo\-basket;
+芥 > mustard\-plant;
+驿 > relay\-station;
+炜 > brilliant\-red;
+岜 > rock\-mountain;
+纫 > thread\-needle;
+桀 > chicken\-roost;
+噙 > hold\-in\-mouth;
+篝 > bamboo\-basket;
+拮 > laboring\-hard;
+茉 > white\-jasmine;
+纥 > inferior\-silk;
+昙 > become\-cloudy;
+忤 > insubordinate;
+鸾 > fabulous\-bird;
+嘁 > to\-be\-grieved;
+辎 > a\-supply\-cart;
+芫 > daphne\-genkwa;
+伧 > vulgar\-person;
+泠 > nice\-and\-cool;
+縻 > halter\-for\-ox;
+踽 > to\-walk\-alone;
+赭 > reddish\-brown;
+颀 > tall\-and\-slim;
+柘 > a\-thorny\-tree;
+谔 > honest\-speech;
+骓 > piebald\-horse;
+岫 > mountain\-peak;
+崧 > high\-mountain;
+酚 > carbolic\-acid;
+夤 > distant\-place;
+暌 > in\-opposition;
+濑 > swift\-current;
+怍 > to\-be\-ashamed;
+贽 > gift\-superior;
+毖 > guard\-against;
+迓 > to\-go\-to\-meet;
+毵 > long\-feathers;
+睚 > corner\-of\-eye;
+毽 > a\-shuttlecock;
+僳 > minority\-name;
+骐 > piebald\-horse;
+辏 > hubs\-of\-wheel;
+旆 > flag\-ornament;
+荇 > a\-water\-plant;
+卮 > measuring\-cup;
+髡 > to\-shear\-tree;
+鳜 > mandarin\-fish;
+鼍 > large\-reptile;
+笫 > planks\-of\-bed;
+缡 > a\-bridal\-veil;
+绨 > coarse\-pongee;
+芰 > water\-caltrop;
+魃 > drought\-demon;
+舳 > stern\-of\-ship;
+屦 > straw\-sandals;
+蓐 > straw\-bed\-mat;
+銎 > eye\-of\-an\-axe;
+醣 > carbohydrates;
+蛑 > a\-marine\-crab;
+椠 > wooden\-tablet;
+媸 > an\-ugly\-woman;
+馇 > stir\-and\-cook;
+甙 > sugar\-product;
+薤 > allium\-bakeri;
+塥 > dry\-clay\-lump;
+鼉 > large\-reptile;
+鸞 > fabulous\-bird;
+鵩 > owl\-like\-bird;
+鱖 > mandarin\-fish;
+髃 > shoulder\-bone;
+骪 > crooked\-bones;
+驛 > relay\-station;
+騏 > piebald\-horse;
+騅 > piebald\-horse;
+馱 > carry\-on\-back;
+馣 > fragrant\-odor;
+餧 > steamed\-bread;
+餛 > dumpling\-soup;
+餚 > prepared\-meat;
+颼 > sound\-of\-wind;
+頎 > tall\-and\-slim;
+鞮 > leather\-shoes;
+霝 > drops\-of\-rain;
+陝 > mountain\-pass;
+铖 > person''s\-name;
+錡 > a\-kind\-of\-pen;
+鋮 > person''s\-name;
+鈺 > rare\-treasure;
+鈄 > a\-wine\-flagon;
+釭 > tire\-of\-wheel;
+醨 > dregs\-of\-wine;
+辡 > recrimination;
+轏 > sleeping\-cart;
+輳 > hubs\-of\-wheel;
+輜 > a\-supply\-cart;
+跮 > hasty\-walking;
+贉 > earnest\-money;
+贄 > gift\-superior;
+賮 > farewell\-gift;
+貢 > offer\-tribute;
+讍 > honest\-speech;
+讆 > to\-exaggerate;
+謍 > humming\-sound;
+諤 > honest\-speech;
+諕 > to\-intimidate;
+覶 > to\-look\-about;
+覔 > to\-search\-for;
+襚 > grave\-clothes;
+裌 > lined\-garment;
+衇 > blood\-vessels;
+蠵 > large\-turtles;
+螾 > the\-earthworm;
+螥 > the\-house\-fly;
+螙 > grubs\-in\-wood;
+蛅 > a\-caterpillar;
+蚠 > person''s\-name;
+蘯 > to\-toss\-about;
+蔎 > thea\-sinensis;
+蓧 > bamboo\-basket;
+葽 > type\-of\-grain;
+菼 > rush\-or\-sedge;
+菺 > althaea\-rosea;
+菑 > to\-weed\-grass;
+莧 > edible\-greens;
+荈 > thea\-sinensis;
+茥 > rubus\-tokkura;
+苘 > indian\-mallow;
+脥 > pelvic\-cavity;
+胲 > hydroxylamine;
+罳 > wooden\-screen;
+缇 > reddish\-color;
+縭 > a\-bridal\-veil;
+緹 > reddish\-color;
+緖 > end\-of\-thread;
+綈 > coarse\-pongee;
+紉 > thread\-needle;
+紇 > inferior\-silk;
+糭 > rice\-dumpling;
+籾 > unhulled\-rice;
+籮 > bamboo\-basket;
+籜 > bamboo\-sheath;
+簍 > bamboo\-basket;
+箨 > bamboo\-sheath;
+笵 > a\-bamboo\-form;
+笭 > bamboo\-screen;
+竪 > perpendicular;
+砞 > to\-smash\-rock;
+矞 > bore\-with\-awl;
+盪 > to\-toss\-about;
+癟 > shrivelled\-up;
+畧 > approximately;
+瓌 > extraordinary;
+璟 > luster\-of\-gem;
+璂 > jade\-ornament;
+瑳 > luster\-of\-gem;
+瑤 > precious\-jade;
+琕 > type\-of\-pearl;
+珮 > jade\-ornament;
+獙 > die\-violently;
+牁 > mooring\-stake;
+熰 > great\-drought;
+煒 > brilliant\-red;
+瀨 > swift\-current;
+漣 > flowing\-water;
+浬 > nautical\-mile;
+洊 > flowing\-water;
+毿 > long\-feathers;
+欵 > to\-treat\-well;
+欓 > a\-cross\-piece;
+櫌 > a\-kind\-of\-hoe;
+檮 > block\-of\-wood;
+樺 > type\-of\-birch;
+槧 > wooden\-tablet;
+榌 > wooden\-ladder;
+楙 > name\-of\-plant;
+椛 > type\-of\-birch;
+梼 > block\-of\-wood;
+梹 > the\-areca\-nut;
+梎 > sickle\-handle;
+栰 > a\-bamboo\-raft;
+杮 > wood\-shavings;
+朩 > kwukyel\:\-rank;
+搢 > to\-stick\-into;
+掭 > to\-manipulate;
+挶 > hold\-in\-hands;
+拕 > to\-drag\-after;
+抃 > to\-clap\-hands;
+戺 > stone\-boarder;
+戹 > in\-difficulty;
+愼 > act\-with\-care;
+愪 > to\-be\-grieved;
+愡 > absent\-minded;
+怾 > mountain\-name;
+彽 > go\-to\-and\-fro;
+彲 > yellow\-dragon;
+彔 > to\-carve\-wood;
+巵 > measuring\-cup;
+巰 > an\-atom\-group;
+巯 > an\-atom\-group;
+巪 > person''s\-name;
+嶽 > mountain\-peak;
+嵐 > mountain\-mist;
+崌 > mountain\-name;
+峠 > mountain\-pass;
+峂 > name\-of\-place;
+峀 > mountain\-peak;
+岾 > mountain\-pass;
+屩 > straw\-sandals;
+屨 > straw\-sandals;
+寀 > feudal\-estate;
+媢 > be\-jealous\-of;
+墊 > advance\-money;
+塐 > model\-in\-clay;
+堺 > person''s\-name;
+垻 > an\-embankment;
+嚚 > argumentative;
+咡 > side\-of\-mouth;
+凟 > to\-be\-rude\-to;
+儹 > to\-accumulate;
+儲 > to\-save\-money;
+儛 > to\-skip\-about;
+傖 > vulgar\-person;
+傒 > personal\-name;
+偊 > to\-walk\-alone;
+侂 > to\-commission;
+乨 > the\-beginning;
+䶚 > decayed\-tooth;
+䶈 > a\-kind\-of\-rat;
+䶃 > a\-kind\-of\-rat;
+䵿 > a\-silent\-drum;
+䵁 > decayed\-dough;
+䴰 > a\-family\-name;
+䲺 > birds\-singing;
+䲅 > the\-globefish;
+䱸 > a\-family\-name;
+䱦 > the\-globefish;
+䱡 > the\-globefish;
+䰽 > the\-globefish;
+䰻 > to\-catch\-fish;
+䰱 > name\-of\-a\-god;
+䯅 > a\-swift\-horse;
+䯀 > a\-swift\-horse;
+䮈 > to\-go\-swiftly;
+䭿 > a\-swift\-horse;
+䭵 > a\-swift\-horse;
+䬟 > sound\-of\-wind;
+䫿 > a\-cool\-breeze;
+䫴 > weak\-and\-dull;
+䫁 > the\-first\-son;
+䪫 > ancient\-music;
+䪧 > ancient\-music;
+䪒 > leather\-pants;
+䩾 > herb\-medicine;
+䩤 > to\-lead\-an\-ox;
+䩣 > shoe\-cushions;
+䩞 > a\-saddle\-flap;
+䨎 > deep\-and\-dark;
+䧜 > an\-embankment;
+䧖 > a\-small\-mound;
+䦴 > open\-the\-door;
+䦳 > between\-steps;
+䦱 > open\-the\-door;
+䦣 > open\-the\-door;
+䦡 > a\-door\-keeper;
+䥩 > hooks\-to\-hang;
+䥚 > the\-beginning;
+䤵 > a\-tiny\-needle;
+䤔 > dregs\-of\-wine;
+䤎 > soybean\-sauce;
+䤃 > drunken\-sound;
+䣰 > to\-pool\-money;
+䢧 > to\-go\-forward;
+䢚 > a\-narrow\-path;
+䢃 > to\-administer;
+䡥 > a\-moving\-cart;
+䡆 > a\-moving\-cart;
+䟘 > to\-straighten;
+䟊 > short\-strides;
+䞁 > corresponding;
+䝶 > to\-levy\-taxes;
+䝬 > a\-wealthy\-man;
+䜕 > to\-exaggerate;
+䛾 > familiar\-with;
+䛐 > an\-expression;
+䚕 > to\-search\-out;
+䙹 > to\-vomit\-milk;
+䙥 > shiny\-dresses;
+䙢 > short\-t\-shirt;
+䙠 > short\-clothes;
+䙟 > heavy\-clothes;
+䙞 > woolen\-string;
+䙅 > the\-waistline;
+䗗 > the\-millipede;
+䗋 > a\-marine\-crab;
+䗃 > the\-millipede;
+䖩 > a\-kind\-of\-bee;
+䖑 > a\-white\-tiger;
+䖇 > fragrant\-herb;
+䕥 > herb\-medicine;
+䕖 > fragrant\-herb;
+䔞 > the\-beginning;
+䔜 > herb\-medicine;
+䔚 > herb\-medicine;
+䔖 > water\-caltrop;
+䔓 > herb\-medicine;
+䒥 > corresponding;
+䒗 > fragrant\-herb;
+䒎 > without\-color;
+䒍 > without\-color;
+䑲 > to\-row\-a\-boat;
+䑥 > a\-moving\-boat;
+䐲 > half\-raw\-meat;
+䐙 > the\-diaphragm;
+䏘 > a\-big\-abdomen;
+䏄 > not\-to\-listen;
+䍽 > a\-fierce\-goat;
+䍼 > salted\-mutton;
+䍪 > castrated\-ram;
+䍤 > to\-strain\-out;
+䌣 > to\-accumulate;
+䌙 > hank\-of\-ropes;
+䌅 > a\-thick\-ropes;
+䋦 > ravelled\-silk;
+䋝 > a\-throat\-band;
+䊽 > a\-fine\-thread;
+䊡 > steamed\-bread;
+䊔 > polished\-rice;
+䊄 > polished\-rice;
+䉰 > bamboo\-shoots;
+䉩 > a\-bamboo\-ware;
+䉨 > bamboo\-joints;
+䈾 > move\-a\-little;
+䈳 > a\-window\-leaf;
+䇋 > name\-of\-a\-god;
+䆞 > deep\-and\-dark;
+䆚 > to\-go\-through;
+䆗 > deep\-and\-dark;
+䅛 > husks\-of\-rice;
+䄔 > a\-family\-name;
+䄇 > a\-family\-name;
+䃻 > an\-embankment;
+䃳 > falling\-stone;
+䂶 > the\-crustacea;
+䂗 > to\-be\-careful;
+䂎 > a\-short\-spear;
+䂁 > an\-angry\-look;
+䁙 > eloquent\-eyes;
+䀮 > sight\-blurred;
+䀭 > with\-big\-eyes;
+䀧 > sight\-blurred;
+䀟 > sight\-blurred;
+䀖 > to\-look\-up\-to;
+䀕 > angry\-glances;
+㿬 > nasal\-disease;
+㿜 > shrivelled\-up;
+㾽 > swelling\-feet;
+㽲 > griping\-colic;
+㽱 > griping\-colic;
+㽇 > unburnt\-tiles;
+㼵 > a\-small\-basin;
+㼟 > a\-tiled\-house;
+㼎 > a\-small\-melon;
+㻾 > jade\-articles;
+㺩 > jade\-articles;
+㺈 > to\-go\-hunting;
+㹹 > a\-kind\-of\-dog;
+㹵 > a\-hunting\-dog;
+㹳 > a\-kind\-of\-ape;
+㹣 > a\-kind\-of\-dog;
+㸄 > a\-raging\-fire;
+㷾 > blaze\-of\-fire;
+㷸 > blaze\-of\-fire;
+㷖 > to\-shine\-upon;
+㷕 > hearing\-sound;
+㷒 > to\-cook\-meals;
+㶘 > full\-of\-water;
+㵳 > crystal\-clear;
+㵱 > flowing\-water;
+㵠 > to\-gush\-forth;
+㴽 > water\-current;
+㴵 > water\-current;
+㴯 > water\-current;
+㴮 > water\-current;
+㴫 > great\-flowing;
+㴨 > water\-current;
+㴦 > to\-wash\-hands;
+㴥 > great\-billows;
+㴒 > water\-current;
+㴐 > great\-current;
+㴂 > great\-billows;
+㳩 > great\-billows;
+㲛 > hairy\-animals;
+㰻 > asses\-braying;
+㰳 > asses\-braying;
+㰏 > a\-bamboo\-pole;
+㰌 > to\-monopolize;
+㯽 > the\-areca\-nut;
+㭿 > oblique\-angle;
+㭓 > a\-pillar\-arch;
+㬬 > a\-family\-name;
+㬥 > to\-sun\-to\-air;
+㬄 > warm\-and\-damp;
+㫟 > day\-after\-day;
+㫚 > early\-morning;
+㩥 > delicate\-hand;
+飼 > raise\-animals;
+㨞 > to\-feel\-about;
+礼 > social\-custom;
+晴 > clear\-weather;
+㧼 > to\-distribute;
+㧷 > to\-wipe\-tears;
+栗 > chestnut\-tree;
+㧘 > to\-accumulate;
+禮 > social\-custom;
+㦫 > lax\-and\-crude;
+漣 > flowing\-water;
+㦌 > keen\-or\-sharp;
+㦆 > to\-exaggerate;
+㥼 > to\-be\-near\-to;
+略 > approximately;
+辰 > early\-morning;
+㥥 > absent\-minded;
+㤰 > to\-be\-ashamed;
+嵐 > mountain\-mist;
+鸞 > fabulous\-bird;
+㣿 > painfully\-sad;
+㣱 > common\-people;
+㣤 > to\-tread\-upon;
+㣔 > to\-walk\-alone;
+㢻 > to\-draw\-a\-bow;
+㢖 > a\-store\-house;
+㡷 > a\-family\-name;
+㠺 > a\-fine\-thread;
+㠴 > a\-pillow\-case;
+㠛 > name\-a\-county;
+㟶 > mountain\-peak;
+㟲 > mountain\-peak;
+㟭 > the\-min\-river;
+㟩 > the\-min\-river;
+㞶 > the\-min\-river;
+㞬 > close\-or\-near;
+㞋 > soft\-and\-meek;
+㝻 > barely\-enough;
+㝦 > to\-accumulate;
+㝓 > corresponding;
+㝃 > to\-bear\-a\-son;
+㛒 > can\-not\-speak;
+㛎 > an\-ugly\-woman;
+㚴 > a\-pretty\-girl;
+㘛 > a\-deep\-valley;
+㘓 > prolix\-speech;
+㘉 > to\-make\-sound;
+㗴 > dogs\-fighting;
+㕰 > sound\-angrily;
+㕪 > birds''\-chirps;
+㕙 > a\-wily\-rabbit;
+㕉 > to\-dig\-a\-hole;
+㔥 > full\-of\-anger;
+㓴 > to\-cut\-in\-two;
+㓖 > bitterly\-cold;
+㓏 > bitterly\-cold;
+㓌 > bitterly\-cold;
+㒇 > to\-skip\-about;
+㑼 > name\-of\-a\-god;
+㑥 > disrespectful;
+㐰 > to\-believe\-in;
+瞳 > pupil\-of\-eye;
+万 > ten\-thousand;
+布 > cotton\-cloth;
+通 > pass\-through;
+提 > hold\-in\-hand;
+京 > capital\-city;
+甚 > great\-extent;
+周 > zhou\-dynasty;
+尻 > end\-of\-spine;
+宴 > to\-entertain;
+宰 > to\-slaughter;
+犯 > commit\-crime;
+婢 > servant\-girl;
+参 > take\-part\-in;
+掌 > palm\-of\-hand;
+姿 > one''s\-manner;
+姉 > elder\-sister;
+斗 > chinese\-peck;
+呼 > breathe\-sigh;
+姐 > elder\-sister;
+衝 > rush\-against;
+執 > hold\-in\-hand;
+螺 > spiral\-shell;
+坊 > neighborhood;
+尼 > buddhist\-nun;
+鼾 > snore\-loudly;
+叶 > to\-harmonize;
+野 > open\-country;
+移 > change\-place;
+唐 > tang\-dynasty;
+秀 > ear\-of\-grain;
+执 > hold\-in\-hand;
+蒲 > type\-of\-rush;
+庆 > congratulate;
+蒟 > betel\-pepper;
+汗 > perspiration;
+萬 > ten\-thousand;
+拜 > do\-obeisance;
+參 > take\-part\-in;
+虑 > be\-concerned;
+宋 > song\-dynasty;
+胆 > gall\-bladder;
+剖 > split\-in\-two;
+凤 > male\-phoenix;
+询 > inquire\-into;
+膽 > gall\-bladder;
+筑 > ancient\-lute;
+偶 > accidentally;
+飽 > eat\-heartily;
+胎 > unborn\-child;
+悟 > to\-apprehend;
+肅 > pay\-respects;
+肃 > pay\-respects;
+姊 > elder\-sister;
+侘 > disappointed;
+祭 > sacrifice\-to;
+贺 > congratulate;
+饱 > eat\-heartily;
+宪 > constitution;
+碑 > stone\-tablet;
+昌 > light\-of\-sun;
+携 > lead\-by\-hand;
+厦 > big\-building;
+仆 > fall\-forward;
+妥 > satisfactory;
+杭 > cross\-stream;
+赠 > give\-present;
+腔 > chest\-cavity;
+孝 > filial\-piety;
+笹 > small\-bamboo;
+笛 > bamboo\-flute;
+歧 > fork\-of\-road;
+拝 > do\-obeisance;
+鉛 > lead\-plumbum;
+穗 > ear\-of\-grain;
+穂 > ear\-of\-grain;
+喃 > keep\-talking;
+舱 > hold\-of\-ship;
+醜 > ugly\-looking;
+慮 > be\-concerned;
+裘 > fur\-garments;
+栽 > to\-cultivate;
+诧 > be\-surprised;
+阎 > village\-gate;
+愣 > be\-in\-a\-daze;
+琪 > type\-of\-jade;
+箫 > bamboo\-flute;
+娥 > be\-beautiful;
+咪 > sound\-of\-cat;
+渗 > soak\-through;
+葫 > bottle\-gourd;
+坪 > level\-ground;
+坞 > entrenchment;
+怅 > disappointed;
+橡 > chestnut\-oak;
+絮 > waste\-cotton;
+跄 > walk\-rapidly;
+屹 > to\-rise\-high;
+惘 > disconcerted;
+眸 > pupil\-of\-eye;
+揩 > rub\-and\-wipe;
+楠 > name\-of\-tree;
+麓 > foot\-of\-hill;
+玮 > type\-of\-jade;
+恻 > feel\-anguish;
+桅 > mast\-of\-ship;
+骋 > gallop\-horse;
+闫 > village\-gate;
+蹒 > to\-jump\-over;
+祀 > to\-sacrifice;
+籁 > bamboo\-flute;
+寰 > great\-domain;
+斓 > multicolored;
+伫 > look\-towards;
+躏 > trample\-down;
+沽 > buy\-and\-sell;
+珥 > ear\-ornament;
+笆 > bamboo\-fence;
+虬 > young\-dragon;
+惬 > be\-satisfied;
+缨 > a\-chin\-strap;
+劾 > examine\-into;
+嘤 > seek\-friends;
+诃 > scold\-loudly;
+冽 > cold\-and\-raw;
+飨 > host\-banquet;
+怏 > discontented;
+冢 > burial\-mound;
+婀 > be\-beautiful;
+嗳 > interjection;
+碣 > stone\-tablet;
+宕 > stone\-quarry;
+耆 > man\-of\-sixty;
+靓 > make\-up\-face;
+蛰 > to\-hibernate;
+掼 > throw\-ground;
+囤 > grain\-basket;
+筱 > dwarf\-bamboo;
+樟 > camphor\-tree;
+鲥 > reeves''\-shad;
+逵 > thoroughfare;
+岷 > min\-mountain;
+枰 > smooth\-board;
+屐 > wooden\-shoes;
+胛 > the\-shoulder;
+鹞 > sparrow\-hawk;
+犄 > animal\-horns;
+跹 > wander\-about;
+昱 > bright\-light;
+栾 > name\-of\-tree;
+湄 > water''s\-edge;
+菅 > coarse\-grass;
+绻 > affectionate;
+篁 > bamboo\-grove;
+赅 > prepared\-for;
+椁 > outer\-coffin;
+纰 > spoiled\-silk;
+鼋 > large\-turtle;
+醐 > purest\-cream;
+龉 > uneven\-teeth;
+苻 > kind\-of\-herb;
+鬣 > horse''s\-mane;
+缗 > fishing\-line;
+湫 > a\-small\-pond;
+仟 > one\-thousand;
+蚶 > kind\-of\-clam;
+瓠 > bottle\-gourd;
+蛄 > mole\-cricket;
+毂 > hub\-of\-wheel;
+畚 > straw\-basket;
+洄 > a\-back\-water;
+飧 > evening\-meal;
+醪 > unclear\-wine;
+骝 > famous\-horse;
+骒 > mother\-horse;
+懔 > be\-afraid\-of;
+劓 > cut\-off\-nose;
+踔 > to\-get\-ahead;
+颡 > the\-forehead;
+潲 > driving\-rain;
+缯 > silk\-fabrics;
+惝 > disappointed;
+甓 > glazed\-tiles;
+荬 > a\-plant\-name;
+柒 > number\-seven;
+瘳 > to\-be\-healed;
+谇 > speak\-ill\-of;
+乇 > to\-depend\-on;
+龤 > to\-harmonize;
+齬 > uneven\-teeth;
+齆 > stuffed\-noze;
+齁 > snore\-loudly;
+鼽 > clogged\-nose;
+黿 > large\-turtle;
+麕 > muntjac\-deer;
+鷂 > sparrow\-hawk;
+鳳 > male\-phoenix;
+鳯 > male\-phoenix;
+鳐 > the\-nautilus;
+鱑 > the\-sturgeon;
+鱂 > name\-of\-fish;
+鰩 > the\-nautilus;
+鰣 > reeves''\-shad;
+鰃 > name\-of\-fish;
+鰁 > name\-of\-fish;
+魦 > shark\-family;
+魢 > name\-of\-fish;
+魟 > the\-nautilus;
+鬵 > big\-iron\-pot;
+鬐 > horse''s\-mane;
+鬅 > unkempt\-hair;
+驈 > black\-horses;
+騮 > famous\-horse;
+騍 > mother\-horse;
+騆 > divine\-horse;
+騁 > gallop\-horse;
+駜 > strong\-horse;
+駗 > chatter\-mark;
+饗 > host\-banquet;
+餀 > tainted\-food;
+飱 > evening\-meal;
+颭 > sway\-in\-wind;
+顙 > the\-forehead;
+頟 > the\-forehead;
+鞦 > leather\-stap;
+靚 > make\-up\-face;
+霑 > be\-moistened;
+隖 > entrenchment;
+陁 > a\-steep\-bank;
+闑 > the\-doorsill;
+閻 > village\-gate;
+閆 > village\-gate;
+镨 > praseodymium;
+鐠 > praseodymium;
+鏷 > protactinium;
+鍊 > smelt\-metals;
+錬 > smelt\-metals;
+錈 > to\-bend\-iron;
+釪 > an\-alms\-bowl;
+醽 > kind\-of\-wine;
+郙 > to\-be\-exiled;
+邲 > good\-looking;
+迣 > to\-leap\-over;
+轂 > hub\-of\-wheel;
+躪 > trample\-down;
+躚 > wander\-about;
+躙 > trample\-down;
+蹣 > to\-jump\-over;
+蹌 > walk\-rapidly;
+踼 > to\-fall\-flat;
+踤 > butt\-against;
+贈 > give\-present;
+賉 > to\-give\-alms;
+賅 > prepared\-for;
+賀 > congratulate;
+貆 > small\-badger;
+豶 > castrate\-pig;
+誾 > speak\-gently;
+誶 > speak\-ill\-of;
+詢 > inquire\-into;
+訶 > scold\-loudly;
+襛 > fine\-clothes;
+襆 > hood\-or\-cowl;
+蟄 > to\-hibernate;
+虯 > young\-dragon;
+葜 > smilax\-china;
+萩 > scandent\-hop;
+萘 > naphthanlene;
+菝 > smilax\-china;
+莦 > jungle\-grass;
+芧 > chestnut\-oak;
+芚 > green\-sprout;
+芑 > white\-millet;
+艙 > hold\-of\-ship;
+膗 > ugly\-and\-fat;
+肙 > a\-small\-worm;
+羀 > fishing\-trap;
+罶 > fishing\-trap;
+纓 > a\-chin\-strap;
+纁 > shade\-of\-red;
+繙 > to\-interpret;
+繒 > silk\-fabrics;
+縕 > tangled\-hemp;
+緡 > fishing\-line;
+綣 > affectionate;
+紕 > spoiled\-silk;
+粛 > pay\-respects;
+籯 > bamboo\-chest;
+籟 > bamboo\-flute;
+篴 > bamboo\-flute;
+篠 > dwarf\-bamboo;
+筤 > young\-bamboo;
+筍 > bamboo\-shoot;
+筅 > bamboo\-brush;
+穟 > ear\-of\-grain;
+秬 > black\-millet;
+祘 > to\-calculate;
+磠 > sal\-ammoniac;
+碶 > a\-flood\-gate;
+砟 > stone\-tablet;
+矼 > stone\-bridge;
+睒 > to\-glance\-at;
+皦 > bright\-white;
+瘺 > anal\-fistula;
+疿 > prickly\-heat;
+瑋 > type\-of\-jade;
+珹 > type\-of\-jade;
+玍 > ill\-tempered;
+狆 > pekinese\-dog;
+牂 > female\-sheep;
+燷 > disappointed;
+燣 > disappointed;
+滲 > soak\-through;
+滊 > a\-river\-name;
+泖 > still\-waters;
+毈 > fertile\-eggs;
+殜 > half\-sitting;
+欿 > discontented;
+欒 > name\-of\-tree;
+橒 > wood\-streaks;
+槻 > zelkova\-tree;
+槨 > outer\-coffin;
+槔 > water\-pulley;
+楀 > name\-of\-tree;
+枟 > wood\-streaks;
+斕 > multicolored;
+攜 > lead\-by\-hand;
+摜 > throw\-ground;
+摙 > to\-transport;
+揑 > to\-fabricate;
+戉 > a\-battle\-axe;
+懍 > be\-afraid\-of;
+憲 > constitution;
+慶 > congratulate;
+愜 > be\-satisfied;
+惻 > feel\-anguish;
+悵 > disappointed;
+廹 > to\-persecute;
+廈 > big\-building;
+帨 > handkerchief;
+嶢 > high\-or\-tall;
+屧 > wooden\-shoes;
+屘 > the\-youngest;
+嫲 > grand\-mother;
+壈 > disappointed;
+塢 > entrenchment;
+埜 > open\-country;
+嚶 > seek\-friends;
+噯 > interjection;
+喭 > condole\-with;
+咥 > sound\-of\-cat;
+呹 > to\-eat\-grass;
+叄 > take\-part\-in;
+厷 > the\-fore\-arm;
+厤 > to\-calculate;
+勣 > achievements;
+剷 > to\-level\-off;
+剗 > to\-level\-off;
+儗 > compare\-with;
+佭 > unsubmissive;
+亰 > capital\-city;
+丼 > bowl\-of\-food;
+䴼 > to\-extirpate;
+䴕 > a\-woodpecker;
+䳖 > flying\-birds;
+䲜 > lots\-of\-fish;
+䱊 > roe\-or\-spawn;
+䰸 > the\-nautilus;
+䯶 > fair\-of\-hair;
+䯬 > to\-hang\-down;
+䯧 > a\-small\-hall;
+䮟 > big\-and\-tall;
+䮑 > a\-gray\-horse;
+䭘 > well\-stacked;
+䭗 > well\-stacked;
+䭖 > animal\-feeds;
+䭊 > well\-stacked;
+䭉 > mashed\-beans;
+䬜 > evil\-spirits;
+䬚 > to\-move\-fast;
+䬋 > violent\-wind;
+䫨 > tall\-and\-big;
+䫚 > short\-headed;
+䫙 > the\-forehead;
+䫕 > small\-headed;
+䫇 > the\-whiskers;
+䪹 > a\-large\-face;
+䪰 > interjection;
+䪡 > to\-fall\-down;
+䪋 > silk\-cordage;
+䩏 > a\-small\-face;
+䩋 > a\-green\-face;
+䩊 > good\-looking;
+䩇 > a\-small\-head;
+䨶 > thunderstorm;
+䨲 > a\-small\-hare;
+䨪 > a\-dust\-storm;
+䨝 > a\-pure\-woman;
+䨈 > a\-small\-bird;
+䧬 > water''s\-edge;
+䧢 > a\-rough\-road;
+䧙 > a\-high\-mound;
+䥃 > a\-big\-hammer;
+䤬 > a\-small\-gong;
+䤦 > a\-battle\-axe;
+䤣 > a\-metal\-ring;
+䤋 > yellow\-faced;
+䣿 > to\-entertain;
+䣾 > cheese\-dregs;
+䣼 > mixed\-starch;
+䠔 > far\-and\-deep;
+䟿 > to\-reverence;
+䟹 > to\-hop\-about;
+䟕 > to\-step\-upon;
+䞱 > to\-fall\-over;
+䞧 > hard\-to\-walk;
+䜩 > to\-entertain;
+䚪 > curved\-horns;
+䘄 > cicada\-famiy;
+䘀 > grasshoppers;
+䗰 > spiral\-shell;
+䗧 > libellulidae;
+䖞 > a\-sea\-insect;
+䕻 > to\-adhere\-to;
+䕺 > dense\-growth;
+䕝 > medical\-herb;
+䕋 > of\-elm\-group;
+䓯 > water\-pepper;
+䑽 > a\-large\-boat;
+䑵 > a\-small\-boat;
+䐅 > the\-buttocks;
+䐁 > the\-buttocks;
+䏗 > unexpectedly;
+䏐 > the\-buttocks;
+䏍 > a\-small\-worm;
+䏀 > inharmonious;
+䎘 > birds\-flying;
+䎕 > flying\-birds;
+䍄 > an\-indenture;
+䌶 > \)\-black\-silk;
+䌇 > a\-thick\-rope;
+䌆 > silk\-fabrics;
+䊅 > to\-soak\-rice;
+䉯 > dried\-bamboo;
+䉕 > a\-bamboo\-hat;
+䉔 > bamboo\-slips;
+䈟 > broken\-sound;
+䇸 > a\-bamboo\-mat;
+䇝 > to\-break\-off;
+䇜 > small\-bamboo;
+䆬 > to\-fall\-down;
+䆢 > to\-penetrate;
+䆟 > coresponding;
+䆍 > cutted\-crops;
+䅁 > to\-husk\-rice;
+䃲 > a\-great\-rock;
+䃯 > small\-stones;
+䃝 > rugged\-rocks;
+䃍 > to\-fall\-down;
+䂐 > short\-stupid;
+䁧 > to\-open\-wide;
+䁠 > to\-hang\-down;
+䀁 > a\-small\-bowl;
+㿽 > a\-small\-bowl;
+㿵 > soft\-leather;
+㿲 > a\-fierce\-dog;
+㿪 > skin\-disease;
+㿨 > small\-stones;
+㿊 > very\-painful;
+㾔 > long\-illness;
+㼋 > the\-cucumber;
+㺖 > dogs\-barking;
+㺎 > fierce\-beast;
+㹿 > a\-fierce\-dog;
+㹪 > a\-fierce\-dog;
+㸾 > to\-filled\-up;
+㸭 > the\-opposite;
+㸘 > ten\-thousand;
+㷹 > intense\-heat;
+㶕 > to\-wash\-rice;
+㵊 > moving\-image;
+㴕 > to\-boil\-away;
+㴓 > to\-wash\-rice;
+㳞 > deep\-and\-far;
+㳑 > to\-flow\-over;
+㰷 > resurrection;
+㯬 > achievements;
+㯠 > a\-cross\-beam;
+㯜 > decayed\-wood;
+㮮 > a\-well\-sweep;
+㮬 > a\-fruit\-tree;
+㮪 > a\-small\-boat;
+㮏 > a\-fruit\-tree;
+㭫 > a\-fruit\-tree;
+㬵 > the\-shinbone;
+㫒 > hands\-joined;
+㫃 > flags\-flying;
+㫁 > to\-cut\-apart;
+㨭 > unreasonable;
+㧴 > to\-rub\-hands;
+㧢 > to\-depend\-on;
+㦰 > to\-break\-off;
+㦦 > apprehensive;
+鍊 > smelt\-metals;
+㦎 > cantankerous;
+㥵 > to\-dishonour;
+參 > take\-part\-in;
+㥠 > intelligence;
+㤳 > to\-depend\-on;
+㤧 > conciliation;
+㤞 > disappointed;
+螺 > spiral\-shell;
+㣒 > hair\-raising;
+㣑 > double\-image;
+㢗 > a\-high\-house;
+㡔 > oiled\-calico;
+㡅 > storage\-room;
+㠾 > a\-dish\-cloth;
+㠽 > a\-dish\-cloth;
+㠒 > mountain\-top;
+㟽 > mountain\-top;
+㟺 > mountain\-top;
+㟐 > big\-and\-high;
+㟇 > a\-land\-slide;
+㞢 > to\-arrive\-at;
+㞛 > red\-slippers;
+㞓 > the\-buttocks;
+㞅 > not\-straight;
+㜗 > covetousness;
+㛼 > to\-interrupt;
+㛥 > to\-prostrate;
+㛊 > to\-speculate;
+㛆 > to\-speculate;
+㘢 > a\-round\-cave;
+㘍 > sound\-of\-rat;
+㗒 > interjection;
+㖷 > bird\-singing;
+㖠 > an\-auxiliary;
+㕯 > slow\-tongued;
+㕒 > a\-lofty\-peak;
+㕃 > to\-fall\-over;
+㔬 > to\-establish;
+㔦 > to\-encourage;
+㔕 > with\-purpose;
+㔎 > to\-cut\-apart;
+㔃 > to\-cut\-short;
+㓣 > to\-sink\-into;
+㑪 > a\-generation;
+㑤 > good\-looking;
+㑔 > all\-together;
+㐸 > to\-own\-money;
+㐴 > to\-drag\-down;
+以 > by\-means\-of;
+農 > agriculture;
+径 > narrow\-path;
+几 > small\-table;
+便 > convenience;
+电 > electricity;
+百 > one\-hundred;
+跣 > bare\-footed;
+贅 > unnecessary;
+功 > achievement;
+江 > large\-river;
+注 > concentrate;
+牧 > tend\-cattle;
+婚 > get\-married;
+刊 > publication;
+农 > agriculture;
+熟 > well\-cooked;
+饭 > cooked\-rice;
+奢 > extravagant;
+查 > investigate;
+章 > composition;
+按 > put\-hand\-on;
+蝠 > kind\-of\-bat;
+蝕 > nibble\-away;
+困 > to\-surround;
+险 > narrow\-pass;
+练 > to\-practice;
+溯 > go\-upstream;
+渉 > ford\-stream;
+败 > be\-defeated;
+纷 > in\-disorder;
+缺 > be\-short\-of;
+遭 > come\-across;
+戴 > wear\-on\-top;
+勤 > industrious;
+勘 > investigate;
+髄 > bone\-marrow;
+効 > efficacious;
+貌 > countenance;
+繁 > complicated;
+柳 > willow\-tree;
+凄 > bitter\-cold;
+涉 > ford\-stream;
+霞 > rosy\-clouds;
+飴 > sweet\-meats;
+飯 > cooked\-rice;
+聪 > intelligent;
+倦 > be\-tired\-of;
+摔 > fall\-ground;
+醉 > intoxicated;
+査 > investigate;
+涛 > large\-waves;
+锅 > cooking\-pot;
+仔 > small\-thing;
+會 > to\-assemble;
+電 > electricity;
+拆 > to\-break\-up;
+翠 > color\-green;
+險 > narrow\-pass;
+晕 > halo\-in\-sky;
+険 > narrow\-pass;
+纠 > investigate;
+夸 > extravagant;
+辨 > distinguish;
+葛 > edible\-bean;
+轿 > sedan\-chair;
+敗 > be\-defeated;
+攫 > snatch\-away;
+紛 > in\-disorder;
+鍛 > forge\-metal;
+厕 > mingle\-with;
+鍋 > cooking\-pot;
+竿 > bamboo\-pole;
+券 > certificate;
+穉 > young\-grain;
+驳 > varicolored;
+憔 > be\-worn\-out;
+粞 > ground\-rice;
+酔 > intoxicated;
+遂 > comply\-with;
+隶 > subservient;
+缸 > earthen\-jug;
+肢 > human\-limbs;
+尴 > embarrassed;
+呐 > raise\-voice;
+颖 > rice\-tassel;
+砥 > a\-whetstone;
+孕 > be\-pregnant;
+钞 > paper\-money;
+垮 > be\-defeated;
+琢 > polish\-jade;
+绽 > ripped\-seam;
+奠 > pay\-respect;
+澜 > overflowing;
+惕 > be\-cautious;
+锻 > forge\-metal;
+蚀 > nibble\-away;
+趴 > lying\-prone;
+窘 > embarrassed;
+隋 > sui\-dynasty;
+瞄 > take\-aim\-at;
+祟 > evil\-spirit;
+嗔 > be\-angry\-at;
+奕 > in\-sequence;
+榴 > pomegranate;
+棘 > jujube\-tree;
+峙 > stand\-erect;
+砌 > stone\-steps;
+槐 > locust\-tree;
+鳞 > fish\-scales;
+惺 > intelligent;
+髓 > bone\-marrow;
+炽 > burning\-hot;
+迂 > doctrinaire;
+缪 > wind\-around;
+凋 > be\-withered;
+缤 > flourishing;
+雳 > thunderclap;
+赘 > unnecessary;
+驸 > extra\-horse;
+嗷 > loud\-clamor;
+炖 > stew\-slowly;
+谏 > remonstrate;
+篆 > seal\-script;
+宦 > officialdom;
+瓮 > earthen\-jar;
+朕 > pronoun\-''i'';
+阑 > door\-screen;
+卤 > saline\-soil;
+唏 > weep\-or\-sob;
+汩 > run\-swiftly;
+榕 > banyan\-tree;
+闰 > intercalary;
+昊 > summer\-time;
+玷 > flaw\-in\-gem;
+阙 > watch\-tower;
+瑕 > flaw\-in\-gem;
+泌 > to\-seep\-out;
+烽 > signal\-fire;
+孵 > sit\-on\-eggs;
+椭 > oval\-shaped;
+痉 > convulsions;
+匝 > full\-circle;
+饪 > cooked\-food;
+嶙 > precipitous;
+颧 > cheek\-bones;
+镗 > boring\-tool;
+揶 > make\-fun\-of;
+炷 > candle\-wick;
+贲 > forge\-ahead;
+蚱 > grasshopper;
+痨 > consumption;
+濂 > a\-waterfall;
+汐 > night\-tides;
+筠 > bamboo\-skin;
+氤 > hanging\-fog;
+痔 > hemorrhoids;
+趿 > to\-tread\-on;
+觞 > wine\-vessel;
+挹 > to\-bale\-out;
+膑 > the\-kneecap;
+徇 > comply\-with;
+唳 > cry\-of\-bird;
+礅 > stone\-block;
+箔 > reed\-screen;
+豸 > radical\-153;
+滟 > overflowing;
+烃 > hydrocarbon;
+砭 > stone\-probe;
+澍 > timely\-rain;
+龋 > tooth\-decay;
+缱 > attached\-to;
+奂 > be\-numerous;
+黩 > to\-dishonor;
+饴 > sweet\-meats;
+壅 > to\-obstruct;
+澶 > still\-water;
+餍 > be\-satiated;
+枥 > type\-of\-oak;
+蜢 > grasshopper;
+煅 > forge\-metal;
+桕 > tallow\-tree;
+鲢 > silver\-carp;
+趱 > go\-in\-hurry;
+妫 > family\-name;
+暾 > morning\-sun;
+荦 > brindled\-ox;
+邛 > in\-distress;
+戢 > to\-put\-away;
+榧 > type\-of\-yew;
+堇 > yellow\-loam;
+劬 > be\-diligent;
+魈 > mischevious;
+鍪 > an\-iron\-pan;
+蜣 > dung\-beetle;
+痦 > \(flat\)\-mole;
+戬 > exterminate;
+嗉 > bird''s\-crop;
+儋 > a\-small\-jar;
+蚜 > plant\-louse;
+粜 > sell\-grains;
+攮 > to\-fend\-off;
+苎 > china\-grass;
+埕 > earthen\-jar;
+坩 > earthenware;
+榉 > type\-of\-elm;
+玢 > porphyrites;
+绁 > to\-contract;
+潆 > tiny\-stream;
+髹 > red\-lacquer;
+觖 > to\-long\-for;
+螵 > a\-chrysalis;
+杪 > tip\-of\-twig;
+幂 > cover\-cloth;
+硗 > barren\-land;
+脞 > minced\-meat;
+轵 > end\-of\-axle;
+楗 > bar\-of\-door;
+桄 > a\-coir\-palm;
+堠 > battlements;
+俜 > to\-trust\-to;
+齲 > tooth\-decay;
+黷 > to\-dishonor;
+麀 > female\-deer;
+鹵 > saline\-soil;
+鸏 > tropic\-bird;
+鴺 > the\-pelican;
+鱠 > minced\-fish;
+鱗 > fish\-scales;
+鰱 > silver\-carp;
+鬙 > matted\-hair;
+驔 > black\-horse;
+驇 > heavy\-horse;
+騺 > heavy\-horse;
+駙 > extra\-horse;
+駁 > varicolored;
+饜 > be\-satiated;
+餁 > cooked\-food;
+飪 > cooked\-food;
+顴 > cheek\-bones;
+顦 > be\-worn\-out;
+顇 > be\-worn\-out;
+頴 > rice\-tassel;
+頋 > to\-care\-for;
+鞫 > interrogate;
+靂 > thunderclap;
+隉 > in\-disorder;
+阨 > in\-distress;
+闕 > watch\-tower;
+闌 > door\-screen;
+閠 > intercalary;
+閏 > intercalary;
+鐦 > californium;
+鏻 > phosphonium;
+鏜 > boring\-tool;
+鎐 > family\-name;
+鍐 > a\-headstall;
+鈔 > paper\-money;
+釆 > distinguish;
+醹 > strong\-wine;
+醲 > strong\-wine;
+醓 > salted\-meat;
+酏 > millet\-wine;
+遹 > comply\-with;
+遡 > go\-upstream;
+迊 > to\-go\-round;
+轎 > sedan\-chair;
+轇 > complicated;
+輦 > a\-hand\-cart;
+軹 > end\-of\-axle;
+蹹 > to\-tread\-on;
+蹵 > to\-tread\-on;
+趲 > go\-in\-hurry;
+贗 > counterfeit;
+賁 > forge\-ahead;
+貘 > the\-panther;
+豦 > a\-wild\-boar;
+豘 > a\-small\-pig;
+諫 > remonstrate;
+諌 > remonstrate;
+觴 > wine\-vessel;
+觱 > tartar\-horn;
+覈 > investigate;
+褵 > bridal\-veil;
+蠜 > grasshopper;
+蠋 > caterpillar;
+蟛 > a\-land\-crab;
+蝛 > the\-sow\-bug;
+蝍 > a\-centipede;
+蛓 > caterpillar;
+藚 > water\-plant;
+藄 > edible\-fern;
+蓪 > paper\-plant;
+蓂 > lucky\-place;
+蒭 > to\-cutgrass;
+萐 > lucky\-plant;
+菢 > to\-incubate;
+苧 > china\-grass;
+艗 > bow\-of\-junk;
+臏 > the\-kneecap;
+胾 > minced\-meat;
+胔 > rotten\-meat;
+肈 > to\-commence;
+聰 > intelligent;
+聦 > the\-hearing;
+聡 > intelligent;
+耑 > specialized;
+翆 > color\-green;
+羖 > a\-black\-ram;
+羃 > cover\-cloth;
+罱 > fishing\-net;
+罠 > animal\-trap;
+罒 > radical\-122;
+罋 > earthen\-jar;
+繾 > attached\-to;
+繽 > flourishing;
+繆 > wind\-around;
+綻 > ripped\-seam;
+糾 > investigate;
+糶 > sell\-grains;
+糢 > rice\-snacks;
+簹 > tall\-bamboo;
+簵 > fine\-bamboo;
+簰 > bamboo\-raft;
+篔 > tall\-bamboo;
+箘 > fine\-bamboo;
+筩 > bamboo\-pipe;
+筊 > bamboo\-rope;
+筇 > bamboo\-name;
+笯 > a\-bird\-cage;
+窸 > faint\-sound;
+穵 > deep\-hollow;
+穎 > rice\-tassel;
+磽 > barren\-land;
+磹 > stone\-wedge;
+碔 > \/2\-pr\-stone;
+砆 > \/2\-pr\-stone;
+砃 > white\-stone;
+瞵 > to\-stare\-at;
+睠 > to\-care\-for;
+睎 > to\-long\-for;
+眥 > eye\-sockets;
+眑 > sunken\-eyes;
+眊 > dim\-sighted;
+皃 > countenance;
+癆 > consumption;
+瘚 > to\-hiccough;
+痳 > pock\-marked;
+痲 > pock\-marked;
+痭 > menorrhagia;
+痙 > convulsions;
+痃 > indigestion;
+甕 > earthen\-jar;
+珽 > jade\-tablet;
+玗 > \/2\-pr\-stone;
+獏 > the\-panther;
+狢 > animal\-name;
+犖 > brindled\-ox;
+燖 > reheat\-food;
+熾 > burning\-hot;
+煟 > bright\-room;
+煏 > dry\-by\-fire;
+煆 > raging\-fire;
+烴 > hydrocarbon;
+灩 > overflowing;
+灧 > overflowing;
+瀾 > overflowing;
+瀠 > tiny\-stream;
+濤 > large\-waves;
+澰 > overflowing;
+潿 > still\-water;
+潾 > clear\-water;
+潠 > to\-blow\-out;
+滷 > thick\-gravy;
+湜 > transparent;
+渟 > not\-flowing;
+淒 > bitter\-cold;
+涠 > still\-water;
+浡 > burst\-forth;
+泝 > go\-upstream;
+沰 > to\-let\-drop;
+殰 > an\-abortion;
+欮 > to\-hiccough;
+櫸 > type\-of\-elm;
+櫪 > type\-of\-oak;
+橢 > oval\-shaped;
+槲 > type\-of\-oak;
+槢 > a\-hard\-wood;
+楕 > oval\-shaped;
+棯 > jujube\-tree;
+梘 > bamboo\-tube;
+梖 > a\-palm\-tree;
+梄 > a\-soft\-wood;
+栞 > publication;
+栃 > type\-of\-oak;
+枧 > bamboo\-tube;
+杤 > type\-of\-oak;
+暈 > halo\-in\-sky;
+昜 > to\-open\-out;
+昉 > bright\-dawn;
+旽 > morning\-sun;
+旉 > to\-state\-to;
+摡 > to\-irrigate;
+摎 > to\-strangle;
+挓 > to\-open\-out;
+戩 > exterminate;
+慉 > to\-bring\-up;
+愔 > comfortable;
+忲 > extravagant;
+徻 > a\-wide\-room;
+徑 > narrow\-path;
+弰 > ends\-of\-bow;
+幎 > cover\-cloth;
+帀 > to\-go\-round;
+崪 > rocky\-peaks;
+崒 > rocky\-peaks;
+屰 > disobedient;
+屝 > straw\-shoes;
+尷 > embarrassed;
+尶 > embarrassed;
+尜 > a\-child\-toy;
+尃 > to\-state\-to;
+嬔 > baby\-rabbit;
+媯 > family\-name;
+奓 > extravagant;
+奐 > be\-numerous;
+塿 > small\-mound;
+堊 > white\-earth;
+堈 > earthen\-jug;
+垞 > small\-mound;
+垝 > dilapidated;
+垔 > to\-restrain;
+坵 > earthenware;
+嗱 > exclamation;
+喎 > a\-wry\-mouth;
+唹 > to\-smile\-at;
+咅 > to\-spit\-out;
+吶 > raise\-voice;
+叻 > place\-names;
+厾 > lightly\-tap;
+厠 > mingle\-with;
+匯 > a\-concourse;
+勽 > to\-incubate;
+勠 > join\-forces;
+劼 > be\-discreet;
+劵 > certificate;
+剦 > to\-castrate;
+刋 > publication;
+凩 > wintry\-wind;
+冪 > cover\-cloth;
+兦 > destruction;
+儁 > outstanding;
+傏 > to\-ward\-off;
+偢 > to\-stare\-at;
+俛 > make\-effort;
+佹 > depend\-upon;
+佡 > make\-effort;
+䶪 > sharp\-teeth;
+䵴 > black\-color;
+䵳 > light\-black;
+䵰 > black\-color;
+䵩 > dark\-yellow;
+䵢 > light\-black;
+䵎 > dark\-yellow;
+䲻 > the\-swallow;
+䱽 > the\-pomfret;
+䱺 > a\-male\-crab;
+䱶 > a\-male\-crab;
+䱒 > salted\-fish;
+䯣 > the\-kneecap;
+䯘 > the\-kneecap;
+䮘 > young\-horse;
+䫳 > human\-skull;
+䫰 > sparse\-hair;
+䫭 > bald\-headed;
+䫜 > sunken\-eyes;
+䫄 > better\-than;
+䪴 > the\-occiput;
+䪄 > great\-blaze;
+䩻 > to\-be\-chief;
+䩜 > descendants;
+䨱 > spilt\-water;
+䧶 > to\-care\-for;
+䧨 > precipitous;
+䧞 > to\-increase;
+䧓 > a\-big\-mound;
+䧊 > a\-big\-mound;
+䦷 > to\-struggle;
+䦶 > to\-struggle;
+䦟 > to\-struggle;
+䦛 > to\-struggle;
+䦘 > a\-threshold;
+䥀 > to\-pull\-out;
+䤭 > to\-ornament;
+䤅 > southerwood;
+䢉 > agriculture;
+䠝 > to\-stand\-up;
+䠍 > at\-the\-feet;
+䟵 > to\-tread\-on;
+䟯 > to\-tread\-on;
+䟅 > to\-go\-ahead;
+䟁 > a\-foot\-race;
+䞽 > to\-lie\-flat;
+䞨 > half\-a\-pace;
+䞦 > to\-lie\-flat;
+䞊 > to\-increase;
+䞄 > to\-disperse;
+䝍 > a\-wild\-boar;
+䝀 > garden\-peas;
+䜰 > deep\-valley;
+䜮 > deep\-valley;
+䜗 > angry\-words;
+䜏 > to\-withdraw;
+䜆 > hasty\-words;
+䛘 > to\-think\-of;
+䚾 > to\-think\-of;
+䚳 > do\-not\-know;
+䚲 > to\-laugh\-at;
+䙾 > to\-wait\-for;
+䙱 > a\-long\-coat;
+䙰 > new\-feather;
+䙂 > short\-pants;
+䘴 > short\-pants;
+䗖 > the\-rainbow;
+䕸 > wheat\-straw;
+䕣 > water\-plant;
+䕌 > young\-grain;
+䔿 > lush\-growth;
+䓮 > lush\-growth;
+䓏 > flourishing;
+䒋 > air\-current;
+䐚 > good\-graces;
+䏶 > the\-stomach;
+䏔 > to\-eat\-meat;
+䏓 > the\-stomach;
+䍨 > to\-castrate;
+䌺 > flourishing;
+䌪 > to\-continue;
+䌦 > green\-color;
+䊭 > to\-overturn;
+䊫 > coarse\-rice;
+䊢 > thick\-fluid;
+䊓 > to\-paste\-up;
+䉝 > bamboo\-ware;
+䉊 > bamboo\-ware;
+䈸 > a\-big\-chest;
+䈀 > bamboo\-ware;
+䇕 > to\-wait\-for;
+䇓 > to\-wait\-for;
+䇃 > to\-wait\-for;
+䆳 > far\-distant;
+䆘 > acupuncture;
+䆖 > a\-big\-house;
+䅻 > measurement;
+䅄 > long\-grains;
+䄽 > common\-rice;
+䄄 > achievement;
+䃭 > a\-stone\-box;
+䂱 > to\-wear\-out;
+䂤 > white\-stone;
+䂡 > a\-whetstone;
+䂓 > regulations;
+䁻 > pretty\-eyes;
+䁷 > bright\-eyes;
+䁱 > hollow\-eyed;
+䁑 > pretty\-eyes;
+䀦 > to\-stare\-at;
+䀂 > a\-big\-basin;
+㿣 > white\-color;
+㿘 > to\-get\-sick;
+㾺 > eye\-disease;
+㾝 > to\-leak\-out;
+㾗 > eye\-disease;
+㾈 > hunchbacked;
+㾃 > hump\-backed;
+㽪 > paddy\-field;
+㽆 > earthenware;
+㽀 > earthenware;
+㼻 > earthenware;
+㼸 > earthenware;
+㼶 > earthenware;
+㼳 > earthenware;
+㼯 > earthenware;
+㼬 > earthenware;
+㼦 > earthenware;
+㼤 > earthenware;
+㼘 > of\-mountain;
+㼓 > melon\-seeds;
+㻓 > a\-fine\-jade;
+㹠 > a\-small\-big;
+㸠 > thick\-stick;
+㶑 > overflowing;
+㵮 > clear\-water;
+㵤 > to\-overflow;
+㵕 > to\-permeate;
+㴘 > to\-ooze\-out;
+㲰 > a\-hairy\-dog;
+㲒 > to\-incubate;
+㱩 > an\-abortion;
+㰲 > to\-blow\-off;
+㰮 > to\-laugh\-at;
+㰞 > to\-laugh\-at;
+㯈 > small\-trees;
+㮟 > a\-whetstone;
+㮝 > angle\-steel;
+㭴 > the\-oscines;
+㭎 > a\-tall\-tree;
+㬲 > to\-increase;
+㬩 > a\-tiny\-star;
+㫵 > white\-color;
+㫘 > disappeared;
+㪺 > to\-bale\-out;
+㩈 > to\-restrain;
+㩅 > to\-draw\-out;
+㨺 > to\-ornament;
+㨵 > to\-cut\-away;
+㨴 > to\-turnover;
+飯 > cooked\-rice;
+㨕 > to\-shoulder;
+鱗 > fish\-scales;
+㧔 > to\-disturbe;
+柳 > willow\-tree;
+暈 > halo\-in\-sky;
+㦟 > intelligent;
+輦 > a\-hand\-cart;
+㦒 > to\-deceived;
+泌 > to\-seep\-out;
+便 > convenience;
+㤡 > to\-surprise;
+㤛 > to\-remember;
+㤕 > melancholoy;
+㤁 > to\-disgrace;
+㣾 > do\-not\-care;
+㣵 > to\-run\-away;
+㣥 > to\-store\-up;
+㢳 > black\-color;
+㢓 > to\-separate;
+㡾 > a\-threshold;
+㠖 > precipitous;
+㞘 > a\-small\-pig;
+㝴 > a\-round\-off;
+㝔 > deep\-bottom;
+㜣 > a\-last\-name;
+㜎 > slave\-girls;
+㛑 > three\-women;
+㚾 > to\-have\-fun;
+㙧 > earthenware;
+㘶 > a\-hen\-roost;
+㘥 > to\-inveigle;
+㘆 > to\-laugh\-at;
+㗗 > to\-separate;
+㖽 > to\-call\-out;
+㖣 > to\-spit\-out;
+㖞 > a\-wry\-mouth;
+㖖 > to\-spit\-out;
+㖕 > to\-spit\-out;
+㖑 > to\-shout\-at;
+㔼 > to\-fit\-into;
+㔶 > a\-small\-cup;
+㔏 > to\-cut\-open;
+㓬 > to\-cut\-open;
+㓩 > horned\-hair;
+㒨 > an\-immortal;
+㒥 > an\-immortal;
+㑽 > to\-ward\-off;
+的 > possessive;
+込 > crowd\-into;
+辻 > crossroads;
+能 > to\-be\-able;
+都 > metropolis;
+文 > literature;
+轍 > wagon\-ruts;
+輩 > generation;
+眩 > to\-confuse;
+眠 > close\-eyes;
+輝 > brightness;
+弐 > number\-two;
+者 > that\-which;
+业 > profession;
+府 > prefecture;
+政 > government;
+世 > generation;
+产 > give\-birth;
+场 > open\-space;
+比 > to\-compare;
+疲 > feel\-tired;
+画 > a\-painting;
+産 > give\-birth;
+望 > to\-look\-at;
+賺 > make\-money;
+六 > number\-six;
+屡 > frequently;
+尤 > especially;
+專 > monopolize;
+基 > foundation;
+双 > set\-of\-two;
+孫 > grandchild;
+专 > monopolize;
+嬪 > court\-lady;
+离 > rare\-beast;
+媒 > go\-between;
+誌 > write\-down;
+誇 > exaggerate;
+响 > make\-sound;
+婿 > son\-in\-law;
+爭 > to\-dispute;
+器 > receptacle;
+營 > encampment;
+妙 > mysterious;
+胡 > recklessly;
+妓 > prostitute;
+襦 > short\-coat;
+奧 > mysterious;
+奥 > mysterious;
+壻 > son\-in\-law;
+壱 > number\-one;
+孙 > grandchild;
+营 > encampment;
+場 > open\-space;
+郭 > outer\-part;
+讨 > to\-discuss;
+滅 > extinguish;
+虜 > to\-capture;
+积 > accumulate;
+菜 > vegetables;
+嗣 > to\-connect;
+嗜 > be\-fond\-of;
+介 > forerunner;
+索 > large\-rope;
+丁 > male\-adult;
+遍 > everywhere;
+辈 > generation;
+蒔 > transplant;
+懂 > understand;
+释 > interprete;
+纵 > indulge\-in;
+灭 > extinguish;
+歴 > take\-place;
+仁 > humaneness;
+檀 > sandalwood;
+削 > scrape\-off;
+刑 > punishment;
+岂 > how\?\-what\?;
+隆 > prosperous;
+辉 > brightness;
+刃 > edged\-tool;
+析 > split\-wood;
+腸 > intestines;
+業 > profession;
+楓 > maple\-tree;
+餅 > rice\-cakes;
+枫 > maple\-tree;
+傍 > by\-side\-of;
+耽 > indulge\-in;
+頻 > frequently;
+栓 > wooden\-peg;
+響 > make\-sound;
+凯 > triumphant;
+恭 > respectful;
+祸 > misfortune;
+频 > frequently;
+禅 > meditation;
+柯 > axe\-handle;
+捐 > contribute;
+踪 > footprints;
+屁 > break\-wind;
+谊 > friendship;
+储 > save\-money;
+雁 > wild\-goose;
+摊 > spread\-out;
+吨 > metric\-ton;
+乍 > first\-time;
+陀 > steep\-bank;
+縱 > indulge\-in;
+縦 > indulge\-in;
+肠 > intestines;
+赚 > make\-money;
+綿 > cotton\-wad;
+綱 > heavy\-rope;
+绵 > cotton\-wad;
+抑 > press\-down;
+饼 > rice\-cakes;
+彬 > cultivated;
+撮 > little\-bit;
+粥 > rice\-gruel;
+蛮 > barbarians;
+箸 > chopsticks;
+筵 > bamboo\-mat;
+艇 > small\-boat;
+捌 > break\-open;
+笠 > bamboo\-hat;
+庞 > disorderly;
+鋪 > spread\-out;
+竝 > to\-combine;
+積 > accumulate;
+扉 > door\-panel;
+纲 > heavy\-rope;
+釋 > interprete;
+釈 > interprete;
+坝 > embankment;
+憧 > irresolute;
+甩 > throw\-away;
+祕 > mysterious;
+酌 > serve\-wine;
+磐 > large\-rock;
+辅 > cheek\-bone;
+捡 > to\-pick\-up;
+筷 > chopsticks;
+蹈 > stamp\-feet;
+晒 > dry\-in\-sun;
+歼 > annihilate;
+涩 > astringent;
+霎 > light\-rain;
+擅 > monopolize;
+蔬 > vegetables;
+绸 > silk\-cloth;
+眯 > be\-blinded;
+寅 > to\-respect;
+虏 > to\-capture;
+眶 > eye\-socket;
+碟 > small\-dish;
+蕴 > to\-collect;
+迭 > repeatedly;
+旭 > rising\-sun;
+悍 > courageous;
+枢 > door\-hinge;
+跋 > go\-by\-foot;
+圪 > \(phonetic\);
+搔 > to\-scratch;
+嚎 > cry\-loudly;
+辙 > wagon\-ruts;
+汛 > high\-water;
+脯 > dried\-meat;
+嗒 > to\-despair;
+墟 > high\-mound;
+馋 > gluttonous;
+娼 > prostitute;
+蹭 > to\-shuffle;
+澈 > thoroughly;
+缭 > wind\-round;
+喳 > whispering;
+弧 > wooden\-bow;
+跺 > stamp\-feet;
+惆 > distressed;
+撵 > drive\-away;
+殃 > misfortune;
+恪 > respectful;
+轶 > rush\-forth;
+腆 > prosperous;
+窿 > mine\-shaft;
+樵 > woodcutter;
+犀 > rhinoceros;
+绚 > variegated;
+藕 > lotus\-root;
+摞 > to\-pile\-up;
+滤 > strain\-out;
+缈 > indistinct;
+肪 > animal\-fat;
+甄 > to\-examine;
+铛 > frying\-pan;
+嫡 > legal\-wife;
+瘁 > feel\-tired;
+磷 > phosphorus;
+翡 > kingfisher;
+瞑 > close\-eyes;
+霭 > cloudy\-sky;
+舫 > fancy\-boat;
+纨 > white\-silk;
+榷 > footbridge;
+糜 > rice\-gruel;
+壹 > number\-one;
+蔗 > sugar\-cane;
+彗 > broomstick;
+喟 > heave\-sigh;
+喑 > to\-be\-dumb;
+鱿 > cuttlefish;
+倜 > raise\-high;
+侩 > go\-between;
+滂 > torrential;
+贰 > number\-two;
+忻 > delightful;
+燧 > flintstone;
+稔 > ripe\-grain;
+嫔 > court\-lady;
+颉 > fly\-upward;
+舸 > large\-boat;
+眙 > to\-gaze\-at;
+瘀 > a\-hematoma;
+夯 > heavy\-load;
+饕 > gluttonous;
+鲠 > fish\-bones;
+茏 > tall\-grass;
+茯 > china\-root;
+鲧 > giant\-fish;
+逦 > meandering;
+骜 > wild\-horse;
+欹 > fierce\-dog;
+缛 > decorative;
+苕 > rush\-plant;
+顸 > large\-face;
+尕 > \(phonetic\);
+缦 > plain\-silk;
+帙 > book\-cover;
+鳃 > fish\-gills;
+醴 > sweet\-wine;
+辊 > turn\-round;
+岘 > steep\-hill;
+倬 > noticeable;
+鲞 > dried\-fish;
+簟 > bamboo\-mat;
+稹 > accumulate;
+缁 > black\-silk;
+箧 > rattan\-box;
+墁 > to\-plaster;
+罴 > brown\-bear;
+爰 > lead\-on\-to;
+杲 > bright\-sun;
+癔 > hysterical;
+枋 > sandalwood;
+莜 > avena\-nuda;
+埙 > instrument;
+獾 > the\-badger;
+莳 > transplant;
+郫 > place\-name;
+蛏 > razor\-clam;
+橥 > wooden\-peg;
+帑 > a\-treasury;
+揠 > to\-pull\-up;
+趑 > can''t\-move;
+阍 > gatekeeper;
+掊 > to\-extract;
+镝 > dysprosium;
+砗 > giant\-clam;
+嫫 > ugly\-woman;
+蔌 > vegetables;
+跗 > the\-instep;
+浼 > to\-request;
+嗌 > the\-throat;
+唑 > \(phonetic\);
+汆 > to\-parboil;
+刭 > cut\-throat;
+髂 > the\-pelvis;
+艋 > small\-boat;
+钼 > molybdenum;
+憝 > to\-dislike;
+炅 > brilliance;
+隳 > to\-destroy;
+茛 > ranunculus;
+糇 > dried\-rice;
+钆 > gadolinium;
+澌 > to\-exhaust;
+庀 > to\-prepare;
+犴 > a\-wild\-dog;
+埏 > a\-boundary;
+凵 > receptacle;
+谮 > to\-slander;
+龢 > in\-harmony;
+龐 > disorderly;
+龎 > disorderly;
+鼧 > the\-marmot;
+鼄 > the\-spider;
+黹 > embroidery;
+黲 > grey\-black;
+黪 > grey\-black;
+黤 > blue\-black;
+鸺 > horned\-owl;
+鵒 > mynah\-bird;
+鵂 > horned\-owl;
+鴷 > woodpecker;
+鴈 > wild\-goose;
+鳲 > turtledove;
+鳫 > wild\-goose;
+鲰 > small\-fish;
+鱐 > dried\-fish;
+鱇 > anglerfish;
+鰓 > fish\-gills;
+鰂 > cuttlefish;
+鯫 > small\-fish;
+鯗 > dried\-fish;
+鯁 > fish\-bones;
+鯀 > giant\-fish;
+鮿 > dried\-fish;
+鮟 > anglerfish;
+鮝 > dried\-fish;
+鮁 > the\-bonito;
+魷 > cuttlefish;
+魛 > the\-mullet;
+鬨 > boisterous;
+鬜 > to\-go\-bald;
+髣 > similar\-to;
+髁 > thigh\-bone;
+驁 > wild\-horse;
+騗 > to\-swindle;
+騋 > tall\-horse;
+騉 > fine\-horse;
+駰 > grey\-horse;
+馹 > post\-horse;
+饞 > gluttonous;
+餠 > rice\-cakes;
+頡 > fly\-upward;
+頇 > large\-face;
+鞡 > leg\-warmer;
+靰 > leg\-warmer;
+靝 > the\-heaven;
+靉 > cloudy\-sky;
+靆 > cloudy\-sky;
+靄 > cloudy\-sky;
+雰 > atmosphere;
+雙 > set\-of\-two;
+隮 > ti\-rise\-up;
+陻 > small\-hill;
+陑 > place\-name;
+阯 > foundation;
+闟 > peacefully;
+閽 > gatekeeper;
+閧 > boisterous;
+镚 > small\-coin;
+锬 > long\-spear;
+钷 > promethium;
+鐺 > frying\-pan;
+鐶 > metal\-ring;
+鐚 > soft\-steel;
+鐒 > lawrencium;
+鐀 > a\-cupboard;
+鏑 > dysprosium;
+鎪 > to\-engrave;
+鎛 > large\-bell;
+鍀 > technetium;
+錟 > long\-spear;
+錞 > instrument;
+錏 > soft\-steel;
+鉬 > molybdenum;
+鈊 > cadolinium;
+釓 > gadolinium;
+醡 > wine\-press;
+醝 > white\-wine;
+酅 > raise\-feet;
+郹 > place\-name;
+邐 > meandering;
+逬 > to\-scatter;
+輥 > turn\-round;
+輔 > cheek\-bone;
+軼 > rush\-forth;
+躩 > take\-quick;
+躛 > exaggerate;
+躗 > exaggerate;
+蹤 > footprints;
+踧 > uneasiness;
+踜 > to\-stumble;
+踖 > trample\-on;
+跥 > stamp\-feet;
+跐 > to\-trample;
+跁 > trample\-on;
+趦 > can''t\-move;
+貳 > number\-two;
+貮 > number\-two;
+豈 > how\?\-what\?;
+豀 > to\-quarrel;
+譭 > to\-slander;
+譛 > to\-slander;
+譖 > to\-slander;
+譒 > promulgate;
+謪 > to\-consult;
+諴 > in\-harmony;
+諟 > to\-examine;
+誼 > friendship;
+誩 > to\-quarrel;
+討 > to\-discuss;
+觃 > place\-name;
+覸 > steal\-look;
+覵 > steal\-look;
+襡 > short\-coat;
+裪 > the\-sleeve;
+袲 > place\-name;
+袠 > book\-cover;
+袟 > book\-cover;
+蠻 > barbarians;
+蟶 > razor\-clam;
+蟫 > silverfish;
+蟣 > louse\-eggs;
+蟁 > a\-mosquito;
+蛜 > wood\-louse;
+蘢 > tall\-grass;
+薧 > dried\-food;
+蕡 > hemp\-seeds;
+蓷 > motherwort;
+蒽 > anthracene;
+蒦 > to\-measure;
+蒖 > plant\-name;
+葯 > orris\-root;
+莚 > bamboo\-mat;
+荵 > polemonium;
+艬 > large\-ship;
+艑 > small\-boat;
+舴 > small\-boat;
+膓 > intestines;
+脪 > erysipelas;
+脩 > dried\-meat;
+脗 > coinciding;
+肸 > spread\-out;
+肦 > large\-head;
+聟 > son\-in\-law;
+翀 > fly\-upward;
+羆 > brown\-bear;
+绋 > large\-rope;
+繚 > wind\-round;
+繐 > fine\-cloth;
+縵 > plain\-silk;
+縟 > decorative;
+縇 > decoration;
+緲 > indistinct;
+緜 > cotton\-wad;
+緇 > black\-silk;
+綢 > silk\-cloth;
+絺 > fine\-linen;
+絢 > variegated;
+絛 > silk\-braid;
+絖 > fine\-silks;
+絓 > obstructed;
+紼 > large\-rope;
+紈 > white\-silk;
+粻 > provisions;
+粦 > phosphorus;
+簥 > large\-pipe;
+篹 > to\-collect;
+篲 > broomstick;
+篋 > ratton\-box;
+箠 > horse\-whip;
+箚 > brief\-note;
+筯 > chopsticks;
+竰 > centiliter;
+竡 > hectoliter;
+竓 > milliliter;
+窰 > brick\-kiln;
+穭 > wild\-grain;
+稆 > wild\-grain;
+禪 > meditation;
+禚 > place\-name;
+禍 > misfortune;
+祅 > calamities;
+磑 > stone\-mill;
+硨 > giant\-clam;
+硙 > stone\-mill;
+硃 > a\-red\-mole;
+矁 > to\-look\-at;
+睟 > clear\-eyed;
+眆 > indistinct;
+疕 > head\-sores;
+畓 > rice\-field;
+畁 > to\-give\-to;
+產 > give\-birth;
+玔 > green\-jade;
+玅 > mysterious;
+猘 > fierce\-dog;
+犛 > a\-black\-ox;
+牏 > privy\-hole;
+牋 > memorandum;
+爫 > radical\-87;
+燐 > phosphorus;
+熅 > smooth\-out;
+烕 > to\-destroy;
+灺 > candle\-end;
+灒 > to\-spatter;
+濾 > strain\-out;
+濙 > to\-revolve;
+濇 > astringent;
+濆 > river\-bank;
+澁 > astringent;
+澀 > astringent;
+溾 > light\-rain;
+渋 > astringent;
+涘 > river\-bank;
+泆 > licentious;
+殲 > annihilate;
+殱 > annihilate;
+歷 > take\-place;
+欃 > sandalwood;
+櫾 > the\-pomelo;
+櫫 > wooden\-peg;
+檼 > ridge\-pole;
+橴 > place\-name;
+樞 > door\-hinge;
+榼 > wine\-glass;
+榦 > tree\-trunk;
+楪 > small\-dish;
+椵 > pompelmous;
+椳 > the\-pivots;
+椌 > instrument;
+栴 > sandalwood;
+栛 > the\-lichee;
+栘 > fruit\-tree;
+柷 > instrument;
+杢 > woodworker;
+朌 > distribute;
+曬 > dry\-in\-sun;
+暘 > rising\-sun;
+旕 > place\-name;
+旀 > place\-name;
+斢 > to\-plunder;
+斒 > variegated;
+攤 > spread\-out;
+攆 > drive\-away;
+擪 > to\-tuck\-in;
+擥 > drive\-away;
+撿 > to\-pick\-up;
+撱 > to\-shorten;
+掱 > pickpocket;
+掎 > drag\-aside;
+挭 > fish\-bones;
+抅 > to\-collect;
+扡 > drag\-along;
+憸 > to\-flatter;
+憍 > be\-haughty;
+憀 > to\-rely\-on;
+愮 > distressed;
+愓 > profligate;
+惏 > avaricious;
+恛 > disordered;
+怲 > be\-anxious;
+忋 > to\-rely\-on;
+徧 > everywhere;
+彿 > resembling;
+弍 > number\-two;
+弌 > number\-one;
+弇 > cover\-over;
+廱 > harmonious;
+廀 > to\-conceal;
+庴 > place\-name;
+巼 > place\-name;
+巂 > place\-name;
+嵙 > place\-name;
+峴 > steep\-hill;
+峓 > place\-name;
+屢 > frequently;
+屄 > the\-vagina;
+専 > monopolize;
+宼 > tyrannical;
+孼 > misfortune;
+媟 > lust\-after;
+夅 > to\-descend;
+壩 > embankment;
+壎 > instrument;
+塲 > open\-space;
+塤 > instrument;
+堮 > a\-boundary;
+堃 > compliance;
+坒 > to\-compare;
+圦 > water\-gate;
+囌 > loquacious;
+嚵 > gluttonous;
+嚲 > read\-aloud;
+噸 > metric\-ton;
+噐 > receptacle;
+嘂 > cry\-loudly;
+嗭 > place\-name;
+喸 > place\-name;
+営 > encampment;
+唽 > to\-twitter;
+唟 > place\-name;
+呴 > breathe\-on;
+叆 > cloudy\-sky;
+卝 > hair\-style;
+劏 > to\-butcher;
+劄 > brief\-note;
+剳 > brief\-note;
+剄 > cut\-throat;
+刼 > to\-plunder;
+刄 > edged\-tool;
+凴 > to\-rely\-on;
+凱 > triumphant;
+凂 > to\-request;
+冘 > to\-move\-on;
+兟 > to\-advance;
+儈 > go\-between;
+僩 > courageous;
+偭 > transgress;
+偝 > not\-facing;
+倀 > bewildered;
+俻 > to\-prepare;
+伷 > descendent;
+仛 > young\-girl;
+亯 > to\-receive;
+丨 > number\-one;
+䶫 > fine\-teeth;
+䶉 > guinea\-pig;
+䵪 > pure\-black;
+䵝 > dark\-black;
+䵇 > to\-dislike;
+䳕 > the\-pigeon;
+䳌 > the\-cuckoo;
+䳀 > the\-cuckoo;
+䲫 > the\-pigeon;
+䲩 > the\-cuckoo;
+䲥 > the\-pigeon;
+䱝 > black\-carp;
+䱆 > small\-fish;
+䱅 > the\-mullet;
+䱄 > a\-flatfish;
+䰺 > a\-flatfish;
+䰬 > wild\-ghost;
+䰄 > short\-hair;
+䯔 > to\-incline;
+䯑 > the\-pelvis;
+䯌 > the\-sacrum;
+䯊 > the\-pelvis;
+䯈 > the\-pelvis;
+䮯 > fine\-horse;
+䮍 > curling\-up;
+䮌 > fine\-horse;
+䭸 > a\-stallion;
+䭣 > rice\-cakes;
+䭄 > gluttonous;
+䬷 > well\-feed\.;
+䬢 > gluttonous;
+䫥 > a\-wry\-neck;
+䫣 > a\-wry\-neck;
+䫞 > large\-head;
+䫓 > large\-head;
+䪺 > teethridge;
+䪠 > pulverized;
+䩱 > a\-scabbard;
+䩰 > a\-scabbard;
+䩢 > a\-scabbard;
+䩙 > a\-scabbard;
+䩃 > appearance;
+䩁 > thin\-hairs;
+䨽 > to\-resolve;
+䨩 > the\-spirit;
+䨠 > cloudy\-sky;
+䧿 > the\-magpie;
+䧲 > the\-magpie;
+䧱 > the\-pigeon;
+䧣 > to\-stop\-up;
+䦯 > very\-dense;
+䦧 > to\-quarrel;
+䦍 > to\-include;
+䥎 > instrument;
+䤾 > to\-contain;
+䤽 > farm\-tools;
+䤼 > metal\-wire;
+䤹 > to\-engrave;
+䤇 > white\-wine;
+䢥 > in\-harmony;
+䡧 > a\-carriage;
+䡤 > a\-carriage;
+䡚 > implements;
+䡎 > a\-windlass;
+䠸 > obsequious;
+䠶 > to\-project;
+䠪 > footprints;
+䠩 > to\-urinate;
+䠦 > to\-stumble;
+䠟 > to\-trip\-up;
+䠘 > one\-legged;
+䟼 > footprints;
+䟪 > repeatedly;
+䟡 > to\-trample;
+䟙 > to\-stagger;
+䟄 > in\-a\-hurry;
+䞅 > to\-give\-to;
+䝿 > honourabel;
+䝷 > securities;
+䝴 > to\-present;
+䝱 > to\-trouble;
+䝔 > the\-badger;
+䜛 > to\-slander;
+䜙 > not\-clever;
+䜒 > expression;
+䜑 > to\-slander;
+䜋 > to\-suspend;
+䛽 > loquacious;
+䛼 > to\-slander;
+䛲 > to\-deceive;
+䛮 > to\-destroy;
+䛫 > to\-deceive;
+䛩 > to\-slander;
+䛦 > litigation;
+䛖 > loquacious;
+䛕 > to\-flatter;
+䛍 > loquacious;
+䛅 > loquacious;
+䛄 > to\-console;
+䚹 > to\-prepare;
+䚰 > to\-prepare;
+䚓 > to\-observe;
+䚍 > to\-look\-at;
+䚇 > to\-observe;
+䙺 > to\-observe;
+䙚 > curling\-up;
+䘡 > the\-sleeve;
+䘕 > prostitute;
+䖳 > jelly\-fish;
+䕡 > compositae;
+䔘 > fish\-paste;
+䓵 > to\-blossom;
+䓤 > vegetation;
+䓆 > to\-cut\-the;
+䒢 > sweet\-flag;
+䑿 > small\-boat;
+䑰 > small\-boat;
+䑭 > war\-vessel;
+䑡 > small\-boat;
+䑍 > to\-swallow;
+䐢 > to\-wrinkle;
+䏭 > the\-cheeks;
+䏌 > to\-vibrate;
+䏋 > respectful;
+䎟 > to\-fawn\-on;
+䍵 > young\-goat;
+䍞 > a\-drag\-net;
+䍗 > to\-hang\-up;
+䍔 > a\-full\-net;
+䌀 > to\-arrange;
+䋶 > to\-stumble;
+䋱 > a\-wild\-yak;
+䊷 > black\-silk;
+䊩 > rice\-gravy;
+䉍 > to\-observe;
+䇎 > to\-startle;
+䇇 > the\-people;
+䆒 > to\-examine;
+䆋 > the\-autumn;
+䅔 > dead\-crops;
+䄟 > to\-worship;
+䄓 > to\-worship;
+䄑 > to\-worship;
+䄐 > to\-worship;
+䄆 > to\-worship;
+䄅 > to\-worship;
+䄃 > misfortune;
+䄁 > to\-worship;
+䂄 > to\-startle;
+䁺 > to\-look\-at;
+䁯 > to\-look\-at;
+䁞 > a\-province;
+䁘 > to\-look\-at;
+䁕 > to\-look\-at;
+䁓 > to\-look\-at;
+䁉 > to\-examine;
+䁈 > to\-examine;
+䁁 > strabismus;
+䀶 > strabismus;
+䀱 > to\-examine;
+䀯 > to\-look\-at;
+䀙 > to\-look\-at;
+䀆 > to\-exhaust;
+㾙 > erysipelas;
+㽨 > fragmented;
+㽣 > a\-frontier;
+㽘 > borderland;
+㼹 > eartenware;
+㺳 > black\-mica;
+㺓 > footprints;
+㺏 > the\-badger;
+㺅 > the\-monkey;
+㹈 > a\-black\-ox;
+㸨 > a\-big\-bull;
+㸌 > to\-twinkle;
+㷷 > thick\-soup;
+㷡 > to\-startle;
+㶭 > almost\-dry;
+㶜 > deep\-water;
+㵟 > light\-rain;
+㵀 > water\-flow;
+㴜 > everywhere;
+㳁 > water\-flow;
+㲯 > long\-hairy;
+㲞 > short\-hair;
+㲕 > variegated;
+㲌 > dog''s\-hair;
+㲉 > egg\-shells;
+㱸 > to\-exhaust;
+㱰 > to\-destroy;
+㱦 > to\-discard;
+㱤 > to\-exhaust;
+㱜 > pestilence;
+㱛 > to\-destroy;
+㱚 > to\-destroy;
+㰸 > to\-collect;
+㰑 > fruit\-tree;
+㯇 > a\-stockade;
+㭘 > a\-scabbard;
+㭉 > farm\-tools;
+㬱 > to\-replace;
+㬪 > to\-fold\-up;
+㬜 > to\-advance;
+㫤 > a\-long\-day;
+㪴 > to\-measure;
+㪜 > to\-measure;
+㪚 > to\-scatter;
+㪔 > to\-scatter;
+㪌 > to\-lead\-on;
+㪉 > to\-combine;
+㩹 > to\-pile\-on;
+㩸 > to\-pile\-on;
+㩪 > to\-collect;
+㩞 > to\-back\-up;
+㩝 > to\-compare;
+㩚 > to\-collect;
+㩖 > to\-back\-up;
+㩍 > to\-back\-up;
+㩀 > to\-receive;
+㨿 > to\-receive;
+㨳 > a\-cupboard;
+㨲 > to\-back\-up;
+㨯 > to\-enlarge;
+㨮 > to\-lift\-up;
+都 > metropolis;
+㨊 > to\-discard;
+笠 > bamboo\-hat;
+燐 > phosphorus;
+隆 > prosperous;
+六 > number\-six;
+醴 > sweet\-wine;
+㦶 > repeatedly;
+㦩 > melancholy;
+㦚 > melancholy;
+歷 > take\-place;
+濾 > strain\-out;
+㦂 > constantly;
+㥶 > to\-fill\-up;
+索 > large\-rope;
+㥣 > to\-benefit;
+㥚 > melancholy;
+屢 > frequently;
+㤷 > to\-debauch;
+㤩 > to\-respect;
+㤐 > disharmony;
+豈 > how\?\-what\?;
+㣽 > to\-forgive;
+㣅 > bow\-string;
+㣀 > to\-rebound;
+㢭 > a\-bow\-case;
+㢚 > a\-corridor;
+㢏 > a\-cesspool;
+㡥 > to\-curl\-up;
+㞠 > male\-organ;
+㞎 > body\-waste;
+㞆 > one\-legged;
+㝯 > to\-sojourn;
+㜅 > to\-fawn\-on;
+㛪 > to\-slander;
+㚠 > full\-grown;
+㚏 > to\-scatter;
+㙺 > cross\-road;
+㙴 > to\-conceal;
+㙲 > to\-stop\-up;
+㙉 > prosperous;
+㘿 > to\-fill\-up;
+㘻 > to\-stop\-up;
+㘧 > precedence;
+㘝 > to\-take\-in;
+㗬 > thick\-lips;
+㗫 > to\-whisper;
+㗢 > loquacious;
+㗋 > the\-throat;
+㗇 > to\-swallow;
+㗄 > to\-deceive;
+㖶 > to\-swallow;
+㖘 > to\-startle;
+㖆 > to\-condemn;
+㕫 > to\-imitate;
+㕍 > to\-heap\-up;
+㕆 > fine\-stone;
+㔷 > to\-secrete;
+㔘 > to\-degrade;
+㔓 > to\-stammer;
+㔌 > to\-cut\-off;
+㓺 > castration;
+㓮 > to\-engrave;
+㓞 > to\-engrave;
+㓂 > tyrannical;
+㒷 > to\-prosper;
+㒝 > to\-deceive;
+㒜 > respectful;
+㒊 > loquacious;
+㑜 > to\-engrave;
+㑂 > to\-imitate;
+㐤 > to\-implore;
+了 > to\-finish;
+子 > offspring;
+徹 > penetrate;
+要 > necessary;
+辱 > humiliate;
+着 > make\-move;
+成 > completed;
+督 > supervise;
+輯 > gather\-up;
+弥 > extensive;
+監 > supervise;
+美 > beautiful;
+廂 > side\-room;
+问 > ask\-about;
+庭 > courtyard;
+療 > be\-healed;
+痺 > paralysis;
+差 > to\-differ;
+难 > difficult;
+超 > jump\-over;
+異 > different;
+亲 > relatives;
+畫 > delineate;
+畜 > livestock;
+畑 > dry\-field;
+甘 > sweetness;
+认 > recognize;
+貴 > expensive;
+貝 > sea\-shell;
+院 > courtyard;
+达 > arrive\-at;
+众 > multitude;
+识 > recognize;
+倒 > fall\-over;
+玩 > play\-with;
+像 > a\-picture;
+宅 > residence;
+据 > to\-occupy;
+譯 > translate;
+譫 > talkative;
+識 > recognize;
+造 > construct;
+媼 > old\-woman;
+犠 > sacrifice;
+認 > recognize;
+牒 > documents;
+牌 > signboard;
+婆 > old\-woman;
+訳 > translate;
+爐 > fireplace;
+久 > long\-time;
+妾 > concubine;
+初 > beginning;
+親 > relatives;
+除 > eliminate;
+况 > condition;
+乱 > confusion;
+创 > establish;
+福 > happiness;
+辑 > gather\-up;
+假 > falsehood;
+穿 > penetrate;
+衆 > multitude;
+顾 > look\-back;
+蠶 > silkworms;
+丽 > beautiful;
+渐 > gradually;
+异 > different;
+瞧 > glance\-at;
+埒 > enclosure;
+埃 > fine\-dust;
+螢 > glow\-worm;
+退 > step\-back;
+蜻 > dragonfly;
+漸 > gradually;
+翻 > flip\-over;
+圏 > to\-circle;
+普 > universal;
+蛹 > chrysalis;
+临 > draw\-near;
+蛉 > dragonfly;
+协 > be\-united;
+麗 > beautiful;
+蚕 > silkworms;
+湯 > hot\-water;
+例 > precedent;
+贵 > expensive;
+洲 > continent;
+松 > pine\-tree;
+伙 > companion;
+毫 > fine\-hair;
+蕎 > buckwheat;
+输 > transport;
+況 > condition;
+监 > supervise;
+折 > break\-off;
+汰 > excessive;
+君 > sovereign;
+危 > dangerous;
+概 > generally;
+透 > penetrate;
+圈 > to\-circle;
+殊 > different;
+殆 > dangerous;
+厄 > adversity;
+汇 > concourse;
+厉 > whetstone;
+附 > adhere\-to;
+肩 > shoulders;
+魘 > nightmare;
+協 > be\-united;
+荒 > wasteland;
+鬱 > luxuriant;
+译 > translate;
+匠 > craftsman;
+欝 > luxuriant;
+伴 > companion;
+匂 > fragrance;
+勸 > recommend;
+勧 > recommend;
+飘 > whirlwind;
+艶 > beautiful;
+創 > establish;
+炮 > large\-gun;
+贝 > sea\-shell;
+郎 > gentleman;
+陪 > accompany;
+臨 > draw\-near;
+凝 > coagulate;
+冗 > excessive;
+劝 > recommend;
+剩 > leftovers;
+饒 > bountiful;
+疗 > be\-healed;
+汤 > hot\-water;
+彻 > penetrate;
+飜 > flip\-over;
+僚 > companion;
+肘 > the\-elbow;
+肖 > look\-like;
+昨 > yesterday;
+暂 > temporary;
+递 > hand\-over;
+顧 > look\-back;
+祥 > good\-luck;
+倹 > temperate;
+艰 > difficult;
+仗 > rely\-upon;
+柿 > persimmon;
+键 > door\-bolt;
+枯 > dried\-out;
+莱 > goosefoot;
+赔 > indemnify;
+逢 > come\-upon;
+睁 > open\-eyes;
+嘿 > be\-silent;
+仮 > falsehood;
+難 > difficult;
+贪 > be\-greedy;
+暫 > temporary;
+逝 > pass\-away;
+亂 > confusion;
+艾 > artemisia;
+芬 > fragrance;
+袍 > long\-gown;
+冤 > grievance;
+饶 > bountiful;
+炉 > fireplace;
+迪 > enlighten;
+嘉 > excellent;
+閾 > threshold;
+綾 > thin\-silk;
+艳 > beautiful;
+膀 > upper\-arm;
+牺 > sacrifice;
+顽 > obstinate;
+歉 > deficient;
+帅 > commander;
+憾 > to\-regret;
+劈 > cut\-apart;
+拂 > shake\-off;
+鍵 > door\-bolt;
+筈 > arrow\-end;
+拠 > to\-occupy;
+厢 > side\-room;
+熬 > cook\-down;
+払 > shake\-off;
+寓 > residence;
+稼 > sow\-grain;
+恍 > seemingly;
+绣 > embroider;
+懃 > courteous;
+衬 > underwear;
+慊 > to\-resent;
+膊 > shoulders;
+潭 > deep\-pool;
+旷 > extensive;
+硝 > saltpeter;
+達 > arrive\-at;
+逹 > arrive\-at;
+骤 > procedure;
+苹 > artemisia;
+忿 > get\-angry;
+坠 > fall\-down;
+蝶 > butterfly;
+焉 > thereupon;
+禀 > report\-to;
+挫 > push\-down;
+鳄 > alligator;
+谐 > harmonize;
+屎 > excrement;
+叨 > talkative;
+葱 > scallions;
+枣 > date\-tree;
+侣 > companion;
+谴 > reprimand;
+汹 > turbulent;
+瘫 > paralysis;
+蔚 > luxuriant;
+泻 > drain\-off;
+俭 > temperate;
+瀑 > waterfall;
+蝴 > butterfly;
+樊 > a\-railing;
+敛 > draw\-back;
+禧 > happiness;
+茵 > a\-cushion;
+棕 > hemp\-palm;
+娟 > beautiful;
+倩 > beautiful;
+辗 > turn\-over;
+恤 > show\-pity;
+侈 > luxurious;
+夥 > companion;
+沁 > soak\-into;
+槛 > threshold;
+匣 > small\-box;
+捎 > to\-select;
+痪 > paralysis;
+痞 > dyspepsia;
+睐 > squint\-at;
+垦 > cultivate;
+浒 > riverbank;
+葵 > sunflower;
+睫 > eyelashes;
+痊 > be\-healed;
+哺 > chew\-food;
+竣 > terminate;
+囔 > muttering;
+藐 > disregard;
+忒 > excessive;
+埠 > port\-city;
+荤 > meat\-diet;
+祺 > good\-luck;
+蜒 > millipede;
+菇 > mushrooms;
+豚 > small\-pig;
+沓 > connected;
+弩 > cross\-bow;
+殇 > die\-young;
+萤 > glow\-worm;
+栈 > warehouse;
+醺 > get\-drunk;
+蜈 > centipede;
+佼 > beautiful;
+蚣 > centipede;
+愫 > guileless;
+谙 > versed\-in;
+熹 > dim\-light;
+怂 > instigate;
+馥 > fragrance;
+恿 > instigate;
+遛 > take\-walk;
+痹 > paralysis;
+麾 > a\-pennant;
+媲 > marry\-off;
+蜓 > dragonfly;
+镁 > magnesium;
+椰 > palm\-tree;
+砺 > whetstone;
+痢 > dysentery;
+嗑 > eat\-seeds;
+蚯 > earthworm;
+蜚 > cockroach;
+蚓 > earthworm;
+魇 > nightmare;
+阆 > high\-door;
+妪 > old\-woman;
+擀 > roll\-flat;
+妍 > beautiful;
+姣 > beautiful;
+袤 > longitude;
+麝 > musk\-deer;
+荟 > luxuriant;
+佻 > frivolous;
+钾 > potassium;
+飙 > whirlwind;
+孑 > remaining;
+檄 > call\-arms;
+隍 > dry\-ditch;
+诿 > pass\-buck;
+绫 > thin\-silk;
+逄 > a\-surname;
+梏 > handcuffs;
+祉 > happiness;
+蟑 > cockroach;
+钺 > broad\-axe;
+荞 > buckwheat;
+柑 > tangerine;
+婵 > beautiful;
+娉 > beautiful;
+讧 > confusion;
+乜 > to\-squint;
+俦 > companion;
+燮 > harmonize;
+飚 > whirlwind;
+姹 > beautiful;
+愎 > obstinate;
+娲 > a\-goddess;
+忝 > disgraced;
+葳 > luxuriant;
+诮 > criticize;
+鳏 > huge\-fish;
+蜇 > jellyfish;
+劭 > encourage;
+兖 > establish;
+呶 > talkative;
+癣 > ringworms;
+绦 > silk\-cord;
+钸 > plutonium;
+馗 > cheekbone;
+锰 > manganese;
+侪 > a\-company;
+凫 > wild\-duck;
+痱 > heat\-rash;
+痈 > carbuncle;
+悌 > brotherly;
+冼 > \(surname\);
+鹧 > partridge;
+悒 > sorrowful;
+怃 > regretful;
+墒 > wet\-tilth;
+訾 > bad\-mouth;
+圮 > destroyed;
+鲈 > sea\-perch;
+钚 > plutonium;
+痿 > paralysis;
+攉 > to\-beckon;
+鲇 > sheatfish;
+膈 > diaphragm;
+犍 > a\-bullock;
+妤 > beautiful;
+锗 > germanium;
+鎏 > pure\-gold;
+镅 > americium;
+辂 > a\-chariot;
+媪 > old\-woman;
+孓 > beautiful;
+跸 > clear\-way;
+疔 > carbuncle;
+煳 > be\-burned;
+牾 > to\-oppose;
+昀 > sun\-light;
+乩 > to\-divine;
+羟 > hydroxide;
+荽 > coriander;
+谵 > talkative;
+绠 > well\-rope;
+哓 > garrulous;
+脬 > a\-bladder;
+戡 > subjugate;
+辇 > hand\-cart;
+阈 > threshold;
+鹚 > cormorant;
+镞 > arrowhead;
+菰 > wild\-rice;
+蠖 > inch\-worm;
+铫 > large\-hoe;
+氘 > deuterium;
+黾 > to\-strive;
+镧 > lanthanum;
+垡 > plow\-soil;
+炔 > acetylene;
+鸬 > cormorant;
+镱 > ytterbium;
+钕 > neodymium;
+忭 > delighted;
+莪 > artemisia;
+苴 > sackcloth;
+谳 > to\-decide;
+钯 > palladium;
+碲 > tellurium;
+璩 > jade\-ring;
+阃 > threshold;
+饫 > surfeited;
+撙 > economize;
+蓼 > smartweed;
+饔 > breakfast;
+锶 > strontium;
+硎 > whetstone;
+昃 > afternoon;
+唪 > to\-recite;
+蕈 > mushrooms;
+儇 > ingenious;
+鲴 > fish\-guts;
+鲅 > fish\-name;
+蠊 > cockroach;
+蚰 > millipede;
+铍 > beryllium;
+熳 > to\-spread;
+胍 > guanidine;
+迕 > obstinate;
+鲐 > globefish;
+酐 > anhydride;
+衄 > epistaxis;
+矧 > much\-more;
+悫 > sincerity;
+膦 > phosphine;
+缣 > fine\-silk;
+宄 > a\-traitor;
+阌 > wen\-xiang;
+哿 > excellent;
+阽 > dangerous;
+匦 > small\-box;
+酞 > phthalein;
+齳 > toothless;
+齭 > toothache;
+黽 > to\-strive;
+鸕 > cormorant;
+鷾 > a\-swallow;
+鷭 > water\-hen;
+鷧 > cormorant;
+鷥 > the\-egret;
+鷓 > partridge;
+鷏 > bird\-name;
+鷆 > bird\-name;
+鶿 > cormorant;
+鶡 > crossbill;
+鵷 > co\-worker;
+鳬 > wild\-duck;
+鳧 > wild\-duck;
+鳢 > snakehead;
+鲎 > king\-crab;
+鱸 > sea\-perch;
+鱷 > crocodile;
+鱧 > snakehead;
+鱟 > king\-crab;
+鱛 > fish\-name;
+鰥 > huge\-fish;
+鰐 > alligator;
+鯠 > to\-confer;
+鯝 > fish\-guts;
+鮦 > snakefish;
+鮎 > sheatfish;
+鮀 > snakefish;
+魲 > fish\-name;
+魞 > fish\-trap;
+鬰 > luxuriant;
+鬖 > wild\-hair;
+髧 > long\-hair;
+髗 > the\-skull;
+骭 > shin\-bone;
+驟 > procedure;
+騧 > tan\-horse;
+騐 > to\-verity;
+駸 > galloping;
+馝 > fragrance;
+馛 > fragrance;
+馂 > leftovers;
+饠 > rice\-cake;
+餺 > rice\-cake;
+餱 > dry\-goods;
+餕 > leftovers;
+餈 > rice\-cake;
+飫 > surfeited;
+飥 > rice\-cake;
+飈 > whirlwind;
+飇 > whirlwind;
+飆 > whirlwind;
+飄 > whirlwind;
+飃 > whirlwind;
+颷 > whirlwind;
+颴 > whirlwind;
+頯 > cheekbone;
+頑 > obstinate;
+頄 > cheekbone;
+靪 > to\-cobble;
+靧 > wash\-face;
+靀 > drizzling;
+霂 > fine\-rain;
+隃 > to\-exceed;
+閿 > wen\-xiang;
+閺 > look\-down;
+閬 > high\-door;
+閫 > threshold;
+锫 > berkelium;
+锆 > zirconium;
+钶 > columbium;
+钌 > ruthenium;
+钁 > a\-mattock;
+鑭 > lanthanum;
+鑪 > fireplace;
+鐿 > ytterbium;
+鐻 > drumstick;
+鏛 > to\-polish;
+鏐 > pure\-gold;
+鏃 > arrowhead;
+鎿 > neptunium;
+鎞 > plowshare;
+鎇 > americium;
+鎂 > magnesium;
+鍺 > germanium;
+鍶 > strontium;
+錳 > manganese;
+錇 > berkelium;
+鋯 > zirconium;
+鋍 > beryllium;
+銤 > americium;
+銚 > large\-hoe;
+鉞 > broad\-axe;
+鈽 > plutonium;
+鈹 > beryllium;
+鈩 > fireplace;
+鈌 > to\-pierce;
+鈈 > plutonium;
+鈀 > palladium;
+釹 > neodymium;
+釕 > ruthenium;
+郞 > gentleman;
+遞 > hand\-over;
+逓 > hand\-over;
+輾 > turn\-over;
+輸 > transport;
+輘 > a\-car\-rut;
+輅 > a\-chariot;
+軷 > sacrifice;
+軄 > to\-govern;
+躔 > follow\-in;
+蹕 > clear\-way;
+蹔 > temporary;
+跩 > to\-waddle;
+趝 > to\-pursue;
+赿 > late\-slow;
+賸 > leftovers;
+賠 > indemnify;
+豵 > young\-pig;
+豓 > beautiful;
+讞 > to\-decide;
+譴 > reprimand;
+譊 > wrangling;
+譅 > wriggling;
+諳 > versed\-in;
+諧 > harmonize;
+諝 > knowledge;
+諉 > pass\-buck;
+誚 > criticize;
+誖 > obstinate;
+訠 > much\-more;
+訌 > confusion;
+襯 > underwear;
+裲 > waistcoat;
+蟺 > earthworm;
+螌 > a\-striped;
+蜨 > butterfly;
+蛵 > dragonfly;
+蛍 > glow\-worm;
+蚿 > millipede;
+蘞 > wild\-vine;
+薈 > luxuriant;
+蕗 > leucacene;
+蔹 > wild\-vine;
+蔥 > scallions;
+蓆 > straw\-mat;
+蒢 > hedysarum;
+葷 > meat\-diet;
+葓 > vegetable;
+萊 > goosefoot;
+菻 > artemisia;
+荍 > buckwheat;
+苠 > multitude;
+苙 > a\-pig\-sty;
+芼 > to\-choose;
+艷 > beautiful;
+艱 > difficult;
+艣 > stern\-oar;
+艎 > fast\-boat;
+舝 > linch\-pin;
+舘 > a\-mansion;
+臯 > to\-praise;
+胦 > the\-navel;
+耥 > farm\-tool;
+羶 > rank\-odor;
+羥 > hydroxide;
+罁 > a\-cistern;
+繣 > obstinate;
+繡 > embroider;
+繍 > embroider;
+縑 > fine\-silk;
+縃 > fine\-silk;
+緥 > swaddling;
+綉 > embroider;
+綆 > well\-rope;
+糰 > rice\-ball;
+糝 > scattered;
+粿 > rice\-cake;
+籨 > trousseau;
+簃 > side\-room;
+竕 > deciliter;
+竏 > kiloliter;
+竍 > decaliter;
+竆 > exhausted;
+窴 > glance\-at;
+窋 > in\-a\-hole;
+穪 > to\-praise;
+稬 > glutinous;
+稟 > report\-to;
+禴 > sacrifice;
+禤 > \(surname\);
+禜 > sacrifice;
+禖 > sacrifice;
+禕 > excellent;
+禔 > happiness;
+祦 > happiness;
+祎 > excellent;
+礿 > sacrifice;
+礽 > blessings;
+礪 > whetstone;
+礞 > \(mineral\);
+碬 > whetstone;
+碆 > arrow\-tip;
+硻 > obstinate;
+砮 > arrow\-tip;
+砬 > big\-stone;
+睞 > squint\-at;
+眕 > restraint;
+盵 > \(surname\);
+盚 > \(surname\);
+癱 > paralysis;
+癰 > carbuncle;
+癬 > ringworms;
+瘭 > a\-whitlow;
+瘜 > a\-polypus;
+瘓 > paralysis;
+痡 > a\-disease;
+痐 > whirlwind;
+疶 > dysentery;
+畵 > delineate;
+畱 > to\-detain;
+畋 > till\-land;
+甴 > cockroach;
+甪 > \(surname\);
+甦 > be\-reborn;
+甅 > centigram;
+瓸 > hectogram;
+瓱 > milligram;
+璿 > fine\-jade;
+瑴 > twin\-gems;
+瑣 > fragments;
+獀 > to\-gather;
+狳 > armadillo;
+犰 > armadillo;
+犧 > sacrifice;
+燶 > to\-scorch;
+燬 > burn\-down;
+燊 > luxuriant;
+熿 > brilliant;
+熺 > dim\-light;
+炘 > brilliant;
+瀉 > drain\-off;
+濩 > pour\-down;
+濛 > drizzling;
+滸 > riverbank;
+湼 > black\-mud;
+湏 > wash\-face;
+湅 > boil\-silk;
+淩 > pass\-over;
+涷 > rainstorm;
+洑 > whirlpool;
+沺 > turbulent;
+殤 > die\-young;
+殈 > infertile;
+殀 > die\-young;
+歛 > draw\-back;
+欕 > tree\-name;
+檻 > threshold;
+橚 > tall\-tree;
+樳 > tall\-tree;
+樋 > tree\-name;
+槪 > generally;
+槩 > generally;
+榪 > headboard;
+椶 > palm\-tree;
+棧 > warehouse;
+棥 > a\-railing;
+棗 > date\-tree;
+棖 > door\-stop;
+梜 > chopstick;
+梍 > tree\-name;
+栱 > large\-peg;
+栭 > king\-post;
+栟 > hemp\-palm;
+栒 > cross\-bar;
+柹 > persimmon;
+柈 > container;
+枾 > persimmon;
+枹 > drumstick;
+枩 > pine\-tree;
+枨 > door\-stop;
+枙 > tree\-knot;
+杩 > headboard;
+朞 > full\-year;
+朓 > sacrifice;
+曱 > cockroach;
+曠 > extensive;
+暍 > sunstroke;
+昿 > extensive;
+昪 > delighted;
+旪 > united\-in;
+旛 > a\-pennant;
+旙 > a\-pennant;
+斂 > draw\-back;
+敋 > to\-strike;
+攋 > to\-clutch;
+攃 > preceding;
+擿 > to\-select;
+據 > to\-occupy;
+擐 > to\-put\-on;
+擉 > to\-pierce;
+摽 > throw\-out;
+摮 > to\-rattle;
+摛 > to\-spread;
+搙 > to\-handle;
+搕 > to\-strike;
+揦 > to\-clutch;
+揥 > scratcher;
+掙 > to\-strive;
+扻 > to\-strike;
+扤 > to\-thrust;
+戜 > to\-scrape;
+憯 > sorrowful;
+憮 > regretful;
+慽 > sorrowful;
+慼 > sorrowful;
+慤 > sincerity;
+慆 > excessive;
+愨 > sincerity;
+悽 > sorrowful;
+悁 > irritable;
+恑 > to\-change;
+恊 > be\-united;
+怺 > to\-endure;
+怞 > to\-grieve;
+怗 > observant;
+忀 > to\-stroll;
+彌 > extensive;
+廾 > two\-hands;
+廸 > enlighten;
+庉 > a\-village;
+幩 > trappings;
+幙 > a\-curtain;
+帥 > commander;
+嶎 > luxuriant;
+寽 > a\-handful;
+寘 > put\-aside;
+寗 > a\-surname;
+寖 > gradually;
+寃 > grievance;
+宂 > scattered;
+嬋 > beautiful;
+嫽 > play\-with;
+嫛 > compliant;
+嫗 > old\-woman;
+嫕 > compliant;
+媺 > beautiful;
+媬 > governess;
+媕 > undecided;
+媄 > beautiful;
+婥 > beautiful;
+姸 > beautiful;
+姱 > beautiful;
+姢 > beautiful;
+姞 > concubine;
+夻 > fish\-name;
+夌 > to\-dawdle;
+墾 > cultivate;
+墜 > fall\-down;
+塝 > flat\-bank;
+埓 > enclosure;
+垗 > sacrifice;
+圊 > rest\-room;
+嚜 > be\-silent;
+噁 > nastiness;
+嘵 > garrulous;
+嘑 > to\-menace;
+喦 > talkative;
+啎 > obstinate;
+哫 > to\-cajole;
+咵 > to\-revile;
+呧 > to\-rebuke;
+叅 > to\-counel;
+厲 > whetstone;
+厓 > precipice;
+匭 > small\-box;
+匘 > the\-brain;
+勯 > exhausted;
+勩 > work\-hard;
+剰 > leftovers;
+剙 > establish;
+剏 > establish;
+刱 > establish;
+刡 > to\-scrape;
+刔 > scoop\-out;
+刅 > to\-create;
+凷 > dirt\-clod;
+凙 > an\-icicle;
+兗 > establish;
+兇 > atrocious;
+儳 > obstinate;
+儭 > to\-assist;
+儕 > a\-company;
+儔 > companion;
+儉 > temperate;
+僝 > to\-revile;
+僇 > humiliate;
+傺 > to\-hinder;
+倢 > beautiful;
+侶 > companion;
+侎 > to\-soothe;
+佫 > \(surname\);
+伻 > messenger;
+伋 > deceptive;
+仈 > \(surname\);
+乆 > long\-time;
+䶳 > to\-lookup;
+䶑 > to\-sneeze;
+䶍 > to\-sneeze;
+䵯 > a\-village;
+䴡 > beautiful;
+䴏 > a\-swallow;
+䳺 > the\-quail;
+䲿 > cormorant;
+䲨 > wild\-swan;
+䱈 > fish\-pulp;
+䰥 > a\-cyclone;
+䰖 > fine\-hair;
+䰐 > long\-hair;
+䰈 > fine\-hair;
+䯽 > fine\-hair;
+䯷 > fine\-hair;
+䯦 > tiny\-bone;
+䮜 > to\-gallop;
+䭬 > to\-kowtow;
+䭫 > to\-kowtow;
+䭛 > tasteless;
+䭙 > exquisite;
+䭕 > tasteless;
+䭑 > incorrupt;
+䬶 > to\-strave;
+䬔 > hurricane;
+䬓 > hurricane;
+䫻 > a\-typhoon;
+䫺 > a\-typhoon;
+䫝 > fragrance;
+䫔 > a\-servant;
+䩦 > the\-reins;
+䨭 > the\-skies;
+䨐 > to\-spread;
+䨍 > deep\-pond;
+䧅 > dangerous;
+䦵 > incapable;
+䦬 > a\-vacancy;
+䦆 > a\-big\-hoe;
+䥽 > farm\-tool;
+䤤 > implement;
+䤏 > destroyed;
+䣸 > tasteless;
+䣩 > beautiful;
+䢱 > to\-slight;
+䢫 > to\-follow;
+䢟 > to\-travel;
+䢍 > to\-hasten;
+䢊 > to\-travel;
+䡔 > to\-hinder;
+䠲 > to\-listen;
+䠯 > to\-ascend;
+䠮 > to\-prance;
+䠆 > to\-kowtow;
+䟻 > bare\-feet;
+䟥 > luxuriant;
+䟞 > to\-falter;
+䟌 > diverging;
+䞾 > frivolous;
+䞼 > to\-escape;
+䞣 > to\-resist;
+䞗 > suspicion;
+䞒 > red\-color;
+䞐 > plentiful;
+䞍 > to\-bestow;
+䞉 > a\-surplus;
+䝾 > to\-bestow;
+䝼 > to\-bestow;
+䜭 > to\-dredge;
+䜟 > to\-verify;
+䜝 > uncertain;
+䜅 > to\-follow;
+䛻 > to\-induce;
+䛹 > to\-accuse;
+䛸 > garrulous;
+䛳 > to\-malign;
+䛬 > baby\-talk;
+䛪 > loquacity;
+䛞 > loquacity;
+䛚 > to\-praise;
+䛋 > to\-scheme;
+䛁 > to\-murmur;
+䚵 > to\-induce;
+䙸 > to\-obtain;
+䙷 > to\-obtain;
+䙯 > exquisite;
+䙧 > red\-color;
+䙘 > exquisite;
+䘼 > stockings;
+䘚 > a\-servant;
+䘗 > beautiful;
+䘑 > the\-pulse;
+䗙 > earthworm;
+䗓 > dragonfly;
+䗌 > dragonfly;
+䗅 > millipede;
+䖡 > millipede;
+䕹 > a\-curtain;
+䕲 > artemisia;
+䕩 > dry\-fruit;
+䕏 > artemisia;
+䔳 > chickling;
+䓰 > absinthin;
+䓗 > scallions;
+䓇 > luxuriant;
+䒰 > to\-follow;
+䒠 > luxuriant;
+䒊 > a\-patient;
+䑪 > a\-sailing;
+䑟 > luxuriant;
+䑓 > a\-lookout;
+䑑 > a\-servant;
+䑉 > excrement;
+䑀 > the\-navel;
+䐺 > delicious;
+䐡 > the\-navel;
+䐛 > to\-loosen;
+䐌 > luxuriant;
+䐆 > big\-belly;
+䏽 > meat\-pulp;
+䏬 > the\-spine;
+䏠 > meat\-soup;
+䏞 > the\-belly;
+䎡 > to\-shrink;
+䎃 > fine\-down;
+䍎 > a\-spindle;
+䌲 > light\-red;
+䌛 > entourage;
+䌖 > to\-gather;
+䌊 > entourage;
+䋠 > to\-repair;
+䊰 > foodstuff;
+䊜 > dumplings;
+䉽 > rice\-cake;
+䉼 > materials;
+䉘 > to\-pierce;
+䈵 > luxuriant;
+䇐 > to\-arrive;
+䆐 > a\-country;
+䅎 > different;
+䅅 > farm\-tool;
+䅃 > late\-crop;
+䄬 > to\-change;
+䄙 > happiness;
+䃩 > a\-mineral;
+䃕 > stoneware;
+䃓 > to\-punish;
+䃀 > millstone;
+䂾 > to\-polish;
+䂈 > to\-pierce;
+䂇 > to\-pierce;
+䁢 > exquisite;
+䁐 > deep\-eyed;
+䀰 > open\-eyes;
+䀬 > to\-glance;
+䀢 > to\-glance;
+䀡 > to\-spy\-on;
+䀐 > to\-regard;
+㿿 > wine\-cups;
+㿟 > he\-bright;
+㿛 > carbuncle;
+㿇 > paralysis;
+㾭 > to\-shrink;
+㾥 > bellyache;
+㾣 > to\-shiver;
+㾋 > dysentery;
+㽬 > to\-assist;
+㽞 > to\-remain;
+㽑 > delicious;
+㽉 > a\-big\-jar;
+㼺 > porcelain;
+㼚 > earthware;
+㻽 > fine\-jade;
+㻱 > to\-circle;
+㻌 > fine\-jade;
+㻉 > fine\-jade;
+㷼 > a\-swallow;
+㷎 > sunstroke;
+㵗 > turbulent;
+㵔 > not\-clear;
+㴁 > to\-add\-to;
+㳨 > to\-splash;
+㲵 > the\-skies;
+㲦 > long\-hair;
+㲤 > long\-hair;
+㲚 > long\-hair;
+㱘 > nightmare;
+㰖 > the\-olive;
+㯺 > a\-cabinet;
+㯯 > small\-cup;
+㯝 > paulownia;
+㯄 > luxuriant;
+㮙 > a\-pitfall;
+㮔 > vegetable;
+㮃 > farm\-tool;
+㭢 > mechanics;
+㬿 > moonlight;
+㬫 > clear\-sky;
+㬣 > luxuriant;
+㬞 > sunstroke;
+㪬 > to\-pierce;
+㪩 > to\-strike;
+㪤 > to\-finish;
+㪑 > to\-follow;
+㪎 > uncertain;
+㪋 > to\-resist;
+㪈 > to\-let\-go;
+㪅 > to\-change;
+㩱 > to\-select;
+㩧 > to\-strike;
+㩒 > to\-arrest;
+㩌 > to\-strike;
+㩇 > the\-thumb;
+㩄 > to\-strike;
+㨶 > to\-thresh;
+福 > happiness;
+祥 > good\-luck;
+㨚 > to\-select;
+㨍 > to\-defend;
+㨉 > to\-smooth;
+宅 > residence;
+㨄 > to\-pierce;
+㧾 > to\-strike;
+識 > recognize;
+臨 > draw\-near;
+㧰 > to\-strike;
+㧩 > to\-dispel;
+痢 > dysentery;
+㧦 > to\-strike;
+㧗 > to\-clatch;
+㧖 > to\-clutch;
+㧌 > to\-select;
+蓼 > smartweed;
+療 > be\-healed;
+僚 > officials;
+了 > to\-finish;
+㦻 > to\-put\-on;
+例 > precedent;
+㦴 > to\-arrest;
+㦯 > a\-certain;
+㦪 > complaint;
+㦝 > beautiful;
+㦖 > resentful;
+麗 > beautiful;
+礪 > whetstone;
+㥾 > mortified;
+㥳 > to\-survey;
+㥮 > obstinate;
+㥧 > to\-follow;
+㥦 > satisfied;
+異 > different;
+綾 > thin\-silk;
+㥖 > red\-color;
+㥎 > to\-resent;
+㥀 > exclusive;
+㤵 > copassion;
+爐 > fireplace;
+郎 > gentleman;
+㤥 > sorrowful;
+亂 > confusion;
+㤘 > obstinate;
+㤒 > knowledge;
+㤋 > confusion;
+㤇 > terrified;
+㤆 > nauseated;
+㣼 > to\-endure;
+㣺 > the\-heart;
+㣐 > to\-change;
+㢨 > to\-defend;
+㢡 > to\-exhort;
+㢀 > side\-room;
+㡿 > to\-accuse;
+㡼 > a\-granary;
+㡺 > a\-cottage;
+㡢 > a\-curtain;
+㡠 > a\-picture;
+㡗 > red\-paper;
+㠮 > to\-expand;
+㠘 > an\-island;
+㞵 > frivolous;
+㞣 > fragrance;
+㝎 > to\-decide;
+㜻 > to\-admire;
+㜰 > exquisite;
+㜨 > beautiful;
+㜞 > beautiful;
+㜘 > delicated;
+㜖 > exquisite;
+㜏 > last\-name;
+㜊 > exquisite;
+㜄 > last\-name;
+㛾 > not\-clean;
+㛺 > not\-clean;
+㛱 > exquisite;
+㛗 > frivolous;
+㛔 > exquisite;
+㚰 > an\-embryo;
+㚯 > last\-name;
+㚛 > corpulent;
+㚘 > a\-partner;
+㙵 > a\-lookout;
+㙜 > a\-lookout;
+㘣 > compasses;
+㗳 > forgetful;
+㗣 > to\-sneeze;
+㖼 > to\-scheme;
+㖦 > loquacity;
+㖂 > loquacity;
+㕻 > to\-refuse;
+㕹 > a\-buckler;
+㕗 > to\-induce;
+㕕 > deception;
+㕑 > a\-kitchen;
+㕏 > a\-kitchen;
+㕋 > rock\-land;
+㕈 > to\-linger;
+㔾 > last\-name;
+㔧 > to\-incite;
+㓯 > to\-divide;
+㓨 > to\-pierce;
+㓋 > to\-freeze;
+㓄 > to\-plough;
+㒗 > a\-servant;
+㒓 > to\-escape;
+㒋 > a\-servant;
+㒈 > dangerous;
+㒂 > to\-bestow;
+㑯 > last\-name;
+㑮 > last\-name;
+㑧 > perturbed;
+㑙 > frivolous;
+㑘 > a\-servant;
+㑎 > last\-name;
+㑄 > to\-insult;
+㐯 > to\-employ;
+㐭 > a\-granary;
+㐩 > wine\-cups;
+㐆 > to\-follow;
+念 > think\-of;
+会 > assemble;
+学 > learning;
+徒 > disciple;
+睦 > friendly;
+无 > negative;
+方 > a\-square;
+前 > in\-front;
+眉 > eyebrows;
+省 > province;
+直 > straight;
+廢 > abrogate;
+盛 > abundant;
+軒 > carriage;
+全 > maintain;
+廊 > corridor;
+廃 > abrogate;
+皺 > wrinkles;
+康 > peaceful;
+间 > midpoint;
+躊 > hesitate;
+躇 > hesitate;
+第 > sequence;
+幻 > illusion;
+癇 > epilepsy;
+山 > mountain;
+踟 > hesitate;
+巾 > kerchief;
+巧 > skillful;
+安 > peaceful;
+距 > distance;
+界 > boundary;
+任 > trust\-to;
+台 > platform;
+象 > elephant;
+题 > forehead;
+賢 > virtuous;
+資 > property;
+貼 > paste\-to;
+費 > expenses;
+貞 > virtuous;
+资 > property;
+履 > footwear;
+豐 > abundant;
+豊 > abundant;
+武 > military;
+琲 > necklace;
+尠 > very\-few;
+完 > complete;
+即 > promptly;
+寵 > favorite;
+语 > language;
+珍 > precious;
+富 > abundant;
+商 > commerce;
+宝 > treasure;
+千 > thousand;
+宜 > suitable;
+官 > official;
+站 > stand\-up;
+學 > learning;
+譬 > metaphor;
+香 > fragrant;
+似 > resemble;
+嬢 > troubled;
+虽 > although;
+集 > assemble;
+且 > moreover;
+调 > transfer;
+嫉 > jealousy;
+狃 > to\-covet;
+嫁 > to\-marry;
+調 > transfer;
+語 > language;
+媚 > charming;
+誘 > persuade;
+费 > expenses;
+誄 > eulogize;
+詳 > detailed;
+詰 > question;
+惊 > frighten;
+支 > disperse;
+突 > suddenly;
+評 > appraise;
+娠 > pregnant;
+句 > sentence;
+显 > manifest;
+增 > increase;
+料 > consider;
+著 > manifest;
+妊 > conceive;
+境 > boundary;
+续 > continue;
+無 > negative;
+裕 > abundant;
+炭 > charcoal;
+围 > surround;
+増 > increase;
+災 > calamity;
+塚 > cemetery;
+忽 > suddenly;
+瀕 > approach;
+维 > maintain;
+濺 > sprinkle;
+濯 > wash\-out;
+垣 > low\-wall;
+习 > practice;
+垂 > let\-down;
+坂 > hillside;
+祖 > ancestor;
+评 > appraise;
+圍 > surround;
+继 > continue;
+囲 > surround;
+优 > superior;
+滯 > block\-up;
+限 > boundary;
+溢 > overflow;
+温 > lukewarm;
+蚊 > mosquito;
+鹸 > alkaline;
+噪 > be\-noisy;
+嘲 > ridicule;
+減 > decrease;
+嘔 > to\-vomit;
+恩 > kindness;
+脱 > take\-off;
+涸 > dried\-up;
+喪 > mourning;
+奔 > run\-fast;
+涌 > surge\-up;
+禁 > restrict;
+浮 > to\-float;
+互 > mutually;
+洒 > sprinkle;
+搞 > to\-clear;
+朱 > cinnabar;
+域 > district;
+材 > material;
+额 > forehead;
+偷 > to\-steal;
+丹 > cinnabar;
+蓉 > hibiscus;
+抽 > draw\-out;
+仪 > ceremony;
+绍 > continue;
+丰 > abundant;
+卸 > lay\-down;
+忆 > remember;
+隔 > separate;
+减 > decrease;
+卓 > profound;
+灾 > calamity;
+聚 > assemble;
+损 > diminish;
+茄 > eggplant;
+勿 > must\-not;
+髭 > mustache;
+遥 > far\-away;
+櫛 > comb\-out;
+币 > currency;
+勉 > endeavor;
+骸 > skeleton;
+芳 > fragrant;
+努 > to\-exert;
+贴 > paste\-to;
+驚 > frighten;
+別 > separate;
+萍 > duckweed;
+樅 > fir\-tree;
+缩 > contract;
+臥 > lie\-down;
+慕 > long\-for;
+臣 > minister;
+挡 > obstruct;
+膜 > membrane;
+榛 > hazelnut;
+俊 > talented;
+枝 > branches;
+陷 > submerge;
+丧 > mourning;
+勒 > strangle;
+躺 > lie\-down;
+優 > superior;
+聊 > somewhat;
+飾 > decorate;
+儀 > ceremony;
+斜 > slanting;
+斐 > graceful;
+废 > abrogate;
+详 > detailed;
+搬 > transfer;
+梟 > owl\-thus;
+傘 > umbrella;
+顯 > manifest;
+亭 > pavilion;
+顕 > manifest;
+泛 > to\-drift;
+額 > forehead;
+題 > forehead;
+符 > i\.d\.\-tag;
+允 > to\-grant;
+菲 > fragrant;
+跨 > straddle;
+掩 > to\-cover;
+頃 > a\-moment;
+障 > separate;
+柴 > firewood;
+俯 > bow\-down;
+俥 > rickshaw;
+邻 > neighbor;
+習 > practice;
+驾 > to\-drive;
+侭 > complete;
+羞 > disgrace;
+裤 > trousers;
+估 > merchant;
+鞘 > scabbard;
+勃 > suddenly;
+咐 > instruct;
+恒 > constant;
+糟 > sediment;
+扮 > dress\-up;
+贤 > virtuous;
+饰 > decorate;
+曜 > glorious;
+雖 > although;
+仕 > official;
+卧 > lie\-down;
+仄 > slanting;
+隣 > neighbor;
+碍 > obstruct;
+暢 > smoothly;
+拦 > obstruct;
+押 > mortgage;
+戚 > relative;
+續 > continue;
+繼 > continue;
+穆 > majestic;
+疆 > boundary;
+陥 > submerge;
+皱 > wrinkles;
+畅 > smoothly;
+嘻 > mirthful;
+縮 > contract;
+並 > equal\-to;
+昔 > formerly;
+練 > practice;
+闘 > struggle;
+瞪 > stare\-at;
+斥 > to\-scold;
+剪 > scissors;
+姚 > handsome;
+掏 > take\-out;
+維 > maintain;
+诱 > persuade;
+続 > continue;
+継 > continue;
+間 > interval;
+紹 > continue;
+芙 > hibiscus;
+惹 > irritate;
+簿 > register;
+損 > diminish;
+芷 > angelica;
+磁 > magnetic;
+毅 > resolute;
+笥 > a\-hamper;
+拘 > restrain;
+伐 > cut\-down;
+竊 > secretly;
+銘 > inscribe;
+愉 > pleasant;
+窜 > run\-away;
+寨 > stockade;
+戻 > perverse;
+沪 > shanghai;
+釜 > cauldron;
+嗤 > laugh\-at;
+娱 > pleasure;
+嫣 > charming;
+宠 > favorite;
+憶 > remember;
+铭 > inscribe;
+馨 > fragrant;
+渊 > surge\-up;
+禄 > blessing;
+窃 > secretly;
+顷 > a\-moment;
+礙 > obstruct;
+愕 > startled;
+啡 > morphine;
+贞 > virtuous;
+囚 > prisoner;
+账 > accounts;
+遙 > far\-away;
+喻 > metaphor;
+瓷 > crockery;
+蓦 > suddenly;
+滞 > block\-up;
+贬 > decrease;
+伞 > umbrella;
+腥 > raw\-meat;
+滔 > overflow;
+溅 > sprinkle;
+咸 > together;
+疫 > epidemic;
+啪 > syllable;
+沛 > abundant;
+膨 > to\-swell;
+吱 > chirping;
+轩 > carriage;
+讥 > ridicule;
+菌 > mushroom;
+衍 > overflow;
+亨 > smoothly;
+琐 > trifling;
+绰 > graceful;
+苟 > careless;
+崛 > towering;
+凸 > protrude;
+嚣 > be\-noisy;
+琛 > treasure;
+嘀 > backbite;
+铐 > shackles;
+踌 > hesitate;
+谕 > proclaim;
+迸 > gush\-out;
+剔 > pick\-out;
+冀 > hope\-for;
+砚 > inkstone;
+捍 > ward\-off;
+臀 > buttocks;
+倔 > stubborn;
+奄 > ere\-long;
+侥 > be\-lucky;
+梵 > buddhist;
+褥 > mattress;
+晖 > sunshine;
+漾 > overflow;
+畴 > farmland;
+瞟 > glare\-at;
+瘸 > lameness;
+澎 > splatter;
+潦 > to\-flood;
+濒 > approach;
+偎 > cling\-to;
+蝎 > scorpion;
+簸 > winnower;
+瘟 > epidemic;
+庶 > numerous;
+惦 > think\-of;
+撂 > put\-down;
+诘 > question;
+晗 > pre\-dawn;
+蹊 > footpath;
+碱 > alkaline;
+阉 > castrate;
+淆 > confused;
+萦 > entangle;
+榆 > elm\-tree;
+猝 > abruptly;
+赓 > continue;
+枭 > owl\-thus;
+曦 > sunlight;
+钊 > endeavor;
+撅 > protrude;
+渤 > swelling;
+辘 > windlass;
+铝 > aluminum;
+捋 > to\-pluck;
+矗 > straight;
+虻 > horsefly;
+瞌 > doze\-off;
+亟 > urgently;
+搪 > ward\-off;
+徨 > doubtful;
+啐 > to\-taste;
+镯 > bracelet;
+刽 > amputate;
+藻 > splendid;
+惰 > indolent;
+燔 > to\-roast;
+涝 > inundate;
+偕 > together;
+骷 > skeleton;
+绛 > deep\-red;
+紊 > confused;
+邃 > profound;
+氯 > chlorine;
+坍 > collapse;
+妩 > charming;
+嘭 > syllable;
+忐 > timorous;
+殡 > encoffin;
+昵 > intimate;
+纭 > confused;
+俟 > wait\-for;
+桢 > hardwood;
+黏 > stick\-to;
+晏 > peaceful;
+隽 > superior;
+禺 > district;
+痘 > smallpox;
+槟 > betelnut;
+韭 > scallion;
+戾 > perverse;
+蔫 > withered;
+膂 > backbone;
+垠 > boundary;
+镬 > cauldron;
+胫 > shinbone;
+哐 > syllable;
+硷 > alkaline;
+臃 > swell\-up;
+岌 > perilous;
+犟 > stubborn;
+玎 > jingling;
+遢 > careless;
+噔 > syllable;
+滓 > sediment;
+隼 > aquiline;
+翦 > scissors;
+陲 > frontier;
+谶 > prophecy;
+偻 > humpback;
+铂 > platinum;
+纛 > a\-banner;
+懿 > virtuous;
+铬 > chromium;
+娆 > graceful;
+慵 > indolent;
+胰 > pancreas;
+覃 > reach\-to;
+遽 > suddenly;
+睾 > testicle;
+缜 > detailed;
+倨 > arrogant;
+讣 > obituary;
+钛 > titanium;
+浃 > saturate;
+旖 > romantic;
+缙 > red\-silk;
+嘣 > syllable;
+懋 > splendid;
+衾 > coverlet;
+宸 > imperial;
+佞 > flattery;
+蛔 > tapeworm;
+祜 > blessing;
+氅 > overcoat;
+氟 > fluorine;
+氰 > cyanogen;
+鲟 > sturgeon;
+婕 > handsome;
+硒 > selenium;
+舨 > a\-sampan;
+烊 > to\-smelt;
+萱 > day\-lily;
+疸 > jaundice;
+铊 > thallium;
+诂 > exegesis;
+雉 > pheasant;
+颢 > luminous;
+钏 > bracelet;
+栀 > gardenia;
+绔 > trousers;
+缵 > continue;
+溘 > abruptly;
+诒 > bequeath;
+氦 > fluorine;
+颟 > dawdling;
+痫 > epilepsy;
+苋 > amaranth;
+瀣 > sea\-mist;
+箝 > tweezers;
+蹰 > hesitate;
+赀 > property;
+楮 > mulberry;
+镊 > tweezers;
+遄 > to\-hurry;
+钒 > vanadium;
+苷 > licorice;
+勰 > peaceful;
+氽 > to\-float;
+钨 > tungsten;
+愦 > confused;
+埸 > a\-border;
+髀 > buttocks;
+嫒 > daughter;
+伛 > humpback;
+癜 > erythema;
+砦 > stockade;
+鸹 > the\-crow;
+曛 > twilight;
+槿 > hibiscus;
+骘 > stallion;
+庑 > corridor;
+坻 > an\-islet;
+觫 > to\-start;
+铵 > ammonium;
+氩 > argonium;
+嬖 > favorite;
+卣 > wine\-pot;
+锑 > antimony;
+醛 > aldehyde;
+钽 > tantalum;
+砼 > concrete;
+熘 > to\-steam;
+蓁 > abundant;
+诔 > eulogize;
+窨 > a\-cellar;
+栲 > mangrove;
+仳 > separate;
+鲣 > skipjack;
+瘿 > swelling;
+铷 > rubidium;
+铕 > europium;
+钋 > polonium;
+砑 > to\-grind;
+枞 > fir\-tree;
+洫 > to\-ditch;
+揞 > to\-cover;
+埚 > crucible;
+垤 > ant\-hill;
+卺 > winecups;
+嘏 > felicity;
+鲽 > flatfish;
+鲭 > mackerel;
+钪 > scandium;
+钫 > francium;
+钐 > samarium;
+祓 > exorcise;
+栳 > a\-basket;
+徼 > frontier;
+吲 > smile\-at;
+莰 > camphane;
+芴 > fluorene;
+仝 > together;
+赜 > abstruse;
+龓 > a\-halter;
+鼚 > drumming;
+麮 > porridge;
+鹼 > alkaline;
+鷩 > pheasant;
+鷊 > pheasant;
+鵫 > pheasant;
+鵙 > a\-shrike;
+鴰 > the\-crow;
+鳮 > chickens;
+鳇 > sturgeon;
+鲺 > cat\-fish;
+鱣 > sturgeon;
+鱘 > sturgeon;
+鰹 > skipjack;
+鰉 > sturgeon;
+鰈 > flatfish;
+鯺 > blowfish;
+鯸 > blowfish;
+鯖 > mackerel;
+鮐 > blowfish;
+魨 > blowfish;
+鬭 > struggle;
+鬬 > struggle;
+鬪 > struggle;
+鬦 > struggle;
+鬥 > struggle;
+鬋 > forelock;
+鬀 > to\-shave;
+髵 > whiskers;
+髎 > hip\-bone;
+驀 > suddenly;
+騭 > stallion;
+駾 > run\-away;
+駦 > to\-mount;
+駕 > to\-drive;
+馩 > aromatic;
+馟 > fragrant;
+馚 > aromatic;
+餬 > porridge;
+餫 > dumpling;
+餩 > hiccough;
+餟 > libation;
+餙 > to\-adorn;
+颱 > taiphoon;
+顥 > luminous;
+顢 > dawdling;
+頲 > straight;
+韮 > scallion;
+韡 > gorgeous;
+韠 > knee\-pad;
+靺 > stocking;
+霨 > clouding;
+雞 > chickens;
+雋 > superior;
+隲 > stallion;
+隩 > profound;
+阸 > distress;
+閹 > castrate;
+閒 > peaceful;
+镥 > lutetium;
+鑷 > tweezers;
+鑥 > lutetium;
+鑕 > tungsten;
+鑊 > cauldron;
+鐲 > bracelet;
+鐇 > vanadium;
+鎢 > tungsten;
+鎉 > thallium;
+鍩 > nobelium;
+鍚 > frontlet;
+錒 > actinium;
+鋁 > aluminum;
+銬 > shackles;
+銪 > europium;
+銨 > ammonium;
+銣 > rubidium;
+銍 > a\-sickle;
+鉻 > chromium;
+鉭 > tantalum;
+鉑 > platinum;
+鉈 > thallium;
+鉆 > treasure;
+鈪 > bracelet;
+鈧 > scandium;
+鈦 > titanium;
+鈁 > francium;
+釩 > vanadium;
+釧 > bracelet;
+釤 > samarium;
+釡 > cauldron;
+釙 > polonium;
+釗 > endeavor;
+醩 > sediment;
+醆 > wine\-cup;
+醃 > marinate;
+酲 > hangover;
+鄰 > neighbor;
+鄈 > slippers;
+邅 > hesitant;
+迻 > to\-shift;
+轊 > axle\-tip;
+轆 > windlass;
+輭 > flexible;
+輬 > a\-hearse;
+軝 > axle\-tip;
+躭 > to\-delay;
+躕 > hesitate;
+蹾 > to\-squat;
+蹧 > to\-spoil;
+踦 > the\-shin;
+跅 > careless;
+跂 > creeping;
+赬 > deep\-red;
+贒 > virtuous;
+賾 > abstruse;
+賬 > accounts;
+賡 > continue;
+貶 > decrease;
+貲 > property;
+豎 > vertical;
+讖 > prophecy;
+譹 > to\-shout;
+譜 > register;
+譔 > eulogize;
+譏 > ridicule;
+謿 > ridicule;
+謼 > to\-shout;
+諭 > proclaim;
+諆 > to\-cheat;
+詒 > bequeath;
+詋 > to\-curse;
+詊 > pleasing;
+詁 > exegesis;
+訃 > obituary;
+襶 > ignorant;
+襫 > raincoat;
+襏 > raincoat;
+褲 > trousers;
+褌 > trousers;
+裯 > coverlet;
+蠍 > scorpion;
+蝱 > horsefly;
+蝟 > hedgehog;
+蝏 > \(insect\);
+蜱 > \(insect\);
+蜖 > tapeworm;
+蚳 > ant\-eggs;
+蚘 > tapeworm;
+蚔 > ant\-eggs;
+薸 > duckweed;
+薆 > to\-cover;
+蕣 > hibiscus;
+蔉 > earth\-up;
+葖 > follicle;
+苐 > sequence;
+艩 > tholepin;
+艌 > to\-caulk;
+膵 > pancreas;
+脰 > the\-neck;
+脫 > take\-off;
+脛 > shinbone;
+胮 > to\-swell;
+肨 > to\-swell;
+肏 > copulate;
+耏 > whiskers;
+翬 > pheasant;
+翫 > careless;
+罇 > a\-goblet;
+缷 > lay\-down;
+纘 > continue;
+繖 > umbrella;
+縿 > streamer;
+縴 > tow\-line;
+縝 > detailed;
+縉 > red\-silk;
+縈 > entangle;
+緻 > delicate;
+綽 > graceful;
+綯 > to\-braid;
+綪 > dark\-red;
+絻 > mourning;
+絳 > deep\-red;
+絝 > trousers;
+紞 > a\-fringe;
+紜 > confused;
+籣 > bow\-case;
+簬 > \(bamboo\);
+箂 > \(bamboo\);
+竢 > wait\-for;
+竄 > run\-away;
+秏 > to\-waste;
+祿 > blessing;
+祼 > libation;
+磟 > mediocre;
+碏 > coloured;
+硯 > inkstone;
+砹 > astatine;
+砵 > syllable;
+矋 > to\-stare;
+瞓 > to\-sleep;
+睏 > be\-tired;
+睅 > big\-eyed;
+盬 > salt\-pit;
+盙 > a\-basket;
+皝 > luminous;
+癭 > swelling;
+癒 > get\-well;
+癎 > epilepsy;
+癈 > abrogate;
+癃 > weakness;
+癀 > jaundice;
+瘼 > sickness;
+瘶 > to\-cough;
+瘰 > scrofula;
+瘉 > get\-well;
+疇 > farmland;
+畺 > boundary;
+甯 > peaceful;
+甡 > abundant;
+瓩 > kilowatt;
+瓧 > decagram;
+璚 > splendid;
+琫 > ornament;
+珷 > \/2\-pr\-st;
+珤 > treasure;
+珎 > precious;
+珌 > ornament;
+獘 > collapse;
+犵 > resolute;
+犫 > protrude;
+犎 > the\-zebu;
+犇 > run\-fast;
+牳 > \(bovine\);
+熤 > \(person\);
+煐 > \(person\);
+焌 > to\-light;
+炤 > illumine;
+灑 > sprinkle;
+瀰 > overflow;
+瀡 > slippery;
+澾 > slippery;
+澱 > sediment;
+澇 > inundate;
+潗 > friendly;
+潎 > rippling;
+滬 > shanghai;
+滃 > swelling;
+溫 > lukewarm;
+湢 > bathroom;
+渕 > surge\-up;
+浹 > saturate;
+泐 > to\-write;
+沍 > freezing;
+氾 > overflow;
+氬 > argonium;
+氉 > restless;
+毾 > a\-coarse;
+毻 > to\-moult;
+毷 > restless;
+殽 > mixed\-up;
+殯 > encoffin;
+殗 > sickness;
+欛 > a\-handle;
+櫃 > cupboard;
+檿 > mulberry;
+檳 > betelnut;
+樚 > a\-pulley;
+楨 > hardwood;
+楡 > elm\-tree;
+椄 > to\-graft;
+梱 > doorsill;
+梔 > gardenia;
+柤 > hawthorn;
+柅 > flourish;
+枻 > long\-oar;
+曆 > calendar;
+暱 > intimate;
+暦 > calendar;
+暠 > daybreak;
+暉 > sunshine;
+晧 > daybreak;
+晛 > sunlight;
+昤 > sunshine;
+昡 > long\-day;
+旘 > a\-pennon;
+斾 > a\-pennon;
+斈 > learning;
+敪 > to\-weigh;
+敠 > to\-weigh;
+攩 > obstruct;
+攞 > to\-split;
+攔 > obstruct;
+擩 > to\-stain;
+擋 > obstruct;
+撏 > pull\-out;
+摷 > to\-knock;
+搵 > wipe\-off;
+搲 > to\-seize;
+搯 > take\-out;
+搋 > to\-thump;
+揾 > wipe\-off;
+揰 > poke\-out;
+揢 > to\-seize;
+揜 > cover\-up;
+揌 > to\-shake;
+掹 > to\-pluck;
+捦 > to\-seize;
+拑 > to\-clamp;
+扞 > ward\-off;
+扅 > gate\-bar;
+懕 > satiated;
+憪 > composed;
+憖 > cautious;
+憒 > confused;
+慭 > cautious;
+慫 > to\-alarm;
+慅 > agitated;
+慁 > dishonor;
+惽 > confused;
+惸 > troubled;
+惛 > confused;
+惔 > cheerful;
+惄 > long\-for;
+悤 > agitated;
+恝 > carefree;
+恔 > cheerful;
+恌 > to\-worry;
+恆 > constant;
+忮 > stubborn;
+徯 > wait\-for;
+彸 > restless;
+彊 > stubborn;
+弢 > bow\-case;
+廤 > to\-place;
+廡 > corridor;
+庻 > numerous;
+庬 > abundant;
+幬 > cover\-up;
+幣 > currency;
+帵 > remnants;
+帱 > cover\-up;
+嶭 > elevated;
+嶒 > towering;
+峿 > mountain;
+岊 > foothill;
+屼 > mountain;
+寶 > treasure;
+寳 > treasure;
+寚 > precious;
+宬 > archives;
+孃 > troubled;
+嬬 > mistress;
+嬡 > daughter;
+嬝 > delicate;
+嬈 > graceful;
+嫿 > tranquil;
+嫵 > charming;
+媮 > handsome;
+婾 > handsome;
+娯 > pleasure;
+娛 > pleasure;
+姦 > adultery;
+姙 > conceive;
+奡 > arrogant;
+堝 > crucible;
+埼 > headland;
+埀 > let\-down;
+坮 > platform;
+圥 > mushroom;
+囮 > inveigle;
+囂 > be\-noisy;
+嚻 > be\-noisy;
+嘥 > to\-waste;
+嗃 > to\-flute;
+喩 > metaphor;
+喓 > chirping;
+喌 > syllable;
+啽 > to\-speak;
+啇 > to\-stalk;
+唥 > a\-bundle;
+哢 > syllable;
+咺 > majestic;
+咜 > to\-scold;
+咇 > fragrant;
+呠 > to\-spurt;
+叒 > obedient;
+厵 > a\-spring;
+卽 > promptly;
+卼 > unsteady;
+卹 > sympathy;
+勔 > endeavor;
+勌 > to\-labor;
+劻 > flurried;
+劙 > a\-divide;
+劊 > amputate;
+剟 > to\-prick;
+刧 > disaster;
+凥 > to\-dwell;
+凅 > dried\-up;
+冴 > freezing;
+冱 > freezing;
+冨 > abundant;
+冝 > suitable;
+冇 > have\-not;
+兣 > decigram;
+兛 > kilogram;
+兙 > decagram;
+儩 > complete;
+僥 > be\-lucky;
+僃 > prepared;
+僂 > humpback;
+傴 > humpback;
+傢 > stubborn;
+傞 > unsteady;
+傌 > to\-curse;
+偸 > to\-steal;
+偲 > talented;
+偫 > wait\-for;
+偟 > agitated;
+俓 > straight;
+侫 > flattery;
+佴 > a\-second;
+佪 > hesitate;
+佋 > continue;
+佀 > resemble;
+伃 > handsome;
+亹 > progress;
+乵 > to\-enter;
+䶲 > the\-edge;
+䵲 > raw\-hemp;
+䵦 > to\-stain;
+䵚 > kaoliang;
+䵓 > the\-mole;
+䵉 > abutilon;
+䴻 > dry\-food;
+䴫 > antelope;
+䴚 > saltpond;
+䴗 > a\-shrike;
+䳻 > an\-eagle;
+䳧 > an\-eagle;
+䲖 > big\-fish;
+䲎 > to\-spoil;
+䰧 > sinister;
+䰟 > the\-soul;
+䯪 > big\-head;
+䯚 > the\-ribs;
+䯗 > buttocks;
+䯐 > shinbone;
+䯎 > shinbone;
+䯉 > to\-choke;
+䯂 > numerous;
+䭱 > a\-little;
+䬼 > satiated;
+䬹 > a\-sickle;
+䬉 > hot\-wind;
+䫷 > the\-jowl;
+䫛 > reckless;
+䫗 > reckless;
+䫃 > the\-lips;
+䪶 > the\-chin;
+䪩 > to\-chant;
+䪜 > a\-shield;
+䪑 > to\-stick;
+䪊 > a\-halter;
+䪅 > a\-quiver;
+䪁 > a\-halter;
+䩴 > a\-quiver;
+䩮 > a\-quiver;
+䩠 > a\-girdle;
+䩉 > the\-face;
+䩈 > a\-plumpy;
+䨼 > dyestuff;
+䧫 > a\-trench;
+䧕 > boundary;
+䧁 > to\-leave;
+䦥 > to\-learn;
+䥸 > a\-sickle;
+䥭 > evidence;
+䥥 > a\-sickle;
+䥌 > evidence;
+䥋 > to\-smelt;
+䤿 > to\-carve;
+䤶 > a\-hammer;
+䤳 > a\-mirrow;
+䤰 > to\-smelt;
+䤫 > a\-chisel;
+䤨 > to\-split;
+䤝 > bracelet;
+䤐 > to\-drink;
+䢭 > to\-cover;
+䢐 > to\-go\-to;
+䢅 > daybreak;
+䡭 > a\-hearse;
+䠾 > to\-dodge;
+䠹 > shinbone;
+䠬 > insomnia;
+䠞 > wrinkled;
+䠐 > to\-squat;
+䠃 > to\-squat;
+䠁 > to\-go\-up;
+䟸 > the\-calf;
+䟶 > to\-squat;
+䟴 > to\-shake;
+䟔 > to\-go\-to;
+䞸 > to\-reach;
+䞮 > to\-crawl;
+䞟 > to\-press;
+䞜 > to\-reach;
+䞔 > deep\-red;
+䞓 > deep\-red;
+䝨 > virtuous;
+䝂 > to\-erect;
+䜬 > a\-cavern;
+䜘 > to\-guard;
+䜐 > to\-libel;
+䜃 > to\-blame;
+䛤 > urgently;
+䛒 > to\-argue;
+䛇 > to\-laugh;
+䛆 > to\-curse;
+䚷 > to\-treat;
+䚯 > to\-quell;
+䚛 > regulate;
+䘫 > old\-rags;
+䘜 > a\-napkin;
+䘙 > to\-guard;
+䘘 > to\-drive;
+䘔 > to\-vomit;
+䘏 > sympathy;
+䘉 > silkworm;
+䘇 > mosquito;
+䗺 > creeping;
+䗞 > silkworm;
+䗝 > silkworm;
+䗘 > a\-weevil;
+䗈 > a\-gadfly;
+䗇 > the\-toad;
+䖻 > ephemera;
+䖦 > scorpion;
+䖤 > to\-creep;
+䖟 > a\-gadfly;
+䖛 > of\-tiger;
+䖏 > to\-dwell;
+䖌 > of\-tiger;
+䖊 > of\-tiger;
+䖀 > angelica;
+䕯 > duckweed;
+䕁 > suddenly;
+䔽 > to\-cover;
+䔐 > delicate;
+䓙 > slanting;
+䓕 > polygala;
+䓌 > polygala;
+䒳 > a\-flower;
+䒃 > to\-build;
+䑻 > covering;
+䑘 > to\-pound;
+䑃 > dim\-moon;
+䐒 > not\-fine;
+䏾 > to\-swell;
+䏺 > to\-swell;
+䏟 > fat\-meat;
+䏉 > to\-waver;
+䏈 > to\-unite;
+䎺 > to\-learn;
+䎲 > ear\-lobe;
+䎮 > to\-plant;
+䎫 > to\-plant;
+䎣 > a\-plough;
+䌷 > a\-thread;
+䌯 > a\-truban;
+䌭 > raw\-hemp;
+䌬 > straight;
+䌫 > a\-hawser;
+䌚 > wrinkles;
+䌃 > raw\-silk;
+䋡 > to\-relax;
+䋓 > wrinkled;
+䋒 > to\-relax;
+䋃 > stinging;
+䊸 > to\-twist;
+䊝 > to\-exile;
+䊁 > leavings;
+䉻 > red\-rice;
+䉱 > a\-cradle;
+䉮 > to\-plant;
+䉪 > to\-grind;
+䉒 > a\-winnow;
+䈶 > an\-arrow;
+䈫 > a\-hawser;
+䇱 > a\-hawser;
+䇌 > to\-stand;
+䆸 > spacious;
+䆄 > a\-bundle;
+䅲 > to\-plant;
+䅨 > fragrant;
+䅤 > to\-plant;
+䅐 > a\-bundle;
+䄀 > calamity;
+䃺 > to\-grind;
+䃑 > speckles;
+䃅 > dyestuff;
+䂻 > to\-block;
+䁥 > to\-blink;
+䁜 > big\-eyes;
+䁂 > big\-eyes;
+䀵 > to\-blink;
+䀈 > a\-vessel;
+㿢 > to\-shine;
+㿡 > a\-helmet;
+㿚 > sickness;
+㿈 > an\-ulcer;
+㿅 > ringworm;
+㾸 > a\-scabby;
+㾮 > jaundice;
+㾎 > sickness;
+㾍 > diseases;
+㾌 > ringworm;
+㾄 > to\-libel;
+㽻 > diseases;
+㽹 > to\-faint;
+㽐 > fragrant;
+㻄 > treasure;
+㺚 > an\-otter;
+㺇 > a\-warden;
+㹸 > the\-lion;
+㹕 > inferior;
+㸼 > the\-zebu;
+㸦 > mutually;
+㸟 > to\-cover;
+㸝 > a\-shovel;
+㸕 > to\-seize;
+㸉 > to\-adapt;
+㷆 > thriving;
+㷀 > solitary;
+㶼 > very\-hot;
+㶄 > to\-stain;
+㵭 > an\-islet;
+㵦 > slippery;
+㴶 > to\-water;
+㴳 > to\-smear;
+㴊 > an\-abyss;
+㴈 > sediment;
+㳫 > repeated;
+㳠 > slippery;
+㳒 > statutes;
+㲸 > dried\-up;
+㲷 > nitrogen;
+㲶 > chlorine;
+㲳 > to\-touch;
+㱿 > the\-husk;
+㱺 > the\-skin;
+㱲 > withered;
+㱢 > the\-dead;
+㱠 > withered;
+㱗 > a\-breath;
+㱅 > virtuous;
+㱃 > to\-drink;
+㰺 > to\-drink;
+㰹 > to\-laugh;
+㰭 > pleasure;
+㰧 > to\-drink;
+㰣 > to\-vomit;
+㰠 > to\-covet;
+㰝 > to\-cough;
+㯰 > to\-plant;
+㮭 > a\-casket;
+㮁 > gardenia;
+㭙 > a\-hammer;
+㭊 > to\-split;
+㬰 > a\-moment;
+㬧 > a\-collar;
+㬢 > sunshine;
+㬡 > sunshine;
+㬙 > sunshine;
+㬗 > sunshine;
+㬌 > sunshine;
+㫽 > darkness;
+㫻 > sunlight;
+㪿 > to\-break;
+㪡 > to\-quell;
+㪓 > disaster;
+㪐 > unstable;
+㪍 > suddenly;
+㪃 > to\-thump;
+㪂 > unstable;
+㪀 > to\-enter;
+㩿 > unstable;
+㩴 > to\-seize;
+㩨 > to\-crack;
+㩓 > to\-wound;
+㩁 > to\-knock;
+㨹 > to\-crack;
+㨱 > to\-shake;
+㨪 > to\-shake;
+㨠 > to\-smear;
+㨟 > to\-touch;
+㨔 > to\-shake;
+㨓 > to\-close;
+塚 > cemetery;
+㨑 > to\-count;
+㨈 > to\-crowd;
+㨁 > to\-throw;
+㧵 > to\-exact;
+隣 > neighbor;
+㧲 > to\-shake;
+㧱 > to\-bring;
+㧬 > to\-raise;
+履 > footwear;
+㧁 > to\-close;
+料 > consider;
+㦿 > a\-window;
+捻 > to\-twist;
+㦥 > talented;
+念 > think\-of;
+㦤 > virtuous;
+練 > practice;
+㦗 > diligent;
+曆 > calendar;
+㦉 > virtuous;
+㥰 > mournful;
+省 > province;
+㥪 > diligent;
+丹 > cinnabar;
+勒 > strangle;
+㥃 > mournful;
+㥁 > morality;
+祿 > blessing;
+㤲 > to\-think;
+㤮 > an\-error;
+廊 > corridor;
+㤦 > mournful;
+㤤 > mournful;
+㤏 > grievous;
+句 > sentence;
+㣰 > to\-shake;
+㣫 > the\-heel;
+㣞 > to\-walki;
+㣋 > cinnabar;
+㣄 > powerful;
+㢴 > the\-west;
+㢩 > to\-shoot;
+㢅 > a\-shield;
+㡳 > mountain;
+㡩 > a\-girdle;
+㡝 > a\-napkin;
+㡖 > to\-cover;
+㠹 > a\-turban;
+㠵 > a\-turban;
+㠊 > a\-rugged;
+㠉 > mountain;
+㠅 > to\-cover;
+㟑 > mountain;
+㞽 > mountain;
+㞷 > luxuiant;
+㞑 > the\-tail;
+㞉 > big\-foot;
+㞈 > big\-foot;
+㝲 > to\-sleep;
+㝮 > to\-exile;
+㝭 > to\-awake;
+㝘 > harmonoy;
+㝒 > to\-dwell;
+㝍 > to\-write;
+㝊 > to\-guide;
+㜶 > a\-couple;
+㜳 > peaceful;
+㛛 > pregnant;
+㚣 > handsome;
+㙢 > a\-trowel;
+㙙 > to\-smear;
+㙃 > a\-cavity;
+㘪 > to\-waste;
+㘠 > to\-close;
+㘙 > to\-groan;
+㘑 > to\-curse;
+㘀 > to\-sound;
+㗪 > mouthful;
+㗨 > to\-laugh;
+㗜 > to\-smell;
+㗛 > to\-laugh;
+㗓 > mouthful;
+㗉 > incisive;
+㖹 > to\-spurt;
+㖩 > not\-pure;
+㖓 > to\-shout;
+㖇 > the\-lips;
+㕼 > to\-brawl;
+㕛 > a\-friend;
+㕐 > inclined;
+㕊 > to\-slant;
+㔰 > constant;
+㔪 > to\-crawl;
+㔠 > industry;
+㔞 > vigorous;
+㓶 > to\-carve;
+㓚 > a\-sickle;
+㓓 > thin\-ice;
+㒹 > to\-upset;
+㑺 > superior;
+㑴 > to\-usurp;
+㑰 > distress;
+㑍 > inferior;
+㐜 > an\-enemy;
+迷 > bewitch;
+述 > narrate;
+迥 > distant;
+中 > central;
+志 > purpose;
+迎 > receive;
+忌 > jealous;
+和 > harmony;
+辯 > dispute;
+去 > go\-away;
+对 > correct;
+瞠 > look\-at;
+律 > statute;
+役 > service;
+眺 > look\-at;
+張 > stretch;
+已 > already;
+弘 > enlarge;
+引 > to\-pull;
+弔 > condole;
+較 > compare;
+意 > thought;
+进 > advance;
+盡 > exhaust;
+廉 > upright;
+情 > feeling;
+皰 > pimples;
+庖 > kitchen;
+躓 > stumble;
+庄 > village;
+并 > combine;
+蹠 > step\-on;
+癖 > craving;
+幕 > curtain;
+代 > replace;
+師 > teacher;
+总 > collect;
+踏 > step\-on;
+师 > teacher;
+痴 > foolish;
+华 > flowery;
+张 > stretch;
+症 > disease;
+病 > illness;
+疾 > illness;
+反 > reverse;
+合 > combine;
+疎 > neglect;
+受 > receive;
+务 > affairs;
+接 > receive;
+崩 > rupture;
+特 > special;
+服 > clothes;
+賽 > compete;
+賑 > relieve;
+科 > section;
+远 > distant;
+豫 > relaxed;
+联 > connect;
+保 > protect;
+尽 > exhaust;
+革 > leather;
+對 > correct;
+尊 > respect;
+品 > article;
+尉 > officer;
+士 > scholar;
+量 > measure;
+対 > correct;
+程 > journey;
+審 > examine;
+察 > examine;
+极 > extreme;
+令 > command;
+未 > not\-yet;
+持 > sustain;
+历 > history;
+宣 > declare;
+史 > history;
+宗 > lineage;
+议 > consult;
+率 > to\-lead;
+委 > appoint;
+護 > protect;
+議 > consult;
+兵 > soldier;
+孔 > opening;
+争 > dispute;
+究 > examine;
+謹 > prudent;
+视 > look\-at;
+講 > explain;
+格 > pattern;
+諸 > several;
+讲 > explain;
+諦 > careful;
+怕 > to\-fear;
+狡 > cunning;
+曾 > already;
+准 > approve;
+段 > section;
+精 > essence;
+竟 > finally;
+誠 > sincere;
+詮 > explain;
+整 > orderly;
+婉 > amiable;
+备 > prepare;
+另 > another;
+陈 > exhibit;
+故 > ancient;
+訛 > swindle;
+託 > entrust;
+衣 > clothes;
+訊 > inquire;
+爆 > crackle;
+批 > comment;
+送 > see\-off;
+愿 > sincere;
+奇 > strange;
+燕 > swallow;
+燈 > lantern;
+覽 > look\-at;
+妬 > jealous;
+游 > to\-swim;
+覧 > look\-at;
+份 > portion;
+敢 > to\-dare;
+視 > look\-at;
+妖 > strange;
+煽 > stir\-up;
+考 > examine;
+村 > village;
+朝 > dynasty;
+育 > produce;
+护 > protect;
+图 > diagram;
+刘 > surname;
+夕 > evening;
+承 > inherit;
+裳 > clothes;
+乡 > country;
+裁 > cut\-out;
+既 > already;
+演 > perform;
+怪 > strange;
+袂 > sleeves;
+采 > collect;
+衰 > decline;
+赛 > compete;
+灯 > lantern;
+较 > compare;
+衡 > measure;
+塞 > stop\-up;
+景 > scenery;
+蠢 > wriggle;
+依 > rely\-on;
+瀝 > trickle;
+胜 > victory;
+濡 > immerse;
+濟 > to\-help;
+蟋 > cricket;
+蟀 > cricket;
+型 > pattern;
+圖 > diagram;
+漆 > varnish;
+漁 > to\-fish;
+図 > diagram;
+散 > scatter;
+蛆 > maggots;
+曲 > crooked;
+溶 > to\-melt;
+厂 > factory;
+肯 > willing;
+抓 > scratch;
+虫 > insects;
+湧 > well\-up;
+范 > surname;
+靠 > lean\-on;
+測 > measure;
+授 > give\-to;
+渇 > thirsty;
+扬 > scatter;
+淺 > shallow;
+淫 > obscene;
+邓 > surname;
+鷄 > chicken;
+嗇 > miserly;
+抱 > embrace;
+预 > prepare;
+睛 > eyeball;
+括 > include;
+降 > descend;
+鶏 > chicken;
+讯 > inquire;
+赵 > surname;
+浅 > shallow;
+私 > private;
+蔑 > disdain;
+审 > examine;
+泡 > bubbles;
+闹 > quarrel;
+敬 > respect;
+醒 > wake\-up;
+沌 > chaotic;
+暴 > violent;
+鲁 > foolish;
+抢 > plunder;
+呑 > swallow;
+篇 > chapter;
+鱈 > codfish;
+呂 > surname;
+拥 > embrace;
+吊 > condole;
+诸 > various;
+華 > flowery;
+叭 > trumpet;
+测 > measure;
+阅 > examine;
+叙 > express;
+猛 > violent;
+厭 > dislike;
+厨 > kitchen;
+雅 > elegant;
+雷 > thunder;
+魯 > foolish;
+鸡 > chicken;
+诚 > sincere;
+竞 > contend;
+操 > conduct;
+卒 > soldier;
+诺 > promise;
+匆 > hastily;
+欅 > zelkova;
+苺 > berries;
+勝 > victory;
+凭 > lean\-on;
+務 > affairs;
+苗 > sprouts;
+碰 > collide;
+苑 > pasture;
+仿 > imitate;
+機 > machine;
+栏 > railing;
+騙 > swindle;
+刈 > cut\-off;
+狠 > vicious;
+映 > project;
+截 > cut\-off;
+忠 > loyalty;
+扎 > pull\-up;
+腹 > stomach;
+極 > extreme;
+舒 > open\-up;
+骗 > swindle;
+凶 > culprit;
+慰 > comfort;
+餘 > surplus;
+撒 > release;
+愁 > anxiety;
+斤 > a\-catty;
+僑 > sojourn;
+扶 > support;
+毁 > destroy;
+辩 > dispute;
+胃 > stomach;
+械 > weapons;
+蒋 > surname;
+備 > prepare;
+违 > disobey;
+丢 > discard;
+肆 > indulge;
+傻 > foolish;
+绕 > entwine;
+聳 > urge\-on;
+涂 > surname;
+舰 > warship;
+恼 > angered;
+辣 > peppery;
+倚 > rely\-on;
+預 > prepare;
+旋 > revolve;
+倉 > granary;
+辽 > distant;
+罚 > penalty;
+拾 > pick\-up;
+恢 > restore;
+翁 > old\-man;
+羽 > feather;
+抖 > tremble;
+览 > look\-at;
+侯 > marquis;
+惑 > confuse;
+併 > combine;
+罰 > penalty;
+雕 > engrave;
+厌 > dislike;
+寿 > old\-age;
+跌 > stumble;
+锦 > brocade;
+杏 > apricot;
+黎 > surname;
+慌 > nervous;
+屠 > butcher;
+柏 > cypress;
+霍 > quickly;
+陶 > pottery;
+摄 > take\-in;
+旨 > purpose;
+闯 > rush\-in;
+冯 > surname;
+扰 > disturb;
+雀 > sparrow;
+娜 > elegant;
+暮 > evening;
+阁 > chamber;
+卢 > cottage;
+吞 > swallow;
+柜 > cabinet;
+暇 > leisure;
+愧 > ashamed;
+晶 > crystal;
+繞 > entwine;
+晝 > daytime;
+筋 > muscles;
+總 > collect;
+昼 > daytime;
+咨 > inquire;
+撑 > prop\-up;
+逆 > disobey;
+填 > fill\-in;
+旺 > prosper;
+緬 > distant;
+谨 > prudent;
+渴 > thirsty;
+疏 > neglect;
+耗 > consume;
+総 > collect;
+閲 > examine;
+钦 > respect;
+閣 > chamber;
+晋 > advance;
+悦 > pleased;
+斑 > mottled;
+践 > trample;
+贾 > surname;
+渔 > to\-fish;
+蔡 > surname;
+惶 > fearful;
+簾 > a\-blind;
+贩 > peddler;
+戈 > halberd;
+鐐 > fetters;
+揚 > scatter;
+虹 > rainbow;
+範 > pattern;
+寡 > widowed;
+吕 > surname;
+郊 > suburbs;
+徽 > a\-badge;
+谭 > surname;
+捨 > discard;
+鲍 > abalone;
+仓 > granary;
+錦 > brocade;
+笄 > hairpin;
+沾 > moisten;
+競 > contend;
+俞 > surname;
+瞒 > deceive;
+竃 > furnace;
+侨 > sojourn;
+恳 > sincere;
+抒 > express;
+姜 > surname;
+扱 > collect;
+稽 > examine;
+裔 > progeny;
+睹 > look\-at;
+匪 > bandits;
+潘 > surname;
+憑 > lean\-on;
+榜 > placard;
+枉 > useless;
+缅 > distant;
+慥 > sincere;
+骇 > terrify;
+慇 > careful;
+笨 > foolish;
+耸 > urge\-on;
+踩 > step\-on;
+郷 > country;
+惱 > angered;
+悸 > fearful;
+撰 > compose;
+惭 > ashamed;
+垃 > garbage;
+驼 > a\-camel;
+遠 > distant;
+違 > disobey;
+遑 > leisure;
+圾 > garbage;
+豹 > leopard;
+缴 > deliver;
+哨 > whistle;
+進 > advance;
+嚼 > prattle;
+昧 > obscure;
+拢 > collect;
+旱 > drought;
+诡 > deceive;
+搅 > disturb;
+聂 > whisper;
+莽 > thicket;
+馀 > surplus;
+怡 > harmony;
+厮 > servant;
+茨 > caltrop;
+粘 > viscous;
+摧 > destroy;
+朽 > decayed;
+娴 > elegant;
+焕 > shining;
+豁 > open\-up;
+詹 > surname;
+熄 > put\-out;
+逾 > go\-over;
+妒 > jealous;
+邱 > surname;
+醋 > vinegar;
+斌 > refined;
+寇 > bandits;
+屯 > village;
+恕 > forgive;
+沦 > be\-lost;
+岱 > daishan;
+撇 > discard;
+讳 > conceal;
+淌 > trickle;
+岔 > diverge;
+倏 > hastily;
+霓 > rainbow;
+垒 > rampart;
+邵 > surname;
+兢 > fearful;
+赦 > forgive;
+彦 > elegant;
+翘 > turn\-up;
+挚 > sincere;
+郝 > surname;
+觑 > peep\-at;
+拎 > to\-haul;
+噜 > verbose;
+阐 > explain;
+扒 > scratch;
+凹 > concave;
+撩 > lift\-up;
+挠 > scratch;
+崽 > a\-child;
+廖 > surname;
+矫 > correct;
+涅 > blacken;
+橱 > cabinet;
+哆 > tremble;
+蹬 > step\-on;
+恃 > rely\-on;
+拗 > to\-pull;
+剿 > destroy;
+簌 > falling;
+诛 > execute;
+掳 > capture;
+幌 > curtain;
+窒 > stop\-up;
+雍 > harmony;
+馅 > filling;
+瞿 > surname;
+硅 > silicon;
+瘩 > pimples;
+渥 > moisten;
+邢 > surname;
+蹋 > step\-on;
+抨 > impeach;
+擎 > lift\-up;
+憨 > foolish;
+肾 > kidneys;
+锭 > spindle;
+窦 > surname;
+谛 > careful;
+恙 > illness;
+茬 > harvest;
+蛐 > cricket;
+镣 > fetters;
+沥 > trickle;
+谤 > slander;
+钳 > pincers;
+睽 > staring;
+阱 > pitfall;
+姗 > slander;
+跤 > stumble;
+汀 > sandbar;
+秤 > balance;
+晾 > air\-dry;
+霹 > thunder;
+跚 > stagger;
+踹 > trample;
+莞 > smiling;
+鸥 > seagull;
+葆 > reserve;
+氢 > ammonia;
+帧 > picture;
+泯 > destroy;
+匡 > correct;
+佯 > pretend;
+暧 > obscure;
+烬 > cinders;
+蚌 > oysters;
+贻 > give\-to;
+谆 > patient;
+哝 > whisper;
+裴 > surname;
+诽 > slander;
+癞 > leprosy;
+啄 > to\-peck;
+拄 > lean\-on;
+翎 > feather;
+燎 > to\-burn;
+迳 > pass\-by;
+斡 > revolve;
+恸 > sadness;
+啬 > miserly;
+忑 > fearful;
+咂 > to\-suck;
+盹 > to\-doze;
+俾 > so\-that;
+簪 > hairpin;
+赈 > relieve;
+诠 > explain;
+谚 > proverb;
+掸 > to\-dust;
+匮 > to\-lack;
+幡 > pennant;
+讹 > swindle;
+囱 > chimney;
+崂 > laoshan;
+娄 > surname;
+叟 > old\-man;
+蝌 > tadpole;
+蚪 > tadpole;
+氨 > ammonia;
+铀 > uranium;
+挛 > tangled;
+诋 > slander;
+绯 > scarlet;
+攸 > distant;
+鸨 > bustard;
+蜗 > a\-snail;
+谩 > deceive;
+恫 > in\-pain;
+谀 > flatter;
+踮 > tip\-toe;
+馊 > spoiled;
+睇 > look\-at;
+钙 > calcium;
+捱 > put\-off;
+蒿 > mugwort;
+酶 > enzymes;
+涣 > scatter;
+杳 > obscure;
+衢 > highway;
+赡 > support;
+磺 > sulphur;
+蹶 > stumble;
+谄 > flatter;
+蹩 > to\-limp;
+翟 > surname;
+浣 > to\-wash;
+疹 > measles;
+窈 > obscure;
+幔 > curtain;
+靥 > dimples;
+掇 > collect;
+愆 > a\-fault;
+鸵 > ostrich;
+祗 > respect;
+佘 > surname;
+窕 > slender;
+迩 > be\-near;
+佰 > hundred;
+邰 > surname;
+邝 > surname;
+钹 > cymbals;
+伉 > compare;
+靼 > tartars;
+煲 > to\-heat;
+獐 > roebuck;
+佝 > rickets;
+蓟 > circium;
+黜 > dismiss;
+谲 > cunning;
+摈 > exclude;
+飓 > cyclone;
+谗 > slander;
+胱 > bladder;
+饽 > ferrule;
+诳 > deceive;
+馏 > distill;
+苯 > benzene;
+淼 > a\-flood;
+桎 > fetters;
+罄 > exhaust;
+荀 > surname;
+铱 > iridium;
+葩 > flowers;
+逡 > retreat;
+逶 > winding;
+宥 > forgive;
+萸 > dogwood;
+挝 > to\-beat;
+钿 > hairpin;
+熵 > entropy;
+煨 > to\-stew;
+砒 > arsenic;
+晁 > morning;
+谘 > consult;
+凇 > dewdrop;
+噘 > pouting;
+唣 > chatter;
+骠 > charger;
+撷 > pick\-up;
+怄 > annoyed;
+锂 > lithium;
+疥 > scabies;
+稗 > darnels;
+洮 > cleanse;
+悭 > miserly;
+酮 > ketones;
+腚 > buttock;
+逑 > collect;
+腱 > tendons;
+馔 > to\-feed;
+搠 > to\-daub;
+茱 > dogwood;
+砷 > arsenic;
+酡 > flushed;
+疴 > illness;
+戗 > support;
+呒 > unclear;
+谌 > sincere;
+痧 > cholera;
+恂 > careful;
+笤 > a\-broom;
+韫 > secrete;
+怛 > grieved;
+怙 > rely\-on;
+皴 > chapped;
+衤 > clothes;
+廪 > granary;
+庾 > granary;
+挢 > correct;
+睢 > gaze\-at;
+塬 > plateau;
+螯 > nippers;
+獒 > mastiff;
+沆 > a\-ferry;
+帔 > a\-skirt;
+擢 > pull\-up;
+薅 > to\-weed;
+莴 > lettuce;
+羼 > confuse;
+捭 > to\-open;
+葭 > bulrush;
+倥 > boorish;
+溴 > bromine;
+廛 > a\-store;
+揸 > handful;
+仵 > similar;
+髋 > hipbone;
+肱 > forearm;
+厶 > private;
+蚍 > mussels;
+哙 > swallow;
+镓 > gallium;
+铋 > bismuth;
+胝 > callous;
+悃 > sincere;
+矽 > silicon;
+赍 > present;
+翥 > to\-soar;
+蜞 > grapsus;
+蛩 > cricket;
+谠 > counsel;
+鳕 > codfish;
+跆 > trample;
+矬 > a\-dwarf;
+歙 > to\-suck;
+顼 > grieved;
+溲 > urinate;
+蕻 > budding;
+刳 > cut\-out;
+鹈 > pelican;
+铙 > cymbals;
+椟 > cabinet;
+镉 > cadmium;
+嫘 > surname;
+謇 > stutter;
+憷 > painful;
+摭 > pick\-up;
+谡 > rise\-up;
+褊 > cramped;
+鹕 > pelican;
+镲 > cymbals;
+钍 > thorium;
+氪 > krypton;
+迮 > to\-rise;
+忉 > grieved;
+蓍 > milfoil;
+踬 > stumble;
+醯 > vinegar;
+螽 > katydid;
+荑 > sprouts;
+郓 > surname;
+剀 > sharpen;
+蹀 > to\-skip;
+锎 > caesium;
+钇 > yttrium;
+氚 > tritium;
+犸 > mammoth;
+菸 > to\-fade;
+厍 > surname;
+鲱 > herring;
+貊 > leopard;
+躞 > to\-walk;
+蛴 > maggots;
+锾 > measure;
+铌 > niobium;
+畀 > to\-give;
+遘 > to\-meet;
+泷 > raining;
+蒡 > burdock;
+诼 > slander;
+髌 > kneecap;
+鳙 > bighead;
+鳘 > codfish;
+鳆 > abalone;
+絷 > confine;
+箦 > bed\-mat;
+瘘 > fistula;
+鸸 > swallow;
+镄 > fermium;
+恧 > ashamed;
+祆 > ormazda;
+嫠 > a\-widow;
+搴 > extract;
+廒 > granary;
+郄 > surname;
+诜 > inquire;
+僦 > to\-heir;
+龡 > to\-blow;
+齰 > to\-bite;
+齩 > to\-chew;
+齚 > to\-chew;
+鼷 > a\-mouse;
+麞 > roebuck;
+鸑 > a\-large;
+鷟 > phoenix;
+鷗 > seagull;
+鷖 > seagull;
+鶺 > wagtail;
+鶹 > the\-owl;
+鶦 > pelican;
+鶘 > pelican;
+鵮 > to\-peck;
+鵜 > pelican;
+鴯 > swallow;
+鴫 > a\-snipe;
+鴕 > ostrich;
+鴎 > seagull;
+鴇 > bustard;
+鳦 > swallow;
+鲚 > anchovy;
+鱭 > anchovy;
+鱨 > codfish;
+鱄 > anchovy;
+鰽 > herring;
+鰵 > codfish;
+鰮 > sardine;
+鰛 > sardine;
+鰒 > abalone;
+鯷 > anchovy;
+鯡 > herring;
+鮑 > abalone;
+魜 > mermaid;
+鬧 > quarrel;
+髖 > hipbone;
+髕 > kneecap;
+骫 > be\-bent;
+骉 > running;
+驙 > \(horse\);
+驒 > dappled;
+驃 > charger;
+騨 > dappled;
+駭 > terrify;
+駝 > a\-camel;
+駋 > \(horse\);
+馮 > surname;
+饐 > spoiled;
+餿 > spoiled;
+餾 > distill;
+餵 > to\-feed;
+餲 > spoiled;
+餑 > ferrule;
+飤 > to\-feed;
+颶 > cyclone;
+颳 > to\-blow;
+颫 > a\-storm;
+頙 > correct;
+頊 > grieved;
+韣 > bow\-bag;
+韅 > harness;
+靨 > dimples;
+霅 > thunder;
+雟 > sparrow;
+雚 > a\-heron;
+陾 > in\-file;
+陳 > exhibit;
+陞 > promote;
+阧 > sloping;
+闡 > explain;
+闖 > rush\-in;
+閱 > examine;
+閙 > quarrel;
+閈 > village;
+镦 > ferrule;
+铽 > terbium;
+铼 > rhenium;
+铪 > hafnium;
+铥 > thulium;
+铑 > rhodium;
+钬 > holmium;
+鐨 > fermium;
+鐓 > ferrule;
+鐃 > cymbals;
+鎵 > gallium;
+鎘 > cadmium;
+鍰 > measure;
+錸 > rhenium;
+錶 > a\-watch;
+錠 > spindle;
+錀 > \(metal\);
+鋱 > terbium;
+鋰 > lithium;
+鋕 > engrave;
+鋊 > a\-poker;
+鋂 > bit\-cup;
+銩 > thulium;
+銥 > iridium;
+鉿 > hafnium;
+鉷 > trigger;
+鉲 > cadmium;
+鉗 > pincers;
+鉍 > bismuth;
+鈿 > hairpin;
+鈾 > uranium;
+鈸 > cymbals;
+鈮 > niobium;
+鈥 > holmium;
+鈣 > calcium;
+釸 > silicon;
+釷 > thorium;
+釱 > fetters;
+釔 > yttrium;
+酇 > collect;
+鄺 > surname;
+鄧 > surname;
+鄕 > country;
+鄉 > country;
+鄆 > surname;
+郉 > surname;
+邨 > village;
+邇 > be\-near;
+遼 > distant;
+遶 > entwine;
+遯 > deceive;
+逺 > distant;
+逷 > distant;
+逕 > pass\-by;
+逈 > distant;
+迴 > revolve;
+轷 > surname;
+轒 > chariot;
+輽 > vehicle;
+軲 > a\-wheel;
+軘 > war\-car;
+躦 > to\-jump;
+躠 > to\-limp;
+躝 > to\-pass;
+躘 > to\-walk;
+躄 > cripple;
+躂 > stumble;
+蹡 > to\-limp;
+踫 > collide;
+踐 > trample;
+踈 > neglect;
+跴 > step\-on;
+跬 > to\-step;
+跕 > shuffle;
+趷 > to\-jolt;
+趙 > surname;
+趒 > to\-jump;
+贍 > support;
+贇 > affable;
+贃 > to\-earn;
+賫 > present;
+賝 > preious;
+賈 > surname;
+貽 > give\-to;
+販 > peddler;
+豗 > clamour;
+谫 > shallow;
+诹 > consult;
+讟 > slander;
+讜 > counsel;
+讒 > slander;
+讌 > a\-feast;
+讇 > flatter;
+譾 > shallow;
+譸 > deceive;
+譚 > surname;
+譎 > cunning;
+譈 > dislike;
+謾 > deceive;
+謷 > slander;
+謳 > to\-sing;
+謭 > shallow;
+謟 > flatter;
+謗 > slander;
+謖 > rise\-up;
+謌 > slander;
+謆 > beguile;
+諾 > promise;
+諺 > proverb;
+諶 > sincere;
+諱 > conceal;
+諮 > consult;
+諛 > flatter;
+諚 > command;
+諑 > slander;
+諏 > consult;
+諄 > patient;
+諂 > flatter;
+誹 > slander;
+誑 > deceive;
+誅 > execute;
+詾 > noisily;
+詵 > inquire;
+詭 > deceive;
+詫 > to\-brag;
+詆 > slander;
+詅 > to\-sell;
+註 > explain;
+訬 > clamour;
+訩 > noisily;
+訦 > sincere;
+訢 > pleased;
+訑 > deceive;
+觡 > antlers;
+覷 > peep\-at;
+覥 > ashamed;
+覜 > mission;
+襜 > flutter;
+襃 > commend;
+褽 > cushion;
+褔 > complex;
+裵 > surname;
+裒 > collect;
+袽 > clothes;
+袺 > hold\-up;
+袪 > sleeves;
+衵 > chemise;
+蠐 > maggots;
+螮 > rainbow;
+蝸 > a\-snail;
+蝃 > rainbow;
+蝀 > rainbow;
+蜫 > insects;
+蚫 > abalone;
+蚑 > tip\-toe;
+虆 > entwine;
+蘊 > collect;
+藴 > collect;
+藙 > dogwood;
+薽 > \(grass\);
+薶 > to\-bury;
+薓 > ginseng;
+薐 > spinach;
+薊 > circium;
+蕝 > handful;
+蔿 > surname;
+蔣 > surname;
+蔘 > ginseng;
+蓌 > pretend;
+蒐 > collect;
+葠 > ginseng;
+葊 > cottage;
+萵 > lettuce;
+菪 > henbane;
+菧 > stibene;
+莊 > village;
+莀 > to\-farm;
+荘 > village;
+茷 > flutter;
+茠 > to\-weed;
+苽 > bulrush;
+苅 > cut\-off;
+艦 > warship;
+舓 > to\-lick;
+臝 > be\-bare;
+腖 > peptone;
+腎 > kidneys;
+脝 > distend;
+聶 > whisper;
+聯 > connect;
+聮 > connect;
+聫 > connect;
+聨 > connect;
+耉 > old\-age;
+耈 > old\-age;
+翹 > turn\-up;
+翪 > flutter;
+羐 > to\-lead;
+罸 > penalty;
+罖 > kwukyel;
+缻 > pottery;
+缲 > to\-reel;
+繳 > deliver;
+縶 > confine;
+縂 > collect;
+緋 > scarlet;
+緁 > to\-join;
+絪 > matting;
+粂 > surname;
+籛 > surname;
+籑 > to\-feed;
+簀 > bed\-mat;
+笰 > curtain;
+笓 > to\-comb;
+竸 > contend;
+竒 > strange;
+竈 > furnace;
+竇 > surname;
+窀 > to\-bury;
+穫 > harvest;
+稊 > darnels;
+稇 > to\-bind;
+秐 > to\-weed;
+禢 > surname;
+禂 > to\-pray;
+礵 > arsenic;
+磇 > arsenic;
+碃 > \(stone\);
+矱 > measure;
+矯 > correct;
+矟 > ''\-lance;
+瞯 > to\-peep;
+瞞 > deceive;
+眽 > to\-gaze;
+眴 > dazzled;
+眎 > look\-at;
+盧 > cottage;
+癩 > leprosy;
+癨 > quickly;
+瘻 > fistula;
+瘝 > illness;
+畐 > to\-fill;
+甔 > big\-jar;
+瓛 > scaptre;
+璺 > a\-crack;
+璊 > reddish;
+琱 > engrave;
+玧 > reddish;
+獹 > a\-hound;
+獚 > spaniel;
+狉 > fox\-cub;
+犆 > special;
+牮 > prop\-up;
+燼 > cinders;
+熻 > to\-heat;
+熸 > put\-out;
+熯 > by\-fire;
+煻 > to\-warm;
+煥 > shining;
+烉 > shining;
+灴 > to\-bake;
+瀹 > to\-boil;
+瀧 > raining;
+澣 > cleanse;
+澐 > billows;
+潬 > a\-rapid;
+溦 > drizzle;
+渼 > ripples;
+渧 > to\-drop;
+渙 > scatter;
+淪 > be\-lost;
+涶 > to\-spit;
+涒 > meander;
+洸 > sparkle;
+沄 > billows;
+汋 > to\-pour;
+氼 > to\-sink;
+氕 > protium;
+毚 > cunning;
+毀 > destroy;
+歺 > vicious;
+歜 > furious;
+欽 > respect;
+欄 > railing;
+櫥 > cabinet;
+櫝 > cabinet;
+橆 > without;
+榢 > a\-frame;
+椗 > \(plant\);
+棸 > surname;
+栢 > cypress;
+枼 > a\-table;
+枓 > capital;
+杸 > to\-kill;
+杶 > varnish;
+朾 > to\-bump;
+朰 > kwukyel;
+朢 > look\-at;
+朊 > protein;
+曽 > already;
+曖 > obscure;
+晉 > advance;
+旣 > already;
+斿 > to\-swim;
+斮 > cut\-off;
+斠 > measure;
+斁 > dislike;
+敾 > to\-rule;
+敯 > to\-defy;
+敭 > scatter;
+敜 > fill\-up;
+敘 > express;
+敍 > express;
+攷 > examine;
+攪 > disturb;
+攣 > tangled;
+攝 > take\-in;
+攏 > collect;
+擾 > disturb;
+擸 > to\-hold;
+擷 > pick\-up;
+擯 > exclude;
+擝 > to\-pull;
+擄 > capture;
+擁 > embrace;
+撾 > to\-beat;
+撹 > disturb;
+撴 > to\-jolt;
+撣 > to\-dust;
+撢 > to\-dust;
+撟 > correct;
+撓 > scratch;
+撐 > prop\-up;
+摯 > sincere;
+摠 > general;
+摂 > take\-in;
+搷 > to\-beat;
+搶 > plunder;
+掽 > collide;
+掯 > oppress;
+挍 > collate;
+拫 > to\-pull;
+抈 > to\-bend;
+扽 > to\-move;
+戧 > support;
+懰 > be\-glad;
+懫 > enraged;
+懤 > grieved;
+懛 > alarmed;
+懇 > sincere;
+懆 > anxious;
+懅 > bashful;
+憃 > foolish;
+慳 > miserly;
+慪 > annoyed;
+慟 > sadness;
+慚 > ashamed;
+慙 > ashamed;
+愐 > bashful;
+愊 > sincere;
+惷 > wriggle;
+惣 > overall;
+惖 > respect;
+惓 > careful;
+惇 > be\-kind;
+悩 > angered;
+悜 > obscure;
+悐 > respect;
+悅 > pleased;
+恠 > strange;
+恉 > meaning;
+怱 > hastily;
+彧 > refined;
+彥 > elegant;
+彚 > collect;
+彙 > collect;
+彆 > awkward;
+廩 > granary;
+廠 > factory;
+廝 > servant;
+廚 > kitchen;
+廌 > unicorn;
+廋 > conceal;
+庤 > prepare;
+幷 > combine;
+幫 > to\-help;
+幨 > curtain;
+幀 > picture;
+帿 > marquis;
+帲 > shelter;
+帡 > shelter;
+巿 > revolve;
+巇 > a\-crack;
+嶗 > laoshan;
+崋 > flowery;
+尟 > surname;
+寪 > surname;
+孅 > slender;
+嫻 > elegant;
+嫺 > refined;
+媿 > ashamed;
+媻 > to\-move;
+媞 > at\-ease;
+婬 > obscene;
+婁 > surname;
+姍 > slander;
+奛 > opening;
+夣 > a\-dream;
+壽 > old\-age;
+壭 > kwukyel;
+壝 > a\-mound;
+壘 > rampart;
+壔 > a\-mound;
+塽 > plateau;
+塡 > fill\-in;
+塓 > plaster;
+塁 > rampart;
+堄 > parapet;
+埗 > a\-wharf;
+圗 > diagram;
+圕 > library;
+圂 > pig\-sty;
+囪 > chimney;
+嚥 > swallow;
+嚕 > verbose;
+嚊 > to\-pant;
+噲 > swallow;
+噥 > whisper;
+嘸 > unclear;
+嗹 > chatter;
+喾 > emperor;
+喥 > a\-place;
+啱 > correct;
+唞 > to\-gasp;
+唅 > a\-sound;
+咾 > a\-noise;
+咊 > harmony;
+咉 > an\-echo;
+呿 > to\-yawn;
+呬 > to\-rest;
+呫 > whisper;
+呌 > to\-call;
+叜 > old\-man;
+厼 > kwukyel;
+厰 > factory;
+厫 > granary;
+厙 > surname;
+卲 > eminent;
+卪 > kwukyel;
+卆 > soldier;
+匽 > to\-hide;
+匱 > to\-lack;
+匧 > a\-trunk;
+匋 > pottery;
+匊 > handful;
+勦 > destroy;
+劐 > destroy;
+劉 > surname;
+剴 > sharpen;
+凊 > surname;
+冦 > bandits;
+兯 > kwukyel;
+兪 > surname;
+兂 > hairpin;
+儶 > valiant;
+儦 > milling;
+儤 > on\-duty;
+儓 > servant;
+儍 > foolish;
+僯 > ashamed;
+僤 > sincere;
+僎 > collect;
+傼 > surname;
+傚 > imitate;
+傔 > servant;
+傁 > old\-man;
+偹 > prepare;
+倣 > imitate;
+倝 > sunrise;
+倐 > hastily;
+倂 > combine;
+侴 > surname;
+侇 > a\-class;
+侅 > to\-give;
+佉 > surname;
+伈 > nervous;
+伀 > excited;
+仒 > kwukyel;
+亽 > kwukyel;
+亷 > upright;
+亶 > sincere;
+亪 > kwukyel;
+亗 > harvest;
+乿 > to\-cure;
+乬 > to\-hang;
+乥 > kwukyel;
+乛 > kwukyel;
+乊 > kwukyel;
+乀 > stretch;
+丷 > kwukyel;
+丟 > discard;
+丏 > parapet;
+丆 > kwukyel;
+䶴 > to\-blow;
+䶩 > to\-gnaw;
+䶧 > to\-gnaw;
+䶢 > to\-gnaw;
+䶠 > to\-gnaw;
+䶞 > to\-gnaw;
+䶗 > to\-bite;
+䵼 > to\-boil;
+䴧 > venison;
+䴒 > wagtail;
+䳭 > wagtail;
+䲬 > chicken;
+䲣 > to\-fish;
+䲝 > pomfret;
+䲔 > a\-whale;
+䱷 > to\-fish;
+䱉 > the\-eel;
+䱇 > the\-eel;
+䰯 > to\-fear;
+䰞 > to\-cook;
+䰁 > to\-meet;
+䮼 > piebald;
+䮻 > to\-pray;
+䮦 > untamed;
+䭮 > jewelry;
+䭤 > to\-chew;
+䭠 > a\-snack;
+䬡 > to\-soar;
+䬝 > a\-storm;
+䬖 > a\-storm;
+䬎 > hot\-air;
+䫸 > to\-blow;
+䫘 > healthy;
+䫒 > disease;
+䪣 > smashed;
+䪢 > smashed;
+䩳 > tanning;
+䩟 > leather;
+䩔 > the\-hem;
+䨨 > thunder;
+䨞 > to\-rain;
+䨛 > to\-rain;
+䨚 > to\-rain;
+䨓 > thunder;
+䨂 > a\-chick;
+䧰 > a\-mound;
+䧟 > to\-skin;
+䧍 > a\-crack;
+䦭 > to\-open;
+䦋 > to\-grow;
+䥰 > to\-melt;
+䥮 > to\-beat;
+䥊 > refined;
+䤟 > a\-spade;
+䤘 > vinegar;
+䤕 > vinegar;
+䤈 > vinegar;
+䣷 > to\-pour;
+䢶 > a\-state;
+䢰 > to\-jump;
+䢬 > to\-move;
+䢣 > distant;
+䢢 > to\-pass;
+䢠 > to\-send;
+䢙 > to\-ruin;
+䢒 > to\-meet;
+䢌 > to\-walk;
+䠼 > to\-wear;
+䠳 > to\-walk;
+䠥 > to\-limp;
+䠜 > to\-walk;
+䠛 > to\-jump;
+䠓 > to\-walk;
+䠄 > to\-walk;
+䟾 > to\-jump;
+䟷 > to\-jump;
+䟰 > to\-walk;
+䟭 > to\-jump;
+䟬 > to\-walk;
+䟦 > to\-walk;
+䟐 > to\-walk;
+䟏 > to\-jump;
+䟍 > to\-walk;
+䟉 > to\-walk;
+䟈 > to\-walk;
+䟇 > to\-walk;
+䟀 > to\-walk;
+䞻 > to\-walk;
+䞺 > to\-walk;
+䞹 > to\-walk;
+䞵 > to\-jump;
+䞴 > to\-jump;
+䞯 > to\-walk;
+䞫 > to\-walk;
+䞥 > to\-walk;
+䞤 > to\-walk;
+䞢 > to\-walk;
+䞡 > to\-walk;
+䞠 > to\-walk;
+䞞 > to\-walk;
+䝻 > to\-sell;
+䝮 > to\-brag;
+䝧 > capital;
+䜖 > to\-talk;
+䜉 > to\-jest;
+䛿 > cunning;
+䛺 > to\-warn;
+䛷 > to\-obey;
+䛰 > sketchy;
+䛢 > cunning;
+䛝 > to\-like;
+䛛 > courage;
+䚼 > ashamed;
+䚻 > to\-sing;
+䚱 > honesty;
+䚮 > thicker;
+䚗 > to\-lift;
+䚏 > to\-love;
+䙲 > to\-move;
+䙩 > clothes;
+䙙 > clothes;
+䙎 > sleeves;
+䙉 > clothes;
+䘷 > sleeves;
+䘶 > sleeves;
+䘱 > wealthy;
+䘮 > to\-lose;
+䘠 > greaves;
+䘝 > a\-shirt;
+䗲 > firefly;
+䗑 > firefly;
+䖵 > insects;
+䖝 > insects;
+䖚 > a\-tiger;
+䖘 > a\-tiger;
+䖕 > a\-tiger;
+䖄 > to\-burn;
+䕞 > henbane;
+䕑 > parsley;
+䔺 > heading;
+䔀 > parsley;
+䒶 > the\-sky;
+䒘 > parsley;
+䑧 > a\-short;
+䑛 > to\-lick;
+䐿 > gizzard;
+䐷 > paunchy;
+䐶 > to\-cook;
+䐴 > lumbago;
+䐫 > obesity;
+䐊 > insects;
+䏝 > sincere;
+䏖 > a\-wound;
+䏑 > to\-burn;
+䏇 > to\-hear;
+䏅 > to\-hear;
+䏃 > to\-hear;
+䎽 > to\-hear;
+䎻 > to\-hear;
+䎹 > to\-hear;
+䎸 > to\-hear;
+䎩 > to\-till;
+䎦 > to\-till;
+䎤 > to\-till;
+䎝 > to\-soar;
+䎌 > feather;
+䍶 > unicorn;
+䍳 > disease;
+䌘 > to\-knit;
+䌔 > to\-soak;
+䌁 > a\-pleat;
+䋎 > to\-mend;
+䊟 > adorned;
+䊘 > a\-grain;
+䊒 > refined;
+䊇 > to\-feed;
+䉵 > to\-feed;
+䉢 > a\-sieve;
+䉎 > a\-cover;
+䈬 > a\-small;
+䈪 > a\-small;
+䈥 > tendons;
+䈤 > pincers;
+䈒 > fragile;
+䈇 > a\-cover;
+䇔 > atrophy;
+䇍 > to\-wait;
+䆵 > an\-echo;
+䆨 > the\-sky;
+䅸 > a\-grain;
+䄤 > to\-sink;
+䄏 > bizarre;
+䃣 > to\-ruin;
+䂊 > weapons;
+䂉 > weapons;
+䂆 > weapons;
+䂀 > to\-wink;
+䁲 > to\-peep;
+䁪 > to\-wink;
+䁣 > to\-wink;
+䁛 > to\-look;
+䁒 > to\-wink;
+䀻 > to\-look;
+䀨 > to\-look;
+䀔 > to\-look;
+㿦 > to\-tell;
+㿒 > illness;
+㿑 > illness;
+㿍 > scabies;
+㾷 > to\-ache;
+㾬 > malaria;
+㾠 > a\-fever;
+㾟 > relapse;
+㾞 > illness;
+㾘 > ailment;
+㾖 > grieved;
+㾕 > a\-chill;
+㾓 > fatigue;
+㾒 > illness;
+㾏 > illness;
+㾇 > illness;
+㾆 > ecdysis;
+㾅 > defects;
+㾂 > illness;
+㽴 > illness;
+㽳 > illness;
+㽝 > to\-sink;
+㽖 > a\-human;
+㼼 > a\-ladle;
+㼷 > a\-basin;
+㼜 > a\-basin;
+㼗 > a\-brick;
+㻹 > a\-crack;
+㻃 > crooked;
+㺲 > buttons;
+㺗 > to\-bite;
+㺊 > a\-beast;
+㹾 > cunning;
+㹽 > to\-bite;
+㹞 > to\-bark;
+㹛 > a\-tamed;
+㸧 > to\-bite;
+㸐 > to\-burn;
+㸍 > to\-burn;
+㷻 > without;
+㷓 > a\-torch;
+㷊 > to\-burn;
+㷉 > to\-iron;
+㷅 > to\-cook;
+㶮 > to\-burn;
+㶫 > to\-burn;
+㶣 > to\-burn;
+㶗 > well\-up;
+㶓 > to\-sink;
+㶇 > a\-ferry;
+㵸 > to\-boil;
+㵴 > to\-sink;
+㵣 > thirsty;
+㵒 > boiling;
+㵌 > to\-flow;
+㵅 > a\-river;
+㴿 > boiling;
+㴉 > various;
+㴇 > to\-wade;
+㴅 > to\-melt;
+㳺 > to\-swim;
+㳭 > spittle;
+㳬 > an\-eddy;
+㳪 > a\-river;
+㳦 > a\-river;
+㳙 > a\-brook;
+㳅 > to\-flow;
+㳄 > spittle;
+㲺 > to\-wash;
+㲅 > to\-bind;
+㲂 > to\-push;
+㲁 > to\-beat;
+㲀 > to\-beat;
+㱮 > to\-open;
+㱖 > to\-stay;
+㱌 > to\-take;
+㱄 > to\-spit;
+㱀 > to\-bite;
+㰵 > to\-suck;
+㰕 > a\-ladle;
+㯻 > to\-bind;
+㯹 > to\-show;
+㯸 > a\-basin;
+㯓 > a\-couch;
+㯐 > tubular;
+㯋 > a\-chest;
+㮸 > to\-send;
+㮛 > a\-spoon;
+㭰 > to\-know;
+㭬 > to\-beat;
+㭪 > a\-shrub;
+㭌 > a\-basin;
+㭈 > a\-basin;
+㬼 > to\-have;
+㬝 > obscure;
+㬔 > to\-defy;
+㬃 > sunrise;
+㫴 > to\-roar;
+㫳 > morning;
+㫧 > violent;
+㫝 > the\-sun;
+㫙 > the\-sun;
+㫑 > purpose;
+㪼 > to\-pull;
+㪱 > elegant;
+㪯 > to\-lift;
+㪮 > to\-beat;
+㪨 > to\-mend;
+㪧 > to\-beat;
+㪦 > to\-beat;
+㪥 > to\-take;
+㪢 > to\-beat;
+㪠 > to\-peck;
+㪝 > to\-beat;
+㪗 > to\-open;
+㪕 > to\-beat;
+㪒 > to\-ruin;
+㪏 > to\-ruin;
+㪁 > to\-hold;
+㩶 > to\-hold;
+㩵 > to\-beat;
+㩳 > to\-hold;
+㩰 > to\-stab;
+㩯 > to\-move;
+㩬 > to\-beat;
+㩤 > to\-open;
+㩣 > to\-move;
+㩢 > to\-beat;
+㩕 > to\-haul;
+㩋 > to\-beat;
+㨷 > to\-wipe;
+㨰 > to\-turn;
+㨦 > to\-hold;
+㨤 > to\-wipe;
+諸 > several;
+羽 > feather;
+精 > essence;
+㨖 > to\-stab;
+㨏 > to\-beat;
+㨋 > to\-beat;
+降 > descend;
+暴 > violent;
+㨆 > to\-kill;
+㨂 > to\-beat;
+㧿 > to\-bump;
+㧻 > a\-thorn;
+㧫 > to\-hold;
+㧪 > to\-ruin;
+㧤 > to\-jump;
+㧣 > to\-stop;
+㧡 > to\-move;
+㧟 > to\-wipe;
+㧝 > to\-take;
+率 > to\-lead;
+㧜 > to\-hold;
+律 > statute;
+淪 > be\-lost;
+㧓 > to\-lead;
+㧒 > to\-beat;
+㧑 > to\-wave;
+㧐 > to\-hold;
+㧊 > to\-push;
+劉 > surname;
+㧈 > to\-pull;
+㧇 > to\-hold;
+遼 > distant;
+㧄 > to\-take;
+燎 > to\-burn;
+㦹 > a\-spear;
+㦵 > to\-kill;
+㦭 > to\-pity;
+㦬 > ashamed;
+令 > command;
+簾 > a\-blind;
+廉 > upright;
+㦞 > grieved;
+聯 > connect;
+㦕 > thought;
+黎 > surname;
+呂 > surname;
+量 > measure;
+㥽 > feeling;
+㥹 > to\-move;
+拾 > pick\-up;
+㥯 > careful;
+塞 > stop\-up;
+㥤 > to\-pity;
+率 > to\-lead;
+諾 > promise;
+㥕 > to\-pity;
+㥒 > corrupt;
+㥏 > bashful;
+㥌 > prudent;
+壘 > rampart;
+雷 > thunder;
+㥄 > to\-pity;
+㤿 > to\-love;
+㤽 > grieved;
+魯 > foolish;
+㤺 > blurred;
+虜 > capture;
+㤶 > confuse;
+盧 > cottage;
+擄 > capture;
+㤭 > untamed;
+㤠 > grieved;
+欄 > railing;
+癩 > leprosy;
+㤅 > to\-love;
+賈 > surname;
+㤃 > jealous;
+㤂 > anxious;
+㣷 > walking;
+㣶 > to\-walk;
+㣬 > to\-walk;
+㣜 > to\-walk;
+㣛 > walking;
+㣃 > to\-sell;
+㣂 > to\-bind;
+㢼 > awkward;
+㢣 > to\-lift;
+㢝 > cottage;
+㢕 > harmony;
+㡸 > a\-house;
+㡰 > a\-house;
+㡫 > anxious;
+㡨 > a\-label;
+㡘 > screens;
+㡓 > drawers;
+㡂 > remains;
+㠭 > to\-open;
+㟧 > a\-cliff;
+㞺 > a\-tribe;
+㞫 > to\-walk;
+㞧 > to\-meet;
+㞤 > to\-help;
+㞡 > to\-open;
+㞀 > to\-bump;
+㝼 > crooked;
+㝱 > a\-dream;
+㝢 > a\-house;
+㝀 > to\-like;
+㜾 > a\-child;
+㜩 > jealous;
+㜓 > womanly;
+㜉 > womanly;
+㜇 > unhappy;
+㛿 > cunning;
+㛻 > womanly;
+㛯 > to\-soar;
+㛕 > womanly;
+㚢 > a\-slave;
+㙔 > a\-fence;
+㙐 > to\-move;
+㙏 > caverns;
+㘸 > to\-bury;
+㘷 > mugwort;
+㘩 > to\-mate;
+㘗 > whisper;
+㘕 > to\-call;
+㘂 > ashamed;
+㘁 > to\-call;
+㗽 > an\-echo;
+㗲 > to\-call;
+㗱 > to\-suck;
+㗭 > a\-sound;
+㗤 > ashamed;
+㗍 > to\-gnaw;
+㗃 > the\-lip;
+㖿 > a\-sound;
+㖻 > whisper;
+㖺 > to\-blow;
+㖭 > to\-lick;
+㖥 > to\-spit;
+㕷 > to\-call;
+㕱 > to\-bark;
+㕮 > to\-chew;
+㕟 > to\-sign;
+㕞 > a\-brush;
+㕜 > history;
+㔿 > a\-tally;
+㔭 > a\-spoon;
+㔡 > greatly;
+㔂 > to\-pare;
+㓲 > to\-pare;
+㓰 > to\-rive;
+㓥 > to\-kill;
+㓟 > to\-peel;
+㓐 > to\-rain;
+㒼 > average;
+㒸 > to\-obey;
+㒴 > to\-come;
+㒦 > puppets;
+㒞 > valiant;
+㒕 > unyield;
+㒒 > a\-slave;
+㒑 > grow\-up;
+㒉 > alarmed;
+㑹 > to\-meet;
+㑐 > to\-move;
+㑅 > to\-make;
+㑃 > to\-pull;
+㐼 > to\-save;
+㐮 > to\-help;
+㐁 > to\-lick;
+是 > indeed;
+迫 > coerce;
+応 > should;
+忘 > forget;
+国 > nation;
+返 > return;
+忍 > endure;
+迄 > extend;
+必 > surely;
+出 > go\-out;
+辿 > follow;
+瞼 > eyelid;
+得 > obtain;
+辷 > smooth;
+徴 > summon;
+徳 > virtue;
+瞭 > bright;
+復 > return;
+辛 > bitter;
+徐 > slowly;
+後 > behind;
+徊 > linger;
+影 > shadow;
+事 > affair;
+轟 > rumble;
+彈 > pellet;
+主 > master;
+強 > strong;
+弛 > loosen;
+民 > people;
+県 > county;
+现 > appear;
+分 > divide;
+些 > little;
+相 > mutual;
+回 > return;
+理 > reason;
+明 > bright;
+益 > profit;
+话 > speech;
+向 > toward;
+定 > decide;
+庫 > armory;
+度 > degree;
+底 > bottom;
+打 > strike;
+位 > throne;
+序 > series;
+幼 > infant;
+干 > oppose;
+内 > inside;
+癪 > spasms;
+加 > add\-to;
+化 > change;
+癌 > cancer;
+常 > common;
+踰 > exceed;
+市 > market;
+帰 > return;
+才 > talent;
+住 > reside;
+员 > member;
+巻 > scroll;
+性 > nature;
+报 > report;
+神 > spirit;
+数 > number;
+跡 > search;
+原 > source;
+巡 > patrol;
+川 > stream;
+应 > should;
+越 > exceed;
+疊 > repeat;
+系 > system;
+畳 > repeat;
+赫 > bright;
+及 > extend;
+制 > system;
+畠 > garden;
+解 > loosen;
+记 > record;
+林 > forest;
+贔 > strong;
+统 > govern;
+字 > letter;
+島 > island;
+質 > matter;
+论 > debate;
+貰 > borrow;
+指 > finger;
+財 > wealth;
+花 > flower;
+層 > storey;
+条 > clause;
+变 > change;
+该 > should;
+屍 > corpse;
+传 > summon;
+治 > govern;
+决 > decide;
+局 > bureau;
+办 > manage;
+谷 > valley;
+城 > castle;
+父 > father;
+强 > strong;
+導 > direct;
+封 > letter;
+現 > appear;
+寧 > repose;
+黄 > yellow;
+德 > ethics;
+害 > injure;
+宮 > palace;
+找 > search;
+友 > friend;
+變 > change;
+改 > change;
+守 > defend;
+讃 > praise;
+际 > border;
+单 > single;
+导 > direct;
+獲 > obtain;
+孤 > orphan;
+校 > school;
+獄 > prison;
+猾 > crafty;
+謙 > humble;
+謎 > riddle;
+随 > follow;
+狹 > narrow;
+狭 > narrow;
+母 > mother;
+狙 > an\-ape;
+論 > debate;
+团 > sphere;
+狂 > insane;
+課 > lesson;
+苦 > bitter;
+招 > beckon;
+兴 > thrive;
+該 > should;
+约 > treaty;
+話 > speech;
+詩 > poetry;
+牢 > prison;
+绝 > to\-cut;
+选 > choose;
+复 > return;
+星 > a\-star;
+爺 > father;
+訴 > accuse;
+訟 > accuse;
+妈 > mother;
+爛 > rotten;
+記 > record;
+消 > vanish;
+娘 > mother;
+燭 > candle;
+姫 > beauty;
+杨 > willow;
+易 > change;
+严 > strict;
+熊 > a\-bear;
+妄 > absurd;
+纪 > record;
+苏 > revive;
+答 > answer;
+奮 > strive;
+煩 > bother;
+襤 > ragged;
+击 > strike;
+朋 > friend;
+供 > supply;
+央 > center;
+列 > a\-line;
+焦 > burned;
+爷 > father;
+龙 > dragon;
+褒 > praise;
+夏 > summer;
+変 > change;
+春 > spring;
+複 > repeat;
+灵 > spirit;
+裡 > inside;
+诉 > accuse;
+态 > manner;
+裏 > inside;
+质 > matter;
+袖 > sleeve;
+园 > garden;
+袋 > pocket;
+副 > assist;
+够 > enough;
+获 > obtain;
+诗 > poetry;
+街 > street;
+報 > report;
+激 > arouse;
+银 > silver;
+阵 > column;
+层 > storey;
+亮 > bright;
+简 > simple;
+毒 > poison;
+归 > return;
+换 > change;
+湖 > a\-lake;
+蝉 > cicada;
+追 > pursue;
+鼬 > weasel;
+络 > enmesh;
+漠 > desert;
+蜘 > spider;
+團 > sphere;
+占 > divine;
+圓 > circle;
+園 > garden;
+赶 > pursue;
+兰 > orchid;
+國 > nation;
+圃 > garden;
+源 > spring;
+団 > sphere;
+阶 > stairs;
+蛛 > spider;
+黙 > silent;
+伸 > extend;
+默 > silent;
+佛 > buddha;
+嚴 > strict;
+挥 > direct;
+效 > result;
+攻 > attack;
+策 > scheme;
+防 > defend;
+股 > thighs;
+蘭 > orchid;
+莫 > do\-not;
+嘘 > exhale;
+县 > county;
+蘇 > revive;
+窗 > window;
+添 > append;
+混 > to\-mix;
+鷲 > condor;
+博 > gamble;
+弹 > pellet;
+藤 > rattan;
+坏 > rotten;
+智 > wisdom;
+岛 > island;
+抗 > resist;
+喰 > to\-eat;
+單 > single;
+爹 > father;
+喧 > lively;
+喉 > throat;
+爸 > father;
+浚 > dredge;
+逃 > escape;
+骂 > accuse;
+唸 > recite;
+靖 > pacify;
+秘 > secret;
+财 > wealth;
+欲 > desire;
+征 > invade;
+秋 > autumn;
+吸 > inhale;
+鳩 > pigeon;
+員 > member;
+悲 > sorrow;
+泉 > spring;
+桥 > bridge;
+劲 > strong;
+咽 > throat;
+蒻 > rushes;
+库 > armory;
+借 > borrow;
+決 > decide;
+董 > direct;
+葡 > grapes;
+汚 > filthy;
+控 > accuse;
+胸 > breast;
+课 > lesson;
+邮 > postal;
+吝 > stingy;
+横 > across;
+健 > strong;
+萎 > wither;
+萄 > grapes;
+圆 > circle;
+卷 > scroll;
+菫 > celery;
+择 > select;
+恨 > hatred;
+竹 > bamboo;
+菓 > fruits;
+宫 > palace;
+旗 > banner;
+殻 > casing;
+厳 > strict;
+殘 > injure;
+残 > injure;
+歸 > return;
+稳 > stable;
+迹 > traces;
+针 > needle;
+替 > change;
+卑 > humble;
+悄 > silent;
+奋 > strive;
+櫻 > cherry;
+弃 > reject;
+烦 > bother;
+抵 > resist;
+码 > number;
+励 > strive;
+紫 > purple;
+拔 > uproot;
+芝 > sesame;
+梁 > bridge;
+赏 > reward;
+劃 > divide;
+插 > insert;
+驢 > donkey;
+冬 > winter;
+扩 > expand;
+橘 > orange;
+橋 > bridge;
+逼 > compel;
+騷 > harass;
+刹 > temple;
+镜 > mirror;
+污 > filthy;
+標 > a\-mark;
+狱 > prison;
+騒 > harass;
+舌 > tongue;
+森 > forest;
+興 > thrive;
+槽 > trough;
+怨 > hatred;
+臼 > mortar;
+伏 > crouch;
+愤 > resent;
+俄 > sudden;
+凍 > freeze;
+槌 > hammer;
+稍 > little;
+籍 > record;
+侵 > invade;
+阻 > impede;
+慧 > bright;
+饑 > starve;
+晃 > bright;
+腑 > bowels;
+烂 > rotten;
+兎 > rabbit;
+腋 > armpit;
+尸 > corpse;
+椿 > father;
+儘 > utmost;
+崇 > esteem;
+餓 > hungry;
+椎 > hammer;
+棺 > coffin;
+粉 > powder;
+盾 > shield;
+飢 > hunger;
+轰 > rumble;
+奸 > crafty;
+邦 > nation;
+棄 > reject;
+饿 > hungry;
+捕 > arrest;
+傳 > summon;
+梯 > ladder;
+挣 > strive;
+聘 > engage;
+條 > clause;
+耐 > endure;
+梃 > a\-club;
+顫 > shiver;
+桜 > cherry;
+闷 > gloomy;
+願 > desire;
+悔 > repent;
+邀 > invite;
+颤 > shiver;
+頬 > cheeks;
+頤 > cheeks;
+患 > suffer;
+丐 > beggar;
+柱 > pillar;
+柚 > pomelo;
+翌 > bright;
+柄 > handle;
+侮 > insult;
+铜 > copper;
+枕 > pillow;
+罹 > sorrow;
+罵 > accuse;
+杵 > pestle;
+敲 > strike;
+靡 > divide;
+扯 > rip\-up;
+鉴 > mirror;
+趋 > hasten;
+佐 > assist;
+逊 > humble;
+靈 > spirit;
+朴 > simple;
+札 > letter;
+伝 > summon;
+伎 > talent;
+串 > string;
+霊 > spirit;
+雲 > clouds;
+熙 > bright;
+庙 > temple;
+仏 > buddha;
+雌 > female;
+雇 > employ;
+隨 > follow;
+際 > border;
+階 > stairs;
+隅 > corner;
+酷 > strong;
+乳 > breast;
+稣 > revive;
+陣 > column;
+繕 > repair;
+昭 > bright;
+棉 > cotton;
+搜 > search;
+縛 > to\-tie;
+谅 > excuse;
+烛 > candle;
+呈 > submit;
+線 > thread;
+拓 > expand;
+敦 > esteem;
+數 > number;
+敷 > spread;
+統 > govern;
+脾 > spleen;
+絡 > enmesh;
+紳 > girdle;
+鹰 > falcon;
+約 > treaty;
+紀 > record;
+愚 > stupid;
+糞 > manure;
+粧 > toilet;
+撃 > strike;
+饥 > hunger;
+鑒 > mirror;
+逻 > patrol;
+簡 > simple;
+鏡 > mirror;
+換 > change;
+採 > gather;
+帕 > turban;
+冻 > freeze;
+谦 > humble;
+捜 > search;
+丫 > forked;
+煌 > bright;
+挿 > insert;
+拐 > kidnap;
+荐 > repeat;
+倪 > feeble;
+錐 > gimlet;
+骚 > harass;
+寞 > silent;
+篮 > basket;
+侄 > nephew;
+拙 > stupid;
+叉 > crotch;
+怖 > terror;
+抜 > uproot;
+窓 > window;
+抉 > choose;
+銅 > copper;
+銀 > silver;
+谜 > riddle;
+颁 > confer;
+颊 > cheeks;
+咕 > mumble;
+舵 > rudder;
+惩 > punish;
+咖 > coffee;
+針 > needle;
+應 > should;
+尹 > govern;
+憤 > resent;
+淳 > honest;
+猴 > monkey;
+弦 > string;
+缚 > to\-tie;
+態 > manner;
+慄 > shiver;
+陋 > narrow;
+郵 > postal;
+窄 > narrow;
+驴 > donkey;
+壳 > casing;
+霉 > mildew;
+芦 > rushes;
+胳 > armpit;
+悼 > grieve;
+悶 > gloomy;
+逍 > ramble;
+悴 > suffer;
+耍 > frolic;
+粪 > manure;
+捆 > tie\-up;
+選 > choose;
+遜 > humble;
+兔 > rabbit;
+遊 > wander;
+逛 > ramble;
+匈 > breast;
+讽 > recite;
+拣 > choose;
+耿 > bright;
+廿 > twenty;
+诵 > recite;
+腻 > greasy;
+缆 > hawser;
+鞑 > tatars;
+氓 > people;
+慷 > ardent;
+篷 > awning;
+荆 > thorns;
+膏 > grease;
+鞍 > saddle;
+鸠 > pigeon;
+缕 > thread;
+睬 > notice;
+绥 > soothe;
+氧 > oxygen;
+婷 > pretty;
+姬 > beauty;
+吭 > throat;
+凿 > chisel;
+捂 > resist;
+巫 > wizard;
+虾 > shrimp;
+绅 > girdle;
+镶 > insert;
+颐 > cheeks;
+删 > to\-cut;
+讼 > accuse;
+伶 > lonely;
+炯 > bright;
+鸽 > pigeon;
+渝 > change;
+椒 > pepper;
+揖 > salute;
+冉 > tender;
+咙 > throat;
+踱 > stroll;
+猬 > vulgar;
+屿 > island;
+俐 > smooth;
+褂 > jacket;
+糙 > coarse;
+闸 > sluice;
+颓 > ruined;
+屉 > drawer;
+芹 > celery;
+锥 > gimlet;
+刁 > tricky;
+曙 > bright;
+洼 > hollow;
+皓 > bright;
+蒜 > garlic;
+炳 > bright;
+渣 > refuse;
+慑 > afraid;
+樱 > cherry;
+忏 > regret;
+碾 > roller;
+疙 > pimple;
+漉 > filter;
+隧 > tunnel;
+酥 > butter;
+钮 > button;
+隘 > narrow;
+漱 > gargle;
+盔 > helmet;
+磋 > polish;
+惴 > afraid;
+蕉 > banana;
+惋 > regret;
+痰 > phlegm;
+羁 > halter;
+诏 > decree;
+靶 > target;
+酝 > liquor;
+柬 > letter;
+亵 > slight;
+貂 > marten;
+聆 > listen;
+毋 > do\-not;
+韬 > sheath;
+鹊 > magpie;
+敖 > ramble;
+膺 > breast;
+悚 > afraid;
+卅 > thirty;
+徵 > summon;
+碳 > carbon;
+懵 > stupid;
+鹫 > condor;
+硫 > sulfur;
+踞 > crouch;
+镰 > sickle;
+涎 > saliva;
+壕 > trench;
+锚 > anchor;
+钠 > sodium;
+睿 > shrewd;
+莺 > oriole;
+蛊 > poison;
+烨 > bright;
+胯 > pelvis;
+跻 > ascend;
+鳖 > turtle;
+腼 > modest;
+橙 > orange;
+丞 > assist;
+娓 > comply;
+刎 > behead;
+蹙 > urgent;
+胚 > embryo;
+荔 > lichee;
+铿 > strike;
+锵 > tinkle;
+茧 > cocoon;
+蟒 > python;
+褴 > ragged;
+鹃 > cuckoo;
+猥 > vulgar;
+獗 > unruly;
+蒯 > a\-rush;
+沏 > infuse;
+峪 > valley;
+嚏 > sneeze;
+砾 > gravel;
+馁 > hungry;
+佟 > a\-name;
+茜 > madder;
+扈 > escort;
+咛 > enjoin;
+泗 > mucous;
+胄 > helmet;
+锹 > shovel;
+鹗 > osprey;
+儡 > puppet;
+皈 > follow;
+螂 > mantis;
+苓 > fungus;
+媛 > beauty;
+箴 > needle;
+叵 > cannot;
+仃 > lonely;
+杞 > willow;
+寮 > shanty;
+缮 > repair;
+犷 > fierce;
+沱 > rivers;
+厩 > stable;
+疡 > ulcers;
+垓 > border;
+徕 > induce;
+槁 > wither;
+遴 > select;
+圻 > border;
+龊 > narrow;
+龌 > narrow;
+遨 > ramble;
+骛 > gallop;
+徉 > wonder;
+谪 > charge;
+俚 > rustic;
+锨 > shovel;
+锃 > polish;
+俪 > spouse;
+锲 > sickle;
+祚 > throne;
+臾 > moment;
+遒 > strong;
+囹 > prison;
+嬴 > to\-win;
+烩 > ragout;
+圄 > prison;
+螫 > poison;
+铤 > ingots;
+螳 > mantis;
+茁 > sprout;
+舢 > sampan;
+芾 > flower;
+狲 > monkey;
+碜 > gritty;
+僭 > assume;
+碘 > iodine;
+烯 > alkene;
+囿 > pen\-up;
+囫 > entire;
+褡 > girdle;
+镍 > nickel;
+煜 > bright;
+橐 > a\-sack;
+杷 > loquat;
+恹 > feeble;
+彀 > enough;
+聒 > clamor;
+羯 > wether;
+粲 > polish;
+枇 > loquat;
+秣 > fodder;
+樽 > goblet;
+楹 > column;
+焖 > simmer;
+睑 > eyelid;
+轳 > pulley;
+殚 > utmost;
+镭 > radium;
+殄 > to\-end;
+诰 > inform;
+鹄 > target;
+莅 > attend;
+谟 > scheme;
+讫 > finish;
+珲 > bright;
+淬 > temper;
+嘬 > to\-lap;
+佶 > strong;
+晔 > bright;
+舛 > oppose;
+烷 > alkane;
+蛎 > oyster;
+焱 > flames;
+蜥 > lizard;
+圜 > circle;
+蜴 > lizard;
+葺 > thatch;
+戆 > stupid;
+嬷 > mother;
+恽 > devise;
+蓿 > clover;
+瘌 > severe;
+喱 > gramme;
+钴 > cobalt;
+岙 > island;
+貉 > badger;
+繇 > reason;
+蜉 > mayfly;
+疖 > pimple;
+纾 > loosen;
+鲑 > salmon;
+娈 > lovely;
+荨 > nettle;
+竦 > revere;
+狒 > baboon;
+撄 > oppose;
+蘼 > millet;
+茴 > fennel;
+鲦 > minnow;
+渌 > strain;
+阚 > glance;
+苜 > clover;
+偬 > urgent;
+珐 > enamel;
+靛 > indigo;
+黧 > a\-dark;
+碇 > anchor;
+蠓 > midges;
+橼 > citrus;
+蕞 > little;
+圯 > bridge;
+魍 > demons;
+翊 > flying;
+镏 > distil;
+碓 > pestle;
+胼 > callus;
+挈 > assist;
+犏 > yak\-ox;
+悛 > repent;
+勖 > enjoin;
+籀 > recite;
+碚 > suburb;
+腭 > palate;
+鳟 > barbel;
+雎 > osprey;
+殂 > to\-die;
+筚 > wicker;
+疝 > hernia;
+骀 > an\-old;
+蒗 > \(herb\);
+葸 > afraid;
+菟 > dodder;
+陉 > defile;
+筲 > basket;
+疠 > a\-sore;
+畛 > border;
+旰 > sunset;
+芪 > celery;
+谖 > forget;
+敉 > pacify;
+聍 > earwax;
+锇 > osmium;
+烀 > simmer;
+婧 > modest;
+菘 > celery;
+钡 > barium;
+蝣 > mayfly;
+蚵 > oyster;
+襻 > a\-loop;
+铒 > erbium;
+铈 > cerium;
+椴 > poplar;
+嬲 > frolic;
+苡 > barley;
+舄 > a\-shoe;
+蝾 > lizard;
+蜩 > cicada;
+鸫 > thrush;
+锔 > curium;
+铟 > indium;
+眍 > sunken;
+牖 > window;
+榇 > coffin;
+桷 > rafter;
+幞 > turban;
+帻 > turban;
+圉 > stable;
+摅 > spread;
+苄 > benzyl;
+陔 > a\-step;
+刿 > to\-cut;
+骶 > coccyx;
+鲻 > mullet;
+螨 > insect;
+虼 > a\-flea;
+瘕 > asthma;
+镘 > trowel;
+磙 > roller;
+胂 > arsine;
+觋 > wizard;
+蓥 > polish;
+菔 > turnip;
+仡 > strong;
+龞 > turtle;
+龝 > autumn;
+龍 > dragon;
+齷 > narrow;
+齶 > palate;
+齵 > uneven;
+齪 > narrow;
+鼫 > marmot;
+鼪 > weasel;
+鼔 > a\-drum;
+鼅 > spider;
+黌 > school;
+黉 > school;
+黈 > yellow;
+黃 > yellow;
+麰 > barley;
+麄 > coarse;
+鹨 > anthus;
+鷚 > anthus;
+鷇 > chicks;
+鶽 > a\-hawk;
+鶸 > siskin;
+鶯 > oriole;
+鶬 > oriole;
+鶫 > thrush;
+鶚 > osprey;
+鶊 > oriole;
+鶇 > thrush;
+鵻 > pigeon;
+鵲 > magpie;
+鵠 > target;
+鵑 > cuckoo;
+鵀 > hoopoe;
+鴿 > pigeon;
+鴬 > oriole;
+鴢 > \(duck\);
+鴃 > shrike;
+鱒 > barbel;
+鱎 > \(fish\);
+鱉 > turtle;
+鱆 > poulpe;
+鰷 > minnow;
+鰕 > shrimp;
+鯔 > mullet;
+鮭 > salmon;
+魵 > shrimp;
+驫 > horses;
+騤 > lively;
+騖 > gallop;
+騃 > stupid;
+駡 > accuse;
+駘 > an\-old;
+駓 > gallop;
+駃 > gallop;
+馿 > an\-ass;
+餤 > incite;
+餒 > hungry;
+顜 > honest;
+顒 > solemn;
+顑 > yellow;
+頽 > ruined;
+頹 > ruined;
+頰 > cheeks;
+頞 > bridge;
+頒 > confer;
+頉 > cheeks;
+韜 > sheath;
+韃 > tatars;
+鞞 > sheath;
+鞚 > bridle;
+靮 > bridle;
+雂 > \(bird\);
+隻 > single;
+陬 > corner;
+陜 > narrow;
+陘 > defile;
+闞 > glance;
+闉 > curved;
+閘 > sluice;
+镡 > dagger;
+铯 > cesium;
+鑿 > chisel;
+鑲 > insert;
+鑞 > solder;
+鑑 > mirror;
+鑀 > ionium;
+鐳 > radium;
+鐮 > sickle;
+鐝 > a\-pick;
+鐔 > dagger;
+鏝 > trowel;
+鏘 > tinkle;
+鏗 > strike;
+鎳 > nickel;
+鎦 > distil;
+鎣 > polish;
+鎚 > hammer;
+鎒 > to\-hoe;
+鎌 > sickle;
+鎅 > to\-saw;
+鍼 > needle;
+鍬 > shovel;
+鍫 > shovel;
+鍥 > sickle;
+鍠 > weapon;
+錩 > vessel;
+錨 > anchor;
+鋨 > osmium;
+鋦 > curium;
+鋙 > misfit;
+鋌 > ingots;
+鋇 > barium;
+鋅 > zincum;
+銶 > chisel;
+銲 > solder;
+銫 > cesium;
+銦 > indium;
+鉺 > erbium;
+鉥 > needle;
+鈷 > cobalt;
+鈰 > cerium;
+鈕 > button;
+鈉 > sodium;
+釬 > solder;
+釦 > button;
+釐 > manage;
+釃 > strain;
+醞 > liquor;
+醖 > liquor;
+酾 > strain;
+酴 > leaven;
+鄋 > county;
+邏 > patrol;
+逰 > wander;
+逥 > return;
+逎 > strong;
+逌 > please;
+迯 > escape;
+迍 > falter;
+迋 > travel;
+辧 > manage;
+辦 > manage;
+辢 > bitter;
+轤 > pulley;
+轜 > hearse;
+轀 > hearse;
+輀 > hearse;
+軣 > rumble;
+躧 > sandal;
+躋 > ascend;
+蹻 > strong;
+蹝 > sandal;
+蹓 > stroll;
+踡 > curled;
+跧 > crouch;
+趫 > nimble;
+趨 > hasten;
+趕 > pursue;
+贳 > borrow;
+賞 > reward;
+貭 > matter;
+貪 > greedy;
+貟 > member;
+貛 > badger;
+豻 > prison;
+谿 > valley;
+讚 > praise;
+讁 > punish;
+譟 > clamor;
+譍 > answer;
+譆 > scream;
+謫 > charge;
+謨 > scheme;
+諼 > forget;
+諷 > recite;
+諵 > mutter;
+諒 > excuse;
+誦 > recite;
+誥 > inform;
+詻 > orders;
+詗 > to\-spy;
+詔 > decree;
+訖 > finish;
+觼 > buckle;
+觩 > strong;
+觧 > loosen;
+觕 > coarse;
+覰 > to\-spy;
+覡 > wizard;
+覊 > halter;
+襮 > collar;
+襋 > collar;
+褦 > stupid;
+褏 > sleeve;
+褎 > sleeve;
+袚 > greave;
+蠱 > poison;
+蠩 > a\-toad;
+蠣 > oyster;
+蠙 > oyster;
+蠔 > oyster;
+蠑 > lizard;
+蠎 > python;
+蠁 > larvae;
+蟷 > mantis;
+蟬 > cicada;
+蟜 > insect;
+蝦 > shrimp;
+蜋 > mantis;
+蛯 > shrimp;
+蛣 > beetle;
+蛌 > cricke;
+虩 > fright;
+虖 > to\-cry;
+蘤 > flower;
+蘆 > rushes;
+藘 > madder;
+薿 > flower;
+薗 > garden;
+薑 > ginger;
+蕆 > finish;
+蕂 > sesame;
+蕁 > nettle;
+蔙 > \(herb\);
+蔔 > radish;
+蔂 > basket;
+蔀 > screen;
+蓚 > oxalic;
+蒎 > pinane;
+蒇 > finish;
+葁 > ginger;
+萅 > spring;
+菆 > jungle;
+莵 > dodder;
+荊 > thorns;
+荁 > celery;
+茦 > thorns;
+茢 > sedges;
+苪 > bright;
+苢 > barley;
+芤 > hollow;
+艢 > a\-mast;
+舦 > rudder;
+舃 > a\-shoe;
+臄 > palate;
+膩 > greasy;
+膣 > vagina;
+膕 > hollow;
+腯 > strong;
+腟 > vagina;
+腁 > callus;
+脷 > tongue;
+脵 > thighs;
+脧 > reduce;
+胹 > cooked;
+胷 > breast;
+肧 > embryo;
+肐 > armpit;
+聹 > earwax;
+耤 > plough;
+羵 > spirit;
+羈 > halter;
+罫 > hinder;
+罥 > impete;
+罣 > hinder;
+纩 > cotton;
+纜 > hawser;
+纔 > talent;
+纊 > cotton;
+繭 > cocoon;
+繫 > attach;
+繨 > a\-knot;
+繋 > attach;
+縷 > thread;
+縣 > county;
+縡 > matter;
+縆 > a\-rope;
+緪 > a\-rope;
+綏 > soothe;
+綅 > thread;
+絿 > urgent;
+絚 > a\-rope;
+紲 > bridle;
+紩 > to\-sew;
+紟 > a\-sash;
+紘 > string;
+紓 > loosen;
+紃 > a\-cord;
+糨 > starch;
+糡 > starch;
+籲 > appeal;
+籚 > bamboo;
+籃 > basket;
+簜 > bamboo;
+簉 > deputy;
+篳 > wicker;
+篥 > bulgle;
+篜 > bamboo;
+箙 > quiver;
+笲 > basket;
+竜 > dragon;
+竉 > a\-hole;
+窪 > hollow;
+窔 > corner;
+穩 > stable;
+穨 > ruined;
+穌 > revive;
+穈 > millet;
+稜 > corner;
+秠 > millet;
+禦 > defend;
+祏 > shrine;
+礫 > gravel;
+磣 > gritty;
+碼 > number;
+硾 > weight;
+硍 > strike;
+矴 > anchor;
+矇 > stupid;
+瞷 > to\-spy;
+睪 > spy\-on;
+睆 > bright;
+眾 > masses;
+盩 > callus;
+皥 > bright;
+皡 > bright;
+皞 > bright;
+皀 > kernel;
+癤 > pimple;
+癘 > a\-sore;
+瘍 > ulcers;
+痻 > suffer;
+痚 > asthma;
+疉 > repeat;
+疃 > hamlet;
+疂 > repeat;
+畽 > ground;
+畯 > rustic;
+畟 > plough;
+琿 > bright;
+琺 > enamel;
+珔 > \(jade\);
+玓 > pearly;
+獷 > fierce;
+獉 > jungle;
+猻 > monkey;
+猺 > jackal;
+猓 > monkey;
+狥 > follow;
+犺 > animal;
+牕 > window;
+牓 > tablet;
+牐 > sluice;
+爥 > simmer;
+爚 > bright;
+燴 > ragout;
+燡 > bright;
+燜 > simmer;
+燋 > scorch;
+燁 > bright;
+熲 > bright;
+熈 > bright;
+煕 > bright;
+煃 > remove;
+煁 > hearth;
+焻 > breath;
+焴 > bright;
+焠 > temper;
+烺 > bright;
+烱 > bright;
+炁 > breath;
+瀒 > coarse;
+瀌 > plenty;
+濵 > a\-bank;
+濬 > dredge;
+澼 > bleach;
+潨 > gather;
+潀 > gather;
+漦 > saliva;
+渨 > a\-cove;
+淥 > strain;
+淟 > turbid;
+洟 > snivel;
+泭 > a\-raft;
+汙 > filthy;
+氿 > spring;
+氫 > amonia;
+殼 > casing;
+殫 > utmost;
+欻 > sudden;
+欑 > gather;
+櫬 > coffin;
+櫞 > citrus;
+櫜 > quiver;
+橰 > a\-spar;
+橫 > across;
+橤 > stamen;
+橜 > a\-post;
+橕 > a\-prop;
+樿 > coffin;
+樸 > simple;
+樲 > jujube;
+樑 > bridge;
+槥 > coffin;
+榲 > pillar;
+榱 > rafter;
+榥 > screen;
+榅 > pillar;
+楯 > shield;
+楬 > tablet;
+楢 > tinder;
+楛 > coarse;
+楊 > willow;
+椧 > gutter;
+椓 > strike;
+棜 > branch;
+棅 > handle;
+棃 > a\-pear;
+桲 > quince;
+柲 > handle;
+杴 > shovel;
+杇 > loquat;
+朙 > bright;
+曡 > repeat;
+曍 > bright;
+曅 > bright;
+曄 > bright;
+曀 > stormy;
+暻 > bright;
+暸 > bright;
+暲 > bright;
+暋 > strong;
+晜 > insect;
+晄 > bright;
+昺 > bright;
+昞 > bright;
+昑 > bright;
+旻 > heaven;
+旝 > banner;
+敹 > to\-sew;
+敡 > rebuke;
+敃 > strong;
+敂 > deduct;
+攖 > oppose;
+攄 > spread;
+擽 > tickle;
+擴 > expand;
+擖 > scrape;
+擓 > to\-rub;
+擊 > strike;
+擇 > select;
+撦 > rip\-up;
+撊 > fierce;
+搿 > to\-hug;
+揷 > insert;
+揮 > direct;
+揗 > strike;
+揀 > choose;
+掤 > quiver;
+掔 > sturdy;
+捽 > clutch;
+捼 > to\-rub;
+捓 > strive;
+捃 > gather;
+拡 > expand;
+択 > select;
+扐 > divine;
+扆 > screen;
+戝 > pirate;
+戇 > stupid;
+懾 > afraid;
+懺 > regret;
+懴 > regret;
+懲 > punish;
+懨 > feeble;
+憦 > regret;
+愽 > gamble;
+愬 > accuse;
+惲 > devise;
+惪 > ethics;
+惎 > injure;
+悳 > ethics;
+悧 > smooth;
+悞 > impede;
+悋 > stingy;
+恡 > stingy;
+恟 > scared;
+忰 > suffer;
+徠 > induce;
+彴 > bridge;
+弣 > middle;
+廽 > return;
+廟 > temple;
+廐 > stable;
+廏 > stable;
+廆 > a\-room;
+廄 > stable;
+廁 > toilet;
+幘 > turban;
+巤 > a\-mane;
+巘 > summit;
+嶼 > island;
+嶴 > island;
+嶓 > boshan;
+嶌 > island;
+嶋 > island;
+嵾 > uneven;
+崿 > cliffs;
+崟 > cliffs;
+岨 > uneven;
+岀 > go\-out;
+屮 > sprout;
+屜 > drawer;
+尅 > subdue;
+尀 > cannot;
+寜 > repose;
+寕 > repose;
+寎 > drowsy;
+宧 > corner;
+孾 > a\-baby;
+孌 > lovely;
+嬿 > lovely;
+嬤 > mother;
+嬃 > sister;
+嫪 > hanker;
+嫐 > frolic;
+媽 > mother;
+媖 > beauty;
+婼 > person;
+婤 > lovely;
+娬 > lovely;
+娒 > matron;
+姁 > beauty;
+妸 > person;
+夬 > parted;
+夠 > enough;
+夆 > resist;
+壿 > goblet;
+墠 > smooth;
+堧 > adjoin;
+堦 > stairs;
+堉 > ground;
+圞 > entire;
+圝 > entire;
+圎 > circle;
+圀 > nation;
+囘 > return;
+嚿 > a\-lump;
+嚨 > throat;
+嚔 > sneeze;
+嚃 > gobble;
+嚀 > enjoin;
+噚 > fathom;
+噓 > exhale;
+噏 > inhale;
+嗿 > gobble;
+喆 > a\-sage;
+啉 > stupid;
+唫 > to\-hum;
+唈 > to\-sob;
+哤 > jargon;
+哋 > plural;
+咈 > oppose;
+呮 > to\-sit;
+呏 > gallon;
+叡 > astute;
+叓 > affair;
+厎 > settle;
+卄 > twenty;
+匃 > beggar;
+勷 > urgent;
+勵 > strive;
+勗 > enjoin;
+勑 > reward;
+勍 > strong;
+勄 > active;
+勁 > strong;
+劤 > strong;
+劌 > to\-cut;
+劆 > sickle;
+剎 > temple;
+剋 > subdue;
+刪 > to\-cut;
+凞 > bright;
+凓 > shiver;
+冑 > helmet;
+冄 > tender;
+兲 > heaven;
+內 > inside;
+儸 > bandit;
+儷 > spouse;
+僱 > employ;
+僬 > clever;
+僣 > assume;
+傯 > urgent;
+傮 > finish;
+傎 > topple;
+偪 > compel;
+偩 > follow;
+偨 > uneven;
+偖 > rip\-up;
+倆 > clever;
+倅 > deputy;
+倃 > damage;
+俵 > divide;
+侷 > narrow;
+佈 > spread;
+伾 > mighty;
+伜 > deputy;
+仚 > to\-fly;
+亊 > affair;
+亄 > greedy;
+乚 > hidden;
+乂 > govern;
+丗 > thirty;
+䶮 > clever;
+䶁 > noises;
+䵧 > to\-dye;
+䵙 > sticky;
+䵐 > yellow;
+䵏 > yellow;
+䵍 > yellow;
+䵋 > yellow;
+䵊 > yellow;
+䴥 > a\-stag;
+䳾 > an\-owl;
+䳏 > cuckoo;
+䳇 > parrot;
+䲹 > ospery;
+䲧 > cuckoo;
+䲌 > a\-fish;
+䱕 > labrus;
+䱑 > a\-fish;
+䱏 > a\-fish;
+䱃 > a\-fish;
+䱂 > a\-fish;
+䰷 > a\-fish;
+䰣 > an\-elf;
+䯫 > bright;
+䯨 > to\-rap;
+䯝 > marrow;
+䯜 > marrow;
+䯃 > saddle;
+䯁 > a\-mule;
+䭪 > grains;
+䭥 > a\-bait;
+䭝 > to\-eat;
+䭚 > to\-eat;
+䭒 > breath;
+䭌 > congee;
+䭈 > congee;
+䬸 > a\-meal;
+䬑 > a\-gale;
+䬐 > breeze;
+䬊 > a\-gale;
+䬈 > breeze;
+䬇 > breeze;
+䬅 > a\-gale;
+䬄 > breeze;
+䬂 > breeze;
+䫾 > breeze;
+䫽 > breeze;
+䫼 > breeze;
+䫬 > to\-bow;
+䪸 > strong;
+䪤 > garlic;
+䩯 > urgent;
+䩭 > halter;
+䨾 > hidden;
+䨺 > cloudy;
+䨸 > cloudy;
+䨯 > cloudy;
+䨟 > puddle;
+䨉 > parrot;
+䨇 > a\-pair;
+䧴 > a\-bird;
+䧳 > female;
+䧥 > border;
+䧛 > beside;
+䧑 > a\-dike;
+䥪 > to\-cup;
+䥨 > a\-file;
+䥠 > needle;
+䥍 > a\-whip;
+䣦 > to\-cut;
+䣘 > a\-hall;
+䣈 > a\-lane;
+䢽 > a\-lane;
+䠰 > coiled;
+䠤 > toddle;
+䠙 > urgent;
+䠎 > narrow;
+䠇 > strong;
+䟱 > traces;
+䟟 > urgent;
+䟒 > coiled;
+䝜 > a\-lion;
+䝄 > cowpea;
+䜞 > a\-dose;
+䛧 > riddle;
+䛥 > speech;
+䛣 > speech;
+䛜 > to\-ask;
+䛑 > silent;
+䛈 > to\-vow;
+䚺 > ballad;
+䚈 > to\-see;
+䚆 > to\-see;
+䚂 > to\-see;
+䚁 > to\-see;
+䙿 > to\-see;
+䙽 > to\-see;
+䙼 > to\-see;
+䙵 > rustic;
+䙡 > a\-knot;
+䙌 > a\-knot;
+䘰 > a\-hood;
+䘬 > armour;
+䘩 > collar;
+䘌 > gadfly;
+䘈 > oyster;
+䗫 > a\-frog;
+䖹 > weevil;
+䖮 > larvae;
+䖫 > oyster;
+䖨 > mantis;
+䖗 > strong;
+䖁 > number;
+䕬 > ginger;
+䕨 > rattan;
+䔯 > salted;
+䔢 > cathay;
+䔏 > a\-lush;
+䓧 > urgent;
+䓦 > a\-rule;
+䓅 > celery;
+䓄 > grassy;
+䒹 > grassy;
+䒫 > grassy;
+䒉 > a\-long;
+䒂 > an\-oar;
+䑺 > a\-sail;
+䑴 > a\-boat;
+䑱 > a\-boat;
+䑯 > a\-boat;
+䑨 > rudder;
+䑦 > a\-boat;
+䑤 > a\-boat;
+䑐 > bright;
+䐦 > sleepy;
+䐥 > stinky;
+䏪 > tendon;
+䏣 > maggot;
+䏂 > clever;
+䎱 > a\-drag;
+䎬 > a\-drag;
+䎙 > flying;
+䎗 > flying;
+䎓 > flying;
+䎊 > flying;
+䎈 > flying;
+䎆 > flying;
+䎅 > flying;
+䎀 > flying;
+䍾 > flying;
+䍬 > to\-use;
+䍋 > bottle;
+䍈 > bottle;
+䍃 > a\-vase;
+䌴 > uneven;
+䌱 > uneven;
+䌜 > to\-sew;
+䌕 > to\-tie;
+䋲 > a\-rope;
+䋑 > to\-tie;
+䋐 > fabric;
+䋌 > strong;
+䊧 > a\-fart;
+䊥 > congee;
+䊛 > shreds;
+䊎 > powder;
+䊆 > cooked;
+䉶 > a\-sail;
+䈺 > bamboo;
+䈴 > a\-cage;
+䈎 > a\-leaf;
+䇥 > narrow;
+䇢 > bamboo;
+䇟 > tendon;
+䇚 > to\-tap;
+䇁 > a\-cave;
+䆽 > a\-hole;
+䆼 > a\-nest;
+䆻 > a\-hole;
+䆷 > a\-hole;
+䆰 > a\-cave;
+䆮 > to\-dip;
+䆫 > window;
+䆧 > a\-cave;
+䆡 > a\-cave;
+䆝 > a\-cave;
+䆙 > a\-kiln;
+䆓 > a\-hole;
+䅶 > to\-hoe;
+䅴 > grains;
+䅦 > feeble;
+䅇 > grains;
+䄹 > a\-year;
+䄲 > inside;
+䄭 > a\-year;
+䄘 > a\-rite;
+䄎 > pretty;
+䃥 > stones;
+䃖 > a\-bank;
+䃊 > to\-rub;
+䂷 > broken;
+䂴 > to\-rub;
+䂳 > gravel;
+䂝 > to\-rap;
+䂘 > pebble;
+䁿 > sleepy;
+䁦 > to\-see;
+䁖 > to\-see;
+䀒 > gloomy;
+䀍 > vessel;
+䀅 > vessel;
+㿾 > vessel;
+㿼 > a\-bowl;
+㿻 > a\-tray;
+㿭 > cracks;
+㿧 > fields;
+㿔 > a\-wart;
+㽷 > dropsy;
+㽵 > solemn;
+㼾 > bricks;
+㼥 > bottle;
+㼝 > a\-bowl;
+㼄 > pearls;
+㹌 > cattle;
+㸿 > a\-calf;
+㸙 > father;
+㷰 > flames;
+㷩 > bright;
+㷋 > embers;
+㷂 > bright;
+㶤 > to\-fry;
+㶈 > creeks;
+㵪 > saliva;
+㵝 > moving;
+㴞 > fluent;
+㴆 > to\-dip;
+㳌 > marshy;
+㱵 > to\-die;
+㱳 > lonely;
+㱱 > uneven;
+㱣 > uneven;
+㱞 > danger;
+㱙 > rotten;
+㱍 > to\-owe;
+㱂 > hungry;
+㱁 > to\-ask;
+㰍 > a\-cage;
+㰃 > a\-tree;
+㯾 > a\-tree;
+㯖 > a\-tree;
+㯏 > grains;
+㯎 > stupid;
+㯍 > an\-oar;
+㯉 > a\-tree;
+㯆 > a\-tree;
+㮿 > a\-tree;
+㮹 > a\-tree;
+㮷 > a\-tree;
+㮶 > a\-tree;
+㮳 > a\-tree;
+㮩 > a\-tree;
+㮧 > a\-tree;
+㮘 > a\-tree;
+㮖 > to\-lay;
+㮌 > cotton;
+㭱 > a\-case;
+㭋 > a\-club;
+㬯 > sunset;
+㬮 > gentle;
+㬍 > fierce;
+㫺 > bygone;
+㫸 > sunset;
+㫷 > behind;
+㫡 > winter;
+㫅 > a\-flag;
+㪹 > to\-rob;
+㪆 > hidden;
+㪄 > broken;
+㩾 > uneven;
+㩲 > a\-fist;
+㨾 > a\-type;
+㨻 > to\-cut;
+㨸 > to\-hit;
+㨩 > to\-win;
+㨥 > to\-hit;
+靖 > pacify;
+神 > spirit;
+益 > profit;
+凞 > bright;
+㨎 > to\-dye;
+㨅 > inside;
+拓 > expand;
+度 > degree;
+㧸 > to\-hit;
+林 > forest;
+㧳 > to\-mix;
+吝 > stingy;
+裡 > inside;
+裏 > inside;
+罹 > sorrow;
+㧧 > a\-comb;
+理 > reason;
+易 > change;
+慄 > shiver;
+硫 > sulfur;
+㧉 > to\-rub;
+龍 > dragon;
+寮 > shanty;
+靈 > spirit;
+聆 > listen;
+寧 > repose;
+囹 > prison;
+咽 > throat;
+列 > a\-line;
+㦔 > silkly;
+㦋 > absurd;
+㦊 > lavish;
+㦅 > uneasy;
+㦁 > to\-sob;
+勵 > strive;
+諒 > excuse;
+梁 > bridge;
+亮 > bright;
+㥭 > luxury;
+㥫 > honest;
+數 > number;
+復 > return;
+寧 > repose;
+㥟 > enmity;
+稜 > corner;
+陋 > narrow;
+縷 > thread;
+㥐 > hatred;
+㥈 > afraid;
+牢 > prison;
+論 > debate;
+㤻 > stupid;
+㤹 > hatred;
+㤸 > uneasy;
+蘆 > rushes;
+㤨 > scared;
+襤 > ragged;
+蘭 > orchid;
+爛 > rotten;
+邏 > patrol;
+㤓 > stupid;
+串 > string;
+㣭 > number;
+㣘 > spasms;
+㢽 > a\-bait;
+㢺 > string;
+㡮 > danger;
+㡣 > dragon;
+㡚 > armour;
+㡁 > a\-robe;
+㠶 > a\-sail;
+㠲 > ripped;
+㠀 > island;
+㟷 > a\-wart;
+㟫 > spring;
+㟥 > uneven;
+㟟 > a\-lane;
+㞸 > a\-year;
+㞇 > ulcers;
+㞂 > ulcers;
+㝹 > a\-hare;
+㝶 > to\-get;
+㝵 > to\-get;
+㝧 > stable;
+㝂 > locust;
+㝁 > lonely;
+㜫 > pretty;
+㜥 > crafty;
+㛹 > pretty;
+㚼 > a\-girl;
+㚻 > sodomy;
+㚹 > pretty;
+㚞 > terror;
+㚐 > a\-case;
+㚌 > a\-band;
+㙹 > a\-damp;
+㙶 > a\-hall;
+㙬 > a\-bank;
+㙝 > a\-dike;
+㙕 > a\-lump;
+㘴 > to\-sit;
+㘲 > a\-cove;
+㗷 > to\-eat;
+㗵 > breath;
+㗖 > to\-eat;
+㖒 > to\-cry;
+㖁 > stingy;
+㕠 > a\-pair;
+㕔 > a\-hall;
+㕂 > to\-hum;
+㔺 > an\-age;
+㔸 > a\-tray;
+㔜 > sudden;
+㔗 > strong;
+㔒 > to\-cut;
+㔐 > to\-cut;
+㔊 > to\-cut;
+㔉 > to\-dig;
+㔆 > to\-cut;
+㔅 > to\-cut;
+㓵 > swords;
+㓱 > to\-cut;
+㓪 > bright;
+㓠 > a\-flaw;
+㓅 > frozen;
+㒶 > public;
+㒵 > manner;
+㒲 > wealth;
+㒧 > a\-pair;
+㒠 > narrow;
+㑻 > strong;
+㑷 > manner;
+㑳 > clever;
+㑣 > stupid;
+㑇 > clever;
+㐹 > strong;
+石 > stone;
+短 > short;
+快 > rapid;
+在 > be\-at;
+他 > other;
+矢 > arrow;
+到 > go\-to;
+说 > speak;
+迅 > quick;
+地 > earth;
+心 > heart;
+下 > under;
+辭 > words;
+微 > small;
+家 > house;
+御 > drive;
+辞 > words;
+后 > queen;
+小 > small;
+待 > treat;
+还 > still;
+发 > issue;
+彫 > carve;
+想 > think;
+睡 > sleep;
+轉 > shift;
+所 > place;
+輪 > wheel;
+三 > three;
+輕 > light;
+式 > style;
+样 > shape;
+軽 > light;
+建 > build;
+延 > delay;
+盲 > blind;
+転 > shift;
+廣 > broad;
+声 > sound;
+工 > labor;
+盆 > basin;
+盃 > glass;
+正 > right;
+庸 > usual;
+女 > woman;
+力 > power;
+躑 > waver;
+因 > cause;
+重 > heavy;
+皇 > royal;
+庇 > cover;
+次 > order;
+広 > broad;
+口 > mouth;
+使 > cause;
+白 > white;
+幽 > quiet;
+教 > teach;
+發 > issue;
+再 > again;
+発 > issue;
+气 > steam;
+信 > trust;
+北 > north;
+蹲 > squat;
+蹟 > trace;
+由 > cause;
+却 > still;
+幅 > piece;
+入 > enter;
+先 > first;
+水 > water;
+处 > place;
+巷 > alley;
+笑 > smile;
+立 > stand;
+跪 > kneel;
+马 > horse;
+巨 > large;
+疑 > doubt;
+利 > gains;
+赴 > go\-to;
+光 > light;
+果 > fruit;
+赧 > blush;
+至 > reach;
+清 > clear;
+物 > thing;
+嵌 > inlay;
+甲 > armor;
+田 > field;
+许 > allow;
+八 > eight;
+崖 > cliff;
+崎 > rough;
+南 > south;
+色 > color;
+让 > allow;
+瓜 > melon;
+算 > count;
+賊 > thief;
+元 > first;
+貯 > store;
+思 > think;
+貨 > goods;
+岩 > cliff;
+每 > every;
+屬 > class;
+豪 > brave;
+属 > class;
+言 > words;
+权 > power;
+屋 > house;
+豆 > beans;
+七 > seven;
+尚 > still;
+尖 > sharp;
+转 > shift;
+射 > shoot;
+空 > empty;
+技 > skill;
+轻 > light;
+寺 > court;
+寫 > write;
+英 > petal;
+寢 > sleep;
+写 > write;
+寝 > sleep;
+寐 > sleep;
+密 > dense;
+寂 > still;
+钱 > money;
+容 > looks;
+宵 > night;
+设 > build;
+始 > begin;
+客 > guest;
+片 > slice;
+研 > grind;
+宇 > house;
+早 > early;
+房 > house;
+音 > sound;
+獻 > offer;
+獺 > otter;
+獸 > beast;
+譲 > allow;
+獨 > alone;
+警 > guard;
+獣 > beast;
+存 > exist;
+證 > proof;
+组 > class;
+謝 > thank;
+猜 > guess;
+嬉 > enjoy;
+黑 > black;
+謁 > visit;
+剑 > sword;
+独 > alone;
+乐 > happy;
+级 > level;
+説 > speak;
+举 > raise;
+证 > prove;
+照 > shine;
+誓 > swear;
+群 > group;
+晚 > night;
+誂 > tempt;
+詞 > words;
+伤 > wound;
+类 > class;
+欢 > happy;
+爽 > happy;
+势 > power;
+証 > prove;
+刻 > carve;
+断 > sever;
+夜 > night;
+許 > allow;
+設 > build;
+价 > price;
+脑 > brain;
+訪 > visit;
+规 > rules;
+娑 > dance;
+破 > break;
+泽 > marsh;
+燻 > smoke;
+紧 > tense;
+觸 > touch;
+装 > dress;
+急 > quick;
+河 > river;
+血 > blood;
+投 > throw;
+覆 > cover;
+右 > right;
+奴 > slave;
+刀 > knife;
+襟 > lapel;
+煙 > smoke;
+奉 > offer;
+喝 > drink;
+褸 > lapel;
+褪 > strip;
+卫 > guard;
+夢 > dream;
+错 > error;
+裾 > lapel;
+案 > table;
+烟 > smoke;
+裝 > dress;
+印 > print;
+壓 > press;
+烈 > fiery;
+壇 > altar;
+块 > piece;
+裂 > split;
+袴 > pants;
+墓 > grave;
+静 > quiet;
+炎 > flame;
+衷 > heart;
+灰 > ashes;
+衞 > guard;
+衛 > guard;
+速 > quick;
+塗 > smear;
+敌 > enemy;
+塔 > tower;
+谢 > thank;
+塊 > piece;
+怀 > bosom;
+养 > raise;
+罪 > crime;
+濶 > broad;
+蟲 > worms;
+濱 > beach;
+摘 > pluck;
+施 > grant;
+模 > model;
+草 > grass;
+濃 > thick;
+值 > price;
+濁 > muddy;
+班 > class;
+修 > study;
+味 > taste;
+澤 > marsh;
+织 > weave;
+龕 > niche;
+蝿 > flies;
+免 > spare;
+波 > waves;
+潔 > clean;
+洋 > ocean;
+劳 > labor;
+均 > equal;
+压 > press;
+奖 > prize;
+顿 > pause;
+漂 > float;
+判 > judge;
+素 > white;
+嘴 > mouth;
+担 > carry;
+板 > plank;
+钟 > clock;
+访 > visit;
+黒 > black;
+黐 > stick;
+蛇 > snake;
+构 > frame;
+溺 > drown;
+麦 > wheat;
+麥 > wheat;
+溝 > ditch;
+溜 > slide;
+肉 > flesh;
+纸 > paper;
+梦 > dream;
+虚 > false;
+蒙 > cover;
+處 > place;
+虎 > tiger;
+噌 > scold;
+杂 > mixed;
+怒 > anger;
+稿 > draft;
+渦 > swirl;
+渡 > cross;
+渠 > ditch;
+嘗 > taste;
+罢 > cease;
+鷺 > heron;
+鷹 > eagle;
+淹 > drown;
+藩 > fence;
+藥 > drugs;
+鲜 > fresh;
+置 > place;
+嗅 > smell;
+藁 > straw;
+鶴 > crane;
+枪 > spear;
+涯 > shore;
+薮 > marsh;
+薬 > drugs;
+薦 > offer;
+涜 > ditch;
+涙 > tears;
+配 > match;
+浴 > bathe;
+升 > arise;
+浜 > creek;
+蔽 > cover;
+词 > words;
+泪 > tears;
+蔭 > shade;
+津 > ferry;
+鬼 > ghost;
+舞 > dance;
+蓮 > lotus;
+避 > avoid;
+桌 > table;
+蓋 > cover;
+亡 > death;
+蓄 > store;
+闪 > flash;
+蒸 > steam;
+震 > shake;
+咳 > cough;
+咲 > smile;
+沢 > marsh;
+绿 > green;
+咎 > fault;
+纳 > admit;
+汽 > steam;
+货 > goods;
+呪 > curse;
+童 > child;
+伟 > great;
+汁 > juice;
+荣 > glory;
+献 > offer;
+吐 > vomit;
+厚 > thick;
+鰌 > loach;
+喊 > shout;
+轮 > wheel;
+吉 > lucky;
+训 > teach;
+叱 > scold;
+逐 > chase;
+盖 > cover;
+叩 > knock;
+舍 > house;
+毎 > every;
+检 > check;
+握 > grasp;
+牙 > tooth;
+鮮 > fresh;
+宽 > broad;
+殖 > breed;
+卿 > noble;
+荷 > lotus;
+歯 > teeth;
+歪 > slant;
+歡 > happy;
+棋 > chess;
+魔 > demon;
+腰 > waist;
+梅 > plums;
+钢 > steel;
+茹 > roots;
+仇 > enemy;
+欺 > cheat;
+鬚 > beard;
+匙 > spoon;
+净 > clean;
+匍 > crawl;
+權 > power;
+茅 > reeds;
+累 > tired;
+享 > enjoy;
+茂 > thick;
+勇 > brave;
+末 > final;
+糊 > paste;
+税 > taxes;
+勢 > power;
+勞 > labor;
+苛 > small;
+惯 > habit;
+倾 > upset;
+労 > labor;
+韩 > fence;
+贸 > trade;
+檢 > check;
+劍 > sword;
+扫 > sweep;
+艸 > grass;
+剣 > sword;
+吓 > scare;
+剃 > shave;
+闲 > fence;
+舶 > large;
+刷 > brush;
+羊 > sheep;
+権 > power;
+樣 > shape;
+扑 > pound;
+舎 > house;
+碎 > break;
+樂 > happy;
+磨 > grind;
+臺 > tower;
+臭 > smell;
+処 > place;
+様 > shape;
+倍 > times;
+粗 > rough;
+構 > frame;
+冶 > smelt;
+膳 > meals;
+馭 > drive;
+朗 > clear;
+馬 > horse;
+兼 > unite;
+鞋 > shoes;
+欣 > happy;
+挤 > crowd;
+楽 > happy;
+洁 > clean;
+颗 > grain;
+惠 > favor;
+振 > raise;
+腦 > brain;
+爬 > crawl;
+腕 > wrist;
+桃 > peach;
+措 > place;
+泰 > great;
+坡 > slope;
+脳 > brain;
+坛 > altar;
+償 > repay;
+検 > check;
+彪 > tiger;
+饮 > drink;
+植 > plant;
+養 > raise;
+脊 > spine;
+椅 > chair;
+矛 > spear;
+宾 > guest;
+肚 > belly;
+價 > price;
+贼 > thief;
+飲 > drink;
+棲 > perch;
+飮 > drink;
+僞 > false;
+僕 > slave;
+棒 > stick;
+働 > labor;
+傾 > upset;
+傷 > wound;
+催 > press;
+肝 > liver;
+盟 > swear;
+偽 > false;
+箭 > arrow;
+聲 > sound;
+類 > class;
+耀 > shine;
+顆 > grain;
+偉 > great;
+疯 > crazy;
+耻 > shame;
+侍 > serve;
+値 > price;
+衫 > shirt;
+頓 > pause;
+揭 > raise;
+莲 > lotus;
+钻 > drill;
+栄 > glory;
+峡 > gorge;
+韻 > rhyme;
+柵 > fence;
+丑 > clown;
+翳 > shade;
+浓 > thick;
+捉 > grasp;
+澳 > inlet;
+疼 > aches;
+档 > shelf;
+抛 > throw;
+価 > price;
+阔 > broad;
+玛 > agate;
+靴 > boots;
+尝 > taste;
+扣 > knock;
+靜 > quiet;
+傲 > proud;
+伺 > serve;
+锐 > sharp;
+霜 > frost;
+吵 > argue;
+沟 > ditch;
+浑 > muddy;
+邪 > wrong;
+脆 > crisp;
+偿 > repay;
+拟 > draft;
+曳 > trail;
+離 > leave;
+雜 > mixed;
+叛 > rebel;
+炼 > smelt;
+雑 > mixed;
+翼 > wings;
+呵 > scold;
+甜 > sweet;
+抹 > smear;
+隙 > crack;
+扔 > throw;
+廷 > court;
+掷 > throw;
+傅 > tutor;
+晩 > night;
+織 > weave;
+喷 > spurt;
+浩 > great;
+吩 > order;
+伪 > false;
+瞎 > blind;
+矮 > short;
+齿 > teeth;
+緑 > green;
+娶 > marry;
+緊 > tense;
+闇 > close;
+璃 > glass;
+斷 > sever;
+糖 > sugar;
+珊 > coral;
+棍 > stick;
+閑 > fence;
+玻 > glass;
+砸 > smash;
+嚷 > shout;
+閃 > flash;
+敵 > enemy;
+絞 > twist;
+坟 > grave;
+鹤 > crane;
+組 > class;
+乖 > rebel;
+級 > level;
+紙 > paper;
+納 > admit;
+轨 > track;
+擱 > place;
+擬 > draft;
+硕 > great;
+擧 > raise;
+擡 > carry;
+擔 > carry;
+撲 > pound;
+兽 > beast;
+籖 > tally;
+鐘 > clock;
+遮 > cover;
+擒 > catch;
+築 > build;
+揃 > shear;
+箒 > broom;
+鼎 > large;
+掃 > sweep;
+鍮 > brass;
+嗓 > voice;
+粒 > grain;
+錯 > error;
+啥 > what\?;
+錢 > money;
+蜜 > honey;
+挙 > raise;
+鋼 > steel;
+拶 > press;
+鋭 > sharp;
+搁 > place;
+鋏 > tongs;
+肿 > swell;
+銭 > money;
+裙 > skirt;
+胀 > swell;
+辜 > crime;
+哇 > vomit;
+尿 > urine;
+逮 > seize;
+刮 > shave;
+嘱 > order;
+倡 > guide;
+搏 > seize;
+兜 > pouch;
+魄 > vigor;
+晰 > clear;
+糕 > cakes;
+秩 > order;
+稚 > young;
+鈍 > blunt;
+懷 > bosom;
+滨 > beach;
+懐 > bosom;
+躁 > tense;
+甫 > begin;
+禽 > birds;
+憺 > peace;
+链 > chain;
+憬 > rouse;
+沐 > bathe;
+凳 > bench;
+酬 > toast;
+慣 > habit;
+灿 > vivid;
+韵 > rhyme;
+攀 > climb;
+咒 > curse;
+沫 > froth;
+碌 > rough;
+坤 > earth;
+焰 > flame;
+逗 > tempt;
+還 > still;
+魁 > chief;
+滥 > flood;
+適 > match;
+恥 > shame;
+框 > frame;
+喀 > vomit;
+砕 > break;
+翅 > wings;
+戳 > prick;
+桩 > stake;
+肺 > lungs;
+纱 > gauze;
+陡 > steep;
+烫 > scald;
+匕 > spoon;
+鹅 > goose;
+敞 > roomy;
+浏 > clear;
+烁 > shine;
+诈 > cheat;
+峨 > lofty;
+虐 > cruel;
+辫 > braid;
+嗽 > cough;
+怦 > eager;
+浇 > spray;
+膛 > chest;
+闵 > mourn;
+萃 > dense;
+袜 > socks;
+揽 > grasp;
+荫 > shade;
+贿 > bribe;
+敝 > break;
+熏 > smoke;
+匀 > equal;
+沃 > water;
+蝇 > flies;
+绞 > twist;
+呕 > vomit;
+墅 > villa;
+秽 > dirty;
+谬 > error;
+垄 > grave;
+呻 > groan;
+拧 > pinch;
+彰 > clear;
+栖 > perch;
+扼 > grasp;
+浊 > muddy;
+杠 > lever;
+惫 > tired;
+攘 > seize;
+缎 > satin;
+惮 > dread;
+噗 > burst;
+矶 > jetty;
+瓣 > petal;
+黝 > black;
+簇 > swarm;
+懊 > vexed;
+勺 > spoon;
+夭 > young;
+拇 > thumb;
+铲 > spade;
+肮 > dirty;
+哽 > choke;
+诣 > reach;
+炫 > shine;
+钝 > blunt;
+栅 > fence;
+冕 > crown;
+廓 > broad;
+峭 > steep;
+磅 > pound;
+疮 > tumor;
+赃 > booty;
+瘤 > tumor;
+婊 > whore;
+锯 > a\-saw;
+秉 > grasp;
+臻 > reach;
+嘈 > noisy;
+诅 > curse;
+缰 > reins;
+讪 > abuse;
+忡 > a\-sad;
+涡 > swirl;
+馍 > bread;
+颅 > skull;
+祯 > lucky;
+忖 > guess;
+烙 > brand;
+埔 > plain;
+泓 > clear;
+噎 > choke;
+阜 > mound;
+俨 > grave;
+炬 > torch;
+贮 > store;
+渎 > ditch;
+癫 > crazy;
+炙 > roast;
+肇 > begin;
+帚 > broom;
+恬 > quiet;
+婪 > covet;
+蹑 > tread;
+竺 > india;
+剌 > slash;
+荧 > shine;
+赂 > bribe;
+诲 > teach;
+筛 > sieve;
+篡 > usurp;
+鲸 > whale;
+抡 > swing;
+涮 > rinse;
+挎 > carry;
+酵 > yeast;
+橄 > olive;
+榄 > olive;
+稠 > dense;
+悻 > anger;
+雏 > chick;
+摹 > trace;
+涧 > brook;
+腺 > gland;
+哮 > cough;
+袒 > strip;
+抠 > raise;
+忱 > truth;
+噤 > close;
+髯 > beard;
+蜿 > creep;
+镀 > plate;
+胭 > rouge;
+髅 > skull;
+焘 > shine;
+佗 > other;
+赳 > grand;
+糠 > chaff;
+帛 > silks;
+侏 > small;
+丕 > great;
+鲨 > shark;
+踝 > ankle;
+驭 > drive;
+眈 > gloat;
+倭 > dwarf;
+镐 > stove;
+臆 > chest;
+孺 > child;
+虱 > louse;
+瑙 > agate;
+褛 > lapel;
+恺 > enjoy;
+擞 > shake;
+箕 > sieve;
+涓 > brook;
+噼 > sound;
+搐 > cramp;
+戛 > lance;
+黔 > black;
+阖 > close;
+呃 > belch;
+溉 > water;
+炀 > roast;
+皎 > white;
+榭 > kiosk;
+酪 > cream;
+傀 > great;
+孀 > widow;
+孪 > twins;
+泱 > great;
+岖 > steep;
+忸 > blush;
+瞰 > watch;
+谒 > visit;
+觊 > covet;
+氮 > xenon;
+痣 > spots;
+摒 > expel;
+俸 > wages;
+愠 > angry;
+岑 > steep;
+搽 > smear;
+扪 > stoke;
+瑚 > coral;
+皙 > white;
+绉 > crepe;
+忾 > anger;
+盂 > basin;
+珀 > amber;
+偈 > brave;
+沔 > flood;
+诩 > boast;
+芍 > peony;
+褶 > pleat;
+酗 > drunk;
+咤 > scold;
+柠 > lemon;
+诙 > tease;
+偃 > cease;
+绺 > skein;
+揿 > press;
+釉 > glaze;
+鹭 > heron;
+宓 > quiet;
+孛 > comet;
+噫 > belch;
+弋 > catch;
+龛 > niche;
+忪 > quiet;
+镂 > carve;
+骞 > raise;
+颌 > mouth;
+铠 > armor;
+鳅 > loach;
+秆 > straw;
+嶂 > cliff;
+椽 > beams;
+颦 > frown;
+淖 > slush;
+恚 > anger;
+莠 > weeds;
+橛 > a\-peg;
+阕 > close;
+咻 > shout;
+祛 > expel;
+蒺 > furze;
+衽 > lapel;
+翕 > agree;
+霾 > misty;
+砧 > anvil;
+蹉 > error;
+哂 > smile;
+胺 > amine;
+蛭 > leech;
+韪 > right;
+诨 > jokes;
+赝 > false;
+岿 > grand;
+怫 > sorry;
+荏 > beans;
+楔 > wedge;
+擘 > thumb;
+轱 > wheel;
+媾 > marry;
+痍 > wound;
+獭 > otter;
+黢 > black;
+铧 > spade;
+吒 > shout;
+疽 > ulcer;
+诟 > abuse;
+茔 > grave;
+桤 > alder;
+铆 > rivet;
+酩 > drunk;
+氵 > water;
+撺 > hurry;
+奘 > large;
+肄 > learn;
+踯 > waver;
+孢 > spore;
+鲲 > spawn;
+酊 > drunk;
+铨 > weigh;
+酽 > thick;
+阒 > alone;
+饬 > order;
+豕 > a\-pig;
+笊 > ladle;
+罅 > crack;
+钜 > steel;
+畈 > field;
+囗 > erect;
+庥 > shade;
+瓤 > flesh;
+铩 > moult;
+渖 > juice;
+忄 > heart;
+诓 > cheat;
+鹑 > quail;
+茕 > alone;
+垅 > mound;
+蟥 > leech;
+鹳 > crane;
+鹌 > quail;
+晟 > clear;
+啁 > chirp;
+醚 > ether;
+琰 > jewel;
+迨 > until;
+褫 > strip;
+鹬 > snipe;
+瞽 > blind;
+傈 > tribe;
+驽 > tired;
+谯 > tower;
+铰 > hinge;
+洌 > clear;
+堞 > plate;
+硼 > borax;
+詈 > scold;
+酯 > ester;
+镪 > coins;
+锸 > spade;
+戋 > small;
+扦 > probe;
+溷 > privy;
+俳 > actor;
+雠 > enemy;
+砻 > grind;
+蘖 > stump;
+墀 > porch;
+麴 > yeast;
+窳 > dirty;
+潋 > waves;
+洎 > until;
+饧 > sugar;
+喈 > music;
+吡 > blame;
+陟 > climb;
+鲛 > shark;
+皲 > crack;
+瘊 > warts;
+馕 > bread;
+搦 > grasp;
+垴 > small;
+阝 > place;
+厣 > shell;
+糅 > blend;
+铗 > tongs;
+阏 > block;
+剡 > sharp;
+鲂 > bream;
+溽 > moist;
+怿 > enjoy;
+艹 > grass;
+髑 > skull;
+跽 > kneel;
+簏 > a\-box;
+裥 > folds;
+钣 > plate;
+槊 > spear;
+椋 > fruit;
+缳 > noose;
+绐 > cheat;
+滢 > clear;
+龠 > flute;
+蝤 > larva;
+氆 > thick;
+埭 > a\-dam;
+埽 > broom;
+坼 > split;
+诖 > error;
+鲶 > sheat;
+貅 > brave;
+皤 > white;
+稂 > grass;
+镆 > sword;
+锞 > ingot;
+爝 > torch;
+氡 > radon;
+槭 > maple;
+彘 > swine;
+彖 > a\-hog;
+滗 > drain;
+廑 > a\-hut;
+匏 > gourd;
+蕖 > lotus;
+侔 > equal;
+鳊 > bream;
+篼 > sedan;
+蛞 > snail;
+蛲 > worms;
+虍 > tiger;
+氙 > xenon;
+赇 > bribe;
+璁 > \(gem\);
+绗 > baste;
+萏 > lotus;
+埘 > roost;
+齒 > teeth;
+齅 > smell;
+黮 > black;
+黓 > black;
+麺 > flour;
+麹 > yeast;
+麵 > flour;
+麯 > yeast;
+麫 > flour;
+麪 > flour;
+麤 > rough;
+麘 > scent;
+麁 > rough;
+鹾 > salty;
+鹺 > salty;
+鹹 > salty;
+鸲 > mynah;
+鸛 > crane;
+鸘 > eagle;
+鷸 > snipe;
+鷃 > quail;
+鶵 > chick;
+鶉 > quail;
+鵰 > eagle;
+鵪 > quail;
+鵞 > goose;
+鵝 > goose;
+鴳 > quail;
+鴪 > swoop;
+鴥 > swoop;
+鴝 > mynah;
+鱻 > fresh;
+鱮 > bream;
+鰞 > squid;
+鰍 > loach;
+鰋 > sheat;
+鯿 > bream;
+鯰 > sheat;
+鯨 > whale;
+鯤 > spawn;
+鯋 > shark;
+鯊 > shark;
+鮫 > shark;
+鮉 > bream;
+魴 > bream;
+魆 > black;
+鬒 > black;
+鬎 > favus;
+鬍 > beard;
+鬁 > favus;
+髳 > state;
+髲 > a\-wig;
+髥 > beard;
+髒 > dirty;
+髏 > skull;
+骯 > dirty;
+驩 > happy;
+驦 > horse;
+驖 > black;
+騻 > horse;
+騫 > raise;
+騠 > horse;
+騑 > horse;
+駪 > crowd;
+駞 > camel;
+駑 > tired;
+馡 > scent;
+饢 > bread;
+饘 > gruel;
+饍 > meals;
+饃 > bread;
+餻 > cakes;
+餹 > sugar;
+餳 > sugar;
+餪 > feast;
+餦 > candy;
+餜 > cakes;
+飶 > odour;
+飭 > order;
+飑 > storm;
+颽 > balmy;
+顱 > skull;
+顰 > frown;
+顣 > frown;
+顗 > quiet;
+頾 > beard;
+頠 > quiet;
+頜 > mouth;
+頀 > music;
+韺 > music;
+韤 > socks;
+韙 > right;
+韓 > fence;
+韈 > socks;
+韆 > swing;
+韁 > reins;
+鞾 > boots;
+鞵 > shoes;
+鞨 > tribe;
+鞗 > reins;
+鞃 > board;
+靦 > timid;
+靁 > thick;
+霱 > cloud;
+霙 > sleet;
+雝 > marsh;
+雛 > chick;
+隂 > shady;
+陼 > islet;
+阹 > a\-pen;
+闚 > flash;
+闔 > close;
+闋 > close;
+闊 > broad;
+闃 > alone;
+閼 > block;
+閴 > quiet;
+閦 > crowd;
+閔 > mourn;
+镟 > lathe;
+锼 > carve;
+锓 > carve;
+铘 > sword;
+钃 > metal;
+鑽 > drill;
+鑱 > spade;
+鑚 > drill;
+鑓 > spear;
+鏹 > coins;
+鏵 > spade;
+鏦 > spear;
+鏤 > carve;
+鏟 > spade;
+鏌 > sword;
+鏈 > chain;
+鏇 > lathe;
+鎬 > stove;
+鎧 > armor;
+鎗 > rifle;
+鎍 > chain;
+鍹 > spade;
+鍭 > arrow;
+鍤 > spade;
+鍏 > spade;
+鍍 > plate;
+鍉 > spoon;
+錁 > ingot;
+鋹 > sharp;
+鋸 > a\-saw;
+鋲 > rivet;
+鋟 > carve;
+鋘 > sword;
+銳 > sharp;
+銛 > sharp;
+銓 > weigh;
+鉾 > spear;
+鉼 > plate;
+鉸 > hinge;
+鉚 > rivet;
+鉅 > steel;
+鈒 > spear;
+鈑 > plate;
+鈇 > an\-ax;
+釼 > sword;
+釖 > knife;
+釅 > thick;
+釂 > drain;
+鄻 > spoil;
+郤 > crack;
+遫 > speed;
+遝 > mixed;
+逴 > argue;
+辮 > braid;
+辤 > words;
+辠 > crime;
+輓 > mourn;
+輏 > light;
+輈 > shaft;
+軱 > wheel;
+軜 > reins;
+軌 > track;
+躡 > tread;
+踆 > squat;
+趡 > place;
+贜 > booty;
+贓 > booty;
+贋 > false;
+賕 > bribe;
+賔 > guest;
+賓 > guest;
+賍 > booty;
+賄 > bribe;
+賂 > bribe;
+貿 > trade;
+貤 > steps;
+豔 > plump;
+讙 > cheer;
+讓 > allow;
+讐 > enemy;
+讎 > enemy;
+譙 > tower;
+譌 > false;
+譁 > noise;
+謬 > error;
+謑 > shame;
+謏 > scold;
+諢 > jokes;
+諠 > noisy;
+諐 > fault;
+說 > speak;
+誨 > teach;
+誆 > cheat;
+詿 > error;
+詼 > tease;
+詬 > abuse;
+詣 > reach;
+詡 > boast;
+詛 > curse;
+詖 > argue;
+詑 > cheat;
+詐 > cheat;
+訽 > blame;
+訧 > fault;
+訕 > abuse;
+訓 > teach;
+訏 > boast;
+觔 > catty;
+覬 > covet;
+規 > rules;
+襾 > cover;
+襪 > socks;
+襢 > strip;
+襍 > mixed;
+褻 > dirty;
+褺 > dirty;
+褕 > shirt;
+袵 > lapel;
+衕 > alley;
+衊 > smear;
+衁 > blood;
+蠛 > flies;
+蠗 > \(ape\);
+蠅 > flies;
+蟯 > worms;
+蟢 > caulk;
+蝨 > louse;
+蝘 > gecko;
+蝓 > snail;
+蚴 > larva;
+虣 > cruel;
+虛 > false;
+蘗 > stump;
+蘓 > thyme;
+蘋 > apple;
+藾 > shade;
+藪 > marsh;
+薖 > empty;
+薉 > dirty;
+蒞 > reach;
+葢 > cover;
+葍 > plant;
+萹 > grass;
+莿 > thorn;
+荳 > beans;
+荮 > grass;
+荄 > roots;
+茇 > grass;
+苾 > smell;
+苶 > weary;
+舗 > store;
+舖 > store;
+舋 > split;
+舉 > raise;
+臽 > a\-pit;
+臲 > jumpy;
+臢 > dirty;
+臛 > broth;
+臙 > rouge;
+臐 > broth;
+膶 > liver;
+膇 > swell;
+腫 > swell;
+腡 > lines;
+脹 > swell;
+脶 > lines;
+脢 > flesh;
+脃 > gland;
+肵 > table;
+肕 > tough;
+耞 > flail;
+翽 > whirr;
+翄 > winds;
+羱 > sheep;
+羣 > group;
+罷 > cease;
+罉 > a\-pot;
+纻 > ramie;
+繯 > noose;
+繮 > reins;
+縠 > crepe;
+縐 > crepe;
+縏 > purse;
+緞 > satin;
+綹 > skein;
+綠 > green;
+綌 > cloth;
+絎 > baste;
+絁 > rough;
+紿 > cheat;
+紵 > ramie;
+紝 > weave;
+紗 > gauze;
+紑 > fresh;
+糔 > juice;
+糓 > grain;
+粎 > metre;
+籤 > tally;
+簻 > empty;
+簛 > sieve;
+簒 > usurp;
+簁 > sieve;
+篩 > sieve;
+篏 > inlay;
+箛 > bugle;
+筳 > feast;
+筰 > cable;
+筦 > a\-key;
+竾 > flute;
+竔 > litre;
+窽 > empty;
+穧 > sheaf;
+穢 > dirty;
+穠 > thick;
+穅 > chaff;
+稾 > draft;
+稅 > taxes;
+秇 > skill;
+禠 > happy;
+禎 > lucky;
+祙 > demon;
+礶 > a\-jug;
+礱 > grind;
+磵 > brook;
+磯 > jetty;
+磡 > cliff;
+磛 > cliff;
+磈 > rocky;
+碻 > solid;
+碯 > agate;
+碩 > great;
+碁 > chess;
+硏 > grind;
+砳 > rocky;
+砠 > rocky;
+矓 > faint;
+矈 > dense;
+瞏 > round;
+瞍 > blind;
+瞇 > close;
+睘 > round;
+眹 > pupil;
+眅 > inlay;
+盻 > glare;
+盭 > cruel;
+皽 > scurf;
+皹 > crack;
+皸 > crack;
+皭 > white;
+皫 > white;
+皜 > white;
+皁 > black;
+癲 > crazy;
+癡 > silly;
+瘡 > tumor;
+瘋 > crazy;
+甞 > taste;
+甛 > sweet;
+甖 > a\-pot;
+甎 > brick;
+瓖 > inlay;
+瓈 > glass;
+瑪 > agate;
+瑔 > \(jade;
+瑑 > carve;
+珖 > carat;
+玈 > black;
+獝 > devil;
+獎 > prize;
+狵 > blend;
+牜 > an\-ox;
+牔 > gable;
+爓 > flame;
+爍 > shine;
+燿 > shine;
+燾 > shine;
+燦 > vivid;
+燙 > scald;
+燏 > blaze;
+燄 > flame;
+燂 > smoke;
+熛 > blaze;
+熒 > shine;
+煬 > roast;
+煢 > alone;
+煉 > smelt;
+焔 > flame;
+烓 > stove;
+烋 > boast;
+炰 > roast;
+炧 > ashes;
+灣 > a\-bay;
+灢 > muddy;
+灔 > waves;
+瀺 > sound;
+瀲 > waves;
+瀏 > clear;
+瀋 > juice;
+瀆 > ditch;
+瀅 > clear;
+瀁 > waves;
+濫 > flood;
+澨 > shore;
+澗 > brook;
+澑 > slide;
+澆 > spray;
+潷 > drain;
+潝 > agree;
+漑 > water;
+漈 > shore;
+湩 > muddy;
+湣 > mixed;
+渾 > muddy;
+淸 > clear;
+淢 > ditch;
+淚 > tears;
+淊 > drown;
+浥 > moist;
+洴 > sound;
+洚 > flood;
+洏 > tears;
+泚 > clear;
+沲 > float;
+汳 > henan;
+汎 > float;
+氹 > ditch;
+氥 > xenon;
+氜 > clear;
+殑 > swoon;
+歾 > drown;
+歕 > spurt;
+歓 > happy;
+歈 > songs;
+欼 > drink;
+欸 > sighs;
+欬 > cough;
+欙 > sedan;
+欖 > olive;
+櫱 > yeast;
+櫈 > bench;
+檸 > lemon;
+檯 > table;
+檨 > mango;
+檔 > shelf;
+樴 > stake;
+樕 > shrub;
+樏 > sedan;
+樁 > stake;
+槼 > rules;
+槓 > lever;
+槍 > spear;
+榿 > alder;
+榮 > glory;
+楳 > plums;
+楅 > buard;
+楄 > block;
+椈 > cedar;
+棊 > chess;
+棁 > joist;
+梲 > joist;
+梐 > fence;
+桯 > table;
+桭 > eaves;
+桚 > press;
+栵 > hedge;
+栫 > fence;
+栔 > carve;
+栍 > a\-lot;
+柶 > ladle;
+杧 > mango;
+杕 > alone;
+朮 > skill;
+朖 > clear;
+朅 > brave;
+曵 > trail;
+曨 > vague;
+斆 > teach;
+斅 > teach;
+敺 > expel;
+敔 > gavel;
+敎 > teach;
+攬 > grasp;
+攛 > hurry;
+擻 > shake;
+擲 > throw;
+擰 > pinch;
+擠 > crowd;
+撳 > press;
+摳 > raise;
+摏 > pound;
+搤 > seize;
+搊 > pluck;
+搉 > knock;
+揵 > carry;
+揅 > grind;
+掄 > swing;
+捿 > perch;
+捫 > stoke;
+挌 > fight;
+拋 > throw;
+拃 > grope;
+扢 > caper;
+戭 > spear;
+戣 > lance;
+戞 > lance;
+戔 > small;
+懽 > happy;
+懥 > angry;
+懠 > angry;
+懌 > enjoy;
+憭 > clear;
+憚 > dread;
+憊 > tired;
+慬 > brave;
+慍 > angry;
+愾 > anger;
+愷 > enjoy;
+愞 > timid;
+愃 > relax;
+悾 > naive;
+悰 > enjoy;
+悆 > happy;
+恵 > favor;
+恓 > vexed;
+彑 > snout;
+彐 > snout;
+彂 > issue;
+弉 > large;
+廕 > shade;
+幭 > cover;
+幪 > cover;
+幦 > cover;
+幠 > cover;
+帒 > a\-bag;
+帋 > paper;
+巭 > study;
+巛 > river;
+巖 > cliff;
+巌 > cliff;
+巋 > grand;
+巉 > steep;
+巃 > lofty;
+嶰 > gorge;
+嶡 > table;
+嶞 > ridge;
+嶔 > lofty;
+嶇 > steep;
+嵜 > rough;
+嵒 > cliff;
+嵂 > lofty;
+崱 > lofty;
+崚 > hilly;
+崕 > cliff;
+峽 > gorge;
+峩 > lofty;
+屶 > lofty;
+屴 > lofty;
+屪 > penis;
+屌 > penis;
+尰 > swell;
+尙 > still;
+寬 > broad;
+寛 > broad;
+寁 > quick;
+宻 > dense;
+宍 > flesh;
+孿 > twins;
+孖 > twins;
+嫚 > scorn;
+姪 > niece;
+奰 > anger;
+奬 > prize;
+奨 > prize;
+奝 > large;
+壠 > mound;
+壟 > grave;
+壆 > stiff;
+墺 > walls;
+墳 > grave;
+墝 > stony;
+墍 > paint;
+墈 > cliff;
+塼 > brick;
+塜 > dusty;
+塙 > truly;
+塒 > roost;
+塋 > grave;
+塈 > paint;
+堿 > salty;
+堽 > mound;
+堖 > small;
+埳 > a\-pit;
+埌 > waste;
+埆 > stony;
+垚 > mound;
+坿 > mound;
+坰 > wilds;
+圌 > fence;
+囑 > order;
+囅 > smile;
+嚮 > guide;
+嚭 > mound;
+嚬 > frown;
+嚡 > rough;
+嚐 > taste;
+嚇 > scare;
+噺 > story;
+噴 > spurt;
+噭 > shout;
+噦 > belch;
+嘢 > thing;
+嘒 > sharp;
+嗛 > pouch;
+嗙 > boast;
+嗐 > alas\!;
+喴 > hello;
+啲 > a\-few;
+啢 > ounce;
+啍 > creak;
+唡 > ounce;
+唎 > sound;
+哶 > bleat;
+哕 > belch;
+咢 > sound;
+咍 > laugh;
+吰 > clang;
+吣 > vomit;
+叚 > false;
+厺 > to\-go;
+厹 > spear;
+厴 > shell;
+厪 > a\-hut;
+厖 > bulky;
+卻 > still;
+卬 > lofty;
+匜 > basin;
+勻 > equal;
+劔 > sword;
+劒 > sword;
+劎 > sword;
+剱 > sword;
+剠 > brand;
+刂 > knife;
+凼 > ditch;
+凈 > clean;
+冩 > write;
+冧 > a\-bud;
+冚 > cover;
+冖 > cover;
+冁 > smile;
+儼 > grave;
+儎 > carry;
+儌 > lucky;
+僿 > small;
+僄 > light;
+傫 > tired;
+偐 > false;
+偁 > state;
+倖 > lucky;
+俶 > start;
+侐 > quiet;
+侁 > crowd;
+佺 > fairy;
+佌 > small;
+伩 > trust;
+仫 > tribe;
+亾 > death;
+亱 > night;
+乕 > tiger;
+丵 > thick;
+丯 > dense;
+丮 > catch;
+丌 > table;
+丅 > under;
+丄 > above;
+䶓 > ramie;
+䶏 > tears;
+䶋 > sound;
+䶇 > a\-rat;
+䶆 > a\-rat;
+䵭 > black;
+䵥 > black;
+䵟 > black;
+䴺 > cakes;
+䴹 > cakes;
+䴵 > cakes;
+䴲 > flour;
+䴞 > salty;
+䳽 > crane;
+䳱 > ducks;
+䳘 > goose;
+䳗 > goose;
+䲡 > loach;
+䲑 > spawn;
+䱜 > shark;
+䱖 > shark;
+䱋 > spawn;
+䰢 > ghost;
+䰗 > a\-lot;
+䰒 > vague;
+䰑 > beard;
+䰅 > beard;
+䯾 > hairy;
+䯸 > a\-wig;
+䯍 > bones;
+䭽 > group;
+䭦 > cakes;
+䭟 > cakes;
+䭐 > cakes;
+䭎 > cakes;
+䭅 > cakes;
+䬿 > small;
+䬵 > syrup;
+䬮 > syrup;
+䫵 > twins;
+䫖 > timid;
+䫎 > short;
+䪻 > a\-cap;
+䪱 > cheek;
+䪯 > sound;
+䪛 > group;
+䪘 > right;
+䪗 > shoes;
+䪂 > reins;
+䩺 > boots;
+䩖 > shoes;
+䩕 > clogs;
+䩓 > boots;
+䩅 > broad;
+䨹 > swift;
+䨷 > sleet;
+䨘 > sleet;
+䨋 > cruel;
+䨄 > quail;
+䨁 > ducks;
+䧽 > small;
+䧪 > sissy;
+䧎 > a\-pit;
+䧆 > a\-pit;
+䦾 > lofty;
+䦢 > broad;
+䦞 > extra;
+䦗 > quiet;
+䦔 > a\-peg;
+䥵 > lines;
+䥘 > wrong;
+䥓 > a\-hoe;
+䥁 > armor;
+䤺 > an\-ax;
+䤴 > armor;
+䤪 > short;
+䤢 > metal;
+䤜 > blunt;
+䤚 > plums;
+䤙 > dregs;
+䣱 > drunk;
+䣧 > black;
+䢔 > mixed;
+䢑 > angry;
+䡖 > still;
+䠢 > weary;
+䠠 > to\-go;
+䟠 > swift;
+䟜 > break;
+䞈 > money;
+䝭 > wages;
+䝫 > money;
+䝒 > a\-sow;
+䝏 > a\-sow;
+䝎 > a\-pig;
+䝊 > a\-sow;
+䝅 > a\-pig;
+䝃 > beans;
+䜴 > brave;
+䜎 > sound;
+䜍 > sweet;
+䜌 > chaos;
+䜊 > noise;
+䛭 > angry;
+䛡 > words;
+䚴 > anger;
+䚟 > horns;
+䚉 > o\-see;
+䘊 > flies;
+䗕 > bends;
+䖎 > tiger;
+䖋 > cruel;
+䖈 > cruel;
+䒸 > grass;
+䒑 > grass;
+䑚 > sweet;
+䑕 > a\-rat;
+䑁 > fatty;
+䐬 > crisp;
+䐝 > thick;
+䐗 > a\-pig;
+䐇 > clear;
+䏵 > plump;
+䏳 > olein;
+䏯 > moles;
+䏧 > fatty;
+䏚 > small;
+䎐 > hairy;
+䎇 > quick;
+䎄 > hairy;
+䍥 > smoky;
+䍌 > a\-jar;
+䌻 > wings;
+䌑 > tight;
+䌐 > ropes;
+䋵 > quick;
+䋥 > lines;
+䋚 > wings;
+䋙 > reins;
+䊾 > ropes;
+䊻 > silky;
+䊹 > small;
+䊀 > paste;
+䉿 > paste;
+䉞 > a\-box;
+䈉 > a\-fan;
+䇲 > tongs;
+䇤 > sharp;
+䇂 > fault;
+䆹 > empty;
+䆜 > empty;
+䆁 > syrup;
+䅵 > chaff;
+䅙 > grass;
+䅘 > wheat;
+䅆 > dense;
+䄾 > thick;
+䄥 > a\-god;
+䄢 > pious;
+䃬 > rocky;
+䃛 > chain;
+䃙 > rocks;
+䃗 > rocks;
+䂽 > rocks;
+䂼 > rocks;
+䂺 > rocks;
+䂰 > rocks;
+䂮 > stone;
+䂦 > tired;
+䂟 > rocks;
+䂖 > rocks;
+䂕 > short;
+䂔 > short;
+䂑 > short;
+䂏 > short;
+䁫 > muddy;
+䁟 > wrong;
+䁗 > light;
+䁍 > blind;
+䀼 > angry;
+䀇 > a\-pot;
+㿷 > rough;
+㿮 > green;
+㿩 > light;
+㿥 > shine;
+㿤 > white;
+㿝 > sweet;
+㿕 > ulcer;
+㾰 > choke;
+㾧 > favus;
+㾡 > ulcer;
+㾚 > itchy;
+㾐 > ulcer;
+㽿 > ulcer;
+㽡 > field;
+㼏 > a\-bad;
+㻭 > clear;
+㺃 > a\-dog;
+㹻 > puppy;
+㹷 > swine;
+㹋 > a\-cow;
+㹀 > a\-cow;
+㸺 > a\-cow;
+㸅 > ashes;
+㸃 > a\-dot;
+㷿 > flame;
+㷥 > steam;
+㷔 > flame;
+㷑 > smoke;
+㷇 > great;
+㶳 > ashes;
+㶰 > flame;
+㶦 > ashes;
+㶖 > rapid;
+㵹 > waves;
+㴃 > tears;
+㳹 > flood;
+㳰 > ditch;
+㳮 > urine;
+㳛 > dirty;
+㲧 > hairy;
+㲆 > noise;
+㰼 > greed;
+㰪 > sound;
+㰥 > laugh;
+㰢 > cough;
+㯷 > dates;
+㮥 > sails;
+㮢 > fruit;
+㮕 > fruit;
+㬶 > flesh;
+㬳 > light;
+㬦 > brave;
+㬚 > light;
+㬕 > light;
+㬏 > light;
+㬊 > light;
+㫼 > clear;
+㫹 > light;
+㫶 > light;
+㫰 > light;
+㫫 > clear;
+㫜 > light;
+㫛 > light;
+㫗 > thick;
+㫕 > light;
+㩡 > shake;
+鶴 > crane;
+㨛 > swift;
+㨗 > alert;
+嗀 > vomit;
+廓 > broad;
+糖 > sugar;
+㨃 > a\-row;
+炙 > roast;
+粒 > grain;
+立 > stand;
+溺 > drown;
+離 > leave;
+利 > gains;
+㧛 > thick;
+輪 > wheel;
+類 > class;
+㧍 > alike;
+溜 > slide;
+樂 > happy;
+尿 > urine;
+㦷 > brave;
+㦮 > money;
+說 > speak;
+裂 > split;
+㦡 > happy;
+烈 > fiery;
+蓮 > lotus;
+㦘 > swift;
+煉 > smelt;
+㦑 > anger;
+力 > power;
+女 > woman;
+㥿 > proud;
+㥷 > quiet;
+㥲 > anger;
+說 > speak;
+北 > north;
+怒 > anger;
+樂 > happy;
+㥓 > happy;
+累 > tired;
+淚 > tears;
+㥊 > angry;
+賂 > bribe;
+壟 > grave;
+㥂 > quick;
+綠 > green;
+碌 > rough;
+鷺 > heron;
+㤱 > anger;
+勞 > labor;
+朗 > clear;
+濫 > flood;
+㤣 > noble;
+㤜 > crazy;
+酪 > cream;
+㤙 > grace;
+烙 > brand;
+樂 > happy;
+㣲 > small;
+㣟 > to\-go;
+㣏 > still;
+㣉 > labor;
+㢛 > small;
+㢙 > a\-hut;
+㡶 > dwell;
+㡴 > sound;
+㡕 > sharp;
+㡐 > flags;
+㡌 > a\-hat;
+㡇 > colar;
+㡄 > colar;
+㠪 > great;
+㠕 > lofty;
+㠍 > lofty;
+㟵 > ridge;
+㟮 > lofty;
+㟠 > ridge;
+㟅 > lofty;
+㟁 > shore;
+㞾 > a\-nun;
+㞙 > urine;
+㞕 > chips;
+㞒 > lusty;
+㞏 > small;
+㞃 > tired;
+㝽 > short;
+㝺 > small;
+㝤 > night;
+㝣 > still;
+㝜 > night;
+㝖 > right;
+㝕 > peace;
+㝏 > alone;
+㝇 > quail;
+㜽 > child;
+㜧 > plump;
+㜜 > proud;
+㛨 > chaos;
+㛚 > equal;
+㛃 > clean;
+㛁 > quick;
+㚮 > happy;
+㚕 > great;
+㚀 > lofty;
+㙯 > skill;
+㙥 > muddy;
+㙓 > earth;
+㙄 > below;
+㘋 > sound;
+㗅 > angry;
+㖤 > wrath;
+㖔 > silly;
+㖏 > angry;
+㖀 > sound;
+㕳 > noisy;
+㕖 > plain;
+㕎 > caves;
+㕁 > still;
+㔻 > great;
+㓻 > tough;
+㓝 > a\-law;
+㓜 > young;
+㓛 > merit;
+㓙 > cruel;
+㓗 > clean;
+㓁 > a\-net;
+㒩 > naked;
+㒌 > along;
+㑶 > anger;
+㑩 > smart;
+㑨 > great;
+㑦 > anger;
+㑗 > a\-god;
+㑋 > small;
+㑁 > short;
+㐱 > bushy;
+㐫 > cruel;
+有 > have;
+知 > know;
+这 > this;
+矜 > pity;
+忙 > busy;
+来 > come;
+近 > near;
+道 > path;
+也 > also;
+时 > time;
+年 > year;
+瞻 > look;
+辺 > edge;
+就 > just;
+那 > that;
+生 > life;
+自 > self;
+瞬 > wink;
+过 > pass;
+循 > obey;
+從 > from;
+従 > from;
+多 > much;
+好 > good;
+彼 > that;
+起 > rise;
+只 > only;
+作 > make;
+当 > bear;
+形 > form;
+看 > look;
+开 > open;
+手 > hand;
+弱 > weak;
+本 > root;
+头 > head;
+真 > real;
+面 > face;
+公 > fair;
+同 > same;
+眞 > real;
+从 > from;
+动 > move;
+长 > long;
+載 > load;
+将 > will;
+但 > only;
+身 > body;
+高 > high;
+把 > hold;
+此 > this;
+实 > real;
+盥 > wash;
+月 > moon;
+种 > seed;
+軍 > army;
+車 > cart;
+己 > self;
+部 > part;
+名 > name;
+皮 > skin;
+机 > desk;
+给 > give;
+等 > rank;
+座 > seat;
+很 > very;
+最 > most;
+店 > shop;
+躍 > skip;
+走 > walk;
+四 > four;
+门 > gate;
+东 > east;
+庁 > hall;
+西 > west;
+平 > flat;
+登 > rise;
+听 > hear;
+幸 > luck;
+蹴 > kick;
+军 > army;
+五 > five;
+帷 > tent;
+太 > very;
+帶 > belt;
+帳 > tent;
+帯 > belt;
+体 > body;
+席 > seat;
+希 > rare;
+踊 > leap;
+书 > book;
+九 > nine;
+跳 > jump;
+路 > road;
+命 > life;
+痩 > thin;
+活 > live;
+左 > left;
+巣 > nest;
+表 > show;
+跟 > heel;
+车 > cart;
+痛 > pain;
+痕 > scar;
+痒 > itch;
+感 > feel;
+足 > foot;
+金 > gold;
+何 > what;
+嶮 > high;
+更 > more;
+疋 > roll;
+做 > work;
+计 > plan;
+當 > bear;
+王 > king;
+各 > each;
+留 > stop;
+畏 > fear;
+边 > edge;
+男 > male;
+风 > wind;
+崗 > post;
+毛 > hair;
+峰 > peak;
+爱 > love;
+瓦 > tile;
+賣 > sell;
+賃 > rent;
+貸 > lend;
+岸 > bank;
+结 > knot;
+岬 > cape;
+流 > flow;
+貧 > poor;
+青 > blue;
+管 > pipe;
+負 > load;
+连 > join;
+队 > team;
+带 > belt;
+展 > open;
+屑 > bits;
+领 > neck;
+屈 > bend;
+居 > live;
+尾 > tail;
+半 > half;
+候 > wait;
+步 > step;
+深 > deep;
+区 > area;
+尋 > seek;
+求 > seek;
+球 > ball;
+告 > tell;
+寸 > inch;
+實 > real;
+满 > fill;
+李 > plum;
+息 > rest;
+寒 > cold;
+寄 > send;
+脸 > face;
+宿 > stop;
+取 > take;
+室 > room;
+実 > real;
+宛 > seem;
+孩 > baby;
+广 > wide;
+玉 > jade;
+玄 > deep;
+火 > fire;
+讀 > read;
+譽 > fame;
+则 > rule;
+首 > head;
+失 > lose;
+拿 > take;
+斯 > this;
+读 > read;
+包 > wrap;
+猶 > like;
+落 > fall;
+济 > help;
+喜 > like;
+謡 > sing;
+编 > knit;
+谈 > talk;
+拉 > pull;
+謀 > plan;
+狼 > wolf;
+杀 > kill;
+根 > root;
+嫌 > hate;
+談 > talk;
+克 > gram;
+状 > form;
+示 > show;
+冲 > soar;
+読 > read;
+誉 > fame;
+推 > push;
+称 > call;
+試 > test;
+号 > mark;
+亚 > asia;
+港 > port;
+般 > sort;
+爪 > claw;
+刚 > hard;
+陆 > land;
+确 > sure;
+計 > plan;
+具 > tool;
+威 > pomp;
+帮 > help;
+线 > line;
+触 > butt;
+角 > horn;
+燒 > burn;
+节 > knot;
+燃 > burn;
+岁 > year;
+妻 > wife;
+需 > need;
+酒 > wine;
+铁 > iron;
+覗 > peek;
+闻 > hear;
+标 > mark;
+医 > cure;
+襲 > raid;
+煮 > cook;
+土 > soil;
+软 > soft;
+煤 > coal;
+仅 > only;
+套 > case;
+户 > door;
+焼 > burn;
+项 > neck;
+背 > back;
+焚 > burn;
+暗 > dark;
+须 > must;
+製 > make;
+裸 > bare;
+売 > sell;
+树 > tree;
+沉 > sink;
+职 > duty;
+细 > fine;
+補 > mend;
+停 > stop;
+助 > help;
+冷 > cold;
+墮 > fall;
+致 > send;
+木 > tree;
+袢 > robe;
+旁 > side;
+炊 > cook;
+灼 > burn;
+塵 > dust;
+塩 > salt;
+歌 > song;
+堂 > hall;
+试 > test;
+灌 > pour;
+验 > test;
+塀 > wall;
+止 > stop;
+堵 > wall;
+堤 > dike;
+堕 > fall;
+恶 > evil;
+堆 > heap;
+慢 > slow;
+堅 > hard;
+堀 > cave;
+蟻 > ants;
+藏 > hide;
+负 > load;
+埋 > bury;
+澹 > calm;
+垢 > dirt;
+融 > melt;
+潮 > tide;
+坦 > flat;
+潜 > hide;
+救 > save;
+丝 > silk;
+齊 > even;
+鼻 > nose;
+漬 > soak;
+鼓 > drum;
+永 > long;
+漏 > leak;
+录 > copy;
+遇 > meet;
+滿 > fill;
+船 > ship;
+黴 > mold;
+滴 > drip;
+雨 > rain;
+蛙 > frog;
+滑 > slip;
+麻 > hemp;
+蚤 > flea;
+齐 > even;
+準 > rule;
+溌 > pour;
+充 > fill;
+鹿 > deer;
+寻 > seek;
+宁 > calm;
+鹽 > salt;
+沙 > sand;
+卖 > sell;
+顺 > obey;
+號 > mark;
+善 > good;
+噛 > bite;
+良 > good;
+坚 > hard;
+噂 > meet;
+拍 > clap;
+掉 > turn;
+済 > help;
+哭 > weep;
+嘆 > sigh;
+午 > noon;
+卡 > card;
+雪 > snow;
+淵 > gulf;
+淡 > weak;
+嗟 > sigh;
+淑 > good;
+藍 > blue;
+淋 > drip;
+涼 > cool;
+载 > load;
+刺 > stab;
+薪 > fuel;
+销 > melt;
+鱼 > fish;
+喚 > call;
+喘 > pant;
+盘 > tray;
+薔 > rose;
+喇 > horn;
+薄 > thin;
+啼 > weep;
+架 > rack;
+浸 > soak;
+款 > item;
+浪 > wave;
+蕩 > pond;
+洪 > vast;
+镇 > town;
+浄 > pure;
+旅 > trip;
+唾 > spit;
+唱 > sing;
+蔵 > hide;
+唯 > only;
+洩 > leak;
+洞 > cave;
+骨 > bone;
+洗 > wash;
+唖 > dumb;
+鴉 > crow;
+唇 > lips;
+泳 > dive;
+哲 > wise;
+哩 > mile;
+墙 > wall;
+圣 > holy;
+鳥 > bird;
+跃 > skip;
+晓 > dawn;
+泄 > leak;
+隐 > hide;
+蒼 > blue;
+恐 > fear;
+沼 > lake;
+付 > give;
+厅 > hall;
+咬 > bite;
+腿 > legs;
+沖 > pour;
+硬 > hard;
+沈 > sink;
+售 > sell;
+遗 > lose;
+探 > find;
+葬 > bury;
+缓 > slow;
+葦 > reed;
+池 > pool;
+烧 > burn;
+葉 > leaf;
+束 > bind;
+呆 > dull;
+吻 > kiss;
+吹 > blow;
+休 > rest;
+叹 > sigh;
+氏 > clan;
+签 > sign;
+氈 > felt;
+奶 > milk;
+毬 > ball;
+菩 > herb;
+叢 > bush;
+挂 > hang;
+航 > sail;
+毘 > help;
+拳 > fist;
+乘 > ride;
+袁 > robe;
+址 > site;
+毆 > beat;
+殿 > hall;
+殺 > kill;
+核 > seed;
+补 > mend;
+赞 > help;
+亦 > also;
+歳 > year;
+柔 > soft;
+歩 > step;
+惜 > pity;
+魚 > fish;
+歎 > sigh;
+魂 > soul;
+乔 > tall;
+粮 > food;
+茫 > vast;
+谋 > plan;
+敏 > fast;
+茎 > stem;
+零 > zero;
+荡 > pond;
+勾 > hook;
+犹 > like;
+髮 > hair;
+髪 > hair;
+乃 > then;
+抬 > lift;
+體 > body;
+苔 > moss;
+動 > move;
+启 > open;
+冒 > risk;
+穷 > poor;
+檣 > mast;
+侧 > side;
+旦 > dawn;
+纯 > pure;
+闭 > shut;
+凉 > cool;
+碗 > bowl;
+剥 > peel;
+滚 > turn;
+润 > soft;
+剛 > hard;
+驗 > test;
+則 > rule;
+蓝 > blue;
+樹 > tree;
+蛋 > eggs;
+促 > urge;
+颜 > face;
+贫 > poor;
+杰 > hero;
+舟 > boat;
+験 > test;
+恋 > love;
+迟 > late;
+穴 > cave;
+赖 > rely;
+駛 > sail;
+駒 > colt;
+凌 > pure;
+乌 > crow;
+岗 > post;
+铺 > shop;
+馴 > tame;
+伍 > five;
+躲 > hide;
+箱 > case;
+帐 > tent;
+膝 > knee;
+膚 > skin;
+悉 > know;
+册 > book;
+冊 > book;
+盈 > fill;
+拖 > drag;
+昏 > dusk;
+戒 > warn;
+页 > page;
+尘 > dust;
+脣 > lips;
+井 > well;
+汪 > vast;
+脇 > ribs;
+脅 > ribs;
+恰 > just;
+椀 > bowl;
+描 > copy;
+乏 > lack;
+胞 > womb;
+棚 > tent;
+怜 > pity;
+佳 > good;
+鸟 > bird;
+僅 > only;
+風 > wind;
+梨 > pear;
+弯 > bend;
+亏 > lose;
+傑 > hero;
+酸 > tart;
+聽 > hear;
+職 > duty;
+桶 > pail;
+聴 > hear;
+瘦 > thin;
+側 > side;
+绩 > spin;
+聞 > hear;
+聖 > holy;
+顔 > face;
+顏 > face;
+牵 > drag;
+頼 > rely;
+租 > rent;
+頸 > neck;
+扭 > turn;
+頭 > head;
+擦 > wipe;
+殷 > many;
+頚 > neck;
+領 > neck;
+盼 > look;
+吟 > sing;
+耕 > plow;
+苍 > blue;
+順 > obey;
+項 > neck;
+宏 > wide;
+頁 > page;
+娃 > baby;
+暖 > warm;
+锁 > lock;
+砍 > hack;
+係 > bind;
+挨 > near;
+慈 > kind;
+羹 > soup;
+羮 > soup;
+鞭 > whip;
+羨 > envy;
+窝 > nest;
+杜 > stop;
+撤 > omit;
+來 > come;
+東 > east;
+筹 > chip;
+稀 > rare;
+杖 > cane;
+拨 > move;
+踢 > kick;
+迁 > move;
+佇 > wait;
+袭 > raid;
+驶 > sail;
+霰 > hail;
+惧 > fear;
+纽 > knot;
+丛 > bush;
+悠 > long;
+曼 > long;
+書 > book;
+缠 > wrap;
+滋 > grow;
+碧 > jade;
+唤 > call;
+胁 > ribs;
+谱 > list;
+隱 > hide;
+丘 > hill;
+亞 > asia;
+纒 > wrap;
+杆 > pole;
+纏 > wrap;
+隊 > team;
+悬 > hang;
+隈 > cove;
+崔 > high;
+纂 > edit;
+唉 > alas;
+暁 > dawn;
+笼 > cage;
+陸 > land;
+繪 > draw;
+繩 > rope;
+慨 > sigh;
+乗 > ride;
+绳 > rope;
+時 > time;
+矿 > mine;
+遣 > send;
+镖 > dart;
+遵 > obey;
+兆 > omen;
+钓 > fish;
+披 > wear;
+昇 > rise;
+縄 > rope;
+昂 > rise;
+緩 > slow;
+編 > knit;
+抄 > copy;
+债 > debt;
+肤 > skin;
+歇 > rest;
+開 > open;
+閉 > shut;
+斉 > even;
+斃 > kill;
+罕 > rare;
+門 > gate;
+長 > long;
+贷 > lend;
+絵 > draw;
+颈 > neck;
+絲 > silk;
+脖 > neck;
+堡 > fort;
+絨 > silk;
+給 > give;
+赐 > give;
+颂 > laud;
+結 > knot;
+砖 > tile;
+絆 > loop;
+哑 > dumb;
+細 > fine;
+滩 > bank;
+钉 > nail;
+哄 > coax;
+铃 > bell;
+純 > pure;
+紐 > knot;
+紋 > line;
+拚 > risk;
+糸 > silk;
+糧 > food;
+契 > deed;
+懒 > lazy;
+猎 > hunt;
+嵩 > high;
+盐 > salt;
+摺 > fold;
+籠 > cage;
+陵 > hill;
+裹 > wrap;
+绘 > draw;
+鐵 > iron;
+鐡 > iron;
+篭 > cage;
+篤 > deep;
+挽 > pull;
+粹 > pure;
+節 > knot;
+掣 > drag;
+掛 > hang;
+鎖 > lock;
+箋 > note;
+捲 > curl;
+泼 > pour;
+秃 > bald;
+録 > copy;
+绑 > bind;
+鸭 > duck;
+掀 > lift;
+纹 > line;
+趟 > time;
+吼 > roar;
+窺 > peep;
+窶 > poor;
+叠 > pile;
+啸 > roar;
+窮 > poor;
+銑 > mill;
+婴 > baby;
+躬 > body;
+毙 > kill;
+逸 > flee;
+琼 > jade;
+鉄 > iron;
+挪 > move;
+晌 > noon;
+戸 > door;
+鈴 > bell;
+稱 > call;
+贱 > mean;
+種 > seed;
+钩 > hook;
+戀 > love;
+懼 > fear;
+懸 > hang;
+釣 > fish;
+釘 > nail;
+鸦 > crow;
+狮 > lion;
+妮 > maid;
+禿 > bald;
+窑 > kiln;
+塘 > pond;
+纤 > fine;
+醫 > cure;
+憩 > rest;
+憐 > pity;
+憎 > hate;
+羡 > envy;
+慾 > lust;
+祷 > pray;
+舆 > cart;
+祈 > pray;
+嫩 > soft;
+蹄 > hoof;
+愛 > love;
+鄙 > mean;
+惡 > evil;
+沧 > blue;
+確 > sure;
+悪 > evil;
+帆 > sail;
+涵 > soak;
+邊 > edge;
+澡 > wash;
+遺 > lose;
+遲 > late;
+烤 > bake;
+峻 > high;
+過 > pass;
+運 > luck;
+尬 > limp;
+遅 > late;
+遁 > hide;
+週 > week;
+佑 > help;
+連 > join;
+怠 > idle;
+這 > this;
+砂 > sand;
+胶 > glue;
+谣 > sing;
+梳 > comb;
+祁 > pray;
+啤 > beer;
+铸 > melt;
+躯 > body;
+酿 > brew;
+捣 > hull;
+玫 > rose;
+噢 > moan;
+纺 > spin;
+窟 > hole;
+兑 > cash;
+冥 > dark;
+觅 > seek;
+沸 > boil;
+扁 > flat;
+眨 > wink;
+瘾 > rash;
+黯 > dark;
+妞 > girl;
+俏 > like;
+孽 > evil;
+弊 > evil;
+妃 > wife;
+壤 > soil;
+翔 > soar;
+巩 > bind;
+帜 > flag;
+蕾 > buds;
+铅 > lead;
+绒 > silk;
+窥 > peep;
+锣 > gong;
+撼 > move;
+嗦 > suck;
+轴 > axle;
+涕 > tear;
+笃 > deep;
+窍 > hole;
+扳 > pull;
+遏 > stop;
+吆 > bawl;
+熔 > melt;
+聋 > deaf;
+募 > levy;
+疤 > scar;
+蚁 > ants;
+悯 > pity;
+烘 > bake;
+牟 > make;
+崭 > high;
+巢 > nest;
+沮 > stop;
+湛 > deep;
+晦 > dark;
+驹 > colt;
+诫 > warn;
+墩 > heap;
+巍 > high;
+攒 > save;
+绊 > loop;
+懈 > idle;
+殴 > beat;
+皂 > soap;
+蟹 > crab;
+绷 > bind;
+匿 > hide;
+唠 > chat;
+苇 > reed;
+拽 > drag;
+烹 > boil;
+啃 > gnaw;
+羔 > lamb;
+锈 > rust;
+亢 > high;
+肋 > ribs;
+衲 > mend;
+掐 > hold;
+懦 > weak;
+腓 > calf;
+彷 > like;
+骡 > mule;
+醇 > rich;
+驯 > tame;
+纬 > woof;
+犁 > plow;
+拯 > help;
+龚 > give;
+蛤 > clam;
+戮 > kill;
+毡 > felt;
+咀 > suck;
+呱 > wail;
+戎 > arms;
+蔼 > lush;
+茸 > soft;
+礁 > reef;
+闩 > bolt;
+涤 > wash;
+渍 > soak;
+跛 > lame;
+蟆 > frog;
+偌 > thus;
+邑 > area;
+匾 > flat;
+笺 > note;
+箍 > hoop;
+噬 > bite;
+蟠 > coil;
+赁 > rent;
+腌 > salt;
+掂 > heft;
+遐 > afar;
+甬 > path;
+僮 > page;
+垛 > heap;
+吠 > bark;
+踵 > heel;
+蛾 > moth;
+耘 > weed;
+暄 > warm;
+螃 > crab;
+啕 > wail;
+蟾 > toad;
+筏 > raft;
+籽 > seed;
+犊 > calf;
+煦 > kind;
+臊 > rank;
+撬 > lift;
+毗 > help;
+蹿 > leap;
+咆 > roar;
+鲤 > carp;
+辕 > axle;
+瀚 > vast;
+芋 > taro;
+雹 > hail;
+鹪 > wren;
+骼 > bone;
+莘 > long;
+谧 > calm;
+蜕 > molt;
+焊 > weld;
+耙 > rake;
+缄 > seal;
+漩 > eddy;
+饵 > bait;
+辍 > stop;
+谑 > jeer;
+恁 > that;
+傩 > rich;
+瘠 > thin;
+嵘 > high;
+峥 > high;
+钅 > gold;
+湮 > bury;
+颏 > chin;
+铎 > bell;
+蔷 > rose;
+豺 > wolf;
+熨 > iron;
+呷 > suck;
+闳 > gate;
+芮 > tiny;
+陨 > fall;
+璨 > gems;
+泵 > pump;
+翱 > soar;
+戕 > kill;
+莓 > moss;
+豌 > peas;
+堑 > moat;
+潼 > high;
+疵 > flaw;
+迤 > wind;
+怵 > fear;
+榈 > palm;
+儆 > warn;
+嗥 > roar;
+礴 > fill;
+鬃 > mane;
+岐 > high;
+啻 > only;
+咝 > hiss;
+揄 > lift;
+潸 > weep;
+讴 > sing;
+趄 > weak;
+邋 > rags;
+胤 > heir;
+栉 > comb;
+粕 > lees;
+颔 > chin;
+啮 > bite;
+轲 > axle;
+孱 > weak;
+挞 > flog;
+镫 > lamp;
+臧 > good;
+鹜 > duck;
+昕 > dawn;
+锷 > high;
+铄 > melt;
+辶 > walk;
+阄 > lots;
+锌 > zinc;
+荻 > reed;
+喙 > beak;
+蜍 > toad;
+缢 > hang;
+柢 > root;
+窠 > nest;
+肛 > anus;
+誊 > copy;
+跎 > slip;
+聩 > deaf;
+痂 > scab;
+鸢 > kite;
+抻 > pull;
+沤 > soak;
+涿 > drip;
+牦 > tail;
+猷 > plan;
+墉 > wall;
+暹 > rise;
+闱 > gate;
+轭 > yoke;
+弭 > stop;
+洵 > true;
+瓯 > bowl;
+濠 > moat;
+圩 > dike;
+羸 > weak;
+癯 > thin;
+瘢 > scar;
+幄 > tent;
+泅 > swim;
+矾 > alum;
+蚩 > worm;
+鸷 > hawk;
+蹇 > lame;
+耋 > aged;
+苒 > lush;
+逋 > flee;
+藓 > moss;
+鬻 > sell;
+泫 > weep;
+啭 > sing;
+坨 > lump;
+蠹 > moth;
+疱 > acne;
+锒 > lock;
+暝 > dark;
+煊 > warm;
+爨 > oven;
+囝 > baby;
+垩 > holy;
+怼 > hate;
+崴 > high;
+拊 > slap;
+扌 > hand;
+钤 > lock;
+樯 > mast;
+骟 > geld;
+燹 > fire;
+馐 > food;
+圹 > tomb;
+龈 > gums;
+蜊 > clam;
+痖 > dumb;
+歆 > like;
+赉 > give;
+铣 > mill;
+灏 > vast;
+瘙 > itch;
+闼 > door;
+坌 > dust;
+椤 > tree;
+阋 > feud;
+嵯 > high;
+酰 > acyl;
+瘗 > bury;
+疣 > wart;
+穑 > farm;
+槎 > raft;
+桴 > raft;
+溏 > pool;
+礻 > cult;
+棰 > flog;
+狷 > rash;
+蒹 > reed;
+佤 > kawa;
+麸 > bran;
+鸱 > kite;
+缫 > draw;
+纡 > bend;
+嵬 > high;
+菖 > iris;
+愍 > pity;
+嫱 > lady;
+莨 > herb;
+谝 > brag;
+氖 > neon;
+颛 > good;
+燠 > warm;
+潴 > pond;
+堙 > bury;
+隗 > high;
+丿 > line;
+鲮 > carp;
+跖 > sole;
+蚋 > gnat;
+汔 > near;
+痤 > acne;
+贶 > give;
+纟 > silk;
+侑 > help;
+耪 > plow;
+觜 > beak;
+筢 > rake;
+朐 > warm;
+觇 > peek;
+檗 > tree;
+菡 > buds;
+偾 > ruin;
+隹 > bird;
+舡 > boat;
+疒 > sick;
+噍 > chew;
+埝 > bank;
+鲩 > carp;
+鲒 > clam;
+襞 > fold;
+灬 > fire;
+脒 > open;
+柙 > cage;
+湔 > wash;
+洳 > damp;
+尢 > weak;
+髟 > hair;
+鳎 > sole;
+艚 > ship;
+鹩 > wren;
+炱 > soot;
+膪 > pork;
+栊 > cage;
+绲 > cord;
+宀 > roof;
+闶 > door;
+猊 > lion;
+岵 > hill;
+卩 > seal;
+诎 > bend;
+倮 > bare;
+龔 > give;
+齮 > bite;
+齧 > bite;
+齦 > gums;
+齗 > gums;
+齕 > gnaw;
+鼛 > drum;
+鼖 > drum;
+黶 > mole;
+麩 > bran;
+麛 > fawn;
+麚 > buck;
+麑 > fawn;
+麌 > stag;
+麃 > till;
+鹎 > bird;
+鹆 > myna;
+鷯 > wren;
+鷦 > wren;
+鷙 > hawk;
+鷕 > call;
+鶱 > soar;
+鶩 > duck;
+鶃 > hawk;
+鶂 > hawk;
+鵯 > bird;
+鵄 > kite;
+鴨 > duck;
+鴟 > kite;
+鴄 > duck;
+鳷 > bird;
+鳶 > kite;
+鳋 > carp;
+鲼 > fish;
+鲋 > carp;
+鲆 > sole;
+鰨 > sole;
+鯪 > carp;
+鯉 > carp;
+鯈 > fish;
+鯇 > carp;
+鮚 > clam;
+鮒 > carp;
+鮆 > fish;
+魋 > bear;
+鬮 > lots;
+鬩 > feud;
+鬑 > long;
+髞 > high;
+驘 > mule;
+騾 > mule;
+騸 > geld;
+騯 > loud;
+騣 > mane;
+駽 > grey;
+駴 > drum;
+饌 > feed;
+饈 > food;
+餌 > bait;
+餇 > food;
+飡 > meal;
+飌 > wind;
+颿 > sail;
+颺 > soar;
+顓 > good;
+頷 > chin;
+頮 > wash;
+頦 > chin;
+頌 > laud;
+須 > must;
+鞹 > skin;
+鞟 > skin;
+鞙 > fine;
+鞏 > bind;
+鞉 > drum;
+鞀 > drum;
+靑 > blue;
+霤 > drip;
+霣 > fall;
+霢 > dust;
+隕 > fall;
+隄 > dike;
+阤 > hill;
+阞 > vein;
+闥 > door;
+闢 > open;
+闓 > open;
+闈 > gate;
+闆 > boss;
+閟 > hide;
+閎 > gate;
+閌 > door;
+閇 > shut;
+閂 > bolt;
+镸 > long;
+镩 > pick;
+镕 > fuse;
+铴 > gong;
+鑼 > gong;
+鑢 > file;
+鑠 > melt;
+鑛 > mine;
+鑄 > melt;
+鐸 > bell;
+鐩 > lens;
+鐙 > lamp;
+鐋 > gong;
+鐄 > bell;
+鏽 > rust;
+鏰 > coin;
+鏥 > rust;
+鏢 > dart;
+鎻 > lock;
+鎮 > town;
+鎭 > town;
+鎔 > fuse;
+鍔 > high;
+錄 > copy;
+鋳 > melt;
+鋚 > iron;
+鋆 > gold;
+銹 > rust;
+銷 > melt;
+銕 > iron;
+鉱 > mine;
+鉤 > hook;
+鈬 > bell;
+鈐 > lock;
+鈎 > hook;
+鈆 > lead;
+釀 > brew;
+醸 > brew;
+鄑 > kick;
+邉 > edge;
+遻 > meet;
+遷 > move;
+遟 > late;
+迺 > then;
+迚 > very;
+迆 > wind;
+辵 > walk;
+轝 > envy;
+轗 > fail;
+轌 > sled;
+轅 > axle;
+輿 > cart;
+輴 > sled;
+輟 > stop;
+軻 > axle;
+軸 > axle;
+軥 > yoke;
+軟 > soft;
+軛 > yoke;
+軆 > body;
+軀 > body;
+躿 > tall;
+躶 > bare;
+躴 > tall;
+躳 > body;
+躱 > hide;
+躰 > body;
+躥 > leap;
+躒 > walk;
+蹢 > hoof;
+蹏 > hoof;
+踴 > leap;
+踭 > heel;
+踘 > ball;
+跼 > bent;
+跲 > hood;
+跱 > stop;
+跞 > walk;
+跙 > weak;
+趯 > jump;
+赱 > walk;
+赕 > fine;
+贊 > help;
+賵 > gift;
+賴 > rely;
+賧 > fine;
+賤 > mean;
+賜 > give;
+賛 > help;
+賚 > give;
+賎 > mean;
+貺 > give;
+貎 > lion;
+豭 > boar;
+讋 > fear;
+謠 > sing;
+謔 > jeer;
+謐 > calm;
+謄 > copy;
+諞 > brag;
+誧 > huge;
+誡 > warn;
+誃 > part;
+詠 > sing;
+詟 > fear;
+詘 > bend;
+觝 > gore;
+覘 > peek;
+覓 > seek;
+袿 > gown;
+衹 > only;
+衚 > lane;
+衖 > lane;
+衒 > brag;
+蠭 > bees;
+蠧 > moth;
+蠏 > crab;
+蟇 > frog;
+螉 > wasp;
+蜹 > gnat;
+蜅 > crab;
+蛻 > molt;
+蚡 > mole;
+虷 > worm;
+虧 > lose;
+虓 > roar;
+蘚 > moss;
+蘒 > \:143;
+藹 > lush;
+藟 > vine;
+藇 > fine;
+薟 > vine;
+薙 > weed;
+薁 > vine;
+蕘 > fuel;
+蔴 > hemp;
+蓫 > dock;
+葒 > herb;
+萜 > c5h8;
+菾 > beet;
+莻 > late;
+莶 > vine;
+莖 > stem;
+荭 > herb;
+荛 > fuel;
+艭 > ship;
+艖 > raft;
+舩 > boat;
+臑 > soft;
+臉 > face;
+臁 > calf;
+膷 > soup;
+膴 > fine;
+膠 > glue;
+腶 > meat;
+腳 > foot;
+腒 > game;
+腍 > soft;
+脲 > urea;
+胠 > open;
+胏 > meat;
+胊 > yoke;
+肬 > wart;
+聾 > deaf;
+聼 > hear;
+聵 > deaf;
+耭 > plow;
+耠 > till;
+耎 > weak;
+翺 > soar;
+羭 > good;
+羜 > lamb;
+缋 > draw;
+纚 > long;
+纖 > fine;
+纕 > belt;
+纎 > fine;
+纍 > bind;
+纇 > knot;
+纆 > cord;
+繤 > edit;
+繢 > draw;
+繠 > hang;
+繘 > rope;
+繊 > fine;
+繅 > draw;
+繃 > bind;
+績 > spin;
+縳 > wrap;
+縯 > long;
+縢 > bind;
+縚 > band;
+縊 > hang;
+緯 > woof;
+緤 > cord;
+緘 > seal;
+緎 > seam;
+緄 > cord;
+綫 > line;
+綑 > coil;
+綍 > rope;
+綁 > bind;
+絏 > rope;
+紡 > spin;
+紆 > bend;
+糹 > silk;
+粋 > pure;
+籹 > cake;
+籙 > book;
+籏 > flag;
+籌 > chip;
+籊 > long;
+簽 > sign;
+簆 > reed;
+竅 > hole;
+竁 > bore;
+窾 > hole;
+窵 > deep;
+窯 > kiln;
+窭 > poor;
+窩 > nest;
+穽 > hole;
+穮 > weed;
+穡 > farm;
+穜 > rice;
+穐 > fall;
+穋 > rice;
+穀 > corn;
+稛 > bind;
+稑 > rice;
+秪 > only;
+秊 > year;
+禸 > rump;
+禱 > pray;
+祇 > only;
+礬 > alum;
+礧 > roll;
+礦 > mine;
+礡 > fill;
+磚 > tile;
+砿 > mine;
+矻 > toil;
+矙 > view;
+瞫 > look;
+盤 > tray;
+盝 > drip;
+盌 > bowl;
+皷 > drum;
+癶 > legs;
+癮 > rash;
+癢 > itch;
+癠 > sick;
+瘯 > itch;
+瘞 > bury;
+瘖 > dumb;
+瘂 > dumb;
+痯 > sick;
+痌 > ache;
+疧 > sick;
+疘 > anus;
+疐 > fall;
+畊 > plow;
+畇 > land;
+畄 > stop;
+甌 > bowl;
+瓘 > jade;
+瓊 > jade;
+獵 > hunt;
+獮 > hunt;
+獧 > rash;
+獋 > roar;
+獅 > lion;
+獃 > dull;
+猟 > hunt;
+猋 > wind;
+狘 > jump;
+狀 > form;
+犲 > wolf;
+犢 > calf;
+犂 > plow;
+牽 > drag;
+牴 > gore;
+牣 > fill;
+牆 > wall;
+爟 > fire;
+爖 > fire;
+爇 > burn;
+燨 > fire;
+熇 > bake;
+煚 > fire;
+煖 > warm;
+煑 > cook;
+煇 > weld;
+焮 > heat;
+焜 > fire;
+烝 > rise;
+烔 > heat;
+烏 > crow;
+灝 > vast;
+灘 > bank;
+瀦 > pond;
+濳 > hide;
+濔 > many;
+濊 > vast;
+濈 > many;
+澒 > vast;
+潤 > soft;
+潛 > hide;
+潑 > pour;
+潅 > pour;
+漰 > roar;
+漭 > vast;
+漚 > soak;
+漙 > dewy;
+漘 > bank;
+滾 > turn;
+滺 > flow;
+滮 > flow;
+滌 > wash;
+滉 > deep;
+滄 > blue;
+溼 > damp;
+湻 > pure;
+湲 > flow;
+湝 > flow;
+淰 > fish;
+淨 > pure;
+涴 > daub;
+涊 > dirt;
+泙 > roar;
+沬 > dusk;
+沕 > deep;
+汍 > weep;
+氝 > neon;
+氊 > felt;
+氄 > down;
+氂 > tail;
+歲 > year;
+歗 > roar;
+歊 > sigh;
+欐 > beam;
+櫳 > cage;
+櫚 > palm;
+檴 > tree;
+檍 > ilex;
+橦 > tree;
+橁 > tree;
+槹 > spar;
+槃 > tray;
+楰 > tree;
+楩 > tree;
+楟 > tree;
+楘 > band;
+椸 > rack;
+椑 > oval;
+棬 > bowl;
+棪 > tree;
+棑 > raft;
+梴 > long;
+桿 > pole;
+桹 > palm;
+桋 > tree;
+栻 > tree;
+柣 > sill;
+柂 > helm;
+枴 > cane;
+杝 > tree;
+杗 > beam;
+朿 > stab;
+朳 > tree;
+朘 > wane;
+曉 > dawn;
+晳 > fair;
+昻 > rise;
+昬 > dusk;
+昫 > warm;
+旹 > time;
+旴 > dawn;
+旜 > flag;
+旂 > flag;
+敿 > bind;
+敽 > bind;
+敻 > long;
+攢 > save;
+攅 > save;
+擫 > tuck;
+擣 > hull;
+撻 > flog;
+撥 > move;
+撝 > wave;
+摲 > raze;
+摦 > wide;
+搥 > beat;
+搘 > prop;
+搗 > hull;
+搒 > pole;
+搌 > bind;
+搆 > pull;
+掞 > easy;
+掗 > take;
+捘 > push;
+捄 > long;
+挐 > drag;
+拏 > take;
+抶 > beat;
+抆 > wipe;
+戶 > door;
+戁 > fear;
+懶 > lazy;
+懮 > calm;
+懟 > hate;
+懜 > dull;
+憰 > wily;
+憫 > pity;
+憙 > like;
+憘 > like;
+憇 > rest;
+慴 > fear;
+慂 > urge;
+愒 > rest;
+恇 > fear;
+怳 > wild;
+怭 > rude;
+怚 > dull;
+彡 > hair;
+彎 > bend;
+廼 > then;
+廳 > hall;
+廰 > hall;
+廧 > wall;
+廎 > room;
+幯 > wipe;
+幤 > evil;
+幟 > flag;
+幚 > help;
+幋 > belt;
+幇 > help;
+帟 > tent;
+嶸 > high;
+嶄 > high;
+嵳 > high;
+崢 > high;
+峯 > peak;
+峇 > cave;
+岧 > peak;
+屇 > cave;
+尲 > limp;
+尫 > lame;
+尪 > lame;
+尩 > weak;
+尣 > lame;
+將 > will;
+寠 > poor;
+寔 > real;
+孻 > last;
+嬾 > lazy;
+嬰 > baby;
+嬭 > milk;
+嬙 > lady;
+嫈 > lady;
+媊 > star;
+婞 > hate;
+婐 > maid;
+娸 > ugly;
+娵 > star;
+姽 > good;
+姮 > lady;
+姤 > mate;
+夛 > much;
+夐 > long;
+壙 > tomb;
+壒 > dust;
+壌 > soil;
+墻 > wall;
+墦 > tomb;
+塹 > moat;
+堲 > hate;
+堨 > daub;
+堋 > bury;
+埰 > fief;
+埈 > high;
+垜 > heap;
+坱 > dust;
+坋 > dust;
+囥 > hide;
+囓 > gnaw;
+囀 > sing;
+嚤 > slow;
+嚙 > bite;
+嚄 > roar;
+噳 > many;
+噝 > hiss;
+噉 > bite;
+嘽 > pant;
+嘯 > roar;
+嘮 > chat;
+嘨 > roar;
+嘜 > mark;
+嗰 > that;
+嗊 > sing;
+喬 > tall;
+喨 > wail;
+啟 > open;
+啞 > dumb;
+啙 > poor;
+啓 > open;
+啀 > gnaw;
+唶 > sigh;
+唛 > mark;
+咼 > chat;
+咷 > howl;
+咮 > beak;
+呙 > chat;
+呎 > foot;
+呇 > star;
+吿 > tell;
+吽 > ''om'';
+吪 > move;
+吋 > inch;
+厔 > stop;
+區 > area;
+匵 > case;
+勹 > wrap;
+剺 > mark;
+剝 > peel;
+剚 > stab;
+刾 > stab;
+刜 > chop;
+刓 > trim;
+凮 > wind;
+凪 > calm;
+凨 > wind;
+凧 > kite;
+凚 > cold;
+凖 > rule;
+凔 > cold;
+冐 > risk;
+冂 > wide;
+兌 > cash;
+儾 > slow;
+儽 > lazy;
+儺 > rich;
+儱 > rude;
+儜 > weak;
+儅 > stop;
+僾 > like;
+僨 > ruin;
+債 > debt;
+傭 > hire;
+偄 > weak;
+倽 > what;
+俴 > thin;
+俔 > like;
+侢 > load;
+侜 > lies;
+侚 > fast;
+侀 > form;
+佸 > meet;
+伹 > dull;
+伱 > thou;
+仸 > bent;
+亠 > head;
+亝 > even;
+亜 > asia;
+亖 > four;
+亅 > hook;
+乼 > rope;
+乭 > rock;
+丳 > spit;
+丠 > hill;
+䵷 > frog;
+䵨 > dark;
+䵒 > glue;
+䵑 > glue;
+䴸 > bran;
+䴝 > salt;
+䴜 > salt;
+䴃 > wren;
+䳼 > gull;
+䳦 > wren;
+䳣 > kite;
+䲭 > kite;
+䲒 > crab;
+䱴 > tuna;
+䱭 > tuna;
+䱎 > tuna;
+䱍 > tuna;
+䰩 > ugly;
+䰦 > ugly;
+䰤 > ugly;
+䰕 > mane;
+䰓 > hair;
+䰋 > hair;
+䰊 > hair;
+䰇 > mane;
+䯹 > hair;
+䯟 > bone;
+䯞 > bone;
+䯕 > bony;
+䮿 > lame;
+䮾 > huge;
+䭢 > rich;
+䭡 > food;
+䭓 > food;
+䭂 > damp;
+䭀 > food;
+䬞 > wind;
+䬏 > wind;
+䫶 > ugly;
+䫪 > ugly;
+䫢 > good;
+䫑 > good;
+䫏 > ugly;
+䫊 > chin;
+䫈 > ugly;
+䫂 > ugly;
+䪦 > loud;
+䪏 > weak;
+䪆 > soft;
+䨰 > rain;
+䨮 > snow;
+䨤 > rain;
+䨔 > hail;
+䨌 > hail;
+䧻 > dove;
+䧹 > hawk;
+䦰 > lots;
+䥫 > iron;
+䥔 > gold;
+䥒 > lead;
+䤮 > iron;
+䤡 > iron;
+䤑 > wine;
+䤊 > wine;
+䣽 > wine;
+䣨 > rich;
+䡳 > cart;
+䡀 > nude;
+䠭 > lame;
+䠗 > lame;
+䠏 > feet;
+䟨 > lame;
+䟂 > slow;
+䞿 > lame;
+䞩 > lame;
+䞝 > lame;
+䞆 > bone;
+䝘 > firm;
+䝕 > good;
+䛴 > joke;
+䚽 > news;
+䚸 > good;
+䚩 > high;
+䚢 > horn;
+䙤 > good;
+䙊 > arid;
+䗩 > toad;
+䗢 > flea;
+䖸 > moth;
+䖭 > grub;
+䖪 > grub;
+䖣 > flea;
+䕢 > weak;
+䔬 > hemp;
+䓾 > lush;
+䓸 > weed;
+䓲 > fine;
+䒺 > clay;
+䒭 > rank;
+䑬 > boat;
+䑞 > shun;
+䑏 > ugly;
+䑄 > rich;
+䐳 > fish;
+䐮 > skin;
+䐓 > soft;
+䐋 > sick;
+䏸 > fish;
+䏱 > body;
+䏢 > meat;
+䏎 > milk;
+䏊 > deaf;
+䎜 > aged;
+䍚 > vast;
+䌩 > fine;
+䌝 > silk;
+䌓 > many;
+䌒 > pure;
+䌌 > lace;
+䋼 > slow;
+䋖 > long;
+䊦 > food;
+䇩 > long;
+䆭 > cave;
+䆩 > dark;
+䆦 > deep;
+䄩 > bran;
+䂃 > dark;
+䁩 > fish;
+䁆 > eyes;
+䁅 > rage;
+䀾 > many;
+䀜 > down;
+䀋 > salt;
+䀀 > cups;
+㿙 > full;
+㿎 > sick;
+㾹 > lean;
+㾪 > lean;
+㾨 > weak;
+㾛 > ugly;
+㾊 > thin;
+㾉 > thin;
+㺥 > bark;
+㹒 > bull;
+㹏 > good;
+㹎 > bull;
+㹍 > bull;
+㸸 > calf;
+㸮 > bull;
+㸎 > warm;
+㷵 > fire;
+㷴 > fire;
+㷬 > fire;
+㷘 > coal;
+㷐 > fire;
+㷄 > fire;
+㶹 > fire;
+㶯 > fire;
+㶨 > fire;
+㶧 > warm;
+㵾 > cold;
+㵶 > full;
+㵩 > many;
+㵙 > pure;
+㵖 > damp;
+㴴 > sink;
+㴱 > deep;
+㴝 > many;
+㴛 > damp;
+㴗 > deep;
+㴀 > deep;
+㳤 > good;
+㲾 > rain;
+㲻 > sunk;
+㲴 > mind;
+㲟 > hair;
+㲜 > rugs;
+㲓 > fine;
+㱴 > sick;
+㱋 > high;
+㱇 > fear;
+㰫 > glad;
+㰡 > rash;
+㰟 > hope;
+㰙 > weak;
+㰐 > oval;
+㮺 > stem;
+㮤 > pine;
+㮒 > wood;
+㭽 > root;
+㬘 > arid;
+㬉 > warm;
+㬅 > long;
+㫲 > dark;
+㫱 > mild;
+㫥 > dark;
+㫎 > mark;
+㫄 > side;
+㩼 > many;
+逸 > flee;
+洞 > cave;
+刺 > stab;
+狀 > form;
+淋 > drip;
+㧮 > high;
+匿 > hide;
+㧨 > slow;
+梨 > pear;
+李 > plum;
+陸 > land;
+戮 > kill;
+紐 > knot;
+留 > stop;
+流 > flow;
+惡 > evil;
+領 > neck;
+零 > zero;
+鈴 > bell;
+怜 > pity;
+獵 > hunt;
+㦨 > lazy;
+㦢 > pure;
+連 > join;
+秊 > year;
+戀 > love;
+憐 > pity;
+年 > year;
+㦏 > weak;
+旅 > trip;
+良 > good;
+糧 > food;
+凉 > cool;
+沈 > sink;
+殺 > kill;
+葉 > leaf;
+㥬 > fear;
+㥩 > idle;
+㥡 > idle;
+拏 > take;
+讀 > read;
+陵 > hill;
+凌 > pure;
+肋 > ribs;
+漏 > leak;
+聾 > deaf;
+籠 > cage;
+鹿 > deer;
+錄 > copy;
+路 > road;
+冷 > cold;
+來 > come;
+狼 > wolf;
+浪 > wave;
+拉 > pull;
+藍 > blue;
+㤟 > fear;
+落 > fall;
+裸 > bare;
+懶 > lazy;
+喇 > horn;
+金 > gold;
+契 > deed;
+㤉 > fear;
+滑 > slip;
+車 > cart;
+更 > more;
+㣎 > fine;
+㢜 > vast;
+㢘 > pure;
+㢔 > many;
+㢎 > hide;
+㢋 > vast;
+㢃 > high;
+㢁 > vast;
+㡦 > mess;
+㠻 > rare;
+㠩 > vast;
+㠌 > high;
+㞱 > dusk;
+㞖 > this;
+㞄 > lame;
+㝿 > lame;
+㝡 > very;
+㝠 > dark;
+㝝 > deep;
+㝑 > side;
+㝐 > face;
+㝈 > twin;
+㝄 > pure;
+㜷 > milk;
+㜛 > soft;
+㜃 > from;
+㛦 > good;
+㚧 > agil;
+㚍 > much;
+㚋 > much;
+㚊 > much;
+㚂 > dust;
+㙪 > dark;
+㙠 > dust;
+㙒 > wild;
+㙂 > wall;
+㙁 > dust;
+㘨 > deep;
+㘐 > loud;
+㗈 > long;
+㕦 > loud;
+㔄 > thin;
+㓑 > cold;
+㓎 > cold;
+㓊 > cold;
+㒚 > firm;
+㒎 > evil;
+㑿 > long;
+㑵 > envy;
+㑚 > that;
+㑌 > weak;
+㑈 > rude;
+㐡 > weak;
+㐅 > five;
+一 > one;
+人 > man;
+我 > our;
+大 > big;
+上 > top;
+你 > you;
+可 > may;
+她 > she;
+天 > sky;
+而 > and;
+然 > yes;
+没 > not;
+日 > sun;
+彩 > hue;
+十 > ten;
+用 > use;
+眼 > eye;
+又 > and;
+见 > see;
+老 > old;
+两 > two;
+外 > out;
+与 > and;
+法 > law;
+目 > eye;
+二 > two;
+点 > dot;
+盜 > rob;
+其 > his;
+盗 > rob;
+儿 > son;
+新 > new;
+床 > bed;
+皆 > all;
+海 > sea;
+少 > few;
+帽 > hat;
+叫 > cry;
+死 > die;
+放 > put;
+今 > now;
+赤 > red;
+畢 > end;
+战 > war;
+購 > buy;
+瓶 > jug;
+请 > ask;
+交 > mix;
+吃 > eat;
+買 > buy;
+非 > not;
+夫 > man;
+红 > red;
+运 > run;
+寥 > few;
+网 > net;
+飞 > fly;
+观 > see;
+猿 > ape;
+猫 > cat;
+猪 > pig;
+坐 > sit;
+謂 > say;
+狗 > dog;
+請 > ask;
+终 > end;
+切 > cut;
+犬 > dog;
+誤 > err;
+尔 > you;
+热 > hot;
+古 > old;
+牛 > cow;
+牀 > bed;
+觀 > see;
+低 > low;
+観 > see;
+熱 > hot;
+仍 > yet;
+見 > see;
+脚 > leg;
+云 > say;
+买 > buy;
+奈 > but;
+排 > row;
+壯 > big;
+壞 > bad;
+壊 > bad;
+湾 > bay;
+墨 > ink;
+否 > not;
+食 > eat;
+術 > art;
+濘 > mud;
+濕 > wet;
+露 > dew;
+齢 > age;
+齡 > age;
+蝙 > bat;
+蝋 > wax;
+鼠 > rat;
+跑 > run;
+蜂 > bee;
+艺 > art;
+點 > dot;
+摇 > wag;
+顶 > top;
+湿 > wet;
+端 > end;
+旧 > old;
+油 > oil;
+藝 > art;
+毕 > end;
+藉 > mat;
+液 > sap;
+薯 > yam;
+耳 > ear;
+喋 > nag;
+啜 > sip;
+問 > ask;
+泥 > mud;
+泣 > cry;
+哀 > sad;
+冰 > ice;
+误 > err;
+凡 > all;
+汝 > you;
+谓 > say;
+杯 > cup;
+氷 > ice;
+氣 > air;
+気 > air;
+萌 > bud;
+购 > buy;
+途 > way;
+摆 > put;
+典 > law;
+茶 > tea;
+卵 > egg;
+播 > sow;
+臂 > arm;
+欷 > sob;
+匚 > box;
+摩 > rub;
+餐 > eat;
+冠 > cap;
+芽 > bud;
+芸 > rue;
+劣 > bad;
+剽 > rob;
+割 > cut;
+缘 > hem;
+俩 > two;
+壮 > big;
+忧 > sad;
+舊 > old;
+與 > and;
+龄 > age;
+惨 > sad;
+腾 > fly;
+染 > dye;
+膿 > pus;
+榻 > cot;
+円 > yen;
+兩 > two;
+兒 > son;
+腐 > rot;
+児 > son;
+脂 > fat;
+飛 > fly;
+肥 > fat;
+援 > aid;
+胖 > fat;
+哼 > hum;
+偵 > spy;
+顛 > top;
+顎 > jaw;
+倶 > all;
+頂 > top;
+罐 > jar;
+捷 > win;
+霧 > fog;
+乾 > dry;
+俱 > all;
+赢 > win;
+缝 > sew;
+抚 > pat;
+挖 > dig;
+曝 > sun;
+雾 > fog;
+暑 > hot;
+颠 > top;
+扇 > fan;
+曰 > say;
+乞 > beg;
+赌 > bet;
+縫 > sew;
+両 > two;
+欠 > owe;
+氛 > gas;
+縁 > hem;
+締 > tie;
+弗 > not;
+網 > net;
+斬 > cut;
+絶 > cut;
+辟 > law;
+終 > end;
+襄 > aid;
+炒 > fry;
+锡 > tin;
+紅 > red;
+撫 > pat;
+鑵 > jar;
+坑 > pit;
+搖 > wag;
+揺 > wag;
+撕 > rip;
+揉 > rub;
+磕 > hit;
+斩 > cut;
+掠 > rob;
+掘 > dig;
+谎 > lie;
+銜 > bit;
+赋 > tax;
+囊 > bag;
+戰 > war;
+戦 > war;
+憂 > sad;
+搂 > hug;
+慘 > sad;
+侦 > spy;
+壶 > jar;
+弓 > bow;
+蜡 > wax;
+庐 > hut;
+歹 > bad;
+惟 > but;
+衔 > bit;
+坎 > pit;
+兹 > now;
+毯 > rug;
+钥 > key;
+斧 > axe;
+赎 > buy;
+彤 > red;
+燥 > dry;
+佬 > man;
+瞅 > see;
+蹦 > hop;
+霄 > sky;
+翩 > fly;
+暨 > and;
+迢 > far;
+缔 > tie;
+褚 > bag;
+蚂 > ant;
+揍 > hit;
+擂 > rub;
+锄 > hoe;
+捅 > jab;
+鞠 > bow;
+骰 > die;
+踉 > hop;
+桨 > oar;
+拌 > mix;
+狸 > fox;
+瀛 > sea;
+噩 > bad;
+蓓 > bud;
+窖 > pit;
+掺 > mix;
+猖 > mad;
+趾 > toe;
+蘸 > dip;
+淤 > mud;
+琦 > gem;
+脓 > pus;
+畸 > odd;
+盎 > cup;
+茗 > tea;
+胥 > all;
+怆 > sad;
+泞 > mud;
+剐 > cut;
+舀 > dip;
+坯 > dam;
+堰 > dam;
+幺 > one;
+牯 > cow;
+弼 > aid;
+鳝 > eel;
+斫 > cut;
+怩 > shy;
+溥 > big;
+橹 > oar;
+黠 > sly;
+绌 > sew;
+剜 > cut;
+罔 > net;
+颚 > jaw;
+唿 > sad;
+耨 > hoe;
+膘 > fat;
+镳 > bit;
+腴 > fat;
+狯 > sly;
+镢 > hoe;
+裨 > aid;
+锛 > adz;
+囵 > all;
+邈 > far;
+殒 > die;
+啖 > eat;
+麋 > elk;
+鳍 > fin;
+刍 > mow;
+侗 > big;
+楫 > oar;
+猡 > pig;
+柞 > oak;
+佥 > all;
+鳗 > eel;
+鞣 > tan;
+棹 > oar;
+陂 > dam;
+殁 > die;
+觚 > jug;
+臬 > law;
+猃 > dog;
+寤 > few;
+僖 > joy;
+犭 > dog;
+羝 > ram;
+貔 > fox;
+觌 > see;
+槠 > oak;
+溻 > wet;
+芟 > mow;
+俣 > big;
+瓿 > jar;
+逖 > far;
+哜 > sip;
+隰 > low;
+鲡 > eel;
+毹 > rug;
+殪 > die;
+缏 > hem;
+饣 > eat;
+埤 > add;
+坭 > mud;
+龥 > beg;
+齣 > act;
+鼡 > rat;
+黕 > red;
+鹋 > emu;
+鴞 > owl;
+鲕 > roe;
+鱺 > eel;
+鱔 > eel;
+鱓 > eel;
+鰻 > eel;
+鰭 > fin;
+鮞 > roe;
+鬷 > pot;
+鬴 > pot;
+鬆 > lax;
+髢 > wig;
+骽 > leg;
+騵 > bay;
+騳 > run;
+騰 > fly;
+騢 > bay;
+騂 > red;
+駉 > big;
+餔 > eat;
+飠 > eat;
+顚 > top;
+頳 > red;
+頫 > bow;
+韖 > tan;
+韎 > red;
+阬 > pit;
+鑰 > key;
+鑯 > awl;
+鑣 > bit;
+鐏 > cap;
+鏚 > axe;
+鎡 > hoe;
+鍾 > cup;
+錫 > tin;
+錤 > hoe;
+錛 > adz;
+錔 > cap;
+鋤 > hoe;
+鉏 > hoe;
+遉 > spy;
+轑 > rut;
+踶 > paw;
+跦 > hop;
+贖 > buy;
+贏 > win;
+賭 > bet;
+賦 > tax;
+貜 > ape;
+貓 > cat;
+豼 > fox;
+豷 > man;
+豬 > pig;
+豨 > pig;
+豝 > sow;
+謊 > lie;
+覿 > see;
+覩 > see;
+覌 > see;
+裀 > mat;
+衜 > way;
+蠮 > bee;
+蠟 > wax;
+螞 > ant;
+螘 > ant;
+蝯 > ape;
+蜑 > egg;
+藷 > yam;
+蕷 > yam;
+蕓 > rue;
+蔋 > dry;
+蓺 > art;
+蓣 > yam;
+蒴 > pod;
+葄 > mat;
+萠 > bud;
+茲 > now;
+芻 > mow;
+艪 > oar;
+臕 > fat;
+臇 > fat;
+膟 > fat;
+膋 > fat;
+膃 > fat;
+肭 > fat;
+肀 > pen;
+耡 > hoe;
+翾 > fly;
+翃 > fly;
+羘 > ram;
+羇 > inn;
+罻 > net;
+罦 > net;
+罟 > net;
+罆 > jar;
+缾 > jar;
+緶 > hem;
+緵 > net;
+緰 > net;
+緣 > hem;
+絕 > cut;
+絀 > sew;
+紮 > tie;
+籥 > key;
+箑 > fan;
+窞 > pit;
+窌 > pit;
+窊 > pit;
+窅 > far;
+砲 > gun;
+瞶 > dim;
+睊 > see;
+眛 > dim;
+癙 > ill;
+瘨 > mad;
+瘏 > ill;
+痗 > ill;
+甒 > jar;
+甇 > jar;
+甁 > jug;
+甀 > jar;
+瓻 > jar;
+瓀 > gem;
+璅 > gem;
+玆 > now;
+玀 > pig;
+獫 > dog;
+獪 > sly;
+獢 > dog;
+猭 > ape;
+猨 > ape;
+牼 > man;
+爾 > you;
+焞 > dim;
+灋 > law;
+澝 > mud;
+潚 > gay;
+沒 > not;
+毧 > fur;
+殣 > die;
+殞 > die;
+歿 > die;
+歠 > sip;
+櫧 > oak;
+櫓 > oar;
+櫂 > oar;
+檝 > oar;
+橧 > hut;
+樠 > elm;
+槳 > oar;
+楎 > peg;
+椷 > box;
+棓 > hit;
+梶 > oar;
+梩 > hod;
+桮 > cup;
+柸 > cup;
+杅 > tub;
+曁 > and;
+晞 > dry;
+昄 > big;
+斸 > cut;
+斲 > cut;
+斨 > axe;
+攵 > rap;
+攴 > rap;
+擺 > put;
+摟 > hug;
+搰 > dig;
+搨 > rub;
+搧 > fan;
+搃 > all;
+挼 > rub;
+慱 > sad;
+愴 > sad;
+惙 > sad;
+弨 > bow;
+弤 > bow;
+廬 > hut;
+帣 > bag;
+尓 > you;
+尒 > you;
+寙 > bad;
+嬛 > apt;
+妵 > man;
+妳 > you;
+奭 > red;
+奜 > big;
+奌 > dot;
+壺 > jar;
+壷 > jar;
+墫 > cup;
+堌 > dam;
+埶 > art;
+埧 > dam;
+圇 > all;
+嚢 > bag;
+嚌 > sip;
+喫 > eat;
+啗 > eat;
+匸 > box;
+劚 > cut;
+剸 > cut;
+剮 > cut;
+剉 > cut;
+刲 > cut;
+凣 > all;
+凢 > all;
+凃 > mud;
+冫 > ice;
+冞 > far;
+僉 > all;
+偯 > sob;
+倞 > far;
+俁 > big;
+侊 > big;
+佽 > aid;
+亓 > his;
+亁 > dry;
+乢 > lid;
+丶 > dot;
+䳠 > owl;
+䲊 > fry;
+䰠 > god;
+䪞 > bad;
+䪚 > hot;
+䩆 > old;
+䨿 > bad;
+䢛 > far;
+䢓 > bed;
+䡜 > car;
+䝆 > hog;
+䜣 > joy;
+䗶 > wax;
+䗬 > bee;
+䗦 > bee;
+䒬 > not;
+䑋 > fat;
+䑊 > fat;
+䑂 > fat;
+䐾 > fat;
+䐵 > fat;
+䐪 > fat;
+䐩 > fat;
+䐟 > fat;
+䐏 > fat;
+䐎 > fat;
+䐉 > fat;
+䏻 > can;
+䏴 > dim;
+䏥 > dry;
+䏜 > fat;
+䎋 > fly;
+䍝 > net;
+䍕 > net;
+䍒 > net;
+䌢 > raw;
+䋬 > rug;
+䋞 > web;
+䋄 > web;
+䊑 > pay;
+䉾 > bad;
+䆾 > big;
+䆱 > big;
+䁮 > sad;
+㾑 > fat;
+㺋 > pig;
+㹅 > all;
+㸁 > dry;
+㷪 > fat;
+㷣 > red;
+㴼 > wet;
+㴷 > wet;
+㳴 > mud;
+㲭 > rug;
+㲖 > fur;
+㮎 > cup;
+㮈 > but;
+㫓 > air;
+猪 > pig;
+見 > see;
+切 > cut;
+茶 > tea;
+泥 > mud;
+㦧 > sad;
+劣 > bad;
+廬 > hut;
+㦀 > joy;
+兩 > two;
+掠 > rob;
+㥢 > bad;
+㥑 > sad;
+露 > dew;
+老 > old;
+櫓 > oar;
+蠟 > wax;
+卵 > egg;
+㤚 > joy;
+奈 > but;
+㤈 > sad;
+㢠 > far;
+㜸 > sin;
+㚚 > big;
+㘔 > eat;
+㗔 > joy;
+㕅 > big;
+㓉 > ice;
+㒳 > two;
+㒪 > tin;
+㑾 > joy;
+㐺 > all;
+不 > no;
+为 > do;
+之 > ''s;
+徃 > go;
+往 > go;
+于 > in;
+行 > go;
+如 > if;
+弄 > do;
+或 > or;
+它 > it;
+若 > if;
+爲 > do;
+咱 > us;
+為 > do;
+适 > go;
+倘 > if;
+於 > in;
+哟 > ah;
+嗨 > hi;
+彝 > yi;
+傥 > if;
+锱 > oz;
+徂 > go;
+钔 > md;
+伲 > we;
+镤 > pa;
+镎 > np;
+铹 > lr;
+夂 > go;
+锿 > es;
+锝 > tc;
+锘 > no;
+锕 > ac;
+锊 > oz;
+鎝 > tc;
+錼 > np;
+錙 > oz;
+鋝 > oz;
+迬 > go;
+繄 > be;
+糎 > mm;
+粨 > hm;
+粍 > mm;
+粁 > km;
+籵 > dm;
+祂 > he;
+牠 > it;
+朁 > if;
+攲 > up;
+扵 > in;
+彞 > yi;
+彜 > yi;
+彛 > yi;
+廴 > go;
+嗈 > oh;
+喲 > ah;
+喤 > ah;
+咁 > so;
+兡 > hg;
+兞 > mg;
+兝 > dg;
+儻 > if;
+偺 > us;
+佢 > he;
+行 > go;
+若 > if;
+不 > no;
+弄 > do;
+余 > i;
+吾 > i;
+予 > i;
+侬 > i;
+麿 > i;
+樶 > c;
+儂 > i;
+。 <> '.';
+:: fullwidth-halfwidth ();
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_EDICT.txt b/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_EDICT.txt
new file mode 100644
index 0000000..5f2ff4d
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_EDICT.txt
@@ -0,0 +1,116020 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_EDICT.txt,v $
+# $Date: 2002/07/21 08:26:40 $
+# $Revision: 1.1 $
+#--------------------------------------------------------------------
+
+# Convert CJK characters
+# Note: adds space between them and letters.
+:: (halfwidth-fullwidth);
+:: (katakana-latin);
+:: (hiragana-latin);
+
+$terminalPunct = [\.\,\:\;\?\!.,:?!。、;[:Pe:][:Pf:]];
+$terminalPunct { } [:L:] > ' ';
+[:L:] { } [[:Han:][:Ps:][:Pi:]]> ' ';
+
+$kata = [[゙゚ーー][:katakana:]];
+$kata { } [[:L:]-$kata]> ' ';
+[[:L:]-$kata] { } $kata > ' ';
+
+[:hiragana:] { } [[:L:]-[:hiragana:]] > ' ';
+[[:L:]-[:hiragana:]] { } [:hiragana:]> ' ';
+
+# Start RAW data for converting CJK characters
+法学系大学院共通入学試験 < hougakukeidaigakuinkyoutsuunyuugakushiken\ ;
+米国大学入学共通試験 < beikokudaigakunyuugakukyoutsuushiken\ ;
+朝鮮民主主義人民共和国 < chousenminshushugijinminkyouwakoku\ ;
+自動車損害賠償責任保険 < jidoushasongaibaishousekininhoken\ ;
+臨兵闘者皆陣裂在前 < rinpyoutoushakaijinretsuzaizen\ ;
+日本労働組合総評議会 < nihonroudoukumiaisouhyougikai\ ;
+太平洋機械翻訳協会 < taiheiyoukikaihon''yakukyoukai\ ;
+勤労者財産形成促進 < kinroushazaisankeiseisokushin\ ;
+超超大規模集積回路 < chouchoudaikiboshuusekikairo\ ;
+経済協力開発機構 < keizaikyouryokukaihatsukikou\ ;
+北海道開発庁長官 < hokkaidoukaihatsuchouchoukan\ ;
+拘束名簿式比例代表制 < kousokumeibohireidaihyousei\ ;
+知識集約型産業 < chishikishuuyakugatasangyou\ ;
+外国人登録証明書 < gaikokujintourokushoumeisho\ ;
+太平洋安全保障条約 < taiheiyouanzenhoshoujouyaku\ ;
+操縦席音声記録装置 < soujuusekionseikirokusouchi\ ;
+戦略兵器削減条約 < senryakuheikisakugenjouyaku\ ;
+航空宇宙技術研究所 < koukuuuchuugijutsukenkyuujo\ ;
+国際機械翻訳協会 < kokusaikikaihon''yakukyoukai\ ;
+自律神経失調症 < jiritsushinkeishitchoushou\ ;
+国際電気通信連合 < kokusaidenkitsuushinrengou\ ;
+沖縄開発庁長官 < okinawakaihatsuchouchoukan\ ;
+海外経済協力基金 < kaigaikeizaikyouryokukikin\ ;
+日米安全保障条約 < nichibeianzenhoshoujouyaku\ ;
+浮動小数点演算機構 < fudoushousuuten''enzankikou\ ;
+現金自動預金支払機 < genkinjidouyokinshiharaiki\ ;
+弁証法的唯物論 < benshouhoutekiyuibutsuron\ ;
+戦没者追悼記念日 < senbotsushatsuitoukinenbi\ ;
+国際協力事業団 < kokusaikyouryokujigyoudan\ ;
+戦術航空統制本部 < senjutsukoukuutouseihonbu\ ;
+工業高等専門学校 < kougyoukoutousenmongakkou\ ;
+北大西洋条約機構 < kitataiseiyoujouyakukikou\ ;
+超大規模集積回路 < choudaikiboshuusekikairo\ ;
+宗教的独立性 < shuukyoutekidokuritsusei\ ;
+化学兵器禁止条約 < kagakuheikikinshijouyaku\ ;
+関税貿易一般協定 < kanzeibouekiippankyoutei\ ;
+主辞駆動句構造文法 < shujikudoukukouzoubunpou\ ;
+直接照準射撃 < chokusetsushoujunshageki\ ;
+総合的品質管理 < sougoutekihinshitsukanri\ ;
+疑似直接目的語 < gijichokusetsumokutekigo\ ;
+在留期間更新許可 < zairyuukikankoushinkyoka\ ;
+特殊取扱郵便 < tokushutoriatsukaiyuubin\ ;
+乾湿球湿度計 < kanshitsukyuushitsudokei\ ;
+万国著作権条約 < bankokuchosakukenjouyaku\ ;
+万国国際音標文字 < bankokukokusaionpyoumoji\ ;
+言語学的実在論 < gengogakutekijitsuzairon\ ;
+冠状動脈血栓症 < kanjoudoumyakukessenshou\ ;
+科学技術庁長官 < kagakugijutsuchouchoukan\ ;
+海洋投棄規制条約 < kaiyoutoukikiseijouyaku\ ;
+圧密降伏応力 < atsumitsukoufukuouryoku\ ;
+公認卸売業者 < kounin''oroshiurigyousha\ ;
+赤血球沈降速度 < sekkekkyuuchinkousokudo\ ;
+石油輸出国機構 < sekiyuyushutsukokukikou\ ;
+公共職業安定所 < koukyoushokugyouanteijo\ ;
+戦術航空統制班 < senjutsukoukuutouseihan\ ;
+野生動物保護団体 < yaseidoubutsuhogodantai\ ;
+自動列車制御装置 < jidouresshaseigyosouchi\ ;
+自動金銭出入機 < jidoukinsenshutsunyuuki\ ;
+天然資源保護論者 < ten''nenshigenhogoronsha\ ;
+地震雷火事親父 < jishinkaminarikajioyaji\ ;
+非常事態対処計画 < hijoujitaitaishokeikaku\ ;
+核分裂生成物 < kakubunretsuseiseibutsu\ ;
+多肢選択式試問 < tashisentakushikishimon\ ;
+新関西国際空港 < shinkansaikokusaikuukou\ ;
+職業別電話帳 < shokugyoubetsudenwachou\ ;
+自動列車停止装置 < jidouresshateishisouchi\ ;
+言語学的観念論 < gengogakutekikan''nenron\ ;
+後発発展途上国 < kouhatsuhattentojoukoku\ ;
+抹消登録証明書 < mashoutourokushoumeisho\ ;
+経済企画庁長官 < keizaikikakuchouchoukan\ ;
+再生不良性貧血 < saiseifuryouseihinketsu\ ;
+火力支援調整線 < karyokushienchouseisen\ ;
+入学共通試験 < nyuugakukyoutsuushiken\ ;
+破壊活動防止法 < hakaikatsudouboushihou\ ;
+室内管弦楽団 < shitsunaikangengakudan\ ;
+東京株式市場 < toukyoukabushikishijou\ ;
+確率密度関数 < kakuritsumitsudokansuu\ ;
+原子力発電所 < genshiryokuhatsudensho\ ;
+代表取締役 < daihyoutorishimariyaku\ ;
+取扱説明書 < toriatsukaisetsumeisho\ ;
+赤十字国際委員会 < sekijuujikokusaiiinkai\ ;
+勧善懲悪小説 < kanzenchouakushousetsu\ ;
+国際返信切手券 < kokusaihenshinkitteken\ ;
+談話表示構造理論 < danwahyoujikouzouriron\ ;
+共産党中央委員会 < kyousantouchuuouiinkai\ ;
+杭周面摩擦力 < kuishuumenmasatsuryoku\ ;
+中華人民共和国 < chuukajinminkyouwakoku\ ;
+東海道五十三次 < toukaidougojuusantsugi\ ;
+宇宙開発事業団 < uchuukaihatsujigyoudan\ ;
+民主党全国委員会 < minshutouzenkokuiinkai\ ;
+英語基礎能力試験 < eigokisonouryokushiken\ ;
+間接照準射撃 < kansetsushoujunshageki\ ;
+三軸圧縮試験機 < sanjikuasshukushikenki\ ;
+視聴者参加番組 < shichoushasankabangumi\ ;
+州際通商委員会 < shuusaitsuushouiinkai\ ;
+新規株式公開 < shinkikabushikikoukai\ ;
+周波数変換装置 < shuuhasuuhenkansouchi\ ;
+学習指導要領 < gakushuushidouyouryou\ ;
+慢性疲労症候群 < manseihiroushoukougun\ ;
+公害対策基本法 < kougaitaisakukihonhou\ ;
+早発性痴呆症 < souhatsuseichihoushou\ ;
+経済団体連合会 < keizaidantairengoukai\ ;
+戦闘電子戦情報 < sentoudenshisenjouhou\ ;
+信用協同組合 < shin''youkyoudoukumiai\ ;
+現金自動支払機 < genkinjidoushiharaiki\ ;
+弦楽四重奏曲 < gengakushijuusoukyoku\ ;
+演繹的説明法 < en''ekitekisetsumeihou\ ;
+最高経営責任者 < saikoukeieisekininsha\ ;
+深在性真菌症 < shinzaiseishinkinshou\ ;
+装甲人員運搬車 < soukoujin''in''unpansha\ ;
+一般命令演算機構 < ippanmeireienzankikou\ ;
+統率束縛理論 < tousotsusokubakuriron\ ;
+本態性高血圧 < hontaiseikouketsuatsu\ ;
+日本語能力試験 < nihongonouryokushiken\ ;
+陸上端局装置 < rikujoutankyokusouchi\ ;
+音節主音的子音 < onsetsushuontekishiin\ ;
+日米貿易摩擦 < nichibeibouekimasatsu\ ;
+証券取引委員会 < shoukentorihikiiinkai\ ;
+通商産業大臣 < tsuushousangyoudaijin\ ;
+最高財務責任者 < saikouzaimusekininsha\ ;
+短距離離着陸機 < tankyoririchakurikuki\ ;
+通商航海条約 < tsuushoukoukaijouyaku\ ;
+機能単一化文法 < kinoutan''itsukabunpou\ ;
+知能情報研究部 < chinoujouhoukenkyuubu\ ;
+加圧水型原子炉 < kaatsusuigatagenshiro\ ;
+環太平洋地震帯 < kantaiheiyoujishintai\ ;
+軟判定識別器 < nanhanteishikibetsuki\ ;
+国立博物館 < kokuritsuhakubutsukan\ ;
+空想科学小説 < kuusoukagakushousetsu\ ;
+人種差別主義者 < jinshusabetsushugisha\ ;
+新入社員教育 < shin''nyuushainkyouiku\ ;
+推奨文献目録 < suishoubunkenmokuroku\ ;
+集中治療室 < shuuchuuchiryoushitsu\ ;
+徳川三代家光 < tokugawasandaiiemitsu\ ;
+自然環境保全法 < shizenkankyouhozenhou\ ;
+生活協同組合 < seikatsukyoudoukumiai\ ;
+環太平洋造山帯 < kantaiheiyouzouzantai\ ;
+行動主義心理学 < koudoushugishinrigaku\ ;
+料金別納郵便 < ryoukinbetsunouyuubin\ ;
+中距離核戦力 < chuukyorikakusenryoku\ ;
+第一次世界大戦 < daiichijisekaitaisen\ ;
+農業協同組合 < nougyoukyoudoukumiai\ ;
+大陸横断鉄道 < tairikuoudantetsudou\ ;
+直轄植民地 < chokkatsushokuminchi\ ;
+変動為替相場制 < hendoukawasesoubasei\ ;
+木造建築物 < mokuzoukenchikubutsu\ ;
+高分子吸収体 < koubunshikyuushuutai\ ;
+歯内療法専門医 < shikaryouhousenmon''i\ ;
+日米構造協議 < nichibeikouzoukyougi\ ;
+機械翻訳協会 < kikaihon''yakukyoukai\ ;
+植物性蛋白 < shokubutsuseitanpaku\ ;
+信用取引先 < shin''youtorihikisaki\ ;
+中央行政官庁 < chuuougyouseikanchou\ ;
+北大西洋条約 < kitataiseiyoujouyaku\ ;
+常務取締役 < joumutorishimariyaku\ ;
+環太平洋火山帯 < kantaiheiyoukazantai\ ;
+電気通信大学 < denkitsuushindaigaku\ ;
+芳香族化合物 < houkouzokukagoubutsu\ ;
+七星天道虫 < nanahoshitentoumushi\ ;
+内閣官房長官 < naikakukanbouchoukan\ ;
+実情調査委員会 < jitsujouchousaiinkai\ ;
+弦楽五重奏曲 < gengakugojuusoukyoku\ ;
+民族大虐殺 < minzokudaigyakusatsu\ ;
+科学基礎研究所 < kagakukisokenkyuusho\ ;
+越年生植物 < etsunenseishokubutsu\ ;
+変形生成統語論 < henkeiseiseitougoron\ ;
+構成素統御 < kouseisokouzoutougyo\ ;
+宇宙開発計画 < uchuukaihatsukeikaku\ ;
+米連邦航空局 < beirenpoukuukoukyoku\ ;
+大規模集積回路 < daikiboshuusekikairo\ ;
+南無妙法蓮華経 < namumyouhourengekyou\ ;
+外国人登録法 < gaikokujintourokuhou\ ;
+共産党政治局 < kyousantouseijikyoku\ ;
+未確認飛行物体 < mikakuninhikoubuttai\ ;
+一酸化炭素中毒 < issankatansochuudoku\ ;
+束縛継承原理 < sokubakukeishougenri\ ;
+直接目的語 < chokusetsumokutekigo\ ;
+専務取締役 < senmutorishimariyaku\ ;
+一年生植物 < ichinenseishokubutsu\ ;
+麻薬取締班 < mayakutorishimarihan\ ;
+三軸圧縮試験 < sanjikuasshukushiken\ ;
+麻薬取締法 < mayakutorishimarihou\ ;
+空軍連絡将校 < kuugunrenrakushoukou\ ;
+卸売物価指数 < oroshiuribukkashisuu\ ;
+写真判定決勝 < shashinhanteikesshou\ ;
+前立腺肥大症 < zenritsusenhidaishou\ ;
+公正取引委員会 < kouseitorihikiiinkai\ ;
+説明的妥当性 < setsumeitekidatousei\ ;
+中心的役割 < chuushintekiyakuwari\ ;
+税引前当期利益 < zeibikimaetoukirieki\ ;
+連邦取引委員会 < renpoutorihikiiinkai\ ;
+共通一次試験 < kyoutsuuichijishiken\ ;
+第三種郵便物 < daisanshuyuubinbutsu\ ;
+友好通商航海 < yuukoutsuushoukoukai\ ;
+無担保貸付金 < mutanpokashitsukekin\ ;
+流行性耳下腺炎 < ryuukouseijikasen''en\ ;
+必要十分条件 < hitsuyoujuubunjouken\ ;
+精神的指導者 < seishintekishidousha\ ;
+原子物理学者 < genshibutsurigakusha\ ;
+精密機械工業 < seimitsukikaikougyou\ ;
+再入国許可書 < sainyuukokukyoukasho\ ;
+定形外郵便物 < teikeigaiyuubinbutsu\ ;
+超並列計算機 < chouheiretsukeisanki\ ;
+中枢神経系統 < chuusuushinkeikeitou\ ;
+伝送制御拡張 < densouseigyokakuchou\ ;
+収縮期血圧 < shuushukukiketsuatsu\ ;
+日中友好協会 < nitchuuyuukoukyoukai\ ;
+総理府総務長官 < sourifusoumuchoukan\ ;
+国民金融公庫 < kokuminkin''yuukouko\ ;
+単子葉植物 < tanshiyoushokubutsu\ ;
+口辺単純疱疹 < kouhentanjunhoushin\ ;
+連立方程式 < renritsuhouteishiki\ ;
+集団安全保障 < shuudan''anzenhoshou\ ;
+名神高速道路 < meishinkousokudouro\ ;
+放射性降下物 < houshaseikoukabutsu\ ;
+環境保護主義者 < kankyouhogoshugisha\ ;
+劣性遺伝形質 < resseiidenkeishitsu\ ;
+日本陸上自衛隊 < nihonrikujoujieitai\ ;
+通商産業省 < tsuushousangyoushou\ ;
+初期選択項目 < shokisentakukoumoku\ ;
+全国津津浦浦 < zenkokutsutsuuraura\ ;
+信任統治制度 < shin''nintouchiseido\ ;
+主要部終端型 < shuyoubushuutangata\ ;
+合成化学工業 < gouseikagakukougyou\ ;
+原子力発電 < genshiryokuhatsuden\ ;
+国民体育大会 < kokumintaiikutaikai\ ;
+国際電信電話 < kokusaidenshindenwa\ ;
+電子資金振替 < denshishikinfurikae\ ;
+直接民主制 < chokusetsuminshusei\ ;
+進出制限線 < shinshutsuseigensen\ ;
+株式取引所 < kabushikitorihikijo\ ;
+弦楽四重奏団 < gengakushijuusoudan\ ;
+航空交通管制 < koukuukoutsuukansei\ ;
+財政均衡計画 < zaiseikinkoukeikaku\ ;
+直接教授法 < chokusetsukyoujuhou\ ;
+日本規格協会 < nipponkikakukyoukai\ ;
+動物愛護協会 < doubutsuaigokyoukai\ ;
+双子葉植物 < soushiyoushokubutsu\ ;
+米航空宇宙局 < beikoukuuuchuukyoku\ ;
+日本学術会議 < nihongakujutsukaigi\ ;
+芥川龍之介 < akutagawaryuunosuke\ ;
+貸借対照表 < taishakutaishouhyou\ ;
+公定割引率 < kouteiwaribikiritsu\ ;
+人間環境宣言 < ningenkankyousengen\ ;
+強迫神経症 < kyouhakushinkeishou\ ;
+家宅捜索令状 < katakusousakureijou\ ;
+商業信用状 < shougyoushin''youjou\ ;
+安土桃山時代 < azuchimomoyamajidai\ ;
+生理的食塩水 < seiritekishokuensui\ ;
+環太平洋諸国 < kantaiheiyoushokoku\ ;
+火力支援計画 < karyokushienkeikaku\ ;
+輸出信用状 < yushutsushin''youjou\ ;
+金地金本位制度 < kinjiganehon''iseido\ ;
+著作権所有者 < chosakukenshoyuusha\ ;
+数学的帰納法 < suugakutekikinouhou\ ;
+旧新約全書 < kyuushin''yakuzensho\ ;
+日本国特許庁 < nihonkokutokkyochou\ ;
+出入国管理 < shutsunyuukokukanri\ ;
+食糧管理制度 < shokuryoukanriseido\ ;
+生物化学兵器 < seibutsukagakuheiki\ ;
+障害物競走 < shougaibutsukyousou\ ;
+昼光色電球 < chuukoushokudenkyuu\ ;
+長日植物 < choujitsushokubutsu\ ;
+女権拡張論者 < jokenkakuchouronsha\ ;
+重要無形文化財 < juuyoumukeibunkazai\ ;
+経済社会理事会 < keizaishakairijikai\ ;
+統合幕僚会議 < tougoubakuryoukaigi\ ;
+律令格式 < ritsuryoukyakushiki\ ;
+天然色写真 < ten''nenshokushashin\ ;
+射撃禁止地域 < shagekikinshichiiki\ ;
+食肉植物 < shokunikushokubutsu\ ;
+主語助動詞倒置 < shugojodoushitouchi\ ;
+特命全権公使 < tokumeizenkenkoushi\ ;
+水力発電所 < suiryokuhatsudensho\ ;
+素出力条件 < soshutsuryokujouken\ ;
+国民総支出 < kokuminsoushishutsu\ ;
+植物性脂肪 < shokubutsuseishibou\ ;
+新聞倫理綱領 < shinbunrinrikouryou\ ;
+記述的妥当性 < kijutsutekidatousei\ ;
+旧新約聖書 < kyuushin''yakuseisho\ ;
+万国郵便連合 < bankokuyuubinrengou\ ;
+長期貸付金 < choukikashitsukekin\ ;
+直接接続 < chokusetsusetsuzoku\ ;
+住宅金融公庫 < juutakukin''yuukouko\ ;
+単位体積重量 < tan''itaisekijuuryou\ ;
+統一地方選挙 < touitsuchihousenkyo\ ;
+公開市場政策 < koukaishijouseisaku\ ;
+地球観測衛星 < chikyuukansokueisei\ ;
+生物物理学 < seibutsubutsurigaku\ ;
+平家物語抄 < heikemonogatarishou\ ;
+合同技術委員会 < goudougijutsuiinkai\ ;
+重量拳闘選手 < juuryoukentousenshu\ ;
+人工気胸療法 < jinkoukikyouryouhou\ ;
+地方公共団体 < chihoukoukyoudantai\ ;
+手根管症候群 < shukonkanshoukougun\ ;
+高分子化合物 < koubunshikagoubutsu\ ;
+食虫植物 < shokuchuushokubutsu\ ;
+陸上作戦本部 < rikujousakusenhonbu\ ;
+観察的研究 < kansatsutekikenkyuu\ ;
+放射性廃棄物 < houshaseihaikibutsu\ ;
+逆転分布係数 < gyakutenbunpukeisuu\ ;
+蜘蛛膜下出血 < kumomakukashukketsu\ ;
+自動方向探知機 < jidouhoukoutanchiki\ ;
+共同救済基金 < kyoudoukyuusaikikin\ ;
+賃貸借契約 < chintaishakukeiyaku\ ;
+徳川公爵邸 < tokugawakoushakutei\ ;
+帰還不能限界点 < kikanfunougenkaiten\ ;
+保険金受取人 < hokenkin''uketorinin\ ;
+陸軍士官学校 < rikugunshikangakkou\ ;
+漁業専管水域 < gyogyousenkansuiiki\ ;
+精神分裂症 < seishinbunretsushou\ ;
+芸術至上主義 < geijutsushijoushugi\ ;
+特命全権大使 < tokumeizenkentaishi\ ;
+近接航空支援 < kinsetsukoukuushien\ ;
+太陽熱発電 < taiyounetsuhatsuden\ ;
+海外留学熱 < kaigairyuugakunetsu\ ;
+有機水銀中毒 < yuukisuiginchuudoku\ ;
+妊娠中毒症 < ninshinchuudokushou\ ;
+環太平洋構想 < kantaiheiyoukousou\ ;
+独立採算制 < dokuritsusaisansei\ ;
+市場占有率 < shijousen''yuuritsu\ ;
+公的不法妨害 < koutekifuhoubougai\ ;
+視聴覚教材 < shichoukakukyouzai\ ;
+内閣法制局 < naikakuhouseikyoku\ ;
+国家公安委員長 < kokkakouan''iinchou\ ;
+戦闘支援計画 < sentoushienkeikaku\ ;
+中小企業庁 < chuushoukigyouchou\ ;
+回線制御規則 < kaisenseigyokisoku\ ;
+書簡体小説 < shokantaishousetsu\ ;
+社会生物学 < shakaiseibutsugaku\ ;
+一日一日 < ichinichiichinichi\ ;
+軍隊行進曲 < guntaikoushinkyoku\ ;
+葬送行進曲 < sousoukoushinkyoku\ ;
+港湾運送事業 < kouwan''unsoujigyou\ ;
+物理的現象 < butsuritekigenshou\ ;
+心臓弁膜症 < shinzoubenmakushou\ ;
+膝蓋腱反射 < shitsugaikenhansha\ ;
+門戸開放政策 < monkokaihouseisaku\ ;
+俸給生活者 < houkyuuseikatsusha\ ;
+東名高速道路 < toumeikousokudouro\ ;
+内閣総理大臣 < naikakusouridaijin\ ;
+日本放送協会 < nihonhousoukyoukai\ ;
+航空宇宙工業 < koukuuuchuukougyou\ ;
+生物情報学 < seibutsujouhougaku\ ;
+多年生植物 < tanenseishokubutsu\ ;
+量子物理学 < ryoushibutsurigaku\ ;
+北米合衆国 < hokubeigasshuukoku\ ;
+来客芳名録 < raikyakuhoumeiroku\ ;
+地方検察庁 < chihoukensatsuchou\ ;
+短日植物 < tanjitsushokubutsu\ ;
+標準出力 < hyoujunshutsuryoku\ ;
+専門的知識 < senmontekichishiki\ ;
+結婚行進曲 < kekkonkoushinkyoku\ ;
+安全保障条約 < anzenhoshoujouyaku\ ;
+株式配当金 < kabushikihaitoukin\ ;
+特別配当金 < tokubetsuhaitoukin\ ;
+主働土圧係数 < shudoudoatsukeisuu\ ;
+反射的半順序 < hanshatekihanjunjo\ ;
+経済成長率 < keizaiseichouritsu\ ;
+産業別組合 < sangyoubetsukumiai\ ;
+国際通貨基金 < kokusaitsuukakikin\ ;
+優等卒業生 < yuutousotsugyousei\ ;
+短期集中講座 < tankishuuchuukouza\ ;
+入国管理局 < nyuukokukanrikyoku\ ;
+信賞必罰 < shinshouhitsubatsu\ ;
+日本農林規格 < nihon''nourinkikaku\ ;
+航空宇宙産業 < koukuuuchuusangyou\ ;
+品質保持期限 < hinshitsuhojikigen\ ;
+日本工業規格 < nihonkougyoukikaku\ ;
+間接撮影法 < kansetsusatsueihou\ ;
+実物大模型 < jitsubutsudaimokei\ ;
+軍事的侵略 < gunjitekishinryaku\ ;
+中距離核兵器 < chuukyorikakuheiki\ ;
+酸化還元反応 < sankakangenhan''nou\ ;
+特徴抽出 < tokuchouchuushutsu\ ;
+寿教室 < kotobukikyoushitsu\ ;
+公務執行妨害 < koumushikkoubougai\ ;
+積分方程式 < sekibunhouteishiki\ ;
+高等専門学校 < koutousenmongakkou\ ;
+積算電力計 < sekisandenryokukei\ ;
+二年生植物 < ninenseishokubutsu\ ;
+国会対策委員会 < kokkaitaisakuinkai\ ;
+第二次世界大戦 < dainijisekaitaisen\ ;
+歩兵戦闘車両 < hoheisentousharyou\ ;
+千九百年代 < senkyuuhyakunendai\ ;
+共同記者会見 < kyoudoukishakaiken\ ;
+科学博物館 < kagakuhakubutsukan\ ;
+中国共産党 < chuugokukyousantou\ ;
+高分子物質 < koubunshibusshitsu\ ;
+発達心理学 < hattatsushinrigaku\ ;
+精神薄弱者 < seishinhakujakusha\ ;
+太陽熱温水器 < taiyounetsuonsuiki\ ;
+特別行政区 < tokubetsugyouseiku\ ;
+静止土圧係数 < seishidoatsukeisuu\ ;
+三色印刷法 < sanshokuinsatsuhou\ ;
+排卵誘発剤 < hairan''yuuhatsuzai\ ;
+生活必需品 < seikatsuhitsujuhin\ ;
+少年鑑別所 < shounenkanbetsusho\ ;
+人口動態統計 < jinkoudoutaitoukei\ ;
+座骨神経痛 < zakotsushinkeitsuu\ ;
+植民地政策 < shokuminchiseisaku\ ;
+証券取引法 < shoukentorihikihou\ ;
+私小説 < watakushishousetsu\ ;
+商品回転率 < shouhinkaitenritsu\ ;
+国連事務総長 < kokurenjimusouchou\ ;
+節足動物門 < sessokudoubutsumon\ ;
+着生植物 < chakuseishokubutsu\ ;
+不動産取得税 < fudousanshutokuzei\ ;
+年次有給休暇 < nenjiyuukyuukyuuka\ ;
+実物取引 < jitsubutsutorihiki\ ;
+十二指腸潰瘍 < juunishichoukaiyou\ ;
+計算生物学 < keisanseibutsugaku\ ;
+就職情報誌 < shuushokujouhoushi\ ;
+建設的関係 < kensetsutekikankei\ ;
+客室乗務員 < kyakushitsujoumuin\ ;
+支持力定式 < shijiryokuteishiki\ ;
+動物行動学 < doubutsukoudougaku\ ;
+戦争犯罪法廷 < sensouhanzaihoutei\ ;
+職能代表制 < shokunoudaihyousei\ ;
+最高検察庁 < saikoukensatsuchou\ ;
+心神耗弱者 < shinshinmoujakusha\ ;
+年功序列制度 < nenkoujoretsuseido\ ;
+亜米利加合衆国 < amerikagasshuukoku\ ;
+無脊椎動物 < musekitsuidoubutsu\ ;
+農林水産大臣 < nourinsuisandaijin\ ;
+直接接触 < chokusetsusesshoku\ ;
+家宅侵入罪 < katakushin''nyuuzai\ ;
+分子生物学 < bunshiseibutsugaku\ ;
+主要部先導型 < shuyoubusendougata\ ;
+天体写真術 < tentaishashinjutsu\ ;
+秘密漏洩罪 < himitsurousetsuzai\ ;
+貸付信託 < kashitsukeshintaku\ ;
+間接目的語 < kansetsumokutekigo\ ;
+粘液分泌腺 < nen''ekibunpitsusen\ ;
+瞬間接着剤 < shunkansetchakuzai\ ;
+人口密集率 < jinkoumisshuuritsu\ ;
+国民健康保険 < kokuminkenkouhoken\ ;
+原色写真版 < genshokushashinban\ ;
+不定計量空間 < futeikeiryoukuukan\ ;
+量子色力学 < ryoushiirorikigaku\ ;
+在日米陸軍 < zainichibeirikugun\ ;
+食品添加物 < shokuhintenkabutsu\ ;
+反帝国主義者 < hanteikokushugisha\ ;
+動物性蛋白 < doubutsuseitanpaku\ ;
+特定郵便局 < tokuteiyuubinkyoku\ ;
+日本航空自衛隊 < nihonkoukuujieitai\ ;
+火力発電所 < karyokuhatsudensho\ ;
+多角式農業 < takakushikinougyou\ ;
+電荷結合素子 < denkaketsugousoshi\ ;
+永世中立国 < eiseichuuritsukoku\ ;
+符号化文字集合 < fugoukamojishuugou\ ;
+唯物弁証法 < yuibutsubenshouhou\ ;
+日本海上自衛隊 < nihonkaijoujieitai\ ;
+史的唯物論 < shitekiyuibutsuron\ ;
+宣誓供述書 < senseikyoujutsusho\ ;
+熱膨張係数 < netsubouchoukeisuu\ ;
+有限状態文法 < yuugenjoutaibunpou\ ;
+即日速達 < sokujitsusokutatsu\ ;
+植物性繊維 < shokubutsuseisen''i\ ;
+過失傷害罪 < kashitsushougaizai\ ;
+修正資本主義 < shuuseishihonshugi\ ;
+一卵性双生児 < ichiranseisouseiji\ ;
+共同創設者 < kyoudousousetsusha\ ;
+地中海性気候 < chichuukaiseikikou\ ;
+投資有価証券 < toushiyuukashouken\ ;
+上級副社長 < joukyuufukushachou\ ;
+戦略的提携 < senryakutekiteikei\ ;
+前方再補給点 < zenpousaihokyuuten\ ;
+百発百中 < hyappatsuhyakuchuu\ ;
+環境庁長官 < kankyouchouchoukan\ ;
+取締役会 < torishimariyakukai\ ;
+圧力調整器 < atsuryokuchouseiki\ ;
+生鮮食料品 < seisenshokuryouhin\ ;
+放射性物質 < houshaseibusshitsu\ ;
+地球物理学 < chikyuubutsurigaku\ ;
+反宗教改革 < hanshuukyoukaikaku\ ;
+学識経験者 < gakushikikeikensha\ ;
+立憲君主政体 < rikkenkunshuseitai\ ;
+放送禁止用語 < housoukinshiyougo\ ;
+赤面恐怖症 < sekimenkyoufushou\ ;
+食品衛生法 < shokuhin''eiseihou\ ;
+教職員組合 < kyoushokuinkumiai\ ;
+十一面観世音 < juuichimenkanzeon\ ;
+毛沢東主席 < moutakutoushuseki\ ;
+別途積立金 < bettotsumitatekin\ ;
+返信料葉書 < henshinryouhagaki\ ;
+諸車通行止 < shoshatsuukoudome\ ;
+形状記憶合金 < keijoukiokugoukin\ ;
+国土庁長官 < kokudochouchoukan\ ;
+出力装置 < shutsuryokusouchi\ ;
+複雑骨折 < fukuzatsukossetsu\ ;
+下位範疇化素性 < kaihanchuukasosei\ ;
+勧善懲悪劇 < kanzenchouakugeki\ ;
+医学生物学 < igakuseibutsugaku\ ;
+非標準拡張 < hihyoujunkakuchou\ ;
+行動発起時刻 < koudouhakkijikoku\ ;
+十部門分類法 < juubumonbunruihou\ ;
+太陽光発電 < taiyoukouhatsuden\ ;
+世界一周旅行 < sekaiisshuuryokou\ ;
+返信用葉書 < henshin''youhagaki\ ;
+世界人権宣言 < sekaijinkensengen\ ;
+公的医療機関 < koutekiiryoukikan\ ;
+物的流通 < butsutekiryuutsuu\ ;
+十年一昔 < juunenhitomukashi\ ;
+祥月命日 < shoutsukimeinichi\ ;
+真珠養殖場 < shinjuyoushokujou\ ;
+戦略物質 < senryakubusshitsu\ ;
+肋間神経痛 < rokkanshinkeitsuu\ ;
+海洋物理学 < kaiyoubutsurigaku\ ;
+精神的苦痛 < seishintekikutsuu\ ;
+交流発電機 < kouryuuhatsudenki\ ;
+就職活動 < shuushokukatsudou\ ;
+受働土圧係数 < judoudoatsukeisuu\ ;
+狩猟採集民 < shuryousaishuumin\ ;
+不確定性原理 < fukakuteiseigenri\ ;
+戦闘正面幅 < sentoushoumenhaba\ ;
+不信任投票 < fushin''nintouhyou\ ;
+送金受取人 < soukin''uketorinin\ ;
+弱肉強食 < jakunikukyoushoku\ ;
+伸縮税率 < shinshukuzeiritsu\ ;
+二等辺三角形 < nitouhensankakkei\ ;
+DRS理論 < di\ ̄a\ ̄ruesuriron\ ;
+食糧管理法 < shokuryoukanrihou\ ;
+盲腸炎手術 < mouchouenshujutsu\ ;
+神出鬼没 < shinshutsukibotsu\ ;
+第一級殺人 < daiikkyuusatsujin\ ;
+戦略核兵器 < senryakukakuheiki\ ;
+七七日 < shichishichinichi\ ;
+紫露草 < murasakitsuyukusa\ ;
+凍結防止剤 < touketsuboushizai\ ;
+中間配当額 < chuukanhaitougaku\ ;
+政令指定都市 < seireishiteitoshi\ ;
+吸血動物 < kyuuketsudoubutsu\ ;
+高速増殖炉 < kousokuzoushokuro\ ;
+返信料封筒 < henshinryoufuutou\ ;
+衛星地球局 < eiseichikyuukyoku\ ;
+在留外国人 < zairyuugaikokujin\ ;
+熱力学的 < netsurikigakuteki\ ;
+植物採集 < shokubutsusaishuu\ ;
+出力端子 < shutsuryokutanshi\ ;
+標準入力 < hyoujun''nyuuryoku\ ;
+産業廃棄物 < sangyouhaikibutsu\ ;
+無担保借入金 < mutanpokariirekin\ ;
+観葉植物 < kan''youshokubutsu\ ;
+天然記念物 < ten''nenkinenbutsu\ ;
+単位労働組合 < tan''iroudoukumiai\ ;
+中央処理装置 < chuuoushorisouchi\ ;
+出生証明書 < shusseishoumeisho\ ;
+選挙管理委員会 < senkyokanriiinkai\ ;
+上級管理職 < joukyuukanrishoku\ ;
+税関申告書 < zeikanshinkokusho\ ;
+七生報国 < shichishouhoukoku\ ;
+返信用封筒 < henshin''youfuutou\ ;
+熱狂的信者 < nekkyoutekishinja\ ;
+企業間信用 < kigyoukanshin''you\ ;
+欧州通貨単位 < oushuutsuukatan''i\ ;
+開拓者精神 < kaitakushaseishin\ ;
+実物描写 < jitsubutsubyousha\ ;
+深在性真菌 < shinzaiseishinkin\ ;
+自由貿易帯域 < jiyuubouekitaiiki\ ;
+村落共同体 < sonrakukyoudoutai\ ;
+上陸用舟艇 < jourikuyoushuutei\ ;
+古生物学者 < koseibutsugakusha\ ;
+殺真菌薬 < satsushinkin''yaku\ ;
+開発途上国 < kaihatsutojoukoku\ ;
+血圧降下剤 < ketsuatsukoukazai\ ;
+無差別爆撃 < musabetsubakugeki\ ;
+平和的解決 < heiwatekikaisetsu\ ;
+下位範疇化原理 < kaihanchuukagenri\ ;
+食品加工業 < shokuhinkakougyou\ ;
+恋愛至上主義 < ren''aishijoushugi\ ;
+高級住宅地 < koukyuujuutakuchi\ ;
+自動車保険料 < jidoushahokenryou\ ;
+過失致死罪 < kashitsuchishizai\ ;
+高額所得者 < kougakushotokusha\ ;
+十一面観音 < juuichimenkan''non\ ;
+耳鼻咽喉専門医 < jibiinkousenmon''i\ ;
+月経困難症 < gekkeikon''nanshou\ ;
+国際見本市 < kokusaimihon''ichi\ ;
+緑地化計画 < ryokuchikakeikaku\ ;
+標本抽出 < hyouhonchuushutsu\ ;
+戦場航空阻止 < senjoukoukuusoshi\ ;
+中枢神経系 < chuusuushinkeikei\ ;
+統合参謀本部 < tougousanbouhonbu\ ;
+総括質問 < soukatsushitsumon\ ;
+実験的研究 < jikkentekikenkyuu\ ;
+専用駐車場 < sen''youchuushajou\ ;
+潮力発電 < chouryokuhatsuden\ ;
+無過失責任 < mukashitsusekinin\ ;
+一次方程式 < ichijihouteishiki\ ;
+就業時間中 < shuugyoujikanchuu\ ;
+国民休暇村 < kokuminkyuukamura\ ;
+子宮外妊娠 < shikyuugaininshin\ ;
+無担保貸付 < mutanpokashitsuke\ ;
+一粒子既約 < ichiryuushikiyaku\ ;
+企業別組合 < kigyoubetsukumiai\ ;
+不法侵入者 < fuhoushin''nyuusha\ ;
+直接購入 < chokusetsukounyuu\ ;
+収穫感謝祭 < shuukakukanshasai\ ;
+指向性爆薬 < shikouseibakuyaku\ ;
+心因性反応 < shin''inseihan''nou\ ;
+最長不倒距離 < saichoufutoukyori\ ;
+亜熱帯植物 < anettaishokubutsu\ ;
+窮極目的 < kyuukyokumokuteki\ ;
+内閣総辞職 < naikakusoujishoku\ ;
+天照大神 < amaterasuoomikami\ ;
+印象主義音楽 < inshoushugiongaku\ ;
+近代五種競技 < kindaigoshukyougi\ ;
+質実剛健 < shitsujitsugouken\ ;
+証券取引所 < shoukentorihikijo\ ;
+屈折望遠鏡 < kussetsubouenkyou\ ;
+局外中立 < kyokugaichuuritsu\ ;
+後方地域警備 < kouhouchiikikeibi\ ;
+歯牙矯正術 < shigakyouseijutsu\ ;
+単細胞生物 < tansaibouseibutsu\ ;
+日本薬局方 < nihon''yakkyokuhou\ ;
+自動操縦装置 < jidousoujuusouchi\ ;
+深層心理学 < shinsoushinrigaku\ ;
+都市対抗野球 < toshitaikouyakyuu\ ;
+金剛夜叉妙王 < kongouyashamyouou\ ;
+精神薄弱児 < seishinhakujakuji\ ;
+色彩調節 < shikisaichousetsu\ ;
+薬用植物 < yakuyoushokubutsu\ ;
+化学方程式 < kagakuhouteishiki\ ;
+急降下爆撃 < kyuukoukabakugeki\ ;
+水上生活者 < suijouseikatsusha\ ;
+在学証明書 < zaigakushoumeisho\ ;
+植民地統治 < shokuminchitouchi\ ;
+関数方程式 < kansuuhouteishiki\ ;
+秋霜烈日 < shuusouretsujitsu\ ;
+直接請求 < chokusetsuseikyuu\ ;
+推進研究所 < suishinkenkyuusho\ ;
+宗教哲学 < shuukyoutetsugaku\ ;
+戦術核兵器 < senjutsukakuheiki\ ;
+高速演算機構 < kousokuenzankikou\ ;
+発展的解消 < hattentekikaishou\ ;
+飛行禁止空域 < hikoukinshikuuiki\ ;
+国立図書館 < kokuritsutoshokan\ ;
+三行広告欄 < sangyoukoukokuran\ ;
+勧業博覧会 < kangyouhakurankai\ ;
+薬物中毒 < yakubutsuchuudoku\ ;
+分析心理学 < bunsekishinrigaku\ ;
+教育心理学 < kyouikushinrigaku\ ;
+業務上過失 < gyoumujoukashitsu\ ;
+環境保護論者 < kankyouhogoronsha\ ;
+成績証明書 < seisekishoumeisho\ ;
+週間天気予報 < shuukantenkiyohou\ ;
+放射線感受性 < houshasenkanjusei\ ;
+社会民主主義 < shakaiminshushugi\ ;
+小心翼翼 < shoushin''yokuyoku\ ;
+特別幕僚 < tokubetsubakuryou\ ;
+入学志願者 < nyuugakushigansha\ ;
+部分情報構造 < bubunjouhoukouzou\ ;
+一挙手一投足 < ikkyoshuittousoku\ ;
+分裂物質 < bunretsubusshitsu\ ;
+有形固定資産 < yuukeikoteishisan\ ;
+中央放送局 < chuuouhousoukyoku\ ;
+直接照明 < chokusetsushoumei\ ;
+飛行記録装置 < hikoukirokusouchi\ ;
+被担保債権額 < hitanposaikengaku\ ;
+共同相続人 < kyoudousouzokunin\ ;
+嘱託殺人 < shokutakusatsujin\ ;
+研究発表会 < kenkyuuhappyoukai\ ;
+二交替制労働 < nikoutaiseiroudou\ ;
+湿生植物 < shisseishokubutsu\ ;
+七十人訳 < shichijuunin''yaku\ ;
+保守系無所属 < hoshukeimushozoku\ ;
+天体分光術 < tentaibunkoujutsu\ ;
+球面三角法 < kyuumensankakuhou\ ;
+計量経済学 < keiryoukeizaigaku\ ;
+反転分布係数 < hantenbunpukeisuu\ ;
+著作権侵害 < chosakukenshingai\ ;
+特別弁護人 < tokubetsubengonin\ ;
+富国強兵策 < fukokukyouheisaku\ ;
+空挺降下地域 < kuuteikoukachiiki\ ;
+予想収穫高 < yosoushuukakudaka\ ;
+火力支援部隊 < karyokushienbutai\ ;
+血友病患者 < ketsuyuubyoukanja\ ;
+発癌物質 < hatsuganbusshitsu\ ;
+直角三角形 < chokkakusankakkei\ ;
+白長須鯨 < shironagasukujira\ ;
+闇価格協定 < yamikakakukyoutei\ ;
+観賞植物 < kanshoushokubutsu\ ;
+赤外線写真 < sekigaisenshashin\ ;
+心神喪失 < shinshinsoushitsu\ ;
+通俗小説 < tsuuzokushousetsu\ ;
+歌舞伎十八番 < kabukijuuhachiban\ ;
+百戦百勝 < hyakusenhyakushou\ ;
+天皇機関説 < ten''noukikansetsu\ ;
+公証人役場 < koushounin''yakuba\ ;
+超現実主義 < chougenjitsushugi\ ;
+二極真空管 < nikyokushinkuukan\ ;
+提灯行列 < chouchingyouretsu\ ;
+阪神大震災 < hanshindaishinsai\ ;
+失業対策 < shitsugyoutaisaku\ ;
+法定得票数 < houteitokuhyousuu\ ;
+設立趣意書 < setsuritsushuisho\ ;
+外国人登録 < gaikokujintouroku\ ;
+身体障害者 < shintaishougaisha\ ;
+大量破壊兵器 < tairyouhakaiheiki\ ;
+消費者信用 < shouhishashin''you\ ;
+反射係数線図 < hanshakeisuusenzu\ ;
+鈍角三角形 < donkakusankakukei\ ;
+海難審判庁 < kainanshinpanchou\ ;
+犯罪発生率 < hanzaihasseiritsu\ ;
+微生物学者 < biseibutsugakusha\ ;
+七色唐辛子 < nanairotougarashi\ ;
+素粒子加速器 < soryuushikasokuki\ ;
+公職選挙法 < koushokusenkyohou\ ;
+定形郵便物 < teikeiyuubinbutsu\ ;
+自由貿易地域 < jiyuubouekichiiki\ ;
+対中国関係 < taichuugokukankei\ ;
+公開市場操作 < koukaishijousousa\ ;
+科学技術庁 < kagakugijutsuchou\ ;
+左側通行 < hidarigawatsuukou\ ;
+大英博物館 < daieihakubutsukan\ ;
+動脈硬化症 < doumyakukoukashou\ ;
+帝王神権説 < teioushinkensetsu\ ;
+救出作戦 < kyuushutsusakusen\ ;
+宇宙大爆発 < uchuudaibakuhatsu\ ;
+首相兼外相 < shushoukengaishou\ ;
+生物地理学 < seibutsuchirigaku\ ;
+人身保護令状 < jinshinhogoreijou\ ;
+原子物理学 < genshibutsurigaku\ ;
+母子健康手帳 < boshikenkoutechou\ ;
+略取誘拐罪 < ryakushuyuukaizai\ ;
+室内装飾 < shitsunaisoushoku\ ;
+厚生年金保険 < kouseinenkinhoken\ ;
+直接競争 < chokusetsukyousou\ ;
+天体物理学 < tentaibutsurigaku\ ;
+降圧変圧器 < kouatsuhen''atsuki\ ;
+東印度会社 < higashiindogaisha\ ;
+物質主義者 < busshitsushugisha\ ;
+国際的貿易 < kokusaitekiboueki\ ;
+中性子爆弾 < chuuseishibakudan\ ;
+代数方程式 < daisuuhouteishiki\ ;
+平均太陽日 < heikintaiyoujitsu\ ;
+性行為感染症 < seikouikansenshou\ ;
+旭日昇天 < kyokujitsushouten\ ;
+乳児死亡率 < nyuujishibouritsu\ ;
+万国博覧会 < bankokuhakurankai\ ;
+防衛施設庁 < boueishisetsuchou\ ;
+有料駐車場 < yuuryouchuushajou\ ;
+臨床心理学 < rinshoushinrigaku\ ;
+生命保険会社 < seimeihokengaisha\ ;
+写真週刊誌 < shashinshuukanshi\ ;
+私有財産制度 < shiyuuzaisanseido\ ;
+巨石記念物 < kyosekikinenbutsu\ ;
+二元方程式 < nigenhouteishiki\ ;
+蘚苔植物 < sentaishokubutsu\ ;
+道義的責任 < dougitekisekinin\ ;
+獅子唐辛子 < shishitougarashi\ ;
+研究室棟 < kenkyuushitsutou\ ;
+気象観測船 < kishoukansokusen\ ;
+軽口話 < karukuchibanashi\ ;
+人猿同祖説 < jin''endousosetsu\ ;
+団体交渉権 < dantaikoushouken\ ;
+対人恐怖症 < taijinkyoufushou\ ;
+脳脊髄膜炎 < nousekizuimakuen\ ;
+要注意人物 < youchuuijinbutsu\ ;
+学校教育法 < gakkoukyouikuhou\ ;
+西側諸国 < nishigawashokoku\ ;
+王権神授説 < oukenshinjusetsu\ ;
+真部分集合 < shinbubunshuugou\ ;
+独占禁止法 < dokusenkinshihou\ ;
+脊椎動物 < sekitsuidoubutsu\ ;
+居間兼寝室 < imakenshinshitsu\ ;
+桑原桑原 < kuwabarakuwabara\ ;
+公称資本金 < koushoushihonkin\ ;
+電動発動機 < dendouhatsudouki\ ;
+応用物理学 < ouyoubutsurigaku\ ;
+享楽生活 < kyourakuseikatsu\ ;
+入力電流 < nyuuryokudenryuu\ ;
+三十八度線 < sanjuuhachidosen\ ;
+十年一日 < juunen''ichijitsu\ ;
+認知心理学 < ninchishinrigaku\ ;
+風俗小説 < fuuzokushousetsu\ ;
+低血圧症 < teiketsuatsushou\ ;
+工業所有権 < kougyoushoyuuken\ ;
+多変量解析 < tahenryoukaiseki\ ;
+虚々実々 < kyokyojitsujitsu\ ;
+清涼飲料水 < seiryouinryousui\ ;
+技術協力 < gijutsukyouryoku\ ;
+空中衝突 < kuuchuushoutotsu\ ;
+一国一党主義 < ikkokuittoushugi\ ;
+日本道路公団 < nihondourokoudan\ ;
+金利生活者 < kinriseikatsusha\ ;
+千篇一律 < senpen''ichiritsu\ ;
+料理教室 < ryourikyoushitsu\ ;
+遺言執行者 < yuigonshikkousha\ ;
+本格小説 < honkakushousetsu\ ;
+貿易外収支 < bouekigaishuushi\ ;
+国立劇場 < kokuritsugekijou\ ;
+実践理性批判 < jissenriseihihan\ ;
+染色体地図 < senshokutaichizu\ ;
+主席研究員 < shusekikenkyuuin\ ;
+高速度写真 < kousokudoshashin\ ;
+草食動物 < soushokudoubutsu\ ;
+高次方程式 < koujihouteishiki\ ;
+微分方程式 < bibunhouteishiki\ ;
+直接選挙 < chokusetsusenkyo\ ;
+郵便私書箱 < yuubinshishobako\ ;
+斜格性統御 < shakakuseitougyo\ ;
+経口避妊薬 < keikouhinin''yaku\ ;
+人材開発部 < jinzaikaihatsubu\ ;
+多重名前空間 < tajuunamaekuukan\ ;
+生者必滅 < shoujahitsumetsu\ ;
+熱帯植物 < nettaishokubutsu\ ;
+万国標準時 < bankokuhyoujunji\ ;
+松下電工 < matsushitadenkou\ ;
+防衛庁長官 < boueichouchoukan\ ;
+含水化合物 < gansuikagoubutsu\ ;
+関東大震災 < kantoudaishinsai\ ;
+商業算術 < shougyousanjutsu\ ;
+装甲回収車 < soukoukaishuusha\ ;
+地方行財政 < chihougyouzaisei\ ;
+性表現情報 < seihyougenjouhou\ ;
+戦戦栗栗 < sensenritsuritsu\ ;
+希望的観測 < kiboutekikansoku\ ;
+反射減衰量 < hanshagensuiryou\ ;
+揮発物質 < kihatsubusshitsu\ ;
+変態心理学 < hentaishinrigaku\ ;
+発光植物 < hakkoushokubutsu\ ;
+欧州共同体 < oushuukyoudoutai\ ;
+紫外線療法 < shigaisenryouhou\ ;
+非武装中立 < hibusouchuuritsu\ ;
+主席外交官 < shusekigaikoukan\ ;
+細胞質遺伝 < saiboushitsuiden\ ;
+共産党宣言 < kyousantousengen\ ;
+電力供給 < denryokukyoukyuu\ ;
+巡回診療所 < junkaishinryoujo\ ;
+源泉所得税 < gensenshotokuzei\ ;
+組職労働者 < soshokuroudousha\ ;
+労働者階級 < roudoushakaikyuu\ ;
+戦略爆撃 < senryakubakugeki\ ;
+妊娠中絶 < ninshinchuuzetsu\ ;
+拡大再生産 < kakudaisaiseisan\ ;
+平和維持活動 < heiwaijikatsudou\ ;
+上級裁判所 < joukyuusaibansho\ ;
+禁欲主義者 < kin''yokushugisha\ ;
+特殊潜航艇 < tokushusenkoutei\ ;
+最恵国待遇 < saikeikokutaiguu\ ;
+共産主義国 < kyousanshugikoku\ ;
+原告対被告 < genkokutaihikoku\ ;
+受託収賄罪 < jutakushuuwaizai\ ;
+流行性感冒 < ryuukouseikanbou\ ;
+国民総生産 < kokuminsouseisan\ ;
+中距離競走 < chuukyorikyousou\ ;
+全国的範囲 < zenkokutekihan''i\ ;
+連邦共和国 < renpoukyouwakoku\ ;
+普遍的法則 < fuhentekihousoku\ ;
+大統領選挙 < daitouryousenkyo\ ;
+二卵性双生児 < niranseisouseiji\ ;
+日猶同祖論 < nichiyuudousoron\ ;
+両替手数料 < ryougaetesuuryou\ ;
+資本利益率 < shihonriekiritsu\ ;
+議院運営委員会 < giin''un''eiiinkai\ ;
+戦車揚陸艦 < senshayourikukan\ ;
+主辞素性規約 < shujisoseikiyaku\ ;
+女性解放運動 < joseikaihouundou\ ;
+売春防止法 < baishunboushihou\ ;
+光化学反応 < koukagakuhan''nou\ ;
+直接会談 < chokusetsukaidan\ ;
+割増賃金 < warimashichingin\ ;
+軍事当局者 < gunjitoukyokusha\ ;
+肉体労働者 < nikutairoudousha\ ;
+自主流通米 < jishuryuutsuumai\ ;
+作付面積 < sakudzukemenseki\ ;
+日独協会 < nichidokukyoukai\ ;
+日常生活 < nichijouseikatsu\ ;
+第一次産業 < daiichijisangyou\ ;
+実存主義者 < jitsuzonshugisha\ ;
+歳入歳出 < sainyuusaishutsu\ ;
+特別急行 < tokubetsukyuukou\ ;
+現実主義者 < genjitsushugisha\ ;
+反政府勢力 < hanseifuseiryoku\ ;
+免疫不全症 < men''ekifuzenshou\ ;
+転出証明 < tenshutsushoumei\ ;
+十進分類法 < jisshinbunruihou\ ;
+偶像教徒的 < guuzoukyoutoteki\ ;
+紅白歌合戦 < kouhakuutagassen\ ;
+経済研究所 < keizaikenkyuusho\ ;
+軍事通信員 < gunjitsuushin''in\ ;
+基準内賃金 < kijun''naichingin\ ;
+県庁所在地 < kenchoushozaichi\ ;
+救荒作物 < kyuukousakumotsu\ ;
+真宗大谷派 < shinshuuootaniha\ ;
+地熱発電 < chinetsuhatsuden\ ;
+薬物療法 < yakubutsuryouhou\ ;
+再入国許可 < sainyuukokukyoka\ ;
+英国国教会 < eikokukokkyoukai\ ;
+食糧配給 < shokuryouhaikyuu\ ;
+炭酸同化作用 < tansandoukasayou\ ;
+清教徒革命 < seikyoutokakumei\ ;
+太陽神経叢 < taiyoushinkeisou\ ;
+直系血族 < chokkeiketsuzoku\ ;
+質問用紙 < shitsumon''youshi\ ;
+経営学修士 < keieigakushuushi\ ;
+健康証明書 < kenkoushoumeisho\ ;
+社会心理学 < shakaishinrigaku\ ;
+二大政党主義 < nidaiseitoushugi\ ;
+独身生活 < dokushinseikatsu\ ;
+警察当局 < keisatsutoukyoku\ ;
+公共企業体 < koukyoukigyoutai\ ;
+直接伝染 < chokusetsudensen\ ;
+都市再開発 < toshisaikaihatsu\ ;
+青空教室 < aozorakyoushitsu\ ;
+放射線療法 < houshasenryouhou\ ;
+国連分担金 < kokurenbuntankin\ ;
+非嫡出子 < hichakushutsushi\ ;
+生活様式 < seikatsuyoushiki\ ;
+定期刊行物 < teikikankoubutsu\ ;
+攻撃開始線 < kougekikaishisen\ ;
+平面三角法 < heimensankakuhou\ ;
+法定伝染病 < houteidensenbyou\ ;
+片道料金 < katamichiryoukin\ ;
+原油流出 < gen''yuryuushutsu\ ;
+略式命令 < ryakushikimeirei\ ;
+芸術活動 < geijutsukatsudou\ ;
+三叉神経痛 < sansashinkeitsuu\ ;
+歴史哲学 < rekishitetsugaku\ ;
+優勝決定戦 < yuushouketteisen\ ;
+下町言葉 < shitamachikotoba\ ;
+最低生活費 < saiteiseikatsuhi\ ;
+不純異性交遊 < fujun''iseikouyuu\ ;
+骨皮筋右衛門 < honekawasujiemon\ ;
+府県別人口 < fukenbetsujinkou\ ;
+緊急着陸 < kinkyuuchakuriku\ ;
+推定相続人 < suiteisouzokunin\ ;
+冷血動物 < reiketsudoubutsu\ ;
+多国籍企業 < takokusekikigyou\ ;
+取扱注意 < toriatsukaichuui\ ;
+浅間山荘事件 < asamasansoujiken\ ;
+晴一時小雨 < hareichijikosame\ ;
+割増料金 < warimashiryoukin\ ;
+季節労働者 < kisetsuroudousha\ ;
+中小諸国家 < choushoushokokka\ ;
+不平等条約 < fubyoudoujouyaku\ ;
+直截簡明 < chokusetsukanmei\ ;
+黄道吉日 < koudoukichinichi\ ;
+最低賃金制 < saiteichinginsei\ ;
+帝国主義的 < teikokushugiteki\ ;
+一触即発 < isshokusokuhatsu\ ;
+即日開票 < sokujitsukaihyou\ ;
+植物質 < shokubutsushitsu\ ;
+納税通知書 < nouzeitsuuchisho\ ;
+関税割当制 < kanzeiwariatesei\ ;
+実質賃金 < jisshitsuchingin\ ;
+居住証明書 < kyojuushoumeisho\ ;
+大使級会談 < taishikyuukaidan\ ;
+教養小説 < kyouyoushousetsu\ ;
+民主活動家 < minshukatsudouka\ ;
+客員研究員 < kyakuinkenkyuuin\ ;
+抽象芸術 < chuushougeijutsu\ ;
+直接支配 < chokusetsushihai\ ;
+環境保護主義 < kankyouhogoshugi\ ;
+世界貿易機関 < sekaibouekikikan\ ;
+支持力係数 < shijiryokukeisuu\ ;
+直下型地震 < chokkagatajishin\ ;
+未解決問題 < mikaiketsumondai\ ;
+建築基準法 < kenchikukijunhou\ ;
+無形固定資産 < mukeikoteishisan\ ;
+知的所有権 < chitekishoyuuken\ ;
+職業安定所 < shokugyouanteijo\ ;
+共産党細胞 < kyousantousaibou\ ;
+一年生草本 < ichinenseisouhon\ ;
+条約加盟国 < jouyakukameikoku\ ;
+立正佼成会 < risshoukouseikai\ ;
+集団就職 < shuudanshuushoku\ ;
+共観福音書 < kyoukanfukuinsho\ ;
+水生植物 < suiseishokubutsu\ ;
+宿直室 < shukuchokushitsu\ ;
+高所恐怖症 < koushokyoufushou\ ;
+新聞販売店 < shinbunhanbaiten\ ;
+農林水産省 < nourinsuisanshou\ ;
+二者選一法 < nishasen''itsuhou\ ;
+境界値問題 < kyoukaichimondai\ ;
+社会人野球 < shakaijin''yakyuu\ ;
+職務質問 < shokumushitsumon\ ;
+乾生植物 < kanseishokubutsu\ ;
+菜食主義者 < saishokushugisha\ ;
+宿泊設備 < shukuhakusetsubi\ ;
+国立大学 < kokuritsudaigaku\ ;
+一言二言 < hitokotofutakoto\ ;
+軍産複合体 < gunsanfukugoutai\ ;
+精神医学者 < seishin''igakusha\ ;
+経済企画庁 < keizaikikakuchou\ ;
+先端支持力 < sentanshijiryoku\ ;
+保健物理学 < hokenbutsurigaku\ ;
+正面衝突 < shoumenshoutotsu\ ;
+分解蒸溜法 < bunkaijouryuuhou\ ;
+計量言語学 < keiryougengogaku\ ;
+地域振興券 < chiikishinkouken\ ;
+急進主義者 < kyuushinshugisha\ ;
+一日千秋 < ichinichisenshuu\ ;
+交通運輸業 < koutsuuun''yugyou\ ;
+商業目的 < shougyoumokuteki\ ;
+無制限供給 < museigenkyoukyuu\ ;
+給与所得者 < kyuuyoshotokusha\ ;
+戦闘爆撃機 < sentoubakugekiki\ ;
+複式学級 < fukushikigakkyuu\ ;
+林業試験場 < ringyoushikenjou\ ;
+卒業証書 < sotsugyoushousho\ ;
+擲弾発射筒 < tekidanhasshatou\ ;
+産軍複合体 < sangunfukugoutai\ ;
+最大公約数 < saidaikouyakusuu\ ;
+国内消費税 < kokunaishouhizei\ ;
+少年審判所 < shounenshinpanjo\ ;
+焼肉定食 < yakinikuteishoku\ ;
+流行性肝炎 < ryuukouseikan''en\ ;
+表面張力 < hyoumenchouryoku\ ;
+準準決勝戦 < junjunkesshousen\ ;
+不完全燃焼 < fukanzen''nenshou\ ;
+原子力時代 < genshiryokujidai\ ;
+農業試験場 < nougyoushikenjou\ ;
+高速度撮影 < kousokudosatsuei\ ;
+特別番組 < tokubetsubangumi\ ;
+学習能力 < gakushuunouryoku\ ;
+好気性生物 < koukiseiseibutsu\ ;
+家庭内暴力 < kateinaibouryoku\ ;
+信用取引 < shin''youtorihiki\ ;
+音声多重放送 < onseitajuuhousou\ ;
+高血圧症 < kouketsuatsushou\ ;
+在籍専従者 < zaisekisenjuusha\ ;
+一口話 < hitokuchibanashi\ ;
+官費留学生 < kanpiryuugakusei\ ;
+南北朝時代 < nanbokuchoujidai\ ;
+死亡診断書 < shiboushindansho\ ;
+弦楽四重奏 < gengakushijuusou\ ;
+仲裁裁判所 < chuusaisaibansho\ ;
+理論物理学 < rironbutsurigaku\ ;
+全般前哨線 < zenpanzenshousen\ ;
+筍生活 < takenokoseikatsu\ ;
+十二指腸虫 < juunishichouchuu\ ;
+中心人物 < chuushinjinbutsu\ ;
+土木工学者 < dobokukougakusha\ ;
+食料品商 < shokuryouhinshou\ ;
+日中韓統合 < nitchuukantougou\ ;
+拡張倍精度 < kakuchoubaiseido\ ;
+労働収容所 < roudoushuuyousho\ ;
+超現実的 < chougenjitsuteki\ ;
+即身成仏 < sokushinjoubutsu\ ;
+国外脱出 < kokugaidasshutsu\ ;
+無着陸飛行 < muchakurikuhikou\ ;
+日付変更線 < hidzukehenkousen\ ;
+直接回答 < chokusetsukaitou\ ;
+当事者能力 < toujishanouryoku\ ;
+脳性小児麻痺 < nouseishounimahi\ ;
+先物取引 < sakimonotorihiki\ ;
+大東亜共栄圏 < daitouakyoueiken\ ;
+歴史小説 < rekishishousetsu\ ;
+煮沸消毒 < shafutsushoudoku\ ;
+海外進出 < kaigaishinshutsu\ ;
+水力発電 < suiryokuhatsuden\ ;
+損益計算書 < son''ekikeisansho\ ;
+小売物価指数 < kouribukkashisuu\ ;
+急行停車駅 < kyuukouteishaeki\ ;
+反植民主義 < hanshokuminshugi\ ;
+極低温科学 < kyokuteionkagaku\ ;
+自由主義経済 < jiyuushugikeizai\ ;
+写真望遠鏡 < shashinbouenkyou\ ;
+形質導入 < keishitsudounyuu\ ;
+妙法蓮華経 < myouhourengekyou\ ;
+実用主義者 < jitsuyoushugisha\ ;
+後方連絡線 < kouhourenrakusen\ ;
+実験心理学 < jikkenshinrigaku\ ;
+夜間預金々庫 < yakan''yokinkinko\ ;
+直接関係 < chokusetsukankei\ ;
+振替休日 < furikaekyuujitsu\ ;
+連邦準備制度 < renpoujunbiseido\ ;
+郵便小包 < yuubinkodzutsumi\ ;
+不法入国者 < fuhounyuukokusha\ ;
+単一神教 < tan''itsushinkyou\ ;
+虚弱体質 < kyojakutaishitsu\ ;
+多元方程式 < tagenhouteishiki\ ;
+国内総生産 < kokunaisouseisan\ ;
+脊索動物 < sekisakudoubutsu\ ;
+武力衝突 < buryokushoutotsu\ ;
+熱核反応 < netsukakuhan''nou\ ;
+鉄道公安官 < tetsudoukouankan\ ;
+種子植物 < shushishokubutsu\ ;
+平台型貨車 < hiradaigatakasha\ ;
+人称代名詞 < ninshoudaimeishi\ ;
+実業之日本 < jitsugyounonihon\ ;
+積層乾電池 < sekisoukandenchi\ ;
+行政管理庁 < gyouseikanrichou\ ;
+赤十字条約 < sekijuujijouyaku\ ;
+光学顕微鏡 < kougakukenbikyou\ ;
+超過勤務手当 < choukakinmuteate\ ;
+予備士官学校 < yobishikangakkou\ ;
+強制収容所 < kyouseishuuyoujo\ ;
+犯罪心理学 < hanzaishinrigaku\ ;
+連邦捜査局 < renpousousakyoku\ ;
+大陸移動説 < tairikuidousetsu\ ;
+直接行動 < chokusetsukoudou\ ;
+企業内教育 < kigyounaikyouiku\ ;
+求職広告 < kyuushokukoukoku\ ;
+実証哲学 < jisshoutetsugaku\ ;
+花嫁花婿 < hanayomehanamuko\ ;
+画像処理装置 < gazoushorisouchi\ ;
+窒素酸化物 < chissosankabutsu\ ;
+帝王切開術 < teiousekkaijutsu\ ;
+六十四分音符 < rokujuushibuonpu\ ;
+春機発動期 < shunkihatsudouki\ ;
+大名行列 < daimyougyouretsu\ ;
+高山植物 < kouzanshokubutsu\ ;
+放射性同位体 < houshaseidouitai\ ;
+天幕製造人 < tenmakuseizounin\ ;
+最優秀選手 < saiyuushuusenshu\ ;
+特別料金 < tokubetsuryoukin\ ;
+勝利又勝利 < shourimatashouri\ ;
+女流文学者 < joryuubungakusha\ ;
+中間小説 < chuukanshousetsu\ ;
+耐久消費財 < taikyuushouhizai\ ;
+非公式協議 < hikoushikikyougi\ ;
+生物濃縮 < seibutsunoushuku\ ;
+入力信号 < nyuuryokushingou\ ;
+空港使用料 < kuukoushiyouryou\ ;
+彫刻室座 < choukokushitsuza\ ;
+確率標本 < kakuritsuhyouhon\ ;
+無重力状態 < mujuuryokujoutai\ ;
+天照皇大神 < tenshoukoudaijin\ ;
+州立大学 < shuuritsudaigaku\ ;
+精神安定剤 < seishin''anteizai\ ;
+酸性酸化物 < sanseisankabutsu\ ;
+写実主義者 < shajitsushugisha\ ;
+冷戦型思考 < reisengatashikou\ ;
+亜熱帯高気圧 < anettaikoukiatsu\ ;
+多肉植物 < tanikushokubutsu\ ;
+電子工業会 < denshikougyoukai\ ;
+電子工学者 < denshikougakusha\ ;
+譲渡人 < yuzuriwatashinin\ ;
+熱伝導率 < netsudendouritsu\ ;
+民主共和国 < minshukyouwakoku\ ;
+磁気共鳴画像 < jikikyoumeigazou\ ;
+独立記念日 < dokuritsukinenbi\ ;
+化学調味料 < kagakuchoumiryou\ ;
+植物人間 < shokubutsuningen\ ;
+鳥獣保護区域 < choujuuhogokuiki\ ;
+終身雇用制 < shuushinkoyousei\ ;
+不定方程式 < futeihouteishiki\ ;
+物物交換 < butsubutsukoukan\ ;
+実力行使 < jitsuryokukoushi\ ;
+型式証明 < katashikishoumei\ ;
+連勝複式 < renshoufukushiki\ ;
+大修道院長 < daishuudouinchou\ ;
+直接協議 < chokusetsukyougi\ ;
+罪障消滅 < zaishoushoumetsu\ ;
+晩生植物 < banseishokubutsu\ ;
+潜在失業 < senzaishitsugyou\ ;
+港湾運送業 < kouwan''unsougyou\ ;
+周波数変調 < shuuhasuuhenchou\ ;
+乾燥地農業 < kansouchinougyou\ ;
+環境配慮書 < kankyouhairyosho\ ;
+直接比較 < chokusetsuhikaku\ ;
+固体物理学 < kotaibutsurigaku\ ;
+核抑止力 < kakuyokushiryoku\ ;
+国際援助機関 < kokusaienjokikan\ ;
+組織労働者 < soshikiroudousha\ ;
+営業報告書 < eigyouhoukokusho\ ;
+万物流転 < banbutsuryuuten\ ;
+軟式庭球 < nanshikiteikyuu\ ;
+広告代理店 < koukokudairiten\ ;
+修道生活 < shuudouseikatsu\ ;
+戦時国際法 < senjikokusaihou\ ;
+秘密警察 < himitsukeisatsu\ ;
+法人株主 < houjinkabunushi\ ;
+内幕話 < uchimakubanashi\ ;
+間接照明 < kansetsushoumei\ ;
+紛骨砕身 < funkotsusaishin\ ;
+両棲動物 < ryouseidoubutsu\ ;
+多額納税者 < tagakunouzeisha\ ;
+太元帥妙王 < daigensuimyouou\ ;
+集約農業 < shuuyakunougyou\ ;
+廃疾条件 < haishitsujouken\ ;
+能率賃金 < nouritsuchingin\ ;
+中部太平洋 < chuubutaiheiyou\ ;
+企業内組合 < kigyounaikumiai\ ;
+単刀直入 < tantouchokunyuu\ ;
+太平洋戦争 < taiheiyousensou\ ;
+三文小説 < sanmonshousetsu\ ;
+筋肉注射 < kin''nikuchuusha\ ;
+四通八達 < shitsuuhattatsu\ ;
+連帯保証人 < rentaihoshounin\ ;
+軍国主義者 < gunkokushugisha\ ;
+割増運賃 < warimashiunchin\ ;
+南極観測 < nankyokukansoku\ ;
+一目瞭然 < ichimokuryouzen\ ;
+素人下宿 < shiroutogeshuku\ ;
+学校給食 < gakkoukyuushoku\ ;
+反帝国主義 < hanteikokushugi\ ;
+間接撮影 < kansetsusatsuei\ ;
+会社更生法 < kaishakouseihou\ ;
+国選弁護人 < kokusenbengonin\ ;
+白川夜船 < shirakawayofune\ ;
+自然地理学 < shizenchirigaku\ ;
+地域的分布 < chiikitekibunpu\ ;
+無政府主義者 < museifushugisha\ ;
+剪断安定性 < sendan''anteisei\ ;
+特筆大書 < tokuhitsutaisho\ ;
+高分子化学 < koubunshikagaku\ ;
+情報公開法 < jouhoukoukaihou\ ;
+反射望遠鏡 < hanshabouenkyou\ ;
+食品工業 < shokuhinkougyou\ ;
+棘皮動物 < kyokuhidoubutsu\ ;
+怪力乱神 < kairyokuranshin\ ;
+人生哲学 < jinseitetsugaku\ ;
+特別委員会 < tokubetsuiinkai\ ;
+内需主導型 < naijushudougata\ ;
+晴天乱気流 < seitenrankiryuu\ ;
+新婚生活 < shinkonseikatsu\ ;
+2000年問題 < nisen''nenmondai\ ;
+公開入札 < koukainyuusatsu\ ;
+基本的人権 < kihontekijinken\ ;
+株式市場 < kabushikishijou\ ;
+学業成績 < gakugyouseiseki\ ;
+戦争犯罪人 < sensouhanzainin\ ;
+物質名詞 < busshitsumeishi\ ;
+反対貿易風 < hantaibouekifuu\ ;
+短編小説 < tanpenshousetsu\ ;
+道路交通法 < dourokoutsuuhou\ ;
+共産国家郡 < kyousankokkagun\ ;
+商業数学 < shougyousuugaku\ ;
+仮装巡洋艦 < kasoujun''youkan\ ;
+教育基本法 < kyouikukihonhou\ ;
+生産者価格 < seisanshakakaku\ ;
+最小二乗法 < saishounijouhou\ ;
+脱出速度 < dasshutsusokudo\ ;
+特別総会 < tokubetsusoukai\ ;
+第一楽章 < daiichigakushou\ ;
+主幹研究員 < shukankenkyuuin\ ;
+官僚主義者 < kanryoushugisha\ ;
+小選挙区制 < shousenkyokusei\ ;
+索条鉄道 < sakujoutetsudou\ ;
+軍記物語 < gunkimonogatari\ ;
+厳正中立 < genseichuuritsu\ ;
+一日一夜 < ichinichiichiya\ ;
+陰陰滅滅 < in''inmetsumetsu\ ;
+就職浪人 < shuushokurounin\ ;
+自転車操業 < jitenshasougyou\ ;
+純潔教育 < junketsukyouiku\ ;
+世界新記録 < sekaishinkiroku\ ;
+宗教改革 < shuukyoukaikaku\ ;
+商工会議所 < shoukoukaigisho\ ;
+弾劾裁判所 < dangaisaibansho\ ;
+支離滅裂 < shirimetsuretsu\ ;
+国民宿舎 < kokuminshukusha\ ;
+保護関税率 < hogokanzeiritsu\ ;
+独立宣言 < dokuritsusengen\ ;
+副腎皮質 < fukujinhishitsu\ ;
+国民生活 < kokuminseikatsu\ ;
+積載能力 < sekisainouryoku\ ;
+収容能力 < shuuyounouryoku\ ;
+腰高障子 < koshidakashouji\ ;
+年頃日頃 < toshigorohigoro\ ;
+集札係 < shuusatsugakari\ ;
+準禁治産者 < junkinchisansha\ ;
+議院内閣制 < giin''naikakusei\ ;
+通俗文学 < tsuuzokubungaku\ ;
+金槌頭 < kanadzuchiatama\ ;
+優先株主 < yuusenkabunushi\ ;
+写真測量 < shashinsokuryou\ ;
+企業体質 < kigyoutaishitsu\ ;
+生活保護法 < seikatsuhogohou\ ;
+猪突猛進 < chototsumoushin\ ;
+共産主義者 < kyousanshugisha\ ;
+正安息香酸 < seiansokukousan\ ;
+公害病患者 < kougaibyoukanja\ ;
+世界保健機関 < sekaihokenkikan\ ;
+学生割引 < gakuseiwaribiki\ ;
+財政投融資 < zaiseitouyuushi\ ;
+価格圧力 < kakakuatsuryoku\ ;
+港湾労働者 < kouwanroudousha\ ;
+内陸性気候 < nairikuseikikou\ ;
+中央標準時 < chuuouhyoujunji\ ;
+表現形式 < hyougenkeishiki\ ;
+投光照明器 < toukoushoumeiki\ ;
+出願書類 < shutsuganshorui\ ;
+総同盟罷業 < soudoumeihigyou\ ;
+宗教教育 < shuukyoukyouiku\ ;
+余裕綽綽 < yoyuushakushaku\ ;
+知的能力 < chitekinouryoku\ ;
+反骨精神 < hankotsuseishin\ ;
+正確爆撃 < seikakubakugeki\ ;
+日英通訳 < nichieitsuuyaku\ ;
+最高裁判所 < saikousaibansho\ ;
+食物繊維 < shokumotsusen''i\ ;
+算術級数 < sanjutsukyuusuu\ ;
+入力装置 < nyuuryokusouchi\ ;
+職業訓練 < shokugyoukunren\ ;
+探偵小説 < tanteishousetsu\ ;
+生活反応 < seikatsuhan''nou\ ;
+営団地下鉄 < eidanchikatetsu\ ;
+松下電器 < matsushitadenki\ ;
+知識階級 < chishikikaikyuu\ ;
+株式会社 < kabushikigaisha\ ;
+一時預所 < ichijiazukarijo\ ;
+飽和化合物 < houwakagoubutsu\ ;
+拡大解釈 < kakudaikaishaku\ ;
+金属探知機 < kinzokutanchiki\ ;
+浮動小数点 < fudoushousuuten\ ;
+品質保証 < hinshitsuhoshou\ ;
+言語心理学 < gengoshinrigaku\ ;
+信仰告白 < shinkoukokuhaku\ ;
+格物致知 < kakubutsuchichi\ ;
+一姫二太郎 < ichihimenitarou\ ;
+界面活性剤 < kaimenkasseizai\ ;
+米穀通帳 < beikokutsuuchou\ ;
+人生案内欄 < jinseian''nairan\ ;
+実用新案 < jitsuyoushin''an\ ;
+心身障害 < shinshinshougai\ ;
+一分二十秒 < ippun''nijuubyou\ ;
+速戦即決 < sokusensokketsu\ ;
+化学吸着 < kagakukyuuchaku\ ;
+四方山話 < yomoyamabanashi\ ;
+皇室典範 < koushitsutenpan\ ;
+南阿共和国 < nan''akyouwakoku\ ;
+二十四時間制 < nijuuyojikansei\ ;
+特別国会 < tokubetsukokkai\ ;
+一坪本社 < hitotsubohonsha\ ;
+早口言葉 < hayakuchikotoba\ ;
+深山幽谷 < shinzan''yuukoku\ ;
+通商産業 < tsuushousangyou\ ;
+主戦闘戦車 < shusentousensha\ ;
+建築面積 < kenchikumenseki\ ;
+比較言語学 < hikakugengogaku\ ;
+盤根錯節 < bankonsakusetsu\ ;
+内的生活 < naitekiseikatsu\ ;
+内政不干渉 < naiseifukanshou\ ;
+秘密漏洩 < himitsurousetsu\ ;
+高等裁判所 < koutousaibansho\ ;
+出札掛 < shussatsugakari\ ;
+玉石混淆 < gyokusekikonkou\ ;
+雛鑑別者 < hinakanbetsusha\ ;
+終身年金 < shuushin''nenkin\ ;
+人物寸描 < jinbutsusunbyou\ ;
+商品目録 < shouhinmokuroku\ ;
+外食産業 < gaishokusangyou\ ;
+資源節約 < shigensetsuyaku\ ;
+球面幾何学 < kyuumenkikagaku\ ;
+静脈注射 < joumyakuchuusha\ ;
+冒険小説 < boukenshousetsu\ ;
+熱硬化物 < netsukoukabutsu\ ;
+電子顕微鏡 < denshikenbikyou\ ;
+国有鉄道 < kokuyuutetsudou\ ;
+確率変数 < kakuritsuhensuu\ ;
+開発計画 < kaihatsukeikaku\ ;
+労働生産性 < roudouseisansei\ ;
+有害物質 < yuugaibusshitsu\ ;
+情状酌量 < joujoushakuryou\ ;
+侵略戦争 < shinryakusensou\ ;
+平行四辺形 < heikoushihenkei\ ;
+冒頭陳述 < boutouchinjutsu\ ;
+焼身自殺 < shoushinjisatsu\ ;
+感傷主義者 < kanshoushugisha\ ;
+学生自治会 < gakuseijichikai\ ;
+大安吉日 < taiankichinichi\ ;
+矯正視力 < kyouseishiryoku\ ;
+年金受給者 < nenkinjukyuusha\ ;
+研究開発 < kenkyuukaihatsu\ ;
+三指鴎 < mitsuyubikamome\ ;
+談合入札 < dangounyuusatsu\ ;
+非同期通信 < hidoukitsuushin\ ;
+三十年戦争 < sanjuunensensou\ ;
+閉所恐怖症 < heijokyoufushou\ ;
+司法研修所 < shihoukenshuujo\ ;
+陸生動物 < rikuseidoubutsu\ ;
+低金利政策 < teikinriseisaku\ ;
+看護婦養成所 < kangofuyouseijo\ ;
+南太平洋 < minamitaiheiyou\ ;
+麻薬常用者 < mayakujouyousha\ ;
+学生生活 < gakuseiseikatsu\ ;
+長距離列車 < choukyoriressha\ ;
+懲罰委員会 < choubatsuiinkai\ ;
+119番 < hyakujuukyuuban\ ;
+有機化合物 < yuukikagoubutsu\ ;
+結合組織 < ketsugousoshiki\ ;
+不当労働行為 < futouroudoukoui\ ;
+彫心鏤骨 < choushinrukotsu\ ;
+縁日商人 < en''nichishounin\ ;
+心神耗弱 < shinshinmoujaku\ ;
+短期貸付 < tankikashitsuke\ ;
+楽天主義者 < rakutenshugisha\ ;
+左中括弧 < hidarichuukakko\ ;
+無条件降伏 < mujoukenkoufuku\ ;
+運転免許証 < untenmenkyoshou\ ;
+格闘戦部隊 < kakutousenbutai\ ;
+黒色人種 < kokushokujinshu\ ;
+公式発表 < koushikihappyou\ ;
+展示即売会 < tenjisokubaikai\ ;
+軍事境界線 < gunjikyoukaisen\ ;
+軟骨組織 < nankotsusoshiki\ ;
+腰赤燕 < koshiakatsubame\ ;
+消費者団体 < shouhishadantai\ ;
+全体主義国 < zentaishugikoku\ ;
+星間物質 < seikanbusshitsu\ ;
+不可侵条約 < fukashinjouyaku\ ;
+生涯学習 < shougaigakushuu\ ;
+知識表現 < chishikihyougen\ ;
+源氏物語 < genjimonogatari\ ;
+七転八倒 < shichitenbattou\ ;
+座席指定券 < zasekishiteiken\ ;
+白色人種 < hakushokujinshu\ ;
+平家物語 < heikemonogatari\ ;
+拒絶反応 < kyozetsuhan''nou\ ;
+帰国子女枠 < kikokushijowaku\ ;
+特別待遇 < tokubetsutaiguu\ ;
+青天白日 < seitenhakujitsu\ ;
+天罰覿面 < tenbatsutekimen\ ;
+血族結婚 < ketsuzokukekkon\ ;
+発色現像 < hasshokugenshou\ ;
+入札価格 < nyuusatsukakaku\ ;
+連立内閣 < renritsunaikaku\ ;
+腹式呼吸 < fukushikikokyuu\ ;
+遺言補足書 < yuigonhosokusho\ ;
+低開発国 < teikaihatsukoku\ ;
+軽妙洒脱 < keimyoushadatsu\ ;
+鋼索鉄道 < kousakutetsudou\ ;
+炭鉱労働者 < tankouroudousha\ ;
+解析幾何学 < kaisekikikagaku\ ;
+現有勢力 < gen''yuuseiryoku\ ;
+経済性向上 < keizaiseikoujou\ ;
+遊休施設 < yuukyuushisetsu\ ;
+跳躍振動 < chouyakushindou\ ;
+地下核実験 < chikakakujikken\ ;
+比例代表制 < hireidaihyousei\ ;
+立憲君主政 < rikkenkunshusei\ ;
+魚雷発射管 < gyoraihasshakan\ ;
+損益分岐点 < son''ekibunkiten\ ;
+社会保険庁 < shakaihokenchou\ ;
+超然内閣 < chouzen''naikaku\ ;
+歩行者天国 < hokoushatengoku\ ;
+実業学校 < jitsugyougakkou\ ;
+私立大学 < shiritsudaigaku\ ;
+最低血圧 < saiteiketsuatsu\ ;
+尊属殺人 < sonzokusatsujin\ ;
+国民皆保険 < kokuminkaihoken\ ;
+診察室 < shinsatsushitsu\ ;
+中立地帯 < chuuritsuchitai\ ;
+両極地方 < ryoukyokuchihou\ ;
+連続殺人 < renzokusatsujin\ ;
+垂直分業 < suichokubungyou\ ;
+洗濯石鹸 < sentakusetsuken\ ;
+闘病生活 < toubyouseikatsu\ ;
+同文通達 < doubuntsuutatsu\ ;
+円転滑脱 < entenkatsudatsu\ ;
+単純再生産 < tanjunsaiseisan\ ;
+被選挙資格 < hisenkyoshikaku\ ;
+生物工学 < seibutsukougaku\ ;
+基準外賃金 < kijungaichingin\ ;
+一律減反 < ichiritsugentan\ ;
+人員縮少 < jin''inshukushou\ ;
+識別力 < shikibetsuryoku\ ;
+熱帯低気圧 < nettaiteikiatsu\ ;
+独立変数 < dokuritsuhensuu\ ;
+人定質問 < jinteishitsumon\ ;
+新約聖書 < shin''yakuseisho\ ;
+生殺与奪 < seisatsuyodatsu\ ;
+私自身 < watakushijishin\ ;
+平清盛 < tairanokiyomori\ ;
+殿様仕事 < tonosamashigoto\ ;
+台所用品 < daidokoroyouhin\ ;
+貴金属卸 < kikinzokuoroshi\ ;
+上方贅六 < kamigatazeiroku\ ;
+血族関係 < ketsuzokukankei\ ;
+子宮後屈 < shikyuukoukutsu\ ;
+南征北伐 < nanseihokubatsu\ ;
+現在完了時 < genzaikanryouji\ ;
+真実一路 < shinjitsuichiro\ ;
+特別運賃 < tokubetsuunchin\ ;
+等辺三角形 < touhensankakkei\ ;
+日常茶飯事 < nichijousahanji\ ;
+通常戦力 < tsuujousenryoku\ ;
+連鎖状球菌 < rensajoukyuukin\ ;
+利害得失 < rigaitokushitsu\ ;
+浅酌低唱 < senshakuteishou\ ;
+裸子植物 < rashishokubutsu\ ;
+借用証書 < shakuyoushousho\ ;
+共有結合 < kyouyuuketsugou\ ;
+原爆犠牲者 < genbakugiseisha\ ;
+回折領域 < kaisetsuryouiki\ ;
+職業意識 < shokugyouishiki\ ;
+外国投資家 < gaikokutoushika\ ;
+単式学級 < tanshikigakkyuu\ ;
+学術雑誌 < gakujutsuzasshi\ ;
+入出力 < nyuushutsuryoku\ ;
+紛失届 < funshitsutodoke\ ;
+電波天文学 < denpatenmongaku\ ;
+卒業試験 < sotsugyoushiken\ ;
+優性形質 < yuuseikeishitsu\ ;
+成長曲線 < seichoukyokusen\ ;
+百八十度 < hyakuhachijuudo\ ;
+大和撫子 < yamatonadeshiko\ ;
+好色文学 < koushokubungaku\ ;
+霊魂消滅 < reikonshoumetsu\ ;
+特別配当 < tokubetsuhaitou\ ;
+構造言語学 < kouzougengogaku\ ;
+風力階級 < fuuryokukaikyuu\ ;
+地域冷暖房 < chiikireidanbou\ ;
+流体力学 < ryuutairikigaku\ ;
+人工呼吸法 < jinkoukokyuuhou\ ;
+劣弱意識 < retsujakuishiki\ ;
+実証主義者 < jisshoushugisha\ ;
+求職係 < kyuushokugakari\ ;
+二股膏薬 < futamatakouyaku\ ;
+支持力理論 < shijiryokuriron\ ;
+物質代謝 < busshitsutaisha\ ;
+管轄官庁 < kankatsukanchou\ ;
+公開討論会 < koukaitouronkai\ ;
+修正申告 < shuuseishinkoku\ ;
+心理小説 < shinrishousetsu\ ;
+着陸地点 < chakurikuchiten\ ;
+文部科学省 < monbukagakushou\ ;
+特許明細書 < tokkyomeisaisho\ ;
+実験小説 < jikkenshousetsu\ ;
+原子爆発 < genshibakuhatsu\ ;
+税制調査会 < zeiseichousakai\ ;
+入力情報 < nyuuryokujouhou\ ;
+量子力学 < ryoushirikigaku\ ;
+奪三振王 < datsusanshin''ou\ ;
+発展途上国 < hattentojoukoku\ ;
+公共図書館 < koukyoutoshokan\ ;
+年末調整 < nenmatsuchousei\ ;
+学術論文 < gakujutsuronbun\ ;
+生物学者 < seibutsugakusha\ ;
+六百六号 < roppyakurokugou\ ;
+思弁哲学 < shibentetsugaku\ ;
+国内規格化 < kokunaikikakuka\ ;
+創立記念日 < souritsukinenbi\ ;
+金銭登録器 < kinsentourokuki\ ;
+抗生物質 < kouseibusshitsu\ ;
+労働組合法 < roudoukumiaihou\ ;
+素形材産業 < sokeizaisangyou\ ;
+活動写真 < katsudoushashin\ ;
+交換貿易制 < koukanbouekisei\ ;
+現地駐在員 < genchichuuzaiin\ ;
+最小自乗法 < saishoujijouhou\ ;
+小型乗用車 < kogatajouyousha\ ;
+属性値行列 < zokusegyouretsu\ ;
+海軍兵学校 < kaigunheigakkou\ ;
+精神薄弱 < seishinhakujaku\ ;
+強迫観念 < kyouhakukan''nen\ ;
+黄道十二宮 < koudoujuunikyuu\ ;
+苦情処理機関 < kujoushorikikan\ ;
+軍縮協定 < gunshukukyoutei\ ;
+着陸地帯 < chakurikuchitai\ ;
+炭塵爆発 < tanjinbakuhatsu\ ;
+補助記憶装置 < hojokiokusouchi\ ;
+生活環境 < seikatsukankyou\ ;
+出来高仕事 < dekidakashigoto\ ;
+技術革新 < gijutsukakushin\ ;
+資産負債表 < shisanfusaihyou\ ;
+粟粒結核 < zokuryuukekkaku\ ;
+版権所有者 < hankenshoyuusha\ ;
+信徒伝動者 < shintodendousha\ ;
+仮受取証 < kariuketorishou\ ;
+新聞配達 < shinbunhaitatsu\ ;
+卒業論文 < sotsugyouronbun\ ;
+登録商標 < tourokushouhyou\ ;
+信用銘柄 < shin''youmeigara\ ;
+操浄瑠璃 < ayatsurijoururi\ ;
+共同生活 < kyoudouseikatsu\ ;
+官能主義者 < kan''noushugisha\ ;
+伝達特性 < dentatsutokusei\ ;
+金壺眼 < kanatsubomanako\ ;
+信仰生活 < shinkouseikatsu\ ;
+郷土小説 < kyoudoshousetsu\ ;
+集団生活 < shuudanseikatsu\ ;
+聖霊降臨祭 < seireikourinsai\ ;
+駐日大使 < chuunichitaishi\ ;
+島国根性 < shimagunikonjou\ ;
+流行性脳炎 < ryuukouseinouen\ ;
+記念論文集 < kinenronbunshuu\ ;
+自動連結機 < jidourenketsuki\ ;
+大陸性気候 < tairikuseikikou\ ;
+左小括弧 < hidarishoukakko\ ;
+核兵器実験 < kakuheikijikken\ ;
+民族宗教 < minzokushuukyou\ ;
+日中韓越 < nitchuukan''etsu\ ;
+誇大妄想狂 < kodaimousoukyou\ ;
+黒色火薬 < kokushokukayaku\ ;
+万有神教 < ban''yuushinkyou\ ;
+頭脳流出 < zunouryuushutsu\ ;
+直接話法 < chokusetsuwahou\ ;
+身分証明書 < mibunshoumeisho\ ;
+文字多重放送 < mojitajuuhousou\ ;
+医師国家試験 < ishikokkashiken\ ;
+文化人類学 < bunkajinruigaku\ ;
+形質転換 < keishitsutenkan\ ;
+第三次産業 < daisanjisangyou\ ;
+正真正銘 < shoushinshoumei\ ;
+爆弾発言 < bakudanhatsugen\ ;
+文化大革命 < bunkadaikakumei\ ;
+直立不動 < chokuritsufudou\ ;
+商業道徳 < shougyoudoutoku\ ;
+陳列室 < chinretsushitsu\ ;
+特設会場 < tokusetsukaijou\ ;
+非局所分岐 < hikyokushobunki\ ;
+核物理学 < kakubutsurigaku\ ;
+肢体不自由児 < shitaifujiyuuji\ ;
+仮名漢字変換 < kanakanjihenkan\ ;
+直立猿人 < chokuritsuenjin\ ;
+関係代名詞 < kankeidaimeishi\ ;
+多国籍言語 < takokusekigengo\ ;
+超連結子 < chourenketsushi\ ;
+水銀気圧計 < suiginkiatsukei\ ;
+甲論乙駁 < kouron''otsubaku\ ;
+児童心理学 < jidoushinrigaku\ ;
+物的資源 < butsutekishigen\ ;
+直接支援 < chokusetsushien\ ;
+空洞化現象 < kuudoukagenshou\ ;
+無理方程式 < murihouteishiki\ ;
+新制中学 < shinseichuugaku\ ;
+圧力団体 < atsuryokudantai\ ;
+温血動物 < onketsudoubutsu\ ;
+交差対称性 < kousataishousei\ ;
+中立労連 < chuuritsurouren\ ;
+特別室 < tokubetsushitsu\ ;
+研究活動 < kenkyuukatsudou\ ;
+自然哲学 < shizentetsugaku\ ;
+株主総会 < kabunushisoukai\ ;
+性格判別 < seikakuhanbetsu\ ;
+喧嘩両成敗 < kenkaryouseibai\ ;
+過失傷害 < kashitsushougai\ ;
+通信工学 < tsuushinkougaku\ ;
+同一人物 < douitsujinbutsu\ ;
+国家公務員法 < kokkakoumuinhou\ ;
+商学博士 < shougakuhakushi\ ;
+心頭滅却 < shintoumekkyaku\ ;
+強行採決 < kyoukousaiketsu\ ;
+視聴覚機器 < shichoukakukiki\ ;
+就任演説 < shuunin''enzetsu\ ;
+染色体異常 < senshokutaiijou\ ;
+名論卓説 < meirontakusetsu\ ;
+注入教育 < chuunyuukyouiku\ ;
+向精神薬 < kouseishin''yaku\ ;
+結婚適齢期 < kekkontekireiki\ ;
+漸近的自由 < zenkintekijiyuu\ ;
+分列行進 < bunretsukoushin\ ;
+食料品店 < shokuryouhinten\ ;
+意志決定機関 < ishiketteikikan\ ;
+主辞素性原理 < shujisoseigenri\ ;
+潮汐摩擦 < chousekimasatsu\ ;
+節足動物 < sessokudoubutsu\ ;
+食物連鎖 < shokumotsurensa\ ;
+中肉中背 < chuunikuchuuzei\ ;
+社会民主党 < shakaiminshutou\ ;
+集中攻撃 < shuuchuukougeki\ ;
+確定判決 < kakuteihanketsu\ ;
+少女小説 < shoujoshousetsu\ ;
+私設応援団 < shisetsuouendan\ ;
+博学力行 < hakugakuryokkou\ ;
+経済同友会 < keizaidouyuukai\ ;
+反証可能性 < hanshoukanousei\ ;
+傍系血族 < boukeiketsuzoku\ ;
+中間内閣 < chuukan''naikaku\ ;
+単独供給 < tandokukyoukyuu\ ;
+搬送周波数 < hansoushuuhasuu\ ;
+失業保険 < shitsugyouhoken\ ;
+特別会計 < tokubetsukaikei\ ;
+振幅変調 < shinpukuhenchou\ ;
+広告収入 < koukokushuunyuu\ ;
+中国大陸 < chuugokutairiku\ ;
+最高指導者 < saikoushidousha\ ;
+放出物資 < houshutsubusshi\ ;
+配達証明 < haitatsushoumei\ ;
+最終目的 < saishuumokuteki\ ;
+葡萄状球菌 < budoujoukyuukin\ ;
+全翼飛行機 < zen''yokuhikouki\ ;
+一蓮托生 < ichirentakushou\ ;
+速効性肥料 < sokkouseihiryou\ ;
+三角測量 < sankakusokuryou\ ;
+動物学者 < doubutsugakusha\ ;
+化学物質 < kagakubusshitsu\ ;
+遅効性肥料 < chikouseihiryou\ ;
+国粋主義者 < kokusuishugisha\ ;
+熱原子核 < netsugenshikaku\ ;
+地質調査 < chishitsuchousa\ ;
+断弾性係数 < dandanseikeisuu\ ;
+歯列矯正 < shiretsukyousei\ ;
+四十七士 < shijuushichishi\ ;
+二次方程式 < nijihouteishiki\ ;
+十月革命 < juugatsukakumei\ ;
+応用心理学 < ouyoushinrigaku\ ;
+文質彬彬 < bunshitsuhinpin\ ;
+精神異常者 < seishin''ijousha\ ;
+紫水晶 < murasakizuishou\ ;
+信託契約 < shintakukeiyaku\ ;
+出生年月日 < shusseinengappi\ ;
+独立戦争 < dokuritsusensou\ ;
+火力発電 < karyokuhatsuden\ ;
+速達郵便 < sokutatsuyuubin\ ;
+弁護士事務所 < bengoshijimusho\ ;
+四百四病 < shihyakushibyou\ ;
+動詞状名詞 < doushijoumeishi\ ;
+元帳残高 < motochouzandaka\ ;
+自由裁量権 < jiyuusairyouken\ ;
+中央集権化 < chuuoushuukenka\ ;
+無利息証券 < murisokushouken\ ;
+抽象美術 < chuushoubijutsu\ ;
+物質文明 < busshitsubunmei\ ;
+超物理学 < choubutsurigaku\ ;
+仁義礼智信 < jingireichishin\ ;
+更年期障害 < kounenkishougai\ ;
+国語審議会 < kokugoshingikai\ ;
+地方裁判所 < chihousaibansho\ ;
+食糧不足 < shokuryoubusoku\ ;
+公共施設 < koukyoushisetsu\ ;
+自動改札機 < jidoukaisatsuki\ ;
+南極条約 < nankyokujouyaku\ ;
+未就学児童 < mishuugakujidou\ ;
+兵力削減 < heiryokusakugen\ ;
+取締役 < torishimariyaku\ ;
+公職追放 < koushokutsuihou\ ;
+学術団体 < gakujutsudantai\ ;
+実時間処理 < jitsujikanshori\ ;
+共生生物 < kyouseiseibutsu\ ;
+被子植物 < hishishokubutsu\ ;
+有畜農業 < yuuchikunougyou\ ;
+寄生植物 < kiseishokubutsu\ ;
+預金準備率 < yokinjunbiritsu\ ;
+天体望遠鏡 < tentaibouenkyou\ ;
+社会諸科学 < shakaishokagaku\ ;
+武侠小説 < bukyoushousetsu\ ;
+木質繊維 < mokushitsusen''i\ ;
+直通列車 < chokutsuuressha\ ;
+転置行列 < tenchigyouretsu\ ;
+法律事務所 < houritsujimusho\ ;
+出動命令 < shutsudoumeirei\ ;
+舌先三寸 < shitasakisanzun\ ;
+大衆食堂 < taishuushokudou\ ;
+実利主義者 < jitsurishugisha\ ;
+内閣閣僚 < naikakukakuryou\ ;
+未確認情報 < mikakuninjouhou\ ;
+老人性痴呆 < roujinseichihou\ ;
+在外研究員 < zaigaikenkyuuin\ ;
+人口爆発 < jinkoubakuhatsu\ ;
+客観主義者 < kyakkanshugisha\ ;
+片口鰯 < katakuchiiwashi\ ;
+圧縮効率 < asshukukouritsu\ ;
+国立銀行 < kokuritsuginkou\ ;
+一病息災 < ichibyousokusai\ ;
+選手権大会 < senshukentaikai\ ;
+正金取引 < shoukintorihiki\ ;
+流通革命 < ryuutsuukakumei\ ;
+芸術作品 < geijutsusakuhin\ ;
+下級裁判所 < kakyuusaibansho\ ;
+逓降変圧器 < teikouhenatsuki\ ;
+限界顕微鏡 < genkaikenbikyou\ ;
+新興宗教 < shinkoushuukyou\ ;
+知識工学 < chishikikougaku\ ;
+体質改善 < taishitsukaizen\ ;
+片側通行 < katagawatsuukou\ ;
+南極大陸 < nankyokutairiku\ ;
+艶笑小話 < enshoukobanashi\ ;
+要撃戦闘機 < yougekisentouki\ ;
+商業美術 < shougyoubijutsu\ ;
+神色自若 < shinshokujijaku\ ;
+水際作戦 < mizugiwasakusen\ ;
+不公平競争 < fukouheikyousou\ ;
+物的証拠 < butsutekishouko\ ;
+公認会計士 < kouninkaikeishi\ ;
+操業短縮 < sougyoutanshuku\ ;
+不倒翁 < okiagarikoboshi\ ;
+内股膏薬 < uchimatagouyaku\ ;
+犯行声明文 < hankouseimeibun\ ;
+消費者価格 < shouhishakakaku\ ;
+音楽評論家 < ongakuhyouronka\ ;
+色彩感覚 < shikisaikankaku\ ;
+公安調査庁 < kouanchousachou\ ;
+乗降車優先 < joukoushayuusen\ ;
+人工甘味料 < jinkoukanmiryou\ ;
+在郷軍人会 < zaigougunjinkai\ ;
+自記湿度計 < jikishitsudokei\ ;
+大統一理論 < daitouitsuriron\ ;
+超能力者 < chounouryokusha\ ;
+検定教科書 < kenteikyoukasho\ ;
+医学技術士 < igakugijutsushi\ ;
+天皇誕生日 < ten''noutanjoubi\ ;
+太平洋地域 < taiheiyouchiiki\ ;
+木食上人 < mokujikishounin\ ;
+自由主義国家 < jiyuushugikokka\ ;
+連載小説 < rensaishousetsu\ ;
+資産再評価 < shisansaihyouka\ ;
+情緒障害児 < jouchoshougaiji\ ;
+日本国憲法 < nihonkokukenpou\ ;
+人民解放軍 < jinminkaihougun\ ;
+焦熱地獄 < shounetsujigoku\ ;
+骨粗鬆症 < kotsusoshoushou\ ;
+流通証券 < ryuutsuushouken\ ;
+差引勘定 < sashihikikanjou\ ;
+開腹手術 < kaifukushujutsu\ ;
+即日出荷 < sokujitsushukka\ ;
+絶対君主制 < zettaikunshusei\ ;
+株式配当 < kabushikihaitou\ ;
+蛍光物質 < keikoubusshitsu\ ;
+聴覚神経 < choukakushinkei\ ;
+懲戒免職 < choukaimenshoku\ ;
+芸術愛好家 < geijutsuaikouka\ ;
+確定申告 < kakuteishinkoku\ ;
+職業軍人 < shokugyougunjin\ ;
+私生児出産 < shiseijishussan\ ;
+生命維持装置 < seimeiijisouchi\ ;
+株式公開 < kabushikikoukai\ ;
+廃仏毀釈 < haibutsukishaku\ ;
+両院協議会 < ryouinkyougikai\ ;
+小田原提灯 < odawaradjouchin\ ;
+眼底出血 < ganteishukketsu\ ;
+信任投票 < shin''nintouhyou\ ;
+関連質問 < kanrenshitsumon\ ;
+建築業者 < kenchikugyousha\ ;
+哲学史要 < tetsugakushiyou\ ;
+知識産業 < chishikisangyou\ ;
+貨物自動車 < kamotsujidousha\ ;
+片手間仕事 < katatemashigoto\ ;
+神経回路網 < shinkeikairomou\ ;
+浚渫作業 < shunsetsusagyou\ ;
+卸売市場 < oroshiurishijou\ ;
+通信教育 < tsuushinkyouiku\ ;
+北斗七星 < hokutoshichisei\ ;
+正式発表 < seishikihappyou\ ;
+炭素化合物 < tansokagoubutsu\ ;
+暴力革命 < bouryokukakumei\ ;
+気管支喘息 < kikanshizensoku\ ;
+共産中国 < kyousanchuugoku\ ;
+森林鉄道 < shinrintetsudou\ ;
+経済協力 < keizaikyouryoku\ ;
+物的損害 < butsutekisongai\ ;
+不肖私 < fushouwatakushi\ ;
+空中爆撃 < kuuchuubakugeki\ ;
+不動産業者 < fudousangyousha\ ;
+海洋気象台 < kaiyoukishoudai\ ;
+失業率 < shitsugyouritsu\ ;
+年中失言 < nenjuushitsugen\ ;
+抽出物 < chuushutsubutsu\ ;
+正方行列 < seihougyouretsu\ ;
+自動翻訳機 < jidouhon''yakuki\ ;
+老若男女 < rounyakunan''nyo\ ;
+縄文式土器 < joumonshikidoki\ ;
+修了証書 < shuuryoushousho\ ;
+下等植物 < katoushokubutsu\ ;
+輸入課徴金 < yunyuukachoukin\ ;
+顕花植物 < kenkashokubutsu\ ;
+重商主義者 < juushoushugisha\ ;
+地元警察 < jimotokeisatsu\ ;
+中国地方 < chuugokuchihou\ ;
+女友達 < on''natomodachi\ ;
+三校終了 < sankoushuuryou\ ;
+人工血液 < jinkouketsueki\ ;
+有性生殖 < yuuseiseishoku\ ;
+錬金術師 < renkinjutsushi\ ;
+遺産相続税 < isansouzokuzei\ ;
+対日感情 < tainichikanjou\ ;
+毘廬遮那仏 < birushanabutsu\ ;
+猥褻文書 < waisetsubunsho\ ;
+百日咳 < hyakunichizeki\ ;
+仮装行列 < kasougyouretsu\ ;
+正弦曲線 < seigenkyokusen\ ;
+没個性的 < botsukoseiteki\ ;
+独立運動 < dokuritsuundou\ ;
+関税自主権 < kanzeijishuken\ ;
+脱脂粉乳 < dasshifun''nyuu\ ;
+基本周波数 < kihonshuuhasuu\ ;
+原子力船 < genshiryokusen\ ;
+四輪駆動車 < yonrinkudousha\ ;
+三球三振 < sankyuusanshin\ ;
+面白半分 < omoshirohanbun\ ;
+商船大学 < shousendaigaku\ ;
+天地万物 < tenchibanbutsu\ ;
+行列式 < gyouretsushiki\ ;
+耐熱合金 < tainetsugoukin\ ;
+静電気防止 < seidenkiboushi\ ;
+政略結婚 < seiryakukekkon\ ;
+特高警察 < tokkoukeisatsu\ ;
+煙突掃除夫 < entotsusoujifu\ ;
+商慣習法 < shoukanshuuhou\ ;
+昆虫採集 < konchuusaishuu\ ;
+中国拳法 < chuugokukenpou\ ;
+美術監督 < bijutsukantoku\ ;
+取扱人 < toriatsukainin\ ;
+副大統領 < fukudaitouryou\ ;
+休戦記念日 < kyuusenkinenbi\ ;
+焦性硫酸 < shouseiryuusan\ ;
+学校群制度 < gakkougunseido\ ;
+周旋業者 < shuusengyousha\ ;
+南回帰線 < minamikaikisen\ ;
+放射線技師 < houshasengishi\ ;
+胎生動物 < taiseidoubutsu\ ;
+全国中継 < zenkokuchuukei\ ;
+牛歩戦術 < gyuuhosenjutsu\ ;
+突撃隊員 < totsugekitaiin\ ;
+約百万円 < yakuhyakumanen\ ;
+人海戦術 < jinkaisenjutsu\ ;
+出入国 < shutsunyuukoku\ ;
+家庭裁判所 < kateisaibansho\ ;
+天文学的 < tenmongakuteki\ ;
+思案投首 < shian''nagekubi\ ;
+長距離打者 < choukyoridasha\ ;
+裏口営業 < uraguchieigyou\ ;
+伝奇小説 < denkishousetsu\ ;
+中立主義 < chuuritsushugi\ ;
+才槌頭 < saidzuchiatama\ ;
+研究資料 < kenkyuushiryou\ ;
+古生物学 < koseibutsugaku\ ;
+更生施設 < kouseishisetsu\ ;
+片道切符 < katamichikippu\ ;
+日本標準時 < nihonhyoujunji\ ;
+接続助詞 < setsuzokujoshi\ ;
+誘導電動機 < yuudoudendouki\ ;
+逆説的 < gyakusetsuteki\ ;
+英仏海峡 < eifutsukaikyou\ ;
+稔実不良 < nenjitsufuryou\ ;
+建国記念日 < kenkokukinenbi\ ;
+公衆浴場 < koushuuyokujou\ ;
+副食物 < fukushokubutsu\ ;
+端末装置 < tanmatsusouchi\ ;
+文字符号化法 < mojifugoukahou\ ;
+伝統主義者 < dentoushugisha\ ;
+駐車料金 < chuusharyoukin\ ;
+資本取引 < shihontorihiki\ ;
+株式相場 < kabushikisouba\ ;
+登記番号欄 < toukibangouran\ ;
+歩行者優先 < hokoushayuusen\ ;
+無人宇宙船 < mujin''uchuusen\ ;
+免疫反応 < men''ekihan''nou\ ;
+建設会社 < kensetsugaisha\ ;
+本末顛倒 < honmatsutentou\ ;
+初志貫徹 < shoshikantetsu\ ;
+羅萄日辞典 < raponichijiten\ ;
+産業革命 < sangyoukakumei\ ;
+定年退職 < teinentaishoku\ ;
+国際親善 < kokusaishinzen\ ;
+性格診断 < seikakushindan\ ;
+全身衰弱 < zenshinsuijaku\ ;
+問題解決 < mondaikaiketsu\ ;
+温暖化現象 < ondankagenshou\ ;
+哺乳動物 < honyuudoubutsu\ ;
+資本注入 < shihonchuunyuu\ ;
+修業年限 < shuugyounengen\ ;
+婦人参政権 < fujinsanseiken\ ;
+自由民主党 < jiyuuminshutou\ ;
+緑綬褒章 < ryokujuhoushou\ ;
+研究題目 < kenkyuudaimoku\ ;
+病床日誌 < byoushounisshi\ ;
+算術計算 < sanjutsukeisan\ ;
+帰化植物 < kikashokubutsu\ ;
+金融恐慌 < kin''yuukyoukou\ ;
+個体発生論 < kotaihasseiron\ ;
+大威徳妙王 < daiitokumyouou\ ;
+特別措置 < tokubetsusochi\ ;
+弛張振動 < shichoushindou\ ;
+戦戦兢兢 < sensenkyoukyou\ ;
+大韓航空機 < taikankoukuuki\ ;
+観光施設 < kankoushisetsu\ ;
+善男善女 < zen''nanzen''nyo\ ;
+信用販売 < shin''youhanbai\ ;
+末梢神経 < masshoushinkei\ ;
+骨髄移植 < kotsuzuiishoku\ ;
+道徳教育 < doutokukyouiku\ ;
+金殿玉楼 < kindengyokurou\ ;
+不特定多数 < futokuteitasuu\ ;
+瓢箪鯰 < hyoutan''namazu\ ;
+東半球 < higashihankyuu\ ;
+動物質 < doubutsushitsu\ ;
+点滴注射 < tentekichuusha\ ;
+工学修士 < kougakushuushi\ ;
+門外不出 < mongaifushutsu\ ;
+主情主義者 < shujoushugisha\ ;
+法定代理人 < houteidairinin\ ;
+通信装置 < tsuushinsouchi\ ;
+作戦計画 < sakusenkeikaku\ ;
+公開図書館 < koukaitoshokan\ ;
+場外取引 < jougaitorihiki\ ;
+信託銀行 < shintakuginkou\ ;
+一時間以内 < ichijikan''inai\ ;
+境界調整 < kyoukaichousei\ ;
+主力艦隊 < shuryokukantai\ ;
+数理言語学 < suurigengogaku\ ;
+職場環境 < shokubakankyou\ ;
+越中褌 < etchuufundoshi\ ;
+割引価格 < waribikikakaku\ ;
+整形手術 < seikeishujutsu\ ;
+酸性食品 < sanseishokuhin\ ;
+原子力学 < genshirikigaku\ ;
+水中翼船 < suichuuyokusen\ ;
+遺産相続人 < isansouzokunin\ ;
+発達段階 < hattatsudankai\ ;
+方向探知器 < houkoutanchiki\ ;
+諸説紛紛 < shosetsufunpun\ ;
+乳酸飲料 < nyuusan''inryou\ ;
+個々別別 < kokobetsubetsu\ ;
+口不調法 < kuchibuchouhou\ ;
+超自然的 < choushizenteki\ ;
+熱可塑樹脂 < netsukasojushi\ ;
+国防長官 < kokubouchoukan\ ;
+正統信教 < seitoushinkyou\ ;
+強化合宿 < kyoukagasshuku\ ;
+朝鮮人参 < chousen''ninjin\ ;
+印半纏 < shirushibanten\ ;
+束縛変項 < sokubakuhenkou\ ;
+神経組織 < shinkeisoshiki\ ;
+超越関数 < chouetsukansuu\ ;
+効率向上 < kouritsukoujou\ ;
+無機化合物 < mukikagoubutsu\ ;
+仕方話 < shikatabanashi\ ;
+大脳皮質 < dainouhishitsu\ ;
+改札係 < kaisatsugakari\ ;
+生体力学 < seitairikigaku\ ;
+重要文化財 < juuyoubunkazai\ ;
+山下公園 < yamashitakouen\ ;
+居間兼食堂 < imakenshokudou\ ;
+口述試験 < koujutsushiken\ ;
+一日片時 < ichinichihenji\ ;
+社会生活 < shakaiseikatsu\ ;
+出版目録 < shupanmokuroku\ ;
+別途支出 < bettoshishutsu\ ;
+申告納税 < shinkokunouzei\ ;
+剃刀触 < kamisorikabure\ ;
+売渡証 < uriwatashishou\ ;
+即決裁判 < sokketsusaiban\ ;
+異方導電膜 < ihoudoudenmaku\ ;
+独立自尊 < dokuritsujison\ ;
+婚約指輪 < kon''yakuyubiwa\ ;
+血液凝固 < ketsuekigyouko\ ;
+出処進退 < shusshoshintai\ ;
+弓矢八幡 < yumiyahachiman\ ;
+警察手帳 < keisatsutechou\ ;
+職業婦人 < shokugyoufujin\ ;
+指示代名詞 < shijidaimeishi\ ;
+回復不可能 < kaifukufukanou\ ;
+至福千年 < shifukusen''nen\ ;
+天地開闢 < tenchikaibyaku\ ;
+冷凍食品 < reitoushokuhin\ ;
+補足説明 < hosokusetsumei\ ;
+信用状態 < shin''youjoutai\ ;
+絶対湿度 < zettaishitsudo\ ;
+明明白白 < meimeihakuhaku\ ;
+拝金主義者 < haikinshugisha\ ;
+軍備縮小 < gunbishukushou\ ;
+南無阿弥陀仏 < namuamidabutsu\ ;
+暴力団員 < bouryokudan''in\ ;
+大学教育 < daigakukyouiku\ ;
+第三人称 < daisan''ninshou\ ;
+人道主義者 < jindoushugisha\ ;
+永世中立 < eiseichuuritsu\ ;
+研究領域 < kenkyuuryouiki\ ;
+教育勅語 < kyouikuchokugo\ ;
+告別式 < kokubetsushiki\ ;
+精神障害 < seishinshougai\ ;
+天空海濶 < tenkuukaikatsu\ ;
+食餌療法 < shokujiryouhou\ ;
+中央分離帯 < chuuoubunritai\ ;
+温帯低気圧 < ontaiteikiatsu\ ;
+超国家主義 < choukokkashugi\ ;
+作者不知 < sakushashirazu\ ;
+生活水準 < seikatsusuijun\ ;
+卵生動物 < ranseidoubutsu\ ;
+筋肉労働 < kin''nikuroudou\ ;
+南支那海 < minamishinakai\ ;
+学術用語 < gakujutsuyougo\ ;
+自然食品 < shizenshokuhin\ ;
+商業組合 < shougyoukumiai\ ;
+語彙機能文法 < goikinoubunpou\ ;
+職権乱用 < shokkenran''you\ ;
+伴食大臣 < banshokudaijin\ ;
+夾雑物 < kyouzatsubutsu\ ;
+利害関係者 < rigaikankeisha\ ;
+衆議員議長 < shuugiingichou\ ;
+岡目八目 < okamehachimoku\ ;
+導波管定数 < douhakanteisuu\ ;
+斬新奇抜 < zanshinkibatsu\ ;
+直情径行 < chokujoukeikou\ ;
+私立学校 < shiritsugakkou\ ;
+中日辞典 < chuunichijiten\ ;
+丁字形定規 < teijigatajougi\ ;
+簡易裁判所 < kan''isaibansho\ ;
+分類目録 < bunruimokuroku\ ;
+内分泌腺 < naibunpitsusen\ ;
+反動主義者 < handoushugisha\ ;
+活路開拓 < katsurokaitaku\ ;
+平板測量 < heibansokuryou\ ;
+源泉徴収 < gensenchoushuu\ ;
+通信衛星 < tsuushin''eisei\ ;
+清算取引 < seisantorihiki\ ;
+特殊学級 < tokushugakkyuu\ ;
+信用調査 < shin''youchousa\ ;
+先物売買 < sakimonobaibai\ ;
+七難八苦 < shichinanhakku\ ;
+角膜移植 < kakumakuishoku\ ;
+音楽図書館 < ongakutoshokan\ ;
+救急病院 < kyuukyuubyouin\ ;
+接触感染 < sesshokukansen\ ;
+税金申告 < zeikinshinkoku\ ;
+絨毯爆撃 < juutanbakugeki\ ;
+七転八起 < shichitenhakki\ ;
+乗用自動車 < jouyoujidousha\ ;
+水銀中毒 < suiginchuudoku\ ;
+露出不足 < roshutsubusoku\ ;
+平上去入 < hyoujoukyonyuu\ ;
+国立公園 < kokuritsukouen\ ;
+公立学校 < kouritsugakkou\ ;
+通信圏外 < tsuushinkengai\ ;
+約束手形 < yakusokutegata\ ;
+召集令状 < shoushuureijou\ ;
+圧倒的多数 < attoutekitasuu\ ;
+新入社員 < shin''nyuushain\ ;
+日南海岸 < nichinankaigan\ ;
+非政府組織 < hiseifusoshiki\ ;
+汎整数式 < hanseisuushiki\ ;
+自由労働者 < jiyuuroudousha\ ;
+古物商人 < kobutsushounin\ ;
+緑白色 < ryokuhakushoku\ ;
+膝関節 < shitsukansetsu\ ;
+武力干渉 < buryokukanshou\ ;
+公衆道徳 < koushuudoutoku\ ;
+怪奇小説 < kaikishousetsu\ ;
+博愛主義者 < hakuaishugisha\ ;
+秘密投票 < himitsutouhyou\ ;
+圧力容器 < atsuryokuyouki\ ;
+求婚広告 < kyuukonkoukoku\ ;
+心因反応 < shin''inhan''nou\ ;
+定期乗車券 < teikijoushaken\ ;
+電気洗濯機 < denkisentakuki\ ;
+麦藁帽子 < mugiwaraboushi\ ;
+納税申告 < nouzeishinkoku\ ;
+反対称的 < hantaishouteki\ ;
+終戦記念日 < shuusenkinenbi\ ;
+住友銀行 < sumitomoginkou\ ;
+就業人口 < shuugyoujinkou\ ;
+全勝優勝 < zenshouyuushou\ ;
+建設大臣 < kensetsudaijin\ ;
+非良心的 < hiryoushinteki\ ;
+絶対必要 < zettaihitsuyou\ ;
+社会主義者 < shakaishugisha\ ;
+蛸足配線 < takoashihaisen\ ;
+工業大学 < kougyoudaigaku\ ;
+金壱万円 < kin''ichiman''en\ ;
+旅客列車 < ryokyakuressha\ ;
+小型自動車 < kogatajidousha\ ;
+立会演説 < tachiaienzetsu\ ;
+奨学資金 < shougakushikin\ ;
+民事訴訟法 < minjisoshouhou\ ;
+現金収入 < genkinshuunyuu\ ;
+第二量子化 < dainiryoushika\ ;
+二原子分子 < nigenshibunshi\ ;
+学術会議 < gakujutsukaigi\ ;
+法律問題 < houritsumondai\ ;
+直通電話 < chokutsuudenwa\ ;
+台所道具 < daidokorodougu\ ;
+電源供給 < dengenkyoukyuu\ ;
+常任指揮者 < jouninshikisha\ ;
+水陸両用 < suirikuryouyou\ ;
+通信手段 < tsuushinshudan\ ;
+下請会社 < shitaukegaisha\ ;
+第一人称 < daiichininshou\ ;
+学歴社会 < gakurekishakai\ ;
+農事試験場 < noujishikenjou\ ;
+情報化社会 < jouhoukashakai\ ;
+演奏曲目 < ensoukyokumoku\ ;
+思想警察 < shisoukeisatsu\ ;
+公益質屋 < kouekishichiya\ ;
+接続口 < setsuzokuguchi\ ;
+偕老同穴 < kairoudouketsu\ ;
+主観主義者 < shukanshugisha\ ;
+無教会主義 < mukyoukaishugi\ ;
+米価審議会 < beikashingikai\ ;
+健康食品 < kenkoushokuhin\ ;
+抽象名詞 < chuushoumeishi\ ;
+小乗仏教 < shoujoubukkyou\ ;
+時間外労働 < jikangairoudou\ ;
+合目的性 < goumokutekisei\ ;
+電力会社 < denryokugaisha\ ;
+百科全書派 < hyakkazenshoha\ ;
+二百二十日 < nihyakuhatsuka\ ;
+海洋開発 < kaiyoukaihatsu\ ;
+細胞分裂 < saiboubunretsu\ ;
+急行料金 < kyuukouryoukin\ ;
+丁丁発止 < chouchouhasshi\ ;
+教職課程 < kyoushokukatei\ ;
+二重価格制 < nijuukakakusei\ ;
+刑事訴訟法 < keijisoshouhou\ ;
+凝着力 < gyouchakuryoku\ ;
+懐勘定 < futokorokanjou\ ;
+出版業者 < shuppangyousha\ ;
+就職運動 < shuushokuundou\ ;
+略奪行為 < ryakudatsukoui\ ;
+理非曲直 < rihikyokuchoku\ ;
+提出物 < teishutsubutsu\ ;
+別冊付録 < bessatsufuroku\ ;
+三権分立 < sankenbunritsu\ ;
+出札口 < shussatsuguchi\ ;
+販売代理店 < hanbaidairiten\ ;
+共同研究 < kyoudoukenkyuu\ ;
+新刊紹介 < shinkanshoukai\ ;
+棟割長屋 < munewarinagaya\ ;
+修好条約 < shuukoujouyaku\ ;
+冠状動脈 < kanjoudoumyaku\ ;
+空空漠漠 < kuukuubakubaku\ ;
+悪性貧血 < akuseihinketsu\ ;
+休戦協定 < kyuusenkyoutei\ ;
+神経衰弱 < shinkeisuijaku\ ;
+回折格子 < kaisetsukoushi\ ;
+先決問題 < senketsumondai\ ;
+東亜諸民族 < touashominzoku\ ;
+就業日数 < shuugyounissuu\ ;
+実験動物 < jikkendoubutsu\ ;
+単葉飛行機 < tan''youhikouki\ ;
+忠君愛国 < chuukun''aikoku\ ;
+求人広告 < kyuujinkoukoku\ ;
+独立独歩 < dokuritsudoppo\ ;
+有害食品 < yuugaishokuhin\ ;
+国会議事録 < kokkaigijiroku\ ;
+麻薬中毒 < mayakuchuudoku\ ;
+金属工業 < kinzokukougyou\ ;
+卸売物価 < oroshiuribukka\ ;
+共同出資 < kyoudoushusshi\ ;
+狭軌鉄道 < kyoukitetsudou\ ;
+商業手形 < shougyoutegata\ ;
+郵便配達 < yuubinhaitatsu\ ;
+港湾当局 < kouwantoukyoku\ ;
+商業銀行 < shougyouginkou\ ;
+省略記号 < shouryakukigou\ ;
+天日瓦 < tenjitsugawara\ ;
+中間報告 < chuukanhoukoku\ ;
+夢物語 < yumemonogatari\ ;
+中心思想 < chuushinshisou\ ;
+五月人形 < gogatsuningyou\ ;
+伝承文学 < denshoubungaku\ ;
+政府保証債 < seifuhoshousai\ ;
+軟体動物 < nantaidoubutsu\ ;
+一昔前 < hitomukashimae\ ;
+強制収容 < kyouseishuuyou\ ;
+便乗主義者 < binjoushugisha\ ;
+一陽来腹 < ichiyouraifuku\ ;
+漁業協定 < gyogyoukyoutei\ ;
+水生動物 < suiseidoubutsu\ ;
+楔形文字 < kusabigatamoji\ ;
+百卒長 < hyakusotsuchou\ ;
+信用組合 < shin''youkumiai\ ;
+研究報告 < kenkyuuhoukoku\ ;
+逆行列 < gyakugyouretsu\ ;
+二大政党制 < nidaiseitousei\ ;
+水天彷彿 < suitenhoufutsu\ ;
+住宅産業 < juutakusangyou\ ;
+泡沫会社 < houmatsugaisha\ ;
+無利息公債 < murisokukousai\ ;
+談論風発 < danronfuuhatsu\ ;
+足素性原理 < ashisujougenri\ ;
+資本主義者 < shihonshugisha\ ;
+先発投手 < senpatsutoushu\ ;
+推理小説 < suirishousetsu\ ;
+紳士協定 < shinshikyoutei\ ;
+大名屋敷 < daimyouyashiki\ ;
+特異体質 < tokuitaishitsu\ ;
+中間搾取 < chuukansakushu\ ;
+文化地理学 < bunkachirigaku\ ;
+協調作業 < kyouchousagyou\ ;
+指圧療法 < shiatsuryouhou\ ;
+公認候補者 < kouninkouhosha\ ;
+工業技術 < kougyougijutsu\ ;
+総合芸術 < sougougeijutsu\ ;
+旭日章 < kyokujitsushou\ ;
+世界選手権 < sekaisenshuken\ ;
+中産階級 < chuusankaikyuu\ ;
+南十字星 < minamijuujisei\ ;
+新石器時代 < shinsekkijidai\ ;
+心霊手術 < shinreitejutsu\ ;
+成長産業 < seichousangyou\ ;
+受験参考書 < jukensankousho\ ;
+国際収支 < kokusaishuushi\ ;
+静止画放送 < seishigahousou\ ;
+上陸作戦 < jourikusakusen\ ;
+動力資源 < douryokushigen\ ;
+必要条件 < hitsuyoujouken\ ;
+少年感化院 < shounenkankain\ ;
+中流意識 < chuuryuuishiki\ ;
+長距離輸送 < choukyoriyusou\ ;
+再帰代名詞 < saikidaimeishi\ ;
+出漁区域 < shutsugyokuiki\ ;
+財形貯蓄 < zaikeichochiku\ ;
+職人気質 < shokuninkatagi\ ;
+控訴裁判所 < kousohaibansho\ ;
+単位行列 < tan''igyouretsu\ ;
+文化功労者 < bunkakourousha\ ;
+国連憲章 < kokurenkenshou\ ;
+水先案内 < mizusakian''nai\ ;
+真空掃除機 < shinkuusoujiki\ ;
+収容設備 < shuuyousetsubi\ ;
+深海漁業 < shinkaigyogyou\ ;
+人形浄瑠璃 < ningyoujoururi\ ;
+直往邁進 < chokuoumaishin\ ;
+天体力学 < tentairikigaku\ ;
+昔話 < mukashibanashi\ ;
+政治評論家 < seijihyouronka\ ;
+伝承叙事詩 < denshoujojishi\ ;
+有視界飛行 < yuushikaihikou\ ;
+幼友達 < osanatomodachi\ ;
+真空電球 < shinkuudenkyuu\ ;
+降三世妙王 < gouzanzemyouou\ ;
+等高線地図 < toukousenchizu\ ;
+上層建築 < jousoukenchiku\ ;
+役職手当 < yakushokuteate\ ;
+高圧電流 < kouatsudenryuu\ ;
+尻軽女 < shirigaruon''na\ ;
+亥年 < inoshishidoshi\ ;
+白鉢巻 < shirohachimaki\ ;
+交通道徳 < koutsuudoutoku\ ;
+水準測量 < suijunsokuryou\ ;
+製造年月日 < seizounengappi\ ;
+弁証法的 < benshouhouteki\ ;
+松茸御飯 < matsutakegohan\ ;
+関税障壁 < kanzeishouheki\ ;
+統括部長 < toukatsubuchou\ ;
+地方交付税 < chihoukoufuzei\ ;
+薄紫色 < usumurasakiiro\ ;
+損失補填 < sonshitsuhoten\ ;
+日本語教本 < nihongokyouhon\ ;
+出塁率 < shutsuruiritsu\ ;
+事事物物 < jijibutsubutsu\ ;
+連続写真 < renzokushashin\ ;
+俘虜収容所 < furyoshuuyoujo\ ;
+空気圧縮機 < kuukiasshukuki\ ;
+四百余州 < shihyakuyoshuu\ ;
+国連記念日 < kokurenkinenbi\ ;
+心筋梗塞 < shinkinkousoku\ ;
+宗教裁判 < shuukyousaiban\ ;
+電信柱 < denshinbashira\ ;
+写真石版 < shashinsekiban\ ;
+隠花植物 < inkashokubutsu\ ;
+無記名投票 < mukimeitouhyou\ ;
+微生物学 < biseibutsugaku\ ;
+戦略空軍 < senryakukuugun\ ;
+恭賀新年 < kyougashin''nen\ ;
+国際協定 < kokusaikyoutei\ ;
+自然主義者 < shizenshugisha\ ;
+色即是空 < shikisokuzekuu\ ;
+頭寒足熱 < zukansokunetsu\ ;
+区検察庁 < kukensatsuchou\ ;
+核防衛力 < kakuboueiryoku\ ;
+完全燃焼 < kanzen''nenshou\ ;
+重量感覚 < juuryoukankaku\ ;
+雌雄鑑別 < shiyuukanbetsu\ ;
+管区気象台 < kankukishoudai\ ;
+原生動物 < genseidoubutsu\ ;
+目的意識 < mokutekiishiki\ ;
+法定準備金 < houteijunbikin\ ;
+海生動物 < kaiseidoubutsu\ ;
+攻撃精神 < kougekiseishin\ ;
+作成技術 < sakuseigijutsu\ ;
+金銭信託 < kinsenshintaku\ ;
+吸収合併 < kyuushuugappei\ ;
+換骨奪胎 < kankotsudattai\ ;
+硬質陶器 < koushitsutouki\ ;
+寝台料金 < shindairyoukin\ ;
+購入注文 < kounyuuchuumon\ ;
+焦土戦術 < shoudosenjutsu\ ;
+有職故実 < yuusokukojitsu\ ;
+話話 < hanashibanashi\ ;
+無償信託 < mushoushintaku\ ;
+消費生活 < shouhiseikatsu\ ;
+室内遊戯 < shitsunaiyuugi\ ;
+宗教団体 < shuukyoudantai\ ;
+進行状況 < shinkoujoukyou\ ;
+高等動物 < koutoudoubutsu\ ;
+一膳飯屋 < ichizenmeshiya\ ;
+時代小説 < jidaishousetsu\ ;
+内証話 < naishoubanashi\ ;
+海洋性気候 < kaiyouseikikou\ ;
+曲線座標 < kyokusenzahyou\ ;
+当該人物 < tougaijinbutsu\ ;
+外貨準備高 < gaikajunbidaka\ ;
+要求送信 < youkyuusoushin\ ;
+百人一首 < hyakunin''isshu\ ;
+集団検診 < shuudankenshin\ ;
+旅行代理店 < ryokoudairiten\ ;
+安寧秩序 < an''neichitsujo\ ;
+下唇 < shitakuchibiru\ ;
+極楽鳥花 < gokurakuchouka\ ;
+中越紛争 < chuuetsufunsou\ ;
+一括購入 < ikkatsukounyuu\ ;
+民族自決 < minzokujiketsu\ ;
+倶梨伽羅紋紋 < kurikaramonmon\ ;
+正面攻撃 < shoumenkougeki\ ;
+教育産業 < kyouikusangyou\ ;
+空調設備 < kuuchousetsubi\ ;
+単独内閣 < tandokunaikaku\ ;
+緑玉石 < ryokugyokuseki\ ;
+教育実習 < kyouikujisshuu\ ;
+就業規則 < shuugyoukisoku\ ;
+教養番組 < kyouyoubangumi\ ;
+凍結資産 < touketsushisan\ ;
+集団農場 < shuudan''noujou\ ;
+昔昔 < mukashimukashi\ ;
+周辺諸国 < shuuhenshokoku\ ;
+国籍条項 < kokusekijoukou\ ;
+現物給与 < genbutsukyuuyo\ ;
+予選通過者 < yosentsuukasha\ ;
+豪雪地帯 < gousetsuchitai\ ;
+海千山千 < umisen''yamasen\ ;
+革新政党 < kakushinseitou\ ;
+少数民族 < shousuuminzoku\ ;
+労働協約 < roudoukyouyaku\ ;
+電撃作戦 < dengekisakusen\ ;
+膝蓋骨 < shitsugaikotsu\ ;
+女性解放論 < joseikaihouron\ ;
+脊髄神経 < sekizuishinkei\ ;
+美術大学 < bijutsudaigaku\ ;
+遺伝子治療 < idenshichiryou\ ;
+選択項目 < sentakukoumoku\ ;
+間接選挙 < kansetsusenkyo\ ;
+貝殻追放 < kaigaratsuihou\ ;
+群発地震 < gunpatsujishin\ ;
+絶対主義者 < zettaishugisha\ ;
+緊褌一番 < kinkon''ichiban\ ;
+共同炊事場 < kyoudousuijiba\ ;
+独身貴族 < dokushinkizoku\ ;
+福祉事務所 < fukushijimusho\ ;
+科学知識 < kagakuchishiki\ ;
+石部金吉 < ishibekinkichi\ ;
+花鳥風月 < kachoufuugetsu\ ;
+提出期限 < teishutsukigen\ ;
+三角系異常 < sankakukeiijou\ ;
+天長地久 < tenchouchikyuu\ ;
+百万長者 < hyakumanchouja\ ;
+対症療法 < taishouryouhou\ ;
+水産試験所 < suisanshikenjo\ ;
+中枢神経 < chuusuushinkei\ ;
+商工業者 < shoukougyousha\ ;
+開票速報 < kaihyousokuhou\ ;
+性的衝動 < seitekishoudou\ ;
+軍事裁判所 < gunjisaibansho\ ;
+特殊撮影 < tokushusatsuei\ ;
+輸出手形 < yushutsutegata\ ;
+史料館学 < shiryoukangaku\ ;
+空中楼閣 < kuuchuuroukaku\ ;
+隠退蔵物資 < intaizoubusshi\ ;
+少年文学 < shounenbungaku\ ;
+調整攻撃 < chouseikougeki\ ;
+精神年齢 < seishin''nenrei\ ;
+居中調停 < kyochuuchoutei\ ;
+税別価格 < zeibetsukakaku\ ;
+軍人生活 < gunjinseikatsu\ ;
+皇宮警察 < kouguukeisatsu\ ;
+粒々辛苦 < ryuuryuushinku\ ;
+東京大学 < toukyoudaigaku\ ;
+参考図書館 < sankoutoshokan\ ;
+興味津津 < kyoumishinshin\ ;
+無線周波数 < musenshuuhasuu\ ;
+千客万来 < senkyakubanrai\ ;
+選抜試験 < senbatsushiken\ ;
+航路標識 < kourohyoushiki\ ;
+緊急発進 < kinkyuuhasshin\ ;
+空中写真 < kuuchuushashin\ ;
+営業活動 < eigyoukatsudou\ ;
+救援活動 < kyuuenkatsudou\ ;
+天然硝子 < ten''nenshoushi\ ;
+信託資金 < shintakushikin\ ;
+市民生活 < shiminseikatsu\ ;
+重農主義者 < juunoushugisha\ ;
+乗合自動車 < noriaijidousha\ ;
+絶対権力 < zettaikenryoku\ ;
+周章狼狽 < shuushouroubai\ ;
+民族学者 < minzokugakusha\ ;
+膠着状態 < kouchakujoutai\ ;
+細胞遺伝学 < saibouidengaku\ ;
+面接試験 < mensetsushiken\ ;
+政策協定 < seisakukyoutei\ ;
+販売戦略 < hanbaisenryaku\ ;
+公設市場 < kousetsuichiba\ ;
+人物経済 < jinbutsukeizai\ ;
+心的状態 < shintekijoutai\ ;
+丘陵地帯 < kyuuryouchitai\ ;
+超音波洗浄 < chouonpasenjou\ ;
+刑事被告人 < keijihikokunin\ ;
+仮出獄 < karishutsugoku\ ;
+特別職 < tokubetsushoku\ ;
+群伝搬時間 < gundenpanjikan\ ;
+生涯教育 < shougaikyouiku\ ;
+旧約全書 < kyuuyakuzensho\ ;
+大根役者 < daikon''yakusha\ ;
+万年新造 < man''nenshinzou\ ;
+健康保険法 < kenkouhokenhou\ ;
+常任理事国 < jouninrijikoku\ ;
+座骨神経 < zakotsushinkei\ ;
+非金属元素 < hikinzokugenso\ ;
+長老教会 < chouroukyoukai\ ;
+陸上自衛隊 < rikujoujieitai\ ;
+貯蓄債券 < chochikusaiken\ ;
+武力介入 < buryokukainyuu\ ;
+保険勧誘員 < hokenkan''yuuin\ ;
+精密科学 < seimitsukagaku\ ;
+私鉄総連 < shitetsusouren\ ;
+伝送終了 < densoushuuryou\ ;
+窒素固定法 < chissokoteihou\ ;
+薫蒸消毒 < kunjoushoudoku\ ;
+法律相談 < houritsusoudan\ ;
+地域開発 < chiikikaihatsu\ ;
+国内産業 < kokunaisangyou\ ;
+一打逆転 < ichidagyakuten\ ;
+水生生物 < suiseiseibutsu\ ;
+有線通信 < yuusentsuushin\ ;
+相対性原理 < soutaiseigenri\ ;
+美術愛好家 < bijutsuaikouka\ ;
+起承転結 < kishoutenketsu\ ;
+物質主義 < busshitsushugi\ ;
+信託会社 < shintakugaisha\ ;
+中石器時代 < chuusekkijidai\ ;
+主知主義者 < shuchishugisha\ ;
+蚕糸試験所 < sanshishikenjo\ ;
+中間商人 < chuukanshounin\ ;
+静電容量 < seiden''youryou\ ;
+中流社会 < chuuryuushakai\ ;
+私立探偵 < shiritsutantei\ ;
+命辛辛 < inochigaragara\ ;
+国民投票 < kokumintouhyou\ ;
+有罪判決 < yuuzaihanketsu\ ;
+強化食品 < kyoukashokuhin\ ;
+伸縮自在 < shinshukujizai\ ;
+陸軍大学 < rikugundaigaku\ ;
+通信速度 < tsuushinsokudo\ ;
+黒金剛石 < kurokongouseki\ ;
+立体幾何学 < rittaikikagaku\ ;
+中国人街 < chuugokujingai\ ;
+学芸大学 < gakugeidaigaku\ ;
+大河小説 < taigashousetsu\ ;
+鉄道会社 < tetsudougaisha\ ;
+音楽形式 < ongakukeishiki\ ;
+性格分析 < seikakubunseki\ ;
+転入届 < ten''nyuutodoke\ ;
+不動産鑑定 < fudousankantei\ ;
+受付係 < uketsukegakari\ ;
+就職率 < shuushokuritsu\ ;
+現金書留 < genkinkakitome\ ;
+休戦条約 < kyuusenjouyaku\ ;
+二足動物 < nisokudoubutsu\ ;
+心理学的 < shinrigakuteki\ ;
+侃々諤諤 < kankangakugaku\ ;
+直線運動 < chokusen''undou\ ;
+悪徳新聞 < akutokushinbun\ ;
+未決拘留 < miketsukouryuu\ ;
+定量分析 < teiryoubunseki\ ;
+給料袋 < kyuuryoubukuro\ ;
+紙屑同然 < kamikuzudouzen\ ;
+温室栽培 < onshitsusaibai\ ;
+針小棒大 < shinshouboudai\ ;
+植物学 < shokubutsugaku\ ;
+太刀二腰 < tachifutakoshi\ ;
+認識不足 < ninshikibusoku\ ;
+団体協約 < dantaikyouyaku\ ;
+信頼回復 < shinraikaifuku\ ;
+修学旅行 < shuugakuryokou\ ;
+長距離飛行 < choukyorihikou\ ;
+第二次性徴 < dainijiseichou\ ;
+電源開発 < dengenkaihatsu\ ;
+模式標本 < moshikihyouhon\ ;
+追跡調査 < tsuisekichousa\ ;
+割引手形 < waribikitegata\ ;
+句構造文法 < kukouzoubunpou\ ;
+直流回路 < chokuryuukairo\ ;
+興行成績 < kougyouseiseki\ ;
+北洋漁業 < hokuyougyogyou\ ;
+国文学史 < kokubungakushi\ ;
+永久脱毛 < eikyuudatsumou\ ;
+排出基準 < haishutsukijun\ ;
+組職改革 < soshokukaikaku\ ;
+過失致死 < kashitsuchishi\ ;
+交通信号 < koutsuushingou\ ;
+動物実験 < doubutsujikken\ ;
+水上警察 < suijoukeisatsu\ ;
+労作教育 < rousakukyouiku\ ;
+核廃棄物 < kakuhaikibutsu\ ;
+鎮魂曲歌 < chinkonkyokuka\ ;
+非鉄金属 < hitetsukinzoku\ ;
+士官候補生 < shikankouhosei\ ;
+巡回図書館 < junkaitoshokan\ ;
+三百代言 < sanbyakudaigen\ ;
+徴兵忌避者 < chouheikihisha\ ;
+出訴期限法 < shussokigenhou\ ;
+中国伝来 < chuugokudenrai\ ;
+筋無力症 < kinmuryokushou\ ;
+流通資本 < ryuutsuushihon\ ;
+空即是色 < kuusokuzeshiki\ ;
+教育改革 < kyouikukaikaku\ ;
+切開手術 < sekkaishujutsu\ ;
+大和魂 < yamatodamashii\ ;
+下台所 < shimodaidokoro\ ;
+救護活動 < kyuugokatsudou\ ;
+軍用輸送機 < gun''youyusouki\ ;
+宣伝活動 < sendenkatsudou\ ;
+財産目録 < zaisanmokuroku\ ;
+言語地理学 < gengochirigaku\ ;
+正常終了 < seijoushuuryou\ ;
+前方後円墳 < zenpoukouenfun\ ;
+虫様突起炎 < chuuyoutokkien\ ;
+亡命生活 < boumeiseikatsu\ ;
+優越複合 < yuuetsufukugou\ ;
+純日本式 < jun''nihonshiki\ ;
+有形文化財 < yuukeibunkazai\ ;
+旧石器時代 < kyuusekkijidai\ ;
+手形割引 < tegatawaribiki\ ;
+動物崇拝 < doubutsusuuhai\ ;
+自由民権論 < jiyuuminkenron\ ;
+共同住宅 < kyoudoujuutaku\ ;
+有袋動物 < yuutaidoubutsu\ ;
+三十二分音符 < sanjuunibuonpu\ ;
+破産裁判所 < hasansaibansho\ ;
+人身保護法 < jinshinhogohou\ ;
+袋小路文 < fukurokoujibun\ ;
+放射性元素 < houshaseigenso\ ;
+白砂青松 < hakushaseishou\ ;
+花嫁御寮 < hanayomegoryou\ ;
+新陳代謝 < shinchintaisha\ ;
+一六銀行 < ichirokuginkou\ ;
+就職斡旋 < shuushokuassen\ ;
+鞭毛虫症 < benmouchuushou\ ;
+絶体絶命 < zettaizetsumei\ ;
+精神分析 < seishinbunseki\ ;
+系列会社 < keiretsugaisha\ ;
+分子間力 < bunshikanryoku\ ;
+企業戦略 < kigyousenryaku\ ;
+国民所得 < kokuminshotoku\ ;
+輸出制限 < yushutsuseigen\ ;
+特定銘柄 < tokuteimeigara\ ;
+財務体質 < zaimutaishitsu\ ;
+警察学校 < keisatsugakkou\ ;
+不法侵入 < fuhoushin''nyuu\ ;
+就職口 < shuushokuguchi\ ;
+生活設計 < seikatsusekkei\ ;
+捕虜収容所 < horyoshuuyoujo\ ;
+軽薄短小 < keihakutanshou\ ;
+算術平均 < sanjutsuheikin\ ;
+即席料理 < sokusekiryouri\ ;
+物理療法 < butsuriryouhou\ ;
+生計費指数 < seikeihishisuu\ ;
+青酸中毒 < seisanchuudoku\ ;
+宗教法人 < shuukyouhoujin\ ;
+写真植字 < shashinshokuji\ ;
+緊縮財政 < kinshukuzaisei\ ;
+単性生殖 < tanseiseishoku\ ;
+国会図書館 < kokkaitoshokan\ ;
+高等生物 < koutouseibutsu\ ;
+高等弁務官 < koutoubenmukan\ ;
+時間順序積 < jikanjunjoseki\ ;
+保証牛乳 < hoshougyuunyuu\ ;
+筋肉質 < kin''nikushitsu\ ;
+力仕事 < chikarashigoto\ ;
+受胎調節 < jutaichousetsu\ ;
+地球温暖化 < chikyuuondanka\ ;
+透析療法 < tousekiryouhou\ ;
+非常勤講師 < hijoukinkoushi\ ;
+嫡出子 < chakushutsushi\ ;
+感覚神経 < kankakushinkei\ ;
+自動車学校 < jidoushagakkou\ ;
+税金避難地 < zeikinhinanchi\ ;
+人道的援助 < jindoutekienjo\ ;
+専門知識 < senmonchishiki\ ;
+軍拡競争 < gunkakukyousou\ ;
+片袖机 < katasodedzukue\ ;
+登場人物 < toujoujinbutsu\ ;
+消費者運動 < shouhishaundou\ ;
+非現実的 < higenjitsuteki\ ;
+逆性石鹸 < gyakuseisekken\ ;
+労働基準法 < roudoukijunhou\ ;
+幽門狭窄 < yuumonkyousaku\ ;
+連邦当局 < renpoutoukyoku\ ;
+直射日光 < chokushanikkou\ ;
+先任将校 < sen''ninshoukou\ ;
+謹厳実直 < kingenjitchoku\ ;
+漢字制限論 < kanjiseigenron\ ;
+店頭取引 < tentoutorihiki\ ;
+卒業式 < sotsugyoushiki\ ;
+発売禁止 < hatsubaikinshi\ ;
+品質管理 < hinshitsukanri\ ;
+編入試験 < hen''nyuushiken\ ;
+伝達関数 < dentatsukansuu\ ;
+尽忠報国 < jinchuuhoukoku\ ;
+労使協調 < roushikyouchou\ ;
+周波数偏移 < shuuhasuuhen''i\ ;
+百色眼鏡 < hyakuiromegane\ ;
+中性子束 < chuuseishisoku\ ;
+無制限貿易 < museigenboueki\ ;
+緊急対策 < kinkyuutaisaku\ ;
+印刷技術 < insatsugijutsu\ ;
+次元正則化 < jigenseisokuka\ ;
+心的表示 < shintekihyouji\ ;
+光通信 < hikaritsuushin\ ;
+名所旧跡 < meishokyuuseki\ ;
+投資信託 < toushishintaku\ ;
+人名用漢字 < jinmeiyoukanji\ ;
+新韓国党 < shinkankokutou\ ;
+国際条約 < kokusaijouyaku\ ;
+七堂伽藍 < shichidougaran\ ;
+親族関係 < shinzokukankei\ ;
+征夷大将軍 < seiitaishougun\ ;
+傘形碍子 < kasagatagaishi\ ;
+産業予備軍 < sangyouyobigun\ ;
+悪漢小説 < akkanshousetsu\ ;
+利子平衡税 < rishiheikouzei\ ;
+無任所大臣 < muninshodaijin\ ;
+公敵一号 < koutekiichigou\ ;
+水質汚濁 < suishitsuodaku\ ;
+精神療法 < seishinryouhou\ ;
+取締法 < torishimarihou\ ;
+茫然自失 < bouzenjishitsu\ ;
+地質時代 < chishitsujidai\ ;
+立入禁止 < tachiirikinshi\ ;
+大同団結 < daidoudanketsu\ ;
+二重盲検法 < nijuumoukenhou\ ;
+貯金通帳 < chokintsuuchou\ ;
+斎戒沐浴 < saikaimokuyoku\ ;
+新制大学 < shinseidaigaku\ ;
+共同責任 < kyoudousekinin\ ;
+新聞発表 < shinbunhappyou\ ;
+車内改札 < shanaikaisatsu\ ;
+自賠責保険 < jibaisekihoken\ ;
+昆虫学者 < konchuugakusha\ ;
+退職年金 < taishokunenkin\ ;
+分割統治 < bunkatsutouchi\ ;
+確率過程 < kakuritsukatei\ ;
+重炭酸曹達 < juutansansouda\ ;
+研究発表 < kenkyuuhappyou\ ;
+旧約聖書 < kyuuyakuseisho\ ;
+手術室 < shujutsushitsu\ ;
+蒲鉾兵舎 < kamabokoheisha\ ;
+経費節約 < keihisetsuyaku\ ;
+筋萎縮症 < kin''ishukushou\ ;
+優生手術 < yuuseishujutsu\ ;
+公共料金 < koukyouryoukin\ ;
+強制中断 < kyouseichuudan\ ;
+万有引力 < ban''yuuinryoku\ ;
+立太子式 < rittaishishiki\ ;
+日内周期 < nichinaishuuki\ ;
+憲法解釈 < kenpoukaishaku\ ;
+長距離電話 < choukyoridenwa\ ;
+美的生活 < bitekiseikatsu\ ;
+団体割引 < dantaiwaribiki\ ;
+国際交流 < kokusaikouryuu\ ;
+試着室 < shichakushitsu\ ;
+冠状静脈 < kanjoujoumyaku\ ;
+逆三角形 < gyakusankakkei\ ;
+複雑怪奇 < fukuzatsukaiki\ ;
+遺伝子工学 < idenshikougaku\ ;
+高層建築 < kousougenchiku\ ;
+不可能選択 < fukanousentaku\ ;
+真珠養殖 < shinjuyoushoku\ ;
+申告用紙 < shinkokuyoushi\ ;
+局地戦争 < kyokuchisensou\ ;
+爆発物 < bakuhatsubutsu\ ;
+重要人物 < juuyoujinbutsu\ ;
+活版印刷 < kappan''insatsu\ ;
+連日連夜 < renjitsuren''ya\ ;
+三者対立 < sanshatairitsu\ ;
+求妻広告 < kyuusaikoukoku\ ;
+狂言自殺 < kyougenjisatsu\ ;
+猪武者 < inoshishimusha\ ;
+性染色体 < seisenshokutai\ ;
+凸版印刷 < toppan''insatsu\ ;
+刺身包丁 < sashimibouchou\ ;
+日米貿易 < nichibeiboueki\ ;
+句構造規則 < kukouzoukisoku\ ;
+手形交換所 < tegatakoukanjo\ ;
+軍事協力 < gunjikyouryoku\ ;
+大黒柱 < daikokubashira\ ;
+極限状態 < kyokugenjoutai\ ;
+物理現象 < butsurigenshou\ ;
+地方自治体 < chihoujichitai\ ;
+人身攻撃 < jinshinkougeki\ ;
+記憶喪失 < kiokusoushitsu\ ;
+不規則動詞 < fukisokudoushi\ ;
+社会秩序 < shakaichitsujo\ ;
+完全主義者 < kanzenshugisha\ ;
+減価償却 < genkashoukyaku\ ;
+鎖帷子 < kusarikatabira\ ;
+空中査察 < kuuchuusasatsu\ ;
+素人芝居 < shiroutoshibai\ ;
+一六勝負 < ichirokushoubu\ ;
+交響楽団 < koukyougakudan\ ;
+血液銀行 < ketsuekiginkou\ ;
+商品在高 < shouhinzaidaka\ ;
+物理学者 < butsurigakusha\ ;
+不躾者 < bushitsukemono\ ;
+年百年中 < nenbyakunenjuu\ ;
+枝葉末節 < shiyoumassetsu\ ;
+軍隊生活 < guntaiseikatsu\ ;
+比較的小 < hikakutekishou\ ;
+構成素構造 < kouseisokouzou\ ;
+潜在能力 < senzainouryoku\ ;
+工学博士 < kougakuhakushi\ ;
+有償契約 < yuushoukeiyaku\ ;
+新聞広告 < shinbunkoukoku\ ;
+上級曹長 < joukyuusouchou\ ;
+乱診乱療 < ranshinranryou\ ;
+載貨吃水線 < saikakissuisen\ ;
+集合住宅 < shuugoujuutaku\ ;
+御食事処 < oshokujidokoro\ ;
+養殖真珠 < youshokushinju\ ;
+内部告発 < naibukokuhatsu\ ;
+名目賃金 < meimokuchingin\ ;
+三色菫 < sanshokusumire\ ;
+相対湿度 < soutaishitsudo\ ;
+学校生活 < gakkouseikatsu\ ;
+入国査証 < nyuukokusashou\ ;
+自律神経 < jiritsushinkei\ ;
+水銀温度計 < suigin''ondokei\ ;
+姉様人形 < anesamaningyou\ ;
+衝撃関数 < shougekikansuu\ ;
+巧言令色 < kougenreishoku\ ;
+変温動物 < hen''ondoubutsu\ ;
+数理論理学 < suurironrigaku\ ;
+原始動物 < genshidoubutsu\ ;
+空間芸術 < kuukangeijutsu\ ;
+皇太子殿下 < koutaishidenka\ ;
+出力線 < shutsuryokusen\ ;
+開店休業 < kaitenkyuugyou\ ;
+娯楽施設 < gorakushisetsu\ ;
+半永久的 < han''eikyuuteki\ ;
+私立 < watakushiritsu\ ;
+戦争未亡人 < sensoumiboujin\ ;
+食糧事情 < shokuryoujijou\ ;
+可逆反応 < kagyakuhan''nou\ ;
+破産管財人 < hasankanzainin\ ;
+特別会員 < tokubetsukaiin\ ;
+死活問題 < shikatsumondai\ ;
+系統神学 < keitoushingaku\ ;
+軟骨魚類 < nankotsugyorui\ ;
+各人各様 < kakujinkakuyou\ ;
+通信事業 < tsuushinjigyou\ ;
+協定世界時 < kyouteisekaiji\ ;
+貿易障壁 < bouekishouheki\ ;
+単一通貨 < tan''itsutsuuka\ ;
+千両役者 < senryouyakusha\ ;
+到着時刻 < touchakujikoku\ ;
+海上保安庁 < kaijouhoanchou\ ;
+概算要求 < gaisan''youkyuu\ ;
+爆発力 < bakuhatsuryoku\ ;
+国民年金 < kokumin''nenkin\ ;
+泥水稼業 < doromizukagyou\ ;
+特異値分解 < tokuichibunkai\ ;
+在日米軍 < zainichibeigun\ ;
+越境入学 < ekkyounyuugaku\ ;
+民営化企業 < min''eikakigyou\ ;
+数理哲学 < suuritetsugaku\ ;
+唯物史観 < yuibutsushikan\ ;
+商業学校 < shougyougakkou\ ;
+左大括弧 < hidaridaikakko\ ;
+民族精神 < minzokuseishin\ ;
+実力行為 < jitsuryokukoui\ ;
+大西洋横断 < taiseiyououdan\ ;
+海綿動物 < kaimendoubutsu\ ;
+米軍兵力 < beigunheiryoku\ ;
+着信局 < chakushinkyoku\ ;
+人工避妊法 < jinkouhininhou\ ;
+就学年齢 < shuugakunenrei\ ;
+鉱物資源 < koubutsushigen\ ;
+軟式野球 < nanshikiyakyuu\ ;
+信託統治 < shintakutouchi\ ;
+経済活動 < keizaikatsudou\ ;
+兵式体操 < heishikitaisou\ ;
+魚群探知機 < gyoguntanchiki\ ;
+生殖細胞 < seishokusaibou\ ;
+地形測量 < chikeisokuryou\ ;
+商業資本 < shougyoushihon\ ;
+遊離基反応 < yuurikihan''nou\ ;
+小田原評定 < odawarahyoujou\ ;
+数値目標 < suuchimokuhyou\ ;
+騒音防止法 < souonboushihou\ ;
+一得一失 < ittokuisshitsu\ ;
+通信販売 < tsuushinhanbai\ ;
+強制執行 < kyouseishikkou\ ;
+幻覚症状 < genkakushoujou\ ;
+懐刀 < futokorogatana\ ;
+疑問代名詞 < gimondaimeishi\ ;
+北陸地方 < hokurikuchihou\ ;
+割引発行 < waribikihakkou\ ;
+広報活動 < kouhoukatsudou\ ;
+山高帽子 < yamatakaboushi\ ;
+染色工場 < senshokukoujou\ ;
+公式訪問 < koushikihoumon\ ;
+排出物 < haishutsubutsu\ ;
+総合開発 < sougoukaihatsu\ ;
+連立政権 < renritsuseiken\ ;
+差別表現 < sabetsuhyougen\ ;
+権力闘争 < kenryokutousou\ ;
+相対性理論 < soutaiseiriron\ ;
+製品戦略 < seihinsenryaku\ ;
+分水山脈 < bunsuisanmyaku\ ;
+酸化防止剤 < sankaboushizai\ ;
+第二次産業 < dainijisangyou\ ;
+鉱物質 < koubutsushitsu\ ;
+有機塩溶媒 < yuukien''youbai\ ;
+誘電正接 < yuudenseisetsu\ ;
+知覚神経 < chikakushinkei\ ;
+逐条審議 < chikujoushingi\ ;
+千島列島 < chishimarettou\ ;
+輸出超過 < yushutsuchouka\ ;
+電子計算機 < denshikeisanki\ ;
+尊王討幕 < son''noutoubaku\ ;
+戦闘犠牲者 < sentougiseisha\ ;
+情報通信 < jouhoutsuushin\ ;
+振出局 < furidashikyoku\ ;
+民間航空機 < minkankoukuuki\ ;
+超越交代 < chouetsukoutai\ ;
+反戦主義者 < hansenshugisha\ ;
+生活空間 < seikatsukuukan\ ;
+前立腺炎 < zenritsusen''en\ ;
+執務室 < shitsumushitsu\ ;
+行政改革 < gyouseikaikaku\ ;
+律令国家 < ritsuryoukokka\ ;
+心霊現象 < shinreigenshou\ ;
+生誕百年 < seitanhyakunen\ ;
+自動着信 < jidouchakushin\ ;
+発熱量 < hatsunetsuryou\ ;
+第三勢力 < daisanseiryoku\ ;
+大八車 < daihachiguruma\ ;
+書留郵便 < kakitomeyuubin\ ;
+観光案内所 < kankouan''naijo\ ;
+知識体系 < chishikitaikei\ ;
+集合記述 < shuugoukijutsu\ ;
+三百諸侯 < sanbyakushokou\ ;
+高齢化社会 < koureikashakai\ ;
+記号論理学 < kigouronrigaku\ ;
+大衆文学 < taishuubungaku\ ;
+中等教育 < chuutoukyouiku\ ;
+教育行政 < kyouikugyousei\ ;
+直接的 < chokusetsuteki\ ;
+武装中立 < busouchuuritsu\ ;
+平和協力 < heiwakyouryoku\ ;
+指名手配人 < shimeitehaijin\ ;
+電鉄会社 < dentetsugaisha\ ;
+自転車旅行 < jitensharyokou\ ;
+出席日数 < shussekinissuu\ ;
+県立病院 < kenritsubyouin\ ;
+平均太陽時 < heikintaiyouji\ ;
+偏旁冠脚 < henboukankyaku\ ;
+好気性細菌 < koukiseisaikin\ ;
+販売促進 < hanbaisokushin\ ;
+信託投資 < shintakutoushi\ ;
+電波望遠鏡 < denpabouenkyou\ ;
+中小企業 < chuushoukigyou\ ;
+三行広告 < sangyoukoukoku\ ;
+血液循環 < ketsuekijunkan\ ;
+連結決算 < renketsukessan\ ;
+θ理論 < shi\ ̄ta\ ̄riron\ ;
+改札鋏 < kaisatsuhasami\ ;
+骨軟化症 < kotsunankashou\ ;
+労働運動者 < roudouundousha\ ;
+政治哲学 < seijitetsugaku\ ;
+商業放送 < shougyouhousou\ ;
+国防総省 < kokubousoushou\ ;
+生活指導 < seikatsushidou\ ;
+炎熱地獄 < en''netsujigoku\ ;
+八面玲瓏 < hachimenreirou\ ;
+面会謝絶 < menkaishazetsu\ ;
+道路標識 < dourohyoushiki\ ;
+国営通信 < kokueitsuushin\ ;
+震災記念日 < shinsaikinenbi\ ;
+適材適所 < tekizaitekisho\ ;
+劇症肝炎 < gekishoukan''en\ ;
+物情騒然 < butsujousouzen\ ;
+忝涙 < katajikenamida\ ;
+公民生活 < kouminseikatsu\ ;
+入学試験 < nyuugakushiken\ ;
+悪徳政治家 < akutokuseijika\ ;
+情報主要素 < jouhoushuyouso\ ;
+合唱隊長 < gasshoutaichou\ ;
+乾燥牛乳 < kansougyuunyuu\ ;
+直系尊属 < chokkeisonzoku\ ;
+入学願書 < nyuugakugansho\ ;
+出発時間 < shuppatsujikan\ ;
+主要人物 < shuyoujinbutsu\ ;
+公武合体論 < koubugattairon\ ;
+不束者 < futsutsukamono\ ;
+燕千鳥 < tsubamechidori\ ;
+文学作品 < bungakusakuhin\ ;
+電光掲示板 < denkoukeijiban\ ;
+軽便鉄道 < keibentetsudou\ ;
+割引市場 < waribikishijou\ ;
+失踪宣告 < shissousenkoku\ ;
+化学結合 < kagakuketsugou\ ;
+保険料率 < hokenryouritsu\ ;
+価電子状態 < kadenshijoutai\ ;
+信越本線 < shinetsuhonsen\ ;
+神経中枢 < shinkeichuusuu\ ;
+発光動物 < hakkoudoubutsu\ ;
+水産加工品 < suisankakouhin\ ;
+平面幾何学 < heimenkikagaku\ ;
+複式火山 < fukushikikazan\ ;
+堅忍不抜 < ken''ninfubatsu\ ;
+耐乏生活 < taibouseikatsu\ ;
+社会通念 < shakaitsuunen\ ;
+接客態度 < sekkyakutaido\ ;
+軽爆撃機 < keibakugekiki\ ;
+南東 < minamihigashi\ ;
+署名捺印 < shomeinatsuin\ ;
+休憩室 < kyuukeishitsu\ ;
+胸部疾患 < kyoubushikkan\ ;
+象牙取引 < zougetorihiki\ ;
+日曜大工 < nichiyoudaiku\ ;
+目玉商品 < medamashouhin\ ;
+製薬会社 < seiyakugaisha\ ;
+投光照明 < toukoushoumei\ ;
+清廉潔白 < seirenkeppaku\ ;
+自転車置場 < jitenshaokiba\ ;
+敵前逃亡 < tekizentoubou\ ;
+日刊新聞 < nikkanshinbun\ ;
+抱腹絶倒 < houfukuzettou\ ;
+日没前 < nichibotsuzen\ ;
+教育委員会 < kyouikuiinkai\ ;
+悪虐無道 < akugyakumudou\ ;
+水上飛行機 < suijouhikouki\ ;
+厭世悲観者 < enseihikansha\ ;
+国家権力 < kokkakenryoku\ ;
+南洋諸島 < nan''youshotou\ ;
+後期印象派 < koukiinshouha\ ;
+囚人労働 < shuujinroudou\ ;
+狐格子 < kitsunegoushi\ ;
+劣等観念 < rettoukan''nen\ ;
+関係官庁 < kankeikanchou\ ;
+農民文学 < nouminbungaku\ ;
+自然現象 < shizengenshou\ ;
+腎臓結石 < jinzoukesseki\ ;
+古兵 < furutsuwamono\ ;
+施政方針 < shiseihoushin\ ;
+閲覧室 < etsuranshitsu\ ;
+天竺浪人 < tenjikurounin\ ;
+建築物 < kenchikubutsu\ ;
+霊魂不滅 < reikonfumetsu\ ;
+公共組合 < koukyoukumiai\ ;
+有線電信 < yuusendenshin\ ;
+血行障害 < kekkoushougai\ ;
+人的資源 < jintekishigen\ ;
+地方行政 < chihougyousei\ ;
+震天動地 < shintendouchi\ ;
+第三帝国 < daisanteikoku\ ;
+大規模戦争 < daikibosensou\ ;
+実質的 < jisshitsuteki\ ;
+天文学者 < tenmongakusha\ ;
+深夜放送 < shin''yahousou\ ;
+音声形式 < onseikeishiki\ ;
+交通問題 < koutsuumondai\ ;
+公共投資 < koukyoutoushi\ ;
+劃時代的 < kakujidaiteki\ ;
+同族会社 < douzokugaisha\ ;
+心理描写 < shinribyousha\ ;
+技術水準 < gijutsusuijun\ ;
+無担保社債 < mutanposhasai\ ;
+理学博士 < rigakuhakushi\ ;
+局所麻酔 < kyokushomasui\ ;
+産別会議 < sanbetsukaigi\ ;
+翌々日 < yokuyokujitsu\ ;
+就学児童 < shuugakujidou\ ;
+空中給油 < kuuchuukyuuyu\ ;
+国際規格 < kokusaikikaku\ ;
+学校新聞 < gakkoushinbun\ ;
+試聴室 < shichoushitsu\ ;
+情報産業 < jouhousangyou\ ;
+登録番号 < tourokubangou\ ;
+土木工学 < dobokukougaku\ ;
+生体反応 < seitaihan''nou\ ;
+狸囃子 < tanukibayashi\ ;
+象徴主義 < shouchoushugi\ ;
+音楽教育 < ongakukyouiku\ ;
+観測地点 < kansokuchiten\ ;
+遠心分離機 < enshinbunriki\ ;
+植毛術 < shokumoujutsu\ ;
+技術同士 < gijutsudoushi\ ;
+応急攻撃 < oukyuukougeki\ ;
+同仁教会 < doujinkyoukai\ ;
+実働時間 < jitsudoujikan\ ;
+青空駐車 < aozorachuusha\ ;
+電力輸送 < denryokuyusou\ ;
+軍隊教育 < guntaikyouiku\ ;
+遠洋漁業 < en''yougyogyou\ ;
+旧正月 < kyuushougatsu\ ;
+保障占領 < hoshousenryou\ ;
+交換法則 < koukanhousoku\ ;
+牽引療法 < ken''inryouhou\ ;
+駅伝競走 < ekidenkyousou\ ;
+切歯扼腕 < sesshiyakuwan\ ;
+丸鼻蜂 < maruhanabachi\ ;
+団体交渉 < dantaikoushou\ ;
+脚色者 < kyakushokusha\ ;
+亭主関白 < teishukanpaku\ ;
+一段動詞 < ichidandoushi\ ;
+一般幕僚 < ippanbakuryou\ ;
+寝台列車 < shindairessha\ ;
+投擲競技 < toutekikyougi\ ;
+東海岸 < higashikaigan\ ;
+気象通報 < kishoutsuuhou\ ;
+開析台地 < kaisekidaichi\ ;
+内踝 < uchikurubushi\ ;
+実用主義 < jitsuyoushugi\ ;
+直立茎 < chokuritsukei\ ;
+白雪姫 < shirayukihime\ ;
+工場実習 < koujoujisshuu\ ;
+中継貿易 < chuukeiboueki\ ;
+性能特性 < seinoutokusei\ ;
+電気冷蔵庫 < denkireizouko\ ;
+最後通牒 < saigotsuuchou\ ;
+最低温度計 < saiteiondokei\ ;
+国際結婚 < kokusaikekkon\ ;
+造本技術 < zouhongijutsu\ ;
+妨害工作 < bougaikousaku\ ;
+断熱的 < dan''netsuteki\ ;
+民族意識 < minzokuishiki\ ;
+泥縄式 < doronawashiki\ ;
+贅沢三昧 < zeitakuzanmai\ ;
+写真製版 < shashinseihan\ ;
+観閲式 < kan''etsushiki\ ;
+学校教育 < gakkoukyouiku\ ;
+霧中信号 < muchuushingou\ ;
+精神状態 < seishinjoutai\ ;
+商科大学 < shoukadaigaku\ ;
+吸湿性 < kyuushitsusei\ ;
+消極的 < shoukyokuteki\ ;
+顧問弁護士 < komonbengoshi\ ;
+写真結婚 < shashinkekkon\ ;
+共同戦線 < kyoudousensen\ ;
+火山活動 < kazankatsudou\ ;
+麦稈細工 < mugiwarazaiku\ ;
+我利我利亡者 < garigarimouja\ ;
+勤労所得 < kinroushotoku\ ;
+首相官邸 < shushoukantei\ ;
+読書三昧 < dokushozanmai\ ;
+中等教員 < chuutoukyouin\ ;
+一次電流 < ichijidenryuu\ ;
+台中関係 < taichuukankei\ ;
+秘密結社 < himitsukessha\ ;
+東方拡大 < touhoukakudai\ ;
+漂流物 < hyouryuubutsu\ ;
+近隣諸国 < kinrinshokoku\ ;
+労働階級 < roudoukaikyuu\ ;
+貞操観念 < teisoukan''nen\ ;
+民間伝承 < minkandenshou\ ;
+膀胱結石 < boukoukesseki\ ;
+転居通知 < tenkyotsuuchi\ ;
+純正数学 < junseisuugaku\ ;
+男爵夫人 < danshakufujin\ ;
+下二桁 < shimofutaketa\ ;
+二硫化炭素 < niryuukatanso\ ;
+塩蔵食品 < enzoushokuhin\ ;
+一致団結 < itchidanketsu\ ;
+警察国家 < keisatsukokka\ ;
+経済白書 < keizaihakusho\ ;
+穀倉地帯 < kokusouchitai\ ;
+憂鬱質 < yuuutsushitsu\ ;
+早期警戒機 < soukikeikaiki\ ;
+環境事業 < kankyoujigyou\ ;
+総合商社 < sougoushousha\ ;
+俄成金 < niwakanarikin\ ;
+少年労働 < shounenroudou\ ;
+一挙両得 < ikkyoryoutoku\ ;
+測定装置 < sokuteisouchi\ ;
+前衛美術 < zen''eibijutsu\ ;
+構造遺伝子 < kouzouidenshi\ ;
+皆既月食 < kaikigesshoku\ ;
+公団住宅 < koudanjuutaku\ ;
+設備投資 < setsubitoushi\ ;
+日常茶飯 < nichijousahan\ ;
+群集心理 < gunshuushinri\ ;
+百戦練磨 < hyakusenrenma\ ;
+即興詩人 < sokkyoushijin\ ;
+善隣政策 < zenrinseisaku\ ;
+前受収益 < maeukeshuueki\ ;
+青銅器時代 < seidoukijidai\ ;
+国民皆兵 < kokuminkaihei\ ;
+骨相学者 < kossougakusha\ ;
+戸別訪問 < kobetsuhoumon\ ;
+爆弾声明 < bakudanseimei\ ;
+道楽息子 < dourakumusuko\ ;
+舌鼓 < shitatsudzumi\ ;
+収穫物 < shuukakubutsu\ ;
+貸付金 < kashitsukekin\ ;
+癒傷組織 < yushousoshiki\ ;
+男子学生 < danshigakusei\ ;
+動物達 < doubutsutachi\ ;
+貫通銃創 < kantsuujuusou\ ;
+食糧庁 < shokuryouchou\ ;
+会計検査院 < kaikeikensain\ ;
+新郎新婦 < shinroushinpu\ ;
+空挺作戦 < kuuteisakusen\ ;
+配管工業 < haikankougyou\ ;
+宇宙通信 < uchuutsuushin\ ;
+腺病質 < senbyoushitsu\ ;
+等比数列 < touhisuuretsu\ ;
+床上浸水 < yukaueshinsui\ ;
+自然環境 < shizenkankyou\ ;
+日中戦争 < nitchuusensou\ ;
+民約説 < min''yakusetsu\ ;
+吸湿剤 < kyuushitsuzai\ ;
+二筋道 < futasujimichi\ ;
+半長靴 < han''nagagutsu\ ;
+標題音楽 < hyoudaiongaku\ ;
+校長室 < kouchoushitsu\ ;
+劣等複合 < rettoufukugou\ ;
+眼球銀行 < gankyuuginkou\ ;
+決断力 < ketsudanryoku\ ;
+市場分析 < shijoubunseki\ ;
+中間試験 < chuukanshiken\ ;
+証券会社 < shoukengaisha\ ;
+漏話結合 < rouwagetsugou\ ;
+国際紛争 < kokusaifunsou\ ;
+集団行動 < shuudankoudou\ ;
+車両縦隊 < sharyoujuutai\ ;
+交代操業 < koutaisougyou\ ;
+作者未詳 < sakushamishou\ ;
+西本願寺 < nishihonganji\ ;
+永代借地 < eitaishakuchi\ ;
+差出人 < sashidashinin\ ;
+七曜表 < shichiyouhyou\ ;
+子宮筋腫 < shikyuukinshu\ ;
+切手蒐集 < kitteshuushuu\ ;
+首位攻防戦 < shuikoubousen\ ;
+全方位外交 < zenhouigaikou\ ;
+官費留学 < kanpiryuugaku\ ;
+編集主幹 < henshuushukan\ ;
+生産技術 < seisangijutsu\ ;
+水平応力 < suiheiouryoku\ ;
+先端技術 < sentangijutsu\ ;
+神宮球場 < jinguukyuujou\ ;
+灰緑色 < kairyokushoku\ ;
+本質的 < honshitsuteki\ ;
+無人化工場 < mujinkakoujou\ ;
+音楽大学 < ongakudaigaku\ ;
+侵略行為 < shinryakukoui\ ;
+入射光線 < nyuushakousen\ ;
+三角函数 < sankakukansuu\ ;
+立体写真 < rittaishashin\ ;
+国際関係 < kokusaikankei\ ;
+浄土真宗 < joudoshinshuu\ ;
+三国同盟 < sangokudoumei\ ;
+火事場泥棒 < kajibadorobou\ ;
+驚天動地 < kyoutendouchi\ ;
+空中滑走 < kuuchuukassou\ ;
+国際問題 < kokusaimondai\ ;
+求心力 < kyuushinryoku\ ;
+社外発信 < shagaihasshin\ ;
+跳梁跋扈 < chouryoubakko\ ;
+集中砲火 < shuuchuuhouka\ ;
+人工栄養児 < jinkoueiyouji\ ;
+人間工学 < ningenkougaku\ ;
+身元確認 < mimotokakunin\ ;
+結団式 < ketsudanshiki\ ;
+差別待遇 < sabetsutaiguu\ ;
+千鳥格子 < chidorigoushi\ ;
+仏像二体 < butsuzounitai\ ;
+全景写真 < zenkeishashin\ ;
+公共団体 < koukyoudantai\ ;
+改札口 < kaisatsuguchi\ ;
+堆積輪廻 < taisekirin''ne\ ;
+一般生活 < ippanseikatsu\ ;
+欧米諸言語 < oubeishogengo\ ;
+横河電機 < yokogawadenki\ ;
+中継放送 < chuukeihousou\ ;
+禁止条約 < kinshijouyaku\ ;
+全国放送 < zenkokuhousou\ ;
+人工孵化法 < jinkoufukahou\ ;
+党利党略 < touritouryaku\ ;
+繁殖力 < hanshokuryoku\ ;
+外交交渉 < gaikoukoushou\ ;
+学士院賞 < gakushiinshou\ ;
+行動計画 < koudoukeikaku\ ;
+共有財産 < kyouyuuzaisan\ ;
+逸失利益 < isshitsurieki\ ;
+農地改革 < nouchikaikaku\ ;
+囃子詞 < hayashikotoba\ ;
+交通渋滞 < koutsuujuutai\ ;
+神経細胞 < shinkeisaibou\ ;
+人差指 < hitosashiyubi\ ;
+七面鳥 < shichimenchou\ ;
+業界団体 < gyoukaidantai\ ;
+勧善懲悪 < kanzenchouaku\ ;
+共産陣営 < kyousanjin''ei\ ;
+欠席裁判 < kessekisaiban\ ;
+半革装丁 < hankawasoutei\ ;
+競争市場 < kyousoushijou\ ;
+発言力 < hatsugenryoku\ ;
+知的財産 < chitekizaisan\ ;
+南北問題 < nanbokumondai\ ;
+軍事顧問団 < gunjikomondan\ ;
+高層天気図 < kousoutenkizu\ ;
+突然変異 < totsuzenhen''i\ ;
+適応障害 < tekioushougai\ ;
+出世頭 < shussegashira\ ;
+混載貨物 < konsaikamotsu\ ;
+集中力 < shuuchuuryoku\ ;
+耐障害性 < taishougaisei\ ;
+近親相姦 < kinshinsoukan\ ;
+屈辱的 < kutsujokuteki\ ;
+大道商人 < daidoushounin\ ;
+不信任案 < fushin''nin''an\ ;
+仮面舞踏会 < kamenbutoukai\ ;
+宮廷音楽 < kyuuteiongaku\ ;
+商売敵 < shoubaigataki\ ;
+出生届 < shusseitodoke\ ;
+緩衝地帯 < kanshouchitai\ ;
+血清注射 < kesseichuusha\ ;
+脱獄囚 < datsugokushuu\ ;
+加糖粉乳 < katoufun''nyuu\ ;
+土産話 < miyagebanashi\ ;
+信販会社 < shinpangaisha\ ;
+十一献金 < juuichikenkin\ ;
+福祉事業 < fukushijigyou\ ;
+暖衣飽食 < dan''ihoushoku\ ;
+準決勝戦 < junkesshousen\ ;
+野生動物 < yaseidoubutsu\ ;
+社会現象 < shakaigenshou\ ;
+北欧諸国 < hokuoushokoku\ ;
+自然休会 < shizenkyuukai\ ;
+良二千石 < ryounisenseki\ ;
+文学青年 < bungakuseinen\ ;
+白装束 < shiroshouzoku\ ;
+作業部会案 < sagyoubukaian\ ;
+修道誓願 < shuudouseigan\ ;
+食糧援助 < shokuryouenjo\ ;
+衆議一決 < shuugiikketsu\ ;
+酸素吸入 < sansokyuunyuu\ ;
+生臭坊主 < namagusabouzu\ ;
+軍事施設 < gunjishisetsu\ ;
+映画評論家 < eigahyouronka\ ;
+郵便振替 < yuubinfurikae\ ;
+方針決定 < houshinkettei\ ;
+就業時間 < shuugyoujikan\ ;
+人口抑制 < jinkouyokusei\ ;
+軍人恩給 < gunjin''onkyuu\ ;
+人工流産 < jinkouryuuzan\ ;
+真剣勝負 < shinkenshoubu\ ;
+隠退生活 < intaiseikatsu\ ;
+守秘義務違反 < shuhigimuihan\ ;
+腰巾着 < koshiginchaku\ ;
+役員報酬 < yakuinhoushuu\ ;
+割引時間 < waribikijikan\ ;
+白葡萄酒 < shirobudoushu\ ;
+半熟卵 < hanjukutamago\ ;
+制服制帽 < seifukuseibou\ ;
+古色蒼然 < koshokusouzen\ ;
+留置郵便 < tomeokiyuubin\ ;
+計画倒産 < keikakutousan\ ;
+皆既日食 < kaikinisshoku\ ;
+没常識 < botsujoushiki\ ;
+集塵袋 < shuujinbukuro\ ;
+連戦連勝 < rensenrenshou\ ;
+享楽主義 < kyourakushugi\ ;
+三下奴 < sanshitayakko\ ;
+広告媒体 < koukokubaitai\ ;
+国民審査 < kokuminshinsa\ ;
+健者 < shitatakamono\ ;
+混声合唱 < konseigasshou\ ;
+神道信者 < shintoushinja\ ;
+実況放送 < jikkyouhousou\ ;
+分光分析 < bunkoubunseki\ ;
+産業組合 < sangyoukumiai\ ;
+取捨選択 < shushasentaku\ ;
+地震学者 < jishingakusha\ ;
+大阪大学 < oosakadaigaku\ ;
+第二次大戦 < dainijitaisen\ ;
+研究方法 < kenkyuuhouhou\ ;
+地質学 < chishitsugaku\ ;
+断郊競走 < dankoukyousou\ ;
+楽屋話 < gakuyabanashi\ ;
+比較文学 < hikakubungaku\ ;
+士農工商 < shinoukoushou\ ;
+乾坤一擲 < kenkon''itteki\ ;
+停止信号 < teishishingou\ ;
+建築現場 < kenchikugenba\ ;
+国連大使 < kokurentaishi\ ;
+眉目秀麗 < bimokushuurei\ ;
+情緒障害 < joushoshougai\ ;
+謹賀新年 < kingashin''nen\ ;
+練習問題 < renshuumondai\ ;
+人畜無害 < jinchikumugai\ ;
+上流社会 < jouryuushakai\ ;
+強奪物 < goudatsubutsu\ ;
+閑日月 < kanjitsugetsu\ ;
+陸海空軍 < rikukaikuugun\ ;
+野次馬根性 < yajiumakonjou\ ;
+真相調査 < shinsouchousa\ ;
+表敬訪問 < hyoukeihoumon\ ;
+普通教育 < futsuukyouiku\ ;
+公民教育 < kouminkyouiku\ ;
+挑発的 < chouhatsuteki\ ;
+水害対策 < suigaitaisaku\ ;
+将来展望 < shouraitenbou\ ;
+尋問調書 < jinmonchousho\ ;
+着弾距離 < chakudankyori\ ;
+天真爛漫 < tenshinranman\ ;
+反射神経 < hanshashinkei\ ;
+青色申告 < aoiroshinkoku\ ;
+造形美術 < zoukeibijutsu\ ;
+史的現在 < shitekigenzai\ ;
+祝祭日 < shukusaijitsu\ ;
+内部生活 < naibuseikatsu\ ;
+構造記述 < kouzoukijutsu\ ;
+共存共栄 < kyouzonkyouei\ ;
+帯状疱疹 < taijouhoushin\ ;
+現実主義 < genjitsushugi\ ;
+年々歳々 < nen''nensaisai\ ;
+研究論文 < kenkyuuronbun\ ;
+最終編成 < saishuuhensei\ ;
+専修学校 < senshuugakkou\ ;
+彫刻術 < choukokujutsu\ ;
+右中括弧 < migichuukakko\ ;
+修道院長 < shuudouinchou\ ;
+家督相続 < katokusouzoku\ ;
+宿命論者 < shukumeironja\ ;
+温度調節 < ondochousetsu\ ;
+英会話学校 < eikaiwagakkou\ ;
+言語能力 < gengonouryoku\ ;
+利潤追求 < rijuntsuikyuu\ ;
+統率理論 < tousotsuriron\ ;
+中立国 < chuuritsukoku\ ;
+喫煙室 < kitsuenshitsu\ ;
+良風美俗 < ryoufuubizoku\ ;
+国民学校 < kokumingakkou\ ;
+単為生殖 < tan''iseishoku\ ;
+前方不注意 < zenpoufuchuui\ ;
+二十日鼠 < hatsukanezumi\ ;
+貿易収支 < bouekishuushi\ ;
+人工心臓 < jinkoushinzou\ ;
+天津日嗣 < amatsuhitsugi\ ;
+一両日 < ichiryoujitsu\ ;
+群雄割拠 < gun''yuukakkyo\ ;
+先天梅毒 < sentenbaidoku\ ;
+人工心肺 < jinkoushinbai\ ;
+呼吸中枢 < kokyuuchuusuu\ ;
+駐留部隊 < chuuryuubutai\ ;
+殺生禁断 < sesshoukindan\ ;
+無銭遊興 < musen''yuukyou\ ;
+主席全権 < shusekizenken\ ;
+地方公務員 < chihoukoumuin\ ;
+甲乙丙丁 < kouotsuheitei\ ;
+補欠選挙 < hoketsusenkyo\ ;
+橋脚舟 < kyoukyakushuu\ ;
+微量分析 < biryoubunseki\ ;
+自動販売機 < jidouhanbaiki\ ;
+地域代表 < chiikidaihyou\ ;
+画一主義 < kakuitsushugi\ ;
+京都大学 < kyoutodaigaku\ ;
+漬物石 < tsukemonoishi\ ;
+外出中 < gaishutsuchuu\ ;
+鉄染色 < tetsusenshoku\ ;
+生体工学 < seitaikougaku\ ;
+独立心 < dokuritsushin\ ;
+泡沫候補 < houmatsukouho\ ;
+相続財産 < souzokuzaisan\ ;
+対戦成績 < taisenseiseki\ ;
+国際空港 < kokusaikuukou\ ;
+国連総会 < kokurensoukai\ ;
+今月末 < kongetsumatsu\ ;
+専門教育 < senmonkyouiku\ ;
+営業報告 < eigyouhoukoku\ ;
+血液検査 < ketsuekikensa\ ;
+革新主義 < kakushinshugi\ ;
+露出時間 < roshutsujikan\ ;
+電磁調理器 < denjichouriki\ ;
+投票用紙 < touhyouyoushi\ ;
+実物大 < jitsubutsudai\ ;
+薬用石鹸 < yakuyousekken\ ;
+単独行動 < tandokukoudou\ ;
+航空自衛隊 < koukuujieitai\ ;
+夫婦生活 < fuufuseikatsu\ ;
+肉体関係 < nikutaikankei\ ;
+軍事警察 < gunjikeisatsu\ ;
+新婚旅行 < shinkonryokou\ ;
+陽性反応 < youseihan''nou\ ;
+軸差応力 < jikusaouryoku\ ;
+人類学者 < jinruigakusha\ ;
+拾得物 < shuutokubutsu\ ;
+武士気質 < bushikishitsu\ ;
+第一人者 < daiichininsha\ ;
+倉敷料 < kurashikiryou\ ;
+資料室 < shiryoushitsu\ ;
+機関投資家 < kikantoushika\ ;
+家庭生活 < kateiseikatsu\ ;
+危険人物 < kikenjinbutsu\ ;
+大学教授 < daigakukyouju\ ;
+前進運動 < zenshin''undou\ ;
+活動成果 < katsudouseika\ ;
+総合収支 < sougoushuushi\ ;
+買物袋 < kaimonobukuro\ ;
+吸収力 < kyuushuuryoku\ ;
+各駅停車 < kakuekiteisha\ ;
+独立国 < dokuritsukoku\ ;
+触媒作用 < shokubaisayou\ ;
+科学技術 < kagakugijutsu\ ;
+印刷用紙 < insatsuyoushi\ ;
+回路遮断機 < kairoshadanki\ ;
+人的証拠 < jintekishouko\ ;
+抗議活動 < kougikatsudou\ ;
+先取得点 < senshutokuten\ ;
+桜祭 < sakuramatsuri\ ;
+複合企業 < fukugoukigyou\ ;
+無差別級 < musabetsukyuu\ ;
+多国籍軍 < takokusekigun\ ;
+競争価格 < kyousoukakaku\ ;
+社会人枠 < shakaijinwaku\ ;
+商業地区 < shougyouchiku\ ;
+表層構造 < hyousoukouzou\ ;
+精神衛生 < seishin''eisei\ ;
+血尿症 < ketsunyoushou\ ;
+航空写真 < koukuushashin\ ;
+上昇気流 < joushoukiryuu\ ;
+北大西洋 < kitataiseiyou\ ;
+行政指導 < gyouseishidou\ ;
+定置漁業 < teichigyogyou\ ;
+最高級品 < saikoukyuuhin\ ;
+彫刻物 < choukokubutsu\ ;
+出頭命令 < shuttoumeirei\ ;
+堪忍袋 < kan''ninbukuro\ ;
+出血過多 < shukketsukata\ ;
+電子出版 < denshishuppan\ ;
+社長室 < shachoushitsu\ ;
+色素細胞 < shikisosaibou\ ;
+聖路加病院 < seirokabyouin\ ;
+花嫁衣裳 < hanayomeishou\ ;
+小口現金 < koguchigenkin\ ;
+分離主義者 < bunrishugisha\ ;
+博学多才 < hakugakutasai\ ;
+外様大名 < tozamadaimyou\ ;
+国民主権 < kokuminshuken\ ;
+公金横領 < koukin''ouryou\ ;
+憲法記念日 < kenpoukinenbi\ ;
+近郊農業 < kinkounougyou\ ;
+全国大会 < zenkokutaikai\ ;
+吟遊詩人 < gin''yuushijin\ ;
+冷水摩擦 < reisuimasatsu\ ;
+曲学阿世 < kyokugakuasei\ ;
+価格競争 < kakakukyousou\ ;
+加減抵抗器 < kagenteikouki\ ;
+禁断症状 < kindanshoujou\ ;
+竜攘虎搏 < ryuujoukohaku\ ;
+正味重量 < shoumijuuryou\ ;
+公証役場 < koushouyakuba\ ;
+清涼飲料 < seiryouinryou\ ;
+丼勘定 < donburikanjou\ ;
+毛管現象 < moukangenshou\ ;
+作戦地域 < sakusenchiiki\ ;
+玉子丼 < tamagodonburi\ ;
+出張旅費 < shutchouryohi\ ;
+放送番組 < housoubangumi\ ;
+無免許運転 < mumenkyounten\ ;
+縮刷版 < shukusatsuban\ ;
+永久磁石 < eikyuujishaku\ ;
+売掛勘定 < urikakekanjou\ ;
+今日的 < kon''nichiteki\ ;
+間宮海峡 < mamiyakaikyou\ ;
+獄中日記 < gokuchuunikki\ ;
+沈思黙考 < chinshimokkou\ ;
+超国家的 < choukokkateki\ ;
+洞察力 < dousatsuryoku\ ;
+防火建築 < boukakenchiku\ ;
+金融市場 < kin''yuushijou\ ;
+集団心理 < shuudanshinri\ ;
+入社試験 < nyuushashiken\ ;
+選択値群 < sentakuchigun\ ;
+不可視光線 < fukashikousen\ ;
+確率誤差 < kakuritsugosa\ ;
+貿易自由化 < bouekijiyuuka\ ;
+第四階級 < daiyonkaikyuu\ ;
+空気制動機 < kuukiseidouki\ ;
+逍遥学派 < shouyougakuha\ ;
+黒点周期 < kokutenshuuki\ ;
+美術学校 < bijutsugakkou\ ;
+半死半生 < hanshihanshou\ ;
+快速電車 < kaisokudensha\ ;
+南北戦争 < nanbokusensou\ ;
+小児喘息 < shounizensoku\ ;
+内政干渉 < naiseikanshou\ ;
+公平政策 < kouheiseisaku\ ;
+工業規格 < kougyoukikaku\ ;
+四角四面 < shikakushimen\ ;
+少年少女 < shounenshoujo\ ;
+再販業者 < saihangyousha\ ;
+超高速度 < choukousokudo\ ;
+調査報告 < chousahoukoku\ ;
+海難審判 < kainanshinpan\ ;
+理学修士 < rigakushuushi\ ;
+外的根拠 < gaitekikonkyo\ ;
+松食虫 < matsukuimushi\ ;
+生命工学 < seimeikougaku\ ;
+天佑神助 < ten''yuushinjo\ ;
+外国旅行 < gaikokuryokou\ ;
+共同水栓 < kyoudousuisen\ ;
+拡大均衡 < kakudaikinkou\ ;
+芋蔓式 < imodzurushiki\ ;
+五十歩百歩 < gojuppohyappo\ ;
+質量数 < shitsuryousuu\ ;
+凱旋将軍 < gaisenshougun\ ;
+原理主義者 < genrishugisha\ ;
+集積回路 < shuusekikairo\ ;
+裾野産業 < susonosangyou\ ;
+鎮魂帰神 < chinkonkishin\ ;
+合格者名 < goukakushamei\ ;
+有資格者 < yuushikakusha\ ;
+化学反応 < kagakuhan''nou\ ;
+需要供給 < juyoukyoukyuu\ ;
+別配達 < betsuhaitatsu\ ;
+召喚令状 < shoukanreijou\ ;
+試験勉強 < shikenbenkyou\ ;
+温室効果 < onshitsukouka\ ;
+今日様 < kon''nichisama\ ;
+有鉤条虫 < yuukoujouchuu\ ;
+内的根拠 < naitekikonkyo\ ;
+近海漁業 < kinkaigyogyou\ ;
+冠大会 < kanmuritaikai\ ;
+決戦投票 < kessentouhyou\ ;
+共同社会 < kyoudoushakai\ ;
+追複曲 < tsuifukukyoku\ ;
+唐草模様 < karakusamoyou\ ;
+包皮切断 < houhisetsudan\ ;
+定期取引 < teikitorihiki\ ;
+乾燥洗濯 < kansousentaku\ ;
+集合名詞 < shuugoumeishi\ ;
+小型新聞 < kogatashinbun\ ;
+多元文化論 < tagenbunkaron\ ;
+譲渡性預金 < joutoseiyokin\ ;
+医療施設 < iryoushisetsu\ ;
+動物油脂 < doubutsuyushi\ ;
+反面教師 < hanmenkyoushi\ ;
+組合頭 < kumiaigashira\ ;
+日常会話 < nichijoukaiwa\ ;
+輸入業者 < yunyuugyousha\ ;
+標準価格 < hyoujunkakaku\ ;
+不妊手術 < funinshujutsu\ ;
+山猫争議 < yamanekosougi\ ;
+出世間的 < shussekenteki\ ;
+年中行事 < nenchuugyouji\ ;
+鎌倉時代 < kamakurajidai\ ;
+散歩旁 < sanpokatagata\ ;
+供託物 < kyoutakubutsu\ ;
+炎症病巣 < enshoubyousou\ ;
+注意人物 < chuuijinbutsu\ ;
+国家主義者 < kokkashugisha\ ;
+日洪親善 < nikkoushinzen\ ;
+追加注文 < tsuikachuumon\ ;
+筆写略字 < hissharyakuji\ ;
+献血運動 < kenketsuundou\ ;
+舞台芸術 < butaigeijutsu\ ;
+出願人 < shutsugan''nin\ ;
+試験監督 < shikenkantoku\ ;
+撤頭徹尾 < tettoutetsubi\ ;
+疾風迅雷 < shippuujinrai\ ;
+市場環境 < shijoukankyou\ ;
+原成岩石 < genseiganseki\ ;
+前大統領 < zendaitouryou\ ;
+強制送還 < kyouseisoukan\ ;
+同業組合 < dougyoukumiai\ ;
+電気剃刀 < denkikamisori\ ;
+事務局長 < jimukyokuchou\ ;
+経済改革 < keizaikaikaku\ ;
+沿岸警備隊 < engankeibitai\ ;
+民俗芸能 < minzokugeinou\ ;
+粘着力 < nenchakuryoku\ ;
+個人主義者 < kojinshugisha\ ;
+収穫予想 < shuukakuyosou\ ;
+塩辛蜻蛉 < shiokaratonbo\ ;
+宿泊料 < shukuhakuryou\ ;
+紆余曲折 < uyokyokusetsu\ ;
+極超短波 < gokuchoutanpa\ ;
+乳窄 < chichishibori\ ;
+主権侵犯 < shukenshinpan\ ;
+中性洗剤 < chuuseisenzai\ ;
+貨物列車 < kamotsuressha\ ;
+血清療法 < kesseiryouhou\ ;
+新案特許 < shin''antokkyo\ ;
+是是非非主義 < zezehihishugi\ ;
+死後硬直 < shigokouchoku\ ;
+唯物主義 < yuibutsushugi\ ;
+日露戦争 < nichirosensou\ ;
+同盟条約 < doumeijouyaku\ ;
+一攫千金 < ikkakkusenkin\ ;
+階級闘争 < kaikyuutousou\ ;
+熱硬化剤 < netsukoukazai\ ;
+専用回線 < sen''youkaisen\ ;
+交換学生 < koukangakusei\ ;
+動線計画 < dousenkeikaku\ ;
+外交委員長 < gaikouiinchou\ ;
+民政長官 < minseichoukan\ ;
+判断中止 < handanchuushi\ ;
+枝垂桜 < shidarezakura\ ;
+古代紫 < kodaimurasaki\ ;
+局所分岐 < kyokushobunki\ ;
+通常国会 < tsuujoukokkai\ ;
+枝垂柳 < shidareyanagi\ ;
+深緑色 < fukamidoriiro\ ;
+数値解析 < suuchikaiseki\ ;
+無抵抗主義 < muteikoushugi\ ;
+軍備拡張 < gunbikakuchou\ ;
+適者生存 < tekishaseizon\ ;
+精神鑑定 < seishinkantei\ ;
+積雪量 < sekisetsuryou\ ;
+鉄道輸送 < tetsudouyusou\ ;
+研究室 < kenkyuushitsu\ ;
+第三階級 < daisankaikyuu\ ;
+千態万様 < sentaiban''you\ ;
+電子工学 < denshikougaku\ ;
+経済状況 < keizaijoukyou\ ;
+社会教育 < shakaikyouiku\ ;
+農耕民族 < noukouminzoku\ ;
+全身全霊 < zenshinzenrei\ ;
+公称資本 < koushoushihon\ ;
+大字片山 < ooazakatayama\ ;
+薬師如来 < yakushinyorai\ ;
+放射能汚染 < houshanouosen\ ;
+電気自動車 < denkijidousha\ ;
+賢所 < kashikodokoro\ ;
+同盟休校 < doumeikyuukou\ ;
+工作室 < kousakushitsu\ ;
+中央計画 < chuuoukeikaku\ ;
+中央集権 < chuuoushuuken\ ;
+三角貿易 < sankakuboueki\ ;
+分析化学 < bunsekikagaku\ ;
+少壮士官 < shousoushikan\ ;
+法的根拠 < houtekikonkyo\ ;
+殺害事件 < satsugaijiken\ ;
+面魂 < tsuradamashii\ ;
+自然増収 < shizenzoushuu\ ;
+良性腫瘍 < ryouseishuyou\ ;
+作劇術 < sakugekijutsu\ ;
+短日月 < tanjitsugetsu\ ;
+車掌室 < shashoushitsu\ ;
+通勤電車 < tsuukindensha\ ;
+少年犯罪 < shounenhanzai\ ;
+水酸化物 < suisankabutsu\ ;
+親戚知己 < shinsekichiki\ ;
+単独決算 < tandokukessan\ ;
+国際情勢 < kokusaijousei\ ;
+街頭演説 < gaitouenzetsu\ ;
+欣喜雀躍 < kinkijakuyaku\ ;
+品種改良 < hinshukairyou\ ;
+公称馬力 < koushoubariki\ ;
+四六時中 < shirokujichuu\ ;
+交通遮断 < koutsuushadan\ ;
+大学紛争 < daigakufunsou\ ;
+財政収支 < zaiseishuushi\ ;
+衆参両院 < shuusanryouin\ ;
+耐火建築 < taikakenchiku\ ;
+視力検査 < shiryokukensa\ ;
+小刀細工 < kogatanazaiku\ ;
+質疑応答 < shitsugioutou\ ;
+捜査当局 < sousatoukyoku\ ;
+診察料 < shinsatsuryou\ ;
+俸給袋 < houkyuubukuro\ ;
+照葉狂言 < terihakyougen\ ;
+出征軍人 < shusseigunjin\ ;
+優生保護法 < yuuseihogohou\ ;
+消失点 < shoushitsuten\ ;
+放射能雲 < houshanougumo\ ;
+社会政策 < shakaiseisaku\ ;
+電極電位 < denkyokuden''i\ ;
+人工透析 < jinkoutouseki\ ;
+複合媒体 < fukugoubaitai\ ;
+住民投票 < juumintouhyou\ ;
+工業地帯 < kougyouchitai\ ;
+呼吸困難 < kokyuukon''nan\ ;
+読書室 < dokushoshitsu\ ;
+養護施設 < yougoshisetsu\ ;
+輸出規制 < yushutsukisei\ ;
+地方事務所 < chihoujimusho\ ;
+戦力組成 < senryokusosei\ ;
+統一見解 < touitsukenkai\ ;
+催眠療法 < saiminryouhou\ ;
+工業製品 < kougyouseihin\ ;
+役人根性 < yakuninkonjou\ ;
+独房監禁 < dokuboukankin\ ;
+宿泊先 < shukuhakusaki\ ;
+導通抵抗 < doutsuuteikou\ ;
+協調主義 < kyouchoushugi\ ;
+会計報告 < kaikeihoukoku\ ;
+台湾海峡 < taiwankaikyou\ ;
+日清戦争 < nisshinsensou\ ;
+宣言発表 < sengenhappyou\ ;
+天体写真 < tentaishashin\ ;
+輸入自由化 < yunyuujiyuuka\ ;
+重量噸数 < juuryoutonsuu\ ;
+識別子 < shikibetsushi\ ;
+南半球 < minamihankyuu\ ;
+明鏡止水 < meikyoushisui\ ;
+年間計画 < nenkankeikaku\ ;
+無利息債務 < murisokusaimu\ ;
+口述筆記 < koujutsuhikki\ ;
+国際通貨 < kokusaitsuuka\ ;
+職員室 < shokuinshitsu\ ;
+硫黄酸化物 < iousankabutsu\ ;
+健康診断 < kenkoushindan\ ;
+桃山時代 < momoyamajidai\ ;
+職場結婚 < shokubakekkon\ ;
+環境問題 < kankyoumondai\ ;
+証人喚問 < shouninkanmon\ ;
+信玄袋 < shingenbukuro\ ;
+攻撃方向 < kougekihoukou\ ;
+競争売買 < kyousoubaibai\ ;
+著作権法 < chosakukenhou\ ;
+国際社会 < kokusaishakai\ ;
+新制高校 < shinseikoukou\ ;
+寄生虫症 < kiseichuushou\ ;
+中折帽子 < nakaoreboushi\ ;
+公開練習 < koukairenshuu\ ;
+経済政策 < keizaiseisaku\ ;
+合成写真 < gouseishashin\ ;
+新進作家 < shinshinsakka\ ;
+恋物語 < koimonogatari\ ;
+酸素供給 < sansokyoukyuu\ ;
+交通公社 < koutsuukousha\ ;
+活殺自在 < kassatsujizai\ ;
+電送写真 < densoushashin\ ;
+全知全能 < zenchizen''nou\ ;
+一粒種 < hitotsubudane\ ;
+国勢調査 < kokuseichousa\ ;
+流通機構 < ryuutsuukikou\ ;
+兵器輸出 < heikiyushutsu\ ;
+天皇崇拝 < ten''nousuuhai\ ;
+保証人要 < hoshounin''you\ ;
+浮遊生物 < fuyuuseibutsu\ ;
+終身保険 < shuushinhoken\ ;
+緑柱石 < ryokuchuuseki\ ;
+懸賞論文 < kenshouronbun\ ;
+道路掃除人 < dourosoujijin\ ;
+市場改革 < shijoukaikaku\ ;
+電力需要 < denryokujuyou\ ;
+臨床尋問 < rinshoujinmon\ ;
+陰極線管 < inkyokusenkan\ ;
+旋光分析 < senkoubunseki\ ;
+化石燃料 < kasekinenryou\ ;
+電信為替 < denshinkawase\ ;
+仏作 < hotokedzukuru\ ;
+懐中電灯 < kaichuudentou\ ;
+才色兼備 < saishokukenbi\ ;
+東南 < higashiminami\ ;
+指導要領 < shidouyouryou\ ;
+郵便年金 < yuubin''nenkin\ ;
+関連商品 < kanrenshouhin\ ;
+限界状況 < genkaijoukyou\ ;
+仁輪加狂言 < niwakakyougen\ ;
+現在完了 < genzaikanryou\ ;
+制約伝搬 < seiyakudenpan\ ;
+丸一週間 < maruisshuukan\ ;
+工業団地 < kougyoudanchi\ ;
+極楽浄土 < gokurakujoudo\ ;
+自自公3党 < jijikousantou\ ;
+気管支肺炎 < kikanshihaien\ ;
+多重債務者 < tajuusaimusha\ ;
+化学分析 < kagakubunseki\ ;
+諮問委員会 < shimon''iinkai\ ;
+同点決勝 < doutenkesshou\ ;
+体外離脱 < taigairidatsu\ ;
+生物兵器 < seibutsuheiki\ ;
+単音節語 < tan''onsetsugo\ ;
+攻撃隊形 < kougekitaikei\ ;
+法人所得 < houjinshotoku\ ;
+大逆事件 < taigyakujiken\ ;
+原始教会 < genshikyoukai\ ;
+価格協定 < kakakukyoutei\ ;
+寓意小説 < guuishousetsu\ ;
+昔気質 < mukashikatagi\ ;
+専門技術 < senmongijutsu\ ;
+拡張可能 < kakuchoukanou\ ;
+俄勉強 < niwakabenkyou\ ;
+急進主義 < kyuushinshugi\ ;
+記念式典 < kinenshikiten\ ;
+競合脱線 < kyougoudassen\ ;
+暑中休暇 < shochuukyuuka\ ;
+繁文縟礼 < hanbunjokurei\ ;
+目標管理 < mokuhyoukanri\ ;
+方向観念 < houkoukan''nen\ ;
+海底電信 < kaiteidenshin\ ;
+業界動向 < gyoukaidoukou\ ;
+必要経費 < hitsuyoukeihi\ ;
+水玉模様 < mizutamamoyou\ ;
+進学率 < shingakuritsu\ ;
+出征家族 < shusseikazoku\ ;
+経常収支 < keijoushuushi\ ;
+地球科学 < chikyuukagaku\ ;
+情報技術 < jouhougijutsu\ ;
+殿様蛙 < tonosamagaeru\ ;
+高高度飛行 < koukoudohikou\ ;
+空中分解 < kuuchuubunkai\ ;
+強制労働 < kyouseiroudou\ ;
+階級意識 < kaikyuuishiki\ ;
+博士論文 < hakushironbun\ ;
+人格形成 < jinkakukeisei\ ;
+絹糸紡績 < kenshibouseki\ ;
+職場闘争 < shokubatousou\ ;
+静脈血 < joumyakuketsu\ ;
+教育学部 < kyouikugakubu\ ;
+変速装置 < hensokusouchi\ ;
+真円真珠 < shin''enshinju\ ;
+国民経済 < kokuminkeizai\ ;
+一筋道 < hitosujimichi\ ;
+内面描写 < naimenbyousha\ ;
+媒体終端 < baitaishuutan\ ;
+心理療法 < shinriryouhou\ ;
+性的関係 < seitekikankei\ ;
+無銭飲食 < musen''inshoku\ ;
+就業率 < shuugyouritsu\ ;
+範疇文法 < hanchuubunpou\ ;
+内緒話 < naishobanashi\ ;
+長期借款 < choukishakkan\ ;
+全体集合 < zentaishuugou\ ;
+右小括弧 < migishoukakko\ ;
+仮想敵国 < kasoutekikoku\ ;
+躁鬱質 < souutsushitsu\ ;
+極楽往生 < gokurakuoujou\ ;
+初等教育 < shotoukyouiku\ ;
+行政命令 < gyouseimeirei\ ;
+対地攻撃 < taichikougeki\ ;
+自然描写 < shizenbyousha\ ;
+金融資本 < kin''yuushihon\ ;
+無能力者 < munouryokusha\ ;
+化学工業 < kagakukougyou\ ;
+行政区画 < gyouseikukaku\ ;
+学習辞典 < gakushuujiten\ ;
+国会議事堂 < kokkaigijidou\ ;
+閨閥政治 < keibatsuseiji\ ;
+二十四節気 < nijuushisekki\ ;
+事業拡充 < jigyoukakujuu\ ;
+農村工業 < nousonkougyou\ ;
+秋雨前線 < akisamezensen\ ;
+無形文化財 < mukeibunkazai\ ;
+共同農場 < kyoudounoujou\ ;
+女権拡張 < jokenkakuchou\ ;
+講習会場 < koushuukaijou\ ;
+汚染物質 < osenbusshitsu\ ;
+状況判断 < joukyouhandan\ ;
+当該官庁 < tougaikanchou\ ;
+仲介貿易 < chuukaiboueki\ ;
+国内市場 < kokunaishijou\ ;
+一枚看板 < ichimaikanban\ ;
+市場自由化 < shijoujiyuuka\ ;
+経営多角化 < keieitakakuka\ ;
+無線通信 < musentsuushin\ ;
+経済大国 < keizaitaikoku\ ;
+主我主義者 < shugashugisha\ ;
+暗号化手法 < angoukashuhou\ ;
+反社会的 < hanshakaiteki\ ;
+一利一害 < ichiriichigai\ ;
+二律背反 < niritsuhaihan\ ;
+復元作業 < fukugensagyou\ ;
+人間爆弾 < ningenbakudan\ ;
+季節労働 < kisetsuroudou\ ;
+陸軍大臣 < rikugundaijin\ ;
+断抵抗角 < danteikoukaku\ ;
+熱効率 < netsukouritsu\ ;
+不見転芸者 < mizutengeisha\ ;
+目的物 < mokutekibutsu\ ;
+通信機関 < tsuushinkikan\ ;
+反発力 < hanpatsuryoku\ ;
+写真凸版 < shashintoppan\ ;
+植物誌 < shokubutsushi\ ;
+化学療法 < kagakuryouhou\ ;
+功利主義者 < kourishugisha\ ;
+綱紀粛正 < koukishukusei\ ;
+税制改革 < zeiseikaikaku\ ;
+調停裁判 < chouteisaiban\ ;
+無罪判決 < muzaihanketsu\ ;
+天牛 < kamikirimushi\ ;
+軍事戦略 < gunjisenryaku\ ;
+警察力 < keisatsuryoku\ ;
+臨床試験 < rinshoushiken\ ;
+防止指針 < boushishishin\ ;
+気象観測 < kishoukansoku\ ;
+舞台生活 < butaiseikatsu\ ;
+大名旅行 < daimyouryokou\ ;
+作業療法 < sagyouryouhou\ ;
+外国為替 < gaikokukawase\ ;
+都立高校 < toritsukoukou\ ;
+形式主義 < keishikishugi\ ;
+化学工学 < kagakukougaku\ ;
+角運動量 < kakuundouryou\ ;
+完全無欠 < kanzenmuketsu\ ;
+政策決定 < seisakukettei\ ;
+貨物室 < kamotsushitsu\ ;
+循環小数 < junkanshousuu\ ;
+大韓民国 < daikanminkoku\ ;
+懐中鏡 < kaichuukagami\ ;
+適用業務 < tekiyougyoumu\ ;
+戦争文学 < sensoubungaku\ ;
+九天直下 < kyuutenchokka\ ;
+淡緑色 < tanryokushoku\ ;
+面従腹背 < menjuufukuhai\ ;
+確保失敗 < kakuhoshippai\ ;
+共通言語 < kyoutsuugengo\ ;
+自動車保険 < jidoushahoken\ ;
+強制処分 < kyouseishobun\ ;
+断崖絶壁 < dangaizeppeki\ ;
+産業社会 < sangyoushakai\ ;
+各種学校 < kakushugakkou\ ;
+分解写真 < bunkaishashin\ ;
+印刷媒体 < insatsubaitai\ ;
+研究所報 < kenkyuushohou\ ;
+乱射乱撃 < ransharangeki\ ;
+特許侵害 < tokkyoshingai\ ;
+定額貯金 < teigakuchokin\ ;
+公衆伝動 < koushuudendou\ ;
+天竺鼠 < tenjikunezumi\ ;
+鉄道馬車 < tetsudoubasha\ ;
+内国為替 < naikokukawase\ ;
+種種様様 < shujusamazama\ ;
+喜色満面 < kishokumanmen\ ;
+弁別素性 < benbetsusosei\ ;
+作戦命令 < sakusenmeirei\ ;
+議長職権 < gichoushokken\ ;
+統率力 < touritsuryoku\ ;
+実録物 < jitsurokumono\ ;
+啓蒙思潮 < keimoushichou\ ;
+公娼全廃 < koushouzenpai\ ;
+対面交通 < taimenkoutsuu\ ;
+自己顕示欲 < jikokenjiyoku\ ;
+密入国 < mitsunyuugoku\ ;
+一問一答 < ichimon''ittou\ ;
+直輸出 < chokuyushutsu\ ;
+無配当保険 < muhaitouhoken\ ;
+電子密度 < denshimitsudo\ ;
+超低価格 < chouteikakaku\ ;
+一括売買 < ikkatsubaibai\ ;
+惚気話 < norokebanashi\ ;
+制約条件 < seiyakujouken\ ;
+休戦会談 < kyuusenkaidan\ ;
+休養室 < kyuuyoushitsu\ ;
+版権侵害 < hankenshingai\ ;
+陳列窓 < chinretsumado\ ;
+百分率 < hyakubunritsu\ ;
+隔離病棟 < kakuribyoutou\ ;
+生鮮料品 < seisenryouhin\ ;
+出血症 < shukketsushou\ ;
+上昇傾向 < joushoukeikou\ ;
+不法入国 < fuhounyuugoku\ ;
+教養学部 < kyouyougakubu\ ;
+高信頼性 < koushinraisei\ ;
+果樹栽培者 < kajusaibaisha\ ;
+家宅捜索 < katakusousaku\ ;
+計画経済 < keikakukeizai\ ;
+三軸試験 < sanjikushiken\ ;
+最終段階 < saishuudankai\ ;
+収入印紙 < shuunyuuinshi\ ;
+半熟練工 < hanjukurenkou\ ;
+写真判定 < shashinhantei\ ;
+経済観念 < keizaikan''nen\ ;
+賃金水準 < chinginsuijun\ ;
+営業収支 < eigyoushuushi\ ;
+三相交流 < sansoukouryuu\ ;
+経営戦略 < keieisenryaku\ ;
+春夏秋冬 < shunkashuutou\ ;
+焦点深度 < shoutenshindo\ ;
+一時所得 < ichijishotoku\ ;
+杉花粉症 < sugikafunshou\ ;
+人民投票 < jinmintouhyou\ ;
+密輸出 < mitsuyushutsu\ ;
+合従連衡 < gasshourenkou\ ;
+烏野豌豆 < karasunoendou\ ;
+無芸大食 < mugeitaishoku\ ;
+国際連合 < kokusairengou\ ;
+判別式 < hanbetsushiki\ ;
+熱交換器 < netsukoukanki\ ;
+宇宙開発 < uchuukaihatsu\ ;
+漢文訓読 < kanbunkundoku\ ;
+空間感覚 < kuukankankaku\ ;
+二人三脚 < nininsankyaku\ ;
+権力主義 < kenryokushugi\ ;
+植物界 < shokubutsukai\ ;
+募集広告 < boshuukoukoku\ ;
+学習理論 < gakushuuriron\ ;
+駐車禁止 < chuushakinshi\ ;
+共同宣言 < kyoudousengen\ ;
+裁判官忌避 < saibankankihi\ ;
+天地神明 < tenchishinmei\ ;
+夢幻 < yumemaboroshi\ ;
+詳細情報 < shousaijouhou\ ;
+牛飲馬食 < gyuuinbashoku\ ;
+非武装地帯 < hibusouchitai\ ;
+金城鉄壁 < kinjouteppeki\ ;
+集中講義 < shuuchuukougi\ ;
+変形虫類 < henkeichuurui\ ;
+公的年金 < koutekinenkin\ ;
+週刊雑誌 < shuukanzasshi\ ;
+紡績工場 < bousekikoujou\ ;
+初等数学 < shotousuugaku\ ;
+残存日数 < zanson''nissuu\ ;
+空気清浄機 < kuukiseijouki\ ;
+国際展開 < kokusaitenkai\ ;
+年功序列 < nenkoujoretsu\ ;
+熱力学 < netsurikigaku\ ;
+商業都市 < shougyoutoshi\ ;
+中途退学 < chuutotaigaku\ ;
+共同会見 < kyoudoukaiken\ ;
+憲法学者 < kenpougakusha\ ;
+一事不再議 < ichijifusaigi\ ;
+創建記念日 < soukenkinenbi\ ;
+普遍妥当性 < fuhendatousei\ ;
+原子爆弾 < genshibakudan\ ;
+原子破壊機 < genshihakaiki\ ;
+登山鉄道 < tozantetsudou\ ;
+新正月 < shinshougatsu\ ;
+物理化学 < butsurikagaku\ ;
+給水制限 < kyuusuiseigen\ ;
+朝鮮戦争 < chousensensou\ ;
+嫌気生物 < kenkiseibutsu\ ;
+選択状態 < sentakujoutai\ ;
+主食物 < shushokubutsu\ ;
+高峰八座 < kouhouhachiza\ ;
+不消化物 < fushoukabutsu\ ;
+法的文書 < houtekibunsho\ ;
+秘密選挙 < himitsusenkyo\ ;
+陳列棚 < chinretsudana\ ;
+新熱帯区 < shin''nettaiku\ ;
+結婚指輪 < kekkon''yubiwa\ ;
+善隣友好 < zenrin''yuukou\ ;
+受取手形 < uketoritegata\ ;
+決算報告 < kessanhoukoku\ ;
+心理学者 < shinrigakusha\ ;
+雑収入 < zatsushuunyuu\ ;
+論理形式 < ronrikeishiki\ ;
+低頭平身 < teitouheishin\ ;
+混合農業 < kongounougyou\ ;
+文芸作品 < bungeisakuhin\ ;
+有閑階級 < yuukankaikyuu\ ;
+友好条約 < yuukoujouyaku\ ;
+則天去私 < sokutenkyoshi\ ;
+写実主義 < shajitsushugi\ ;
+国際市場 < kokusaishijou\ ;
+二重生活 < nijuuseikatsu\ ;
+臨機目標 < rinkimokuhyou\ ;
+商業登記 < shougyoutouki\ ;
+黄色人種 < oushokujinshu\ ;
+周波変調 < shuuhahenchou\ ;
+欠陥商品 < kekkanshouhin\ ;
+従属変数 < juuzokuhensuu\ ;
+既約表現 < kiyakuhyougen\ ;
+話半分 < hanashihanbun\ ;
+不良少年 < furyoushounen\ ;
+測量技師 < sokuryougishi\ ;
+森羅万象 < shinrabanshou\ ;
+産業構造 < sangyoukouzou\ ;
+欧州諸国 < oushuushokoku\ ;
+通勤地獄 < tsuukinjigoku\ ;
+昼間人口 < chuukanjinkou\ ;
+力不足 < chikarabusoku\ ;
+性格判断 < seikakuhandan\ ;
+信頼関係 < shinraikankei\ ;
+就学率 < shuugakuritsu\ ;
+同期通信 < doukitsuushin\ ;
+三重焦点 < sanjuushouten\ ;
+投票総数 < touhyousousuu\ ;
+大幅刷新 < oohabasasshin\ ;
+水上町 < minakamimachi\ ;
+結婚記念日 < kekkonkinenbi\ ;
+大雨注意報 < ooamechuuihou\ ;
+切断患者 < setsudankanja\ ;
+袖手傍観 < shuushuboukan\ ;
+拍手喝采 < hakushukassai\ ;
+作業仮説 < sagyoukasetsu\ ;
+経済成長 < keizaiseichou\ ;
+米東部時間 < beitoubujikan\ ;
+合成宝石 < gouseihouseki\ ;
+結締組織 < ketteisoshiki\ ;
+親切心 < shinsetsushin\ ;
+円錐曲線 < ensuikyokusen\ ;
+聖体拝領 < seitaihairyou\ ;
+庶民金融 < shominkin''yuu\ ;
+体積抵抗 < taisekiteikou\ ;
+協同組合 < kyoudoukumiai\ ;
+先住民族 < senjuuminzoku\ ;
+統一戦線 < touitsusensen\ ;
+同時通訳 < doujitsuuyaku\ ;
+周知徹底 < shuuchitettei\ ;
+艱難辛苦 < kan''nanshinku\ ;
+政党内閣 < seitounaikaku\ ;
+制作室 < seisakushitsu\ ;
+即物的 < sokubutsuteki\ ;
+現地報告 < genchihoukoku\ ;
+懸賞問題 < kenshoumondai\ ;
+劣性遺伝子 < resseiidenshi\ ;
+汲取口 < kumitoriguchi\ ;
+傭船契約 < yousenkeiyaku\ ;
+今上天皇 < kinjouten''nou\ ;
+他覚症状 < takakushoujou\ ;
+欠食児童 < kesshokujidou\ ;
+娯楽番組 < gorakubangumi\ ;
+精神医学 < seishin''igaku\ ;
+内容証明 < naiyoushoumei\ ;
+出港停止 < shukkouteishi\ ;
+夫婦約束 < fuufuyakusoku\ ;
+旅行業者 < ryokougyousha\ ;
+使徒信経 < shitoshinkyou\ ;
+外資導入 < gaishidounyuu\ ;
+無価値資産 < mukachishisan\ ;
+健康保険医 < kenkouhoken''i\ ;
+常任委員会 < jounin''iinkai\ ;
+成人教育 < seijinkyouiku\ ;
+公式主義 < koushikishugi\ ;
+複数業務 < fukusuugyoumu\ ;
+禁欲主義 < kin''yokushugi\ ;
+空襲警報 < kuushuukeihou\ ;
+産業再生 < sangyousaisei\ ;
+賃貸価格 < chintaikakaku\ ;
+戦闘前哨 < sentouzenshou\ ;
+一言一行 < ichigen''ikkou\ ;
+軖 < tsumugikuruma\ ;
+吹奏楽団 < suisougakudan\ ;
+直線距離 < chokusenkyori\ ;
+近親結婚 < kinshinkekkon\ ;
+米英仏蘭 < beieibutsuran\ ;
+自由主義者 < jiyuushugisha\ ;
+短波受信機 < tanpajushinki\ ;
+共同作業 < kyoudousagyou\ ;
+減反政策 < gentanseisaku\ ;
+心理作戦 < shinrisakusen\ ;
+総領娘 < souryoumusume\ ;
+七福神 < shichifukujin\ ;
+心臓移植 < shinzouishoku\ ;
+有限責任 < yuugensekinin\ ;
+組織再編 < soshikisaihen\ ;
+福音教会 < fukuinkyoukai\ ;
+関係副詞 < kankeifukushi\ ;
+史料編纂 < shiryouhensan\ ;
+特別席 < tokubetsuseki\ ;
+猟官運動 < ryoukan''undou\ ;
+肉体労働 < nikutairoudou\ ;
+破壊主義者 < hakaishugisha\ ;
+参照文献 < sanshoubunken\ ;
+音楽監督 < ongakukantoku\ ;
+平身低頭 < heishinteitou\ ;
+共産分子 < kyousanbunshi\ ;
+予約出版 < yoyakushuppan\ ;
+炭水化物 < tansuikabutsu\ ;
+御都合主義 < gotsugoushugi\ ;
+多血質 < taketsushitsu\ ;
+近代文学 < kindaibungaku\ ;
+二十日大根 < hatsukadaikon\ ;
+地方官庁 < chihoukanchou\ ;
+四分五裂 < shibungoretsu\ ;
+経済回復 < keizaikaifuku\ ;
+実存主義 < jitsuzonshugi\ ;
+恒温動物 < kouondoubutsu\ ;
+野菜一皿 < yasaihitosara\ ;
+形式論理 < keishikironri\ ;
+大学浪人 < daigakurounin\ ;
+暫定協定 < zanteikyoutei\ ;
+落下傘部隊 < rakkasanbutai\ ;
+放送大学 < housoudaigaku\ ;
+法律制度 < houritsuseido\ ;
+長距離依存 < choukyoriizon\ ;
+信用金庫 < shin''youkinko\ ;
+有名無実 < yuumeimujitsu\ ;
+終身会員 < shuushinkaiin\ ;
+笑止千万 < shoushisenban\ ;
+文学博士 < bungakuhakase\ ;
+庭先相場 < niwasakisouba\ ;
+消費者側 < shouhishagawa\ ;
+精神構造 < seishinkouzou\ ;
+鉄骨工事 < tekkotsukouji\ ;
+国利民福 < kokuriminpuku\ ;
+軽佻浮薄 < keichoufuhaku\ ;
+沖積平野 < chuusekiheiya\ ;
+酪農製品 < rakunouseihin\ ;
+謝罪広告 < shazaikoukoku\ ;
+富国強兵 < fukokukyouhei\ ;
+外郭団体 < gaikakudantai\ ;
+共同企業 < kyoudoukigyou\ ;
+階級社会 < kaikyuushakai\ ;
+対外政策 < taigaiseisaku\ ;
+精霊信仰 < seireishinkou\ ;
+GB理論 < ji\ ̄bi\ ̄riron\ ;
+春風駘蕩 < shunpuutaitou\ ;
+死刑執行 < shikeishikkou\ ;
+二者択一 < nishatakuitsu\ ;
+酸性反応 < sanseihan''nou\ ;
+核爆発 < kakubakuhatsu\ ;
+水道料金 < suidouryoukin\ ;
+空気力学 < kuukirikigaku\ ;
+商売気質 < shoubaikatagi\ ;
+記録文学 < kirokubungaku\ ;
+符号変換器 < fugouhenkanki\ ;
+彼方此方 < achirakochira\ ;
+立身出世 < risshinshusse\ ;
+正金銀行 < shoukinginkou\ ;
+共済事業 < kyousaijigyou\ ;
+先行技術 < senkougijutsu\ ;
+図書目録 < toshomokuroku\ ;
+証拠隠滅 < shoukoinmetsu\ ;
+送金小切手 < soukinkogitte\ ;
+競争関係 < kyousoukankei\ ;
+得票率 < tokuhyouritsu\ ;
+表彰式 < hyoushoushiki\ ;
+入学式 < nyuugakushiki\ ;
+事前検閲 < jizenken''etsu\ ;
+行政処分 < gyouseishobun\ ;
+全面広告 < zenmenkoukoku\ ;
+糎 < senchimeitoru\ ;
+国務長官 < kokumuchoukan\ ;
+粨 < hekutomeetoru\ ;
+精神病院 < seishinbyouin\ ;
+四十九日 < shijuukunichi\ ;
+杓子定規 < shakushijougi\ ;
+可塑物質 < kasobusshitsu\ ;
+灰白質 < kaihakushitsu\ ;
+半農半漁 < han''nouhangyo\ ;
+食用油 < shokuyouabura\ ;
+職業的 < shokugyouteki\ ;
+食生活 < shokuseikatsu\ ;
+暴飲暴食 < bouinboushoku\ ;
+研究分野 < kenkyuubun''ya\ ;
+人口密度 < jinkoumitsudo\ ;
+人身売買 < jinshinbaibai\ ;
+殺人未遂 < satsujinmisui\ ;
+丸一月 < maruhitotsuki\ ;
+足利時代 < ashikagajidai\ ;
+弾着距離 < danchakukyori\ ;
+職業病 < shokugyoubyou\ ;
+動物検査 < doubutsukensa\ ;
+薬餌療法 < yakujiryouhou\ ;
+人間国宝 < ningenkokuhou\ ;
+丸一日 < maruichinichi\ ;
+緊要地形 < kin''youchikei\ ;
+市場成長 < shijouseichou\ ;
+指名投票 < shimeitouhyou\ ;
+呉越同舟 < goetsudoushuu\ ;
+宅地造成 < takuchizousei\ ;
+精神労働 < seishinroudou\ ;
+家族計画 < kazokukeikaku\ ;
+開口一番 < kaikouichiban\ ;
+直系卑属 < chokkeihizoku\ ;
+割賦方式 < kappuhoushiki\ ;
+毒物学 < dokubutsugaku\ ;
+勤労大衆 < kinroutaishuu\ ;
+未収入金 < mishuunyuukin\ ;
+風俗営業 < fuuzokueigyou\ ;
+民俗音楽 < minzokuongaku\ ;
+海水浴場 < kaisuiyokujou\ ;
+連合作戦 < rengousakusen\ ;
+両蓋時計 < ryoubutadokei\ ;
+主客転倒 < shukakutentou\ ;
+就職先 < shuushokusaki\ ;
+損益勘定 < son''ekikanjou\ ;
+動力降下 < douryokukouka\ ;
+三角闘争 < sankakutousou\ ;
+退学処分 < taigakushobun\ ;
+実験材料 < jikkenzairyou\ ;
+口約束 < kuchiyakusoku\ ;
+対戦車火器 < taisenshakaki\ ;
+弗化水素酸 < fukkasuisosan\ ;
+重要産業 < juuyousangyou\ ;
+液体燃料 < ekitainenryou\ ;
+伝道集会 < dendoushuukai\ ;
+八面六臂 < hachimenroppi\ ;
+実力者 < jitsuryokusha\ ;
+才気煥発 < saikikanpatsu\ ;
+感情表現 < kanjouhyougen\ ;
+湧出量 < yuushutsuryou\ ;
+人種差別 < jinshusabetsu\ ;
+英国発音 < eikokuhatsuon\ ;
+無限数列 < mugensuuretsu\ ;
+熟慮断行 < jukuryodankou\ ;
+筒井筒 < tsutsuidzutsu\ ;
+直交座標 < chokkouzahyou\ ;
+北太平洋 < kitataiheiyou\ ;
+男声合唱 < danseigasshou\ ;
+胃腸病学 < ichoubyougaku\ ;
+三角関係 < sankakukankei\ ;
+相補性原理 < souhoseigenri\ ;
+蒸気機関車 < joukikikansha\ ;
+単独会見 < tandokukaiken\ ;
+会堂司 < kaidoudzukasa\ ;
+間歇熱 < kanketsunetsu\ ;
+財産相続 < zaisansouzoku\ ;
+上智大学 < jouchidaigaku\ ;
+文化事業部 < bunkajigyoubu\ ;
+無記名社債 < mukimeishasai\ ;
+僧庵生活 < souanseikatsu\ ;
+法律用語 < houritsuyougo\ ;
+雌雄選択 < shiyuusentaku\ ;
+百花繚乱 < hyakkaryouran\ ;
+音楽療法 < ongakuryouhou\ ;
+住民登録 < juumintouroku\ ;
+断層写真 < dansoushashin\ ;
+占領地帯 < senryouchitai\ ;
+薬品会社 < yakuhingaisha\ ;
+出口調査 < deguchichousa\ ;
+合同慰霊祭 < goudouireisai\ ;
+能動免疫 < noudoumen''eki\ ;
+在留邦人 < zairyuuhoujin\ ;
+麦藁細工 < mugiwarasaiku\ ;
+哲学的 < tetsugakuteki\ ;
+工芸美術 < kougeibijutsu\ ;
+読唇術 < dokushinjutsu\ ;
+航空攻撃 < koukuukougeki\ ;
+裸電球 < hadakadenkyuu\ ;
+重量選手 < juuryousenshu\ ;
+赤立羽蝶 < akatatehachou\ ;
+火災報知機 < kasaihouchiki\ ;
+蛋白質 < tanpakushitsu\ ;
+愛鳥週間 < aichoushuukan\ ;
+工業化学 < kougyoukagaku\ ;
+技術提携 < gijutsuteikei\ ;
+中性子星 < chuuseishisei\ ;
+排泄物 < haisetsubutsu\ ;
+食肉目 < shokunikumoku\ ;
+公共事業 < koukyoujigyou\ ;
+上越本線 < jouetsuhonsen\ ;
+活動力 < katsudouryoku\ ;
+無償契約 < mushoukeiyaku\ ;
+電波探知機 < denpatanchiki\ ;
+閃光電球 < senkoudenkyuu\ ;
+国籍言語 < kokusekigengo\ ;
+定温動物 < teiondoubutsu\ ;
+空前絶後 < kuuzenzetsugo\ ;
+侵略的 < shinryakuteki\ ;
+武力外交 < buryokugaikou\ ;
+凝集力 < gyoushuuryoku\ ;
+戸籍抄本 < kosekishouhon\ ;
+朝鮮半島 < chousenhantou\ ;
+可変抵抗器 < kahenteikouki\ ;
+非常召集 < hijoushoushuu\ ;
+全般前哨 < zenpanzenshou\ ;
+大乗仏教 < daijoubukkyou\ ;
+分析試験 < bunsekishiken\ ;
+公務員試験 < koumuinshiken\ ;
+幽霊屋敷 < yuureiyashiki\ ;
+有産階級 < yuusankaikyuu\ ;
+権力政治 < kenryokuseiji\ ;
+脅迫電話 < kyouhakudenwa\ ;
+船荷証券 < funanishouken\ ;
+手旗信号 < tebatashingou\ ;
+栄養失調 < eiyoushitchou\ ;
+作況指数 < sakkyoushisuu\ ;
+相互通信 < sougotsuushin\ ;
+表層雪崩 < hyousounadare\ ;
+災害対策 < saigaitaisaku\ ;
+事実調査 < jijitsuchousa\ ;
+日経新聞 < nikkeishinbun\ ;
+中間選挙 < chuukansenkyo\ ;
+市長選挙 < shichousenkyo\ ;
+沈降海岸 < chinkoukaigan\ ;
+獅子頭 < shishigashira\ ;
+宇宙飛行士 < uchuuhikoushi\ ;
+社会福祉 < shakaifukushi\ ;
+論功行賞 < ronkoukoushou\ ;
+実践躬行 < jissenkyuukou\ ;
+観察力 < kansatsuryoku\ ;
+正副二通 < seifukunitsuu\ ;
+交感神経 < koukanshinkei\ ;
+消費革命 < shouhikakumei\ ;
+脱力感 < datsuryokukan\ ;
+専任講師 < sen''ninkoushi\ ;
+支出額 < shishutsugaku\ ;
+大量生産 < tairyouseisan\ ;
+最高機密 < saikoukimitsu\ ;
+管弦楽法 < kangengakuhou\ ;
+新品同様 < shinpindouyou\ ;
+大虐殺 < daigyakusatsu\ ;
+前渡金 < maewatashikin\ ;
+看護婦学院 < kangofugakuin\ ;
+備荒貯蓄 < bikouchochiku\ ;
+薄志弱行 < hakushijakkou\ ;
+勤労階級 < kinroukaikyuu\ ;
+乳白色 < nyuuhakushoku\ ;
+日印関係 < nichiinkankei\ ;
+終業式 < shuugyoushiki\ ;
+長期計画 < choukikeikaku\ ;
+爆発的 < bakuhatsuteki\ ;
+不時着陸 < fujichakuriku\ ;
+排泄器官 < haisetsukikan\ ;
+英文解釈 < eibunkaishaku\ ;
+免責条項 < mensekijoukou\ ;
+鉄道線路 < tetsudousenro\ ;
+十字軍騎士 < juujigunkishi\ ;
+攻撃態勢 < kougekitaisei\ ;
+定期昇給 < teikishoukyuu\ ;
+記述文法 < kijutsubunpou\ ;
+臣籍降下 < shinsekikouka\ ;
+炭酸飲料 < tansan''inryou\ ;
+市場拡大 < shijoukakudai\ ;
+精密機械 < seimitsukikai\ ;
+無機高分子 < mukikoubunshi\ ;
+機動警察 < kidoukeisatsu\ ;
+清元節 < kiyomotobushi\ ;
+年間収益 < nenkanshuueki\ ;
+仲裁裁定 < chuusaisaitei\ ;
+雷親父 < kaminarioyaji\ ;
+偵察要員 < teisatsuyouin\ ;
+神経質 < shinkeishitsu\ ;
+文藝春秋 < bungeishunjuu\ ;
+人形芝居 < ningyoushibai\ ;
+水中眼鏡 < suichuumegane\ ;
+公序良俗 < koujoryouzoku\ ;
+接着力 < setchakuryoku\ ;
+五月幟 < satsukinobori\ ;
+婚前交渉 < konzenkoushou\ ;
+太陽黒点 < taiyoukokuten\ ;
+上御一人 < kamigoichinin\ ;
+主要工業 < shuyoukougyou\ ;
+下等動物 < katoudoubutsu\ ;
+逆輸出 < gyakuyushutsu\ ;
+的中率 < tekichuuritsu\ ;
+建設費 < kensetsuhiyou\ ;
+臥薪嘗胆 < gashinshoutan\ ;
+指揮所演習 < shikijoenshuu\ ;
+診療支援 < shinryoushien\ ;
+転地療養 < tenchiryouyou\ ;
+万能選手 < ban''nousenshu\ ;
+教会音楽 < kyoukaiongaku\ ;
+千載一遇 < senzaiichiguu\ ;
+屈折率 < kussetsuritsu\ ;
+売買契約 < baibaikeiyaku\ ;
+住宅地帯 < juutakuchitai\ ;
+減速装置 < gensokusouchi\ ;
+住宅問題 < juutakumondai\ ;
+船長室 < senchoushitsu\ ;
+免疫血清 < men''ekikessei\ ;
+核反応炉 < kakuhan''nouro\ ;
+主教室 < shukyoushitsu\ ;
+放射線学 < houshasengaku\ ;
+流通経路 < ryuutsuukeiro\ ;
+二酸化窒素 < nisankachisso\ ;
+尋常一様 < jinjouichiyou\ ;
+国有財産 < kokuyuuzaisan\ ;
+市民階級 < shiminkaikyuu\ ;
+言語知識 < gengochishiki\ ;
+公共放送 < koukyouhousou\ ;
+室内楽 < shitsunaigaku\ ;
+斑状組織 < hanjousoshiki\ ;
+人情話 < ninjoubanashi\ ;
+重爆撃機 < juubakugekiki\ ;
+婚外交渉 < kongaikoushou\ ;
+仲裁裁判 < chuusaisaiban\ ;
+侯爵夫人 < koushakufujin\ ;
+濃緑色 < nouryokushoku\ ;
+有色野菜 < yuushokuyasai\ ;
+集団訴訟 < shuudansoshou\ ;
+一次産業 < ichijisangyou\ ;
+練習不足 < renshuubusoku\ ;
+商船学校 < shousengakkou\ ;
+麦藁蜻蛉 < mugiwaratonbo\ ;
+自動車電話 < jidoushadenwa\ ;
+有限集合 < yuugenshuugou\ ;
+追加料金 < tsuikaryoukin\ ;
+Π中間子 < paichuukanshi\ ;
+遠隔教育 < enkakukyouiku\ ;
+脳脊髄液 < nousekizuieki\ ;
+情報可視化 < jouhoukashika\ ;
+東西南北 < touzainanboku\ ;
+許容線量 < kyoyousenryou\ ;
+正札値段 < shoufudanedan\ ;
+応接室 < ousetsushitsu\ ;
+差別関税 < sabetsukanzei\ ;
+中等学校 < chuutougakkou\ ;
+管弦楽団 < kangengakudan\ ;
+侵略国 < shinryakukoku\ ;
+寄生生物 < kiseiseibutsu\ ;
+主権回復 < shukenkaifuku\ ;
+両部神道 < ryoubushintou\ ;
+侍気質 < samuraikatagi\ ;
+申込書 < moushikomisho\ ;
+絹布一巻 < kenpuhitomaki\ ;
+過圧密比 < kaatsumitsuhi\ ;
+摂氏20度 < sesshinijuudo\ ;
+自然選択 < shizensentaku\ ;
+直説法 < chokusetsuhou\ ;
+下町風 < shitamachifuu\ ;
+反応速度 < han''nousokudo\ ;
+小型赤家蚊 < kogataakaieka\ ;
+偵察衛星 < teisatsueisei\ ;
+食中毒 < shokuchuudoku\ ;
+正副議長 < seifukugichou\ ;
+産出高 < sanshutsudaka\ ;
+神前結婚 < shinzenkekkon\ ;
+法的手段 < houtekishudan\ ;
+作業領域 < sagyouryouiki\ ;
+年金証書 < nenkinshousho\ ;
+交通妨害 < koutsuubougai\ ;
+町村合併 < chousongappei\ ;
+教会旋法 < kyoukaisenpou\ ;
+幕藩体制 < bakuhantaisei\ ;
+第一印象 < daiichiinshou\ ;
+真空包装 < shinkuuhousou\ ;
+監査証跡 < kansashouseki\ ;
+誘導電流 < yuudoudenryuu\ ;
+復旧作業 < fukkyuusagyou\ ;
+供出米 < kyoushutsumai\ ;
+損害賠償 < songaibaishou\ ;
+想像妊娠 < souzouninshin\ ;
+虚心坦懐 < kyoshintankai\ ;
+耐震構造 < taishinkouzou\ ;
+有限級数 < yuugenkyuusuu\ ;
+増設率 < zousetsuritsu\ ;
+国土計画 < kokudokeikaku\ ;
+生存競争 < seizonkyousou\ ;
+結婚披露宴 < kekkonhirouen\ ;
+市民革命 < shiminkakumei\ ;
+圧力鍋 < atsuryokunabe\ ;
+大統領選 < daitouryousen\ ;
+補習教育 < hoshuukyouiku\ ;
+司令長官 < shireichoukan\ ;
+賃金体系 < chingintaikei\ ;
+海上自衛隊 < kaijoujieitai\ ;
+全人教育 < zenjinkyouiku\ ;
+官房長官 < kanbouchoukan\ ;
+企業秘密 < kigyouhimitsu\ ;
+殺人事件 < satsujinjiken\ ;
+団栗眼 < dongurimanako\ ;
+圧力釜 < atsuryokugama\ ;
+凶悪犯罪 < kyouakuhanzai\ ;
+天然資源 < ten''nenshigen\ ;
+百姓一揆 < hyakushouikki\ ;
+原案委員会 < gen''an''iinkai\ ;
+気密室 < kimitsushitsu\ ;
+総合大学 < sougoudaigaku\ ;
+仏頂尊勝 < buchousonshou\ ;
+千差万別 < sensabanbetsu\ ;
+選手権試合 < senshukenjiai\ ;
+網状組織 < moujousoshiki\ ;
+第一部長 < daiichibuchou\ ;
+準準決勝 < junjunkesshou\ ;
+大和民族 < yamatominzoku\ ;
+応接係 < ousetsugakari\ ;
+地殻変動 < chikakuhendou\ ;
+財政改革 < zaiseikaikaku\ ;
+共同計算 < kyoudoukeisan\ ;
+女房詞 < nyouboukotoba\ ;
+写真電送 < shashindensou\ ;
+分列式 < bunretsushiki\ ;
+不良診断 < furyoushindan\ ;
+水産大学 < suisandaigaku\ ;
+単式火山 < tanshikikazan\ ;
+一分一厘 < ichibuichirin\ ;
+実地検証 < jitchikenshou\ ;
+北清事変 < hokushinjihen\ ;
+人面獣心 < ninmenjuushin\ ;
+親任式 < shin''ninshiki\ ;
+計画段階 < keikakudankai\ ;
+生活力 < seikatsuryoku\ ;
+社員食堂 < shainshokudou\ ;
+郵便料金 < yuubinryoukin\ ;
+五十三次 < gojuusantsugi\ ;
+優勝劣敗 < yuushoureppai\ ;
+快速列車 < kaisokuressha\ ;
+難民条約 < nanminjouyaku\ ;
+国際放送 < kokusaihousou\ ;
+六十余州 < rokujuuyoshuu\ ;
+急行列車 < kyuukouressha\ ;
+日和見主義 < hiyorimishugi\ ;
+森林地帯 < shinrinchitai\ ;
+鎖国政策 < sakokuseisaku\ ;
+具象美術 < gushoubijutsu\ ;
+懐石料理 < kaisekiryouri\ ;
+簡易食堂 < kan''ishokudou\ ;
+暗黒大陸 < ankokutairiku\ ;
+駅長室 < ekichoushitsu\ ;
+反動革命 < handoukakumei\ ;
+六根清浄 < rokkonshoujou\ ;
+商業主義 < shougyoushugi\ ;
+仮装舞踏会 < kasoubutoukai\ ;
+信頼醸成 < shinraijousei\ ;
+共同声明 < kyoudouseimei\ ;
+遮光器土偶 < shakoukidoguu\ ;
+割引切符 < waribikikippu\ ;
+下水処理場 < gesuishorijou\ ;
+冷却期間 < reikyakukikan\ ;
+恙虫 < tsutsugamushi\ ;
+九死一生 < kyuushiisshou\ ;
+中華民国 < chuukaminkoku\ ;
+合理主義者 < gourishugisha\ ;
+拡声装置 < kakuseisouchi\ ;
+道路建設 < dourokensetsu\ ;
+人造宝石 < jinzouhouseki\ ;
+輸出保険 < yushutsuhoken\ ;
+必修科目 < hisshuukamoku\ ;
+給与所得 < kyuuyoshotoku\ ;
+歴史学派 < rekishigakuha\ ;
+等差数列 < tousasuuretsu\ ;
+君子豹変 < kunshihyouhen\ ;
+下表参照 < kahyousanshou\ ;
+勢力範囲 < seiryokuhan''i\ ;
+通貨政策 < tsuukaseisaku\ ;
+独占企業 < dokusenkigyou\ ;
+特権階級 < tokkenkaikyuu\ ;
+正規曲線 < seikikyokusen\ ;
+傍聴無料 < bouchoumuryou\ ;
+産業資本 < sangyoushihon\ ;
+楽器演奏者 < gakkiensousha\ ;
+立石電機 < tateishidenki\ ;
+夜間中学 < yakanchuugaku\ ;
+貿易摩擦 < bouekimasatsu\ ;
+年輪史学 < nenrinshigaku\ ;
+家付娘 < ietsukimusume\ ;
+機械翻訳 < kikaihon''yaku\ ;
+金科玉条 < kinkagyokujou\ ;
+民間療法 < minkanryouhou\ ;
+情況証拠 < joukyoushouko\ ;
+古典主義者 < kotenshugisha\ ;
+心悸亢進 < shinkikoushin\ ;
+国土地理院 < kokudochiriin\ ;
+定性分析 < teiseibunseki\ ;
+市街化区域 < shigaikakuiki\ ;
+特許技術 < tokkyogijutsu\ ;
+報道写真 < houdoushashin\ ;
+最低賃金 < saiteichingin\ ;
+百日草 < hyakunichisou\ ;
+瞬間電断 < shunkandendan\ ;
+年頭教書 < nentoukyousho\ ;
+東洋段通 < touyoudantsuu\ ;
+独占資本 < dokusenshihon\ ;
+東方教会 < touhoukyoukai\ ;
+電気機関車 < denkikikansha\ ;
+自覚症状 < jikakushoujou\ ;
+天体観測 < tentaikansoku\ ;
+群集行動 < gunshuukoudou\ ;
+衆人環視 < shuujinkanshi\ ;
+迷走神経 < meisoushinkei\ ;
+戦略兵器 < senryakuheiki\ ;
+先制攻撃 < senseikougeki\ ;
+有給休暇 < yuukyuukyuuka\ ;
+見学旅行 < kengakuryokou\ ;
+国内経済 < kokunaikeizai\ ;
+対空射撃 < taikuushageki\ ;
+比較対照 < hikakutaishou\ ;
+市中銀行 < shichuuginkou\ ;
+定点観測 < teitenkansoku\ ;
+促成栽培 < sokuseisaibai\ ;
+両三日 < ryousan''nichi\ ;
+賃金格差 < chinginkakusa\ ;
+支配階級 < shihaikaikyuu\ ;
+二重露出 < nijuuroshutsu\ ;
+動脈硬化 < doumyakukouka\ ;
+隣接部隊 < rinsetsubutai\ ;
+建設機械 < kensetsukikai\ ;
+上層階級 < jousoukaikyuu\ ;
+三拝九拝 < sanpaikyuuhai\ ;
+開校記念日 < kaikoukinenbi\ ;
+不可知論者 < fukachironsha\ ;
+旗行列 < hatagyouretsu\ ;
+特殊法人 < tokushuhoujin\ ;
+士魂商才 < shikonshousai\ ;
+傷病捕虜 < shoubyouhoryo\ ;
+無性生殖 < museiseishoku\ ;
+眉唾物 < mayutsubamono\ ;
+財政政策 < zaiseiseisaku\ ;
+陸上競技 < rikujoukyougi\ ;
+博覧強記 < hakurankyouki\ ;
+人権侵害 < jinkenshingai\ ;
+総領息子 < souryoumusuko\ ;
+進行係 < shinkougakari\ ;
+菜食主義 < saishokushugi\ ;
+無記名債権 < mukimeisaiken\ ;
+赤外発散 < sekigaihassan\ ;
+衛星通信 < eiseitsuushin\ ;
+人員削減 < jin''insakugen\ ;
+動植物 < doushokubutsu\ ;
+率先躬行 < sossenkyuukou\ ;
+免税所得 < menzeishotoku\ ;
+防縮加工 < boushukukakou\ ;
+複式簿記 < fukushikiboki\ ;
+責任分担 < sekininbuntan\ ;
+武力行使 < buryokukoushi\ ;
+番組編成 < bangumihensei\ ;
+全波受信機 < zenpajushinki\ ;
+必要物 < hitsuyoubutsu\ ;
+休息時間 < kyuusokujikan\ ;
+三軸室 < sanjikushitsu\ ;
+二重関節 < nijuukansetsu\ ;
+待合室 < machiaishitsu\ ;
+博物学 < hakubutsugaku\ ;
+観光産業 < kankousangyou\ ;
+結紮術 < kessatsujutsu\ ;
+博引旁証 < hakuinboushou\ ;
+混入物 < kon''nyuubutsu\ ;
+共販会社 < kyouhangaisha\ ;
+揚陸艦艇 < yourikukantei\ ;
+公害対策 < kougaitaisaku\ ;
+陽動作戦 < youdousakusen\ ;
+平和主義者 < heiwashugisha\ ;
+誘拐犯人 < yuukaihan''nin\ ;
+内臓疾患 < naizoushikkan\ ;
+修士論文 < shuushironbun\ ;
+高等教育 < koutoukyouiku\ ;
+測量機械 < sokuryoukikai\ ;
+霊感商法 < reikanshouhou\ ;
+呪物崇拝 < jubutsusuuhai\ ;
+文人墨客 < bunjinbokkaku\ ;
+承知之助 < shouchinosuke\ ;
+越年草本 < etsunensouhon\ ;
+青天井予算 < aotenjouyosan\ ;
+状況意味論 < joukyouimiron\ ;
+通勤列車 < tsuukinressha\ ;
+出席率 < shussekiritsu\ ;
+精進料理 < shoujinryouri\ ;
+主力部隊 < shuryokubutai\ ;
+漢字文化圏 < kanjibunkaken\ ;
+郷土文学 < kyoudobungaku\ ;
+直接税 < chokusetsuzei\ ;
+失業者 < shitsugyousha\ ;
+歯科技工士 < shikagikoushi\ ;
+期末試験 < kimatsushiken\ ;
+連邦首相 < renpoushushou\ ;
+情報工学 < jouhoukougaku\ ;
+牧畜業 < bokuchikugyou\ ;
+七分三分 < shichibusanbu\ ;
+参考資料 < sankoushiryou\ ;
+海上輸送路 < kaijouyusouro\ ;
+独断専行 < dokudansenkou\ ;
+入学考査 < nyuugakukousa\ ;
+遭難信号 < sounanshingou\ ;
+流動資産 < ryuudoushisan\ ;
+構築物 < kouchikubutsu\ ;
+下四半期 < shimoshihanki\ ;
+選択科目 < sentakukamoku\ ;
+設立者 < setsuritsusha\ ;
+情報検索 < jouhoukensaku\ ;
+頂上会談 < choujoukaidan\ ;
+共済組合 < kyousaikumiai\ ;
+参考書目 < sankoushomoku\ ;
+治安警察 < chiankeisatsu\ ;
+興業銀行 < kougyouginkou\ ;
+調停委員会 < chouteiiinkai\ ;
+行政書士 < gyouseishoshi\ ;
+関連項目 < kanrenkoumoku\ ;
+難行苦行 < nangyoukugyou\ ;
+行方不明者 < yukuefumeisha\ ;
+預金通帳 < yokintsuuchou\ ;
+網膜剥離 < moumakuhakuri\ ;
+輸出検査 < yushutsukensa\ ;
+私共 < watakushidomo\ ;
+指定銘柄 < shiteimeigara\ ;
+酒池肉林 < shuchinikurin\ ;
+優等賞状 < yuutoushoujou\ ;
+黄金分割 < ougonbunkatsu\ ;
+修繕工場 < shuuzenkoujou\ ;
+足長蜂 < ashinagabachi\ ;
+二者選一 < nishasen''itsu\ ;
+粘液質 < nen''ekishitsu\ ;
+私事 < watakushigoto\ ;
+菌類学者 < kinruigakusha\ ;
+外国郵便 < gaikokuyuubin\ ;
+交通地獄 < koutsuujigoku\ ;
+集団結婚 < shuudankekkon\ ;
+愛玩動物 < aigandoubutsu\ ;
+間接話法 < kansetsuwahou\ ;
+学生部長 < gakuseibuchou\ ;
+雲形定規 < kumogatajougi\ ;
+個人的意見 < kojintekiiken\ ;
+屋外広告 < okugaikoukoku\ ;
+亡命文学 < boumeibungaku\ ;
+北国赤海老 < hokkokuakaebi\ ;
+連続関数 < renzokukansuu\ ;
+幽霊話 < yuureibanashi\ ;
+筆跡鑑定 < hissekikantei\ ;
+同質的 < doushitsuteki\ ;
+廃物利用 < haibutsuriyou\ ;
+車両会社 < sharyougaisha\ ;
+麻薬常習 < mayakujoushuu\ ;
+不得要領 < futokuyouryou\ ;
+山岳地帯 < sangakuchitai\ ;
+問題領域 < mondairyouiki\ ;
+執着心 < shuuchakushin\ ;
+個別販売 < kobetsuhanbai\ ;
+平衡感覚 < heikoukankaku\ ;
+内国郵便 < naikokuyuubin\ ;
+力関係 < chikarakankei\ ;
+報道番組 < houdoubangumi\ ;
+紙上計画 < shijoukeikaku\ ;
+二重国籍 < nijuukokuseki\ ;
+行政訴訟 < gyouseisoshou\ ;
+絶縁抵抗 < zetsuenteikou\ ;
+匿名批評 < tokumeihihyou\ ;
+長期国債 < choukikokusai\ ;
+光線療法 < kousenryouhou\ ;
+流動資本 < ryuudoushihon\ ;
+証券市場 < shoukenshijou\ ;
+烏芻沙摩妙王 < ususamamyouou\ ;
+建設工事 < kensetsukouji\ ;
+変態性欲 < hentaiseiyoku\ ;
+空中細菌 < kuuchuusaikin\ ;
+代金引換 < daikinhikikae\ ;
+茶番狂言 < chabankyougen\ ;
+交通規則 < koutsuukisoku\ ;
+物質的 < busshitsuteki\ ;
+現物相場 < genbutsusouba\ ;
+束縛理論 < sokubakuriron\ ;
+公正証書 < kouseishousho\ ;
+同盟怠業 < doumeitaigyou\ ;
+行動方針 < koudouhoushin\ ;
+適正価格 < tekiseikakaku\ ;
+人種改良 < jinshukairyou\ ;
+使途不明金 < shitofumeikin\ ;
+半流動体 < hanryuudoutai\ ;
+普仏戦争 < fufutsusensou\ ;
+蒸発熱 < jouhatsunetsu\ ;
+二重結合 < nijuuketsugou\ ;
+免責特権 < mensekitokken\ ;
+懲戒処分 < choukaishobun\ ;
+不心得者 < fukokoroemono\ ;
+豪放磊落 < gouhourairaku\ ;
+艦砲射撃 < kanpoushageki\ ;
+関数解析 < kansuukaiseki\ ;
+民主化運動 < minshukaundou\ ;
+天気相談所 < tenkisoudanjo\ ;
+通信講座 < tsuushinkouza\ ;
+外貨獲得 < gaikakakutoku\ ;
+参加希望者 < sankakibousha\ ;
+懐疑主義者 < kaigishugisha\ ;
+電気溶接 < denkiyousetsu\ ;
+吮癰舐痔 < sen''youshiji\ ;
+労働条件 < roudoujouken\ ;
+外国航路 < gaikokukouro\ ;
+伝送速度 < densousokudo\ ;
+一本調子 < ippondjoushi\ ;
+墜落事故 < tsuirakujiko\ ;
+薩摩閥 < satsumabatsu\ ;
+視聴率 < shichouritsu\ ;
+線香花火 < senkouhanabi\ ;
+東京都政 < toukyoutosei\ ;
+軍事産業 < gunjisangyou\ ;
+代理牧師 < dairibokushi\ ;
+三十三所 < sanjuusansho\ ;
+一次線輪 < ichijisenrin\ ;
+畳水練 < tatamisuiren\ ;
+価格変動 < kakakuhendou\ ;
+悠悠自適 < yuuyuujiteki\ ;
+山紫水明 < sanshisuimei\ ;
+幕僚長 < bakuryouchou\ ;
+空輸貨物 < kuuyukamotsu\ ;
+観光資源 < kankoushigen\ ;
+視覚言語 < shikakugengo\ ;
+麻薬常用 < mayakujouyou\ ;
+日朝辞典 < nitchoujiten\ ;
+店頭債券 < tentousaiken\ ;
+版権所有 < hankenshoyuu\ ;
+一泊行軍 < ippakukougun\ ;
+青空市場 < aozorashijou\ ;
+開票結果 < kaihyoukekka\ ;
+単独講和 < tandokukouwa\ ;
+近代科学 < kindaikagaku\ ;
+無神論者 < mushinronsha\ ;
+市議会議員 < shigikaigiin\ ;
+現実的 < genjitsuteki\ ;
+画一的 < kakuitsuteki\ ;
+有形財産 < yuukeizaisan\ ;
+河岸段丘 < kagandankyuu\ ;
+太陽光線 < taiyoukousen\ ;
+卸酒販 < oroshishuhan\ ;
+億万長者 < okumanchouja\ ;
+化粧石鹸 < keshousekken\ ;
+言語療法 < gengoryouhou\ ;
+安定成長 < anteiseichou\ ;
+神権政治 < shinkenseiji\ ;
+親日家 < shin''nichika\ ;
+至上命令 < shijoumeirei\ ;
+内出血 < naishukketsu\ ;
+中央委員会 < chuuouiinkai\ ;
+潤筆料 < junpitsuryou\ ;
+音楽美学 < ongakubigaku\ ;
+労働大臣 < roudoudaijin\ ;
+田舎侍 < inakazamurai\ ;
+降格人事 < koukakujinji\ ;
+金釘流 < kanakugiryuu\ ;
+窒素肥料 < chissohiryou\ ;
+軍部独裁 < gunbudokusai\ ;
+公務疾病 < koumushippei\ ;
+花火大会 < hanabitaikai\ ;
+創作力 < sousakuryoku\ ;
+即戦力 < sokusenryoku\ ;
+行雲流水 < kouunryuusui\ ;
+反対訊問 < hantaijinmon\ ;
+方向転換 < houkoutenkan\ ;
+無線技術 < musengijutsu\ ;
+艮下艮上 < gonkagonshou\ ;
+括約筋 < katsuyakukin\ ;
+未来完了 < miraikanryou\ ;
+前進部隊 < zenshinbutai\ ;
+既約分数 < kiyakubunsuu\ ;
+説得力 < settokuryoku\ ;
+公営住宅 < koueijuutaku\ ;
+監査報告 < kansahoukoku\ ;
+鐘撞堂 < kanetsukidou\ ;
+月経周期 < gekkeishuuki\ ;
+科学雑誌 < kagakuzasshi\ ;
+通貨統合 < tsuukatougou\ ;
+対地速度 < taichisokudo\ ;
+官僚主義 < kanryoushugi\ ;
+旧形式 < kyuukeishiki\ ;
+黄玉石 < kougyokuseki\ ;
+御調子者 < ochoushimono\ ;
+実験室 < jikkenshitsu\ ;
+二足三文 < nisokusanmon\ ;
+酸性肥料 < sanseihiryou\ ;
+言文一致 < genbun''itchi\ ;
+密漁者 < mitsuryousha\ ;
+共同管理 < kyoudoukanri\ ;
+胃酸過多症 < isankatashou\ ;
+海外旅行 < kaigairyokou\ ;
+不審尋問 < fushinjinmon\ ;
+責任転嫁 < sekinintenka\ ;
+長期手形 < choukitegata\ ;
+潮汐表 < chousekihyou\ ;
+給与水準 < kyuuyosuijun\ ;
+白熱戦 < hakunetsusen\ ;
+従属節 < juuzokusetsu\ ;
+少数精鋭 < shousuuseiei\ ;
+転換社債 < tenkanshasai\ ;
+沿岸漁業 < engangyogyou\ ;
+押切帳 < oshikirichou\ ;
+鉱物学 < koubutsugaku\ ;
+交際社会 < kousaishakai\ ;
+制限事項 < seigenjikoku\ ;
+左心室 < sashinshitsu\ ;
+刑事責任 < keijisekinin\ ;
+混合火薬 < kongoukayaku\ ;
+極彩色 < gokusaishiki\ ;
+双務契約 < soumukeiyaku\ ;
+肝心要 < kanjinkaname\ ;
+古典学者 < kotengakusha\ ;
+生活扶助 < seikatsufujo\ ;
+建築業 < kenchikugyou\ ;
+拒食症 < kyoshokushou\ ;
+用益物権 < youekibukken\ ;
+熱電対 < netsudentsui\ ;
+出勤時間 < shukkinjikan\ ;
+鎖伝動 < kusaridendou\ ;
+拡大率 < kakudairitsu\ ;
+相関係数 < soukankeisuu\ ;
+都忘 < miyakowasure\ ;
+社会保障 < shakaihoshou\ ;
+協同動作 < kyoudoudousa\ ;
+情緒纒綿 < jouchotenmen\ ;
+立憲君主 < rikkenkunshu\ ;
+狂信的 < kyoushinteki\ ;
+表現力 < hyougenryoku\ ;
+中立面 < chuuritsumen\ ;
+旅券査証 < ryokensashou\ ;
+貝殻虫 < kaigaramushi\ ;
+落花狼藉 < rakkarouzeki\ ;
+一番星 < ichibanboshi\ ;
+化学製品 < kagakuseihin\ ;
+適性検査 < tekiseikensa\ ;
+賃借人 < chinshakunin\ ;
+生命科学 < seimeikagaku\ ;
+工作機械 < kousakukikai\ ;
+図書館学 < toshokangaku\ ;
+人口問題 < jinkoumondai\ ;
+御用学者 < goyougakusha\ ;
+気圧配置 < kiatsuhaichi\ ;
+時限爆弾 < jigenbakudan\ ;
+自然対数 < shizentaisuu\ ;
+夜間撮影 < yakansatsuei\ ;
+神経繊維 < shinkeisen''i\ ;
+流動負債 < ryuudoufusai\ ;
+最高記録 < saikoukiroku\ ;
+新規事業 < shinkijigyou\ ;
+姓名判断 < seimeihandan\ ;
+装飾的 < soushokuteki\ ;
+反対給付 < hantaikyuufu\ ;
+澱粉質 < denpunshitsu\ ;
+敗戦投手 < haisentoushu\ ;
+武漢三鎮 < bukansanchin\ ;
+電気陰性度 < denkiinseido\ ;
+一朝一夕 < itchouisseki\ ;
+無記名預金 < mukimeiyokin\ ;
+家内工業 < kanaikougyou\ ;
+千日草 < sen''nichisou\ ;
+浅学菲才 < sengakuhisai\ ;
+混合経済 < kongoukeizai\ ;
+市民団体 < shimindantai\ ;
+企業連合 < kigyourengou\ ;
+時代感覚 < jidaikankaku\ ;
+七五調 < shichigochou\ ;
+利己主義者 < rikoshugisha\ ;
+共同因子 < kyoudouinshi\ ;
+一意専心 < ichiisenshin\ ;
+欧米諸国 < oubeishokoku\ ;
+革命運動 < kakumeiundou\ ;
+純粋培養 < junsuibaiyou\ ;
+再三再四 < saisansaishi\ ;
+中国服 < chuugokufuku\ ;
+形而上学 < keijijougaku\ ;
+地方団体 < chihoudantai\ ;
+公民学校 < koumingakkou\ ;
+価格統制 < kakakutousei\ ;
+意匠登録 < ishoutouroku\ ;
+高天原 < takamagahara\ ;
+受動喫煙 < judoukitsuen\ ;
+製缶工場 < seikankoujou\ ;
+固形燃料 < kokeinenryou\ ;
+郵便為替 < yuubinkawase\ ;
+勘定係 < kanjougakari\ ;
+口頭弁論 < koutoubenron\ ;
+立体化学 < rittaikagaku\ ;
+拘束力 < kousokuryoku\ ;
+品行方正 < hinkouhousei\ ;
+沈澱物 < chindenbutsu\ ;
+道標 < michishirube\ ;
+器質的 < kishitsuteki\ ;
+販売価格 < hanbaikakaku\ ;
+恋愛結婚 < ren''aikekkon\ ;
+北米土人 < hokubeidojin\ ;
+千日紅 < sen''nichikou\ ;
+臨海学校 < rinkaigakkou\ ;
+一語一語 < ichigoichigo\ ;
+国家公務員 < kokkakoumuin\ ;
+半官半民 < hankanhanmin\ ;
+建築学 < kenchikugaku\ ;
+敗血症 < haiketsushou\ ;
+大国主義 < taikokushugi\ ;
+洋服箪笥 < youfukudansu\ ;
+一方通行 < ippoutsuukou\ ;
+参考文献 < sankoubunken\ ;
+信仰箇条 < shinkoukajou\ ;
+辻社 < tsujiyashiro\ ;
+十一月 < juuichigatsu\ ;
+袋戸棚 < fukurotodana\ ;
+拝物教 < haibutsukyou\ ;
+民間資本 < minkanshihon\ ;
+復讐心 < fukushuushin\ ;
+一汁一菜 < ichijuuissai\ ;
+十種競技 < jisshukyougi\ ;
+旧年末 < kyuunenmatsu\ ;
+失職者 < shisshokusha\ ;
+内割引 < uchiwaribiki\ ;
+希土類元素 < kidoruigenso\ ;
+平和共存 < heiwakyouzon\ ;
+単線運転 < tansen''unten\ ;
+事後承諾 < jigoshoudaku\ ;
+出産率 < shussanritsu\ ;
+写実的 < shajitsuteki\ ;
+映像信号 < eizoushingou\ ;
+安全対策 < anzentaisaku\ ;
+生産組合 < seisankumiai\ ;
+接続駅 < setsuzokueki\ ;
+居住水準 < kyojuusuijun\ ;
+製鉄業 < seitetsugyou\ ;
+算用数字 < san''yousuuji\ ;
+出生率 < shusseiritsu\ ;
+姉妹会社 < shimaigaisha\ ;
+選挙公報 < senkyokouhou\ ;
+仏像二座 < butsuzouniza\ ;
+観光旅行 < kankouryokou\ ;
+研究課題 < kenkyuukadai\ ;
+金拾万円 < kinjuuman''en\ ;
+屎尿処理 < shinyoushori\ ;
+着物姿 < kimonosugata\ ;
+商事会社 < shoujigaisha\ ;
+積極策 < sekkyokusaku\ ;
+集合場所 < shuugoubasho\ ;
+形容詞幹 < keiyoushikan\ ;
+条件反射 < joukenhansha\ ;
+小文節 < shoubunsetsu\ ;
+組織力 < soshikiryoku\ ;
+信徒伝動 < shintodendou\ ;
+有料道路 < yuuryoudouro\ ;
+業務妨害 < gyoumubougai\ ;
+阿片中毒 < ahenchuudoku\ ;
+細胞融合 < saibouyuugou\ ;
+断熱材 < dan''netsuzai\ ;
+名人気質 < meijinkatagi\ ;
+郵政大臣 < yuuseidaijin\ ;
+電気掃除機 < denkisoujiki\ ;
+人権擁護 < jinken''yougo\ ;
+兄弟喧嘩 < kyoudaigenka\ ;
+著作物 < chosakubutsu\ ;
+盲滅法 < mekurameppou\ ;
+巡航速度 < junkousokudo\ ;
+一夜大臣 < ichiyadaijin\ ;
+附着力 < fuchakuryoku\ ;
+獅子奮迅 < shishifunjin\ ;
+漂流木 < hyouryuuboku\ ;
+紳士靴 < shinshigutsu\ ;
+閨秀作家 < keishuusakka\ ;
+浚渫船 < shunsetsusen\ ;
+深山烏 < miyamagarasu\ ;
+専門学校 < senmongakkou\ ;
+改革過程 < kaikakukatei\ ;
+緊急措置 < kinkyuusochi\ ;
+画竜天睛 < garyoutensei\ ;
+一進一退 < isshin''ittai\ ;
+生臭物 < namagusamono\ ;
+定常状態 < teijoujoutai\ ;
+審判役 < shinpan''yaku\ ;
+指数関数 < shisuukansuu\ ;
+積極的 < sekkyokuteki\ ;
+試験科目 < shikenkamoku\ ;
+災害救助 < saigaikyuujo\ ;
+発売元 < hatsubaimoto\ ;
+冶金学者 < yakingakusha\ ;
+地方銀行 < chihouginkou\ ;
+仏頂面 < butchoudzura\ ;
+経済発展 < keizaihatten\ ;
+特殊兵器 < tokushuheiki\ ;
+海中公園 < kaichuukouen\ ;
+団体旅行 < dantairyokou\ ;
+三叉神経 < sansashinkei\ ;
+欲求不満 < yokkyuufuman\ ;
+若紫 < wakamurasaki\ ;
+終夜営業 < shuuyaeigyou\ ;
+地下組織 < chikasoshiki\ ;
+耐震家屋 < taishinkaoku\ ;
+正三角形 < seisankakkei\ ;
+走行車線 < soukoushasen\ ;
+空気調整 < kuukichousei\ ;
+運動神経 < undoushinkei\ ;
+受胎告知 < jutaikokuchi\ ;
+取引高 < torihikidaka\ ;
+解答用紙 < kaitouyoushi\ ;
+不所存者 < fushozonmono\ ;
+畳鰯 < tatamiiwashi\ ;
+闖入者 < chin''nyuusha\ ;
+毬栗頭 < igaguriatama\ ;
+建築中 < kenchikuchuu\ ;
+弱小国 < jakushoukoku\ ;
+加工産業 < kakousangyou\ ;
+発売中 < hatsubaichuu\ ;
+規格原案 < kikakugen''an\ ;
+和魂洋才 < wakon''yousai\ ;
+反戦運動 < hansen''undou\ ;
+諸行無常 < shogyoumujou\ ;
+契約期間 < keiyakukikan\ ;
+人文科学 < jinbunkagaku\ ;
+一人一人 < hitoribitori\ ;
+励振素子 < reishinsoshi\ ;
+復讐劇 < fukushuugeki\ ;
+宇宙工学 < uchuukougaku\ ;
+事前日付 < jizenhidzuke\ ;
+自家撞着 < jikadouchaku\ ;
+石灰肥料 < sekkaihiryou\ ;
+公益優先 < kouekiyuusen\ ;
+下仕事 < shitashigoto\ ;
+薔薇十字団 < barajuujidan\ ;
+日豊本線 < nippouhonsen\ ;
+石油化学 < sekiyukagaku\ ;
+消極性 < shoukyokusei\ ;
+相対速度 < soutaisokudo\ ;
+黒字倒産 < kurojitousan\ ;
+金欠病 < kinketsubyou\ ;
+聴視率 < choushiritsu\ ;
+内憂外患 < naiyuugaikan\ ;
+関数空間 < kansuukuukan\ ;
+付属病院 < fuzokubyouin\ ;
+臨床医学 < rinshouigaku\ ;
+米海兵隊 < beikaiheitai\ ;
+深山桜 < miyamazakura\ ;
+拱手傍観 < koushuboukan\ ;
+順法闘争 < junpoutousou\ ;
+質問者 < shitsumonsha\ ;
+戦闘陣地 < sentoujinchi\ ;
+一挙一動 < ikkyoichidou\ ;
+威嚇射撃 < ikakushageki\ ;
+実地試験 < jitchishiken\ ;
+中間景気 < chuukankeiki\ ;
+司教権座 < shikyoukenza\ ;
+空約束 < karayakusoku\ ;
+変更履歴 < henkourireki\ ;
+連戦連敗 < rensenrenpai\ ;
+歯槽膿漏 < shisounourou\ ;
+素粒子論 < soryuushiron\ ;
+衛星中継 < eiseichuukei\ ;
+接続詞 < setsuzokushi\ ;
+圧延工場 < atsuenkoujou\ ;
+分娩臥床 < bunbengashou\ ;
+人造絹糸 < jinzoukenshi\ ;
+痕跡器官 < konsekikikan\ ;
+抹香鯨 < makkoukujira\ ;
+蛍光塗料 < keikoutoryou\ ;
+公判調査 < kouhanchousa\ ;
+連絡会議 < renrakukaigi\ ;
+公教要理 < koukyouyouri\ ;
+花盗人 < hananusubito\ ;
+乾燥室 < kansoushitsu\ ;
+骨董品店 < kottouhinten\ ;
+十二指腸 < juunishichou\ ;
+盲暦 < mekuragoyomi\ ;
+財政問題 < zaiseimondai\ ;
+言語学者 < gengogakusha\ ;
+尿毒症 < nyoudokushou\ ;
+金融機関 < kin''yuukikan\ ;
+田園詩人 < den''enshijin\ ;
+等比級数 < touhikyuusuu\ ;
+腹鼓 < haratsudzumi\ ;
+道化役者 < doukeyakusha\ ;
+癇癪玉 < kanshakudama\ ;
+津津浦浦 < tsudzuuraura\ ;
+乾燥地帯 < kansouchitai\ ;
+音節主音 < onsetsushuon\ ;
+航海日誌 < koukainisshi\ ;
+半封建性 < hanhoukensei\ ;
+恋愛関係 < ren''aikankei\ ;
+成長過程 < seichoukatei\ ;
+連帯保証 < rentaihoshou\ ;
+心臓肥大 < shinzouhidai\ ;
+一人物 < ichijinbutsu\ ;
+協約国 < kyouyakukoku\ ;
+天壌無窮 < tenjoumukyuu\ ;
+全身麻酔 < zenshinmasui\ ;
+末代物 < matsudaimono\ ;
+回線交換 < kaisenkoukan\ ;
+輸入制限 < yunyuuseigen\ ;
+剃刀負 < kamisorimake\ ;
+一足先 < hitoashisaki\ ;
+果物籠 < kudamonokago\ ;
+世間話 < sekenbanashi\ ;
+行楽客 < kourakukyaku\ ;
+構造不況 < kouzoufukyou\ ;
+紋白蝶 < monshirochou\ ;
+入湯客 < nyuutoukyaku\ ;
+自己共役 < jikokyouyaku\ ;
+富士火山帯 < fujikazantai\ ;
+闇取引 < yamitorihiki\ ;
+構成分子 < kouseibunshi\ ;
+星座投影機 < seizatoueiki\ ;
+市場展開 < shijoutenkai\ ;
+店頭販売 < tentouhanbai\ ;
+進水式 < shinsuishiki\ ;
+仮払金 < karibaraikin\ ;
+紙屑籠 < kamikuzukago\ ;
+乾燥卵 < kansoutamago\ ;
+合唱隊員 < gasshoutaiin\ ;
+経費削減 < keihisakugen\ ;
+文芸復興 < bungeifukkou\ ;
+環太平洋 < kantaiheiyou\ ;
+名義書換 < meigikakikae\ ;
+緑内障 < ryokunaishou\ ;
+重大問題 < juudaimondai\ ;
+非科学的 < hikagakuteki\ ;
+限定戦争 < genteisensou\ ;
+極楽鳥 < gokurakuchou\ ;
+欧州委員会 < oushuuiinkai\ ;
+不在証明 < fuzaishoumei\ ;
+賃貸借 < chintaishaku\ ;
+医学博士 < igakuhakushi\ ;
+案内書呈 < an''naishotei\ ;
+専制君主 < senseikunshu\ ;
+勤務実績 < kinmujisseki\ ;
+機密事項 < kimitsujikou\ ;
+早期診断 < soukishindan\ ;
+告発者 < kokuhatsusha\ ;
+停止価格 < teishikakaku\ ;
+記憶容量 < kiokuyouryou\ ;
+出生過剰 < shusseikajou\ ;
+引退興行 < intaikougyou\ ;
+三味線弾 < shamisenhiki\ ;
+試験段階 < shikendankai\ ;
+白血病 < hakketsubyou\ ;
+軍事介入 < gunjikainyuu\ ;
+政治道徳 < seijidoutoku\ ;
+国営企業 < kokueikigyou\ ;
+帰巣本能 < kisouhon''nou\ ;
+両性具有 < ryouseiguyuu\ ;
+黄金万能 < ougonban''nou\ ;
+真珠質 < shinjushitsu\ ;
+担当課長 < tantoukachou\ ;
+混成競技 < konseikyougi\ ;
+労働攻勢 < roudoukousei\ ;
+片山里 < katayamazato\ ;
+独立祭 < dokuritsusai\ ;
+閑話休題 < kanwakyuudai\ ;
+内懐 < uchibutokoro\ ;
+予約係 < yoyakugakari\ ;
+役務賠償 < ekimubaishou\ ;
+平和産業 < heiwasangyou\ ;
+印象批評 < inshouhihyou\ ;
+停滞前線 < teitaizensen\ ;
+民間放送 < minkanhousou\ ;
+属地主義 < zokuchishugi\ ;
+上位互換性 < jouigokansei\ ;
+出版部数 < shuppanbusuu\ ;
+自動人形 < jidouningyou\ ;
+意志薄弱 < ishihakujaku\ ;
+心理戦争 < shinrisensou\ ;
+課税所得 < kazeishotoku\ ;
+流行作家 < ryuukousakka\ ;
+根気仕事 < konkishigoto\ ;
+黄緑色 < ouryokushoku\ ;
+軽犯罪法 < keihanzaihou\ ;
+揣摩憶測 < shimaokusoku\ ;
+改修工事 < kaishuukouji\ ;
+対抗意識 < taikouishiki\ ;
+前進力 < zenshinryoku\ ;
+道路交通 < dourokoutsuu\ ;
+法廷侮辱 < houteibujoku\ ;
+光学機械 < kougakukikai\ ;
+脱字記号 < datsujikigou\ ;
+確率論 < kakuritsuron\ ;
+独立班 < dokuritsuhan\ ;
+公有水面 < kouyuusuimen\ ;
+等圧式 < touatsushiki\ ;
+陰性反応 < inseihan''nou\ ;
+素人筋 < shiroutosuji\ ;
+美人局 < tsutsumotase\ ;
+借地料 < shakuchiryou\ ;
+黄熱病 < kounetsubyou\ ;
+均衡経済 < kinkoukeizai\ ;
+投票率 < touhyouritsu\ ;
+鰻丼 < unagidonburi\ ;
+蘭栽培法 < ransaibaihou\ ;
+武装集団 < busoushuudan\ ;
+脅迫的 < kyouhakuteki\ ;
+印鑑証明 < inkanshoumei\ ;
+域内貿易 < ikinaiboueki\ ;
+使徒行伝 < shitogyouden\ ;
+佳人薄命 < kajinhakumei\ ;
+放射線科医 < houshasenkai\ ;
+有体資産 < yuutaishisan\ ;
+対泰関係 < taitaikankei\ ;
+欧州連合 < oushuurengou\ ;
+女子学生 < joshigakusei\ ;
+団結心 < danketsushin\ ;
+単純平均 < tanjunheikin\ ;
+質問書 < shitsumonsho\ ;
+再度確認 < saidokakunin\ ;
+鬼面伝心 < kimendenshin\ ;
+貿易黒字 < bouekikuroji\ ;
+組合員証 < kumiaiinshou\ ;
+熟柿主義 < jukushishugi\ ;
+中立性 < chuuritsusei\ ;
+冷房装置 < reibousouchi\ ;
+現地生産 < genchiseisan\ ;
+新聞記者 < shinbunkisha\ ;
+告発状 < kokuhatsujou\ ;
+大山鳴動 < taizanmeidou\ ;
+波状攻撃 < hajoukougeki\ ;
+単記投票 < tankitouhyou\ ;
+一次関数 < ichijikansuu\ ;
+幼形進化 < youkeishinka\ ;
+反復説 < hanpukusetsu\ ;
+印刷術 < insatsujutsu\ ;
+能力給 < nouryokukyuu\ ;
+青物市場 < aomonoichiba\ ;
+学生運動 < gakuseiundou\ ;
+報復措置 < houfukusochi\ ;
+回復可能 < kaifukukanou\ ;
+正角定木 < seikakujougi\ ;
+歴史地理 < rekishichiri\ ;
+練習曲 < renshuukyoku\ ;
+年中無休 < nenjuumukyuu\ ;
+代数的和 < daisuutekiwa\ ;
+超能力 < chounouryoku\ ;
+左右相称 < sayuusoushou\ ;
+核分裂 < kakubunretsu\ ;
+帝国主義 < teikokushugi\ ;
+西洋松露 < seiyoushouro\ ;
+回転勘定 < kaitenkanjou\ ;
+依託射撃 < itakushageki\ ;
+正規表現 < seikihyougen\ ;
+独立権 < dokuritsuken\ ;
+総領事館 < souryoujikan\ ;
+待宵草 < matsuyoigusa\ ;
+一人娘 < hitorimusume\ ;
+盗難防止 < tounanboushi\ ;
+滅私奉公 < messhihoukou\ ;
+国税局 < kokuzeikyoku\ ;
+総合科学 < sougoukagaku\ ;
+拘束時間 < kousokujikan\ ;
+四方八方 < shihouhappou\ ;
+主要諸元 < shuyoushogen\ ;
+十分条件 < juubunjouken\ ;
+時代思潮 < jidaishichou\ ;
+代理投票 < dairitouhyou\ ;
+古典音楽 < koten''ongaku\ ;
+銀行強盗 < ginkougoutou\ ;
+一面識 < ichimenshiki\ ;
+出願者 < shutsugansha\ ;
+起爆装置 < kibakusouchi\ ;
+逮捕許諾 < taihokyodaku\ ;
+躾方 < shitsukekata\ ;
+歯牙疾患 < shigashikkan\ ;
+勿忘草 < wasurenagusa\ ;
+強綿薬 < kyoumen''yaku\ ;
+共同祖界 < kyoudousokai\ ;
+油断大敵 < yudantaiteki\ ;
+僻心 < higamigokoro\ ;
+専業農家 < sengyounouka\ ;
+熱可塑性 < netsukasosei\ ;
+梶木鮪 < kajikimaguro\ ;
+市有財産 < shiyuuzaisan\ ;
+国家賠償 < kokkabaishou\ ;
+失明者 < shitsumeisha\ ;
+静態総計 < seitaisoukei\ ;
+専門雑誌 < senmonzasshi\ ;
+弾丸列車 < danganressha\ ;
+女道楽 < on''nadouraku\ ;
+大正時代 < taishoujidai\ ;
+設計変更 < sekkeihenkou\ ;
+了解事項 < ryoukaijikou\ ;
+実験段階 < jikkendankai\ ;
+成長率 < seichouritsu\ ;
+確実性 < kakujitsusei\ ;
+官僚政治 < kanryouseiji\ ;
+人種問題 < jinshumondai\ ;
+演習問題 < enshuumondai\ ;
+労働組合 < roudoukumiai\ ;
+火炎放射器 < kaenhoushaki\ ;
+合同委員会 < goudouiinkai\ ;
+醇風美俗 < junpuubizoku\ ;
+椿油 < tsubakiabura\ ;
+黒装束 < kuroshouzoku\ ;
+柏餅 < kashiwamochi\ ;
+造反有理 < zouhan''yuuri\ ;
+消費性向 < shouhiseikou\ ;
+御用新聞 < goyoushinbun\ ;
+公定価格 < kouteikakaku\ ;
+堆積作用 < taisekisayou\ ;
+攻守同盟 < koushudoumei\ ;
+工科大学 < koukadaigaku\ ;
+社公連合 < shakourengou\ ;
+軍事教練 < gunjikyouren\ ;
+平和条約 < heiwajouyaku\ ;
+無資格者 < mushikakusha\ ;
+熱拡散 < netsukakusan\ ;
+相殺関税 < sousaikanzei\ ;
+即時停戦 < sokujiteisen\ ;
+柄頭 < tsukagashira\ ;
+測地衛星 < sokuchieisei\ ;
+空中浮遊 < kuuchuufuyuu\ ;
+忠臣蔵 < chuushingura\ ;
+動物学 < doubutsugaku\ ;
+一枚下 < ichimaishita\ ;
+信用詐欺 < shin''yousagi\ ;
+至東京 < itarutoukyou\ ;
+独立性 < dokuritsusei\ ;
+明眸皓歯 < meiboukoushi\ ;
+上等兵曹 < joutouheisou\ ;
+金利政策 < kinriseisaku\ ;
+草根木皮 < soukonmokuhi\ ;
+雨後雪 < amenochiyuki\ ;
+労働災害 < roudousaigai\ ;
+推定年齢 < suiteinenrei\ ;
+遺産管理人 < isankanrinin\ ;
+貿易依存度 < bouekiizondo\ ;
+日本文学 < nihonbungaku\ ;
+八目鰻 < yatsumeunagi\ ;
+実験科学 < jikkenkagaku\ ;
+労働委員会 < roudouiinkai\ ;
+天狗話 < tengubanashi\ ;
+案内係 < an''naigakari\ ;
+危険信号 < kikenshingou\ ;
+流行色 < ryuukoushoku\ ;
+鍾乳石 < shounyuuseki\ ;
+西欧諸国 < seioushokoku\ ;
+接続性 < setsuzokusei\ ;
+夜間営業 < yakan''eigyou\ ;
+模型飛行機 < mokeihikouki\ ;
+真実性 < shinjitsusei\ ;
+使徒承伝 < shitoshouden\ ;
+国家主席 < kokkashuseki\ ;
+雪見灯籠 < yukimidourou\ ;
+主席判事 < shusekihanji\ ;
+骨肉腫 < kotsunikushu\ ;
+犬畜生 < inuchikushou\ ;
+官製葉書 < kanseihagaki\ ;
+伝記文学 < denkibungaku\ ;
+制動放射 < seidouhousha\ ;
+領収証 < ryoushuushou\ ;
+法律行為 < houritsukoui\ ;
+共産国家 < kyousankokka\ ;
+教育機関 < kyouikukikan\ ;
+非常信号 < hijoushingou\ ;
+雪見障子 < yukimishouji\ ;
+機構改革 < kikoukaikaku\ ;
+昼光色 < chuukoushoku\ ;
+御玉杓子 < otamajakushi\ ;
+最終結果 < saishuukekka\ ;
+特恵関税 < tokkeikanzei\ ;
+地震予知 < jishin''yochi\ ;
+共同募金 < kyoudoubokin\ ;
+事務当局 < jimutoukyoku\ ;
+三号雑誌 < sangouzasshi\ ;
+漏洩電流 < roueidenryuu\ ;
+宣戦布告 < sensenfukoku\ ;
+共産地区 < kyousanchiku\ ;
+代用教員 < daiyoukyouin\ ;
+北極熊 < hokkyokuguma\ ;
+三角定規 < sankakujougi\ ;
+西洋将棋 < seiyoushougi\ ;
+信号無視 < shingoumushi\ ;
+土地改革 < tochikaikaku\ ;
+瀬戸物市 < setomonoichi\ ;
+司令室 < shireishitsu\ ;
+安倍川餅 < abekawamochi\ ;
+東欧諸国 < tououshokoku\ ;
+跡目相続 < atomesouzoku\ ;
+人工呼吸 < jinkoukokyuu\ ;
+俄盲 < niwakamekura\ ;
+航空郵便 < koukuuyuubin\ ;
+並行輸入 < heikouyunyuu\ ;
+経済格差 < keizaikakusa\ ;
+社会資本 < shakaishihon\ ;
+外交特権 < gaikoutokken\ ;
+印刷物 < insatsubutsu\ ;
+業務提携 < gyoumuteikei\ ;
+潜在意識 < senzaiishiki\ ;
+抽象的 < chuushouteki\ ;
+制御装置 < seigyosouchi\ ;
+白拍子 < shirabyoushi\ ;
+提出者 < teishutsusha\ ;
+所所方方 < shoshohoubou\ ;
+耐圧力 < taiatsuryoku\ ;
+凸面鏡 < totsumenkyou\ ;
+高血圧 < kouketsuatsu\ ;
+柱時計 < hashiradokei\ ;
+固体燃料 < kotainenryou\ ;
+傘歯車 < kasahaguruma\ ;
+鼻元思案 < hanamotojian\ ;
+右折禁止 < usetsukinshi\ ;
+軍国色 < gunkokushoku\ ;
+八郎潟 < hachirougata\ ;
+千思万考 < senshibankou\ ;
+依願退職 < igantaishoku\ ;
+三部合唱 < sanbugasshou\ ;
+言語中枢 < gengochuusuu\ ;
+現代文明 < gendaibunmei\ ;
+養護学級 < yougogakkyuu\ ;
+宿命的 < shukumeiteki\ ;
+回転運動 < kaiten''undou\ ;
+運輸業者 < un''yugyousha\ ;
+中心角 < chuushinkaku\ ;
+長須鯨 < nagasukujira\ ;
+石油公団 < sekiyukoudan\ ;
+局部麻酔 < kyokubumasui\ ;
+義太夫節 < gidayuubushi\ ;
+金属加工 < kinzokukakou\ ;
+悪性腫瘍 < akuseishuyou\ ;
+修了証 < shuuryoushou\ ;
+馬鹿正直 < bakashoujiki\ ;
+合弁会社 < goubengaisha\ ;
+段々畠 < dandanbatake\ ;
+公益事業 < kouekijigyou\ ;
+信号電波 < shingoudenpa\ ;
+多肉質 < tanikushitsu\ ;
+進入灯 < shin''nyuutou\ ;
+集約的 < shuuyakuteki\ ;
+兵六玉 < hyourokudama\ ;
+摩擦熱 < masatsunetsu\ ;
+内輪同志 < uchiwadoushi\ ;
+社会事業 < shakaijigyou\ ;
+技術力 < gijutsuryoku\ ;
+零細企業 < reisaikigyou\ ;
+仮溶接 < kariyousetsu\ ;
+国定公園 < kokuteikouen\ ;
+応力径路 < ouryokukeiro\ ;
+下位範疇化 < kaihanchuuka\ ;
+控訴棄却 < kousokikyaku\ ;
+通勤定期 < tsuukinteiki\ ;
+高品質 < kouhinshitsu\ ;
+歴史地図 < rekishichizu\ ;
+電子郵便 < denshiyuubin\ ;
+晒木綿 < sarashimomen\ ;
+伸縮法 < shinshukuhou\ ;
+人工知能 < jinkouchinou\ ;
+空中投下 < kuuchuutouka\ ;
+楽天主義 < rakutenshugi\ ;
+六連発 < rokurenpatsu\ ;
+海外投資 < kaigaitoushi\ ;
+併発症 < heihatsushou\ ;
+暗証番号 < anshoubangou\ ;
+欠乏症 < ketsuboushou\ ;
+枕詞 < makurakotoba\ ;
+関節技 < kansetsuwaza\ ;
+沈没船 < chinbotsusen\ ;
+候所 < souroutokoro\ ;
+容積率 < yousekiritsu\ ;
+桂男 < katsuraotoko\ ;
+主力株 < shuryokukabu\ ;
+年齢制限 < nenreiseigen\ ;
+価格戦争 < kakakusensou\ ;
+高速度鋼 < kousokudokou\ ;
+山懐 < yamafutokoro\ ;
+乾湿計 < kanshitsukei\ ;
+非営利団体 < hieiridantai\ ;
+火力支援 < karyokushien\ ;
+高速道路 < kousokudouro\ ;
+使用禁止 < shiyoukinshi\ ;
+冠婚葬祭 < kankonsousai\ ;
+水平尾翼 < suiheibiyoku\ ;
+丼飯 < donburimeshi\ ;
+決議機関 < ketsugikikan\ ;
+九星術 < kyuuseijutsu\ ;
+口八丁 < kuchihatchou\ ;
+連鎖反応 < rensahan''nou\ ;
+市民社会 < shiminshakai\ ;
+検察庁 < kensatsuchou\ ;
+表表紙 < omotebyoushi\ ;
+部分集合 < bubunshuugou\ ;
+四捨五入 < shishagonyuu\ ;
+受託会社 < jutakugaisha\ ;
+問題意識 < mondaiishiki\ ;
+金融公庫 < kin''yuukouko\ ;
+直取引 < jikitorihiki\ ;
+友達甲斐 < tomodachigai\ ;
+大学卒 < daigakusotsu\ ;
+一般教養 < ippankyouyou\ ;
+失語症 < shitsugoshou\ ;
+降雪量 < kousetsuryou\ ;
+安定恐慌 < anteikyoukou\ ;
+水素化物 < suisokabutsu\ ;
+環境変化 < kankyouhenka\ ;
+体格検査 < taikakukensa\ ;
+漁師町 < ryoushimachi\ ;
+化学合成 < kagakugousei\ ;
+平平凡凡 < heiheibonbon\ ;
+市場価格 < shijoukakaku\ ;
+物見櫓 < monomiyagura\ ;
+善隣関係 < zenrinkankei\ ;
+合成洗剤 < gouseisenzai\ ;
+観念主義 < kan''nenshugi\ ;
+通勤時間 < tsuukinjikan\ ;
+経済体制 < keizaitaisei\ ;
+住所氏名 < juushoshimei\ ;
+疾風怒濤 < shippuudotou\ ;
+医療材料 < iryouzairyou\ ;
+有機農業 < yuukinougyou\ ;
+妨害放送 < bougaihousou\ ;
+金属元素 < kinzokugenso\ ;
+取次店 < toritsugiten\ ;
+歯内療法 < shikaryouhou\ ;
+悪戯小僧 < itazurakozou\ ;
+全権大使 < zenkentaishi\ ;
+危急存亡 < kikyuusonbou\ ;
+宇宙中継 < uchuuchuukei\ ;
+非人間的 < hiningenteki\ ;
+受信装置 < jushinsouchi\ ;
+数値計算 < suuchikeisan\ ;
+片言隻語 < hengensekigo\ ;
+懐中時計 < kaichuudokei\ ;
+朧月夜 < oborodzukiyo\ ;
+競輪選手 < keirinsenshu\ ;
+享楽的 < kyourakuteki\ ;
+暗号解読 < angoukaidoku\ ;
+反動思想 < handoushisou\ ;
+実証主義 < jisshoushugi\ ;
+標準偏差 < hyoujunhensa\ ;
+資源問題 < shigenmondai\ ;
+運送業者 < unsougyousha\ ;
+行動地帯 < koudouchitai\ ;
+水力学 < suiryokugaku\ ;
+平等主義 < byoudoushugi\ ;
+取引先 < torihikisaki\ ;
+交代投手 < koutaitoushu\ ;
+丼鉢 < donburibachi\ ;
+入力線 < nyuuryokusen\ ;
+低血圧 < teiketsuatsu\ ;
+国家独占 < kokkadokusen\ ;
+土地改良 < tochikairyou\ ;
+環境基準 < kankyoukijun\ ;
+外交文書 < gaikoubunsho\ ;
+軽挙妄動 < keikyomoudou\ ;
+防虫加工 < bouchuukakou\ ;
+不在投票 < fuzaitouhyou\ ;
+伸縮性 < shinshukusei\ ;
+律令制 < ritsuryousei\ ;
+嫌煙運動 < ken''en''undou\ ;
+封緘葉書 < fuukanhagaki\ ;
+形式的 < keishikiteki\ ;
+泰然自若 < taizenjijaku\ ;
+敗北主義 < haibokushugi\ ;
+価格性能 < kakakuseinou\ ;
+書類送検 < shoruisouken\ ;
+人権問題 < jinkenmondai\ ;
+仲立人 < nakadachinin\ ;
+昇降口 < shoukouguchi\ ;
+一死報国 < isshihoukoku\ ;
+記録係 < kirokugakari\ ;
+工作物 < kousakubutsu\ ;
+練馬大根 < nerimadaikon\ ;
+一糸一毫 < isshiichigou\ ;
+特殊事情 < tokushujijou\ ;
+正直者 < shoujikimono\ ;
+老少不定 < roushoufutei\ ;
+中心的 < chuushinteki\ ;
+自習室 < jishuushitsu\ ;
+今明日 < konmyounichi\ ;
+相乗平均 < soujouheikin\ ;
+万年候補 < man''nenkouho\ ;
+安全教育 < anzenkyouiku\ ;
+無賃乗車 < muchinjousha\ ;
+片務契約 < henmukeiyaku\ ;
+一般大衆 < ippantaishuu\ ;
+古典文学 < kotenbungaku\ ;
+高校野球 < koukouyakyuu\ ;
+間接的 < kansetsuteki\ ;
+中華料理 < chuukaryouri\ ;
+出版物 < shuppanbutsu\ ;
+健康状態 < kenkoujoutai\ ;
+核軍縮 < kakugunshuku\ ;
+鹿児島県 < kagoshimaken\ ;
+準備状況 < junbijoukyou\ ;
+選外佳作 < sengaikasaku\ ;
+言語教育 < gengokyouiku\ ;
+同文同種 < doubundoushu\ ;
+給与体系 < kyuuyotaikei\ ;
+麻薬犯罪 < mayakuhanzai\ ;
+朝令暮改 < choureibokai\ ;
+一見識 < ichikenshiki\ ;
+攻撃力 < kougekiryoku\ ;
+互恵条約 < gokeijouyaku\ ;
+一国一票 < ikkokuippyou\ ;
+砲艦外交 < houkangaikou\ ;
+整髪料 < seihatsuryou\ ;
+流行言葉 < hayarikotoba\ ;
+交通機関 < koutsuukikan\ ;
+水銀電池 < suigindenchi\ ;
+倒事 < sakasamagoto\ ;
+追善供養 < tsuizenkuyou\ ;
+他力本願 < tarikihongan\ ;
+符号解読 < fugoukaidoku\ ;
+知能指数 < chinoushisuu\ ;
+亜熱帯気候 < anettaikikou\ ;
+当営業所 < toueigyousho\ ;
+職員会議 < shokuinkaigi\ ;
+言語特有 < gengotokuyuu\ ;
+最小限度 < saishougendo\ ;
+染井吉野 < someiyoshino\ ;
+完全犯罪 < kanzenhanzai\ ;
+暁闇 < akatsukiyami\ ;
+教育制度 < kyouikuseido\ ;
+戦国時代 < sengokujidai\ ;
+前駆症状 < zenkushoujou\ ;
+七面倒 < shichimendou\ ;
+耐湿性 < taishitsusei\ ;
+紫綬褒賞 < shijuhoushou\ ;
+一言半句 < ichigonhanku\ ;
+不法占有 < fuhousen''yuu\ ;
+仏文学 < futsubungaku\ ;
+家庭環境 < kateikankyou\ ;
+畑水練 < hatakesuiren\ ;
+勅撰集 < chokusenshuu\ ;
+七面体 < shichimentai\ ;
+舞台監督 < butaikantoku\ ;
+合成皮革 < gouseihikaku\ ;
+在宅勤務 < zaitakukinmu\ ;
+無政府主義 < museifushugi\ ;
+不在地主 < fuzaijinushi\ ;
+一宿一飯 < isshukuippan\ ;
+老人病院 < roujinbyouin\ ;
+片肺飛行 < katahaihikou\ ;
+対潜水艦 < taisensuikan\ ;
+警戒警報 < keikaikeihou\ ;
+効率的 < kouritsuteki\ ;
+累積赤字 < ruisekiakaji\ ;
+家族構成 < kazokukousei\ ;
+内柔外剛 < naijuugaigou\ ;
+属人主義 < zokujinshugi\ ;
+熱量計 < netsuryoukei\ ;
+硬軟両派 < kounanryouha\ ;
+座席番号 < zasekibangou\ ;
+空中浮揚 < kuuchuufuyou\ ;
+丁稚奉公 < detchiboukou\ ;
+一方交通 < ippoukoutsuu\ ;
+三日月形 < mikadzukikei\ ;
+移動図書館 < idoutoshokan\ ;
+検事総長 < kenjisouchou\ ;
+注釈者 < chuushakusha\ ;
+狭心症 < kyoushinshou\ ;
+新規投資 < shinkitoushi\ ;
+単語検索 < tangokensaku\ ;
+弥猛心 < yatakegokoro\ ;
+隠匿物資 < intokubusshi\ ;
+女人禁制 < nyoninkinsei\ ;
+大修道院 < daishuudouin\ ;
+森林公園 < shinrinkouen\ ;
+総花式 < soubanashiki\ ;
+協商国 < kyoushoukoku\ ;
+受験資格 < jukenshikaku\ ;
+七絃琴 < shichigenkin\ ;
+大和言葉 < yamatokotoba\ ;
+儀式主義 < gishikishugi\ ;
+造山運動 < zouzan''undou\ ;
+一般教育 < ippankyouiku\ ;
+爆裂弾 < bakuretsudan\ ;
+立体音響 < rittaionkyou\ ;
+宗教心 < shuukyoushin\ ;
+特集記事 < tokushuukiji\ ;
+付帯決議 < futaiketsugi\ ;
+製紙工場 < seishikoujou\ ;
+公共物 < koukyoubutsu\ ;
+救急箱 < kyuukyuubako\ ;
+救援投手 < kyuuentoushu\ ;
+財団法人 < zaidanhoujin\ ;
+民俗舞踊 < minzokubuyou\ ;
+戦争犯罪 < sensouhanzai\ ;
+難燃加工 < nan''nenkakou\ ;
+南船北馬 < nansenhokuba\ ;
+機能障害 < kinoushougai\ ;
+実行委員会 < jikkouiinkai\ ;
+狂詩曲 < kyoushikyoku\ ;
+日本国民 < nihonkokumin\ ;
+俄分限 < niwakabungen\ ;
+舞踏教師 < butoukyoushi\ ;
+林間学校 < rinkangakkou\ ;
+松毬 < matsupokkuri\ ;
+花魁道中 < oirandouchuu\ ;
+滑降競技 < kakkoukyougi\ ;
+在外公館 < zaigaikoukan\ ;
+宗教学 < shuukyougaku\ ;
+頭虱 < atamashirami\ ;
+一日中 < ichinichijuu\ ;
+地方選挙 < chihousenkyo\ ;
+求職者 < kyuushokusha\ ;
+畜殺場 < chikusatsuba\ ;
+合成化学 < gouseikagaku\ ;
+私製葉書 < shiseihagaki\ ;
+学年末 < gakunenmatsu\ ;
+不定積分 < futeisekibun\ ;
+正々堂々 < seiseidoudou\ ;
+半信半疑 < hanshinhangi\ ;
+穀象虫 < kokuzoumushi\ ;
+輸入超過 < yunyuuchouka\ ;
+無響室 < mukyoushitsu\ ;
+筍医者 < takenokoisha\ ;
+四元速度 < shigensokudo\ ;
+付属学校 < fuzokugakkou\ ;
+人工真珠 < jinkoushinju\ ;
+潛心力 < senshinryoku\ ;
+興行主 < kougyounushi\ ;
+人権団体 < jinkendantai\ ;
+本文批評 < honmonhihyou\ ;
+乾地農法 < kanchinouhou\ ;
+喧喧囂囂 < kenkengougou\ ;
+松林 < matsubayashi\ ;
+人定尋問 < jinteijinmon\ ;
+任期満了 < ninkimanryou\ ;
+競馬新聞 < keibashinbun\ ;
+修飾子 < shuushokushi\ ;
+収益率 < shuuekiritsu\ ;
+祝儀袋 < shuugibukuro\ ;
+電気工学 < denkikougaku\ ;
+婚姻届 < kon''intodoke\ ;
+供給過多 < kyoukyuukata\ ;
+口頭審理 < koutoushinri\ ;
+障害物 < shougaibutsu\ ;
+平和教育 < heiwakyouiku\ ;
+黒銹病 < kurosabibyou\ ;
+人物評 < jinbutsuhyou\ ;
+総合病院 < sougoubyouin\ ;
+上層気流 < jousoukiryuu\ ;
+老齢年金 < roureinenkin\ ;
+雑所得 < zatsushotoku\ ;
+剥製術 < hakuseijutsu\ ;
+演奏練習 < ensourenshuu\ ;
+独占欲 < dokusen''yoku\ ;
+仕掛地雷 < shikakejirai\ ;
+束柱 < tsukabashira\ ;
+回転資金 < kaitenshikin\ ;
+絶望的 < zetsubouteki\ ;
+暗中模索 < anchuumosaku\ ;
+天然色 < ten''nenshoku\ ;
+唯我独尊 < yuigadokuson\ ;
+集散主義 < shuusanshugi\ ;
+土産物屋 < miyagemonoya\ ;
+自給自足 < jikyuujisoku\ ;
+脂肪質 < shiboushitsu\ ;
+宗教劇 < shuukyougeki\ ;
+和平協定 < waheikyoutei\ ;
+仏心 < hotokegokoro\ ;
+出場者 < shutsujousha\ ;
+地方分権 < chihoubunken\ ;
+乾漆像 < kanshitsuzou\ ;
+市内観光 < shinaikankou\ ;
+放射能雨 < houshanouame\ ;
+内罰的 < naibatsuteki\ ;
+七角形 < shichikakkei\ ;
+諜報機関 < chouhoukikan\ ;
+即興曲 < sokkyoukyoku\ ;
+就学義務 < shuugakugimu\ ;
+航空優勢 < koukuuyuusei\ ;
+人才登用 < jinzaitouyou\ ;
+散発的 < sanpatsuteki\ ;
+複本位制 < fukuhon''isei\ ;
+生活保護 < seikatsuhogo\ ;
+集中豪雨 < shuuchuugouu\ ;
+徴兵免除 < chouheimenjo\ ;
+公害問題 < kougaimondai\ ;
+単身赴任 < tanshinfunin\ ;
+広口瓶 < hirokuchibin\ ;
+差別用語 < sabetsuyougo\ ;
+人口動態 < jinkoudoutai\ ;
+宇宙物理 < uchuubutsuri\ ;
+全面戦争 < zenmensensou\ ;
+経済状態 < keizaijoutai\ ;
+委託研究 < itakukenkyuu\ ;
+千辛万苦 < senshinbanku\ ;
+医療報酬 < iryouhoushuu\ ;
+水晶時計 < suishoudokei\ ;
+三文文士 < sanmonbunshi\ ;
+回転木馬 < kaitenmokuba\ ;
+不戦条約 < fusenjouyaku\ ;
+一生懸命 < isshoukenmei\ ;
+圧縮率 < asshukuritsu\ ;
+日進月歩 < nisshingeppo\ ;
+受託販売 < jutakuhanbai\ ;
+文化勲章 < bunkakunshou\ ;
+悠悠閑閑 < yuuyuukankan\ ;
+仏英辞典 < futsueijiten\ ;
+宿泊人 < shukuhakunin\ ;
+留守番電話 < rusubandenwa\ ;
+衛生工学 < eiseikougaku\ ;
+政見放送 < seikenhousou\ ;
+水性塗料 < suiseitoryou\ ;
+猩紅熱 < shoukounetsu\ ;
+先進兵器 < senshinheiki\ ;
+自己中心 < jikochuushin\ ;
+協力鋼 < kyouryokukou\ ;
+同和教育 < douwakyouiku\ ;
+学齢児童 < gakureijidou\ ;
+聖地巡礼 < seichijunrei\ ;
+社団法人 < shadanhoujin\ ;
+所番地 < tokorobanchi\ ;
+注釈書 < chuushakusho\ ;
+貨物輸送 < kamotsuyusou\ ;
+特徴量 < tokuchouryou\ ;
+正多角形 < seitakakukei\ ;
+懐工合 < futokoroguai\ ;
+電気容量 < denkiyouryou\ ;
+準禁治産 < junkinchisan\ ;
+描写力 < byousharyoku\ ;
+化学構造 < kagakukouzou\ ;
+生物学 < seibutsugaku\ ;
+一党独裁 < ittoudokusai\ ;
+無限小数 < mugenshousuu\ ;
+渾然一体 < konzen''ittai\ ;
+海底地震 < kaiteijishin\ ;
+博士課程 < hakushikatei\ ;
+平均寿命 < heikinjumyou\ ;
+市民運動 < shimin''undou\ ;
+記念出版 < kinenshuppan\ ;
+装置制御 < souchiseigyo\ ;
+原裁判所 < gensaibansho\ ;
+検討委員会 < kentouiinkai\ ;
+厚生大臣 < kouseidaijin\ ;
+油脂工業 < yushikougyou\ ;
+総支配人 < soushihainin\ ;
+読書力 < dokushoryoku\ ;
+日照時間 < nisshoujikan\ ;
+一般教書 < ippankyousho\ ;
+一部始終 < ichibushijuu\ ;
+関数原型 < kansuugenkei\ ;
+知識欲 < chishikiyoku\ ;
+三重宝冠 < sanjuuhoukan\ ;
+全速力 < zensokuryoku\ ;
+歓送迎会 < kansougeikai\ ;
+緊急避難 < kinkyuuhinan\ ;
+刹那主義 < setsunashugi\ ;
+工業地区 < kougyouchiku\ ;
+我楽多市 < garakutaichi\ ;
+衆議院議員 < shuugiingiin\ ;
+転写捺染 < tenshanassen\ ;
+自然災害 < shizensaigai\ ;
+深紅色 < shinkoushoku\ ;
+天井棧敷 < tenjousajiki\ ;
+先行条件 < senkoujouken\ ;
+月下氷人 < gekkahyoujin\ ;
+未年 < hitsujidoshi\ ;
+谷懐 < tanibutokoro\ ;
+選考委員会 < senkouiinkai\ ;
+医薬分業 < iyakubungyou\ ;
+雁骨 < kariganebone\ ;
+身元保証 < mimotohoshou\ ;
+軟着陸 < nanchakuriku\ ;
+純正科学 < junseikagaku\ ;
+二重道徳 < nijuudoutoku\ ;
+悲喜交交 < hikikomogomo\ ;
+緊急動議 < kinkyuudougi\ ;
+太陽電池 < taiyoudenchi\ ;
+街頭録音 < gaitourokuon\ ;
+国際機関 < kokusaikikan\ ;
+東口 < higashiguchi\ ;
+前傾姿勢 < zenkeishisei\ ;
+帰属意識 < kizokuishiki\ ;
+公衆便所 < koushuubenjo\ ;
+日本国内 < nihonkokunai\ ;
+色情狂 < shikijoukyou\ ;
+郵便袋 < yuubinbukuro\ ;
+選民思想 < senminshisou\ ;
+咀嚼運動 < soshakuundou\ ;
+記念写真 < kinenshashin\ ;
+診察台 < shinsatsudai\ ;
+泡沫的 < houmatsuteki\ ;
+火燵布団 < kotatsubuton\ ;
+仮釈放 < karishakuhou\ ;
+全面禁止 < zenmenkinshi\ ;
+北回帰線 < kitakaikisen\ ;
+連合艦隊 < rengoukantai\ ;
+急進的 < kyuushinteki\ ;
+人命救助 < jinmeikyuujo\ ;
+戦争状態 < sensoujoutai\ ;
+女子大学 < joshidaigaku\ ;
+国士無双 < kokushimusou\ ;
+平均余命 < heikin''yomei\ ;
+事例研究 < jireikenkyuu\ ;
+分散投資 < bunsantoushi\ ;
+診察券 < shinsatsuken\ ;
+極小値 < kyokushouchi\ ;
+偶像礼拝 < guuzoureihai\ ;
+効果覿面 < koukatekimen\ ;
+緊張緩和 < kinchoukanwa\ ;
+不許複製 < fukyofukusei\ ;
+北欧神話 < hokuoushinwa\ ;
+人事行政 < jinjigyousei\ ;
+昭和年間 < shouwanenkan\ ;
+国字問題 < kokujimondai\ ;
+供血者 < kyouketsusha\ ;
+国務大臣 < kokumudaijin\ ;
+杯事 < sakazukigoto\ ;
+言語障害 < gengoshougai\ ;
+再販価格 < saihankakaku\ ;
+平均株価 < heikinkabuka\ ;
+安息香酸 < ansokukousan\ ;
+譜代大名 < fudaidaimyou\ ;
+収入役 < shuunyuuyaku\ ;
+節用集 < setsuyoushuu\ ;
+配達料 < haitatsuryou\ ;
+類義語辞典 < ruigigojiten\ ;
+道路計画 < dourokeikaku\ ;
+古自動車 < furujidousha\ ;
+独枕 < hitorimakura\ ;
+容姿端麗 < youshitanrei\ ;
+新卒者 < shinsotsusha\ ;
+請負業者 < ukeoigyousha\ ;
+通常口語 < tsuujoukougo\ ;
+在外邦人 < zaigaihoujin\ ;
+収監力 < shuukanryoku\ ;
+開放経済 < kaihoukeizai\ ;
+百葉箱 < hyakuyoubako\ ;
+体操競技 < taisoukyougi\ ;
+労働同盟 < roudoudoumei\ ;
+国際都市 < kokusaitoshi\ ;
+有刺鉄線 < yuushitessen\ ;
+団体行動 < dantaikoudou\ ;
+応用数学 < ouyousuugaku\ ;
+協力者 < kyouryokusha\ ;
+交通巡査 < koutsuujunsa\ ;
+速達便 < sokutatsubin\ ;
+無敵艦隊 < mutekikantai\ ;
+航空会社 < koukuugaisha\ ;
+銀白色 < ginhakushoku\ ;
+大政奉還 < taiseihoukan\ ;
+不撓不屈 < futoufukutsu\ ;
+相関関係 < soukankankei\ ;
+同盟罷業 < doumeihigyou\ ;
+夾竹桃 < kyouchikutou\ ;
+軍備競争 < gunbikyousou\ ;
+形容動詞 < keiyoudoushi\ ;
+補給幹線 < hokyuukansen\ ;
+畜生道 < chikushoudou\ ;
+雪辱戦 < setsujokusen\ ;
+為替裁定 < kawasesaitei\ ;
+表現主義 < hyougenshugi\ ;
+東京着 < toukyouchaku\ ;
+電信局 < denshinkyoku\ ;
+文教地区 < bunkyouchiku\ ;
+青色症 < seishokushou\ ;
+広告主 < koukokunushi\ ;
+金属疲労 < kinzokuhirou\ ;
+右方高麗楽 < uhoukomagaku\ ;
+強制疎開 < kyouseisokai\ ;
+東京発 < toukyouhatsu\ ;
+警視総監 < keishisoukan\ ;
+代表社員 < daihyoushain\ ;
+借屋住居 < shakuyazumai\ ;
+徴兵制度 < chouheiseido\ ;
+短期大学 < tankidaigaku\ ;
+立体放送 < rittaihousou\ ;
+全身浴 < zenshin''yoku\ ;
+圧迫包帯 < appakuhoutai\ ;
+変質者 < henshitsusha\ ;
+通用期間 < tsuuyoukikan\ ;
+勉強時間 < benkyoujikan\ ;
+戸籍謄本 < kosekitouhon\ ;
+家庭教育 < kateikyouiku\ ;
+地震探鉱 < jishintankou\ ;
+避難梯子 < hinanbashigo\ ;
+夏木立 < natsukodachi\ ;
+社会奉仕 < shakaihoushi\ ;
+婚外性交 < kongaiseikou\ ;
+不可抗力 < fukakouryoku\ ;
+一塊 < hitokatamari\ ;
+警察庁 < keisatsuchou\ ;
+業界初 < gyoukaihatsu\ ;
+執行機関 < shikkoukikan\ ;
+勤務評定 < kinmuhyoutei\ ;
+天長節 < tenchousetsu\ ;
+常用対数 < jouyoutaisuu\ ;
+娘心 < musumegokoro\ ;
+大道芸人 < daidougeinin\ ;
+黒風白雨 < kokufuuhakuu\ ;
+肥厚性鼻炎 < hikouseibien\ ;
+銀行業務 < ginkougyoumu\ ;
+現地調査 < genchichousa\ ;
+遠洋航海 < en''youkoukai\ ;
+外交関係 < gaikoukankei\ ;
+私学助成 < shigakujosei\ ;
+産褥熱 < sanjokunetsu\ ;
+無痛分娩 < mutsuubunben\ ;
+不良債権 < furyousaiken\ ;
+地域時刻 < chiikijikoku\ ;
+凹版印刷 < ouhaninsatsu\ ;
+基幹産業 < kikansangyou\ ;
+路上駐車 < rojouchuusha\ ;
+単勝式 < tanshoushiki\ ;
+亜酸化窒素 < asankachisso\ ;
+首脳会談 < shunoukaidan\ ;
+独裁政治 < dokusaiseiji\ ;
+外交問題 < gaikoumondai\ ;
+頭頂骨 < touchoukotsu\ ;
+破産申請 < hasanshinsei\ ;
+郷土芸能 < kyoudogeinou\ ;
+後方地域 < kouhouchiiki\ ;
+太陽放射 < taiyouhousha\ ;
+壊血病 < kaiketsubyou\ ;
+西洋文明 < seiyoubunmei\ ;
+振替輸送 < furikaeyusou\ ;
+交換条件 < koukanjouken\ ;
+発行市場 < hakkoushijou\ ;
+一昨昨年 < sakiototoshi\ ;
+製菓業者 < seikagyousha\ ;
+看板娘 < kanbanmusume\ ;
+愛国団体 < aikokudantai\ ;
+変形規則 < henkeikisoku\ ;
+人気投票 < ninkitouhyou\ ;
+男女平等 < danjobyoudou\ ;
+郵便葉書 < yuubinhagaki\ ;
+編集局 < henshuukyoku\ ;
+晴後雨 < harenochiame\ ;
+市場撤退 < shijoutettai\ ;
+安定同位体 < anteidouitai\ ;
+定期検診 < teikikenshin\ ;
+流動食 < ryuudoushoku\ ;
+夏祭 < natsumatsuri\ ;
+団体競技 < dantaikyougi\ ;
+食道楽 < shokudouraku\ ;
+民間団体 < minkandantai\ ;
+封建思想 < houkenshisou\ ;
+航続距離 < kouzokukyori\ ;
+双峰駱駝 < souhourakuda\ ;
+百科全書 < hyakkazensho\ ;
+試行錯誤 < shikousakugo\ ;
+工場地帯 < koujouchitai\ ;
+毛織錦 < keorinishiki\ ;
+政治改革 < seijikaikaku\ ;
+市民会館 < shiminkaikan\ ;
+求人口 < kyuujinguchi\ ;
+有限会社 < yuugengaisha\ ;
+重商主義 < juushoushugi\ ;
+駅前広場 < ekimaehiroba\ ;
+終着駅 < shuuchakueki\ ;
+政治責任 < seijisekinin\ ;
+黒水熱 < kokusuinetsu\ ;
+仮進級 < karishinkyuu\ ;
+専業主婦 < sengyoushufu\ ;
+現場監督 < genbakantoku\ ;
+公転周期 < koutenshuuki\ ;
+口三味線 < kuchijamisen\ ;
+配達先 < haitatsusaki\ ;
+寝物語 < nemonogatari\ ;
+一昨昨夜 < issakusakuya\ ;
+若殿原 < wakatonobara\ ;
+血清肝炎 < kesseikan''en\ ;
+人跡未踏 < jinsekimitou\ ;
+強制保険 < kyouseihoken\ ;
+一望千里 < ichibousenri\ ;
+冷蔵室 < reizoushitsu\ ;
+刑務所長 < keimushochou\ ;
+場内放送 < jounaihousou\ ;
+朝三暮四 < chousanboshi\ ;
+福祉国家 < fukushikokka\ ;
+没交渉 < botsukoushou\ ;
+長刀一枝 < choutouisshi\ ;
+静脈瘤 < joumyakuryuu\ ;
+無線工学 < musenkougaku\ ;
+勝利投手 < shouritoushu\ ;
+天気概況 < tenkigaikyou\ ;
+骨組織 < kotsusoshiki\ ;
+千卒長 < sensotsuchou\ ;
+無常迅速 < mujoujinsoku\ ;
+行動科学 < koudoukagaku\ ;
+直轄地 < chokkatsuchi\ ;
+予防注射 < yobouchuusha\ ;
+昔式 < mukashishiki\ ;
+極秘情報 < gokuhijouhou\ ;
+封建社会 < houkenshakai\ ;
+一筋繩 < hitosujinawa\ ;
+労使紛争 < roushifunsou\ ;
+自学自習 < jigakujishuu\ ;
+不連続線 < furenzokusen\ ;
+治外法権 < chigaihouken\ ;
+経済外交 < keizaigaikou\ ;
+刃物三昧 < hamonozanmai\ ;
+光学繊維 < kougakusen''i\ ;
+就職難 < shuushokunan\ ;
+全休止符 < zenkyuushifu\ ;
+和洋折衷 < wayousetchuu\ ;
+清算会社 < seisangaisha\ ;
+廃藩置県 < haihanchiken\ ;
+臨床講義 < rinshoukougi\ ;
+説経節 < sekkyoubushi\ ;
+純日本風 < jun''nihonfuu\ ;
+文字符号系 < mojifugoukei\ ;
+挙国一致 < kyokokuitchi\ ;
+大衆運動 < taishuuundou\ ;
+心身症 < shinshinshou\ ;
+市場調査 < shijouchousa\ ;
+公開外交 < koukaigaikou\ ;
+面会室 < menkaishitsu\ ;
+独創力 < dokusouryoku\ ;
+妹娘 < imoutomusume\ ;
+大蔵大臣 < ookuradaijin\ ;
+修正予算 < shuuseiyosan\ ;
+始業式 < shigyoushiki\ ;
+行政機関 < gyouseikikan\ ;
+医療輸送機 < iryouyusouki\ ;
+来客筋 < raikyakusuji\ ;
+進学塾 < shingakujuku\ ;
+目的格 < mokutekikaku\ ;
+政教分離 < seikyoubunri\ ;
+搭乗案内 < toujouan''nai\ ;
+五人囃子 < goninbayashi\ ;
+独善主義 < dokuzenshugi\ ;
+航空書簡 < koukuushokan\ ;
+賛否同票 < sanpidouhyou\ ;
+人文学派 < jinbungakuha\ ;
+援用生産 < en''youseisan\ ;
+不耕作地 < fukousakuchi\ ;
+大使公邸 < taishikoutei\ ;
+決議事項 < ketsugijikou\ ;
+校正係 < kouseigakari\ ;
+力自慢 < chikarajiman\ ;
+過酸化水素 < kasankasuiso\ ;
+屋敷町 < yashikimachi\ ;
+温泉療法 < onsenryouhou\ ;
+一顰一笑 < ippin''isshou\ ;
+電気信号 < denkishingou\ ;
+霜柱 < shimobashira\ ;
+服飾品 < fukushokuhin\ ;
+膨張率 < bouchouritsu\ ;
+専管水域 < senkansuiiki\ ;
+天体崇拝 < tentaisuuhai\ ;
+良心的 < ryoushinteki\ ;
+相互参照 < sougosanshou\ ;
+割烹料理 < kappouryouri\ ;
+空念仏 < soranenbutsu\ ;
+郊外電車 < kougaidensha\ ;
+皆皆様 < minaminasama\ ;
+修正主義 < shuuseishugi\ ;
+能率給 < nouritsukyuu\ ;
+補強証拠 < hokyoushouko\ ;
+星印 < hoshijirushi\ ;
+堆積物 < taisekibutsu\ ;
+人材銀行 < jinzaiginkou\ ;
+近代音楽 < kindaiongaku\ ;
+裏面工作 < rimenkousaku\ ;
+法治社会 < houchishakai\ ;
+出納係 < suitougakari\ ;
+大盤振舞 < oobanburumai\ ;
+三岐代表 < sangidaihyou\ ;
+蓄積管 < chikusekikan\ ;
+独身者 < dokushinmono\ ;
+教員組合 < kyouinkumiai\ ;
+海難救助 < kainankyuujo\ ;
+録音放送 < rokuonhousou\ ;
+三者凡退 < sanshabontai\ ;
+石竹色 < sekichikuiro\ ;
+直腸癌 < chokuchougan\ ;
+突発的 < toppatsuteki\ ;
+日本海流 < nihonkairyuu\ ;
+史上最大 < shijousaidai\ ;
+芸術的 < geijutsuteki\ ;
+非晶質 < hishoushitsu\ ;
+記憶障害 < kiokushougai\ ;
+不労所得 < furoushotoku\ ;
+老荘思想 < rousoushisou\ ;
+玉蜀黍 < toumorokoshi\ ;
+軍需工業 < gunjukougyou\ ;
+小心者 < shoushinmono\ ;
+離合集散 < rigoushuusan\ ;
+良妻賢母 < ryousaikenbo\ ;
+軍司令官 < gunshireikan\ ;
+黒水引 < kuromizuhiki\ ;
+貿易会社 < bouekigaisha\ ;
+燐酸肥料 < rinsanhiryou\ ;
+感熱剤 < kan''netsuzai\ ;
+無限責任 < mugensekinin\ ;
+娯楽室 < gorakushitsu\ ;
+鎮痛薬 < chintsuuyaku\ ;
+科学思想 < kagakushisou\ ;
+四海同胞 < shikaidouhou\ ;
+代理委任状 < dairiininjou\ ;
+健康問題 < kenkoumondai\ ;
+感傷主義 < kanshoushugi\ ;
+馬頭観音 < batoukan''non\ ;
+天頂距離 < tenchoukyori\ ;
+能率的 < nouritsuteki\ ;
+調査部長 < chousabuchou\ ;
+合唱曲 < gasshoukyoku\ ;
+丹頂鶴 < tanchoudzuru\ ;
+行動命令 < koudoumeirei\ ;
+為替手形 < kawasetegata\ ;
+赤道気団 < sekidoukidan\ ;
+空中落下 < kuuchuurakka\ ;
+革新的 < kakushinteki\ ;
+定格荷重 < teikakukajuu\ ;
+為替銀行 < kawaseginkou\ ;
+官能主義 < kan''noushugi\ ;
+家庭教師 < kateikyoushi\ ;
+昼夜兼行 < chuuyakenkou\ ;
+客商売 < kyakushoubai\ ;
+一括式 < ikkatsushiki\ ;
+畜産業 < chikusangyou\ ;
+会社営業 < kaishaeigyou\ ;
+袋鼠 < fukuronezumi\ ;
+啓蒙思想 < keimoushisou\ ;
+非循環的 < hijunkanteki\ ;
+文民統制 < bunmintousei\ ;
+過酸化物 < kasankabutsu\ ;
+一念発起 < ichinenhokki\ ;
+出血死 < shukketsushi\ ;
+育成栽培 < ikuseisaibai\ ;
+現場検証 < genbakenshou\ ;
+時代考証 < jidaikoushou\ ;
+感度良好 < kandoryoukou\ ;
+白髪頭 < shiragaatama\ ;
+透明人間 < toumeiningen\ ;
+新形式 < shinkeishiki\ ;
+常套手段 < joutoushudan\ ;
+共有物 < kyouyuubutsu\ ;
+和平工作 < waheikousaku\ ;
+申告箱 < shinkokubako\ ;
+暗中飛躍 < anchuuhiyaku\ ;
+亜寒帯気候 < akantaikikou\ ;
+書留料 < kakitomeryou\ ;
+高音部記号 < kouonbukigou\ ;
+人民裁判 < jinminsaiban\ ;
+施行規則 < shikoukisoku\ ;
+半身不随 < hanshinfuzui\ ;
+希釈熱 < kishakunetsu\ ;
+普通名詞 < futsuumeishi\ ;
+山口県 < yamaguchiken\ ;
+執筆者 < shippitsusha\ ;
+対象範囲 < taishouhan''i\ ;
+人民戦線 < jinminsensen\ ;
+簡明強固 < kanmeikyouko\ ;
+可能選択 < kanousentaku\ ;
+屋内競技 < okunaikyougi\ ;
+多情仏心 < tajoubusshin\ ;
+単純計算 < tanjunkeisan\ ;
+公衆電話 < koushuudenwa\ ;
+商取引 < shoutorihiki\ ;
+花自動車 < hanajidousha\ ;
+位相幾何学 < isoukikagaku\ ;
+植物油 < shokubutsuyu\ ;
+放蕩息子 < houtoumusuko\ ;
+出血斑 < shukketsuhan\ ;
+企画室 < kikakushitsu\ ;
+侵入軍 < shin''nyuugun\ ;
+写真機店 < shashinkiten\ ;
+漁獲物 < gyokakubutsu\ ;
+三等軍曹 < santougunsou\ ;
+緊急逮捕 < kinkyuutaiho\ ;
+力学的 < rikigakuteki\ ;
+貞操蹂躪 < teisoujuurin\ ;
+心肺機能 < shinpaikinou\ ;
+約束事 < yakusokugoto\ ;
+雌雄同株 < shiyuudoushu\ ;
+順風満帆 < junpuumanpan\ ;
+学校法人 < gakkouhoujin\ ;
+変位電流 < hen''idenryuu\ ;
+前哨勤務 < zenshoukinmu\ ;
+経帷子 < kyoukatabira\ ;
+海洋科学 < kaiyoukagaku\ ;
+農民運動 < noumin''undou\ ;
+火消壷 < hikeshitsubo\ ;
+責任範囲 < sekininhan''i\ ;
+発光塗料 < hakkoutoryou\ ;
+感応作用 < kan''nousayou\ ;
+利休鼠 < rikyuunezumi\ ;
+子持昆布 < komochikonbu\ ;
+市営住宅 < shieijuutaku\ ;
+順応力 < jun''nouryoku\ ;
+事業部長 < jigyoubuchou\ ;
+大胆不敵 < daitanfuteki\ ;
+伊勢大神宮 < isedaijinguu\ ;
+天地創造 < tenchisouzou\ ;
+市場経済 < shijoukeizai\ ;
+続柄 < tsudzukigara\ ;
+予定期日 < yoteikijitsu\ ;
+医療技術 < iryougijutsu\ ;
+下半身 < shimohanshin\ ;
+表決権 < hyouketsuken\ ;
+択一的 < takuitsuteki\ ;
+使役動詞 < shiekidoushi\ ;
+流動物 < ryuudoubutsu\ ;
+陳述書 < chinjutsusho\ ;
+徴兵検査 < chouheikensa\ ;
+自家発電 < jikahatsuden\ ;
+追悼式 < tsuitoushiki\ ;
+同語反復 < dougohanpuku\ ;
+弁論大会 < benrontaikai\ ;
+一般投票 < ippantouhyou\ ;
+一人息子 < hitorimusuko\ ;
+飲食物 < inshokubutsu\ ;
+退役軍人 < taiekigunjin\ ;
+人生最悪 < jinseisaiaku\ ;
+印加電圧 < inkaden''atsu\ ;
+液性限界 < ekiseigenkai\ ;
+二酸化炭素 < nisankatanso\ ;
+栄養学者 < eiyougakusha\ ;
+昼食会 < chuushokukai\ ;
+都市交通 < toshikoutsuu\ ;
+畜産学 < chikusangaku\ ;
+交換教授 < koukankyouju\ ;
+学生時代 < gakuseijidai\ ;
+識字率 < shikijiritsu\ ;
+愛社精神 < aishaseishin\ ;
+老化現象 < roukagenshou\ ;
+鼻高高 < hanatakadaka\ ;
+社会問題 < shakaimondai\ ;
+盲管銃創 < moukanjuusou\ ;
+特別法 < tokubetsuhou\ ;
+東海地方 < toukaichihou\ ;
+出漁権 < shutsugyoken\ ;
+発行会社 < hakkougaisha\ ;
+近所合壁 < kinjogappeki\ ;
+音声圧縮 < onseiasshuku\ ;
+民族主義 < minzokushugi\ ;
+専門科目 < senmonkamoku\ ;
+減量経営 < genryoukeiei\ ;
+睡眠不足 < suiminbusoku\ ;
+運送契約 < unsoukeiyaku\ ;
+舞台中継 < butaichuukei\ ;
+下層階級 < kasoukaikyuu\ ;
+鳶職人 < tobishokunin\ ;
+経済闘争 < keizaitousou\ ;
+不良少女 < furyoushoujo\ ;
+応援演説 < ouen''enzetsu\ ;
+鎮魂曲 < chinkonkyoku\ ;
+行動半径 < koudouhankei\ ;
+出演料 < shutsuenryou\ ;
+地震地帯 < jishinchitai\ ;
+通過貿易 < tsuukaboueki\ ;
+統計年鑑 < toukeinenkan\ ;
+人手不足 < hitodebusoku\ ;
+通俗的 < tsuuzokuteki\ ;
+十中八九 < jitchuuhakku\ ;
+滋強飲料 < jikyouinryou\ ;
+四角号碼 < shikakugouma\ ;
+固定観念 < koteikan''nen\ ;
+低音部記号 < teionbukigou\ ;
+経験科学 < keikenkagagu\ ;
+荷電粒子 < kadenryuushi\ ;
+人工生命 < jinkouseimei\ ;
+電気料金 < denkiryoukin\ ;
+往復葉書 < oufukuhagaki\ ;
+人造石油 < jinzousekiyu\ ;
+土蛍 < tsuchibotaru\ ;
+天竺牡丹 < tenjikubotan\ ;
+御馳走様 < gochisousama\ ;
+侵入者 < shin''nyuusha\ ;
+天路歴程 < tenrorekitei\ ;
+共同便所 < kyoudoubenjo\ ;
+暗殺未遂 < ansatsumisui\ ;
+未払費用 < miharaihiyou\ ;
+空出張 < karashutchou\ ;
+相互配属 < sougohaizoku\ ;
+破顔一笑 < hagan''isshou\ ;
+血圧計 < ketsuatsukei\ ;
+胆汁質 < tanjuushitsu\ ;
+治療効果 < chiryoukouka\ ;
+猟官制度 < ryoukanseido\ ;
+収容患者 < shuuyoukanja\ ;
+武陵桃源 < buryoutougen\ ;
+人民所有 < jinminshoyuu\ ;
+反射係数 < hanshakeisuu\ ;
+工業意匠 < kougyouishou\ ;
+相対評価 < soutaihyouka\ ;
+経済問題 < keizaimondai\ ;
+黄碧玉 < kouhekigyoku\ ;
+隔月刊 < kakugetsukan\ ;
+三十六計 < sanjuurokkei\ ;
+残業手当 < zangyouteate\ ;
+投球動作 < toukyuudousa\ ;
+防災訓練 < bousaikunren\ ;
+耐用年数 < taiyounensuu\ ;
+民定憲法 < minteikenpou\ ;
+福利厚生 < fukurikousei\ ;
+消耗品費 < shoumouhinhi\ ;
+学級閉鎖 < gakkyuuheisa\ ;
+人生記録 < jinseikiroku\ ;
+実利主義 < jitsurishugi\ ;
+復原力 < fukugenryoku\ ;
+竣工式 < shunkoushiki\ ;
+公使館員 < koushikan''in\ ;
+競争率 < kyousouritsu\ ;
+積立金 < tsumitatekin\ ;
+植物園 < shokubutsuen\ ;
+進化論者 < shinkaronsha\ ;
+空中機動 < kuuchuukidou\ ;
+投票結果 < touhyoukekka\ ;
+前提条件 < zenteijouken\ ;
+外人選手 < gaijinsenshu\ ;
+巨大分子 < kyodaibunshi\ ;
+贋造紙幣 < ganzoushihei\ ;
+独身寮 < dokushinryou\ ;
+検定試験 < kenteishiken\ ;
+藍綬褒章 < ranjuhoushou\ ;
+司法試験 < shihoushiken\ ;
+柔軟体操 < juunantaisou\ ;
+不良導体 < furyoudoutai\ ;
+対戦車砲 < taisenshahou\ ;
+入札者 < nyuusatsusha\ ;
+死体解剖 < shitaikaibou\ ;
+兼業農家 < kengyounouka\ ;
+新入生 < shin''nyuusei\ ;
+公開録音 < koukairokuon\ ;
+海軍大臣 < kaigundaijin\ ;
+南京花火 < nankinhanabi\ ;
+神謡集 < shin''youshuu\ ;
+扁桃腺炎 < hentousen''en\ ;
+中央銀行 < chuuouginkou\ ;
+両極端 < ryoukyokutan\ ;
+圧縮空気 < asshukukuuki\ ;
+帳面面 < choumendzura\ ;
+見積書 < mitsumorisho\ ;
+研削代 < kensakushiro\ ;
+決済手段 < kessaishudan\ ;
+代理業者 < dairigyousha\ ;
+配置転換 < haichitenkan\ ;
+禁治産者 < kinchisansha\ ;
+活動的 < katsudouteki\ ;
+全身不随 < zenshinfuzui\ ;
+愛他主義者 < aitashugisha\ ;
+全能力 < zen''nouryoku\ ;
+運転技術 < untengijutsu\ ;
+電子音楽 < denshiongaku\ ;
+千万無量 < senmanmuryou\ ;
+自殺幇助 < jisatsuhoujo\ ;
+代数関数 < daisuukansuu\ ;
+音響設計 < onkyousekkei\ ;
+乳様突起 < nyuuyoutokki\ ;
+事前割当 < jizenwariate\ ;
+兵役免状 < heiekimenjou\ ;
+天涯孤独 < tengaikodoku\ ;
+不承不承 < fushoubushou\ ;
+無所属現 < mushozokugen\ ;
+木造家屋 < mokuzoukaoku\ ;
+養老年金 < yourounenkin\ ;
+事前研修 < jizenkenshuu\ ;
+食肉類 < shokunikurui\ ;
+体系文法 < taikeibunpou\ ;
+肺活量 < haikatsuryou\ ;
+雌雄同体 < shiyuudoutai\ ;
+開票率 < kaihyouritsu\ ;
+常識的 < joushikiteki\ ;
+構造汚職 < kouzouoshoku\ ;
+基礎知識 < kisochishiki\ ;
+収容力 < shuuyouryoku\ ;
+地域紛争 < chiikifunsou\ ;
+単峰駱駝 < tanpourakuda\ ;
+象徴的 < shouchouteki\ ;
+人気商売 < ninkishoubai\ ;
+千姿万態 < senshibantai\ ;
+公有財産 < kouyuuzaisan\ ;
+自慢話 < jimanbanashi\ ;
+招待客 < shoutaikyaku\ ;
+先行投資 < senkoutoushi\ ;
+製造工程 < seizoukoutei\ ;
+自由競争 < jiyuukyousou\ ;
+川魚料理 < kawauoryouri\ ;
+交響曲 < koukyoukyoku\ ;
+電解質 < denkaishitsu\ ;
+現代科学 < gendaikagaku\ ;
+平底船 < hirasokobune\ ;
+産業機械 < sangyoukikai\ ;
+不合格者 < fugoukakusha\ ;
+暑中見舞 < shochuumimai\ ;
+誘導尋問 < yuudoujinmon\ ;
+就任式 < shuuninshiki\ ;
+冷凍室 < reitoushitsu\ ;
+瑠璃唐草 < rurikarakusa\ ;
+定形動詞 < teikeidoushi\ ;
+配膳室 < haizenshitsu\ ;
+人間関係 < ningenkankei\ ;
+赤十字社 < sekijuujisha\ ;
+広島県 < hiroshimaken\ ;
+暦改正 < koyomikaisei\ ;
+無産階級 < musankaikyuu\ ;
+徳川方 < tokugawagata\ ;
+六法全書 < roppouzensho\ ;
+集権排除 < shuukenhaijo\ ;
+国際会議 < kokusaikaigi\ ;
+児童文学 < jidoubungaku\ ;
+軍事秘密 < gunjihimitsu\ ;
+仮入学 < karinyuugaku\ ;
+任意出頭 < nin''ishuttou\ ;
+付随現象 < fuzuigenshou\ ;
+原形質 < genkeishitsu\ ;
+唇歯輔車 < shinshihosha\ ;
+原因調査 < gen''inchousa\ ;
+担当部長 < tantoubuchou\ ;
+主任教授 < shuninkyouju\ ;
+軍備削減 < gunbisakugen\ ;
+公開裁判 < koukaisaiban\ ;
+分解修理 < bunkaishuuri\ ;
+百花斉放 < hyakkaseihou\ ;
+黒色腫 < kokushokushu\ ;
+人造真珠 < jinzoushinju\ ;
+卒業生 < sotsugyousei\ ;
+神経過敏 < shinkeikabin\ ;
+送金為替 < soukinkawase\ ;
+回復力 < kaifukuryoku\ ;
+厳正科学 < genseikagaku\ ;
+入会式 < nyuukaishiki\ ;
+司法書士 < shihoushoshi\ ;
+在外資産 < zaigaishisan\ ;
+法律違反 < houritsuihan\ ;
+向心力 < koushinryoku\ ;
+玉虫色 < tamamushiiro\ ;
+特別号 < tokubetsugou\ ;
+進路指導 < shinroshidou\ ;
+予備協約 < yobikyouyaku\ ;
+脱毛症 < datsumoushou\ ;
+始球式 < shikyuushiki\ ;
+教育玩具 < kyouikugangu\ ;
+文法規則 < bunpoukisoku\ ;
+何色搨 < nanshokuzuri\ ;
+完了時制 < kanryoujisei\ ;
+信託業 < shintakugyou\ ;
+事実誤認 < jijitsugonin\ ;
+軍需産業 < gunjusangyou\ ;
+土煙 < tsuchikemuri\ ;
+僻根性 < higamikonjou\ ;
+奪三振 < datsusanshin\ ;
+鉄火丼 < tekkadonburi\ ;
+自然科学 < shizenkagaku\ ;
+大福餅 < daifukumochi\ ;
+武者修行 < mushashugyou\ ;
+侵略軍 < shinryakugun\ ;
+生成文法 < seiseibunpou\ ;
+反物質 < hanbusshitsu\ ;
+司法大臣 < shihoudaijin\ ;
+主意主義者 < shuishugisha\ ;
+制球力 < seikyuuryoku\ ;
+御用商人 < goyoushounin\ ;
+使徒信条 < shitoshinjou\ ;
+証拠物件 < shoukobukken\ ;
+陸産物 < rikusanbutsu\ ;
+予備知識 < yobichishiki\ ;
+合名会社 < goumeigaisha\ ;
+共同一致 < kyoudouitchi\ ;
+武力政治 < buryokuseiji\ ;
+軌道修正 < kidoushuusei\ ;
+農作物 < nousakubutsu\ ;
+湾岸戦争 < wangansensou\ ;
+合格祈願 < goukakukigan\ ;
+化学肥料 < kagakuhiryou\ ;
+竜舌蘭 < ryuuzetsuran\ ;
+独裁国家 < dokusaikokka\ ;
+低利金融 < teirikin''yuu\ ;
+営業畑 < eigyoubatake\ ;
+土類金属 < doruikinzoku\ ;
+肉食獣 < nikushokujuu\ ;
+共和政体 < kyouwaseitai\ ;
+法律学 < houritsugaku\ ;
+法廷闘争 < houteitousou\ ;
+再生装置 < saiseisouchi\ ;
+新発明 < shinhatsumei\ ;
+北方領土 < hoppouryoudo\ ;
+逗留客 < touryuukyaku\ ;
+全廃論者 < zenpaironsha\ ;
+累進課税 < ruishinkazei\ ;
+国防会議 < kokuboukaigi\ ;
+徳島県 < tokushimaken\ ;
+二百十日 < nihyakutooka\ ;
+事前通報 < jizentsuuhou\ ;
+社会意識 < shakaiishiki\ ;
+援助凍結 < enjotouketsu\ ;
+清水寺 < kiyomizudera\ ;
+安全第一 < anzendaiichi\ ;
+個人攻撃 < kojinkougeki\ ;
+悪戯坊主 < itazurabouzu\ ;
+遊動円木 < yuudouenboku\ ;
+円形劇場 < enkeigekijou\ ;
+熱容量 < netsuyouryou\ ;
+文筆業 < bunpitsugyou\ ;
+芭蕉梶木 < bashoukajiki\ ;
+脳出血 < noushukketsu\ ;
+露出症 < roshutsushou\ ;
+高足蟹 < takaashigani\ ;
+情報科学 < jouhoukagaku\ ;
+私娼窟 < shishoukutsu\ ;
+傷害保険 < shougaihoken\ ;
+破産宣告 < hasansenkoku\ ;
+癩病患者 < raibyoukanja\ ;
+黒色癌 < kokushokugan\ ;
+因子分析 < inshibunseki\ ;
+貧血症 < hinketsushou\ ;
+認識票 < ninshikihyou\ ;
+待合政治 < machiaiseiji\ ;
+末法思想 < mappoushisou\ ;
+航続時間 < kouzokujikan\ ;
+専売特許 < senbaitokkyo\ ;
+同種同文 < doushudoubun\ ;
+鉄道事故 < tetsudoujiko\ ;
+真理関数 < shinrikansuu\ ;
+疫病神 < yakubyougami\ ;
+露出狂 < roshutsukyou\ ;
+子子孫孫 < shishisonson\ ;
+八丈島 < hachijoujima\ ;
+降神術 < koushinjutsu\ ;
+英国石油 < eikokusekiyu\ ;
+保護観察 < hogokansatsu\ ;
+秘密兵器 < himitsuheiki\ ;
+郵便貯金 < yuubinchokin\ ;
+哲学者 < tetsugakusha\ ;
+二重人格 < nijuujinkaku\ ;
+白衣明妃 < byakuemyouhi\ ;
+生体解剖 < seitaikaibou\ ;
+爫 < tsumekanmuri\ ;
+力一杯 < chikaraippai\ ;
+出品物 < shuppinbutsu\ ;
+立太子礼 < rittaishirei\ ;
+実際問題 < jissaimondai\ ;
+公転速度 < koutensokudo\ ;
+一石二鳥 < issekinichou\ ;
+教育課程 < kyouikukatei\ ;
+人代名詞 < jindaimeishi\ ;
+次酸化炭素 < jisankatanso\ ;
+灰白色 < kaihakushoku\ ;
+独居室 < dokkyoshitsu\ ;
+優生結婚 < yuuseikekkon\ ;
+口頭試問 < koutoushimon\ ;
+交通安全 < koutsuuanzen\ ;
+接待係 < settaigakari\ ;
+万年雪 < man''nen''yuki\ ;
+狂想曲 < kyousoukyoku\ ;
+和文英訳 < wabun''eiyaku\ ;
+本家本元 < honkehonmoto\ ;
+盲目飛行 < moumokuhikou\ ;
+滞空記録 < taikuukiroku\ ;
+立体裁断 < rittaisaidan\ ;
+国内事情 < kokunaijijou\ ;
+侵略者 < shinryakusha\ ;
+接触事故 < sesshokujiko\ ;
+町役人 < machiyakunin\ ;
+乾燥腐朽 < kansoufukyuu\ ;
+蚰蜒眉 < gejigejimayu\ ;
+合資会社 < goushigaisha\ ;
+彫刻具座 < choukokuguza\ ;
+治安維持法 < chian''ijihou\ ;
+学習塾 < gakushuujuku\ ;
+戸外撮影 < kogaisatsuei\ ;
+応急修理 < oukyuushuuri\ ;
+麻酔注射 < masuichuusha\ ;
+末端価格 < mattankakaku\ ;
+偶像崇拝 < guuzousuuhai\ ;
+普通列車 < futsuuressha\ ;
+新発売 < shinhatsubai\ ;
+和平交渉 < waheikoushou\ ;
+競争力 < kyousouryoku\ ;
+循環論法 < junkanronpou\ ;
+失名氏 < shitsumeishi\ ;
+表座敷 < omotezashiki\ ;
+飽食暖衣 < houshokudani\ ;
+機械工業 < kikaikougyou\ ;
+無限集合 < mugenshuugou\ ;
+徴発令 < chouhatsurei\ ;
+有価証券 < yuukashouken\ ;
+懐銭 < futokorozeni\ ;
+井戸端会議 < idobatakaigi\ ;
+副収入 < fukushuunyuu\ ;
+恐喝罪 < kyoukatsuzai\ ;
+屈折軸 < kussetsujiku\ ;
+合切袋 < gassaibukuro\ ;
+消息通 < shousokutsuu\ ;
+総統選挙 < soutousenkyo\ ;
+株主権 < kabunushiken\ ;
+人気役者 < ninkiyakusha\ ;
+市内通話 < shinaitsuuwa\ ;
+占有率 < sen''yuuritsu\ ;
+南京袋 < nankinbukuro\ ;
+高高指 < takatakayubi\ ;
+白色光 < hakushokukou\ ;
+一等陸士 < ittourikushi\ ;
+講和条約 < kouwajouyaku\ ;
+工業都市 < kougyoutoshi\ ;
+卓上電話 < takujoudenwa\ ;
+客観主義 < kyakkanshugi\ ;
+共同謀議 < kyoudoubougi\ ;
+購買組合 < koubaikumiai\ ;
+請負仕事 < ukeoishigoto\ ;
+鋸鮫 < nokogirizame\ ;
+雇用契約 < koyoukeiyaku\ ;
+当意即妙 < touisokumyou\ ;
+日米協 < nichibeikyou\ ;
+労働市場 < roudoushijou\ ;
+士官学校 < shikangakkou\ ;
+名誉会長 < meiyokaichou\ ;
+度数分布図 < dosuubunpuzu\ ;
+屈折角 < kussetsukaku\ ;
+殺人的 < satsujinteki\ ;
+平均給与 < heikinkyuuyo\ ;
+左団扇 < hidariuchiwa\ ;
+防塵室 < boujinshitsu\ ;
+小便小僧 < shoubenkozou\ ;
+土埃 < tsuchibokori\ ;
+人権蹂躪 < jinkenjuurin\ ;
+圧縮酸素 < asshukusanso\ ;
+含有率 < gan''yuuritsu\ ;
+年次報告 < nenjihoukoku\ ;
+脈搏数 < myakuhakusuu\ ;
+郵便番号 < yuubinbangou\ ;
+推進力 < suishinryoku\ ;
+聾桟敷 < tsunbosajiki\ ;
+計算問題 < keisanmondai\ ;
+総合雑誌 < sougouzasshi\ ;
+縮緬皺 < chirimenjiwa\ ;
+土地収用 < tochishuuyou\ ;
+広告効果 < koukokukouka\ ;
+殺人狂 < satsujinkyou\ ;
+輸出入 < yushutsunyuu\ ;
+幼児教育 < youjikyouiku\ ;
+近所迷惑 < kinjomeiwaku\ ;
+観客席 < kankyakuseki\ ;
+無限級数 < mugenkyuusuu\ ;
+一刻千金 < ikkokusenkin\ ;
+陪審制度 < baishinseido\ ;
+編集機能 < henshuukinou\ ;
+先取特権 < senshutokken\ ;
+専門分野 < senmonbun''ya\ ;
+忄 < ritsushinben\ ;
+命冥加 < inochimyouga\ ;
+担子菌類 < tanshikinrui\ ;
+関係強化 < kankeikyouka\ ;
+森林浴 < shinrin''yoku\ ;
+攻撃部隊 < kougekibutai\ ;
+秘密会議 < himitsukaigi\ ;
+自動車事故 < jidoushajiko\ ;
+消音装置 < shouonsouchi\ ;
+満州事変 < manshuujihen\ ;
+爆発管 < bakuhatsukan\ ;
+資産評価 < shisanhyouka\ ;
+出版許可 < shuppankyoka\ ;
+黒八丈 < kurohachijou\ ;
+国内需要 < kokunaijuyou\ ;
+半身浴 < hanshin''yoku\ ;
+千万長者 < senbanchouja\ ;
+化学試験 < kagakushiken\ ;
+細胞培養 < saiboubaiyou\ ;
+音韻組織 < on''insoshiki\ ;
+座標変換 < zahyouhenkan\ ;
+機械工学 < kikaikougaku\ ;
+第三部長 < daisanbuchou\ ;
+奇岩怪石 < kigankaiseki\ ;
+耐風構造 < taifuukouzou\ ;
+暗緑色 < anryokushoku\ ;
+石鹸工場 < sekkenkoujou\ ;
+在郷軍人 < zaigougunjin\ ;
+幽霊会社 < yuureigaisha\ ;
+環境破壊 < kankyouhakai\ ;
+国際主義 < kokusaishugi\ ;
+御節料理 < osechiryouri\ ;
+筋肉痛 < kin''nikutsuu\ ;
+修理工場 < shuurikoujou\ ;
+職能給 < shokunoukyuu\ ;
+新生物 < shinseibutsu\ ;
+凌霄花 < nouzenkazura\ ;
+黒色尉 < kokushikijou\ ;
+蛍袋 < hotarubukuro\ ;
+偶発的 < guuhatsuteki\ ;
+拒否反応 < kyohihan''nou\ ;
+特産物 < tokusanbutsu\ ;
+一言一句 < ichigon''ikku\ ;
+単独飛行 < tandokuhikou\ ;
+主権在民 < shukenzaimin\ ;
+化粧室 < keshoushitsu\ ;
+総支出 < soushishutsu\ ;
+人格主義 < jinkakushugi\ ;
+自殺未遂 < jisatsumisui\ ;
+出家遁世 < shukketonsei\ ;
+哲学書 < tetsugakusho\ ;
+博物館 < hakubutsukan\ ;
+紐革饂飩 < himokawaudon\ ;
+愚民政策 < guminseisaku\ ;
+単科大学 < tankadaigaku\ ;
+適正利潤 < tekiseirijun\ ;
+発音記号 < hatsuonkigou\ ;
+軍事協定 < gunjikyoutei\ ;
+農地委員会 < nouchiiinkai\ ;
+仲介物 < chuukaibutsu\ ;
+西高東低 < seikoutoutei\ ;
+損耗人員 < sonmoujin''in\ ;
+白頭鷲 < hakutouwashi\ ;
+実勢価格 < jisseikakaku\ ;
+援用設計 < en''yousekkei\ ;
+現場中継 < genbachuukei\ ;
+最新式 < saishinshiki\ ;
+山躑躅 < yamatsutsuji\ ;
+感知装置 < kanchisouchi\ ;
+議決機関 < giketsukikan\ ;
+省電力 < shoudenryoku\ ;
+安心立命 < anjinryoumei\ ;
+合同事業 < goudoujigyou\ ;
+同期信号 < doukishingou\ ;
+仲間意識 < nakamaishiki\ ;
+媒介変数 < baikaihensuu\ ;
+寒中水泳 < kanchuusuiei\ ;
+一匹狼 < ippikiookami\ ;
+被保険物 < hihokenbutsu\ ;
+消息筋 < shousokusuji\ ;
+懐紙 < futokorogami\ ;
+暗殺事件 < ansatsujiken\ ;
+折衷主義 < setchuushugi\ ;
+単式簿記 < tanshikiboki\ ;
+教養課程 < kyouyoukatei\ ;
+万年筆 < man''nenhitsu\ ;
+三者会談 < sanshakaidan\ ;
+連記投票 < renkitouhyou\ ;
+心理状態 < shinrijoutai\ ;
+仇同氏 < katakidoushi\ ;
+海外市場 < kaigaishijou\ ;
+既成事実 < kiseijijitsu\ ;
+事務総局 < jimusoukyoku\ ;
+前進基地 < zenshinkichi\ ;
+同工異曲 < doukouikyoku\ ;
+命題関数 < meidaikansuu\ ;
+北西航路 < hokuseikouro\ ;
+局地的 < kyokuchiteki\ ;
+合同会合 < goudoukaigou\ ;
+立地条件 < ritchijouken\ ;
+革手袋 < kawatebukuro\ ;
+地理学者 < chirigakusha\ ;
+大所高所 < taishokousho\ ;
+重複保険 < juufukuhoken\ ;
+通常兵器 < tsuujouheiki\ ;
+外国部隊 < gaikokubutai\ ;
+文化交流 < bunkakouryuu\ ;
+七分袖 < shichibusode\ ;
+市外通話 < shigaitsuuwa\ ;
+毛細血管 < mousaikekkan\ ;
+動態統計 < doutaitoukei\ ;
+社内情報 < shanaijouhou\ ;
+中公文庫 < chuukoubunko\ ;
+圧電効果 < atsudenkouka\ ;
+魑魅魍魎 < chimimouryou\ ;
+循環系統 < junkankeitou\ ;
+私達 < watashitachi\ ;
+対人関係 < taijinkankei\ ;
+普通選挙 < futsuusenkyo\ ;
+心霊術 < shinreijutsu\ ;
+条件闘争 < joukentousou\ ;
+松竹梅 < shouchikubai\ ;
+千状万態 < senjoubantai\ ;
+核開発 < kakukaihatsu\ ;
+化成工業 < kaseikougyou\ ;
+経済原論 < keizaigenron\ ;
+権謀術数 < kenboujussuu\ ;
+不揮発性 < fukihatsusei\ ;
+高等学校 < koutougakkou\ ;
+連合王国 < rengououkoku\ ;
+国際色 < kokusaishoku\ ;
+郵便書簡 < yuubinshokan\ ;
+子供心 < kodomogokoro\ ;
+精神力 < seishinryoku\ ;
+深謀遠慮 < shinbouenryo\ ;
+住民運動 < juumin''undou\ ;
+法文学部 < houbungakubu\ ;
+普通郵便 < futsuuyuubin\ ;
+再突入 < saitotsunyuu\ ;
+君主政体 < kunshuseitai\ ;
+発信局 < hasshinkyoku\ ;
+大和心 < yamatogokoro\ ;
+捲土重来 < kendochourai\ ;
+女声合唱 < joseigasshou\ ;
+米西戦争 < beiseisensou\ ;
+高度成長 < koudoseichou\ ;
+調律師 < chouritsushi\ ;
+乾布摩擦 < kanpumasatsu\ ;
+中華思想 < chuukashisou\ ;
+辞職願 < jishokunegai\ ;
+贈与証書 < zouyoshousho\ ;
+債務不履行 < saimufurikou\ ;
+公衆衛生 < koushuueisei\ ;
+所所 < tokorodokoro\ ;
+社会科学 < shakaikagaku\ ;
+農芸化学 < nougeikagaku\ ;
+交通整理 < koutsuuseiri\ ;
+親密感 < shinmitsukan\ ;
+特殊部隊 < tokushubutai\ ;
+窓際族 < madogiwazoku\ ;
+事実無根 < jijitsumukon\ ;
+写真術 < shashinjutsu\ ;
+孔雀妙王 < kujakumyouou\ ;
+財産分与 < zaisanbun''yo\ ;
+邦字新聞 < houjishinbun\ ;
+機動計画 < kidoukeikaku\ ;
+輻射熱 < fukushanetsu\ ;
+孤立主義 < koritsushugi\ ;
+供述者 < kyoujutsusha\ ;
+明治天皇 < meijiten''nou\ ;
+焦点距離 < shoutenkyori\ ;
+集合時間 < shuugoujikan\ ;
+住宅地区 < juutakuchiku\ ;
+多角貿易 < takakuboueki\ ;
+非喫煙者 < hikitsuensha\ ;
+消化不良 < shoukafuryou\ ;
+神経節 < shinkeisetsu\ ;
+舞台照明 < butaishoumei\ ;
+不生産的 < fuseisanteki\ ;
+爆発性 < bakuhatsusei\ ;
+非生産的 < hiseisanteki\ ;
+募集人員 < boshuujin''in\ ;
+原稿用紙 < genkouyoushi\ ;
+無意識的 < muishikiteki\ ;
+総司令官 < soushireikan\ ;
+譲渡所得 < joutoshotoku\ ;
+学童保育 < gakudouhoiku\ ;
+最終兵器 < saishuuheiki\ ;
+滑走車輪 < kassousharin\ ;
+月刊雑誌 < gekkanzasshi\ ;
+傍若無人 < boujakubujin\ ;
+全日制 < zen''nichisei\ ;
+勤労奉仕 < kinrouhoushi\ ;
+性腺摘除 < seisentekijo\ ;
+消毒薬 < shoudokuyaku\ ;
+憲法改正 < kenpoukaisei\ ;
+行路病者 < kourobyousha\ ;
+一人芝居 < hitorishibai\ ;
+共同防衛 < kyoudoubouei\ ;
+闘志満満 < toushimanman\ ;
+市勢調査 < shiseichousa\ ;
+会厭軟骨 < een''nankotsu\ ;
+軍用地図 < gun''youchizu\ ;
+東奔西走 < touhonseisou\ ;
+道徳律 < doutokuritsu\ ;
+交代作業 < koutaisagyou\ ;
+国防色 < kokuboushoku\ ;
+日記文学 < nikkibungaku\ ;
+終末論 < shuumatsuron\ ;
+日系米人 < nikkeibeijin\ ;
+将軍職 < shougunshoku\ ;
+至公至平 < shikoushihei\ ;
+関連会社 < kanrengaisha\ ;
+人権宣言 < jinkensengen\ ;
+人造人間 < jinzouningen\ ;
+傾斜家賃 < keishayachin\ ;
+自民党則 < jimintousoku\ ;
+反復記号 < hanpukukigou\ ;
+日本航空 < nipponkoukuu\ ;
+英才教育 < eisaikyouiku\ ;
+草月流 < sougetsuryuu\ ;
+排水条件 < haisuijouken\ ;
+英国航空 < eikokukoukuu\ ;
+明赤色 < meisekishoku\ ;
+解決策 < kaiketsusaku\ ;
+口唇裂 < koushinretsu\ ;
+七草粥 < nanakusagayu\ ;
+前哨騎兵 < zenshoukihei\ ;
+水素爆弾 < suisobakudan\ ;
+潅漑用水 < kangaiyousui\ ;
+商業学 < shougyougaku\ ;
+建設省 < kensetsushou\ ;
+分別心 < funbetsushin\ ;
+建設的 < kensetsuteki\ ;
+金鋸 < kanenokogiri\ ;
+二翻役 < ryanfan''yaku\ ;
+一斉射撃 < isseishageki\ ;
+一酸化炭素 < issankatanso\ ;
+基軸通貨 < kijikutsuuka\ ;
+傾斜生産 < keishaseisan\ ;
+境界理論 < kyoukairiron\ ;
+天皇陛下 < ten''nouheika\ ;
+天然果汁 < ten''nenkajuu\ ;
+口拍子 < kuchibyoushi\ ;
+霊肉一致 < reinikuitchi\ ;
+付加価値税 < fukakachizei\ ;
+経済復興 < keizaifukkou\ ;
+人口統計 < jinkoutoukei\ ;
+戦時産業 < senjisangyou\ ;
+古銭学者 < kosengakusha\ ;
+対弾道弾 < taidandoudan\ ;
+認証式 < ninshoushiki\ ;
+製造番号 < seizoubangou\ ;
+総括的 < soukatsuteki\ ;
+多重人格 < tajuujinkaku\ ;
+一刀両断 < ittouryoudan\ ;
+托鉢僧 < takuhatsuzou\ ;
+共産主義 < kyousanshugi\ ;
+記名投票 < kimeitouhyou\ ;
+商業国 < shougyoukoku\ ;
+仲人口 < nakoudoguchi\ ;
+桜前線 < sakurazensen\ ;
+休憩時間 < kyuukeijikan\ ;
+丸太足場 < marutaashiba\ ;
+桃色遊戯 < momoiroyuugi\ ;
+武士階級 < bushikaikyuu\ ;
+常置委員会 < jouchiiinkai\ ;
+国際電話 < kokusaidenwa\ ;
+人工地震 < jinkoujishin\ ;
+潜在主権 < senzaishuken\ ;
+過小評価 < kashouhyouka\ ;
+範疇部門 < hanchuubumon\ ;
+修道制度 < shuudouseido\ ;
+統語範疇 < tougohanchuu\ ;
+衛生設備 < eiseisetsubi\ ;
+一次産品 < ichijisanpin\ ;
+強制力 < kyouseiryoku\ ;
+公明正大 < koumeiseidai\ ;
+必読書 < hitsudokusho\ ;
+花火線香 < hanabisenkou\ ;
+圧力計 < atsuryokukei\ ;
+舶用機関 < hakuyoukikan\ ;
+随筆集 < zuihitsushuu\ ;
+公民権法 < kouminkenhou\ ;
+猫目石 < nekomokuseki\ ;
+勉強机 < benkyouzukue\ ;
+昏睡状態 < konsuijoutai\ ;
+対向車線 < taikoushasen\ ;
+鉄拳制裁 < tekkenseisai\ ;
+桂冠詩人 < keikanshijin\ ;
+人口調査 < jinkouchousa\ ;
+司法解剖 < shihoukaibou\ ;
+人口静態 < jinkouseitai\ ;
+有体動産 < yuutaidousan\ ;
+採用試験 < saiyoushiken\ ;
+白玉楼 < hakugyokurou\ ;
+気象情報 < kishoujouhou\ ;
+有線放送 < yuusenhousou\ ;
+開通式 < kaitsuushiki\ ;
+戯事 < tawamuregoto\ ;
+喀痰検査 < kakutankensa\ ;
+郷土料理 < kyoudoryouri\ ;
+三段論法 < sandanronpou\ ;
+西半球 < nishihankyuu\ ;
+時代精神 < jidaiseishin\ ;
+誇大広告 < kodaikoukoku\ ;
+都市計画 < toshikeikaku\ ;
+関東一円 < kantouichien\ ;
+自然発生 < shizenhassei\ ;
+啄木鳥 < takubokuchou\ ;
+単一形 < tan''ichigata\ ;
+欽定憲法 < kinteikenpou\ ;
+必然的 < hitsuzenteki\ ;
+数値制御 < suuchiseigyo\ ;
+武者人形 < mushaningyou\ ;
+分周回路 < bunshuukairo\ ;
+市民大会 < shimintaikai\ ;
+赤字国債 < akajikokusai\ ;
+使用方法 < shiyouhouhou\ ;
+水蟷螂 < mizukamakiri\ ;
+小春日和 < koharubiyori\ ;
+星月夜 < hoshidzukuyo\ ;
+縞織物 < shimaorimono\ ;
+公式試合 < koushikijiai\ ;
+照射処理 < shoushashori\ ;
+建設業 < kensetsugyou\ ;
+参勤交替 < sankinkoutai\ ;
+羊頭狗肉 < youtoukuniku\ ;
+斡旋業者 < assengyousha\ ;
+会社概要 < kaishagaiyou\ ;
+商人街 < shouninmachi\ ;
+一幕物 < hitomakumono\ ;
+民主政体 < minshuseitai\ ;
+粗放農業 < sohounougyou\ ;
+財務諸表 < zaimushohyou\ ;
+蚊取線香 < katorisenkou\ ;
+広報情報 < kouhoujouhou\ ;
+緊急事態 < kinkyuujitai\ ;
+均衡価格 < kinkoukakaku\ ;
+公安委員会 < kouan''iinkai\ ;
+季節変異 < kisetsuhen''i\ ;
+有感地震 < yuukanjishin\ ;
+緩和振動 < kanwashindou\ ;
+幽霊人口 < yuureijinkou\ ;
+統語指標 < tougoshihyou\ ;
+最高価格 < saikoukakaku\ ;
+百人力 < hyakuninriki\ ;
+酸性白土 < sanseihakudo\ ;
+民族衣装 < minzokuishou\ ;
+供述書 < kyoujutsusho\ ;
+非営利事業 < hieirijigyou\ ;
+実業界 < jitsugyoukai\ ;
+修士課程 < shuushikatei\ ;
+行平鍋 < yukihiranabe\ ;
+公益法人 < kouekihoujin\ ;
+歴史主義 < rekishishugi\ ;
+弁慶格子 < benkeigoushi\ ;
+第二人称 < dainininshou\ ;
+下流社会 < karyuushakai\ ;
+快楽主義 < kairakushugi\ ;
+落成式 < rakuseishiki\ ;
+柳川鍋 < yanagawanabe\ ;
+航続力 < kouzokuryoku\ ;
+制限速度 < seigensokudo\ ;
+文武両道 < bunburyoudou\ ;
+上昇限度 < joushougendo\ ;
+作用積分 < sayousekibun\ ;
+直接費 < chokusetsuhi\ ;
+腹筋運動 < fukkin''undou\ ;
+公認記録 < kouninkiroku\ ;
+山梨県 < yamanashiken\ ;
+一網打尽 < ichimoudajin\ ;
+棗椰子 < natsumeyashi\ ;
+学校用品 < gakkouyouhin\ ;
+住宅手当 < juutakuteate\ ;
+認知科学 < ninchikagaku\ ;
+商売道具 < shoubaidougu\ ;
+刺激物 < shigekibutsu\ ;
+原子戦争 < genshisensou\ ;
+漫遊客 < man''yuukyaku\ ;
+二重焦点 < nijuushouten\ ;
+瓦煎餅 < kawarasenbei\ ;
+図書館長 < toshokanchou\ ;
+在庫調整 < zaikochousei\ ;
+対数関数 < taisuukansuu\ ;
+親子丼 < oyakodonburi\ ;
+政教一致 < seikyouitchi\ ;
+文芸批評 < bungeihihyou\ ;
+線形代数 < senkeidaisuu\ ;
+連合政権 < rengouseiken\ ;
+頼母子講 < tanomoshikou\ ;
+在韓米軍 < zaikanbeigun\ ;
+著述業 < chojutsugyou\ ;
+一夜乞食 < ichiyakojiki\ ;
+異常終了 < ijoushuuryou\ ;
+品形 < shinakatachi\ ;
+試験地獄 < shikenjigoku\ ;
+社員教育 < shainkyouiku\ ;
+蒼白色 < souhakushoku\ ;
+企業年金 < kigyounenkin\ ;
+乞食根性 < kojikikonjou\ ;
+企業合同 < kigyougoudou\ ;
+自主指針 < jishushishin\ ;
+感慨無量 < kangaimuryou\ ;
+七辺形 < shichihenkei\ ;
+敵性国家 < tekiseikokka\ ;
+等差級数 < tousakyuusuu\ ;
+年末迄 < nenmatsumade\ ;
+師範学校 < shihangakkou\ ;
+経済社会 < keizaishakai\ ;
+改良主義 < kairyoushugi\ ;
+経済制裁 < keizaiseisai\ ;
+主戦投手 < shusentoushu\ ;
+売春宿 < baishun''yado\ ;
+遊撃隊員 < yuugekitaiin\ ;
+一時帰休 < ichijikikyuu\ ;
+質点系 < shitsutenkei\ ;
+受益証券 < juekishouken\ ;
+御伽話 < otogibanashi\ ;
+拙速主義 < sessokushugi\ ;
+未開拓地 < mikaitakuchi\ ;
+全権公使 < zenkenkoushi\ ;
+統制経済 < touseikeizai\ ;
+田園風景 < den''enfuukei\ ;
+旅行日程 < ryokounittei\ ;
+操業率 < sougyouritsu\ ;
+無量大数 < muryoudaisuu\ ;
+割引歩合 < waribikibuai\ ;
+反核運動 < hankakuundou\ ;
+枕屏風 < makurabyoubu\ ;
+血液学 < ketsuekigaku\ ;
+香港返還 < honkonhenkan\ ;
+企業合併 < kigyougappei\ ;
+非行少年 < hikoushounen\ ;
+基督教 < kirisutokyou\ ;
+野外撮影 < yagaisatsuei\ ;
+鼠花火 < nezumihanabi\ ;
+千手観音 < senjukan''non\ ;
+精神主義 < seishinshugi\ ;
+終始一貫 < shuushiikkan\ ;
+捕物帳 < torimonochou\ ;
+県民会館 < kenminkaikan\ ;
+教条主義 < kyoujoushugi\ ;
+更生会社 < kouseigaisha\ ;
+繊維工業 < sen''ikougyou\ ;
+人間同士 < ningendoushi\ ;
+貯蔵室 < chozoushitsu\ ;
+勘合貿易 < kangouboueki\ ;
+百家争鳴 < hyakkasoumei\ ;
+世界政策 < sekaiseisaku\ ;
+弔問客 < choumonkyaku\ ;
+家屋台帳 < kaokudaichou\ ;
+東海道線 < toukaidousen\ ;
+遺失物 < ishitsubutsu\ ;
+動脈血 < doumyakketsu\ ;
+過当競争 < katoukyousou\ ;
+液体窒素 < ekitaichisso\ ;
+平和協定 < heiwakyoutei\ ;
+無線電信 < musendenshin\ ;
+入場式 < nyuujoushiki\ ;
+細胞質 < saiboushitsu\ ;
+専門用語 < senmon''yougo\ ;
+人造肥料 < jinzouhiryou\ ;
+大砲三門 < taihousanmon\ ;
+実験装置 < jikkensouchi\ ;
+血液型 < ketsuekigata\ ;
+中央労働 < chuuouroudou\ ;
+内線番号 < naisenbangou\ ;
+伝記作者 < denkisakusha\ ;
+人民公社 < jinminkousha\ ;
+連絡切符 < renrakukippu\ ;
+標識灯 < hyoushikitou\ ;
+経営合理化 < keieigourika\ ;
+共同墓地 < kyoudoubochi\ ;
+実態調査 < jittaichousa\ ;
+総務長官 < soumuchoukan\ ;
+混乱状態 < konranjoutai\ ;
+勢車 < hazumiguruma\ ;
+哀哉 < kanashiikana\ ;
+包括的 < houkatsuteki\ ;
+劇中劇 < gekichuugeki\ ;
+家族意識 < kazokuishiki\ ;
+外柔内剛 < gaijuunaigou\ ;
+訪問販売 < houmonhanbai\ ;
+実用的 < jitsuyouteki\ ;
+侍八騎 < samuraihakki\ ;
+中間色 < chuukanshoku\ ;
+排斥運動 < haisekiundou\ ;
+開腹術 < kaifukujutsu\ ;
+原子弾頭 < genshidantou\ ;
+直撃弾 < chokugekidan\ ;
+営業案内 < eigyouan''nai\ ;
+天文航法 < tenmonkouhou\ ;
+非実際的 < hijissaiteki\ ;
+裏書譲渡 < uragakijouto\ ;
+副産物 < fukusanbutsu\ ;
+命中率 < meichuuritsu\ ;
+血友病 < ketsuyuubyou\ ;
+関係書類 < kankeishorui\ ;
+免許皆伝 < menkyokaiden\ ;
+回転競技 < kaitenkyougi\ ;
+経済水域 < keizaisuiiki\ ;
+無欲恬淡 < muyokutentan\ ;
+自我実現 < jigajitsugen\ ;
+執行猶予 < shikkouyuuyo\ ;
+融通手形 < yuuzuutegata\ ;
+厚生年金 < kouseinenkin\ ;
+院内感染 < in''naikansen\ ;
+悪性水腫 < akuseisuishu\ ;
+団十郎丈 < danjuuroujou\ ;
+精白率 < seihakuritsu\ ;
+以心伝心 < ishindenshin\ ;
+一字千金 < ichijisenkin\ ;
+業績悪化 < gyousekiakka\ ;
+兵器拡散 < heikikakusan\ ;
+交友関係 < kouyuukankei\ ;
+国際政治 < kokusaiseiji\ ;
+均質性 < kinshitsusei\ ;
+書面審理 < shomenshinri\ ;
+人間社会 < ningenshakai\ ;
+軍国主義 < gunkokushugi\ ;
+水上競技 < suijoukyougi\ ;
+河原乞食 < kawarakojiki\ ;
+戸籍係 < kosekigakari\ ;
+二重撮影 < nijuusatsuei\ ;
+絶対評価 < zettaihyouka\ ;
+在米邦人 < zaibeihoujin\ ;
+四月馬鹿 < shigatsubaka\ ;
+新進気鋭 < shinshinkiei\ ;
+所得控除 < shotokukoujo\ ;
+関係会社 < kankeigaisha\ ;
+自信満満 < jishinmanman\ ;
+日本学者 < nihongakusha\ ;
+接客業 < sekkyakugyou\ ;
+春日大社 < kasugataisha\ ;
+水盃 < mizusakazuki\ ;
+文明社会 < bunmeishakai\ ;
+蓄膿症 < chikunoushou\ ;
+同人雑誌 < doujinzasshi\ ;
+花形株 < hanagatakabu\ ;
+司法裁判 < shihousaiban\ ;
+人体実験 < jintaijikken\ ;
+亡命政権 < boumeiseiken\ ;
+振出人 < furidashinin\ ;
+仲間同士 < nakamadoushi\ ;
+経営工学 < keieikougaku\ ;
+弁護依頼人 < bengoirainin\ ;
+賛否両論 < sanpiryouron\ ;
+不法集会 < fuhoushuukai\ ;
+眼高手低 < gankoushutei\ ;
+禁欲的 < kin''yokuteki\ ;
+自動小銃 < jidoushoujuu\ ;
+地域社会 < chiikishakai\ ;
+交流人事 < kouryuujinji\ ;
+特殊効果 < tokushukouka\ ;
+一分別 < hitofunbetsu\ ;
+自家中毒 < jikachuudoku\ ;
+人気番組 < ninkibangumi\ ;
+敵本主義 < tekihonshugi\ ;
+口内性交 < kounaiseikou\ ;
+脳軟化症 < nounankashou\ ;
+半独立 < handokuritsu\ ;
+現地法人 < genchihoujin\ ;
+自動車泥 < jidoushadoro\ ;
+一時停止 < ichijiteishi\ ;
+学園紛争 < gakuenfunsou\ ;
+最高学府 < saikougakufu\ ;
+保険契約 < hokenkeiyaku\ ;
+女性差別 < joseisabetsu\ ;
+児童福祉 < jidoufukushi\ ;
+執務中 < shitsumuchuu\ ;
+試験問題 < shikenmondai\ ;
+漸進主義 < zenshinshugi\ ;
+音信不通 < onshinfutsuu\ ;
+勇往邁進 < yuuoumaishin\ ;
+静止状態 < seishijoutai\ ;
+北支事変 < hokushijihen\ ;
+寸借詐欺 < sunshakusagi\ ;
+指名通話 < shimeitsuuwa\ ;
+苦心惨憺 < kushinsantan\ ;
+牽強付会 < kenkyoufukai\ ;
+寒冷前線 < kanreizensen\ ;
+利他主義者 < ritashugisha\ ;
+親日派 < shin''nichiha\ ;
+速度制限 < sokudoseigen\ ;
+四部合唱 < shibugasshou\ ;
+電電公社 < dendenkousha\ ;
+福島県 < fukushimaken\ ;
+調色板 < choushokuban\ ;
+優勝候補 < yuushoukouho\ ;
+友好関係 < yuukoukankei\ ;
+救援物資 < kyuuenbusshi\ ;
+剪定鋏 < senteibasami\ ;
+緑黄色 < ryokuoushoku\ ;
+包紙 < tsutsumigami\ ;
+下屋敷 < shimoyashiki\ ;
+神社仏閣 < jinjabukkaku\ ;
+車用品 < kurumayouhin\ ;
+耐久力 < taikyuuryoku\ ;
+水平思考 < suiheishikou\ ;
+音感教育 < onkankyouiku\ ;
+寝台虫 < shindaimushi\ ;
+嗜虐的 < shigyakuteki\ ;
+滞納処分 < tainoushobun\ ;
+中継局 < chuukeikyoku\ ;
+共同経営 < kyoudoukeiei\ ;
+長広舌 < choukouzetsu\ ;
+二六時中 < nirokujichuu\ ;
+一時賜金 < ichijishikin\ ;
+自然崇拝 < shizensuuhai\ ;
+審議未了 < shingimiryou\ ;
+養子縁組 < youshiengumi\ ;
+日没後 < nichibotsugo\ ;
+氏族制度 < shizokuseido\ ;
+動脈瘤 < doumyakuryuu\ ;
+一輪挿 < ichirinzashi\ ;
+軍陣医学 < gunjin''igaku\ ;
+蒸発皿 < jouhatsuzara\ ;
+正四面体 < seishimentai\ ;
+定格請負 < teikakuukeoi\ ;
+賃借権 < chinshakuken\ ;
+卸問屋 < oroshidon''ya\ ;
+防湿剤 < boushitsuzai\ ;
+収穫高 < shuukakudaka\ ;
+再出発 < saishuppatsu\ ;
+待遇改善 < taiguukaizen\ ;
+繊維光学 < sen''ikougaku\ ;
+黒人霊歌 < kokujinreika\ ;
+周極星 < shuukyokusei\ ;
+零行列 < reigyouretsu\ ;
+特殊機能 < tokushukinou\ ;
+経路積分 < keirosekibun\ ;
+国営農場 < kokueinoujou\ ;
+国粋主義 < kokusuishugi\ ;
+出発点 < shuppatsuten\ ;
+甲状腺炎 < koujousen''en\ ;
+合格率 < goukakuritsu\ ;
+資産合計 < shisangoukei\ ;
+鯨飲馬食 < geiinbashoku\ ;
+心臓発作 < shinzouhossa\ ;
+新人歌手 < shinjinkashu\ ;
+輸入手形 < yunyuutegata\ ;
+圧着端子 < atsugitanshi\ ;
+未改心者 < mikaishinsha\ ;
+無効投票 < mukoutouhyou\ ;
+行進曲 < koushinkyoku\ ;
+難攻不落 < nankoufuraku\ ;
+一心同体 < isshindoutai\ ;
+宥和政策 < yuuwaseisaku\ ;
+限界効用 < genkaikouyou\ ;
+十万億土 < juuman''okudo\ ;
+変態心理 < hentaishinri\ ;
+白熱灯 < hakunetsutou\ ;
+拍子記号 < hyoushikigou\ ;
+公会問答 < koukaimondou\ ;
+考古学者 < koukogakusha\ ;
+食料品 < shokuryouhin\ ;
+野球選手 < yakyuusenshu\ ;
+操車係 < soushagakari\ ;
+夢遊病者 < muyuubyousha\ ;
+要所要所 < youshoyousho\ ;
+湿電池 < shitsudenchi\ ;
+観掌術 < kanshoujutsu\ ;
+使徒継承 < shitokeishou\ ;
+励磁電流 < reijidenryuu\ ;
+志 < kokorozashi\ ;
+政 < matsurigoto\ ;
+社会制度 < shakaiseido\ ;
+代理領事 < dairiryouji\ ;
+点数切符 < tensuukippu\ ;
+化成肥料 < kaseihiryou\ ;
+未成年者 < miseinensha\ ;
+真骨頂 < shinkotchou\ ;
+必要品 < hitsuyouhin\ ;
+画世的 < kakuseiteki\ ;
+一天万乗 < ittenbanjou\ ;
+熨斗袋 < noshibukuro\ ;
+測地学 < sokuchigaku\ ;
+親子関係 < oyakokankei\ ;
+雁木鑢 < gangiyasuri\ ;
+再割引 < saiwaribiki\ ;
+恐怖政治 < kyoufuseiji\ ;
+奉献式 < houkenshiki\ ;
+虚数単位 < kyosuutan''i\ ;
+選挙制度 < senkyoseido\ ;
+初誕生 < hatsutanjou\ ;
+三本足 < sanbon''ashi\ ;
+判断力 < handanryoku\ ;
+大願成就 < daiganjouju\ ;
+協調性 < kyouchousei\ ;
+円卓会議 < entakukaigi\ ;
+天道乾 < tentouboshi\ ;
+大宮御所 < oomiyagosho\ ;
+白日夢 < hakujitsumu\ ;
+分析表 < bunsekihyou\ ;
+上下関係 < jougekankei\ ;
+承諾書 < shoudakusho\ ;
+少食家 < shoushokuka\ ;
+仮執行 < karishikkou\ ;
+握力計 < akuryokukei\ ;
+公営企業 < koueikigyou\ ;
+重液分離 < juuekibunri\ ;
+不足勝 < fusokugachi\ ;
+実践理性 < jissenrisei\ ;
+帯鋸 < obinokogiri\ ;
+後進国 < koushinkoku\ ;
+行住坐臥 < gyoujuuzaga\ ;
+言行一致 < genkouitchi\ ;
+洗眼薬 < sengan''yaku\ ;
+復習文 < fukushuubun\ ;
+広大無辺 < koudaimuhen\ ;
+優先事項 < yuusenjikou\ ;
+携帯電話 < keitaidenwa\ ;
+止血帯 < shiketsutai\ ;
+下宿料 < geshukuryou\ ;
+時代錯誤 < jidaisakugo\ ;
+人工衛星 < jinkoueisei\ ;
+重量級 < juuryoukyuu\ ;
+線形順序 < senkeijunjo\ ;
+召使 < meshitsukai\ ;
+前進軸 < zenshinjiku\ ;
+鉄石心 < tessekishin\ ;
+甘茶蔓 < amachadzuru\ ;
+外交官補 < gaikoukanho\ ;
+署名式 < shomeishiki\ ;
+人心地 < hitogokochi\ ;
+囚人服 < shuujinfuku\ ;
+律儀者 < richigimono\ ;
+力石 < chikaraishi\ ;
+住居手当 < juukyoteate\ ;
+雁木車 < gangiguruma\ ;
+道路標示 < dourohyouji\ ;
+白鼠 < shironezumi\ ;
+予備将校 < yobishoukou\ ;
+憂欝症 < yuuutsushou\ ;
+民間飛行 < minkanhikou\ ;
+実験式 < jikkenshiki\ ;
+永子作権 < eikosakuken\ ;
+社会運動 < shakaiundou\ ;
+移行計画 < ikoukeikaku\ ;
+狂信者 < kyoushinsha\ ;
+接近経路 < sekkinkeiro\ ;
+世界経済 < sekaikeizai\ ;
+浮世草子 < ukiyozoushi\ ;
+民族的 < minzokuteki\ ;
+定数是正 < teisuuzesei\ ;
+発言者 < hatsugensha\ ;
+力瘤 < chikarakobu\ ;
+単縦列 < tanjuuretsu\ ;
+安保条約 < anpojouyaku\ ;
+販売値段 < hanbainedan\ ;
+基底構造 < kiteikouzou\ ;
+必須条件 < hissujouken\ ;
+三人組 < san''ningumi\ ;
+黒斑病 < kokuhanbyou\ ;
+区裁判所 < kusaibansho\ ;
+予行演習 < yokouenshuu\ ;
+選挙運動 < senkyoundou\ ;
+国際規模 < kokusaikibo\ ;
+悪悪戯 < waruitazura\ ;
+運転免許 < untenmenkyo\ ;
+線形論理 < senkeironri\ ;
+実用品 < jitsuyouhin\ ;
+大腿骨 < daitaikotsu\ ;
+年賀郵便 < nengayuubin\ ;
+温風暖房 < onpuudanbou\ ;
+内部構造 < naibukouzou\ ;
+水蜜桃 < suimitsutou\ ;
+不定型詩 < futeikeishi\ ;
+漂流船 < hyouryuusen\ ;
+黄金崇拝 < ougonsuuhai\ ;
+世話女房 < sewanyoubou\ ;
+犬儒学派 < kenjugakuha\ ;
+頸動脈 < keidoumyaku\ ;
+一品料理 < ippinryouri\ ;
+亜硫酸塩 < aryuusan''en\ ;
+生兵法 < namabyouhou\ ;
+烏羽色 < karasubairo\ ;
+弟弟子 < otoutodeshi\ ;
+劇文学 < gekibungaku\ ;
+加薬飯 < kayakumeshi\ ;
+北半球 < kitahankyuu\ ;
+集中線 < shuuchuusen\ ;
+有声子音 < yuuseishiin\ ;
+得業士 < tokugyoushi\ ;
+皆兵制度 < kaiheiseido\ ;
+前進角 < zenshinkaku\ ;
+未経験者 < mikeikensha\ ;
+養殖池 < youshokuchi\ ;
+嗜虐性 < shigyakusei\ ;
+尊皇王攘夷 < son''noujoui\ ;
+上意下達 < jouikatatsu\ ;
+車間距離 < shakankyori\ ;
+氷河時代 < hyougajidai\ ;
+三人称 < san''ninshou\ ;
+情報理論 < jouhouriron\ ;
+御多忙中 < gotabouchuu\ ;
+中級品 < chuukyuuhin\ ;
+漂流者 < hyouryuusha\ ;
+愛染明王 < aizenmyouou\ ;
+誘惑物 < yuuwakumono\ ;
+頭蓋骨 < tougaikotsu\ ;
+発明品 < hatsumeihin\ ;
+平面交差 < heimenkousa\ ;
+失格者 < shikkakusha\ ;
+成績表 < seisekihyou\ ;
+経験主義 < keikenshugi\ ;
+弁護士会 < bengoshikai\ ;
+注文先 < chuumonsaki\ ;
+純情可憐 < junjoukaren\ ;
+載貨吃水 < saikakissui\ ;
+既決囚 < kiketsushuu\ ;
+半濁音符 < handakuonfu\ ;
+閨秀画家 < keishuugaka\ ;
+摂動論 < setsudouron\ ;
+伏流水 < fukuryuusui\ ;
+独裁的 < dokusaiteki\ ;
+高調子 < takachoushi\ ;
+立脚地 < rikkyakuchi\ ;
+三半規管 < sanhankikan\ ;
+封建時代 < houkenjidai\ ;
+越冬資金 < ettoushikin\ ;
+再構築 < saikouchiku\ ;
+所帯道具 < shotaidougu\ ;
+傲岸無礼 < gouganburei\ ;
+社会保険 < shakaihoken\ ;
+櫓太鼓 < yaguradaiko\ ;
+止血剤 < shiketsuzai\ ;
+較優位論 < kakuyuuiron\ ;
+世論調査 < yoronchousa\ ;
+冬期休暇 < toukikyuuka\ ;
+両方共 < ryouhoutomo\ ;
+上部構造 < joubukouzou\ ;
+松葉杖 < matsubadzue\ ;
+象形文字 < shoukeimoji\ ;
+力水 < chikaramizu\ ;
+沖積統 < chuusekitou\ ;
+仕事箱 < shigotobako\ ;
+氷醋酸 < hyousakusan\ ;
+農本主義 < nouhonshugi\ ;
+書籍商 < shosekishou\ ;
+一切衆生 < issaishujou\ ;
+旧態依然 < kyuutaiizen\ ;
+整理番号 < seiribangou\ ;
+仮綴本 < karitojihon\ ;
+発電所 < hatsudensho\ ;
+当座資産 < touzashisan\ ;
+官能的 < kan''nouteki\ ;
+残品整理 < zanpinseiri\ ;
+末梢的 < masshouteki\ ;
+中間国 < chuukankoku\ ;
+宇宙速度 < uchuusokudo\ ;
+思索的 < shisakuteki\ ;
+南口 < minamiguchi\ ;
+加水分解 < kasuibunkai\ ;
+出身校 < shusshinkou\ ;
+灰青色 < haiseishoku\ ;
+航海術 < koukaijutsu\ ;
+小東京 < shoutoukyou\ ;
+宣伝価値 < sendenkachi\ ;
+年季奉公 < nenkiboukou\ ;
+千人力 < sen''ninriki\ ;
+人工芝 < jinkoushiba\ ;
+軽量級 < keiryoukyuu\ ;
+力業 < chikarawaza\ ;
+貨幣経済 < kaheikeizai\ ;
+無期懲役 < mukichoueki\ ;
+拘束圧 < kousokuatsu\ ;
+戦闘力 < sentouryoku\ ;
+市場区分 < shijoukubun\ ;
+球面鏡 < kyuumenkyou\ ;
+初期設定 < shokisettei\ ;
+人造繊維 < jinzousen''i\ ;
+普通預金 < futsuuyokin\ ;
+低利資金 < teirishikin\ ;
+人形劇 < ningyougeki\ ;
+無骨者 < bukotsumono\ ;
+真珠細工 < shinjuzaiku\ ;
+主知主義 < shuchishugi\ ;
+逆睫 < sakamatsuge\ ;
+町奉行 < machibugyou\ ;
+空証文 < karashoumon\ ;
+二項係数 < nikoukeisuu\ ;
+素性構造 < soseikouzou\ ;
+愛国主義 < aikokushugi\ ;
+戦闘支援 < sentoushien\ ;
+人名辞書 < jinmeijisho\ ;
+前輪駆動 < zenrinkudou\ ;
+価格操作 < kakakusousa\ ;
+放物線 < houbutsusen\ ;
+形而下学 < keijikagaku\ ;
+一期一会 < ichigoichie\ ;
+調子者 < choushimono\ ;
+現実感 < genjitsukan\ ;
+鰹節 < katsuobushi\ ;
+積分学 < sekibungaku\ ;
+土木工事 < dobokukouji\ ;
+女子高生 < joshikousei\ ;
+現実性 < genjitsusei\ ;
+高電圧 < kouden''atsu\ ;
+学問的 < gakumonteki\ ;
+王道楽土 < oudourakudo\ ;
+悪戦苦闘 < akusenkutou\ ;
+神経外科 < shinkeigeka\ ;
+学究的 < gakkyuuteki\ ;
+非開示合意 < hikaijigoui\ ;
+収穫祭 < shuukakusai\ ;
+物理学 < butsurigaku\ ;
+不眠不休 < fuminfukyuu\ ;
+垂直線 < suichokusen\ ;
+名誉教授 < meiyokyouju\ ;
+図書館員 < toshokan''in\ ;
+歴史学 < rekishigaku\ ;
+潤滑剤 < junkatsuzai\ ;
+組織学 < soshikigaku\ ;
+高歌放吟 < koukahougin\ ;
+発電子 < hatsudenshi\ ;
+三尊仏 < sanzonbutsu\ ;
+引取人 < hikitorinin\ ;
+構成単位 < kouseitan''i\ ;
+外人記者 < gaijinkisha\ ;
+漂泊者 < hyouhakusha\ ;
+例外処理 < reigaishori\ ;
+夫婦茶碗 < meotodjawan\ ;
+真田虫 < sanadamushi\ ;
+闇商人 < yamishounin\ ;
+入漁料 < nyuugyoryou\ ;
+全面講和 < zenmenkouwa\ ;
+七宝焼 < shippouyaki\ ;
+鋼鉄板 < koutetsuban\ ;
+優良株 < yuuryoukabu\ ;
+本格的 < honkakuteki\ ;
+復讐戦 < fukushuusen\ ;
+暴力団 < bouryokudan\ ;
+初診料 < shoshinryou\ ;
+義務教育 < gimukyouiku\ ;
+口達者 < kuchidassha\ ;
+耐熱性 < tainetsusei\ ;
+増血剤 < zouketsuzai\ ;
+悲観論者 < hikanronsha\ ;
+個人情報 < kojinjouhou\ ;
+北北東 < hokuhokutou\ ;
+発言権 < hatsugenken\ ;
+町段畝歩 < choutansebu\ ;
+急成長 < kyuuseichou\ ;
+代理大使 < dairitaishi\ ;
+構造主義 < kouzoushugi\ ;
+出資額 < shusshigaku\ ;
+内分泌 < naibunpitsu\ ;
+兜虫 < kabutomushi\ ;
+内線電話 < naisendenwa\ ;
+公示価格 < koujikakaku\ ;
+液体酸素 < ekitaisanso\ ;
+四旬節 < shijunsetsu\ ;
+沃度丁幾 < youdochinki\ ;
+九官鳥 < kyuukanchou\ ;
+刑事訴訟 < keijisoshou\ ;
+老人力 < roujinryoku\ ;
+稼働人口 < kadoujinkou\ ;
+軽機関銃 < keikikanjuu\ ;
+機密保護 < kimitsuhogo\ ;
+建築士 < kenchikushi\ ;
+太極拳 < taikyokuken\ ;
+生番組 < namabangumi\ ;
+養殖場 < youshokujou\ ;
+予備交渉 < yobikoushou\ ;
+虚脱感 < kyodatsukan\ ;
+象牙質 < zougeshitsu\ ;
+隆鼻術 < ryuubijutsu\ ;
+表面積 < hyoumenseki\ ;
+透視図法 < toushizuhou\ ;
+練習試合 < renshuujiai\ ;
+努力賞 < doryokushou\ ;
+十人並 < juunin''nami\ ;
+薬鑵頭 < yakan''atama\ ;
+可視光線 < kashikousen\ ;
+筆記試験 < hikkishiken\ ;
+公定相場 < kouteisouba\ ;
+価格規制 < kakakukisei\ ;
+加重平均 < kajuuheikin\ ;
+武装警官 < busoukeikan\ ;
+商売筋 < shoubaisuji\ ;
+水子供養 < mizugokuyou\ ;
+港湾局 < kouwankyoku\ ;
+千変万化 < senpenbanka\ ;
+水商売 < mizushoubai\ ;
+鉄道便 < tetsudoubin\ ;
+査定価格 < sateikakaku\ ;
+民族学 < minzokugaku\ ;
+歴史劇 < rekishigeki\ ;
+溝形鋼 < mizogatakou\ ;
+明晰夢 < meisekiyume\ ;
+形体 < narikatachi\ ;
+下層社会 < kasoushakai\ ;
+断続的 < danzokuteki\ ;
+式部省 < shikibushou\ ;
+極道者 < gokudoumono\ ;
+開校式 < kaikoushiki\ ;
+民約論 < min''yakuron\ ;
+防御率 < bougyoritsu\ ;
+表面的 < hyoumenteki\ ;
+計時係 < keijigakari\ ;
+後発品 < kouhatsuhin\ ;
+自然主義 < shizenshugi\ ;
+薩摩焼 < satsumayaki\ ;
+床柱 < tokobashira\ ;
+興味本位 < kyoumihon''i\ ;
+出身地 < shusshinchi\ ;
+無体資産 < mutaishisan\ ;
+護身術 < goshinjutsu\ ;
+経済封鎖 < keizaifuusa\ ;
+競争相手 < kyousouaite\ ;
+出没 < shutsubotsu\ ;
+与太話 < yotabanashi\ ;
+左端 < hidarihashi\ ;
+再入学 < sainyuugaku\ ;
+五輪大会 < gorintaikai\ ;
+協約書 < kyouyakusho\ ;
+日本三景 < nihonsankei\ ;
+三羽烏 < sanbagarasu\ ;
+訪問客 < houmonkyaku\ ;
+油性塗料 < yuseitoryou\ ;
+治験薬 < chiken''yaku\ ;
+性善説 < seizensetsu\ ;
+仕事柄 < shigotogara\ ;
+大根足 < daikon''ashi\ ;
+改訂増補 < kaiteizouho\ ;
+一般概念 < ippangainen\ ;
+光瀬龍 < mitsuseryuu\ ;
+狼藉者 < rouzekimono\ ;
+心拍数 < shinpakusuu\ ;
+小一時間 < koichijikan\ ;
+三脚椅子 < sankyakuisu\ ;
+動物誌 < doubutsushi\ ;
+返却値 < henkyakuchi\ ;
+皮膚感覚 < hifukankaku\ ;
+無駄話 < mudabanashi\ ;
+分子式 < bunshishiki\ ;
+降車口 < koushaguchi\ ;
+検出器 < kenshutsuki\ ;
+権利行使 < kenrikoushi\ ;
+落葉松 < rakuyoushou\ ;
+極前線 < kyokuzensen\ ;
+超越点 < chouetsuten\ ;
+黒猩々 < kuroshoujou\ ;
+漢字変換 < kanjihenkan\ ;
+国慶節 < kokkeisetsu\ ;
+無体財産 < mutaizaisan\ ;
+巴瓦 < tomoegawara\ ;
+天産物 < tensanbutsu\ ;
+紳士録 < shinshiroku\ ;
+再入国 < sainyuukoku\ ;
+全体会議 < zentaikaigi\ ;
+二重抵当 < nijuuteitou\ ;
+切日 < shimekiribi\ ;
+機械文明 < kikaibunmei\ ;
+簡潔性 < kanketsusei\ ;
+天津乙女 < amatsuotome\ ;
+切断面 < setsudanmen\ ;
+引込線 < hikikomisen\ ;
+利害関係 < rigaikankei\ ;
+多角経営 < takakukeiei\ ;
+夫婦別姓 < fuufubessei\ ;
+粗忽者 < sokotsumono\ ;
+開会式 < kaikaishiki\ ;
+日本語訳 < nihongoyaku\ ;
+交換機能 < koukankinou\ ;
+産卵場所 < sanranbasho\ ;
+感傷的 < kanshouteki\ ;
+市有物 < shiyuubutsu\ ;
+走行距離 < soukoukyori\ ;
+無尽組合 < mujinkumiai\ ;
+再生利用 < saiseiriyou\ ;
+聖職者 < seishokusha\ ;
+航空母艦 < koukuubokan\ ;
+中衣嚢 < nakagakushi\ ;
+独立語 < dokuritsugo\ ;
+人名辞典 < jinmeijiten\ ;
+昨非今是 < sakuhikonze\ ;
+育児室 < ikujishitsu\ ;
+新古典派 < shinkotenha\ ;
+繁殖地 < hanshokuchi\ ;
+一人称 < ichininshou\ ;
+長崎県 < nagasakiken\ ;
+経営資源 < keieishigen\ ;
+幼心 < osanagokoro\ ;
+被害妄想 < higaimousou\ ;
+電力計 < denryokukei\ ;
+製氷皿 < seihyouzara\ ;
+細菌兵器 < saikinheiki\ ;
+飽和溶液 < houwayoueki\ ;
+一般会計 < ippankaikei\ ;
+準備資金 < junbishikin\ ;
+主税局 < shuzeikyoku\ ;
+政党政治 < seitouseiji\ ;
+母子年金 < boshinenkin\ ;
+接続語 < setsuzokugo\ ;
+特集号 < tokushuugou\ ;
+黒褐色 < kokkasshoku\ ;
+美容整形 < biyouseikei\ ;
+中国人 < chuugokujin\ ;
+花筵 < hanamushiro\ ;
+初期投資 < shokitoushi\ ;
+最短距離 < saitankyori\ ;
+周辺機器 < shuuhenkiki\ ;
+制限時間 < seigenjikan\ ;
+勤労意欲 < kinrouiyoku\ ;
+従属国 < juuzokukoku\ ;
+口返答 < kuchihentou\ ;
+倉庫会社 < soukogaisha\ ;
+男鰥 < otokoyamome\ ;
+未開社会 < mikaishakai\ ;
+減衰率 < gensuiritsu\ ;
+導電率 < doudenritsu\ ;
+一了簡 < ichiryoukan\ ;
+過大評価 < kadaihyouka\ ;
+花祭 < hanamatsuri\ ;
+再輸出 < saiyushutsu\ ;
+青銅色 < seidoushoku\ ;
+破廉恥罪 < harenchizai\ ;
+隊商宿 < taishouyado\ ;
+時限装置 < jigensouchi\ ;
+景気変動 < keikihendou\ ;
+式次第 < shikishidai\ ;
+一次記憶 < ichijikioku\ ;
+生産物 < seisanbutsu\ ;
+衝動行為 < shoudoukoui\ ;
+許容範囲 < kyoyouhan''i\ ;
+幻覚症 < genkakushou\ ;
+生産管理 < seisankanri\ ;
+投手力 < toushuryoku\ ;
+閉会式 < heikaishiki\ ;
+沖積層 < chuusekisou\ ;
+医療伝道 < iryoudendou\ ;
+催眠術 < saiminjutsu\ ;
+蝙蝠傘 < koumorigasa\ ;
+突貫工事 < tokkankouji\ ;
+向日性 < kounichisei\ ;
+初姿 < hatsusugata\ ;
+吸取紙 < suitorigami\ ;
+選考基準 < senkoukijun\ ;
+高話 < takabanashi\ ;
+高圧的 < kouatsuteki\ ;
+有力者 < yuuryokusha\ ;
+別問題 < betsumondai\ ;
+代数式 < daisuushiki\ ;
+入港料 < nyuukouryou\ ;
+膝頭 < hizagashira\ ;
+無宿者 < mushukumono\ ;
+都市銀行 < toshiginkou\ ;
+原子力 < genshiryoku\ ;
+成文律 < seibunritsu\ ;
+男一匹 < otokoippiki\ ;
+塞栓症 < sokusenshou\ ;
+商売柄 < shoubaigara\ ;
+腹足類 < fukusokurui\ ;
+東印度 < higashiindo\ ;
+資本力 < shihonryoku\ ;
+巻柱 < makibashira\ ;
+祇園祭 < gionmatsuri\ ;
+上京中 < joukyouchuu\ ;
+催眠薬 < saimin''yaku\ ;
+宣伝映画 < senden''eiga\ ;
+慈善事業 < jizenjigyou\ ;
+現象学 < genshougaku\ ;
+秋津島 < akitsushima\ ;
+羊小屋 < hitsujigoya\ ;
+装飾品 < soushokuhin\ ;
+千日手 < sen''nichite\ ;
+加速度計 < kasokudokei\ ;
+傲慢不遜 < goumanfuson\ ;
+刑務作業 < keimusagyou\ ;
+地球規模 < chikyuukibo\ ;
+植民地 < shokuminchi\ ;
+途中計時 < tochuukeiji\ ;
+外分泌 < gaibunpitsu\ ;
+隣近所 < tonarikinjo\ ;
+対頂角 < taichoukaku\ ;
+高射特科 < koushatokka\ ;
+肩甲骨 < kenkoukotsu\ ;
+三面六臂 < sanmenroppi\ ;
+微分断面 < bibundanmen\ ;
+分娩作用 < bunbensayou\ ;
+腰弁当 < koshibentou\ ;
+口巧者 < kuchigousha\ ;
+保健体育 < hokentaiiku\ ;
+暴走運転 < bousouunten\ ;
+底力 < sokodjikara\ ;
+不世出 < fuseishutsu\ ;
+諮問機関 < shimonkikan\ ;
+先日付 < sakihidzuke\ ;
+透視力 < toushiryoku\ ;
+創設者 < sousetsusha\ ;
+田舎芝居 < inakashibai\ ;
+金魚鉢 < kingyobachi\ ;
+癌遺伝子 < gan''idenshi\ ;
+百鬼夜行 < hyakkiyakou\ ;
+無死満塁 < mushimanrui\ ;
+二番抵当 < nibanteitou\ ;
+衒学的 < gengakuteki\ ;
+総務部長 < soumubuchou\ ;
+金石学 < kinsekigaku\ ;
+野菜畑 < yasaibatake\ ;
+自由貿易 < jiyuuboueki\ ;
+平和条項 < heiwajoukou\ ;
+直感的 < chokkanteki\ ;
+動物相 < doubutsusou\ ;
+気分転換 < kibuntenkan\ ;
+賃仕事 < chinshigoto\ ;
+特許主 < tokkyonushi\ ;
+儒教主義 < jukyoushugi\ ;
+奉納物 < hounoubutsu\ ;
+女歌舞伎 < on''nakabuki\ ;
+保釈中 < hoshakuchuu\ ;
+飛行機雲 < hikoukigumo\ ;
+青藍色 < seiranshoku\ ;
+脅迫者 < kyouhakusha\ ;
+動物界 < doubutsukai\ ;
+路面電車 < romendensha\ ;
+通行上 < tsuukoudome\ ;
+強奪者 < goudatsusha\ ;
+脅迫罪 < kyouhakuzai\ ;
+単独行為 < tandokukoui\ ;
+団結権 < danketsuken\ ;
+誠心誠意 < seishinseii\ ;
+約半年 < yakuhan''nen\ ;
+日本料理 < nihonryouri\ ;
+投票箱 < touhyoubako\ ;
+素人芸 < shiroutogei\ ;
+積極性 < sekkyokusei\ ;
+極座標 < kyokuzahyou\ ;
+寝正月 < neshougatsu\ ;
+浚渫機 < shunsetsuki\ ;
+翼面積 < yokumenseki\ ;
+畳表 < tatamiomote\ ;
+総目録 < soumokuroku\ ;
+核反応 < kakuhan''nou\ ;
+制酸薬 < seisan''yaku\ ;
+超人的 < choujinteki\ ;
+第一流 < daiichiryuu\ ;
+故事来歴 < kojiraireki\ ;
+内輪喧嘩 < uchiwagenka\ ;
+足拍子 < ashibyoushi\ ;
+弱材料 < yowazairyou\ ;
+接触線 < sesshokusen\ ;
+亜硝酸塩 < ashousan''en\ ;
+一角獣座 < ikkakujuuza\ ;
+出力 < shutsuryoku\ ;
+役力士 < yakurikishi\ ;
+統轄者 < toukatsusha\ ;
+反体制派 < hantaiseiha\ ;
+区劃整理 < kukakuseiri\ ;
+仕事中 < shigotochuu\ ;
+土百姓 < dobyakushou\ ;
+文学賞 < bungakushou\ ;
+招請国 < shouseikoku\ ;
+総収入 < soushuunyuu\ ;
+測量船 < sokuryousen\ ;
+放任主義 < houninshugi\ ;
+遺族給付 < izokukyuufu\ ;
+変位制御 < hen''iseigyo\ ;
+借地権 < shakuchiken\ ;
+文部大臣 < monbudaijin\ ;
+女権論者 < jokenronsha\ ;
+下士官兵 < kashikanhei\ ;
+沖積世 < chuusekisei\ ;
+中禅寺湖 < chuuzenjiko\ ;
+口述書 < koujutsusho\ ;
+殉職者 < junshokusha\ ;
+製品原価 < seihingenka\ ;
+人民主義 < jinminshugi\ ;
+勉強部屋 < benkyoubeya\ ;
+病虫害 < byouchuugai\ ;
+神宮外苑 < jinguugaien\ ;
+桜餅 < sakuramochi\ ;
+桜飯 < sakurameshi\ ;
+技術的 < gijutsuteki\ ;
+小説家 < shousetsuka\ ;
+特約店 < tokuyakuten\ ;
+交通量 < koutsuuryou\ ;
+全般支援 < zenpanshien\ ;
+少壮有為 < shousouyuui\ ;
+経口投与 < keikoutouyo\ ;
+道案内 < michian''nai\ ;
+換気装置 < kankisouchi\ ;
+共和制度 < kyouwaseido\ ;
+道普請 < michibushin\ ;
+好色者 < koushokusha\ ;
+二課勉強 < nikabenkyou\ ;
+消臭剤 < shoushuuzai\ ;
+予防接種 < yobousesshu\ ;
+独善的 < dokuzenteki\ ;
+異国情緒 < ikokujoucho\ ;
+解像力 < kaizouryoku\ ;
+運転停止 < untenteishi\ ;
+悪口雑言 < akkouzougon\ ;
+軍法会議 < gunpoukaigi\ ;
+直出 < chokushutsu\ ;
+浸透圧 < shintouatsu\ ;
+熱血漢 < nekketsukan\ ;
+天地無用 < tenchimuyou\ ;
+畳職 < tatamishoku\ ;
+異常性欲 < ijouseiyoku\ ;
+岩石学 < gansekigaku\ ;
+蜜柑畑 < mikanbatake\ ;
+烏天狗 < karasutengu\ ;
+紳士的 < shinshiteki\ ;
+人工受胎 < jinkoujutai\ ;
+日本文法 < nihonbunpou\ ;
+窒息死 < chissokushi\ ;
+上下水道 < jougesuidou\ ;
+三大節 < sandaisetsu\ ;
+活断層 < katsudansou\ ;
+銀行口座 < ginkoukouza\ ;
+目鼻立 < mehanadachi\ ;
+周期律 < shuukiritsu\ ;
+草冠 < kusakanmuri\ ;
+退紅色 < taikoushoku\ ;
+夏期大学 < kakidaigaku\ ;
+連邦議会 < renpougikai\ ;
+撮像管 < satsuzoukan\ ;
+腹八分 < harahachibu\ ;
+末期症状 < makkijoutai\ ;
+五段動詞 < godandoushi\ ;
+立法機関 < rippoukikan\ ;
+因循姑息 < injunkosoku\ ;
+進入路 < shin''nyuuro\ ;
+大山椒魚 < oosanshouuo\ ;
+虎視眈眈 < koshitantan\ ;
+背日性 < haijitsusei\ ;
+背面飛行 < haimenhikou\ ;
+弾丸道路 < dangandouro\ ;
+間奏曲 < kansoukyoku\ ;
+優先外貨 < yuusengaika\ ;
+当用漢字 < touyoukanji\ ;
+指南役 < shinan''yaku\ ;
+脅迫状 < kyouhakujou\ ;
+民本主義 < minponshugi\ ;
+功名心 < koumyoushin\ ;
+回教国 < kaikyoukoku\ ;
+骨膜炎 < kotsumakuen\ ;
+人工受紛 < jinkoujufun\ ;
+主要物価 < shuyoubukka\ ;
+沢庵漬 < takuandzuke\ ;
+根切虫 < nekirimushi\ ;
+人工受精 < jinkoujusei\ ;
+送料共 < souryoutomo\ ;
+張本人 < chouhon''nin\ ;
+登山電車 < tozandensha\ ;
+暫定政府 < zanteiseifu\ ;
+乗車口 < joushaguchi\ ;
+乗合馬車 < noriaibasha\ ;
+一日路 < ichinichiji\ ;
+地質図 < chishitsuzu\ ;
+期成同盟 < kiseidoumei\ ;
+立明戦 < ritsumeisen\ ;
+抽象論 < chuushouron\ ;
+散光星雲 < sankouseiun\ ;
+仕訳表 < shiwakehyou\ ;
+飢餓療法 < kigaryouhou\ ;
+国税庁 < kokuzeichou\ ;
+糸偏景気 < itohenkeiki\ ;
+物価変動 < bukkahendou\ ;
+性悪説 < seiakusetsu\ ;
+近郊都市 < kinkoutoshi\ ;
+懐郷病 < kaikyoubyou\ ;
+公開期間 < koukaikikan\ ;
+前後不覚 < zengofukaku\ ;
+準備体操 < junbitaisou\ ;
+母系家族 < bokeikazoku\ ;
+歯科医術 < shikaijutsu\ ;
+金管楽器 < kinkangakki\ ;
+切磋琢磨 < sessatakuma\ ;
+一時解雇 < ichijikaiko\ ;
+柑橘類 < kankitsurui\ ;
+運転資金 < untenshikin\ ;
+塑性限界 < soseigenkai\ ;
+金権政治 < kinkenseiji\ ;
+防御部隊 < bougyobutai\ ;
+静止衛星 < seishieisei\ ;
+一音節 < ichionsetsu\ ;
+再度協議 < saidokyougi\ ;
+脱炭酸 < datsutansan\ ;
+新技術 < shingijutsu\ ;
+逆探知 < gyakutanchi\ ;
+一切合財 < issaigassai\ ;
+遺産相続 < isansouzoku\ ;
+拾得者 < shuutokusha\ ;
+宝物殿 < houmotsuden\ ;
+喫煙席 < kitsuenseki\ ;
+冷血漢 < reiketsukan\ ;
+塑性変形 < soseihenkei\ ;
+見様見真似 < miyoumimane\ ;
+主力艦 < shuryokukan\ ;
+一天四海 < ittenshikai\ ;
+車大工 < kurumadaiku\ ;
+過食症 < kashokushou\ ;
+音響効果 < onkyoukouka\ ;
+宿命論 < shukumeiron\ ;
+入金票 < nyuukinhyou\ ;
+単本位性 < tanhon''isei\ ;
+雲散霧消 < unsanmushou\ ;
+全体主義 < zentaishugi\ ;
+花屋敷 < hanayashiki\ ;
+共白髪 < tomoshiraga\ ;
+停止時間 < teishijikan\ ;
+低空飛行 < teikuuhikou\ ;
+口座係 < kouzakakari\ ;
+瓢虫 < tentoumushi\ ;
+生存率 < seizonritsu\ ;
+支度部屋 < shitakubeya\ ;
+熊本県 < kumamotoken\ ;
+直銭形 < chokusenkei\ ;
+動物性 < doubutsusei\ ;
+原爆症 < genbakushou\ ;
+加工貿易 < kakouboueki\ ;
+衛星放送 < eiseihousou\ ;
+電気分解 < denkibunkai\ ;
+左下 < hidarishita\ ;
+風致地区 < fuuchichiku\ ;
+密閉容器 < mippeiyouki\ ;
+連帯債務 < rentaisaimu\ ;
+金剛薩堕 < kongousatta\ ;
+一人天下 < hitoridenka\ ;
+電動式 < dendoushiki\ ;
+時間反転 < jikanhanten\ ;
+生産力 < seisanryoku\ ;
+副牧師 < fukubokushi\ ;
+聖餐式 < seisanshiki\ ;
+逆関数 < gyakukansuu\ ;
+七五三 < shichigosan\ ;
+駐留軍 < chuuryuugun\ ;
+唯物論 < yuibutsuron\ ;
+旅商人 < tabishounin\ ;
+西欧文明 < seioubunmei\ ;
+下部組織 < kabusoshiki\ ;
+相乗効果 < soujoukouka\ ;
+水平距離 < suiheikyori\ ;
+百出 < hyakushutsu\ ;
+技術料 < gijutsuryou\ ;
+軍備撤廃 < gunbiteppai\ ;
+固有名詞 < koyuumeishi\ ;
+練習帳 < renshuuchou\ ;
+造石高 < zoukokudaka\ ;
+軍隊式 < guntaishiki\ ;
+翻訳者 < hon''yakusha\ ;
+潤目鰯 < urumeiwashi\ ;
+人間疎外 < ningensogai\ ;
+茶褐色 < chakasshoku\ ;
+確実度 < kakujitsudo\ ;
+有機化学 < yuukikagaku\ ;
+総力戦 < souryokusen\ ;
+仲間値段 < nakamanedan\ ;
+好色漢 < koushokukan\ ;
+温故知新 < onkochishin\ ;
+初投稿 < hatsutoukou\ ;
+万万一 < manman''ichi\ ;
+暗視装置 < anshisouchi\ ;
+国家試験 < kokkashiken\ ;
+青果市場 < seikaichiba\ ;
+若侍 < wakazamurai\ ;
+紳士服 < shinshifuku\ ;
+民事裁判 < minjisaiban\ ;
+原子兵器 < genshiheiki\ ;
+一仕事 < hitoshigoto\ ;
+嗅神経 < kyuushinkei\ ;
+肯定応答 < kouteioutou\ ;
+変更不能 < henkoufunou\ ;
+継続的 < keizokuteki\ ;
+文学的 < bungakuteki\ ;
+紀勢本線 < kiseihonsen\ ;
+候由 < sourouyoshi\ ;
+麻裏草履 < asaurazouri\ ;
+六重唱 < rokujuushou\ ;
+台湾坊主 < taiwanbouzu\ ;
+季刊雑誌 < kikanzasshi\ ;
+南阿戦争 < nan''asensou\ ;
+無線周波 < musenshuuha\ ;
+玄人筋 < kuroutosuji\ ;
+長期金利 < choukikinri\ ;
+囃子方 < hayashikata\ ;
+大人物 < daijinbutsu\ ;
+飛行機等 < hikoukinado\ ;
+傀儡政府 < kairaiseifu\ ;
+同系色 < doukeishoku\ ;
+紅白粉 < benioshiroi\ ;
+宣誓式 < senseishiki\ ;
+市外電話 < shigaidenwa\ ;
+連邦政府 < renpouseifu\ ;
+放歌高吟 < houkakougin\ ;
+中和熱 < chuuwanetsu\ ;
+微量元素 < biryougenso\ ;
+英字新聞 < eijishinbun\ ;
+満身創痍 < manshinsoui\ ;
+第二組合 < dainikumiai\ ;
+消耗的 < shoukouteki\ ;
+攻撃的 < kougekiteki\ ;
+埋蔵物 < maizoubutsu\ ;
+副読本 < fukudokuhon\ ;
+麝香鼠 < jakounezumi\ ;
+木賃宿 < kichin''yado\ ;
+四角柱 < shikakuchuu\ ;
+中空壁 < chuukuukabe\ ;
+婦人警官 < fujinkeikan\ ;
+考証学 < koushougaku\ ;
+第三世界 < daisansekai\ ;
+毘沙門天 < bishamonten\ ;
+社会主義 < shakaishugi\ ;
+学位論文 < gakuironbun\ ;
+実証的 < jisshouteki\ ;
+救済策 < kyuusaisaku\ ;
+軍国調 < gunkokuchou\ ;
+白蝋病 < hakuroubyou\ ;
+社交辞令 < shakoujirei\ ;
+徴兵忌避 < chouheikihi\ ;
+狂犬病 < kyoukenbyou\ ;
+民衆的 < minshuuteki\ ;
+機会均等 < kikaikintou\ ;
+暫定措置 < zanteisochi\ ;
+方向音痴 < houkouonchi\ ;
+一両年 < ichiryounen\ ;
+世界銀行 < sekaiginkou\ ;
+大仏殿 < daibutsuden\ ;
+刹那的 < setsunateki\ ;
+全権委任 < zenken''inin\ ;
+伽話 < togibanashi\ ;
+自然言語 < shizengengo\ ;
+勅任官 < chokuninkan\ ;
+誇大妄想 < kodaimousou\ ;
+双十節 < soujuusetsu\ ;
+好色本 < koushokubon\ ;
+化粧道具 < keshoudougu\ ;
+不変資本 < fuhenshihon\ ;
+窒化物 < chikkabutsu\ ;
+松飾 < matsukazari\ ;
+三角翼 < sankakuyoku\ ;
+賞味期限 < shoumikigen\ ;
+成長株 < seichoukabu\ ;
+石材商 < sekizaishou\ ;
+供託金 < kyoutakukin\ ;
+心臓外科 < shinzougeka\ ;
+猫額大 < byougakudai\ ;
+地方色 < chihoushoku\ ;
+幾何級数 < kikakyuusuu\ ;
+三部合奏 < sanbugassou\ ;
+生中継 < namachuukei\ ;
+吸収剤 < kyuushuuzai\ ;
+蒙古人種 < moukojinshu\ ;
+電気化学 < denkikagaku\ ;
+東風 < higashikaze\ ;
+建蔽率 < kenpeiritsu\ ;
+客観的 < kyakkanteki\ ;
+豆腐一丁 < toufuitchou\ ;
+消費都市 < shouhitoshi\ ;
+下級職 < kakyuushoku\ ;
+一一〇番 < hyakutooban\ ;
+修飾語 < shuushokugo\ ;
+家族制度 < kazokuseido\ ;
+生存期間 < seizonkikan\ ;
+大食漢 < taishokukan\ ;
+冷笑的 < reishouteki\ ;
+支給額 < shikyuugaku\ ;
+不均質 < fukinshitsu\ ;
+代表的 < daihyouteki\ ;
+入道雲 < nyuudougumo\ ;
+野良仕事 < norashigoto\ ;
+共通点 < kyoutsuuten\ ;
+日伊辞典 < nichiijiten\ ;
+公徳心 < koutokushin\ ;
+不正乗車 < fuseijousha\ ;
+調査結果 < chousakekka\ ;
+形式論 < keishikiron\ ;
+不当廉売 < futourenbai\ ;
+金環食 < kinkanshoku\ ;
+出札所 < shussatsujo\ ;
+滅多矢鱈 < mettayatara\ ;
+北極海 < hokkyokukai\ ;
+前人未踏 < zenjinmitou\ ;
+行官庁 < gyoukanchou\ ;
+不当利得 < futouritoku\ ;
+回教寺院 < kaikyoujiin\ ;
+保身術 < hoshinjutsu\ ;
+鑑識眼 < kanshikigan\ ;
+北極洋 < hokkyokuyou\ ;
+赤紫 < akamurasaki\ ;
+軍事訓練 < gunjikunren\ ;
+彫刻界 < choukokukai\ ;
+馬鹿話 < bakabanashi\ ;
+総合口座 < sougoukouza\ ;
+物納税 < butsunouzei\ ;
+郡県制度 < gunkenseido\ ;
+使用可能 < shiyoukanou\ ;
+下女中 < shimojochuu\ ;
+内部留保 < naiburyuuho\ ;
+地下室 < chikashitsu\ ;
+再販制度 < saihanseido\ ;
+被選挙権 < hisenkyoken\ ;
+貸本屋 < kashihon''ya\ ;
+物価統制 < bukkatousei\ ;
+阿呆陀羅経 < ahodarakyou\ ;
+因数分解 < insuubunkai\ ;
+鍾乳洞 < shounyuudou\ ;
+職員録 < shokuinroku\ ;
+生生流転 < seiseiruten\ ;
+無知蒙昧 < muchimoumai\ ;
+梯子酒 < hashigozake\ ;
+滞在客 < taizaikyaku\ ;
+蓄電池 < chikudenchi\ ;
+試掘者 < shikutsusha\ ;
+大学寮 < daigakuryou\ ;
+姫小松 < himekomatsu\ ;
+真実味 < shinjitsumi\ ;
+旅役者 < tabiyakusha\ ;
+国民的 < kokuminteki\ ;
+戦没者 < senbotsusha\ ;
+流行病 < ryuukoubyou\ ;
+彫刻版 < choukokuban\ ;
+堕落坊主 < darakubouzu\ ;
+舞台度胸 < butaidokyou\ ;
+周旋業 < shuusengyou\ ;
+団扇虫 < uchiwamushi\ ;
+泰西名画 < taiseimeiga\ ;
+柳腰 < yanagigoshi\ ;
+口小言 < kuchikogoto\ ;
+法治国家 < houchikokka\ ;
+優先順位 < yuusenjun''i\ ;
+任命式 < ninmeishiki\ ;
+電力債 < denryokusai\ ;
+単位組合 < tan''ikumiai\ ;
+力動的 < rikidouteki\ ;
+夏帽子 < natsuboushi\ ;
+睡眠薬 < suimin''yaku\ ;
+卸相場 < oroshisouba\ ;
+印刷業 < insatsugyou\ ;
+管理情報 < kanrijouhou\ ;
+伝導率 < dendouritsu\ ;
+蛸入道 < takonyuudou\ ;
+談話室 < danwashitsu\ ;
+完全主義 < kanzenshugi\ ;
+安月給 < yasugekkyuu\ ;
+北極星 < hokkyokusei\ ;
+御霊代 < mitamashiro\ ;
+七不思議 < nanafushigi\ ;
+測量士 < sokuryoushi\ ;
+出願時 < shutsuganji\ ;
+報復行為 < houfukukoui\ ;
+三角琴 < sankakugoto\ ;
+鉄条網 < tetsujoumou\ ;
+宣伝文句 < sendenmonku\ ;
+二成文系 < niseibunkei\ ;
+体内時計 < tainaidokei\ ;
+翻訳権 < hon''yakuken\ ;
+玉杓子 < tamajakushi\ ;
+工業国 < kougyoukoku\ ;
+終夜運転 < shuuyaunten\ ;
+周旋料 < shuusenryou\ ;
+追撃戦 < tsuigekisen\ ;
+加速運動 < kasokuundou\ ;
+傷病兵 < shoubyouhei\ ;
+彼岸桜 < higanzakura\ ;
+対抗部隊 < taikoubutai\ ;
+結婚費用 < kekkonhiyou\ ;
+一時払 < ichijibarai\ ;
+内容物 < naiyoubutsu\ ;
+軍事政権 < gunjiseiken\ ;
+有機農法 < yuukinouhou\ ;
+防衛部長 < boueibuchou\ ;
+運営資金 < un''eishikin\ ;
+月見蕎麦 < tsukimisoba\ ;
+人生航路 < jinseikouro\ ;
+無一物 < muichimotsu\ ;
+生命保険 < seimeihoken\ ;
+労働力 < roudouryoku\ ;
+応急手当 < oukyuuteate\ ;
+有形無形 < yuukeimukei\ ;
+若竹亭 < wakataketei\ ;
+翻訳書 < hon''yakusho\ ;
+到着駅 < touchakueki\ ;
+男心 < otokogokoro\ ;
+少国民 < shoukokumin\ ;
+受信回路 < jushinkairo\ ;
+参考図書 < sankoutosho\ ;
+生学問 < namagakumon\ ;
+英雄崇拝 < eiyuusuuhai\ ;
+今月分 < kongetsubun\ ;
+分数式 < bunsuushiki\ ;
+受験番号 < jukenbangou\ ;
+重農主義 < juunoushugi\ ;
+授賞式 < jushoushiki\ ;
+掌中本 < shouchuubon\ ;
+省力化 < shouryokuka\ ;
+代表格 < daihyoukaku\ ;
+護国神社 < gokokujinja\ ;
+昼興行 < hirukougyou\ ;
+黙示録 < mokushiroku\ ;
+明治神宮 < meijijinguu\ ;
+少数意見 < shousuuiken\ ;
+人虱 < hitoshirami\ ;
+比翼連理 < hiyokurenri\ ;
+検察官 < kensatsukan\ ;
+供託者 < kyoutakusha\ ;
+海産物 < kaisanbutsu\ ;
+有期年金 < yuukinenkin\ ;
+返信用 < henshin''you\ ;
+二元放送 < nigenhousou\ ;
+自信過剰 < jishinkajou\ ;
+遁走曲 < tonsoukyoku\ ;
+奉納相撲 < hounouzumou\ ;
+辻強盗 < tsujigoutou\ ;
+人身御供 < hitomigokuu\ ;
+公式戦 < koushikisen\ ;
+保護検束 < hogokensoku\ ;
+分県地図 < bunkenchizu\ ;
+靴一足 < kutsuissoku\ ;
+阿諛追従 < ayutsuishou\ ;
+電光石火 < denkousekka\ ;
+波瀾万丈 < haranbanjou\ ;
+相互関係 < sougokankei\ ;
+浪花節 < naniwabushi\ ;
+内部仕様 < naibushiyou\ ;
+各大学 < kakudaigaku\ ;
+総退却 < soutaikyaku\ ;
+皮下注射 < hikachuusha\ ;
+乾燥野菜 < kansouyasai\ ;
+短機関銃 < tankikanjuu\ ;
+現地時間 < genchijikan\ ;
+国民服 < kokuminfuku\ ;
+一等軍曹 < ittougunsou\ ;
+実在論 < jitsuzairon\ ;
+救急車 < kyuukyuusha\ ;
+間接税 < kansetsuzei\ ;
+獣道 < kemonomichi\ ;
+家庭用品 < kateiyouhin\ ;
+乱開発 < rankaihatsu\ ;
+所帯主 < shotainushi\ ;
+鉱山技師 < kouzangishi\ ;
+防寒靴 < boukangutsu\ ;
+一子相伝 < isshisouden\ ;
+三角柱 < sankakuchuu\ ;
+一雫 < hitoshizuku\ ;
+仕訳帳 < shiwakechou\ ;
+粘着性 < nenchakusei\ ;
+時限立法 < jigenrippou\ ;
+羊雲 < hitsujigumo\ ;
+愛別離苦 < aibetsuriku\ ;
+密造酒 < mitsuzoushu\ ;
+固定資産 < koteishisan\ ;
+一夜漬 < ichiyadzuke\ ;
+和独辞典 < wadokujiten\ ;
+登校拒否 < toukoukyohi\ ;
+斜角柱 < shakakuchuu\ ;
+演奏旅行 < ensouryokou\ ;
+書画骨董 < shogakottou\ ;
+対照的 < taishouteki\ ;
+役人風 < yakuninkaze\ ;
+船舶業 < senpakugyou\ ;
+運動選手 < undousenshu\ ;
+学園都市 < gakuentoshi\ ;
+水道局 < suidoukyoku\ ;
+始発駅 < shihatsueki\ ;
+東洋主義 < touyoushugi\ ;
+北極圏 < hokkyokuken\ ;
+日用品 < nichiyouhin\ ;
+反逆者 < hangyakusha\ ;
+大風呂敷 < ooburoshiki\ ;
+有蓋貨車 < yuugaikasha\ ;
+政治資金 < seijishikin\ ;
+登録済 < tourokuzumi\ ;
+専売局 < senbaikyoku\ ;
+権力者 < kenryokusha\ ;
+言論機関 < genronkikan\ ;
+養護学校 < yougogakkou\ ;
+恒久的 < koukyuuteki\ ;
+走行時間 < soukoujikan\ ;
+反逆罪 < hangyakuzai\ ;
+評価基準 < hyoukakijun\ ;
+特等席 < tokutouseki\ ;
+内服薬 < naifukuyaku\ ;
+臆病風 < okubyoukaze\ ;
+供給者 < kyoukyuusha\ ;
+彫刻師 < choukokushi\ ;
+新聞記事 < shinbunkiji\ ;
+夫唱婦随 < fushoufuzui\ ;
+電子辞書 < denshijisho\ ;
+求人難 < kyuujin''nan\ ;
+猿轡 < sarugutsuwa\ ;
+試掘権 < shikutsuken\ ;
+同時録音 < doujirokuon\ ;
+管理社会 < kanrishakai\ ;
+一視同仁 < isshidoujin\ ;
+構造変化 < kouzouhenka\ ;
+在京中 < zaikyouchuu\ ;
+方程式 < houteishiki\ ;
+静力学 < seirikigaku\ ;
+女流作家 < joryuusakka\ ;
+一覧表 < ichiranhyou\ ;
+北朝鮮 < kitachousen\ ;
+司法制度 < shihouseido\ ;
+脈所 < myakudokoro\ ;
+百千鳥 < momochidori\ ;
+勤務交代 < kinmukoutai\ ;
+短編映画 < tanpen''eiga\ ;
+銃剣術 < juukenjutsu\ ;
+会員規約 < kaiinkiyaku\ ;
+納骨堂 < noukotsudou\ ;
+耳小骨 < jishoukotsu\ ;
+大静脈 < daijoumyaku\ ;
+経済力 < keizairyoku\ ;
+学協会 < gakukyoukai\ ;
+中心点 < chuushinten\ ;
+二点先取 < nitensenshu\ ;
+反戦主義 < hansenshugi\ ;
+暴虎馮河 < boukohyouga\ ;
+北極光 < hokkyokukou\ ;
+食品店 < shokuhinten\ ;
+領収書 < ryoushuusho\ ;
+左腕投手 < sawantoushu\ ;
+但書 < tadashigaki\ ;
+前期試験 < zenkishiken\ ;
+通知表 < tsuuchihyou\ ;
+連発銃 < renpatsujuu\ ;
+攻撃側 < kougekigawa\ ;
+大中小 < daichuushou\ ;
+平均律 < heikinritsu\ ;
+赤棟蛇 < yamakagashi\ ;
+被選挙人 < hisenkyonin\ ;
+観念的 < kan''nenteki\ ;
+専門職 < senmonshoku\ ;
+共進会 < kyoushinkai\ ;
+信用状 < shin''youjou\ ;
+織物業 < orimonogyou\ ;
+背後関係 < haigokankei\ ;
+腰刀 < koshigatana\ ;
+超特急 < choutokkyuu\ ;
+返信料 < henshinryou\ ;
+壁新聞 < kabeshinbun\ ;
+餓鬼大将 < gakidaishou\ ;
+番号記号 < bangoukigou\ ;
+融解熱 < yuukainetsu\ ;
+節博士 < fushihakase\ ;
+見物人 < kenbutsunin\ ;
+登録料 < tourokuryou\ ;
+周旋人 < shuusen''nin\ ;
+刑事補償 < keijihoshou\ ;
+高麗芝 < kouraishiba\ ;
+不親切 < fushinsetsu\ ;
+親告罪 < shinkokuzai\ ;
+蔦紅葉 < tsutamomiji\ ;
+五目鮨 < gomokuzushi\ ;
+編集長 < henshuuchou\ ;
+出版業 < shuppangyou\ ;
+調教師 < choukyoushi\ ;
+進駐軍 < shinchuugun\ ;
+別動隊 < betsudoutai\ ;
+逆噴射 < gyakufunsha\ ;
+一体全体 < ittaizentai\ ;
+二口目 < futakuchime\ ;
+海運同盟 < kaiundoumei\ ;
+専守防衛 < senshubouei\ ;
+南阿連邦 < nan''arenpou\ ;
+逆命題 < gyakumeidai\ ;
+発行部数 < hakkoubusuu\ ;
+刑事裁判 < keijisaiban\ ;
+公平無私 < kouheimushi\ ;
+物価指数 < bukkashisuu\ ;
+粘着剤 < nenchakuzai\ ;
+刑事被告 < keijihikoku\ ;
+生物界 < seibutsukai\ ;
+記者会見 < kishakaiken\ ;
+従軍記者 < juugunkisha\ ;
+空気抵抗 < kuukiteikou\ ;
+五目飯 < gomokumeshi\ ;
+貢物 < mitsugimono\ ;
+現金正価 < genkinseika\ ;
+採掘権 < saikutsuken\ ;
+大同小異 < daidoushoui\ ;
+生命倫理 < seimeirinri\ ;
+全幅的 < zenpukuteki\ ;
+駆動装置 < kudousouchi\ ;
+彫刻刀 < choukokutou\ ;
+千軍万馬 < sengunbanba\ ;
+変幻自在 < hengenjizai\ ;
+研究心 < kenkyuushin\ ;
+相対主義 < soutaishugi\ ;
+独占的 < dokusenteki\ ;
+酸中毒 < sanchuudoku\ ;
+軍医学校 < gun''igakkou\ ;
+超新星 < choushinsei\ ;
+都民会館 < tominkaikan\ ;
+市場価値 < shijoukachi\ ;
+頂戴物 < choudaimono\ ;
+平和論者 < heiwaronsha\ ;
+宿泊所 < shukuhakujo\ ;
+尿素樹脂 < nyousojushi\ ;
+売却益 < baikyakueki\ ;
+掃除当番 < soujitouban\ ;
+構造式 < kouzoushiki\ ;
+代理戦争 < dairisensou\ ;
+代表作 < daihyousaku\ ;
+地盤沈下 < jibanchinka\ ;
+構成主義 < kouseishugi\ ;
+正多面体 < seitamentai\ ;
+過失犯 < kashitsuhan\ ;
+紙一枚 < kamiichimai\ ;
+保税地域 < hozeichiiki\ ;
+再認識 < saininshiki\ ;
+人員整理 < jin''inseiri\ ;
+風物詩 < fuubutsushi\ ;
+人間以前 < ningen''izen\ ;
+実関数 < jitsukansuu\ ;
+大好物 < daikoubutsu\ ;
+乳濁液 < nyuudakueki\ ;
+水冷式 < suireishiki\ ;
+平面図形 < heimenzukei\ ;
+心配性 < shinpaishou\ ;
+客室 < kyakushitsu\ ;
+宇宙旅行 < uchuuryokou\ ;
+後始末 < atoshimatsu\ ;
+全勢力 < zenseiryoku\ ;
+荘園制度 < shouenseido\ ;
+離心率 < rishinritsu\ ;
+供給源 < kyoukyuugen\ ;
+自社製品 < jishaseihin\ ;
+初期段階 < shokidankai\ ;
+前途遼遠 < zentoryouen\ ;
+大文節 < daibunsetsu\ ;
+一夜妻 < hitoyodzuma\ ;
+結合子 < ketsugoushi\ ;
+死亡率 < shibouritsu\ ;
+時局柄 < jikyokugara\ ;
+赤葡萄酒 < akabudoushu\ ;
+原始時代 < genshijidai\ ;
+配当率 < haitouritsu\ ;
+整骨師 < seikotsushi\ ;
+参謀本部 < sanbouhonbu\ ;
+女子大生 < joshidaisei\ ;
+関税率 < kanzeiritsu\ ;
+排外運動 < haigaiundou\ ;
+中毒死 < chuudokushi\ ;
+水平飛行 < suiheihikou\ ;
+最前列 < saizenretsu\ ;
+低回趣味 < teikaishumi\ ;
+互恵貿易 < gokeiboueki\ ;
+人間以上 < ningen''ijou\ ;
+御所車 < goshoguruma\ ;
+傲慢無礼 < goumanburei\ ;
+人柱 < hitobashira\ ;
+法務委員会 < houmuiinkai\ ;
+内曲球 < naikyokkyuu\ ;
+徒手空拳 < toshukuuken\ ;
+亜炭化物 < atankabutsu\ ;
+水泳大会 < suieitaikai\ ;
+解散説 < kaisansetsu\ ;
+男女同権 < danjodouken\ ;
+年金制度 < nenkinseido\ ;
+空軍基地 < kuugunkichi\ ;
+大和時代 < yamatojidai\ ;
+建造物 < kenzoubutsu\ ;
+帝王切開 < teiousekkai\ ;
+献血車 < kenketsusha\ ;
+小品集 < shouhinshuu\ ;
+霊安室 < reianshitsu\ ;
+反政府党 < hanseifutou\ ;
+離着陸 < richakuriku\ ;
+脊黄青鸚哥 < sekiseiinko\ ;
+歯科病院 < shikabyouin\ ;
+高野聖 < kouyahijiri\ ;
+載貨屯数 < saikatonsuu\ ;
+整髪剤 < seihatsuzai\ ;
+処世術 < shoseijutsu\ ;
+論説委員 < ronsetsuiin\ ;
+勝手次第 < katteshidai\ ;
+空挺隊員 < kuuteitaiin\ ;
+自由経済 < jiyuukeizai\ ;
+旗頭 < hatagashira\ ;
+子年 < nezumidoshi\ ;
+八幡宮 < hachimanguu\ ;
+財政破綻 < zaiseihatan\ ;
+歌唱力 < kashouryoku\ ;
+回折損 < kaisetsuson\ ;
+政治献金 < seijikenkin\ ;
+骨仕事 < honeshigoto\ ;
+臆病者 < okubyoumono\ ;
+旋風 < tsumujikaze\ ;
+手間仕事 < temashigoto\ ;
+一本勝負 < ipponshoubu\ ;
+朝飯前 < asameshimae\ ;
+質実 < shitsujitsu\ ;
+刊行物 < kankoubutsu\ ;
+眼鏡橋 < meganebashi\ ;
+購入先 < kounyuusaki\ ;
+中途半端 < chuutohanpa\ ;
+通過儀礼 < tsuukagirei\ ;
+丼物 < donburimono\ ;
+弘仁格 < kouninkyaku\ ;
+英字集合 < eijishuugou\ ;
+署名運動 < shomeiundou\ ;
+塑性指数 < soseishisuu\ ;
+合同労組 < goudourouso\ ;
+杖柱 < tsuehashira\ ;
+旧大陸 < kyuutairiku\ ;
+主管機関 < shukankikan\ ;
+天気都合 < tenkitsugou\ ;
+兵器工場 < heikikoujou\ ;
+下瞼 < shitamabuta\ ;
+診察日 < shinsatsubi\ ;
+平民主義 < heiminshugi\ ;
+家族会議 < kazokukaigi\ ;
+東宮職 < touguushoku\ ;
+減債基金 < gensaikikin\ ;
+警察署 < keisatsusho\ ;
+冗談口 < joudanguchi\ ;
+織物商 < orimonoshou\ ;
+祖先崇拝 < sosensuuhai\ ;
+八辺形 < hachihenkei\ ;
+針仕事 < harishigoto\ ;
+事大思想 < jidaishisou\ ;
+好人物 < koujinbutsu\ ;
+地場産業 < jibasangyou\ ;
+征服欲 < seifukuyoku\ ;
+連邦国家 < renpoukokka\ ;
+立憲主義 < rikkenshugi\ ;
+杉林 < sugibayashi\ ;
+解説者 < kaisetsusha\ ;
+広告業 < koukokugyou\ ;
+八方美人 < happoubijin\ ;
+創立者 < souritsusha\ ;
+解熱薬 < genetsuyaku\ ;
+日曜版 < nichiyouban\ ;
+新快速 < shinkaisoku\ ;
+屋根裏部屋 < yaneurabeya\ ;
+世界情勢 < sekaijousei\ ;
+不快指数 < fukaishisuu\ ;
+遠洋航路 < en''youkouro\ ;
+中年者 < chuunenmono\ ;
+国家経済 < kokkakeizai\ ;
+戴冠式 < taikanshiki\ ;
+臨時増刊 < rinjizoukan\ ;
+軽業師 < karuwazashi\ ;
+中心地 < chuushinchi\ ;
+商慣習 < shoukanshuu\ ;
+生物戦 < seibutsusen\ ;
+救急法 < kyuukyuuhou\ ;
+食前酒 < shokuzenshu\ ;
+公武合体 < koubugattai\ ;
+深夜族 < shin''yazoku\ ;
+予讚本線 < yosanhonsen\ ;
+根本主義 < konponshugi\ ;
+迫撃砲 < hakugekihou\ ;
+非常警戒 < hijoukeikai\ ;
+中央政府 < chuuouseifu\ ;
+進軍中 < shingunchuu\ ;
+媒酌人 < baishakunin\ ;
+両性的 < ryouseiteki\ ;
+刺状突起 < shijoutokki\ ;
+潜勢力 < senseiryoku\ ;
+公的扶助 < koutekifujo\ ;
+合成樹脂 < gouseijushi\ ;
+割賦購買 < kappukoubai\ ;
+保健室 < hokenshitsu\ ;
+広告料 < koukokuryou\ ;
+速力度 < sokuryokudo\ ;
+盆提灯 < bondjouchin\ ;
+未来指向 < miraishikou\ ;
+自由放任 < jiyuuhounin\ ;
+自転周期 < jitenshuuki\ ;
+聴神経 < choushinkei\ ;
+超大国 < choutaikoku\ ;
+出版元 < shuppanmoto\ ;
+馬鹿力 < bakadjikara\ ;
+自己主張 < jikoshuchou\ ;
+晒者 < sarashimono\ ;
+陸半球 < rikuhankyuu\ ;
+千言万語 < sengenbango\ ;
+統率者 < tousotsusha\ ;
+公共心 < koukyoushin\ ;
+徒歩競走 < tohokyousou\ ;
+親善試合 < shinzenjiai\ ;
+窒素固定 < chissokotei\ ;
+中共軍 < chuukyougun\ ;
+漂白剤 < hyouhakuzai\ ;
+収入源 < shuunyuugen\ ;
+海上保険 < kaijouhoken\ ;
+殿様風 < tonosamafuu\ ;
+心配事 < shinpaigoto\ ;
+飛行甲板 < hikoukouban\ ;
+指導主事 < shidoushuji\ ;
+相互銀行 < sougoginkou\ ;
+軍司令部 < gunshireibu\ ;
+諸事万端 < shojibantan\ ;
+労災保険 < rousaihoken\ ;
+太陽熱 < taiyounetsu\ ;
+判決文 < hanketsubun\ ;
+時輪金剛 < jirinkongou\ ;
+意気銷沈 < ikishouchin\ ;
+信仰的 < shinkouteki\ ;
+膝拍子 < hizabyoushi\ ;
+関税回避 < kanzeikaihi\ ;
+盲目的 < moumokuteki\ ;
+神通力 < jintsuuriki\ ;
+共和主義 < kyouwashugi\ ;
+恐妻病 < kyousaibyou\ ;
+阿多福風邪 < otafukukaze\ ;
+予防戦争 < yobousensou\ ;
+酸性土壌 < sanseidojou\ ;
+忠実度 < chuujitsudo\ ;
+信任状 < shin''ninjou\ ;
+人身保護 < jinshinhogo\ ;
+中柱 < nakabashira\ ;
+新参者 < shinzanmono\ ;
+年金保険 < nenkinhoken\ ;
+指向言語 < shikougengo\ ;
+巡査部長 < junsabuchou\ ;
+真犯人 < shinhan''nin\ ;
+狸爺 < tanukijijii\ ;
+保証期間 < hoshoukikan\ ;
+不法監禁 < fuhoukankin\ ;
+御苦労様 < gokurousama\ ;
+警察犬 < keisatsuken\ ;
+自治大臣 < jichidaijin\ ;
+立体交差 < rittaikousa\ ;
+竜頭蛇尾 < ryuutoudabi\ ;
+充電期間 < juudenkikan\ ;
+叢時雨 < murashigure\ ;
+海食洞 < kaishokudou\ ;
+記憶媒体 < kiokubaitai\ ;
+嫡室 < chakushitsu\ ;
+参列者 < sanretsusha\ ;
+養護教諭 < yougokyouyu\ ;
+人本主義 < jinponshugi\ ;
+海洋投棄 < kaiyoutouki\ ;
+生物圏 < seibutsuken\ ;
+供給地 < kyoukyuuchi\ ;
+干渉縞 < kanshoujima\ ;
+独創的 < dokusouteki\ ;
+不随意運動 < fuzuiiundou\ ;
+和歌山県 < wakayamaken\ ;
+太陽電波 < taiyoudenpa\ ;
+理科大学 < rikadaigaku\ ;
+染色体 < senshokutai\ ;
+座頭鯨 < zatoukujira\ ;
+近衛師団 < konoeshidan\ ;
+一衣帯水 < ichiitaisui\ ;
+資本主義 < shihonshugi\ ;
+狐猿 < kitsunezaru\ ;
+自由結婚 < jiyuukekkon\ ;
+必須科目 < hissukamoku\ ;
+近代主義 < kindaishugi\ ;
+東北 < higashikita\ ;
+守護天使 < shugotenshi\ ;
+日本語文字 < nihongomoji\ ;
+作業部会 < sagyoubukai\ ;
+都市再生 < toshisaisei\ ;
+目的論 < mokutekiron\ ;
+省略時 < shouryakuji\ ;
+七月 < shichigatsu\ ;
+幼生器官 < youseikikan\ ;
+御用組合 < goyoukumiai\ ;
+軍事演習 < gunjienshuu\ ;
+石炭殻 < sekitangara\ ;
+分裂性 < bunretsusei\ ;
+短縮形 < tanshukukei\ ;
+人道主義 < jindoushugi\ ;
+前史時代 < zenshijidai\ ;
+海上封鎖 < kaijoufuusa\ ;
+有職者 < yuushokusha\ ;
+意味深長 < imishinchou\ ;
+一昔 < hitomukashi\ ;
+親和力 < shinwaryoku\ ;
+交通違反 < koutsuuihan\ ;
+先々月 < sensengetsu\ ;
+四十八手 < yonjuuhatte\ ;
+手巻寿司 < temakizushi\ ;
+有体物 < yuutaibutsu\ ;
+東側 < higashigawa\ ;
+短絡的 < tanrakuteki\ ;
+公開講座 < koukaikouza\ ;
+片言隻句 < hengensekku\ ;
+魅力的 < miryokuteki\ ;
+化学式 < kagakushiki\ ;
+一撮 < hitotsumami\ ;
+太陽日 < taiyoujitsu\ ;
+高関税化 < koukanzeika\ ;
+運送会社 < unsougaisha\ ;
+東宮御所 < touguugosho\ ;
+延滞利息 < entairisoku\ ;
+野球熱 < yakyuunetsu\ ;
+火災警報 < kasaikeihou\ ;
+飾付 < kazaritsuke\ ;
+総指揮官 < soushikikan\ ;
+放送時間 < housoujikan\ ;
+熱気球 < netsukikyuu\ ;
+空想力 < kuusouryoku\ ;
+有害無益 < yuugaimueki\ ;
+静岡県 < shizuokaken\ ;
+婦人問題 < fujinmondai\ ;
+晴耕雨読 < seikouudoku\ ;
+反逆人 < hangyakunin\ ;
+染髪剤 < senpatsuzai\ ;
+全身病 < zenshinbyou\ ;
+不文憲法 < fubunkenpou\ ;
+腹話術 < fukuwajutsu\ ;
+一寸法師 < issunboushi\ ;
+可能動詞 < kanoudoushi\ ;
+流量計 < ryuuryoukei\ ;
+完全雇用 < kanzenkoyou\ ;
+線織面 < senshikimen\ ;
+完結編 < kanketsuhen\ ;
+副鼻腔炎 < fukubikuuen\ ;
+学生証 < gakuseishou\ ;
+造幣局 < zouheikyoku\ ;
+説明書 < setsumeisho\ ;
+自給率 < jikyuuritsu\ ;
+多元放送 < tagenhousou\ ;
+打物師 < uchimonoshi\ ;
+気息奄奄 < kisokuen''en\ ;
+惨殺者 < zansatsusha\ ;
+磯巾着 < isoginchaku\ ;
+釈迦如来 < shakanyorai\ ;
+予約名簿 < yoyakumeibo\ ;
+証人席 < shouninseki\ ;
+嫡出 < chakushutsu\ ;
+不買同盟 < fubaidoumei\ ;
+下心 < shitagokoro\ ;
+若白髪 < wakashiraga\ ;
+非買同盟 < hibaidoumei\ ;
+数学的 < suugakuteki\ ;
+直円柱 < chokuenchuu\ ;
+説明文 < setsumeibun\ ;
+相対敬語 < soutaikeigo\ ;
+経済特区 < keizaitokku\ ;
+任意団体 < nin''idantai\ ;
+水産物 < suisanbutsu\ ;
+接敵移動 < settekiidou\ ;
+教則本 < kyousokubon\ ;
+鰥寡孤独 < kankakodoku\ ;
+乙女心 < otomegokoro\ ;
+相対売買 < aitaibaibai\ ;
+無人工場 < mujinkoujou\ ;
+戦勝国 < senshoukoku\ ;
+南北朝 < nanbokuchou\ ;
+夏衣 < natsugoromo\ ;
+幻想曲 < gensoukyoku\ ;
+不換紙幣 < fukanshihei\ ;
+旅興行 < tabikougyou\ ;
+相乗作用 < soujousayou\ ;
+予算不足 < yosanfusoku\ ;
+豆電球 < mamedenkyuu\ ;
+解説書 < kaisetsusho\ ;
+薬理作用 < yakurisayou\ ;
+翼手目 < yokushumoku\ ;
+婚約者 < kon''yakusha\ ;
+為替管理 < kawasekanri\ ;
+郡役所 < gun''yakusho\ ;
+知識層 < chishikisou\ ;
+事前協議 < jisenkyougi\ ;
+厚顔無恥 < kouganmuchi\ ;
+撞木鮫 < shumokuzame\ ;
+硼酸末 < housanmatsu\ ;
+安全装置 < anzensouchi\ ;
+妖術者 < youjutsusha\ ;
+余白頁 < yohakupeeji\ ;
+統一的 < touitsuteki\ ;
+空気感染 < kuukikansen\ ;
+水道工事 < suidoukouji\ ;
+一紙半銭 < isshihansen\ ;
+反射運動 < hanshaundou\ ;
+身障者 < shinshousha\ ;
+食卓塩 < shokutakuen\ ;
+八字髭 < hachijihige\ ;
+復活祭 < fukkatsusai\ ;
+主産物 < shusanbutsu\ ;
+美術的 < bijutsuteki\ ;
+塩類溶液 < enruiyoueki\ ;
+珍現象 < chingenshou\ ;
+三稜鏡 < sanryoukyou\ ;
+外人部隊 < gaijinbutai\ ;
+拝金主義 < haikinshugi\ ;
+大陸棚 < tairikudana\ ;
+殿様芸 < tonosamagei\ ;
+海食崖 < kaishokugai\ ;
+元禄袖 < genrokusode\ ;
+異体同心 < itaidoushin\ ;
+乗数効果 < jousuukouka\ ;
+全盛時代 < zenseijidai\ ;
+文教族 < bunkyouzoku\ ;
+面向不背 < menkoufuhai\ ;
+平和維持軍 < heiwaijigun\ ;
+湿度計 < shitsudokei\ ;
+召集者 < shoushuusha\ ;
+空理空論 < kuurikuuron\ ;
+八極拳 < hakkyokuken\ ;
+信仰心 < shinkoushin\ ;
+人一倍 < hitoichibai\ ;
+合衆国 < gasshuukoku\ ;
+機関室 < kikanshitsu\ ;
+非常階段 < hijoukaidan\ ;
+傷痍軍人 < shouigunjin\ ;
+冷却液 < reikyakueki\ ;
+漁獲高 < gyokakudaka\ ;
+公用物 < kouyoubutsu\ ;
+単発銃 < tanpatsujuu\ ;
+不嗜 < butashinami\ ;
+月賦販売 < geppuhanbai\ ;
+万世一系 < banseiikkei\ ;
+第二部長 < dainibuchou\ ;
+雀蜂 < suzumebachi\ ;
+行儀作法 < gyougisahou\ ;
+重加算税 < juukasanzei\ ;
+冷却水 < reikyakusui\ ;
+献立表 < kondatehyou\ ;
+一心不乱 < isshinfuran\ ;
+軍事裁判 < gunjisaiban\ ;
+若草色 < wakakusairo\ ;
+照明器具 < shoumeikigu\ ;
+三国一 < sangokuichi\ ;
+督促状 < tokusokujou\ ;
+屍陀林王 < shidarin''ou\ ;
+仮受取 < kariuketori\ ;
+過去完了 < kakokanryou\ ;
+戦後欧州 < sengooushuu\ ;
+袋小路 < fukurokouji\ ;
+警察官 < keisatsukan\ ;
+首脳会議 < shunoukaigi\ ;
+家庭料理 < kateiryouri\ ;
+日本銀行 < nihonginkou\ ;
+自然律 < shizenritsu\ ;
+職務給 < shokumukyuu\ ;
+遠交近攻 < enkoukinkou\ ;
+旋回運動 < senkaiundou\ ;
+療養中 < ryouyouchuu\ ;
+合成物 < gouseibutsu\ ;
+帰国子女 < kikokushijo\ ;
+三行半 < mikudarihan\ ;
+行政学 < gyouseigaku\ ;
+実行力 < jikkouryoku\ ;
+長火鉢 < nagahibachi\ ;
+雌雄淘汰 < shiyuutouta\ ;
+海食台 < kaishokudai\ ;
+郵便物 < yuubinbutsu\ ;
+銀本位制 < ginhon''isei\ ;
+空気枕 < kuukimakura\ ;
+奨学金 < shougakukin\ ;
+組頭 < kumigashira\ ;
+自業自得 < jigoujitoku\ ;
+公生活 < kouseikatsu\ ;
+遮蔽物 < shaheibutsu\ ;
+主格補語 < shukakuhogo\ ;
+絹織物 < kinuorimono\ ;
+芸術論 < geijutsuron\ ;
+傘形器官 < sankeikikan\ ;
+薬効物 < yakkoubutsu\ ;
+緑虫 < midorimushi\ ;
+電化製品 < denkaseihin\ ;
+庭仕事 < niwashigoto\ ;
+資産価値 < shisankachi\ ;
+悪質化 < akushitsuka\ ;
+中央競馬 < chuuoukeiba\ ;
+知識人 < chishikijin\ ;
+赤字財政 < akajizaisei\ ;
+白内障 < hakunaishou\ ;
+政治亡命 < seijiboumei\ ;
+五十年祭 < gojuunensai\ ;
+遺族年金 < izokunenkin\ ;
+人工栄養 < jinkoueiyou\ ;
+擬古典的 < gikotenteki\ ;
+楽天的 < rakutenteki\ ;
+電気会社 < denkigaisha\ ;
+気随気儘 < kizuikimama\ ;
+別勘定 < betsukanjou\ ;
+金杓子 < kanajakushi\ ;
+長大息 < choutaisoku\ ;
+聴取料 < choushuryou\ ;
+無反動銃 < muhandoujuu\ ;
+遠心分離 < enshinbunri\ ;
+場外馬券 < jougaibaken\ ;
+青年時代 < seinenjidai\ ;
+頸静脈 < keijoumyaku\ ;
+漁獲量 < gyokakuryou\ ;
+語学力 < gogakuryoku\ ;
+準備室 < junbishitsu\ ;
+中年増 < chuudoshima\ ;
+自由問題 < jiyuumondai\ ;
+漫画雑誌 < mangazasshi\ ;
+亜鉛中毒 < aenchuudoku\ ;
+背筋力 < haikinryoku\ ;
+所有物 < shoyuubutsu\ ;
+祖先伝来 < sosendenrai\ ;
+産土神 < ubusunagami\ ;
+雪礫 < yukitsubute\ ;
+暗赤色 < ansekishoku\ ;
+仕立物 < shitatemono\ ;
+一党支配 < ittoushihai\ ;
+旗標 < hatajirushi\ ;
+夢現 < yumeutsutsu\ ;
+七回忌 < shichikaiki\ ;
+主観主義 < shukanshugi\ ;
+溶解熱 < youkainetsu\ ;
+米十粒 < komejuuryuu\ ;
+呼吸器系 < kokyuukikei\ ;
+特注品 < tokuchuuhin\ ;
+雛祭 < hinamatsuri\ ;
+為替投機 < kawasetouki\ ;
+一知半解 < itchihankai\ ;
+不定冠詞 < futeikanshi\ ;
+代議政体 < daigiseitai\ ;
+平和攻勢 < heiwakousei\ ;
+低価格化 < teikakakuka\ ;
+古新聞 < furushinbun\ ;
+配達人 < haitatsunin\ ;
+京人形 < kyouningyou\ ;
+肘掛椅子 < hijikakeisu\ ;
+公務災害 < koumusaigai\ ;
+景気循環 < keikijunkan\ ;
+関係法規 < kankeihouki\ ;
+賀詞交換 < gashikoukan\ ;
+耕地整理 < kouchiseiri\ ;
+完結文 < kanketsubun\ ;
+表裏一体 < hyouriittai\ ;
+反対色 < hantaishoku\ ;
+商品学 < shouhingaku\ ;
+奴隷解放 < doreikaihou\ ;
+入射角 < nyuushakaku\ ;
+消防庁 < shoubouchou\ ;
+阿多福豆 < otafukumame\ ;
+奇麗所 < kireidokoro\ ;
+女旱 < on''nahideri\ ;
+山吹色 < yamabukiiro\ ;
+企業整備 < kigyouseibi\ ;
+軍事行動 < gunjikoudou\ ;
+打撃率 < dagekiritsu\ ;
+地方自治 < chihoujichi\ ;
+請求額 < seikyuugaku\ ;
+百年祭 < hyakunensai\ ;
+世俗主義 < sezokushugi\ ;
+高炭素鋼 < koutansokou\ ;
+抑留者 < yokuryuusha\ ;
+食連星 < shokurensei\ ;
+落札値 < rakusatsune\ ;
+自然力 < shizenryoku\ ;
+有機肥料 < yuukihiryou\ ;
+秘書室 < hishoshitsu\ ;
+千秋楽 < senshuuraku\ ;
+比例配分 < hireihaibun\ ;
+探究心 < tankyuushin\ ;
+反対運動 < hantaiundou\ ;
+添付書類 < tenpushorui\ ;
+恋愛遊戯 < ren''aiyuugi\ ;
+副社長 < fukushachou\ ;
+投射原理 < toushagenri\ ;
+大言壮語 < taigensougo\ ;
+月例会 < getsureikai\ ;
+数日間 < suujitsukan\ ;
+命名式 < meimeishiki\ ;
+指導力 < shidouryoku\ ;
+感覚的 < kankakuteki\ ;
+金本位制 < kinhon''isei\ ;
+造語成分 < zougoseibun\ ;
+再開発 < saikaihatsu\ ;
+入学難 < nyuugakunan\ ;
+分折学 < bunsekigaku\ ;
+百科辞典 < hyakkajiten\ ;
+若輩者 < jakuhaimono\ ;
+万代不易 < bandaifueki\ ;
+幅変調 < habahenchou\ ;
+危険角度 < kikenkakudo\ ;
+化学兵器 < kagakuheiki\ ;
+女心 < on''nagokoro\ ;
+小惑星 < shouwakusei\ ;
+漢字制限 < kanjiseigen\ ;
+年功制度 < nenkouseido\ ;
+人物像 < jinbutsuzou\ ;
+躁鬱病 < souutsubyou\ ;
+直輸入 < chokuyunyuu\ ;
+促進剤 < sokushinzai\ ;
+海底火山 < kaiteikazan\ ;
+隔靴掻痒 < kakkasouyou\ ;
+握鮨 < nigirizushi\ ;
+鼻出血 < bishukketsu\ ;
+静心 < shizugokoro\ ;
+非戦論者 < hisenronsha\ ;
+急進党 < kyuushintou\ ;
+万世不易 < banseifueki\ ;
+再生繊維 < saiseisen''i\ ;
+運転系統 < untenkeitou\ ;
+任意同行 < nin''idoukou\ ;
+隣町 < tonarimachi\ ;
+臨時国会 < rinjikokkai\ ;
+試験期間 < shikenkikan\ ;
+金婚式 < kinkonshiki\ ;
+満艦飾 < mankanshoku\ ;
+年功加俸 < nenkoukahou\ ;
+応援団長 < ouendanchou\ ;
+大晦 < ootsugomori\ ;
+傍迷惑 < hatameiwaku\ ;
+軍医総監 < gun''isoukan\ ;
+昼食時 < chuushokuji\ ;
+芸術祭 < geijutsusai\ ;
+慈善団体 < jizendantai\ ;
+自習時間 < jishuujikan\ ;
+握飯 < nigirimeshi\ ;
+国家補償 < kokkahoshou\ ;
+盛者必衰 < seijahissui\ ;
+学生服 < gakuseifuku\ ;
+人文主義 < jinbunshugi\ ;
+電話番号 < denwabangou\ ;
+就業地 < shuugyouchi\ ;
+表示物 < hyoujibutsu\ ;
+転入生 < ten''nyuusei\ ;
+理論体系 < rirontaikei\ ;
+入学金 < nyuugakukin\ ;
+日本海溝 < nihonkaikou\ ;
+経常利益 < keijourieki\ ;
+革新系 < kakushinkei\ ;
+引責辞任 < insekijinin\ ;
+陽極線 < youkyokusen\ ;
+出演者 < shutsuensha\ ;
+会議室 < kaigishitsu\ ;
+処女航海 < shojokoukai\ ;
+陸運局 < rikuunkyoku\ ;
+追徴金 < tsuichoukin\ ;
+殺菌力 < sakkinryoku\ ;
+投宿者 < toushukusha\ ;
+新庁舎 < shinchousha\ ;
+冷却剤 < reikyakuzai\ ;
+一軒一軒 < ikken''ikken\ ;
+遊覧客 < yuurankyaku\ ;
+黄金虫 < koganemushi\ ;
+問答無用 < mondoumuyou\ ;
+運命論者 < unmeironsha\ ;
+黒死病 < kokushibyou\ ;
+郵便局 < yuubinkyoku\ ;
+菜種梅雨 < natanedzuyu\ ;
+課外授業 < kagaijugyou\ ;
+反射率 < hansharitsu\ ;
+難民帰還 < nanminkikan\ ;
+偶像破壊 < guuzouhakai\ ;
+教皇庁 < kyoukouchou\ ;
+若鳥丼 < wakadoridon\ ;
+指示装置 < shijisouchi\ ;
+安全地帯 < anzenchitai\ ;
+自己複製 < jikofukusei\ ;
+美術商 < bijutsushou\ ;
+他人行儀 < taningyougi\ ;
+判官贔屓 < houganbiiki\ ;
+滴定量 < tekiteiryou\ ;
+圧搾空気 < assakukuuki\ ;
+神学者 < shingakusha\ ;
+密輸入 < mitsuyunyuu\ ;
+健康管理 < kenkoukanri\ ;
+踏切番 < fumikiriban\ ;
+試験飛行 < shikenhikou\ ;
+生産過剰 < seisankajou\ ;
+前奏曲 < zensoukyoku\ ;
+耳鼻咽喉科 < jibiinkouka\ ;
+生理休暇 < seirikyuuka\ ;
+交際場裏 < kousaijouri\ ;
+裸一貫 < hadakaikkan\ ;
+奏鳴曲 < soumeikyoku\ ;
+豊肥本線 < houhihonsen\ ;
+私生活 < shiseikatsu\ ;
+紫色 < murasakiiro\ ;
+判断規準 < handankijun\ ;
+甲鉄艦 < koutetsukan\ ;
+心臓病 < shinzoubyou\ ;
+錬金術 < renkinjutsu\ ;
+黒内障 < kokunaishou\ ;
+有識者 < yuushikisha\ ;
+山津波 < yamatsunami\ ;
+袖珍本 < shuuchinbon\ ;
+天資英邁 < tenshieimai\ ;
+先着順 < senchakujun\ ;
+抵抗運動 < teikouundou\ ;
+郵便切手 < yuubinkitte\ ;
+実名詞 < jitsumeishi\ ;
+防食剤 < boushokuzai\ ;
+対称軸 < taishoujiku\ ;
+近日点 < kinjitsuten\ ;
+田園都市 < den''entoshi\ ;
+衣料品店 < iryouhinten\ ;
+二部合唱 < nibugasshou\ ;
+藍晶石 < ranshouseki\ ;
+女子供 < on''nakodomo\ ;
+没食子 < mosshokushi\ ;
+電子頭脳 < denshizunou\ ;
+修繕中 < shuuzenchuu\ ;
+割賦販売 < kappuhanbai\ ;
+耳学問 < mimigakumon\ ;
+骨董趣味 < kottoushumi\ ;
+軍備制限 < gunbiseigen\ ;
+長粒米 < chouryuumai\ ;
+運動不足 < undoubusoku\ ;
+制限漢字 < seigenkanji\ ;
+神信心 < kamishinjin\ ;
+無反動砲 < muhandouhou\ ;
+奨学生 < shougakusei\ ;
+原因不明 < gen''infumei\ ;
+観兵式 < kanpeishiki\ ;
+若年型 < jakunengata\ ;
+軽自動車 < keijidousha\ ;
+鼠海豚 < nezumiiruka\ ;
+狐疑逡巡 < kogishunjun\ ;
+集積場 < shuusekijou\ ;
+指人形 < yubiningyou\ ;
+程度問題 < teidomondai\ ;
+規定打席 < kiteidaseki\ ;
+曲芸師 < kyokugeishi\ ;
+麦粒腫 < bakuryuushu\ ;
+目的地 < mokutekichi\ ;
+風紀紊乱 < fuukibinran\ ;
+学生寮 < gakuseiryou\ ;
+合成力 < gouseiryoku\ ;
+市参事会 < shisanjikai\ ;
+記憶装置 < kiokusouchi\ ;
+提供側 < teikyougawa\ ;
+雪庇 < yukibisashi\ ;
+電気伝導 < denkidendou\ ;
+海外派兵 < kaigaihahei\ ;
+天賦人権 < tenpujinken\ ;
+懸垂運動 < kensuiundou\ ;
+神秘主義 < shinpishugi\ ;
+乗降客 < joukoukyaku\ ;
+内親王 < naishin''nou\ ;
+遠慮会釈 < enryoeshaku\ ;
+糞勉強 < kusobenkyou\ ;
+暗号手法 < angoushuhou\ ;
+矢継早 < yatsugibaya\ ;
+長話 < nagabanashi\ ;
+運輸大臣 < un''yudaijin\ ;
+非論理的 < hironriteki\ ;
+変曲点 < henkyokuten\ ;
+右翼団体 < uyokudantai\ ;
+長四角 < nagashikaku\ ;
+親切気 < shinsetsugi\ ;
+保健衛生 < hoken''eisei\ ;
+盗品故買 < touhinkobai\ ;
+副神経 < fukushinkei\ ;
+葉緑体 < youryokutai\ ;
+静止軌道 < seishikidou\ ;
+慶應義塾 < keiougijuku\ ;
+快刀乱麻 < kaitouranma\ ;
+菊人形 < kikuningyou\ ;
+玩弄物 < ganroubutsu\ ;
+口言葉 < kuchikotoba\ ;
+集合的 < shuugouteki\ ;
+至近距離 < shikinkyori\ ;
+割当額 < wariategaku\ ;
+常習的 < joushuuteki\ ;
+損害保険 < songaihoken\ ;
+構成要素 < kouseiyouso\ ;
+感圧紙 < kan''atsushi\ ;
+協議事項 < kyougijikou\ ;
+紅猿子 < benimashiko\ ;
+弾性率 < danseiritsu\ ;
+舞台俳優 < butaihaiyuu\ ;
+危機一髪 < kikiippatsu\ ;
+医学雑誌 < igakuzasshi\ ;
+淡紅色 < tankoushoku\ ;
+柳行李 < yanagigouri\ ;
+物価水準 < bukkasuijun\ ;
+赤十字附 < sekijuujifu\ ;
+扶養家族 < fuyoukazoku\ ;
+流動的 < ryuudouteki\ ;
+環境庁 < kankyouchou\ ;
+立憲政治 < rikkenseiji\ ;
+昆虫学 < konchuugaku\ ;
+常日頃 < tsunehigoro\ ;
+比翼塚 < hiyokudzuka\ ;
+混成物 < konseibutsu\ ;
+人工臓器 < jinkouzouki\ ;
+溶解力 < youkairyoku\ ;
+紙礫 < kamitsubute\ ;
+教育長 < kyouikuchou\ ;
+焼却炉 < shoukyakuro\ ;
+祭政一致 < saiseiitchi\ ;
+白檀油 < byakudan''yu\ ;
+牽引力 < ken''inryoku\ ;
+観光局 < kankoukyoku\ ;
+不言実行 < fugenjikkou\ ;
+入学者 < nyuugakusha\ ;
+国学者 < kokugakusha\ ;
+仕事部屋 < shigotobeya\ ;
+活動誌 < katsudoushi\ ;
+出土品 < shutsudohin\ ;
+紙表紙 < kamibyoushi\ ;
+観光客 < kankoukyaku\ ;
+成人映画 < seijin''eiga\ ;
+自由営業 < jiyuueigyou\ ;
+共学制 < kyougakusei\ ;
+鶎 < kikuitadaki\ ;
+標準誤差 < hyoujungosa\ ;
+羞恥心 < shuuchishin\ ;
+参議院議員 < sangiingiin\ ;
+虫眼鏡 < mushimegane\ ;
+言葉質 < kotobajichi\ ;
+学者膚 < gakushahada\ ;
+通信網 < tsuushinmou\ ;
+普及率 < fukyuuritsu\ ;
+乳児脚気 < nyuujikakke\ ;
+千鳥足 < chidoriashi\ ;
+軍需工場 < gunjukoujou\ ;
+相加平均 < soukaheikin\ ;
+粗製乱造 < soseiranzou\ ;
+御名御璽 < gyomeigyoji\ ;
+裸虫 < hadakamushi\ ;
+転轍手 < tentetsushu\ ;
+購買力 < koubairyoku\ ;
+入賞者 < nyuushousha\ ;
+陸軍省 < rikugunshou\ ;
+仮出所 < karishussho\ ;
+文治主義 < bunchishugi\ ;
+古物商 < kobutsushou\ ;
+自然淘汰 < shizentouta\ ;
+家宅捜査 < katakusousa\ ;
+既成概念 < kiseigainen\ ;
+整備工場 < seibikoujou\ ;
+対空砲火 < taikuuhouka\ ;
+滞空時間 < taikuujikan\ ;
+象徴詩 < shouchoushi\ ;
+下協議 < shitakyougi\ ;
+召集令 < shoushuurei\ ;
+貿易赤字 < bouekiakaji\ ;
+一言居士 < ichigenkoji\ ;
+照会先 < shoukaisaki\ ;
+屋上庭園 < okujouteien\ ;
+堆積学 < taisekigaku\ ;
+読解力 < dokkairyoku\ ;
+音声表記 < onseihyouki\ ;
+腸結核 < choukekkaku\ ;
+年恰好 < toshikakkou\ ;
+審美主義 < shinbishugi\ ;
+通産省 < tsuusanshou\ ;
+応用問題 < ouyoumondai\ ;
+互恵関税 < gokeikanzei\ ;
+督学官 < tokugakukan\ ;
+懐中物 < kaichuumono\ ;
+通信社 < tsuushinsha\ ;
+軟性下疳 < nanseigekan\ ;
+国語辞典 < kokugojiten\ ;
+公認候補 < kouninkouho\ ;
+生年月日 < seinengappi\ ;
+奇策縦横 < kisakujuuou\ ;
+光学文字 < kougakumoji\ ;
+千石船 < sengokubune\ ;
+停車時間 < teishajikan\ ;
+金牛宮 < kingyuukyuu\ ;
+接合子 < setsugoushi\ ;
+皇室費 < koushitsuhi\ ;
+共和政治 < kyouwaseiji\ ;
+国庫債権 < kokkosaiken\ ;
+追徴税 < tsuichouzei\ ;
+声帯模写 < seitaimosha\ ;
+最大限度 < saidaigendo\ ;
+局外者 < kyokugaisha\ ;
+八分音符 < hachibuonpu\ ;
+翌翌年 < yokuyokunen\ ;
+特別機 < tokubetsuki\ ;
+淡褐色 < tankasshoku\ ;
+偏執病 < henshuubyou\ ;
+仮想空間 < kasoukuukan\ ;
+学習者 < gakushuusha\ ;
+防音室 < bouonshitsu\ ;
+平成時代 < heiseijidai\ ;
+利益社会 < riekishakai\ ;
+肉体的 < nikutaiteki\ ;
+家庭訪問 < kateihoumon\ ;
+料金表 < ryoukinhyou\ ;
+内陸国 < nairikukoku\ ;
+包容力 < houyouryoku\ ;
+出漁期 < shutsugyoki\ ;
+薄利多売 < hakuritabai\ ;
+主人役 < shujin''yaku\ ;
+民主主義 < minshushugi\ ;
+女性名詞 < joseimeishi\ ;
+愛憎併存 < aizouheison\ ;
+成功率 < seikouritsu\ ;
+公有物 < kouyuubutsu\ ;
+観艦式 < kankanshiki\ ;
+反射作用 < hanshasayou\ ;
+月夜茸 < tsukiyotake\ ;
+有事立法 < yuujirippou\ ;
+入学生 < nyuugakusei\ ;
+明後日 < myougonichi\ ;
+活動者 < katsudousha\ ;
+三原色 < sangenshoku\ ;
+発声器官 < hasseikikan\ ;
+偏執狂 < henshuukyou\ ;
+婚礼衣装 < konreiishou\ ;
+中央突破 < chuuoutoppa\ ;
+三頭政治 < santouseiji\ ;
+危険地帯 < kikenchitai\ ;
+化学作用 < kagakusayou\ ;
+無間地獄 < mugenjigoku\ ;
+話中 < hanashichuu\ ;
+往復切符 < oufukukippu\ ;
+蒋介石 < shoukaiseki\ ;
+申告書 < shinkokusho\ ;
+存在理由 < sonzairiyuu\ ;
+編笠茸 < amigasatake\ ;
+小半日 < kohan''nichi\ ;
+非社交的 < hijakouteki\ ;
+表彰状 < hyoushoujou\ ;
+内証事 < naishougoto\ ;
+封建制度 < houkenseido\ ;
+診断学 < shindangaku\ ;
+南極点 < nankyokuten\ ;
+人身事故 < jinshinjiko\ ;
+曲射砲 < kyokushahou\ ;
+公開捜査 < koukaisousa\ ;
+我田引水 < gaden''insui\ ;
+動作記録 < dousakiroku\ ;
+先発隊 < senpatsutai\ ;
+成層火山 < seisoukazan\ ;
+性生活 < seiseikatsu\ ;
+検閲官 < ken''etsukan\ ;
+流通税 < ryuutsuuzei\ ;
+利益配当 < riekihaitou\ ;
+洗濯糊 < sentakunori\ ;
+半直線 < hanchokusen\ ;
+洗濯籠 < sentakukago\ ;
+接合剤 < setsugouzai\ ;
+一所懸命 < isshokenmei\ ;
+農産物 < nousanbutsu\ ;
+源泉課税 < gensenkazei\ ;
+政治結社 < seijikessha\ ;
+塵埃 < chirihokori\ ;
+騎馬民族 < kibaminzoku\ ;
+隔世遺伝 < kakuseiiden\ ;
+古道具屋 < furudouguya\ ;
+吹奏楽器 < suisougakki\ ;
+機銃掃射 < kijuusousha\ ;
+接受国 < setsujukoku\ ;
+武家屋敷 < bukeyashiki\ ;
+南極海 < nankyokukai\ ;
+睡眠時間 < suiminjikan\ ;
+結膜炎 < ketsumakuen\ ;
+親睦会 < shinbokukai\ ;
+硫化物 < ryuukabutsu\ ;
+想像力 < souzouryoku\ ;
+芸術品 < geijutsuhin\ ;
+無記名株 < mukimeikabu\ ;
+南極洋 < nankyokuyou\ ;
+事務総長 < jimusouchou\ ;
+再測量 < saisokuryou\ ;
+主治効能 < shujikounou\ ;
+天津御祖 < amatsumioya\ ;
+気象衛星 < kishoueisei\ ;
+有効期限 < yuukoukigen\ ;
+農奴解放 < noudokaihou\ ;
+露出計 < roshutsukei\ ;
+心臓麻痺 < shinzoumahi\ ;
+酔生夢死 < suiseimushi\ ;
+無法地帯 < muhouchitai\ ;
+街頭募金 < gaitoubokin\ ;
+留学生 < ryuugakusei\ ;
+水仕事 < mizushigoto\ ;
+学習用 < gakushuuyou\ ;
+荒唐無稽 < koutoumukei\ ;
+注射針 < chuushabari\ ;
+観察者 < kansatsusha\ ;
+栄養不足 < eiyoufusoku\ ;
+通信欄 < tsuushinran\ ;
+名誉市民 < meiyoshimin\ ;
+軍事同盟 < gunjidoumei\ ;
+有効作用 < yuukousayou\ ;
+五月闇 < satsukiyami\ ;
+発着場 < hatchakujou\ ;
+先遣部隊 < senkenbutai\ ;
+嘉言善行 < kagenzenkou\ ;
+輸出税 < yushutsuzei\ ;
+合同会議 < goudoukaigi\ ;
+起死回生 < kishikaisei\ ;
+透視画法 < toushigahou\ ;
+無銭旅行 < musenryokou\ ;
+就職時 < shuushokuji\ ;
+保安設備 < hoansetsubi\ ;
+着眼点 < chakuganten\ ;
+空冷式 < kuureishiki\ ;
+溶接工 < yousetsukou\ ;
+丸木橋 < marukibashi\ ;
+内部闘争 < naibutousou\ ;
+不正融資 < fuseiyuushi\ ;
+山形県 < yamagataken\ ;
+交霊術 < koureijutsu\ ;
+漢英辞典 < kan''eijiten\ ;
+創造説 < souzousetsu\ ;
+領土保全 < ryoudohozen\ ;
+招待席 < shoutaiseki\ ;
+無事息災 < bujisokusai\ ;
+雪上車 < setsujousha\ ;
+交響楽 < koukyougaku\ ;
+農業国 < nougyoukoku\ ;
+卓越風 < takuetsufuu\ ;
+指名手配 < shimeitehai\ ;
+鎮痛性 < chintsuusei\ ;
+遊覧飛行 < yuuranhikou\ ;
+認識論 < ninshikiron\ ;
+受験地獄 < jukenjigoku\ ;
+警備強化 < keibikyouka\ ;
+就寝前 < shuushinzen\ ;
+心理主義 < shinrishugi\ ;
+双曲線 < soukyokusen\ ;
+離婚訴訟 < rikonsoshou\ ;
+夏時刻 < natsujikoku\ ;
+夏大根 < natsudaikon\ ;
+音訓索引 < onkunsakuin\ ;
+危険因子 < kiken''inshi\ ;
+村八分 < murahachibu\ ;
+超過勤務 < choukakinmu\ ;
+傘伐林 < sanbatsurin\ ;
+常設館 < jousetsukan\ ;
+南極星 < nankyokusei\ ;
+神学士 < shingakushi\ ;
+進歩主義 < shinposhugi\ ;
+上告審 < joukokushin\ ;
+先入観 < sen''nyuukan\ ;
+先入見 < sen''nyuuken\ ;
+保全会社 < hozenkaisha\ ;
+洗濯物 < sentakumono\ ;
+万葉集 < man''youshuu\ ;
+自己紹介 < jikoshoukai\ ;
+人道支援 < jindoushien\ ;
+満州国 < manshuukoku\ ;
+希少価値 < kishoukachi\ ;
+表忠塔 < hyouchuutou\ ;
+三重殺 < sanjuusatsu\ ;
+婦人科学 < fujinkagaku\ ;
+支援団体 < shiendantai\ ;
+分泌液 < bunpitsueki\ ;
+宇宙空間 < uchuukuukan\ ;
+隣接県 < rinsetsuken\ ;
+嘘八百 < usohappyaku\ ;
+舞踏室 < butoushitsu\ ;
+当局者 < toukyokusha\ ;
+化粧煉瓦 < keshourenga\ ;
+緩衝国 < kanshoukoku\ ;
+早期発見 < soukihakken\ ;
+自然治癒 < shizenchiyu\ ;
+不可知的 < fukachiteki\ ;
+訴訟費用 < soshouhiyou\ ;
+藁人形 < waraningyou\ ;
+影響力 < eikyouryoku\ ;
+災害保険 < saigaihoken\ ;
+大器晩成 < taikibansei\ ;
+文節数 < bunsetsusuu\ ;
+数珠一連 < juzuichiren\ ;
+文明開化 < bunmeikaika\ ;
+悪推量 < waruzuiryou\ ;
+含有量 < gan''yuuryou\ ;
+誘電率 < yuudenritsu\ ;
+反動主義 < handoushugi\ ;
+観察眼 < kansatsugan\ ;
+政府高官 < seifukoukan\ ;
+鏡餅 < kagamimochi\ ;
+裏切者 < uragirimono\ ;
+京都府警 < kyoutofukei\ ;
+防雪林 < bousetsurin\ ;
+天神髭 < tenshinhige\ ;
+殺害者 < satsugaisha\ ;
+勤王攘夷 < kin''noujoui\ ;
+空挺部隊 < kuuteibutai\ ;
+教育省 < kyouikushou\ ;
+離乳食 < rinyuushoku\ ;
+教育的 < kyouikuteki\ ;
+多士済済 < tashiseisei\ ;
+不器用者 < bukiyoumono\ ;
+兵站基地 < heitankichi\ ;
+有理関数 < yuurikansuu\ ;
+人工頭脳 < jinkouzunou\ ;
+特別区 < tokubetsuku\ ;
+財政力 < zaiseiryoku\ ;
+十六音符 < juurokuonpu\ ;
+強硬策 < kyoukousaku\ ;
+新年号 < shin''nengou\ ;
+磯馴松 < sonarematsu\ ;
+奇想天外 < kisoutengai\ ;
+内容見本 < naiyoumihon\ ;
+入館料 < nyuukanryou\ ;
+物相飯 < mossoumeshi\ ;
+製革業 < seikakugyou\ ;
+中学生 < chuugakusei\ ;
+輸出港 < yushutsukou\ ;
+南極帯 < nankyokutai\ ;
+料理道具 < ryouridougu\ ;
+大圏航路 < taikenkouro\ ;
+溶接剤 < yousetsuzai\ ;
+急病人 < kyuubyounin\ ;
+寄宿料 < kishukuryou\ ;
+高島田 < takashimada\ ;
+小正月 < koshougatsu\ ;
+動力計 < douryokukei\ ;
+極大値 < kyokudaichi\ ;
+準備管制 < junbikansei\ ;
+烏口 < karasuguchi\ ;
+出金額 < shukkingaku\ ;
+申告制 < shinkokusei\ ;
+粍 < mirimeitoru\ ;
+陣頭指揮 < jintoushiki\ ;
+粁 < kiromeitoru\ ;
+籵 < dekameetoru\ ;
+臓器移植 < zoukiishoku\ ;
+基本概念 < kihongainen\ ;
+子供達 < kodomotachi\ ;
+会議日程 < kaiginittei\ ;
+公定地価 < kouteichika\ ;
+基礎研究 < kisokenkyuu\ ;
+環境汚染 < kankyouosen\ ;
+媒介物 < baikaibutsu\ ;
+疑心暗鬼 < gishin''anki\ ;
+黄道色 < koudoushoku\ ;
+三葉虫 < san''youchuu\ ;
+全質化 < zenshitsuka\ ;
+生活難 < seikatsunan\ ;
+細動脈 < saidoumyaku\ ;
+江戸前寿司 < edomaezushi\ ;
+総理大臣 < souridaijin\ ;
+複雑化 < fukuzatsuka\ ;
+自己満足 < jikomanzoku\ ;
+勢力圏 < seiryokuken\ ;
+絶対主義 < zettaishugi\ ;
+竰 < senchiritto\ ;
+正味値段 < shouminedan\ ;
+竡 < hekutoritto\ ;
+竓 < miririttoru\ ;
+竏 < kirorittoru\ ;
+個人教授 < kojinkyouju\ ;
+複複線 < fukufukusen\ ;
+少壮気鋭 < shousoukiei\ ;
+新年会 < shin''nenkai\ ;
+不確実 < fukakujitsu\ ;
+東亜諸国 < touashokoku\ ;
+喇叭水仙 < rappazuisen\ ;
+鎮痛剤 < chintsuuzai\ ;
+怪人物 < kaijinbutsu\ ;
+通学生 < tsuugakusei\ ;
+爆心地 < bakushinchi\ ;
+実行可能 < jikkoukanou\ ;
+事前運動 < jizen''undou\ ;
+始末書 < shimatsusho\ ;
+外来患者 < gairaikanja\ ;
+競争心 < kyousoushin\ ;
+避難訓練 < hinankunren\ ;
+剽軽者 < hyoukinmono\ ;
+腸閉塞 < chouheisoku\ ;
+販売部門 < hanbaibumon\ ;
+軍当局 < guntoukyoku\ ;
+労働運動 < roudouundou\ ;
+準備銀行 < junbiginkou\ ;
+幹線道路 < kansendouro\ ;
+不透明性 < futoumeisei\ ;
+白子鳩 < shirakobato\ ;
+町役場 < machiyakuba\ ;
+加圧水炉 < kaatsusuiro\ ;
+不忠実 < fuchuujitsu\ ;
+表音文字 < hyouonmonji\ ;
+指名打者 < shimeidasha\ ;
+総司令部 < soushireibu\ ;
+博学者 < hakugakusha\ ;
+伝統主義 < dentoushugi\ ;
+戦略上 < senryakujou\ ;
+主要都市 < shuyoutoshi\ ;
+南極圏 < nankyokuken\ ;
+両脚規 < ryoukyakuki\ ;
+低温殺菌 < teionsakkin\ ;
+共訳者 < kyouyakusha\ ;
+夫婦関係 < fuufukankei\ ;
+忍耐力 < nintairyoku\ ;
+作業時間 < sagyoujikan\ ;
+集金人 < shuukin''nin\ ;
+非常手段 < hijoushudan\ ;
+十八金 < juuhachikin\ ;
+専制政治 < senseiseiji\ ;
+映画監督 < eigakantoku\ ;
+借用者 < shakuyousha\ ;
+瓰 < deshiguramu\ ;
+濃淡画像 < noutangazou\ ;
+端金 < hashitagane\ ;
+灯火管制 < toukakansei\ ;
+重要事項 < juuyoujikou\ ;
+非常呼集 < hijoukoshuu\ ;
+持久力 < jikyuuryoku\ ;
+局地風 < kyokuchifuu\ ;
+発癌性 < hatsugansei\ ;
+揚陸料 < yourikuryou\ ;
+密貿易 < mitsuboueki\ ;
+通信員 < tsuushin''in\ ;
+立候補者 < rikkouhosha\ ;
+冠動脈 < kandoumyaku\ ;
+変奏曲 < hensoukyoku\ ;
+浄化装置 < joukasouchi\ ;
+御生憎様 < oainikusama\ ;
+表彰台 < hyoushoudai\ ;
+人員淘汰 < jin''intouta\ ;
+葬送曲 < sousoukyoku\ ;
+交通事故 < koutsuujiko\ ;
+千分率 < senbunritsu\ ;
+四輪駆動 < yonrinkudou\ ;
+丸一年 < maruichinen\ ;
+代理公使 < dairikoushi\ ;
+外務大臣 < gaimudaijin\ ;
+老廃物 < rouhaibutsu\ ;
+南極光 < nankyokukou\ ;
+皮算用 < kawazan''you\ ;
+野戦砲兵 < yasenhouhei\ ;
+追分節 < oiwakebushi\ ;
+徳川勢 < tokugawazei\ ;
+地名辞典 < chimeijiten\ ;
+不動産屋 < fudousan''ya\ ;
+創造物 < souzoubutsu\ ;
+初航海 < hatsukoukai\ ;
+購読料 < koudokuryou\ ;
+得票数 < tokuhyousuu\ ;
+体感温度 < taikan''ondo\ ;
+雪景色 < yukigeshiki\ ;
+観光都市 < kankoutoshi\ ;
+同性愛者 < douseiaisha\ ;
+部隊撤退 < butaitettai\ ;
+精神的 < seishinteki\ ;
+協議会員 < kyougikaiin\ ;
+啓蒙運動 < keimouundou\ ;
+徳川公 < tokugawakou\ ;
+自立心 < jiritsushin\ ;
+亀甲模様 < kikkoumoyou\ ;
+衛生状態 < eiseijoutai\ ;
+漸進的 < zenshinteki\ ;
+教会暦 < kyoukaireki\ ;
+殺人者 < satsujinsha\ ;
+鎖国主義 < sakokushugi\ ;
+精神病 < seishinbyou\ ;
+殺人罪 < satsujinzai\ ;
+成年式 < seinenshiki\ ;
+器用貧乏 < kiyoubinbou\ ;
+脱石油 < datsusekiyu\ ;
+先進国 < senshinkoku\ ;
+眼精疲労 < ganseihirou\ ;
+宣伝機関 < sendenkikan\ ;
+土団子 < tsuchidango\ ;
+何時何時 < itsunandoki\ ;
+控室 < hikaeshitsu\ ;
+民権主義 < minkenshugi\ ;
+年次総会 < nenjisoukai\ ;
+混合物 < kongoubutsu\ ;
+軍楽長 < gungakuchou\ ;
+法律上 < houritsujou\ ;
+畜犬税 < chikukenzei\ ;
+無償交付 < mushoukoufu\ ;
+短期手形 < tankitegata\ ;
+内務大臣 < naimudaijin\ ;
+一世一代 < isseichidai\ ;
+事項索引 < jikousakuin\ ;
+放射線科 < houshasenka\ ;
+皇太子妃 < koutaishihi\ ;
+梁山泊 < ryouzanpaku\ ;
+彫塑術 < chousojutsu\ ;
+代用食 < daiyoushoku\ ;
+妖怪変化 < youkaihenge\ ;
+並木道 < namikimichi\ ;
+宝石箱 < housekibako\ ;
+卒業後 < sotsugyougo\ ;
+口角力 < kuchidzumou\ ;
+事業主 < jigyounushi\ ;
+自虐的 < jigyakuteki\ ;
+下相談 < shitasoudan\ ;
+変形部門 < henkeibumon\ ;
+野戦病院 < yasenbyouin\ ;
+禿頭病 < tokutoubyou\ ;
+戦災地区 < sensaichiku\ ;
+弾着点 < danchakuten\ ;
+特務機関 < tokumukikan\ ;
+五月病 < gogatsubyou\ ;
+砂糖大根 < satoudaikon\ ;
+弾力性 < danryokusei\ ;
+核爆弾 < kakubakudan\ ;
+商業街 < shougyougai\ ;
+頭文字 < kashiramoji\ ;
+半加工品 < hankakouhin\ ;
+自記温度計 < jikiondokei\ ;
+縮緬紙 < chirimenshi\ ;
+二等分線 < nitoubunsen\ ;
+授業時間 < jugyoujikan\ ;
+天神地祇 < tenjinchigi\ ;
+追加予算 < tsuikayosan\ ;
+非合理的 < higouriteki\ ;
+労農政府 < rounouseifu\ ;
+南京虫 < nankinmushi\ ;
+裁決書 < saiketsusho\ ;
+下意上達 < kaijoutatsu\ ;
+核燃料 < kakunenryou\ ;
+乗車拒否 < joushakyohi\ ;
+逐字訳 < chikujiyaku\ ;
+水洗便所 < suisenbenjo\ ;
+収納家具 < shuunoukagu\ ;
+未開墾地 < mikaikonchi\ ;
+正当防衛 < seitoubouei\ ;
+一徹者 < ittetsumono\ ;
+御協力 < gokyouryoku\ ;
+学科試験 < gakkashiken\ ;
+係属中 < keizokuchuu\ ;
+潜水母艦 < sensuibokan\ ;
+米印 < komejirushi\ ;
+病中吟 < byouchuugin\ ;
+使用価値 < shiyoukachi\ ;
+極限値 < kyokugenchi\ ;
+教育学 < kyouikugaku\ ;
+電話室 < denwashitsu\ ;
+遠心力 < enshinryoku\ ;
+官尊民卑 < kansonminpi\ ;
+宮崎県 < miyazakiken\ ;
+商工業 < shoukougyou\ ;
+衝動的 < shoudouteki\ ;
+胆石症 < tansekishou\ ;
+輸出品 < yushutsuhin\ ;
+普遍文法 < fuhenbunpou\ ;
+過剰人口 < kajoujinkou\ ;
+三眠蚕 < sanminkaiko\ ;
+間欠泉 < kanketsusen\ ;
+出先機関 < desakikikan\ ;
+準備委員会 < junbiiinkai\ ;
+天龍川 < tenryuukawa\ ;
+教習生 < kyoushuusei\ ;
+隣接地 < rinsetsuchi\ ;
+発生率 < hasseiritsu\ ;
+葡萄畑 < budoubatake\ ;
+境界標 < kyoukaihyou\ ;
+空軍力 < kuugunryoku\ ;
+交声曲 < kouseikyoku\ ;
+現内閣 < gen''naikaku\ ;
+占星術 < senseijutsu\ ;
+香辛料 < koushinryou\ ;
+町道場 < machidoujou\ ;
+宣伝効果 < sendenkouka\ ;
+時々刻々 < jijikokkoku\ ;
+近似計算 < kinjikeisan\ ;
+動力源 < douryokugen\ ;
+恒等式 < koutoushiki\ ;
+討伐軍 < toubatsugun\ ;
+表看板 < omotekanban\ ;
+護憲運動 < goken''undou\ ;
+濃青色 < nouseishoku\ ;
+殺人犯 < satsujinhan\ ;
+残念賞 < zan''nenshou\ ;
+原因結果 < gen''inkekka\ ;
+友軍部隊 < yuugunbutai\ ;
+脳充血 < noujuuketsu\ ;
+食人種 < shokujinshu\ ;
+赤褐色 < sekkasshoku\ ;
+無尽会社 < mujingaisha\ ;
+興信録 < koushinroku\ ;
+電熱器 < den''netsuki\ ;
+作曲者 < sakkyokusha\ ;
+古今東西 < kokontouzai\ ;
+唐錦 < karanishiki\ ;
+看護婦長 < kangofuchou\ ;
+商標権 < shouhyouken\ ;
+悲憤慷慨 < hifunkougai\ ;
+常識人 < joushikijin\ ;
+古代文明 < kodaibunmei\ ;
+観客層 < kankyakusou\ ;
+無産政党 < musanseitou\ ;
+一重桜 < hitoezakura\ ;
+選挙準備 < senkyojunbi\ ;
+地動説 < chidousetsu\ ;
+意識不明 < ishikifumei\ ;
+白亜質 < hakuashitsu\ ;
+膠着剤 < kouchakuzai\ ;
+一段落 < ichidanraku\ ;
+組合主義 < kumiaishugi\ ;
+軍用鳩 < gun''youbato\ ;
+俗文学 < zokubungaku\ ;
+個体発生 < kotaihassei\ ;
+電圧計 < den''atsukei\ ;
+薬局方 < yakkyokuhou\ ;
+法制局 < houseikyoku\ ;
+薬学者 < yakugakusha\ ;
+係争物 < keisoubutsu\ ;
+四分音符 < shibun''onpu\ ;
+使徒書簡 < shitoshokan\ ;
+優柔不断 < yuujuufudan\ ;
+脱毛剤 < datsumouzai\ ;
+煎餅蒲団 < senbeibuton\ ;
+管轄権 < kankatsuken\ ;
+借用書 < shakuyousho\ ;
+予定調和 < yoteichouwa\ ;
+奉公口 < houkouguchi\ ;
+先祖伝来 < senzodenrai\ ;
+放送局 < housoukyoku\ ;
+事業部制 < jigyoubusei\ ;
+黄白色 < kohakushoku\ ;
+臨時列車 < rinjiressha\ ;
+定期試験 < teikishiken\ ;
+羽織袴 < haorihakama\ ;
+総合課税 < sougoukazei\ ;
+遠隔講義 < enkakukougi\ ;
+除幕式 < jomakushiki\ ;
+海底油田 < kaiteiyuden\ ;
+真一文字 < maichimonji\ ;
+蝸牛 < dendenmushi\ ;
+電話調査 < denwachousa\ ;
+技術援助 < gijutsuenjo\ ;
+強制的 < kyouseiteki\ ;
+強心剤 < kyoushinzai\ ;
+生活環 < seikatsukan\ ;
+春一番 < haruichiban\ ;
+十八番 < juuhachiban\ ;
+黒鶫 < kurotsugumi\ ;
+偏向回路 < henkoukairo\ ;
+予定納税 < yoteinouzei\ ;
+皇后陛下 < kougouheika\ ;
+連邦制度 < renpouseido\ ;
+錦蛇 < nishikihebi\ ;
+終身官 < shuushinkan\ ;
+国侍 < kunizamurai\ ;
+電気電子 < denkidenshi\ ;
+代行機関 < daikoukikan\ ;
+疲労困憊 < hiroukonpai\ ;
+盗難保険 < tounanhoken\ ;
+純真無垢 < junshinmuku\ ;
+月長石 < getchouseki\ ;
+教職員 < kyoushokuin\ ;
+下位互換性 < kaigokansei\ ;
+法務大臣 < houmudaijin\ ;
+送別会 < soubetsukai\ ;
+出品国 < shuppinkoku\ ;
+刑事処分 < keijishobun\ ;
+駐車違反 < chuushaihan\ ;
+南京町 < nankinmachi\ ;
+時機尚早 < jikishousou\ ;
+道徳的 < doutokuteki\ ;
+商業界 < shougyoukai\ ;
+収納額 < shuunougaku\ ;
+鼎立戦 < teiritsusen\ ;
+原則的 < gensokuteki\ ;
+年金基金 < nenkinkikin\ ;
+傍聴料 < bouchouryou\ ;
+千円札 < sen''ensatsu\ ;
+定収入 < teishuunyuu\ ;
+適法行為 < tekihoukoui\ ;
+物見遊山 < monomiyusan\ ;
+得意満面 < tokuimanmen\ ;
+時差出勤 < jisashukkin\ ;
+政治問題 < seijimondai\ ;
+絶対敬語 < zettaikeigo\ ;
+鍵盤楽器 < kenbangakki\ ;
+訴訟事件 < soshoujiken\ ;
+意味役割 < imiyakuwari\ ;
+六大州 < rokudaishuu\ ;
+割引券 < waribikiken\ ;
+住生活 < juuseikatsu\ ;
+価格安定 < kakakuantei\ ;
+今上陛下 < kinjouheika\ ;
+電気系統 < denkikeitou\ ;
+前立腺 < zenritsusen\ ;
+兌換銀行 < dakanginkou\ ;
+写真集 < shashinshuu\ ;
+全会一致 < zenkaiitchi\ ;
+百万遍 < hyakumanben\ ;
+蝉時雨 < semishigure\ ;
+麻薬患者 < mayakukanja\ ;
+割引債 < waribikisai\ ;
+心機一転 < shinkiitten\ ;
+無名戦士 < mumeisenshi\ ;
+唯一無二 < yuiitsumuni\ ;
+接着剤 < setchakuzai\ ;
+手術台 < shujutsudai\ ;
+防火扉 < boukatobira\ ;
+乱入者 < ran''nyuusha\ ;
+計画的 < keikakuteki\ ;
+財政安定 < zaiseiantei\ ;
+調印式 < chouinshiki\ ;
+看護学校 < kangogakkou\ ;
+逆転層 < gyakutensou\ ;
+生活法 < seikatsuhou\ ;
+粘土質 < nendoshitsu\ ;
+分類基準 < bunruikijun\ ;
+逆輸入 < gyakuyunyuu\ ;
+文書偽造 < bunshogizou\ ;
+孤軍奮闘 < kogunfuntou\ ;
+新興国 < shinkoukoku\ ;
+数次旅券 < suujiryoken\ ;
+合目的 < goumokuteki\ ;
+合成繊維 < gouseisen''i\ ;
+新人賞 < shinjinshou\ ;
+電報局 < denpoukyoku\ ;
+貴族政治 < kizokuseiji\ ;
+博愛主義 < hakuaishugi\ ;
+一斉検挙 < isseikenkyo\ ;
+亜鉛華軟膏 < aenkanankou\ ;
+三幕物 < sanmakumono\ ;
+白木蓮 < hakumokuren\ ;
+商業港 < shougyoukou\ ;
+一里塚 < ichiridzuka\ ;
+終身刑 < shuushinkei\ ;
+低温輸送 < teion''yusou\ ;
+風光明媚 < fuukoumeibi\ ;
+後部座席 < koubuzaseki\ ;
+動力学 < dourikigaku\ ;
+節料理 < sechiryouri\ ;
+出品人 < shuppin''nin\ ;
+傍聴席 < bouchouseki\ ;
+不適切 < futekisetsu\ ;
+個人投資 < kojintoushi\ ;
+学際的 < gakusaiteki\ ;
+竜骨座 < ryuukotsuza\ ;
+保険会社 < hokengaisha\ ;
+硫化水素 < ryuukasuiso\ ;
+仮条約 < karijouyaku\ ;
+日本列島 < nihonrettou\ ;
+階級章 < kaikyuushou\ ;
+戦時公債 < senjikousai\ ;
+抵抗力 < teikouryoku\ ;
+森林学 < shinringaku\ ;
+海員組合 < kaiinkumiai\ ;
+百万言 < hyakumangen\ ;
+修辞疑問 < shuujigimon\ ;
+港町 < minatomachi\ ;
+法定貨幣 < houteikahei\ ;
+体内受精 < tainaijusei\ ;
+化粧下 < keshoushita\ ;
+虫薬 < mushigusuri\ ;
+楽観主義 < rakkanshugi\ ;
+赤提灯 < akachouchin\ ;
+入院患者 < nyuuinkanja\ ;
+創造主 < souzounushi\ ;
+関連事項 < kanrenjikou\ ;
+原価計算 < genkakeisan\ ;
+電子回路 < denshikairo\ ;
+候孝賢 < houshaushen\ ;
+重点主義 < juutenshugi\ ;
+価電子帯 < kadenshitai\ ;
+有効需要 < yuukoujuyou\ ;
+事業年度 < jigyounendo\ ;
+相反定理 < souhanteiri\ ;
+六分儀座 < rokubungiza\ ;
+冬将軍 < fuyushougun\ ;
+安定状態 < anteijoutai\ ;
+民主政治 < minshuseiji\ ;
+独習書 < dokushuusho\ ;
+公証料 < koushouryou\ ;
+唐紅 < karakurenai\ ;
+綿織物 < men''orimono\ ;
+化学繊維 < kagakusen''i\ ;
+絶対音感 < zettaionkan\ ;
+先入主 < sen''nyuushu\ ;
+最終的 < saishuuteki\ ;
+本建築 < honkenchiku\ ;
+自然破壊 < shizenhakai\ ;
+報道機関 < houdoukikan\ ;
+捕虜交換 < horyokoukan\ ;
+狗尾草 < enokorogusa\ ;
+亜米利加杉 < amerikasugi\ ;
+価値判断 < kachihandan\ ;
+行商人 < gyoushounin\ ;
+切分法 < setsubunhou\ ;
+手練手管 < terentekuda\ ;
+器械体操 < kikaitaisou\ ;
+養老保険 < yourouhoken\ ;
+小百姓 < kobyakushou\ ;
+心丈夫 < kokorojoubu\ ;
+鳥類学 < chouruigaku\ ;
+弱年者 < jakunenmono\ ;
+中隊長 < chuutaichou\ ;
+不当表示 < futouhyouji\ ;
+安全運転 < anzen''unten\ ;
+相談役 < soudan''yaku\ ;
+交際範囲 < kousaihan''i\ ;
+応用科学 < ouyoukagaku\ ;
+食事時 < shokujidoki\ ;
+八面体 < hachimentai\ ;
+不整合人 < fuseigoujin\ ;
+原判決 < genhanketsu\ ;
+単元制度 < tangenseido\ ;
+一歩前進 < ippozenshin\ ;
+国王陛下 < kokuouheika\ ;
+極地圏 < kyokuchiken\ ;
+放送衛星 < housoueisei\ ;
+寂光浄土 < jakkoujoudo\ ;
+監察官 < kansatsukan\ ;
+後生大事 < goshoudaiji\ ;
+三民主義 < sanminshugi\ ;
+白玉粉 < shiratamako\ ;
+商業文 < shougyoubun\ ;
+気管切開 < kikansekkai\ ;
+天動説 < tendousetsu\ ;
+傲岸不遜 < gouganfuson\ ;
+辻説法 < tsujiseppou\ ;
+家父長制 < kafuchousei\ ;
+暗黒星雲 < ankokuseiun\ ;
+近代国家 < kindaikokka\ ;
+煉丹術 < rentanjutsu\ ;
+西海岸 < nishikaigan\ ;
+前途有望 < zentoyuubou\ ;
+急上昇 < kyuujoushou\ ;
+宝石商 < housekishou\ ;
+換算率 < kansanritsu\ ;
+建設者 < kensetsusha\ ;
+北々西 < hokuhokusei\ ;
+音楽理論 < ongakuriron\ ;
+委託販売 < itakuhanbai\ ;
+銀婚式 < ginkonshiki\ ;
+三寒四温 < sankanshion\ ;
+貧乏所帯 < binboujotai\ ;
+御伽草子 < otogizoushi\ ;
+神奈川県 < kanagawaken\ ;
+電気装置 < denkisouchi\ ;
+地方議会 < chihougikai\ ;
+原動力 < gendouryoku\ ;
+俄景気 < niwakageiki\ ;
+装甲部隊 < soukoubutai\ ;
+不可入性 < fukanyuusei\ ;
+悪戯者 < itazuramono\ ;
+大福帳 < daifukuchou\ ;
+時節柄 < jisetsugara\ ;
+南京木綿 < nankinmomen\ ;
+磯鵯 < isohiyodori\ ;
+印象主義 < inshoushugi\ ;
+吸血鬼 < kyuuketsuki\ ;
+糖尿病 < tounyoubyou\ ;
+一張一弛 < itchouisshi\ ;
+区間列車 < kukanressha\ ;
+転任先 < ten''ninsaki\ ;
+支配力 < shihairyoku\ ;
+相思相愛 < soushisouai\ ;
+航空基地 < koukuukichi\ ;
+監査記録 < kansakiroku\ ;
+技術移転 < gijutsuiten\ ;
+産児制限 < sanjiseigen\ ;
+単音節 < tan''onsetsu\ ;
+新聞種 < shinbundane\ ;
+飽和状態 < houwajoutai\ ;
+低丘陵 < teikyuuryou\ ;
+国際的 < kokusaiteki\ ;
+郷土色 < kyoudoshoku\ ;
+竜田姫 < tatsutahime\ ;
+小学館 < shougakukan\ ;
+知能検査 < chinoukensa\ ;
+使節団 < shisetsudan\ ;
+消息文 < shousokubun\ ;
+緋衣草 < higoromosou\ ;
+主計局 < shukeikyoku\ ;
+道徳心 < doutokushin\ ;
+未決囚 < miketsushuu\ ;
+愛唱曲 < aishoukyoku\ ;
+孤影悄然 < koeishouzen\ ;
+五種競技 < goshukyougi\ ;
+偵察隊 < teisatsutai\ ;
+団体保険 < dantaihoken\ ;
+発信側 < hasshingawa\ ;
+姉妹都市 < shimaitoshi\ ;
+遠山里 < tooyamazato\ ;
+神経痛 < shinkeitsuu\ ;
+不通箇所 < futsuukasho\ ;
+神経症 < shinkeishou\ ;
+神経病 < shinkeibyou\ ;
+破邪顕正 < hajakenshou\ ;
+政治団体 < seijidantai\ ;
+一喜一憂 < ikkiichiyuu\ ;
+定着液 < teichakueki\ ;
+弁証学 < benshougaku\ ;
+準備命令 < junbimeirei\ ;
+受験科目 < jukenkamoku\ ;
+木管楽器 < mokkangakki\ ;
+発信人 < hasshin''nin\ ;
+中高音部 < chuukouonbu\ ;
+友愛結婚 < yuuaikekkon\ ;
+緑地帯 < ryokuchitai\ ;
+海軍基地 < kaigunkichi\ ;
+生活圏 < seikatsuken\ ;
+電子素子 < denshisoshi\ ;
+熱伝導 < netsudendou\ ;
+道徳学 < doutokugaku\ ;
+愛国運動 < aikokuundou\ ;
+適格者 < tekikakusha\ ;
+図書室 < toshoshitsu\ ;
+観音様 < kan''nonsama\ ;
+結婚式 < kekkonshiki\ ;
+西洋式 < seiyoushiki\ ;
+人文地理 < jinmonchiri\ ;
+労働争議 < roudousougi\ ;
+情報処理 < jouhoushori\ ;
+可変資本 < kahenshihon\ ;
+為替差益 < kawasesaeki\ ;
+誘拐事件 < yuukaijiken\ ;
+三大都市 < sandaitoshi\ ;
+男冥利 < otokomyouri\ ;
+所要時間 < shoyoujikan\ ;
+女権運動 < joken''undou\ ;
+分散処理 < bunsanshori\ ;
+走行可能 < soukoukanou\ ;
+命綱 < inochidzuna\ ;
+流言飛語 < ryuugenhigo\ ;
+一新紀元 < isshinkigen\ ;
+徒手体操 < toshutaisou\ ;
+上腕骨 < jouwankotsu\ ;
+生命力 < seimeiryoku\ ;
+硬骨漢 < koukotsukan\ ;
+商業地 < shougyouchi\ ;
+金轡 < kanagutsuwa\ ;
+万年床 < man''nendoko\ ;
+口車 < kuchiguruma\ ;
+講釈師 < koushakushi\ ;
+三幅対 < sanpukutsui\ ;
+蛋白尿 < tanpakunyou\ ;
+刺激臭 < shigekishuu\ ;
+草鞋虫 < warajimushi\ ;
+金融業 < kin''yuugyou\ ;
+封建主義 < houkenshugi\ ;
+菜種油 < nataneabura\ ;
+受験戦争 < jukensensou\ ;
+出雲大社 < izumotaisha\ ;
+雛人形 < hinaningyou\ ;
+権門勢家 < kenmonseika\ ;
+無着陸 < muchakuriku\ ;
+上分別 < joufunbetsu\ ;
+大動脈 < daidoumyaku\ ;
+無線操縦 < musensoujuu\ ;
+神無月 < kan''nadzuki\ ;
+幼馴染 < osananajimi\ ;
+円周率 < enshuuritsu\ ;
+借家争議 < shakkasougi\ ;
+宇宙科学 < uchuukagaku\ ;
+商業史 < shougyoushi\ ;
+古典芸能 < kotengeinou\ ;
+山岳病 < sangakubyou\ ;
+親任官 < shin''ninkan\ ;
+追跡者 < tsuisekisha\ ;
+豪華絢爛 < goukakenran\ ;
+発会式 < hakkaishiki\ ;
+婦人運動 < fujin''undou\ ;
+床面積 < yukamenseki\ ;
+不動明王 < fudoumyouou\ ;
+体外受精 < taigaijusei\ ;
+狸親父 < tanukioyaji\ ;
+木石漢 < bokusekikan\ ;
+国防省 < kokuboushou\ ;
+勤務年限 < kinmunengen\ ;
+国文学 < kokubungaku\ ;
+生殖腺 < seishokusen\ ;
+満場一致 < manjouitchi\ ;
+前世生存 < zenseseizon\ ;
+自殺的 < jisatsuteki\ ;
+会計年度 < kaikeinendo\ ;
+造物主 < zoubutsushu\ ;
+万葉仮名 < man''yougana\ ;
+傍聴随意 < bouchouzuii\ ;
+用兵術 < youheijutsu\ ;
+絶対多数 < zettaitasuu\ ;
+取調 < torishirabe\ ;
+退職金 < taishokukin\ ;
+紅白試合 < kouhakujiai\ ;
+会計監査 < kaikeikansa\ ;
+彎月状 < wangetsujou\ ;
+八紘一宇 < hakkouichiu\ ;
+舞台装置 < butaisouchi\ ;
+生没年 < seibotsunen\ ;
+単一性 < tan''itsusei\ ;
+鼻柱 < hanabashira\ ;
+持続力 < jizokuryoku\ ;
+事務長官 < jimuchoukan\ ;
+一般社会 < ippanshakai\ ;
+日帝時代 < nitteijidai\ ;
+新聞業 < shinbungyou\ ;
+登坂車線 < tohanshasen\ ;
+神経核 < shinkeikaku\ ;
+世界最大 < sekaisaidai\ ;
+指導原理 < shidougenri\ ;
+枢軸国 < suujikukoku\ ;
+造次顛沛 < zoujitenpai\ ;
+航空管理 < koukuukanri\ ;
+三色版 < sanshokuban\ ;
+窯印 < kamajirushi\ ;
+中間駅 < chuukan''eki\ ;
+能装束 < noushouzoku\ ;
+結晶学 < kesshougaku\ ;
+感染経路 < kansenkeiro\ ;
+解決法 < kaiketsuhou\ ;
+警戒色 < keikaishoku\ ;
+二等軍曹 < nitougunsou\ ;
+一毛作 < ichimousaku\ ;
+温熱性 < on''netsusei\ ;
+防火塗料 < boukatoryou\ ;
+自縄自縛 < jijoujibaku\ ;
+途中下車 < tochuugesha\ ;
+環境保護 < kankyouhogo\ ;
+嘘発見器 < usohakkenki\ ;
+面会時間 < menkaijikan\ ;
+重機関銃 < juukikanjuu\ ;
+内反脚 < naihankyaku\ ;
+法案審議 < houanshingi\ ;
+延縄漁 < haenawaryou\ ;
+直方体 < chokuhoutai\ ;
+自動制御 < jidouseigyo\ ;
+家族達 < kazokutachi\ ;
+刺激的 < shigekiteki\ ;
+個人指導 < kojinshidou\ ;
+自然発火 < shizenhakka\ ;
+主務大臣 < shumudaijin\ ;
+短期決戦 < tankikessen\ ;
+言語運用 < gengoun''you\ ;
+交換局 < koukankyoku\ ;
+危険思想 < kikenshisou\ ;
+空域管理 < kuuikikanri\ ;
+御殿女中 < gotenjochuu\ ;
+七年忌 < shichinenki\ ;
+隣保事業 < rinpojigyou\ ;
+悪戯書 < itazuragaki\ ;
+千人針 < sen''ninbari\ ;
+合意心中 < gouishinjuu\ ;
+世界記録 < sekaikiroku\ ;
+基本条件 < kihonjouken\ ;
+農民一揆 < noumin''ikki\ ;
+前代未聞 < zendaimimon\ ;
+消毒液 < shoudokueki\ ;
+複合汚染 < fukugouosen\ ;
+絶対零度 < zettaireido\ ;
+構成可能 < kouseikanou\ ;
+一人舞台 < hitoributai\ ;
+皮下組織 < hikasoshiki\ ;
+油砥石 < aburatoishi\ ;
+地下資源 < chikashigen\ ;
+狐饂飩 < kitsuneudon\ ;
+濃褐色 < noukasshoku\ ;
+材木商 < zaimokushou\ ;
+白化個体 < hakukakotai\ ;
+電話回線 < denwakaisen\ ;
+不正咬合 < fuseikougou\ ;
+摩訶不思議 < makafushigi\ ;
+原色版 < genshokuban\ ;
+美容体操 < biyoutaisou\ ;
+協議離婚 < kyougirikon\ ;
+蔦蘿 < tsutakazura\ ;
+温暖前線 < ondanzensen\ ;
+単項式 < tankoushiki\ ;
+新規保管 < shinkihokan\ ;
+土気色 < tsuchikeiro\ ;
+取締 < torishimari\ ;
+付属節 < fuzokusetsu\ ;
+一貫番号 < ikkanbangou\ ;
+現行法規 < genkouhouki\ ;
+一番鶏 < ichibandori\ ;
+紋章学 < monshougaku\ ;
+真只中 < mattadanaka\ ;
+祖国復帰 < sokokufukki\ ;
+含水炭素 < gansuitanso\ ;
+労働時間 < roudoujikan\ ;
+出席者 < shussekisha\ ;
+為替相場 < kawasesouba\ ;
+世界一周 < sekaiisshuu\ ;
+医療法人 < iryouhoujin\ ;
+門前町 < monzenmachi\ ;
+氷袋 < kooribukuro\ ;
+鼓舞激励 < kobugekirei\ ;
+教訓的 < kyoukunteki\ ;
+貯金局 < chokinkyoku\ ;
+官僚臭 < kanryoushuu\ ;
+蹄鉄工 < teitetsukou\ ;
+粒度分布 < ryuudobunpu\ ;
+神経学 < shinkeigaku\ ;
+投下資本 < toukashihon\ ;
+用意周到 < youishuutou\ ;
+表玄関 < omotegenkan\ ;
+内燃機関 < nainenkikan\ ;
+出張店 < shutchouten\ ;
+旅行鞄 < ryokoukaban\ ;
+減塩食 < gen''enshoku\ ;
+団体客 < dantaikyaku\ ;
+防水加工 < bousuikakou\ ;
+心霊学 < shinreigaku\ ;
+個人消費 < kojinshouhi\ ;
+仮性近視 < kaseikinshi\ ;
+大正琴 < taishougoto\ ;
+欠勤率 < kekkinritsu\ ;
+定着剤 < teichakuzai\ ;
+南西 < minaminishi\ ;
+入場料 < nyuujouryou\ ;
+逐語訳 < chikugoyaku\ ;
+思考力 < shikouryoku\ ;
+乳用牛 < nyuuyougyuu\ ;
+正覚坊 < shougakubou\ ;
+緑藻類 < ryokusourui\ ;
+目撃者 < mokugekisha\ ;
+黒曜石 < kokuyouseki\ ;
+空気伝染 < kuukidensen\ ;
+満一年 < man''ichinen\ ;
+没我的 < botsugateki\ ;
+含塵率 < ganjinritsu\ ;
+幼年時代 < younenjidai\ ;
+退職者 < taishokusha\ ;
+蔵屋敷 < kurayashiki\ ;
+社会復帰 < shakaifukki\ ;
+電気製品 < denkiseihin\ ;
+包金 < tsutsumikin\ ;
+再建築 < saikenchiku\ ;
+産婦人科医 < sanfujinkai\ ;
+一貫作業 < ikkansagyou\ ;
+滞在期間 < taizaikikan\ ;
+献身的 < kenshinteki\ ;
+無形財産 < mukeizaisan\ ;
+妨害物 < bougaibutsu\ ;
+点眼薬 < tengan''yaku\ ;
+元首相 < motoshushou\ ;
+無断転載 < mudantensai\ ;
+恐水病 < kyousuibyou\ ;
+均衡予算 < kinkouyosan\ ;
+密売品 < mitsubaihin\ ;
+石川県 < ishikawaken\ ;
+付帯条件 < futaijouken\ ;
+副会長 < fukukaichou\ ;
+発明者 < hatsumeisha\ ;
+軍事工場 < gunjikoujou\ ;
+有効数字 < yuukousuuji\ ;
+創作的 < sousakuteki\ ;
+臍下丹田 < seikatanden\ ;
+大逆罪 < taigyakuzai\ ;
+試用期間 < shiyoukikan\ ;
+一元的 < ichigenteki\ ;
+化学変化 < kagakuhenka\ ;
+自動車税 < jidoushazei\ ;
+言語道断 < gongodoudan\ ;
+百面相 < hyakumensou\ ;
+不侵略 < fushinryaku\ ;
+古狐 < furugitsune\ ;
+付属物 < fuzokubutsu\ ;
+担保物権 < tanpobukken\ ;
+営業時間 < eigyoujikan\ ;
+勉強中 < benkyouchuu\ ;
+写真帳 < shashinchou\ ;
+一目散 < ichimokusan\ ;
+風力計 < fuuryokukei\ ;
+活用形 < katsuyoukei\ ;
+自動扉 < jidoutobira\ ;
+愛妻弁当 < aisaibentou\ ;
+会社立 < kaisharitsu\ ;
+美的嫌悪 < bitekiken''o\ ;
+見目形 < mimekatachi\ ;
+三千世界 < sanzensekai\ ;
+鑑別所 < kanbetsusho\ ;
+多重放送 < tajuuhousou\ ;
+二重外交 < nijuugaikou\ ;
+仮契約 < karikeiyaku\ ;
+核拡散 < kakukakusan\ ;
+周辺国 < shuuhenkoku\ ;
+予備工作 < yobikousaku\ ;
+短波放送 < tanpahousou\ ;
+風光絶佳 < fuukouzekka\ ;
+必然性 < hitsuzensei\ ;
+主情主義 < shujoushugi\ ;
+両替商 < ryougaeshou\ ;
+行動主義 < koudoushugi\ ;
+自分自身 < jibunjishin\ ;
+脱色剤 < dasshokuzai\ ;
+夜光塗料 < yakoutoryou\ ;
+右心室 < ushinshitsu\ ;
+力革 < chikaragawa\ ;
+中央口 < chuuouguchi\ ;
+真菌症 < shinkinshou\ ;
+圧力波 < atsuryokuha\ ;
+帰無仮説 < kimukasetsu\ ;
+市場原理 < shijougenri\ ;
+全国的 < zenkokuteki\ ;
+京滋地方 < keijichihou\ ;
+縄梯子 < nawabashigo\ ;
+大義名分 < taigimeibun\ ;
+呼吸運動 < kokyuuundou\ ;
+螺旋階段 < rasenkaidan\ ;
+英語教育 < eigokyouiku\ ;
+象牙海岸 < zougekaigan\ ;
+我物顔 < wagamonogao\ ;
+日本脳炎 < nihon''nouen\ ;
+食堂車 < shokudousha\ ;
+運営委員会 < un''eiiinkai\ ;
+善知識 < zenchishiki\ ;
+和魂漢才 < wakonkansai\ ;
+経営再建 < keieisaiken\ ;
+脳下垂体 < noukasuitai\ ;
+一円札 < ichiensatsu\ ;
+視聴覚 < shichoukaku\ ;
+募金運動 < bokin''undou\ ;
+耐熱鋼 < tainetsukou\ ;
+刻苦勉励 < kokkubenrei\ ;
+既婚男性 < kikondansei\ ;
+革命的 < kakumeiteki\ ;
+治水工事 < chisuikouji\ ;
+小休止 < shoukyuushi\ ;
+日本人論 < nihonjinron\ ;
+好取組 < koutorikumi\ ;
+博奕宿 < bakuchiyado\ ;
+軍事公債 < gunjikousai\ ;
+十人十色 < juunintoiro\ ;
+無配会社 < muhaigaisha\ ;
+脳貧血 < nouhinketsu\ ;
+家族手当 < kazokuteate\ ;
+洗礼式 < senreishiki\ ;
+甲骨文 < koukotsubun\ ;
+日銀券 < nichiginken\ ;
+羅針盤座 < rashinbanza\ ;
+福祉機器 < fukushikiki\ ;
+貧民窟 < hinminkutsu\ ;
+奉献物 < houkenbutsu\ ;
+実業家 < jitsugyouka\ ;
+胸算用 < munezan''you\ ;
+暫定予算 < zanteiyosan\ ;
+自費出版 < jihishuppan\ ;
+冬木立 < fuyukodachi\ ;
+常用漢字 < jouyoukanji\ ;
+結紮糸 < kessatsushi\ ;
+王侯貴族 < oukoukizoku\ ;
+逆宣伝 < gyakusenden\ ;
+人体模型 < jintaimokei\ ;
+鮮紅色 < senkoushoku\ ;
+入国税 < nyuukokuzei\ ;
+日西辞典 < nisseijiten\ ;
+私儀 < watakushigi\ ;
+感情移入 < kanjouinyuu\ ;
+拡大鏡 < kakudaikyou\ ;
+地方競馬 < chihoukeiba\ ;
+道楽者 < dourakumono\ ;
+女房役 < nyoubouyaku\ ;
+条約国 < jouyakukoku\ ;
+力足 < chikaraashi\ ;
+経済効果 < keizaikouka\ ;
+代替物 < daitaibutsu\ ;
+混凝土 < konkurizeto\ ;
+民事訴訟 < minjisoshou\ ;
+化学記号 < kagakukigou\ ;
+私供 < watashidomo\ ;
+参加意識 < sankaishiki\ ;
+戦時体制 < senjitaisei\ ;
+自由市場 < jiyuushijou\ ;
+冷房完備 < reiboukanbi\ ;
+自己双対 < jikosoutsui\ ;
+消毒剤 < shoudokuzai\ ;
+力負 < chikaramake\ ;
+火燵掛布 < kotatsugake\ ;
+万能薬 < man''nouyaku\ ;
+信憑性 < shinpyousei\ ;
+希望価格 < kiboukakaku\ ;
+列伝体 < retsudentai\ ;
+口可笑 < kuchiokashi\ ;
+選対本部 < sentaihonbu\ ;
+先頭打者 < sentoudasha\ ;
+実生活 < jisseikatsu\ ;
+名前空間 < namaekuukan\ ;
+百姓家 < hyakushouya\ ;
+浅草海苔 < asakusanori\ ;
+事業本部 < jigyouhonbu\ ;
+理論闘争 < rirontousou\ ;
+人口増加 < jinkouzouka\ ;
+外交辞令 < gaikoujirei\ ;
+同音異義語 < douon''igigo\ ;
+氏姓制度 < shiseiseido\ ;
+一局部 < ichikyokubu\ ;
+縄文時代 < joumonjidai\ ;
+間一髪 < kan''ippatsu\ ;
+世界大戦 < sekaitaisen\ ;
+機動演習 < kidouenshuu\ ;
+自警団員 < jikeidan''in\ ;
+電気抵抗 < denkiteikou\ ;
+鎧一具 < yoroiichigu\ ;
+町人物 < chouninmono\ ;
+通訳官 < tsuuyakukan\ ;
+必要悪 < hitsuyouaku\ ;
+鉄道網 < tetsudoumou\ ;
+原産物 < gensanbutsu\ ;
+器楽曲 < kigakukyoku\ ;
+必要性 < hitsuyousei\ ;
+防音装置 < bouonsouchi\ ;
+半面識 < hanmenshiki\ ;
+水澄 < mizusumashi\ ;
+取扱 < toriatsukai\ ;
+夢心地 < yumegokochi\ ;
+負債合計 < fusaigoukei\ ;
+今週中 < konshuuchuu\ ;
+話下手 < hanashibeta\ ;
+遊軍記者 < yuugunkisha\ ;
+価値体系 < kachitaikei\ ;
+二重結婚 < nijuukekkon\ ;
+一長一短 < itchouittan\ ;
+護送船団 < gosousendan\ ;
+犯行現場 < hankougenba\ ;
+意見広告 < ikenkoukoku\ ;
+小乗的 < shoujouteki\ ;
+善因善果 < zen''inzenka\ ;
+立脚点 < rikkyakuten\ ;
+鉄兜 < tetsukabuto\ ;
+無人地帯 < mujinchitai\ ;
+経営転換 < keieitenkan\ ;
+不信実 < fushinjitsu\ ;
+販売機会 < hanbaikikai\ ;
+争奪戦 < soudatsusen\ ;
+商学士 < shougakushi\ ;
+上屋敷 < kamiyashiki\ ;
+若大将 < wakadaishou\ ;
+遠隔操作 < enkakusousa\ ;
+操舵室 < soudashitsu\ ;
+成人式 < seijinshiki\ ;
+慣用語句 < kan''yougoku\ ;
+液体空気 < ekitaikuuki\ ;
+新面目 < shinmenmoku\ ;
+注文服 < chuumonfuku\ ;
+上棟式 < joutoushiki\ ;
+赤銅色 < shakudouiro\ ;
+出刃包丁 < debabouchou\ ;
+向学心 < kougakushin\ ;
+渇望者 < katsubousha\ ;
+土讚本線 < dosanhonsen\ ;
+財政支援 < zaiseishien\ ;
+宮廷画家 < kyuuteigaka\ ;
+執達吏 < shittatsuri\ ;
+最後列車 < saigoressha\ ;
+理工学部 < rikougakubu\ ;
+保管会社 < hokangaisha\ ;
+乗心地 < norigokochi\ ;
+配合禁忌 < haigoukinki\ ;
+弔祭料 < chousairyou\ ;
+過剰投資 < kajoutoushi\ ;
+家長制度 < kachouseido\ ;
+可聴距離 < kachoukyori\ ;
+下検分 < shitakenbun\ ;
+親類縁者 < shinruienja\ ;
+開催式 < kaisaishiki\ ;
+田舎娘 < inakamusume\ ;
+箱火鉢 < hakohibachi\ ;
+無理心中 < murishinjuu\ ;
+副首相 < fukushushou\ ;
+年賀葉書 < nengahagaki\ ;
+敵愾心 < tekigaishin\ ;
+釈空海 < shakukuukai\ ;
+連邦予算 < renpouyosan\ ;
+組織票 < soshikihyou\ ;
+出身者 < shusshinsha\ ;
+創価学会 < soukagakkai\ ;
+仕事量 < shigotoryou\ ;
+半月形 < hangetsukei\ ;
+分子説 < bunshisetsu\ ;
+半月弁 < hangetsuben\ ;
+正答率 < seitouritsu\ ;
+利子補給 < rishihokyuu\ ;
+季節的 < kisetsuteki\ ;
+氷枕 < koorimakura\ ;
+水柱 < mizubashira\ ;
+根本原理 < konpongenri\ ;
+安全保障 < anzenhoshou\ ;
+原子説 < genshisetsu\ ;
+健康保険 < kenkouhoken\ ;
+暗黒時代 < ankokujidai\ ;
+世代交代 < sedaikoutai\ ;
+神嘗祭 < kan''namesai\ ;
+桧舞台 < hinokibutai\ ;
+転送電話 < tensoudenwa\ ;
+対局者 < taikyokusha\ ;
+貝殻骨 < kaigarabone\ ;
+千両箱 < senryoubako\ ;
+昭和時代 < shouwajidai\ ;
+純収入 < junshuunyuu\ ;
+物理的 < butsuriteki\ ;
+林産物 < rinsanbutsu\ ;
+突然死 < totsuzenshi\ ;
+使用許可 < shiyoukyoka\ ;
+証取法 < shoutorihou\ ;
+歴史的 < rekishiteki\ ;
+組織的 < soshikiteki\ ;
+贈呈式 < zouteishiki\ ;
+積載量 < sekisairyou\ ;
+自発的 < jihatsuteki\ ;
+己 < tsuchinoto\ ;
+屡 < shibashiba\ ;
+謀 < hakarigoto\ ;
+熟 < tsukudzuku\ ;
+嘴 < kuchibashi\ ;
+々 < kurikaeshi\ ;
+土石流 < dosekiryuu\ ;
+市町村 < shichouson\ ;
+音楽映画 < ongakueiga\ ;
+食塩水 < shokuensui\ ;
+潤滑油 < junkatsuyu\ ;
+流星群 < ryuuseigun\ ;
+契約金 < keiyakukin\ ;
+決議文 < ketsugibun\ ;
+蒸留酒 < jouryuushu\ ;
+針葉樹 < shin''youju\ ;
+猛勉強 < moubenkyou\ ;
+宇宙遊泳 < uchuuyuuei\ ;
+深刻化 < shinkokuka\ ;
+切通 < kiridooshi\ ;
+所得顔 < tokoroegao\ ;
+御客様 < okyakusama\ ;
+蔵書票 < zoushohyou\ ;
+人工雪 < jinkouyuki\ ;
+同腹仔 < doufukushi\ ;
+射倖心 < shakoushin\ ;
+保健制度 < hokenseido\ ;
+準備運動 < junbiundou\ ;
+代議制度 < daigiseido\ ;
+博士号 < hakushigou\ ;
+入漁者 < nyuugyosha\ ;
+別除権 < betsujoken\ ;
+戦闘服 < sentoufuku\ ;
+模型地図 < mokeichizu\ ;
+養鶏業 < youkeigyou\ ;
+議決権 < giketsuken\ ;
+入園料 < nyuuenryou\ ;
+優先的 < yuusenteki\ ;
+無茶苦茶 < muchakucha\ ;
+同一視 < douitsushi\ ;
+古往今来 < kooukonrai\ ;
+難行道 < nangyoudou\ ;
+遺失品 < ishitsuhin\ ;
+食文化 < shokubunka\ ;
+鯰髭 < namazuhige\ ;
+民主国 < minshukoku\ ;
+再帰熱 < saikinetsu\ ;
+炭化物 < tankabutsu\ ;
+断片的 < danpenteki\ ;
+溺死体 < dekishitai\ ;
+海洋学 < kaiyougaku\ ;
+歯神経 < shishinkei\ ;
+口口 < kuchiguchi\ ;
+反抗的 < hankouteki\ ;
+開催国 < kaisaikoku\ ;
+御両親 < goryoushin\ ;
+摩利支天 < marishiten\ ;
+修正液 < shuuseieki\ ;
+初詣 < hatsumoude\ ;
+石畳 < ishidatami\ ;
+人為淘汰 < jin''itouta\ ;
+厚生省 < kouseishou\ ;
+逆説 < gyakusetsu\ ;
+高級車 < koukyuusha\ ;
+軟文学 < nanbungaku\ ;
+稼働時間 < kadoujikan\ ;
+試作品 < shisakuhin\ ;
+観覧料 < kanranryou\ ;
+不信任 < fushin''nin\ ;
+茸雲 < kinokogumo\ ;
+近道 < chikamichi\ ;
+三脚架 < sankyakuka\ ;
+変態的 < hentaiteki\ ;
+医療制度 < iryouseido\ ;
+近近 < chikadjika\ ;
+乞高評 < koukouhyou\ ;
+水心 < mizugokoro\ ;
+毛氈苔 < mousengoke\ ;
+面罵罵倒 < menbabatou\ ;
+三尺帯 < sanjakuobi\ ;
+応急策 < oukyuusaku\ ;
+砂煙 < sunakemuri\ ;
+人道的 < jindouteki\ ;
+海酸漿 < umihoozuki\ ;
+承認状 < shouninjou\ ;
+随筆家 < zuihitsuka\ ;
+核融合 < kakuyuugou\ ;
+抽選券 < chuusenken\ ;
+川魚 < kawazakana\ ;
+免許証 < menkyoshou\ ;
+美容術 < biyoujutsu\ ;
+裏貸屋 < uragashiya\ ;
+防毒面 < boudokumen\ ;
+弁慶蟹 < benkeigani\ ;
+卯年 < usagidoshi\ ;
+二線式 < nisenshiki\ ;
+必要事 < hitsuyouji\ ;
+発明家 < hatsumeika\ ;
+独裁者 < dokusaisha\ ;
+眺望権 < choubouken\ ;
+内通者 < naitsuusha\ ;
+中長期 < chuuchouki\ ;
+選挙違反 < senkyoihan\ ;
+現象論 < genshouron\ ;
+魔術師 < majutsushi\ ;
+国土庁 < kokudochou\ ;
+積分法 < sekibunhou\ ;
+信号灯 < shingoutou\ ;
+半陰陽 < han''in''you\ ;
+日本時間 < nihonjikan\ ;
+辻辻 < tsujitsuji\ ;
+平面鏡 < heimenkyou\ ;
+北枕 < kitamakura\ ;
+宅配便 < takuhaibin\ ;
+萎縮症 < ishukushou\ ;
+天目山 < tenmokuzan\ ;
+偏平足 < henpeisoku\ ;
+法学士 < hougakushi\ ;
+奴隷制度 < doreiseido\ ;
+構造保持 < kouzouhoji\ ;
+確執 < kakushitsu\ ;
+氷室 < hyoushitsu\ ;
+発煙筒 < hatsuentou\ ;
+側頭葉 < sokutouyou\ ;
+天皇杯 < ten''nouhai\ ;
+細胞核 < saiboukaku\ ;
+自動車化 < jidoushaka\ ;
+独擅場 < dokusenjou\ ;
+日本書紀 < nihonshoki\ ;
+製鋼業 < seikougyou\ ;
+光熱費 < kounetsuhi\ ;
+愛郷心 < aikyoushin\ ;
+決別 < ketsubetsu\ ;
+生産高 < seisandaka\ ;
+海水浴 < kaisuiyoku\ ;
+仮繃帯 < karihoutai\ ;
+及第者 < kyuudaisha\ ;
+後技 < ushirowaza\ ;
+卍巴 < manjidomoe\ ;
+米陸軍 < beirikugun\ ;
+心室 < shinshitsu\ ;
+注文品 < chuumonhin\ ;
+恒常的 < koujouteki\ ;
+人形師 < ningyoushi\ ;
+榴散弾 < ryuusandan\ ;
+発電機 < hatsudenki\ ;
+不空成就 < fukuujouju\ ;
+旧市街 < kyuushigai\ ;
+観覧席 < kanranseki\ ;
+実用化 < jitsuyouka\ ;
+考現学 < kougengaku\ ;
+平和運動 < heiwaundou\ ;
+公定歩合 < kouteibuai\ ;
+天衣無縫 < ten''imuhou\ ;
+開催中 < kaisaichuu\ ;
+理路整然 < riroseizen\ ;
+着色 < chakushoku\ ;
+南京繻子 < nankinjusu\ ;
+円鏡 < marukagami\ ;
+産業界 < sangyoukai\ ;
+遣直 < yarinaoshi\ ;
+虚無主義 < kyomushugi\ ;
+庶民劇 < shomingeki\ ;
+不仕末 < fushimatsu\ ;
+呆気者 < utsukemono\ ;
+解剖学 < kaibougaku\ ;
+仮埋葬 < karimaisou\ ;
+釣道具 < tsuridougu\ ;
+生産額 < seisangaku\ ;
+悲劇的 < higekiteki\ ;
+着脱 < chakudatsu\ ;
+北氷洋 < hoppyouyou\ ;
+十二月 < juunigatsu\ ;
+同学年 < dougakunen\ ;
+彗星 < houkiboshi\ ;
+現代的 < gendaiteki\ ;
+夢判断 < yumehandan\ ;
+岳友会 < gakuyuukai\ ;
+勘定尻 < kanjoujiri\ ;
+円鉋 < marugan''na\ ;
+後後 < nochinochi\ ;
+合宿所 < gasshukujo\ ;
+蠱惑的 < kowakuteki\ ;
+空間軸 < kuukanjiku\ ;
+中間層 < chuukansou\ ;
+特級酒 < tokkyuushu\ ;
+権威主義 < ken''ishugi\ ;
+卸商 < oroshishou\ ;
+署名国 < shomeikoku\ ;
+辻褄 < tsujitsuma\ ;
+気炎万丈 < kienbanjou\ ;
+演劇的 < engekiteki\ ;
+交戦国 < kousenkoku\ ;
+外形的 < gaikeiteki\ ;
+中間子 < chuukanshi\ ;
+花鰹 < hanagatsuo\ ;
+整流子 < seiryuushi\ ;
+優先株 < yuusenkabu\ ;
+短兵急 < tanpeikyuu\ ;
+弁慶縞 < benkeijima\ ;
+牡丹雪 < botan''yuki\ ;
+斜格性 < shakakusei\ ;
+鶴嘴 < tsuruhashi\ ;
+高角砲 < koukakuhou\ ;
+歴年齢 < rekinenrei\ ;
+無分別 < mufunbetsu\ ;
+刺戟性 < shigekisei\ ;
+先隣 < sakidonari\ ;
+通行税 < tsuukouzei\ ;
+超自然 < choushizen\ ;
+削氷機 < sakuhyouki\ ;
+契約者 < keiyakusha\ ;
+夜盗虫 < yotoumushi\ ;
+三三九度 < sansankudo\ ;
+安全率 < anzenritsu\ ;
+原子症 < genshishou\ ;
+原子病 < genshibyou\ ;
+計算機間 < keisankima\ ;
+季節感 < kisetsukan\ ;
+旧勘定 < kyuukanjou\ ;
+仮調印 < karichouin\ ;
+礼儀作法 < reigisahou\ ;
+滅茶苦茶 < mechakucha\ ;
+乗車賃 < joushachin\ ;
+左足 < hidariashi\ ;
+防虫剤 < bouchuuzai\ ;
+得失 < tokushitsu\ ;
+核戦争 < kakusensou\ ;
+発売日 < hatsubaibi\ ;
+耳下腺炎 < jikasen''en\ ;
+定足数 < teisokusuu\ ;
+石油危機 < sekiyukiki\ ;
+里神楽 < satokagura\ ;
+咄々 < totsutotsu\ ;
+薩摩芋 < satsumaimo\ ;
+姦通罪 < kantsuuzai\ ;
+山林学 < sanringaku\ ;
+副議長 < fukugichou\ ;
+刑事事件 < keijijiken\ ;
+航空病 < koukuubyou\ ;
+漢越音 < kan''etsuon\ ;
+出入口 < deiriguchi\ ;
+利用価値 < riyoukachi\ ;
+酒処 < sakedokoro\ ;
+仮納税 < karinouzei\ ;
+総合的 < sougouteki\ ;
+仲裁者 < chuusaisha\ ;
+出展者 < shuttensha\ ;
+活字体 < katsujitai\ ;
+肘鉄砲 < hijideppou\ ;
+対蹠地 < taisekichi\ ;
+回線負荷 < kaisenfuka\ ;
+廻漕業 < kaisougyou\ ;
+低障碍 < teishougai\ ;
+歳月 < toshitsuki\ ;
+残余額 < zan''yogaku\ ;
+横車 < yokoguruma\ ;
+治療法 < chiryouhou\ ;
+機械油 < kikaiabura\ ;
+自発性 < jihatsusei\ ;
+信号手 < shingoushu\ ;
+首尾一貫 < shubiikkan\ ;
+医療保険 < iryouhoken\ ;
+栃木県 < tochigiken\ ;
+調査票 < chousahyou\ ;
+武装解除 < busoukaijo\ ;
+編年史 < hen''nenshi\ ;
+土着民 < dochakumin\ ;
+卓出 < takushutsu\ ;
+進呈本 < shinteibon\ ;
+瑞宝章 < zuihoushou\ ;
+表意文字 < hyouimonji\ ;
+落選者 < rakusensha\ ;
+内勘定 < uchikanjou\ ;
+奉納額 < hounougaku\ ;
+式日 < shikijitsu\ ;
+細胞学 < saibougaku\ ;
+都市国家 < toshikokka\ ;
+果実店 < kajitsuten\ ;
+無為徒食 < muitoshoku\ ;
+映画音楽 < eigaongaku\ ;
+実時間 < jitsujikan\ ;
+入漁権 < nyuugyoken\ ;
+入質 < nyuushichi\ ;
+著作者 < chosakusha\ ;
+着着 < chakuchaku\ ;
+南側 < minamigawa\ ;
+脱脂乳 < dasshinyuu\ ;
+前後左右 < zengosayuu\ ;
+祭祀料 < saishiryou\ ;
+野戦特科 < yasentokka\ ;
+不羈奔放 < fukihonpou\ ;
+内弁慶 < uchibenkei\ ;
+向上心 < koujoushin\ ;
+一手販売 < ittehanbai\ ;
+牧羊者 < bokuyousha\ ;
+参観人 < sankan''nin\ ;
+皮衣 < kawagoromo\ ;
+均一化 < kin''itsuka\ ;
+共同者 < kyoudousha\ ;
+明朝体 < minchoutai\ ;
+塩胡椒 < shiokoshou\ ;
+耐震性 < taishinsei\ ;
+新西蘭 < nyūjīrando\ ;
+区区 < machimachi\ ;
+着発 < chakuhatsu\ ;
+一枚貝 < ichimaigai\ ;
+乱暴者 < ranboumono\ ;
+各一部 < kakuichibu\ ;
+陰日向 < kagehinata\ ;
+紫宸殿 < shishinden\ ;
+幽霊株 < yuureikabu\ ;
+所得者 < shotokusha\ ;
+軍事力 < gunjiryoku\ ;
+勝負事 < shoubugoto\ ;
+当座預金 < touzayokin\ ;
+花鋏 < hanabasami\ ;
+給水車 < kyuusuisha\ ;
+細胞壁 < saibouheki\ ;
+庭漆 < niwaurushi\ ;
+桜花爛漫 < oukaranman\ ;
+可逆性 < kagyakusei\ ;
+自由自在 < jiyuujizai\ ;
+乾燥無味 < kansoumumi\ ;
+二項定理 < nikouteiri\ ;
+懸賞金 < kenshoukin\ ;
+砂嵐 < sunaarashi\ ;
+含嗽薬 < gansouyaku\ ;
+見学者 < kengakusha\ ;
+優先席 < yuusenseki\ ;
+少数者 < shousuusha\ ;
+共同線 < kyoudousen\ ;
+年男 < toshiotoko\ ;
+及第点 < kyuudaiten\ ;
+活性汚泥 < kasseiodei\ ;
+分類表 < bunruihyou\ ;
+近眼鏡 < kingankyou\ ;
+関数族 < kansuuzoku\ ;
+町村制 < chousonsei\ ;
+極悪人 < gokuakunin\ ;
+引受人 < hikiukenin\ ;
+編年体 < hen''nentai\ ;
+代願人 < daigan''nin\ ;
+有力馬 < yuuryokuba\ ;
+次次 < tsugitsugi\ ;
+三三五五 < sansangogo\ ;
+除雪車 < josetsusha\ ;
+大審院 < daishin''in\ ;
+税関長 < zeikanchou\ ;
+中間体 < chuukantai\ ;
+滋養物 < jiyoubutsu\ ;
+九工大 < kyuukoudai\ ;
+刀疵 < katanakizu\ ;
+加湿器 < kashitsuki\ ;
+新訂版 < shinteiban\ ;
+違棚 < chigaidana\ ;
+十人力 < juuninriki\ ;
+下宿人 < geshukunin\ ;
+大業物 < oowazamono\ ;
+直筆 < chokuhitsu\ ;
+側面観 < sokumenkan\ ;
+弐心 < futagokoro\ ;
+現象界 < genshoukai\ ;
+追試験 < tsuishiken\ ;
+先天的 < sententeki\ ;
+建築家 < kenchikuka\ ;
+水量計 < suiryoukei\ ;
+直立 < chokuritsu\ ;
+兜蟹 < kabutogani\ ;
+親衛隊 < shin''eitai\ ;
+盲窓 < mekuramado\ ;
+先天病 < sentenbyou\ ;
+繁殖期 < hanshokuki\ ;
+船幽霊 < funayuurei\ ;
+民族性 < minzokusei\ ;
+御了承 < goryoushou\ ;
+水蛇座 < mizuhebiza\ ;
+拝外的 < haigaiteki\ ;
+刺戟剤 < shigekizai\ ;
+所得税 < shotokuzei\ ;
+棉実油 < menjitsuyu\ ;
+出獄 < shutsugoku\ ;
+出猟 < shutsuryou\ ;
+勤続者 < kinzokusha\ ;
+天皇制 < ten''nousei\ ;
+喫煙車 < kitsuensha\ ;
+実習生 < jisshuusei\ ;
+体系的 < taikeiteki\ ;
+遊興税 < yuukyouzei\ ;
+修道士 < shuudoushi\ ;
+新教徒 < shinkyouto\ ;
+砂埃 < sunabokori\ ;
+博覧会 < hakurankai\ ;
+前登録 < zentouroku\ ;
+東洋学 < touyougaku\ ;
+大将軍 < daishougun\ ;
+在庫管理 < zaikokanri\ ;
+原子核 < genshikaku\ ;
+大公国 < taikoukoku\ ;
+休息所 < kyuusokujo\ ;
+左耳 < hidarimimi\ ;
+高障害 < koushougai\ ;
+力帯 < chikaraobi\ ;
+求道者 < kyuudousha\ ;
+天守閣 < tenshukaku\ ;
+砂嚢 < sunabukuro\ ;
+乾物屋 < kanbutsuya\ ;
+水鉄砲 < mizudeppou\ ;
+千三屋 < senmitsuya\ ;
+入港税 < nyuukouzei\ ;
+銀行業 < ginkougyou\ ;
+火災保険 < kasaihoken\ ;
+休泊所 < kyuuhakujo\ ;
+人工的 < jinkouteki\ ;
+罵詈雑言 < barizougon\ ;
+光蘚 < hikarigoke\ ;
+聴視者 < choushisha\ ;
+両国語 < ryoukokugo\ ;
+道路封鎖 < dourofuusa\ ;
+花詞 < hanakotoba\ ;
+高瀬舟 < takasebune\ ;
+組織名 < soshikimei\ ;
+初氷 < hatsugoori\ ;
+同期式 < doukishiki\ ;
+大腸菌 < daichoukin\ ;
+半狂乱 < hankyouran\ ;
+贅沢品 < zeitakuhin\ ;
+小委員会 < shouiinkai\ ;
+一本道 < ipponmichi\ ;
+利潤率 < rijunritsu\ ;
+迫害者 < hakugaisha\ ;
+大極殿 < daigokuden\ ;
+重量感 < juuryoukan\ ;
+美学的 < bigakuteki\ ;
+写生帳 < shaseichou\ ;
+交渉委員 < koushouiin\ ;
+廃棄物 < haikibutsu\ ;
+電磁石 < denjishaku\ ;
+造営物 < zoueibutsu\ ;
+技術面 < gijutsumen\ ;
+仕置者 < shiokimono\ ;
+苦艾 < nigayomogi\ ;
+時刻表 < jikokuhyou\ ;
+合同行為 < goudoukoui\ ;
+炉辺談話 < rohendanwa\ ;
+毒科学 < dokukagaku\ ;
+直行便 < chokkoubin\ ;
+手内職 < tenaishoku\ ;
+旅行先 < ryokousaki\ ;
+核弾頭 < kakudantou\ ;
+過去分詞 < kakobunshi\ ;
+空集合 < kuushuugou\ ;
+皿秤 < sarabakari\ ;
+特許料 < tokkyoryou\ ;
+主情的 < shujouteki\ ;
+営利会社 < eirigaisha\ ;
+更衣室 < kouishitsu\ ;
+殺伐 < satsubatsu\ ;
+会席膳 < kaisekizen\ ;
+千一夜 < sen''ichiya\ ;
+真田紐 < sanadahimo\ ;
+道学者 < dougakusha\ ;
+揮発性 < kihatsusei\ ;
+沸々 < futsufutsu\ ;
+出資金 < shusshikin\ ;
+牧羊犬 < bokuyouken\ ;
+人事不省 < jinjifusei\ ;
+蒸留水 < jouryuusui\ ;
+異性関係 < iseikankei\ ;
+等圧線 < touatsusen\ ;
+毒味役 < dokumiyaku\ ;
+兎脣 < mitsukuchi\ ;
+事故原因 < jikogen''in\ ;
+優良店 < yuuryouten\ ;
+内芸者 < uchigeisha\ ;
+悪達者 < warudassha\ ;
+三面鏡 < sanmenkyou\ ;
+狸蕎麦 < tanukisoba\ ;
+裏書人 < uragakinin\ ;
+特大号 < tokudaigou\ ;
+組織体 < soshikitai\ ;
+現実化 < genjitsuka\ ;
+多目的 < tamokuteki\ ;
+将来性 < shouraisei\ ;
+一人腹 < hitoribara\ ;
+座技 < suwariwaza\ ;
+画一化 < kakuitsuka\ ;
+重金属 < juukinzoku\ ;
+良質 < ryoushitsu\ ;
+槍衾 < yaribusuma\ ;
+家出少女 < iedeshoujo\ ;
+立会人 < tachiainin\ ;
+古典主義 < kotenshugi\ ;
+不法投棄 < fuhoutouki\ ;
+逐日 < chikujitsu\ ;
+歴史上 < rekishijou\ ;
+製鉄所 < seitetsujo\ ;
+若緑 < wakamidori\ ;
+一人者 < hitorimono\ ;
+車賃 < kurumachin\ ;
+二重螺旋 < nijuurasen\ ;
+遮断壁 < shadanpeki\ ;
+特売場 < tokubaijou\ ;
+告知板 < kokuchiban\ ;
+沖積期 < chuusekiki\ ;
+仮記入 < karikinyuu\ ;
+修道会 < shuudoukai\ ;
+位相速度 < isousokudo\ ;
+桟梯子 < sanbashigo\ ;
+番号札 < bangoufuda\ ;
+少数点 < shousuuten\ ;
+山猫座 < yamanekoza\ ;
+寝台券 < shindaiken\ ;
+水銀柱 < suiginchuu\ ;
+赤海亀 < akaumigame\ ;
+骨相学 < kossougaku\ ;
+音韻部門 < on''inbumon\ ;
+機能主義 < kinoushugi\ ;
+大臼歯 < daikyuushi\ ;
+機械警備 < kikaikeibi\ ;
+民族史 < minzokushi\ ;
+五稜郭 < goryoukaku\ ;
+契約書 < keiyakusho\ ;
+影法師 < kageboushi\ ;
+金剛石 < kongouseki\ ;
+畑鼠 < hatanezumi\ ;
+特許庁 < tokkyochou\ ;
+基礎試験 < kisoshiken\ ;
+家庭菜園 < kateisaien\ ;
+特売品 < tokubaihin\ ;
+道路工事 < dourokouji\ ;
+下請負 < shitaukeoi\ ;
+収穫期 < shuukakuki\ ;
+亜爾然丁 < aruzenchin\ ;
+四苦八苦 < shikuhakku\ ;
+着払 < chakubarai\ ;
+陸戦隊 < rikusentai\ ;
+給水管 < kyuusuikan\ ;
+委細面談 < isaimendan\ ;
+神秘的 < shinpiteki\ ;
+重量噸 < juuryouton\ ;
+対校試合 < taikoujiai\ ;
+収穫時 < shuukakuji\ ;
+高圧縮 < kouasshuku\ ;
+著作権 < chosakuken\ ;
+人気作家 < ninkisakka\ ;
+代執行 < daishikkou\ ;
+限定的 < genteiteki\ ;
+高圧線 < kouatsusen\ ;
+仮採用 < karisaiyou\ ;
+暖冬異変 < dantouihen\ ;
+出撃 < shutsugeki\ ;
+改革者 < kaikakusha\ ;
+地下鉄 < chikatetsu\ ;
+尊王党 < son''noutou\ ;
+土俵際 < dohyougiwa\ ;
+大山猫 < ooyamaneko\ ;
+航空学 < koukuugaku\ ;
+原材料 < genzairyou\ ;
+出産数 < shussansuu\ ;
+欄参照 < ransanshou\ ;
+出生数 < shusseisuu\ ;
+守備率 < shubiritsu\ ;
+文芸学 < bungeigaku\ ;
+女性一般 < joseiippan\ ;
+紅冠鳥 < koukanchou\ ;
+初場所 < hatsubasho\ ;
+乳状液 < nyuujoueki\ ;
+単坐式 < tanzashiki\ ;
+在留民 < zairyuumin\ ;
+美顔術 < biganjutsu\ ;
+煮沸器 < shafutsuki\ ;
+優良品 < yuuryouhin\ ;
+怪獣映画 < kaijuueiga\ ;
+多種多様 < tashutayou\ ;
+峠道 < tougemichi\ ;
+二部教授 < nibukyouju\ ;
+戦術家 < senjutsuka\ ;
+速度違反 < sokudoihan\ ;
+仕事師 < shigotoshi\ ;
+年強 < toshidzuyo\ ;
+横断歩道 < oudanhodou\ ;
+無生物 < museibutsu\ ;
+雑文家 < zatsubunka\ ;
+同調者 < douchousha\ ;
+予約席 < yoyakuseki\ ;
+金石文 < kinsekibun\ ;
+練習船 < renshuusen\ ;
+舗装道路 < hosoudouro\ ;
+測深機 < sokushinki\ ;
+艶艶 < tsuyatsuya\ ;
+発見料 < hakkenryou\ ;
+衒学者 < gengakusha\ ;
+引出物 < hikidemono\ ;
+開架式 < kaikashiki\ ;
+包含的 < houganteki\ ;
+合奏調 < gassouchou\ ;
+田鵑 < hototogisu\ ;
+共和国 < kyouwakoku\ ;
+審判員 < shinpan''in\ ;
+無線技師 < musengishi\ ;
+清朝体 < seichoutai\ ;
+飛鳥時代 < asukajidai\ ;
+表日本 < omotenihon\ ;
+現代劇 < gendaigeki\ ;
+山鯨 < yamakujira\ ;
+即効薬 < sokkouyaku\ ;
+日運動 < nichiundou\ ;
+草枕 < kusamakura\ ;
+職階制 < shokkaisei\ ;
+前車軸 < zenshajiku\ ;
+回路基板 < kairokiban\ ;
+上昇線 < joushousen\ ;
+機密性 < kimitsusei\ ;
+明細表 < meisaihyou\ ;
+形成外科 < keiseigeka\ ;
+修辞学 < shuujigaku\ ;
+名誉職 < meiyoshoku\ ;
+宇宙兵器 < uchuuheiki\ ;
+四天王 < shiten''nou\ ;
+異常気象 < ijoukishou\ ;
+人相学 < ninsougaku\ ;
+着実 < chakujitsu\ ;
+授業料 < jugyouryou\ ;
+鉛中毒 < enchuudoku\ ;
+無機化学 < mukikagaku\ ;
+自由主義 < jiyuushugi\ ;
+治療代 < chiryoudai\ ;
+傷薬 < kizugusuri\ ;
+位記追贈 < ikitsuisou\ ;
+帯黄色 < taioushoku\ ;
+茶柱 < chabashira\ ;
+直接 < chokusetsu\ ;
+底土 < sokotsuchi\ ;
+実写映画 < jisshaeiga\ ;
+起工式 < kikoushiki\ ;
+自由時間 < jiyuujikan\ ;
+畳針 < tatamihari\ ;
+発熱 < hatsunetsu\ ;
+切実 < setsujitsu\ ;
+取得者 < shutokusha\ ;
+御礼奉公 < oreiboukou\ ;
+山颪 < yamaoroshi\ ;
+悪平等 < akubyoudou\ ;
+光物 < hikarimono\ ;
+剔出 < tekishutsu\ ;
+生魚 < namazakana\ ;
+朱子学 < shushigaku\ ;
+軽金属 < keikinzoku\ ;
+健脚家 < kenkyakuka\ ;
+先覚者 < senkakusha\ ;
+不整脈 < fuseimyaku\ ;
+仲間内 < nakamauchi\ ;
+将来像 < shouraizou\ ;
+低教会 < teikyoukai\ ;
+性衝動 < seishoudou\ ;
+園芸用具 < engeiyougu\ ;
+紙芝居 < kamishibai\ ;
+偏辺 < katahorori\ ;
+作成者 < sakuseisha\ ;
+回春剤 < kaishunzai\ ;
+消費量 < shouhiryou\ ;
+並製品 < namiseihin\ ;
+花畑 < hanabatake\ ;
+破茶目茶 < hachamecha\ ;
+専有権 < sen''yuuken\ ;
+乗馬靴 < joubagutsu\ ;
+候間 < sourouaida\ ;
+不穏文書 < fuonbunsho\ ;
+出資者 < shusshisha\ ;
+化石学 < kasekigaku\ ;
+漢字文化 < kanjibunka\ ;
+聴診器 < choushinki\ ;
+進出 < shinshutsu\ ;
+猩猩蠅 < shoujoubae\ ;
+乱数表 < ransuuhyou\ ;
+予備試験 < yobishiken\ ;
+労務管理 < roumukanri\ ;
+店卸 < tanaoroshi\ ;
+埋立地 < umetatechi\ ;
+共同性 < kyoudousei\ ;
+熟練者 < jukurensha\ ;
+東北東 < touhokutou\ ;
+平和会議 < heiwakaigi\ ;
+略述 < ryakujutsu\ ;
+生体膜 < seitaimaku\ ;
+任務部隊 < ninmubutai\ ;
+民衆駅 < minshuueki\ ;
+宇宙食 < uchuushoku\ ;
+常常 < tsunedzune\ ;
+日光浴 < nikkouyoku\ ;
+代数学 < daisuugaku\ ;
+小間物屋 < komamonoya\ ;
+能役者 < nouyakusha\ ;
+沖積土 < chuusekido\ ;
+引力圏 < inryokuken\ ;
+別口 < betsukuchi\ ;
+中折帽 < nakaorebou\ ;
+非活動 < hikatsudou\ ;
+縦横無尽 < juuoumujin\ ;
+八橋 < yatsuhashi\ ;
+国家主義 < kokkashugi\ ;
+過剰投与 < kajoutouyo\ ;
+論理回路 < ronrikairo\ ;
+有功章 < yuukoushou\ ;
+投票者 < touhyousha\ ;
+攻撃隊 < kougekitai\ ;
+報告者 < houkokusha\ ;
+発表者 < happyousha\ ;
+惣管領 < soukanryou\ ;
+自壊作用 < jikaisayou\ ;
+選択肢 < sentakushi\ ;
+技術者 < gijutsusha\ ;
+進歩的 < shinpoteki\ ;
+埋蔵量 < maizouryou\ ;
+仕事台 < shigotodai\ ;
+性成熟 < seiseijuku\ ;
+永年間 < naganenkan\ ;
+背教者 < haikyousha\ ;
+辰年 < tatsudoshi\ ;
+手工業 < shukougyou\ ;
+準備期間 < junbikikan\ ;
+別別 < betsubetsu\ ;
+尻餠 < shirimochi\ ;
+申請者 < shinseisha\ ;
+演出家 < enshutsuka\ ;
+一安心 < hitoanshin\ ;
+天下無双 < tenkamusou\ ;
+行楽地 < kourakuchi\ ;
+食管法 < shokkanhou\ ;
+観測船 < kansokusen\ ;
+競合者 < kyougousha\ ;
+健脳剤 < ken''nouzai\ ;
+一瀉千里 < isshasenri\ ;
+白樺 < shirakanba\ ;
+金剛杖 < kongoudzue\ ;
+横行闊歩 < oukoukappo\ ;
+謝肉祭 < shanikusai\ ;
+複写紙 < fukushashi\ ;
+週刊誌 < shuukanshi\ ;
+収税所 < shuuzeisho\ ;
+剰余価値 < jouyokachi\ ;
+八月 < hachigatsu\ ;
+通行人 < tsuukounin\ ;
+鑑定料 < kanteiryou\ ;
+踏車 < fumiguruma\ ;
+文化国家 < bunkakokka\ ;
+舞台稽古 < butaigeiko\ ;
+同一人 < douitsunin\ ;
+高潮線 < kouchousen\ ;
+浸透性 < shintousei\ ;
+血色素 < kesshikiso\ ;
+脳震盪 < noushintou\ ;
+伊勢大廟 < isetaibyou\ ;
+賃貸人 < chintainin\ ;
+出生地 < shusseichi\ ;
+略説 < ryakusetsu\ ;
+練習生 < renshuusei\ ;
+座席表 < zasekihyou\ ;
+観測者 < kansokusha\ ;
+相互支援 < sougoshien\ ;
+地獄耳 < jigokumimi\ ;
+高級品 < koukyuuhin\ ;
+遠日点 < enjitsuten\ ;
+漢学者 < kangakusha\ ;
+牧場鳥 < makibatori\ ;
+申込 < moushikomi\ ;
+切切 < setsusetsu\ ;
+死刑囚 < shikeishuu\ ;
+氷砂糖 < koorizatou\ ;
+普遍原理 < fuhengenri\ ;
+共著者 < kyouchosha\ ;
+骨髄炎 < kotsuzuien\ ;
+不即不離 < fusokufuri\ ;
+放牧地 < houbokuchi\ ;
+悪因悪果 < akuin''akka\ ;
+白血球 < hakkekkyuu\ ;
+盲壁 < mekurakabe\ ;
+溶岩流 < youganryuu\ ;
+死傷者 < shishousha\ ;
+式部官 < shikibukan\ ;
+脆弱性 < zeijakusei\ ;
+給水栓 < kyuusuisen\ ;
+鯨幕 < kujiramaku\ ;
+観測網 < kansokumou\ ;
+急行券 < kyuukouken\ ;
+白星 < shiroboshi\ ;
+百日 < hyakunichi\ ;
+附和雷同 < fuwaraidou\ ;
+御鞭撻 < gobentatsu\ ;
+緑十字 < ryokujuuji\ ;
+化粧部屋 < keshoubeya\ ;
+流線形 < ryuusenkei\ ;
+膜質 < makushitsu\ ;
+原始的 < genshiteki\ ;
+牧羊地 < bokuyouchi\ ;
+出入 < shutsunyuu\ ;
+磨製石器 < maseisekki\ ;
+父子家庭 < fushikatei\ ;
+埼玉県 < saitamaken\ ;
+余韻嫋嫋 < yoinjoujou\ ;
+攻撃軍 < kougekigun\ ;
+敵艦隊 < tekikantai\ ;
+年下 < toshishita\ ;
+食器棚 < shokkidana\ ;
+伝送先 < densousaki\ ;
+稲荷鮨 < inarizushi\ ;
+係長 < kakarichou\ ;
+復調器 < fukuchouki\ ;
+大病人 < daibyounin\ ;
+共労者 < kyourousha\ ;
+候調 < sourouchou\ ;
+病原菌 < byougenkin\ ;
+朝鮮人 < chousenjin\ ;
+縄文土器 < joumondoki\ ;
+優越権 < yuuetsuken\ ;
+鯨尺 < kujirajaku\ ;
+一人旅 < hitoritabi\ ;
+文学論 < bungakuron\ ;
+肉感的 < nikkanteki\ ;
+急行便 < kyuukoubin\ ;
+甲乙丙 < kouotsuhei\ ;
+中波長 < chuuhachou\ ;
+無職者 < mushokusha\ ;
+収税官 < shuuzeikan\ ;
+学部長 < gakubuchou\ ;
+財務管理 < zaimukanri\ ;
+超格子 < choukoushi\ ;
+穂状花序 < suijoukajo\ ;
+闊葉樹 < katsuyouju\ ;
+盛土 < moritsuchi\ ;
+共鳴者 < kyoumeisha\ ;
+無体物 < mutaibutsu\ ;
+浮気女 < uwakion''na\ ;
+登竜門 < touryuumon\ ;
+一義的 < ichigiteki\ ;
+第一条 < daiichijou\ ;
+辞書部門 < jishobumon\ ;
+内用薬 < naiyouyaku\ ;
+機動部隊 < kidoubutai\ ;
+保安処分 < hoanshobun\ ;
+花暦 < hanagoyomi\ ;
+座標軸 < zahyoujiku\ ;
+策源地 < sakugenchi\ ;
+直列 < chokuretsu\ ;
+優生学 < yuuseigaku\ ;
+意思表示 < ishihyouji\ ;
+分隊長 < buntaichou\ ;
+営利事業 < eirijigyou\ ;
+前借金 < zenshakkin\ ;
+皮膚移植 < hifuishoku\ ;
+仲裁人 < chuusainin\ ;
+赤道祭 < sekidousai\ ;
+東北大 < touhokudai\ ;
+実証論 < jisshouron\ ;
+不燃物 < funenbutsu\ ;
+全強風 < zenkyoufuu\ ;
+議事妨害 < gijibougai\ ;
+小天地 < shoutenchi\ ;
+酢酸塩 < sakusan''en\ ;
+超音速 < chouonsoku\ ;
+密告者 < mikkokusha\ ;
+分類学 < bunruigaku\ ;
+彫金師 < choukinshi\ ;
+一騎当千 < ikkitousen\ ;
+阿鼻叫喚 < abikyoukan\ ;
+絶対温度 < zettaiondo\ ;
+黄金世界 < ougonsekai\ ;
+共通語 < kyoutsuugo\ ;
+冽冽 < retsuretsu\ ;
+神秘学 < shinhigaku\ ;
+一本橋 < ipponbashi\ ;
+第五列 < daigoretsu\ ;
+紳士用 < shinshiyou\ ;
+一枚岩 < ichimaiiwa\ ;
+一本槍 < ippon''yari\ ;
+困窮者 < konkyuusha\ ;
+入室 < nyuushitsu\ ;
+棒温度計 < bouondokei\ ;
+冬支度 < fuyujitaku\ ;
+共同体 < kyoudoutai\ ;
+少数党 < shousuutou\ ;
+全民衆 < zenminshuu\ ;
+相反的 < souhanteki\ ;
+浮遊物 < fuyuubutsu\ ;
+労働省 < roudoushou\ ;
+孫息子 < magomusuko\ ;
+反対意見 < hantaiiken\ ;
+供養塚 < kuyoudzuka\ ;
+駆逐艦 < kuchikukan\ ;
+素人目 < shiroutome\ ;
+精肉店 < seinikuten\ ;
+双殻類 < soukakurui\ ;
+欣求浄土 < gongujoudo\ ;
+金貨準備 < kinkajunbi\ ;
+奨励金 < shoureikin\ ;
+不精髭 < bushouhige\ ;
+論理素子 < ronrisoshi\ ;
+能動的 < noudouteki\ ;
+約半分 < yakuhanbun\ ;
+山荒 < yamaarashi\ ;
+網漁業 < amigyogyou\ ;
+授業中 < jugyouchuu\ ;
+岩石圏 < gansekiken\ ;
+露地栽培 < rojisaibai\ ;
+役目柄 < yakumegara\ ;
+古墳時代 < kofunjidai\ ;
+一本松 < ipponmatsu\ ;
+塩煎餅 < shiosenbei\ ;
+南々西 < nan''nansei\ ;
+在学生 < zaigakusei\ ;
+剃刀砥 < kamisorido\ ;
+多発性 < tahatsusei\ ;
+無煙火薬 < muenkayaku\ ;
+優越感 < yuuetsukan\ ;
+特級品 < tokkyuuhin\ ;
+三角錐 < sankakusui\ ;
+傑物 < ketsubutsu\ ;
+必治薬 < hitchiyaku\ ;
+単振動 < tanshindou\ ;
+主張者 < shuchousha\ ;
+排他律 < haitaritsu\ ;
+政治機構 < seijikikou\ ;
+意志決定 < ishikettei\ ;
+優越性 < yuuetsusei\ ;
+形態学 < keitaigaku\ ;
+工業界 < kougyoukai\ ;
+工業用 < kougyouyou\ ;
+積乱雲 < sekiran''un\ ;
+拝観料 < haikanryou\ ;
+領海線 < ryoukaisen\ ;
+角分散 < kakubunsan\ ;
+不見識 < fukenshiki\ ;
+大学生 < daigakusei\ ;
+最北端 < saihokutan\ ;
+表面上 < hyoumenjou\ ;
+濃硫酸 < nouryuusan\ ;
+略筆 < ryakuhitsu\ ;
+水化物 < suikabutsu\ ;
+超伝導 < choudendou\ ;
+文学者 < bungakusha\ ;
+粗目雪 < zarameyuki\ ;
+史学者 < shigakusha\ ;
+国民軍 < kokumingun\ ;
+咀嚼筋 < soshakukin\ ;
+住所録 < juushoroku\ ;
+駐停車 < chuuteisha\ ;
+植樹祭 < shokujusai\ ;
+負荷分散 < fukabunsan\ ;
+角速度 < kakusokudo\ ;
+左利 < hidarikiki\ ;
+大赤斑 < daisekihan\ ;
+地中海 < chichuukai\ ;
+伸餅 < noshimochi\ ;
+不偏不党 < fuhenfutou\ ;
+内冑 < uchikabuto\ ;
+商売人 < shoubainin\ ;
+同床異夢 < doushouimu\ ;
+受取人 < uketorinin\ ;
+見本市 < mihon''ichi\ ;
+無限軌道 < mugenkidou\ ;
+投票権 < touhyouken\ ;
+探照灯 < tanshoutou\ ;
+全勝軍 < zenshougun\ ;
+給水塔 < kyuusuitou\ ;
+潮干狩 < shiohigari\ ;
+軍事顧問 < gunjikomon\ ;
+牡羊座 < ohitsujiza\ ;
+耽美主義 < tanbishugi\ ;
+収税人 < shuuzeinin\ ;
+喜劇映画 < kigekieiga\ ;
+左側 < hidarigawa\ ;
+選択権 < sentakuken\ ;
+採点表 < saitenhyou\ ;
+工工四 < kunkunshii\ ;
+入口 < hairiguchi\ ;
+記録的 < kirokuteki\ ;
+豆板銀 < mameitagin\ ;
+絶対量 < zettairyou\ ;
+東北人 < touhokujin\ ;
+海軍省 < kaigunshou\ ;
+金剛力 < kongouriki\ ;
+真暗闇 < makurayami\ ;
+検疫官 < ken''ekikan\ ;
+室長 < shitsuchou\ ;
+対象外 < taishougai\ ;
+新潟県 < niigataken\ ;
+闇再販 < yamisaihan\ ;
+動物愛 < doubutsuai\ ;
+曼珠沙華 < manjushage\ ;
+使用量 < shiyouryou\ ;
+優姿 < yasasugata\ ;
+藁半紙 < warabanshi\ ;
+模擬試験 < mogishiken\ ;
+新開地 < shinkaichi\ ;
+非常識 < hijoushiki\ ;
+一面観 < ichimenkan\ ;
+管絃楽 < kangengaku\ ;
+規則違反 < kisokuihan\ ;
+最恵国 < saikeikoku\ ;
+慢性的 < manseiteki\ ;
+夏炉冬扇 < karotousen\ ;
+推計学 < suikeigaku\ ;
+副領事 < fukuryouji\ ;
+印刷者 < insatsusha\ ;
+耐火力 < taikaryoku\ ;
+友禅染 < yuuzenzome\ ;
+報告書 < houkokusho\ ;
+骨格筋 < kokkakukin\ ;
+雨天決行 < utenkekkou\ ;
+藻塩草 < moshiogusa\ ;
+集大成 < shuutaisei\ ;
+慢性病 < manseibyou\ ;
+宣言的 < sengenteki\ ;
+六重奏 < rokujuusou\ ;
+音響学 < onkyougaku\ ;
+申立 < moushitate\ ;
+工業港 < kougyoukou\ ;
+総辞職 < soujishoku\ ;
+軍団長 < gundanchou\ ;
+意見交換 < ikenkoukan\ ;
+年長者 < nenchousha\ ;
+総務局 < soumukyoku\ ;
+不乾性油 < fukanseiyu\ ;
+面相筆 < mensoufude\ ;
+散歩道 < sanpomichi\ ;
+示圧計 < shiatsukei\ ;
+世紀末 < seikimatsu\ ;
+第三国 < daisangoku\ ;
+投票数 < touhyousuu\ ;
+何箇月 < nankagetsu\ ;
+申請書 < shinseisho\ ;
+植物 < shokubutsu\ ;
+腹膜炎 < fukumakuen\ ;
+温泉町 < onsenmachi\ ;
+主動的 < shudouteki\ ;
+泌尿器科 < hinyoukika\ ;
+不文律 < fubunritsu\ ;
+弁当箱 < bentoubako\ ;
+岩燕 < iwatsubame\ ;
+天体学 < tentaigaku\ ;
+印刷紙 < insatsushi\ ;
+低成長 < teiseichou\ ;
+俯仰角 < fugyoukaku\ ;
+帷幄上奏 < iakujousou\ ;
+放熱器 < hounetsuki\ ;
+純良品 < junryouhin\ ;
+備後表 < bingoomote\ ;
+暗殺者 < ansatsusha\ ;
+平教員 < hirakyouin\ ;
+不覚者 < fukakumono\ ;
+成長点 < seichouten\ ;
+東横線 < touyokosen\ ;
+救済者 < kyuusaisha\ ;
+知能的 < chinouteki\ ;
+儲口 < moukeguchi\ ;
+全権委員 < zenken''iin\ ;
+幻覚剤 < genkakuzai\ ;
+果物屋 < kudamonoya\ ;
+演算機構 < enzankikou\ ;
+人格者 < jinkakusha\ ;
+無蓋貨車 < mugaikasha\ ;
+金属間 < kinzokukan\ ;
+花柳病 < karyuubyou\ ;
+棟瓦 < munagawara\ ;
+高枕 < takamakura\ ;
+老大国 < routaikoku\ ;
+代言人 < daigen''nin\ ;
+心得顔 < kokoroegao\ ;
+代表者 < daihyousha\ ;
+主知的 < shuchiteki\ ;
+文学界 < bungakukai\ ;
+切断機 < setsudanki\ ;
+一時的 < ichijiteki\ ;
+交通網 < koutsuumou\ ;
+二十世紀 < nijisseiki\ ;
+保護処分 < hogoshobun\ ;
+地球人 < chikyuujin\ ;
+脹脛 < fukurahagi\ ;
+高曇 < takagumori\ ;
+皮膚科学 < hifukagaku\ ;
+地球上 < chikyuujou\ ;
+逆提案 < gyakuteian\ ;
+対数表 < taisuuhyou\ ;
+衆愚政治 < shuguseiji\ ;
+敗戦国 < haisenkoku\ ;
+侍従武官 < jijuubukan\ ;
+新製品 < shinseihin\ ;
+控訴期間 < kousokikan\ ;
+上位構造 < jouikouzou\ ;
+極距離 < kyokukyori\ ;
+常任委員 < jounin''iin\ ;
+芝居小屋 < shibaigoya\ ;
+桜花 < sakurabana\ ;
+公租公課 < kousokouka\ ;
+熟練工 < jukurenkou\ ;
+色素体 < shikisotai\ ;
+丸砥石 < marutoishi\ ;
+同族会 < douzokukai\ ;
+経済的 < keizaiteki\ ;
+易感染性 < ikansensei\ ;
+牛乳屋 < gyuunyuuya\ ;
+練習場 < renshuujou\ ;
+紀伊國屋 < kinokuniya\ ;
+桑苺 < kuwaichigo\ ;
+夜鷹蕎麦 < yotakasoba\ ;
+特製品 < tokuseihin\ ;
+勤務時間 < kinmujikan\ ;
+厭世主義 < enseishugi\ ;
+単位記号 < tan''ikigou\ ;
+脚色 < kyakushoku\ ;
+不誠実 < fuseijitsu\ ;
+従来型 < juuraigata\ ;
+対象体 < taishoutai\ ;
+粉石鹸 < konasekken\ ;
+夜尿症 < yanyoushou\ ;
+超文面 < choubunmen\ ;
+排他主義 < haitashugi\ ;
+動物園 < doubutsuen\ ;
+総監督 < soukantoku\ ;
+実際的 < jissaiteki\ ;
+頼信紙 < raishinshi\ ;
+宇宙飛行 < uchuuhikou\ ;
+宣教師 < senkyoushi\ ;
+桜肉 < sakuraniku\ ;
+責任者 < sekininsha\ ;
+関節炎 < kansetsuen\ ;
+肩車 < kataguruma\ ;
+共鳴板 < kyoumeiban\ ;
+宗主国 < soushukoku\ ;
+仮名草紙 < kanazoushi\ ;
+旧軍人 < kyuugunjin\ ;
+半濁点 < handakuten\ ;
+坑内事故 < kounaijiko\ ;
+半長形 < hanchoukei\ ;
+中水道 < chuusuidou\ ;
+選手村 < senshumura\ ;
+論理演算 < ronrienzan\ ;
+質量 < shitsuryou\ ;
+印刷用 < insatsuyou\ ;
+霊柩車 < reikyuusha\ ;
+海岸端 < kaiganbata\ ;
+外用薬 < gaiyouyaku\ ;
+紫斑病 < shihanbyou\ ;
+蛸配当 < takohaitou\ ;
+高所病 < koushobyou\ ;
+畜殺 < chikusatsu\ ;
+大小便 < daishouben\ ;
+電気毛布 < denkimoufu\ ;
+米国民 < beikokumin\ ;
+吸水性 < kyuusuisei\ ;
+雲鬢花顔 < unbinkagan\ ;
+念五日 < nengonichi\ ;
+出来心 < dekigokoro\ ;
+中心部 < chuushinbu\ ;
+御前会議 < gozenkaigi\ ;
+脈脈 < myakumyaku\ ;
+生体学 < seitaigaku\ ;
+楔形 < kusabigata\ ;
+予備調査 < yobichousa\ ;
+平和主義 < heiwashugi\ ;
+肯定的 < kouteiteki\ ;
+桜紙 < sakuragami\ ;
+注意事項 < chuuijikou\ ;
+動物化 < doubutsuka\ ;
+水平翼 < suiheiyoku\ ;
+貿易業 < bouekigyou\ ;
+腰布団 < koshibuton\ ;
+爆撃機 < bakugekiki\ ;
+言行録 < genkouroku\ ;
+団地族 < danchizoku\ ;
+乱調子 < ranchoushi\ ;
+備蓄米 < bichikumai\ ;
+大乗的 < daijouteki\ ;
+無能力 < munouryoku\ ;
+酪農場 < rakunoujou\ ;
+胸部外科 < kyoubugeka\ ;
+貨客船 < kakyakusen\ ;
+感染症 < kansenshou\ ;
+真理教 < shinrikyou\ ;
+慈善鍋 < jizen''nabe\ ;
+病室 < byoushitsu\ ;
+技術士 < gijutsushi\ ;
+芋侍 < imozamurai\ ;
+哨戒艇 < shoukaitei\ ;
+酒石酸 < shusekisan\ ;
+敷布団 < shikibuton\ ;
+非可換群 < hikakangun\ ;
+反則金 < hansokukin\ ;
+遺伝情報 < idenjouhou\ ;
+有機物 < yuukibutsu\ ;
+肉質 < nikushitsu\ ;
+寄生火山 < kiseikazan\ ;
+抽象画 < chuushouga\ ;
+租借権 < soshakuken\ ;
+内申書 < naishinsho\ ;
+同級生 < doukyuusei\ ;
+向米的 < koubeiteki\ ;
+親衛兵 < shin''eihei\ ;
+仏文科 < futsubunka\ ;
+二部授業 < nibujugyou\ ;
+取引所 < torihikijo\ ;
+電車賃 < denshachin\ ;
+集散地 < shuusanchi\ ;
+綺想曲 < kisoukyoku\ ;
+上調子 < uwachoushi\ ;
+内臓弓 < naizoukyuu\ ;
+半開国 < hankaikoku\ ;
+製造業 < seizougyou\ ;
+追撃機 < tsuigekiki\ ;
+三角筋 < sankakukin\ ;
+非営利的 < hieiriteki\ ;
+等深線 < toushinsen\ ;
+駆動力 < kudouryoku\ ;
+河川工事 < kasenkouji\ ;
+重工業 < juukougyou\ ;
+麻織物 < asaorimono\ ;
+日射病 < nisshabyou\ ;
+熱血児 < nekketsuji\ ;
+金属製 < kinzokusei\ ;
+本契約 < honkeiyaku\ ;
+相手次第 < aiteshidai\ ;
+黄褐色 < oukasshoku\ ;
+購入者 < kounyuusha\ ;
+不精者 < bushoumono\ ;
+主応力 < shuouryoku\ ;
+便宜主義 < bengishugi\ ;
+埼玉勢 < saitamazei\ ;
+宝船 < takarabune\ ;
+重傷者 < juushousha\ ;
+皮膚呼吸 < hifukokyuu\ ;
+山桜 < yamazakura\ ;
+亜成層圏 < aseisouken\ ;
+傷害罪 < shougaizai\ ;
+作戦上 < sakusenjou\ ;
+側室 < sokushitsu\ ;
+膝枕 < hizamakura\ ;
+潜水病 < sensuibyou\ ;
+中性紙 < chuuseishi\ ;
+乳首 < chichikubi\ ;
+診療所 < shinryoujo\ ;
+空軍大尉 < kuuguntaii\ ;
+日本食 < nihonshoku\ ;
+稼働率 < kadouritsu\ ;
+連合国 < rengoukoku\ ;
+公民学 < koumingaku\ ;
+研究者 < kenkyuusha\ ;
+静水圧 < seisuiatsu\ ;
+登録者 < tourokusha\ ;
+準決勝 < junkesshou\ ;
+極力 < kyokuryoku\ ;
+梯子車 < hashigosha\ ;
+三親等 < sanshintou\ ;
+不純物 < fujunbutsu\ ;
+上女中 < kamijochuu\ ;
+鳥取県 < tottoriken\ ;
+桑畑 < kuwabatake\ ;
+貧乏鬮 < binboukuji\ ;
+唯一度 < tadaichido\ ;
+梵和辞典 < bonwajiten\ ;
+好色家 < koushokuka\ ;
+毛皮商 < kegawashou\ ;
+比較級 < hikakukyuu\ ;
+現在高 < genzaidaka\ ;
+略式 < ryakushiki\ ;
+陸海空 < rikukaikuu\ ;
+双眼鏡 < sougankyou\ ;
+控訴理由 < kousoriyuu\ ;
+駐輪場 < chuurinjou\ ;
+部隊区分 < butaikubun\ ;
+枕許 < makuramoto\ ;
+白鉄鉱 < hakutekkou\ ;
+大宮人 < oomiyabito\ ;
+悪魔主義 < akumashugi\ ;
+雪合戦 < yukigassen\ ;
+片栗粉 < katakuriko\ ;
+発表会 < happyoukai\ ;
+宝籤 < takarakuji\ ;
+吐瀉物 < toshabutsu\ ;
+護岸工事 < gogankouji\ ;
+裏表紙 < urabyoushi\ ;
+切断図 < setsudanzu\ ;
+思惑買 < omowakugai\ ;
+観念論 < kan''nenron\ ;
+玉音盤 < gyokuonban\ ;
+宝箱 < takarabako\ ;
+反動的 < handouteki\ ;
+質草 < shichigusa\ ;
+救命艇 < kyuumeitei\ ;
+絶対的 < zettaiteki\ ;
+骨壷 < kotsutsubo\ ;
+測量図 < sokuryouzu\ ;
+三大国 < sandaikoku\ ;
+地方病 < chihoubyou\ ;
+宿直 < shukuchoku\ ;
+出版者 < shuppansha\ ;
+供給路 < kyoukyuuro\ ;
+竜涎香 < ryuuzenkou\ ;
+射爆場 < shabakujou\ ;
+測量器 < sokuryouki\ ;
+土俗学 < dozokugaku\ ;
+美女桜 < bijozakura\ ;
+南々東 < nan''nantou\ ;
+人格権 < jinkakuken\ ;
+分解的 < bunkaiteki\ ;
+田夫野人 < denpuyajin\ ;
+他覚的 < takakuteki\ ;
+天主教 < tenshukyou\ ;
+雪化粧 < yukigeshou\ ;
+形式美 < keishikibi\ ;
+奇奇怪怪 < kikikaikai\ ;
+電通大 < dentsuudai\ ;
+三角点 < sankakuten\ ;
+伝書鳩 < denshobato\ ;
+他覚症 < takakushou\ ;
+消耗戦 < shoumousen\ ;
+仕訳書 < shiwakesho\ ;
+遊休地 < yuukyuuchi\ ;
+備付 < sonaetsuke\ ;
+反応性 < han''nousei\ ;
+暴走族 < bousouzoku\ ;
+紀元節 < kigensetsu\ ;
+温泉宿 < onsen''yado\ ;
+唐辛子 < tougarashi\ ;
+日中韓 < nitchuukan\ ;
+理解力 < rikairyoku\ ;
+略奪 < ryakudatsu\ ;
+公共財 < koukyouzai\ ;
+検定料 < kenteiryou\ ;
+市長選 < shichousen\ ;
+安普請 < yasubushin\ ;
+神代文字 < jindaimoji\ ;
+古典時代 < kotenjidai\ ;
+市会議員 < shikaigiin\ ;
+水道料 < suidouryou\ ;
+両成敗 < ryouseibai\ ;
+危険負担 < kikenfutan\ ;
+初節句 < hatsuzekku\ ;
+比較的 < hikakuteki\ ;
+国連軍 < kokurengun\ ;
+上級生 < joukyuusei\ ;
+無頓着 < mutonchaku\ ;
+再来月 < saraigetsu\ ;
+後日談 < gojitsudan\ ;
+備荒食 < bikoushoku\ ;
+健康不安 < kenkoufuan\ ;
+松虫 < matsumushi\ ;
+不行跡 < fugyouseki\ ;
+斜陽族 < shayouzoku\ ;
+青化物 < seikabutsu\ ;
+応急渡河 < oukyuutoka\ ;
+天王山 < ten''nouzan\ ;
+二重否定 < nijuuhitei\ ;
+厄介者 < yakkaimono\ ;
+勇猛心 < yuumoushin\ ;
+武力戦 < buryokusen\ ;
+三角法 < sankakuhou\ ;
+意気衝天 < ikishouten\ ;
+宗教画 < shuukyouga\ ;
+研究生 < kenkyuusei\ ;
+出奔者 < shupponsha\ ;
+収益金 < shuuekikin\ ;
+氷菓子 < koorigashi\ ;
+医学用語 < igakuyougo\ ;
+舞台効果 < butaikouka\ ;
+軽工業 < keikougyou\ ;
+記憶力 < kiokuryoku\ ;
+即興詩 < sokkyoushi\ ;
+古生物 < koseibutsu\ ;
+熱愛者 < netsuaisha\ ;
+天頂点 < tenchouten\ ;
+無資力 < mushiryoku\ ;
+興行権 < kougyouken\ ;
+松根油 < shoukon''yu\ ;
+両隣 < ryoudonari\ ;
+百済楽 < kudaragaku\ ;
+在任中 < zaininchuu\ ;
+滞在中 < taizaichuu\ ;
+製茶業 < seichagyou\ ;
+貿易商 < bouekishou\ ;
+国務省 < kokumushou\ ;
+中南米 < chuunanbei\ ;
+群雀 < murasuzume\ ;
+桐一葉 < kirihitoha\ ;
+電位差計 < den''isakei\ ;
+入選者 < nyuusensha\ ;
+縦社会 < tateshakai\ ;
+度数分布 < dosuubunpu\ ;
+操縦席 < soujuuseki\ ;
+周旋屋 < shuusen''ya\ ;
+文学士 < bungakushi\ ;
+運送保険 < unsouhoken\ ;
+工学者 < kougakusha\ ;
+古伝説 < kodensetsu\ ;
+印刷工 < insatsukou\ ;
+潜水服 < sensuifuku\ ;
+木質 < mokushitsu\ ;
+大主教 < daishukyou\ ;
+上場株 < joujoukabu\ ;
+類型的 < ruikeiteki\ ;
+実物 < jitsubutsu\ ;
+下露 < shitatsuyu\ ;
+吹出物 < fukidemono\ ;
+抗真菌 < koushinkin\ ;
+難波潟 < naniwagata\ ;
+租借地 < soshakuchi\ ;
+加農砲 < kan''nonhou\ ;
+造石税 < zoukokuzei\ ;
+駐車場 < chuushajou\ ;
+試算表 < shisanhyou\ ;
+経済学 < keizaigaku\ ;
+急勾配 < kyuukoubai\ ;
+儀式用 < gishikiyou\ ;
+高手小手 < takatekote\ ;
+血栓症 < kessenshou\ ;
+伊達姿 < datesugata\ ;
+病原体 < byougentai\ ;
+無味乾燥 < mumikansou\ ;
+下院議長 < kaingichou\ ;
+八分目 < hachibunme\ ;
+解析性 < kaisekisei\ ;
+軍備管理 < gunbikanri\ ;
+客観性 < kyakkansei\ ;
+畜力 < chikuryoku\ ;
+超媒体 < choubaitai\ ;
+水芭蕉 < mizubashou\ ;
+長期的 < choukiteki\ ;
+眼鏡蛇 < meganehebi\ ;
+樹脂加工 < jushikakou\ ;
+出版界 < shuppankai\ ;
+弁償金 < benshoukin\ ;
+未熟者 < mijukumono\ ;
+分散型 < bunsangata\ ;
+短編集 < tanpenshuu\ ;
+寒椿 < kantsubaki\ ;
+利水工事 < risuikouji\ ;
+淡路島 < awajishima\ ;
+増殖炉 < zoushokuro\ ;
+下見板 < shitamiita\ ;
+分教場 < bunkyoujou\ ;
+非常事態 < hijoujitai\ ;
+武装蜂起 < busouhouki\ ;
+史料館 < shiryoukan\ ;
+有声音化 < yuuseionka\ ;
+血小板 < kesshouban\ ;
+質的 < shitsuteki\ ;
+金色堂 < konjikidou\ ;
+漢方薬 < kanpouyaku\ ;
+価値基準 < kachikijun\ ;
+調理器具 < chourikigu\ ;
+砲煙弾雨 < houendan''u\ ;
+翻訳家 < hon''yakuka\ ;
+平等観 < byoudoukan\ ;
+検査官 < kenshoukan\ ;
+変分学 < henbungaku\ ;
+前栽物 < senzaimono\ ;
+強壮剤 < kyousouzai\ ;
+海産業 < kaisangyou\ ;
+馬耳東風 < bajitoufuu\ ;
+献納者 < ken''nousha\ ;
+六連星 < rokurensei\ ;
+梔子 < kuchinashi\ ;
+勅願寺 < chokuganji\ ;
+伝染病 < densenbyou\ ;
+驀地 < masshigura\ ;
+中華鍋 < chuukanabe\ ;
+天上川 < tenjougawa\ ;
+洋芥子 < yougarashi\ ;
+皆勤賞 < kaikinshou\ ;
+金属片 < kinzokuhen\ ;
+奇術師 < kijutsushi\ ;
+増加率 < zoukaritsu\ ;
+標準型 < hyoujunkei\ ;
+金赤色 < kin''akairo\ ;
+責任感 < sekininkan\ ;
+淋巴節 < rinpasetsu\ ;
+供物台 < kumotsudai\ ;
+米国人 < beikokujin\ ;
+等温式 < touonshiki\ ;
+前任者 < zen''ninsha\ ;
+製造元 < seizoumoto\ ;
+情報量 < jouhouryou\ ;
+平行移動 < heikouidou\ ;
+消耗品 < shoumouhin\ ;
+両手利 < ryoutekiki\ ;
+蓄電器 < chikudenki\ ;
+対角線 < taikakusen\ ;
+山刀 < yamagatana\ ;
+一晩中 < hitobanjuu\ ;
+下道 < shitamichi\ ;
+暗剣殺 < ankensatsu\ ;
+頭足類 < tousokurui\ ;
+在東京 < zaitoukyou\ ;
+棄言葉 < sutekotoba\ ;
+免税表 < menzeihyou\ ;
+国民性 < kokuminsei\ ;
+補助動詞 < hojodoushi\ ;
+彫刻家 < choukokuka\ ;
+不躾 < bushitsuke\ ;
+生卵 < namatamago\ ;
+読書界 < dokushokai\ ;
+風薬 < kazegusuri\ ;
+曲説 < kyokusetsu\ ;
+居留民 < kyoryuumin\ ;
+丸裸 < maruhadaka\ ;
+旋光角 < senkoukaku\ ;
+飯粒 < meshitsubu\ ;
+小間使 < komadzukai\ ;
+角膜炎 < kakumakuen\ ;
+猫車 < nekoguruma\ ;
+鰭脚類 < kikyakurui\ ;
+鑑識家 < kanshikika\ ;
+興行師 < kougyoushi\ ;
+三越 < mitsukoshi\ ;
+嬶天下 < kakaadenka\ ;
+固形物 < kokeibutsu\ ;
+紡績糸 < bousekiito\ ;
+否定応答 < hiteioutou\ ;
+吝嗇家 < rinshokuka\ ;
+為替尻 < kawasejiri\ ;
+読者欄 < dokusharan\ ;
+出世作 < shussesaku\ ;
+動摩擦 < doumasatsu\ ;
+部分食 < bubunshoku\ ;
+出版法 < shuppanhou\ ;
+課題曲 < kadaikyoku\ ;
+客月 < kyakugetsu\ ;
+殺虫剤 < satchuuzai\ ;
+薄雪草 < usuyukisou\ ;
+人体学 < jintaigaku\ ;
+平城京 < heijoukyou\ ;
+三角帽 < sankakubou\ ;
+衝撃波 < shougekiha\ ;
+自己資本 < jikoshihon\ ;
+郵送料 < yuusouryou\ ;
+石炭酸 < sekitansan\ ;
+征服者 < seifukusha\ ;
+顔貌 < kaokatachi\ ;
+黄金時代 < ougonjidai\ ;
+命令一下 < meireiikka\ ;
+強行軍 < kyoukougun\ ;
+納付期限 < noufukigen\ ;
+代表団 < daihyoudan\ ;
+小児麻痺 < shounimahi\ ;
+脚本家 < kyakuhonka\ ;
+菓子鉢 < kashibachi\ ;
+直円錐 < chokuensui\ ;
+宣伝記事 < sendenkiji\ ;
+出版権 < shuppanken\ ;
+再服役 < saifukueki\ ;
+生放送 < namahousou\ ;
+計算尺 < keisanjaku\ ;
+夏季休暇 < kakikyuuka\ ;
+通勤者 < tsuukinsha\ ;
+一塁線 < ichiruisen\ ;
+臨時政府 < rinjiseifu\ ;
+尺八 < shakuhachi\ ;
+液量計 < ekiryoukei\ ;
+三日三晩 < mikkamiban\ ;
+切支丹 < kirishitan\ ;
+闇市場 < yamishijou\ ;
+東男 < azumaotoko\ ;
+障害者 < shougaisha\ ;
+貴族的 < kizokuteki\ ;
+印刷人 < insatsunin\ ;
+海賊船 < kaizokusen\ ;
+抽象化 < chuushouka\ ;
+講習会 < koushuukai\ ;
+愛玩物 < aiganbutsu\ ;
+麻雀屋 < mazejan''ya\ ;
+伝染毒 < densendoku\ ;
+無理難題 < murinandai\ ;
+他国者 < takokumono\ ;
+予備装置 < yobisouchi\ ;
+果樹栽培 < kajusaibai\ ;
+重層的 < juusouteki\ ;
+質樸 < shitsuboku\ ;
+五重塔 < gojuunotou\ ;
+下級審 < kakyuushin\ ;
+肘枕 < hijimakura\ ;
+粗衣粗食 < soisoshoku\ ;
+低所得 < teishotoku\ ;
+仏滅 < butsumetsu\ ;
+専門章 < senmonshou\ ;
+鋳造所 < chuuzousho\ ;
+短時日 < tanjijitsu\ ;
+休業日 < kyuugyoubi\ ;
+先端的 < sentanteki\ ;
+人民委員 < jinmin''iin\ ;
+喧嘩腰 < kenkagoshi\ ;
+草双紙 < kusazoushi\ ;
+空想的 < kuusouteki\ ;
+飽和蒸気 < houwajouki\ ;
+雪達磨 < yukidaruma\ ;
+匹夫匹婦 < hippuhippu\ ;
+内交渉 < naikoushou\ ;
+広告社 < koukokusha\ ;
+小包 < kodzutsumi\ ;
+密密 < mitsumitsu\ ;
+二分音符 < nibun''onpu\ ;
+貨物駅 < kamotsueki\ ;
+千波万波 < senpabanpa\ ;
+貧乏籤 < binbouguji\ ;
+対話式 < taiwashiki\ ;
+就中 < nakandzuku\ ;
+共産軍 < kyousangun\ ;
+上蓆 < uwamushiro\ ;
+不承諾 < fushoudaku\ ;
+求人誌 < kyuujinshi\ ;
+鞭毛虫 < benmouchuu\ ;
+簡単服 < kantanfuku\ ;
+黒穂病 < kurohobyou\ ;
+脱力 < datsuryoku\ ;
+質札 < shichifuda\ ;
+分担額 < buntangaku\ ;
+異常発生 < ijouhassei\ ;
+治安部隊 < chianbutai\ ;
+太陽虫 < taiyouchuu\ ;
+暫定的 < zanteiteki\ ;
+代表例 < daihyourei\ ;
+三菱 < mitsubishi\ ;
+刃傷沙汰 < ninjouzata\ ;
+同国民 < doukokumin\ ;
+記念物 < kinenbutsu\ ;
+旧体制 < kyuutaisei\ ;
+仮枕 < karimakura\ ;
+南洋材 < nan''youzai\ ;
+非常口 < hijouguchi\ ;
+上表紙 < uwabyoushi\ ;
+面白味 < omoshiromi\ ;
+保存食 < hozonshoku\ ;
+不活性化 < fukasseika\ ;
+半意識 < han''ishiki\ ;
+供出 < kyoushutsu\ ;
+宮室 < kyuushitsu\ ;
+本調子 < honchoushi\ ;
+織女星 < shokujosei\ ;
+春霞 < harugasumi\ ;
+専門的 < senmonteki\ ;
+食物 < shokumotsu\ ;
+報償金 < houshoukin\ ;
+擲弾筒 < tekidantou\ ;
+貧乏神 < binbougami\ ;
+昔風 < mukashifuu\ ;
+大統領 < daitouryou\ ;
+量子論 < ryoushiron\ ;
+中力粉 < chuurikiko\ ;
+宝島 < takarajima\ ;
+工事現場 < koujigenba\ ;
+眼鏡猿 < meganezaru\ ;
+仏様 < hotokesama\ ;
+脚力 < kyakuryoku\ ;
+業界紙 < gyoukaishi\ ;
+非公式 < hikoushiki\ ;
+水兵服 < suiheifuku\ ;
+貯木場 < chobokujou\ ;
+梯子段 < hashigodan\ ;
+当歳駒 < tousaigoma\ ;
+宗教家 < shuukyouka\ ;
+研究官 < kenkyuukan\ ;
+殉教者 < junkyousha\ ;
+殉難者 < jun''nansha\ ;
+壁訴訟 < kabezoshou\ ;
+下職 < shitashoku\ ;
+自己宣伝 < jikosenden\ ;
+玉整理 < gyokuseiri\ ;
+茨城県 < ibarakiken\ ;
+屈曲部 < kukkyokubu\ ;
+消防隊 < shouboutai\ ;
+朧昆布 < oborokonbu\ ;
+気管支炎 < kikanshien\ ;
+看病人 < kanbyounin\ ;
+花電車 < hanadensha\ ;
+地文学 < chimongaku\ ;
+口供書 < koukyousho\ ;
+曲筆 < kyokuhitsu\ ;
+手前勝手 < temaegatte\ ;
+保守主義 < hoshushugi\ ;
+草野球 < kusayakyuu\ ;
+検事局 < kenjikyoku\ ;
+木端微塵 < koppamijin\ ;
+六辺形 < rokuhenkei\ ;
+死亡記事 < shiboukiji\ ;
+読者層 < dokushasou\ ;
+催促状 < saisokujou\ ;
+傾斜角 < keishakaku\ ;
+過剰利益 < kajourieki\ ;
+収監状 < shuukanjou\ ;
+地震学 < jishingaku\ ;
+在世中 < zaiseichuu\ ;
+奥座敷 < okuzashiki\ ;
+一纏 < hitomatome\ ;
+美術館 < bijutsukan\ ;
+許容量 < kyoyouryou\ ;
+女尊男卑 < josondanpi\ ;
+射撃場 < shagekijou\ ;
+後天的 < koutenteki\ ;
+駐屯地 < chuutonchi\ ;
+飯櫃 < meshibitsu\ ;
+脳溢血 < nouikketsu\ ;
+存命中 < zonmeichuu\ ;
+系列化 < keiretsuka\ ;
+出版屋 < shuppan''ya\ ;
+審美的 < shinbiteki\ ;
+恒久性 < koukyuusei\ ;
+貝柱 < kaibashira\ ;
+片貿易 < kataboueki\ ;
+文献学 < bunkengaku\ ;
+十二単衣 < juunihitoe\ ;
+時代色 < jidaishoku\ ;
+分離課税 < bunrikazei\ ;
+大大的 < daidaiteki\ ;
+二重橋 < nijuubashi\ ;
+地誌学 < chishigaku\ ;
+化学的 < kagakuteki\ ;
+曲直 < kyokuchoku\ ;
+肉弾戦 < nikudansen\ ;
+一絃琴 < ichigenkin\ ;
+遊牧民 < yuubokumin\ ;
+丸瓦 < marugawara\ ;
+核実験 < kakujikken\ ;
+貨物車 < kamotsusha\ ;
+任意捜査 < nin''isousa\ ;
+求人者 < kyuujinsha\ ;
+七竈 < nanakamado\ ;
+地震国 < jishinkoku\ ;
+居留地 < kyoryuuchi\ ;
+上位概念 < jouigainen\ ;
+障子紙 < shoujigami\ ;
+舞台道具 < butaidougu\ ;
+潜函病 < senkanbyou\ ;
+一穴 < hitotsuana\ ;
+引率者 < insotsusha\ ;
+上映時間 < joueijikan\ ;
+孫娘 < magomusume\ ;
+海賊版 < kaizokuban\ ;
+信仰者 < shinkousha\ ;
+消防車 < shoubousha\ ;
+三等賞 < santoushou\ ;
+無警察 < mukeisatsu\ ;
+仏性 < hotokeshou\ ;
+静静 < shizushizu\ ;
+彩色画 < saishokuga\ ;
+勧告者 < kankokusha\ ;
+計器飛行 < keikihikou\ ;
+実力 < jitsuryoku\ ;
+曲率 < kyokuritsu\ ;
+大鼓 < ootsudzumi\ ;
+広告欄 < koukokuran\ ;
+賞金王 < shoukin''ou\ ;
+戦災孤児 < sensaikoji\ ;
+通知状 < tsuuchijou\ ;
+工作品 < kousakuhin\ ;
+地政学 < chiseigaku\ ;
+太陽神 < taiyoushin\ ;
+継承者 < keishousha\ ;
+基本原理 < kihongenri\ ;
+乳製品 < nyuuseihin\ ;
+狐色 < kitsuneiro\ ;
+遊撃隊 < yuugekitai\ ;
+卑怯者 < hikyoumono\ ;
+再教育 < saikyouiku\ ;
+国内線 < kokunaisen\ ;
+噛煙草 < kamitabako\ ;
+一睡 < hitonemuri\ ;
+慈善市 < jizen''ichi\ ;
+回想録 < kaisouroku\ ;
+外交的 < gaikouteki\ ;
+情意投合 < jouitougou\ ;
+下町 < shitamachi\ ;
+管理機能 < kanrikinou\ ;
+人心 < hitogokoro\ ;
+修理中 < shuurichuu\ ;
+臨時記号 < rinjikigou\ ;
+三等親 < santoushin\ ;
+地表面 < chihyoumen\ ;
+干渉計 < kanshoukei\ ;
+研究会 < kenkyuukai\ ;
+肖像権 < shouzouken\ ;
+七生 < shichishou\ ;
+兵役忌避 < heiekikihi\ ;
+燕麦 < karasumugi\ ;
+役不足 < yakubusoku\ ;
+一番 < hitotsugai\ ;
+注意力 < chuuiryoku\ ;
+腹上死 < fukujoushi\ ;
+編集者 < henshuusha\ ;
+広告板 < koukokuban\ ;
+渉禽類 < shoukinrui\ ;
+倒錯者 < tousakusha\ ;
+水疱瘡 < mizubousou\ ;
+平等権 < byoudouken\ ;
+大震災 < daishinsai\ ;
+重症例 < juushourei\ ;
+地域的 < chiikiteki\ ;
+共産系 < kyousankei\ ;
+開閉橋 < kaiheikyou\ ;
+戦争映画 < sensoueiga\ ;
+陳情書 < chinjousho\ ;
+財政危機 < zaiseikiki\ ;
+投機熱 < toukinetsu\ ;
+有限花序 < yuugenkajo\ ;
+物語 < monogatari\ ;
+冗談事 < joudankoto\ ;
+最高級 < saikoukyuu\ ;
+思惑師 < omowakushi\ ;
+女達 < on''natachi\ ;
+西日本 < nishinihon\ ;
+近代的 < kindaiteki\ ;
+超大型 < chouoogata\ ;
+砕氷船 < saihyousen\ ;
+漁業法 < gyogyouhou\ ;
+朧月 < oborodzuki\ ;
+未解決 < mikaiketsu\ ;
+片跛 < katachinba\ ;
+軍事基地 < gunjikichi\ ;
+巨人国 < kyojinkoku\ ;
+最小限 < saishougen\ ;
+末日 < matsujitsu\ ;
+公共性 < koukyousei\ ;
+不正事件 < fuseijiken\ ;
+出来次第 < dekishidai\ ;
+工学士 < kougakushi\ ;
+酒造業 < shuzougyou\ ;
+変体仮名 < hentaigana\ ;
+色鉛筆 < iroenpitsu\ ;
+望月 < mochidzuki\ ;
+英雄主義 < eiyuushugi\ ;
+火打石 < hiuchiishi\ ;
+醸造業 < jouzougyou\ ;
+大隼 < oohayabusa\ ;
+単眼鏡 < tangankyou\ ;
+痴話喧嘩 < chiwagenka\ ;
+漁業権 < gyogyouken\ ;
+石灯籠 < ishidourou\ ;
+南氷洋 < nanpyouyou\ ;
+鱈場蟹 < tarabagani\ ;
+岡山県 < okayamaken\ ;
+烏有先生 < uyuusensei\ ;
+紡績工 < bousekikou\ ;
+起爆薬 < kibakuyaku\ ;
+確認書 < kakuninsho\ ;
+憲法違反 < kenpouihan\ ;
+回転椅子 < kaiten''isu\ ;
+誕生石 < tanjouseki\ ;
+防臭剤 < boushuuzai\ ;
+錫製品 < suzuseihin\ ;
+月月 < tsukidzuki\ ;
+貨物船 < kamotsusen\ ;
+一塁手 < ichiruishu\ ;
+脚線美 < kyakusenbi\ ;
+能登半島 < notohantou\ ;
+劣性遺伝 < resseiiden\ ;
+有価物 < yuukabutsu\ ;
+請負制度 < ukeoiseido\ ;
+植生図 < shokuseizu\ ;
+一渡 < hitowatari\ ;
+発情期 < hatsujouki\ ;
+白水社 < hakusuisha\ ;
+水車小屋 < suishagoya\ ;
+採算株 < saisankabu\ ;
+褐毛和種 < akagewashu\ ;
+長丁場 < nagachouba\ ;
+妾腹 < mekakebara\ ;
+有孔虫 < yuukouchuu\ ;
+固定負債 < koteifusai\ ;
+天然痘 < ten''nentou\ ;
+依願免官 < iganmenkan\ ;
+四拍子 < yonbyoushi\ ;
+冗長系 < jouchoukei\ ;
+日本式 < nihonshiki\ ;
+満年齢 < man''nenrei\ ;
+消防艇 < shouboutei\ ;
+小液胞 < shouekihou\ ;
+首唱者 < shushousha\ ;
+雲霞 < kumokasumi\ ;
+日本平 < nihondaira\ ;
+革袋 < kawabukuro\ ;
+鉄面皮 < tetsumenpi\ ;
+主権国 < shukenkoku\ ;
+買掛金 < kaikakekin\ ;
+石灰石 < sekkaiseki\ ;
+米問屋 < komedon''ya\ ;
+思想劇 < shisougeki\ ;
+万国民 < bankokumin\ ;
+勧告状 < kankokujou\ ;
+敗北感 < haibokukan\ ;
+密輸船 < mitsuyusen\ ;
+出来不出来 < dekifudeki\ ;
+可変翼 < kahen''yoku\ ;
+政府機関 < seifukikan\ ;
+偏頭痛 < hentoutsuu\ ;
+年齢給 < nenreikyuu\ ;
+透磁率 < toujiritsu\ ;
+事件記者 < jikenkisha\ ;
+平安後期 < heiankouki\ ;
+厄介事 < yakkaigoto\ ;
+伏射濠 < fukushagou\ ;
+析出 < sekishutsu\ ;
+懸壅垂 < ken''yousui\ ;
+界磁極 < kaijikyoku\ ;
+応用力 < ouyouryoku\ ;
+日曜日 < nichiyoubi\ ;
+消防署 < shoubousho\ ;
+雇用保険 < koyouhoken\ ;
+貧乏性 < binboushou\ ;
+核崩壊 < kakuhoukai\ ;
+不潔感 < fuketsukan\ ;
+数学者 < suugakusha\ ;
+聴取者 < choushusha\ ;
+読書人 < dokushojin\ ;
+保護貿易 < hogoboueki\ ;
+前任地 < zen''ninchi\ ;
+漁色家 < gyoshokuka\ ;
+世界制覇 < sekaiseiha\ ;
+製作者 < seisakusha\ ;
+不束 < futsutsuka\ ;
+没個性 < botsukosei\ ;
+無機肥料 < mukihiryou\ ;
+全店中 < zentenchuu\ ;
+高野豆腐 < kouyadoufu\ ;
+官給品 < kankyuuhin\ ;
+白金族 < hakkinzoku\ ;
+天文学 < tenmongaku\ ;
+兵学者 < heigakusha\ ;
+合唱隊 < gasshoutai\ ;
+代議政治 < daigiseiji\ ;
+不成立 < fuseiritsu\ ;
+猫柳 < nekoyanagi\ ;
+献納品 < ken''nouhin\ ;
+細粒分 < sairyuubun\ ;
+意馬心猿 < ibashin''en\ ;
+猛練習 < mourenshuu\ ;
+交通遺児 < koutsuuiji\ ;
+例外的 < reigaiteki\ ;
+効率化 < kouritsuka\ ;
+除虫菊 < jochuugiku\ ;
+紅生姜 < benishouga\ ;
+干拓地 < kantakuchi\ ;
+凍傷者 < toushousha\ ;
+同国人 < doukokujin\ ;
+目的語 < mokutekigo\ ;
+貸付 < kashitsuke\ ;
+三国志 < sangokushi\ ;
+人物画 < jinbutsuga\ ;
+吸入器 < kyuunyuuki\ ;
+防寒服 < boukanfuku\ ;
+修院長 < shuuinchou\ ;
+国内法 < kokunaihou\ ;
+探究者 < tankyuusha\ ;
+初心者 < shoshinsha\ ;
+狸汁 < tanukijiru\ ;
+未開発 < mikaihatsu\ ;
+広告塔 < koukokutou\ ;
+開拓者 < kaitakusha\ ;
+人類学 < jinruigaku\ ;
+知日派 < chinichiha\ ;
+最高潮 < saikouchou\ ;
+天然港 < ten''nenkou\ ;
+反逆児 < hangyakuji\ ;
+一国者 < ikkokumono\ ;
+好材料 < kouzairyou\ ;
+太陽暦 < taiyoureki\ ;
+常用癖 < jouyouheki\ ;
+早教育 < soukyouiku\ ;
+格子縞 < koushijima\ ;
+反軍的 < hangunteki\ ;
+薬包紙 < yakuhoushi\ ;
+兵曹長 < heisouchou\ ;
+漢文学 < kanbungaku\ ;
+急先鋒 < kyuusenpou\ ;
+不抱 < kakawarazu\ ;
+口奇麗 < kuchigirei\ ;
+行政法 < gyouseihou\ ;
+送金額 < soukingaku\ ;
+求婚者 < kyuukonsha\ ;
+再調整 < saichousei\ ;
+風見鶏 < kazamidori\ ;
+執政官 < shisseikan\ ;
+能楽堂 < nougakudou\ ;
+好下物 < koukabutsu\ ;
+双発機 < souhatsuki\ ;
+遺棄貨物 < ikikamotsu\ ;
+公共債 < koukyousai\ ;
+昨年来 < sakunenrai\ ;
+提供者 < teikyousha\ ;
+醸造学 < jouzougaku\ ;
+一所 < hitotokoro\ ;
+得点圏 < tokutenken\ ;
+炭化水素 < tankasuiso\ ;
+審美学 < shinbigaku\ ;
+女便所 < on''nabenjo\ ;
+呉服物 < gofukumono\ ;
+症候群 < shoukougun\ ;
+囲碁三級 < igosankyuu\ ;
+産婦人科 < sanfujinka\ ;
+曲尺 < kyokushaku\ ;
+格子窓 < koushimado\ ;
+文明国 < bunmeikoku\ ;
+行政権 < gyouseiken\ ;
+金木犀 < kinmokusei\ ;
+理想主義 < risoushugi\ ;
+十字砲火 < juujihouka\ ;
+雪質 < yukishitsu\ ;
+都道府県 < todoufuken\ ;
+麝香豌豆 < jakouendou\ ;
+手札型 < tefudagata\ ;
+全般的 < zenpanteki\ ;
+特殊鋼 < tokushukou\ ;
+圧縮性 < asshukusei\ ;
+盲唖学校 < mouagakkou\ ;
+保安条例 < hoanjourei\ ;
+石器時代 < sekkijidai\ ;
+似非理屈 < eserikutsu\ ;
+官房長 < kanbouchou\ ;
+記念切手 < kinenkitte\ ;
+白砂糖 < shirozatou\ ;
+個人個人 < kojinkojin\ ;
+春分点 < shunbunten\ ;
+旧主人 < kyuushujin\ ;
+犇犇 < hishihishi\ ;
+雛豆 < hiyokomame\ ;
+延滞利子 < entairishi\ ;
+葉緑素 < youryokuso\ ;
+網頭 < amigashira\ ;
+分派主義 < bunpashugi\ ;
+内面的 < naimenteki\ ;
+毀誉褒貶 < kiyohouhen\ ;
+肺結核 < haikekkaku\ ;
+唯美主義 < yuibishugi\ ;
+塩魚 < shiozakana\ ;
+回収金 < kaishuukin\ ;
+綿帽子 < wataboushi\ ;
+中執 < chuushitsu\ ;
+夏虫 < natsumushi\ ;
+急進派 < kyuushinha\ ;
+軍事衛星 < gunjieisei\ ;
+芸術院 < geijutsuin\ ;
+榴弾砲 < ryuudanpou\ ;
+冒険心 < boukenshin\ ;
+可燃物 < kanenbutsu\ ;
+日本一 < nihon''ichi\ ;
+修練者 < shuurensha\ ;
+反射鏡 < hanshakyou\ ;
+二直角 < nichokkaku\ ;
+無我夢中 < mugamuchuu\ ;
+型変換 < katahenkan\ ;
+去勢牛 < kyoseiushi\ ;
+予定期限 < yoteikigen\ ;
+犯罪学 < hanzaigaku\ ;
+原籍地 < gensekichi\ ;
+綾錦 < ayanishiki\ ;
+性道徳 < seidoutoku\ ;
+平滑化 < heikatsuka\ ;
+立体映画 < rittaieiga\ ;
+郵便箱 < yuubinbako\ ;
+受信料 < jushinryou\ ;
+再組織 < saisoshiki\ ;
+美術界 < bijutsukai\ ;
+天気模様 < tenkimoyou\ ;
+不等式 < fudoushiki\ ;
+火口原湖 < kakougenko\ ;
+月別 < tsukibetsu\ ;
+表音字母 < hyouonjibo\ ;
+約定書 < yakujousho\ ;
+三箇日 < sanganichi\ ;
+音声言語 < onseigengo\ ;
+発祥地 < hasshouchi\ ;
+一昨昨日 < sakiototoi\ ;
+勝手口 < katteguchi\ ;
+夕食後 < yuushokugo\ ;
+搬入日 < han''nyuubi\ ;
+豪商層 < goushousou\ ;
+奴豆腐 < yakkodoufu\ ;
+脱法行為 < dappoukoui\ ;
+感覚論 < kankakuron\ ;
+国産車 < kokusansha\ ;
+不流通 < furyuutsuu\ ;
+橋頭堡 < kyoutouhou\ ;
+個人主義 < kojinshugi\ ;
+夏時間 < natsujikan\ ;
+石炭層 < sekitansou\ ;
+絹一匹 < kinuippiki\ ;
+建白書 < kenpakusho\ ;
+消防法 < shoubouhou\ ;
+中近東 < chuukintou\ ;
+不正規軍 < fuseikigun\ ;
+奪略 < datsuryaku\ ;
+証人台 < shounindai\ ;
+水産業 < suisangyou\ ;
+比例式 < hireishiki\ ;
+男所帯 < otokojotai\ ;
+修整版 < shuuseihan\ ;
+准看護婦 < junkangofu\ ;
+冷水浴 < reisuiyoku\ ;
+夏羽織 < natsubaori\ ;
+褒言葉 < homekotoba\ ;
+繁繁 < shigeshige\ ;
+事務机 < jimudzukue\ ;
+主催国 < shusaikoku\ ;
+大外刈 < oosotogari\ ;
+清算人 < seisan''nin\ ;
+住民票 < juuminhyou\ ;
+母子家庭 < boshikatei\ ;
+無線局 < musenkyoku\ ;
+悪材料 < akuzairyou\ ;
+日照計 < nisshoukei\ ;
+支持率 < shijiritsu\ ;
+二連発 < nirenpatsu\ ;
+同名異人 < doumeiijin\ ;
+具象的 < gushouteki\ ;
+副抵当 < fukuteitou\ ;
+育児時間 < ikujijikan\ ;
+時価発行 < jikahakkou\ ;
+胸膜炎 < kyoumakuen\ ;
+除湿器 < joshitsuki\ ;
+乗換駅 < norikaeeki\ ;
+一周 < hitomeguri\ ;
+古本屋 < furuhon''ya\ ;
+巨大症 < kyodaishou\ ;
+会議事項 < kaigijikou\ ;
+知日家 < chinichika\ ;
+白眼視 < hakuganshi\ ;
+照射法 < shoushahou\ ;
+仮想記憶 < kasoukioku\ ;
+烏鳩 < karasubato\ ;
+赤信号 < akashingou\ ;
+長方形 < chouhoukei\ ;
+万国史 < bankokushi\ ;
+造兵廠 < zouheishou\ ;
+東京湾 < toukyouwan\ ;
+独創性 < dokusousei\ ;
+部分麻酔 < bubunmasui\ ;
+検事控訴 < kenjikouso\ ;
+放浪癖 < hourouheki\ ;
+行政官 < gyouseikan\ ;
+没趣味 < botsushumi\ ;
+陶酔境 < tousuikyou\ ;
+反射角 < hanshakaku\ ;
+旅烏 < tabigarasu\ ;
+七光 < nanahikari\ ;
+特効薬 < tokkouyaku\ ;
+娘婿 < musumemuko\ ;
+日没 < nichibotsu\ ;
+多項式 < takoushiki\ ;
+表情筋 < hyoujoukin\ ;
+経営管理 < keieikanri\ ;
+利益率 < riekiritsu\ ;
+三拍子 < sanbyoushi\ ;
+量販店 < ryouhanten\ ;
+編集子 < henshuushi\ ;
+冗長性 < jouchousei\ ;
+鼻眼鏡 < hanamegane\ ;
+内視鏡 < naishikyou\ ;
+赤翡翠 < akashoubin\ ;
+飛行時間 < hikoujikan\ ;
+熱機関 < netsukikan\ ;
+摂護腺 < setsugosen\ ;
+対抗策 < taikousaku\ ;
+近代劇 < kindaigeki\ ;
+徹底的 < tetteiteki\ ;
+四字熟語 < yojijukugo\ ;
+歴代史 < rekidaishi\ ;
+早見表 < hayamihyou\ ;
+臨機応変 < rinkiouhen\ ;
+投射角 < toushakaku\ ;
+定期保険 < teikihoken\ ;
+監督者 < kantokusha\ ;
+共産圏 < kyousanken\ ;
+実行中 < jikkouchuu\ ;
+猛攻撃 < moukougeki\ ;
+電子殻 < denshikaku\ ;
+造言飛語 < zougenhigo\ ;
+村役場 < murayakuba\ ;
+細雪 < sasameyuki\ ;
+陸軟風 < rikunanpuu\ ;
+政治色 < seijishoku\ ;
+母子草 < hahakogusa\ ;
+特待生 < tokutaisei\ ;
+頭分 < kashirabun\ ;
+中盤戦 < chuubansen\ ;
+事務用品 < jimuyouhin\ ;
+舞踏靴 < butougutsu\ ;
+言語地理 < gengochiri\ ;
+大陪審 < daibaishin\ ;
+無縁仏 < muenbotoke\ ;
+斑牛 < madaraushi\ ;
+緑色 < ryokushoku\ ;
+認定証 < ninteishou\ ;
+美術書 < bijutsusho\ ;
+計量法 < keiryouhou\ ;
+原振動 < genshindou\ ;
+学芸会 < gakugeikai\ ;
+脂肪心 < shiboushin\ ;
+狸饂飩 < tanukiudon\ ;
+水産庁 < suisanchou\ ;
+合憲的 < goukenteki\ ;
+主体的 < shutaiteki\ ;
+犯罪行為 < hanzaikoui\ ;
+日月 < nichigetsu\ ;
+窃盗狂 < settoukyou\ ;
+女一般 < on''naippan\ ;
+決勝線 < kesshousen\ ;
+旭日 < kyokujitsu\ ;
+輸送機関 < yusoukikan\ ;
+口上手 < kuchijouzu\ ;
+工場長 < koujouchou\ ;
+旗二流 < hataniryuu\ ;
+補助艦艇 < hojokantei\ ;
+即位式 < sokuishiki\ ;
+五里霧中 < gorimuchuu\ ;
+懐柔策 < kaijuusaku\ ;
+三日天下 < mikkatenka\ ;
+幻想劇 < gensougeki\ ;
+基本単位 < kihontan''i\ ;
+事務室 < jimushitsu\ ;
+超規則 < choukisoku\ ;
+核家族 < kakukazoku\ ;
+夕月夜 < yuudzukeyo\ ;
+猶予期間 < yuuyokikan\ ;
+大衆車 < daishuusha\ ;
+無籍者 < musekimono\ ;
+日独伊 < nichidokui\ ;
+隣組 < tonarigumi\ ;
+悪習慣 < akushuukan\ ;
+硫酸銅 < ryuusandou\ ;
+水産学 < suisangaku\ ;
+烏金 < karasugane\ ;
+幸福感 < koufukukan\ ;
+賠償金 < baishoukin\ ;
+請負工事 < ukeoikouji\ ;
+隼科 < hayabusaka\ ;
+共産党 < kyousantou\ ;
+物心 < monogokoro\ ;
+旅枕 < tabimakura\ ;
+紅雀 < benisuzume\ ;
+父方 < chichikata\ ;
+後退文字 < koutaimoji\ ;
+船板塀 < funaitabei\ ;
+全学連 < zengakuren\ ;
+直走路 < chokusouro\ ;
+男尊女卑 < dansonjohi\ ;
+氷豆腐 < kooridoufu\ ;
+入居者 < nyuukyosha\ ;
+日陰者 < hikagemono\ ;
+絶縁線 < zetsuensen\ ;
+大慈大悲 < daijidaihi\ ;
+塵芥 < chiriakuta\ ;
+品評会 < hinpyoukai\ ;
+水瓶座 < mizugameza\ ;
+各団体 < kakudantai\ ;
+来来週 < rairaishuu\ ;
+四十雀 < shijuukara\ ;
+如何様師 < ikasamashi\ ;
+通用門 < tsuuyoumon\ ;
+爪楊枝 < tsumayouji\ ;
+散髪屋 < sanpatsuya\ ;
+校正刷 < kouseizuri\ ;
+黒眼鏡 < kuromegane\ ;
+臨界事故 < rinkaijiko\ ;
+雨燕 < amatsubame\ ;
+妹婿 < imoutomuko\ ;
+造船業 < zousengyou\ ;
+観劇会 < kangekikai\ ;
+雪煙 < yukikemuri\ ;
+公害病 < kougaibyou\ ;
+受信側 < jushingawa\ ;
+企業心 < kigyoushin\ ;
+因果関係 < ingakankei\ ;
+修繕工 < shuuzenkou\ ;
+単身銃 < tanshinjuu\ ;
+角蛙 < tsunogaeru\ ;
+異種交配 < ishukouhai\ ;
+夜間勤務 < yakankinmu\ ;
+百年目 < hyakunenme\ ;
+没理想 < botsurisou\ ;
+静脈炎 < joumyakuen\ ;
+御国自慢 < okunijiman\ ;
+全能者 < zen''nousha\ ;
+呉服商 < gofukushou\ ;
+省資源 < shoushigen\ ;
+集合論 < shuugouron\ ;
+禁煙席 < kin''enseki\ ;
+失業 < shitsugyou\ ;
+設立 < setsuritsu\ ;
+長方体 < chouhoutai\ ;
+受信人 < jushin''nin\ ;
+急停車 < kyuuteisha\ ;
+雑物 < zatsubutsu\ ;
+神経科医 < shinkeikai\ ;
+糞度胸 < kusodokyou\ ;
+消防士 < shouboushi\ ;
+有理式 < yuurishiki\ ;
+終列車 < shuuressha\ ;
+所有格 < shoyuukaku\ ;
+知覚知 < chikakuchi\ ;
+遊撃手 < yuugekishu\ ;
+解熱剤 < genetsuzai\ ;
+店屋物 < ten''yamono\ ;
+熱烈 < netsuretsu\ ;
+遊撃戦 < yuugekisen\ ;
+山水閣 < sansuikaku\ ;
+説教師 < sekkyoushi\ ;
+島帝国 < touteikoku\ ;
+卑劣漢 < hiretsukan\ ;
+随神 < kan''nagara\ ;
+裸麦 < hadakamugi\ ;
+全生涯 < zenshougai\ ;
+全会衆 < zenkaishuu\ ;
+収容者 < shuuyousha\ ;
+解集合 < kaishuugou\ ;
+相対的 < soutaiteki\ ;
+石灰乳 < sekkainyuu\ ;
+共有者 < kyouyuusha\ ;
+指定席 < shiteiseki\ ;
+商品名 < shouhinmei\ ;
+根本的 < konponteki\ ;
+美術展 < bijutsuten\ ;
+縞模様 < shimamoyou\ ;
+消防団 < shouboudan\ ;
+乾葡萄 < hoshibudou\ ;
+霜月 < shimotsuki\ ;
+羽根車 < haneguruma\ ;
+完全試合 < kanzenjiai\ ;
+発動機 < hatsudouki\ ;
+闘牛士 < tougyuushi\ ;
+同情票 < doujouhyou\ ;
+入会金 < nyuukaikin\ ;
+熱硬化 < netsukouka\ ;
+夢枕 < yumemakura\ ;
+旅心 < tabigokoro\ ;
+闘牛場 < tougyuujou\ ;
+反対票 < hantaihyou\ ;
+犬侍 < inuzamurai\ ;
+冷却器 < reikyakuki\ ;
+借入金 < kariirekin\ ;
+商品券 < shouhinken\ ;
+公示地価 < koujichika\ ;
+歓楽街 < kanrakugai\ ;
+研削盤 < kensakuban\ ;
+一字一句 < ichijiikku\ ;
+識別 < shikibetsu\ ;
+原理主義 < genrishugi\ ;
+本籍地 < honsekichi\ ;
+気欝症 < kiutsushou\ ;
+恋女房 < koinyoubou\ ;
+脳神経 < noushinkei\ ;
+膠原病 < kougenbyou\ ;
+牽制球 < kenseikyuu\ ;
+新造船 < shinzousen\ ;
+感覚点 < kankakuten\ ;
+偽君子 < nisekunshi\ ;
+決勝点 < kesshouten\ ;
+多数決 < tasuuketsu\ ;
+意識的 < ishikiteki\ ;
+反射的 < hanshateki\ ;
+不活発 < fukappatsu\ ;
+受領証 < juryoushou\ ;
+純文学 < junbungaku\ ;
+特急券 < tokkyuuken\ ;
+妾出 < shoushutsu\ ;
+黄金術 < ougonjutsu\ ;
+仮勘定 < karikanjou\ ;
+緑玉 < ryokugyoku\ ;
+烏蛇 < karasuhebi\ ;
+霊長類 < reichourui\ ;
+全身像 < zenshinzou\ ;
+密輸品 < mitsuyuhin\ ;
+既設線 < kisetsusen\ ;
+二連式 < nirenshiki\ ;
+童話作家 < douwasakka\ ;
+減速材 < gensokuzai\ ;
+光磁気 < hikarijiki\ ;
+証明書 < shoumeisho\ ;
+開拓地 < kaitakuchi\ ;
+仮免許 < karimenkyo\ ;
+特出 < tokushutsu\ ;
+紙袋 < kamibukuro\ ;
+印象的 < inshouteki\ ;
+旧教徒 < kyuukyouto\ ;
+貨物便 < kamotsubin\ ;
+妨害行為 < bougaikoui\ ;
+雪柳 < yukiyanagi\ ;
+有望株 < yuuboukabu\ ;
+慣例的 < kanreiteki\ ;
+観相学 < kansougaku\ ;
+肉用種 < nikuyoushu\ ;
+運営経費 < un''eikeihi\ ;
+春休 < haruyasumi\ ;
+基地局 < kichikyoku\ ;
+適応症 < tekioushou\ ;
+中高生 < chuukousei\ ;
+下準備 < shitajunbi\ ;
+信頼感 < shinraikan\ ;
+発酵乳 < hakkounyuu\ ;
+旅芸人 < tabigeinin\ ;
+人雪崩 < hitonadare\ ;
+主信号 < shushingou\ ;
+二部合奏 < nibugassou\ ;
+信奉者 < shinpousha\ ;
+名誉毀損 < meiyokison\ ;
+尺貫法 < shakkanhou\ ;
+美術品 < bijutsuhin\ ;
+記録映画 < kirokueiga\ ;
+通信費 < tsuushinhi\ ;
+信頼性 < shinraisei\ ;
+感覚毛 < kankakumou\ ;
+順応性 < jun''nousei\ ;
+常習者 < joushuusha\ ;
+美術史 < bijutsushi\ ;
+檀那寺 < dan''nadera\ ;
+千歳飴 < chitoseame\ ;
+製材業 < seizaigyou\ ;
+新機軸 < shinkijiku\ ;
+肉饅頭 < nikumanjuu\ ;
+水資源 < mizushigen\ ;
+白鳥座 < hakuchouza\ ;
+百分比 < hyakubunhi\ ;
+試金石 < shikinseki\ ;
+運搬管理 < unpankanri\ ;
+優等賞 < yuutoushou\ ;
+医科大学 < ikadaigaku\ ;
+大衆紙 < taishuushi\ ;
+花見時 < hanamidoki\ ;
+加減乗除 < kagenjoujo\ ;
+塗擦剤 < tosatsuzai\ ;
+阿片戦争 < ahensensou\ ;
+木製品 < mokuseihin\ ;
+内角球 < naikakkyuu\ ;
+饒舌家 < jouzetsuka\ ;
+熱処理 < netsushori\ ;
+触発 < shokuhatsu\ ;
+新幹線 < shinkansen\ ;
+動向表 < doukouhyou\ ;
+交響詩 < koukyoushi\ ;
+挨拶状 < aisatsujou\ ;
+陥没湖 < kanbotsuko\ ;
+唯唯諾諾 < iidakudaku\ ;
+信天翁 < shinten''ou\ ;
+起電力 < kidenryoku\ ;
+鎮魂祭 < chinkonsai\ ;
+舶来品 < hakuraihin\ ;
+手塩皿 < teshiozara\ ;
+黒底翳 < kurosokohi\ ;
+学生帽 < gakuseibou\ ;
+継父 < mamachichi\ ;
+水栽培 < mizusaibai\ ;
+営造物 < eizoubutsu\ ;
+日照権 < nisshouken\ ;
+相対誤差 < soutaigosa\ ;
+光量子 < kouryoushi\ ;
+万愚節 < bangusetsu\ ;
+能狂言 < noukyougen\ ;
+飲酒運転 < inshuunten\ ;
+烏紙 < karasugami\ ;
+支持力 < shijiryoku\ ;
+統計表 < toukeihyou\ ;
+先史学 < senshigaku\ ;
+指名試合 < shimeijiai\ ;
+日仏 < nichifutsu\ ;
+硫酸紙 < ryuusanshi\ ;
+性差別 < seisabetsu\ ;
+靴下 < kutsushita\ ;
+本国人 < hongokujin\ ;
+巨視的 < kyoshiteki\ ;
+転轍機 < tentetsuki\ ;
+表忠碑 < hyouchuuhi\ ;
+収賄罪 < shuuwaizai\ ;
+薬剤師 < yakuzaishi\ ;
+後見人 < kouken''nin\ ;
+連用形 < ren''youkei\ ;
+余白注 < yohakuchuu\ ;
+伝統的 < dentouteki\ ;
+縮尺 < shukushaku\ ;
+徒弟制度 < toteiseido\ ;
+親権者 < shinkensha\ ;
+紋羽二重 < monhabutae\ ;
+円天井 < marutenjou\ ;
+女主 < on''naaruji\ ;
+少年院 < shounen''in\ ;
+歴青炭 < rekiseitan\ ;
+貨幣制度 < kaheiseido\ ;
+蠏工船 < kanikousen\ ;
+目八分 < mehachibun\ ;
+四十肩 < shijuukata\ ;
+楽観的 < rakkanteki\ ;
+心停止 < shinteishi\ ;
+速射砲 < sokushahou\ ;
+敵失 < tekishitsu\ ;
+日和下駄 < hiyorigeta\ ;
+新建材 < shinkenzai\ ;
+不必要 < fuhitsuyou\ ;
+扁青石 < henseiseki\ ;
+双球菌 < soukyuukin\ ;
+世界平和 < sekaiheiwa\ ;
+水羊羮 < mizuyoukan\ ;
+抜本的 < bapponteki\ ;
+教室 < kyoushitsu\ ;
+単発機 < tanpatsuki\ ;
+無理関数 < murikansuu\ ;
+転送先 < tensousaki\ ;
+入会者 < nyuukaisha\ ;
+丸木船 < marukibune\ ;
+音吐朗朗 < ontorourou\ ;
+希釈液 < kishakueki\ ;
+梅雨前線 < baiuzensen\ ;
+月曜日 < getsuyoubi\ ;
+最賃法 < saichinhou\ ;
+電気時計 < denkidokei\ ;
+革新派 < kakushinha\ ;
+絶滅 < zetsumetsu\ ;
+二十四日 < nijuuyokka\ ;
+戦病死 < senbyoushi\ ;
+男性的 < danseiteki\ ;
+乳酸菌 < nyuusankin\ ;
+前照灯 < zenshoutou\ ;
+悲歌慷慨 < hikakougai\ ;
+腸捻転 < chounenten\ ;
+親分株 < oyabunkabu\ ;
+学用品 < gakuyouhin\ ;
+特殊性 < tokushusei\ ;
+単色画 < tanshokuga\ ;
+仕立券 < shitateken\ ;
+予防医学 < yobouigaku\ ;
+当期利益 < toukirieki\ ;
+要石 < kanameishi\ ;
+皮下脂肪 < hikashibou\ ;
+陰弁慶 < kagebenkei\ ;
+混血児 < konketsuji\ ;
+販売元 < hanbaimoto\ ;
+常習犯 < joushuuhan\ ;
+陶磁器店 < toujikiten\ ;
+清涼剤 < seiryouzai\ ;
+最小値 < saishouchi\ ;
+切符売場 < kippuuriba\ ;
+裸体主義 < rataishugi\ ;
+水族館 < suizokukan\ ;
+共犯者 < kyouhansha\ ;
+寿司飯 < sushimeshi\ ;
+急転換 < kyuutenkan\ ;
+招待状 < shoutaijou\ ;
+打撲傷 < dabokushou\ ;
+音標文字 < onpyoumoji\ ;
+特待券 < tokutaiken\ ;
+毒人参 < dokuninjin\ ;
+不正規戦 < fuseikisen\ ;
+天竺葵 < tenjikuaoi\ ;
+女世帯 < on''najotai\ ;
+人間的 < ningenteki\ ;
+診断書 < shindansho\ ;
+蘚苔学 < sentaigaku\ ;
+絶対位置 < zettaiichi\ ;
+原稿料 < genkouryou\ ;
+監督官 < kantokukan\ ;
+商務省 < shoumushou\ ;
+宣告書 < senkokusho\ ;
+夜夜中 < yoruyonaka\ ;
+裏話 < urabanashi\ ;
+通信簿 < tsuushinbo\ ;
+堆積岩 < taisekigan\ ;
+抑留所 < yokuryuujo\ ;
+撞木杖 < shumokuzue\ ;
+黄金率 < ougonritsu\ ;
+堆積層 < taisekisou\ ;
+合唱団 < gasshoudan\ ;
+好敵手 < koutekishu\ ;
+簡易保険 < kan''ihoken\ ;
+粉薬 < konagusuri\ ;
+文章題 < bunshoudai\ ;
+寡頭政治 < katouseiji\ ;
+金物屋 < kanamonoya\ ;
+団菊祭 < dangikusai\ ;
+緩衝液 < kanshoueki\ ;
+寄宿舎 < kishukusha\ ;
+縮刷 < shukusatsu\ ;
+潜望鏡 < senboukyou\ ;
+新左翼 < shinsayoku\ ;
+遡及的 < sokyuuteki\ ;
+同情心 < doujoushin\ ;
+下稽古 < shitageiko\ ;
+競争者 < kyousousha\ ;
+商店街 < shoutengai\ ;
+玉手箱 < tamatebako\ ;
+土豚 < tsuchibuta\ ;
+上半身 < jouhanshin\ ;
+下水処理 < gesuishori\ ;
+測定法 < sokuteihou\ ;
+降圧剤 < kouatsuzai\ ;
+急傾斜 < kyuukeisha\ ;
+両棲類 < ryouseirui\ ;
+最上級 < saijoukyuu\ ;
+偃月刀 < engetsutou\ ;
+看護卒 < kangosotsu\ ;
+記憶素子 < kiokusoshi\ ;
+音声記号 < onseikigou\ ;
+和平会議 < waheikaigi\ ;
+罫線表 < keisenhyou\ ;
+破壊主義 < hakaishugi\ ;
+針土竜 < harimogura\ ;
+宇宙基地 < uchuukichi\ ;
+灯台守 < toudaimori\ ;
+仮免状 < karimenjou\ ;
+弾薬庫 < dan''yakuko\ ;
+合法的 < gouhouteki\ ;
+不可知論 < fukachiron\ ;
+自衛手段 < jieishudan\ ;
+挫折感 < zasetsukan\ ;
+小売値段 < kourinedan\ ;
+救出 < kyuushutsu\ ;
+壁土 < kabetsuchi\ ;
+赤新聞 < akashinbun\ ;
+膠着語 < kouchakugo\ ;
+終止形 < shuushikei\ ;
+出港船 < shukkousen\ ;
+輸入額 < yunyuugaku\ ;
+甲殻類 < koukakurui\ ;
+市場規模 < shijoukibo\ ;
+議員立法 < giinrippou\ ;
+障壁画 < shouhekiga\ ;
+溶接機 < yousetsuki\ ;
+乗組員 < norikumiin\ ;
+腎臓病 < jinzoubyou\ ;
+可搬式 < kahanshiki\ ;
+健筆家 < kenpitsuka\ ;
+正中線 < seichuusen\ ;
+千年間 < sen''nenkan\ ;
+棒磁石 < boujishaku\ ;
+観賞魚 < kanshougyo\ ;
+神学校 < shingakkou\ ;
+作業服 < sagyoufuku\ ;
+発着所 < hatchakujo\ ;
+親近感 < shinkinkan\ ;
+乱泥流 < randeiryuu\ ;
+当直員 < touchokuin\ ;
+学級委員 < gakkyuuiin\ ;
+統計的 < toukeiteki\ ;
+結末 < ketsumatsu\ ;
+芸術家 < geijutsuka\ ;
+玄関先 < genkansaki\ ;
+親柱 < oyabashira\ ;
+深海魚 < shinkaigyo\ ;
+同志的 < doushiteki\ ;
+粛粛 < shukushuku\ ;
+価千金 < ataisenkin\ ;
+議会主義 < gikaishugi\ ;
+九回戦 < kyuukaisen\ ;
+基礎科学 < kisokagaku\ ;
+国訛 < kuninamari\ ;
+捜査本部 < sousahonbu\ ;
+半永久 < han''eikyuu\ ;
+雑役婦 < zatsuekifu\ ;
+冷凍業 < reitougyou\ ;
+綿埃 < watabokori\ ;
+宇宙探査 < uchuutansa\ ;
+儒教的 < jukyouteki\ ;
+親日 < shin''nichi\ ;
+酛 < sakenomoto\ ;
+揚陸艦 < yourikukan\ ;
+重謹慎 < juukinshin\ ;
+凍豆腐 < shimidoufu\ ;
+永谷園 < nagatanien\ ;
+二槽式 < nisoushiki\ ;
+相乗積 < soujouseki\ ;
+菌類学 < kinruigaku\ ;
+新刊書 < shinkansho\ ;
+青少年 < seishounen\ ;
+推進者 < suishinsha\ ;
+灼熱 < shakunetsu\ ;
+列席者 < ressekisha\ ;
+国産品 < kokusanhin\ ;
+懐旧談 < kaikyuudan\ ;
+枯草熱 < kosounetsu\ ;
+雇主 < yatoinushi\ ;
+中甲板 < chuukanpan\ ;
+埋伏歯 < maifukushi\ ;
+内緒事 < naishogoto\ ;
+一等卒 < ittousotsu\ ;
+亜麻織物 < amaorimono\ ;
+神代杉 < jindaisugi\ ;
+値嵩株 < negasakabu\ ;
+政治力 < seijiryoku\ ;
+答申書 < toushinsho\ ;
+順序不同 < junjofudou\ ;
+継娘 < mamamusume\ ;
+乱心者 < ranshinsha\ ;
+経済援助 < keizaienjo\ ;
+焼失 < shoushitsu\ ;
+人間業 < ningenwaza\ ;
+累算温度 < ruisanondo\ ;
+共謀者 < kyoubousha\ ;
+来賓席 < raihinseki\ ;
+舞踏曲 < butoukyoku\ ;
+修行者 < shugyousha\ ;
+島根県 < shimaneken\ ;
+強硬論 < kyoukouron\ ;
+法治国 < houchikoku\ ;
+不得策 < futokusaku\ ;
+訳出 < yakushutsu\ ;
+烈日 < retsujitsu\ ;
+在米中 < zaibeichuu\ ;
+匿名性 < tokumeisei\ ;
+登山靴 < tozangutsu\ ;
+浪漫主義 < romanshugi\ ;
+座敷牢 < zashikirou\ ;
+神格化 < shinkakuka\ ;
+赤外線 < sekigaisen\ ;
+薬用酒 < yakuyoushu\ ;
+結核菌 < kekkakukin\ ;
+締付 < shimetsuke\ ;
+草履虫 < zourimushi\ ;
+武装都市 < busoutoshi\ ;
+大衆性 < taishuusei\ ;
+寄宿生 < kishukusei\ ;
+昇汞水 < shoukousui\ ;
+武者慄 < mushaburui\ ;
+文章論 < bunshouron\ ;
+特選品 < tokusenhin\ ;
+近親者 < kinshinsha\ ;
+複数形 < fukusuukei\ ;
+幽邃境 < yuusuikyou\ ;
+再投票 < saitouhyou\ ;
+不活動 < fukatsudou\ ;
+全寮制 < zenryousei\ ;
+平和国家 < heiwakokka\ ;
+追悼会 < tsuitoukai\ ;
+道路地図 < dourochizu\ ;
+筒鳥 < tsutsudori\ ;
+白兵戦 < hakuheisen\ ;
+請求権 < seikyuuken\ ;
+忠霊塔 < chuureitou\ ;
+隙間風 < sukimakaze\ ;
+共有地 < kyouyuuchi\ ;
+片為替 < katagawase\ ;
+緩衝弁 < kanshouben\ ;
+宿根草 < shukkonsou\ ;
+大立者 < oodatemono\ ;
+泰山木 < taisanboku\ ;
+糸状虫 < shijouchuu\ ;
+絶縁体 < zetsuentai\ ;
+里言葉 < satokotoba\ ;
+御朱印船 < goshuinsen\ ;
+購読者 < koudokusha\ ;
+売買高 < baibaidaka\ ;
+挺進隊 < teishintai\ ;
+詔 < mikotonori\ ;
+脱水症 < dassuishou\ ;
+勧進帳 < kanjinchou\ ;
+拡張化 < kakuchouka\ ;
+殺人鬼 < satsujinki\ ;
+流動性 < ryuudousei\ ;
+四重唱 < shijuushou\ ;
+教育者 < kyouikusha\ ;
+反対側 < hantaigawa\ ;
+琴一張 < kotoitchou\ ;
+内在的 < naizaiteki\ ;
+三段跳 < sandantobi\ ;
+飛躍的 < hiyakuteki\ ;
+手長猿 < tenagazaru\ ;
+老眼鏡 < rougankyou\ ;
+仮処分 < karishobun\ ;
+袋耳 < fukuromimi\ ;
+全人格 < zenjinkaku\ ;
+分泌物 < bunpibutsu\ ;
+請求書 < seikyuusho\ ;
+結実 < ketsujitsu\ ;
+不決断 < fuketsudan\ ;
+先先週 < sensenshuu\ ;
+致命的 < chimeiteki\ ;
+乳石英 < nyuusekiei\ ;
+財政学 < zaiseigaku\ ;
+続出 < zokushutsu\ ;
+夜郎自大 < yaroujidai\ ;
+飲食店 < inshokuten\ ;
+部分否定 < bubunhitei\ ;
+紙製品 < kamiseihin\ ;
+蝟 < harinezumi\ ;
+講和会議 < kouwakaigi\ ;
+編組機械 < hensokikai\ ;
+法律案 < houritsuan\ ;
+半盲症 < hanmoushou\ ;
+硝酸銀 < shousangin\ ;
+医療器械 < iryoukikai\ ;
+防総省 < bousoushou\ ;
+正規分布 < seikibunpu\ ;
+逆比例 < gyakuhirei\ ;
+投書箱 < toushobako\ ;
+会員名簿 < kaiinmeibo\ ;
+濃紫 < komurasaki\ ;
+城下町 < joukamachi\ ;
+特別委 < tokubetsui\ ;
+村芝居 < murashibai\ ;
+継息子 < mamamusuko\ ;
+発信音 < hasshin''on\ ;
+天変地異 < tenpenchii\ ;
+有史以来 < yuushiirai\ ;
+四死球 < shishikyuu\ ;
+献金箱 < kenkinbako\ ;
+戦略家 < senryakuka\ ;
+公聴会 < kouchoukai\ ;
+溝鼠 < dobunezumi\ ;
+萙 < kutabireru\ ;
+複数回 < fukusuukai\ ;
+会計学 < kaikeigaku\ ;
+簡略化 < kanryakuka\ ;
+給電線 < kyuudensen\ ;
+吉祥天 < kisshouten\ ;
+保護関税 < hogokanzei\ ;
+未帰還者 < mikikansha\ ;
+御影石 < mikageishi\ ;
+内国産 < naikokusan\ ;
+三日坊主 < mikkabouzu\ ;
+雪月花 < setsugekka\ ;
+私書箱 < shishobako\ ;
+直映館 < chokueikan\ ;
+病理学 < byourigaku\ ;
+復刻版 < fukkokuban\ ;
+退廃的 < taihaiteki\ ;
+確固不動 < kakkofudou\ ;
+人間学 < ningengaku\ ;
+下着類 < shitagirui\ ;
+唐変木 < touhenboku\ ;
+線撮影 < sensatsuei\ ;
+文房具屋 < bunbouguya\ ;
+新生面 < shinseimen\ ;
+康煕字典 < koukijiten\ ;
+血脈 < ketsumyaku\ ;
+数日後 < suujitsugo\ ;
+未来永劫 < miraieigou\ ;
+超合金 < chougoukin\ ;
+多国籍 < takokuseki\ ;
+積算法 < sekisanhou\ ;
+無理算段 < murisandan\ ;
+外為法 < gaitamehou\ ;
+出品者 < shuppinsha\ ;
+覚醒剤 < kakuseizai\ ;
+高山蝶 < kouzanchou\ ;
+近縁属 < kin''enzoku\ ;
+上達部 < kandachime\ ;
+可鍛鉄 < katantetsu\ ;
+心理的 < shinriteki\ ;
+乗換券 < norikaeken\ ;
+教育界 < kyouikukai\ ;
+陰極線 < inkyokusen\ ;
+半艇身 < hanteishin\ ;
+親兄弟 < oyakyoudai\ ;
+旅館業 < ryokangyou\ ;
+学期末 < gakkimatsu\ ;
+虞美人草 < gubijinsou\ ;
+到来物 < touraimono\ ;
+象牙細工 < zougezaiku\ ;
+沖仲仕 < okinakashi\ ;
+外国製 < gaikokusei\ ;
+終盤戦 < shuubansen\ ;
+逆光線 < gyakkousen\ ;
+象徴派 < shouchouha\ ;
+勧進元 < kanjinmoto\ ;
+魚類学 < gyoruigaku\ ;
+鎌鼬 < kamaitachi\ ;
+縞瑪瑙 < shimamenou\ ;
+真空管 < shinkuukan\ ;
+舎利別 < sharibetsu\ ;
+京阪神 < keihanshin\ ;
+慣習法 < kanshuuhou\ ;
+滅茶滅茶 < mechamecha\ ;
+頭陀袋 < zudabukuro\ ;
+陰極管 < inkyokukan\ ;
+混和物 < konwabutsu\ ;
+刀鍛冶 < katanakaji\ ;
+潜伏性 < senpukusei\ ;
+風車小屋 < fuushagoya\ ;
+招待券 < shoutaiken\ ;
+子供部屋 < kodomobeya\ ;
+求愛誇示 < kyuuaikoji\ ;
+受難節 < junansetsu\ ;
+測定値 < sokuteichi\ ;
+化粧紙 < keshougami\ ;
+大憲章 < daikenshou\ ;
+王政復古 < ouseifukko\ ;
+単色光 < tanshokkou\ ;
+袋物 < fukuromono\ ;
+甲殻綱 < koukakukou\ ;
+集合体 < shuugoutai\ ;
+一人部屋 < hitoribeya\ ;
+立往生 < tachioujou\ ;
+竕 < deshiritto\ ;
+不買運動 < fubaiundou\ ;
+子宮頸 < shikyuukei\ ;
+吝嗇吝嗇 < kechikechi\ ;
+経験的 < keikenteki\ ;
+化粧箱 < keshoubako\ ;
+二番星 < nibanboshi\ ;
+西口 < nishiguchi\ ;
+法律家 < houritsuka\ ;
+定期預金 < teikiyokin\ ;
+一定期間 < itteikikan\ ;
+洗濯板 < sentakuita\ ;
+滑沢剤 < kattakuzai\ ;
+対称性 < taishousei\ ;
+少年法 < shounenhou\ ;
+徳川家 < tokugawake\ ;
+地下運動 < chikaundou\ ;
+流動体 < ryuudoutai\ ;
+終刊号 < shuukangou\ ;
+監修者 < kanshuusha\ ;
+共編者 < kyouhensha\ ;
+懐疑主義 < kaigishugi\ ;
+融通無碍 < yuuzuumuge\ ;
+保安要員 < hoan''youin\ ;
+統計学 < toukeigaku\ ;
+輪郭線 < rinkakusen\ ;
+軍艦鳥 < gunkandori\ ;
+商船隊 < shousentai\ ;
+超満員 < chouman''in\ ;
+片手鍋 < katatenabe\ ;
+股関節 < kokansetsu\ ;
+節節 < fushibushi\ ;
+調味料 < choumiryou\ ;
+又小作 < matakosaku\ ;
+筒袖 < tsutsusode\ ;
+不正直 < fushoujiki\ ;
+洪積層 < kousekisou\ ;
+検圧器 < ken''atsuki\ ;
+主我主義 < shugashugi\ ;
+染物屋 < somemonoya\ ;
+配膳人 < haizen''nin\ ;
+境界線 < kyoukaisen\ ;
+静物画 < seibutsuga\ ;
+教育法 < kyouikuhou\ ;
+収集魔 < shuushuuma\ ;
+離職者 < rishokusha\ ;
+牧師館 < bokushikan\ ;
+占領軍 < senryougun\ ;
+糸印 < itojirushi\ ;
+中生代 < chuuseidai\ ;
+為人 < hitotonari\ ;
+下半期 < shimohanki\ ;
+教会法 < kyoukaihou\ ;
+原水爆 < gensuibaku\ ;
+甅 < senchigura\ ;
+瓸 < hekutogura\ ;
+炭俵 < sumidawara\ ;
+瓱 < miriguramu\ ;
+瓩 < kiroguramu\ ;
+瓧 < dekaguramu\ ;
+刺繍糸 < shishuuito\ ;
+不作為犯 < fusakuihan\ ;
+搭乗橋 < toujoukyou\ ;
+石鹸箱 < sekkenbako\ ;
+回転軸 < kaitenjiku\ ;
+刻一刻 < kokuikkoku\ ;
+創造的 < souzouteki\ ;
+痴呆症 < chihoushou\ ;
+米所 < komedokoro\ ;
+排水量 < haisuiryou\ ;
+各情報 < kakujouhou\ ;
+舗装煉瓦 < hosourenga\ ;
+投影図法 < toueizuhou\ ;
+核文法 < kakubunpou\ ;
+売上高 < uriagedaka\ ;
+深成岩 < shinseigan\ ;
+胸三寸 < munesanzun\ ;
+得意客 < tokuikyaku\ ;
+徴兵制 < chouheisei\ ;
+端近 < hashidjika\ ;
+鎖鎌 < kusarigama\ ;
+性本能 < seihon''nou\ ;
+滅裂 < metsuretsu\ ;
+休診日 < kyuushinbi\ ;
+執金鋼 < shikkongou\ ;
+総状花序 < soujoukajo\ ;
+竜皮巻 < ryuuhimaki\ ;
+回帰熱 < kaikinetsu\ ;
+祝賀会 < shukugakai\ ;
+生活費 < seikatsuhi\ ;
+法務局 < houmukyoku\ ;
+中学校 < chuugakkou\ ;
+月見草 < tsukimisou\ ;
+清浄無垢 < seijoumuku\ ;
+通俗化 < tsuuzokuka\ ;
+直交性 < chokkousei\ ;
+稲熱病 < imochibyou\ ;
+三面記事 < sanmenkiji\ ;
+高踏的 < koutouteki\ ;
+給料日 < kyuuryoubi\ ;
+才気縦横 < saikijuuou\ ;
+万年青 < man''nensei\ ;
+小前提 < shouzentei\ ;
+六三制 < rokusansei\ ;
+造林学 < zouringaku\ ;
+本位貨幣 < hon''ikahei\ ;
+全責任 < zensekinin\ ;
+馬鹿丁寧 < bakateinei\ ;
+照明弾 < shoumeidan\ ;
+愛国心 < aikokushin\ ;
+潮煙 < shiokemuri\ ;
+石鹸皿 < sekkenzara\ ;
+予定説 < yoteisetsu\ ;
+筆舌 < hitsuzetsu\ ;
+日葡辞書 < nippojisho\ ;
+脳硬塞 < noukousoku\ ;
+総大将 < soudaishou\ ;
+始末屋 < shimatsuya\ ;
+国有林 < kokuyuurin\ ;
+薬学部 < yakugakubu\ ;
+批判力 < hihanryoku\ ;
+等身大 < toushindai\ ;
+位相空間 < isoukuukan\ ;
+海事衛星 < kaijieisei\ ;
+空気機械 < kuukikikai\ ;
+総攻撃 < soukougeki\ ;
+高山病 < kouzanbyou\ ;
+五月祭 < gogatsusai\ ;
+共同井戸 < kyoudouido\ ;
+軍楽隊 < gungakutai\ ;
+三重唱 < sanjuushou\ ;
+南京豆 < nankinmame\ ;
+曲馬師 < kyokubashi\ ;
+副司令 < fukushirei\ ;
+錦鯉 < nishikigoi\ ;
+昼日中 < hiruhinaka\ ;
+合理主義 < gourishugi\ ;
+常識家 < joushikika\ ;
+滑脱 < katsudatsu\ ;
+天津御姉 < amatsumiko\ ;
+天手古舞 < tentekomai\ ;
+言葉尻 < kotobajiri\ ;
+肺浸潤 < haishinjun\ ;
+夜光時計 < yakoudokei\ ;
+耕作者 < kousakusha\ ;
+同心円 < doushin''en\ ;
+致死量 < chishiryou\ ;
+弁証論 < benshouron\ ;
+新登場 < shintoujou\ ;
+自転車屋 < jitenshaya\ ;
+強力粉 < kyourikiko\ ;
+予備室 < yobishitsu\ ;
+店頭株 < tentoukabu\ ;
+発射薬 < hasshayaku\ ;
+自家用車 < jikayousha\ ;
+単位制度 < tan''iseido\ ;
+化粧水 < keshoumizu\ ;
+十進法 < jisshinhou\ ;
+文字情報 < mojijouhou\ ;
+文筆家 < bunpitsuka\ ;
+従量税 < juuryouzei\ ;
+瓦屋根 < kawarayane\ ;
+関係調 < kankeichou\ ;
+唯心論 < yuishinron\ ;
+励振管 < reishinkan\ ;
+全日空 < zen''nikkuu\ ;
+二枚腰 < nimaigoshi\ ;
+流刑地 < ryuukeichi\ ;
+洪積世 < kousekisei\ ;
+震災地 < shinsaichi\ ;
+筆筒 < fudedzutsu\ ;
+規制解除 < kiseikaijo\ ;
+描出 < byoushutsu\ ;
+眼軟膏 < gan''nankou\ ;
+水晶体 < suishoutai\ ;
+点滅器 < tenmetsuki\ ;
+兄弟分 < kyoudaibun\ ;
+金門橋 < kinmonkyou\ ;
+景勝地 < keishouchi\ ;
+内接円 < naisetsuen\ ;
+生活苦 < seikatsuku\ ;
+東照宮 < toushouguu\ ;
+受難曲 < junankyoku\ ;
+対流圏 < tairyuuken\ ;
+下水工事 < gesuikouji\ ;
+危険物 < kikenbutsu\ ;
+研修生 < kenshuusei\ ;
+近親婚 < kinshinkon\ ;
+交読文 < koudokubun\ ;
+脳卒中 < nousotchuu\ ;
+焼死体 < shoushitai\ ;
+一神教 < isshinkyou\ ;
+派出所 < hashutsujo\ ;
+振動計 < shindoukei\ ;
+屈折語 < kussetsugo\ ;
+曲馬団 < kyokubadan\ ;
+注射液 < chuushaeki\ ;
+合意情死 < gouijoushi\ ;
+福禄寿 < fukurokuju\ ;
+紙吹雪 < kamifubuki\ ;
+仲介者 < chuukaisha\ ;
+集配人 < shuuhainin\ ;
+定礎式 < teisoshiki\ ;
+裁判長 < saibanchou\ ;
+電話局 < denwakyoku\ ;
+俸祿米 < hourokumai\ ;
+花吹雪 < hanafubuki\ ;
+土壁 < tsuchikabe\ ;
+兵糧米 < hyouroumai\ ;
+角細工 < tsunozaiku\ ;
+輸送力 < yusouryoku\ ;
+林野庁 < rin''yachou\ ;
+支配的 < shihaiteki\ ;
+太鼓橋 < taikobashi\ ;
+箔力粉 < hakurikiko\ ;
+獅子鼻 < shishibana\ ;
+連隊長 < rentaichou\ ;
+端末機 < tanmatsuki\ ;
+吹奏楽 < suisougaku\ ;
+熱射病 < nesshabyou\ ;
+擅 < hoshiimama\ ;
+武装平和 < busouheiwa\ ;
+徳用瓶 < tokuyoubin\ ;
+手続 < tetsudzuki\ ;
+天津神 < amatsukami\ ;
+降水量 < kousuiryou\ ;
+出金者 < shukkinsha\ ;
+典型的 < tenkeiteki\ ;
+螢石 < hotaruishi\ ;
+中枢性 < chuusuusei\ ;
+迷彩服 < meisaifuku\ ;
+住宅難 < juutakunan\ ;
+付帯事項 < futaijikou\ ;
+化粧料 < keshouryou\ ;
+心理学 < shinrigaku\ ;
+芳名録 < houmeiroku\ ;
+動力炉 < douryokuro\ ;
+小児病 < shounibyou\ ;
+少年団 < shounendan\ ;
+全面的 < zenmenteki\ ;
+行方不明 < yukuefumei\ ;
+小市民 < shoushimin\ ;
+蜜蜂 < mitsubachi\ ;
+天気予報 < tenkiyohou\ ;
+不平不満 < fuheifuman\ ;
+被保険者 < hihokensha\ ;
+副次的 < fukujiteki\ ;
+椎間板 < tsuikanban\ ;
+親子電話 < oyakodenwa\ ;
+課税率 < kazeiritsu\ ;
+郵政省 < yuuseishou\ ;
+夏場所 < natsubasho\ ;
+多情多恨 < tajoutakon\ ;
+箱柳 < hakoyanagi\ ;
+経営破綻 < keieihatan\ ;
+厚化粧 < atsugeshou\ ;
+賛助会員 < sanjokaiin\ ;
+二人組 < futarigumi\ ;
+致命傷 < chimeishou\ ;
+箱枕 < hakomakura\ ;
+副都心 < fukutoshin\ ;
+米俵 < komedawara\ ;
+発案者 < hatsuansha\ ;
+強力犯 < gourikihan\ ;
+下部構造 < kabukouzou\ ;
+洗濯代 < sentakudai\ ;
+遊泳術 < yuueijutsu\ ;
+毎土曜日 < maidoyoubi\ ;
+製陶業 < seitougyou\ ;
+球座標 < kyuuzahyou\ ;
+沈丁花 < chinchouge\ ;
+蜂蜜 < hachimitsu\ ;
+予算措置 < yosansochi\ ;
+葡萄牙 < porutogaru\ ;
+不穏分子 < fuonbunshi\ ;
+教会堂 < kyoukaidou\ ;
+支店長 < shitenchou\ ;
+喜怒哀楽 < kidoairaku\ ;
+御年玉 < otoshidama\ ;
+西洋葱 < seiyounegi\ ;
+瓜実顔 < urizanegao\ ;
+真空帯 < shinkuutai\ ;
+竹筒 < takedzutsu\ ;
+追送検 < tsuisouken\ ;
+未決監 < miketsukan\ ;
+漢和辞典 < kanwajiten\ ;
+普通株 < futsuukabu\ ;
+友誼国家 < yuugikokka\ ;
+相互保険 < sougohoken\ ;
+商店主 < shoutenshu\ ;
+採石場 < saisekijou\ ;
+牢名主 < rounanushi\ ;
+累進税 < ruishinzei\ ;
+大競争 < daikyousou\ ;
+森林法 < shinrinhou\ ;
+同郷人 < doukyoujin\ ;
+派出婦 < hashutsufu\ ;
+事大主義 < jidaishugi\ ;
+内国債 < naikokusai\ ;
+五輪会議 < gorinkaigi\ ;
+支度金 < shitakukin\ ;
+端端 < hashibashi\ ;
+再浸礼 < saishinrei\ ;
+国有地 < kokuyuuchi\ ;
+親展書 < shintensho\ ;
+語形変化 < gokeihenka\ ;
+廉恥心 < renchishin\ ;
+皆既食 < kaikishoku\ ;
+非戦闘員 < hisentouin\ ;
+転居先 < tenkyosaki\ ;
+連絡駅 < renrakueki\ ;
+電話口 < denwaguchi\ ;
+無念無想 < munenmusou\ ;
+精勤賞 < seikinshou\ ;
+健忘症 < kenboushou\ ;
+蝶番 < choutsugai\ ;
+演算手順 < enzantejun\ ;
+教会史 < kyoukaishi\ ;
+少年会 < shounenkai\ ;
+贋手紙 < nisetegami\ ;
+出征軍 < shusseigun\ ;
+武断主義 < budanshugi\ ;
+計画者 < keikakusha\ ;
+散文的 < sanbunteki\ ;
+世話人間 < sewaningen\ ;
+幾何平均 < kikaheikin\ ;
+拠所 < yoridokoro\ ;
+人工降雨 < jinkoukouu\ ;
+黒鼠 < kuronezumi\ ;
+友好的 < yuukouteki\ ;
+自問自答 < jimonjitou\ ;
+召喚状 < shoukanjou\ ;
+認証者 < ninshousha\ ;
+年産額 < nensangaku\ ;
+換算表 < kanzanhyou\ ;
+沖縄県 < okinawaken\ ;
+救世軍 < kyuuseigun\ ;
+満足感 < manzokukan\ ;
+奉公先 < houkousaki\ ;
+電報料 < denpouryou\ ;
+荒事師 < aragotoshi\ ;
+桃源郷 < tougenkyou\ ;
+蓮月尼 < rengetsuni\ ;
+皇紀年度 < koukinendo\ ;
+羽斑蚊 < hamadaraka\ ;
+朴念仁 < bokunenjin\ ;
+子宮癌 < shikyuugan\ ;
+表口 < omoteguchi\ ;
+磁力計 < jiryokukei\ ;
+根粒菌 < konryuukin\ ;
+縦旋盤 < tatesenban\ ;
+市役所 < shiyakusho\ ;
+検流計 < kenryuukei\ ;
+即売会 < sokubaikai\ ;
+延人員 < nobejin''in\ ;
+口腔外科 < koukougeka\ ;
+調合剤 < chougouzai\ ;
+要確認 < youkakunin\ ;
+常緑樹 < jouryokuju\ ;
+竈神 < kamadogami\ ;
+選球眼 < senkyuugan\ ;
+石合戦 < ishigassen\ ;
+封建的 < houkenteki\ ;
+駐在所 < chuuzaisho\ ;
+世帯主 < setainushi\ ;
+平常心 < heijoushin\ ;
+黒鮪 < kuromaguro\ ;
+脳性麻痺 < nouseimahi\ ;
+五十音順 < gojuuonjun\ ;
+豆台風 < mametaifuu\ ;
+演算精度 < enzanseido\ ;
+鉱山業 < kouzangyou\ ;
+十字架状 < juujikajou\ ;
+表出 < hyoushutsu\ ;
+構文木 < koubunmoku\ ;
+参謀長 < sanbouchou\ ;
+不老不死 < furoufushi\ ;
+世界主義 < sekaishugi\ ;
+写真館 < shashinkan\ ;
+戦時色 < senjishoku\ ;
+螺鈿細工 < radenzaiku\ ;
+記載事項 < kisaijikou\ ;
+住宅街 < juutakugai\ ;
+頓珍漢 < tonchinkan\ ;
+弱酸性 < jakusansei\ ;
+中仕切 < nakajikiri\ ;
+炭素繊維 < tansosen''i\ ;
+唐衣 < karakoromo\ ;
+初舞台 < hatsubutai\ ;
+写真顔 < shashingao\ ;
+無線電話 < musendenwa\ ;
+南京玉 < nankindama\ ;
+船籍港 < sensekikou\ ;
+燐灰石 < rinkaiseki\ ;
+一年間 < ichinenkan\ ;
+非接触 < hisesshoku\ ;
+持続的 < jizokuteki\ ;
+温情主義 < onjoushugi\ ;
+営業中 < eigyouchuu\ ;
+超過額 < choukagaku\ ;
+預貸率 < yotairitsu\ ;
+代用肉 < daiyouniku\ ;
+個人経営 < kojinkeiei\ ;
+時系列 < jikeiretsu\ ;
+筆旁 < fudezukuri\ ;
+奔放不羈 < honpoufuki\ ;
+子供服 < kodomofuku\ ;
+警視庁 < keishichou\ ;
+免疫性 < men''ekisei\ ;
+系統的 < keitouteki\ ;
+軍用金 < gun''youkin\ ;
+荒仕事 < arashigoto\ ;
+登山客 < tozankyaku\ ;
+低賃金 < teichingin\ ;
+侵害者 < shingaisha\ ;
+売上票 < uriagepyou\ ;
+鉄器時代 < tekkijidai\ ;
+放送劇 < housougeki\ ;
+日程表 < nitteihyou\ ;
+副葬品 < fukusouhin\ ;
+齣落 < komaotoshi\ ;
+挿入文 < sounyuubun\ ;
+初学者 < shogakusha\ ;
+教習所 < kyoushuujo\ ;
+入場門 < nyuujoumon\ ;
+官庁街 < kanchougai\ ;
+物価騰貴 < bukkatouki\ ;
+規則的 < kisokuteki\ ;
+小冊子 < shousasshi\ ;
+輻射線 < fukushasen\ ;
+倩 < tsuratsura\ ;
+十進制 < jisshinsei\ ;
+複製品 < fukuseihin\ ;
+森林帯 < shinrintai\ ;
+結晶系 < kesshoukei\ ;
+無秩序 < muchitsujo\ ;
+日本舞踊 < nihonbuyou\ ;
+聾唖学校 < rouagakkou\ ;
+錨綱 < ikaridzuna\ ;
+主観的 < shukanteki\ ;
+破壊力 < hakairyoku\ ;
+三毛作 < sanmousaku\ ;
+桧皮葺 < hiwadabuki\ ;
+力織機 < rikishokki\ ;
+六面体 < rokumentai\ ;
+現代英語 < gendaieigo\ ;
+白人種 < hakujinshu\ ;
+汎神論 < hanshinron\ ;
+仮定款 < kariteikan\ ;
+納税額 < nouzeigaku\ ;
+諸外国 < shogaikoku\ ;
+外接円 < gaisetsuen\ ;
+十二使徒 < juunishito\ ;
+製紙業 < seishigyou\ ;
+鉛直線 < enchokusen\ ;
+心電計 < shindenkei\ ;
+福利表 < fukurihyou\ ;
+筒形 < tsutsugata\ ;
+微生物 < biseibutsu\ ;
+宝石店 < housekiten\ ;
+創業者 < sougyousha\ ;
+日本庭園 < nihonteien\ ;
+革製品 < kawaseihin\ ;
+平年作 < heinensaku\ ;
+深緑 < fukamidori\ ;
+遺伝暗号 < iden''angou\ ;
+猿芝居 < sarushibai\ ;
+場外株 < jougaikabu\ ;
+鼻薬 < hanagusuri\ ;
+弁証法 < benshouhou\ ;
+協定書 < kyouteisho\ ;
+軍事輸送 < gunjiyusou\ ;
+五旬節 < gojunsetsu\ ;
+伴性遺伝 < hanseiiden\ ;
+所柄 < tokorogara\ ;
+初任給 < shoninkyuu\ ;
+陸曹等 < rikusoutou\ ;
+経営参加 < keieisanka\ ;
+好成績 < kouseiseki\ ;
+通有性 < tsuuyuusei\ ;
+聴導犬 < choudouken\ ;
+予備選挙 < yobisenkyo\ ;
+御高祖頭巾 < okosozukin\ ;
+予備艦隊 < yobikantai\ ;
+磁力線 < jiryokusen\ ;
+離婚率 < rikonritsu\ ;
+硝酸塩 < shousan''en\ ;
+予備選手 < yobisenshu\ ;
+再確認 < saikakunin\ ;
+発案権 < hatsuanken\ ;
+酪製品 < rakuseihin\ ;
+土性骨 < doshoubone\ ;
+避妊薬 < hinin''yaku\ ;
+不倶戴天 < fugutaiten\ ;
+持主 < mochinushi\ ;
+発生学 < hasseigaku\ ;
+人種的 < jinshuteki\ ;
+磁石盤 < jishakuban\ ;
+大蔵経 < daizoukyou\ ;
+河原鶸 < kawarahiwa\ ;
+拙劣 < setsuretsu\ ;
+留置場 < ryuuchijou\ ;
+通風孔 < tsuufuukou\ ;
+要求者 < youkyuusha\ ;
+知恵袋 < chiebukuro\ ;
+紙鉄砲 < kamideppou\ ;
+初飛行 < hatsuhikou\ ;
+登山口 < tozanguchi\ ;
+貯水量 < chosuiryou\ ;
+社会鍋 < shakainabe\ ;
+平和部隊 < heiwabutai\ ;
+殊勲賞 < shukunshou\ ;
+運動靴 < undougutsu\ ;
+交際国 < kousaikoku\ ;
+八文字 < hachimonji\ ;
+裁判沙汰 < saibanzata\ ;
+開発部 < kaihatsubu\ ;
+調印国 < chouinkoku\ ;
+相続税 < souzokuzei\ ;
+蝋人形 < rouningyou\ ;
+人名録 < jinmeiroku\ ;
+営利法人 < eirihoujin\ ;
+落第生 < rakudaisei\ ;
+凝灰岩 < gyoukaigan\ ;
+利付債 < ritsukisai\ ;
+議会政治 < gikaiseiji\ ;
+雨天順延 < utenjun''en\ ;
+体腔壁 < taikouheki\ ;
+指掌紋 < shishoumon\ ;
+付帯費用 < futaihiyou\ ;
+奇跡的 < kisekiteki\ ;
+代議員団 < daigiindan\ ;
+蛋白源 < tanpakugen\ ;
+断末魔 < danmatsuma\ ;
+詳伝社 < shoudensha\ ;
+葬儀式 < sougishiki\ ;
+損害額 < songaigaku\ ;
+鉄鋼業 < tekkougyou\ ;
+暗紫色 < anshishoku\ ;
+先任順 < sen''ninjun\ ;
+好戦的 < kousenteki\ ;
+防長官 < bouchoukan\ ;
+水圧計 < suiatsukei\ ;
+外国勢 < gaikokuzei\ ;
+韓国人 < kankokujin\ ;
+敢闘賞 < kantoushou\ ;
+流質 < ryuushichi\ ;
+機内食 < kinaishoku\ ;
+裏番組 < urabangumi\ ;
+国防論 < kokubouron\ ;
+二重課税 < nijuukazei\ ;
+扶養控除 < fuyoukoujo\ ;
+国際線 < kokusaisen\ ;
+衛星都市 < eiseitoshi\ ;
+電気回路 < denkikairo\ ;
+貸金庫 < kashikinko\ ;
+速記術 < sokkijutsu\ ;
+国言葉 < kunikotoba\ ;
+抽出 < chuushutsu\ ;
+匐行疹 < fukkoushin\ ;
+町工場 < machikouba\ ;
+地下二階 < chikanikai\ ;
+至急便 < shikyuubin\ ;
+宝冠章 < houkanshou\ ;
+若旦那 < wakadan''na\ ;
+挑戦者 < chousensha\ ;
+鉄鉱石 < tekkouseki\ ;
+横隔膜 < oukakumaku\ ;
+預金口座 < yokinkouza\ ;
+同業者 < dougyousha\ ;
+活用語 < katsuyougo\ ;
+深呼吸 < shinkokyuu\ ;
+三番鶏 < sanbandori\ ;
+判任官 < han''ninkan\ ;
+外国債 < gaikokusai\ ;
+連絡船 < renrakusen\ ;
+落第点 < rakudaiten\ ;
+進行相 < shinkousou\ ;
+色恋沙汰 < irokoizata\ ;
+決定的 < ketteiteki\ ;
+肉料理 < nikuryouri\ ;
+文法的 < bunpouteki\ ;
+国文法 < kokubunpou\ ;
+超弩級 < choudokyuu\ ;
+大蔵省 < ookurashou\ ;
+感情的 < kanjouteki\ ;
+乗合船 < noriaibune\ ;
+徳用品 < tokuyouhin\ ;
+燃料棒 < nenryoubou\ ;
+二日酔 < futsukayoi\ ;
+神経系 < shinkeikei\ ;
+仮議長 < karigichou\ ;
+貨幣価値 < kaheikachi\ ;
+独断論 < dokudanron\ ;
+外国人 < gaikokujin\ ;
+珍糞漢 < chinpunkan\ ;
+振動板 < shindouban\ ;
+残務整理 < zanmuseiri\ ;
+主教冠 < shukyoukan\ ;
+正教師 < seikyoushi\ ;
+細菌学 < saikingaku\ ;
+蜜月 < mitsugetsu\ ;
+耕作地 < kousakuchi\ ;
+改進党 < kaishintou\ ;
+三分搗 < sanbutsuki\ ;
+休閑地 < kyuukanchi\ ;
+軍用艦 < gun''youkan\ ;
+新聞紙 < shinbunshi\ ;
+輻射点 < fukushaten\ ;
+公営保険 < koueihoken\ ;
+世俗的 < sezokuteki\ ;
+重圧感 < juuatsukan\ ;
+豆鉄砲 < mamedeppou\ ;
+優秀品 < yuushuuhin\ ;
+空涙 < soranamida\ ;
+金融界 < kin''yuukai\ ;
+傍聴券 < bouchouken\ ;
+貯金箱 < chokinbako\ ;
+国境線 < kokkyousen\ ;
+譲渡担保 < joutotanpo\ ;
+蚕糸業 < sanshigyou\ ;
+一年草 < ichinensou\ ;
+高密度 < koumitsudo\ ;
+免疫体 < men''ekitai\ ;
+磁気嵐 < jikiarashi\ ;
+振動数 < shindousuu\ ;
+大礼服 < taireifuku\ ;
+改良種 < kairyoushu\ ;
+北国人 < hokkokujin\ ;
+牢役人 < rouyakunin\ ;
+渋渋 < shibushibu\ ;
+内祝言 < naishuugen\ ;
+一家団欒 < ikkadanran\ ;
+代議員会 < daigiinkai\ ;
+半身像 < hanshinzou\ ;
+大黒天 < daikokuten\ ;
+福袋 < fukubukuro\ ;
+補正予算 < hoseiyosan\ ;
+不分割 < fubunkatsu\ ;
+西北西 < seihokusei\ ;
+過剰防衛 < kajoubouei\ ;
+筒先 < tsutsusaki\ ;
+筆力 < hitsuryoku\ ;
+怒髪天 < dohatsuten\ ;
+我心 < wagakokoro\ ;
+予備座席 < yobizaseki\ ;
+反革命 < hankakumei\ ;
+衛生基準 < eiseikijun\ ;
+新聞社 < shinbunsha\ ;
+一機軸 < ichikijiku\ ;
+保護団体 < hogodantai\ ;
+集魚灯 < shuugyotou\ ;
+雪見酒 < yukimizake\ ;
+儀装馬車 < gisoubasha\ ;
+坊主頭 < bouzuatama\ ;
+先験的 < senkenteki\ ;
+闇給与 < yamikyuuyo\ ;
+時事問題 < jijimondai\ ;
+傍聴人 < bouchounin\ ;
+事実上 < jijitsujou\ ;
+義侠心 < gikyoushin\ ;
+用水堀 < yousuibori\ ;
+黒苺 < kuroichigo\ ;
+仮普請 < karibushin\ ;
+占領地 < senryouchi\ ;
+寝装品 < shinsouhin\ ;
+町内会 < chounaikai\ ;
+同盟国 < doumeikoku\ ;
+発育期 < hatsuikuki\ ;
+誓約書 < seiyakusho\ ;
+発展中 < hattenchuu\ ;
+茶番的 < chabanteki\ ;
+特産品 < tokusanhin\ ;
+夫婦喧嘩 < fuufugenka\ ;
+製粉業 < seifungyou\ ;
+消去法 < shoukyohou\ ;
+肛門学 < koumongaku\ ;
+秩禄 < chitsuroku\ ;
+大司教 < daishikyou\ ;
+妄想症 < mousoushou\ ;
+御用達 < goyoudatsu\ ;
+展示物 < tenjibutsu\ ;
+自殺者 < jisatsusha\ ;
+作曲家 < sakkyokuka\ ;
+公教会 < koukyoukai\ ;
+又隣 < matadonari\ ;
+計画性 < keikakusei\ ;
+切迫感 < seppakukan\ ;
+枢密院 < suumitsuin\ ;
+四六判 < shirokuban\ ;
+追体験 < tsuitaiken\ ;
+入場者 < nyuujousha\ ;
+半病人 < hanbyounin\ ;
+金鋏 < kanabasami\ ;
+断固抗議 < dankokougi\ ;
+捜索隊 < sousakutai\ ;
+友好国 < yuukoukoku\ ;
+殿上人 < tenjoubito\ ;
+無水物 < musuibutsu\ ;
+健康的 < kenkouteki\ ;
+新体操 < shintaisou\ ;
+懐手 < futokorode\ ;
+空中線 < kuuchuusen\ ;
+田舎道 < inakamichi\ ;
+波乃花 < naminohana\ ;
+偶像教 < guuzoukyou\ ;
+神話学 < shinwagaku\ ;
+相続権 < souzokuken\ ;
+性教育 < seikyouiku\ ;
+前哨線 < zenshousen\ ;
+五輪聖火 < gorinseika\ ;
+独奏者 < dokusousha\ ;
+自分勝手 < jibunkatte\ ;
+赤血球 < sekkekkyuu\ ;
+天台宗 < tendaishuu\ ;
+軍楽手 < gungakushu\ ;
+軍需景気 < gunjukeiki\ ;
+軍艦巻 < gunkanmaki\ ;
+黒緑 < kuromidori\ ;
+暗褐色 < ankasshoku\ ;
+逆作用 < gyakusayou\ ;
+挑戦状 < chousenjou\ ;
+検量線 < kenryousen\ ;
+網杓子 < amijakushi\ ;
+再注文 < saichuumon\ ;
+内反足 < naihansoku\ ;
+年少者 < nenshousha\ ;
+新生代 < shinseidai\ ;
+保管物 < hokanbutsu\ ;
+基底部門 < kiteibumon\ ;
+優勝者 < yuushousha\ ;
+改良点 < kairyouten\ ;
+丸太小屋 < marutagoya\ ;
+慄烈 < ritsuretsu\ ;
+給排水 < kyuuhaisui\ ;
+天眼鏡 < tengankyou\ ;
+三連勝 < sanrenshou\ ;
+不発弾 < fuhatsudan\ ;
+半官的 < hankanteki\ ;
+振動子 < shindoushi\ ;
+鋸歯 < nokogiriba\ ;
+活発化 < kappatsuka\ ;
+予想利益 < yosourieki\ ;
+収集家 < shuushuuka\ ;
+酸化鉄 < sankatetsu\ ;
+新人王 < shinjin''ou\ ;
+延日数 < nobenissuu\ ;
+奉献頌 < houkenshou\ ;
+貸店舗 < kashitenpo\ ;
+五音音階 < goon''onkai\ ;
+二人共 < futaritomo\ ;
+収斂剤 < shuurenzai\ ;
+国際法 < kokusaihou\ ;
+高学年 < kougakunen\ ;
+核災害 < kakusaigai\ ;
+伽草子 < togizoushi\ ;
+煽情的 < senjouteki\ ;
+認証官 < ninshoukan\ ;
+養蚕業 < yousangyou\ ;
+火山脈 < kazanmyaku\ ;
+菜種殻 < natanegara\ ;
+避暑客 < hishokyaku\ ;
+火気厳禁 < kakigenkin\ ;
+書評欄 < shohyouran\ ;
+入場税 < nyuujouzei\ ;
+溌剌 < hatsuratsu\ ;
+試作車 < shisakusha\ ;
+獄中記 < gokuchuuki\ ;
+乳兄弟 < chikyoudai\ ;
+十字架像 < juujikazou\ ;
+二七日 < futananoka\ ;
+正教会 < seikyoukai\ ;
+先生方 < senseigata\ ;
+草雲雀 < kusahibari\ ;
+侍従職 < jijuushoku\ ;
+処理過程 < shorikatei\ ;
+地形学 < chikeigaku\ ;
+一定不変 < itteifuhen\ ;
+月下美人 < gekkabijin\ ;
+一直線 < itchokusen\ ;
+天眼通 < tengantsuu\ ;
+仲買人 < nakagainin\ ;
+薬理学 < yakurigaku\ ;
+瀬戸内海 < setonaikai\ ;
+老政治家 < rouseijika\ ;
+国文専 < kokubunsen\ ;
+一年生 < ichinensei\ ;
+定式化 < teishikika\ ;
+商業化 < shougyouka\ ;
+一輪車 < ichirinsha\ ;
+功利主義 < kourishugi\ ;
+滲炭鋼 < shintankou\ ;
+軍用犬 < gun''youken\ ;
+六角堂 < rokkakudou\ ;
+床暖房 < yukadanbou\ ;
+筆不精 < fudebushou\ ;
+海燕 < umitsubame\ ;
+公証人 < koushounin\ ;
+規制緩和 < kiseikanwa\ ;
+牧草地 < bokusouchi\ ;
+属性値 < zokuseichi\ ;
+解毒薬 < gedokuyaku\ ;
+満期日 < mankijitsu\ ;
+名作選 < meisakusen\ ;
+如是我聞 < nyozegamon\ ;
+明治時代 < meijijidai\ ;
+商用文 < shouyoubun\ ;
+同化作用 < doukasayou\ ;
+国語学 < kokugogaku\ ;
+可及的 < kakyuuteki\ ;
+別途預金 < bettoyokin\ ;
+金袋 < kanabukuro\ ;
+写真班 < shashinhan\ ;
+油虫 < aburamushi\ ;
+一元論 < ichigenron\ ;
+下種根性 < gesukonjou\ ;
+調剤師 < chouzaishi\ ;
+単三形 < tansangata\ ;
+甲冑師 < katchuushi\ ;
+先任者 < sen''ninsha\ ;
+曲線美 < kyokusenbi\ ;
+銀狐 < gingitsune\ ;
+南風 < minamikaze\ ;
+公約数 < kouyakusuu\ ;
+熱狂者 < nekkyousha\ ;
+水紋学 < suimongaku\ ;
+人種学 < jinshugaku\ ;
+残忍性 < zan''ninsei\ ;
+援助交際 < enjokousai\ ;
+虐殺 < gyakusatsu\ ;
+相関的 < soukanteki\ ;
+写真版 < shashinban\ ;
+生息地 < seisokuchi\ ;
+国会議員 < kokkaigiin\ ;
+土地利用 < tochiriyou\ ;
+知性的 < chiseiteki\ ;
+栄枯盛衰 < eikoseisui\ ;
+未発達 < mihattatsu\ ;
+開幕戦 < kaimakusen\ ;
+相互作用 < sougosayou\ ;
+水鏡 < mizukagami\ ;
+舞台衣装 < butaiishou\ ;
+後配株 < kouhaikabu\ ;
+停泊地 < teihakuchi\ ;
+罹患率 < rikanritsu\ ;
+進行形 < shinkoukei\ ;
+道徳上 < doutokujou\ ;
+社会的 < shakaiteki\ ;
+震源地 < shingenchi\ ;
+星雲説 < seiunsetsu\ ;
+河原者 < kawaramono\ ;
+溺死者 < dekishisha\ ;
+海商法 < kaishouhou\ ;
+理髪店 < rihatsuten\ ;
+革命軍 < kakumeigun\ ;
+活物 < katsubutsu\ ;
+卵酒 < tamagozake\ ;
+合議制度 < gougiseido\ ;
+書誌学 < shoshigaku\ ;
+二酸化硫黄 < nisankaiou\ ;
+理髪師 < rihatsushi\ ;
+世俗心 < sezokushin\ ;
+適任者 < tekininsha\ ;
+変圧所 < hen''atsujo\ ;
+漢民族 < kanminzoku\ ;
+適用性 < tekiyousei\ ;
+都鳥 < miyakodori\ ;
+決裂 < ketsuretsu\ ;
+薬箱 < kusuribako\ ;
+麦畑 < mugibatake\ ;
+雌雄異株 < shiyuuishu\ ;
+直談判 < jikadanpan\ ;
+背信者 < haishinsha\ ;
+筆耕料 < hikkouryou\ ;
+伝法肌 < denbouhada\ ;
+繊毛虫 < senmouchuu\ ;
+競売人 < kyoubainin\ ;
+作詞者 < sakushisha\ ;
+黒漆 < kokushitsu\ ;
+安死術 < anshijutsu\ ;
+喉仏 < nodobotoke\ ;
+反射誤差 < hanshagosa\ ;
+塩素酸塩 < ensosan''en\ ;
+機動力 < kidouryoku\ ;
+絶対誤差 < zettaigosa\ ;
+最終回 < saishuukai\ ;
+主要国 < shuyoukoku\ ;
+反陽子 < han''youshi\ ;
+内向的 < naikouteki\ ;
+防潮堤 < bouchoutei\ ;
+物損事故 < bussonjiko\ ;
+液晶盤 < ekishouban\ ;
+神経戦 < shinkeisen\ ;
+黄八丈 < kihachijou\ ;
+表二階 < omotenikai\ ;
+試験的 < shikenteki\ ;
+屠殺場 < tosatsujou\ ;
+旅支度 < tabijitaku\ ;
+全部保険 < zenbuhoken\ ;
+金聾 < kanatsunbo\ ;
+書簡集 < shokanshuu\ ;
+営林局 < eirinkyoku\ ;
+無重力 < mujuuryoku\ ;
+遺失者 < ishitsusha\ ;
+悪巫山戯 < warufuzake\ ;
+整形外科 < seikeigeka\ ;
+生得権 < seitokuken\ ;
+米騒動 < komesoudou\ ;
+新体制 < shintaisei\ ;
+血清学 < kesseigaku\ ;
+部長閲 < buchouetsu\ ;
+夜想曲 < yasoukyoku\ ;
+武家政権 < bukeseiken\ ;
+概念的 < gainenteki\ ;
+空中権 < kuuchuuken\ ;
+二項分布 < nikoubunpu\ ;
+周遊券 < shuuyuuken\ ;
+創作者 < sousakusha\ ;
+含糖量 < gantouryou\ ;
+倹約家 < ken''yakuka\ ;
+出張所 < shutchoujo\ ;
+映画会社 < eigagaisha\ ;
+管理職 < kanrishoku\ ;
+鉄砲百合 < teppouyuri\ ;
+恐怖症 < kyoufushou\ ;
+政略家 < seiryakuka\ ;
+公衆網 < koushuumou\ ;
+入場権 < nyuujouken\ ;
+名誉会員 < meiyokaiin\ ;
+督戦隊 < tokusentai\ ;
+千羽鶴 < senbadzuru\ ;
+住宅地 < juutakuchi\ ;
+応募用紙 < ouboyoushi\ ;
+内惑星 < naiwakusei\ ;
+真正直 < mashoujiki\ ;
+季節風 < kisetsufuu\ ;
+低学年 < teigakunen\ ;
+学籍簿 < gakusekibo\ ;
+立体鏡 < rittaikyou\ ;
+二項式 < nikoushiki\ ;
+百日紅 < sarusuberi\ ;
+軍略家 < gunryakuka\ ;
+自浄作用 < jijousayou\ ;
+民譚集 < mindanshuu\ ;
+慰問袋 < imonbukuro\ ;
+消石灰 < shousekkai\ ;
+単一化 < tan''itsuka\ ;
+専用車 < sen''yousha\ ;
+仕舞物 < shimaimono\ ;
+大白鳥 < oohakuchou\ ;
+緩徐曲 < kanjokyoku\ ;
+刀剣商 < toukenshou\ ;
+伽芝居 < togishibai\ ;
+外貨預金 < gaikayokin\ ;
+気象庁 < kishouchou\ ;
+一円玉 < ichiendama\ ;
+恐怖映画 < kyoufueiga\ ;
+課税控除 < kazeikoujo\ ;
+巡洋艦 < jun''youkan\ ;
+必需品 < hitsujuhin\ ;
+不信用 < fushin''you\ ;
+測地線 < sokuchisen\ ;
+高木層 < koubokusou\ ;
+許容誤差 < kyoyougosa\ ;
+表層性 < hyousousei\ ;
+水薬 < mizugusuri\ ;
+出席簿 < shussekibo\ ;
+親王妃 < shin''nouhi\ ;
+配給系 < haikyuukei\ ;
+変圧器 < hen''atsuki\ ;
+実体鏡 < jittaikyou\ ;
+優勝杯 < yuushouhai\ ;
+適不適 < tekifuteki\ ;
+不定期刑 < futeikikei\ ;
+社交的 < shakouteki\ ;
+配給米 < haikyuumai\ ;
+書記局 < shokikyoku\ ;
+贈収賄 < zoushuuwai\ ;
+凸凹紙 < totsuoushi\ ;
+裁判人 < saiban''nin\ ;
+今道心 < imadoushin\ ;
+明治維新 < meijiishin\ ;
+紹介者 < shoukaisha\ ;
+言語機能 < gengokinou\ ;
+保税倉庫 < hozeisouko\ ;
+気象学 < kishougaku\ ;
+相続人 < souzokunin\ ;
+被告席 < hikokuseki\ ;
+乳脂肪 < nyuushibou\ ;
+農牧地 < noubokuchi\ ;
+医療機関 < iryoukikan\ ;
+悪戯子 < itazurakko\ ;
+射的場 < shatekijou\ ;
+泉熱 < izuminetsu\ ;
+法学者 < hougakusha\ ;
+全国紙 < zenkokushi\ ;
+救難船 < kyuunansen\ ;
+金融債 < kin''yuusai\ ;
+石井聰互 < ishiisougo\ ;
+軍事封鎖 < gunjifuusa\ ;
+上載圧 < jousaiatsu\ ;
+口喧嘩 < kuchigenka\ ;
+成人病 < seijinbyou\ ;
+花水木 < hanamizuki\ ;
+造園術 < zouenjutsu\ ;
+乳腺炎 < nyuusen''en\ ;
+位階勲等 < ikaikuntou\ ;
+浴室 < yokushitsu\ ;
+海流瓶 < kairyuubin\ ;
+分光学 < bunkougaku\ ;
+民主的 < minshuteki\ ;
+精白糖 < seihakutou\ ;
+無機質 < mukishitsu\ ;
+愛娘 < manamusume\ ;
+通話料 < tsuuwaryou\ ;
+耐火煉瓦 < taikarenga\ ;
+改良品 < kairyouhin\ ;
+精白米 < seihakumai\ ;
+快削鋼 < kaisakukou\ ;
+日向水 < hinatamizu\ ;
+古狸 < furudanuki\ ;
+陪審員 < baishin''in\ ;
+古今無類 < kokonmurui\ ;
+師団長 < shidanchou\ ;
+組職体 < soshokutai\ ;
+果実酒 < kajitsushu\ ;
+婿養子 < mukoyoushi\ ;
+写真師 < shashinshi\ ;
+電波管理 < denpakanri\ ;
+河烏 < kawagarasu\ ;
+下検査 < shitakensa\ ;
+優勝戦 < yuushousen\ ;
+私宛 < watashiate\ ;
+連続体 < renzokutai\ ;
+天刑病 < tenkeibyou\ ;
+民事事件 < minjijiken\ ;
+半翅目 < hanshimoku\ ;
+茶番劇 < chabangeki\ ;
+自然保護 < shizenhogo\ ;
+写真屋 < shashin''ya\ ;
+画像処理 < gazoushori\ ;
+良導体 < ryoudoutai\ ;
+救世主 < kyuuseishu\ ;
+未着手 < michakushu\ ;
+作詩法 < sakushihou\ ;
+真魚鰹 < managatsuo\ ;
+出張員 < shutchouin\ ;
+人力車 < jinrikisha\ ;
+種種雑多 < shujuzatta\ ;
+必罰 < hitsubatsu\ ;
+祝日 < shukujitsu\ ;
+国際人 < kokusaijin\ ;
+測長機 < sokuchouki\ ;
+小主観 < shoushukan\ ;
+映画俳優 < eigahaiyuu\ ;
+実践的 < jissenteki\ ;
+連結器 < renketsuki\ ;
+耐久性 < taikyuusei\ ;
+杉並木 < suginamiki\ ;
+終了後 < shuuryougo\ ;
+天道様 < tentousama\ ;
+吊橋 < tsuribashi\ ;
+撮影隊 < satsueitai\ ;
+花菖蒲 < hanashoubu\ ;
+検眼鏡 < kengankyou\ ;
+形許 < katabakari\ ;
+酸化物 < sankabutsu\ ;
+波枕 < namimakura\ ;
+小作料 < kosakuryou\ ;
+庶民的 < shominteki\ ;
+輪舞曲 < rinbukyoku\ ;
+磁気録音 < jikirokuon\ ;
+不協和音 < fukyouwaon\ ;
+凍結器 < touketsuki\ ;
+夏蜜柑 < natsumikan\ ;
+本位記号 < hon''ikigou\ ;
+等方的 < touhouteki\ ;
+衛生管理 < eiseikanri\ ;
+岩清水 < iwashimizu\ ;
+立案者 < ritsuansha\ ;
+相互主義 < sougoshugi\ ;
+著述家 < chojutsuka\ ;
+脳梅毒 < noubaidoku\ ;
+軍用品 < gun''youhin\ ;
+応募資金 < ouboshikin\ ;
+僕仲間 < bokunakama\ ;
+難視聴 < nanshichou\ ;
+復古主義 < fukkoshugi\ ;
+徳義心 < tokugishin\ ;
+近海物 < kinkaimono\ ;
+東洋通 < touyoutsuu\ ;
+次亜硫酸 < jiaryuusan\ ;
+平安時代 < heianjidai\ ;
+鉄砲玉 < teppoudama\ ;
+水秤 < mizubakari\ ;
+流失 < ryuushitsu\ ;
+価格表 < kakakuhyou\ ;
+調停者 < chouteisha\ ;
+歴史観 < rekishikan\ ;
+建築費 < kenchikuhi\ ;
+鉋屑 < kan''nakuzu\ ;
+人情劇 < ninjougeki\ ;
+菱餅 < hishimochi\ ;
+多神教 < tashinkyou\ ;
+情報機器 < jouhoukiki\ ;
+前哨地 < zenshouchi\ ;
+三位一体 < sanmiittai\ ;
+政務次官 < seimujikan\ ;
+吉日 < kichinichi\ ;
+一度丈 < ichidodake\ ;
+薬指 < kusuriyubi\ ;
+連絡会 < renrakukai\ ;
+一般職 < ippanshoku\ ;
+雌雄異体 < shiyuuitai\ ;
+社会学 < shakaigaku\ ;
+偵察機 < teisatsuki\ ;
+寝台車 < shindaisha\ ;
+年代物 < nendaimono\ ;
+両替人 < ryougaenin\ ;
+各方 < onoonogata\ ;
+武断政治 < budanseiji\ ;
+合格者 < goukakusha\ ;
+金槌 < kanadzuchi\ ;
+専用線 < sen''yousen\ ;
+帯域幅 < taiikihaba\ ;
+初一念 < shoichinen\ ;
+紹介状 < shoukaijou\ ;
+消毒器 < shoudokuki\ ;
+旦那衆 < dan''nashuu\ ;
+堅信礼 < kenshinrei\ ;
+官公庁 < kankouchou\ ;
+聴聞僧 < choumonsou\ ;
+太平楽 < taiheiraku\ ;
+両天秤 < ryoutenbin\ ;
+孔雀石 < kujakuseki\ ;
+創作権 < sousakuken\ ;
+色事師 < irogotoshi\ ;
+酸化炭素 < sankatanso\ ;
+水彩画家 < suisaigaka\ ;
+降魔術 < koumajutsu\ ;
+少資本 < shoushihon\ ;
+資産株 < shisankabu\ ;
+基礎代謝 < kisotaisha\ ;
+恐怖心 < kyoufushin\ ;
+実験的 < jikkenteki\ ;
+使徒達 < shitotachi\ ;
+前頭 < maegashira\ ;
+安酒場 < yasusakaba\ ;
+聴聞会 < choumonkai\ ;
+育児食 < ikujishoku\ ;
+男便所 < otokobenjo\ ;
+首実検 < kubijikken\ ;
+細胞膜 < saiboumaku\ ;
+名人肌 < meijinhada\ ;
+小学校 < shougakkou\ ;
+一杯機嫌 < ippaikigen\ ;
+旧藩主 < kyuuhanshu\ ;
+民有林 < min''yuurin\ ;
+赤鉄鉱 < sekitekkou\ ;
+本草学 < honzougaku\ ;
+修正者 < shuuseisha\ ;
+風速計 < fuusokukei\ ;
+道路輸送 < douroyusou\ ;
+潜在的 < senzaiteki\ ;
+変拍子 < henbyoushi\ ;
+旧思想 < kyuushisou\ ;
+亜熱帯林 < anettairin\ ;
+雑木林 < zoubokurin\ ;
+戦闘的 < sentouteki\ ;
+青息吐息 < aoikitoiki\ ;
+終電車 < shuudensha\ ;
+背美鯨 < semikujira\ ;
+慇懃無礼 < inginburei\ ;
+穴杓子 < anajakushi\ ;
+一年中 < ichinenjuu\ ;
+鉄砲水 < teppoumizu\ ;
+全国民 < zenkokumin\ ;
+人口学 < jinkougaku\ ;
+流出 < ryuushutsu\ ;
+活力 < katsuryoku\ ;
+直滑降 < chokkakkou\ ;
+糞真面目 < kusomajime\ ;
+上申書 < joushinsho\ ;
+卵焼 < tamagoyaki\ ;
+針千本 < harisenbon\ ;
+自主規制 < jishukisei\ ;
+三業地 < sangyouchi\ ;
+並大抵 < namitaitei\ ;
+白雲石 < hakuunseki\ ;
+水煙 < mizukemuri\ ;
+欠席者 < kessekisha\ ;
+引当金 < hikiatekin\ ;
+装飾音 < soushokuon\ ;
+視聴者 < shichousha\ ;
+乳臭児 < nyuushuuji\ ;
+手沢本 < shutakubon\ ;
+警戒心 < keikaishin\ ;
+弥生時代 < yayoijidai\ ;
+中国語 < chuugokugo\ ;
+入手難 < nyuushunan\ ;
+電流計 < denryuukei\ ;
+道道 < michimichi\ ;
+予備会談 < yobikaidan\ ;
+君主国 < kunshukoku\ ;
+音楽学 < ongakugaku\ ;
+錯字症 < sakujishou\ ;
+等位構造 < touikouzou\ ;
+大盤石 < daibanjaku\ ;
+分子量 < bunshiryou\ ;
+一番茶 < ichibancha\ ;
+他流試合 < taryuujiai\ ;
+安定操作 < anteisousa\ ;
+無償行為 < mushoukoui\ ;
+遅刻者 < chikokusha\ ;
+再発足 < saihossoku\ ;
+対蹠的 < taishoteki\ ;
+夏期学校 < kakigakkou\ ;
+槍術家 < soujutsuka\ ;
+歌謡曲 < kayoukyoku\ ;
+活人画 < katsujinga\ ;
+二言目 < futakotome\ ;
+原子量 < genshiryou\ ;
+強腰 < tsuyogoshi\ ;
+大幅物 < oohabamono\ ;
+独奏会 < dokusoukai\ ;
+初霜 < hatsushimo\ ;
+宇宙医学 < uchuuigaku\ ;
+名誉除隊 < meiyojotai\ ;
+五臓六腑 < gozouroppu\ ;
+右左 < migihidari\ ;
+脱臭剤 < dasshuuzai\ ;
+快速船 < kaisokusen\ ;
+生殖器 < seishokuki\ ;
+車中談 < shachuudan\ ;
+鎮静剤 < chinseizai\ ;
+合併症 < gappeishou\ ;
+懇親会 < konshinkai\ ;
+着雪 < chakusetsu\ ;
+必滅 < hitsumetsu\ ;
+牽牛星 < kengyuusei\ ;
+執行委員 < shikkouiin\ ;
+里心 < satogokoro\ ;
+四面楚歌 < shimensoka\ ;
+茶柄杓 < chabishaku\ ;
+有神論 < yuushinron\ ;
+命中数 < meichuusuu\ ;
+方解石 < houkaiseki\ ;
+売掛金 < urikakekin\ ;
+超巨星 < choukyosei\ ;
+立体的 < rittaiteki\ ;
+白昼夢 < hakuchuumu\ ;
+新記録 < shinkiroku\ ;
+保釈金 < hoshakukin\ ;
+反粒子 < hanryuushi\ ;
+下足料 < gesokuryou\ ;
+注文書 < chuumonsho\ ;
+威風堂堂 < ifuudoudou\ ;
+化合物 < kagoubutsu\ ;
+屋形船 < yakatabune\ ;
+軍事会議 < gunjikaigi\ ;
+跛行景気 < hakoukeiki\ ;
+運動力 < undouryoku\ ;
+銘銘皿 < meimeizara\ ;
+黒曜岩 < kokuyougan\ ;
+原作者 < gensakusha\ ;
+兵站学 < heitangaku\ ;
+細密画 < saimitsuga\ ;
+饂飩粉病 < udonkobyou\ ;
+一番線 < ichibansen\ ;
+半人前 < han''ninmae\ ;
+劇場街 < gekijougai\ ;
+天下一品 < tenkaippin\ ;
+決議権 < ketsugiken\ ;
+基地閉鎖 < kichiheisa\ ;
+葵祭 < aoimatsuri\ ;
+一槽式 < issoushiki\ ;
+宅急便 < takkyuubin\ ;
+油壷 < aburatsubo\ ;
+老人病 < roujinbyou\ ;
+筆記用具 < hikkiyougu\ ;
+蒸気機関 < joukikikan\ ;
+合格点 < goukakuten\ ;
+刻足 < kizamiashi\ ;
+試供品 < shikyouhin\ ;
+中堅手 < chuukenshu\ ;
+葛饅頭 < kuzumanjuu\ ;
+接客婦 < sekkyakufu\ ;
+活字本 < katsujihon\ ;
+問題劇 < mondaigeki\ ;
+磁気抵抗 < jikiteikou\ ;
+聴講生 < choukousei\ ;
+水枕 < mizumakura\ ;
+賽銭箱 < saisenbako\ ;
+提唱者 < teishousha\ ;
+丁字定規 < teijijougi\ ;
+噴飯物 < funpanmono\ ;
+固定金利 < koteikinri\ ;
+分極化 < bunkyokuka\ ;
+管理局 < kanrikyoku\ ;
+角錐台 < kakusuidai\ ;
+福岡県 < fukuokaken\ ;
+独壇場 < dokudanjou\ ;
+仲間褒 < nakamabome\ ;
+随想録 < zuisouroku\ ;
+撮影者 < satsueisha\ ;
+如菩薩 < nyobosatsu\ ;
+命中弾 < meichuudan\ ;
+真分数 < shinbunsuu\ ;
+鰯雲 < iwashigumo\ ;
+雇用主 < koyounushi\ ;
+心柄 < kokorogara\ ;
+起動時間 < kidoujikan\ ;
+幻 < maboroshi\ ;
+屍 < shikabane\ ;
+孤 < minashigo\ ;
+猪 < inoshishi\ ;
+唇 < kuchibiru\ ;
+檣 < hobashira\ ;
+橘 < tachibana\ ;
+兵 < tsuwamono\ ;
+銀 < shirogane\ ;
+邪 < yokoshima\ ;
+屯田兵 < tondenhei\ ;
+敵部隊 < tekibutai\ ;
+抵当権 < teitouken\ ;
+村夫子 < sonpuushi\ ;
+自己欺瞞 < jikogiman\ ;
+慰安旅行 < ianryokou\ ;
+揚水車 < yousuisha\ ;
+救援軍 < kyuuengun\ ;
+育毛剤 < ikumouzai\ ;
+睦言 < mutsugoto\ ;
+収奪 < shuudatsu\ ;
+黒頭巾 < kurozukin\ ;
+解毒剤 < gedokuzai\ ;
+恐喝 < kyoukatsu\ ;
+高姿勢 < koushisei\ ;
+屋台店 < yataimise\ ;
+起磁力 < kijiryoku\ ;
+原生林 < genseirin\ ;
+歴史画 < rekishiga\ ;
+目頭 < megashira\ ;
+草餠 < kusamochi\ ;
+前半生 < zenhansei\ ;
+存在論 < sonzairon\ ;
+劇職 < gekishoku\ ;
+希望的 < kibouteki\ ;
+薬代 < kusuridai\ ;
+人工雷 < jinkourai\ ;
+専用機 < sen''youki\ ;
+強直 < kyouchoku\ ;
+度量衡 < doryoukou\ ;
+党大会 < toutaikai\ ;
+同乗者 < doujousha\ ;
+労動者 < roudousha\ ;
+単数型 < tansuukei\ ;
+従兄弟 < juukeitei\ ;
+齧歯類 < gesshirui\ ;
+各冊 < kakusatsu\ ;
+通説 < tsuusetsu\ ;
+冠木門 < kabukimon\ ;
+付属品 < fuzokuhin\ ;
+訪問者 < houmonsha\ ;
+河口 < kawaguchi\ ;
+逆賊 < gyakuzoku\ ;
+道草 < michikusa\ ;
+発頭人 < hottounin\ ;
+死神 < shinigami\ ;
+文選工 < bunsenkou\ ;
+適職 < tekishoku\ ;
+欠落 < ketsuraku\ ;
+巻鮨 < makizushi\ ;
+同居人 < doukyonin\ ;
+参詣人 < sankeinin\ ;
+役員会 < yakuinkai\ ;
+孤立語 < koritsugo\ ;
+生菓子 < namagashi\ ;
+電気器具 < denkikigu\ ;
+勝率 < shouritsu\ ;
+勘定書 < kanjousho\ ;
+開催地 < kaisaichi\ ;
+落後者 < rakugosha\ ;
+出軍 < shutsugun\ ;
+危機打者 < kikidasha\ ;
+半日 < han''nichi\ ;
+塩化水素 < enkasuiso\ ;
+厄年 < yakudoshi\ ;
+男子校 < danshikou\ ;
+剥脱 < hakudatsu\ ;
+一苦労 < hitokurou\ ;
+催涙弾 < sairuidan\ ;
+統治権 < touchiken\ ;
+徒桜 < adazakura\ ;
+千日 < sen''nichi\ ;
+禁転載 < kintensai\ ;
+人事異動 < jinjiidou\ ;
+港湾税 < kouwanzei\ ;
+不寛容 < fukan''you\ ;
+別行 < betsugyou\ ;
+不信仰 < fushinkou\ ;
+太公望 < taikoubou\ ;
+丸括弧 < marugakko\ ;
+外向性 < gaikousei\ ;
+落着 < rakuchaku\ ;
+不足前 < tarazumae\ ;
+二国間 < nikokukan\ ;
+亜鉛鉄板 < aenteppan\ ;
+会葬者 < kaisousha\ ;
+遮二無二 < shanimuni\ ;
+逆襲 < gyakushuu\ ;
+福寿草 < fukujusou\ ;
+毒殺 < dokusatsu\ ;
+確実 < kakujitsu\ ;
+法曹界 < housoukai\ ;
+重出 < juushutsu\ ;
+口先 < kuchisaki\ ;
+運輸省 < un''yushou\ ;
+口元 < kuchimoto\ ;
+式目 < shikimoku\ ;
+卓抜 < takubatsu\ ;
+乗車駅 < joushaeki\ ;
+朝鮮語 < chousengo\ ;
+革命家 < kakumeika\ ;
+機密費 < kimitsuhi\ ;
+人造米 < jinzoumai\ ;
+洋品店 < youhinten\ ;
+個人的 < kojinteki\ ;
+一元化 < ichigenka\ ;
+伝道船 < dendousen\ ;
+没入 < botsunyuu\ ;
+圧迫感 < appakukan\ ;
+予防策 < yobousaku\ ;
+若隠居 < wakainkyo\ ;
+定住者 < teijuusha\ ;
+右下 < migishita\ ;
+水溶性 < suiyousei\ ;
+強烈 < kyouretsu\ ;
+遺言書 < yuigonsho\ ;
+代燃車 < dainensha\ ;
+変成岩 < henseigan\ ;
+一定量 < itteiryou\ ;
+苦灰石 < kukaiseki\ ;
+左心房 < sashinbou\ ;
+輪番制 < rinbansei\ ;
+請願者 < seigansha\ ;
+逸脱 < itsudatsu\ ;
+白黒 < shirokuro\ ;
+直達 < jikitatsu\ ;
+圧迫性 < appakusei\ ;
+恋仇 < koigataki\ ;
+羅生門 < rashoumon\ ;
+直進 < chokushin\ ;
+個人用 < kojin''you\ ;
+享受者 < kyoujusha\ ;
+御足労 < gosokurou\ ;
+直通 < chokutsuu\ ;
+剽窃 < hyousetsu\ ;
+爬虫類 < hachuurui\ ;
+迷信家 < meishinka\ ;
+割箸 < waribashi\ ;
+書簡文 < shokanbun\ ;
+許可証 < kyokashou\ ;
+民主党 < minshutou\ ;
+免黜 < menchutsu\ ;
+金仏 < kanabutsu\ ;
+白鷺 < shirasagi\ ;
+醵出 < kyoshutsu\ ;
+直轄 < chokkatsu\ ;
+太刀先 < tachisaki\ ;
+占師 < uranaishi\ ;
+伝道者 < dendousha\ ;
+監視船 < kanshisen\ ;
+縄暖簾 < nawanoren\ ;
+綿製品 < menseihin\ ;
+皮靴 < kawagutsu\ ;
+出走馬 < shussouba\ ;
+急切 < kyuusetsu\ ;
+二階建 < nikaidate\ ;
+修正案 < shuuseian\ ;
+宣伝戦 < sendensen\ ;
+酉年 < toridoshi\ ;
+請負業 < ukeoigyou\ ;
+類人猿 < ruijin''en\ ;
+合理的 < gouriteki\ ;
+勝負師 < shoubushi\ ;
+糸蚯蚓 < itomimizu\ ;
+延長戦 < enchousen\ ;
+土建業 < dokengyou\ ;
+贈呈品 < zouteihin\ ;
+金鉱地 < kinkouchi\ ;
+真裸 < mappadaka\ ;
+昼御飯 < hirugohan\ ;
+蒙古襞 < moukohida\ ;
+半月刊 < hangekkan\ ;
+出血 < shukketsu\ ;
+白鱚 < shirogisu\ ;
+道筋 < michisuji\ ;
+県民税 < kenminzei\ ;
+扇動者 < sendousha\ ;
+集会所 < shuukaijo\ ;
+木工場 < mokkoujou\ ;
+洒落者 < sharemono\ ;
+戦闘帽 < sentoubou\ ;
+夕化粧 < yuugeshou\ ;
+道端 < michibata\ ;
+可動堰 < kadouzeki\ ;
+大年増 < ootoshima\ ;
+法理学 < hourigaku\ ;
+黄頷蛇 < aodaishou\ ;
+透明体 < toumeitai\ ;
+故障車 < koshousha\ ;
+監視者 < kanshisha\ ;
+卸売 < oroshiuri\ ;
+忘失 < boushitsu\ ;
+蔭口 < kageguchi\ ;
+卵大 < tamagodai\ ;
+弁慶草 < benkeisou\ ;
+初花 < hatsuhana\ ;
+道程 < michinori\ ;
+存在者 < sonzaisha\ ;
+全国区 < zenkokuku\ ;
+白髪 < hakuhatsu\ ;
+天皇旗 < ten''nouki\ ;
+官僚化 < kanryouka\ ;
+既得権 < kitokuken\ ;
+光線銃 < kousenjuu\ ;
+磔刑 < haritsuke\ ;
+仮面劇 < kamengeki\ ;
+機械的 < kikaiteki\ ;
+彦星 < hikoboshi\ ;
+遺伝地図 < idenchizu\ ;
+辛辣 < shinratsu\ ;
+正物 < shoubutsu\ ;
+品々 < shinajina\ ;
+熨斗紙 < noshigami\ ;
+写植機 < shashokki\ ;
+出藍 < shutsuran\ ;
+本体論 < hontairon\ ;
+発声法 < hasseihou\ ;
+給湯器 < kyuutouki\ ;
+年若 < toshiwaka\ ;
+遊興費 < yuukyouhi\ ;
+平安京 < heiankyou\ ;
+逆臣 < gyakushin\ ;
+生欠伸 < namaakubi\ ;
+送付先 < soufusaki\ ;
+外野席 < gaiyaseki\ ;
+平芝 < hirashiba\ ;
+横面 < yokotsura\ ;
+立体戦 < rittaisen\ ;
+直読 < chokudoku\ ;
+監視網 < kanshimou\ ;
+月水金 < gessuikin\ ;
+正投手 < seitoushu\ ;
+凝血 < gyouketsu\ ;
+遠赤外 < ensekigai\ ;
+指示薬 < shijiyaku\ ;
+逃腰 < nigegoshi\ ;
+心太 < tokoroten\ ;
+直訳 < chokuyaku\ ;
+初耳 < hatsumimi\ ;
+信号機 < shingouki\ ;
+井戸車 < idoguruma\ ;
+有名税 < yuumeizei\ ;
+立体感 < rittaikan\ ;
+優先権 < yuusenken\ ;
+実験場 < jikkenjou\ ;
+牡丹餅 < botamochi\ ;
+経団連 < keidanren\ ;
+不法行為 < fuhoukoui\ ;
+断頭台 < dantoudai\ ;
+予約者 < yoyakusha\ ;
+終夜灯 < shuuyatou\ ;
+暗黒面 < ankokumen\ ;
+宣伝屋 < senden''ya\ ;
+代替品 < daitaihin\ ;
+炭酸塩 < tansan''en\ ;
+下宿屋 < geshukuya\ ;
+補給線 < hokyuusen\ ;
+名人戦 < meijinsen\ ;
+一般席 < ippanseki\ ;
+遭難者 < sounansha\ ;
+白雪 < hakusetsu\ ;
+出色 < shusshoku\ ;
+原子砲 < genshihou\ ;
+倒置法 < touchihou\ ;
+廃疾 < haishitsu\ ;
+照準器 < shoujunki\ ;
+原住民 < genjuumin\ ;
+聖公会 < seikoukai\ ;
+劇烈 < gekiretsu\ ;
+原産地 < gensanchi\ ;
+革命児 < kakumeiji\ ;
+速筆 < sokuhitsu\ ;
+優駿馬 < yuushunba\ ;
+主情論 < shujouron\ ;
+骨董品 < kottouhin\ ;
+管財人 < kanzainin\ ;
+演劇界 < engekikai\ ;
+銀閣寺 < ginkakuji\ ;
+風鳥座 < fuuchouza\ ;
+挟瞼器 < kyoukenki\ ;
+教授法 < kyoujuhou\ ;
+電気釜 < denkigama\ ;
+電気量 < denkiryou\ ;
+水口 < mizuguchi\ ;
+死体遺棄 < shitaiiki\ ;
+点光源 < tenkougen\ ;
+日刊紙 < nikkanshi\ ;
+間狂言 < aikyougen\ ;
+殺戮 < satsuriku\ ;
+老人性 < roujinsei\ ;
+後室 < koushitsu\ ;
+計数管 < keisuukan\ ;
+金利鞘 < kinrishou\ ;
+蓄妾 < chikushou\ ;
+仮政府 < kariseifu\ ;
+現代版 < gendaiban\ ;
+低姿勢 < teishisei\ ;
+急降下 < kyuukouka\ ;
+童話劇 < douwageki\ ;
+実験台 < jikkendai\ ;
+水成岩 < suiseigan\ ;
+御寮人 < goryounin\ ;
+自身番 < jishinban\ ;
+砂時計 < sunadokei\ ;
+内野安打 < naiyaanda\ ;
+血達磨 < chidaruma\ ;
+養鶏場 < youkeijou\ ;
+進発 < shinpatsu\ ;
+脱走兵 < dassouhei\ ;
+茶袋 < chabukuro\ ;
+荘園制 < shouensei\ ;
+初空 < hatsuzora\ ;
+前半戦 < zenpansen\ ;
+訓詁学 < kunkogaku\ ;
+車井戸 < kurumaido\ ;
+外務省 < gaimushou\ ;
+新時代 < shinjidai\ ;
+渉外部 < shougaibu\ ;
+横道 < yokomichi\ ;
+感光紙 < kankoushi\ ;
+撮影機 < satsueiki\ ;
+一生涯 < isshougai\ ;
+水源地 < suigenchi\ ;
+整流器 < seiryuuki\ ;
+平穏無事 < heionbuji\ ;
+落札 < rakusatsu\ ;
+刮目 < katsumoku\ ;
+白酒 < shirozake\ ;
+銀行界 < ginkoukai\ ;
+現住所 < genjuusho\ ;
+勘所 < kandokoro\ ;
+前口上 < maekoujou\ ;
+地対空 < chitaikuu\ ;
+追突 < tsuitotsu\ ;
+第一集 < daiisshuu\ ;
+式服 < shikifuku\ ;
+天皇家 < ten''nouke\ ;
+協力 < kyouryoku\ ;
+給油船 < kyuuyusen\ ;
+代書人 < daishonin\ ;
+創始者 < soushisha\ ;
+価格帯 < kakakutai\ ;
+場所柄 < bashogara\ ;
+信号所 < shingoujo\ ;
+明明後日 < shiasatte\ ;
+石持 < ishimochi\ ;
+悪循環 < akujunkan\ ;
+落日 < rakujitsu\ ;
+一気呵成 < ikkikasei\ ;
+実験値 < jikkenchi\ ;
+逸物 < ichimotsu\ ;
+不風流 < bufuuryuu\ ;
+宣伝員 < senden''in\ ;
+除電針 < jodenbari\ ;
+衛生学 < eiseigaku\ ;
+直腸 < chokuchou\ ;
+武器貸与 < bukitaiyo\ ;
+発見者 < hakkensha\ ;
+法王庁 < hououchou\ ;
+歴日 < rekijitsu\ ;
+一番手 < ichibante\ ;
+一夫多妻 < ipputasai\ ;
+限界点 < genkaiten\ ;
+板目紙 < itamegami\ ;
+愁嘆場 < shuutanba\ ;
+進物 < shinmotsu\ ;
+花相撲 < hanazumou\ ;
+歯科学 < shikagaku\ ;
+仕事着 < shigotogi\ ;
+光文社 < koubunsha\ ;
+高燥地 < kousouchi\ ;
+農地法 < nouchihou\ ;
+葛根湯 < kakkontou\ ;
+出立 < shuttatsu\ ;
+真筆 < shinpitsu\ ;
+正月 < shougatsu\ ;
+凝縮 < gyoushuku\ ;
+光電管 < koudenkan\ ;
+身分柄 < mibungara\ ;
+観覧券 < kanranken\ ;
+禁制品 < kinseihin\ ;
+着目 < chakumoku\ ;
+当籤者 < tousensha\ ;
+進化論 < shinkaron\ ;
+再検討 < saikentou\ ;
+六識 < rokushiki\ ;
+半夏生 < hangeshou\ ;
+御飯時 < gohandoki\ ;
+愛弟子 < manadeshi\ ;
+手引書 < tebikisho\ ;
+揮発油 < kihatsuyu\ ;
+翰林院 < kanrin''in\ ;
+整合性 < seigousei\ ;
+料理番 < ryouriban\ ;
+十二宮 < juunikyuu\ ;
+生産財 < seisanzai\ ;
+一代記 < ichidaiki\ ;
+元始祭 < genshisai\ ;
+亡命者 < boumeisha\ ;
+有税品 < yuuzeihin\ ;
+眼疾 < ganshitsu\ ;
+大使館 < taishikan\ ;
+限定詞 < genteishi\ ;
+歌枕 < utamakura\ ;
+X線 < ekkususen\ ;
+無駄飯 < mudameshi\ ;
+総決算 < soukessan\ ;
+歴史家 < rekishika\ ;
+海水帽 < kaisuibou\ ;
+控除額 < koujogaku\ ;
+知悉 < chishitsu\ ;
+家政学 < kaseigaku\ ;
+内弟子 < uchideshi\ ;
+多忙中 < tabouchuu\ ;
+別物 < betsumono\ ;
+原寸大 < gensundai\ ;
+直結 < chokketsu\ ;
+機能的 < kinouteki\ ;
+女性的 < joseiteki\ ;
+滑翔機 < kasshouki\ ;
+年始状 < nenshijou\ ;
+子煩悩 < kobon''nou\ ;
+指南車 < shinansha\ ;
+凝立 < gyouritsu\ ;
+常節 < tokobushi\ ;
+写生文 < shaseibun\ ;
+標識 < hyoushiki\ ;
+内遊星 < naiyuusei\ ;
+後出 < koushutsu\ ;
+初物 < hatsumono\ ;
+苦行者 < kugyousha\ ;
+罪悪感 < zaiakukan\ ;
+無症状 < mushoujou\ ;
+花道 < hanamichi\ ;
+角砂糖 < kakuzatou\ ;
+生返事 < namahenji\ ;
+出発 < shuppatsu\ ;
+単純性 < tanjunsei\ ;
+北口 < kitaguchi\ ;
+大僧正 < daisoujou\ ;
+年玉 < toshidama\ ;
+一身上 < isshinjou\ ;
+修道尼 < shuudouni\ ;
+軍放送 < gunhousou\ ;
+登記料 < toukiryou\ ;
+英国人 < eikokujin\ ;
+偽証者 < gishousha\ ;
+道路橋 < dourokyou\ ;
+橙色 < daidaiiro\ ;
+矩差 < kanezashi\ ;
+千万 < chiyorozu\ ;
+撮影所 < satsueijo\ ;
+形態論 < keitairon\ ;
+偽証罪 < gishouzai\ ;
+首謀者 < shubousha\ ;
+複号化 < fukugouka\ ;
+弓弦 < yumidzuru\ ;
+始祖鳥 < shisochou\ ;
+特許法 < tokkyohou\ ;
+養毛剤 < youmouzai\ ;
+浮気者 < uwakimono\ ;
+盲穴 < mekuraana\ ;
+危機突破 < kikitoppa\ ;
+暗黒街 < ankokugai\ ;
+大元帥 < daigensui\ ;
+免許状 < menkyojou\ ;
+草箒 < kusabouki\ ;
+出現 < shutsugen\ ;
+夜光虫 < yakouchuu\ ;
+奇天烈 < kiteretsu\ ;
+匙加減 < sajikagen\ ;
+凝着 < gyouchaku\ ;
+劣弱 < retsujaku\ ;
+投手板 < toushuban\ ;
+従業員 < juugyouin\ ;
+批評眼 < hihyougan\ ;
+修道女 < shuudoujo\ ;
+圧痛点 < attsuuten\ ;
+海兵隊 < kaiheitai\ ;
+考課表 < koukahyou\ ;
+麦芽糖 < bakugatou\ ;
+真率 < shinsotsu\ ;
+苦虫 < nigamushi\ ;
+橋脚 < kyoukyaku\ ;
+左腕 < hidariude\ ;
+文芸欄 < bungeiran\ ;
+夜盲症 < yamoushou\ ;
+投稿者 < toukousha\ ;
+無差別 < musabetsu\ ;
+空挺隊 < kuuteitai\ ;
+微調整 < bichousei\ ;
+口忠実 < kuchimame\ ;
+花模様 < hanamoyou\ ;
+有名校 < yuumeikou\ ;
+特許権 < tokkyoken\ ;
+高鼾 < takaibiki\ ;
+構成子 < kouseishi\ ;
+真物 < shinbutsu\ ;
+弔客 < choukyaku\ ;
+請願書 < seigansho\ ;
+拡声機 < kakuseiki\ ;
+医療機器 < iryoukiki\ ;
+百薬 < hyakuyaku\ ;
+討論会 < touronkai\ ;
+茶筒 < chadzutsu\ ;
+弟娘 < otomusume\ ;
+省略 < shouryaku\ ;
+拘置所 < kouchisho\ ;
+交渉員 < koushouin\ ;
+労役場 < rouekijou\ ;
+長尾鶏 < nagaodori\ ;
+水銀灯 < suigintou\ ;
+主成分 < shuseibun\ ;
+修辞法 < shuujihou\ ;
+卓話会 < takuwakai\ ;
+逆流 < gyakuryuu\ ;
+歌心 < utagokoro\ ;
+手工芸 < shukougei\ ;
+料理法 < ryourihou\ ;
+承認図 < shouninzu\ ;
+本島人 < hontoujin\ ;
+恒常性 < koujousei\ ;
+週末 < shuumatsu\ ;
+着氷 < chakuhyou\ ;
+白菊 < shiragiku\ ;
+年波 < toshinami\ ;
+組織化 < soshikika\ ;
+御新造 < goshinzou\ ;
+正室 < seishitsu\ ;
+乾電池 < kandenchi\ ;
+自作農 < jisakunou\ ;
+菊月 < kikudzuki\ ;
+制空権 < seikuuken\ ;
+花椰菜 < hanayasai\ ;
+競技場 < kyougijou\ ;
+旧制度 < kyuuseido\ ;
+共和政 < kyouwasei\ ;
+天下無比 < tenkamuhi\ ;
+尊王家 < son''nouka\ ;
+年毎 < toshigoto\ ;
+週日 < shuujitsu\ ;
+遅進児 < chishinji\ ;
+花街 < hanamachi\ ;
+川縁 < kawabuchi\ ;
+形代 < katashiro\ ;
+栄養学 < eiyougaku\ ;
+掩護部隊 < engobutai\ ;
+白色 < hakushoku\ ;
+不介入 < fukainyuu\ ;
+投手戦 < toushusen\ ;
+犬張子 < inuhariko\ ;
+送電線 < soudensen\ ;
+卵黄嚢 < ran''ounou\ ;
+別棟 < betsumune\ ;
+気圧計 < kiatsukei\ ;
+駆虫剤 < kuchuuzai\ ;
+犬追物 < inuoumono\ ;
+三斑鶉 < mifuuzura\ ;
+冊立 < sakuritsu\ ;
+馬鹿野郎 < bakayarou\ ;
+島風 < shimakaze\ ;
+拍子木 < hyoushigi\ ;
+多毛作 < tamousaku\ ;
+手荷物 < tenimotsu\ ;
+弱卒 < jakusotsu\ ;
+几帳面 < kichoumen\ ;
+模範的 < mohanteki\ ;
+僕達 < bokutachi\ ;
+髭面 < higedzura\ ;
+筆記帳 < hikkichou\ ;
+張力 < chouryoku\ ;
+軟質 < nanshitsu\ ;
+長距離 < choukyori\ ;
+美少年 < bishounen\ ;
+乾燥材 < kansouzai\ ;
+生産者 < seisansha\ ;
+不服従 < fufukujuu\ ;
+本格派 < honkakuha\ ;
+菱形 < hishigata\ ;
+原子戦 < genshisen\ ;
+不変量 < fuhenryou\ ;
+顔馴染 < kaonajimi\ ;
+進捗 < shinchoku\ ;
+落葉樹 < rakuyouju\ ;
+三頭筋 < santoukin\ ;
+僻説 < hekisetsu\ ;
+口語英語 < kougoeigo\ ;
+代言者 < daigensha\ ;
+茶畑 < chabatake\ ;
+揮発度 < kihatsudo\ ;
+大自然 < daishizen\ ;
+不時着 < fujichaku\ ;
+統制線 < touseisen\ ;
+横綱 < yokodzuna\ ;
+兎耳 < usagimimi\ ;
+光電池 < koudenchi\ ;
+花供養 < hanakuyou\ ;
+難問題 < nanmondai\ ;
+継電鍵 < keidenken\ ;
+機械学 < kikaigaku\ ;
+島陰 < shimakage\ ;
+婦人病 < fujinbyou\ ;
+同好者 < doukousha\ ;
+偽妊娠 < gininshin\ ;
+矢印 < yajirushi\ ;
+着服 < chakufuku\ ;
+火縄銃 < hinawajuu\ ;
+建坪 < tatetsubo\ ;
+副尺 < fukushaku\ ;
+初春 < hatsuharu\ ;
+前勘定 < maekanjou\ ;
+既発表 < kihappyou\ ;
+共立 < kyouritsu\ ;
+花菱 < hanabishi\ ;
+甲状腺 < koujousen\ ;
+稽古事 < keikogoto\ ;
+成文法 < seibunhou\ ;
+延坪 < nobetsubo\ ;
+規格品 < kikakuhin\ ;
+仕事日 < shigotobi\ ;
+分与税 < bun''yozei\ ;
+白無垢 < shiromuku\ ;
+二等賞 < nitoushou\ ;
+極量 < kyokuryou\ ;
+定休日 < teikyuubi\ ;
+良識 < ryoushiki\ ;
+弟分 < otoutobun\ ;
+白灯油 < hakutouyu\ ;
+色調 < shikichou\ ;
+鉄火味噌 < tekkamiso\ ;
+運転席 < untenseki\ ;
+公民館 < kouminkan\ ;
+篤農家 < tokunouka\ ;
+茉莉花 < matsurika\ ;
+人工港 < jinkoukou\ ;
+鳶口 < tobiguchi\ ;
+高陵土 < kouryoudo\ ;
+感光板 < kankouban\ ;
+八福 < hachifuku\ ;
+色覚 < shikikaku\ ;
+三乗根 < sanjoukon\ ;
+石仏 < sekibutsu\ ;
+男風呂 < otokoburo\ ;
+女郎花 < ominaeshi\ ;
+滞納者 < tainousha\ ;
+歳出 < saishutsu\ ;
+伝道師 < dendoushi\ ;
+応召兵 < oushouhei\ ;
+複十字 < fukujuuji\ ;
+直流 < chokuryuu\ ;
+阿弥陀経 < amidakyou\ ;
+芍薬 < shakuyaku\ ;
+再構成 < saikousei\ ;
+有段者 < yuudansha\ ;
+単衣物 < hitoemono\ ;
+規格判 < kikakuban\ ;
+第三者 < daisansha\ ;
+出札 < shussatsu\ ;
+割増 < warimashi\ ;
+体操場 < taisoujou\ ;
+主流派 < shuryuuha\ ;
+芝草 < shibakusa\ ;
+広報官 < kouhoukan\ ;
+真東 < mahigashi\ ;
+人工池 < jinkouike\ ;
+口蓋垂 < kougaisui\ ;
+金剛砂 < kongousha\ ;
+十三夜 < juusan''ya\ ;
+大学院 < daigakuin\ ;
+乗用車 < jouyousha\ ;
+不明確 < fumeikaku\ ;
+阿弥陀籤 < amidakuji\ ;
+蜃気楼 < shinkirou\ ;
+複葉機 < fukuyouki\ ;
+二等親 < nitoushin\ ;
+草競馬 < kusakeiba\ ;
+樸直 < bokuchoku\ ;
+隠元豆 < ingenmame\ ;
+幕末 < bakumatsu\ ;
+累乗根 < ruijoukon\ ;
+椎骨 < tsuikotsu\ ;
+東洋人 < touyoujin\ ;
+競技会 < kyougikai\ ;
+勧誘員 < kan''yuuin\ ;
+老婆心 < roubashin\ ;
+債権者 < saikensha\ ;
+第一義 < daiichigi\ ;
+正出 < seishutsu\ ;
+圧倒的 < attouteki\ ;
+不明瞭 < fumeiryou\ ;
+放電管 < houdenkan\ ;
+凶日 < kyoujitsu\ ;
+前身頃 < maemigoro\ ;
+少数派 < shousuuha\ ;
+特捜部 < tokusoubu\ ;
+調馬師 < choubashi\ ;
+遊失 < yuushitsu\ ;
+理論的 < rironteki\ ;
+飲水量 < insuiryou\ ;
+調理法 < chourihou\ ;
+累犯者 < ruihansha\ ;
+車蝦 < kurumaebi\ ;
+好都合 < koutsugou\ ;
+安全域 < anzen''iki\ ;
+虚栄心 < kyoeishin\ ;
+定期的 < teikiteki\ ;
+初役 < hatsuyaku\ ;
+認可証 < ninkashou\ ;
+信心家 < shinjinka\ ;
+強姦罪 < goukanzai\ ;
+教授会 < kyoujukai\ ;
+連合軍 < rengougun\ ;
+選出 < senshutsu\ ;
+迫持 < serimochi\ ;
+重合体 < juugoutai\ ;
+加虐愛 < kagyakuai\ ;
+河川敷 < kasenjiki\ ;
+軍隊葬 < guntaisou\ ;
+数年間 < suunenkan\ ;
+軽気球 < keikikyuu\ ;
+青浮草 < aoukikusa\ ;
+存在意義 < sonzaiigi\ ;
+安楽死 < anrakushi\ ;
+金平糖 < konpeitou\ ;
+定住地 < teijuuchi\ ;
+金輪際 < konrinzai\ ;
+料理店 < ryouriten\ ;
+貿易風 < bouekifuu\ ;
+人工林 < jinkourin\ ;
+海運業 < kaiungyou\ ;
+衣食住 < ishokujuu\ ;
+着床 < chakushou\ ;
+寝具類 < shingurui\ ;
+年弱 < toshiyowa\ ;
+山鶉 < yamauzura\ ;
+東南東 < tounantou\ ;
+W杯 < daburuhai\ ;
+甲板員 < kouhan''in\ ;
+現代史 < gendaishi\ ;
+根菜類 < konsairui\ ;
+着席 < chakuseki\ ;
+定例会 < teireikai\ ;
+決闘状 < kettoujou\ ;
+蚕卵紙 < sanranshi\ ;
+外蒙古 < sotomouko\ ;
+辻札 < tsujifuda\ ;
+車両化 < sharyouka\ ;
+適切 < tekisetsu\ ;
+又従兄弟 < mataitoko\ ;
+発病 < hatsubyou\ ;
+感光性 < kankousei\ ;
+第一章 < daiisshou\ ;
+病識 < byoushiki\ ;
+創出 < soushutsu\ ;
+別室 < besshitsu\ ;
+臨界点 < rinkaiten\ ;
+商売気 < shoubaigi\ ;
+国憲法 < kokkenpou\ ;
+両陛下 < ryouheika\ ;
+限定版 < genteiban\ ;
+前車輪 < zensharin\ ;
+年嵩 < toshikasa\ ;
+羽毛布団 < umoufuton\ ;
+雄牛糞 < oushikuso\ ;
+不妊症 < funinshou\ ;
+変流器 < henryuuki\ ;
+初孫 < hatsumago\ ;
+出御 < shutsugyo\ ;
+針供養 < harikuyou\ ;
+微視的 < bishiteki\ ;
+監視塔 < kanshitou\ ;
+白玉 < shiratama\ ;
+占拠地 < senkyochi\ ;
+指向性 < shikousei\ ;
+一人用 < hitoriyou\ ;
+調馬場 < choubajou\ ;
+再輸入 < saiyunyuu\ ;
+綿津見 < watatsumi\ ;
+優良児 < yuuryouji\ ;
+浮動票 < fudouhyou\ ;
+先天性 < sentensei\ ;
+形成層 < keiseisou\ ;
+直撃 < chokugeki\ ;
+師範代 < shihandai\ ;
+年寄 < toshiyori\ ;
+休止符 < kyuushifu\ ;
+榎茸 < enokitake\ ;
+不面目 < fumenmoku\ ;
+船虫 < funamushi\ ;
+小糠雨 < konukaame\ ;
+本予算 < hon''yosan\ ;
+指南番 < shinanban\ ;
+自由業 < jiyuugyou\ ;
+禁輸品 < kin''yuhin\ ;
+司会者 < shikaisha\ ;
+投稿欄 < toukouran\ ;
+白熱 < hakunetsu\ ;
+極薄 < kyokuhaku\ ;
+白熊 < shirokuma\ ;
+挿話的 < souwateki\ ;
+割付 < waritsuke\ ;
+初夢 < hatsuyume\ ;
+道中記 < douchuuki\ ;
+半塩水 < han''ensui\ ;
+排他的 < haitateki\ ;
+大腸炎 < daichouen\ ;
+分室 < bunshitsu\ ;
+尼法師 < amahoushi\ ;
+定置網 < teichiami\ ;
+庶出 < shoshutsu\ ;
+入滅 < nyuumetsu\ ;
+芸能界 < geinoukai\ ;
+半濁音 < handakuon\ ;
+配管工 < haikankou\ ;
+割下 < warishita\ ;
+現代人 < gendaijin\ ;
+農漁民 < nougyomin\ ;
+市松 < ichimatsu\ ;
+女性学 < joseigaku\ ;
+乾燥地 < kansouchi\ ;
+分類法 < bunruihou\ ;
+利己主義 < rikoshugi\ ;
+石膏像 < sekkouzou\ ;
+影武者 < kagemusha\ ;
+活版本 < kappanbon\ ;
+仕事場 < shigotoba\ ;
+婦人服 < fujinfuku\ ;
+寝心地 < negokochi\ ;
+優男 < yasaotoko\ ;
+絵巻物 < emakimono\ ;
+不料簡 < furyouken\ ;
+化石層 < kasekisou\ ;
+晩餐会 < bansankai\ ;
+仕放題 < shihoudai\ ;
+案内状 < an''naijou\ ;
+多元的 < tagenteki\ ;
+制海権 < seikaiken\ ;
+交配種 < kouhaishu\ ;
+轢殺 < rekisatsu\ ;
+在住者 < zaijuusha\ ;
+成熟期 < seijukuki\ ;
+真実 < shinjitsu\ ;
+共和党 < kyouwatou\ ;
+平方根 < heihoukon\ ;
+諜報員 < chouhouin\ ;
+興奮剤 < koufunzai\ ;
+白滝 < shirataki\ ;
+先見者 < senkensha\ ;
+航空券 < koukuuken\ ;
+速口 < hayakuchi\ ;
+光電子 < koudenshi\ ;
+進入 < shin''nyuu\ ;
+儲物 < moukemono\ ;
+腰高 < koshidaka\ ;
+売国奴 < baikokudo\ ;
+繁分数 < hanbunsuu\ ;
+性行動 < seikoudou\ ;
+銀行券 < ginkouken\ ;
+橋桁 < hashigeta\ ;
+万万歳 < banbanzai\ ;
+骨質 < kosshitsu\ ;
+停船場 < teisenjou\ ;
+腰骨 < koshibone\ ;
+嘆願書 < tangansho\ ;
+再生産 < saiseisan\ ;
+地対地 < chitaichi\ ;
+修飾 < shuushoku\ ;
+文体論 < buntairon\ ;
+調査団 < chousadan\ ;
+白浪 < shiranami\ ;
+単行本 < tankoubon\ ;
+小夜曲 < sayokyoku\ ;
+出世間 < shusseken\ ;
+白浜 < shirahama\ ;
+艶種 < tsuyadane\ ;
+速力 < sokuryoku\ ;
+単行書 < tankousho\ ;
+一時間 < ichijikan\ ;
+温泉郷 < onsenkyou\ ;
+辻店 < tsujimise\ ;
+有名人 < yuumeijin\ ;
+後甲板 < koukanpan\ ;
+営利主義 < eirishugi\ ;
+弱体化 < jakutaika\ ;
+経済面 < keizaimen\ ;
+修験道 < shugendou\ ;
+茶所 < chadokoro\ ;
+往生際 < oujougiwa\ ;
+広口 < hirokuchi\ ;
+尺骨 < shakkotsu\ ;
+出塁 < shutsurui\ ;
+残存者 < zanzonsha\ ;
+航空便 < koukuubin\ ;
+核武装 < kakubusou\ ;
+目庇 < mabisashi\ ;
+白水 < shiromizu\ ;
+色神 < shikishin\ ;
+埋蔵金 < maizoukin\ ;
+孤立化 < koritsuka\ ;
+聖家族 < seikazoku\ ;
+泥炭地 < deitanchi\ ;
+外輪船 < gairinsen\ ;
+複利法 < fukurihou\ ;
+入植 < nyuushoku\ ;
+蒸留器 < jouryuuki\ ;
+鑑定書 < kanteisho\ ;
+製氷機 < seihyouki\ ;
+直属 < chokuzoku\ ;
+消費財 < shouhizai\ ;
+著作家 < chosakuka\ ;
+市販品 < shihanhin\ ;
+巻頭言 < kantougen\ ;
+凡失 < bonshitsu\ ;
+調理師 < chourishi\ ;
+六月 < rokugatsu\ ;
+真桑瓜 < makuwauri\ ;
+随従者 < zuijuusha\ ;
+一寸先 < issunsaki\ ;
+文学部 < bungakubu\ ;
+予約制 < yoyakusei\ ;
+線速度 < sensokudo\ ;
+平面形 < heimenkei\ ;
+複比例 < fukuhirei\ ;
+散水車 < sansuisha\ ;
+一時金 < ichijikin\ ;
+前年度 < zen''nendo\ ;
+無声映画 < museieiga\ ;
+入札 < nyuusatsu\ ;
+発行者 < hakkousha\ ;
+停留所 < teiryuujo\ ;
+宮城県 < miyagiken\ ;
+前前回 < zenzenkai\ ;
+燗徳利 < kandokuri\ ;
+死刑場 < shikeijou\ ;
+山道 < yamamichi\ ;
+巻子本 < kanshihon\ ;
+退出 < taishutsu\ ;
+楽節 < gakusetsu\ ;
+常夏 < tokonatsu\ ;
+町議会 < chougikai\ ;
+申達 < shintatsu\ ;
+人生観 < jinseikan\ ;
+真珠貝 < shinjugai\ ;
+若松 < wakamatsu\ ;
+局長 < kyokuchou\ ;
+鬼瓦 < onigawara\ ;
+帝室 < teishitsu\ ;
+京都市 < kyoutoshi\ ;
+雨台風 < ametaifuu\ ;
+自由形 < jiyuugata\ ;
+免許制 < menkyosei\ ;
+雑報欄 < zappouran\ ;
+愛党心 < aitoushin\ ;
+防止法 < boushihou\ ;
+補助漢字 < hojokanji\ ;
+床下 < yukashita\ ;
+選挙法 < senkyohou\ ;
+和英辞書 < waeijisho\ ;
+着信 < chakushin\ ;
+天井裏 < tenjouura\ ;
+半陰影 < han''in''ei\ ;
+最重点 < saijuuten\ ;
+一対一 < ittaiichi\ ;
+白札 < shirofuda\ ;
+切入 < setsunyuu\ ;
+標札 < hyousatsu\ ;
+出動 < shutsudou\ ;
+迫力 < hakuryoku\ ;
+屑鉄 < kuzutetsu\ ;
+髪綱 < kamidzuna\ ;
+選挙民 < senkyomin\ ;
+逐一 < chikuichi\ ;
+教唆者 < kyousasha\ ;
+料理人 < ryourinin\ ;
+自由席 < jiyuuseki\ ;
+月刊誌 < gekkanshi\ ;
+侵食 < shinshoku\ ;
+不熟練 < fujukuren\ ;
+古典的 < kotenteki\ ;
+花氷 < hanagoori\ ;
+俄雨 < niwakaame\ ;
+変死者 < henshisha\ ;
+本格化 < honkakuka\ ;
+仕上工 < shiagekou\ ;
+牡丹杏 < botankyou\ ;
+平方形 < heihoukei\ ;
+変化球 < henkakyuu\ ;
+遠隔視 < enkakushi\ ;
+茶室 < chashitsu\ ;
+雑記帳 < zakkichou\ ;
+在校生 < zaikousei\ ;
+白日 < hakujitsu\ ;
+侠骨 < kyoukotsu\ ;
+同位元素 < douigenso\ ;
+摩擦音 < masatsuon\ ;
+少食 < shoushoku\ ;
+巳年 < hebidoshi\ ;
+蛍烏賊 < hotaruika\ ;
+艶物 < tsuyamono\ ;
+再生法 < saiseihou\ ;
+多発機 < tahatsuki\ ;
+冷奴 < hiyayakko\ ;
+活版屋 < kappan''ya\ ;
+金剛手 < kongoushu\ ;
+被害額 < higaigaku\ ;
+再従兄弟 < futaitoko\ ;
+選挙権 < senkyoken\ ;
+基本給 < kihonkyuu\ ;
+非金属 < hikinzoku\ ;
+小頭 < kogashira\ ;
+猩猩緋 < shoujouhi\ ;
+回教徒 < kaikyouto\ ;
+指示先 < shijisaki\ ;
+備忘録 < bibouroku\ ;
+砂糖黍 < satoukibi\ ;
+案内書 < an''naisho\ ;
+功労金 < kouroukin\ ;
+被差別 < hisabetsu\ ;
+痘痕面 < abatazura\ ;
+朱文金 < shubunkin\ ;
+不謹慎 < fukinshin\ ;
+肝硬変 < kankouhen\ ;
+末期的 < makkiteki\ ;
+礼奉公 < reiboukou\ ;
+協技者 < kyougisha\ ;
+多足類 < tasokurui\ ;
+屈辱 < kutsujoku\ ;
+神秘性 < shinpisei\ ;
+沸騰点 < futtouten\ ;
+養魚池 < yougyochi\ ;
+魔法的 < mahouteki\ ;
+亜鉛凸版 < aentoppan\ ;
+製氷所 < seihyoujo\ ;
+関西弁 < kansaiben\ ;
+骨膜 < kotsumaku\ ;
+八千草 < yachigusa\ ;
+町角 < machikado\ ;
+辻君 < tsujigimi\ ;
+省力 < shouryoku\ ;
+鯉幟 < koinobori\ ;
+道交法 < doukouhou\ ;
+野菜汁 < yasaijiru\ ;
+斡旋料 < assenryou\ ;
+赤鰯 < akaiwashi\ ;
+航海士 < koukaishi\ ;
+浮動株 < fudoukabu\ ;
+骨肉 < kotsuniku\ ;
+内室 < naishitsu\ ;
+混交林 < konkourin\ ;
+模範囚 < mohanshuu\ ;
+川岸 < kawagishi\ ;
+講義録 < kougiroku\ ;
+幕下 < makushita\ ;
+目印 < mejirushi\ ;
+生存者 < seizonsha\ ;
+尻軽 < shirigaru\ ;
+不謬性 < fubyuusei\ ;
+導電性 < doudensei\ ;
+改革案 < kaikakuan\ ;
+磁気浮上 < jikifujou\ ;
+男衆 < otokoshuu\ ;
+法改正 < houkaisei\ ;
+生産性 < seisansei\ ;
+鰐口 < waniguchi\ ;
+上中下 < jouchuuge\ ;
+信越 < shin''etsu\ ;
+俊逸 < shun''itsu\ ;
+給水所 < kyuusuijo\ ;
+猜疑心 < saigishin\ ;
+不調法 < buchouhou\ ;
+属託 < shokutaku\ ;
+盲判 < mekuraban\ ;
+受動的 < judouteki\ ;
+調理台 < chouridai\ ;
+空閑地 < kuukanchi\ ;
+労働祭 < roudousai\ ;
+再来週 < saraishuu\ ;
+色沢 < shikitaku\ ;
+六尺 < rokushaku\ ;
+代表部 < daihyoubu\ ;
+僅少差 < kinshousa\ ;
+周期性 < shuukisei\ ;
+飛行服 < hikoufuku\ ;
+不特定 < futokutei\ ;
+表面化 < hyoumenka\ ;
+市有地 < shiyuuchi\ ;
+標準語 < hyoujungo\ ;
+辛口 < karakuchi\ ;
+水平面 < suiheimen\ ;
+交通路 < koutsuuro\ ;
+消費者 < shouhisha\ ;
+古道具 < furudougu\ ;
+基本的 < kihonteki\ ;
+草団子 < kusadango\ ;
+真珠色 < shinjuiro\ ;
+統帥権 < tousuiken\ ;
+色欲 < shikiyoku\ ;
+練習機 < renshuuki\ ;
+極熱 < gokunetsu\ ;
+跳虫 < tobimushi\ ;
+昇降舵 < shoukouda\ ;
+兵庫県 < hyougoken\ ;
+公海上 < koukaijou\ ;
+激戦区 < gekisenku\ ;
+儀礼的 < gireiteki\ ;
+有平糖 < aruheitou\ ;
+痛烈 < tsuuretsu\ ;
+交通費 < koutsuuhi\ ;
+臣節 < shinsetsu\ ;
+金魚草 < kingyosou\ ;
+着火点 < chakkaten\ ;
+選挙戦 < senkyosen\ ;
+骨箱 < kotsubako\ ;
+宗主権 < soushuken\ ;
+水酸根 < suisankon\ ;
+赤十字 < sekijuuji\ ;
+蓄音機 < chikuonki\ ;
+俗説 < zokusetsu\ ;
+自尊心 < jisonshin\ ;
+表記法 < hyoukihou\ ;
+露天商 < rotenshou\ ;
+休廷日 < kyuuteibi\ ;
+飲酒癖 < inshuheki\ ;
+一斉高 < isseidaka\ ;
+処刑台 < shokeidai\ ;
+冷房車 < reibousha\ ;
+検疫所 < ken''ekijo\ ;
+照度計 < shoudokei\ ;
+収税吏 < shuuzeiri\ ;
+喉自慢 < nodojiman\ ;
+金看板 < kinkanban\ ;
+散弾銃 < sandanjuu\ ;
+儲役 < moukeyaku\ ;
+培養液 < baiyoueki\ ;
+天狗風 < tengukaze\ ;
+一本杉 < ipponsugi\ ;
+測微計 < sokubikei\ ;
+風致林 < fuuchirin\ ;
+地理学 < chirigaku\ ;
+美食家 < bishokuka\ ;
+尿道炎 < nyoudouen\ ;
+螳螂拳 < tourouken\ ;
+調理人 < chourinin\ ;
+喫煙所 < kitsuenjo\ ;
+時分時 < jibundoki\ ;
+供述 < kyoujutsu\ ;
+八重桜 < yaezakura\ ;
+南蛮船 < nanbansen\ ;
+豌豆豆 < endoumame\ ;
+峻烈 < shunretsu\ ;
+男腹 < otokobara\ ;
+回数券 < kaisuuken\ ;
+製造者 < seizousha\ ;
+重役会 < juuyakkai\ ;
+北欧人 < hokuoujin\ ;
+一人子 < hitorikko\ ;
+極流 < kyokuryuu\ ;
+死生観 < shiseikan\ ;
+炭疽病 < tansobyou\ ;
+白地図 < hakuchizu\ ;
+略章 < ryakushou\ ;
+鼈甲色 < bekkouiro\ ;
+乗車券 < joushaken\ ;
+測程器 < sokuteiki\ ;
+円舞曲 < enbukyoku\ ;
+良日 < ryoujitsu\ ;
+消費税 < shouhizei\ ;
+壁一重 < kabehitoe\ ;
+四面体 < shimentai\ ;
+左前 < hidarimae\ ;
+在来線 < zairaisen\ ;
+大理石 < dairiseki\ ;
+生産地 < seisanchi\ ;
+対質 < taishitsu\ ;
+不法移民 < fuhouimin\ ;
+片田舎 < katainaka\ ;
+複写機 < fukushaki\ ;
+小説 < shousetsu\ ;
+風俗画 < fuuzokuga\ ;
+左党 < hidaritou\ ;
+脇道 < wakimichi\ ;
+側面図 < sokumenzu\ ;
+棹秤 < saobakari\ ;
+越権行為 < ekkenkoui\ ;
+言語学 < gengogaku\ ;
+巡航船 < junkousen\ ;
+原始林 < genshirin\ ;
+至上権 < shijouken\ ;
+小売商 < kourishou\ ;
+桜貝 < sakuragai\ ;
+統制品 < touseihin\ ;
+病没 < byoubotsu\ ;
+第一審 < daiisshin\ ;
+紅毛人 < koumoujin\ ;
+船橋 < funabashi\ ;
+謄写版 < toushaban\ ;
+控訴審 < kousoshin\ ;
+中古車 < chuukosha\ ;
+髪油 < kamiabura\ ;
+新紀元 < shinkigen\ ;
+練習所 < renshuujo\ ;
+立方根 < rippoukon\ ;
+短音階 < tan''onkai\ ;
+主意主義 < shuishugi\ ;
+宣誓書 < senseisho\ ;
+二拍子 < nibyoushi\ ;
+労農党 < rounoutou\ ;
+彼岸花 < higanbana\ ;
+忠魂碑 < chuukonhi\ ;
+有効性 < yuukousei\ ;
+三日月 < mikadzuki\ ;
+発振機 < hasshinki\ ;
+自己検査 < jikokensa\ ;
+総務庁 < soumuchou\ ;
+病欠 < byouketsu\ ;
+八切 < yatsugiri\ ;
+流行語 < ryuukougo\ ;
+内鮮人 < naisenjin\ ;
+入力 < nyuuryoku\ ;
+生理的 < seiriteki\ ;
+名誉慾 < meiyoyoku\ ;
+努力家 < doryokuka\ ;
+在来種 < zairaishu\ ;
+町筋 < machisuji\ ;
+多事多難 < tajitanan\ ;
+加硫法 < karyuuhou\ ;
+大家族 < daikazoku\ ;
+景教徒 < keikyouto\ ;
+ABC順 < ēbīshījun\ ;
+脂足 < aburaashi\ ;
+町立 < chouritsu\ ;
+高積雲 < kousekiun\ ;
+意気揚揚 < ikiyouyou\ ;
+乗船券 < jousenken\ ;
+脚註 < kyakuchuu\ ;
+再審査 < saishinsa\ ;
+用語集 < yougoshuu\ ;
+極月 < gokugetsu\ ;
+負傷者 < fushousha\ ;
+脂質 < shishitsu\ ;
+労働法 < roudouhou\ ;
+汎用機 < han''youki\ ;
+舟橋 < funahashi\ ;
+供血 < kyouketsu\ ;
+名誉心 < meiyoshin\ ;
+鑑定人 < kanteinin\ ;
+川下 < kawashimo\ ;
+投票日 < touhyoubi\ ;
+先行詞 < senkoushi\ ;
+独演会 < dokuenkai\ ;
+音韻学 < on''ingaku\ ;
+功労者 < kourousha\ ;
+実録 < jitsuroku\ ;
+脳細胞 < nousaibou\ ;
+美文調 < bibunchou\ ;
+明細書 < meisaisho\ ;
+男文字 < otokomoji\ ;
+和英辞典 < waeijiten\ ;
+総勘定 < soukanjou\ ;
+色弱 < shikijaku\ ;
+回覧板 < kairanban\ ;
+任命状 < ninmeijou\ ;
+発出 < hasshutsu\ ;
+上納金 < jounoukin\ ;
+拷問台 < goumondai\ ;
+腰縄 < koshinawa\ ;
+生節 < namabushi\ ;
+上奏文 < jousoubun\ ;
+自責点 < jisekiten\ ;
+足腰 < ashikoshi\ ;
+助監督 < jokantoku\ ;
+入仏 < nyuubutsu\ ;
+処生訓 < shoseikun\ ;
+入交 < irimajiri\ ;
+腰紐 < koshihimo\ ;
+本試験 < honshiken\ ;
+外信部 < gaishinbu\ ;
+修築 < shuuchiku\ ;
+一人前 < hitorimae\ ;
+労働権 < roudouken\ ;
+肉食 < nikushoku\ ;
+地球儀 < chikyuugi\ ;
+地上権 < chijouken\ ;
+信約 < shin''yaku\ ;
+金屏風 < kinbyoubu\ ;
+導電体 < doudentai\ ;
+共益費 < kyouekihi\ ;
+脱落 < datsuraku\ ;
+不意試験 < fuishiken\ ;
+馬鹿面 < bakadzura\ ;
+土用波 < doyounami\ ;
+総選挙 < sousenkyo\ ;
+制御盤 < seigyoban\ ;
+心意気 < kokoroiki\ ;
+模範試合 < mohanjiai\ ;
+重労働 < juuroudou\ ;
+手榴弾 < teryuudan\ ;
+一枚上 < ichimaiue\ ;
+天井灯 < tenjoutou\ ;
+養魚場 < yougyojou\ ;
+投票所 < touhyoujo\ ;
+輩出 < haishutsu\ ;
+座標系 < zahyoukei\ ;
+円借款 < enshakkan\ ;
+絶対論 < zettairon\ ;
+捕虫網 < hochuuami\ ;
+出来星 < dekiboshi\ ;
+二重母音 < nijuuboin\ ;
+花柳界 < karyuukai\ ;
+公民権 < kouminken\ ;
+如何許 < ikabakari\ ;
+清教徒 < seikyouto\ ;
+紫外線 < shigaisen\ ;
+修祓 < shuufutsu\ ;
+同好会 < doukoukai\ ;
+洗車場 < senshajou\ ;
+展望車 < tenbousha\ ;
+学閥 < gakubatsu\ ;
+暗号帳 < angouchou\ ;
+位負 < kuraimake\ ;
+苗代 < nawashiro\ ;
+山男 < yamaotoko\ ;
+幌馬車 < horobasha\ ;
+大企業 < daikigyou\ ;
+売笑婦 < baishoufu\ ;
+採点者 < saitensha\ ;
+栄耀栄華 < eiyoueiga\ ;
+間隙比 < kangekihi\ ;
+壮行会 < soukoukai\ ;
+再生品 < saiseihin\ ;
+公社債 < koushasai\ ;
+桜草 < sakurasou\ ;
+客足 < kyakuashi\ ;
+属目 < shokumoku\ ;
+未来学 < miraigaku\ ;
+俗筆 < zokuhitsu\ ;
+末始終 < sueshijuu\ ;
+償却 < shoukyaku\ ;
+潜水艦 < sensuikan\ ;
+水道管 < suidoukan\ ;
+母語話者 < bogowasha\ ;
+天理教 < tenrikyou\ ;
+楽律 < gakuritsu\ ;
+桜色 < sakurairo\ ;
+予想高 < yosoudaka\ ;
+手柄顔 < tegaragao\ ;
+手芸品 < shugeihin\ ;
+平衡錘 < heikousui\ ;
+抗毒素 < koudokuso\ ;
+小羊 < kohitsuji\ ;
+大豆粕 < daizukasu\ ;
+研究費 < kenkyuuhi\ ;
+実質 < jisshitsu\ ;
+知能犯 < chinouhan\ ;
+選手権 < senshuken\ ;
+麝香鹿 < jakoujika\ ;
+海岸線 < kaigansen\ ;
+貿易港 < bouekikou\ ;
+暦年度 < rekinendo\ ;
+天宮図 < tenkyuuzu\ ;
+有権者 < yuukensha\ ;
+体裁上 < teisaijou\ ;
+伊達男 < dateotoko\ ;
+休刊日 < kyuukanbi\ ;
+肘鉄 < hijitetsu\ ;
+賃餅 < chinmochi\ ;
+古典学 < kotengaku\ ;
+宝貝 < takaragai\ ;
+軽口 < karukuchi\ ;
+改訂版 < kaiteiban\ ;
+生存権 < seizonken\ ;
+超脱 < choudatsu\ ;
+該問題 < gaimondai\ ;
+暗号学 < angougaku\ ;
+代行者 < daikousha\ ;
+男物 < otokomono\ ;
+八千歳 < yachitose\ ;
+口真似 < kuchimane\ ;
+出版部 < shuppanbu\ ;
+職長 < shokuchou\ ;
+観測所 < kansokujo\ ;
+経済界 < keizaikai\ ;
+不熱心 < funesshin\ ;
+公法人 < kouhoujin\ ;
+休眠期 < kyuuminki\ ;
+副総理 < fukusouri\ ;
+伴奏者 < bansousha\ ;
+対談者 < taidansha\ ;
+貿易法 < bouekihou\ ;
+園遊会 < en''yuukai\ ;
+賛成者 < sanseisha\ ;
+仏顔 < hotokegao\ ;
+芸能人 < geinoujin\ ;
+分譲地 < bunjouchi\ ;
+屈光性 < kukkousei\ ;
+真珠湾 < shinjuwan\ ;
+仏領 < futsuryou\ ;
+交通禍 < koutsuuka\ ;
+拝火教 < haikakyou\ ;
+箇条書 < kajougaki\ ;
+略歴 < ryakureki\ ;
+選挙人 < senkyonin\ ;
+酪農家 < rakunouka\ ;
+工芸品 < kougeihin\ ;
+未来型 < miraigata\ ;
+弁鰓類 < bensairui\ ;
+無資格 < mushikaku\ ;
+任命権 < ninmeiken\ ;
+虫垂炎 < chuusuien\ ;
+骨柄 < kotsugara\ ;
+木戸御免 < kidogomen\ ;
+破落戸 < gorotsuki\ ;
+緩下薬 < kangeyaku\ ;
+有機的 < yuukiteki\ ;
+赤色 < sekishoku\ ;
+正反対 < seihantai\ ;
+尻癖 < shirikuse\ ;
+青海原 < aounabara\ ;
+凹面鏡 < oumenkyou\ ;
+報道陣 < houdoujin\ ;
+極小 < kyokushou\ ;
+劣勢感 < resseikan\ ;
+自己疎外 < jikosogai\ ;
+俵物 < hyoumotsu\ ;
+御料地 < goryouchi\ ;
+生爪 < namadzume\ ;
+松風 < matsukaze\ ;
+計算者 < keisansha\ ;
+無駄口 < mudaguchi\ ;
+李承晩 < rishouban\ ;
+超絶 < chouzetsu\ ;
+船室 < senshitsu\ ;
+福音書 < fukuinsho\ ;
+八卦掌 < hakkeshou\ ;
+自主的 < jishuteki\ ;
+進歩党 < shinpotou\ ;
+相反性 < souhansei\ ;
+能動態 < noudoutai\ ;
+司令官 < shireikan\ ;
+地震計 < jishinkei\ ;
+紙一重 < kamihitoe\ ;
+水加減 < mizukagen\ ;
+出版費 < shuppanhi\ ;
+果報者 < kahoumono\ ;
+成長期 < seichouki\ ;
+腺熱 < sen''netsu\ ;
+浄土教 < joudokyou\ ;
+束髪 < sokuhatsu\ ;
+転出 < tenshutsu\ ;
+天井板 < tenjouita\ ;
+集塵機 < shuujinki\ ;
+凌波性 < ryouhasei\ ;
+快男子 < kaidanshi\ ;
+天狗茸 < tengutake\ ;
+狙撃兵 < sogekihei\ ;
+外輪山 < gairinzan\ ;
+昇降機 < shoukouki\ ;
+基礎控除 < kisokoujo\ ;
+島島 < shimajima\ ;
+放火狂 < houkakyou\ ;
+風馬牛 < fuubagyuu\ ;
+陶器商 < toukishou\ ;
+略服 < ryakufuku\ ;
+三塁線 < sanruisen\ ;
+島山 < shimayama\ ;
+道義心 < dougishin\ ;
+超時空 < choujikuu\ ;
+微粒子 < biryuushi\ ;
+水平線 < suiheisen\ ;
+再尋問 < saijinmon\ ;
+鬱勃 < utsubotsu\ ;
+東雲 < shinonome\ ;
+生滅 < shoumetsu\ ;
+清掃車 < seisousha\ ;
+俗物 < zokubutsu\ ;
+脱硫 < datsuryuu\ ;
+脈絡 < myakuraku\ ;
+一定温度 < itteiondo\ ;
+最前線 < saizensen\ ;
+絶対者 < zettaisha\ ;
+正確度 < seikakudo\ ;
+氷削機 < hyousakki\ ;
+分解能 < bunkainou\ ;
+四角形 < shikakkei\ ;
+宣言書 < sengensho\ ;
+司令塔 < shireitou\ ;
+学識 < gakushiki\ ;
+立太子 < rittaishi\ ;
+有蹄類 < yuuteirui\ ;
+使用者 < shiyousha\ ;
+侵略 < shinryaku\ ;
+天上界 < tenjoukai\ ;
+青海亀 < aoumigame\ ;
+来遊者 < raiyuusha\ ;
+巨人軍 < kyojingun\ ;
+学部生 < gakubusei\ ;
+工学部 < kougakubu\ ;
+教科書 < kyoukasho\ ;
+経済法 < keizaihou\ ;
+破傷風 < hashoufuu\ ;
+職責 < shokuseki\ ;
+持参人 < jisan''nin\ ;
+総督府 < soutokufu\ ;
+日本髪 < nihongami\ ;
+艶事 < tsuyagoto\ ;
+制御棒 < seigyobou\ ;
+検案書 < ken''ansho\ ;
+玉鴫 < tamashigi\ ;
+歩道橋 < hodoukyou\ ;
+地方紙 < chihoushi\ ;
+日傭取 < hiyoutori\ ;
+地獄変 < jigokuhen\ ;
+合奏団 < gassoudan\ ;
+瓦版 < kawaraban\ ;
+天井扇 < tenjousen\ ;
+傷口 < kizuguchi\ ;
+全反射 < zenhansha\ ;
+密約 < mitsuyaku\ ;
+変速機 < hensokuki\ ;
+無理式 < murishiki\ ;
+軽労働 < keiroudou\ ;
+学術 < gakujutsu\ ;
+正反合 < seihangou\ ;
+経済欄 < keizairan\ ;
+軒下 < nokishita\ ;
+車代 < kurumadai\ ;
+借料 < shakuryou\ ;
+生字引 < ikijibiki\ ;
+投票区 < touhyouku\ ;
+人達 < hitotachi\ ;
+木曜日 < mokuyoubi\ ;
+出木年 < dekidoshi\ ;
+候文 < souroubun\ ;
+碓氷峠 < usuitouge\ ;
+寺男 < teraotoko\ ;
+加入金 < kanyuukin\ ;
+民間人 < minkanjin\ ;
+公募株 < koubokabu\ ;
+極北 < kyokuhoku\ ;
+乗馬服 < joubafuku\ ;
+脱獄 < datsugoku\ ;
+日本領 < nihonryou\ ;
+著書名 < choshomei\ ;
+経営学 < keieigaku\ ;
+白鉛鉱 < hakuenkou\ ;
+町方 < machikata\ ;
+粗目糖 < zarametou\ ;
+手前味噌 < temaemiso\ ;
+内玄関 < naigenkan\ ;
+地方税 < chihouzei\ ;
+高坏 < takatsuki\ ;
+巡査長 < junsachou\ ;
+印刷機 < insatsuki\ ;
+凍死者 < toushisha\ ;
+白銅貨 < hakudouka\ ;
+貸賃 < kashichin\ ;
+原始人 < genshijin\ ;
+加工賃 < kakouchin\ ;
+允文允武 < inbuninbu\ ;
+竹輪麩 < chikuwafu\ ;
+一方的 < ippouteki\ ;
+出仕事 < deshigoto\ ;
+正念場 < shounenba\ ;
+倉敷 < kurashiki\ ;
+乞食 < kotsujiki\ ;
+柔道場 < juudoujou\ ;
+脊髄炎 < sekizuien\ ;
+二重釜 < nijuugama\ ;
+立方体 < rippoutai\ ;
+伸縮 < shinshuku\ ;
+遠隔性 < enkakusei\ ;
+軽歌劇 < keikageki\ ;
+制動灯 < seidoutou\ ;
+催眠剤 < saiminzai\ ;
+今一度 < imaichido\ ;
+攻防戦 < koubousen\ ;
+浄土宗 < joudoshuu\ ;
+操縦桿 < soujuukan\ ;
+文明館 < bunmeikan\ ;
+導関数 < doukansuu\ ;
+滞在地 < taizaichi\ ;
+人質 < hitojichi\ ;
+朝食 < choushoku\ ;
+上納米 < jounoumai\ ;
+宇宙服 < uchuufuku\ ;
+利口者 < rikoumono\ ;
+方法論 < houhouron\ ;
+蓋然性 < gaizensei\ ;
+半製品 < hanseihin\ ;
+峻別 < shunbetsu\ ;
+一場面 < ichibamen\ ;
+石版画 < sekibanga\ ;
+登録簿 < tourokubo\ ;
+自暴自棄 < jiboujiki\ ;
+一昨晩 < issakuban\ ;
+届書 < todokesho\ ;
+客筋 < kyakusuji\ ;
+多極化 < takyokuka\ ;
+大一番 < ooichiban\ ;
+衛星国 < eiseikoku\ ;
+相撲部屋 < sumoubeya\ ;
+服飾 < fukushoku\ ;
+傑出 < kesshutsu\ ;
+休職 < kyuushoku\ ;
+下級生 < kakyuusei\ ;
+標準時 < hyoujunji\ ;
+二道 < futamichi\ ;
+高齢者 < koureisha\ ;
+一丁前 < itchoumae\ ;
+船主 < funanushi\ ;
+食通 < shokutsuu\ ;
+横恋慕 < yokorenbo\ ;
+財産税 < zaisanzei\ ;
+自己保存 < jikohozon\ ;
+二重身 < nijuushin\ ;
+客種 < kyakudane\ ;
+賊虐 < zokugyaku\ ;
+生理学 < seirigaku\ ;
+熱器具 < netsukigu\ ;
+寒冷紗 < kanreisha\ ;
+水道栓 < suidousen\ ;
+探索木 < tansakugi\ ;
+研究科 < kenkyuuka\ ;
+乳鉢 < nyuubachi\ ;
+月額 < getsugaku\ ;
+実施例 < jisshirei\ ;
+長音階 < chouonkai\ ;
+不評判 < fuhyouban\ ;
+月頃 < tsukigoro\ ;
+選手団 < senshudan\ ;
+作男 < sakuotoko\ ;
+多事多端 < tajitatan\ ;
+功利的 < kouriteki\ ;
+天球儀 < tenkyuugi\ ;
+男役 < otokoyaku\ ;
+真珠層 < shinjusou\ ;
+平均点 < heikinten\ ;
+上鶲 < joubitaki\ ;
+腕枕 < udemakura\ ;
+連合会 < rengoukai\ ;
+工業化 < kougyouka\ ;
+赤道儀 < sekidougi\ ;
+赤熱 < sekinetsu\ ;
+文学座 < bungakuza\ ;
+曖昧模糊 < aimaimoko\ ;
+舌先 < shitasaki\ ;
+労働党 < roudoutou\ ;
+腹持 < haramochi\ ;
+経済戦 < keizaisen\ ;
+珍説 < chinsetsu\ ;
+米空軍 < beikuugun\ ;
+敷居置 < shikiichi\ ;
+付落 < tsukeochi\ ;
+配当金 < haitoukin\ ;
+腰掛 < koshikake\ ;
+久闊 < kyuukatsu\ ;
+飛蚊症 < hibunshou\ ;
+密猟 < mitsuryou\ ;
+赤痢菌 < sekirikin\ ;
+五十肩 < gojuukata\ ;
+高等官 < koutoukan\ ;
+地方版 < chihouban\ ;
+申年 < sarudoshi\ ;
+材質 < zaishitsu\ ;
+片脳油 < hen''nouyu\ ;
+松蝉 < matsuzemi\ ;
+事務次官 < jimujikan\ ;
+奉行所 < bugyousho\ ;
+肯定文 < kouteibun\ ;
+京表 < kyouomote\ ;
+芳香剤 < houkouzai\ ;
+火災流 < kasairyuu\ ;
+印刷所 < insatsujo\ ;
+梅暦 < umegoyomi\ ;
+大聖堂 < daiseidou\ ;
+経済性 < keizaisei\ ;
+蛇紋石 < jamonseki\ ;
+流行歌 < ryuukouka\ ;
+作物 < sakumotsu\ ;
+賞罰 < shoubatsu\ ;
+三角洲 < sankakusu\ ;
+室町 < muromachi\ ;
+三文判 < sanmonban\ ;
+三角波 < sankakuha\ ;
+実際性 < jissaisei\ ;
+竹矢来 < takeyarai\ ;
+平行線 < heikousen\ ;
+葱坊主 < negibouzu\ ;
+孫弟子 < magodeshi\ ;
+容積比 < yousekihi\ ;
+主眼点 < shuganten\ ;
+遠隔地 < enkakuchi\ ;
+三角比 < sankakuhi\ ;
+小曲 < shoukyoku\ ;
+長時間 < choujikan\ ;
+半端者 < hanpamono\ ;
+独禁法 < dokkinhou\ ;
+広告費 < koukokuhi\ ;
+検出 < kenshutsu\ ;
+最優遇 < saiyuuguu\ ;
+台風眼 < taifuugan\ ;
+未教育 < mikyouiku\ ;
+俊抜 < shunbatsu\ ;
+裁断師 < saidanshi\ ;
+肉筆 < nikuhitsu\ ;
+全単射 < zentansha\ ;
+腰弱 < koshiyowa\ ;
+効果的 < koukateki\ ;
+空手形 < kuutegata\ ;
+印刻師 < inkokushi\ ;
+胆玉 < kimottama\ ;
+青年輩 < seinenhai\ ;
+割烹店 < kappouten\ ;
+松茸 < matsutake\ ;
+貿易品 < bouekihin\ ;
+削岩機 < sakuganki\ ;
+桜桃 < sakuranbo\ ;
+寂滅 < jakumetsu\ ;
+本質 < honshitsu\ ;
+完了後 < kanryougo\ ;
+大上段 < daijoudan\ ;
+園芸学 < engeigaku\ ;
+指相撲 < yubizumou\ ;
+気宇広大 < kiukoudai\ ;
+肩甲帯 < kenkoutai\ ;
+正当性 < seitousei\ ;
+産室 < sanshitsu\ ;
+砂糖水 < satoumizu\ ;
+方錐形 < housuikei\ ;
+相当数 < soutousuu\ ;
+腰布 < koshinuno\ ;
+腰巻 < koshimaki\ ;
+佃煮 < tsukudani\ ;
+醸造酒 < jouzoushu\ ;
+左中間 < sachuukan\ ;
+伝令者 < denreisha\ ;
+木綿針 < momenbari\ ;
+桁橋 < ketabashi\ ;
+木版画 < mokuhanga\ ;
+検査役 < kensayaku\ ;
+忘年会 < bounenkai\ ;
+宇宙学 < uchuugaku\ ;
+朴訥 < bokutotsu\ ;
+食虫 < shokuchuu\ ;
+真理値 < shinrichi\ ;
+配水管 < haisuikan\ ;
+太陽風 < taiyoufuu\ ;
+松脂 < matsuyani\ ;
+七難 < shichinan\ ;
+使用法 < shiyouhou\ ;
+印刷屋 < insatsuya\ ;
+音声学 < onseigaku\ ;
+伊達女 < dateon''na\ ;
+男坂 < otokozaka\ ;
+宿泊 < shukuhaku\ ;
+伯爵 < hakushaku\ ;
+梓弓 < azusayumi\ ;
+副詞句 < fukushiku\ ;
+実数体 < jissuutai\ ;
+多数意見 < tasuuiken\ ;
+餅肌 < mochihada\ ;
+裏長屋 < uranagaya\ ;
+東工大 < toukoudai\ ;
+居室 < kyoshitsu\ ;
+額際 < hitaigiwa\ ;
+留別 < ryuubetsu\ ;
+歯科医師 < shikaishi\ ;
+花時計 < hanadokei\ ;
+製造品 < seizouhin\ ;
+計算書 < keisansho\ ;
+制動手 < seidoushu\ ;
+不規律 < fukiritsu\ ;
+口腔癌 < koukougan\ ;
+回答者 < kaitousha\ ;
+単従陣 < tanjuujin\ ;
+反英雄 < han''eiyuu\ ;
+主権者 < shukensha\ ;
+大本山 < daihonzan\ ;
+中和剤 < chuuwazai\ ;
+慈善箱 < jizenbako\ ;
+最左翼 < saisayoku\ ;
+三角旗 < sankakuki\ ;
+美化運動 < bikaundou\ ;
+加入者 < kanyuusha\ ;
+裾模様 < susomoyou\ ;
+一隻眼 < issekigan\ ;
+使用権 < shiyouken\ ;
+近体詩 < kintaishi\ ;
+天狼星 < tenrousei\ ;
+贈物 < okurimono\ ;
+再犯者 < saihansha\ ;
+哨戒機 < shoukaiki\ ;
+通過駅 < tsuukaeki\ ;
+大人共 < otonadomo\ ;
+駐日 < chuunichi\ ;
+苦心談 < kushindan\ ;
+操縦士 < soujuushi\ ;
+真珠光 < shinjukou\ ;
+柿渋 < kakishibu\ ;
+速度計 < sokudokei\ ;
+無責任 < musekinin\ ;
+播但線 < bantansen\ ;
+聖誕祭 < seitansai\ ;
+無一文 < muichimon\ ;
+常分数 < joubunsuu\ ;
+下金 < shitagane\ ;
+中越 < chuugoshi\ ;
+再考慮 < saikouryo\ ;
+儀典長 < gitenchou\ ;
+工学科 < kougakuka\ ;
+自己主義 < jikoshugi\ ;
+媒質 < baishitsu\ ;
+交歓会 < koukankai\ ;
+天象儀 < tenshougi\ ;
+乾草 < hoshigusa\ ;
+琴爪 < kotodzume\ ;
+腰垣 < koshigaki\ ;
+引用文 < in''youbun\ ;
+係官 < kakarikan\ ;
+荒法師 < arahoushi\ ;
+脈搏 < myakuhaku\ ;
+玉虫 < tamamushi\ ;
+生唾 < namatsuba\ ;
+実行委員 < jikkouiin\ ;
+療養費 < ryouyouhi\ ;
+機関長 < kikanchou\ ;
+向地性 < kouchisei\ ;
+凱旋門 < gaisenmon\ ;
+食肉 < shokuniku\ ;
+設備費 < setsubihi\ ;
+松笠 < matsukasa\ ;
+裁縫師 < saihoushi\ ;
+財産権 < zaisanken\ ;
+投石機 < tousekiki\ ;
+愛校心 < aikoushin\ ;
+伏魔殿 < fukumaden\ ;
+茶器組 < chakigumi\ ;
+三塁手 < sanruishu\ ;
+七道 < shichidou\ ;
+虚無的 < kyomuteki\ ;
+申入 < moushiire\ ;
+伝導性 < dendousei\ ;
+客様 < kyakusama\ ;
+文字列 < mojiretsu\ ;
+反芻類 < hansuurui\ ;
+定型詩 < teikeishi\ ;
+水菓子 < mizugashi\ ;
+借主 < karinushi\ ;
+黍団子 < kibidango\ ;
+軟口蓋 < nankougai\ ;
+乾肉 < hoshiniku\ ;
+闇相場 < yamisouba\ ;
+宿料 < shukuryou\ ;
+実業 < jitsugyou\ ;
+合気道家 < aikidouka\ ;
+宿敵 < shukuteki\ ;
+宇宙博 < uchuuhaku\ ;
+七輪 < shichirin\ ;
+産出 < sanshutsu\ ;
+芥子菜 < karashina\ ;
+珍道具 < chindougu\ ;
+何日 < nan''nichi\ ;
+質点 < shitsuten\ ;
+黄表紙 < kibyoushi\ ;
+脳室 < noushitsu\ ;
+従姉妹 < juushimai\ ;
+山伏 < yamabushi\ ;
+子福者 < kobukusha\ ;
+思想界 < shisoukai\ ;
+民衆化 < minshuuka\ ;
+鈍黄色 < nibukiiro\ ;
+実株 < jitsukabu\ ;
+三角形 < sankakkei\ ;
+侵奪 < shindatsu\ ;
+大本営 < daihon''ei\ ;
+猛特訓 < moutokkun\ ;
+町中 < machinaka\ ;
+町並 < machinami\ ;
+予告編 < yokokuhen\ ;
+冷湿布 < reishippu\ ;
+標準化 < hyoujunka\ ;
+上質 < joushitsu\ ;
+下貼 < shitabari\ ;
+食紅 < shokubeni\ ;
+南蛮人 < nanbanjin\ ;
+更衣 < koromogae\ ;
+食糧 < shokuryou\ ;
+田園詩 < den''enshi\ ;
+中表 < nakaomote\ ;
+三角座 < sankakuza\ ;
+小姑 < kojuutome\ ;
+再試験 < saishiken\ ;
+栃木 < tochinoki\ ;
+寒帯林 < kantairin\ ;
+脂性 < aburashou\ ;
+倉主 < kuranushi\ ;
+傾斜面 < keishamen\ ;
+死亡者 < shibousha\ ;
+七賢 < shichiken\ ;
+遺族扶助 < izokufujo\ ;
+娑羅双樹 < sarasouju\ ;
+三角帆 < sankakuho\ ;
+尻取 < shiritori\ ;
+婚姻法 < kon''inhou\ ;
+二重窓 < nijuumado\ ;
+自然類 < shizenrui\ ;
+専売品 < senbaihin\ ;
+格式 < kakushiki\ ;
+不統一 < futouitsu\ ;
+昼鳶 < hirutonbi\ ;
+夜会服 < yakaifuku\ ;
+亮直 < ryouchoku\ ;
+暢達 < choutatsu\ ;
+党派心 < touhashin\ ;
+思想犯 < shisouhan\ ;
+腰元 < koshimoto\ ;
+脇差 < wakizashi\ ;
+弁当代 < bentoudai\ ;
+杉箸 < sugibashi\ ;
+肝臓癌 < kanzougan\ ;
+付焼 < tsukeyaki\ ;
+経済人 < keizaijin\ ;
+仏教徒 < bukkyouto\ ;
+米海軍 < beikaigun\ ;
+含油層 < gan''yusou\ ;
+情報誌 < jouhoushi\ ;
+学殖 < gakushoku\ ;
+凱旋軍 < gaisengun\ ;
+融解点 < yuukaiten\ ;
+淋巴球 < rinpakyuu\ ;
+嫌煙権 < ken''enken\ ;
+夫婦仲 < fuufunaka\ ;
+感染原 < kansengen\ ;
+迎賓館 < geihinkan\ ;
+株式 < kabushiki\ ;
+評議会 < hyougikai\ ;
+好男子 < koudanshi\ ;
+早春賦 < soushunfu\ ;
+柏槙 < byakushin\ ;
+喉頭癌 < koutougan\ ;
+独酌 < dokushaku\ ;
+寝業師 < newazashi\ ;
+人格化 < jinkakuka\ ;
+寅年 < toradoshi\ ;
+綺麗事 < kireigoto\ ;
+記名株 < kimeikabu\ ;
+携帯品 < keitaihin\ ;
+駐屯所 < chuutonjo\ ;
+研究所 < kenkyuujo\ ;
+最先端 < saisentan\ ;
+居住者 < kyojuusha\ ;
+誇張法 < kochouhou\ ;
+小咄 < kobanashi\ ;
+丸腰 < marugoshi\ ;
+昼飯 < hirumeshi\ ;
+視覚化 < shikakuka\ ;
+伐木 < batsuboku\ ;
+俊傑 < shunketsu\ ;
+中華街 < chuukagai\ ;
+職歴 < shokureki\ ;
+連判状 < renbanjou\ ;
+麝香猫 < jakouneko\ ;
+変光星 < henkousei\ ;
+審査官 < shinsakan\ ;
+多用中 < tayouchuu\ ;
+早東戦 < soutousen\ ;
+黙秘権 < mokuhiken\ ;
+冒険談 < boukendan\ ;
+常備薬 < joubiyaku\ ;
+架橋 < kakehashi\ ;
+妊婦服 < ninpufuku\ ;
+柏木 < kashiwagi\ ;
+体重計 < taijuukei\ ;
+警官隊 < keikantai\ ;
+仮橋 < karibashi\ ;
+講談社 < koudansha\ ;
+豆粒 < mametsubu\ ;
+休日 < kyuujitsu\ ;
+上薬 < uwagusuri\ ;
+近代詩 < kindaishi\ ;
+煙草銭 < tabakosen\ ;
+間投詞 < kantoushi\ ;
+答弁者 < toubensha\ ;
+平行棒 < heikoubou\ ;
+蟻地獄 < arijigoku\ ;
+密室 < misshitsu\ ;
+扁桃腺 < hentousen\ ;
+公判廷 < kouhantei\ ;
+玉章 < gyokushou\ ;
+数億年 < suuokunen\ ;
+盆灯籠 < bondourou\ ;
+宿将 < shukushou\ ;
+終戦後 < shuusengo\ ;
+将卒 < shousotsu\ ;
+両舌 < ryouzetsu\ ;
+編集部 < henshuubu\ ;
+周囲長 < shuuichou\ ;
+公選制 < kousensei\ ;
+職業 < shokugyou\ ;
+修理工 < shuurikou\ ;
+最適化 < saitekika\ ;
+化学者 < kagakusha\ ;
+導出 < doushutsu\ ;
+贈賄罪 < zouwaizai\ ;
+宿学 < shukugaku\ ;
+不承認 < fushounin\ ;
+五重唱 < gojuushou\ ;
+小冊 < shousatsu\ ;
+自己顕示 < jikokenji\ ;
+年齢順 < nenreijun\ ;
+賭博場 < tobakujou\ ;
+両脚 < ryoukyaku\ ;
+看守者 < kanshusha\ ;
+脱出 < dasshutsu\ ;
+客席 < kyakuseki\ ;
+弱電器 < jakudenki\ ;
+下草 < shitakusa\ ;
+日本的 < nihonteki\ ;
+射出 < shashutsu\ ;
+開墾地 < kaikonchi\ ;
+暦術 < rekijutsu\ ;
+禁猟期 < kinryouki\ ;
+赤土 < akatsuchi\ ;
+前額部 < zengakubu\ ;
+評論家 < hyouronka\ ;
+自己負担 < jikofutan\ ;
+一斉安 < isseiyasu\ ;
+露天風呂 < rotenburo\ ;
+一親等 < isshintou\ ;
+再放送 < saihousou\ ;
+化学線 < kagakusen\ ;
+戦死者 < senshisha\ ;
+一文字 < ichimonji\ ;
+意気投合 < ikitougou\ ;
+文士連 < bunshiren\ ;
+木綿糸 < momen''ito\ ;
+焦電気 < shoudenki\ ;
+授与式 < juyoshiki\ ;
+目分量 < mebunryou\ ;
+天下一 < tenkaichi\ ;
+中古品 < chuukohin\ ;
+中絶 < chuuzetsu\ ;
+市場性 < shijousei\ ;
+中性塩 < chuuseien\ ;
+下腹 < shitabara\ ;
+脱俗 < datsuzoku\ ;
+文語調 < bungochou\ ;
+散兵線 < sanpeisen\ ;
+流行児 < ryuukouji\ ;
+腹時計 < haradokei\ ;
+布袋腹 < hoteibara\ ;
+無教育 < mukyouiku\ ;
+柏手 < kashiwade\ ;
+教区民 < kyoukumin\ ;
+地震帯 < jishintai\ ;
+長期戦 < choukisen\ ;
+通知簿 < tsuuchibo\ ;
+乾物 < hoshimono\ ;
+実学 < jitsugaku\ ;
+加工業 < kakougyou\ ;
+不行状 < fugyoujou\ ;
+桟俵 < sandawara\ ;
+胡麻油 < gomaabura\ ;
+日本猿 < nihonzaru\ ;
+猟色 < ryoushoku\ ;
+旧世界 < kyuusekai\ ;
+一脈 < ichimyaku\ ;
+水平動 < suiheidou\ ;
+赤口 < sekiguchi\ ;
+短大生 < tandaisei\ ;
+肖像画 < shouzouga\ ;
+一角獣 < ikkakujuu\ ;
+可変長 < kahenchou\ ;
+一要素 < ichiyouso\ ;
+児童劇 < jidougeki\ ;
+中立 < chuuritsu\ ;
+埋葬地 < maisouchi\ ;
+上製本 < jouseibon\ ;
+両性花 < ryouseika\ ;
+実行者 < jikkousha\ ;
+職掌 < shokushou\ ;
+傾斜計 < keishakei\ ;
+室外 < shitsugai\ ;
+犯罪者 < hanzaisha\ ;
+寒卵 < kantamago\ ;
+絶交状 < zekkoujou\ ;
+外来者 < gairaisha\ ;
+伝導体 < dendoutai\ ;
+質感 < shitsukan\ ;
+格別 < kakubetsu\ ;
+核力 < kakuryoku\ ;
+斜滑降 < shakakkou\ ;
+常平倉 < jouheisou\ ;
+主催者 < shusaisha\ ;
+柔軟性 < juunansei\ ;
+分担金 < buntankin\ ;
+冷蔵車 < reizousha\ ;
+最高裁 < saikousai\ ;
+両端 < ryouhashi\ ;
+加入権 < kanyuuken\ ;
+両立 < ryouritsu\ ;
+前住所 < zenjuusho\ ;
+展望塔 < tenboutou\ ;
+過敏症 < kabinshou\ ;
+人頭税 < nintouzei\ ;
+舞台劇 < butaigeki\ ;
+下紐 < shitahimo\ ;
+平均値 < heikinchi\ ;
+今日 < kon''nichi\ ;
+格子面 < koushimen\ ;
+早飯 < hayameshi\ ;
+水茶屋 < mizuchaya\ ;
+情報網 < jouhoumou\ ;
+巴旦杏 < hatankyou\ ;
+貸方 < kashikata\ ;
+審美眼 < shinbigan\ ;
+自然観 < shizenkan\ ;
+運否天賦 < unputenpu\ ;
+富栄養化 < fueiyouka\ ;
+脂肪酸 < shibousan\ ;
+門外漢 < mongaikan\ ;
+乾湿 < kanshitsu\ ;
+抗菌性 < koukinsei\ ;
+額縁 < gakubuchi\ ;
+伝染性 < densensei\ ;
+印度支那 < indoshina\ ;
+未組織 < misoshiki\ ;
+欧化主義 < oukashugi\ ;
+水様液 < suiyoueki\ ;
+救助隊 < kyuujotai\ ;
+無二無三 < munimuzan\ ;
+保存量 < hozonryou\ ;
+三日三夜 < mikkamiyo\ ;
+牡丹海老 < botan''ebi\ ;
+核兵器 < kakuheiki\ ;
+不満足 < fumanzoku\ ;
+長談議 < nagadangi\ ;
+冒険者 < boukensha\ ;
+一粒 < hitotsubu\ ;
+嫡流 < chakuryuu\ ;
+曲目 < kyokumoku\ ;
+食欲 < shokuyoku\ ;
+羽蒲団 < hanebuton\ ;
+柴垣 < shibagaki\ ;
+地方債 < chihousai\ ;
+亮月 < ryougetsu\ ;
+本場物 < honbamono\ ;
+語学者 < gogakusha\ ;
+下穿 < shitabaki\ ;
+再試行 < saishikou\ ;
+一節 < hitofushi\ ;
+居丈高 < itakedaka\ ;
+太陽系 < taiyoukei\ ;
+研究員 < kenkyuuin\ ;
+弥縫策 < bihousaku\ ;
+無報酬 < muhoushuu\ ;
+蘆溝橋 < rokoukyou\ ;
+絶対値 < zettaichi\ ;
+天頂儀 < tenchougi\ ;
+中略 < chuuryaku\ ;
+海賊王 < kaizokuou\ ;
+財界人 < zaikaijin\ ;
+風来坊 < fuuraibou\ ;
+状袋 < joubukuro\ ;
+寒冷地 < kanreichi\ ;
+前置詞 < zenchishi\ ;
+物量 < butsuryou\ ;
+加判人 < kahan''nin\ ;
+動滑車 < doukassha\ ;
+結氷期 < keppyouki\ ;
+電気機器 < denkikiki\ ;
+展望台 < tenboudai\ ;
+礼拝堂 < reihaidou\ ;
+高性能 < kouseinou\ ;
+乾海苔 < hoshinori\ ;
+使用例 < shiyourei\ ;
+有田焼 < aritayaki\ ;
+高周波 < koushuuha\ ;
+尿検査 < nyoukensa\ ;
+環状線 < kanjousen\ ;
+末流 < matsuryuu\ ;
+発想法 < hassouhou\ ;
+株主 < kabunushi\ ;
+下石 < shitaishi\ ;
+免税点 < menzeiten\ ;
+値段表 < nedanhyou\ ;
+飯時 < meshidoki\ ;
+直弟子 < jikideshi\ ;
+自己嫌悪 < jikoken''o\ ;
+連邦制 < renpousei\ ;
+使用人 < shiyounin\ ;
+植木鉢 < uekibachi\ ;
+照射野 < shoushaya\ ;
+作付 < sakudzuke\ ;
+慈善心 < jizenshin\ ;
+上瞼 < uwamabuta\ ;
+木煉瓦 < mokurenga\ ;
+木綿物 < momenmono\ ;
+六分儀 < rokubungi\ ;
+視地平 < shichihei\ ;
+工作員 < kousakuin\ ;
+伯叔 < hakushuku\ ;
+爪革 < tsumakawa\ ;
+室内 < shitsunai\ ;
+宿主 < yadonushi\ ;
+回漕店 < kaisouten\ ;
+石炭紀 < sekitanki\ ;
+投機的 < toukiteki\ ;
+猟犬座 < ryoukenza\ ;
+二月 < futatsuki\ ;
+日録 < nichiroku\ ;
+皮財布 < kawazaifu\ ;
+一瞥 < ichibetsu\ ;
+脳血栓 < noukessen\ ;
+正則化 < seisokuka\ ;
+大奥様 < oookusama\ ;
+令室 < reishitsu\ ;
+体中 < karadajuu\ ;
+欠陥車 < kekkansha\ ;
+一大事 < ichidaiji\ ;
+連分数 < renbunsuu\ ;
+修理代 < shuuridai\ ;
+仲好 < nakayoshi\ ;
+蕁麻疹 < jinmashin\ ;
+具申書 < gushinsho\ ;
+読書家 < dokushoka\ ;
+美術部 < bijutsubu\ ;
+感謝祭 < kanshasai\ ;
+貴方方 < anatagata\ ;
+調髪 < chouhatsu\ ;
+東京都 < toukyouto\ ;
+旧字体 < kyuujitai\ ;
+製作費 < seisakuhi\ ;
+二週間 < nishuukan\ ;
+部落民 < burakumin\ ;
+物質 < busshitsu\ ;
+早道 < hayamichi\ ;
+加盟国 < kameikoku\ ;
+一夜中 < hitoyajuu\ ;
+構造体 < kouzoutai\ ;
+中医学 < chuuigaku\ ;
+受信者 < jushinsha\ ;
+会議録 < kaigiroku\ ;
+禁煙車 < kin''ensha\ ;
+片道 < katamichi\ ;
+電子銃 < denshijuu\ ;
+具体策 < gutaisaku\ ;
+車掌区 < shashouku\ ;
+特設 < tokusetsu\ ;
+他国民 < takokumin\ ;
+儒学者 < jugakusha\ ;
+名探偵 < meitantei\ ;
+国連旗 < kokurenki\ ;
+鯣烏賊 < surumeika\ ;
+全市民 < zenshimin\ ;
+報道官 < houdoukan\ ;
+仏学 < butsugaku\ ;
+日本晴 < nihonbare\ ;
+布団皮 < futongawa\ ;
+修繕費 < shuuzenhi\ ;
+露霜 < tsuyujimo\ ;
+専門書 < senmonsho\ ;
+公用車 < kouyousha\ ;
+耐性菌 < taiseikin\ ;
+札束 < satsutaba\ ;
+同種類 < doushurui\ ;
+音域外 < on''ikigai\ ;
+夏鳥 < natsudori\ ;
+質問 < shitsumon\ ;
+親和性 < shinwasei\ ;
+前頭葉 < zentouyou\ ;
+珠暖簾 < tamanoren\ ;
+独立 < dokuritsu\ ;
+九星家 < kyuuseika\ ;
+通気孔 < tsuukikou\ ;
+月次 < tsukinami\ ;
+謬説 < byuusetsu\ ;
+隣人愛 < rinjin''ai\ ;
+不承知 < fushouchi\ ;
+死亡数 < shibousuu\ ;
+学卒 < gakusotsu\ ;
+居住権 < kyojuuken\ ;
+鉤括弧 < kagikakko\ ;
+倦怠感 < kentaikan\ ;
+冷蔵船 < reizousen\ ;
+奴輩 < yatsubara\ ;
+合成酒 < gouseishu\ ;
+味噌汁 < misoshiru\ ;
+指導者 < shidousha\ ;
+学力 < gakuryoku\ ;
+半可通 < hankatsuu\ ;
+無警告 < mukeikoku\ ;
+基本合意 < kihongoui\ ;
+大西郷 < daisaigou\ ;
+睡眠剤 < suiminzai\ ;
+旋盤工 < senbankou\ ;
+帯分数 < taibunsuu\ ;
+小児科医 < shounikai\ ;
+後継者 < koukeisha\ ;
+亮察 < ryousatsu\ ;
+天日塩 < tenpishio\ ;
+威圧的 < iatsuteki\ ;
+二重底 < nijuuzoko\ ;
+又弟子 < matadeshi\ ;
+救命具 < kyuumeigu\ ;
+中次 < nakatsugi\ ;
+禁猟区 < kinryouku\ ;
+弩級艦 < dokyuukan\ ;
+旧識 < kyuushiki\ ;
+人妻 < hitodzuma\ ;
+恒久化 < koukyuuka\ ;
+新釈 < shinshaku\ ;
+具体的 < gutaiteki\ ;
+腹一杯 < haraippai\ ;
+格理論 < kakuriron\ ;
+日諾 < nichidaku\ ;
+感謝状 < kanshajou\ ;
+股下 < matashita\ ;
+現行犯 < genkouhan\ ;
+珍客 < chinkyaku\ ;
+日付印 < hidzukein\ ;
+太陽灯 < taiyoutou\ ;
+我武者羅 < gamushara\ ;
+外面 < sotodzura\ ;
+情報源 < jouhougen\ ;
+春色 < shunshoku\ ;
+公使館 < koushikan\ ;
+翌月 < yokugetsu\ ;
+帆立貝 < hotategai\ ;
+若武者 < wakamusha\ ;
+京女 < kyouon''na\ ;
+清算書 < seisansho\ ;
+本街道 < honkaidou\ ;
+串柿 < kushigaki\ ;
+郵便車 < yuubinsha\ ;
+自己犠牲 < jikogisei\ ;
+翌日 < yokujitsu\ ;
+一点機 < ichitenki\ ;
+両極 < ryoukyoku\ ;
+夏風邪 < natsukaze\ ;
+仏名 < butsumyou\ ;
+特色 < tokushoku\ ;
+中道派 < chuudouha\ ;
+暴風域 < boufuuiki\ ;
+発禁本 < hakkinbon\ ;
+圧電気 < atsudenki\ ;
+巨人党 < kyojintou\ ;
+食客 < shokkyaku\ ;
+時代物 < jidaimono\ ;
+屏風岩 < byoubuiwa\ ;
+快記録 < kaikiroku\ ;
+父親 < chichioya\ ;
+暴風圏 < boufuuken\ ;
+仮住 < karizumai\ ;
+雪靴 < yukigutsu\ ;
+不成績 < fuseiseki\ ;
+現出 < genshutsu\ ;
+仏力 < butsuriki\ ;
+多音節 < taonsetsu\ ;
+連帯感 < rentaikan\ ;
+部分的 < bubunteki\ ;
+専門店 < senmonten\ ;
+慣用音 < kan''youon\ ;
+夜仕事 < yoshigoto\ ;
+演習林 < enshuurin\ ;
+下様 < shimozama\ ;
+某高校 < boukoukou\ ;
+繰越 < kurikoshi\ ;
+綿菓子 < watagashi\ ;
+跨線橋 < kosenkyou\ ;
+煙草盆 < tabakobon\ ;
+受験票 < jukenhyou\ ;
+内斜視 < naishashi\ ;
+電信機 < denshinki\ ;
+圧縮機 < asshukuki\ ;
+物腰 < monogoshi\ ;
+三椏 < mitsumata\ ;
+実行権 < jikkouken\ ;
+松原 < matsubara\ ;
+相互扶助 < sougofujo\ ;
+賃借 < chinshaku\ ;
+現行法 < genkouhou\ ;
+自然界 < shizenkai\ ;
+懸垂線 < kensuisen\ ;
+上手者 < jouzumono\ ;
+日本学 < nihongaku\ ;
+排障器 < haishouki\ ;
+真夏日 < manatsubi\ ;
+熟食 < jukushoku\ ;
+感無量 < kanmuryou\ ;
+給付金 < kyuufukin\ ;
+付人 < tsukebito\ ;
+代名詞 < daimeishi\ ;
+同音異義 < douon''igi\ ;
+救助船 < kyuujosen\ ;
+牽引車 < ken''insha\ ;
+居住性 < kyojuusei\ ;
+抗凝固 < kougyouko\ ;
+看護長 < kangochou\ ;
+低性能 < teiseinou\ ;
+無計画 < mukeikaku\ ;
+多面角 < tamenkaku\ ;
+低周波 < teishuuha\ ;
+理想郷 < risoukyou\ ;
+被爆者 < hibakusha\ ;
+精製糖 < seiseitou\ ;
+有用性 < yuuyousei\ ;
+娯楽街 < gorakugai\ ;
+後天性 < koutensei\ ;
+校友会 < kouyuukai\ ;
+単利表 < tanrihyou\ ;
+自己本位 < jikohon''i\ ;
+月影 < tsukikage\ ;
+療養所 < ryouyoujo\ ;
+保守的 < hoshuteki\ ;
+月形 < tsukigata\ ;
+皇民党 < koumintou\ ;
+二重唱 < nijuushou\ ;
+七曜 < shichiyou\ ;
+卵胎生 < rantaisei\ ;
+一月 < hitotsuki\ ;
+線香代 < senkoudai\ ;
+対角化 < taikakuka\ ;
+最高点 < saikouten\ ;
+天質 < tenshitsu\ ;
+下敷 < shitajiki\ ;
+最低限 < saiteigen\ ;
+七星 < shichisei\ ;
+歌合戦 < utagassen\ ;
+平和賞 < heiwashou\ ;
+数係数 < suukeisuu\ ;
+木炭画 < mokutanga\ ;
+再降臨 < saikourin\ ;
+星空 < hoshizora\ ;
+再調査 < saichousa\ ;
+高野槙 < kouyamaki\ ;
+定滑車 < teikassha\ ;
+似我蜂 < jigabachi\ ;
+旋光性 < senkousei\ ;
+名投手 < meitoushu\ ;
+特筆 < tokuhitsu\ ;
+一日 < tsuitachi\ ;
+採算性 < saisansei\ ;
+企業者 < kigyousha\ ;
+人伝 < hitodzute\ ;
+異常高温 < ijoukouon\ ;
+狐火 < kitsunebi\ ;
+銀砂子 < ginsunago\ ;
+爆裂 < bakuretsu\ ;
+特立 < tokuritsu\ ;
+人付 < hitodzuki\ ;
+国分寺 < kokubunji\ ;
+養豚場 < youtonjou\ ;
+非対称 < hitaishou\ ;
+不銹鋼 < fushuukou\ ;
+失言 < shitsugen\ ;
+一院制 < ichiinsei\ ;
+手仕事 < teshigoto\ ;
+胆嚢炎 < tan''nouen\ ;
+雪道 < yukimichi\ ;
+雑録 < zatsuroku\ ;
+強打者 < kyoudasha\ ;
+規範的 < kihanteki\ ;
+羅紗紙 < rashagami\ ;
+脱衣場 < datsuijou\ ;
+女腹 < on''nabara\ ;
+熱量 < netsuryou\ ;
+救助網 < kyuujomou\ ;
+雪辱 < setsujoku\ ;
+太陰暦 < taiinreki\ ;
+揚羽蝶 < agehachou\ ;
+頭株 < atamakabu\ ;
+士君子 < shikunshi\ ;
+腰羽目 < koshibame\ ;
+片一方 < kataippou\ ;
+阿片窟 < ahenkutsu\ ;
+失血 < shikketsu\ ;
+暦月 < rekigetsu\ ;
+吾木香 < waremokou\ ;
+変質 < henshitsu\ ;
+食出 < hamidashi\ ;
+大型車 < oogatasha\ ;
+夏季熱 < kakinetsu\ ;
+夜話 < yobanashi\ ;
+内陸霧 < nairikumu\ ;
+植字機 < shokujiki\ ;
+遊覧船 < yuuransen\ ;
+乳房炎 < nyuubouen\ ;
+脳挫傷 < nouzashou\ ;
+天袋 < tenbukuro\ ;
+学生課 < gakuseika\ ;
+靴紐 < kutsuhimo\ ;
+藁布団 < warabuton\ ;
+詳述 < shoujutsu\ ;
+投機心 < toukishin\ ;
+郵便船 < yuubinsen\ ;
+青年団 < seinendan\ ;
+勧告案 < kankokuan\ ;
+特発 < tokuhatsu\ ;
+軍事援助 < gunjienjo\ ;
+天文台 < tenmondai\ ;
+自然法 < shizenhou\ ;
+石灰洞 < sekkaidou\ ;
+弊衣破帽 < heiihabou\ ;
+靴篦 < kutsubera\ ;
+増刊号 < zoukangou\ ;
+下役 < shitayaku\ ;
+両岸 < ryougishi\ ;
+曲学 < kyokugaku\ ;
+内大臣 < naidaijin\ ;
+現在地 < genzaichi\ ;
+戦車隊 < senshatai\ ;
+熟達 < jukutatsu\ ;
+丑年 < ushidoshi\ ;
+二重丸 < nijuumaru\ ;
+露草 < tsuyukusa\ ;
+酒造場 < shuzoujou\ ;
+愛読者 < aidokusha\ ;
+七五三縄 < shimenawa\ ;
+文化遺産 < bunkaisan\ ;
+石灰水 < sekkaisui\ ;
+大地震 < daijishin\ ;
+評釈 < hyoushaku\ ;
+不拡大 < fukakudai\ ;
+主導者 < shudousha\ ;
+高蒔絵 < takamakie\ ;
+自然死 < shizenshi\ ;
+居住地 < kyojuuchi\ ;
+一律 < ichiritsu\ ;
+決死隊 < kesshitai\ ;
+主脳者 < shunousha\ ;
+舞楽面 < bugakumen\ ;
+魚介類 < gyokairui\ ;
+最高検 < saikouken\ ;
+熱汚染 < netsuosen\ ;
+恒星年 < kouseinen\ ;
+自在鉤 < jizaikagi\ ;
+競走馬 < kyousouba\ ;
+御手洗 < mitarashi\ ;
+増幅器 < zoufukuki\ ;
+日本側 < nihongawa\ ;
+人類史 < jinruishi\ ;
+苦労様 < kurousama\ ;
+禀請書 < rinseisho\ ;
+風口 < kazaguchi\ ;
+俳諧師 < haikaishi\ ;
+夏蝉 < natsuzemi\ ;
+自家受精 < jikajusei\ ;
+慣用語 < kan''yougo\ ;
+女学生 < jogakusei\ ;
+電子管 < denshikan\ ;
+梵天王 < bonten''ou\ ;
+霞草 < kasumisou\ ;
+合成紙 < gouseishi\ ;
+黄銅鉱 < koudoukou\ ;
+自家受粉 < jikajufun\ ;
+牧畜 < bokuchiku\ ;
+司教区 < shikyouku\ ;
+解散権 < kaisanken\ ;
+適齢期 < tekireiki\ ;
+威嚇的 < ikakuteki\ ;
+銃連射 < juurensha\ ;
+免税品 < menzeihin\ ;
+焼餅 < yakimochi\ ;
+高水準 < kousuijun\ ;
+太陽年 < taiyounen\ ;
+民生委員 < minseiiin\ ;
+石細工 < ishizaiku\ ;
+寝小便 < neshouben\ ;
+末僚 < batsuryou\ ;
+冷蔵法 < reizouhou\ ;
+配分法 < haibunhou\ ;
+耽美的 < tanbiteki\ ;
+註釈 < chuushaku\ ;
+潜航艇 < senkoutei\ ;
+同窓生 < dousousei\ ;
+放浪者 < hourousha\ ;
+種概念 < shugainen\ ;
+早明戦 < soumeisen\ ;
+微積分 < bisekibun\ ;
+鳥瞰図 < choukanzu\ ;
+女王蜂 < jooubachi\ ;
+新緑 < shinryoku\ ;
+失脚 < shikkyaku\ ;
+外交官 < gaikoukan\ ;
+歯肉炎 < shinikuen\ ;
+自然林 < shizenrin\ ;
+演習場 < enshuujou\ ;
+小麦色 < komugiiro\ ;
+復古調 < fukkochou\ ;
+反省会 < hanseikai\ ;
+熱帯魚 < nettaigyo\ ;
+失職 < shisshoku\ ;
+単葉機 < tan''youki\ ;
+愛他主義 < aitashugi\ ;
+所有者 < shoyuusha\ ;
+販売者 < hanbaisha\ ;
+主人顔 < shujingao\ ;
+滑稽者 < odokemono\ ;
+水飢饉 < mizukikin\ ;
+海上法 < kaijouhou\ ;
+熱可塑 < netsukaso\ ;
+夏菊 < natsugiku\ ;
+一党一派 < ittouippa\ ;
+化学品 < kagakuhin\ ;
+縞蛇 < shimahebi\ ;
+中哲 < chuutetsu\ ;
+子沢山 < kodakusan\ ;
+余水吐 < yosuihaki\ ;
+怪奇映画 < kaikieiga\ ;
+訳述 < yakujutsu\ ;
+新築 < shinchiku\ ;
+夏草 < natsugusa\ ;
+昨年度 < sakunendo\ ;
+玉串 < tamagushi\ ;
+自然数 < shizensuu\ ;
+再訂版 < saiteiban\ ;
+青年会 < seinenkai\ ;
+中口 < nakaguchi\ ;
+女癖 < on''naguse\ ;
+現地人 < genchijin\ ;
+懐疑心 < kaigishin\ ;
+姥桜 < ubazakura\ ;
+朝日影 < asahikage\ ;
+釈迦牟尼 < shakamuni\ ;
+誘導弾 < yuudoudan\ ;
+販売網 < hanbaimou\ ;
+中卒 < chuusotsu\ ;
+八百万 < yaoyorozu\ ;
+下坂 < shimosaka\ ;
+貧乏人 < binbounin\ ;
+工事中 < koujichuu\ ;
+窃盗罪 < settouzai\ ;
+風下 < kazashimo\ ;
+霞網 < kasumiami\ ;
+原裁判 < gensaiban\ ;
+点火薬 < tenkayaku\ ;
+海上権 < kaijouken\ ;
+化学剤 < kagakuzai\ ;
+精製法 < seiseihou\ ;
+両口 < ryouguchi\ ;
+方眼紙 < houganshi\ ;
+受賞者 < jushousha\ ;
+推薦者 < suisensha\ ;
+雪模様 < yukimoyou\ ;
+爆竹 < bakuchiku\ ;
+一級品 < ikkyuuhin\ ;
+格子点 < koushiten\ ;
+日独 < nichidoku\ ;
+購買者 < koubaisha\ ;
+一等賞 < ittoushou\ ;
+他国人 < takokujin\ ;
+空気浴 < kuukiyoku\ ;
+旧物 < kyuubutsu\ ;
+獣偏 < kemonohen\ ;
+外交団 < gaikoudan\ ;
+執行部 < shikkoubu\ ;
+露程 < tsuyuhodo\ ;
+調節 < chousetsu\ ;
+理神論 < rishinron\ ;
+受験料 < jukenryou\ ;
+頭字 < kashiraji\ ;
+勝手元 < kattemoto\ ;
+相対論 < soutairon\ ;
+刊行会 < kankoukai\ ;
+獄卒 < gokusotsu\ ;
+保育料 < hoikuryou\ ;
+総資産 < soushisan\ ;
+住民税 < juuminzei\ ;
+且又 < katsumata\ ;
+俸給日 < houkyuubi\ ;
+物流 < butsuryuu\ ;
+両凸 < ryoutotsu\ ;
+陳述 < chinjutsu\ ;
+行政府 < gyouseifu\ ;
+処女膜 < shojomaku\ ;
+随伴者 < zuihansha\ ;
+新着 < shinchaku\ ;
+女物 < on''namono\ ;
+不印 < fujirushi\ ;
+悪宣伝 < akusenden\ ;
+書付 < kakitsuke\ ;
+多面的 < tamenteki\ ;
+詰草 < tsumekusa\ ;
+対戦車 < taisensha\ ;
+中位 < chuugurai\ ;
+熊蜂 < kumabachi\ ;
+苦労性 < kuroushou\ ;
+恐妻家 < kyousaika\ ;
+半鹹水 < hankansui\ ;
+社会経済 < shakaikei\ ;
+結跏趺座 < kekkafuza\ ;
+密航者 < mikkousha\ ;
+一等親 < ittoushin\ ;
+教職 < kyoushoku\ ;
+失礼 < shitsurei\ ;
+補強筋 < hokyoukin\ ;
+看板屋 < kanban''ya\ ;
+社員寮 < shainryou\ ;
+呼吸法 < kokyuuhou\ ;
+物欲 < butsuyoku\ ;
+一口 < hitokuchi\ ;
+擂鉢 < suribachi\ ;
+体量器 < tairyouki\ ;
+化学上 < kagakujou\ ;
+伽藍鳥 < garanchou\ ;
+心臓部 < shinzoubu\ ;
+爆発 < bakuhatsu\ ;
+最高峰 < saikouhou\ ;
+競輪場 < keirinjou\ ;
+重婚者 < juukonsha\ ;
+要撃機 < yougekiki\ ;
+気化熱 < kikanetsu\ ;
+昨日 < sakujitsu\ ;
+日教組 < nikkyouso\ ;
+蓖麻子油 < himashiyu\ ;
+縮約 < shukuyaku\ ;
+三等星 < santousei\ ;
+命名法 < meimeihou\ ;
+参加国 < sankakoku\ ;
+未開拓 < mikaitaku\ ;
+再編成 < saihensei\ ;
+失着 < shitchaku\ ;
+透水性 < tousuisei\ ;
+一列 < ichiretsu\ ;
+反対論 < hantairon\ ;
+学芸員 < gakugeiin\ ;
+冷凍魚 < reitougyo\ ;
+敗残兵 < haizanhei\ ;
+下側 < shitagawa\ ;
+雀色 < suzumeiro\ ;
+書生論 < shoseiron\ ;
+財政難 < zaiseinan\ ;
+一儲 < hitomouke\ ;
+制癌剤 < seiganzai\ ;
+族滅 < zokumetsu\ ;
+発泡剤 < happouzai\ ;
+伝奇的 < denkiteki\ ;
+絆創膏 < bansoukou\ ;
+下作 < shitasaku\ ;
+石灰岩 < sekkaigan\ ;
+調略 < chouryaku\ ;
+兵学校 < heigakkou\ ;
+富山県 < toyamaken\ ;
+該当者 < gaitousha\ ;
+点数制 < tensuusei\ ;
+昔日 < sekijitsu\ ;
+高知県 < kouchiken\ ;
+口上書 < koujousho\ ;
+解放感 < kaihoukan\ ;
+平和的 < heiwateki\ ;
+自閉症 < jiheishou\ ;
+飲用水 < in''yousui\ ;
+太陽光 < taiyoukou\ ;
+橋頭保 < kyoutouho\ ;
+古書市 < koshoichi\ ;
+天然塩 < ten''nenen\ ;
+断熱 < dan''netsu\ ;
+明日 < myounichi\ ;
+下下 < shimojimo\ ;
+敷石 < shikiishi\ ;
+特撮 < tokusatsu\ ;
+公害罪 < kougaizai\ ;
+淫売宿 < inbaiyado\ ;
+起請文 < kishoumon\ ;
+願事 < negaigoto\ ;
+碁盤縞 < gobanjima\ ;
+頻出 < hinshutsu\ ;
+網袋 < amibukuro\ ;
+俗世間 < zokuseken\ ;
+甘納豆 < amanattou\ ;
+乾酪素 < kanrakuso\ ;
+冶金学 < yakingaku\ ;
+冗長度 < jouchoudo\ ;
+角逐 < kakuchiku\ ;
+私家集 < shikashuu\ ;
+七三 < shichisan\ ;
+細面 < hosoomote\ ;
+市街地 < shigaichi\ ;
+可読性 < kadokusei\ ;
+明示的 < meijiteki\ ;
+大回転 < daikaiten\ ;
+呉服店 < gofukuten\ ;
+中華丼 < chuukadon\ ;
+大西洋 < taiseiyou\ ;
+理想的 < risouteki\ ;
+妻帯者 < saitaisha\ ;
+八宝菜 < happousai\ ;
+双蹄獸 < souteijuu\ ;
+集結 < shuuketsu\ ;
+国全土 < kokuzendo\ ;
+二進法 < nishinhou\ ;
+西風 < nishikaze\ ;
+自然増 < shizenzou\ ;
+時代劇 < jidaigeki\ ;
+夏痩 < natsuyase\ ;
+混成酒 < konseishu\ ;
+公倍数 < koubaisuu\ ;
+処方箋 < shohousen\ ;
+癌細胞 < gansaibou\ ;
+累減税 < ruigenzei\ ;
+所作事 < shosagoto\ ;
+無限小 < mugenshou\ ;
+物指 < monosashi\ ;
+窃盗犯 < settouhan\ ;
+仕手株 < shitekabu\ ;
+口下手 < kuchibeta\ ;
+金曜日 < kin''youbi\ ;
+低水準 < teisuijun\ ;
+製作所 < seisakujo\ ;
+伝声管 < denseikan\ ;
+量子化 < ryoushika\ ;
+星影 < hoshikage\ ;
+独力 < dokuryoku\ ;
+好一対 < kouittsui\ ;
+触診 < shokushin\ ;
+事務局 < jimukyoku\ ;
+壺皿 < tsubozara\ ;
+副鼻腔 < fukubikuu\ ;
+浪費癖 < rouhiheki\ ;
+給費生 < kyuuhisei\ ;
+県人会 < kenjinkai\ ;
+主任者 < shuninsha\ ;
+公用文 < kouyoubun\ ;
+罪人 < tsumibito\ ;
+行政区 < gyouseiku\ ;
+推薦状 < suisenjou\ ;
+中距離 < chuukyori\ ;
+共産化 < kyousanka\ ;
+会期中 < kaikichuu\ ;
+野球場 < yakyuujou\ ;
+閑古鳥 < kankodori\ ;
+産褥期 < sanjokuki\ ;
+主導権 < shudouken\ ;
+募金箱 < bokinbako\ ;
+硬口蓋 < koukougai\ ;
+敷物 < shikimono\ ;
+史記抄 < shikishou\ ;
+年齢層 < nenreisou\ ;
+頭頂部 < touchoubu\ ;
+雪男 < yukiotoko\ ;
+早場米 < hayabamai\ ;
+口語訳 < kougoyaku\ ;
+油圧計 < yuatsukei\ ;
+夏物 < natsumono\ ;
+二毛作 < nimousaku\ ;
+検糖計 < kentoukei\ ;
+誘導体 < yuudoutai\ ;
+真四角 < mashikaku\ ;
+申命記 < shinmeiki\ ;
+脂肪層 < shibousou\ ;
+統計 < baratsuki\ ;
+物品税 < buppinzei\ ;
+鳳翅鐘 < houshitou\ ;
+女方 < on''nagata\ ;
+新橋 < shinbashi\ ;
+層積雲 < sousekiun\ ;
+秒時計 < byoudokei\ ;
+珊瑚礁 < sangoshou\ ;
+連体詞 < rentaishi\ ;
+熱病 < netsubyou\ ;
+電熱 < den''netsu\ ;
+星屑 < hoshikuzu\ ;
+天気具合 < tenkiguai\ ;
+屁理屈 < herikutsu\ ;
+志願者 < shigansha\ ;
+浪人生 < rouninsei\ ;
+不可逆 < fukagyaku\ ;
+隔絶 < kakuzetsu\ ;
+独仏 < dokufutsu\ ;
+大阪市 < oosakashi\ ;
+妻室 < saishitsu\ ;
+愛読書 < aidokusho\ ;
+可塑物 < kasobutsu\ ;
+新造語 < shinzougo\ ;
+物干 < monohoshi\ ;
+反対者 < hantaisha\ ;
+細道 < hosomichi\ ;
+黒砂糖 < kurozatou\ ;
+玄米茶 < genmaicha\ ;
+演繹法 < en''ekihou\ ;
+臨場感 < rinjoukan\ ;
+熱球 < netsukyuu\ ;
+偏西風 < henseifuu\ ;
+香味料 < koumiryou\ ;
+正甲板 < seikanpan\ ;
+審議会 < shingikai\ ;
+青森県 < aomoriken\ ;
+不感症 < fukanshou\ ;
+縞物 < shimamono\ ;
+禁衛隊 < kin''eitai\ ;
+新枕 < niimakura\ ;
+放水車 < housuisha\ ;
+耐水性 < taisuisei\ ;
+玄関番 < genkanban\ ;
+前夜祭 < zen''yasai\ ;
+月桂冠 < gekkeikan\ ;
+給血 < kyuuketsu\ ;
+二刀流 < nitouryuu\ ;
+新札 < shinsatsu\ ;
+所有権 < shoyuuken\ ;
+冷凍車 < reitousha\ ;
+新月 < shingetsu\ ;
+来会者 < raikaisha\ ;
+新曲 < shinkyoku\ ;
+一口同音 < ikkudouon\ ;
+上等品 < joutouhin\ ;
+荒療治 < araryouji\ ;
+楽観論 < rakkanron\ ;
+倶舎宗 < kushashuu\ ;
+無言劇 < mugongeki\ ;
+入苑券 < nyuuenken\ ;
+腱鞘炎 < kenshouen\ ;
+不可思議 < fukashigi\ ;
+高年者 < kounensha\ ;
+詰物 < tsumemono\ ;
+探海灯 < tankaitou\ ;
+無規律 < mukiritsu\ ;
+烏貝 < karasugai\ ;
+靴底 < kutsuzoko\ ;
+形容詞 < keiyoushi\ ;
+医事伝道 < ijidendou\ ;
+旧年 < furutoshi\ ;
+岩雲雀 < iwahibari\ ;
+星型 < hoshigata\ ;
+徒競走 < tokyousou\ ;
+不戦勝 < fusenshou\ ;
+自然人 < shizenjin\ ;
+家庭的 < kateiteki\ ;
+高気圧 < koukiatsu\ ;
+滑稽本 < kokkeibon\ ;
+女子寮 < joshiryou\ ;
+失望 < shitsubou\ ;
+政治的 < seijiteki\ ;
+上等兵 < joutouhei\ ;
+焼結 < shouketsu\ ;
+原稿紙 < genkoushi\ ;
+色眼鏡 < iromegane\ ;
+楽譜台 < gakufudai\ ;
+冷水塊 < reisuikai\ ;
+保護色 < hogoshoku\ ;
+塵紙 < chirigami\ ;
+色収差 < iroshuusa\ ;
+美術家 < bijutsuka\ ;
+再評価 < saihyouka\ ;
+失明 < shitsumei\ ;
+準備中 < junbichuu\ ;
+光合成 < kougousei\ ;
+悪条件 < akujouken\ ;
+三悪趣 < sanakushu\ ;
+主産地 < shusanchi\ ;
+音部記号 < onbukigou\ ;
+巻積雲 < kensekiun\ ;
+希硫酸 < kiryuusan\ ;
+文月 < fumidzuki\ ;
+脱穀機 < dakkokuki\ ;
+鼎談会 < teidankai\ ;
+複本位 < fukuhon''i\ ;
+俗趣味 < zokushumi\ ;
+終止符 < shuushifu\ ;
+炭質 < tanshitsu\ ;
+精製品 < seiseihin\ ;
+憲兵隊 < kenpeitai\ ;
+誅殺 < chuusatsu\ ;
+大昔 < oomukashi\ ;
+配偶者 < haiguusha\ ;
+充当金 < juutoukin\ ;
+消火栓 < shoukasen\ ;
+奈良時代 < narajidai\ ;
+寄留者 < kiryuusha\ ;
+灰神楽 < haikagura\ ;
+金一封 < kin''ippuu\ ;
+床運動 < yukaundou\ ;
+長靴 < nagagutsu\ ;
+寄生虫 < kiseichuu\ ;
+糸車 < itoguruma\ ;
+夜晒 < yozarashi\ ;
+三等分 < santoubun\ ;
+喫水線 < kissuisen\ ;
+夏服 < natsufuku\ ;
+悪玉化 < akudamaka\ ;
+超簡易 < choukan''i\ ;
+靴墨 < kutsuzumi\ ;
+裸馬 < hadakauma\ ;
+戯作者 < gesakusha\ ;
+妹分 < imoutobun\ ;
+日墨 < nichiboku\ ;
+新式 < shinshiki\ ;
+青瓢箪 < aobyoutan\ ;
+患者様 < kanjasama\ ;
+五寸釘 < gosunkugi\ ;
+仮登記 < karitouki\ ;
+合同軍 < goudougun\ ;
+夏時 < natsudoki\ ;
+炸裂 < sakuretsu\ ;
+特別 < tokubetsu\ ;
+複雑 < fukuzatsu\ ;
+靴型 < kutsugata\ ;
+粒食 < ryuushoku\ ;
+非現業 < higengyou\ ;
+勤労者 < kinrousha\ ;
+固定長 < koteichou\ ;
+殺菌剤 < sakkinzai\ ;
+結膜 < ketsumaku\ ;
+洋服屋 < youfukuya\ ;
+起爆剤 < kibakuzai\ ;
+表示灯 < hyoujitou\ ;
+便利帳 < benrichou\ ;
+取材班 < shuzaihan\ ;
+脂肪体 < shiboutai\ ;
+郵便屋 < yuubin''ya\ ;
+縞柄 < shimagara\ ;
+中辞典 < chuujiten\ ;
+洗面台 < senmendai\ ;
+失恋 < shitsuren\ ;
+内裏雛 < dairibina\ ;
+全二重 < zen''nijuu\ ;
+溶解性 < youkaisei\ ;
+失念 < shitsunen\ ;
+雨曇 < amagumori\ ;
+整数論 < seisuuron\ ;
+評決 < hyouketsu\ ;
+民社党 < minshatou\ ;
+企画書 < kikakusho\ ;
+生地獄 < ikijigoku\ ;
+純米酒 < junmaishu\ ;
+回遊魚 < kaiyuugyo\ ;
+無関心 < mukanshin\ ;
+耳鼻咽喉 < jibiinkou\ ;
+女坂 < on''nazaka\ ;
+続発 < zokuhatsu\ ;
+友人間 < yuujinkan\ ;
+有斐閣 < yuuhikaku\ ;
+販売店 < hanbaiten\ ;
+雑株 < zatsukabu\ ;
+志望校 < shiboukou\ ;
+奉迎門 < hougeimon\ ;
+牛刺 < gyuusashi\ ;
+執著 < shuuchaku\ ;
+面会人 < menkainin\ ;
+一箇月 < ikkagetsu\ ;
+送水管 < sousuikan\ ;
+糖質 < toushitsu\ ;
+冷凍船 < reitousen\ ;
+年配者 < nenpaisha\ ;
+手数料 < tesuuryou\ ;
+離魂病 < rikonbyou\ ;
+空気汚染 < kuukiosen\ ;
+片口 < katakuchi\ ;
+水中花 < suichuuka\ ;
+動名詞 < doumeishi\ ;
+細腰 < hosogoshi\ ;
+烏帽子貝 < eboshigai\ ;
+黄金色 < koganeiro\ ;
+二元的 < nigenteki\ ;
+縞栗鼠 < shimarisu\ ;
+娯楽場 < gorakujou\ ;
+遊覧地 < yuuranchi\ ;
+本因坊 < hon''inbou\ ;
+共栄圏 < kyoueiken\ ;
+相対死 < aitaijini\ ;
+国自慢 < kunijiman\ ;
+重大視 < juudaishi\ ;
+企業内 < kigyounai\ ;
+集札 < shuusatsu\ ;
+同窓会 < dousoukai\ ;
+法蓮草 < hourensou\ ;
+海外版 < kaigaiban\ ;
+扇状地 < senjouchi\ ;
+日出 < nisshutsu\ ;
+打撃戦 < dagekisen\ ;
+有象無象 < uzoumuzou\ ;
+透写紙 < toushashi\ ;
+人文史 < jinbunshi\ ;
+指定券 < shiteiken\ ;
+香水瓶 < kousuibin\ ;
+熱帯病 < netaibyou\ ;
+伝記物 < denkimono\ ;
+計量器 < keiryouki\ ;
+補償金 < hoshoukin\ ;
+軽犯罪 < keihanzai\ ;
+坪量 < tsuboryou\ ;
+合憲性 < goukensei\ ;
+地鎮祭 < jichinsai\ ;
+主体性 < shutaisei\ ;
+素粒子 < soryuushi\ ;
+蝿地獄 < haejigoku\ ;
+大災害 < daisaigai\ ;
+奴凧 < yakkodako\ ;
+楽天家 < rakutenka\ ;
+理性的 < riseiteki\ ;
+綿油 < wataabura\ ;
+然然 < shikajika\ ;
+鼓笛隊 < kotekitai\ ;
+起訴猶予 < kisoyuuyo\ ;
+寒暖計 < kandankei\ ;
+花粉症 < kafunshou\ ;
+人為的 < jin''iteki\ ;
+伊勢神宮 < isejinguu\ ;
+受領者 < juryousha\ ;
+企画性 < kikakusei\ ;
+内需型 < naijugata\ ;
+尸位素餐 < shiisosan\ ;
+焦熱 < shounetsu\ ;
+原成岩 < genseigan\ ;
+表示板 < hyoujiban\ ;
+夏山 < natsuyama\ ;
+爪切 < tsumekiri\ ;
+永久歯 < eikyuushi\ ;
+千社札 < senjafuda\ ;
+菩提心 < bodaishin\ ;
+政所 < mandokoro\ ;
+教式 < kyoushiki\ ;
+表示書 < hyoujisho\ ;
+放水管 < housuikan\ ;
+双子葉 < soushiyou\ ;
+性転換 < seitenkan\ ;
+輸送量 < yusouryou\ ;
+所有地 < shoyuuchi\ ;
+鼓手長 < koshuchou\ ;
+爪先 < tsumasaki\ ;
+総本店 < souhonten\ ;
+元気者 < genkimono\ ;
+代弁者 < daibensha\ ;
+野天風呂 < notenburo\ ;
+町医者 < machiisha\ ;
+製材所 < seizaisho\ ;
+塩漬 < shiodzuke\ ;
+反乱軍 < hanrangun\ ;
+総人口 < soujinkou\ ;
+店仕舞 < misejimai\ ;
+中保者 < chuuhosha\ ;
+奔出 < honshutsu\ ;
+立法者 < rippousha\ ;
+草相撲 < kusazumou\ ;
+予備錨 < yobiikari\ ;
+隔月 < kakugetsu\ ;
+歓送会 < kansoukai\ ;
+双翅類 < soushirui\ ;
+紙細工 < kamizaiku\ ;
+山水荘 < sansuisou\ ;
+表沙汰 < omotezata\ ;
+唐獅子 < karajishi\ ;
+平和国 < heiwakoku\ ;
+低気圧 < teikiatsu\ ;
+作業用 < sagyouyou\ ;
+撃発 < gekihatsu\ ;
+執筆 < shippitsu\ ;
+水害地 < suigaichi\ ;
+総本山 < souhonzan\ ;
+演説家 < enzetsuka\ ;
+盲腸炎 < mouchouen\ ;
+斥力 < sekiryoku\ ;
+終発 < shuuhatsu\ ;
+遣唐使 < kentoushi\ ;
+坂道 < sakamichi\ ;
+作業班 < sagyouhan\ ;
+活性炭 < kasseitan\ ;
+最小化 < saishouka\ ;
+乗降場 < joukoujou\ ;
+俗世界 < zokusekai\ ;
+毛織物 < keorimono\ ;
+志願書 < shigansho\ ;
+不死鳥 < fushichou\ ;
+悲観的 < hikanteki\ ;
+撲滅 < bokumetsu\ ;
+成功者 < seikousha\ ;
+看護学 < kangogaku\ ;
+上向線 < joukousen\ ;
+消炎剤 < shouenzai\ ;
+公休日 < koukyuubi\ ;
+総罷業 < souhigyou\ ;
+再投資 < saitoushi\ ;
+歌劇場 < kagekijou\ ;
+浄水場 < jousuijou\ ;
+雪女 < yukion''na\ ;
+詳密 < shoumitsu\ ;
+水耕法 < suikouhou\ ;
+大演習 < daienshuu\ ;
+無理無体 < murimutai\ ;
+実測図 < jissokuzu\ ;
+膨張度 < bouchoudo\ ;
+映写幕 < eishamaku\ ;
+上水道 < jousuidou\ ;
+全住民 < zenjuumin\ ;
+浄水地 < jousuichi\ ;
+雑学 < zatsugaku\ ;
+均質 < kinshitsu\ ;
+男性用 < danseiyou\ ;
+好奇心 < koukishin\ ;
+肉体美 < nikutaibi\ ;
+国家的 < kokkateki\ ;
+犠牲的 < giseiteki\ ;
+連子窓 < renjimado\ ;
+相対性 < soutaisei\ ;
+烏瓜 < karasuuri\ ;
+関心事 < kanshinji\ ;
+北斗星 < hokutosei\ ;
+本拠地 < honkyochi\ ;
+舞踏病 < butoubyou\ ;
+内外人 < naigaijin\ ;
+撲殺 < bokusatsu\ ;
+摘発 < tekihatsu\ ;
+下種女 < gesuon''na\ ;
+赤電車 < akadensha\ ;
+夏向 < natsumuki\ ;
+粘板岩 < nenbangan\ ;
+事業者 < jigyousha\ ;
+歓迎会 < kangeikai\ ;
+託児所 < takujisho\ ;
+水時計 < mizudokei\ ;
+捨鉢 < sutebachi\ ;
+盲導犬 < moudouken\ ;
+販売人 < hanbainin\ ;
+鯐 < subashiri\ ;
+人国記 < jinkokuki\ ;
+普及版 < fukyuuban\ ;
+鮗 < konoshiro\ ;
+半部族 < hanbuzoku\ ;
+飛道具 < tobidougu\ ;
+人間界 < ningenkai\ ;
+乳母車 < ubaguruma\ ;
+惨死体 < zanshitai\ ;
+堅物 < katabutsu\ ;
+運搬人 < unpan''nin\ ;
+抗生剤 < kouseizai\ ;
+国鉄 < kokutetsu\ ;
+角樽 < tsunodaru\ ;
+撃滅 < gekimetsu\ ;
+世迷言 < yomaigoto\ ;
+伝言板 < dengonban\ ;
+自立語 < jiritsugo\ ;
+糧秣 < ryoumatsu\ ;
+熱帯林 < nettairin\ ;
+永久性 < eikyuusei\ ;
+製本屋 < seihon''ya\ ;
+汽車賃 < kishachin\ ;
+隣室 < rinshitsu\ ;
+禁裏様 < kinrisama\ ;
+慣用句 < kan''youku\ ;
+観光地 < kankouchi\ ;
+会見者 < kaikensha\ ;
+東天紅 < toutenkou\ ;
+観光団 < kankoudan\ ;
+技巧的 < gikouteki\ ;
+楽隠居 < rakuinkyo\ ;
+高速度 < kousokudo\ ;
+私生子 < shiseishi\ ;
+日記帳 < nikkichou\ ;
+政治学 < seijigaku\ ;
+外付 < sotodzuke\ ;
+水理学 < suirigaku\ ;
+母子寮 < boshiryou\ ;
+着心地 < kigokochi\ ;
+夏作 < natsusaku\ ;
+戒厳令 < kaigenrei\ ;
+投与量 < touyoryou\ ;
+照尺 < shoushaku\ ;
+意気軒高 < ikikenkou\ ;
+雪兎 < yukiusagi\ ;
+哺乳類 < honyuurui\ ;
+大蝙蝠 < ookoumori\ ;
+無投票 < mutouhyou\ ;
+指了図 < shiryouzu\ ;
+適応性 < tekiousei\ ;
+襲爵 < shuushaku\ ;
+漫才師 < manzaishi\ ;
+事業税 < jigyouzei\ ;
+収容所 < shuuyoujo\ ;
+国璽書 < kokujisho\ ;
+感覚器 < kankakuki\ ;
+教育費 < kyouikuhi\ ;
+固定給 < koteikyuu\ ;
+展覧会 < tenrankai\ ;
+交代制 < koutaisei\ ;
+阝 < kozatohen\ ;
+覆滅 < fukumetsu\ ;
+巡視艇 < junshitei\ ;
+巡視船 < junshisen\ ;
+汎関数 < hankansuu\ ;
+全人生 < zenjinsei\ ;
+断強度 < dankyoudo\ ;
+処女作 < shojosaku\ ;
+個性的 < koseiteki\ ;
+墨壷 < sumitsubo\ ;
+全音階 < zen''onkai\ ;
+誅伐 < chuubatsu\ ;
+反乱者 < hanransha\ ;
+軽音楽 < keiongaku\ ;
+回復期 < kaifukuki\ ;
+不合格 < fugoukaku\ ;
+周波計 < shuuhakei\ ;
+不可欠 < fukaketsu\ ;
+放出 < houshutsu\ ;
+終極 < shuukyoku\ ;
+硬化症 < koukashou\ ;
+逆効果 < gyakkouka\ ;
+裸線 < hadakasen\ ;
+覆没 < fukubotsu\ ;
+一等国 < ittoukoku\ ;
+全封地 < zenhouchi\ ;
+分配金 < bunpaikin\ ;
+語尾変化 < gobihenka\ ;
+回遊船 < kaiyuusen\ ;
+公会堂 < koukaidou\ ;
+無表情 < muhyoujou\ ;
+煩型 < urusagata\ ;
+水餃子 < suigyouza\ ;
+詔勅 < shouchoku\ ;
+風土病 < fuudobyou\ ;
+支出 < shishutsu\ ;
+逃避的 < touhiteki\ ;
+古文学 < kobungaku\ ;
+優等生 < yuutousei\ ;
+綢密 < chuumitsu\ ;
+固定票 < koteihyou\ ;
+対向車 < taikousha\ ;
+組曲 < kumikyoku\ ;
+事業界 < jigyoukai\ ;
+批判的 < hihanteki\ ;
+天地人 < tenchijin\ ;
+血統書 < kettousho\ ;
+中二階 < chuunikai\ ;
+継室 < keishitsu\ ;
+国表 < kuniomote\ ;
+山葡萄 < yamabudou\ ;
+黄道面 < koudoumen\ ;
+受難週 < junanshuu\ ;
+尊厳死 < songenshi\ ;
+考古学 < koukogaku\ ;
+保険証 < hokenshou\ ;
+高分子 < koubunshi\ ;
+冥加金 < myougakin\ ;
+内地米 < naichimai\ ;
+枯葉剤 < karehazai\ ;
+締切 < shimekiri\ ;
+招待日 < shoutaibi\ ;
+誓願権 < seiganken\ ;
+愛国者 < aikokusha\ ;
+訴願人 < sogan''nin\ ;
+領事館 < ryoujikan\ ;
+主犯者 < shuhansha\ ;
+防護壁 < bougoheki\ ;
+資金源 < shikingen\ ;
+鼠咬症 < sokoushou\ ;
+三重盗 < sanjuutou\ ;
+連体形 < rentaikei\ ;
+土色 < tsuchiiro\ ;
+現段階 < gendankai\ ;
+成年者 < seinensha\ ;
+金解禁 < kinkaikin\ ;
+羽子突 < hanetsuki\ ;
+洗濯粉 < sentakuko\ ;
+光化学 < koukagaku\ ;
+農学部 < nougakubu\ ;
+主任制 < shuninsei\ ;
+舞踏服 < butoufuku\ ;
+経験論 < keikenron\ ;
+経験談 < keikendan\ ;
+接続 < setsuzoku\ ;
+擦過傷 < sakkashou\ ;
+米粒 < kometsubu\ ;
+糟漬 < kasudzuke\ ;
+四重奏 < shijuusou\ ;
+踝 < kurubushi\ ;
+相対値 < soutaichi\ ;
+母子共 < boshitomo\ ;
+鉄火巻 < tekkamaki\ ;
+英作文 < eisakubun\ ;
+戦車兵 < senshahei\ ;
+再投稿 < saitoukou\ ;
+教養部 < kyouyoubu\ ;
+立法権 < rippouken\ ;
+妥協点 < dakyouten\ ;
+雲仙岳 < unzendake\ ;
+受領書 < juryousho\ ;
+不活化 < fukatsuka\ ;
+文章語 < bunshougo\ ;
+青信号 < aoshingou\ ;
+時計皿 < tokeizara\ ;
+幽冥界 < yuumeikai\ ;
+執行吏 < shikkouri\ ;
+等高線 < toukousen\ ;
+絞首台 < koushudai\ ;
+破擦音 < hasatsuon\ ;
+送受信 < soujushin\ ;
+撫子 < nadeshiko\ ;
+一神論 < isshinron\ ;
+着道楽 < kidouraku\ ;
+明後年 < myougonen\ ;
+法務省 < houmushou\ ;
+酵素学 < kousogaku\ ;
+糠油 < nukaabura\ ;
+長物 < choubutsu\ ;
+図像学 < zuzougaku\ ;
+奉加帳 < hougachou\ ;
+感嘆詞 < kantanshi\ ;
+前売券 < maeuriken\ ;
+親心 < oyagokoro\ ;
+衆説 < shuusetsu\ ;
+志願兵 < shiganhei\ ;
+反射光 < hanshakou\ ;
+皮細工 < kawazaiku\ ;
+復水器 < fukusuiki\ ;
+関連性 < kanrensei\ ;
+統語学 < tougogaku\ ;
+絶妙 < zetsumyou\ ;
+講演料 < kouenryou\ ;
+敬老会 < keiroukai\ ;
+時間軸 < jikanjiku\ ;
+反対党 < hantaitou\ ;
+搭乗者 < toujousha\ ;
+九分九厘 < kubukurin\ ;
+糸桜 < itozakura\ ;
+社民党 < shamintou\ ;
+絞首刑 < koushukei\ ;
+創建者 < soukensha\ ;
+最大限 < saidaigen\ ;
+陳列 < chinretsu\ ;
+糸柳 < itoyanagi\ ;
+楓子香 < fuushikou\ ;
+混成岩 < konseigan\ ;
+執拗 < shitsuyou\ ;
+紙粘土 < kaminendo\ ;
+条件文 < joukenbun\ ;
+意識体 < ishikitai\ ;
+私企業 < shikigyou\ ;
+空模様 < soramoyou\ ;
+公有林 < kouyuurin\ ;
+山水楼 < sansuirou\ ;
+裃 < kamishimo\ ;
+寄留地 < kiryuuchi\ ;
+断剛性 < dangousei\ ;
+空元気 < karagenki\ ;
+衤 < koromohen\ ;
+打算的 < dasanteki\ ;
+退蔵品 < taizouhin\ ;
+親密 < shinmitsu\ ;
+影響圏 < eikyouken\ ;
+真善美 < shinzenbi\ ;
+手術衣 < shujutsui\ ;
+人間愛 < ningen''ai\ ;
+理知的 < richiteki\ ;
+筒音 < tsutsuoto\ ;
+琥珀色 < kohakuiro\ ;
+御蔭様 < okagesama\ ;
+毛細管 < mousaikan\ ;
+紋所 < mondokoro\ ;
+袋網 < fukuroami\ ;
+白胡麻 < shirogoma\ ;
+自己規制 < jikokisei\ ;
+主人公 < shujinkou\ ;
+同委員会 < douiinkai\ ;
+人間性 < ningensei\ ;
+単孔類 < tankourui\ ;
+同労者 < dourousha\ ;
+即時性 < sokujisei\ ;
+乳呑児 < chinomigo\ ;
+不徳漢 < futokukan\ ;
+遭遇戦 < souguusen\ ;
+言伝 < kotodzute\ ;
+又家来 < matagerai\ ;
+火柱 < hibashira\ ;
+一妻多夫 < issaitafu\ ;
+閥族 < batsuzoku\ ;
+正書法 < seishohou\ ;
+独自性 < dokujisei\ ;
+弁財天 < benzaiten\ ;
+勤務先 < kinmusaki\ ;
+角叉 < tsunomata\ ;
+持久戦 < jikyuusen\ ;
+重要視 < juuyoushi\ ;
+空梅雨 < karatsuyu\ ;
+混成団 < konseidan\ ;
+不正行為 < fuseikoui\ ;
+抜錨 < batsubyou\ ;
+火口壁 < kakouheki\ ;
+時間表 < jikanhyou\ ;
+砂利道 < jarimichi\ ;
+会計官 < kaikeikan\ ;
+賤業婦 < sengyoufu\ ;
+経験者 < keikensha\ ;
+韓国語 < hankokugo\ ;
+教材費 < kyouzaihi\ ;
+国立 < kokuritsu\ ;
+勝利者 < shourisha\ ;
+潜伏期 < senpukuki\ ;
+大団円 < daidan''en\ ;
+午前様 < gozensama\ ;
+海潮音 < kaichouon\ ;
+正犯者 < seihansha\ ;
+可圧性 < kaatsusei\ ;
+船大工 < funadaiku\ ;
+土地柄 < tochigara\ ;
+登舷礼 < tougenrei\ ;
+激突 < gekitotsu\ ;
+政府筋 < seifusuji\ ;
+活性剤 < kasseizai\ ;
+反体制 < hantaisei\ ;
+藻菌類 < soukinrui\ ;
+滑石粉 < kassekiko\ ;
+緩衝器 < kanshouki\ ;
+鳩羽色 < hatobairo\ ;
+顕微鏡 < kenbikyou\ ;
+名店街 < meitengai\ ;
+利休色 < rikyuuiro\ ;
+国事犯 < kokujihan\ ;
+門松 < kadomatsu\ ;
+混成品 < konseihin\ ;
+分配者 < bunpaisha\ ;
+半透明 < hantoumei\ ;
+分水線 < bunsuisen\ ;
+遊戯的 < yuugiteki\ ;
+近視眼 < kinshigan\ ;
+会計士 < kaikeishi\ ;
+抜道 < nukemichi\ ;
+初年兵 < shonenhei\ ;
+同年輩 < dounenpai\ ;
+珍無類 < chinmurui\ ;
+箝口令 < kankourei\ ;
+合法性 < gouhousei\ ;
+総領事 < souryouji\ ;
+州政府 < shuuseifu\ ;
+商務官 < shoumukan\ ;
+長月 < nagatsuki\ ;
+応接間 < ousetsuma\ ;
+血肉 < ketsuniku\ ;
+参会者 < sankaisha\ ;
+五人組 < goningumi\ ;
+黄水晶 < kizuishou\ ;
+内裏様 < dairisama\ ;
+大衆化 < taishuuka\ ;
+重大性 < juudaisei\ ;
+外国語 < gaikokugo\ ;
+現状維持 < genjouiji\ ;
+勢力家 < seiryokka\ ;
+声楽家 < seigakuka\ ;
+製靴業 < seikagyou\ ;
+紛失 < funshitsu\ ;
+箱馬車 < hakobasha\ ;
+宮内省 < kunaishou\ ;
+土牢 < tsuchirou\ ;
+事業所 < jigyousho\ ;
+穿山甲 < senzankou\ ;
+臨港線 < rinkousen\ ;
+唯名論 < yuimeiron\ ;
+米油 < komeabura\ ;
+改造車 < kaizousha\ ;
+黄金国 < ougonkoku\ ;
+芋羊羹 < imoyoukan\ ;
+更生品 < kouseihin\ ;
+広小路 < hirokouji\ ;
+筋道 < sujimichi\ ;
+空返事 < sorahenji\ ;
+篳篥 < hichiriki\ ;
+腐植土 < fushokudo\ ;
+次善策 < jizensaku\ ;
+美辞麗句 < bijireiku\ ;
+遠眼鏡 < toomegane\ ;
+創造者 < souzousha\ ;
+休電日 < kyuudenbi\ ;
+板門店 < hanmonten\ ;
+衝突 < shoutotsu\ ;
+導入部 < dounyuubu\ ;
+禅問答 < zenmondou\ ;
+複数個 < fukusuuko\ ;
+盲学校 < mougakkou\ ;
+研修課 < kenshuuka\ ;
+弾性体 < danseitai\ ;
+米櫃 < komebitsu\ ;
+献呈本 < kenteibon\ ;
+尾長鶏 < onagadori\ ;
+放送網 < housoumou\ ;
+麻酔薬 < masuiyaku\ ;
+千年紀 < sen''nenki\ ;
+僧帽弁 < soubouben\ ;
+太鼓腹 < taikobara\ ;
+不言不語 < fugenfugo\ ;
+前装砲 < zensouhou\ ;
+分遣隊 < bunkentai\ ;
+吹奏者 < suisousha\ ;
+竜骨 < ryuukotsu\ ;
+好角家 < koukakuka\ ;
+結了 < ketsuryou\ ;
+悪天候 < akutenkou\ ;
+推進機 < suishinki\ ;
+托鉢 < takuhatsu\ ;
+鉤十字 < kagijuuji\ ;
+乱気流 < rankiryuu\ ;
+冷凍剤 < reitouzai\ ;
+初対面 < shotaimen\ ;
+閏年 < uruudoshi\ ;
+竍 < dekaritto\ ;
+未収載 < mishuusai\ ;
+嗜好品 < shikouhin\ ;
+悪天使 < akutenshi\ ;
+強化米 < kyoukamai\ ;
+水雷艇 < suiraitei\ ;
+観楓会 < kanpuukai\ ;
+体験談 < taikendan\ ;
+無感覚 < mukankaku\ ;
+群速度 < gunsokudo\ ;
+電総研 < densouken\ ;
+不確定 < fukakutei\ ;
+白百合 < shirayuri\ ;
+舞踊劇 < buyougeki\ ;
+火口丘 < kakoukyuu\ ;
+不正確 < fuseikaku\ ;
+節約 < setsuyaku\ ;
+陽子線 < youshisen\ ;
+下部機関 < kabukikan\ ;
+個人誤差 < kojingosa\ ;
+時間給 < jikankyuu\ ;
+分水界 < bunsuikai\ ;
+乱反射 < ranhansha\ ;
+解答欄 < kaitouran\ ;
+魚雷艇 < gyoraitei\ ;
+公有地 < kouyuuchi\ ;
+欺瞞的 < gimanteki\ ;
+明瞭度 < meiryoudo\ ;
+会計係 < kaikeikei\ ;
+蟇蛙 < hikigaeru\ ;
+輸入税 < yunyuuzei\ ;
+蜀黍 < morokoshi\ ;
+不心得 < fukokoroe\ ;
+二業地 < nigyouchi\ ;
+単子論 < tanshiron\ ;
+証拠金 < shoukokin\ ;
+生演奏 < namaensou\ ;
+微分学 < bibungaku\ ;
+専従者 < senjuusha\ ;
+仙台侯 < sendaikou\ ;
+血眼 < chimanako\ ;
+箸箱 < hashibako\ ;
+複式 < fukushiki\ ;
+兄弟愛 < kyoudaiai\ ;
+万華鏡 < mangekyou\ ;
+西側 < nishigawa\ ;
+損失 < sonshitsu\ ;
+人間像 < ningenzou\ ;
+回帰的 < kaikiteki\ ;
+市民税 < shiminzei\ ;
+富士額 < fujibitai\ ;
+闖入 < chin''nyuu\ ;
+蜂鳥 < hachidori\ ;
+開票所 < kaihyoujo\ ;
+体育館 < taiikukan\ ;
+為体 < teitaraku\ ;
+変調波 < henchouha\ ;
+同盟軍 < doumeigun\ ;
+告訴人 < kokusonin\ ;
+学士院 < gakushiin\ ;
+倫理的 < rinriteki\ ;
+点鼻薬 < tenbiyaku\ ;
+投書欄 < toushoran\ ;
+訴訟法 < soshouhou\ ;
+溶質 < youshitsu\ ;
+四半分 < shihanbun\ ;
+吸音材 < kyuuonzai\ ;
+初体験 < shotaiken\ ;
+輸入盤 < yunyuuban\ ;
+不知火 < shiranuhi\ ;
+卵細胞 < ransaibou\ ;
+灰土 < haitsuchi\ ;
+二極化 < nikyokuka\ ;
+南京錠 < nankinjou\ ;
+鳩時計 < hatodokei\ ;
+哺乳瓶 < honyuubin\ ;
+西洋風 < seiyoufuu\ ;
+既製服 < kiseifuku\ ;
+自由意志 < jiyuuishi\ ;
+野外劇 < yagaigeki\ ;
+普遍的 < fuhenteki\ ;
+事業団 < jigyoudan\ ;
+小役人 < koyakunin\ ;
+鳥媒花 < choubaika\ ;
+自治領 < jichiryou\ ;
+裏扉 < uratobira\ ;
+破壊的 < hakaiteki\ ;
+搬出 < hanshutsu\ ;
+窮措大 < kyuusodai\ ;
+達磨船 < darumasen\ ;
+内在性 < naizaisei\ ;
+小荷物 < konimotsu\ ;
+日系人 < nikkeijin\ ;
+精神科 < seishinka\ ;
+一合目 < ichigoume\ ;
+住居跡 < juukyoato\ ;
+再抗弁 < saikouben\ ;
+農作業 < nousagyou\ ;
+螢光燈 < keikoutou\ ;
+付年表 < funenpyou\ ;
+正誤表 < seigohyou\ ;
+裏情 < uranasake\ ;
+四輪車 < yonrinsha\ ;
+蟇股 < kaerumata\ ;
+三重奏 < sanjuusou\ ;
+保証書 < hoshousho\ ;
+否定的 < hiteiteki\ ;
+不連続 < furenzoku\ ;
+武断的 < budanteki\ ;
+出穂期 < shussuiki\ ;
+上半期 < kamihanki\ ;
+単子葉 < tanshiyou\ ;
+微分商 < bibunshou\ ;
+血煙 < chikemuri\ ;
+義兄弟 < gikyoudai\ ;
+複素数 < fukusosuu\ ;
+転校生 < tenkousei\ ;
+昼夜帯 < chuuyaobi\ ;
+事件表 < jikenhyou\ ;
+強硬派 < kyoukouha\ ;
+排気量 < haikiryou\ ;
+二次記憶 < nijikioku\ ;
+女文字 < on''namoji\ ;
+無所属 < mushozoku\ ;
+周波数 < shuuhasuu\ ;
+猛禽類 < moukinrui\ ;
+生態系 < seitaikei\ ;
+滑落 < katsuraku\ ;
+持物 < mochimono\ ;
+散文詩 < sanbunshi\ ;
+栽培種 < saibaishu\ ;
+原著者 < genchosha\ ;
+電話料 < denwaryou\ ;
+技能賞 < ginoushou\ ;
+料金所 < ryoukinjo\ ;
+支配者 < shihaisha\ ;
+洗濯屋 < sentakuya\ ;
+側近者 < sokkinsha\ ;
+門口 < kadoguchi\ ;
+実社会 < jisshakai\ ;
+御連絡 < gorenraku\ ;
+香川県 < kagawaken\ ;
+点滴器 < tentekiki\ ;
+予定表 < yoteihyou\ ;
+弁護料 < bengoryou\ ;
+主要駅 < shuyoueki\ ;
+区会議員 < kukaigiin\ ;
+挟殺 < kyousatsu\ ;
+対応策 < taiousaku\ ;
+輸入港 < yunyuukou\ ;
+同志会 < doushikai\ ;
+迎撃機 < geigekiki\ ;
+人地名 < jinchimei\ ;
+保険料 < hokenryou\ ;
+大和芋 < yamatoimo\ ;
+高優先 < kouyuusen\ ;
+放送法 < housouhou\ ;
+示力図 < jiryokuzu\ ;
+古事記伝 < kojikiden\ ;
+雪女郎 < yukijorou\ ;
+表書 < omotegaki\ ;
+零細農 < reisainou\ ;
+糊代 < norishiro\ ;
+真清水 < mashimizu\ ;
+助太刀 < sukedachi\ ;
+克己心 < kokkishin\ ;
+設計者 < sekkeisha\ ;
+無神論 < mushinron\ ;
+無為無策 < muimusaku\ ;
+有袋類 < yuutairui\ ;
+一殺那 < issetsuna\ ;
+心理戦 < shinrisen\ ;
+御歴歴 < orekireki\ ;
+不平等 < fubyoudou\ ;
+利尿剤 < rinyouzai\ ;
+穴隙 < ketsugeki\ ;
+牧歌的 < bokkateki\ ;
+漸近線 < zenkinsen\ ;
+子安貝 < koyasukai\ ;
+旅日記 < tabinikki\ ;
+売上金 < uriagekin\ ;
+受給者 < jukyuusha\ ;
+明年度 < myounendo\ ;
+二枚舌 < nimaijita\ ;
+三重冠 < sanjuukan\ ;
+誘電子 < yuudenshi\ ;
+錯雑 < sakuzatsu\ ;
+圧密 < atsumitsu\ ;
+関係詞 < kankeishi\ ;
+紡錘形 < bousuikei\ ;
+奉幣使 < houheishi\ ;
+市民法 < shiminhou\ ;
+最敬礼 < saikeirei\ ;
+椴 < todomatsu\ ;
+苦学生 < kugakusei\ ;
+小生意気 < konamaiki\ ;
+得意先 < tokuisaki\ ;
+雨仕度 < amajitaku\ ;
+周波帯 < shuuhatai\ ;
+漬物 < tsukemono\ ;
+管制官 < kanseikan\ ;
+蜜豆 < mitsumame\ ;
+漂着 < hyouchaku\ ;
+燃料費 < nenryouhi\ ;
+量記号 < ryoukigou\ ;
+発光体 < hakkoutai\ ;
+半円形 < han''enkei\ ;
+汚染除去 < osenjokyo\ ;
+提出 < teishutsu\ ;
+円虫類 < enchuurui\ ;
+扶養義務 < fuyougimu\ ;
+懸想文 < kesoubumi\ ;
+検潮器 < kenchouki\ ;
+姉妹編 < shimaihen\ ;
+血糖値 < kettouchi\ ;
+深靴 < fukagutsu\ ;
+無重量 < mujuuryou\ ;
+電話帳 < denwachou\ ;
+午前中 < gozenchuu\ ;
+営業所 < eigyousho\ ;
+節欲 < setsuyoku\ ;
+米市場 < beiichiba\ ;
+不動心 < fudoushin\ ;
+袋帯 < fukuroobi\ ;
+小判形 < kobangata\ ;
+照明器 < shoumeiki\ ;
+徹甲弾 < tekkoudan\ ;
+宮内庁 < kunaichou\ ;
+擬古主義 < gikoshugi\ ;
+市民権 < shiminken\ ;
+穀食 < kokushoku\ ;
+半舷砲 < hangenhou\ ;
+権威筋 < ken''isuji\ ;
+変電所 < hendensho\ ;
+積雪 < sekisetsu\ ;
+電解液 < denkaieki\ ;
+雲上人 < unjoubito\ ;
+節榑 < fushikure\ ;
+一周年 < isshuunen\ ;
+血族 < ketsuzoku\ ;
+管制塔 < kanseitou\ ;
+華厳経 < kegonkyou\ ;
+対情報 < taijouhou\ ;
+格変化 < kakuhenka\ ;
+教育家 < kyouikuka\ ;
+安息香 < ansokukou\ ;
+石鹸水 < sekkensui\ ;
+不勉強 < fubenkyou\ ;
+塩化物 < enkabutsu\ ;
+九寸五分 < kusungobu\ ;
+両用機 < ryouyouki\ ;
+当世風 < touseifuu\ ;
+策略 < sakuryaku\ ;
+格天井 < goutenjou\ ;
+中耕機 < chuukouki\ ;
+不適格 < futekkaku\ ;
+遠心分 < enshinbun\ ;
+鍼術 < shinjutsu\ ;
+普通法 < futsuuhou\ ;
+媒染剤 < baisenzai\ ;
+破裂音 < haretsuon\ ;
+主観論 < shukanron\ ;
+二番作 < nibansaku\ ;
+生命線 < seimeisen\ ;
+空対空 < kuutaikuu\ ;
+猛吹雪 < moufubuki\ ;
+拓殖 < takushoku\ ;
+高射砲 < koushahou\ ;
+一歩銀 < ichibugin\ ;
+奈良漬 < naradzuke\ ;
+形象化 < keishouka\ ;
+内地人 < naichijin\ ;
+石南花 < shakunage\ ;
+傀儡師 < kairaishi\ ;
+一歩金 < ichibukin\ ;
+女郎蜘蛛 < jorougumo\ ;
+痩我慢 < yasegaman\ ;
+蛙跳 < kaerutobi\ ;
+悪因縁 < akuin''nen\ ;
+不眠症 < fuminshou\ ;
+電解槽 < denkaisou\ ;
+法華宗 < hokkeshuu\ ;
+一瞬間 < isshunkan\ ;
+正三位 < shousanmi\ ;
+弾道弾 < dandoudan\ ;
+混合林 < kongourin\ ;
+水墨画 < suibokuga\ ;
+交易会 < kouekikai\ ;
+高楊子 < takayouji\ ;
+権威的 < ken''iteki\ ;
+社用車 < shayousha\ ;
+分水嶺 < bunsuirei\ ;
+子供用 < kodomoyou\ ;
+親孝行 < oyakoukou\ ;
+発射筒 < hasshatou\ ;
+拾万円 < juuman''en\ ;
+勤皇家 < kin''nouka\ ;
+乳化剤 < nyuukazai\ ;
+近地点 < kinchiten\ ;
+圧力 < atsuryoku\ ;
+無競争 < mukyousou\ ;
+交際法 < kousaihou\ ;
+参与者 < san''yosha\ ;
+竹箒 < takebouki\ ;
+飲料水 < inryousui\ ;
+鼻面 < hanadzura\ ;
+秋日和 < akibiyori\ ;
+区役所 < kuyakusho\ ;
+立志伝 < risshiden\ ;
+天秤棒 < tenbinbou\ ;
+変調器 < henchouki\ ;
+関係者 < kankeisha\ ;
+不随意筋 < fuzuiikin\ ;
+大成功 < daiseikou\ ;
+二人称 < nininshou\ ;
+偶像視 < guuzoushi\ ;
+偶蹄類 < guuteirui\ ;
+来訪者 < raihousha\ ;
+騒乱罪 < souranzai\ ;
+完成品 < kanseihin\ ;
+移行期間 < ikoukikan\ ;
+袖口 < sodeguchi\ ;
+創造性 < souzousei\ ;
+捻出 < nenshutsu\ ;
+又請負 < mataukeoi\ ;
+金閣寺 < kinkakuji\ ;
+誘電体 < yuudentai\ ;
+南京米 < nankinmai\ ;
+無神経 < mushinkei\ ;
+銀交換 < ginkoukan\ ;
+嵙 < yamashina\ ;
+製塩業 < seiengyou\ ;
+教会員 < kyoukaiin\ ;
+啓蟄 < keichitsu\ ;
+搭乗券 < toujouken\ ;
+過硫酸 < karyuusan\ ;
+運命的 < unmeiteki\ ;
+観桜会 < kan''oukai\ ;
+涙雨 < namidaame\ ;
+無礼者 < bureimono\ ;
+構文法 < koubunpou\ ;
+篤実 < tokujitsu\ ;
+鎖糸 < kusariito\ ;
+禿鷲 < hagewashi\ ;
+血尿 < ketsunyou\ ;
+接近戦 < sekkinsen\ ;
+無法者 < muhoumono\ ;
+懲罰 < choubatsu\ ;
+不適当 < futekitou\ ;
+無水鍋 < musuinabe\ ;
+月給日 < gekkyuubi\ ;
+国力 < kokuryoku\ ;
+斥候隊 < sekkoutai\ ;
+創業費 < sougyouhi\ ;
+国別 < kunibetsu\ ;
+重要性 < juuyousei\ ;
+総売上 < souuriage\ ;
+十円玉 < juuendama\ ;
+抽斗 < hikidashi\ ;
+倫理学 < rinrigaku\ ;
+一週間 < isshuukan\ ;
+社内報 < shanaihou\ ;
+住宅費 < juutakuhi\ ;
+屈地性 < kutchisei\ ;
+付加価値 < fukakachi\ ;
+築山 < tsukiyama\ ;
+国有化 < kokuyuuka\ ;
+通風機 < tsuufuuki\ ;
+家屋敷 < ieyashiki\ ;
+山椒魚 < sanshouuo\ ;
+公文書 < koubunsho\ ;
+決定論 < ketteiron\ ;
+保証人 < hoshounin\ ;
+沿海州 < enkaishuu\ ;
+不道徳 < fudoutoku\ ;
+便乗者 < binjousha\ ;
+一升瓶 < isshoubin\ ;
+空腹時 < kuufukuji\ ;
+前衛戦 < zen''eisen\ ;
+袖付 < sodetsuke\ ;
+感情論 < kanjouron\ ;
+支配権 < shihaiken\ ;
+団子鼻 < dangobana\ ;
+全論点 < zenronten\ ;
+扼殺 < yakusatsu\ ;
+道化者 < doukemono\ ;
+西洋紙 < seiyoushi\ ;
+書記長 < shokichou\ ;
+土壌汚染 < dojouosen\ ;
+血塗 < chimidoro\ ;
+忌言葉 < imikotoba\ ;
+難事業 < nanjigyou\ ;
+付帯的 < futaiteki\ ;
+高飛車 < takabisha\ ;
+電話中 < denwachuu\ ;
+黄道帯 < koudoutai\ ;
+高校生 < koukousei\ ;
+麹黴 < koujikabi\ ;
+涙金 < namidakin\ ;
+肺水腫 < haisuishu\ ;
+商用語 < shouyougo\ ;
+略記法 < ryakkihou\ ;
+血圧 < ketsuatsu\ ;
+潮境 < shiozakai\ ;
+葡萄棚 < budoudana\ ;
+奉公人 < houkounin\ ;
+稟質 < hinshitsu\ ;
+湿田 < shitsuden\ ;
+仏法僧 < buppousou\ ;
+黒髪 < kokuhatsu\ ;
+体育祭 < taiikusai\ ;
+普通弾 < futsuudan\ ;
+戦中派 < senchuuha\ ;
+高山帯 < kouzantai\ ;
+性犯罪 < seihanzai\ ;
+民芸品 < mingeihin\ ;
+親会社 < oyagaisha\ ;
+打消 < uchikeshi\ ;
+参賀帳 < sangachou\ ;
+三輪車 < sanrinsha\ ;
+産科学 < sankagaku\ ;
+車内灯 < shanaitou\ ;
+医務室 < imushitsu\ ;
+永続性 < eizokusei\ ;
+表側 < omotegawa\ ;
+探検隊 < tankentai\ ;
+実務家 < jitsumuka\ ;
+必須格 < hissukaku\ ;
+大和歌 < yamatouta\ ;
+丸太材 < marutazai\ ;
+研修所 < kenshuujo\ ;
+公明党 < koumeitou\ ;
+絵空言 < esoragoto\ ;
+羅針盤 < rashinban\ ;
+上院議員 < jouingiin\ ;
+器量人 < kiryoujin\ ;
+国際語 < kokusaigo\ ;
+四辺形 < shihenkei\ ;
+発作的 < hossateki\ ;
+聾学校 < rougakkou\ ;
+鐘撞 < kanetsuki\ ;
+掃海艇 < soukaitei\ ;
+参考書 < sankousho\ ;
+化粧品 < keshouhin\ ;
+地平面 < chiheimen\ ;
+行列 < gyouretsu\ ;
+低能者 < teinousha\ ;
+先験論 < senkenron\ ;
+集英社 < shuueisha\ ;
+用水池 < yousuichi\ ;
+受難劇 < junangeki\ ;
+倉庫業 < soukogyou\ ;
+千六本 < senroppon\ ;
+輸入品 < yunyuuhin\ ;
+化粧台 < keshoudai\ ;
+塩加減 < shiokagen\ ;
+娘子軍 < joushigun\ ;
+自治省 < jichishou\ ;
+尾長猿 < onagazaru\ ;
+警防団 < keiboudan\ ;
+正解者 < seikaisha\ ;
+限度額 < gendogaku\ ;
+再洗礼 < saisenrei\ ;
+姉妹校 < shimaikou\ ;
+格闘技 < kakutougi\ ;
+青春期 < seishunki\ ;
+速記録 < sokkiroku\ ;
+優勝馬 < yuushouba\ ;
+凩 < kogarashi\ ;
+気候学 < kikougaku\ ;
+病院船 < byouinsen\ ;
+国文科 < kokubunka\ ;
+担当者 < tantousha\ ;
+来場者 < raijousha\ ;
+才槌 < saidzuchi\ ;
+排水溝 < haisuikou\ ;
+峻下剤 < shungezai\ ;
+外商部 < gaishoubu\ ;
+湿潤 < shitsujun\ ;
+鼻衝 < hanatsuki\ ;
+正方形 < seihoukei\ ;
+渋紙 < shibugami\ ;
+月経帯 < gekkeitai\ ;
+角行灯 < kakuandon\ ;
+課徴金 < kachoukin\ ;
+交換船 < koukansen\ ;
+保管証 < hokanshou\ ;
+添加物 < tenkamono\ ;
+鼠講 < nezumikou\ ;
+来観者 < raikansha\ ;
+御家騒動 < oiesoudou\ ;
+鏡板 < kagamiita\ ;
+綺羅星 < kiraboshi\ ;
+山岳部 < sangakubu\ ;
+発展性 < hattensei\ ;
+空穴 < karaketsu\ ;
+協定案 < kyouteian\ ;
+麦飯 < mugimeshi\ ;
+鋼色 < haganeiro\ ;
+注射器 < chuushaki\ ;
+払暁 < futsugyou\ ;
+司法権 < shihouken\ ;
+虫螻 < mushikera\ ;
+正攻法 < seikouhou\ ;
+手拍子 < tebyoushi\ ;
+社会面 < shakaimen\ ;
+象皮病 < zouhibyou\ ;
+禁反言 < kinhangen\ ;
+無双窓 < musoumado\ ;
+時間割 < jikanwari\ ;
+用心棒 < youjinbou\ ;
+再感染 < saikansen\ ;
+毛製品 < mouseihin\ ;
+二度三度 < nidosando\ ;
+高祖頭巾 < kosozukin\ ;
+格納庫 < kakunouko\ ;
+総索引 < sousakuin\ ;
+予審廷 < yoshintei\ ;
+茶屋酒 < chayazake\ ;
+四分円 < shibun''en\ ;
+佗住居 < wabizumai\ ;
+片手桶 < katateoke\ ;
+創刊号 < soukangou\ ;
+四分六 < shiburoku\ ;
+童歌 < warabeuta\ ;
+防潜網 < bousenmou\ ;
+打擲 < chouchaku\ ;
+名刺判 < meishiban\ ;
+河童巻 < kappamaki\ ;
+勲一等 < kun''ittou\ ;
+反物屋 < tanmonoya\ ;
+予備部品 < yobibuhin\ ;
+互譲的 < gojouteki\ ;
+世界的 < sekaiteki\ ;
+御迷惑 < gomeiwaku\ ;
+三部作 < sanbusaku\ ;
+活量 < katsuryou\ ;
+正面図 < shoumenzu\ ;
+表具師 < hyougushi\ ;
+不適任 < futekinin\ ;
+経企庁 < keikichou\ ;
+運動領 < undouryou\ ;
+先般来 < senpanrai\ ;
+定冠詞 < teikanshi\ ;
+自己批判 < jikohihan\ ;
+接尾辞 < setsubiji\ ;
+水無月 < minadzuki\ ;
+駐在員 < chuuzaiin\ ;
+噴出 < funshutsu\ ;
+渋皮 < shibukawa\ ;
+輸尿管 < yunyoukan\ ;
+藁靴 < waragutsu\ ;
+国防費 < kokubouhi\ ;
+侍従長 < jijuuchou\ ;
+鎖樋 < kusaritoi\ ;
+活軸 < katsujiku\ ;
+殺風景 < sappuukei\ ;
+中支那 < nakashina\ ;
+誤挿入 < gosounyuu\ ;
+正教授 < seikyouju\ ;
+休火山 < kyuukazan\ ;
+子守歌 < komoriuta\ ;
+決定稿 < ketteikou\ ;
+防火壁 < boukaheki\ ;
+湿板 < shitsuban\ ;
+浮袋 < ukibukuro\ ;
+台湾人 < taiwanjin\ ;
+活躍 < katsuyaku\ ;
+日章旗 < nisshouki\ ;
+部隊長 < butaichou\ ;
+御真影 < goshin''ei\ ;
+虫腹 < mushibara\ ;
+凝固点 < gyoukoten\ ;
+支店網 < shitenmou\ ;
+数表示 < suuhyouji\ ;
+風向計 < fuukoukei\ ;
+蛍光板 < keikouban\ ;
+新聞舗 < shinbunho\ ;
+西南西 < seinansei\ ;
+避雷針 < hiraishin\ ;
+獅子舞 < shishimai\ ;
+任期中 < ninkichuu\ ;
+方面隊 < houmentai\ ;
+風鈴草 < fuurinsou\ ;
+曲独楽 < kyokugoma\ ;
+真向法 < makkouhou\ ;
+商船旗 < shousenki\ ;
+鼠色 < nezumiiro\ ;
+泥靴 < dorogutsu\ ;
+研修員 < kenshuuin\ ;
+評判記 < hyoubanki\ ;
+普通便 < futsuubin\ ;
+副知事 < fukuchiji\ ;
+母集団 < boshuudan\ ;
+三冠王 < sankan''ou\ ;
+恋愛観 < ren''aikan\ ;
+筆墨 < hitsuboku\ ;
+針鰻 < hariunagi\ ;
+鼻綱 < hanadzuna\ ;
+地役権 < chiekiken\ ;
+筆塚 < fudedzuka\ ;
+普通人 < futsuujin\ ;
+滝壺 < takitsubo\ ;
+再協議 < saikyouki\ ;
+代赭色 < taishairo\ ;
+接尾語 < setsubigo\ ;
+劇作家 < gekisakka\ ;
+重戦車 < juusensha\ ;
+音楽隊 < ongakutai\ ;
+告達 < kokutatsu\ ;
+再禁止 < saikinshi\ ;
+燻蒸剤 < kunjouzai\ ;
+洋裁師 < yousaishi\ ;
+真正面 < mashoumen\ ;
+漏出 < roushutsu\ ;
+筆圧 < hitsuatsu\ ;
+月経前 < gekkeimae\ ;
+窮極 < kyuukyoku\ ;
+低山帯 < teizantai\ ;
+励振器 < reishinki\ ;
+金鯱 < kinshachi\ ;
+英雄的 < eiyuuteki\ ;
+記者席 < kishaseki\ ;
+健康者 < kenkousha\ ;
+肥満症 < himanshou\ ;
+最大値 < saidaichi\ ;
+計画案 < keikakuan\ ;
+華厳宗 < kegonshuu\ ;
+主要点 < shuyouten\ ;
+口髭 < kuchihige\ ;
+虫籠 < mushikago\ ;
+流血 < ryuuketsu\ ;
+憑物 < tsukimono\ ;
+積率 < sekiritsu\ ;
+会員証 < kaiinshou\ ;
+精薄児 < seihakuji\ ;
+挿入図 < sounyuuzu\ ;
+釜飯 < kamameshi\ ;
+丁年者 < teinensha\ ;
+深爪 < fukadzume\ ;
+竹帛 < chikuhaku\ ;
+監査役 < kansayaku\ ;
+薄化粧 < usugeshou\ ;
+出勤簿 < shukkinbo\ ;
+中央線 < chuuousen\ ;
+履歴書 < rirekisho\ ;
+泡銭 < abukuzeni\ ;
+養嗣子 < youshishi\ ;
+悪質 < akushitsu\ ;
+大海原 < oounabara\ ;
+低価格 < teikakaku\ ;
+交際上 < kousaijou\ ;
+麻袋 < asabukuro\ ;
+参考品 < sankouhin\ ;
+神経科 < shinkeika\ ;
+小作農 < kosakunou\ ;
+自画自賛 < jigajisan\ ;
+私文書 < shibunsho\ ;
+決定版 < ketteiban\ ;
+心不全 < shinfuzen\ ;
+乳幼児 < nyuuyouji\ ;
+規則書 < kisokusho\ ;
+滝口 < takiguchi\ ;
+加除式 < kajoshiki\ ;
+鼠算 < nezumizan\ ;
+湿式 < shisshiki\ ;
+司法官 < shihoukan\ ;
+穀物 < kokumotsu\ ;
+空対地 < kuutaichi\ ;
+正視眼 < seishigan\ ;
+早慶戦 < soukeisen\ ;
+泥道 < doromichi\ ;
+古靴 < furugutsu\ ;
+掘削機 < kussakuki\ ;
+未確定 < mikakutei\ ;
+高架橋 < koukakyou\ ;
+沈鬱 < chin''utsu\ ;
+個別化 < kobetsuka\ ;
+君達 < kimitachi\ ;
+挿入句 < sounyuuku\ ;
+鷲鼻 < washibana\ ;
+折伏 < shakubuku\ ;
+鼠穴 < nezumiana\ ;
+滑台 < suberidai\ ;
+政権党 < seikentou\ ;
+射利心 < sharishin\ ;
+竜巻 < tatsumaki\ ;
+釣鐘 < tsurigane\ ;
+監察医 < kansatsui\ ;
+道化方 < doukegata\ ;
+半二重 < han''nijuu\ ;
+禁治産 < kinchisan\ ;
+首位打者 < shuidasha\ ;
+単語集 < tangoshuu\ ;
+用水地 < yousuiike\ ;
+車高短 < shakoutan\ ;
+近海魚 < kinkaigyo\ ;
+木金土 < mokukindo\ ;
+持続性 < jizokusei\ ;
+名工大 < meikoudai\ ;
+支配人 < shihainin\ ;
+幹事長 < kanjichou\ ;
+長水路 < chousuiro\ ;
+平党員 < hiratouin\ ;
+循環線 < junkansen\ ;
+下剋上 < gekokujou\ ;
+満室 < manshitsu\ ;
+上層風 < jousoufuu\ ;
+圧延鋼 < atsuenkou\ ;
+因果応報 < ingaouhou\ ;
+準教員 < junkyouin\ ;
+鷦鷯 < misosazai\ ;
+凹眼鏡 < ougankyou\ ;
+物価高 < bukkadaka\ ;
+誘拐罪 < yuukaizai\ ;
+端女 < hashitame\ ;
+循環系 < junkankei\ ;
+釣針 < tsuribari\ ;
+派生的 < haseiteki\ ;
+素反応 < sohan''nou\ ;
+在郷者 < zaigousha\ ;
+金鎖 < kingusari\ ;
+北海道 < hokkaidou\ ;
+下女下男 < gejogenan\ ;
+林檎病 < ringobyou\ ;
+藤蔓 < fujidzuru\ ;
+薬事法 < yakujihou\ ;
+短毛種 < tanmoushu\ ;
+概念論 < gainenron\ ;
+鉛色 < namariiro\ ;
+道徳家 < doutokuka\ ;
+参与官 < san''yokan\ ;
+渋柿 < shibugaki\ ;
+最終案 < saishuuan\ ;
+世界新 < sekaishin\ ;
+参考人 < sankounin\ ;
+屋台骨 < yataibone\ ;
+大歓迎 < daikangei\ ;
+上層階 < jousoukai\ ;
+一切経 < issaikyou\ ;
+古鉄 < furutetsu\ ;
+再配置 < saihaichi\ ;
+肌襦袢 < hadajuban\ ;
+六角形 < rokkakkei\ ;
+新生児 < shinseiji\ ;
+鈴虫 < suzumushi\ ;
+醜業婦 < shugyoufu\ ;
+同質 < doushitsu\ ;
+裁判権 < saibanken\ ;
+大神宮 < daijinguu\ ;
+正教員 < seikyouin\ ;
+口金 < kuchigane\ ;
+突撃 < totsugeki\ ;
+悪戯着 < itazuragi\ ;
+昼行灯 < hiruandon\ ;
+地平線 < chiheisen\ ;
+安楽椅子 < anrakuisu\ ;
+配電線 < haidensen\ ;
+白頭翁 < hakutouou\ ;
+発射台 < hasshadai\ ;
+黒縁 < kurobuchi\ ;
+主陣地 < shujinchi\ ;
+感想文 < kansoubun\ ;
+消化系 < shoukakei\ ;
+鎮圧 < chin''atsu\ ;
+主観性 < shukansei\ ;
+大法廷 < daihoutei\ ;
+最終日 < saishuubi\ ;
+決定権 < ketteiken\ ;
+喪失 < soushitsu\ ;
+兎小屋 < usagigoya\ ;
+多神論 < tashinron\ ;
+委員付託 < iinfutaku\ ;
+後半生 < kouhansei\ ;
+種油 < taneabura\ ;
+増訂版 < zouteiban\ ;
+所在地 < shozaichi\ ;
+災害地 < saigaichi\ ;
+消化管 < shoukakan\ ;
+年代順 < nendaijun\ ;
+神経炎 < shinkeien\ ;
+奉仕者 < houshisha\ ;
+唐櫃 < karabitsu\ ;
+再受浸 < saijushin\ ;
+口軽 < kuchigaru\ ;
+窮屈 < kyuukutsu\ ;
+予備運動 < yobiundou\ ;
+二人前 < futarimae\ ;
+富士壺 < fujitsubo\ ;
+遺産管理 < isankanri\ ;
+百貨店 < hyakkaten\ ;
+横断幕 < oudanmaku\ ;
+二人分 < futaribun\ ;
+納税者 < nouzeisha\ ;
+酸性紙 < sanseishi\ ;
+左右軸 < sayuujiku\ ;
+天水桶 < tensuioke\ ;
+黒竹 < kurochiku\ ;
+友達 < tomodachi\ ;
+品物 < shinamono\ ;
+貴金属 < kikinzoku\ ;
+波羅蜜 < haramitsu\ ;
+狩猟期 < shuryouki\ ;
+文法書 < bunpousho\ ;
+竹光 < takemitsu\ ;
+藁苞 < waradzuto\ ;
+占領下 < senryouka\ ;
+燃焼炉 < nenshouro\ ;
+古筆家 < kohitsuka\ ;
+防衛庁 < boueichou\ ;
+大祭司 < daisaishi\ ;
+唐松 < karamatsu\ ;
+雛罌粟 < hinageshi\ ;
+全天候 < zentenkou\ ;
+超短波 < choutanpa\ ;
+放射能 < houshanou\ ;
+前科者 < zenkamono\ ;
+長野県 < naganoken\ ;
+知恵熱 < chienetsu\ ;
+包装紙 < housoushi\ ;
+争議行為 < sougikoui\ ;
+米産地 < beisanchi\ ;
+八角形 < hakkakkei\ ;
+五大洲 < godaishuu\ ;
+新学期 < shingakki\ ;
+麻婆豆腐 < mābodoufu\ ;
+配電盤 < haidenban\ ;
+英文学 < eibungaku\ ;
+蚊柱 < kabashira\ ;
+御兄弟 < gokyoudai\ ;
+裁判所 < saibansho\ ;
+参院選 < san''insen\ ;
+竹串 < takegushi\ ;
+軍人風 < gunjinfuu\ ;
+無得点 < mutokuten\ ;
+論理的 < ronriteki\ ;
+黒白 < kokubyaku\ ;
+劃期的 < kakkiteki\ ;
+神罰 < shinbatsu\ ;
+油蝉 < aburazemi\ ;
+三省堂 < sanseidou\ ;
+取説 < torisetsu\ ;
+虚弱児 < kyojakuji\ ;
+文化映画 < bunkaeiga\ ;
+当事国 < toujikoku\ ;
+論争者 < ronsousha\ ;
+放射線 < houshasen\ ;
+蛸壼 < takotsubo\ ;
+崇拝者 < suuhaisha\ ;
+健康法 < kenkouhou\ ;
+怪文書 < kaibunsho\ ;
+逮捕歴 < taihoreki\ ;
+筆頭者 < hittousha\ ;
+湧出 < youshutsu\ ;
+空室 < kuushitsu\ ;
+乾生姜 < kanshouga\ ;
+生残者 < seizansha\ ;
+淡水魚 < tansuigyo\ ;
+贈答品 < zoutouhin\ ;
+交換手 < koukanshu\ ;
+蛍光体 < keikoutai\ ;
+氷点下 < hyoutenka\ ;
+誘拐犯 < yuukaihan\ ;
+煎玉子 < iritamago\ ;
+興信所 < koushinjo\ ;
+甘味料 < kanmiryou\ ;
+試験紙 < shikenshi\ ;
+肉襦袢 < nikujuban\ ;
+監守人 < kanshunin\ ;
+増大号 < zoudaigou\ ;
+滑走輪 < kassourin\ ;
+再創造 < saisouzou\ ;
+戸籍法 < kosekihou\ ;
+錘形 < tsumugata\ ;
+荒物屋 < aramonoya\ ;
+中西部 < chuuseibu\ ;
+自動的 < jidouteki\ ;
+借家人 < shakkanin\ ;
+法学部 < hougakubu\ ;
+軍資金 < gunshikin\ ;
+文法性 < bunpousei\ ;
+農夫症 < noufushou\ ;
+材料費 < zairyouhi\ ;
+催涙銃 < sairuijuu\ ;
+変換子 < henkanshi\ ;
+材木屋 < zaimokuya\ ;
+貧窮化 < hinkyuuka\ ;
+早合点 < hayagaten\ ;
+車馬賃 < shabachin\ ;
+竜騎兵 < ryuukihei\ ;
+土台石 < dodaiishi\ ;
+試験管 < shikenkan\ ;
+大反対 < daihantai\ ;
+非国民 < hikokumin\ ;
+小豆鱒 < azukimasu\ ;
+莢豌豆 < sayaendou\ ;
+両替機 < ryougaeki\ ;
+綿火薬 < menkayaku\ ;
+人民軍 < jinmingun\ ;
+欠勤者 < kekkinsha\ ;
+小作米 < kosakumai\ ;
+泥板岩 < deibangan\ ;
+擬革紙 < gikakushi\ ;
+貴重品 < kichouhin\ ;
+火山礫 < kazanreki\ ;
+顔写真 < kaojashin\ ;
+共演者 < kyouensha\ ;
+救護班 < kyuugohan\ ;
+金蔓 < kanedzuru\ ;
+再循環 < saijunkan\ ;
+意味内容 < iminaiyou\ ;
+荻江節 < ogiebushi\ ;
+集光器 < shuukouki\ ;
+一部分 < ichibubun\ ;
+釣船 < tsuribune\ ;
+装甲車 < soukousha\ ;
+新世紀 < shinseiki\ ;
+予備判事 < yobihanji\ ;
+鉢物 < hachimono\ ;
+浚渫 < shunsetsu\ ;
+淑徳 < shukutoku\ ;
+祝福 < shukufuku\ ;
+裁判官 < saibankan\ ;
+出勤日 < shukkinbi\ ;
+送信機 < soushinki\ ;
+没落 < botsuraku\ ;
+窓口 < madoguchi\ ;
+雑居地 < zakkyochi\ ;
+英数国 < eisuukoku\ ;
+保管料 < hokanryou\ ;
+武家時代 < bukejidai\ ;
+半貴石 < hankiseki\ ;
+軍用機 < gun''youki\ ;
+品柄 < shinagara\ ;
+医療過誤 < iryoukago\ ;
+虎落笛 < mogaribue\ ;
+生還者 < seikansha\ ;
+懇談会 < kondankai\ ;
+未公表 < mikouhyou\ ;
+西洋人 < seiyoujin\ ;
+田舎者 < inakamono\ ;
+吸着 < kyuuchaku\ ;
+消化液 < shoukaeki\ ;
+武家政治 < bukeseiji\ ;
+女王陛下 < joouheika\ ;
+穴居人 < kekkyojin\ ;
+妨業員 < bougyouin\ ;
+風呂敷 < furoshiki\ ;
+口脇 < kuchiwaki\ ;
+何曜日 < nan''youbi\ ;
+警戒線 < keikaisen\ ;
+確説 < kakusetsu\ ;
+交換嬢 < koukanjou\ ;
+大道芸 < daidougei\ ;
+停止線 < teishisen\ ;
+薄緑 < usumidori\ ;
+品数 < shinakazu\ ;
+勉強家 < benkyouka\ ;
+浪漫的 < romanteki\ ;
+勧世縒 < kanzeyori\ ;
+竹細工 < takezaiku\ ;
+産卵口 < sanrankou\ ;
+感動詞 < kandoushi\ ;
+水圧機 < suiatsuki\ ;
+音楽祭 < ongakusai\ ;
+鹿皮 < shikagawa\ ;
+黙殺 < mokusatsu\ ;
+人情本 < ninjoubon\ ;
+皇霊殿 < koureiden\ ;
+恐縮 < kyoushuku\ ;
+使命者 < shimeisha\ ;
+突出 < tosshutsu\ ;
+代用品 < daiyouhin\ ;
+葉菜類 < yousairui\ ;
+都風 < miyakofuu\ ;
+油糟 < aburakasu\ ;
+写真機 < shashinki\ ;
+水質 < suishitsu\ ;
+男伊達 < otokodate\ ;
+兵站線 < heitansen\ ;
+帯電体 < taidentai\ ;
+突入 < totsunyuu\ ;
+文化的 < bunkateki\ ;
+未発表 < mihappyou\ ;
+先住民 < senjuumin\ ;
+途上国 < tojoukoku\ ;
+大気汚染 < taikiosen\ ;
+半音階 < han''onkai\ ;
+白木屋 < shirokiya\ ;
+仕様書 < shiyousho\ ;
+民事的 < minjiteki\ ;
+成層圏 < seisouken\ ;
+蒸気圧 < joukiatsu\ ;
+両替所 < ryougaejo\ ;
+稠密 < choumitsu\ ;
+黒樫 < kurogashi\ ;
+活歴 < katsureki\ ;
+後半戦 < kouhansen\ ;
+口紅 < kuchibeni\ ;
+右端 < migihashi\ ;
+幽寂味 < yuujakumi\ ;
+帝王学 < teiougaku\ ;
+貯水池 < chosuichi\ ;
+薬瓶 < kusuribin\ ;
+哲学 < tetsugaku\ ;
+新世界 < shinsekai\ ;
+命令法 < meireihou\ ;
+基礎工事 < kisokouji\ ;
+現像液 < genzoueki\ ;
+観覧車 < kanransha\ ;
+会社葬 < kaishasou\ ;
+鉄渋 < kanashibu\ ;
+禁酒法 < kinshuhou\ ;
+脳膜炎 < noumakuen\ ;
+収縮 < shuushuku\ ;
+台秤 < daibakari\ ;
+文部省 < monbushou\ ;
+軍事通 < gunjitsuu\ ;
+脳腫瘍 < noushuyou\ ;
+世界一 < sekaiichi\ ;
+必読 < hitsudoku\ ;
+博識 < hakushiki\ ;
+再分配 < saibunpai\ ;
+掛布団 < kakebuton\ ;
+外洋船 < gaiyousen\ ;
+黒松 < kuromatsu\ ;
+組職図 < soshokuzu\ ;
+無理往生 < murioujou\ ;
+交換品 < koukanhin\ ;
+火食鳥 < hikuidori\ ;
+貯水槽 < chosuisou\ ;
+海水魚 < kaisuigyo\ ;
+精進日 < shoujinbi\ ;
+卓識 < takushiki\ ;
+薬物 < yakubutsu\ ;
+三色旗 < sanshokki\ ;
+逃亡者 < toubousha\ ;
+道具箱 < dougubako\ ;
+出廷日 < shutteibi\ ;
+画学紙 < gagakushi\ ;
+氷蝕 < hyoushoku\ ;
+貯蔵所 < chozousho\ ;
+東海道 < toukaidou\ ;
+交換台 < koukandai\ ;
+戦時中 < senjichuu\ ;
+卓説 < takusetsu\ ;
+黒星 < kuroboshi\ ;
+混分数 < konbunsuu\ ;
+生石灰 < seisekkai\ ;
+不検束 < fukensoku\ ;
+小松菜 < komatsuna\ ;
+贈呈者 < zouteisha\ ;
+類概念 < ruigainen\ ;
+任天堂 < nintendou\ ;
+南方産 < nanpousan\ ;
+結納金 < yuinoukin\ ;
+秀抜 < shuubatsu\ ;
+心血 < shinketsu\ ;
+太刀筋 < tachisuji\ ;
+水虫 < mizumushi\ ;
+蔓草 < tsurukusa\ ;
+強飯 < kowameshi\ ;
+熟字訓 < jukujikun\ ;
+声明書 < seimeisho\ ;
+問題点 < mondaiten\ ;
+分工場 < bunkoujou\ ;
+定年制 < teinensei\ ;
+地元紙 < jimotoshi\ ;
+預託金 < yotakukin\ ;
+防空砲 < boukuuhou\ ;
+静圧比 < seiatsuhi\ ;
+葛餅 < kuzumochi\ ;
+回顧録 < kaikoroku\ ;
+鶉豆 < uzuramame\ ;
+両替屋 < ryougaeya\ ;
+人気者 < ninkimono\ ;
+不良品 < furyouhin\ ;
+小便所 < shoubenjo\ ;
+循環性 < junkansei\ ;
+商用化 < shouyouka\ ;
+交換円 < koukan''en\ ;
+試験法 < shikenhou\ ;
+学園祭 < gakuensai\ ;
+何時時分 < itsujibun\ ;
+金盥 < kanadarai\ ;
+口癖 < kuchiguse\ ;
+第六感 < dairokkan\ ;
+貧民街 < hinmingai\ ;
+命令書 < meireisho\ ;
+半導体 < handoutai\ ;
+石頭 < ishiatama\ ;
+鳥黐 < torimochi\ ;
+涙声 < namidagoe\ ;
+兵器廠 < heikishou\ ;
+落髪 < rakuhatsu\ ;
+裁判上 < saibanjou\ ;
+売春婦 < baishunpu\ ;
+勅額 < chokugaku\ ;
+配電所 < haidensho\ ;
+社交界 < shakoukai\ ;
+優勝旗 < yuushouki\ ;
+手品師 < tejinashi\ ;
+髄膜炎 < zuimakuen\ ;
+修道院 < shuudouin\ ;
+卵色 < tamagoiro\ ;
+海蛇座 < umihebiza\ ;
+稲光 < inabikari\ ;
+命令文 < meireibun\ ;
+東洋風 < touyoufuu\ ;
+弟息子 < otomusuko\ ;
+五大国 < godaikoku\ ;
+接骨医 < sekkotsui\ ;
+望遠鏡 < bouenkyou\ ;
+梅雨空 < tsuyuzora\ ;
+工員寮 < kouinryou\ ;
+無遊病 < muyuubyou\ ;
+殿達 < tonotachi\ ;
+国際化 < kokusaika\ ;
+驚異的 < kyouiteki\ ;
+落飾 < rakushoku\ ;
+関東弁 < kantouben\ ;
+相互依存 < sougoizon\ ;
+複合語 < fukugougo\ ;
+弘済会 < kousaikai\ ;
+至近弾 < shikindan\ ;
+本年度 < hon''nendo\ ;
+救護所 < kyuugosho\ ;
+沈着 < chinchaku\ ;
+呑気者 < nonkimono\ ;
+小作権 < kosakuken\ ;
+代理母 < dairihaha\ ;
+分界線 < bunkaisen\ ;
+端境期 < hazakaiki\ ;
+語源学 < gogengaku\ ;
+心電図 < shindenzu\ ;
+健康地 < kenkouchi\ ;
+語彙規則 < goikisoku\ ;
+氏子札 < ujikofuda\ ;
+諸問題 < shomondai\ ;
+口唇期 < koushinki\ ;
+将棋盤 < shougiban\ ;
+獅子唐 < shishitou\ ;
+平信徒 < heishinto\ ;
+祥月 < shoutsuki\ ;
+大気圧 < taikiatsu\ ;
+将軍家 < shougunke\ ;
+千代紙 < chiyogami\ ;
+主戦論 < shusenron\ ;
+劣等生 < rettousei\ ;
+新字体 < shinjitai\ ;
+収率 < shuuritsu\ ;
+納品書 < nouhinsho\ ;
+皇太子 < koutaishi\ ;
+確立 < kakuritsu\ ;
+騒擾罪 < soujouzai\ ;
+半官報 < hankanpou\ ;
+同伴者 < douhansha\ ;
+海鼠板 < namakoban\ ;
+准士官 < junshikan\ ;
+実験者 < jikkensha\ ;
+代理業 < dairigyou\ ;
+一次元 < ichijigen\ ;
+用益権 < youekiken\ ;
+上腕筋 < jouwankin\ ;
+参政権 < sanseiken\ ;
+巡礼者 < junreisha\ ;
+実験群 < jikkengun\ ;
+空景気 < karageiki\ ;
+占者 < uranaisha\ ;
+写真家 < shashinka\ ;
+車椅子 < kurumaisu\ ;
+揮毫料 < kigouryou\ ;
+自己弁護 < jikobengo\ ;
+警告音 < keikokuon\ ;
+教授陣 < kyoujujin\ ;
+初七日 < shonanoka\ ;
+安心感 < anshinkan\ ;
+忠節 < chuusetsu\ ;
+鉢巻 < hachimaki\ ;
+大入道 < oonyuudou\ ;
+社会悪 < shakaiaku\ ;
+咄家 < hanashika\ ;
+主製品 < shuseihin\ ;
+無気力 < mukiryoku\ ;
+社会性 < shakaisei\ ;
+脱脂綿 < dasshimen\ ;
+気象台 < kishoudai\ ;
+命令形 < meireikei\ ;
+論理学 < ronrigaku\ ;
+実体論 < jittairon\ ;
+小会派 < shoukaiha\ ;
+同値性 < douchisei\ ;
+酸性岩 < sanseigan\ ;
+矍鑠 < kakushaku\ ;
+下足番 < gesokuban\ ;
+五十音図 < gojuuonzu\ ;
+斥候兵 < sekkouhei\ ;
+好影響 < koueikyou\ ;
+生化学 < seikagaku\ ;
+試乗車 < shijousha\ ;
+圧制的 < asseiteki\ ;
+炭酸紙 < tansanshi\ ;
+利他主義 < ritashugi\ ;
+再従弟 < saijuutei\ ;
+余計者 < yokeimono\ ;
+毒虫 < dokumushi\ ;
+不寝番 < fushinban\ ;
+理屈屋 < rikutsuya\ ;
+保管人 < hokan''nin\ ;
+優良馬 < yuuryouba\ ;
+運輸量 < un''yuryou\ ;
+卓絶 < takuzetsu\ ;
+太平洋 < taiheiyou\ ;
+貯蔵品 < chozouhin\ ;
+単糖類 < tantourui\ ;
+取消 < torikeshi\ ;
+聚楽第 < jurakudai\ ;
+生半可 < namahanka\ ;
+周密 < shuumitsu\ ;
+蒟蒻 < kon''nyaku\ ;
+協議所 < kyougisho\ ;
+今年度 < kon''nendo\ ;
+各月 < kakutsuki\ ;
+段袋 < danbukuro\ ;
+社会層 < shakaisou\ ;
+思春期 < shishunki\ ;
+放射性 < houshasei\ ;
+虫媒花 < chuubaika\ ;
+加持祈祷 < kajikitou\ ;
+内向性 < naikousei\ ;
+優待券 < yuutaiken\ ;
+四人組 < yoningumi\ ;
+退嬰的 < taieiteki\ ;
+善後策 < zengosaku\ ;
+収没 < shuubotsu\ ;
+鉄屑 < tetsukuzu\ ;
+助手席 < joshuseki\ ;
+火木金 < kamokukin\ ;
+卓筆 < takuhitsu\ ;
+氏子帳 < ujikochou\ ;
+皇太后 < koutaigou\ ;
+取次 < toritsugi\ ;
+特攻隊 < tokkoutai\ ;
+卓立 < takuritsu\ ;
+遺言者 < yuigonsha\ ;
+郷土史 < kyoudoshi\ ;
+正道 < masamichi\ ;
+付属校 < fuzokukou\ ;
+沈没 < chinbotsu\ ;
+統治者 < touchisha\ ;
+名人芸 < meijingei\ ;
+凄文句 < sugomonku\ ;
+戦災者 < sensaisha\ ;
+試作機 < shisakuki\ ;
+黄枯茶 < kigaracha\ ;
+胃腸薬 < ichouyaku\ ;
+毒舌 < dokuzetsu\ ;
+陽電子 < youdenshi\ ;
+磨汁 < togishiru\ ;
+文殊様 < monjusama\ ;
+役職 < yakushoku\ ;
+付属書 < fuzokusho\ ;
+討論者 < touronsha\ ;
+多汗症 < takanshou\ ;
+碧玉 < hekigyoku\ ;
+投手陣 < toushujin\ ;
+中継所 < chuukeijo\ ;
+根拠地 < konkyochi\ ;
+法人税 < houjinzei\ ;
+地元民 < jimotomin\ ;
+年期者 < nenkimono\ ;
+酷熱 < kokunetsu\ ;
+花卉園芸 < kakiengei\ ;
+音楽性 < ongakusei\ ;
+被告人 < hikokunin\ ;
+文化庁 < bunkachou\ ;
+偏向板 < henkouban\ ;
+背任罪 < haininzai\ ;
+傍観者 < boukansha\ ;
+蔵浚 < kurazarae\ ;
+星状体 < seijoutai\ ;
+消化剤 < shoukazai\ ;
+欧州版 < oushuuban\ ;
+和製英語 < waseieigo\ ;
+口早 < kuchibaya\ ;
+小豆粥 < azukigayu\ ;
+汁物 < shirumono\ ;
+系図学 < keizugaku\ ;
+酷烈 < kokuretsu\ ;
+仮名手本 < kanadehon\ ;
+蓄積 < chikuseki\ ;
+書簡箋 < shokansen\ ;
+再配分 < saihaibun\ ;
+弱虫 < yowamushi\ ;
+協議官 < kyougikan\ ;
+同類項 < douruikou\ ;
+自転軸 < jitenjiku\ ;
+忠烈 < chuuretsu\ ;
+上甲板 < joukanpan\ ;
+惜別 < sekibetsu\ ;
+全地方 < zenchihou\ ;
+会社法 < kaishahou\ ;
+活劇 < katsugeki\ ;
+奉仕品 < houshihin\ ;
+截拳道 < sekkendou\ ;
+台所 < daidokoro\ ;
+仕舞屋 < shimotaya\ ;
+折衷案 < setchuuan\ ;
+航空隊 < koukuutai\ ;
+蝦蟇口 < gamaguchi\ ;
+禁止法 < kinshihou\ ;
+道具方 < dougukata\ ;
+後程 < nochihodo\ ;
+旦那芸 < dan''nagei\ ;
+扶養料 < fuyouryou\ ;
+弓術 < kyuujutsu\ ;
+不信心 < fushinjin\ ;
+遠近 < ochikochi\ ;
+力説 < rikisetsu\ ;
+平安朝 < heianchou\ ;
+内野席 < naiyaseki\ ;
+因果律 < ingaritsu\ ;
+英和辞典 < eiwajiten\ ;
+軽演劇 < keiengeki\ ;
+予備会議 < yobikaigi\ ;
+板金工 < bankinkou\ ;
+定価表 < teikahyou\ ;
+篤志家 < tokushika\ ;
+鴬色 < uguisuiro\ ;
+試験場 < shikenjou\ ;
+旅行者 < ryokousha\ ;
+歯齦炎 < shigin''en\ ;
+蛸坊主 < takobouzu\ ;
+博物 < hakubutsu\ ;
+参政官 < sanseikan\ ;
+軍事的 < gunjiteki\ ;
+古銭学 < kosengaku\ ;
+軍官憲 < gunkanken\ ;
+関数論 < kansuuron\ ;
+治療費 < chiryouhi\ ;
+毒筆 < dokuhitsu\ ;
+呑口 < nomiguchi\ ;
+命乞 < inochigoi\ ;
+板金屋 < bankin''ya\ ;
+操車場 < soushajou\ ;
+投融資 < touyuushi\ ;
+社交性 < shakousei\ ;
+擬爆弾 < gibakudan\ ;
+竹蜻蛉 < taketonbo\ ;
+恋心 < koigokoro\ ;
+超党派 < choutouha\ ;
+問題外 < mondaigai\ ;
+一般的 < ippanteki\ ;
+資本金 < shihonkin\ ;
+悪口 < waruguchi\ ;
+男子用 < danshiyou\ ;
+初雪 < hatsuyuki\ ;
+社会党 < shakaitou\ ;
+厭世的 < enseiteki\ ;
+弱腰 < yowagoshi\ ;
+訓練生 < kunrensei\ ;
+逆鞘 < gyakuzaya\ ;
+贈呈本 < zouteibon\ ;
+二院制度 < niinseido\ ;
+年頃 < toshigoro\ ;
+家族法 < kazokuhou\ ;
+人気株 < ninkikabu\ ;
+読後感 < dokugokan\ ;
+単細胞 < tansaibou\ ;
+鳴禽類 < meikinrui\ ;
+内部的 < naibuteki\ ;
+練兵場 < renpeijou\ ;
+夏期時間 < kakijikan\ ;
+大前提 < daizentei\ ;
+着陸 < chakuriku\ ;
+再従兄 < saijuukei\ ;
+告別 < kokubetsu\ ;
+可動橋 < kadoukyou\ ;
+水油 < mizuabura\ ;
+氷水 < koorimizu\ ;
+音楽堂 < ongakudou\ ;
+荒隠元 < sayaingen\ ;
+井戸屋形 < idoyakata\ ;
+洗礼名 < senreimei\ ;
+現業員 < gengyouin\ ;
+一工夫 < hitokufuu\ ;
+前輿 < sakigoshi\ ;
+号室 < goushitsu\ ;
+膝小僧 < hizakozou\ ;
+自己矛盾 < jikomujun\ ;
+作詞家 < sakushika\ ;
+作為的 < sakuiteki\ ;
+小宇宙 < shouuchuu\ ;
+風水害 < fuusuigai\ ;
+大車輪 < daisharin\ ;
+改定版 < kaiteihan\ ;
+社会人 < shakaijin\ ;
+悪影響 < akueikyou\ ;
+西部劇 < seibugeki\ ;
+雑貨商 < zakkashou\ ;
+劣等感 < rettoukan\ ;
+出願 < shutsugan\ ;
+透明性 < toumeisei\ ;
+出題 < shutsudai\ ;
+若夫婦 < wakafuufu\ ;
+鱗雲 < urokogumo\ ;
+鴃舌 < gekizetsu\ ;
+陰陽道 < onmyoudou\ ;
+休憩所 < kyuukeijo\ ;
+配給所 < haikyuujo\ ;
+装身具 < soushingu\ ;
+無欠席 < mukesseki\ ;
+自制心 < jiseishin\ ;
+通釈 < tsuushaku\ ;
+砂粒 < sunatsubu\ ;
+副作用 < fukusayou\ ;
+再選挙 < saisenkyo\ ;
+隠匿者 < intokusha\ ;
+同人種 < doujinshu\ ;
+運送業 < unsougyou\ ;
+内務省 < naimushou\ ;
+炭酸水 < tansansui\ ;
+衛生的 < eiseiteki\ ;
+再発行 < saihakkou\ ;
+遺言状 < yuigonjou\ ;
+速達 < sokutatsu\ ;
+点眼水 < tengansui\ ;
+軽合金 < keigoukin\ ;
+一発屋 < ippatsuya\ ;
+出陣 < shutsujin\ ;
+全製品 < zenseihin\ ;
+通達 < tsuutatsu\ ;
+応召者 < oushousha\ ;
+初釜 < hatsugama\ ;
+古印紙 < furuinshi\ ;
+資本財 < shihonzai\ ;
+回顧的 < kaikoteki\ ;
+二親等 < nishintou\ ;
+交戦権 < kousenken\ ;
+広報誌 < kouhoushi\ ;
+例年祭 < reinensai\ ;
+予防薬 < yobouyaku\ ;
+和声学 < waseigaku\ ;
+出門 < shutsumon\ ;
+音楽史 < ongakushi\ ;
+萎縮腎 < ishukujin\ ;
+盗聴器 < touchouki\ ;
+予約金 < yoyakukin\ ;
+釣堀 < tsuribori\ ;
+春場所 < harubasho\ ;
+租庸調 < soyouchou\ ;
+近頃 < chikagoro\ ;
+鳶職 < tobishoku\ ;
+原子論 < genshiron\ ;
+無機物 < mukibutsu\ ;
+決議案 < ketsugian\ ;
+創作家 < sousakuka\ ;
+爛熟期 < ranjukuki\ ;
+中間派 < chuukanha\ ;
+石筆 < sekihitsu\ ;
+里程標 < riteihyou\ ;
+資本論 < shihonron\ ;
+今様歌 < imayouuta\ ;
+石竹 < sekichiku\ ;
+引綱 < hikidzuna\ ;
+会津塗 < aidzunuri\ ;
+丸坊主 < marubouzu\ ;
+移植性 < ishokusei\ ;
+短筒 < tandzutsu\ ;
+別天地 < bettenchi\ ;
+毒物 < dokubutsu\ ;
+即日 < sokujitsu\ ;
+防空壕 < boukuugou\ ;
+逃道 < nigemichi\ ;
+運送料 < unsouryou\ ;
+神主 < kan''nushi\ ;
+幽霊船 < yuureisen\ ;
+伯備線 < hakubisen\ ;
+胃腸病 < ichoubyou\ ;
+危機管理 < kikikanri\ ;
+合印 < aijirushi\ ;
+基礎体温 < kisotaion\ ;
+卒業 < sotsugyou\ ;
+告示板 < kokujiban\ ;
+小作人 < kosakunin\ ;
+離間策 < rikansaku\ ;
+勝着 < shouchaku\ ;
+弱 < nayonayo\ ;
+蹲 < tsukubai\ ;
+姑 < shuutome\ ;
+塊 < katamari\ ;
+堤 < tsutsumi\ ;
+鼓 < tsudzumi\ ;
+源 < minamoto\ ;
+鶏 < niwatori\ ;
+叢 < kusamura\ ;
+印 < shirushi\ ;
+魂 < tamashii\ ;
+腸 < harawata\ ;
+杯 < sakazuki\ ;
+雷 < kaminari\ ;
+雁 < karigane\ ;
+暁 < akatsuki\ ;
+紫 < murasaki\ ;
+掌 < tenohira\ ;
+抑 < somosomo\ ;
+懐 < futokoro\ ;
+吐出 < toshutsu\ ;
+金型 < kanagata\ ;
+石神 < shakujin\ ;
+名刹 < meisatsu\ ;
+弾着 < danchaku\ ;
+落籍 < rakuseki\ ;
+矢筒 < yadzutsu\ ;
+心服 < shinpuku\ ;
+逆転 < gyakuten\ ;
+合力 < gouryoku\ ;
+薙刀 < naginata\ ;
+同列 < douretsu\ ;
+民数記 < minsuuki\ ;
+鉄砲座 < teppouza\ ;
+盂蘭盆会 < urabon''e\ ;
+文化人 < bunkajin\ ;
+木工所 < mokkoujo\ ;
+医科歯科 < ikashika\ ;
+直面 < chokumen\ ;
+一般法 < ippanhou\ ;
+復業 < fukugyou\ ;
+薄口 < usukuchi\ ;
+労務者 < roumusha\ ;
+草食 < soushoku\ ;
+文庫本 < bunkobon\ ;
+常闇 < tokoyami\ ;
+合冊 < gousatsu\ ;
+剥落 < hakuraku\ ;
+茶髪 < chapatsu\ ;
+速読 < sokudoku\ ;
+厳密 < genmitsu\ ;
+代理人 < dairinin\ ;
+海水着 < kaisuigi\ ;
+出郷 < shukkyou\ ;
+厚底 < atsuzoko\ ;
+自己流 < jikoryuu\ ;
+引窓 < hikimado\ ;
+丁寧語 < teineigo\ ;
+分轄 < bunkatsu\ ;
+音楽会 < ongakkai\ ;
+同胞愛 < douhouai\ ;
+通読 < tsuudoku\ ;
+毛唐人 < ketoujin\ ;
+民事上 < minjijou\ ;
+淡彩画 < tansaiga\ ;
+期待値 < kitaichi\ ;
+遜色 < sonshoku\ ;
+全裸体 < zenratai\ ;
+立体派 < rittaiha\ ;
+追跡 < tsuiseki\ ;
+勲爵 < kunshaku\ ;
+護送船 < gosousen\ ;
+通訳 < tsuuyaku\ ;
+野蛮人 < yabanjin\ ;
+只只 < tadatada\ ;
+友垣 < tomogaki\ ;
+女性軍 < joseigun\ ;
+同趣味 < doushumi\ ;
+半月 < hantsuki\ ;
+可動性 < kadousei\ ;
+不養生 < fuyoujou\ ;
+飽和点 < houwaten\ ;
+真迹 < shinseki\ ;
+既往症 < kioushou\ ;
+吉例 < kitsurei\ ;
+近鉄 < kintetsu\ ;
+茶飯 < chameshi\ ;
+別言 < betsugen\ ;
+殖産 < shokusan\ ;
+金口 < kinguchi\ ;
+造血 < zouketsu\ ;
+鳥籠 < torikago\ ;
+勃発 < boppatsu\ ;
+建築 < kenchiku\ ;
+一致点 < itchiten\ ;
+出身 < shusshin\ ;
+筆記者 < hikkisha\ ;
+十月 < juugatsu\ ;
+送風機 < soufuuki\ ;
+口占 < kuchiura\ ;
+姫御子 < himemiko\ ;
+手配書 < tehaisho\ ;
+正立 < seiritsu\ ;
+鯨骨 < geikotsu\ ;
+求心 < kyuushin\ ;
+相鎚 < aidzuchi\ ;
+眼識 < ganshiki\ ;
+脳珊瑚 < nousango\ ;
+上層土 < jousoudo\ ;
+心拍 < shinpaku\ ;
+予約語 < yoyakugo\ ;
+彼此 < karekore\ ;
+油槽船 < yusousen\ ;
+歯磨 < hamigaki\ ;
+帝闕 < teiketsu\ ;
+一寸見 < chottomi\ ;
+予防線 < yobousen\ ;
+勘定日 < kanjoubi\ ;
+内鰐 < uchiwani\ ;
+古創 < furukizu\ ;
+鴨猟 < kamoryou\ ;
+没却 < bokkyaku\ ;
+内帑金 < naidokin\ ;
+金力 < kinryoku\ ;
+右側 < migigawa\ ;
+出超 < shutchou\ ;
+口前 < kuchimae\ ;
+伝送路 < densouro\ ;
+刻薄 < kokuhaku\ ;
+銀細工 < ginzaiku\ ;
+人相見 < ninsoumi\ ;
+水性 < mizushou\ ;
+広袖 < hirosode\ ;
+重力 < juuryoku\ ;
+風刺画 < fuushiga\ ;
+相鉄 < soutetsu\ ;
+荷車 < niguruma\ ;
+動物 < doubutsu\ ;
+午餐会 < gosankai\ ;
+知略 < chiryaku\ ;
+目録 < mokuroku\ ;
+無欠勤 < mukekkin\ ;
+比重計 < hijuukei\ ;
+切論 < setsuron\ ;
+運送店 < unsouten\ ;
+凶賊 < kyouzoku\ ;
+操作盤 < sousaban\ ;
+着装 < chakusou\ ;
+在庫品 < zaikohin\ ;
+遅脈 < chimyaku\ ;
+水引 < mizuhiki\ ;
+橈骨 < toukotsu\ ;
+殲滅 < senmetsu\ ;
+冠雪 < kansetsu\ ;
+北極 < hokkyoku\ ;
+幻術 < genjutsu\ ;
+氷床 < hyoushou\ ;
+劃策 < kakusaku\ ;
+民主化 < minshuka\ ;
+即席 < sokuseki\ ;
+延滞金 < entaikin\ ;
+又又 < matamata\ ;
+水底 < minasoko\ ;
+唐破風 < karahafu\ ;
+直配 < chokuhai\ ;
+切言 < setsugen\ ;
+自公民 < jikoumin\ ;
+急告 < kyuukoku\ ;
+釈典 < shakuten\ ;
+賢夫人 < kenpujin\ ;
+毫末 < goumatsu\ ;
+半折 < hansetsu\ ;
+平袖 < hirasode\ ;
+二度手間 < nidodema\ ;
+鯛飯 < taimeshi\ ;
+運転者 < untensha\ ;
+切要 < setsuyou\ ;
+巻雲 < makigumo\ ;
+不格好 < bukakkou\ ;
+催淫剤 < saiinzai\ ;
+残物 < zanbutsu\ ;
+栄養短 < eiyoutan\ ;
+態々 < wazawaza\ ;
+劫略 < gouryaku\ ;
+反別 < tanbetsu\ ;
+正直 < shoujiki\ ;
+医学界 < igakukai\ ;
+効率 < kouritsu\ ;
+無常感 < mujoukan\ ;
+只事 < tadagoto\ ;
+碩学 < sekigaku\ ;
+背格好 < sekakkou\ ;
+山査子 < sanzashi\ ;
+医学生 < igakusei\ ;
+水嵩 < mizukasa\ ;
+開業医 < kaigyoui\ ;
+直送 < chokusou\ ;
+分裂 < bunretsu\ ;
+役柄 < yakugara\ ;
+凌辱 < ryoujoku\ ;
+律文 < ritsubun\ ;
+程々 < hodohodo\ ;
+収入 < shuunyuu\ ;
+便衣隊 < ben''itai\ ;
+若鶏 < wakadori\ ;
+沈勇 < chin''yuu\ ;
+双六 < sugoroku\ ;
+廃絶 < haizetsu\ ;
+幹事会 < kanjikai\ ;
+道糸 < michiito\ ;
+多原子 < tagenshi\ ;
+創立 < souritsu\ ;
+協心 < kyoushin\ ;
+北朝 < hokuchou\ ;
+勇烈 < yuuretsu\ ;
+性別 < seibetsu\ ;
+勃然 < botsuzen\ ;
+十字形 < juujikei\ ;
+単式 < tanshiki\ ;
+外野手 < gaiyashu\ ;
+健胃錠 < ken''ijou\ ;
+関西馬 < kansaiba\ ;
+指示詞 < shijishi\ ;
+参列 < sanretsu\ ;
+明日葉 < ashitaba\ ;
+気心 < kigokoro\ ;
+短距離 < tankyori\ ;
+一軒屋 < ikken''ya\ ;
+川風 < kawakaze\ ;
+芸備線 < geibisen\ ;
+刀術 < toujutsu\ ;
+匡救 < kyoukyuu\ ;
+死物 < shibutsu\ ;
+刳舟 < kuribune\ ;
+陣太鼓 < jindaiko\ ;
+真冬日 < mafuyubi\ ;
+四季報 < shikihou\ ;
+分蝕 < bunshoku\ ;
+白鳥 < hakuchou\ ;
+兵食 < heishoku\ ;
+殿様 < tonosama\ ;
+参入 < san''nyuu\ ;
+受付 < uketsuke\ ;
+単帯 < hitoeobi\ ;
+矯激 < kyougeki\ ;
+怪傑 < kaiketsu\ ;
+刺股 < sasumata\ ;
+汲取 < kumitori\ ;
+砂浜 < sunahama\ ;
+繁華街 < hankagai\ ;
+訓練所 < kunrenjo\ ;
+達筆 < tappitsu\ ;
+海水温 < kaisuion\ ;
+筋電図 < kindenzu\ ;
+割礼 < katsurei\ ;
+毎月 < maitsuki\ ;
+泌尿幾 < hinyouki\ ;
+升形 < masugata\ ;
+不安心 < fuanshin\ ;
+川霧 < kawagiri\ ;
+劇的 < gekiteki\ ;
+訪問着 < houmongi\ ;
+分蘖 < bunketsu\ ;
+会社員 < kaishain\ ;
+叔世 < shukusei\ ;
+兀鷹 < hagetaka\ ;
+法王権 < hououken\ ;
+勘決 < kanketsu\ ;
+不導体 < fudoutai\ ;
+単試合 < tanshiai\ ;
+即妙 < sokumyou\ ;
+剣突 < kentsuku\ ;
+必定 < hitsujou\ ;
+前約 < zen''yaku\ ;
+劇痛 < gekitsuu\ ;
+午年 < umadoshi\ ;
+平落 < hiraochi\ ;
+硬式 < koushiki\ ;
+写生画 < shaseiga\ ;
+常識 < joushiki\ ;
+管理人 < kanrinin\ ;
+心学 < shingaku\ ;
+毎日 < mainichi\ ;
+白骨 < hakkotsu\ ;
+一家言 < ikkagoto\ ;
+升席 < masuseki\ ;
+同期生 < doukisei\ ;
+横風 < yokokaze\ ;
+丁定規 < teijougi\ ;
+鰐足 < waniashi\ ;
+遅筆 < chihitsu\ ;
+母方 < hahakata\ ;
+守備隊 < shubitai\ ;
+氷壁 < hyouheki\ ;
+瞞着 < manchaku\ ;
+辛辛 < karagara\ ;
+相識 < soushiki\ ;
+菜箸 < saibashi\ ;
+併合罪 < heigozai\ ;
+週給 < shuukyuu\ ;
+八面 < hachimen\ ;
+博学 < hakugaku\ ;
+殖民 < shokumin\ ;
+進級 < shinkyuu\ ;
+気無精 < kibushou\ ;
+三枚目 < sanmaime\ ;
+前節 < zensetsu\ ;
+得心 < tokushin\ ;
+手配師 < tehaishi\ ;
+着船 < chakusen\ ;
+引潮 < hikishio\ ;
+常設 < jousetsu\ ;
+無自覚 < mujikaku\ ;
+得得 < tokutoku\ ;
+落潮 < rakuchou\ ;
+弱毒 < jakudoku\ ;
+厥冷 < ketsurei\ ;
+蔵元 < kuramoto\ ;
+建物 < tatemono\ ;
+死滅 < shimetsu\ ;
+勇決 < yuuketsu\ ;
+先高 < sakidaka\ ;
+発駅 < hatsueki\ ;
+火事泥 < kajidoro\ ;
+退色 < taishoku\ ;
+気室 < kishitsu\ ;
+人工語 < jinkougo\ ;
+既往歴 < kioureki\ ;
+円錐 < marugiri\ ;
+一般性 < ippansei\ ;
+勝楽 < shouraku\ ;
+年月日 < nengappi\ ;
+兎馬 < usagiuma\ ;
+当月 < tougetsu\ ;
+千島 < chishima\ ;
+横雲 < yokogumo\ ;
+変成器 < henseiki\ ;
+徐徐 < sorosoro\ ;
+元高 < motodaka\ ;
+未信者 < mishinja\ ;
+師説 < shisetsu\ ;
+包摂 < housetsu\ ;
+殿方 < tonogata\ ;
+民宿 < minshuku\ ;
+不案内 < fuan''nai\ ;
+自棄酒 < yakezake\ ;
+塑弾性 < sodansei\ ;
+武器倉 < bukigura\ ;
+連結 < renketsu\ ;
+聴音器 < chouonki\ ;
+直言 < chokugen\ ;
+平仮名 < hiragana\ ;
+彎月 < wangetsu\ ;
+感知器 < kanchiki\ ;
+巡錫 < junshaku\ ;
+彎曲 < wankyoku\ ;
+直角 < chokkaku\ ;
+廉直 < renchoku\ ;
+直視 < chokushi\ ;
+死活 < shikatsu\ ;
+心境 < shinkyou\ ;
+平脈 < heimyaku\ ;
+当日 < toujitsu\ ;
+前半期 < zenpanki\ ;
+復学 < fukugaku\ ;
+入閣 < nyuukaku\ ;
+空論家 < kuuronka\ ;
+恵比寿顔 < ebisugao\ ;
+横長 < yokonaga\ ;
+死没 < shibotsu\ ;
+包括 < houkatsu\ ;
+忠告 < chuukoku\ ;
+巻軸 < makijiku\ ;
+農閑期 < noukanki\ ;
+百雷 < hyakurai\ ;
+不賛成 < fusansei\ ;
+百難 < hyakunan\ ;
+養鶏家 < youkeika\ ;
+出芽 < shutsuga\ ;
+菅笠 < sugegasa\ ;
+剛直 < gouchoku\ ;
+十二支 < juunishi\ ;
+加湿 < kashitsu\ ;
+構成比 < kouseihi\ ;
+向日葵 < himawari\ ;
+発電 < hatsuden\ ;
+分脈 < bunmyaku\ ;
+監訳 < kan''yaku\ ;
+遅着 < chichaku\ ;
+機業家 < kigyouka\ ;
+党閥 < toubatsu\ ;
+別納 < betsunou\ ;
+刑罰 < keibatsu\ ;
+内達 < naitatsu\ ;
+水滸伝 < suikoden\ ;
+御嬢様 < ojousama\ ;
+心嚢 < shin''nou\ ;
+役得 < yakutoku\ ;
+臨床医 < rinshoui\ ;
+連立 < renritsu\ ;
+郷愁 < kyoushuu\ ;
+彷彿 < houfutsu\ ;
+庭石 < niwaishi\ ;
+切者 < kiremono\ ;
+遅発 < chihatsu\ ;
+栄養源 < eiyougen\ ;
+多年草 < tanensou\ ;
+荷厄介 < niyakkai\ ;
+元鞘 < motosaya\ ;
+励磁損 < reijison\ ;
+安全瓣 < anzenben\ ;
+重酸素 < juusanso\ ;
+忘却 < boukyaku\ ;
+歴歴 < rekireki\ ;
+二塁手 < niruishu\ ;
+確信 < kakushin\ ;
+石柱 < sekichuu\ ;
+木工具 < mokkougu\ ;
+欠番 < ketsuban\ ;
+彰徳 < shoutoku\ ;
+点眼器 < tenganki\ ;
+愚図愚図 < guzuguzu\ ;
+鱈腹 < tarafuku\ ;
+割物 < waremono\ ;
+幕臣 < bakushin\ ;
+入鋏 < nyuukyou\ ;
+莫大小 < meriyasu\ ;
+製鋼所 < seikoujo\ ;
+軽鴨 < karugamo\ ;
+隠蔽子 < inpeishi\ ;
+勘定場 < kanjouba\ ;
+羽団扇 < hauchiwa\ ;
+念仏 < nenbutsu\ ;
+破戒僧 < hakaisou\ ;
+瀬戸物 < setomono\ ;
+菊石 < kikuishi\ ;
+冷血 < reiketsu\ ;
+平絹 < hiraginu\ ;
+酒呑 < sakenomi\ ;
+葉桜 < hazakura\ ;
+着米 < chakubei\ ;
+大英断 < daieidan\ ;
+強敵 < kyouteki\ ;
+求償 < kyuushou\ ;
+通称 < tsuushou\ ;
+忠僕 < chuuboku\ ;
+水力 < suiryoku\ ;
+残月 < zangetsu\ ;
+勅書 < chokusho\ ;
+先議権 < sengiken\ ;
+共通 < kyoutsuu\ ;
+反抗期 < hankouki\ ;
+本会議 < honkaigi\ ;
+前略 < zenryaku\ ;
+殊更 < kotosara\ ;
+弦月 < gengetsu\ ;
+英米人 < eibeijin\ ;
+低順位 < teijun''i\ ;
+目薬 < megusuri\ ;
+不老泉 < furousen\ ;
+協商 < kyoushou\ ;
+百錬 < hyakuren\ ;
+公達 < koutatsu\ ;
+弱敵 < jakuteki\ ;
+逆算 < gyakusan\ ;
+黙々 < mokumoku\ ;
+八達 < hattatsu\ ;
+八道 < hachidou\ ;
+北山 < kitayama\ ;
+剿滅 < soumetsu\ ;
+名宛人 < naatenin\ ;
+和気藹藹 < wakiaiai\ ;
+自由詩 < jiyuushi\ ;
+廃物 < haibutsu\ ;
+公述 < koujutsu\ ;
+忠信 < chuushin\ ;
+皮質 < hishitsu\ ;
+石文 < ishibumi\ ;
+形式 < keishiki\ ;
+凋落 < chouraku\ ;
+意志的 < ishiteki\ ;
+卸値 < oroshine\ ;
+戦闘員 < sentouin\ ;
+原画像 < gengazou\ ;
+短日 < tanjitsu\ ;
+水先 < mizusaki\ ;
+巷説 < kousetsu\ ;
+大腿部 < daitaibu\ ;
+共軛 < kyouyaku\ ;
+黒々 < kuroguro\ ;
+剥焼 < sukiyaki\ ;
+滋賀県 < shigaken\ ;
+重水素 < juusuiso\ ;
+逢着 < houchaku\ ;
+廃熱 < hainetsu\ ;
+人造湖 < jinzouko\ ;
+役宅 < yakutaku\ ;
+到着 < touchaku\ ;
+請負師 < ukeoishi\ ;
+茹蛸 < yudedako\ ;
+水準器 < suijunki\ ;
+漫画本 < mangahon\ ;
+不真面目 < fumajime\ ;
+再説 < saisetsu\ ;
+連発 < renpatsu\ ;
+復唱 < fukushou\ ;
+知日 < chinichi\ ;
+徴収 < choushuu\ ;
+勅撰 < chokusen\ ;
+互換性 < gokansei\ ;
+分節 < bunsetsu\ ;
+配列 < hairetsu\ ;
+種種相 < shujusou\ ;
+処罰 < shobatsu\ ;
+予防法 < yobouhou\ ;
+安全灯 < anzentou\ ;
+歴朝 < rekichou\ ;
+劇毒 < gekidoku\ ;
+追究 < tsuikyuu\ ;
+歳末 < saimatsu\ ;
+横軸 < yokojiku\ ;
+分筆 < bunpitsu\ ;
+輯録 < shuuroku\ ;
+半口 < hankuchi\ ;
+運送人 < unsounin\ ;
+十哲 < juttetsu\ ;
+百選 < hyakusen\ ;
+上首尾 < joushubi\ ;
+仏舎利 < busshari\ ;
+與太者 < yotamono\ ;
+満天下 < mantenka\ ;
+得手勝手 < etekatte\ ;
+先金 < sakigane\ ;
+軽食 < keishoku\ ;
+分立 < bunritsu\ ;
+価格差 < kakakusa\ ;
+内訳 < uchiwake\ ;
+追福 < tsuifuku\ ;
+無花果 < ichijiku\ ;
+欲深 < yokubuka\ ;
+不人情 < funinjou\ ;
+土建屋 < doken''ya\ ;
+歪曲 < waikyoku\ ;
+入超 < nyuuchou\ ;
+割注 < warichuu\ ;
+民力 < minryoku\ ;
+遮断機 < shadanki\ ;
+乱杭歯 < ranguiba\ ;
+蝋細工 < rouzaiku\ ;
+北壁 < hokuheki\ ;
+糜爛性 < biransei\ ;
+貴公子 < kikoushi\ ;
+廃滅 < haimetsu\ ;
+水上 < minakami\ ;
+初盆 < hatsubon\ ;
+廉価版 < renkaban\ ;
+正札 < shoufuda\ ;
+入賞 < nyuushou\ ;
+先達 < sendatsu\ ;
+止木 < tomarigi\ ;
+着眼 < chakugan\ ;
+初発 < shohatsu\ ;
+原子炉 < genshiro\ ;
+転換炉 < tenkanro\ ;
+黎明期 < reimeiki\ ;
+軟骨 < nankotsu\ ;
+菖蒲湯 < shoubuyu\ ;
+無駄骨 < mudabone\ ;
+類似品 < ruijihin\ ;
+飛行隊 < hikoutai\ ;
+当局 < toukyoku\ ;
+殺害 < satsugai\ ;
+金鳳花 < kinpouge\ ;
+黒雲母 < kurounmo\ ;
+落掌 < rakushou\ ;
+相手方 < aitegata\ ;
+不完全 < fukanzen\ ;
+強弱 < kyoujaku\ ;
+心中 < shinchuu\ ;
+祖国愛 < sokokuai\ ;
+平皿 < hirazara\ ;
+募集費 < boshuuhi\ ;
+初産 < hatsuzan\ ;
+常緑 < jouryoku\ ;
+生産費 < seisanhi\ ;
+統合化 < tougouka\ ;
+旅行家 < ryokouka\ ;
+社外秘 < shagaihi\ ;
+南仏 < nanfutsu\ ;
+従価税 < juukazei\ ;
+十八 < juuhachi\ ;
+使徒書 < shitosho\ ;
+適業 < tekigyou\ ;
+鬱鬱 < utsuutsu\ ;
+追白 < tsuihaku\ ;
+従卒 < juusotsu\ ;
+御冠 < okanmuri\ ;
+律呂 < ritsuryo\ ;
+辣腕 < ratsuwan\ ;
+着用 < chakuyou\ ;
+逆用 < gyakuyou\ ;
+逆産 < gyakuzan\ ;
+六親 < rokushin\ ;
+後口 < atokuchi\ ;
+寝化粧 < negeshou\ ;
+創世期 < souseiki\ ;
+金目鯛 < kinmedai\ ;
+単一 < tan''itsu\ ;
+帯緑 < tairyoku\ ;
+石弓 < ishiyumi\ ;
+選曲 < senkyoku\ ;
+通牒 < tsuuchou\ ;
+上下線 < jougesen\ ;
+理事国 < rijikoku\ ;
+水準儀 < suijungi\ ;
+再保険 < saihoken\ ;
+県立 < kenritsu\ ;
+別状 < betsujou\ ;
+下馬先 < gebasaki\ ;
+凍結 < touketsu\ ;
+寄付行為 < kifukoui\ ;
+泉貨紙 < senkashi\ ;
+御令嬢 < goreijou\ ;
+川蝉 < kawasemi\ ;
+郷国 < kyoukoku\ ;
+追申 < tsuishin\ ;
+電気街 < denkigai\ ;
+砂山 < sunayama\ ;
+律動 < ritsudou\ ;
+正接 < seisetsu\ ;
+迫真 < hakushin\ ;
+軍政部 < gunseibu\ ;
+御題目 < odaimoku\ ;
+省筆 < seihitsu\ ;
+弟御 < otoutogo\ ;
+凄絶 < seizetsu\ ;
+後列 < kouretsu\ ;
+無保証 < muhoshou\ ;
+可分性 < kabunsei\ ;
+亜鉛鉄 < aentetsu\ ;
+動安定 < douantei\ ;
+年率 < nenritsu\ ;
+刑事上 < keijijou\ ;
+女性用 < joseiyou\ ;
+冗舌 < jouzetsu\ ;
+標註 < hyouchuu\ ;
+真白 < masshiro\ ;
+典薬 < ten''yaku\ ;
+乾燥炉 < kansouro\ ;
+弱少 < jakushou\ ;
+育児法 < ikujihou\ ;
+直答 < chokutou\ ;
+石山 < ishiyama\ ;
+茜色 < akaneiro\ ;
+発言 < hatsugen\ ;
+愛鳥家 < aichouka\ ;
+本舞台 < honbutai\ ;
+個人性 < kojinsei\ ;
+弓形 < yuminari\ ;
+副木 < fukuboku\ ;
+依存症 < izonshou\ ;
+真症 < shinshou\ ;
+劣情 < retsujou\ ;
+悪性度 < akuseido\ ;
+冥罰 < meibatsu\ ;
+神々 < kamigami\ ;
+劣悪 < retsuaku\ ;
+鮮血 < senketsu\ ;
+美男子 < binanshi\ ;
+役割 < yakuwari\ ;
+石室 < ishimuro\ ;
+若衆 < wakashuu\ ;
+母君 < hahagimi\ ;
+電波法 < denpahou\ ;
+軍事上 < gunjijou\ ;
+平熱 < heinetsu\ ;
+直税 < chokuzei\ ;
+近着 < kinchaku\ ;
+道板 < michiita\ ;
+烏犀角 < usaikaku\ ;
+矩尺 < kanejaku\ ;
+偏微分 < henbibun\ ;
+素寒貧 < sukanpin\ ;
+豚小屋 < butagoya\ ;
+延滞税 < entaizei\ ;
+選抜 < senbatsu\ ;
+冥王星 < meiousei\ ;
+円盤状 < enbanjou\ ;
+白蟻 < shiroari\ ;
+強奪 < goudatsu\ ;
+蔵書家 < zoushoka\ ;
+録音機 < rokuonki\ ;
+過般来 < kahanrai\ ;
+鑚孔機 < sankouki\ ;
+一般人 < ippanjin\ ;
+刺殺 < shisatsu\ ;
+凡百 < bonpyaku\ ;
+律令 < ritsurei\ ;
+相手役 < aiteyaku\ ;
+内腿 < uchimomo\ ;
+歩合給 < buaikyuu\ ;
+井戸綱 < idodzuna\ ;
+既知数 < kichisuu\ ;
+軍閥 < gunbatsu\ ;
+工務店 < koumuten\ ;
+幣物 < heimotsu\ ;
+逸楽 < itsuraku\ ;
+速決 < sokketsu\ ;
+北側 < hokusoku\ ;
+一朱銀 < isshugin\ ;
+彫刻 < choukoku\ ;
+逆潮 < sakashio\ ;
+砲列 < houretsu\ ;
+航空機 < koukuuki\ ;
+黒繻子 < kurojusu\ ;
+登記所 < toukisho\ ;
+正式 < seishiki\ ;
+適時打 < tekijida\ ;
+冠絶 < kanzetsu\ ;
+殿原 < tonobara\ ;
+凸状 < totsujou\ ;
+合理性 < gourisei\ ;
+達文 < tatsubun\ ;
+征伐 < seibatsu\ ;
+幻滅 < genmetsu\ ;
+弾圧 < dan''atsu\ ;
+軽軽 < karugaru\ ;
+陰電子 < indenshi\ ;
+充血 < juuketsu\ ;
+内職 < naishoku\ ;
+助動詞 < jodoushi\ ;
+慰藉料 < isharyou\ ;
+軟鉄 < nantetsu\ ;
+衛生兵 < eiseihei\ ;
+石墨 < sekiboku\ ;
+低物価 < teibukka\ ;
+個人展 < kojinten\ ;
+実体化 < jittaika\ ;
+判決 < hanketsu\ ;
+短夜 < mijikayo\ ;
+強圧 < kyouatsu\ ;
+邪魔者 < jamamono\ ;
+平滑 < heikatsu\ ;
+鬢長 < bin''naga\ ;
+米議会 < beigikai\ ;
+無尽蔵 < mujinzou\ ;
+円罐 < marugama\ ;
+直直 < jikijiki\ ;
+巻紙 < makigami\ ;
+兼職 < kenshoku\ ;
+転換期 < tenkanki\ ;
+欠文 < ketsubun\ ;
+代議士 < daigishi\ ;
+鼻濁音 < bidakuon\ ;
+冬空 < fuyuzora\ ;
+遅日 < chijitsu\ ;
+別殿 < betsuden\ ;
+別段 < betsudan\ ;
+逆浪 < sakanami\ ;
+白蓮 < byakuren\ ;
+石垣 < ishigaki\ ;
+高電位 < kouden''i\ ;
+持参金 < jisankin\ ;
+唯理論 < yuiriron\ ;
+軸足 < jikuashi\ ;
+名望家 < meibouka\ ;
+多元論 < tagenron\ ;
+目的 < mokuteki\ ;
+萩属 < hagizoku\ ;
+自棄糞 < yakekuso\ ;
+正符号 < seifugou\ ;
+無産者 < musansha\ ;
+速業 < hayawaza\ ;
+育児書 < ikujisho\ ;
+市立 < shiritsu\ ;
+若草 < wakakusa\ ;
+定期船 < teikisen\ ;
+着水 < chakusui\ ;
+手弁当 < tebentou\ ;
+乾燥機 < kansouki\ ;
+三日間 < mikkakan\ ;
+十二分 < juunibun\ ;
+稽古台 < keikodai\ ;
+転轍 < tentetsu\ ;
+鰐皮 < wanigawa\ ;
+止宿 < shishuku\ ;
+芸術 < geijutsu\ ;
+先頭伍 < sentougo\ ;
+正宗 < masamune\ ;
+横腹 < yokobara\ ;
+冗筆 < jouhitsu\ ;
+公職 < koushoku\ ;
+各々 < sorezore\ ;
+刃渡 < hawatari\ ;
+鳩尾 < mizoochi\ ;
+出来高 < dekidaka\ ;
+出演 < shutsuen\ ;
+適役 < tekiyaku\ ;
+身長 < shinchou\ ;
+三世相 < sanzesou\ ;
+力学 < rikigaku\ ;
+色道 < shikidou\ ;
+百芸 < hyakugei\ ;
+乎古止点 < okototen\ ;
+勢力 < seiryoku\ ;
+船霊 < funadama\ ;
+運根鈍 < unkondon\ ;
+砂原 < sunahara\ ;
+彎入 < wan''nyuu\ ;
+衛生上 < eiseijou\ ;
+制札 < seisatsu\ ;
+楽長 < gakuchou\ ;
+直球 < chokkyuu\ ;
+医学士 < igakushi\ ;
+請負人 < ukeoinin\ ;
+極限 < kyokugen\ ;
+鮫膚 < samehada\ ;
+断面図 < danmenzu\ ;
+発色 < hasshoku\ ;
+虚仮猿 < kokezaru\ ;
+未使用 < mishiyou\ ;
+電波星 < denpasei\ ;
+葬列 < souretsu\ ;
+勅問 < chokumon\ ;
+弾力 < danryoku\ ;
+式場 < shikijou\ ;
+高高 < takadaka\ ;
+音韻論 < on''inron\ ;
+割引 < waribiki\ ;
+機械工 < kikaikou\ ;
+欲心 < yokushin\ ;
+再封鎖 < saifuusa\ ;
+剔抉 < tekketsu\ ;
+防波堤 < bouhatei\ ;
+欲得 < yokutoku\ ;
+運転手 < untenshu\ ;
+鮮肉 < sen''niku\ ;
+逆様 < sakasama\ ;
+進撃 < shingeki\ ;
+争覇戦 < souhasen\ ;
+黒文字 < kuromoji\ ;
+無駄足 < mudaashi\ ;
+動力 < douryoku\ ;
+勅命 < chokumei\ ;
+着物地 < kimonoji\ ;
+外気圏 < gaikiken\ ;
+凛烈 < rinretsu\ ;
+開会日 < kaikaibi\ ;
+由来書 < yuraisho\ ;
+武士 < mononofu\ ;
+鵝口瘡 < gakousou\ ;
+殺人 < satsujin\ ;
+僭越 < sen''etsu\ ;
+連日 < renjitsu\ ;
+正夢 < masayume\ ;
+乾燥果 < kansouka\ ;
+刷数 < satsusuu\ ;
+軋轢 < atsureki\ ;
+安全性 < anzensei\ ;
+儲蓄 < chochiku\ ;
+富士五湖 < fujigoko\ ;
+円窓 < marumado\ ;
+若者 < wakamono\ ;
+車轄 < shakatsu\ ;
+恐々 < kowagowa\ ;
+通暁 < tsuugyou\ ;
+前払 < maebarai\ ;
+百聞 < hyakubun\ ;
+是是非非 < zezehihi\ ;
+発育 < hatsuiku\ ;
+逐条 < chikujou\ ;
+益益 < masumasu\ ;
+横縞 < yokojima\ ;
+達弁 < tatsuben\ ;
+栄養士 < eiyoushi\ ;
+台布巾 < daibukin\ ;
+巣窟 < soukutsu\ ;
+川筋 < kawasuji\ ;
+構成員 < kouseiin\ ;
+免職 < menshoku\ ;
+模範生 < mohansei\ ;
+駆動輪 < kudourin\ ;
+勇力 < yuuryoku\ ;
+川端 < kawabata\ ;
+勁卒 < keisotsu\ ;
+東洋史 < toyofumi\ ;
+内祝 < uchiiwai\ ;
+草物 < kusamono\ ;
+岳麓 < gakuroku\ ;
+分極 < bunkyoku\ ;
+槍術 < soujutsu\ ;
+連接 < rensetsu\ ;
+単精度 < tanseido\ ;
+火木土 < kamokudo\ ;
+代議制 < daigisei\ ;
+未定稿 < miteikou\ ;
+入籍 < nyuuseki\ ;
+世話物 < sewamono\ ;
+副審 < fukushin\ ;
+知力 < chiryoku\ ;
+割安 < wariyasu\ ;
+処決 < shoketsu\ ;
+年末 < nenmatsu\ ;
+幾日 < ikunichi\ ;
+年月 < nengetsu\ ;
+切株 < kirikabu\ ;
+効力 < kouryoku\ ;
+観戦記 < kansenki\ ;
+天瓜粉 < tenkafun\ ;
+骸骨 < gaikotsu\ ;
+形成期 < keiseiki\ ;
+放映権 < houeiken\ ;
+式台 < shikidai\ ;
+監視所 < kanshijo\ ;
+骨鱗 < kotsurin\ ;
+御本尊 < gohonzon\ ;
+単純化 < tanjunka\ ;
+個人名 < kojinmei\ ;
+検眼医 < kengan''i\ ;
+再発 < saihatsu\ ;
+死力 < shiryoku\ ;
+未踏峰 < mitouhou\ ;
+労力 < rouryoku\ ;
+横筋 < yokosuji\ ;
+断断固 < dandanko\ ;
+巌窟 < gankutsu\ ;
+冬物 < fuyumono\ ;
+逆数 < gyakusuu\ ;
+兎網 < usagiami\ ;
+暖房器 < danbouki\ ;
+白糸 < shiraito\ ;
+死別 < shibetsu\ ;
+切札 < kirifuda\ ;
+斡旋者 < assensha\ ;
+切望 < setsubou\ ;
+平日 < heijitsu\ ;
+左目 < hidarime\ ;
+軽蔑 < keibetsu\ ;
+仏生会 < busshoue\ ;
+剣客 < kenkyaku\ ;
+内発 < naihatsu\ ;
+規格化 < kikakuka\ ;
+司令部 < shireibu\ ;
+意匠権 < ishouken\ ;
+芋虫 < imomushi\ ;
+椋鳥 < mukudori\ ;
+平政 < hiramasa\ ;
+尊敬語 < sonkeigo\ ;
+骨髄 < kotsuzui\ ;
+形態素 < keitaiso\ ;
+目測 < mokusoku\ ;
+元締 < motojime\ ;
+我利我利 < garigari\ ;
+石亀 < ishigame\ ;
+先細 < sakiboso\ ;
+勅任 < chokunin\ ;
+矛先 < hokosaki\ ;
+美少女 < bishoujo\ ;
+度度 < tabitabi\ ;
+円運動 < en''undou\ ;
+勅令 < chokurei\ ;
+先約 < sen''yaku\ ;
+象牙色 < zougeiro\ ;
+萩原 < hagiwara\ ;
+入神 < nyuushin\ ;
+歯列 < shiretsu\ ;
+切断 < setsudan\ ;
+廃嫡 < haichaku\ ;
+歪力 < wairyoku\ ;
+式典 < shikiten\ ;
+許可書 < kyokasho\ ;
+追撃 < tsuigeki\ ;
+商議員 < shougiin\ ;
+御一新 < goisshin\ ;
+芋蔓 < imodzuru\ ;
+愉快犯 < yukaihan\ ;
+巻物 < makimono\ ;
+指示板 < shijiban\ ;
+相殺 < sousatsu\ ;
+冗物 < joubutsu\ ;
+鉄工所 < tekkoujo\ ;
+前屈 < zenkutsu\ ;
+刳形 < kurikata\ ;
+経営難 < keieinan\ ;
+正割 < seikatsu\ ;
+躍進 < yakushin\ ;
+弁別 < benbetsu\ ;
+陰陽師 < on''youji\ ;
+換気扇 < kankisen\ ;
+非合法 < higouhou\ ;
+飛行艇 < hikoutei\ ;
+着手 < chakushu\ ;
+飛行船 < hikousen\ ;
+経営陣 < keieijin\ ;
+御来光 < goraikou\ ;
+不断草 < fudansou\ ;
+茶漬 < chadzuke\ ;
+留鳥 < ryuuchou\ ;
+栄養剤 < eiyouzai\ ;
+船足 < funaashi\ ;
+連鎖店 < rensaten\ ;
+兵略 < heiryaku\ ;
+白票 < hakuhyou\ ;
+兵法家 < heihouka\ ;
+頻度数 < hindosuu\ ;
+資本家 < shihonka\ ;
+偏食 < henshoku\ ;
+最右翼 < saiuyoku\ ;
+栄養分 < eiyoubun\ ;
+歌合 < utaawase\ ;
+躑躅 < tsutsuji\ ;
+歌口 < utaguchi\ ;
+鰹木 < katsuogi\ ;
+迫撃 < hakugeki\ ;
+可処分 < kashobun\ ;
+汲々 < kyuukyuu\ ;
+蒙古斑 < moukohan\ ;
+初恋 < hatsukoi\ ;
+先程 < sakihodo\ ;
+船賃 < funachin\ ;
+茶渋 < chashibu\ ;
+透徹 < toutetsu\ ;
+病身 < byoushin\ ;
+寒稽古 < kangeiko\ ;
+第三紀 < daisanki\ ;
+概説 < gaisetsu\ ;
+床店 < tokomise\ ;
+砂風呂 < sunaburo\ ;
+運転士 < untenshi\ ;
+第一線 < daiissen\ ;
+良薬 < ryouyaku\ ;
+欠場 < ketsujou\ ;
+切戻 < setsurai\ ;
+標石 < hyouseki\ ;
+偽金 < nisegane\ ;
+目標 < mokuhyou\ ;
+銀行家 < ginkouka\ ;
+力倆 < rikiryou\ ;
+選別 < senbetsu\ ;
+刺客 < shikyaku\ ;
+三仙叉 < sansensa\ ;
+逐年 < chikunen\ ;
+鮫皮 < samegawa\ ;
+広広 < hirobiro\ ;
+再工事 < saikouji\ ;
+横町 < yokochou\ ;
+裏日本 < uranihon\ ;
+被傭者 < hiyousha\ ;
+近日 < kinjitsu\ ;
+広幅 < hirohaba\ ;
+力作 < rikisaku\ ;
+検閲 < ken''etsu\ ;
+瞬刻 < shunkoku\ ;
+発着 < hatchaku\ ;
+極論 < kyokuron\ ;
+着弾 < chakudan\ ;
+軽水炉 < keisuiro\ ;
+典物 < tenbutsu\ ;
+自由港 < jiyuukou\ ;
+御曹子 < onzoushi\ ;
+防水扉 < bousuihi\ ;
+白皙 < hakuseki\ ;
+居心地 < igokochi\ ;
+地下道 < chikadou\ ;
+白白 < hakuhaku\ ;
+切情 < setsujou\ ;
+刑律 < keiritsu\ ;
+標的 < hyouteki\ ;
+出所 < dedokoro\ ;
+無駄花 < mudabana\ ;
+追徴 < tsuichou\ ;
+着底 < chakutei\ ;
+党略 < touryaku\ ;
+無定見 < muteiken\ ;
+床山 < tokoyama\ ;
+痛覚 < tsuukaku\ ;
+年式 < nenshiki\ ;
+発癌 < hatsugan\ ;
+着帽 < chakubou\ ;
+内濠 < uchibori\ ;
+先着 < senchaku\ ;
+着帯 < chakutai\ ;
+常春 < tokoharu\ ;
+美容師 < biyoushi\ ;
+発火点 < hakkaten\ ;
+荷捌 < nisabaki\ ;
+平庭 < hiraniwa\ ;
+山鳩 < yamabato\ ;
+山鳥 < yamadori\ ;
+通学 < tsuugaku\ ;
+畜類 < chikurui\ ;
+平底 < hirazoko\ ;
+入獄 < nyuugoku\ ;
+公爵 < koushaku\ ;
+色艶 < irotsuya\ ;
+平幕 < hiramaku\ ;
+現代化 < gendaika\ ;
+先発 < senpatsu\ ;
+福井県 < fukuiken\ ;
+白瓜 < shirouri\ ;
+不敬虔 < fukeiken\ ;
+近接 < kinsetsu\ ;
+丁子油 < choujiyu\ ;
+転職 < tenshoku\ ;
+透察 < tousatsu\ ;
+劇作 < gekisaku\ ;
+財務官 < zaimukan\ ;
+料理屋 < ryouriya\ ;
+軸索 < jikusaku\ ;
+席料 < sekiryou\ ;
+欠号 < ketsugou\ ;
+停車場 < teishaba\ ;
+感光度 < kankoudo\ ;
+無能者 < munousha\ ;
+百獣 < hyakujuu\ ;
+僚船 < tomobune\ ;
+真心 < magokoro\ ;
+劇中 < gekichuu\ ;
+蹄鉄 < teitetsu\ ;
+交叉点 < kousaten\ ;
+氷河期 < hyougaki\ ;
+退屈 < taikutsu\ ;
+低電位 < teiden''i\ ;
+出世魚 < shusseuo\ ;
+運転台 < untendai\ ;
+前哲 < zentetsu\ ;
+出廬 < shutsuro\ ;
+適作 < tekisaku\ ;
+野心家 < yashinka\ ;
+内法 < uchinori\ ;
+出度 < shutsudo\ ;
+劃一 < kakuitsu\ ;
+自由権 < jiyuuken\ ;
+軸箱 < jikubako\ ;
+防水布 < bousuifu\ ;
+出席 < shusseki\ ;
+再臨派 < sairinha\ ;
+別売 < betsubai\ ;
+帝日 < teijitsu\ ;
+構築 < kouchiku\ ;
+目撃 < mokugeki\ ;
+軍職 < gunshoku\ ;
+名場面 < meibamen\ ;
+筆記体 < hikkitai\ ;
+弦楽器 < gengakki\ ;
+滞在費 < taizaihi\ ;
+規定値 < kiteichi\ ;
+一体感 < ittaikan\ ;
+冬服 < fuyufuku\ ;
+茶杓 < chashaku\ ;
+鮮烈 < senretsu\ ;
+赤砂糖 < akazatou\ ;
+牛小屋 < ushigoya\ ;
+廉価品 < renkahin\ ;
+民需品 < minjuhin\ ;
+真人間 < maningen\ ;
+写植 < shashoku\ ;
+金盞花 < kinsenka\ ;
+別堂 < betsudou\ ;
+分宿 < bunshuku\ ;
+全滅 < zenmetsu\ ;
+山風 < yamakaze\ ;
+草摺 < kusazuri\ ;
+江戸時代 < edojidai\ ;
+先物 < sakimono\ ;
+取沙汰 < torizata\ ;
+銀行員 < ginkouin\ ;
+層位学 < souigaku\ ;
+百点 < hyakuten\ ;
+逆夢 < sakayume\ ;
+透視図 < toushizu\ ;
+名義人 < meiginin\ ;
+給油所 < kyuuyujo\ ;
+光熱 < kounetsu\ ;
+自走砲 < jisouhou\ ;
+前列 < zenretsu\ ;
+寄稿者 < kikousha\ ;
+抒情詩 < jojoushi\ ;
+逆境 < gyakkyou\ ;
+円刃刀 < enjintou\ ;
+癇癪 < kanshaku\ ;
+軍縮 < gunshuku\ ;
+鮭漁 < sakeryou\ ;
+達人 < tatsujin\ ;
+色紙 < shikishi\ ;
+白濁 < hakudaku\ ;
+儁秀 < shunshuu\ ;
+幅広 < habahiro\ ;
+山霧 < yamagiri\ ;
+三七日 < minanoka\ ;
+逸出 < isshutsu\ ;
+入浴 < nyuuyoku\ ;
+欠便 < ketsubin\ ;
+軽石 < karuishi\ ;
+切妻 < kirizuma\ ;
+巻末 < kanmatsu\ ;
+寺小屋 < terakoya\ ;
+距骨 < kyokotsu\ ;
+田雲雀 < tahibari\ ;
+温湿布 < onshippu\ ;
+生首 < namakubi\ ;
+入洛 < nyuuraku\ ;
+直情 < chokujou\ ;
+凶宅 < kyoutaku\ ;
+山際 < yamagiwa\ ;
+庭先 < niwasaki\ ;
+御面相 < gomensou\ ;
+山陰 < yamakage\ ;
+剃刀 < kamisori\ ;
+横波 < yokonami\ ;
+着地 < chakuchi\ ;
+上景気 < joukeiki\ ;
+育英会 < ikueikai\ ;
+乗馬隊 < joubatai\ ;
+地下街 < chikagai\ ;
+盗掘 < toukutsu\ ;
+省庁 < shouchou\ ;
+留金 < tomegane\ ;
+橋梁 < kyouryou\ ;
+町長 < chouchou\ ;
+属領 < zokuryou\ ;
+通告 < tsuukoku\ ;
+前借 < zenshaku\ ;
+青懸巣 < aokakesu\ ;
+欠乏 < ketsubou\ ;
+極致 < kyokuchi\ ;
+不敬罪 < fukeizai\ ;
+原子価 < genshika\ ;
+別命 < betsumei\ ;
+良策 < ryousaku\ ;
+甘食 < amashoku\ ;
+内枠 < uchiwaku\ ;
+橋杭 < hashigui\ ;
+総武線 < soubusen\ ;
+不縹緻 < bukiryou\ ;
+別号 < betsugou\ ;
+借銭 < shakusen\ ;
+眉尻 < mayujiri\ ;
+真如 < shin''nyo\ ;
+解像度 < kaizoudo\ ;
+若水 < wakamizu\ ;
+控訴状 < kousojou\ ;
+通力 < tsuuriki\ ;
+店先 < misesaki\ ;
+畔道 < azemichi\ ;
+若殿 < wakatono\ ;
+再検査 < saikensa\ ;
+通則 < tsuusoku\ ;
+初口 < shokuchi\ ;
+樽柿 < tarugaki\ ;
+臭覚 < shuukaku\ ;
+複座機 < fukuzaki\ ;
+批評家 < hihyouka\ ;
+御中元 < ochuugen\ ;
+人真似 < hitomane\ ;
+横様 < yokozama\ ;
+横槍 < yokoyari\ ;
+冷徹 < reitetsu\ ;
+的地位 < tekichii\ ;
+督促 < tokusoku\ ;
+換気口 < kankikou\ ;
+調査員 < chousain\ ;
+世話役 < sewayaku\ ;
+判別 < hanbetsu\ ;
+常客 < joukyaku\ ;
+帳尻 < choujiri\ ;
+悪知恵 < warudjie\ ;
+苗水 < nawamizu\ ;
+短期間 < tankikan\ ;
+御主人 < goshujin\ ;
+山鉾 < yamaboko\ ;
+髄虫 < zuimushi\ ;
+皆様 < minasama\ ;
+別册 < bessatsu\ ;
+同時性 < doujisei\ ;
+帷子 < katabira\ ;
+草市 < kusaichi\ ;
+黄変米 < ouhenmai\ ;
+余所者 < yosomono\ ;
+白檀 < byakudan\ ;
+若様 < wakasama\ ;
+直射 < chokusha\ ;
+山里 < yamazato\ ;
+退却 < taikyaku\ ;
+滋養分 < jiyoubun\ ;
+槍玉 < yaridama\ ;
+棚牡丹 < tanabota\ ;
+甲鉄 < koutetsu\ ;
+銘酒屋 < meishuya\ ;
+塩類泉 < enruisen\ ;
+局面 < kyokumen\ ;
+保菌者 < hokinsha\ ;
+通信 < tsuushin\ ;
+極線 < kyokusen\ ;
+防砂林 < bousarin\ ;
+通俗 < tsuuzoku\ ;
+船縁 < funaberi\ ;
+皓月 < kougetsu\ ;
+色相 < shikisou\ ;
+色盲 < shikimou\ ;
+眉墨 < mayuzumi\ ;
+内接 < naisetsu\ ;
+閉世界 < heisekai\ ;
+巴戦 < tomoesen\ ;
+全曲 < zenkyoku\ ;
+軸物 < jikumono\ ;
+業績 < gyouseki\ ;
+地下茎 < chikakei\ ;
+多辺形 < tahenkei\ ;
+入木 < nyuuboku\ ;
+極細 < gokuboso\ ;
+不明朗 < fumeirou\ ;
+送別 < soubetsu\ ;
+足首 < ashikubi\ ;
+兼摂 < kensetsu\ ;
+別便 < betsubin\ ;
+年別 < nenbetsu\ ;
+泥火山 < deikazan\ ;
+生録 < namaroku\ ;
+京都府 < kyoutofu\ ;
+白梅 < shiraume\ ;
+臆説 < okusetsu\ ;
+令夫人 < reifujin\ ;
+先様 < sakisama\ ;
+全日 < zenjitsu\ ;
+布引 < nunobiki\ ;
+罷免権 < himenken\ ;
+丁字形 < teijikei\ ;
+監察 < kansatsu\ ;
+分力 < bunryoku\ ;
+候補者 < kouhosha\ ;
+傍耳 < katamimi\ ;
+略言 < ryakugen\ ;
+別人 < betsunin\ ;
+小魚 < kozakana\ ;
+左手 < hidarite\ ;
+色町 < iromachi\ ;
+色男 < irootoko\ ;
+楽章 < gakushou\ ;
+分別 < bunbetsu\ ;
+絵画館 < kaigakan\ ;
+鬱病 < utsubyou\ ;
+国営化 < kokueika\ ;
+逆修 < gyakushu\ ;
+物故者 < bukkosha\ ;
+前相撲 < maezumou\ ;
+研米機 < kenmaiki\ ;
+直売 < chokubai\ ;
+借貸 < shakutai\ ;
+暗黒期 < ankokuki\ ;
+借財 < shakuzai\ ;
+現時点 < genjiten\ ;
+隣保館 < rinpokan\ ;
+冬山 < fuyuyama\ ;
+分冊 < bunsatsu\ ;
+焼夷弾 < shouidan\ ;
+丁字帯 < teijitai\ ;
+軍略 < gunryaku\ ;
+加配米 < kahaimai\ ;
+用達 < youtatsu\ ;
+荒夷 < araebisu\ ;
+極端 < kyokutan\ ;
+真南 < maminami\ ;
+歯科医院 < shikaiin\ ;
+高精度 < kouseido\ ;
+略装 < ryakusou\ ;
+陰関数 < inkansuu\ ;
+水泳帽 < suieibou\ ;
+列伝 < retsuden\ ;
+貸費生 < taihisei\ ;
+船端 < funabata\ ;
+鯨座 < kujiraza\ ;
+着任 < chakunin\ ;
+増税案 < zouzeian\ ;
+辻堂 < tsujidou\ ;
+俺達 < oretachi\ ;
+餓鬼共 < gakidomo\ ;
+真勇 < shin''yuu\ ;
+傘紙 < kasagami\ ;
+許可制 < kyokasei\ ;
+白昼 < hakuchuu\ ;
+痼疾 < koshitsu\ ;
+偽者 < nisemono\ ;
+克服 < kokufuku\ ;
+女性像 < joseizou\ ;
+画質 < gashitsu\ ;
+跳躍 < chouyaku\ ;
+火星年 < kaseinen\ ;
+発明 < hatsumei\ ;
+亜硫酸 < aryuusan\ ;
+逆上 < gyakujou\ ;
+先月 < sengetsu\ ;
+平仄 < hyousoku\ ;
+円形 < marugata\ ;
+再軍備 < saigunbi\ ;
+板屋貝 < itayagai\ ;
+少額 < shougaku\ ;
+斡旋案 < assen''an\ ;
+花崗岩 < kakougan\ ;
+返却 < henkyaku\ ;
+凶兆 < kyouchou\ ;
+楓糖 < kaedetou\ ;
+幕内 < makuuchi\ ;
+未完成 < mikansei\ ;
+巻尺 < makijaku\ ;
+先日 < senjitsu\ ;
+無用心 < buyoujin\ ;
+成文化 < seibunka\ ;
+借覧 < shakuran\ ;
+粗悪品 < soakuhin\ ;
+控訴権 < kousoken\ ;
+駒鳥 < komadori\ ;
+調理場 < chouriba\ ;
+地下線 < chikasen\ ;
+幕僚 < bakuryou\ ;
+写実 < shajitsu\ ;
+亜硝酸 < ashousan\ ;
+元日 < ganjitsu\ ;
+白描 < hakubyou\ ;
+尻重 < shiriomo\ ;
+脛骨 < keikotsu\ ;
+体系化 < taikeika\ ;
+元方 < motokata\ ;
+発揚 < hatsuyou\ ;
+経営者 < keieisha\ ;
+茶壺 < chatsubo\ ;
+修身 < shuushin\ ;
+発掘 < hakkutsu\ ;
+川底 < kawazoko\ ;
+川床 < kawadoko\ ;
+凶作 < kyousaku\ ;
+概略 < gairyaku\ ;
+被写体 < hishatai\ ;
+川幅 < kawahaba\ ;
+傷病 < shoubyou\ ;
+椎茸 < shiitake\ ;
+州州 < shuushuu\ ;
+停職 < teishoku\ ;
+侑食 < yuushoku\ ;
+分娩期 < bunbenki\ ;
+後仕舞 < atojimai\ ;
+内局 < naikyoku\ ;
+男親 < otokooya\ ;
+裏面史 < rimenshi\ ;
+花柄 < hanagara\ ;
+見世物 < misemono\ ;
+山襞 < yamahida\ ;
+辻占 < tsujiura\ ;
+様様 < samazama\ ;
+真中 < man''naka\ ;
+内密 < naimitsu\ ;
+語彙力 < goiryoku\ ;
+花束 < hanataba\ ;
+内実 < naijitsu\ ;
+共布 < tomonuno\ ;
+山裾 < yamasuso\ ;
+高空 < takazora\ ;
+花札 < hanafuda\ ;
+魔法瓶 < mahoubin\ ;
+百態 < hyakutai\ ;
+分娩時 < bunbenji\ ;
+上下動 < jougedou\ ;
+平面図 < heimenzu\ ;
+耐火性 < taikasei\ ;
+痔疾 < jishitsu\ ;
+再定義 < saiteigi\ ;
+電気工 < denkikou\ ;
+反古籠 < hogukago\ ;
+八幡 < hachiman\ ;
+御降誕 < gokoutan\ ;
+巡察 < junsatsu\ ;
+軽業 < karuwaza\ ;
+川尻 < kawajiri\ ;
+明文化 < meibunka\ ;
+腹具合 < haraguai\ ;
+直前 < chokuzen\ ;
+選挙日 < senkyobi\ ;
+棒術 < boujutsu\ ;
+花時 < hanadoki\ ;
+入幕 < nyuumaku\ ;
+発情 < hatsujou\ ;
+俳謔 < haigyaku\ ;
+岩脈 < ganmyaku\ ;
+帳元 < choumoto\ ;
+病的 < byouteki\ ;
+横幅 < yokohaba\ ;
+輸精管 < yuseikan\ ;
+病癖 < byouheki\ ;
+小売店 < kouriten\ ;
+宇宙論 < uchuuron\ ;
+胸高 < munadaka\ ;
+鑑定家 < kanteika\ ;
+促進 < sokushin\ ;
+標徴 < hyouchou\ ;
+固溶体 < koyoutai\ ;
+案内所 < an''naijo\ ;
+病症 < byoushou\ ;
+自信家 < jishinka\ ;
+冷却 < reikyaku\ ;
+亜鉛末 < aenmatsu\ ;
+膏血 < kouketsu\ ;
+傷物 < kizumono\ ;
+導電度 < doudendo\ ;
+県知事 < kenchiji\ ;
+百弊 < hyakuhei\ ;
+凝乳 < gyounyuu\ ;
+畜舎 < chikusha\ ;
+意気阻喪 < ikisosou\ ;
+共学 < kyougaku\ ;
+宇宙観 < uchuukan\ ;
+電動機 < dendouki\ ;
+少量 < shouryou\ ;
+一丁目 < itchoume\ ;
+伊達衆 < dateshuu\ ;
+腋窩腺 < ekikasen\ ;
+不文法 < fubunpou\ ;
+百年 < hyakunen\ ;
+足軽 < ashigaru\ ;
+一貫性 < ikkansei\ ;
+口内炎 < kounaien\ ;
+健筆 < kenpitsu\ ;
+過不足 < kafusoku\ ;
+寒餅 < kanmochi\ ;
+寮長 < ryouchou\ ;
+愛用者 < aiyousha\ ;
+俊足 < shunsoku\ ;
+公民科 < kouminka\ ;
+入寂 < nyuujaku\ ;
+出格子 < degoushi\ ;
+信認 < shin''nin\ ;
+今世紀 < konseiki\ ;
+入学 < nyuugaku\ ;
+業物 < wazamono\ ;
+未婚者 < mikonsha\ ;
+赤靴 < akagutsu\ ;
+候補生 < kouhosei\ ;
+州境 < shuukyou\ ;
+東南亜 < tounan''a\ ;
+信託 < shintaku\ ;
+供養塔 < kuyoutou\ ;
+健胃剤 < ken''izai\ ;
+宿駅 < shukueki\ ;
+極点 < kyokuten\ ;
+俗調 < zokuchou\ ;
+舌癌 < zetsugan\ ;
+直中 < tadanaka\ ;
+花房 < hanafusa\ ;
+修験者 < shugenja\ ;
+疫病 < yakubyou\ ;
+若宮 < wakamiya\ ;
+元帳 < motochou\ ;
+寛闊 < kankatsu\ ;
+寸鉄 < suntetsu\ ;
+違犯行為 < ihankoui\ ;
+柔道着 < juudougi\ ;
+百害 < hyakugai\ ;
+微系数 < bikeisuu\ ;
+仕置場 < shiokiba\ ;
+偶発 < guuhatsu\ ;
+平方和 < heihouwa\ ;
+小身 < shoushin\ ;
+宿願 < shukugan\ ;
+伴奏部 < bansoubu\ ;
+生薬 < shouyaku\ ;
+宿題 < shukudai\ ;
+古写本 < koshahon\ ;
+瓶詰 < bindzume\ ;
+偏窟 < henkutsu\ ;
+先山 < sakiyama\ ;
+男色 < nanshoku\ ;
+脱輪 < datsurin\ ;
+出来物 < dekimono\ ;
+倹約 < ken''yaku\ ;
+草丈 < kusatake\ ;
+土饅頭 < domanjuu\ ;
+世話人 < sewabito\ ;
+入塾 < nyuujuku\ ;
+美顔水 < bigansui\ ;
+自由刑 < jiyuukei\ ;
+塩風呂 < shioburo\ ;
+充電器 < juudenki\ ;
+被験者 < hikensha\ ;
+小熊座 < kogumaza\ ;
+優形 < yasagata\ ;
+手信語 < teshingo\ ;
+先客 < senkyaku\ ;
+赤毛布 < akagetto\ ;
+俗衆 < zokushuu\ ;
+山膚 < yamahada\ ;
+榕樹 < gajumaru\ ;
+先安 < sakiyasu\ ;
+馬面 < umadzura\ ;
+水彩画 < suisaiga\ ;
+一人寝 < hitorine\ ;
+青味泥 < aomidoro\ ;
+百姓 < hyakusei\ ;
+自由党 < jiyuutou\ ;
+充実 < juujitsu\ ;
+芙蓉峰 < fuyouhou\ ;
+落花生 < rakkasei\ ;
+花形 < hanagata\ ;
+山間部 < sankanbu\ ;
+盗人 < nusubito\ ;
+同時代 < doujidai\ ;
+白妙 < shirotae\ ;
+山脈 < yamanami\ ;
+無宗派 < mushuuha\ ;
+花弁 < hanabira\ ;
+入国 < nyuukoku\ ;
+極洋 < kyokuyou\ ;
+軍政府 < gunseifu\ ;
+白壁 < hakuheki\ ;
+白墨 < hakuboku\ ;
+発売 < hatsubai\ ;
+内力 < nairyoku\ ;
+赤銅 < shakudou\ ;
+皮剥 < kawahagi\ ;
+婦人会 < fujinkai\ ;
+原繊維 < gensen''i\ ;
+巨刹 < kyosatsu\ ;
+骨盤 < kotsuban\ ;
+鯉口 < koiguchi\ ;
+生色 < seishoku\ ;
+継電気 < keidenki\ ;
+不文明 < fubunmei\ ;
+平土間 < hiradoma\ ;
+次男坊 < jinanbou\ ;
+先太 < sakibuto\ ;
+超越 < chouetsu\ ;
+膀胱炎 < boukouen\ ;
+有効打 < yuukouda\ ;
+雨量計 < uryoukei\ ;
+兵卒 < heisotsu\ ;
+宇宙船 < uchuusen\ ;
+減衰器 < gensuiki\ ;
+様式 < youshiki\ ;
+伴食 < banshoku\ ;
+多芸性 < tageisei\ ;
+兵力 < heiryoku\ ;
+赤切符 < akagippu\ ;
+楽楽 < rakuraku\ ;
+高潮 < takashio\ ;
+内側 < uchigawa\ ;
+脅迫 < kyouhaku\ ;
+腹膜 < fukumaku\ ;
+火星人 < kaseijin\ ;
+内倉 < uchigura\ ;
+日航機 < nikkouki\ ;
+今世界 < konsekai\ ;
+花守 < hanamori\ ;
+胸郭 < kyoukaku\ ;
+軍需品 < gunjuhin\ ;
+病毒 < byoudoku\ ;
+極楽 < gokuraku\ ;
+水蒸気 < suijouki\ ;
+極極 < gokugoku\ ;
+単漢字 < tankanji\ ;
+十文字 < juumonji\ ;
+守備兵 < shubihei\ ;
+病歴 < byoureki\ ;
+暗号文 < angoubun\ ;
+花嫁 < hanayome\ ;
+全力 < zenryoku\ ;
+共共 < tomodomo\ ;
+高等科 < koutouka\ ;
+花婿 < hanamuko\ ;
+贋首 < nisekubi\ ;
+若君 < wakagimi\ ;
+局舎 < kyokusha\ ;
+州俗 < shuuzoku\ ;
+添乗員 < tenjouin\ ;
+植生 < shokusei\ ;
+権力 < kenryoku\ ;
+優女 < yasaon''a\ ;
+宿酔 < shukusui\ ;
+赫赫 < kakukaku\ ;
+案内図 < an''naizu\ ;
+合言葉 < aikotoba\ ;
+密造 < mitsuzou\ ;
+楽曲 < gakkyoku\ ;
+高波 < takanami\ ;
+会食 < kaishoku\ ;
+定期券 < teikiken\ ;
+倒立 < touritsu\ ;
+色感 < shikikan\ ;
+左上 < hidariue\ ;
+予算案 < yosan''an\ ;
+多様性 < tayousei\ ;
+先哲 < sentetsu\ ;
+自賠法 < jibaihou\ ;
+極東 < kyokutou\ ;
+出不精 < debushou\ ;
+安山岩 < anzangan\ ;
+老大家 < routaika\ ;
+氏素性 < ujisujou\ ;
+上天気 < joutenki\ ;
+第一声 < daiissei\ ;
+導火線 < doukasen\ ;
+魚屋 < sakanaya\ ;
+依頼心 < iraishin\ ;
+跳箱 < tobibako\ ;
+軟式 < nanshiki\ ;
+負債者 < fusaisha\ ;
+高殿 < takadono\ ;
+後頭部 < koutoubu\ ;
+偏片 < katahara\ ;
+川上 < kawakami\ ;
+皮膚病 < hifubyou\ ;
+山程 < yamahodo\ ;
+発動 < hatsudou\ ;
+老夫婦 < roufuufu\ ;
+先口 < senkuchi\ ;
+地下水 < chikasui\ ;
+肋骨 < rokkotsu\ ;
+電気代 < denkidai\ ;
+定義域 < teigiiki\ ;
+畜産 < chikusan\ ;
+色彩 < shikisai\ ;
+良心 < ryoushin\ ;
+生米 < namagome\ ;
+用筆 < youhitsu\ ;
+放火罪 < houkazai\ ;
+雨合羽 < amagappa\ ;
+受刑者 < jukeisha\ ;
+臓物 < zoumotsu\ ;
+非公開 < hikoukai\ ;
+遙々 < harubaru\ ;
+骨灰 < kotsubai\ ;
+普請場 < fushinba\ ;
+多島海 < tatoukai\ ;
+船旅 < funatabi\ ;
+船方 < funakata\ ;
+労働歌 < roudouka\ ;
+寄港地 < kikouchi\ ;
+花園 < hanazono\ ;
+定期便 < teikibin\ ;
+軍律 < gunritsu\ ;
+軍役 < gun''yaku\ ;
+未来形 < miraikei\ ;
+百億 < hyakuoku\ ;
+屑籠 < kuzukago\ ;
+痛撃 < tsuugeki\ ;
+全乳 < zen''nyuu\ ;
+格調 < kakuchou\ ;
+輸出 < yushutsu\ ;
+飛行士 < hikoushi\ ;
+概括 < gaikatsu\ ;
+膠着 < kouchaku\ ;
+妊産婦 < ninsanpu\ ;
+短時間 < tanjikan\ ;
+併設 < heisetsu\ ;
+百倍 < hyakubai\ ;
+偏差値 < hensachi\ ;
+下降線 < kakousen\ ;
+洋菓子 < yougashi\ ;
+断裁機 < dansaiki\ ;
+車座 < kurumaza\ ;
+先入 < sen''nyuu\ ;
+飛行場 < hikoujou\ ;
+借用 < shakuyou\ ;
+宿賃 < yadochin\ ;
+畜犬 < chikuken\ ;
+恵比須講 < ebisukou\ ;
+傍杖 < sobadzue\ ;
+元元 < motomoto\ ;
+工具入 < kouguire\ ;
+体温計 < taionkei\ ;
+寝袋 < nebukuro\ ;
+発行日 < hakkoubi\ ;
+芝地 < shibachi\ ;
+拷問具 < goumongu\ ;
+的中 < tekichuu\ ;
+除外例 < jogairei\ ;
+就縛 < shuubaku\ ;
+寿老人 < juroujin\ ;
+密謀 < mitsubou\ ;
+公取委 < koutorii\ ;
+院外団 < ingaidan\ ;
+不変性 < fuhensei\ ;
+密談 < mitsudan\ ;
+多産系 < tasankei\ ;
+発令 < hatsurei\ ;
+小規模 < shoukibo\ ;
+合議制 < gougisei\ ;
+維管束 < ikansoku\ ;
+良将 < ryoushou\ ;
+客車 < kyakusha\ ;
+脱色 < dasshoku\ ;
+高温計 < kouonkei\ ;
+高札 < kousatsu\ ;
+初等科 < shotouka\ ;
+記憶法 < kiokuhou\ ;
+今朝方 < kesagata\ ;
+百万 < hyakuman\ ;
+破砕性 < hasaisei\ ;
+鹿野苑 < rokuyaon\ ;
+仙骨 < senkotsu\ ;
+安酒 < yasuzake\ ;
+僻境 < hekikyou\ ;
+車屋 < kurumaya\ ;
+舞台裏 < butaiura\ ;
+経営権 < keieiken\ ;
+身心 < shinshin\ ;
+痛惜 < tsuuseki\ ;
+不燃性 < funensei\ ;
+偽札 < nisefuda\ ;
+神祇官 < jingikan\ ;
+借物 < karimono\ ;
+赤蛙 < akagaeru\ ;
+被害者 < higaisha\ ;
+付馬 < tsukeuma\ ;
+水酸基 < suisanki\ ;
+天体図 < tentaizu\ ;
+近距離 < kinkyori\ ;
+準社員 < junshain\ ;
+赤虫 < akamushi\ ;
+佗言 < wabigoto\ ;
+人件費 < jinkenhi\ ;
+常得意 < joutokui\ ;
+生皮 < namakawa\ ;
+極性 < kyokusei\ ;
+色女 < iroon''na\ ;
+輪伐 < rinbatsu\ ;
+倍率 < bairitsu\ ;
+皮脂腺 < hishisen\ ;
+無定形 < muteikei\ ;
+可用性 < kayousei\ ;
+人生派 < jinseiha\ ;
+俗称 < zokushou\ ;
+山猿 < yamazaru\ ;
+山猫 < yamaneko\ ;
+伝達 < dentatsu\ ;
+発行所 < hakkoujo\ ;
+摩天楼 < matenrou\ ;
+寵臣 < choushin\ ;
+小間物 < komamono\ ;
+植毛 < shokumou\ ;
+御大層 < gotaisou\ ;
+警備隊 < keibitai\ ;
+割烹着 < kappougi\ ;
+協和音 < kyouwaon\ ;
+受動態 < judoutai\ ;
+総動員 < soudouin\ ;
+肉鍋 < nikunabe\ ;
+男爵 < danshaku\ ;
+花林糖 < karintou\ ;
+人魂 < hitodama\ ;
+腹痛 < fukutsuu\ ;
+船底 < funazoko\ ;
+船床 < funadoko\ ;
+駆落 < kakeochi\ ;
+極希 < gokumare\ ;
+人骨 < jinkotsu\ ;
+小結 < komusubi\ ;
+正社員 < seishain\ ;
+等温線 < touonsen\ ;
+実説 < jissetsu\ ;
+御霊屋 < mitamaya\ ;
+一夕話 < issekiwa\ ;
+小為替 < kogawase\ ;
+第一位 < daiichii\ ;
+履物 < hakimono\ ;
+病徴 < byouchou\ ;
+税関吏 < zeikanri\ ;
+養育費 < youikuhi\ ;
+定説 < teisetsu\ ;
+臨月 < ringetsu\ ;
+流鏑馬 < yabusame\ ;
+病弱 < byoujaku\ ;
+控訴人 < kousonin\ ;
+茶話会 < chawakai\ ;
+喫緊事 < kikkinji\ ;
+吸金剛 < kokongou\ ;
+骨材 < kotsuzai\ ;
+産物 < sanbutsu\ ;
+検札 < kensatsu\ ;
+貪食 < donshoku\ ;
+信用 < shin''you\ ;
+脇腹 < wakibara\ ;
+老練家 < rourenka\ ;
+不調和 < fuchouwa\ ;
+生物 < namamono\ ;
+局番 < kyokuban\ ;
+小策 < shousaku\ ;
+槍先 < yarisaki\ ;
+気管支 < kikanshi\ ;
+痰壺 < tantsubo\ ;
+髪床 < kamidoko\ ;
+水酸化 < suisanka\ ;
+大人気 < daininki\ ;
+寒色 < kanshoku\ ;
+青銅器 < seidouki\ ;
+植栽 < shokusai\ ;
+休足 < kyuusoku\ ;
+船宿 < funayado\ ;
+仏門 < butsumon\ ;
+飛行便 < hikoubin\ ;
+傍役 < wakiyaku\ ;
+肉迫 < nikuhaku\ ;
+可能法 < kanouhou\ ;
+真珠母 < shinjubo\ ;
+核膜 < kakumaku\ ;
+専攻科 < senkouka\ ;
+化膿菌 < kanoukin\ ;
+亡骸 < nakigara\ ;
+臘月 < rougetsu\ ;
+植林 < shokurin\ ;
+非常線 < hijousen\ ;
+精一杯 < seiippai\ ;
+遇不遇 < guufuguu\ ;
+胸膜 < kyoumaku\ ;
+飽食 < houshoku\ ;
+修熟 < shuujuku\ ;
+未耕地 < mikouchi\ ;
+門下生 < monkasei\ ;
+一風呂 < hitofuro\ ;
+宅診 < takushin\ ;
+小禄 < shouroku\ ;
+伝説 < densetsu\ ;
+足癖 < ashikuse\ ;
+脱税 < datsuzei\ ;
+京響 < kyoukyou\ ;
+培養基 < baiyouki\ ;
+転入 < ten''nyuu\ ;
+軍隊化 < guntaika\ ;
+演芸会 < engeikai\ ;
+対立 < tairitsu\ ;
+文人画 < bunjinga\ ;
+現時代 < genjidai\ ;
+腫物 < shumotsu\ ;
+広範囲 < kouhan''i\ ;
+極大 < kyokudai\ ;
+略書 < ryakusho\ ;
+宿舎 < shukusha\ ;
+軍卒 < gunsotsu\ ;
+円屋根 < maruyane\ ;
+峰峰 < minemine\ ;
+培養土 < baiyoudo\ ;
+寒気団 < kankidan\ ;
+容色 < youshoku\ ;
+粗利益 < ararieki\ ;
+介錯 < kaishaku\ ;
+予算外 < yosangai\ ;
+非民主 < himinshu\ ;
+嵌入 < kan''nyuu\ ;
+軒別 < kenbetsu\ ;
+側役 < sobayaku\ ;
+転借 < tenshaku\ ;
+受益者 < juekisha\ ;
+脊索 < sekisaku\ ;
+安定板 < anteiban\ ;
+記念館 < kinenkan\ ;
+一歩一歩 < ippoippo\ ;
+大宇宙 < daiuchuu\ ;
+財閥 < zaibatsu\ ;
+亜急性 < akyuusei\ ;
+木鼠 < kinezumi\ ;
+骨折 < kossetsu\ ;
+脚立 < kyatatsu\ ;
+僻事 < higagoto\ ;
+計算簿 < keisanbo\ ;
+略文 < ryakubun\ ;
+軒先 < nokisaki\ ;
+静止画 < seishiga\ ;
+不整合 < fuseigou\ ;
+二重顎 < nijuuago\ ;
+制御機 < seigyoki\ ;
+根絶 < konzetsu\ ;
+枝道 < edamichi\ ;
+二等分 < nitoubun\ ;
+宿老 < shukurou\ ;
+貸金 < kashikin\ ;
+平炉法 < heirohou\ ;
+高密 < koumitsu\ ;
+五稜堡 < goryouho\ ;
+未来像 < miraizou\ ;
+足温器 < sokuonki\ ;
+二等兵 < nitouhei\ ;
+貴族院 < kizokuin\ ;
+仏道 < butsudou\ ;
+何者 < nanimono\ ;
+良俗 < ryouzoku\ ;
+記号論 < kigouron\ ;
+住職 < juushoku\ ;
+柔術 < juujutsu\ ;
+生水 < namamizu\ ;
+名詞句 < meishiku\ ;
+胸糞 < munekuso\ ;
+客船 < kyakusen\ ;
+老骨 < roukotsu\ ;
+枕辺 < makurabe\ ;
+尤物 < yuubutsu\ ;
+伝馬船 < tenmasen\ ;
+乱髪 < ranpatsu\ ;
+銀河系 < gingakei\ ;
+体罰 < taibatsu\ ;
+人里 < hitozato\ ;
+客膳 < kyakuzen\ ;
+大宮司 < daiguuji\ ;
+肉親 < nikushin\ ;
+流行目 < hayarime\ ;
+遠視眼 < enshigan\ ;
+富籤 < tomikuji\ ;
+卵巣炎 < ransouen\ ;
+偵察 < teisatsu\ ;
+能筆 < nouhitsu\ ;
+乾風 < karakaze\ ;
+髪型 < kamigata\ ;
+未亡人 < miboujin\ ;
+引用符 < in''youfu\ ;
+良久 < ryoukyuu\ ;
+村雨 < murasame\ ;
+柔道家 < juudouka\ ;
+軒並 < nokinami\ ;
+不均衡 < fukinkou\ ;
+軒丈 < nokitake\ ;
+寒竹 < kanchiku\ ;
+月齢 < getsurei\ ;
+対話者 < taiwasha\ ;
+跳梁 < chouryou\ ;
+寒空 < samuzora\ ;
+訟務部 < shoumubu\ ;
+仰角 < gyoukaku\ ;
+御霊前 < goreizen\ ;
+兌換券 < dakanken\ ;
+不摂生 < fusessei\ ;
+楽劇 < gakugeki\ ;
+日本風 < nihonfuu\ ;
+飄飄 < hyouhyou\ ;
+木骨 < mokkotsu\ ;
+候補地 < kouhochi\ ;
+玉髄 < gyokuzui\ ;
+砂防林 < sabourin\ ;
+俗流 < zokuryuu\ ;
+下士官 < kashikan\ ;
+市議会 < shigikai\ ;
+一時期 < ichijiki\ ;
+健実 < kenjitsu\ ;
+自負心 < jifushin\ ;
+豪雪 < gousetsu\ ;
+相合傘 < aiaigasa\ ;
+聴覚 < choukaku\ ;
+謙譲語 < kenjougo\ ;
+珍重 < chinchou\ ;
+扶持米 < fuchimai\ ;
+再起動 < saikidou\ ;
+獣医学 < juuigaku\ ;
+非常用 < hijouyou\ ;
+破廉恥 < harenchi\ ;
+出放題 < dehoudai\ ;
+安定感 < anteikan\ ;
+側壁 < sokuheki\ ;
+検尿 < ken''nyou\ ;
+養老院 < yourouin\ ;
+乱雑 < ranzatsu\ ;
+属望 < shokubou\ ;
+野良猫 < noraneko\ ;
+中黒 < nakaguro\ ;
+未丁年 < miteinen\ ;
+人足 < hitoashi\ ;
+対物 < taibutsu\ ;
+安定性 < anteisei\ ;
+玉顔 < gyokugan\ ;
+颯颯 < sassatsu\ ;
+仏説 < bussetsu\ ;
+島台 < shimadai\ ;
+仇讎 < kyuushuu\ ;
+併発 < heihatsu\ ;
+駐留 < chuuryuu\ ;
+略帽 < ryakubou\ ;
+決算期 < kessanki\ ;
+朝飯 < asameshi\ ;
+自乗根 < jijoukon\ ;
+全荷重 < zenkajuu\ ;
+何程 < nanihodo\ ;
+奥御殿 < okugoten\ ;
+風食 < fuushoku\ ;
+畳屋 < tatamiya\ ;
+製造所 < seizoujo\ ;
+側圧 < sokuatsu\ ;
+贖罪 < shokuzai\ ;
+快男児 < kaidanji\ ;
+肩肘 < katahiji\ ;
+旺文社 < oubunsha\ ;
+染色 < senshoku\ ;
+超音波 < chouonpa\ ;
+守護霊 < shugorei\ ;
+無期延期 < mukienki\ ;
+木曾川 < kisogawa\ ;
+弱音器 < jakuonki\ ;
+村里 < murazato\ ;
+仙術 < senjutsu\ ;
+俗楽 < zokugaku\ ;
+首筋 < kubisuji\ ;
+佇立 < choritsu\ ;
+密着 < mitchaku\ ;
+決算日 < kessanbi\ ;
+腰板 < koshiita\ ;
+股肉 < momoniku\ ;
+脱漏 < datsurou\ ;
+自主権 < jishuken\ ;
+能弁家 < noubenka\ ;
+可能性 < kanousei\ ;
+大旦那 < oodan''na\ ;
+丸髷 < marumage\ ;
+印度教 < indokyou\ ;
+屈曲 < kukkyoku\ ;
+船人 < funabito\ ;
+骨太 < honebuto\ ;
+高卒 < kousotsu\ ;
+無人島 < mujintou\ ;
+就業 < shuugyou\ ;
+食道 < shokudou\ ;
+真似事 < manegoto\ ;
+谷風 < tanikaze\ ;
+謄写器 < toushaki\ ;
+仮葺 < karibuki\ ;
+風雪 < fuusetsu\ ;
+柔肌 < yawahada\ ;
+駐独 < chuudoku\ ;
+帰還者 < kikansha\ ;
+玉門 < gyokumon\ ;
+助産院 < josan''in\ ;
+月食 < gesshoku\ ;
+女店員 < joten''in\ ;
+栗石 < kuriishi\ ;
+小波 < sazanami\ ;
+蛸部屋 < takobeya\ ;
+予算上 < yosanjou\ ;
+定立 < teiritsu\ ;
+丸首 < marukubi\ ;
+中高 < nakadaka\ ;
+定時制 < teijisei\ ;
+官立 < kanritsu\ ;
+能率 < nouritsu\ ;
+正弦波 < seigenha\ ;
+余所事 < yosogoto\ ;
+足業 < ashiwaza\ ;
+木鐸 < bokutaku\ ;
+主食 < shushoku\ ;
+俗曲 < zokkyoku\ ;
+作病 < sakubyou\ ;
+何百 < nanbyaku\ ;
+仁術 < jinjutsu\ ;
+馬鹿者 < bakamono\ ;
+桜湯 < sakurayu\ ;
+検圧 < ken''atsu\ ;
+儀礼兵 < gireihei\ ;
+一齣 < hitokoma\ ;
+足械 < ashikase\ ;
+月面 < getsumen\ ;
+日本酒 < nihonshu\ ;
+尽日 < jinjitsu\ ;
+少欲 < shouyoku\ ;
+画引 < kakubiki\ ;
+早産児 < souzanji\ ;
+留学 < ryuugaku\ ;
+学習 < gakushuu\ ;
+跋文 < batsubun\ ;
+山彦 < yamabiko\ ;
+山形 < yamagata\ ;
+病中 < byouchuu\ ;
+採綿器 < saimenki\ ;
+偶力 < guuryoku\ ;
+英連邦 < eirenpou\ ;
+任職 < ninshoku\ ;
+脱毛 < datsumou\ ;
+早生児 < souseiji\ ;
+木鋏 < kibasami\ ;
+貧血 < hinketsu\ ;
+加盟者 < kameisha\ ;
+降雨量 < kouuryou\ ;
+耳許 < mimimoto\ ;
+傑人 < ketsujin\ ;
+対決 < taiketsu\ ;
+射殺 < shasatsu\ ;
+警備艇 < keibitei\ ;
+出来事 < dekigoto\ ;
+令色 < reishoku\ ;
+価電子 < kadenshi\ ;
+封殺 < fuusatsu\ ;
+古生界 < koseikai\ ;
+小槌 < kodzuchi\ ;
+学績 < gakuseki\ ;
+山川 < yamagawa\ ;
+高低 < takahiku\ ;
+中頃 < nakagoro\ ;
+職能 < shokunou\ ;
+屈折 < kussetsu\ ;
+実直 < jitchoku\ ;
+金魚屋 < kingyoya\ ;
+腰折 < koshiore\ ;
+木天蓼 < matatabi\ ;
+実益 < jitsueki\ ;
+半裸体 < hanratai\ ;
+定着 < teichaku\ ;
+梁木 < ryouboku\ ;
+日本軍 < nihongun\ ;
+日本車 < nihonsha\ ;
+偶偶 < tamatama\ ;
+修羅道 < shuradou\ ;
+足早 < ashibaya\ ;
+商行為 < shoukoui\ ;
+舌代 < zetsudai\ ;
+柱石 < chuuseki\ ;
+山山 < yamayama\ ;
+条里制 < jourisei\ ;
+中隔 < chuukaku\ ;
+局所 < kyokusho\ ;
+染筆 < senpitsu\ ;
+投影法 < toueihou\ ;
+信憑 < shinpyou\ ;
+桟橋 < sanbashi\ ;
+肉細 < nikuboso\ ;
+客用 < kyakuyou\ ;
+中限 < nakagiri\ ;
+有尾類 < yuubirui\ ;
+山寺 < yamadera\ ;
+欧羅巴 < youroppa\ ;
+万骨 < bankotsu\ ;
+世間体 < sekentei\ ;
+伊達巻 < datemaki\ ;
+修復 < shuufuku\ ;
+仏艦 < futsukan\ ;
+実用 < jitsuyou\ ;
+修得 < shuutoku\ ;
+胆略 < tanryaku\ ;
+水利権 < suiriken\ ;
+史学家 < shigakka\ ;
+丸鑿 < marunomi\ ;
+山守 < yamamori\ ;
+足摺 < ashizuri\ ;
+食言 < shokugen\ ;
+納付金 < noufukin\ ;
+蕎麦殻 < sobagara\ ;
+二言 < futakoto\ ;
+体熱 < tainetsu\ ;
+赤鳥赤腹 < akakokko\ ;
+方向舵 < houkouda\ ;
+仮綴 < karitoji\ ;
+夏至線 < geshisen\ ;
+不均等 < fukintou\ ;
+宇宙帽 < uchuubou\ ;
+無頼漢 < buraikan\ ;
+屈従 < kutsujuu\ ;
+実現 < jitsugen\ ;
+濃度計 < noudokei\ ;
+現職 < genshoku\ ;
+豁達 < kattatsu\ ;
+信念 < shin''nen\ ;
+顎骨 < gakkotsu\ ;
+一昨年 < ototoshi\ ;
+未経験 < mikeiken\ ;
+三食 < sanshoku\ ;
+朝寝坊 < asanebou\ ;
+了覚 < ryoukaku\ ;
+群雲 < murakumo\ ;
+月金 < getsukin\ ;
+赤沈 < sekichin\ ;
+下顎 < shitaago\ ;
+山姫 < yamahime\ ;
+脂汗 < aburaase\ ;
+腰弁 < koshiben\ ;
+宝玉 < hougyoku\ ;
+過大視 < kadaishi\ ;
+少敵 < shouteki\ ;
+翡翠色 < hisuiiro\ ;
+驍将 < gyoushou\ ;
+丘陵 < kyuuryou\ ;
+略名 < ryakumei\ ;
+土根性 < dokonjou\ ;
+略号 < ryakugou\ ;
+略史 < ryakushi\ ;
+番卒 < bansotsu\ ;
+総模様 < soumoyou\ ;
+略取 < ryakushu\ ;
+計算機 < keisanki\ ;
+弁当屋 < bentouya\ ;
+代打者 < daidasha\ ;
+実状 < jitsujou\ ;
+借地 < shakuchi\ ;
+併殺 < heisatsu\ ;
+腰帯 < koshiobi\ ;
+上靴 < uwagutsu\ ;
+膜壁 < makuheki\ ;
+風媒花 < fuubaika\ ;
+脱文 < datsubun\ ;
+存立 < sonritsu\ ;
+無試験 < mushiken\ ;
+宝物 < houmotsu\ ;
+醸造酢 < jouzousu\ ;
+俗形 < zokugyou\ ;
+反動派 < handouha\ ;
+経済家 < keizaika\ ;
+淋巴腺 < rinpasen\ ;
+人膚 < hitohada\ ;
+風足 < kazaashi\ ;
+乾裂 < kanretsu\ ;
+桎梏 < shikkoku\ ;
+一頃 < hitokoro\ ;
+自主性 < jishusei\ ;
+翌週 < yokushuu\ ;
+越天楽 < etenraku\ ;
+権利金 < kenrikin\ ;
+対日 < tainichi\ ;
+枠組 < wakugumi\ ;
+慢性化 < manseika\ ;
+翻訳 < hon''yaku\ ;
+人脈 < jinmyaku\ ;
+授乳期 < junyuuki\ ;
+専門語 < senmongo\ ;
+山城 < yamajiro\ ;
+前舞台 < maebutai\ ;
+天爾乎波 < teniwoha\ ;
+脚本 < kyakuhon\ ;
+選科生 < senkasei\ ;
+東芝 < toushiba\ ;
+赤樫 < akagashi\ ;
+脊椎 < sekitsui\ ;
+実際家 < jissaika\ ;
+柴犬 < shibainu\ ;
+修学 < shuugaku\ ;
+俊徳 < shuntoku\ ;
+一昼夜 < itchuuya\ ;
+月輪 < getsurin\ ;
+仲秋 < chuushuu\ ;
+主述 < shujutsu\ ;
+衆議院 < shuugiin\ ;
+人肉 < jin''niku\ ;
+媒酌 < baishaku\ ;
+日本製 < nihonsei\ ;
+例月 < reigetsu\ ;
+生娘 < kimusume\ ;
+印判師 < inbanshi\ ;
+代筆 < daihitsu\ ;
+密殺 < missatsu\ ;
+暴食 < boushoku\ ;
+山国 < yamaguni\ ;
+職種 < shokushu\ ;
+一際 < hitokiwa\ ;
+小火器 < shoukaki\ ;
+無風帯 < mufuutai\ ;
+一隅 < hitosumi\ ;
+就床 < shuushou\ ;
+丈長 < takenaga\ ;
+頭髪 < touhatsu\ ;
+猥雑 < waizatsu\ ;
+足形 < ashigata\ ;
+走査線 < sousasen\ ;
+安物 < yasumono\ ;
+空手家 < karateka\ ;
+天井値 < tenjoune\ ;
+寒極 < kankyoku\ ;
+足弱 < ashiyowa\ ;
+計算木 < keisangi\ ;
+候哉 < sourouya\ ;
+例日 < reijitsu\ ;
+中速 < chuusoku\ ;
+採炭所 < saitanjo\ ;
+弁務官 < benmukan\ ;
+受益権 < juekiken\ ;
+生壁 < namakabe\ ;
+加工紙 < kakoushi\ ;
+肉的 < nikuteki\ ;
+胸椎 < kyoutsui\ ;
+教務課 < kyoumuka\ ;
+桂月 < keigetsu\ ;
+室温 < shitsuon\ ;
+連動機 < rendouki\ ;
+仙窟 < senkutsu\ ;
+寧日 < neijitsu\ ;
+議事録 < gijiroku\ ;
+再来年 < sarainen\ ;
+一昨夜 < issakuya\ ;
+番付 < bandzuke\ ;
+宇宙塵 < uchuujin\ ;
+水道屋 < suidouya\ ;
+赤松 < akamatsu\ ;
+略体 < ryakutai\ ;
+梅干 < umeboshi\ ;
+腹壁 < fukuheki\ ;
+中軸 < chuujiku\ ;
+略伝 < ryakuden\ ;
+腸壁 < chouheki\ ;
+象虫 < zoumushi\ ;
+林立 < rinritsu\ ;
+重軌条 < juukijou\ ;
+質疑 < shitsugi\ ;
+山吹 < yamabuki\ ;
+踏切 < fumikiri\ ;
+違約金 < iyakukin\ ;
+杏茸 < anzutake\ ;
+生国 < shoukoku\ ;
+鸚鵡病 < oumubyou\ ;
+束脩 < sokushuu\ ;
+単性花 < tanseika\ ;
+宿業 < shukugou\ ;
+注意点 < chuuiten\ ;
+常備金 < joubikin\ ;
+申告 < shinkoku\ ;
+寒月 < kangetsu\ ;
+有識 < yuushiki\ ;
+転移性 < ten''isei\ ;
+餅網 < mochiami\ ;
+何様 < nanisama\ ;
+翁貝 < okinagai\ ;
+活火山 < kakkazan\ ;
+富札 < tomifuda\ ;
+局外 < kyokugai\ ;
+食膳 < shokuzen\ ;
+杉苔 < sugigoke\ ;
+密林 < mitsurin\ ;
+倉卒 < sousotsu\ ;
+客殿 < kyakuden\ ;
+並足 < namiashi\ ;
+加工税 < kakouzei\ ;
+畑作 < hatasaku\ ;
+瓦屋 < kawaraya\ ;
+客死 < kyakushi\ ;
+男前 < otokomae\ ;
+局報 < kyokuhou\ ;
+顰蹙 < hinshuku\ ;
+美粧院 < bishouin\ ;
+宮様 < miyasama\ ;
+作柄 < sakugara\ ;
+献酌 < kenshaku\ ;
+茶箪笥 < chadansu\ ;
+食育 < shokuiku\ ;
+噴火山 < funkazan\ ;
+地方時 < chihouji\ ;
+両足 < ryousoku\ ;
+悪餓鬼 < warugaki\ ;
+博愛家 < hakuaika\ ;
+二股 < futamata\ ;
+上達 < joutatsu\ ;
+情報部 < jouhoubu\ ;
+膝元 < hizamoto\ ;
+宿望 < shukubou\ ;
+日本茶 < nihoncha\ ;
+脱帽 < datsubou\ ;
+申出 < moushide\ ;
+柄物 < garamono\ ;
+上述 < joujutsu\ ;
+作曲 < sakkyoku\ ;
+耳糞 < mimikuso\ ;
+老若 < rounyaku\ ;
+光行差 < koukousa\ ;
+外耳道 < gaijidou\ ;
+肉牛 < nikugyuu\ ;
+山元 < yamamoto\ ;
+地震波 < jishinha\ ;
+三塁打 < sanruida\ ;
+束縛 < sokubaku\ ;
+勾引状 < kouinjou\ ;
+地雷源 < jiraigen\ ;
+電機子 < denkishi\ ;
+末葉 < matsuyou\ ;
+常備軍 < joubigun\ ;
+何月 < nangatsu\ ;
+豚草 < butakusa\ ;
+少少 < shoushou\ ;
+小型化 < kogataka\ ;
+刷毛先 < hakesaki\ ;
+暗闇 < kurayami\ ;
+玉葱 < tamanegi\ ;
+青内障 < aosokohi\ ;
+評議員 < hyougiin\ ;
+乳臭 < nyuushuu\ ;
+甘口 < amakuchi\ ;
+公分母 < koubunbo\ ;
+木菟 < mimizuku\ ;
+可聴度 < kachoudo\ ;
+無条件 < mujouken\ ;
+矢飛白 < yagasuri\ ;
+手腕家 < shuwanka\ ;
+産別 < sanbetsu\ ;
+検事正 < kenjisei\ ;
+便壺 < bentsubo\ ;
+一輛 < ichiryou\ ;
+賜物 < tamamono\ ;
+偽善者 < gizensha\ ;
+伝導度 < dendoudo\ ;
+公募債 < koubosai\ ;
+首枷 < kubikase\ ;
+子爵 < shishaku\ ;
+例式 < reishiki\ ;
+現生 < gen''nama\ ;
+木苺 < kiichigo\ ;
+機関銃 < kikanjuu\ ;
+犬鷲 < inuwashi\ ;
+本色 < honshoku\ ;
+乱脈 < ranmyaku\ ;
+密接 < missetsu\ ;
+一躍 < ichiyaku\ ;
+山人 < yamabito\ ;
+脇息 < kyousoku\ ;
+羽衣 < hagoromo\ ;
+服薬 < fukuyaku\ ;
+武勇伝 < buyuuden\ ;
+梵刹 < bonsetsu\ ;
+伏流 < fukuryuu\ ;
+制御下 < seigyoka\ ;
+対局 < taikyoku\ ;
+蓮華草 < rengesou\ ;
+報知機 < houchiki\ ;
+猫足 < nekoashi\ ;
+小娘 < komusume\ ;
+代物 < daibutsu\ ;
+姫鱒 < himemasu\ ;
+本腰 < hongoshi\ ;
+腹切 < harakiri\ ;
+晩飯 < banmeshi\ ;
+翼翼 < yokuyoku\ ;
+生傷 < namakizu\ ;
+豚肉 < butaniku\ ;
+夏至点 < geshiten\ ;
+頭金 < atamakin\ ;
+武芸者 < bugeisha\ ;
+美質 < bishitsu\ ;
+走馬灯 < soumatou\ ;
+届出 < todokede\ ;
+赤心 < sekishin\ ;
+状骨 < joukotsu\ ;
+翠色 < suishoku\ ;
+両袖 < ryousode\ ;
+丸薬 < gan''yaku\ ;
+宿所 < shukusho\ ;
+果物 < kudamono\ ;
+二重税 < nijuuzei\ ;
+現物 < genbutsu\ ;
+下請 < shitauke\ ;
+木耳 < kikurage\ ;
+尽力 < jinryoku\ ;
+正比例 < seihirei\ ;
+預金者 < yokinsha\ ;
+人畜 < jinchiku\ ;
+加速度 < kasokudo\ ;
+正当化 < seitouka\ ;
+手不足 < tebusoku\ ;
+側火山 < sokkazan\ ;
+過不及 < kafukyuu\ ;
+殺鼠剤 < sassozai\ ;
+記念祭 < kinensai\ ;
+係員 < kakariin\ ;
+不手際 < futegiwa\ ;
+不等辺 < futouhen\ ;
+被害地 < higaichi\ ;
+日本紙 < nihonshi\ ;
+一諾 < ichidaku\ ;
+潜水夫 < sensuifu\ ;
+御陀仏 < odabutsu\ ;
+学歴 < gakureki\ ;
+宿悪 < shukuaku\ ;
+胸座 < munagura\ ;
+一読 < ichidoku\ ;
+寥寥 < ryouryou\ ;
+来着 < raichaku\ ;
+休業 < kyuugyou\ ;
+夜学校 < yagakkou\ ;
+再上映 < saijouei\ ;
+修了 < shuuryou\ ;
+胸幅 < munehaba\ ;
+外来語 < gairaigo\ ;
+難破船 < nanpasen\ ;
+一言 < hitokoto\ ;
+宿志 < shukushi\ ;
+駒下駄 < komageta\ ;
+腕力 < wanryoku\ ;
+腹中 < fukuchuu\ ;
+一角 < hitokado\ ;
+肉欲 < nikuyoku\ ;
+注意書 < chuuisho\ ;
+珠玉 < shugyoku\ ;
+什物 < juumotsu\ ;
+五重奏 < gojuusou\ ;
+肩書 < katagaki\ ;
+漫談家 < mandanka\ ;
+倍精度 < baiseido\ ;
+納付者 < noufusha\ ;
+宿弊 < shukuhei\ ;
+噴火口 < funkakou\ ;
+介護人 < kaigonin\ ;
+乱筆 < ranpitsu\ ;
+人物 < jinbutsu\ ;
+俗信 < zokushin\ ;
+献血 < kenketsu\ ;
+格安 < kakuyasu\ ;
+両蓋 < ryoubuta\ ;
+学業 < gakugyou\ ;
+人爵 < jinshaku\ ;
+猥褻 < waisetsu\ ;
+道議会 < dougikai\ ;
+有機体 < yuukitai\ ;
+豚箱 < butabako\ ;
+仮殿 < karidono\ ;
+飛石 < tobiishi\ ;
+乱立 < ranritsu\ ;
+死産児 < shizanji\ ;
+宿帳 < yadochou\ ;
+寒寒 < samuzamu\ ;
+朱筆 < shuhitsu\ ;
+不規則 < fukisoku\ ;
+主脈 < shumyaku\ ;
+潜水器 < sensuiki\ ;
+付添 < tsukisoi\ ;
+本節 < honbushi\ ;
+曲芸 < kyokugei\ ;
+末節 < massetsu\ ;
+足元 < ashimoto\ ;
+財物 < zaibutsu\ ;
+小名 < shoumyou\ ;
+整備工 < seibikou\ ;
+乗組 < norikumi\ ;
+寝姿 < nesugata\ ;
+曳船 < hikibune\ ;
+末筆 < mappitsu\ ;
+荒武者 < aramusha\ ;
+遠地点 < enchiten\ ;
+昼頃 < hirugoro\ ;
+独身 < dokushin\ ;
+琴曲 < kinkyoku\ ;
+京物 < kyoumono\ ;
+某月 < bougetsu\ ;
+外字紙 < gaijishi\ ;
+今時分 < imajibun\ ;
+豆粕 < mamekasu\ ;
+中腹 < chuufuku\ ;
+反動家 < handouka\ ;
+順逆 < jungyaku\ ;
+大晦日 < oomisoka\ ;
+杉皮 < sugikawa\ ;
+将又 < hatamata\ ;
+不精巧 < fuseikou\ ;
+大丈夫 < daijoubu\ ;
+脱却 < dakkyaku\ ;
+寂寞 < sekibaku\ ;
+食用 < shokuyou\ ;
+某日 < boujitsu\ ;
+保全会 < hozenkai\ ;
+同素体 < dousotai\ ;
+晩酌 < banshaku\ ;
+中肉 < chuuniku\ ;
+依怙贔屓 < ekohiiki\ ;
+貞烈 < teiretsu\ ;
+再交付 < saikoufu\ ;
+飲物 < nomimono\ ;
+両膚 < ryouhada\ ;
+実弾 < jitsudan\ ;
+下萠 < shitamoe\ ;
+天日法 < tenpihou\ ;
+曲者 < kusemono\ ;
+守護神 < shugojin\ ;
+桃園 < momozono\ ;
+組合費 < kumiaihi\ ;
+首巻 < kubimaki\ ;
+仏気 < hotokegi\ ;
+春風 < harukaze\ ;
+荒蕪地 < koubuchi\ ;
+並肉 < naminiku\ ;
+愛媛県 < ehimeken\ ;
+未青年 < miseinen\ ;
+客年 < kyakunen\ ;
+越南 < betonamu\ ;
+両脇 < ryouwaki\ ;
+風窓 < kazamado\ ;
+人事欄 < jinjiran\ ;
+風穴 < fuuketsu\ ;
+仏殿 < butsuden\ ;
+胸壁 < kyouheki\ ;
+長音符 < chouonpu\ ;
+定式 < teishiki\ ;
+不均斉 < fukinsei\ ;
+両肘 < ryouhiji\ ;
+準備金 < junbikin\ ;
+嫡男 < chakunan\ ;
+乳白 < nyuuhaku\ ;
+淋巴液 < rinpaeki\ ;
+事務長 < jimuchou\ ;
+修理屋 < shuuriya\ ;
+低密 < teimitsu\ ;
+両耳 < ryoumimi\ ;
+懐疑論 < kaigiron\ ;
+喉頭炎 < koutouen\ ;
+暴虐 < bougyaku\ ;
+肘掛 < hijikake\ ;
+疎外感 < sogaikan\ ;
+両翼 < ryouyoku\ ;
+密売 < mitsubai\ ;
+木石 < bokuseki\ ;
+玉砕 < gyokusai\ ;
+七草 < nanakusa\ ;
+加速器 < kasokuki\ ;
+宮守 < miyamori\ ;
+玉石 < tamaishi\ ;
+庭下駄 < niwageta\ ;
+仲春 < chuushun\ ;
+桑原 < kuwabara\ ;
+識閾 < shikiiki\ ;
+人波 < hitonami\ ;
+春雨 < harusame\ ;
+翳目 < kasumime\ ;
+猿股 < sarumata\ ;
+休戚 < kyuuseki\ ;
+非常勤 < hijoukin\ ;
+野球部 < yakyuubu\ ;
+客層 < kyakusou\ ;
+前駆戦 < zenkusen\ ;
+春陽 < shun''you\ ;
+貞淑 < teishuku\ ;
+守役 < moriyaku\ ;
+主節 < shusetsu\ ;
+指導部 < shidoubu\ ;
+財産家 < zaisanka\ ;
+一花 < hitohana\ ;
+顔色 < ganshoku\ ;
+中細 < chuuboso\ ;
+中級 < chuukyuu\ ;
+居催促 < izaisoku\ ;
+率直 < sotchoku\ ;
+猫舌 < nekojita\ ;
+三脚 < sankyaku\ ;
+智識 < chishiki\ ;
+当歳馬 < tousaiba\ ;
+下肥 < shimogoe\ ;
+実害 < jitsugai\ ;
+小一 < shouichi\ ;
+貪欲 < don''yoku\ ;
+仁王力 < niouriki\ ;
+人欲 < jin''yoku\ ;
+多肉果 < tanikuka\ ;
+最盛期 < saiseiki\ ;
+実存 < jitsuzon\ ;
+反比例 < hanpirei\ ;
+領袖 < ryoushuu\ ;
+旱魃 < kanbatsu\ ;
+特集 < tokushuu\ ;
+末男 < batsunan\ ;
+音質 < onshitsu\ ;
+寸借 < sunshaku\ ;
+女子高 < joshikou\ ;
+開回路 < kaikairo\ ;
+超俗 < chouzoku\ ;
+曲管 < kyokukan\ ;
+審査員 < shinsain\ ;
+脈動 < myakudou\ ;
+肩幅 < katahaba\ ;
+事務機器 < jimukiki\ ;
+案出 < anshutsu\ ;
+麝香水 < jakousui\ ;
+日本犬 < nihonken\ ;
+事務量 < jimuryou\ ;
+股引 < momohiki\ ;
+丸禿 < maruhage\ ;
+引用句 < in''youku\ ;
+供人 < tomobito\ ;
+科学院 < kagakuin\ ;
+人様 < hitosama\ ;
+乳牛 < nyuugyuu\ ;
+専一 < sen''itsu\ ;
+前頭部 < zentoubu\ ;
+十四日 < juuyokka\ ;
+枕木 < makuragi\ ;
+股座 < matagura\ ;
+特長 < tokuchou\ ;
+狸藻 < tanukimo\ ;
+缶詰 < kandzume\ ;
+一翼 < ichiyoku\ ;
+実妹 < jitsumai\ ;
+中空 < nakazora\ ;
+飲水 < nomimizu\ ;
+中程 < nakahodo\ ;
+今月 < kongetsu\ ;
+貸本 < kashihon\ ;
+並立 < heiritsu\ ;
+安宿 < yasuyado\ ;
+自己暗示 < jikoanji\ ;
+能力 < nouryoku\ ;
+連歌師 < rengashi\ ;
+物陰 < monokage\ ;
+安安 < yasuyasu\ ;
+学徳 < gakutoku\ ;
+支援者 < shiensha\ ;
+習癖 < shuuheki\ ;
+梶木座 < kajikiza\ ;
+丸石 < maruishi\ ;
+地方区 < chihouku\ ;
+万緑 < banryoku\ ;
+宿命 < shukumei\ ;
+山火事 < yamakaji\ ;
+才未満 < saimiman\ ;
+仏文 < futsubun\ ;
+牛革 < gyuukawa\ ;
+聖日 < seijitsu\ ;
+人柄 < hitogara\ ;
+享楽 < kyouraku\ ;
+松柏 < shouhaku\ ;
+群竹 < muratake\ ;
+警蹕 < keihitsu\ ;
+乳濁 < nyuudaku\ ;
+翠玉 < suigyoku\ ;
+人類猿 < jinruien\ ;
+日食 < nisshoku\ ;
+仇敵 < kyuuteki\ ;
+靺鞨 < makkatsu\ ;
+姿見 < sugatami\ ;
+議定書 < giteisho\ ;
+実在 < jitsuzai\ ;
+月番 < tsukiban\ ;
+環七 < kan''nana\ ;
+胸先 < munasaki\ ;
+胸元 < munamoto\ ;
+一組 < hitokumi\ ;
+茶坊主 < chabouzu\ ;
+猫糞 < nekobaba\ ;
+加盟店 < kameiten\ ;
+靴音 < kutsuoto\ ;
+乗物 < norimono\ ;
+風物 < fuubutsu\ ;
+作劇 < sakugeki\ ;
+暖色 < danshoku\ ;
+何卒 < nanitozo\ ;
+緩下剤 < kangezai\ ;
+率然 < sotsuzen\ ;
+萌黄色 < moegiiro\ ;
+空気銃 < kuukijuu\ ;
+休学 < kyuugaku\ ;
+鹹水湖 < kansuiko\ ;
+三筆 < sanpitsu\ ;
+住友 < sumitomo\ ;
+海老腰 < ebigoshi\ ;
+松明 < taimatsu\ ;
+仮役 < kariyaku\ ;
+生計費 < seikeihi\ ;
+中皿 < chuuzara\ ;
+人数 < hitokazu\ ;
+婚約 < kon''yaku\ ;
+下穴 < shitaana\ ;
+宿六 < yadoroku\ ;
+参加者 < sankasha\ ;
+日本海 < nihonkai\ ;
+耳朶 < mimitabu\ ;
+書留 < kakitome\ ;
+一筋 < hitosuji\ ;
+学寮 < gakuryou\ ;
+一筆 < hitofude\ ;
+被乗数 < hijousuu\ ;
+片隅 < katasumi\ ;
+豁然 < katsuzen\ ;
+手風琴 < tefuukin\ ;
+片陰 < katakage\ ;
+亥月 < gaigetsu\ ;
+注意報 < chuuihou\ ;
+風景画 < fuukeiga\ ;
+質屋 < shichiya\ ;
+猪突 < chototsu\ ;
+京方 < kyougata\ ;
+電子音 < denshion\ ;
+牛鍋 < gyuunabe\ ;
+実名 < jitsumei\ ;
+転化糖 < tenkatou\ ;
+来月 < raigetsu\ ;
+胸中 < kyouchuu\ ;
+一種 < hitokusa\ ;
+閉経期 < heikeiki\ ;
+明達 < meitatsu\ ;
+宿便 < shukuben\ ;
+密令 < mitsurei\ ;
+一秒 < ichibyou\ ;
+互助的 < gojoteki\ ;
+乾所帯 < kanjotai\ ;
+大音声 < daionjou\ ;
+破産者 < hasansha\ ;
+閉回路 < heikairo\ ;
+主物 < shubutsu\ ;
+群発 < gunpatsu\ ;
+曲球 < kyokkyuu\ ;
+早鐘 < hayagane\ ;
+胡麻擂 < gomasuri\ ;
+機雷原 < kiraigen\ ;
+二桁 < futaketa\ ;
+来日 < rainichi\ ;
+爪音 < tsumaoto\ ;
+断髪 < danpatsu\ ;
+曲玉 < magatama\ ;
+多孔性 < takousei\ ;
+合成音 < gouseion\ ;
+破魔弓 < hamayumi\ ;
+客分 < kyakubun\ ;
+何何 < naninani\ ;
+造影剤 < zoueizai\ ;
+胆力 < tanryoku\ ;
+事柄 < kotogara\ ;
+仮宮 < karimiya\ ;
+書物 < shomotsu\ ;
+牛酪 < gyuuraku\ ;
+倦怠期 < kentaiki\ ;
+独習 < dokushuu\ ;
+仮宅 < karitaku\ ;
+子宝 < kodakara\ ;
+韮葱 < niranegi\ ;
+未納者 < minousha\ ;
+二重星 < nijuusei\ ;
+佗人 < wabibito\ ;
+仏式 < busshiki\ ;
+三直 < sanchoku\ ;
+何事 < nanigoto\ ;
+肉太 < nikubuto\ ;
+繁体字 < hantaiji\ ;
+三百 < sanbyaku\ ;
+特賞 < tokushou\ ;
+消音器 < shouonki\ ;
+顔着 < ganchaku\ ;
+多人数 < taninzuu\ ;
+赴任地 < funinchi\ ;
+古生代 < koseidai\ ;
+乳業 < nyuugyou\ ;
+日銀 < nichigin\ ;
+枕席 < chinseki\ ;
+賓客 < hinkyaku\ ;
+芝居気 < shibaige\ ;
+実像 < jitsuzou\ ;
+実働 < jitsudou\ ;
+横座標 < ouzahyou\ ;
+自警団 < jikeidan\ ;
+暫定案 < zanteian\ ;
+魚市場 < uoichiba\ ;
+宮人 < miyabito\ ;
+旧里 < furusato\ ;
+一皿 < hitosara\ ;
+一皮 < hitokawa\ ;
+二方 < futakata\ ;
+駅馬車 < ekibasha\ ;
+上略 < jouryaku\ ;
+貫徹 < kantetsu\ ;
+対話体 < taiwatai\ ;
+枢密 < suumitsu\ ;
+一癖 < hitokuse\ ;
+宮中 < kyuuchuu\ ;
+豆殻 < mamegara\ ;
+現尺 < genshaku\ ;
+人影 < hitokage\ ;
+客体 < kyakutai\ ;
+清掃夫 < seisoufu\ ;
+実例 < jitsurei\ ;
+高感度 < koukando\ ;
+木槌 < kidzuchi\ ;
+紀元前 < kigenzen\ ;
+磨研紙 < makenshi\ ;
+現実 < genjitsu\ ;
+客人 < kyakujin\ ;
+既婚者 < kikonsha\ ;
+霹靂 < hekireki\ ;
+搬送波 < hansouha\ ;
+譲葉 < yuzuriha\ ;
+疎開者 < sokaisha\ ;
+思想家 < shisouka\ ;
+谷水 < tanimizu\ ;
+豪日 < gounichi\ ;
+服毒 < fukudoku\ ;
+岩田帯 < iwataobi\ ;
+職域 < shokuiki\ ;
+暴発 < bouhatsu\ ;
+開閉機 < kaiheiki\ ;
+序破急 < johakyuu\ ;
+足忠実 < ashimame\ ;
+食指 < shokushi\ ;
+半減期 < hangenki\ ;
+日輪 < nichirin\ ;
+自然美 < shizenbi\ ;
+肩先 < katasaki\ ;
+外鰐 < sotowani\ ;
+頻発 < hinpatsu\ ;
+前世紀 < zenseiki\ ;
+本末 < honmatsu\ ;
+研磨紙 < kenmashi\ ;
+万物 < banmotsu\ ;
+玉杯 < gyokuhai\ ;
+献物 < kenmotsu\ ;
+人山 < hitoyama\ ;
+青写真 < aojashin\ ;
+早足 < hayaashi\ ;
+祈祷書 < kitousho\ ;
+霧雨 < kirisame\ ;
+帰還兵 < kikanhei\ ;
+閉経後 < heikeigo\ ;
+賢哲 < kentetsu\ ;
+片足 < kataashi\ ;
+一片 < hitohira\ ;
+多方面 < tahoumen\ ;
+燕尾服 < enbifuku\ ;
+禀議書 < ringisho\ ;
+本日 < honjitsu\ ;
+乾拭 < karabuki\ ;
+父兄会 < fukeikai\ ;
+高麗楽 < komagaku\ ;
+食感 < shokukan\ ;
+整髪 < seihatsu\ ;
+仏壇 < butsudan\ ;
+予想外 < yosougai\ ;
+扁桃油 < hentouyu\ ;
+学割 < gakuwari\ ;
+整骨 < seikotsu\ ;
+贋作 < nisesaku\ ;
+学則 < gakusoku\ ;
+曲水 < kyokusui\ ;
+青年期 < seinenki\ ;
+風月 < fuugetsu\ ;
+霜雪 < sousetsu\ ;
+均等化 < kintouka\ ;
+乱掘 < rankutsu\ ;
+受験者 < jukensha\ ;
+時代相 < jidaisou\ ;
+九日 < kokonoka\ ;
+日豪 < nichigou\ ;
+増加分 < zoukabun\ ;
+二連銃 < nirenjuu\ ;
+九族 < kyuuzoku\ ;
+読響 < yomikyou\ ;
+牛角 < gyuukaku\ ;
+大雪 < taisetsu\ ;
+外食 < gaishoku\ ;
+一回転 < ikkaiten\ ;
+夕飯 < yuumeshi\ ;
+職名 < shokumei\ ;
+晩節 < bansetsu\ ;
+二役 < futayaku\ ;
+主脳部 < shunoubu\ ;
+二形 < futanari\ ;
+春菊 < shungiku\ ;
+学僕 < gakuboku\ ;
+納付書 < noufusho\ ;
+豆料 < mameryou\ ;
+朝敵 < chouteki\ ;
+単弁花 < tanbenka\ ;
+流浪者 < rurousha\ ;
+散髪 < sanpatsu\ ;
+菓子盆 < kashibon\ ;
+謎謎 < nazonazo\ ;
+公用語 < kouyougo\ ;
+妄説 < mousetsu\ ;
+頓着 < tonchaku\ ;
+仏噸 < futsuton\ ;
+妖術 < youjutsu\ ;
+雛鳥 < hinadori\ ;
+電飾 < denshoku\ ;
+太陽炉 < taiyouro\ ;
+旧訳 < kyuuyaku\ ;
+月末 < tsukizue\ ;
+独白 < dokuhaku\ ;
+猛烈 < mouretsu\ ;
+受身形 < ukemikei\ ;
+民営化 < min''eika\ ;
+人望家 < jinbouka\ ;
+爪跡 < tsumeato\ ;
+仮初 < karisome\ ;
+来客 < raikyaku\ ;
+月曜 < getsuyou\ ;
+翌朝 < yokuchou\ ;
+総二階 < sounikai\ ;
+繁雑 < hanzatsu\ ;
+解雇者 < kaikosha\ ;
+漢時代 < kanjidai\ ;
+内外野 < naigaiya\ ;
+片仮名 < katakana\ ;
+脱衣所 < datsuijo\ ;
+職分 < shokubun\ ;
+乾式 < kanshiki\ ;
+面識 < menshiki\ ;
+人垣 < hitogaki\ ;
+贈与者 < zouyosha\ ;
+失錯 < shissaku\ ;
+久方 < hisakata\ ;
+月明 < getsumei\ ;
+声高 < kowadaka\ ;
+論述 < ronjutsu\ ;
+翌春 < yokushun\ ;
+保守系 < hoshukei\ ;
+諾諾 < dakudaku\ ;
+識者 < shikisha\ ;
+仕口 < shikuchi\ ;
+海馬回 < kaibakai\ ;
+自堕落 < jidaraku\ ;
+珍妙 < chinmyou\ ;
+貝塚 < kaidzuka\ ;
+本塁打 < honruida\ ;
+聖哲 < seitetsu\ ;
+愛餐会 < aisankai\ ;
+対抗馬 < taikouba\ ;
+面詰 < menkitsu\ ;
+縞馬 < shimauma\ ;
+仮名文 < kanabumi\ ;
+食尽 < shokujin\ ;
+賭事 < kakegoto\ ;
+一流 < ichiryuu\ ;
+中柄 < chuugara\ ;
+書札 < shosatsu\ ;
+妙薬 < myouyaku\ ;
+主日 < shujitsu\ ;
+諸諸 < moromoro\ ;
+胡麻塩 < gomashio\ ;
+加工品 < kakouhin\ ;
+権利書 < kenrisho\ ;
+諸説 < shosetsu\ ;
+廃要素 < haiyouso\ ;
+女親 < on''naoya\ ;
+更更 < sarasara\ ;
+杓子 < shakushi\ ;
+空想家 < kuusouka\ ;
+曲曲 < kumaguma\ ;
+明色 < meishoku\ ;
+販売部 < hanbaibu\ ;
+眼鏡屋 < meganeya\ ;
+他出 < tashutsu\ ;
+前世界 < zensekai\ ;
+本場所 < honbasho\ ;
+雨靴 < amagutsu\ ;
+虚無党 < kyomutou\ ;
+人類愛 < jinruiai\ ;
+二重奏 < nijuusou\ ;
+愛好者 < aikousha\ ;
+合成語 < gouseigo\ ;
+本式 < honshiki\ ;
+仏前 < butsuzen\ ;
+雪雲 < yukigumo\ ;
+雨霰 < amearare\ ;
+木彫 < mokuchou\ ;
+暑熱 < shonetsu\ ;
+石火矢 < ishibiya\ ;
+物色 < busshoku\ ;
+職人 < shokunin\ ;
+出納簿 < suitoubo\ ;
+諧謔 < kaigyaku\ ;
+独特 < dokutoku\ ;
+失速 < shissoku\ ;
+春繭 < harumayu\ ;
+熱願 < netsugan\ ;
+軍管区 < gunkanku\ ;
+末年 < matsunen\ ;
+嫡孫 < chakuson\ ;
+物臭 < monogusa\ ;
+嫡子 < chakushi\ ;
+諤諤 < gakugaku\ ;
+狡猾 < koukatsu\ ;
+雑食 < zasshoku\ ;
+主持 < shumochi\ ;
+嬰児 < midorigo\ ;
+秋田県 < akitaken\ ;
+縦長 < tatenaga\ ;
+儒学界 < jugakkai\ ;
+下手糞 < hetakuso\ ;
+争奪 < soudatsu\ ;
+仏像 < butsuzou\ ;
+未墾地 < mikonchi\ ;
+大多数 < daitasuu\ ;
+子午線 < shigosen\ ;
+老実 < roujitsu\ ;
+大逆 < daigyaku\ ;
+日蓮 < nichiren\ ;
+正常化 < seijouka\ ;
+発酵素 < hakkouso\ ;
+距離計 < kyorikei\ ;
+熱雷 < netsurai\ ;
+船小屋 < funagoya\ ;
+醸造所 < jouzoujo\ ;
+試食 < shishoku\ ;
+敷金 < shikikin\ ;
+嫡妻 < chakusai\ ;
+一棟 < hitomune\ ;
+大納言 < dainagon\ ;
+天文家 < tenmonka\ ;
+模造者 < mozousha\ ;
+失跡 < shisseki\ ;
+寝不足 < nebusoku\ ;
+人刺 < jinsashi\ ;
+電鉄 < dentetsu\ ;
+人別 < ninbetsu\ ;
+専門家 < senmonka\ ;
+論説 < ronsetsu\ ;
+未然形 < mizenkei\ ;
+本局 < honkyoku\ ;
+剪裁機 < sensaiki\ ;
+中指 < nakayubi\ ;
+購買部 < koubaibu\ ;
+貸借 < taishaku\ ;
+獲得 < kakutoku\ ;
+論詰 < ronkitsu\ ;
+慈善会 < jizenkai\ ;
+悪趣味 < akushumi\ ;
+一桁 < hitoketa\ ;
+施術 < shijutsu\ ;
+顛末 < tenmatsu\ ;
+贈与税 < zouyozei\ ;
+財力 < zairyoku\ ;
+語部 < kataribe\ ;
+保存系 < hozonkei\ ;
+三曲 < sankyoku\ ;
+気動車 < kidousha\ ;
+永住者 < eijuusha\ ;
+景物 < keibutsu\ ;
+方術 < houjutsu\ ;
+特約 < tokuyaku\ ;
+繰言 < kurigoto\ ;
+牛肉 < gyuuniku\ ;
+杉垣 < sugigaki\ ;
+王室 < oushitsu\ ;
+一束 < hitotaba\ ;
+牡羊 < ohitsuji\ ;
+谷底 < tanizoko\ ;
+未熟児 < mijukuji\ ;
+一木 < ichiboku\ ;
+人傑 < jinketsu\ ;
+記念品 < kinenhin\ ;
+破瓜病 < hakabyou\ ;
+昨秋 < sakushuu\ ;
+谷川 < tanigawa\ ;
+仄仄 < honobono\ ;
+破産法 < hasanhou\ ;
+停電日 < teidenbi\ ;
+買主 < kainushi\ ;
+受験生 < jukensei\ ;
+陸蒸気 < okajouki\ ;
+一時 < hitotoki\ ;
+昇給 < shoukyuu\ ;
+実行時 < jikkouji\ ;
+片膝 < katahiza\ ;
+飲助 < nomisuke\ ;
+曲悪 < kyokuaku\ ;
+模造紙 < mozoushi\ ;
+二原子 < nigenshi\ ;
+一旗 < hitohata\ ;
+一族 < ichizoku\ ;
+食品 < shokuhin\ ;
+物納 < butsunou\ ;
+失調 < shitchou\ ;
+煮魚 < nizakana\ ;
+失語 < shitsugo\ ;
+万国旗 < bankokki\ ;
+早耳 < hayamimi\ ;
+丸底 < maruzoko\ ;
+事務的 < jimuteki\ ;
+人人 < hitobito\ ;
+散逸 < san''itsu\ ;
+片肌 < katahada\ ;
+書式 < shoshiki\ ;
+人事 < hitogoto\ ;
+総髪 < souhatsu\ ;
+服属 < fukuzoku\ ;
+特種 < tokudane\ ;
+中形 < chuugata\ ;
+人中 < hitonaka\ ;
+推移的 < suiiteki\ ;
+一撃 < ichigeki\ ;
+空気穴 < kuukiana\ ;
+受容者 < juyousha\ ;
+糠味噌 < nukamiso\ ;
+方形波 < houkeiha\ ;
+戦前派 < senzenha\ ;
+処理場 < shorijou\ ;
+二弦琴 < nigenkin\ ;
+中庭 < nakaniwa\ ;
+始発 < shihatsu\ ;
+謝絶 < shazetsu\ ;
+乾咳 < karazeki\ ;
+酒造家 < shuzouka\ ;
+中幕 < nakamaku\ ;
+中幅 < chuuhaba\ ;
+掲示板 < keijiban\ ;
+内風呂 < uchiburo\ ;
+諸膝 < morohiza\ ;
+諸膚 < morohada\ ;
+中席 < nakaseki\ ;
+朝夕 < chouseki\ ;
+牧笛 < bokuteki\ ;
+両得 < ryoutoku\ ;
+縦軸 < tatejiku\ ;
+中労委 < chuuroui\ ;
+姦物 < kanbutsu\ ;
+食刻 < shokkoku\ ;
+玉垣 < tamagaki\ ;
+愛猫家 < aibyouka\ ;
+三回忌 < sankaiki\ ;
+総仕舞 < soujimai\ ;
+雲足 < kumoashi\ ;
+緑風 < ryokufuu\ ;
+物種 < monodane\ ;
+並幅 < namihaba\ ;
+妙策 < myousaku\ ;
+静脈 < joumyaku\ ;
+物税 < butsuzei\ ;
+主客 < shukyaku\ ;
+醸造家 < jouzouka\ ;
+交交 < komogomo\ ;
+爆薬 < bakuyaku\ ;
+中島 < nakajima\ ;
+交付金 < koufukin\ ;
+事共 < kotodomo\ ;
+扇風機 < senpuuki\ ;
+不悉 < fushitsu\ ;
+全候補 < zenkouho\ ;
+理想論 < risouron\ ;
+牧神 < bokushin\ ;
+緑青 < rokushou\ ;
+漢数字 < kansuuji\ ;
+輝煌帝 < kikoutei\ ;
+支持者 < shijisha\ ;
+方舟 < hakobune\ ;
+飯事 < mamagoto\ ;
+中小 < chuushou\ ;
+日米 < nichibei\ ;
+焼鳥 < yakitori\ ;
+大文字 < daimonji\ ;
+謹直 < kinchoku\ ;
+中学 < chuugaku\ ;
+練鉄 < rentetsu\ ;
+変説 < hensetsu\ ;
+敵襲 < tekishuu\ ;
+子午環 < shigokan\ ;
+放逐 < houchiku\ ;
+三役 < san''yaku\ ;
+認識 < ninshiki\ ;
+艶福家 < enpukuka\ ;
+専門医 < senmon''i\ ;
+更年期 < kounenki\ ;
+日本刀 < nihontou\ ;
+緑門 < ryokumon\ ;
+不行儀 < fugyougi\ ;
+帰巣性 < kisousei\ ;
+下手物 < getemono\ ;
+村人 < murabito\ ;
+提案者 < teiansha\ ;
+受信機 < jushinki\ ;
+下帯 < shitaobi\ ;
+一役 < hitoyaku\ ;
+豪傑 < gouketsu\ ;
+揚子江 < yousukou\ ;
+事事 < kotogoto\ ;
+綿雲 < watagumo\ ;
+乱入 < ran''nyuu\ ;
+綿雪 < watayuki\ ;
+経常費 < keijouhi\ ;
+予予 < kanegane\ ;
+世局 < seikyoku\ ;
+練達 < rentatsu\ ;
+暇暇 < himahima\ ;
+隆隆 < ryuuryuu\ ;
+海王星 < kaiousei\ ;
+一度 < hitotabi\ ;
+隅隅 < sumizumi\ ;
+幼稚園 < youchien\ ;
+一年 < hitotose\ ;
+静粛 < seishuku\ ;
+塩鮭 < shiozake\ ;
+族籍 < zokuseki\ ;
+大蒜 < nin''niku\ ;
+一幕 < hitomaku\ ;
+月桂樹 < gekkeiju\ ;
+未記入 < mikinyuu\ ;
+一巻 < hitomaki\ ;
+難詰 < nankitsu\ ;
+雀躍 < jakuyaku\ ;
+中塗 < nakanuri\ ;
+陪食 < baishoku\ ;
+研磨材 < kenmazai\ ;
+二年草 < ninensou\ ;
+頌春 < shoushun\ ;
+義勇軍 < giyuugun\ ;
+文語文 < bungobun\ ;
+誕生日 < tanjoubi\ ;
+伯剌西爾 < burajiru\ ;
+万屋 < yorozuya\ ;
+中垣 < nakagaki\ ;
+金時計 < kindokei\ ;
+風力 < fuuryoku\ ;
+空洞化 < kuudouka\ ;
+糞味噌 < kusomiso\ ;
+乱伐 < ranbatsu\ ;
+日本人 < nihonjin\ ;
+猫属 < nekozoku\ ;
+性遊戯 < seiyuugi\ ;
+中国 < chuugoku\ ;
+次点者 < jitensha\ ;
+頃日 < keijitsu\ ;
+防腐剤 < boufuzai\ ;
+詳註 < shouchuu\ ;
+日本中 < nihonjuu\ ;
+雑談 < zatsudan\ ;
+腕相撲 < udezumou\ ;
+地域差 < chiikisa\ ;
+保護鳥 < hogochou\ ;
+日直 < nitchoku\ ;
+緑酒 < ryokushu\ ;
+一室 < isshitsu\ ;
+太腿 < futomomo\ ;
+小手先 < kotesaki\ ;
+無降水 < mukousui\ ;
+断絶 < danzetsu\ ;
+一子 < hitorigo\ ;
+姫様 < himesama\ ;
+鼻呼吸 < bikokyuu\ ;
+電蓄 < denchiku\ ;
+重騎兵 < juukihei\ ;
+古代史 < kodaishi\ ;
+末代 < matsudai\ ;
+言霊 < kotodama\ ;
+両国 < ryougoku\ ;
+主取 < shuudori\ ;
+雨蛙 < amagaeru\ ;
+熟読 < jukudoku\ ;
+玉体 < gyokutai\ ;
+牧牛 < bokugyuu\ ;
+塾長 < jukuchou\ ;
+熱血 < nekketsu\ ;
+能舞台 < noubutai\ ;
+玉代 < gyokudai\ ;
+集註 < shuuchuu\ ;
+競馬馬 < keibauma\ ;
+隔週 < kakushuu\ ;
+免租地 < mensochi\ ;
+日用 < nichiyou\ ;
+書取 < kakitori\ ;
+二次的 < nijiteki\ ;
+演奏者 < ensousha\ ;
+主力 < shuryoku\ ;
+具体性 < gutaisei\ ;
+月内 < getsunai\ ;
+乞丐 < kotsugai\ ;
+七夕 < tanabata\ ;
+謡物 < utaimono\ ;
+頻尿 < hin''nyou\ ;
+天罰 < tenbatsu\ ;
+一等車 < ittousha\ ;
+面白 < omoshiro\ ;
+曲名 < kyokumei\ ;
+総轄 < soukatsu\ ;
+中古 < chuuburu\ ;
+不品行 < fuhinkou\ ;
+狼座 < ookamiza\ ;
+証跡 < shouseki\ ;
+特科兵 < tokkahei\ ;
+脂肪油 < shibouyu\ ;
+左大臣 < sadaijin\ ;
+金字塔 < kinjitou\ ;
+奮発 < funpatsu\ ;
+高野山 < kouyasan\ ;
+大熊座 < oogumaza\ ;
+明滅 < meimetsu\ ;
+陸釣 < okadzuri\ ;
+謀略 < bouryaku\ ;
+一塩 < hitoshio\ ;
+風上 < kazakami\ ;
+冒険家 < boukenka\ ;
+外股 < sotomata\ ;
+塩濃度 < en''noudo\ ;
+絶食 < zesshoku\ ;
+書初 < kakizome\ ;
+日乃丸 < hinomaru\ ;
+誦習 < shoushuu\ ;
+爆笑 < bakushou\ ;
+習作 < shuusaku\ ;
+特注 < tokuchuu\ ;
+暦学 < rekigaku\ ;
+丸傷 < tamakizu\ ;
+何処迄 < dokomade\ ;
+近似値 < kinjichi\ ;
+透磁性 < toujisei\ ;
+奉祝 < houshuku\ ;
+保護領 < hogoryou\ ;
+中共 < chuukyou\ ;
+特派員 < tokuhain\ ;
+並列 < heiretsu\ ;
+久久 < hisabisa\ ;
+唾液腺 < daekisen\ ;
+緑豆 < ryokutou\ ;
+好物 < koubutsu\ ;
+下院議員 < kaingiin\ ;
+庭木戸 < niwakido\ ;
+青畳 < aodatami\ ;
+雛菊 < hinagiku\ ;
+時時 < tokidoki\ ;
+後援者 < kouensha\ ;
+黄鉄鉱 < outekkou\ ;
+失笑 < shisshou\ ;
+敗色 < haishoku\ ;
+雪膚 < yukihada\ ;
+暗室 < anshitsu\ ;
+古代人 < kodaijin\ ;
+事務服 < jimufuku\ ;
+小麦粉 < komugiko\ ;
+下味 < shitaaji\ ;
+不溶性 < fuyousei\ ;
+結髪 < keppatsu\ ;
+顧問団 < komondan\ ;
+昼時 < hirudoki\ ;
+保有者 < hoyuusha\ ;
+避病院 < hibyouin\ ;
+前景気 < maegeiki\ ;
+丸事 < marugoto\ ;
+電気椅子 < denkiisu\ ;
+外交員 < gaikouin\ ;
+文箱 < fumibako\ ;
+大筒 < oodzutsu\ ;
+丸丸 < marumaru\ ;
+防雪 < bousetsu\ ;
+銅相場 < dousouba\ ;
+訳読 < yakudoku\ ;
+七味 < shichimi\ ;
+方略 < houryaku\ ;
+丸一 < maruichi\ ;
+中低 < nakabiku\ ;
+始末 < shimatsu\ ;
+大童 < oowarawa\ ;
+傾斜度 < keishado\ ;
+高度計 < koudokei\ ;
+青玉 < seigyoku\ ;
+近未来 < kinmirai\ ;
+捕鯨船 < hogeisen\ ;
+失神 < shisshin\ ;
+集落 < shuuraku\ ;
+静物 < seibutsu\ ;
+加害者 < kagaisha\ ;
+数珠玉 < juzudama\ ;
+一向 < hitasura\ ;
+独学 < dokugaku\ ;
+昨朝 < sakuchou\ ;
+一叢 < hitomura\ ;
+曲事 < kusegoto\ ;
+手羽先 < tebasaki\ ;
+補助翼 < hojoyoku\ ;
+中中 < nakanaka\ ;
+慈悲心 < jihishin\ ;
+類別 < ruibetsu\ ;
+外貨債 < gaikasai\ ;
+縮緬 < chirimen\ ;
+情報化 < jouhouka\ ;
+昨暁 < sakugyou\ ;
+総予算 < souyosan\ ;
+真夜中 < mayonaka\ ;
+結願 < kechigan\ ;
+昨春 < sakushun\ ;
+万別 < banbetsu\ ;
+頁岩 < ketsugan\ ;
+並並 < naminami\ ;
+縦縞 < tatejima\ ;
+覗魔 < nozokima\ ;
+増設 < zousetsu\ ;
+一割 < ichiwari\ ;
+夕立 < yuudachi\ ;
+塩辛 < shiokara\ ;
+旧流 < kyuuryuu\ ;
+下意識 < kaishiki\ ;
+代稽古 < daigeiko\ ;
+永住権 < eijuuken\ ;
+保有米 < hoyuumai\ ;
+自国語 < jikokugo\ ;
+反対語 < hantaigo\ ;
+変異体 < hen''itai\ ;
+絹針 < kinubari\ ;
+獄中 < gokuchuu\ ;
+利己的 < rikoteki\ ;
+一先 < hitomazu\ ;
+建具屋 < tateguya\ ;
+昇格 < shoukaku\ ;
+防寒具 < boukangu\ ;
+女学校 < jogakkou\ ;
+保守性 < hoshusei\ ;
+繭玉 < mayudama\ ;
+明月 < meigetsu\ ;
+鞭撻 < bentatsu\ ;
+雨粒 < ametsubu\ ;
+好景気 < koukeiki\ ;
+平和維持 < heiwaiji\ ;
+交付者 < koufusha\ ;
+可変数 < kahensuu\ ;
+花文字 < hanamoji\ ;
+暴力 < bouryoku\ ;
+面会日 < menkaibi\ ;
+観閲 < kan''etsu\ ;
+煙草屋 < tabakoya\ ;
+緑藻 < ryokusou\ ;
+壮絶 < souzetsu\ ;
+雨模様 < amemoyou\ ;
+教籍 < kyouseki\ ;
+明春 < myoushun\ ;
+万代 < yorozuyo\ ;
+支脈 < shimyaku\ ;
+揺籃期 < youranki\ ;
+突破口 < toppakou\ ;
+独国 < dokukoku\ ;
+近代化 < kindaika\ ;
+点火系 < tenkakei\ ;
+二年生 < ninensei\ ;
+星気体 < seikitai\ ;
+不等号 < fudougou\ ;
+有為転変 < uitenpen\ ;
+五辺形 < gohenkei\ ;
+二輪車 < nirinsha\ ;
+三下 < sanshita\ ;
+大略 < tairyaku\ ;
+用箪笥 < youdansu\ ;
+女気 < on''nakke\ ;
+塩豆 < shiomame\ ;
+冷蔵庫 < reizouko\ ;
+万一 < man''ichi\ ;
+雪空 < yukizora\ ;
+謀殺 < bousatsu\ ;
+組長 < kumichou\ ;
+言説 < gensetsu\ ;
+不所存 < fushozon\ ;
+角通 < kakutsuu\ ;
+投光器 < toukouki\ ;
+浜茄子 < hamanasu\ ;
+古書展 < koshoten\ ;
+二十代 < nijuudai\ ;
+一一 < itsuitsu\ ;
+統轄 < toukatsu\ ;
+謡曲 < youkyoku\ ;
+紅鱒 < benimasu\ ;
+市街図 < shigaizu\ ;
+独唱 < dokushou\ ;
+樹枝状 < jushijou\ ;
+緑茶 < ryokucha\ ;
+序盤戦 < jobansen\ ;
+昼席 < hiruseki\ ;
+火成岩 < kaseigan\ ;
+組合員 < kumiaiin\ ;
+亜脱臼 < adakkyuu\ ;
+紅鮭 < benizake\ ;
+納骨 < noukotsu\ ;
+鬱金色 < ukon''iro\ ;
+旧株 < kyuukabu\ ;
+姫宮 < himemiya\ ;
+墜落 < tsuiraku\ ;
+鬼武者 < onimusha\ ;
+斜投影 < shatouei\ ;
+数百 < suuhyaku\ ;
+集約 < shuuyaku\ ;
+誘発 < yuuhatsu\ ;
+滑空機 < kakkuuki\ ;
+片栗 < katakuri\ ;
+旬月 < jungetsu\ ;
+軽騎兵 < keikihei\ ;
+二元論 < nigenron\ ;
+手料理 < teryouri\ ;
+単利法 < tanrihou\ ;
+御神輿 < omikoshi\ ;
+先鋭化 < sen''eika\ ;
+電略 < denryaku\ ;
+撒布剤 < sappuzai\ ;
+文物 < bunbutsu\ ;
+呉服屋 < gofukuya\ ;
+改築 < kaichiku\ ;
+試筋 < tamesuji\ ;
+試筆 < shihitsu\ ;
+旧暦 < kyuureki\ ;
+旬日 < junjitsu\ ;
+雑税 < zatsuzei\ ;
+読物 < yomimono\ ;
+溶解炉 < youkairo\ ;
+雪盲 < setsumou\ ;
+可変性 < kahensei\ ;
+警察 < keisatsu\ ;
+年齢差 < nenreisa\ ;
+解説 < kaisetsu\ ;
+緩緩 < yuruyuru\ ;
+早早 < hayabaya\ ;
+角貝 < tsunogai\ ;
+刀圭家 < toukeika\ ;
+摂食 < sesshoku\ ;
+西陣 < nishijin\ ;
+鳳仙花 < housenka\ ;
+触角 < shokkaku\ ;
+壁紙 < kabegami\ ;
+導波管 < douhakan\ ;
+単比例 < tanpirei\ ;
+捕鯨砲 < hogeihou\ ;
+紐革 < himokawa\ ;
+直足袋 < jikatabi\ ;
+旧教 < kyuukyou\ ;
+集積 < shuuseki\ ;
+埋骨 < maikotsu\ ;
+旗本 < hatamoto\ ;
+外物 < gaibutsu\ ;
+悪太郎 < akutarou\ ;
+有理数 < yuurisuu\ ;
+部分品 < bubunhin\ ;
+可燃性 < kanensei\ ;
+不善感 < fuzenkan\ ;
+級長 < kyuuchou\ ;
+斬殺 < zansatsu\ ;
+洗面所 < senmenjo\ ;
+物情 < butsujou\ ;
+集票 < shuuhyou\ ;
+雨男 < ameotoko\ ;
+爆沈 < bakuchin\ ;
+夜烏 < yogarasu\ ;
+送油管 < souyukan\ ;
+格子戸 < koushido\ ;
+具体例 < gutairei\ ;
+姫垣 < himegaki\ ;
+支持杭 < shijikou\ ;
+熊笹 < kumazasa\ ;
+熱発 < neppatsu\ ;
+無限大 < mugendai\ ;
+順列 < junretsu\ ;
+墨繩 < suminawa\ ;
+精米所 < seimaijo\ ;
+謙抑 < ken''yoku\ ;
+撮要 < satsuyou\ ;
+変物 < henbutsu\ ;
+統語論 < tougoron\ ;
+未開墾 < mikaikon\ ;
+春宵 < shunshou\ ;
+作業費 < sagyouhi\ ;
+闇雲 < yamikumo\ ;
+大阪府 < oosakafu\ ;
+猊美渓 < geibikei\ ;
+打撃王 < dagekiou\ ;
+続落 < zokuraku\ ;
+雪玉 < yukidama\ ;
+摘録 < tekiroku\ ;
+広葉樹 < kouyouju\ ;
+緊縮 < kinshuku\ ;
+試着 < shichaku\ ;
+草創期 < sousouki\ ;
+侍衛長 < jieichou\ ;
+二進木 < nishingi\ ;
+外濠 < sotobori\ ;
+妾宅 < shoutaku\ ;
+顕在化 < kenzaika\ ;
+再試合 < saishiai\ ;
+伝音器 < den''onki\ ;
+義務的 < gimuteki\ ;
+輸卵管 < yurankan\ ;
+低利金 < teirikin\ ;
+戦利品 < senrihin\ ;
+文語体 < bungotai\ ;
+乾性油 < kanseiyu\ ;
+角袖 < kakusode\ ;
+擂粉木 < surikogi\ ;
+闇闇 < yamiyami\ ;
+指導員 < shidouin\ ;
+未開地 < mikaichi\ ;
+秘書官 < hishokan\ ;
+多湿 < tashitsu\ ;
+面接 < mensetsu\ ;
+雑用 < zatsuyou\ ;
+新株 < shinkabu\ ;
+摺足 < suriashi\ ;
+武家物 < bukemono\ ;
+整理券 < seiriken\ ;
+育雛器 < ikusuuki\ ;
+圧搾機 < assakuki\ ;
+旁旁 < katagata\ ;
+新柄 < shingara\ ;
+政略 < seiryaku\ ;
+見通 < mitooshi\ ;
+難物 < nanbutsu\ ;
+二分法 < nibunhou\ ;
+混成語 < konseigo\ ;
+珈琲苑 < kouhiien\ ;
+二部作 < nibusaku\ ;
+総会屋 < soukaiya\ ;
+見返 < mikaeshi\ ;
+仕手戦 < shitesen\ ;
+姫君 < himegimi\ ;
+攻略 < kouryaku\ ;
+結論 < ketsuron\ ;
+奏曲 < soukyoku\ ;
+好好爺 < koukouya\ ;
+税務署 < zeimusho\ ;
+販売機 < hanbaiki\ ;
+霽月 < seigetsu\ ;
+空気孔 < kuukikou\ ;
+疲労感 < hiroukan\ ;
+放水路 < housuiro\ ;
+新暦 < shinreki\ ;
+焼肉 < yakiniku\ ;
+結言 < ketsugen\ ;
+証票 < shouhyou\ ;
+随筆 < zuihitsu\ ;
+外法 < sotonori\ ;
+新春 < shinshun\ ;
+会議所 < kaigisho\ ;
+陸続 < rikuzoku\ ;
+熱熱 < atsuatsu\ ;
+増築 < zouchiku\ ;
+形容語 < keiyougo\ ;
+一回戦 < ikkaisen\ ;
+縮減 < shukugen\ ;
+繁殖 < hanshoku\ ;
+天極 < tenkyoku\ ;
+疑問詞 < gimonshi\ ;
+旧幕 < kyuubaku\ ;
+絹莢 < kinusaya\ ;
+苦労人 < kurounin\ ;
+失格 < shikkaku\ ;
+聖火台 < seikadai\ ;
+日常 < nichijou\ ;
+水位標 < suiihyou\ ;
+悲観論 < hikanron\ ;
+妄語戒 < mougokai\ ;
+雑然 < zatsuzen\ ;
+永小作 < eikosaku\ ;
+炭素鋼 < tansokou\ ;
+繊維束 < senisoku\ ;
+解放区 < kaihouku\ ;
+保守党 < hoshutou\ ;
+放熱 < hounetsu\ ;
+誘殺 < yuusatsu\ ;
+素質 < soshitsu\ ;
+紅一点 < kouitten\ ;
+垂髪 < taregami\ ;
+雁爪 < gandzume\ ;
+縦波 < tatenami\ ;
+診療 < shinryou\ ;
+続続 < zokuzoku\ ;
+爆撃 < bakugeki\ ;
+家庭用 < kateiyou\ ;
+見識 < kenshiki\ ;
+虚空蔵 < kokuuzou\ ;
+誰某 < daresore\ ;
+旋律 < senritsu\ ;
+会計課 < kaikeika\ ;
+熱源 < netsugen\ ;
+勤務者 < kinmusha\ ;
+夜桜 < yozakura\ ;
+文末 < bunmatsu\ ;
+距離感 < kyorikan\ ;
+旧宅 < kyuutaku\ ;
+調教 < choukyou\ ;
+時偶 < tokitama\ ;
+如実 < nyojitsu\ ;
+斎日 < saijitsu\ ;
+熱涙 < netsurui\ ;
+電極 < denkyoku\ ;
+塵箱 < gomibako\ ;
+敏活 < binkatsu\ ;
+開闢 < kaibyaku\ ;
+煥発 < kanpatsu\ ;
+看護法 < kangohou\ ;
+大日 < dainichi\ ;
+催事場 < saijijou\ ;
+鬼兵隊 < kiheitai\ ;
+女子大 < joshidai\ ;
+韓人 < karabito\ ;
+外枠 < sotowaku\ ;
+唯我論 < yuigaron\ ;
+未製品 < miseihin\ ;
+敷板 < shikiita\ ;
+説明 < setsumei\ ;
+無統制 < mutousei\ ;
+縦横 < tateyoko\ ;
+要訣 < youketsu\ ;
+増発 < zouhatsu\ ;
+造船所 < zousenjo\ ;
+身支度 < mijitaku\ ;
+明哲 < meitetsu\ ;
+夜昼 < yoruhiru\ ;
+金本位 < kinhon''i\ ;
+夕月 < yuudzuki\ ;
+多面性 < tamensei\ ;
+大型機 < oogataki\ ;
+方式 < houshiki\ ;
+未開人 < mikaijin\ ;
+門閥 < monbatsu\ ;
+藁屋根 < warayane\ ;
+月世界 < gessekai\ ;
+得意顔 < tokuigao\ ;
+手間隙 < temahima\ ;
+政治犯 < seijihan\ ;
+春先 < harusaki\ ;
+始値 < hajimene\ ;
+洗面器 < senmenki\ ;
+新形 < shingata\ ;
+人文字 < hitomoji\ ;
+模造品 < mozouhin\ ;
+陸相 < rikushou\ ;
+呼吸器 < kokyuuki\ ;
+絹綿 < kinuwata\ ;
+土地鑑 < tochikan\ ;
+牆壁 < shouheki\ ;
+壊滅 < kaimetsu\ ;
+際物 < kiwamono\ ;
+気送管 < kisoukan\ ;
+低金利 < teikinri\ ;
+夭折 < yousetsu\ ;
+英小文字 < eikomoji\ ;
+敵方 < tekigata\ ;
+長長 < naganaga\ ;
+帽子屋 < boushiya\ ;
+御成功 < goseikou\ ;
+珊瑚海 < sangokai\ ;
+約諾 < yakudaku\ ;
+数日 < suujitsu\ ;
+曳光弾 < eikoudan\ ;
+千里眼 < senrigan\ ;
+防縮 < boushuku\ ;
+落下傘 < rakkasan\ ;
+擁立 < youritsu\ ;
+渡航者 < tokousha\ ;
+数数 < kazukazu\ ;
+大所 < oodokoro\ ;
+地鼠 < jinezumi\ ;
+下手人 < geshunin\ ;
+処女林 < shojorin\ ;
+純血 < junketsu\ ;
+事業部 < jigyoubu\ ;
+富山房 < fuzanbou\ ;
+粉飾 < funshoku\ ;
+縦書 < tategaki\ ;
+擦疵 < surikizu\ ;
+塚穴 < tsukaana\ ;
+接待費 < settaihi\ ;
+繊維性 < sen''isei\ ;
+手話法 < shuwahou\ ;
+何処其処 < dokosoko\ ;
+保養地 < hoyouchi\ ;
+照焼 < teriyaki\ ;
+利己心 < rikoshin\ ;
+点火栓 < tenkasen\ ;
+絶筆 < zeppitsu\ ;
+難曲 < nankyoku\ ;
+計略 < keiryaku\ ;
+鎔鉱炉 < youkouro\ ;
+可換群 < kakangun\ ;
+会議場 < kaigijou\ ;
+人非人 < ninpinin\ ;
+見落 < miotoshi\ ;
+炸薬 < sakuyaku\ ;
+花粉管 < kafunkan\ ;
+埋設 < maisetsu\ ;
+過激派 < kagekiha\ ;
+接骨 < sekkotsu\ ;
+陽物 < youbutsu\ ;
+論客 < ronkyaku\ ;
+角笛 < tsunobue\ ;
+熱望 < netsubou\ ;
+溶解度 < youkaido\ ;
+閲読 < etsudoku\ ;
+句読点 < kutouten\ ;
+捜査陣 < sousajin\ ;
+誰彼 < tarekare\ ;
+米食 < beishoku\ ;
+索莫 < sakubaku\ ;
+営利的 < eiriteki\ ;
+被災者 < hisaisha\ ;
+不従順 < fujuujun\ ;
+反射炉 < hansharo\ ;
+雑曲 < zakkyoku\ ;
+佝僂病 < kurubyou\ ;
+太巻 < futomaki\ ;
+新妻 < niidzuma\ ;
+都会人 < tokaijin\ ;
+結紮 < kessatsu\ ;
+呪禁道 < jukondou\ ;
+古版本 < kohanbon\ ;
+測候所 < sokkoujo\ ;
+旧劇 < kyuugeki\ ;
+派遣隊 < hakentai\ ;
+摘芯 < tekishin\ ;
+歓迎宴 < kangeien\ ;
+物事 < monogoto\ ;
+成功裡 < seikouri\ ;
+訳注 < yakuchuu\ ;
+改札 < kaisatsu\ ;
+家庭欄 < kateiran\ ;
+煮沸 < shafutsu\ ;
+大嵐 < ooarashi\ ;
+多変数 < tahensuu\ ;
+男性美 < danseibi\ ;
+雑文 < zatsubun\ ;
+高機能 < koukinou\ ;
+紙花 < kamibana\ ;
+人間苦 < ningenku\ ;
+焼物 < yakimono\ ;
+結節 < kessetsu\ ;
+長軸 < choujiku\ ;
+外庭 < sotoniwa\ ;
+三味線 < shamisen\ ;
+組紐 < kumihimo\ ;
+粒銀 < tsubugin\ ;
+開豁 < kaikatsu\ ;
+縁日 < en''nichi\ ;
+同程度 < douteido\ ;
+夜嵐 < yoarashi\ ;
+数式 < suushiki\ ;
+好塩菌 < kouenkin\ ;
+送気管 < soukikan\ ;
+犠牲者 < giseisha\ ;
+花紋板 < kamonban\ ;
+電子化 < denshika\ ;
+牛乳 < gyuunyuu\ ;
+尽未来 < jinmirai\ ;
+句読法 < kutouhou\ ;
+好天気 < koutenki\ ;
+長足 < chousoku\ ;
+塩物 < shiomono\ ;
+片側 < katagawa\ ;
+浄化槽 < joukasou\ ;
+雀斑 < sobakasu\ ;
+有声音 < yuuseion\ ;
+雲形 < kumogata\ ;
+経穴 < keiketsu\ ;
+反作用 < hansayou\ ;
+撞着 < douchaku\ ;
+全自動 < zenjidou\ ;
+反対派 < hantaiha\ ;
+旧作 < kyuusaku\ ;
+紅花 < benibana\ ;
+処女性 < shojosei\ ;
+手間賃 < temachin\ ;
+陰湿 < inshitsu\ ;
+編曲 < henkyoku\ ;
+組立 < kumitate\ ;
+細細 < hosoboso\ ;
+試掘 < shikutsu\ ;
+塩焼 < shioyaki\ ;
+外局 < gaikyoku\ ;
+増殖 < zoushoku\ ;
+旧人 < furubito\ ;
+一回分 < ikkaibun\ ;
+罹災者 < risaisha\ ;
+訳業 < yakugyou\ ;
+排雪 < haisetsu\ ;
+粛軍 < shukugun\ ;
+熱感 < netsukan\ ;
+失墜 < shittsui\ ;
+国鳥 < kokuchou\ ;
+貯炭所 < chotanjo\ ;
+諸共 < morotomo\ ;
+有人化 < yuujinka\ ;
+外客 < gaikyaku\ ;
+印象派 < inshouha\ ;
+熱情 < netsujou\ ;
+外孫 < sotomago\ ;
+糖蜜 < toumitsu\ ;
+難役 < nan''yaku\ ;
+塗物 < nurimono\ ;
+版下 < hanshita\ ;
+槍騎兵 < soukihei\ ;
+除湿 < joshitsu\ ;
+逃避行 < touhikou\ ;
+内火艇 < naikatei\ ;
+統率 < tousotsu\ ;
+旅先 < tabisaki\ ;
+細筆 < saihitsu\ ;
+雪嶺 < setsurei\ ;
+絹物 < kinumono\ ;
+利権屋 < riken''ya\ ;
+訳柄 < wakegara\ ;
+襟腰 < erikoshi\ ;
+結着 < ketchaku\ ;
+緑林 < ryokurin\ ;
+閲兵台 < eppeidai\ ;
+結盟 < ketsumei\ ;
+混種語 < konshugo\ ;
+熱弁 < netsuben\ ;
+透過性 < toukasei\ ;
+会見記 < kaikenki\ ;
+雑念 < zatsunen\ ;
+討死 < uchijini\ ;
+相似点 < soujiten\ ;
+螺子釘 < nejikugi\ ;
+処女峰 < shojohou\ ;
+看護師 < kangoshi\ ;
+支払 < shiharai\ ;
+親睦 < shinboku\ ;
+堀端 < horibata\ ;
+陥没 < kanbotsu\ ;
+角牛 < kakugyuu\ ;
+雑役 < zatsueki\ ;
+雪山 < yukiyama\ ;
+有頂点 < uchouten\ ;
+諸人 < morobito\ ;
+一等星 < ittousei\ ;
+下水道 < gesuidou\ ;
+非人情 < hininjou\ ;
+陣没 < jinbotsu\ ;
+父上 < chichiue\ ;
+雪害 < setsugai\ ;
+長袖 < nagasode\ ;
+防熱 < bounetsu\ ;
+主義者 < shugisha\ ;
+縄張 < nawabari\ ;
+派遣軍 < hakengun\ ;
+再提案 < saiteian\ ;
+美意識 < biishiki\ ;
+裏道 < uramichi\ ;
+隣接 < rinsetsu\ ;
+継母 < mamahaha\ ;
+大喝 < daikatsu\ ;
+総本家 < souhonke\ ;
+度外視 < dogaishi\ ;
+出来具合 < dekiguai\ ;
+露出 < roshutsu\ ;
+訪日 < hounichi\ ;
+遠征隊 < enseitai\ ;
+塩水 < shiomizu\ ;
+理想型 < risoukei\ ;
+敷地 < shikichi\ ;
+仮分数 < kabunsuu\ ;
+隆昌 < ryuushou\ ;
+新修 < shinshuu\ ;
+助数詞 < josuushi\ ;
+精算所 < seisanjo\ ;
+大吉 < daikichi\ ;
+多面体 < tamentai\ ;
+新作 < shinsaku\ ;
+関脇 < sekiwake\ ;
+燭台 < shokudai\ ;
+炭窯 < sumigama\ ;
+電圧 < den''atsu\ ;
+雨女 < ameon''na\ ;
+激震 < gekishin\ ;
+変圧 < hen''atsu\ ;
+形骸化 < keigaika\ ;
+欧米人 < oubeijin\ ;
+大卒 < daisotsu\ ;
+経師屋 < kyoujiya\ ;
+誤変換 < gohenkan\ ;
+還付金 < kanpukin\ ;
+壁役 < kabeyaku\ ;
+掛軸 < kakejiku\ ;
+縄尻 < nawajiri\ ;
+裲襠 < uchikake\ ;
+基督 < kirisuto\ ;
+晩御飯 < bangohan\ ;
+腕自慢 < udejiman\ ;
+浄水器 < jousuiki\ ;
+助教諭 < jokyouyu\ ;
+大別 < taibetsu\ ;
+斉列 < seiretsu\ ;
+雪国 < yukiguni\ ;
+処女地 < shojochi\ ;
+大冊 < taisatsu\ ;
+緻密 < chimitsu\ ;
+変哲 < hentetsu\ ;
+糸竹 < shichiku\ ;
+開脚 < kaikyaku\ ;
+支局 < shikyoku\ ;
+失保 < shitsuho\ ;
+利用者 < riyousha\ ;
+終熄 < shuusoku\ ;
+無精卵 < museiran\ ;
+鱩 < hatahata\ ;
+無関係 < mukankei\ ;
+外力 < gairyoku\ ;
+調伏 < choubuku\ ;
+雛型 < hinagata\ ;
+正字法 < seijihou\ ;
+要略 < youryaku\ ;
+軍医監 < gun''ikan\ ;
+鯑 < kazunoko\ ;
+警世家 < keiseika\ ;
+来学期 < raigakki\ ;
+映画評 < eigahyou\ ;
+批判者 < hihansha\ ;
+門脈 < monmyaku\ ;
+平叙文 < heijobun\ ;
+褐色 < kasshoku\ ;
+三重苦 < sanjuuku\ ;
+魁 < sakigake\ ;
+模倣者 < mohousha\ ;
+鬣 < tategami\ ;
+電力 < denryoku\ ;
+予選会 < yosenkai\ ;
+演奏会 < ensoukai\ ;
+数列 < suuretsu\ ;
+放埒 < houratsu\ ;
+外側 < sotogawa\ ;
+表門 < omotemon\ ;
+数冊 < suusatsu\ ;
+雲助 < kumosuke\ ;
+雑嚢 < zatsunou\ ;
+不活性 < fukassei\ ;
+濁酒 < doburoku\ ;
+土質 < doshitsu\ ;
+開口部 < kaikoubu\ ;
+敵側 < tekigawa\ ;
+双胴機 < soudouki\ ;
+訥弁 < totsuben\ ;
+裏表 < uraomote\ ;
+読了 < dokuryou\ ;
+灰篩 < haifurui\ ;
+粥腹 < kayubara\ ;
+須弥山 < shumisen\ ;
+瀉血 < shaketsu\ ;
+偽造罪 < gizouzai\ ;
+堅炭 < katazumi\ ;
+綿弓 < watayumi\ ;
+餞 < hanamuke\ ;
+垂耳 < taremimi\ ;
+詰問 < kitsumon\ ;
+秀画家 < shuugaka\ ;
+交代員 < koutaiin\ ;
+売却 < baikyaku\ ;
+採血 < saiketsu\ ;
+縦列 < juuretsu\ ;
+赤電話 < akadenwa\ ;
+有期刑 < yuukikei\ ;
+口話法 < kouwahou\ ;
+戸主権 < koshuken\ ;
+絶望 < zetsubou\ ;
+公安官 < kouankan\ ;
+撃沈 < gekichin\ ;
+角柱 < kakuchuu\ ;
+国辱 < kokujoku\ ;
+歯牙状 < shigajou\ ;
+伝声器 < denseiki\ ;
+頑 < katakuna\ ;
+保険金 < hokenkin\ ;
+士卒 < shisotsu\ ;
+指数部 < shisuubu\ ;
+豪華船 < goukasen\ ;
+丸暗記 < maruanki\ ;
+地袋 < jibukuro\ ;
+売出 < uridashi\ ;
+緊密 < kinmitsu\ ;
+基準点 < kijunten\ ;
+揺篭 < yurikago\ ;
+雪像 < setsuzou\ ;
+紅玉 < kougyoku\ ;
+米蔵 < komegura\ ;
+後援会 < kouenkai\ ;
+潮風 < shiokaze\ ;
+型紙 < katagami\ ;
+県議会 < kengikai\ ;
+訪客 < houkyaku\ ;
+行在所 < anzaisho\ ;
+隼 < hayabusa\ ;
+許嫁 < iinazuke\ ;
+捏造 < netsuzou\ ;
+口語文 < kougobun\ ;
+寝煙草 < netabako\ ;
+断破壊 < danhakai\ ;
+陵 < misasagi\ ;
+磁鉄鉱 < jitekkou\ ;
+円為替 < engawase\ ;
+看護兵 < kangohei\ ;
+営業部 < eigyoubu\ ;
+閏秒 < uruubyou\ ;
+不消化 < fushouka\ ;
+潤飾 < junshoku\ ;
+拳骨 < genkotsu\ ;
+綿密 < menmitsu\ ;
+不徳義 < futokugi\ ;
+地吹雪 < jifubuki\ ;
+激越 < gekietsu\ ;
+須弥壇 < shumidan\ ;
+綿実 < menjitsu\ ;
+佐幕派 < sabakuha\ ;
+閊 < tsukaeru\ ;
+頓痴気 < tonchiki\ ;
+国賊 < kokuzoku\ ;
+多数党 < tasuutou\ ;
+点滅 < tenmetsu\ ;
+激賞 < gekishou\ ;
+採油権 < saiyuken\ ;
+来世紀 < raiseiki\ ;
+隔壁 < kakuheki\ ;
+山水画 < sansuiga\ ;
+掃除人 < soujinin\ ;
+意味部門 < imibumon\ ;
+一等地 < ittouchi\ ;
+税務官 < zeimukan\ ;
+看護人 < kangonin\ ;
+半切符 < hankippu\ ;
+圧瀘器 < atsuroki\ ;
+緑地 < ryokuchi\ ;
+基準法 < kijunhou\ ;
+節電 < setsuden\ ;
+受講者 < jukousha\ ;
+測距儀 < sokkyogi\ ;
+粘粘 < nebaneba\ ;
+冷凍機 < reitouki\ ;
+鋸 < nokogiri\ ;
+等距離 < toukyori\ ;
+炎熱 < en''netsu\ ;
+国許 < kunimoto\ ;
+不名数 < fumeisuu\ ;
+開発 < kaihatsu\ ;
+試運転 < shiunten\ ;
+義勇兵 < giyuuhei\ ;
+親画面 < oyagamen\ ;
+拒否権 < kyohiken\ ;
+二番線 < nibansen\ ;
+営業費 < eigyouhi\ ;
+相似形 < soujikei\ ;
+罹災民 < risaimin\ ;
+寄生木 < yadorigi\ ;
+親族 < shinzoku\ ;
+火薬庫 < kayakuko\ ;
+赤頭巾 < akazukin\ ;
+蜥蜴座 < tokageza\ ;
+警報音 < keihouon\ ;
+粉粉 < konagona\ ;
+大蜥蜴 < ootokage\ ;
+雇人 < yatoinin\ ;
+更生期 < kouseiki\ ;
+設問 < setsumon\ ;
+土左衛門 < dozaemon\ ;
+覚書 < oboegaki\ ;
+疑問文 < gimonbun\ ;
+荷為替 < nigawase\ ;
+編入 < hen''nyuu\ ;
+拒食 < kyoshoku\ ;
+腎臓炎 < jinzouen\ ;
+累月 < ruigetsu\ ;
+垂直 < suichoku\ ;
+寄贈者 < kizousha\ ;
+家庭内 < kateinai\ ;
+紅殻 < benigara\ ;
+落語家 < rakugoka\ ;
+無節操 < musessou\ ;
+角店 < kadomise\ ;
+練乳 < ren''nyuu\ ;
+容疑者 < yougisha\ ;
+米糠 < komenuka\ ;
+展開図 < tenkaizu\ ;
+私生児 < shiseiji\ ;
+躾 < shitsuke\ ;
+総力 < souryoku\ ;
+大手筋 < ootesuji\ ;
+累日 < ruijitsu\ ;
+公定価 < kouteika\ ;
+気分屋 < kibun''ya\ ;
+在職 < zaishoku\ ;
+埋没 < maibotsu\ ;
+一等兵 < ittouhei\ ;
+下水管 < gesuikan\ ;
+整数比 < seisuuhi\ ;
+粘着 < nenchaku\ ;
+糞溜 < kusodame\ ;
+築造 < chikuzou\ ;
+社務所 < shamusho\ ;
+触媒 < shokubai\ ;
+高層雲 < kousouun\ ;
+常套語 < joutougo\ ;
+船外機 < sengaiki\ ;
+隊列 < tairetsu\ ;
+双暗車 < souansha\ ;
+索敵 < sakuteki\ ;
+旅客機 < ryokakki\ ;
+増刷 < zousatsu\ ;
+緑便 < ryokuben\ ;
+潮足 < shioashi\ ;
+閲歴 < etsureki\ ;
+運営者 < un''eisha\ ;
+恣意的 < shiiteki\ ;
+納札 < nousatsu\ ;
+破天荒 < hatenkou\ ;
+熱帯夜 < nettaiya\ ;
+達成度 < tasseido\ ;
+多角形 < takakkei\ ;
+振袖 < furisode\ ;
+糟汁 < kasujiru\ ;
+入会権 < iriaiken\ ;
+千葉県 < chibaken\ ;
+五月雨 < samidare\ ;
+準会員 < junkaiin\ ;
+諺 < kotowaza\ ;
+約束 < yakusoku\ ;
+水曜日 < suiyoubi\ ;
+渇水期 < kassuiki\ ;
+抑鬱 < yokuutsu\ ;
+競馬場 < keibajou\ ;
+指貫 < yubinuki\ ;
+鳩小屋 < hatogoya\ ;
+激臭 < gekishuu\ ;
+不正視 < fuseishi\ ;
+見所 < midokoro\ ;
+四半期 < shihanki\ ;
+粗率 < araritsu\ ;
+作用点 < sayouten\ ;
+遊園地 < yuuenchi\ ;
+軌道船 < kidousen\ ;
+弁理士 < benrishi\ ;
+終幕 < shuumaku\ ;
+襲撃 < shuugeki\ ;
+麻酔銃 < masuijuu\ ;
+褌 < fundoshi\ ;
+木螺子 < mokuneji\ ;
+結局 < kekkyoku\ ;
+歩数計 < hosuukei\ ;
+主題歌 < shudaika\ ;
+筋骨 < sujibone\ ;
+正会員 < seikaiin\ ;
+微分法 < bibunhou\ ;
+動員令 < douinrei\ ;
+観客 < kankyaku\ ;
+接着 < setchaku\ ;
+青瓦台 < seigadai\ ;
+陣列 < jinretsu\ ;
+渡船場 < tosenjou\ ;
+土筆 < tsukushi\ ;
+粛然 < shukuzen\ ;
+意識下 < ishikika\ ;
+細引 < hosobiki\ ;
+親局 < oyakyoku\ ;
+保護国 < hogokoku\ ;
+同性愛 < douseiai\ ;
+油圧器 < yuatsuki\ ;
+燕青拳 < enseiken\ ;
+幼年期 < younenki\ ;
+豪華版 < goukaban\ ;
+表芸 < omotegei\ ;
+医原病 < igenbyou\ ;
+電話線 < denwasen\ ;
+冷凍庫 < reitouko\ ;
+還付税 < kanpuzei\ ;
+弁護者 < bengosha\ ;
+装着 < souchaku\ ;
+電話網 < denwamou\ ;
+登山道 < tozandou\ ;
+蛤 < hamaguri\ ;
+濃縮 < noushuku\ ;
+意味原理 < imigenri\ ;
+提灯 < chouchin\ ;
+阿房鳥 < ahoudori\ ;
+予備的 < yobiteki\ ;
+裏町 < uramachi\ ;
+土神 < uchigami\ ;
+扶助料 < fujoryou\ ;
+堀川 < horikawa\ ;
+猿知恵 < sarudjie\ ;
+地蔵顔 < jizougao\ ;
+絶命 < zetsumei\ ;
+陋劣 < rouretsu\ ;
+作業場 < sagyouba\ ;
+筆順 < hitsujun\ ;
+空相場 < kuusouba\ ;
+袴着 < hakamagi\ ;
+国籍 < kokuseki\ ;
+挽肉 < hikiniku\ ;
+混合語 < kongougo\ ;
+妥協案 < dakyouan\ ;
+細密 < saimitsu\ ;
+間柄 < aidagara\ ;
+無抵抗 < muteikou\ ;
+撃墜 < gekitsui\ ;
+葉節点 < hasetten\ ;
+他動詞 < tadoushi\ ;
+映画狂 < eigakyou\ ;
+国策 < kokusaku\ ;
+法華経 < hokekyou\ ;
+筆陣 < hitsujin\ ;
+酢料理 < suryouri\ ;
+政府米 < seifumai\ ;
+結団 < ketsudan\ ;
+螢雪 < keisetsu\ ;
+好結果 < koukekka\ ;
+活性化 < kasseika\ ;
+助言者 < jogonsha\ ;
+裏千家 < urasenke\ ;
+舎利塔 < sharitou\ ;
+蝶鮫 < chouzame\ ;
+搦手 < karamete\ ;
+不祝儀 < bushuugi\ ;
+団結 < danketsu\ ;
+過渡的 < katoteki\ ;
+陶芸家 < tougeika\ ;
+紙屑 < kamikuzu\ ;
+作業員 < sagyouin\ ;
+血色 < kesshoku\ ;
+多摩川 < tamagawa\ ;
+微苦笑 < bikushou\ ;
+欺瞞者 < gimansha\ ;
+門札 < monsatsu\ ;
+立法府 < rippoufu\ ;
+被災地 < hisaichi\ ;
+猛打者 < moudasha\ ;
+絶倫 < zetsurin\ ;
+型枠 < katawaku\ ;
+不祥事 < fushouji\ ;
+結果論 < kekkaron\ ;
+闇市 < yamiichi\ ;
+融雪 < yuusetsu\ ;
+簒立 < sanritsu\ ;
+下水溝 < gesuikou\ ;
+水風呂 < mizuburo\ ;
+方位角 < houikaku\ ;
+防塵着 < boujingi\ ;
+既視想 < kishikan\ ;
+地熱 < chinetsu\ ;
+聾 < mimishii\ ;
+口語体 < kougotai\ ;
+幹部会 < kanbukai\ ;
+交際費 < kousaihi\ ;
+筋金 < sujigane\ ;
+武士道 < bushidou\ ;
+魔方陣 < mahoujin\ ;
+算術 < sanjutsu\ ;
+葡萄酒 < budoushu\ ;
+長旅 < nagatabi\ ;
+双子座 < futagoza\ ;
+脱水機 < dassuiki\ ;
+火口原 < kakougen\ ;
+低次元 < teijigen\ ;
+防人 < sakimori\ ;
+厳冬期 < gentouki\ ;
+不退転 < futaiten\ ;
+蟻蜂 < aribachi\ ;
+手土産 < temiyage\ ;
+危険視 < kikenshi\ ;
+衝立 < tsuitate\ ;
+舞踊団 < butoudan\ ;
+不決定 < fukettei\ ;
+回帰線 < kaikisen\ ;
+綴 < tsudzuri\ ;
+区民税 < kuminzei\ ;
+何番目 < nanbanme\ ;
+簡略 < kanryaku\ ;
+脱気水 < dakkisui\ ;
+刑務所 < keimusho\ ;
+健啖家 < kentanka\ ;
+破壊者 < hakaisha\ ;
+自意識 < jiishiki\ ;
+七十路 < nanasoji\ ;
+観自在 < kanjizai\ ;
+遠心機 < enshinki\ ;
+捨猫 < suteneko\ ;
+朱印船 < shuinsen\ ;
+洗濯機 < sentakki\ ;
+不動産 < fudousan\ ;
+蟀谷 < komekami\ ;
+噴気孔 < funkikou\ ;
+蟯虫 < gyouchuu\ ;
+蝦夷松 < ezomatsu\ ;
+鬼刑事 < onikeiji\ ;
+感嘆符 < kantanfu\ ;
+法医学 < houigaku\ ;
+粉末 < funmatsu\ ;
+篁 < takamura\ ;
+埒外 < rachigai\ ;
+鳥小屋 < torigoya\ ;
+坪数 < tsubosuu\ ;
+筍 < takenoko\ ;
+自営業 < jieigyou\ ;
+糞尿 < fun''nyou\ ;
+表白 < hyouhaku\ ;
+精錬所 < seirenjo\ ;
+四百 < yonhyaku\ ;
+細別 < saibetsu\ ;
+手鏡 < tekagami\ ;
+黄菖蒲 < kishoubu\ ;
+亜大陸 < atairiku\ ;
+備考欄 < bikouran\ ;
+蠏股 < ganimata\ ;
+堀割 < horiwari\ ;
+片手間 < katatema\ ;
+人間味 < ningenmi\ ;
+関守 < sekimori\ ;
+無意識 < muishiki\ ;
+投資家 < toushika\ ;
+下水板 < gesuiita\ ;
+血税 < ketsuzei\ ;
+馬蹄形 < bateikei\ ;
+全音符 < zen''onpu\ ;
+執務 < shitsumu\ ;
+捕物 < torimono\ ;
+成香 < narikyou\ ;
+高輝度 < koukidou\ ;
+米松 < beimatsu\ ;
+節糸 < fushiito\ ;
+不可侵 < fukashin\ ;
+黄口児 < koukouji\ ;
+分科会 < bunkakai\ ;
+節米 < setsumai\ ;
+蜘蛛膜 < kumomaku\ ;
+事業家 < jigyouka\ ;
+承諾 < shoudaku\ ;
+入会地 < iriaichi\ ;
+筆談 < hitsudan\ ;
+図書館 < toshokan\ ;
+開局 < kaikyoku\ ;
+製版所 < seihanjo\ ;
+東大寺 < toudaiji\ ;
+鎌首 < kamakubi\ ;
+立食 < risshoku\ ;
+中位数 < chuuisuu\ ;
+衆目 < shuumoku\ ;
+筆触 < hisshoku\ ;
+参賀者 < sangasha\ ;
+批准書 < hijunsho\ ;
+垂幕 < taremaku\ ;
+立願 < ritsugan\ ;
+摂動 < setsudou\ ;
+舞踏会 < butoukai\ ;
+精密 < seimitsu\ ;
+理化学 < rikagaku\ ;
+節穴 < fushiana\ ;
+登山者 < tozansha\ ;
+助教授 < jokyouju\ ;
+刑務官 < keimukan\ ;
+癸 < mizunoto\ ;
+政務官 < seimukan\ ;
+節税 < setsuzei\ ;
+正義感 < seigikan\ ;
+糸口 < itoguchi\ ;
+医薬品 < iyakuhin\ ;
+化粧着 < keshougi\ ;
+手車 < teguruma\ ;
+火達磨 < hidaruma\ ;
+長尻 < nagajiri\ ;
+濁流 < dakuryuu\ ;
+素人 < shirouto\ ;
+不徹底 < futettei\ ;
+激流 < gekiryuu\ ;
+執事 < shitsuji\ ;
+留守宅 < rusutaku\ ;
+所轄 < shokatsu\ ;
+拒絶 < kyozetsu\ ;
+凡試合 < bonshiai\ ;
+万歩計 < manpokei\ ;
+二枚貝 < nimaigai\ ;
+排日 < hainichi\ ;
+用水路 < yousuiro\ ;
+系列 < keiretsu\ ;
+衰滅 < suimetsu\ ;
+時計店 < tokeiten\ ;
+固定子 < koteishi\ ;
+有煙炭 < yuuentan\ ;
+裏鬼門 < urakimon\ ;
+採掘 < saikutsu\ ;
+御母様 < okaasama\ ;
+埒内 < rachinai\ ;
+道祖神 < dousojin\ ;
+在日 < zainichi\ ;
+合法化 < gouhouka\ ;
+漁色 < gyoshoku\ ;
+拙筆 < seppitsu\ ;
+純一 < jun''itsu\ ;
+首都圏 < shutoken\ ;
+三毛猫 < mikeneko\ ;
+探知機 < tanchiki\ ;
+死火山 < shikazan\ ;
+色模様 < iromoyou\ ;
+糸電話 < itodenwa\ ;
+重大化 < juudaika\ ;
+搬入 < han''nyuu\ ;
+関取 < sekitori\ ;
+三段目 < sandanme\ ;
+祭壇座 < saidanza\ ;
+搾乳 < sakunyuu\ ;
+烏帽子名 < eboshina\ ;
+漫筆 < manpitsu\ ;
+兄弟子 < anideshi\ ;
+運命論 < unmeiron\ ;
+普通科 < futsuuka\ ;
+上古史 < joukoshi\ ;
+預貯金 < yochokin\ ;
+抜群 < batsugun\ ;
+妥当性 < datousei\ ;
+国柄 < kunigara\ ;
+葡萄色 < budouiro\ ;
+排水路 < haisuiro\ ;
+横断面 < oudanmen\ ;
+整経機 < seikeiki\ ;
+手袋 < tebukuro\ ;
+閣僚 < kakuryou\ ;
+簡体字 < kantaiji\ ;
+風邪気味 < kazegimi\ ;
+可溶片 < kayouhen\ ;
+儀仗兵 < gijouhei\ ;
+陸屋根 < rokuyane\ ;
+籤引 < kujibiki\ ;
+座談会 < zadankai\ ;
+帆前船 < homaesen\ ;
+指話法 < shiwahou\ ;
+偽造品 < gizouhin\ ;
+筋肉 < kin''niku\ ;
+世帯数 < setaisuu\ ;
+一周期 < isshuuki\ ;
+中耳炎 < chuujien\ ;
+窓際 < madogiwa\ ;
+富士通 < fujitsuu\ ;
+家屋税 < kaokuzei\ ;
+間八 < kanpachi\ ;
+笹舟 < sasabune\ ;
+機動隊 < kidoutai\ ;
+防火線 < boukasen\ ;
+教護院 < kyougoin\ ;
+接岸 < setsugan\ ;
+戯言 < tawagoto\ ;
+螺子山 < nejiyama\ ;
+乳児院 < nyuujiin\ ;
+血液 < ketsueki\ ;
+腕時計 < udedokei\ ;
+蠏玉 < kanitama\ ;
+血涙 < ketsurui\ ;
+戸袋 < tobukuro\ ;
+朱印状 < shuinjou\ ;
+推察 < suisatsu\ ;
+真意義 < shin''igi\ ;
+遊技場 < yuugijou\ ;
+勧工場 < kankouba\ ;
+接客 < sekkyaku\ ;
+三冠馬 < sankanba\ ;
+嗅覚 < kyuukaku\ ;
+天才児 < tensaiji\ ;
+逆茂木 < sakamogi\ ;
+折節 < orifushi\ ;
+補充兵 < hojuuhei\ ;
+建議者 < kengisha\ ;
+常夜灯 < jouyatou\ ;
+潤滑 < junkatsu\ ;
+鎌足 < kamaashi\ ;
+草屋根 < kusayane\ ;
+潮流 < chouryuu\ ;
+四月 < shigatsu\ ;
+嘲笑 < choushou\ ;
+権威者 < ken''isha\ ;
+窮追 < kyuutsui\ ;
+窮迫 < kyuuhaku\ ;
+握力 < akuryoku\ ;
+砕岩機 < saiganki\ ;
+葡萄糖 < budoutou\ ;
+白亜館 < hakuakan\ ;
+混和性 < konwasei\ ;
+左顧右眄 < sakouben\ ;
+化粧殿 < kewaiden\ ;
+鍛鉄 < tantetsu\ ;
+揚力 < youryoku\ ;
+千分比 < senbunhi\ ;
+竹薮 < takeyabu\ ;
+才色 < saishoku\ ;
+時計台 < tokeidai\ ;
+同母姉 < douboshi\ ;
+立論 < ritsuron\ ;
+米坪 < beitsubo\ ;
+楠 < kusunoki\ ;
+筆箱 < fudebako\ ;
+測量 < sokuryou\ ;
+等等 < nadonado\ ;
+立言 < ritsugen\ ;
+黄水仙 < kisuisen\ ;
+粛党 < shukutou\ ;
+弱味噌 < yowamiso\ ;
+裸出 < rashutsu\ ;
+鍋釜 < nabekama\ ;
+留守中 < rusuchuu\ ;
+衝撃 < shougeki\ ;
+混雑 < konzatsu\ ;
+小児科 < shounika\ ;
+長久 < choukyuu\ ;
+三十戸 < sanjikko\ ;
+電離層 < denrisou\ ;
+高踏派 < koutouha\ ;
+理工系 < rikoukei\ ;
+無礼講 < bureikou\ ;
+地境 < djizakai\ ;
+挿抜 < soubatsu\ ;
+仮名文字 < kanamoji\ ;
+不十分 < fujuubun\ ;
+哺乳期 < honyuuki\ ;
+石油王 < sekiyuou\ ;
+衣手 < koromode\ ;
+御利益 < goriyaku\ ;
+投書家 < toushoka\ ;
+遺留品 < iryuuhin\ ;
+蛸足 < takoashi\ ;
+遺伝病 < idenbyou\ ;
+揚炭機 < youtanki\ ;
+非変換 < hihenkan\ ;
+改正案 < kaiseian\ ;
+高高度 < koukoudo\ ;
+経産婦 < keisanpu\ ;
+接合 < setsugou\ ;
+裏口 < uraguchi\ ;
+抑留 < yokuryuu\ ;
+赤裸裸 < sekirara\ ;
+混合機 < kongouki\ ;
+潮時 < shiodoki\ ;
+寄贈品 < kizouhin\ ;
+濃密 < noumitsu\ ;
+夜行性 < yakousei\ ;
+前衛派 < zen''eiha\ ;
+未決算 < mikessan\ ;
+国学 < kokugaku\ ;
+漠漠 < bakubaku\ ;
+揉事 < momegoto\ ;
+主要部 < shuyoubu\ ;
+避寒地 < hikanchi\ ;
+水垢離 < mizugori\ ;
+委託生 < itakusei\ ;
+警報機 < keihouki\ ;
+温罨法 < on''anpou\ ;
+対応版 < taiouban\ ;
+喇嘛教 < ramakyou\ ;
+遺留分 < iryuubun\ ;
+昆布茶 < konbucha\ ;
+鼻髭 < hanahige\ ;
+乗算器 < jouzanki\ ;
+立葵 < tachiaoi\ ;
+粉乳 < fun''nyuu\ ;
+鼻高 < hanataka\ ;
+葬儀社 < sougisha\ ;
+判検事 < hankenji\ ;
+喀血 < kakketsu\ ;
+特異点 < tokuiten\ ;
+保険屋 < hoken''ya\ ;
+投物 < nagemono\ ;
+地卵 < jitamago\ ;
+不都合 < futsugou\ ;
+所持金 < shojikin\ ;
+虎河豚 < torafugu\ ;
+技能者 < ginousha\ ;
+抗議文 < kougibun\ ;
+袖垣 < sodegaki\ ;
+既製品 < kiseihin\ ;
+基礎的 < kisoteki\ ;
+深酒 < fukazake\ ;
+貝細工 < kaizaiku\ ;
+黒百合 < kuroyuri\ ;
+空豆 < soramame\ ;
+茶菓子 < chagashi\ ;
+鼻風 < hanakaze\ ;
+米仏 < beifutsu\ ;
+否定文 < hiteibun\ ;
+捕失 < hoshitsu\ ;
+抄物 < shoumono\ ;
+竹簡 < chikukan\ ;
+抹殺 < massatsu\ ;
+弁護士 < bengoshi\ ;
+手裏剣 < shuriken\ ;
+銀時計 < gindokei\ ;
+三連符 < sanrenpu\ ;
+裏付 < uradzuke\ ;
+唐鋤 < karasuki\ ;
+圧出 < asshutsu\ ;
+立脚 < rikkyaku\ ;
+竹箆 < takebera\ ;
+国国 < kuniguni\ ;
+簒奪 < sandatsu\ ;
+均一 < kin''itsu\ ;
+漏泄 < rousetsu\ ;
+鼻革 < hanagawa\ ;
+空説 < kuusetsu\ ;
+小切子 < kokiriko\ ;
+搭乗員 < toujouin\ ;
+世界観 < sekaikan\ ;
+圧入 < atsunyuu\ ;
+挙式 < kyoshiki\ ;
+空言 < soragoto\ ;
+唐金 < karakane\ ;
+倉庫番 < soukoban\ ;
+虎鬚 < torahige\ ;
+溶発 < youhatsu\ ;
+滴滴 < tekiteki\ ;
+漂流 < hyouryuu\ ;
+鏑矢 < kaburaya\ ;
+文科系 < bunkakei\ ;
+能文家 < noubunka\ ;
+弁護団 < bengodan\ ;
+巫 < kan''nagi\ ;
+銀世界 < ginsekai\ ;
+拙文 < setsubun\ ;
+螢火 < hotarubi\ ;
+匈牙利 < hangarii\ ;
+才略 < sairyaku\ ;
+銀鼠 < gin''nezu\ ;
+猿真似 < sarumane\ ;
+猪口才 < chokozai\ ;
+鋳物師 < imonoshi\ ;
+無鉄砲 < muteppou\ ;
+同分母 < doubunbo\ ;
+国原 < kunibara\ ;
+未消化 < mishouka\ ;
+蛞蝓 < namekuji\ ;
+空蝉 < utsusemi\ ;
+築庭 < chikutei\ ;
+篤学 < tokugaku\ ;
+広東語 < kantongo\ ;
+寿 < kotobuki\ ;
+一私人 < isshijin\ ;
+融熱 < yuunetsu\ ;
+漢蔵語 < kanzougo\ ;
+二人目 < futarime\ ;
+富士絹 < fujiginu\ ;
+肛門科 < koumonka\ ;
+静電気 < seidenki\ ;
+鍋蓋 < nabebuta\ ;
+原動機 < gendouki\ ;
+乾船渠 < kandokku\ ;
+鼓吹者 < kosuisha\ ;
+大和煮 < yamatoni\ ;
+筆洗 < fudearai\ ;
+茶道具 < chadougu\ ;
+困却 < konkyaku\ ;
+懸絶 < kenzetsu\ ;
+排気管 < haikikan\ ;
+黒黴 < kurokabi\ ;
+当事者 < toujisha\ ;
+墓誌銘 < boshimei\ ;
+黒麦 < kuromugi\ ;
+短水路 < tansuiro\ ;
+成程 < naruhodo\ ;
+喫茶店 < kissaten\ ;
+時間帯 < jikantai\ ;
+無水酸 < musuisan\ ;
+才物 < saibutsu\ ;
+黒鷺 < kurosagi\ ;
+鉤鼻 < kagibana\ ;
+破防法 < habouhou\ ;
+混血 < konketsu\ ;
+箱庭 < hakoniwa\ ;
+合歓木 < nemunoki\ ;
+拙悪 < setsuaku\ ;
+聖歌隊 < seikatai\ ;
+黒鴨 < kurogamo\ ;
+銀髪 < ginpatsu\ ;
+蛆虫 < ujimushi\ ;
+印紙税 < inshizei\ ;
+蠍座 < sasoriza\ ;
+袖丈 < sodetake\ ;
+戦略 < senryaku\ ;
+文房具 < bunbougu\ ;
+保管金 < hokankin\ ;
+回勅 < kaichoku\ ;
+最多数 < saitasuu\ ;
+不透明 < futoumei\ ;
+栽培所 < saibaijo\ ;
+林檎酒 < ringoshu\ ;
+国人 < kunibito\ ;
+母細胞 < bosaibou\ ;
+好打者 < koudasha\ ;
+円筒形 < entoukei\ ;
+摂関家 < sekkanke\ ;
+正規軍 < seikigun\ ;
+浜風 < hamakaze\ ;
+常套句 < joutouku\ ;
+竪琴 < tategoto\ ;
+渋茶 < shibucha\ ;
+未決済 < mikessai\ ;
+蚰蜒 < gejigeji\ ;
+納戸色 < nandoiro\ ;
+抗日 < kounichi\ ;
+非線形 < hisenkei\ ;
+風呂釜 < furogama\ ;
+弁護人 < bengonin\ ;
+渋色 < shibuiro\ ;
+鎮守府 < chinjufu\ ;
+一張羅 < itchoura\ ;
+子会社 < kogaisha\ ;
+不凍港 < futoukou\ ;
+活魚 < katsugyo\ ;
+卵塔場 < rantouba\ ;
+中央部 < chuuoubu\ ;
+不凍液 < futoueki\ ;
+天秤座 < tenbinza\ ;
+空耳 < soramimi\ ;
+危険性 < kikensei\ ;
+不凍海 < futoukai\ ;
+大真面目 < oomajime\ ;
+登山帽 < tozanbou\ ;
+銭金 < zenikane\ ;
+煎豆腐 < iridoufu\ ;
+券売機 < kenbaiki\ ;
+時間外 < jikangai\ ;
+拝察 < haisatsu\ ;
+気候帯 < kikoutai\ ;
+楽器店 < gakkiten\ ;
+承服 < shoufuku\ ;
+検非違使 < kebiishi\ ;
+截然 < setsuzen\ ;
+龍舟 < ryuushuu\ ;
+本金庫 < honkinko\ ;
+雄弁家 < yuubenka\ ;
+付帯犯 < futaihan\ ;
+西洋碁 < seiyougo\ ;
+戦争後 < sensougo\ ;
+敏腕家 < binwanka\ ;
+中以上 < chuuijou\ ;
+高下駄 < takageta\ ;
+非売品 < hibaihin\ ;
+混色 < konshoku\ ;
+何代目 < nandaime\ ;
+高架線 < koukasen\ ;
+水面下 < suimenka\ ;
+精油所 < seiyusho\ ;
+東西屋 < touzaiya\ ;
+溢流 < itsuryuu\ ;
+銅版画 < douhanga\ ;
+投技 < nagewaza\ ;
+炊飯器 < suihanki\ ;
+我物 < wagamono\ ;
+元帥府 < gensuifu\ ;
+鼻許 < hanamoto\ ;
+鳥之巣 < torinosu\ ;
+医療車 < iryousha\ ;
+特異性 < tokuisei\ ;
+溝泥 < dobudoro\ ;
+禄高 < rokudaka\ ;
+冬至線 < toujisen\ ;
+穿孔機 < senkouki\ ;
+無蓋車 < mugaisha\ ;
+溝水 < dobumizu\ ;
+空籤 < karakuji\ ;
+抵抗器 < teikouki\ ;
+蒸気船 < joukisen\ ;
+非許容 < hikyoyou\ ;
+遠近法 < enkinhou\ ;
+鉄骨 < tekkotsu\ ;
+湯煙 < yukemuri\ ;
+淡色 < tanshoku\ ;
+仮定法 < kateihou\ ;
+西洋画 < seiyouga\ ;
+私鉄 < shitetsu\ ;
+達磨忌 < darumaki\ ;
+秒速 < byousoku\ ;
+空箱 < karabako\ ;
+突立 < tottatsu\ ;
+畳成語 < jouseigo\ ;
+怪事件 < kaijiken\ ;
+所持者 < shojisha\ ;
+擬人法 < gijinhou\ ;
+唐草 < karakusa\ ;
+準大手 < jun''oote\ ;
+回転機 < kaitenki\ ;
+蟻塚 < aridzuka\ ;
+潮先 < shiosaki\ ;
+虚説 < kyosetsu\ ;
+血便 < ketsuben\ ;
+戦没 < senbotsu\ ;
+可哀相 < kawaisou\ ;
+指先 < yubisaki\ ;
+錦絵 < nishikie\ ;
+交際家 < kousaika\ ;
+離乳期 < rinyuuki\ ;
+磁性層 < jiseisou\ ;
+越冬隊 < ettoutai\ ;
+御無沙汰 < gobusata\ ;
+手枕 < temakura\ ;
+右顧左眄 < ukosaben\ ;
+譜面台 < fumendai\ ;
+秀逸 < shuuitsu\ ;
+仮小屋 < karigoya\ ;
+目論見 < mokuromi\ ;
+竹槍 < takeyari\ ;
+演算子 < enzanshi\ ;
+黒鉄 < kurogane\ ;
+有限個 < yuugenko\ ;
+戸障子 < toshouji\ ;
+可鍛性 < katansei\ ;
+太鼓判 < taikoban\ ;
+海坊主 < umibouzu\ ;
+等式 < toushiki\ ;
+藩閥 < hanbatsu\ ;
+流量 < ryuuryou\ ;
+黍魚子 < kibinago\ ;
+突発 < toppatsu\ ;
+鉤針 < kagibari\ ;
+投宿 < toushuku\ ;
+営林署 < eirinsho\ ;
+竹林 < chikurin\ ;
+固有値 < koyuuchi\ ;
+啓発 < keihatsu\ ;
+竹材 < chikuzai\ ;
+遺伝学 < idengaku\ ;
+育種所 < ikushujo\ ;
+空発 < kuuhatsu\ ;
+払拭 < fusshoku\ ;
+金鍍金 < kinmekki\ ;
+神風 < kamikaze\ ;
+流速 < ryuusoku\ ;
+流通 < ryuutsuu\ ;
+滝川 < takigawa\ ;
+参事官 < sanjikan\ ;
+相談所 < soudanjo\ ;
+無税品 < muzeihin\ ;
+穀粒 < kokuryuu\ ;
+端末 < tanmatsu\ ;
+唐紙 < karakami\ ;
+応答能 < outounou\ ;
+検問所 < kenmonjo\ ;
+岡場所 < okabasho\ ;
+地蔵尊 < jizouson\ ;
+空世辞 < karaseji\ ;
+表具屋 < hyouguya\ ;
+弔慰金 < chouikin\ ;
+初産婦 < shosanpu\ ;
+蛸焼 < takoyaki\ ;
+祝電 < shukuden\ ;
+恐龍 < kyouryuu\ ;
+暗記物 < ankimono\ ;
+麻酔剤 < masuizai\ ;
+藪医者 < yabuisha\ ;
+品薄 < shinausu\ ;
+拝借 < haishaku\ ;
+何時頃 < itsugoro\ ;
+種紙 < tanegami\ ;
+温熱 < on''netsu\ ;
+鉄鉢 < teppachi\ ;
+満月 < mangetsu\ ;
+鍋物 < nabemono\ ;
+二義的 < nigiteki\ ;
+雁皮紙 < ganpishi\ ;
+日和見 < hiyorimi\ ;
+波風 < namikaze\ ;
+社会部 < shakaibu\ ;
+鑑別 < kanbetsu\ ;
+黒豹 < kurohyou\ ;
+房房 < fusafusa\ ;
+黒豆 < kuromame\ ;
+別世界 < bessekai\ ;
+無名氏 < mumeishi\ ;
+雇傭者 < koyousha\ ;
+唐突 < toutotsu\ ;
+絢緞子 < ayadonsu\ ;
+渦状文 < kajoumon\ ;
+黙諾 < mokudaku\ ;
+自動車 < jidousha\ ;
+除草剤 < josouzai\ ;
+野鼠 < nonezumi\ ;
+不公正 < fukousei\ ;
+闘技場 < tougijou\ ;
+喬木 < kyouboku\ ;
+黙読 < mokudoku\ ;
+恥骨 < chikotsu\ ;
+主記憶 < shukioku\ ;
+手心 < tegokoro\ ;
+突然 < totsuzen\ ;
+鼻下長 < bikachou\ ;
+最大化 < saidaika\ ;
+押切 < oshikiri\ ;
+防炎剤 < bouenzai\ ;
+抑圧 < yokuatsu\ ;
+慶祝 < keishuku\ ;
+筆太 < fudebuto\ ;
+鉄道 < tetsudou\ ;
+何時間 < nanjikan\ ;
+系統樹 < keitouju\ ;
+御自身 < gojishin\ ;
+上菓子 < jougashi\ ;
+虚脱 < kyodatsu\ ;
+河鱒 < kawamasu\ ;
+被減数 < higensuu\ ;
+星条旗 < seijouki\ ;
+銭苔 < zenigoke\ ;
+立札 < tatefuda\ ;
+噛傷 < kamikizu\ ;
+野鶲 < nobitaki\ ;
+疎水性 < sosuisei\ ;
+自治権 < jichiken\ ;
+逮捕者 < taihosha\ ;
+演出 < enshutsu\ ;
+鼻紙 < hanagami\ ;
+温温 < nukunuku\ ;
+二頭筋 < nitoukin\ ;
+鼻糞 < hanakuso\ ;
+素浪人 < surounin\ ;
+秋場所 < akibasho\ ;
+船火事 < funakaji\ ;
+育種家 < ikushuka\ ;
+悪逆 < akugyaku\ ;
+正課外 < seikagai\ ;
+煉瓦塀 < rengabei\ ;
+悪辣 < akuratsu\ ;
+英文法 < eibunpou\ ;
+未決定 < mikettei\ ;
+黒表 < kokuhyou\ ;
+健康美 < kenkoubi\ ;
+両議院 < ryougiin\ ;
+愛唱歌 < aishouka\ ;
+二本棒 < nihonbou\ ;
+鼻筋 < hanasuji\ ;
+沈黙 < chinmoku\ ;
+青物屋 < aomonoya\ ;
+金髪 < kinpatsu\ ;
+仮定形 < kateikei\ ;
+鉈豆 < natamame\ ;
+磯鷸 < isoshigi\ ;
+溝川 < dobugawa\ ;
+自動詞 < jidoushi\ ;
+便宜上 < bengijou\ ;
+田舎風 < inakafuu\ ;
+鍵束 < kagitaba\ ;
+神速 < shinsoku\ ;
+朝御飯 < asagohan\ ;
+黒蛇 < kurohebi\ ;
+指揮権 < shikiken\ ;
+設計図 < sekkeizu\ ;
+満悦 < man''etsu\ ;
+我我 < wareware\ ;
+部外者 < bugaisha\ ;
+清潔 < seiketsu\ ;
+葬儀場 < sougijou\ ;
+磁性体 < jiseitai\ ;
+銀本位 < ginhon''i\ ;
+筆名 < hitsumei\ ;
+政党員 < seitouin\ ;
+対応値 < taiouchi\ ;
+軍艦旗 < gunkanki\ ;
+二乗根 < nijoukon\ ;
+種畜 < shuchiku\ ;
+指揮棒 < shikibou\ ;
+母国語 < bokokugo\ ;
+画用紙 < gayoushi\ ;
+銅色 < doushoku\ ;
+検温器 < ken''onki\ ;
+反骨 < hankotsu\ ;
+商況 < shoukyou\ ;
+駆潜艇 < kusentei\ ;
+堕胎罪 < dataizai\ ;
+湿度 < shitsudo\ ;
+磁気学 < jikigaku\ ;
+蟄伏 < chippuku\ ;
+浅葱 < asatsuki\ ;
+懐炉灰 < kairobai\ ;
+要注意 < youchuui\ ;
+初生児 < shoseiji\ ;
+戒律 < kairitsu\ ;
+不鮮明 < fusenmei\ ;
+竺学 < jikugaku\ ;
+天鵞絨 < biroudou\ ;
+吹貫 < fukinuki\ ;
+笹原 < sasahara\ ;
+窓枠 < madowaku\ ;
+唐物 < toumotsu\ ;
+製糖所 < seitoujo\ ;
+端局 < tankyoku\ ;
+択一 < takuitsu\ ;
+先駆者 < senkusha\ ;
+助成金 < joseikin\ ;
+渡来人 < toraijin\ ;
+筆先 < fudesaki\ ;
+速記者 < sokkisha\ ;
+銭箱 < zenibako\ ;
+錨泊 < byouhaku\ ;
+艦載機 < kansaiki\ ;
+混浴 < kon''yoku\ ;
+深深 < fukabuka\ ;
+藪蛇 < yabuhebi\ ;
+製粉機 < seifunki\ ;
+乱層雲 < ransouun\ ;
+参事会 < sanjikai\ ;
+種物 < tanemono\ ;
+種牛 < taneushi\ ;
+蛇毒 < hebidoku\ ;
+戌年 < inudoshi\ ;
+違法行為 < ihoukoui\ ;
+排気弁 < haikiben\ ;
+滑剤 < katsuzai\ ;
+黒船 < kurofune\ ;
+正統派 < seitouha\ ;
+銀翼 < gin''yoku\ ;
+泥足 < doroashi\ ;
+補佐役 < hosayaku\ ;
+鎌形 < kamagata\ ;
+未配当 < mihaitou\ ;
+滅却 < mekkyaku\ ;
+是非共 < zehitomo\ ;
+釣銭 < tsurisen\ ;
+未刊行 < mikankou\ ;
+枢機卿 < suukikei\ ;
+未遂罪 < misuizai\ ;
+文化財 < bunkazai\ ;
+武装船 < busousen\ ;
+記者団 < kishadan\ ;
+商業 < shougyou\ ;
+御用邸 < goyoutei\ ;
+御先棒 < osakibou\ ;
+鉱脈 < koumyaku\ ;
+蚊燻 < kaibushi\ ;
+吃逆 < shakkuri\ ;
+麹菌 < koujikin\ ;
+定比例 < teihirei\ ;
+命脈 < meimyaku\ ;
+富士川 < fujikawa\ ;
+黒肉 < kuroniku\ ;
+麦藁 < mugiwara\ ;
+産卵期 < sanranki\ ;
+竹垣 < takegaki\ ;
+分相機 < bunsouki\ ;
+鍛接 < tansetsu\ ;
+針金 < harigane\ ;
+会意文字 < kaiimoji\ ;
+銀縁 < ginbuchi\ ;
+上層雲 < jousouun\ ;
+金錆 < kanasabi\ ;
+税率 < zeiritsu\ ;
+立山 < tateyama\ ;
+三次元 < sanjigen\ ;
+群馬県 < gunmaken\ ;
+麦蒔 < mugimaki\ ;
+古金 < furugane\ ;
+啄木 < takuboku\ ;
+口重 < kuchiomo\ ;
+兵站部 < heitanbu\ ;
+不公平 < fukouhei\ ;
+渇望 < katsubou\ ;
+才力 < sairyoku\ ;
+古酒 < furuzake\ ;
+前鼻緒 < maehanao\ ;
+不凍剤 < futouzai\ ;
+鼻熊 < hanaguma\ ;
+錫杖 < shakujou\ ;
+空撮 < kuusatsu\ ;
+黙約 < mokuyaku\ ;
+物真似 < monomane\ ;
+遊歩道 < yuuhodou\ ;
+社説 < shasetsu\ ;
+浅緑 < senryoku\ ;
+手刀 < tegatana\ ;
+合縁奇縁 < aienkien\ ;
+無制限 < museigen\ ;
+積極 < sekkyoku\ ;
+打傷 < uchikizu\ ;
+鉄色 < tetsuiro\ ;
+体育家 < taiikuka\ ;
+分岐駅 < bunkieki\ ;
+福耳 < fukumimi\ ;
+滅亡 < metsubou\ ;
+医療用 < iryouyou\ ;
+慄然 < ritsuzen\ ;
+同説 < dousetsu\ ;
+窒息 < chissoku\ ;
+右足 < migiashi\ ;
+逮捕状 < taihojou\ ;
+沖釣 < okidzuri\ ;
+過去帳 < kakochou\ ;
+黒米 < kurogome\ ;
+機動性 < kidousei\ ;
+鉄腕 < tetsuwan\ ;
+叛逆 < hangyaku\ ;
+熱風炉 < neppuuro\ ;
+歩行者 < hokousha\ ;
+點穴 < tenketsu\ ;
+水鳥 < mizudori\ ;
+満喫 < mankitsu\ ;
+円錐形 < ensuikei\ ;
+我国 < wagakuni\ ;
+守銭奴 < shusendo\ ;
+道化師 < doukeshi\ ;
+悪舌 < akuzetsu\ ;
+虎猫 < toraneko\ ;
+下腹部 < kafukubu\ ;
+反政府 < hanseifu\ ;
+回転儀 < kaitengi\ ;
+上草履 < uwazouri\ ;
+米上院 < beijouin\ ;
+洒脱 < shadatsu\ ;
+麻綱 < asadzuna\ ;
+黐竿 < mochizao\ ;
+朝稽古 < asageiko\ ;
+含蓄 < ganchiku\ ;
+製粉所 < seifunjo\ ;
+被治者 < hichisha\ ;
+参酌 < sanshaku\ ;
+宮田家 < miyatake\ ;
+近衛兵 < konoehei\ ;
+岩手県 < iwateken\ ;
+連隊旗 < rentaiki\ ;
+管楽器 < kangakki\ ;
+謝恩会 < shaonkai\ ;
+養蜂家 < youhouka\ ;
+五線紙 < gosenshi\ ;
+各行 < kakugyou\ ;
+鍋底 < nabezoko\ ;
+平生着 < heizeigi\ ;
+機帆船 < kihansen\ ;
+悪者 < warumono\ ;
+鼻水 < hanamizu\ ;
+非排水 < hihaisui\ ;
+着番号 < kibangou\ ;
+不倫罪 < furinzai\ ;
+飴細工 < amezaiku\ ;
+偽似症 < gijishou\ ;
+大広間 < oohiroma\ ;
+避難者 < hinansha\ ;
+定常波 < teijouha\ ;
+付属語 < fuzokugo\ ;
+悶絶 < monzetsu\ ;
+年会費 < nenkaihi\ ;
+故買者 < kobaisha\ ;
+五大洋 < godaiyou\ ;
+立命 < ritsumei\ ;
+珪藻土 < keisoudo\ ;
+厳達 < gentatsu\ ;
+人名簿 < jinmeibo\ ;
+排気口 < haikikou\ ;
+避妊法 < hininhou\ ;
+特価品 < tokkahin\ ;
+重説 < juusetsu\ ;
+揚抗比 < youkouhi\ ;
+鍋尻 < nabejiri\ ;
+辞書類 < jishorui\ ;
+大往生 < daioujou\ ;
+追起訴 < tsuikiso\ ;
+氷震 < hyoushin\ ;
+過半数 < kahansuu\ ;
+鉄筆 < teppitsu\ ;
+安息日 < ansokubi\ ;
+再浮上 < saifujou\ ;
+活眼 < katsugan\ ;
+図書券 < toshoken\ ;
+発起人 < hokkinin\ ;
+洞窟 < doukutsu\ ;
+道具論 < douguron\ ;
+分相応 < bunsouou\ ;
+我儘 < wagamama\ ;
+立候補 < rikkouho\ ;
+避暑地 < hishochi\ ;
+水際 < mizugiwa\ ;
+接骨木 < niwatoko\ ;
+社会科 < shakaika\ ;
+重複 < choufuku\ ;
+活発 < kappatsu\ ;
+上機嫌 < joukigen\ ;
+交換所 < koukanjo\ ;
+喜歌劇 < kikageki\ ;
+添加剤 < tenkazai\ ;
+未復員 < mifukuin\ ;
+消沈 < shouchin\ ;
+謙遜語 < kensongo\ ;
+未処置 < mishochi\ ;
+悪筆 < akuhitsu\ ;
+地形図 < chikeizu\ ;
+未知数 < michisuu\ ;
+硬骨 < koukotsu\ ;
+八潮路 < yashioji\ ;
+沢蠏 < sawagani\ ;
+代理者 < dairisha\ ;
+憫察 < binsatsu\ ;
+麗筆 < reihitsu\ ;
+藁紙 < waragami\ ;
+軍令部 < gunreibu\ ;
+立像 < ritsuzou\ ;
+横文字 < yokomoji\ ;
+活用 < katsuyou\ ;
+消毒 < shoudoku\ ;
+太古代 < taikodai\ ;
+我人 < warehito\ ;
+鍋墨 < nabezumi\ ;
+黒猫 < kuroneko\ ;
+我事 < wagakoto\ ;
+幾何学 < kikagaku\ ;
+西洋化 < seiyouka\ ;
+刑余者 < keiyosha\ ;
+渡世人 < toseinin\ ;
+同胞 < harakara\ ;
+羅針儀 < rashingi\ ;
+子音群 < shiingun\ ;
+暗証化 < anshouka\ ;
+滑走路 < kassouro\ ;
+製図板 < seizuban\ ;
+皇統譜 < koutoufu\ ;
+理学部 < rigakubu\ ;
+空夢 < sorayume\ ;
+泥縄 < doronawa\ ;
+英語塾 < eigojuku\ ;
+酋長 < shuuchou\ ;
+悲喜劇 < hikigeki\ ;
+保管林 < hokanrin\ ;
+半靴 < hangutsu\ ;
+悶着 < monchaku\ ;
+再武装 < saibusou\ ;
+黒熊 < kuroguma\ ;
+蒲魚 < kamatoto\ ;
+喉元 < nodomoto\ ;
+空堀 < karabori\ ;
+赤蜻蛉 < akatonbo\ ;
+薄膜 < hakumaku\ ;
+窯元 < kamamoto\ ;
+減圧 < gen''atsu\ ;
+無辺際 < muhenzai\ ;
+不自然 < fushizen\ ;
+腎不全 < jinfuzen\ ;
+稚拙 < chisetsu\ ;
+祐筆 < yuuhitsu\ ;
+宴会場 < enkaijou\ ;
+古草 < furukusa\ ;
+不信者 < fushinja\ ;
+口荒 < kuchiara\ ;
+単本位 < tanhon''i\ ;
+円錐台 < ensuidai\ ;
+祝祭 < shukusai\ ;
+因果者 < ingamono\ ;
+不信義 < fushingi\ ;
+半長 < han''naga\ ;
+鉄瓶 < tetsubin\ ;
+水部 < mizunobu\ ;
+軍事面 < gunjimen\ ;
+恒河沙 < gougasha\ ;
+悪癖 < waruguse\ ;
+黒潮 < kuroshio\ ;
+蓄電 < chikuden\ ;
+母鳥 < hahadori\ ;
+自治体 < jichitai\ ;
+着尺地 < kijakuji\ ;
+後半期 < kouhanki\ ;
+口舌 < kouzetsu\ ;
+祝砲 < shukuhou\ ;
+毛髪 < mouhatsu\ ;
+自治会 < jichikai\ ;
+価値観 < kachikan\ ;
+西遊記 < seiyuuki\ ;
+監査委員 < kansaiin\ ;
+礼節 < reisetsu\ ;
+年代記 < nendaiki\ ;
+感情家 < kanjouka\ ;
+文化祭 < bunkasai\ ;
+及落 < kyuuraku\ ;
+銃殺 < juusatsu\ ;
+変換器 < henkanki\ ;
+情熱 < jounetsu\ ;
+世界史 < sekaishi\ ;
+受精卵 < juseiran\ ;
+金脈 < kinmyaku\ ;
+只者 < tadamono\ ;
+懇切 < konsetsu\ ;
+禁物 < kinmotsu\ ;
+年甲斐 < toshigai\ ;
+虐政 < gyakusei\ ;
+名筆 < meihitsu\ ;
+確証 < kakushou\ ;
+同筆 < douhitsu\ ;
+配達 < haitatsu\ ;
+泥仕合 < dorojiai\ ;
+清子音 < seishiin\ ;
+二期作 < nikisaku\ ;
+鋸屑 < nokokuzu\ ;
+横紋筋 < oumonkin\ ;
+淀川 < yodogawa\ ;
+運動界 < undoukai\ ;
+惑溺 < wakudeki\ ;
+未発見 < mihakken\ ;
+浅沓 < asagutsu\ ;
+同穴 < douketsu\ ;
+偶像化 < guuzouka\ ;
+補聴器 < hochouki\ ;
+英語劇 < eigogeki\ ;
+釣糸 < tsuriito\ ;
+電算機 < densanki\ ;
+洗熊 < araiguma\ ;
+再吟味 < saiginmi\ ;
+重罰 < juubatsu\ ;
+円錐体 < ensuitai\ ;
+流氷 < ryuuhyou\ ;
+注目 < chuumoku\ ;
+青天井 < aotenjou\ ;
+双脚 < soukyaku\ ;
+浪曲 < roukyoku\ ;
+非戦論 < hisenron\ ;
+未発行 < mihakkou\ ;
+相場師 < soubashi\ ;
+古戦場 < kosenjou\ ;
+三畳紀 < sanjouki\ ;
+好意的 < kouiteki\ ;
+御馳走 < gochisou\ ;
+金縁 < kinbuchi\ ;
+半道 < hanmichi\ ;
+北陸 < hokuriku\ ;
+扶養者 < fuyousha\ ;
+十字軍 < juujigun\ ;
+按手礼 < anshurei\ ;
+同位角 < douikaku\ ;
+原薬 < gen''yaku\ ;
+即諾 < sokudaku\ ;
+活殺 < kassatsu\ ;
+周流 < shuuryuu\ ;
+輪転機 < rintenki\ ;
+稲妻 < inadzuma\ ;
+厭人者 < enjinsha\ ;
+無配当 < muhaitou\ ;
+唐墨 < karasumi\ ;
+富裕税 < fuyuuzei\ ;
+異口同音 < ikudouon\ ;
+釣竿 < tsurizao\ ;
+過労死 < karoushi\ ;
+紅衛兵 < koueihei\ ;
+針箱 < haribako\ ;
+管理者 < kanrisha\ ;
+夜商人 < yoakindo\ ;
+舌下腺 < zekkasen\ ;
+所持品 < shojihin\ ;
+紀行文 < kikoubun\ ;
+火山灰 < kazanbai\ ;
+騎士道 < kishidou\ ;
+剰余金 < jouyokin\ ;
+卓越 < takuetsu\ ;
+豊水期 < housuiki\ ;
+低能児 < teinouji\ ;
+帰納法 < kinouhou\ ;
+獅子座 < shishiza\ ;
+交換器 < koukanki\ ;
+世界人 < sekaijin\ ;
+衛生隊 < eiseitai\ ;
+取組 < torikumi\ ;
+蒲鉾 < kamaboko\ ;
+海抜 < kaibatsu\ ;
+金箱 < kanebako\ ;
+理事長 < rijichou\ ;
+平屋根 < hirayane\ ;
+消息 < shousoku\ ;
+元老院 < genrouin\ ;
+棄権者 < kikensha\ ;
+世界中 < sekaijuu\ ;
+河口港 < kakoukou\ ;
+口笛 < kuchibue\ ;
+原茸 < haratake\ ;
+鴛鴦 < oshidori\ ;
+薬玉 < kusudama\ ;
+不体裁 < futeisai\ ;
+虐待 < gyakutai\ ;
+毒蜘蛛 < dokugumo\ ;
+単語篇 < tangohen\ ;
+黒枠 < kurowaku\ ;
+金穴 < kinketsu\ ;
+生徒数 < seitosuu\ ;
+黒服 < kurofuku\ ;
+羊皮紙 < youhishi\ ;
+勝馬 < kachiuma\ ;
+破鐘 < waregane\ ;
+必要 < hitsuyou\ ;
+混入 < kon''nyuu\ ;
+母系制 < bokeisei\ ;
+展示場 < tenjijou\ ;
+忍術 < ninjutsu\ ;
+厳罰 < genbatsu\ ;
+後遺症 < kouishou\ ;
+流木 < ryuuboku\ ;
+鈍物 < donbutsu\ ;
+引火温度 < inkaondo\ ;
+司直 < shichoku\ ;
+禁欲 < kin''yoku\ ;
+渇仰 < katsugou\ ;
+秩序 < chitsujo\ ;
+卒論 < sotsuron\ ;
+不定詞 < futeishi\ ;
+水蜜 < suimitsu\ ;
+加担者 < katansha\ ;
+石高 < kokudaka\ ;
+陽電気 < youdenki\ ;
+命日 < meinichi\ ;
+復讐 < fukushuu\ ;
+宣伝費 < sendenhi\ ;
+同率 < douritsu\ ;
+惜春 < sekishun\ ;
+劇映画 < gekieiga\ ;
+礼物 < reimotsu\ ;
+短髪 < tanpatsu\ ;
+虚実 < kyojitsu\ ;
+恋着 < renchaku\ ;
+阿古屋貝 < akoyagai\ ;
+遊蕩児 < yuutouji\ ;
+復調 < fukuchou\ ;
+金満家 < kinmanka\ ;
+錠前屋 < joumaeya\ ;
+知名度 < chimeido\ ;
+名物 < meibutsu\ ;
+北進 < hokushin\ ;
+出鱈目 < detarame\ ;
+黄昏 < tasogare\ ;
+懇話会 < konwakai\ ;
+避難民 < hinanmin\ ;
+史略 < shiryaku\ ;
+十字街 < juujigai\ ;
+主演者 < shuensha\ ;
+泥濘 < nukarumi\ ;
+藤棚 < fujidana\ ;
+世俗化 < sezokuka\ ;
+粗製品 < soseihin\ ;
+厳粛 < genshuku\ ;
+鉄棒 < tetsubou\ ;
+鳩麦 < hatomugi\ ;
+右心房 < ushinbou\ ;
+圧制者 < asseisha\ ;
+展示品 < tenjihin\ ;
+鉄梃 < kanateko\ ;
+落魄 < rakuhaku\ ;
+量的 < ryouteki\ ;
+忠良 < chuuryou\ ;
+書記官 < shokikan\ ;
+郷土愛 < kyoudoai\ ;
+貯蔵庫 < chozouko\ ;
+藩札 < hansatsu\ ;
+生真面目 < kimajime\ ;
+下馬評 < gebahyou\ ;
+不能者 < funousha\ ;
+勅願 < chokugan\ ;
+酒蔵 < sakagura\ ;
+勅題 < chokudai\ ;
+不良化 < furyouka\ ;
+薄荷糖 < hakkatou\ ;
+薄荷精 < hakkasei\ ;
+弱震 < jakushin\ ;
+比喩的 < hiyuteki\ ;
+禁札 < kinsatsu\ ;
+争議権 < sougiken\ ;
+重禁錮 < juukinko\ ;
+運動欄 < undouran\ ;
+種別 < shubetsu\ ;
+黒房 < kurobusa\ ;
+農繁期 < nouhanki\ ;
+悦楽 < etsuraku\ ;
+水草 < mizukusa\ ;
+愛子 < itoshigo\ ;
+鉄材 < tetsuzai\ ;
+弦音 < tsuruoto\ ;
+唐傘 < karakasa\ ;
+感受性 < kanjusei\ ;
+麦束 < mugitaba\ ;
+兵器工 < heikikou\ ;
+倪雲林 < geiunrin\ ;
+水茎 < mizuguki\ ;
+運送船 < unsousen\ ;
+憂事 < ureigoto\ ;
+短靴 < tangutsu\ ;
+水苔 < mizugoke\ ;
+遊冶郎 < yuuyarou\ ;
+画仙紙 < gasenshi\ ;
+洋梨 < younashi\ ;
+多段階 < tadankai\ ;
+試験機 < shikenki\ ;
+一般論 < ippanron\ ;
+加算税 < kasanzei\ ;
+残雪 < zansetsu\ ;
+厚紙 < atsugami\ ;
+浴客 < yokkyaku\ ;
+分岐線 < bunkisen\ ;
+喇叭手 < rappashu\ ;
+水船 < mizubune\ ;
+泥沼 < doronuma\ ;
+反発 < hanpatsu\ ;
+神様 < kamisama\ ;
+磨石 < togiishi\ ;
+弁髪 < benpatsu\ ;
+泥水 < doromizu\ ;
+泡沫 < houmatsu\ ;
+免罪符 < menzaifu\ ;
+犬黄楊 < inutsuge\ ;
+神業 < kamiwaza\ ;
+水腹 < mizubara\ ;
+参着 < sanchaku\ ;
+厭世観 < enseikan\ ;
+確約 < kakuyaku\ ;
+水脈 < suimyaku\ ;
+半世紀 < hanseiki\ ;
+酵母菌 < koubokin\ ;
+神棚 < kamidana\ ;
+冷罨法 < reianpou\ ;
+古物 < furumono\ ;
+愛蔵版 < aizouban\ ;
+快絶 < kaizetsu\ ;
+御偉方 < oeragata\ ;
+記数法 < kisuuhou\ ;
+空下手 < karaheta\ ;
+金物 < kanamono\ ;
+神格 < shinkaku\ ;
+禿山 < hageyama\ ;
+十薬 < dokudami\ ;
+不健康 < fukenkou\ ;
+沈痛 < chintsuu\ ;
+急病 < kyuubyou\ ;
+探検家 < tankenka\ ;
+石鏃 < sekizoku\ ;
+大気圏 < taikiken\ ;
+獅子吼 < shishiku\ ;
+税別 < zeibetsu\ ;
+代理権 < dairiken\ ;
+物件費 < bukkenhi\ ;
+黒幕 < kuromaku\ ;
+祝杯 < shukuhai\ ;
+悪擦 < waruzure\ ;
+正規兵 < seikihei\ ;
+再配布 < saihaifu\ ;
+鼻先 < hanasaki\ ;
+神月 < koudzuki\ ;
+民草 < tamigusa\ ;
+四畳半 < yojouhan\ ;
+活弁 < katsuben\ ;
+展示会 < tenjikai\ ;
+大都市 < daitoshi\ ;
+和室 < washitsu\ ;
+先学期 < sengakki\ ;
+悪洒落 < warujare\ ;
+釈然 < shakuzen\ ;
+自民党 < jimintou\ ;
+医療品 < iryouhin\ ;
+内沙汰 < uchizata\ ;
+哲人 < tetsujin\ ;
+福徳 < fukutoku\ ;
+黒山 < kuroyama\ ;
+勿論 < mochiron\ ;
+分光器 < bunkouki\ ;
+怪物 < kaibutsu\ ;
+親不孝 < oyafukou\ ;
+福引 < fukubiki\ ;
+卒者 < sotsusha\ ;
+縁起物 < engimono\ ;
+流星雨 < ryuuseiu\ ;
+原発 < genpatsu\ ;
+割高 < waridaka\ ;
+著述 < chojutsu\ ;
+年貢米 < nengumai\ ;
+厚皮 < atsukawa\ ;
+洗浄器 < senjouki\ ;
+毛虱 < kejirami\ ;
+循環器 < junkanki\ ;
+酒糟 < sakekasu\ ;
+無理矢理 < muriyari\ ;
+健康児 < kenkouji\ ;
+税理士 < zeirishi\ ;
+引金 < hikigane\ ;
+古河 < furukawa\ ;
+人情味 < ninjoumi\ ;
+等語線 < tougosen\ ;
+毒蛇 < dokuhebi\ ;
+十字線 < juujisen\ ;
+不使用 < fushiyou\ ;
+一生面 < isseimen\ ;
+旅行記 < ryokouki\ ;
+鉄床 < kanatoko\ ;
+個体群 < kotaigun\ ;
+名曲 < meikyoku\ ;
+口蓋音 < kougaion\ ;
+同月 < dougetsu\ ;
+圧延機 < atsuenki\ ;
+和声法 < waseihou\ ;
+占算 < urayasan\ ;
+高頻度 < kouhindo\ ;
+小豆色 < azukiiro\ ;
+毒薬 < dokuyaku\ ;
+厳美渓 < genbikei\ ;
+決然 < ketsuzen\ ;
+示威運動 < jiiundou\ ;
+火山弾 < kazandan\ ;
+半諧音 < hankaion\ ;
+情実 < joujitsu\ ;
+秋口 < akiguchi\ ;
+取決 < torikime\ ;
+同日 < doujitsu\ ;
+祭式 < saishiki\ ;
+虐使 < gyakushi\ ;
+沐浴 < mokuyoku\ ;
+鉄山 < tetsuzan\ ;
+求法者 < guhousha\ ;
+火山帯 < kazantai\ ;
+洞察 < dousatsu\ ;
+下駄箱 < getabako\ ;
+道順 < michijun\ ;
+神徳 < shintoku\ ;
+芝海老 < shibaebi\ ;
+大分県 < ooitaken\ ;
+復籍 < fukuseki\ ;
+山羊髭 < yagihige\ ;
+瀬戸際 < setogiwa\ ;
+毒茸 < dokutake\ ;
+延金 < nobegane\ ;
+碌碌 < rokuroku\ ;
+銭亀 < zenigame\ ;
+火山島 < kazantou\ ;
+一夫一婦 < ippuippu\ ;
+歯車 < haguruma\ ;
+不審火 < fushinbi\ ;
+奉仕女 < houshime\ ;
+火山岩 < kazangan\ ;
+引越 < hikkoshi\ ;
+剃髪 < teihatsu\ ;
+忽然 < kotsuzen\ ;
+玉砂利 < tamajari\ ;
+一分半 < ippunhan\ ;
+古株 < furukabu\ ;
+花鳥画 < kachouga\ ;
+無菌法 < mukinhou\ ;
+悄悄 < sugosugo\ ;
+無免許 < mumenkyo\ ;
+待避線 < taihisen\ ;
+硬筆 < kouhitsu\ ;
+年賀状 < nengajou\ ;
+古参者 < kosansha\ ;
+必着 < hitchaku\ ;
+五分五分 < gobugobu\ ;
+古服 < furufuku\ ;
+分岐点 < bunkiten\ ;
+侍従官 < jijuukan\ ;
+内野手 < naiyashu\ ;
+油送管 < yusoukan\ ;
+水瓶 < mizugame\ ;
+誘蛾灯 < yuugatou\ ;
+心的 < shinteki\ ;
+計理士 < keirishi\ ;
+雑貨店 < zakkaten\ ;
+座右銘 < zayuumei\ ;
+吾子 < wagimoko\ ;
+子音性 < shiinsei\ ;
+気短 < kimijika\ ;
+得策 < tokusaku\ ;
+勅裁 < chokusai\ ;
+期待感 < kitaikan\ ;
+適量 < tekiryou\ ;
+心痛 < shintsuu\ ;
+運動家 < undousha\ ;
+金星 < kinboshi\ ;
+愚連隊 < gurentai\ ;
+原子雲 < genshiun\ ;
+代理店 < dairiten\ ;
+弾薬 < dan''yaku\ ;
+水玉 < mizutama\ ;
+禁圧 < kin''atsu\ ;
+徳目 < tokumoku\ ;
+諸器械 < shokikai\ ;
+里方 < satokata\ ;
+法律 < houritsu\ ;
+釈明 < shakumei\ ;
+操舵手 < soudashu\ ;
+出歯亀 < debakame\ ;
+不健全 < fukenzen\ ;
+活動 < katsudou\ ;
+黒円 < kuromaru\ ;
+相補性 < souhosei\ ;
+水物 < mizumono\ ;
+得票 < tokuhyou\ ;
+初期値 < shokichi\ ;
+派出 < hashutsu\ ;
+釈放 < shakuhou\ ;
+接頭辞 < settouji\ ;
+生徒会 < seitokai\ ;
+流入 < ryuunyuu\ ;
+残虐 < zangyaku\ ;
+薬屋 < kusuriya\ ;
+薬局 < yakkyoku\ ;
+硬直 < kouchoku\ ;
+合式 < goushiki\ ;
+神妙 < shinmyou\ ;
+遠道 < toomichi\ ;
+預言者 < yogensha\ ;
+当職 < toushoku\ ;
+底革 < sokogawa\ ;
+薬学 < yakugaku\ ;
+福助 < fukusuke\ ;
+開催日 < kaisaibi\ ;
+胴間声 < doumagoe\ ;
+背番号 < sebangou\ ;
+浮浪者 < furousha\ ;
+会員券 < kaiinken\ ;
+会員制 < kaiinsei\ ;
+毛筆 < mouhitsu\ ;
+英米法 < eibeihou\ ;
+去月 < kyogetsu\ ;
+着駅 < chakueki\ ;
+合理論 < gouriron\ ;
+大部分 < daibubun\ ;
+恐悦 < kyouetsu\ ;
+蔭様 < kagesama\ ;
+神域 < shin''iki\ ;
+千生 < sen''nari\ ;
+薄弱 < hakujaku\ ;
+五角形 < gokakkei\ ;
+中規模 < chuukibo\ ;
+必然 < hitsuzen\ ;
+大都会 < daitokai\ ;
+護送車 < gosousha\ ;
+重手代 < omotedai\ ;
+同局 < doukyoku\ ;
+蒸着 < jouchaku\ ;
+広報部 < kouhoubu\ ;
+半玉 < hangyoku\ ;
+逆風 < gyakufuu\ ;
+分骨 < bunkotsu\ ;
+後鳥羽院 < gotobain\ ;
+幼顔 < osanagao\ ;
+同宿 < doushuku\ ;
+名実 < meijitsu\ ;
+止血 < shiketsu\ ;
+動脈 < doumyaku\ ;
+着順 < chakujun\ ;
+蒸発 < jouhatsu\ ;
+逆順 < gyakujun\ ;
+合宿 < gasshuku\ ;
+劇評 < gekihyou\ ;
+酸欠 < sanketsu\ ;
+後発 < kouhatsu\ ;
+三杯酢 < sanbaizu\ ;
+節炭器 < settanki\ ;
+鉄分 < tetsubun\ ;
+希望者 < kibousha\ ;
+外科学 < gekagaku\ ;
+刑事犯 < keijihan\ ;
+配線図 < haisenzu\ ;
+機械論 < kikairon\ ;
+着電 < chakuden\ ;
+川秋沙 < kawaaisa\ ;
+友成 < tomonari\ ;
+文化圏 < bunkaken\ ;
+接頭語 < settougo\ ;
+水洟 < mizubana\ ;
+事故歴 < jikoreki\ ;
+前述 < zenjutsu\ ;
+割譲 < katsujou\ ;
+山小屋 < yamagoya\ ;
+原曲 < genkyoku\ ;
+糸蜻蛉 < itotonbo\ ;
+十重二十重 < toehatae\ ;
+後産 < nochizan\ ;
+移転先 < itensaki\ ;
+落莫 < rakubaku\ ;
+適評 < tekihyou\ ;
+蓋物 < futamono\ ;
+出馬 < shutsuba\ ;
+水没 < suibotsu\ ;
+御物 < gyobutsu\ ;
+大勲位 < daikun''i\ ;
+当節 < tousetsu\ ;
+吸口 < suikuchi\ ;
+大目玉 < oomedama\ ;
+官公吏 < kankouri\ ;
+悋嗇 < rinshoku\ ;
+協議員 < kyougiin\ ;
+軍事犯 < gunjihan\ ;
+随行員 < zuikouin\ ;
+一辺倒 < ippentou\ ;
+針山 < hariyama\ ;
+取引 < torihiki\ ;
+没年 < botsunen\ ;
+史実 < shijitsu\ ;
+葉脈 < youmyaku\ ;
+台密 < taimitsu\ ;
+現代語 < gendaigo\ ;
+達識 < tasshiki\ ;
+麦作 < mugisaku\ ;
+不導性 < fudousei\ ;
+性悪 < shouwaru\ ;
+理容師 < riyoushi\ ;
+従物 < juubutsu\ ;
+乱高下 < rankouge\ ;
+役畜 < ekichiku\ ;
+凡骨 < bonkotsu\ ;
+金屑 < kanakuzu\ ;
+必殺 < hissatsu\ ;
+古寺 < furudera\ ;
+社交家 < shakouka\ ;
+洛中 < rakuchuu\ ;
+凸面 < totsumen\ ;
+文化史 < bunkashi\ ;
+吸入 < kyuunyuu\ ;
+不用品 < fuyouhin\ ;
+到達 < toutatsu\ ;
+口実 < koujitsu\ ;
+透明度 < toumeido\ ;
+不定法 < futeihou\ ;
+劇薬 < gekiyaku\ ;
+短縮 < tanshuku\ ;
+温排水 < onhaisui\ ;
+冷麦 < hiyamugi\ ;
+祝典 < shukuten\ ;
+出陳 < shutchin\ ;
+航空路 < koukuuro\ ;
+葛籠 < tsudzura\ ;
+資産家 < shisanka\ ;
+類似点 < ruijiten\ ;
+淡水湖 < tansuiko\ ;
+広報課 < kouhouka\ ;
+徳沢 < tokutaku\ ;
+釈尊 < shakuson\ ;
+平鍋 < hiranabe\ ;
+酒樽 < sakadaru\ ;
+弁舌 < benzetsu\ ;
+小人数 < koninzuu\ ;
+愛知県 < aichiken\ ;
+追録 < tsuiroku\ ;
+恋妻 < koidzuma\ ;
+復活 < fukkatsu\ ;
+人造藍 < jinzouai\ ;
+医学者 < igakusha\ ;
+悪感情 < akkanjou\ ;
+恫喝 < doukatsu\ ;
+未処分 < mishobun\ ;
+差配人 < sahainin\ ;
+低頻度 < teihindo\ ;
+作為犯 < sakuihan\ ;
+剣術 < kenjutsu\ ;
+厳律 < genritsu\ ;
+歯科用 < shikayou\ ;
+劫罰 < goubatsu\ ;
+彫琢 < choutaku\ ;
+化物 < bakemono\ ;
+薪割 < makiwari\ ;
+当直 < touchoku\ ;
+再処理 < saishori\ ;
+副虹 < fukuniji\ ;
+花茣蓙 < hanagoza\ ;
+北爆 < hokubaku\ ;
+玄武岩 < genbugan\ ;
+常食 < joushoku\ ;
+鰐鮫 < wanizame\ ;
+注入 < chuunyuu\ ;
+急峻 < kyuushun\ ;
+液状化 < ekijouka\ ;
+無利息 < murisoku\ ;
+陣羽織 < jinbaori\ ;
+鳩胸 < hatomune\ ;
+戦闘機 < sentouki\ ;
+有意的 < yuuiteki\ ;
+店賃 < tanachin\ ;
+問題児 < mondaiji\ ;
+心根 < kokorone\ ;
+冬鳥 < fuyudori\ ;
+協業 < kyougyou\ ;
+債務者 < saimusha\ ;
+凝集 < gyoushuu\ ;
+一騎討 < ikkiuchi\ ;
+補給路 < hokyuuro\ ;
+送達 < soutatsu\ ;
+彫物 < horimono\ ;
+底豆 < sokomame\ ;
+鳥肌 < torihada\ ;
+鳥肉 < toriniku\ ;
+母物 < hahamono\ ;
+形 < katachi\ ;
+轍 < wadachi\ ;
+巷 < chimata\ ;
+跣 < hadashi\ ;
+趣 < omomuki\ ;
+局 < tsubone\ ;
+寧 < mushiro\ ;
+獺 < kawauso\ ;
+狐 < kitsune\ ;
+嫂 < aniyome\ ;
+話 < hanashi\ ;
+燕 < tsubame\ ;
+滴 < shizuku\ ;
+湖 < mizuumi\ ;
+剣 < tsurugi\ ;
+凝 < shikori\ ;
+冠 < kanmuri\ ;
+椿 < tsubaki\ ;
+梟 < fukurou\ ;
+頂 < itadaki\ ;
+柱 < hashira\ ;
+俎 < manaita\ ;
+林 < hayashi\ ;
+侍 < samurai\ ;
+羊 < hitsuji\ ;
+東 < higashi\ ;
+昔 < mukashi\ ;
+経 < tateito\ ;
+錦 < nishiki\ ;
+私 < watashi\ ;
+祭 < matsuri\ ;
+社 < yashiro\ ;
+確 < tashika\ ;
+邸 < yashiki\ ;
+社共 < shakyou\ ;
+心材 < shinzai\ ;
+近間 < chikama\ ;
+去就 < kyoshuu\ ;
+前表 < zenpyou\ ;
+君側 < kunsoku\ ;
+追送 < tsuisou\ ;
+占有 < sen''yuu\ ;
+忌日 < kinichi\ ;
+占書 < urabumi\ ;
+帳面 < choumen\ ;
+直音 < chokuon\ ;
+功績 < kouseki\ ;
+民業 < mingyou\ ;
+薄命 < hakumei\ ;
+席順 < sekijun\ ;
+益鳥 < ekichou\ ;
+沖天 < chuuten\ ;
+下層土 < kasoudo\ ;
+応接 < ousetsu\ ;
+瞠若 < doujaku\ ;
+起動機 < kidouki\ ;
+後流 < kouryuu\ ;
+召喚 < shoukan\ ;
+引算 < hikizan\ ;
+帯革 < obikawa\ ;
+出金 < shukkin\ ;
+十字架 < juujika\ ;
+叫喚 < kyoukan\ ;
+吉凶 < kikkyou\ ;
+重圧 < juuatsu\ ;
+述部 < jutsubu\ ;
+鷲座 < washiza\ ;
+弓箭 < kyuusen\ ;
+分進 < bunshin\ ;
+菩薩 < bosatsu\ ;
+分速 < funsoku\ ;
+水撃 < suigeki\ ;
+沢地 < sawachi\ ;
+切迫 < seppaku\ ;
+南朝 < nanchou\ ;
+人工雨 < jinkouu\ ;
+念念 < nen''nen\ ;
+N響 < enukyou\ ;
+正続 < seizoku\ ;
+落第 < rakudai\ ;
+釣合 < tsuriai\ ;
+正絹 < shouken\ ;
+餓鬼道 < gakidou\ ;
+厳容 < gen''you\ ;
+進行 < shinkou\ ;
+吉兆 < kitchou\ ;
+不定期 < futeiki\ ;
+動的 < douteki\ ;
+同僚 < douryou\ ;
+正経 < seikyou\ ;
+北満 < hokuman\ ;
+半格 < hankaku\ ;
+通謀 < tsuubou\ ;
+模擬店 < mogiten\ ;
+召命 < shoumei\ ;
+通論 < tsuuron\ ;
+序説 < josetsu\ ;
+泥中 < deichuu\ ;
+底角 < teikaku\ ;
+割興 < warikou\ ;
+徳望 < tokubou\ ;
+急変 < kyuuhen\ ;
+口唇 < koushin\ ;
+鳥網 < toriami\ ;
+恭倹 < kyouken\ ;
+叫号 < kyougou\ ;
+古武道 < kobudou\ ;
+栄養素 < eiyouso\ ;
+刺衝 < shishou\ ;
+幽谷 < yuukoku\ ;
+鄙歌 < hinauta\ ;
+段物 < danmono\ ;
+同信 < doushin\ ;
+石盤 < sekiban\ ;
+死票 < shihyou\ ;
+割腹 < kappuku\ ;
+廐舎 < kyuusha\ ;
+通計 < tsuukei\ ;
+台北 < taihoku\ ;
+勤王 < kin''nou\ ;
+快復 < kaifuku\ ;
+民有 < min''yuu\ ;
+歴程 < rekitei\ ;
+破滅 < hametsu\ ;
+急増 < kyuuzou\ ;
+通解 < tsuukai\ ;
+判読 < handoku\ ;
+重唱 < juushou\ ;
+名作 < meisaku\ ;
+通観 < tsuukan\ ;
+弔祭 < chousai\ ;
+各停 < kakutei\ ;
+恩借 < onshaku\ ;
+史劇 < shigeki\ ;
+北洋 < hokuyou\ ;
+通覧 < tsuuran\ ;
+適者 < tekisha\ ;
+副腎 < fukujin\ ;
+社中 < shachuu\ ;
+追贈 < tsuizou\ ;
+急報 < kyuuhou\ ;
+師長 < shichou\ ;
+刀身 < toushin\ ;
+加筆 < kahitsu\ ;
+去声 < kyoshou\ ;
+名代 < myoudai\ ;
+匡正 < kyousei\ ;
+身勝手 < migatte\ ;
+合作 < gassaku\ ;
+無利子 < murishi\ ;
+従業 < juugyou\ ;
+半時 < hantoki\ ;
+落磐 < rakuban\ ;
+原審 < genshin\ ;
+毒液 < dokueki\ ;
+彼氏 < kareshi\ ;
+帝陵 < teiryou\ ;
+徳政 < tokusei\ ;
+民族 < minzoku\ ;
+遠耳 < toomimi\ ;
+瑠璃色 < ruriiro\ ;
+名主 < nanushi\ ;
+急坂 < kyuuhan\ ;
+初診 < shoshin\ ;
+広角 < koukaku\ ;
+吉事 < kitsuji\ ;
+氏族 < shizoku\ ;
+弔砲 < chouhou\ ;
+建策 < kensaku\ ;
+前葉 < zen''you\ ;
+通行 < tsuukou\ ;
+同一 < douitsu\ ;
+幾許 < ikubaku\ ;
+重厚 < choukou\ ;
+荷送 < niokuri\ ;
+復旧 < fukkyuu\ ;
+胃腸炎 < ichouen\ ;
+没収 < bosshuu\ ;
+廻章 < kaishou\ ;
+博捜 < hakusou\ ;
+知的 < chiteki\ ;
+各人 < kakujin\ ;
+残留 < zanryuu\ ;
+起動時 < kidouji\ ;
+幕軍 < bakugun\ ;
+建立 < konryuu\ ;
+沃地 < yokuchi\ ;
+遊興 < yuukyou\ ;
+復文 < fukubun\ ;
+合一 < gouitsu\ ;
+別表 < beppyou\ ;
+副署 < fukusho\ ;
+受取 < uketori\ ;
+心房 < shinbou\ ;
+古刹 < kosatsu\ ;
+労相 < roushou\ ;
+郭清 < kakusei\ ;
+出走 < shussou\ ;
+幻覚 < genkaku\ ;
+剛腹 < goufuku\ ;
+殺陣師 < tateshi\ ;
+類義語 < ruigigo\ ;
+歯石 < shiseki\ ;
+家計簿 < kakeibo\ ;
+恥丘 < chikyuu\ ;
+全麦 < zenbaku\ ;
+博打 < bakuchi\ ;
+追認 < tsuinin\ ;
+量刑 < ryoukei\ ;
+重刻 < juukoku\ ;
+確守 < kakushu\ ;
+登記簿 < toukibo\ ;
+追試 < tsuishi\ ;
+出資 < shusshi\ ;
+真贋 < shingan\ ;
+気持 < kimochi\ ;
+重母音 < juuboin\ ;
+平角 < heikaku\ ;
+正確 < seikaku\ ;
+追討 < tsuitou\ ;
+毬栗 < igaguri\ ;
+死病 < shibyou\ ;
+共鳴 < kyoumei\ ;
+反収 < tanshuu\ ;
+遅知恵 < osodjie\ ;
+忖度 < sontaku\ ;
+帯金 < obigane\ ;
+荘重 < souchou\ ;
+大過去 < daikako\ ;
+心情 < shinjou\ ;
+匹敵 < hitteki\ ;
+部活 < bukatsu\ ;
+野兎 < nousagi\ ;
+永年 < naganen\ ;
+加算器 < kasanki\ ;
+逆行 < gyakkou\ ;
+大相撲 < oozumou\ ;
+迅速 < jinsoku\ ;
+機能語 < kinougo\ ;
+後書 < atogaki\ ;
+前膊 < zenpaku\ ;
+金側 < kingawa\ ;
+心性 < shinsei\ ;
+述語 < jutsugo\ ;
+碧山 < hekizan\ ;
+沈吟 < chingin\ ;
+有気音 < yuukion\ ;
+前脳 < zen''nou\ ;
+年表 < nenpyou\ ;
+前脚 < maeashi\ ;
+歎称 < tanshou\ ;
+出講 < shukkou\ ;
+不条理 < fujouri\ ;
+刺草 < irakusa\ ;
+千振 < senburi\ ;
+心得 < kokoroe\ ;
+恒久 < koukyuu\ ;
+只今 < tadaima\ ;
+反則 < hansoku\ ;
+口供 < koukyou\ ;
+強火 < tsuyobi\ ;
+恋仲 < koinaka\ ;
+死球 < shikyuu\ ;
+助番 < sukeban\ ;
+後日 < gonichi\ ;
+配役 < haiyaku\ ;
+恋人 < koibito\ ;
+大道具 < oodougu\ ;
+定位置 < teiichi\ ;
+怪力 < kairiki\ ;
+征服 < seifuku\ ;
+母様 < kaasama\ ;
+真諦 < shintei\ ;
+弱点 < jakuten\ ;
+連荘 < renchan\ ;
+円顔 < marugao\ ;
+盲進 < moushin\ ;
+忠孝 < chuukou\ ;
+鳥瞰 < choukan\ ;
+幼虫 < youchuu\ ;
+落球 < rakkyuu\ ;
+巨額 < kyogaku\ ;
+割算 < warizan\ ;
+運送屋 < unsouya\ ;
+造営費 < zoueihi\ ;
+反共 < hankyou\ ;
+残照 < zanshou\ ;
+北東 < hokutou\ ;
+逸聞 < itsubun\ ;
+酒席 < shuseki\ ;
+石炭 < sekitan\ ;
+氷山 < hyouzan\ ;
+引率 < insotsu\ ;
+延着 < enchaku\ ;
+氷屋 < kooriya\ ;
+危局 < kikyoku\ ;
+蒙古語 < moukogo\ ;
+凸角 < tokkaku\ ;
+目送 < mokusou\ ;
+機械科 < kikaika\ ;
+直輸 < chokuyu\ ;
+砕氷 < saihyou\ ;
+真言 < shingon\ ;
+建白 < kenpaku\ ;
+武略 < buryaku\ ;
+性分 < shoubun\ ;
+冗長 < jouchou\ ;
+確報 < kakuhou\ ;
+座職 < zashoku\ ;
+口中 < kouchuu\ ;
+冷酷 < reikoku\ ;
+次年度 < jinendo\ ;
+殴殺 < ousatsu\ ;
+入魂 < nyuukon\ ;
+志学 < shigaku\ ;
+多重化 < tajuuka\ ;
+往日 < oujitsu\ ;
+求婚 < kyuukon\ ;
+延発 < enpatsu\ ;
+千代女 < chiyojo\ ;
+真西 < manishi\ ;
+古社寺 < koshaji\ ;
+弓状 < kyuujou\ ;
+醜名 < shuumei\ ;
+民心 < minshin\ ;
+権高 < kendaka\ ;
+一層目 < issoume\ ;
+民徳 < mintoku\ ;
+反俗 < hanzoku\ ;
+決勝 < kesshou\ ;
+内陸 < nairiku\ ;
+直路 < chokuro\ ;
+適確 < tekkaku\ ;
+茶釜 < chagama\ ;
+娑婆気 < shabake\ ;
+辛酸 < shinsan\ ;
+希釈 < kishaku\ ;
+凶行 < kyoukou\ ;
+毎朝 < maichou\ ;
+白鯨 < hakugei\ ;
+半弓 < hankyuu\ ;
+励磁機 < reijiki\ ;
+不首尾 < fushubi\ ;
+初荷 < hatsuni\ ;
+北支 < hokushi\ ;
+悪感化 < akkanka\ ;
+待避所 < taihijo\ ;
+内閲 < naietsu\ ;
+内閣 < naikaku\ ;
+配属 < haizoku\ ;
+蔵匿 < zoutoku\ ;
+師走 < shiwasu\ ;
+沈倫 < chinrin\ ;
+酒客 < shukaku\ ;
+比日 < hinichi\ ;
+原告 < genkoku\ ;
+四股名 < shikona\ ;
+白魚 < shirauo\ ;
+半年 < han''nen\ ;
+運筆 < unpitsu\ ;
+鷹匠 < takajou\ ;
+歴然 < rekizen\ ;
+不人気 < funinki\ ;
+公領 < kouryou\ ;
+近親 < kinshin\ ;
+急使 < kyuushi\ ;
+剽盗 < hyoutou\ ;
+幼若 < youjaku\ ;
+西欧化 < seiouka\ ;
+全額 < zengaku\ ;
+標高 < hyoukou\ ;
+即売 < sokubai\ ;
+二階屋 < nikaiya\ ;
+千度 < chitabi\ ;
+強気 < tsuyoki\ ;
+棒暗記 < bouanki\ ;
+庁舎 < chousha\ ;
+劇界 < gekikai\ ;
+千年 < chitose\ ;
+不一致 < fuitchi\ ;
+血反吐 < chihedo\ ;
+劇甚 < gekijin\ ;
+横顔 < yokogao\ ;
+曳火弾 < eikadan\ ;
+勧業 < kangyou\ ;
+凝視 < gyoushi\ ;
+刺繍 < shishuu\ ;
+瞠目 < doumoku\ ;
+再録 < sairoku\ ;
+真虫 < mamushi\ ;
+鳥獣 < choujuu\ ;
+徹宵 < tesshou\ ;
+卑屈 < hikutsu\ ;
+加熱 < kanetsu\ ;
+簡素化 < kansoka\ ;
+個体差 < kotaisa\ ;
+再鋳 < saichuu\ ;
+氷塊 < hyoukai\ ;
+同音語 < douongo\ ;
+卒寿 < sotsuju\ ;
+強欲 < gouyoku\ ;
+協定 < kyoutei\ ;
+兵長 < heichou\ ;
+酌婦 < shakufu\ ;
+砲撃 < hougeki\ ;
+気密 < kimitsu\ ;
+選球 < senkyuu\ ;
+原則 < gensoku\ ;
+共闘 < kyoutou\ ;
+乗務員 < joumuin\ ;
+直諫 < chokkan\ ;
+裏木戸 < urakido\ ;
+発馬 < hatsuba\ ;
+刺絡 < shiraku\ ;
+全集 < zenshuu\ ;
+卓子 < teiburu\ ;
+直談 < jikidan\ ;
+入電 < nyuuden\ ;
+前章 < zenshou\ ;
+石段 < ishidan\ ;
+武烈 < buretsu\ ;
+直話 < chokuwa\ ;
+磁力 < jiryoku\ ;
+水垢 < mizuaka\ ;
+平臼 < hirausu\ ;
+役所 < yakusho\ ;
+適用 < tekiyou\ ;
+連続 < renzoku\ ;
+卵嚢 < ran''nou\ ;
+氏寺 < ujidera\ ;
+入隊 < nyuutai\ ;
+心外 < shingai\ ;
+金毘羅 < konpira\ ;
+半宵 < hanshou\ ;
+連絡 < renraku\ ;
+制約 < seiyaku\ ;
+瞑目 < meimoku\ ;
+力点 < rikiten\ ;
+水圧 < suiatsu\ ;
+幻聴 < genchou\ ;
+標題 < hyoudai\ ;
+氷嚢 < hyounou\ ;
+念力 < nenriki\ ;
+無造作 < muzousa\ ;
+直覧 < jikiran\ ;
+千尋 < chihiro\ ;
+全長 < zenchou\ ;
+博大 < hakudai\ ;
+十二時 < juuniji\ ;
+落涙 < rakurui\ ;
+内金 < uchikin\ ;
+登頂 < touchou\ ;
+盗賊 < touzoku\ ;
+博士 < hakushi\ ;
+意想外 < isougai\ ;
+不安定 < fuantei\ ;
+発音 < hatsuon\ ;
+入門 < nyuumon\ ;
+毒手 < dokushu\ ;
+石橋 < sekkyou\ ;
+真菌 < shinkin\ ;
+白面 < hakumen\ ;
+徹夜 < tetsuya\ ;
+陰電気 < indenki\ ;
+石槨 < sekkaku\ ;
+切腹 < seppuku\ ;
+忠君 < chuukun\ ;
+薄馬鹿 < usubaka\ ;
+蔵人 < kuroudo\ ;
+年老 < toshioi\ ;
+苔類 < kokerui\ ;
+丁字路 < teijiro\ ;
+発露 < hatsuro\ ;
+兇類 < kyourui\ ;
+途絶 < tozetsu\ ;
+直行 < chokkou\ ;
+力漕 < rikisou\ ;
+占地 < shimeji\ ;
+心地 < kokochi\ ;
+提示部 < teijibu\ ;
+先頃 < senkoro\ ;
+死毒 < shidoku\ ;
+慰問品 < imonhin\ ;
+府立 < furitsu\ ;
+原作 < gensaku\ ;
+印哲 < intetsu\ ;
+冷評 < reihyou\ ;
+心因 < shin''in\ ;
+速算 < sokusan\ ;
+厄前 < yakumae\ ;
+残業 < zangyou\ ;
+荒行 < aragyou\ ;
+内通 < naitsuu\ ;
+親文字 < oyamoji\ ;
+勝景 < shoukei\ ;
+瞭然 < ryouzen\ ;
+従属 < juuzoku\ ;
+弦楽 < gengaku\ ;
+劃然 < kakuzen\ ;
+即吟 < sokugin\ ;
+千姫 < senhime\ ;
+忠勤 < chuukin\ ;
+忠勇 < chuuyuu\ ;
+理財家 < rizaika\ ;
+冷覚 < reikaku\ ;
+通算 < tsuusan\ ;
+逆縁 < gyakuen\ ;
+有耶無耶 < uyamuya\ ;
+稽古日 < keikobi\ ;
+初級 < shokyuu\ ;
+毒性 < dokusei\ ;
+巡遊 < jun''yuu\ ;
+従容 < shouyou\ ;
+南国 < nangoku\ ;
+二塁打 < niruida\ ;
+強暴 < kyoubou\ ;
+幕舎 < bakusha\ ;
+氷原 < hyougen\ ;
+平織 < hiraori\ ;
+応力 < ouryoku\ ;
+勝敗 < shouhai\ ;
+手相見 < tesoumi\ ;
+求刑 < kyuukei\ ;
+夜盗蛾 < yotouga\ ;
+巻貝 < makigai\ ;
+式次 < shikiji\ ;
+写象 < shashou\ ;
+女性美 < joseibi\ ;
+残柱 < zanchuu\ ;
+石材 < sekizai\ ;
+風邪声 < kazegoe\ ;
+厭世家 < enseika\ ;
+邦楽 < hougaku\ ;
+剣玉 < kendama\ ;
+北嶺 < hokurei\ ;
+年給 < nenkyuu\ ;
+全量 < zenryou\ ;
+後学 < kougaku\ ;
+還流 < kanryuu\ ;
+即刻 < sokkoku\ ;
+凶聞 < kyoubun\ ;
+民国 < minkoku\ ;
+入金 < nyuukin\ ;
+剛球 < goukyuu\ ;
+熨斗目 < noshime\ ;
+半国 < hangoku\ ;
+永別 < eibetsu\ ;
+酷使 < kokushi\ ;
+快作 < kaisaku\ ;
+印刷 < insatsu\ ;
+追納 < tsuinou\ ;
+氷刃 < hyoujin\ ;
+陰謀家 < inbouka\ ;
+六道 < rokudou\ ;
+北岸 < hokugan\ ;
+送籍 < souseki\ ;
+別称 < besshou\ ;
+随意筋 < zuiikin\ ;
+庭番 < niwaban\ ;
+農薬 < nouyaku\ ;
+遊猟 < yuuryou\ ;
+登録 < touroku\ ;
+占卜 < senboku\ ;
+手加減 < tekagen\ ;
+讚美歌 < sanbika\ ;
+葉月 < hadzuki\ ;
+巨賊 < kyozoku\ ;
+華燭 < kashoku\ ;
+当惑 < touwaku\ ;
+分納 < bun''nou\ ;
+初穂 < hatsuho\ ;
+必勝 < hisshou\ ;
+白銑 < hakusen\ ;
+全速 < zensoku\ ;
+入選 < nyuusen\ ;
+全通 < zentsuu\ ;
+白銅 < hakudou\ ;
+白銀 < hakugin\ ;
+入道 < nyuudou\ ;
+邪曲 < jakyoku\ ;
+卜占 < bokusen\ ;
+同位体 < douitai\ ;
+工賃 < kouchin\ ;
+氷像 < hyouzou\ ;
+類音語 < ruiongo\ ;
+遊牧 < yuuboku\ ;
+週番 < shuuban\ ;
+心労 < shinrou\ ;
+初秋 < shoshuu\ ;
+幾程 < ikuhodo\ ;
+残敵 < zanteki\ ;
+通研 < tsuuken\ ;
+協同 < kyoudou\ ;
+平等 < byoudou\ ;
+叉手網 < sadeami\ ;
+即値 < sokuchi\ ;
+通知 < tsuuchi\ ;
+療養 < ryouyou\ ;
+年端 < toshiha\ ;
+庭球 < teikyuu\ ;
+殉教 < junkyou\ ;
+歌沢 < utazawa\ ;
+勁敵 < keiteki\ ;
+再調 < saichou\ ;
+再読 < saidoku\ ;
+求人 < kyuujin\ ;
+功業 < kougyou\ ;
+色黒 < iroguro\ ;
+南北 < nanboku\ ;
+小綬鶏 < kojukei\ ;
+博労 < bakurou\ ;
+晴雨計 < seiukei\ ;
+文庫化 < bunkoka\ ;
+破局 < hakyoku\ ;
+正業 < seigyou\ ;
+野次馬 < yajiuma\ ;
+帯芯 < obishin\ ;
+半周 < hanshuu\ ;
+遡源 < sakugen\ ;
+全身 < zenshin\ ;
+毒害 < dokugai\ ;
+街路樹 < gairoju\ ;
+内諾 < naidaku\ ;
+幸福 < koufuku\ ;
+勤恪 < kinkaku\ ;
+出精 < shussei\ ;
+復命 < fukumei\ ;
+若造 < wakazou\ ;
+店番 < miseban\ ;
+魍魎 < mouryou\ ;
+控訴院 < kousoin\ ;
+適法 < tekihou\ ;
+優長 < yuuchou\ ;
+忙中 < bouchuu\ ;
+卑劣 < hiretsu\ ;
+利発 < rihatsu\ ;
+仙人掌 < saboten\ ;
+復号 < fukugou\ ;
+心像 < shinzou\ ;
+連用 < ren''you\ ;
+気力 < kiryoku\ ;
+段平 < danbira\ ;
+共販 < kyouhan\ ;
+内証 < naishou\ ;
+内診 < naishin\ ;
+削片 < sakuhen\ ;
+復原 < fukugen\ ;
+発進 < hasshin\ ;
+弔文 < choubun\ ;
+北天 < hokuten\ ;
+北大 < hokudai\ ;
+元金 < motokin\ ;
+若輩 < jakuhai\ ;
+益虫 < ekichuu\ ;
+徳利 < tokkuri\ ;
+勁捷 < keishou\ ;
+必修 < hisshuu\ ;
+盲腸 < mouchou\ ;
+徳分 < tokubun\ ;
+蒸器 < mushiki\ ;
+微力 < biryoku\ ;
+匿名 < tokumei\ ;
+庵点 < ioriten\ ;
+延棒 < nobebou\ ;
+常習 < joushuu\ ;
+制球 < seikyuu\ ;
+分秒 < funbyou\ ;
+歓楽 < kanraku\ ;
+水中 < suichuu\ ;
+部局 < bukyoku\ ;
+凍肉 < touniku\ ;
+通用 < tsuuyou\ ;
+草色 < kusairo\ ;
+北境 < hokkyou\ ;
+魂魄 < konpaku\ ;
+徴兵 < chouhei\ ;
+配信 < haishin\ ;
+逗留 < touryuu\ ;
+適正 < tekisei\ ;
+正朝 < seichou\ ;
+正朔 < seisaku\ ;
+凄腕 < sugoude\ ;
+光速 < kousoku\ ;
+勘忍 < kan''nin\ ;
+先進 < senshin\ ;
+先週 < senshuu\ ;
+入貢 < nyuukou\ ;
+酒代 < sakadai\ ;
+白身 < shiromi\ ;
+巫術 < fujutsu\ ;
+速球 < sokkyuu\ ;
+返納 < hen''nou\ ;
+復刻 < fukkoku\ ;
+軽震 < keishin\ ;
+荒肝 < aragimo\ ;
+出穂 < shussui\ ;
+引換 < hikikae\ ;
+輻輳 < fukusou\ ;
+欲求 < yokkyuu\ ;
+延板 < nobeita\ ;
+真空 < shinkuu\ ;
+眼目 < ganmoku\ ;
+引接 < insetsu\ ;
+色魔 < shikima\ ;
+必中 < hitchuu\ ;
+輪郭 < rinkaku\ ;
+義援金 < gienkin\ ;
+単作 < tansaku\ ;
+省線 < shousen\ ;
+弾幕 < danmaku\ ;
+年益 < nen''eki\ ;
+復党 < fukutou\ ;
+光軸 < koujiku\ ;
+廿日 < hatsuka\ ;
+弱志 < jakushi\ ;
+北国 < hokkoku\ ;
+強弁 < kyouben\ ;
+還暦 < kanreki\ ;
+励振 < reishin\ ;
+辞色 < jishoku\ ;
+出社 < shussha\ ;
+草肥 < kusagoe\ ;
+利率 < riritsu\ ;
+発足 < hossoku\ ;
+公評 < kouhyou\ ;
+公証 < koushou\ ;
+十六 < juuroku\ ;
+別珍 < betchin\ ;
+協会 < kyoukai\ ;
+俯瞰図 < fukanzu\ ;
+御新香 < oshinko\ ;
+亜米利加 < amerika\ ;
+区別 < kubetsu\ ;
+千億 < sen''oku\ ;
+気位 < kigurai\ ;
+御家人 < gokenin\ ;
+弱弟 < jakutei\ ;
+共襟 < tomoeri\ ;
+眼病 < ganbyou\ ;
+六角 < rokkaku\ ;
+卒伍 < sotsugo\ ;
+大寺院 < daijiin\ ;
+殯宮 < hinkyuu\ ;
+研学 < kengaku\ ;
+残念 < zan''nen\ ;
+荷積 < nidzumi\ ;
+南中 < nanchuu\ ;
+冷肉 < reiniku\ ;
+落手 < rakushu\ ;
+相続 < souzoku\ ;
+残忍 < zan''nin\ ;
+気付 < kidzuke\ ;
+入試 < nyuushi\ ;
+残心 < zanshin\ ;
+烏羽玉 < ubatama\ ;
+創業 < sougyou\ ;
+凡策 < bonsaku\ ;
+勉強 < benkyou\ ;
+共裏 < tomoura\ ;
+後厄 < atoyaku\ ;
+落成 < rakusei\ ;
+全角 < zenkaku\ ;
+弱年 < jakunen\ ;
+勧学 < kangaku\ ;
+半作 < hansaku\ ;
+庶流 < shoryuu\ ;
+性行為 < seikoui\ ;
+歴戦 < rekisen\ ;
+一般化 < ippanka\ ;
+川蝦 < kawaebi\ ;
+歌曲 < kakyoku\ ;
+待合 < machiai\ ;
+帰結 < kiketsu\ ;
+石庭 < sekitei\ ;
+卒中 < sotchuu\ ;
+卓上 < takujou\ ;
+充足 < juusoku\ ;
+茶腹 < chabara\ ;
+免責 < menseki\ ;
+荒縄 < aranawa\ ;
+僻隅 < hekiguu\ ;
+劇暑 < gekisho\ ;
+直経 < chokkei\ ;
+十五夜 < juugoya\ ;
+目縁 < mabuchi\ ;
+僻陬 < hekisuu\ ;
+遍歴 < henreki\ ;
+帯紙 < obigami\ ;
+干瓢 < kanpyou\ ;
+償金 < shoukin\ ;
+氏人 < ujihito\ ;
+知徳 < chitoku\ ;
+遊歴 < yuureki\ ;
+二院制 < niinsei\ ;
+公衆 < koushuu\ ;
+先負 < senmake\ ;
+眼球 < gankyuu\ ;
+帽章 < boushou\ ;
+近称 < kinshou\ ;
+発議 < hatsugi\ ;
+出監 < shukkan\ ;
+送球 < soukyuu\ ;
+家政婦 < kaseifu\ ;
+良風 < ryoufuu\ ;
+分留 < bunryuu\ ;
+勘審 < kanshin\ ;
+適材 < tekizai\ ;
+邀撃 < yougeki\ ;
+連濁 < rendaku\ ;
+第二義 < dainigi\ ;
+歿後 < botsugo\ ;
+円軌道 < enkidou\ ;
+真相 < shinsou\ ;
+真直 < massugu\ ;
+役名 < yakumei\ ;
+従僕 < juuboku\ ;
+道楽 < douraku\ ;
+瞬断 < shundan\ ;
+野葡萄 < nobudou\ ;
+発語 < hatsugo\ ;
+勧奨 < kanshou\ ;
+力投 < rikitou\ ;
+刑獄 < keigoku\ ;
+百計 < hyakkei\ ;
+千両 < senryou\ ;
+後先 < atosaki\ ;
+十九 < juukyuu\ ;
+発話 < hatsuwa\ ;
+北半 < hokuhan\ ;
+廃業 < haigyou\ ;
+発註 < hatchuu\ ;
+十両 < juuryou\ ;
+力戦 < rikisen\ ;
+十七 < juunana\ ;
+十一 < juuichi\ ;
+引当 < hikiate\ ;
+逸民 < itsumin\ ;
+律儀 < richigi\ ;
+応募者 < oubosha\ ;
+前歴 < zenreki\ ;
+副本 < fukuhon\ ;
+艱難 < kan''nan\ ;
+麻実油 < asamiyu\ ;
+茶飯事 < sahanji\ ;
+式微 < shikibi\ ;
+遊楽 < yuuraku\ ;
+軽量 < keiryou\ ;
+軽重 < keichou\ ;
+目算 < mokusan\ ;
+出産 < shussan\ ;
+発覚 < hakkaku\ ;
+進水 < shinsui\ ;
+八重雲 < yaeguma\ ;
+欲望 < yokubou\ ;
+勇将 < yuushou\ ;
+盟約 < meiyaku\ ;
+相称 < soushou\ ;
+彼処 < kashiko\ ;
+矮小 < waishou\ ;
+睫毛 < matsuge\ ;
+邸宅 < teitaku\ ;
+目端 < mehashi\ ;
+勉学 < bengaku\ ;
+鯨肉 < geiniku\ ;
+優越 < yuuetsu\ ;
+百行 < hyakkou\ ;
+近眼 < chikame\ ;
+菌毒 < kindoku\ ;
+歴年 < rekinen\ ;
+未踏査 < mitousa\ ;
+弓師 < yumishi\ ;
+先覚 < senkaku\ ;
+後作 < atosaku\ ;
+巨舶 < kyohaku\ ;
+底流 < teiryuu\ ;
+絵葉書 < ehagaki\ ;
+発表 < happyou\ ;
+選択 < sentaku\ ;
+欠格 < kekkaku\ ;
+共著 < kyoucho\ ;
+稽古場 < keikoba\ ;
+広漠 < koubaku\ ;
+草笛 < kusabue\ ;
+勝報 < shouhou\ ;
+初潮 < shochou\ ;
+助平 < sukebei\ ;
+安全期 < anzenki\ ;
+強大 < kyoudai\ ;
+反意語 < han''igo\ ;
+輪読 < rindoku\ ;
+知将 < chishou\ ;
+内膜 < naimaku\ ;
+強壮 < kyousou\ ;
+役僧 < yakusou\ ;
+個人差 < kojinsa\ ;
+劇戦 < gekisen\ ;
+総務部 < soumubu\ ;
+毒刃 < dokujin\ ;
+白蝋 < hakurou\ ;
+帆綱 < hodzuna\ ;
+軍長 < gunchou\ ;
+力役 < rikieki\ ;
+警部補 < keibuho\ ;
+冷笑 < reishou\ ;
+与太郎 < yotarou\ ;
+茶粥 < chagayu\ ;
+廻心 < kaishin\ ;
+看病 < kanbyou\ ;
+目礼 < mokurei\ ;
+輸血 < yuketsu\ ;
+位牌堂 < ihaidou\ ;
+勝地 < shouchi\ ;
+初湯 < hatsuyu\ ;
+義太夫 < gidayuu\ ;
+凶猛 < kyoumou\ ;
+三鞭酒 < shanpen\ ;
+艦長 < kanchou\ ;
+妃殿下 < hidenka\ ;
+凍石 < touseki\ ;
+制欲 < seiyoku\ ;
+出版 < shuppan\ ;
+弟嫁 < otoyome\ ;
+凶状 < kyoujou\ ;
+樺色 < kabairo\ ;
+退潮 < taichou\ ;
+砂地 < sunachi\ ;
+道教 < doukyou\ ;
+漫画家 < mangaka\ ;
+過日 < kajitsu\ ;
+転針 < tenshin\ ;
+茶箱 < chabako\ ;
+帰着 < kichaku\ ;
+適所 < tekisho\ ;
+僻邑 < hekiyuu\ ;
+不本意 < fuhon''i\ ;
+歎息 < tansoku\ ;
+苛虐 < kagyaku\ ;
+歩合算 < buaizan\ ;
+彫像 < chouzou\ ;
+語彙的 < goiteki\ ;
+石塔 < sekitou\ ;
+返球 < henkyuu\ ;
+石塀 < ishibei\ ;
+弟姫 < otohime\ ;
+利殖 < rishoku\ ;
+役人 < yakunin\ ;
+辱知 < jokuchi\ ;
+勧告 < kankoku\ ;
+盲目 < moumoku\ ;
+痛風 < tsuufuu\ ;
+逸材 < itsuzai\ ;
+第一課 < daiikka\ ;
+出炭 < shuttan\ ;
+弱国 < jakkoku\ ;
+荷物 < nimotsu\ ;
+北上 < hokujou\ ;
+井戸端 < idobata\ ;
+副手 < fukushu\ ;
+剽悍 < hyoukan\ ;
+色里 < irozato\ ;
+理事会 < rijikai\ ;
+盤石 < banjaku\ ;
+農相 < noushou\ ;
+遊撃 < yuugeki\ ;
+火曜日 < kayoubi\ ;
+入舎 < nyuusha\ ;
+御不浄 < gofujou\ ;
+逐次 < chikuji\ ;
+辺疆 < henkyou\ ;
+前方 < maekata\ ;
+白菜 < hakusai\ ;
+未定義 < miteigi\ ;
+割愛 < katsuai\ ;
+監督 < kantoku\ ;
+躁鬱 < souutsu\ ;
+楽隊 < gakutai\ ;
+殉国 < junkoku\ ;
+逆比 < gyakuhi\ ;
+対位法 < taiihou\ ;
+冥福 < meifuku\ ;
+睦月 < mutsuki\ ;
+刻本 < kokuhon\ ;
+正子 < shoushi\ ;
+幽欝 < yuuutsu\ ;
+殺傷 < sasshou\ ;
+浮浪児 < furouji\ ;
+婦人科 < fujinka\ ;
+内約 < naiyaku\ ;
+強味 < tsuyomi\ ;
+剣戟 < kengeki\ ;
+返照 < henshou\ ;
+艇長 < teichou\ ;
+他世界 < tasekai\ ;
+適当 < tekitou\ ;
+慰労金 < iroukin\ ;
+権能 < ken''nou\ ;
+正嫡 < seiteki\ ;
+欲情 < yokujou\ ;
+座敷 < zashiki\ ;
+楼閣 < roukaku\ ;
+分注 < bunchuu\ ;
+包丁 < houchou\ ;
+発芽 < hatsuga\ ;
+進数 < shinsuu\ ;
+理不尽 < rifujin\ ;
+百般 < hyappan\ ;
+出渠 < shukkyo\ ;
+単坐機 < tanzaki\ ;
+落城 < rakujou\ ;
+割当 < wariate\ ;
+欲念 < yokunen\ ;
+樟脳 < shounou\ ;
+不飽和 < fuhouwa\ ;
+近火 < chikabi\ ;
+別格 < bekkaku\ ;
+疾風 < shippuu\ ;
+落地 < rakuchi\ ;
+共編 < kyouhen\ ;
+此奴 < koyatsu\ ;
+盗癖 < touheki\ ;
+船長 < senchou\ ;
+代議員 < daigiin\ ;
+研修 < kenshuu\ ;
+刷新 < sasshin\ ;
+非合理 < higouri\ ;
+殿中 < denchuu\ ;
+強力 < gouriki\ ;
+序曲 < jokyoku\ ;
+総務課 < soumuka\ ;
+床板 < yukaita\ ;
+通有 < tsuuyuu\ ;
+兵糧 < hyourou\ ;
+盆石 < bonseki\ ;
+欣悦 < kinetsu\ ;
+典籍 < tenseki\ ;
+道徳 < doutoku\ ;
+病難 < byounan\ ;
+力士 < rikishi\ ;
+椰子油 < yashiyu\ ;
+車輛 < sharyou\ ;
+兵籍 < heiseki\ ;
+速断 < sokudan\ ;
+車軸 < shajiku\ ;
+内積 < naiseki\ ;
+剣形 < kengata\ ;
+荒物 < aramono\ ;
+盲爆 < moubaku\ ;
+僻論 < hekiron\ ;
+強兵 < kyouhei\ ;
+公約 < kouyaku\ ;
+段丘 < dankyuu\ ;
+農牧 < nouboku\ ;
+入綿 < irewata\ ;
+水泳着 < suieigi\ ;
+横線 < yokosen\ ;
+白羽 < shiraha\ ;
+峻険 < shunken\ ;
+巫祝 < fushuku\ ;
+軸装 < jikusou\ ;
+監獄 < kangoku\ ;
+別時 < betsuji\ ;
+弔問 < choumon\ ;
+全級 < zenkyuu\ ;
+内福 < naifuku\ ;
+写真 < shashin\ ;
+凝滞 < gyoutai\ ;
+道床 < doushou\ ;
+殊勝 < shushou\ ;
+軍足 < gunsoku\ ;
+僻言 < hekigen\ ;
+絵草紙 < ezoushi\ ;
+剣幕 < kenmaku\ ;
+凶歳 < kyousai\ ;
+剛強 < goukyou\ ;
+分業 < bungyou\ ;
+転調 < tenchou\ ;
+歌姫 < utahime\ ;
+遠山 < tooyama\ ;
+横糸 < yokoito\ ;
+次式 < jishiki\ ;
+遊弋 < yuuyoku\ ;
+遺失 < ishitsu\ ;
+選奨 < senshou\ ;
+僻見 < hekiken\ ;
+花葵 < hanaaoi\ ;
+落命 < rakumei\ ;
+遊廓 < yuukaku\ ;
+樹立 < juritsu\ ;
+魔術 < majutsu\ ;
+凡流 < bonryuu\ ;
+舌音 < zetsuon\ ;
+初日 < hatsuhi\ ;
+引受 < hikiuke\ ;
+劇変 < gekihen\ ;
+建国 < kenkoku\ ;
+短冊 < tanzaku\ ;
+石像 < sekizou\ ;
+督戦 < tokusen\ ;
+眺望 < choubou\ ;
+劇壇 < gekidan\ ;
+近況 < kinkyou\ ;
+欠席 < kesseki\ ;
+巨石 < kyoseki\ ;
+歴史 < rekishi\ ;
+平服 < heifuku\ ;
+転覆 < tenpuku\ ;
+機略 < kiryaku\ ;
+小犬座 < koinuza\ ;
+劇場 < gekijou\ ;
+身近 < midjika\ ;
+逆旅 < gekiryo\ ;
+身辺 < shinpen\ ;
+分析 < bunseki\ ;
+弱体 < jakutai\ ;
+横笛 < yokobue\ ;
+発給 < hakkyuu\ ;
+軽薄 < keihaku\ ;
+引力 < inryoku\ ;
+円盆 < marubon\ ;
+赤味噌 < akamiso\ ;
+著作 < chosaku\ ;
+痩身 < soushin\ ;
+花色 < hanairo\ ;
+速成 < sokusei\ ;
+左直 < sachoku\ ;
+前年 < zen''nen\ ;
+送料 < souryou\ ;
+鱗木 < rinboku\ ;
+白粉 < oshiroi\ ;
+内的 < naiteki\ ;
+苦節 < kusetsu\ ;
+白米 < hakumai\ ;
+短信 < tanshin\ ;
+横穴 < yokoana\ ;
+極道 < gokudou\ ;
+対義語 < taigigo\ ;
+眷族 < kenzoku\ ;
+道学 < dougaku\ ;
+側面 < sokumen\ ;
+幣束 < heisoku\ ;
+助勢 < sukezei\ ;
+功名 < koumyou\ ;
+艇身 < teishin\ ;
+汚染菌 < osenkin\ ;
+過密 < kamitsu\ ;
+三日路 < mikkaji\ ;
+努力 < doryoku\ ;
+居酒屋 < izakaya\ ;
+庭師 < niwashi\ ;
+骨骼 < kokkaku\ ;
+助力 < joryoku\ ;
+追放 < tsuihou\ ;
+自家製 < jikasei\ ;
+遊学 < yuugaku\ ;
+歳入 < sainyuu\ ;
+鳩合 < kyuugou\ ;
+欠字 < ketsuji\ ;
+塗布剤 < tofuzai\ ;
+正北 < seihoku\ ;
+傷跡 < kizuato\ ;
+武力 < buryoku\ ;
+適地 < tekichi\ ;
+功力 < kouriki\ ;
+古典語 < kotengo\ ;
+荒波 < aranami\ ;
+近業 < kingyou\ ;
+真書 < shinsho\ ;
+庵室 < anjitsu\ ;
+共益 < kyoueki\ ;
+通性 < tsuusei\ ;
+正則 < seisoku\ ;
+鬱血 < ukketsu\ ;
+兼用 < ken''you\ ;
+労作 < rousaku\ ;
+通念 < tsuunen\ ;
+凋残 < chouzan\ ;
+不景気 < fukeiki\ ;
+冷涼 < reiryou\ ;
+軽舟 < keishuu\ ;
+落体 < rakutai\ ;
+連年 < ren''nen\ ;
+切換 < kirikae\ ;
+痕跡 < konseki\ ;
+合理化 < gourika\ ;
+干拓 < kantaku\ ;
+死人 < shibito\ ;
+公的 < kouteki\ ;
+建前 < tatemae\ ;
+切掛 < kikkake\ ;
+進展 < shinten\ ;
+欠如 < ketsujo\ ;
+骨頂 < kotchou\ ;
+横着 < ouchaku\ ;
+分掌 < bunshou\ ;
+弁償 < benshou\ ;
+拉丁語 < ratengo\ ;
+刑戮 < keiriku\ ;
+通弊 < tsuuhei\ ;
+発祥 < hasshou\ ;
+通弁 < tsuuben\ ;
+歴伝 < rekiden\ ;
+幽愁 < yuushuu\ ;
+落人 < ochuudo\ ;
+入監 < nyuukan\ ;
+死中 < shichuu\ ;
+歴任 < rekinin\ ;
+別後 < betsugo\ ;
+電磁波 < denjiha\ ;
+歴代 < rekidai\ ;
+共用 < kyouyou\ ;
+極貧 < gokuhin\ ;
+共産 < kyousan\ ;
+権益 < ken''eki\ ;
+幻惑 < genwaku\ ;
+転落 < tenraku\ ;
+幕政 < bakusei\ ;
+県有 < ken''yuu\ ;
+追懐 < tsuikai\ ;
+魚腹 < gyofuku\ ;
+通常 < tsuujou\ ;
+追憶 < tsuioku\ ;
+躊躇 < chuucho\ ;
+鬼蓮 < onibasu\ ;
+真摯 < shinshi\ ;
+電磁気 < denjiki\ ;
+皆目 < kaimoku\ ;
+白砂 < hakusha\ ;
+概評 < gaihyou\ ;
+弋人 < yokujin\ ;
+凝望 < gyoubou\ ;
+傾角 < keikaku\ ;
+典獄 < tengoku\ ;
+鯛焼 < taiyaki\ ;
+適合 < tekigou\ ;
+劇剤 < gekizai\ ;
+別席 < besseki\ ;
+元禄 < genroku\ ;
+傾覆 < keifuku\ ;
+魚肉 < gyoniku\ ;
+入用 < nyuuyou\ ;
+白眼 < hakugan\ ;
+荒業 < arawaza\ ;
+刺子 < sashiko\ ;
+正体 < shoutai\ ;
+逆徒 < gyakuto\ ;
+山麓 < sanroku\ ;
+迎春 < geishun\ ;
+白目 < shirome\ ;
+列強 < rekkyou\ ;
+農業 < nougyou\ ;
+切愛 < setsuai\ ;
+候鳥 < kouchou\ ;
+栄養価 < eiyouka\ ;
+還俗 < genzoku\ ;
+速射 < sokusha\ ;
+迷惑 < meiwaku\ ;
+逼塞 < hissoku\ ;
+痛言 < tsuugen\ ;
+初巳 < hatsumi\ ;
+第二次 < dainiji\ ;
+疾走 < shissou\ ;
+列座 < retsuza\ ;
+着座 < chakuza\ ;
+茶殻 < chagara\ ;
+追従 < tsuijuu\ ;
+正中 < seichuu\ ;
+躬行 < kyuukou\ ;
+白痴 < hakuchi\ ;
+井戸水 < idomizu\ ;
+凶手 < kyoushu\ ;
+市況 < shikyou\ ;
+列席 < resseki\ ;
+帝業 < teigyou\ ;
+前垂 < maedare\ ;
+一個人 < ikkojin\ ;
+亡祖父 < bousofu\ ;
+御朱印 < goshuin\ ;
+着工 < chakkou\ ;
+割勘 < warikan\ ;
+異性体 < iseitai\ ;
+発疹 < hosshin\ ;
+鳥人 < choujin\ ;
+迎撃 < geigeki\ ;
+進塁 < shinrui\ ;
+剣呑 < ken''non\ ;
+冒涜 < boutoku\ ;
+検鏡 < kenkyou\ ;
+先皇 < sen''nou\ ;
+退席 < taiseki\ ;
+別宴 < betsuen\ ;
+週報 < shuuhou\ ;
+割前 < warimae\ ;
+円滑 < enkotsu\ ;
+別宅 < bettaku\ ;
+免疫 < men''eki\ ;
+割判 < warihan\ ;
+非同期 < hidouki\ ;
+軸線 < jikusen\ ;
+十露盤 < soroban\ ;
+側辺 < sokuhen\ ;
+欠員 < ketsuin\ ;
+棒鱈 < boudara\ ;
+入物 < iremono\ ;
+入牢 < nyuurou\ ;
+選任 < sen''nin\ ;
+凶悪 < kyouaku\ ;
+筆記具 < hikkigu\ ;
+番長 < banchou\ ;
+穏健派 < onkenha\ ;
+育児園 < ikujien\ ;
+幼少 < youshou\ ;
+電気炉 < denkiro\ ;
+草木 < soumoku\ ;
+目星 < meboshi\ ;
+依存性 < izonsei\ ;
+幽寂 < yuujaku\ ;
+僚艦 < ryoukan\ ;
+分巻 < bunmaki\ ;
+比叡山 < hieizan\ ;
+癩病 < raibyou\ ;
+通奏 < tsuusou\ ;
+疣足 < iboashi\ ;
+依頼者 < iraisha\ ;
+良能 < ryounou\ ;
+載積 < saiseki\ ;
+茶棚 < chadana\ ;
+幼子 < osanago\ ;
+適例 < tekirei\ ;
+検針 < kenshin\ ;
+出廷 < shuttei\ ;
+崩落 < houraku\ ;
+真影 < shin''ei\ ;
+年少 < nenshou\ ;
+幣帛 < heihaku\ ;
+凶弾 < kyoudan\ ;
+速報 < sokuhou\ ;
+甲高 < koudaka\ ;
+白状 < hakujou\ ;
+製油所 < seiyujo\ ;
+適任 < tekinin\ ;
+制圧 < seiatsu\ ;
+疾視 < shisshi\ ;
+苦熱 < kunetsu\ ;
+発狂 < hakkyou\ ;
+創作 < sousaku\ ;
+檄文 < gekibun\ ;
+内池 < uchiike\ ;
+目撥 < mebachi\ ;
+偏針 < henshin\ ;
+退学 < taigaku\ ;
+偏重 < henchou\ ;
+年子 < toshigo\ ;
+通報 < tsuuhou\ ;
+基本語 < kihongo\ ;
+剣先 < kensaki\ ;
+凶年 < kyounen\ ;
+真平 < mappira\ ;
+癒着 < yuchaku\ ;
+御三家 < gosanke\ ;
+副使 < fukushi\ ;
+莫大 < bakudai\ ;
+前厄 < maeyaku\ ;
+魚竜 < gyoryuu\ ;
+迷宮 < meikyuu\ ;
+遅刻 < chikoku\ ;
+幔幕 < manmaku\ ;
+五節句 < gosekku\ ;
+森閑 < shinkan\ ;
+辟易 < hekieki\ ;
+入漁 < nyuugyo\ ;
+直披 < chokuhi\ ;
+誤動作 < godousa\ ;
+発煙 < hatsuen\ ;
+舟行 < shuukou\ ;
+岸辺 < kishibe\ ;
+道俗 < douzoku\ ;
+進取 < shinshu\ ;
+膨隆 < bouryuu\ ;
+倍額 < baigaku\ ;
+目指 < mokushi\ ;
+影印本 < eiinhon\ ;
+魔窟 < makutsu\ ;
+凝念 < gyounen\ ;
+巡歴 < junreki\ ;
+山頂 < sanchou\ ;
+入湯 < nyuutou\ ;
+出展 < shutten\ ;
+入渠 < nyuukyo\ ;
+苛烈 < karetsu\ ;
+経営費 < keieihi\ ;
+迫害 < hakugai\ ;
+八洲 < yashima\ ;
+円相場 < ensouba\ ;
+轟沈 < gouchin\ ;
+県庁 < kenchou\ ;
+凡庸 < bon''you\ ;
+癇癖 < kanpeki\ ;
+色素 < shikiso\ ;
+近年 < kin''nen\ ;
+盆暮 < bonkure\ ;
+蹉跌 < satetsu\ ;
+年増 < toshima\ ;
+道主 < doushuu\ ;
+凋悴 < chousui\ ;
+道中 < douchuu\ ;
+山陽 < san''you\ ;
+山陵 < sanryou\ ;
+遊休 < yuukyuu\ ;
+痘苗 < toubyou\ ;
+週刊 < shuukan\ ;
+被疑者 < higisha\ ;
+庖厨 < houchuu\ ;
+倒閣 < toukaku\ ;
+列国 < rekkoku\ ;
+督励 < tokurei\ ;
+巡業 < jungyou\ ;
+標準 < hyoujun\ ;
+菊判 < kikuban\ ;
+産額 < sangaku\ ;
+週内 < shuunai\ ;
+鰻屋 < unagiya\ ;
+入水 < nyuusui\ ;
+制勝 < seishou\ ;
+刻刻 < kokkoku\ ;
+備蓄 < bichiku\ ;
+通名 < toorina\ ;
+軍籍 < gunseki\ ;
+船舶 < senpaku\ ;
+連勝 < renshou\ ;
+通史 < tsuushi\ ;
+直後 < chokugo\ ;
+直往 < chokuou\ ;
+放火魔 < houkama\ ;
+修養 < shuuyou\ ;
+不断着 < fudangi\ ;
+聖路加 < seiroka\ ;
+病菌 < byoukin\ ;
+出奔 < shuppon\ ;
+楽聖 < gakusei\ ;
+船腹 < senpuku\ ;
+下線部 < kasenbu\ ;
+白洲 < shirasu\ ;
+凡小 < bonshou\ ;
+前任 < zen''nin\ ;
+巨木 < kyoboku\ ;
+般若 < han''nya\ ;
+傷者 < shousha\ ;
+円曲 < enkyoku\ ;
+尾骨 < bikotsu\ ;
+広告 < koukoku\ ;
+芝生 < shibafu\ ;
+通勤 < tsuukin\ ;
+自説 < jisetsu\ ;
+充溢 < juuitsu\ ;
+看客 < kankaku\ ;
+茶托 < chataku\ ;
+真夏 < manatsu\ ;
+辺幅 < henpuku\ ;
+店内 < ten''nai\ ;
+多次元 < tajigen\ ;
+川柳 < senryuu\ ;
+業腹 < gouhara\ ;
+良種 < ryoushu\ ;
+借金 < shakkin\ ;
+削井 < sakusei\ ;
+似非者 < esemono\ ;
+序列 < joretsu\ ;
+倒錯 < tousaku\ ;
+帝徳 < teitoku\ ;
+脳外科 < nougeka\ ;
+通分 < tsuubun\ ;
+追善 < tsuizen\ ;
+凶報 < kyouhou\ ;
+御下問 < gokamon\ ;
+検認 < ken''nin\ ;
+荒巻 < aramaki\ ;
+病舎 < byousha\ ;
+舞茸 < maitake\ ;
+週令 < shuurei\ ;
+准州 < junshuu\ ;
+膃肭臍 < ottosei\ ;
+共栓 < tomosen\ ;
+女性器 < joseiki\ ;
+孵卵器 < furanki\ ;
+検証 < kenshou\ ;
+無理解 < murikai\ ;
+常宿 < jouyado\ ;
+信頼 < shinrai\ ;
+光沢 < koutaku\ ;
+帝廟 < teibyou\ ;
+凹地 < kubochi\ ;
+凸坊 < dekobou\ ;
+軍票 < gunpyou\ ;
+盛徳 < seitoku\ ;
+業者 < gyousha\ ;
+軍神 < gunshin\ ;
+蹈襲 < toushuu\ ;
+舟艇 < shuutei\ ;
+横棒 < yokobou\ ;
+年収 < nenshuu\ ;
+入梅 < nyuubai\ ;
+腓骨 < hikotsu\ ;
+共有 < kyouyuu\ ;
+鰤子 < burikko\ ;
+相客 < aikyaku\ ;
+父性愛 < fuseiai\ ;
+追号 < tsuigou\ ;
+連作 < rensaku\ ;
+兎欠 < toketsu\ ;
+兆民 < choumin\ ;
+別儀 < betsugi\ ;
+非武装 < hibusou\ ;
+良知 < ryouchi\ ;
+連休 < renkyuu\ ;
+切味 < kireaji\ ;
+造作 < zousaku\ ;
+六書 < rokusho\ ;
+着剣 < chakken\ ;
+分周 < bunshuu\ ;
+六曜 < rokuyou\ ;
+八朔 < hassaku\ ;
+刪修 < sanshuu\ ;
+准将 < junshou\ ;
+腕首 < udekubi\ ;
+眼力 < ganriki\ ;
+通例 < tsuurei\ ;
+標榜 < hyoubou\ ;
+入来 < nyuurai\ ;
+略譜 < ryakufu\ ;
+轢断 < rekidan\ ;
+転用 < ten''you\ ;
+皐月 < satsuki\ ;
+連中 < renchuu\ ;
+元歌 < motouta\ ;
+色白 < irojiro\ ;
+岩角 < iwakado\ ;
+同父母 < doufubo\ ;
+茶店 < chamise\ ;
+凝塊 < gyoukai\ ;
+出品 < shuppin\ ;
+農学 < nougaku\ ;
+通人 < tsuujin\ ;
+略語 < ryakugo\ ;
+僭用 < sen''you\ ;
+踊躍 < youyaku\ ;
+茶席 < chaseki\ ;
+追刊 < tsuikan\ ;
+用量 < youryou\ ;
+自虐 < jigyaku\ ;
+鬼畜 < kichiku\ ;
+腐食 < fushoku\ ;
+年内 < nen''nai\ ;
+傍聴 < bouchou\ ;
+左折 < sasetsu\ ;
+白桃 < hakutou\ ;
+女性化 < joseika\ ;
+若枝 < wakaeda\ ;
+近国 < kingoku\ ;
+船籍 < senseki\ ;
+元標 < genpyou\ ;
+出口 < deguchi\ ;
+切削 < sessaku\ ;
+略解 < ryakkai\ ;
+刀匠 < toushou\ ;
+発案 < hatsuan\ ;
+無期限 < mukigen\ ;
+軟球 < nankyuu\ ;
+修錬 < shuuren\ ;
+自家用 < jikayou\ ;
+直奏 < jikisou\ ;
+航続 < kouzoku\ ;
+良田 < ryouden\ ;
+足音 < ashioto\ ;
+先棒 < sakibou\ ;
+家系図 < kakeizu\ ;
+一世紀 < isseiki\ ;
+刈入 < kariire\ ;
+白木 < shiraki\ ;
+自由度 < jiyuudo\ ;
+標本 < hyouhon\ ;
+白書 < hakusho\ ;
+汚染源 < osengen\ ;
+軍用 < gun''you\ ;
+初乳 < shonyuu\ ;
+平信 < heishin\ ;
+荒壁 < arakabe\ ;
+八掛 < hakkake\ ;
+輪業 < ringyou\ ;
+茶寮 < charyou\ ;
+平作 < heisaku\ ;
+盲執 < moushuu\ ;
+甘酒 < amazake\ ;
+元栓 < motosen\ ;
+八挺 < hatchou\ ;
+真剣 < shinken\ ;
+依頼状 < iraijou\ ;
+凹凸 < outotsu\ ;
+辛子 < karashi\ ;
+凸凹 < totsuou\ ;
+百方 < hyappou\ ;
+側背 < sokuhai\ ;
+療法 < ryouhou\ ;
+入掛 < irekaku\ ;
+迷信 < meishin\ ;
+凶刃 < kyoujin\ ;
+第一歩 < daiippo\ ;
+出兵 < shuppei\ ;
+白斑 < hakuhan\ ;
+退京 < taikyou\ ;
+白文 < hakubun\ ;
+微塵子 < mijinko\ ;
+凸円 < totsuen\ ;
+山賊 < sanzoku\ ;
+眼中 < ganchuu\ ;
+贔屓目 < hiikime\ ;
+側聞 < sokubun\ ;
+業種 < gyoushu\ ;
+八手 < yatsude\ ;
+色物 < iromono\ ;
+痳病 < rinbyou\ ;
+元服 < genpuku\ ;
+修道 < shuudou\ ;
+克明 < kokumei\ ;
+年上 < toshiue\ ;
+保釈 < hoshaku\ ;
+入手 < nyuushu\ ;
+入所 < nyuusho\ ;
+述作 < jussaku\ ;
+電磁場 < denjiba\ ;
+直営 < chokuei\ ;
+小面 < shoumen\ ;
+尿酸 < nyousan\ ;
+辛夷 < kobushi\ ;
+六情 < rokujou\ ;
+一体化 < ittaika\ ;
+御日様 < ohisama\ ;
+音羽屋 < otowaya\ ;
+高粱 < kouryan\ ;
+小難 < shounan\ ;
+局部 < kyokubu\ ;
+医院長 < iinchou\ ;
+印欧語 < in''ougo\ ;
+帝国 < teikoku\ ;
+出会 < shukkai\ ;
+鬱然 < utsuzen\ ;
+傷痕 < shoukon\ ;
+再審 < saishin\ ;
+県内 < ken''nai\ ;
+尿道 < nyoudou\ ;
+側線 < sokusen\ ;
+公徳 < koutoku\ ;
+常勝 < joushou\ ;
+冥境 < meikyou\ ;
+真人 < shinjin\ ;
+冷嘲 < reichou\ ;
+馴鹿 < tonakai\ ;
+直参 < jikisan\ ;
+出来秋 < dekiaki\ ;
+飛行機 < hikouki\ ;
+入念 < nyuunen\ ;
+脊髄 < sekizui\ ;
+無作為 < musakui\ ;
+真下 < mashita\ ;
+円安 < en''yasu\ ;
+尊長 < sonchou\ ;
+偽筆 < gihitsu\ ;
+相剋 < soukoku\ ;
+膝行 < shikkou\ ;
+都市部 < toshibu\ ;
+転注 < tenchuu\ ;
+座蒲団 < zabuton\ ;
+入廷 < nyuutei\ ;
+俗輩 < zokuhai\ ;
+脚韻 < kyakuin\ ;
+凡俗 < bonzoku\ ;
+寒鮒 < kanbuna\ ;
+業病 < goubyou\ ;
+農博 < nouhaku\ ;
+農協 < noukyou\ ;
+全幅 < zenpuku\ ;
+放課後 < houkago\ ;
+全席 < zenseki\ ;
+高禄 < kouroku\ ;
+近作 < kinsaku\ ;
+荷主 < ninushi\ ;
+良港 < ryoukou\ ;
+寸隙 < sungeki\ ;
+一本気 < ippongi\ ;
+目前 < mokuzen\ ;
+岩肌 < iwahada\ ;
+凡人 < bon''nin\ ;
+信販 < shinpan\ ;
+電気屋 < denkiya\ ;
+俗趣 < zokushu\ ;
+修論 < shuuron\ ;
+兵学 < heigaku\ ;
+田螺 < tanishi\ ;
+産褥 < sanjoku\ ;
+小銃 < shoujuu\ ;
+便通 < bentsuu\ ;
+小鉢 < kobachi\ ;
+未来派 < miraiha\ ;
+赤飯 < sekihan\ ;
+帝劇 < teigeki\ ;
+共存 < kyouzon\ ;
+省令 < shourei\ ;
+自粛 < jishuku\ ;
+百度 < hyakudo\ ;
+栄誉礼 < eiyorei\ ;
+内壁 < naiheki\ ;
+疾病 < shippei\ ;
+元悪 < gen''aku\ ;
+糖衣錠 < touijou\ ;
+疼痛 < toutsuu\ ;
+害鳥 < gaichou\ ;
+傍白 < bouhaku\ ;
+良民 < ryoumin\ ;
+躁病 < soubyou\ ;
+理論家 < rironka\ ;
+田虫 < tamushi\ ;
+白帆 < shiraho\ ;
+高直 < koujiki\ ;
+打楽器 < dagakki\ ;
+生血 < namachi\ ;
+無作法 < busahou\ ;
+入定 < nyuujou\ ;
+転業 < tengyou\ ;
+屈託 < kuttaku\ ;
+直伝 < jikiden\ ;
+茶匙 < chasaji\ ;
+自筆 < jihitsu\ ;
+仁王門 < nioumon\ ;
+苗床 < naedoko\ ;
+赤面 < sekimen\ ;
+古典派 < kotenha\ ;
+内圧 < naiatsu\ ;
+痛点 < tsuuten\ ;
+素封家 < sohouka\ ;
+先年 < sen''nen\ ;
+疱疹 < houshin\ ;
+俗謡 < zokuyou\ ;
+小道 < komichi\ ;
+自立 < jiritsu\ ;
+修行 < shugyou\ ;
+内国 < naikoku\ ;
+俗諺 < zokugen\ ;
+至福 < shifuku\ ;
+寺銭 < terasen\ ;
+農作 < nousaku\ ;
+俗諦 < zokutai\ ;
+俊豪 < shungou\ ;
+俗論 < zokuron\ ;
+症状 < shoujou\ ;
+俗談 < zokudan\ ;
+導通 < doutsuu\ ;
+魚族 < gyozoku\ ;
+入婿 < irimuko\ ;
+僻村 < hekison\ ;
+鮨屋 < sushiya\ ;
+寄食 < kishoku\ ;
+白山 < hakusan\ ;
+病状 < byoujou\ ;
+元年 < gan''nen\ ;
+席上 < sekijou\ ;
+荒事 < aragoto\ ;
+監修 < kanshuu\ ;
+歩合制 < buaisei\ ;
+偸盗 < chuutou\ ;
+僻書 < hekisho\ ;
+留置 < ryuuchi\ ;
+辛党 < karatou\ ;
+格闘 < kakutou\ ;
+番組 < bangumi\ ;
+魂柱 < konchuu\ ;
+百官 < hyakkan\ ;
+作風 < sakufuu\ ;
+魚河岸 < uogashi\ ;
+馬食 < bashoku\ ;
+自由化 < jiyuuka\ ;
+艦橋 < kankyou\ ;
+標定 < hyoutei\ ;
+横奪 < oudatsu\ ;
+白子 < shiroko\ ;
+再告 < saikoku\ ;
+軍楽 < gungaku\ ;
+山芋 < yamaimo\ ;
+帝京 < teikyou\ ;
+輻射 < fukusha\ ;
+入声 < nisshou\ ;
+授産所 < jusanjo\ ;
+駆動機 < kudouki\ ;
+密雲 < mitsuun\ ;
+二箇所 < nikasho\ ;
+傾注 < keichuu\ ;
+入墨 < irezumi\ ;
+密集 < misshuu\ ;
+違犯者 < ihansha\ ;
+自画像 < jigazou\ ;
+色柄 < irogara\ ;
+形意拳 < keiiken\ ;
+背高 < seitaka\ ;
+将軍 < shougun\ ;
+概況 < gaikyou\ ;
+全域 < zen''iki\ ;
+母性愛 < boseiai\ ;
+井戸側 < idogawa\ ;
+山腹 < sanpuku\ ;
+先学 < sengaku\ ;
+脚部 < kyakubu\ ;
+胴長 < dounaga\ ;
+僧服 < soufuku\ ;
+再勝 < saishou\ ;
+腹蔵 < fukuzou\ ;
+良材 < ryouzai\ ;
+低額 < teigaku\ ;
+魚拓 < gyotaku\ ;
+輔弼 < hohitsu\ ;
+全国 < zengoku\ ;
+良書 < ryousho\ ;
+宰領 < sairyou\ ;
+白太 < shirata\ ;
+白夜 < byakuya\ ;
+蹴爪 < kedzume\ ;
+赤錆 < akasabi\ ;
+入団 < nyuudan\ ;
+工博 < kouhaku\ ;
+差別 < sabetsu\ ;
+冪乗 < bekijou\ ;
+軍服 < gunpuku\ ;
+甲胄 < katchuu\ ;
+自発 < jihatsu\ ;
+畢竟 < hikkyou\ ;
+校閲 < kouetsu\ ;
+疎略 < soryaku\ ;
+岩礁 < ganshou\ ;
+傷歎 < shoutan\ ;
+色文 < irobumi\ ;
+破砕機 < hasaiki\ ;
+首領 < shuryou\ ;
+違警罪 < ikeizai\ ;
+希土類 < kidorui\ ;
+赤金 < akagane\ ;
+驕肆 < kyoushi\ ;
+学齢 < gakurei\ ;
+宵闇 < yoiyami\ ;
+小論 < shouron\ ;
+亜鉛引 < aenbiki\ ;
+太宰府 < dazaifu\ ;
+岩石 < ganseki\ ;
+腹芸 < haragei\ ;
+白地 < shiroji\ ;
+核酸 < kakusan\ ;
+六合 < rikugou\ ;
+船歌 < funauta\ ;
+対象 < taishou\ ;
+騰落 < touraku\ ;
+偏癖 < henpeki\ ;
+典則 < tensoku\ ;
+棒縞 < boujima\ ;
+伊達者 < datesha\ ;
+六十 < rokujuu\ ;
+赤道 < sekidou\ ;
+生肉 < seiniku\ ;
+送話器 < souwaki\ ;
+植皮 < shokuhi\ ;
+実需 < jitsuju\ ;
+免囚 < menshuu\ ;
+伴天連 < bateren\ ;
+駆逐 < kuchiku\ ;
+亜麻布 < amanuno\ ;
+駐車 < chuusha\ ;
+株金 < kabukin\ ;
+自玉 < jigyoku\ ;
+女郎屋 < jorouya\ ;
+宿銭 < yadosen\ ;
+首長 < shuchou\ ;
+腹背 < fukuhai\ ;
+噴霧器 < funmuki\ ;
+病死 < byoushi\ ;
+射角 < shakaku\ ;
+英単語 < eitango\ ;
+客間 < kyakuma\ ;
+工作 < kousaku\ ;
+儀式 < gishiki\ ;
+田紳 < denshin\ ;
+対訳 < taiyaku\ ;
+赤軍 < sekigun\ ;
+脂身 < aburami\ ;
+峡湾 < kyouwan\ ;
+軍拡 < gunkaku\ ;
+百味 < hyakumi\ ;
+荷馬車 < nibasha\ ;
+擬態語 < gitaigo\ ;
+対角 < taikaku\ ;
+柱面 < chuumen\ ;
+巨乳 < kyonyuu\ ;
+異邦人 < ihoujin\ ;
+画筆 < gahitsu\ ;
+供覧 < kyouran\ ;
+怪我人 < keganin\ ;
+寸評 < sunpyou\ ;
+内中 < uchijuu\ ;
+効果音 < koukaon\ ;
+密通 < mittsuu\ ;
+倶発 < guhatsu\ ;
+公僕 < kouboku\ ;
+体量 < tairyou\ ;
+墓碑銘 < bohimei\ ;
+宗門 < shuumon\ ;
+臆病 < okubyou\ ;
+全優 < zen''yuu\ ;
+飛行家 < hikouka\ ;
+略画 < ryakuga\ ;
+俸給 < houkyuu\ ;
+宿運 < shukuun\ ;
+船板 < funaita\ ;
+俊英 < shun''ei\ ;
+芳墨 < houboku\ ;
+百匁 < hyakume\ ;
+生絹 < suzushi\ ;
+軟弱 < nanjaku\ ;
+休館 < kyuukan\ ;
+密輸 < mitsuyu\ ;
+党則 < tousoku\ ;
+修繕 < shuuzen\ ;
+休養 < kyuuyou\ ;
+榴弾 < ryuudan\ ;
+山積 < sanseki\ ;
+舶来 < hakurai\ ;
+赤貧 < sekihin\ ;
+英傑 < eiketsu\ ;
+極暑 < gokusho\ ;
+病棟 < byoutou\ ;
+火熨斗 < hinoshi\ ;
+肌骨 < kikotsu\ ;
+良性 < ryousei\ ;
+足芸 < ashigei\ ;
+腸線 < chousen\ ;
+輪唱 < rinshou\ ;
+偉物 < eramono\ ;
+白刃 < hakujin\ ;
+侮蔑 < bubetsu\ ;
+若党 < wakatou\ ;
+病根 < byoukon\ ;
+会集 < kaishuu\ ;
+屑糸 < kuzuito\ ;
+梟罪 < kyouzai\ ;
+白兵 < hakuhei\ ;
+低速 < teisoku\ ;
+入会 < nyuukai\ ;
+屑米 < kuzumai\ ;
+軽妙 < keimyou\ ;
+自滅 < jimetsu\ ;
+休電 < kyuuden\ ;
+島根 < shimane\ ;
+学風 < gakufuu\ ;
+僵屍 < kyonshi\ ;
+先刻 < senkoku\ ;
+優位性 < yuuisei\ ;
+肉饅 < nikuman\ ;
+併読 < heidoku\ ;
+馬跳 < umatobi\ ;
+転属 < tenzoku\ ;
+赤誠 < sekisei\ ;
+良師 < ryoushi\ ;
+会長 < kaichou\ ;
+格言 < kakugen\ ;
+駁論 < bakuron\ ;
+無趣味 < mushumi\ ;
+過現未 < kagenmi\ ;
+元凶 < genkyou\ ;
+肉類 < nikurui\ ;
+疼木 < hiiragi\ ;
+転宅 < tentaku\ ;
+栄達 < eitatsu\ ;
+転学 < tengaku\ ;
+自活 < jikatsu\ ;
+俸禄 < houroku\ ;
+若人 < wakoudo\ ;
+楽才 < gakusai\ ;
+密議 < mitsugi\ ;
+香車 < kyousha\ ;
+俗累 < zokurui\ ;
+長椅子 < nagaisu\ ;
+聾唖者 < rouasha\ ;
+停泊 < teihaku\ ;
+楊柳 < youryuu\ ;
+小舅 < kojuuto\ ;
+自決 < jiketsu\ ;
+百事 < hyakuji\ ;
+密語 < mitsugo\ ;
+胸襟 < kyoukin\ ;
+尿管 < nyoukan\ ;
+鬱屈 < ukkutsu\ ;
+軍属 < gunzoku\ ;
+文字盤 < mojiban\ ;
+痛憤 < tsuufun\ ;
+五十音 < gojuuon\ ;
+山番 < yamaban\ ;
+楽想 < gakusou\ ;
+自殺 < jisatsu\ ;
+脱臼 < dakkyuu\ ;
+首足 < shusoku\ ;
+脱臭 < dasshuu\ ;
+軍将 < gunshou\ ;
+傷悴 < shousui\ ;
+偏流 < henryuu\ ;
+脳膜 < noumaku\ ;
+現高 < gendaka\ ;
+臣民 < shinmin\ ;
+鬼婆 < onibaba\ ;
+作詩 < sakushi\ ;
+脱腸 < datchou\ ;
+宅配 < takuhai\ ;
+休錘 < kyuusui\ ;
+田畑 < denpata\ ;
+痛恨 < tsuukon\ ;
+至極 < shigoku\ ;
+極悪 < gokuaku\ ;
+安逸 < an''itsu\ ;
+天婦羅 < tenpura\ ;
+僻地 < hekichi\ ;
+僻在 < hekizai\ ;
+定跡 < jouseki\ ;
+輪作 < rinsaku\ ;
+岩波 < iwanami\ ;
+峻拒 < shunkyo\ ;
+良妻 < ryousai\ ;
+臆測 < okusoku\ ;
+産痛 < santsuu\ ;
+寝道具 < nedougu\ ;
+職階 < shokkai\ ;
+畝溝 < unemizo\ ;
+極微 < kyokubi\ ;
+異分子 < ibunshi\ ;
+膜状 < makujou\ ;
+甘皮 < amakawa\ ;
+赤蕪 < akakabu\ ;
+山犬 < yamainu\ ;
+俊童 < shundou\ ;
+楽師 < gakushi\ ;
+桑色 < kuwairo\ ;
+腕章 < wanshou\ ;
+馬術 < bajutsu\ ;
+病態 < byoutai\ ;
+腕立 < udetate\ ;
+腹癒 < haraise\ ;
+舞扇 < maiougi\ ;
+寮舎 < ryousha\ ;
+極度 < kyokudo\ ;
+偕楽 < kairaku\ ;
+球面 < kyuumen\ ;
+小編 < shouhen\ ;
+自販機 < jihanki\ ;
+病患 < byoukan\ ;
+客語 < kyakugo\ ;
+枕頭 < chintou\ ;
+極左 < kyokusa\ ;
+瓢箪 < hyoutan\ ;
+八重垣 < yaegaki\ ;
+芸事 < geigoto\ ;
+植樹 < shokuju\ ;
+実話 < jitsuwa\ ;
+疾患 < shikkan\ ;
+無価値 < mukachi\ ;
+桃色 < momoiro\ ;
+検校 < kengyou\ ;
+実証 < jisshou\ ;
+今頃 < imagoro\ ;
+腰痛 < youtsuu\ ;
+小粒 < kotsubu\ ;
+業師 < wazashi\ ;
+花代 < hanadai\ ;
+客観 < kyakkan\ ;
+俗眼 < zokugan\ ;
+使臣 < shishin\ ;
+寒菊 < kangiku\ ;
+人事院 < jinjiin\ ;
+休載 < kyuusai\ ;
+尻目 < shirime\ ;
+定評 < teihyou\ ;
+休転 < kyuuten\ ;
+病弊 < byouhei\ ;
+傷害 < shougai\ ;
+定訳 < teiyaku\ ;
+軍国 < gunkoku\ ;
+魔力 < maryoku\ ;
+検束 < kensoku\ ;
+不夜城 < fuyajou\ ;
+居留 < kyoryuu\ ;
+美丈夫 < bijoufu\ ;
+荏胡麻油 < egomayu\ ;
+岩棚 < iwadana\ ;
+仏陀 < butsuda\ ;
+害虫 < gaichuu\ ;
+就眠 < shuumin\ ;
+脇能 < wakinou\ ;
+億兆 < okuchou\ ;
+病巣 < byousou\ ;
+赤膚 < akahada\ ;
+小童 < kowappa\ ;
+仏閣 < bukkaku\ ;
+易損品 < isonhin\ ;
+仏間 < butsuma\ ;
+赤腹 < akahara\ ;
+尼僧院 < nisouin\ ;
+腎石 < jinseki\ ;
+良品 < ryouhin\ ;
+胃袋 < ibukuro\ ;
+無理数 < murisuu\ ;
+峻嶺 < shunrei\ ;
+儒仏 < jubutsu\ ;
+魅力 < miryoku\ ;
+貸間 < kashima\ ;
+胸臆 < kyouoku\ ;
+無韻詩 < muinshi\ ;
+魚信 < gyoshin\ ;
+腕白 < wanpaku\ ;
+多様化 < tayouka\ ;
+胸腺 < kyousen\ ;
+京風 < kyoufuu\ ;
+楽天 < rakuten\ ;
+良友 < ryouyuu\ ;
+脱穀 < dakkoku\ ;
+班長 < hanchou\ ;
+伝誦 < denshou\ ;
+尊称 < sonshou\ ;
+偃月 < engetsu\ ;
+対策 < taisaku\ ;
+借款 < shakkan\ ;
+楽壇 < gakudan\ ;
+便益 < ben''eki\ ;
+会読 < kaidoku\ ;
+棺桶 < kan''oke\ ;
+低落 < teiraku\ ;
+病害 < byougai\ ;
+偉方 < eragata\ ;
+皮膚科医 < hifukai\ ;
+界標 < kaihyou\ ;
+賃銭 < chinsen\ ;
+佞臣 < neishin\ ;
+余色 < yoshoku\ ;
+飲食 < inshoku\ ;
+屋根裏 < yaneura\ ;
+傾国 < keikoku\ ;
+暴風雨 < boufuuu\ ;
+係留 < keiryuu\ ;
+男気 < otokogi\ ;
+楓属 < fuuzoku\ ;
+胃薬 < igusuri\ ;
+仙郷 < senkyou\ ;
+栗色 < kuriiro\ ;
+購読 < koudoku\ ;
+生理日 < seiribi\ ;
+車力 < shariki\ ;
+分限者 < bugenja\ ;
+臥所 < fushido\ ;
+体臭 < taishuu\ ;
+馬脚 < bakyaku\ ;
+寸秒 < sunbyou\ ;
+人事部 < jinjibu\ ;
+起筆 < kihitsu\ ;
+駐米 < chuubei\ ;
+乾魚 < hoshiuo\ ;
+鸚鵡貝 < oumugai\ ;
+肝要 < kan''you\ ;
+森林 < shinrin\ ;
+赤組 < akagumi\ ;
+転任 < ten''nin\ ;
+格納 < kakunou\ ;
+小癪 < koshaku\ ;
+赤紙 < akagami\ ;
+驚歎 < kyoutan\ ;
+起立 < kiritsu\ ;
+一丁字 < itteiji\ ;
+作者 < sakusha\ ;
+食餌 < shokuji\ ;
+腸満 < chouman\ ;
+仲買 < nakagai\ ;
+分離派 < bunriha\ ;
+小細工 < kozaiku\ ;
+病変 < byouhen\ ;
+暗号化 < angouka\ ;
+僥倖 < gyoukou\ ;
+賠責 < baiseki\ ;
+賞賛 < shousan\ ;
+尊皇 < son''nou\ ;
+玄麦 < genbaku\ ;
+脈管 < myakkan\ ;
+枢軸 < suujiku\ ;
+舞姫 < maihime\ ;
+痛嘆 < tsuutan\ ;
+尨犬 < mukuinu\ ;
+棟梁 < touryou\ ;
+右往左往 < uousaou\ ;
+印度洋 < indoyou\ ;
+塩素酸 < ensosan\ ;
+屠殺 < tosatsu\ ;
+賊軍 < zokugun\ ;
+腸液 < choueki\ ;
+舎宅 < shataku\ ;
+身命 < shinmei\ ;
+依頼人 < irainin\ ;
+疫学 < ekigaku\ ;
+小町 < komachi\ ;
+小男 < kootoko\ ;
+腰湯 < koshiyu\ ;
+射的 < shateki\ ;
+脳病 < noubyou\ ;
+小生 < shousei\ ;
+父母会 < fubokai\ ;
+山椒 < sanshou\ ;
+佳節 < kasetsu\ ;
+今週 < konshuu\ ;
+聖週 < seishuu\ ;
+飲酒家 < inshuka\ ;
+不認可 < funinka\ ;
+低翼 < teiyoku\ ;
+色事 < irogoto\ ;
+柿色 < kakiiro\ ;
+田楽 < dengaku\ ;
+今迄 < imamade\ ;
+乾飯 < hoshiii\ ;
+良人 < ryoujin\ ;
+宿縁 < shukuen\ ;
+臣従 < shinjuu\ ;
+腹水 < fukusui\ ;
+跋渉 < basshou\ ;
+町村 < chouson\ ;
+倒木 < touboku\ ;
+慰労会 < iroukai\ ;
+臨席 < rinseki\ ;
+修正 < shuusei\ ;
+木魚 < mokugyo\ ;
+豆腐屋 < toufuya\ ;
+高声 < takagoe\ ;
+併称 < heishou\ ;
+分離機 < bunriki\ ;
+概則 < gaisoku\ ;
+耐震 < taishin\ ;
+栄職 < eishoku\ ;
+仏跡 < busseki\ ;
+火炎瓶 < kaenbin\ ;
+貫通 < kantsuu\ ;
+聖蹟 < seiseki\ ;
+島国 < tougoku\ ;
+産業 < sangyou\ ;
+腰気 < koshike\ ;
+傷創 < shousou\ ;
+食間 < shokkan\ ;
+御多分 < gotabun\ ;
+仮親 < karioya\ ;
+育苗 < ikubyou\ ;
+官能 < kan''nou\ ;
+賃貸 < chintai\ ;
+岡惚 < okabore\ ;
+枝豆 < edamame\ ;
+聴許 < choukyo\ ;
+生業 < nariwai\ ;
+代読 < daidoku\ ;
+現象 < genshou\ ;
+実習 < jisshuu\ ;
+仲裁 < chuusai\ ;
+小爪 < kodzume\ ;
+疎密 < somitsu\ ;
+聴解 < choukai\ ;
+貧農 < hin''nou\ ;
+臨時費 < rinjihi\ ;
+代診 < daishin\ ;
+聴視 < choushi\ ;
+属格 < zokkaku\ ;
+傷兵 < shouhei\ ;
+楽典 < gakuten\ ;
+画数 < kakusuu\ ;
+膺懲 < youchou\ ;
+倍旧 < baikyuu\ ;
+大太鼓 < oodaiko\ ;
+高圧 < kouatsu\ ;
+町政 < chousei\ ;
+極刑 < kyokkei\ ;
+如何程 < ikahodo\ ;
+牡牛座 < oushiza\ ;
+病名 < byoumei\ ;
+加工費 < kakouhi\ ;
+梶棒 < kajibou\ ;
+極冠 < kyokkan\ ;
+極内 < gokunai\ ;
+病友 < byouyuu\ ;
+骰子 < saikoro\ ;
+岡引 < okahiki\ ;
+傴僂 < semushi\ ;
+朱鞘 < shuzaya\ ;
+人事課 < jinjika\ ;
+実績 < jisseki\ ;
+病原 < byougen\ ;
+極光 < kyokkou\ ;
+亨通 < koutsuu\ ;
+本領 < honryou\ ;
+人跡 < hitoato\ ;
+付設 < fusetsu\ ;
+首級 < shukyuu\ ;
+供物 < kumotsu\ ;
+峻厳 < shungen\ ;
+象限 < shougen\ ;
+身体 < shintai\ ;
+至妙 < shimyou\ ;
+甘栗 < amaguri\ ;
+仕訳 < shiwake\ ;
+躍動 < yakudou\ ;
+代表 < daihyou\ ;
+野良犬 < norainu\ ;
+病勢 < byousei\ ;
+容積 < youseki\ ;
+仏語 < butsugo\ ;
+腰椎 < youtsui\ ;
+身代 < shindai\ ;
+日本間 < nihonma\ ;
+玉音 < gyokuon\ ;
+大豆油 < daizuyu\ ;
+寓目 < guumoku\ ;
+来週 < raishuu\ ;
+船側 < sensoku\ ;
+本震 < honshin\ ;
+木靴 < kigutsu\ ;
+香箱 < koubako\ ;
+朝風 < asakaze\ ;
+児童画 < jidouga\ ;
+演舞場 < enbujou\ ;
+岩山 < iwayama\ ;
+楽人 < gakujin\ ;
+豆類 < mamerui\ ;
+官給 < kankyuu\ ;
+玉露 < gyokuro\ ;
+船便 < funabin\ ;
+催促 < saisoku\ ;
+生新 < seishin\ ;
+超然 < chouzen\ ;
+伝習 < denshuu\ ;
+留年 < ryuunen\ ;
+贅肉 < zeiniku\ ;
+高台 < takadai\ ;
+岩室 < iwamuro\ ;
+俵数 < hyousuu\ ;
+学芸 < gakugei\ ;
+男手 < otokode\ ;
+似非事 < esegoto\ ;
+梅毒 < baidoku\ ;
+不結果 < fukekka\ ;
+朝靄 < asamoya\ ;
+屈服 < kuppuku\ ;
+朝霧 < asagiri\ ;
+肌色 < hadairo\ ;
+学舎 < gakusha\ ;
+極上 < gokujou\ ;
+症候 < shoukou\ ;
+船中 < senchuu\ ;
+肉色 < nikuiro\ ;
+修改 < shuukai\ ;
+岸壁 < ganpeki\ ;
+人証 < ninshou\ ;
+略字 < ryakuji\ ;
+修撰 < shuusen\ ;
+地下化 < chikaka\ ;
+伏罪 < fukuzai\ ;
+密画 < mitsuga\ ;
+八百長 < yaochou\ ;
+餡蜜 < anmitsu\ ;
+耽読 < tandoku\ ;
+肉腫 < nikushu\ ;
+俗書 < zokusho\ ;
+老醜 < roushuu\ ;
+驕慢 < kyouman\ ;
+倔強 < kukkyou\ ;
+病人 < byounin\ ;
+偏執 < henshuu\ ;
+過飽和 < kahouwa\ ;
+乳酸 < nyuusan\ ;
+佯狂 < youkyou\ ;
+曳馬 < hikiuma\ ;
+対流 < tairyuu\ ;
+顔黒 < ganguro\ ;
+伏縫 < fusenui\ ;
+曲馬 < kyokuba\ ;
+赤燐 < sekirin\ ;
+傑作 < kessaku\ ;
+瑞祥 < zuishou\ ;
+伏線 < fukusen\ ;
+傀儡 < kugutsu\ ;
+珍談 < chindan\ ;
+俗文 < zokubun\ ;
+倒幕 < toubaku\ ;
+家畜 < kachiku\ ;
+中飯 < chuuhan\ ;
+球菌 < kyuukin\ ;
+早少女 < saotome\ ;
+中風 < chuubuu\ ;
+風鎮 < fuuchin\ ;
+借屋 < shakuya\ ;
+島中 < touchuu\ ;
+宝石 < houseki\ ;
+胆石 < tanseki\ ;
+山師 < yamashi\ ;
+木金 < mokukin\ ;
+如何物 < ikamono\ ;
+属性 < zokusei\ ;
+来診 < raishin\ ;
+版画家 < hangaka\ ;
+便服 < benpuku\ ;
+亡親 < boushin\ ;
+仕草 < shigusa\ ;
+九重 < kokonoe\ ;
+俊敏 < shunbin\ ;
+踊字 < odoriji\ ;
+山峡 < yamakai\ ;
+赤潮 < akashio\ ;
+学級 < gakkyuu\ ;
+略図 < ryakuzu\ ;
+両頭 < ryoutou\ ;
+尚更 < naosara\ ;
+中隊 < chuutai\ ;
+木造 < mokuzou\ ;
+伝票 < denpyou\ ;
+朝酒 < asazake\ ;
+寂然 < sekizen\ ;
+専業 < sengyou\ ;
+跡形 < atokata\ ;
+偶作 < guusaku\ ;
+小柄 < kodzuka\ ;
+聴罪 < chouzai\ ;
+余熱 < yonetsu\ ;
+両面 < ryoumen\ ;
+信愛 < shin''ai\ ;
+俗才 < zokusai\ ;
+存続 < sonzoku\ ;
+望郷 < boukyou\ ;
+宝生 < houshou\ ;
+美髪 < bihatsu\ ;
+中間 < chuukan\ ;
+一髪 < ippatsu\ ;
+仲継 < chuukei\ ;
+安着 < anchaku\ ;
+季節 < kisetsu\ ;
+愛飲者 < aiinsha\ ;
+二親 < futaoya\ ;
+豚足 < tonsoku\ ;
+余烈 < yoretsu\ ;
+松葉 < matsuba\ ;
+安直 < anchoku\ ;
+風速 < fuusoku\ ;
+顎髭 < agohige\ ;
+翼賛 < yokusan\ ;
+属島 < zokutou\ ;
+肺病 < haibyou\ ;
+実理 < jitsuri\ ;
+学童 < gakudou\ ;
+安定器 < anteiki\ ;
+棋客 < kikyaku\ ;
+末路 < matsuro\ ;
+駄菓子 < dagashi\ ;
+将来 < shourai\ ;
+了解 < ryoukai\ ;
+畑地 < hatachi\ ;
+男娼 < danshou\ ;
+孤立 < koritsu\ ;
+唐胡麻 < tougoma\ ;
+腹帯 < fukutai\ ;
+俗情 < zokujou\ ;
+了見 < ryouken\ ;
+丸鋼 < marukou\ ;
+俊才 < shunsai\ ;
+停音符 < teionpu\ ;
+俗悪 < zokuaku\ ;
+職組 < shokuso\ ;
+群集 < gunshuu\ ;
+群雄 < gun''yuu\ ;
+山姥 < yamauba\ ;
+上顎 < jougaku\ ;
+寝殿 < shinden\ ;
+少数 < shousuu\ ;
+園芸家 < engeika\ ;
+小斎 < shousai\ ;
+投影機 < toueiki\ ;
+脂気 < aburake\ ;
+尽忠 < jinchuu\ ;
+英吉利 < igirisu\ ;
+条虫 < jouchuu\ ;
+略叙 < ryakujo\ ;
+美食 < bishoku\ ;
+山奥 < yamaoku\ ;
+珍蔵 < chinzou\ ;
+無声音 < museion\ ;
+俗念 < zokunen\ ;
+格段 < kakudan\ ;
+一食 < isshoku\ ;
+獄門 < gokumon\ ;
+唐茄子 < tounasu\ ;
+日本語 < nihongo\ ;
+乱調 < ranchou\ ;
+人臣 < jinshin\ ;
+一類 < ichirui\ ;
+乱読 < randoku\ ;
+亀裂 < kiretsu\ ;
+胸水 < kyousui\ ;
+枠線 < wakusen\ ;
+休眠 < kyuumin\ ;
+臨休 < rinkyuu\ ;
+従三位 < jusanmi\ ;
+婦女子 < fujoshi\ ;
+伏目 < fushime\ ;
+万難 < ban''nan\ ;
+屎尿 < shinyou\ ;
+上陸 < jouriku\ ;
+尺度 < shakudo\ ;
+万障 < banshou\ ;
+最適 < saiteki\ ;
+就役 < shuueki\ ;
+一面 < ichimen\ ;
+対敵 < taiteki\ ;
+工事費 < koujihi\ ;
+温度計 < ondokei\ ;
+仏縁 < butsuen\ ;
+仕組 < shikumi\ ;
+桐材 < kirizai\ ;
+射撃 < shageki\ ;
+安定化 < anteika\ ;
+一雨 < hitoame\ ;
+柱状 < chuujou\ ;
+作況 < sakkyou\ ;
+一難 < ichinan\ ;
+山地 < yamachi\ ;
+法螺貝 < horagai\ ;
+胴欲 < douyoku\ ;
+額面 < gakumen\ ;
+珍芸 < chingei\ ;
+森厳 < shingen\ ;
+男囚 < danshuu\ ;
+梯子 < hashigo\ ;
+枕絵 < makurae\ ;
+番傘 < bangasa\ ;
+非常時 < hijouji\ ;
+一陣 < ichijin\ ;
+仏経 < bukkyou\ ;
+頬髭 < hoohige\ ;
+未設 < misetsu\ ;
+略儀 < ryakugi\ ;
+主軸 < shujiku\ ;
+頬骨 < hoobone\ ;
+乱行 < rangyou\ ;
+肉眼 < nikugan\ ;
+中道 < chuudou\ ;
+客演 < kyakuen\ ;
+完熟 < kanjuku\ ;
+一門 < ichimon\ ;
+暗鬱 < an''utsu\ ;
+八千代 < yachiyo\ ;
+植付 < uetsuke\ ;
+理窟 < rikutsu\ ;
+実演 < jitsuen\ ;
+尼寺 < amadera\ ;
+中農 < chuunou\ ;
+村落 < sonraku\ ;
+末裔 < matsuei\ ;
+尺寸 < sekisun\ ;
+木製 < mokusei\ ;
+佗歌 < wabiuta\ ;
+修士 < shuushi\ ;
+風評 < fuuhyou\ ;
+番人 < ban''nin\ ;
+害毒 < gaidoku\ ;
+朗読 < roudoku\ ;
+実測 < jissoku\ ;
+生垣 < ikegaki\ ;
+属国 < zokkoku\ ;
+五色 < goshoku\ ;
+赤札 < akafuda\ ;
+不細工 < busaiku\ ;
+板締 < itajime\ ;
+珍聞 < chinbun\ ;
+余水路 < yosuiro\ ;
+町名 < choumei\ ;
+朝見 < chouken\ ;
+暮雪 < bosetsu\ ;
+佳月 < kagetsu\ ;
+肉界 < nikukai\ ;
+来聴 < raichou\ ;
+任用 < nin''you\ ;
+胸板 < munaita\ ;
+信奉 < shinpou\ ;
+板紙 < itagami\ ;
+二色 < nishoku\ ;
+駐支 < chuushi\ ;
+曲路 < kyokuro\ ;
+少弟 < shoutei\ ;
+相違点 < souiten\ ;
+両輪 < ryourin\ ;
+木蝋 < mokurou\ ;
+一錠 < ichijou\ ;
+実況 < jikkyou\ ;
+赤旗 < akahata\ ;
+係属 < keizoku\ ;
+両軍 < ryougun\ ;
+胎毒 < taidoku\ ;
+留任 < ryuunin\ ;
+朽葉 < kuchiba\ ;
+曼荼羅 < mandara\ ;
+山勘 < yamakan\ ;
+少年 < shounen\ ;
+今程 < imahodo\ ;
+駒損 < komason\ ;
+罪障 < zaishou\ ;
+小店 < shouten\ ;
+地雷火 < jiraika\ ;
+公務員 < koumuin\ ;
+宿根 < shukkon\ ;
+月評 < geppyou\ ;
+案山子 < kakashi\ ;
+下部 < shimobe\ ;
+束群 < sokugun\ ;
+実母 < jitsubo\ ;
+不達 < futatsu\ ;
+古代語 < kodaigo\ ;
+生一本 < kiippon\ ;
+下達 < katatsu\ ;
+飛脚 < hikyaku\ ;
+町内 < chounai\ ;
+月見 < tsukimi\ ;
+俗塵 < zokujin\ ;
+個別 < kobetsu\ ;
+属名 < zokumei\ ;
+付着 < fuchaku\ ;
+上進 < joushin\ ;
+猟銃 < ryoujuu\ ;
+交絡 < kouraku\ ;
+何某 < nanibou\ ;
+身贔屓 < mibiiki\ ;
+仕着 < shikise\ ;
+木蔦 < kidzuta\ ;
+肉片 < nikuhen\ ;
+男優 < dan''yuu\ ;
+木蓮 < mokuren\ ;
+未整理 < miseiri\ ;
+予科生 < yokasei\ ;
+曲譜 < kyokufu\ ;
+肥溜 < koedame\ ;
+賞玩 < shougan\ ;
+借人 < karinin\ ;
+俊士 < shunshi\ ;
+書評 < shohyou\ ;
+密教 < mikkyou\ ;
+一道 < ichidou\ ;
+一遇 < ichiguu\ ;
+書証 < shoshou\ ;
+貫禄 < kanroku\ ;
+未経過 < mikeika\ ;
+越年 < etsunen\ ;
+一連 < ichiren\ ;
+三軸 < sanjiku\ ;
+老臣 < roushin\ ;
+条約 < jouyaku\ ;
+豆蔵 < mamezou\ ;
+余日 < yojitsu\ ;
+球界 < kyuukai\ ;
+作文 < sakubun\ ;
+海松貝 < mirugai\ ;
+低木 < teiboku\ ;
+馬方 < umakata\ ;
+乱臣 < ranshin\ ;
+何時 < nandoki\ ;
+赤手 < sekishu\ ;
+倒伏 < toufuku\ ;
+曲解 < kyokkai\ ;
+一輪 < ichirin\ ;
+尊容 < son''you\ ;
+上足 < jousoku\ ;
+両論 < ryouron\ ;
+一軍 < ichigun\ ;
+町人 < chounin\ ;
+上越 < jouetsu\ ;
+局員 < kyokuin\ ;
+専属 < senzoku\ ;
+何故 < naniyue\ ;
+介病 < kaibyou\ ;
+仏画 < butsuga\ ;
+脱字 < datsuji\ ;
+猛追 < moutsui\ ;
+贅沢 < zeitaku\ ;
+信号 < shingou\ ;
+田作 < densaku\ ;
+兵児帯 < hekoobi\ ;
+山中 < sanchuu\ ;
+本腹 < honpuku\ ;
+五節 < gosetsu\ ;
+主虹 < shuniji\ ;
+並製 < namisei\ ;
+甚六 < jinroku\ ;
+赤恥 < akahaji\ ;
+身奇麗 < migirei\ ;
+朱肉 < shuniku\ ;
+余接 < yosetsu\ ;
+検査員 < kensain\ ;
+甲乙 < kouotsu\ ;
+井筒 < idzutsu\ ;
+本能 < hon''nou\ ;
+瑣末 < samatsu\ ;
+人皇 < nin''nou\ ;
+人的 < jinteki\ ;
+脆弱 < zeijaku\ ;
+饑渇 < kikatsu\ ;
+主薬 < shuyaku\ ;
+危機感 < kikikan\ ;
+赤茄子 < akanasu\ ;
+官有 < kan''yuu\ ;
+他物 < tabutsu\ ;
+羽虫 < hamushi\ ;
+産休 < sankyuu\ ;
+作戦 < sakusen\ ;
+伯林 < berurin\ ;
+背教 < haikyou\ ;
+豊胸 < houkyou\ ;
+柳条 < ryuujou\ ;
+端武者 < hamusha\ ;
+生乳 < seinyuu\ ;
+印度人 < indojin\ ;
+内安打 < naianda\ ;
+肉池 < nikuchi\ ;
+三角 < sankaku\ ;
+下見 < shitami\ ;
+伏樋 < fusedoi\ ;
+肉汁 < nikujuu\ ;
+屋根板 < yaneita\ ;
+無期刑 < mukikei\ ;
+玄翁 < gen''nou\ ;
+記念碑 < kinenhi\ ;
+一説 < issetsu\ ;
+駐屯 < chuuton\ ;
+就労 < shuurou\ ;
+買物 < kaimono\ ;
+都市化 < toshika\ ;
+居候 < isourou\ ;
+服膺 < fukuyou\ ;
+枯渇 < kokatsu\ ;
+風習 < fuushuu\ ;
+乗羃 < joubeki\ ;
+屈伸 < kusshin\ ;
+俗僧 < zokusou\ ;
+府知事 < fuchiji\ ;
+内耳炎 < naijien\ ;
+本給 < honkyuu\ ;
+中葉 < chuuyou\ ;
+罪跡 < zaiseki\ ;
+飛礫 < tsubute\ ;
+条目 < joumoku\ ;
+一覧 < ichiran\ ;
+密度 < mitsudo\ ;
+上表 < jouhyou\ ;
+北京語 < pekingo\ ;
+下血 < geketsu\ ;
+足労 < sokurou\ ;
+小善 < shouzen\ ;
+仮決 < kaketsu\ ;
+井目 < seimoku\ ;
+尚又 < naomata\ ;
+犬小屋 < inugoya\ ;
+暗躍 < an''yaku\ ;
+彼岸会 < higan''e\ ;
+貨物 < kamotsu\ ;
+実技 < jitsugi\ ;
+本籤 < honkuji\ ;
+脱営 < datsuei\ ;
+体得 < taitoku\ ;
+本籍 < honseki\ ;
+小品 < shouhin\ ;
+有職 < yuusoku\ ;
+佳客 < kakyaku\ ;
+美術 < bijutsu\ ;
+赤子 < sekishi\ ;
+害心 < gaishin\ ;
+昼餐 < chuusan\ ;
+二着 < nichaku\ ;
+相弟子 < aideshi\ ;
+俗伝 < zokuden\ ;
+核子 < kakushi\ ;
+本箱 < honbako\ ;
+二直 < nichoku\ ;
+馬市 < umaichi\ ;
+何年 < nan''nen\ ;
+小口 < koguchi\ ;
+松煤 < shoubai\ ;
+本筋 < honsuji\ ;
+東独 < toudoku\ ;
+獣肉 < juuniku\ ;
+二百 < nihyaku\ ;
+曲舞 < kusemai\ ;
+珍獣 < chinjuu\ ;
+本章 < honshou\ ;
+主翼 < shuyoku\ ;
+群落 < gunraku\ ;
+飴玉 < amedama\ ;
+耄碌 < mouroku\ ;
+宮廷 < kyuutei\ ;
+就任 < shuunin\ ;
+妙齢 < myourei\ ;
+時雨 < shigure\ ;
+木立 < kodachi\ ;
+王立 < ouritsu\ ;
+小勇 < shouyuu\ ;
+職権 < shokken\ ;
+寄宿 < kishuku\ ;
+鳳凰座 < hououza\ ;
+背徳 < haitoku\ ;
+格外 < kakugai\ ;
+咽頭炎 < intouen\ ;
+上蔟 < jouzoku\ ;
+中背 < chuuzei\ ;
+赤外 < sekigai\ ;
+両舷 < ryougen\ ;
+季末 < kimatsu\ ;
+松濤 < shoutou\ ;
+柄杓 < hishaku\ ;
+独走 < dokusou\ ;
+投影図 < toueizu\ ;
+玉稿 < gyokkou\ ;
+便侫 < ben''nei\ ;
+不衛生 < fueisei\ ;
+他殺 < tasatsu\ ;
+下葉 < shitaba\ ;
+足代 < ashidai\ ;
+中老 < chuurou\ ;
+月給 < gekkyuu\ ;
+駐在 < chuuzai\ ;
+両腕 < ryouude\ ;
+獄舎 < gokusha\ ;
+導入 < dounyuu\ ;
+整理部 < seiribu\ ;
+入母屋 < irimoya\ ;
+乙種 < otsushu\ ;
+牝鶏 < mendori\ ;
+多趣味 < tashumi\ ;
+孟春 < moushun\ ;
+供勢 < tomozei\ ;
+審問 < shinmon\ ;
+介殻 < kaikaku\ ;
+一葉 < ichiyou\ ;
+最終 < saishuu\ ;
+乳癌 < nyuugan\ ;
+耽溺 < tandeki\ ;
+住宅 < juutaku\ ;
+超勤 < choukin\ ;
+老病 < roubyou\ ;
+賓格 < hinkaku\ ;
+朝礼 < chourei\ ;
+音記号 < onkigou\ ;
+小便 < shonben\ ;
+封入 < fuunyuu\ ;
+春雷 < shunrai\ ;
+小坊主 < kobouzu\ ;
+中編 < chuuhen\ ;
+未着 < michaku\ ;
+書経 < shokyou\ ;
+寸刻 < sunkoku\ ;
+事物 < jibutsu\ ;
+仕業 < shiwaza\ ;
+日本画 < nihonga\ ;
+現業 < gengyou\ ;
+曳網 < hikiami\ ;
+尊信 < sonshin\ ;
+超凡 < choubon\ ;
+仲断 < chuudan\ ;
+小伝 < shouden\ ;
+鞦韆 < buranko\ ;
+紀元後 < kigengo\ ;
+乱用 < ran''you\ ;
+七色 < nanairo\ ;
+上膊 < jouhaku\ ;
+何奴 < doyatsu\ ;
+体温器 < taionki\ ;
+一芸 < ichigei\ ;
+犬釘 < inukugi\ ;
+未発 < mihatsu\ ;
+小人 < shounin\ ;
+佗声 < wabigoe\ ;
+一色 < hitoiro\ ;
+主筋 < shusuji\ ;
+中糸 < chuuito\ ;
+資格 < shikaku\ ;
+書籍 < shoseki\ ;
+宿場 < shukuba\ ;
+春闘 < shuntou\ ;
+暴落 < bouraku\ ;
+京洛 < keiraku\ ;
+万能 < man''nou\ ;
+三育 < san''iku\ ;
+三股 < sanmata\ ;
+一膳 < ichizen\ ;
+特電 < tokuden\ ;
+順調 < junchou\ ;
+羽箒 < habouki\ ;
+脚光 < kyakkou\ ;
+独裁 < dokusai\ ;
+羊膜 < youmaku\ ;
+末生 < suenari\ ;
+査察 < sasatsu\ ;
+上翼 < jouyoku\ ;
+休怠 < kyuutai\ ;
+乱獲 < rankaku\ ;
+義絶 < gizetsu\ ;
+昇順 < shoujun\ ;
+現有 < gen''yuu\ ;
+貝殼 < kaigara\ ;
+物音 < monooto\ ;
+微温湯 < biontou\ ;
+主神 < shushin\ ;
+玉璽 < gyokuji\ ;
+会席 < kaiseki\ ;
+狼藉 < rouzeki\ ;
+羊肉 < youniku\ ;
+預血 < yoketsu\ ;
+貴婦人 < kifujin\ ;
+風疹 < fuushin\ ;
+玉瑛 < gyokuei\ ;
+宿営 < shukuei\ ;
+他日 < tajitsu\ ;
+老熟 < roujuku\ ;
+資料 < shiryou\ ;
+駐兵 < chuuhei\ ;
+右大臣 < udaijin\ ;
+低圧 < teiatsu\ ;
+松楓 < shoufuu\ ;
+今朝 < konchou\ ;
+丹碧 < tanpeki\ ;
+暮色 < boshoku\ ;
+仕方 < shikata\ ;
+帰化人 < kikajin\ ;
+今更 < imasara\ ;
+密告 < mikkoku\ ;
+犯跡 < hanseki\ ;
+貴札 < kisatsu\ ;
+飄然 < hyouzen\ ;
+今暁 < kongyou\ ;
+早馬 < hayauma\ ;
+作品 < sakuhin\ ;
+負極 < fukyoku\ ;
+戦後派 < sengoha\ ;
+人格 < jinkaku\ ;
+本物 < honmono\ ;
+今時 < imadoki\ ;
+来歴 < raireki\ ;
+音訳 < on''yaku\ ;
+今春 < konshun\ ;
+貯木 < choboku\ ;
+買春 < baishun\ ;
+富力 < furyoku\ ;
+上級 < joukyuu\ ;
+上紙 < uwagami\ ;
+聚散 < shuusan\ ;
+上紐 < uwahimo\ ;
+今方 < imagata\ ;
+木版 < mokuhan\ ;
+木片 < mokuhen\ ;
+背圧 < haiatsu\ ;
+肉弾 < nikudan\ ;
+獄窓 < gokusou\ ;
+学年 < gakunen\ ;
+客土 < kyakudo\ ;
+譴責 < kenseki\ ;
+低唱 < teishou\ ;
+旧風 < kyuufuu\ ;
+存念 < zon''nen\ ;
+率爾 < sotsuji\ ;
+学帽 < gakubou\ ;
+本然 < hon''nen\ ;
+狂言 < kyougen\ ;
+仕掛 < shikake\ ;
+株券 < kabuken\ ;
+飛沫 < himatsu\ ;
+風狂 < fuukyou\ ;
+子息 < shisoku\ ;
+馬匹 < bahitsu\ ;
+書目 < shomoku\ ;
+上箱 < uwabako\ ;
+胸像 < kyouzou\ ;
+胴元 < doumoto\ ;
+暗色 < anshoku\ ;
+完壁 < kanbeki\ ;
+胆嚢 < tan''nou\ ;
+豊熟 < houjuku\ ;
+上策 < jousaku\ ;
+顎紐 < agohimo\ ;
+木炭 < mokutan\ ;
+余力 < yoryoku\ ;
+受像機 < juzouki\ ;
+中盤 < chuuban\ ;
+記念樹 < kinenju\ ;
+耳栓 < mimisen\ ;
+余割 < yokatsu\ ;
+万策 < bansaku\ ;
+令息 < reisoku\ ;
+粉微塵 < komijin\ ;
+片面 < katamen\ ;
+為政者 < iseisha\ ;
+特配 < tokuhai\ ;
+乳清 < nyuusei\ ;
+日露 < nichiro\ ;
+大犬座 < ooinuza\ ;
+日時計 < hidokei\ ;
+乳液 < nyuueki\ ;
+献立 < kondate\ ;
+両眼 < ryougan\ ;
+何処 < dokoira\ ;
+豆炭 < mametan\ ;
+実員 < jitsuin\ ;
+珍本 < chinpon\ ;
+代役 < daiyaku\ ;
+乱流 < ranryuu\ ;
+一端 < ippashi\ ;
+珍書 < chinsho\ ;
+何共 < nantomo\ ;
+寒中 < kanchuu\ ;
+時事論 < jijiron\ ;
+中瓶 < chuubin\ ;
+万福 < manpuku\ ;
+職工 < shokkou\ ;
+宅地 < takuchi\ ;
+乳汁 < nyuujuu\ ;
+校倉 < azekura\ ;
+翕然 < kyuuzen\ ;
+保養院 < hoyouin\ ;
+新鮮 < shinsen\ ;
+豊漁 < houryou\ ;
+譫言 < uwagoto\ ;
+朝潮 < asashio\ ;
+自然薯 < jinenjo\ ;
+保健所 < hokenjo\ ;
+風潮 < fuuchou\ ;
+胴中 < dounaka\ ;
+頚肉 < keiniku\ ;
+作例 < sakurei\ ;
+離弁花 < ribenka\ ;
+本流 < honryuu\ ;
+密事 < mitsuji\ ;
+仰山 < gyousan\ ;
+仏恩 < butsuon\ ;
+次世代 < jisedai\ ;
+他律 < taritsu\ ;
+来春 < raiharu\ ;
+不器用 < bukiyou\ ;
+現役 < gen''eki\ ;
+一礼 < ichirei\ ;
+順良 < junryou\ ;
+上石 < uwaishi\ ;
+実務 < jitsumu\ ;
+子局 < kokyoku\ ;
+手奇麗 < tegirei\ ;
+下着 < shitagi\ ;
+未決 < miketsu\ ;
+大黒 < daikoku\ ;
+塩基性 < enkisei\ ;
+仕度 < shitaku\ ;
+学外 < gakugai\ ;
+頬紅 < hoobeni\ ;
+面長 < omonaga\ ;
+識語 < shikigo\ ;
+低俗 < teizoku\ ;
+下目 < shitame\ ;
+杏林 < kyourin\ ;
+孑孑 < boufuri\ ;
+暗緑 < anryoku\ ;
+馬主 < banushi\ ;
+特赦 < tokusha\ ;
+不発 < fuhatsu\ ;
+何人 < nanpito\ ;
+記念日 < kinenbi\ ;
+高祖父 < kousofu\ ;
+今日中 < kyoujuu\ ;
+職安 < shokuan\ ;
+景色 < keshiki\ ;
+村有 < son''yuu\ ;
+材木 < zaimoku\ ;
+朧気 < oboroge\ ;
+万目 < banmoku\ ;
+露骨 < rokotsu\ ;
+仏座 < butsuza\ ;
+飛札 < hisatsu\ ;
+大鷺 < daisagi\ ;
+論駁 < ronbaku\ ;
+風流 < fuuryuu\ ;
+学報 < gakuhou\ ;
+肉声 < nikusei\ ;
+代将 < daishou\ ;
+豊沃 < houyoku\ ;
+萎黄病 < ioubyou\ ;
+聖廟 < seibyou\ ;
+家主 < yanushi\ ;
+一着 < itchaku\ ;
+一眼 < ichigan\ ;
+一眸 < ichibou\ ;
+識見 < shikken\ ;
+某国 < boukoku\ ;
+杉材 < sugizai\ ;
+一眠 < ichimin\ ;
+仁徳 < jintoku\ ;
+宛先 < atesaki\ ;
+擬古文 < gikobun\ ;
+新風 < shinpuu\ ;
+一直 < itchoku\ ;
+今年 < kon''nen\ ;
+胚乳 < hainyuu\ ;
+二日 < futsuka\ ;
+断食 < danjiki\ ;
+乳棒 < nyuubou\ ;
+下略 < geryaku\ ;
+瑞兆 < zuichou\ ;
+新顔 < shingao\ ;
+万病 < manbyou\ ;
+韻脚 < inkyaku\ ;
+地衣類 < chiirui\ ;
+翼棟 < yokutou\ ;
+三男 < san''nan\ ;
+材料 < zairyou\ ;
+婆羅門 < baramon\ ;
+官僚 < kanryou\ ;
+文鳥 < bunchou\ ;
+人徳 < nintoku\ ;
+仰天 < gyouten\ ;
+賊害 < zokugai\ ;
+題目 < daimoku\ ;
+人形 < ningyou\ ;
+牛車 < gyuusha\ ;
+賊子 < zokushi\ ;
+秘書課 < hishoka\ ;
+本業 < hongyou\ ;
+印画紙 < ingashi\ ;
+貧弱 < hinjaku\ ;
+爆風 < bakufuu\ ;
+老朽 < roukyuu\ ;
+早速 < sassoku\ ;
+旧道 < kyuudou\ ;
+老木 < rouboku\ ;
+特認 < tokunin\ ;
+本棚 < hondana\ ;
+妙趣 < myoushu\ ;
+物象 < busshou\ ;
+仏寺 < butsuji\ ;
+予想屋 < yosouya\ ;
+慈善家 < jizenka\ ;
+末梢 < masshou\ ;
+論難 < ron''nan\ ;
+土曜日 < doyoubi\ ;
+上玉 < joudama\ ;
+論集 < ronshuu\ ;
+林学 < ringaku\ ;
+学問 < gakumon\ ;
+豪族 < gouzoku\ ;
+職場 < shokuba\ ;
+本格 < honkaku\ ;
+会則 < kaisoku\ ;
+主流 < shuryuu\ ;
+既述 < kijutsu\ ;
+義烈 < giretsu\ ;
+降雨林 < kouurin\ ;
+物議 < butsugi\ ;
+貸家 < kashiya\ ;
+有毒 < yuudoku\ ;
+新開 < shinkai\ ;
+下物 < kabutsu\ ;
+仙女 < sen''nyo\ ;
+爆雷 < bakurai\ ;
+伏勢 < fusezei\ ;
+上物 < joumono\ ;
+朝風呂 < asaburo\ ;
+枠外 < wakugai\ ;
+本朝 < honchou\ ;
+特装 < tokusou\ ;
+領空 < ryoukuu\ ;
+学名 < gakumei\ ;
+旧蹟 < furuato\ ;
+末期 < matsugo\ ;
+木杯 < mokuhai\ ;
+再下付 < saikafu\ ;
+洋画家 < yougaka\ ;
+謬論 < byuuron\ ;
+木材 < mokuzai\ ;
+学友 < gakuyuu\ ;
+木本 < mokuhon\ ;
+下熱 < genetsu\ ;
+定規座 < jougiza\ ;
+来復 < raifuku\ ;
+木曜 < mokuyou\ ;
+曲浦 < kyokuho\ ;
+類焼 < ruishou\ ;
+風格 < fuukaku\ ;
+松屋 < matsuya\ ;
+頭目 < toumoku\ ;
+九月 < kugatsu\ ;
+伏兵 < fukuhei\ ;
+特融 < tokuyuu\ ;
+乱撃 < rangeki\ ;
+獣欲 < juuyoku\ ;
+天領 < tenryou\ ;
+需用家 < juyouka\ ;
+保健婦 < hokenfu\ ;
+豆板 < mameita\ ;
+購入 < kounyuu\ ;
+餅屋 < mochiya\ ;
+嫡披 < chakuhi\ ;
+朝来 < chourai\ ;
+謬見 < byuuken\ ;
+下火 < shitabi\ ;
+豆本 < mamehon\ ;
+高祖母 < kousobo\ ;
+妙計 < myoukei\ ;
+今夕 < kon''yuu\ ;
+九星 < kyuusei\ ;
+姿絵 < sugatae\ ;
+職員 < shokuin\ ;
+夜食 < yashoku\ ;
+球団 < kyuudan\ ;
+外耳炎 < gaijien\ ;
+多食 < tashoku\ ;
+肖像 < shouzou\ ;
+東屋 < azumaya\ ;
+天雲 < amagumo\ ;
+不潔 < fuketsu\ ;
+不裁可 < fusaika\ ;
+学内 < gakunai\ ;
+中正 < chuusei\ ;
+文革 < bunkaku\ ;
+束帯 < sokutai\ ;
+警備員 < keibiin\ ;
+期日 < kijitsu\ ;
+食後 < shokugo\ ;
+不滅 < fumetsu\ ;
+朝方 < asagata\ ;
+夕風 < yuukaze\ ;
+音節 < onsetsu\ ;
+大陸 < tairiku\ ;
+誤作動 < gosadou\ ;
+聴取 < choushu\ ;
+独眼 < dokugan\ ;
+下湯 < shimoyu\ ;
+夜露 < yotsuyu\ ;
+人声 < hitogoe\ ;
+珍宝 < chinpou\ ;
+妄評 < mouhyou\ ;
+職務 < shokumu\ ;
+飯屋 < meshiya\ ;
+板壁 < itakabe\ ;
+人境 < jinkyou\ ;
+乾徳 < kentoku\ ;
+仮名本 < kanahon\ ;
+書棚 < shodana\ ;
+夕靄 < yuumoya\ ;
+来宅 < raitaku\ ;
+置物 < okimono\ ;
+獄死 < gokushi\ ;
+末技 < matsugi\ ;
+札所 < fudasho\ ;
+夕霧 < yuugiri\ ;
+頒白 < hanpaku\ ;
+上海 < shanhai\ ;
+斤量 < kinryou\ ;
+新道 < shindou\ ;
+晩秋 < banshuu\ ;
+上流 < jouryuu\ ;
+乗換 < norikae\ ;
+三流 < sanryuu\ ;
+上洛 < jouraku\ ;
+末成 < uranari\ ;
+片親 < kataoya\ ;
+賠償 < baishou\ ;
+翌晩 < yokuban\ ;
+九拝 < kyuuhai\ ;
+仮免 < karimen\ ;
+丸材 < maruzai\ ;
+任侠 < ninkyou\ ;
+肉体 < nikutai\ ;
+月日 < tsukihi\ ;
+敵陣 < tekijin\ ;
+項目 < koumoku\ ;
+変革 < henkaku\ ;
+一浪 < ichirou\ ;
+料金 < ryoukin\ ;
+老弱 < roujaku\ ;
+夕闇 < yuuyami\ ;
+数隻 < suuseki\ ;
+新車 < shinsha\ ;
+中枢 < chuusuu\ ;
+事局 < jikyoku\ ;
+文鎮 < bunchin\ ;
+仮借 < kashaku\ ;
+代入 < dainyuu\ ;
+一泡 < hitoawa\ ;
+雨風 < amekaze\ ;
+豪州 < goushuu\ ;
+助産所 < josanjo\ ;
+革装 < kawasou\ ;
+仏印 < futsuin\ ;
+主教 < shukyou\ ;
+一決 < ikketsu\ ;
+事実 < jijitsu\ ;
+予察 < yosatsu\ ;
+一汗 < hitoase\ ;
+諸訳 < showake\ ;
+姦策 < kansaku\ ;
+仲仕 < nakashi\ ;
+仲介 < chuukai\ ;
+仲人 < nakoudo\ ;
+京地 < kyouchi\ ;
+買収 < baishuu\ ;
+一毫 < ichigou\ ;
+枠内 < wakunai\ ;
+一毛 < ichimou\ ;
+耳垢 < mimiaka\ ;
+牧草 < bokusou\ ;
+館内 < kan''nai\ ;
+中旬 < chuujun\ ;
+縦隔 < juukaku\ ;
+大時代 < oojidai\ ;
+枸櫞酸 < kuensan\ ;
+雑駁 < zappaku\ ;
+頓狂 < tonkyou\ ;
+虚無僧 < komusou\ ;
+失透 < shittou\ ;
+両替 < ryougae\ ;
+雪隠 < setchin\ ;
+嬰記号 < eikigou\ ;
+末座 < matsuza\ ;
+飴坊 < amenbou\ ;
+保健医 < hoken''i\ ;
+代作 < daisaku\ ;
+丸損 < maruzon\ ;
+林内 < rin''nai\ ;
+末広 < suehiro\ ;
+頭字語 < toujigo\ ;
+代休 < daikyuu\ ;
+牧舎 < bokusha\ ;
+仏具 < butsugu\ ;
+末席 < masseki\ ;
+謹聴 < kinchou\ ;
+諸行 < shogyou\ ;
+木太刀 < kidachi\ ;
+玉座 < gyokuza\ ;
+本州 < honshuu\ ;
+猛毒 < moudoku\ ;
+緘黙 < kanmoku\ ;
+介入 < kainyuu\ ;
+曝書 < bakusho\ ;
+豹変 < hyouhen\ ;
+救難 < kyuunan\ ;
+両断 < ryoudan\ ;
+奥行 < okuyuki\ ;
+朝廷 < choutei\ ;
+文通 < buntsuu\ ;
+食塩 < shokuen\ ;
+熱雲 < netsuun\ ;
+蓮華座 < rengeza\ ;
+教門 < kyoumon\ ;
+雑音 < zatsuon\ ;
+狛犬 < komainu\ ;
+珍問 < chinmon\ ;
+愛書家 < aishoka\ ;
+雁首 < gankubi\ ;
+暦法 < rekihou\ ;
+天軸 < tenjiku\ ;
+語釈 < goshaku\ ;
+人前 < hitomae\ ;
+馬刀貝 < mategai\ ;
+現任 < gen''nin\ ;
+夜道 < yomichi\ ;
+論調 < ronchou\ ;
+乙巡 < otsujun\ ;
+夏野 < natsuno\ ;
+外郭 < gaikaku\ ;
+珍品 < chinpin\ ;
+朝市 < asaichi\ ;
+奉読 < houdoku\ ;
+昼礼 < chuurei\ ;
+末尾 < matsubi\ ;
+下期 < shimoki\ ;
+数量 < suuryou\ ;
+燗酒 < kanzake\ ;
+仕事 < shigoto\ ;
+論評 < ronpyou\ ;
+上服 < uwafuku\ ;
+木履 < pokkuri\ ;
+末寺 < matsuji\ ;
+論証 < ronshou\ ;
+物置 < monooki\ ;
+服従 < fukujuu\ ;
+三月 < mitsuki\ ;
+趣意書 < shuisho\ ;
+服役 < fukueki\ ;
+両損 < ryouzon\ ;
+牛脂 < gyuushi\ ;
+牧羊 < bokuyou\ ;
+変量 < henryou\ ;
+万有 < ban''yuu\ ;
+本宅 < hontaku\ ;
+曲技 < kyokugi\ ;
+青蛙 < aogaeru\ ;
+有徳 < yuutoku\ ;
+特級 < tokkyuu\ ;
+献木 < kenboku\ ;
+飛地 < tobichi\ ;
+猫板 < nekoita\ ;
+日英 < nichiei\ ;
+請謁 < seietsu\ ;
+易経 < ekikyou\ ;
+貝割 < kaiwari\ ;
+不日 < fujitsu\ ;
+暖流 < danryuu\ ;
+青虫 < aomushi\ ;
+三春 < sanshun\ ;
+一札 < issatsu\ ;
+耐圧 < taiatsu\ ;
+縫針 < nuibari\ ;
+運搬費 < unpanhi\ ;
+頂点 < chouten\ ;
+一曲 < ikkyoku\ ;
+丹念 < tan''nen\ ;
+音物 < inmotsu\ ;
+日舞 < nichibu\ ;
+旧臘 < kyuurou\ ;
+獣心 < juushin\ ;
+請託 < seitaku\ ;
+老境 < roukyou\ ;
+攘夷論 < jouiron\ ;
+懐疑派 < kaigiha\ ;
+今一 < imaichi\ ;
+万斛 < bankoku\ ;
+無煙炭 < muentan\ ;
+三教 < sankyou\ ;
+一晩 < hitoban\ ;
+天象 < tenshou\ ;
+晩熟 < banjuku\ ;
+妥結 < daketsu\ ;
+春秋 < haruaki\ ;
+牛缶 < gyuukan\ ;
+安静時 < anseiji\ ;
+最強 < saikyou\ ;
+変速 < hensoku\ ;
+変通 < hentsuu\ ;
+暗殺 < ansatsu\ ;
+敵軍 < tekigun\ ;
+特等 < tokutou\ ;
+片腕 < kataude\ ;
+一旬 < ichijun\ ;
+女生徒 < joseito\ ;
+乞婿 < koimuko\ ;
+虎燕拳 < koenken\ ;
+頸椎 < keitsui\ ;
+責任 < sekinin\ ;
+顔料 < ganryou\ ;
+正常位 < seijoui\ ;
+末女 < matsujo\ ;
+朱墨 < shuboku\ ;
+丁数 < chousuu\ ;
+旗色 < hatairo\ ;
+補助金 < hojokin\ ;
+女色 < joshoku\ ;
+旧聞 < kyuubun\ ;
+阿婆擦 < abazure\ ;
+片肺 < katahai\ ;
+朱塗 < shunuri\ ;
+領水 < ryousui\ ;
+面舵 < omokaji\ ;
+丸帯 < maruobi\ ;
+琵琶行 < biwakou\ ;
+総高 < soudaka\ ;
+声量 < seiryou\ ;
+助産婦 < josanpu\ ;
+朧夜 < oboroyo\ ;
+壁面 < hekimen\ ;
+翰墨 < kanboku\ ;
+玄妙 < genmyou\ ;
+修羅場 < shuraba\ ;
+羸弱 < ruijaku\ ;
+九大 < kyuudai\ ;
+三振 < sanshin\ ;
+不抜 < fubatsu\ ;
+大詰 < oodzume\ ;
+豪商 < goushou\ ;
+手一杯 < teippai\ ;
+中年 < chuunen\ ;
+一握 < ichiaku\ ;
+曲庇 < kyokuhi\ ;
+説諭 < setsuyu\ ;
+無線機 < musenki\ ;
+中帽 < chuubou\ ;
+春眠 < shunmin\ ;
+頬桁 < hoogeta\ ;
+万灯会 < mandoue\ ;
+牧童 < bokudou\ ;
+東京 < toukyou\ ;
+本国 < hongoku\ ;
+説話 < setsuwa\ ;
+二列 < niretsu\ ;
+一括 < ikkatsu\ ;
+非職 < hishoku\ ;
+改鋳 < kaichuu\ ;
+猛撃 < mougeki\ ;
+敏速 < binsoku\ ;
+頬杖 < hoodzue\ ;
+新著 < shincho\ ;
+水位計 < suiikei\ ;
+羞恥 < shuuchi\ ;
+九地 < kyuuchi\ ;
+明確 < meikaku\ ;
+総額 < sougaku\ ;
+二八 < nihachi\ ;
+漢方医 < kanpoui\ ;
+景況 < keikyou\ ;
+日給 < nikkyuu\ ;
+羽目板 < hameita\ ;
+具体案 < gutaian\ ;
+集金 < shuukin\ ;
+雨足 < ameashi\ ;
+暦数 < rekisuu\ ;
+新茶 < shincha\ ;
+風圧 < fuuatsu\ ;
+総革 < sougawa\ ;
+中尊 < chuuzon\ ;
+明瞭 < meiryou\ ;
+縷説 < rusetsu\ ;
+集配 < shuuhai\ ;
+月央 < getsuou\ ;
+中宮 < chuuguu\ ;
+綿飴 < wataame\ ;
+月夜 < tsukiyo\ ;
+日本化 < nihonka\ ;
+三徳 < santoku\ ;
+陰鬱 < in''utsu\ ;
+緑陰 < ryokuin\ ;
+敵視 < tekishi\ ;
+放逸 < houitsu\ ;
+研磨機 < kenmaki\ ;
+上役 < uwayaku\ ;
+増額 < zougaku\ ;
+一息 < hitoiki\ ;
+乳剤 < nyuuzai\ ;
+明白 < meihaku\ ;
+大雑把 < oozappa\ ;
+下座 < shimoza\ ;
+古井戸 < furuido\ ;
+一念 < ichinen\ ;
+万引 < manbiki\ ;
+胃潰瘍 < ikaiyou\ ;
+特産 < tokusan\ ;
+木口 < kiguchi\ ;
+一徹 < ittetsu\ ;
+顔役 < kaoyaku\ ;
+翻刻 < honkoku\ ;
+三年 < san''nen\ ;
+日立 < hitachi\ ;
+救貧 < kyuuhin\ ;
+断腸 < danchou\ ;
+杏仁 < kyounin\ ;
+万年 < man''nen\ ;
+物的 < butteki\ ;
+陸風 < rikufuu\ ;
+多義性 < tagisei\ ;
+一式 < isshiki\ ;
+状況 < joukyou\ ;
+甘露煮 < kanroni\ ;
+新聞 < shinbun\ ;
+本則 < honsoku\ ;
+中外 < chuugai\ ;
+乙女座 < otomeza\ ;
+奴等 < yatsura\ ;
+独断 < dokudan\ ;
+詰責 < kisseki\ ;
+耐久 < taikyuu\ ;
+難読 < nandoku\ ;
+顧客 < kokyaku\ ;
+独文 < dokubun\ ;
+保守派 < hoshuha\ ;
+旗竿 < hatazao\ ;
+霊薬 < reiyaku\ ;
+教訓 < kyoukun\ ;
+不屈 < fukutsu\ ;
+木刀 < bokutou\ ;
+新羅 < shiragi\ ;
+増長 < zouchou\ ;
+暁星 < gyousei\ ;
+険難 < ken''nan\ ;
+叙事詩 < jojishi\ ;
+上履 < uwabaki\ ;
+本元 < honmoto\ ;
+大掃除 < oosouji\ ;
+烏龍茶 < ūroncha\ ;
+中堅 < chuuken\ ;
+夏蚕 < natsugo\ ;
+女王蟻 < joouari\ ;
+半母音 < hanboin\ ;
+三尺 < sanjaku\ ;
+天草 < tengusa\ ;
+月商 < gesshou\ ;
+無政府 < museifu\ ;
+下宿 < geshuku\ ;
+議決 < giketsu\ ;
+乱作 < ransaku\ ;
+下家 < shitaya\ ;
+牛痘 < gyuutou\ ;
+物理 < butsuri\ ;
+更地 < sarachi\ ;
+牛疫 < gyuueki\ ;
+義和団 < giwadan\ ;
+朝凪 < asanagi\ ;
+一尺 < isshaku\ ;
+独探 < dokutan\ ;
+緑野 < ryokuya\ ;
+七宝 < shippou\ ;
+旧盤 < kyuuban\ ;
+詳解 < shoukai\ ;
+契約 < keiyaku\ ;
+難行 < nangyou\ ;
+月収 < gesshuu\ ;
+雑話 < zatsuwa\ ;
+旧盆 < kyuubon\ ;
+一宿 < isshuku\ ;
+無骨 < bukotsu\ ;
+好事家 < kouzuka\ ;
+売行 < ureyuki\ ;
+頁数 < pējisuu\ ;
+断続 < danzoku\ ;
+音曲 < ongyoku\ ;
+一存 < ichizon\ ;
+夕菅 < yuusuge\ ;
+施策 < shisaku\ ;
+日白 < nippaku\ ;
+大腸 < daichou\ ;
+行為者 < kouisha\ ;
+牢獄 < rougoku\ ;
+犬橇 < inuzori\ ;
+与奪 < yodatsu\ ;
+本人 < hon''nin\ ;
+熟談 < jukudan\ ;
+機関庫 < kikanko\ ;
+機関座 < kikanza\ ;
+牡猫 < osuneko\ ;
+晩春 < banshun\ ;
+独房 < dokubou\ ;
+新米 < shinmai\ ;
+方策 < housaku\ ;
+犬槙 < inumaki\ ;
+木仏 < kibutsu\ ;
+早番 < hayaban\ ;
+本丸 < honmaru\ ;
+晩方 < bangata\ ;
+繭紬 < kenchuu\ ;
+青票 < seihyou\ ;
+猛将 < moushou\ ;
+同意見 < douiken\ ;
+丈夫 < masurao\ ;
+月利 < getsuri\ ;
+改訳 < kaiyaku\ ;
+増量 < zouryou\ ;
+零落 < reiraku\ ;
+丸十 < marujuu\ ;
+集計 < shuukei\ ;
+話術 < wajutsu\ ;
+牝犬 < mesuinu\ ;
+熟覧 < jukuran\ ;
+熟視 < jukushi\ ;
+面目 < menmoku\ ;
+煎鍋 < irinabe\ ;
+玄人 < kurouto\ ;
+断箱 < danbako\ ;
+議事堂 < gijidou\ ;
+填隙 < tengeki\ ;
+上塗 < uwanuri\ ;
+一如 < ichinyo\ ;
+不埒 < furachi\ ;
+緊迫 < kinpaku\ ;
+万境 < bankyou\ ;
+論策 < ronsaku\ ;
+訳載 < yakusai\ ;
+明澄 < meichou\ ;
+一大 < ichidai\ ;
+評論 < hyouron\ ;
+調練 < chouren\ ;
+中原 < chuugen\ ;
+誤脱 < godatsu\ ;
+読者 < dokusha\ ;
+売薬 < baiyaku\ ;
+豆乳 < tounyuu\ ;
+一声 < hitokoe\ ;
+天糸瓜 < hechima\ ;
+保安林 < hoanrin\ ;
+腐葉土 < fuyoudo\ ;
+下地 < shitaji\ ;
+増進 < zoushin\ ;
+面疔 < menchou\ ;
+頂戴 < choudai\ ;
+論究 < ronkyuu\ ;
+新税 < shinzei\ ;
+海豚座 < irukaza\ ;
+下図 < shitazu\ ;
+自衛隊 < jieitai\ ;
+改行 < kaigyou\ ;
+語脈 < gomyaku\ ;
+繊維素 < sen''iso\ ;
+三国 < sangoku\ ;
+両名 < ryoumei\ ;
+随身 < zuishin\ ;
+無雑 < muzatsu\ ;
+移行性 < ikousei\ ;
+中前 < chuuzen\ ;
+親鸞 < shinran\ ;
+電脳 < den''nou\ ;
+湯湯婆 < yutanpo\ ;
+中分 < chuubun\ ;
+絶頂 < zetchou\ ;
+頑強 < gankyou\ ;
+繋縛 < keibaku\ ;
+太糸 < futoito\ ;
+交尾期 < koubiki\ ;
+始業 < shigyou\ ;
+一団 < ichidan\ ;
+早熟 < soujuku\ ;
+誇色 < koshoku\ ;
+託送 < takusou\ ;
+雌蘂 < meshibe\ ;
+順応 < jun''nou\ ;
+陸送 < rikusou\ ;
+月事 < getsuji\ ;
+親鳥 < oyadori\ ;
+特段 < tokudan\ ;
+両前 < ryoumae\ ;
+大粒 < ootsubu\ ;
+訓迪 < kunteki\ ;
+陶磁器 < toujiki\ ;
+特殊 < tokushu\ ;
+境遇 < kyouguu\ ;
+試薬 < shiyaku\ ;
+重馬場 < omobaba\ ;
+詐術 < sajutsu\ ;
+両分 < ryoubun\ ;
+歳時記 < saijiki\ ;
+阿多福 < otafuku\ ;
+不吉 < fukitsu\ ;
+上告 < joukoku\ ;
+御節介 < osekkai\ ;
+陸軍 < rikugun\ ;
+亜麻仁油 < amaniyu\ ;
+新盤 < shinban\ ;
+韻律 < inritsu\ ;
+暴圧 < bouatsu\ ;
+許諾 < kyodaku\ ;
+爆砕 < bakusai\ ;
+両像 < ryouzou\ ;
+狂態 < kyoutai\ ;
+婿入 < mukoiri\ ;
+訳詩 < yakushi\ ;
+離脱 < ridatsu\ ;
+昇段 < shoudan\ ;
+牧民 < bokumin\ ;
+天窓 < tenmado\ ;
+一命 < ichimei\ ;
+教育 < kyouiku\ ;
+一味 < hitoaji\ ;
+失禁 < shikkin\ ;
+総評 < souhyou\ ;
+妙法 < myouhou\ ;
+親骨 < oyabone\ ;
+書中 < shochuu\ ;
+万博 < banpaku\ ;
+番小屋 < bangoya\ ;
+音律 < onritsu\ ;
+下劣 < geretsu\ ;
+愛犬家 < aikenka\ ;
+三助 < sansuke\ ;
+両便 < ryouben\ ;
+耽美派 < tanbiha\ ;
+春本 < shunpon\ ;
+七十 < nanajuu\ ;
+覿面 < tekimen\ ;
+万力 < manriki\ ;
+丁半 < chouhan\ ;
+大福 < daifuku\ ;
+天祐 < ten''yuu\ ;
+昨晩 < sakuban\ ;
+保育所 < hoikujo\ ;
+晩年 < ban''nen\ ;
+照覧 < shouran\ ;
+緊要 < kin''you\ ;
+妨業 < bougyou\ ;
+両人 < ryounin\ ;
+観音 < kan''non\ ;
+時折 < tokiori\ ;
+遊離基 < yuuriki\ ;
+撰録 < senroku\ ;
+互助会 < gojokai\ ;
+改良 < kairyou\ ;
+施物 < semotsu\ ;
+奮激 < fungeki\ ;
+両三 < ryousan\ ;
+電算 < densoro\ ;
+結露 < ketsuro\ ;
+教練 < kyouren\ ;
+上側 < uwagawa\ ;
+姦悪 < kan''aku\ ;
+補助線 < hojosen\ ;
+角錐 < kakusui\ ;
+結集 < kesshuu\ ;
+下値 < shitane\ ;
+女湯 < on''nayu\ ;
+一元 < ichigen\ ;
+羅列 < raretsu\ ;
+暖国 < dankoku\ ;
+事務所 < jimusho\ ;
+陳謝 < chinsha\ ;
+一億 < ichioku\ ;
+訓読 < kundoku\ ;
+爛熟 < ranjuku\ ;
+明朝 < minchou\ ;
+託言 < takugen\ ;
+領域 < ryouiki\ ;
+言責 < genseki\ ;
+保護金 < hogokin\ ;
+太白 < taihaku\ ;
+特旨 < tokushi\ ;
+天皇 < ten''nou\ ;
+数秒 < suubyou\ ;
+散策 < sansaku\ ;
+万作 < mansaku\ ;
+明晰 < meiseki\ ;
+晩学 < bangaku\ ;
+明晩 < myouban\ ;
+一倍 < ichibai\ ;
+終電 < shuuden\ ;
+日欧 < nichiou\ ;
+明星 < myoujou\ ;
+三人 < san''nin\ ;
+縦笛 < tatebue\ ;
+集群 < shuugun\ ;
+万人 < man''nin\ ;
+大病 < taibyou\ ;
+菓子器 < kashiki\ ;
+頭取 < toudori\ ;
+雨笠 < amagasa\ ;
+縦穴 < tateana\ ;
+一任 < ichinin\ ;
+大男 < oootoko\ ;
+罰則 < bassoku\ ;
+震盪 < shintou\ ;
+霊的 < reiteki\ ;
+愛妻家 < aisaika\ ;
+外相 < gaishou\ ;
+多発 < tahatsu\ ;
+雨空 < amazora\ ;
+然諾 < zendaku\ ;
+詮索 < sensaku\ ;
+散票 < sanpyou\ ;
+養父母 < youfubo\ ;
+練習 < renshuu\ ;
+評者 < hyousha\ ;
+熟練 < jukuren\ ;
+外的 < gaiteki\ ;
+障泥烏賊 < aoriika\ ;
+独善 < dokuzen\ ;
+夏着 < natsugi\ ;
+天球 < tenkyuu\ ;
+起電機 < kidenki\ ;
+妻戸 < tsumado\ ;
+二死後 < nishigo\ ;
+斑猫 < hanmyou\ ;
+晋山 < shinzan\ ;
+旋毛 < tsumuji\ ;
+報酬 < houshuu\ ;
+葉牡丹 < habotan\ ;
+已然形 < izenkei\ ;
+烈震 < resshin\ ;
+春情 < shunjou\ ;
+緬羊 < men''you\ ;
+縟礼 < jokurei\ ;
+大獄 < taigoku\ ;
+狂奔 < kyouhon\ ;
+墨色 < sumiiro\ ;
+総花 < soubana\ ;
+敦睦 < tonboku\ ;
+大規模 < daikibo\ ;
+独吟 < dokugin\ ;
+具体化 < gutaika\ ;
+覆面 < fukumen\ ;
+織物 < orimono\ ;
+保安官 < hoankan\ ;
+旧来 < kyuurai\ ;
+旧村 < kyuuson\ ;
+野獣派 < yajuuha\ ;
+独占 < dokusen\ ;
+電位差 < den''isa\ ;
+日朝 < nitchou\ ;
+如月 < nigatsu\ ;
+失点 < shitten\ ;
+雑穀 < zakkoku\ ;
+襟髪 < erigami\ ;
+親里 < oyazato\ ;
+照臨 < shourin\ ;
+早春 < soushun\ ;
+昨年 < sakunen\ ;
+天然 < ten''nen\ ;
+奥様 < okusama\ ;
+日時 < nichiji\ ;
+緑肥 < ryokuhi\ ;
+非対応 < hitaiou\ ;
+蓖麻子 < himashi\ ;
+裸体画 < rataiga\ ;
+領内 < ryounai\ ;
+事務官 < jimukan\ ;
+電球 < denkyuu\ ;
+片方 < katahou\ ;
+訳者 < yakusha\ ;
+特待 < tokutai\ ;
+起訴状 < kisojou\ ;
+襟首 < erikubi\ ;
+奪格 < dakkaku\ ;
+野暮用 < yaboyou\ ;
+敵状 < tekijou\ ;
+撃退 < gekitai\ ;
+無灯火 < mutouka\ ;
+難癖 < nankuse\ ;
+春嵐 < shunran\ ;
+襲雷 < shuurai\ ;
+妙所 < myousho\ ;
+明徳 < meitoku\ ;
+難症 < nanshou\ ;
+難病 < nanbyou\ ;
+無血 < muketsu\ ;
+無記名 < mukimei\ ;
+昔年 < sekinen\ ;
+炒飯 < chaahan\ ;
+誘爆 < yuubaku\ ;
+外為 < gaitame\ ;
+震災 < shinsai\ ;
+春寒 < shunkan\ ;
+爆死 < bakushi\ ;
+都議選 < togisen\ ;
+網膜 < moumaku\ ;
+熟知 < jukuchi\ ;
+明年 < myounen\ ;
+天減 < tenbiki\ ;
+保育園 < hoikuen\ ;
+姉婿 < anemuko\ ;
+終車 < shuusha\ ;
+精麦 < seibaku\ ;
+熟睡 < jukusui\ ;
+縫物 < nuimono\ ;
+緊縛 < kinbaku\ ;
+熟眠 < jukumin\ ;
+保育器 < hoikuki\ ;
+墨糸 < sumiito\ ;
+陰膳 < kagezen\ ;
+詩的 < shiteki\ ;
+星学 < seigaku\ ;
+愛好家 < aikouka\ ;
+青春 < seishun\ ;
+暇人 < himajin\ ;
+音力 < onryoku\ ;
+為銀 < tamegin\ ;
+訓育 < kun''iku\ ;
+奥方 < okugata\ ;
+狩人 < karyudo\ ;
+累進 < ruishin\ ;
+焼芋 < yakiimo\ ;
+委任状 < ininjou\ ;
+陪臣 < baishin\ ;
+牧師 < bokushi\ ;
+御披露目 < ohirome\ ;
+新案 < shin''an\ ;
+階級 < kaikyuu\ ;
+特定 < tokutei\ ;
+用器画 < youkiga\ ;
+昨夕 < sakuyuu\ ;
+隻眼 < sekigan\ ;
+保養所 < hoyoujo\ ;
+家庭科 < kateika\ ;
+増給 < zoukyuu\ ;
+不名誉 < fumeiyo\ ;
+旧悪 < kyuuaku\ ;
+数滴 < suuteki\ ;
+綾絹 < ayaginu\ ;
+索道 < sakudou\ ;
+結語 < ketsugo\ ;
+女手 < on''nade\ ;
+熱狂 < nekkyou\ ;
+女房 < nyoubou\ ;
+外海 < sotoumi\ ;
+大欲 < taiyoku\ ;
+結託 < kettaku\ ;
+外泊 < gaihaku\ ;
+覆輪 < fukurin\ ;
+整流 < seiryuu\ ;
+頂上 < choujou\ ;
+五輪旗 < gorinki\ ;
+熱燗 < atsukan\ ;
+日当 < hiatari\ ;
+糠雨 < nukaame\ ;
+旧弊 < kyuuhei\ ;
+特大 < tokudai\ ;
+親許 < oyamoto\ ;
+春坊 < harubou\ ;
+作業衣 < sagyoui\ ;
+詫状 < wabijou\ ;
+電流 < denryuu\ ;
+木戸銭 < kidosen\ ;
+特売 < tokubai\ ;
+耳下腺 < jikasen\ ;
+無色 < mushoku\ ;
+論敵 < ronteki\ ;
+家庭着 < kateigi\ ;
+雀球 < jankyuu\ ;
+文様 < mon''you\ ;
+大業 < taigyou\ ;
+旅所 < tabisho\ ;
+糸鋸 < itonoko\ ;
+外陰部 < gaiinbu\ ;
+特報 < tokuhou\ ;
+文楽 < bunraku\ ;
+無腰 < mugoshi\ ;
+面影 < omokage\ ;
+煙突 < entotsu\ ;
+墓穴 < boketsu\ ;
+和菓子 < wagashi\ ;
+調書 < chousho\ ;
+革帯 < kawaobi\ ;
+旅愁 < ryoshuu\ ;
+自在画 < jizaiga\ ;
+解脱 < gedatsu\ ;
+昼前 < hirumae\ ;
+続編 < zokuhen\ ;
+耕運機 < kouunki\ ;
+熱演 < netsuen\ ;
+雪洞 < bonbori\ ;
+総督 < soutoku\ ;
+一回忌 < ikkaiki\ ;
+間隙 < kangeki\ ;
+不可解 < fukakai\ ;
+靴屋 < kutsuya\ ;
+斎服 < saifuku\ ;
+旧居 < kyuukyo\ ;
+不可視 < fukashi\ ;
+大木 < taiboku\ ;
+城郭 < joukaku\ ;
+陸稲 < rikutou\ ;
+総理府 < sourifu\ ;
+失敬 < shikkei\ ;
+開陳 < kaichin\ ;
+失敗 < shippai\ ;
+奇抜 < kibatsu\ ;
+二分木 < nibungi\ ;
+失政 < shissei\ ;
+討究 < toukyuu\ ;
+霊柩 < reikyuu\ ;
+読本 < dokuhon\ ;
+防臭 < boushuu\ ;
+読書 < dokusho\ ;
+犯人 < han''nin\ ;
+奥庭 < okuniwa\ ;
+妊娠 < ninshin\ ;
+奥底 < okuzoko\ ;
+牧地 < bokuchi\ ;
+広辞苑 < koujien\ ;
+編物 < amimono\ ;
+天敵 < tenteki\ ;
+霊木 < reiboku\ ;
+夜曲 < yakyoku\ ;
+総画 < soukaku\ ;
+多数派 < tasuuha\ ;
+陣笠 < jingasa\ ;
+隆盛 < ryuusei\ ;
+評点 < hyouten\ ;
+保護者 < hogosha\ ;
+夜間部 < yakanbu\ ;
+文教 < bunkyou\ ;
+留守電 < rusuden\ ;
+変梃 < henteko\ ;
+米麦 < beibaku\ ;
+細螺 < kishago\ ;
+熱気 < netsuke\ ;
+昨冬 < sakutou\ ;
+春分 < shunbun\ ;
+長雨 < nagaame\ ;
+旧套 < kyuutou\ ;
+語末 < gomatsu\ ;
+糧道 < ryoudou\ ;
+掃除機 < soujiki\ ;
+襟足 < eriashi\ ;
+謹告 < kinkoku\ ;
+事務会 < jimukai\ ;
+断念 < dan''nen\ ;
+日夜 < nichiya\ ;
+日夕 < nisseki\ ;
+春光 < shunkou\ ;
+放流 < houryuu\ ;
+震旦 < shintan\ ;
+奥山 < okuyama\ ;
+静寂 < seijaku\ ;
+事前後 < jizengo\ ;
+菩提樹 < bodaiju\ ;
+火鉢 < hibachi\ ;
+絶縁 < zetsuen\ ;
+夕方 < yuugata\ ;
+粗食 < soshoku\ ;
+貝独楽 < baigoma\ ;
+境目 < sakaime\ ;
+無防備 < muboubi\ ;
+不思議 < fushigi\ ;
+旅客 < ryokaku\ ;
+不穏当 < fuontou\ ;
+昭代 < shoudai\ ;
+無筆 < muhitsu\ ;
+失態 < shittai\ ;
+結腸 < ketchou\ ;
+特典 < tokuten\ ;
+可塑材 < kasozai\ ;
+失意 < shitsui\ ;
+爆弾 < bakudan\ ;
+特免 < tokumen\ ;
+支流 < shiryuu\ ;
+揚陸 < youriku\ ;
+親船 < oyabune\ ;
+陸産 < rikusan\ ;
+陸生 < rikusei\ ;
+面壁 < menpeki\ ;
+探鳥 < tanchou\ ;
+約言 < yakugen\ ;
+梳綿機 < somenki\ ;
+粗雑 < sozatsu\ ;
+無手順 < mutejun\ ;
+電撃 < dengeki\ ;
+教書 < kyousho\ ;
+間近 < madjika\ ;
+新居 < shinkyo\ ;
+紺色 < kon''iro\ ;
+継目 < tsugime\ ;
+雷撃 < raigeki\ ;
+尾状花 < bijouka\ ;
+塾生 < jukusei\ ;
+調弦 < chougen\ ;
+燃料 < nenryou\ ;
+隠滅 < inmetsu\ ;
+大息 < taisoku\ ;
+集権 < shuuken\ ;
+便利屋 < benriya\ ;
+開通 < kaitsuu\ ;
+陣痛 < jintsuu\ ;
+外戚 < gaiseki\ ;
+網猟 < amiryou\ ;
+敵手 < tekishu\ ;
+大徳 < daitoku\ ;
+離日 < rinichi\ ;
+精進 < shoujin\ ;
+予知夢 < yochimu\ ;
+精通 < seitsuu\ ;
+煉獄 < rengoku\ ;
+御神籤 < omikuji\ ;
+諸国 < shokoku\ ;
+旧名 < kyuumei\ ;
+映写機 < eishaki\ ;
+難敵 < nanteki\ ;
+保護税 < hogozei\ ;
+瀝青 < rekisei\ ;
+叙事文 < jojibun\ ;
+旧友 < kyuuyuu\ ;
+結縁 < kechien\ ;
+袞龍 < konryou\ ;
+新婚 < shinkon\ ;
+英会話 < eikaiwa\ ;
+文弱 < bunjaku\ ;
+日収 < nisshuu\ ;
+不可能 < fukanou\ ;
+雑木 < zouboku\ ;
+説得 < settoku\ ;
+映画館 < eigakan\ ;
+靖国 < seikoku\ ;
+天幕 < tenmaku\ ;
+閲覧 < etsuran\ ;
+革命 < kakumei\ ;
+織布 < shokufu\ ;
+日印 < nichiin\ ;
+繊弱 < senjaku\ ;
+細腕 < hosoude\ ;
+零戦 < zerosen\ ;
+覚者 < kakusha\ ;
+組織 < soshiki\ ;
+謬伝 < byuuden\ ;
+誘惑 < yuuwaku\ ;
+牧人 < bokujin\ ;
+長辺 < chouhen\ ;
+霊廟 < reibyou\ ;
+詮方 < senkata\ ;
+片前 < katamae\ ;
+風雲児 < fuuunji\ ;
+垂迹 < suijaku\ ;
+墨汁 < bokujuu\ ;
+改暦 < kaireki\ ;
+阪神 < hanshin\ ;
+敵弾 < tekidan\ ;
+門跡 < monzeki\ ;
+粗金 < aragane\ ;
+親米 < shinbei\ ;
+敏捷 < binshou\ ;
+版元 < hanmoto\ ;
+楕円形 < daenkei\ ;
+見習 < minarai\ ;
+新地 < shinchi\ ;
+放擲 < houteki\ ;
+演奏家 < ensouka\ ;
+敷布 < shikifu\ ;
+牛丼 < gyuudon\ ;
+角盆 < kakubon\ ;
+詔書 < shousho\ ;
+大学 < daigaku\ ;
+可塑性 < kasosei\ ;
+壁板 < kabeita\ ;
+被除数 < hijosuu\ ;
+文学 < bungaku\ ;
+攻撃 < kougeki\ ;
+二次元 < nijigen\ ;
+緑樹 < ryokuju\ ;
+爪印 < tsumein\ ;
+手文庫 < tebunko\ ;
+旧例 < kyuurei\ ;
+糞蝿 < kusobae\ ;
+一箇所 < ikkasho\ ;
+予備隊 < yobitai\ ;
+疑問符 < gimonfu\ ;
+織姫 < orihime\ ;
+紅色 < beniiro\ ;
+陸海 < rikukai\ ;
+終端 < shuutan\ ;
+角番 < kadoban\ ;
+固定費 < koteihi\ ;
+精読 < seidoku\ ;
+織女 < shokujo\ ;
+日付 < hidzuke\ ;
+熱愛 < netsuai\ ;
+境涯 < kyougai\ ;
+霜夜 < shimoyo\ ;
+女傑 < joketsu\ ;
+天女 < ten''nyo\ ;
+角瓶 < kakubin\ ;
+紡績 < bouseki\ ;
+旧主 < kyuushu\ ;
+大女 < ooon''na\ ;
+敵対 < tekitai\ ;
+計測 < keisoku\ ;
+新品 < shinpin\ ;
+明治座 < meijiza\ ;
+理想家 < risouka\ ;
+無熱 < munetsu\ ;
+土壇場 < dotanba\ ;
+二次会 < nijikai\ ;
+総桐 < sougiri\ ;
+論告 < ronkoku\ ;
+熱心 < nesshin\ ;
+奉告 < houkoku\ ;
+失地 < shitchi\ ;
+義務感 < gimukan\ ;
+数学 < suugaku\ ;
+撃砕 < gekisai\ ;
+読売 < yomiuri\ ;
+掘鑿 < kussaku\ ;
+雹害 < hyougai\ ;
+総柄 < sougara\ ;
+霊妙 < reimyou\ ;
+三叉路 < sansaro\ ;
+変容 < hen''you\ ;
+旅僧 < tabisou\ ;
+熟慮 < jukuryo\ ;
+炎色 < enshoku\ ;
+訳本 < yakuhon\ ;
+墨書 < bokusho\ ;
+紛糾 < funkyuu\ ;
+推量 < suiryou\ ;
+撞球 < doukyuu\ ;
+夙夜 < shukuya\ ;
+熱度 < netsudo\ ;
+震央 < shin''ou\ ;
+波布茶 < habucha\ ;
+累積 < ruiseki\ ;
+裏釘 < urakugi\ ;
+裏金 < uragane\ ;
+攪拌 < kakuhan\ ;
+陸橋 < rikkyou\ ;
+証文 < shoumon\ ;
+赤啄木鳥 < akagera\ ;
+不愛想 < buaisou\ ;
+診断 < shindan\ ;
+大国 < taikoku\ ;
+註文 < chuumon\ ;
+紺碧 < konpeki\ ;
+一箇年 < ikkanen\ ;
+改悛 < kaishun\ ;
+絶無 < zetsumu\ ;
+外壁 < gaiheki\ ;
+塞源 < sokugen\ ;
+大嘴 < oohashi\ ;
+新兵 < shinpei\ ;
+訳文 < yakubun\ ;
+予備金 < yobikin\ ;
+掛金 < kakekin\ ;
+敗将 < haishou\ ;
+推進 < suishin\ ;
+雄心 < yuushin\ ;
+敵塁 < tekirui\ ;
+網棚 < amidana\ ;
+陸棚 < rikuhou\ ;
+不可知 < fukachi\ ;
+国風 < kokufuu\ ;
+隆替 < ryuutai\ ;
+線描 < senbyou\ ;
+調合 < chougou\ ;
+菩提寺 < bodaiji\ ;
+硫黄山 < iouyama\ ;
+陰極 < inkyoku\ ;
+夏場 < natsuba\ ;
+素因数 < soinsuu\ ;
+複製 < fukusei\ ;
+外圧 < gaiatsu\ ;
+仏蘭西 < furansu\ ;
+熟年 < jukunen\ ;
+結球 < kekkyuu\ ;
+外国 < gaikoku\ ;
+接辞 < setsuji\ ;
+不合理 < fugouri\ ;
+精薄 < seihaku\ ;
+掃除婦 < soujifu\ ;
+捕食 < hoshoku\ ;
+敵国 < tekkoku\ ;
+野暮天 < yaboten\ ;
+変域 < hen''iki\ ;
+保護委員 < hogoiin\ ;
+陽暦 < youreki\ ;
+家具等 < kagutou\ ;
+大名 < daimyou\ ;
+薔薇色 < barairo\ ;
+国電 < kokuden\ ;
+大口 < ooguchi\ ;
+不愉快 < fuyukai\ ;
+農機具 < noukigu\ ;
+国難 < kokunan\ ;
+輸送費 < yusouhi\ ;
+齲 < mushiba\ ;
+陽春 < youshun\ ;
+看護婦 < kangofu\ ;
+国際 < kokusai\ ;
+紋章 < monshou\ ;
+地道 < jimichi\ ;
+親玉 < oyadama\ ;
+御神火 < gojinka\ ;
+故実 < kojitsu\ ;
+国防 < kokubou\ ;
+放尿 < hounyou\ ;
+文博 < bunhaku\ ;
+予備軍 < yobigun\ ;
+擯斥 < hinseki\ ;
+縮図 < shukuzu\ ;
+間膜 < kanmaku\ ;
+大力 < dairiki\ ;
+推賞 < suishou\ ;
+激闘 < gekitou\ ;
+外周 < gaishuu\ ;
+古文書 < komonjo\ ;
+困難 < kon''nan\ ;
+縦坑 < tatekou\ ;
+給源 < kyuugen\ ;
+露仏 < rofutsu\ ;
+自衛権 < jieiken\ ;
+誡告 < kaikoku\ ;
+地軸 < chijiku\ ;
+大凶 < daikyou\ ;
+鶫 < tsugumi\ ;
+要目 < youmoku\ ;
+組版 < kumihan\ ;
+織元 < orimoto\ ;
+襟章 < erishou\ ;
+鵤 < ikaruga\ ;
+雛壇 < hinadan\ ;
+鵆 < chidori\ ;
+純真 < junshin\ ;
+隷属 < reizoku\ ;
+斜交 < hasukai\ ;
+繁劇 < hangeki\ ;
+煩悩 < bon''nou\ ;
+売国 < baikoku\ ;
+純益 < jun''eki\ ;
+料亭 < ryoutei\ ;
+緞帳 < donchou\ ;
+鰘 < muroaji\ ;
+敵勢 < tekizei\ ;
+表面 < hyoumen\ ;
+長芋 < nagaimo\ ;
+純白 < junpaku\ ;
+鯳 < sukesou\ ;
+防毒 < boudoku\ ;
+数匹 < suuhiki\ ;
+電卓 < dentaku\ ;
+終点 < shuuten\ ;
+緊急 < kinkyuu\ ;
+敵前 < tekizen\ ;
+夕凪 < yuunagi\ ;
+合氣道 < aikidou\ ;
+繚乱 < ryouran\ ;
+縄墨 < jouboku\ ;
+鬘 < katsura\ ;
+親潮 < oyashio\ ;
+点火器 < tenkaki\ ;
+補血 < hoketsu\ ;
+観測 < kansoku\ ;
+煮干 < niboshi\ ;
+綱手 < tsunade\ ;
+陸戦 < rikusen\ ;
+羽二重 < habutae\ ;
+集塵 < shuujin\ ;
+規準化 < kijunka\ ;
+隔年 < kakunen\ ;
+高度差 < koudosa\ ;
+無札 < musatsu\ ;
+無月 < mugetsu\ ;
+熱唱 < nesshou\ ;
+寄付金 < kifukin\ ;
+斉一 < seiitsu\ ;
+火口湖 < kakouko\ ;
+増強 < zoukyou\ ;
+険悪 < ken''aku\ ;
+長老 < chourou\ ;
+政治屋 < seijiya\ ;
+行頭 < gyoutou\ ;
+個々人 < kokojin\ ;
+隠密 < onmitsu\ ;
+霍乱 < kakuran\ ;
+国道 < kokudou\ ;
+結氷 < keppyou\ ;
+集団 < shuudan\ ;
+政治家 < seijika\ ;
+国連 < kokuren\ ;
+運営費 < un''eihi\ ;
+陳情 < chinjou\ ;
+火箸 < hibashi\ ;
+蝦夷菊 < ezogiku\ ;
+売卜 < baiboku\ ;
+敗北 < haiboku\ ;
+増幅 < zoufuku\ ;
+保護林 < hogorin\ ;
+潮騒 < shiosai\ ;
+木戸番 < kidoban\ ;
+索然 < sakuzen\ ;
+綾布 < ayanuno\ ;
+粘膜 < nenmaku\ ;
+摂理 < setsuri\ ;
+雪冤 < setsuen\ ;
+墨守 < bokushu\ ;
+粉茶 < konacha\ ;
+角材 < kakuzai\ ;
+経歴 < keireki\ ;
+離別 < ribetsu\ ;
+闘牛 < tougyuu\ ;
+摩滅 < mametsu\ ;
+国軍 < kokugun\ ;
+濫觴 < ranshou\ ;
+教典 < kyouten\ ;
+地表 < chihyou\ ;
+推薬 < suiyaku\ ;
+陳弁 < chinben\ ;
+炬燵 < kotatsu\ ;
+行間 < gyoukan\ ;
+開立 < kairyuu\ ;
+撞木 < shumoku\ ;
+浅知恵 < asadjie\ ;
+雑務 < zatsumu\ ;
+細流 < sairyuu\ ;
+集合 < shuugou\ ;
+地蜂 < jibachi\ ;
+青豌豆 < aoendou\ ;
+険峻 < kenshun\ ;
+街録 < gairoku\ ;
+女丈夫 < jojoubu\ ;
+円記号 < enkigou\ ;
+雑則 < zassoku\ ;
+装薬 < souyaku\ ;
+国賓 < kokuhin\ ;
+陸岸 < rikugan\ ;
+塗抹 < tomatsu\ ;
+陽射 < hizashi\ ;
+関白 < kanpaku\ ;
+焦慮 < shouryo\ ;
+亜寒帯 < akantai\ ;
+振鈴 < shinrei\ ;
+雑兵 < zouhyou\ ;
+隣国 < ringoku\ ;
+雀卓 < jantaku\ ;
+雪中 < setchuu\ ;
+墨堤 < bokutei\ ;
+託宣 < takusen\ ;
+損益 < son''eki\ ;
+陣幕 < jinmaku\ ;
+江戸川 < edogawa\ ;
+灰皿 < haizara\ ;
+結束 < kessoku\ ;
+灰白 < kaihaku\ ;
+親株 < oyakabu\ ;
+幼児語 < youjigo\ ;
+鎹 < kasugai\ ;
+国論 < kokuron\ ;
+緑土 < ryokudo\ ;
+激論 < gekiron\ ;
+暗暗裡 < an''anri\ ;
+不浄場 < fujouba\ ;
+要求 < youkyuu\ ;
+鋩 < kissaki\ ;
+熱中 < netchuu\ ;
+湯治場 < toujiba\ ;
+裏腹 < urahara\ ;
+評判 < hyouban\ ;
+納涼 < nouryou\ ;
+図説 < zusetsu\ ;
+間男 < maotoko\ ;
+摺本 < shouhon\ ;
+脳味噌 < noumiso\ ;
+雑事 < zatsuji\ ;
+子画面 < kogamen\ ;
+絶息 < zessoku\ ;
+陣容 < jin''you\ ;
+陸大 < rikudai\ ;
+褥瘡 < jokusou\ ;
+粗筋 < arasuji\ ;
+長短 < choutan\ ;
+親方 < oyakata\ ;
+可視化 < kashika\ ;
+設営 < setsuei\ ;
+絵心 < egokoro\ ;
+拝領 < hairyou\ ;
+絶後 < zetsugo\ ;
+不注意 < fuchuui\ ;
+粘稠 < nenchuu\ ;
+撮影 < satsuei\ ;
+護衛艦 < goeikan\ ;
+塩害 < shiogai\ ;
+補綴 < hotetsu\ ;
+篤農 < tokunou\ ;
+揮発 < kihatsu\ ;
+烏木 < kokutan\ ;
+次打者 < jidasha\ ;
+堆朱 < tsuishu\ ;
+陸地 < rikuchi\ ;
+境域 < kyouiki\ ;
+披露宴 < hirouen\ ;
+照合 < shougou\ ;
+評伝 < hyouden\ ;
+自衛官 < jieikan\ ;
+型番 < kataban\ ;
+焼売 < shuumai\ ;
+留守番 < rusuban\ ;
+複眼 < fukugan\ ;
+亜音速 < aonsoku\ ;
+無宿 < mushuku\ ;
+角帽 < kakubou\ ;
+長男 < chounan\ ;
+親指 < oyayubi\ ;
+角帯 < kakuobi\ ;
+無実 < mujitsu\ ;
+索条 < sakujou\ ;
+総則 < sousoku\ ;
+蹄 < hidzume\ ;
+増収 < zoushuu\ ;
+綾取 < ayatori\ ;
+続報 < zokuhou\ ;
+報徳 < houtoku\ ;
+摩擦 < masatsu\ ;
+報復 < houfuku\ ;
+御注意 < gochuui\ ;
+見料 < kenryou\ ;
+表装 < hyousou\ ;
+国葬 < kokusou\ ;
+西暦 < seireki\ ;
+籠絡 < rouraku\ ;
+医科学 < ikagaku\ ;
+粗皮 < arakawa\ ;
+炭柱 < tanchuu\ ;
+観念 < kan''nen\ ;
+純朴 < junboku\ ;
+訓告 < kunkoku\ ;
+西日 < nishibi\ ;
+米穀 < beikoku\ ;
+異方性 < ihousei\ ;
+擁壁 < youheki\ ;
+設備 < setsubi\ ;
+血豆 < chimame\ ;
+圧縮 < asshuku\ ;
+緒作 < shosaku\ ;
+無鑑査 < mukansa\ ;
+級数 < kyuusuu\ ;
+紋服 < monpuku\ ;
+裕福 < yuufuku\ ;
+掛算 < kakezan\ ;
+絵姿 < esugata\ ;
+謬 < ayamari\ ;
+地籍 < chiseki\ ;
+二番目 < nibanme\ ;
+探究 < tankyuu\ ;
+粒界 < ryuukai\ ;
+硬化油 < koukayu\ ;
+損流 < sonryuu\ ;
+誼 < yoshimi\ ;
+映画祭 < eigasai\ ;
+誮 < yasashi\ ;
+漆食 < shikkui\ ;
+映画社 < eigasha\ ;
+点描 < tenbyou\ ;
+不正規 < fuseiki\ ;
+荊棘線 < barasen\ ;
+拓銀 < takugin\ ;
+絶壁 < zeppeki\ ;
+慰霊祭 < ireisai\ ;
+学校医 < gakkoui\ ;
+陸兵 < rikuhei\ ;
+綱具 < tsunagu\ ;
+粗玉 < aratama\ ;
+網元 < amimoto\ ;
+言及 < genkyuu\ ;
+金文字 < kinmoji\ ;
+糸枠 < itowaku\ ;
+除却 < jokyaku\ ;
+漫録 < manroku\ ;
+随一 < zuiichi\ ;
+糸杉 < itosugi\ ;
+灰殻 < haigara\ ;
+摂政 < sesshou\ ;
+襅 < chihaya\ ;
+塩味 < shioaji\ ;
+結尾 < ketsubi\ ;
+約数 < yakusuu\ ;
+防壁 < bouheki\ ;
+御法度 < gohatto\ ;
+塁壁 < ruiheki\ ;
+結審 < kesshin\ ;
+拙速 < sessoku\ ;
+撮土 < satsudo\ ;
+気保養 < kihoyou\ ;
+蠎 < uwabami\ ;
+鉄火場 < tekkaba\ ;
+勤務員 < kinmuin\ ;
+角地 < kadochi\ ;
+経学 < keigaku\ ;
+粋狂 < suikyou\ ;
+裏白 < urajiro\ ;
+塵入 < gomiire\ ;
+異星人 < iseijin\ ;
+細帯 < hosoobi\ ;
+蜆 < shijimi\ ;
+無口 < mukuchi\ ;
+執念 < shuunen\ ;
+陸上 < rikujou\ ;
+映画界 < eigakai\ ;
+漫遊 < man''yuu\ ;
+絶唱 < zesshou\ ;
+虱 < shirami\ ;
+五畿内 < gokinai\ ;
+御破算 < gohasan\ ;
+地目 < chimoku\ ;
+否定語 < hiteigo\ ;
+無力 < muryoku\ ;
+蕾 < tsubomi\ ;
+抽選 < chuusen\ ;
+絶叫 < zekkyou\ ;
+違憲性 < ikensei\ ;
+塩化銀 < enkagin\ ;
+国粋 < kokusui\ ;
+閉業 < heigyou\ ;
+米独 < beidoku\ ;
+振舞 < furumai\ ;
+保護司 < hogoshi\ ;
+長歌 < nagauta\ ;
+納得 < nattoku\ ;
+土着 < dochaku\ ;
+国等 < kokutou\ ;
+堂守 < doumori\ ;
+拝謁 < haietsu\ ;
+得意気 < tokuige\ ;
+撤収 < tesshuu\ ;
+灯明 < toumyou\ ;
+拝読 < haidoku\ ;
+等閑 < naozari\ ;
+鏤骨 < rukotsu\ ;
+手細工 < tezaiku\ ;
+舎利塩 < sharien\ ;
+在留 < zairyuu\ ;
+損料 < sonryou\ ;
+圭璧 < keiheki\ ;
+描法 < byouhou\ ;
+親馬鹿 < oyabaka\ ;
+舞踊家 < butouka\ ;
+国税 < kokuzei\ ;
+奇形児 < kikeiji\ ;
+門柱 < monchuu\ ;
+午後中 < gogojuu\ ;
+艀 < hashike\ ;
+困窮 < konkyuu\ ;
+表紙 < hyoushi\ ;
+烈女 < retsujo\ ;
+詭弁家 < kibenka\ ;
+親善 < shinzen\ ;
+漫読 < mandoku\ ;
+関所 < sekisho\ ;
+糸底 < itozoko\ ;
+漫評 < manpyou\ ;
+見境 < misakai\ ;
+聢 < shikato\ ;
+胃洗浄 < isenjou\ ;
+折込 < orikomi\ ;
+不同化 < fudouka\ ;
+翼 < tsubasa\ ;
+異教徒 < ikyouto\ ;
+授爵 < jushaku\ ;
+鏡面 < kyoumen\ ;
+固着 < kochaku\ ;
+推測 < suisoku\ ;
+国益 < kokueki\ ;
+湯加減 < yukagen\ ;
+約定 < yakujou\ ;
+非課税 < hikazei\ ;
+和楽器 < wagakki\ ;
+統一 < touitsu\ ;
+開拓 < kaitaku\ ;
+補殺 < hosatsu\ ;
+糸屑 < itokuzu\ ;
+違法者 < ihousha\ ;
+撃剣 < gekiken\ ;
+扁額 < hengaku\ ;
+演説 < enzetsu\ ;
+所領 < shoryou\ ;
+竹馬 < chikuba\ ;
+国産 < kokusan\ ;
+血縁 < ketsuen\ ;
+複方 < fukuhou\ ;
+粗末 < somatsu\ ;
+鎮魂 < chingon\ ;
+複数 < fukusuu\ ;
+損得 < sontoku\ ;
+堕力 < daryoku\ ;
+輸送機 < yusouki\ ;
+与野党 < yoyatou\ ;
+血糊 < chinori\ ;
+引火点 < inkaten\ ;
+漸落 < zenraku\ ;
+粗方 < arakata\ ;
+糸姫 < itohime\ ;
+節義 < setsugi\ ;
+羽子板 < hagoita\ ;
+筆蹟 < hisseki\ ;
+音沙汰 < otosata\ ;
+禾本科 < kahonka\ ;
+不可分 < fukabun\ ;
+終値 < owarine\ ;
+血筋 < chisuji\ ;
+城壁 < jouheki\ ;
+鼠径部 < sokeibu\ ;
+地殻 < chikaku\ ;
+策謀 < sakubou\ ;
+融通 < yuudzuu\ ;
+開幕 < kaimaku\ ;
+喫驚 < bikkuri\ ;
+閉幕 < heimaku\ ;
+鎖骨 < sakotsu\ ;
+満額 < mangaku\ ;
+街着 < machigi\ ;
+圧殺 < assatsu\ ;
+鎮静 < chinsei\ ;
+無技巧 < mugikou\ ;
+蟋蟀 < koorogi\ ;
+拝聴 < haichou\ ;
+濁点 < dakuten\ ;
+蠏缶 < kanikan\ ;
+礎 < ishizue\ ;
+長径 < choukei\ ;
+都議会 < togikai\ ;
+推服 < suifuku\ ;
+閑寂 < kanjaku\ ;
+糾問 < kyuumon\ ;
+裏書 < uragaki\ ;
+予備校 < yobikou\ ;
+長幼 < chouyou\ ;
+搾取 < sakushu\ ;
+堅人 < katajin\ ;
+土橋 < dobashi\ ;
+観世音 < kanzeon\ ;
+手近 < tedjika\ ;
+裏方 < urakata\ ;
+半過去 < hankako\ ;
+不参加 < fusanka\ ;
+激減 < gekigen\ ;
+粗忽 < sokotsu\ ;
+納入 < nounyuu\ ;
+技術 < gijutsu\ ;
+投薬 < touyaku\ ;
+激浪 < gekirou\ ;
+恣意性 < shiisei\ ;
+国法 < kokuhou\ ;
+粒径 < ryuukei\ ;
+甦 < yomigae\ ;
+付加税 < fukazei\ ;
+国民 < kokumin\ ;
+精妙 < seimyou\ ;
+濁水 < dakusui\ ;
+時計座 < tokeiza\ ;
+排斥 < haiseki\ ;
+部屋代 < heyadai\ ;
+母音性 < boinsei\ ;
+行状 < gyoujou\ ;
+蝶貝 < chougai\ ;
+不得意 < futokui\ ;
+襟元 < erimoto\ ;
+電話機 < denwaki\ ;
+無担保 < mutanpo\ ;
+懸隔 < kenkaku\ ;
+裏技 < urawaza\ ;
+在方 < zaikata\ ;
+竹輪 < chikuwa\ ;
+排撃 < haigeki\ ;
+措辞法 < sojihou\ ;
+採択 < saitaku\ ;
+八九分 < hakkubu\ ;
+螟虫 < meichuu\ ;
+災厄 < saiyaku\ ;
+土日 < donichi\ ;
+根太板 < nedaita\ ;
+成銀 < narigin\ ;
+牜 < ushihen\ ;
+範疇 < hanchuu\ ;
+火加減 < hikagen\ ;
+亜燐酸 < arinsan\ ;
+時計屋 < tokeiya\ ;
+掌握 < shouaku\ ;
+成金 < narikin\ ;
+潔白 < keppaku\ ;
+青二才 < aonisai\ ;
+潔癖 < keppeki\ ;
+漢籍 < kanseki\ ;
+圧接 < assetsu\ ;
+野放図 < nohouzu\ ;
+粒子 < ryuushi\ ;
+才覚 < saikaku\ ;
+火口 < higuchi\ ;
+所謂 < iwayuru\ ;
+間口 < maguchi\ ;
+閣内 < kakunai\ ;
+幼児期 < youjiki\ ;
+満身 < manshin\ ;
+按摩膏 < anmakou\ ;
+気苦労 < kigurou\ ;
+裏庭 < uraniwa\ ;
+裏店 < uradana\ ;
+国有 < kokuyuu\ ;
+政府案 < seifuan\ ;
+国書 < kokusho\ ;
+火力 < karyoku\ ;
+竜車 < ryuusha\ ;
+予備役 < yobieki\ ;
+我輩 < wagahai\ ;
+満足 < manzoku\ ;
+血潮 < chishio\ ;
+漆絵 < urushie\ ;
+齷齪 < akuseku\ ;
+地心 < chishin\ ;
+空馬 < karauma\ ;
+国文 < kokubun\ ;
+国教 < kokkyou\ ;
+国政 < kokusei\ ;
+米審 < beishin\ ;
+坩堝 < rutsubo\ ;
+不道理 < fudouri\ ;
+金無垢 < kinmuku\ ;
+団栗 < donguri\ ;
+図星 < zuboshi\ ;
+裏山 < urayama\ ;
+折紙 < origami\ ;
+行水 < gyouzui\ ;
+粉壁 < funpeki\ ;
+偽造印 < gizouin\ ;
+立身 < risshin\ ;
+竹製 < takesei\ ;
+無批判 < muhihan\ ;
+血沈 < ketchin\ ;
+手蔓 < tedzuru\ ;
+毮 < mushiru\ ;
+図書費 < toshohi\ ;
+火付 < hitsuke\ ;
+幸運児 < kouunji\ ;
+唐黍 < toukibi\ ;
+地峡 < chikyou\ ;
+塩水湖 < ensuiko\ ;
+流布本 < rufubon\ ;
+築港 < chikkou\ ;
+空隙 < kuugeki\ ;
+抜穴 < nukeana\ ;
+山茶花 < sazanka\ ;
+移民法 < iminhou\ ;
+空陸 < kuuriku\ ;
+鬼百合 < oniyuri\ ;
+間中 < aidajuu\ ;
+排尿 < hainyou\ ;
+国手 < kokushu\ ;
+表明 < hyoumei\ ;
+奈良県 < naraken\ ;
+不勝手 < fukatte\ ;
+回教 < kaikyou\ ;
+地学 < chigaku\ ;
+漁礁 < gyoshou\ ;
+表敬 < hyoukei\ ;
+激憤 < gekifun\ ;
+潤沢 < juntaku\ ;
+振替 < furikae\ ;
+篦棒 < berabou\ ;
+投票 < touhyou\ ;
+国情 < kokujou\ ;
+在宅 < zaitaku\ ;
+不利益 < furieki\ ;
+在学 < zaigaku\ ;
+市吏員 < shiriin\ ;
+意見書 < ikensho\ ;
+慰霊塔 < ireitou\ ;
+立証 < risshou\ ;
+棗 < natsume\ ;
+掛声 < kakegoe\ ;
+梻 < shikimi\ ;
+我利勉 < gariben\ ;
+行末 < yukusue\ ;
+行書 < gyousho\ ;
+渾身 < konshin\ ;
+困惑 < konwaku\ ;
+衆望 < shuubou\ ;
+減量 < genryou\ ;
+曙 < akebono\ ;
+擬宝珠 < giboshi\ ;
+大和絵 < yamatoe\ ;
+行数 < gyousuu\ ;
+図式 < zushiki\ ;
+小切手 < kogitte\ ;
+漿液 < shoueki\ ;
+晒 < sarashi\ ;
+転路器 < tenroki\ ;
+穀類 < kokurui\ ;
+漠然 < bakuzen\ ;
+突進 < tosshin\ ;
+米収 < beishuu\ ;
+旁 < tsukuri\ ;
+判事補 < hanjiho\ ;
+屠蘇散 < tososan\ ;
+穿通 < sentsuu\ ;
+表情 < hyoujou\ ;
+噴流 < funryuu\ ;
+種馬 < taneuma\ ;
+淡雪 < awayuki\ ;
+参議院 < sangiin\ ;
+接受 < setsuju\ ;
+挨拶 < aisatsu\ ;
+挫折 < zasetsu\ ;
+接収 < sesshuu\ ;
+手綱 < tadzuna\ ;
+国対 < kokutai\ ;
+予備品 < yobihin\ ;
+漁獲 < gyokaku\ ;
+扉絵 < tobirae\ ;
+漁猟 < gyoryou\ ;
+国定 < kokutei\ ;
+理工科 < rikouka\ ;
+火葬場 < kasouba\ ;
+唇音 < shin''on\ ;
+寒垢離 < kangori\ ;
+行成 < ikinari\ ;
+滑石 < kasseki\ ;
+防衛費 < boueihi\ ;
+地口 < jiguchi\ ;
+手箒 < tebouki\ ;
+唐門 < karamon\ ;
+馬小屋 < umagoya\ ;
+竜脳 < ryuunou\ ;
+国大 < kokudai\ ;
+米俗 < beizoku\ ;
+国外 < kokugai\ ;
+裏側 < uragawa\ ;
+濁声 < damigoe\ ;
+米作 < beisaku\ ;
+予備兵 < yobihei\ ;
+唱道 < shoudou\ ;
+問責 < monseki\ ;
+空谷 < kuukoku\ ;
+激増 < gekizou\ ;
+小道具 < kodougu\ ;
+端綱 < hadzuna\ ;
+深遠 < shin''en\ ;
+裏作 < urasaku\ ;
+裂傷 < resshou\ ;
+蛮襟 < bankara\ ;
+希元素 < kigenso\ ;
+怺 < koraeru\ ;
+世界語 < sekaigo\ ;
+米中 < beichuu\ ;
+立腹 < rippuku\ ;
+税額 < zeigaku\ ;
+竿竹 < saodake\ ;
+淫逸 < in''itsu\ ;
+徤 < takeshi\ ;
+護衛兵 < goeihei\ ;
+空調 < kuuchou\ ;
+虫類 < chuurui\ ;
+形而下 < keijika\ ;
+捺印 < natsuin\ ;
+衆庶 < shuusho\ ;
+竹竿 < takezao\ ;
+青電話 < aodenwa\ ;
+二枚目 < nimaime\ ;
+問診 < monshin\ ;
+拓本 < takuhon\ ;
+積載 < sekisai\ ;
+空襲 < kuushuu\ ;
+他府県 < tafuken\ ;
+保線区 < hosenku\ ;
+巽 < tatsumi\ ;
+在俗 < zaizoku\ ;
+出稽古 < degeiko\ ;
+空行 < kuugyou\ ;
+地主 < jinushi\ ;
+不具者 < fugusha\ ;
+地中 < chichuu\ ;
+演算機 < enzanki\ ;
+遺伝法 < idenhou\ ;
+国号 < kokugou\ ;
+錯角 < sakkaku\ ;
+在京 < zaikyou\ ;
+拍数 < hakusuu\ ;
+遺家族 < ikazoku\ ;
+小利口 < korikou\ ;
+在中 < zaichuu\ ;
+表在 < hyouzai\ ;
+滴水 < tekisui\ ;
+打率 < daritsu\ ;
+鋳造 < chuuzou\ ;
+四国 < shikoku\ ;
+国労 < kokurou\ ;
+激動 < gekidou\ ;
+立米 < ryuubei\ ;
+筋注 < kinchuu\ ;
+激励 < gekirei\ ;
+抑止 < yokushi\ ;
+漢族 < kanzoku\ ;
+節度 < setsudo\ ;
+天気運 < tenkiun\ ;
+漁業 < gyogyou\ ;
+液量 < ekiryou\ ;
+府議会 < fugikai\ ;
+蛇蠍 < dakatsu\ ;
+国内 < kokunai\ ;
+国典 < kokuten\ ;
+蝋石 < rouseki\ ;
+竜神 < ryuujin\ ;
+消防 < shoubou\ ;
+流麗 < ryuurei\ ;
+端的 < tanteki\ ;
+温色 < onshoku\ ;
+準用 < jun''you\ ;
+穴蔵 < anagura\ ;
+拍手 < hakushu\ ;
+手燭 < teshoku\ ;
+壬 < mizunoe\ ;
+止音器 < shionki\ ;
+合気会 < aikikai\ ;
+醍醐味 < daigomi\ ;
+箱師 < hakoshi\ ;
+表号 < hyougou\ ;
+黄麻 < tsunaso\ ;
+虫酸 < mushizu\ ;
+満目 < manmoku\ ;
+拝復 < haifuku\ ;
+鐘楼 < shourou\ ;
+立秋 < risshuu\ ;
+秋風 < shuufuu\ ;
+押捺 < ounatsu\ ;
+意図的 < itoteki\ ;
+浦風 < urakaze\ ;
+空茶 < karacha\ ;
+竜眼 < ryuugan\ ;
+海陸 < kairiku\ ;
+地磁気 < chijiki\ ;
+税込 < zeikomi\ ;
+生意気 < namaiki\ ;
+黒鯛 < kurodai\ ;
+空色 < sorairo\ ;
+四次元 < yojigen\ ;
+挙国 < kyokoku\ ;
+衰兆 < suichou\ ;
+国中 < kunijuu\ ;
+秋霜 < shuusou\ ;
+喉笛 < nodobue\ ;
+秋霖 < shuurin\ ;
+御目玉 < omedama\ ;
+行啓 < gyoukei\ ;
+嚏 < kushami\ ;
+秋雨 < akisame\ ;
+空腹 < kuufuku\ ;
+挿入 < sounyuu\ ;
+和食 < washoku\ ;
+抜擢 < batteki\ ;
+鍵穴 < kagiana\ ;
+蟻巻 < arimaki\ ;
+指圧 < shiatsu\ ;
+投擲 < touteki\ ;
+公文所 < kumonjo\ ;
+指図 < sashizu\ ;
+御座所 < gozasho\ ;
+溺水 < dekisui\ ;
+大鋸屑 < ogakuzu\ ;
+築地 < tsukiji\ ;
+甘海苔 < amanori\ ;
+建議案 < kengian\ ;
+蝋燭 < rousoku\ ;
+溺死 < dekishi\ ;
+碁会所 < gokaijo\ ;
+拙宅 < settaku\ ;
+手沢 < shutaku\ ;
+抑揚 < yokuyou\ ;
+笊法 < zaruhou\ ;
+懇篤 < kontoku\ ;
+唐薯 < karaimo\ ;
+税調 < zeichou\ ;
+蘭鋳 < ranchuu\ ;
+拡大 < kakudai\ ;
+防火戸 < boukado\ ;
+銅鐸 < doutaku\ ;
+登山家 < tozanka\ ;
+炊事場 < suijiba\ ;
+成熟 < seijuku\ ;
+溜池 < tameike\ ;
+浦里 < urazato\ ;
+英文科 < eibunka\ ;
+湯熨 < yunoshi\ ;
+喫煙 < kitsuen\ ;
+満潮 < manchou\ ;
+嚇嚇 < kakkaku\ ;
+拓大 < takudai\ ;
+源流 < genryuu\ ;
+穎脱 < eidatsu\ ;
+突端 < toppana\ ;
+酸性雨 < sanseiu\ ;
+黄雀 < koujaku\ ;
+喀痰 < kakutan\ ;
+鼻血 < hanadji\ ;
+錯綜 < sakusou\ ;
+術中 < jutchuu\ ;
+派生語 < haseigo\ ;
+派閥 < habatsu\ ;
+遺伝性 < idensei\ ;
+医療費 < iryouhi\ ;
+大祖父 < daisofu\ ;
+麻雀 < mazejan\ ;
+篆刻 < tenkoku\ ;
+軍荼利 < gundari\ ;
+戯歌 < zareuta\ ;
+唐臼 < karausu\ ;
+満洲 < manshuu\ ;
+湾流 < wanryuu\ ;
+善玉 < zendama\ ;
+私通 < shitsuu\ ;
+種苗 < shubyou\ ;
+白亜紀 < hakuaki\ ;
+丼 < donburi\ ;
+海賊 < kaizoku\ ;
+種芋 < taneimo\ ;
+戦歴 < senreki\ ;
+騎馬戦 < kibasen\ ;
+目一杯 < meippai\ ;
+指値 < sashine\ ;
+記事文 < kijibun\ ;
+海象 < seiuchi\ ;
+押売 < oshiuri\ ;
+品評 < hinpyou\ ;
+惨酷 < zankoku\ ;
+和太鼓 < wadaiko\ ;
+悪食 < akujiki\ ;
+蛮的 < banteki\ ;
+予定案 < yoteian\ ;
+神髄 < shinzui\ ;
+蘇鉄 < sotetsu\ ;
+蟄居 < chikkyo\ ;
+愚説 < gusetsu\ ;
+懸濁 < kendaku\ ;
+溝板 < dobuita\ ;
+符号器 < fugouki\ ;
+嚢中 < nouchuu\ ;
+書記補 < shokiho\ ;
+秘訣 < hiketsu\ ;
+空白 < kuuhaku\ ;
+応援団 < ouendan\ ;
+遺伝子 < idenshi\ ;
+除草器 < josouki\ ;
+虹色 < nijiiro\ ;
+策定 < sakutei\ ;
+流連 < ryuuren\ ;
+積算 < sekisan\ ;
+予定日 < yoteibi\ ;
+悪阻 < tsuwari\ ;
+戯曲 < gikyoku\ ;
+保持者 < hojisha\ ;
+拡充 < kakujuu\ ;
+穀粉 < kokufun\ ;
+唐糸 < karaito\ ;
+鉄鎚 < tettsui\ ;
+空瓶 < karabin\ ;
+単位元 < tanigen\ ;
+意地悪 < ijiwaru\ ;
+満株 < mankabu\ ;
+秘術 < hijutsu\ ;
+蛋白 < tanpaku\ ;
+上出来 < joudeki\ ;
+周遊 < shuuyuu\ ;
+符号化 < fugouka\ ;
+滅度 < metsudo\ ;
+満更 < manzara\ ;
+周辺 < shuuhen\ ;
+成桂 < narikei\ ;
+海蛇 < umihebi\ ;
+活路 < katsuro\ ;
+黒貂 < kuroten\ ;
+不相応 < fusouou\ ;
+銭葵 < zeniaoi\ ;
+英語版 < eigoban\ ;
+重火器 < juukaki\ ;
+波音 < namioto\ ;
+摩利支 < marishi\ ;
+稜線 < ryousen\ ;
+異端視 < itanshi\ ;
+才徳 < saitoku\ ;
+立案 < ritsuan\ ;
+黙認 < mokunin\ ;
+空爆 < kuubaku\ ;
+各駅 < kakueki\ ;
+押入 < oshiire\ ;
+混用 < kon''you\ ;
+渦潮 < uzushio\ ;
+葬儀屋 < sougiya\ ;
+項位置 < kouichi\ ;
+釣魚 < chougyo\ ;
+我方 < wagahou\ ;
+穴熊 < anaguma\ ;
+所得 < shotoku\ ;
+医師法 < ishihou\ ;
+溜息 < tameiki\ ;
+恭順 < kyoujun\ ;
+漏刻 < roukoku\ ;
+葡萄園 < budouen\ ;
+薩長 < satchou\ ;
+流言 < ryuugen\ ;
+担任 < tan''nin\ ;
+立春 < risshun\ ;
+窯業 < yougyou\ ;
+抜去 < bakkyou\ ;
+温浴 < on''yoku\ ;
+禁足 < kinsoku\ ;
+準急 < junkyuu\ ;
+吃音 < kitsuon\ ;
+鉄路 < tetsuro\ ;
+五斗米 < gotobei\ ;
+社長 < shachou\ ;
+各面 < kakumen\ ;
+黒血 < kurochi\ ;
+消耗 < shoumou\ ;
+竣成 < shunsei\ ;
+黒蟻 < kuroari\ ;
+可愛気 < kawaige\ ;
+流行 < ryuukou\ ;
+窒死 < chisshi\ ;
+金高 < kindaka\ ;
+五線譜 < gosenfu\ ;
+各階 < kakukai\ ;
+秋草 < akikusa\ ;
+才学 < saigaku\ ;
+御府内 < gofunai\ ;
+子馬座 < koumaza\ ;
+愉色 < yushoku\ ;
+小芥子 < kokeshi\ ;
+清濁 < seidaku\ ;
+周覧 < shuuran\ ;
+恒温器 < kouonki\ ;
+所属 < shozoku\ ;
+戦役 < sen''eki\ ;
+知恵者 < chiesha\ ;
+薄雲 < usugumo\ ;
+薄雪 < usuyuki\ ;
+祝辞 < shukuji\ ;
+抑制 < yokusei\ ;
+恋風 < koikaze\ ;
+神輿 < mikoshi\ ;
+遺贈分 < izoubun\ ;
+鹿追 < shikaoi\ ;
+祖述 < sojutsu\ ;
+戊戌 < bojutsu\ ;
+薬酒 < yakushu\ ;
+呪術 < jujutsu\ ;
+古顔 < furugao\ ;
+太刀魚 < tachiuo\ ;
+手妻 < tedzuma\ ;
+混濁 < kondaku\ ;
+助演者 < joensha\ ;
+金額 < kingaku\ ;
+代理部 < dairibu\ ;
+惨落 < sanraku\ ;
+蘊蓄 < unchiku\ ;
+銀色 < gin''iro\ ;
+麦角 < bakkaku\ ;
+台閣 < daikaku\ ;
+満席 < manseki\ ;
+移動体 < idoutai\ ;
+運動費 < undouhi\ ;
+天鵝絨 < biroudo\ ;
+一酸化 < issanka\ ;
+祝賀 < shukuga\ ;
+悪評 < akuhyou\ ;
+悪訳 < akuyaku\ ;
+蕪雑 < buzatsu\ ;
+黒茶 < kurocha\ ;
+税目 < zeimoku\ ;
+遠距離 < enkyori\ ;
+佐賀県 < sagaken\ ;
+示達 < jitatsu\ ;
+虎穴 < koketsu\ ;
+高音部 < kouonbu\ ;
+鎮定 < chintei\ ;
+異端者 < itansha\ ;
+筒井 < tsutsui\ ;
+哲理 < tetsuri\ ;
+鈍足 < donsoku\ ;
+空桶 < karaoke\ ;
+薄鈍 < usunoro\ ;
+懲悪 < chouaku\ ;
+空株 < kuukabu\ ;
+蛮族 < banzoku\ ;
+笛吹 < fuefuki\ ;
+感化院 < kankain\ ;
+竜宮 < ryuuguu\ ;
+祝言 < shuugen\ ;
+恥辱 < chijoku\ ;
+不機嫌 < fukigen\ ;
+部外秘 < bugaihi\ ;
+善悪 < zen''aku\ ;
+重鎮 < juuchin\ ;
+薄遇 < hakuguu\ ;
+亜熱帯 < anettai\ ;
+手口 < teguchi\ ;
+沈降 < chinkou\ ;
+善徳 < zentoku\ ;
+淫欲 < in''yoku\ ;
+銀紙 < gingami\ ;
+富士山 < fujisan\ ;
+鈴蘭 < suzuran\ ;
+戦域 < sen''iki\ ;
+吟誦 < ginshou\ ;
+指揮所 < shikijo\ ;
+品目 < hinmoku\ ;
+醜類 < shuurui\ ;
+生醤油 < kijouyu\ ;
+銅箔 < douhaku\ ;
+戦国 < sengoku\ ;
+愛着 < aichaku\ ;
+浄瑠璃 < joururi\ ;
+補佐官 < hosakan\ ;
+鈍角 < donkaku\ ;
+麦茶 < mugicha\ ;
+黒線 < kokusen\ ;
+過去形 < kakokei\ ;
+草仮名 < sougana\ ;
+愚直 < guchoku\ ;
+銀箔 < ginpaku\ ;
+藤色 < fujiiro\ ;
+戸口 < toguchi\ ;
+空揚 < karaage\ ;
+銀笛 < ginteki\ ;
+御機嫌 < gokigen\ ;
+第一 < daiichi\ ;
+野道 < nomichi\ ;
+唐歌 < karauta\ ;
+同調 < douchou\ ;
+不履行 < furikou\ ;
+合調 < gouchou\ ;
+口輪 < kuchiwa\ ;
+忠魂 < chuukon\ ;
+各論 < kakuron\ ;
+合評 < gappyou\ ;
+叙述 < jojutsu\ ;
+立場 < tachiba\ ;
+唐様 < karayou\ ;
+阿弗利加 < afurika\ ;
+麻縄 < asanawa\ ;
+鶺鴒 < sekirei\ ;
+悪臭 < akushuu\ ;
+擬人化 < gijinka\ ;
+積木 < tsumiki\ ;
+準則 < junsoku\ ;
+鎮台 < chindai\ ;
+分度器 < bundoki\ ;
+沈酔 < chinsui\ ;
+黙祷 < mokutou\ ;
+金赤 < kin''aka\ ;
+立国 < rikkoku\ ;
+手中 < shuchuu\ ;
+手下 < teshita\ ;
+収載 < shuusai\ ;
+出目金 < demekin\ ;
+夜汽車 < yogisha\ ;
+満卓 < mantaku\ ;
+左派系 < sahakei\ ;
+渦巻 < uzumaki\ ;
+海猫 < umineko\ ;
+愚物 < gubutsu\ ;
+重責 < juuseki\ ;
+鼻汗 < hanaase\ ;
+急送 < kyuusou\ ;
+善女 < zen''nyo\ ;
+鉛筆 < enpitsu\ ;
+戒名 < kaimyou\ ;
+厄難 < yakunan\ ;
+海牛 < kaigyuu\ ;
+薬莢 < yakkyou\ ;
+鼻歌 < hanauta\ ;
+憑拠 < hyoukyo\ ;
+鉄索 < tessaku\ ;
+反越 < hanetsu\ ;
+吹聴 < fuichou\ ;
+湯口 < yuguchi\ ;
+古説 < kosetsu\ ;
+水飴 < mizuame\ ;
+即題 < sokudai\ ;
+口説 < kuzetsu\ ;
+詐欺罪 < sagizai\ ;
+種板 < taneita\ ;
+虫気 < mushike\ ;
+空席 < kuuseki\ ;
+測定 < sokutei\ ;
+饂飩屋 < udon''ya\ ;
+湾内 < wan''nai\ ;
+愕然 < gakuzen\ ;
+種本 < tanehon\ ;
+収賄 < shuuwai\ ;
+夢想家 < musouka\ ;
+記譜法 < kifuhou\ ;
+一死後 < isshigo\ ;
+重訳 < juuyaku\ ;
+鈍色 < nibiiro\ ;
+深慮 < shinryo\ ;
+非衛生 < hieisei\ ;
+種族 < shuzoku\ ;
+里親 < satooya\ ;
+黒痣 < kuroaza\ ;
+醋酸 < sakusan\ ;
+麦笛 < mugibue\ ;
+君臣 < kunshin\ ;
+洞穴 < horaana\ ;
+誤投下 < gotouka\ ;
+浸潤 < shinjun\ ;
+古血 < furuchi\ ;
+憂戚 < yuuseki\ ;
+含羞 < ganshuu\ ;
+空将 < kuushou\ ;
+水陸 < suiriku\ ;
+不自由 < fujiyuu\ ;
+流用 < ryuuyou\ ;
+満了 < manryou\ ;
+流産 < ryuuzan\ ;
+積悪 < sekiaku\ ;
+鉛直 < enchoku\ ;
+〃 < onajiku\ ;
+悪策 < akusaku\ ;
+麦秋 < mugiaki\ ;
+金融 < kin''yuu\ ;
+英数字 < eisuuji\ ;
+必需 < hitsuju\ ;
+神経 < shinkei\ ;
+反覆 < hanpuku\ ;
+突如 < totsujo\ ;
+液晶 < ekishou\ ;
+同腹 < doufuku\ ;
+積弊 < sekihei\ ;
+虚業 < kyogyou\ ;
+油菜 < aburana\ ;
+半額 < hangaku\ ;
+決議 < ketsugi\ ;
+鉄石 < tesseki\ ;
+快適 < kaiteki\ ;
+酷遇 < kokuguu\ ;
+黙然 < mokunen\ ;
+酪酸 < rakusan\ ;
+釉薬 < yuuyaku\ ;
+告知 < kokuchi\ ;
+知情意 < chijoui\ ;
+風呂桶 < furooke\ ;
+恋草 < koigusa\ ;
+浦波 < uranami\ ;
+薬籠 < yakurou\ ;
+英語圏 < eigoken\ ;
+空圧 < kuuatsu\ ;
+低音部 < teionbu\ ;
+秋水 < shuusui\ ;
+右腕 < migiude\ ;
+口茶 < kuchija\ ;
+徒食 < toshoku\ ;
+酪農 < rakunou\ ;
+薄肉 < usuniku\ ;
+北鮮 < hokusen\ ;
+黄熟 < koujuku\ ;
+二期制 < nikisei\ ;
+収蔵 < shuuzou\ ;
+浴槽 < yokusou\ ;
+金色 < konjiki\ ;
+擬声語 < giseigo\ ;
+原註 < genchuu\ ;
+悪症 < akushou\ ;
+悪病 < akubyou\ ;
+化骨 < kakotsu\ ;
+里芋 < satoimo\ ;
+反落 < hanraku\ ;
+心配 < shinpai\ ;
+氷輪 < hyourin\ ;
+感服 < kanpuku\ ;
+毒魚 < dokugyo\ ;
+私欲 < shiyoku\ ;
+鹿砦 < rokusai\ ;
+用務員 < youmuin\ ;
+窮乏 < kyuubou\ ;
+深夜 < shin''ya\ ;
+確認 < kakunin\ ;
+減収 < genshuu\ ;
+薬礼 < yakurei\ ;
+錨地 < byouchi\ ;
+薄縁 < usuberi\ ;
+御苦労 < gokurou\ ;
+未登記 < mitouki\ ;
+簡易化 < kan''ika\ ;
+薄絹 < usuginu\ ;
+快諾 < kaidaku\ ;
+北風 < hokufuu\ ;
+一過性 < ikkasei\ ;
+重聴 < juuchou\ ;
+銘柄 < meigara\ ;
+悪玉 < akudama\ ;
+秘曲 < hikyoku\ ;
+薄紙 < usugami\ ;
+薄紅 < usubeni\ ;
+運送費 < unsouhi\ ;
+渋味 < shibumi\ ;
+南進 < nanshin\ ;
+医師会 < ishikai\ ;
+銘木 < meiboku\ ;
+名称 < meishou\ ;
+流汗 < ryuukan\ ;
+北面 < hokumen\ ;
+悉皆 < shikkai\ ;
+流水 < ryuusui\ ;
+自叙伝 < jijoden\ ;
+突先 < tossaki\ ;
+活況 < kakkyou\ ;
+釈義 < shakugi\ ;
+天気屋 < tenkiya\ ;
+難易度 < nan''ido\ ;
+吉祥 < kisshou\ ;
+硫酸 < ryuusan\ ;
+弱齢 < jakurei\ ;
+泡盛 < awamori\ ;
+北限 < hokugen\ ;
+秋晴 < akibare\ ;
+穴凹 < anaboko\ ;
+金網 < kanaami\ ;
+号笛 < gouteki\ ;
+蛇口 < jaguchi\ ;
+淑女 < shukujo\ ;
+双翼 < souyoku\ ;
+仮数部 < kasuubu\ ;
+半農 < han''nou\ ;
+鈍痛 < dontsuu\ ;
+十字路 < juujiro\ ;
+北門 < kitamon\ ;
+吸物 < suimono\ ;
+十進 < jisshin\ ;
+薬用 < yakuyou\ ;
+銀杏 < gin''nan\ ;
+渡仏 < tofutsu\ ;
+磊落 < rairaku\ ;
+虚心 < kyoshin\ ;
+洗滌 < sendeki\ ;
+津波 < tsunami\ ;
+沖縄 < okinawa\ ;
+民踊 < min''you\ ;
+虚弱 < kyojaku\ ;
+古筆 < kohitsu\ ;
+後釜 < atogama\ ;
+重篤 < juutoku\ ;
+添削 < tensaku\ ;
+金筋 < kinsuji\ ;
+得道 < tokudou\ ;
+負符号 < fufugou\ ;
+重箱 < juubako\ ;
+各県 < kakuken\ ;
+可祝 < kashiku\ ;
+同病 < doubyou\ ;
+大御所 < oogosho\ ;
+収納 < shuunou\ ;
+空中 < kuuchuu\ ;
+黒板 < kokuban\ ;
+藁灰 < warabai\ ;
+分布図 < bunpuzu\ ;
+銃撃 < juugeki\ ;
+石鯛 < ishidai\ ;
+醜聞 < shuubun\ ;
+製図家 < seizuka\ ;
+後逸 < kouitsu\ ;
+台石 < daiishi\ ;
+卓論 < takuron\ ;
+殿閣 < denkaku\ ;
+薄皮 < usukawa\ ;
+戦時下 < senjika\ ;
+厚臼 < atsuusu\ ;
+博覧 < hakuran\ ;
+天気図 < tenkizu\ ;
+単角 < tankaku\ ;
+虎巻 < torakan\ ;
+当限 < tougiri\ ;
+積分 < sekibun\ ;
+錯乱 < sakuran\ ;
+黒斑 < kokuhan\ ;
+治療 < chiryou\ ;
+単複 < tanpuku\ ;
+残高 < zandaka\ ;
+鉄橋 < tekkyou\ ;
+軍事費 < gunjihi\ ;
+混作 < konsaku\ ;
+金石 < kinseki\ ;
+炎天下 < entenka\ ;
+今日明日 < kyouasu\ ;
+収税 < shuuzei\ ;
+惜敗 < sekihai\ ;
+稲叢 < inamura\ ;
+浮彫 < ukibori\ ;
+後足 < atoashi\ ;
+北辺 < hokuhen\ ;
+肥満児 < himanji\ ;
+釣瓶 < tsurube\ ;
+浪漫派 < romanha\ ;
+慟哭 < doukoku\ ;
+惑星 < wakusei\ ;
+半襟 < han''eri\ ;
+起重機 < kijuuki\ ;
+圧砕機 < assaiki\ ;
+死魄 < shihaku\ ;
+回路図 < kairozu\ ;
+確聞 < kakubun\ ;
+恋病 < koiyami\ ;
+金的 < kinteki\ ;
+半袖 < hansode\ ;
+吸殻 < suigara\ ;
+虫垂 < chuusui\ ;
+民衆 < minshuu\ ;
+兵器庫 < heikiko\ ;
+鉄柱 < tetchuu\ ;
+毎週 < maishuu\ ;
+残額 < zangaku\ ;
+息災 < sokusai\ ;
+岐阜県 < gifuken\ ;
+弱電 < jakuden\ ;
+蔵米 < kuramai\ ;
+海山 < umiyama\ ;
+残響 < zankyou\ ;
+洋楽 < yougaku\ ;
+重病 < juubyou\ ;
+薬液 < yakueki\ ;
+薄物 < usumono\ ;
+薄片 < hakuhen\ ;
+泥海 < doroumi\ ;
+庶務課 < shomuka\ ;
+御袋 < ofukuro\ ;
+水芸 < mizugei\ ;
+即興 < sokkyou\ ;
+秘密 < himitsu\ ;
+卵膜 < ranmaku\ ;
+反目 < hanmoku\ ;
+水色 < mizuiro\ ;
+離縁状 < rienjou\ ;
+蕃神 < banshin\ ;
+針状 < harijou\ ;
+殉難 < jun''nan\ ;
+律語 < ritsugo\ ;
+恋猫 < koineko\ ;
+和式 < washiki\ ;
+単葉 < tan''you\ ;
+黙従 < mokujuu\ ;
+金玉 < kintama\ ;
+銀幕 < ginmaku\ ;
+矢面 < yaomote\ ;
+税収 < zeishuu\ ;
+稲作 < inasaku\ ;
+洋服 < youfuku\ ;
+正規化 < seikika\ ;
+印肉 < in''niku\ ;
+性癖 < seiheki\ ;
+弁駁 < benpaku\ ;
+蘭学 < rangaku\ ;
+名流 < meiryuu\ ;
+恵沢 < keitaku\ ;
+形跡 < keiseki\ ;
+同流 < douryuu\ ;
+弔電 < chouden\ ;
+落雷 < rakurai\ ;
+双璧 < souheki\ ;
+悪方 < akugata\ ;
+合流 < gouryuu\ ;
+落雁 < rakugan\ ;
+社歴 < shareki\ ;
+落陽 < rakuyou\ ;
+重爆 < juubaku\ ;
+今出来 < imadeki\ ;
+黒帯 < kuroobi\ ;
+叙爵 < joshaku\ ;
+北西 < hokusei\ ;
+検波器 < kenpaki\ ;
+口火 < kuchibi\ ;
+叔父 < shukufu\ ;
+泥棒 < dorobou\ ;
+汁粉 < shiruko\ ;
+弱酸 < jakusan\ ;
+蔵相 < zoushou\ ;
+千草 < chigusa\ ;
+含有 < gan''yuu\ ;
+反物 < tanmono\ ;
+鳥類 < chourui\ ;
+弁難 < ben''nan\ ;
+即納 < sokunou\ ;
+社業 < shagyou\ ;
+気脈 < kimyaku\ ;
+礼楽 < reigaku\ ;
+母親 < hahaoya\ ;
+移出 < ishutsu\ ;
+徳育 < tokuiku\ ;
+磁石 < jishaku\ ;
+消去 < shoukyo\ ;
+醜男 < buotoko\ ;
+破裂 < haretsu\ ;
+消印 < keshiin\ ;
+同業 < dougyou\ ;
+私塾 < shijuku\ ;
+悪戯 < itazura\ ;
+動軸 < doujiku\ ;
+碧空 < hekikuu\ ;
+劈頭 < hekitou\ ;
+蘭国 < rankoku\ ;
+即答 < sokutou\ ;
+下付金 < kafukin\ ;
+鉄心 < tesshin\ ;
+毛虫 < kemushi\ ;
+避難所 < hinanjo\ ;
+恋河 < koikawa\ ;
+配給 < haikyuu\ ;
+同格 < doukaku\ ;
+片意地 < kataiji\ ;
+薬方 < yakuhou\ ;
+活字 < katsuji\ ;
+哀別 < aibetsu\ ;
+徒花 < adabana\ ;
+礼服 < reifuku\ ;
+恋水 < koimizu\ ;
+哀切 < aisetsu\ ;
+合格 < goukaku\ ;
+海原 < unabara\ ;
+麻屑 < asakuzu\ ;
+古池 < furuike\ ;
+愚劣 < guretsu\ ;
+短軸 < tanjiku\ ;
+醜状 < shuujou\ ;
+各校 < kakukou\ ;
+恋死 < koijini\ ;
+悪徳 < akutoku\ ;
+気絶 < kizetsu\ ;
+沈澱 < chinden\ ;
+劈開 < hekikai\ ;
+古歌 < furuuta\ ;
+落選 < rakusen\ ;
+副題 < fukudai\ ;
+式部 < shikibu\ ;
+卜筮 < bokuzei\ ;
+医学部 < igakubu\ ;
+呂律 < roretsu\ ;
+葉身 < youshin\ ;
+徐脈 < jomyaku\ ;
+碧眼 < hekigan\ ;
+後腹 < atobara\ ;
+歴遊 < rekiyuu\ ;
+予報音 < yohouon\ ;
+彬蔚 < hinutsu\ ;
+禅寺 < zendera\ ;
+風呂代 < furodai\ ;
+死軸 < shijiku\ ;
+流域 < ryuuiki\ ;
+後知恵 < atodjie\ ;
+鶴科 < tsuruka\ ;
+恭敬 < kyoukei\ ;
+汎用 < han''you\ ;
+差機関 < sakikan\ ;
+叔母 < shukubo\ ;
+秀吟 < shuugin\ ;
+前髪 < maegami\ ;
+咀嚼 < soshaku\ ;
+殺虫 < satchuu\ ;
+勤行 < gongyou\ ;
+詐欺師 < sagishi\ ;
+卵白 < ranpaku\ ;
+金棒 < kanabou\ ;
+座骨 < zakotsu\ ;
+徴税 < chouzei\ ;
+労賃 < rouchin\ ;
+合掌 < gasshou\ ;
+外祖父 < gaisofu\ ;
+勅許 < chokkyo\ ;
+短評 < tanpyou\ ;
+論理和 < ronriwa\ ;
+秘仏 < hibutsu\ ;
+野営地 < yaeichi\ ;
+海亀 < umigame\ ;
+邁進 < maishin\ ;
+雰囲気 < fun''iki\ ;
+因美線 < inbisen\ ;
+古本 < furubon\ ;
+反様 < kaisama\ ;
+民福 < minpuku\ ;
+気丈夫 < kijoubu\ ;
+初期化 < shokika\ ;
+遅霜 < osojimo\ ;
+洛外 < rakugai\ ;
+酒癖 < shuheki\ ;
+邪説 < jasetsu\ ;
+氏神 < ujigami\ ;
+段落 < danraku\ ;
+呻吟 < shingin\ ;
+鉄壁 < teppeki\ ;
+秋作 < akisaku\ ;
+区立 < kuritsu\ ;
+各所 < kakusho\ ;
+惨劇 < sangeki\ ;
+恋文 < koibumi\ ;
+法悦 < houetsu\ ;
+邦訳 < houyaku\ ;
+水球 < suikyuu\ ;
+浦人 < urabito\ ;
+銀側 < gingawa\ ;
+取替 < torikae\ ;
+歩行器 < hokouki\ ;
+前陳 < zenchin\ ;
+石蝋 < sekirou\ ;
+蓬生 < yomogiu\ ;
+流動 < ryuudou\ ;
+湯豆腐 < yudoufu\ ;
+裏背戸 < urasedo\ ;
+逆鱗 < gekirin\ ;
+知行 < chigyou\ ;
+同役 < douyaku\ ;
+酸漿 < hoozuki\ ;
+歴覧 < rekiran\ ;
+水牢 < mizurou\ ;
+水牛 < suigyuu\ ;
+放生会 < houjoue\ ;
+育児院 < ikujiin\ ;
+不作為 < fusakui\ ;
+鳥貝 < torigai\ ;
+水爆 < suibaku\ ;
+武装具 < busougu\ ;
+北米 < hokubei\ ;
+下駄番 < getaban\ ;
+卓用 < takuyou\ ;
+剽軽 < hyoukin\ ;
+咎人 < toganin\ ;
+葉蜂 < habachi\ ;
+徳用 < tokuyou\ ;
+十目 < juumoku\ ;
+同席 < douseki\ ;
+真黒 < makkuro\ ;
+自動化 < jidouka\ ;
+劣角 < rekkaku\ ;
+薬害 < yakugai\ ;
+禄命 < rokumei\ ;
+刻限 < kokugen\ ;
+君寵 < kunchou\ ;
+各店 < kakuten\ ;
+卓球 < takkyuu\ ;
+無遠慮 < buenryo\ ;
+運動場 < undouba\ ;
+家計費 < kakeihi\ ;
+禀告 < rinkoku\ ;
+周到 < shuutou\ ;
+汗水 < asemizu\ ;
+北端 < hokutan\ ;
+音楽家 < ongakka\ ;
+黒人 < kokujin\ ;
+彼程 < arehodo\ ;
+道辺 < michibe\ ;
+武術 < bujutsu\ ;
+外祖母 < gaisobo\ ;
+残菊 < zangiku\ ;
+没我 < botsuga\ ;
+流亡 < ryuubou\ ;
+労務課 < roumuka\ ;
+初音 < hatsune\ ;
+都立 < toritsu\ ;
+別離 < betsuri\ ;
+従的 < juuteki\ ;
+破竹 < hachiku\ ;
+蒼白 < souhaku\ ;
+水滴 < suiteki\ ;
+力行 < ryokkou\ ;
+無軌道 < mukidou\ ;
+選評 < senpyou\ ;
+礫岩 < rekigan\ ;
+各層 < kakusou\ ;
+別院 < betsuin\ ;
+劇詩 < gekishi\ ;
+鉄則 < tessoku\ ;
+遅速 < chisoku\ ;
+碧水 < hekisui\ ;
+石臼 < ishiusu\ ;
+年額 < nengaku\ ;
+別間 < betsuma\ ;
+汁気 < shiruke\ ;
+洛内 < rakunai\ ;
+毎秒 < maibyou\ ;
+微熱 < binetsu\ ;
+水浴 < suiyoku\ ;
+惑乱 < wakuran\ ;
+胃痙攣 < ikeiren\ ;
+古式 < koshiki\ ;
+運動員 < undouin\ ;
+機械語 < kikaigo\ ;
+半熟 < hanjuku\ ;
+水流 < suiryuu\ ;
+原木 < genboku\ ;
+勤続 < kinzoku\ ;
+逼迫 < hippaku\ ;
+厚板 < atsuita\ ;
+美容院 < biyouin\ ;
+弱者 < jakusha\ ;
+金平 < kinpira\ ;
+危気 < abunage\ ;
+急所 < kyuusho\ ;
+殻竿 < karasao\ ;
+一転機 < ittenki\ ;
+取得 < shutoku\ ;
+即死 < sokushi\ ;
+鴇色 < tokiiro\ ;
+台尻 < daijiri\ ;
+杓文字 < shamoji\ ;
+追随 < tsuizui\ ;
+勲章 < kunshou\ ;
+連量 < renryou\ ;
+探査機 < tansaki\ ;
+田舎家 < inakaya\ ;
+合壁 < gappeki\ ;
+出額 < debitai\ ;
+刹那 < setsuna\ ;
+年長 < nenchou\ ;
+出頭 < shuttou\ ;
+切除 < setsujo\ ;
+葭簀 < yoshizu\ ;
+運転費 < untenhi\ ;
+橙皮油 < touhiyu\ ;
+洋傘 < yougasa\ ;
+過年度 < kanendo\ ;
+研究 < kenkyuu\ ;
+進軍 < shingun\ ;
+酒毒 < shudoku\ ;
+薬品 < yakuhin\ ;
+沈思 < chinshi\ ;
+南洋 < nan''you\ ;
+死肉 < shiniku\ ;
+思惑 < omowaku\ ;
+鳶色 < tobiiro\ ;
+運動具 < undougu\ ;
+落胆 < rakutan\ ;
+鳥葬 < chousou\ ;
+沢山 < takusan\ ;
+御存知 < gozonji\ ;
+刺身 < sashimi\ ;
+各地 < kakuchi\ ;
+薄墨 < usuzumi\ ;
+家政科 < kaseika\ ;
+各国 < kakkoku\ ;
+葦笛 < ashibue\ ;
+小奇麗 < kogirei\ ;
+幕電 < makuden\ ;
+剥製 < hakusei\ ;
+醜態 < shuutai\ ;
+短絡 < tanraku\ ;
+移住者 < ijuusha\ ;
+民泊 < minpaku\ ;
+社告 < shakoku\ ;
+弁膜 < benmaku\ ;
+道具屋 < douguya\ ;
+醜悪 < shuuaku\ ;
+薬剤 < yakuzai\ ;
+比率 < hiritsu\ ;
+弊習 < heishuu\ ;
+役牛 < ekigyuu\ ;
+同義語 < dougigo\ ;
+沼地 < numachi\ ;
+莫連 < bakuren\ ;
+法名 < houmyou\ ;
+模擬戦 < mogisen\ ;
+初速 < shosoku\ ;
+名号 < myougou\ ;
+法博 < houhaku\ ;
+逆運 < gyakuun\ ;
+眉雪 < bisetsu\ ;
+凸鏡 < tokkyou\ ;
+合口 < aikuchi\ ;
+社則 < shasoku\ ;
+荒駒 < aragoma\ ;
+永日 < eijitsu\ ;
+分針 < funshin\ ;
+分量 < bunryou\ ;
+蒲公英 < tanpopo\ ;
+別路 < betsuro\ ;
+法力 < houriki\ ;
+比熱 < hinetsu\ ;
+法則 < housoku\ ;
+稽古着 < keikogi\ ;
+瞼 < mabuta\ ;
+辷 < suberu\ ;
+瞳 < hitomi\ ;
+輩 < yakara\ ;
+盲 < meshii\ ;
+車 < kuruma\ ;
+序 < tsuide\ ;
+皆 < min''na\ ;
+幕 < tobari\ ;
+帝 < mikado\ ;
+左 < hidari\ ;
+疾 < shitsu\ ;
+畳 < tatami\ ;
+畠 < hatake\ ;
+瓦 < kawara\ ;
+岬 < misaki\ ;
+届 < todoke\ ;
+尊 < mikoto\ ;
+宝 < takara\ ;
+獣 < kemono\ ;
+狼 < ookami\ ;
+独 < doitsu\ ;
+誠 < makoto\ ;
+証 < akashi\ ;
+父 < chichi\ ;
+訛 < namari\ ;
+娘 < musume\ ;
+姿 < sugata\ ;
+妾 < warawa\ ;
+妹 < imouto\ ;
+要 < kaname\ ;
+襷 < tasuki\ ;
+煙 < kemuri\ ;
+襖 < fusuma\ ;
+裸 < hadaka\ ;
+袴 < hakama\ ;
+袋 < fukuro\ ;
+衣 < koromo\ ;
+埃 < hokori\ ;
+蟀 < shutsu\ ;
+鼬 < itachi\ ;
+鼠 < nezumi\ ;
+土 < tsuchi\ ;
+漆 < urushi\ ;
+蛹 < sanagi\ ;
+蛙 < kawazu\ ;
+器 < utsuwa\ ;
+港 < minato\ ;
+薬 < kusuri\ ;
+薪 < takigi\ ;
+涙 < namida\ ;
+薇 < zenmai\ ;
+薄 < susuki\ ;
+鴉 < karasu\ ;
+厨 < kuriya\ ;
+卸 < oroshi\ ;
+卵 < tamago\ ;
+歪 < ibitsu\ ;
+魚 < sakana\ ;
+南 < minami\ ;
+匠 < takumi\ ;
+櫻 < sakura\ ;
+苺 < ichigo\ ;
+勢 < hazumi\ ;
+檜 < hinoki\ ;
+舅 < shuuto\ ;
+榊 < sakaki\ ;
+光 < hikari\ ;
+館 < yakata\ ;
+候 < sourou\ ;
+響 < hibiki\ ;
+柳 < yanagi\ ;
+俄 < niwaka\ ;
+係 < kakari\ ;
+便 < yosuga\ ;
+枕 < makura\ ;
+机 < tsukue\ ;
+仏 < hotoke\ ;
+曇 < kumori\ ;
+雀 < suzume\ ;
+京 < miyako\ ;
+隣 < tonari\ ;
+乙 < kinoto\ ;
+乍 < nagara\ ;
+万 < yorozu\ ;
+七 < shichi\ ;
+丁 < hinoto\ ;
+緑 < midori\ ;
+絣 < kasuri\ ;
+絆 < kizuna\ ;
+簾 < sudare\ ;
+鏡 < kagami\ ;
+鎖 < kusari\ ;
+筒 < tsutsu\ ;
+捌 < sabaki\ ;
+鋼 < hagane\ ;
+童 < warabe\ ;
+鋏 < hasami\ ;
+扉 < tobira\ ;
+所 < tokoro\ ;
+廃虚 < haikyo\ ;
+忿怒 < fun''nu\ ;
+送迎 < sougei\ ;
+迅雷 < jinrai\ ;
+志操 < shisou\ ;
+通貨 < tsuuka\ ;
+名刺 < meishi\ ;
+同前 < douzen\ ;
+礼典 < reiten\ ;
+前衛 < zen''ei\ ;
+矢筈 < yahazu\ ;
+金坑 < kinkou\ ;
+原形 < genkei\ ;
+復権 < fukken\ ;
+前行 < zenkou\ ;
+名分 < meibun\ ;
+形状 < keijou\ ;
+列車 < ressha\ ;
+名刀 < meitou\ ;
+廃藩 < haihan\ ;
+配本 < haihon\ ;
+厚志 < koushi\ ;
+薄味 < hakumi\ ;
+社僧 < shasou\ ;
+合剤 < gouzai\ ;
+同処 < dousho\ ;
+法典 < houten\ ;
+社債 < shasai\ ;
+年輪 < nenrin\ ;
+年輩 < nenpai\ ;
+磁心 < jishin\ ;
+分遣 < bunken\ ;
+友好 < yuukou\ ;
+勤番 < kinban\ ;
+石碑 < sekihi\ ;
+合切 < gassai\ ;
+退転 < taiten\ ;
+正編 < seihen\ ;
+反変 < hanpen\ ;
+叱咤 < shitta\ ;
+同党 < doutou\ ;
+幽趣 < yuushu\ ;
+加給 < kakyuu\ ;
+名優 < meiyuu\ ;
+厳封 < genpuu\ ;
+帯電 < taiden\ ;
+律法 < rippou\ ;
+凌雲 < ryouun\ ;
+快感 < kaikan\ ;
+選考 < senkou\ ;
+矢種 < yadane\ ;
+汎愛 < han''ai\ ;
+強盗 < goutou\ ;
+厳寒 < genkan\ ;
+量器 < ryouki\ ;
+名僧 < meisou\ ;
+正統 < seitou\ ;
+遊蕩 < yuutou\ ;
+決定 < kettei\ ;
+蒸民 < joumin\ ;
+弾痕 < dankon\ ;
+重噸 < juuton\ ;
+迂闊 < ukatsu\ ;
+造詣 < zoukei\ ;
+淡々 < tantan\ ;
+厳守 < genshu\ ;
+台名 < taimei\ ;
+厳存 < genson\ ;
+正系 < seikei\ ;
+邪神 < jashin\ ;
+辺陬 < hensuu\ ;
+造言 < zougen\ ;
+逃走 < tousou\ ;
+通語 < tsuugo\ ;
+分載 < bunsai\ ;
+酸性 < sansei\ ;
+相関 < soukan\ ;
+後段 < koudan\ ;
+社会 < shakai\ ;
+通話 < tsuuwa\ ;
+復校 < fukkou\ ;
+同値 < douchi\ ;
+切身 < kirimi\ ;
+君主 < kunshu\ ;
+草鞋 < waraji\ ;
+法例 < hourei\ ;
+制裁 < seisai\ ;
+南方 < nanpou\ ;
+北海 < hokkai\ ;
+忠愛 < chuuai\ ;
+金員 < kin''in\ ;
+単文 < tanbun\ ;
+確度 < kakudo\ ;
+民望 < minbou\ ;
+薄利 < hakuri\ ;
+社交 < shakou\ ;
+微服 < bifuku\ ;
+求愛 < kyuuai\ ;
+単数 < tansuu\ ;
+必携 < hikkei\ ;
+金品 < kinpin\ ;
+劣等 < rettou\ ;
+盤面 < banmen\ ;
+匠気 < shouki\ ;
+動産 < dousan\ ;
+延納 < en''nou\ ;
+砕片 < saihen\ ;
+真逆 < masaka\ ;
+同体 < doutai\ ;
+河北 < kahoku\ ;
+社主 < shashu\ ;
+南支 < nanshi\ ;
+口吻 < koufun\ ;
+弾琴 < dankin\ ;
+師門 < shimon\ ;
+気早 < kibaya\ ;
+急場 < kyuuba\ ;
+同伴 < douhan\ ;
+連衡 < renkou\ ;
+口吟 < kougin\ ;
+法人 < houjin\ ;
+冷静 < reisei\ ;
+返金 < henkin\ ;
+参堂 < sandou\ ;
+快弁 < kaiben\ ;
+忠恕 < chuujo\ ;
+召募 < shoubo\ ;
+合併 < gouhei\ ;
+吐乳 < tonyuu\ ;
+名人 < meijin\ ;
+合体 < gattai\ ;
+薄光 < hakkou\ ;
+蔓延 < man''en\ ;
+当然 < touzen\ ;
+反噬 < hanzei\ ;
+原寸 < gensun\ ;
+同仁 < doujin\ ;
+同人 < dounin\ ;
+典麗 < tenrei\ ;
+向上 < koujou\ ;
+巣鶏 < sudori\ ;
+十本 < juppon\ ;
+廃艦 < haikan\ ;
+江山 < kouzan\ ;
+座薬 < zayaku\ ;
+萎縮 < ishuku\ ;
+重合 < juugou\ ;
+広言 < kougen\ ;
+廃船 < haisen\ ;
+廐肥 < kyuuhi\ ;
+同乗 < doujou\ ;
+応急 < oukyuu\ ;
+遊芸 < yuugei\ ;
+残痕 < zankon\ ;
+前著 < zencho\ ;
+菖蒲 < shoubu\ ;
+野原 < nohara\ ;
+決壊 < kekkai\ ;
+原子 < genshi\ ;
+毛氈 < mousen\ ;
+占拠 < senkyo\ ;
+別製 < bessei\ ;
+弊社 < heisha\ ;
+比況 < hikyou\ ;
+透視 < toushi\ ;
+半数 < hansuu\ ;
+醜女 < shuujo\ ;
+効目 < kikime\ ;
+民政 < minsei\ ;
+鳴禽 < meikin\ ;
+民放 < minpou\ ;
+近郷 < kingou\ ;
+酒手 < sakate\ ;
+返還 < henkan\ ;
+弓矢 < yumiya\ ;
+前菜 < zensai\ ;
+反問 < hanmon\ ;
+処遇 < shoguu\ ;
+心技 < shingi\ ;
+初見 < shoken\ ;
+欠航 < kekkou\ ;
+盗電 < touden\ ;
+巨鯨 < kyogei\ ;
+沃土 < yokudo\ ;
+巻首 < kanshu\ ;
+出足 < deashi\ ;
+残生 < zansei\ ;
+北欧 < hokuou\ ;
+盗難 < tounan\ ;
+加禄 < karoku\ ;
+号俸 < gouhou\ ;
+危急 < kikyuu\ ;
+剛臆 < gouoku\ ;
+弾片 < danpen\ ;
+県道 < kendou\ ;
+即応 < sokuou\ ;
+武神 < bushin\ ;
+返送 < hensou\ ;
+復改 < fukkai\ ;
+金剛 < kongou\ ;
+幣貢 < heikou\ ;
+配所 < haisho\ ;
+卵形 < rankei\ ;
+金券 < kinken\ ;
+酔態 < suitai\ ;
+巨魁 < kyokai\ ;
+蕃地 < banchi\ ;
+十数 < juusuu\ ;
+汽圧 < kiatsu\ ;
+凡退 < bontai\ ;
+達者 < tassha\ ;
+従来 < juurai\ ;
+選管 < senkan\ ;
+分譲 < bunjou\ ;
+司会 < shikai\ ;
+御料 < goryou\ ;
+円高 < endaka\ ;
+近辺 < kinpen\ ;
+口内 < kounai\ ;
+出費 < shuppi\ ;
+金冠 < kinkan\ ;
+印形 < ingyou\ ;
+司令 < shirei\ ;
+重刑 < juukei\ ;
+追訴 < tsuiso\ ;
+号令 < gourei\ ;
+加硫 < karyuu\ ;
+剛胆 < goutan\ ;
+金具 < kanagu\ ;
+収受 < shuuju\ ;
+配慮 < hairyo\ ;
+迷論 < meiron\ ;
+毎毎 < maimai\ ;
+追記 < tsuiki\ ;
+睡蓮 < suiren\ ;
+心意 < shin''i\ ;
+割線 < kassen\ ;
+切諌 < sekkan\ ;
+忘年 < bounen\ ;
+即座 < sokuza\ ;
+巻頭 < kantou\ ;
+効用 < kouyou\ ;
+蒲柳 < horyuu\ ;
+恒例 < kourei\ ;
+史伝 < shiden\ ;
+忍従 < ninjuu\ ;
+酷寒 < kokkan\ ;
+勇猛 < yuumou\ ;
+毬果 < kyuuka\ ;
+荷足 < niashi\ ;
+常道 < joudou\ ;
+分詞 < bunshi\ ;
+治乱 < chiran\ ;
+卵巣 < ransou\ ;
+死産 < shizan\ ;
+死生 < shisei\ ;
+博愛 < hakuai\ ;
+常連 < jouren\ ;
+冒頭 < boutou\ ;
+性向 < seikou\ ;
+帰郷 < kikyou\ ;
+水平 < suihei\ ;
+治世 < chisei\ ;
+引用 < in''you\ ;
+鮮麗 < senrei\ ;
+目釘 < mekugi\ ;
+反動 < handou\ ;
+前腕 < maeude\ ;
+史乗 < shijou\ ;
+分解 < bunkai\ ;
+参向 < sankou\ ;
+右上 < migiue\ ;
+遣米 < kenbei\ ;
+古俗 < kozoku\ ;
+後景 < koukei\ ;
+厖大 < boudai\ ;
+退行 < taikou\ ;
+可也 < kanari\ ;
+座興 < zakyou\ ;
+正眼 < seigan\ ;
+待望 < taibou\ ;
+磁壁 < jiheki\ ;
+差額 < sagaku\ ;
+残片 < zanpen\ ;
+句作 < kusaku\ ;
+後昆 < koukon\ ;
+正目 < masame\ ;
+矢玉 < yadama\ ;
+十指 < jusshi\ ;
+単性 < tansei\ ;
+毛根 < moukon\ ;
+蒸散 < jousan\ ;
+後方 < kouhou\ ;
+配当 < haitou\ ;
+加療 < karyou\ ;
+律旋 < rissen\ ;
+口伝 < kouden\ ;
+酒店 < shuten\ ;
+師道 < shidou\ ;
+底荷 < sokoni\ ;
+刊行 < kankou\ ;
+出訴 < shusso\ ;
+博徒 < bakuto\ ;
+砂漠 < sabaku\ ;
+急募 < kyuubo\ ;
+弱火 < yowabi\ ;
+前者 < zensha\ ;
+急務 < kyuumu\ ;
+巨頭 < kyotou\ ;
+葉物 < hamono\ ;
+分袂 < bunbei\ ;
+円頂 < enchou\ ;
+気息 < kisoku\ ;
+後攻 < koukou\ ;
+鳩目 < hatome\ ;
+重体 < juutai\ ;
+厳命 < genmei\ ;
+下世話 < gesewa\ ;
+冒険 < bouken\ ;
+原因 < gen''in\ ;
+内項 < naikou\ ;
+前翅 < zenshi\ ;
+度胸 < dokyou\ ;
+看貫 < kankan\ ;
+博引 < hakuin\ ;
+機長 < kichou\ ;
+割符 < warifu\ ;
+気性 < kishou\ ;
+十戒 < jikkai\ ;
+受信 < jushin\ ;
+目途 < mokuto\ ;
+農道 < noudou\ ;
+石灰 < sekkai\ ;
+民情 < minjou\ ;
+厚地 < atsuji\ ;
+重任 < juunin\ ;
+迎賓 < geihin\ ;
+厳君 < genkun\ ;
+前置 < zenchi\ ;
+重代 < juudai\ ;
+列藩 < reppan\ ;
+鳥目 < torime\ ;
+単弁 < tanben\ ;
+段段 < dandan\ ;
+水屋 < mizuya\ ;
+往昔 < ouseki\ ;
+金主 < kinshu\ ;
+破格 < hakaku\ ;
+千慮 < senryo\ ;
+去勢 < kyosei\ ;
+当歳 < tousai\ ;
+皮革 < hikaku\ ;
+内面 < naimen\ ;
+巷間 < koukan\ ;
+冷酒 < reishu\ ;
+卵子 < ranshi\ ;
+怪光 < kaikou\ ;
+兼題 < kendai\ ;
+檀那 < dan''na\ ;
+野中 < nonaka\ ;
+造船 < zousen\ ;
+参内 < sandai\ ;
+水害 < suigai\ ;
+徹底 < tettei\ ;
+気弱 < kiyowa\ ;
+叛乱 < hanran\ ;
+御慶 < gyokei\ ;
+県警 < kenkei\ ;
+帝道 < teidou\ ;
+別荘 < bessou\ ;
+碁席 < goseki\ ;
+初葉 < shoyou\ ;
+彼方 < kanata\ ;
+盟邦 < meihou\ ;
+快報 < kaihou\ ;
+厭厭 < iyaiya\ ;
+水子 < mizugo\ ;
+再開 < saikai\ ;
+遠称 < enshou\ ;
+北方 < hoppou\ ;
+内陣 < naijin\ ;
+半径 < hankei\ ;
+葛湯 < kuzuyu\ ;
+鮮魚 < sengyo\ ;
+冷遇 < reiguu\ ;
+半影 < han''ei\ ;
+反例 < hanrei\ ;
+巣雛 < suhina\ ;
+迦楼羅 < karura\ ;
+微弱 < bijaku\ ;
+郷村 < gouson\ ;
+硬性 < kousei\ ;
+酒屋 < sakaya\ ;
+前編 < zenpen\ ;
+退蔵 < taizou\ ;
+凝議 < gyougi\ ;
+前線 < zensen\ ;
+川面 < kawamo\ ;
+原品 < genpin\ ;
+引照 < inshou\ ;
+全館 < zenkan\ ;
+近詠 < kin''ei\ ;
+蒙昧 < moumai\ ;
+残滓 < zanshi\ ;
+沙丘 < sakyuu\ ;
+死点 < shiten\ ;
+相貌 < soubou\ ;
+送葬 < sousou\ ;
+白魔 < hakuma\ ;
+卜居 < bokkyo\ ;
+碍子 < gaishi\ ;
+毎晩 < maiban\ ;
+厳冬 < gentou\ ;
+友人 < yuujin\ ;
+益金 < ekikin\ ;
+労災 < rousai\ ;
+南岸 < nangan\ ;
+手忠実 < temame\ ;
+着荷 < chakka\ ;
+葦毛 < ashige\ ;
+次第 < shidai\ ;
+厚味 < atsumi\ ;
+兵難 < heinan\ ;
+即夜 < sokuya\ ;
+形木 < katagi\ ;
+師資 < shishi\ ;
+南山 < nanzan\ ;
+看視 < kanshi\ ;
+近視 < kinshi\ ;
+巌頭 < gantou\ ;
+茶道 < chadou\ ;
+次章 < jishou\ ;
+具陳 < guchin\ ;
+怪人 < kaijin\ ;
+登高 < toukou\ ;
+盤踞 < bankyo\ ;
+兵隊 < heitai\ ;
+連署 < rensho\ ;
+駄洒落 < dajare\ ;
+正犯 < seihan\ ;
+単射 < tansha\ ;
+参会 < sankai\ ;
+劇画 < gekiga\ ;
+全音 < zen''on\ ;
+卵塔 < rantou\ ;
+党首 < toushu\ ;
+過称 < kashou\ ;
+十干 < jikkan\ ;
+英領 < eiryou\ ;
+卑屬 < hizoku\ ;
+巨鐘 < oogane\ ;
+横領 < ouryou\ ;
+石油 < sekiyu\ ;
+廻状 < kaijou\ ;
+下駄屋 < getaya\ ;
+達磨 < daruma\ ;
+原動 < gendou\ ;
+南宋 < nansou\ ;
+弱気 < yowaki\ ;
+全面 < zenmen\ ;
+御幸 < miyuki\ ;
+徘徊 < haikai\ ;
+郵政 < yuusei\ ;
+半島 < hantou\ ;
+卑小 < hishou\ ;
+白馬 < hakuba\ ;
+相談 < soudan\ ;
+欝積 < usseki\ ;
+征戦 < seisen\ ;
+割目 < wareme\ ;
+全霊 < zenrei\ ;
+連繋 < renkei\ ;
+当板 < ateita\ ;
+参与 < san''yo\ ;
+後悔 < koukai\ ;
+参上 < sanjou\ ;
+沈下 < chinka\ ;
+真薯 < shinjo\ ;
+函蓋 < kangai\ ;
+原初 < gensho\ ;
+前端 < zentan\ ;
+快哉 < kaisai\ ;
+気学 < kigaku\ ;
+水域 < suiiki\ ;
+微少 < bishou\ ;
+全隊 < zentai\ ;
+送致 < souchi\ ;
+連綿 < renmen\ ;
+創痕 < soukon\ ;
+欲目 < yokume\ ;
+得度 < tokudo\ ;
+従弟 < juutei\ ;
+部族 < buzoku\ ;
+蕃人 < banjin\ ;
+菜種 < natane\ ;
+直訴 < jikiso\ ;
+原典 < genten\ ;
+鱗茎 < rinkei\ ;
+入院 < nyuuin\ ;
+短毛 < tanmou\ ;
+荒誕 < koutan\ ;
+初老 < shorou\ ;
+酷吏 < kokuri\ ;
+連累 < renrui\ ;
+蕃主 < banshu\ ;
+師訓 < shikun\ ;
+権限 < kengen\ ;
+勘検 < kanken\ ;
+遺物 < ibutsu\ ;
+准許 < junkyo\ ;
+酒場 < sakaba\ ;
+全開 < zenkai\ ;
+殉死 < junshi\ ;
+原像 < genzou\ ;
+目許 < memoto\ ;
+水嚢 < suinou\ ;
+当方 < touhou\ ;
+出荷 < shukka\ ;
+真菰 < makomo\ ;
+南天 < nanten\ ;
+目角 < mekado\ ;
+再選 < saisen\ ;
+廃盤 < haiban\ ;
+硫安 < ryuuan\ ;
+機軸 < kijiku\ ;
+勢望 < seibou\ ;
+権門 < kenmon\ ;
+銘々 < meimei\ ;
+勘案 < kan''an\ ;
+後年 < kounen\ ;
+医局 < ikyoku\ ;
+再遊 < saiyuu\ ;
+砲手 < houshu\ ;
+白露 < hakuro\ ;
+花鳥 < kachou\ ;
+追肥 < tsuihi\ ;
+念写 < nensha\ ;
+知歯 < chishi\ ;
+帆走 < hansou\ ;
+往復 < oufuku\ ;
+石榴 < zakuro\ ;
+白雲 < hakuun\ ;
+再送 < saisou\ ;
+光頭 < koutou\ ;
+律師 < risshi\ ;
+愈々 < iyoiyo\ ;
+兵鋒 < heihou\ ;
+出花 < debana\ ;
+歩測 < hosoku\ ;
+先頭 < sentou\ ;
+広縁 < hiroen\ ;
+浪々 < rourou\ ;
+力演 < rikien\ ;
+邪欲 < jayoku\ ;
+駄法螺 < dabora\ ;
+心土 < shindo\ ;
+微妙 < bimyou\ ;
+径庭 < keitei\ ;
+別紙 < besshi\ ;
+応召 < oushou\ ;
+出船 < defune\ ;
+酷刑 < kokkei\ ;
+快刀 < kaitou\ ;
+先鞭 < senben\ ;
+巧遅 < kouchi\ ;
+座礁 < zashou\ ;
+選炭 < sentan\ ;
+弁済 < bensai\ ;
+半天 < hanten\ ;
+志向 < shikou\ ;
+出臍 < debeso\ ;
+彷徨 < houkou\ ;
+半夜 < han''ya\ ;
+制空 < seikuu\ ;
+原人 < genjin\ ;
+再転 < saiten\ ;
+形成 < keisei\ ;
+市販 < shihan\ ;
+硝安 < shouan\ ;
+初経 < shokei\ ;
+半壊 < hankai\ ;
+弔歌 < chouka\ ;
+近著 < kincho\ ;
+落款 < rakkan\ ;
+切羽 < kiriha\ ;
+硝子 < garasu\ ;
+幹線 < kansen\ ;
+都心 < toshin\ ;
+確保 < kakuho\ ;
+歳歳 < saisai\ ;
+充電 < juuden\ ;
+池亭 < chitei\ ;
+内輪 < uchiwa\ ;
+運用 < un''you\ ;
+盛観 < seikan\ ;
+千夜 < sen''ya\ ;
+序章 < joshou\ ;
+制禦 < seigyo\ ;
+分署 < bunsho\ ;
+形態 < keitai\ ;
+硬変 < kouhen\ ;
+先陣 < senjin\ ;
+公金 < koukin\ ;
+鳥渡 < chotto\ ;
+遅番 < osoban\ ;
+力泳 < rikiei\ ;
+正油 < shouyu\ ;
+印匣 < inbako\ ;
+即効 < sokkou\ ;
+荷船 < nibune\ ;
+広範 < kouhan\ ;
+石木 < ishiki\ ;
+碩儒 < sekiju\ ;
+著書 < chosho\ ;
+川辺 < kawabe\ ;
+鳩派 < hatoha\ ;
+母御 < hahago\ ;
+過保護 < kahogo\ ;
+鄭声 < teisei\ ;
+砲弾 < houdan\ ;
+当所 < tousho\ ;
+盛装 < seisou\ ;
+水勢 < suisei\ ;
+都庁 < tochou\ ;
+六部 < rokubu\ ;
+止水 < shisui\ ;
+鮮鋭 < sen''ei\ ;
+酒名 < shumei\ ;
+盛衰 < seisui\ ;
+民団 < mindan\ ;
+芸風 < geifuu\ ;
+弦材 < genzai\ ;
+初等 < shotou\ ;
+公邸 < koutei\ ;
+印刻 < inkoku\ ;
+割烹 < kappou\ ;
+蓮台 < rendai\ ;
+正殿 < seiden\ ;
+再販 < saihan\ ;
+切線 < sessen\ ;
+剣状 < kenjou\ ;
+卵円 < ran''en\ ;
+酷似 < kokuji\ ;
+別種 < besshu\ ;
+睥睨 < heigei\ ;
+葉柄 < youhei\ ;
+著明 < chomei\ ;
+従姉 < juushi\ ;
+殺意 < satsui\ ;
+辞表 < jihyou\ ;
+非営利 < hieiri\ ;
+公選 < kousen\ ;
+従妹 < juumai\ ;
+利福 < rifuku\ ;
+経緯儀 < keiigi\ ;
+占取 < senshu\ ;
+毎年 < mainen\ ;
+残暑 < zansho\ ;
+公道 < koudou\ ;
+正正 < seisei\ ;
+平米 < heibei\ ;
+配合 < haigou\ ;
+水分 < suibun\ ;
+真美 < shinbi\ ;
+幄舎 < akusha\ ;
+魚鱗 < gyorin\ ;
+矢柄 < yagara\ ;
+入部 < nyuubu\ ;
+石斧 < sekifu\ ;
+冗談 < joudan\ ;
+水冷 < suirei\ ;
+矮星 < waisei\ ;
+蒼天 < souten\ ;
+全道 < zendou\ ;
+幼童 < youdou\ ;
+轟轟 < gougou\ ;
+睡眠 < suimin\ ;
+巨資 < kyoshi\ ;
+葉書 < hagaki\ ;
+包帯 < houtai\ ;
+厄介 < yakkai\ ;
+民営 < min''ei\ ;
+勇断 < yuudan\ ;
+動揺 < douyou\ ;
+殿御 < tonogo\ ;
+十回 < jukkai\ ;
+十四 < juuyon\ ;
+巨財 < kyozai\ ;
+協和 < kyouwa\ ;
+幽窓 < yuusou\ ;
+川路 < kawaji\ ;
+勇敢 < yuukan\ ;
+巨象 < kyozou\ ;
+冗言 < jougen\ ;
+欠片 < kakera\ ;
+連盟 < renmei\ ;
+幼稚 < youchi\ ;
+後天 < kouten\ ;
+具足 < gusoku\ ;
+鱗粉 < rinpun\ ;
+化学 < kagaku\ ;
+遵法 < junpou\ ;
+白金 < hakkin\ ;
+適温 < tekion\ ;
+南半 < nanhan\ ;
+逸球 < ikkyuu\ ;
+配剤 < haizai\ ;
+歯根 < shikon\ ;
+卒去 < sokkyo\ ;
+再誕 < saitan\ ;
+選民 < senmin\ ;
+市街 < shigai\ ;
+嵩高 < suukou\ ;
+先鋒 < senpou\ ;
+真綿 < mawata\ ;
+欣然 < kinzen\ ;
+呑兵衛 < nonbee\ ;
+後塵 < koujin\ ;
+全軍 < zengun\ ;
+送稿 < soukou\ ;
+冷蔵 < reizou\ ;
+配分 < haibun\ ;
+復員 < fukuin\ ;
+出納 < suitou\ ;
+処置 < shochi\ ;
+再訪 < saihou\ ;
+草葉 < kusaba\ ;
+年税 < nenzei\ ;
+再訂 < saitei\ ;
+苛酷 < kakoku\ ;
+強打 < kyouda\ ;
+邪教 < jakyou\ ;
+矢文 < yabumi\ ;
+内談 < naidan\ ;
+氏名 < shimei\ ;
+具象 < gushou\ ;
+真紅 < shinku\ ;
+卓効 < takkou\ ;
+艦齢 < kanrei\ ;
+勤怠 < kintai\ ;
+即今 < sokkon\ ;
+連番 < renban\ ;
+徴募 < choubo\ ;
+邦文 < houbun\ ;
+当店 < touten\ ;
+欠点 < ketten\ ;
+弊村 < heison\ ;
+当年 < tounen\ ;
+年祭 < nensai\ ;
+彼女 < kanojo\ ;
+荷縄 < ninawa\ ;
+死文 < shibun\ ;
+荏苒 < jinzen\ ;
+歳晩 < saiban\ ;
+包容 < houyou\ ;
+農芸 < nougei\ ;
+年礼 < nenrei\ ;
+弔旗 < chouki\ ;
+退社 < taisha\ ;
+半半 < hanhan\ ;
+別盃 < beppai\ ;
+過激 < kageki\ ;
+内訓 < naikun\ ;
+皇軍 < kougun\ ;
+水仙 < suisen\ ;
+却下 < kyakka\ ;
+不義理 < fugiri\ ;
+再製 < saisei\ ;
+強慢 < gouman\ ;
+希薄 < kihaku\ ;
+単元 < tangen\ ;
+遠浅 < tooasa\ ;
+轆轤 < rokuro\ ;
+毒婦 < dokufu\ ;
+南光 < nankou\ ;
+配偶 < haiguu\ ;
+内観 < naikan\ ;
+発送 < hassou\ ;
+御告 < otsuge\ ;
+内覧 < nairan\ ;
+遠洋 < en''you\ ;
+弾性 < dansei\ ;
+内見 < naiken\ ;
+形容 < keiyou\ ;
+有意差 < yuuisa\ ;
+強情 < goujou\ ;
+千千 < chidji\ ;
+近縁 < kin''en\ ;
+真箇 < shinko\ ;
+魚類 < gyorui\ ;
+勇戦 < yuusen\ ;
+鶏口 < keikou\ ;
+常置 < jouchi\ ;
+卒先 < sossen\ ;
+遠沈 < enchin\ ;
+正本 < seihon\ ;
+正木 < masaki\ ;
+全貌 < zenbou\ ;
+部将 < bushou\ ;
+先遣 < senken\ ;
+硫化 < ryuuka\ ;
+遡求 < sokyuu\ ;
+眼瞼 < ganken\ ;
+半分 < hanpun\ ;
+分社 < bunsha\ ;
+正書 < seisho\ ;
+入費 < nyuuhi\ ;
+短所 < tansho\ ;
+午刻 < gokoku\ ;
+占住 < senjuu\ ;
+巡覧 < junran\ ;
+気儘 < kimama\ ;
+忌中 < kichuu\ ;
+内装 < naisou\ ;
+役場 < yakuba\ ;
+魔風 < makaze\ ;
+出窓 < demado\ ;
+目脂 < meyani\ ;
+助教 < jokyou\ ;
+酒仙 < shusen\ ;
+鶏卵 < keiran\ ;
+真竹 < madake\ ;
+看経 < kankin\ ;
+建材 < kenzai\ ;
+発車 < hassha\ ;
+民兵 < minpei\ ;
+復刊 < fukkan\ ;
+半円 < han''en\ ;
+勘当 < kandou\ ;
+弊政 < heisei\ ;
+匈奴 < kyoudo\ ;
+酒乱 < shuran\ ;
+盲者 < mousha\ ;
+廃液 < haieki\ ;
+左表 < sahyou\ ;
+遅滞 < chitai\ ;
+刀礼 < tourei\ ;
+弁明 < benmei\ ;
+心事 < shinji\ ;
+勘弁 < kanben\ ;
+欲気 < yokuke\ ;
+短慮 < tanryo\ ;
+千分 < senbun\ ;
+劣敗 < reppai\ ;
+毎夕 < maiyuu\ ;
+砲声 < housei\ ;
+光輪 < kourin\ ;
+卒倒 < sottou\ ;
+単体 < tantai\ ;
+百足 < mukade\ ;
+欧洲 < oushuu\ ;
+勅意 < chokui\ ;
+公論 < kouron\ ;
+十分 < juppun\ ;
+魚雷 < gyorai\ ;
+先輩 < senpai\ ;
+平目 < hirame\ ;
+郷士 < goushi\ ;
+此方 < konata\ ;
+剣法 < kenpou\ ;
+茶茶 < chacha\ ;
+正方 < seihou\ ;
+武教 < bukyou\ ;
+剪毛 < senmou\ ;
+配乗 < haijou\ ;
+矜持 < kyouji\ ;
+農耕 < noukou\ ;
+千円 < sen''en\ ;
+初生 < shosei\ ;
+公認 < kounin\ ;
+巡行 < junkou\ ;
+区劃 < kukaku\ ;
+正文 < seibun\ ;
+歌格 < kakaku\ ;
+幽界 < yuukai\ ;
+正数 < seisuu\ ;
+後味 < atoaji\ ;
+砲塔 < houtou\ ;
+硝化 < shouka\ ;
+兼行 < kenkou\ ;
+彫塑 < chouso\ ;
+十全 < juuzen\ ;
+公許 < koukyo\ ;
+南京 < nankin\ ;
+知慮 < chiryo\ ;
+死所 < shisho\ ;
+幼生 < yousei\ ;
+道民 < doumin\ ;
+半値 < han''ne\ ;
+悶々 < monmon\ ;
+返答 < hentou\ ;
+茶色 < chairo\ ;
+権謀 < kenbou\ ;
+鶏冠 < tosaka\ ;
+百貨 < hyakka\ ;
+廻文 < kaibun\ ;
+勁悍 < keikan\ ;
+元軍 < gengun\ ;
+十億 < juuoku\ ;
+引手 < hikite\ ;
+魔障 < mashou\ ;
+切目 < kireme\ ;
+引戸 < hikido\ ;
+軟風 < nanpuu\ ;
+眼界 < gankai\ ;
+茶臼 < chausu\ ;
+選書 < sensho\ ;
+英訳 < eiyaku\ ;
+転音 < ten''on\ ;
+残影 < zan''ei\ ;
+芳醇 < houjun\ ;
+年産 < nensan\ ;
+年生 < nensei\ ;
+千倍 < senbai\ ;
+廃残 < haizan\ ;
+良馬 < ryouba\ ;
+平生 < heizei\ ;
+遊民 < yuumin\ ;
+葛布 < kuzufu\ ;
+廃止 < haishi\ ;
+輪転 < rinten\ ;
+高緯度 < kouido\ ;
+帆船 < hobune\ ;
+十倍 < juubai\ ;
+剛毛 < goumou\ ;
+毎回 < maikai\ ;
+母国 < bokoku\ ;
+民人 < minjin\ ;
+真砂 < masago\ ;
+助手 < sukete\ ;
+止揚 < shiyou\ ;
+幽玄 < yuugen\ ;
+芸道 < geidou\ ;
+加振 < kashin\ ;
+盛者 < jousha\ ;
+役員 < yakuin\ ;
+微乳 < binyuu\ ;
+県税 < kenzei\ ;
+優遇 < yuuguu\ ;
+石工 < sekkou\ ;
+内蔵 < naizou\ ;
+民主 < minshu\ ;
+初犯 < shohan\ ;
+殿堂 < dendou\ ;
+庶民 < shomin\ ;
+瞬時 < shunji\ ;
+優退 < yuutai\ ;
+凹目 < kubome\ ;
+劣才 < ressai\ ;
+輪距 < rinkyo\ ;
+返礼 < henrei\ ;
+刀痕 < toukon\ ;
+鳴戸 < naruto\ ;
+勘定 < kanjou\ ;
+内蒙 < naimou\ ;
+目糞 < mekuso\ ;
+座浴 < zayoku\ ;
+標語 < hyougo\ ;
+白話 < hakuwa\ ;
+判然 < hanzen\ ;
+砂子 < sunago\ ;
+悠々 < yuuyuu\ ;
+労役 < roueki\ ;
+茗荷 < myouga\ ;
+目籠 < mekago\ ;
+着物 < kimono\ ;
+車風 < shafuu\ ;
+標記 < hyouki\ ;
+鬚髯 < shuzen\ ;
+前段 < zendan\ ;
+遮断 < shadan\ ;
+適時 < tekiji\ ;
+草紙 < soushi\ ;
+落後 < rakugo\ ;
+盲管 < moukan\ ;
+十三 < juusan\ ;
+十万 < juuman\ ;
+毒味 < dokumi\ ;
+葉巻 < hamaki\ ;
+張子 < hariko\ ;
+石屋 < ishiya\ ;
+御主 < onushi\ ;
+都合 < tsugou\ ;
+御中 < onchuu\ ;
+花輪 < hanawa\ ;
+弁慶 < benkei\ ;
+不貞寝 < futene\ ;
+免許 < menkyo\ ;
+干犯 < kanpan\ ;
+剪枝 < senshi\ ;
+花軸 < kajiku\ ;
+幽然 < yuuzen\ ;
+凹田 < kubota\ ;
+苦衷 < kuchuu\ ;
+発見 < hakken\ ;
+兎角 < tokaku\ ;
+当地 < touchi\ ;
+干物 < himono\ ;
+平版 < heihan\ ;
+苦行 < kugyou\ ;
+鯨脂 < geishi\ ;
+再興 < saikou\ ;
+落度 < ochido\ ;
+砲台 < houdai\ ;
+再臨 < sairin\ ;
+真田 < sanada\ ;
+助役 < joyaku\ ;
+毎号 < maigou\ ;
+劣性 < ressei\ ;
+目笊 < mezaru\ ;
+歯形 < hagata\ ;
+弾奏 < dansou\ ;
+包含 < hougan\ ;
+廃校 < haikou\ ;
+後便 < koubin\ ;
+匍匐 < hofuku\ ;
+郊外 < kougai\ ;
+強姦 < goukan\ ;
+白衣 < byakue\ ;
+巨艦 < kyokan\ ;
+進歩 < shinpo\ ;
+凡眼 < bongan\ ;
+僧門 < soumon\ ;
+返盃 < henpai\ ;
+工芸 < kougei\ ;
+軍隊 < guntai\ ;
+落差 < rakusa\ ;
+巨船 < kyosen\ ;
+鱗状 < rinjou\ ;
+軍陣 < gunjin\ ;
+輪講 < rinkou\ ;
+残存 < zanzon\ ;
+平然 < heizen\ ;
+切片 < seppen\ ;
+北光 < hokkou\ ;
+武徳 < butoku\ ;
+眉目 < bimoku\ ;
+眼点 < ganten\ ;
+動天 < douten\ ;
+功徳 < kudoku\ ;
+後件 < kouken\ ;
+艦隊 < kantai\ ;
+歯医者 < haisha\ ;
+苗裔 < byouei\ ;
+加役 < kayaku\ ;
+後代 < koudai\ ;
+鱗片 < rinpen\ ;
+弊店 < heiten\ ;
+真理 < shinri\ ;
+儕輩 < saihai\ ;
+皮膜 < himaku\ ;
+似顔絵 < nigaoe\ ;
+役儀 < yakugi\ ;
+真珠 < shinju\ ;
+剪断 < sendan\ ;
+公葬 < kousou\ ;
+砂場 < sunaba\ ;
+弁当 < bentou\ ;
+逓減 < teigen\ ;
+往信 < oushin\ ;
+軍門 < gunmon\ ;
+座標 < zahyou\ ;
+魚道 < gyodou\ ;
+艇首 < teishu\ ;
+邪宗 < jashuu\ ;
+正弦 < seigen\ ;
+勇姿 < yuushi\ ;
+分煙 < bun''en\ ;
+欠本 < keppon\ ;
+毎分 < maifun\ ;
+制止 < seishi\ ;
+郵券 < yuuken\ ;
+荒磯 < araiso\ ;
+軽輩 < keihai\ ;
+華族 < kazoku\ ;
+構造 < kouzou\ ;
+著大 < chodai\ ;
+出物 < demono\ ;
+茅舎 < bousha\ ;
+座業 < zagyou\ ;
+勝因 < shouin\ ;
+皮肉 < hiniku\ ;
+前栽 < senzai\ ;
+砲兵 < houhei\ ;
+内聞 < naibun\ ;
+分点 < bunten\ ;
+死守 < shishu\ ;
+底止 < teishi\ ;
+兵船 < heisen\ ;
+別法 < beppou\ ;
+凸版 < toppan\ ;
+通気 < tsuuki\ ;
+加州 < kashuu\ ;
+正常 < seijou\ ;
+廻廊 < kairou\ ;
+速歩 < sokuho\ ;
+干潟 < higata\ ;
+軽躁 < keisou\ ;
+遥拝 < youhai\ ;
+芸談 < geidan\ ;
+巧者 < kousha\ ;
+優諚 < yuujou\ ;
+鳩座 < hatoza\ ;
+短大 < tandai\ ;
+左翼 < sayoku\ ;
+茶筅 < chasen\ ;
+前板 < maeita\ ;
+僻遠 < hekien\ ;
+高麗 < kourai\ ;
+身頃 < migoro\ ;
+前条 < zenjou\ ;
+入荷 < nyuuka\ ;
+割拠 < kakkyo\ ;
+強固 < kyouko\ ;
+平準 < heijun\ ;
+弟妹 < teimai\ ;
+痛飲 < tsuuin\ ;
+劾奏 < gaisou\ ;
+干満 < kanman\ ;
+前書 < zensho\ ;
+延年 < en''nen\ ;
+病魔 < byouma\ ;
+利欲 < riyoku\ ;
+郭公 < kakkou\ ;
+庭木 < niwaki\ ;
+楽音 < gakuon\ ;
+残塁 < zanrui\ ;
+入苑 < nyuuen\ ;
+若葉 < wakaba\ ;
+准看 < junkan\ ;
+常用 < jouyou\ ;
+勲功 < kunkou\ ;
+弊害 < heigai\ ;
+此岸 < shigan\ ;
+平淡 < heitan\ ;
+火事場 < kajiba\ ;
+全般 < zenpan\ ;
+前景 < zenkei\ ;
+遠戚 < enseki\ ;
+殺到 < sattou\ ;
+目盛 < memori\ ;
+若菜 < wakana\ ;
+帆立 < hotate\ ;
+郡制 < gunsei\ ;
+郵便 < yuubin\ ;
+転送 < tensou\ ;
+目白 < mejiro\ ;
+盪盪 < toutou\ ;
+初段 < shodan\ ;
+船頭 < sendou\ ;
+当分 < toubun\ ;
+週期 < shuuki\ ;
+郎君 < roukun\ ;
+近状 < kinjou\ ;
+巨編 < kyohen\ ;
+花見 < hanami\ ;
+内線 < naisen\ ;
+欠損 < kesson\ ;
+内緒 < naisho\ ;
+刑法 < keihou\ ;
+鳴子 < naruko\ ;
+前文 < zenbun\ ;
+武学 < bugaku\ ;
+出潮 < deshio\ ;
+席画 < sekiga\ ;
+逆毛 < sakage\ ;
+適応 < tekiou\ ;
+魚貝 < gyobai\ ;
+若芽 < wakame\ ;
+転載 < tensai\ ;
+冷眼 < reigan\ ;
+勤勉 < kinben\ ;
+櫛比 < shippi\ ;
+送水 < sousui\ ;
+勤労 < kinrou\ ;
+市税 < shizei\ ;
+母乳 < bonyuu\ ;
+転転 < tenten\ ;
+達成 < tassei\ ;
+内紛 < naifun\ ;
+勿体 < mottai\ ;
+勘合 < kangou\ ;
+茶碗 < chawan\ ;
+軍配 < gunbai\ ;
+平水 < heisui\ ;
+鳥屋 < toriya\ ;
+平民 < heimin\ ;
+平氏 < heishi\ ;
+連枝 < renshi\ ;
+母上 < hahaue\ ;
+動向 < doukou\ ;
+疾駆 < shikku\ ;
+函渠 < kankyo\ ;
+農産 < nousan\ ;
+刑死 < keishi\ ;
+楼門 < roumon\ ;
+公署 < kousho\ ;
+年歯 < nenshi\ ;
+造林 < zourin\ ;
+船隊 < sentai\ ;
+遠心 < enshin\ ;
+苛苛 < iraira\ ;
+弱味 < yowami\ ;
+適度 < tekido\ ;
+削摩 < sakuma\ ;
+輪蔵 < rinzou\ ;
+弾劾 < dangai\ ;
+達意 < tatsui\ ;
+底本 < teihon\ ;
+到来 < tourai\ ;
+発艦 < hakkan\ ;
+刎死 < funshi\ ;
+軍道 < gundou\ ;
+創建 < souken\ ;
+前提 < zentei\ ;
+冬着 < fuyugi\ ;
+造本 < zouhon\ ;
+看点 < kanten\ ;
+欣懐 < kinkai\ ;
+薄々 < usuusu\ ;
+冬眠 < toumin\ ;
+豪雨禍 < gouuka\ ;
+勝利 < shouri\ ;
+登臨 < tourin\ ;
+車道 < shadou\ ;
+強化 < kyouka\ ;
+辛目 < karame\ ;
+動勢 < dousei\ ;
+痴鈍 < chidon\ ;
+残品 < zanpin\ ;
+庸才 < yousai\ ;
+動労 < dourou\ ;
+軒輊 < kenchi\ ;
+光芒 < koubou\ ;
+帯状 < obijou\ ;
+苦肉 < kuniku\ ;
+連星 < rensei\ ;
+目玉 < medama\ ;
+茶盆 < chabon\ ;
+郎党 < roudou\ ;
+布石 < fuseki\ ;
+臥龍 < garyou\ ;
+弁天 < benten\ ;
+切歯 < sesshi\ ;
+短命 < tanmei\ ;
+巣箱 < subako\ ;
+殿上 < tenjou\ ;
+舷門 < genmon\ ;
+選定 < sentei\ ;
+勇名 < yuumei\ ;
+正大 < seidai\ ;
+髑髏 < dokuro\ ;
+利札 < rifuda\ ;
+遷宮 < senguu\ ;
+転貸 < tentai\ ;
+弁士 < benshi\ ;
+亜麻製 < amasei\ ;
+道念 < dounen\ ;
+瞳子 < doushi\ ;
+当代 < toudai\ ;
+床机 < shougi\ ;
+先般 < senpan\ ;
+当人 < tounin\ ;
+遵守 < junshu\ ;
+車輪 < sharin\ ;
+初校 < shokou\ ;
+軍車 < gunsha\ ;
+連敗 < renpai\ ;
+底数 < teisuu\ ;
+出水 < demizu\ ;
+身銭 < mizeni\ ;
+艦載 < kansai\ ;
+広東 < kanton\ ;
+布目 < nunome\ ;
+典範 < tenpan\ ;
+病院 < byouin\ ;
+知命 < chimei\ ;
+盗用 < touyou\ ;
+剛性 < gousei\ ;
+当世 < tousei\ ;
+勉励 < benrei\ ;
+出殻 < degara\ ;
+兎肉 < toniku\ ;
+眠気 < nemuke\ ;
+茶番 < chaban\ ;
+真水 < mamizu\ ;
+左程 < sahodo\ ;
+高風 < koufuu\ ;
+幽林 < yuurin\ ;
+返済 < hensai\ ;
+冬瓜 < tougan\ ;
+殊勲 < shukun\ ;
+光背 < kouhai\ ;
+軌跡 < kiseki\ ;
+弱冠 < jakkan\ ;
+知友 < chiyuu\ ;
+加圧 < kaatsu\ ;
+茶瓶 < chabin\ ;
+利敵 < riteki\ ;
+判明 < hanmei\ ;
+適宜 < tekigi\ ;
+殊功 < shukou\ ;
+弥勒 < miroku\ ;
+冥界 < meikai\ ;
+芭蕉 < bashou\ ;
+運弓 < unkyuu\ ;
+剣帯 < kentai\ ;
+高音 < takane\ ;
+良貨 < ryouka\ ;
+短剣 < tanken\ ;
+先聖 < sensei\ ;
+全米 < zenbei\ ;
+盲点 < mouten\ ;
+判断 < handan\ ;
+歓声 < kansei\ ;
+欽定 < kintei\ ;
+透明 < toumei\ ;
+重々 < juujuu\ ;
+軟論 < nanron\ ;
+邸内 < teinai\ ;
+免罪 < menzai\ ;
+廃帝 < haitei\ ;
+短刀 < tantou\ ;
+公算 < kousan\ ;
+舌頭 < zettou\ ;
+選外 < sengai\ ;
+死去 < shikyo\ ;
+軍資 < gunshi\ ;
+引合 < hikiai\ ;
+幽景 < yuukei\ ;
+遊底 < yuutei\ ;
+矩則 < kusoku\ ;
+巡礼 < junrei\ ;
+年来 < nenrai\ ;
+初旬 < shojun\ ;
+平板 < heiban\ ;
+儀表 < gihyou\ ;
+兵種 < heishu\ ;
+巨砲 < kyohou\ ;
+皆納 < kainou\ ;
+残党 < zantou\ ;
+次席 < jiseki\ ;
+歌声 < utagoe\ ;
+模索 < mosaku\ ;
+残光 < zankou\ ;
+元老 < genrou\ ;
+芳草 < housou\ ;
+真横 < mayoko\ ;
+八端 < hattan\ ;
+分校 < bunkou\ ;
+連投 < rentou\ ;
+盗犯 < touhan\ ;
+弾丸 < dangan\ ;
+歌境 < kakyou\ ;
+写生 < shasei\ ;
+残像 < zanzou\ ;
+歩哨 < hoshou\ ;
+県民 < kenmin\ ;
+剣山 < kenzan\ ;
+労功 < roukou\ ;
+連戦 < rensen\ ;
+冷然 < reizen\ ;
+動乱 < douran\ ;
+制憲 < seiken\ ;
+弓勢 < yunzei\ ;
+内省 < naisei\ ;
+平明 < heimei\ ;
+死刑 < shikei\ ;
+眉毛 < mayuge\ ;
+造成 < zousei\ ;
+廃屋 < haioku\ ;
+切替 < settai\ ;
+逃散 < tousan\ ;
+身軽 < migaru\ ;
+矢先 < yasaki\ ;
+軍談 < gundan\ ;
+年数 < nensuu\ ;
+山羊座 < yagiza\ ;
+正味 < shoumi\ ;
+退散 < taisan\ ;
+芸能 < geinou\ ;
+連想 < rensou\ ;
+残余 < zan''yo\ ;
+遣外 < kengai\ ;
+弁口 < benkou\ ;
+皓礬 < kouban\ ;
+正号 < seigou\ ;
+苦笑 < kushou\ ;
+分明 < bunmei\ ;
+弓具 < kyuugu\ ;
+癌腫 < ganshu\ ;
+矮人 < waijin\ ;
+荒海 < araumi\ ;
+鳴動 < meidou\ ;
+内界 < naikai\ ;
+座席 < zaseki\ ;
+正南 < seinan\ ;
+芸者 < geisha\ ;
+正午 < shougo\ ;
+内用 < naiyou\ ;
+別懇 < bekkon\ ;
+分数 < bunsuu\ ;
+分散 < bunsan\ ;
+優者 < yuusha\ ;
+卒塔婆 < sotoba\ ;
+歯冠 < shikan\ ;
+再現 < saigen\ ;
+康寧 < kounei\ ;
+功労 < kourou\ ;
+欄干 < rankan\ ;
+列挙 < rekkyo\ ;
+前山 < zenzan\ ;
+弥久 < bikyuu\ ;
+発端 < hottan\ ;
+初戦 < shosen\ ;
+軍装 < gunsou\ ;
+別意 < betsui\ ;
+出時 < dedoki\ ;
+連弾 < rendan\ ;
+亜麻色 < amairo\ ;
+知人 < chijin\ ;
+茫然 < bouzen\ ;
+輔翼 < hoyoku\ ;
+農法 < nouhou\ ;
+利息 < risoku\ ;
+府庁 < fuchou\ ;
+庶子 < shoshi\ ;
+華奢 < kyasha\ ;
+至難 < shinan\ ;
+労使 < roushi\ ;
+廉売 < renbai\ ;
+死体 < shitai\ ;
+逢引 < aibiki\ ;
+停頓 < teiton\ ;
+遺告 < yuigou\ ;
+函数 < kansuu\ ;
+冷淡 < reitan\ ;
+真昼 < mahiru\ ;
+出方 < dekata\ ;
+剣士 < kenshi\ ;
+公益 < koueki\ ;
+船路 < funaji\ ;
+疎隔 < sokaku\ ;
+加入 < kanyuu\ ;
+農民 < noumin\ ;
+遠国 < ongoku\ ;
+具申 < gushin\ ;
+荷札 < nifuda\ ;
+席次 < sekiji\ ;
+利得 < ritoku\ ;
+全盲 < zenmou\ ;
+死亡 < shibou\ ;
+巨獣 < kyojuu\ ;
+正兵 < seihei\ ;
+全盛 < zensei\ ;
+蹈鞴 < tatara\ ;
+連帯 < rentai\ ;
+速度 < sokudo\ ;
+到底 < toutei\ ;
+免税 < menzei\ ;
+舌鋒 < zeppou\ ;
+造幣 < zouhei\ ;
+標示 < hyouji\ ;
+平手 < hirate\ ;
+停電 < teiden\ ;
+健闘 < kentou\ ;
+舟運 < shuuun\ ;
+横目 < yokome\ ;
+凱旋 < gaisen\ ;
+目次 < mokuji\ ;
+冷泉 < reisen\ ;
+全癒 < zen''yu\ ;
+白磁 < hakuji\ ;
+返本 < henpon\ ;
+別形 < bekkei\ ;
+幻想 < gensou\ ;
+看板 < kanban\ ;
+再燃 < sainen\ ;
+着意 < chakui\ ;
+内状 < naijou\ ;
+別当 < bettou\ ;
+近東 < kintou\ ;
+建具 < tategu\ ;
+近来 < kinrai\ ;
+返書 < hensho\ ;
+序幕 < jomaku\ ;
+側鎖 < sokusa\ ;
+概論 < gairon\ ;
+病躯 < byouku\ ;
+楽譜 < gakufu\ ;
+冷汗 < reikan\ ;
+分担 < buntan\ ;
+辣油 < razeyu\ ;
+劇化 < gekika\ ;
+冷水 < reisui\ ;
+還元 < kangen\ ;
+利幅 < rihaba\ ;
+凡書 < bonsho\ ;
+連峰 < renpou\ ;
+劇務 < gekimu\ ;
+切手 < kirete\ ;
+幻怪 < genkai\ ;
+追慕 < tsuibo\ ;
+発砲 < happou\ ;
+身許 < mimoto\ ;
+適否 < tekihi\ ;
+出掛 < degake\ ;
+円熟 < enjuku\ ;
+近景 < kinkei\ ;
+連山 < renzan\ ;
+高邁 < koumai\ ;
+前奏 < zensou\ ;
+店屋 < miseya\ ;
+処方 < shohou\ ;
+青海苔 < aonori\ ;
+遍在 < henzai\ ;
+別巻 < bekkan\ ;
+冗漫 < jouman\ ;
+概観 < gaikan\ ;
+前夜 < zen''ya\ ;
+建値 < tatene\ ;
+幻影 < gen''ei\ ;
+連射 < rensha\ ;
+前売 < maeuri\ ;
+概要 < gaiyou\ ;
+傍輩 < houbai\ ;
+白眉 < hakubi\ ;
+峡部 < kyoubu\ ;
+制定 < seitei\ ;
+軽罪 < keizai\ ;
+番頭 < bantou\ ;
+初年 < shonen\ ;
+辛気 < shinki\ ;
+割合 < wariai\ ;
+楼観 < roukan\ ;
+苦痛 < kutsuu\ ;
+幾年 < ikunen\ ;
+冬毛 < fuyuge\ ;
+先知 < senchi\ ;
+店子 < tanako\ ;
+魚群 < gyogun\ ;
+退役 < taieki\ ;
+幼年 < younen\ ;
+迂曲 < ukyoku\ ;
+割印 < wariin\ ;
+利尿 < rinyou\ ;
+似非親 < eseoya\ ;
+床屋 < tokoya\ ;
+退廷 < taitei\ ;
+権現 < gongen\ ;
+側部 < sokubu\ ;
+帰服 < kifuku\ ;
+眼底 < gantei\ ;
+退廃 < taihai\ ;
+別居 < bekkyo\ ;
+留飲 < ryuuin\ ;
+刪定 < santei\ ;
+欄外 < rangai\ ;
+冠水 < kansui\ ;
+別封 < beppuu\ ;
+眼帯 < gantai\ ;
+平年 < heinen\ ;
+平平 < heihei\ ;
+臆面 < okumen\ ;
+廃品 < haihin\ ;
+迷彩 < meisai\ ;
+市民 < shimin\ ;
+庄屋 < shouya\ ;
+色色 < iroiro\ ;
+冠毛 < kanmou\ ;
+常数 < jousuu\ ;
+農林 < nourin\ ;
+平常 < heijou\ ;
+苔癬 < taisen\ ;
+癲癇 < tenkan\ ;
+亜麻糸 < amaito\ ;
+判定 < hantei\ ;
+判官 < hangan\ ;
+川瀬 < kawase\ ;
+廷丁 < teitei\ ;
+発生 < hassei\ ;
+農村 < nouson\ ;
+側近 < sokkin\ ;
+盤根 < bankon\ ;
+魂胆 < kontan\ ;
+六十路 < musoji\ ;
+轟然 < gouzen\ ;
+別嬪 < beppin\ ;
+欠品 < keppin\ ;
+魚網 < gyomou\ ;
+内湯 < uchiyu\ ;
+亜温帯 < aontai\ ;
+生麩 < namafu\ ;
+幽居 < yuukyo\ ;
+連夜 < ren''ya\ ;
+巡演 < jun''en\ ;
+歌会 < utakai\ ;
+公然 < kouzen\ ;
+巻毛 < makige\ ;
+軍艦 < gunkan\ ;
+連声 < renjou\ ;
+余所見 < yosomi\ ;
+自重 < jichou\ ;
+内済 < naisai\ ;
+先番 < senban\ ;
+遊吟 < yuugin\ ;
+遊君 < yuukun\ ;
+軍船 < gunsen\ ;
+草本 < souhon\ ;
+盲断 < moudan\ ;
+着尺 < kijaku\ ;
+艨艟 < moudou\ ;
+偽足 < gisoku\ ;
+草書 < sousho\ ;
+全然 < zenzen\ ;
+列寧 < reenin\ ;
+魚精 < gyosei\ ;
+艦艇 < kantei\ ;
+目方 < mekata\ ;
+凡才 < bonsai\ ;
+凡手 < bonshu\ ;
+充用 < juuyou\ ;
+魚粉 < gyofun\ ;
+凡戦 < bonsen\ ;
+庸君 < youkun\ ;
+値頃 < negoro\ ;
+凶徒 < kyouto\ ;
+疎通 < sotsuu\ ;
+至近 < shikin\ ;
+幢幡 < douban\ ;
+平屋 < hiraya\ ;
+遅参 < chisan\ ;
+逆子 < sakago\ ;
+委員会 < iinkai\ ;
+白狐 < byakko\ ;
+値鞘 < nezaya\ ;
+出庫 < shukko\ ;
+追尾 < tsuibi\ ;
+出府 < shuppu\ ;
+初婚 < shokon\ ;
+出店 < demise\ ;
+内治 < naichi\ ;
+農政 < nousei\ ;
+剛勇 < gouyuu\ ;
+欠勤 < kekkin\ ;
+共演 < kyouen\ ;
+自適 < jiteki\ ;
+凡慮 < bonryo\ ;
+退官 < taikan\ ;
+眼孔 < gankou\ ;
+界面 < kaimen\ ;
+遯世 < tonsei\ ;
+平定 < heitei\ ;
+華冑 < kachuu\ ;
+輪番 < rinban\ ;
+依存度 < izondo\ ;
+出師 < suishi\ ;
+前名 < zenmei\ ;
+道元 < dougen\ ;
+前号 < zengou\ ;
+判士 < hanshi\ ;
+輪生 < rinsei\ ;
+内気 < uchiki\ ;
+傍訓 < boukun\ ;
+眸子 < boushi\ ;
+遅効 < chikou\ ;
+廃兵 < haihei\ ;
+免状 < menjou\ ;
+帆桁 < hogeta\ ;
+機業 < kigyou\ ;
+逓増 < teizou\ ;
+幕府 < bakufu\ ;
+席捲 < sekken\ ;
+荷役 < niyaku\ ;
+内殿 < naiden\ ;
+傍観 < boukan\ ;
+界隈 < kaiwai\ ;
+分封 < bunpou\ ;
+公準 < koujun\ ;
+傍視 < wakimi\ ;
+白煙 < hakuen\ ;
+苔状 < taijou\ ;
+魔笛 < mateki\ ;
+創世 < sousei\ ;
+跳馬 < chouba\ ;
+常態 < joutai\ ;
+広場 < hiroba\ ;
+山顛 < santen\ ;
+停車 < teisha\ ;
+高覧 < kouran\ ;
+甘鯛 < amadai\ ;
+広域 < kouiki\ ;
+横溢 < ouitsu\ ;
+冬日 < fuyubi\ ;
+高見 < takami\ ;
+僧綱 < sougou\ ;
+前前 < maemae\ ;
+座卓 < zataku\ ;
+冠木 < kabuki\ ;
+良縁 < ryouen\ ;
+剛健 < gouken\ ;
+偽証 < gishou\ ;
+市有 < shiyuu\ ;
+庭前 < teizen\ ;
+阿僧祇 < asougi\ ;
+検車 < kensha\ ;
+店員 < ten''in\ ;
+進化 < shinka\ ;
+樹氷 < juhyou\ ;
+庄園 < shouen\ ;
+自足 < jisoku\ ;
+骨身 < honemi\ ;
+六法 < roppou\ ;
+出家 < shukke\ ;
+高裁 < kousai\ ;
+画集 < gashuu\ ;
+分娩 < bunben\ ;
+色糸 < iroito\ ;
+画障 < gashou\ ;
+山霊 < sanrei\ ;
+写本 < shahon\ ;
+入海 < iriumi\ ;
+蹂躪 < juurin\ ;
+幕屋 < makuya\ ;
+刻印 < kokuin\ ;
+凡常 < bonjou\ ;
+迷妄 < meimou\ ;
+痛苦 < tsuuku\ ;
+盆景 < bonkei\ ;
+船荷 < funani\ ;
+連吟 < rengin\ ;
+初回 < shokai\ ;
+廃人 < haijin\ ;
+剛体 < goutai\ ;
+車線 < shasen\ ;
+連合 < rengou\ ;
+盲想 < mousou\ ;
+年報 < nenpou\ ;
+相性 < aishou\ ;
+若湯 < wakayu\ ;
+公民 < koumin\ ;
+市日 < ichibi\ ;
+様相 < yousou\ ;
+鱈子 < tarako\ ;
+分外 < bungai\ ;
+監房 < kanbou\ ;
+布教 < fukyou\ ;
+造反 < zouhan\ ;
+分売 < bunbai\ ;
+凄惨 < seisan\ ;
+盛挙 < seikyo\ ;
+軽目 < karume\ ;
+帰心 < kishin\ ;
+茘枝 < reishi\ ;
+相役 < aiyaku\ ;
+座元 < zamoto\ ;
+再来 < sairai\ ;
+兼業 < kengou\ ;
+盾座 < tateza\ ;
+冷房 < reibou\ ;
+制動 < seidou\ ;
+相当 < soutou\ ;
+巡検 < junken\ ;
+兵権 < heiken\ ;
+百済 < kudara\ ;
+至論 < shiron\ ;
+船艙 < sensou\ ;
+山間 < yamaai\ ;
+平均 < heikin\ ;
+山門 < sanmon\ ;
+傭船 < yousen\ ;
+円柱 < enchuu\ ;
+生類 < seirui\ ;
+平地 < heichi\ ;
+連動 < rendou\ ;
+前便 < zenbin\ ;
+庸人 < youjin\ ;
+年回 < nenkai\ ;
+退団 < taidan\ ;
+盲従 < moujuu\ ;
+冗文 < joubun\ ;
+全欧 < zen''ou\ ;
+睾丸 < kougan\ ;
+至言 < shigen\ ;
+連判 < renpan\ ;
+軒端 < nokiba\ ;
+師弟 < shitei\ ;
+前件 < zenken\ ;
+八十路 < yasoji\ ;
+屏風 < byoubu\ ;
+相席 < aiseki\ ;
+前代 < zendai\ ;
+生面 < seimen\ ;
+苦汁 < nigari\ ;
+伊勢蝦 < iseebi\ ;
+前人 < zenjin\ ;
+切地 < kireji\ ;
+凶夢 < kyoumu\ ;
+分地 < bunchi\ ;
+艶福 < enpuku\ ;
+若気 < wakage\ ;
+産院 < san''in\ ;
+分団 < bundan\ ;
+自註 < jichuu\ ;
+初号 < shogou\ ;
+逸事 < itsuji\ ;
+僻目 < higame\ ;
+刀圭 < toukei\ ;
+冊数 < sassuu\ ;
+画鋲 < gabyou\ ;
+出城 < dejiro\ ;
+幼名 < youmei\ ;
+小鼻 < kobana\ ;
+内旨 < naishi\ ;
+痛罵 < tsuuba\ ;
+自覚 < jikaku\ ;
+内方 < naihou\ ;
+偽薬 < giyaku\ ;
+病臥 < byouga\ ;
+共栄 < kyouei\ ;
+値遇 < chiguu\ ;
+并呑 < heidon\ ;
+幾千 < ikusen\ ;
+高著 < koucho\ ;
+小麦 < komugi\ ;
+分営 < bun''ei\ ;
+棒鋼 < boukou\ ;
+送呈 < soutei\ ;
+座中 < zachuu\ ;
+并合 < heigou\ ;
+修院 < shuuin\ ;
+底値 < sokone\ ;
+帰属 < kizoku\ ;
+工数 < kousuu\ ;
+兵曹 < heisou\ ;
+兵書 < heisho\ ;
+曾祖父 < hijiji\ ;
+刑名 < keimei\ ;
+軍礼 < gunrei\ ;
+樹木 < jumoku\ ;
+高菜 < takana\ ;
+相対 < soutai\ ;
+年号 < nengou\ ;
+見栄坊 < miebou\ ;
+花火 < hanabi\ ;
+展開 < tenkai\ ;
+相宿 < aiyado\ ;
+退去 < taikyo\ ;
+帯封 < obifuu\ ;
+亜鉛版 < aenban\ ;
+凍寒 < toukan\ ;
+平原 < heigen\ ;
+凍害 < tougai\ ;
+山野 < san''ya\ ;
+透写 < tousha\ ;
+制令 < seirei\ ;
+六本 < roppon\ ;
+苦楽 < kuraku\ ;
+帰宅 < kitaku\ ;
+疽腫 < soshou\ ;
+横根 < yokone\ ;
+幾分 < ikubun\ ;
+異説 < isetsu\ ;
+魔球 < makyuu\ ;
+凶器 < kyouki\ ;
+保革 < hokaku\ ;
+再挙 < saikyo\ ;
+俊馬 < shunme\ ;
+八本 < happon\ ;
+公有 < kouyuu\ ;
+偏見 < henken\ ;
+府中 < fuchuu\ ;
+目尻 < mejiri\ ;
+其方 < sonata\ ;
+盛年 < seinen\ ;
+小鴨 < kogamo\ ;
+退勢 < taisei\ ;
+返報 < henpou\ ;
+内探 < naitan\ ;
+権柄 < kenpei\ ;
+小鳥 < kotori\ ;
+年功 < nenkou\ ;
+田野 < den''ya\ ;
+兵数 < heisuu\ ;
+盪尽 < toujin\ ;
+眼前 < ganzen\ ;
+艦砲 < kanpou\ ;
+店主 < tenshu\ ;
+転生 < tensei\ ;
+足駄 < ashida\ ;
+八景 < hakkei\ ;
+登楼 < tourou\ ;
+目安 < meyasu\ ;
+概算 < gaisan\ ;
+分厘 < bunrin\ ;
+御猪口 < ochoko\ ;
+追加 < tsuika\ ;
+横木 < yokogi\ ;
+優渥 < yuuaku\ ;
+帆影 < hokage\ ;
+年初 < nensho\ ;
+腰間 < youkan\ ;
+草屋 < souoku\ ;
+公明 < koumei\ ;
+年刊 < nenkan\ ;
+年分 < nenbun\ ;
+幕営 < bakuei\ ;
+小鰭 < kohada\ ;
+平分 < heibun\ ;
+平凡 < heibon\ ;
+瘋癲 < fuuten\ ;
+追分 < oiwake\ ;
+鰥夫 < yamome\ ;
+用金 < youkin\ ;
+鮎並女 < ainame\ ;
+魔物 < mamono\ ;
+公文 < koubun\ ;
+茶巾 < chakin\ ;
+刑典 < keiten\ ;
+近在 < kinzai\ ;
+別件 < bekken\ ;
+山辺 < yamabe\ ;
+略記 < ryakki\ ;
+巧手 < koushu\ ;
+真味 < shinmi\ ;
+身空 < misora\ ;
+芋版 < imoban\ ;
+巡拝 < junpai\ ;
+産金 < sankin\ ;
+全数 < zensuu\ ;
+全敗 < zenpai\ ;
+真否 < shinpi\ ;
+若木 < wakagi\ ;
+列候 < rekkou\ ;
+追儺 < tsuina\ ;
+冷害 < reigai\ ;
+床上 < yukaue\ ;
+偽膜 < gimaku\ ;
+帆布 < honuno\ ;
+凝固 < gyouko\ ;
+途中 < tochuu\ ;
+内憂 < naiyuu\ ;
+俗間 < zokkan\ ;
+促音 < sokuon\ ;
+小骨 < kobone\ ;
+典拠 < tenkyo\ ;
+登板 < touban\ ;
+初代 < shodai\ ;
+刀剣 < touken\ ;
+幕吏 < bakuri\ ;
+魚灯 < gyotou\ ;
+膚身 < hadami\ ;
+癖毛 < kusege\ ;
+僭王 < sen''ou\ ;
+再思 < saishi\ ;
+県営 < ken''ei\ ;
+鮮明 < senmei\ ;
+生酒 < kizake\ ;
+分党 < buntou\ ;
+幾人 < ikunin\ ;
+脳髄 < nouzui\ ;
+真北 < makita\ ;
+巨悪 < kyoaku\ ;
+荊妻 < keisai\ ;
+全損 < zenson\ ;
+刃先 < hasaki\ ;
+山路 < yamaji\ ;
+帯域 < taiiki\ ;
+返品 < henpin\ ;
+小首 < kokubi\ ;
+年余 < nen''yo\ ;
+甘酸 < kansan\ ;
+騒霊 < sourei\ ;
+至芸 < shigei\ ;
+退会 < taikai\ ;
+寡黙 < kamoku\ ;
+刃傷 < ninjou\ ;
+再建 < saikon\ ;
+極秘 < gokuhi\ ;
+逃亡 < toubou\ ;
+退任 < tainin\ ;
+年代 < nendai\ ;
+傍線 < bousen\ ;
+省営 < shouei\ ;
+帰国 < kikoku\ ;
+着丈 < kitake\ ;
+農場 < noujou\ ;
+軽減 < keigen\ ;
+骨董 < kottou\ ;
+療治 < ryouji\ ;
+辺地 < henchi\ ;
+駝鳥 < dachou\ ;
+内径 < naikei\ ;
+腹部 < fukubu\ ;
+出先 < desaki\ ;
+元来 < ganrai\ ;
+真冬 < mafuyu\ ;
+輪栽 < rinsai\ ;
+巨弾 < kyodan\ ;
+元本 < genpon\ ;
+凶具 < kyougu\ ;
+自若 < jijaku\ ;
+年中 < nenjuu\ ;
+発散 < hassan\ ;
+師団 < shidan\ ;
+駱駝 < rakuda\ ;
+内廷 < naitei\ ;
+傍系 < boukei\ ;
+分体 < buntai\ ;
+平易化 < heiika\ ;
+迎合 < geigou\ ;
+安保理 < anpori\ ;
+修造 < shuzou\ ;
+草堂 < soudou\ ;
+干与 < kan''yo\ ;
+機屋 < hataya\ ;
+農地 < nouchi\ ;
+曾祖母 < hibaba\ ;
+航空 < koukuu\ ;
+市子 < ichiko\ ;
+尊顔 < songan\ ;
+軍犬 < genken\ ;
+修辞 < shuuji\ ;
+生身 < namami\ ;
+横手 < yokote\ ;
+停船 < teisen\ ;
+県勢 < kensei\ ;
+六感 < rokkan\ ;
+元旦 < gantan\ ;
+画調 < gachou\ ;
+冗官 < joukan\ ;
+処分 < shobun\ ;
+軽水 < keisui\ ;
+自腹 < jibara\ ;
+分与 < bun''yo\ ;
+処処 < shosho\ ;
+芒洋 < bouyou\ ;
+小雪 < koyuki\ ;
+小雨 < kosame\ ;
+導電 < douden\ ;
+兵役 < heieki\ ;
+小雀 < kogara\ ;
+籐椅子 < touisu\ ;
+函人 < kanjin\ ;
+盗塁 < tourui\ ;
+苦手 < nigate\ ;
+対顔 < taigan\ ;
+若手 < wakate\ ;
+冬場 < fuyuba\ ;
+催眠 < saimin\ ;
+優柔 < yuujuu\ ;
+小文字 < komoji\ ;
+芸林 < geirin\ ;
+相反 < souhan\ ;
+巨岩 < kyogan\ ;
+帯同 < taidou\ ;
+常勤 < joukin\ ;
+荘司 < shouji\ ;
+凍原 < tougen\ ;
+楽界 < gakkai\ ;
+荘厳 < sougon\ ;
+出世 < shusse\ ;
+凄味 < sugomi\ ;
+自習 < jishuu\ ;
+凡僧 < bonsou\ ;
+対面 < taimen\ ;
+番茶 < bancha\ ;
+異色 < ishoku\ ;
+円寂 < enjaku\ ;
+州崎 < susaki\ ;
+近傍 < kinbou\ ;
+入御 < nyuugo\ ;
+内宮 < naiguu\ ;
+市塵 < shijin\ ;
+践言 < sengen\ ;
+芳書 < housho\ ;
+用談 < youdan\ ;
+花木 < kaboku\ ;
+余所目 < yosome\ ;
+公平 < kouhei\ ;
+内孫 < naison\ ;
+保身 < hoshin\ ;
+発憤 < happun\ ;
+舌端 < zettan\ ;
+全店 < zenten\ ;
+対陣 < taijin\ ;
+例題 < reidai\ ;
+帯剣 < taiken\ ;
+帝命 < teimei\ ;
+軟泥 < nandei\ ;
+茅屋 < bouoku\ ;
+入庫 < nyuuko\ ;
+用言 < yougen\ ;
+発意 < hatsui\ ;
+入府 < nyuufu\ ;
+芸文 < geibun\ ;
+専門 < senmon\ ;
+帯刀 < taitou\ ;
+苦心 < kushin\ ;
+檀君 < dankun\ ;
+兼官 < kenkan\ ;
+尿路 < nyouro\ ;
+県会 < kenkai\ ;
+盤台 < bandai\ ;
+布地 < nunoji\ ;
+至純 < shijun\ ;
+草原 < sougen\ ;
+自縛 < jibaku\ ;
+梅酒 < umeshu\ ;
+元手 < motode\ ;
+下院議 < kaingi\ ;
+県令 < kenrei\ ;
+寝首 < nekubi\ ;
+生誕 < seitan\ ;
+軟水 < nansui\ ;
+近代 < kindai\ ;
+県人 < kenjin\ ;
+盆地 < bonchi\ ;
+孵化器 < fukaki\ ;
+軍港 < gunkou\ ;
+党弊 < touhei\ ;
+冷厳 < reigen\ ;
+臭素 < shuuso\ ;
+茄子 < nasubi\ ;
+盗品 < touhin\ ;
+舗石 < hoseki\ ;
+自給 < jikyuu\ ;
+返上 < henjou\ ;
+魚梯 < gyotei\ ;
+盛名 < seimei\ ;
+全島 < zentou\ ;
+赭顔 < shagan\ ;
+共寝 < tomone\ ;
+手真似 < temane\ ;
+小銭 < kozeni\ ;
+近世 < kinsei\ ;
+臨終 < rinjuu\ ;
+常例 < jourei\ ;
+全岸 < zengan\ ;
+巨大 < kyodai\ ;
+辛味 < karami\ ;
+内外 < naigai\ ;
+目先 < mesaki\ ;
+常住 < joujuu\ ;
+農兵 < nouhei\ ;
+傍目 < hatame\ ;
+展覧 < tenran\ ;
+常会 < joukai\ ;
+常任 < jounin\ ;
+俯角 < fukaku\ ;
+痴漢 < chikan\ ;
+軍法 < gunpou\ ;
+小金 < kogane\ ;
+冷剛 < reigou\ ;
+常人 < joujin\ ;
+魚板 < gyoban\ ;
+崩潰 < houkai\ ;
+不如意 < funyoi\ ;
+僧正 < soujou\ ;
+允恭 < inkyou\ ;
+軸木 < jikugi\ ;
+相伝 < souden\ ;
+帝冠 < teikan\ ;
+併音 < pin''in\ ;
+高目 < takame\ ;
+円域 < en''iki\ ;
+寒風 < kanpuu\ ;
+駅頭 < ekitou\ ;
+傾瀉 < keisha\ ;
+冷凍 < reitou\ ;
+軍民 < gunmin\ ;
+骨粉 < koppun\ ;
+病理 < byouri\ ;
+常世 < tokoyo\ ;
+膵臓 < suizou\ ;
+其奴 < soitsu\ ;
+充当 < juutou\ ;
+修補 < shuuho\ ;
+布告 < fukoku\ ;
+舎監 < shakan\ ;
+儒教 < jukyou\ ;
+俗議 < zokugi\ ;
+湯文字 < yumoji\ ;
+冷光 < reikou\ ;
+寝際 < negiwa\ ;
+的屋 < tekiya\ ;
+異機種 < ikishu\ ;
+益友 < ekiyuu\ ;
+内在 < naizai\ ;
+兵変 < heihen\ ;
+山葵 < wasabi\ ;
+偵知 < teichi\ ;
+疫癘 < ekirei\ ;
+盲人 < moujin\ ;
+皇宮 < kouguu\ ;
+能面 < noumen\ ;
+盛典 < seiten\ ;
+根雪 < neyuki\ ;
+茅場 < kayaba\ ;
+帰一 < kiitsu\ ;
+皇孫 < kouson\ ;
+侮辱 < bujoku\ ;
+番線 < bansen\ ;
+農会 < noukai\ ;
+俗語 < zokugo\ ;
+目今 < mokkon\ ;
+直下 < chokka\ ;
+山菜 < sansai\ ;
+転校 < tenkou\ ;
+俗話 < zokuwa\ ;
+疥癬 < kaisen\ ;
+苦学 < kugaku\ ;
+元帥 < gensui\ ;
+白寿 < hakuju\ ;
+冥利 < myouri\ ;
+発展 < hatten\ ;
+巡回 < junkai\ ;
+輪廻 < rin''ne\ ;
+典型 < tenkei\ ;
+山荘 < sansou\ ;
+公売 < koubai\ ;
+脱退 < dattai\ ;
+俗解 < zokkai\ ;
+背鰭 < sebire\ ;
+赤門 < akamon\ ;
+屍蝋 < shirou\ ;
+畝織 < uneori\ ;
+俗見 < zokken\ ;
+倉荷 < kurani\ ;
+芳情 < houjou\ ;
+首魁 < shukai\ ;
+生薑 < shouga\ ;
+兵団 < heidan\ ;
+対遇 < taiguu\ ;
+亜砒酸 < ahisan\ ;
+生蕃 < seiban\ ;
+免官 < menkan\ ;
+市内 < shinai\ ;
+軽挙 < keikyo\ ;
+良案 < ryouan\ ;
+容顔 < yougan\ ;
+円味 < marumi\ ;
+盛会 < seikai\ ;
+円周 < enshuu\ ;
+芸当 < geitou\ ;
+甘薯 < kansho\ ;
+内命 < naimei\ ;
+車検 < shaken\ ;
+芳志 < houshi\ ;
+小足 < koashi\ ;
+対辺 < taihen\ ;
+苗字 < myouji\ ;
+背骨 < sebone\ ;
+内含 < naigan\ ;
+馬革 < bakaku\ ;
+盟主 < meishu\ ;
+内合 < naigou\ ;
+巨口 < kyokou\ ;
+再勤 < saikin\ ;
+市債 < shisai\ ;
+岩穴 < iwaana\ ;
+元寇 < genkou\ ;
+余震 < yoshin\ ;
+冕冠 < benkan\ ;
+茶会 < chakai\ ;
+低頭 < teitou\ ;
+円卓 < entaku\ ;
+密閉 < mippei\ ;
+山背 < yamase\ ;
+様態 < youtai\ ;
+茶代 < chadai\ ;
+催涙 < sairui\ ;
+背馳 < haichi\ ;
+脱走 < dassou\ ;
+百夜 < momoyo\ ;
+苦境 < kukyou\ ;
+写像 < shazou\ ;
+実験 < jikken\ ;
+茶人 < chajin\ ;
+英国 < eikoku\ ;
+再刊 < saikan\ ;
+内勤 < naikin\ ;
+肺魚 < haigyo\ ;
+自白 < jihaku\ ;
+軍書 < gunsho\ ;
+傍点 < bouten\ ;
+便覧 < benran\ ;
+登壇 < toudan\ ;
+検眼 < kengan\ ;
+校門 < koumon\ ;
+首題 < shudai\ ;
+先妻 < sensai\ ;
+骨相 < kossou\ ;
+阿修羅 < ashura\ ;
+甘草 < kanzou\ ;
+甘茶 < amacha\ ;
+登場 < toujou\ ;
+寝酒 < nezake\ ;
+御雑煮 < ozouni\ ;
+兄妹 < keimai\ ;
+入営 < nyuuei\ ;
+兼勤 < kenkin\ ;
+軒数 < kensuu\ ;
+先天 < senten\ ;
+円内 < en''nai\ ;
+内内 < nainai\ ;
+軍旅 < gunryo\ ;
+内典 < naiten\ ;
+軽快 < keikai\ ;
+全員 < zen''in\ ;
+臨界 < rinkai\ ;
+高瀬 < takase\ ;
+全品 < zenpin\ ;
+検痰 < kentan\ ;
+入唐 < nittou\ ;
+小話 < shouwa\ ;
+背革 < segawa\ ;
+巨億 < kyooku\ ;
+背面 < haimen\ ;
+債権 < saiken\ ;
+輪姦 < rinkan\ ;
+疑獄 < gigoku\ ;
+皮膚科 < hifuka\ ;
+小言 < kogoto\ ;
+検番 < kenban\ ;
+充填 < juuten\ ;
+層群 < sougun\ ;
+花屋 < hanaya\ ;
+軟投 < nantou\ ;
+転戦 < tensen\ ;
+偶然 < guuzen\ ;
+生育 < seiiku\ ;
+岩盤 < ganban\ ;
+共助 < kyoujo\ ;
+較差 < kakusa\ ;
+兵刃 < heijin\ ;
+苗圃 < byouho\ ;
+再任 < sainin\ ;
+余録 < yoroku\ ;
+病気 < byouki\ ;
+駅逓 < ekitei\ ;
+実際 < jissai\ ;
+生者 < shouja\ ;
+由緒 < yuisho\ ;
+俳聖 < haisei\ ;
+山系 < sankei\ ;
+男系 < dankei\ ;
+対論 < tairon\ ;
+寮費 < ryouhi\ ;
+身柄 < migara\ ;
+倫社 < rinsha\ ;
+巨体 < kyotai\ ;
+内住 < naijuu\ ;
+皇后 < kougou\ ;
+小袖 < kosode\ ;
+対語 < tsuigo\ ;
+能辯 < nouben\ ;
+苦味 < nigami\ ;
+魅惑 < miwaku\ ;
+再三 < saisan\ ;
+巨人 < kyojin\ ;
+将補 < shouho\ ;
+芸大 < geidai\ ;
+舷梯 < gentei\ ;
+脱衣 < datsui\ ;
+円丘 < enkyuu\ ;
+芝居 < shibai\ ;
+軟性 < nansei\ ;
+皆勤 < kaikin\ ;
+巨万 < kyoman\ ;
+査閲 < saetsu\ ;
+寸言 < sungen\ ;
+密送 < missou\ ;
+用紙 < youshi\ ;
+体重 < taijuu\ ;
+棄約 < kiyaku\ ;
+侍読 < jidoku\ ;
+骨牌 < karuta\ ;
+骨片 < koppen\ ;
+儒学 < jugaku\ ;
+自然 < shizen\ ;
+赤赤 < akaaka\ ;
+色悪 < iroaku\ ;
+苦力 < kuurii\ ;
+身方 < mikata\ ;
+楷書 < kaisho\ ;
+宝鑑 < houkan\ ;
+弟小父 < otooji\ ;
+信者 < shinja\ ;
+膿瘍 < nouyou\ ;
+概数 < gaisuu\ ;
+芸域 < geiiki\ ;
+小虎 < kodora\ ;
+色恋 < irokoi\ ;
+肺門 < haimon\ ;
+畢生 < hissei\ ;
+生紙 < kigami\ ;
+先君 < senkun\ ;
+赤貝 < akagai\ ;
+例解 < reikai\ ;
+皆兵 < kaihei\ ;
+軍情 < gunjou\ ;
+高歯 < takaba\ ;
+兵乱 < heiran\ ;
+何遍 < nanben\ ;
+駄賃 < dachin\ ;
+尾翼 < biyoku\ ;
+髄液 < zuieki\ ;
+封蝋 < fuurou\ ;
+党内 < tounai\ ;
+公住 < koujuu\ ;
+生粋 < kissui\ ;
+俗耳 < zokuji\ ;
+宴遊 < en''yuu\ ;
+元号 < gengou\ ;
+骨炭 < kottan\ ;
+側泳 < sobaei\ ;
+英俊 < eishun\ ;
+脱藩 < dappan\ ;
+儀宸 < gishin\ ;
+係船 < keisen\ ;
+柔順 < juujun\ ;
+番犬 < banken\ ;
+馬身 < bashin\ ;
+痙攣 < keiren\ ;
+便船 < binsen\ ;
+腎臓 < jinzou\ ;
+馳走 < chisou\ ;
+主治医 < shujii\ ;
+腋臭 < wakiga\ ;
+不誠意 < fuseii\ ;
+停滞 < teitai\ ;
+英京 < eikyou\ ;
+寝言 < negoto\ ;
+偉烈 < iretsu\ ;
+魯国 < rokoku\ ;
+充分 < juubun\ ;
+皆伝 < kaiden\ ;
+痴情 < chijou\ ;
+崇敬 < suukei\ ;
+御詠歌 < goeika\ ;
+転寝 < gorone\ ;
+腐肉 < funiku\ ;
+輸入 < yunyuu\ ;
+先兵 < senpei\ ;
+軍帽 < gunbou\ ;
+俗縁 < zokuen\ ;
+腹筋 < fukkin\ ;
+自涜 < jitoku\ ;
+膚着 < hadagi\ ;
+容赦 < yousha\ ;
+尿素 < nyouso\ ;
+栄進 < eishin\ ;
+楓林 < fuurin\ ;
+余賊 < yozoku\ ;
+検温 < ken''on\ ;
+寓言 < guugen\ ;
+首輪 < kubiwa\ ;
+芸名 < geimei\ ;
+健気 < kenage\ ;
+栄辱 < eijoku\ ;
+胃下垂 < ikasui\ ;
+赤裸 < sekira\ ;
+小船 < kobune\ ;
+伍長 < gochou\ ;
+屈筋 < kukkin\ ;
+容貌 < youbou\ ;
+発会 < hakkai\ ;
+自沈 < jichin\ ;
+痛打 < tsuuda\ ;
+家賃 < yachin\ ;
+登仙 < tousen\ ;
+芳名 < houmei\ ;
+学院 < gakuin\ ;
+刷毛目 < hakeme\ ;
+魔境 < makyou\ ;
+甲烏賊 < kouika\ ;
+舌根 < zekkon\ ;
+崩御 < hougyo\ ;
+饅頭 < manjuu\ ;
+作譜 < sakufu\ ;
+先便 < senbin\ ;
+小膝 < kohiza\ ;
+岬湾 < kouwan\ ;
+小腹 < kobara\ ;
+元値 < motone\ ;
+骨法 < koppou\ ;
+良家 < ryouke\ ;
+光体 < koutai\ ;
+官辺 < kanpen\ ;
+実車 < jissha\ ;
+密計 < mikkei\ ;
+亜拉毘亜 < arabia\ ;
+介鱗 < kairin\ ;
+胸裏 < kyouri\ ;
+小脇 < kowaki\ ;
+伊達着 < dategi\ ;
+崇拝 < suuhai\ ;
+概念 < gainen\ ;
+用益 < youeki\ ;
+屯田 < tonden\ ;
+膾炙 < kaisha\ ;
+先代 < sendai\ ;
+小股 < komata\ ;
+転変 < tenpen\ ;
+転売 < tenbai\ ;
+御見舞 < omimai\ ;
+実践 < jissen\ ;
+官軍 < kangun\ ;
+背走 < haisou\ ;
+身形 < minari\ ;
+校訓 < koukun\ ;
+小耳 < komimi\ ;
+聴音 < chouon\ ;
+容認 < younin\ ;
+脱脂 < dasshi\ ;
+会釈 < eshaku\ ;
+孔雀 < kujaku\ ;
+小者 < komono\ ;
+代願 < daigan\ ;
+養鶏 < youkei\ ;
+背文字 < semoji\ ;
+係累 < keirui\ ;
+肝銘 < kanmei\ ;
+余角 < yokaku\ ;
+脱肛 < dakkou\ ;
+寝藁 < newara\ ;
+優曇華 < udonge\ ;
+偶有 < guuyuu\ ;
+密行 < mikkou\ ;
+元三 < ganzan\ ;
+体言 < taigen\ ;
+身幅 < mihaba\ ;
+仲間 < nakama\ ;
+伴走 < bansou\ ;
+転地 < tenchi\ ;
+良夜 < ryouya\ ;
+体要 < taiyou\ ;
+伝送 < densou\ ;
+贋造 < ganzou\ ;
+御襁褓 < omutsu\ ;
+臨検 < rinken\ ;
+対聯 < tairen\ ;
+首謀 < shubou\ ;
+僕婢 < bokuhi\ ;
+棒状 < boujou\ ;
+他領 < taryou\ ;
+寸胴 < zundou\ ;
+人魚 < ningyo\ ;
+体裁 < teisai\ ;
+偶数 < guusuu\ ;
+養魚 < yougyo\ ;
+導線 < dousen\ ;
+完走 < kansou\ ;
+馬蝿 < umabae\ ;
+令閨 < reikei\ ;
+対置 < taichi\ ;
+駐英 < chuuei\ ;
+西班牙 < supein\ ;
+肩身 < katami\ ;
+今風 < imafuu\ ;
+這々 < houhou\ ;
+芸人 < geinin\ ;
+柔道 < juudou\ ;
+脱線 < dassen\ ;
+根菜 < konsai\ ;
+胡蝶 < kochou\ ;
+小糠 < konuka\ ;
+検案 < ken''an\ ;
+定論 < teiron\ ;
+楽屋 < gakuya\ ;
+病後 < byougo\ ;
+膿汁 < noujuu\ ;
+傲岸 < gougan\ ;
+小米 < kogome\ ;
+学部 < gakubu\ ;
+臨書 < rinsho\ ;
+査読 < sadoku\ ;
+腫瘍 < shuyou\ ;
+楽寝 < rakune\ ;
+封緘 < fuukan\ ;
+根茎 < konkei\ ;
+膨満 < bouman\ ;
+修理 < shuuri\ ;
+脱糞 < dappun\ ;
+臘梅 < roubai\ ;
+査証 < sashou\ ;
+倒潰 < toukai\ ;
+舌戦 < zessen\ ;
+高慢 < kouman\ ;
+柔軟 < juunan\ ;
+小箱 < kobako\ ;
+尽瘁 < jinsui\ ;
+尊簡 < sonkan\ ;
+導管 < douken\ ;
+定見 < teiken\ ;
+瓦礫 < gareki\ ;
+実装 < jissou\ ;
+極寒 < gokkan\ ;
+駅舎 < ekisha\ ;
+来鮮 < raisen\ ;
+人類 < jinrui\ ;
+亡魂 < boukon\ ;
+贈賄 < zouwai\ ;
+使聘 < shihei\ ;
+人頭 < jintou\ ;
+走者 < sousha\ ;
+実行 < jikkou\ ;
+軍営 < gun''ei\ ;
+軽便 < keiben\ ;
+使者 < shisha\ ;
+偶成 < guusei\ ;
+転勤 < tenkin\ ;
+俗画 < zokuga\ ;
+対米 < taibei\ ;
+距爪 < kyosou\ ;
+人面 < jinmen\ ;
+老齢 < rourei\ ;
+良吏 < ryouri\ ;
+松露 < shouro\ ;
+封筒 < fuutou\ ;
+飛鳥 < hichou\ ;
+脚絆 < kyahan\ ;
+偶感 < guukan\ ;
+貝類 < kairui\ ;
+付録 < furoku\ ;
+偏旁 < henbou\ ;
+代金 < daikin\ ;
+偏斜 < hensha\ ;
+寒肥 < kangoe\ ;
+転写 < tensha\ ;
+会談 < kaidan\ ;
+舎弟 < shatei\ ;
+馴致 < junchi\ ;
+魚介 < gyokai\ ;
+傘屋 < kasaya\ ;
+伝言 < dengon\ ;
+車台 < shadai\ ;
+不見目 < mijime\ ;
+対空 < taikuu\ ;
+会計 < kaikei\ ;
+作興 < sakkou\ ;
+腸炎 < chouen\ ;
+人間 < ningen\ ;
+学費 < gakuhi\ ;
+東面 < toumen\ ;
+小破 < shouha\ ;
+飛魚 < tobiuo\ ;
+山水 < sansui\ ;
+余興 < yokyou\ ;
+山気 < yamake\ ;
+小石 < koishi\ ;
+蕎麦粉 < sobako\ ;
+軍勢 < gunzei\ ;
+余臭 < yoshuu\ ;
+会見 < kaiken\ ;
+封禅 < houzen\ ;
+贅言 < zeigen\ ;
+現金 < genkin\ ;
+居然 < kyozen\ ;
+億万 < okuman\ ;
+検挙 < kenkyo\ ;
+転倒 < tentou\ ;
+町歩 < choubu\ ;
+僧兵 < souhei\ ;
+疑惑 < giwaku\ ;
+代返 < daihen\ ;
+楽土 < rakudo\ ;
+臨戦 < rinsen\ ;
+宝蔵 < houzou\ ;
+楽園 < rakuen\ ;
+林野 < rin''ya\ ;
+京阪 < keihan\ ;
+赤線 < akasen\ ;
+他郷 < takyou\ ;
+軍刀 < guntou\ ;
+痴呆 < chihou\ ;
+条項 < joukou\ ;
+小目 < komoku\ ;
+栄落 < eiraku\ ;
+転住 < tenjuu\ ;
+用法 < youhou\ ;
+臆断 < okudan\ ;
+躍如 < yakujo\ ;
+小皿 < kozara\ ;
+小皺 < kojiwa\ ;
+亡霊 < bourei\ ;
+梭子魚 < kamasu\ ;
+船型 < senkei\ ;
+赤経 < sekkei\ ;
+佞者 < neisha\ ;
+馬肉 < baniku\ ;
+偕成 < kaisei\ ;
+軍兵 < gunpei\ ;
+来電 < raiden\ ;
+東門 < toumon\ ;
+用水 < yousui\ ;
+車内 < shanai\ ;
+馭者 < gyosha\ ;
+不随意 < fuzuii\ ;
+魅了 < miryou\ ;
+二食 < nijiki\ ;
+脂粉 < shifun\ ;
+至当 < shitou\ ;
+体育 < taiiku\ ;
+履歴 < rireki\ ;
+僧侶 < souryo\ ;
+林道 < rindou\ ;
+値札 < nefuda\ ;
+紫陽花 < ajisai\ ;
+低能 < teinou\ ;
+来阪 < raihan\ ;
+例祭 < reisai\ ;
+貴酬 < kishuu\ ;
+胚胎 < haitai\ ;
+僧伽 < sougya\ ;
+桧皮 < hiwada\ ;
+子豚 < kobuta\ ;
+貯金 < chokin\ ;
+代走 < daisou\ ;
+肺葉 < haiyou\ ;
+僭上 < senjou\ ;
+臨御 < ringyo\ ;
+貧鉱 < hinkou\ ;
+偏愛 < hen''ai\ ;
+偽学 < gigaku\ ;
+傑士 < kesshi\ ;
+野良着 < noragi\ ;
+首脳 < shunou\ ;
+生残 < seizan\ ;
+板金 < bankin\ ;
+棟木 < munagi\ ;
+番所 < bansho\ ;
+于蘭盆 < urabon\ ;
+路標 < rohyou\ ;
+車体 < shatai\ ;
+船員 < sen''in\ ;
+字訳 < jiyaku\ ;
+苦味素 < kumiso\ ;
+偏性 < hensei\ ;
+棍棒 < konbou\ ;
+停年 < teinen\ ;
+傘地 < kasaji\ ;
+官舎 < kansha\ ;
+騒然 < souzen\ ;
+山林 < sanrin\ ;
+極右 < kyokuu\ ;
+木魂 < kodama\ ;
+腎炎 < jin''en\ ;
+山村 < sanson\ ;
+人選 < jinsen\ ;
+小猫 < koneko\ ;
+仮託 < kataku\ ;
+棒杭 < bougui\ ;
+人道 < jindou\ ;
+馬糧 < baryou\ ;
+資財 < shizai\ ;
+馬糞 < maguso\ ;
+僅僅 < kinkin\ ;
+極印 < gokuin\ ;
+代講 < daikou\ ;
+会葬 < kaisou\ ;
+車上 < shajou\ ;
+至尊 < shison\ ;
+舅姑 < kyuuko\ ;
+肺臓 < haizou\ ;
+身内 < miuchi\ ;
+身共 < midomo\ ;
+至宝 < shihou\ ;
+体系 < taikei\ ;
+偏平 < henpei\ ;
+察知 < satchi\ ;
+末香 < makkou\ ;
+木馬 < mokuba\ ;
+側女 < sobame\ ;
+本館 < honkan\ ;
+代言 < daigen\ ;
+肺胞 < haihou\ ;
+人車 < jinsha\ ;
+朱顔 < shugan\ ;
+用材 < youzai\ ;
+足湯 < ashiyu\ ;
+傾倒 < keitou\ ;
+業務 < gyoumu\ ;
+倍数 < baisuu\ ;
+老雄 < rouyuu\ ;
+船出 < funade\ ;
+自宅 < jitaku\ ;
+脇目 < wakime\ ;
+本願 < hongan\ ;
+本題 < hondai\ ;
+乱雲 < ran''un\ ;
+疾呼 < shikko\ ;
+船具 < funagu\ ;
+家筋 < iesuji\ ;
+本音 < hon''ne\ ;
+付託 < futaku\ ;
+生来 < seirai\ ;
+倦憊 < kenpai\ ;
+枢要 < suuyou\ ;
+颱風 < taifuu\ ;
+寝癖 < neguse\ ;
+無事故 < mujiko\ ;
+臍帯 < seitai\ ;
+検定 < kentei\ ;
+来邸 < raitei\ ;
+腹案 < fukuan\ ;
+生木 < namaki\ ;
+余程 < yohodo\ ;
+傲倨 < goukyo\ ;
+骨子 < kosshi\ ;
+来遊 < raiyuu\ ;
+東軍 < tougun\ ;
+展望 < tenbou\ ;
+耳輪 < mimiwa\ ;
+小潮 < koshio\ ;
+梶木 < kajiki\ ;
+貧賤 < hinsen\ ;
+来迎 < raigou\ ;
+有髪 < uhatsu\ ;
+赤痢 < sekiri\ ;
+便法 < benpou\ ;
+低空 < teikuu\ ;
+伝聞 < denbun\ ;
+本隊 < hontai\ ;
+岩層 < gansou\ ;
+朝顔 < asagao\ ;
+身丈 < mitake\ ;
+本陣 < honjin\ ;
+本院 < hon''in\ ;
+尨毛 < mukuge\ ;
+定紋 < joumon\ ;
+養豚 < youton\ ;
+付表 < fuhyou\ ;
+朱門 < shumon\ ;
+併用 < heiyou\ ;
+木陰 < kokage\ ;
+債主 < saishu\ ;
+来車 < raisha\ ;
+背筋 < haikin\ ;
+山手 < yamate\ ;
+腋毛 < wakige\ ;
+便殿 < benden\ ;
+肝胆 < kantan\ ;
+朝露 < chouro\ ;
+屯所 < tonsho\ ;
+賀表 < gahyou\ ;
+宝算 < housan\ ;
+一昨日 < ototoi\ ;
+風霜 < fuusou\ ;
+起爆 < kibaku\ ;
+興味 < kyoumi\ ;
+肉芽 < nikuga\ ;
+孤舟 < koshuu\ ;
+二進 < nishin\ ;
+村道 < sondou\ ;
+偏好 < henkou\ ;
+二通 < nitsuu\ ;
+値幅 < nehaba\ ;
+風防 < fuubou\ ;
+枯葉 < kareha\ ;
+家督 < katoku\ ;
+偶吟 < guukin\ ;
+伝線 < densen\ ;
+自国 < jikoku\ ;
+臨在 < rinzai\ ;
+余白 < yohaku\ ;
+宿痾 < shukua\ ;
+密生 < missei\ ;
+寄留 < kiryuu\ ;
+来賓 < raihin\ ;
+伝統 < dentou\ ;
+画心 < gashin\ ;
+導水 < dousui\ ;
+来貢 < raikou\ ;
+脱法 < dappou\ ;
+値嵩 < negasa\ ;
+出来値 < dekine\ ;
+豪邸 < goutei\ ;
+余病 < yobyou\ ;
+老酒 < roushu\ ;
+低目 < hikume\ ;
+作画 < sakuga\ ;
+獣類 < juurui\ ;
+豪邁 < goumai\ ;
+射法 < shahou\ ;
+駄物 < damono\ ;
+脱水 < dassui\ ;
+飛躍 < hiyaku\ ;
+乱酔 < ransui\ ;
+乱酒 < ranshu\ ;
+舎兄 < shakei\ ;
+仰臥 < gyouga\ ;
+番外 < bangai\ ;
+岩塩 < gan''en\ ;
+何番 < nanban\ ;
+書風 < shofuu\ ;
+脳死 < noushi\ ;
+二足 < nisoku\ ;
+羽風 < hakaze\ ;
+豪農 < gounou\ ;
+画幅 < gafuku\ ;
+書類 < shorui\ ;
+生憎 < ainiku\ ;
+中飛 < chuuhi\ ;
+谷間 < tanima\ ;
+東西 < touzai\ ;
+臭味 < shuumi\ ;
+琴線 < kinsen\ ;
+胡瓜 < kyuuri\ ;
+飛越 < hietsu\ ;
+来談 < raidan\ ;
+倉廩 < sourin\ ;
+腐朽 < fukyuu\ ;
+安穏 < an''non\ ;
+値安 < neyasu\ ;
+代艦 < daikan\ ;
+寸法 < sunpou\ ;
+胎盤 < taiban\ ;
+老農 < rounou\ ;
+乱造 < ranzou\ ;
+傍人 < boujin\ ;
+屈指 < kusshi\ ;
+育種 < ikushu\ ;
+梅林 < bairin\ ;
+木釘 < kikugi\ ;
+男工 < dankou\ ;
+豼貅 < hikyuu\ ;
+月間 < gekkan\ ;
+仏葬 < bussou\ ;
+借家 < shakka\ ;
+書面 < shomen\ ;
+来訪 < raihou\ ;
+中音 < chuuon\ ;
+贈答 < zoutou\ ;
+老輩 < rouhai\ ;
+聾者 < rousha\ ;
+桑海 < soukai\ ;
+小楯 < kodate\ ;
+柱礎 < chuuso\ ;
+聚落 < juraku\ ;
+検品 < kenpin\ ;
+偶像 < guuzou\ ;
+存置 < sonchi\ ;
+本邸 < hontei\ ;
+本邦 < honpou\ ;
+来観 < raikan\ ;
+養蚕 < yousan\ ;
+本選 < honsen\ ;
+頽齢 < tairei\ ;
+環海 < kankai\ ;
+木部 < mokubu\ ;
+本道 < hondou\ ;
+居所 < kyosho\ ;
+路床 < roshou\ ;
+偽作 < gisaku\ ;
+乱軍 < rangun\ ;
+賞美 < shoubi\ ;
+貯蔵 < chozou\ ;
+倡婦 < shoufu\ ;
+朝野 < chouya\ ;
+胚珠 < haishu\ ;
+未進 < mishin\ ;
+休符 < kyuufu\ ;
+風采 < fuusai\ ;
+産廃 < sanpai\ ;
+令聞 < reibun\ ;
+自力 < jiriki\ ;
+係数 < keisuu\ ;
+中陰 < chuuin\ ;
+検印 < ken''in\ ;
+少林 < shorin\ ;
+健全 < kenzen\ ;
+寮母 < ryoubo\ ;
+画学 < gagaku\ ;
+互角 < gokaku\ ;
+質素 < shisso\ ;
+根源 < kongen\ ;
+柳眉 < ryuubi\ ;
+争論 < souron\ ;
+走法 < souhou\ ;
+上騰 < joutou\ ;
+山家 < yamaga\ ;
+実生 < mishou\ ;
+末輩 < mappai\ ;
+属差 < zokusa\ ;
+不馴 < funare\ ;
+椿事 < chinji\ ;
+首班 < shuhan\ ;
+定番 < teiban\ ;
+偶人 < guujin\ ;
+男子 < danshi\ ;
+代署 < daisho\ ;
+代置 < daichi\ ;
+伊勢丹 < isetan\ ;
+肺癌 < haigan\ ;
+饌米 < senmai\ ;
+趣旨 < shushi\ ;
+今般 < konpan\ ;
+尊来 < sonrai\ ;
+梯形 < teikei\ ;
+二見 < futami\ ;
+自儘 < jimama\ ;
+果肉 < kaniku\ ;
+検分 < kenbun\ ;
+両院 < ryouin\ ;
+甲子 < kasshi\ ;
+一驚 < ikkyou\ ;
+五行 < gogyou\ ;
+至便 < shiben\ ;
+尊書 < sonsho\ ;
+小昼 < kohiru\ ;
+曝露 < bakuro\ ;
+小春 < koharu\ ;
+余瀝 < yoreki\ ;
+献饌 < kensen\ ;
+信徒 < shinto\ ;
+番号 < bangou\ ;
+一駄 < ichida\ ;
+類題 < ruidai\ ;
+曜霊 < yourei\ ;
+根治 < konchi\ ;
+偉力 < iryoku\ ;
+寡欲 < kayoku\ ;
+有配 < yuuhai\ ;
+仕置 < shioki\ ;
+風車 < fuusha\ ;
+暗黙 < anmoku\ ;
+山女 < yamame\ ;
+暗黒 < ankoku\ ;
+封書 < fuusho\ ;
+仏者 < bussha\ ;
+棄子 < sutego\ ;
+倹吝 < kenrin\ ;
+自供 < jikyou\ ;
+三韓 < sankan\ ;
+予表 < yohyou\ ;
+万頃 < bankei\ ;
+一飛 < ichihi\ ;
+根毛 < konmou\ ;
+余滴 < yoteki\ ;
+倍大 < baidai\ ;
+自作 < jisaku\ ;
+育生 < ikusei\ ;
+画境 < gakyou\ ;
+木賊 < tokusa\ ;
+尊敬 < sonkei\ ;
+上面 < joumen\ ;
+居常 < kyojou\ ;
+代納 < dainou\ ;
+寒気 < samuke\ ;
+三面 < sanmen\ ;
+尊攘 < sonjou\ ;
+停会 < teikai\ ;
+倍増 < baizou\ ;
+検便 < kenben\ ;
+生存 < seizon\ ;
+屑屋 < kuzuya\ ;
+願面 < ganmen\ ;
+風趣 < fuushu\ ;
+胸毛 < munage\ ;
+山場 < yamaba\ ;
+屏居 < heikyo\ ;
+万雷 < banrai\ ;
+三階 < sangai\ ;
+寝様 < nezama\ ;
+此処等 < kokora\ ;
+番兵 < banpei\ ;
+朝賀 < chouga\ ;
+対数 < taisuu\ ;
+審査 < shinsa\ ;
+寝業 < newaza\ ;
+露西亜 < roshia\ ;
+本論 < honron\ ;
+借問 < shamon\ ;
+曾遊 < souyuu\ ;
+琢磨 < takuma\ ;
+腹子 < harako\ ;
+桟敷 < sajiki\ ;
+対支 < taishi\ ;
+養育 < youiku\ ;
+伯父 < hakufu\ ;
+本誌 < honshi\ ;
+子種 < kodane\ ;
+小指 < koyubi\ ;
+未読 < midoku\ ;
+目医者 < meisha\ ;
+一隻 < isseki\ ;
+寸断 < sundan\ ;
+老衰 < rousui\ ;
+腐心 < fushin\ ;
+暴風 < boufuu\ ;
+余沢 < yotaku\ ;
+定点 < teiten\ ;
+書道 < shodou\ ;
+中部 < chuubu\ ;
+偏人 < henjin\ ;
+倦厭 < ken''en\ ;
+学監 < gakkan\ ;
+養老 < yourou\ ;
+産声 < ubugoe\ ;
+飴色 < ameiro\ ;
+田地 < denchi\ ;
+朝議 < chougi\ ;
+田園 < den''en\ ;
+香港 < honkon\ ;
+桂林 < keirin\ ;
+一間 < hitoma\ ;
+存知 < zonchi\ ;
+中途 < chuuto\ ;
+琺瑯 < hourou\ ;
+頻頻 < hinpin\ ;
+尻尾 < shippo\ ;
+甚大 < jindai\ ;
+例数 < reisuu\ ;
+二葉 < futaba\ ;
+飼育 < shiiku\ ;
+俳壇 < haidan\ ;
+屯営 < ton''ei\ ;
+来臨 < rairin\ ;
+梵天 < bonten\ ;
+如何様 < ikayou\ ;
+寒梅 < kanbai\ ;
+根柢 < kontei\ ;
+何歳 < nansai\ ;
+栗毛 < kurige\ ;
+尊慮 < sonryo\ ;
+住民 < juumin\ ;
+少恩 < shouon\ ;
+産地 < sanchi\ ;
+企画 < kikaku\ ;
+甘塩 < amajio\ ;
+赤本 < akahon\ ;
+風解 < fuukai\ ;
+併有 < heiyuu\ ;
+屋外 < okugai\ ;
+馬橇 < basori\ ;
+中身 < nakami\ ;
+理神 < rishin\ ;
+根本 < nemoto\ ;
+人絹 < jinken\ ;
+主賓 < shuhin\ ;
+生地 < seichi\ ;
+風見 < kazami\ ;
+他称 < tashou\ ;
+香水 < kousui\ ;
+寒村 < kanson\ ;
+杉菜 < sugina\ ;
+留保 < ryuuho\ ;
+能書 < nousho\ ;
+作業 < sagyou\ ;
+倨傲 < kyogou\ ;
+根暗 < nekura\ ;
+跡地 < atochi\ ;
+人糞 < jinpun\ ;
+学理 < gakuri\ ;
+余業 < yogyou\ ;
+小形 < kogata\ ;
+月謝 < gessha\ ;
+密栓 < missen\ ;
+寒暖 < kandan\ ;
+風袋 < fuutai\ ;
+三重 < sanjuu\ ;
+財経 < zaikei\ ;
+存生 < zonjou\ ;
+万金 < mankin\ ;
+尊影 < son''ei\ ;
+根方 < nekata\ ;
+用品 < youhin\ ;
+仮病 < kebyou\ ;
+上酒 < joushu\ ;
+宗派 < shuuha\ ;
+定法 < jouhou\ ;
+家業 < kagyou\ ;
+胡椒 < koshou\ ;
+胆汁 < tanjuu\ ;
+琥珀 < kohaku\ ;
+能文 < noubun\ ;
+小幅 < kohaba\ ;
+孤独 < kodoku\ ;
+産品 < sanpin\ ;
+不適 < futeki\ ;
+密書 < missho\ ;
+股火 < matabi\ ;
+美醜 < bishuu\ ;
+一里 < ichiri\ ;
+寵愛 < chouai\ ;
+宝殿 < houden\ ;
+小差 < shousa\ ;
+珠算 < shuzan\ ;
+不通 < futsuu\ ;
+脳幹 < noukan\ ;
+供応 < kyouou\ ;
+玉藻 < tamamo\ ;
+肝炎 < kan''en\ ;
+三選 < sansen\ ;
+尋常 < jinjou\ ;
+修営 < shuuei\ ;
+胡桃 < kurumi\ ;
+万邦 < banpou\ ;
+老荘 < rousou\ ;
+官民 < kanmin\ ;
+破魔矢 < hamaya\ ;
+属吏 < zokuri\ ;
+枡目 < masume\ ;
+丁酉 < teiyuu\ ;
+越後 < echigo\ ;
+尚尚 < naonao\ ;
+三連 < sanren\ ;
+主計 < shukei\ ;
+校本 < kouhon\ ;
+暮鐘 < boshou\ ;
+封建 < houken\ ;
+倒像 < touzou\ ;
+羅針 < rashin\ ;
+梵唄 < bonbai\ ;
+上辺 < jouhen\ ;
+一郭 < ikkaku\ ;
+一部 < ichibu\ ;
+何枚 < nanmai\ ;
+寸志 < sunshi\ ;
+佞智 < neichi\ ;
+主観 < shukan\ ;
+家柄 < iegara\ ;
+小島 < kojima\ ;
+本葬 < honsou\ ;
+産卵 < sanran\ ;
+人種 < jinshu\ ;
+完治 < kanchi\ ;
+何条 < nanjou\ ;
+代用 < daiyou\ ;
+相部屋 < aibeya\ ;
+伯母 < hakubo\ ;
+俳名 < haimei\ ;
+孤児院 < kojiin\ ;
+義賊 < gizoku\ ;
+小山 < koyama\ ;
+尊崇 < sonsuu\ ;
+俳友 < haiyuu\ ;
+一週 < isshuu\ ;
+休演 < kyuuen\ ;
+一通 < ittsuu\ ;
+脇戸 < wakido\ ;
+尿器 < nyouki\ ;
+三軍 < sangun\ ;
+狭霧 < sagiri\ ;
+根拠 < konkyo\ ;
+井綱 < idzuna\ ;
+今日日 < kyoubi\ ;
+万軍 < bangun\ ;
+東端 < toutan\ ;
+本草 < honzou\ ;
+費目 < himoku\ ;
+仙界 < senkai\ ;
+産前 < sanzen\ ;
+玉菜 < tamana\ ;
+末茶 < matcha\ ;
+飯米 < hanmai\ ;
+順風 < junpuu\ ;
+朱色 < shuiro\ ;
+伝法 < denpou\ ;
+画伯 < gahaku\ ;
+狭隘 < kyouai\ ;
+獣行 < juukou\ ;
+不足 < fusoku\ ;
+資産 < shisan\ ;
+嫁菜 < yomena\ ;
+五経 < gokyou\ ;
+駅手 < ekishu\ ;
+生前 < seizen\ ;
+下足 < gesoku\ ;
+何方 < donata\ ;
+豚舎 < tonsha\ ;
+足場 < ashiba\ ;
+順順 < junjun\ ;
+荼枳尼 < dakini\ ;
+一身 < isshin\ ;
+肥沃 < hiyoku\ ;
+梱包 < konpou\ ;
+林産 < rinsan\ ;
+人知 < jinchi\ ;
+罰金 < bakkin\ ;
+令状 < reijou\ ;
+例年 < reinen\ ;
+狭間 < hazama\ ;
+脛巾 < habaki\ ;
+履修 < rishuu\ ;
+膝下 < shikka\ ;
+二級 < nikyuu\ ;
+海老錠 < ebijou\ ;
+本膳 < honzen\ ;
+一路 < ichiro\ ;
+脆性 < zeisei\ ;
+体操 < taisou\ ;
+使役 < shieki\ ;
+晩餐 < bansan\ ;
+肝油 < kan''yu\ ;
+群論 < gunron\ ;
+用便 < youben\ ;
+今生 < konjou\ ;
+少女 < shoujo\ ;
+人相 < ninsou\ ;
+予約 < yoyaku\ ;
+人目 < hitome\ ;
+甘党 < amatou\ ;
+貧相 < hinsou\ ;
+背景 < haikei\ ;
+駒座 < komaza\ ;
+安楽 < anraku\ ;
+世評 < sehyou\ ;
+班田 < handen\ ;
+有蓋 < yuugai\ ;
+用件 < youken\ ;
+乗船 < jousen\ ;
+実景 < jikkei\ ;
+屋内 < okunai\ ;
+学派 < gakuha\ ;
+風船 < fuusen\ ;
+柔毛 < juumou\ ;
+現状 < genjou\ ;
+音響 < onkyou\ ;
+木肌 < kihada\ ;
+尊大 < sondai\ ;
+脳天 < nouten\ ;
+媚薬 < biyaku\ ;
+風致 < fuuchi\ ;
+寝床 < nedoko\ ;
+世襲 < seshuu\ ;
+老練 < rouren\ ;
+不詳 < fushou\ ;
+実施 < jisshi\ ;
+万謝 < bansha\ ;
+三論 < sanron\ ;
+俗務 < zokumu\ ;
+駅弁 < ekiben\ ;
+本署 < honsho\ ;
+寝巻 < nemaki\ ;
+実数 < jissuu\ ;
+人生 < jinsei\ ;
+守株 < shushu\ ;
+蕎麦屋 < sobaya\ ;
+争端 < soutan\ ;
+一議 < ichigi\ ;
+伴星 < bansei\ ;
+飛竜 < hiryuu\ ;
+根幹 < konkan\ ;
+赤帽 < akabou\ ;
+養生 < youjou\ ;
+暴走 < bousou\ ;
+上計 < joukei\ ;
+宿意 < shukui\ ;
+完本 < kanpon\ ;
+耳目 < jimoku\ ;
+佞悪 < neiaku\ ;
+俯伏 < fufuku\ ;
+騙取 < henshu\ ;
+俯仰 < fugyou\ ;
+上覧 < jouran\ ;
+万言 < mangen\ ;
+対外 < taigai\ ;
+住所 < juusho\ ;
+財界 < zaikai\ ;
+風聞 < fuubun\ ;
+上覆 < uwaooi\ ;
+容態 < youdai\ ;
+財産 < zaisan\ ;
+雌捻子 < meneji\ ;
+両虎 < ryouko\ ;
+猥談 < waidan\ ;
+越境 < ekkyou\ ;
+上製 < jousei\ ;
+俗儒 < zokuju\ ;
+上裁 < jousai\ ;
+伝来 < denrai\ ;
+寝小 < neshou\ ;
+本絹 < honken\ ;
+飯盒 < hangou\ ;
+下表 < kahyou\ ;
+腕前 < udemae\ ;
+仮泊 < kahaku\ ;
+余徳 < yotoku\ ;
+佞弁 < neiben\ ;
+中華 < chuuka\ ;
+害悪 < gaiaku\ ;
+封地 < houchi\ ;
+完敗 < kanpai\ ;
+俚俗 < rizoku\ ;
+屋上 < okujou\ ;
+木組 < kigumi\ ;
+有能 < yuunou\ ;
+尚古 < shouko\ ;
+背戻 < hairei\ ;
+宣戦 < sensen\ ;
+五目 < gomoku\ ;
+寓居 < guukyo\ ;
+尋問 < jinmon\ ;
+暴論 < bouron\ ;
+条痕 < joukon\ ;
+併存 < heizon\ ;
+富岳 < fugaku\ ;
+胡弓 < kokyuu\ ;
+昼餉 < hiruge\ ;
+琴柱 < kotoji\ ;
+趨勢 < suusei\ ;
+頑迷 < ganmei\ ;
+宛所 < atesho\ ;
+某某 < boubou\ ;
+貯炭 < chotan\ ;
+二目 < futame\ ;
+暴言 < bougen\ ;
+俊偉 < shun''i\ ;
+尊命 < sonmei\ ;
+肥料 < hiryou\ ;
+実態 < jittai\ ;
+木箱 < kibako\ ;
+有罪 < yuuzai\ ;
+学校 < gakkou\ ;
+木管 < mokkan\ ;
+玄米 < genmai\ ;
+珈琲 < kouhii\ ;
+風紋 < fuumon\ ;
+株屋 < kabuya\ ;
+尊君 < sonkun\ ;
+実意 < jitsui\ ;
+低廉 < teiren\ ;
+飼犬 < kaiinu\ ;
+尊号 < songou\ ;
+他流 < taryuu\ ;
+末端 < mattan\ ;
+人災 < jinsai\ ;
+下薬 < geyaku\ ;
+密封 < mippuu\ ;
+小匙 < kosaji\ ;
+尊厳 < songen\ ;
+肉桂 < nikkei\ ;
+走塁 < sourui\ ;
+伝搬 < denpan\ ;
+寛大 < kandai\ ;
+古事記 < kojiki\ ;
+本稿 < honkou\ ;
+子様 < kosama\ ;
+宿屋 < yadoya\ ;
+寿命 < jumyou\ ;
+真面目 < majime\ ;
+三蔵 < sanzou\ ;
+音量 < onryou\ ;
+乗算 < jouzan\ ;
+根太 < nebuto\ ;
+議長 < gichou\ ;
+書翰 < shokan\ ;
+来状 < raijou\ ;
+仏法 < buppou\ ;
+安手 < yasude\ ;
+対句 < tsuiku\ ;
+中耳 < chuuji\ ;
+本社 < honsha\ ;
+下落 < geraku\ ;
+警防 < keibou\ ;
+寒夜 < kan''ya\ ;
+守成 < shusei\ ;
+特高 < tokkou\ ;
+末社 < massha\ ;
+佗寝 < wabine\ ;
+実弟 < jittei\ ;
+玲瓏 < reirou\ ;
+老眼 < rougan\ ;
+栽培 < saibai\ ;
+牡鶏 < ondori\ ;
+小兵 < kohyou\ ;
+月経 < gekkei\ ;
+背広 < sebiro\ ;
+季春 < kishun\ ;
+小児 < shouni\ ;
+豊稔 < hounen\ ;
+牝鷄 < hinkei\ ;
+象眼 < zougan\ ;
+玳瑁 < taimai\ ;
+暗誦 < anshou\ ;
+騒人 < soujin\ ;
+子株 < kokabu\ ;
+昼間 < hiruma\ ;
+低層 < teisou\ ;
+根城 < nejiro\ ;
+亀甲 < kikkou\ ;
+顕著 < kencho\ ;
+騒乱 < souran\ ;
+尊公 < sonkou\ ;
+宵宮 < yomiya\ ;
+住専 < juusen\ ;
+音速 < onsoku\ ;
+伐採 < bassai\ ;
+便乗 < binjou\ ;
+乾田 < kanden\ ;
+豆科 < mameka\ ;
+脱党 < dattou\ ;
+佞姦 < neikan\ ;
+住家 < sumika\ ;
+玲玲 < reirei\ ;
+侶伴 < ryohan\ ;
+賜杯 < shihai\ ;
+財源 < zaigen\ ;
+安息 < ansoku\ ;
+尊像 < sonzou\ ;
+不良 < furyou\ ;
+定常 < teijou\ ;
+献茶 < kencha\ ;
+一菊 < ikkiku\ ;
+宮家 < miyake\ ;
+風神 < fuujin\ ;
+対処 < taisho\ ;
+両義 < ryougi\ ;
+万芸 < bangei\ ;
+賢明 < kenmei\ ;
+貯水 < chosui\ ;
+枯木 < kareki\ ;
+一荘 < iichan\ ;
+寸前 < sunzen\ ;
+宏弁 < kouben\ ;
+対内 < tainai\ ;
+老生 < rousei\ ;
+獺祭 < dassai\ ;
+独語 < dokugo\ ;
+上臼 < uwausu\ ;
+小作 < kosaku\ ;
+本盗 < hontou\ ;
+飽満 < houman\ ;
+那由他 < nayuta\ ;
+寸分 < sunbun\ ;
+独話 < dokuwa\ ;
+万般 < banpan\ ;
+上臈 < jourou\ ;
+木目 < mokume\ ;
+宦官 < kangan\ ;
+更紗 < sarasa\ ;
+人気 < hitoke\ ;
+木皿 < kizara\ ;
+人民 < jinmin\ ;
+上腕 < jouwan\ ;
+尊体 < sontai\ ;
+木皮 < mokuhi\ ;
+代替 < daitai\ ;
+某所 < bousho\ ;
+子方 < kokata\ ;
+作場 < sakuba\ ;
+貧民 < hinmin\ ;
+今様 < imayou\ ;
+京浜 < keihin\ ;
+有税 < yuuzei\ ;
+脱会 < dakkai\ ;
+上背 < uwazei\ ;
+寵児 < chouji\ ;
+上肢 < joushi\ ;
+智謀 < chibou\ ;
+類聚 < ruijuu\ ;
+本番 < honban\ ;
+特需 < tokuju\ ;
+貴様 < kisama\ ;
+聰明 < soumei\ ;
+風眼 < fuugan\ ;
+老獪 < roukai\ ;
+家塾 < kajuku\ ;
+資本 < shihon\ ;
+作土 < sakudo\ ;
+会式 < eshiki\ ;
+羚羊 < reiyou\ ;
+三者 < sansha\ ;
+豪爽 < gousou\ ;
+作図 < sakuzu\ ;
+猫背 < nekoze\ ;
+飛火 < tobihi\ ;
+片鱗 < henrin\ ;
+駅名 < ekimei\ ;
+代数 < daisuu\ ;
+豐田 < toyota\ ;
+独行 < dokkou\ ;
+牛馬 < gyuuba\ ;
+丸秘 < maruhi\ ;
+飛瀑 < hibaku\ ;
+倶楽部 < kurabu\ ;
+頒行 < hankou\ ;
+東毎 < toumai\ ;
+胡国 < kokoku\ ;
+案内 < an''nai\ ;
+何回 < nankai\ ;
+護身 < goshin\ ;
+木琴 < mokkin\ ;
+仏書 < bussho\ ;
+類纂 < ruisan\ ;
+青黴 < aokabi\ ;
+木理 < mokuri\ ;
+供与 < kyouyo\ ;
+讒謗 < zanbou\ ;
+寝刃 < netaba\ ;
+一羽 < ichiwa\ ;
+肉感 < nikkan\ ;
+賢才 < kensai\ ;
+屋根屋 < yaneya\ ;
+安寧 < an''nei\ ;
+主砲 < shuhou\ ;
+寝具 < shingu\ ;
+貿易 < boueki\ ;
+現数 < gensuu\ ;
+音調 < onchou\ ;
+駅前 < ekimae\ ;
+守宮 < yamori\ ;
+音読 < ondoku\ ;
+枚数 < maisuu\ ;
+聡敏 < soubin\ ;
+貧棒 < binbou\ ;
+月相 < gessou\ ;
+青鷺 < aosagi\ ;
+学徒 < gakuto\ ;
+有益 < yuueki\ ;
+今晩 < konban\ ;
+寒剤 < kanzai\ ;
+賢慮 < kenryo\ ;
+下絵 < shitae\ ;
+讒言 < zangen\ ;
+赦免 < shamen\ ;
+予測 < yosoku\ ;
+風琴 < fuukin\ ;
+三組 < mikumi\ ;
+三絃 < sangen\ ;
+上納 < jounou\ ;
+王物 < oumono\ ;
+一縷 < ichiru\ ;
+二流 < niryuu\ ;
+海老茶 < ebicha\ ;
+聖断 < seidan\ ;
+佩剣 < haiken\ ;
+人材 < jinzai\ ;
+未熟 < mijuku\ ;
+上米 < joumai\ ;
+中破 < chuuha\ ;
+人望 < jinbou\ ;
+寡作 < kasaku\ ;
+中砥 < nakato\ ;
+颯爽 < sassou\ ;
+実地 < jitchi\ ;
+背嚢 < hainou\ ;
+賦役 < buyaku\ ;
+有用 < yuuyou\ ;
+有産 < yuusan\ ;
+月産 < gessan\ ;
+伏屋 < fuseya\ ;
+阿媽港 < amakou\ ;
+村民 < sonmin\ ;
+球技 < kyuugi\ ;
+枚挙 < maikyo\ ;
+日頃 < higoro\ ;
+下策 < gesaku\ ;
+青鮫 < aozame\ ;
+字引 < jibiki\ ;
+低吟 < teigin\ ;
+何千 < nanzen\ ;
+何十 < nanjuu\ ;
+馬力 < bariki\ ;
+存廃 < zonpai\ ;
+磁方位 < jihoui\ ;
+三等 < santou\ ;
+一籌 < itchuu\ ;
+子役 < koyaku\ ;
+伏字 < fuseji\ ;
+耐水 < taisui\ ;
+上端 < joutan\ ;
+駄作 < dasaku\ ;
+丹田 < tanden\ ;
+駅伝 < ekiden\ ;
+字幕 < jimaku\ ;
+万端 < bantan\ ;
+上空 < joukuu\ ;
+獰猛 < neimou\ ;
+片雲 < hen''un\ ;
+独英 < dokuei\ ;
+日雀 < higara\ ;
+題簽 < daisen\ ;
+密偵 < mittei\ ;
+頻繁 < hinpan\ ;
+一策 < issaku\ ;
+何分 < nanpun\ ;
+牽連 < kenren\ ;
+孫子 < magoko\ ;
+三種 < sanshu\ ;
+上程 < joutei\ ;
+日陰 < hikage\ ;
+馬克 < maruku\ ;
+官営 < kan''ei\ ;
+羽田 < haneda\ ;
+一笑 < isshou\ ;
+面頬 < menpoo\ ;
+日限 < higiri\ ;
+両目 < ryoume\ ;
+本源 < hongen\ ;
+肉屋 < nikuya\ ;
+姦計 < kankei\ ;
+静養 < seiyou\ ;
+財政 < zaisei\ ;
+孤客 < kokaku\ ;
+令弟 < reitei\ ;
+株価 < kabuka\ ;
+中生 < nakate\ ;
+独自 < dokuji\ ;
+代弁 < daiben\ ;
+密使 < misshi\ ;
+家元 < iemoto\ ;
+牧野 < bokuya\ ;
+面面 < menmen\ ;
+事業 < jigyou\ ;
+丁稚 < detchi\ ;
+来書 < raisho\ ;
+日長 < hinaga\ ;
+五桁 < goketa\ ;
+会堂 < kaidou\ ;
+密会 < mikkai\ ;
+賊徒 < zokuto\ ;
+猫科 < nekoka\ ;
+旅館 < ryokan\ ;
+任官 < ninkan\ ;
+孟子 < moushi\ ;
+群盲 < gunmou\ ;
+昏迷 < konmei\ ;
+乳母 < nyuubo\ ;
+他心 < tashin\ ;
+住僧 < juusou\ ;
+一票 < ippyou\ ;
+鍛冶屋 < kajiya\ ;
+査収 < sashuu\ ;
+二核 < nikaku\ ;
+実勢 < jissei\ ;
+仮屋 < kariya\ ;
+佞人 < neijin\ ;
+末法 < mappou\ ;
+来方 < kikata\ ;
+飲料 < inryou\ ;
+官印 < kan''in\ ;
+人手 < hitode\ ;
+書状 < shojou\ ;
+仮寝 < karine\ ;
+孔孟 < koumou\ ;
+仮家 < kariie\ ;
+仁愛 < jin''ai\ ;
+大麦 < oomugi\ ;
+狭義 < kyougi\ ;
+謝金 < shakin\ ;
+子守 < komori\ ;
+宿世 < sukuse\ ;
+奮闘 < funtou\ ;
+宗務 < shuumu\ ;
+婚礼 < konrei\ ;
+本殿 < honden\ ;
+猛禽 < moukin\ ;
+仁恵 < jinkei\ ;
+五日 < itsuka\ ;
+智能 < chinou\ ;
+一瞬 < isshun\ ;
+風洞 < fuudou\ ;
+斬首 < zanshu\ ;
+日銭 < hizeni\ ;
+本欄 < honran\ ;
+仏師 < busshi\ ;
+家並 < yanami\ ;
+豊水 < housui\ ;
+丁目 < choume\ ;
+令孫 < reison\ ;
+仏工 < bukkou\ ;
+塩基度 < enkido\ ;
+肉塊 < nikkai\ ;
+暮秋 < boshuu\ ;
+智者 < chisha\ ;
+方面 < houmen\ ;
+存外 < zongai\ ;
+美的 < biteki\ ;
+伶優 < reiyuu\ ;
+矢羽根 < yabane\ ;
+乗気 < noriki\ ;
+上番 < jouban\ ;
+風水 < fuusui\ ;
+付属 < fuzoku\ ;
+三番 < sanban\ ;
+学園 < gakuen\ ;
+謙遜 < kenson\ ;
+上田 < jouden\ ;
+夜鷹 < yotaka\ ;
+贈呈 < zoutei\ ;
+論題 < rondai\ ;
+会合 < kaigou\ ;
+理学 < rigaku\ ;
+旧都 < kyuuto\ ;
+贈号 < zougou\ ;
+中火 < chuubi\ ;
+伝単 < dentan\ ;
+宣伝 < senden\ ;
+贋印 < nisein\ ;
+背任 < hainin\ ;
+翻案 < hon''an\ ;
+王様 < ousama\ ;
+任地 < ninchi\ ;
+一疋 < ippiki\ ;
+老来 < rourai\ ;
+他宗 < tashuu\ ;
+老杉 < rousan\ ;
+完全 < kanzen\ ;
+断面 < danmen\ ;
+令妹 < reimai\ ;
+夜鳥 < yachou\ ;
+猛省 < mousei\ ;
+柔和 < nyuuwa\ ;
+定例 < teirei\ ;
+現存 < genzon\ ;
+乱杭 < rangui\ ;
+伴侶 < hanryo\ ;
+定住 < teijuu\ ;
+守兵 < shuhei\ ;
+背中 < senaka\ ;
+特許 < tokkyo\ ;
+存在 < sonzai\ ;
+背丈 < setake\ ;
+特訓 < tokkun\ ;
+爆音 < bakuon\ ;
+下獄 < gegoku\ ;
+今尚 < imanao\ ;
+人工 < jinkou\ ;
+乱暴 < ranbou\ ;
+望樓 < bourou\ ;
+三猿 < mizaru\ ;
+論陣 < ronjin\ ;
+伶人 < reijin\ ;
+謹言 < kingen\ ;
+朱書 < shusho\ ;
+館娃 < kan''ai\ ;
+片輪 < katawa\ ;
+安値 < yasune\ ;
+本来 < honrai\ ;
+明言 < meigen\ ;
+翰林 < kanrin\ ;
+令堂 < reidou\ ;
+万状 < banjou\ ;
+宗主 < soushu\ ;
+霊魂 < reikon\ ;
+本木 < motoki\ ;
+本望 < honmou\ ;
+罹病 < ribyou\ ;
+願状 < ganjou\ ;
+末末 < suezue\ ;
+百合根 < yurine\ ;
+子嚢 < shinou\ ;
+二手 < futate\ ;
+乱数 < ransuu\ ;
+春蚕 < harugo\ ;
+木末 < konure\ ;
+肌合 < hadaai\ ;
+王朝 < ouchou\ ;
+雷鳴 < raimei\ ;
+任命 < ninmei\ ;
+什宝 < juuhou\ ;
+人屋 < hitoya\ ;
+朦朧 < mourou\ ;
+朦朦 < moumou\ ;
+中洲 < nakasu\ ;
+賛嘆 < santan\ ;
+日足 < hiashi\ ;
+斜陽 < shayou\ ;
+大風 < ookaze\ ;
+奪還 < dakkan\ ;
+音締 < nejime\ ;
+天顔 < tengan\ ;
+物見 < monomi\ ;
+阿羅漢 < arakan\ ;
+学務 < gakumu\ ;
+替歌 < kaeuta\ ;
+存命 < zonmei\ ;
+奮迅 < funjin\ ;
+賭博 < tobaku\ ;
+杉戸 < sugido\ ;
+貧寒 < hinkan\ ;
+有様 < ariyou\ ;
+本文 < honmon\ ;
+来店 < raiten\ ;
+本数 < honsuu\ ;
+斧鑿 < fusaku\ ;
+来年 < rainen\ ;
+文題 < bundai\ ;
+王族 < ouzoku\ ;
+五徳 < gotoku\ ;
+万点 < manten\ ;
+今夜 < kon''ya\ ;
+中気 < chuuki\ ;
+伝令 < denrei\ ;
+仏塔 < buttou\ ;
+霜雰 < soufun\ ;
+頭痛 < zutsuu\ ;
+主権 < shuken\ ;
+雷魚 < raigyo\ ;
+万灯 < mandou\ ;
+財宝 < zaihou\ ;
+夜風 < yokaze\ ;
+貪婪 < donran\ ;
+伐倒 < battou\ ;
+野路子 < nojiko\ ;
+現地 < genchi\ ;
+猛犬 < mouken\ ;
+天雷 < tenrai\ ;
+朝晩 < asaban\ ;
+他国 < takoku\ ;
+仮名 < kemyou\ ;
+風景 < fuukei\ ;
+論鋒 < ronpou\ ;
+文面 < bunmen\ ;
+伎倆 < giryou\ ;
+餃子 < gyouza\ ;
+学兄 < gakkei\ ;
+犯罪 < hanzai\ ;
+大難 < tainan\ ;
+中欧 < chuuou\ ;
+伝世 < densei\ ;
+多額 < tagaku\ ;
+天険 < tenken\ ;
+会主 < kaishu\ ;
+東宮 < touguu\ ;
+聖域 < seiiki\ ;
+代品 < daihin\ ;
+頓知 < tonchi\ ;
+夕顔 < yuugao\ ;
+乱戦 < ransen\ ;
+考慮 < kouryo\ ;
+介在 < kaizai\ ;
+整風 < seifuu\ ;
+任免 < ninmen\ ;
+存分 < zonbun\ ;
+令名 < reimei\ ;
+飲屋 < nomiya\ ;
+人外 < ningai\ ;
+斧鉞 < fuetsu\ ;
+夜霧 < yogiri\ ;
+猛然 < mouzen\ ;
+人士 < jinshi\ ;
+面貌 < menbou\ ;
+販売 < hanbai\ ;
+主根 < shukon\ ;
+大関 < oozeki\ ;
+旧詠 < kyuuei\ ;
+今回 < konkai\ ;
+日誌 < nisshi\ ;
+早計 < soukei\ ;
+代参 < daisan\ ;
+大門 < daimon\ ;
+本拠 < honkyo\ ;
+有望 < yuubou\ ;
+整頓 < seiton\ ;
+旧記 < kyuuki\ ;
+妄言 < mougen\ ;
+旅路 < tabiji\ ;
+豪快 < goukai\ ;
+早見 < hayami\ ;
+電顕 < denken\ ;
+外電 < gaiden\ ;
+板塀 < itabei\ ;
+片言 < hengen\ ;
+罪状 < zaijou\ ;
+玩弄 < ganrou\ ;
+奉遷 < housen\ ;
+本懐 < honkai\ ;
+丹朱 < tanshu\ ;
+丸木 < maruki\ ;
+学事 < gakuji\ ;
+月旦 < gettan\ ;
+夜長 < yonaga\ ;
+面談 < mendan\ ;
+奉迎 < hougei\ ;
+有数 < yuusuu\ ;
+媒染 < baisen\ ;
+繁閑 < hankan\ ;
+仲値 < nakane\ ;
+上水 < jousui\ ;
+誘電 < yuuden\ ;
+晴着 < haregi\ ;
+罰点 < batten\ ;
+大鎌 < oogama\ ;
+亡妻 < bousai\ ;
+青豆 < aomame\ ;
+貧困 < hinkon\ ;
+仲保 < chuuho\ ;
+珍奇 < chinki\ ;
+大鍋 < oonabe\ ;
+最早 < mohaya\ ;
+万民 < banmin\ ;
+乗手 < norite\ ;
+仏参 < bussan\ ;
+一泊 < ippaku\ ;
+主文 < shubun\ ;
+現勢 < gensei\ ;
+老幼 < rouyou\ ;
+老年 < rounen\ ;
+三死 < sanshi\ ;
+他力 < tariki\ ;
+本性 < honsei\ ;
+翻弄 < honrou\ ;
+財団 < zaidan\ ;
+誌面 < shimen\ ;
+万死 < banshi\ ;
+万歳 < manzai\ ;
+子供 < kodomo\ ;
+存亡 < sonbou\ ;
+二子 < futago\ ;
+土下座 < dogeza\ ;
+順番 < junban\ ;
+雲集 < unshuu\ ;
+雲雀 < hibari\ ;
+現前 < genzen\ ;
+介卵 < kairan\ ;
+大鉈 < oonata\ ;
+難題 < nandai\ ;
+本影 < hon''ei\ ;
+並木 < namiki\ ;
+斜辺 < shahen\ ;
+賢主 < kenshu\ ;
+書斎 < shosai\ ;
+羊毛 < youmou\ ;
+大金 < taikin\ ;
+仁君 < jinkun\ ;
+不様 < buzama\ ;
+人員 < jin''in\ ;
+中日 < nakabi\ ;
+末弟 < mattei\ ;
+人品 < jinpin\ ;
+三権 < sanken\ ;
+一次 < ichiji\ ;
+熱風 < neppuu\ ;
+上様 < uezama\ ;
+大酒 < oozake\ ;
+人命 < jinmei\ ;
+縦陣 < juujin\ ;
+嫁御 < yomego\ ;
+賞与 < shouyo\ ;
+本店 < honten\ ;
+雲間 < kumoma\ ;
+始終 < shijuu\ ;
+論賛 < ronsan\ ;
+仏典 < butten\ ;
+三業 < sangou\ ;
+代任 < dainin\ ;
+羨望 < senbou\ ;
+試験 < shiken\ ;
+世柄 < yogara\ ;
+語録 < goroku\ ;
+天道 < tendou\ ;
+人参 < ninjin\ ;
+天運 < ten''un\ ;
+一樹 < ichiju\ ;
+今冬 < kontou\ ;
+大道 < daidou\ ;
+慰安者 < iansha\ ;
+離隔 < rikaku\ ;
+暴民 < boumin\ ;
+離陸 < ririku\ ;
+老害 < rougai\ ;
+文選 < bunsen\ ;
+木工 < mokkou\ ;
+乱射 < ransha\ ;
+天辺 < teppen\ ;
+責務 < sekimu\ ;
+文運 < bun''un\ ;
+旅装 < ryosou\ ;
+方言 < hougen\ ;
+三桁 < miketa\ ;
+老嬢 < roujou\ ;
+聖像 < seizou\ ;
+旅行 < ryokou\ ;
+難関 < nankan\ ;
+新語 < shingo\ ;
+大輪 < tairin\ ;
+本山 < honzan\ ;
+天軍 < tengun\ ;
+三枚 < sanmai\ ;
+板前 < itamae\ ;
+現代 < gendai\ ;
+頻死 < hinshi\ ;
+本屋 < hon''ya\ ;
+三板 < sanpan\ ;
+類本 < ruihon\ ;
+声門 < seimon\ ;
+現今 < genkon\ ;
+享受 < kyouju\ ;
+風師 < fuushi\ ;
+類書 < ruisho\ ;
+本尊 < honzon\ ;
+上期 < kamiki\ ;
+熱闘 < nettou\ ;
+珍味 < chinmi\ ;
+書房 < shobou\ ;
+一案 < ichian\ ;
+三本 < sanbon\ ;
+養分 < youbun\ ;
+豪奢 < gousha\ ;
+改題 < kaidai\ ;
+上書 < jousho\ ;
+木屑 < kikuzu\ ;
+仏会 < butsue\ ;
+亡命 < boumei\ ;
+断言 < dangen\ ;
+外遊 < gaiyuu\ ;
+玉屋 < tamaya\ ;
+仕上 < shiage\ ;
+願望 < ganmou\ ;
+爬虫 < hachuu\ ;
+献本 < kenpon\ ;
+最悪 < saiaku\ ;
+独演 < dokuen\ ;
+願書 < gansho\ ;
+末孫 < masson\ ;
+暗流 < anryuu\ ;
+末子 < masshi\ ;
+翠嵐 < suiran\ ;
+食器 < shokki\ ;
+大足 < ooashi\ ;
+亡友 < bouyuu\ ;
+今今 < imaima\ ;
+今人 < konjin\ ;
+聖人 < seijin\ ;
+獣性 < juusei\ ;
+雲量 < unryou\ ;
+上旬 < joujun\ ;
+一朝 < itchou\ ;
+夢路 < yumeji\ ;
+一服 < ippuku\ ;
+談論 < danron\ ;
+両拳 < janken\ ;
+飯台 < handai\ ;
+日航 < nikkou\ ;
+罷業 < higyou\ ;
+人偏 < ninben\ ;
+外輪 < gairin\ ;
+天賜 < tenshi\ ;
+三方 < sanpou\ ;
+青藍 < seiran\ ;
+韲物 < aemono\ ;
+主従 < shujuu\ ;
+断裁 < dansai\ ;
+人倫 < jinrin\ ;
+請訓 < seikun\ ;
+猥本 < waihon\ ;
+乾坤 < kenkon\ ;
+乱売 < ranbai\ ;
+変遷 < hensen\ ;
+題材 < daizai\ ;
+外車 < gaisha\ ;
+両手 < ryoute\ ;
+七日 < nanoka\ ;
+変造 < henzou\ ;
+願文 < ganmon\ ;
+奉行 < bugyou\ ;
+仁人 < jinjin\ ;
+本妻 < honsai\ ;
+風害 < fuugai\ ;
+嫉妬 < shitto\ ;
+謝罪 < shazai\ ;
+人体 < nintei\ ;
+文豪 < bungou\ ;
+施薬 < seyaku\ ;
+斜視 < shashi\ ;
+数軒 < suuken\ ;
+罪業 < zaigou\ ;
+電車 < densha\ ;
+類推 < ruisui\ ;
+変転 < henten\ ;
+一擲 < itteki\ ;
+猛暑 < mousho\ ;
+諸芸 < shogei\ ;
+予告 < yokoku\ ;
+書店 < shoten\ ;
+本塁 < honrui\ ;
+燻製 < kunsei\ ;
+離郷 < rikyou\ ;
+絵日記 < enikki\ ;
+青草 < aokusa\ ;
+外貌 < gaibou\ ;
+中座 < chuuza\ ;
+罰杯 < bappai\ ;
+頸木 < kubiki\ ;
+乙夜 < otsuya\ ;
+頓死 < tonshi\ ;
+春着 < harugi\ ;
+編隊 < hentai\ ;
+読誦 < dokuju\ ;
+京人 < keijin\ ;
+猛攻 < moukou\ ;
+二割 < niwari\ ;
+木型 < kigata\ ;
+望外 < bougai\ ;
+暮春 < boshun\ ;
+主導 < shudou\ ;
+娯楽 < goraku\ ;
+陀羅尼 < darani\ ;
+暴政 < bousei\ ;
+誤謬 < gobyuu\ ;
+亀卜 < kiboku\ ;
+読解 < dokkai\ ;
+主宰 < shusai\ ;
+王国 < oukoku\ ;
+多読 < tadoku\ ;
+乗場 < noriba\ ;
+夢見 < yumemi\ ;
+両度 < ryoudo\ ;
+頻数 < hinsuu\ ;
+誤読 < godoku\ ;
+晦渋 < kaijuu\ ;
+不惑 < fuwaku\ ;
+敗軍 < haigun\ ;
+来会 < raikai\ ;
+一手 < hitote\ ;
+羅方位 < rahoui\ ;
+来任 < rainin\ ;
+曾孫 < himago\ ;
+誤訳 < goyaku\ ;
+朗報 < rouhou\ ;
+多角 < takaku\ ;
+万感 < bankan\ ;
+奈落 < naraku\ ;
+夜襲 < yashuu\ ;
+犠牛 < gigyuu\ ;
+春画 < shunga\ ;
+条件 < jouken\ ;
+散財 < sanzai\ ;
+随順 < zuijun\ ;
+来世 < raisei\ ;
+縦貫 < juukan\ ;
+不徳 < futoku\ ;
+緑雨 < ryokuu\ ;
+外見 < sotomi\ ;
+昏睡 < konsui\ ;
+詩選 < shisen\ ;
+面繋 < omogai\ ;
+新芽 < shinme\ ;
+数詞 < suushi\ ;
+明眸 < meibou\ ;
+頭数 < tousuu\ ;
+暴挙 < boukyo\ ;
+隔離 < kakuri\ ;
+本命 < honmei\ ;
+類形 < ruikei\ ;
+中子 < nakago\ ;
+曳子 < hikiko\ ;
+天蚕 < tensan\ ;
+女給 < jokyuu\ ;
+電解 < denkai\ ;
+月報 < geppou\ ;
+最大 < saidai\ ;
+燻蒸 < kunjou\ ;
+云云 < un''nun\ ;
+隙間 < sukima\ ;
+最外 < saigai\ ;
+改造 < kaizou\ ;
+大虎 < oodora\ ;
+陵駕 < ryouga\ ;
+売買 < baibai\ ;
+丸太 < maruta\ ;
+村会 < sonkai\ ;
+美徳 < bitoku\ ;
+未収 < mishuu\ ;
+一応 < ichiou\ ;
+服地 < fukuji\ ;
+謝礼 < sharei\ ;
+木叢 < komura\ ;
+一徳 < ittoku\ ;
+二人 < futari\ ;
+老兵 < rouhei\ ;
+獄屋 < gokuya\ ;
+煎餅 < senbei\ ;
+上帯 < uwaobi\ ;
+雑踏 < zattou\ ;
+文藻 < bunsou\ ;
+熱賛 < nessan\ ;
+教護 < kyougo\ ;
+乳児 < nyuuji\ ;
+群居 < gunkyo\ ;
+纏綿 < tenmen\ ;
+異体字 < itaiji\ ;
+猛悪 < mouaku\ ;
+大蔵 < ookura\ ;
+万巻 < mangan\ ;
+日程 < nittei\ ;
+丁度 < choudo\ ;
+天蓋 < tengai\ ;
+教諭 < kyouyu\ ;
+一座 < ichiza\ ;
+乗合 < noriai\ ;
+音標 < onpyou\ ;
+乗号 < jougou\ ;
+暴悪 < bouaku\ ;
+風向 < fuukou\ ;
+本分 < honbun\ ;
+救護 < kyuugo\ ;
+縦覧 < juuran\ ;
+服喪 < fukumo\ ;
+木剣 < bokken\ ;
+大著 < taicho\ ;
+擬革 < gikaku\ ;
+論者 < ronsha\ ;
+論考 < ronkou\ ;
+音楽 < ongaku\ ;
+朗吟 < rougin\ ;
+雪見 < yukimi\ ;
+乱倫 < ranrin\ ;
+雲表 < unpyou\ ;
+牛皮 < gyuuhi\ ;
+上層 < jousou\ ;
+難訓 < nankun\ ;
+老体 < routai\ ;
+陸離 < rikuri\ ;
+断罪 < danzai\ ;
+訓電 < kunden\ ;
+牢番 < rouban\ ;
+時流 < jiryuu\ ;
+斬罪 < zanzai\ ;
+旅籠 < hatago\ ;
+晴朗 < seirou\ ;
+三封 < sanpuu\ ;
+熱誠 < nessei\ ;
+三寸 < sanzun\ ;
+老人 < roujin\ ;
+晴曇 < seidon\ ;
+風前 < fuuzen\ ;
+陣風 < jinpuu\ ;
+集貨 < shuuka\ ;
+隧道 < suidou\ ;
+最善 < saizen\ ;
+罪悪 < zaiaku\ ;
+暖房 < danbou\ ;
+敬虔 < keiken\ ;
+隣邦 < rinpou\ ;
+乱交 < rankou\ ;
+老中 < roujuu\ ;
+女神 < megami\ ;
+青筋 < aosuji\ ;
+諸種 < shoshu\ ;
+朋友 < houyuu\ ;
+文芸 < bungei\ ;
+陰陽 < on''you\ ;
+丁寧 < teinei\ ;
+一対 < ittsui\ ;
+義塾 < gijuku\ ;
+大船 < oobune\ ;
+青竹 < aodake\ ;
+革砥 < kawato\ ;
+雑誌 < zasshi\ ;
+片眼 < katame\ ;
+断線 < dansen\ ;
+乱世 < ransei\ ;
+熟議 < jukugi\ ;
+隠逸 < initsu\ ;
+大臣 < daijin\ ;
+美学 < bigaku\ ;
+政論 < seiron\ ;
+服務 < fukumu\ ;
+青空 < aozora\ ;
+有半 < yuuhan\ ;
+雑言 < zougon\ ;
+同意語 < douigo\ ;
+下姓 < geshou\ ;
+妙王 < myouou\ ;
+旅程 < ryotei\ ;
+奉納 < hounou\ ;
+熟語 < jukugo\ ;
+狙撃 < sogeki\ ;
+猶太 < yudaya\ ;
+夜船 < yofune\ ;
+大胆 < daitan\ ;
+上天 < jouten\ ;
+早産 < souzan\ ;
+大股 < oomata\ ;
+最南 < sainan\ ;
+天聞 < tenbun\ ;
+訴追 < sotsui\ ;
+詠誦 < eishou\ ;
+晦日 < misoka\ ;
+記録 < kiroku\ ;
+書名 < shomei\ ;
+万天 < banten\ ;
+中和 < chuuwa\ ;
+改訂 < kaitei\ ;
+日産 < nissan\ ;
+面相 < mensou\ ;
+評議 < hyougi\ ;
+大老 < tairou\ ;
+風体 < fuutei\ ;
+牝牛 < meushi\ ;
+増配 < zouhai\ ;
+一女 < ichijo\ ;
+上場 < joujou\ ;
+大群 < taigun\ ;
+院長 < inchou\ ;
+中句 < chuuku\ ;
+三塁 < sanrui\ ;
+隻語 < sekigo\ ;
+曇天 < donten\ ;
+月光 < gekkou\ ;
+霊能 < reinou\ ;
+姻族 < inzoku\ ;
+丹前 < tanzen\ ;
+丸剤 < ganzai\ ;
+一夢 < ichimu\ ;
+最初 < saisho\ ;
+一夜 < hitoyo\ ;
+万場 < manjou\ ;
+諸相 < shosou\ ;
+奇策 < kisaku\ ;
+婚姻 < kon''in\ ;
+与圧 < yoatsu\ ;
+熔解 < youkai\ ;
+多肉 < taniku\ ;
+暗幕 < anmaku\ ;
+隆運 < ryuuun\ ;
+韋駄天 < idaten\ ;
+誘致 < yuuchi\ ;
+暖帯 < dantai\ ;
+下国 < gekoku\ ;
+暫定 < zantei\ ;
+断種 < danshu\ ;
+独往 < dokuou\ ;
+三囲 < mitsui\ ;
+外聞 < gaibun\ ;
+特派 < tokuha\ ;
+主傘 < shusan\ ;
+為政家 < iseika\ ;
+天網 < tenmou\ ;
+陶酔 < tousui\ ;
+書写 < shosha\ ;
+二度目 < nidome\ ;
+獄吏 < gokuri\ ;
+独座 < dokuza\ ;
+一国 < ikkoku\ ;
+領布 < ryoufu\ ;
+片片 < henpen\ ;
+一因 < ichiin\ ;
+霧笛 < muteki\ ;
+陸運 < rikuun\ ;
+無闇 < muyami\ ;
+雄蜂 < obachi\ ;
+絹雲 < ken''un\ ;
+煮豆 < nimame\ ;
+熔融 < youyuu\ ;
+主体 < shutai\ ;
+訓連 < kunren\ ;
+万善 < manzen\ ;
+文系 < bunkei\ ;
+施療 < seryou\ ;
+主任 < shunin\ ;
+敬老 < keirou\ ;
+順当 < juntou\ ;
+陽転 < youten\ ;
+日焼 < hiyake\ ;
+上品 < joubon\ ;
+主人 < shujin\ ;
+雄蘂 < yuuzui\ ;
+難船 < nansen\ ;
+隆起 < ryuuki\ ;
+姻戚 < inseki\ ;
+類同 < ruidou\ ;
+誦経 < zukyou\ ;
+早瀬 < hayase\ ;
+書体 < shotai\ ;
+緒論 < choron\ ;
+主上 < shujou\ ;
+最中 < monaka\ ;
+雑菌 < zakkin\ ;
+文範 < bunpan\ ;
+新盆 < niibon\ ;
+増資 < zoushi\ ;
+最上 < mogami\ ;
+大筋 < oosuji\ ;
+媒体 < baitai\ ;
+爆破 < bakuha\ ;
+独居 < dokkyo\ ;
+特権 < tokken\ ;
+訳語 < yakugo\ ;
+中佐 < chuusa\ ;
+万口 < bankou\ ;
+雑草 < zassou\ ;
+上半 < jouhan\ ;
+陸路 < rikuro\ ;
+媒介 < baikai\ ;
+天空 < tenkuu\ ;
+緒言 < chogen\ ;
+需給 < jukyuu\ ;
+与力 < yoriki\ ;
+大空 < oozora\ ;
+外米 < gaimai\ ;
+天稟 < tenpin\ ;
+中二 < chuuni\ ;
+奇癖 < kiheki\ ;
+敏腕 < binwan\ ;
+天秤 < tenbin\ ;
+索麺 < soumen\ ;
+群像 < gunzou\ ;
+奮然 < funzen\ ;
+万劫 < mangou\ ;
+上前 < uwamae\ ;
+雌花 < mebana\ ;
+奇病 < kibyou\ ;
+青物 < aomono\ ;
+天神 < tenjin\ ;
+然迄 < samade\ ;
+題名 < daimei\ ;
+題号 < daigou\ ;
+大祭 < taisai\ ;
+三分 < sanpun\ ;
+義侠 < gikyou\ ;
+総裏 < souura\ ;
+物権 < bukken\ ;
+夜空 < yozora\ ;
+総裁 < sousai\ ;
+無量 < muryou\ ;
+雀荘 < jansou\ ;
+緊褌 < kinkon\ ;
+世俗 < sezoku\ ;
+牛歩 < gyuuho\ ;
+旧派 < kyuuha\ ;
+羅北 < rahoku\ ;
+細魚 < sayori\ ;
+下僕 < geboku\ ;
+大砲 < taihou\ ;
+数等 < suutou\ ;
+女滝 < medaki\ ;
+警手 < keishu\ ;
+随行 < zuikou\ ;
+如法 < nyohou\ ;
+一円 < ichien\ ;
+一具 < ichigu\ ;
+数寄屋 < sukiya\ ;
+編著 < hencho\ ;
+爛爛 < ranran\ ;
+暖地 < danchi\ ;
+綸言 < ringen\ ;
+放胆 < houtan\ ;
+訓諭 < kun''yu\ ;
+読破 < dokuha\ ;
+三倍 < sanbai\ ;
+猛勇 < mouyuu\ ;
+類例 < ruirei\ ;
+訓誡 < kunkai\ ;
+謹書 < kinsho\ ;
+明朗 < meirou\ ;
+天盃 < tenpai\ ;
+暴動 < boudou\ ;
+堤防 < teibou\ ;
+討論 < touron\ ;
+日毎 < higoto\ ;
+不仲 < funaka\ ;
+大皿 < oozara\ ;
+三体 < santai\ ;
+同意義 < douigi\ ;
+文盲 < monmou\ ;
+熱線 < nessen\ ;
+熟考 < jukkou\ ;
+猟具 < ryougu\ ;
+墓表 < bohyou\ ;
+昵懇 < jikkon\ ;
+女流 < joryuu\ ;
+霊知 < reichi\ ;
+上代 < joudai\ ;
+奇特 < kidoku\ ;
+美俗 < bizoku\ ;
+易断 < ekidan\ ;
+不乙 < fuitsu\ ;
+罪名 < zaimei\ ;
+昏昏 < konkon\ ;
+雑纂 < zassan\ ;
+妙案 < myouan\ ;
+女波 < menami\ ;
+離籍 < riseki\ ;
+明断 < meidan\ ;
+敬礼 < keirei\ ;
+雷神 < raijin\ ;
+調理 < chouri\ ;
+断然 < danzen\ ;
+明敏 < meibin\ ;
+版権 < hanken\ ;
+烈風 < reppuu\ ;
+万万 < manman\ ;
+言論 < genron\ ;
+陸行 < rikkou\ ;
+大生 < daisei\ ;
+雀羅 < jakura\ ;
+丁亥 < teigai\ ;
+議席 < giseki\ ;
+美事 < migoto\ ;
+姑息 < kosoku\ ;
+繁盛 < hanjou\ ;
+一人 < hitori\ ;
+放縦 < houjuu\ ;
+論点 < ronten\ ;
+詩編 < shihen\ ;
+日様 < hisama\ ;
+陪観 < baikan\ ;
+一二 < ichini\ ;
+素首 < sokubi\ ;
+爛漫 < ranman\ ;
+特措 < tokuso\ ;
+試練 < shiren\ ;
+言訳 < iiwake\ ;
+培養 < baiyou\ ;
+言言 < gengen\ ;
+総菜 < souzai\ ;
+多病 < tabyou\ ;
+撤退 < tettai\ ;
+改編 < kaihen\ ;
+無賃 < muchin\ ;
+雄編 < yuuhen\ ;
+縁組 < engumi\ ;
+特技 < tokugi\ ;
+教祖 < kyouso\ ;
+物損 < busson\ ;
+要項 < youkou\ ;
+罰俸 < bappou\ ;
+姉弟 < shimai\ ;
+離礁 < rishou\ ;
+音域 < on''iki\ ;
+報道 < houdou\ ;
+旭暉 < kyokki\ ;
+絶賛 < zessan\ ;
+如来 < nyorai\ ;
+大物 < oomono\ ;
+露滴 < roteki\ ;
+続行 < zokkou\ ;
+版本 < hanpon\ ;
+暖冬 < dantou\ ;
+電番 < denban\ ;
+大袈裟 < oogesa\ ;
+早晩 < souban\ ;
+霊獣 < reijuu\ ;
+編纂 < hensan\ ;
+新派 < shinpa\ ;
+雑種 < zasshu\ ;
+雪目 < yukime\ ;
+旧時 < kyuuji\ ;
+誕生 < tanjou\ ;
+昼寝 < hirune\ ;
+事務屋 < jimuya\ ;
+浮世絵 < ukiyoe\ ;
+特恵 < tokkei\ ;
+煙草 < tabako\ ;
+琵琶湖 < biwako\ ;
+謄本 < touhon\ ;
+改竄 < kaizan\ ;
+特快 < tokkai\ ;
+事務家 < jimuka\ ;
+日数 < hikazu\ ;
+断水 < dansui\ ;
+妙技 < myougi\ ;
+妻帯 < saitai\ ;
+威喝 < ikatsu\ ;
+煎茶 < sencha\ ;
+雷獣 < raijuu\ ;
+青桐 < aogiri\ ;
+大潮 < ooshio\ ;
+陶芸 < tougei\ ;
+旗日 < hatabi\ ;
+青柳 < aoyagi\ ;
+設置 < setchi\ ;
+物性 < bussei\ ;
+暗中 < anchuu\ ;
+昼夜 < chuuya\ ;
+言葉 < kotoba\ ;
+紡錘 < bousui\ ;
+外灯 < gaitou\ ;
+埼銀 < saigin\ ;
+不可避 < fukahi\ ;
+間鴨 < aigamo\ ;
+霧氷 < muhyou\ ;
+春季 < shunki\ ;
+増置 < zouchi\ ;
+綾羅 < ryoura\ ;
+狂句 < kyouku\ ;
+陳腐 < chinpu\ ;
+報謝 < housha\ ;
+煩累 < hanrui\ ;
+片手 < katate\ ;
+片戸 < katado\ ;
+斑気 < muraki\ ;
+敦煌 < tonkou\ ;
+大波 < oonami\ ;
+断案 < dan''an\ ;
+天水 < tensui\ ;
+外湯 < sotoyu\ ;
+晦冥 < kaimei\ ;
+教父 < kyoufu\ ;
+純銀 < jungin\ ;
+大水 < oomizu\ ;
+外港 < gaikou\ ;
+説法 < seppou\ ;
+見込 < mikomi\ ;
+訪米 < houbei\ ;
+細身 < hosomi\ ;
+文民 < bunmin\ ;
+炭鉱 < tankou\ ;
+旧恩 < kyuuon\ ;
+純金 < junkin\ ;
+事務器 < jimuki\ ;
+夜泊 < yahaku\ ;
+方方 < houbou\ ;
+綿糸 < menshi\ ;
+旨念 < shinen\ ;
+操船 < sousen\ ;
+綾糸 < ayaito\ ;
+電源 < dengen\ ;
+妄念 < mounen\ ;
+西遊 < seiyuu\ ;
+奮戦 < funsen\ ;
+炭酸 < tansan\ ;
+納金 < noukin\ ;
+納采 < nousai\ ;
+観覧 < kanran\ ;
+諸手 < morote\ ;
+音信 < onshin\ ;
+精魂 < seikon\ ;
+夜毎 < yogoto\ ;
+散漫 < sanman\ ;
+緩目 < yurume\ ;
+片影 < hen''ei\ ;
+妄弁 < bouben\ ;
+霊殿 < reiden\ ;
+既得 < kitoku\ ;
+論旨 < ronshi\ ;
+精髄 < seizui\ ;
+御洒落 < oshare\ ;
+事務員 < jimuin\ ;
+埴輪 < haniwa\ ;
+論断 < rondan\ ;
+論文 < ronbun\ ;
+煙管 < kiseru\ ;
+調査 < chousa\ ;
+植木屋 < uekiya\ ;
+無臭 < mushuu\ ;
+靱帯 < jintai\ ;
+明大 < meidai\ ;
+閉館 < heikan\ ;
+諸悪 < shoaku\ ;
+壁画 < hekiga\ ;
+素足 < suashi\ ;
+敵歩 < tekifu\ ;
+雄犬 < osuinu\ ;
+増税 < zouzei\ ;
+墾田 < konden\ ;
+改版 < kaihan\ ;
+父御 < tetego\ ;
+不可誤 < fukago\ ;
+関門 < kanmon\ ;
+大根 < daikon\ ;
+雑炊 < zousui\ ;
+夜業 < yagyou\ ;
+細論 < sairon\ ;
+牧夫 < bokufu\ ;
+文案 < bun''an\ ;
+旅情 < ryojou\ ;
+変死 < henshi\ ;
+外様 < tozama\ ;
+大柄 < oogara\ ;
+御釈迦 < oshaka\ ;
+諸彦 < shogen\ ;
+間際 < magiwa\ ;
+無聊 < buryou\ ;
+長駆 < chouku\ ;
+雲母 < kirara\ ;
+早寝 < hayane\ ;
+西貢 < saigon\ ;
+教派 < kyouha\ ;
+操縦 < soujuu\ ;
+大本 < taihon\ ;
+大望 < taimou\ ;
+論拠 < ronkyo\ ;
+日射 < nissha\ ;
+奉拝 < houhai\ ;
+牧場 < makiba\ ;
+計算 < keisan\ ;
+除籍 < joseki\ ;
+糸遊 < itoyuu\ ;
+難治 < nanchi\ ;
+墨痕 < bokkon\ ;
+印字機 < injiki\ ;
+論戦 < ronsen\ ;
+天明 < tenmei\ ;
+墓石 < boseki\ ;
+墨画 < bokuga\ ;
+難民 < nanmin\ ;
+素読 < sodoku\ ;
+要諦 < youtei\ ;
+天文 < tenmon\ ;
+大方 < ookata\ ;
+硫黄泉 < iousen\ ;
+開門 < kaimon\ ;
+練炭 < rentan\ ;
+閉門 < heimon\ ;
+増益 < zoueki\ ;
+外来 < gairai\ ;
+闇路 < yamiji\ ;
+外材 < gaizai\ ;
+門院 < mon''in\ ;
+納豆 < nattou\ ;
+門限 < mongen\ ;
+方形 < houkei\ ;
+文政 < bunsei\ ;
+女官 < nyokan\ ;
+無給 < mukyuu\ ;
+早大 < soudai\ ;
+要覧 < youran\ ;
+雛段 < suudan\ ;
+面子 < mentsu\ ;
+数枚 < suumai\ ;
+雨樋 < amadoi\ ;
+雄渾 < yuukon\ ;
+複音 < fukuon\ ;
+明君 < meikun\ ;
+険相 < kensou\ ;
+特務 < tokumu\ ;
+物品 < buppin\ ;
+増産 < zousan\ ;
+損金 < sonkin\ ;
+長閑 < nodoka\ ;
+語族 < gozoku\ ;
+偉丈夫 < ijoufu\ ;
+論弁 < ronben\ ;
+日報 < nippou\ ;
+門鑑 < monkan\ ;
+堕落 < daraku\ ;
+関連 < kanren\ ;
+煮物 < nimono\ ;
+旅寝 < tabine\ ;
+陳皮 < chinpi\ ;
+布海苔 < funori\ ;
+紫蘭 < shiran\ ;
+開銀 < kaigin\ ;
+無策 < musaku\ ;
+謦咳 < keigai\ ;
+妥協 < dakyou\ ;
+大技 < oowaza\ ;
+精錬 < seiren\ ;
+旧土 < kyuudo\ ;
+電断 < dendan\ ;
+霰弾 < sandan\ ;
+教案 < kyouan\ ;
+妙味 < myoumi\ ;
+明初 < meisho\ ;
+絞罪 < kouzai\ ;
+昨今 < sakkon\ ;
+絨緞 < juutan\ ;
+方寸 < housun\ ;
+変改 < henkai\ ;
+零敗 < reihai\ ;
+奥妙 < oumyou\ ;
+散文 < sanbun\ ;
+散散 < sanzan\ ;
+土龍 < mogura\ ;
+縦断 < juudan\ ;
+謚号 < shigou\ ;
+女囚 < joshuu\ ;
+断定 < dantei\ ;
+論定 < rontei\ ;
+塵界 < jinkai\ ;
+論孟 < ronmou\ ;
+日和 < hiyori\ ;
+網状 < moujou\ ;
+大形 < oogyou\ ;
+慰安会 < iankai\ ;
+難文 < nanbun\ ;
+披露目 < hirome\ ;
+米飯 < beihan\ ;
+網版 < amihan\ ;
+売文 < baibun\ ;
+日向 < hinata\ ;
+精農 < seinou\ ;
+新婦 < shinpu\ ;
+防空 < boukuu\ ;
+天底 < tentei\ ;
+太平 < taihei\ ;
+奥地 < okuchi\ ;
+大店 < oodana\ ;
+雑書 < zassho\ ;
+閣議 < kakugi\ ;
+灰貝 < haigai\ ;
+大幅 < oohaba\ ;
+大師 < daishi\ ;
+結納 < yuinou\ ;
+旅団 < ryodan\ ;
+繁忙 < hanbou\ ;
+地髪 < jigami\ ;
+防禦 < bougyo\ ;
+細胞 < saibou\ ;
+日勤 < nikkin\ ;
+点茶 < tencha\ ;
+長途 < chouto\ ;
+予備馬 < yobiba\ ;
+気化器 < kikaki\ ;
+摘芽 < tekiga\ ;
+雄松 < omatsu\ ;
+早出 < hayade\ ;
+奇妙 < kimyou\ ;
+外径 < gaikei\ ;
+外征 < gaisei\ ;
+接頭 < settou\ ;
+訓点 < kunten\ ;
+武者絵 < mushae\ ;
+論外 < rongai\ ;
+夜店 < yomise\ ;
+絃線 < gensen\ ;
+諾否 < dakuhi\ ;
+無痛 < mutsuu\ ;
+無病 < mubyou\ ;
+壟断 < roudan\ ;
+片刃 < kataha\ ;
+敵影 < tekiei\ ;
+絹目 < kinume\ ;
+煮汁 < nijiru\ ;
+裾野 < susono\ ;
+夜市 < yoichi\ ;
+大山 < taizan\ ;
+諸君 < shokun\ ;
+霜害 < sougai\ ;
+改易 < kaieki\ ;
+壮挙 < soukyo\ ;
+紅葉 < momiji\ ;
+斎宮 < saiguu\ ;
+難所 < nansho\ ;
+奪取 < dasshu\ ;
+太守 < taishu\ ;
+斉射 < seisha\ ;
+変形 < henkei\ ;
+素肌 < suhada\ ;
+太字 < futoji\ ;
+天孫 < tenson\ ;
+雑損 < zasson\ ;
+日傘 < higasa\ ;
+革具 < kawagu\ ;
+面前 < menzen\ ;
+霊峰 < reihou\ ;
+隷書 < reisho\ ;
+角皮 < kakuhi\ ;
+数年 < suunen\ ;
+奮励 < funrei\ ;
+非力 < hiriki\ ;
+諭告 < yukoku\ ;
+風土記 < fudoki\ ;
+文官 < bunkan\ ;
+旬余 < jun''yo\ ;
+紅茶 < koucha\ ;
+細緻 < saichi\ ;
+埋蔵 < maizou\ ;
+霊山 < reizan\ ;
+裏門 < uramon\ ;
+電工 < denkou\ ;
+斜塔 < shatou\ ;
+夜寒 < yozamu\ ;
+塩煮 < shioni\ ;
+諸刃 < moroha\ ;
+埋葬 < maisou\ ;
+綿毛 < watage\ ;
+結社 < kessha\ ;
+褒貶 < houhen\ ;
+累累 < ruirui\ ;
+地霊 < chirei\ ;
+夜学 < yagaku\ ;
+日伊 < nichii\ ;
+角界 < kakkai\ ;
+敏感 < binkan\ ;
+敷居 < shikii\ ;
+炭肺 < tanhai\ ;
+煙毒 < endoku\ ;
+熱意 < netsui\ ;
+地階 < chikai\ ;
+旅券 < ryoken\ ;
+隣村 < rinson\ ;
+面倒 < mendou\ ;
+日中 < hinaka\ ;
+契合 < keigou\ ;
+霊媒 < reibai\ ;
+米銭 < beisen\ ;
+語学 < gogaku\ ;
+誘導 < yuudou\ ;
+雑感 < zakkan\ ;
+斎場 < saijou\ ;
+女体 < nyotai\ ;
+面体 < mentei\ ;
+奉呈 < houtei\ ;
+撃破 < gekiha\ ;
+面会 < menkai\ ;
+売店 < baiten\ ;
+論叢 < ronsou\ ;
+電子 < denshi\ ;
+爵位 < shakui\ ;
+女人 < nyonin\ ;
+絶版 < zeppan\ ;
+雪崩 < nadare\ ;
+紛紛 < funpun\ ;
+壮年 < sounen\ ;
+大型 < oogata\ ;
+純綿 < junmen\ ;
+塩湯 < shioyu\ ;
+女中 < jochuu\ ;
+門衛 < mon''ei\ ;
+垂訓 < suikun\ ;
+防犯 < bouhan\ ;
+熱帯 < nettai\ ;
+焚火 < takibi\ ;
+改悪 < kaiaku\ ;
+純系 < junkei\ ;
+奥伝 < okuden\ ;
+塩浴 < enyoku\ ;
+談合 < dangou\ ;
+霊域 < reiiki\ ;
+論判 < ronpan\ ;
+煮方 < nikata\ ;
+熊手 < kumade\ ;
+純粋 < junsui\ ;
+読図 < dokuzu\ ;
+火蓋 < hibuta\ ;
+調和 < chouwa\ ;
+調味 < choumi\ ;
+旅人 < ryojin\ ;
+総数 < sousuu\ ;
+雑巾 < zoukin\ ;
+隅木 < sumiki\ ;
+親疎 < shinso\ ;
+方便 < houben\ ;
+離宮 < rikyuu\ ;
+絢爛 < kenran\ ;
+御河童 < okappa\ ;
+外地 < gaichi\ ;
+塩気 < shioke\ ;
+接近 < sekkin\ ;
+雄弁 < yuuben\ ;
+米軍 < beigun\ ;
+改廃 < kaihai\ ;
+階数 < kaisuu\ ;
+地金 < jigane\ ;
+調印 < chouin\ ;
+籤運 < kujiun\ ;
+濁音 < dakuon\ ;
+大和 < yamato\ ;
+談判 < danpan\ ;
+長蛇 < chouda\ ;
+方今 < houkon\ ;
+紅粉 < beniko\ ;
+地酒 < jizake\ ;
+隻影 < sekiei\ ;
+土鍋 < donabe\ ;
+灰色 < haiiro\ ;
+天台 < tendai\ ;
+大君 < taikun\ ;
+陰核 < inkaku\ ;
+細目 < hosome\ ;
+提要 < teiyou\ ;
+火花 < hibana\ ;
+雑居 < zakkyo\ ;
+埋線 < maisen\ ;
+数回 < suukai\ ;
+奕世 < ekisei\ ;
+齦 < haguki\ ;
+大半 < taihan\ ;
+鼈 < suppon\ ;
+褐藻 < kassou\ ;
+黜 < chutsu\ ;
+無毒 < mudoku\ ;
+大匙 < oosaji\ ;
+絶海 < zekkai\ ;
+雄峰 < yuuhou\ ;
+納税 < nouzei\ ;
+土釜 < dogama\ ;
+大勢 < taizei\ ;
+緒戦 < chosen\ ;
+麓 < fumoto\ ;
+大勇 < taiyuu\ ;
+裳裾 < mosuso\ ;
+除核 < jokaku\ ;
+解毒 < gedoku\ ;
+陰暦 < inreki\ ;
+無欲 < muyoku\ ;
+誣告 < bukoku\ ;
+大分 < daibun\ ;
+大刀 < daitou\ ;
+雑婚 < zakkon\ ;
+損耗 < sonmou\ ;
+圧迫 < appaku\ ;
+大凡 < ooyoso\ ;
+随所 < zuisho\ ;
+雅客 < gakaku\ ;
+天兵 < tenpei\ ;
+鵥 < kakesu\ ;
+隠忍 < in''nin\ ;
+除服 < jofuku\ ;
+鴬 < uguisu\ ;
+大全 < taizen\ ;
+鴎 < kamome\ ;
+電命 < denmei\ ;
+補註 < hochuu\ ;
+摸牌 < moupai\ ;
+愛煙家 < aienka\ ;
+部屋着 < heyagi\ ;
+霊剣 < reiken\ ;
+数名 < suumei\ ;
+表音 < hyouon\ ;
+予備費 < yobihi\ ;
+外勤 < gaikin\ ;
+随感 < zuikan\ ;
+鱸 < suzuki\ ;
+炯眼 < keigan\ ;
+鱰 < shiira\ ;
+夜凪 < yonagi\ ;
+随想 < zuisou\ ;
+鰹 < katsuo\ ;
+推論 < suiron\ ;
+鰯 < iwashi\ ;
+変名 < henmei\ ;
+給油 < kyuuyu\ ;
+鰚 < haraka\ ;
+終焉 < shuuen\ ;
+鰆 < sawara\ ;
+熱型 < nekkei\ ;
+雷同 < raidou\ ;
+霧中 < muchuu\ ;
+鯱 < shachi\ ;
+鯰 < namazu\ ;
+鯨 < kujira\ ;
+鯣 < surume\ ;
+数千 < suusen\ ;
+数十 < suujuu\ ;
+要用 < youyou\ ;
+続映 < zokuei\ ;
+埴生 < hanyuu\ ;
+外出 < sotode\ ;
+雲呑 < wantan\ ;
+鮪 < maguro\ ;
+結滞 < kettai\ ;
+鮖 < kajika\ ;
+炉端 < robata\ ;
+雑報 < zappou\ ;
+累犯 < ruihan\ ;
+推計 < suikei\ ;
+照応 < shouou\ ;
+縫合 < hougou\ ;
+四隣 < shirin\ ;
+外典 < gaiten\ ;
+瀘過器 < rokaki\ ;
+四隅 < yosumi\ ;
+堅牢 < kenrou\ ;
+火縄 < hinawa\ ;
+変動 < hendou\ ;
+随従 < zuijuu\ ;
+雄大 < yuudai\ ;
+文例 < bunrei\ ;
+難問 < nanmon\ ;
+教唆 < kyousa\ ;
+探訪 < tanbou\ ;
+捻転 < nenten\ ;
+教員 < kyouin\ ;
+図録 < zuroku\ ;
+大代 < daidai\ ;
+補助員 < hojoin\ ;
+裏襟 < uraeri\ ;
+土足 < dosoku\ ;
+外債 < gaisai\ ;
+授賞 < jushou\ ;
+見物 < mimono\ ;
+天丼 < tendon\ ;
+大乱 < tairan\ ;
+照度 < shoudo\ ;
+文人 < bunjin\ ;
+大乗 < daijou\ ;
+売品 < baihin\ ;
+天与 < ten''yo\ ;
+地謡 < jiutai\ ;
+製茶 < seicha\ ;
+夜伽 < yotogi\ ;
+多作 < tasaku\ ;
+長者 < chouja\ ;
+売名 < baimei\ ;
+塊根 < kaikon\ ;
+焚書 < funsho\ ;
+摂生 < sessei\ ;
+関空 < kankuu\ ;
+無明 < mumyou\ ;
+比丘尼 < bikuni\ ;
+国運 < kokuun\ ;
+閉経 < heikei\ ;
+血餅 < keppei\ ;
+電停 < dentei\ ;
+数値 < suuchi\ ;
+関税 < kanzei\ ;
+数倍 < suubai\ ;
+夜中 < yonaka\ ;
+散兵 < sanpei\ ;
+外人 < gaijin\ ;
+壇場 < danjou\ ;
+捨身 < sutemi\ ;
+塗料 < toryou\ ;
+素焼 < suyaki\ ;
+煙幕 < enmaku\ ;
+外乱 < gairan\ ;
+雑品 < zappin\ ;
+解散 < kaisan\ ;
+擱座 < kakuza\ ;
+精精 < seizei\ ;
+絶景 < zekkei\ ;
+許容 < kyoyou\ ;
+地裁 < chisai\ ;
+精粉 < seifun\ ;
+鞐 < kohaze\ ;
+捕逸 < hoitsu\ ;
+救助 < kyuujo\ ;
+精米 < seimai\ ;
+改善 < kaizen\ ;
+圧覚 < akkaku\ ;
+数人 < suunin\ ;
+陰徳 < intoku\ ;
+火種 < hidane\ ;
+霞 < kasumi\ ;
+霙 < mizore\ ;
+設定 < settei\ ;
+詩吟 < shigin\ ;
+雛 < hiyoko\ ;
+累減 < ruigen\ ;
+純然 < junzen\ ;
+数万 < suuman\ ;
+変乱 < henran\ ;
+波止場 < hatoba\ ;
+陪従 < baijuu\ ;
+衣鉢 < ihatsu\ ;
+被覆 < hifuku\ ;
+炯炯 < keikei\ ;
+炭火 < sumibi\ ;
+国費 < kokuhi\ ;
+地虫 < mimizu\ ;
+回遊 < kaiyuu\ ;
+観桜 < kan''ou\ ;
+易動度 < idoudo\ ;
+垂範 < suihan\ ;
+難件 < nanken\ ;
+訓導 < kundou\ ;
+鑢 < yasuri\ ;
+絵図面 < ezumen\ ;
+敗亡 < haibou\ ;
+売人 < bainin\ ;
+潮間 < shioma\ ;
+裸婦画 < rafuga\ ;
+離乳 < rinyuu\ ;
+裏芸 < uragei\ ;
+回転 < kaiten\ ;
+場数 < bakazu\ ;
+火皿 < hizara\ ;
+歩一歩 < hoippo\ ;
+増大 < zoudai\ ;
+縁先 < ensaki\ ;
+三十路 < misoji\ ;
+売上 < uriage\ ;
+雑俳 < zappai\ ;
+国語 < kokugo\ ;
+錺 < kazari\ ;
+経書 < keisho\ ;
+改元 < kaigen\ ;
+換算 < kanzan\ ;
+粗粗 < araara\ ;
+炊爨 < suisan\ ;
+激語 < gekigo\ ;
+紡毛 < boumou\ ;
+無心 < mushin\ ;
+紫檀 < shitan\ ;
+縁側 < engawa\ ;
+不沙汰 < busata\ ;
+銍 < chitsu\ ;
+補習 < hoshuu\ ;
+陣屋 < jin''ya\ ;
+雑件 < zakken\ ;
+鉋 < kan''na\ ;
+不死身 < fujimi\ ;
+雑人 < zounin\ ;
+練兵 < renpei\ ;
+墓場 < hakaba\ ;
+雅俗 < gazoku\ ;
+醪 < moromi\ ;
+放任 < hounin\ ;
+加奈陀 < kanada\ ;
+推考 < suikou\ ;
+純毛 < junmou\ ;
+紅涙 < kourui\ ;
+素樸 < soboku\ ;
+噴飯 < funpan\ ;
+継子 < mamako\ ;
+純正 < junsei\ ;
+覇業 < hagyou\ ;
+火玉 < hidama\ ;
+訪問 < houmon\ ;
+長目 < nagame\ ;
+統御 < tougyo\ ;
+遖 < appare\ ;
+蟻食 < arikui\ ;
+搾油 < sakuyu\ ;
+以遠権 < ienken\ ;
+衿裏 < eriura\ ;
+補給 < hokyuu\ ;
+施餓鬼 < segaki\ ;
+評価 < hyouka\ ;
+門番 < monban\ ;
+図表 < zuhyou\ ;
+迚 < totemo\ ;
+米綿 < beimen\ ;
+塹壕 < zangou\ ;
+三重県 < mieken\ ;
+緑化 < ryokka\ ;
+陋屋 < rouoku\ ;
+地肌 < jihada\ ;
+防弾 < boudan\ ;
+御沙汰 < gosata\ ;
+言外 < gengai\ ;
+総勢 < souzei\ ;
+回訓 < kaikun\ ;
+結成 < kessei\ ;
+軈 < yagate\ ;
+約款 < yakkan\ ;
+躻 < utsuke\ ;
+躮 < segare\ ;
+撤廃 < teppai\ ;
+因襲 < inshuu\ ;
+米粉 < beifun\ ;
+煩労 < hanrou\ ;
+墨刑 < bokkei\ ;
+無学 < mugaku\ ;
+毛繻子 < kejusu\ ;
+描破 < byouha\ ;
+摘果 < tekika\ ;
+陰嚢 < fuguri\ ;
+踵 < kakato\ ;
+不同意 < fudoui\ ;
+拳銃 < kenjuu\ ;
+節酒 < sesshu\ ;
+噴門 < funmon\ ;
+表裏 < hyouri\ ;
+随分 < zuibun\ ;
+絶対 < zettai\ ;
+粗目 < zarame\ ;
+漢音 < kan''on\ ;
+指輪 < yubiwa\ ;
+粉砕 < funsai\ ;
+陰唇 < inshin\ ;
+隣人 < rinjin\ ;
+米突 < mētoru\ ;
+素敵 < suteki\ ;
+増刊 < zoukan\ ;
+増分 < zoubun\ ;
+潮路 < shioji\ ;
+術計 < jukkei\ ;
+納杯 < nouhai\ ;
+衆議 < shuugi\ ;
+点数 < tensuu\ ;
+納本 < nouhon\ ;
+拳道 < kondou\ ;
+陣営 < jin''ei\ ;
+紙数 < shisuu\ ;
+紛擾 < funjou\ ;
+門灯 < montou\ ;
+拠金 < kyokin\ ;
+門火 < kadobi\ ;
+絶好 < zekkou\ ;
+素描 < sobyou\ ;
+袱紗 < fukusa\ ;
+随伴 < zuihan\ ;
+提琴 < teikin\ ;
+記入 < kinyuu\ ;
+在米 < zaibei\ ;
+覚悟 < kakugo\ ;
+増俸 < zouhou\ ;
+増便 < zoubin\ ;
+訁 < gonben\ ;
+漏電 < rouden\ ;
+予備科 < yobika\ ;
+褐炭 < kattan\ ;
+掻痒 < souyou\ ;
+炉棚 < rodana\ ;
+境内 < keidai\ ;
+推知 < suichi\ ;
+火水 < himizu\ ;
+要所 < yousho\ ;
+地税 < chizei\ ;
+絹地 < kinuji\ ;
+江戸前 < edomae\ ;
+精液 < seieki\ ;
+探知 < tanchi\ ;
+器量 < kiryou\ ;
+蠍 < sasori\ ;
+長湯 < nagayu\ ;
+漸近 < zenkin\ ;
+院内 < in''nai\ ;
+場外 < jougai\ ;
+垂準 < suijun\ ;
+無告 < mukoku\ ;
+訓令 < kunrei\ ;
+累年 < ruinen\ ;
+圧神 < asshin\ ;
+米産 < beisan\ ;
+結婚 < kekkon\ ;
+納所 < nassho\ ;
+蛍 < hotaru\ ;
+撤回 < tekkai\ ;
+籠目 < kagome\ ;
+純愛 < jun''ai\ ;
+手鼻 < tebana\ ;
+長波 < chouha\ ;
+垂涎 < zuizen\ ;
+索引 < sakuin\ ;
+純情 < junjou\ ;
+絶品 < zeppin\ ;
+探番 < tanban\ ;
+門歯 < monshi\ ;
+濃紺 < noukon\ ;
+約手 < yakute\ ;
+薺 < nazuna\ ;
+衰耗 < suimou\ ;
+筆頭 < hittou\ ;
+採用 < saiyou\ ;
+捕縛 < hobaku\ ;
+蕨 < warabi\ ;
+粉炭 < funtan\ ;
+陪乗 < baijou\ ;
+蔶 < sonoko\ ;
+圧着 < atsugi\ ;
+垣根 < kakine\ ;
+蓬 < yomogi\ ;
+解剖 < kaibou\ ;
+統合 < tougou\ ;
+土石 < doseki\ ;
+蒅 < sukumo\ ;
+地番 < chiban\ ;
+焚刑 < funkei\ ;
+細字 < hosoji\ ;
+無償 < mushou\ ;
+終夜 < shuuya\ ;
+言上 < gonjou\ ;
+保護区 < hogoku\ ;
+間服 < aifuku\ ;
+浅茅生 < asajiu\ ;
+無傷 < mukizu\ ;
+撤去 < tekkyo\ ;
+茸 < kinoko\ ;
+因縁 < in''nen\ ;
+嘆願 < tangan\ ;
+澱粉 < denpun\ ;
+要害 < yougai\ ;
+紙屋 < kamiya\ ;
+間数 < makazu\ ;
+国禁 < kokkin\ ;
+挿絵 < sashie\ ;
+地獄 < jigoku\ ;
+垂楊 < suiyou\ ;
+土産 < miyage\ ;
+解体 < kaitai\ ;
+接点 < setten\ ;
+国礎 < kokuso\ ;
+膠 < nikawa\ ;
+端麗 < tanrei\ ;
+血膿 < chiumi\ ;
+解任 < kainin\ ;
+紙子 < kamiko\ ;
+炭層 < tansou\ ;
+撤兵 < teppei\ ;
+累増 < ruizou\ ;
+行者 < gyouja\ ;
+烈士 < resshi\ ;
+漫談 < mandan\ ;
+手駒 < tegoma\ ;
+堅塁 < kenrui\ ;
+家具屋 < kaguya\ ;
+手首 < tekubi\ ;
+小気味 < kokimi\ ;
+炉心 < roshin\ ;
+筆鋒 < hippou\ ;
+堂堂 < doudou\ ;
+親和 < shinwa\ ;
+垂木 < taruki\ ;
+場内 < jounai\ ;
+按腹 < anpuku\ ;
+地点 < chiten\ ;
+闇屋 < yamiya\ ;
+絶世 < zessei\ ;
+組合 < kumiai\ ;
+手頃 < tegoro\ ;
+覆土 < fukudo\ ;
+培地 < baichi\ ;
+回礼 < kairei\ ;
+所願 < shogan\ ;
+結党 < kettou\ ;
+純増 < junzou\ ;
+縅 < odoshi\ ;
+製材 < seizai\ ;
+烙印 < rakuin\ ;
+手際 < tegiwa\ ;
+手隙 < tesuki\ ;
+親分 < oyabun\ ;
+等辺 < touhen\ ;
+点在 < tenzai\ ;
+給与 < kyuuyo\ ;
+炭塵 < tanjin\ ;
+粗服 < sofuku\ ;
+域外 < ikigai\ ;
+細君 < saikun\ ;
+天蚕糸 < tegusu\ ;
+糒 < hoshii\ ;
+拙著 < setcho\ ;
+手長 < tenaga\ ;
+闇夜 < yamiyo\ ;
+国王 < kokuou\ ;
+粉本 < funpon\ ;
+圏点 < kenten\ ;
+火床 < hidoko\ ;
+血管 < kekkan\ ;
+経伝 < keiden\ ;
+表皮 < hyouhi\ ;
+笂 < utsubo\ ;
+排水 < haisui\ ;
+国父 < kokufu\ ;
+細分 < saibun\ ;
+竈 < kamado\ ;
+持続 < jizoku\ ;
+握手 < akushu\ ;
+手鍋 < tenabe\ ;
+竜馬 < ryuume\ ;
+窮鼠 < kyuuso\ ;
+城塁 < jourui\ ;
+滑車 < kassha\ ;
+童顔 < dougan\ ;
+秤 < hakari\ ;
+門弟 < montei\ ;
+戦雲 < sen''un\ ;
+禊 < misogi\ ;
+手鉤 < tekagi\ ;
+湾頭 < wantou\ ;
+納品 < nouhin\ ;
+損害 < songai\ ;
+米材 < beizai\ ;
+異文化 < ibunka\ ;
+満面 < manmen\ ;
+竜頭 < ryuuzu\ ;
+喫飯 < kippan\ ;
+索具 < sakugu\ ;
+裏板 < uraita\ ;
+手酌 < tejaku\ ;
+拙者 < sessha\ ;
+砦 < toride\ ;
+長座 < chouza\ ;
+閉山 < heizan\ ;
+地検 < chiken\ ;
+開封 < kaifuu\ ;
+炭労 < tanrou\ ;
+純分 < junbun\ ;
+坦懐 < tankai\ ;
+満開 < mankai\ ;
+累乗 < ruijou\ ;
+推断 < suidan\ ;
+批評 < hihyou\ ;
+授業 < jugyou\ ;
+位相差 < isousa\ ;
+累世 < ruisei\ ;
+血相 < kessou\ ;
+複座 < fukuza\ ;
+濃淡 < noutan\ ;
+手軽 < tegaru\ ;
+在校 < zaikou\ ;
+褥婦 < jokufu\ ;
+長屋 < nagaya\ ;
+血痰 < kettan\ ;
+開始 < kaishi\ ;
+域内 < ikinai\ ;
+長寿 < chouju\ ;
+在来 < zairai\ ;
+裁断 < saidan\ ;
+瓼 < sarake\ ;
+抜萃 < bassui\ ;
+紛争 < funsou\ ;
+手足 < teashi\ ;
+圧服 < appuku\ ;
+紛乱 < funran\ ;
+潰瘍 < kaiyou\ ;
+推挙 < suikyo\ ;
+国母 < kokubo\ ;
+粒度 < ryuudo\ ;
+地文 < chimon\ ;
+薔薇園 < baraen\ ;
+游魚 < yuugyo\ ;
+土木 < doboku\ ;
+米懇 < beikon\ ;
+閣員 < kakuin\ ;
+門外 < mongai\ ;
+捺染 < nassen\ ;
+城兵 < jouhei\ ;
+漁船 < gyosen\ ;
+過渡期 < katoki\ ;
+闇値 < yamine\ ;
+狸 < tanuki\ ;
+持病 < jibyou\ ;
+長女 < choujo\ ;
+国権 < kokken\ ;
+紊乱 < bunran\ ;
+土方 < dokata\ ;
+打診 < dashin\ ;
+圧搾 < assaku\ ;
+演繹 < en''eki\ ;
+補強 < hokyou\ ;
+門地 < monchi\ ;
+立錐 < rissui\ ;
+善隣 < zenrin\ ;
+戦車 < sensha\ ;
+手許 < temoto\ ;
+衰残 < suizan\ ;
+粉屋 < konaya\ ;
+所論 < shoron\ ;
+団欒 < danran\ ;
+満載 < mansai\ ;
+居場所 < ibasho\ ;
+満車 < mansha\ ;
+在所 < zaisho\ ;
+米帝 < beitei\ ;
+喝采 < kassai\ ;
+蛮風 < banpuu\ ;
+懇願 < kongan\ ;
+筆致 < hitchi\ ;
+図柄 < zugara\ ;
+戊辰 < boshin\ ;
+国是 < kokuze\ ;
+糞便 < funben\ ;
+違和感 < iwakan\ ;
+潮瀬 < shiose\ ;
+童貞 < doutei\ ;
+突風 < toppuu\ ;
+火先 < hosaki\ ;
+米屋 < komeya\ ;
+火元 < himoto\ ;
+地形 < chikei\ ;
+渚 < nagisa\ ;
+精勤 < seikin\ ;
+抜糸 < basshi\ ;
+穴馬 < anauma\ ;
+火傷 < yakedo\ ;
+滅菌 < mekkin\ ;
+生蕎麦 < kisoba\ ;
+筆耕 < hikkou\ ;
+鎮護 < chingo\ ;
+蛮隷 < banrei\ ;
+涎 < yodare\ ;
+筆者 < hissha\ ;
+在役 < zaieki\ ;
+地平 < chihei\ ;
+推定 < suitei\ ;
+問題 < mondai\ ;
+門前 < monzen\ ;
+四桁 < yoketa\ ;
+行殊 < gyoujo\ ;
+空音 < sorane\ ;
+圧延 < atsuen\ ;
+門出 < kadode\ ;
+採寸 < saisun\ ;
+扶翼 < fuyoku\ ;
+汀 < migiwa\ ;
+氵 < sanzui\ ;
+籠居 < roukyo\ ;
+懸軍 < kengun\ ;
+空電 < kuuden\ ;
+製品 < seihin\ ;
+空際 < kuusai\ ;
+鍛錬 < tanren\ ;
+国技 < kokugi\ ;
+録音 < rokuon\ ;
+所蔵 < shozou\ ;
+開会 < kaikai\ ;
+潟湖 < sekiko\ ;
+不気味 < bukimi\ ;
+喉輪 < nodowa\ ;
+渋面 < juumen\ ;
+閉会 < heikai\ ;
+筆紙 < hisshi\ ;
+空閨 < kuukei\ ;
+演目 < enmoku\ ;
+空間 < kuukan\ ;
+樵 < kikori\ ;
+樮 < hokuso\ ;
+才芸 < saigei\ ;
+複利 < fukuri\ ;
+裏声 < uragoe\ ;
+滞納 < tainou\ ;
+拠点 < kyoten\ ;
+手芸 < shugei\ ;
+測鉛 < sokuen\ ;
+在官 < zaikan\ ;
+噴煙 < fun''en\ ;
+楔 < kusabi\ ;
+漂砂 < hyousa\ ;
+門人 < monjin\ ;
+椪 < kunugi\ ;
+筆算 < hissan\ ;
+国恩 < kokuon\ ;
+才腕 < saiwan\ ;
+困憊 < konpai\ ;
+節水 < sessui\ ;
+筆端 < hittan\ ;
+手腕 < shuwan\ ;
+潜水 < sensui\ ;
+激怒 < gekido\ ;
+才能 < sainou\ ;
+鍛造 < tanzou\ ;
+栞 < shiori\ ;
+地変 < chihen\ ;
+血栓 < kessen\ ;
+手職 < tejoku\ ;
+窓辺 < madobe\ ;
+術数 < jussuu\ ;
+李 < sumomo\ ;
+濁度 < dakudo\ ;
+在天 < zaiten\ ;
+在外 < zaigai\ ;
+血書 < kessho\ ;
+地域 < chiiki\ ;
+暦 < koyomi\ ;
+減配 < genpai\ ;
+積雲 < sekiun\ ;
+昴 < subaru\ ;
+満蒙 < manmou\ ;
+御歳暮 < oseibo\ ;
+漸減 < zengen\ ;
+滑空 < kakkuu\ ;
+深間 < fukama\ ;
+血斑 < keppan\ ;
+稚鰤 < warasa\ ;
+減退 < gentai\ ;
+端艇 < tantei\ ;
+接吻 < seppun\ ;
+拘泥 < koudei\ ;
+筋目 < sujime\ ;
+稚鮎 < chiayu\ ;
+予備員 < yobiin\ ;
+蜥蜴 < tokage\ ;
+拝殿 < haiden\ ;
+稚魚 < chigyo\ ;
+映画化 < eigaka\ ;
+噴水 < funsui\ ;
+手紙 < tegami\ ;
+篆書 < tensho\ ;
+種類 < shurui\ ;
+清酒 < seishu\ ;
+粉体 < funtai\ ;
+商運 < shouun\ ;
+空転 < kuuten\ ;
+欧印語 < ouingo\ ;
+均分 < kinbun\ ;
+滅私 < messhi\ ;
+空軍 < kuugun\ ;
+空車 < kuusha\ ;
+粋人 < suijin\ ;
+図案家 < zuanka\ ;
+手籠 < tekago\ ;
+満腔 < mankou\ ;
+披瀝 < hireki\ ;
+手箱 < tebako\ ;
+手管 < tekuda\ ;
+手筋 < tesuji\ ;
+手筈 < tehazu\ ;
+挙手 < kyoshu\ ;
+扖 < hameru\ ;
+突貫 < tokkan\ ;
+竹縁 < takeen\ ;
+排卵 < hairan\ ;
+湯花 < yubana\ ;
+懇請 < konsei\ ;
+懇談 < kondan\ ;
+捨場 < suteba\ ;
+湯船 < yubune\ ;
+衆愚 < shuugu\ ;
+憖 < namaji\ ;
+深部 < shinbu\ ;
+戸籍 < koseki\ ;
+節操 < sessou\ ;
+被告 < hikoku\ ;
+滅相 < messou\ ;
+端線 < tansen\ ;
+端緒 < tancho\ ;
+在勤 < zaikin\ ;
+潔斎 < kessai\ ;
+圧勝 < asshou\ ;
+海鼠 < namako\ ;
+接伴 < seppan\ ;
+竹簀 < takesu\ ;
+地元 < jimoto\ ;
+液面 < ekimen\ ;
+蛇足 < dasoku\ ;
+国土 < kokudo\ ;
+応援歌 < ouenka\ ;
+空論 < kuuron\ ;
+空談 < kuudan\ ;
+彠 < kuwaku\ ;
+漁港 < gyokou\ ;
+愛鳥 < aichou\ ;
+廓 < kuruwa\ ;
+蠱惑 < kowaku\ ;
+排便 < haiben\ ;
+国営 < kokuei\ ;
+幟 < nobori\ ;
+幉 < tazuna\ ;
+拮据 < kikkyo\ ;
+振子 < furiko\ ;
+噸数 < tonsuu\ ;
+漁法 < gyohou\ ;
+団塊 < dankai\ ;
+地代 < chidai\ ;
+喫緊 < kikkin\ ;
+手癖 < tekuse\ ;
+錯誤 < sakugo\ ;
+税関 < zeikan\ ;
+嵐 < arashi\ ;
+漁民 < gyomin\ ;
+在住 < zaijuu\ ;
+蚊鉤 < kabari\ ;
+在任 < zainin\ ;
+潮干 < shiohi\ ;
+海魚 < kaigyo\ ;
+算数 < sansuu\ ;
+土俵 < dohyou\ ;
+土俗 < dozoku\ ;
+打球 < dakyuu\ ;
+鼻鏡 < bikyou\ ;
+授乳 < junyuu\ ;
+海驢 < ashika\ ;
+漫文 < manbun\ ;
+表土 < hyoudo\ ;
+国務 < kokumu\ ;
+我等 < warera\ ;
+挽回 < bankai\ ;
+空虚 < kuukyo\ ;
+土中 < dochuu\ ;
+所産 < shosan\ ;
+嫟 < jiyuku\ ;
+融点 < yuuten\ ;
+漢文 < kanbun\ ;
+手玉 < tedama\ ;
+喪章 < moshou\ ;
+団員 < dan''in\ ;
+手狭 < tezema\ ;
+国光 < kokkou\ ;
+銀鱗 < ginrin\ ;
+阿蘭陀 < oranda\ ;
+啓蒙 < keimou\ ;
+衆多 < shuuta\ ;
+税金 < zeikin\ ;
+黒鵐 < kuroji\ ;
+蠏座 < kaniza\ ;
+漁村 < gyoson\ ;
+海難 < kainan\ ;
+空荷 < karani\ ;
+四千 < yonsen\ ;
+四十 < yonjuu\ ;
+国会 < kokkai\ ;
+圷 < akutsu\ ;
+図体 < zuutai\ ;
+箱屋 < hakoya\ ;
+滅法 < meppou\ ;
+抵抗 < teikou\ ;
+濁世 < dakuse\ ;
+無慈悲 < mujihi\ ;
+齲蝕 < ushoku\ ;
+表具 < hyougu\ ;
+漁撈 < gyorou\ ;
+減耗 < genmou\ ;
+行司 < gyouji\ ;
+受話器 < juwaki\ ;
+窒素 < chisso\ ;
+鋭角 < eikaku\ ;
+秘録 < hiroku\ ;
+翻車魚 < manbou\ ;
+不出来 < fudeki\ ;
+衰亡 < suibou\ ;
+竜王 < ryuuou\ ;
+噴射 < funsha\ ;
+后 < kisaki\ ;
+問罪 < monzai\ ;
+雑魚寝 < zakone\ ;
+厠 < kawaya\ ;
+蛇腹 < jabara\ ;
+伊太利 < itarii\ ;
+手水 < temizu\ ;
+愛郷 < aikyou\ ;
+饂飩粉 < udonko\ ;
+手毬 < temari\ ;
+折折 < oriori\ ;
+湯玉 < yudama\ ;
+挙動 < kyodou\ ;
+流音 < ryuuon\ ;
+手段 < shudan\ ;
+流露 < ryuuro\ ;
+把捉 < hasoku\ ;
+流離 < ryuuri\ ;
+鼠賊 < sozoku\ ;
+甘海老 < amaebi\ ;
+挙兵 < kyohei\ ;
+温突 < ondoru\ ;
+手機 < tebata\ ;
+兜 < kabuto\ ;
+拷問 < goumon\ ;
+融朗 < yuurou\ ;
+麺類 < menrui\ ;
+減算 < genzan\ ;
+手業 < tewaza\ ;
+漸増 < zenzou\ ;
+海軍 < kaigun\ ;
+消費 < shouhi\ ;
+浪速 < naniwa\ ;
+銀鉱 < ginkou\ ;
+問答 < mondou\ ;
+吹鳴 < suimei\ ;
+筆才 < hissai\ ;
+銀鈴 < ginrei\ ;
+清純 < seijun\ ;
+筆戦 < hissen\ ;
+小馬鹿 < kobaka\ ;
+虚誕 < kyotan\ ;
+淋菌 < rinkin\ ;
+減税 < genzei\ ;
+策応 < sakuou\ ;
+空空 < kuukuu\ ;
+競歩 < kyouho\ ;
+温石 < onjaku\ ;
+虚言 < kyogen\ ;
+手柄 < tegara\ ;
+手枷 < tekase\ ;
+混線 < konsen\ ;
+仇 < kataki\ ;
+筆意 < hitsui\ ;
+手札 < tefuda\ ;
+御菓子 < okashi\ ;
+答弁 < touben\ ;
+洗顔 < sengan\ ;
+浜辺 < hamabe\ ;
+黒鉛 < kokuen\ ;
+満水 < mansui\ ;
+戸棚 < todana\ ;
+鼎談 < teidan\ ;
+湿気 < shikke\ ;
+我流 < garyuu\ ;
+悪風 < akufuu\ ;
+洗面 < senmen\ ;
+洋風 < youfuu\ ;
+空砲 < kuuhou\ ;
+潜像 < senzou\ ;
+愛読 < aidoku\ ;
+所望 < shomou\ ;
+所有 < shoyuu\ ;
+黒酒 < kuroki\ ;
+打撲 < daboku\ ;
+禅門 < zenmon\ ;
+打撃 < dageki\ ;
+三知土 < tataki\ ;
+洞門 < doumon\ ;
+吸飲 < kyuuin\ ;
+空目 < sorame\ ;
+湯水 < yumizu\ ;
+悪霊 < akurei\ ;
+手摺 < tesuri\ ;
+節会 < sechie\ ;
+我欲 < gayoku\ ;
+湯殿 < yudono\ ;
+端株 < hakabu\ ;
+湧水 < yuusui\ ;
+営業 < eigyou\ ;
+減産 < gensan\ ;
+賓位語 < hinigo\ ;
+手拭 < tefuki\ ;
+吹雪 < fubuki\ ;
+溺愛 < dekiai\ ;
+筋子 < sujiko\ ;
+鉄鋼 < tekkou\ ;
+悌順 < teijun\ ;
+洗錬 < senren\ ;
+満杯 < manpai\ ;
+薬餌 < yakuji\ ;
+福運 < fukuun\ ;
+摩莫枳 < mamaki\ ;
+薫風 < kunpuu\ ;
+録画 < rokuga\ ;
+漆器 < shikki\ ;
+浄財 < jouzai\ ;
+虎落 < mogari\ ;
+温灸 < onkyuu\ ;
+悪銭 < akusen\ ;
+名香 < meikou\ ;
+和訳 < wayaku\ ;
+涙腺 < ruisen\ ;
+抱卵 < houran\ ;
+払底 < futtei\ ;
+洋銀 < yougin\ ;
+鎮撫 < chinbu\ ;
+喪服 < mofuku\ ;
+和親 < washin\ ;
+手役 < teyaku\ ;
+銀製 < ginsei\ ;
+黙許 < mokkyo\ ;
+手形 < tegata\ ;
+打席 < daseki\ ;
+薫陶 < kuntou\ ;
+手引 < tebiki\ ;
+渾沌 < konton\ ;
+演劇 < engeki\ ;
+禁輸 < kin''yu\ ;
+浮薄 < fuhaku\ ;
+同類 < dourui\ ;
+洋酒 < youshu\ ;
+手帳 < techou\ ;
+成敗 < seibai\ ;
+虚聞 < kyobun\ ;
+鈍間 < noroma\ ;
+針魚 < hariyo\ ;
+波間 < namima\ ;
+鼓膜 < komaku\ ;
+憫然 < binzen\ ;
+悪道 < akudou\ ;
+波長 < hachou\ ;
+鼓腹 < kofuku\ ;
+法難 < hounan\ ;
+沸騰 < futtou\ ;
+笠子 < kasago\ ;
+活計 < kakkei\ ;
+滞在 < taizai\ ;
+渡渉 < toshou\ ;
+金魚 < kingyo\ ;
+銘茶 < meicha\ ;
+私蔵 < shizou\ ;
+味覚 < mikaku\ ;
+龕灯 < gandou\ ;
+黴菌 < baikin\ ;
+抜剣 < bakken\ ;
+善根 < zenkon\ ;
+名門 < meimon\ ;
+空港 < kuukou\ ;
+錘状 < suijou\ ;
+溶媒 < youbai\ ;
+沿革 < enkaku\ ;
+小百合 < sayuri\ ;
+端役 < hayaku\ ;
+呉越 < goetsu\ ;
+混然 < konzen\ ;
+筋合 < sujiai\ ;
+減法 < genpou\ ;
+空洞 < kuudou\ ;
+源平 < genpei\ ;
+名鑑 < meikan\ ;
+野駒 < nogoma\ ;
+浮腫 < mukumi\ ;
+麻裏 < asaura\ ;
+種痘 < shutou\ ;
+鈍重 < donjuu\ ;
+所定 < shotei\ ;
+涙管 < ruikan\ ;
+所存 < shozon\ ;
+泥酔 < deisui\ ;
+減殺 < gensai\ ;
+減段 < gentan\ ;
+鎮座 < chinza\ ;
+合鍵 < aikagi\ ;
+立憲 < rikken\ ;
+礼金 < reikin\ ;
+満干 < mankan\ ;
+禽舎 < kinsha\ ;
+告諭 < kokuyu\ ;
+空欄 < kuuran\ ;
+没頭 < bottou\ ;
+句集 < kushuu\ ;
+手塩 < teshio\ ;
+湿布 < shippu\ ;
+端山 < hayama\ ;
+竜座 < ryuuza\ ;
+鉄製 < tessei\ ;
+受領 < juryou\ ;
+渇水 < kassui\ ;
+烏帽子 < eboshi\ ;
+合金 < goukin\ ;
+混淆 < konkou\ ;
+品等 < hintou\ ;
+悪言 < akugen\ ;
+喜悦 < kietsu\ ;
+鼓笛 < koteki\ ;
+麻薬 < mayaku\ ;
+端子 < tanshi\ ;
+虚礼 < kyorei\ ;
+融合 < yuugou\ ;
+同邦 < douhou\ ;
+懇書 < konsho\ ;
+湾岸 < wangan\ ;
+満山 < manzan\ ;
+才噸 < saiton\ ;
+稲熱 < imochi\ ;
+鎮守 < chinju\ ;
+品種 < hinshu\ ;
+黄菊 < kigiku\ ;
+愚策 < gusaku\ ;
+各部 < kakubu\ ;
+祖父母 < sofubo\ ;
+波路 < namiji\ ;
+反面 < hanmen\ ;
+十六夜 < izayoi\ ;
+所在 < shozai\ ;
+悪血 < oketsu\ ;
+慨然 < gaizen\ ;
+競売 < keibai\ ;
+藻草 < mogusa\ ;
+移着 < ichaku\ ;
+祝詞 < norito\ ;
+同輩 < douhai\ ;
+急須 < kyuusu\ ;
+秘策 < hisaku\ ;
+消磨 < shouma\ ;
+憎気 < nikuge\ ;
+同車 < dousha\ ;
+湖心 < koshin\ ;
+種火 < tanebi\ ;
+手品 < tejina\ ;
+我家 < wagaya\ ;
+空曹 < kuusou\ ;
+迂回路 < ukairo\ ;
+才名 < saimei\ ;
+社賓 < shahin\ ;
+液状 < ekijou\ ;
+襤褸家 < boroya\ ;
+恵贈 < keizou\ ;
+礼賛 < raisan\ ;
+穂波 < honami\ ;
+鏤刻 < rukoku\ ;
+金銀 < kingin\ ;
+銀経 < ginkei\ ;
+和綴 < watoji\ ;
+青紫蘇 < aojiso\ ;
+緑啄木鳥 < aogera\ ;
+銀糸 < ginshi\ ;
+淡水 < tansui\ ;
+空文 < kuubun\ ;
+吟詠 < gin''ei\ ;
+銀粉 < ginpun\ ;
+懦弱 < dajaku\ ;
+恭賀 < kyouga\ ;
+卵黄 < ran''ou\ ;
+満塁 < manrui\ ;
+恩賞 < onshou\ ;
+水黽 < amenbo\ ;
+哀痛 < aitsuu\ ;
+麦芽 < bakuga\ ;
+台車 < daisha\ ;
+品番 < hinban\ ;
+手写 < shusha\ ;
+法論 < houron\ ;
+手先 < tesaki\ ;
+恩讐 < onshuu\ ;
+原音 < gen''on\ ;
+空挺 < kuutei\ ;
+鈍行 < donkou\ ;
+手傷 < tekizu\ ;
+空拳 < kuuken\ ;
+針路 < shinro\ ;
+同訓 < doukun\ ;
+金輪 < kanawa\ ;
+沢辺 < sawabe\ ;
+鼈甲 < bekkou\ ;
+空手 < karate\ ;
+礼装 < reisou\ ;
+空所 < kuusho\ ;
+念願 < nengan\ ;
+合計 < goukei\ ;
+麻織 < asaori\ ;
+呪縛 < jubaku\ ;
+空戦 < kuusen\ ;
+慨歎 < gaitan\ ;
+念頭 < nentou\ ;
+科白 < serifu\ ;
+薮蚊 < yabuka\ ;
+満員 < man''in\ ;
+叛軍 < hangun\ ;
+黄粉 < kinako\ ;
+鎖国 < sakoku\ ;
+愁眉 < shuubi\ ;
+麻絲 < asaito\ ;
+才人 < saijin\ ;
+同衾 < doukin\ ;
+立地 < ritchi\ ;
+黒穂 < kurobo\ ;
+情緒 < joucho\ ;
+沃野 < yokuya\ ;
+愛猫 < aibyou\ ;
+醸造 < jouzou\ ;
+湾口 < wankou\ ;
+銃眼 < juugan\ ;
+章句 < shouku\ ;
+憶念 < okunen\ ;
+戦前 < senzen\ ;
+鸞輿 < ran''yo\ ;
+憧憬 < doukei\ ;
+液汁 < ekijuu\ ;
+憤懣 < funman\ ;
+可読 < kadoku\ ;
+懸垂 < kensui\ ;
+税法 < zeihou\ ;
+厳重 < genjuu\ ;
+銀盤 < ginban\ ;
+友軍 < yuugun\ ;
+和睦 < waboku\ ;
+銀盃 < ginpai\ ;
+憤慨 < fungai\ ;
+鉄線 < tessen\ ;
+鼻毛 < hanage\ ;
+口調 < kuchou\ ;
+端倪 < tangei\ ;
+金談 < kindan\ ;
+古註 < kochuu\ ;
+流石 < sasuga\ ;
+鉄粉 < teppun\ ;
+麦粉 < mugiko\ ;
+深手 < fukade\ ;
+黒目 < kurome\ ;
+憐憫 < renbin\ ;
+原野 < gen''ya\ ;
+受諾 < judaku\ ;
+気鬱 < kiutsu\ ;
+薬舗 < yakuho\ ;
+名著 < meicho\ ;
+鉄管 < tekkan\ ;
+重言 < juugon\ ;
+氷霧 < hyoumu\ ;
+金襴 < kinran\ ;
+水面 < minomo\ ;
+禍福 < kafuku\ ;
+氷雨 < hisame\ ;
+鉄筋 < tekkin\ ;
+酔顔 < suigan\ ;
+合著 < goucho\ ;
+禽獣 < kinjuu\ ;
+水雷 < suirai\ ;
+受註 < juchuu\ ;
+水難 < suinan\ ;
+君臨 < kunrin\ ;
+受託 < jutaku\ ;
+戦乱 < senran\ ;
+不具合 < fuguai\ ;
+問屋 < ton''ya\ ;
+鉄窓 < tessou\ ;
+慧敏 < keibin\ ;
+蛇座 < hebiza\ ;
+湯元 < yumoto\ ;
+鼻梁 < biryou\ ;
+反論 < hanron\ ;
+喜劇 < kigeki\ ;
+憂憤 < yuufun\ ;
+感涙 < kanrui\ ;
+穴居 < kekkyo\ ;
+立冬 < rittou\ ;
+憂慮 < yuuryo\ ;
+和独 < wadoku\ ;
+金蝿 < kinbae\ ;
+水門 < suimon\ ;
+善哉 < zenzai\ ;
+単音 < tan''on\ ;
+鉛白 < enpaku\ ;
+参謀 < sanbou\ ;
+憂悶 < yuumon\ ;
+鼻木 < hanagi\ ;
+和牛 < wagyuu\ ;
+薄葉 < usuyou\ ;
+唐戸 < karado\ ;
+合致 < gatchi\ ;
+南面 < nanmen\ ;
+海浜 < kaihin\ ;
+民風 < minpuu\ ;
+悪税 < akuzei\ ;
+吹管 < suikan\ ;
+鉄砲 < teppou\ ;
+各自 < kakuji\ ;
+麻疹 < mashin\ ;
+喧伝 < kenden\ ;
+薄茶 < usucha\ ;
+南隅 < nanguu\ ;
+悪神 < akujin\ ;
+立体 < rittai\ ;
+半音 < han''on\ ;
+南限 < nangen\ ;
+突堤 < tottei\ ;
+喪中 < mochuu\ ;
+減塩 < gen''en\ ;
+渥地 < akuchi\ ;
+淡彩 < tansai\ ;
+海水 < kaisui\ ;
+浮流 < furyuu\ ;
+金蔵 < kinzou\ ;
+愛欲 < aiyoku\ ;
+厳談 < gendan\ ;
+薄色 < usuiro\ ;
+祭礼 < sairei\ ;
+知恵歯 < chieba\ ;
+虚根 < kyokon\ ;
+微震 < bishin\ ;
+酩酊 < meitei\ ;
+同罪 < douzai\ ;
+浮沈 < fuchin\ ;
+水銀 < suigin\ ;
+御題 < gyodai\ ;
+哀楽 < airaku\ ;
+空域 < kuuiki\ ;
+銀漢 < ginkan\ ;
+深山 < miyama\ ;
+野蒜 < nobiru\ ;
+活版 < kappan\ ;
+気長 < kinaga\ ;
+空地 < akichi\ ;
+愛楽 < aigyou\ ;
+野菊 < nogiku\ ;
+民間 < minkan\ ;
+悪相 < akusou\ ;
+御霊 < mitama\ ;
+法網 < houmou\ ;
+悲痛 < hitsuu\ ;
+麦田 < mugita\ ;
+水郷 < suigou\ ;
+合繊 < gousen\ ;
+不起訴 < fukiso\ ;
+慢性 < mansei\ ;
+向米 < koubei\ ;
+銀泥 < gindei\ ;
+虚数 < kyosuu\ ;
+悪疫 < akueki\ ;
+水辺 < mizube\ ;
+稟性 < hinsei\ ;
+鍛冶 < tan''ya\ ;
+悪用 < akuyou\ ;
+愉楽 < yuraku\ ;
+無医村 < muison\ ;
+水車 < suisha\ ;
+虎斑 < torafu\ ;
+後難 < kounan\ ;
+空名 < kuumei\ ;
+錦地 < kinchi\ ;
+鼻息 < bisoku\ ;
+悪球 < akkyuu\ ;
+合算 < gassan\ ;
+海月 < kurage\ ;
+唐子 < karako\ ;
+流派 < ryuuha\ ;
+薄紗 < hakusa\ ;
+混在 < konzai\ ;
+同窓 < dousou\ ;
+銘板 < meiban\ ;
+油絵 < aburae\ ;
+半金 < hankin\ ;
+毛頭 < moutou\ ;
+同種 < doushu\ ;
+重罪 < juuzai\ ;
+酢豚 < subuta\ ;
+千鈞 < senkin\ ;
+空前 < kuuzen\ ;
+応諾 < oudaku\ ;
+減免 < genmen\ ;
+民選 < minsen\ ;
+空冷 < kuurei\ ;
+惚気 < noroke\ ;
+和楽 < waraku\ ;
+怪腕 < kaiwan\ ;
+合祭 < gousai\ ;
+商務 < shoumu\ ;
+悪熱 < anetsu\ ;
+黄水 < kimizu\ ;
+口絵 < kuchie\ ;
+御酌 < oshaku\ ;
+気軽 < kigaru\ ;
+果樹園 < kajuen\ ;
+海損 < kaison\ ;
+慮外 < ryogai\ ;
+酒豪 < shugou\ ;
+半輪 < hanrin\ ;
+金粉 < kinpun\ ;
+当駅 < toueki\ ;
+御遊 < gyoyuu\ ;
+法相 < hossou\ ;
+深味 < fukami\ ;
+原著 < gencho\ ;
+麦湯 < mugiyu\ ;
+同盟 < doumei\ ;
+洪水 < kouzui\ ;
+哀愁 < aishuu\ ;
+吉相 < kissou\ ;
+空似 < sorani\ ;
+和服 < wafuku\ ;
+御転婆 < otenba\ ;
+薬理 < yakuri\ ;
+後金 < atokin\ ;
+鹵獲 < rokaku\ ;
+命根 < meikon\ ;
+錠前 < joumae\ ;
+名産 < meisan\ ;
+愛息 < aisoku\ ;
+泥状 < deijou\ ;
+必見 < hikken\ ;
+反米 < hanbei\ ;
+破鏡 < hakyou\ ;
+重税 < juuzei\ ;
+酢蛸 < sudako\ ;
+叢祠 < hokora\ ;
+従軍 < juugun\ ;
+毛鈎 < kebari\ ;
+部長 < buchou\ ;
+惨敗 < zanpai\ ;
+悪法 < akuhou\ ;
+右目 < migime\ ;
+必衰 < hissui\ ;
+歯黒 < haguro\ ;
+民論 < minron\ ;
+参籠 < sanrou\ ;
+悪水 < akusui\ ;
+愉悦 < yuetsu\ ;
+針目 < harime\ ;
+北部 < hokubu\ ;
+悪気 < warugi\ ;
+矢鱈 < yatara\ ;
+礎石 < soseki\ ;
+浴後 < yokugo\ ;
+卓見 < takken\ ;
+命数 < meisuu\ ;
+残骸 < zangai\ ;
+風呂屋 < furoya\ ;
+泥炭 < deitan\ ;
+名状 < meijou\ ;
+葛餡 < kuzuan\ ;
+沼田 < numada\ ;
+祭殿 < saiden\ ;
+砲金 < houkin\ ;
+古着 < furugi\ ;
+銀扇 < ginsen\ ;
+重石 < omoshi\ ;
+強音 < kyouon\ ;
+汚職 < oshoku\ ;
+混乱 < konran\ ;
+金目 < kaneme\ ;
+意味論 < imiron\ ;
+研鑽 < kensan\ ;
+弱音 < yowane\ ;
+残飯 < zanpan\ ;
+水葬 < suisou\ ;
+半裁 < hansai\ ;
+唯一 < yuitsu\ ;
+無邪気 < mujaki\ ;
+御託 < gotaku\ ;
+微衷 < bichuu\ ;
+半衿 < haneri\ ;
+虚妄 < kyomou\ ;
+決算 < kessan\ ;
+化身 < keshin\ ;
+恬然 < tenzen\ ;
+薬湯 < yakuyu\ ;
+汽笛 < kiteki\ ;
+涼味 < ryoumi\ ;
+水菜 < mizuna\ ;
+海岸 < kaigan\ ;
+悪業 < akugou\ ;
+鉄板 < teppan\ ;
+蓴菜 < junsai\ ;
+含水 < gansui\ ;
+影身 < kagemi\ ;
+毛足 < keashi\ ;
+歯髄 < shizui\ ;
+落馬 < rakuba\ ;
+双眼 < sougan\ ;
+反省 < hansei\ ;
+注油 < chuuyu\ ;
+郷軍 < gougun\ ;
+沈砂 < chinsa\ ;
+勧銀 < kangin\ ;
+医術 < ijutsu\ ;
+風呂場 < furoba\ ;
+感奮 < kanpun\ ;
+涙嚢 < ruinou\ ;
+卵胞 < ranhou\ ;
+野球 < yakyuu\ ;
+呉服 < gofuku\ ;
+神楽 < kagura\ ;
+忠義 < chuugi\ ;
+水腫 < suishu\ ;
+藍染 < aizome\ ;
+悪書 < akusho\ ;
+洋本 < youhon\ ;
+君民 < kunmin\ ;
+葉陰 < hakage\ ;
+阿蘇山 < asosan\ ;
+沸点 < futten\ ;
+恬淡 < tentan\ ;
+黙座 < mokuza\ ;
+液剤 < ekizai\ ;
+殿軍 < dengun\ ;
+弊風 < heifuu\ ;
+金牌 < kinpai\ ;
+銅山 < douzan\ ;
+海外 < kaigai\ ;
+郵貯 < yuucho\ ;
+野牛 < yagyuu\ ;
+活性 < kassei\ ;
+社殿 < shaden\ ;
+重版 < juuhan\ ;
+悪文 < akubun\ ;
+御家芸 < oiegei\ ;
+配膳 < haizen\ ;
+銀山 < ginzan\ ;
+忍耐 < nintai\ ;
+悪政 < akusei\ ;
+祭文 < saimon\ ;
+各派 < kakuha\ ;
+遺骨 < ikotsu\ ;
+黒巾 < kurogo\ ;
+恩沢 < ontaku\ ;
+海域 < kaiiki\ ;
+愛国 < aikoku\ ;
+鉄拳 < tekken\ ;
+名残 < nagori\ ;
+虚名 < kyomei\ ;
+弾道 < dandou\ ;
+民芸 < mingei\ ;
+哺乳 < honyuu\ ;
+台湾 < taiwan\ ;
+永続 < eizoku\ ;
+正面 < matomo\ ;
+重灰 < juukai\ ;
+危絵 < abunae\ ;
+恥毛 < chimou\ ;
+助長 < jochou\ ;
+液体 < ekitai\ ;
+鈍根 < donkon\ ;
+情念 < jounen\ ;
+残金 < zankin\ ;
+毬藻 < marimo\ ;
+薫染 < kunsen\ ;
+毛蟹 < kegani\ ;
+品名 < hinmei\ ;
+悪投 < akutou\ ;
+原盤 < genban\ ;
+動輪 < dourin\ ;
+悪才 < akusai\ ;
+治水 < chisui\ ;
+黒子 < hokuro\ ;
+勇邁 < yuumai\ ;
+悲愁 < hishuu\ ;
+殊遇 < shuguu\ ;
+悪態 < akutai\ ;
+古流 < koryuu\ ;
+十能 < juunou\ ;
+銀塊 < ginkai\ ;
+藻屑 < mokuzu\ ;
+同根 < doukon\ ;
+黙契 < mokkei\ ;
+重液 < juueki\ ;
+毒蛾 < dokuga\ ;
+金泥 < kondei\ ;
+池畔 < chihan\ ;
+同村 < douson\ ;
+名札 < nafuda\ ;
+単純 < tanjun\ ;
+大部屋 < oobeya\ ;
+蘊奥 < un''nou\ ;
+快眠 < kaimin\ ;
+悪念 < akunen\ ;
+同朋 < doubou\ ;
+合板 < gouban\ ;
+金気 < kanake\ ;
+秘匿 < hitoku\ ;
+福寿 < fukuju\ ;
+合本 < gappon\ ;
+遭難 < sounan\ ;
+重水 < juusui\ ;
+水禽 < suikin\ ;
+虚伝 < kyoden\ ;
+南米 < nanbei\ ;
+鶏群 < keigun\ ;
+堕胎医 < dataii\ ;
+単簡 < tankan\ ;
+悪弊 < akuhei\ ;
+復縁 < fukuen\ ;
+黽勉 < binben\ ;
+禅尼 < zen''ni\ ;
+同断 < doudan\ ;
+取水 < shusui\ ;
+浄域 < jouiki\ ;
+酒税 < shuzei\ ;
+同文 < doubun\ ;
+勝訴 < shouso\ ;
+同数 < dousuu\ ;
+従者 < juusha\ ;
+合方 < aikata\ ;
+原版 < genpan\ ;
+薄板 < usuita\ ;
+南端 < nantan\ ;
+強談 < goudan\ ;
+秀句 < shuuku\ ;
+古楽 < kogaku\ ;
+鈍才 < donsai\ ;
+藻塩 < moshio\ ;
+反毛 < hanmou\ ;
+水着 < mizugi\ ;
+碑石 < hiseki\ ;
+加速 < kasoku\ ;
+汚物 < obutsu\ ;
+台本 < daihon\ ;
+鶏糞 < keifun\ ;
+水盤 < suiban\ ;
+千篇 < senpen\ ;
+鈍感 < donkan\ ;
+毛脛 < kezune\ ;
+鳳輦 < houren\ ;
+不用意 < fuyoui\ ;
+久慈目 < kujime\ ;
+建造 < kenzou\ ;
+刺魚 < togeuo\ ;
+部落 < buraku\ ;
+号数 < gousuu\ ;
+銃剣 < juuken\ ;
+参殿 < sanden\ ;
+水疱 < suihou\ ;
+右文 < yuubun\ ;
+古木 < koboku\ ;
+君恩 < kun''on\ ;
+大御代 < oomiyo\ ;
+微禄 < biroku\ ;
+碁石 < goishi\ ;
+水田 < suiden\ ;
+底魚 < sokouo\ ;
+秘中 < hichuu\ ;
+殺菌 < sakkin\ ;
+銘仙 < meisen\ ;
+弱行 < jakkou\ ;
+呼名 < yobina\ ;
+決水 < kessui\ ;
+同憂 < douyuu\ ;
+銅像 < douzou\ ;
+歓迎 < kangei\ ;
+鉄塔 < tettou\ ;
+同感 < doukan\ ;
+浪人 < rounin\ ;
+剔除 < tekijo\ ;
+没書 < bossho\ ;
+鷹派 < takaha\ ;
+前電 < zenden\ ;
+想像 < souzou\ ;
+取材 < shuzai\ ;
+蘭人 < ranjin\ ;
+菌類 < kinrui\ ;
+神宮 < jinguu\ ;
+卵状 < ranjou\ ;
+悪天 < akuten\ ;
+遭遇 < souguu\ ;
+削除 < sakujo\ ;
+半睡 < hansui\ ;
+吾妹 < wagimo\ ;
+右折 < usetsu\ ;
+原油 < gen''yu\ ;
+歳計 < saikei\ ;
+性根 < shoune\ ;
+葛藤 < kattou\ ;
+悪場 < waruba\ ;
+右手 < migite\ ;
+叉木 < matagi\ ;
+歩調 < hochou\ ;
+原民 < genmin\ ;
+名店 < meiten\ ;
+券面 < kenmen\ ;
+干鱈 < hidara\ ;
+合弁 < gouben\ ;
+弁論 < benron\ ;
+流儀 < ryuugi\ ;
+水煮 < mizuni\ ;
+座長 < zachou\ ;
+毒素 < dokuso\ ;
+底面 < teimen\ ;
+彼等 < karera\ ;
+厘毛 < rinmou\ ;
+去来 < kyorai\ ;
+弁解 < benkai\ ;
+運針 < unshin\ ;
+古手 < furute\ ;
+毛筋 < kesuji\ ;
+社屋 < shaoku\ ;
+可惜 < attara\ ;
+遊金 < yuukin\ ;
+君子 < kunshi\ ;
+利鞘 < rizaya\ ;
+怨敵 < onteki\ ;
+有意義 < yuuigi\ ;
+野薔薇 < nobara\ ;
+恋愛 < ren''ai\ ;
+欠配 < keppai\ ;
+命令 < meirei\ ;
+名山 < meizan\ ;
+真鴨 < magamo\ ;
+連関 < renkan\ ;
+汀渚 < teisho\ ;
+御目見得 < omemie\ ;
+同居 < doukyo\ ;
+遅配 < chihai\ ;
+梅雨期 < baiuki\ ;
+恵存 < keizon\ ;
+同封 < doufuu\ ;
+台形 < daikei\ ;
+恋恋 < renren\ ;
+遠足 < ensoku\ ;
+前金 < maekin\ ;
+剥身 < mukimi\ ;
+水源 < suigen\ ;
+送風 < soufuu\ ;
+遺言 < yuigon\ ;
+息子 < musuko\ ;
+悪名 < akumei\ ;
+原案 < gen''an\ ;
+祖国 < sokoku\ ;
+蔵書 < zousho\ ;
+悪友 < akuyuu\ ;
+幽霊 < yuurei\ ;
+悲劇 < higeki\ ;
+座金 < zagane\ ;
+反戦 < hansen\ ;
+度量 < doryou\ ;
+野心 < yashin\ ;
+勃興 < bokkou\ ;
+化石 < kaseki\ ;
+社外 < shagai\ ;
+古廟 < kobyou\ ;
+広間 < hiroma\ ;
+氷河 < hyouga\ ;
+平面 < heimen\ ;
+吻合 < fungou\ ;
+分類 < bunrui\ ;
+後生 < goshou\ ;
+快楽 < keraku\ ;
+薬園 < yakuen\ ;
+息女 < sokujo\ ;
+法外 < hougai\ ;
+鉄傘 < tessan\ ;
+幽閉 < yuuhei\ ;
+忍法 < ninpou\ ;
+同大 < doudai\ ;
+役目 < yakume\ ;
+著者 < chosha\ ;
+名声 < meisei\ ;
+古巣 < furusu\ ;
+水気 < mizuke\ ;
+年限 < nengen\ ;
+沢庵 < takuan\ ;
+毒矢 < dokuya\ ;
+合奏 < gassou\ ;
+毛皮 < kegawa\ ;
+南溟 < nanmei\ ;
+目鼻 < mehana\ ;
+都督 < totoku\ ;
+南満 < nanman\ ;
+運賃 < unchin\ ;
+原文 < genbun\ ;
+麦価 < bakuka\ ;
+禁令 < kinrei\ ;
+藩主 < hanshu\ ;
+知育 < chiiku\ ;
+効能 < kounou\ ;
+分際 < bunzai\ ;
+遁走 < tonsou\ ;
+吉報 < kippou\ ;
+怠慢 < taiman\ ;
+造酒 < zoushu\ ;
+分院 < bun''in\ ;
+分限 < bungen\ ;
+思慮 < shiryo\ ;
+凱風 < gaifuu\ ;
+怨念 < on''nen\ ;
+化生 < keshou\ ;
+金山 < kinzan\ ;
+悟入 < gonyuu\ ;
+逸足 < issoku\ ;
+砥石 < toishi\ ;
+古家 < furuie\ ;
+薬味 < yakumi\ ;
+眼鏡 < megane\ ;
+真青 < massao\ ;
+半減 < hangen\ ;
+号外 < gougai\ ;
+達観 < takkan\ ;
+出際 < degiwa\ ;
+収差 < shuusa\ ;
+決意 < ketsui\ ;
+底辺 < teihen\ ;
+君命 < kunmei\ ;
+野宿 < nojuku\ ;
+短編 < tanpen\ ;
+葛粉 < kuzuko\ ;
+通運 < tsuuun\ ;
+薄塩 < usujio\ ;
+悪人 < akunin\ ;
+連載 < rensai\ ;
+別邸 < bettei\ ;
+波及 < hakyuu\ ;
+原拠 < genkyo\ ;
+弩級 < dokyuu\ ;
+毛玉 < kedama\ ;
+里子 < satogo\ ;
+社命 < shamei\ ;
+歯肉 < haniku\ ;
+荷鞍 < nigura\ ;
+石粉 < ishiko\ ;
+悩乱 < nouran\ ;
+厄日 < yakubi\ ;
+南欧 < nan''ou\ ;
+耳鼻科 < jibika\ ;
+遊覧 < yuuran\ ;
+遮蔽 < shahei\ ;
+薬効 < yakkou\ ;
+名品 < meihin\ ;
+社友 < shayuu\ ;
+郡県 < gunken\ ;
+重婚 < juukon\ ;
+送金 < soukin\ ;
+厚手 < atsude\ ;
+幕間 < makuai\ ;
+年金 < nenkin\ ;
+反射 < hansha\ ;
+反対 < hantai\ ;
+名吟 < meigin\ ;
+目高 < medaka\ ;
+返電 < henden\ ;
+鈍刀 < dontou\ ;
+破獄 < hagoku\ ;
+油圧 < yuatsu\ ;
+卯月 < udzuki\ ;
+水木 < mizuki\ ;
+砂礫 < sareki\ ;
+怒張 < dochou\ ;
+画架座 < gakaza\ ;
+分銅 < fundou\ ;
+不安気 < fuange\ ;
+逸話 < itsuwa\ ;
+草魚 < sougyo\ ;
+即時 < sokuji\ ;
+弁者 < bensha\ ;
+通路 < tsuuro\ ;
+蓮根 < renkon\ ;
+合同 < goudou\ ;
+近隣 < kinrin\ ;
+大出来 < oodeki\ ;
+重変 < juuhen\ ;
+風邪気 < kazeke\ ;
+荒馬 < arauma\ ;
+快挙 < kaikyo\ ;
+分野 < bun''ya\ ;
+酒杯 < shuhai\ ;
+同勢 < douzei\ ;
+気楽 < kiraku\ ;
+民権 < minken\ ;
+刃針 < habari\ ;
+武器庫 < bukiko\ ;
+参宮 < sanguu\ ;
+分配 < bunpai\ ;
+遺脱 < idatsu\ ;
+述 < jutsu\ ;
+必 < hitsu\ ;
+辻 < tsuji\ ;
+徹 < tetsu\ ;
+瞥 < betsu\ ;
+後 < nochi\ ;
+律 < ritsu\ ;
+着 < chaku\ ;
+式 < shiki\ ;
+皺 < shiwa\ ;
+躅 < choku\ ;
+百 < hyaku\ ;
+白 < shiro\ ;
+發 < hotsu\ ;
+発 < hatsu\ ;
+幸 < sachi\ ;
+年 < toshi\ ;
+癪 < shaku\ ;
+巴 < tomoe\ ;
+病 < yamai\ ;
+略 < ryaku\ ;
+畜 < chiku\ ;
+町 < machi\ ;
+男 < otoko\ ;
+由 < yoshi\ ;
+島 < shima\ ;
+質 < tachi\ ;
+岸 < kishi\ ;
+屈 < kutsu\ ;
+尻 < shiri\ ;
+實 < jitsu\ ;
+察 < satsu\ ;
+密 < mitsu\ ;
+宴 < utage\ ;
+客 < kyaku\ ;
+猾 < katsu\ ;
+説 < setsu\ ;
+詰 < kitsu\ ;
+爺 < jijii\ ;
+爪 < tsume\ ;
+訣 < ketsu\ ;
+觸 < shoku\ ;
+角 < tsuno\ ;
+妻 < tsuma\ ;
+熱 < netsu\ ;
+西 < nishi\ ;
+奴 < yatsu\ ;
+奪 < datsu\ ;
+夏 < natsu\ ;
+烈 < retsu\ ;
+袷 < awase\ ;
+炎 < honoo\ ;
+境 < sakai\ ;
+塵 < chiri\ ;
+塚 < tsuka\ ;
+基 < motoi\ ;
+埒 < rachi\ ;
+齢 < yowai\ ;
+鼾 < ibiki\ ;
+蜂 < hachi\ ;
+黐 < mochi\ ;
+滅 < metsu\ ;
+蚕 < kaiko\ ;
+鹿 < shika\ ;
+虫 < mushi\ ;
+虞 < osore\ ;
+噂 < uwasa\ ;
+淵 < fuchi\ ;
+鷲 < washi\ ;
+淑 < shuku\ ;
+鶴 < tsuru\ ;
+喇 < ratsu\ ;
+唾 < tsuba\ ;
+泉 < izumi\ ;
+油 < abura\ ;
+没 < botsu\ ;
+咄 < totsu\ ;
+汁 < tsuyu\ ;
+鰌 < dojou\ ;
+吉 < kichi\ ;
+口 < kuchi\ ;
+単 < hitoe\ ;
+卒 < sotsu\ ;
+次 < tsugi\ ;
+櫛 < kushi\ ;
+芝 < shiba\ ;
+力 < ryoku\ ;
+艶 < tsuya\ ;
+橋 < hashi\ ;
+樫 < kashi\ ;
+舌 < shita\ ;
+刃 < yaiba\ ;
+腰 < koshi\ ;
+兎 < usagi\ ;
+兀 < kotsu\ ;
+脈 < myaku\ ;
+飯 < meshi\ ;
+梨 < nashi\ ;
+梢 < kozue\ ;
+梓 < azusa\ ;
+額 < hitai\ ;
+頁 < peiji\ ;
+翁 < okina\ ;
+鞭 < muchi\ ;
+鞄 < kaban\ ;
+松 < matsu\ ;
+罰 < batsu\ ;
+罪 < tsumi\ ;
+佛 < butsu\ ;
+位 < kurai\ ;
+伸 < noshi\ ;
+霰 < arare\ ;
+霜 < shimo\ ;
+月 < tsuki\ ;
+曲 < kyoku\ ;
+雜 < zatsu\ ;
+仙 < sento\ ;
+雇 < yatoi\ ;
+乾 < hoshi\ ;
+主 < nushi\ ;
+綱 < tsuna\ ;
+絶 < zetsu\ ;
+終 < owari\ ;
+操 < misao\ ;
+節 < bushi\ ;
+箒 < houki\ ;
+答 < kotae\ ;
+拂 < futsu\ ;
+戦 < ikusa\ ;
+道 < michi\ ;
+逹 < tatsu\ ;
+逆 < gyaku\ ;
+瞽者 < kosha\ ;
+名前 < namae\ ;
+帰順 < kijun\ ;
+座視 < zashi\ ;
+快打 < kaida\ ;
+送辞 < souji\ ;
+名利 < meiri\ ;
+眉間 < miken\ ;
+磁性 < jisei\ ;
+薬価 < yakka\ ;
+砲煙 < houen\ ;
+礼儀 < reigi\ ;
+法具 < hougu\ ;
+吏党 < ritou\ ;
+目顔 < megao\ ;
+碑文 < hibun\ ;
+連語 < rengo\ ;
+重囲 < choui\ ;
+沮喪 < sosou\ ;
+遺習 < ishuu\ ;
+選者 < senja\ ;
+歌聖 < kasei\ ;
+造語 < zougo\ ;
+砲火 < houka\ ;
+蒸気 < jouki\ ;
+怪奇 < kaiki\ ;
+連記 < renki\ ;
+重器 < juuki\ ;
+加糖 < katou\ ;
+恩典 < onten\ ;
+序論 < joron\ ;
+毅然 < kizen\ ;
+制覇 < seiha\ ;
+歎美 < tanbi\ ;
+退路 < tairo\ ;
+応手 < oushu\ ;
+速記 < sokki\ ;
+波乱 < haran\ ;
+応戦 < ousen\ ;
+連覇 < renpa\ ;
+怨声 < ensei\ ;
+油単 < yutan\ ;
+序詞 < joshi\ ;
+医業 < igyou\ ;
+序言 < jogen\ ;
+忘我 < bouga\ ;
+荷重 < kajuu\ ;
+区検 < kuken\ ;
+南斗 < nanto\ ;
+沽券 < koken\ ;
+半期 < hanki\ ;
+同価 < douka\ ;
+動画 < douga\ ;
+河南 < kanan\ ;
+薄刃 < usuba\ ;
+加算 < kasan\ ;
+年賦 < nenpu\ ;
+口味 < koumi\ ;
+迷路 < meiro\ ;
+油剤 < yuzai\ ;
+年賀 < nenga\ ;
+可動 < kadou\ ;
+年貢 < nengu\ ;
+御株 < okabu\ ;
+厨子 < zushi\ ;
+別記 < bekki\ ;
+吏人 < rijin\ ;
+各個 < kakko\ ;
+邪知 < jachi\ ;
+古参 < kosan\ ;
+法事 < houji\ ;
+蕃夷 < ban''i\ ;
+重味 < omomi\ ;
+樹齢 < jurei\ ;
+千木 < chigi\ ;
+恵与 < keiyo\ ;
+酸度 < sando\ ;
+励磁 < reiji\ ;
+剣舞 < kenbu\ ;
+法主 < hossu\ ;
+母港 < bokou\ ;
+野合 < yagou\ ;
+同事 < douji\ ;
+可分 < kabun\ ;
+野史 < yashi\ ;
+助祭 < josai\ ;
+各位 < kakui\ ;
+御札 < ofuda\ ;
+過般 < kahan\ ;
+分賦 < bunpu\ ;
+種々 < shuju\ ;
+忘恩 < bouon\ ;
+待機 < taiki\ ;
+恩人 < onjin\ ;
+忌憚 < kitan\ ;
+運航 < unkou\ ;
+河内 < hanoi\ ;
+恨事 < konji\ ;
+性器 < seiki\ ;
+怒声 < dosei\ ;
+機首 < kishu\ ;
+列記 < rekki\ ;
+古制 < kosei\ ;
+反哺 < hanpo\ ;
+十日 < tooka\ ;
+御昼 < ohiru\ ;
+都民 < tomin\ ;
+看過 < kanka\ ;
+古刀 < kotou\ ;
+弥生 < yayoi\ ;
+送話 < souwa\ ;
+平語 < heigo\ ;
+毒気 < dokke\ ;
+矛盾 < mujun\ ;
+破水 < hasui\ ;
+金利 < kinri\ ;
+泉下 < senka\ ;
+返辞 < henji\ ;
+鵞毛 < gamou\ ;
+叙勲 < jokun\ ;
+沖合 < okiai\ ;
+古典 < koten\ ;
+鯨飲 < geiin\ ;
+重利 < juuri\ ;
+印影 < in''ei\ ;
+単打 < tanda\ ;
+御数 < okazu\ ;
+受動 < judou\ ;
+道義 < dougi\ ;
+後架 < kouka\ ;
+遠縁 < tooen\ ;
+分課 < bunka\ ;
+邦画 < houga\ ;
+野党 < yatou\ ;
+着衣 < yakui\ ;
+受刑 < jukei\ ;
+毎次 < maiji\ ;
+後期 < kouki\ ;
+蕩児 < touji\ ;
+油井 < yusei\ ;
+建碑 < kenpi\ ;
+冥闇 < meian\ ;
+布陣 < fujin\ ;
+荒野 < kouya\ ;
+治下 < chika\ ;
+辺鄙 < henpi\ ;
+酒徒 < shuto\ ;
+機雷 < kirai\ ;
+歌稿 < kakou\ ;
+弧状 < kojou\ ;
+遷移 < sen''i\ ;
+帰還 < kikan\ ;
+歯痛 < haita\ ;
+民戸 < minko\ ;
+加盟 < kamei\ ;
+菊花 < kikka\ ;
+古例 < korei\ ;
+台下 < daika\ ;
+刻苦 < kokku\ ;
+母権 < boken\ ;
+古体 < kotai\ ;
+往来 < ourai\ ;
+受像 < juzou\ ;
+句会 < kukai\ ;
+古伝 < koden\ ;
+応対 < outai\ ;
+危峰 < kihou\ ;
+殺気 < sakki\ ;
+助産 < josan\ ;
+帰農 < kinou\ ;
+古代 < kodai\ ;
+古今 < kokon\ ;
+古人 < kojin\ ;
+違約 < iyaku\ ;
+原図 < genzu\ ;
+十手 < jitte\ ;
+民意 < min''i\ ;
+参加 < sanka\ ;
+冶金 < yakin\ ;
+石火 < sekka\ ;
+兵馬 < heiba\ ;
+御所 < gosho\ ;
+野人 < yajin\ ;
+弁疏 < benso\ ;
+原器 < genki\ ;
+造花 < zouka\ ;
+帝都 < teito\ ;
+英魂 < eikon\ ;
+厭味 < iyami\ ;
+危害 < kigai\ ;
+店舗 < tenpo\ ;
+配布 < haifu\ ;
+段歩 < tanbu\ ;
+単座 < tanza\ ;
+叙任 < jonin\ ;
+欧米 < oubei\ ;
+怒号 < dogou\ ;
+永存 < eizon\ ;
+工面 < kumen\ ;
+内需 < naiju\ ;
+受任 < junin\ ;
+後援 < kouen\ ;
+県議 < kengi\ ;
+勤求 < gongu\ ;
+看護 < kango\ ;
+円陣 < enjin\ ;
+酸基 < sanki\ ;
+帰趨 < kisuu\ ;
+当機 < touki\ ;
+弁理 < benri\ ;
+母材 < bozai\ ;
+徒手 < toshu\ ;
+盛運 < seiun\ ;
+歯牙 < shiga\ ;
+民度 < mindo\ ;
+運算 < unzan\ ;
+応変 < ouhen\ ;
+酒家 < shuka\ ;
+弥漫 < biman\ ;
+酒宴 < shuen\ ;
+鮟鱇 < ankou\ ;
+轟音 < gouon\ ;
+御念 < gonen\ ;
+得意 < tokui\ ;
+典雅 < tenga\ ;
+双互 < sougo\ ;
+勘気 < kanki\ ;
+辞退 < jitai\ ;
+原句 < genku\ ;
+遺留 < iryuu\ ;
+機銃 < kijuu\ ;
+都政 < tosei\ ;
+動気 < douki\ ;
+応報 < ouhou\ ;
+幼芽 < youga\ ;
+硬度 < koudo\ ;
+復帰 < fukki\ ;
+欺瞞 < giman\ ;
+遠矢 < tooya\ ;
+過程 < katei\ ;
+水夫 < suifu\ ;
+母斑 < bohan\ ;
+怜俐 < reiri\ ;
+市部 < shibu\ ;
+劫火 < gouka\ ;
+冥途 < meido\ ;
+参事 < sanji\ ;
+御幣 < gohei\ ;
+弾機 < danki\ ;
+遠眼 < engan\ ;
+破摧 < hasai\ ;
+近衛 < konoe\ ;
+短波 < tanpa\ ;
+遠目 < toome\ ;
+醇化 < junka\ ;
+判者 < hanja\ ;
+破損 < hason\ ;
+道破 < douha\ ;
+英霊 < eirei\ ;
+勇気 < yuuki\ ;
+気孔 < kikou\ ;
+加点 < katen\ ;
+酸味 < sanmi\ ;
+冠辞 < kanji\ ;
+英雄 < eiyuu\ ;
+快味 < kaimi\ ;
+平臥 < heiga\ ;
+厚利 < kouri\ ;
+徒弟 < totei\ ;
+短気 < tanki\ ;
+民家 < minka\ ;
+差金 < sakin\ ;
+部数 < busuu\ ;
+広義 < kougi\ ;
+勇武 < yuubu\ ;
+先駆 < senku\ ;
+邪法 < jahou\ ;
+忌垣 < igaki\ ;
+前科 < zenka\ ;
+氏子 < ujiko\ ;
+差配 < sahai\ ;
+短歌 < tanka\ ;
+内野 < naiya\ ;
+相補 < souho\ ;
+弦歌 < genka\ ;
+千家 < senke\ ;
+苦難 < kunan\ ;
+弘法 < guhou\ ;
+機転 < kiten\ ;
+破戒 < hakai\ ;
+毀損 < kison\ ;
+十字 < juuji\ ;
+差遣 < saken\ ;
+御宴 < gyoen\ ;
+勘査 < kansa\ ;
+矮樹 < waiju\ ;
+白雨 < hakuu\ ;
+御宅 < otaku\ ;
+内部 < naibu\ ;
+冷語 < reigo\ ;
+座禅 < zazen\ ;
+荷葉 < kayou\ ;
+苦闘 < kutou\ ;
+辞譲 < jijou\ ;
+医学 < igaku\ ;
+加減 < kagen\ ;
+座礼 < zarei\ ;
+酒器 < shuki\ ;
+左遷 < sasen\ ;
+登院 < touin\ ;
+先非 < senpi\ ;
+運痴 < unchi\ ;
+市費 < shihi\ ;
+往年 < ounen\ ;
+府税 < fuzei\ ;
+研摩 < kenma\ ;
+巡邏 < junra\ ;
+剣璽 < kenji\ ;
+免除 < menjo\ ;
+花魁 < oiran\ ;
+延滞 < entai\ ;
+左辺 < sahen\ ;
+微塵 < mijin\ ;
+部所 < busho\ ;
+匹婦 < hippu\ ;
+光陰 < kouin\ ;
+次男 < jinan\ ;
+加法 < kahou\ ;
+後尾 < koubi\ ;
+円転 < enten\ ;
+道理 < douri\ ;
+歳次 < saiji\ ;
+冗費 < jouhi\ ;
+別箇 < bekko\ ;
+茶話 < chawa\ ;
+母性 < bosei\ ;
+気圏 < kiken\ ;
+市議 < shigi\ ;
+気団 < kidan\ ;
+応分 < oubun\ ;
+御大 < ontai\ ;
+加水 < kasui\ ;
+毛布 < moufu\ ;
+再起 < saiki\ ;
+永劫 < eigou\ ;
+水化 < suika\ ;
+途端 < totan\ ;
+都度 < tsudo\ ;
+母形 < bokei\ ;
+平素 < heiso\ ;
+勿怪 < mokke\ ;
+写譜 < shafu\ ;
+正比 < seihi\ ;
+彼岸 < higan\ ;
+印判 < inpan\ ;
+毎度 < maido\ ;
+全都 < zento\ ;
+印刀 < intou\ ;
+全部 < zenbu\ ;
+水利 < suiri\ ;
+彩度 < saido\ ;
+形影 < keiei\ ;
+別科 < bekka\ ;
+遠火 < toobi\ ;
+葉末 < hazue\ ;
+快事 < kaiji\ ;
+府県 < fuken\ ;
+冗語 < jougo\ ;
+区域 < kuiki\ ;
+巨費 < kyohi\ ;
+御坊 < gobou\ ;
+矢来 < yarai\ ;
+化導 < kedou\ ;
+英邁 < eimai\ ;
+後妻 < gosai\ ;
+比島 < hitou\ ;
+単句 < tanku\ ;
+気品 < kihin\ ;
+再議 < saigi\ ;
+工費 < kouhi\ ;
+勝手 < katte\ ;
+眼窩 < ganka\ ;
+布袋 < hotei\ ;
+艶麗 < enrei\ ;
+優雅 < yuuga\ ;
+毛孔 < keana\ ;
+破屋 < haoku\ ;
+勤惰 < kinda\ ;
+内議 < naigi\ ;
+歔欷 < kyoki\ ;
+輸銀 < yugin\ ;
+全躯 < zenku\ ;
+平穏 < heion\ ;
+即位 < sokui\ ;
+序盤 < joban\ ;
+近習 < kinju\ ;
+模造 < mozou\ ;
+母屋 < omoya\ ;
+魑魅 < chimi\ ;
+永住 < eijuu\ ;
+目茶 < mecha\ ;
+公路 < kouro\ ;
+切符 < kippu\ ;
+横転 < outen\ ;
+年租 < nenso\ ;
+軍鼓 < gunko\ ;
+半可 < hanka\ ;
+半句 < hanku\ ;
+単利 < tanri\ ;
+徳化 < tokka\ ;
+利益 < rieki\ ;
+次点 < jiten\ ;
+当座 < touza\ ;
+従因 < juuin\ ;
+永代 < eitai\ ;
+気勢 < kisei\ ;
+歯朶 < shida\ ;
+歳暮 < seibo\ ;
+彼奴 < aitsu\ ;
+復古 < fukko\ ;
+凄艶 < seien\ ;
+母子 < boshi\ ;
+遠海 < enkai\ ;
+気前 < kimae\ ;
+千古 < senko\ ;
+冷菓 < reika\ ;
+引数 < insuu\ ;
+匪団 < hidan\ ;
+配備 < haibi\ ;
+微動 < bidou\ ;
+永世 < eisei\ ;
+段差 < dansa\ ;
+役夫 < ekifu\ ;
+気分 < kibun\ ;
+酒保 < shuho\ ;
+強意 < kyoui\ ;
+内規 < naiki\ ;
+遠泳 < en''ei\ ;
+草花 < souka\ ;
+酔余 < suiyo\ ;
+蒲団 < futon\ ;
+御台 < midai\ ;
+軍鶏 < shamo\ ;
+連理 < renri\ ;
+邪推 < jasui\ ;
+民利 < minri\ ;
+運漕 < unsou\ ;
+連珠 < renju\ ;
+利用 < riyou\ ;
+微分 < bibun\ ;
+午前 < gozen\ ;
+英資 < eishi\ ;
+内裏 < dairi\ ;
+輸送 < yusou\ ;
+先途 < sendo\ ;
+助攻 < jokou\ ;
+殿宇 < den''u\ ;
+芟除 < sanjo\ ;
+切磋 < sessa\ ;
+民具 < mingu\ ;
+鵄尾 < shibi\ ;
+医博 < ihaku\ ;
+茶菓 < chaka\ ;
+微光 < bikou\ ;
+歩数 < hosuu\ ;
+毎夜 < maiyo\ ;
+武断 < budan\ ;
+単位 < tan''i\ ;
+兼補 < kenpo\ ;
+加数 < kasuu\ ;
+当家 < touke\ ;
+強引 < gouin\ ;
+徒名 < adana\ ;
+御凸 < odeko\ ;
+当字 < ateji\ ;
+配下 < haika\ ;
+公訴 < kouso\ ;
+平癒 < heiyu\ ;
+発起 < hokki\ ;
+気体 < kitai\ ;
+邪慳 < jaken\ ;
+区分 < kubun\ ;
+避暑 < hisho\ ;
+遊泳 < yuuei\ ;
+区処 < kusho\ ;
+母堂 < bodou\ ;
+御免 < gomen\ ;
+御先 < osaki\ ;
+茶舗 < chaho\ ;
+勇往 < yuuou\ ;
+弓手 < yunde\ ;
+南下 < nanka\ ;
+区内 < kunai\ ;
+色香 < iroka\ ;
+徒労 < torou\ ;
+党議 < tougi\ ;
+邪悪 < jaaku\ ;
+年甫 < nenpo\ ;
+部外 < bugai\ ;
+歌書 < kasho\ ;
+剛気 < gouki\ ;
+弧形 < kokei\ ;
+勢家 < seika\ ;
+劃期 < kakki\ ;
+砂岩 < sagan\ ;
+邪恋 < jaren\ ;
+気丈 < kijou\ ;
+復位 < fukui\ ;
+徒刑 < tokei\ ;
+目線 < mesen\ ;
+萌木 < moegi\ ;
+冷罵 < reiba\ ;
+民事 < minji\ ;
+矩形 < kukei\ ;
+遺族 < izoku\ ;
+毛唐 < ketou\ ;
+全裸 < zenra\ ;
+邪念 < janen\ ;
+助成 < josei\ ;
+軍馬 < gunba\ ;
+創案 < souan\ ;
+模試 < moshi\ ;
+遊歩 < yuuho\ ;
+凹眼 < ougan\ ;
+当夜 < touya\ ;
+車馬 < shaba\ ;
+加担 < katan\ ;
+鴨居 < kamoi\ ;
+御供 < otomo\ ;
+徒党 < totou\ ;
+円蓋 < engai\ ;
+千代 < chiyo\ ;
+兄貴 < aniki\ ;
+苦言 < kugen\ ;
+御伽 < otogi\ ;
+化合 < kagou\ ;
+利点 < riten\ ;
+鬼面 < kimen\ ;
+輿論 < yoron\ ;
+十五 < juugo\ ;
+死後 < shigo\ ;
+十二 < juuni\ ;
+横行 < oukou\ ;
+御仁 < gojin\ ;
+後光 < gokou\ ;
+先議 < sengi\ ;
+遠来 < enrai\ ;
+前歯 < maeba\ ;
+遠望 < enbou\ ;
+出番 < deban\ ;
+知己 < chiki\ ;
+励弧 < reiko\ ;
+看破 < kanpa\ ;
+御上 < okami\ ;
+免訴 < menso\ ;
+役務 < ekimu\ ;
+蒙古 < mouko\ ;
+冠者 < kanja\ ;
+廃棄 < haiki\ ;
+利潤 < rijun\ ;
+僧院 < souin\ ;
+軍靴 < gunka\ ;
+冤罪 < enzai\ ;
+遠景 < enkei\ ;
+内苑 < naien\ ;
+廃案 < haian\ ;
+軍需 < gunju\ ;
+鬼門 < kimon\ ;
+遠方 < enpou\ ;
+左舷 < sagen\ ;
+允許 < inkyo\ ;
+帰社 < kisha\ ;
+劣弧 < rekko\ ;
+部品 < buhin\ ;
+砂塵 < sajin\ ;
+初演 < shoen\ ;
+歩廊 < horou\ ;
+歌手 < kashu\ ;
+後事 < kouji\ ;
+勇婦 < yuufu\ ;
+歪度 < waido\ ;
+平炉 < heiro\ ;
+農科 < nouka\ ;
+武弁 < buben\ ;
+都内 < tonai\ ;
+弟子 < deshi\ ;
+左脳 < sanou\ ;
+加年 < kanen\ ;
+近畿 < kinki\ ;
+弁座 < benza\ ;
+別派 < beppa\ ;
+正座 < seiza\ ;
+引導 < indou\ ;
+連歌 < renga\ ;
+魔道 < madou\ ;
+影像 < eizou\ ;
+巫者 < fusha\ ;
+凹版 < ouban\ ;
+内耳 < naiji\ ;
+当否 < touhi\ ;
+利水 < risui\ ;
+造次 < zouji\ ;
+六花 < rikka\ ;
+処理 < shori\ ;
+延引 < en''in\ ;
+睿智 < eichi\ ;
+八苦 < hakku\ ;
+比倫 < hirin\ ;
+過敏 < kabin\ ;
+延延 < en''en\ ;
+動因 < douin\ ;
+弊履 < heiri\ ;
+遺徳 < itoku\ ;
+破倫 < harin\ ;
+北京 < pekin\ ;
+砂嘴 < sashi\ ;
+前期 < zenki\ ;
+次数 < jisuu\ ;
+造機 < zouki\ ;
+比例 < hirei\ ;
+部分 < bubun\ ;
+再縁 < saien\ ;
+目眩 < memai\ ;
+樹脂 < jushi\ ;
+残基 < zanki\ ;
+逸書 < issho\ ;
+都会 < tokai\ ;
+欽慕 < kinbo\ ;
+部内 < bunai\ ;
+六腑 < roppu\ ;
+逓次 < teiji\ ;
+都人 < tojin\ ;
+運搬 < unpan\ ;
+前日 < maebi\ ;
+母体 < botai\ ;
+利権 < riken\ ;
+遷座 < senza\ ;
+加害 < kagai\ ;
+遠慮 < enryo\ ;
+勧化 < kange\ ;
+勇図 < yuuto\ ;
+菩提 < bodai\ ;
+僧都 < souzu\ ;
+武官 < bukan\ ;
+初歩 < shoho\ ;
+石器 < sekki\ ;
+退治 < taiji\ ;
+菲才 < hisai\ ;
+勤務 < kinmu\ ;
+正字 < seiji\ ;
+巨細 < kosai\ ;
+運指 < unshi\ ;
+鳥居 < torii\ ;
+平気 < heiki\ ;
+連架 < renka\ ;
+分派 < bunpa\ ;
+軍部 < gunbu\ ;
+出湯 < ideyu\ ;
+度数 < dosuu\ ;
+遊技 < yuugi\ ;
+退歩 < taiho\ ;
+邦土 < houdo\ ;
+避寒 < hikan\ ;
+部会 < bukai\ ;
+利根 < rikon\ ;
+崎陽 < kiyou\ ;
+年次 < nenji\ ;
+差等 < satou\ ;
+軌道 < kidou\ ;
+遺尿 < inyou\ ;
+死因 < shiin\ ;
+勲位 < kun''i\ ;
+葬具 < sougu\ ;
+円筒 < entou\ ;
+分母 < bunbo\ ;
+茶目 < chame\ ;
+店是 < tenze\ ;
+募兵 < bohei\ ;
+殿下 < denka\ ;
+欝憤 < uppun\ ;
+葬儀 < sougi\ ;
+違心 < ishin\ ;
+弱化 < jakka\ ;
+加増 < kazou\ ;
+遊惰 < yuuda\ ;
+募債 < bosai\ ;
+過怠 < katai\ ;
+出汁 < dashi\ ;
+監理 < kanri\ ;
+前戯 < zengi\ ;
+師父 < shifu\ ;
+庸愚 < yougu\ ;
+引喩 < in''yu\ ;
+帝王 < teiou\ ;
+避妊 < hinin\ ;
+内科 < naika\ ;
+序文 < jobun\ ;
+軍路 < gunro\ ;
+序数 < josuu\ ;
+残務 < zanmu\ ;
+初期 < shoki\ ;
+身重 < miomo\ ;
+座所 < zasho\ ;
+輪舞 < rinbu\ ;
+途方 < tohou\ ;
+儀装 < gisou\ ;
+幽暗 < yuuan\ ;
+英米 < eibei\ ;
+軍費 < gunpi\ ;
+魔街 < magai\ ;
+転訛 < tenka\ ;
+転記 < tenki\ ;
+凱歌 < gaika\ ;
+次年 < jinen\ ;
+遺墨 < iboku\ ;
+遅延 < chien\ ;
+幼時 < youji\ ;
+盆画 < bonga\ ;
+刑期 < keiki\ ;
+年期 < nenki\ ;
+動作 < dousa\ ;
+出様 < deyou\ ;
+芸苑 < geien\ ;
+弧光 < kokou\ ;
+歌壇 < kadan\ ;
+兵科 < heika\ ;
+助命 < jomei\ ;
+高雅 < kouga\ ;
+常温 < jouon\ ;
+前後 < zengo\ ;
+武問 < bumon\ ;
+労務 < roumu\ ;
+差益 < saeki\ ;
+連打 < renda\ ;
+優艶 < yuuen\ ;
+花茎 < kakei\ ;
+砂上 < sajou\ ;
+軍議 < gungi\ ;
+平時 < heiji\ ;
+伊呂波 < iroha\ ;
+円盤 < enban\ ;
+偽電 < giden\ ;
+皮相 < hisou\ ;
+返歌 < henka\ ;
+前座 < zenza\ ;
+痩躯 < souku\ ;
+分木 < bungi\ ;
+正員 < seiin\ ;
+内皮 < naihi\ ;
+模範 < mohan\ ;
+芽胞 < gahou\ ;
+刀架 < touka\ ;
+載荷 < saika\ ;
+皮癬 < hizen\ ;
+遊山 < yusan\ ;
+武名 < bumei\ ;
+亜鉛華 < aenka\ ;
+芙蓉 < fuyou\ ;
+死児 < shiji\ ;
+底意 < sokoi\ ;
+自首 < jishu\ ;
+軍記 < gunki\ ;
+劣化 < rekka\ ;
+遠大 < endai\ ;
+具眼 < gugan\ ;
+次官 < jikan\ ;
+次子 < jishi\ ;
+武勲 < bukun\ ;
+延命 < enmei\ ;
+元素 < genso\ ;
+武勇 < buyuu\ ;
+武功 < bukou\ ;
+廷吏 < teiri\ ;
+円環 < enkan\ ;
+岩魚 < iwana\ ;
+初手 < shote\ ;
+優美 < yuubi\ ;
+儒良 < jugon\ ;
+児童 < jidou\ ;
+歓呼 < kanko\ ;
+鳳凰 < houou\ ;
+知事 < chiji\ ;
+道央 < douou\ ;
+軍衣 < gun''i\ ;
+制度 < seido\ ;
+歩兵 < hohei\ ;
+停音 < teion\ ;
+引例 < inrei\ ;
+痴話 < chiwa\ ;
+加冠 < kakan\ ;
+連座 < renza\ ;
+遠地 < enchi\ ;
+白禍 < hakka\ ;
+過大 < kadai\ ;
+苛税 < kazei\ ;
+遊女 < yuujo\ ;
+輝線 < kisen\ ;
+入相 < iriai\ ;
+芋茎 < zuiki\ ;
+疎開 < sokai\ ;
+前婦 < zenpu\ ;
+偏頗 < henpa\ ;
+遷化 < senge\ ;
+維持費 < ijihi\ ;
+落下 < rakka\ ;
+具現 < gugen\ ;
+冷気 < reiki\ ;
+儒者 < jusha\ ;
+舗道 < hodou\ ;
+先祖 < senzo\ ;
+発破 < happa\ ;
+畳韻 < jouin\ ;
+相棒 < aibou\ ;
+廃園 < haien\ ;
+近時 < kinji\ ;
+魚肥 < gyohi\ ;
+躍起 < yakki\ ;
+花紋 < kamon\ ;
+元祖 < ganso\ ;
+盗汗 < nease\ ;
+武人 < bujin\ ;
+花粉 < kafun\ ;
+舞蹈 < butou\ ;
+幾度 < ikudo\ ;
+次回 < jikai\ ;
+鬱蒼 < ussou\ ;
+舞踊 < buyou\ ;
+輪禍 < rinka\ ;
+刑徒 < keito\ ;
+年後 < nengo\ ;
+連子 < renji\ ;
+相板 < aiban\ ;
+前場 < zenba\ ;
+田麩 < denbu\ ;
+凹所 < ousho\ ;
+偽造 < gizou\ ;
+苦界 < kugai\ ;
+常時 < jouji\ ;
+還付 < kanpu\ ;
+運営 < un''ei\ ;
+年度 < nendo\ ;
+逮夜 < taiya\ ;
+退座 < taiza\ ;
+利害 < rigai\ ;
+艱苦 < kanku\ ;
+次善 < jizen\ ;
+利子 < rishi\ ;
+別家 < bekke\ ;
+遺作 < isaku\ ;
+荒木 < araki\ ;
+岩間 < iwama\ ;
+庭園 < teien\ ;
+鯨波 < geiha\ ;
+年差 < nensa\ ;
+鯨油 < geiyu\ ;
+蹶起 < kekki\ ;
+円満 < enman\ ;
+農期 < nouki\ ;
+判子 < hanko\ ;
+華厳 < kegon\ ;
+遠出 < toode\ ;
+運命 < unmei\ ;
+道化 < douke\ ;
+歌仙 < kasen\ ;
+転義 < tengi\ ;
+次号 < jigou\ ;
+歌人 < kajin\ ;
+相撲 < sumou\ ;
+艶聞 < enbun\ ;
+序奏 < josou\ ;
+近所 < kinjo\ ;
+凡打 < bonda\ ;
+凹形 < oukei\ ;
+舎費 < shahi\ ;
+過勤 < kakin\ ;
+過労 < karou\ ;
+自邸 < jitei\ ;
+運勢 < unsei\ ;
+巨波 < kyoha\ ;
+運動 < undou\ ;
+辞柄 < jihei\ ;
+過剰 < kajou\ ;
+畝間 < unema\ ;
+自選 < jisen\ ;
+辞林 < jirin\ ;
+平家 < heike\ ;
+逸品 < ippin\ ;
+道具 < dougu\ ;
+平安 < heian\ ;
+皆無 < kaimu\ ;
+凡愚 < bongu\ ;
+分岐 < bunki\ ;
+前古 < zenko\ ;
+画餅 < gabei\ ;
+依估地 < ekoji\ ;
+辞書 < jisho\ ;
+造園 < zouen\ ;
+剰余 < jouyo\ ;
+庶務 < shomu\ ;
+画風 < gafuu\ ;
+儀範 < gihan\ ;
+芳眉 < houbi\ ;
+初夜 < shoya\ ;
+樹液 < jueki\ ;
+初夏 < shoka\ ;
+希望 < kibou\ ;
+巨歩 < kyoho\ ;
+幼女 < youjo\ ;
+画題 < gadai\ ;
+分家 < bunke\ ;
+希書 < kisho\ ;
+帰投 < kitou\ ;
+冤枉 < en''ou\ ;
+樹海 < jukai\ ;
+幾夜 < ikuyo\ ;
+幾多 < ikuta\ ;
+次兄 < jikei\ ;
+次元 < jigen\ ;
+迷子 < maigo\ ;
+機械 < kikai\ ;
+座右 < zayuu\ ;
+幻夢 < genmu\ ;
+先父 < senpu\ ;
+遡上 < sojou\ ;
+機根 < kikon\ ;
+偽誓 < gisei\ ;
+造営 < zouei\ ;
+舗装 < hosou\ ;
+異郷 < ikyou\ ;
+画面 < gamen\ ;
+倍音 < baion\ ;
+棋風 < kifuu\ ;
+偽計 < gikei\ ;
+相愛 < souai\ ;
+偽言 < gigen\ ;
+偶語 < guugo\ ;
+機材 < kizai\ ;
+次便 < jibin\ ;
+連呼 < renko\ ;
+左様 < sayou\ ;
+偶詠 < guuei\ ;
+魔神 < majin\ ;
+廊下 < rouka\ ;
+驟雨 < shuuu\ ;
+盲愛 < mouai\ ;
+再案 < saian\ ;
+意気地 < ikuji\ ;
+儀礼 < girei\ ;
+自賛 < jisan\ ;
+連句 < renku\ ;
+路頭 < rotou\ ;
+迷夢 < meimu\ ;
+英法 < eihou\ ;
+自販 < jihan\ ;
+苦渋 < kujuu\ ;
+相応 < souou\ ;
+次代 < jidai\ ;
+尾鰭 < obire\ ;
+師恩 < shion\ ;
+公武 < koubu\ ;
+転移 < ten''i\ ;
+路面 < romen\ ;
+岡辺 < okabe\ ;
+偉蹟 < iseki\ ;
+党派 < touha\ ;
+運上 < unjou\ ;
+業苦 < gouku\ ;
+層雲 < souun\ ;
+座像 < zazou\ ;
+帷幕 < ibaku\ ;
+帷帳 < ichou\ ;
+利口 < rikou\ ;
+機敏 < kibin\ ;
+入歯 < ireba\ ;
+庶事 < shoji\ ;
+魔睡 < masui\ ;
+横死 < oushi\ ;
+軌範 < kihan\ ;
+円本 < enpon\ ;
+儒生 < jusei\ ;
+巡査 < junsa\ ;
+再映 < saiei\ ;
+庵主 < anshu\ ;
+自認 < jinin\ ;
+花片 < kahen\ ;
+鬼神 < kijin\ ;
+輸液 < yueki\ ;
+甘露 < kanro\ ;
+檀徒 < danto\ ;
+異象 < ishou\ ;
+茂林 < morin\ ;
+保養 < hoyou\ ;
+光波 < kouha\ ;
+距離 < kyori\ ;
+左方 < sahou\ ;
+座乗 < zajou\ ;
+樹林 < jurin\ ;
+魔界 < makai\ ;
+平和 < heiwa\ ;
+具有 < guyuu\ ;
+公案 < kouan\ ;
+処女 < shojo\ ;
+帝座 < teiza\ ;
+刑吏 < keiri\ ;
+送受 < souju\ ;
+差損 < sason\ ;
+模様 < moyou\ ;
+機才 < kisai\ ;
+凡夫 < bonpu\ ;
+刻下 < kokka\ ;
+退化 < taika\ ;
+准尉 < jun''i\ ;
+冶工 < yakou\ ;
+横柄 < ouhei\ ;
+典故 < tenko\ ;
+色目 < irome\ ;
+利便 < riben\ ;
+画道 < gadou\ ;
+路銀 < rogin\ ;
+草履 < zouri\ ;
+保険 < hoken\ ;
+年利 < nenri\ ;
+英書 < eisho\ ;
+六日 < muika\ ;
+分区 < bunku\ ;
+八日 < youka\ ;
+公方 < kubou\ ;
+横暴 < oubou\ ;
+冥府 < meifu\ ;
+刑具 < keigu\ ;
+苦杯 < kuhai\ ;
+英明 < eimei\ ;
+檀家 < danka\ ;
+模本 < mohon\ ;
+入日 < irihi\ ;
+尾長 < onaga\ ;
+農婦 < noufu\ ;
+小鬢 < kobin\ ;
+判事 < hanji\ ;
+分利 < bunri\ ;
+英断 < eidan\ ;
+傅育 < fuiku\ ;
+横断 < oudan\ ;
+英文 < eibun\ ;
+凡器 < bonki\ ;
+英数 < eisuu\ ;
+冴寒 < gokan\ ;
+途上 < tojou\ ;
+布巾 < fukin\ ;
+相場 < souba\ ;
+騒音 < souon\ ;
+党是 < touze\ ;
+農奴 < noudo\ ;
+用途 < youto\ ;
+光栄 < kouei\ ;
+茶屋 < chaya\ ;
+輿望 < yobou\ ;
+自著 < jicho\ ;
+児曹 < jisou\ ;
+出前 < demae\ ;
+小馬 < kouma\ ;
+荷台 < nidai\ ;
+甘酢 < amazu\ ;
+苗木 < naegi\ ;
+駻馬 < kanba\ ;
+画賛 < gasan\ ;
+白旗 < hakki\ ;
+送付 < soufu\ ;
+内応 < naiou\ ;
+凍土 < toudo\ ;
+帯地 < obiji\ ;
+辺土 < hendo\ ;
+尾錠 < bijou\ ;
+刑事 < keiji\ ;
+円弾 < endan\ ;
+目垢 < meaka\ ;
+近古 < kinko\ ;
+軽浮 < keifu\ ;
+苛斂 < karen\ ;
+転炉 < tenro\ ;
+農園 < nouen\ ;
+巻尾 < kanbi\ ;
+秋刀魚 < sanma\ ;
+佳麗 < karei\ ;
+艶然 < enzen\ ;
+英才 < eisai\ ;
+腰部 < youbu\ ;
+軽油 < keiyu\ ;
+幇助 < houjo\ ;
+内帑 < naido\ ;
+画談 < gadan\ ;
+写字 < shaji\ ;
+供養 < kuyou\ ;
+倒語 < tougo\ ;
+鬼火 < onibi\ ;
+魚油 < gyoyu\ ;
+帝土 < teido\ ;
+機嫌 < kigen\ ;
+花梨 < karin\ ;
+兌換 < dakan\ ;
+魔法 < mahou\ ;
+苦戦 < kusen\ ;
+傷痍 < shoui\ ;
+候補 < kouho\ ;
+常務 < joumu\ ;
+帰参 < kisan\ ;
+円居 < madoi\ ;
+樹幹 < jukan\ ;
+苦慮 < kuryo\ ;
+馬齢 < barei\ ;
+余齢 < yorei\ ;
+痔瘻 < jirou\ ;
+巨富 < kyofu\ ;
+公庫 < kouko\ ;
+備砲 < bihou\ ;
+公序 < koujo\ ;
+苦情 < kujou\ ;
+茶園 < chaen\ ;
+苦悶 < kumon\ ;
+苦悩 < kunou\ ;
+用語 < yougo\ ;
+左官 < sakan\ ;
+槐樹 < kaiju\ ;
+冗多 < jouta\ ;
+軟派 < nanpa\ ;
+公布 < koufu\ ;
+異腹 < ifuku\ ;
+先手 < sente\ ;
+公差 < kousa\ ;
+茶器 < chaki\ ;
+臓腑 < zoufu\ ;
+鬱滞 < uttai\ ;
+桂馬 < keima\ ;
+返付 < henpu\ ;
+梅酢 < umezu\ ;
+農務 < noumu\ ;
+常備 < joubi\ ;
+苦役 < kueki\ ;
+舌禍 < zekka\ ;
+嵐気 < ranki\ ;
+梵語 < bongo\ ;
+県下 < kenka\ ;
+腕輪 < udewa\ ;
+起電 < kiden\ ;
+師儒 < shiju\ ;
+家鴨 < ahiru\ ;
+寝顔 < negao\ ;
+農具 < nougu\ ;
+市営 < shiei\ ;
+円墳 < enpun\ ;
+色気 < iroke\ ;
+辞去 < jikyo\ ;
+鬼歯 < oniba\ ;
+封鎖 < fuusa\ ;
+英屯 < eiton\ ;
+尖部 < senbu\ ;
+工場 < kouba\ ;
+発布 < happu\ ;
+帰任 < kinin\ ;
+兄後 < anigo\ ;
+八重歯 < yaeba\ ;
+倶者 < kusha\ ;
+俚諺 < rigen\ ;
+俎豆 < sotou\ ;
+生蝋 < kirou\ ;
+克己 < kokki\ ;
+内因 < naiin\ ;
+跛行 < hakou\ ;
+盲亀 < mouki\ ;
+苦寒 < kukan\ ;
+疫痢 < ekiri\ ;
+盛儀 < seigi\ ;
+市区 < shiku\ ;
+馬首 < bashu\ ;
+余香 < yokou\ ;
+登山 < tozan\ ;
+冗句 < jouku\ ;
+大伯父 < oooji\ ;
+農事 < nouji\ ;
+権威 < ken''i\ ;
+目下 < mokka\ ;
+嶮岨 < kenso\ ;
+自社 < jisha\ ;
+疣痔 < iboji\ ;
+余風 < yofuu\ ;
+余類 < yorui\ ;
+児孫 < jison\ ;
+馬頭 < batou\ ;
+甘藻 < amamo\ ;
+家風 < kafuu\ ;
+艶書 < ensho\ ;
+優弧 < yuuko\ ;
+辞令 < jirei\ ;
+棉花 < menka\ ;
+機内 < kinai\ ;
+公図 < kouzu\ ;
+兵営 < heiei\ ;
+田舎 < inaka\ ;
+左右 < sayuu\ ;
+全土 < zendo\ ;
+全図 < zenzu\ ;
+胯間 < kokan\ ;
+画聖 < gasei\ ;
+希代 < kidai\ ;
+小豆 < azuki\ ;
+兵員 < heiin\ ;
+案配 < anbai\ ;
+家電 < kaden\ ;
+内務 < naimu\ ;
+尊貴 < sonki\ ;
+差分 < sabun\ ;
+内助 < naijo\ ;
+瓦解 < gakai\ ;
+冠位 < kan''i\ ;
+梅見 < umemi\ ;
+工務 < koumu\ ;
+模型 < mokei\ ;
+栄養 < eiyou\ ;
+俘虜 < furyo\ ;
+魔手 < mashu\ ;
+低雲 < teiun\ ;
+布令 < furei\ ;
+白堊 < hakua\ ;
+兼務 < kenmu\ ;
+路肩 < roken\ ;
+似顔 < nigao\ ;
+甲羅 < koura\ ;
+自由 < jiyuu\ ;
+棄背 < kihai\ ;
+便衣 < ben''i\ ;
+円光 < enkou\ ;
+自用 < jiyou\ ;
+使途 < shito\ ;
+軽微 < keibi\ ;
+兵匪 < heihi\ ;
+工具 < kougu\ ;
+登坂 < tohan\ ;
+富鉱 < fukou\ ;
+侮言 < bugen\ ;
+輿地 < yochi\ ;
+芸子 < geiko\ ;
+背離 < hairi\ ;
+左傾 < sakei\ ;
+保菌 < hokin\ ;
+八卦 < hakke\ ;
+軽度 < keido\ ;
+巴人 < hajin\ ;
+画紙 < gashi\ ;
+公募 < koubo\ ;
+番目 < banme\ ;
+大伯母 < oooba\ ;
+兼備 < kenbi\ ;
+寄金 < kikin\ ;
+走路 < souro\ ;
+魔弾 < madan\ ;
+岡目 < okame\ ;
+官需 < kanju\ ;
+瑞雲 < zuiun\ ;
+高温 < kouon\ ;
+尾花 < obana\ ;
+対話 < taiwa\ ;
+伝馬 < tenma\ ;
+轍叉 < tessa\ ;
+依託 < itaku\ ;
+脳裡 < nouri\ ;
+権化 < gonge\ ;
+苦吟 < kugin\ ;
+芸妓 < geigi\ ;
+路線 < rosen\ ;
+赤身 < akami\ ;
+兵備 < heibi\ ;
+富農 < funou\ ;
+修羅 < shura\ ;
+芥子 < keshi\ ;
+疑点 < giten\ ;
+樽俎 < sonso\ ;
+侍講 < jikou\ ;
+軍手 < gunte\ ;
+権利 < kenri\ ;
+会飲 < kaiin\ ;
+典侍 < tenji\ ;
+安静 < ansei\ ;
+駅路 < ekiro\ ;
+入内 < judai\ ;
+党務 < toumu\ ;
+具体 < gutai\ ;
+発句 < hokku\ ;
+苦労 < kurou\ ;
+様子 < yousu\ ;
+保育 < hoiku\ ;
+画稿 < gakou\ ;
+例話 < reiwa\ ;
+全備 < zenbi\ ;
+党利 < touri\ ;
+自炊 < jisui\ ;
+佳賓 < kahin\ ;
+生糸 < kiito\ ;
+模写 < mosha\ ;
+僧徒 < souto\ ;
+疎漏 < sorou\ ;
+安閑 < ankan\ ;
+樹上 < jujou\ ;
+余輩 < yohai\ ;
+梅花 < baika\ ;
+儀容 < giyou\ ;
+田租 < denso\ ;
+馬車 < basha\ ;
+先務 < senmu\ ;
+俺等 < orera\ ;
+模倣 < mohou\ ;
+富豪 < fugou\ ;
+馬蹄 < batei\ ;
+践祚 < senso\ ;
+路程 < rotei\ ;
+紫雲英 < genge\ ;
+寄贈 < kizou\ ;
+体躯 < taiku\ ;
+痴愚 < chigu\ ;
+背部 < haibu\ ;
+保線 < hosen\ ;
+英主 < eishu\ ;
+元利 < genri\ ;
+倫理 < rinri\ ;
+車庫 < shako\ ;
+寓話 < guuwa\ ;
+疏水 < sosui\ ;
+余財 < yozai\ ;
+脾臟 < hizou\ ;
+僧尼 < souni\ ;
+発作 < hossa\ ;
+自治 < jichi\ ;
+癒合 < yugou\ ;
+充備 < juubi\ ;
+脾腫 < hishu\ ;
+尾籠 < birou\ ;
+痛手 < itade\ ;
+家財 < kazai\ ;
+転婆 < tenba\ ;
+鬼子 < onigo\ ;
+官途 < kanto\ ;
+自民 < jimin\ ;
+保管 < hokan\ ;
+栄転 < eiten\ ;
+検波 < kenpa\ ;
+字面 < jimen\ ;
+路盤 < roban\ ;
+舵手 < dashu\ ;
+余談 < yodan\ ;
+富裕 < fuyuu\ ;
+産着 < ubugi\ ;
+偏波 < henha\ ;
+偽本 < gihon\ ;
+艶姿 < enshi\ ;
+優利 < yuuri\ ;
+極意 < gokui\ ;
+仮面 < kamen\ ;
+偽書 < gisho\ ;
+岡湯 < okayu\ ;
+保税 < hozei\ ;
+余計 < yokei\ ;
+僅差 < kinsa\ ;
+俯瞰 < fukan\ ;
+臨機 < rinki\ ;
+未曾有 < mizou\ ;
+艇庫 < teiko\ ;
+尊者 < sonja\ ;
+跡目 < atome\ ;
+路用 < royou\ ;
+家訓 < kakun\ ;
+低語 < teigo\ ;
+実費 < jippi\ ;
+傾差 < keisa\ ;
+男猫 < oneko\ ;
+甦生 < sosei\ ;
+起草 < kisou\ ;
+余裕 < yoyuu\ ;
+嵩呼 < suuko\ ;
+官費 < kanpi\ ;
+養鯉 < youri\ ;
+軍夫 < gunpu\ ;
+疎林 < sorin\ ;
+家裁 < kasai\ ;
+俳画 < haiga\ ;
+他面 < tamen\ ;
+小紋 < komon\ ;
+生理 < seiri\ ;
+腋窩 < ekika\ ;
+付随 < fuzui\ ;
+家蝿 < iebae\ ;
+検査 < kensa\ ;
+備忘 < bibou\ ;
+小粋 < koiki\ ;
+実記 < jikki\ ;
+人馬 < jinba\ ;
+億劫 < okkuu\ ;
+自暴 < jibou\ ;
+便秘 < benpi\ ;
+官話 < kanwa\ ;
+伯父貴 < ojiki\ ;
+疎放 < sohou\ ;
+余薫 < yokun\ ;
+自明 < jimei\ ;
+臨時 < rinji\ ;
+餌食 < ejiki\ ;
+定規 < jougi\ ;
+船尾 < senbi\ ;
+今際 < imawa\ ;
+億円 < okuen\ ;
+儀刀 < gitou\ ;
+守護 < shugo\ ;
+会費 < kaihi\ ;
+岩根 < iwane\ ;
+男滝 < odaki\ ;
+瓜科 < urika\ ;
+軽侮 < keibu\ ;
+供米 < kumai\ ;
+栄螺 < sazae\ ;
+値段 < nedan\ ;
+孤軍 < kogun\ ;
+偽悪 < giaku\ ;
+亜麻仁 < amani\ ;
+疲弊 < hihei\ ;
+会議 < kaigi\ ;
+来駕 < raiga\ ;
+高座 < kouza\ ;
+良医 < ryoui\ ;
+伝記 < denki\ ;
+会話 < kaiwa\ ;
+余芳 < yohou\ ;
+乱麻 < ranma\ ;
+傘寿 < sanju\ ;
+山河 < sanga\ ;
+耳順 < jijun\ ;
+伽藍 < garan\ ;
+儀仗 < gijou\ ;
+守衛 < shuei\ ;
+軍務 < gunmu\ ;
+産湯 < ubuyu\ ;
+香華 < kouge\ ;
+尾燈 < bitou\ ;
+供祭 < gusai\ ;
+賓辞 < hinji\ ;
+五十路 < isoji\ ;
+舞子 < maiko\ ;
+自慢 < jiman\ ;
+楽器 < gakki\ ;
+疑念 < ginen\ ;
+余聞 < yobun\ ;
+学課 < gakka\ ;
+馬耕 < bakou\ ;
+踏査 < tousa\ ;
+画楼 < garou\ ;
+脱皮 < dappi\ ;
+来院 < raiin\ ;
+侍祭 < jisai\ ;
+軍備 < gunbi\ ;
+産気 < sanke\ ;
+産毛 < ubuge\ ;
+腐爛 < furan\ ;
+脱疽 < dasso\ ;
+岩戸 < iwato\ ;
+寿盃 < juhai\ ;
+自弁 < jiben\ ;
+番手 < bante\ ;
+偸安 < touan\ ;
+小琴 < ogoto\ ;
+俄然 < gazen\ ;
+画板 < gaban\ ;
+字訓 < jikun\ ;
+梳毛 < somou\ ;
+飛電 < hiden\ ;
+二階 < nikai\ ;
+画材 < gazai\ ;
+軍事 < gunji\ ;
+理財 < rizai\ ;
+画本 < gahon\ ;
+畸形 < kikei\ ;
+代議 < daigi\ ;
+走破 < souha\ ;
+債務 < saimu\ ;
+身分 < mibun\ ;
+賄賂 < wairo\ ;
+育英 < ikuei\ ;
+小犬 < koinu\ ;
+由来 < yurai\ ;
+伽羅 < kyara\ ;
+仏貨 < fukka\ ;
+東都 < touto\ ;
+東部 < toubu\ ;
+仮装 < kasou\ ;
+自尽 < jijin\ ;
+理論 < riron\ ;
+偏差 < hensa\ ;
+尊父 < sonpu\ ;
+偽報 < gihou\ ;
+定義 < teigi\ ;
+備品 < bihin\ ;
+貨車 < kasha\ ;
+俗気 < zokke\ ;
+自害 < jigai\ ;
+貸費 < taihi\ ;
+留意 < ryuui\ ;
+何箇 < nanko\ ;
+個数 < kosuu\ ;
+寝相 < nezou\ ;
+颶風 < gufuu\ ;
+桂皮 < keihi\ ;
+飲酒 < inshu\ ;
+亨運 < kouun\ ;
+理解 < rikai\ ;
+何等 < nanra\ ;
+販路 < hanro\ ;
+俗歌 < zokka\ ;
+乗馬 < jouba\ ;
+付言 < fugen\ ;
+赤目 < akame\ ;
+介護 < kaigo\ ;
+他言 < tagon\ ;
+五重 < gojuu\ ;
+舞台 < butai\ ;
+朝餉 < asage\ ;
+寡男 < yamoo\ ;
+他見 < taken\ ;
+舎営 < shaei\ ;
+伎芸 < gigei\ ;
+疎外 < sogai\ ;
+偶因 < guuin\ ;
+安置 < anchi\ ;
+傍受 < bouju\ ;
+岩屋 < iwaya\ ;
+二重 < futae\ ;
+肥育 < hiiku\ ;
+小滝 < otaki\ ;
+偽善 < gizen\ ;
+梧桐 < gotou\ ;
+画才 < gasai\ ;
+画手 < gashu\ ;
+風韻 < fuuin\ ;
+他行 < takou\ ;
+財貨 < zaika\ ;
+互選 < gosen\ ;
+風靡 < fuubi\ ;
+伎能 < ginou\ ;
+未開 < mikai\ ;
+貴覧 < kiran\ ;
+風雲 < fuuun\ ;
+乖離 < kairi\ ;
+疲労 < hirou\ ;
+偽名 < gimei\ ;
+人語 < jingo\ ;
+風雅 < fuuga\ ;
+五輪 < gorin\ ;
+偽史 < gishi\ ;
+予選 < yosen\ ;
+乗除 < joujo\ ;
+偏奇 < henki\ ;
+主馬 < shume\ ;
+保有 < hoyuu\ ;
+自在 < jizai\ ;
+二輪 < nirin\ ;
+朝間 < asama\ ;
+脳波 < nouha\ ;
+実科 < jikka\ ;
+屠所 < tosho\ ;
+疑問 < gimon\ ;
+舎利 < shari\ ;
+二軍 < nigun\ ;
+倒影 < touei\ ;
+他薦 < tazen\ ;
+駄犬 < daken\ ;
+飛車 < hisha\ ;
+屹度 < kitto\ ;
+倭寇 < wakou\ ;
+小歌 < kouta\ ;
+主音 < shuon\ ;
+容疑 < yougi\ ;
+余生 < yosei\ ;
+美麗 < birei\ ;
+定礎 < teiso\ ;
+岩場 < iwaba\ ;
+自問 < jimon\ ;
+偽兵 < gihei\ ;
+腕木 < udegi\ ;
+画帖 < gajou\ ;
+羽音 < haoto\ ;
+倉庫 < souko\ ;
+机辺 < kihen\ ;
+異国 < ikoku\ ;
+村費 < sonpi\ ;
+賢者 < kenja\ ;
+本部 < honbu\ ;
+互譲 < gojou\ ;
+対欧 < taiou\ ;
+老躯 < rouku\ ;
+産後 < sango\ ;
+用度 < youdo\ ;
+書院 < shoin\ ;
+桐油 < touyu\ ;
+未遂 < misui\ ;
+生徒 < seito\ ;
+生後 < seigo\ ;
+脚気 < kakke\ ;
+王道 < oudou\ ;
+賛美 < sanbi\ ;
+腐敗 < fuhai\ ;
+蹄叉 < teisa\ ;
+木通 < akebi\ ;
+仕舞 < jimai\ ;
+越権 < ekken\ ;
+跋扈 < bakko\ ;
+余燼 < yojin\ ;
+自前 < jimae\ ;
+胃痛 < itsuu\ ;
+小枝 < koeda\ ;
+胃病 < ibyou\ ;
+自分 < jibun\ ;
+起毛 < kimou\ ;
+瑪瑙 < menou\ ;
+風邪 < fuuja\ ;
+作為 < sakui\ ;
+安眠 < anmin\ ;
+自党 < jitou\ ;
+尿意 < nyoui\ ;
+望遠 < bouen\ ;
+予言 < yogen\ ;
+九輪 < kurin\ ;
+乱費 < ranpi\ ;
+他聞 < tabun\ ;
+未踏 < mitou\ ;
+対案 < taian\ ;
+予見 < yoken\ ;
+他者 < tasha\ ;
+仮納 < kanou\ ;
+猪首 < ikubi\ ;
+不順 < fujun\ ;
+一首 < isshu\ ;
+産屋 < ubuya\ ;
+仮粧 < kewai\ ;
+豪語 < gougo\ ;
+類韻 < ruiin\ ;
+類音 < ruion\ ;
+貧苦 < hinku\ ;
+男女 < danjo\ ;
+根気 < konki\ ;
+赤毛 < akage\ ;
+一飯 < ippan\ ;
+美風 < bifuu\ ;
+飛行 < hikou\ ;
+京華 < keika\ ;
+安産 < anzan\ ;
+一風 < ippuu\ ;
+美顔 < bigan\ ;
+実父 < jippu\ ;
+自伝 < jiden\ ;
+聖者 < seija\ ;
+便所 < benjo\ ;
+世間 < seken\ ;
+一頭 < ittou\ ;
+自今 < jikon\ ;
+主部 < shubu\ ;
+一項 < ikkou\ ;
+田夫 < denpu\ ;
+飛蝗 < batta\ ;
+理系 < rikei\ ;
+産婦 < sanpu\ ;
+寸暇 < sunka\ ;
+架空 < kakuu\ ;
+産婆 < sanba\ ;
+豌豆 < endou\ ;
+下阪 < gehan\ ;
+寸時 < sunji\ ;
+梵字 < bonji\ ;
+甘子 < amago\ ;
+体温 < taion\ ;
+仁義 < jingi\ ;
+主辞 < shuji\ ;
+暴飲 < bouin\ ;
+寝棺 < nekan\ ;
+走査 < sousa\ ;
+一階 < ikkai\ ;
+本訴 < honso\ ;
+一隊 < ittai\ ;
+曹達 < souda\ ;
+貧者 < hinja\ ;
+田圃 < denpo\ ;
+付箋 < fusen\ ;
+一閃 < issen\ ;
+侮慢 < buman\ ;
+作歌 < sakka\ ;
+木乃伊 < miira\ ;
+義金 < gikin\ ;
+保守 < hoshu\ ;
+風諭 < fuuyu\ ;
+世銀 < segin\ ;
+保存 < hozon\ ;
+甘夢 < kanmu\ ;
+尤度 < yuudo\ ;
+月賦 < geppu\ ;
+展墓 < tenbo\ ;
+珪素 < keiso\ ;
+核果 < kakka\ ;
+尊意 < son''i\ ;
+香油 < kouyu\ ;
+用器 < youki\ ;
+案文 < anmon\ ;
+朗詠 < rouei\ ;
+倒句 < touku\ ;
+倒叙 < toujo\ ;
+仮眠 < kamin\ ;
+五臓 < gozou\ ;
+背泳 < haiei\ ;
+亡者 < mouja\ ;
+万里 < banri\ ;
+理知 < richi\ ;
+仏祖 < busso\ ;
+駄文 < dabun\ ;
+義軍 < gigun\ ;
+倭人 < wajin\ ;
+七重 < nanae\ ;
+下郎 < gerou\ ;
+上部 < joubu\ ;
+頓馬 < tonma\ ;
+三部 < sanbu\ ;
+不遜 < fuson\ ;
+不遇 < fuguu\ ;
+便宜 < bengi\ ;
+不逞 < futei\ ;
+小川 < ogawa\ ;
+不退 < futai\ ;
+美酒 < bishu\ ;
+主訴 < shuso\ ;
+暗雲 < an''un\ ;
+二十重 < hatae\ ;
+男児 < danji\ ;
+二者 < nisha\ ;
+画像 < gazou\ ;
+俳味 < haimi\ ;
+用務 < youmu\ ;
+婦道 < fudou\ ;
+村翁 < sonou\ ;
+安泰 < antai\ ;
+肥満 < himan\ ;
+下輩 < gehai\ ;
+家来 < kerai\ ;
+値上 < neage\ ;
+甘味 < kanmi\ ;
+俳句 < haiku\ ;
+一遍 < ippen\ ;
+老舗 < rouho\ ;
+暗闘 < antou\ ;
+下車 < gesha\ ;
+甚句 < jinku\ ;
+些細 < sasai\ ;
+理由 < riyuu\ ;
+人祖 < jinso\ ;
+乱舞 < ranbu\ ;
+侍従 < jijuu\ ;
+娃鬟 < aikan\ ;
+会派 < kaiha\ ;
+他界 < takai\ ;
+五絃 < gogen\ ;
+小字 < koaza\ ;
+屋台 < yatai\ ;
+尊家 < sonka\ ;
+一転 < itten\ ;
+画人 < gajin\ ;
+題辞 < daiji\ ;
+一軒 < ikken\ ;
+実梅 < miume\ ;
+路傍 < robou\ ;
+本舗 < honpo\ ;
+不買 < fubai\ ;
+下賤 < gesen\ ;
+寝息 < neiki\ ;
+枯燥 < kosou\ ;
+木舞 < komai\ ;
+老翁 < rouou\ ;
+羽蟻 < haari\ ;
+寛恕 < kanjo\ ;
+費用 < hiyou\ ;
+代父 < daifu\ ;
+貫目 < kanme\ ;
+義訓 < gikun\ ;
+予納 < yonou\ ;
+万貨 < banka\ ;
+板目 < itame\ ;
+頭重 < zuomo\ ;
+梅園 < baien\ ;
+貴男 < takao\ ;
+定期 < teiki\ ;
+小声 < kogoe\ ;
+桂庵 < keian\ ;
+一貫 < ikkan\ ;
+生保 < seiho\ ;
+便器 < benki\ ;
+未聞 < mimon\ ;
+音韻 < on''in\ ;
+景雲 < keiun\ ;
+二等 < nitou\ ;
+上諭 < jouyu\ ;
+予算 < yosan\ ;
+類語 < ruigo\ ;
+路上 < rojou\ ;
+本義 < hongi\ ;
+豆腐 < toufu\ ;
+駄弁 < daben\ ;
+婦警 < fukei\ ;
+起居 < kikyo\ ;
+板画 < hanga\ ;
+体技 < taigi\ ;
+保冷 < horei\ ;
+余憤 < yofun\ ;
+上訴 < jouso\ ;
+保全 < hozen\ ;
+二種 < nishu\ ;
+果然 < kazen\ ;
+音階 < onkai\ ;
+美談 < bidan\ ;
+家憲 < kaken\ ;
+代演 < daien\ ;
+余情 < yojou\ ;
+寡居 < kakyo\ ;
+犬馬 < kenba\ ;
+尼僧 < nisou\ ;
+翡翠 < hisui\ ;
+枯淡 < kotan\ ;
+未練 < miren\ ;
+一計 < ikkei\ ;
+美観 < bikan\ ;
+預金 < yokin\ ;
+余念 < yonen\ ;
+題詠 < daiei\ ;
+木綿 < momen\ ;
+丹色 < niiro\ ;
+王統 < outou\ ;
+趣味 < shumi\ ;
+賢母 < kenbo\ ;
+暗転 < anten\ ;
+未納 < minou\ ;
+議題 < gidai\ ;
+余弊 < yohei\ ;
+赤字 < akaji\ ;
+養父 < youfu\ ;
+来由 < raiyu\ ;
+根子 < nekko\ ;
+寸土 < sundo\ ;
+何度 < nando\ ;
+胡座 < agura\ ;
+案外 < angai\ ;
+作務衣 < samue\ ;
+曳航 < eikou\ ;
+理法 < rihou\ ;
+風紀 < fuuki\ ;
+代母 < daibo\ ;
+人為 < jin''i\ ;
+伝播 < denpa\ ;
+罵言 < bagen\ ;
+騎兵 < kihei\ ;
+桑園 < souen\ ;
+互用 < goyou\ ;
+主義 < shugi\ ;
+条理 < jouri\ ;
+小勢 < kozei\ ;
+寄寓 < kiguu\ ;
+二番 < niban\ ;
+背後 < haigo\ ;
+牡鹿 < ojika\ ;
+本科 < honka\ ;
+馬屋 < umaya\ ;
+伝授 < denju\ ;
+小判 < koban\ ;
+羽翼 < uyoku\ ;
+枝毛 < edage\ ;
+寿司 < sushi\ ;
+首座 < shuza\ ;
+首府 < shufu\ ;
+亡父 < boufu\ ;
+普遍 < fuhen\ ;
+余寒 < yokan\ ;
+譜面 < fumen\ ;
+任期 < ninki\ ;
+赭土 < shado\ ;
+家屋 < kaoku\ ;
+聖油 < seiyu\ ;
+猟虎 < rakko\ ;
+寝坊 < nebou\ ;
+飴煮 < ameni\ ;
+枢機 < suuki\ ;
+住居 < sumai\ ;
+胃弱 < ijaku\ ;
+伝手 < tsute\ ;
+宵寝 < yoine\ ;
+足下 < sokka\ ;
+小僧 < kozou\ ;
+宝庫 < houko\ ;
+順路 < junro\ ;
+上荷 < uwani\ ;
+一葦 < ichii\ ;
+宮居 < miyai\ ;
+脱兎 < datto\ ;
+羽織 < haori\ ;
+暗視 < anshi\ ;
+林檎 < ringo\ ;
+代案 < daian\ ;
+首尾 < shubi\ ;
+越冬 < ettou\ ;
+安心 < anjin\ ;
+貪汚 < tan''o\ ;
+価値 < kachi\ ;
+妖魔 < youma\ ;
+一艘 < issou\ ;
+来演 < raien\ ;
+休意 < kyuui\ ;
+養母 < youbo\ ;
+一致 < itchi\ ;
+駅員 < ekiin\ ;
+会得 < etoku\ ;
+寝台 < nedai\ ;
+不老 < furou\ ;
+護送 < gosou\ ;
+他村 < tason\ ;
+杜漏 < zurou\ ;
+査定 < satei\ ;
+宗家 < souke\ ;
+牝馬 < hinba\ ;
+美育 < biiku\ ;
+案分 < anbun\ ;
+仏果 < bukka\ ;
+老爺 < rouya\ ;
+老父 < roufu\ ;
+頭蓋 < zugai\ ;
+理数 < risuu\ ;
+亜流 < aryuu\ ;
+象牙 < zouge\ ;
+警邏 < keira\ ;
+安居 < ankyo\ ;
+東欧 < touou\ ;
+駆動 < kudou\ ;
+贔屓 < hiiki\ ;
+寡兵 < kahei\ ;
+他方 < tahou\ ;
+任意 < nin''i\ ;
+類縁 < ruien\ ;
+余喘 < yozen\ ;
+讒誣 < zanbu\ ;
+亡母 < boubo\ ;
+居留守 < irusu\ ;
+安定 < antei\ ;
+下緒 < sageo\ ;
+宇宙 < uchuu\ ;
+讒訴 < zanso\ ;
+音詩 < onshi\ ;
+伎工 < gikou\ ;
+音訓 < onkun\ ;
+賢愚 < kengu\ ;
+胃壁 < iheki\ ;
+余命 < yomei\ ;
+不粋 < busui\ ;
+妖雲 < youun\ ;
+赴任 < funin\ ;
+賦性 < fusei\ ;
+代打 < daida\ ;
+案件 < anken\ ;
+獣皮 < juuhi\ ;
+五段 < godan\ ;
+賛意 < san''i\ ;
+板木 < hangi\ ;
+飢民 < kimin\ ;
+飛泉 < hisen\ ;
+未然 < mizen\ ;
+駐伊 < chuui\ ;
+映配 < eihai\ ;
+孤帆 < kohan\ ;
+作動 < sadou\ ;
+一糸 < isshi\ ;
+不等 < futou\ ;
+人時 < ninji\ ;
+頭脳 < zunou\ ;
+木灰 < kibai\ ;
+羅紗 < rasha\ ;
+奇麗 < kirei\ ;
+仕手 < shite\ ;
+馬券 < baken\ ;
+宮司 < guuji\ ;
+理想 < risou\ ;
+宥和 < yuuwa\ ;
+議論 < giron\ ;
+書画 < shoga\ ;
+獲物 < emono\ ;
+奮飛 < funpi\ ;
+肥大 < hidai\ ;
+余党 < yotou\ ;
+理性 < risei\ ;
+時論 < jiron\ ;
+警護 < keigo\ ;
+負数 < fusuu\ ;
+二様 < niyou\ ;
+義眼 < gigan\ ;
+査問 < samon\ ;
+理念 < rinen\ ;
+青馬 < aouma\ ;
+譫語 < sengo\ ;
+未満 < miman\ ;
+家内 < kanai\ ;
+世知 < sechi\ ;
+定員 < teiin\ ;
+買手 < kaite\ ;
+寝椅子 < neisu\ ;
+来期 < raiki\ ;
+井桁 < igeta\ ;
+暗翳 < an''ei\ ;
+未済 < misai\ ;
+姉貴 < aneki\ ;
+老母 < roubo\ ;
+他念 < tanen\ ;
+宛名 < atena\ ;
+女難 < jonan\ ;
+奴隷 < dorei\ ;
+世相 < sesou\ ;
+仲居 < nakai\ ;
+末派 < mappa\ ;
+非難 < hinan\ ;
+下知 < gedji\ ;
+太鼓 < taiko\ ;
+須臾 < shuyu\ ;
+朝湯 < asayu\ ;
+奔馬 < honba\ ;
+聖恩 < seion\ ;
+嫌気 < kenki\ ;
+不眠 < fumin\ ;
+亜族 < azoku\ ;
+仁慈 < jinji\ ;
+仮寓 < kaguu\ ;
+仏徒 < butto\ ;
+板戸 < itado\ ;
+人我 < jinga\ ;
+貧打 < hinda\ ;
+余人 < yonin\ ;
+他店 < taten\ ;
+大黄 < daiou\ ;
+上着 < uwagi\ ;
+大麻 < taima\ ;
+本気 < honki\ ;
+老樹 < rouju\ ;
+是認 < zenin\ ;
+負担 < futan\ ;
+暗線 < ansen\ ;
+上目 < uwame\ ;
+栄冠 < eikan\ ;
+低価 < teika\ ;
+王水 < ousui\ ;
+今後 < kongo\ ;
+世界 < sekai\ ;
+孟女 < moujo\ ;
+飛来 < hirai\ ;
+二更 < nikou\ ;
+馬上 < bajou\ ;
+家人 < kenin\ ;
+仁恕 < jinjo\ ;
+孟夏 < mouka\ ;
+斑鳩 < ikaru\ ;
+風波 < fuuha\ ;
+今度 < kondo\ ;
+下疳 < gekan\ ;
+音色 < neiro\ ;
+而来 < jirai\ ;
+杜撰 < zusan\ ;
+譎詐 < kissa\ ;
+下界 < gekai\ ;
+下男 < genan\ ;
+下田 < geden\ ;
+暖簾 < noren\ ;
+他山 < tazan\ ;
+子女 < shijo\ ;
+王権 < ouken\ ;
+飛散 < hisan\ ;
+嬌態 < shina\ ;
+美男 < binan\ ;
+美田 < biden\ ;
+一生 < issei\ ;
+安全 < anzen\ ;
+五指 < goshi\ ;
+仏家 < bukke\ ;
+特記 < tokki\ ;
+既遂 < kisui\ ;
+題画 < daiga\ ;
+聖寿 < seiju\ ;
+謹話 < kinwa\ ;
+不犯 < fubon\ ;
+今宵 < koyoi\ ;
+五戒 < gokai\ ;
+杞憂 < kiyuu\ ;
+面部 < menbu\ ;
+明記 < meiki\ ;
+他姓 < tasei\ ;
+女郎 < jorou\ ;
+財布 < saifu\ ;
+未来 < mirai\ ;
+不燃 < funen\ ;
+一献 < ikkon\ ;
+施錠 < sejou\ ;
+安住 < anjuu\ ;
+座椅子 < zaisu\ ;
+非道 < hidou\ ;
+霧雰 < mufun\ ;
+板屋 < itaya\ ;
+五悪 < goaku\ ;
+学区 < gakku\ ;
+人寿 < jinju\ ;
+与点 < yoten\ ;
+人家 < jinka\ ;
+未明 < mimei\ ;
+互恵 < gokei\ ;
+面輪 < omowa\ ;
+貧富 < hinpu\ ;
+現場 < genba\ ;
+貧家 < hinka\ ;
+類火 < ruika\ ;
+存否 < zonpi\ ;
+板子 < itago\ ;
+奠都 < tento\ ;
+聖夜 < seiya\ ;
+今夏 < konka\ ;
+予想 < yosou\ ;
+任務 < ninmu\ ;
+方里 < houri\ ;
+王政 < ousei\ ;
+美点 < biten\ ;
+二念 < ninen\ ;
+講話 < kouwa\ ;
+賛否 < sanpi\ ;
+大雨 < ooame\ ;
+夕餉 < yuuge\ ;
+太陰 < taiin\ ;
+朝日 < asahi\ ;
+代員 < daiin\ ;
+上演 < jouen\ ;
+文雅 < bunga\ ;
+不満 < fuman\ ;
+贈与 < zouyo\ ;
+乱打 < randa\ ;
+外題 < gedai\ ;
+牡蠣 < borei\ ;
+奮起 < funki\ ;
+人夫 < ninpu\ ;
+耶嬢 < yajou\ ;
+妄語 < mougo\ ;
+貞婦 < teifu\ ;
+義民 < gimin\ ;
+語類 < gorui\ ;
+方途 < houto\ ;
+仏器 < bukki\ ;
+日課 < nikka\ ;
+語順 < gojun\ ;
+主査 < shusa\ ;
+多難 < tanan\ ;
+不浄 < fujou\ ;
+日記 < nikki\ ;
+以北 < ihoku\ ;
+子分 < kobun\ ;
+外需 < gaiju\ ;
+学位 < gakui\ ;
+本手 < honte\ ;
+貞女 < teijo\ ;
+音程 < ontei\ ;
+翻意 < hon''i\ ;
+謀議 < bougi\ ;
+不法 < fuhou\ ;
+代務 < daimu\ ;
+羅漢 < rakan\ ;
+罹災 < risai\ ;
+未成 < misei\ ;
+最期 < saigo\ ;
+雪駄 < setta\ ;
+夕陽 < yuuhi\ ;
+夜間 < yakan\ ;
+老後 < rougo\ ;
+旅費 < ryohi\ ;
+井守 < imori\ ;
+青貝 < aogai\ ;
+下水 < gesui\ ;
+奈辺 < nahen\ ;
+整除 < seijo\ ;
+不毛 < fumou\ ;
+下民 < gemin\ ;
+嫌悪 < ken''o\ ;
+貧土 < hindo\ ;
+電離 < denri\ ;
+類比 < ruihi\ ;
+不死 < fushi\ ;
+下段 < gedan\ ;
+零露 < reiro\ ;
+二封 < nifuu\ ;
+雷雲 < raiun\ ;
+他動 < tadou\ ;
+上歯 < uwaba\ ;
+二宮 < niguu\ ;
+他励 < tarei\ ;
+班員 < hanin\ ;
+諷誦 < fuuju\ ;
+一水 < issui\ ;
+予定 < yotei\ ;
+貴君 < kikun\ ;
+断路 < danro\ ;
+狼煙 < rouen\ ;
+貴名 < kimei\ ;
+仮令 < tatoe\ ;
+一段 < ittan\ ;
+一歳 < issai\ ;
+来場 < raiba\ ;
+音盤 < onban\ ;
+介助 < kaijo\ ;
+万機 < banki\ ;
+雪花菜 < okara\ ;
+飯場 < hanba\ ;
+大部 < daibu\ ;
+時空 < jikuu\ ;
+音痴 < onchi\ ;
+文部 < monbu\ ;
+暗澹 < antan\ ;
+話題 < wadai\ ;
+多重 < tajuu\ ;
+話頭 < watou\ ;
+事変 < jihen\ ;
+晩生 < okute\ ;
+雨間 < amaai\ ;
+妖艶 < youen\ ;
+外野 < gaiya\ ;
+下校 < gekou\ ;
+論議 < rongi\ ;
+読過 < dokka\ ;
+明美 < meibi\ ;
+付会 < fukai\ ;
+請負 < ukeoi\ ;
+主我 < shuga\ ;
+飽和 < houwa\ ;
+二塁 < nirui\ ;
+誤配 < gohai\ ;
+離間 < rikan\ ;
+翻字 < honji\ ;
+飛報 < hihou\ ;
+他人 < tanin\ ;
+外部 < gaibu\ ;
+論語 < rongo\ ;
+曜日 < youbi\ ;
+外郎 < uirou\ ;
+青蝿 < aobae\ ;
+罨法 < anpou\ ;
+老婆 < rouba\ ;
+財務 < zaimu\ ;
+下書 < gesho\ ;
+施行 < sekou\ ;
+最愛 < saiai\ ;
+曖昧 < aimai\ ;
+早苗 < sanae\ ;
+万朶 < banda\ ;
+本家 < honke\ ;
+外道 < gedou\ ;
+媚態 < bitai\ ;
+時短 < jitan\ ;
+暗涙 < anrui\ ;
+有心 < ushin\ ;
+現世 < genze\ ;
+暢気 < nonki\ ;
+老妓 < rougi\ ;
+未定 < mitei\ ;
+不易 < fueki\ ;
+未完 < mikan\ ;
+不明 < fumei\ ;
+貼付 < tenpu\ ;
+末季 < makki\ ;
+老女 < roujo\ ;
+一杯 < ippai\ ;
+美本 < bihon\ ;
+上映 < jouei\ ;
+王孫 < ouson\ ;
+下旬 < gejun\ ;
+不断 < fudan\ ;
+一本 < ippon\ ;
+不文 < fubun\ ;
+材器 < zaiki\ ;
+八百屋 < yaoya\ ;
+三日 < mikka\ ;
+始祖 < shiso\ ;
+不敏 < fubin\ ;
+豊富 < houfu\ ;
+美景 < bikei\ ;
+義挙 < gikyo\ ;
+談話 < danwa\ ;
+敬遠 < keien\ ;
+未婚 < mikon\ ;
+朝寝 < asane\ ;
+貸与 < taiyo\ ;
+負債 < fusai\ ;
+乙子 < otogo\ ;
+大豆 < daizu\ ;
+雨量 < uryou\ ;
+義手 < gishu\ ;
+一方 < ippou\ ;
+一斤 < ikkin\ ;
+義戦 < gisen\ ;
+誹謗 < hibou\ ;
+緋鯉 < higoi\ ;
+羈旅 < kiryo\ ;
+義憤 < gifun\ ;
+二君 < nikun\ ;
+世才 < sesai\ ;
+二号 < nigou\ ;
+最左 < saisa\ ;
+亡児 < bouji\ ;
+書庫 < shoko\ ;
+電路 < denro\ ;
+乙女 < otome\ ;
+文語 < bungo\ ;
+世態 < setai\ ;
+玩味 < ganmi\ ;
+顧慮 < koryo\ ;
+夜警 < yakei\ ;
+隠顕 < inken\ ;
+王城 < oujou\ ;
+上手 < jouzu\ ;
+本土 < hondo\ ;
+美挙 < bikyo\ ;
+一挙 < ikkyo\ ;
+離農 < rinou\ ;
+万戸 < banko\ ;
+音源 < ongen\ ;
+二分 < nibun\ ;
+暫時 < zanji\ ;
+明示 < meiji\ ;
+隠面 < inmen\ ;
+訴願 < sogan\ ;
+義弟 < gitei\ ;
+率土 < sotto\ ;
+交互 < kougo\ ;
+誤認 < gonin\ ;
+面罵 < menba\ ;
+外語 < gaigo\ ;
+多言 < tagen\ ;
+五倍 < gobai\ ;
+順次 < junji\ ;
+願意 < gan''i\ ;
+風土 < fuudo\ ;
+難路 < nanro\ ;
+燃費 < nenpi\ ;
+五体 < gotai\ ;
+有夏 < yuuka\ ;
+二倍 < nibai\ ;
+下御 < gegyo\ ;
+玩具 < gangu\ ;
+詭辯 < kiben\ ;
+奥義 < okugi\ ;
+電話 < denwa\ ;
+猛打 < mouda\ ;
+需要 < juyou\ ;
+大蛇 < daija\ ;
+朱印 < shuin\ ;
+外被 < gaihi\ ;
+最多 < saita\ ;
+不平 < fuhei\ ;
+女系 < jokei\ ;
+谷地 < yachi\ ;
+上座 < jouza\ ;
+縁辺 < enpen\ ;
+事件 < jiken\ ;
+二乗 < nijou\ ;
+上布 < joufu\ ;
+本務 < honmu\ ;
+二世 < nisei\ ;
+二三 < nisan\ ;
+譲渡 < jouto\ ;
+風味 < fuumi\ ;
+護法 < gohou\ ;
+豚児 < tonji\ ;
+難語 < nango\ ;
+故買 < kobai\ ;
+雑費 < zappi\ ;
+雑貨 < zakka\ ;
+下山 < gezan\ ;
+敗訴 < haiso\ ;
+声誉 < seiyo\ ;
+上屋 < uwaya\ ;
+王冠 < oukan\ ;
+風化 < fuuka\ ;
+暴徒 < bouto\ ;
+義妹 < gimai\ ;
+万寿 < banju\ ;
+類字 < ruiji\ ;
+降魔 < gouma\ ;
+音栓 < onsen\ ;
+韻書 < insho\ ;
+施米 < semai\ ;
+譲歩 < jouho\ ;
+文苑 < bunen\ ;
+美容 < biyou\ ;
+談義 < dangi\ ;
+隠遁 < inton\ ;
+一定 < ittei\ ;
+頓挫 < tonza\ ;
+雑記 < zakki\ ;
+隠退 < intai\ ;
+靱皮 < jinpi\ ;
+風儀 < fuugi\ ;
+除霊 < jorei\ ;
+塩類 < enrui\ ;
+陰門 < inmon\ ;
+旧痾 < kyuua\ ;
+韻文 < inbun\ ;
+最古 < saiko\ ;
+繁茂 < hanmo\ ;
+多芸 < tagei\ ;
+除隊 < jotai\ ;
+外苑 < gaien\ ;
+末世 < masse\ ;
+万夫 < banpu\ ;
+主務 < shumu\ ;
+諭示 < yushi\ ;
+雅言 < gagen\ ;
+無風 < mufuu\ ;
+面皮 < menpi\ ;
+頭巾 < zukin\ ;
+無類 < murui\ ;
+美大 < bidai\ ;
+線路 < senro\ ;
+無題 < mudai\ ;
+無頼 < burai\ ;
+試補 < shiho\ ;
+美声 < bisei\ ;
+多能 < tanou\ ;
+下城 < gejou\ ;
+是正 < zesei\ ;
+散華 < sange\ ;
+夏至 < geshi\ ;
+総身 < soumi\ ;
+不在 < fuzai\ ;
+誤聞 < gobun\ ;
+面画 < menga\ ;
+無電 < muden\ ;
+無難 < bunan\ ;
+外耳 < gaiji\ ;
+非番 < hiban\ ;
+有余 < yuuyo\ ;
+無限 < mugen\ ;
+不善 < fuzen\ ;
+不問 < fumon\ ;
+有事 < yuuji\ ;
+硫黄華 < iouka\ ;
+義勇 < giyuu\ ;
+頒布 < hanpu\ ;
+論破 < ronpa\ ;
+罵声 < basei\ ;
+下品 < gehin\ ;
+月下 < gekka\ ;
+訓辞 < kunji\ ;
+夢精 < musei\ ;
+音感 < onkan\ ;
+不参 < fusan\ ;
+順序 < junjo\ ;
+類句 < ruiku\ ;
+上古 < jouko\ ;
+三叉 < sansa\ ;
+険路 < kenro\ ;
+防除 < boujo\ ;
+不勢 < buzei\ ;
+話芸 < wagei\ ;
+美名 < bimei\ ;
+塩酸 < ensan\ ;
+大穴 < ooana\ ;
+猪口 < choko\ ;
+斤目 < kinme\ ;
+牧歌 < bokka\ ;
+下剤 < gezai\ ;
+無銭 < musen\ ;
+場面 < bamen\ ;
+言辞 < genji\ ;
+無銘 < mumei\ ;
+誤算 < gosan\ ;
+爪牙 < souga\ ;
+太祖 < taiso\ ;
+暗夜 < an''ya\ ;
+天祖 < tenso\ ;
+護憲 < goken\ ;
+多端 < tatan\ ;
+詠草 < eisou\ ;
+壮美 < soubi\ ;
+多種 < tashu\ ;
+無配 < muhai\ ;
+犯意 < han''i\ ;
+下僧 < gesou\ ;
+義人 < gijin\ ;
+一分 < ippun\ ;
+奇瑞 < kizui\ ;
+論理 < ronri\ ;
+大破 < taiha\ ;
+雅致 < gachi\ ;
+不倫 < furin\ ;
+話者 < washa\ ;
+日波 < nippo\ ;
+世代 < sedai\ ;
+世人 < sejin\ ;
+故老 < korou\ ;
+上値 < uwane\ ;
+無道 < mudou\ ;
+不便 < fuben\ ;
+増補 < zouho\ ;
+織目 < orime\ ;
+訓話 < kunwa\ ;
+無辺 < muhen\ ;
+隠蔽 < inpei\ ;
+羅典 < raten\ ;
+陰謀 < inbou\ ;
+訓詁 < kunko\ ;
+妓楼 < girou\ ;
+文目 < ayame\ ;
+変移 < hen''i\ ;
+下人 < genin\ ;
+暴利 < bouri\ ;
+暗喩 < an''yu\ ;
+塑造 < sozou\ ;
+婚儀 < kongi\ ;
+紙魚 < shimi\ ;
+万事 < banji\ ;
+諸派 < shoha\ ;
+上下 < jouge\ ;
+三世 < sanze\ ;
+電磁 < denji\ ;
+頑固 < ganko\ ;
+美人 < bijin\ ;
+罷免 < himen\ ;
+大瓶 < oobin\ ;
+言語 < gengo\ ;
+夷狄 < iteki\ ;
+暗君 < ankun\ ;
+暗合 < angou\ ;
+護岸 < gogan\ ;
+御神酒 < omiki\ ;
+物故 < bukko\ ;
+天理 < tenri\ ;
+素養 < soyou\ ;
+姐御 < anego\ ;
+夜番 < yoban\ ;
+露点 < roten\ ;
+音大 < ondai\ ;
+音声 < onsei\ ;
+多用 < tayou\ ;
+多産 < tasan\ ;
+素顔 < sugao\ ;
+改組 < kaiso\ ;
+紫雲 < shiun\ ;
+編者 < henja\ ;
+女権 < joken\ ;
+天狗 < tengu\ ;
+奥歯 < okuba\ ;
+早期 < souki\ ;
+素面 < sumen\ ;
+縫目 < nuime\ ;
+無謀 < mubou\ ;
+旅次 < ryoji\ ;
+日本 < nihon\ ;
+無論 < muron\ ;
+非業 < higou\ ;
+旦暮 < tanbo\ ;
+糸魚 < itoyo\ ;
+雨着 < amagi\ ;
+威圧 < iatsu\ ;
+無言 < mugon\ ;
+如是 < nyoze\ ;
+威嚇 < ikaku\ ;
+数理 < suuri\ ;
+熱砂 < nessa\ ;
+天火 < tenpi\ ;
+猊下 < geika\ ;
+防護 < bougo\ ;
+頭上 < zujou\ ;
+青梅 < aoume\ ;
+塗装 < tosou\ ;
+故知 < kochi\ ;
+隠線 < insen\ ;
+視野 < shiya\ ;
+陰茎 < inkei\ ;
+燠火 < okibi\ ;
+音名 < onmei\ ;
+妥当 < datou\ ;
+時報 < jihou\ ;
+経路 < keiro\ ;
+塩蔵 < enzou\ ;
+映射 < eisha\ ;
+諺文 < onmon\ ;
+墨絵 < sumie\ ;
+細部 < saibu\ ;
+練磨 < renma\ ;
+謝恩 < shaon\ ;
+昆布 < konbu\ ;
+雲煙 < un''en\ ;
+好打 < kouda\ ;
+防衛 < bouei\ ;
+大河 < taiga\ ;
+雷火 < raika\ ;
+網羅 < moura\ ;
+訓義 < kungi\ ;
+昨夜 < yuube\ ;
+無蓋 < mugai\ ;
+覇道 < hadou\ ;
+西部 < seibu\ ;
+雇用 < koyou\ ;
+音像 < onzou\ ;
+伊佐木 < isaki\ ;
+妻女 < saijo\ ;
+大歌 < oouta\ ;
+文殊 < monju\ ;
+無菌 < mukin\ ;
+文武 < bunbu\ ;
+慰安婦 < ianfu\ ;
+無茶 < mucha\ ;
+音便 < onbin\ ;
+多毛 < tamou\ ;
+大樹 < taiju\ ;
+外気 < gaiki\ ;
+無芸 < mugei\ ;
+大様 < ooyou\ ;
+製麻 < seima\ ;
+総社 < souja\ ;
+警句 < keiku\ ;
+非情 < hijou\ ;
+時化 < shike\ ;
+雨滴 < uteki\ ;
+雲海 < unkai\ ;
+雑煮 < zouni\ ;
+星図 < seizu\ ;
+要路 < youro\ ;
+女御 < nyogo\ ;
+斡旋 < assen\ ;
+雲泥 < undei\ ;
+警務 < keimu\ ;
+無能 < munou\ ;
+犬儒 < kenju\ ;
+大見得 < oomie\ ;
+数次 < suuji\ ;
+敵機 < tekki\ ;
+雲水 < unsui\ ;
+妖婆 < youba\ ;
+青息 < aoiki\ ;
+閑雅 < kanga\ ;
+大枝 < ooeda\ ;
+売淫 < baiin\ ;
+霧散 < musan\ ;
+女帝 < jotei\ ;
+線画 < senga\ ;
+新手 < arate\ ;
+無罪 < muzai\ ;
+散歩 < sanpo\ ;
+雨氷 < uhyou\ ;
+文書 < monjo\ ;
+既定 < kitei\ ;
+紛議 < fungi\ ;
+除算 < jozan\ ;
+議会 < gikai\ ;
+射手座 < iteza\ ;
+試演 < shien\ ;
+撫育 < buiku\ ;
+語根 < gokon\ ;
+熱波 < neppa\ ;
+多望 < tabou\ ;
+女尊 < joson\ ;
+牢固 < rouko\ ;
+話法 < wahou\ ;
+炉辺 < rohen\ ;
+煩瑣 < hansa\ ;
+総理 < souri\ ;
+無糖 < mutou\ ;
+陽皮 < youhi\ ;
+大損 < oozon\ ;
+露悪 < roaku\ ;
+犀利 < sairi\ ;
+多数 < tasuu\ ;
+網目 < amime\ ;
+天授 < tenju\ ;
+外方 < soppo\ ;
+粗餐 < sosan\ ;
+粗飯 < sohan\ ;
+閉鎖 < heisa\ ;
+素行 < sokou\ ;
+絹絵 < kinue\ ;
+譜代 < fudai\ ;
+塩税 < enzei\ ;
+絵絹 < eginu\ ;
+隠然 < inzen\ ;
+語数 < gosuu\ ;
+映倫 < eirin\ ;
+精鋭 < seiei\ ;
+雲景 < unkei\ ;
+版図 < hanto\ ;
+奇巌 < kigan\ ;
+姉上 < aneue\ ;
+無稽 < mukei\ ;
+襲衣 < shuui\ ;
+間遠 < madoo\ ;
+無税 < muzei\ ;
+詠歎 < eitan\ ;
+大愚 < taigu\ ;
+雲散 < unsan\ ;
+離村 < rison\ ;
+夜戦 < yasen\ ;
+不意気 < buiki\ ;
+絵筆 < efude\ ;
+多才 < tasai\ ;
+文意 < bun''i\ ;
+襤褸 < ranru\ ;
+大悟 < daigo\ ;
+無礼 < burei\ ;
+繻子 < shusu\ ;
+開運 < kaiun\ ;
+大恩 < daion\ ;
+該案 < gaian\ ;
+夢想 < musou\ ;
+襦袢 < juban\ ;
+難易 < nan''i\ ;
+旨味 < umami\ ;
+話柄 < wahei\ ;
+奉安 < houan\ ;
+堕胎 < datai\ ;
+多感 < takan\ ;
+播種 < hashu\ ;
+課役 < kaeki\ ;
+院生 < insei\ ;
+補題 < hodai\ ;
+多情 < tajou\ ;
+離散 < risan\ ;
+試案 < shian\ ;
+多恨 < takon\ ;
+大度 < taido\ ;
+敵意 < tekii\ ;
+文庫 < bunko\ ;
+見舞 < mimai\ ;
+堕罪 < dazai\ ;
+塩田 < enden\ ;
+無益 < mueki\ ;
+大差 < taisa\ ;
+大工 < daiku\ ;
+多形 < takei\ ;
+敬慕 < keibo\ ;
+援軍 < engun\ ;
+敬愛 < keiai\ ;
+多弁 < taben\ ;
+非命 < himei\ ;
+謀叛 < muhon\ ;
+粗銅 < sodou\ ;
+摩耗 < mamou\ ;
+父君 < fukun\ ;
+放映 < houei\ ;
+紅蓮 < guren\ ;
+雁木 < gangi\ ;
+裏面 < rimen\ ;
+方図 < houzu\ ;
+雨戸 < amado\ ;
+無用 < muyou\ ;
+牡丹 < botan\ ;
+大尾 < taibi\ ;
+粗酒 < soshu\ ;
+売手 < urite\ ;
+増派 < zouha\ ;
+誘引 < yuuin\ ;
+大家 < taike\ ;
+雅文 < gabun\ ;
+覇者 < hasha\ ;
+数度 < suudo\ ;
+大字 < ooaza\ ;
+断固 < danko\ ;
+荏胡麻 < egoma\ ;
+文字 < monji\ ;
+燕巣 < ensou\ ;
+奥印 < okuin\ ;
+夫婦 < meoto\ ;
+多層 < tasou\ ;
+訴権 < soken\ ;
+零度 < reido\ ;
+点者 < tenja\ ;
+絵画 < kaiga\ ;
+非凡 < hibon\ ;
+女優 < joyuu\ ;
+誤射 < gosha\ ;
+外宮 < gekuu\ ;
+太夫 < tayuu\ ;
+大奥 < oooku\ ;
+排除 < haijo\ ;
+如上 < jojou\ ;
+大声 < oogoe\ ;
+擬毛 < gimou\ ;
+契印 < keiin\ ;
+要素 < youso\ ;
+雲居 < kumoi\ ;
+露命 < romei\ ;
+陰毛 < inmou\ ;
+織地 < oriji\ ;
+霊夢 < reimu\ ;
+多大 < tadai\ ;
+捕鯨 < hogei\ ;
+多売 < tabai\ ;
+露台 < rodai\ ;
+繁多 < hanta\ ;
+除法 < johou\ ;
+焜炉 < konro\ ;
+離岸 < rigan\ ;
+炭素 < tanso\ ;
+外場 < gaiba\ ;
+離山 < rizan\ ;
+大嘘 < oouso\ ;
+数多 < suuta\ ;
+随時 < zuiji\ ;
+霊園 < reien\ ;
+政府 < seifu\ ;
+阿漕 < akogi\ ;
+斗南 < tonan\ ;
+売子 < uriko\ ;
+電場 < denba\ ;
+外因 < gaiin\ ;
+防火 < bouka\ ;
+露光 < rokou\ ;
+大味 < ooaji\ ;
+施主 < seshu\ ;
+無法 < muhou\ ;
+故山 < kozan\ ;
+大台 < oodai\ ;
+在野 < zaiya\ ;
+火色 < hiiro\ ;
+文句 < monku\ ;
+鼿 < gotsu\ ;
+無水 < musui\ ;
+鼎 < kanae\ ;
+無毛 < mumou\ ;
+図面 < zumen\ ;
+放屁 < houhi\ ;
+売女 < baita\ ;
+天助 < tenjo\ ;
+米貨 < beika\ ;
+無残 < muzan\ ;
+開花 < kaika\ ;
+夜叉 < yasha\ ;
+基盤 < kiban\ ;
+鷩 < hetsu\ ;
+大判 < ooban\ ;
+素直 < sunao\ ;
+親爺 < oyaji\ ;
+需品 < juhin\ ;
+補講 < hokou\ ;
+難場 < nanba\ ;
+鶍 < isuka\ ;
+売場 < uriba\ ;
+鶉 < uzura\ ;
+院本 < inpon\ ;
+多勢 < tazei\ ;
+四顧 < shiko\ ;
+大儒 < daiju\ ;
+夜前 < yazen\ ;
+米語 < beigo\ ;
+阻止 < soshi\ ;
+外務 < gaimu\ ;
+雑多 < zatta\ ;
+夜分 < yabun\ ;
+敗因 < haiin\ ;
+米話 < beiwa\ ;
+鱗 < uroko\ ;
+鰻 < unagi\ ;
+斉備 < seibi\ ;
+絵文字 < emoji\ ;
+墓所 < bosho\ ;
+鰒 < awabi\ ;
+鰏 < hyoku\ ;
+語勢 < gosei\ ;
+鰍 < inada\ ;
+誤判 < gohan\ ;
+鰉 < higai\ ;
+鯏 < asari\ ;
+図鑑 < zukan\ ;
+鮭 < shake\ ;
+雲台 < undai\ ;
+認否 < ninpi\ ;
+無根 < mukon\ ;
+変化 < henge\ ;
+認可 < ninka\ ;
+髺 < gatsu\ ;
+網戸 < amido\ ;
+記憶 < kioku\ ;
+文事 < bunji\ ;
+擬態 < gitai\ ;
+粗茶 < socha\ ;
+夜会 < yakai\ ;
+純理 < junri\ ;
+離合 < rigou\ ;
+難句 < nanku\ ;
+緞子 < donsu\ ;
+離反 < rihan\ ;
+素片 < sohen\ ;
+誤伝 < goden\ ;
+糸目 < itome\ ;
+絵柄 < egara\ ;
+記念 < kinen\ ;
+無断 < mudan\ ;
+陰惨 < insan\ ;
+無数 < musuu\ ;
+絵札 < efuda\ ;
+数価 < suuka\ ;
+綿布 < menpu\ ;
+電位 < den''i\ ;
+精粗 < seiso\ ;
+雨具 < amagu\ ;
+靨 < ekubo\ ;
+掩蔽 < enpei\ ;
+難儀 < nangi\ ;
+隉 < getsu\ ;
+試合 < shiai\ ;
+隠士 < inshi\ ;
+墳墓 < funbo\ ;
+衰運 < suiun\ ;
+雅号 < gagou\ ;
+詠吟 < eigin\ ;
+政務 < seimu\ ;
+場末 < basue\ ;
+綾子 < rinzu\ ;
+無才 < musai\ ;
+炬火 < kyoka\ ;
+米英 < beiei\ ;
+隠坊 < onbou\ ;
+隻句 < sekku\ ;
+無慮 < muryo\ ;
+堀江 < horie\ ;
+離任 < rinin\ ;
+結果 < kekka\ ;
+衰躯 < suiku\ ;
+難事 < nanji\ ;
+地蔵 < jizou\ ;
+無情 < mujou\ ;
+鏉 < shyuu\ ;
+鎧 < yoroi\ ;
+詐取 < sashu\ ;
+雅兄 < gakei\ ;
+錨 < ikari\ ;
+錘 < tsumu\ ;
+無念 < munen\ ;
+回路 < kairo\ ;
+親木 < oyagi\ ;
+雑作 < zousa\ ;
+限度 < gendo\ ;
+鈺 < gyoku\ ;
+塁打 < ruida\ ;
+土蔵 < dozou\ ;
+見様 < miyou\ ;
+故主 < koshu\ ;
+西欧 < seiou\ ;
+覇権 < haken\ ;
+粗笨 < sohon\ ;
+紡機 < bouki\ ;
+図解 < zukai\ ;
+地色 < jiiro\ ;
+土葬 < dosou\ ;
+措置 < sochi\ ;
+墓地 < bochi\ ;
+在英 < zaiei\ ;
+糜爛 < biran\ ;
+場所 < basho\ ;
+街路 < gairo\ ;
+塗工 < tokou\ ;
+随員 < zuiin\ ;
+拗音 < youon\ ;
+見栄 < mibae\ ;
+絹布 < kenpu\ ;
+無尽 < mujin\ ;
+除外 < jogai\ ;
+増員 < zouin\ ;
+絵巻 < emaki\ ;
+見本 < mihon\ ;
+院外 < ingai\ ;
+総務 < soumu\ ;
+闊歩 < kappo\ ;
+躵 < nerau\ ;
+隠元 < ingen\ ;
+無官 < mukan\ ;
+基本 < kihon\ ;
+粗砥 < arato\ ;
+報恩 < houon\ ;
+素材 < sozai\ ;
+総出 < soude\ ;
+園芸 < engei\ ;
+跛 < bikko\ ;
+捕虜 < horyo\ ;
+隣保 < rinpo\ ;
+墓参 < bosan\ ;
+裸眼 < ragan\ ;
+絶家 < zekke\ ;
+記号 < kigou\ ;
+濾紙 < roshi\ ;
+摩損 < mason\ ;
+塔婆 < touba\ ;
+素数 < sosuu\ ;
+墓前 < bozen\ ;
+親御 < oyago\ ;
+点播 < tenpa\ ;
+訴人 < sonin\ ;
+街衢 < gaiku\ ;
+開演 < kaien\ ;
+紋日 < monbi\ ;
+除号 < jogou\ ;
+困苦 < konku\ ;
+除去 < jokyo\ ;
+院号 < ingou\ ;
+隊伍 < taigo\ ;
+蟻酸 < gisan\ ;
+地租 < chiso\ ;
+細微 < saibi\ ;
+拝辞 < haiji\ ;
+土管 < dokan\ ;
+塊土 < kaido\ ;
+裏目 < urame\ ;
+視度 < shido\ ;
+粗煮 < arani\ ;
+視差 < shisa\ ;
+素性 < sujou\ ;
+細工 < saiku\ ;
+陪侍 < baiji\ ;
+堰堤 < entei\ ;
+藜 < akaza\ ;
+圧砕 < assai\ ;
+無効 < mukou\ ;
+地盤 < jiban\ ;
+薊 < azami\ ;
+火桶 < hioke\ ;
+捕縄 < hojou\ ;
+絶句 < zekku\ ;
+簡素 < kanso\ ;
+蔦 < tsuta\ ;
+蔤 < bitsu\ ;
+押送 < ousou\ ;
+土砂 < dosha\ ;
+点差 < tensa\ ;
+堡塁 < horui\ ;
+純度 < jundo\ ;
+圧痕 < akkon\ ;
+茨 < ibara\ ;
+茜 < akane\ ;
+精査 < seisa\ ;
+茀 < hutsu\ ;
+苶 < detsu\ ;
+恵比寿 < ebisu\ ;
+場味 < baaji\ ;
+烈婦 < reppu\ ;
+授産 < jusan\ ;
+無体 < mutai\ ;
+行脚 < angya\ ;
+無住 < mujuu\ ;
+揺曳 < youei\ ;
+土用 < doyou\ ;
+螺鈿 < raden\ ;
+無人 < munin\ ;
+土瓶 < dobin\ ;
+防具 < bougu\ ;
+長柄 < nagae\ ;
+襟度 < kindo\ ;
+衣糧 < iryou\ ;
+防備 < boubi\ ;
+肭 < dotsu\ ;
+結句 < kekku\ ;
+肋 < abara\ ;
+打順 < dajun\ ;
+摂家 < sekke\ ;
+堅固 < kengo\ ;
+手順 < tejun\ ;
+打電 < daden\ ;
+提案 < teian\ ;
+圧点 < atten\ ;
+補正 < hosei\ ;
+握斧 < akufu\ ;
+打開 < dakai\ ;
+要図 < youzu\ ;
+要因 < youin\ ;
+競馬 < keiba\ ;
+漏話 < rouwa\ ;
+採油 < saiyu\ ;
+場代 < badai\ ;
+粗暴 < sobou\ ;
+地温 < chion\ ;
+裏毛 < urake\ ;
+門扉 < monpi\ ;
+門戸 < monko\ ;
+粒 < tsubu\ ;
+披見 < hiken\ ;
+篩 < furui\ ;
+炭団 < tadon\ ;
+回目 < kaime\ ;
+滅金 < mekki\ ;
+筏 < ikada\ ;
+地歩 < chiho\ ;
+手錠 < tejou\ ;
+地歌 < jiuta\ ;
+門徒 < monto\ ;
+秫 < jotsu\ ;
+図版 < zuhan\ ;
+火山 < kazan\ ;
+系図 < keizu\ ;
+圧死 < asshi\ ;
+手金 < tekin\ ;
+土民 < domin\ ;
+点前 < temae\ ;
+探査 < tansa\ ;
+納受 < nouju\ ;
+手配 < tehai\ ;
+授権 < juken\ ;
+筆記 < hikki\ ;
+粗悪 < soaku\ ;
+素体 < sotai\ ;
+糞土 < fundo\ ;
+留守居 < rusui\ ;
+長居 < nagai\ ;
+漫罵 < manba\ ;
+端銭 < hasen\ ;
+疙 < gitsu\ ;
+不得手 < fuete\ ;
+箪笥 < tansu\ ;
+図法 < zuhou\ ;
+潤目 < urume\ ;
+湖面 < komen\ ;
+揚屋 < ageya\ ;
+裏手 < urate\ ;
+螟蛾 < meiga\ ;
+圧政 < assei\ ;
+押絵 < oshie\ ;
+湯銭 < yusen\ ;
+閲兵 < eppei\ ;
+補弦 < hogen\ ;
+行灯 < andon\ ;
+手話 < shuwa\ ;
+圧排 < appai\ ;
+営農 < einou\ ;
+手製 < tesei\ ;
+城下 < jouka\ ;
+粗大 < sodai\ ;
+固有 < koyuu\ ;
+温顔 < ongan\ ;
+炊事 < suiji\ ;
+炎上 < enjou\ ;
+捻挫 < nenza\ ;
+演算 < enzan\ ;
+温順 < onjun\ ;
+突飛 < toppi\ ;
+無意義 < muigi\ ;
+米寿 < beiju\ ;
+投網 < toami\ ;
+損保 < sonpo\ ;
+裏屋 < uraya\ ;
+措定 < sotei\ ;
+戦記 < senki\ ;
+手薄 < teusu\ ;
+在庫 < zaiko\ ;
+童話 < douwa\ ;
+間代 < madai\ ;
+圧巻 < akkan\ ;
+漫画 < manga\ ;
+揚句 < ageku\ ;
+補填 < hoten\ ;
+粗品 < sohin\ ;
+土工 < dokou\ ;
+四日 < yokka\ ;
+手荒 < teara\ ;
+米塩 < beien\ ;
+掩壕 < engou\ ;
+在家 < zaike\ ;
+補回 < hokai\ ;
+楾 < hazou\ ;
+椣 < shide\ ;
+門下 < monka\ ;
+噴火 < funka\ ;
+粗利 < arari\ ;
+裏地 < uraji\ ;
+淫風 < inpuu\ ;
+打者 < dasha\ ;
+栃 < tochi\ ;
+地声 < jigoe\ ;
+国庫 < kokko\ ;
+杁 < eburi\ ;
+筆禍 < hikka\ ;
+蜻蛉 < tonbo\ ;
+行方 < yukue\ ;
+裸像 < razou\ ;
+図形 < zukei\ ;
+PC < pīshī\ ;
+打線 < dasen\ ;
+地図 < chizu\ ;
+表意 < hyoui\ ;
+技研 < giken\ ;
+手織 < teori\ ;
+裸体 < ratai\ ;
+図工 < zukou\ ;
+衰微 < suibi\ ;
+裏名 < urana\ ;
+土塊 < dokai\ ;
+手練 < teren\ ;
+土塁 < dorui\ ;
+土塀 < dobei\ ;
+唐音 < touon\ ;
+因循 < injun\ ;
+簿外 < bogai\ ;
+採否 < saihi\ ;
+撥 < bachi\ ;
+技監 < gikan\ ;
+空輸 < kuuyu\ ;
+補充 < hojuu\ ;
+坑儒 < kouju\ ;
+固定 < kotei\ ;
+挙措 < kyoso\ ;
+打算 < dasan\ ;
+掟 < okite\ ;
+土嚢 < donou\ ;
+漸次 < zenji\ ;
+空路 < kuuro\ ;
+国威 < kokui\ ;
+潜時 < senji\ ;
+懤 < chyuu\ ;
+補任 < honin\ ;
+漫歩 < manpo\ ;
+漁火 < gyoka\ ;
+懇話 < konwa\ ;
+空費 < kuuhi\ ;
+蛮語 < bango\ ;
+戯絵 < zaree\ ;
+団子 < dango\ ;
+土台 < dodai\ ;
+涼雨 < ryouu\ ;
+坊主 < bouzu\ ;
+営繕 < eizen\ ;
+移駐 < ichuu\ ;
+虎魚 < okoze\ ;
+算木 < sangi\ ;
+手相 < tesou\ ;
+圧倒 < attou\ ;
+海鰻 < anago\ ;
+嶍 < shihu\ ;
+憂身 < ukimi\ ;
+批点 < hiten\ ;
+土偶 < doguu\ ;
+行宮 < anguu\ ;
+峠 < touge\ ;
+岏 < guwan\ ;
+哀願 < aigan\ ;
+土人 < dojin\ ;
+孰 < izure\ ;
+愛餐 < aisan\ ;
+嬇 < kuwai\ ;
+蛇行 < dakou\ ;
+浅黄 < asagi\ ;
+慶賀 < keiga\ ;
+街図 < gaizu\ ;
+壷 < tsubo\ ;
+打点 < daten\ ;
+漏斗 < routo\ ;
+渡船 < tosen\ ;
+淫行 < inkou\ ;
+垔 < shyou\ ;
+垏 < rotsu\ ;
+囮 < otori\ ;
+温習 < sarai\ ;
+節婦 < seppu\ ;
+喝破 < kappa\ ;
+嗧 < garon\ ;
+嗖 < shuhu\ ;
+和風 < wafuu\ ;
+螺旋 < rasen\ ;
+稟議 < ringi\ ;
+憂虞 < yuugu\ ;
+打法 < dahou\ ;
+哘 < sasou\ ;
+扶桑 < fusou\ ;
+虚辞 < kyoji\ ;
+衛兵 < eihei\ ;
+愚鈍 < gudon\ ;
+鼠輩 < sohai\ ;
+吋 < inchi\ ;
+回付 < kaifu\ ;
+卍 < manji\ ;
+鼠蹊 < sokei\ ;
+匁 < monme\ ;
+把握 < haaku\ ;
+渡米 < tobei\ ;
+拳固 < genko\ ;
+投打 < touda\ ;
+麒麟 < kirin\ ;
+憂苦 < yuuku\ ;
+嗟歎 < satan\ ;
+儲 < mouke\ ;
+海辺 < umibe\ ;
+愛車 < aisha\ ;
+打棒 < dabou\ ;
+偟 < kuwau\ ;
+倌 < kuwan\ ;
+悪魔 < akuma\ ;
+湯灌 < yukan\ ;
+手桶 < teoke\ ;
+稲荷 < inari\ ;
+浦辺 < urabe\ ;
+和金 < wakin\ ;
+麝香 < jakou\ ;
+鈍麻 < donma\ ;
+悪馬 < akume\ ;
+手本 < tehon\ ;
+乄 < shime\ ;
+減磨 < genma\ ;
+突破 < toppa\ ;
+海豚 < iruka\ ;
+蛇管 < jakan\ ;
+哀詩 < aishi\ ;
+打数 < dasuu\ ;
+愚論 < guron\ ;
+手斧 < teono\ ;
+拝受 < haiju\ ;
+浪費 < rouhi\ ;
+手数 < tesuu\ ;
+戸板 < toita\ ;
+漢土 < kando\ ;
+愚計 < gukei\ ;
+鉛錘 < ensui\ ;
+立派 < rippa\ ;
+愚見 < guken\ ;
+惹起 < jakki\ ;
+味醂 < mirin\ ;
+命運 < meiun\ ;
+秘計 < hikei\ ;
+蘇連 < soren\ ;
+愚行 < gukou\ ;
+空疎 < kuuso\ ;
+漁夫 < gyofu\ ;
+拝具 < haigu\ ;
+銀貨 < ginka\ ;
+端本 < hahon\ ;
+流転 < ruten\ ;
+浴衣 < yokui\ ;
+漁場 < gyoba\ ;
+意表 < ihyou\ ;
+戯文 < gibun\ ;
+液肥 < ekihi\ ;
+空理 < kuuri\ ;
+満期 < manki\ ;
+湖水 < kosui\ ;
+和讚 < wasan\ ;
+端数 < hasuu\ ;
+嘘字 < usoji\ ;
+成案 < seian\ ;
+波頭 < hatou\ ;
+愛蔵 < aizou\ ;
+麦酒 < biiru\ ;
+名馬 < meiba\ ;
+和訓 < wakun\ ;
+和解 < wakai\ ;
+波面 < hamen\ ;
+手当 < teate\ ;
+稲穂 < inaho\ ;
+鼻緒 < hanao\ ;
+和製 < wasei\ ;
+鋤簾 < joren\ ;
+和装 < wasou\ ;
+担保 < tanpo\ ;
+和裁 < wasai\ ;
+憂目 < ukime\ ;
+温湯 < ontou\ ;
+同音 < douon\ ;
+憮然 < buzen\ ;
+悪運 < akuun\ ;
+懸架 < kenga\ ;
+患部 < kanbu\ ;
+銘菓 < meika\ ;
+黒衣 < kokue\ ;
+悟道 < godou\ ;
+味見 < ajimi\ ;
+無意味 < muimi\ ;
+温水 < onsui\ ;
+鼻端 < bitan\ ;
+渡洋 < toyou\ ;
+愛育 < aiiku\ ;
+滅多 < metta\ ;
+淫猥 < inwai\ ;
+漁具 < gyogu\ ;
+悪路 < akuro\ ;
+情話 < jouwa\ ;
+種皮 < shuhi\ ;
+愚者 < gusha\ ;
+扇子 < sensu\ ;
+野馬 < nouma\ ;
+禅話 < zenwa\ ;
+我慢 < gaman\ ;
+古風 < kofuu\ ;
+空気 < kuuki\ ;
+空母 < kuubo\ ;
+唾液 < daeki\ ;
+満座 < manza\ ;
+営庭 < eitei\ ;
+虚空 < kokuu\ ;
+淵源 < engen\ ;
+和船 < wasen\ ;
+社運 < shaun\ ;
+批判 < hihan\ ;
+手垢 < teaka\ ;
+悪計 < akkei\ ;
+批准 < hijun\ ;
+鼓童 < kodou\ ;
+吏道 < rodou\ ;
+投与 < touyo\ ;
+懸想 < kesou\ ;
+受難 < junan\ ;
+戸外 < kogai\ ;
+懺悔 < zange\ ;
+鋳物 < imono\ ;
+温暖 < ondan\ ;
+渡来 < torai\ ;
+恥部 < chibu\ ;
+懸念 < kenen\ ;
+悪行 < akkou\ ;
+淡湖 < tanko\ ;
+成就 < jouju\ ;
+租税 < sozei\ ;
+善意 < zen''i\ ;
+古銭 < kosen\ ;
+童女 < doujo\ ;
+鼠疫 < soeki\ ;
+流罪 < ruzai\ ;
+嗚咽 < oetsu\ ;
+恩赦 < onsha\ ;
+手勢 < tezei\ ;
+意固地 < ikoji\ ;
+淘汰 < touta\ ;
+洒落 < share\ ;
+海砂 < kaisa\ ;
+台輪 < daiwa\ ;
+湖岸 < kogan\ ;
+洵美 < junbi\ ;
+第二 < daini\ ;
+示談 < jidan\ ;
+野郎 < yarou\ ;
+法語 < hougo\ ;
+合議 < gougi\ ;
+懇意 < kon''i\ ;
+懊悩 < ounou\ ;
+名誉 < meiyo\ ;
+愚痴 < guchi\ ;
+水鶏 < kuina\ ;
+叉銃 < sajuu\ ;
+温情 < onjou\ ;
+愛用 < aiyou\ ;
+懈怠 < getai\ ;
+愚生 < gusei\ ;
+釈迦 < shaka\ ;
+湯垢 < yuaka\ ;
+恋路 < koiji\ ;
+派米 < habei\ ;
+法被 < happi\ ;
+藍色 < aiiro\ ;
+端午 < tango\ ;
+虚無 < kyomu\ ;
+手代 < tedai\ ;
+受身 < ukemi\ ;
+渡御 < togyo\ ;
+水魔 < suima\ ;
+野趣 < yashu\ ;
+快音 < kaion\ ;
+所作 < shosa\ ;
+古豪 < kogou\ ;
+金貨 < kinka\ ;
+愛犬 < aiken\ ;
+磯辺 < isobe\ ;
+鼻汁 < bijuu\ ;
+惰眠 < damin\ ;
+悪罵 < akuba\ ;
+成句 < seiku\ ;
+所与 < shoyo\ ;
+古諺 < kogen\ ;
+稲木 < inagi\ ;
+古訓 < kokun\ ;
+空巣 < akisu\ ;
+悪縁 < akuen\ ;
+温存 < onzon\ ;
+受講 < jukou\ ;
+叡覧 < eiran\ ;
+危難 < kinan\ ;
+御辞儀 < ojigi\ ;
+必須 < hissu\ ;
+反語 < hango\ ;
+鼻根 < bikon\ ;
+反訴 < hanso\ ;
+鋭敏 < eibin\ ;
+愛液 < aieki\ ;
+名舗 < meiho\ ;
+派生 < hasei\ ;
+喇叭 < rappa\ ;
+鍼医 < harii\ ;
+怪訝 < kegen\ ;
+野蛮 < yaban\ ;
+印鑑 < inkan\ ;
+汚辱 < ojoku\ ;
+銃火 < juuka\ ;
+愚民 < gumin\ ;
+喪主 < moshu\ ;
+南阿 < nan''a\ ;
+黄班 < ouhan\ ;
+名義 < meigi\ ;
+民需 < minju\ ;
+虚栄 < kyoei\ ;
+涅槃 < nehan\ ;
+添字 < soeji\ ;
+員数 < inzuu\ ;
+浮気 < uwaki\ ;
+波紋 < hamon\ ;
+禅画 < zenga\ ;
+穴場 < anaba\ ;
+和漢 < wakan\ ;
+意欲 < iyoku\ ;
+野菜 < yasai\ ;
+古茶 < kocha\ ;
+神社 < jinja\ ;
+黄燐 < ourin\ ;
+浅瀬 < asase\ ;
+御難 < gonan\ ;
+野草 < yasou\ ;
+御陰 < okage\ ;
+蚕座 < sanza\ ;
+温厚 < onkou\ ;
+銀波 < ginpa\ ;
+銀河 < ginga\ ;
+慕情 < bojou\ ;
+和洋 < wayou\ ;
+名簿 < meibo\ ;
+淋巴 < rinpa\ ;
+慇懃 < ingin\ ;
+念誦 < nenju\ ;
+愛書 < aisho\ ;
+沿線 < ensen\ ;
+金肥 < kinpi\ ;
+原被 < genpi\ ;
+蕗草 < rosou\ ;
+気重 < kiomo\ ;
+南部 < nanbu\ ;
+淫売 < inbai\ ;
+秘本 < hihon\ ;
+愚昧 < gumai\ ;
+流浪 < rurou\ ;
+水路 < suiro\ ;
+気配 < kehai\ ;
+薬研 < yagen\ ;
+受胎 < jutai\ ;
+微醺 < bikun\ ;
+半里 < hanri\ ;
+稲子 < inago\ ;
+比類 < hirui\ ;
+流民 < rumin\ ;
+千里 < senri\ ;
+同祖 < douso\ ;
+鉄火 < tekka\ ;
+破顔 < hagan\ ;
+卑近 < hikin\ ;
+御釜 < okama\ ;
+御金 < okane\ ;
+浦曲 < urawa\ ;
+重縁 < juuen\ ;
+部首 < bushu\ ;
+都電 < toden\ ;
+愚挙 < gukyo\ ;
+哀憫 < aibin\ ;
+哀憐 < airen\ ;
+彩雲 < saiun\ ;
+部類 < burui\ ;
+蔬菜 < sosai\ ;
+和本 < wahon\ ;
+液安 < ekian\ ;
+空佐 < kuusa\ ;
+受納 < junou\ ;
+哀情 < aijou\ ;
+哀悼 < aitou\ ;
+和書 < washo\ ;
+憂哭 < ukine\ ;
+受粉 < jufun\ ;
+部面 < bumen\ ;
+矮鶏 < chabo\ ;
+毫釐 < gouri\ ;
+愛想 < aisou\ ;
+黄楊 < tsuge\ ;
+鋳型 < igata\ ;
+微賤 < bisen\ ;
+和文 < wabun\ ;
+薄着 < usugi\ ;
+波状 < hajou\ ;
+薄目 < usume\ ;
+徒輩 < tohai\ ;
+里程 < ritei\ ;
+蛇体 < jatai\ ;
+稽古 < keiko\ ;
+愚弟 < gutei\ ;
+愚弄 < gurou\ ;
+薫煙 < kunen\ ;
+治癒 < chiyu\ ;
+悲歎 < hitan\ ;
+汚臭 < oshuu\ ;
+卑言 < higen\ ;
+民話 < minwa\ ;
+比重 < hijuu\ ;
+禍根 < kakon\ ;
+野砲 < yahou\ ;
+愉快 < yukai\ ;
+穏健 < onken\ ;
+原義 < gengi\ ;
+阿弥陀 < amida\ ;
+油田 < yuden\ ;
+弾雨 < dan''u\ ;
+都邑 < toyuu\ ;
+半裸 < hanra\ ;
+御詠 < gyoei\ ;
+重目 < omome\ ;
+砂防 < sabou\ ;
+呪文 < jumon\ ;
+御覧 < goran\ ;
+吐瀉 < tosha\ ;
+淫乱 < inran\ ;
+神武 < jinmu\ ;
+合点 < gaten\ ;
+愛孫 < aison\ ;
+浅手 < asade\ ;
+蚕具 < sangu\ ;
+惰性 < dasei\ ;
+居合道 < iadou\ ;
+油状 < yujou\ ;
+野生 < yasei\ ;
+波浪 < harou\ ;
+蓮華 < renge\ ;
+愛婿 < aisei\ ;
+忍苦 < ninku\ ;
+銃座 < juuza\ ;
+原簿 < genbo\ ;
+銀座 < ginza\ ;
+愛妻 < aisai\ ;
+税吏 < zeiri\ ;
+愛好 < aikou\ ;
+労音 < rouon\ ;
+野獣 < yajuu\ ;
+野猪 < yacho\ ;
+水肥 < suihi\ ;
+募金 < bokin\ ;
+酸素 < sanso\ ;
+野犬 < yaken\ ;
+延髄 < enzui\ ;
+税務 < zeimu\ ;
+悪日 < akubi\ ;
+稚児 < chigo\ ;
+忍者 < ninja\ ;
+鼻内 < binai\ ;
+句点 < kuten\ ;
+破談 < hadan\ ;
+和尚 < oshou\ ;
+当路 < touro\ ;
+情愛 < jouai\ ;
+部財 < buzai\ ;
+鉄扉 < teppi\ ;
+海図 < kaizu\ ;
+愚問 < gumon\ ;
+水素 < suiso\ ;
+哀号 < aigou\ ;
+悲憤 < hifun\ ;
+麻幹 < ogara\ ;
+印籠 < inrou\ ;
+移入 < inyuu\ ;
+泰斗 < taito\ ;
+愛吟 < aigin\ ;
+重湯 < omoyu\ ;
+欺騙 < gihen\ ;
+御腹 < onaka\ ;
+悲恋 < hiren\ ;
+句法 < kuhou\ ;
+微罪 < bizai\ ;
+原画 < genga\ ;
+古法 < kohou\ ;
+虚偽 < kyogi\ ;
+勲記 < kunki\ ;
+金波 < kinpa\ ;
+海参 < iriko\ ;
+秘史 < hishi\ ;
+邪道 < jadou\ ;
+厳父 < genpu\ ;
+銀地 < ginji\ ;
+社是 < shaze\ ;
+海区 < kaiku\ ;
+印税 < inzei\ ;
+重油 < juuyu\ ;
+矮躯 < waiku\ ;
+悪心 < oshin\ ;
+汗疹 < asemo\ ;
+悪徒 < akuto\ ;
+硼素 < houso\ ;
+受洗 < jusen\ ;
+銀器 < ginki\ ;
+快癒 < kaiyu\ ;
+金歯 < kinba\ ;
+短路 < tanro\ ;
+遠音 < toone\ ;
+微細 < bisai\ ;
+勃起 < bokki\ ;
+愚僧 < gusou\ ;
+禅家 < zenke\ ;
+加配 < kahai\ ;
+品位 < hin''i\ ;
+欧風 < oufuu\ ;
+浄土 < joudo\ ;
+未通女 < oboko\ ;
+怒濤 < dotou\ ;
+惹句 < jakku\ ;
+磨淬 < masai\ ;
+永眠 < eimin\ ;
+強訴 < gouso\ ;
+咄嗟 < tossa\ ;
+武道 < budou\ ;
+反比 < hanpi\ ;
+印相 < inzou\ ;
+次類 < jirui\ ;
+反歯 < soppa\ ;
+剪除 < senjo\ ;
+醸母 < joubo\ ;
+武辺 < buhen\ ;
+座高 < zakou\ ;
+和名 < wamei\ ;
+愛人 < aijin\ ;
+和合 < wagou\ ;
+半端 < hanpa\ ;
+薄日 < usubi\ ;
+愚人 < gujin\ ;
+応用 < ouyou\ ;
+否応 < iyaou\ ;
+母艦 < bokan\ ;
+油断 < yudan\ ;
+母船 < bosen\ ;
+古来 < korai\ ;
+古書 < kosho\ ;
+野末 < nozue\ ;
+野望 < yabou\ ;
+正路 < seiro\ ;
+鉱区 < kouku\ ;
+波形 < hakei\ ;
+前非 < zenpi\ ;
+汚濁 < odaku\ ;
+碁盤 < goban\ ;
+弘誓 < guzei\ ;
+浮世 < ukiyo\ ;
+座頭 < zatou\ ;
+吐息 < toiki\ ;
+悪女 < akujo\ ;
+毛織 < keori\ ;
+江湖 < gouko\ ;
+恩愛 < on''ai\ ;
+悪夢 < akumu\ ;
+北緯 < hokui\ ;
+薄手 < usude\ ;
+恩恵 < onkei\ ;
+永牢 < eirou\ ;
+午睡 < gosui\ ;
+流刑 < rukei\ ;
+銀位 < gin''i\ ;
+南画 < nanga\ ;
+囲炉裏 < irori\ ;
+弁護 < bengo\ ;
+勤苦 < kinku\ ;
+助言 < jogon\ ;
+法度 < hatto\ ;
+情味 < joumi\ ;
+否定 < hitei\ ;
+影絵 < kagee\ ;
+同座 < douza\ ;
+破綻 < hatan\ ;
+派兵 < hahei\ ;
+禅味 < zenmi\ ;
+悪因 < akuin\ ;
+蒔絵 < makie\ ;
+匕箸 < hicho\ ;
+半田 < handa\ ;
+恋慕 < renbo\ ;
+重手 < omode\ ;
+武装 < busou\ ;
+卑猥 < hiwai\ ;
+破算 < hasan\ ;
+呑吐 < donto\ ;
+油彩 < yusai\ ;
+叡慮 < eiryo\ ;
+流人 < runin\ ;
+御璽 < gyoji\ ;
+取手 < totte\ ;
+名宛 < naate\ ;
+着類 < kirui\ ;
+歌論 < karon\ ;
+重愛 < juuai\ ;
+台座 < daiza\ ;
+割賦 < wappu\ ;
+真鯉 < magoi\ ;
+残花 < zanka\ ;
+黄人 < oujin\ ;
+水温 < suion\ ;
+運輸 < un''yu\ ;
+藩儒 < hanju\ ;
+麗句 < reiku\ ;
+葉茶 < hadja\ ;
+御玉 < otama\ ;
+道路 < douro\ ;
+運転 < unten\ ;
+初陣 < uijin\ ;
+連鎖 < rensa\ ;
+遍路 < henro\ ;
+鉛丹 < entan\ ;
+水泳 < suiei\ ;
+泥土 < deido\ ;
+友愛 < yuuai\ ;
+同夜 < douya\ ;
+重度 < juudo\ ;
+前輪 < maewa\ ;
+治安 < chian\ ;
+鈍器 < donki\ ;
+性愛 < seiai\ ;
+砂絵 < sunae\ ;
+沙弥 < shami\ ;
+祭具 < saigu\ ;
+配流 < hairu\ ;
+刈除 < gaijo\ ;
+怨恨 < enkon\ ;
+遠見 < toomi\ ;
+荷馬 < niuma\ ;
+真顔 < magao\ ;
+利鈍 < ridon\ ;
+思慕 < shibo\ ;
+怠惰 < taida\ ;
+利金 < rikin\ ;
+酔歩 < suiho\ ;
+凹面 < oumen\ ;
+吟味 < ginmi\ ;
+武芸 < bugei\ ;
+徒然 < tozen\ ;
+金子 < kinsu\ ;
+単比 < tanpi\ ;
+過言 < kagon\ ;
+社員 < shain\ ;
+悪事 < akuji\ ;
+彩画 < saiga\ ;
+薫化 < kunka\ ;
+祖先 < sosen\ ;
+鈍化 < donka\ ;
+別途 < betto\ ;
+台場 < daiba\ ;
+薄地 < usuji\ ;
+印材 < inzai\ ;
+平野 < heiya\ ;
+息吹 < ibuki\ ;
+名句 < meiku\ ;
+武者 < musha\ ;
+社務 < shamu\ ;
+原意 < gen''i\ ;
+古墳 < kofun\ ;
+野天 < noten\ ;
+合否 < gouhi\ ;
+労組 < rouso\ ;
+野外 < yagai\ ;
+座談 < zadan\ ;
+弗素 < fusso\ ;
+法務 < houmu\ ;
+御世辞 < oseji\ ;
+破片 < hahen\ ;
+吐剤 < tozai\ ;
+御殿 < goten\ ;
+区民 < kumin\ ;
+石 < koku\ ;
+迫 < haku\ ;
+迄 < made\ ;
+心 < shin\ ;
+込 < komu\ ;
+徴 < chou\ ;
+徳 < toku\ ;
+辱 < joku\ ;
+瞭 < ryou\ ;
+瞬 < shun\ ;
+復 < fuku\ ;
+彼 < kare\ ;
+役 < yaku\ ;
+影 < kage\ ;
+睦 < boku\ ;
+弾 < tama\ ;
+強 < kyou\ ;
+輯 < shuu\ ;
+眉 < mayu\ ;
+較 < kaku\ ;
+直 < hita\ ;
+軒 < noki\ ;
+廂 < shou\ ;
+皿 < sara\ ;
+庵 < iori\ ;
+皮 < kawa\ ;
+庭 < niwa\ ;
+店 < mise\ ;
+底 < soko\ ;
+躑 < teki\ ;
+躊 < chuu\ ;
+床 < yuka\ ;
+的 < mato\ ;
+幹 < miki\ ;
+平 < hira\ ;
+蹠 < seki\ ;
+癖 < kuse\ ;
+幅 < haba\ ;
+常 < towa\ ;
+希 < mare\ ;
+布 < nuno\ ;
+巻 < maki\ ;
+足 < ashi\ ;
+越 < etsu\ ;
+留 < ryuu\ ;
+申 < saru\ ;
+生 < nama\ ;
+崖 < gake\ ;
+崎 < saki\ ;
+峰 < mine\ ;
+賊 < zoku\ ;
+賃 < chin\ ;
+山 < yama\ ;
+屑 < kuzu\ ;
+豆 < mame\ ;
+琴 < koto\ ;
+対 < tsui\ ;
+寺 < tera\ ;
+富 < tomi\ ;
+寂 < sabi\ ;
+宿 < yado\ ;
+宮 < miya\ ;
+室 < muro\ ;
+玖 < kyuu\ ;
+玉 < dama\ ;
+安 < yasu\ ;
+守 < mori\ ;
+宅 < taku\ ;
+學 < gaku\ ;
+孫 < mago\ ;
+獨 < doku\ ;
+獄 < goku\ ;
+猫 < neko\ ;
+謡 < utai\ ;
+謎 < nazo\ ;
+嫁 < yome\ ;
+誰 < dare\ ;
+婿 < muko\ ;
+物 < mono\ ;
+牛 < ushi\ ;
+評 < hyou\ ;
+婆 < baba\ ;
+訳 < wake\ ;
+爆 < baku\ ;
+姫 < hime\ ;
+妙 < myou\ ;
+熊 < kuma\ ;
+煤 < susu\ ;
+焼 < yaki\ ;
+夫 < otto\ ;
+夢 < yume\ ;
+夜 < yoru\ ;
+外 < hoka\ ;
+裾 < suso\ ;
+壱 < ichi\ ;
+壓 < atsu\ ;
+壁 < kabe\ ;
+為 < tame\ ;
+炭 < sumi\ ;
+袖 < sode\ ;
+墓 < haka\ ;
+塩 < shio\ ;
+塞 < soku\ ;
+術 < sube\ ;
+行 < gyou\ ;
+瀝 < reki\ ;
+堀 < hori\ ;
+濁 < daku\ ;
+激 < geki\ ;
+垣 < kaki\ ;
+型 < kata\ ;
+蝉 < semi\ ;
+坂 < saka\ ;
+鼻 < hana\ ;
+園 < sono\ ;
+国 < kuni\ ;
+黴 < kabi\ ;
+黙 < moku\ ;
+黒 < kuro\ ;
+黍 < kibi\ ;
+蛇 < hebi\ ;
+溺 < deki\ ;
+麦 < mugi\ ;
+蚤 < nomi\ ;
+溢 < itsu\ ;
+溝 < mizo\ ;
+虎 < tora\ ;
+鷹 < taka\ ;
+藤 < fuji\ ;
+藁 < wara\ ;
+喉 < nodo\ ;
+浴 < yoku\ ;
+浜 < hama\ ;
+唯 < tada\ ;
+洞 < hora\ ;
+洛 < raku\ ;
+唖 < oshi\ ;
+蓮 < hasu\ ;
+鳩 < hato\ ;
+鳥 < tori\ ;
+泥 < doro\ ;
+波 < nami\ ;
+蓋 < futa\ ;
+沼 < numa\ ;
+蒻 < jaku\ ;
+蒲 < gama\ ;
+沢 < sawa\ ;
+鱈 < tara\ ;
+落 < ochi\ ;
+水 < mizu\ ;
+民 < tami\ ;
+右 < migi\ ;
+古 < furu\ ;
+母 < haha\ ;
+菊 < kiku\ ;
+友 < tomo\ ;
+又 < mata\ ;
+殿 < dono\ ;
+殻 < kara\ ;
+莢 < saya\ ;
+原 < hara\ ;
+草 < kusa\ ;
+升 < masu\ ;
+鬱 < utsu\ ;
+鬚 < hige\ ;
+匙 < saji\ ;
+北 < hoku\ ;
+茎 < kuki\ ;
+茅 < kaya\ ;
+匂 < niou\ ;
+髷 < mage\ ;
+髪 < kami\ ;
+苔 < koke\ ;
+骨 < hone\ ;
+助 < suke\ ;
+割 < wari\ ;
+機 < hata\ ;
+削 < saku\ ;
+船 < fune\ ;
+刺 < toge\ ;
+横 < yoko\ ;
+刈 < kari\ ;
+樅 < momi\ ;
+駒 < koma\ ;
+臍 < heso\ ;
+冬 < fuyu\ ;
+膝 < hiza\ ;
+膜 < maku\ ;
+首 < kubi\ ;
+円 < maru\ ;
+内 < uchi\ ;
+共 < domo\ ;
+業 < waza\ ;
+六 < roku\ ;
+入 < nyuu\ ;
+元 < moto\ ;
+儘 < mama\ ;
+脇 < waki\ ;
+脂 < yani\ ;
+胸 < mune\ ;
+棚 < tana\ ;
+肝 < kimo\ ;
+肘 < hiji\ ;
+傘 < kasa\ ;
+肌 < hada\ ;
+肉 < niku\ ;
+梃 < teko\ ;
+偽 < nise\ ;
+桐 < kiri\ ;
+桃 < momo\ ;
+桁 < keta\ ;
+耳 < mimi\ ;
+頬 < hoho\ ;
+栗 < kuri\ ;
+頃 < goro\ ;
+柚 < yuzu\ ;
+価 < atai\ ;
+杖 < tsue\ ;
+村 < mura\ ;
+杏 < anzu\ ;
+杉 < sugi\ ;
+伽 < togi\ ;
+札 < fuda\ ;
+雲 < kumo\ ;
+仲 < naka\ ;
+雪 < yuki\ ;
+雌 < mesu\ ;
+人 < hito\ ;
+隙 < suki\ ;
+暇 < hima\ ;
+之 < kore\ ;
+時 < toki\ ;
+昼 < hiru\ ;
+縦 < tate\ ;
+春 < haru\ ;
+丈 < dake\ ;
+縄 < nawa\ ;
+闇 < yami\ ;
+旅 < tabi\ ;
+綿 < wata\ ;
+絹 < kinu\ ;
+組 < kumi\ ;
+紐 < himo\ ;
+紅 < beni\ ;
+粥 < kayu\ ;
+粉 < kona\ ;
+米 < kome\ ;
+籠 < kago\ ;
+鐘 < kane\ ;
+揺 < yuri\ ;
+描 < byou\ ;
+箱 < hako\ ;
+管 < kuda\ ;
+鍵 < kagi\ ;
+鍋 < nabe\ ;
+筋 < suji\ ;
+等 < nado\ ;
+筈 < hazu\ ;
+筆 < fude\ ;
+笹 < sasa\ ;
+指 < yubi\ ;
+竹 < take\ ;
+窓 < mado\ ;
+銑 < zuku\ ;
+空 < sora\ ;
+扇 < ougi\ ;
+房 < fusa\ ;
+鈴 < suzu\ ;
+種 < tane\ ;
+我 < ware\ ;
+稍 < yaya\ ;
+程 < hodo\ ;
+針 < hari\ ;
+釜 < kama\ ;
+釘 < kugi\ ;
+禿 < hage\ ;
+憩 < ikoi\ ;
+酒 < sake\ ;
+態 < zama\ ;
+惑 < waku\ ;
+悪 < waru\ ;
+碧 < heki\ ;
+恥 < haji\ ;
+通 < tsuu\ ;
+砂 < suna\ ;
+応援 < ouen\ ;
+古器 < koki\ ;
+凍雨 < touu\ ;
+徒歩 < toho\ ;
+可否 < kahi\ ;
+徐歩 < joho\ ;
+庇護 < higo\ ;
+野営 < yaei\ ;
+法会 < houe\ ;
+同位 < doui\ ;
+危懼 < kigu\ ;
+句句 < kuku\ ;
+口受 < kuju\ ;
+治具 < jigu\ ;
+冷雨 < reiu\ ;
+当為 < toui\ ;
+右党 < utou\ ;
+遺精 < isei\ ;
+野卑 < yahi\ ;
+右傾 < ukei\ ;
+医書 < isho\ ;
+違背 < ihai\ ;
+怨嗟 < ensa\ ;
+鸚哥 < inko\ ;
+破毀 < haki\ ;
+反吐 < hedo\ ;
+反古 < hogo\ ;
+古儀 < kogi\ ;
+印度 < indo\ ;
+遺稿 < ikou\ ;
+相違 < soui\ ;
+座臥 < zaga\ ;
+帰途 < kito\ ;
+円顱 < enro\ ;
+磁場 < jiba\ ;
+古事 < koji\ ;
+永寿 < eiju\ ;
+往時 < ouji\ ;
+磁土 < jido\ ;
+鴉片 < ahen\ ;
+印字 < inji\ ;
+違算 < isan\ ;
+叙事 < joji\ ;
+磁器 < jiki\ ;
+微微 < bibi\ ;
+帰路 < kiro\ ;
+御意 < gyoi\ ;
+砂洲 < sasu\ ;
+午後 < gogo\ ;
+毀棄 < kiki\ ;
+遠祖 < enso\ ;
+後手 < gote\ ;
+干葉 < hiba\ ;
+引火 < inka\ ;
+御影 < goei\ ;
+樹陰 < juin\ ;
+英音 < eion\ ;
+汚名 < omei\ ;
+磁区 < jiku\ ;
+邪淫 < jain\ ;
+迂言 < ugen\ ;
+磁化 < jika\ ;
+医師 < ishi\ ;
+彼我 < higa\ ;
+危坐 < kiza\ ;
+機運 < kiun\ ;
+助演 < joen\ ;
+邪気 < jaki\ ;
+弥次 < yaji\ ;
+往往 < ouou\ ;
+刀自 < toji\ ;
+御子 < miko\ ;
+医官 < ikan\ ;
+加温 < kaon\ ;
+過疎 < kaso\ ;
+応募 < oubo\ ;
+遺漏 < irou\ ;
+後家 < goke\ ;
+医大 < idai\ ;
+殴打 < ouda\ ;
+歩武 < hobu\ ;
+違犯 < ihan\ ;
+円貨 < enka\ ;
+気味 < gimi\ ;
+気合 < kiai\ ;
+布衍 < fuen\ ;
+魔魅 < mami\ ;
+後場 < goba\ ;
+破家 < baka\ ;
+気化 < kika\ ;
+征夷 < seii\ ;
+水位 < suii\ ;
+円規 < enki\ ;
+盈虧 < eiki\ ;
+御名 < mina\ ;
+部屋 < heya\ ;
+英貨 < eika\ ;
+過渡 < kato\ ;
+違法 < ihou\ ;
+殷富 < inpu\ ;
+茣蓙 < goza\ ;
+英語 < eigo\ ;
+運河 < unga\ ;
+知恵 < chie\ ;
+運気 < unki\ ;
+輸贏 < yuei\ ;
+勢子 < seko\ ;
+包囲 < houi\ ;
+往古 < ouko\ ;
+加持 < kaji\ ;
+弧度 < kodo\ ;
+都営 < toei\ ;
+比喩 < hiyu\ ;
+遺文 < ibun\ ;
+逢瀬 < ouse\ ;
+出目 < deme\ ;
+武技 < bugi\ ;
+座洲 < zasu\ ;
+御代 < miyo\ ;
+医会 < ikai\ ;
+得体 < etai\ ;
+影印 < eiin\ ;
+円舞 < enbu\ ;
+鵜匠 < ujou\ ;
+母印 < boin\ ;
+逸機 < ikki\ ;
+部員 < buin\ ;
+皮膚 < hifu\ ;
+刷毛 < hake\ ;
+武庫 < buko\ ;
+機縁 < kien\ ;
+砂土 < sado\ ;
+遺恨 < ikon\ ;
+花譜 < kafu\ ;
+比価 < hika\ ;
+武家 < buke\ ;
+横臥 < ouga\ ;
+鬱金 < ukon\ ;
+比丘 < biku\ ;
+都下 < toka\ ;
+矢場 < yaba\ ;
+違憲 < iken\ ;
+延寿 < enju\ ;
+百舌 < mozu\ ;
+武夫 < bufu\ ;
+砂利 < jari\ ;
+部下 < buka\ ;
+瞽女 < goze\ ;
+出歯 < deba\ ;
+過度 < kado\ ;
+武器 < buki\ ;
+運座 < unza\ ;
+次序 < jijo\ ;
+模糊 < moko\ ;
+花芽 < kaga\ ;
+平易 < heii\ ;
+歩合 < buai\ ;
+疎音 < soin\ ;
+樹皮 < juhi\ ;
+府庫 < fuko\ ;
+遺品 < ihin\ ;
+疑雲 < giun\ ;
+遺命 < imei\ ;
+此処 < koko\ ;
+武具 < bugu\ ;
+几案 < kian\ ;
+武備 < bubi\ ;
+追手 < otte\ ;
+異風 < ifuu\ ;
+異類 < irui\ ;
+利己 < riko\ ;
+武事 < buji\ ;
+荊棘 < bara\ ;
+魔羅 < mara\ ;
+遺体 < itai\ ;
+遺伝 < iden\ ;
+過去 < kako\ ;
+欧化 < ouka\ ;
+疎遠 < soen\ ;
+疑辞 < giji\ ;
+左派 < saha\ ;
+艶美 < enbi\ ;
+驢馬 < roba\ ;
+岐阜 < gifu\ ;
+座員 < zain\ ;
+永々 < eiei\ ;
+真帆 < maho\ ;
+相手 < aite\ ;
+度合 < doai\ ;
+違例 < irei\ ;
+利器 < riki\ ;
+色絵 < iroe\ ;
+廃位 < haii\ ;
+布施 < fuse\ ;
+自費 < jihi\ ;
+自負 < jifu\ ;
+入江 < irie\ ;
+騾馬 < raba\ ;
+花王 < kaou\ ;
+棋院 < kiin\ ;
+帷幄 < iaku\ ;
+英武 < eibu\ ;
+異趣 < ishu\ ;
+具案 < guan\ ;
+自衛 < jiei\ ;
+異論 < iron\ ;
+相子 < aiko\ ;
+府下 < fuka\ ;
+魔王 < maou\ ;
+利他 < rita\ ;
+騎馬 < kiba\ ;
+機影 < kiei\ ;
+発条 < bane\ ;
+内意 < naii\ ;
+機序 < kijo\ ;
+帝威 < teii\ ;
+迂回 < ukai\ ;
+退位 < taii\ ;
+梅雨 < baiu\ ;
+模擬 < mogi\ ;
+円弧 < enko\ ;
+痲痺 < mahi\ ;
+目地 < meji\ ;
+円座 < enza\ ;
+花樹 < kaju\ ;
+画譜 < gafu\ ;
+機宜 < kigi\ ;
+尾部 < bibu\ ;
+盲唖 < moua\ ;
+依願 < igan\ ;
+依頼 < irai\ ;
+疑義 < gigi\ ;
+真似 < mane\ ;
+棋譜 < kifu\ ;
+児戯 < jigi\ ;
+真上 < maue\ ;
+希土 < kido\ ;
+臙脂 < enji\ ;
+偃臥 < enga\ ;
+胡麻 < goma\ ;
+栗鼠 < risu\ ;
+寺院 < jiin\ ;
+目処 < medo\ ;
+駄馬 < daba\ ;
+公家 < kuge\ ;
+鬱気 < ukki\ ;
+軽易 < keii\ ;
+英字 < eiji\ ;
+俚語 < rigo\ ;
+屠蘇 < toso\ ;
+駆除 < kujo\ ;
+寝間 < nema\ ;
+目上 < meue\ ;
+輪差 < wasa\ ;
+余韻 < yoin\ ;
+異端 < itan\ ;
+工合 < guai\ ;
+花序 < kajo\ ;
+山羊 < yagi\ ;
+苦土 < kudo\ ;
+寿賀 < juga\ ;
+自画 < jiga\ ;
+石斑魚 < ugui\ ;
+英和 < eiwa\ ;
+画素 < gaso\ ;
+梨花 < rika\ ;
+由縁 < yuen\ ;
+魚座 < uoza\ ;
+具備 < gubi\ ;
+越訴 < esso\ ;
+儒家 < juka\ ;
+起訴 < kiso\ ;
+俚耳 < riji\ ;
+家運 < kaun\ ;
+異状 < ijou\ ;
+楚楚 < soso\ ;
+饑餓 < kiga\ ;
+皇位 < koui\ ;
+家路 < ieji\ ;
+魔女 < majo\ ;
+饂飩 < udon\ ;
+字音 < jion\ ;
+寄語 < kigo\ ;
+耳鼻 < jibi\ ;
+餓鬼 < gaki\ ;
+胤裔 < inei\ ;
+儲位 < choi\ ;
+自棄 < yake\ ;
+理非 < rihi\ ;
+優位 < yuui\ ;
+栄誉 < eiyo\ ;
+輔佐 < hosa\ ;
+伊達 < date\ ;
+異様 < iyou\ ;
+余蘊 < youn\ ;
+家蚊 < ieka\ ;
+尼甫 < jiho\ ;
+偉材 < izai\ ;
+異本 < ihon\ ;
+植木 < ueki\ ;
+胼胝 < tako\ ;
+航宇 < kouu\ ;
+疑懼 < giku\ ;
+異数 < isuu\ ;
+疑惧 < gigu\ ;
+魁偉 < kaii\ ;
+保無 < homu\ ;
+自愛 < jiai\ ;
+栄華 < eiga\ ;
+偉挙 < ikyo\ ;
+偉才 < isai\ ;
+理路 < riro\ ;
+賦詠 < fuei\ ;
+畏敬 < ikei\ ;
+保温 < hoon\ ;
+画架 < gaka\ ;
+二院 < niin\ ;
+自己 < jiko\ ;
+豪雨 < gouu\ ;
+付議 < fugi\ ;
+保母 < hobo\ ;
+安臥 < anga\ ;
+亜鈴 < arei\ ;
+付記 < fuki\ ;
+小火 < boya\ ;
+駄目 < dame\ ;
+屋根 < yane\ ;
+依然 < izen\ ;
+異存 < izon\ ;
+二部 < nibu\ ;
+風雨 < fuuu\ ;
+楕円 < daen\ ;
+偽印 < giin\ ;
+異変 < ihen\ ;
+留守 < rusu\ ;
+位相 < isou\ ;
+一鼓 < ikko\ ;
+用意 < youi\ ;
+耳語 < jigo\ ;
+異域 < iiki\ ;
+保持 < hoji\ ;
+興亜 < koua\ ;
+瓦斯 < gasu\ ;
+自利 < jiri\ ;
+余煙 < yoen\ ;
+下駄 < geta\ ;
+下馬 < geba\ ;
+假名 < kana\ ;
+異同 < idou\ ;
+耶蘇 < yaso\ ;
+瑠璃 < ruri\ ;
+偉勲 < ikun\ ;
+久遠 < kuon\ ;
+自余 < jiyo\ ;
+不離 < furi\ ;
+自他 < jita\ ;
+美音 < bion\ ;
+子等 < kora\ ;
+下院 < kain\ ;
+不間 < buma\ ;
+画因 < gain\ ;
+余波 < yoha\ ;
+畏友 < iyuu\ ;
+小手 < kote\ ;
+趣意 < shui\ ;
+偉人 < ijin\ ;
+保安 < hoan\ ;
+余殃 < yoou\ ;
+路地 < roji\ ;
+琵琶 < biwa\ ;
+暮雲 < boun\ ;
+胃液 < ieki\ ;
+亜聖 < asei\ ;
+下野 < geya\ ;
+上野 < ueno\ ;
+肌理 < kime\ ;
+馴染 < naji\ ;
+亜群 < agun\ ;
+世辞 < seji\ ;
+不運 < fuun\ ;
+余栄 < yoei\ ;
+梨園 < rien\ ;
+供御 < gugo\ ;
+路加 < ruka\ ;
+亜綱 < akou\ ;
+余暇 < yoka\ ;
+一過 < ikka\ ;
+小屋 < koya\ ;
+一途 < itto\ ;
+美辞 < biji\ ;
+安気 < anki\ ;
+栄枯 < eiko\ ;
+寓意 < guui\ ;
+世話 < sewa\ ;
+亜種 < ashu\ ;
+晴雨 < seiu\ ;
+小夜 < sayo\ ;
+飛簷 < hien\ ;
+音頭 < ondo\ ;
+余技 < yogi\ ;
+不語 < fugo\ ;
+余所 < yoso\ ;
+王者 < ouja\ ;
+暗部 < anbu\ ;
+供奉 < gubu\ ;
+害意 < gaii\ ;
+予示 < yoji\ ;
+安易 < an''i\ ;
+下衆 < gesu\ ;
+上衣 < joui\ ;
+字母 < jibo\ ;
+背戸 < sedo\ ;
+寄席 < yose\ ;
+佳宴 < kaen\ ;
+犠飛 < gihi\ ;
+不虞 < fugu\ ;
+腐儒 < fuju\ ;
+罵詈 < bari\ ;
+他派 < taha\ ;
+安打 < anda\ ;
+暗譜 < anpu\ ;
+是非 < zehi\ ;
+家家 < ieie\ ;
+枸杞 < kuko\ ;
+猿臂 < enpi\ ;
+云爾 < unji\ ;
+亜炭 < atan\ ;
+以東 < itou\ ;
+安座 < anza\ ;
+旗鼓 < kiko\ ;
+鞍馬 < anba\ ;
+一臂 < ippi\ ;
+木瓜 < boke\ ;
+肩巾 < hire\ ;
+時運 < jiun\ ;
+韻語 < ingo\ ;
+音譜 < onpu\ ;
+上絵 < uwae\ ;
+孤影 < koei\ ;
+案価 < anka\ ;
+猛者 < mosa\ ;
+羽目 < hame\ ;
+護謨 < gomu\ ;
+二次 < niji\ ;
+如露 < joro\ ;
+不穏 < fuon\ ;
+安堵 < ando\ ;
+馬具 < bagu\ ;
+他愛 < taai\ ;
+家出 < iede\ ;
+安固 < anko\ ;
+家具 < kagu\ ;
+不磨 < fuma\ ;
+日間 < hiai\ ;
+伎女 < gijo\ ;
+寄与 < kiyo\ ;
+青青 < aoao\ ;
+二期 < niki\ ;
+安否 < anpi\ ;
+胡乱 < uron\ ;
+予期 < yoki\ ;
+義理 < giri\ ;
+譏誹 < kihi\ ;
+下痢 < geri\ ;
+賭場 < toba\ ;
+賀宴 < gaen\ ;
+宇内 < udai\ ;
+以外 < igai\ ;
+夢魔 < muma\ ;
+来意 < raii\ ;
+暗示 < anji\ ;
+安保 < anpo\ ;
+非運 < hiun\ ;
+聾唖 < roua\ ;
+羽毛 < umou\ ;
+音素 < onso\ ;
+贈位 < zoui\ ;
+付図 < fuzu\ ;
+予後 < yogo\ ;
+二度 < nido\ ;
+義気 < giki\ ;
+義母 < gibo\ ;
+語音 < goon\ ;
+以南 < inan\ ;
+夜陰 < yain\ ;
+付和 < fuwa\ ;
+王手 < oute\ ;
+羽根 < hane\ ;
+非議 < higi\ ;
+以内 < inai\ ;
+一派 < ippa\ ;
+三毛 < mike\ ;
+雷雨 < raiu\ ;
+雑魚 < jako\ ;
+護符 < gofu\ ;
+雲霧 < unmu\ ;
+賦与 < fuyo\ ;
+大野 < oono\ ;
+一歩 < ippo\ ;
+斎部 < inbe\ ;
+代位 < daii\ ;
+王座 < ouza\ ;
+代代 < yoyo\ ;
+他事 < taji\ ;
+狒狒 < hihi\ ;
+狐狸 < kori\ ;
+露語 < rogo\ ;
+大路 < ooji\ ;
+王家 < ouke\ ;
+義援 < gien\ ;
+王妃 < ouhi\ ;
+王女 < oujo\ ;
+青葉 < aoba\ ;
+青菜 < aona\ ;
+互助 < gojo\ ;
+五分 < gobu\ ;
+事務 < jimu\ ;
+下手 < heta\ ;
+下戸 < geko\ ;
+東亞 < toua\ ;
+木地 < kiji\ ;
+王土 < oudo\ ;
+美技 < bigi\ ;
+誤記 < goki\ ;
+音波 < onpa\ ;
+韻母 < inbo\ ;
+予備 < yobi\ ;
+二価 < nika\ ;
+施肥 < sehi\ ;
+二佐 < nisa\ ;
+早稲 < wase\ ;
+煙霧 < enmu\ ;
+煙雨 < en''u\ ;
+風呂 < furo\ ;
+乾位 < keni\ ;
+擬音 < gion\ ;
+縁起 < engi\ ;
+九分 < kubu\ ;
+不安 < fuan\ ;
+父祖 < fuso\ ;
+一家 < ikke\ ;
+陰阜 < infu\ ;
+暗愚 < angu\ ;
+与太 < yota\ ;
+下女 < gejo\ ;
+無駄 < muda\ ;
+縁語 < engo\ ;
+雅語 < gago\ ;
+獣医 < juui\ ;
+美姫 < biki\ ;
+婦女 < fujo\ ;
+風位 < fuui\ ;
+美女 < bijo\ ;
+青砥 < aoto\ ;
+無音 < muon\ ;
+議案 < gian\ ;
+不図 < futo\ ;
+隘路 < airo\ ;
+猛威 < moui\ ;
+多義 < tagi\ ;
+暴威 < boui\ ;
+語義 < gogi\ ;
+陰部 < inbu\ ;
+女王 < joou\ ;
+非理 < hiri\ ;
+雲脂 < fuke\ ;
+義務 < gimu\ ;
+離苦 < riku\ ;
+青田 < aota\ ;
+不味 < fumi\ ;
+三味 < sami\ ;
+下句 < geku\ ;
+縷縷 < ruru\ ;
+壁蝨 < dani\ ;
+美味 < bimi\ ;
+下卑 < gebi\ ;
+護持 < goji\ ;
+一句 < ikku\ ;
+無鉛 < muen\ ;
+美化 < bika\ ;
+不備 < fubi\ ;
+犠打 < gida\ ;
+外科 < geka\ ;
+大目 < oome\ ;
+縁者 < enja\ ;
+日歩 < hibu\ ;
+音字 < onji\ ;
+院議 < ingi\ ;
+一佐 < issa\ ;
+父母 < fubo\ ;
+非毀 < hiki\ ;
+時差 < jisa\ ;
+細雨 < saiu\ ;
+霊異 < reii\ ;
+基音 < kion\ ;
+緯線 < isen\ ;
+隠者 < inja\ ;
+閻魔 < enma\ ;
+日日 < hibi\ ;
+数珠 < juzu\ ;
+陰萎 < in''i\ ;
+音吐 < onto\ ;
+音叉 < onsa\ ;
+青木 < aoki\ ;
+威厳 < igen\ ;
+謝意 < shai\ ;
+綺羅 < kira\ ;
+基部 < kibu\ ;
+如意 < nyoi\ ;
+好悪 < kouo\ ;
+音価 < onka\ ;
+既往 < kiou\ ;
+奥意 < okui\ ;
+墓碑 < bohi\ ;
+雨水 < usui\ ;
+夜暗 < yaan\ ;
+時事 < jiji\ ;
+委任 < inin\ ;
+奴婢 < nuhi\ ;
+大手 < oode\ ;
+露座 < roza\ ;
+陰画 < inga\ ;
+壊死 < eshi\ ;
+無碍 < muge\ ;
+詐欺 < sagi\ ;
+青地 < aoji\ ;
+青図 < aozu\ ;
+粗野 < soya\ ;
+大屋 < ooya\ ;
+誤差 < gosa\ ;
+無理 < muri\ ;
+夢寐 < mubi\ ;
+多岐 < taki\ ;
+煙波 < enpa\ ;
+旧事 < kuji\ ;
+語尾 < gobi\ ;
+露営 < roei\ ;
+陰気 < inki\ ;
+多多 < tata\ ;
+土間 < doma\ ;
+措辞 < soji\ ;
+無派 < muha\ ;
+濾過 < roka\ ;
+齱 < seku\ ;
+雨天 < uten\ ;
+雨声 < usei\ ;
+鼏 < beki\ ;
+無比 < muhi\ ;
+見目 < mime\ ;
+麿 < maro\ ;
+雨域 < uiki\ ;
+夜半 < yowa\ ;
+鶪 < keki\ ;
+無機 < muki\ ;
+鴨 < kamo\ ;
+隠微 < inbi\ ;
+補記 < hoki\ ;
+随意 < zuii\ ;
+鱧 < hamo\ ;
+鱚 < kisu\ ;
+鰤 < buri\ ;
+鰙 < haya\ ;
+鰐 < wani\ ;
+夜具 < yagu\ ;
+鯖 < saba\ ;
+鯔 < bora\ ;
+鯊 < haze\ ;
+鮴 < gori\ ;
+鮲 < mate\ ;
+鮫 < same\ ;
+鮒 < funa\ ;
+魹 < todo\ ;
+骭 < hagi\ ;
+骉 < hyuu\ ;
+粗菓 < soka\ ;
+火箭 < hiya\ ;
+絵本 < ehon\ ;
+韮 < nira\ ;
+鞠 < mari\ ;
+土語 < dogo\ ;
+靄 < moya\ ;
+地衣 < chii\ ;
+雇員 < koin\ ;
+雅味 < gami\ ;
+簿記 < boki\ ;
+閖 < yuru\ ;
+無手 < mute\ ;
+無我 < muga\ ;
+鑓 < yari\ ;
+鑃 < tyou\ ;
+阿房 < ahou\ ;
+鍬 < kuwa\ ;
+補肥 < hohi\ ;
+鉾 < hoko\ ;
+規模 < kibo\ ;
+袈裟 < kesa\ ;
+鄙 < hina\ ;
+塗布 < tofu\ ;
+逩 < kamu\ ;
+逧 < sako\ ;
+迍 < chun\ ;
+轌 < sori\ ;
+除夜 < joya\ ;
+火炉 < karo\ ;
+賭 < kake\ ;
+押韻 < ouin\ ;
+擬古 < giko\ ;
+豚 < buta\ ;
+無垢 < muku\ ;
+無地 < muji\ ;
+襞 < hida\ ;
+素手 < sude\ ;
+褱 < kaie\ ;
+裛 < youu\ ;
+袰 < horo\ ;
+蟹 < kani\ ;
+無味 < mumi\ ;
+蚋 < buyo\ ;
+虙 < huku\ ;
+藪 < yabu\ ;
+蕪 < kabu\ ;
+蔇 < kike\ ;
+蓼 < tade\ ;
+蓑 < mino\ ;
+葱 < negi\ ;
+院主 < inju\ ;
+堂宇 < douu\ ;
+阿兄 < akei\ ;
+苆 < susa\ ;
+芹 < seri\ ;
+無価 < muka\ ;
+芒 < nogi\ ;
+場合 < baai\ ;
+絵像 < ezou\ ;
+無二 < muni\ ;
+膃 < otsu\ ;
+脛 < sune\ ;
+衣紋 < emon\ ;
+納屋 < naya\ ;
+見場 < miba\ ;
+笑顔 < egao\ ;
+罠 < wana\ ;
+揶揄 < yayu\ ;
+綛 < kase\ ;
+粗朶 < soda\ ;
+糠 < nuka\ ;
+糊 < nori\ ;
+手間 < tema\ ;
+図画 < zuga\ ;
+粂 < kume\ ;
+簗 < yana\ ;
+箍 < taga\ ;
+箆 < hera\ ;
+笊 < zaru\ ;
+火屋 < hoya\ ;
+瀬戸 < seto\ ;
+螻蛄 < kera\ ;
+瘤 < kobu\ ;
+間夫 < mabu\ ;
+甕 < mika\ ;
+粗布 < sofu\ ;
+瑕 < kizu\ ;
+獶 < nyou\ ;
+蛙黽 < abou\ ;
+掏摸 < suri\ ;
+燸 < jiyu\ ;
+裸婦 < rafu\ ;
+図案 < zuan\ ;
+土手 < dote\ ;
+滓 < kasu\ ;
+温雅 < onga\ ;
+援助 < enjo\ ;
+齟齬 < sogo\ ;
+橳 < nude\ ;
+橲 < zusa\ ;
+四方 < yomo\ ;
+樽 < taru\ ;
+樺 < kaba\ ;
+楅 < hyku\ ;
+椨 < tafu\ ;
+椥 < nagi\ ;
+栂 < toga\ ;
+杣 < soma\ ;
+国府 < kofu\ ;
+捻子 < neji\ ;
+手羽 < teba\ ;
+淫雨 < in''u\ ;
+補助 < hojo\ ;
+湯葉 < yuba\ ;
+土器 < doki\ ;
+按摩 < anma\ ;
+扨 < sate\ ;
+授受 < juju\ ;
+打破 < daha\ ;
+拿捕 < daho\ ;
+土匪 < dohi\ ;
+彶 < kihu\ ;
+弶 < gyau\ ;
+弗 < doru\ ;
+弓 < yumi\ ;
+廧 < shau\ ;
+帤 < geyo\ ;
+帢 < kahu\ ;
+巤 < rehu\ ;
+嶯 < shiu\ ;
+嵀 < chiu\ ;
+在位 < zaii\ ;
+崨 < sehu\ ;
+峅 < kura\ ;
+浮塵子 < unka\ ;
+屶 < nata\ ;
+愛馬 < aiba\ ;
+宨 < tewa\ ;
+授与 < juyo\ ;
+四囲 < shii\ ;
+固化 < koka\ ;
+愛飲 < aiin\ ;
+嬼 < riwa\ ;
+哀音 < aion\ ;
+嬶 < kaka\ ;
+媃 < jyuu\ ;
+回向 < ekou\ ;
+戯画 < giga\ ;
+塾 < juku\ ;
+埖 < gomi\ ;
+慰謝 < isha\ ;
+圾 < gyuu\ ;
+嘸 < sazo\ ;
+嘁 < sahu\ ;
+嗽 < ugai\ ;
+喢 < tehu\ ;
+啦 < rahu\ ;
+和音 < waon\ ;
+咶 < kuui\ ;
+押忍 < ossu\ ;
+移転 < iten\ ;
+銅鑼 < dora\ ;
+劋 < syou\ ;
+凸 < deko\ ;
+愛輝 < aiki\ ;
+湯煮 < yuni\ ;
+悪鬼 < akki\ ;
+俇 < kyau\ ;
+侠 < kyan\ ;
+佗 < wabi\ ;
+亀 < kame\ ;
+也 < nari\ ;
+愛護 < aigo\ ;
+哀話 < aiwa\ ;
+哀訴 < aiso\ ;
+呉須 < gosu\ ;
+秘話 < hiwa\ ;
+湯気 < yuge\ ;
+黄身 < kimi\ ;
+和議 < wagi\ ;
+和語 < wago\ ;
+吐露 < toro\ ;
+恩顧 < onko\ ;
+恵雨 < keiu\ ;
+海芋 < kaiu\ ;
+浄衣 < joue\ ;
+蕎麦 < soba\ ;
+鸚鵡 < oumu\ ;
+合間 < aima\ ;
+右面 < umen\ ;
+鼻祖 < biso\ ;
+悪貨 < akka\ ;
+渡欧 < toou\ ;
+古音 < koon\ ;
+嘔吐 < outo\ ;
+和英 < waei\ ;
+古雅 < koga\ ;
+滋味 < jimi\ ;
+唖然 < azen\ ;
+蘇芳 < suou\ ;
+藍褸 < boro\ ;
+悪衣 < akui\ ;
+湯屋 < yuya\ ;
+唾棄 < daki\ ;
+右辺 < uhen\ ;
+喜寿 < kiju\ ;
+湯女 < yuna\ ;
+厭離 < onri\ ;
+鼻炎 < bien\ ;
+野辺 < nobe\ ;
+恩誼 < ongi\ ;
+野路 < noji\ ;
+呪符 < jufu\ ;
+古語 < kogo\ ;
+営利 < eiri\ ;
+応需 < ouju\ ;
+我利 < gari\ ;
+移民 < imin\ ;
+喇嘛 < rama\ ;
+憎悪 < zouo\ ;
+右葉 < uyou\ ;
+哀歌 < aika\ ;
+受蘊 < juun\ ;
+御顔 < okao\ ;
+鹵簿 < robo\ ;
+十雨 < juuu\ ;
+右脳 < unou\ ;
+温和 < onwa\ ;
+永遠 < eien\ ;
+野良 < nora\ ;
+海松 < miru\ ;
+和歌 < waka\ ;
+汚行 < okou\ ;
+破風 < hafu\ ;
+愛撫 < aibu\ ;
+黄泉 < yomi\ ;
+応訴 < ouso\ ;
+哀慕 < aibo\ ;
+合着 < aigi\ ;
+御身 < onmi\ ;
+慰問 < imon\ ;
+区費 < kuhi\ ;
+呆気 < akke\ ;
+邪魔 < jama\ ;
+都鄙 < tohi\ ;
+破邪 < haja\ ;
+往路 < ouro\ ;
+邪飛 < jahi\ ;
+祖母 < sobo\ ;
+派手 < hade\ ;
+弥陀 < mida\ ;
+野猿 < yaen\ ;
+受理 < juri\ ;
+呼応 < koou\ ;
+秘奥 < hiou\ ;
+汚穢 < owai\ ;
+愚図 < guzu\ ;
+流布 < rufu\ ;
+母語 < bogo\ ;
+野火 < nobi\ ;
+和字 < waji\ ;
+合歓 < nemu\ ;
+御茶 < ocha\ ;
+麻布 < mafu\ ;
+悪感 < okan\ ;
+移住 < ijuu\ ;
+虚位 < kyoi\ ;
+恵方 < ehou\ ;
+愛児 < aiji\ ;
+沙汰 < sata\ ;
+武運 < buun\ ;
+御簾 < misu\ ;
+味噌 < miso\ ;
+右方 < uhou\ ;
+亜細亜 < ajia\ ;
+廈門 < amoi\ ;
+汚点 < oten\ ;
+毛羽 < keba\ ;
+野暮 < yabo\ ;
+合意 < goui\ ;
+御礼 < orei\ ;
+波布 < habu\ ;
+御碗 < owan\ ;
+遺贈 < izou\ ;
+汚泥 < odei\ ;
+石蓴 < aosa\ ;
+御盆 < obon\ ;
+汚水 < osui\ ;
+南無 < namu\ ;
+追風 < oite\ ;
+砒素 < hiso\ ;
+怪我 < kega\ ;
+右岸 < ugan\ ;
+汚染 < osen\ ;
+恩威 < on''i\ ;
+荷駄 < nida\ ;
+合図 < aizu\ ;
+遺著 < icho\ ;
+幾重 < ikue\ ;
+汚損 < oson\ ;
+吏員 < riin\ ;
+厭悪 < en''o\ ;
+去年 < kozo\ ;
+名医 < meii\ ;
+吏務 < rimu\ ;
+迷 < mei\ ;
+念 < nen\ ;
+短 < tan\ ;
+快 < kai\ ;
+迥 < kei\ ;
+知 < chi\ ;
+矜 < kin\ ;
+忙 < bou\ ;
+返 < hen\ ;
+迎 < gei\ ;
+忍 < nin\ ;
+迅 < jin\ ;
+辿 < ten\ ;
+瞻 < sen\ ;
+農 < nou\ ;
+辯 < ben\ ;
+循 < jun\ ;
+瞠 < dou\ ;
+從 < juu\ ;
+待 < tai\ ;
+彩 < sai\ ;
+睡 < sui\ ;
+轟 < gou\ ;
+当 < tou\ ;
+彈 < dan\ ;
+眩 < gen\ ;
+眠 < min\ ;
+弟 < tei\ ;
+弛 < shi\ ;
+弘 < kou\ ;
+県 < ken\ ;
+看 < kan\ ;
+弄 < rou\ ;
+省 < sei\ ;
+相 < sou\ ;
+廢 < hai\ ;
+軍 < gun\ ;
+廉 < ren\ ;
+盆 < bon\ ;
+庸 < you\ ;
+皰 < hou\ ;
+躇 < cho\ ;
+幾 < iku\ ;
+幽 < yuu\ ;
+癌 < gan\ ;
+跡 < ato\ ;
+跟 < kon\ ;
+距 < kyo\ ;
+疊 < jou\ ;
+番 < ban\ ;
+畦 < aze\ ;
+畔 < han\ ;
+産 < san\ ;
+贅 < zei\ ;
+瓶 < bin\ ;
+賣 < bai\ ;
+瓜 < uri\ ;
+岩 < iwa\ ;
+財 < zai\ ;
+象 < zou\ ;
+屏 < hei\ ;
+尚 < nao\ ;
+射 < sha\ ;
+封 < fuu\ ;
+寸 < sun\ ;
+宵 < yoi\ ;
+害 < gai\ ;
+宛 < ate\ ;
+存 < son\ ;
+嬪 < hin\ ;
+諸 < sho\ ;
+論 < ron\ ;
+嫌 < iya\ ;
+犬 < inu\ ;
+誄 < rui\ ;
+牡 < osu\ ;
+牌 < pai\ ;
+爛 < ran\ ;
+燻 < kun\ ;
+姉 < ane\ ;
+親 < oya\ ;
+奮 < fun\ ;
+奥 < oku\ ;
+襟 < eri\ ;
+然 < zen\ ;
+声 < koe\ ;
+裏 < ura\ ;
+袂 < bei\ ;
+蟻 < ari\ ;
+濘 < nei\ ;
+埋 < mai\ ;
+垢 < aka\ ;
+蝿 < hae\ ;
+齡 < rei\ ;
+滿 < man\ ;
+蛛 < shu\ ;
+四 < yon\ ;
+麻 < asa\ ;
+湾 < wan\ ;
+虜 < ryo\ ;
+渦 < uzu\ ;
+嘘 < uso\ ;
+蘂 < zui\ ;
+淋 < rin\ ;
+液 < eki\ ;
+喰 < kuu\ ;
+海 < umi\ ;
+問 < mon\ ;
+泡 < awa\ ;
+蒙 < mou\ ;
+沖 < oki\ ;
+沌 < ton\ ;
+味 < aji\ ;
+池 < ike\ ;
+汗 < ase\ ;
+呑 < don\ ;
+氏 < uji\ ;
+台 < dai\ ;
+殘 < zan\ ;
+歌 < uta\ ;
+午 < uma\ ;
+十 < too\ ;
+鬼 < oni\ ;
+茶 < cha\ ;
+勤 < gon\ ;
+苗 < nae\ ;
+色 < iro\ ;
+前 < mae\ ;
+分 < bun\ ;
+臼 < usu\ ;
+馭 < gyo\ ;
+腕 < ude\ ;
+免 < men\ ;
+兄 < ani\ ;
+飴 < ame\ ;
+飜 < hon\ ;
+傳 < den\ ;
+梅 < ume\ ;
+桶 < oke\ ;
+偶 < guu\ ;
+顔 < kao\ ;
+顎 < ago\ ;
+頼 < rai\ ;
+俺 < ore\ ;
+枝 < eda\ ;
+板 < ita\ ;
+何 < nan\ ;
+隈 < wai\ ;
+織 < ori\ ;
+丘 < oka\ ;
+網 < ami\ ;
+長 < osa\ ;
+數 < suu\ ;
+故 < yue\ ;
+糸 < ito\ ;
+粗 < ara\ ;
+握 < aku\ ;
+笛 < fue\ ;
+竿 < sao\ ;
+稲 < ine\ ;
+或 < aru\ ;
+重 < omo\ ;
+秋 < aki\ ;
+禰 < dei\ ;
+息 < iki\ ;
+恋 < koi\ ;
+迂遠 < uen\ ;
+微意 < bii\ ;
+叙位 < joi\ ;
+迂路 < uro\ ;
+得手 < ete\ ;
+気宇 < kiu\ ;
+医家 < ika\ ;
+八重 < yae\ ;
+医員 < iin\ ;
+医務 < imu\ ;
+医事 < iji\ ;
+遺愛 < iai\ ;
+遺影 < iei\ ;
+部位 < bui\ ;
+遺孤 < iko\ ;
+異音 < ion\ ;
+希有 < keu\ ;
+迂愚 < ugu\ ;
+欧亜 < oua\ ;
+次位 < jii\ ;
+次亜 < jia\ ;
+眉宇 < biu\ ;
+異議 < igi\ ;
+居間 < ima\ ;
+帰依 < kie\ ;
+香魚 < ayu\ ;
+機位 < kii\ ;
+似非 < ese\ ;
+尾羽 < oha\ ;
+異父 < ifu\ ;
+会陰 < ein\ ;
+異母 < ibo\ ;
+亜麻 < ama\ ;
+以遠 < ien\ ;
+伊語 < igo\ ;
+亜鉛 < aen\ ;
+尾根 < one\ ;
+椅子 < isu\ ;
+依怙 < eko\ ;
+云為 < uni\ ;
+亜欧 < aou\ ;
+以往 < iou\ ;
+有無 < umu\ ;
+会厭 < een\ ;
+栄位 < eii\ ;
+井戸 < ido\ ;
+非違 < hii\ ;
+夜雨 < yau\ ;
+多雨 < tau\ ;
+二尉 < nii\ ;
+不意 < fui\ ;
+威武 < ibu\ ;
+有卦 < uke\ ;
+王位 < oui\ ;
+羅宇 < rao\ ;
+羽化 < uka\ ;
+絵馬 < ema\ ;
+壊疽 < eso\ ;
+雨気 < uki\ ;
+語意 < goi\ ;
+雨後 < ugo\ ;
+無為 < mui\ ;
+補遺 < hoi\ ;
+龒 < ryu\ ;
+黶 < aza\ ;
+阿比 < abi\ ;
+鳰 < nio\ ;
+鰕 < ebi\ ;
+鰓 < era\ ;
+餌 < esa\ ;
+鎊 < hau\ ;
+鍑 < huu\ ;
+錵 < nie\ ;
+鈖 < hun\ ;
+鄼 < sab\ ;
+鄞 < gin\ ;
+邾 < chu\ ;
+轑 < rau\ ;
+褜 < ena\ ;
+絵図 < ezu\ ;
+見得 < mie\ ;
+虻 < abu\ ;
+阿吽 < aun\ ;
+葵 < aoi\ ;
+荻 < ogi\ ;
+芋 < imo\ ;
+臑 < dau\ ;
+滋雨 < jiu\ ;
+稗 < hie\ ;
+瓴 < rii\ ;
+紆余 < uyo\ ;
+樋 < toi\ ;
+棰 < soi\ ;
+杭 < kui\ ;
+斧 < ono\ ;
+愰 < kau\ ;
+彯 < heu\ ;
+弨 < seu\ ;
+廇 < riu\ ;
+廅 < ahu\ ;
+庣 < teu\ ;
+嶆 < sau\ ;
+嵺 < reu\ ;
+嵶 < tao\ ;
+海髪 < ogo\ ;
+嬈 < deu\ ;
+嫹 < bau\ ;
+嫙 < seb\ ;
+意馬 < iba\ ;
+奡 < gau\ ;
+垚 < geu\ ;
+圦 < iri\ ;
+嚷 < jau\ ;
+図会 < zue\ ;
+嘫 < dam\ ;
+僠 < fan\ ;
+佂 < yai\ ;
+悪露 < oro\ ;
+蝦夷 < ezo\ ;
+穢多 < eta\ ;
+穢土 < edo\ ;
+慰安 < ian\ ;
+十重 < toe\ ;
+愚意 < gui\ ;
+右派 < uha\ ;
+意味 < imi\ ;
+萎靡 < ibi\ ;
+迦 < ka\ ;
+矢 < ya\ ;
+応 < ou\ ;
+忌 < ki\ ;
+辭 < ji\ ;
+微 < bi\ ;
+御 < go\ ;
+徒 < to\ ;
+徐 < jo\ ;
+眼 < me\ ;
+輪 < wa\ ;
+弥 < mi\ ;
+真 < ma\ ;
+引 < in\ ;
+弐 < ni\ ;
+延 < en\ ;
+庫 < ko\ ;
+座 < za\ ;
+度 < do\ ;
+府 < fu\ ;
+庇 < hi\ ;
+踰 < yu\ ;
+路 < ro\ ;
+差 < sa\ ;
+巣 < su\ ;
+痛 < ts\ ;
+疑 < gi\ ;
+疎 < so\ ;
+田 < ta\ ;
+甥 < oi\ ;
+豫 < yo\ ;
+履 < ri\ ;
+寝 < ne\ ;
+家 < ke\ ;
+訝 < ga\ ;
+營 < ei\ ;
+襦 < ju\ ;
+奈 < na\ ;
+無 < mu\ ;
+褞 < on\ ;
+褓 < ho\ ;
+裳 < mo\ ;
+墮 < da\ ;
+場 < ba\ ;
+瀬 < se\ ;
+螺 < ra\ ;
+図 < zu\ ;
+嗟 < aa\ ;
+藍 < ai\ ;
+鵡 < bu\ ;
+派 < ha\ ;
+莫 < bo\ ;
+苦 < ku\ ;
+出 < de\ ;
+具 < gu\ ;
+案 < an\ ;
+青 < ao\ ;
+云 < un\ ;
+乃 < no\ ;
+是 < ze\ ;
+手 < te\ ;
+惹 < ja\ ;
+伊井 < ii\ ;
+闞 < kn\ ;
+鈇 < hu\ ;
+讄 < ru\ ;
+曽 < zo\ ;
+搙 < nu\ ;
+庮 < iu\ ;
+嶴 < au\ ;
+岆 < eu\ ;
+屁 < he\ ;
+帷 < i\ ;
+尾 < o\ ;
+宇 < u\ ;
+江 < e\ ;
+亞 < a\ ;
+法学系大学院共通入学試験 > hougakukeidaigakuinkyoutsuunyuugakushiken\ ;
+朝鮮民主主義人民共和国 > chousenminshushugijinminkyouwakoku\ ;
+自動車損害賠償責任保険 > jidoushasongaibaishousekininhoken\ ;
+米国大学入学共通試験 > beikokudaigakunyuugakukyoutsuushiken\ ;
+日本労働組合総評議会 > nihonroudoukumiaisouhyougikai\ ;
+拘束名簿式比例代表制 > kousokumeibohireidaihyousei\ ;
+臨兵闘者皆陣裂在前 > rinpyoutoushakaijinretsuzaizen\ ;
+太平洋機械翻訳協会 > taiheiyoukikaihon''yakukyoukai\ ;
+勤労者財産形成促進 > kinroushazaisankeiseisokushin\ ;
+超超大規模集積回路 > chouchoudaikiboshuusekikairo\ ;
+超々大規模集積回路 > chouchoudaikiboshuusekikairo\ ;
+太平洋安全保障条約 > taiheiyouanzenhoshoujouyaku\ ;
+操縦席音声記録装置 > soujuusekionseikirokusouchi\ ;
+航空宇宙技術研究所 > koukuuuchuugijutsukenkyuujo\ ;
+浮動小数点演算機構 > fudoushousuuten''enzankikou\ ;
+現金自動預金支払機 > genkinjidouyokinshiharaiki\ ;
+主辞駆動句構造文法 > shujikudoukukouzoubunpou\ ;
+経済協力開発機構 > keizaikyouryokukaihatsukikou\ ;
+北海道開発庁長官 > hokkaidoukaihatsuchouchoukan\ ;
+外国人登録証明書 > gaikokujintourokushoumeisho\ ;
+戦略兵器削減条約 > senryakuheikisakugenjouyaku\ ;
+国際機械翻訳協会 > kokusaikikaihon''yakukyoukai\ ;
+国際電気通信連合 > kokusaidenkitsuushinrengou\ ;
+海外経済協力基金 > kaigaikeizaikyouryokukikin\ ;
+日米安全保障条約 > nichibeianzenhoshoujouyaku\ ;
+戦没者追悼記念日 > senbotsushatsuitoukinenbi\ ;
+戦術航空統制本部 > senjutsukoukuutouseihonbu\ ;
+工業高等専門学校 > kougyoukoutousenmongakkou\ ;
+北大西洋条約機構 > kitataiseiyoujouyakukikou\ ;
+超大規模集積回路 > choudaikiboshuusekikairo\ ;
+化学兵器禁止条約 > kagakuheikikinshijouyaku\ ;
+関税貿易一般協定 > kanzeibouekiippankyoutei\ ;
+在留期間更新許可 > zairyuukikankoushinkyoka\ ;
+万国国際音標文字 > bankokukokusaionpyoumoji\ ;
+海洋投棄規制条約 > kaiyoutoukikiseijouyaku\ ;
+野生動物保護団体 > yaseidoubutsuhogodantai\ ;
+自動列車制御装置 > jidouresshaseigyosouchi\ ;
+天然資源保護論者 > ten''nenshigenhogoronsha\ ;
+非常事態対処計画 > hijoujitaitaishokeikaku\ ;
+自動列車停止装置 > jidouresshateishisouchi\ ;
+赤十字国際委員会 > sekijuujikokusaiiinkai\ ;
+談話表示構造理論 > danwahyoujikouzouriron\ ;
+共産党中央委員会 > kyousantouchuuouiinkai\ ;
+民主党全国委員会 > minshutouzenkokuiinkai\ ;
+英語基礎能力試験 > eigokisonouryokushiken\ ;
+一般命令演算機構 > ippanmeireienzankikou\ ;
+知識集約型産業 > chishikishuuyakugatasangyou\ ;
+自律神経失調症 > jiritsushinkeishitchoushou\ ;
+沖縄開発庁長官 > okinawakaihatsuchouchoukan\ ;
+弁証法的唯物論 > benshouhoutekiyuibutsuron\ ;
+国際協力事業団 > kokusaikyouryokujigyoudan\ ;
+総合的品質管理 > sougoutekihinshitsukanri\ ;
+疑似直接目的語 > gijichokusetsumokutekigo\ ;
+万国著作権条約 > bankokuchosakukenjouyaku\ ;
+言語学的実在論 > gengogakutekijitsuzairon\ ;
+冠状動脈血栓症 > kanjoudoumyakukessenshou\ ;
+科学技術庁長官 > kagakugijutsuchouchoukan\ ;
+赤血球沈降速度 > sekkekkyuuchinkousokudo\ ;
+石油輸出国機構 > sekiyuyushutsukokukikou\ ;
+公共職業安定所 > koukyoushokugyouanteijo\ ;
+戦術航空統制班 > senjutsukoukuutouseihan\ ;
+自動金銭出入機 > jidoukinsenshutsunyuuki\ ;
+地震雷火事親父 > jishinkaminarikajioyaji\ ;
+多肢選択式試問 > tashisentakushikishimon\ ;
+新関西国際空港 > shinkansaikokusaikuukou\ ;
+言語学的観念論 > gengogakutekikan''nenron\ ;
+後発発展途上国 > kouhatsuhattentojoukoku\ ;
+抹消登録証明書 > mashoutourokushoumeisho\ ;
+経済企画庁長官 > keizaikikakuchouchoukan\ ;
+再生不良性貧血 > saiseifuryouseihinketsu\ ;
+火力支援調整線 > karyokushienchouseisen\ ;
+破壊活動防止法 > hakaikatsudouboushihou\ ;
+国際返信切手券 > kokusaihenshinkitteken\ ;
+中華人民共和国 > chuukajinminkyouwakoku\ ;
+東海道五十三次 > toukaidougojuusantsugi\ ;
+宇宙開発事業団 > uchuukaihatsujigyoudan\ ;
+三軸圧縮試験機 > sanjikuasshukushikenki\ ;
+視聴者参加番組 > shichoushasankabangumi\ ;
+州際通商委員会 > shuusaitsuushouiinkai\ ;
+周波数変換装置 > shuuhasuuhenkansouchi\ ;
+慢性疲労症候群 > manseihiroushoukougun\ ;
+公害対策基本法 > kougaitaisakukihonhou\ ;
+経済団体連合会 > keizaidantairengoukai\ ;
+戦闘電子戦情報 > sentoudenshisenjouhou\ ;
+現金自動支払機 > genkinjidoushiharaiki\ ;
+最高経営責任者 > saikoukeieisekininsha\ ;
+装甲人員運搬車 > soukoujin''in''unpansha\ ;
+日本語能力試験 > nihongonouryokushiken\ ;
+音節主音的子音 > onsetsushuontekishiin\ ;
+証券取引委員会 > shoukentorihikiiinkai\ ;
+最高財務責任者 > saikouzaimusekininsha\ ;
+短距離離着陸機 > tankyoririchakurikuki\ ;
+機能単一化文法 > kinoutan''itsukabunpou\ ;
+知能情報研究部 > chinoujouhoukenkyuubu\ ;
+加圧水型原子炉 > kaatsusuigatagenshiro\ ;
+環太平洋地震帯 > kantaiheiyoujishintai\ ;
+人種差別主義者 > jinshusabetsushugisha\ ;
+自然環境保全法 > shizenkankyouhozenhou\ ;
+環太平洋造山帯 > kantaiheiyouzouzantai\ ;
+行動主義心理学 > koudoushugishinrigaku\ ;
+第一次世界大戦 > daiichijisekaitaisen\ ;
+変動為替相場制 > hendoukawasesoubasei\ ;
+歯内療法専門医 > shikaryouhousenmon''i\ ;
+環太平洋火山帯 > kantaiheiyoukazantai\ ;
+実情調査委員会 > jitsujouchousaiinkai\ ;
+科学基礎研究所 > kagakukisokenkyuusho\ ;
+変形生成統語論 > henkeiseiseitougoron\ ;
+大規模集積回路 > daikiboshuusekikairo\ ;
+南無妙法蓮華経 > namumyouhourengekyou\ ;
+未確認飛行物体 > mikakuninhikoubuttai\ ;
+一酸化炭素中毒 > issankatansochuudoku\ ;
+公正取引委員会 > kouseitorihikiiinkai\ ;
+税引前当期利益 > zeibikimaetoukirieki\ ;
+連邦取引委員会 > renpoutorihikiiinkai\ ;
+流行性耳下腺炎 > ryuukouseijikasen''en\ ;
+総理府総務長官 > sourifusoumuchoukan\ ;
+環境保護主義者 > kankyouhogoshugisha\ ;
+日本陸上自衛隊 > nihonrikujoujieitai\ ;
+金地金本位制度 > kinjiganehon''iseido\ ;
+重要無形文化財 > juuyoumukeibunkazai\ ;
+経済社会理事会 > keizaishakairijikai\ ;
+主語助動詞倒置 > shugojodoushitouchi\ ;
+合同技術委員会 > goudougijutsuiinkai\ ;
+自動方向探知機 > jidouhoukoutanchiki\ ;
+帰還不能限界点 > kikanfunougenkaiten\ ;
+国家公安委員長 > kokkakouan''iinchou\ ;
+国会対策委員会 > kokkaitaisakuinkai\ ;
+第二次世界大戦 > dainijisekaitaisen\ ;
+亜米利加合衆国 > amerikagasshuukoku\ ;
+日本航空自衛隊 > nihonkoukuujieitai\ ;
+符号化文字集合 > fugoukamojishuugou\ ;
+日本海上自衛隊 > nihonkaijoujieitai\ ;
+下位範疇化素性 > kaihanchuukasosei\ ;
+選挙管理委員会 > senkyokanriiinkai\ ;
+下位範疇化原理 > kaihanchuukagenri\ ;
+耳鼻咽喉専門医 > jibiinkousenmon''i\ ;
+議院運営委員会 > giin''un''eiiinkai\ ;
+2000年問題 > nisen''nenmondai\ ;
+宗教的独立性 > shuukyoutekidokuritsusei\ ;
+直接照準射撃 > chokusetsushoujunshageki\ ;
+特殊取扱郵便 > tokushutoriatsukaiyuubin\ ;
+乾湿球湿度計 > kanshitsukyuushitsudokei\ ;
+圧密降伏応力 > atsumitsukoufukuouryoku\ ;
+公認卸売業者 > kounin''oroshiurigyousha\ ;
+核分裂生成物 > kakubunretsuseiseibutsu\ ;
+職業別電話帳 > shokugyoubetsudenwachou\ ;
+入学共通試験 > nyuugakukyoutsuushiken\ ;
+室内管弦楽団 > shitsunaikangengakudan\ ;
+東京株式市場 > toukyoukabushikishijou\ ;
+確率密度関数 > kakuritsumitsudokansuu\ ;
+原子力発電所 > genshiryokuhatsudensho\ ;
+勧善懲悪小説 > kanzenchouakushousetsu\ ;
+杭周面摩擦力 > kuishuumenmasatsuryoku\ ;
+間接照準射撃 > kansetsushoujunshageki\ ;
+新規株式公開 > shinkikabushikikoukai\ ;
+学習指導要領 > gakushuushidouyouryou\ ;
+早発性痴呆症 > souhatsuseichihoushou\ ;
+信用協同組合 > shin''youkyoudoukumiai\ ;
+弦楽四重奏曲 > gengakushijuusoukyoku\ ;
+演繹的説明法 > en''ekitekisetsumeihou\ ;
+深在性真菌症 > shinzaiseishinkinshou\ ;
+統率束縛理論 > tousotsusokubakuriron\ ;
+本態性高血圧 > hontaiseikouketsuatsu\ ;
+陸上端局装置 > rikujoutankyokusouchi\ ;
+日米貿易摩擦 > nichibeibouekimasatsu\ ;
+通商産業大臣 > tsuushousangyoudaijin\ ;
+通商航海条約 > tsuushoukoukaijouyaku\ ;
+軟判定識別器 > nanhanteishikibetsuki\ ;
+空想科学小説 > kuusoukagakushousetsu\ ;
+新入社員教育 > shin''nyuushainkyouiku\ ;
+推奨文献目録 > suishoubunkenmokuroku\ ;
+徳川三代家光 > tokugawasandaiiemitsu\ ;
+生活協同組合 > seikatsukyoudoukumiai\ ;
+料金別納郵便 > ryoukinbetsunouyuubin\ ;
+中距離核戦力 > chuukyorikakusenryoku\ ;
+農業協同組合 > nougyoukyoudoukumiai\ ;
+大陸横断鉄道 > tairikuoudantetsudou\ ;
+高分子吸収体 > koubunshikyuushuutai\ ;
+日米構造協議 > nichibeikouzoukyougi\ ;
+機械翻訳協会 > kikaihon''yakukyoukai\ ;
+中央行政官庁 > chuuougyouseikanchou\ ;
+北大西洋条約 > kitataiseiyoujouyaku\ ;
+電気通信大学 > denkitsuushindaigaku\ ;
+芳香族化合物 > houkouzokukagoubutsu\ ;
+内閣官房長官 > naikakukanbouchoukan\ ;
+弦楽五重奏曲 > gengakugojuusoukyoku\ ;
+宇宙開発計画 > uchuukaihatsukeikaku\ ;
+米連邦航空局 > beirenpoukuukoukyoku\ ;
+外国人登録法 > gaikokujintourokuhou\ ;
+共産党政治局 > kyousantouseijikyoku\ ;
+束縛継承原理 > sokubakukeishougenri\ ;
+三軸圧縮試験 > sanjikuasshukushiken\ ;
+空軍連絡将校 > kuugunrenrakushoukou\ ;
+卸売物価指数 > oroshiuribukkashisuu\ ;
+写真判定決勝 > shashinhanteikesshou\ ;
+前立腺肥大症 > zenritsusenhidaishou\ ;
+説明的妥当性 > setsumeitekidatousei\ ;
+共通一次試験 > kyoutsuuichijishiken\ ;
+第三種郵便物 > daisanshuyuubinbutsu\ ;
+友好通商航海 > yuukoutsuushoukoukai\ ;
+無担保貸付金 > mutanpokashitsukekin\ ;
+必要十分条件 > hitsuyoujuubunjouken\ ;
+精神的指導者 > seishintekishidousha\ ;
+原子物理学者 > genshibutsurigakusha\ ;
+精密機械工業 > seimitsukikaikougyou\ ;
+再入国許可書 > sainyuukokukyoukasho\ ;
+定形外郵便物 > teikeigaiyuubinbutsu\ ;
+超並列計算機 > chouheiretsukeisanki\ ;
+中枢神経系統 > chuusuushinkeikeitou\ ;
+伝送制御拡張 > densouseigyokakuchou\ ;
+日中友好協会 > nitchuuyuukoukyoukai\ ;
+国民金融公庫 > kokuminkin''yuukouko\ ;
+口辺単純疱疹 > kouhentanjunhoushin\ ;
+集団安全保障 > shuudan''anzenhoshou\ ;
+名神高速道路 > meishinkousokudouro\ ;
+放射性降下物 > houshaseikoukabutsu\ ;
+劣性遺伝形質 > resseiidenkeishitsu\ ;
+初期選択項目 > shokisentakukoumoku\ ;
+全国津津浦浦 > zenkokutsutsuuraura\ ;
+信任統治制度 > shin''nintouchiseido\ ;
+主要部終端型 > shuyoubushuutangata\ ;
+合成化学工業 > gouseikagakukougyou\ ;
+国民体育大会 > kokumintaiikutaikai\ ;
+国際電信電話 > kokusaidenshindenwa\ ;
+電子資金振替 > denshishikinfurikae\ ;
+弦楽四重奏団 > gengakushijuusoudan\ ;
+航空交通管制 > koukuukoutsuukansei\ ;
+財政均衡計画 > zaiseikinkoukeikaku\ ;
+日本規格協会 > nipponkikakukyoukai\ ;
+動物愛護協会 > doubutsuaigokyoukai\ ;
+米航空宇宙局 > beikoukuuuchuukyoku\ ;
+全国津々浦々 > zenkokutsutsuuraura\ ;
+日本学術会議 > nihongakujutsukaigi\ ;
+人間環境宣言 > ningenkankyousengen\ ;
+家宅捜索令状 > katakusousakureijou\ ;
+安土桃山時代 > azuchimomoyamajidai\ ;
+生理的食塩水 > seiritekishokuensui\ ;
+環太平洋諸国 > kantaiheiyoushokoku\ ;
+火力支援計画 > karyokushienkeikaku\ ;
+著作権所有者 > chosakukenshoyuusha\ ;
+数学的帰納法 > suugakutekikinouhou\ ;
+日本国特許庁 > nihonkokutokkyochou\ ;
+食糧管理制度 > shokuryoukanriseido\ ;
+生物化学兵器 > seibutsukagakuheiki\ ;
+女権拡張論者 > jokenkakuchouronsha\ ;
+統合幕僚会議 > tougoubakuryoukaigi\ ;
+射撃禁止地域 > shagekikinshichiiki\ ;
+特命全権公使 > tokumeizenkenkoushi\ ;
+新聞倫理綱領 > shinbunrinrikouryou\ ;
+記述的妥当性 > kijutsutekidatousei\ ;
+万国郵便連合 > bankokuyuubinrengou\ ;
+住宅金融公庫 > juutakukin''yuukouko\ ;
+単位体積重量 > tan''itaisekijuuryou\ ;
+統一地方選挙 > touitsuchihousenkyo\ ;
+公開市場政策 > koukaishijouseisaku\ ;
+地球観測衛星 > chikyuukansokueisei\ ;
+重量拳闘選手 > juuryoukentousenshu\ ;
+人工気胸療法 > jinkoukikyouryouhou\ ;
+地方公共団体 > chihoukoukyoudantai\ ;
+手根管症候群 > shukonkanshoukougun\ ;
+高分子化合物 > koubunshikagoubutsu\ ;
+陸上作戦本部 > rikujousakusenhonbu\ ;
+放射性廃棄物 > houshaseihaikibutsu\ ;
+逆転分布係数 > gyakutenbunpukeisuu\ ;
+蜘蛛膜下出血 > kumomakukashukketsu\ ;
+共同救済基金 > kyoudoukyuusaikikin\ ;
+保険金受取人 > hokenkin''uketorinin\ ;
+陸軍士官学校 > rikugunshikangakkou\ ;
+漁業専管水域 > gyogyousenkansuiiki\ ;
+芸術至上主義 > geijutsushijoushugi\ ;
+特命全権大使 > tokumeizenkentaishi\ ;
+近接航空支援 > kinsetsukoukuushien\ ;
+有機水銀中毒 > yuukisuiginchuudoku\ ;
+環太平洋構想 > kantaiheiyoukousou\ ;
+公的不法妨害 > koutekifuhoubougai\ ;
+戦闘支援計画 > sentoushienkeikaku\ ;
+回線制御規則 > kaisenseigyokisoku\ ;
+港湾運送事業 > kouwan''unsoujigyou\ ;
+門戸開放政策 > monkokaihouseisaku\ ;
+東名高速道路 > toumeikousokudouro\ ;
+内閣総理大臣 > naikakusouridaijin\ ;
+日本放送協会 > nihonhousoukyoukai\ ;
+航空宇宙工業 > koukuuuchuukougyou\ ;
+安全保障条約 > anzenhoshoujouyaku\ ;
+主働土圧係数 > shudoudoatsukeisuu\ ;
+反射的半順序 > hanshatekihanjunjo\ ;
+国際通貨基金 > kokusaitsuukakikin\ ;
+短期集中講座 > tankishuuchuukouza\ ;
+日本農林規格 > nihon''nourinkikaku\ ;
+航空宇宙産業 > koukuuuchuusangyou\ ;
+品質保持期限 > hinshitsuhojikigen\ ;
+日本工業規格 > nihonkougyoukikaku\ ;
+中距離核兵器 > chuukyorikakuheiki\ ;
+酸化還元反応 > sankakangenhan''nou\ ;
+公務執行妨害 > koumushikkoubougai\ ;
+高等専門学校 > koutousenmongakkou\ ;
+歩兵戦闘車両 > hoheisentousharyou\ ;
+共同記者会見 > kyoudoukishakaiken\ ;
+太陽熱温水器 > taiyounetsuonsuiki\ ;
+静止土圧係数 > seishidoatsukeisuu\ ;
+人口動態統計 > jinkoudoutaitoukei\ ;
+国連事務総長 > kokurenjimusouchou\ ;
+不動産取得税 > fudousanshutokuzei\ ;
+年次有給休暇 > nenjiyuukyuukyuuka\ ;
+十二指腸潰瘍 > juunishichoukaiyou\ ;
+戦争犯罪法廷 > sensouhanzaihoutei\ ;
+年功序列制度 > nenkoujoretsuseido\ ;
+農林水産大臣 > nourinsuisandaijin\ ;
+主要部先導型 > shuyoubusendougata\ ;
+国民健康保険 > kokuminkenkouhoken\ ;
+不定計量空間 > futeikeiryoukuukan\ ;
+反帝国主義者 > hanteikokushugisha\ ;
+電荷結合素子 > denkaketsugousoshi\ ;
+有限状態文法 > yuugenjoutaibunpou\ ;
+修正資本主義 > shuuseishihonshugi\ ;
+一卵性双生児 > ichiranseisouseiji\ ;
+地中海性気候 > chichuukaiseikikou\ ;
+投資有価証券 > toushiyuukashouken\ ;
+前方再補給点 > zenpousaihokyuuten\ ;
+立憲君主政体 > rikkenkunshuseitai\ ;
+放送禁止用語 > housoukinshiyougo\ ;
+十一面観世音 > juuichimenkanzeon\ ;
+形状記憶合金 > keijoukiokugoukin\ ;
+行動発起時刻 > koudouhakkijikoku\ ;
+十部門分類法 > juubumonbunruihou\ ;
+世界一周旅行 > sekaiisshuuryokou\ ;
+世界人権宣言 > sekaijinkensengen\ ;
+公的医療機関 > koutekiiryoukikan\ ;
+受働土圧係数 > judoudoatsukeisuu\ ;
+不確定性原理 > fukakuteiseigenri\ ;
+二等辺三角形 > nitouhensankakkei\ ;
+政令指定都市 > seireishiteitoshi\ ;
+無担保借入金 > mutanpokariirekin\ ;
+単位労働組合 > tan''iroudoukumiai\ ;
+中央処理装置 > chuuoushorisouchi\ ;
+欧州通貨単位 > oushuutsuukatan''i\ ;
+自由貿易帯域 > jiyuubouekitaiiki\ ;
+恋愛至上主義 > ren''aishijoushugi\ ;
+自動車保険料 > jidoushahokenryou\ ;
+戦場航空阻止 > senjoukoukuusoshi\ ;
+統合参謀本部 > tougousanbouhonbu\ ;
+最長不倒距離 > saichoufutoukyori\ ;
+印象主義音楽 > inshoushugiongaku\ ;
+近代五種競技 > kindaigoshukyougi\ ;
+後方地域警備 > kouhouchiikikeibi\ ;
+自動操縦装置 > jidousoujuusouchi\ ;
+都市対抗野球 > toshitaikouyakyuu\ ;
+金剛夜叉妙王 > kongouyashamyouou\ ;
+高速演算機構 > kousokuenzankikou\ ;
+飛行禁止空域 > hikoukinshikuuiki\ ;
+環境保護論者 > kankyouhogoronsha\ ;
+週間天気予報 > shuukantenkiyohou\ ;
+放射線感受性 > houshasenkanjusei\ ;
+社会民主主義 > shakaiminshushugi\ ;
+部分情報構造 > bubunjouhoukouzou\ ;
+一挙手一投足 > ikkyoshuittousoku\ ;
+有形固定資産 > yuukeikoteishisan\ ;
+飛行記録装置 > hikoukirokusouchi\ ;
+被担保債権額 > hitanposaikengaku\ ;
+二交替制労働 > nikoutaiseiroudou\ ;
+保守系無所属 > hoshukeimushozoku\ ;
+反転分布係数 > hantenbunpukeisuu\ ;
+空挺降下地域 > kuuteikoukachiiki\ ;
+火力支援部隊 > karyokushienbutai\ ;
+歌舞伎十八番 > kabukijuuhachiban\ ;
+大量破壊兵器 > tairyouhakaiheiki\ ;
+反射係数線図 > hanshakeisuusenzu\ ;
+素粒子加速器 > soryuushikasokuki\ ;
+自由貿易地域 > jiyuubouekichiiki\ ;
+公開市場操作 > koukaishijousousa\ ;
+人身保護令状 > jinshinhogoreijou\ ;
+母子健康手帳 > boshikenkoutechou\ ;
+厚生年金保険 > kouseinenkinhoken\ ;
+性行為感染症 > seikouikansenshou\ ;
+生命保険会社 > seimeihokengaisha\ ;
+私有財産制度 > shiyuuzaisanseido\ ;
+一国一党主義 > ikkokuittoushugi\ ;
+日本道路公団 > nihondourokoudan\ ;
+実践理性批判 > jissenriseihihan\ ;
+多重名前空間 > tajuunamaekuukan\ ;
+平和維持活動 > heiwaijikatsudou\ ;
+二卵性双生児 > niranseisouseiji\ ;
+主辞素性規約 > shujisoseikiyaku\ ;
+女性解放運動 > joseikaihouundou\ ;
+炭酸同化作用 > tansandoukasayou\ ;
+二大政党主義 > nidaiseitoushugi\ ;
+不純異性交遊 > fujun''iseikouyuu\ ;
+骨皮筋右衛門 > honekawasujiemon\ ;
+浅間山荘事件 > asamasansoujiken\ ;
+環境保護主義 > kankyouhogoshugi\ ;
+世界貿易機関 > sekaibouekikikan\ ;
+無形固定資産 > mukeikoteishisan\ ;
+音声多重放送 > onseitajuuhousou\ ;
+脳性小児麻痺 > nouseishounimahi\ ;
+大東亜共栄圏 > daitouakyoueiken\ ;
+小売物価指数 > kouribukkashisuu\ ;
+自由主義経済 > jiyuushugikeizai\ ;
+夜間預金々庫 > yakan''yokinkinko\ ;
+連邦準備制度 > renpoujunbiseido\ ;
+超過勤務手当 > choukakinmuteate\ ;
+予備士官学校 > yobishikangakkou\ ;
+画像処理装置 > gazoushorisouchi\ ;
+六十四分音符 > rokujuushibuonpu\ ;
+放射性同位体 > houshaseidouitai\ ;
+夜間預金金庫 > yakan''yokinkinko\ ;
+亜熱帯高気圧 > anettaikoukiatsu\ ;
+磁気共鳴画像 > jikikyoumeigazou\ ;
+鳥獣保護区域 > choujuuhogokuiki\ ;
+国際援助機関 > kokusaienjokikan\ ;
+無政府主義者 > museifushugisha\ ;
+世界保健機関 > sekaihokenkikan\ ;
+二十四時間制 > nijuuyojikansei\ ;
+看護婦養成所 > kangofuyouseijo\ ;
+不当労働行為 > futouroudoukoui\ ;
+苦情処理機関 > kujoushorikikan\ ;
+補助記憶装置 > hojokiokusouchi\ ;
+文字多重放送 > mojitajuuhousou\ ;
+医師国家試験 > ishikokkashiken\ ;
+肢体不自由児 > shitaifujiyuuji\ ;
+仮名漢字変換 > kanakanjihenkan\ ;
+国家公務員法 > kokkakoumuinhou\ ;
+意志決定機関 > ishiketteikikan\ ;
+主辞素性原理 > shujisoseigenri\ ;
+弁護士事務所 > bengoshijimusho\ ;
+自由主義国家 > jiyuushugikokka\ ;
+生命維持装置 > seimeiijisouchi\ ;
+文字符号化法 > mojifugoukahou\ ;
+南無阿弥陀仏 > namuamidabutsu\ ;
+語彙機能文法 > goikinoubunpou\ ;
+倶梨伽羅紋紋 > kurikaramonmon\ ;
+三十二分音符 > sanjuunibuonpu\ ;
+我利我利亡者 > garigarimouja\ ;
+守秘義務違反 > shuhigimuihan\ ;
+是是非非主義 > zezehihishugi\ ;
+烏芻沙摩妙王 > ususamamyouou\ ;
+代表取締役 > daihyoutorishimariyaku\ ;
+取扱説明書 > toriatsukaisetsumeisho\ ;
+国立博物館 > kokuritsuhakubutsukan\ ;
+集中治療室 > shuuchuuchiryoushitsu\ ;
+直轄植民地 > chokkatsushokuminchi\ ;
+木造建築物 > mokuzoukenchikubutsu\ ;
+植物性蛋白 > shokubutsuseitanpaku\ ;
+信用取引先 > shin''youtorihikisaki\ ;
+常務取締役 > joumutorishimariyaku\ ;
+七星天道虫 > nanahoshitentoumushi\ ;
+民族大虐殺 > minzokudaigyakusatsu\ ;
+越年生植物 > etsunenseishokubutsu\ ;
+構成素統御 > kouseisokouzoutougyo\ ;
+直接目的語 > chokusetsumokutekigo\ ;
+専務取締役 > senmutorishimariyaku\ ;
+一年生植物 > ichinenseishokubutsu\ ;
+麻薬取締班 > mayakutorishimarihan\ ;
+麻薬取締法 > mayakutorishimarihou\ ;
+中心的役割 > chuushintekiyakuwari\ ;
+収縮期血圧 > shuushukukiketsuatsu\ ;
+単子葉植物 > tanshiyoushokubutsu\ ;
+連立方程式 > renritsuhouteishiki\ ;
+通商産業省 > tsuushousangyoushou\ ;
+原子力発電 > genshiryokuhatsuden\ ;
+直接民主制 > chokusetsuminshusei\ ;
+進出制限線 > shinshutsuseigensen\ ;
+株式取引所 > kabushikitorihikijo\ ;
+直接教授法 > chokusetsukyoujuhou\ ;
+双子葉植物 > soushiyoushokubutsu\ ;
+芥川龍之介 > akutagawaryuunosuke\ ;
+貸借対照表 > taishakutaishouhyou\ ;
+公定割引率 > kouteiwaribikiritsu\ ;
+強迫神経症 > kyouhakushinkeishou\ ;
+商業信用状 > shougyoushin''youjou\ ;
+輸出信用状 > yushutsushin''youjou\ ;
+旧新約全書 > kyuushin''yakuzensho\ ;
+出入国管理 > shutsunyuukokukanri\ ;
+障害物競走 > shougaibutsukyousou\ ;
+昼光色電球 > chuukoushokudenkyuu\ ;
+天然色写真 > ten''nenshokushashin\ ;
+水力発電所 > suiryokuhatsudensho\ ;
+素出力条件 > soshutsuryokujouken\ ;
+国民総支出 > kokuminsoushishutsu\ ;
+植物性脂肪 > shokubutsuseishibou\ ;
+旧新約聖書 > kyuushin''yakuseisho\ ;
+長期貸付金 > choukikashitsukekin\ ;
+生物物理学 > seibutsubutsurigaku\ ;
+平家物語抄 > heikemonogatarishou\ ;
+観察的研究 > kansatsutekikenkyuu\ ;
+賃貸借契約 > chintaishakukeiyaku\ ;
+徳川公爵邸 > tokugawakoushakutei\ ;
+精神分裂症 > seishinbunretsushou\ ;
+太陽熱発電 > taiyounetsuhatsuden\ ;
+海外留学熱 > kaigairyuugakunetsu\ ;
+妊娠中毒症 > ninshinchuudokushou\ ;
+独立採算制 > dokuritsusaisansei\ ;
+市場占有率 > shijousen''yuuritsu\ ;
+視聴覚教材 > shichoukakukyouzai\ ;
+内閣法制局 > naikakuhouseikyoku\ ;
+中小企業庁 > chuushoukigyouchou\ ;
+書簡体小説 > shokantaishousetsu\ ;
+社会生物学 > shakaiseibutsugaku\ ;
+軍隊行進曲 > guntaikoushinkyoku\ ;
+葬送行進曲 > sousoukoushinkyoku\ ;
+物理的現象 > butsuritekigenshou\ ;
+心臓弁膜症 > shinzoubenmakushou\ ;
+膝蓋腱反射 > shitsugaikenhansha\ ;
+俸給生活者 > houkyuuseikatsusha\ ;
+生物情報学 > seibutsujouhougaku\ ;
+多年生植物 > tanenseishokubutsu\ ;
+量子物理学 > ryoushibutsurigaku\ ;
+北米合衆国 > hokubeigasshuukoku\ ;
+来客芳名録 > raikyakuhoumeiroku\ ;
+地方検察庁 > chihoukensatsuchou\ ;
+専門的知識 > senmontekichishiki\ ;
+結婚行進曲 > kekkonkoushinkyoku\ ;
+株式配当金 > kabushikihaitoukin\ ;
+特別配当金 > tokubetsuhaitoukin\ ;
+経済成長率 > keizaiseichouritsu\ ;
+産業別組合 > sangyoubetsukumiai\ ;
+優等卒業生 > yuutousotsugyousei\ ;
+入国管理局 > nyuukokukanrikyoku\ ;
+間接撮影法 > kansetsusatsueihou\ ;
+実物大模型 > jitsubutsudaimokei\ ;
+軍事的侵略 > gunjitekishinryaku\ ;
+積分方程式 > sekibunhouteishiki\ ;
+積算電力計 > sekisandenryokukei\ ;
+二年生植物 > ninenseishokubutsu\ ;
+千九百年代 > senkyuuhyakunendai\ ;
+科学博物館 > kagakuhakubutsukan\ ;
+中国共産党 > chuugokukyousantou\ ;
+高分子物質 > koubunshibusshitsu\ ;
+発達心理学 > hattatsushinrigaku\ ;
+精神薄弱者 > seishinhakujakusha\ ;
+特別行政区 > tokubetsugyouseiku\ ;
+三色印刷法 > sanshokuinsatsuhou\ ;
+排卵誘発剤 > hairan''yuuhatsuzai\ ;
+生活必需品 > seikatsuhitsujuhin\ ;
+少年鑑別所 > shounenkanbetsusho\ ;
+座骨神経痛 > zakotsushinkeitsuu\ ;
+植民地政策 > shokuminchiseisaku\ ;
+証券取引法 > shoukentorihikihou\ ;
+商品回転率 > shouhinkaitenritsu\ ;
+節足動物門 > sessokudoubutsumon\ ;
+計算生物学 > keisanseibutsugaku\ ;
+就職情報誌 > shuushokujouhoushi\ ;
+建設的関係 > kensetsutekikankei\ ;
+客室乗務員 > kyakushitsujoumuin\ ;
+支持力定式 > shijiryokuteishiki\ ;
+動物行動学 > doubutsukoudougaku\ ;
+職能代表制 > shokunoudaihyousei\ ;
+最高検察庁 > saikoukensatsuchou\ ;
+心神耗弱者 > shinshinmoujakusha\ ;
+無脊椎動物 > musekitsuidoubutsu\ ;
+家宅侵入罪 > katakushin''nyuuzai\ ;
+分子生物学 > bunshiseibutsugaku\ ;
+天体写真術 > tentaishashinjutsu\ ;
+秘密漏洩罪 > himitsurousetsuzai\ ;
+間接目的語 > kansetsumokutekigo\ ;
+粘液分泌腺 > nen''ekibunpitsusen\ ;
+瞬間接着剤 > shunkansetchakuzai\ ;
+人口密集率 > jinkoumisshuuritsu\ ;
+原色写真版 > genshokushashinban\ ;
+量子色力学 > ryoushiirorikigaku\ ;
+在日米陸軍 > zainichibeirikugun\ ;
+食品添加物 > shokuhintenkabutsu\ ;
+動物性蛋白 > doubutsuseitanpaku\ ;
+特定郵便局 > tokuteiyuubinkyoku\ ;
+火力発電所 > karyokuhatsudensho\ ;
+多角式農業 > takakushikinougyou\ ;
+永世中立国 > eiseichuuritsukoku\ ;
+唯物弁証法 > yuibutsubenshouhou\ ;
+史的唯物論 > shitekiyuibutsuron\ ;
+宣誓供述書 > senseikyoujutsusho\ ;
+熱膨張係数 > netsubouchoukeisuu\ ;
+植物性繊維 > shokubutsuseisen''i\ ;
+過失傷害罪 > kashitsushougaizai\ ;
+共同創設者 > kyoudousousetsusha\ ;
+上級副社長 > joukyuufukushachou\ ;
+戦略的提携 > senryakutekiteikei\ ;
+環境庁長官 > kankyouchouchoukan\ ;
+圧力調整器 > atsuryokuchouseiki\ ;
+生鮮食料品 > seisenshokuryouhin\ ;
+放射性物質 > houshaseibusshitsu\ ;
+地球物理学 > chikyuubutsurigaku\ ;
+反宗教改革 > hanshuukyoukaikaku\ ;
+学識経験者 > gakushikikeikensha\ ;
+赤面恐怖症 > sekimenkyoufushou\ ;
+食品衛生法 > shokuhin''eiseihou\ ;
+教職員組合 > kyoushokuinkumiai\ ;
+毛沢東主席 > moutakutoushuseki\ ;
+別途積立金 > bettotsumitatekin\ ;
+返信料葉書 > henshinryouhagaki\ ;
+諸車通行止 > shoshatsuukoudome\ ;
+国土庁長官 > kokudochouchoukan\ ;
+勧善懲悪劇 > kanzenchouakugeki\ ;
+医学生物学 > igakuseibutsugaku\ ;
+非標準拡張 > hihyoujunkakuchou\ ;
+太陽光発電 > taiyoukouhatsuden\ ;
+返信用葉書 > henshin''youhagaki\ ;
+真珠養殖場 > shinjuyoushokujou\ ;
+肋間神経痛 > rokkanshinkeitsuu\ ;
+海洋物理学 > kaiyoubutsurigaku\ ;
+精神的苦痛 > seishintekikutsuu\ ;
+交流発電機 > kouryuuhatsudenki\ ;
+狩猟採集民 > shuryousaishuumin\ ;
+戦闘正面幅 > sentoushoumenhaba\ ;
+不信任投票 > fushin''nintouhyou\ ;
+送金受取人 > soukin''uketorinin\ ;
+DRS理論 > di\ ̄a\ ̄ruesuriron\ ;
+食糧管理法 > shokuryoukanrihou\ ;
+盲腸炎手術 > mouchouenshujutsu\ ;
+第一級殺人 > daiikkyuusatsujin\ ;
+戦略核兵器 > senryakukakuheiki\ ;
+凍結防止剤 > touketsuboushizai\ ;
+中間配当額 > chuukanhaitougaku\ ;
+高速増殖炉 > kousokuzoushokuro\ ;
+返信料封筒 > henshinryoufuutou\ ;
+衛星地球局 > eiseichikyuukyoku\ ;
+在留外国人 > zairyuugaikokujin\ ;
+産業廃棄物 > sangyouhaikibutsu\ ;
+天然記念物 > ten''nenkinenbutsu\ ;
+出生証明書 > shusseishoumeisho\ ;
+上級管理職 > joukyuukanrishoku\ ;
+税関申告書 > zeikanshinkokusho\ ;
+返信用封筒 > henshin''youfuutou\ ;
+熱狂的信者 > nekkyoutekishinja\ ;
+企業間信用 > kigyoukanshin''you\ ;
+開拓者精神 > kaitakushaseishin\ ;
+深在性真菌 > shinzaiseishinkin\ ;
+村落共同体 > sonrakukyoudoutai\ ;
+上陸用舟艇 > jourikuyoushuutei\ ;
+古生物学者 > koseibutsugakusha\ ;
+開発途上国 > kaihatsutojoukoku\ ;
+血圧降下剤 > ketsuatsukoukazai\ ;
+無差別爆撃 > musabetsubakugeki\ ;
+平和的解決 > heiwatekikaisetsu\ ;
+食品加工業 > shokuhinkakougyou\ ;
+高級住宅地 > koukyuujuutakuchi\ ;
+過失致死罪 > kashitsuchishizai\ ;
+高額所得者 > kougakushotokusha\ ;
+十一面観音 > juuichimenkan''non\ ;
+月経困難症 > gekkeikon''nanshou\ ;
+国際見本市 > kokusaimihon''ichi\ ;
+緑地化計画 > ryokuchikakeikaku\ ;
+中枢神経系 > chuusuushinkeikei\ ;
+実験的研究 > jikkentekikenkyuu\ ;
+専用駐車場 > sen''youchuushajou\ ;
+無過失責任 > mukashitsusekinin\ ;
+一次方程式 > ichijihouteishiki\ ;
+就業時間中 > shuugyoujikanchuu\ ;
+国民休暇村 > kokuminkyuukamura\ ;
+子宮外妊娠 > shikyuugaininshin\ ;
+無担保貸付 > mutanpokashitsuke\ ;
+一粒子既約 > ichiryuushikiyaku\ ;
+企業別組合 > kigyoubetsukumiai\ ;
+不法侵入者 > fuhoushin''nyuusha\ ;
+収穫感謝祭 > shuukakukanshasai\ ;
+指向性爆薬 > shikouseibakuyaku\ ;
+心因性反応 > shin''inseihan''nou\ ;
+亜熱帯植物 > anettaishokubutsu\ ;
+内閣総辞職 > naikakusoujishoku\ ;
+証券取引所 > shoukentorihikijo\ ;
+屈折望遠鏡 > kussetsubouenkyou\ ;
+歯牙矯正術 > shigakyouseijutsu\ ;
+単細胞生物 > tansaibouseibutsu\ ;
+日本薬局方 > nihon''yakkyokuhou\ ;
+深層心理学 > shinsoushinrigaku\ ;
+精神薄弱児 > seishinhakujakuji\ ;
+化学方程式 > kagakuhouteishiki\ ;
+急降下爆撃 > kyuukoukabakugeki\ ;
+水上生活者 > suijouseikatsusha\ ;
+在学証明書 > zaigakushoumeisho\ ;
+植民地統治 > shokuminchitouchi\ ;
+関数方程式 > kansuuhouteishiki\ ;
+推進研究所 > suishinkenkyuusho\ ;
+戦術核兵器 > senjutsukakuheiki\ ;
+発展的解消 > hattentekikaishou\ ;
+国立図書館 > kokuritsutoshokan\ ;
+三行広告欄 > sangyoukoukokuran\ ;
+勧業博覧会 > kangyouhakurankai\ ;
+分析心理学 > bunsekishinrigaku\ ;
+教育心理学 > kyouikushinrigaku\ ;
+業務上過失 > gyoumujoukashitsu\ ;
+成績証明書 > seisekishoumeisho\ ;
+入学志願者 > nyuugakushigansha\ ;
+中央放送局 > chuuouhousoukyoku\ ;
+共同相続人 > kyoudousouzokunin\ ;
+研究発表会 > kenkyuuhappyoukai\ ;
+天体分光術 > tentaibunkoujutsu\ ;
+球面三角法 > kyuumensankakuhou\ ;
+計量経済学 > keiryoukeizaigaku\ ;
+著作権侵害 > chosakukenshingai\ ;
+特別弁護人 > tokubetsubengonin\ ;
+富国強兵策 > fukokukyouheisaku\ ;
+予想収穫高 > yosoushuukakudaka\ ;
+血友病患者 > ketsuyuubyoukanja\ ;
+直角三角形 > chokkakusankakkei\ ;
+闇価格協定 > yamikakakukyoutei\ ;
+赤外線写真 > sekigaisenshashin\ ;
+天皇機関説 > ten''noukikansetsu\ ;
+公証人役場 > koushounin''yakuba\ ;
+超現実主義 > chougenjitsushugi\ ;
+二極真空管 > nikyokushinkuukan\ ;
+阪神大震災 > hanshindaishinsai\ ;
+法定得票数 > houteitokuhyousuu\ ;
+設立趣意書 > setsuritsushuisho\ ;
+外国人登録 > gaikokujintouroku\ ;
+身体障害者 > shintaishougaisha\ ;
+消費者信用 > shouhishashin''you\ ;
+鈍角三角形 > donkakusankakukei\ ;
+海難審判庁 > kainanshinpanchou\ ;
+犯罪発生率 > hanzaihasseiritsu\ ;
+微生物学者 > biseibutsugakusha\ ;
+七色唐辛子 > nanairotougarashi\ ;
+公職選挙法 > koushokusenkyohou\ ;
+定形郵便物 > teikeiyuubinbutsu\ ;
+対中国関係 > taichuugokukankei\ ;
+科学技術庁 > kagakugijutsuchou\ ;
+大英博物館 > daieihakubutsukan\ ;
+動脈硬化症 > doumyakukoukashou\ ;
+帝王神権説 > teioushinkensetsu\ ;
+宇宙大爆発 > uchuudaibakuhatsu\ ;
+首相兼外相 > shushoukengaishou\ ;
+生物地理学 > seibutsuchirigaku\ ;
+原子物理学 > genshibutsurigaku\ ;
+略取誘拐罪 > ryakushuyuukaizai\ ;
+天体物理学 > tentaibutsurigaku\ ;
+降圧変圧器 > kouatsuhen''atsuki\ ;
+東印度会社 > higashiindogaisha\ ;
+物質主義者 > busshitsushugisha\ ;
+国際的貿易 > kokusaitekiboueki\ ;
+中性子爆弾 > chuuseishibakudan\ ;
+代数方程式 > daisuuhouteishiki\ ;
+平均太陽日 > heikintaiyoujitsu\ ;
+乳児死亡率 > nyuujishibouritsu\ ;
+万国博覧会 > bankokuhakurankai\ ;
+防衛施設庁 > boueishisetsuchou\ ;
+有料駐車場 > yuuryouchuushajou\ ;
+臨床心理学 > rinshoushinrigaku\ ;
+写真週刊誌 > shashinshuukanshi\ ;
+巨石記念物 > kyosekikinenbutsu\ ;
+二元方程式 > nigenhouteishiki\ ;
+道義的責任 > dougitekisekinin\ ;
+獅子唐辛子 > shishitougarashi\ ;
+気象観測船 > kishoukansokusen\ ;
+人猿同祖説 > jin''endousosetsu\ ;
+団体交渉権 > dantaikoushouken\ ;
+対人恐怖症 > taijinkyoufushou\ ;
+脳脊髄膜炎 > nousekizuimakuen\ ;
+要注意人物 > youchuuijinbutsu\ ;
+学校教育法 > gakkoukyouikuhou\ ;
+王権神授説 > oukenshinjusetsu\ ;
+真部分集合 > shinbubunshuugou\ ;
+独占禁止法 > dokusenkinshihou\ ;
+居間兼寝室 > imakenshinshitsu\ ;
+公称資本金 > koushoushihonkin\ ;
+電動発動機 > dendouhatsudouki\ ;
+応用物理学 > ouyoubutsurigaku\ ;
+三十八度線 > sanjuuhachidosen\ ;
+認知心理学 > ninchishinrigaku\ ;
+工業所有権 > kougyoushoyuuken\ ;
+多変量解析 > tahenryoukaiseki\ ;
+清涼飲料水 > seiryouinryousui\ ;
+金利生活者 > kinriseikatsusha\ ;
+遺言執行者 > yuigonshikkousha\ ;
+貿易外収支 > bouekigaishuushi\ ;
+染色体地図 > senshokutaichizu\ ;
+主席研究員 > shusekikenkyuuin\ ;
+高速度写真 > kousokudoshashin\ ;
+高次方程式 > koujihouteishiki\ ;
+微分方程式 > bibunhouteishiki\ ;
+郵便私書箱 > yuubinshishobako\ ;
+斜格性統御 > shakakuseitougyo\ ;
+経口避妊薬 > keikouhinin''yaku\ ;
+人材開発部 > jinzaikaihatsubu\ ;
+万国標準時 > bankokuhyoujunji\ ;
+防衛庁長官 > boueichouchoukan\ ;
+含水化合物 > gansuikagoubutsu\ ;
+関東大震災 > kantoudaishinsai\ ;
+装甲回収車 > soukoukaishuusha\ ;
+地方行財政 > chihougyouzaisei\ ;
+性表現情報 > seihyougenjouhou\ ;
+希望的観測 > kiboutekikansoku\ ;
+反射減衰量 > hanshagensuiryou\ ;
+変態心理学 > hentaishinrigaku\ ;
+欧州共同体 > oushuukyoudoutai\ ;
+紫外線療法 > shigaisenryouhou\ ;
+非武装中立 > hibusouchuuritsu\ ;
+主席外交官 > shusekigaikoukan\ ;
+細胞質遺伝 > saiboushitsuiden\ ;
+共産党宣言 > kyousantousengen\ ;
+巡回診療所 > junkaishinryoujo\ ;
+源泉所得税 > gensenshotokuzei\ ;
+組職労働者 > soshokuroudousha\ ;
+労働者階級 > roudoushakaikyuu\ ;
+拡大再生産 > kakudaisaiseisan\ ;
+上級裁判所 > joukyuusaibansho\ ;
+禁欲主義者 > kin''yokushugisha\ ;
+特殊潜航艇 > tokushusenkoutei\ ;
+最恵国待遇 > saikeikokutaiguu\ ;
+共産主義国 > kyousanshugikoku\ ;
+原告対被告 > genkokutaihikoku\ ;
+受託収賄罪 > jutakushuuwaizai\ ;
+流行性感冒 > ryuukouseikanbou\ ;
+国民総生産 > kokuminsouseisan\ ;
+中距離競走 > chuukyorikyousou\ ;
+全国的範囲 > zenkokutekihan''i\ ;
+連邦共和国 > renpoukyouwakoku\ ;
+普遍的法則 > fuhentekihousoku\ ;
+大統領選挙 > daitouryousenkyo\ ;
+日猶同祖論 > nichiyuudousoron\ ;
+両替手数料 > ryougaetesuuryou\ ;
+資本利益率 > shihonriekiritsu\ ;
+戦車揚陸艦 > senshayourikukan\ ;
+売春防止法 > baishunboushihou\ ;
+光化学反応 > koukagakuhan''nou\ ;
+軍事当局者 > gunjitoukyokusha\ ;
+肉体労働者 > nikutairoudousha\ ;
+自主流通米 > jishuryuutsuumai\ ;
+第一次産業 > daiichijisangyou\ ;
+実存主義者 > jitsuzonshugisha\ ;
+現実主義者 > genjitsushugisha\ ;
+反政府勢力 > hanseifuseiryoku\ ;
+免疫不全症 > men''ekifuzenshou\ ;
+十進分類法 > jisshinbunruihou\ ;
+偶像教徒的 > guuzoukyoutoteki\ ;
+紅白歌合戦 > kouhakuutagassen\ ;
+経済研究所 > keizaikenkyuusho\ ;
+軍事通信員 > gunjitsuushin''in\ ;
+基準内賃金 > kijun''naichingin\ ;
+県庁所在地 > kenchoushozaichi\ ;
+真宗大谷派 > shinshuuootaniha\ ;
+再入国許可 > sainyuukokukyoka\ ;
+英国国教会 > eikokukokkyoukai\ ;
+清教徒革命 > seikyoutokakumei\ ;
+太陽神経叢 > taiyoushinkeisou\ ;
+経営学修士 > keieigakushuushi\ ;
+健康証明書 > kenkoushoumeisho\ ;
+社会心理学 > shakaishinrigaku\ ;
+公共企業体 > koukyoukigyoutai\ ;
+都市再開発 > toshisaikaihatsu\ ;
+放射線療法 > houshasenryouhou\ ;
+国連分担金 > kokurenbuntankin\ ;
+定期刊行物 > teikikankoubutsu\ ;
+攻撃開始線 > kougekikaishisen\ ;
+平面三角法 > heimensankakuhou\ ;
+法定伝染病 > houteidensenbyou\ ;
+中距離競争 > chuukyorikyousou\ ;
+三叉神経痛 > sansashinkeitsuu\ ;
+優勝決定戦 > yuushouketteisen\ ;
+最低生活費 > saiteiseikatsuhi\ ;
+府県別人口 > fukenbetsujinkou\ ;
+推定相続人 > suiteisouzokunin\ ;
+多国籍企業 > takokusekikigyou\ ;
+晴一時小雨 > hareichijikosame\ ;
+季節労働者 > kisetsuroudousha\ ;
+中小諸国家 > choushoushokokka\ ;
+不平等条約 > fubyoudoujouyaku\ ;
+最低賃金制 > saiteichinginsei\ ;
+帝国主義的 > teikokushugiteki\ ;
+納税通知書 > nouzeitsuuchisho\ ;
+関税割当制 > kanzeiwariatesei\ ;
+居住証明書 > kyojuushoumeisho\ ;
+大使級会談 > taishikyuukaidan\ ;
+民主活動家 > minshukatsudouka\ ;
+客員研究員 > kyakuinkenkyuuin\ ;
+支持力係数 > shijiryokukeisuu\ ;
+直下型地震 > chokkagatajishin\ ;
+未解決問題 > mikaiketsumondai\ ;
+建築基準法 > kenchikukijunhou\ ;
+知的所有権 > chitekishoyuuken\ ;
+職業安定所 > shokugyouanteijo\ ;
+共産党細胞 > kyousantousaibou\ ;
+一年生草本 > ichinenseisouhon\ ;
+条約加盟国 > jouyakukameikoku\ ;
+立正佼成会 > risshoukouseikai\ ;
+共観福音書 > kyoukanfukuinsho\ ;
+高所恐怖症 > koushokyoufushou\ ;
+新聞販売店 > shinbunhanbaiten\ ;
+農林水産省 > nourinsuisanshou\ ;
+二者選一法 > nishasen''itsuhou\ ;
+境界値問題 > kyoukaichimondai\ ;
+社会人野球 > shakaijin''yakyuu\ ;
+菜食主義者 > saishokushugisha\ ;
+軍産複合体 > gunsanfukugoutai\ ;
+精神医学者 > seishin''igakusha\ ;
+経済企画庁 > keizaikikakuchou\ ;
+先端支持力 > sentanshijiryoku\ ;
+保健物理学 > hokenbutsurigaku\ ;
+分解蒸溜法 > bunkaijouryuuhou\ ;
+計量言語学 > keiryougengogaku\ ;
+地域振興券 > chiikishinkouken\ ;
+急進主義者 > kyuushinshugisha\ ;
+交通運輸業 > koutsuuun''yugyou\ ;
+無制限供給 > museigenkyoukyuu\ ;
+給与所得者 > kyuuyoshotokusha\ ;
+戦闘爆撃機 > sentoubakugekiki\ ;
+林業試験場 > ringyoushikenjou\ ;
+擲弾発射筒 > tekidanhasshatou\ ;
+産軍複合体 > sangunfukugoutai\ ;
+最大公約数 > saidaikouyakusuu\ ;
+国内消費税 > kokunaishouhizei\ ;
+少年審判所 > shounenshinpanjo\ ;
+流行性肝炎 > ryuukouseikan''en\ ;
+準準決勝戦 > junjunkesshousen\ ;
+不完全燃焼 > fukanzen''nenshou\ ;
+原子力時代 > genshiryokujidai\ ;
+農業試験場 > nougyoushikenjou\ ;
+高速度撮影 > kousokudosatsuei\ ;
+好気性生物 > koukiseiseibutsu\ ;
+家庭内暴力 > kateinaibouryoku\ ;
+在籍専従者 > zaisekisenjuusha\ ;
+官費留学生 > kanpiryuugakusei\ ;
+南北朝時代 > nanbokuchoujidai\ ;
+死亡診断書 > shiboushindansho\ ;
+弦楽四重奏 > gengakushijuusou\ ;
+仲裁裁判所 > chuusaisaibansho\ ;
+理論物理学 > rironbutsurigaku\ ;
+全般前哨線 > zenpanzenshousen\ ;
+十二指腸虫 > juunishichouchuu\ ;
+土木工学者 > dobokukougakusha\ ;
+日中韓統合 > nitchuukantougou\ ;
+拡張倍精度 > kakuchoubaiseido\ ;
+労働収容所 > roudoushuuyousho\ ;
+無着陸飛行 > muchakurikuhikou\ ;
+日付変更線 > hidzukehenkousen\ ;
+当事者能力 > toujishanouryoku\ ;
+損益計算書 > son''ekikeisansho\ ;
+急行停車駅 > kyuukouteishaeki\ ;
+反植民主義 > hanshokuminshugi\ ;
+極低温科学 > kyokuteionkagaku\ ;
+写真望遠鏡 > shashinbouenkyou\ ;
+妙法蓮華経 > myouhourengekyou\ ;
+実用主義者 > jitsuyoushugisha\ ;
+後方連絡線 > kouhourenrakusen\ ;
+実験心理学 > jikkenshinrigaku\ ;
+不法入国者 > fuhounyuukokusha\ ;
+多元方程式 > tagenhouteishiki\ ;
+国内総生産 > kokunaisouseisan\ ;
+鉄道公安官 > tetsudoukouankan\ ;
+平台型貨車 > hiradaigatakasha\ ;
+人称代名詞 > ninshoudaimeishi\ ;
+実業之日本 > jitsugyounonihon\ ;
+積層乾電池 > sekisoukandenchi\ ;
+行政管理庁 > gyouseikanrichou\ ;
+赤十字条約 > sekijuujijouyaku\ ;
+光学顕微鏡 > kougakukenbikyou\ ;
+強制収容所 > kyouseishuuyoujo\ ;
+犯罪心理学 > hanzaishinrigaku\ ;
+連邦捜査局 > renpousousakyoku\ ;
+大陸移動説 > tairikuidousetsu\ ;
+企業内教育 > kigyounaikyouiku\ ;
+窒素酸化物 > chissosankabutsu\ ;
+帝王切開術 > teiousekkaijutsu\ ;
+春機発動期 > shunkihatsudouki\ ;
+天幕製造人 > tenmakuseizounin\ ;
+最優秀選手 > saiyuushuusenshu\ ;
+勝利又勝利 > shourimatashouri\ ;
+女流文学者 > joryuubungakusha\ ;
+耐久消費財 > taikyuushouhizai\ ;
+非公式協議 > hikoushikikyougi\ ;
+空港使用料 > kuukoushiyouryou\ ;
+無重力状態 > mujuuryokujoutai\ ;
+天照皇大神 > tenshoukoudaijin\ ;
+精神安定剤 > seishin''anteizai\ ;
+酸性酸化物 > sanseisankabutsu\ ;
+写実主義者 > shajitsushugisha\ ;
+冷戦型思考 > reisengatashikou\ ;
+電子工業会 > denshikougyoukai\ ;
+電子工学者 > denshikougakusha\ ;
+民主共和国 > minshukyouwakoku\ ;
+独立記念日 > dokuritsukinenbi\ ;
+化学調味料 > kagakuchoumiryou\ ;
+終身雇用制 > shuushinkoyousei\ ;
+不定方程式 > futeihouteishiki\ ;
+大修道院長 > daishuudouinchou\ ;
+港湾運送業 > kouwan''unsougyou\ ;
+周波数変調 > shuuhasuuhenchou\ ;
+乾燥地農業 > kansouchinougyou\ ;
+環境配慮書 > kankyouhairyosho\ ;
+固体物理学 > kotaibutsurigaku\ ;
+組織労働者 > soshikiroudousha\ ;
+営業報告書 > eigyouhoukokusho\ ;
+広告代理店 > koukokudairiten\ ;
+戦時国際法 > senjikokusaihou\ ;
+多額納税者 > tagakunouzeisha\ ;
+太元帥妙王 > daigensuimyouou\ ;
+中部太平洋 > chuubutaiheiyou\ ;
+企業内組合 > kigyounaikumiai\ ;
+太平洋戦争 > taiheiyousensou\ ;
+連帯保証人 > rentaihoshounin\ ;
+軍国主義者 > gunkokushugisha\ ;
+反帝国主義 > hanteikokushugi\ ;
+会社更生法 > kaishakouseihou\ ;
+国選弁護人 > kokusenbengonin\ ;
+自然地理学 > shizenchirigaku\ ;
+地域的分布 > chiikitekibunpu\ ;
+剪断安定性 > sendan''anteisei\ ;
+高分子化学 > koubunshikagaku\ ;
+情報公開法 > jouhoukoukaihou\ ;
+反射望遠鏡 > hanshabouenkyou\ ;
+特別委員会 > tokubetsuiinkai\ ;
+内需主導型 > naijushudougata\ ;
+晴天乱気流 > seitenrankiryuu\ ;
+基本的人権 > kihontekijinken\ ;
+戦争犯罪人 > sensouhanzainin\ ;
+反対貿易風 > hantaibouekifuu\ ;
+道路交通法 > dourokoutsuuhou\ ;
+共産国家郡 > kyousankokkagun\ ;
+仮装巡洋艦 > kasoujun''youkan\ ;
+教育基本法 > kyouikukihonhou\ ;
+生産者価格 > seisanshakakaku\ ;
+最小二乗法 > saishounijouhou\ ;
+主幹研究員 > shukankenkyuuin\ ;
+官僚主義者 > kanryoushugisha\ ;
+小選挙区制 > shousenkyokusei\ ;
+自転車操業 > jitenshasougyou\ ;
+世界新記録 > sekaishinkiroku\ ;
+商工会議所 > shoukoukaigisho\ ;
+弾劾裁判所 > dangaisaibansho\ ;
+保護関税率 > hogokanzeiritsu\ ;
+準禁治産者 > junkinchisansha\ ;
+議院内閣制 > giin''naikakusei\ ;
+生活保護法 > seikatsuhogohou\ ;
+共産主義者 > kyousanshugisha\ ;
+正安息香酸 > seiansokukousan\ ;
+公害病患者 > kougaibyoukanja\ ;
+財政投融資 > zaiseitouyuushi\ ;
+港湾労働者 > kouwanroudousha\ ;
+内陸性気候 > nairikuseikikou\ ;
+中央標準時 > chuuouhyoujunji\ ;
+投光照明器 > toukoushoumeiki\ ;
+総同盟罷業 > soudoumeihigyou\ ;
+最高裁判所 > saikousaibansho\ ;
+営団地下鉄 > eidanchikatetsu\ ;
+飽和化合物 > houwakagoubutsu\ ;
+金属探知機 > kinzokutanchiki\ ;
+浮動小数点 > fudoushousuuten\ ;
+言語心理学 > gengoshinrigaku\ ;
+一姫二太郎 > ichihimenitarou\ ;
+界面活性剤 > kaimenkasseizai\ ;
+人生案内欄 > jinseian''nairan\ ;
+一分二十秒 > ippun''nijuubyou\ ;
+南阿共和国 > nan''akyouwakoku\ ;
+主戦闘戦車 > shusentousensha\ ;
+比較言語学 > hikakugengogaku\ ;
+内政不干渉 > naiseifukanshou\ ;
+高等裁判所 > koutousaibansho\ ;
+球面幾何学 > kyuumenkikagaku\ ;
+電子顕微鏡 > denshikenbikyou\ ;
+労働生産性 > roudouseisansei\ ;
+平行四辺形 > heikoushihenkei\ ;
+感傷主義者 > kanshoushugisha\ ;
+学生自治会 > gakuseijichikai\ ;
+年金受給者 > nenkinjukyuusha\ ;
+非同期通信 > hidoukitsuushin\ ;
+三十年戦争 > sanjuunensensou\ ;
+閉所恐怖症 > heijokyoufushou\ ;
+司法研修所 > shihoukenshuujo\ ;
+低金利政策 > teikinriseisaku\ ;
+麻薬常用者 > mayakujouyousha\ ;
+長距離列車 > choukyoriressha\ ;
+懲罰委員会 > choubatsuiinkai\ ;
+有機化合物 > yuukikagoubutsu\ ;
+楽天主義者 > rakutenshugisha\ ;
+無条件降伏 > mujoukenkoufuku\ ;
+運転免許証 > untenmenkyoshou\ ;
+格闘戦部隊 > kakutousenbutai\ ;
+展示即売会 > tenjisokubaikai\ ;
+軍事境界線 > gunjikyoukaisen\ ;
+消費者団体 > shouhishadantai\ ;
+全体主義国 > zentaishugikoku\ ;
+不可侵条約 > fukashinjouyaku\ ;
+座席指定券 > zasekishiteiken\ ;
+帰国子女枠 > kikokushijowaku\ ;
+遺言補足書 > yuigonhosokusho\ ;
+炭鉱労働者 > tankouroudousha\ ;
+解析幾何学 > kaisekikikagaku\ ;
+経済性向上 > keizaiseikoujou\ ;
+地下核実験 > chikakakujikken\ ;
+比例代表制 > hireidaihyousei\ ;
+立憲君主政 > rikkenkunshusei\ ;
+魚雷発射管 > gyoraihasshakan\ ;
+損益分岐点 > son''ekibunkiten\ ;
+社会保険庁 > shakaihokenchou\ ;
+歩行者天国 > hokoushatengoku\ ;
+国民皆保険 > kokuminkaihoken\ ;
+単純再生産 > tanjunsaiseisan\ ;
+被選挙資格 > hisenkyoshikaku\ ;
+基準外賃金 > kijungaichingin\ ;
+熱帯低気圧 > nettaiteikiatsu\ ;
+現在完了時 > genzaikanryouji\ ;
+等辺三角形 > touhensankakkei\ ;
+日常茶飯事 > nichijousahanji\ ;
+連鎖状球菌 > rensajoukyuukin\ ;
+原爆犠牲者 > genbakugiseisha\ ;
+外国投資家 > gaikokutoushika\ ;
+電波天文学 > denpatenmongaku\ ;
+構造言語学 > kouzougengogaku\ ;
+地域冷暖房 > chiikireidanbou\ ;
+人工呼吸法 > jinkoukokyuuhou\ ;
+実証主義者 > jisshoushugisha\ ;
+支持力理論 > shijiryokuriron\ ;
+公開討論会 > koukaitouronkai\ ;
+文部科学省 > monbukagakushou\ ;
+特許明細書 > tokkyomeisaisho\ ;
+税制調査会 > zeiseichousakai\ ;
+発展途上国 > hattentojoukoku\ ;
+公共図書館 > koukyoutoshokan\ ;
+国内規格化 > kokunaikikakuka\ ;
+創立記念日 > souritsukinenbi\ ;
+金銭登録器 > kinsentourokuki\ ;
+労働組合法 > roudoukumiaihou\ ;
+素形材産業 > sokeizaisangyou\ ;
+交換貿易制 > koukanbouekisei\ ;
+現地駐在員 > genchichuuzaiin\ ;
+最小自乗法 > saishoujijouhou\ ;
+小型乗用車 > kogatajouyousha\ ;
+属性値行列 > zokusegyouretsu\ ;
+海軍兵学校 > kaigunheigakkou\ ;
+黄道十二宮 > koudoujuunikyuu\ ;
+出来高仕事 > dekidakashigoto\ ;
+資産負債表 > shisanfusaihyou\ ;
+版権所有者 > hankenshoyuusha\ ;
+信徒伝動者 > shintodendousha\ ;
+官能主義者 > kan''noushugisha\ ;
+聖霊降臨祭 > seireikourinsai\ ;
+流行性脳炎 > ryuukouseinouen\ ;
+記念論文集 > kinenronbunshuu\ ;
+自動連結機 > jidourenketsuki\ ;
+大陸性気候 > tairikuseikikou\ ;
+核兵器実験 > kakuheikijikken\ ;
+誇大妄想狂 > kodaimousoukyou\ ;
+身分証明書 > mibunshoumeisho\ ;
+文化人類学 > bunkajinruigaku\ ;
+第三次産業 > daisanjisangyou\ ;
+文化大革命 > bunkadaikakumei\ ;
+非局所分岐 > hikyokushobunki\ ;
+関係代名詞 > kankeidaimeishi\ ;
+多国籍言語 > takokusekigengo\ ;
+水銀気圧計 > suiginkiatsukei\ ;
+児童心理学 > jidoushinrigaku\ ;
+空洞化現象 > kuudoukagenshou\ ;
+無理方程式 > murihouteishiki\ ;
+交差対称性 > kousataishousei\ ;
+喧嘩両成敗 > kenkaryouseibai\ ;
+視聴覚機器 > shichoukakukiki\ ;
+染色体異常 > senshokutaiijou\ ;
+結婚適齢期 > kekkontekireiki\ ;
+漸近的自由 > zenkintekijiyuu\ ;
+社会民主党 > shakaiminshutou\ ;
+私設応援団 > shisetsuouendan\ ;
+経済同友会 > keizaidouyuukai\ ;
+反証可能性 > hanshoukanousei\ ;
+搬送周波数 > hansoushuuhasuu\ ;
+最高指導者 > saikoushidousha\ ;
+葡萄状球菌 > budoujoukyuukin\ ;
+全翼飛行機 > zen''yokuhikouki\ ;
+速効性肥料 > sokkouseihiryou\ ;
+遅効性肥料 > chikouseihiryou\ ;
+国粋主義者 > kokusuishugisha\ ;
+断弾性係数 > dandanseikeisuu\ ;
+二次方程式 > nijihouteishiki\ ;
+応用心理学 > ouyoushinrigaku\ ;
+精神異常者 > seishin''ijousha\ ;
+出生年月日 > shusseinengappi\ ;
+動詞状名詞 > doushijoumeishi\ ;
+自由裁量権 > jiyuusairyouken\ ;
+中央集権化 > chuuoushuukenka\ ;
+無利息証券 > murisokushouken\ ;
+仁義礼智信 > jingireichishin\ ;
+更年期障害 > kounenkishougai\ ;
+国語審議会 > kokugoshingikai\ ;
+地方裁判所 > chihousaibansho\ ;
+自動改札機 > jidoukaisatsuki\ ;
+未就学児童 > mishuugakujidou\ ;
+実時間処理 > jitsujikanshori\ ;
+預金準備率 > yokinjunbiritsu\ ;
+天体望遠鏡 > tentaibouenkyou\ ;
+社会諸科学 > shakaishokagaku\ ;
+法律事務所 > houritsujimusho\ ;
+実利主義者 > jitsurishugisha\ ;
+未確認情報 > mikakuninjouhou\ ;
+老人性痴呆 > roujinseichihou\ ;
+在外研究員 > zaigaikenkyuuin\ ;
+客観主義者 > kyakkanshugisha\ ;
+選手権大会 > senshukentaikai\ ;
+下級裁判所 > kakyuusaibansho\ ;
+逓降変圧器 > teikouhenatsuki\ ;
+限界顕微鏡 > genkaikenbikyou\ ;
+要撃戦闘機 > yougekisentouki\ ;
+不公平競争 > fukouheikyousou\ ;
+公認会計士 > kouninkaikeishi\ ;
+犯行声明文 > hankouseimeibun\ ;
+消費者価格 > shouhishakakaku\ ;
+音楽評論家 > ongakuhyouronka\ ;
+公安調査庁 > kouanchousachou\ ;
+乗降車優先 > joukoushayuusen\ ;
+人工甘味料 > jinkoukanmiryou\ ;
+在郷軍人会 > zaigougunjinkai\ ;
+自記湿度計 > jikishitsudokei\ ;
+大統一理論 > daitouitsuriron\ ;
+検定教科書 > kenteikyoukasho\ ;
+医学技術士 > igakugijutsushi\ ;
+天皇誕生日 > ten''noutanjoubi\ ;
+太平洋地域 > taiheiyouchiiki\ ;
+資産再評価 > shisansaihyouka\ ;
+情緒障害児 > jouchoshougaiji\ ;
+日本国憲法 > nihonkokukenpou\ ;
+人民解放軍 > jinminkaihougun\ ;
+絶対君主制 > zettaikunshusei\ ;
+芸術愛好家 > geijutsuaikouka\ ;
+私生児出産 > shiseijishussan\ ;
+両院協議会 > ryouinkyougikai\ ;
+小田原提灯 > odawaradjouchin\ ;
+貨物自動車 > kamotsujidousha\ ;
+片手間仕事 > katatemashigoto\ ;
+神経回路網 > shinkeikairomou\ ;
+炭素化合物 > tansokagoubutsu\ ;
+気管支喘息 > kikanshizensoku\ ;
+不動産業者 > fudousangyousha\ ;
+海洋気象台 > kaiyoukishoudai\ ;
+自動翻訳機 > jidouhon''yakuki\ ;
+縄文式土器 > joumonshikidoki\ ;
+輸入課徴金 > yunyuukachoukin\ ;
+重商主義者 > juushoushugisha\ ;
+遺産相続税 > isansouzokuzei\ ;
+毘廬遮那仏 > birushanabutsu\ ;
+関税自主権 > kanzeijishuken\ ;
+基本周波数 > kihonshuuhasuu\ ;
+四輪駆動車 > yonrinkudousha\ ;
+静電気防止 > seidenkiboushi\ ;
+煙突掃除夫 > entotsusoujifu\ ;
+休戦記念日 > kyuusenkinenbi\ ;
+学校群制度 > gakkougunseido\ ;
+放射線技師 > houshasengishi\ ;
+家庭裁判所 > kateisaibansho\ ;
+長距離打者 > choukyoridasha\ ;
+日本標準時 > nihonhyoujunji\ ;
+誘導電動機 > yuudoudendouki\ ;
+建国記念日 > kenkokukinenbi\ ;
+伝統主義者 > dentoushugisha\ ;
+登記番号欄 > toukibangouran\ ;
+歩行者優先 > hokoushayuusen\ ;
+無人宇宙船 > mujin''uchuusen\ ;
+羅萄日辞典 > raponichijiten\ ;
+温暖化現象 > ondankagenshou\ ;
+婦人参政権 > fujinsanseiken\ ;
+自由民主党 > jiyuuminshutou\ ;
+個体発生論 > kotaihasseiron\ ;
+大威徳妙王 > daiitokumyouou\ ;
+大韓航空機 > taikankoukuuki\ ;
+不特定多数 > futokuteitasuu\ ;
+主情主義者 > shujoushugisha\ ;
+法定代理人 > houteidairinin\ ;
+公開図書館 > koukaitoshokan\ ;
+一時間以内 > ichijikan''inai\ ;
+数理言語学 > suurigengogaku\ ;
+遺産相続人 > isansouzokunin\ ;
+方向探知器 > houkoutanchiki\ ;
+熱可塑樹脂 > netsukasojushi\ ;
+無機化合物 > mukikagoubutsu\ ;
+重要文化財 > juuyoubunkazai\ ;
+居間兼食堂 > imakenshokudou\ ;
+異方導電膜 > ihoudoudenmaku\ ;
+指示代名詞 > shijidaimeishi\ ;
+回復不可能 > kaifukufukanou\ ;
+拝金主義者 > haikinshugisha\ ;
+人道主義者 > jindoushugisha\ ;
+中央分離帯 > chuuoubunritai\ ;
+温帯低気圧 > ontaiteikiatsu\ ;
+超国家主義 > choukokkashugi\ ;
+利害関係者 > rigaikankeisha\ ;
+衆議員議長 > shuugiingichou\ ;
+導波管定数 > douhakanteisuu\ ;
+丁字形定規 > teijigatajougi\ ;
+簡易裁判所 > kan''isaibansho\ ;
+反動主義者 > handoushugisha\ ;
+音楽図書館 > ongakutoshokan\ ;
+乗用自動車 > jouyoujidousha\ ;
+圧倒的多数 > attoutekitasuu\ ;
+非政府組織 > hiseifusoshiki\ ;
+自由労働者 > jiyuuroudousha\ ;
+博愛主義者 > hakuaishugisha\ ;
+定期乗車券 > teikijoushaken\ ;
+電気洗濯機 > denkisentakuki\ ;
+終戦記念日 > shuusenkinenbi\ ;
+社会主義者 > shakaishugisha\ ;
+小型自動車 > kogatajidousha\ ;
+民事訴訟法 > minjisoshouhou\ ;
+第二量子化 > dainiryoushika\ ;
+二原子分子 > nigenshibunshi\ ;
+常任指揮者 > jouninshikisha\ ;
+農事試験場 > noujishikenjou\ ;
+情報化社会 > jouhoukashakai\ ;
+主観主義者 > shukanshugisha\ ;
+無教会主義 > mukyoukaishugi\ ;
+米価審議会 > beikashingikai\ ;
+時間外労働 > jikangairoudou\ ;
+百科全書派 > hyakkazenshoha\ ;
+二百二十日 > nihyakuhatsuka\ ;
+二重価格制 > nijuukakakusei\ ;
+刑事訴訟法 > keijisoshouhou\ ;
+販売代理店 > hanbaidairiten\ ;
+東亜諸民族 > touashominzoku\ ;
+単葉飛行機 > tan''youhikouki\ ;
+国会議事録 > kokkaigijiroku\ ;
+政府保証債 > seifuhoshousai\ ;
+便乗主義者 > binjoushugisha\ ;
+二大政党制 > nidaiseitousei\ ;
+無利息公債 > murisokukousai\ ;
+足素性原理 > ashisujougenri\ ;
+資本主義者 > shihonshugisha\ ;
+文化地理学 > bunkachirigaku\ ;
+公認候補者 > kouninkouhosha\ ;
+世界選手権 > sekaisenshuken\ ;
+新石器時代 > shinsekkijidai\ ;
+受験参考書 > jukensankousho\ ;
+静止画放送 > seishigahousou\ ;
+少年感化院 > shounenkankain\ ;
+長距離輸送 > choukyoriyusou\ ;
+再帰代名詞 > saikidaimeishi\ ;
+控訴裁判所 > kousohaibansho\ ;
+文化功労者 > bunkakourousha\ ;
+真空掃除機 > shinkuusoujiki\ ;
+人形浄瑠璃 > ningyoujoururi\ ;
+政治評論家 > seijihyouronka\ ;
+伝承叙事詩 > denshoujojishi\ ;
+有視界飛行 > yuushikaihikou\ ;
+降三世妙王 > gouzanzemyouou\ ;
+等高線地図 > toukousenchizu\ ;
+製造年月日 > seizounengappi\ ;
+地方交付税 > chihoukoufuzei\ ;
+日本語教本 > nihongokyouhon\ ;
+俘虜収容所 > furyoshuuyoujo\ ;
+空気圧縮機 > kuukiasshukuki\ ;
+国連記念日 > kokurenkinenbi\ ;
+無記名投票 > mukimeitouhyou\ ;
+自然主義者 > shizenshugisha\ ;
+管区気象台 > kankukishoudai\ ;
+法定準備金 > houteijunbikin\ ;
+海洋性気候 > kaiyouseikikou\ ;
+外貨準備高 > gaikajunbidaka\ ;
+旅行代理店 > ryokoudairiten\ ;
+予選通過者 > yosentsuukasha\ ;
+女性解放論 > joseikaihouron\ ;
+遺伝子治療 > idenshichiryou\ ;
+絶対主義者 > zettaishugisha\ ;
+共同炊事場 > kyoudousuijiba\ ;
+福祉事務所 > fukushijimusho\ ;
+三角系異常 > sankakukeiijou\ ;
+水産試験所 > suisanshikenjo\ ;
+軍事裁判所 > gunjisaibansho\ ;
+隠退蔵物資 > intaizoubusshi\ ;
+参考図書館 > sankoutoshokan\ ;
+無線周波数 > musenshuuhasuu\ ;
+重農主義者 > juunoushugisha\ ;
+乗合自動車 > noriaijidousha\ ;
+細胞遺伝学 > saibouidengaku\ ;
+超音波洗浄 > chouonpasenjou\ ;
+刑事被告人 > keijihikokunin\ ;
+群伝搬時間 > gundenpanjikan\ ;
+健康保険法 > kenkouhokenhou\ ;
+常任理事国 > jouninrijikoku\ ;
+非金属元素 > hikinzokugenso\ ;
+陸上自衛隊 > rikujoujieitai\ ;
+保険勧誘員 > hokenkan''yuuin\ ;
+窒素固定法 > chissokoteihou\ ;
+相対性原理 > soutaiseigenri\ ;
+美術愛好家 > bijutsuaikouka\ ;
+中石器時代 > chuusekkijidai\ ;
+主知主義者 > shuchishugisha\ ;
+蚕糸試験所 > sanshishikenjo\ ;
+立体幾何学 > rittaikikagaku\ ;
+不動産鑑定 > fudousankantei\ ;
+長距離飛行 > choukyorihikou\ ;
+第二次性徴 > dainijiseichou\ ;
+句構造文法 > kukouzoubunpou\ ;
+士官候補生 > shikankouhosei\ ;
+巡回図書館 > junkaitoshokan\ ;
+徴兵忌避者 > chouheikihisha\ ;
+出訴期限法 > shussokigenhou\ ;
+軍用輸送機 > gun''youyusouki\ ;
+言語地理学 > gengochirigaku\ ;
+前方後円墳 > zenpoukouenfun\ ;
+虫様突起炎 > chuuyoutokkien\ ;
+有形文化財 > yuukeibunkazai\ ;
+旧石器時代 > kyuusekkijidai\ ;
+自由民権論 > jiyuuminkenron\ ;
+破産裁判所 > hasansaibansho\ ;
+人身保護法 > jinshinhogohou\ ;
+放射性元素 > houshaseigenso\ ;
+捕虜収容所 > horyoshuuyoujo\ ;
+生計費指数 > seikeihishisuu\ ;
+国会図書館 > kokkaitoshokan\ ;
+高等弁務官 > koutoubenmukan\ ;
+時間順序積 > jikanjunjoseki\ ;
+地球温暖化 > chikyuuondanka\ ;
+非常勤講師 > hijoukinkoushi\ ;
+自動車学校 > jidoushagakkou\ ;
+税金避難地 > zeikinhinanchi\ ;
+人道的援助 > jindoutekienjo\ ;
+消費者運動 > shouhishaundou\ ;
+労働基準法 > roudoukijunhou\ ;
+漢字制限論 > kanjiseigenron\ ;
+周波数偏移 > shuuhasuuhen''i\ ;
+無制限貿易 > museigenboueki\ ;
+次元正則化 > jigenseisokuka\ ;
+人名用漢字 > jinmeiyoukanji\ ;
+征夷大将軍 > seiitaishougun\ ;
+産業予備軍 > sangyouyobigun\ ;
+利子平衡税 > rishiheikouzei\ ;
+無任所大臣 > muninshodaijin\ ;
+二重盲検法 > nijuumoukenhou\ ;
+自賠責保険 > jibaisekihoken\ ;
+重炭酸曹達 > juutansansouda\ ;
+長距離電話 > choukyoridenwa\ ;
+遺伝子工学 > idenshikougaku\ ;
+不可能選択 > fukanousentaku\ ;
+句構造規則 > kukouzoukisoku\ ;
+手形交換所 > tegatakoukanjo\ ;
+地方自治体 > chihoujichitai\ ;
+不規則動詞 > fukisokudoushi\ ;
+完全主義者 > kanzenshugisha\ ;
+構成素構造 > kouseisokouzou\ ;
+載貨吃水線 > saikakissuisen\ ;
+水銀温度計 > suigin''ondokei\ ;
+数理論理学 > suurironrigaku\ ;
+皇太子殿下 > koutaishidenka\ ;
+戦争未亡人 > sensoumiboujin\ ;
+破産管財人 > hasankanzainin\ ;
+協定世界時 > kyouteisekaiji\ ;
+海上保安庁 > kaijouhoanchou\ ;
+特異値分解 > tokuichibunkai\ ;
+民営化企業 > min''eikakigyou\ ;
+大西洋横断 > taiseiyououdan\ ;
+人工避妊法 > jinkouhininhou\ ;
+魚群探知機 > gyoguntanchiki\ ;
+遊離基反応 > yuurikihan''nou\ ;
+小田原評定 > odawarahyoujou\ ;
+騒音防止法 > souonboushihou\ ;
+疑問代名詞 > gimondaimeishi\ ;
+相対性理論 > soutaiseiriron\ ;
+酸化防止剤 > sankaboushizai\ ;
+第二次産業 > dainijisangyou\ ;
+有機塩溶媒 > yuukien''youbai\ ;
+電子計算機 > denshikeisanki\ ;
+戦闘犠牲者 > sentougiseisha\ ;
+民間航空機 > minkankoukuuki\ ;
+反戦主義者 > hansenshugisha\ ;
+観光案内所 > kankouan''naijo\ ;
+高齢化社会 > koureikashakai\ ;
+記号論理学 > kigouronrigaku\ ;
+指名手配人 > shimeitehaijin\ ;
+自転車旅行 > jitensharyokou\ ;
+平均太陽時 > heikintaiyouji\ ;
+好気性細菌 > koukiseisaikin\ ;
+電波望遠鏡 > denpabouenkyou\ ;
+労働運動者 > roudouundousha\ ;
+震災記念日 > shinsaikinenbi\ ;
+悪徳政治家 > akutokuseijika\ ;
+情報主要素 > jouhoushuyouso\ ;
+公武合体論 > koubugattairon\ ;
+電光掲示板 > denkoukeijiban\ ;
+価電子状態 > kadenshijoutai\ ;
+水産加工品 > suisankakouhin\ ;
+平面幾何学 > heimenkikagaku\ ;
+自転車置場 > jitenshaokiba\ ;
+教育委員会 > kyouikuiinkai\ ;
+水上飛行機 > suijouhikouki\ ;
+厭世悲観者 > enseihikansha\ ;
+後期印象派 > koukiinshouha\ ;
+大規模戦争 > daikibosensou\ ;
+無担保社債 > mutanposhasai\ ;
+遠心分離機 > enshinbunriki\ ;
+電気冷蔵庫 > denkireizouko\ ;
+最低温度計 > saiteiondokei\ ;
+顧問弁護士 > komonbengoshi\ ;
+二硫化炭素 > niryuukatanso\ ;
+早期警戒機 > soukikeikaiki\ ;
+構造遺伝子 > kouzouidenshi\ ;
+青銅器時代 > seidoukijidai\ ;
+会計検査院 > kaikeikensain\ ;
+首位攻防戦 > shuikoubousen\ ;
+全方位外交 > zenhouigaikou\ ;
+無人化工場 > mujinkakoujou\ ;
+火事場泥棒 > kajibadorobou\ ;
+人工栄養児 > jinkoueiyouji\ ;
+欧米諸言語 > oubeishogengo\ ;
+人工孵化法 > jinkoufukahou\ ;
+軍事顧問団 > gunjikomondan\ ;
+高層天気図 > kousoutenkizu\ ;
+仮面舞踏会 > kamenbutoukai\ ;
+作業部会案 > sagyoubukaian\ ;
+映画評論家 > eigahyouronka\ ;
+第二次大戦 > dainijitaisen\ ;
+野次馬根性 > yajiumakonjou\ ;
+英会話学校 > eikaiwagakkou\ ;
+前方不注意 > zenpoufuchuui\ ;
+地方公務員 > chihoukoumuin\ ;
+自動販売機 > jidouhanbaiki\ ;
+電磁調理器 > denjichouriki\ ;
+航空自衛隊 > koukuujieitai\ ;
+機関投資家 > kikantoushika\ ;
+回路遮断機 > kairoshadanki\ ;
+聖路加病院 > seirokabyouin\ ;
+分離主義者 > bunrishugisha\ ;
+憲法記念日 > kenpoukinenbi\ ;
+加減抵抗器 > kagenteikouki\ ;
+自動販売器 > jidouhanbaiki\ ;
+無免許運転 > mumenkyounten\ ;
+不可視光線 > fukashikousen\ ;
+貿易自由化 > bouekijiyuuka\ ;
+空気制動機 > kuukiseidouki\ ;
+五十歩百歩 > gojuppohyappo\ ;
+原理主義者 > genrishugisha\ ;
+多元文化論 > tagenbunkaron\ ;
+譲渡性預金 > joutoseiyokin\ ;
+国家主義者 > kokkashugisha\ ;
+沿岸警備隊 > engankeibitai\ ;
+個人主義者 > kojinshugisha\ ;
+外交委員長 > gaikouiinchou\ ;
+無抵抗主義 > muteikoushugi\ ;
+放射能汚染 > houshanouosen\ ;
+電気自動車 > denkijidousha\ ;
+優生保護法 > yuuseihogohou\ ;
+地方事務所 > chihoujimusho\ ;
+輸入自由化 > yunyuujiyuuka\ ;
+無利息債務 > murisokusaimu\ ;
+硫黄酸化物 > iousankabutsu\ ;
+道路掃除人 > dourosoujijin\ ;
+仁輪加狂言 > niwakakyougen\ ;
+自自公3党 > jijikousantou\ ;
+気管支肺炎 > kikanshihaien\ ;
+多重債務者 > tajuusaimusha\ ;
+諮問委員会 > shimon''iinkai\ ;
+高高度飛行 > koukoudohikou\ ;
+国会議事堂 > kokkaigijidou\ ;
+二十四節気 > nijuushisekki\ ;
+無形文化財 > mukeibunkazai\ ;
+市場自由化 > shijoujiyuuka\ ;
+経営多角化 > keieitakakuka\ ;
+主我主義者 > shugashugisha\ ;
+暗号化手法 > angoukashuhou\ ;
+不見転芸者 > mizutengeisha\ ;
+功利主義者 > kourishugisha\ ;
+自動車保険 > jidoushahoken\ ;
+自己顕示欲 > jikokenjiyoku\ ;
+無配当保険 > muhaitouhoken\ ;
+果樹栽培者 > kajusaibaisha\ ;
+裁判官忌避 > saibankankihi\ ;
+非武装地帯 > hibusouchitai\ ;
+空気清浄機 > kuukiseijouki\ ;
+一事不再議 > ichijifusaigi\ ;
+創建記念日 > soukenkinenbi\ ;
+普遍妥当性 > fuhendatousei\ ;
+原子破壊機 > genshihakaiki\ ;
+結婚記念日 > kekkonkinenbi\ ;
+大雨注意報 > ooamechuuihou\ ;
+米東部時間 > beitoubujikan\ ;
+劣性遺伝子 > resseiidenshi\ ;
+無価値資産 > mukachishisan\ ;
+健康保険医 > kenkouhoken''i\ ;
+常任委員会 > jounin''iinkai\ ;
+自由主義者 > jiyuushugisha\ ;
+短波受信機 > tanpajushinki\ ;
+破壊主義者 > hakaishugisha\ ;
+御都合主義 > gotsugoushugi\ ;
+二十日大根 > hatsukadaikon\ ;
+落下傘部隊 > rakkasanbutai\ ;
+長距離依存 > choukyoriizon\ ;
+符号変換器 > fugouhenkanki\ ;
+送金小切手 > soukinkogitte\ ;
+対戦車火器 > taisenshakaki\ ;
+弗化水素酸 > fukkasuisosan\ ;
+相補性原理 > souhoseigenri\ ;
+蒸気機関車 > joukikikansha\ ;
+文化事業部 > bunkajigyoubu\ ;
+無記名社債 > mukimeishasai\ ;
+合同慰霊祭 > goudouireisai\ ;
+火災報知機 > kasaihouchiki\ ;
+電波探知機 > denpatanchiki\ ;
+可変抵抗器 > kahenteikouki\ ;
+公務員試験 > koumuinshiken\ ;
+宇宙飛行士 > uchuuhikoushi\ ;
+看護婦学院 > kangofugakuin\ ;
+十字軍騎士 > juujigunkishi\ ;
+無機高分子 > mukikoubunshi\ ;
+火災報知器 > kasaihouchiki\ ;
+電波探知器 > denpatanchiki\ ;
+指揮所演習 > shikijoenshuu\ ;
+二酸化窒素 > nisankachisso\ ;
+自動車電話 > jidoushadenwa\ ;
+情報可視化 > jouhoukashika\ ;
+摂氏20度 > sesshinijuudo\ ;
+小型赤家蚊 > kogataakaieka\ ;
+結婚披露宴 > kekkonhirouen\ ;
+海上自衛隊 > kaijoujieitai\ ;
+原案委員会 > gen''an''iinkai\ ;
+選手権試合 > senshukenjiai\ ;
+日和見主義 > hiyorimishugi\ ;
+仮装舞踏会 > kasoubutoukai\ ;
+遮光器土偶 > shakoukidoguu\ ;
+下水処理場 > gesuishorijou\ ;
+合理主義者 > gourishugisha\ ;
+楽器演奏者 > gakkiensousha\ ;
+古典主義者 > kotenshugisha\ ;
+国土地理院 > kokudochiriin\ ;
+市街化区域 > shigaikakuiki\ ;
+電気機関車 > denkikikansha\ ;
+弥次馬根性 > yajiumakonjou\ ;
+開校記念日 > kaikoukinenbi\ ;
+不可知論者 > fukachironsha\ ;
+無記名債権 > mukimeisaiken\ ;
+全波受信機 > zenpajushinki\ ;
+平和主義者 > heiwashugisha\ ;
+青天井予算 > aotenjouyosan\ ;
+状況意味論 > joukyouimiron\ ;
+漢字文化圏 > kanjibunkaken\ ;
+歯科技工士 > shikagikoushi\ ;
+海上輸送路 > kaijouyusouro\ ;
+調停委員会 > chouteiiinkai\ ;
+行方不明者 > yukuefumeisha\ ;
+個人的意見 > kojintekiiken\ ;
+北国赤海老 > hokkokuakaebi\ ;
+使途不明金 > shitofumeikin\ ;
+民主化運動 > minshukaundou\ ;
+天気相談所 > tenkisoudanjo\ ;
+参加希望者 > sankakibousha\ ;
+懐疑主義者 > kaigishugisha\ ;
+市議会議員 > shigikaigiin\ ;
+中央委員会 > chuuouiinkai\ ;
+胃酸過多症 > isankatashou\ ;
+電気陰性度 > denkiinseido\ ;
+無記名預金 > mukimeiyokin\ ;
+利己主義者 > rikoshugisha\ ;
+国家公務員 > kokkakoumuin\ ;
+希土類元素 > kidoruigenso\ ;
+電気掃除機 > denkisoujiki\ ;
+薔薇十字団 > barajuujidan\ ;
+富士火山帯 > fujikazantai\ ;
+星座投影機 > seizatoueiki\ ;
+欧州委員会 > oushuuiinkai\ ;
+上位互換性 > jouigokansei\ ;
+放射線科医 > houshasenkai\ ;
+火炎放射器 > kaenhoushaki\ ;
+合同委員会 > goudouiinkai\ ;
+遺産管理人 > isankanrinin\ ;
+貿易依存度 > bouekiizondo\ ;
+労働委員会 > roudouiinkai\ ;
+模型飛行機 > mokeihikouki\ ;
+下位範疇化 > kaihanchuuka\ ;
+非営利団体 > hieiridantai\ ;
+亜熱帯気候 > anettaikikou\ ;
+無政府主義 > museifushugi\ ;
+移動図書館 > idoutoshokan\ ;
+実行委員会 > jikkouiinkai\ ;
+留守番電話 > rusubandenwa\ ;
+検討委員会 > kentouiinkai\ ;
+衆議院議員 > shuugiingiin\ ;
+選考委員会 > senkouiinkai\ ;
+類義語辞典 > ruigigojiten\ ;
+右方高麗楽 > uhoukomagaku\ ;
+肥厚性鼻炎 > hikouseibien\ ;
+亜酸化窒素 > asankachisso\ ;
+安定同位体 > anteidouitai\ ;
+文字符号系 > mojifugoukei\ ;
+医療輸送機 > iryouyusouki\ ;
+過酸化水素 > kasankasuiso\ ;
+代理委任状 > dairiininjou\ ;
+亜寒帯気候 > akantaikikou\ ;
+高音部記号 > kouonbukigou\ ;
+位相幾何学 > isoukikagaku\ ;
+伊勢大神宮 > isedaijinguu\ ;
+二酸化炭素 > nisankatanso\ ;
+低音部記号 > teionbukigou\ ;
+愛他主義者 > aitashugisha\ ;
+主意主義者 > shuishugisha\ ;
+次酸化炭素 > jisankatanso\ ;
+治安維持法 > chian''ijihou\ ;
+井戸端会議 > idobatakaigi\ ;
+度数分布図 > dosuubunpuzu\ ;
+自動車事故 > jidoushajiko\ ;
+農地委員会 > nouchiiinkai\ ;
+債務不履行 > saimufurikou\ ;
+一酸化炭素 > issankatanso\ ;
+付加価値税 > fukakachizei\ ;
+常置委員会 > jouchiiinkai\ ;
+公安委員会 > kouan''iinkai\ ;
+非営利事業 > hieirijigyou\ ;
+経営合理化 > keieigourika\ ;
+弁護依頼人 > bengoirainin\ ;
+利他主義者 > ritashugisha\ ;
+尊皇王攘夷 > son''noujoui\ ;
+非開示合意 > hikaijigoui\ ;
+見様見真似 > miyoumimane\ ;
+阿呆陀羅経 > ahodarakyou\ ;
+法務委員会 > houmuiinkai\ ;
+脊黄青鸚哥 > sekiseiinko\ ;
+屋根裏部屋 > yaneurabeya\ ;
+阿多福風邪 > otafukukaze\ ;
+不随意運動 > fuzuiiundou\ ;
+日本語文字 > nihongomoji\ ;
+平和維持軍 > heiwaijigun\ ;
+耳鼻咽喉科 > jibiinkouka\ ;
+参議院議員 > sangiingiin\ ;
+江戸前寿司 > edomaezushi\ ;
+自記温度計 > jikiondokei\ ;
+準備委員会 > junbiiinkai\ ;
+下位互換性 > kaigokansei\ ;
+亜鉛華軟膏 > aenkanankou\ ;
+亜米利加杉 > amerikasugi\ ;
+摩訶不思議 > makafushigi\ ;
+産婦人科医 > sanfujinkai\ ;
+運営委員会 > un''eiiinkai\ ;
+同音異義語 > douon''igigo\ ;
+出来不出来 > dekifudeki\ ;
+御高祖頭巾 > okosozukin\ ;
+二酸化硫黄 > nisankaiou\ ;
+十重二十重 > toehatae\ ;
+長日植物 > choujitsushokubutsu\ ;
+律令格式 > ritsuryoukyakushiki\ ;
+食肉植物 > shokunikushokubutsu\ ;
+直接接続 > chokusetsusetsuzoku\ ;
+食虫植物 > shokuchuushokubutsu\ ;
+一日一日 > ichinichiichinichi\ ;
+短日植物 > tanjitsushokubutsu\ ;
+標準出力 > hyoujunshutsuryoku\ ;
+信賞必罰 > shinshouhitsubatsu\ ;
+特徴抽出 > tokuchouchuushutsu\ ;
+着生植物 > chakuseishokubutsu\ ;
+実物取引 > jitsubutsutorihiki\ ;
+直接接触 > chokusetsusesshoku\ ;
+貸付信託 > kashitsukeshintaku\ ;
+即日速達 > sokujitsusokutatsu\ ;
+百発百中 > hyappatsuhyakuchuu\ ;
+取締役会 > torishimariyakukai\ ;
+出力装置 > shutsuryokusouchi\ ;
+複雑骨折 > fukuzatsukossetsu\ ;
+物的流通 > butsutekiryuutsuu\ ;
+十年一昔 > juunenhitomukashi\ ;
+祥月命日 > shoutsukimeinichi\ ;
+戦略物質 > senryakubusshitsu\ ;
+就職活動 > shuushokukatsudou\ ;
+弱肉強食 > jakunikukyoushoku\ ;
+伸縮税率 > shinshukuzeiritsu\ ;
+神出鬼没 > shinshutsukibotsu\ ;
+吸血動物 > kyuuketsudoubutsu\ ;
+熱力学的 > netsurikigakuteki\ ;
+植物採集 > shokubutsusaishuu\ ;
+出力端子 > shutsuryokutanshi\ ;
+標準入力 > hyoujun''nyuuryoku\ ;
+観葉植物 > kan''youshokubutsu\ ;
+七生報国 > shichishouhoukoku\ ;
+実物描写 > jitsubutsubyousha\ ;
+殺真菌薬 > satsushinkin''yaku\ ;
+標本抽出 > hyouhonchuushutsu\ ;
+総括質問 > soukatsushitsumon\ ;
+潮力発電 > chouryokuhatsuden\ ;
+直接購入 > chokusetsukounyuu\ ;
+窮極目的 > kyuukyokumokuteki\ ;
+天照大神 > amaterasuoomikami\ ;
+質実剛健 > shitsujitsugouken\ ;
+局外中立 > kyokugaichuuritsu\ ;
+色彩調節 > shikisaichousetsu\ ;
+薬用植物 > yakuyoushokubutsu\ ;
+秋霜烈日 > shuusouretsujitsu\ ;
+直接請求 > chokusetsuseikyuu\ ;
+宗教哲学 > shuukyoutetsugaku\ ;
+薬物中毒 > yakubutsuchuudoku\ ;
+小心翼翼 > shoushin''yokuyoku\ ;
+特別幕僚 > tokubetsubakuryou\ ;
+分裂物質 > bunretsubusshitsu\ ;
+直接照明 > chokusetsushoumei\ ;
+嘱託殺人 > shokutakusatsujin\ ;
+湿生植物 > shisseishokubutsu\ ;
+七十人訳 > shichijuunin''yaku\ ;
+発癌物質 > hatsuganbusshitsu\ ;
+白長須鯨 > shironagasukujira\ ;
+観賞植物 > kanshoushokubutsu\ ;
+心神喪失 > shinshinsoushitsu\ ;
+通俗小説 > tsuuzokushousetsu\ ;
+百戦百勝 > hyakusenhyakushou\ ;
+提灯行列 > chouchingyouretsu\ ;
+失業対策 > shitsugyoutaisaku\ ;
+小心翼々 > shoushin''yokuyoku\ ;
+左側通行 > hidarigawatsuukou\ ;
+救出作戦 > kyuushutsusakusen\ ;
+室内装飾 > shitsunaisoushoku\ ;
+直接競争 > chokusetsukyousou\ ;
+旭日昇天 > kyokujitsushouten\ ;
+蘚苔植物 > sentaishokubutsu\ ;
+研究室棟 > kenkyuushitsutou\ ;
+西側諸国 > nishigawashokoku\ ;
+脊椎動物 > sekitsuidoubutsu\ ;
+桑原桑原 > kuwabarakuwabara\ ;
+享楽生活 > kyourakuseikatsu\ ;
+入力電流 > nyuuryokudenryuu\ ;
+十年一日 > juunen''ichijitsu\ ;
+風俗小説 > fuuzokushousetsu\ ;
+低血圧症 > teiketsuatsushou\ ;
+虚々実々 > kyokyojitsujitsu\ ;
+技術協力 > gijutsukyouryoku\ ;
+空中衝突 > kuuchuushoutotsu\ ;
+千篇一律 > senpen''ichiritsu\ ;
+料理教室 > ryourikyoushitsu\ ;
+本格小説 > honkakushousetsu\ ;
+国立劇場 > kokuritsugekijou\ ;
+草食動物 > soushokudoubutsu\ ;
+直接選挙 > chokusetsusenkyo\ ;
+生者必滅 > shoujahitsumetsu\ ;
+熱帯植物 > nettaishokubutsu\ ;
+松下電工 > matsushitadenkou\ ;
+商業算術 > shougyousanjutsu\ ;
+戦戦栗栗 > sensenritsuritsu\ ;
+揮発物質 > kihatsubusshitsu\ ;
+発光植物 > hakkoushokubutsu\ ;
+電力供給 > denryokukyoukyuu\ ;
+戦略爆撃 > senryakubakugeki\ ;
+妊娠中絶 > ninshinchuuzetsu\ ;
+直接会談 > chokusetsukaidan\ ;
+割増賃金 > warimashichingin\ ;
+作付面積 > sakudzukemenseki\ ;
+日独協会 > nichidokukyoukai\ ;
+日常生活 > nichijouseikatsu\ ;
+歳入歳出 > sainyuusaishutsu\ ;
+特別急行 > tokubetsukyuukou\ ;
+転出証明 > tenshutsushoumei\ ;
+救荒作物 > kyuukousakumotsu\ ;
+地熱発電 > chinetsuhatsuden\ ;
+薬物療法 > yakubutsuryouhou\ ;
+食糧配給 > shokuryouhaikyuu\ ;
+直系血族 > chokkeiketsuzoku\ ;
+質問用紙 > shitsumon''youshi\ ;
+独身生活 > dokushinseikatsu\ ;
+警察当局 > keisatsutoukyoku\ ;
+直接伝染 > chokusetsudensen\ ;
+青空教室 > aozorakyoushitsu\ ;
+非嫡出子 > hichakushutsushi\ ;
+生活様式 > seikatsuyoushiki\ ;
+片道料金 > katamichiryoukin\ ;
+原油流出 > gen''yuryuushutsu\ ;
+略式命令 > ryakushikimeirei\ ;
+芸術活動 > geijutsukatsudou\ ;
+歴史哲学 > rekishitetsugaku\ ;
+下町言葉 > shitamachikotoba\ ;
+緊急着陸 > kinkyuuchakuriku\ ;
+冷血動物 > reiketsudoubutsu\ ;
+取扱注意 > toriatsukaichuui\ ;
+割増料金 > warimashiryoukin\ ;
+直截簡明 > chokusetsukanmei\ ;
+黄道吉日 > koudoukichinichi\ ;
+一触即発 > isshokusokuhatsu\ ;
+即日開票 > sokujitsukaihyou\ ;
+実質賃金 > jisshitsuchingin\ ;
+教養小説 > kyouyoushousetsu\ ;
+抽象芸術 > chuushougeijutsu\ ;
+直接支配 > chokusetsushihai\ ;
+集団就職 > shuudanshuushoku\ ;
+水生植物 > suiseishokubutsu\ ;
+職務質問 > shokumushitsumon\ ;
+乾生植物 > kanseishokubutsu\ ;
+宿泊設備 > shukuhakusetsubi\ ;
+国立大学 > kokuritsudaigaku\ ;
+一言二言 > hitokotofutakoto\ ;
+正面衝突 > shoumenshoutotsu\ ;
+一日千秋 > ichinichisenshuu\ ;
+商業目的 > shougyoumokuteki\ ;
+複式学級 > fukushikigakkyuu\ ;
+卒業証書 > sotsugyoushousho\ ;
+焼肉定食 > yakinikuteishoku\ ;
+表面張力 > hyoumenchouryoku\ ;
+特別番組 > tokubetsubangumi\ ;
+学習能力 > gakushuunouryoku\ ;
+信用取引 > shin''youtorihiki\ ;
+高血圧症 > kouketsuatsushou\ ;
+中心人物 > chuushinjinbutsu\ ;
+食料品商 > shokuryouhinshou\ ;
+超現実的 > chougenjitsuteki\ ;
+即身成仏 > sokushinjoubutsu\ ;
+国外脱出 > kokugaidasshutsu\ ;
+直接回答 > chokusetsukaitou\ ;
+先物取引 > sakimonotorihiki\ ;
+歴史小説 > rekishishousetsu\ ;
+煮沸消毒 > shafutsushoudoku\ ;
+海外進出 > kaigaishinshutsu\ ;
+水力発電 > suiryokuhatsuden\ ;
+形質導入 > keishitsudounyuu\ ;
+直接関係 > chokusetsukankei\ ;
+直接簡明 > chokusetsukanmei\ ;
+振替休日 > furikaekyuujitsu\ ;
+千編一律 > senpen''ichiritsu\ ;
+郵便小包 > yuubinkodzutsumi\ ;
+単一神教 > tan''itsushinkyou\ ;
+虚弱体質 > kyojakutaishitsu\ ;
+脊索動物 > sekisakudoubutsu\ ;
+武力衝突 > buryokushoutotsu\ ;
+熱核反応 > netsukakuhan''nou\ ;
+種子植物 > shushishokubutsu\ ;
+直接行動 > chokusetsukoudou\ ;
+求職広告 > kyuushokukoukoku\ ;
+実証哲学 > jisshoutetsugaku\ ;
+花嫁花婿 > hanayomehanamuko\ ;
+大名行列 > daimyougyouretsu\ ;
+高山植物 > kouzanshokubutsu\ ;
+特別料金 > tokubetsuryoukin\ ;
+中間小説 > chuukanshousetsu\ ;
+生物濃縮 > seibutsunoushuku\ ;
+入力信号 > nyuuryokushingou\ ;
+彫刻室座 > choukokushitsuza\ ;
+確率標本 > kakuritsuhyouhon\ ;
+州立大学 > shuuritsudaigaku\ ;
+多肉植物 > tanikushokubutsu\ ;
+熱伝導率 > netsudendouritsu\ ;
+植物人間 > shokubutsuningen\ ;
+虚虚実実 > kyokyojitsujitsu\ ;
+物物交換 > butsubutsukoukan\ ;
+実力行使 > jitsuryokukoushi\ ;
+型式証明 > katashikishoumei\ ;
+連勝複式 > renshoufukushiki\ ;
+直接協議 > chokusetsukyougi\ ;
+罪障消滅 > zaishoushoumetsu\ ;
+晩生植物 > banseishokubutsu\ ;
+潜在失業 > senzaishitsugyou\ ;
+直接比較 > chokusetsuhikaku\ ;
+核抑止力 > kakuyokushiryoku\ ;
+万物流転 > banbutsuryuuten\ ;
+軟式庭球 > nanshikiteikyuu\ ;
+修道生活 > shuudouseikatsu\ ;
+秘密警察 > himitsukeisatsu\ ;
+法人株主 > houjinkabunushi\ ;
+間接照明 > kansetsushoumei\ ;
+紛骨砕身 > funkotsusaishin\ ;
+両棲動物 > ryouseidoubutsu\ ;
+集約農業 > shuuyakunougyou\ ;
+廃疾条件 > haishitsujouken\ ;
+能率賃金 > nouritsuchingin\ ;
+単刀直入 > tantouchokunyuu\ ;
+三文小説 > sanmonshousetsu\ ;
+筋肉注射 > kin''nikuchuusha\ ;
+四通八達 > shitsuuhattatsu\ ;
+割増運賃 > warimashiunchin\ ;
+南極観測 > nankyokukansoku\ ;
+一目瞭然 > ichimokuryouzen\ ;
+素人下宿 > shiroutogeshuku\ ;
+学校給食 > gakkoukyuushoku\ ;
+間接撮影 > kansetsusatsuei\ ;
+白川夜船 > shirakawayofune\ ;
+特筆大書 > tokuhitsutaisho\ ;
+食品工業 > shokuhinkougyou\ ;
+棘皮動物 > kyokuhidoubutsu\ ;
+怪力乱神 > kairyokuranshin\ ;
+人生哲学 > jinseitetsugaku\ ;
+新婚生活 > shinkonseikatsu\ ;
+公開入札 > koukainyuusatsu\ ;
+株式市場 > kabushikishijou\ ;
+学業成績 > gakugyouseiseki\ ;
+物質名詞 > busshitsumeishi\ ;
+短編小説 > tanpenshousetsu\ ;
+商業数学 > shougyousuugaku\ ;
+脱出速度 > dasshutsusokudo\ ;
+特別総会 > tokubetsusoukai\ ;
+第一楽章 > daiichigakushou\ ;
+索条鉄道 > sakujoutetsudou\ ;
+軍記物語 > gunkimonogatari\ ;
+厳正中立 > genseichuuritsu\ ;
+一日一夜 > ichinichiichiya\ ;
+陰陰滅滅 > in''inmetsumetsu\ ;
+就職浪人 > shuushokurounin\ ;
+純潔教育 > junketsukyouiku\ ;
+宗教改革 > shuukyoukaikaku\ ;
+支離滅裂 > shirimetsuretsu\ ;
+国民宿舎 > kokuminshukusha\ ;
+独立宣言 > dokuritsusengen\ ;
+副腎皮質 > fukujinhishitsu\ ;
+国民生活 > kokuminseikatsu\ ;
+積載能力 > sekisainouryoku\ ;
+収容能力 > shuuyounouryoku\ ;
+腰高障子 > koshidakashouji\ ;
+年頃日頃 > toshigorohigoro\ ;
+通俗文学 > tsuuzokubungaku\ ;
+優先株主 > yuusenkabunushi\ ;
+写真測量 > shashinsokuryou\ ;
+企業体質 > kigyoutaishitsu\ ;
+猪突猛進 > chototsumoushin\ ;
+学生割引 > gakuseiwaribiki\ ;
+価格圧力 > kakakuatsuryoku\ ;
+表現形式 > hyougenkeishiki\ ;
+出願書類 > shutsuganshorui\ ;
+宗教教育 > shuukyoukyouiku\ ;
+余裕綽綽 > yoyuushakushaku\ ;
+知的能力 > chitekinouryoku\ ;
+反骨精神 > hankotsuseishin\ ;
+正確爆撃 > seikakubakugeki\ ;
+日英通訳 > nichieitsuuyaku\ ;
+食物繊維 > shokumotsusen''i\ ;
+算術級数 > sanjutsukyuusuu\ ;
+入力装置 > nyuuryokusouchi\ ;
+職業訓練 > shokugyoukunren\ ;
+探偵小説 > tanteishousetsu\ ;
+生活反応 > seikatsuhan''nou\ ;
+松下電器 > matsushitadenki\ ;
+知識階級 > chishikikaikyuu\ ;
+株式会社 > kabushikigaisha\ ;
+一時預所 > ichijiazukarijo\ ;
+拡大解釈 > kakudaikaishaku\ ;
+品質保証 > hinshitsuhoshou\ ;
+信仰告白 > shinkoukokuhaku\ ;
+格物致知 > kakubutsuchichi\ ;
+米穀通帳 > beikokutsuuchou\ ;
+実用新案 > jitsuyoushin''an\ ;
+心身障害 > shinshinshougai\ ;
+速戦即決 > sokusensokketsu\ ;
+化学吸着 > kagakukyuuchaku\ ;
+四方山話 > yomoyamabanashi\ ;
+皇室典範 > koushitsutenpan\ ;
+特別国会 > tokubetsukokkai\ ;
+一坪本社 > hitotsubohonsha\ ;
+早口言葉 > hayakuchikotoba\ ;
+深山幽谷 > shinzan''yuukoku\ ;
+通商産業 > tsuushousangyou\ ;
+建築面積 > kenchikumenseki\ ;
+盤根錯節 > bankonsakusetsu\ ;
+内的生活 > naitekiseikatsu\ ;
+秘密漏洩 > himitsurousetsu\ ;
+玉石混淆 > gyokusekikonkou\ ;
+雛鑑別者 > hinakanbetsusha\ ;
+終身年金 > shuushin''nenkin\ ;
+粉骨砕身 > funkotsusaishin\ ;
+人物寸描 > jinbutsusunbyou\ ;
+商品目録 > shouhinmokuroku\ ;
+外食産業 > gaishokusangyou\ ;
+資源節約 > shigensetsuyaku\ ;
+静脈注射 > joumyakuchuusha\ ;
+冒険小説 > boukenshousetsu\ ;
+熱硬化物 > netsukoukabutsu\ ;
+国有鉄道 > kokuyuutetsudou\ ;
+確率変数 > kakuritsuhensuu\ ;
+開発計画 > kaihatsukeikaku\ ;
+有害物質 > yuugaibusshitsu\ ;
+情状酌量 > joujoushakuryou\ ;
+侵略戦争 > shinryakusensou\ ;
+冒頭陳述 > boutouchinjutsu\ ;
+焼身自殺 > shoushinjisatsu\ ;
+大安吉日 > taiankichinichi\ ;
+矯正視力 > kyouseishiryoku\ ;
+研究開発 > kenkyuukaihatsu\ ;
+談合入札 > dangounyuusatsu\ ;
+陸生動物 > rikuseidoubutsu\ ;
+南太平洋 > minamitaiheiyou\ ;
+学生生活 > gakuseiseikatsu\ ;
+119番 > hyakujuukyuuban\ ;
+結合組織 > ketsugousoshiki\ ;
+彫心鏤骨 > choushinrukotsu\ ;
+縁日商人 > en''nichishounin\ ;
+心神耗弱 > shinshinmoujaku\ ;
+短期貸付 > tankikashitsuke\ ;
+玉石混交 > gyokusekikonkou\ ;
+左中括弧 > hidarichuukakko\ ;
+黒色人種 > kokushokujinshu\ ;
+公式発表 > koushikihappyou\ ;
+軟骨組織 > nankotsusoshiki\ ;
+星間物質 > seikanbusshitsu\ ;
+生涯学習 > shougaigakushuu\ ;
+知識表現 > chishikihyougen\ ;
+源氏物語 > genjimonogatari\ ;
+七転八倒 > shichitenbattou\ ;
+白色人種 > hakushokujinshu\ ;
+平家物語 > heikemonogatari\ ;
+余裕綽々 > yoyuushakushaku\ ;
+拒絶反応 > kyozetsuhan''nou\ ;
+特別待遇 > tokubetsutaiguu\ ;
+青天白日 > seitenhakujitsu\ ;
+天罰覿面 > tenbatsutekimen\ ;
+血族結婚 > ketsuzokukekkon\ ;
+発色現像 > hasshokugenshou\ ;
+入札価格 > nyuusatsukakaku\ ;
+連立内閣 > renritsunaikaku\ ;
+腹式呼吸 > fukushikikokyuu\ ;
+低開発国 > teikaihatsukoku\ ;
+軽妙洒脱 > keimyoushadatsu\ ;
+鋼索鉄道 > kousakutetsudou\ ;
+現有勢力 > gen''yuuseiryoku\ ;
+遊休施設 > yuukyuushisetsu\ ;
+跳躍振動 > chouyakushindou\ ;
+超然内閣 > chouzen''naikaku\ ;
+実業学校 > jitsugyougakkou\ ;
+私立大学 > shiritsudaigaku\ ;
+最低血圧 > saiteiketsuatsu\ ;
+尊属殺人 > sonzokusatsujin\ ;
+中立地帯 > chuuritsuchitai\ ;
+両極地方 > ryoukyokuchihou\ ;
+連続殺人 > renzokusatsujin\ ;
+垂直分業 > suichokubungyou\ ;
+洗濯石鹸 > sentakusetsuken\ ;
+闘病生活 > toubyouseikatsu\ ;
+同文通達 > doubuntsuutatsu\ ;
+円転滑脱 > entenkatsudatsu\ ;
+生物工学 > seibutsukougaku\ ;
+一律減反 > ichiritsugentan\ ;
+人員縮少 > jin''inshukushou\ ;
+独立変数 > dokuritsuhensuu\ ;
+人定質問 > jinteishitsumon\ ;
+新約聖書 > shin''yakuseisho\ ;
+生殺与奪 > seisatsuyodatsu\ ;
+殿様仕事 > tonosamashigoto\ ;
+台所用品 > daidokoroyouhin\ ;
+貴金属卸 > kikinzokuoroshi\ ;
+上方贅六 > kamigatazeiroku\ ;
+血族関係 > ketsuzokukankei\ ;
+子宮後屈 > shikyuukoukutsu\ ;
+南征北伐 > nanseihokubatsu\ ;
+真実一路 > shinjitsuichiro\ ;
+特別運賃 > tokubetsuunchin\ ;
+通常戦力 > tsuujousenryoku\ ;
+利害得失 > rigaitokushitsu\ ;
+浅酌低唱 > senshakuteishou\ ;
+裸子植物 > rashishokubutsu\ ;
+借用証書 > shakuyoushousho\ ;
+共有結合 > kyouyuuketsugou\ ;
+回折領域 > kaisetsuryouiki\ ;
+職業意識 > shokugyouishiki\ ;
+単式学級 > tanshikigakkyuu\ ;
+学術雑誌 > gakujutsuzasshi\ ;
+卒業試験 > sotsugyoushiken\ ;
+優性形質 > yuuseikeishitsu\ ;
+成長曲線 > seichoukyokusen\ ;
+百八十度 > hyakuhachijuudo\ ;
+大和撫子 > yamatonadeshiko\ ;
+好色文学 > koushokubungaku\ ;
+霊魂消滅 > reikonshoumetsu\ ;
+特別配当 > tokubetsuhaitou\ ;
+風力階級 > fuuryokukaikyuu\ ;
+流体力学 > ryuutairikigaku\ ;
+劣弱意識 > retsujakuishiki\ ;
+二股膏薬 > futamatakouyaku\ ;
+物質代謝 > busshitsutaisha\ ;
+管轄官庁 > kankatsukanchou\ ;
+修正申告 > shuuseishinkoku\ ;
+心理小説 > shinrishousetsu\ ;
+着陸地点 > chakurikuchiten\ ;
+実験小説 > jikkenshousetsu\ ;
+原子爆発 > genshibakuhatsu\ ;
+入力情報 > nyuuryokujouhou\ ;
+量子力学 > ryoushirikigaku\ ;
+奪三振王 > datsusanshin''ou\ ;
+年末調整 > nenmatsuchousei\ ;
+学術論文 > gakujutsuronbun\ ;
+生物学者 > seibutsugakusha\ ;
+六百六号 > roppyakurokugou\ ;
+思弁哲学 > shibentetsugaku\ ;
+抗生物質 > kouseibusshitsu\ ;
+活動写真 > katsudoushashin\ ;
+両生動物 > ryouseidoubutsu\ ;
+精神薄弱 > seishinhakujaku\ ;
+強迫観念 > kyouhakukan''nen\ ;
+軍縮協定 > gunshukukyoutei\ ;
+着陸地帯 > chakurikuchitai\ ;
+炭塵爆発 > tanjinbakuhatsu\ ;
+生活環境 > seikatsukankyou\ ;
+技術革新 > gijutsukakushin\ ;
+粟粒結核 > zokuryuukekkaku\ ;
+仮受取証 > kariuketorishou\ ;
+新聞配達 > shinbunhaitatsu\ ;
+卒業論文 > sotsugyouronbun\ ;
+登録商標 > tourokushouhyou\ ;
+信用銘柄 > shin''youmeigara\ ;
+操浄瑠璃 > ayatsurijoururi\ ;
+共同生活 > kyoudouseikatsu\ ;
+伝達特性 > dentatsutokusei\ ;
+信仰生活 > shinkouseikatsu\ ;
+郷土小説 > kyoudoshousetsu\ ;
+集団生活 > shuudanseikatsu\ ;
+駐日大使 > chuunichitaishi\ ;
+島国根性 > shimagunikonjou\ ;
+左小括弧 > hidarishoukakko\ ;
+民族宗教 > minzokushuukyou\ ;
+日中韓越 > nitchuukan''etsu\ ;
+黒色火薬 > kokushokukayaku\ ;
+万有神教 > ban''yuushinkyou\ ;
+頭脳流出 > zunouryuushutsu\ ;
+直接話法 > chokusetsuwahou\ ;
+形質転換 > keishitsutenkan\ ;
+正真正銘 > shoushinshoumei\ ;
+爆弾発言 > bakudanhatsugen\ ;
+直立不動 > chokuritsufudou\ ;
+商業道徳 > shougyoudoutoku\ ;
+特設会場 > tokusetsukaijou\ ;
+核物理学 > kakubutsurigaku\ ;
+直立猿人 > chokuritsuenjin\ ;
+超連結子 > chourenketsushi\ ;
+甲論乙駁 > kouron''otsubaku\ ;
+物的資源 > butsutekishigen\ ;
+直接支援 > chokusetsushien\ ;
+新制中学 > shinseichuugaku\ ;
+圧力団体 > atsuryokudantai\ ;
+温血動物 > onketsudoubutsu\ ;
+中立労連 > chuuritsurouren\ ;
+研究活動 > kenkyuukatsudou\ ;
+自然哲学 > shizentetsugaku\ ;
+株主総会 > kabunushisoukai\ ;
+性格判別 > seikakuhanbetsu\ ;
+過失傷害 > kashitsushougai\ ;
+通信工学 > tsuushinkougaku\ ;
+同一人物 > douitsujinbutsu\ ;
+商学博士 > shougakuhakushi\ ;
+心頭滅却 > shintoumekkyaku\ ;
+七顛八倒 > shichitenbattou\ ;
+強行採決 > kyoukousaiketsu\ ;
+就任演説 > shuunin''enzetsu\ ;
+名論卓説 > meirontakusetsu\ ;
+注入教育 > chuunyuukyouiku\ ;
+向精神薬 > kouseishin''yaku\ ;
+分列行進 > bunretsukoushin\ ;
+食料品店 > shokuryouhinten\ ;
+潮汐摩擦 > chousekimasatsu\ ;
+節足動物 > sessokudoubutsu\ ;
+食物連鎖 > shokumotsurensa\ ;
+中肉中背 > chuunikuchuuzei\ ;
+集中攻撃 > shuuchuukougeki\ ;
+確定判決 > kakuteihanketsu\ ;
+少女小説 > shoujoshousetsu\ ;
+博学力行 > hakugakuryokkou\ ;
+傍系血族 > boukeiketsuzoku\ ;
+中間内閣 > chuukan''naikaku\ ;
+単独供給 > tandokukyoukyuu\ ;
+失業保険 > shitsugyouhoken\ ;
+特別会計 > tokubetsukaikei\ ;
+振幅変調 > shinpukuhenchou\ ;
+広告収入 > koukokushuunyuu\ ;
+中国大陸 > chuugokutairiku\ ;
+放出物資 > houshutsubusshi\ ;
+配達証明 > haitatsushoumei\ ;
+最終目的 > saishuumokuteki\ ;
+一蓮托生 > ichirentakushou\ ;
+三角測量 > sankakusokuryou\ ;
+動物学者 > doubutsugakusha\ ;
+化学物質 > kagakubusshitsu\ ;
+熱原子核 > netsugenshikaku\ ;
+地質調査 > chishitsuchousa\ ;
+歯列矯正 > shiretsukyousei\ ;
+四十七士 > shijuushichishi\ ;
+十月革命 > juugatsukakumei\ ;
+文質彬彬 > bunshitsuhinpin\ ;
+信託契約 > shintakukeiyaku\ ;
+独立戦争 > dokuritsusensou\ ;
+火力発電 > karyokuhatsuden\ ;
+速達郵便 > sokutatsuyuubin\ ;
+四百四病 > shihyakushibyou\ ;
+元帳残高 > motochouzandaka\ ;
+抽象美術 > chuushoubijutsu\ ;
+物質文明 > busshitsubunmei\ ;
+超物理学 > choubutsurigaku\ ;
+食糧不足 > shokuryoubusoku\ ;
+公共施設 > koukyoushisetsu\ ;
+南極条約 > nankyokujouyaku\ ;
+兵力削減 > heiryokusakugen\ ;
+公職追放 > koushokutsuihou\ ;
+学術団体 > gakujutsudantai\ ;
+共生生物 > kyouseiseibutsu\ ;
+被子植物 > hishishokubutsu\ ;
+有畜農業 > yuuchikunougyou\ ;
+寄生植物 > kiseishokubutsu\ ;
+武侠小説 > bukyoushousetsu\ ;
+木質繊維 > mokushitsusen''i\ ;
+直通列車 > chokutsuuressha\ ;
+一一九番 > hyakujuukyuuban\ ;
+転置行列 > tenchigyouretsu\ ;
+出動命令 > shutsudoumeirei\ ;
+舌先三寸 > shitasakisanzun\ ;
+大衆食堂 > taishuushokudou\ ;
+内閣閣僚 > naikakukakuryou\ ;
+人口爆発 > jinkoubakuhatsu\ ;
+圧縮効率 > asshukukouritsu\ ;
+国立銀行 > kokuritsuginkou\ ;
+一病息災 > ichibyousokusai\ ;
+正金取引 > shoukintorihiki\ ;
+流通革命 > ryuutsuukakumei\ ;
+芸術作品 > geijutsusakuhin\ ;
+新興宗教 > shinkoushuukyou\ ;
+知識工学 > chishikikougaku\ ;
+体質改善 > taishitsukaizen\ ;
+片側通行 > katagawatsuukou\ ;
+南極大陸 > nankyokutairiku\ ;
+艶笑小話 > enshoukobanashi\ ;
+商業美術 > shougyoubijutsu\ ;
+神色自若 > shinshokujijaku\ ;
+水際作戦 > mizugiwasakusen\ ;
+物的証拠 > butsutekishouko\ ;
+操業短縮 > sougyoutanshuku\ ;
+内股膏薬 > uchimatagouyaku\ ;
+色彩感覚 > shikisaikankaku\ ;
+超能力者 > chounouryokusha\ ;
+木食上人 > mokujikishounin\ ;
+連載小説 > rensaishousetsu\ ;
+焦熱地獄 > shounetsujigoku\ ;
+骨粗鬆症 > kotsusoshoushou\ ;
+流通証券 > ryuutsuushouken\ ;
+差引勘定 > sashihikikanjou\ ;
+開腹手術 > kaifukushujutsu\ ;
+即日出荷 > sokujitsushukka\ ;
+株式配当 > kabushikihaitou\ ;
+蛍光物質 > keikoubusshitsu\ ;
+聴覚神経 > choukakushinkei\ ;
+懲戒免職 > choukaimenshoku\ ;
+確定申告 > kakuteishinkoku\ ;
+職業軍人 > shokugyougunjin\ ;
+白河夜船 > shirakawayofune\ ;
+株式公開 > kabushikikoukai\ ;
+廃仏毀釈 > haibutsukishaku\ ;
+眼底出血 > ganteishukketsu\ ;
+信任投票 > shin''nintouhyou\ ;
+関連質問 > kanrenshitsumon\ ;
+建築業者 > kenchikugyousha\ ;
+哲学史要 > tetsugakushiyou\ ;
+知識産業 > chishikisangyou\ ;
+浚渫作業 > shunsetsusagyou\ ;
+卸売市場 > oroshiurishijou\ ;
+通信教育 > tsuushinkyouiku\ ;
+北斗七星 > hokutoshichisei\ ;
+正式発表 > seishikihappyou\ ;
+暴力革命 > bouryokukakumei\ ;
+共産中国 > kyousanchuugoku\ ;
+森林鉄道 > shinrintetsudou\ ;
+経済協力 > keizaikyouryoku\ ;
+物的損害 > butsutekisongai\ ;
+空中爆撃 > kuuchuubakugeki\ ;
+年中失言 > nenjuushitsugen\ ;
+正方行列 > seihougyouretsu\ ;
+老若男女 > rounyakunan''nyo\ ;
+修了証書 > shuuryoushousho\ ;
+下等植物 > katoushokubutsu\ ;
+顕花植物 > kenkashokubutsu\ ;
+地元警察 > jimotokeisatsu\ ;
+中国地方 > chuugokuchihou\ ;
+三校終了 > sankoushuuryou\ ;
+人工血液 > jinkouketsueki\ ;
+有性生殖 > yuuseiseishoku\ ;
+錬金術師 > renkinjutsushi\ ;
+対日感情 > tainichikanjou\ ;
+猥褻文書 > waisetsubunsho\ ;
+仮装行列 > kasougyouretsu\ ;
+正弦曲線 > seigenkyokusen\ ;
+没個性的 > botsukoseiteki\ ;
+独立運動 > dokuritsuundou\ ;
+脱脂粉乳 > dasshifun''nyuu\ ;
+原子力船 > genshiryokusen\ ;
+三球三振 > sankyuusanshin\ ;
+面白半分 > omoshirohanbun\ ;
+商船大学 > shousendaigaku\ ;
+天地万物 > tenchibanbutsu\ ;
+耐熱合金 > tainetsugoukin\ ;
+政略結婚 > seiryakukekkon\ ;
+特高警察 > tokkoukeisatsu\ ;
+商慣習法 > shoukanshuuhou\ ;
+昆虫採集 > konchuusaishuu\ ;
+中国拳法 > chuugokukenpou\ ;
+美術監督 > bijutsukantoku\ ;
+副大統領 > fukudaitouryou\ ;
+焦性硫酸 > shouseiryuusan\ ;
+周旋業者 > shuusengyousha\ ;
+南回帰線 > minamikaikisen\ ;
+胎生動物 > taiseidoubutsu\ ;
+全国中継 > zenkokuchuukei\ ;
+牛歩戦術 > gyuuhosenjutsu\ ;
+突撃隊員 > totsugekitaiin\ ;
+約百万円 > yakuhyakumanen\ ;
+人海戦術 > jinkaisenjutsu\ ;
+天文学的 > tenmongakuteki\ ;
+思案投首 > shian''nagekubi\ ;
+裏口営業 > uraguchieigyou\ ;
+伝奇小説 > denkishousetsu\ ;
+中立主義 > chuuritsushugi\ ;
+研究資料 > kenkyuushiryou\ ;
+古生物学 > koseibutsugaku\ ;
+更生施設 > kouseishisetsu\ ;
+片道切符 > katamichikippu\ ;
+接続助詞 > setsuzokujoshi\ ;
+英仏海峡 > eifutsukaikyou\ ;
+稔実不良 > nenjitsufuryou\ ;
+公衆浴場 > koushuuyokujou\ ;
+端末装置 > tanmatsusouchi\ ;
+駐車料金 > chuusharyoukin\ ;
+資本取引 > shihontorihiki\ ;
+株式相場 > kabushikisouba\ ;
+免疫反応 > men''ekihan''nou\ ;
+建設会社 > kensetsugaisha\ ;
+本末顛倒 > honmatsutentou\ ;
+初志貫徹 > shoshikantetsu\ ;
+産業革命 > sangyoukakumei\ ;
+定年退職 > teinentaishoku\ ;
+国際親善 > kokusaishinzen\ ;
+性格診断 > seikakushindan\ ;
+全身衰弱 > zenshinsuijaku\ ;
+問題解決 > mondaikaiketsu\ ;
+哺乳動物 > honyuudoubutsu\ ;
+資本注入 > shihonchuunyuu\ ;
+修業年限 > shuugyounengen\ ;
+緑綬褒章 > ryokujuhoushou\ ;
+研究題目 > kenkyuudaimoku\ ;
+病床日誌 > byoushounisshi\ ;
+算術計算 > sanjutsukeisan\ ;
+帰化植物 > kikashokubutsu\ ;
+金融恐慌 > kin''yuukyoukou\ ;
+特別措置 > tokubetsusochi\ ;
+弛張振動 > shichoushindou\ ;
+戦戦兢兢 > sensenkyoukyou\ ;
+観光施設 > kankoushisetsu\ ;
+善男善女 > zen''nanzen''nyo\ ;
+信用販売 > shin''youhanbai\ ;
+末梢神経 > masshoushinkei\ ;
+骨髄移植 > kotsuzuiishoku\ ;
+道徳教育 > doutokukyouiku\ ;
+金殿玉楼 > kindengyokurou\ ;
+点滴注射 > tentekichuusha\ ;
+工学修士 > kougakushuushi\ ;
+門外不出 > mongaifushutsu\ ;
+通信装置 > tsuushinsouchi\ ;
+作戦計画 > sakusenkeikaku\ ;
+場外取引 > jougaitorihiki\ ;
+信託銀行 > shintakuginkou\ ;
+境界調整 > kyoukaichousei\ ;
+主力艦隊 > shuryokukantai\ ;
+職場環境 > shokubakankyou\ ;
+割引価格 > waribikikakaku\ ;
+整形手術 > seikeishujutsu\ ;
+酸性食品 > sanseishokuhin\ ;
+原子力学 > genshirikigaku\ ;
+水中翼船 > suichuuyokusen\ ;
+発達段階 > hattatsudankai\ ;
+諸説紛紛 > shosetsufunpun\ ;
+乳酸飲料 > nyuusan''inryou\ ;
+個々別別 > kokobetsubetsu\ ;
+口不調法 > kuchibuchouhou\ ;
+超自然的 > choushizenteki\ ;
+国防長官 > kokubouchoukan\ ;
+正統信教 > seitoushinkyou\ ;
+強化合宿 > kyoukagasshuku\ ;
+朝鮮人参 > chousen''ninjin\ ;
+束縛変項 > sokubakuhenkou\ ;
+神経組織 > shinkeisoshiki\ ;
+超越関数 > chouetsukansuu\ ;
+効率向上 > kouritsukoujou\ ;
+大脳皮質 > dainouhishitsu\ ;
+生体力学 > seitairikigaku\ ;
+山下公園 > yamashitakouen\ ;
+口述試験 > koujutsushiken\ ;
+一日片時 > ichinichihenji\ ;
+社会生活 > shakaiseikatsu\ ;
+出版目録 > shupanmokuroku\ ;
+別途支出 > bettoshishutsu\ ;
+申告納税 > shinkokunouzei\ ;
+即決裁判 > sokketsusaiban\ ;
+独立自尊 > dokuritsujison\ ;
+婚約指輪 > kon''yakuyubiwa\ ;
+血液凝固 > ketsuekigyouko\ ;
+出処進退 > shusshoshintai\ ;
+弓矢八幡 > yumiyahachiman\ ;
+警察手帳 > keisatsutechou\ ;
+職業婦人 > shokugyoufujin\ ;
+至福千年 > shifukusen''nen\ ;
+天地開闢 > tenchikaibyaku\ ;
+冷凍食品 > reitoushokuhin\ ;
+補足説明 > hosokusetsumei\ ;
+信用状態 > shin''youjoutai\ ;
+絶対湿度 > zettaishitsudo\ ;
+明明白白 > meimeihakuhaku\ ;
+軍備縮小 > gunbishukushou\ ;
+暴力団員 > bouryokudan''in\ ;
+大学教育 > daigakukyouiku\ ;
+第三人称 > daisan''ninshou\ ;
+永世中立 > eiseichuuritsu\ ;
+研究領域 > kenkyuuryouiki\ ;
+教育勅語 > kyouikuchokugo\ ;
+精神障害 > seishinshougai\ ;
+天空海濶 > tenkuukaikatsu\ ;
+食餌療法 > shokujiryouhou\ ;
+作者不知 > sakushashirazu\ ;
+生活水準 > seikatsusuijun\ ;
+卵生動物 > ranseidoubutsu\ ;
+筋肉労働 > kin''nikuroudou\ ;
+南支那海 > minamishinakai\ ;
+学術用語 > gakujutsuyougo\ ;
+自然食品 > shizenshokuhin\ ;
+商業組合 > shougyoukumiai\ ;
+職権乱用 > shokkenran''you\ ;
+伴食大臣 > banshokudaijin\ ;
+岡目八目 > okamehachimoku\ ;
+斬新奇抜 > zanshinkibatsu\ ;
+直情径行 > chokujoukeikou\ ;
+私立学校 > shiritsugakkou\ ;
+中日辞典 > chuunichijiten\ ;
+分類目録 > bunruimokuroku\ ;
+内分泌腺 > naibunpitsusen\ ;
+活路開拓 > katsurokaitaku\ ;
+平板測量 > heibansokuryou\ ;
+源泉徴収 > gensenchoushuu\ ;
+通信衛星 > tsuushin''eisei\ ;
+清算取引 > seisantorihiki\ ;
+特殊学級 > tokushugakkyuu\ ;
+信用調査 > shin''youchousa\ ;
+先物売買 > sakimonobaibai\ ;
+七難八苦 > shichinanhakku\ ;
+角膜移植 > kakumakuishoku\ ;
+救急病院 > kyuukyuubyouin\ ;
+接触感染 > sesshokukansen\ ;
+税金申告 > zeikinshinkoku\ ;
+絨毯爆撃 > juutanbakugeki\ ;
+七転八起 > shichitenhakki\ ;
+水銀中毒 > suiginchuudoku\ ;
+露出不足 > roshutsubusoku\ ;
+平上去入 > hyoujoukyonyuu\ ;
+国立公園 > kokuritsukouen\ ;
+公立学校 > kouritsugakkou\ ;
+通信圏外 > tsuushinkengai\ ;
+約束手形 > yakusokutegata\ ;
+召集令状 > shoushuureijou\ ;
+新入社員 > shin''nyuushain\ ;
+日南海岸 > nichinankaigan\ ;
+汎整数式 > hanseisuushiki\ ;
+古物商人 > kobutsushounin\ ;
+武力干渉 > buryokukanshou\ ;
+公衆道徳 > koushuudoutoku\ ;
+怪奇小説 > kaikishousetsu\ ;
+秘密投票 > himitsutouhyou\ ;
+圧力容器 > atsuryokuyouki\ ;
+傍目八目 > okamehachimoku\ ;
+求婚広告 > kyuukonkoukoku\ ;
+心因反応 > shin''inhan''nou\ ;
+麦藁帽子 > mugiwaraboushi\ ;
+納税申告 > nouzeishinkoku\ ;
+反対称的 > hantaishouteki\ ;
+住友銀行 > sumitomoginkou\ ;
+出所進退 > shusshoshintai\ ;
+就業人口 > shuugyoujinkou\ ;
+全勝優勝 > zenshouyuushou\ ;
+建設大臣 > kensetsudaijin\ ;
+非良心的 > hiryoushinteki\ ;
+絶対必要 > zettaihitsuyou\ ;
+蛸足配線 > takoashihaisen\ ;
+工業大学 > kougyoudaigaku\ ;
+金壱万円 > kin''ichiman''en\ ;
+旅客列車 > ryokyakuressha\ ;
+立会演説 > tachiaienzetsu\ ;
+奨学資金 > shougakushikin\ ;
+現金収入 > genkinshuunyuu\ ;
+学術会議 > gakujutsukaigi\ ;
+法律問題 > houritsumondai\ ;
+直通電話 > chokutsuudenwa\ ;
+台所道具 > daidokorodougu\ ;
+電源供給 > dengenkyoukyuu\ ;
+停年退職 > teinentaishoku\ ;
+水陸両用 > suirikuryouyou\ ;
+通信手段 > tsuushinshudan\ ;
+下請会社 > shitaukegaisha\ ;
+第一人称 > daiichininshou\ ;
+学歴社会 > gakurekishakai\ ;
+演奏曲目 > ensoukyokumoku\ ;
+思想警察 > shisoukeisatsu\ ;
+公益質屋 > kouekishichiya\ ;
+偕老同穴 > kairoudouketsu\ ;
+健康食品 > kenkoushokuhin\ ;
+抽象名詞 > chuushoumeishi\ ;
+小乗仏教 > shoujoubukkyou\ ;
+合目的性 > goumokutekisei\ ;
+電力会社 > denryokugaisha\ ;
+海洋開発 > kaiyoukaihatsu\ ;
+細胞分裂 > saiboubunretsu\ ;
+急行料金 > kyuukouryoukin\ ;
+丁丁発止 > chouchouhasshi\ ;
+教職課程 > kyoushokukatei\ ;
+出版業者 > shuppangyousha\ ;
+就職運動 > shuushokuundou\ ;
+略奪行為 > ryakudatsukoui\ ;
+理非曲直 > rihikyokuchoku\ ;
+別冊付録 > bessatsufuroku\ ;
+三権分立 > sankenbunritsu\ ;
+共同研究 > kyoudoukenkyuu\ ;
+新刊紹介 > shinkanshoukai\ ;
+棟割長屋 > munewarinagaya\ ;
+修好条約 > shuukoujouyaku\ ;
+冠状動脈 > kanjoudoumyaku\ ;
+空空漠漠 > kuukuubakubaku\ ;
+悪性貧血 > akuseihinketsu\ ;
+休戦協定 > kyuusenkyoutei\ ;
+神経衰弱 > shinkeisuijaku\ ;
+回折格子 > kaisetsukoushi\ ;
+先決問題 > senketsumondai\ ;
+就業日数 > shuugyounissuu\ ;
+実験動物 > jikkendoubutsu\ ;
+忠君愛国 > chuukun''aikoku\ ;
+求人広告 > kyuujinkoukoku\ ;
+独立独歩 > dokuritsudoppo\ ;
+諸説紛々 > shosetsufunpun\ ;
+有害食品 > yuugaishokuhin\ ;
+麻薬中毒 > mayakuchuudoku\ ;
+金属工業 > kinzokukougyou\ ;
+卸売物価 > oroshiuribukka\ ;
+共同出資 > kyoudoushusshi\ ;
+狭軌鉄道 > kyoukitetsudou\ ;
+商業手形 > shougyoutegata\ ;
+郵便配達 > yuubinhaitatsu\ ;
+港湾当局 > kouwantoukyoku\ ;
+商業銀行 > shougyouginkou\ ;
+省略記号 > shouryakukigou\ ;
+中間報告 > chuukanhoukoku\ ;
+中心思想 > chuushinshisou\ ;
+五月人形 > gogatsuningyou\ ;
+伝承文学 > denshoubungaku\ ;
+軟体動物 > nantaidoubutsu\ ;
+強制収容 > kyouseishuuyou\ ;
+一陽来腹 > ichiyouraifuku\ ;
+漁業協定 > gyogyoukyoutei\ ;
+水生動物 > suiseidoubutsu\ ;
+楔形文字 > kusabigatamoji\ ;
+信用組合 > shin''youkumiai\ ;
+研究報告 > kenkyuuhoukoku\ ;
+水天彷彿 > suitenhoufutsu\ ;
+住宅産業 > juutakusangyou\ ;
+泡沫会社 > houmatsugaisha\ ;
+談論風発 > danronfuuhatsu\ ;
+先発投手 > senpatsutoushu\ ;
+推理小説 > suirishousetsu\ ;
+紳士協定 > shinshikyoutei\ ;
+大名屋敷 > daimyouyashiki\ ;
+特異体質 > tokuitaishitsu\ ;
+中間搾取 > chuukansakushu\ ;
+協調作業 > kyouchousagyou\ ;
+指圧療法 > shiatsuryouhou\ ;
+工業技術 > kougyougijutsu\ ;
+総合芸術 > sougougeijutsu\ ;
+中産階級 > chuusankaikyuu\ ;
+南十字星 > minamijuujisei\ ;
+心霊手術 > shinreitejutsu\ ;
+成長産業 > seichousangyou\ ;
+国際収支 > kokusaishuushi\ ;
+厚生施設 > kouseishisetsu\ ;
+上陸作戦 > jourikusakusen\ ;
+動力資源 > douryokushigen\ ;
+必要条件 > hitsuyoujouken\ ;
+中流意識 > chuuryuuishiki\ ;
+出漁区域 > shutsugyokuiki\ ;
+財形貯蓄 > zaikeichochiku\ ;
+職人気質 > shokuninkatagi\ ;
+単位行列 > tan''igyouretsu\ ;
+国連憲章 > kokurenkenshou\ ;
+水先案内 > mizusakian''nai\ ;
+収容設備 > shuuyousetsubi\ ;
+深海漁業 > shinkaigyogyou\ ;
+直往邁進 > chokuoumaishin\ ;
+天体力学 > tentairikigaku\ ;
+真空電球 > shinkuudenkyuu\ ;
+上層建築 > jousoukenchiku\ ;
+役職手当 > yakushokuteate\ ;
+高圧電流 > kouatsudenryuu\ ;
+交通道徳 > koutsuudoutoku\ ;
+水準測量 > suijunsokuryou\ ;
+弁証法的 > benshouhouteki\ ;
+松茸御飯 > matsutakegohan\ ;
+関税障壁 > kanzeishouheki\ ;
+統括部長 > toukatsubuchou\ ;
+損失補填 > sonshitsuhoten\ ;
+事事物物 > jijibutsubutsu\ ;
+戦々恐々 > sensenkyoukyou\ ;
+連続写真 > renzokushashin\ ;
+四百余州 > shihyakuyoshuu\ ;
+一陽来復 > ichiyouraifuku\ ;
+心筋梗塞 > shinkinkousoku\ ;
+宗教裁判 > shuukyousaiban\ ;
+写真石版 > shashinsekiban\ ;
+隠花植物 > inkashokubutsu\ ;
+微生物学 > biseibutsugaku\ ;
+戦略空軍 > senryakukuugun\ ;
+恭賀新年 > kyougashin''nen\ ;
+国際協定 > kokusaikyoutei\ ;
+色即是空 > shikisokuzekuu\ ;
+頭寒足熱 > zukansokunetsu\ ;
+区検察庁 > kukensatsuchou\ ;
+核防衛力 > kakuboueiryoku\ ;
+完全燃焼 > kanzen''nenshou\ ;
+重量感覚 > juuryoukankaku\ ;
+雌雄鑑別 > shiyuukanbetsu\ ;
+原生動物 > genseidoubutsu\ ;
+目的意識 > mokutekiishiki\ ;
+海生動物 > kaiseidoubutsu\ ;
+攻撃精神 > kougekiseishin\ ;
+作成技術 > sakuseigijutsu\ ;
+金銭信託 > kinsenshintaku\ ;
+吸収合併 > kyuushuugappei\ ;
+換骨奪胎 > kankotsudattai\ ;
+硬質陶器 > koushitsutouki\ ;
+寝台料金 > shindairyoukin\ ;
+購入注文 > kounyuuchuumon\ ;
+焦土戦術 > shoudosenjutsu\ ;
+有職故実 > yuusokukojitsu\ ;
+無償信託 > mushoushintaku\ ;
+消費生活 > shouhiseikatsu\ ;
+室内遊戯 > shitsunaiyuugi\ ;
+宗教団体 > shuukyoudantai\ ;
+進行状況 > shinkoujoukyou\ ;
+高等動物 > koutoudoubutsu\ ;
+一膳飯屋 > ichizenmeshiya\ ;
+時代小説 > jidaishousetsu\ ;
+曲線座標 > kyokusenzahyou\ ;
+当該人物 > tougaijinbutsu\ ;
+要求送信 > youkyuusoushin\ ;
+百人一首 > hyakunin''isshu\ ;
+集団検診 > shuudankenshin\ ;
+安寧秩序 > an''neichitsujo\ ;
+極楽鳥花 > gokurakuchouka\ ;
+中越紛争 > chuuetsufunsou\ ;
+一括購入 > ikkatsukounyuu\ ;
+民族自決 > minzokujiketsu\ ;
+正面攻撃 > shoumenkougeki\ ;
+教育産業 > kyouikusangyou\ ;
+空調設備 > kuuchousetsubi\ ;
+単独内閣 > tandokunaikaku\ ;
+教育実習 > kyouikujisshuu\ ;
+就業規則 > shuugyoukisoku\ ;
+教養番組 > kyouyoubangumi\ ;
+凍結資産 > touketsushisan\ ;
+集団農場 > shuudan''noujou\ ;
+周辺諸国 > shuuhenshokoku\ ;
+国籍条項 > kokusekijoukou\ ;
+現物給与 > genbutsukyuuyo\ ;
+豪雪地帯 > gousetsuchitai\ ;
+海千山千 > umisen''yamasen\ ;
+革新政党 > kakushinseitou\ ;
+少数民族 > shousuuminzoku\ ;
+労働協約 > roudoukyouyaku\ ;
+電撃作戦 > dengekisakusen\ ;
+七顛八起 > shichitenhakki\ ;
+脊髄神経 > sekizuishinkei\ ;
+美術大学 > bijutsudaigaku\ ;
+選択項目 > sentakukoumoku\ ;
+間接選挙 > kansetsusenkyo\ ;
+貝殻追放 > kaigaratsuihou\ ;
+群発地震 > gunpatsujishin\ ;
+緊褌一番 > kinkon''ichiban\ ;
+独身貴族 > dokushinkizoku\ ;
+科学知識 > kagakuchishiki\ ;
+石部金吉 > ishibekinkichi\ ;
+花鳥風月 > kachoufuugetsu\ ;
+提出期限 > teishutsukigen\ ;
+天長地久 > tenchouchikyuu\ ;
+百万長者 > hyakumanchouja\ ;
+対症療法 > taishouryouhou\ ;
+中枢神経 > chuusuushinkei\ ;
+商工業者 > shoukougyousha\ ;
+開票速報 > kaihyousokuhou\ ;
+性的衝動 > seitekishoudou\ ;
+特殊撮影 > tokushusatsuei\ ;
+輸出手形 > yushutsutegata\ ;
+史料館学 > shiryoukangaku\ ;
+空中楼閣 > kuuchuuroukaku\ ;
+少年文学 > shounenbungaku\ ;
+調整攻撃 > chouseikougeki\ ;
+精神年齢 > seishin''nenrei\ ;
+居中調停 > kyochuuchoutei\ ;
+税別価格 > zeibetsukakaku\ ;
+軍人生活 > gunjinseikatsu\ ;
+皇宮警察 > kouguukeisatsu\ ;
+粒々辛苦 > ryuuryuushinku\ ;
+東京大学 > toukyoudaigaku\ ;
+興味津津 > kyoumishinshin\ ;
+千客万来 > senkyakubanrai\ ;
+選抜試験 > senbatsushiken\ ;
+航路標識 > kourohyoushiki\ ;
+緊急発進 > kinkyuuhasshin\ ;
+空中写真 > kuuchuushashin\ ;
+営業活動 > eigyoukatsudou\ ;
+救援活動 > kyuuenkatsudou\ ;
+天然硝子 > ten''nenshoushi\ ;
+信託資金 > shintakushikin\ ;
+市民生活 > shiminseikatsu\ ;
+絶対権力 > zettaikenryoku\ ;
+周章狼狽 > shuushouroubai\ ;
+民族学者 > minzokugakusha\ ;
+膠着状態 > kouchakujoutai\ ;
+面接試験 > mensetsushiken\ ;
+政策協定 > seisakukyoutei\ ;
+販売戦略 > hanbaisenryaku\ ;
+公設市場 > kousetsuichiba\ ;
+人物経済 > jinbutsukeizai\ ;
+心的状態 > shintekijoutai\ ;
+丘陵地帯 > kyuuryouchitai\ ;
+生涯教育 > shougaikyouiku\ ;
+旧約全書 > kyuuyakuzensho\ ;
+大根役者 > daikon''yakusha\ ;
+万年新造 > man''nenshinzou\ ;
+座骨神経 > zakotsushinkei\ ;
+長老教会 > chouroukyoukai\ ;
+貯蓄債券 > chochikusaiken\ ;
+武力介入 > buryokukainyuu\ ;
+精密科学 > seimitsukagaku\ ;
+私鉄総連 > shitetsusouren\ ;
+伝送終了 > densoushuuryou\ ;
+薫蒸消毒 > kunjoushoudoku\ ;
+麦稈帽子 > mugiwaraboushi\ ;
+法律相談 > houritsusoudan\ ;
+地域開発 > chiikikaihatsu\ ;
+国内産業 > kokunaisangyou\ ;
+一打逆転 > ichidagyakuten\ ;
+水生生物 > suiseiseibutsu\ ;
+有線通信 > yuusentsuushin\ ;
+起承転結 > kishoutenketsu\ ;
+物質主義 > busshitsushugi\ ;
+信託会社 > shintakugaisha\ ;
+中間商人 > chuukanshounin\ ;
+静電容量 > seiden''youryou\ ;
+中流社会 > chuuryuushakai\ ;
+私立探偵 > shiritsutantei\ ;
+国民投票 > kokumintouhyou\ ;
+有罪判決 > yuuzaihanketsu\ ;
+強化食品 > kyoukashokuhin\ ;
+伸縮自在 > shinshukujizai\ ;
+陸軍大学 > rikugundaigaku\ ;
+通信速度 > tsuushinsokudo\ ;
+黒金剛石 > kurokongouseki\ ;
+中国人街 > chuugokujingai\ ;
+学芸大学 > gakugeidaigaku\ ;
+大河小説 > taigashousetsu\ ;
+鉄道会社 > tetsudougaisha\ ;
+音楽形式 > ongakukeishiki\ ;
+性格分析 > seikakubunseki\ ;
+現金書留 > genkinkakitome\ ;
+休戦条約 > kyuusenjouyaku\ ;
+二足動物 > nisokudoubutsu\ ;
+心理学的 > shinrigakuteki\ ;
+侃々諤諤 > kankangakugaku\ ;
+直線運動 > chokusen''undou\ ;
+悪徳新聞 > akutokushinbun\ ;
+未決拘留 > miketsukouryuu\ ;
+定量分析 > teiryoubunseki\ ;
+紙屑同然 > kamikuzudouzen\ ;
+温室栽培 > onshitsusaibai\ ;
+針小棒大 > shinshouboudai\ ;
+太刀二腰 > tachifutakoshi\ ;
+認識不足 > ninshikibusoku\ ;
+団体協約 > dantaikyouyaku\ ;
+戦々兢々 > sensenkyoukyou\ ;
+信頼回復 > shinraikaifuku\ ;
+修学旅行 > shuugakuryokou\ ;
+電源開発 > dengenkaihatsu\ ;
+模式標本 > moshikihyouhon\ ;
+追跡調査 > tsuisekichousa\ ;
+割引手形 > waribikitegata\ ;
+直流回路 > chokuryuukairo\ ;
+興行成績 > kougyouseiseki\ ;
+北洋漁業 > hokuyougyogyou\ ;
+国文学史 > kokubungakushi\ ;
+永久脱毛 > eikyuudatsumou\ ;
+排出基準 > haishutsukijun\ ;
+組職改革 > soshokukaikaku\ ;
+過失致死 > kashitsuchishi\ ;
+交通信号 > koutsuushingou\ ;
+動物実験 > doubutsujikken\ ;
+水上警察 > suijoukeisatsu\ ;
+労作教育 > rousakukyouiku\ ;
+核廃棄物 > kakuhaikibutsu\ ;
+鎮魂曲歌 > chinkonkyokuka\ ;
+非鉄金属 > hitetsukinzoku\ ;
+三百代言 > sanbyakudaigen\ ;
+中国伝来 > chuugokudenrai\ ;
+筋無力症 > kinmuryokushou\ ;
+流通資本 > ryuutsuushihon\ ;
+空即是色 > kuusokuzeshiki\ ;
+教育改革 > kyouikukaikaku\ ;
+切開手術 > sekkaishujutsu\ ;
+救護活動 > kyuugokatsudou\ ;
+宣伝活動 > sendenkatsudou\ ;
+財産目録 > zaisanmokuroku\ ;
+正常終了 > seijoushuuryou\ ;
+亡命生活 > boumeiseikatsu\ ;
+優越複合 > yuuetsufukugou\ ;
+純日本式 > jun''nihonshiki\ ;
+手形割引 > tegatawaribiki\ ;
+動物崇拝 > doubutsusuuhai\ ;
+共同住宅 > kyoudoujuutaku\ ;
+有袋動物 > yuutaidoubutsu\ ;
+袋小路文 > fukurokoujibun\ ;
+白砂青松 > hakushaseishou\ ;
+花嫁御寮 > hanayomegoryou\ ;
+新陳代謝 > shinchintaisha\ ;
+一六銀行 > ichirokuginkou\ ;
+就職斡旋 > shuushokuassen\ ;
+鞭毛虫症 > benmouchuushou\ ;
+絶体絶命 > zettaizetsumei\ ;
+精神分析 > seishinbunseki\ ;
+系列会社 > keiretsugaisha\ ;
+分子間力 > bunshikanryoku\ ;
+企業戦略 > kigyousenryaku\ ;
+国民所得 > kokuminshotoku\ ;
+輸出制限 > yushutsuseigen\ ;
+特定銘柄 > tokuteimeigara\ ;
+財務体質 > zaimutaishitsu\ ;
+警察学校 > keisatsugakkou\ ;
+不法侵入 > fuhoushin''nyuu\ ;
+生活設計 > seikatsusekkei\ ;
+軽薄短小 > keihakutanshou\ ;
+算術平均 > sanjutsuheikin\ ;
+即席料理 > sokusekiryouri\ ;
+物理療法 > butsuriryouhou\ ;
+青酸中毒 > seisanchuudoku\ ;
+宗教法人 > shuukyouhoujin\ ;
+写真植字 > shashinshokuji\ ;
+緊縮財政 > kinshukuzaisei\ ;
+単性生殖 > tanseiseishoku\ ;
+高等生物 > koutouseibutsu\ ;
+興味津々 > kyoumishinshin\ ;
+保証牛乳 > hoshougyuunyuu\ ;
+受胎調節 > jutaichousetsu\ ;
+透析療法 > tousekiryouhou\ ;
+感覚神経 > kankakushinkei\ ;
+専門知識 > senmonchishiki\ ;
+軍拡競争 > gunkakukyousou\ ;
+登場人物 > toujoujinbutsu\ ;
+非現実的 > higenjitsuteki\ ;
+逆性石鹸 > gyakuseisekken\ ;
+幽門狭窄 > yuumonkyousaku\ ;
+連邦当局 > renpoutoukyoku\ ;
+直射日光 > chokushanikkou\ ;
+先任将校 > sen''ninshoukou\ ;
+謹厳実直 > kingenjitchoku\ ;
+店頭取引 > tentoutorihiki\ ;
+発売禁止 > hatsubaikinshi\ ;
+品質管理 > hinshitsukanri\ ;
+編入試験 > hen''nyuushiken\ ;
+伝達関数 > dentatsukansuu\ ;
+尽忠報国 > jinchuuhoukoku\ ;
+労使協調 > roushikyouchou\ ;
+百色眼鏡 > hyakuiromegane\ ;
+中性子束 > chuuseishisoku\ ;
+緊急対策 > kinkyuutaisaku\ ;
+印刷技術 > insatsugijutsu\ ;
+心的表示 > shintekihyouji\ ;
+名所旧跡 > meishokyuuseki\ ;
+投資信託 > toushishintaku\ ;
+新韓国党 > shinkankokutou\ ;
+国際条約 > kokusaijouyaku\ ;
+七堂伽藍 > shichidougaran\ ;
+親族関係 > shinzokukankei\ ;
+傘形碍子 > kasagatagaishi\ ;
+悪漢小説 > akkanshousetsu\ ;
+公敵一号 > koutekiichigou\ ;
+水質汚濁 > suishitsuodaku\ ;
+精神療法 > seishinryouhou\ ;
+茫然自失 > bouzenjishitsu\ ;
+地質時代 > chishitsujidai\ ;
+立入禁止 > tachiirikinshi\ ;
+大同団結 > daidoudanketsu\ ;
+貯金通帳 > chokintsuuchou\ ;
+斎戒沐浴 > saikaimokuyoku\ ;
+新制大学 > shinseidaigaku\ ;
+共同責任 > kyoudousekinin\ ;
+新聞発表 > shinbunhappyou\ ;
+車内改札 > shanaikaisatsu\ ;
+昆虫学者 > konchuugakusha\ ;
+退職年金 > taishokunenkin\ ;
+分割統治 > bunkatsutouchi\ ;
+確率過程 > kakuritsukatei\ ;
+研究発表 > kenkyuuhappyou\ ;
+旧約聖書 > kyuuyakuseisho\ ;
+蒲鉾兵舎 > kamabokoheisha\ ;
+経費節約 > keihisetsuyaku\ ;
+筋萎縮症 > kin''ishukushou\ ;
+優生手術 > yuuseishujutsu\ ;
+公共料金 > koukyouryoukin\ ;
+強制中断 > kyouseichuudan\ ;
+万有引力 > ban''yuuinryoku\ ;
+立太子式 > rittaishishiki\ ;
+日内周期 > nichinaishuuki\ ;
+憲法解釈 > kenpoukaishaku\ ;
+美的生活 > bitekiseikatsu\ ;
+団体割引 > dantaiwaribiki\ ;
+国際交流 > kokusaikouryuu\ ;
+冠状静脈 > kanjoujoumyaku\ ;
+逆三角形 > gyakusankakkei\ ;
+市立学校 > shiritsugakkou\ ;
+複雑怪奇 > fukuzatsukaiki\ ;
+高層建築 > kousougenchiku\ ;
+真珠養殖 > shinjuyoushoku\ ;
+申告用紙 > shinkokuyoushi\ ;
+局地戦争 > kyokuchisensou\ ;
+重要人物 > juuyoujinbutsu\ ;
+活版印刷 > kappan''insatsu\ ;
+連日連夜 > renjitsuren''ya\ ;
+三者対立 > sanshatairitsu\ ;
+求妻広告 > kyuusaikoukoku\ ;
+狂言自殺 > kyougenjisatsu\ ;
+性染色体 > seisenshokutai\ ;
+凸版印刷 > toppan''insatsu\ ;
+刺身包丁 > sashimibouchou\ ;
+日米貿易 > nichibeiboueki\ ;
+軍事協力 > gunjikyouryoku\ ;
+極限状態 > kyokugenjoutai\ ;
+物理現象 > butsurigenshou\ ;
+人身攻撃 > jinshinkougeki\ ;
+記憶喪失 > kiokusoushitsu\ ;
+社会秩序 > shakaichitsujo\ ;
+侃侃諤諤 > kankangakugaku\ ;
+減価償却 > genkashoukyaku\ ;
+空中査察 > kuuchuusasatsu\ ;
+素人芝居 > shiroutoshibai\ ;
+一六勝負 > ichirokushoubu\ ;
+交響楽団 > koukyougakudan\ ;
+血液銀行 > ketsuekiginkou\ ;
+商品在高 > shouhinzaidaka\ ;
+物理学者 > butsurigakusha\ ;
+年百年中 > nenbyakunenjuu\ ;
+枝葉末節 > shiyoumassetsu\ ;
+軍隊生活 > guntaiseikatsu\ ;
+比較的小 > hikakutekishou\ ;
+潜在能力 > senzainouryoku\ ;
+工学博士 > kougakuhakushi\ ;
+有償契約 > yuushoukeiyaku\ ;
+新聞広告 > shinbunkoukoku\ ;
+上級曹長 > joukyuusouchou\ ;
+乱診乱療 > ranshinranryou\ ;
+集合住宅 > shuugoujuutaku\ ;
+御食事処 > oshokujidokoro\ ;
+養殖真珠 > youshokushinju\ ;
+内部告発 > naibukokuhatsu\ ;
+名目賃金 > meimokuchingin\ ;
+相対湿度 > soutaishitsudo\ ;
+本末転倒 > honmatsutentou\ ;
+学校生活 > gakkouseikatsu\ ;
+入国査証 > nyuukokusashou\ ;
+自律神経 > jiritsushinkei\ ;
+姉様人形 > anesamaningyou\ ;
+戦戦恐恐 > sensenkyoukyou\ ;
+衝撃関数 > shougekikansuu\ ;
+巧言令色 > kougenreishoku\ ;
+変温動物 > hen''ondoubutsu\ ;
+原始動物 > genshidoubutsu\ ;
+空間芸術 > kuukangeijutsu\ ;
+侃々諤々 > kankangakugaku\ ;
+開店休業 > kaitenkyuugyou\ ;
+娯楽施設 > gorakushisetsu\ ;
+半永久的 > han''eikyuuteki\ ;
+食糧事情 > shokuryoujijou\ ;
+可逆反応 > kagyakuhan''nou\ ;
+特別会員 > tokubetsukaiin\ ;
+死活問題 > shikatsumondai\ ;
+系統神学 > keitoushingaku\ ;
+軟骨魚類 > nankotsugyorui\ ;
+各人各様 > kakujinkakuyou\ ;
+通信事業 > tsuushinjigyou\ ;
+貿易障壁 > bouekishouheki\ ;
+単一通貨 > tan''itsutsuuka\ ;
+千両役者 > senryouyakusha\ ;
+到着時刻 > touchakujikoku\ ;
+概算要求 > gaisan''youkyuu\ ;
+国民年金 > kokumin''nenkin\ ;
+泥水稼業 > doromizukagyou\ ;
+在日米軍 > zainichibeigun\ ;
+越境入学 > ekkyounyuugaku\ ;
+数理哲学 > suuritetsugaku\ ;
+唯物史観 > yuibutsushikan\ ;
+商業学校 > shougyougakkou\ ;
+左大括弧 > hidaridaikakko\ ;
+民族精神 > minzokuseishin\ ;
+実力行為 > jitsuryokukoui\ ;
+海綿動物 > kaimendoubutsu\ ;
+米軍兵力 > beigunheiryoku\ ;
+就学年齢 > shuugakunenrei\ ;
+鉱物資源 > koubutsushigen\ ;
+軟式野球 > nanshikiyakyuu\ ;
+信託統治 > shintakutouchi\ ;
+経済活動 > keizaikatsudou\ ;
+兵式体操 > heishikitaisou\ ;
+生殖細胞 > seishokusaibou\ ;
+地形測量 > chikeisokuryou\ ;
+商業資本 > shougyoushihon\ ;
+数値目標 > suuchimokuhyou\ ;
+一得一失 > ittokuisshitsu\ ;
+通信販売 > tsuushinhanbai\ ;
+強制執行 > kyouseishikkou\ ;
+幻覚症状 > genkakushoujou\ ;
+北陸地方 > hokurikuchihou\ ;
+割引発行 > waribikihakkou\ ;
+広報活動 > kouhoukatsudou\ ;
+山高帽子 > yamatakaboushi\ ;
+染色工場 > senshokukoujou\ ;
+公式訪問 > koushikihoumon\ ;
+総合開発 > sougoukaihatsu\ ;
+連立政権 > renritsuseiken\ ;
+差別表現 > sabetsuhyougen\ ;
+権力闘争 > kenryokutousou\ ;
+製品戦略 > seihinsenryaku\ ;
+分水山脈 > bunsuisanmyaku\ ;
+誘電正接 > yuudenseisetsu\ ;
+知覚神経 > chikakushinkei\ ;
+逐条審議 > chikujoushingi\ ;
+千島列島 > chishimarettou\ ;
+輸出超過 > yushutsuchouka\ ;
+尊王討幕 > son''noutoubaku\ ;
+情報通信 > jouhoutsuushin\ ;
+超越交代 > chouetsukoutai\ ;
+生活空間 > seikatsukuukan\ ;
+前立腺炎 > zenritsusen''en\ ;
+行政改革 > gyouseikaikaku\ ;
+律令国家 > ritsuryoukokka\ ;
+心霊現象 > shinreigenshou\ ;
+生誕百年 > seitanhyakunen\ ;
+自動着信 > jidouchakushin\ ;
+第三勢力 > daisanseiryoku\ ;
+書留郵便 > kakitomeyuubin\ ;
+知識体系 > chishikitaikei\ ;
+集合記述 > shuugoukijutsu\ ;
+三百諸侯 > sanbyakushokou\ ;
+大衆文学 > taishuubungaku\ ;
+中等教育 > chuutoukyouiku\ ;
+教育行政 > kyouikugyousei\ ;
+武装中立 > busouchuuritsu\ ;
+平和協力 > heiwakyouryoku\ ;
+電鉄会社 > dentetsugaisha\ ;
+出席日数 > shussekinissuu\ ;
+県立病院 > kenritsubyouin\ ;
+粒粒辛苦 > ryuuryuushinku\ ;
+偏旁冠脚 > henboukankyaku\ ;
+販売促進 > hanbaisokushin\ ;
+信託投資 > shintakutoushi\ ;
+中小企業 > chuushoukigyou\ ;
+三行広告 > sangyoukoukoku\ ;
+血液循環 > ketsuekijunkan\ ;
+連結決算 > renketsukessan\ ;
+骨軟化症 > kotsunankashou\ ;
+政治哲学 > seijitetsugaku\ ;
+商業放送 > shougyouhousou\ ;
+国防総省 > kokubousoushou\ ;
+生活指導 > seikatsushidou\ ;
+炎熱地獄 > en''netsujigoku\ ;
+八面玲瓏 > hachimenreirou\ ;
+面会謝絶 > menkaishazetsu\ ;
+道路標識 > dourohyoushiki\ ;
+国営通信 > kokueitsuushin\ ;
+適材適所 > tekizaitekisho\ ;
+劇症肝炎 > gekishoukan''en\ ;
+物情騒然 > butsujousouzen\ ;
+公民生活 > kouminseikatsu\ ;
+入学試験 > nyuugakushiken\ ;
+絶対絶命 > zettaizetsumei\ ;
+事々物々 > jijibutsubutsu\ ;
+個個別別 > kokobetsubetsu\ ;
+合唱隊長 > gasshoutaichou\ ;
+乾燥牛乳 > kansougyuunyuu\ ;
+直系尊属 > chokkeisonzoku\ ;
+入学願書 > nyuugakugansho\ ;
+出発時間 > shuppatsujikan\ ;
+主要人物 > shuyoujinbutsu\ ;
+文学作品 > bungakusakuhin\ ;
+軽便鉄道 > keibentetsudou\ ;
+割引市場 > waribikishijou\ ;
+失踪宣告 > shissousenkoku\ ;
+化学結合 > kagakuketsugou\ ;
+保険料率 > hokenryouritsu\ ;
+信越本線 > shinetsuhonsen\ ;
+神経中枢 > shinkeichuusuu\ ;
+発光動物 > hakkoudoubutsu\ ;
+複式火山 > fukushikikazan\ ;
+堅忍不抜 > ken''ninfubatsu\ ;
+耐乏生活 > taibouseikatsu\ ;
+社会通念 > shakaitsuunen\ ;
+接客態度 > sekkyakutaido\ ;
+軽爆撃機 > keibakugekiki\ ;
+署名捺印 > shomeinatsuin\ ;
+胸部疾患 > kyoubushikkan\ ;
+象牙取引 > zougetorihiki\ ;
+日曜大工 > nichiyoudaiku\ ;
+目玉商品 > medamashouhin\ ;
+製薬会社 > seiyakugaisha\ ;
+投光照明 > toukoushoumei\ ;
+清廉潔白 > seirenkeppaku\ ;
+敵前逃亡 > tekizentoubou\ ;
+日刊新聞 > nikkanshinbun\ ;
+抱腹絶倒 > houfukuzettou\ ;
+悪虐無道 > akugyakumudou\ ;
+国家権力 > kokkakenryoku\ ;
+南洋諸島 > nan''youshotou\ ;
+囚人労働 > shuujinroudou\ ;
+劣等観念 > rettoukan''nen\ ;
+関係官庁 > kankeikanchou\ ;
+農民文学 > nouminbungaku\ ;
+自然現象 > shizengenshou\ ;
+腎臓結石 > jinzoukesseki\ ;
+施政方針 > shiseihoushin\ ;
+天竺浪人 > tenjikurounin\ ;
+霊魂不滅 > reikonfumetsu\ ;
+公共組合 > koukyoukumiai\ ;
+有線電信 > yuusendenshin\ ;
+血行障害 > kekkoushougai\ ;
+人的資源 > jintekishigen\ ;
+地方行政 > chihougyousei\ ;
+震天動地 > shintendouchi\ ;
+第三帝国 > daisanteikoku\ ;
+天文学者 > tenmongakusha\ ;
+深夜放送 > shin''yahousou\ ;
+音声形式 > onseikeishiki\ ;
+交通問題 > koutsuumondai\ ;
+公共投資 > koukyoutoushi\ ;
+劃時代的 > kakujidaiteki\ ;
+同族会社 > douzokugaisha\ ;
+心理描写 > shinribyousha\ ;
+技術水準 > gijutsusuijun\ ;
+理学博士 > rigakuhakushi\ ;
+局所麻酔 > kyokushomasui\ ;
+産別会議 > sanbetsukaigi\ ;
+就学児童 > shuugakujidou\ ;
+空中給油 > kuuchuukyuuyu\ ;
+国際規格 > kokusaikikaku\ ;
+学校新聞 > gakkoushinbun\ ;
+情報産業 > jouhousangyou\ ;
+登録番号 > tourokubangou\ ;
+土木工学 > dobokukougaku\ ;
+生体反応 > seitaihan''nou\ ;
+象徴主義 > shouchoushugi\ ;
+音楽教育 > ongakukyouiku\ ;
+観測地点 > kansokuchiten\ ;
+技術同士 > gijutsudoushi\ ;
+応急攻撃 > oukyuukougeki\ ;
+同仁教会 > doujinkyoukai\ ;
+実働時間 > jitsudoujikan\ ;
+青空駐車 > aozorachuusha\ ;
+電力輸送 > denryokuyusou\ ;
+軍隊教育 > guntaikyouiku\ ;
+遠洋漁業 > en''yougyogyou\ ;
+保障占領 > hoshousenryou\ ;
+交換法則 > koukanhousoku\ ;
+牽引療法 > ken''inryouhou\ ;
+駅伝競走 > ekidenkyousou\ ;
+切歯扼腕 > sesshiyakuwan\ ;
+団体交渉 > dantaikoushou\ ;
+亭主関白 > teishukanpaku\ ;
+一段動詞 > ichidandoushi\ ;
+一般幕僚 > ippanbakuryou\ ;
+寝台列車 > shindairessha\ ;
+投擲競技 > toutekikyougi\ ;
+気象通報 > kishoutsuuhou\ ;
+開析台地 > kaisekidaichi\ ;
+実用主義 > jitsuyoushugi\ ;
+工場実習 > koujoujisshuu\ ;
+中継貿易 > chuukeiboueki\ ;
+性能特性 > seinoutokusei\ ;
+最後通牒 > saigotsuuchou\ ;
+国際結婚 > kokusaikekkon\ ;
+造本技術 > zouhongijutsu\ ;
+妨害工作 > bougaikousaku\ ;
+民族意識 > minzokuishiki\ ;
+贅沢三昧 > zeitakuzanmai\ ;
+写真製版 > shashinseihan\ ;
+学校教育 > gakkoukyouiku\ ;
+霧中信号 > muchuushingou\ ;
+精神状態 > seishinjoutai\ ;
+商科大学 > shoukadaigaku\ ;
+写真結婚 > shashinkekkon\ ;
+共同戦線 > kyoudousensen\ ;
+火山活動 > kazankatsudou\ ;
+麦稈細工 > mugiwarazaiku\ ;
+勤労所得 > kinroushotoku\ ;
+首相官邸 > shushoukantei\ ;
+読書三昧 > dokushozanmai\ ;
+中等教員 > chuutoukyouin\ ;
+一次電流 > ichijidenryuu\ ;
+台中関係 > taichuukankei\ ;
+秘密結社 > himitsukessha\ ;
+東方拡大 > touhoukakudai\ ;
+近隣諸国 > kinrinshokoku\ ;
+労働階級 > roudoukaikyuu\ ;
+貞操観念 > teisoukan''nen\ ;
+民間伝承 > minkandenshou\ ;
+膀胱結石 > boukoukesseki\ ;
+転居通知 > tenkyotsuuchi\ ;
+純正数学 > junseisuugaku\ ;
+男爵夫人 > danshakufujin\ ;
+塩蔵食品 > enzoushokuhin\ ;
+一致団結 > itchidanketsu\ ;
+警察国家 > keisatsukokka\ ;
+経済白書 > keizaihakusho\ ;
+穀倉地帯 > kokusouchitai\ ;
+環境事業 > kankyoujigyou\ ;
+総合商社 > sougoushousha\ ;
+少年労働 > shounenroudou\ ;
+一挙両得 > ikkyoryoutoku\ ;
+測定装置 > sokuteisouchi\ ;
+前衛美術 > zen''eibijutsu\ ;
+皆既月食 > kaikigesshoku\ ;
+公団住宅 > koudanjuutaku\ ;
+設備投資 > setsubitoushi\ ;
+日常茶飯 > nichijousahan\ ;
+群集心理 > gunshuushinri\ ;
+百戦練磨 > hyakusenrenma\ ;
+即興詩人 > sokkyoushijin\ ;
+善隣政策 > zenrinseisaku\ ;
+前受収益 > maeukeshuueki\ ;
+国民皆兵 > kokuminkaihei\ ;
+骨相学者 > kossougakusha\ ;
+戸別訪問 > kobetsuhoumon\ ;
+爆弾声明 > bakudanseimei\ ;
+道楽息子 > dourakumusuko\ ;
+癒傷組織 > yushousoshiki\ ;
+男子学生 > danshigakusei\ ;
+貫通銃創 > kantsuujuusou\ ;
+新郎新婦 > shinroushinpu\ ;
+空挺作戦 > kuuteisakusen\ ;
+配管工業 > haikankougyou\ ;
+宇宙通信 > uchuutsuushin\ ;
+等比数列 > touhisuuretsu\ ;
+床上浸水 > yukaueshinsui\ ;
+自然環境 > shizenkankyou\ ;
+日中戦争 > nitchuusensou\ ;
+標題音楽 > hyoudaiongaku\ ;
+劣等複合 > rettoufukugou\ ;
+眼球銀行 > gankyuuginkou\ ;
+市場分析 > shijoubunseki\ ;
+中間試験 > chuukanshiken\ ;
+証券会社 > shoukengaisha\ ;
+漏話結合 > rouwagetsugou\ ;
+国際紛争 > kokusaifunsou\ ;
+集団行動 > shuudankoudou\ ;
+車両縦隊 > sharyoujuutai\ ;
+交代操業 > koutaisougyou\ ;
+作者未詳 > sakushamishou\ ;
+西本願寺 > nishihonganji\ ;
+永代借地 > eitaishakuchi\ ;
+子宮筋腫 > shikyuukinshu\ ;
+切手蒐集 > kitteshuushuu\ ;
+官費留学 > kanpiryuugaku\ ;
+編集主幹 > henshuushukan\ ;
+生産技術 > seisangijutsu\ ;
+水平応力 > suiheiouryoku\ ;
+先端技術 > sentangijutsu\ ;
+神宮球場 > jinguukyuujou\ ;
+音楽大学 > ongakudaigaku\ ;
+侵略行為 > shinryakukoui\ ;
+入射光線 > nyuushakousen\ ;
+三角函数 > sankakukansuu\ ;
+立体写真 > rittaishashin\ ;
+国際関係 > kokusaikankei\ ;
+浄土真宗 > joudoshinshuu\ ;
+三国同盟 > sangokudoumei\ ;
+驚天動地 > kyoutendouchi\ ;
+空中滑走 > kuuchuukassou\ ;
+国際問題 > kokusaimondai\ ;
+社外発信 > shagaihasshin\ ;
+跳梁跋扈 > chouryoubakko\ ;
+集中砲火 > shuuchuuhouka\ ;
+人間工学 > ningenkougaku\ ;
+身元確認 > mimotokakunin\ ;
+差別待遇 > sabetsutaiguu\ ;
+千鳥格子 > chidorigoushi\ ;
+仏像二体 > butsuzounitai\ ;
+全景写真 > zenkeishashin\ ;
+公共団体 > koukyoudantai\ ;
+堆積輪廻 > taisekirin''ne\ ;
+一般生活 > ippanseikatsu\ ;
+横河電機 > yokogawadenki\ ;
+中継放送 > chuukeihousou\ ;
+禁止条約 > kinshijouyaku\ ;
+全国放送 > zenkokuhousou\ ;
+党利党略 > touritouryaku\ ;
+外交交渉 > gaikoukoushou\ ;
+学士院賞 > gakushiinshou\ ;
+行動計画 > koudoukeikaku\ ;
+共有財産 > kyouyuuzaisan\ ;
+逸失利益 > isshitsurieki\ ;
+農地改革 > nouchikaikaku\ ;
+交通渋滞 > koutsuujuutai\ ;
+神経細胞 > shinkeisaibou\ ;
+業界団体 > gyoukaidantai\ ;
+勧善懲悪 > kanzenchouaku\ ;
+共産陣営 > kyousanjin''ei\ ;
+欠席裁判 > kessekisaiban\ ;
+半革装丁 > hankawasoutei\ ;
+競争市場 > kyousoushijou\ ;
+知的財産 > chitekizaisan\ ;
+南北問題 > nanbokumondai\ ;
+突然変異 > totsuzenhen''i\ ;
+適応障害 > tekioushougai\ ;
+混載貨物 > konsaikamotsu\ ;
+耐障害性 > taishougaisei\ ;
+近親相姦 > kinshinsoukan\ ;
+大道商人 > daidoushounin\ ;
+不信任案 > fushin''nin''an\ ;
+宮廷音楽 > kyuuteiongaku\ ;
+緩衝地帯 > kanshouchitai\ ;
+血清注射 > kesseichuusha\ ;
+加糖粉乳 > katoufun''nyuu\ ;
+信販会社 > shinpangaisha\ ;
+十一献金 > juuichikenkin\ ;
+福祉事業 > fukushijigyou\ ;
+暖衣飽食 > dan''ihoushoku\ ;
+準決勝戦 > junkesshousen\ ;
+野生動物 > yaseidoubutsu\ ;
+社会現象 > shakaigenshou\ ;
+北欧諸国 > hokuoushokoku\ ;
+自然休会 > shizenkyuukai\ ;
+良二千石 > ryounisenseki\ ;
+文学青年 > bungakuseinen\ ;
+修道誓願 > shuudouseigan\ ;
+食糧援助 > shokuryouenjo\ ;
+衆議一決 > shuugiikketsu\ ;
+酸素吸入 > sansokyuunyuu\ ;
+生臭坊主 > namagusabouzu\ ;
+軍事施設 > gunjishisetsu\ ;
+郵便振替 > yuubinfurikae\ ;
+方針決定 > houshinkettei\ ;
+就業時間 > shuugyoujikan\ ;
+人口抑制 > jinkouyokusei\ ;
+軍人恩給 > gunjin''onkyuu\ ;
+人工流産 > jinkouryuuzan\ ;
+真剣勝負 > shinkenshoubu\ ;
+隠退生活 > intaiseikatsu\ ;
+役員報酬 > yakuinhoushuu\ ;
+割引時間 > waribikijikan\ ;
+白葡萄酒 > shirobudoushu\ ;
+制服制帽 > seifukuseibou\ ;
+古色蒼然 > koshokusouzen\ ;
+留置郵便 > tomeokiyuubin\ ;
+計画倒産 > keikakutousan\ ;
+皆既日食 > kaikinisshoku\ ;
+連戦連勝 > rensenrenshou\ ;
+享楽主義 > kyourakushugi\ ;
+広告媒体 > koukokubaitai\ ;
+国民審査 > kokuminshinsa\ ;
+混声合唱 > konseigasshou\ ;
+神道信者 > shintoushinja\ ;
+実況放送 > jikkyouhousou\ ;
+分光分析 > bunkoubunseki\ ;
+産業組合 > sangyoukumiai\ ;
+取捨選択 > shushasentaku\ ;
+地震学者 > jishingakusha\ ;
+大阪大学 > oosakadaigaku\ ;
+研究方法 > kenkyuuhouhou\ ;
+断郊競走 > dankoukyousou\ ;
+比較文学 > hikakubungaku\ ;
+士農工商 > shinoukoushou\ ;
+乾坤一擲 > kenkon''itteki\ ;
+停止信号 > teishishingou\ ;
+建築現場 > kenchikugenba\ ;
+国連大使 > kokurentaishi\ ;
+眉目秀麗 > bimokushuurei\ ;
+情緒障害 > joushoshougai\ ;
+謹賀新年 > kingashin''nen\ ;
+練習問題 > renshuumondai\ ;
+人畜無害 > jinchikumugai\ ;
+上流社会 > jouryuushakai\ ;
+陸海空軍 > rikukaikuugun\ ;
+真相調査 > shinsouchousa\ ;
+表敬訪問 > hyoukeihoumon\ ;
+普通教育 > futsuukyouiku\ ;
+公民教育 > kouminkyouiku\ ;
+水害対策 > suigaitaisaku\ ;
+将来展望 > shouraitenbou\ ;
+尋問調書 > jinmonchousho\ ;
+着弾距離 > chakudankyori\ ;
+天真爛漫 > tenshinranman\ ;
+反射神経 > hanshashinkei\ ;
+青色申告 > aoiroshinkoku\ ;
+造形美術 > zoukeibijutsu\ ;
+史的現在 > shitekigenzai\ ;
+内部生活 > naibuseikatsu\ ;
+構造記述 > kouzoukijutsu\ ;
+共存共栄 > kyouzonkyouei\ ;
+帯状疱疹 > taijouhoushin\ ;
+現実主義 > genjitsushugi\ ;
+年々歳々 > nen''nensaisai\ ;
+研究論文 > kenkyuuronbun\ ;
+最終編成 > saishuuhensei\ ;
+専修学校 > senshuugakkou\ ;
+右中括弧 > migichuukakko\ ;
+修道院長 > shuudouinchou\ ;
+家督相続 > katokusouzoku\ ;
+宿命論者 > shukumeironja\ ;
+温度調節 > ondochousetsu\ ;
+言語能力 > gengonouryoku\ ;
+利潤追求 > rijuntsuikyuu\ ;
+統率理論 > tousotsuriron\ ;
+良風美俗 > ryoufuubizoku\ ;
+国民学校 > kokumingakkou\ ;
+単為生殖 > tan''iseishoku\ ;
+二十日鼠 > hatsukanezumi\ ;
+貿易収支 > bouekishuushi\ ;
+人工心臓 > jinkoushinzou\ ;
+天津日嗣 > amatsuhitsugi\ ;
+群雄割拠 > gun''yuukakkyo\ ;
+先天梅毒 > sentenbaidoku\ ;
+人工心肺 > jinkoushinbai\ ;
+呼吸中枢 > kokyuuchuusuu\ ;
+駐留部隊 > chuuryuubutai\ ;
+殺生禁断 > sesshoukindan\ ;
+無銭遊興 > musen''yuukyou\ ;
+主席全権 > shusekizenken\ ;
+甲乙丙丁 > kouotsuheitei\ ;
+補欠選挙 > hoketsusenkyo\ ;
+微量分析 > biryoubunseki\ ;
+地域代表 > chiikidaihyou\ ;
+画一主義 > kakuitsushugi\ ;
+京都大学 > kyoutodaigaku\ ;
+生体工学 > seitaikougaku\ ;
+泡沫候補 > houmatsukouho\ ;
+相続財産 > souzokuzaisan\ ;
+対戦成績 > taisenseiseki\ ;
+国際空港 > kokusaikuukou\ ;
+国連総会 > kokurensoukai\ ;
+専門教育 > senmonkyouiku\ ;
+営業報告 > eigyouhoukoku\ ;
+血液検査 > ketsuekikensa\ ;
+革新主義 > kakushinshugi\ ;
+露出時間 > roshutsujikan\ ;
+投票用紙 > touhyouyoushi\ ;
+薬用石鹸 > yakuyousekken\ ;
+単独行動 > tandokukoudou\ ;
+夫婦生活 > fuufuseikatsu\ ;
+肉体関係 > nikutaikankei\ ;
+軍事警察 > gunjikeisatsu\ ;
+新婚旅行 > shinkonryokou\ ;
+陽性反応 > youseihan''nou\ ;
+軸差応力 > jikusaouryoku\ ;
+人類学者 > jinruigakusha\ ;
+武士気質 > bushikishitsu\ ;
+第一人者 > daiichininsha\ ;
+家庭生活 > kateiseikatsu\ ;
+危険人物 > kikenjinbutsu\ ;
+大学教授 > daigakukyouju\ ;
+前進運動 > zenshin''undou\ ;
+活動成果 > katsudouseika\ ;
+総合収支 > sougoushuushi\ ;
+各駅停車 > kakuekiteisha\ ;
+触媒作用 > shokubaisayou\ ;
+科学技術 > kagakugijutsu\ ;
+印刷用紙 > insatsuyoushi\ ;
+人的証拠 > jintekishouko\ ;
+抗議活動 > kougikatsudou\ ;
+先取得点 > senshutokuten\ ;
+複合企業 > fukugoukigyou\ ;
+無差別級 > musabetsukyuu\ ;
+多国籍軍 > takokusekigun\ ;
+競争価格 > kyousoukakaku\ ;
+社会人枠 > shakaijinwaku\ ;
+商業地区 > shougyouchiku\ ;
+表層構造 > hyousoukouzou\ ;
+精神衛生 > seishin''eisei\ ;
+航空写真 > koukuushashin\ ;
+上昇気流 > joushoukiryuu\ ;
+北大西洋 > kitataiseiyou\ ;
+行政指導 > gyouseishidou\ ;
+定置漁業 > teichigyogyou\ ;
+最高級品 > saikoukyuuhin\ ;
+出頭命令 > shuttoumeirei\ ;
+出血過多 > shukketsukata\ ;
+電子出版 > denshishuppan\ ;
+色素細胞 > shikisosaibou\ ;
+花嫁衣裳 > hanayomeishou\ ;
+小口現金 > koguchigenkin\ ;
+博学多才 > hakugakutasai\ ;
+外様大名 > tozamadaimyou\ ;
+国民主権 > kokuminshuken\ ;
+公金横領 > koukin''ouryou\ ;
+近郊農業 > kinkounougyou\ ;
+全国大会 > zenkokutaikai\ ;
+吟遊詩人 > gin''yuushijin\ ;
+冷水摩擦 > reisuimasatsu\ ;
+曲学阿世 > kyokugakuasei\ ;
+価格競争 > kakakukyousou\ ;
+禁断症状 > kindanshoujou\ ;
+竜攘虎搏 > ryuujoukohaku\ ;
+正味重量 > shoumijuuryou\ ;
+公証役場 > koushouyakuba\ ;
+清涼飲料 > seiryouinryou\ ;
+毛管現象 > moukangenshou\ ;
+作戦地域 > sakusenchiiki\ ;
+出張旅費 > shutchouryohi\ ;
+放送番組 > housoubangumi\ ;
+永久磁石 > eikyuujishaku\ ;
+売掛勘定 > urikakekanjou\ ;
+間宮海峡 > mamiyakaikyou\ ;
+獄中日記 > gokuchuunikki\ ;
+沈思黙考 > chinshimokkou\ ;
+超国家的 > choukokkateki\ ;
+防火建築 > boukakenchiku\ ;
+金融市場 > kin''yuushijou\ ;
+集団心理 > shuudanshinri\ ;
+入社試験 > nyuushashiken\ ;
+選択値群 > sentakuchigun\ ;
+確率誤差 > kakuritsugosa\ ;
+第四階級 > daiyonkaikyuu\ ;
+逍遥学派 > shouyougakuha\ ;
+黒点周期 > kokutenshuuki\ ;
+美術学校 > bijutsugakkou\ ;
+半死半生 > hanshihanshou\ ;
+快速電車 > kaisokudensha\ ;
+南北戦争 > nanbokusensou\ ;
+小児喘息 > shounizensoku\ ;
+内政干渉 > naiseikanshou\ ;
+公平政策 > kouheiseisaku\ ;
+工業規格 > kougyoukikaku\ ;
+四角四面 > shikakushimen\ ;
+少年少女 > shounenshoujo\ ;
+再販業者 > saihangyousha\ ;
+超高速度 > choukousokudo\ ;
+調査報告 > chousahoukoku\ ;
+海難審判 > kainanshinpan\ ;
+理学修士 > rigakushuushi\ ;
+外的根拠 > gaitekikonkyo\ ;
+生命工学 > seimeikougaku\ ;
+天佑神助 > ten''yuushinjo\ ;
+外国旅行 > gaikokuryokou\ ;
+共同水栓 > kyoudousuisen\ ;
+拡大均衡 > kakudaikinkou\ ;
+凱旋将軍 > gaisenshougun\ ;
+集積回路 > shuusekikairo\ ;
+裾野産業 > susonosangyou\ ;
+鎮魂帰神 > chinkonkishin\ ;
+合格者名 > goukakushamei\ ;
+有資格者 > yuushikakusha\ ;
+化学反応 > kagakuhan''nou\ ;
+需要供給 > juyoukyoukyuu\ ;
+召喚令状 > shoukanreijou\ ;
+試験勉強 > shikenbenkyou\ ;
+温室効果 > onshitsukouka\ ;
+有鉤条虫 > yuukoujouchuu\ ;
+内的根拠 > naitekikonkyo\ ;
+近海漁業 > kinkaigyogyou\ ;
+決戦投票 > kessentouhyou\ ;
+共同社会 > kyoudoushakai\ ;
+唐草模様 > karakusamoyou\ ;
+包皮切断 > houhisetsudan\ ;
+定期取引 > teikitorihiki\ ;
+乾燥洗濯 > kansousentaku\ ;
+集合名詞 > shuugoumeishi\ ;
+小型新聞 > kogatashinbun\ ;
+医療施設 > iryoushisetsu\ ;
+動物油脂 > doubutsuyushi\ ;
+反面教師 > hanmenkyoushi\ ;
+日常会話 > nichijoukaiwa\ ;
+輸入業者 > yunyuugyousha\ ;
+標準価格 > hyoujunkakaku\ ;
+不妊手術 > funinshujutsu\ ;
+山猫争議 > yamanekosougi\ ;
+出世間的 > shussekenteki\ ;
+年中行事 > nenchuugyouji\ ;
+鎌倉時代 > kamakurajidai\ ;
+炎症病巣 > enshoubyousou\ ;
+注意人物 > chuuijinbutsu\ ;
+日洪親善 > nikkoushinzen\ ;
+追加注文 > tsuikachuumon\ ;
+筆写略字 > hissharyakuji\ ;
+献血運動 > kenketsuundou\ ;
+舞台芸術 > butaigeijutsu\ ;
+試験監督 > shikenkantoku\ ;
+撤頭徹尾 > tettoutetsubi\ ;
+疾風迅雷 > shippuujinrai\ ;
+市場環境 > shijoukankyou\ ;
+原成岩石 > genseiganseki\ ;
+前大統領 > zendaitouryou\ ;
+強制送還 > kyouseisoukan\ ;
+同業組合 > dougyoukumiai\ ;
+電気剃刀 > denkikamisori\ ;
+事務局長 > jimukyokuchou\ ;
+経済改革 > keizaikaikaku\ ;
+民俗芸能 > minzokugeinou\ ;
+収穫予想 > shuukakuyosou\ ;
+塩辛蜻蛉 > shiokaratonbo\ ;
+紆余曲折 > uyokyokusetsu\ ;
+極超短波 > gokuchoutanpa\ ;
+主権侵犯 > shukenshinpan\ ;
+中性洗剤 > chuuseisenzai\ ;
+貨物列車 > kamotsuressha\ ;
+血清療法 > kesseiryouhou\ ;
+新案特許 > shin''antokkyo\ ;
+死後硬直 > shigokouchoku\ ;
+唯物主義 > yuibutsushugi\ ;
+日露戦争 > nichirosensou\ ;
+断郊競争 > dankoukyousou\ ;
+同盟条約 > doumeijouyaku\ ;
+一攫千金 > ikkakkusenkin\ ;
+階級闘争 > kaikyuutousou\ ;
+熱硬化剤 > netsukoukazai\ ;
+専用回線 > sen''youkaisen\ ;
+交換学生 > koukangakusei\ ;
+動線計画 > dousenkeikaku\ ;
+民政長官 > minseichoukan\ ;
+判断中止 > handanchuushi\ ;
+局所分岐 > kyokushobunki\ ;
+通常国会 > tsuujoukokkai\ ;
+数値解析 > suuchikaiseki\ ;
+軍備拡張 > gunbikakuchou\ ;
+適者生存 > tekishaseizon\ ;
+精神鑑定 > seishinkantei\ ;
+鉄道輸送 > tetsudouyusou\ ;
+第三階級 > daisankaikyuu\ ;
+千態万様 > sentaiban''you\ ;
+電子工学 > denshikougaku\ ;
+経済状況 > keizaijoukyou\ ;
+社会教育 > shakaikyouiku\ ;
+農耕民族 > noukouminzoku\ ;
+全身全霊 > zenshinzenrei\ ;
+公称資本 > koushoushihon\ ;
+大字片山 > ooazakatayama\ ;
+薬師如来 > yakushinyorai\ ;
+百戦錬磨 > hyakusenrenma\ ;
+同盟休校 > doumeikyuukou\ ;
+中央計画 > chuuoukeikaku\ ;
+中央集権 > chuuoushuuken\ ;
+三角貿易 > sankakuboueki\ ;
+分析化学 > bunsekikagaku\ ;
+少壮士官 > shousoushikan\ ;
+法的根拠 > houtekikonkyo\ ;
+殺害事件 > satsugaijiken\ ;
+自然増収 > shizenzoushuu\ ;
+良性腫瘍 > ryouseishuyou\ ;
+通勤電車 > tsuukindensha\ ;
+少年犯罪 > shounenhanzai\ ;
+水酸化物 > suisankabutsu\ ;
+親戚知己 > shinsekichiki\ ;
+単独決算 > tandokukessan\ ;
+国際情勢 > kokusaijousei\ ;
+街頭演説 > gaitouenzetsu\ ;
+欣喜雀躍 > kinkijakuyaku\ ;
+品種改良 > hinshukairyou\ ;
+公称馬力 > koushoubariki\ ;
+四六時中 > shirokujichuu\ ;
+交通遮断 > koutsuushadan\ ;
+大学紛争 > daigakufunsou\ ;
+財政収支 > zaiseishuushi\ ;
+衆参両院 > shuusanryouin\ ;
+耐火建築 > taikakenchiku\ ;
+視力検査 > shiryokukensa\ ;
+小刀細工 > kogatanazaiku\ ;
+質疑応答 > shitsugioutou\ ;
+捜査当局 > sousatoukyoku\ ;
+照葉狂言 > terihakyougen\ ;
+出征軍人 > shusseigunjin\ ;
+放射能雲 > houshanougumo\ ;
+社会政策 > shakaiseisaku\ ;
+電極電位 > denkyokuden''i\ ;
+人工透析 > jinkoutouseki\ ;
+複合媒体 > fukugoubaitai\ ;
+住民投票 > juumintouhyou\ ;
+工業地帯 > kougyouchitai\ ;
+呼吸困難 > kokyuukon''nan\ ;
+養護施設 > yougoshisetsu\ ;
+輸出規制 > yushutsukisei\ ;
+戦力組成 > senryokusosei\ ;
+決選投票 > kessentouhyou\ ;
+統一見解 > touitsukenkai\ ;
+催眠療法 > saiminryouhou\ ;
+工業製品 > kougyouseihin\ ;
+役人根性 > yakuninkonjou\ ;
+独房監禁 > dokuboukankin\ ;
+導通抵抗 > doutsuuteikou\ ;
+協調主義 > kyouchoushugi\ ;
+会計報告 > kaikeihoukoku\ ;
+台湾海峡 > taiwankaikyou\ ;
+日清戦争 > nisshinsensou\ ;
+宣言発表 > sengenhappyou\ ;
+天体写真 > tentaishashin\ ;
+重量噸数 > juuryoutonsuu\ ;
+明鏡止水 > meikyoushisui\ ;
+年間計画 > nenkankeikaku\ ;
+口述筆記 > koujutsuhikki\ ;
+国際通貨 > kokusaitsuuka\ ;
+健康診断 > kenkoushindan\ ;
+桃山時代 > momoyamajidai\ ;
+職場結婚 > shokubakekkon\ ;
+環境問題 > kankyoumondai\ ;
+証人喚問 > shouninkanmon\ ;
+攻撃方向 > kougekihoukou\ ;
+競争売買 > kyousoubaibai\ ;
+著作権法 > chosakukenhou\ ;
+国際社会 > kokusaishakai\ ;
+新制高校 > shinseikoukou\ ;
+寄生虫症 > kiseichuushou\ ;
+中折帽子 > nakaoreboushi\ ;
+公開練習 > koukairenshuu\ ;
+経済政策 > keizaiseisaku\ ;
+合成写真 > gouseishashin\ ;
+新進作家 > shinshinsakka\ ;
+酸素供給 > sansokyoukyuu\ ;
+交通公社 > koutsuukousha\ ;
+活殺自在 > kassatsujizai\ ;
+電送写真 > densoushashin\ ;
+全知全能 > zenchizen''nou\ ;
+国勢調査 > kokuseichousa\ ;
+流通機構 > ryuutsuukikou\ ;
+兵器輸出 > heikiyushutsu\ ;
+天皇崇拝 > ten''nousuuhai\ ;
+保証人要 > hoshounin''you\ ;
+浮遊生物 > fuyuuseibutsu\ ;
+終身保険 > shuushinhoken\ ;
+懸賞論文 > kenshouronbun\ ;
+市場改革 > shijoukaikaku\ ;
+電力需要 > denryokujuyou\ ;
+臨床尋問 > rinshoujinmon\ ;
+陰極線管 > inkyokusenkan\ ;
+旋光分析 > senkoubunseki\ ;
+化石燃料 > kasekinenryou\ ;
+電信為替 > denshinkawase\ ;
+懐中電灯 > kaichuudentou\ ;
+才色兼備 > saishokukenbi\ ;
+指導要領 > shidouyouryou\ ;
+郵便年金 > yuubin''nenkin\ ;
+関連商品 > kanrenshouhin\ ;
+限界状況 > genkaijoukyou\ ;
+現在完了 > genzaikanryou\ ;
+制約伝搬 > seiyakudenpan\ ;
+丸一週間 > maruisshuukan\ ;
+工業団地 > kougyoudanchi\ ;
+極楽浄土 > gokurakujoudo\ ;
+化学分析 > kagakubunseki\ ;
+同点決勝 > doutenkesshou\ ;
+体外離脱 > taigairidatsu\ ;
+生物兵器 > seibutsuheiki\ ;
+単音節語 > tan''onsetsugo\ ;
+攻撃隊形 > kougekitaikei\ ;
+法人所得 > houjinshotoku\ ;
+大逆事件 > taigyakujiken\ ;
+原始教会 > genshikyoukai\ ;
+価格協定 > kakakukyoutei\ ;
+寓意小説 > guuishousetsu\ ;
+専門技術 > senmongijutsu\ ;
+拡張可能 > kakuchoukanou\ ;
+急進主義 > kyuushinshugi\ ;
+記念式典 > kinenshikiten\ ;
+競合脱線 > kyougoudassen\ ;
+暑中休暇 > shochuukyuuka\ ;
+繁文縟礼 > hanbunjokurei\ ;
+目標管理 > mokuhyoukanri\ ;
+方向観念 > houkoukan''nen\ ;
+海底電信 > kaiteidenshin\ ;
+業界動向 > gyoukaidoukou\ ;
+必要経費 > hitsuyoukeihi\ ;
+水玉模様 > mizutamamoyou\ ;
+出征家族 > shusseikazoku\ ;
+経常収支 > keijoushuushi\ ;
+地球科学 > chikyuukagaku\ ;
+情報技術 > jouhougijutsu\ ;
+空中分解 > kuuchuubunkai\ ;
+強制労働 > kyouseiroudou\ ;
+階級意識 > kaikyuuishiki\ ;
+博士論文 > hakushironbun\ ;
+人格形成 > jinkakukeisei\ ;
+絹糸紡績 > kenshibouseki\ ;
+職場闘争 > shokubatousou\ ;
+教育学部 > kyouikugakubu\ ;
+変速装置 > hensokusouchi\ ;
+真円真珠 > shin''enshinju\ ;
+国民経済 > kokuminkeizai\ ;
+内面描写 > naimenbyousha\ ;
+媒体終端 > baitaishuutan\ ;
+心理療法 > shinriryouhou\ ;
+性的関係 > seitekikankei\ ;
+無銭飲食 > musen''inshoku\ ;
+範疇文法 > hanchuubunpou\ ;
+長期借款 > choukishakkan\ ;
+全体集合 > zentaishuugou\ ;
+右小括弧 > migishoukakko\ ;
+仮想敵国 > kasoutekikoku\ ;
+極楽往生 > gokurakuoujou\ ;
+初等教育 > shotoukyouiku\ ;
+行政命令 > gyouseimeirei\ ;
+対地攻撃 > taichikougeki\ ;
+自然描写 > shizenbyousha\ ;
+金融資本 > kin''yuushihon\ ;
+無能力者 > munouryokusha\ ;
+化学工業 > kagakukougyou\ ;
+行政区画 > gyouseikukaku\ ;
+学習辞典 > gakushuujiten\ ;
+閨閥政治 > keibatsuseiji\ ;
+事業拡充 > jigyoukakujuu\ ;
+農村工業 > nousonkougyou\ ;
+秋雨前線 > akisamezensen\ ;
+共同農場 > kyoudounoujou\ ;
+女権拡張 > jokenkakuchou\ ;
+講習会場 > koushuukaijou\ ;
+汚染物質 > osenbusshitsu\ ;
+状況判断 > joukyouhandan\ ;
+当該官庁 > tougaikanchou\ ;
+仲介貿易 > chuukaiboueki\ ;
+国内市場 > kokunaishijou\ ;
+一枚看板 > ichimaikanban\ ;
+無線通信 > musentsuushin\ ;
+経済大国 > keizaitaikoku\ ;
+反社会的 > hanshakaiteki\ ;
+一利一害 > ichiriichigai\ ;
+二律背反 > niritsuhaihan\ ;
+復元作業 > fukugensagyou\ ;
+人間爆弾 > ningenbakudan\ ;
+季節労働 > kisetsuroudou\ ;
+陸軍大臣 > rikugundaijin\ ;
+断抵抗角 > danteikoukaku\ ;
+通信機関 > tsuushinkikan\ ;
+写真凸版 > shashintoppan\ ;
+化学療法 > kagakuryouhou\ ;
+綱紀粛正 > koukishukusei\ ;
+税制改革 > zeiseikaikaku\ ;
+調停裁判 > chouteisaiban\ ;
+無罪判決 > muzaihanketsu\ ;
+軍事戦略 > gunjisenryaku\ ;
+臨床試験 > rinshoushiken\ ;
+防止指針 > boushishishin\ ;
+気象観測 > kishoukansoku\ ;
+舞台生活 > butaiseikatsu\ ;
+大名旅行 > daimyouryokou\ ;
+作業療法 > sagyouryouhou\ ;
+外国為替 > gaikokukawase\ ;
+都立高校 > toritsukoukou\ ;
+形式主義 > keishikishugi\ ;
+化学工学 > kagakukougaku\ ;
+角運動量 > kakuundouryou\ ;
+完全無欠 > kanzenmuketsu\ ;
+政策決定 > seisakukettei\ ;
+循環小数 > junkanshousuu\ ;
+大韓民国 > daikanminkoku\ ;
+適用業務 > tekiyougyoumu\ ;
+戦争文学 > sensoubungaku\ ;
+九天直下 > kyuutenchokka\ ;
+面従腹背 > menjuufukuhai\ ;
+確保失敗 > kakuhoshippai\ ;
+共通言語 > kyoutsuugengo\ ;
+強制処分 > kyouseishobun\ ;
+断崖絶壁 > dangaizeppeki\ ;
+産業社会 > sangyoushakai\ ;
+各種学校 > kakushugakkou\ ;
+分解写真 > bunkaishashin\ ;
+印刷媒体 > insatsubaitai\ ;
+研究所報 > kenkyuushohou\ ;
+乱射乱撃 > ransharangeki\ ;
+棒腹絶倒 > houfukuzettou\ ;
+特許侵害 > tokkyoshingai\ ;
+定額貯金 > teigakuchokin\ ;
+公衆伝動 > koushuudendou\ ;
+鉄道馬車 > tetsudoubasha\ ;
+内国為替 > naikokukawase\ ;
+種種様様 > shujusamazama\ ;
+喜色満面 > kishokumanmen\ ;
+弁別素性 > benbetsusosei\ ;
+作戦命令 > sakusenmeirei\ ;
+議長職権 > gichoushokken\ ;
+啓蒙思潮 > keimoushichou\ ;
+公娼全廃 > koushouzenpai\ ;
+対面交通 > taimenkoutsuu\ ;
+一問一答 > ichimon''ittou\ ;
+電子密度 > denshimitsudo\ ;
+超低価格 > chouteikakaku\ ;
+一括売買 > ikkatsubaibai\ ;
+制約条件 > seiyakujouken\ ;
+休戦会談 > kyuusenkaidan\ ;
+版権侵害 > hankenshingai\ ;
+隔離病棟 > kakuribyoutou\ ;
+生鮮料品 > seisenryouhin\ ;
+上昇傾向 > joushoukeikou\ ;
+不法入国 > fuhounyuugoku\ ;
+教養学部 > kyouyougakubu\ ;
+高信頼性 > koushinraisei\ ;
+家宅捜索 > katakusousaku\ ;
+計画経済 > keikakukeizai\ ;
+三軸試験 > sanjikushiken\ ;
+最終段階 > saishuudankai\ ;
+収入印紙 > shuunyuuinshi\ ;
+半熟練工 > hanjukurenkou\ ;
+写真判定 > shashinhantei\ ;
+経済観念 > keizaikan''nen\ ;
+賃金水準 > chinginsuijun\ ;
+営業収支 > eigyoushuushi\ ;
+三相交流 > sansoukouryuu\ ;
+経営戦略 > keieisenryaku\ ;
+春夏秋冬 > shunkashuutou\ ;
+焦点深度 > shoutenshindo\ ;
+一時所得 > ichijishotoku\ ;
+杉花粉症 > sugikafunshou\ ;
+人民投票 > jinmintouhyou\ ;
+合従連衡 > gasshourenkou\ ;
+烏野豌豆 > karasunoendou\ ;
+無芸大食 > mugeitaishoku\ ;
+国際連合 > kokusairengou\ ;
+熱交換器 > netsukoukanki\ ;
+宇宙開発 > uchuukaihatsu\ ;
+漢文訓読 > kanbunkundoku\ ;
+空間感覚 > kuukankankaku\ ;
+二人三脚 > nininsankyaku\ ;
+権力主義 > kenryokushugi\ ;
+募集広告 > boshuukoukoku\ ;
+学習理論 > gakushuuriron\ ;
+駐車禁止 > chuushakinshi\ ;
+共同宣言 > kyoudousengen\ ;
+天地神明 > tenchishinmei\ ;
+詳細情報 > shousaijouhou\ ;
+牛飲馬食 > gyuuinbashoku\ ;
+金城鉄壁 > kinjouteppeki\ ;
+集中講義 > shuuchuukougi\ ;
+変形虫類 > henkeichuurui\ ;
+公的年金 > koutekinenkin\ ;
+週刊雑誌 > shuukanzasshi\ ;
+紡績工場 > bousekikoujou\ ;
+初等数学 > shotousuugaku\ ;
+残存日数 > zanson''nissuu\ ;
+国際展開 > kokusaitenkai\ ;
+年功序列 > nenkoujoretsu\ ;
+商業都市 > shougyoutoshi\ ;
+中途退学 > chuutotaigaku\ ;
+共同会見 > kyoudoukaiken\ ;
+憲法学者 > kenpougakusha\ ;
+急転直下 > kyuutenchokka\ ;
+原子爆弾 > genshibakudan\ ;
+登山鉄道 > tozantetsudou\ ;
+物理化学 > butsurikagaku\ ;
+給水制限 > kyuusuiseigen\ ;
+朝鮮戦争 > chousensensou\ ;
+嫌気生物 > kenkiseibutsu\ ;
+選択状態 > sentakujoutai\ ;
+高峰八座 > kouhouhachiza\ ;
+不消化物 > fushoukabutsu\ ;
+法的文書 > houtekibunsho\ ;
+秘密選挙 > himitsusenkyo\ ;
+地球化学 > chikyuukagaku\ ;
+新熱帯区 > shin''nettaiku\ ;
+結婚指輪 > kekkon''yubiwa\ ;
+善隣友好 > zenrin''yuukou\ ;
+受取手形 > uketoritegata\ ;
+決算報告 > kessanhoukoku\ ;
+心理学者 > shinrigakusha\ ;
+論理形式 > ronrikeishiki\ ;
+低頭平身 > teitouheishin\ ;
+混合農業 > kongounougyou\ ;
+文芸作品 > bungeisakuhin\ ;
+有閑階級 > yuukankaikyuu\ ;
+友好条約 > yuukoujouyaku\ ;
+則天去私 > sokutenkyoshi\ ;
+写実主義 > shajitsushugi\ ;
+国際市場 > kokusaishijou\ ;
+二重生活 > nijuuseikatsu\ ;
+臨機目標 > rinkimokuhyou\ ;
+商業登記 > shougyoutouki\ ;
+黄色人種 > oushokujinshu\ ;
+周波変調 > shuuhahenchou\ ;
+欠陥商品 > kekkanshouhin\ ;
+従属変数 > juuzokuhensuu\ ;
+既約表現 > kiyakuhyougen\ ;
+不良少年 > furyoushounen\ ;
+測量技師 > sokuryougishi\ ;
+森羅万象 > shinrabanshou\ ;
+産業構造 > sangyoukouzou\ ;
+欧州諸国 > oushuushokoku\ ;
+通勤地獄 > tsuukinjigoku\ ;
+昼間人口 > chuukanjinkou\ ;
+性格判断 > seikakuhandan\ ;
+信頼関係 > shinraikankei\ ;
+同期通信 > doukitsuushin\ ;
+三重焦点 > sanjuushouten\ ;
+投票総数 > touhyousousuu\ ;
+大幅刷新 > oohabasasshin\ ;
+切断患者 > setsudankanja\ ;
+袖手傍観 > shuushuboukan\ ;
+拍手喝采 > hakushukassai\ ;
+作業仮説 > sagyoukasetsu\ ;
+経済成長 > keizaiseichou\ ;
+合成宝石 > gouseihouseki\ ;
+結締組織 > ketteisoshiki\ ;
+円錐曲線 > ensuikyokusen\ ;
+聖体拝領 > seitaihairyou\ ;
+庶民金融 > shominkin''yuu\ ;
+体積抵抗 > taisekiteikou\ ;
+協同組合 > kyoudoukumiai\ ;
+先住民族 > senjuuminzoku\ ;
+統一戦線 > touitsusensen\ ;
+同時通訳 > doujitsuuyaku\ ;
+周知徹底 > shuuchitettei\ ;
+艱難辛苦 > kan''nanshinku\ ;
+政党内閣 > seitounaikaku\ ;
+現地報告 > genchihoukoku\ ;
+懸賞問題 > kenshoumondai\ ;
+傭船契約 > yousenkeiyaku\ ;
+今上天皇 > kinjouten''nou\ ;
+他覚症状 > takakushoujou\ ;
+欠食児童 > kesshokujidou\ ;
+娯楽番組 > gorakubangumi\ ;
+精神医学 > seishin''igaku\ ;
+内容証明 > naiyoushoumei\ ;
+出港停止 > shukkouteishi\ ;
+夫婦約束 > fuufuyakusoku\ ;
+旅行業者 > ryokougyousha\ ;
+使徒信経 > shitoshinkyou\ ;
+外資導入 > gaishidounyuu\ ;
+成人教育 > seijinkyouiku\ ;
+公式主義 > koushikishugi\ ;
+一獲千金 > ikkakkusenkin\ ;
+複数業務 > fukusuugyoumu\ ;
+禁欲主義 > kin''yokushugi\ ;
+空襲警報 > kuushuukeihou\ ;
+産業再生 > sangyousaisei\ ;
+賃貸価格 > chintaikakaku\ ;
+戦闘前哨 > sentouzenshou\ ;
+一言一行 > ichigen''ikkou\ ;
+吹奏楽団 > suisougakudan\ ;
+直線距離 > chokusenkyori\ ;
+近親結婚 > kinshinkekkon\ ;
+米英仏蘭 > beieibutsuran\ ;
+共同作業 > kyoudousagyou\ ;
+減反政策 > gentanseisaku\ ;
+心理作戦 > shinrisakusen\ ;
+心臓移植 > shinzouishoku\ ;
+有限責任 > yuugensekinin\ ;
+組織再編 > soshikisaihen\ ;
+福音教会 > fukuinkyoukai\ ;
+関係副詞 > kankeifukushi\ ;
+史料編纂 > shiryouhensan\ ;
+猟官運動 > ryoukan''undou\ ;
+肉体労働 > nikutairoudou\ ;
+参照文献 > sanshoubunken\ ;
+音楽監督 > ongakukantoku\ ;
+平身低頭 > heishinteitou\ ;
+共産分子 > kyousanbunshi\ ;
+予約出版 > yoyakushuppan\ ;
+炭水化物 > tansuikabutsu\ ;
+近代文学 > kindaibungaku\ ;
+地方官庁 > chihoukanchou\ ;
+四分五裂 > shibungoretsu\ ;
+経済回復 > keizaikaifuku\ ;
+実存主義 > jitsuzonshugi\ ;
+恒温動物 > kouondoubutsu\ ;
+野菜一皿 > yasaihitosara\ ;
+形式論理 > keishikironri\ ;
+大学浪人 > daigakurounin\ ;
+暫定協定 > zanteikyoutei\ ;
+放送大学 > housoudaigaku\ ;
+法律制度 > houritsuseido\ ;
+信用金庫 > shin''youkinko\ ;
+有名無実 > yuumeimujitsu\ ;
+終身会員 > shuushinkaiin\ ;
+三角関数 > sankakukansuu\ ;
+笑止千万 > shoushisenban\ ;
+文学博士 > bungakuhakase\ ;
+庭先相場 > niwasakisouba\ ;
+消費者側 > shouhishagawa\ ;
+精神構造 > seishinkouzou\ ;
+鉄骨工事 > tekkotsukouji\ ;
+国利民福 > kokuriminpuku\ ;
+軽佻浮薄 > keichoufuhaku\ ;
+沖積平野 > chuusekiheiya\ ;
+酪農製品 > rakunouseihin\ ;
+謝罪広告 > shazaikoukoku\ ;
+富国強兵 > fukokukyouhei\ ;
+外郭団体 > gaikakudantai\ ;
+共同企業 > kyoudoukigyou\ ;
+階級社会 > kaikyuushakai\ ;
+対外政策 > taigaiseisaku\ ;
+精霊信仰 > seireishinkou\ ;
+GB理論 > ji\ ̄bi\ ̄riron\ ;
+春風駘蕩 > shunpuutaitou\ ;
+死刑執行 > shikeishikkou\ ;
+二者択一 > nishatakuitsu\ ;
+酸性反応 > sanseihan''nou\ ;
+水道料金 > suidouryoukin\ ;
+空気力学 > kuukirikigaku\ ;
+商売気質 > shoubaikatagi\ ;
+記録文学 > kirokubungaku\ ;
+彼方此方 > achirakochira\ ;
+立身出世 > risshinshusse\ ;
+正金銀行 > shoukinginkou\ ;
+共済事業 > kyousaijigyou\ ;
+先行技術 > senkougijutsu\ ;
+図書目録 > toshomokuroku\ ;
+証拠隠滅 > shoukoinmetsu\ ;
+競争関係 > kyousoukankei\ ;
+事前検閲 > jizenken''etsu\ ;
+行政処分 > gyouseishobun\ ;
+全面広告 > zenmenkoukoku\ ;
+国務長官 > kokumuchoukan\ ;
+精神病院 > seishinbyouin\ ;
+四十九日 > shijuukunichi\ ;
+杓子定規 > shakushijougi\ ;
+可塑物質 > kasobusshitsu\ ;
+半農半漁 > han''nouhangyo\ ;
+暴飲暴食 > bouinboushoku\ ;
+研究分野 > kenkyuubun''ya\ ;
+人口密度 > jinkoumitsudo\ ;
+人身売買 > jinshinbaibai\ ;
+殺人未遂 > satsujinmisui\ ;
+足利時代 > ashikagajidai\ ;
+弾着距離 > danchakukyori\ ;
+動物検査 > doubutsukensa\ ;
+薬餌療法 > yakujiryouhou\ ;
+人間国宝 > ningenkokuhou\ ;
+緊要地形 > kin''youchikei\ ;
+市場成長 > shijouseichou\ ;
+指名投票 > shimeitouhyou\ ;
+呉越同舟 > goetsudoushuu\ ;
+宅地造成 > takuchizousei\ ;
+精神労働 > seishinroudou\ ;
+家族計画 > kazokukeikaku\ ;
+開口一番 > kaikouichiban\ ;
+直系卑属 > chokkeihizoku\ ;
+割賦方式 > kappuhoushiki\ ;
+勤労大衆 > kinroutaishuu\ ;
+未収入金 > mishuunyuukin\ ;
+風俗営業 > fuuzokueigyou\ ;
+民俗音楽 > minzokuongaku\ ;
+海水浴場 > kaisuiyokujou\ ;
+連合作戦 > rengousakusen\ ;
+両蓋時計 > ryoubutadokei\ ;
+主客転倒 > shukakutentou\ ;
+損益勘定 > son''ekikanjou\ ;
+動力降下 > douryokukouka\ ;
+三角闘争 > sankakutousou\ ;
+退学処分 > taigakushobun\ ;
+実験材料 > jikkenzairyou\ ;
+重要産業 > juuyousangyou\ ;
+液体燃料 > ekitainenryou\ ;
+伝道集会 > dendoushuukai\ ;
+八面六臂 > hachimenroppi\ ;
+才気煥発 > saikikanpatsu\ ;
+感情表現 > kanjouhyougen\ ;
+人種差別 > jinshusabetsu\ ;
+英国発音 > eikokuhatsuon\ ;
+無限数列 > mugensuuretsu\ ;
+悪逆無道 > akugyakumudou\ ;
+熟慮断行 > jukuryodankou\ ;
+直交座標 > chokkouzahyou\ ;
+北太平洋 > kitataiheiyou\ ;
+男声合唱 > danseigasshou\ ;
+胃腸病学 > ichoubyougaku\ ;
+三角関係 > sankakukankei\ ;
+民族音楽 > minzokuongaku\ ;
+単独会見 > tandokukaiken\ ;
+財産相続 > zaisansouzoku\ ;
+上智大学 > jouchidaigaku\ ;
+僧庵生活 > souanseikatsu\ ;
+法律用語 > houritsuyougo\ ;
+雌雄選択 > shiyuusentaku\ ;
+百花繚乱 > hyakkaryouran\ ;
+音楽療法 > ongakuryouhou\ ;
+住民登録 > juumintouroku\ ;
+断層写真 > dansoushashin\ ;
+占領地帯 > senryouchitai\ ;
+薬品会社 > yakuhingaisha\ ;
+出口調査 > deguchichousa\ ;
+能動免疫 > noudoumen''eki\ ;
+在留邦人 > zairyuuhoujin\ ;
+麦藁細工 > mugiwarasaiku\ ;
+工芸美術 > kougeibijutsu\ ;
+航空攻撃 > koukuukougeki\ ;
+重量選手 > juuryousenshu\ ;
+赤立羽蝶 > akatatehachou\ ;
+愛鳥週間 > aichoushuukan\ ;
+工業化学 > kougyoukagaku\ ;
+技術提携 > gijutsuteikei\ ;
+中性子星 > chuuseishisei\ ;
+公共事業 > koukyoujigyou\ ;
+上越本線 > jouetsuhonsen\ ;
+無償契約 > mushoukeiyaku\ ;
+閃光電球 > senkoudenkyuu\ ;
+国籍言語 > kokusekigengo\ ;
+定温動物 > teiondoubutsu\ ;
+空前絶後 > kuuzenzetsugo\ ;
+武力外交 > buryokugaikou\ ;
+戸籍抄本 > kosekishouhon\ ;
+朝鮮半島 > chousenhantou\ ;
+非常召集 > hijoushoushuu\ ;
+全般前哨 > zenpanzenshou\ ;
+大乗仏教 > daijoubukkyou\ ;
+分析試験 > bunsekishiken\ ;
+幽霊屋敷 > yuureiyashiki\ ;
+有産階級 > yuusankaikyuu\ ;
+権力政治 > kenryokuseiji\ ;
+脅迫電話 > kyouhakudenwa\ ;
+船荷証券 > funanishouken\ ;
+手旗信号 > tebatashingou\ ;
+栄養失調 > eiyoushitchou\ ;
+作況指数 > sakkyoushisuu\ ;
+相互通信 > sougotsuushin\ ;
+表層雪崩 > hyousounadare\ ;
+災害対策 > saigaitaisaku\ ;
+事実調査 > jijitsuchousa\ ;
+日経新聞 > nikkeishinbun\ ;
+中間選挙 > chuukansenkyo\ ;
+市長選挙 > shichousenkyo\ ;
+沈降海岸 > chinkoukaigan\ ;
+社会福祉 > shakaifukushi\ ;
+論功行賞 > ronkoukoushou\ ;
+実践躬行 > jissenkyuukou\ ;
+正副二通 > seifukunitsuu\ ;
+交感神経 > koukanshinkei\ ;
+消費革命 > shouhikakumei\ ;
+専任講師 > sen''ninkoushi\ ;
+大量生産 > tairyouseisan\ ;
+最高機密 > saikoukimitsu\ ;
+管弦楽法 > kangengakuhou\ ;
+新品同様 > shinpindouyou\ ;
+備荒貯蓄 > bikouchochiku\ ;
+薄志弱行 > hakushijakkou\ ;
+勤労階級 > kinroukaikyuu\ ;
+日印関係 > nichiinkankei\ ;
+長期計画 > choukikeikaku\ ;
+不時着陸 > fujichakuriku\ ;
+排泄器官 > haisetsukikan\ ;
+英文解釈 > eibunkaishaku\ ;
+免責条項 > mensekijoukou\ ;
+鉄道線路 > tetsudousenro\ ;
+攻撃態勢 > kougekitaisei\ ;
+定期昇給 > teikishoukyuu\ ;
+記述文法 > kijutsubunpou\ ;
+臣籍降下 > shinsekikouka\ ;
+炭酸飲料 > tansan''inryou\ ;
+市場拡大 > shijoukakudai\ ;
+精密機械 > seimitsukikai\ ;
+機動警察 > kidoukeisatsu\ ;
+年間収益 > nenkanshuueki\ ;
+仲裁裁定 > chuusaisaitei\ ;
+偵察要員 > teisatsuyouin\ ;
+文藝春秋 > bungeishunjuu\ ;
+人形芝居 > ningyoushibai\ ;
+水中眼鏡 > suichuumegane\ ;
+公序良俗 > koujoryouzoku\ ;
+婚前交渉 > konzenkoushou\ ;
+太陽黒点 > taiyoukokuten\ ;
+上御一人 > kamigoichinin\ ;
+主要工業 > shuyoukougyou\ ;
+下等動物 > katoudoubutsu\ ;
+臥薪嘗胆 > gashinshoutan\ ;
+診療支援 > shinryoushien\ ;
+転地療養 > tenchiryouyou\ ;
+万能選手 > ban''nousenshu\ ;
+教会音楽 > kyoukaiongaku\ ;
+千載一遇 > senzaiichiguu\ ;
+売買契約 > baibaikeiyaku\ ;
+住宅地帯 > juutakuchitai\ ;
+減速装置 > gensokusouchi\ ;
+住宅問題 > juutakumondai\ ;
+免疫血清 > men''ekikessei\ ;
+核反応炉 > kakuhan''nouro\ ;
+放射線学 > houshasengaku\ ;
+流通経路 > ryuutsuukeiro\ ;
+尋常一様 > jinjouichiyou\ ;
+国有財産 > kokuyuuzaisan\ ;
+市民階級 > shiminkaikyuu\ ;
+言語知識 > gengochishiki\ ;
+公共放送 > koukyouhousou\ ;
+斑状組織 > hanjousoshiki\ ;
+重爆撃機 > juubakugekiki\ ;
+婚外交渉 > kongaikoushou\ ;
+仲裁裁判 > chuusaisaiban\ ;
+侯爵夫人 > koushakufujin\ ;
+有色野菜 > yuushokuyasai\ ;
+集団訴訟 > shuudansoshou\ ;
+一次産業 > ichijisangyou\ ;
+練習不足 > renshuubusoku\ ;
+商船学校 > shousengakkou\ ;
+麦藁蜻蛉 > mugiwaratonbo\ ;
+有限集合 > yuugenshuugou\ ;
+追加料金 > tsuikaryoukin\ ;
+Π中間子 > paichuukanshi\ ;
+遠隔教育 > enkakukyouiku\ ;
+脳脊髄液 > nousekizuieki\ ;
+東西南北 > touzainanboku\ ;
+許容線量 > kyoyousenryou\ ;
+正札値段 > shoufudanedan\ ;
+差別関税 > sabetsukanzei\ ;
+中等学校 > chuutougakkou\ ;
+管弦楽団 > kangengakudan\ ;
+寄生生物 > kiseiseibutsu\ ;
+主権回復 > shukenkaifuku\ ;
+両部神道 > ryoubushintou\ ;
+終業時間 > shuugyoujikan\ ;
+絹布一巻 > kenpuhitomaki\ ;
+過圧密比 > kaatsumitsuhi\ ;
+自然選択 > shizensentaku\ ;
+反応速度 > han''nousokudo\ ;
+偵察衛星 > teisatsueisei\ ;
+正副議長 > seifukugichou\ ;
+神前結婚 > shinzenkekkon\ ;
+法的手段 > houtekishudan\ ;
+作業領域 > sagyouryouiki\ ;
+年金証書 > nenkinshousho\ ;
+交通妨害 > koutsuubougai\ ;
+町村合併 > chousongappei\ ;
+教会旋法 > kyoukaisenpou\ ;
+幕藩体制 > bakuhantaisei\ ;
+第一印象 > daiichiinshou\ ;
+真空包装 > shinkuuhousou\ ;
+監査証跡 > kansashouseki\ ;
+誘導電流 > yuudoudenryuu\ ;
+復旧作業 > fukkyuusagyou\ ;
+損害賠償 > songaibaishou\ ;
+想像妊娠 > souzouninshin\ ;
+虚心坦懐 > kyoshintankai\ ;
+耐震構造 > taishinkouzou\ ;
+有限級数 > yuugenkyuusuu\ ;
+国土計画 > kokudokeikaku\ ;
+生存競争 > seizonkyousou\ ;
+市民革命 > shiminkakumei\ ;
+大統領選 > daitouryousen\ ;
+補習教育 > hoshuukyouiku\ ;
+司令長官 > shireichoukan\ ;
+賃金体系 > chingintaikei\ ;
+全人教育 > zenjinkyouiku\ ;
+官房長官 > kanbouchoukan\ ;
+企業秘密 > kigyouhimitsu\ ;
+殺人事件 > satsujinjiken\ ;
+凶悪犯罪 > kyouakuhanzai\ ;
+天然資源 > ten''nenshigen\ ;
+百姓一揆 > hyakushouikki\ ;
+総合大学 > sougoudaigaku\ ;
+仏頂尊勝 > buchousonshou\ ;
+千差万別 > sensabanbetsu\ ;
+網状組織 > moujousoshiki\ ;
+第一部長 > daiichibuchou\ ;
+準準決勝 > junjunkesshou\ ;
+大和民族 > yamatominzoku\ ;
+年年歳歳 > nen''nensaisai\ ;
+地殻変動 > chikakuhendou\ ;
+財政改革 > zaiseikaikaku\ ;
+共同計算 > kyoudoukeisan\ ;
+写真電送 > shashindensou\ ;
+不良診断 > furyoushindan\ ;
+水産大学 > suisandaigaku\ ;
+単式火山 > tanshikikazan\ ;
+一分一厘 > ichibuichirin\ ;
+実地検証 > jitchikenshou\ ;
+北清事変 > hokushinjihen\ ;
+人面獣心 > ninmenjuushin\ ;
+計画段階 > keikakudankai\ ;
+社員食堂 > shainshokudou\ ;
+捧腹絶倒 > houfukuzettou\ ;
+郵便料金 > yuubinryoukin\ ;
+五十三次 > gojuusantsugi\ ;
+優勝劣敗 > yuushoureppai\ ;
+快速列車 > kaisokuressha\ ;
+難民条約 > nanminjouyaku\ ;
+国際放送 > kokusaihousou\ ;
+六十余州 > rokujuuyoshuu\ ;
+急行列車 > kyuukouressha\ ;
+森林地帯 > shinrinchitai\ ;
+鎖国政策 > sakokuseisaku\ ;
+具象美術 > gushoubijutsu\ ;
+懐石料理 > kaisekiryouri\ ;
+簡易食堂 > kan''ishokudou\ ;
+暗黒大陸 > ankokutairiku\ ;
+反動革命 > handoukakumei\ ;
+六根清浄 > rokkonshoujou\ ;
+商業主義 > shougyoushugi\ ;
+信頼醸成 > shinraijousei\ ;
+共同声明 > kyoudouseimei\ ;
+割引切符 > waribikikippu\ ;
+冷却期間 > reikyakukikan\ ;
+九死一生 > kyuushiisshou\ ;
+中華民国 > chuukaminkoku\ ;
+拡声装置 > kakuseisouchi\ ;
+道路建設 > dourokensetsu\ ;
+人造宝石 > jinzouhouseki\ ;
+輸出保険 > yushutsuhoken\ ;
+必修科目 > hisshuukamoku\ ;
+給与所得 > kyuuyoshotoku\ ;
+歴史学派 > rekishigakuha\ ;
+等差数列 > tousasuuretsu\ ;
+君子豹変 > kunshihyouhen\ ;
+下表参照 > kahyousanshou\ ;
+勢力範囲 > seiryokuhan''i\ ;
+通貨政策 > tsuukaseisaku\ ;
+独占企業 > dokusenkigyou\ ;
+特権階級 > tokkenkaikyuu\ ;
+正規曲線 > seikikyokusen\ ;
+傍聴無料 > bouchoumuryou\ ;
+産業資本 > sangyoushihon\ ;
+立石電機 > tateishidenki\ ;
+夜間中学 > yakanchuugaku\ ;
+貿易摩擦 > bouekimasatsu\ ;
+年輪史学 > nenrinshigaku\ ;
+機械翻訳 > kikaihon''yaku\ ;
+徹頭徹尾 > tettoutetsubi\ ;
+金科玉条 > kinkagyokujou\ ;
+民間療法 > minkanryouhou\ ;
+情況証拠 > joukyoushouko\ ;
+心悸亢進 > shinkikoushin\ ;
+定性分析 > teiseibunseki\ ;
+囃子言葉 > hayashikotoba\ ;
+特許技術 > tokkyogijutsu\ ;
+報道写真 > houdoushashin\ ;
+最低賃金 > saiteichingin\ ;
+瞬間電断 > shunkandendan\ ;
+年頭教書 > nentoukyousho\ ;
+東洋段通 > touyoudantsuu\ ;
+独占資本 > dokusenshihon\ ;
+東方教会 > touhoukyoukai\ ;
+自覚症状 > jikakushoujou\ ;
+天体観測 > tentaikansoku\ ;
+群集行動 > gunshuukoudou\ ;
+衆人環視 > shuujinkanshi\ ;
+迷走神経 > meisoushinkei\ ;
+戦略兵器 > senryakuheiki\ ;
+先制攻撃 > senseikougeki\ ;
+有給休暇 > yuukyuukyuuka\ ;
+見学旅行 > kengakuryokou\ ;
+国内経済 > kokunaikeizai\ ;
+対空射撃 > taikuushageki\ ;
+比較対照 > hikakutaishou\ ;
+市中銀行 > shichuuginkou\ ;
+定点観測 > teitenkansoku\ ;
+促成栽培 > sokuseisaibai\ ;
+賃金格差 > chinginkakusa\ ;
+支配階級 > shihaikaikyuu\ ;
+二重露出 > nijuuroshutsu\ ;
+動脈硬化 > doumyakukouka\ ;
+隣接部隊 > rinsetsubutai\ ;
+建設機械 > kensetsukikai\ ;
+上層階級 > jousoukaikyuu\ ;
+三拝九拝 > sanpaikyuuhai\ ;
+特殊法人 > tokushuhoujin\ ;
+士魂商才 > shikonshousai\ ;
+虚心担懐 > kyoshintankai\ ;
+傷病捕虜 > shoubyouhoryo\ ;
+無性生殖 > museiseishoku\ ;
+財政政策 > zaiseiseisaku\ ;
+陸上競技 > rikujoukyougi\ ;
+博覧強記 > hakurankyouki\ ;
+人権侵害 > jinkenshingai\ ;
+総領息子 > souryoumusuko\ ;
+菜食主義 > saishokushugi\ ;
+赤外発散 > sekigaihassan\ ;
+衛星通信 > eiseitsuushin\ ;
+人員削減 > jin''insakugen\ ;
+率先躬行 > sossenkyuukou\ ;
+免税所得 > menzeishotoku\ ;
+防縮加工 > boushukukakou\ ;
+複式簿記 > fukushikiboki\ ;
+責任分担 > sekininbuntan\ ;
+武力行使 > buryokukoushi\ ;
+番組編成 > bangumihensei\ ;
+休息時間 > kyuusokujikan\ ;
+二重関節 > nijuukansetsu\ ;
+観光産業 > kankousangyou\ ;
+博引旁証 > hakuinboushou\ ;
+共販会社 > kyouhangaisha\ ;
+揚陸艦艇 > yourikukantei\ ;
+主客顛倒 > shukakutentou\ ;
+公害対策 > kougaitaisaku\ ;
+陽動作戦 > youdousakusen\ ;
+誘拐犯人 > yuukaihan''nin\ ;
+内臓疾患 > naizoushikkan\ ;
+修士論文 > shuushironbun\ ;
+高等教育 > koutoukyouiku\ ;
+測量機械 > sokuryoukikai\ ;
+霊感商法 > reikanshouhou\ ;
+呪物崇拝 > jubutsusuuhai\ ;
+文人墨客 > bunjinbokkaku\ ;
+承知之助 > shouchinosuke\ ;
+越年草本 > etsunensouhon\ ;
+通勤列車 > tsuukinressha\ ;
+精進料理 > shoujinryouri\ ;
+主力部隊 > shuryokubutai\ ;
+郷土文学 > kyoudobungaku\ ;
+期末試験 > kimatsushiken\ ;
+連邦首相 > renpoushushou\ ;
+情報工学 > jouhoukougaku\ ;
+七分三分 > shichibusanbu\ ;
+公爵夫人 > koushakufujin\ ;
+参考資料 > sankoushiryou\ ;
+独断専行 > dokudansenkou\ ;
+入学考査 > nyuugakukousa\ ;
+遭難信号 > sounanshingou\ ;
+流動資産 > ryuudoushisan\ ;
+下四半期 > shimoshihanki\ ;
+選択科目 > sentakukamoku\ ;
+情報検索 > jouhoukensaku\ ;
+頂上会談 > choujoukaidan\ ;
+共済組合 > kyousaikumiai\ ;
+参考書目 > sankoushomoku\ ;
+治安警察 > chiankeisatsu\ ;
+興業銀行 > kougyouginkou\ ;
+行政書士 > gyouseishoshi\ ;
+関連項目 > kanrenkoumoku\ ;
+難行苦行 > nangyoukugyou\ ;
+預金通帳 > yokintsuuchou\ ;
+網膜剥離 > moumakuhakuri\ ;
+輸出検査 > yushutsukensa\ ;
+指定銘柄 > shiteimeigara\ ;
+酒池肉林 > shuchinikurin\ ;
+優等賞状 > yuutoushoujou\ ;
+黄金分割 > ougonbunkatsu\ ;
+修繕工場 > shuuzenkoujou\ ;
+二者選一 > nishasen''itsu\ ;
+状況証拠 > joukyoushouko\ ;
+菌類学者 > kinruigakusha\ ;
+仲裁々判 > chuusaisaiban\ ;
+外国郵便 > gaikokuyuubin\ ;
+交通地獄 > koutsuujigoku\ ;
+集団結婚 > shuudankekkon\ ;
+愛玩動物 > aigandoubutsu\ ;
+間接話法 > kansetsuwahou\ ;
+学生部長 > gakuseibuchou\ ;
+雲形定規 > kumogatajougi\ ;
+屋外広告 > okugaikoukoku\ ;
+亡命文学 > boumeibungaku\ ;
+連続関数 > renzokukansuu\ ;
+筆跡鑑定 > hissekikantei\ ;
+廃物利用 > haibutsuriyou\ ;
+車両会社 > sharyougaisha\ ;
+麻薬常習 > mayakujoushuu\ ;
+不得要領 > futokuyouryou\ ;
+山岳地帯 > sangakuchitai\ ;
+問題領域 > mondairyouiki\ ;
+個別販売 > kobetsuhanbai\ ;
+平衡感覚 > heikoukankaku\ ;
+内国郵便 > naikokuyuubin\ ;
+報道番組 > houdoubangumi\ ;
+共同組合 > kyoudoukumiai\ ;
+紙上計画 > shijoukeikaku\ ;
+二重国籍 > nijuukokuseki\ ;
+行政訴訟 > gyouseisoshou\ ;
+絶縁抵抗 > zetsuenteikou\ ;
+匿名批評 > tokumeihihyou\ ;
+長期国債 > choukikokusai\ ;
+光線療法 > kousenryouhou\ ;
+流動資本 > ryuudoushihon\ ;
+証券市場 > shoukenshijou\ ;
+建設工事 > kensetsukouji\ ;
+変態性欲 > hentaiseiyoku\ ;
+空中細菌 > kuuchuusaikin\ ;
+代金引換 > daikinhikikae\ ;
+茶番狂言 > chabankyougen\ ;
+交通規則 > koutsuukisoku\ ;
+会席料理 > kaisekiryouri\ ;
+現物相場 > genbutsusouba\ ;
+束縛理論 > sokubakuriron\ ;
+公正証書 > kouseishousho\ ;
+同盟怠業 > doumeitaigyou\ ;
+行動方針 > koudouhoushin\ ;
+適正価格 > tekiseikakaku\ ;
+人種改良 > jinshukairyou\ ;
+半流動体 > hanryuudoutai\ ;
+普仏戦争 > fufutsusensou\ ;
+二重結合 > nijuuketsugou\ ;
+免責特権 > mensekitokken\ ;
+懲戒処分 > choukaishobun\ ;
+不心得者 > fukokoroemono\ ;
+豪放磊落 > gouhourairaku\ ;
+艦砲射撃 > kanpoushageki\ ;
+関数解析 > kansuukaiseki\ ;
+通信講座 > tsuushinkouza\ ;
+外貨獲得 > gaikakakutoku\ ;
+心悸昂進 > shinkikoushin\ ;
+電気溶接 > denkiyousetsu\ ;
+吮癰舐痔 > sen''youshiji\ ;
+労働条件 > roudoujouken\ ;
+外国航路 > gaikokukouro\ ;
+伝送速度 > densousokudo\ ;
+一本調子 > ippondjoushi\ ;
+墜落事故 > tsuirakujiko\ ;
+線香花火 > senkouhanabi\ ;
+東京都政 > toukyoutosei\ ;
+軍事産業 > gunjisangyou\ ;
+代理牧師 > dairibokushi\ ;
+三十三所 > sanjuusansho\ ;
+一次線輪 > ichijisenrin\ ;
+価格変動 > kakakuhendou\ ;
+悠悠自適 > yuuyuujiteki\ ;
+山紫水明 > sanshisuimei\ ;
+空輸貨物 > kuuyukamotsu\ ;
+観光資源 > kankoushigen\ ;
+視覚言語 > shikakugengo\ ;
+麻薬常用 > mayakujouyou\ ;
+日朝辞典 > nitchoujiten\ ;
+店頭債券 > tentousaiken\ ;
+版権所有 > hankenshoyuu\ ;
+一泊行軍 > ippakukougun\ ;
+青空市場 > aozorashijou\ ;
+開票結果 > kaihyoukekka\ ;
+単独講和 > tandokukouwa\ ;
+近代科学 > kindaikagaku\ ;
+無神論者 > mushinronsha\ ;
+有形財産 > yuukeizaisan\ ;
+河岸段丘 > kagandankyuu\ ;
+太陽光線 > taiyoukousen\ ;
+億万長者 > okumanchouja\ ;
+化粧石鹸 > keshousekken\ ;
+言語療法 > gengoryouhou\ ;
+安定成長 > anteiseichou\ ;
+神権政治 > shinkenseiji\ ;
+至上命令 > shijoumeirei\ ;
+音楽美学 > ongakubigaku\ ;
+労働大臣 > roudoudaijin\ ;
+降格人事 > koukakujinji\ ;
+窒素肥料 > chissohiryou\ ;
+軍部独裁 > gunbudokusai\ ;
+公務疾病 > koumushippei\ ;
+花火大会 > hanabitaikai\ ;
+行雲流水 > kouunryuusui\ ;
+反対訊問 > hantaijinmon\ ;
+方向転換 > houkoutenkan\ ;
+無線技術 > musengijutsu\ ;
+艮下艮上 > gonkagonshou\ ;
+未来完了 > miraikanryou\ ;
+前進部隊 > zenshinbutai\ ;
+既約分数 > kiyakubunsuu\ ;
+公営住宅 > koueijuutaku\ ;
+監査報告 > kansahoukoku\ ;
+月経周期 > gekkeishuuki\ ;
+科学雑誌 > kagakuzasshi\ ;
+通貨統合 > tsuukatougou\ ;
+対地速度 > taichisokudo\ ;
+官僚主義 > kanryoushugi\ ;
+御調子者 > ochoushimono\ ;
+二足三文 > nisokusanmon\ ;
+酸性肥料 > sanseihiryou\ ;
+言文一致 > genbun''itchi\ ;
+共同管理 > kyoudoukanri\ ;
+海外旅行 > kaigairyokou\ ;
+不審尋問 > fushinjinmon\ ;
+責任転嫁 > sekinintenka\ ;
+長期手形 > choukitegata\ ;
+給与水準 > kyuuyosuijun\ ;
+少数精鋭 > shousuuseiei\ ;
+転換社債 > tenkanshasai\ ;
+沿岸漁業 > engangyogyou\ ;
+交際社会 > kousaishakai\ ;
+制限事項 > seigenjikoku\ ;
+刑事責任 > keijisekinin\ ;
+混合火薬 > kongoukayaku\ ;
+双務契約 > soumukeiyaku\ ;
+古典学者 > kotengakusha\ ;
+生活扶助 > seikatsufujo\ ;
+用益物権 > youekibukken\ ;
+出勤時間 > shukkinjikan\ ;
+相関係数 > soukankeisuu\ ;
+社会保障 > shakaihoshou\ ;
+協同動作 > kyoudoudousa\ ;
+情緒纒綿 > jouchotenmen\ ;
+立憲君主 > rikkenkunshu\ ;
+旅券査証 > ryokensashou\ ;
+落花狼藉 > rakkarouzeki\ ;
+化学製品 > kagakuseihin\ ;
+適性検査 > tekiseikensa\ ;
+生命科学 > seimeikagaku\ ;
+工作機械 > kousakukikai\ ;
+図書館学 > toshokangaku\ ;
+人口問題 > jinkoumondai\ ;
+御用学者 > goyougakusha\ ;
+気圧配置 > kiatsuhaichi\ ;
+時限爆弾 > jigenbakudan\ ;
+自然対数 > shizentaisuu\ ;
+夜間撮影 > yakansatsuei\ ;
+神経繊維 > shinkeisen''i\ ;
+流動負債 > ryuudoufusai\ ;
+最高記録 > saikoukiroku\ ;
+新規事業 > shinkijigyou\ ;
+姓名判断 > seimeihandan\ ;
+反対給付 > hantaikyuufu\ ;
+敗戦投手 > haisentoushu\ ;
+武漢三鎮 > bukansanchin\ ;
+一朝一夕 > itchouisseki\ ;
+家内工業 > kanaikougyou\ ;
+浅学菲才 > sengakuhisai\ ;
+混合経済 > kongoukeizai\ ;
+市民団体 > shimindantai\ ;
+企業連合 > kigyourengou\ ;
+時代感覚 > jidaikankaku\ ;
+共同因子 > kyoudouinshi\ ;
+一意専心 > ichiisenshin\ ;
+欧米諸国 > oubeishokoku\ ;
+革命運動 > kakumeiundou\ ;
+純粋培養 > junsuibaiyou\ ;
+再三再四 > saisansaishi\ ;
+形而上学 > keijijougaku\ ;
+地方団体 > chihoudantai\ ;
+公民学校 > koumingakkou\ ;
+価格統制 > kakakutousei\ ;
+意匠登録 > ishoutouroku\ ;
+受動喫煙 > judoukitsuen\ ;
+製缶工場 > seikankoujou\ ;
+固形燃料 > kokeinenryou\ ;
+郵便為替 > yuubinkawase\ ;
+口頭弁論 > koutoubenron\ ;
+立体化学 > rittaikagaku\ ;
+品行方正 > hinkouhousei\ ;
+販売価格 > hanbaikakaku\ ;
+恋愛結婚 > ren''aikekkon\ ;
+北米土人 > hokubeidojin\ ;
+臨海学校 > rinkaigakkou\ ;
+一語一語 > ichigoichigo\ ;
+半官半民 > hankanhanmin\ ;
+大国主義 > taikokushugi\ ;
+洋服箪笥 > youfukudansu\ ;
+一方通行 > ippoutsuukou\ ;
+参考文献 > sankoubunken\ ;
+信仰箇条 > shinkoukajou\ ;
+民間資本 > minkanshihon\ ;
+一汁一菜 > ichijuuissai\ ;
+十種競技 > jisshukyougi\ ;
+平和共存 > heiwakyouzon\ ;
+単線運転 > tansen''unten\ ;
+事後承諾 > jigoshoudaku\ ;
+映像信号 > eizoushingou\ ;
+安全対策 > anzentaisaku\ ;
+生産組合 > seisankumiai\ ;
+居住水準 > kyojuusuijun\ ;
+算用数字 > san''yousuuji\ ;
+姉妹会社 > shimaigaisha\ ;
+選挙公報 > senkyokouhou\ ;
+仏像二座 > butsuzouniza\ ;
+観光旅行 > kankouryokou\ ;
+研究課題 > kenkyuukadai\ ;
+金拾万円 > kinjuuman''en\ ;
+屎尿処理 > shinyoushori\ ;
+商事会社 > shoujigaisha\ ;
+集合場所 > shuugoubasho\ ;
+形容詞幹 > keiyoushikan\ ;
+条件反射 > joukenhansha\ ;
+信徒伝動 > shintodendou\ ;
+有料道路 > yuuryoudouro\ ;
+業務妨害 > gyoumubougai\ ;
+阿片中毒 > ahenchuudoku\ ;
+細胞融合 > saibouyuugou\ ;
+名人気質 > meijinkatagi\ ;
+郵政大臣 > yuuseidaijin\ ;
+人権擁護 > jinken''yougo\ ;
+兄弟喧嘩 > kyoudaigenka\ ;
+巡航速度 > junkousokudo\ ;
+一夜大臣 > ichiyadaijin\ ;
+獅子奮迅 > shishifunjin\ ;
+閨秀作家 > keishuusakka\ ;
+専門学校 > senmongakkou\ ;
+改革過程 > kaikakukatei\ ;
+緊急措置 > kinkyuusochi\ ;
+画竜天睛 > garyoutensei\ ;
+一進一退 > isshin''ittai\ ;
+定常状態 > teijoujoutai\ ;
+指数関数 > shisuukansuu\ ;
+試験科目 > shikenkamoku\ ;
+災害救助 > saigaikyuujo\ ;
+冶金学者 > yakingakusha\ ;
+地方銀行 > chihouginkou\ ;
+経済発展 > keizaihatten\ ;
+特殊兵器 > tokushuheiki\ ;
+海中公園 > kaichuukouen\ ;
+団体旅行 > dantairyokou\ ;
+三叉神経 > sansashinkei\ ;
+欲求不満 > yokkyuufuman\ ;
+終夜営業 > shuuyaeigyou\ ;
+地下組織 > chikasoshiki\ ;
+耐震家屋 > taishinkaoku\ ;
+正三角形 > seisankakkei\ ;
+走行車線 > soukoushasen\ ;
+空気調整 > kuukichousei\ ;
+運動神経 > undoushinkei\ ;
+受胎告知 > jutaikokuchi\ ;
+解答用紙 > kaitouyoushi\ ;
+不所存者 > fushozonmono\ ;
+加工産業 > kakousangyou\ ;
+規格原案 > kikakugen''an\ ;
+和魂洋才 > wakon''yousai\ ;
+反戦運動 > hansen''undou\ ;
+諸行無常 > shogyoumujou\ ;
+契約期間 > keiyakukikan\ ;
+人文科学 > jinbunkagaku\ ;
+一人一人 > hitoribitori\ ;
+励振素子 > reishinsoshi\ ;
+宇宙工学 > uchuukougaku\ ;
+事前日付 > jizenhidzuke\ ;
+自家撞着 > jikadouchaku\ ;
+石灰肥料 > sekkaihiryou\ ;
+公益優先 > kouekiyuusen\ ;
+日豊本線 > nippouhonsen\ ;
+石油化学 > sekiyukagaku\ ;
+相対速度 > soutaisokudo\ ;
+黒字倒産 > kurojitousan\ ;
+内憂外患 > naiyuugaikan\ ;
+関数空間 > kansuukuukan\ ;
+付属病院 > fuzokubyouin\ ;
+臨床医学 > rinshouigaku\ ;
+米海兵隊 > beikaiheitai\ ;
+拱手傍観 > koushuboukan\ ;
+順法闘争 > junpoutousou\ ;
+戦闘陣地 > sentoujinchi\ ;
+一挙一動 > ikkyoichidou\ ;
+威嚇射撃 > ikakushageki\ ;
+実地試験 > jitchishiken\ ;
+中間景気 > chuukankeiki\ ;
+司教権座 > shikyoukenza\ ;
+変更履歴 > henkourireki\ ;
+連戦連敗 > rensenrenpai\ ;
+歯槽膿漏 > shisounourou\ ;
+素粒子論 > soryuushiron\ ;
+衛星中継 > eiseichuukei\ ;
+圧延工場 > atsuenkoujou\ ;
+分娩臥床 > bunbengashou\ ;
+人造絹糸 > jinzoukenshi\ ;
+痕跡器官 > konsekikikan\ ;
+蛍光塗料 > keikoutoryou\ ;
+公判調査 > kouhanchousa\ ;
+連絡会議 > renrakukaigi\ ;
+公教要理 > koukyouyouri\ ;
+骨董品店 > kottouhinten\ ;
+十二指腸 > juunishichou\ ;
+財政問題 > zaiseimondai\ ;
+言語学者 > gengogakusha\ ;
+金融機関 > kin''yuukikan\ ;
+田園詩人 > den''enshijin\ ;
+等比級数 > touhikyuusuu\ ;
+道化役者 > doukeyakusha\ ;
+津津浦浦 > tsudzuuraura\ ;
+乾燥地帯 > kansouchitai\ ;
+音節主音 > onsetsushuon\ ;
+航海日誌 > koukainisshi\ ;
+半封建性 > hanhoukensei\ ;
+恋愛関係 > ren''aikankei\ ;
+成長過程 > seichoukatei\ ;
+連帯保証 > rentaihoshou\ ;
+心臓肥大 > shinzouhidai\ ;
+天壌無窮 > tenjoumukyuu\ ;
+全身麻酔 > zenshinmasui\ ;
+回線交換 > kaisenkoukan\ ;
+輸入制限 > yunyuuseigen\ ;
+構造不況 > kouzoufukyou\ ;
+自己共役 > jikokyouyaku\ ;
+構成分子 > kouseibunshi\ ;
+市場展開 > shijoutenkai\ ;
+店頭販売 > tentouhanbai\ ;
+合唱隊員 > gasshoutaiin\ ;
+経費削減 > keihisakugen\ ;
+文芸復興 > bungeifukkou\ ;
+環太平洋 > kantaiheiyou\ ;
+名義書換 > meigikakikae\ ;
+重大問題 > juudaimondai\ ;
+非科学的 > hikagakuteki\ ;
+限定戦争 > genteisensou\ ;
+不在証明 > fuzaishoumei\ ;
+医学博士 > igakuhakushi\ ;
+案内書呈 > an''naishotei\ ;
+専制君主 > senseikunshu\ ;
+勤務実績 > kinmujisseki\ ;
+機密事項 > kimitsujikou\ ;
+早期診断 > soukishindan\ ;
+停止価格 > teishikakaku\ ;
+記憶容量 > kiokuyouryou\ ;
+出生過剰 > shusseikajou\ ;
+引退興行 > intaikougyou\ ;
+三味線弾 > shamisenhiki\ ;
+試験段階 > shikendankai\ ;
+軍事介入 > gunjikainyuu\ ;
+政治道徳 > seijidoutoku\ ;
+国営企業 > kokueikigyou\ ;
+帰巣本能 > kisouhon''nou\ ;
+両性具有 > ryouseiguyuu\ ;
+黄金万能 > ougonban''nou\ ;
+担当課長 > tantoukachou\ ;
+混成競技 > konseikyougi\ ;
+労働攻勢 > roudoukousei\ ;
+閑話休題 > kanwakyuudai\ ;
+役務賠償 > ekimubaishou\ ;
+平和産業 > heiwasangyou\ ;
+印象批評 > inshouhihyou\ ;
+停滞前線 > teitaizensen\ ;
+民間放送 > minkanhousou\ ;
+属地主義 > zokuchishugi\ ;
+出版部数 > shuppanbusuu\ ;
+自動人形 > jidouningyou\ ;
+意志薄弱 > ishihakujaku\ ;
+心理戦争 > shinrisensou\ ;
+課税所得 > kazeishotoku\ ;
+流行作家 > ryuukousakka\ ;
+根気仕事 > konkishigoto\ ;
+軽犯罪法 > keihanzaihou\ ;
+揣摩憶測 > shimaokusoku\ ;
+改修工事 > kaishuukouji\ ;
+対抗意識 > taikouishiki\ ;
+道路交通 > dourokoutsuu\ ;
+法廷侮辱 > houteibujoku\ ;
+光学機械 > kougakukikai\ ;
+脱字記号 > datsujikigou\ ;
+公有水面 > kouyuusuimen\ ;
+陰性反応 > inseihan''nou\ ;
+均衡経済 > kinkoukeizai\ ;
+蘭栽培法 > ransaibaihou\ ;
+武装集団 > busoushuudan\ ;
+印鑑証明 > inkanshoumei\ ;
+域内貿易 > ikinaiboueki\ ;
+使徒行伝 > shitogyouden\ ;
+佳人薄命 > kajinhakumei\ ;
+有体資産 > yuutaishisan\ ;
+対泰関係 > taitaikankei\ ;
+欧州連合 > oushuurengou\ ;
+女子学生 > joshigakusei\ ;
+単純平均 > tanjunheikin\ ;
+再度確認 > saidokakunin\ ;
+鬼面伝心 > kimendenshin\ ;
+貿易黒字 > bouekikuroji\ ;
+組合員証 > kumiaiinshou\ ;
+熟柿主義 > jukushishugi\ ;
+冷房装置 > reibousouchi\ ;
+現地生産 > genchiseisan\ ;
+新聞記者 > shinbunkisha\ ;
+大山鳴動 > taizanmeidou\ ;
+波状攻撃 > hajoukougeki\ ;
+単記投票 > tankitouhyou\ ;
+一次関数 > ichijikansuu\ ;
+幼形進化 > youkeishinka\ ;
+青物市場 > aomonoichiba\ ;
+学生運動 > gakuseiundou\ ;
+報復措置 > houfukusochi\ ;
+回復可能 > kaifukukanou\ ;
+正角定木 > seikakujougi\ ;
+歴史地理 > rekishichiri\ ;
+年中無休 > nenjuumukyuu\ ;
+画竜点睛 > garyoutensei\ ;
+代数的和 > daisuutekiwa\ ;
+左右相称 > sayuusoushou\ ;
+帝国主義 > teikokushugi\ ;
+西洋松露 > seiyoushouro\ ;
+回転勘定 > kaitenkanjou\ ;
+依託射撃 > itakushageki\ ;
+正規表現 > seikihyougen\ ;
+総領事館 > souryoujikan\ ;
+盗難防止 > tounanboushi\ ;
+滅私奉公 > messhihoukou\ ;
+総合科学 > sougoukagaku\ ;
+拘束時間 > kousokujikan\ ;
+四方八方 > shihouhappou\ ;
+主要諸元 > shuyoushogen\ ;
+十分条件 > juubunjouken\ ;
+時代思潮 > jidaishichou\ ;
+代理投票 > dairitouhyou\ ;
+古典音楽 > koten''ongaku\ ;
+銀行強盗 > ginkougoutou\ ;
+起爆装置 > kibakusouchi\ ;
+逮捕許諾 > taihokyodaku\ ;
+歯牙疾患 > shigashikkan\ ;
+共同祖界 > kyoudousokai\ ;
+油断大敵 > yudantaiteki\ ;
+専業農家 > sengyounouka\ ;
+熱可塑性 > netsukasosei\ ;
+市有財産 > shiyuuzaisan\ ;
+国家賠償 > kokkabaishou\ ;
+静態総計 > seitaisoukei\ ;
+専門雑誌 > senmonzasshi\ ;
+弾丸列車 > danganressha\ ;
+大正時代 > taishoujidai\ ;
+設計変更 > sekkeihenkou\ ;
+了解事項 > ryoukaijikou\ ;
+実験段階 > jikkendankai\ ;
+官僚政治 > kanryouseiji\ ;
+人種問題 > jinshumondai\ ;
+演習問題 > enshuumondai\ ;
+労働組合 > roudoukumiai\ ;
+醇風美俗 > junpuubizoku\ ;
+造反有理 > zouhan''yuuri\ ;
+消費性向 > shouhiseikou\ ;
+御用新聞 > goyoushinbun\ ;
+公定価格 > kouteikakaku\ ;
+堆積作用 > taisekisayou\ ;
+攻守同盟 > koushudoumei\ ;
+工科大学 > koukadaigaku\ ;
+社公連合 > shakourengou\ ;
+軍事教練 > gunjikyouren\ ;
+平和条約 > heiwajouyaku\ ;
+無資格者 > mushikakusha\ ;
+相殺関税 > sousaikanzei\ ;
+即時停戦 > sokujiteisen\ ;
+測地衛星 > sokuchieisei\ ;
+空中浮遊 > kuuchuufuyuu\ ;
+信用詐欺 > shin''yousagi\ ;
+明眸皓歯 > meiboukoushi\ ;
+上等兵曹 > joutouheisou\ ;
+金利政策 > kinriseisaku\ ;
+草根木皮 > soukonmokuhi\ ;
+労働災害 > roudousaigai\ ;
+推定年齢 > suiteinenrei\ ;
+日本文学 > nihonbungaku\ ;
+実験科学 > jikkenkagaku\ ;
+危険信号 > kikenshingou\ ;
+西欧諸国 > seioushokoku\ ;
+夜間営業 > yakan''eigyou\ ;
+使徒承伝 > shitoshouden\ ;
+国家主席 > kokkashuseki\ ;
+雪見灯籠 > yukimidourou\ ;
+主席判事 > shusekihanji\ ;
+官製葉書 > kanseihagaki\ ;
+伝記文学 > denkibungaku\ ;
+制動放射 > seidouhousha\ ;
+法律行為 > houritsukoui\ ;
+共産国家 > kyousankokka\ ;
+教育機関 > kyouikukikan\ ;
+非常信号 > hijoushingou\ ;
+雪見障子 > yukimishouji\ ;
+機構改革 > kikoukaikaku\ ;
+御玉杓子 > otamajakushi\ ;
+最終結果 > saishuukekka\ ;
+特恵関税 > tokkeikanzei\ ;
+地震予知 > jishin''yochi\ ;
+共同募金 > kyoudoubokin\ ;
+事務当局 > jimutoukyoku\ ;
+三号雑誌 > sangouzasshi\ ;
+漏洩電流 > roueidenryuu\ ;
+宣戦布告 > sensenfukoku\ ;
+共産地区 > kyousanchiku\ ;
+代用教員 > daiyoukyouin\ ;
+三角定規 > sankakujougi\ ;
+西洋将棋 > seiyoushougi\ ;
+信号無視 > shingoumushi\ ;
+土地改革 > tochikaikaku\ ;
+瀬戸物市 > setomonoichi\ ;
+安倍川餅 > abekawamochi\ ;
+東欧諸国 > tououshokoku\ ;
+跡目相続 > atomesouzoku\ ;
+人工呼吸 > jinkoukokyuu\ ;
+航空郵便 > koukuuyuubin\ ;
+並行輸入 > heikouyunyuu\ ;
+経済格差 > keizaikakusa\ ;
+社会資本 > shakaishihon\ ;
+外交特権 > gaikoutokken\ ;
+業務提携 > gyoumuteikei\ ;
+潜在意識 > senzaiishiki\ ;
+制御装置 > seigyosouchi\ ;
+所所方方 > shoshohoubou\ ;
+固体燃料 > kotainenryou\ ;
+鼻元思案 > hanamotojian\ ;
+右折禁止 > usetsukinshi\ ;
+千思万考 > senshibankou\ ;
+依願退職 > igantaishoku\ ;
+三部合唱 > sanbugasshou\ ;
+言語中枢 > gengochuusuu\ ;
+現代文明 > gendaibunmei\ ;
+養護学級 > yougogakkyuu\ ;
+回転運動 > kaiten''undou\ ;
+運輸業者 > un''yugyousha\ ;
+石油公団 > sekiyukoudan\ ;
+局部麻酔 > kyokubumasui\ ;
+義太夫節 > gidayuubushi\ ;
+金属加工 > kinzokukakou\ ;
+悪性腫瘍 > akuseishuyou\ ;
+馬鹿正直 > bakashoujiki\ ;
+合弁会社 > goubengaisha\ ;
+公益事業 > kouekijigyou\ ;
+信号電波 > shingoudenpa\ ;
+津々浦々 > tsudzuuraura\ ;
+内輪同志 > uchiwadoushi\ ;
+社会事業 > shakaijigyou\ ;
+零細企業 > reisaikigyou\ ;
+国定公園 > kokuteikouen\ ;
+応力径路 > ouryokukeiro\ ;
+控訴棄却 > kousokikyaku\ ;
+通勤定期 > tsuukinteiki\ ;
+歴史地図 > rekishichizu\ ;
+電子郵便 > denshiyuubin\ ;
+人工知能 > jinkouchinou\ ;
+空中投下 > kuuchuutouka\ ;
+楽天主義 > rakutenshugi\ ;
+海外投資 > kaigaitoushi\ ;
+暗証番号 > anshoubangou\ ;
+年齢制限 > nenreiseigen\ ;
+価格戦争 > kakakusensou\ ;
+高速度鋼 > kousokudokou\ ;
+火力支援 > karyokushien\ ;
+高速道路 > kousokudouro\ ;
+使用禁止 > shiyoukinshi\ ;
+冠婚葬祭 > kankonsousai\ ;
+水平尾翼 > suiheibiyoku\ ;
+決議機関 > ketsugikikan\ ;
+連鎖反応 > rensahan''nou\ ;
+市民社会 > shiminshakai\ ;
+部分集合 > bubunshuugou\ ;
+四捨五入 > shishagonyuu\ ;
+受託会社 > jutakugaisha\ ;
+問題意識 > mondaiishiki\ ;
+金融公庫 > kin''yuukouko\ ;
+友達甲斐 > tomodachigai\ ;
+一般教養 > ippankyouyou\ ;
+安定恐慌 > anteikyoukou\ ;
+水素化物 > suisokabutsu\ ;
+環境変化 > kankyouhenka\ ;
+体格検査 > taikakukensa\ ;
+化学合成 > kagakugousei\ ;
+平平凡凡 > heiheibonbon\ ;
+市場価格 > shijoukakaku\ ;
+善隣関係 > zenrinkankei\ ;
+合成洗剤 > gouseisenzai\ ;
+観念主義 > kan''nenshugi\ ;
+通勤時間 > tsuukinjikan\ ;
+経済体制 > keizaitaisei\ ;
+住所氏名 > juushoshimei\ ;
+疾風怒濤 > shippuudotou\ ;
+医療材料 > iryouzairyou\ ;
+有機農業 > yuukinougyou\ ;
+妨害放送 > bougaihousou\ ;
+金属元素 > kinzokugenso\ ;
+歯内療法 > shikaryouhou\ ;
+悪戯小僧 > itazurakozou\ ;
+全権大使 > zenkentaishi\ ;
+危急存亡 > kikyuusonbou\ ;
+宇宙中継 > uchuuchuukei\ ;
+非人間的 > hiningenteki\ ;
+受信装置 > jushinsouchi\ ;
+数値計算 > suuchikeisan\ ;
+片言隻語 > hengensekigo\ ;
+懐中時計 > kaichuudokei\ ;
+競輪選手 > keirinsenshu\ ;
+暗号解読 > angoukaidoku\ ;
+反動思想 > handoushisou\ ;
+実証主義 > jisshoushugi\ ;
+標準偏差 > hyoujunhensa\ ;
+資源問題 > shigenmondai\ ;
+運送業者 > unsougyousha\ ;
+行動地帯 > koudouchitai\ ;
+平等主義 > byoudoushugi\ ;
+交代投手 > koutaitoushu\ ;
+国家独占 > kokkadokusen\ ;
+土地改良 > tochikairyou\ ;
+環境基準 > kankyoukijun\ ;
+外交文書 > gaikoubunsho\ ;
+軽挙妄動 > keikyomoudou\ ;
+防虫加工 > bouchuukakou\ ;
+不在投票 > fuzaitouhyou\ ;
+嫌煙運動 > ken''en''undou\ ;
+封緘葉書 > fuukanhagaki\ ;
+泰然自若 > taizenjijaku\ ;
+敗北主義 > haibokushugi\ ;
+価格性能 > kakakuseinou\ ;
+書類送検 > shoruisouken\ ;
+人権問題 > jinkenmondai\ ;
+一死報国 > isshihoukoku\ ;
+練馬大根 > nerimadaikon\ ;
+一糸一毫 > isshiichigou\ ;
+特殊事情 > tokushujijou\ ;
+老少不定 > roushoufutei\ ;
+相乗平均 > soujouheikin\ ;
+万年候補 > man''nenkouho\ ;
+安全教育 > anzenkyouiku\ ;
+無賃乗車 > muchinjousha\ ;
+片務契約 > henmukeiyaku\ ;
+一般大衆 > ippantaishuu\ ;
+古典文学 > kotenbungaku\ ;
+高校野球 > koukouyakyuu\ ;
+不審訊問 > fushinjinmon\ ;
+中華料理 > chuukaryouri\ ;
+健康状態 > kenkoujoutai\ ;
+鹿児島県 > kagoshimaken\ ;
+準備状況 > junbijoukyou\ ;
+選外佳作 > sengaikasaku\ ;
+言語教育 > gengokyouiku\ ;
+同文同種 > doubundoushu\ ;
+給与体系 > kyuuyotaikei\ ;
+麻薬犯罪 > mayakuhanzai\ ;
+朝令暮改 > choureibokai\ ;
+互恵条約 > gokeijouyaku\ ;
+一国一票 > ikkokuippyou\ ;
+砲艦外交 > houkangaikou\ ;
+流行言葉 > hayarikotoba\ ;
+交通機関 > koutsuukikan\ ;
+水銀電池 > suigindenchi\ ;
+追善供養 > tsuizenkuyou\ ;
+他力本願 > tarikihongan\ ;
+符号解読 > fugoukaidoku\ ;
+知能指数 > chinoushisuu\ ;
+当営業所 > toueigyousho\ ;
+職員会議 > shokuinkaigi\ ;
+言語特有 > gengotokuyuu\ ;
+最小限度 > saishougendo\ ;
+染井吉野 > someiyoshino\ ;
+完全犯罪 > kanzenhanzai\ ;
+教育制度 > kyouikuseido\ ;
+戦国時代 > sengokujidai\ ;
+前駆症状 > zenkushoujou\ ;
+紫綬褒賞 > shijuhoushou\ ;
+一言半句 > ichigonhanku\ ;
+不法占有 > fuhousen''yuu\ ;
+家庭環境 > kateikankyou\ ;
+舞台監督 > butaikantoku\ ;
+合成皮革 > gouseihikaku\ ;
+在宅勤務 > zaitakukinmu\ ;
+不在地主 > fuzaijinushi\ ;
+一宿一飯 > isshukuippan\ ;
+老人病院 > roujinbyouin\ ;
+片肺飛行 > katahaihikou\ ;
+対潜水艦 > taisensuikan\ ;
+警戒警報 > keikaikeihou\ ;
+累積赤字 > ruisekiakaji\ ;
+家族構成 > kazokukousei\ ;
+内柔外剛 > naijuugaigou\ ;
+属人主義 > zokujinshugi\ ;
+硬軟両派 > kounanryouha\ ;
+座席番号 > zasekibangou\ ;
+空中浮揚 > kuuchuufuyou\ ;
+丁稚奉公 > detchiboukou\ ;
+一方交通 > ippoukoutsuu\ ;
+三日月形 > mikadzukikei\ ;
+検事総長 > kenjisouchou\ ;
+新規投資 > shinkitoushi\ ;
+単語検索 > tangokensaku\ ;
+隠匿物資 > intokubusshi\ ;
+女人禁制 > nyoninkinsei\ ;
+大修道院 > daishuudouin\ ;
+森林公園 > shinrinkouen\ ;
+受験資格 > jukenshikaku\ ;
+大和言葉 > yamatokotoba\ ;
+儀式主義 > gishikishugi\ ;
+造山運動 > zouzan''undou\ ;
+一般教育 > ippankyouiku\ ;
+立体音響 > rittaionkyou\ ;
+特集記事 > tokushuukiji\ ;
+付帯決議 > futaiketsugi\ ;
+製紙工場 > seishikoujou\ ;
+救援投手 > kyuuentoushu\ ;
+財団法人 > zaidanhoujin\ ;
+民俗舞踊 > minzokubuyou\ ;
+戦争犯罪 > sensouhanzai\ ;
+難燃加工 > nan''nenkakou\ ;
+南船北馬 > nansenhokuba\ ;
+機能障害 > kinoushougai\ ;
+日本国民 > nihonkokumin\ ;
+舞踏教師 > butoukyoushi\ ;
+林間学校 > rinkangakkou\ ;
+花魁道中 > oirandouchuu\ ;
+滑降競技 > kakkoukyougi\ ;
+在外公館 > zaigaikoukan\ ;
+地方選挙 > chihousenkyo\ ;
+合成化学 > gouseikagaku\ ;
+私製葉書 > shiseihagaki\ ;
+不定積分 > futeisekibun\ ;
+正々堂々 > seiseidoudou\ ;
+半信半疑 > hanshinhangi\ ;
+輸入超過 > yunyuuchouka\ ;
+四元速度 > shigensokudo\ ;
+付属学校 > fuzokugakkou\ ;
+人工真珠 > jinkoushinju\ ;
+人権団体 > jinkendantai\ ;
+本文批評 > honmonhihyou\ ;
+画龍点睛 > garyoutensei\ ;
+乾地農法 > kanchinouhou\ ;
+喧喧囂囂 > kenkengougou\ ;
+人定尋問 > jinteijinmon\ ;
+任期満了 > ninkimanryou\ ;
+競馬新聞 > keibashinbun\ ;
+電気工学 > denkikougaku\ ;
+供給過多 > kyoukyuukata\ ;
+口頭審理 > koutoushinri\ ;
+平和教育 > heiwakyouiku\ ;
+総合病院 > sougoubyouin\ ;
+上層気流 > jousoukiryuu\ ;
+老齢年金 > roureinenkin\ ;
+演奏練習 > ensourenshuu\ ;
+仕掛地雷 > shikakejirai\ ;
+回転資金 > kaitenshikin\ ;
+暗中模索 > anchuumosaku\ ;
+唯我独尊 > yuigadokuson\ ;
+集散主義 > shuusanshugi\ ;
+土産物屋 > miyagemonoya\ ;
+自給自足 > jikyuujisoku\ ;
+和平協定 > waheikyoutei\ ;
+地方分権 > chihoubunken\ ;
+市内観光 > shinaikankou\ ;
+放射能雨 > houshanouame\ ;
+諜報機関 > chouhoukikan\ ;
+就学義務 > shuugakugimu\ ;
+航空優勢 > koukuuyuusei\ ;
+人才登用 > jinzaitouyou\ ;
+複本位制 > fukuhon''isei\ ;
+生活保護 > seikatsuhogo\ ;
+集中豪雨 > shuuchuugouu\ ;
+徴兵免除 > chouheimenjo\ ;
+公害問題 > kougaimondai\ ;
+単身赴任 > tanshinfunin\ ;
+差別用語 > sabetsuyougo\ ;
+人口動態 > jinkoudoutai\ ;
+宇宙物理 > uchuubutsuri\ ;
+全面戦争 > zenmensensou\ ;
+経済状態 > keizaijoutai\ ;
+委託研究 > itakukenkyuu\ ;
+千辛万苦 > senshinbanku\ ;
+医療報酬 > iryouhoushuu\ ;
+水晶時計 > suishoudokei\ ;
+三文文士 > sanmonbunshi\ ;
+回転木馬 > kaitenmokuba\ ;
+不戦条約 > fusenjouyaku\ ;
+一生懸命 > isshoukenmei\ ;
+日進月歩 > nisshingeppo\ ;
+受託販売 > jutakuhanbai\ ;
+文化勲章 > bunkakunshou\ ;
+悠悠閑閑 > yuuyuukankan\ ;
+仏英辞典 > futsueijiten\ ;
+衛生工学 > eiseikougaku\ ;
+政見放送 > seikenhousou\ ;
+水性塗料 > suiseitoryou\ ;
+先進兵器 > senshinheiki\ ;
+自己中心 > jikochuushin\ ;
+同和教育 > douwakyouiku\ ;
+学齢児童 > gakureijidou\ ;
+聖地巡礼 > seichijunrei\ ;
+社団法人 > shadanhoujin\ ;
+貨物輸送 > kamotsuyusou\ ;
+正多角形 > seitakakukei\ ;
+電気容量 > denkiyouryou\ ;
+準禁治産 > junkinchisan\ ;
+化学構造 > kagakukouzou\ ;
+一党独裁 > ittoudokusai\ ;
+無限小数 > mugenshousuu\ ;
+渾然一体 > konzen''ittai\ ;
+海底地震 > kaiteijishin\ ;
+博士課程 > hakushikatei\ ;
+平均寿命 > heikinjumyou\ ;
+市民運動 > shimin''undou\ ;
+記念出版 > kinenshuppan\ ;
+装置制御 > souchiseigyo\ ;
+原裁判所 > gensaibansho\ ;
+厚生大臣 > kouseidaijin\ ;
+油脂工業 > yushikougyou\ ;
+総支配人 > soushihainin\ ;
+日照時間 > nisshoujikan\ ;
+一般教書 > ippankyousho\ ;
+一部始終 > ichibushijuu\ ;
+関数原型 > kansuugenkei\ ;
+三重宝冠 > sanjuuhoukan\ ;
+歓送迎会 > kansougeikai\ ;
+緊急避難 > kinkyuuhinan\ ;
+刹那主義 > setsunashugi\ ;
+工業地区 > kougyouchiku\ ;
+我楽多市 > garakutaichi\ ;
+転写捺染 > tenshanassen\ ;
+自然災害 > shizensaigai\ ;
+天井棧敷 > tenjousajiki\ ;
+先行条件 > senkoujouken\ ;
+月下氷人 > gekkahyoujin\ ;
+医薬分業 > iyakubungyou\ ;
+身元保証 > mimotohoshou\ ;
+純正科学 > junseikagaku\ ;
+二重道徳 > nijuudoutoku\ ;
+悲喜交交 > hikikomogomo\ ;
+緊急動議 > kinkyuudougi\ ;
+太陽電池 > taiyoudenchi\ ;
+街頭録音 > gaitourokuon\ ;
+国際機関 > kokusaikikan\ ;
+前傾姿勢 > zenkeishisei\ ;
+帰属意識 > kizokuishiki\ ;
+公衆便所 > koushuubenjo\ ;
+日本国内 > nihonkokunai\ ;
+選民思想 > senminshisou\ ;
+咀嚼運動 > soshakuundou\ ;
+共同疎開 > kyoudousokai\ ;
+記念写真 > kinenshashin\ ;
+火燵布団 > kotatsubuton\ ;
+全面禁止 > zenmenkinshi\ ;
+北回帰線 > kitakaikisen\ ;
+連合艦隊 > rengoukantai\ ;
+人命救助 > jinmeikyuujo\ ;
+戦争状態 > sensoujoutai\ ;
+女子大学 > joshidaigaku\ ;
+国士無双 > kokushimusou\ ;
+平均余命 > heikin''yomei\ ;
+事例研究 > jireikenkyuu\ ;
+分散投資 > bunsantoushi\ ;
+偶像礼拝 > guuzoureihai\ ;
+効果覿面 > koukatekimen\ ;
+緊張緩和 > kinchoukanwa\ ;
+不許複製 > fukyofukusei\ ;
+北欧神話 > hokuoushinwa\ ;
+人事行政 > jinjigyousei\ ;
+昭和年間 > shouwanenkan\ ;
+国字問題 > kokujimondai\ ;
+国務大臣 > kokumudaijin\ ;
+言語障害 > gengoshougai\ ;
+再販価格 > saihankakaku\ ;
+平均株価 > heikinkabuka\ ;
+安息香酸 > ansokukousan\ ;
+譜代大名 > fudaidaimyou\ ;
+道路計画 > dourokeikaku\ ;
+古自動車 > furujidousha\ ;
+容姿端麗 > youshitanrei\ ;
+請負業者 > ukeoigyousha\ ;
+通常口語 > tsuujoukougo\ ;
+在外邦人 > zaigaihoujin\ ;
+開放経済 > kaihoukeizai\ ;
+体操競技 > taisoukyougi\ ;
+労働同盟 > roudoudoumei\ ;
+国際都市 > kokusaitoshi\ ;
+有刺鉄線 > yuushitessen\ ;
+団体行動 > dantaikoudou\ ;
+応用数学 > ouyousuugaku\ ;
+交通巡査 > koutsuujunsa\ ;
+無敵艦隊 > mutekikantai\ ;
+航空会社 > koukuugaisha\ ;
+大政奉還 > taiseihoukan\ ;
+不撓不屈 > futoufukutsu\ ;
+相関関係 > soukankankei\ ;
+同盟罷業 > doumeihigyou\ ;
+軍備競争 > gunbikyousou\ ;
+形容動詞 > keiyoudoushi\ ;
+補給幹線 > hokyuukansen\ ;
+為替裁定 > kawasesaitei\ ;
+表現主義 > hyougenshugi\ ;
+文教地区 > bunkyouchiku\ ;
+金属疲労 > kinzokuhirou\ ;
+強制疎開 > kyouseisokai\ ;
+警視総監 > keishisoukan\ ;
+代表社員 > daihyoushain\ ;
+借屋住居 > shakuyazumai\ ;
+徴兵制度 > chouheiseido\ ;
+短期大学 > tankidaigaku\ ;
+立体放送 > rittaihousou\ ;
+天井桟敷 > tenjousajiki\ ;
+圧迫包帯 > appakuhoutai\ ;
+通用期間 > tsuuyoukikan\ ;
+勉強時間 > benkyoujikan\ ;
+戸籍謄本 > kosekitouhon\ ;
+家庭教育 > kateikyouiku\ ;
+地震探鉱 > jishintankou\ ;
+避難梯子 > hinanbashigo\ ;
+社会奉仕 > shakaihoushi\ ;
+婚外性交 > kongaiseikou\ ;
+不可抗力 > fukakouryoku\ ;
+執行機関 > shikkoukikan\ ;
+勤務評定 > kinmuhyoutei\ ;
+常用対数 > jouyoutaisuu\ ;
+大道芸人 > daidougeinin\ ;
+黒風白雨 > kokufuuhakuu\ ;
+銀行業務 > ginkougyoumu\ ;
+現地調査 > genchichousa\ ;
+遠洋航海 > en''youkoukai\ ;
+外交関係 > gaikoukankei\ ;
+私学助成 > shigakujosei\ ;
+無痛分娩 > mutsuubunben\ ;
+不良債権 > furyousaiken\ ;
+地域時刻 > chiikijikoku\ ;
+凹版印刷 > ouhaninsatsu\ ;
+基幹産業 > kikansangyou\ ;
+路上駐車 > rojouchuusha\ ;
+首脳会談 > shunoukaidan\ ;
+独裁政治 > dokusaiseiji\ ;
+外交問題 > gaikoumondai\ ;
+破産申請 > hasanshinsei\ ;
+郷土芸能 > kyoudogeinou\ ;
+後方地域 > kouhouchiiki\ ;
+太陽放射 > taiyouhousha\ ;
+西洋文明 > seiyoubunmei\ ;
+振替輸送 > furikaeyusou\ ;
+交換条件 > koukanjouken\ ;
+発行市場 > hakkoushijou\ ;
+一昨昨年 > sakiototoshi\ ;
+製菓業者 > seikagyousha\ ;
+愛国団体 > aikokudantai\ ;
+変形規則 > henkeikisoku\ ;
+人気投票 > ninkitouhyou\ ;
+男女平等 > danjobyoudou\ ;
+郵便葉書 > yuubinhagaki\ ;
+浅学非才 > sengakuhisai\ ;
+市場撤退 > shijoutettai\ ;
+定期検診 > teikikenshin\ ;
+団体競技 > dantaikyougi\ ;
+民間団体 > minkandantai\ ;
+封建思想 > houkenshisou\ ;
+航続距離 > kouzokukyori\ ;
+双峰駱駝 > souhourakuda\ ;
+百科全書 > hyakkazensho\ ;
+試行錯誤 > shikousakugo\ ;
+工場地帯 > koujouchitai\ ;
+政治改革 > seijikaikaku\ ;
+市民会館 > shiminkaikan\ ;
+有限会社 > yuugengaisha\ ;
+重商主義 > juushoushugi\ ;
+駅前広場 > ekimaehiroba\ ;
+政治責任 > seijisekinin\ ;
+専業主婦 > sengyoushufu\ ;
+現場監督 > genbakantoku\ ;
+公転周期 > koutenshuuki\ ;
+口三味線 > kuchijamisen\ ;
+一昨昨夜 > issakusakuya\ ;
+血清肝炎 > kesseikan''en\ ;
+人跡未踏 > jinsekimitou\ ;
+強制保険 > kyouseihoken\ ;
+一望千里 > ichibousenri\ ;
+刑務所長 > keimushochou\ ;
+場内放送 > jounaihousou\ ;
+朝三暮四 > chousanboshi\ ;
+福祉国家 > fukushikokka\ ;
+長刀一枝 > choutouisshi\ ;
+悲喜交々 > hikikomogomo\ ;
+無線工学 > musenkougaku\ ;
+勝利投手 > shouritoushu\ ;
+天気概況 > tenkigaikyou\ ;
+無常迅速 > mujoujinsoku\ ;
+行動科学 > koudoukagaku\ ;
+予防注射 > yobouchuusha\ ;
+極秘情報 > gokuhijouhou\ ;
+封建社会 > houkenshakai\ ;
+労使紛争 > roushifunsou\ ;
+自学自習 > jigakujishuu\ ;
+不連続線 > furenzokusen\ ;
+治外法権 > chigaihouken\ ;
+経済外交 > keizaigaikou\ ;
+刃物三昧 > hamonozanmai\ ;
+光学繊維 > kougakusen''i\ ;
+全休止符 > zenkyuushifu\ ;
+和洋折衷 > wayousetchuu\ ;
+清算会社 > seisangaisha\ ;
+廃藩置県 > haihanchiken\ ;
+臨床講義 > rinshoukougi\ ;
+純日本風 > jun''nihonfuu\ ;
+挙国一致 > kyokokuitchi\ ;
+大衆運動 > taishuuundou\ ;
+市場調査 > shijouchousa\ ;
+公開外交 > koukaigaikou\ ;
+大蔵大臣 > ookuradaijin\ ;
+修正予算 > shuuseiyosan\ ;
+行政機関 > gyouseikikan\ ;
+政教分離 > seikyoubunri\ ;
+搭乗案内 > toujouan''nai\ ;
+五人囃子 > goninbayashi\ ;
+独善主義 > dokuzenshugi\ ;
+航空書簡 > koukuushokan\ ;
+賛否同票 > sanpidouhyou\ ;
+人文学派 > jinbungakuha\ ;
+援用生産 > en''youseisan\ ;
+不耕作地 > fukousakuchi\ ;
+大使公邸 > taishikoutei\ ;
+決議事項 > ketsugijikou\ ;
+温泉療法 > onsenryouhou\ ;
+一顰一笑 > ippin''isshou\ ;
+電気信号 > denkishingou\ ;
+専管水域 > senkansuiiki\ ;
+天体崇拝 > tentaisuuhai\ ;
+相互参照 > sougosanshou\ ;
+割烹料理 > kappouryouri\ ;
+郊外電車 > kougaidensha\ ;
+修正主義 > shuuseishugi\ ;
+補強証拠 > hokyoushouko\ ;
+人材銀行 > jinzaiginkou\ ;
+近代音楽 > kindaiongaku\ ;
+裏面工作 > rimenkousaku\ ;
+法治社会 > houchishakai\ ;
+大盤振舞 > oobanburumai\ ;
+三岐代表 > sangidaihyou\ ;
+教員組合 > kyouinkumiai\ ;
+海難救助 > kainankyuujo\ ;
+録音放送 > rokuonhousou\ ;
+三者凡退 > sanshabontai\ ;
+日本海流 > nihonkairyuu\ ;
+史上最大 > shijousaidai\ ;
+記憶障害 > kiokushougai\ ;
+不労所得 > furoushotoku\ ;
+老荘思想 > rousoushisou\ ;
+軍需工業 > gunjukougyou\ ;
+離合集散 > rigoushuusan\ ;
+良妻賢母 > ryousaikenbo\ ;
+軍司令官 > gunshireikan\ ;
+貿易会社 > bouekigaisha\ ;
+燐酸肥料 > rinsanhiryou\ ;
+無限責任 > mugensekinin\ ;
+科学思想 > kagakushisou\ ;
+四海同胞 > shikaidouhou\ ;
+健康問題 > kenkoumondai\ ;
+感傷主義 > kanshoushugi\ ;
+馬頭観音 > batoukan''non\ ;
+天頂距離 > tenchoukyori\ ;
+調査部長 > chousabuchou\ ;
+千紫万紅 > senshibankou\ ;
+行動命令 > koudoumeirei\ ;
+為替手形 > kawasetegata\ ;
+赤道気団 > sekidoukidan\ ;
+空中落下 > kuuchuurakka\ ;
+定格荷重 > teikakukajuu\ ;
+為替銀行 > kawaseginkou\ ;
+官能主義 > kan''noushugi\ ;
+家庭教師 > kateikyoushi\ ;
+昼夜兼行 > chuuyakenkou\ ;
+会社営業 > kaishaeigyou\ ;
+啓蒙思想 > keimoushisou\ ;
+非循環的 > hijunkanteki\ ;
+文民統制 > bunmintousei\ ;
+過酸化物 > kasankabutsu\ ;
+一念発起 > ichinenhokki\ ;
+育成栽培 > ikuseisaibai\ ;
+現場検証 > genbakenshou\ ;
+時代考証 > jidaikoushou\ ;
+感度良好 > kandoryoukou\ ;
+透明人間 > toumeiningen\ ;
+常套手段 > joutoushudan\ ;
+和平工作 > waheikousaku\ ;
+暗中飛躍 > anchuuhiyaku\ ;
+人民裁判 > jinminsaiban\ ;
+施行規則 > shikoukisoku\ ;
+半身不随 > hanshinfuzui\ ;
+普通名詞 > futsuumeishi\ ;
+対象範囲 > taishouhan''i\ ;
+人民戦線 > jinminsensen\ ;
+簡明強固 > kanmeikyouko\ ;
+可能選択 > kanousentaku\ ;
+屋内競技 > okunaikyougi\ ;
+多情仏心 > tajoubusshin\ ;
+単純計算 > tanjunkeisan\ ;
+公衆電話 > koushuudenwa\ ;
+花自動車 > hanajidousha\ ;
+放蕩息子 > houtoumusuko\ ;
+写真機店 > shashinkiten\ ;
+三等軍曹 > santougunsou\ ;
+緊急逮捕 > kinkyuutaiho\ ;
+貞操蹂躪 > teisoujuurin\ ;
+心肺機能 > shinpaikinou\ ;
+雌雄同株 > shiyuudoushu\ ;
+順風満帆 > junpuumanpan\ ;
+学校法人 > gakkouhoujin\ ;
+変位電流 > hen''idenryuu\ ;
+前哨勤務 > zenshoukinmu\ ;
+海洋科学 > kaiyoukagaku\ ;
+農民運動 > noumin''undou\ ;
+責任範囲 > sekininhan''i\ ;
+発光塗料 > hakkoutoryou\ ;
+感応作用 > kan''nousayou\ ;
+子持昆布 > komochikonbu\ ;
+市営住宅 > shieijuutaku\ ;
+事業部長 > jigyoubuchou\ ;
+大胆不敵 > daitanfuteki\ ;
+天地創造 > tenchisouzou\ ;
+市場経済 > shijoukeizai\ ;
+予定期日 > yoteikijitsu\ ;
+医療技術 > iryougijutsu\ ;
+使役動詞 > shiekidoushi\ ;
+徴兵検査 > chouheikensa\ ;
+自家発電 > jikahatsuden\ ;
+同語反復 > dougohanpuku\ ;
+弁論大会 > benrontaikai\ ;
+一般投票 > ippantouhyou\ ;
+一人息子 > hitorimusuko\ ;
+退役軍人 > taiekigunjin\ ;
+人生最悪 > jinseisaiaku\ ;
+印加電圧 > inkaden''atsu\ ;
+液性限界 > ekiseigenkai\ ;
+栄養学者 > eiyougakusha\ ;
+都市交通 > toshikoutsuu\ ;
+交換教授 > koukankyouju\ ;
+学生時代 > gakuseijidai\ ;
+愛社精神 > aishaseishin\ ;
+老化現象 > roukagenshou\ ;
+社会問題 > shakaimondai\ ;
+盲管銃創 > moukanjuusou\ ;
+東海地方 > toukaichihou\ ;
+発行会社 > hakkougaisha\ ;
+近所合壁 > kinjogappeki\ ;
+音声圧縮 > onseiasshuku\ ;
+民族主義 > minzokushugi\ ;
+専門科目 > senmonkamoku\ ;
+減量経営 > genryoukeiei\ ;
+睡眠不足 > suiminbusoku\ ;
+兄妹喧嘩 > kyoudaigenka\ ;
+運送契約 > unsoukeiyaku\ ;
+舞台中継 > butaichuukei\ ;
+下層階級 > kasoukaikyuu\ ;
+経済闘争 > keizaitousou\ ;
+不良少女 > furyoushoujo\ ;
+応援演説 > ouen''enzetsu\ ;
+行動半径 > koudouhankei\ ;
+地震地帯 > jishinchitai\ ;
+通過貿易 > tsuukaboueki\ ;
+統計年鑑 > toukeinenkan\ ;
+人手不足 > hitodebusoku\ ;
+十中八九 > jitchuuhakku\ ;
+滋強飲料 > jikyouinryou\ ;
+四角号碼 > shikakugouma\ ;
+固定観念 > koteikan''nen\ ;
+経験科学 > keikenkagagu\ ;
+荷電粒子 > kadenryuushi\ ;
+人工生命 > jinkouseimei\ ;
+電気料金 > denkiryoukin\ ;
+往復葉書 > oufukuhagaki\ ;
+人造石油 > jinzousekiyu\ ;
+天竺牡丹 > tenjikubotan\ ;
+御馳走様 > gochisousama\ ;
+天路歴程 > tenrorekitei\ ;
+共同便所 > kyoudoubenjo\ ;
+暗殺未遂 > ansatsumisui\ ;
+未払費用 > miharaihiyou\ ;
+相互配属 > sougohaizoku\ ;
+破顔一笑 > hagan''isshou\ ;
+治療効果 > chiryoukouka\ ;
+猟官制度 > ryoukanseido\ ;
+収容患者 > shuuyoukanja\ ;
+武陵桃源 > buryoutougen\ ;
+人民所有 > jinminshoyuu\ ;
+反射係数 > hanshakeisuu\ ;
+工業意匠 > kougyouishou\ ;
+相対評価 > soutaihyouka\ ;
+経済問題 > keizaimondai\ ;
+三十六計 > sanjuurokkei\ ;
+残業手当 > zangyouteate\ ;
+投球動作 > toukyuudousa\ ;
+防災訓練 > bousaikunren\ ;
+耐用年数 > taiyounensuu\ ;
+民定憲法 > minteikenpou\ ;
+福利厚生 > fukurikousei\ ;
+消耗品費 > shoumouhinhi\ ;
+私有財産 > shiyuuzaisan\ ;
+学級閉鎖 > gakkyuuheisa\ ;
+人生記録 > jinseikiroku\ ;
+実利主義 > jitsurishugi\ ;
+公使館員 > koushikan''in\ ;
+進化論者 > shinkaronsha\ ;
+空中機動 > kuuchuukidou\ ;
+投票結果 > touhyoukekka\ ;
+前提条件 > zenteijouken\ ;
+外人選手 > gaijinsenshu\ ;
+巨大分子 > kyodaibunshi\ ;
+贋造紙幣 > ganzoushihei\ ;
+検定試験 > kenteishiken\ ;
+藍綬褒章 > ranjuhoushou\ ;
+司法試験 > shihoushiken\ ;
+柔軟体操 > juunantaisou\ ;
+不良導体 > furyoudoutai\ ;
+対戦車砲 > taisenshahou\ ;
+死体解剖 > shitaikaibou\ ;
+兼業農家 > kengyounouka\ ;
+公開録音 > koukairokuon\ ;
+海軍大臣 > kaigundaijin\ ;
+南京花火 > nankinhanabi\ ;
+扁桃腺炎 > hentousen''en\ ;
+中央銀行 > chuuouginkou\ ;
+圧縮空気 > asshukukuuki\ ;
+決済手段 > kessaishudan\ ;
+代理業者 > dairigyousha\ ;
+配置転換 > haichitenkan\ ;
+禁治産者 > kinchisansha\ ;
+全身不随 > zenshinfuzui\ ;
+運転技術 > untengijutsu\ ;
+電子音楽 > denshiongaku\ ;
+千万無量 > senmanmuryou\ ;
+自殺幇助 > jisatsuhoujo\ ;
+代数関数 > daisuukansuu\ ;
+音響設計 > onkyousekkei\ ;
+乳様突起 > nyuuyoutokki\ ;
+事前割当 > jizenwariate\ ;
+兵役免状 > heiekimenjou\ ;
+天涯孤独 > tengaikodoku\ ;
+不承不承 > fushoubushou\ ;
+無所属現 > mushozokugen\ ;
+木造家屋 > mokuzoukaoku\ ;
+養老年金 > yourounenkin\ ;
+悠々自適 > yuuyuujiteki\ ;
+事前研修 > jizenkenshuu\ ;
+体系文法 > taikeibunpou\ ;
+雌雄同体 > shiyuudoutai\ ;
+構造汚職 > kouzouoshoku\ ;
+基礎知識 > kisochishiki\ ;
+地域紛争 > chiikifunsou\ ;
+単峰駱駝 > tanpourakuda\ ;
+人気商売 > ninkishoubai\ ;
+姉妹喧嘩 > kyoudaigenka\ ;
+千姿万態 > senshibantai\ ;
+公有財産 > kouyuuzaisan\ ;
+先行投資 > senkoutoushi\ ;
+製造工程 > seizoukoutei\ ;
+自由競争 > jiyuukyousou\ ;
+川魚料理 > kawauoryouri\ ;
+現代科学 > gendaikagaku\ ;
+産業機械 > sangyoukikai\ ;
+不合格者 > fugoukakusha\ ;
+暑中見舞 > shochuumimai\ ;
+誘導尋問 > yuudoujinmon\ ;
+瑠璃唐草 > rurikarakusa\ ;
+定形動詞 > teikeidoushi\ ;
+喧々囂々 > kenkengougou\ ;
+人間関係 > ningenkankei\ ;
+赤十字社 > sekijuujisha\ ;
+無産階級 > musankaikyuu\ ;
+六法全書 > roppouzensho\ ;
+集権排除 > shuukenhaijo\ ;
+国際会議 > kokusaikaigi\ ;
+児童文学 > jidoubungaku\ ;
+軍事秘密 > gunjihimitsu\ ;
+任意出頭 > nin''ishuttou\ ;
+付随現象 > fuzuigenshou\ ;
+唇歯輔車 > shinshihosha\ ;
+原因調査 > gen''inchousa\ ;
+人跡未到 > jinsekimitou\ ;
+担当部長 > tantoubuchou\ ;
+主任教授 > shuninkyouju\ ;
+軍備削減 > gunbisakugen\ ;
+公開裁判 > koukaisaiban\ ;
+分解修理 > bunkaishuuri\ ;
+百花斉放 > hyakkaseihou\ ;
+人造真珠 > jinzoushinju\ ;
+神経過敏 > shinkeikabin\ ;
+送金為替 > soukinkawase\ ;
+厳正科学 > genseikagaku\ ;
+司法書士 > shihoushoshi\ ;
+在外資産 > zaigaishisan\ ;
+法律違反 > houritsuihan\ ;
+進路指導 > shinroshidou\ ;
+予備協約 > yobikyouyaku\ ;
+教育玩具 > kyouikugangu\ ;
+文法規則 > bunpoukisoku\ ;
+完了時制 > kanryoujisei\ ;
+事実誤認 > jijitsugonin\ ;
+軍需産業 > gunjusangyou\ ;
+自然科学 > shizenkagaku\ ;
+武者修行 > mushashugyou\ ;
+生成文法 > seiseibunpou\ ;
+司法大臣 > shihoudaijin\ ;
+主脳会談 > shunoukaidan\ ;
+御用商人 > goyoushounin\ ;
+使徒信条 > shitoshinjou\ ;
+証拠物件 > shoukobukken\ ;
+予備知識 > yobichishiki\ ;
+合名会社 > goumeigaisha\ ;
+共同一致 > kyoudouitchi\ ;
+武力政治 > buryokuseiji\ ;
+軌道修正 > kidoushuusei\ ;
+湾岸戦争 > wangansensou\ ;
+合格祈願 > goukakukigan\ ;
+化学肥料 > kagakuhiryou\ ;
+独裁国家 > dokusaikokka\ ;
+低利金融 > teirikin''yuu\ ;
+土類金属 > doruikinzoku\ ;
+共和政体 > kyouwaseitai\ ;
+法廷闘争 > houteitousou\ ;
+再生装置 > saiseisouchi\ ;
+北方領土 > hoppouryoudo\ ;
+全廃論者 > zenpaironsha\ ;
+累進課税 > ruishinkazei\ ;
+国防会議 > kokuboukaigi\ ;
+二百十日 > nihyakutooka\ ;
+事前通報 > jizentsuuhou\ ;
+社会意識 > shakaiishiki\ ;
+援助凍結 > enjotouketsu\ ;
+安全第一 > anzendaiichi\ ;
+個人攻撃 > kojinkougeki\ ;
+悪戯坊主 > itazurabouzu\ ;
+遊動円木 > yuudouenboku\ ;
+円形劇場 > enkeigekijou\ ;
+芭蕉梶木 > bashoukajiki\ ;
+情報科学 > jouhoukagaku\ ;
+傷害保険 > shougaihoken\ ;
+破産宣告 > hasansenkoku\ ;
+癩病患者 > raibyoukanja\ ;
+正正堂堂 > seiseidoudou\ ;
+因子分析 > inshibunseki\ ;
+待合政治 > machiaiseiji\ ;
+末法思想 > mappoushisou\ ;
+航続時間 > kouzokujikan\ ;
+専売特許 > senbaitokkyo\ ;
+同種同文 > doushudoubun\ ;
+鉄道事故 > tetsudoujiko\ ;
+真理関数 > shinrikansuu\ ;
+子子孫孫 > shishisonson\ ;
+英国石油 > eikokusekiyu\ ;
+保護観察 > hogokansatsu\ ;
+秘密兵器 > himitsuheiki\ ;
+郵便貯金 > yuubinchokin\ ;
+二重人格 > nijuujinkaku\ ;
+白衣明妃 > byakuemyouhi\ ;
+生体解剖 > seitaikaibou\ ;
+立太子礼 > rittaishirei\ ;
+実際問題 > jissaimondai\ ;
+公転速度 > koutensokudo\ ;
+一石二鳥 > issekinichou\ ;
+教育課程 > kyouikukatei\ ;
+人代名詞 > jindaimeishi\ ;
+優生結婚 > yuuseikekkon\ ;
+口頭試問 > koutoushimon\ ;
+交通安全 > koutsuuanzen\ ;
+和文英訳 > wabun''eiyaku\ ;
+本家本元 > honkehonmoto\ ;
+盲目飛行 > moumokuhikou\ ;
+滞空記録 > taikuukiroku\ ;
+立体裁断 > rittaisaidan\ ;
+国内事情 > kokunaijijou\ ;
+接触事故 > sesshokujiko\ ;
+乾燥腐朽 > kansoufukyuu\ ;
+合資会社 > goushigaisha\ ;
+彫刻具座 > choukokuguza\ ;
+戸外撮影 > kogaisatsuei\ ;
+応急修理 > oukyuushuuri\ ;
+麻酔注射 > masuichuusha\ ;
+末端価格 > mattankakaku\ ;
+偶像崇拝 > guuzousuuhai\ ;
+普通列車 > futsuuressha\ ;
+和平交渉 > waheikoushou\ ;
+循環論法 > junkanronpou\ ;
+飽食暖衣 > houshokudani\ ;
+機械工業 > kikaikougyou\ ;
+無限集合 > mugenshuugou\ ;
+有価証券 > yuukashouken\ ;
+総統選挙 > soutousenkyo\ ;
+人気役者 > ninkiyakusha\ ;
+市内通話 > shinaitsuuwa\ ;
+一等陸士 > ittourikushi\ ;
+講和条約 > kouwajouyaku\ ;
+工業都市 > kougyoutoshi\ ;
+卓上電話 > takujoudenwa\ ;
+客観主義 > kyakkanshugi\ ;
+共同謀議 > kyoudoubougi\ ;
+購買組合 > koubaikumiai\ ;
+請負仕事 > ukeoishigoto\ ;
+雇用契約 > koyoukeiyaku\ ;
+当意即妙 > touisokumyou\ ;
+労働市場 > roudoushijou\ ;
+反対尋問 > hantaijinmon\ ;
+士官学校 > shikangakkou\ ;
+名誉会長 > meiyokaichou\ ;
+平均給与 > heikinkyuuyo\ ;
+小便小僧 > shoubenkozou\ ;
+人権蹂躪 > jinkenjuurin\ ;
+圧縮酸素 > asshukusanso\ ;
+人権蹂躙 > jinkenjuurin\ ;
+年次報告 > nenjihoukoku\ ;
+郵便番号 > yuubinbangou\ ;
+計算問題 > keisanmondai\ ;
+総合雑誌 > sougouzasshi\ ;
+土地収用 > tochishuuyou\ ;
+広告効果 > koukokukouka\ ;
+幼児教育 > youjikyouiku\ ;
+近所迷惑 > kinjomeiwaku\ ;
+無限級数 > mugenkyuusuu\ ;
+一刻千金 > ikkokusenkin\ ;
+陪審制度 > baishinseido\ ;
+編集機能 > henshuukinou\ ;
+先取特権 > senshutokken\ ;
+専門分野 > senmonbun''ya\ ;
+担子菌類 > tanshikinrui\ ;
+関係強化 > kankeikyouka\ ;
+攻撃部隊 > kougekibutai\ ;
+秘密会議 > himitsukaigi\ ;
+武者修業 > mushashugyou\ ;
+消音装置 > shouonsouchi\ ;
+満州事変 > manshuujihen\ ;
+資産評価 > shisanhyouka\ ;
+出版許可 > shuppankyoka\ ;
+国内需要 > kokunaijuyou\ ;
+千万長者 > senbanchouja\ ;
+化学試験 > kagakushiken\ ;
+細胞培養 > saiboubaiyou\ ;
+音韻組織 > on''insoshiki\ ;
+処処方方 > shoshohoubou\ ;
+座標変換 > zahyouhenkan\ ;
+機械工学 > kikaikougaku\ ;
+第三部長 > daisanbuchou\ ;
+奇岩怪石 > kigankaiseki\ ;
+耐風構造 > taifuukouzou\ ;
+石鹸工場 > sekkenkoujou\ ;
+在郷軍人 > zaigougunjin\ ;
+幽霊会社 > yuureigaisha\ ;
+環境破壊 > kankyouhakai\ ;
+国際主義 > kokusaishugi\ ;
+御節料理 > osechiryouri\ ;
+修理工場 > shuurikoujou\ ;
+拒否反応 > kyohihan''nou\ ;
+一言一句 > ichigon''ikku\ ;
+単独飛行 > tandokuhikou\ ;
+主権在民 > shukenzaimin\ ;
+人格主義 > jinkakushugi\ ;
+自殺未遂 > jisatsumisui\ ;
+出家遁世 > shukketonsei\ ;
+紐革饂飩 > himokawaudon\ ;
+愚民政策 > guminseisaku\ ;
+単科大学 > tankadaigaku\ ;
+適正利潤 > tekiseirijun\ ;
+発音記号 > hatsuonkigou\ ;
+軍事協定 > gunjikyoutei\ ;
+西高東低 > seikoutoutei\ ;
+損耗人員 > sonmoujin''in\ ;
+実勢価格 > jisseikakaku\ ;
+援用設計 > en''yousekkei\ ;
+現場中継 > genbachuukei\ ;
+感知装置 > kanchisouchi\ ;
+議決機関 > giketsukikan\ ;
+安心立命 > anjinryoumei\ ;
+合同事業 > goudoujigyou\ ;
+同期信号 > doukishingou\ ;
+仲間意識 > nakamaishiki\ ;
+媒介変数 > baikaihensuu\ ;
+寒中水泳 > kanchuusuiei\ ;
+被保険物 > hihokenbutsu\ ;
+暗殺事件 > ansatsujiken\ ;
+折衷主義 > setchuushugi\ ;
+単式簿記 > tanshikiboki\ ;
+教養課程 > kyouyoukatei\ ;
+三者会談 > sanshakaidan\ ;
+連記投票 > renkitouhyou\ ;
+心理状態 > shinrijoutai\ ;
+海外市場 > kaigaishijou\ ;
+既成事実 > kiseijijitsu\ ;
+事務総局 > jimusoukyoku\ ;
+前進基地 > zenshinkichi\ ;
+同工異曲 > doukouikyoku\ ;
+命題関数 > meidaikansuu\ ;
+北西航路 > hokuseikouro\ ;
+合同会合 > goudoukaigou\ ;
+立地条件 > ritchijouken\ ;
+地理学者 > chirigakusha\ ;
+大所高所 > taishokousho\ ;
+重複保険 > juufukuhoken\ ;
+通常兵器 > tsuujouheiki\ ;
+外国部隊 > gaikokubutai\ ;
+文化交流 > bunkakouryuu\ ;
+市外通話 > shigaitsuuwa\ ;
+毛細血管 > mousaikekkan\ ;
+動態統計 > doutaitoukei\ ;
+社内情報 > shanaijouhou\ ;
+中公文庫 > chuukoubunko\ ;
+圧電効果 > atsudenkouka\ ;
+魑魅魍魎 > chimimouryou\ ;
+循環系統 > junkankeitou\ ;
+対人関係 > taijinkankei\ ;
+普通選挙 > futsuusenkyo\ ;
+条件闘争 > joukentousou\ ;
+千状万態 > senjoubantai\ ;
+化成工業 > kaseikougyou\ ;
+経済原論 > keizaigenron\ ;
+権謀術数 > kenboujussuu\ ;
+不揮発性 > fukihatsusei\ ;
+高等学校 > koutougakkou\ ;
+連合王国 > rengououkoku\ ;
+郵便書簡 > yuubinshokan\ ;
+深謀遠慮 > shinbouenryo\ ;
+住民運動 > juumin''undou\ ;
+法文学部 > houbungakubu\ ;
+普通郵便 > futsuuyuubin\ ;
+君主政体 > kunshuseitai\ ;
+捲土重来 > kendochourai\ ;
+女声合唱 > joseigasshou\ ;
+米西戦争 > beiseisensou\ ;
+高度成長 > koudoseichou\ ;
+乾布摩擦 > kanpumasatsu\ ;
+中華思想 > chuukashisou\ ;
+贈与証書 > zouyoshousho\ ;
+公衆衛生 > koushuueisei\ ;
+社会科学 > shakaikagaku\ ;
+農芸化学 > nougeikagaku\ ;
+交通整理 > koutsuuseiri\ ;
+特殊部隊 > tokushubutai\ ;
+事実無根 > jijitsumukon\ ;
+孔雀妙王 > kujakumyouou\ ;
+財産分与 > zaisanbun''yo\ ;
+邦字新聞 > houjishinbun\ ;
+機動計画 > kidoukeikaku\ ;
+孤立主義 > koritsushugi\ ;
+明治天皇 > meijiten''nou\ ;
+焦点距離 > shoutenkyori\ ;
+集合時間 > shuugoujikan\ ;
+住宅地区 > juutakuchiku\ ;
+多角貿易 > takakuboueki\ ;
+非喫煙者 > hikitsuensha\ ;
+消化不良 > shoukafuryou\ ;
+舞台照明 > butaishoumei\ ;
+不生産的 > fuseisanteki\ ;
+非生産的 > hiseisanteki\ ;
+募集人員 > boshuujin''in\ ;
+原稿用紙 > genkouyoushi\ ;
+無意識的 > muishikiteki\ ;
+総司令官 > soushireikan\ ;
+譲渡所得 > joutoshotoku\ ;
+学童保育 > gakudouhoiku\ ;
+最終兵器 > saishuuheiki\ ;
+滑走車輪 > kassousharin\ ;
+月刊雑誌 > gekkanzasshi\ ;
+傍若無人 > boujakubujin\ ;
+勤労奉仕 > kinrouhoushi\ ;
+性腺摘除 > seisentekijo\ ;
+憲法改正 > kenpoukaisei\ ;
+行路病者 > kourobyousha\ ;
+一人芝居 > hitorishibai\ ;
+共同防衛 > kyoudoubouei\ ;
+闘志満満 > toushimanman\ ;
+市勢調査 > shiseichousa\ ;
+会厭軟骨 > een''nankotsu\ ;
+軍用地図 > gun''youchizu\ ;
+東奔西走 > touhonseisou\ ;
+交代作業 > koutaisagyou\ ;
+日記文学 > nikkibungaku\ ;
+日系米人 > nikkeibeijin\ ;
+至公至平 > shikoushihei\ ;
+関連会社 > kanrengaisha\ ;
+人権宣言 > jinkensengen\ ;
+人造人間 > jinzouningen\ ;
+傾斜家賃 > keishayachin\ ;
+自民党則 > jimintousoku\ ;
+反復記号 > hanpukukigou\ ;
+日本航空 > nipponkoukuu\ ;
+英才教育 > eisaikyouiku\ ;
+排水条件 > haisuijouken\ ;
+英国航空 > eikokukoukuu\ ;
+暗中摸索 > anchuumosaku\ ;
+前哨騎兵 > zenshoukihei\ ;
+水素爆弾 > suisobakudan\ ;
+潅漑用水 > kangaiyousui\ ;
+一斉射撃 > isseishageki\ ;
+基軸通貨 > kijikutsuuka\ ;
+傾斜生産 > keishaseisan\ ;
+境界理論 > kyoukairiron\ ;
+天皇陛下 > ten''nouheika\ ;
+天然果汁 > ten''nenkajuu\ ;
+霊肉一致 > reinikuitchi\ ;
+経済復興 > keizaifukkou\ ;
+人口統計 > jinkoutoukei\ ;
+戦時産業 > senjisangyou\ ;
+古銭学者 > kosengakusha\ ;
+対弾道弾 > taidandoudan\ ;
+製造番号 > seizoubangou\ ;
+多重人格 > tajuujinkaku\ ;
+一刀両断 > ittouryoudan\ ;
+共産主義 > kyousanshugi\ ;
+記名投票 > kimeitouhyou\ ;
+休憩時間 > kyuukeijikan\ ;
+丸太足場 > marutaashiba\ ;
+桃色遊戯 > momoiroyuugi\ ;
+武士階級 > bushikaikyuu\ ;
+国際電話 > kokusaidenwa\ ;
+人工地震 > jinkoujishin\ ;
+潜在主権 > senzaishuken\ ;
+過小評価 > kashouhyouka\ ;
+範疇部門 > hanchuubumon\ ;
+修道制度 > shuudouseido\ ;
+統語範疇 > tougohanchuu\ ;
+衛生設備 > eiseisetsubi\ ;
+一次産品 > ichijisanpin\ ;
+公明正大 > koumeiseidai\ ;
+花火線香 > hanabisenkou\ ;
+舶用機関 > hakuyoukikan\ ;
+公民権法 > kouminkenhou\ ;
+昏睡状態 > konsuijoutai\ ;
+対向車線 > taikoushasen\ ;
+鉄拳制裁 > tekkenseisai\ ;
+桂冠詩人 > keikanshijin\ ;
+人口調査 > jinkouchousa\ ;
+司法解剖 > shihoukaibou\ ;
+人口静態 > jinkouseitai\ ;
+有体動産 > yuutaidousan\ ;
+採用試験 > saiyoushiken\ ;
+気象情報 > kishoujouhou\ ;
+有線放送 > yuusenhousou\ ;
+喀痰検査 > kakutankensa\ ;
+郷土料理 > kyoudoryouri\ ;
+三段論法 > sandanronpou\ ;
+時代精神 > jidaiseishin\ ;
+誇大広告 > kodaikoukoku\ ;
+一昨々夜 > issakusakuya\ ;
+都市計画 > toshikeikaku\ ;
+関東一円 > kantouichien\ ;
+自然発生 > shizenhassei\ ;
+欽定憲法 > kinteikenpou\ ;
+数値制御 > suuchiseigyo\ ;
+武者人形 > mushaningyou\ ;
+分周回路 > bunshuukairo\ ;
+臥龍点睛 > garyoutensei\ ;
+市民大会 > shimintaikai\ ;
+赤字国債 > akajikokusai\ ;
+使用方法 > shiyouhouhou\ ;
+小春日和 > koharubiyori\ ;
+公式試合 > koushikijiai\ ;
+照射処理 > shoushashori\ ;
+参勤交替 > sankinkoutai\ ;
+羊頭狗肉 > youtoukuniku\ ;
+斡旋業者 > assengyousha\ ;
+会社概要 > kaishagaiyou\ ;
+民主政体 > minshuseitai\ ;
+粗放農業 > sohounougyou\ ;
+財務諸表 > zaimushohyou\ ;
+蚊取線香 > katorisenkou\ ;
+広報情報 > kouhoujouhou\ ;
+緊急事態 > kinkyuujitai\ ;
+均衡価格 > kinkoukakaku\ ;
+季節変異 > kisetsuhen''i\ ;
+有感地震 > yuukanjishin\ ;
+緩和振動 > kanwashindou\ ;
+幽霊人口 > yuureijinkou\ ;
+統語指標 > tougoshihyou\ ;
+最高価格 > saikoukakaku\ ;
+酸性白土 > sanseihakudo\ ;
+民族衣装 > minzokuishou\ ;
+修士課程 > shuushikatei\ ;
+公益法人 > kouekihoujin\ ;
+歴史主義 > rekishishugi\ ;
+弁慶格子 > benkeigoushi\ ;
+第二人称 > dainininshou\ ;
+下流社会 > karyuushakai\ ;
+快楽主義 > kairakushugi\ ;
+不精不精 > fushoubushou\ ;
+制限速度 > seigensokudo\ ;
+文武両道 > bunburyoudou\ ;
+上昇限度 > joushougendo\ ;
+作用積分 > sayousekibun\ ;
+腹筋運動 > fukkin''undou\ ;
+公認記録 > kouninkiroku\ ;
+一網打尽 > ichimoudajin\ ;
+学校用品 > gakkouyouhin\ ;
+住宅手当 > juutakuteate\ ;
+認知科学 > ninchikagaku\ ;
+商売道具 > shoubaidougu\ ;
+原子戦争 > genshisensou\ ;
+二重焦点 > nijuushouten\ ;
+口答試問 > koutoushimon\ ;
+図書館長 > toshokanchou\ ;
+在庫調整 > zaikochousei\ ;
+対数関数 > taisuukansuu\ ;
+政教一致 > seikyouitchi\ ;
+文芸批評 > bungeihihyou\ ;
+線形代数 > senkeidaisuu\ ;
+連合政権 > rengouseiken\ ;
+頼母子講 > tanomoshikou\ ;
+在韓米軍 > zaikanbeigun\ ;
+一夜乞食 > ichiyakojiki\ ;
+異常終了 > ijoushuuryou\ ;
+試験地獄 > shikenjigoku\ ;
+社員教育 > shainkyouiku\ ;
+企業年金 > kigyounenkin\ ;
+乞食根性 > kojikikonjou\ ;
+企業合同 > kigyougoudou\ ;
+自主指針 > jishushishin\ ;
+感慨無量 > kangaimuryou\ ;
+敵性国家 > tekiseikokka\ ;
+等差級数 > tousakyuusuu\ ;
+師範学校 > shihangakkou\ ;
+経済社会 > keizaishakai\ ;
+改良主義 > kairyoushugi\ ;
+経済制裁 > keizaiseisai\ ;
+主戦投手 > shusentoushu\ ;
+遊撃隊員 > yuugekitaiin\ ;
+一時帰休 > ichijikikyuu\ ;
+受益証券 > juekishouken\ ;
+拙速主義 > sessokushugi\ ;
+未開拓地 > mikaitakuchi\ ;
+全権公使 > zenkenkoushi\ ;
+統制経済 > touseikeizai\ ;
+田園風景 > den''enfuukei\ ;
+旅行日程 > ryokounittei\ ;
+無量大数 > muryoudaisuu\ ;
+割引歩合 > waribikibuai\ ;
+反核運動 > hankakuundou\ ;
+香港返還 > honkonhenkan\ ;
+企業合併 > kigyougappei\ ;
+非行少年 > hikoushounen\ ;
+野外撮影 > yagaisatsuei\ ;
+千手観音 > senjukan''non\ ;
+精神主義 > seishinshugi\ ;
+終始一貫 > shuushiikkan\ ;
+県民会館 > kenminkaikan\ ;
+教条主義 > kyoujoushugi\ ;
+更生会社 > kouseigaisha\ ;
+繊維工業 > sen''ikougyou\ ;
+人間同士 > ningendoushi\ ;
+勘合貿易 > kangouboueki\ ;
+百家争鳴 > hyakkasoumei\ ;
+世界政策 > sekaiseisaku\ ;
+家屋台帳 > kaokudaichou\ ;
+東海道線 > toukaidousen\ ;
+過当競争 > katoukyousou\ ;
+液体窒素 > ekitaichisso\ ;
+平和協定 > heiwakyoutei\ ;
+無線電信 > musendenshin\ ;
+専門用語 > senmon''yougo\ ;
+人造肥料 > jinzouhiryou\ ;
+大砲三門 > taihousanmon\ ;
+実験装置 > jikkensouchi\ ;
+中央労働 > chuuouroudou\ ;
+内線番号 > naisenbangou\ ;
+伝記作者 > denkisakusha\ ;
+人民公社 > jinminkousha\ ;
+連絡切符 > renrakukippu\ ;
+共同墓地 > kyoudoubochi\ ;
+実態調査 > jittaichousa\ ;
+総務長官 > soumuchoukan\ ;
+混乱状態 > konranjoutai\ ;
+家族意識 > kazokuishiki\ ;
+外柔内剛 > gaijuunaigou\ ;
+訪問販売 > houmonhanbai\ ;
+排斥運動 > haisekiundou\ ;
+原子弾頭 > genshidantou\ ;
+営業案内 > eigyouan''nai\ ;
+天文航法 > tenmonkouhou\ ;
+非実際的 > hijissaiteki\ ;
+参勤交代 > sankinkoutai\ ;
+裏書譲渡 > uragakijouto\ ;
+関係書類 > kankeishorui\ ;
+免許皆伝 > menkyokaiden\ ;
+回転競技 > kaitenkyougi\ ;
+経済水域 > keizaisuiiki\ ;
+無欲恬淡 > muyokutentan\ ;
+自我実現 > jigajitsugen\ ;
+執行猶予 > shikkouyuuyo\ ;
+融通手形 > yuuzuutegata\ ;
+厚生年金 > kouseinenkin\ ;
+院内感染 > in''naikansen\ ;
+悪性水腫 > akuseisuishu\ ;
+団十郎丈 > danjuuroujou\ ;
+以心伝心 > ishindenshin\ ;
+一字千金 > ichijisenkin\ ;
+業績悪化 > gyousekiakka\ ;
+二束三文 > nisokusanmon\ ;
+兵器拡散 > heikikakusan\ ;
+交友関係 > kouyuukankei\ ;
+国際政治 > kokusaiseiji\ ;
+書面審理 > shomenshinri\ ;
+人間社会 > ningenshakai\ ;
+軍国主義 > gunkokushugi\ ;
+水上競技 > suijoukyougi\ ;
+河原乞食 > kawarakojiki\ ;
+二重撮影 > nijuusatsuei\ ;
+絶対評価 > zettaihyouka\ ;
+在米邦人 > zaibeihoujin\ ;
+四月馬鹿 > shigatsubaka\ ;
+新進気鋭 > shinshinkiei\ ;
+所得控除 > shotokukoujo\ ;
+関係会社 > kankeigaisha\ ;
+自信満満 > jishinmanman\ ;
+日本学者 > nihongakusha\ ;
+春日大社 > kasugataisha\ ;
+文明社会 > bunmeishakai\ ;
+同人雑誌 > doujinzasshi\ ;
+司法裁判 > shihousaiban\ ;
+人体実験 > jintaijikken\ ;
+亡命政権 > boumeiseiken\ ;
+仲間同士 > nakamadoushi\ ;
+経営工学 > keieikougaku\ ;
+賛否両論 > sanpiryouron\ ;
+不法集会 > fuhoushuukai\ ;
+眼高手低 > gankoushutei\ ;
+自動小銃 > jidoushoujuu\ ;
+地域社会 > chiikishakai\ ;
+交流人事 > kouryuujinji\ ;
+特殊効果 > tokushukouka\ ;
+自家中毒 > jikachuudoku\ ;
+盲貫銃創 > moukanjuusou\ ;
+人気番組 > ninkibangumi\ ;
+敵本主義 > tekihonshugi\ ;
+口内性交 > kounaiseikou\ ;
+脳軟化症 > nounankashou\ ;
+現地法人 > genchihoujin\ ;
+自動車泥 > jidoushadoro\ ;
+一時停止 > ichijiteishi\ ;
+学園紛争 > gakuenfunsou\ ;
+最高学府 > saikougakufu\ ;
+保険契約 > hokenkeiyaku\ ;
+女性差別 > joseisabetsu\ ;
+児童福祉 > jidoufukushi\ ;
+試験問題 > shikenmondai\ ;
+漸進主義 > zenshinshugi\ ;
+音信不通 > onshinfutsuu\ ;
+勇往邁進 > yuuoumaishin\ ;
+静止状態 > seishijoutai\ ;
+北支事変 > hokushijihen\ ;
+寸借詐欺 > sunshakusagi\ ;
+指名通話 > shimeitsuuwa\ ;
+苦心惨憺 > kushinsantan\ ;
+牽強付会 > kenkyoufukai\ ;
+寒冷前線 > kanreizensen\ ;
+速度制限 > sokudoseigen\ ;
+四部合唱 > shibugasshou\ ;
+電電公社 > dendenkousha\ ;
+優勝候補 > yuushoukouho\ ;
+友好関係 > yuukoukankei\ ;
+救援物資 > kyuuenbusshi\ ;
+神社仏閣 > jinjabukkaku\ ;
+水平思考 > suiheishikou\ ;
+音感教育 > onkankyouiku\ ;
+滞納処分 > tainoushobun\ ;
+共同経営 > kyoudoukeiei\ ;
+二六時中 > nirokujichuu\ ;
+一時賜金 > ichijishikin\ ;
+自然崇拝 > shizensuuhai\ ;
+審議未了 > shingimiryou\ ;
+養子縁組 > youshiengumi\ ;
+氏族制度 > shizokuseido\ ;
+軍陣医学 > gunjin''igaku\ ;
+正四面体 > seishimentai\ ;
+定格請負 > teikakuukeoi\ ;
+待遇改善 > taiguukaizen\ ;
+繊維光学 > sen''ikougaku\ ;
+黒人霊歌 > kokujinreika\ ;
+特殊機能 > tokushukinou\ ;
+経路積分 > keirosekibun\ ;
+国営農場 > kokueinoujou\ ;
+国粋主義 > kokusuishugi\ ;
+甲状腺炎 > koujousen''en\ ;
+資産合計 > shisangoukei\ ;
+鯨飲馬食 > geiinbashoku\ ;
+心臓発作 > shinzouhossa\ ;
+新人歌手 > shinjinkashu\ ;
+輸入手形 > yunyuutegata\ ;
+圧着端子 > atsugitanshi\ ;
+未改心者 > mikaishinsha\ ;
+無効投票 > mukoutouhyou\ ;
+難攻不落 > nankoufuraku\ ;
+一心同体 > isshindoutai\ ;
+宥和政策 > yuuwaseisaku\ ;
+限界効用 > genkaikouyou\ ;
+十万億土 > juuman''okudo\ ;
+変態心理 > hentaishinri\ ;
+拍子記号 > hyoushikigou\ ;
+公会問答 > koukaimondou\ ;
+考古学者 > koukogakusha\ ;
+野球選手 > yakyuusenshu\ ;
+夢遊病者 > muyuubyousha\ ;
+要所要所 > youshoyousho\ ;
+使徒継承 > shitokeishou\ ;
+励磁電流 > reijidenryuu\ ;
+社会制度 > shakaiseido\ ;
+代理領事 > dairiryouji\ ;
+点数切符 > tensuukippu\ ;
+化成肥料 > kaseihiryou\ ;
+未成年者 > miseinensha\ ;
+一天万乗 > ittenbanjou\ ;
+親子関係 > oyakokankei\ ;
+恐怖政治 > kyoufuseiji\ ;
+虚数単位 > kyosuutan''i\ ;
+選挙制度 > senkyoseido\ ;
+大願成就 > daiganjouju\ ;
+円卓会議 > entakukaigi\ ;
+大宮御所 > oomiyagosho\ ;
+上下関係 > jougekankei\ ;
+公営企業 > koueikigyou\ ;
+重液分離 > juuekibunri\ ;
+実践理性 > jissenrisei\ ;
+行住坐臥 > gyoujuuzaga\ ;
+言行一致 > genkouitchi\ ;
+広大無辺 > koudaimuhen\ ;
+優先事項 > yuusenjikou\ ;
+携帯電話 > keitaidenwa\ ;
+時代錯誤 > jidaisakugo\ ;
+人工衛星 > jinkoueisei\ ;
+線形順序 > senkeijunjo\ ;
+外交官補 > gaikoukanho\ ;
+住居手当 > juukyoteate\ ;
+道路標示 > dourohyouji\ ;
+予備将校 > yobishoukou\ ;
+民間飛行 > minkanhikou\ ;
+永子作権 > eikosakuken\ ;
+社会運動 > shakaiundou\ ;
+移行計画 > ikoukeikaku\ ;
+接近経路 > sekkinkeiro\ ;
+世界経済 > sekaikeizai\ ;
+浮世草子 > ukiyozoushi\ ;
+定数是正 > teisuuzesei\ ;
+安保条約 > anpojouyaku\ ;
+販売値段 > hanbainedan\ ;
+基底構造 > kiteikouzou\ ;
+必須条件 > hissujouken\ ;
+区裁判所 > kusaibansho\ ;
+予行演習 > yokouenshuu\ ;
+選挙運動 > senkyoundou\ ;
+国際規模 > kokusaikibo\ ;
+運転免許 > untenmenkyo\ ;
+線形論理 > senkeironri\ ;
+年賀郵便 > nengayuubin\ ;
+温風暖房 > onpuudanbou\ ;
+内部構造 > naibukouzou\ ;
+不定型詩 > futeikeishi\ ;
+黄金崇拝 > ougonsuuhai\ ;
+世話女房 > sewanyoubou\ ;
+犬儒学派 > kenjugakuha\ ;
+一品料理 > ippinryouri\ ;
+亜硫酸塩 > aryuusan''en\ ;
+有声子音 > yuuseishiin\ ;
+皆兵制度 > kaiheiseido\ ;
+未経験者 > mikeikensha\ ;
+上意下達 > jouikatatsu\ ;
+車間距離 > shakankyori\ ;
+氷河時代 > hyougajidai\ ;
+情報理論 > jouhouriron\ ;
+御多忙中 > gotabouchuu\ ;
+愛染明王 > aizenmyouou\ ;
+平面交差 > heimenkousa\ ;
+経験主義 > keikenshugi\ ;
+弁護士会 > bengoshikai\ ;
+純情可憐 > junjoukaren\ ;
+載貨吃水 > saikakissui\ ;
+半濁音符 > handakuonfu\ ;
+愛染妙王 > aizenmyouou\ ;
+閨秀画家 > keishuugaka\ ;
+三半規管 > sanhankikan\ ;
+封建時代 > houkenjidai\ ;
+越冬資金 > ettoushikin\ ;
+所帯道具 > shotaidougu\ ;
+傲岸無礼 > gouganburei\ ;
+社会保険 > shakaihoken\ ;
+較優位論 > kakuyuuiron\ ;
+世論調査 > yoronchousa\ ;
+冬期休暇 > toukikyuuka\ ;
+上部構造 > joubukouzou\ ;
+象形文字 > shoukeimoji\ ;
+農本主義 > nouhonshugi\ ;
+一切衆生 > issaishujou\ ;
+旧態依然 > kyuutaiizen\ ;
+整理番号 > seiribangou\ ;
+当座資産 > touzashisan\ ;
+残品整理 > zanpinseiri\ ;
+宇宙速度 > uchuusokudo\ ;
+加水分解 > kasuibunkai\ ;
+宣伝価値 > sendenkachi\ ;
+年季奉公 > nenkiboukou\ ;
+貨幣経済 > kaheikeizai\ ;
+無期懲役 > mukichoueki\ ;
+市場区分 > shijoukubun\ ;
+初期設定 > shokisettei\ ;
+人造繊維 > jinzousen''i\ ;
+普通預金 > futsuuyokin\ ;
+低利資金 > teirishikin\ ;
+真珠細工 > shinjuzaiku\ ;
+主知主義 > shuchishugi\ ;
+二項係数 > nikoukeisuu\ ;
+素性構造 > soseikouzou\ ;
+愛国主義 > aikokushugi\ ;
+戦闘支援 > sentoushien\ ;
+人名辞書 > jinmeijisho\ ;
+前輪駆動 > zenrinkudou\ ;
+価格操作 > kakakusousa\ ;
+形而下学 > keijikagaku\ ;
+一期一会 > ichigoichie\ ;
+土木工事 > dobokukouji\ ;
+女子高生 > joshikousei\ ;
+王道楽土 > oudourakudo\ ;
+悪戦苦闘 > akusenkutou\ ;
+神経外科 > shinkeigeka\ ;
+不眠不休 > fuminfukyuu\ ;
+名誉教授 > meiyokyouju\ ;
+図書館員 > toshokan''in\ ;
+高歌放吟 > koukahougin\ ;
+構成単位 > kouseitan''i\ ;
+外人記者 > gaijinkisha\ ;
+例外処理 > reigaishori\ ;
+夫婦茶碗 > meotodjawan\ ;
+全面講和 > zenmenkouwa\ ;
+義務教育 > gimukyouiku\ ;
+悲観論者 > hikanronsha\ ;
+個人情報 > kojinjouhou\ ;
+町段畝歩 > choutansebu\ ;
+代理大使 > dairitaishi\ ;
+構造主義 > kouzoushugi\ ;
+内線電話 > naisendenwa\ ;
+公示価格 > koujikakaku\ ;
+液体酸素 > ekitaisanso\ ;
+沃度丁幾 > youdochinki\ ;
+刑事訴訟 > keijisoshou\ ;
+稼働人口 > kadoujinkou\ ;
+軽機関銃 > keikikanjuu\ ;
+機密保護 > kimitsuhogo\ ;
+予備交渉 > yobikoushou\ ;
+透視図法 > toushizuhou\ ;
+練習試合 > renshuujiai\ ;
+可視光線 > kashikousen\ ;
+筆記試験 > hikkishiken\ ;
+公定相場 > kouteisouba\ ;
+価格規制 > kakakukisei\ ;
+加重平均 > kajuuheikin\ ;
+武装警官 > busoukeikan\ ;
+水子供養 > mizugokuyou\ ;
+千変万化 > senpenbanka\ ;
+査定価格 > sateikakaku\ ;
+下層社会 > kasoushakai\ ;
+自然主義 > shizenshugi\ ;
+興味本位 > kyoumihon''i\ ;
+無体資産 > mutaishisan\ ;
+経済封鎖 > keizaifuusa\ ;
+競争相手 > kyousouaite\ ;
+五輪大会 > gorintaikai\ ;
+日本三景 > nihonsankei\ ;
+油性塗料 > yuseitoryou\ ;
+改訂増補 > kaiteizouho\ ;
+一般概念 > ippangainen\ ;
+小一時間 > koichijikan\ ;
+三脚椅子 > sankyakuisu\ ;
+皮膚感覚 > hifukankaku\ ;
+権利行使 > kenrikoushi\ ;
+漢字変換 > kanjihenkan\ ;
+無体財産 > mutaizaisan\ ;
+全体会議 > zentaikaigi\ ;
+二重抵当 > nijuuteitou\ ;
+機械文明 > kikaibunmei\ ;
+天津乙女 > amatsuotome\ ;
+利害関係 > rigaikankei\ ;
+多角経営 > takakukeiei\ ;
+夫婦別姓 > fuufubessei\ ;
+日本語訳 > nihongoyaku\ ;
+交換機能 > koukankinou\ ;
+産卵場所 > sanranbasho\ ;
+走行距離 > soukoukyori\ ;
+無尽組合 > mujinkumiai\ ;
+再生利用 > saiseiriyou\ ;
+航空母艦 > koukuubokan\ ;
+人名辞典 > jinmeijiten\ ;
+昨非今是 > sakuhikonze\ ;
+新古典派 > shinkotenha\ ;
+経営資源 > keieishigen\ ;
+被害妄想 > higaimousou\ ;
+細菌兵器 > saikinheiki\ ;
+飽和溶液 > houwayoueki\ ;
+一般会計 > ippankaikei\ ;
+準備資金 > junbishikin\ ;
+政党政治 > seitouseiji\ ;
+母子年金 > boshinenkin\ ;
+美容整形 > biyouseikei\ ;
+初期投資 > shokitoushi\ ;
+最短距離 > saitankyori\ ;
+周辺機器 > shuuhenkiki\ ;
+制限時間 > seigenjikan\ ;
+勤労意欲 > kinrouiyoku\ ;
+倉庫会社 > soukogaisha\ ;
+未開社会 > mikaishakai\ ;
+過大評価 > kadaihyouka\ ;
+破廉恥罪 > harenchizai\ ;
+時限装置 > jigensouchi\ ;
+景気変動 > keikihendou\ ;
+一次記憶 > ichijikioku\ ;
+衝動行為 > shoudoukoui\ ;
+許容範囲 > kyoyouhan''i\ ;
+生産管理 > seisankanri\ ;
+医療伝道 > iryoudendou\ ;
+突貫工事 > tokkankouji\ ;
+選考基準 > senkoukijun\ ;
+都市銀行 > toshiginkou\ ;
+宣伝映画 > senden''eiga\ ;
+慈善事業 > jizenjigyou\ ;
+加速度計 > kasokudokei\ ;
+傲慢不遜 > goumanfuson\ ;
+刑務作業 > keimusagyou\ ;
+地球規模 > chikyuukibo\ ;
+途中計時 > tochuukeiji\ ;
+高射特科 > koushatokka\ ;
+三面六臂 > sanmenroppi\ ;
+微分断面 > bibundanmen\ ;
+分娩作用 > bunbensayou\ ;
+保健体育 > hokentaiiku\ ;
+暴走運転 > bousouunten\ ;
+諮問機関 > shimonkikan\ ;
+田舎芝居 > inakashibai\ ;
+癌遺伝子 > gan''idenshi\ ;
+百鬼夜行 > hyakkiyakou\ ;
+永小作権 > eikosakuken\ ;
+無死満塁 > mushimanrui\ ;
+二番抵当 > nibanteitou\ ;
+総務部長 > soumubuchou\ ;
+自由貿易 > jiyuuboueki\ ;
+平和条項 > heiwajoukou\ ;
+気分転換 > kibuntenkan\ ;
+儒教主義 > jukyoushugi\ ;
+女歌舞伎 > on''nakabuki\ ;
+飛行機雲 > hikoukigumo\ ;
+路面電車 > romendensha\ ;
+単独行為 > tandokukoui\ ;
+誠心誠意 > seishinseii\ ;
+日本料理 > nihonryouri\ ;
+故事来歴 > kojiraireki\ ;
+内輪喧嘩 > uchiwagenka\ ;
+亜硝酸塩 > ashousan''en\ ;
+一角獣座 > ikkakujuuza\ ;
+反体制派 > hantaiseiha\ ;
+区劃整理 > kukakuseiri\ ;
+放任主義 > houninshugi\ ;
+遺族給付 > izokukyuufu\ ;
+変位制御 > hen''iseigyo\ ;
+文部大臣 > monbudaijin\ ;
+女権論者 > jokenronsha\ ;
+下士官兵 > kashikanhei\ ;
+中禅寺湖 > chuuzenjiko\ ;
+製品原価 > seihingenka\ ;
+人民主義 > jinminshugi\ ;
+勉強部屋 > benkyoubeya\ ;
+神宮外苑 > jinguugaien\ ;
+全般支援 > zenpanshien\ ;
+少壮有為 > shousouyuui\ ;
+経口投与 > keikoutouyo\ ;
+換気装置 > kankisouchi\ ;
+共和制度 > kyouwaseido\ ;
+二課勉強 > nikabenkyou\ ;
+予防接種 > yobousesshu\ ;
+異国情緒 > ikokujoucho\ ;
+運転停止 > untenteishi\ ;
+悪口雑言 > akkouzougon\ ;
+軍法会議 > gunpoukaigi\ ;
+天地無用 > tenchimuyou\ ;
+異常性欲 > ijouseiyoku\ ;
+人工受胎 > jinkoujutai\ ;
+日本文法 > nihonbunpou\ ;
+上下水道 > jougesuidou\ ;
+銀行口座 > ginkoukouza\ ;
+夏期大学 > kakidaigaku\ ;
+連邦議会 > renpougikai\ ;
+末期症状 > makkijoutai\ ;
+五段動詞 > godandoushi\ ;
+立法機関 > rippoukikan\ ;
+因循姑息 > injunkosoku\ ;
+大山椒魚 > oosanshouuo\ ;
+虎視眈眈 > koshitantan\ ;
+背面飛行 > haimenhikou\ ;
+弾丸道路 > dangandouro\ ;
+優先外貨 > yuusengaika\ ;
+当用漢字 > touyoukanji\ ;
+民本主義 > minponshugi\ ;
+人工受紛 > jinkoujufun\ ;
+主要物価 > shuyoubukka\ ;
+人工受精 > jinkoujusei\ ;
+登山電車 > tozandensha\ ;
+暫定政府 > zanteiseifu\ ;
+乗合馬車 > noriaibasha\ ;
+期成同盟 > kiseidoumei\ ;
+散光星雲 > sankouseiun\ ;
+飢餓療法 > kigaryouhou\ ;
+糸偏景気 > itohenkeiki\ ;
+物価変動 > bukkahendou\ ;
+近郊都市 > kinkoutoshi\ ;
+公開期間 > koukaikikan\ ;
+前後不覚 > zengofukaku\ ;
+準備体操 > junbitaisou\ ;
+母系家族 > bokeikazoku\ ;
+歯科医術 > shikaijutsu\ ;
+金管楽器 > kinkangakki\ ;
+切磋琢磨 > sessatakuma\ ;
+一時解雇 > ichijikaiko\ ;
+運転資金 > untenshikin\ ;
+塑性限界 > soseigenkai\ ;
+金権政治 > kinkenseiji\ ;
+防御部隊 > bougyobutai\ ;
+静止衛星 > seishieisei\ ;
+再度協議 > saidokyougi\ ;
+一切合財 > issaigassai\ ;
+遺産相続 > isansouzoku\ ;
+塑性変形 > soseihenkei\ ;
+一天四海 > ittenshikai\ ;
+音響効果 > onkyoukouka\ ;
+単本位性 > tanhon''isei\ ;
+雲散霧消 > unsanmushou\ ;
+全体主義 > zentaishugi\ ;
+停止時間 > teishijikan\ ;
+低空飛行 > teikuuhikou\ ;
+支度部屋 > shitakubeya\ ;
+加工貿易 > kakouboueki\ ;
+衛星放送 > eiseihousou\ ;
+電気分解 > denkibunkai\ ;
+風致地区 > fuuchichiku\ ;
+密閉容器 > mippeiyouki\ ;
+連帯債務 > rentaisaimu\ ;
+金剛薩堕 > kongousatta\ ;
+一人天下 > hitoridenka\ ;
+時間反転 > jikanhanten\ ;
+西欧文明 > seioubunmei\ ;
+下部組織 > kabusoshiki\ ;
+相乗効果 > soujoukouka\ ;
+水平距離 > suiheikyori\ ;
+軍備撤廃 > gunbiteppai\ ;
+固有名詞 > koyuumeishi\ ;
+人間疎外 > ningensogai\ ;
+有機化学 > yuukikagaku\ ;
+仲間値段 > nakamanedan\ ;
+温故知新 > onkochishin\ ;
+暗視装置 > anshisouchi\ ;
+国家試験 > kokkashiken\ ;
+青果市場 > seikaichiba\ ;
+民事裁判 > minjisaiban\ ;
+原子兵器 > genshiheiki\ ;
+肯定応答 > kouteioutou\ ;
+変更不能 > henkoufunou\ ;
+紀勢本線 > kiseihonsen\ ;
+麻裏草履 > asaurazouri\ ;
+台湾坊主 > taiwanbouzu\ ;
+季刊雑誌 > kikanzasshi\ ;
+南阿戦争 > nan''asensou\ ;
+無線周波 > musenshuuha\ ;
+長期金利 > choukikinri\ ;
+飛行機等 > hikoukinado\ ;
+傀儡政府 > kairaiseifu\ ;
+市外電話 > shigaidenwa\ ;
+連邦政府 > renpouseifu\ ;
+放歌高吟 > houkakougin\ ;
+微量元素 > biryougenso\ ;
+英字新聞 > eijishinbun\ ;
+満身創痍 > manshinsoui\ ;
+第二組合 > dainikumiai\ ;
+婦人警官 > fujinkeikan\ ;
+第三世界 > daisansekai\ ;
+毘沙門天 > bishamonten\ ;
+社会主義 > shakaishugi\ ;
+学位論文 > gakuironbun\ ;
+社交辞令 > shakoujirei\ ;
+徴兵忌避 > chouheikihi\ ;
+機会均等 > kikaikintou\ ;
+暫定措置 > zanteisochi\ ;
+方向音痴 > houkouonchi\ ;
+世界銀行 > sekaiginkou\ ;
+全権委任 > zenken''inin\ ;
+自然言語 > shizengengo\ ;
+誇大妄想 > kodaimousou\ ;
+化粧道具 > keshoudougu\ ;
+不変資本 > fuhenshihon\ ;
+賞味期限 > shoumikigen\ ;
+心臓外科 > shinzougeka\ ;
+幾何級数 > kikakyuusuu\ ;
+三部合奏 > sanbugassou\ ;
+蒙古人種 > moukojinshu\ ;
+電気化学 > denkikagaku\ ;
+豆腐一丁 > toufuitchou\ ;
+消費都市 > shouhitoshi\ ;
+一一〇番 > hyakutooban\ ;
+家族制度 > kazokuseido\ ;
+生存期間 > seizonkikan\ ;
+野良仕事 > norashigoto\ ;
+日伊辞典 > nichiijiten\ ;
+不正乗車 > fuseijousha\ ;
+調査結果 > chousakekka\ ;
+不当廉売 > futourenbai\ ;
+滅多矢鱈 > mettayatara\ ;
+前人未踏 > zenjinmitou\ ;
+不当利得 > futouritoku\ ;
+回教寺院 > kaikyoujiin\ ;
+軍事訓練 > gunjikunren\ ;
+総合口座 > sougoukouza\ ;
+郡県制度 > gunkenseido\ ;
+使用可能 > shiyoukanou\ ;
+内部留保 > naiburyuuho\ ;
+再販制度 > saihanseido\ ;
+被選挙権 > hisenkyoken\ ;
+物価統制 > bukkatousei\ ;
+因数分解 > insuubunkai\ ;
+生生流転 > seiseiruten\ ;
+無知蒙昧 > muchimoumai\ ;
+堕落坊主 > darakubouzu\ ;
+舞台度胸 > butaidokyou\ ;
+泰西名画 > taiseimeiga\ ;
+法治国家 > houchikokka\ ;
+優先順位 > yuusenjun''i\ ;
+単位組合 > tan''ikumiai\ ;
+管理情報 > kanrijouhou\ ;
+完全主義 > kanzenshugi\ ;
+七不思議 > nanafushigi\ ;
+報復行為 > houfukukoui\ ;
+宣伝文句 > sendenmonku\ ;
+二成文系 > niseibunkei\ ;
+体内時計 > tainaidokei\ ;
+区画整理 > kukakuseiri\ ;
+終夜運転 > shuuyaunten\ ;
+加速運動 > kasokuundou\ ;
+対抗部隊 > taikoubutai\ ;
+結婚費用 > kekkonhiyou\ ;
+軍事政権 > gunjiseiken\ ;
+有機農法 > yuukinouhou\ ;
+防衛部長 > boueibuchou\ ;
+運営資金 > un''eishikin\ ;
+月見蕎麦 > tsukimisoba\ ;
+人生航路 > jinseikouro\ ;
+生命保険 > seimeihoken\ ;
+応急手当 > oukyuuteate\ ;
+有形無形 > yuukeimukei\ ;
+受信回路 > jushinkairo\ ;
+参考図書 > sankoutosho\ ;
+英雄崇拝 > eiyuusuuhai\ ;
+受験番号 > jukenbangou\ ;
+重農主義 > juunoushugi\ ;
+護国神社 > gokokujinja\ ;
+明治神宮 > meijijinguu\ ;
+少数意見 > shousuuiken\ ;
+比翼連理 > hiyokurenri\ ;
+有期年金 > yuukinenkin\ ;
+二元放送 > nigenhousou\ ;
+自信過剰 > jishinkajou\ ;
+奉納相撲 > hounouzumou\ ;
+人身御供 > hitomigokuu\ ;
+保護検束 > hogokensoku\ ;
+分県地図 > bunkenchizu\ ;
+阿諛追従 > ayutsuishou\ ;
+電光石火 > denkousekka\ ;
+波瀾万丈 > haranbanjou\ ;
+相互関係 > sougokankei\ ;
+内部仕様 > naibushiyou\ ;
+皮下注射 > hikachuusha\ ;
+乾燥野菜 > kansouyasai\ ;
+短機関銃 > tankikanjuu\ ;
+現地時間 > genchijikan\ ;
+一等軍曹 > ittougunsou\ ;
+家庭用品 > kateiyouhin\ ;
+鉱山技師 > kouzangishi\ ;
+一子相伝 > isshisouden\ ;
+時限立法 > jigenrippou\ ;
+愛別離苦 > aibetsuriku\ ;
+固定資産 > koteishisan\ ;
+和独辞典 > wadokujiten\ ;
+登校拒否 > toukoukyohi\ ;
+演奏旅行 > ensouryokou\ ;
+書画骨董 > shogakottou\ ;
+運動選手 > undousenshu\ ;
+学園都市 > gakuentoshi\ ;
+東洋主義 > touyoushugi\ ;
+大風呂敷 > ooburoshiki\ ;
+有蓋貨車 > yuugaikasha\ ;
+政治資金 > seijishikin\ ;
+言論機関 > genronkikan\ ;
+養護学校 > yougogakkou\ ;
+走行時間 > soukoujikan\ ;
+評価基準 > hyoukakijun\ ;
+新聞記事 > shinbunkiji\ ;
+夫唱婦随 > fushoufuzui\ ;
+電子辞書 > denshijisho\ ;
+同時録音 > doujirokuon\ ;
+管理社会 > kanrishakai\ ;
+一視同仁 > isshidoujin\ ;
+一視同人 > isshidoujin\ ;
+構造変化 > kouzouhenka\ ;
+女流作家 > joryuusakka\ ;
+110番 > hyakutooban\ ;
+司法制度 > shihouseido\ ;
+勤務交代 > kinmukoutai\ ;
+短編映画 > tanpen''eiga\ ;
+会員規約 > kaiinkiyaku\ ;
+二点先取 > nitensenshu\ ;
+反戦主義 > hansenshugi\ ;
+暴虎馮河 > boukohyouga\ ;
+左腕投手 > sawantoushu\ ;
+前期試験 > zenkishiken\ ;
+被選挙人 > hisenkyonin\ ;
+背後関係 > haigokankei\ ;
+餓鬼大将 > gakidaishou\ ;
+番号記号 > bangoukigou\ ;
+刑事補償 > keijihoshou\ ;
+一体全体 > ittaizentai\ ;
+海運同盟 > kaiundoumei\ ;
+専守防衛 > senshubouei\ ;
+南阿連邦 > nan''arenpou\ ;
+発行部数 > hakkoubusuu\ ;
+刑事裁判 > keijisaiban\ ;
+公平無私 > kouheimushi\ ;
+物価指数 > bukkashisuu\ ;
+刑事被告 > keijihikoku\ ;
+記者会見 > kishakaiken\ ;
+従軍記者 > juugunkisha\ ;
+空気抵抗 > kuukiteikou\ ;
+現金正価 > genkinseika\ ;
+大同小異 > daidoushoui\ ;
+生命倫理 > seimeirinri\ ;
+駆動装置 > kudousouchi\ ;
+千軍万馬 > sengunbanba\ ;
+変幻自在 > hengenjizai\ ;
+相対主義 > soutaishugi\ ;
+軍医学校 > gun''igakkou\ ;
+都民会館 > tominkaikan\ ;
+市場価値 > shijoukachi\ ;
+平和論者 > heiwaronsha\ ;
+尿素樹脂 > nyousojushi\ ;
+掃除当番 > soujitouban\ ;
+代理戦争 > dairisensou\ ;
+地盤沈下 > jibanchinka\ ;
+構成主義 > kouseishugi\ ;
+正多面体 > seitamentai\ ;
+一切合切 > issaigassai\ ;
+保税地域 > hozeichiiki\ ;
+人員整理 > jin''inseiri\ ;
+人間以前 > ningen''izen\ ;
+平面図形 > heimenzukei\ ;
+宇宙旅行 > uchuuryokou\ ;
+荘園制度 > shouenseido\ ;
+自社製品 > jishaseihin\ ;
+初期段階 > shokidankai\ ;
+前途遼遠 > zentoryouen\ ;
+赤葡萄酒 > akabudoushu\ ;
+原始時代 > genshijidai\ ;
+参謀本部 > sanbouhonbu\ ;
+女子大生 > joshidaisei\ ;
+排外運動 > haigaiundou\ ;
+水平飛行 > suiheihikou\ ;
+低回趣味 > teikaishumi\ ;
+互恵貿易 > gokeiboueki\ ;
+人間以上 > ningen''ijou\ ;
+傲慢無礼 > goumanburei\ ;
+徒手空拳 > toshukuuken\ ;
+亜炭化物 > atankabutsu\ ;
+水泳大会 > suieitaikai\ ;
+男女同権 > danjodouken\ ;
+年金制度 > nenkinseido\ ;
+空軍基地 > kuugunkichi\ ;
+大和時代 > yamatojidai\ ;
+帝王切開 > teiousekkai\ ;
+反政府党 > hanseifutou\ ;
+虎視眈々 > koshitantan\ ;
+歯科病院 > shikabyouin\ ;
+載貨屯数 > saikatonsuu\ ;
+論説委員 > ronsetsuiin\ ;
+勝手次第 > katteshidai\ ;
+空挺隊員 > kuuteitaiin\ ;
+自由経済 > jiyuukeizai\ ;
+財政破綻 > zaiseihatan\ ;
+政治献金 > seijikenkin\ ;
+手間仕事 > temashigoto\ ;
+一本勝負 > ipponshoubu\ ;
+中途半端 > chuutohanpa\ ;
+通過儀礼 > tsuukagirei\ ;
+英字集合 > eijishuugou\ ;
+署名運動 > shomeiundou\ ;
+塑性指数 > soseishisuu\ ;
+合同労組 > goudourouso\ ;
+主管機関 > shukankikan\ ;
+天気都合 > tenkitsugou\ ;
+兵器工場 > heikikoujou\ ;
+平民主義 > heiminshugi\ ;
+家族会議 > kazokukaigi\ ;
+減債基金 > gensaikikin\ ;
+祖先崇拝 > sosensuuhai\ ;
+事大思想 > jidaishisou\ ;
+地場産業 > jibasangyou\ ;
+連邦国家 > renpoukokka\ ;
+立憲主義 > rikkenshugi\ ;
+八方美人 > happoubijin\ ;
+世界情勢 > sekaijousei\ ;
+不快指数 > fukaishisuu\ ;
+遠洋航路 > en''youkouro\ ;
+国家経済 > kokkakeizai\ ;
+臨時増刊 > rinjizoukan\ ;
+公武合体 > koubugattai\ ;
+予讚本線 > yosanhonsen\ ;
+根本主義 > konponshugi\ ;
+非常警戒 > hijoukeikai\ ;
+中央政府 > chuuouseifu\ ;
+刺状突起 > shijoutokki\ ;
+公的扶助 > koutekifujo\ ;
+合成樹脂 > gouseijushi\ ;
+割賦購買 > kappukoubai\ ;
+未来指向 > miraishikou\ ;
+自由放任 > jiyuuhounin\ ;
+自転周期 > jitenshuuki\ ;
+自己主張 > jikoshuchou\ ;
+千言万語 > sengenbango\ ;
+徒歩競走 > tohokyousou\ ;
+親善試合 > shinzenjiai\ ;
+窒素固定 > chissokotei\ ;
+海上保険 > kaijouhoken\ ;
+飛行甲板 > hikoukouban\ ;
+指導主事 > shidoushuji\ ;
+相互銀行 > sougoginkou\ ;
+軍司令部 > gunshireibu\ ;
+諸事万端 > shojibantan\ ;
+労災保険 > rousaihoken\ ;
+時輪金剛 > jirinkongou\ ;
+意気銷沈 > ikishouchin\ ;
+関税回避 > kanzeikaihi\ ;
+意気消沈 > ikishouchin\ ;
+前人未到 > zenjinmitou\ ;
+共和主義 > kyouwashugi\ ;
+予防戦争 > yobousensou\ ;
+酸性土壌 > sanseidojou\ ;
+人身保護 > jinshinhogo\ ;
+年金保険 > nenkinhoken\ ;
+指向言語 > shikougengo\ ;
+巡査部長 > junsabuchou\ ;
+保証期間 > hoshoukikan\ ;
+不法監禁 > fuhoukankin\ ;
+御苦労様 > gokurousama\ ;
+行住座臥 > gyoujuuzaga\ ;
+自治大臣 > jichidaijin\ ;
+立体交差 > rittaikousa\ ;
+竜頭蛇尾 > ryuutoudabi\ ;
+充電期間 > juudenkikan\ ;
+記憶媒体 > kiokubaitai\ ;
+養護教諭 > yougokyouyu\ ;
+人本主義 > jinponshugi\ ;
+海洋投棄 > kaiyoutouki\ ;
+和歌山県 > wakayamaken\ ;
+太陽電波 > taiyoudenpa\ ;
+理科大学 > rikadaigaku\ ;
+近衛師団 > konoeshidan\ ;
+一衣帯水 > ichiitaisui\ ;
+資本主義 > shihonshugi\ ;
+自由結婚 > jiyuukekkon\ ;
+必須科目 > hissukamoku\ ;
+近代主義 > kindaishugi\ ;
+守護天使 > shugotenshi\ ;
+作業部会 > sagyoubukai\ ;
+都市再生 > toshisaisei\ ;
+幼生器官 > youseikikan\ ;
+御用組合 > goyoukumiai\ ;
+軍事演習 > gunjienshuu\ ;
+人道主義 > jindoushugi\ ;
+前史時代 > zenshijidai\ ;
+海上封鎖 > kaijoufuusa\ ;
+意味深長 > imishinchou\ ;
+交通違反 > koutsuuihan\ ;
+四十八手 > yonjuuhatte\ ;
+手巻寿司 > temakizushi\ ;
+公開講座 > koukaikouza\ ;
+片言隻句 > hengensekku\ ;
+高関税化 > koukanzeika\ ;
+運送会社 > unsougaisha\ ;
+東宮御所 > touguugosho\ ;
+延滞利息 > entairisoku\ ;
+火災警報 > kasaikeihou\ ;
+総指揮官 > soushikikan\ ;
+放送時間 > housoujikan\ ;
+有害無益 > yuugaimueki\ ;
+婦人問題 > fujinmondai\ ;
+晴耕雨読 > seikouudoku\ ;
+尊皇攘夷 > son''noujoui\ ;
+不文憲法 > fubunkenpou\ ;
+一寸法師 > issunboushi\ ;
+可能動詞 > kanoudoushi\ ;
+古事来歴 > kojiraireki\ ;
+完全雇用 > kanzenkoyou\ ;
+副鼻腔炎 > fukubikuuen\ ;
+多元放送 > tagenhousou\ ;
+気息奄奄 > kisokuen''en\ ;
+釈迦如来 > shakanyorai\ ;
+予約名簿 > yoyakumeibo\ ;
+不買同盟 > fubaidoumei\ ;
+非買同盟 > hibaidoumei\ ;
+相対敬語 > soutaikeigo\ ;
+経済特区 > keizaitokku\ ;
+任意団体 > nin''idantai\ ;
+接敵移動 > settekiidou\ ;
+鰥寡孤独 > kankakodoku\ ;
+相対売買 > aitaibaibai\ ;
+無人工場 > mujinkoujou\ ;
+不換紙幣 > fukanshihei\ ;
+相乗作用 > soujousayou\ ;
+予算不足 > yosanfusoku\ ;
+薬理作用 > yakurisayou\ ;
+為替管理 > kawasekanri\ ;
+事前協議 > jisenkyougi\ ;
+厚顔無恥 > kouganmuchi\ ;
+安全装置 > anzensouchi\ ;
+空気感染 > kuukikansen\ ;
+水道工事 > suidoukouji\ ;
+一紙半銭 > isshihansen\ ;
+反射運動 > hanshaundou\ ;
+塩類溶液 > enruiyoueki\ ;
+外人部隊 > gaijinbutai\ ;
+拝金主義 > haikinshugi\ ;
+異体同心 > itaidoushin\ ;
+乗数効果 > jousuukouka\ ;
+全盛時代 > zenseijidai\ ;
+面向不背 > menkoufuhai\ ;
+空理空論 > kuurikuuron\ ;
+非常階段 > hijoukaidan\ ;
+傷痍軍人 > shouigunjin\ ;
+月賦販売 > geppuhanbai\ ;
+万世一系 > banseiikkei\ ;
+第二部長 > dainibuchou\ ;
+行儀作法 > gyougisahou\ ;
+重加算税 > juukasanzei\ ;
+一心不乱 > isshinfuran\ ;
+軍事裁判 > gunjisaiban\ ;
+照明器具 > shoumeikigu\ ;
+屍陀林王 > shidarin''ou\ ;
+過去完了 > kakokanryou\ ;
+戦後欧州 > sengooushuu\ ;
+首脳会議 > shunoukaigi\ ;
+家庭料理 > kateiryouri\ ;
+日本銀行 > nihonginkou\ ;
+遠交近攻 > enkoukinkou\ ;
+旋回運動 > senkaiundou\ ;
+帰国子女 > kikokushijo\ ;
+雌雄淘汰 > shiyuutouta\ ;
+銀本位制 > ginhon''isei\ ;
+自業自得 > jigoujitoku\ ;
+主格補語 > shukakuhogo\ ;
+傘形器官 > sankeikikan\ ;
+電化製品 > denkaseihin\ ;
+資産価値 > shisankachi\ ;
+中央競馬 > chuuoukeiba\ ;
+赤字財政 > akajizaisei\ ;
+政治亡命 > seijiboumei\ ;
+五十年祭 > gojuunensai\ ;
+遺族年金 > izokunenkin\ ;
+人工栄養 > jinkoueiyou\ ;
+擬古典的 > gikotenteki\ ;
+電気会社 > denkigaisha\ ;
+気随気儘 > kizuikimama\ ;
+無反動銃 > muhandoujuu\ ;
+遠心分離 > enshinbunri\ ;
+場外馬券 > jougaibaken\ ;
+青年時代 > seinenjidai\ ;
+自由問題 > jiyuumondai\ ;
+漫画雑誌 > mangazasshi\ ;
+亜鉛中毒 > aenchuudoku\ ;
+祖先伝来 > sosendenrai\ ;
+一党支配 > ittoushihai\ ;
+主観主義 > shukanshugi\ ;
+呼吸器系 > kokyuukikei\ ;
+為替投機 > kawasetouki\ ;
+一知半解 > itchihankai\ ;
+不定冠詞 > futeikanshi\ ;
+代議政体 > daigiseitai\ ;
+平和攻勢 > heiwakousei\ ;
+低価格化 > teikakakuka\ ;
+肘掛椅子 > hijikakeisu\ ;
+公務災害 > koumusaigai\ ;
+景気循環 > keikijunkan\ ;
+関係法規 > kankeihouki\ ;
+賀詞交換 > gashikoukan\ ;
+耕地整理 > kouchiseiri\ ;
+表裏一体 > hyouriittai\ ;
+奴隷解放 > doreikaihou\ ;
+阿多福豆 > otafukumame\ ;
+企業整備 > kigyouseibi\ ;
+軍事行動 > gunjikoudou\ ;
+地方自治 > chihoujichi\ ;
+世俗主義 > sezokushugi\ ;
+高炭素鋼 > koutansokou\ ;
+有機肥料 > yuukihiryou\ ;
+比例配分 > hireihaibun\ ;
+反対運動 > hantaiundou\ ;
+添付書類 > tenpushorui\ ;
+恋愛遊戯 > ren''aiyuugi\ ;
+投射原理 > toushagenri\ ;
+大言壮語 > taigensougo\ ;
+金本位制 > kinhon''isei\ ;
+造語成分 > zougoseibun\ ;
+百科辞典 > hyakkajiten\ ;
+万代不易 > bandaifueki\ ;
+危険角度 > kikenkakudo\ ;
+化学兵器 > kagakuheiki\ ;
+漢字制限 > kanjiseigen\ ;
+年功制度 > nenkouseido\ ;
+海底火山 > kaiteikazan\ ;
+隔靴掻痒 > kakkasouyou\ ;
+非戦論者 > hisenronsha\ ;
+万世不易 > banseifueki\ ;
+再生繊維 > saiseisen''i\ ;
+運転系統 > untenkeitou\ ;
+任意同行 > nin''idoukou\ ;
+臨時国会 > rinjikokkai\ ;
+試験期間 > shikenkikan\ ;
+年功加俸 > nenkoukahou\ ;
+応援団長 > ouendanchou\ ;
+軍医総監 > gun''isoukan\ ;
+慈善団体 > jizendantai\ ;
+自習時間 > jishuujikan\ ;
+国家補償 > kokkahoshou\ ;
+盛者必衰 > seijahissui\ ;
+人文主義 > jinbunshugi\ ;
+電話番号 > denwabangou\ ;
+理論体系 > rirontaikei\ ;
+日本海溝 > nihonkaikou\ ;
+経常利益 > keijourieki\ ;
+引責辞任 > insekijinin\ ;
+処女航海 > shojokoukai\ ;
+一軒一軒 > ikken''ikken\ ;
+問答無用 > mondoumuyou\ ;
+運命論者 > unmeironsha\ ;
+菜種梅雨 > natanedzuyu\ ;
+課外授業 > kagaijugyou\ ;
+難民帰還 > nanminkikan\ ;
+偶像破壊 > guuzouhakai\ ;
+指示装置 > shijisouchi\ ;
+安全地帯 > anzenchitai\ ;
+自己複製 > jikofukusei\ ;
+他人行儀 > taningyougi\ ;
+判官贔屓 > houganbiiki\ ;
+圧搾空気 > assakukuuki\ ;
+健康管理 > kenkoukanri\ ;
+試験飛行 > shikenhikou\ ;
+生産過剰 > seisankajou\ ;
+生理休暇 > seirikyuuka\ ;
+交際場裏 > kousaijouri\ ;
+豊肥本線 > houhihonsen\ ;
+判断規準 > handankijun\ ;
+気息奄々 > kisokuen''en\ ;
+判断基準 > handankijun\ ;
+天資英邁 > tenshieimai\ ;
+抵抗運動 > teikouundou\ ;
+郵便切手 > yuubinkitte\ ;
+田園都市 > den''entoshi\ ;
+衣料品店 > iryouhinten\ ;
+二部合唱 > nibugasshou\ ;
+電子頭脳 > denshizunou\ ;
+割賦販売 > kappuhanbai\ ;
+骨董趣味 > kottoushumi\ ;
+軍備制限 > gunbiseigen\ ;
+運動不足 > undoubusoku\ ;
+制限漢字 > seigenkanji\ ;
+無反動砲 > muhandouhou\ ;
+原因不明 > gen''infumei\ ;
+軽自動車 > keijidousha\ ;
+原子時代 > genshijidai\ ;
+狐疑逡巡 > kogishunjun\ ;
+程度問題 > teidomondai\ ;
+規定打席 > kiteidaseki\ ;
+風紀紊乱 > fuukibinran\ ;
+市参事会 > shisanjikai\ ;
+記憶装置 > kiokusouchi\ ;
+電気伝導 > denkidendou\ ;
+海外派兵 > kaigaihahei\ ;
+天賦人権 > tenpujinken\ ;
+懸垂運動 > kensuiundou\ ;
+神秘主義 > shinpishugi\ ;
+遠慮会釈 > enryoeshaku\ ;
+暗号手法 > angoushuhou\ ;
+運輸大臣 > un''yudaijin\ ;
+非論理的 > hironriteki\ ;
+右翼団体 > uyokudantai\ ;
+保健衛生 > hoken''eisei\ ;
+盗品故買 > touhinkobai\ ;
+静止軌道 > seishikidou\ ;
+慶應義塾 > keiougijuku\ ;
+快刀乱麻 > kaitouranma\ ;
+至近距離 > shikinkyori\ ;
+損害保険 > songaihoken\ ;
+構成要素 > kouseiyouso\ ;
+協議事項 > kyougijikou\ ;
+舞台俳優 > butaihaiyuu\ ;
+危機一髪 > kikiippatsu\ ;
+医学雑誌 > igakuzasshi\ ;
+物価水準 > bukkasuijun\ ;
+赤十字附 > sekijuujifu\ ;
+扶養家族 > fuyoukazoku\ ;
+立憲政治 > rikkenseiji\ ;
+人工臓器 > jinkouzouki\ ;
+祭政一致 > saiseiitchi\ ;
+不言実行 > fugenjikkou\ ;
+仕事部屋 > shigotobeya\ ;
+成人映画 > seijin''eiga\ ;
+自由営業 > jiyuueigyou\ ;
+標準誤差 > hyoujungosa\ ;
+乳児脚気 > nyuujikakke\ ;
+軍需工場 > gunjukoujou\ ;
+相加平均 > soukaheikin\ ;
+粗製乱造 > soseiranzou\ ;
+御名御璽 > gyomeigyoji\ ;
+文治主義 > bunchishugi\ ;
+自然淘汰 > shizentouta\ ;
+家宅捜査 > katakusousa\ ;
+既成概念 > kiseigainen\ ;
+整備工場 > seibikoujou\ ;
+対空砲火 > taikuuhouka\ ;
+滞空時間 > taikuujikan\ ;
+貿易赤字 > bouekiakaji\ ;
+一言居士 > ichigenkoji\ ;
+屋上庭園 > okujouteien\ ;
+音声表記 > onseihyouki\ ;
+審美主義 > shinbishugi\ ;
+応用問題 > ouyoumondai\ ;
+互恵関税 > gokeikanzei\ ;
+軟性下疳 > nanseigekan\ ;
+国語辞典 > kokugojiten\ ;
+公認候補 > kouninkouho\ ;
+生年月日 > seinengappi\ ;
+奇策縦横 > kisakujuuou\ ;
+光学文字 > kougakumoji\ ;
+停車時間 > teishajikan\ ;
+共和政治 > kyouwaseiji\ ;
+国庫債権 > kokkosaiken\ ;
+声帯模写 > seitaimosha\ ;
+最大限度 > saidaigendo\ ;
+八分音符 > hachibuonpu\ ;
+仮想空間 > kasoukuukan\ ;
+平成時代 > heiseijidai\ ;
+利益社会 > riekishakai\ ;
+家庭訪問 > kateihoumon\ ;
+薄利多売 > hakuritabai\ ;
+民主主義 > minshushugi\ ;
+女性名詞 > joseimeishi\ ;
+愛憎併存 > aizouheison\ ;
+反射作用 > hanshasayou\ ;
+有事立法 > yuujirippou\ ;
+発声器官 > hasseikikan\ ;
+婚礼衣装 > konreiishou\ ;
+中央突破 > chuuoutoppa\ ;
+三頭政治 > santouseiji\ ;
+危険地帯 > kikenchitai\ ;
+化学作用 > kagakusayou\ ;
+無間地獄 > mugenjigoku\ ;
+往復切符 > oufukukippu\ ;
+存在理由 > sonzairiyuu\ ;
+非社交的 > hijakouteki\ ;
+封建制度 > houkenseido\ ;
+人身事故 > jinshinjiko\ ;
+公開捜査 > koukaisousa\ ;
+我田引水 > gaden''insui\ ;
+動作記録 > dousakiroku\ ;
+成層火山 > seisoukazan\ ;
+利益配当 > riekihaitou\ ;
+一所懸命 > isshokenmei\ ;
+源泉課税 > gensenkazei\ ;
+政治結社 > seijikessha\ ;
+騎馬民族 > kibaminzoku\ ;
+隔世遺伝 > kakuseiiden\ ;
+古道具屋 > furudouguya\ ;
+吹奏楽器 > suisougakki\ ;
+機銃掃射 > kijuusousha\ ;
+武家屋敷 > bukeyashiki\ ;
+睡眠時間 > suiminjikan\ ;
+無記名株 > mukimeikabu\ ;
+事務総長 > jimusouchou\ ;
+主治効能 > shujikounou\ ;
+天津御祖 > amatsumioya\ ;
+気象衛星 > kishoueisei\ ;
+有効期限 > yuukoukigen\ ;
+農奴解放 > noudokaihou\ ;
+心臓麻痺 > shinzoumahi\ ;
+酔生夢死 > suiseimushi\ ;
+有効期間 > yuukoukigen\ ;
+無法地帯 > muhouchitai\ ;
+街頭募金 > gaitoubokin\ ;
+荒唐無稽 > koutoumukei\ ;
+栄養不足 > eiyoufusoku\ ;
+名誉市民 > meiyoshimin\ ;
+軍事同盟 > gunjidoumei\ ;
+有効作用 > yuukousayou\ ;
+先遣部隊 > senkenbutai\ ;
+嘉言善行 > kagenzenkou\ ;
+合同会議 > goudoukaigi\ ;
+起死回生 > kishikaisei\ ;
+透視画法 > toushigahou\ ;
+無銭旅行 > musenryokou\ ;
+保安設備 > hoansetsubi\ ;
+内部闘争 > naibutousou\ ;
+不正融資 > fuseiyuushi\ ;
+漢英辞典 > kan''eijiten\ ;
+領土保全 > ryoudohozen\ ;
+無事息災 > bujisokusai\ ;
+指名手配 > shimeitehai\ ;
+遊覧飛行 > yuuranhikou\ ;
+受験地獄 > jukenjigoku\ ;
+警備強化 > keibikyouka\ ;
+心理主義 > shinrishugi\ ;
+離婚訴訟 > rikonsoshou\ ;
+音訓索引 > onkunsakuin\ ;
+危険因子 > kiken''inshi\ ;
+超過勤務 > choukakinmu\ ;
+進歩主義 > shinposhugi\ ;
+保全会社 > hozenkaisha\ ;
+自己紹介 > jikoshoukai\ ;
+人道支援 > jindoushien\ ;
+希少価値 > kishoukachi\ ;
+婦人科学 > fujinkagaku\ ;
+支援団体 > shiendantai\ ;
+宇宙空間 > uchuukuukan\ ;
+化粧煉瓦 > keshourenga\ ;
+早期発見 > soukihakken\ ;
+自然治癒 > shizenchiyu\ ;
+不可知的 > fukachiteki\ ;
+訴訟費用 > soshouhiyou\ ;
+災害保険 > saigaihoken\ ;
+大器晩成 > taikibansei\ ;
+数珠一連 > juzuichiren\ ;
+文明開化 > bunmeikaika\ ;
+反動主義 > handoushugi\ ;
+政府高官 > seifukoukan\ ;
+京都府警 > kyoutofukei\ ;
+勤王攘夷 > kin''noujoui\ ;
+空挺部隊 > kuuteibutai\ ;
+多士済済 > tashiseisei\ ;
+不器用者 > bukiyoumono\ ;
+兵站基地 > heitankichi\ ;
+有理関数 > yuurikansuu\ ;
+低徊趣味 > teikaishumi\ ;
+人工頭脳 > jinkouzunou\ ;
+十六音符 > juurokuonpu\ ;
+奇想天外 > kisoutengai\ ;
+内容見本 > naiyoumihon\ ;
+料理道具 > ryouridougu\ ;
+大圏航路 > taikenkouro\ ;
+準備管制 > junbikansei\ ;
+主脳会議 > shunoukaigi\ ;
+陣頭指揮 > jintoushiki\ ;
+臓器移植 > zoukiishoku\ ;
+基本概念 > kihongainen\ ;
+会議日程 > kaiginittei\ ;
+公定地価 > kouteichika\ ;
+基礎研究 > kisokenkyuu\ ;
+環境汚染 > kankyouosen\ ;
+疑心暗鬼 > gishin''anki\ ;
+総理大臣 > souridaijin\ ;
+自己満足 > jikomanzoku\ ;
+絶対主義 > zettaishugi\ ;
+正味値段 > shouminedan\ ;
+個人教授 > kojinkyouju\ ;
+少壮気鋭 > shousoukiei\ ;
+東亜諸国 > touashokoku\ ;
+喇叭水仙 > rappazuisen\ ;
+実行可能 > jikkoukanou\ ;
+事前運動 > jizen''undou\ ;
+外来患者 > gairaikanja\ ;
+避難訓練 > hinankunren\ ;
+販売部門 > hanbaibumon\ ;
+労働運動 > roudouundou\ ;
+準備銀行 > junbiginkou\ ;
+幹線道路 > kansendouro\ ;
+不透明性 > futoumeisei\ ;
+加圧水炉 > kaatsusuiro\ ;
+年期奉公 > nenkiboukou\ ;
+表音文字 > hyouonmonji\ ;
+指名打者 > shimeidasha\ ;
+総司令部 > soushireibu\ ;
+伝統主義 > dentoushugi\ ;
+主要都市 > shuyoutoshi\ ;
+低温殺菌 > teionsakkin\ ;
+夫婦関係 > fuufukankei\ ;
+作業時間 > sagyoujikan\ ;
+非常手段 > hijoushudan\ ;
+専制政治 > senseiseiji\ ;
+映画監督 > eigakantoku\ ;
+濃淡画像 > noutangazou\ ;
+灯火管制 > toukakansei\ ;
+重要事項 > juuyoujikou\ ;
+非常呼集 > hijoukoshuu\ ;
+立候補者 > rikkouhosha\ ;
+浄化装置 > joukasouchi\ ;
+御生憎様 > oainikusama\ ;
+人員淘汰 > jin''intouta\ ;
+交通事故 > koutsuujiko\ ;
+四輪駆動 > yonrinkudou\ ;
+代理公使 > dairikoushi\ ;
+外務大臣 > gaimudaijin\ ;
+野戦砲兵 > yasenhouhei\ ;
+地名辞典 > chimeijiten\ ;
+不動産屋 > fudousan''ya\ ;
+体感温度 > taikan''ondo\ ;
+観光都市 > kankoutoshi\ ;
+同性愛者 > douseiaisha\ ;
+部隊撤退 > butaitettai\ ;
+協議会員 > kyougikaiin\ ;
+啓蒙運動 > keimouundou\ ;
+亀甲模様 > kikkoumoyou\ ;
+衛生状態 > eiseijoutai\ ;
+鎖国主義 > sakokushugi\ ;
+器用貧乏 > kiyoubinbou\ ;
+眼精疲労 > ganseihirou\ ;
+宣伝機関 > sendenkikan\ ;
+何時何時 > itsunandoki\ ;
+民権主義 > minkenshugi\ ;
+年次総会 > nenjisoukai\ ;
+温古知新 > onkochishin\ ;
+無償交付 > mushoukoufu\ ;
+短期手形 > tankitegata\ ;
+内務大臣 > naimudaijin\ ;
+一世一代 > isseichidai\ ;
+事項索引 > jikousakuin\ ;
+放射線科 > houshasenka\ ;
+皇太子妃 > koutaishihi\ ;
+妖怪変化 > youkaihenge\ ;
+変形部門 > henkeibumon\ ;
+野戦病院 > yasenbyouin\ ;
+戦災地区 > sensaichiku\ ;
+特務機関 > tokumukikan\ ;
+砂糖大根 > satoudaikon\ ;
+半加工品 > hankakouhin\ ;
+二等分線 > nitoubunsen\ ;
+授業時間 > jugyoujikan\ ;
+天神地祇 > tenjinchigi\ ;
+追加予算 > tsuikayosan\ ;
+非合理的 > higouriteki\ ;
+労農政府 > rounouseifu\ ;
+下意上達 > kaijoutatsu\ ;
+乗車拒否 > joushakyohi\ ;
+水洗便所 > suisenbenjo\ ;
+収納家具 > shuunoukagu\ ;
+未開墾地 > mikaikonchi\ ;
+正当防衛 > seitoubouei\ ;
+学科試験 > gakkashiken\ ;
+潜水母艦 > sensuibokan\ ;
+使用価値 > shiyoukachi\ ;
+官尊民卑 > kansonminpi\ ;
+普遍文法 > fuhenbunpou\ ;
+過剰人口 > kajoujinkou\ ;
+出先機関 > desakikikan\ ;
+宣伝効果 > sendenkouka\ ;
+時々刻々 > jijikokkoku\ ;
+近似計算 > kinjikeisan\ ;
+護憲運動 > goken''undou\ ;
+原因結果 > gen''inkekka\ ;
+友軍部隊 > yuugunbutai\ ;
+無尽会社 > mujingaisha\ ;
+古今東西 > kokontouzai\ ;
+看護婦長 > kangofuchou\ ;
+悲憤慷慨 > hifunkougai\ ;
+古代文明 > kodaibunmei\ ;
+無産政党 > musanseitou\ ;
+選挙準備 > senkyojunbi\ ;
+意識不明 > ishikifumei\ ;
+組合主義 > kumiaishugi\ ;
+個体発生 > kotaihassei\ ;
+四分音符 > shibun''onpu\ ;
+使徒書簡 > shitoshokan\ ;
+優柔不断 > yuujuufudan\ ;
+煎餅蒲団 > senbeibuton\ ;
+予定調和 > yoteichouwa\ ;
+先祖伝来 > senzodenrai\ ;
+事業部制 > jigyoubusei\ ;
+臨時列車 > rinjiressha\ ;
+定期試験 > teikishiken\ ;
+総合課税 > sougoukazei\ ;
+遠隔講義 > enkakukougi\ ;
+海底油田 > kaiteiyuden\ ;
+真一文字 > maichimonji\ ;
+電話調査 > denwachousa\ ;
+技術援助 > gijutsuenjo\ ;
+偏向回路 > henkoukairo\ ;
+予定納税 > yoteinouzei\ ;
+皇后陛下 > kougouheika\ ;
+連邦制度 > renpouseido\ ;
+電気電子 > denkidenshi\ ;
+代行機関 > daikoukikan\ ;
+疲労困憊 > hiroukonpai\ ;
+盗難保険 > tounanhoken\ ;
+純真無垢 > junshinmuku\ ;
+法務大臣 > houmudaijin\ ;
+刑事処分 > keijishobun\ ;
+駐車違反 > chuushaihan\ ;
+時機尚早 > jikishousou\ ;
+年金基金 > nenkinkikin\ ;
+適法行為 > tekihoukoui\ ;
+物見遊山 > monomiyusan\ ;
+得意満面 > tokuimanmen\ ;
+時差出勤 > jisashukkin\ ;
+政治問題 > seijimondai\ ;
+絶対敬語 > zettaikeigo\ ;
+鍵盤楽器 > kenbangakki\ ;
+訴訟事件 > soshoujiken\ ;
+意味役割 > imiyakuwari\ ;
+価格安定 > kakakuantei\ ;
+今上陛下 > kinjouheika\ ;
+電気系統 > denkikeitou\ ;
+兌換銀行 > dakanginkou\ ;
+百科事典 > hyakkajiten\ ;
+全会一致 > zenkaiitchi\ ;
+麻薬患者 > mayakukanja\ ;
+心機一転 > shinkiitten\ ;
+無名戦士 > mumeisenshi\ ;
+唯一無二 > yuiitsumuni\ ;
+財政安定 > zaiseiantei\ ;
+看護学校 > kangogakkou\ ;
+分類基準 > bunruikijun\ ;
+文書偽造 > bunshogizou\ ;
+孤軍奮闘 > kogunfuntou\ ;
+数次旅券 > suujiryoken\ ;
+合成繊維 > gouseisen''i\ ;
+貴族政治 > kizokuseiji\ ;
+博愛主義 > hakuaishugi\ ;
+一斉検挙 > isseikenkyo\ ;
+低温輸送 > teion''yusou\ ;
+風光明媚 > fuukoumeibi\ ;
+後部座席 > koubuzaseki\ ;
+個人投資 > kojintoushi\ ;
+保険会社 > hokengaisha\ ;
+硫化水素 > ryuukasuiso\ ;
+日本列島 > nihonrettou\ ;
+戦時公債 > senjikousai\ ;
+海員組合 > kaiinkumiai\ ;
+修辞疑問 > shuujigimon\ ;
+法定貨幣 > houteikahei\ ;
+体内受精 > tainaijusei\ ;
+楽観主義 > rakkanshugi\ ;
+入院患者 > nyuuinkanja\ ;
+関連事項 > kanrenjikou\ ;
+原価計算 > genkakeisan\ ;
+電子回路 > denshikairo\ ;
+重点主義 > juutenshugi\ ;
+価電子帯 > kadenshitai\ ;
+有効需要 > yuukoujuyou\ ;
+事業年度 > jigyounendo\ ;
+相反定理 > souhanteiri\ ;
+六分儀座 > rokubungiza\ ;
+安定状態 > anteijoutai\ ;
+民主政治 > minshuseiji\ ;
+化学繊維 > kagakusen''i\ ;
+絶対音感 > zettaionkan\ ;
+自然破壊 > shizenhakai\ ;
+報道機関 > houdoukikan\ ;
+捕虜交換 > horyokoukan\ ;
+価値判断 > kachihandan\ ;
+手練手管 > terentekuda\ ;
+器械体操 > kikaitaisou\ ;
+養老保険 > yourouhoken\ ;
+不当表示 > futouhyouji\ ;
+安全運転 > anzen''unten\ ;
+交際範囲 > kousaihan''i\ ;
+応用科学 > ouyoukagaku\ ;
+不整合人 > fuseigoujin\ ;
+単元制度 > tangenseido\ ;
+一歩前進 > ippozenshin\ ;
+国王陛下 > kokuouheika\ ;
+放送衛星 > housoueisei\ ;
+寂光浄土 > jakkoujoudo\ ;
+後生大事 > goshoudaiji\ ;
+三民主義 > sanminshugi\ ;
+気管切開 > kikansekkai\ ;
+傲岸不遜 > gouganfuson\ ;
+家父長制 > kafuchousei\ ;
+暗黒星雲 > ankokuseiun\ ;
+近代国家 > kindaikokka\ ;
+前途有望 > zentoyuubou\ ;
+音楽理論 > ongakuriron\ ;
+委託販売 > itakuhanbai\ ;
+三寒四温 > sankanshion\ ;
+貧乏所帯 > binboujotai\ ;
+御伽草子 > otogizoushi\ ;
+神奈川県 > kanagawaken\ ;
+輿論調査 > yoronchousa\ ;
+電気装置 > denkisouchi\ ;
+地方議会 > chihougikai\ ;
+装甲部隊 > soukoubutai\ ;
+不可入性 > fukanyuusei\ ;
+南京木綿 > nankinmomen\ ;
+印象主義 > inshoushugi\ ;
+多士済々 > tashiseisei\ ;
+一張一弛 > itchouisshi\ ;
+区間列車 > kukanressha\ ;
+相思相愛 > soushisouai\ ;
+航空基地 > koukuukichi\ ;
+監査記録 > kansakiroku\ ;
+技術移転 > gijutsuiten\ ;
+産児制限 > sanjiseigen\ ;
+飽和状態 > houwajoutai\ ;
+知能検査 > chinoukensa\ ;
+孤影悄然 > koeishouzen\ ;
+五種競技 > goshukyougi\ ;
+団体保険 > dantaihoken\ ;
+姉妹都市 > shimaitoshi\ ;
+不通箇所 > futsuukasho\ ;
+破邪顕正 > hajakenshou\ ;
+政治団体 > seijidantai\ ;
+一喜一憂 > ikkiichiyuu\ ;
+準備命令 > junbimeirei\ ;
+受験科目 > jukenkamoku\ ;
+木管楽器 > mokkangakki\ ;
+中高音部 > chuukouonbu\ ;
+友愛結婚 > yuuaikekkon\ ;
+海軍基地 > kaigunkichi\ ;
+電子素子 > denshisoshi\ ;
+愛国運動 > aikokuundou\ ;
+人文地理 > jinmonchiri\ ;
+労働争議 > roudousougi\ ;
+情報処理 > jouhoushori\ ;
+可変資本 > kahenshihon\ ;
+為替差益 > kawasesaeki\ ;
+誘拐事件 > yuukaijiken\ ;
+三大都市 > sandaitoshi\ ;
+所要時間 > shoyoujikan\ ;
+女権運動 > joken''undou\ ;
+分散処理 > bunsanshori\ ;
+走行可能 > soukoukanou\ ;
+流言飛語 > ryuugenhigo\ ;
+一新紀元 > isshinkigen\ ;
+徒手体操 > toshutaisou\ ;
+封建主義 > houkenshugi\ ;
+受験戦争 > jukensensou\ ;
+出雲大社 > izumotaisha\ ;
+権門勢家 > kenmonseika\ ;
+無線操縦 > musensoujuu\ ;
+借家争議 > shakkasougi\ ;
+宇宙科学 > uchuukagaku\ ;
+古典芸能 > kotengeinou\ ;
+豪華絢爛 > goukakenran\ ;
+漢英字典 > kan''eijiten\ ;
+婦人運動 > fujin''undou\ ;
+不動明王 > fudoumyouou\ ;
+体外受精 > taigaijusei\ ;
+勤務年限 > kinmunengen\ ;
+満場一致 > manjouitchi\ ;
+前世生存 > zenseseizon\ ;
+会計年度 > kaikeinendo\ ;
+万葉仮名 > man''yougana\ ;
+傍聴随意 > bouchouzuii\ ;
+絶対多数 > zettaitasuu\ ;
+紅白試合 > kouhakujiai\ ;
+会計監査 > kaikeikansa\ ;
+八紘一宇 > hakkouichiu\ ;
+舞台装置 > butaisouchi\ ;
+事務長官 > jimuchoukan\ ;
+一般社会 > ippanshakai\ ;
+日帝時代 > nitteijidai\ ;
+登坂車線 > tohanshasen\ ;
+世界最大 > sekaisaidai\ ;
+指導原理 > shidougenri\ ;
+造次顛沛 > zoujitenpai\ ;
+航空管理 > koukuukanri\ ;
+感染経路 > kansenkeiro\ ;
+二等軍曹 > nitougunsou\ ;
+防火塗料 > boukatoryou\ ;
+自縄自縛 > jijoujibaku\ ;
+途中下車 > tochuugesha\ ;
+煎餅布団 > senbeibuton\ ;
+環境保護 > kankyouhogo\ ;
+嘘発見器 > usohakkenki\ ;
+面会時間 > menkaijikan\ ;
+重機関銃 > juukikanjuu\ ;
+法案審議 > houanshingi\ ;
+自動制御 > jidouseigyo\ ;
+個人指導 > kojinshidou\ ;
+自然発火 > shizenhakka\ ;
+主務大臣 > shumudaijin\ ;
+短期決戦 > tankikessen\ ;
+言語運用 > gengoun''you\ ;
+粗製濫造 > soseiranzou\ ;
+危険思想 > kikenshisou\ ;
+空域管理 > kuuikikanri\ ;
+御殿女中 > gotenjochuu\ ;
+隣保事業 > rinpojigyou\ ;
+合意心中 > gouishinjuu\ ;
+世界記録 > sekaikiroku\ ;
+基本条件 > kihonjouken\ ;
+農民一揆 > noumin''ikki\ ;
+前代未聞 > zendaimimon\ ;
+複合汚染 > fukugouosen\ ;
+絶対零度 > zettaireido\ ;
+構成可能 > kouseikanou\ ;
+一人舞台 > hitoributai\ ;
+皮下組織 > hikasoshiki\ ;
+地下資源 > chikashigen\ ;
+白化個体 > hakukakotai\ ;
+電話回線 > denwakaisen\ ;
+不正咬合 > fuseikougou\ ;
+美容体操 > biyoutaisou\ ;
+協議離婚 > kyougirikon\ ;
+温暖前線 > ondanzensen\ ;
+新規保管 > shinkihokan\ ;
+一貫番号 > ikkanbangou\ ;
+現行法規 > genkouhouki\ ;
+祖国復帰 > sokokufukki\ ;
+含水炭素 > gansuitanso\ ;
+労働時間 > roudoujikan\ ;
+為替相場 > kawasesouba\ ;
+世界一周 > sekaiisshuu\ ;
+医療法人 > iryouhoujin\ ;
+鼓舞激励 > kobugekirei\ ;
+時期尚早 > jikishousou\ ;
+粒度分布 > ryuudobunpu\ ;
+投下資本 > toukashihon\ ;
+用意周到 > youishuutou\ ;
+内燃機関 > nainenkikan\ ;
+防水加工 > bousuikakou\ ;
+個人消費 > kojinshouhi\ ;
+仮性近視 > kaseikinshi\ ;
+尊王攘夷 > son''noujoui\ ;
+空気伝染 > kuukidensen\ ;
+幼年時代 > younenjidai\ ;
+社会復帰 > shakaifukki\ ;
+電気製品 > denkiseihin\ ;
+時時刻刻 > jijikokkoku\ ;
+一貫作業 > ikkansagyou\ ;
+滞在期間 > taizaikikan\ ;
+無形財産 > mukeizaisan\ ;
+無断転載 > mudantensai\ ;
+均衡予算 > kinkouyosan\ ;
+付帯条件 > futaijouken\ ;
+軍事工場 > gunjikoujou\ ;
+有効数字 > yuukousuuji\ ;
+臍下丹田 > seikatanden\ ;
+試用期間 > shiyoukikan\ ;
+化学変化 > kagakuhenka\ ;
+自動車税 > jidoushazei\ ;
+言語道断 > gongodoudan\ ;
+担保物権 > tanpobukken\ ;
+営業時間 > eigyoujikan\ ;
+愛妻弁当 > aisaibentou\ ;
+美的嫌悪 > bitekiken''o\ ;
+三千世界 > sanzensekai\ ;
+多重放送 > tajuuhousou\ ;
+二重外交 > nijuugaikou\ ;
+予備工作 > yobikousaku\ ;
+肱掛椅子 > hijikakeisu\ ;
+短波放送 > tanpahousou\ ;
+風光絶佳 > fuukouzekka\ ;
+主情主義 > shujoushugi\ ;
+行動主義 > koudoushugi\ ;
+自分自身 > jibunjishin\ ;
+夜光塗料 > yakoutoryou\ ;
+帰無仮説 > kimukasetsu\ ;
+市場原理 > shijougenri\ ;
+京滋地方 > keijichihou\ ;
+大義名分 > taigimeibun\ ;
+呼吸運動 > kokyuuundou\ ;
+螺旋階段 > rasenkaidan\ ;
+英語教育 > eigokyouiku\ ;
+象牙海岸 > zougekaigan\ ;
+日本脳炎 > nihon''nouen\ ;
+和魂漢才 > wakonkansai\ ;
+経営再建 > keieisaiken\ ;
+脳下垂体 > noukasuitai\ ;
+募金運動 > bokin''undou\ ;
+刻苦勉励 > kokkubenrei\ ;
+既婚男性 > kikondansei\ ;
+治水工事 > chisuikouji\ ;
+日本人論 > nihonjinron\ ;
+軍事公債 > gunjikousai\ ;
+十人十色 > juunintoiro\ ;
+無配会社 > muhaigaisha\ ;
+家族手当 > kazokuteate\ ;
+羅針盤座 > rashinbanza\ ;
+福祉機器 > fukushikiki\ ;
+暫定予算 > zanteiyosan\ ;
+自費出版 > jihishuppan\ ;
+常用漢字 > jouyoukanji\ ;
+王侯貴族 > oukoukizoku\ ;
+人体模型 > jintaimokei\ ;
+日西辞典 > nisseijiten\ ;
+感情移入 > kanjouinyuu\ ;
+地方競馬 > chihoukeiba\ ;
+経済効果 > keizaikouka\ ;
+民事訴訟 > minjisoshou\ ;
+化学記号 > kagakukigou\ ;
+参加意識 > sankaishiki\ ;
+戦時体制 > senjitaisei\ ;
+自由市場 > jiyuushijou\ ;
+冷房完備 > reiboukanbi\ ;
+自己双対 > jikosoutsui\ ;
+火燵掛布 > kotatsugake\ ;
+希望価格 > kiboukakaku\ ;
+選対本部 > sentaihonbu\ ;
+先頭打者 > sentoudasha\ ;
+名前空間 > namaekuukan\ ;
+浅草海苔 > asakusanori\ ;
+事業本部 > jigyouhonbu\ ;
+理論闘争 > rirontousou\ ;
+人口増加 > jinkouzouka\ ;
+外交辞令 > gaikoujirei\ ;
+氏姓制度 > shiseiseido\ ;
+縄文時代 > joumonjidai\ ;
+世界大戦 > sekaitaisen\ ;
+機動演習 > kidouenshuu\ ;
+自警団員 > jikeidan''in\ ;
+電気抵抗 > denkiteikou\ ;
+防音装置 > bouonsouchi\ ;
+負債合計 > fusaigoukei\ ;
+遊軍記者 > yuugunkisha\ ;
+価値体系 > kachitaikei\ ;
+二重結婚 > nijuukekkon\ ;
+一長一短 > itchouittan\ ;
+護送船団 > gosousendan\ ;
+犯行現場 > hankougenba\ ;
+意見広告 > ikenkoukoku\ ;
+善因善果 > zen''inzenka\ ;
+無人地帯 > mujinchitai\ ;
+経営転換 > keieitenkan\ ;
+販売機会 > hanbaikikai\ ;
+遠隔操作 > enkakusousa\ ;
+慣用語句 > kan''yougoku\ ;
+液体空気 > ekitaikuuki\ ;
+出刃包丁 > debabouchou\ ;
+土讚本線 > dosanhonsen\ ;
+財政支援 > zaiseishien\ ;
+宮廷画家 > kyuuteigaka\ ;
+最後列車 > saigoressha\ ;
+理工学部 > rikougakubu\ ;
+保管会社 > hokangaisha\ ;
+配合禁忌 > haigoukinki\ ;
+過剰投資 > kajoutoushi\ ;
+家長制度 > kachouseido\ ;
+可聴距離 > kachoukyori\ ;
+親類縁者 > shinruienja\ ;
+宇宙化学 > uchuukagaku\ ;
+無理心中 > murishinjuu\ ;
+年賀葉書 > nengahagaki\ ;
+連邦予算 > renpouyosan\ ;
+創価学会 > soukagakkai\ ;
+利子補給 > rishihokyuu\ ;
+根本原理 > konpongenri\ ;
+安全保障 > anzenhoshou\ ;
+健康保険 > kenkouhoken\ ;
+暗黒時代 > ankokujidai\ ;
+世代交代 > sedaikoutai\ ;
+転送電話 > tensoudenwa\ ;
+昭和時代 > shouwajidai\ ;
+使用許可 > shiyoukyoka\ ;
+音楽映画 > ongakueiga\ ;
+宇宙遊泳 > uchuuyuuei\ ;
+保健制度 > hokenseido\ ;
+準備運動 > junbiundou\ ;
+代議制度 > daigiseido\ ;
+模型地図 > mokeichizu\ ;
+無茶苦茶 > muchakucha\ ;
+古往今来 > kooukonrai\ ;
+摩利支天 > marishiten\ ;
+人為淘汰 > jin''itouta\ ;
+稼働時間 > kadoujikan\ ;
+医療制度 > iryouseido\ ;
+面罵罵倒 > menbabatou\ ;
+選挙違反 > senkyoihan\ ;
+日本時間 > nihonjikan\ ;
+奴隷制度 > doreiseido\ ;
+構造保持 > kouzouhoji\ ;
+自動車化 > jidoushaka\ ;
+日本書紀 > nihonshoki\ ;
+不空成就 > fukuujouju\ ;
+平和運動 > heiwaundou\ ;
+公定歩合 > kouteibuai\ ;
+天衣無縫 > ten''imuhou\ ;
+理路整然 > riroseizen\ ;
+南京繻子 > nankinjusu\ ;
+虚無主義 > kyomushugi\ ;
+権威主義 > ken''ishugi\ ;
+気炎万丈 > kienbanjou\ ;
+三三九度 > sansankudo\ ;
+計算機間 > keisankima\ ;
+礼儀作法 > reigisahou\ ;
+滅茶苦茶 > mechakucha\ ;
+耳下腺炎 > jikasen''en\ ;
+石油危機 > sekiyukiki\ ;
+刑事事件 > keijijiken\ ;
+利用価値 > riyoukachi\ ;
+回線負荷 > kaisenfuka\ ;
+首尾一貫 > shubiikkan\ ;
+医療保険 > iryouhoken\ ;
+武装解除 > busoukaijo\ ;
+表意文字 > hyouimonji\ ;
+都市国家 > toshikokka\ ;
+無為徒食 > muitoshoku\ ;
+映画音楽 > eigaongaku\ ;
+前後左右 > zengosayuu\ ;
+野戦特科 > yasentokka\ ;
+不羈奔放 > fukihonpou\ ;
+一手販売 > ittehanbai\ ;
+当座預金 > touzayokin\ ;
+桜花爛漫 > oukaranman\ ;
+自由自在 > jiyuujizai\ ;
+乾燥無味 > kansoumumi\ ;
+二項定理 > nikouteiri\ ;
+活性汚泥 > kasseiodei\ ;
+三三五五 > sansangogo\ ;
+在庫管理 > zaikokanri\ ;
+火災保険 > kasaihoken\ ;
+罵詈雑言 > barizougon\ ;
+道路封鎖 > dourofuusa\ ;
+小委員会 > shouiinkai\ ;
+交渉委員 > koushouiin\ ;
+合同行為 > goudoukoui\ ;
+炉辺談話 > rohendanwa\ ;
+過去分詞 > kakobunshi\ ;
+営利会社 > eirigaisha\ ;
+人事不省 > jinjifusei\ ;
+異性関係 > iseikankei\ ;
+事故原因 > jikogen''in\ ;
+家出少女 > iedeshoujo\ ;
+古典主義 > kotenshugi\ ;
+不法投棄 > fuhoutouki\ ;
+二重螺旋 > nijuurasen\ ;
+位相速度 > isousokudo\ ;
+音韻部門 > on''inbumon\ ;
+機能主義 > kinoushugi\ ;
+機械警備 > kikaikeibi\ ;
+基礎試験 > kisoshiken\ ;
+家庭菜園 > kateisaien\ ;
+道路工事 > dourokouji\ ;
+亜爾然丁 > aruzenchin\ ;
+四苦八苦 > shikuhakku\ ;
+委細面談 > isaimendan\ ;
+対校試合 > taikoujiai\ ;
+人気作家 > ninkisakka\ ;
+暖冬異変 > dantouihen\ ;
+女性一般 > joseiippan\ ;
+怪獣映画 > kaijuueiga\ ;
+多種多様 > tashutayou\ ;
+二部教授 > nibukyouju\ ;
+速度違反 > sokudoihan\ ;
+横断歩道 > oudanhodou\ ;
+舗装道路 > hosoudouro\ ;
+無線技師 > musengishi\ ;
+飛鳥時代 > asukajidai\ ;
+回路基板 > kairokiban\ ;
+形成外科 > keiseigeka\ ;
+宇宙兵器 > uchuuheiki\ ;
+異常気象 > ijoukishou\ ;
+無機化学 > mukikagaku\ ;
+自由主義 > jiyuushugi\ ;
+位記追贈 > ikitsuisou\ ;
+実写映画 > jisshaeiga\ ;
+自由時間 > jiyuujikan\ ;
+御礼奉公 > oreiboukou\ ;
+園芸用具 > engeiyougu\ ;
+破茶目茶 > hachamecha\ ;
+不穏文書 > fuonbunsho\ ;
+漢字文化 > kanjibunka\ ;
+予備試験 > yobishiken\ ;
+労務管理 > roumukanri\ ;
+平和会議 > heiwakaigi\ ;
+任務部隊 > ninmubutai\ ;
+小間物屋 > komamonoya\ ;
+縦横無尽 > juuoumujin\ ;
+国家主義 > kokkashugi\ ;
+過剰投与 > kajoutouyo\ ;
+論理回路 > ronrikairo\ ;
+自壊作用 > jikaisayou\ ;
+準備期間 > junbikikan\ ;
+天下無双 > tenkamusou\ ;
+一瀉千里 > isshasenri\ ;
+横行闊歩 > oukoukappo\ ;
+剰余価値 > jouyokachi\ ;
+文化国家 > bunkakokka\ ;
+舞台稽古 > butaigeiko\ ;
+伊勢大廟 > isetaibyou\ ;
+相互支援 > sougoshien\ ;
+普遍原理 > fuhengenri\ ;
+不即不離 > fusokufuri\ ;
+悪因悪果 > akuin''akka\ ;
+三々九度 > sansankudo\ ;
+附和雷同 > fuwaraidou\ ;
+化粧部屋 > keshoubeya\ ;
+磨製石器 > maseisekki\ ;
+父子家庭 > fushikatei\ ;
+余韻嫋嫋 > yoinjoujou\ ;
+縄文土器 > joumondoki\ ;
+財務管理 > zaimukanri\ ;
+穂状花序 > suijoukajo\ ;
+辞書部門 > jishobumon\ ;
+機動部隊 > kidoubutai\ ;
+保安処分 > hoanshobun\ ;
+意思表示 > ishihyouji\ ;
+営利事業 > eirijigyou\ ;
+皮膚移植 > hifuishoku\ ;
+議事妨害 > gijibougai\ ;
+付和雷同 > fuwaraidou\ ;
+一騎当千 > ikkitousen\ ;
+阿鼻叫喚 > abikyoukan\ ;
+絶対温度 > zettaiondo\ ;
+黄金世界 > ougonsekai\ ;
+棒温度計 > bouondokei\ ;
+反対意見 > hantaiiken\ ;
+欣求浄土 > gongujoudo\ ;
+金貨準備 > kinkajunbi\ ;
+論理素子 > ronrisoshi\ ;
+露地栽培 > rojisaibai\ ;
+古墳時代 > kofunjidai\ ;
+無煙火薬 > muenkayaku\ ;
+政治機構 > seijikikou\ ;
+意志決定 > ishikettei\ ;
+負荷分散 > fukabunsan\ ;
+不偏不党 > fuhenfutou\ ;
+同床異夢 > doushouimu\ ;
+無限軌道 > mugenkidou\ ;
+軍事顧問 > gunjikomon\ ;
+耽美主義 > tanbishugi\ ;
+喜劇映画 > kigekieiga\ ;
+曼珠沙華 > manjushage\ ;
+模擬試験 > mogishiken\ ;
+規則違反 > kisokuihan\ ;
+夏炉冬扇 > karotousen\ ;
+雨天決行 > utenkekkou\ ;
+意見交換 > ikenkoukan\ ;
+不乾性油 > fukanseiyu\ ;
+泌尿器科 > hinyoukika\ ;
+帷幄上奏 > iakujousou\ ;
+全権委員 > zenken''iin\ ;
+演算機構 > enzankikou\ ;
+無蓋貨車 > mugaikasha\ ;
+二十世紀 > nijisseiki\ ;
+保護処分 > hogoshobun\ ;
+皮膚科学 > hifukagaku\ ;
+衆愚政治 > shuguseiji\ ;
+侍従武官 > jijuubukan\ ;
+控訴期間 > kousokikan\ ;
+上位構造 > jouikouzou\ ;
+常任委員 > jounin''iin\ ;
+芝居小屋 > shibaigoya\ ;
+公租公課 > kousokouka\ ;
+易感染性 > ikansensei\ ;
+紀伊國屋 > kinokuniya\ ;
+夜鷹蕎麦 > yotakasoba\ ;
+勤務時間 > kinmujikan\ ;
+厭世主義 > enseishugi\ ;
+単位記号 > tan''ikigou\ ;
+排他主義 > haitashugi\ ;
+宇宙飛行 > uchuuhikou\ ;
+仮名草紙 > kanazoushi\ ;
+坑内事故 > kounaijiko\ ;
+論理演算 > ronrienzan\ ;
+電気毛布 > denkimoufu\ ;
+雲鬢花顔 > unbinkagan\ ;
+御前会議 > gozenkaigi\ ;
+予備調査 > yobichousa\ ;
+平和主義 > heiwashugi\ ;
+稲荷寿司 > inarizushi\ ;
+注意事項 > chuuijikou\ ;
+胸部外科 > kyoubugeka\ ;
+非可換群 > hikakangun\ ;
+遺伝情報 > idenjouhou\ ;
+寄生火山 > kiseikazan\ ;
+二部授業 > nibujugyou\ ;
+非営利的 > hieiriteki\ ;
+河川工事 > kasenkouji\ ;
+相手次第 > aiteshidai\ ;
+便宜主義 > bengishugi\ ;
+皮膚呼吸 > hifukokyuu\ ;
+亜成層圏 > aseisouken\ ;
+空軍大尉 > kuuguntaii\ ;
+三々五々 > sansangogo\ ;
+梵和辞典 > bonwajiten\ ;
+控訴理由 > kousoriyuu\ ;
+部隊区分 > butaikubun\ ;
+悪魔主義 > akumashugi\ ;
+護岸工事 > gogankouji\ ;
+余韻嫋々 > yoinjoujou\ ;
+田夫野人 > denpuyajin\ ;
+奇奇怪怪 > kikikaikai\ ;
+神代文字 > jindaimoji\ ;
+古典時代 > kotenjidai\ ;
+市会議員 > shikaigiin\ ;
+危険負担 > kikenfutan\ ;
+健康不安 > kenkoufuan\ ;
+応急渡河 > oukyuutoka\ ;
+二重否定 > nijuuhitei\ ;
+意気衝天 > ikishouten\ ;
+医学用語 > igakuyougo\ ;
+舞台効果 > butaikouka\ ;
+電位差計 > den''isakei\ ;
+度数分布 > dosuubunpu\ ;
+運送保険 > unsouhoken\ ;
+高手小手 > takatekote\ ;
+無味乾燥 > mumikansou\ ;
+下院議長 > kaingichou\ ;
+軍備管理 > gunbikanri\ ;
+樹脂加工 > jushikakou\ ;
+利水工事 > risuikouji\ ;
+非常事態 > hijoujitai\ ;
+武装蜂起 > busouhouki\ ;
+有声音化 > yuuseionka\ ;
+価値基準 > kachikijun\ ;
+調理器具 > chourikigu\ ;
+砲煙弾雨 > houendan''u\ ;
+馬耳東風 > bajitoufuu\ ;
+平行移動 > heikouidou\ ;
+補助動詞 > hojodoushi\ ;
+否定応答 > hiteioutou\ ;
+自己資本 > jikoshihon\ ;
+黄金時代 > ougonjidai\ ;
+命令一下 > meireiikka\ ;
+納付期限 > noufukigen\ ;
+摸擬試験 > mogishiken\ ;
+小児麻痺 > shounimahi\ ;
+宣伝記事 > sendenkiji\ ;
+夏季休暇 > kakikyuuka\ ;
+臨時政府 > rinjiseifu\ ;
+三日三晩 > mikkamiban\ ;
+無理難題 > murinandai\ ;
+予備装置 > yobisouchi\ ;
+果樹栽培 > kajusaibai\ ;
+粗衣粗食 > soisoshoku\ ;
+人民委員 > jinmin''iin\ ;
+飽和蒸気 > houwajouki\ ;
+匹夫匹婦 > hippuhippu\ ;
+二分音符 > nibun''onpu\ ;
+千波万波 > senpabanpa\ ;
+異常発生 > ijouhassei\ ;
+治安部隊 > chianbutai\ ;
+刃傷沙汰 > ninjouzata\ ;
+不活性化 > fukasseika\ ;
+工事現場 > koujigenba\ ;
+自己宣伝 > jikosenden\ ;
+気管支炎 > kikanshien\ ;
+手前勝手 > temaegatte\ ;
+保守主義 > hoshushugi\ ;
+木端微塵 > koppamijin\ ;
+死亡記事 > shiboukiji\ ;
+過剰利益 > kajourieki\ ;
+女尊男卑 > josondanpi\ ;
+十二単衣 > juunihitoe\ ;
+分離課税 > bunrikazei\ ;
+任意捜査 > nin''isousa\ ;
+上位概念 > jouigainen\ ;
+舞台道具 > butaidougu\ ;
+上映時間 > joueijikan\ ;
+計器飛行 > keikihikou\ ;
+戦災孤児 > sensaikoji\ ;
+基本原理 > kihongenri\ ;
+情意投合 > jouitougou\ ;
+管理機能 > kanrikinou\ ;
+臨時記号 > rinjikigou\ ;
+兵役忌避 > heiekikihi\ ;
+戦争映画 > sensoueiga\ ;
+財政危機 > zaiseikiki\ ;
+有限花序 > yuugenkajo\ ;
+軍事基地 > gunjikichi\ ;
+不正事件 > fuseijiken\ ;
+出来次第 > dekishidai\ ;
+変体仮名 > hentaigana\ ;
+英雄主義 > eiyuushugi\ ;
+痴話喧嘩 > chiwagenka\ ;
+烏有先生 > uyuusensei\ ;
+憲法違反 > kenpouihan\ ;
+回転椅子 > kaiten''isu\ ;
+能登半島 > notohantou\ ;
+劣性遺伝 > resseiiden\ ;
+請負制度 > ukeoiseido\ ;
+水車小屋 > suishagoya\ ;
+褐毛和種 > akagewashu\ ;
+固定負債 > koteifusai\ ;
+依願免官 > iganmenkan\ ;
+政府機関 > seifukikan\ ;
+事件記者 > jikenkisha\ ;
+平安後期 > heiankouki\ ;
+雇用保険 > koyouhoken\ ;
+保護貿易 > hogoboueki\ ;
+世界制覇 > sekaiseiha\ ;
+無機肥料 > mukihiryou\ ;
+高野豆腐 > kouyadoufu\ ;
+代議政治 > daigiseiji\ ;
+意馬心猿 > ibashin''en\ ;
+交通遺児 > koutsuuiji\ ;
+遺棄貨物 > ikikamotsu\ ;
+炭化水素 > tankasuiso\ ;
+囲碁三級 > igosankyuu\ ;
+産婦人科 > sanfujinka\ ;
+理想主義 > risoushugi\ ;
+十字砲火 > juujihouka\ ;
+都道府県 > todoufuken\ ;
+麝香豌豆 > jakouendou\ ;
+盲唖学校 > mouagakkou\ ;
+保安条例 > hoanjourei\ ;
+石器時代 > sekkijidai\ ;
+似非理屈 > eserikutsu\ ;
+記念切手 > kinenkitte\ ;
+個人個人 > kojinkojin\ ;
+延滞利子 > entairishi\ ;
+分派主義 > bunpashugi\ ;
+毀誉褒貶 > kiyohouhen\ ;
+唯美主義 > yuibishugi\ ;
+軍事衛星 > gunjieisei\ ;
+無我夢中 > mugamuchuu\ ;
+予定期限 > yoteikigen\ ;
+立体映画 > rittaieiga\ ;
+天気模様 > tenkimoyou\ ;
+火口原湖 > kakougenko\ ;
+表音字母 > hyouonjibo\ ;
+音声言語 > onseigengo\ ;
+一昨昨日 > sakiototoi\ ;
+脱法行為 > dappoukoui\ ;
+個人主義 > kojinshugi\ ;
+不正規軍 > fuseikigun\ ;
+准看護婦 > junkangofu\ ;
+母子家庭 > boshikatei\ ;
+同名異人 > doumeiijin\ ;
+育児時間 > ikujijikan\ ;
+時価発行 > jikahakkou\ ;
+会議事項 > kaigijikou\ ;
+仮想記憶 > kasoukioku\ ;
+部分麻酔 > bubunmasui\ ;
+検事控訴 > kenjikouso\ ;
+経営管理 > keieikanri\ ;
+飛行時間 > hikoujikan\ ;
+四字熟語 > yojijukugo\ ;
+臨機応変 > rinkiouhen\ ;
+定期保険 > teikihoken\ ;
+造言飛語 > zougenhigo\ ;
+事務用品 > jimuyouhin\ ;
+言語地理 > gengochiri\ ;
+犯罪行為 > hanzaikoui\ ;
+輸送機関 > yusoukikan\ ;
+補助艦艇 > hojokantei\ ;
+五里霧中 > gorimuchuu\ ;
+三日天下 > mikkatenka\ ;
+基本単位 > kihontan''i\ ;
+猶予期間 > yuuyokikan\ ;
+請負工事 > ukeoikouji\ ;
+意思決定 > ishikettei\ ;
+後退文字 > koutaimoji\ ;
+男尊女卑 > dansonjohi\ ;
+大慈大悲 > daijidaihi\ ;
+如何様師 > ikasamashi\ ;
+臨界事故 > rinkaijiko\ ;
+因果関係 > ingakankei\ ;
+異種交配 > ishukouhai\ ;
+夜間勤務 > yakankinmu\ ;
+御国自慢 > okunijiman\ ;
+神経科医 > shinkeikai\ ;
+完全試合 > kanzenjiai\ ;
+公示地価 > koujichika\ ;
+一字一句 > ichijiikku\ ;
+原理主義 > genrishugi\ ;
+童話作家 > douwasakka\ ;
+妨害行為 > bougaikoui\ ;
+運営経費 > un''eikeihi\ ;
+二部合奏 > nibugassou\ ;
+名誉毀損 > meiyokison\ ;
+記録映画 > kirokueiga\ ;
+運搬管理 > unpankanri\ ;
+医科大学 > ikadaigaku\ ;
+加減乗除 > kagenjoujo\ ;
+阿片戦争 > ahensensou\ ;
+唯唯諾諾 > iidakudaku\ ;
+相対誤差 > soutaigosa\ ;
+飲酒運転 > inshuunten\ ;
+指名試合 > shimeijiai\ ;
+徒弟制度 > toteiseido\ ;
+紋羽二重 > monhabutae\ ;
+貨幣制度 > kaheiseido\ ;
+日和下駄 > hiyorigeta\ ;
+世界平和 > sekaiheiwa\ ;
+無理関数 > murikansuu\ ;
+音吐朗朗 > ontorourou\ ;
+梅雨前線 > baiuzensen\ ;
+電気時計 > denkidokei\ ;
+二十四日 > nijuuyokka\ ;
+悲歌慷慨 > hikakougai\ ;
+予防医学 > yobouigaku\ ;
+当期利益 > toukirieki\ ;
+皮下脂肪 > hikashibou\ ;
+陶磁器店 > toujikiten\ ;
+切符売場 > kippuuriba\ ;
+裸体主義 > rataishugi\ ;
+音標文字 > onpyoumoji\ ;
+不正規戦 > fuseikisen\ ;
+絶対位置 > zettaiichi\ ;
+簡易保険 > kan''ihoken\ ;
+寡頭政治 > katouseiji\ ;
+下水処理 > gesuishori\ ;
+記憶素子 > kiokusoshi\ ;
+音声記号 > onseikigou\ ;
+和平会議 > waheikaigi\ ;
+破壊主義 > hakaishugi\ ;
+宇宙基地 > uchuukichi\ ;
+不可知論 > fukachiron\ ;
+自衛手段 > jieishudan\ ;
+小売値段 > kourinedan\ ;
+市場規模 > shijoukibo\ ;
+議員立法 > giinrippou\ ;
+学級委員 > gakkyuuiin\ ;
+議会主義 > gikaishugi\ ;
+基礎科学 > kisokagaku\ ;
+捜査本部 > sousahonbu\ ;
+宇宙探査 > uchuutansa\ ;
+亜麻織物 > amaorimono\ ;
+順序不同 > junjofudou\ ;
+経済援助 > keizaienjo\ ;
+累算温度 > ruisanondo\ ;
+浪漫主義 > romanshugi\ ;
+武装都市 > busoutoshi\ ;
+平和国家 > heiwakokka\ ;
+道路地図 > dourochizu\ ;
+御朱印船 > goshuinsen\ ;
+夜郎自大 > yaroujidai\ ;
+部分否定 > bubunhitei\ ;
+講和会議 > kouwakaigi\ ;
+編組機械 > hensokikai\ ;
+医療器械 > iryoukikai\ ;
+正規分布 > seikibunpu\ ;
+会員名簿 > kaiinmeibo\ ;
+天変地異 > tenpenchii\ ;
+有史以来 > yuushiirai\ ;
+保護関税 > hogokanzei\ ;
+未帰還者 > mikikansha\ ;
+三日坊主 > mikkabouzu\ ;
+確固不動 > kakkofudou\ ;
+不側不離 > fusokufuri\ ;
+文房具屋 > bunbouguya\ ;
+康煕字典 > koukijiten\ ;
+未来永劫 > miraieigou\ ;
+無理算段 > murisandan\ ;
+虞美人草 > gubijinsou\ ;
+象牙細工 > zougezaiku\ ;
+滅茶滅茶 > mechamecha\ ;
+風車小屋 > fuushagoya\ ;
+子供部屋 > kodomobeya\ ;
+求愛誇示 > kyuuaikoji\ ;
+王政復古 > ouseifukko\ ;
+一人部屋 > hitoribeya\ ;
+不買運動 > fubaiundou\ ;
+吝嗇吝嗇 > kechikechi\ ;
+定期預金 > teikiyokin\ ;
+一定期間 > itteikikan\ ;
+地下運動 > chikaundou\ ;
+懐疑主義 > kaigishugi\ ;
+融通無碍 > yuuzuumuge\ ;
+保安要員 > hoan''youin\ ;
+主我主義 > shugashugi\ ;
+不作為犯 > fusakuihan\ ;
+舗装煉瓦 > hosourenga\ ;
+投影図法 > toueizuhou\ ;
+総状花序 > soujoukajo\ ;
+清浄無垢 > seijoumuku\ ;
+三面記事 > sanmenkiji\ ;
+才気縦横 > saikijuuou\ ;
+本位貨幣 > hon''ikahei\ ;
+馬鹿丁寧 > bakateinei\ ;
+日葡辞書 > nippojisho\ ;
+位相空間 > isoukuukan\ ;
+海事衛星 > kaijieisei\ ;
+空気機械 > kuukikikai\ ;
+共同井戸 > kyoudouido\ ;
+合理主義 > gourishugi\ ;
+天津御姉 > amatsumiko\ ;
+天手古舞 > tentekomai\ ;
+夜光時計 > yakoudokei\ ;
+自転車屋 > jitenshaya\ ;
+自家用車 > jikayousha\ ;
+単位制度 > tan''iseido\ ;
+文字情報 > mojijouhou\ ;
+規制解除 > kiseikaijo\ ;
+気焔万丈 > kienbanjou\ ;
+下水工事 > gesuikouji\ ;
+合意情死 > gouijoushi\ ;
+武装平和 > busouheiwa\ ;
+付帯事項 > futaijikou\ ;
+行方不明 > yukuefumei\ ;
+天気予報 > tenkiyohou\ ;
+不平不満 > fuheifuman\ ;
+被保険者 > hihokensha\ ;
+親子電話 > oyakodenwa\ ;
+多情多恨 > tajoutakon\ ;
+経営破綻 > keieihatan\ ;
+賛助会員 > sanjokaiin\ ;
+下部構造 > kabukouzou\ ;
+毎土曜日 > maidoyoubi\ ;
+予算措置 > yosansochi\ ;
+不穏分子 > fuonbunshi\ ;
+喜怒哀楽 > kidoairaku\ ;
+漢和辞典 > kanwajiten\ ;
+友誼国家 > yuugikokka\ ;
+相互保険 > sougohoken\ ;
+事大主義 > jidaishugi\ ;
+五輪会議 > gorinkaigi\ ;
+語形変化 > gokeihenka\ ;
+非戦闘員 > hisentouin\ ;
+無念無想 > munenmusou\ ;
+演算手順 > enzantejun\ ;
+武断主義 > budanshugi\ ;
+世話人間 > sewaningen\ ;
+幾何平均 > kikaheikin\ ;
+人工降雨 > jinkoukouu\ ;
+自問自答 > jimonjitou\ ;
+皇紀年度 > koukinendo\ ;
+口腔外科 > koukougeka\ ;
+脳性麻痺 > nouseimahi\ ;
+五十音順 > gojuuonjun\ ;
+演算精度 > enzanseido\ ;
+十字架状 > juujikajou\ ;
+不老不死 > furoufushi\ ;
+世界主義 > sekaishugi\ ;
+螺鈿細工 > radenzaiku\ ;
+記載事項 > kisaijikou\ ;
+炭素繊維 > tansosen''i\ ;
+無線電話 > musendenwa\ ;
+温情主義 > onjoushugi\ ;
+個人経営 > kojinkeiei\ ;
+奔放不羈 > honpoufuki\ ;
+鉄器時代 > tekkijidai\ ;
+物価騰貴 > bukkatouki\ ;
+日本舞踊 > nihonbuyou\ ;
+聾唖学校 > rouagakkou\ ;
+現代英語 > gendaieigo\ ;
+十二使徒 > juunishito\ ;
+日本庭園 > nihonteien\ ;
+遺伝暗号 > iden''angou\ ;
+軍事輸送 > gunjiyusou\ ;
+伴性遺伝 > hanseiiden\ ;
+経営参加 > keieisanka\ ;
+予備選挙 > yobisenkyo\ ;
+予備艦隊 > yobikantai\ ;
+予備選手 > yobisenshu\ ;
+不倶戴天 > fugutaiten\ ;
+平和部隊 > heiwabutai\ ;
+唯々諾々 > iidakudaku\ ;
+裁判沙汰 > saibanzata\ ;
+営利法人 > eirihoujin\ ;
+議会政治 > gikaiseiji\ ;
+雨天順延 > utenjun''en\ ;
+付帯費用 > futaihiyou\ ;
+代議員団 > daigiindan\ ;
+二重課税 > nijuukazei\ ;
+扶養控除 > fuyoukoujo\ ;
+衛星都市 > eiseitoshi\ ;
+電気回路 > denkikairo\ ;
+地下二階 > chikanikai\ ;
+預金口座 > yokinkouza\ ;
+色恋沙汰 > irokoizata\ ;
+貨幣価値 > kaheikachi\ ;
+残務整理 > zanmuseiri\ ;
+公営保険 > koueihoken\ ;
+譲渡担保 > joutotanpo\ ;
+一家団欒 > ikkadanran\ ;
+代議員会 > daigiinkai\ ;
+補正予算 > hoseiyosan\ ;
+過剰防衛 > kajoubouei\ ;
+予備座席 > yobizaseki\ ;
+衛生基準 > eiseikijun\ ;
+保護団体 > hogodantai\ ;
+儀装馬車 > gisoubasha\ ;
+時事問題 > jijimondai\ ;
+夫婦喧嘩 > fuufugenka\ ;
+断固抗議 > dankokougi\ ;
+五輪聖火 > gorinseika\ ;
+自分勝手 > jibunkatte\ ;
+軍需景気 > gunjukeiki\ ;
+基底部門 > kiteibumon\ ;
+丸太小屋 > marutagoya\ ;
+予想利益 > yosourieki\ ;
+五音音階 > goon''onkai\ ;
+火気厳禁 > kakigenkin\ ;
+十字架像 > juujikazou\ ;
+処理過程 > shorikatei\ ;
+一定不変 > itteifuhen\ ;
+月下美人 > gekkabijin\ ;
+瀬戸内海 > setonaikai\ ;
+老政治家 > rouseijika\ ;
+功利主義 > kourishugi\ ;
+規制緩和 > kiseikanwa\ ;
+如是我聞 > nyozegamon\ ;
+明治時代 > meijijidai\ ;
+同化作用 > doukasayou\ ;
+別途預金 > bettoyokin\ ;
+下種根性 > gesukonjou\ ;
+援助交際 > enjokousai\ ;
+国会議員 > kokkaigiin\ ;
+土地利用 > tochiriyou\ ;
+栄枯盛衰 > eikoseisui\ ;
+相互作用 > sougosayou\ ;
+舞台衣装 > butaiishou\ ;
+合議制度 > gougiseido\ ;
+雌雄異株 > shiyuuishu\ ;
+反射誤差 > hanshagosa\ ;
+塩素酸塩 > ensosan''en\ ;
+絶対誤差 > zettaigosa\ ;
+物損事故 > bussonjiko\ ;
+全部保険 > zenbuhoken\ ;
+悪巫山戯 > warufuzake\ ;
+整形外科 > seikeigeka\ ;
+武家政権 > bukeseiken\ ;
+二項分布 > nikoubunpu\ ;
+映画会社 > eigagaisha\ ;
+鉄砲百合 > teppouyuri\ ;
+名誉会員 > meiyokaiin\ ;
+応募用紙 > ouboyoushi\ ;
+自浄作用 > jijousayou\ ;
+外貨預金 > gaikayokin\ ;
+恐怖映画 > kyoufueiga\ ;
+課税控除 > kazeikoujo\ ;
+許容誤差 > kyoyougosa\ ;
+不定期刑 > futeikikei\ ;
+明治維新 > meijiishin\ ;
+言語機能 > gengokinou\ ;
+保税倉庫 > hozeisouko\ ;
+医療機関 > iryoukikan\ ;
+石井聰互 > ishiisougo\ ;
+軍事封鎖 > gunjifuusa\ ;
+位階勲等 > ikaikuntou\ ;
+耐火煉瓦 > taikarenga\ ;
+古今無類 > kokonmurui\ ;
+電波管理 > denpakanri\ ;
+民事事件 > minjijiken\ ;
+自然保護 > shizenhogo\ ;
+画像処理 > gazoushori\ ;
+種種雑多 > shujuzatta\ ;
+映画俳優 > eigahaiyuu\ ;
+目茶目茶 > mechamecha\ ;
+磁気録音 > jikirokuon\ ;
+不協和音 > fukyouwaon\ ;
+本位記号 > hon''ikigou\ ;
+衛生管理 > eiseikanri\ ;
+相互主義 > sougoshugi\ ;
+応募資金 > ouboshikin\ ;
+復古主義 > fukkoshugi\ ;
+次亜硫酸 > jiaryuusan\ ;
+平安時代 > heianjidai\ ;
+情報機器 > jouhoukiki\ ;
+三位一体 > sanmiittai\ ;
+政務次官 > seimujikan\ ;
+雌雄異体 > shiyuuitai\ ;
+武断政治 > budanseiji\ ;
+酸化炭素 > sankatanso\ ;
+水彩画家 > suisaigaka\ ;
+基礎代謝 > kisotaisha\ ;
+一杯機嫌 > ippaikigen\ ;
+道路輸送 > douroyusou\ ;
+亜熱帯林 > anettairin\ ;
+青息吐息 > aoikitoiki\ ;
+慇懃無礼 > inginburei\ ;
+糞真面目 > kusomajime\ ;
+自主規制 > jishukisei\ ;
+弥生時代 > yayoijidai\ ;
+目茶苦茶 > mechakucha\ ;
+予備会談 > yobikaidan\ ;
+等位構造 > touikouzou\ ;
+他流試合 > taryuujiai\ ;
+安定操作 > anteisousa\ ;
+無償行為 > mushoukoui\ ;
+夏期休暇 > kakikyuuka\ ;
+夏期学校 > kakigakkou\ ;
+宇宙医学 > uchuuigaku\ ;
+名誉除隊 > meiyojotai\ ;
+五臓六腑 > gozouroppu\ ;
+執行委員 > shikkouiin\ ;
+四面楚歌 > shimensoka\ ;
+威風堂堂 > ifuudoudou\ ;
+軍事会議 > gunjikaigi\ ;
+跛行景気 > hakoukeiki\ ;
+饂飩粉病 > udonkobyou\ ;
+天下一品 > tenkaippin\ ;
+基地閉鎖 > kichiheisa\ ;
+筆記用具 > hikkiyougu\ ;
+蒸気機関 > joukikikan\ ;
+磁気抵抗 > jikiteikou\ ;
+丁字定規 > teijijougi\ ;
+固定金利 > koteikinri\ ;
+起動時間 > kidoujikan\ ;
+自己欺瞞 > jikogiman\ ;
+慰安旅行 > ianryokou\ ;
+電気器具 > denkikigu\ ;
+危機打者 > kikidasha\ ;
+塩化水素 > enkasuiso\ ;
+人事異動 > jinjiidou\ ;
+亜鉛鉄板 > aenteppan\ ;
+遮二無二 > shanimuni\ ;
+遺伝地図 > idenchizu\ ;
+不法行為 > fuhoukoui\ ;
+死体遺棄 > shitaiiki\ ;
+内野安打 > naiyaanda\ ;
+平穏無事 > heionbuji\ ;
+明明後日 > shiasatte\ ;
+一気呵成 > ikkikasei\ ;
+武器貸与 > bukitaiyo\ ;
+一夫多妻 > ipputasai\ ;
+危機突破 > kikitoppa\ ;
+医療機器 > iryoukiki\ ;
+天下無比 > tenkamuhi\ ;
+掩護部隊 > engobutai\ ;
+馬鹿野郎 > bakayarou\ ;
+口語英語 > kougoeigo\ ;
+鉄火味噌 > tekkamiso\ ;
+阿弥陀経 > amidakyou\ ;
+阿弥陀籤 > amidakuji\ ;
+存在意義 > sonzaiigi\ ;
+又従兄弟 > mataitoko\ ;
+羽毛布団 > umoufuton\ ;
+利己主義 > rikoshugi\ ;
+営利主義 > eirishugi\ ;
+無声映画 > museieiga\ ;
+補助漢字 > hojokanji\ ;
+和英辞書 > waeijisho\ ;
+同位元素 > douigenso\ ;
+再従兄弟 > futaitoko\ ;
+亜鉛凸版 > aentoppan\ ;
+磁気浮上 > jikifujou\ ;
+不法移民 > fuhouimin\ ;
+越権行為 > ekkenkoui\ ;
+主意主義 > shuishugi\ ;
+自己検査 > jikokensa\ ;
+多事多難 > tajitanan\ ;
+ABC順 > ēbīshījun\ ;
+意気揚揚 > ikiyouyou\ ;
+和英辞典 > waeijiten\ ;
+不意試験 > fuishiken\ ;
+模範試合 > mohanjiai\ ;
+二重母音 > nijuuboin\ ;
+栄耀栄華 > eiyoueiga\ ;
+母語話者 > bogowasha\ ;
+木戸御免 > kidogomen\ ;
+自己疎外 > jikosogai\ ;
+基礎控除 > kisokoujo\ ;
+一定温度 > itteiondo\ ;
+手前味噌 > temaemiso\ ;
+允文允武 > inbuninbu\ ;
+自暴自棄 > jiboujiki\ ;
+相撲部屋 > sumoubeya\ ;
+自己保存 > jikohozon\ ;
+多事多端 > tajitatan\ ;
+明々後日 > shiasatte\ ;
+曖昧模糊 > aimaimoko\ ;
+事務次官 > jimujikan\ ;
+気宇広大 > kiukoudai\ ;
+多数意見 > tasuuiken\ ;
+歯科医師 > shikaishi\ ;
+美化運動 > bikaundou\ ;
+自己主義 > jikoshugi\ ;
+実行委員 > jikkouiin\ ;
+合気道家 > aikidouka\ ;
+遺族扶助 > izokufujo\ ;
+娑羅双樹 > sarasouju\ ;
+意気揚々 > ikiyouyou\ ;
+自己顕示 > jikokenji\ ;
+自己負担 > jikofutan\ ;
+露天風呂 > rotenburo\ ;
+意気投合 > ikitougou\ ;
+運否天賦 > unputenpu\ ;
+富栄養化 > fueiyouka\ ;
+印度支那 > indoshina\ ;
+欧化主義 > oukashugi\ ;
+無二無三 > munimuzan\ ;
+三日三夜 > mikkamiyo\ ;
+牡丹海老 > botan''ebi\ ;
+電気機器 > denkikiki\ ;
+自己嫌悪 > jikoken''o\ ;
+基本合意 > kihongoui\ ;
+小児科医 > shounikai\ ;
+我武者羅 > gamushara\ ;
+自己犠牲 > jikogisei\ ;
+相互扶助 > sougofujo\ ;
+同音異義 > douon''igi\ ;
+自己本位 > jikohon''i\ ;
+異常高温 > ijoukouon\ ;
+軍事援助 > gunjienjo\ ;
+弊衣破帽 > heiihabou\ ;
+七五三縄 > shimenawa\ ;
+文化遺産 > bunkaisan\ ;
+又従姉妹 > mataitoko\ ;
+自家受精 > jikajusei\ ;
+自家受粉 > jikajufun\ ;
+民生委員 > minseiiin\ ;
+愛他主義 > aitashugi\ ;
+一党一派 > ittouippa\ ;
+怪奇映画 > kaikieiga\ ;
+釈迦牟尼 > shakamuni\ ;
+社会経済 > shakaikei\ ;
+結跏趺座 > kekkafuza\ ;
+蓖麻子油 > himashiyu\ ;
+天気具合 > tenkiguai\ ;
+一口同音 > ikkudouon\ ;
+不可思議 > fukashigi\ ;
+医事伝道 > ijidendou\ ;
+音部記号 > onbukigou\ ;
+奈良時代 > narajidai\ ;
+耳鼻咽喉 > jibiinkou\ ;
+空気汚染 > kuukiosen\ ;
+烏帽子貝 > eboshigai\ ;
+有象無象 > uzoumuzou\ ;
+起訴猶予 > kisoyuuyo\ ;
+伊勢神宮 > isejinguu\ ;
+尸位素餐 > shiisosan\ ;
+野天風呂 > notenburo\ ;
+無理無体 > murimutai\ ;
+意気軒高 > ikikenkou\ ;
+語尾変化 > gobihenka\ ;
+九分九厘 > kubukurin\ ;
+自己規制 > jikokisei\ ;
+同委員会 > douiinkai\ ;
+沙羅双樹 > sarasouju\ ;
+一妻多夫 > issaitafu\ ;
+不正行為 > fuseikoui\ ;
+現状維持 > genjouiji\ ;
+美辞麗句 > bijireiku\ ;
+不言不語 > fugenfugo\ ;
+下部機関 > kabukikan\ ;
+個人誤差 > kojingosa\ ;
+自由意志 > jiyuuishi\ ;
+二次記憶 > nijikioku\ ;
+区会議員 > kukaigiin\ ;
+古事記伝 > kojikiden\ ;
+無為無策 > muimusaku\ ;
+小生意気 > konamaiki\ ;
+汚染除去 > osenjokyo\ ;
+扶養義務 > fuyougimu\ ;
+擬古主義 > gikoshugi\ ;
+九寸五分 > kusungobu\ ;
+意気軒昂 > ikikenkou\ ;
+女郎蜘蛛 > jorougumo\ ;
+不随意筋 > fuzuiikin\ ;
+移行期間 > ikoukikan\ ;
+付加価値 > fukakachi\ ;
+土壌汚染 > dojouosen\ ;
+上院議員 > jouingiin\ ;
+御家騒動 > oiesoudou\ ;
+二度三度 > nidosando\ ;
+高祖頭巾 > kosozukin\ ;
+予備部品 > yobibuhin\ ;
+自己批判 > jikohihan\ ;
+自画自賛 > jigajisan\ ;
+自画自讚 > jigajisan\ ;
+首位打者 > shuidasha\ ;
+因果応報 > ingaouhou\ ;
+下女下男 > gejogenan\ ;
+安楽椅子 > anrakuisu\ ;
+委員付託 > iinfutaku\ ;
+予備運動 > yobiundou\ ;
+遺産管理 > isankanri\ ;
+争議行為 > sougikoui\ ;
+麻婆豆腐 > mābodoufu\ ;
+文化映画 > bunkaeiga\ ;
+意味内容 > iminaiyou\ ;
+予備判事 > yobihanji\ ;
+武家時代 > bukejidai\ ;
+医療過誤 > iryoukago\ ;
+武家政治 > bukeseiji\ ;
+女王陛下 > joouheika\ ;
+大気汚染 > taikiosen\ ;
+基礎工事 > kisokouji\ ;
+無理往生 > murioujou\ ;
+何時時分 > itsujibun\ ;
+相互依存 > sougoizon\ ;
+語彙規則 > goikisoku\ ;
+自己弁護 > jikobengo\ ;
+五十音図 > gojuuonzu\ ;
+利他主義 > ritashugi\ ;
+加持祈祷 > kajikitou\ ;
+花卉園芸 > kakiengei\ ;
+和製英語 > waseieigo\ ;
+仮名手本 > kanadehon\ ;
+英和辞典 > eiwajiten\ ;
+予備会議 > yobikaigi\ ;
+二院制度 > niinseido\ ;
+夏期時間 > kakijikan\ ;
+井戸屋形 > idoyakata\ ;
+自己矛盾 > jikomujun\ ;
+危機管理 > kikikanri\ ;
+基礎体温 > kisotaion\ ;
+盂蘭盆会 > urabon''e\ ;
+医科歯科 > ikashika\ ;
+二度手間 > nidodema\ ;
+于蘭盆会 > urabon''e\ ;
+恵比寿顔 > ebisugao\ ;
+愚図愚図 > guzuguzu\ ;
+和気藹藹 > wakiaiai\ ;
+不真面目 > fumajime\ ;
+得手勝手 > etekatte\ ;
+寄付行為 > kifukoui\ ;
+乎古止点 > okototen\ ;
+富士五湖 > fujigoko\ ;
+是是非非 > zezehihi\ ;
+我利我利 > garigari\ ;
+江戸時代 > edojidai\ ;
+歯科医院 > shikaiin\ ;
+意気阻喪 > ikisosou\ ;
+違犯行為 > ihankoui\ ;
+恵比須講 > ebisukou\ ;
+一歩一歩 > ippoippo\ ;
+和気藹々 > wakiaiai\ ;
+無期延期 > mukienki\ ;
+赤鳥赤腹 > akakokko\ ;
+天爾乎波 > teniwoha\ ;
+依怙贔屓 > ekohiiki\ ;
+事務機器 > jimukiki\ ;
+自己暗示 > jikoanji\ ;
+伯剌西爾 > burajiru\ ;
+下院議員 > kaingiin\ ;
+電気椅子 > denkiisu\ ;
+平和維持 > heiwaiji\ ;
+有為転変 > uitenpen\ ;
+英小文字 > eikomoji\ ;
+何処其処 > dokosoko\ ;
+弖爾乎波 > teniwoha\ ;
+出来具合 > dekiguai\ ;
+意味部門 > imibumon\ ;
+土左衛門 > dozaemon\ ;
+意味原理 > imigenri\ ;
+依估贔屓 > ekohiiki\ ;
+婦人科医 > fujinkai\ ;
+烏帽子名 > eboshina\ ;
+風邪気味 > kazegimi\ ;
+左顧右眄 > sakouben\ ;
+仮名文字 > kanamoji\ ;
+地下足袋 > jikatabi\ ;
+大真面目 > oomajime\ ;
+検非違使 > kebiishi\ ;
+御無沙汰 > gobusata\ ;
+右顧左眄 > ukosaben\ ;
+違法行為 > ihoukoui\ ;
+会意文字 > kaiimoji\ ;
+合縁奇縁 > aienkien\ ;
+監査委員 > kansaiin\ ;
+異口同音 > ikudouon\ ;
+引火温度 > inkaondo\ ;
+阿古屋貝 > akoyagai\ ;
+生真面目 > kimajime\ ;
+是々非々 > zezehihi\ ;
+無理矢理 > muriyari\ ;
+示威運動 > jiiundou\ ;
+一夫一婦 > ippuippu\ ;
+五分五分 > gobugobu\ ;
+天爾遠波 > teniwoha\ ;
+後鳥羽院 > gotobain\ ;
+有耶無耶 > uyamuya\ ;
+亜米利加 > amerika\ ;
+荏胡麻油 > egomayu\ ;
+皮膚科医 > hifukai\ ;
+右往左往 > uousaou\ ;
+亜麻仁油 > amaniyu\ ;
+障泥烏賊 > aoriika\ ;
+御披露目 > ohirome\ ;
+赤啄木鳥 > akagera\ ;
+保護委員 > hogoiin\ ;
+阿弗利加 > afurika\ ;
+今日明日 > kyouasu\ ;
+亜拉毘亜 > arabia\ ;
+伊勢海老 > iseebi\ ;
+亜剌比亜 > arabia\ ;
+緑啄木鳥 > aogera\ ;
+御目見得 > omemie\ ;
+寿教室 > kotobukikyoushitsu\ ;
+私小説 > watakushishousetsu\ ;
+七七日 > shichishichinichi\ ;
+紫露草 > murasakitsuyukusa\ ;
+七々日 > shichishichinichi\ ;
+軽口話 > karukuchibanashi\ ;
+植物質 > shokubutsushitsu\ ;
+宿直室 > shukuchokushitsu\ ;
+一口話 > hitokuchibanashi\ ;
+筍生活 > takenokoseikatsu\ ;
+譲渡人 > yuzuriwatashinin\ ;
+内幕話 > uchimakubanashi\ ;
+集札係 > shuusatsugakari\ ;
+金槌頭 > kanadzuchiatama\ ;
+出札掛 > shussatsugakari\ ;
+三指鴎 > mitsuyubikamome\ ;
+出札係 > shussatsugakari\ ;
+腰赤燕 > koshiakatsubame\ ;
+診察室 > shinsatsushitsu\ ;
+識別力 > shikibetsuryoku\ ;
+私自身 > watakushijishin\ ;
+平清盛 > tairanokiyomori\ ;
+入出力 > nyuushutsuryoku\ ;
+紛失届 > funshitsutodoke\ ;
+求職係 > kyuushokugakari\ ;
+金壺眼 > kanatsubomanako\ ;
+陳列室 > chinretsushitsu\ ;
+特別室 > tokubetsushitsu\ ;
+紫水晶 > murasakizuishou\ ;
+取締役 > torishimariyaku\ ;
+片口鰯 > katakuchiiwashi\ ;
+不倒翁 > okiagarikoboshi\ ;
+不肖私 > fushouwatakushi\ ;
+失業率 > shitsugyouritsu\ ;
+抽出物 > chuushutsubutsu\ ;
+女友達 > on''natomodachi\ ;
+百日咳 > hyakunichizeki\ ;
+行列式 > gyouretsushiki\ ;
+取扱人 > toriatsukainin\ ;
+出入国 > shutsunyuukoku\ ;
+才槌頭 > saidzuchiatama\ ;
+逆説的 > gyakusetsuteki\ ;
+副食物 > fukushokubutsu\ ;
+瓢箪鯰 > hyoutan''namazu\ ;
+東半球 > higashihankyuu\ ;
+動物質 > doubutsushitsu\ ;
+越中褌 > etchuufundoshi\ ;
+印半纏 > shirushibanten\ ;
+仕方話 > shikatabanashi\ ;
+改札係 > kaisatsugakari\ ;
+剃刀触 > kamisorikabure\ ;
+売渡証 > uriwatashishou\ ;
+告別式 > kokubetsushiki\ ;
+夾雑物 > kyouzatsubutsu\ ;
+緑白色 > ryokuhakushoku\ ;
+膝関節 > shitsukansetsu\ ;
+接続口 > setsuzokuguchi\ ;
+凝着力 > gyouchakuryoku\ ;
+懐勘定 > futokorokanjou\ ;
+提出物 > teishutsubutsu\ ;
+出札口 > shussatsuguchi\ ;
+天日瓦 > tenjitsugawara\ ;
+夢物語 > yumemonogatari\ ;
+一昔前 > hitomukashimae\ ;
+百卒長 > hyakusotsuchou\ ;
+逆行列 > gyakugyouretsu\ ;
+旭日章 > kyokujitsushou\ ;
+幼友達 > osanatomodachi\ ;
+尻軽女 > shirigaruon''na\ ;
+白鉢巻 > shirohachimaki\ ;
+薄紫色 > usumurasakiiro\ ;
+出塁率 > shutsuruiritsu\ ;
+電信柱 > denshinbashira\ ;
+内証話 > naishoubanashi\ ;
+緑玉石 > ryokugyokuseki\ ;
+膝蓋骨 > shitsugaikotsu\ ;
+仮出獄 > karishutsugoku\ ;
+特別職 > tokubetsushoku\ ;
+命辛辛 > inochigaragara\ ;
+転入届 > ten''nyuutodoke\ ;
+受付係 > uketsukegakari\ ;
+就職率 > shuushokuritsu\ ;
+給料袋 > kyuuryoubukuro\ ;
+植物学 > shokubutsugaku\ ;
+大和魂 > yamatodamashii\ ;
+下台所 > shimodaidokoro\ ;
+就職口 > shuushokuguchi\ ;
+筋肉質 > kin''nikushitsu\ ;
+力仕事 > chikarashigoto\ ;
+嫡出子 > chakushutsushi\ ;
+片袖机 > katasodedzukue\ ;
+卒業式 > sotsugyoushiki\ ;
+光通信 > hikaritsuushin\ ;
+取締法 > torishimarihou\ ;
+手術室 > shujutsushitsu\ ;
+試着室 > shichakushitsu\ ;
+爆発物 > bakuhatsubutsu\ ;
+猪武者 > inoshishimusha\ ;
+大黒柱 > daikokubashira\ ;
+鎖帷子 > kusarikatabira\ ;
+不躾者 > bushitsukemono\ ;
+三色菫 > sanshokusumire\ ;
+命辛々 > inochigaragara\ ;
+出力線 > shutsuryokusen\ ;
+爆発力 > bakuhatsuryoku\ ;
+着信局 > chakushinkyoku\ ;
+排出物 > haishutsubutsu\ ;
+鉱物質 > koubutsushitsu\ ;
+振出局 > furidashikyoku\ ;
+執務室 > shitsumushitsu\ ;
+発熱量 > hatsunetsuryou\ ;
+大八車 > daihachiguruma\ ;
+直接的 > chokusetsuteki\ ;
+θ理論 > shi\ ̄ta\ ̄riron\ ;
+改札鋏 > kaisatsuhasami\ ;
+不束者 > futsutsukamono\ ;
+燕千鳥 > tsubamechidori\ ;
+休憩室 > kyuukeishitsu\ ;
+日没前 > nichibotsuzen\ ;
+狐格子 > kitsunegoushi\ ;
+閲覧室 > etsuranshitsu\ ;
+建築物 > kenchikubutsu\ ;
+実質的 > jisshitsuteki\ ;
+翌々日 > yokuyokujitsu\ ;
+試聴室 > shichoushitsu\ ;
+古強者 > furutsuwamono\ ;
+狸囃子 > tanukibayashi\ ;
+植毛術 > shokumoujutsu\ ;
+旧正月 > kyuushougatsu\ ;
+丸鼻蜂 > maruhanabachi\ ;
+脚色者 > kyakushokusha\ ;
+東海岸 > higashikaigan\ ;
+直立茎 > chokuritsukei\ ;
+白雪姫 > shirayukihime\ ;
+断熱的 > dan''netsuteki\ ;
+泥縄式 > doronawashiki\ ;
+観閲式 > kan''etsushiki\ ;
+吸湿性 > kyuushitsusei\ ;
+消極的 > shoukyokuteki\ ;
+漂流物 > hyouryuubutsu\ ;
+下二桁 > shimofutaketa\ ;
+憂鬱質 > yuuutsushitsu\ ;
+俄成金 > niwakanarikin\ ;
+収穫物 > shuukakubutsu\ ;
+貸付金 > kashitsukekin\ ;
+動物達 > doubutsutachi\ ;
+食糧庁 > shokuryouchou\ ;
+腺病質 > senbyoushitsu\ ;
+民約説 > min''yakusetsu\ ;
+吸湿剤 > kyuushitsuzai\ ;
+二筋道 > futasujimichi\ ;
+半長靴 > han''nagagutsu\ ;
+校長室 > kouchoushitsu\ ;
+決断力 > ketsudanryoku\ ;
+差出人 > sashidashinin\ ;
+七曜表 > shichiyouhyou\ ;
+灰緑色 > kairyokushoku\ ;
+本質的 > honshitsuteki\ ;
+求心力 > kyuushinryoku\ ;
+結団式 > ketsudanshiki\ ;
+改札口 > kaisatsuguchi\ ;
+繁殖力 > hanshokuryoku\ ;
+囃子詞 > hayashikotoba\ ;
+人差指 > hitosashiyubi\ ;
+七面鳥 > shichimenchou\ ;
+発言力 > hatsugenryoku\ ;
+出世頭 > shussegashira\ ;
+集中力 > shuuchuuryoku\ ;
+屈辱的 > kutsujokuteki\ ;
+商売敵 > shoubaigataki\ ;
+出生届 > shusseitodoke\ ;
+脱獄囚 > datsugokushuu\ ;
+古武士 > furutsuwamono\ ;
+土産話 > miyagebanashi\ ;
+白装束 > shiroshouzoku\ ;
+腰巾着 > koshiginchaku\ ;
+半熟卵 > hanjukutamago\ ;
+没常識 > botsujoushiki\ ;
+集塵袋 > shuujinbukuro\ ;
+三下奴 > sanshitayakko\ ;
+地質学 > chishitsugaku\ ;
+楽屋話 > gakuyabanashi\ ;
+強奪物 > goudatsubutsu\ ;
+閑日月 > kanjitsugetsu\ ;
+挑発的 > chouhatsuteki\ ;
+祝祭日 > shukusaijitsu\ ;
+彫刻術 > choukokujutsu\ ;
+中立国 > chuuritsukoku\ ;
+喫煙室 > kitsuenshitsu\ ;
+一両日 > ichiryoujitsu\ ;
+橋脚舟 > kyoukyakushuu\ ;
+漬物石 > tsukemonoishi\ ;
+外出中 > gaishutsuchuu\ ;
+鉄染色 > tetsusenshoku\ ;
+独立心 > dokuritsushin\ ;
+今月末 > kongetsumatsu\ ;
+実物大 > jitsubutsudai\ ;
+拾得物 > shuutokubutsu\ ;
+倉敷料 > kurashikiryou\ ;
+資料室 > shiryoushitsu\ ;
+買物袋 > kaimonobukuro\ ;
+吸収力 > kyuushuuryoku\ ;
+独立国 > dokuritsukoku\ ;
+血尿症 > ketsunyoushou\ ;
+彫刻物 > choukokubutsu\ ;
+堪忍袋 > kan''ninbukuro\ ;
+社長室 > shachoushitsu\ ;
+丼勘定 > donburikanjou\ ;
+玉子丼 > tamagodonburi\ ;
+縮刷版 > shukusatsuban\ ;
+今日的 > kon''nichiteki\ ;
+洞察力 > dousatsuryoku\ ;
+松食虫 > matsukuimushi\ ;
+芋蔓式 > imodzurushiki\ ;
+質量数 > shitsuryousuu\ ;
+別配達 > betsuhaitatsu\ ;
+今日様 > kon''nichisama\ ;
+冠大会 > kanmuritaikai\ ;
+追複曲 > tsuifukukyoku\ ;
+組合頭 > kumiaigashira\ ;
+散歩旁 > sanpokatagata\ ;
+供託物 > kyoutakubutsu\ ;
+出願人 > shutsugan''nin\ ;
+粘着力 > nenchakuryoku\ ;
+宿泊料 > shukuhakuryou\ ;
+枝垂桜 > shidarezakura\ ;
+古代紫 > kodaimurasaki\ ;
+枝垂柳 > shidareyanagi\ ;
+深緑色 > fukamidoriiro\ ;
+積雪量 > sekisetsuryou\ ;
+研究室 > kenkyuushitsu\ ;
+工作室 > kousakushitsu\ ;
+作劇術 > sakugekijutsu\ ;
+短日月 > tanjitsugetsu\ ;
+車掌室 > shashoushitsu\ ;
+診察料 > shinsatsuryou\ ;
+俸給袋 > houkyuubukuro\ ;
+消失点 > shoushitsuten\ ;
+読書室 > dokushoshitsu\ ;
+宿泊先 > shukuhakusaki\ ;
+識別子 > shikibetsushi\ ;
+南半球 > minamihankyuu\ ;
+職員室 > shokuinshitsu\ ;
+信玄袋 > shingenbukuro\ ;
+恋物語 > koimonogatari\ ;
+一粒種 > hitotsubudane\ ;
+緑柱石 > ryokuchuuseki\ ;
+昔気質 > mukashikatagi\ ;
+俄勉強 > niwakabenkyou\ ;
+進学率 > shingakuritsu\ ;
+殿様蛙 > tonosamagaeru\ ;
+静脈血 > joumyakuketsu\ ;
+一筋道 > hitosujimichi\ ;
+就業率 > shuugyouritsu\ ;
+内緒話 > naishobanashi\ ;
+躁鬱質 > souutsushitsu\ ;
+熱効率 > netsukouritsu\ ;
+目的物 > mokutekibutsu\ ;
+反発力 > hanpatsuryoku\ ;
+植物誌 > shokubutsushi\ ;
+警察力 > keisatsuryoku\ ;
+貨物室 > kamotsushitsu\ ;
+懐中鏡 > kaichuukagami\ ;
+淡緑色 > tanryokushoku\ ;
+天竺鼠 > tenjikunezumi\ ;
+統率力 > touritsuryoku\ ;
+実録物 > jitsurokumono\ ;
+密入国 > mitsunyuugoku\ ;
+直輸出 > chokuyushutsu\ ;
+惚気話 > norokebanashi\ ;
+休養室 > kyuuyoushitsu\ ;
+陳列窓 > chinretsumado\ ;
+百分率 > hyakubunritsu\ ;
+出血症 > shukketsushou\ ;
+密輸出 > mitsuyushutsu\ ;
+判別式 > hanbetsushiki\ ;
+植物界 > shokubutsukai\ ;
+熱力学 > netsurikigaku\ ;
+新正月 > shinshougatsu\ ;
+主食物 > shushokubutsu\ ;
+陳列棚 > chinretsudana\ ;
+雑収入 > zatsushuunyuu\ ;
+翌翌日 > yokuyokujitsu\ ;
+話半分 > hanashihanbun\ ;
+力不足 > chikarabusoku\ ;
+就学率 > shuugakuritsu\ ;
+水上町 > minakamimachi\ ;
+親切心 > shinsetsushin\ ;
+制作室 > seisakushitsu\ ;
+即物的 > sokubutsuteki\ ;
+汲取口 > kumitoriguchi\ ;
+廿日鼠 > hatsukanezumi\ ;
+総領娘 > souryoumusume\ ;
+七福神 > shichifukujin\ ;
+特別席 > tokubetsuseki\ ;
+多血質 > taketsushitsu\ ;
+核爆発 > kakubakuhatsu\ ;
+得票率 > tokuhyouritsu\ ;
+表彰式 > hyoushoushiki\ ;
+入学式 > nyuugakushiki\ ;
+灰白質 > kaihakushitsu\ ;
+食用油 > shokuyouabura\ ;
+職業的 > shokugyouteki\ ;
+食生活 > shokuseikatsu\ ;
+丸一月 > maruhitotsuki\ ;
+職業病 > shokugyoubyou\ ;
+丸一日 > maruichinichi\ ;
+毒物学 > dokubutsugaku\ ;
+就職先 > shuushokusaki\ ;
+口約束 > kuchiyakusoku\ ;
+実力者 > jitsuryokusha\ ;
+湧出量 > yuushutsuryou\ ;
+筒井筒 > tsutsuidzutsu\ ;
+会堂司 > kaidoudzukasa\ ;
+間歇熱 > kanketsunetsu\ ;
+哲学的 > tetsugakuteki\ ;
+読唇術 > dokushinjutsu\ ;
+間欠熱 > kanketsunetsu\ ;
+裸電球 > hadakadenkyuu\ ;
+蛋白質 > tanpakushitsu\ ;
+排泄物 > haisetsubutsu\ ;
+食肉目 > shokunikumoku\ ;
+活動力 > katsudouryoku\ ;
+侵略的 > shinryakuteki\ ;
+凝集力 > gyoushuuryoku\ ;
+俄狂言 > niwakakyougen\ ;
+獅子頭 > shishigashira\ ;
+観察力 > kansatsuryoku\ ;
+脱力感 > datsuryokukan\ ;
+支出額 > shishutsugaku\ ;
+大虐殺 > daigyakusatsu\ ;
+前渡金 > maewatashikin\ ;
+乳白色 > nyuuhakushoku\ ;
+終業式 > shuugyoushiki\ ;
+爆発的 > bakuhatsuteki\ ;
+清元節 > kiyomotobushi\ ;
+雷親父 > kaminarioyaji\ ;
+神経質 > shinkeishitsu\ ;
+接着力 > setchakuryoku\ ;
+五月幟 > satsukinobori\ ;
+逆輸出 > gyakuyushutsu\ ;
+的中率 > tekichuuritsu\ ;
+建設費 > kensetsuhiyou\ ;
+屈折率 > kussetsuritsu\ ;
+船長室 > senchoushitsu\ ;
+主教室 > shukyoushitsu\ ;
+室内楽 > shitsunaigaku\ ;
+人情話 > ninjoubanashi\ ;
+濃緑色 > nouryokushoku\ ;
+応接室 > ousetsushitsu\ ;
+侵略国 > shinryakukoku\ ;
+侍気質 > samuraikatagi\ ;
+申込書 > moushikomisho\ ;
+直説法 > chokusetsuhou\ ;
+下町風 > shitamachifuu\ ;
+食中毒 > shokuchuudoku\ ;
+産出高 > sanshutsudaka\ ;
+供出米 > kyoushutsumai\ ;
+増設率 > zousetsuritsu\ ;
+圧力鍋 > atsuryokunabe\ ;
+団栗眼 > dongurimanako\ ;
+圧力釜 > atsuryokugama\ ;
+気密室 > kimitsushitsu\ ;
+応接係 > ousetsugakari\ ;
+女房詞 > nyouboukotoba\ ;
+分列式 > bunretsushiki\ ;
+親任式 > shin''ninshiki\ ;
+生活力 > seikatsuryoku\ ;
+読心術 > dokushinjutsu\ ;
+駅長室 > ekichoushitsu\ ;
+家付娘 > ietsukimusume\ ;
+百日草 > hyakunichisou\ ;
+両三日 > ryousan''nichi\ ;
+旗行列 > hatagyouretsu\ ;
+眉唾物 > mayutsubamono\ ;
+進行係 > shinkougakari\ ;
+動植物 > doushokubutsu\ ;
+必要物 > hitsuyoubutsu\ ;
+三軸室 > sanjikushitsu\ ;
+待合室 > machiaishitsu\ ;
+博物学 > hakubutsugaku\ ;
+結紮術 > kessatsujutsu\ ;
+混入物 > kon''nyuubutsu\ ;
+人情噺 > ninjoubanashi\ ;
+出席率 > shussekiritsu\ ;
+直接税 > chokusetsuzei\ ;
+失業者 > shitsugyousha\ ;
+牧畜業 > bokuchikugyou\ ;
+構築物 > kouchikubutsu\ ;
+設立者 > setsuritsusha\ ;
+足長蜂 > ashinagabachi\ ;
+粘液質 > nen''ekishitsu\ ;
+直接法 > chokusetsuhou\ ;
+幽霊話 > yuureibanashi\ ;
+同質的 > doushitsuteki\ ;
+執着心 > shuuchakushin\ ;
+力関係 > chikarakankei\ ;
+物質的 > busshitsuteki\ ;
+蒸発熱 > jouhatsunetsu\ ;
+薩摩閥 > satsumabatsu\ ;
+視聴率 > shichouritsu\ ;
+畳水練 > tatamisuiren\ ;
+幕僚長 > bakuryouchou\ ;
+現実的 > genjitsuteki\ ;
+画一的 > kakuitsuteki\ ;
+卸酒販 > oroshishuhan\ ;
+親日家 > shin''nichika\ ;
+内出血 > naishukketsu\ ;
+潤筆料 > junpitsuryou\ ;
+田舎侍 > inakazamurai\ ;
+金釘流 > kanakugiryuu\ ;
+創作力 > sousakuryoku\ ;
+即戦力 > sokusenryoku\ ;
+括約筋 > katsuyakukin\ ;
+説得力 > settokuryoku\ ;
+鐘撞堂 > kanetsukidou\ ;
+旧形式 > kyuukeishiki\ ;
+黄玉石 > kougyokuseki\ ;
+実験室 > jikkenshitsu\ ;
+密漁者 > mitsuryousha\ ;
+潮汐表 > chousekihyou\ ;
+白熱戦 > hakunetsusen\ ;
+従属節 > juuzokusetsu\ ;
+押切帳 > oshikirichou\ ;
+鉱物学 > koubutsugaku\ ;
+左心室 > sashinshitsu\ ;
+極彩色 > gokusaishiki\ ;
+肝心要 > kanjinkaname\ ;
+建築業 > kenchikugyou\ ;
+拒食症 > kyoshokushou\ ;
+熱電対 > netsudentsui\ ;
+鎖伝動 > kusaridendou\ ;
+拡大率 > kakudairitsu\ ;
+狂信的 > kyoushinteki\ ;
+表現力 > hyougenryoku\ ;
+中立面 > chuuritsumen\ ;
+貝殻虫 > kaigaramushi\ ;
+一番星 > ichibanboshi\ ;
+賃借人 > chinshakunin\ ;
+装飾的 > soushokuteki\ ;
+澱粉質 > denpunshitsu\ ;
+千日草 > sen''nichisou\ ;
+七五調 > shichigochou\ ;
+中国服 > chuugokufuku\ ;
+高天原 > takamagahara\ ;
+勘定係 > kanjougakari\ ;
+拘束力 > kousokuryoku\ ;
+沈澱物 > chindenbutsu\ ;
+器質的 > kishitsuteki\ ;
+千日紅 > sen''nichikou\ ;
+建築学 > kenchikugaku\ ;
+敗血症 > haiketsushou\ ;
+十一月 > juuichigatsu\ ;
+袋戸棚 > fukurotodana\ ;
+拝物教 > haibutsukyou\ ;
+復讐心 > fukushuushin\ ;
+旧年末 > kyuunenmatsu\ ;
+失職者 > shisshokusha\ ;
+内割引 > uchiwaribiki\ ;
+出産率 > shussanritsu\ ;
+写実的 > shajitsuteki\ ;
+接続駅 > setsuzokueki\ ;
+製鉄業 > seitetsugyou\ ;
+出生率 > shusseiritsu\ ;
+着物姿 > kimonosugata\ ;
+積極策 > sekkyokusaku\ ;
+小文節 > shoubunsetsu\ ;
+組織力 > soshikiryoku\ ;
+断熱材 > dan''netsuzai\ ;
+著作物 > chosakubutsu\ ;
+盲滅法 > mekurameppou\ ;
+附着力 > fuchakuryoku\ ;
+漂流木 > hyouryuuboku\ ;
+紳士靴 > shinshigutsu\ ;
+浚渫船 > shunsetsusen\ ;
+深山烏 > miyamagarasu\ ;
+生臭物 > namagusamono\ ;
+審判役 > shinpan''yaku\ ;
+積極的 > sekkyokuteki\ ;
+発売元 > hatsubaimoto\ ;
+仏頂面 > butchoudzura\ ;
+取引高 > torihikidaka\ ;
+闖入者 > chin''nyuusha\ ;
+毬栗頭 > igaguriatama\ ;
+建築中 > kenchikuchuu\ ;
+弱小国 > jakushoukoku\ ;
+発売中 > hatsubaichuu\ ;
+復讐劇 > fukushuugeki\ ;
+下仕事 > shitashigoto\ ;
+消極性 > shoukyokusei\ ;
+金欠病 > kinketsubyou\ ;
+聴視率 > choushiritsu\ ;
+深山桜 > miyamazakura\ ;
+質問者 > shitsumonsha\ ;
+空約束 > karayakusoku\ ;
+接続詞 > setsuzokushi\ ;
+抹香鯨 > makkoukujira\ ;
+花盗人 > hananusubito\ ;
+乾燥室 > kansoushitsu\ ;
+尿毒症 > nyoudokushou\ ;
+癇癪玉 > kanshakudama\ ;
+一人物 > ichijinbutsu\ ;
+協約国 > kyouyakukoku\ ;
+末代物 > matsudaimono\ ;
+剃刀負 > kamisorimake\ ;
+一足先 > hitoashisaki\ ;
+果物籠 > kudamonokago\ ;
+世間話 > sekenbanashi\ ;
+行楽客 > kourakukyaku\ ;
+紋白蝶 > monshirochou\ ;
+入湯客 > nyuutoukyaku\ ;
+闇取引 > yamitorihiki\ ;
+進水式 > shinsuishiki\ ;
+仮払金 > karibaraikin\ ;
+紙屑籠 > kamikuzukago\ ;
+乾燥卵 > kansoutamago\ ;
+緑内障 > ryokunaishou\ ;
+極楽鳥 > gokurakuchou\ ;
+賃貸借 > chintaishaku\ ;
+告発者 > kokuhatsusha\ ;
+白血病 > hakketsubyou\ ;
+真珠質 > shinjushitsu\ ;
+片山里 > katayamazato\ ;
+独立祭 > dokuritsusai\ ;
+予約係 > yoyakugakari\ ;
+黄緑色 > ouryokushoku\ ;
+前進力 > zenshinryoku\ ;
+確率論 > kakuritsuron\ ;
+独立班 > dokuritsuhan\ ;
+等圧式 > touatsushiki\ ;
+素人筋 > shiroutosuji\ ;
+美人局 > tsutsumotase\ ;
+借地料 > shakuchiryou\ ;
+黄熱病 > kounetsubyou\ ;
+投票率 > touhyouritsu\ ;
+脅迫的 > kyouhakuteki\ ;
+団結心 > danketsushin\ ;
+質問書 > shitsumonsho\ ;
+中立性 > chuuritsusei\ ;
+告発状 > kokuhatsujou\ ;
+反復説 > hanpukusetsu\ ;
+印刷術 > insatsujutsu\ ;
+能力給 > nouryokukyuu\ ;
+練習曲 > renshuukyoku\ ;
+超能力 > chounouryoku\ ;
+核分裂 > kakubunretsu\ ;
+独立権 > dokuritsuken\ ;
+待宵草 > matsuyoigusa\ ;
+一人娘 > hitorimusume\ ;
+国税局 > kokuzeikyoku\ ;
+一面識 > ichimenshiki\ ;
+出願者 > shutsugansha\ ;
+勿忘草 > wasurenagusa\ ;
+強綿薬 > kyoumen''yaku\ ;
+梶木鮪 > kajikimaguro\ ;
+失明者 > shitsumeisha\ ;
+女道楽 > on''nadouraku\ ;
+成長率 > seichouritsu\ ;
+確実性 > kakujitsusei\ ;
+黒装束 > kuroshouzoku\ ;
+熱拡散 > netsukakusan\ ;
+忠臣蔵 > chuushingura\ ;
+動物学 > doubutsugaku\ ;
+一枚下 > ichimaishita\ ;
+至東京 > itarutoukyou\ ;
+独立性 > dokuritsusei\ ;
+雨後雪 > amenochiyuki\ ;
+八目鰻 > yatsumeunagi\ ;
+天狗話 > tengubanashi\ ;
+案内係 > an''naigakari\ ;
+流行色 > ryuukoushoku\ ;
+鍾乳石 > shounyuuseki\ ;
+接続性 > setsuzokusei\ ;
+真実性 > shinjitsusei\ ;
+骨肉腫 > kotsunikushu\ ;
+犬畜生 > inuchikushou\ ;
+領収証 > ryoushuushou\ ;
+昼光色 > chuukoushoku\ ;
+北極熊 > hokkyokuguma\ ;
+司令室 > shireishitsu\ ;
+印刷物 > insatsubutsu\ ;
+抽象的 > chuushouteki\ ;
+白拍子 > shirabyoushi\ ;
+提出者 > teishutsusha\ ;
+耐圧力 > taiatsuryoku\ ;
+凸面鏡 > totsumenkyou\ ;
+高血圧 > kouketsuatsu\ ;
+柱時計 > hashiradokei\ ;
+傘歯車 > kasahaguruma\ ;
+軍国色 > gunkokushoku\ ;
+八郎潟 > hachirougata\ ;
+宿命的 > shukumeiteki\ ;
+中心角 > chuushinkaku\ ;
+長須鯨 > nagasukujira\ ;
+修了証 > shuuryoushou\ ;
+段々畠 > dandanbatake\ ;
+段々畑 > dandanbatake\ ;
+多肉質 > tanikushitsu\ ;
+進入灯 > shin''nyuutou\ ;
+集約的 > shuuyakuteki\ ;
+兵六玉 > hyourokudama\ ;
+摩擦熱 > masatsunetsu\ ;
+技術力 > gijutsuryoku\ ;
+仮溶接 > kariyousetsu\ ;
+高品質 > kouhinshitsu\ ;
+晒木綿 > sarashimomen\ ;
+伸縮法 > shinshukuhou\ ;
+六連発 > rokurenpatsu\ ;
+併発症 > heihatsushou\ ;
+欠乏症 > ketsuboushou\ ;
+関節技 > kansetsuwaza\ ;
+沈没船 > chinbotsusen\ ;
+容積率 > yousekiritsu\ ;
+主力株 > shuryokukabu\ ;
+乾湿計 > kanshitsukei\ ;
+九星術 > kyuuseijutsu\ ;
+口八丁 > kuchihatchou\ ;
+検察庁 > kensatsuchou\ ;
+表表紙 > omotebyoushi\ ;
+直取引 > jikitorihiki\ ;
+大学卒 > daigakusotsu\ ;
+失語症 > shitsugoshou\ ;
+降雪量 > kousetsuryou\ ;
+漁師町 > ryoushimachi\ ;
+物見櫓 > monomiyagura\ ;
+取次店 > toritsugiten\ ;
+朧月夜 > oborodzukiyo\ ;
+享楽的 > kyourakuteki\ ;
+水力学 > suiryokugaku\ ;
+取引先 > torihikisaki\ ;
+入力線 > nyuuryokusen\ ;
+低血圧 > teiketsuatsu\ ;
+伸縮性 > shinshukusei\ ;
+律令制 > ritsuryousei\ ;
+形式的 > keishikiteki\ ;
+仲立人 > nakadachinin\ ;
+昇降口 > shoukouguchi\ ;
+記録係 > kirokugakari\ ;
+工作物 > kousakubutsu\ ;
+正直者 > shoujikimono\ ;
+中心的 > chuushinteki\ ;
+自習室 > jishuushitsu\ ;
+今明日 > konmyounichi\ ;
+間接的 > kansetsuteki\ ;
+出版物 > shuppanbutsu\ ;
+核軍縮 > kakugunshuku\ ;
+一見識 > ichikenshiki\ ;
+攻撃力 > kougekiryoku\ ;
+整髪料 > seihatsuryou\ ;
+七面倒 > shichimendou\ ;
+耐湿性 > taishitsusei\ ;
+仏文学 > futsubungaku\ ;
+畑水練 > hatakesuiren\ ;
+勅撰集 > chokusenshuu\ ;
+七面体 > shichimentai\ ;
+効率的 > kouritsuteki\ ;
+熱量計 > netsuryoukei\ ;
+注釈者 > chuushakusha\ ;
+狭心症 > kyoushinshou\ ;
+弥猛心 > yatakegokoro\ ;
+総花式 > soubanashiki\ ;
+協商国 > kyoushoukoku\ ;
+七絃琴 > shichigenkin\ ;
+爆裂弾 > bakuretsudan\ ;
+宗教心 > shuukyoushin\ ;
+公共物 > koukyoubutsu\ ;
+救急箱 > kyuukyuubako\ ;
+狂詩曲 > kyoushikyoku\ ;
+俄分限 > niwakabungen\ ;
+宗教学 > shuukyougaku\ ;
+一日中 > ichinichijuu\ ;
+求職者 > kyuushokusha\ ;
+畜殺場 > chikusatsuba\ ;
+学年末 > gakunenmatsu\ ;
+穀象虫 > kokuzoumushi\ ;
+無響室 > mukyoushitsu\ ;
+筍医者 > takenokoisha\ ;
+潛心力 > senshinryoku\ ;
+興行主 > kougyounushi\ ;
+修飾子 > shuushokushi\ ;
+収益率 > shuuekiritsu\ ;
+祝儀袋 > shuugibukuro\ ;
+婚姻届 > kon''intodoke\ ;
+障害物 > shougaibutsu\ ;
+黒銹病 > kurosabibyou\ ;
+人物評 > jinbutsuhyou\ ;
+雑所得 > zatsushotoku\ ;
+剥製術 > hakuseijutsu\ ;
+独占欲 > dokusen''yoku\ ;
+絶望的 > zetsubouteki\ ;
+天然色 > ten''nenshoku\ ;
+脂肪質 > shiboushitsu\ ;
+宗教劇 > shuukyougeki\ ;
+出場者 > shutsujousha\ ;
+乾漆像 > kanshitsuzou\ ;
+内罰的 > naibatsuteki\ ;
+七角形 > shichikakkei\ ;
+即興曲 > sokkyoukyoku\ ;
+散発的 > sanpatsuteki\ ;
+広口瓶 > hirokuchibin\ ;
+圧縮率 > asshukuritsu\ ;
+宿泊人 > shukuhakunin\ ;
+猩紅熱 > shoukounetsu\ ;
+協力鋼 > kyouryokukou\ ;
+所番地 > tokorobanchi\ ;
+注釈書 > chuushakusho\ ;
+特徴量 > tokuchouryou\ ;
+懐工合 > futokoroguai\ ;
+描写力 > byousharyoku\ ;
+生物学 > seibutsugaku\ ;
+懐具合 > futokoroguai\ ;
+読書力 > dokushoryoku\ ;
+知識欲 > chishikiyoku\ ;
+全速力 > zensokuryoku\ ;
+表々紙 > omotebyoushi\ ;
+深紅色 > shinkoushoku\ ;
+軟着陸 > nanchakuriku\ ;
+色情狂 > shikijoukyou\ ;
+郵便袋 > yuubinbukuro\ ;
+診察台 > shinsatsudai\ ;
+泡沫的 > houmatsuteki\ ;
+仮釈放 > karishakuhou\ ;
+急進的 > kyuushinteki\ ;
+診察券 > shinsatsuken\ ;
+極小値 > kyokushouchi\ ;
+供血者 > kyouketsusha\ ;
+収入役 > shuunyuuyaku\ ;
+段段畠 > dandanbatake\ ;
+段段畑 > dandanbatake\ ;
+節用集 > setsuyoushuu\ ;
+配達料 > haitatsuryou\ ;
+新卒者 > shinsotsusha\ ;
+収監力 > shuukanryoku\ ;
+百葉箱 > hyakuyoubako\ ;
+協力者 > kyouryokusha\ ;
+速達便 > sokutatsubin\ ;
+銀白色 > ginhakushoku\ ;
+夾竹桃 > kyouchikutou\ ;
+畜生道 > chikushoudou\ ;
+雪辱戦 > setsujokusen\ ;
+東京着 > toukyouchaku\ ;
+電信局 > denshinkyoku\ ;
+青色症 > seishokushou\ ;
+広告主 > koukokunushi\ ;
+東京発 > toukyouhatsu\ ;
+全身浴 > zenshin''yoku\ ;
+変質者 > henshitsusha\ ;
+夏木立 > natsukodachi\ ;
+警察庁 > keisatsuchou\ ;
+業界初 > gyoukaihatsu\ ;
+天長節 > tenchousetsu\ ;
+産褥熱 > sanjokunetsu\ ;
+単勝式 > tanshoushiki\ ;
+頭頂骨 > touchoukotsu\ ;
+壊血病 > kaiketsubyou\ ;
+看板娘 > kanbanmusume\ ;
+編集局 > henshuukyoku\ ;
+晴後雨 > harenochiame\ ;
+流動食 > ryuudoushoku\ ;
+食道楽 > shokudouraku\ ;
+毛織錦 > keorinishiki\ ;
+求人口 > kyuujinguchi\ ;
+終着駅 > shuuchakueki\ ;
+黒水熱 > kokusuinetsu\ ;
+仮進級 > karishinkyuu\ ;
+配達先 > haitatsusaki\ ;
+寝物語 > nemonogatari\ ;
+若殿原 > wakatonobara\ ;
+冷蔵室 > reizoushitsu\ ;
+没交渉 > botsukoushou\ ;
+静脈瘤 > joumyakuryuu\ ;
+骨組織 > kotsusoshiki\ ;
+千卒長 > sensotsuchou\ ;
+直轄地 > chokkatsuchi\ ;
+一筋繩 > hitosujinawa\ ;
+一筋縄 > hitosujinawa\ ;
+就職難 > shuushokunan\ ;
+説経節 > sekkyoubushi\ ;
+心身症 > shinshinshou\ ;
+面会室 > menkaishitsu\ ;
+独創力 > dokusouryoku\ ;
+始業式 > shigyoushiki\ ;
+来客筋 > raikyakusuji\ ;
+進学塾 > shingakujuku\ ;
+目的格 > mokutekikaku\ ;
+校正係 > kouseigakari\ ;
+力自慢 > chikarajiman\ ;
+屋敷町 > yashikimachi\ ;
+服飾品 > fukushokuhin\ ;
+膨張率 > bouchouritsu\ ;
+良心的 > ryoushinteki\ ;
+空念仏 > soranenbutsu\ ;
+皆皆様 > minaminasama\ ;
+能率給 > nouritsukyuu\ ;
+堆積物 > taisekibutsu\ ;
+出納係 > suitougakari\ ;
+蓄積管 > chikusekikan\ ;
+独身者 > dokushinmono\ ;
+石竹色 > sekichikuiro\ ;
+直腸癌 > chokuchougan\ ;
+突発的 > toppatsuteki\ ;
+芸術的 > geijutsuteki\ ;
+非晶質 > hishoushitsu\ ;
+玉蜀黍 > toumorokoshi\ ;
+小心者 > shoushinmono\ ;
+黒水引 > kuromizuhiki\ ;
+感熱剤 > kan''netsuzai\ ;
+娯楽室 > gorakushitsu\ ;
+鎮痛薬 > chintsuuyaku\ ;
+能率的 > nouritsuteki\ ;
+合唱曲 > gasshoukyoku\ ;
+丹頂鶴 > tanchoudzuru\ ;
+革新的 > kakushinteki\ ;
+客商売 > kyakushoubai\ ;
+一括式 > ikkatsushiki\ ;
+畜産業 > chikusangyou\ ;
+出血死 > shukketsushi\ ;
+白髪頭 > shiragaatama\ ;
+新形式 > shinkeishiki\ ;
+共有物 > kyouyuubutsu\ ;
+申告箱 > shinkokubako\ ;
+書留料 > kakitomeryou\ ;
+希釈熱 > kishakunetsu\ ;
+山口県 > yamaguchiken\ ;
+執筆者 > shippitsusha\ ;
+商取引 > shoutorihiki\ ;
+植物油 > shokubutsuyu\ ;
+出血斑 > shukketsuhan\ ;
+企画室 > kikakushitsu\ ;
+侵入軍 > shin''nyuugun\ ;
+漁獲物 > gyokakubutsu\ ;
+力学的 > rikigakuteki\ ;
+疳癪玉 > kanshakudama\ ;
+約束事 > yakusokugoto\ ;
+経帷子 > kyoukatabira\ ;
+火消壷 > hikeshitsubo\ ;
+利休鼠 > rikyuunezumi\ ;
+順応力 > jun''nouryoku\ ;
+下半身 > shimohanshin\ ;
+表決権 > hyouketsuken\ ;
+択一的 > takuitsuteki\ ;
+流動物 > ryuudoubutsu\ ;
+陳述書 > chinjutsusho\ ;
+追悼式 > tsuitoushiki\ ;
+飲食物 > inshokubutsu\ ;
+昼食会 > chuushokukai\ ;
+畜産学 > chikusangaku\ ;
+識字率 > shikijiritsu\ ;
+鼻高高 > hanatakadaka\ ;
+特別法 > tokubetsuhou\ ;
+出漁権 > shutsugyoken\ ;
+鳶職人 > tobishokunin\ ;
+鎮魂曲 > chinkonkyoku\ ;
+出演料 > shutsuenryou\ ;
+通俗的 > tsuuzokuteki\ ;
+侵入者 > shin''nyuusha\ ;
+空出張 > karashutchou\ ;
+血圧計 > ketsuatsukei\ ;
+胆汁質 > tanjuushitsu\ ;
+黄碧玉 > kouhekigyoku\ ;
+隔月刊 > kakugetsukan\ ;
+復原力 > fukugenryoku\ ;
+竣工式 > shunkoushiki\ ;
+競争率 > kyousouritsu\ ;
+積立金 > tsumitatekin\ ;
+植物園 > shokubutsuen\ ;
+独身寮 > dokushinryou\ ;
+入札者 > nyuusatsusha\ ;
+新入生 > shin''nyuusei\ ;
+神謡集 > shin''youshuu\ ;
+両極端 > ryoukyokutan\ ;
+帳面面 > choumendzura\ ;
+見積書 > mitsumorisho\ ;
+研削代 > kensakushiro\ ;
+活動的 > katsudouteki\ ;
+全能力 > zen''nouryoku\ ;
+食肉類 > shokunikurui\ ;
+肺活量 > haikatsuryou\ ;
+開票率 > kaihyouritsu\ ;
+常識的 > joushikiteki\ ;
+収容力 > shuuyouryoku\ ;
+象徴的 > shouchouteki\ ;
+自慢話 > jimanbanashi\ ;
+招待客 > shoutaikyaku\ ;
+交響曲 > koukyoukyoku\ ;
+電解質 > denkaishitsu\ ;
+平底船 > hirasokobune\ ;
+就任式 > shuuninshiki\ ;
+冷凍室 > reitoushitsu\ ;
+配膳室 > haizenshitsu\ ;
+広島県 > hiroshimaken\ ;
+暦改正 > koyomikaisei\ ;
+徳川方 > tokugawagata\ ;
+仮入学 > karinyuugaku\ ;
+原形質 > genkeishitsu\ ;
+黒色腫 > kokushokushu\ ;
+卒業生 > sotsugyousei\ ;
+回復力 > kaifukuryoku\ ;
+入会式 > nyuukaishiki\ ;
+向心力 > koushinryoku\ ;
+玉虫色 > tamamushiiro\ ;
+特別号 > tokubetsugou\ ;
+脱毛症 > datsumoushou\ ;
+始球式 > shikyuushiki\ ;
+何色搨 > nanshokuzuri\ ;
+信託業 > shintakugyou\ ;
+僻根性 > higamikonjou\ ;
+奪三振 > datsusanshin\ ;
+鉄火丼 > tekkadonburi\ ;
+大福餅 > daifukumochi\ ;
+侵略軍 > shinryakugun\ ;
+反物質 > hanbusshitsu\ ;
+制球力 > seikyuuryoku\ ;
+陸産物 > rikusanbutsu\ ;
+農作物 > nousakubutsu\ ;
+竜舌蘭 > ryuuzetsuran\ ;
+営業畑 > eigyoubatake\ ;
+肉食獣 > nikushokujuu\ ;
+法律学 > houritsugaku\ ;
+新発明 > shinhatsumei\ ;
+逗留客 > touryuukyaku\ ;
+徳島県 > tokushimaken\ ;
+清水寺 > kiyomizudera\ ;
+熱容量 > netsuyouryou\ ;
+文筆業 > bunpitsugyou\ ;
+脳出血 > noushukketsu\ ;
+露出症 > roshutsushou\ ;
+高足蟹 > takaashigani\ ;
+私娼窟 > shishoukutsu\ ;
+黒色癌 > kokushokugan\ ;
+貧血症 > hinketsushou\ ;
+認識票 > ninshikihyou\ ;
+疫病神 > yakubyougami\ ;
+露出狂 > roshutsukyou\ ;
+密猟者 > mitsuryousha\ ;
+八丈島 > hachijoujima\ ;
+降神術 > koushinjutsu\ ;
+哲学者 > tetsugakusha\ ;
+力一杯 > chikaraippai\ ;
+出品物 > shuppinbutsu\ ;
+灰白色 > kaihakushoku\ ;
+独居室 > dokkyoshitsu\ ;
+接待係 > settaigakari\ ;
+万年雪 > man''nen''yuki\ ;
+狂想曲 > kyousoukyoku\ ;
+侵略者 > shinryakusha\ ;
+町役人 > machiyakunin\ ;
+蚰蜒眉 > gejigejimayu\ ;
+学習塾 > gakushuujuku\ ;
+新発売 > shinhatsubai\ ;
+競争力 > kyousouryoku\ ;
+失名氏 > shitsumeishi\ ;
+表座敷 > omotezashiki\ ;
+徴発令 > chouhatsurei\ ;
+副収入 > fukushuunyuu\ ;
+恐喝罪 > kyoukatsuzai\ ;
+屈折軸 > kussetsujiku\ ;
+合切袋 > gassaibukuro\ ;
+消息通 > shousokutsuu\ ;
+株主権 > kabunushiken\ ;
+占有率 > sen''yuuritsu\ ;
+南京袋 > nankinbukuro\ ;
+高高指 > takatakayubi\ ;
+白色光 > hakushokukou\ ;
+鐘乳石 > shounyuuseki\ ;
+日米協 > nichibeikyou\ ;
+屈折角 > kussetsukaku\ ;
+殺人的 > satsujinteki\ ;
+左団扇 > hidariuchiwa\ ;
+防塵室 > boujinshitsu\ ;
+含有率 > gan''yuuritsu\ ;
+脈搏数 > myakuhakusuu\ ;
+推進力 > suishinryoku\ ;
+聾桟敷 > tsunbosajiki\ ;
+縮緬皺 > chirimenjiwa\ ;
+殺人狂 > satsujinkyou\ ;
+輸出入 > yushutsunyuu\ ;
+観客席 > kankyakuseki\ ;
+命冥加 > inochimyouga\ ;
+表六玉 > hyourokudama\ ;
+森林浴 > shinrin''yoku\ ;
+耕作物 > kousakubutsu\ ;
+爆発管 > bakuhatsukan\ ;
+黒八丈 > kurohachijou\ ;
+半身浴 > hanshin''yoku\ ;
+暗緑色 > anryokushoku\ ;
+筋肉痛 > kin''nikutsuu\ ;
+職能給 > shokunoukyuu\ ;
+新生物 > shinseibutsu\ ;
+凌霄花 > nouzenkazura\ ;
+黒色尉 > kokushikijou\ ;
+偶発的 > guuhatsuteki\ ;
+特産物 > tokusanbutsu\ ;
+化粧室 > keshoushitsu\ ;
+総支出 > soushishutsu\ ;
+哲学書 > tetsugakusho\ ;
+博物館 > hakubutsukan\ ;
+仲介物 > chuukaibutsu\ ;
+白頭鷲 > hakutouwashi\ ;
+最新式 > saishinshiki\ ;
+山躑躅 > yamatsutsuji\ ;
+省電力 > shoudenryoku\ ;
+一匹狼 > ippikiookami\ ;
+消息筋 > shousokusuji\ ;
+万年筆 > man''nenhitsu\ ;
+仇同氏 > katakidoushi\ ;
+局地的 > kyokuchiteki\ ;
+革手袋 > kawatebukuro\ ;
+七分袖 > shichibusode\ ;
+心霊術 > shinreijutsu\ ;
+松竹梅 > shouchikubai\ ;
+核開発 > kakukaihatsu\ ;
+国際色 > kokusaishoku\ ;
+子供心 > kodomogokoro\ ;
+勅選集 > chokusenshuu\ ;
+精神力 > seishinryoku\ ;
+再突入 > saitotsunyuu\ ;
+発信局 > hasshinkyoku\ ;
+大和心 > yamatogokoro\ ;
+調律師 > chouritsushi\ ;
+辞職願 > jishokunegai\ ;
+親密感 > shinmitsukan\ ;
+窓際族 > madogiwazoku\ ;
+写真術 > shashinjutsu\ ;
+復元力 > fukugenryoku\ ;
+輻射熱 > fukushanetsu\ ;
+供述者 > kyoujutsusha\ ;
+神経節 > shinkeisetsu\ ;
+爆発性 > bakuhatsusei\ ;
+全日制 > zen''nichisei\ ;
+消毒薬 > shoudokuyaku\ ;
+道徳律 > doutokuritsu\ ;
+国防色 > kokuboushoku\ ;
+終末論 > shuumatsuron\ ;
+将軍職 > shougunshoku\ ;
+草月流 > sougetsuryuu\ ;
+明赤色 > meisekishoku\ ;
+付着力 > fuchakuryoku\ ;
+解決策 > kaiketsusaku\ ;
+口唇裂 > koushinretsu\ ;
+七草粥 > nanakusagayu\ ;
+商業学 > shougyougaku\ ;
+建設省 > kensetsushou\ ;
+分別心 > funbetsushin\ ;
+建設的 > kensetsuteki\ ;
+二翻役 > ryanfan''yaku\ ;
+口拍子 > kuchibyoushi\ ;
+認証式 > ninshoushiki\ ;
+総括的 > soukatsuteki\ ;
+托鉢僧 > takuhatsuzou\ ;
+商業国 > shougyoukoku\ ;
+仲人口 > nakoudoguchi\ ;
+桜前線 > sakurazensen\ ;
+龍舌蘭 > ryuuzetsuran\ ;
+強制力 > kyouseiryoku\ ;
+必読書 > hitsudokusho\ ;
+圧力計 > atsuryokukei\ ;
+随筆集 > zuihitsushuu\ ;
+猫目石 > nekomokuseki\ ;
+勉強机 > benkyouzukue\ ;
+白玉楼 > hakugyokurou\ ;
+開通式 > kaitsuushiki\ ;
+西半球 > nishihankyuu\ ;
+啄木鳥 > takubokuchou\ ;
+単一形 > tan''ichigata\ ;
+必然的 > hitsuzenteki\ ;
+水蟷螂 > mizukamakiri\ ;
+星月夜 > hoshidzukuyo\ ;
+縞織物 > shimaorimono\ ;
+建設業 > kensetsugyou\ ;
+鼻高々 > hanatakadaka\ ;
+商人街 > shouninmachi\ ;
+一幕物 > hitomakumono\ ;
+百人力 > hyakuninriki\ ;
+供述書 > kyoujutsusho\ ;
+実業界 > jitsugyoukai\ ;
+行平鍋 > yukihiranabe\ ;
+落成式 > rakuseishiki\ ;
+柳川鍋 > yanagawanabe\ ;
+航続力 > kouzokuryoku\ ;
+直接費 > chokusetsuhi\ ;
+山梨県 > yamanashiken\ ;
+棗椰子 > natsumeyashi\ ;
+刺激物 > shigekibutsu\ ;
+漫遊客 > man''yuukyaku\ ;
+食物油 > shokubutsuyu\ ;
+瓦煎餅 > kawarasenbei\ ;
+親子丼 > oyakodonburi\ ;
+著述業 > chojutsugyou\ ;
+蒼白色 > souhakushoku\ ;
+七辺形 > shichihenkei\ ;
+年末迄 > nenmatsumade\ ;
+売春宿 > baishun''yado\ ;
+質点系 > shitsutenkei\ ;
+御伽話 > otogibanashi\ ;
+操業率 > sougyouritsu\ ;
+枕屏風 > makurabyoubu\ ;
+血液学 > ketsuekigaku\ ;
+基督教 > kirisutokyou\ ;
+鼠花火 > nezumihanabi\ ;
+捕物帳 > torimonochou\ ;
+捕物帖 > torimonochou\ ;
+貯蔵室 > chozoushitsu\ ;
+弔問客 > choumonkyaku\ ;
+遺失物 > ishitsubutsu\ ;
+動脈血 > doumyakketsu\ ;
+入場式 > nyuujoushiki\ ;
+細胞質 > saiboushitsu\ ;
+血液型 > ketsuekigata\ ;
+標識灯 > hyoushikitou\ ;
+包括的 > houkatsuteki\ ;
+劇中劇 > gekichuugeki\ ;
+実用的 > jitsuyouteki\ ;
+侍八騎 > samuraihakki\ ;
+中間色 > chuukanshoku\ ;
+開腹術 > kaifukujutsu\ ;
+直撃弾 > chokugekidan\ ;
+副産物 > fukusanbutsu\ ;
+命中率 > meichuuritsu\ ;
+血友病 > ketsuyuubyou\ ;
+精白率 > seihakuritsu\ ;
+均質性 > kinshitsusei\ ;
+戸籍係 > kosekigakari\ ;
+接客業 > sekkyakugyou\ ;
+蓄膿症 > chikunoushou\ ;
+花形株 > hanagatakabu\ ;
+振出人 > furidashinin\ ;
+註釈者 > chuushakusha\ ;
+禁欲的 > kin''yokuteki\ ;
+一分別 > hitofunbetsu\ ;
+半独立 > handokuritsu\ ;
+執務中 > shitsumuchuu\ ;
+親日派 > shin''nichiha\ ;
+福島県 > fukushimaken\ ;
+調色板 > choushokuban\ ;
+剪定鋏 > senteibasami\ ;
+緑黄色 > ryokuoushoku\ ;
+下屋敷 > shimoyashiki\ ;
+車用品 > kurumayouhin\ ;
+耐久力 > taikyuuryoku\ ;
+寝台虫 > shindaimushi\ ;
+嗜虐的 > shigyakuteki\ ;
+中継局 > chuukeikyoku\ ;
+長広舌 > choukouzetsu\ ;
+日没後 > nichibotsugo\ ;
+動脈瘤 > doumyakuryuu\ ;
+一輪挿 > ichirinzashi\ ;
+蒸発皿 > jouhatsuzara\ ;
+賃借権 > chinshakuken\ ;
+卸問屋 > oroshidon''ya\ ;
+防湿剤 > boushitsuzai\ ;
+収穫高 > shuukakudaka\ ;
+再出発 > saishuppatsu\ ;
+協奏曲 > kyousoukyoku\ ;
+周極星 > shuukyokusei\ ;
+零行列 > reigyouretsu\ ;
+出発点 > shuppatsuten\ ;
+合格率 > goukakuritsu\ ;
+行進曲 > koushinkyoku\ ;
+白熱灯 > hakunetsutou\ ;
+食料品 > shokuryouhin\ ;
+操車係 > soushagakari\ ;
+刺戟物 > shigekibutsu\ ;
+湿電池 > shitsudenchi\ ;
+観掌術 > kanshoujutsu\ ;
+真骨頂 > shinkotchou\ ;
+必要品 > hitsuyouhin\ ;
+画世的 > kakuseiteki\ ;
+熨斗袋 > noshibukuro\ ;
+測地学 > sokuchigaku\ ;
+雁木鑢 > gangiyasuri\ ;
+再割引 > saiwaribiki\ ;
+奉献式 > houkenshiki\ ;
+初誕生 > hatsutanjou\ ;
+三本足 > sanbon''ashi\ ;
+判断力 > handanryoku\ ;
+協調性 > kyouchousei\ ;
+天道乾 > tentouboshi\ ;
+白日夢 > hakujitsumu\ ;
+分析表 > bunsekihyou\ ;
+承諾書 > shoudakusho\ ;
+少食家 > shoushokuka\ ;
+仮執行 > karishikkou\ ;
+握力計 > akuryokukei\ ;
+不足勝 > fusokugachi\ ;
+後進国 > koushinkoku\ ;
+洗眼薬 > sengan''yaku\ ;
+復習文 > fukushuubun\ ;
+止血帯 > shiketsutai\ ;
+下宿料 > geshukuryou\ ;
+重量級 > juuryoukyuu\ ;
+前進軸 > zenshinjiku\ ;
+鉄石心 > tessekishin\ ;
+甘茶蔓 > amachadzuru\ ;
+署名式 > shomeishiki\ ;
+人心地 > hitogokochi\ ;
+囚人服 > shuujinfuku\ ;
+律儀者 > richigimono\ ;
+雁木車 > gangiguruma\ ;
+憂欝症 > yuuutsushou\ ;
+実験式 > jikkenshiki\ ;
+狂信者 > kyoushinsha\ ;
+民族的 > minzokuteki\ ;
+発言者 > hatsugensha\ ;
+単縦列 > tanjuuretsu\ ;
+三人組 > san''ningumi\ ;
+黒斑病 > kokuhanbyou\ ;
+悪悪戯 > waruitazura\ ;
+実用品 > jitsuyouhin\ ;
+大腿骨 > daitaikotsu\ ;
+水蜜桃 > suimitsutou\ ;
+漂流船 > hyouryuusen\ ;
+頸動脈 > keidoumyaku\ ;
+生兵法 > namabyouhou\ ;
+烏羽色 > karasubairo\ ;
+弟弟子 > otoutodeshi\ ;
+劇文学 > gekibungaku\ ;
+加薬飯 > kayakumeshi\ ;
+北半球 > kitahankyuu\ ;
+集中線 > shuuchuusen\ ;
+得業士 > tokugyoushi\ ;
+前進角 > zenshinkaku\ ;
+養殖池 > youshokuchi\ ;
+嗜虐性 > shigyakusei\ ;
+三人称 > san''ninshou\ ;
+中級品 > chuukyuuhin\ ;
+漂流者 > hyouryuusha\ ;
+誘惑物 > yuuwakumono\ ;
+頭蓋骨 > tougaikotsu\ ;
+発明品 > hatsumeihin\ ;
+失格者 > shikkakusha\ ;
+成績表 > seisekihyou\ ;
+注文先 > chuumonsaki\ ;
+既決囚 > kiketsushuu\ ;
+摂動論 > setsudouron\ ;
+伏流水 > fukuryuusui\ ;
+独裁的 > dokusaiteki\ ;
+高調子 > takachoushi\ ;
+立脚地 > rikkyakuchi\ ;
+再構築 > saikouchiku\ ;
+櫓太鼓 > yaguradaiko\ ;
+止血剤 > shiketsuzai\ ;
+両方共 > ryouhoutomo\ ;
+松葉杖 > matsubadzue\ ;
+沖積統 > chuusekitou\ ;
+仕事箱 > shigotobako\ ;
+氷醋酸 > hyousakusan\ ;
+書籍商 > shosekishou\ ;
+仮綴本 > karitojihon\ ;
+発電所 > hatsudensho\ ;
+官能的 > kan''nouteki\ ;
+末梢的 > masshouteki\ ;
+中間国 > chuukankoku\ ;
+思索的 > shisakuteki\ ;
+出身校 > shusshinkou\ ;
+灰青色 > haiseishoku\ ;
+航海術 > koukaijutsu\ ;
+小東京 > shoutoukyou\ ;
+千人力 > sen''ninriki\ ;
+人工芝 > jinkoushiba\ ;
+軽量級 > keiryoukyuu\ ;
+拘束圧 > kousokuatsu\ ;
+戦闘力 > sentouryoku\ ;
+球面鏡 > kyuumenkyou\ ;
+人形劇 > ningyougeki\ ;
+無骨者 > bukotsumono\ ;
+町奉行 > machibugyou\ ;
+空証文 > karashoumon\ ;
+氷酢酸 > hyousakusan\ ;
+放物線 > houbutsusen\ ;
+調子者 > choushimono\ ;
+現実感 > genjitsukan\ ;
+積分学 > sekibungaku\ ;
+現実性 > genjitsusei\ ;
+高電圧 > kouden''atsu\ ;
+学問的 > gakumonteki\ ;
+学究的 > gakkyuuteki\ ;
+収穫祭 > shuukakusai\ ;
+物理学 > butsurigaku\ ;
+垂直線 > suichokusen\ ;
+歴史学 > rekishigaku\ ;
+潤滑剤 > junkatsuzai\ ;
+組織学 > soshikigaku\ ;
+発電子 > hatsudenshi\ ;
+三尊仏 > sanzonbutsu\ ;
+引取人 > hikitorinin\ ;
+漂泊者 > hyouhakusha\ ;
+真田虫 > sanadamushi\ ;
+闇商人 > yamishounin\ ;
+入漁料 > nyuugyoryou\ ;
+七宝焼 > shippouyaki\ ;
+鋼鉄板 > koutetsuban\ ;
+優良株 > yuuryoukabu\ ;
+本格的 > honkakuteki\ ;
+復讐戦 > fukushuusen\ ;
+暴力団 > bouryokudan\ ;
+初診料 > shoshinryou\ ;
+口達者 > kuchidassha\ ;
+耐熱性 > tainetsusei\ ;
+増血剤 > zouketsuzai\ ;
+北北東 > hokuhokutou\ ;
+発言権 > hatsugenken\ ;
+急成長 > kyuuseichou\ ;
+出資額 > shusshigaku\ ;
+内分泌 > naibunpitsu\ ;
+四旬節 > shijunsetsu\ ;
+九官鳥 > kyuukanchou\ ;
+老人力 > roujinryoku\ ;
+建築士 > kenchikushi\ ;
+太極拳 > taikyokuken\ ;
+生番組 > namabangumi\ ;
+養殖場 > youshokujou\ ;
+虚脱感 > kyodatsukan\ ;
+象牙質 > zougeshitsu\ ;
+隆鼻術 > ryuubijutsu\ ;
+表面積 > hyoumenseki\ ;
+努力賞 > doryokushou\ ;
+十人並 > juunin''nami\ ;
+薬鑵頭 > yakan''atama\ ;
+商売筋 > shoubaisuji\ ;
+港湾局 > kouwankyoku\ ;
+水商売 > mizushoubai\ ;
+鉄道便 > tetsudoubin\ ;
+民族学 > minzokugaku\ ;
+歴史劇 > rekishigeki\ ;
+溝形鋼 > mizogatakou\ ;
+明晰夢 > meisekiyume\ ;
+造血剤 > zouketsuzai\ ;
+断続的 > danzokuteki\ ;
+式部省 > shikibushou\ ;
+極道者 > gokudoumono\ ;
+開校式 > kaikoushiki\ ;
+民約論 > min''yakuron\ ;
+防御率 > bougyoritsu\ ;
+表面的 > hyoumenteki\ ;
+計時係 > keijigakari\ ;
+後発品 > kouhatsuhin\ ;
+薩摩焼 > satsumayaki\ ;
+出身地 > shusshinchi\ ;
+護身術 > goshinjutsu\ ;
+与太話 > yotabanashi\ ;
+再入学 > sainyuugaku\ ;
+協約書 > kyouyakusho\ ;
+調子物 > choushimono\ ;
+三羽烏 > sanbagarasu\ ;
+訪問客 > houmonkyaku\ ;
+治験薬 > chiken''yaku\ ;
+性善説 > seizensetsu\ ;
+仕事柄 > shigotogara\ ;
+大根足 > daikon''ashi\ ;
+光瀬龍 > mitsuseryuu\ ;
+狼藉者 > rouzekimono\ ;
+心拍数 > shinpakusuu\ ;
+動物誌 > doubutsushi\ ;
+返却値 > henkyakuchi\ ;
+無駄話 > mudabanashi\ ;
+分子式 > bunshishiki\ ;
+降車口 > koushaguchi\ ;
+検出器 > kenshutsuki\ ;
+落葉松 > rakuyoushou\ ;
+極前線 > kyokuzensen\ ;
+超越点 > chouetsuten\ ;
+黒猩々 > kuroshoujou\ ;
+国慶節 > kokkeisetsu\ ;
+天産物 > tensanbutsu\ ;
+紳士録 > shinshiroku\ ;
+再入国 > sainyuukoku\ ;
+簡潔性 > kanketsusei\ ;
+切断面 > setsudanmen\ ;
+引込線 > hikikomisen\ ;
+粗忽者 > sokotsumono\ ;
+開会式 > kaikaishiki\ ;
+感傷的 > kanshouteki\ ;
+市有物 > shiyuubutsu\ ;
+聖職者 > seishokusha\ ;
+中衣嚢 > nakagakushi\ ;
+独立語 > dokuritsugo\ ;
+育児室 > ikujishitsu\ ;
+繁殖地 > hanshokuchi\ ;
+一人称 > ichininshou\ ;
+長崎県 > nagasakiken\ ;
+電力計 > denryokukei\ ;
+製氷皿 > seihyouzara\ ;
+主税局 > shuzeikyoku\ ;
+接続語 > setsuzokugo\ ;
+特集号 > tokushuugou\ ;
+黒褐色 > kokkasshoku\ ;
+中国人 > chuugokujin\ ;
+従属国 > juuzokukoku\ ;
+口返答 > kuchihentou\ ;
+減衰率 > gensuiritsu\ ;
+導電率 > doudenritsu\ ;
+一了簡 > ichiryoukan\ ;
+再輸出 > saiyushutsu\ ;
+青銅色 > seidoushoku\ ;
+隊商宿 > taishouyado\ ;
+式次第 > shikishidai\ ;
+生産物 > seisanbutsu\ ;
+幻覚症 > genkakushou\ ;
+投手力 > toushuryoku\ ;
+閉会式 > heikaishiki\ ;
+沖積層 > chuusekisou\ ;
+催眠術 > saiminjutsu\ ;
+蝙蝠傘 > koumorigasa\ ;
+向日性 > kounichisei\ ;
+吸取紙 > suitorigami\ ;
+憂鬱症 > yuuutsushou\ ;
+高圧的 > kouatsuteki\ ;
+有力者 > yuuryokusha\ ;
+別問題 > betsumondai\ ;
+代数式 > daisuushiki\ ;
+入港料 > nyuukouryou\ ;
+無宿者 > mushukumono\ ;
+原子力 > genshiryoku\ ;
+成文律 > seibunritsu\ ;
+男一匹 > otokoippiki\ ;
+塞栓症 > sokusenshou\ ;
+商売柄 > shoubaigara\ ;
+腹足類 > fukusokurui\ ;
+東印度 > higashiindo\ ;
+資本力 > shihonryoku\ ;
+祇園祭 > gionmatsuri\ ;
+上京中 > joukyouchuu\ ;
+催眠薬 > saimin''yaku\ ;
+現象学 > genshougaku\ ;
+秋津島 > akitsushima\ ;
+羊小屋 > hitsujigoya\ ;
+装飾品 > soushokuhin\ ;
+千日手 > sen''nichite\ ;
+植民地 > shokuminchi\ ;
+外分泌 > gaibunpitsu\ ;
+隣近所 > tonarikinjo\ ;
+対頂角 > taichoukaku\ ;
+肩甲骨 > kenkoukotsu\ ;
+腰弁当 > koshibentou\ ;
+口巧者 > kuchigousha\ ;
+不世出 > fuseishutsu\ ;
+先日付 > sakihidzuke\ ;
+透視力 > toushiryoku\ ;
+創設者 > sousetsusha\ ;
+金魚鉢 > kingyobachi\ ;
+衒学的 > gengakuteki\ ;
+金石学 > kinsekigaku\ ;
+野菜畑 > yasaibatake\ ;
+直感的 > chokkanteki\ ;
+動物相 > doubutsusou\ ;
+賃仕事 > chinshigoto\ ;
+特許主 > tokkyonushi\ ;
+奉納物 > hounoubutsu\ ;
+保釈中 > hoshakuchuu\ ;
+青藍色 > seiranshoku\ ;
+脅迫者 > kyouhakusha\ ;
+動物界 > doubutsukai\ ;
+通行上 > tsuukoudome\ ;
+強奪者 > goudatsusha\ ;
+脅迫罪 > kyouhakuzai\ ;
+団結権 > danketsuken\ ;
+約半年 > yakuhan''nen\ ;
+投票箱 > touhyoubako\ ;
+素人芸 > shiroutogei\ ;
+積極性 > sekkyokusei\ ;
+極座標 > kyokuzahyou\ ;
+寝正月 > neshougatsu\ ;
+浚渫機 > shunsetsuki\ ;
+翼面積 > yokumenseki\ ;
+総目録 > soumokuroku\ ;
+核反応 > kakuhan''nou\ ;
+制酸薬 > seisan''yaku\ ;
+超人的 > choujinteki\ ;
+第一流 > daiichiryuu\ ;
+足拍子 > ashibyoushi\ ;
+弱材料 > yowazairyou\ ;
+接触線 > sesshokusen\ ;
+役力士 > yakurikishi\ ;
+統轄者 > toukatsusha\ ;
+仕事中 > shigotochuu\ ;
+土百姓 > dobyakushou\ ;
+文学賞 > bungakushou\ ;
+招請国 > shouseikoku\ ;
+総収入 > soushuunyuu\ ;
+測量船 > sokuryousen\ ;
+借地権 > shakuchiken\ ;
+沖積世 > chuusekisei\ ;
+口述書 > koujutsusho\ ;
+殉職者 > junshokusha\ ;
+病虫害 > byouchuugai\ ;
+技術的 > gijutsuteki\ ;
+小説家 > shousetsuka\ ;
+特約店 > tokuyakuten\ ;
+交通量 > koutsuuryou\ ;
+道案内 > michian''nai\ ;
+道普請 > michibushin\ ;
+好色者 > koushokusha\ ;
+消臭剤 > shoushuuzai\ ;
+独善的 > dokuzenteki\ ;
+解像力 > kaizouryoku\ ;
+浸透圧 > shintouatsu\ ;
+熱血漢 > nekketsukan\ ;
+岩石学 > gansekigaku\ ;
+蜜柑畑 > mikanbatake\ ;
+烏天狗 > karasutengu\ ;
+紳士的 > shinshiteki\ ;
+窒息死 > chissokushi\ ;
+三大節 > sandaisetsu\ ;
+活断層 > katsudansou\ ;
+目鼻立 > mehanadachi\ ;
+周期律 > shuukiritsu\ ;
+退紅色 > taikoushoku\ ;
+撮像管 > satsuzoukan\ ;
+腹八分 > harahachibu\ ;
+進入路 > shin''nyuuro\ ;
+背日性 > haijitsusei\ ;
+間奏曲 > kansoukyoku\ ;
+指南役 > shinan''yaku\ ;
+脅迫状 > kyouhakujou\ ;
+功名心 > koumyoushin\ ;
+回教国 > kaikyoukoku\ ;
+骨膜炎 > kotsumakuen\ ;
+沢庵漬 > takuandzuke\ ;
+根切虫 > nekirimushi\ ;
+送料共 > souryoutomo\ ;
+張本人 > chouhon''nin\ ;
+乗車口 > joushaguchi\ ;
+一日路 > ichinichiji\ ;
+地質図 > chishitsuzu\ ;
+立明戦 > ritsumeisen\ ;
+抽象論 > chuushouron\ ;
+仕訳表 > shiwakehyou\ ;
+国税庁 > kokuzeichou\ ;
+性悪説 > seiakusetsu\ ;
+懐郷病 > kaikyoubyou\ ;
+柑橘類 > kankitsurui\ ;
+一音節 > ichionsetsu\ ;
+肩胛骨 > kenkoukotsu\ ;
+脱炭酸 > datsutansan\ ;
+新技術 > shingijutsu\ ;
+逆探知 > gyakutanchi\ ;
+拾得者 > shuutokusha\ ;
+宝物殿 > houmotsuden\ ;
+喫煙席 > kitsuenseki\ ;
+冷血漢 > reiketsukan\ ;
+主力艦 > shuryokukan\ ;
+車大工 > kurumadaiku\ ;
+過食症 > kashokushou\ ;
+宿命論 > shukumeiron\ ;
+入金票 > nyuukinhyou\ ;
+花屋敷 > hanayashiki\ ;
+共白髪 > tomoshiraga\ ;
+口座係 > kouzakakari\ ;
+生存率 > seizonritsu\ ;
+熊本県 > kumamotoken\ ;
+直銭形 > chokusenkei\ ;
+動物性 > doubutsusei\ ;
+原爆症 > genbakushou\ ;
+電動式 > dendoushiki\ ;
+生産力 > seisanryoku\ ;
+副牧師 > fukubokushi\ ;
+聖餐式 > seisanshiki\ ;
+逆関数 > gyakukansuu\ ;
+七五三 > shichigosan\ ;
+駐留軍 > chuuryuugun\ ;
+唯物論 > yuibutsuron\ ;
+旅商人 > tabishounin\ ;
+技術料 > gijutsuryou\ ;
+練習帳 > renshuuchou\ ;
+造石高 > zoukokudaka\ ;
+軍隊式 > guntaishiki\ ;
+翻訳者 > hon''yakusha\ ;
+潤目鰯 > urumeiwashi\ ;
+茶褐色 > chakasshoku\ ;
+確実度 > kakujitsudo\ ;
+総力戦 > souryokusen\ ;
+好色漢 > koushokukan\ ;
+初投稿 > hatsutoukou\ ;
+万万一 > manman''ichi\ ;
+紳士服 > shinshifuku\ ;
+一仕事 > hitoshigoto\ ;
+嗅神経 > kyuushinkei\ ;
+継続的 > keizokuteki\ ;
+文学的 > bungakuteki\ ;
+六重唱 > rokujuushou\ ;
+玄人筋 > kuroutosuji\ ;
+囃子方 > hayashikata\ ;
+大人物 > daijinbutsu\ ;
+同系色 > doukeishoku\ ;
+紅白粉 > benioshiroi\ ;
+宣誓式 > senseishiki\ ;
+中和熱 > chuuwanetsu\ ;
+消耗的 > shoukouteki\ ;
+攻撃的 > kougekiteki\ ;
+埋蔵物 > maizoubutsu\ ;
+副読本 > fukudokuhon\ ;
+麝香鼠 > jakounezumi\ ;
+木賃宿 > kichin''yado\ ;
+四角柱 > shikakuchuu\ ;
+中空壁 > chuukuukabe\ ;
+考証学 > koushougaku\ ;
+実証的 > jisshouteki\ ;
+救済策 > kyuusaisaku\ ;
+軍国調 > gunkokuchou\ ;
+白蝋病 > hakuroubyou\ ;
+狂犬病 > kyoukenbyou\ ;
+民衆的 > minshuuteki\ ;
+一両年 > ichiryounen\ ;
+大仏殿 > daibutsuden\ ;
+刹那的 > setsunateki\ ;
+勅任官 > chokuninkan\ ;
+双十節 > soujuusetsu\ ;
+好色本 > koushokubon\ ;
+窒化物 > chikkabutsu\ ;
+三角翼 > sankakuyoku\ ;
+成長株 > seichoukabu\ ;
+石材商 > sekizaishou\ ;
+供託金 > kyoutakukin\ ;
+猫額大 > byougakudai\ ;
+地方色 > chihoushoku\ ;
+生中継 > namachuukei\ ;
+吸収剤 > kyuushuuzai\ ;
+建蔽率 > kenpeiritsu\ ;
+客観的 > kyakkanteki\ ;
+律義者 > richigimono\ ;
+下級職 > kakyuushoku\ ;
+修飾語 > shuushokugo\ ;
+大食漢 > taishokukan\ ;
+冷笑的 > reishouteki\ ;
+支給額 > shikyuugaku\ ;
+不均質 > fukinshitsu\ ;
+代表的 > daihyouteki\ ;
+入道雲 > nyuudougumo\ ;
+共通点 > kyoutsuuten\ ;
+公徳心 > koutokushin\ ;
+形式論 > keishikiron\ ;
+金環食 > kinkanshoku\ ;
+出札所 > shussatsujo\ ;
+北極海 > hokkyokukai\ ;
+行官庁 > gyoukanchou\ ;
+保身術 > hoshinjutsu\ ;
+鑑識眼 > kanshikigan\ ;
+北極洋 > hokkyokuyou\ ;
+彫刻界 > choukokukai\ ;
+馬鹿話 > bakabanashi\ ;
+物納税 > butsunouzei\ ;
+下女中 > shimojochuu\ ;
+地下室 > chikashitsu\ ;
+貸本屋 > kashihon''ya\ ;
+鍾乳洞 > shounyuudou\ ;
+職員録 > shokuinroku\ ;
+梯子酒 > hashigozake\ ;
+滞在客 > taizaikyaku\ ;
+蓄電池 > chikudenchi\ ;
+試掘者 > shikutsusha\ ;
+大学寮 > daigakuryou\ ;
+姫小松 > himekomatsu\ ;
+真実味 > shinjitsumi\ ;
+旅役者 > tabiyakusha\ ;
+国民的 > kokuminteki\ ;
+戦没者 > senbotsusha\ ;
+流行病 > ryuukoubyou\ ;
+彫刻版 > choukokuban\ ;
+周旋業 > shuusengyou\ ;
+団扇虫 > uchiwamushi\ ;
+口小言 > kuchikogoto\ ;
+任命式 > ninmeishiki\ ;
+電力債 > denryokusai\ ;
+力動的 > rikidouteki\ ;
+夏帽子 > natsuboushi\ ;
+睡眠薬 > suimin''yaku\ ;
+卸相場 > oroshisouba\ ;
+印刷業 > insatsugyou\ ;
+伝導率 > dendouritsu\ ;
+蛸入道 > takonyuudou\ ;
+談話室 > danwashitsu\ ;
+安月給 > yasugekkyuu\ ;
+北極星 > hokkyokusei\ ;
+御霊代 > mitamashiro\ ;
+測量士 > sokuryoushi\ ;
+出願時 > shutsuganji\ ;
+三角琴 > sankakugoto\ ;
+鉄条網 > tetsujoumou\ ;
+翻訳権 > hon''yakuken\ ;
+玉杓子 > tamajakushi\ ;
+工業国 > kougyoukoku\ ;
+周旋料 > shuusenryou\ ;
+追撃戦 > tsuigekisen\ ;
+傷病兵 > shoubyouhei\ ;
+彼岸桜 > higanzakura\ ;
+一時払 > ichijibarai\ ;
+内容物 > naiyoubutsu\ ;
+無一物 > muichimotsu\ ;
+労働力 > roudouryoku\ ;
+若竹亭 > wakataketei\ ;
+翻訳書 > hon''yakusho\ ;
+到着駅 > touchakueki\ ;
+少国民 > shoukokumin\ ;
+生学問 > namagakumon\ ;
+今月分 > kongetsubun\ ;
+分数式 > bunsuushiki\ ;
+授賞式 > jushoushiki\ ;
+掌中本 > shouchuubon\ ;
+省力化 > shouryokuka\ ;
+代表格 > daihyoukaku\ ;
+昼興行 > hirukougyou\ ;
+黙示録 > mokushiroku\ ;
+検察官 > kensatsukan\ ;
+供託者 > kyoutakusha\ ;
+海産物 > kaisanbutsu\ ;
+褪紅色 > taikoushoku\ ;
+返信用 > henshin''you\ ;
+遁走曲 > tonsoukyoku\ ;
+辻強盗 > tsujigoutou\ ;
+公式戦 > koushikisen\ ;
+金環蝕 > kinkanshoku\ ;
+靴一足 > kutsuissoku\ ;
+浪花節 > naniwabushi\ ;
+各大学 > kakudaigaku\ ;
+総退却 > soutaikyaku\ ;
+国民服 > kokuminfuku\ ;
+実在論 > jitsuzairon\ ;
+救急車 > kyuukyuusha\ ;
+間接税 > kansetsuzei\ ;
+乱開発 > rankaihatsu\ ;
+所帯主 > shotainushi\ ;
+防寒靴 > boukangutsu\ ;
+三角柱 > sankakuchuu\ ;
+仕訳帳 > shiwakechou\ ;
+粘着性 > nenchakusei\ ;
+密造酒 > mitsuzoushu\ ;
+一夜漬 > ichiyadzuke\ ;
+斜角柱 > shakakuchuu\ ;
+対照的 > taishouteki\ ;
+役人風 > yakuninkaze\ ;
+船舶業 > senpakugyou\ ;
+水道局 > suidoukyoku\ ;
+始発駅 > shihatsueki\ ;
+北極圏 > hokkyokuken\ ;
+日用品 > nichiyouhin\ ;
+反逆者 > hangyakusha\ ;
+登録済 > tourokuzumi\ ;
+専売局 > senbaikyoku\ ;
+権力者 > kenryokusha\ ;
+恒久的 > koukyuuteki\ ;
+反逆罪 > hangyakuzai\ ;
+特等席 > tokutouseki\ ;
+内服薬 > naifukuyaku\ ;
+臆病風 > okubyoukaze\ ;
+供給者 > kyoukyuusha\ ;
+彫刻師 > choukokushi\ ;
+求人難 > kyuujin''nan\ ;
+頚動脈 > keidoumyaku\ ;
+試掘権 > shikutsuken\ ;
+在京中 > zaikyouchuu\ ;
+方程式 > houteishiki\ ;
+静力学 > seirikigaku\ ;
+一覧表 > ichiranhyou\ ;
+北朝鮮 > kitachousen\ ;
+百千鳥 > momochidori\ ;
+銃剣術 > juukenjutsu\ ;
+納骨堂 > noukotsudou\ ;
+耳小骨 > jishoukotsu\ ;
+大静脈 > daijoumyaku\ ;
+経済力 > keizairyoku\ ;
+学協会 > gakukyoukai\ ;
+中心点 > chuushinten\ ;
+北極光 > hokkyokukou\ ;
+食品店 > shokuhinten\ ;
+領収書 > ryoushuusho\ ;
+通知表 > tsuuchihyou\ ;
+連発銃 > renpatsujuu\ ;
+攻撃側 > kougekigawa\ ;
+大中小 > daichuushou\ ;
+平均律 > heikinritsu\ ;
+赤棟蛇 > yamakagashi\ ;
+観念的 > kan''nenteki\ ;
+専門職 > senmonshoku\ ;
+共進会 > kyoushinkai\ ;
+信用状 > shin''youjou\ ;
+織物業 > orimonogyou\ ;
+超特急 > choutokkyuu\ ;
+返信料 > henshinryou\ ;
+壁新聞 > kabeshinbun\ ;
+融解熱 > yuukainetsu\ ;
+節博士 > fushihakase\ ;
+見物人 > kenbutsunin\ ;
+登録料 > tourokuryou\ ;
+周旋人 > shuusen''nin\ ;
+高麗芝 > kouraishiba\ ;
+不親切 > fushinsetsu\ ;
+親告罪 > shinkokuzai\ ;
+蔦紅葉 > tsutamomiji\ ;
+五目鮨 > gomokuzushi\ ;
+編集長 > henshuuchou\ ;
+出版業 > shuppangyou\ ;
+調教師 > choukyoushi\ ;
+進駐軍 > shinchuugun\ ;
+別動隊 > betsudoutai\ ;
+逆噴射 > gyakufunsha\ ;
+二口目 > futakuchime\ ;
+逆命題 > gyakumeidai\ ;
+粘着剤 > nenchakuzai\ ;
+生物界 > seibutsukai\ ;
+五目飯 > gomokumeshi\ ;
+採掘権 > saikutsuken\ ;
+全幅的 > zenpukuteki\ ;
+彫刻刀 > choukokutou\ ;
+研究心 > kenkyuushin\ ;
+独占的 > dokusenteki\ ;
+酸中毒 > sanchuudoku\ ;
+超新星 > choushinsei\ ;
+頂戴物 > choudaimono\ ;
+宿泊所 > shukuhakujo\ ;
+売却益 > baikyakueki\ ;
+構造式 > kouzoushiki\ ;
+代表作 > daihyousaku\ ;
+過失犯 > kashitsuhan\ ;
+紙一枚 > kamiichimai\ ;
+再認識 > saininshiki\ ;
+風物詩 > fuubutsushi\ ;
+実関数 > jitsukansuu\ ;
+大好物 > daikoubutsu\ ;
+乳濁液 > nyuudakueki\ ;
+水冷式 > suireishiki\ ;
+心配性 > shinpaishou\ ;
+後始末 > atoshimatsu\ ;
+全勢力 > zenseiryoku\ ;
+離心率 > rishinritsu\ ;
+供給源 > kyoukyuugen\ ;
+大文節 > daibunsetsu\ ;
+一夜妻 > hitoyodzuma\ ;
+結合子 > ketsugoushi\ ;
+死亡率 > shibouritsu\ ;
+時局柄 > jikyokugara\ ;
+配当率 > haitouritsu\ ;
+整骨師 > seikotsushi\ ;
+関税率 > kanzeiritsu\ ;
+中毒死 > chuudokushi\ ;
+最前列 > saizenretsu\ ;
+御所車 > goshoguruma\ ;
+内曲球 > naikyokkyuu\ ;
+解散説 > kaisansetsu\ ;
+建造物 > kenzoubutsu\ ;
+献血車 > kenketsusha\ ;
+小品集 > shouhinshuu\ ;
+霊安室 > reianshitsu\ ;
+離着陸 > richakuriku\ ;
+高野聖 > kouyahijiri\ ;
+整髪剤 > seihatsuzai\ ;
+処世術 > shoseijutsu\ ;
+八幡宮 > hachimanguu\ ;
+歌唱力 > kashouryoku\ ;
+回折損 > kaisetsuson\ ;
+骨仕事 > honeshigoto\ ;
+臆病者 > okubyoumono\ ;
+朝飯前 > asameshimae\ ;
+刊行物 > kankoubutsu\ ;
+眼鏡橋 > meganebashi\ ;
+購入先 > kounyuusaki\ ;
+弘仁格 > kouninkyaku\ ;
+旧大陸 > kyuutairiku\ ;
+診察日 > shinsatsubi\ ;
+東宮職 > touguushoku\ ;
+警察署 > keisatsusho\ ;
+冗談口 > joudanguchi\ ;
+織物商 > orimonoshou\ ;
+八辺形 > hachihenkei\ ;
+針仕事 > harishigoto\ ;
+好人物 > koujinbutsu\ ;
+征服欲 > seifukuyoku\ ;
+解説者 > kaisetsusha\ ;
+広告業 > koukokugyou\ ;
+創立者 > souritsusha\ ;
+解熱薬 > genetsuyaku\ ;
+日曜版 > nichiyouban\ ;
+新快速 > shinkaisoku\ ;
+中年者 > chuunenmono\ ;
+戴冠式 > taikanshiki\ ;
+軽業師 > karuwazashi\ ;
+中心地 > chuushinchi\ ;
+商慣習 > shoukanshuu\ ;
+生物戦 > seibutsusen\ ;
+救急法 > kyuukyuuhou\ ;
+食前酒 > shokuzenshu\ ;
+深夜族 > shin''yazoku\ ;
+迫撃砲 > hakugekihou\ ;
+進軍中 > shingunchuu\ ;
+媒酌人 > baishakunin\ ;
+両性的 > ryouseiteki\ ;
+潜勢力 > senseiryoku\ ;
+武骨者 > bukotsumono\ ;
+保健室 > hokenshitsu\ ;
+広告料 > koukokuryou\ ;
+速力度 > sokuryokudo\ ;
+盆提灯 > bondjouchin\ ;
+聴神経 > choushinkei\ ;
+超大国 > choutaikoku\ ;
+出版元 > shuppanmoto\ ;
+馬鹿力 > bakadjikara\ ;
+陸半球 > rikuhankyuu\ ;
+統率者 > tousotsusha\ ;
+公共心 > koukyoushin\ ;
+中共軍 > chuukyougun\ ;
+漂白剤 > hyouhakuzai\ ;
+収入源 > shuunyuugen\ ;
+殿様風 > tonosamafuu\ ;
+心配事 > shinpaigoto\ ;
+太陽熱 > taiyounetsu\ ;
+判決文 > hanketsubun\ ;
+信仰的 > shinkouteki\ ;
+膝拍子 > hizabyoushi\ ;
+跡始末 > atoshimatsu\ ;
+盲目的 > moumokuteki\ ;
+神通力 > jintsuuriki\ ;
+恐妻病 > kyousaibyou\ ;
+忠実度 > chuujitsudo\ ;
+信任状 > shin''ninjou\ ;
+新参者 > shinzanmono\ ;
+真犯人 > shinhan''nin\ ;
+警察犬 > keisatsuken\ ;
+叢時雨 > murashigure\ ;
+海食洞 > kaishokudou\ ;
+参列者 > sanretsusha\ ;
+生物圏 > seibutsuken\ ;
+供給地 > kyoukyuuchi\ ;
+干渉縞 > kanshoujima\ ;
+独創的 > dokusouteki\ ;
+染色体 > senshokutai\ ;
+座頭鯨 > zatoukujira\ ;
+目的論 > mokutekiron\ ;
+省略時 > shouryakuji\ ;
+石炭殻 > sekitangara\ ;
+分裂性 > bunretsusei\ ;
+短縮形 > tanshukukei\ ;
+有職者 > yuushokusha\ ;
+親和力 > shinwaryoku\ ;
+先々月 > sensengetsu\ ;
+有体物 > yuutaibutsu\ ;
+短絡的 > tanrakuteki\ ;
+魅力的 > miryokuteki\ ;
+化学式 > kagakushiki\ ;
+太陽日 > taiyoujitsu\ ;
+野球熱 > yakyuunetsu\ ;
+警察権 > keisatsuken\ ;
+熱気球 > netsukikyuu\ ;
+空想力 > kuusouryoku\ ;
+静岡県 > shizuokaken\ ;
+反逆人 > hangyakunin\ ;
+染髪剤 > senpatsuzai\ ;
+全身病 > zenshinbyou\ ;
+腹話術 > fukuwajutsu\ ;
+流量計 > ryuuryoukei\ ;
+線織面 > senshikimen\ ;
+完結編 > kanketsuhen\ ;
+学生証 > gakuseishou\ ;
+造幣局 > zouheikyoku\ ;
+説明書 > setsumeisho\ ;
+自給率 > jikyuuritsu\ ;
+打物師 > uchimonoshi\ ;
+惨殺者 > zansatsusha\ ;
+磯巾着 > isoginchaku\ ;
+証人席 > shouninseki\ ;
+若白髪 > wakashiraga\ ;
+数学的 > suugakuteki\ ;
+直円柱 > chokuenchuu\ ;
+説明文 > setsumeibun\ ;
+水産物 > suisanbutsu\ ;
+教則本 > kyousokubon\ ;
+乙女心 > otomegokoro\ ;
+戦勝国 > senshoukoku\ ;
+南北朝 > nanbokuchou\ ;
+幻想曲 > gensoukyoku\ ;
+旅興行 > tabikougyou\ ;
+豆電球 > mamedenkyuu\ ;
+解説書 > kaisetsusho\ ;
+翼手目 > yokushumoku\ ;
+婚約者 > kon''yakusha\ ;
+郡役所 > gun''yakusho\ ;
+知識層 > chishikisou\ ;
+撞木鮫 > shumokuzame\ ;
+硼酸末 > housanmatsu\ ;
+妖術者 > youjutsusha\ ;
+余白頁 > yohakupeeji\ ;
+統一的 > touitsuteki\ ;
+身障者 > shinshousha\ ;
+食卓塩 > shokutakuen\ ;
+八字髭 > hachijihige\ ;
+復活祭 > fukkatsusai\ ;
+主産物 > shusanbutsu\ ;
+美術的 > bijutsuteki\ ;
+珍現象 > chingenshou\ ;
+三稜鏡 > sanryoukyou\ ;
+大陸棚 > tairikudana\ ;
+殿様芸 > tonosamagei\ ;
+海食崖 > kaishokugai\ ;
+元禄袖 > genrokusode\ ;
+文教族 > bunkyouzoku\ ;
+湿度計 > shitsudokei\ ;
+召集者 > shoushuusha\ ;
+八極拳 > hakkyokuken\ ;
+信仰心 > shinkoushin\ ;
+人一倍 > hitoichibai\ ;
+合衆国 > gasshuukoku\ ;
+機関室 > kikanshitsu\ ;
+冷却液 > reikyakueki\ ;
+漁獲高 > gyokakudaka\ ;
+公用物 > kouyoubutsu\ ;
+単発銃 > tanpatsujuu\ ;
+冷却水 > reikyakusui\ ;
+献立表 > kondatehyou\ ;
+若草色 > wakakusairo\ ;
+三国一 > sangokuichi\ ;
+督促状 > tokusokujou\ ;
+仮受取 > kariuketori\ ;
+袋小路 > fukurokouji\ ;
+警察官 > keisatsukan\ ;
+自然律 > shizenritsu\ ;
+職務給 > shokumukyuu\ ;
+療養中 > ryouyouchuu\ ;
+合成物 > gouseibutsu\ ;
+三行半 > mikudarihan\ ;
+行政学 > gyouseigaku\ ;
+実行力 > jikkouryoku\ ;
+長火鉢 > nagahibachi\ ;
+海食台 > kaishokudai\ ;
+郵便物 > yuubinbutsu\ ;
+空気枕 > kuukimakura\ ;
+奨学金 > shougakukin\ ;
+公生活 > kouseikatsu\ ;
+遮蔽物 > shaheibutsu\ ;
+絹織物 > kinuorimono\ ;
+芸術論 > geijutsuron\ ;
+薬効物 > yakkoubutsu\ ;
+庭仕事 > niwashigoto\ ;
+悪質化 > akushitsuka\ ;
+知識人 > chishikijin\ ;
+白内障 > hakunaishou\ ;
+楽天的 > rakutenteki\ ;
+別勘定 > betsukanjou\ ;
+金杓子 > kanajakushi\ ;
+長大息 > choutaisoku\ ;
+聴取料 > choushuryou\ ;
+頸静脈 > keijoumyaku\ ;
+漁獲量 > gyokakuryou\ ;
+語学力 > gogakuryoku\ ;
+準備室 > junbishitsu\ ;
+中年増 > chuudoshima\ ;
+背筋力 > haikinryoku\ ;
+所有物 > shoyuubutsu\ ;
+産土神 > ubusunagami\ ;
+暗赤色 > ansekishoku\ ;
+仕立物 > shitatemono\ ;
+七回忌 > shichikaiki\ ;
+溶解熱 > youkainetsu\ ;
+米十粒 > komejuuryuu\ ;
+特注品 > tokuchuuhin\ ;
+別働隊 > betsudoutai\ ;
+古新聞 > furushinbun\ ;
+配達人 > haitatsunin\ ;
+京人形 > kyouningyou\ ;
+完結文 > kanketsubun\ ;
+反対色 > hantaishoku\ ;
+商品学 > shouhingaku\ ;
+入射角 > nyuushakaku\ ;
+消防庁 > shoubouchou\ ;
+奇麗所 > kireidokoro\ ;
+山吹色 > yamabukiiro\ ;
+打撃率 > dagekiritsu\ ;
+請求額 > seikyuugaku\ ;
+百年祭 > hyakunensai\ ;
+抑留者 > yokuryuusha\ ;
+食連星 > shokurensei\ ;
+落札値 > rakusatsune\ ;
+自然力 > shizenryoku\ ;
+秘書室 > hishoshitsu\ ;
+千秋楽 > senshuuraku\ ;
+探究心 > tankyuushin\ ;
+副社長 > fukushachou\ ;
+月例会 > getsureikai\ ;
+数日間 > suujitsukan\ ;
+命名式 > meimeishiki\ ;
+指導力 > shidouryoku\ ;
+感覚的 > kankakuteki\ ;
+再開発 > saikaihatsu\ ;
+入学難 > nyuugakunan\ ;
+分折学 > bunsekigaku\ ;
+若輩者 > jakuhaimono\ ;
+幅変調 > habahenchou\ ;
+小惑星 > shouwakusei\ ;
+人物像 > jinbutsuzou\ ;
+躁鬱病 > souutsubyou\ ;
+直輸入 > chokuyunyuu\ ;
+促進剤 > sokushinzai\ ;
+鼻出血 > bishukketsu\ ;
+急進党 > kyuushintou\ ;
+金婚式 > kinkonshiki\ ;
+満艦飾 > mankanshoku\ ;
+傍迷惑 > hatameiwaku\ ;
+昼食時 > chuushokuji\ ;
+芸術祭 > geijutsusai\ ;
+学生服 > gakuseifuku\ ;
+就業地 > shuugyouchi\ ;
+表示物 > hyoujibutsu\ ;
+転入生 > ten''nyuusei\ ;
+入学金 > nyuugakukin\ ;
+革新系 > kakushinkei\ ;
+陽極線 > youkyokusen\ ;
+出演者 > shutsuensha\ ;
+会議室 > kaigishitsu\ ;
+陸運局 > rikuunkyoku\ ;
+追徴金 > tsuichoukin\ ;
+殺菌力 > sakkinryoku\ ;
+投宿者 > toushukusha\ ;
+新庁舎 > shinchousha\ ;
+冷却剤 > reikyakuzai\ ;
+遊覧客 > yuurankyaku\ ;
+黄金虫 > koganemushi\ ;
+黒死病 > kokushibyou\ ;
+郵便局 > yuubinkyoku\ ;
+反射率 > hansharitsu\ ;
+教皇庁 > kyoukouchou\ ;
+若鳥丼 > wakadoridon\ ;
+美術商 > bijutsushou\ ;
+滴定量 > tekiteiryou\ ;
+神学者 > shingakusha\ ;
+密輸入 > mitsuyunyuu\ ;
+踏切番 > fumikiriban\ ;
+前奏曲 > zensoukyoku\ ;
+裸一貫 > hadakaikkan\ ;
+奏鳴曲 > soumeikyoku\ ;
+私生活 > shiseikatsu\ ;
+甲鉄艦 > koutetsukan\ ;
+心臓病 > shinzoubyou\ ;
+錬金術 > renkinjutsu\ ;
+黒内障 > kokunaishou\ ;
+有識者 > yuushikisha\ ;
+山津波 > yamatsunami\ ;
+袖珍本 > shuuchinbon\ ;
+先着順 > senchakujun\ ;
+実名詞 > jitsumeishi\ ;
+防食剤 > boushokuzai\ ;
+対称軸 > taishoujiku\ ;
+近日点 > kinjitsuten\ ;
+藍晶石 > ranshouseki\ ;
+女子供 > on''nakodomo\ ;
+没食子 > mosshokushi\ ;
+修繕中 > shuuzenchuu\ ;
+耳学問 > mimigakumon\ ;
+長粒米 > chouryuumai\ ;
+神信心 > kamishinjin\ ;
+奨学生 > shougakusei\ ;
+観兵式 > kanpeishiki\ ;
+若年型 > jakunengata\ ;
+鼠海豚 > nezumiiruka\ ;
+集積場 > shuusekijou\ ;
+指人形 > yubiningyou\ ;
+曲芸師 > kyokugeishi\ ;
+麦粒腫 > bakuryuushu\ ;
+目的地 > mokutekichi\ ;
+学生寮 > gakuseiryou\ ;
+合成力 > gouseiryoku\ ;
+提供側 > teikyougawa\ ;
+乗降客 > joukoukyaku\ ;
+内親王 > naishin''nou\ ;
+糞勉強 > kusobenkyou\ ;
+矢継早 > yatsugibaya\ ;
+変曲点 > henkyokuten\ ;
+長四角 > nagashikaku\ ;
+親切気 > shinsetsugi\ ;
+副神経 > fukushinkei\ ;
+葉緑体 > youryokutai\ ;
+菊人形 > kikuningyou\ ;
+玩弄物 > ganroubutsu\ ;
+口言葉 > kuchikotoba\ ;
+集合的 > shuugouteki\ ;
+割当額 > wariategaku\ ;
+常習的 > joushuuteki\ ;
+感圧紙 > kan''atsushi\ ;
+紅猿子 > benimashiko\ ;
+弾性率 > danseiritsu\ ;
+淡紅色 > tankoushoku\ ;
+柳行李 > yanagigouri\ ;
+流動的 > ryuudouteki\ ;
+環境庁 > kankyouchou\ ;
+昆虫学 > konchuugaku\ ;
+常日頃 > tsunehigoro\ ;
+比翼塚 > hiyokudzuka\ ;
+混成物 > konseibutsu\ ;
+溶解力 > youkairyoku\ ;
+教育長 > kyouikuchou\ ;
+焼却炉 > shoukyakuro\ ;
+白檀油 > byakudan''yu\ ;
+牽引力 > ken''inryoku\ ;
+観光局 > kankoukyoku\ ;
+入学者 > nyuugakusha\ ;
+国学者 > kokugakusha\ ;
+活動誌 > katsudoushi\ ;
+出土品 > shutsudohin\ ;
+紙表紙 > kamibyoushi\ ;
+観光客 > kankoukyaku\ ;
+共学制 > kyougakusei\ ;
+羞恥心 > shuuchishin\ ;
+虫眼鏡 > mushimegane\ ;
+言葉質 > kotobajichi\ ;
+学者膚 > gakushahada\ ;
+通信網 > tsuushinmou\ ;
+普及率 > fukyuuritsu\ ;
+千鳥足 > chidoriashi\ ;
+転轍手 > tentetsushu\ ;
+購買力 > koubairyoku\ ;
+学者肌 > gakushahada\ ;
+入賞者 > nyuushousha\ ;
+陸軍省 > rikugunshou\ ;
+仮出所 > karishussho\ ;
+古物商 > kobutsushou\ ;
+象徴詩 > shouchoushi\ ;
+下協議 > shitakyougi\ ;
+召集令 > shoushuurei\ ;
+照会先 > shoukaisaki\ ;
+堆積学 > taisekigaku\ ;
+読解力 > dokkairyoku\ ;
+腸結核 > choukekkaku\ ;
+年恰好 > toshikakkou\ ;
+通産省 > tsuusanshou\ ;
+通産相 > tsuusanshou\ ;
+督学官 > tokugakukan\ ;
+懐中物 > kaichuumono\ ;
+通信社 > tsuushinsha\ ;
+千石船 > sengokubune\ ;
+金牛宮 > kingyuukyuu\ ;
+接合子 > setsugoushi\ ;
+皇室費 > koushitsuhi\ ;
+追徴税 > tsuichouzei\ ;
+局外者 > kyokugaisha\ ;
+翌翌年 > yokuyokunen\ ;
+特別機 > tokubetsuki\ ;
+淡褐色 > tankasshoku\ ;
+偏執病 > henshuubyou\ ;
+学習者 > gakushuusha\ ;
+防音室 > bouonshitsu\ ;
+肉体的 > nikutaiteki\ ;
+料金表 > ryoukinhyou\ ;
+内陸国 > nairikukoku\ ;
+包容力 > houyouryoku\ ;
+出漁期 > shutsugyoki\ ;
+主人役 > shujin''yaku\ ;
+成功率 > seikouritsu\ ;
+公有物 > kouyuubutsu\ ;
+観艦式 > kankanshiki\ ;
+月夜茸 > tsukiyotake\ ;
+入学生 > nyuugakusei\ ;
+明後日 > myougonichi\ ;
+活動者 > katsudousha\ ;
+三原色 > sangenshoku\ ;
+偏執狂 > henshuukyou\ ;
+蒋介石 > shoukaiseki\ ;
+申告書 > shinkokusho\ ;
+編笠茸 > amigasatake\ ;
+小半日 > kohan''nichi\ ;
+表彰状 > hyoushoujou\ ;
+内証事 > naishougoto\ ;
+診断学 > shindangaku\ ;
+南極点 > nankyokuten\ ;
+曲射砲 > kyokushahou\ ;
+対称的 > taishouteki\ ;
+甲鉄板 > koutetsuban\ ;
+先発隊 > senpatsutai\ ;
+性生活 > seiseikatsu\ ;
+検閲官 > ken''etsukan\ ;
+流通税 > ryuutsuuzei\ ;
+洗濯糊 > sentakunori\ ;
+半直線 > hanchokusen\ ;
+洗濯籠 > sentakukago\ ;
+接合剤 > setsugouzai\ ;
+農産物 > nousanbutsu\ ;
+接受国 > setsujukoku\ ;
+南極海 > nankyokukai\ ;
+結膜炎 > ketsumakuen\ ;
+親睦会 > shinbokukai\ ;
+硫化物 > ryuukabutsu\ ;
+想像力 > souzouryoku\ ;
+芸術品 > geijutsuhin\ ;
+南極洋 > nankyokuyou\ ;
+再測量 > saisokuryou\ ;
+露出計 > roshutsukei\ ;
+留学生 > ryuugakusei\ ;
+水仕事 > mizushigoto\ ;
+学習用 > gakushuuyou\ ;
+注射針 > chuushabari\ ;
+観察者 > kansatsusha\ ;
+通信欄 > tsuushinran\ ;
+五月闇 > satsukiyami\ ;
+発着場 > hatchakujou\ ;
+輸出税 > yushutsuzei\ ;
+就職時 > shuushokuji\ ;
+着眼点 > chakuganten\ ;
+空冷式 > kuureishiki\ ;
+溶接工 > yousetsukou\ ;
+丸木橋 > marukibashi\ ;
+山形県 > yamagataken\ ;
+交霊術 > koureijutsu\ ;
+創造説 > souzousetsu\ ;
+招待席 > shoutaiseki\ ;
+雪上車 > setsujousha\ ;
+交響楽 > koukyougaku\ ;
+農業国 > nougyoukoku\ ;
+卓越風 > takuetsufuu\ ;
+鎮痛性 > chintsuusei\ ;
+認識論 > ninshikiron\ ;
+就寝前 > shuushinzen\ ;
+双曲線 > soukyokusen\ ;
+夏時刻 > natsujikoku\ ;
+夏大根 > natsudaikon\ ;
+村八分 > murahachibu\ ;
+傘伐林 > sanbatsurin\ ;
+常設館 > jousetsukan\ ;
+南極星 > nankyokusei\ ;
+神学士 > shingakushi\ ;
+上告審 > joukokushin\ ;
+先入観 > sen''nyuukan\ ;
+先入見 > sen''nyuuken\ ;
+洗濯物 > sentakumono\ ;
+万葉集 > man''youshuu\ ;
+満州国 > manshuukoku\ ;
+表忠塔 > hyouchuutou\ ;
+三重殺 > sanjuusatsu\ ;
+分泌液 > bunpitsueki\ ;
+隣接県 > rinsetsuken\ ;
+嘘八百 > usohappyaku\ ;
+舞踏室 > butoushitsu\ ;
+当局者 > toukyokusha\ ;
+緩衝国 > kanshoukoku\ ;
+藁人形 > waraningyou\ ;
+影響力 > eikyouryoku\ ;
+文節数 > bunsetsusuu\ ;
+悪推量 > waruzuiryou\ ;
+含有量 > gan''yuuryou\ ;
+誘電率 > yuudenritsu\ ;
+観察眼 > kansatsugan\ ;
+抛物線 > houbutsusen\ ;
+裏切者 > uragirimono\ ;
+防雪林 > bousetsurin\ ;
+天神髭 > tenshinhige\ ;
+殺害者 > satsugaisha\ ;
+教育省 > kyouikushou\ ;
+離乳食 > rinyuushoku\ ;
+教育的 > kyouikuteki\ ;
+特別区 > tokubetsuku\ ;
+財政力 > zaiseiryoku\ ;
+強硬策 > kyoukousaku\ ;
+新年号 > shin''nengou\ ;
+磯馴松 > sonarematsu\ ;
+入館料 > nyuukanryou\ ;
+物相飯 > mossoumeshi\ ;
+製革業 > seikakugyou\ ;
+中学生 > chuugakusei\ ;
+輸出港 > yushutsukou\ ;
+南極帯 > nankyokutai\ ;
+溶接剤 > yousetsuzai\ ;
+急病人 > kyuubyounin\ ;
+寄宿料 > kishukuryou\ ;
+高島田 > takashimada\ ;
+小正月 > koshougatsu\ ;
+動力計 > douryokukei\ ;
+極大値 > kyokudaichi\ ;
+出金額 > shukkingaku\ ;
+申告制 > shinkokusei\ ;
+子供達 > kodomotachi\ ;
+媒介物 > baikaibutsu\ ;
+黄道色 > koudoushoku\ ;
+三葉虫 > san''youchuu\ ;
+全質化 > zenshitsuka\ ;
+生活難 > seikatsunan\ ;
+細動脈 > saidoumyaku\ ;
+私有物 > shiyuubutsu\ ;
+複雑化 > fukuzatsuka\ ;
+勢力圏 > seiryokuken\ ;
+複複線 > fukufukusen\ ;
+新年会 > shin''nenkai\ ;
+不確実 > fukakujitsu\ ;
+鎮痛剤 > chintsuuzai\ ;
+怪人物 > kaijinbutsu\ ;
+通学生 > tsuugakusei\ ;
+爆心地 > bakushinchi\ ;
+始末書 > shimatsusho\ ;
+競争心 > kyousoushin\ ;
+剽軽者 > hyoukinmono\ ;
+腸閉塞 > chouheisoku\ ;
+軍当局 > guntoukyoku\ ;
+白子鳩 > shirakobato\ ;
+町役場 > machiyakuba\ ;
+不忠実 > fuchuujitsu\ ;
+博学者 > hakugakusha\ ;
+戦略上 > senryakujou\ ;
+南極圏 > nankyokuken\ ;
+両脚規 > ryoukyakuki\ ;
+共訳者 > kyouyakusha\ ;
+忍耐力 > nintairyoku\ ;
+集金人 > shuukin''nin\ ;
+十八金 > juuhachikin\ ;
+借用者 > shakuyousha\ ;
+持久力 > jikyuuryoku\ ;
+局地風 > kyokuchifuu\ ;
+発癌性 > hatsugansei\ ;
+揚陸料 > yourikuryou\ ;
+密貿易 > mitsuboueki\ ;
+通信員 > tsuushin''in\ ;
+冠動脈 > kandoumyaku\ ;
+変奏曲 > hensoukyoku\ ;
+表彰台 > hyoushoudai\ ;
+葬送曲 > sousoukyoku\ ;
+千分率 > senbunritsu\ ;
+丸一年 > maruichinen\ ;
+老廃物 > rouhaibutsu\ ;
+南極光 > nankyokukou\ ;
+皮算用 > kawazan''you\ ;
+追分節 > oiwakebushi\ ;
+徳川勢 > tokugawazei\ ;
+創造物 > souzoubutsu\ ;
+初航海 > hatsukoukai\ ;
+購読料 > koudokuryou\ ;
+得票数 > tokuhyousuu\ ;
+雪景色 > yukigeshiki\ ;
+精神的 > seishinteki\ ;
+徳川公 > tokugawakou\ ;
+活動家 > katsudousha\ ;
+自立心 > jiritsushin\ ;
+漸進的 > zenshinteki\ ;
+教会暦 > kyoukaireki\ ;
+殺人者 > satsujinsha\ ;
+精神病 > seishinbyou\ ;
+殺人罪 > satsujinzai\ ;
+成年式 > seinenshiki\ ;
+脱石油 > datsusekiyu\ ;
+先進国 > senshinkoku\ ;
+土団子 > tsuchidango\ ;
+混合物 > kongoubutsu\ ;
+軍楽長 > gungakuchou\ ;
+法律上 > houritsujou\ ;
+畜犬税 > chikukenzei\ ;
+梁山泊 > ryouzanpaku\ ;
+彫塑術 > chousojutsu\ ;
+代用食 > daiyoushoku\ ;
+並木道 > namikimichi\ ;
+帳本人 > chouhon''nin\ ;
+宝石箱 > housekibako\ ;
+卒業後 > sotsugyougo\ ;
+口角力 > kuchidzumou\ ;
+事業主 > jigyounushi\ ;
+自虐的 > jigyakuteki\ ;
+下相談 > shitasoudan\ ;
+禿頭病 > tokutoubyou\ ;
+弾着点 > danchakuten\ ;
+五月病 > gogatsubyou\ ;
+弾力性 > danryokusei\ ;
+核爆弾 > kakubakudan\ ;
+並木路 > namikimichi\ ;
+商業街 > shougyougai\ ;
+頭文字 > kashiramoji\ ;
+縮緬紙 > chirimenshi\ ;
+截断面 > setsudanmen\ ;
+南京虫 > nankinmushi\ ;
+裁決書 > saiketsusho\ ;
+核燃料 > kakunenryou\ ;
+逐字訳 > chikujiyaku\ ;
+一徹者 > ittetsumono\ ;
+御協力 > gokyouryoku\ ;
+係属中 > keizokuchuu\ ;
+病中吟 > byouchuugin\ ;
+極限値 > kyokugenchi\ ;
+教育学 > kyouikugaku\ ;
+電話室 > denwashitsu\ ;
+遠心力 > enshinryoku\ ;
+宮崎県 > miyazakiken\ ;
+商工業 > shoukougyou\ ;
+衝動的 > shoudouteki\ ;
+胆石症 > tansekishou\ ;
+輸出品 > yushutsuhin\ ;
+三眠蚕 > sanminkaiko\ ;
+間欠泉 > kanketsusen\ ;
+天龍川 > tenryuukawa\ ;
+教習生 > kyoushuusei\ ;
+隣接地 > rinsetsuchi\ ;
+発生率 > hasseiritsu\ ;
+葡萄畑 > budoubatake\ ;
+境界標 > kyoukaihyou\ ;
+空軍力 > kuugunryoku\ ;
+交声曲 > kouseikyoku\ ;
+現内閣 > gen''naikaku\ ;
+占星術 > senseijutsu\ ;
+香辛料 > koushinryou\ ;
+町道場 > machidoujou\ ;
+動力源 > douryokugen\ ;
+恒等式 > koutoushiki\ ;
+討伐軍 > toubatsugun\ ;
+表看板 > omotekanban\ ;
+濃青色 > nouseishoku\ ;
+殺人犯 > satsujinhan\ ;
+残念賞 > zan''nenshou\ ;
+脳充血 > noujuuketsu\ ;
+食人種 > shokujinshu\ ;
+赤褐色 > sekkasshoku\ ;
+興信録 > koushinroku\ ;
+電熱器 > den''netsuki\ ;
+作曲者 > sakkyokusha\ ;
+商標権 > shouhyouken\ ;
+常識人 > joushikijin\ ;
+観客層 > kankyakusou\ ;
+一重桜 > hitoezakura\ ;
+先先月 > sensengetsu\ ;
+地動説 > chidousetsu\ ;
+白亜質 > hakuashitsu\ ;
+膠着剤 > kouchakuzai\ ;
+一段落 > ichidanraku\ ;
+軍用鳩 > gun''youbato\ ;
+俗文学 > zokubungaku\ ;
+電圧計 > den''atsukei\ ;
+薬局方 > yakkyokuhou\ ;
+法制局 > houseikyoku\ ;
+薬学者 > yakugakusha\ ;
+係争物 > keisoubutsu\ ;
+鐘乳洞 > shounyuudou\ ;
+脱毛剤 > datsumouzai\ ;
+管轄権 > kankatsuken\ ;
+借用書 > shakuyousho\ ;
+奉公口 > houkouguchi\ ;
+放送局 > housoukyoku\ ;
+黄白色 > kohakushoku\ ;
+羽織袴 > haorihakama\ ;
+除幕式 > jomakushiki\ ;
+強制的 > kyouseiteki\ ;
+強心剤 > kyoushinzai\ ;
+生活環 > seikatsukan\ ;
+春一番 > haruichiban\ ;
+十八番 > juuhachiban\ ;
+終身官 > shuushinkan\ ;
+月長石 > getchouseki\ ;
+教職員 > kyoushokuin\ ;
+送別会 > soubetsukai\ ;
+出品国 > shuppinkoku\ ;
+南京町 > nankinmachi\ ;
+道徳的 > doutokuteki\ ;
+商業界 > shougyoukai\ ;
+収納額 > shuunougaku\ ;
+鼎立戦 > teiritsusen\ ;
+原則的 > gensokuteki\ ;
+傍聴料 > bouchouryou\ ;
+千円札 > sen''ensatsu\ ;
+定収入 > teishuunyuu\ ;
+六大州 > rokudaishuu\ ;
+割引券 > waribikiken\ ;
+住生活 > juuseikatsu\ ;
+前立腺 > zenritsusen\ ;
+写真集 > shashinshuu\ ;
+百万遍 > hyakumanben\ ;
+蝉時雨 > semishigure\ ;
+割引債 > waribikisai\ ;
+接着剤 > setchakuzai\ ;
+手術台 > shujutsudai\ ;
+防火扉 > boukatobira\ ;
+乱入者 > ran''nyuusha\ ;
+計画的 > keikakuteki\ ;
+調印式 > chouinshiki\ ;
+逆転層 > gyakutensou\ ;
+黄色虫 > koganemushi\ ;
+生活法 > seikatsuhou\ ;
+粘土質 > nendoshitsu\ ;
+逆輸入 > gyakuyunyuu\ ;
+新興国 > shinkoukoku\ ;
+創造力 > souzouryoku\ ;
+合目的 > goumokuteki\ ;
+新人賞 > shinjinshou\ ;
+頚静脈 > keijoumyaku\ ;
+電報局 > denpoukyoku\ ;
+三幕物 > sanmakumono\ ;
+白木蓮 > hakumokuren\ ;
+商業港 > shougyoukou\ ;
+薬罐頭 > yakan''atama\ ;
+一里塚 > ichiridzuka\ ;
+終身刑 > shuushinkei\ ;
+動力学 > dourikigaku\ ;
+節料理 > sechiryouri\ ;
+出品人 > shuppin''nin\ ;
+傍聴席 > bouchouseki\ ;
+不適切 > futekisetsu\ ;
+学際的 > gakusaiteki\ ;
+竜骨座 > ryuukotsuza\ ;
+仮条約 > karijouyaku\ ;
+階級章 > kaikyuushou\ ;
+抵抗力 > teikouryoku\ ;
+森林学 > shinringaku\ ;
+百万言 > hyakumangen\ ;
+化粧下 > keshoushita\ ;
+赤提灯 > akachouchin\ ;
+創造主 > souzounushi\ ;
+候孝賢 > houshaushen\ ;
+薬缶頭 > yakan''atama\ ;
+冬将軍 > fuyushougun\ ;
+独習書 > dokushuusho\ ;
+公証料 > koushouryou\ ;
+綿織物 > men''orimono\ ;
+先入主 > sen''nyuushu\ ;
+最終的 > saishuuteki\ ;
+本建築 > honkenchiku\ ;
+狗尾草 > enokorogusa\ ;
+行商人 > gyoushounin\ ;
+切分法 > setsubunhou\ ;
+小百姓 > kobyakushou\ ;
+心丈夫 > kokorojoubu\ ;
+鳥類学 > chouruigaku\ ;
+弱年者 > jakunenmono\ ;
+中隊長 > chuutaichou\ ;
+相談役 > soudan''yaku\ ;
+食事時 > shokujidoki\ ;
+八面体 > hachimentai\ ;
+原判決 > genhanketsu\ ;
+極地圏 > kyokuchiken\ ;
+監察官 > kansatsukan\ ;
+白玉粉 > shiratamako\ ;
+商業文 > shougyoubun\ ;
+天動説 > tendousetsu\ ;
+辻説法 > tsujiseppou\ ;
+煉丹術 > rentanjutsu\ ;
+西海岸 > nishikaigan\ ;
+急上昇 > kyuujoushou\ ;
+宝石商 > housekishou\ ;
+換算率 > kansanritsu\ ;
+建設者 > kensetsusha\ ;
+北々西 > hokuhokusei\ ;
+銀婚式 > ginkonshiki\ ;
+両脚器 > ryoukyakuki\ ;
+原動力 > gendouryoku\ ;
+俄景気 > niwakageiki\ ;
+悪戯者 > itazuramono\ ;
+大福帳 > daifukuchou\ ;
+時節柄 > jisetsugara\ ;
+吸血鬼 > kyuuketsuki\ ;
+糖尿病 > tounyoubyou\ ;
+転任先 > ten''ninsaki\ ;
+支配力 > shihairyoku\ ;
+単音節 > tan''onsetsu\ ;
+新聞種 > shinbundane\ ;
+弟々子 > otoutodeshi\ ;
+低丘陵 > teikyuuryou\ ;
+国際的 > kokusaiteki\ ;
+郷土色 > kyoudoshoku\ ;
+竜田姫 > tatsutahime\ ;
+小学館 > shougakukan\ ;
+使節団 > shisetsudan\ ;
+消息文 > shousokubun\ ;
+緋衣草 > higoromosou\ ;
+主計局 > shukeikyoku\ ;
+道徳心 > doutokushin\ ;
+未決囚 > miketsushuu\ ;
+愛唱曲 > aishoukyoku\ ;
+山棟蛇 > yamakagashi\ ;
+偵察隊 > teisatsutai\ ;
+発信側 > hasshingawa\ ;
+遠山里 > tooyamazato\ ;
+神経痛 > shinkeitsuu\ ;
+神経症 > shinkeishou\ ;
+神経病 > shinkeibyou\ ;
+定着液 > teichakueki\ ;
+弁証学 > benshougaku\ ;
+発信人 > hasshin''nin\ ;
+緑地帯 > ryokuchitai\ ;
+生活圏 > seikatsuken\ ;
+熱伝導 > netsudendou\ ;
+道徳学 > doutokugaku\ ;
+適格者 > tekikakusha\ ;
+図書室 > toshoshitsu\ ;
+観音様 > kan''nonsama\ ;
+結婚式 > kekkonshiki\ ;
+西洋式 > seiyoushiki\ ;
+男冥利 > otokomyouri\ ;
+上腕骨 > jouwankotsu\ ;
+生命力 > seimeiryoku\ ;
+硬骨漢 > koukotsukan\ ;
+商業地 > shougyouchi\ ;
+万年床 > man''nendoko\ ;
+講釈師 > koushakushi\ ;
+淡黄色 > tankoushoku\ ;
+三幅対 > sanpukutsui\ ;
+蛋白尿 > tanpakunyou\ ;
+刺激臭 > shigekishuu\ ;
+草鞋虫 > warajimushi\ ;
+金融業 > kin''yuugyou\ ;
+菜種油 > nataneabura\ ;
+雛人形 > hinaningyou\ ;
+無着陸 > muchakuriku\ ;
+上分別 > joufunbetsu\ ;
+大動脈 > daidoumyaku\ ;
+神無月 > kan''nadzuki\ ;
+幼馴染 > osananajimi\ ;
+円周率 > enshuuritsu\ ;
+商業史 > shougyoushi\ ;
+山岳病 > sangakubyou\ ;
+親任官 > shin''ninkan\ ;
+追跡者 > tsuisekisha\ ;
+発会式 > hakkaishiki\ ;
+天道虫 > tentoumushi\ ;
+床面積 > yukamenseki\ ;
+狸親父 > tanukioyaji\ ;
+木石漢 > bokusekikan\ ;
+国防省 > kokuboushou\ ;
+国文学 > kokubungaku\ ;
+民俗学 > minzokugaku\ ;
+生殖腺 > seishokusen\ ;
+自殺的 > jisatsuteki\ ;
+造物主 > zoubutsushu\ ;
+用兵術 > youheijutsu\ ;
+退職金 > taishokukin\ ;
+彎月状 > wangetsujou\ ;
+生没年 > seibotsunen\ ;
+単一性 > tan''itsusei\ ;
+持続力 > jizokuryoku\ ;
+新聞業 > shinbungyou\ ;
+神経核 > shinkeikaku\ ;
+枢軸国 > suujikukoku\ ;
+三色版 > sanshokuban\ ;
+直観的 > chokkanteki\ ;
+中間駅 > chuukan''eki\ ;
+能装束 > noushouzoku\ ;
+結晶学 > kesshougaku\ ;
+解決法 > kaiketsuhou\ ;
+警戒色 > keikaishoku\ ;
+一毛作 > ichimousaku\ ;
+温熱性 > on''netsusei\ ;
+内反脚 > naihankyaku\ ;
+延縄漁 > haenawaryou\ ;
+直方体 > chokuhoutai\ ;
+家族達 > kazokutachi\ ;
+刺激的 > shigekiteki\ ;
+交換局 > koukankyoku\ ;
+七年忌 > shichinenki\ ;
+悪戯書 > itazuragaki\ ;
+千人針 > sen''ninbari\ ;
+消毒液 > shoudokueki\ ;
+油砥石 > aburatoishi\ ;
+狐饂飩 > kitsuneudon\ ;
+合州国 > gasshuukoku\ ;
+濃褐色 > noukasshoku\ ;
+材木商 > zaimokushou\ ;
+原色版 > genshokuban\ ;
+単項式 > tankoushiki\ ;
+土気色 > tsuchikeiro\ ;
+付属節 > fuzokusetsu\ ;
+一番鶏 > ichibandori\ ;
+紋章学 > monshougaku\ ;
+真只中 > mattadanaka\ ;
+出席者 > shussekisha\ ;
+門前町 > monzenmachi\ ;
+教訓的 > kyoukunteki\ ;
+貯金局 > chokinkyoku\ ;
+官僚臭 > kanryoushuu\ ;
+蹄鉄工 > teitetsukou\ ;
+神経学 > shinkeigaku\ ;
+表玄関 > omotegenkan\ ;
+出張店 > shutchouten\ ;
+旅行鞄 > ryokoukaban\ ;
+北々東 > hokuhokutou\ ;
+減塩食 > gen''enshoku\ ;
+団体客 > dantaikyaku\ ;
+心霊学 > shinreigaku\ ;
+大正琴 > taishougoto\ ;
+欠勤率 > kekkinritsu\ ;
+定着剤 > teichakuzai\ ;
+入場料 > nyuujouryou\ ;
+逐語訳 > chikugoyaku\ ;
+思考力 > shikouryoku\ ;
+乳用牛 > nyuuyougyuu\ ;
+正覚坊 > shougakubou\ ;
+緑藻類 > ryokusourui\ ;
+目撃者 > mokugekisha\ ;
+黒曜石 > kokuyouseki\ ;
+満一年 > man''ichinen\ ;
+没我的 > botsugateki\ ;
+含塵率 > ganjinritsu\ ;
+退職者 > taishokusha\ ;
+蔵屋敷 > kurayashiki\ ;
+再建築 > saikenchiku\ ;
+献身的 > kenshinteki\ ;
+妨害物 > bougaibutsu\ ;
+点眼薬 > tengan''yaku\ ;
+元首相 > motoshushou\ ;
+恐水病 > kyousuibyou\ ;
+密売品 > mitsubaihin\ ;
+石川県 > ishikawaken\ ;
+副会長 > fukukaichou\ ;
+発明者 > hatsumeisha\ ;
+創作的 > sousakuteki\ ;
+大逆罪 > taigyakuzai\ ;
+一元的 > ichigenteki\ ;
+百面相 > hyakumensou\ ;
+不侵略 > fushinryaku\ ;
+小学生 > shougakusei\ ;
+付属物 > fuzokubutsu\ ;
+勉強中 > benkyouchuu\ ;
+写真帳 > shashinchou\ ;
+一目散 > ichimokusan\ ;
+風力計 > fuuryokukei\ ;
+活用形 > katsuyoukei\ ;
+自動扉 > jidoutobira\ ;
+会社立 > kaisharitsu\ ;
+見目形 > mimekatachi\ ;
+鑑別所 > kanbetsusho\ ;
+仮契約 > karikeiyaku\ ;
+核拡散 > kakukakusan\ ;
+周辺国 > shuuhenkoku\ ;
+必然性 > hitsuzensei\ ;
+黒猩猩 > kuroshoujou\ ;
+両替商 > ryougaeshou\ ;
+脱色剤 > dasshokuzai\ ;
+右心室 > ushinshitsu\ ;
+中央口 > chuuouguchi\ ;
+真菌症 > shinkinshou\ ;
+圧力波 > atsuryokuha\ ;
+全国的 > zenkokuteki\ ;
+縄梯子 > nawabashigo\ ;
+我物顔 > wagamonogao\ ;
+食堂車 > shokudousha\ ;
+善知識 > zenchishiki\ ;
+一円札 > ichiensatsu\ ;
+視聴覚 > shichoukaku\ ;
+耐熱鋼 > tainetsukou\ ;
+革命的 > kakumeiteki\ ;
+小休止 > shoukyuushi\ ;
+好取組 > koutorikumi\ ;
+博奕宿 > bakuchiyado\ ;
+脳貧血 > nouhinketsu\ ;
+悪々戯 > waruitazura\ ;
+洗礼式 > senreishiki\ ;
+甲骨文 > koukotsubun\ ;
+日銀券 > nichiginken\ ;
+貧民窟 > hinminkutsu\ ;
+奉献物 > houkenbutsu\ ;
+実業家 > jitsugyouka\ ;
+胸算用 > munezan''you\ ;
+冬木立 > fuyukodachi\ ;
+結紮糸 > kessatsushi\ ;
+逆宣伝 > gyakusenden\ ;
+鮮紅色 > senkoushoku\ ;
+入国税 > nyuukokuzei\ ;
+拡大鏡 > kakudaikyou\ ;
+道楽者 > dourakumono\ ;
+女房役 > nyoubouyaku\ ;
+条約国 > jouyakukoku\ ;
+代替物 > daitaibutsu\ ;
+混凝土 > konkurizeto\ ;
+消毒剤 > shoudokuzai\ ;
+万能薬 > man''nouyaku\ ;
+信憑性 > shinpyousei\ ;
+列伝体 > retsudentai\ ;
+口可笑 > kuchiokashi\ ;
+実生活 > jisseikatsu\ ;
+百姓家 > hyakushouya\ ;
+一局部 > ichikyokubu\ ;
+間一髪 > kan''ippatsu\ ;
+年格好 > toshikakkou\ ;
+鎧一具 > yoroiichigu\ ;
+町人物 > chouninmono\ ;
+通訳官 > tsuuyakukan\ ;
+必要悪 > hitsuyouaku\ ;
+鉄道網 > tetsudoumou\ ;
+原産物 > gensanbutsu\ ;
+器楽曲 > kigakukyoku\ ;
+必要性 > hitsuyousei\ ;
+半面識 > hanmenshiki\ ;
+夢心地 > yumegokochi\ ;
+今週中 > konshuuchuu\ ;
+話下手 > hanashibeta\ ;
+防蝕剤 > boushokuzai\ ;
+小乗的 > shoujouteki\ ;
+立脚点 > rikkyakuten\ ;
+不信実 > fushinjitsu\ ;
+争奪戦 > soudatsusen\ ;
+商学士 > shougakushi\ ;
+上屋敷 > kamiyashiki\ ;
+若大将 > wakadaishou\ ;
+操舵室 > soudashitsu\ ;
+成人式 > seijinshiki\ ;
+新面目 > shinmenmoku\ ;
+注文服 > chuumonfuku\ ;
+上棟式 > joutoushiki\ ;
+赤銅色 > shakudouiro\ ;
+向学心 > kougakushin\ ;
+渇望者 > katsubousha\ ;
+汽缶室 > kikanshitsu\ ;
+執達吏 > shittatsuri\ ;
+乗心地 > norigokochi\ ;
+弔祭料 > chousairyou\ ;
+刺戟的 > shigekiteki\ ;
+下検分 > shitakenbun\ ;
+開催式 > kaisaishiki\ ;
+田舎娘 > inakamusume\ ;
+箱火鉢 > hakohibachi\ ;
+副首相 > fukushushou\ ;
+敵愾心 > tekigaishin\ ;
+釈空海 > shakukuukai\ ;
+北北西 > hokuhokusei\ ;
+組織票 > soshikihyou\ ;
+出身者 > shusshinsha\ ;
+仕事量 > shigotoryou\ ;
+半月形 > hangetsukei\ ;
+分子説 > bunshisetsu\ ;
+半月弁 > hangetsuben\ ;
+正答率 > seitouritsu\ ;
+季節的 > kisetsuteki\ ;
+原子説 > genshisetsu\ ;
+神嘗祭 > kan''namesai\ ;
+桧舞台 > hinokibutai\ ;
+対局者 > taikyokusha\ ;
+貝殻骨 > kaigarabone\ ;
+千両箱 > senryoubako\ ;
+純収入 > junshuunyuu\ ;
+物理的 > butsuriteki\ ;
+林産物 > rinsanbutsu\ ;
+突然死 > totsuzenshi\ ;
+証取法 > shoutorihou\ ;
+歴史的 > rekishiteki\ ;
+組織的 > soshikiteki\ ;
+贈呈式 > zouteishiki\ ;
+積載量 > sekisairyou\ ;
+自発的 > jihatsuteki\ ;
+土石流 > dosekiryuu\ ;
+市町村 > shichouson\ ;
+食塩水 > shokuensui\ ;
+潤滑油 > junkatsuyu\ ;
+流星群 > ryuuseigun\ ;
+契約金 > keiyakukin\ ;
+決議文 > ketsugibun\ ;
+蒸留酒 > jouryuushu\ ;
+針葉樹 > shin''youju\ ;
+猛勉強 > moubenkyou\ ;
+深刻化 > shinkokuka\ ;
+所得顔 > tokoroegao\ ;
+御客様 > okyakusama\ ;
+蔵書票 > zoushohyou\ ;
+人工雪 > jinkouyuki\ ;
+同腹仔 > doufukushi\ ;
+射倖心 > shakoushin\ ;
+博士号 > hakushigou\ ;
+入漁者 > nyuugyosha\ ;
+別除権 > betsujoken\ ;
+戦闘服 > sentoufuku\ ;
+養鶏業 > youkeigyou\ ;
+議決権 > giketsuken\ ;
+入園料 > nyuuenryou\ ;
+優先的 > yuusenteki\ ;
+同一視 > douitsushi\ ;
+難行道 > nangyoudou\ ;
+遺失品 > ishitsuhin\ ;
+食文化 > shokubunka\ ;
+民主国 > minshukoku\ ;
+再帰熱 > saikinetsu\ ;
+炭化物 > tankabutsu\ ;
+断片的 > danpenteki\ ;
+溺死体 > dekishitai\ ;
+海洋学 > kaiyougaku\ ;
+歯神経 > shishinkei\ ;
+反抗的 > hankouteki\ ;
+開催国 > kaisaikoku\ ;
+御両親 > goryoushin\ ;
+修正液 > shuuseieki\ ;
+厚生省 > kouseishou\ ;
+高級車 > koukyuusha\ ;
+軟文学 > nanbungaku\ ;
+試作品 > shisakuhin\ ;
+観覧料 > kanranryou\ ;
+不信任 > fushin''nin\ ;
+三脚架 > sankyakuka\ ;
+変態的 > hentaiteki\ ;
+乞高評 > koukouhyou\ ;
+毛氈苔 > mousengoke\ ;
+三尺帯 > sanjakuobi\ ;
+応急策 > oukyuusaku\ ;
+人道的 > jindouteki\ ;
+海酸漿 > umihoozuki\ ;
+承認状 > shouninjou\ ;
+随筆家 > zuihitsuka\ ;
+核融合 > kakuyuugou\ ;
+抽選券 > chuusenken\ ;
+免許証 > menkyoshou\ ;
+美容術 > biyoujutsu\ ;
+裏貸屋 > uragashiya\ ;
+防毒面 > boudokumen\ ;
+弁慶蟹 > benkeigani\ ;
+二線式 > nisenshiki\ ;
+必要事 > hitsuyouji\ ;
+発明家 > hatsumeika\ ;
+独裁者 > dokusaisha\ ;
+眺望権 > choubouken\ ;
+内通者 > naitsuusha\ ;
+中長期 > chuuchouki\ ;
+現象論 > genshouron\ ;
+魔術師 > majutsushi\ ;
+国土庁 > kokudochou\ ;
+積分法 > sekibunhou\ ;
+信号灯 > shingoutou\ ;
+半陰陽 > han''in''you\ ;
+平面鏡 > heimenkyou\ ;
+宅配便 > takuhaibin\ ;
+萎縮症 > ishukushou\ ;
+天目山 > tenmokuzan\ ;
+偏平足 > henpeisoku\ ;
+法学士 > hougakushi\ ;
+発煙筒 > hatsuentou\ ;
+側頭葉 > sokutouyou\ ;
+天皇杯 > ten''nouhai\ ;
+細胞核 > saiboukaku\ ;
+独擅場 > dokusenjou\ ;
+製鋼業 > seikougyou\ ;
+光熱費 > kounetsuhi\ ;
+愛郷心 > aikyoushin\ ;
+生産高 > seisandaka\ ;
+海水浴 > kaisuiyoku\ ;
+仮繃帯 > karihoutai\ ;
+及第者 > kyuudaisha\ ;
+米陸軍 > beirikugun\ ;
+注文品 > chuumonhin\ ;
+恒常的 > koujouteki\ ;
+人形師 > ningyoushi\ ;
+榴散弾 > ryuusandan\ ;
+発電機 > hatsudenki\ ;
+旧市街 > kyuushigai\ ;
+観覧席 > kanranseki\ ;
+実用化 > jitsuyouka\ ;
+考現学 > kougengaku\ ;
+開催中 > kaisaichuu\ ;
+産業界 > sangyoukai\ ;
+庶民劇 > shomingeki\ ;
+不仕末 > fushimatsu\ ;
+呆気者 > utsukemono\ ;
+解剖学 > kaibougaku\ ;
+仮埋葬 > karimaisou\ ;
+釣道具 > tsuridougu\ ;
+生産額 > seisangaku\ ;
+悲劇的 > higekiteki\ ;
+北氷洋 > hoppyouyou\ ;
+十二月 > juunigatsu\ ;
+同学年 > dougakunen\ ;
+現代的 > gendaiteki\ ;
+夢判断 > yumehandan\ ;
+岳友会 > gakuyuukai\ ;
+勘定尻 > kanjoujiri\ ;
+合宿所 > gasshukujo\ ;
+蠱惑的 > kowakuteki\ ;
+空間軸 > kuukanjiku\ ;
+中間層 > chuukansou\ ;
+特級酒 > tokkyuushu\ ;
+署名国 > shomeikoku\ ;
+演劇的 > engekiteki\ ;
+交戦国 > kousenkoku\ ;
+外形的 > gaikeiteki\ ;
+中間子 > chuukanshi\ ;
+整流子 > seiryuushi\ ;
+優先株 > yuusenkabu\ ;
+短兵急 > tanpeikyuu\ ;
+弁慶縞 > benkeijima\ ;
+牡丹雪 > botan''yuki\ ;
+斜格性 > shakakusei\ ;
+高角砲 > koukakuhou\ ;
+歴年齢 > rekinenrei\ ;
+無分別 > mufunbetsu\ ;
+刺戟性 > shigekisei\ ;
+通行税 > tsuukouzei\ ;
+超自然 > choushizen\ ;
+削氷機 > sakuhyouki\ ;
+契約者 > keiyakusha\ ;
+夜盗虫 > yotoumushi\ ;
+安全率 > anzenritsu\ ;
+原子症 > genshishou\ ;
+原子病 > genshibyou\ ;
+季節感 > kisetsukan\ ;
+旧勘定 > kyuukanjou\ ;
+仮調印 > karichouin\ ;
+乗車賃 > joushachin\ ;
+防虫剤 > bouchuuzai\ ;
+核戦争 > kakusensou\ ;
+発売日 > hatsubaibi\ ;
+定足数 > teisokusuu\ ;
+里神楽 > satokagura\ ;
+薩摩芋 > satsumaimo\ ;
+姦通罪 > kantsuuzai\ ;
+山林学 > sanringaku\ ;
+副議長 > fukugichou\ ;
+航空病 > koukuubyou\ ;
+漢越音 > kan''etsuon\ ;
+出入口 > deiriguchi\ ;
+仮納税 > karinouzei\ ;
+総合的 > sougouteki\ ;
+仲裁者 > chuusaisha\ ;
+出展者 > shuttensha\ ;
+活字体 > katsujitai\ ;
+肘鉄砲 > hijideppou\ ;
+対蹠地 > taisekichi\ ;
+廻漕業 > kaisougyou\ ;
+低障碍 > teishougai\ ;
+残余額 > zan''yogaku\ ;
+治療法 > chiryouhou\ ;
+機械油 > kikaiabura\ ;
+自発性 > jihatsusei\ ;
+信号手 > shingoushu\ ;
+栃木県 > tochigiken\ ;
+調査票 > chousahyou\ ;
+編年史 > hen''nenshi\ ;
+土着民 > dochakumin\ ;
+進呈本 > shinteibon\ ;
+瑞宝章 > zuihoushou\ ;
+落選者 > rakusensha\ ;
+内勘定 > uchikanjou\ ;
+奉納額 > hounougaku\ ;
+細胞学 > saibougaku\ ;
+果実店 > kajitsuten\ ;
+実時間 > jitsujikan\ ;
+入漁権 > nyuugyoken\ ;
+著作者 > chosakusha\ ;
+脱脂乳 > dasshinyuu\ ;
+祭祀料 > saishiryou\ ;
+内弁慶 > uchibenkei\ ;
+向上心 > koujoushin\ ;
+牧羊者 > bokuyousha\ ;
+参観人 > sankan''nin\ ;
+均一化 > kin''itsuka\ ;
+共同者 > kyoudousha\ ;
+明朝体 > minchoutai\ ;
+塩胡椒 > shiokoshou\ ;
+耐震性 > taishinsei\ ;
+新西蘭 > nyūjīrando\ ;
+一枚貝 > ichimaigai\ ;
+乱暴者 > ranboumono\ ;
+各一部 > kakuichibu\ ;
+陰日向 > kagehinata\ ;
+紫宸殿 > shishinden\ ;
+幽霊株 > yuureikabu\ ;
+所得者 > shotokusha\ ;
+軍事力 > gunjiryoku\ ;
+勝負事 > shoubugoto\ ;
+給水車 > kyuusuisha\ ;
+細胞壁 > saibouheki\ ;
+可逆性 > kagyakusei\ ;
+懸賞金 > kenshoukin\ ;
+暦年齢 > rekinenrei\ ;
+含嗽薬 > gansouyaku\ ;
+見学者 > kengakusha\ ;
+優先席 > yuusenseki\ ;
+少数者 > shousuusha\ ;
+共同線 > kyoudousen\ ;
+及第点 > kyuudaiten\ ;
+分類表 > bunruihyou\ ;
+近眼鏡 > kingankyou\ ;
+関数族 > kansuuzoku\ ;
+町村制 > chousonsei\ ;
+極悪人 > gokuakunin\ ;
+引受人 > hikiukenin\ ;
+編年体 > hen''nentai\ ;
+代願人 > daigan''nin\ ;
+有力馬 > yuuryokuba\ ;
+除雪車 > josetsusha\ ;
+大審院 > daishin''in\ ;
+税関長 > zeikanchou\ ;
+中間体 > chuukantai\ ;
+滋養物 > jiyoubutsu\ ;
+九工大 > kyuukoudai\ ;
+加湿器 > kashitsuki\ ;
+新訂版 > shinteiban\ ;
+十人力 > juuninriki\ ;
+下宿人 > geshukunin\ ;
+大業物 > oowazamono\ ;
+側面観 > sokumenkan\ ;
+現象界 > genshoukai\ ;
+追試験 > tsuishiken\ ;
+先天的 > sententeki\ ;
+建築家 > kenchikuka\ ;
+水量計 > suiryoukei\ ;
+親衛隊 > shin''eitai\ ;
+先天病 > sentenbyou\ ;
+繁殖期 > hanshokuki\ ;
+船幽霊 > funayuurei\ ;
+民族性 > minzokusei\ ;
+御了承 > goryoushou\ ;
+水蛇座 > mizuhebiza\ ;
+拝外的 > haigaiteki\ ;
+刺戟剤 > shigekizai\ ;
+所得税 > shotokuzei\ ;
+棉実油 > menjitsuyu\ ;
+勤続者 > kinzokusha\ ;
+天皇制 > ten''nousei\ ;
+喫煙車 > kitsuensha\ ;
+実習生 > jisshuusei\ ;
+体系的 > taikeiteki\ ;
+遊興税 > yuukyouzei\ ;
+修道士 > shuudoushi\ ;
+新教徒 > shinkyouto\ ;
+博覧会 > hakurankai\ ;
+前登録 > zentouroku\ ;
+東洋学 > touyougaku\ ;
+大将軍 > daishougun\ ;
+信号塔 > shingoutou\ ;
+原子核 > genshikaku\ ;
+大公国 > taikoukoku\ ;
+休息所 > kyuusokujo\ ;
+高障害 > koushougai\ ;
+求道者 > kyuudousha\ ;
+天守閣 > tenshukaku\ ;
+乾物屋 > kanbutsuya\ ;
+水鉄砲 > mizudeppou\ ;
+千三屋 > senmitsuya\ ;
+入港税 > nyuukouzei\ ;
+銀行業 > ginkougyou\ ;
+休泊所 > kyuuhakujo\ ;
+人工的 > jinkouteki\ ;
+聴視者 > choushisha\ ;
+両国語 > ryoukokugo\ ;
+高瀬舟 > takasebune\ ;
+組織名 > soshikimei\ ;
+同期式 > doukishiki\ ;
+大腸菌 > daichoukin\ ;
+半狂乱 > hankyouran\ ;
+贅沢品 > zeitakuhin\ ;
+一本道 > ipponmichi\ ;
+利潤率 > rijunritsu\ ;
+迫害者 > hakugaisha\ ;
+大極殿 > daigokuden\ ;
+重量感 > juuryoukan\ ;
+美学的 > bigakuteki\ ;
+写生帳 > shaseichou\ ;
+廃棄物 > haikibutsu\ ;
+電磁石 > denjishaku\ ;
+写生帖 > shaseichou\ ;
+造営物 > zoueibutsu\ ;
+技術面 > gijutsumen\ ;
+仕置者 > shiokimono\ ;
+時刻表 > jikokuhyou\ ;
+毒科学 > dokukagaku\ ;
+直行便 > chokkoubin\ ;
+手内職 > tenaishoku\ ;
+旅行先 > ryokousaki\ ;
+核弾頭 > kakudantou\ ;
+空集合 > kuushuugou\ ;
+特許料 > tokkyoryou\ ;
+主情的 > shujouteki\ ;
+更衣室 > kouishitsu\ ;
+会席膳 > kaisekizen\ ;
+千一夜 > sen''ichiya\ ;
+真田紐 > sanadahimo\ ;
+道学者 > dougakusha\ ;
+揮発性 > kihatsusei\ ;
+出資金 > shusshikin\ ;
+牧羊犬 > bokuyouken\ ;
+蒸留水 > jouryuusui\ ;
+等圧線 > touatsusen\ ;
+毒味役 > dokumiyaku\ ;
+優良店 > yuuryouten\ ;
+内芸者 > uchigeisha\ ;
+悪達者 > warudassha\ ;
+三面鏡 > sanmenkyou\ ;
+狸蕎麦 > tanukisoba\ ;
+裏書人 > uragakinin\ ;
+特大号 > tokudaigou\ ;
+組織体 > soshikitai\ ;
+現実化 > genjitsuka\ ;
+多目的 > tamokuteki\ ;
+将来性 > shouraisei\ ;
+一人腹 > hitoribara\ ;
+画一化 > kakuitsuka\ ;
+重金属 > juukinzoku\ ;
+立会人 > tachiainin\ ;
+歴史上 > rekishijou\ ;
+製鉄所 > seitetsujo\ ;
+一人者 > hitorimono\ ;
+遮断壁 > shadanpeki\ ;
+特売場 > tokubaijou\ ;
+告知板 > kokuchiban\ ;
+沖積期 > chuusekiki\ ;
+仮記入 > karikinyuu\ ;
+修道会 > shuudoukai\ ;
+桟梯子 > sanbashigo\ ;
+番号札 > bangoufuda\ ;
+少数点 > shousuuten\ ;
+山猫座 > yamanekoza\ ;
+寝台券 > shindaiken\ ;
+水銀柱 > suiginchuu\ ;
+赤海亀 > akaumigame\ ;
+骨相学 > kossougaku\ ;
+大臼歯 > daikyuushi\ ;
+民族史 > minzokushi\ ;
+五稜郭 > goryoukaku\ ;
+扁平足 > henpeisoku\ ;
+契約書 > keiyakusho\ ;
+影法師 > kageboushi\ ;
+金剛石 > kongouseki\ ;
+特許庁 > tokkyochou\ ;
+特売品 > tokubaihin\ ;
+下請負 > shitaukeoi\ ;
+収穫期 > shuukakuki\ ;
+陸戦隊 > rikusentai\ ;
+給水管 > kyuusuikan\ ;
+神秘的 > shinpiteki\ ;
+重量噸 > juuryouton\ ;
+収穫時 > shuukakuji\ ;
+高圧縮 > kouasshuku\ ;
+著作権 > chosakuken\ ;
+代執行 > daishikkou\ ;
+限定的 > genteiteki\ ;
+高圧線 > kouatsusen\ ;
+仮採用 > karisaiyou\ ;
+改革者 > kaikakusha\ ;
+地下鉄 > chikatetsu\ ;
+尊王党 > son''noutou\ ;
+喫煙者 > kitsuensha\ ;
+土俵際 > dohyougiwa\ ;
+大山猫 > ooyamaneko\ ;
+航空学 > koukuugaku\ ;
+原材料 > genzairyou\ ;
+出産数 > shussansuu\ ;
+欄参照 > ransanshou\ ;
+出生数 > shusseisuu\ ;
+守備率 > shubiritsu\ ;
+文芸学 > bungeigaku\ ;
+紅冠鳥 > koukanchou\ ;
+初場所 > hatsubasho\ ;
+乳状液 > nyuujoueki\ ;
+単坐式 > tanzashiki\ ;
+在留民 > zairyuumin\ ;
+美顔術 > biganjutsu\ ;
+煮沸器 > shafutsuki\ ;
+優良品 > yuuryouhin\ ;
+戦術家 > senjutsuka\ ;
+仕事師 > shigotoshi\ ;
+無生物 > museibutsu\ ;
+雑文家 > zatsubunka\ ;
+同調者 > douchousha\ ;
+予約席 > yoyakuseki\ ;
+金石文 > kinsekibun\ ;
+練習船 > renshuusen\ ;
+測深機 > sokushinki\ ;
+発見料 > hakkenryou\ ;
+衒学者 > gengakusha\ ;
+小数点 > shousuuten\ ;
+引出物 > hikidemono\ ;
+開架式 > kaikashiki\ ;
+包含的 > houganteki\ ;
+合奏調 > gassouchou\ ;
+共和国 > kyouwakoku\ ;
+審判員 > shinpan''in\ ;
+清朝体 > seichoutai\ ;
+表日本 > omotenihon\ ;
+現代劇 > gendaigeki\ ;
+即効薬 > sokkouyaku\ ;
+日運動 > nichiundou\ ;
+職階制 > shokkaisei\ ;
+前車軸 > zenshajiku\ ;
+上昇線 > joushousen\ ;
+機密性 > kimitsusei\ ;
+明細表 > meisaihyou\ ;
+修辞学 > shuujigaku\ ;
+名誉職 > meiyoshoku\ ;
+四天王 > shiten''nou\ ;
+人相学 > ninsougaku\ ;
+授業料 > jugyouryou\ ;
+鉛中毒 > enchuudoku\ ;
+治療代 > chiryoudai\ ;
+帯黄色 > taioushoku\ ;
+起工式 > kikoushiki\ ;
+取得者 > shutokusha\ ;
+悪平等 > akubyoudou\ ;
+朱子学 > shushigaku\ ;
+軽金属 > keikinzoku\ ;
+健脚家 > kenkyakuka\ ;
+先覚者 > senkakusha\ ;
+不整脈 > fuseimyaku\ ;
+仲間内 > nakamauchi\ ;
+将来像 > shouraizou\ ;
+低教会 > teikyoukai\ ;
+性衝動 > seishoudou\ ;
+紙芝居 > kamishibai\ ;
+作成者 > sakuseisha\ ;
+回春剤 > kaishunzai\ ;
+消費量 > shouhiryou\ ;
+並製品 > namiseihin\ ;
+専有権 > sen''yuuken\ ;
+乗馬靴 > joubagutsu\ ;
+出資者 > shusshisha\ ;
+化石学 > kasekigaku\ ;
+聴診器 > choushinki\ ;
+猩猩蠅 > shoujoubae\ ;
+乱数表 > ransuuhyou\ ;
+埋立地 > umetatechi\ ;
+共同性 > kyoudousei\ ;
+熟練者 > jukurensha\ ;
+東北東 > touhokutou\ ;
+生体膜 > seitaimaku\ ;
+民衆駅 > minshuueki\ ;
+宇宙食 > uchuushoku\ ;
+日光浴 > nikkouyoku\ ;
+代数学 > daisuugaku\ ;
+能役者 > nouyakusha\ ;
+沖積土 > chuusekido\ ;
+引力圏 > inryokuken\ ;
+中折帽 > nakaorebou\ ;
+非活動 > hikatsudou\ ;
+不始末 > fushimatsu\ ;
+有功章 > yuukoushou\ ;
+投票者 > touhyousha\ ;
+攻撃隊 > kougekitai\ ;
+報告者 > houkokusha\ ;
+発表者 > happyousha\ ;
+惣管領 > soukanryou\ ;
+選択肢 > sentakushi\ ;
+技術者 > gijutsusha\ ;
+進歩的 > shinpoteki\ ;
+埋蔵量 > maizouryou\ ;
+仕事台 > shigotodai\ ;
+性成熟 > seiseijuku\ ;
+永年間 > naganenkan\ ;
+背教者 > haikyousha\ ;
+手工業 > shukougyou\ ;
+申請者 > shinseisha\ ;
+演出家 > enshutsuka\ ;
+一安心 > hitoanshin\ ;
+行楽地 > kourakuchi\ ;
+食管法 > shokkanhou\ ;
+観測船 > kansokusen\ ;
+競合者 > kyougousha\ ;
+健脳剤 > ken''nouzai\ ;
+金剛杖 > kongoudzue\ ;
+謝肉祭 > shanikusai\ ;
+複写紙 > fukushashi\ ;
+週刊誌 > shuukanshi\ ;
+収税所 > shuuzeisho\ ;
+通行人 > tsuukounin\ ;
+鑑定料 > kanteiryou\ ;
+同一人 > douitsunin\ ;
+高潮線 > kouchousen\ ;
+浸透性 > shintousei\ ;
+血色素 > kesshikiso\ ;
+脳震盪 > noushintou\ ;
+賃貸人 > chintainin\ ;
+出生地 > shusseichi\ ;
+練習生 > renshuusei\ ;
+座席表 > zasekihyou\ ;
+観測者 > kansokusha\ ;
+地獄耳 > jigokumimi\ ;
+高級品 > koukyuuhin\ ;
+遠日点 > enjitsuten\ ;
+漢学者 > kangakusha\ ;
+牧場鳥 > makibatori\ ;
+死刑囚 > shikeishuu\ ;
+氷砂糖 > koorizatou\ ;
+共著者 > kyouchosha\ ;
+骨髄炎 > kotsuzuien\ ;
+放牧地 > houbokuchi\ ;
+白血球 > hakkekkyuu\ ;
+溶岩流 > youganryuu\ ;
+死傷者 > shishousha\ ;
+式部官 > shikibukan\ ;
+脆弱性 > zeijakusei\ ;
+給水栓 > kyuusuisen\ ;
+観測網 > kansokumou\ ;
+急行券 > kyuukouken\ ;
+御鞭撻 > gobentatsu\ ;
+緑十字 > ryokujuuji\ ;
+流線形 > ryuusenkei\ ;
+原始的 > genshiteki\ ;
+牧羊地 > bokuyouchi\ ;
+埼玉県 > saitamaken\ ;
+攻撃軍 > kougekigun\ ;
+敵艦隊 > tekikantai\ ;
+食器棚 > shokkidana\ ;
+伝送先 > densousaki\ ;
+稲荷鮨 > inarizushi\ ;
+復調器 > fukuchouki\ ;
+大病人 > daibyounin\ ;
+共労者 > kyourousha\ ;
+病原菌 > byougenkin\ ;
+朝鮮人 > chousenjin\ ;
+優越権 > yuuetsuken\ ;
+一人旅 > hitoritabi\ ;
+文学論 > bungakuron\ ;
+肉感的 > nikkanteki\ ;
+急行便 > kyuukoubin\ ;
+甲乙丙 > kouotsuhei\ ;
+中波長 > chuuhachou\ ;
+無職者 > mushokusha\ ;
+収税官 > shuuzeikan\ ;
+学部長 > gakubuchou\ ;
+超格子 > choukoushi\ ;
+闊葉樹 > katsuyouju\ ;
+共鳴者 > kyoumeisha\ ;
+無体物 > mutaibutsu\ ;
+浮気女 > uwakion''na\ ;
+登竜門 > touryuumon\ ;
+一義的 > ichigiteki\ ;
+第一条 > daiichijou\ ;
+内用薬 > naiyouyaku\ ;
+座標軸 > zahyoujiku\ ;
+策源地 > sakugenchi\ ;
+優生学 > yuuseigaku\ ;
+分隊長 > buntaichou\ ;
+前借金 > zenshakkin\ ;
+仲裁人 > chuusainin\ ;
+赤道祭 > sekidousai\ ;
+東北大 > touhokudai\ ;
+実証論 > jisshouron\ ;
+不燃物 > funenbutsu\ ;
+全強風 > zenkyoufuu\ ;
+小天地 > shoutenchi\ ;
+酢酸塩 > sakusan''en\ ;
+超音速 > chouonsoku\ ;
+密告者 > mikkokusha\ ;
+分類学 > bunruigaku\ ;
+彫金師 > choukinshi\ ;
+共通語 > kyoutsuugo\ ;
+神秘学 > shinhigaku\ ;
+一本橋 > ipponbashi\ ;
+第五列 > daigoretsu\ ;
+紳士用 > shinshiyou\ ;
+一枚岩 > ichimaiiwa\ ;
+流線型 > ryuusenkei\ ;
+一本槍 > ippon''yari\ ;
+困窮者 > konkyuusha\ ;
+冬支度 > fuyujitaku\ ;
+共同体 > kyoudoutai\ ;
+少数党 > shousuutou\ ;
+全民衆 > zenminshuu\ ;
+相反的 > souhanteki\ ;
+浮遊物 > fuyuubutsu\ ;
+労働省 > roudoushou\ ;
+孫息子 > magomusuko\ ;
+労働相 > roudoushou\ ;
+供養塚 > kuyoudzuka\ ;
+駆逐艦 > kuchikukan\ ;
+素人目 > shiroutome\ ;
+週刊紙 > shuukanshi\ ;
+精肉店 > seinikuten\ ;
+双殻類 > soukakurui\ ;
+奨励金 > shoureikin\ ;
+不精髭 > bushouhige\ ;
+能動的 > noudouteki\ ;
+約半分 > yakuhanbun\ ;
+網漁業 > amigyogyou\ ;
+授業中 > jugyouchuu\ ;
+岩石圏 > gansekiken\ ;
+役目柄 > yakumegara\ ;
+一本松 > ipponmatsu\ ;
+塩煎餅 > shiosenbei\ ;
+不如帰 > hototogisu\ ;
+南々西 > nan''nansei\ ;
+在学生 > zaigakusei\ ;
+剃刀砥 > kamisorido\ ;
+多発性 > tahatsusei\ ;
+優越感 > yuuetsukan\ ;
+特級品 > tokkyuuhin\ ;
+三角錐 > sankakusui\ ;
+必治薬 > hitchiyaku\ ;
+単振動 > tanshindou\ ;
+主張者 > shuchousha\ ;
+排他律 > haitaritsu\ ;
+優越性 > yuuetsusei\ ;
+形態学 > keitaigaku\ ;
+工業界 > kougyoukai\ ;
+工業用 > kougyouyou\ ;
+積乱雲 > sekiran''un\ ;
+拝観料 > haikanryou\ ;
+領海線 > ryoukaisen\ ;
+角分散 > kakubunsan\ ;
+不見識 > fukenshiki\ ;
+大学生 > daigakusei\ ;
+最北端 > saihokutan\ ;
+表面上 > hyoumenjou\ ;
+濃硫酸 > nouryuusan\ ;
+水化物 > suikabutsu\ ;
+超伝導 > choudendou\ ;
+文学者 > bungakusha\ ;
+粗目雪 > zarameyuki\ ;
+史学者 > shigakusha\ ;
+国民軍 > kokumingun\ ;
+咀嚼筋 > soshakukin\ ;
+住所録 > juushoroku\ ;
+駐停車 > chuuteisha\ ;
+植樹祭 > shokujusai\ ;
+角速度 > kakusokudo\ ;
+大赤斑 > daisekihan\ ;
+地中海 > chichuukai\ ;
+商売人 > shoubainin\ ;
+受取人 > uketorinin\ ;
+見本市 > mihon''ichi\ ;
+投票権 > touhyouken\ ;
+探照灯 > tanshoutou\ ;
+全勝軍 > zenshougun\ ;
+給水塔 > kyuusuitou\ ;
+潮干狩 > shiohigari\ ;
+牡羊座 > ohitsujiza\ ;
+収税人 > shuuzeinin\ ;
+選択権 > sentakuken\ ;
+採点表 > saitenhyou\ ;
+工工四 > kunkunshii\ ;
+記録的 > kirokuteki\ ;
+豆板銀 > mameitagin\ ;
+絶対量 > zettairyou\ ;
+東北人 > touhokujin\ ;
+海軍省 > kaigunshou\ ;
+金剛力 > kongouriki\ ;
+真暗闇 > makurayami\ ;
+検疫官 > ken''ekikan\ ;
+対象外 > taishougai\ ;
+新潟県 > niigataken\ ;
+闇再販 > yamisaihan\ ;
+動物愛 > doubutsuai\ ;
+使用量 > shiyouryou\ ;
+藁半紙 > warabanshi\ ;
+新開地 > shinkaichi\ ;
+非常識 > hijoushiki\ ;
+一面観 > ichimenkan\ ;
+管絃楽 > kangengaku\ ;
+最恵国 > saikeikoku\ ;
+慢性的 > manseiteki\ ;
+推計学 > suikeigaku\ ;
+副領事 > fukuryouji\ ;
+印刷者 > insatsusha\ ;
+耐火力 > taikaryoku\ ;
+友禅染 > yuuzenzome\ ;
+報告書 > houkokusho\ ;
+骨格筋 > kokkakukin\ ;
+藻塩草 > moshiogusa\ ;
+集大成 > shuutaisei\ ;
+慢性病 > manseibyou\ ;
+宣言的 > sengenteki\ ;
+六重奏 > rokujuusou\ ;
+音響学 > onkyougaku\ ;
+工業港 > kougyoukou\ ;
+総辞職 > soujishoku\ ;
+軍団長 > gundanchou\ ;
+年長者 > nenchousha\ ;
+総務局 > soumukyoku\ ;
+面相筆 > mensoufude\ ;
+散歩道 > sanpomichi\ ;
+示圧計 > shiatsukei\ ;
+世紀末 > seikimatsu\ ;
+第三国 > daisangoku\ ;
+投票数 > touhyousuu\ ;
+何箇月 > nankagetsu\ ;
+申請書 > shinseisho\ ;
+腹膜炎 > fukumakuen\ ;
+温泉町 > onsenmachi\ ;
+主動的 > shudouteki\ ;
+不文律 > fubunritsu\ ;
+弁当箱 > bentoubako\ ;
+天体学 > tentaigaku\ ;
+印刷紙 > insatsushi\ ;
+低成長 > teiseichou\ ;
+俯仰角 > fugyoukaku\ ;
+放熱器 > hounetsuki\ ;
+純良品 > junryouhin\ ;
+備後表 > bingoomote\ ;
+暗殺者 > ansatsusha\ ;
+平教員 > hirakyouin\ ;
+不覚者 > fukakumono\ ;
+成長点 > seichouten\ ;
+東横線 > touyokosen\ ;
+救済者 > kyuusaisha\ ;
+知能的 > chinouteki\ ;
+幻覚剤 > genkakuzai\ ;
+果物屋 > kudamonoya\ ;
+人格者 > jinkakusha\ ;
+金属間 > kinzokukan\ ;
+花柳病 > karyuubyou\ ;
+老大国 > routaikoku\ ;
+代言人 > daigen''nin\ ;
+心得顔 > kokoroegao\ ;
+代表者 > daihyousha\ ;
+主知的 > shuchiteki\ ;
+文学界 > bungakukai\ ;
+切断機 > setsudanki\ ;
+一時的 > ichijiteki\ ;
+交通網 > koutsuumou\ ;
+地球人 > chikyuujin\ ;
+地球上 > chikyuujou\ ;
+逆提案 > gyakuteian\ ;
+対数表 > taisuuhyou\ ;
+敗戦国 > haisenkoku\ ;
+印刷社 > insatsusha\ ;
+新製品 > shinseihin\ ;
+極距離 > kyokukyori\ ;
+熟練工 > jukurenkou\ ;
+色素体 > shikisotai\ ;
+丸砥石 > marutoishi\ ;
+同族会 > douzokukai\ ;
+経済的 > keizaiteki\ ;
+牛乳屋 > gyuunyuuya\ ;
+練習場 > renshuujou\ ;
+特製品 > tokuseihin\ ;
+不誠実 > fuseijitsu\ ;
+従来型 > juuraigata\ ;
+対象体 > taishoutai\ ;
+粉石鹸 > konasekken\ ;
+夜尿症 > yanyoushou\ ;
+超文面 > choubunmen\ ;
+動物園 > doubutsuen\ ;
+総監督 > soukantoku\ ;
+実際的 > jissaiteki\ ;
+頼信紙 > raishinshi\ ;
+宣教師 > senkyoushi\ ;
+責任者 > sekininsha\ ;
+関節炎 > kansetsuen\ ;
+共鳴板 > kyoumeiban\ ;
+宗主国 > soushukoku\ ;
+旧軍人 > kyuugunjin\ ;
+半濁点 > handakuten\ ;
+半長形 > hanchoukei\ ;
+中水道 > chuusuidou\ ;
+選手村 > senshumura\ ;
+印刷用 > insatsuyou\ ;
+霊柩車 > reikyuusha\ ;
+海岸端 > kaiganbata\ ;
+外用薬 > gaiyouyaku\ ;
+紫斑病 > shihanbyou\ ;
+蛸配当 > takohaitou\ ;
+高所病 > koushobyou\ ;
+大小便 > daishouben\ ;
+米国民 > beikokumin\ ;
+吸水性 > kyuusuisei\ ;
+念五日 > nengonichi\ ;
+出来心 > dekigokoro\ ;
+中心部 > chuushinbu\ ;
+生体学 > seitaigaku\ ;
+肯定的 > kouteiteki\ ;
+選択子 > sentakushi\ ;
+動物化 > doubutsuka\ ;
+水平翼 > suiheiyoku\ ;
+貿易業 > bouekigyou\ ;
+腰布団 > koshibuton\ ;
+爆撃機 > bakugekiki\ ;
+言行録 > genkouroku\ ;
+団地族 > danchizoku\ ;
+乱調子 > ranchoushi\ ;
+備蓄米 > bichikumai\ ;
+大乗的 > daijouteki\ ;
+無能力 > munouryoku\ ;
+酪農場 > rakunoujou\ ;
+貨客船 > kakyakusen\ ;
+感染症 > kansenshou\ ;
+真理教 > shinrikyou\ ;
+慈善鍋 > jizen''nabe\ ;
+技術士 > gijutsushi\ ;
+哨戒艇 > shoukaitei\ ;
+酒石酸 > shusekisan\ ;
+敷布団 > shikibuton\ ;
+反則金 > hansokukin\ ;
+有機物 > yuukibutsu\ ;
+抽象画 > chuushouga\ ;
+租借権 > soshakuken\ ;
+内申書 > naishinsho\ ;
+同級生 > doukyuusei\ ;
+向米的 > koubeiteki\ ;
+親衛兵 > shin''eihei\ ;
+仏文科 > futsubunka\ ;
+取引所 > torihikijo\ ;
+電車賃 > denshachin\ ;
+集散地 > shuusanchi\ ;
+綺想曲 > kisoukyoku\ ;
+上調子 > uwachoushi\ ;
+内臓弓 > naizoukyuu\ ;
+半開国 > hankaikoku\ ;
+製造業 > seizougyou\ ;
+追撃機 > tsuigekiki\ ;
+三角筋 > sankakukin\ ;
+等深線 > toushinsen\ ;
+駆動力 > kudouryoku\ ;
+重工業 > juukougyou\ ;
+麻織物 > asaorimono\ ;
+日射病 > nisshabyou\ ;
+熱血児 > nekketsuji\ ;
+金属製 > kinzokusei\ ;
+本契約 > honkeiyaku\ ;
+黄褐色 > oukasshoku\ ;
+購入者 > kounyuusha\ ;
+不精者 > bushoumono\ ;
+主応力 > shuouryoku\ ;
+埼玉勢 > saitamazei\ ;
+重傷者 > juushousha\ ;
+傷害罪 > shougaizai\ ;
+作戦上 > sakusenjou\ ;
+潜水病 > sensuibyou\ ;
+中性紙 > chuuseishi\ ;
+診療所 > shinryoujo\ ;
+日本食 > nihonshoku\ ;
+稼働率 > kadouritsu\ ;
+連合国 > rengoukoku\ ;
+公民学 > koumingaku\ ;
+研究者 > kenkyuusha\ ;
+静水圧 > seisuiatsu\ ;
+登録者 > tourokusha\ ;
+興行界 > kougyoukai\ ;
+準決勝 > junkesshou\ ;
+天王星 > ten''nousei\ ;
+梯子車 > hashigosha\ ;
+三親等 > sanshintou\ ;
+不純物 > fujunbutsu\ ;
+上女中 > kamijochuu\ ;
+鳥取県 > tottoriken\ ;
+重症者 > juushousha\ ;
+貧乏鬮 > binboukuji\ ;
+唯一度 > tadaichido\ ;
+好色家 > koushokuka\ ;
+毛皮商 > kegawashou\ ;
+比較級 > hikakukyuu\ ;
+現在高 > genzaidaka\ ;
+陸海空 > rikukaikuu\ ;
+双眼鏡 > sougankyou\ ;
+駐輪場 > chuurinjou\ ;
+白鉄鉱 > hakutekkou\ ;
+大宮人 > oomiyabito\ ;
+雪合戦 > yukigassen\ ;
+片栗粉 > katakuriko\ ;
+発表会 > happyoukai\ ;
+吐瀉物 > toshabutsu\ ;
+裏表紙 > urabyoushi\ ;
+切断図 > setsudanzu\ ;
+思惑買 > omowakugai\ ;
+観念論 > kan''nenron\ ;
+玉音盤 > gyokuonban\ ;
+反動的 > handouteki\ ;
+救命艇 > kyuumeitei\ ;
+絶対的 > zettaiteki\ ;
+測量図 > sokuryouzu\ ;
+三大国 > sandaikoku\ ;
+地方病 > chihoubyou\ ;
+出版者 > shuppansha\ ;
+供給路 > kyoukyuuro\ ;
+竜涎香 > ryuuzenkou\ ;
+射爆場 > shabakujou\ ;
+測量器 > sokuryouki\ ;
+土俗学 > dozokugaku\ ;
+美女桜 > bijozakura\ ;
+南々東 > nan''nantou\ ;
+人格権 > jinkakuken\ ;
+分解的 > bunkaiteki\ ;
+他覚的 > takakuteki\ ;
+天主教 > tenshukyou\ ;
+雪化粧 > yukigeshou\ ;
+形式美 > keishikibi\ ;
+電通大 > dentsuudai\ ;
+研究社 > kenkyuusha\ ;
+三角点 > sankakuten\ ;
+伝書鳩 > denshobato\ ;
+他覚症 > takakushou\ ;
+消耗戦 > shoumousen\ ;
+仕訳書 > shiwakesho\ ;
+遊休地 > yuukyuuchi\ ;
+反応性 > han''nousei\ ;
+暴走族 > bousouzoku\ ;
+紀元節 > kigensetsu\ ;
+温泉宿 > onsen''yado\ ;
+唐辛子 > tougarashi\ ;
+日中韓 > nitchuukan\ ;
+理解力 > rikairyoku\ ;
+公共財 > koukyouzai\ ;
+検定料 > kenteiryou\ ;
+市長選 > shichousen\ ;
+安普請 > yasubushin\ ;
+水道料 > suidouryou\ ;
+両成敗 > ryouseibai\ ;
+初節句 > hatsuzekku\ ;
+比較的 > hikakuteki\ ;
+国連軍 > kokurengun\ ;
+上級生 > joukyuusei\ ;
+無頓着 > mutonchaku\ ;
+学友会 > gakuyuukai\ ;
+再来月 > saraigetsu\ ;
+後日談 > gojitsudan\ ;
+備荒食 > bikoushoku\ ;
+不行跡 > fugyouseki\ ;
+斜陽族 > shayouzoku\ ;
+青化物 > seikabutsu\ ;
+天王山 > ten''nouzan\ ;
+厄介者 > yakkaimono\ ;
+勇猛心 > yuumoushin\ ;
+武力戦 > buryokusen\ ;
+三角法 > sankakuhou\ ;
+宗教画 > shuukyouga\ ;
+研究生 > kenkyuusei\ ;
+出奔者 > shupponsha\ ;
+収益金 > shuuekikin\ ;
+氷菓子 > koorigashi\ ;
+軽工業 > keikougyou\ ;
+記憶力 > kiokuryoku\ ;
+即興詩 > sokkyoushi\ ;
+古生物 > koseibutsu\ ;
+熱愛者 > netsuaisha\ ;
+天頂点 > tenchouten\ ;
+無資力 > mushiryoku\ ;
+興行権 > kougyouken\ ;
+松根油 > shoukon''yu\ ;
+百済楽 > kudaragaku\ ;
+在任中 > zaininchuu\ ;
+滞在中 > taizaichuu\ ;
+出版社 > shuppansha\ ;
+製茶業 > seichagyou\ ;
+貿易商 > bouekishou\ ;
+国務省 > kokumushou\ ;
+中南米 > chuunanbei\ ;
+桐一葉 > kirihitoha\ ;
+初節供 > hatsuzekku\ ;
+入選者 > nyuusensha\ ;
+縦社会 > tateshakai\ ;
+操縦席 > soujuuseki\ ;
+周旋屋 > shuusen''ya\ ;
+文学士 > bungakushi\ ;
+工学者 > kougakusha\ ;
+古伝説 > kodensetsu\ ;
+印刷工 > insatsukou\ ;
+潜水服 > sensuifuku\ ;
+大主教 > daishukyou\ ;
+上場株 > joujoukabu\ ;
+類型的 > ruikeiteki\ ;
+吹出物 > fukidemono\ ;
+抗真菌 > koushinkin\ ;
+難波潟 > naniwagata\ ;
+租借地 > soshakuchi\ ;
+加農砲 > kan''nonhou\ ;
+造石税 > zoukokuzei\ ;
+駐車場 > chuushajou\ ;
+試算表 > shisanhyou\ ;
+経済学 > keizaigaku\ ;
+急勾配 > kyuukoubai\ ;
+儀式用 > gishikiyou\ ;
+血栓症 > kessenshou\ ;
+伊達姿 > datesugata\ ;
+病原体 > byougentai\ ;
+八分目 > hachibunme\ ;
+解析性 > kaisekisei\ ;
+客観性 > kyakkansei\ ;
+超媒体 > choubaitai\ ;
+水芭蕉 > mizubashou\ ;
+長期的 > choukiteki\ ;
+眼鏡蛇 > meganehebi\ ;
+出版界 > shuppankai\ ;
+弁償金 > benshoukin\ ;
+排外的 > haigaiteki\ ;
+未熟者 > mijukumono\ ;
+分散型 > bunsangata\ ;
+短編集 > tanpenshuu\ ;
+淡路島 > awajishima\ ;
+増殖炉 > zoushokuro\ ;
+下見板 > shitamiita\ ;
+分教場 > bunkyoujou\ ;
+史料館 > shiryoukan\ ;
+血小板 > kesshouban\ ;
+金色堂 > konjikidou\ ;
+漢方薬 > kanpouyaku\ ;
+翻訳家 > hon''yakuka\ ;
+平等観 > byoudoukan\ ;
+検査官 > kenshoukan\ ;
+文学史 > bungakushi\ ;
+変分学 > henbungaku\ ;
+前栽物 > senzaimono\ ;
+強壮剤 > kyousouzai\ ;
+海産業 > kaisangyou\ ;
+献納者 > ken''nousha\ ;
+六連星 > rokurensei\ ;
+勅願寺 > chokuganji\ ;
+伝染病 > densenbyou\ ;
+中華鍋 > chuukanabe\ ;
+天上川 > tenjougawa\ ;
+洋芥子 > yougarashi\ ;
+皆勤賞 > kaikinshou\ ;
+金属片 > kinzokuhen\ ;
+奇術師 > kijutsushi\ ;
+増加率 > zoukaritsu\ ;
+標準型 > hyoujunkei\ ;
+金赤色 > kin''akairo\ ;
+責任感 > sekininkan\ ;
+淋巴節 > rinpasetsu\ ;
+供物台 > kumotsudai\ ;
+米国人 > beikokujin\ ;
+等温式 > touonshiki\ ;
+前任者 > zen''ninsha\ ;
+製造元 > seizoumoto\ ;
+情報量 > jouhouryou\ ;
+消耗品 > shoumouhin\ ;
+両手利 > ryoutekiki\ ;
+蓄電器 > chikudenki\ ;
+対角線 > taikakusen\ ;
+一晩中 > hitobanjuu\ ;
+暗剣殺 > ankensatsu\ ;
+頭足類 > tousokurui\ ;
+在東京 > zaitoukyou\ ;
+棄言葉 > sutekotoba\ ;
+免税表 > menzeihyou\ ;
+国民性 > kokuminsei\ ;
+彫刻家 > choukokuka\ ;
+読書界 > dokushokai\ ;
+使用料 > shiyouryou\ ;
+居留民 > kyoryuumin\ ;
+旋光角 > senkoukaku\ ;
+小間使 > komadzukai\ ;
+角膜炎 > kakumakuen\ ;
+鰭脚類 > kikyakurui\ ;
+鑑識家 > kanshikika\ ;
+興行師 > kougyoushi\ ;
+嬶天下 > kakaadenka\ ;
+固形物 > kokeibutsu\ ;
+紡績糸 > bousekiito\ ;
+吝嗇家 > rinshokuka\ ;
+為替尻 > kawasejiri\ ;
+読者欄 > dokusharan\ ;
+厄介物 > yakkaimono\ ;
+出世作 > shussesaku\ ;
+動摩擦 > doumasatsu\ ;
+部分食 > bubunshoku\ ;
+出版法 > shuppanhou\ ;
+課題曲 > kadaikyoku\ ;
+殺虫剤 > satchuuzai\ ;
+薄雪草 > usuyukisou\ ;
+人体学 > jintaigaku\ ;
+平城京 > heijoukyou\ ;
+三角帽 > sankakubou\ ;
+衝撃波 > shougekiha\ ;
+三角巾 > sankakukin\ ;
+郵送料 > yuusouryou\ ;
+石炭酸 > sekitansan\ ;
+征服者 > seifukusha\ ;
+強行軍 > kyoukougun\ ;
+代表団 > daihyoudan\ ;
+脚本家 > kyakuhonka\ ;
+菓子鉢 > kashibachi\ ;
+直円錐 > chokuensui\ ;
+出版権 > shuppanken\ ;
+再服役 > saifukueki\ ;
+生放送 > namahousou\ ;
+計算尺 > keisanjaku\ ;
+通勤者 > tsuukinsha\ ;
+一塁線 > ichiruisen\ ;
+液量計 > ekiryoukei\ ;
+切支丹 > kirishitan\ ;
+闇市場 > yamishijou\ ;
+障害者 > shougaisha\ ;
+貴族的 > kizokuteki\ ;
+印刷人 > insatsunin\ ;
+海賊船 > kaizokusen\ ;
+南南西 > nan''nansei\ ;
+脳振盪 > noushintou\ ;
+抽象化 > chuushouka\ ;
+講習会 > koushuukai\ ;
+愛玩物 > aiganbutsu\ ;
+麻雀屋 > mazejan''ya\ ;
+伝染毒 > densendoku\ ;
+他国者 > takokumono\ ;
+重層的 > juusouteki\ ;
+五重塔 > gojuunotou\ ;
+下級審 > kakyuushin\ ;
+低所得 > teishotoku\ ;
+専門章 > senmonshou\ ;
+鋳造所 > chuuzousho\ ;
+短時日 > tanjijitsu\ ;
+休業日 > kyuugyoubi\ ;
+先端的 > sentanteki\ ;
+喧嘩腰 > kenkagoshi\ ;
+草双紙 > kusazoushi\ ;
+空想的 > kuusouteki\ ;
+雪達磨 > yukidaruma\ ;
+内交渉 > naikoushou\ ;
+広告社 > koukokusha\ ;
+貨物駅 > kamotsueki\ ;
+貧乏籤 > binbouguji\ ;
+対話式 > taiwashiki\ ;
+共産軍 > kyousangun\ ;
+不承諾 > fushoudaku\ ;
+求人誌 > kyuujinshi\ ;
+鞭毛虫 > benmouchuu\ ;
+簡単服 > kantanfuku\ ;
+中性子 > chuuseishi\ ;
+黒穂病 > kurohobyou\ ;
+分担額 > buntangaku\ ;
+太陽虫 > taiyouchuu\ ;
+暫定的 > zanteiteki\ ;
+代表例 > daihyourei\ ;
+同国民 > doukokumin\ ;
+記念物 > kinenbutsu\ ;
+旧体制 > kyuutaisei\ ;
+南洋材 > nan''youzai\ ;
+非常口 > hijouguchi\ ;
+上表紙 > uwabyoushi\ ;
+面白味 > omoshiromi\ ;
+保存食 > hozonshoku\ ;
+半意識 > han''ishiki\ ;
+本調子 > honchoushi\ ;
+織女星 > shokujosei\ ;
+専門的 > senmonteki\ ;
+報償金 > houshoukin\ ;
+擲弾筒 > tekidantou\ ;
+貧乏神 > binbougami\ ;
+回漕業 > kaisougyou\ ;
+大統領 > daitouryou\ ;
+量子論 > ryoushiron\ ;
+中力粉 > chuurikiko\ ;
+眼鏡猿 > meganezaru\ ;
+業界紙 > gyoukaishi\ ;
+非公式 > hikoushiki\ ;
+水兵服 > suiheifuku\ ;
+貯木場 > chobokujou\ ;
+梯子段 > hashigodan\ ;
+当歳駒 > tousaigoma\ ;
+宗教家 > shuukyouka\ ;
+研究官 > kenkyuukan\ ;
+殉教者 > junkyousha\ ;
+殉難者 > jun''nansha\ ;
+壁訴訟 > kabezoshou\ ;
+玉整理 > gyokuseiri\ ;
+茨城県 > ibarakiken\ ;
+屈曲部 > kukkyokubu\ ;
+褒奨金 > houshoukin\ ;
+消防隊 > shouboutai\ ;
+朧昆布 > oborokonbu\ ;
+看病人 > kanbyounin\ ;
+花電車 > hanadensha\ ;
+地文学 > chimongaku\ ;
+口供書 > koukyousho\ ;
+金属性 > kinzokusei\ ;
+草野球 > kusayakyuu\ ;
+検事局 > kenjikyoku\ ;
+六辺形 > rokuhenkei\ ;
+読者層 > dokushasou\ ;
+催促状 > saisokujou\ ;
+傾斜角 > keishakaku\ ;
+収監状 > shuukanjou\ ;
+地震学 > jishingaku\ ;
+在世中 > zaiseichuu\ ;
+奥座敷 > okuzashiki\ ;
+美術館 > bijutsukan\ ;
+許容量 > kyoyouryou\ ;
+射撃場 > shagekijou\ ;
+後天的 > koutenteki\ ;
+駐屯地 > chuutonchi\ ;
+脳溢血 > nouikketsu\ ;
+存命中 > zonmeichuu\ ;
+系列化 > keiretsuka\ ;
+出版屋 > shuppan''ya\ ;
+審美的 > shinbiteki\ ;
+恒久性 > koukyuusei\ ;
+片貿易 > kataboueki\ ;
+文献学 > bunkengaku\ ;
+時代色 > jidaishoku\ ;
+大大的 > daidaiteki\ ;
+二重橋 > nijuubashi\ ;
+地誌学 > chishigaku\ ;
+化学的 > kagakuteki\ ;
+肉弾戦 > nikudansen\ ;
+一絃琴 > ichigenkin\ ;
+遊牧民 > yuubokumin\ ;
+核実験 > kakujikken\ ;
+貨物車 > kamotsusha\ ;
+求人者 > kyuujinsha\ ;
+地震国 > jishinkoku\ ;
+居留地 > kyoryuuchi\ ;
+障子紙 > shoujigami\ ;
+潜函病 > senkanbyou\ ;
+引率者 > insotsusha\ ;
+海賊版 > kaizokuban\ ;
+信仰者 > shinkousha\ ;
+消防車 > shoubousha\ ;
+三等賞 > santoushou\ ;
+無警察 > mukeisatsu\ ;
+彩色画 > saishokuga\ ;
+勧告者 > kankokusha\ ;
+広告欄 > koukokuran\ ;
+賞金王 > shoukin''ou\ ;
+通知状 > tsuuchijou\ ;
+工作品 > kousakuhin\ ;
+地政学 > chiseigaku\ ;
+太陽神 > taiyoushin\ ;
+継承者 > keishousha\ ;
+乳製品 > nyuuseihin\ ;
+遊撃隊 > yuugekitai\ ;
+卑怯者 > hikyoumono\ ;
+再教育 > saikyouiku\ ;
+国内線 > kokunaisen\ ;
+噛煙草 > kamitabako\ ;
+慈善市 > jizen''ichi\ ;
+回想録 > kaisouroku\ ;
+外交的 > gaikouteki\ ;
+修理中 > shuurichuu\ ;
+三等親 > santoushin\ ;
+地表面 > chihyoumen\ ;
+干渉計 > kanshoukei\ ;
+研究会 > kenkyuukai\ ;
+肖像権 > shouzouken\ ;
+役不足 > yakubusoku\ ;
+注意力 > chuuiryoku\ ;
+腹上死 > fukujoushi\ ;
+編集者 > henshuusha\ ;
+広告板 > koukokuban\ ;
+渉禽類 > shoukinrui\ ;
+倒錯者 > tousakusha\ ;
+水疱瘡 > mizubousou\ ;
+平等権 > byoudouken\ ;
+大震災 > daishinsai\ ;
+重症例 > juushourei\ ;
+地域的 > chiikiteki\ ;
+共産系 > kyousankei\ ;
+開閉橋 > kaiheikyou\ ;
+超電導 > choudendou\ ;
+陳情書 > chinjousho\ ;
+投機熱 > toukinetsu\ ;
+冗談事 > joudankoto\ ;
+最高級 > saikoukyuu\ ;
+思惑師 > omowakushi\ ;
+西日本 > nishinihon\ ;
+近代的 > kindaiteki\ ;
+超大型 > chouoogata\ ;
+砕氷船 > saihyousen\ ;
+漁業法 > gyogyouhou\ ;
+未解決 > mikaiketsu\ ;
+巨人国 > kyojinkoku\ ;
+最小限 > saishougen\ ;
+公共性 > koukyousei\ ;
+無精髭 > bushouhige\ ;
+工学士 > kougakushi\ ;
+酒造業 > shuzougyou\ ;
+色鉛筆 > iroenpitsu\ ;
+火打石 > hiuchiishi\ ;
+醸造業 > jouzougyou\ ;
+単眼鏡 > tangankyou\ ;
+漁業権 > gyogyouken\ ;
+石灯籠 > ishidourou\ ;
+南氷洋 > nanpyouyou\ ;
+鱈場蟹 > tarabagani\ ;
+岡山県 > okayamaken\ ;
+紡績工 > bousekikou\ ;
+起爆薬 > kibakuyaku\ ;
+確認書 > kakuninsho\ ;
+誕生石 > tanjouseki\ ;
+防臭剤 > boushuuzai\ ;
+錫製品 > suzuseihin\ ;
+貨物船 > kamotsusen\ ;
+一塁手 > ichiruishu\ ;
+脚線美 > kyakusenbi\ ;
+有価物 > yuukabutsu\ ;
+植生図 > shokuseizu\ ;
+発情期 > hatsujouki\ ;
+白水社 > hakusuisha\ ;
+採算株 > saisankabu\ ;
+長丁場 > nagachouba\ ;
+有孔虫 > yuukouchuu\ ;
+天然痘 > ten''nentou\ ;
+四拍子 > yonbyoushi\ ;
+冗長系 > jouchoukei\ ;
+日本式 > nihonshiki\ ;
+満年齢 > man''nenrei\ ;
+消防艇 > shouboutei\ ;
+小液胞 > shouekihou\ ;
+首唱者 > shushousha\ ;
+日本平 > nihondaira\ ;
+鉄面皮 > tetsumenpi\ ;
+主権国 > shukenkoku\ ;
+買掛金 > kaikakekin\ ;
+石灰石 > sekkaiseki\ ;
+米問屋 > komedon''ya\ ;
+思想劇 > shisougeki\ ;
+万国民 > bankokumin\ ;
+勧告状 > kankokujou\ ;
+敗北感 > haibokukan\ ;
+密輸船 > mitsuyusen\ ;
+可変翼 > kahen''yoku\ ;
+偏頭痛 > hentoutsuu\ ;
+年齢給 > nenreikyuu\ ;
+透磁率 > toujiritsu\ ;
+厄介事 > yakkaigoto\ ;
+伏射濠 > fukushagou\ ;
+懸壅垂 > ken''yousui\ ;
+界磁極 > kaijikyoku\ ;
+応用力 > ouyouryoku\ ;
+日曜日 > nichiyoubi\ ;
+消防署 > shoubousho\ ;
+貧乏性 > binboushou\ ;
+核崩壊 > kakuhoukai\ ;
+読書会 > dokushokai\ ;
+不潔感 > fuketsukan\ ;
+数学者 > suugakusha\ ;
+聴取者 > choushusha\ ;
+読書人 > dokushojin\ ;
+前任地 > zen''ninchi\ ;
+漁色家 > gyoshokuka\ ;
+製作者 > seisakusha\ ;
+没個性 > botsukosei\ ;
+全店中 > zentenchuu\ ;
+官給品 > kankyuuhin\ ;
+白金族 > hakkinzoku\ ;
+天文学 > tenmongaku\ ;
+兵学者 > heigakusha\ ;
+合唱隊 > gasshoutai\ ;
+不成立 > fuseiritsu\ ;
+献納品 > ken''nouhin\ ;
+細粒分 > sairyuubun\ ;
+猛練習 > mourenshuu\ ;
+例外的 > reigaiteki\ ;
+効率化 > kouritsuka\ ;
+除虫菊 > jochuugiku\ ;
+紅生姜 > benishouga\ ;
+干拓地 > kantakuchi\ ;
+凍傷者 > toushousha\ ;
+南南東 > nan''nantou\ ;
+同国人 > doukokujin\ ;
+目的語 > mokutekigo\ ;
+三国志 > sangokushi\ ;
+人物画 > jinbutsuga\ ;
+吸入器 > kyuunyuuki\ ;
+防寒服 > boukanfuku\ ;
+修院長 > shuuinchou\ ;
+国内法 > kokunaihou\ ;
+探究者 > tankyuusha\ ;
+初心者 > shoshinsha\ ;
+未開発 > mikaihatsu\ ;
+広告塔 > koukokutou\ ;
+開拓者 > kaitakusha\ ;
+人類学 > jinruigaku\ ;
+知日派 > chinichiha\ ;
+最高潮 > saikouchou\ ;
+天然港 > ten''nenkou\ ;
+反逆児 > hangyakuji\ ;
+一国者 > ikkokumono\ ;
+好材料 > kouzairyou\ ;
+太陽暦 > taiyoureki\ ;
+常用癖 > jouyouheki\ ;
+早教育 > soukyouiku\ ;
+格子縞 > koushijima\ ;
+反軍的 > hangunteki\ ;
+薬包紙 > yakuhoushi\ ;
+兵曹長 > heisouchou\ ;
+漢文学 > kanbungaku\ ;
+急先鋒 > kyuusenpou\ ;
+口奇麗 > kuchigirei\ ;
+行政法 > gyouseihou\ ;
+花言葉 > hanakotoba\ ;
+送金額 > soukingaku\ ;
+求婚者 > kyuukonsha\ ;
+再調整 > saichousei\ ;
+風見鶏 > kazamidori\ ;
+執政官 > shisseikan\ ;
+能楽堂 > nougakudou\ ;
+好下物 > koukabutsu\ ;
+双発機 > souhatsuki\ ;
+公共債 > koukyousai\ ;
+昨年来 > sakunenrai\ ;
+提供者 > teikyousha\ ;
+醸造学 > jouzougaku\ ;
+得点圏 > tokutenken\ ;
+審美学 > shinbigaku\ ;
+女便所 > on''nabenjo\ ;
+呉服物 > gofukumono\ ;
+症候群 > shoukougun\ ;
+格子窓 > koushimado\ ;
+文明国 > bunmeikoku\ ;
+行政権 > gyouseiken\ ;
+金木犀 > kinmokusei\ ;
+科学的 > kagakuteki\ ;
+手札型 > tefudagata\ ;
+全般的 > zenpanteki\ ;
+特殊鋼 > tokushukou\ ;
+圧縮性 > asshukusei\ ;
+官房長 > kanbouchou\ ;
+白砂糖 > shirozatou\ ;
+春分点 > shunbunten\ ;
+旧主人 > kyuushujin\ ;
+葉緑素 > youryokuso\ ;
+内面的 > naimenteki\ ;
+肺結核 > haikekkaku\ ;
+回収金 > kaishuukin\ ;
+綿帽子 > wataboushi\ ;
+急進派 > kyuushinha\ ;
+芸術院 > geijutsuin\ ;
+榴弾砲 > ryuudanpou\ ;
+冒険心 > boukenshin\ ;
+可燃物 > kanenbutsu\ ;
+日本一 > nihon''ichi\ ;
+修練者 > shuurensha\ ;
+反射鏡 > hanshakyou\ ;
+二直角 > nichokkaku\ ;
+型変換 > katahenkan\ ;
+去勢牛 > kyoseiushi\ ;
+犯罪学 > hanzaigaku\ ;
+原籍地 > gensekichi\ ;
+性道徳 > seidoutoku\ ;
+平滑化 > heikatsuka\ ;
+郵便箱 > yuubinbako\ ;
+受信料 > jushinryou\ ;
+再組織 > saisoshiki\ ;
+美術界 > bijutsukai\ ;
+不等式 > fudoushiki\ ;
+約定書 > yakujousho\ ;
+三箇日 > sanganichi\ ;
+発祥地 > hasshouchi\ ;
+勝手口 > katteguchi\ ;
+夕食後 > yuushokugo\ ;
+搬入日 > han''nyuubi\ ;
+豪商層 > goushousou\ ;
+奴豆腐 > yakkodoufu\ ;
+感覚論 > kankakuron\ ;
+国産車 > kokusansha\ ;
+不流通 > furyuutsuu\ ;
+橋頭堡 > kyoutouhou\ ;
+夏時間 > natsujikan\ ;
+石炭層 > sekitansou\ ;
+絹一匹 > kinuippiki\ ;
+建白書 > kenpakusho\ ;
+消防法 > shoubouhou\ ;
+中近東 > chuukintou\ ;
+証人台 > shounindai\ ;
+水産業 > suisangyou\ ;
+奇想曲 > kisoukyoku\ ;
+比例式 > hireishiki\ ;
+男所帯 > otokojotai\ ;
+修整版 > shuuseihan\ ;
+冷水浴 > reisuiyoku\ ;
+夏羽織 > natsubaori\ ;
+褒言葉 > homekotoba\ ;
+事務机 > jimudzukue\ ;
+主催国 > shusaikoku\ ;
+大外刈 > oosotogari\ ;
+清算人 > seisan''nin\ ;
+住民票 > juuminhyou\ ;
+無線局 > musenkyoku\ ;
+悪材料 > akuzairyou\ ;
+日照計 > nisshoukei\ ;
+支持率 > shijiritsu\ ;
+二連発 > nirenpatsu\ ;
+具象的 > gushouteki\ ;
+副抵当 > fukuteitou\ ;
+胸膜炎 > kyoumakuen\ ;
+除湿器 > joshitsuki\ ;
+乗換駅 > norikaeeki\ ;
+古本屋 > furuhon''ya\ ;
+巨大症 > kyodaishou\ ;
+知日家 > chinichika\ ;
+白眼視 > hakuganshi\ ;
+照射法 > shoushahou\ ;
+赤信号 > akashingou\ ;
+長方形 > chouhoukei\ ;
+万国史 > bankokushi\ ;
+造兵廠 > zouheishou\ ;
+東京湾 > toukyouwan\ ;
+独創性 > dokusousei\ ;
+放浪癖 > hourouheki\ ;
+行政官 > gyouseikan\ ;
+没趣味 > botsushumi\ ;
+陶酔境 > tousuikyou\ ;
+反射角 > hanshakaku\ ;
+公生涯 > koushougai\ ;
+特効薬 > tokkouyaku\ ;
+多項式 > takoushiki\ ;
+表情筋 > hyoujoukin\ ;
+利益率 > riekiritsu\ ;
+三拍子 > sanbyoushi\ ;
+量販店 > ryouhanten\ ;
+編集子 > henshuushi\ ;
+冗長性 > jouchousei\ ;
+鼻眼鏡 > hanamegane\ ;
+内視鏡 > naishikyou\ ;
+赤翡翠 > akashoubin\ ;
+熱機関 > netsukikan\ ;
+摂護腺 > setsugosen\ ;
+対抗策 > taikousaku\ ;
+近代劇 > kindaigeki\ ;
+徹底的 > tetteiteki\ ;
+歴代史 > rekidaishi\ ;
+早見表 > hayamihyou\ ;
+投射角 > toushakaku\ ;
+監督者 > kantokusha\ ;
+共産圏 > kyousanken\ ;
+実行中 > jikkouchuu\ ;
+猛攻撃 > moukougeki\ ;
+電子殻 > denshikaku\ ;
+村役場 > murayakuba\ ;
+陸軟風 > rikunanpuu\ ;
+政治色 > seijishoku\ ;
+母子草 > hahakogusa\ ;
+特待生 > tokutaisei\ ;
+中盤戦 > chuubansen\ ;
+舞踏靴 > butougutsu\ ;
+大陪審 > daibaishin\ ;
+無縁仏 > muenbotoke\ ;
+認定証 > ninteishou\ ;
+美術書 > bijutsusho\ ;
+計量法 > keiryouhou\ ;
+原振動 > genshindou\ ;
+学芸会 > gakugeikai\ ;
+脂肪心 > shiboushin\ ;
+狸饂飩 > tanukiudon\ ;
+水産庁 > suisanchou\ ;
+合憲的 > goukenteki\ ;
+主体的 > shutaiteki\ ;
+窃盗狂 > settoukyou\ ;
+女一般 > on''naippan\ ;
+決勝線 > kesshousen\ ;
+口上手 > kuchijouzu\ ;
+工場長 > koujouchou\ ;
+旗二流 > hataniryuu\ ;
+即位式 > sokuishiki\ ;
+懐柔策 > kaijuusaku\ ;
+幻想劇 > gensougeki\ ;
+事務室 > jimushitsu\ ;
+超規則 > choukisoku\ ;
+核家族 > kakukazoku\ ;
+夕月夜 > yuudzukeyo\ ;
+大衆車 > daishuusha\ ;
+無籍者 > musekimono\ ;
+日独伊 > nichidokui\ ;
+悪習慣 > akushuukan\ ;
+硫酸銅 > ryuusandou\ ;
+水産学 > suisangaku\ ;
+幸福感 > koufukukan\ ;
+賠償金 > baishoukin\ ;
+共産党 > kyousantou\ ;
+船板塀 > funaitabei\ ;
+全学連 > zengakuren\ ;
+直走路 > chokusouro\ ;
+氷豆腐 > kooridoufu\ ;
+入居者 > nyuukyosha\ ;
+日陰者 > hikagemono\ ;
+絶縁線 > zetsuensen\ ;
+品評会 > hinpyoukai\ ;
+水瓶座 > mizugameza\ ;
+各団体 > kakudantai\ ;
+来来週 > rairaishuu\ ;
+四十雀 > shijuukara\ ;
+通用門 > tsuuyoumon\ ;
+爪楊枝 > tsumayouji\ ;
+散髪屋 > sanpatsuya\ ;
+校正刷 > kouseizuri\ ;
+黒眼鏡 > kuromegane\ ;
+造船業 > zousengyou\ ;
+観劇会 > kangekikai\ ;
+公害病 > kougaibyou\ ;
+受信側 > jushingawa\ ;
+企業心 > kigyoushin\ ;
+修繕工 > shuuzenkou\ ;
+単身銃 > tanshinjuu\ ;
+百年目 > hyakunenme\ ;
+没理想 > botsurisou\ ;
+静脈炎 > joumyakuen\ ;
+全能者 > zen''nousha\ ;
+呉服商 > gofukushou\ ;
+省資源 > shoushigen\ ;
+集合論 > shuugouron\ ;
+禁煙席 > kin''enseki\ ;
+長方体 > chouhoutai\ ;
+受信人 > jushin''nin\ ;
+旗二旒 > hataniryuu\ ;
+急停車 > kyuuteisha\ ;
+糞度胸 > kusodokyou\ ;
+消防士 > shouboushi\ ;
+有理式 > yuurishiki\ ;
+終列車 > shuuressha\ ;
+所有格 > shoyuukaku\ ;
+知覚知 > chikakuchi\ ;
+遊撃手 > yuugekishu\ ;
+解熱剤 > genetsuzai\ ;
+店屋物 > ten''yamono\ ;
+遊撃戦 > yuugekisen\ ;
+山水閣 > sansuikaku\ ;
+説教師 > sekkyoushi\ ;
+島帝国 > touteikoku\ ;
+卑劣漢 > hiretsukan\ ;
+全生涯 > zenshougai\ ;
+全会衆 > zenkaishuu\ ;
+収容者 > shuuyousha\ ;
+解集合 > kaishuugou\ ;
+相対的 > soutaiteki\ ;
+石灰乳 > sekkainyuu\ ;
+共有者 > kyouyuusha\ ;
+指定席 > shiteiseki\ ;
+商品名 > shouhinmei\ ;
+根本的 > konponteki\ ;
+美術展 > bijutsuten\ ;
+縞模様 > shimamoyou\ ;
+消防団 > shouboudan\ ;
+乾葡萄 > hoshibudou\ ;
+羽根車 > haneguruma\ ;
+発動機 > hatsudouki\ ;
+闘牛士 > tougyuushi\ ;
+同情票 > doujouhyou\ ;
+入会金 > nyuukaikin\ ;
+熱硬化 > netsukouka\ ;
+闘牛場 > tougyuujou\ ;
+反対票 > hantaihyou\ ;
+冷却器 > reikyakuki\ ;
+借入金 > kariirekin\ ;
+商品券 > shouhinken\ ;
+歓楽街 > kanrakugai\ ;
+研削盤 > kensakuban\ ;
+本籍地 > honsekichi\ ;
+気欝症 > kiutsushou\ ;
+恋女房 > koinyoubou\ ;
+脳神経 > noushinkei\ ;
+膠原病 > kougenbyou\ ;
+牽制球 > kenseikyuu\ ;
+新造船 > shinzousen\ ;
+感覚点 > kankakuten\ ;
+偽君子 > nisekunshi\ ;
+決勝点 > kesshouten\ ;
+多数決 > tasuuketsu\ ;
+意識的 > ishikiteki\ ;
+反射的 > hanshateki\ ;
+不活発 > fukappatsu\ ;
+受領証 > juryoushou\ ;
+純文学 > junbungaku\ ;
+特急券 > tokkyuuken\ ;
+黄金術 > ougonjutsu\ ;
+仮勘定 > karikanjou\ ;
+霊長類 > reichourui\ ;
+全身像 > zenshinzou\ ;
+密輸品 > mitsuyuhin\ ;
+既設線 > kisetsusen\ ;
+二連式 > nirenshiki\ ;
+減速材 > gensokuzai\ ;
+光磁気 > hikarijiki\ ;
+証明書 > shoumeisho\ ;
+開拓地 > kaitakuchi\ ;
+記述子 > kijutsushi\ ;
+仮免許 > karimenkyo\ ;
+印象的 > inshouteki\ ;
+旧教徒 > kyuukyouto\ ;
+貨物便 > kamotsubin\ ;
+有望株 > yuuboukabu\ ;
+慣例的 > kanreiteki\ ;
+観相学 > kansougaku\ ;
+肉用種 > nikuyoushu\ ;
+基地局 > kichikyoku\ ;
+視神経 > shishinkei\ ;
+適応症 > tekioushou\ ;
+中高生 > chuukousei\ ;
+下準備 > shitajunbi\ ;
+信頼感 > shinraikan\ ;
+発酵乳 > hakkounyuu\ ;
+旅芸人 > tabigeinin\ ;
+人雪崩 > hitonadare\ ;
+主信号 > shushingou\ ;
+信奉者 > shinpousha\ ;
+尺貫法 > shakkanhou\ ;
+美術品 > bijutsuhin\ ;
+通信費 > tsuushinhi\ ;
+信頼性 > shinraisei\ ;
+感覚毛 > kankakumou\ ;
+順応性 > jun''nousei\ ;
+常習者 > joushuusha\ ;
+美術史 > bijutsushi\ ;
+檀那寺 > dan''nadera\ ;
+千歳飴 > chitoseame\ ;
+製材業 > seizaigyou\ ;
+新機軸 > shinkijiku\ ;
+肉饅頭 > nikumanjuu\ ;
+水資源 > mizushigen\ ;
+白鳥座 > hakuchouza\ ;
+百分比 > hyakubunhi\ ;
+試金石 > shikinseki\ ;
+優等賞 > yuutoushou\ ;
+大衆紙 > taishuushi\ ;
+花見時 > hanamidoki\ ;
+塗擦剤 > tosatsuzai\ ;
+木製品 > mokuseihin\ ;
+内角球 > naikakkyuu\ ;
+饒舌家 > jouzetsuka\ ;
+熱処理 > netsushori\ ;
+新幹線 > shinkansen\ ;
+動向表 > doukouhyou\ ;
+交響詩 > koukyoushi\ ;
+挨拶状 > aisatsujou\ ;
+陥没湖 > kanbotsuko\ ;
+不活溌 > fukappatsu\ ;
+信天翁 > shinten''ou\ ;
+起電力 > kidenryoku\ ;
+鎮魂祭 > chinkonsai\ ;
+舶来品 > hakuraihin\ ;
+手塩皿 > teshiozara\ ;
+黒底翳 > kurosokohi\ ;
+学生帽 > gakuseibou\ ;
+水栽培 > mizusaibai\ ;
+営造物 > eizoubutsu\ ;
+日照権 > nisshouken\ ;
+光量子 > kouryoushi\ ;
+万愚節 > bangusetsu\ ;
+能狂言 > noukyougen\ ;
+支持力 > shijiryoku\ ;
+統計表 > toukeihyou\ ;
+先史学 > senshigaku\ ;
+硫酸紙 > ryuusanshi\ ;
+性差別 > seisabetsu\ ;
+本国人 > hongokujin\ ;
+巨視的 > kyoshiteki\ ;
+転轍機 > tentetsuki\ ;
+表忠碑 > hyouchuuhi\ ;
+収賄罪 > shuuwaizai\ ;
+薬剤師 > yakuzaishi\ ;
+後見人 > kouken''nin\ ;
+連用形 > ren''youkei\ ;
+余白注 > yohakuchuu\ ;
+伝統的 > dentouteki\ ;
+親権者 > shinkensha\ ;
+円天井 > marutenjou\ ;
+少年院 > shounen''in\ ;
+歴青炭 > rekiseitan\ ;
+蠏工船 > kanikousen\ ;
+目八分 > mehachibun\ ;
+四十肩 > shijuukata\ ;
+楽観的 > rakkanteki\ ;
+心停止 > shinteishi\ ;
+速射砲 > sokushahou\ ;
+多角的 > takakuteki\ ;
+新建材 > shinkenzai\ ;
+決勝戦 > kesshousen\ ;
+不必要 > fuhitsuyou\ ;
+扁青石 > henseiseki\ ;
+双球菌 > soukyuukin\ ;
+水羊羮 > mizuyoukan\ ;
+抜本的 > bapponteki\ ;
+単発機 > tanpatsuki\ ;
+転送先 > tensousaki\ ;
+入会者 > nyuukaisha\ ;
+丸木船 > marukibune\ ;
+丸木舟 > marukibune\ ;
+希釈液 > kishakueki\ ;
+月曜日 > getsuyoubi\ ;
+最賃法 > saichinhou\ ;
+革新派 > kakushinha\ ;
+探求者 > tankyuusha\ ;
+戦病死 > senbyoushi\ ;
+男性的 > danseiteki\ ;
+乳酸菌 > nyuusankin\ ;
+前照灯 > zenshoutou\ ;
+腸捻転 > chounenten\ ;
+親分株 > oyabunkabu\ ;
+学用品 > gakuyouhin\ ;
+特殊性 > tokushusei\ ;
+単色画 > tanshokuga\ ;
+仕立券 > shitateken\ ;
+陰弁慶 > kagebenkei\ ;
+混血児 > konketsuji\ ;
+販売元 > hanbaimoto\ ;
+常習犯 > joushuuhan\ ;
+清涼剤 > seiryouzai\ ;
+最小値 > saishouchi\ ;
+水族館 > suizokukan\ ;
+共犯者 > kyouhansha\ ;
+寿司飯 > sushimeshi\ ;
+急転換 > kyuutenkan\ ;
+招待状 > shoutaijou\ ;
+打撲傷 > dabokushou\ ;
+特待券 > tokutaiken\ ;
+毒人参 > dokuninjin\ ;
+天竺葵 > tenjikuaoi\ ;
+女世帯 > on''najotai\ ;
+人間的 > ningenteki\ ;
+診断書 > shindansho\ ;
+蘚苔学 > sentaigaku\ ;
+原稿料 > genkouryou\ ;
+監督官 > kantokukan\ ;
+商務省 > shoumushou\ ;
+宣告書 > senkokusho\ ;
+夜夜中 > yoruyonaka\ ;
+通信簿 > tsuushinbo\ ;
+堆積岩 > taisekigan\ ;
+抑留所 > yokuryuujo\ ;
+撞木杖 > shumokuzue\ ;
+黄金率 > ougonritsu\ ;
+堆積層 > taisekisou\ ;
+合唱団 > gasshoudan\ ;
+好敵手 > koutekishu\ ;
+文章題 > bunshoudai\ ;
+金物屋 > kanamonoya\ ;
+団菊祭 > dangikusai\ ;
+緩衝液 > kanshoueki\ ;
+寄宿舎 > kishukusha\ ;
+潜望鏡 > senboukyou\ ;
+新左翼 > shinsayoku\ ;
+遡及的 > sokyuuteki\ ;
+同情心 > doujoushin\ ;
+下稽古 > shitageiko\ ;
+競争者 > kyousousha\ ;
+商店街 > shoutengai\ ;
+玉手箱 > tamatebako\ ;
+上半身 > jouhanshin\ ;
+測定法 > sokuteihou\ ;
+降圧剤 > kouatsuzai\ ;
+急傾斜 > kyuukeisha\ ;
+両棲類 > ryouseirui\ ;
+最上級 > saijoukyuu\ ;
+偃月刀 > engetsutou\ ;
+看護卒 > kangosotsu\ ;
+罫線表 > keisenhyou\ ;
+針土竜 > harimogura\ ;
+灯台守 > toudaimori\ ;
+仮免状 > karimenjou\ ;
+弾薬庫 > dan''yakuko\ ;
+合法的 > gouhouteki\ ;
+挫折感 > zasetsukan\ ;
+干葡萄 > hoshibudou\ ;
+赤新聞 > akashinbun\ ;
+膠着語 > kouchakugo\ ;
+終止形 > shuushikei\ ;
+出港船 > shukkousen\ ;
+輸入額 > yunyuugaku\ ;
+甲殻類 > koukakurui\ ;
+障壁画 > shouhekiga\ ;
+溶接機 > yousetsuki\ ;
+乗組員 > norikumiin\ ;
+腎臓病 > jinzoubyou\ ;
+可搬式 > kahanshiki\ ;
+健筆家 > kenpitsuka\ ;
+正中線 > seichuusen\ ;
+千年間 > sen''nenkan\ ;
+棒磁石 > boujishaku\ ;
+観賞魚 > kanshougyo\ ;
+神学校 > shingakkou\ ;
+作業服 > sagyoufuku\ ;
+発着所 > hatchakujo\ ;
+親近感 > shinkinkan\ ;
+乱泥流 > randeiryuu\ ;
+当直員 > touchokuin\ ;
+統計的 > toukeiteki\ ;
+芸術家 > geijutsuka\ ;
+玄関先 > genkansaki\ ;
+深海魚 > shinkaigyo\ ;
+同志的 > doushiteki\ ;
+価千金 > ataisenkin\ ;
+九回戦 > kyuukaisen\ ;
+半永久 > han''eikyuu\ ;
+雑役婦 > zatsuekifu\ ;
+冷凍業 > reitougyou\ ;
+両生類 > ryouseirui\ ;
+儒教的 > jukyouteki\ ;
+揚陸艦 > yourikukan\ ;
+重謹慎 > juukinshin\ ;
+凍豆腐 > shimidoufu\ ;
+永谷園 > nagatanien\ ;
+二槽式 > nisoushiki\ ;
+相乗積 > soujouseki\ ;
+菌類学 > kinruigaku\ ;
+雑役夫 > zatsuekifu\ ;
+新刊書 > shinkansho\ ;
+青少年 > seishounen\ ;
+推進者 > suishinsha\ ;
+列席者 > ressekisha\ ;
+国産品 > kokusanhin\ ;
+懐旧談 > kaikyuudan\ ;
+枯草熱 > kosounetsu\ ;
+中甲板 > chuukanpan\ ;
+綿実油 > menjitsuyu\ ;
+埋伏歯 > maifukushi\ ;
+内緒事 > naishogoto\ ;
+一等卒 > ittousotsu\ ;
+神代杉 > jindaisugi\ ;
+値嵩株 > negasakabu\ ;
+政治力 > seijiryoku\ ;
+答申書 > toushinsho\ ;
+乱心者 > ranshinsha\ ;
+人間業 > ningenwaza\ ;
+共謀者 > kyoubousha\ ;
+来賓席 > raihinseki\ ;
+舞踏曲 > butoukyoku\ ;
+修行者 > shugyousha\ ;
+島根県 > shimaneken\ ;
+強硬論 > kyoukouron\ ;
+法治国 > houchikoku\ ;
+不得策 > futokusaku\ ;
+在米中 > zaibeichuu\ ;
+匿名性 > tokumeisei\ ;
+登山靴 > tozangutsu\ ;
+座敷牢 > zashikirou\ ;
+神格化 > shinkakuka\ ;
+赤外線 > sekigaisen\ ;
+薬用酒 > yakuyoushu\ ;
+結核菌 > kekkakukin\ ;
+草履虫 > zourimushi\ ;
+大衆性 > taishuusei\ ;
+寄宿生 > kishukusei\ ;
+昇汞水 > shoukousui\ ;
+武者慄 > mushaburui\ ;
+文章論 > bunshouron\ ;
+特選品 > tokusenhin\ ;
+近親者 > kinshinsha\ ;
+複数形 > fukusuukei\ ;
+幽邃境 > yuusuikyou\ ;
+再投票 > saitouhyou\ ;
+不活動 > fukatsudou\ ;
+全寮制 > zenryousei\ ;
+追悼会 > tsuitoukai\ ;
+白兵戦 > hakuheisen\ ;
+請求権 > seikyuuken\ ;
+忠霊塔 > chuureitou\ ;
+隙間風 > sukimakaze\ ;
+共有地 > kyouyuuchi\ ;
+片為替 > katagawase\ ;
+緩衝弁 > kanshouben\ ;
+宿根草 > shukkonsou\ ;
+大立者 > oodatemono\ ;
+泰山木 > taisanboku\ ;
+抽籤券 > chuusenken\ ;
+糸状虫 > shijouchuu\ ;
+絶縁体 > zetsuentai\ ;
+青果物 > seikabutsu\ ;
+里言葉 > satokotoba\ ;
+購読者 > koudokusha\ ;
+売買高 > baibaidaka\ ;
+挺進隊 > teishintai\ ;
+脱水症 > dassuishou\ ;
+勧進帳 > kanjinchou\ ;
+拡張化 > kakuchouka\ ;
+殺人鬼 > satsujinki\ ;
+流動性 > ryuudousei\ ;
+四重唱 > shijuushou\ ;
+教育者 > kyouikusha\ ;
+反対側 > hantaigawa\ ;
+琴一張 > kotoitchou\ ;
+内在的 > naizaiteki\ ;
+三段跳 > sandantobi\ ;
+飛躍的 > hiyakuteki\ ;
+手長猿 > tenagazaru\ ;
+老眼鏡 > rougankyou\ ;
+仮処分 > karishobun\ ;
+全人格 > zenjinkaku\ ;
+分泌物 > bunpibutsu\ ;
+請求書 > seikyuusho\ ;
+不決断 > fuketsudan\ ;
+先先週 > sensenshuu\ ;
+致命的 > chimeiteki\ ;
+乳石英 > nyuusekiei\ ;
+財政学 > zaiseigaku\ ;
+管弦楽 > kangengaku\ ;
+飲食店 > inshokuten\ ;
+紙製品 > kamiseihin\ ;
+黄金律 > ougonritsu\ ;
+法律案 > houritsuan\ ;
+半盲症 > hanmoushou\ ;
+硝酸銀 > shousangin\ ;
+防総省 > bousoushou\ ;
+逆比例 > gyakuhirei\ ;
+投書箱 > toushobako\ ;
+城下町 > joukamachi\ ;
+特別委 > tokubetsui\ ;
+村芝居 > murashibai\ ;
+継息子 > mamamusuko\ ;
+発信音 > hasshin''on\ ;
+四死球 > shishikyuu\ ;
+献金箱 > kenkinbako\ ;
+戦略家 > senryakuka\ ;
+公聴会 > kouchoukai\ ;
+気鬱症 > kiutsushou\ ;
+複数回 > fukusuukai\ ;
+会計学 > kaikeigaku\ ;
+簡略化 > kanryakuka\ ;
+給電線 > kyuudensen\ ;
+吉祥天 > kisshouten\ ;
+御影石 > mikageishi\ ;
+内国産 > naikokusan\ ;
+雪月花 > setsugekka\ ;
+私書箱 > shishobako\ ;
+直映館 > chokueikan\ ;
+病理学 > byourigaku\ ;
+復刻版 > fukkokuban\ ;
+退廃的 > taihaiteki\ ;
+人間学 > ningengaku\ ;
+下着類 > shitagirui\ ;
+唐変木 > touhenboku\ ;
+線撮影 > sensatsuei\ ;
+新生面 > shinseimen\ ;
+数日後 > suujitsugo\ ;
+超合金 > chougoukin\ ;
+多国籍 > takokuseki\ ;
+積算法 > sekisanhou\ ;
+外為法 > gaitamehou\ ;
+出品者 > shuppinsha\ ;
+覚醒剤 > kakuseizai\ ;
+高山蝶 > kouzanchou\ ;
+近縁属 > kin''enzoku\ ;
+上達部 > kandachime\ ;
+可鍛鉄 > katantetsu\ ;
+心理的 > shinriteki\ ;
+乗換券 > norikaeken\ ;
+教育界 > kyouikukai\ ;
+陰極線 > inkyokusen\ ;
+半艇身 > hanteishin\ ;
+親兄弟 > oyakyoudai\ ;
+旅館業 > ryokangyou\ ;
+学期末 > gakkimatsu\ ;
+到来物 > touraimono\ ;
+沖仲仕 > okinakashi\ ;
+外国製 > gaikokusei\ ;
+終盤戦 > shuubansen\ ;
+逆光線 > gyakkousen\ ;
+象徴派 > shouchouha\ ;
+勧進元 > kanjinmoto\ ;
+魚類学 > gyoruigaku\ ;
+縞瑪瑙 > shimamenou\ ;
+真空管 > shinkuukan\ ;
+舎利別 > sharibetsu\ ;
+京阪神 > keihanshin\ ;
+慣習法 > kanshuuhou\ ;
+頭陀袋 > zudabukuro\ ;
+陰極管 > inkyokukan\ ;
+混和物 > konwabutsu\ ;
+刀鍛冶 > katanakaji\ ;
+潜伏性 > senpukusei\ ;
+招待券 > shoutaiken\ ;
+受難節 > junansetsu\ ;
+測定値 > sokuteichi\ ;
+化粧紙 > keshougami\ ;
+大憲章 > daikenshou\ ;
+単色光 > tanshokkou\ ;
+甲殻綱 > koukakukou\ ;
+集合体 > shuugoutai\ ;
+立往生 > tachioujou\ ;
+子宮頸 > shikyuukei\ ;
+経験的 > keikenteki\ ;
+化粧箱 > keshoubako\ ;
+二番星 > nibanboshi\ ;
+法律家 > houritsuka\ ;
+洗濯板 > sentakuita\ ;
+滑沢剤 > kattakuzai\ ;
+対称性 > taishousei\ ;
+少年法 > shounenhou\ ;
+徳川家 > tokugawake\ ;
+流動体 > ryuudoutai\ ;
+終刊号 > shuukangou\ ;
+監修者 > kanshuusha\ ;
+共編者 > kyouhensha\ ;
+統計学 > toukeigaku\ ;
+輪郭線 > rinkakusen\ ;
+軍艦鳥 > gunkandori\ ;
+商船隊 > shousentai\ ;
+超満員 > chouman''in\ ;
+片手鍋 > katatenabe\ ;
+股関節 > kokansetsu\ ;
+調味料 > choumiryou\ ;
+又小作 > matakosaku\ ;
+不正直 > fushoujiki\ ;
+洪積層 > kousekisou\ ;
+検圧器 > ken''atsuki\ ;
+染物屋 > somemonoya\ ;
+配膳人 > haizen''nin\ ;
+境界線 > kyoukaisen\ ;
+静物画 > seibutsuga\ ;
+教育法 > kyouikuhou\ ;
+収集魔 > shuushuuma\ ;
+離職者 > rishokusha\ ;
+報奨金 > houshoukin\ ;
+股間節 > kokansetsu\ ;
+牧師館 > bokushikan\ ;
+占領軍 > senryougun\ ;
+中生代 > chuuseidai\ ;
+下半期 > shimohanki\ ;
+教会法 > kyoukaihou\ ;
+原水爆 > gensuibaku\ ;
+刺繍糸 > shishuuito\ ;
+搭乗橋 > toujoukyou\ ;
+石鹸箱 > sekkenbako\ ;
+回転軸 > kaitenjiku\ ;
+刻一刻 > kokuikkoku\ ;
+創造的 > souzouteki\ ;
+痴呆症 > chihoushou\ ;
+排水量 > haisuiryou\ ;
+各情報 > kakujouhou\ ;
+核文法 > kakubunpou\ ;
+大々的 > daidaiteki\ ;
+売上高 > uriagedaka\ ;
+深成岩 > shinseigan\ ;
+胸三寸 > munesanzun\ ;
+得意客 > tokuikyaku\ ;
+徴兵制 > chouheisei\ ;
+性本能 > seihon''nou\ ;
+休診日 > kyuushinbi\ ;
+執金鋼 > shikkongou\ ;
+竜皮巻 > ryuuhimaki\ ;
+回帰熱 > kaikinetsu\ ;
+祝賀会 > shukugakai\ ;
+生活費 > seikatsuhi\ ;
+法務局 > houmukyoku\ ;
+中学校 > chuugakkou\ ;
+月見草 > tsukimisou\ ;
+通俗化 > tsuuzokuka\ ;
+直交性 > chokkousei\ ;
+稲熱病 > imochibyou\ ;
+高踏的 > koutouteki\ ;
+給料日 > kyuuryoubi\ ;
+万年青 > man''nensei\ ;
+小前提 > shouzentei\ ;
+六三制 > rokusansei\ ;
+造林学 > zouringaku\ ;
+全責任 > zensekinin\ ;
+照明弾 > shoumeidan\ ;
+愛国心 > aikokushin\ ;
+石鹸皿 > sekkenzara\ ;
+予定説 > yoteisetsu\ ;
+脳硬塞 > noukousoku\ ;
+総大将 > soudaishou\ ;
+始末屋 > shimatsuya\ ;
+国有林 > kokuyuurin\ ;
+薬学部 > yakugakubu\ ;
+批判力 > hihanryoku\ ;
+等身大 > toushindai\ ;
+総攻撃 > soukougeki\ ;
+高山病 > kouzanbyou\ ;
+五月祭 > gogatsusai\ ;
+軍楽隊 > gungakutai\ ;
+三重唱 > sanjuushou\ ;
+南京豆 > nankinmame\ ;
+曲馬師 > kyokubashi\ ;
+副司令 > fukushirei\ ;
+昼日中 > hiruhinaka\ ;
+常識家 > joushikika\ ;
+言葉尻 > kotobajiri\ ;
+肺浸潤 > haishinjun\ ;
+耕作者 > kousakusha\ ;
+同心円 > doushin''en\ ;
+致死量 > chishiryou\ ;
+弁証論 > benshouron\ ;
+新登場 > shintoujou\ ;
+強力粉 > kyourikiko\ ;
+予備室 > yobishitsu\ ;
+店頭株 > tentoukabu\ ;
+発射薬 > hasshayaku\ ;
+化粧水 > keshoumizu\ ;
+十進法 > jisshinhou\ ;
+文筆家 > bunpitsuka\ ;
+従量税 > juuryouzei\ ;
+瓦屋根 > kawarayane\ ;
+関係調 > kankeichou\ ;
+唯心論 > yuishinron\ ;
+励振管 > reishinkan\ ;
+全日空 > zen''nikkuu\ ;
+二枚腰 > nimaigoshi\ ;
+流刑地 > ryuukeichi\ ;
+洪積世 > kousekisei\ ;
+震災地 > shinsaichi\ ;
+眼軟膏 > gan''nankou\ ;
+水晶体 > suishoutai\ ;
+点滅器 > tenmetsuki\ ;
+兄弟分 > kyoudaibun\ ;
+金門橋 > kinmonkyou\ ;
+景勝地 > keishouchi\ ;
+内接円 > naisetsuen\ ;
+生活苦 > seikatsuku\ ;
+東照宮 > toushouguu\ ;
+受難曲 > junankyoku\ ;
+対流圏 > tairyuuken\ ;
+危険物 > kikenbutsu\ ;
+研修生 > kenshuusei\ ;
+近親婚 > kinshinkon\ ;
+交読文 > koudokubun\ ;
+脳卒中 > nousotchuu\ ;
+焼死体 > shoushitai\ ;
+一神教 > isshinkyou\ ;
+派出所 > hashutsujo\ ;
+振動計 > shindoukei\ ;
+屈折語 > kussetsugo\ ;
+曲馬団 > kyokubadan\ ;
+注射液 > chuushaeki\ ;
+福禄寿 > fukurokuju\ ;
+紙吹雪 > kamifubuki\ ;
+仲介者 > chuukaisha\ ;
+集配人 > shuuhainin\ ;
+定礎式 > teisoshiki\ ;
+裁判長 > saibanchou\ ;
+電話局 > denwakyoku\ ;
+俸祿米 > hourokumai\ ;
+花吹雪 > hanafubuki\ ;
+兵糧米 > hyouroumai\ ;
+角細工 > tsunozaiku\ ;
+輸送力 > yusouryoku\ ;
+林野庁 > rin''yachou\ ;
+支配的 > shihaiteki\ ;
+太鼓橋 > taikobashi\ ;
+箔力粉 > hakurikiko\ ;
+獅子鼻 > shishibana\ ;
+連隊長 > rentaichou\ ;
+端末機 > tanmatsuki\ ;
+吹奏楽 > suisougaku\ ;
+熱射病 > nesshabyou\ ;
+徳用瓶 > tokuyoubin\ ;
+天津神 > amatsukami\ ;
+降水量 > kousuiryou\ ;
+出金者 > shukkinsha\ ;
+典型的 > tenkeiteki\ ;
+中枢性 > chuusuusei\ ;
+迷彩服 > meisaifuku\ ;
+住宅難 > juutakunan\ ;
+化粧料 > keshouryou\ ;
+心理学 > shinrigaku\ ;
+芳名録 > houmeiroku\ ;
+動力炉 > douryokuro\ ;
+小児病 > shounibyou\ ;
+少年団 > shounendan\ ;
+全面的 > zenmenteki\ ;
+小市民 > shoushimin\ ;
+副次的 > fukujiteki\ ;
+椎間板 > tsuikanban\ ;
+課税率 > kazeiritsu\ ;
+郵政省 > yuuseishou\ ;
+夏場所 > natsubasho\ ;
+厚化粧 > atsugeshou\ ;
+二人組 > futarigumi\ ;
+致命傷 > chimeishou\ ;
+副都心 > fukutoshin\ ;
+発案者 > hatsuansha\ ;
+強力犯 > gourikihan\ ;
+洗濯代 > sentakudai\ ;
+遊泳術 > yuueijutsu\ ;
+製陶業 > seitougyou\ ;
+球座標 > kyuuzahyou\ ;
+占有権 > sen''yuuken\ ;
+沈丁花 > chinchouge\ ;
+葡萄牙 > porutogaru\ ;
+教会堂 > kyoukaidou\ ;
+支店長 > shitenchou\ ;
+御年玉 > otoshidama\ ;
+西洋葱 > seiyounegi\ ;
+瓜実顔 > urizanegao\ ;
+真空帯 > shinkuutai\ ;
+追送検 > tsuisouken\ ;
+未決監 > miketsukan\ ;
+普通株 > futsuukabu\ ;
+商店主 > shoutenshu\ ;
+採石場 > saisekijou\ ;
+牢名主 > rounanushi\ ;
+累進税 > ruishinzei\ ;
+大競争 > daikyousou\ ;
+森林法 > shinrinhou\ ;
+同郷人 > doukyoujin\ ;
+派出婦 > hashutsufu\ ;
+内国債 > naikokusai\ ;
+支度金 > shitakukin\ ;
+再浸礼 > saishinrei\ ;
+国有地 > kokuyuuchi\ ;
+親展書 > shintensho\ ;
+廉恥心 > renchishin\ ;
+皆既食 > kaikishoku\ ;
+転居先 > tenkyosaki\ ;
+連絡駅 > renrakueki\ ;
+電話口 > denwaguchi\ ;
+精勤賞 > seikinshou\ ;
+健忘症 > kenboushou\ ;
+教会史 > kyoukaishi\ ;
+少年会 > shounenkai\ ;
+贋手紙 > nisetegami\ ;
+出征軍 > shusseigun\ ;
+計画者 > keikakusha\ ;
+散文的 > sanbunteki\ ;
+挺身隊 > teishintai\ ;
+友好的 > yuukouteki\ ;
+召喚状 > shoukanjou\ ;
+認証者 > ninshousha\ ;
+年産額 > nensangaku\ ;
+換算表 > kanzanhyou\ ;
+沖縄県 > okinawaken\ ;
+救世軍 > kyuuseigun\ ;
+満足感 > manzokukan\ ;
+奉公先 > houkousaki\ ;
+電報料 > denpouryou\ ;
+荒事師 > aragotoshi\ ;
+桃源郷 > tougenkyou\ ;
+蓮月尼 > rengetsuni\ ;
+羽斑蚊 > hamadaraka\ ;
+私書函 > shishobako\ ;
+朴念仁 > bokunenjin\ ;
+子宮癌 > shikyuugan\ ;
+磁力計 > jiryokukei\ ;
+根粒菌 > konryuukin\ ;
+縦旋盤 > tatesenban\ ;
+市役所 > shiyakusho\ ;
+検流計 > kenryuukei\ ;
+即売会 > sokubaikai\ ;
+延人員 > nobejin''in\ ;
+調合剤 > chougouzai\ ;
+要確認 > youkakunin\ ;
+常緑樹 > jouryokuju\ ;
+選球眼 > senkyuugan\ ;
+石合戦 > ishigassen\ ;
+封建的 > houkenteki\ ;
+駐在所 > chuuzaisho\ ;
+世帯主 > setainushi\ ;
+平常心 > heijoushin\ ;
+豆台風 > mametaifuu\ ;
+鉱山業 > kouzangyou\ ;
+構文木 > koubunmoku\ ;
+参謀長 > sanbouchou\ ;
+写真館 > shashinkan\ ;
+戦時色 > senjishoku\ ;
+住宅街 > juutakugai\ ;
+頓珍漢 > tonchinkan\ ;
+弱酸性 > jakusansei\ ;
+中仕切 > nakajikiri\ ;
+初舞台 > hatsubutai\ ;
+写真顔 > shashingao\ ;
+南京玉 > nankindama\ ;
+船籍港 > sensekikou\ ;
+燐灰石 > rinkaiseki\ ;
+一年間 > ichinenkan\ ;
+非接触 > hisesshoku\ ;
+持続的 > jizokuteki\ ;
+営業中 > eigyouchuu\ ;
+超過額 > choukagaku\ ;
+預貸率 > yotairitsu\ ;
+代用肉 > daiyouniku\ ;
+時系列 > jikeiretsu\ ;
+子供服 > kodomofuku\ ;
+警視庁 > keishichou\ ;
+免疫性 > men''ekisei\ ;
+系統的 > keitouteki\ ;
+軍用金 > gun''youkin\ ;
+荒仕事 > arashigoto\ ;
+登山客 > tozankyaku\ ;
+低賃金 > teichingin\ ;
+侵害者 > shingaisha\ ;
+売上票 > uriagepyou\ ;
+放送劇 > housougeki\ ;
+日程表 > nitteihyou\ ;
+副葬品 > fukusouhin\ ;
+挿入文 > sounyuubun\ ;
+初学者 > shogakusha\ ;
+教習所 > kyoushuujo\ ;
+入場門 > nyuujoumon\ ;
+官庁街 > kanchougai\ ;
+規則的 > kisokuteki\ ;
+小冊子 > shousasshi\ ;
+輻射線 > fukushasen\ ;
+十進制 > jisshinsei\ ;
+複製品 > fukuseihin\ ;
+蟹工船 > kanikousen\ ;
+森林帯 > shinrintai\ ;
+結晶系 > kesshoukei\ ;
+無秩序 > muchitsujo\ ;
+主観的 > shukanteki\ ;
+破壊力 > hakairyoku\ ;
+三毛作 > sanmousaku\ ;
+桧皮葺 > hiwadabuki\ ;
+力織機 > rikishokki\ ;
+六面体 > rokumentai\ ;
+白人種 > hakujinshu\ ;
+汎神論 > hanshinron\ ;
+仮定款 > kariteikan\ ;
+納税額 > nouzeigaku\ ;
+諸外国 > shogaikoku\ ;
+外接円 > gaisetsuen\ ;
+製紙業 > seishigyou\ ;
+鉛直線 > enchokusen\ ;
+心電計 > shindenkei\ ;
+福利表 > fukurihyou\ ;
+微生物 > biseibutsu\ ;
+宝石店 > housekiten\ ;
+創業者 > sougyousha\ ;
+革製品 > kawaseihin\ ;
+平年作 > heinensaku\ ;
+生態学 > seitaigaku\ ;
+猿芝居 > sarushibai\ ;
+場外株 > jougaikabu\ ;
+弁証法 > benshouhou\ ;
+協定書 > kyouteisho\ ;
+五旬節 > gojunsetsu\ ;
+初任給 > shoninkyuu\ ;
+陸曹等 > rikusoutou\ ;
+好成績 > kouseiseki\ ;
+通有性 > tsuuyuusei\ ;
+聴導犬 > choudouken\ ;
+磁力線 > jiryokusen\ ;
+離婚率 > rikonritsu\ ;
+硝酸塩 > shousan''en\ ;
+再確認 > saikakunin\ ;
+発案権 > hatsuanken\ ;
+皆既蝕 > kaikishoku\ ;
+酪製品 > rakuseihin\ ;
+土性骨 > doshoubone\ ;
+避妊薬 > hinin''yaku\ ;
+発生学 > hasseigaku\ ;
+人種的 > jinshuteki\ ;
+磁石盤 > jishakuban\ ;
+大蔵経 > daizoukyou\ ;
+河原鶸 > kawarahiwa\ ;
+留置場 > ryuuchijou\ ;
+通風孔 > tsuufuukou\ ;
+要求者 > youkyuusha\ ;
+製糸業 > seishigyou\ ;
+知恵袋 > chiebukuro\ ;
+紙鉄砲 > kamideppou\ ;
+初飛行 > hatsuhikou\ ;
+登山口 > tozanguchi\ ;
+貯水量 > chosuiryou\ ;
+社会鍋 > shakainabe\ ;
+殊勲賞 > shukunshou\ ;
+運動靴 > undougutsu\ ;
+交際国 > kousaikoku\ ;
+八文字 > hachimonji\ ;
+開発部 > kaihatsubu\ ;
+調印国 > chouinkoku\ ;
+相続税 > souzokuzei\ ;
+蝋人形 > rouningyou\ ;
+人名録 > jinmeiroku\ ;
+落第生 > rakudaisei\ ;
+凝灰岩 > gyoukaigan\ ;
+利付債 > ritsukisai\ ;
+体腔壁 > taikouheki\ ;
+指掌紋 > shishoumon\ ;
+奇跡的 > kisekiteki\ ;
+蛋白源 > tanpakugen\ ;
+断末魔 > danmatsuma\ ;
+詳伝社 > shoudensha\ ;
+葬儀式 > sougishiki\ ;
+損害額 > songaigaku\ ;
+鉄鋼業 > tekkougyou\ ;
+一弦琴 > ichigenkin\ ;
+暗紫色 > anshishoku\ ;
+先任順 > sen''ninjun\ ;
+好戦的 > kousenteki\ ;
+防長官 > bouchoukan\ ;
+水圧計 > suiatsukei\ ;
+外国勢 > gaikokuzei\ ;
+韓国人 > kankokujin\ ;
+敢闘賞 > kantoushou\ ;
+毒見役 > dokumiyaku\ ;
+機内食 > kinaishoku\ ;
+裏番組 > urabangumi\ ;
+国防論 > kokubouron\ ;
+官求品 > kankyuuhin\ ;
+国際線 > kokusaisen\ ;
+貸金庫 > kashikinko\ ;
+速記術 > sokkijutsu\ ;
+国言葉 > kunikotoba\ ;
+匐行疹 > fukkoushin\ ;
+町工場 > machikouba\ ;
+至急便 > shikyuubin\ ;
+宝冠章 > houkanshou\ ;
+製糖業 > seitougyou\ ;
+若旦那 > wakadan''na\ ;
+挑戦者 > chousensha\ ;
+鉄鉱石 > tekkouseki\ ;
+横隔膜 > oukakumaku\ ;
+同業者 > dougyousha\ ;
+活用語 > katsuyougo\ ;
+深呼吸 > shinkokyuu\ ;
+三番鶏 > sanbandori\ ;
+判任官 > han''ninkan\ ;
+出勤者 > shukkinsha\ ;
+外国債 > gaikokusai\ ;
+連絡船 > renrakusen\ ;
+落第点 > rakudaiten\ ;
+進行相 > shinkousou\ ;
+三番鳥 > sanbandori\ ;
+決定的 > ketteiteki\ ;
+肉料理 > nikuryouri\ ;
+文法的 > bunpouteki\ ;
+国文法 > kokubunpou\ ;
+超弩級 > choudokyuu\ ;
+大蔵省 > ookurashou\ ;
+感情的 > kanjouteki\ ;
+乗合船 > noriaibune\ ;
+徳用品 > tokuyouhin\ ;
+燃料棒 > nenryoubou\ ;
+二日酔 > futsukayoi\ ;
+神経系 > shinkeikei\ ;
+仮議長 > karigichou\ ;
+独断論 > dokudanron\ ;
+外国人 > gaikokujin\ ;
+珍糞漢 > chinpunkan\ ;
+振動板 > shindouban\ ;
+主教冠 > shukyoukan\ ;
+正教師 > seikyoushi\ ;
+細菌学 > saikingaku\ ;
+耕作地 > kousakuchi\ ;
+改進党 > kaishintou\ ;
+三分搗 > sanbutsuki\ ;
+休閑地 > kyuukanchi\ ;
+軍用艦 > gun''youkan\ ;
+新聞紙 > shinbunshi\ ;
+輻射点 > fukushaten\ ;
+世俗的 > sezokuteki\ ;
+重圧感 > juuatsukan\ ;
+豆鉄砲 > mamedeppou\ ;
+優秀品 > yuushuuhin\ ;
+金融界 > kin''yuukai\ ;
+傍聴券 > bouchouken\ ;
+貯金箱 > chokinbako\ ;
+国境線 > kokkyousen\ ;
+蚕糸業 > sanshigyou\ ;
+一年草 > ichinensou\ ;
+高密度 > koumitsudo\ ;
+免疫体 > men''ekitai\ ;
+磁気嵐 > jikiarashi\ ;
+振動数 > shindousuu\ ;
+大礼服 > taireifuku\ ;
+改良種 > kairyoushu\ ;
+北国人 > hokkokujin\ ;
+連絡線 > renrakusen\ ;
+牢役人 > rouyakunin\ ;
+内祝言 > naishuugen\ ;
+半身像 > hanshinzou\ ;
+大黒天 > daikokuten\ ;
+不分割 > fubunkatsu\ ;
+西北西 > seihokusei\ ;
+中世史 > chuuseishi\ ;
+怒髪天 > dohatsuten\ ;
+反革命 > hankakumei\ ;
+新聞社 > shinbunsha\ ;
+一機軸 > ichikijiku\ ;
+集魚灯 > shuugyotou\ ;
+雪見酒 > yukimizake\ ;
+坊主頭 > bouzuatama\ ;
+先験的 > senkenteki\ ;
+闇給与 > yamikyuuyo\ ;
+傍聴人 > bouchounin\ ;
+事実上 > jijitsujou\ ;
+義侠心 > gikyoushin\ ;
+用水堀 > yousuibori\ ;
+仮普請 > karibushin\ ;
+占領地 > senryouchi\ ;
+寝装品 > shinsouhin\ ;
+町内会 > chounaikai\ ;
+同盟国 > doumeikoku\ ;
+発育期 > hatsuikuki\ ;
+誓約書 > seiyakusho\ ;
+発展中 > hattenchuu\ ;
+茶番的 > chabanteki\ ;
+特産品 > tokusanhin\ ;
+製粉業 > seifungyou\ ;
+消去法 > shoukyohou\ ;
+肛門学 > koumongaku\ ;
+大司教 > daishikyou\ ;
+妄想症 > mousoushou\ ;
+御用達 > goyoudatsu\ ;
+展示物 > tenjibutsu\ ;
+自殺者 > jisatsusha\ ;
+射幸心 > shakoushin\ ;
+作曲家 > sakkyokuka\ ;
+公教会 > koukyoukai\ ;
+計画性 > keikakusei\ ;
+切迫感 > seppakukan\ ;
+丸天井 > marutenjou\ ;
+枢密院 > suumitsuin\ ;
+四六判 > shirokuban\ ;
+追体験 > tsuitaiken\ ;
+入場者 > nyuujousha\ ;
+半病人 > hanbyounin\ ;
+捜索隊 > sousakutai\ ;
+友好国 > yuukoukoku\ ;
+殿上人 > tenjoubito\ ;
+截断機 > setsudanki\ ;
+無水物 > musuibutsu\ ;
+健康的 > kenkouteki\ ;
+新体操 > shintaisou\ ;
+空中線 > kuuchuusen\ ;
+田舎道 > inakamichi\ ;
+波乃花 > naminohana\ ;
+偶像教 > guuzoukyou\ ;
+神話学 > shinwagaku\ ;
+相続権 > souzokuken\ ;
+性教育 > seikyouiku\ ;
+前哨線 > zenshousen\ ;
+独奏者 > dokusousha\ ;
+赤血球 > sekkekkyuu\ ;
+天台宗 > tendaishuu\ ;
+軍楽手 > gungakushu\ ;
+軍艦巻 > gunkanmaki\ ;
+暗褐色 > ankasshoku\ ;
+逆作用 > gyakusayou\ ;
+挑戦状 > chousenjou\ ;
+検量線 > kenryousen\ ;
+網杓子 > amijakushi\ ;
+再注文 > saichuumon\ ;
+内反足 > naihansoku\ ;
+社用族 > shayouzoku\ ;
+年少者 > nenshousha\ ;
+新生代 > shinseidai\ ;
+保管物 > hokanbutsu\ ;
+優勝者 > yuushousha\ ;
+改良点 > kairyouten\ ;
+給排水 > kyuuhaisui\ ;
+天眼鏡 > tengankyou\ ;
+三連勝 > sanrenshou\ ;
+不発弾 > fuhatsudan\ ;
+半官的 > hankanteki\ ;
+振動子 > shindoushi\ ;
+活発化 > kappatsuka\ ;
+収集家 > shuushuuka\ ;
+酸化鉄 > sankatetsu\ ;
+新人王 > shinjin''ou\ ;
+延日数 > nobenissuu\ ;
+奉献頌 > houkenshou\ ;
+貸店舗 > kashitenpo\ ;
+二人共 > futaritomo\ ;
+収斂剤 > shuurenzai\ ;
+国際法 > kokusaihou\ ;
+高学年 > kougakunen\ ;
+核災害 > kakusaigai\ ;
+伽草子 > togizoushi\ ;
+煽情的 > senjouteki\ ;
+認証官 > ninshoukan\ ;
+養蚕業 > yousangyou\ ;
+火山脈 > kazanmyaku\ ;
+菜種殻 > natanegara\ ;
+避暑客 > hishokyaku\ ;
+汎心論 > hanshinron\ ;
+書評欄 > shohyouran\ ;
+入場税 > nyuujouzei\ ;
+試作車 > shisakusha\ ;
+獄中記 > gokuchuuki\ ;
+乳兄弟 > chikyoudai\ ;
+二七日 > futananoka\ ;
+正教会 > seikyoukai\ ;
+先生方 > senseigata\ ;
+草雲雀 > kusahibari\ ;
+侍従職 > jijuushoku\ ;
+地形学 > chikeigaku\ ;
+一直線 > itchokusen\ ;
+天眼通 > tengantsuu\ ;
+仲買人 > nakagainin\ ;
+薬理学 > yakurigaku\ ;
+国文専 > kokubunsen\ ;
+一年生 > ichinensei\ ;
+定式化 > teishikika\ ;
+商業化 > shougyouka\ ;
+一輪車 > ichirinsha\ ;
+滲炭鋼 > shintankou\ ;
+軍用犬 > gun''youken\ ;
+六角堂 > rokkakudou\ ;
+床暖房 > yukadanbou\ ;
+筆不精 > fudebushou\ ;
+公証人 > koushounin\ ;
+薄力粉 > hakurikiko\ ;
+牧草地 > bokusouchi\ ;
+属性値 > zokuseichi\ ;
+解毒薬 > gedokuyaku\ ;
+満期日 > mankijitsu\ ;
+名作選 > meisakusen\ ;
+商用文 > shouyoubun\ ;
+国語学 > kokugogaku\ ;
+可及的 > kakyuuteki\ ;
+写真班 > shashinhan\ ;
+一元論 > ichigenron\ ;
+調剤師 > chouzaishi\ ;
+単三形 > tansangata\ ;
+甲冑師 > katchuushi\ ;
+先任者 > sen''ninsha\ ;
+曲線美 > kyokusenbi\ ;
+公約数 > kouyakusuu\ ;
+熱狂者 > nekkyousha\ ;
+水紋学 > suimongaku\ ;
+人種学 > jinshugaku\ ;
+残忍性 > zan''ninsei\ ;
+相関的 > soukanteki\ ;
+写真版 > shashinban\ ;
+生息地 > seisokuchi\ ;
+知性的 > chiseiteki\ ;
+未発達 > mihattatsu\ ;
+開幕戦 > kaimakusen\ ;
+後配株 > kouhaikabu\ ;
+停泊地 > teihakuchi\ ;
+罹患率 > rikanritsu\ ;
+進行形 > shinkoukei\ ;
+道徳上 > doutokujou\ ;
+社会的 > shakaiteki\ ;
+震源地 > shingenchi\ ;
+星雲説 > seiunsetsu\ ;
+河原者 > kawaramono\ ;
+溺死者 > dekishisha\ ;
+海商法 > kaishouhou\ ;
+理髪店 > rihatsuten\ ;
+革命軍 > kakumeigun\ ;
+書誌学 > shoshigaku\ ;
+理髪師 > rihatsushi\ ;
+世俗心 > sezokushin\ ;
+適任者 > tekininsha\ ;
+変圧所 > hen''atsujo\ ;
+漢民族 > kanminzoku\ ;
+適用性 > tekiyousei\ ;
+直談判 > jikadanpan\ ;
+背信者 > haishinsha\ ;
+筆耕料 > hikkouryou\ ;
+伝法肌 > denbouhada\ ;
+繊毛虫 > senmouchuu\ ;
+競売人 > kyoubainin\ ;
+作詞者 > sakushisha\ ;
+安死術 > anshijutsu\ ;
+機動力 > kidouryoku\ ;
+最終回 > saishuukai\ ;
+主要国 > shuyoukoku\ ;
+反陽子 > han''youshi\ ;
+内向的 > naikouteki\ ;
+防潮堤 > bouchoutei\ ;
+液晶盤 > ekishouban\ ;
+神経戦 > shinkeisen\ ;
+黄八丈 > kihachijou\ ;
+表二階 > omotenikai\ ;
+試験的 > shikenteki\ ;
+屠殺場 > tosatsujou\ ;
+旅支度 > tabijitaku\ ;
+書簡集 > shokanshuu\ ;
+好戦国 > kousenkoku\ ;
+営林局 > eirinkyoku\ ;
+無重力 > mujuuryoku\ ;
+遺失者 > ishitsusha\ ;
+生得権 > seitokuken\ ;
+米騒動 > komesoudou\ ;
+新体制 > shintaisei\ ;
+血清学 > kesseigaku\ ;
+部長閲 > buchouetsu\ ;
+夜想曲 > yasoukyoku\ ;
+概念的 > gainenteki\ ;
+空中権 > kuuchuuken\ ;
+周遊券 > shuuyuuken\ ;
+創作者 > sousakusha\ ;
+含糖量 > gantouryou\ ;
+倹約家 > ken''yakuka\ ;
+出張所 > shutchoujo\ ;
+管理職 > kanrishoku\ ;
+恐怖症 > kyoufushou\ ;
+政略家 > seiryakuka\ ;
+公衆網 > koushuumou\ ;
+入場権 > nyuujouken\ ;
+督戦隊 > tokusentai\ ;
+千羽鶴 > senbadzuru\ ;
+住宅地 > juutakuchi\ ;
+内惑星 > naiwakusei\ ;
+真正直 > mashoujiki\ ;
+季節風 > kisetsufuu\ ;
+低学年 > teigakunen\ ;
+学籍簿 > gakusekibo\ ;
+立体鏡 > rittaikyou\ ;
+二項式 > nikoushiki\ ;
+百日紅 > sarusuberi\ ;
+軍略家 > gunryakuka\ ;
+民譚集 > mindanshuu\ ;
+慰問袋 > imonbukuro\ ;
+消石灰 > shousekkai\ ;
+単一化 > tan''itsuka\ ;
+専用車 > sen''yousha\ ;
+仕舞物 > shimaimono\ ;
+大白鳥 > oohakuchou\ ;
+緩徐曲 > kanjokyoku\ ;
+刀剣商 > toukenshou\ ;
+伽芝居 > togishibai\ ;
+夜々中 > yoruyonaka\ ;
+気象庁 > kishouchou\ ;
+瀝青炭 > rekiseitan\ ;
+一円玉 > ichiendama\ ;
+獅子宮 > shishikyuu\ ;
+巡洋艦 > jun''youkan\ ;
+必需品 > hitsujuhin\ ;
+不信用 > fushin''you\ ;
+測地線 > sokuchisen\ ;
+高木層 > koubokusou\ ;
+桃源境 > tougenkyou\ ;
+表層性 > hyousousei\ ;
+出席簿 > shussekibo\ ;
+親王妃 > shin''nouhi\ ;
+配給系 > haikyuukei\ ;
+変圧器 > hen''atsuki\ ;
+実体鏡 > jittaikyou\ ;
+優勝杯 > yuushouhai\ ;
+適不適 > tekifuteki\ ;
+社交的 > shakouteki\ ;
+配給米 > haikyuumai\ ;
+書記局 > shokikyoku\ ;
+贈収賄 > zoushuuwai\ ;
+凸凹紙 > totsuoushi\ ;
+裁判人 > saiban''nin\ ;
+今道心 > imadoushin\ ;
+紹介者 > shoukaisha\ ;
+空中戦 > kuuchuusen\ ;
+気象学 > kishougaku\ ;
+相続人 > souzokunin\ ;
+被告席 > hikokuseki\ ;
+乳脂肪 > nyuushibou\ ;
+農牧地 > noubokuchi\ ;
+悪戯子 > itazurakko\ ;
+射的場 > shatekijou\ ;
+前哨戦 > zenshousen\ ;
+法学者 > hougakusha\ ;
+全国紙 > zenkokushi\ ;
+救難船 > kyuunansen\ ;
+金融債 > kin''yuusai\ ;
+上載圧 > jousaiatsu\ ;
+口喧嘩 > kuchigenka\ ;
+成人病 > seijinbyou\ ;
+花水木 > hanamizuki\ ;
+造園術 > zouenjutsu\ ;
+乳腺炎 > nyuusen''en\ ;
+海流瓶 > kairyuubin\ ;
+分光学 > bunkougaku\ ;
+民主的 > minshuteki\ ;
+精白糖 > seihakutou\ ;
+無機質 > mukishitsu\ ;
+通話料 > tsuuwaryou\ ;
+改良品 > kairyouhin\ ;
+精白米 > seihakumai\ ;
+快削鋼 > kaisakukou\ ;
+日向水 > hinatamizu\ ;
+扇情的 > senjouteki\ ;
+陪審員 > baishin''in\ ;
+師団長 > shidanchou\ ;
+組職体 > soshokutai\ ;
+果実酒 > kajitsushu\ ;
+婿養子 > mukoyoushi\ ;
+写真師 > shashinshi\ ;
+下検査 > shitakensa\ ;
+風邪薬 > kazegusuri\ ;
+優勝戦 > yuushousen\ ;
+連続体 > renzokutai\ ;
+天刑病 > tenkeibyou\ ;
+半翅目 > hanshimoku\ ;
+茶番劇 > chabangeki\ ;
+写真屋 > shashin''ya\ ;
+良導体 > ryoudoutai\ ;
+救世主 > kyuuseishu\ ;
+沓手鳥 > hototogisu\ ;
+未着手 > michakushu\ ;
+作詩法 > sakushihou\ ;
+真魚鰹 > managatsuo\ ;
+出張員 > shutchouin\ ;
+人力車 > jinrikisha\ ;
+国際人 > kokusaijin\ ;
+測長機 > sokuchouki\ ;
+小主観 > shoushukan\ ;
+実践的 > jissenteki\ ;
+連結器 > renketsuki\ ;
+耐久性 > taikyuusei\ ;
+杉並木 > suginamiki\ ;
+終了後 > shuuryougo\ ;
+天道様 > tentousama\ ;
+撮影隊 > satsueitai\ ;
+花菖蒲 > hanashoubu\ ;
+検眼鏡 > kengankyou\ ;
+酸化物 > sankabutsu\ ;
+小作料 > kosakuryou\ ;
+庶民的 > shominteki\ ;
+輪舞曲 > rinbukyoku\ ;
+凍結器 > touketsuki\ ;
+夏蜜柑 > natsumikan\ ;
+等方的 > touhouteki\ ;
+岩清水 > iwashimizu\ ;
+立案者 > ritsuansha\ ;
+著述家 > chojutsuka\ ;
+脳梅毒 > noubaidoku\ ;
+軍用品 > gun''youhin\ ;
+僕仲間 > bokunakama\ ;
+難視聴 > nanshichou\ ;
+徳義心 > tokugishin\ ;
+刺激性 > shigekisei\ ;
+連絡先 > renrakusen\ ;
+近海物 > kinkaimono\ ;
+東洋通 > touyoutsuu\ ;
+鉄砲玉 > teppoudama\ ;
+価格表 > kakakuhyou\ ;
+調停者 > chouteisha\ ;
+歴史観 > rekishikan\ ;
+建築費 > kenchikuhi\ ;
+人情劇 > ninjougeki\ ;
+多神教 > tashinkyou\ ;
+前哨地 > zenshouchi\ ;
+一度丈 > ichidodake\ ;
+連絡会 > renrakukai\ ;
+一般職 > ippanshoku\ ;
+社会学 > shakaigaku\ ;
+偵察機 > teisatsuki\ ;
+寝台車 > shindaisha\ ;
+年代物 > nendaimono\ ;
+両替人 > ryougaenin\ ;
+合格者 > goukakusha\ ;
+専用線 > sen''yousen\ ;
+帯域幅 > taiikihaba\ ;
+初一念 > shoichinen\ ;
+紹介状 > shoukaijou\ ;
+消毒器 > shoudokuki\ ;
+旦那衆 > dan''nashuu\ ;
+堅信礼 > kenshinrei\ ;
+官公庁 > kankouchou\ ;
+聴聞僧 > choumonsou\ ;
+太平楽 > taiheiraku\ ;
+両天秤 > ryoutenbin\ ;
+孔雀石 > kujakuseki\ ;
+創作権 > sousakuken\ ;
+色事師 > irogotoshi\ ;
+降魔術 > koumajutsu\ ;
+少資本 > shoushihon\ ;
+資産株 > shisankabu\ ;
+恐怖心 > kyoufushin\ ;
+実験的 > jikkenteki\ ;
+使徒達 > shitotachi\ ;
+安酒場 > yasusakaba\ ;
+聴聞会 > choumonkai\ ;
+育児食 > ikujishoku\ ;
+男便所 > otokobenjo\ ;
+首実検 > kubijikken\ ;
+細胞膜 > saiboumaku\ ;
+名人肌 > meijinhada\ ;
+小学校 > shougakkou\ ;
+旧藩主 > kyuuhanshu\ ;
+民有林 > min''yuurin\ ;
+赤鉄鉱 > sekitekkou\ ;
+本草学 > honzougaku\ ;
+修正者 > shuuseisha\ ;
+風速計 > fuusokukei\ ;
+潜在的 > senzaiteki\ ;
+変拍子 > henbyoushi\ ;
+旧思想 > kyuushisou\ ;
+雑木林 > zoubokurin\ ;
+入場券 > nyuujouken\ ;
+戦闘的 > sentouteki\ ;
+終電車 > shuudensha\ ;
+背美鯨 > semikujira\ ;
+穴杓子 > anajakushi\ ;
+一年中 > ichinenjuu\ ;
+鉄砲水 > teppoumizu\ ;
+全国民 > zenkokumin\ ;
+人口学 > jinkougaku\ ;
+直滑降 > chokkakkou\ ;
+上申書 > joushinsho\ ;
+針千本 > harisenbon\ ;
+三業地 > sangyouchi\ ;
+並大抵 > namitaitei\ ;
+白雲石 > hakuunseki\ ;
+欠席者 > kessekisha\ ;
+引当金 > hikiatekin\ ;
+装飾音 > soushokuon\ ;
+視聴者 > shichousha\ ;
+乳臭児 > nyuushuuji\ ;
+手沢本 > shutakubon\ ;
+警戒心 > keikaishin\ ;
+中国語 > chuugokugo\ ;
+入手難 > nyuushunan\ ;
+電流計 > denryuukei\ ;
+山梔子 > kuchinashi\ ;
+君主国 > kunshukoku\ ;
+音楽学 > ongakugaku\ ;
+錯字症 > sakujishou\ ;
+大盤石 > daibanjaku\ ;
+分子量 > bunshiryou\ ;
+一番茶 > ichibancha\ ;
+遅刻者 > chikokusha\ ;
+再発足 > saihossoku\ ;
+対蹠的 > taishoteki\ ;
+槍術家 > soujutsuka\ ;
+歌謡曲 > kayoukyoku\ ;
+活人画 > katsujinga\ ;
+二言目 > futakotome\ ;
+原子量 > genshiryou\ ;
+大幅物 > oohabamono\ ;
+独奏会 > dokusoukai\ ;
+脱臭剤 > dasshuuzai\ ;
+快速船 > kaisokusen\ ;
+生殖器 > seishokuki\ ;
+車中談 > shachuudan\ ;
+鎮静剤 > chinseizai\ ;
+合併症 > gappeishou\ ;
+懇親会 > konshinkai\ ;
+牽牛星 > kengyuusei\ ;
+刺激剤 > shigekizai\ ;
+茶柄杓 > chabishaku\ ;
+有神論 > yuushinron\ ;
+命中数 > meichuusuu\ ;
+方解石 > houkaiseki\ ;
+売掛金 > urikakekin\ ;
+超巨星 > choukyosei\ ;
+立体的 > rittaiteki\ ;
+白昼夢 > hakuchuumu\ ;
+新記録 > shinkiroku\ ;
+注解者 > chuukaisha\ ;
+保釈金 > hoshakukin\ ;
+反粒子 > hanryuushi\ ;
+下足料 > gesokuryou\ ;
+注文書 > chuumonsho\ ;
+化合物 > kagoubutsu\ ;
+屋形船 > yakatabune\ ;
+運動力 > undouryoku\ ;
+銘銘皿 > meimeizara\ ;
+黒曜岩 > kokuyougan\ ;
+原作者 > gensakusha\ ;
+兵站学 > heitangaku\ ;
+細密画 > saimitsuga\ ;
+一番線 > ichibansen\ ;
+半人前 > han''ninmae\ ;
+脳梗塞 > noukousoku\ ;
+劇場街 > gekijougai\ ;
+来々週 > rairaishuu\ ;
+決議権 > ketsugiken\ ;
+劃一化 > kakuitsuka\ ;
+一槽式 > issoushiki\ ;
+宅急便 > takkyuubin\ ;
+老人病 > roujinbyou\ ;
+合格点 > goukakuten\ ;
+試供品 > shikyouhin\ ;
+中堅手 > chuukenshu\ ;
+葛饅頭 > kuzumanjuu\ ;
+接客婦 > sekkyakufu\ ;
+活字本 > katsujihon\ ;
+霍公鳥 > hototogisu\ ;
+問題劇 > mondaigeki\ ;
+聴講生 > choukousei\ ;
+賽銭箱 > saisenbako\ ;
+提唱者 > teishousha\ ;
+噴飯物 > funpanmono\ ;
+分極化 > bunkyokuka\ ;
+管理局 > kanrikyoku\ ;
+角錐台 > kakusuidai\ ;
+福岡県 > fukuokaken\ ;
+独壇場 > dokudanjou\ ;
+仲間褒 > nakamabome\ ;
+随想録 > zuisouroku\ ;
+撮影者 > satsueisha\ ;
+如菩薩 > nyobosatsu\ ;
+命中弾 > meichuudan\ ;
+真分数 > shinbunsuu\ ;
+雇用主 > koyounushi\ ;
+鉄砲弾 > teppoudama\ ;
+屯田兵 > tondenhei\ ;
+敵部隊 > tekibutai\ ;
+抵当権 > teitouken\ ;
+村夫子 > sonpuushi\ ;
+揚水車 > yousuisha\ ;
+救援軍 > kyuuengun\ ;
+育毛剤 > ikumouzai\ ;
+黒頭巾 > kurozukin\ ;
+解毒剤 > gedokuzai\ ;
+高姿勢 > koushisei\ ;
+屋台店 > yataimise\ ;
+起磁力 > kijiryoku\ ;
+原生林 > genseirin\ ;
+歴史画 > rekishiga\ ;
+前半生 > zenhansei\ ;
+存在論 > sonzairon\ ;
+希望的 > kibouteki\ ;
+人工雷 > jinkourai\ ;
+専用機 > sen''youki\ ;
+度量衡 > doryoukou\ ;
+党大会 > toutaikai\ ;
+同乗者 > doujousha\ ;
+労動者 > roudousha\ ;
+単数型 > tansuukei\ ;
+従兄弟 > juukeitei\ ;
+齧歯類 > gesshirui\ ;
+冠木門 > kabukimon\ ;
+付属品 > fuzokuhin\ ;
+訪問者 > houmonsha\ ;
+発頭人 > hottounin\ ;
+文選工 > bunsenkou\ ;
+同居人 > doukyonin\ ;
+参詣人 > sankeinin\ ;
+役員会 > yakuinkai\ ;
+孤立語 > koritsugo\ ;
+生菓子 > namagashi\ ;
+勘定書 > kanjousho\ ;
+開催地 > kaisaichi\ ;
+落後者 > rakugosha\ ;
+男子校 > danshikou\ ;
+一苦労 > hitokurou\ ;
+催涙弾 > sairuidan\ ;
+統治権 > touchiken\ ;
+禁転載 > kintensai\ ;
+港湾税 > kouwanzei\ ;
+不寛容 > fukan''you\ ;
+不信仰 > fushinkou\ ;
+太公望 > taikoubou\ ;
+丸括弧 > marugakko\ ;
+外向性 > gaikousei\ ;
+不足前 > tarazumae\ ;
+二国間 > nikokukan\ ;
+会葬者 > kaisousha\ ;
+福寿草 > fukujusou\ ;
+法曹界 > housoukai\ ;
+運輸省 > un''yushou\ ;
+運輸相 > un''yushou\ ;
+乗車駅 > joushaeki\ ;
+朝鮮語 > chousengo\ ;
+革命家 > kakumeika\ ;
+機密費 > kimitsuhi\ ;
+人造米 > jinzoumai\ ;
+洋品店 > youhinten\ ;
+個人的 > kojinteki\ ;
+一元化 > ichigenka\ ;
+伝道船 > dendousen\ ;
+圧迫感 > appakukan\ ;
+予防策 > yobousaku\ ;
+若隠居 > wakainkyo\ ;
+定住者 > teijuusha\ ;
+水溶性 > suiyousei\ ;
+遺言書 > yuigonsho\ ;
+代燃車 > dainensha\ ;
+変成岩 > henseigan\ ;
+一定量 > itteiryou\ ;
+苦灰石 > kukaiseki\ ;
+左心房 > sashinbou\ ;
+輪番制 > rinbansei\ ;
+請願者 > seigansha\ ;
+圧迫性 > appakusei\ ;
+羅生門 > rashoumon\ ;
+個人用 > kojin''you\ ;
+享受者 > kyoujusha\ ;
+御足労 > gosokurou\ ;
+爬虫類 > hachuurui\ ;
+迷信家 > meishinka\ ;
+書簡文 > shokanbun\ ;
+許可証 > kyokashou\ ;
+民主党 > minshutou\ ;
+太刀先 > tachisaki\ ;
+伝道者 > dendousha\ ;
+監視船 > kanshisen\ ;
+縄暖簾 > nawanoren\ ;
+綿製品 > menseihin\ ;
+出走馬 > shussouba\ ;
+二階建 > nikaidate\ ;
+修正案 > shuuseian\ ;
+宣伝戦 > sendensen\ ;
+請負業 > ukeoigyou\ ;
+類人猿 > ruijin''en\ ;
+合理的 > gouriteki\ ;
+勝負師 > shoubushi\ ;
+糸蚯蚓 > itomimizu\ ;
+延長戦 > enchousen\ ;
+土建業 > dokengyou\ ;
+贈呈品 > zouteihin\ ;
+金鉱地 > kinkouchi\ ;
+昼御飯 > hirugohan\ ;
+蒙古襞 > moukohida\ ;
+半月刊 > hangekkan\ ;
+県民税 > kenminzei\ ;
+扇動者 > sendousha\ ;
+集会所 > shuukaijo\ ;
+木工場 > mokkoujou\ ;
+洒落者 > sharemono\ ;
+戦闘帽 > sentoubou\ ;
+夕化粧 > yuugeshou\ ;
+可動堰 > kadouzeki\ ;
+大年増 > ootoshima\ ;
+法理学 > hourigaku\ ;
+黄頷蛇 > aodaishou\ ;
+透明体 > toumeitai\ ;
+故障車 > koshousha\ ;
+監視者 > kanshisha\ ;
+弁慶草 > benkeisou\ ;
+存在者 > sonzaisha\ ;
+全国区 > zenkokuku\ ;
+天皇旗 > ten''nouki\ ;
+官僚化 > kanryouka\ ;
+既得権 > kitokuken\ ;
+光線銃 > kousenjuu\ ;
+仮面劇 > kamengeki\ ;
+機械的 > kikaiteki\ ;
+熨斗紙 > noshigami\ ;
+写植機 > shashokki\ ;
+本体論 > hontairon\ ;
+発声法 > hasseihou\ ;
+給湯器 > kyuutouki\ ;
+遊興費 > yuukyouhi\ ;
+平安京 > heiankyou\ ;
+生欠伸 > namaakubi\ ;
+送付先 > soufusaki\ ;
+外野席 > gaiyaseki\ ;
+立体戦 > rittaisen\ ;
+監視網 > kanshimou\ ;
+月水金 > gessuikin\ ;
+正投手 > seitoushu\ ;
+遠赤外 > ensekigai\ ;
+指示薬 > shijiyaku\ ;
+信号機 > shingouki\ ;
+井戸車 > idoguruma\ ;
+有名税 > yuumeizei\ ;
+立体感 > rittaikan\ ;
+優先権 > yuusenken\ ;
+実験場 > jikkenjou\ ;
+牡丹餅 > botamochi\ ;
+経団連 > keidanren\ ;
+断頭台 > dantoudai\ ;
+予約者 > yoyakusha\ ;
+終夜灯 > shuuyatou\ ;
+暗黒面 > ankokumen\ ;
+宣伝屋 > senden''ya\ ;
+代替品 > daitaihin\ ;
+炭酸塩 > tansan''en\ ;
+下宿屋 > geshukuya\ ;
+補給線 > hokyuusen\ ;
+名人戦 > meijinsen\ ;
+一般席 > ippanseki\ ;
+遭難者 > sounansha\ ;
+原子砲 > genshihou\ ;
+倒置法 > touchihou\ ;
+照準器 > shoujunki\ ;
+原住民 > genjuumin\ ;
+聖公会 > seikoukai\ ;
+原産地 > gensanchi\ ;
+革命児 > kakumeiji\ ;
+優駿馬 > yuushunba\ ;
+主情論 > shujouron\ ;
+骨董品 > kottouhin\ ;
+管財人 > kanzainin\ ;
+演劇界 > engekikai\ ;
+銀閣寺 > ginkakuji\ ;
+風鳥座 > fuuchouza\ ;
+挟瞼器 > kyoukenki\ ;
+教授法 > kyoujuhou\ ;
+電気釜 > denkigama\ ;
+電気量 > denkiryou\ ;
+点光源 > tenkougen\ ;
+日刊紙 > nikkanshi\ ;
+間狂言 > aikyougen\ ;
+老人性 > roujinsei\ ;
+計数管 > keisuukan\ ;
+金利鞘 > kinrishou\ ;
+仮政府 > kariseifu\ ;
+現代版 > gendaiban\ ;
+低姿勢 > teishisei\ ;
+急降下 > kyuukouka\ ;
+信号旗 > shingouki\ ;
+童話劇 > douwageki\ ;
+実験台 > jikkendai\ ;
+水成岩 > suiseigan\ ;
+御寮人 > goryounin\ ;
+自身番 > jishinban\ ;
+砂時計 > sunadokei\ ;
+血達磨 > chidaruma\ ;
+養鶏場 > youkeijou\ ;
+脱走兵 > dassouhei\ ;
+荘園制 > shouensei\ ;
+前半戦 > zenpansen\ ;
+訓詁学 > kunkogaku\ ;
+車井戸 > kurumaido\ ;
+外務省 > gaimushou\ ;
+新時代 > shinjidai\ ;
+渉外部 > shougaibu\ ;
+感光紙 > kankoushi\ ;
+撮影機 > satsueiki\ ;
+一生涯 > isshougai\ ;
+水源地 > suigenchi\ ;
+整流器 > seiryuuki\ ;
+銀行界 > ginkoukai\ ;
+現住所 > genjuusho\ ;
+前口上 > maekoujou\ ;
+地対空 > chitaikuu\ ;
+第一集 > daiisshuu\ ;
+天皇家 > ten''nouke\ ;
+給油船 > kyuuyusen\ ;
+代書人 > daishonin\ ;
+創始者 > soushisha\ ;
+価格帯 > kakakutai\ ;
+場所柄 > bashogara\ ;
+信号所 > shingoujo\ ;
+悪循環 > akujunkan\ ;
+実験値 > jikkenchi\ ;
+不風流 > bufuuryuu\ ;
+宣伝員 > senden''in\ ;
+除電針 > jodenbari\ ;
+衛生学 > eiseigaku\ ;
+発見者 > hakkensha\ ;
+法王庁 > hououchou\ ;
+一番手 > ichibante\ ;
+限界点 > genkaiten\ ;
+板目紙 > itamegami\ ;
+愁嘆場 > shuutanba\ ;
+花相撲 > hanazumou\ ;
+歯科学 > shikagaku\ ;
+仕事着 > shigotogi\ ;
+光文社 > koubunsha\ ;
+高燥地 > kousouchi\ ;
+農地法 > nouchihou\ ;
+葛根湯 > kakkontou\ ;
+光電管 > koudenkan\ ;
+身分柄 > mibungara\ ;
+観覧券 > kanranken\ ;
+禁制品 > kinseihin\ ;
+当籤者 > tousensha\ ;
+進化論 > shinkaron\ ;
+再検討 > saikentou\ ;
+半夏生 > hangeshou\ ;
+御飯時 > gohandoki\ ;
+愛弟子 > manadeshi\ ;
+手引書 > tebikisho\ ;
+揮発油 > kihatsuyu\ ;
+翰林院 > kanrin''in\ ;
+整合性 > seigousei\ ;
+料理番 > ryouriban\ ;
+十二宮 > juunikyuu\ ;
+生産財 > seisanzai\ ;
+一代記 > ichidaiki\ ;
+元始祭 > genshisai\ ;
+亡命者 > boumeisha\ ;
+有税品 > yuuzeihin\ ;
+大使館 > taishikan\ ;
+限定詞 > genteishi\ ;
+無駄飯 > mudameshi\ ;
+総決算 > soukessan\ ;
+歴史家 > rekishika\ ;
+海水帽 > kaisuibou\ ;
+控除額 > koujogaku\ ;
+家政学 > kaseigaku\ ;
+内弟子 > uchideshi\ ;
+多忙中 > tabouchuu\ ;
+原寸大 > gensundai\ ;
+機能的 > kinouteki\ ;
+女性的 > joseiteki\ ;
+滑翔機 > kasshouki\ ;
+年始状 > nenshijou\ ;
+子煩悩 > kobon''nou\ ;
+指南車 > shinansha\ ;
+写生文 > shaseibun\ ;
+内遊星 > naiyuusei\ ;
+苦行者 > kugyousha\ ;
+罪悪感 > zaiakukan\ ;
+無症状 > mushoujou\ ;
+角砂糖 > kakuzatou\ ;
+生返事 > namahenji\ ;
+単純性 > tanjunsei\ ;
+大僧正 > daisoujou\ ;
+一身上 > isshinjou\ ;
+修道尼 > shuudouni\ ;
+軍放送 > gunhousou\ ;
+登記料 > toukiryou\ ;
+英国人 > eikokujin\ ;
+偽証者 > gishousha\ ;
+道路橋 > dourokyou\ ;
+撮影所 > satsueijo\ ;
+形態論 > keitairon\ ;
+偽証罪 > gishouzai\ ;
+首謀者 > shubousha\ ;
+複号化 > fukugouka\ ;
+第一輯 > daiisshuu\ ;
+始祖鳥 > shisochou\ ;
+特許法 > tokkyohou\ ;
+養毛剤 > youmouzai\ ;
+浮気者 > uwakimono\ ;
+暗黒街 > ankokugai\ ;
+大元帥 > daigensui\ ;
+免許状 > menkyojou\ ;
+夜光虫 > yakouchuu\ ;
+奇天烈 > kiteretsu\ ;
+匙加減 > sajikagen\ ;
+投手板 > toushuban\ ;
+従業員 > juugyouin\ ;
+批評眼 > hihyougan\ ;
+修道女 > shuudoujo\ ;
+圧痛点 > attsuuten\ ;
+海兵隊 > kaiheitai\ ;
+考課表 > koukahyou\ ;
+麦芽糖 > bakugatou\ ;
+文芸欄 > bungeiran\ ;
+夜盲症 > yamoushou\ ;
+投稿者 > toukousha\ ;
+無差別 > musabetsu\ ;
+空挺隊 > kuuteitai\ ;
+微調整 > bichousei\ ;
+口忠実 > kuchimame\ ;
+花模様 > hanamoyou\ ;
+有名校 > yuumeikou\ ;
+特許権 > tokkyoken\ ;
+構成子 > kouseishi\ ;
+請願書 > seigansho\ ;
+拡声機 > kakuseiki\ ;
+討論会 > touronkai\ ;
+拘置所 > kouchisho\ ;
+交渉員 > koushouin\ ;
+労役場 > rouekijou\ ;
+長尾鶏 > nagaodori\ ;
+水銀灯 > suigintou\ ;
+主成分 > shuseibun\ ;
+修辞法 > shuujihou\ ;
+卓話会 > takuwakai\ ;
+手工芸 > shukougei\ ;
+料理法 > ryourihou\ ;
+承認図 > shouninzu\ ;
+本島人 > hontoujin\ ;
+恒常性 > koujousei\ ;
+長尾鳥 > nagaodori\ ;
+組織化 > soshikika\ ;
+御新造 > goshinzou\ ;
+乾電池 > kandenchi\ ;
+自作農 > jisakunou\ ;
+制空権 > seikuuken\ ;
+花椰菜 > hanayasai\ ;
+競技場 > kyougijou\ ;
+旧制度 > kyuuseido\ ;
+共和政 > kyouwasei\ ;
+尊王家 > son''nouka\ ;
+遅進児 > chishinji\ ;
+栄養学 > eiyougaku\ ;
+不介入 > fukainyuu\ ;
+投手戦 > toushusen\ ;
+犬張子 > inuhariko\ ;
+送電線 > soudensen\ ;
+卵黄嚢 > ran''ounou\ ;
+気圧計 > kiatsukei\ ;
+駆虫剤 > kuchuuzai\ ;
+犬追物 > inuoumono\ ;
+三斑鶉 > mifuuzura\ ;
+拍子木 > hyoushigi\ ;
+多毛作 > tamousaku\ ;
+手荷物 > tenimotsu\ ;
+几帳面 > kichoumen\ ;
+模範的 > mohanteki\ ;
+筆記帳 > hikkichou\ ;
+長距離 > choukyori\ ;
+美少年 > bishounen\ ;
+乾燥材 > kansouzai\ ;
+生産者 > seisansha\ ;
+不服従 > fufukujuu\ ;
+本格派 > honkakuha\ ;
+原子戦 > genshisen\ ;
+不変量 > fuhenryou\ ;
+顔馴染 > kaonajimi\ ;
+落葉樹 > rakuyouju\ ;
+三頭筋 > santoukin\ ;
+代言者 > daigensha\ ;
+揮発度 > kihatsudo\ ;
+大自然 > daishizen\ ;
+不時着 > fujichaku\ ;
+統制線 > touseisen\ ;
+光電池 > koudenchi\ ;
+花供養 > hanakuyou\ ;
+難問題 > nanmondai\ ;
+継電鍵 > keidenken\ ;
+機械学 > kikaigaku\ ;
+婦人病 > fujinbyou\ ;
+同好者 > doukousha\ ;
+偽妊娠 > gininshin\ ;
+火縄銃 > hinawajuu\ ;
+前勘定 > maekanjou\ ;
+既発表 > kihappyou\ ;
+甲状腺 > koujousen\ ;
+稽古事 > keikogoto\ ;
+成文法 > seibunhou\ ;
+規格品 > kikakuhin\ ;
+仕事日 > shigotobi\ ;
+分与税 > bun''yozei\ ;
+白無垢 > shiromuku\ ;
+二等賞 > nitoushou\ ;
+定休日 > teikyuubi\ ;
+白灯油 > hakutouyu\ ;
+運転席 > untenseki\ ;
+公民館 > kouminkan\ ;
+篤農家 > tokunouka\ ;
+茉莉花 > matsurika\ ;
+人工港 > jinkoukou\ ;
+高陵土 > kouryoudo\ ;
+感光板 > kankouban\ ;
+三乗根 > sanjoukon\ ;
+男風呂 > otokoburo\ ;
+女郎花 > ominaeshi\ ;
+滞納者 > tainousha\ ;
+伝道師 > dendoushi\ ;
+応召兵 > oushouhei\ ;
+複十字 > fukujuuji\ ;
+再構成 > saikousei\ ;
+有段者 > yuudansha\ ;
+単衣物 > hitoemono\ ;
+規格判 > kikakuban\ ;
+第三者 > daisansha\ ;
+体操場 > taisoujou\ ;
+主流派 > shuryuuha\ ;
+広報官 > kouhoukan\ ;
+人工池 > jinkouike\ ;
+口蓋垂 > kougaisui\ ;
+金剛砂 > kongousha\ ;
+十三夜 > juusan''ya\ ;
+大学院 > daigakuin\ ;
+乗用車 > jouyousha\ ;
+不明確 > fumeikaku\ ;
+蜃気楼 > shinkirou\ ;
+複葉機 > fukuyouki\ ;
+二等親 > nitoushin\ ;
+草競馬 > kusakeiba\ ;
+隠元豆 > ingenmame\ ;
+累乗根 > ruijoukon\ ;
+東洋人 > touyoujin\ ;
+競技会 > kyougikai\ ;
+勧誘員 > kan''yuuin\ ;
+老婆心 > roubashin\ ;
+債権者 > saikensha\ ;
+第一義 > daiichigi\ ;
+圧倒的 > attouteki\ ;
+不明瞭 > fumeiryou\ ;
+放電管 > houdenkan\ ;
+前身頃 > maemigoro\ ;
+少数派 > shousuuha\ ;
+特捜部 > tokusoubu\ ;
+調馬師 > choubashi\ ;
+理論的 > rironteki\ ;
+飲水量 > insuiryou\ ;
+調理法 > chourihou\ ;
+累犯者 > ruihansha\ ;
+好都合 > koutsugou\ ;
+安全域 > anzen''iki\ ;
+虚栄心 > kyoeishin\ ;
+定期的 > teikiteki\ ;
+認可証 > ninkashou\ ;
+信心家 > shinjinka\ ;
+強姦罪 > goukanzai\ ;
+教授会 > kyoujukai\ ;
+連合軍 > rengougun\ ;
+重合体 > juugoutai\ ;
+加虐愛 > kagyakuai\ ;
+河川敷 > kasenjiki\ ;
+軍隊葬 > guntaisou\ ;
+数年間 > suunenkan\ ;
+軽気球 > keikikyuu\ ;
+青浮草 > aoukikusa\ ;
+安楽死 > anrakushi\ ;
+金平糖 > konpeitou\ ;
+定住地 > teijuuchi\ ;
+金輪際 > konrinzai\ ;
+料理店 > ryouriten\ ;
+貿易風 > bouekifuu\ ;
+人工林 > jinkourin\ ;
+海運業 > kaiungyou\ ;
+衣食住 > ishokujuu\ ;
+寝具類 > shingurui\ ;
+東南東 > tounantou\ ;
+甲板員 > kouhan''in\ ;
+現代史 > gendaishi\ ;
+根菜類 > konsairui\ ;
+定例会 > teireikai\ ;
+決闘状 > kettoujou\ ;
+蚕卵紙 > sanranshi\ ;
+外蒙古 > sotomouko\ ;
+車両化 > sharyouka\ ;
+感光性 > kankousei\ ;
+第一章 > daiisshou\ ;
+臨界点 > rinkaiten\ ;
+商売気 > shoubaigi\ ;
+国憲法 > kokkenpou\ ;
+両陛下 > ryouheika\ ;
+限定版 > genteiban\ ;
+前車輪 > zensharin\ ;
+雄牛糞 > oushikuso\ ;
+不妊症 > funinshou\ ;
+変流器 > henryuuki\ ;
+針供養 > harikuyou\ ;
+微視的 > bishiteki\ ;
+監視塔 > kanshitou\ ;
+占拠地 > senkyochi\ ;
+指向性 > shikousei\ ;
+一人用 > hitoriyou\ ;
+調馬場 > choubajou\ ;
+再輸入 > saiyunyuu\ ;
+綿津見 > watatsumi\ ;
+優良児 > yuuryouji\ ;
+浮動票 > fudouhyou\ ;
+先天性 > sentensei\ ;
+形成層 > keiseisou\ ;
+師範代 > shihandai\ ;
+休止符 > kyuushifu\ ;
+不面目 > fumenmoku\ ;
+小糠雨 > konukaame\ ;
+本予算 > hon''yosan\ ;
+指南番 > shinanban\ ;
+拡声器 > kakuseiki\ ;
+自由業 > jiyuugyou\ ;
+禁輸品 > kin''yuhin\ ;
+司会者 > shikaisha\ ;
+投稿欄 > toukouran\ ;
+挿話的 > souwateki\ ;
+道中記 > douchuuki\ ;
+半塩水 > han''ensui\ ;
+排他的 > haitateki\ ;
+大腸炎 > daichouen\ ;
+尼法師 > amahoushi\ ;
+定置網 > teichiami\ ;
+芸能界 > geinoukai\ ;
+半濁音 > handakuon\ ;
+配管工 > haikankou\ ;
+現代人 > gendaijin\ ;
+農漁民 > nougyomin\ ;
+女性学 > joseigaku\ ;
+乾燥地 > kansouchi\ ;
+分類法 > bunruihou\ ;
+石膏像 > sekkouzou\ ;
+影武者 > kagemusha\ ;
+活版本 > kappanbon\ ;
+仕事場 > shigotoba\ ;
+婦人服 > fujinfuku\ ;
+寝心地 > negokochi\ ;
+絵巻物 > emakimono\ ;
+不料簡 > furyouken\ ;
+化石層 > kasekisou\ ;
+晩餐会 > bansankai\ ;
+仕放題 > shihoudai\ ;
+共和制 > kyouwasei\ ;
+案内状 > an''naijou\ ;
+多元的 > tagenteki\ ;
+制海権 > seikaiken\ ;
+交配種 > kouhaishu\ ;
+在住者 > zaijuusha\ ;
+成熟期 > seijukuki\ ;
+共和党 > kyouwatou\ ;
+平方根 > heihoukon\ ;
+諜報員 > chouhouin\ ;
+興奮剤 > koufunzai\ ;
+先見者 > senkensha\ ;
+航空券 > koukuuken\ ;
+光電子 > koudenshi\ ;
+売国奴 > baikokudo\ ;
+繁分数 > hanbunsuu\ ;
+性行動 > seikoudou\ ;
+銀行券 > ginkouken\ ;
+万万歳 > banbanzai\ ;
+停船場 > teisenjou\ ;
+嘆願書 > tangansho\ ;
+再生産 > saiseisan\ ;
+地対地 > chitaichi\ ;
+文体論 > buntairon\ ;
+調査団 > chousadan\ ;
+単行本 > tankoubon\ ;
+小夜曲 > sayokyoku\ ;
+出世間 > shusseken\ ;
+単行書 > tankousho\ ;
+一時間 > ichijikan\ ;
+温泉郷 > onsenkyou\ ;
+有名人 > yuumeijin\ ;
+後甲板 > koukanpan\ ;
+弱体化 > jakutaika\ ;
+経済面 > keizaimen\ ;
+修験道 > shugendou\ ;
+往生際 > oujougiwa\ ;
+残存者 > zanzonsha\ ;
+航空便 > koukuubin\ ;
+核武装 > kakubusou\ ;
+埋蔵金 > maizoukin\ ;
+孤立化 > koritsuka\ ;
+聖家族 > seikazoku\ ;
+乾燥剤 > kansouzai\ ;
+泥炭地 > deitanchi\ ;
+外輪船 > gairinsen\ ;
+複利法 > fukurihou\ ;
+蒸留器 > jouryuuki\ ;
+鑑定書 > kanteisho\ ;
+製氷機 > seihyouki\ ;
+巻寿司 > makizushi\ ;
+消費財 > shouhizai\ ;
+著作家 > chosakuka\ ;
+市販品 > shihanhin\ ;
+巻頭言 > kantougen\ ;
+調理師 > chourishi\ ;
+真桑瓜 > makuwauri\ ;
+随従者 > zuijuusha\ ;
+一寸先 > issunsaki\ ;
+文学部 > bungakubu\ ;
+予約制 > yoyakusei\ ;
+線速度 > sensokudo\ ;
+平面形 > heimenkei\ ;
+複比例 > fukuhirei\ ;
+散水車 > sansuisha\ ;
+一時金 > ichijikin\ ;
+前年度 > zen''nendo\ ;
+発行者 > hakkousha\ ;
+停留所 > teiryuujo\ ;
+宮城県 > miyagiken\ ;
+前前回 > zenzenkai\ ;
+燗徳利 > kandokuri\ ;
+死刑場 > shikeijou\ ;
+巻子本 > kanshihon\ ;
+町議会 > chougikai\ ;
+人生観 > jinseikan\ ;
+真珠貝 > shinjugai\ ;
+京都市 > kyoutoshi\ ;
+雨台風 > ametaifuu\ ;
+自由形 > jiyuugata\ ;
+免許制 > menkyosei\ ;
+雑報欄 > zappouran\ ;
+愛党心 > aitoushin\ ;
+防止法 > boushihou\ ;
+選挙法 > senkyohou\ ;
+天井裏 > tenjouura\ ;
+半陰影 > han''in''ei\ ;
+最重点 > saijuuten\ ;
+一対一 > ittaiichi\ ;
+選挙民 > senkyomin\ ;
+教唆者 > kyousasha\ ;
+料理人 > ryourinin\ ;
+自由席 > jiyuuseki\ ;
+月刊誌 > gekkanshi\ ;
+不熟練 > fujukuren\ ;
+古典的 > kotenteki\ ;
+変死者 > henshisha\ ;
+本格化 > honkakuka\ ;
+仕上工 > shiagekou\ ;
+牡丹杏 > botankyou\ ;
+平方形 > heihoukei\ ;
+労働者 > roudousha\ ;
+変化球 > henkakyuu\ ;
+遠隔視 > enkakushi\ ;
+雑記帳 > zakkichou\ ;
+在校生 > zaikousei\ ;
+摩擦音 > masatsuon\ ;
+蛍烏賊 > hotaruika\ ;
+再生法 > saiseihou\ ;
+多発機 > tahatsuki\ ;
+活版屋 > kappan''ya\ ;
+金剛手 > kongoushu\ ;
+被害額 > higaigaku\ ;
+選挙権 > senkyoken\ ;
+基本給 > kihonkyuu\ ;
+非金属 > hikinzoku\ ;
+猩猩緋 > shoujouhi\ ;
+回教徒 > kaikyouto\ ;
+指示先 > shijisaki\ ;
+備忘録 > bibouroku\ ;
+砂糖黍 > satoukibi\ ;
+案内書 > an''naisho\ ;
+功労金 > kouroukin\ ;
+被差別 > hisabetsu\ ;
+痘痕面 > abatazura\ ;
+朱文金 > shubunkin\ ;
+不謹慎 > fukinshin\ ;
+肝硬変 > kankouhen\ ;
+末期的 > makkiteki\ ;
+礼奉公 > reiboukou\ ;
+協技者 > kyougisha\ ;
+多足類 > tasokurui\ ;
+神秘性 > shinpisei\ ;
+沸騰点 > futtouten\ ;
+養魚池 > yougyochi\ ;
+魔法的 > mahouteki\ ;
+製氷所 > seihyoujo\ ;
+関西弁 > kansaiben\ ;
+八千草 > yachigusa\ ;
+道交法 > doukouhou\ ;
+野菜汁 > yasaijiru\ ;
+斡旋料 > assenryou\ ;
+航海士 > koukaishi\ ;
+浮動株 > fudoukabu\ ;
+混交林 > konkourin\ ;
+模範囚 > mohanshuu\ ;
+講義録 > kougiroku\ ;
+生存者 > seizonsha\ ;
+不謬性 > fubyuusei\ ;
+導電性 > doudensei\ ;
+改革案 > kaikakuan\ ;
+法改正 > houkaisei\ ;
+生産性 > seisansei\ ;
+上中下 > jouchuuge\ ;
+給水所 > kyuusuijo\ ;
+猜疑心 > saigishin\ ;
+不調法 > buchouhou\ ;
+受動的 > judouteki\ ;
+自由型 > jiyuugata\ ;
+調理台 > chouridai\ ;
+空閑地 > kuukanchi\ ;
+労働祭 > roudousai\ ;
+再来週 > saraishuu\ ;
+代表部 > daihyoubu\ ;
+僅少差 > kinshousa\ ;
+周期性 > shuukisei\ ;
+飛行服 > hikoufuku\ ;
+不特定 > futokutei\ ;
+表面化 > hyoumenka\ ;
+市有地 > shiyuuchi\ ;
+標準語 > hyoujungo\ ;
+水平面 > suiheimen\ ;
+交通路 > koutsuuro\ ;
+消費者 > shouhisha\ ;
+古道具 > furudougu\ ;
+基本的 > kihonteki\ ;
+草団子 > kusadango\ ;
+真珠色 > shinjuiro\ ;
+統帥権 > tousuiken\ ;
+練習機 > renshuuki\ ;
+昇降舵 > shoukouda\ ;
+兵庫県 > hyougoken\ ;
+公海上 > koukaijou\ ;
+激戦区 > gekisenku\ ;
+儀礼的 > gireiteki\ ;
+有平糖 > aruheitou\ ;
+交通費 > koutsuuhi\ ;
+金魚草 > kingyosou\ ;
+着火点 > chakkaten\ ;
+選挙戦 > senkyosen\ ;
+宗主権 > soushuken\ ;
+水酸根 > suisankon\ ;
+赤十字 > sekijuuji\ ;
+蓄音機 > chikuonki\ ;
+自尊心 > jisonshin\ ;
+表記法 > hyoukihou\ ;
+露天商 > rotenshou\ ;
+休廷日 > kyuuteibi\ ;
+飲酒癖 > inshuheki\ ;
+一斉高 > isseidaka\ ;
+処刑台 > shokeidai\ ;
+冷房車 > reibousha\ ;
+検疫所 > ken''ekijo\ ;
+照度計 > shoudokei\ ;
+収税吏 > shuuzeiri\ ;
+喉自慢 > nodojiman\ ;
+金看板 > kinkanban\ ;
+散弾銃 > sandanjuu\ ;
+培養液 > baiyoueki\ ;
+天狗風 > tengukaze\ ;
+一本杉 > ipponsugi\ ;
+測微計 > sokubikei\ ;
+風致林 > fuuchirin\ ;
+地理学 > chirigaku\ ;
+美食家 > bishokuka\ ;
+尿道炎 > nyoudouen\ ;
+螳螂拳 > tourouken\ ;
+調理人 > chourinin\ ;
+喫煙所 > kitsuenjo\ ;
+時分時 > jibundoki\ ;
+八重桜 > yaezakura\ ;
+南蛮船 > nanbansen\ ;
+豌豆豆 > endoumame\ ;
+回数券 > kaisuuken\ ;
+製造者 > seizousha\ ;
+重役会 > juuyakkai\ ;
+北欧人 > hokuoujin\ ;
+一人子 > hitorikko\ ;
+死生観 > shiseikan\ ;
+炭疽病 > tansobyou\ ;
+白地図 > hakuchizu\ ;
+鼈甲色 > bekkouiro\ ;
+乗車券 > joushaken\ ;
+測程器 > sokuteiki\ ;
+案内嬢 > an''naijou\ ;
+円舞曲 > enbukyoku\ ;
+消費税 > shouhizei\ ;
+壁一重 > kabehitoe\ ;
+四面体 > shimentai\ ;
+在来線 > zairaisen\ ;
+大理石 > dairiseki\ ;
+生産地 > seisanchi\ ;
+片田舎 > katainaka\ ;
+複写機 > fukushaki\ ;
+風俗画 > fuuzokuga\ ;
+側面図 > sokumenzu\ ;
+言語学 > gengogaku\ ;
+巡航船 > junkousen\ ;
+原始林 > genshirin\ ;
+至上権 > shijouken\ ;
+小売商 > kourishou\ ;
+統制品 > touseihin\ ;
+第一審 > daiisshin\ ;
+紅毛人 > koumoujin\ ;
+謄写版 > toushaban\ ;
+控訴審 > kousoshin\ ;
+中古車 > chuukosha\ ;
+新紀元 > shinkigen\ ;
+練習所 > renshuujo\ ;
+立方根 > rippoukon\ ;
+短音階 > tan''onkai\ ;
+宣誓書 > senseisho\ ;
+二拍子 > nibyoushi\ ;
+労農党 > rounoutou\ ;
+彼岸花 > higanbana\ ;
+忠魂碑 > chuukonhi\ ;
+有効性 > yuukousei\ ;
+三日月 > mikadzuki\ ;
+発振機 > hasshinki\ ;
+総務庁 > soumuchou\ ;
+流行語 > ryuukougo\ ;
+内鮮人 > naisenjin\ ;
+生理的 > seiriteki\ ;
+名誉慾 > meiyoyoku\ ;
+努力家 > doryokuka\ ;
+在来種 > zairaishu\ ;
+加硫法 > karyuuhou\ ;
+大家族 > daikazoku\ ;
+景教徒 > keikyouto\ ;
+高積雲 > kousekiun\ ;
+乗船券 > jousenken\ ;
+再審査 > saishinsa\ ;
+用語集 > yougoshuu\ ;
+負傷者 > fushousha\ ;
+労働法 > roudouhou\ ;
+汎用機 > han''youki\ ;
+名誉心 > meiyoshin\ ;
+鑑定人 > kanteinin\ ;
+投票日 > touhyoubi\ ;
+先行詞 > senkoushi\ ;
+独演会 > dokuenkai\ ;
+音韻学 > on''ingaku\ ;
+功労者 > kourousha\ ;
+脳細胞 > nousaibou\ ;
+美文調 > bibunchou\ ;
+明細書 > meisaisho\ ;
+男文字 > otokomoji\ ;
+総勘定 > soukanjou\ ;
+回覧板 > kairanban\ ;
+任命状 > ninmeijou\ ;
+上納金 > jounoukin\ ;
+拷問台 > goumondai\ ;
+上奏文 > jousoubun\ ;
+自責点 > jisekiten\ ;
+助監督 > jokantoku\ ;
+処生訓 > shoseikun\ ;
+本試験 > honshiken\ ;
+外信部 > gaishinbu\ ;
+一人前 > hitorimae\ ;
+労働権 > roudouken\ ;
+地球儀 > chikyuugi\ ;
+地上権 > chijouken\ ;
+金屏風 > kinbyoubu\ ;
+導電体 > doudentai\ ;
+共益費 > kyouekihi\ ;
+不認承 > funinshou\ ;
+馬鹿面 > bakadzura\ ;
+土用波 > doyounami\ ;
+総選挙 > sousenkyo\ ;
+制御盤 > seigyoban\ ;
+心意気 > kokoroiki\ ;
+重労働 > juuroudou\ ;
+手榴弾 > teryuudan\ ;
+一枚上 > ichimaiue\ ;
+天井灯 > tenjoutou\ ;
+養魚場 > yougyojou\ ;
+投票所 > touhyoujo\ ;
+座標系 > zahyoukei\ ;
+円借款 > enshakkan\ ;
+絶対論 > zettairon\ ;
+捕虫網 > hochuuami\ ;
+出来星 > dekiboshi\ ;
+花柳界 > karyuukai\ ;
+公民権 > kouminken\ ;
+如何許 > ikabakari\ ;
+清教徒 > seikyouto\ ;
+紫外線 > shigaisen\ ;
+同好会 > doukoukai\ ;
+洗車場 > senshajou\ ;
+展望車 > tenbousha\ ;
+暗号帳 > angouchou\ ;
+幌馬車 > horobasha\ ;
+大企業 > daikigyou\ ;
+売笑婦 > baishoufu\ ;
+採点者 > saitensha\ ;
+間隙比 > kangekihi\ ;
+壮行会 > soukoukai\ ;
+再生品 > saiseihin\ ;
+公社債 > koushasai\ ;
+未来学 > miraigaku\ ;
+末始終 > sueshijuu\ ;
+潜水艦 > sensuikan\ ;
+水道管 > suidoukan\ ;
+天理教 > tenrikyou\ ;
+予想高 > yosoudaka\ ;
+手柄顔 > tegaragao\ ;
+手芸品 > shugeihin\ ;
+平衡錘 > heikousui\ ;
+抗毒素 > koudokuso\ ;
+大豆粕 > daizukasu\ ;
+研究費 > kenkyuuhi\ ;
+知能犯 > chinouhan\ ;
+選手権 > senshuken\ ;
+麝香鹿 > jakoujika\ ;
+海岸線 > kaigansen\ ;
+貿易港 > bouekikou\ ;
+暦年度 > rekinendo\ ;
+天宮図 > tenkyuuzu\ ;
+有権者 > yuukensha\ ;
+体裁上 > teisaijou\ ;
+伊達男 > dateotoko\ ;
+休刊日 > kyuukanbi\ ;
+古典学 > kotengaku\ ;
+改訂版 > kaiteiban\ ;
+生存権 > seizonken\ ;
+該問題 > gaimondai\ ;
+暗号学 > angougaku\ ;
+代行者 > daikousha\ ;
+八千歳 > yachitose\ ;
+口真似 > kuchimane\ ;
+出版部 > shuppanbu\ ;
+観測所 > kansokujo\ ;
+経済界 > keizaikai\ ;
+不熱心 > funesshin\ ;
+公法人 > kouhoujin\ ;
+休眠期 > kyuuminki\ ;
+副総理 > fukusouri\ ;
+伴奏者 > bansousha\ ;
+対談者 > taidansha\ ;
+貿易法 > bouekihou\ ;
+園遊会 > en''yuukai\ ;
+賛成者 > sanseisha\ ;
+芸能人 > geinoujin\ ;
+分譲地 > bunjouchi\ ;
+屈光性 > kukkousei\ ;
+真珠湾 > shinjuwan\ ;
+交通禍 > koutsuuka\ ;
+拝火教 > haikakyou\ ;
+箇条書 > kajougaki\ ;
+選挙人 > senkyonin\ ;
+酪農家 > rakunouka\ ;
+工芸品 > kougeihin\ ;
+未来型 > miraigata\ ;
+弁鰓類 > bensairui\ ;
+無資格 > mushikaku\ ;
+任命権 > ninmeiken\ ;
+虫垂炎 > chuusuien\ ;
+破落戸 > gorotsuki\ ;
+蓄音器 > chikuonki\ ;
+緩下薬 > kangeyaku\ ;
+有機的 > yuukiteki\ ;
+正反対 > seihantai\ ;
+青海原 > aounabara\ ;
+凹面鏡 > oumenkyou\ ;
+報道陣 > houdoujin\ ;
+劣勢感 > resseikan\ ;
+御料地 > goryouchi\ ;
+計算者 > keisansha\ ;
+無駄口 > mudaguchi\ ;
+李承晩 > rishouban\ ;
+福音書 > fukuinsho\ ;
+八卦掌 > hakkeshou\ ;
+自主的 > jishuteki\ ;
+進歩党 > shinpotou\ ;
+相反性 > souhansei\ ;
+能動態 > noudoutai\ ;
+司令官 > shireikan\ ;
+地震計 > jishinkei\ ;
+紙一重 > kamihitoe\ ;
+水加減 > mizukagen\ ;
+出版費 > shuppanhi\ ;
+果報者 > kahoumono\ ;
+成長期 > seichouki\ ;
+浄土教 > joudokyou\ ;
+天井板 > tenjouita\ ;
+集塵機 > shuujinki\ ;
+凌波性 > ryouhasei\ ;
+快男子 > kaidanshi\ ;
+天狗茸 > tengutake\ ;
+狙撃兵 > sogekihei\ ;
+外輪山 > gairinzan\ ;
+昇降機 > shoukouki\ ;
+放火狂 > houkakyou\ ;
+風馬牛 > fuubagyuu\ ;
+陶器商 > toukishou\ ;
+三塁線 > sanruisen\ ;
+道義心 > dougishin\ ;
+超時空 > choujikuu\ ;
+微粒子 > biryuushi\ ;
+水平線 > suiheisen\ ;
+再尋問 > saijinmon\ ;
+清掃車 > seisousha\ ;
+最前線 > saizensen\ ;
+絶対者 > zettaisha\ ;
+正確度 > seikakudo\ ;
+氷削機 > hyousakki\ ;
+分解能 > bunkainou\ ;
+四角形 > shikakkei\ ;
+宣言書 > sengensho\ ;
+司令塔 > shireitou\ ;
+立太子 > rittaishi\ ;
+有蹄類 > yuuteirui\ ;
+使用者 > shiyousha\ ;
+天上界 > tenjoukai\ ;
+青海亀 > aoumigame\ ;
+来遊者 > raiyuusha\ ;
+巨人軍 > kyojingun\ ;
+学部生 > gakubusei\ ;
+工学部 > kougakubu\ ;
+教科書 > kyoukasho\ ;
+経済法 > keizaihou\ ;
+破傷風 > hashoufuu\ ;
+持参人 > jisan''nin\ ;
+総督府 > soutokufu\ ;
+日本髪 > nihongami\ ;
+制御棒 > seigyobou\ ;
+検案書 > ken''ansho\ ;
+歩道橋 > hodoukyou\ ;
+地方紙 > chihoushi\ ;
+日傭取 > hiyoutori\ ;
+地獄変 > jigokuhen\ ;
+合奏団 > gassoudan\ ;
+発振器 > hasshinki\ ;
+天井扇 > tenjousen\ ;
+全反射 > zenhansha\ ;
+変速機 > hensokuki\ ;
+無理式 > murishiki\ ;
+軽労働 > keiroudou\ ;
+正反合 > seihangou\ ;
+経済欄 > keizairan\ ;
+生字引 > ikijibiki\ ;
+投票区 > touhyouku\ ;
+木曜日 > mokuyoubi\ ;
+出木年 > dekidoshi\ ;
+碓氷峠 > usuitouge\ ;
+加入金 > kanyuukin\ ;
+民間人 > minkanjin\ ;
+公募株 > koubokabu\ ;
+乗馬服 > joubafuku\ ;
+日本領 > nihonryou\ ;
+著書名 > choshomei\ ;
+経営学 > keieigaku\ ;
+白鉛鉱 > hakuenkou\ ;
+粗目糖 > zarametou\ ;
+内玄関 > naigenkan\ ;
+地方税 > chihouzei\ ;
+巡査長 > junsachou\ ;
+印刷機 > insatsuki\ ;
+凍死者 > toushisha\ ;
+白銅貨 > hakudouka\ ;
+天球図 > tenkyuuzu\ ;
+八千年 > yachitose\ ;
+原始人 > genshijin\ ;
+加工賃 > kakouchin\ ;
+竹輪麩 > chikuwafu\ ;
+一方的 > ippouteki\ ;
+出仕事 > deshigoto\ ;
+正念場 > shounenba\ ;
+柔道場 > juudoujou\ ;
+脊髄炎 > sekizuien\ ;
+二重釜 > nijuugama\ ;
+立方体 > rippoutai\ ;
+遠隔性 > enkakusei\ ;
+軽歌劇 > keikageki\ ;
+制動灯 > seidoutou\ ;
+催眠剤 > saiminzai\ ;
+今一度 > imaichido\ ;
+攻防戦 > koubousen\ ;
+浄土宗 > joudoshuu\ ;
+操縦桿 > soujuukan\ ;
+文明館 > bunmeikan\ ;
+導関数 > doukansuu\ ;
+滞在地 > taizaichi\ ;
+上納米 > jounoumai\ ;
+宇宙服 > uchuufuku\ ;
+利口者 > rikoumono\ ;
+方法論 > houhouron\ ;
+蓋然性 > gaizensei\ ;
+半製品 > hanseihin\ ;
+一場面 > ichibamen\ ;
+石版画 > sekibanga\ ;
+登録簿 > tourokubo\ ;
+一昨晩 > issakuban\ ;
+多極化 > takyokuka\ ;
+大一番 > ooichiban\ ;
+衛星国 > eiseikoku\ ;
+下級生 > kakyuusei\ ;
+標準時 > hyoujunji\ ;
+高齢者 > koureisha\ ;
+一丁前 > itchoumae\ ;
+横恋慕 > yokorenbo\ ;
+財産税 > zaisanzei\ ;
+二重身 > nijuushin\ ;
+生理学 > seirigaku\ ;
+熱器具 > netsukigu\ ;
+寒冷紗 > kanreisha\ ;
+水道栓 > suidousen\ ;
+探索木 > tansakugi\ ;
+研究科 > kenkyuuka\ ;
+実施例 > jisshirei\ ;
+長音階 > chouonkai\ ;
+不評判 > fuhyouban\ ;
+選手団 > senshudan\ ;
+功利的 > kouriteki\ ;
+天球儀 > tenkyuugi\ ;
+真珠層 > shinjusou\ ;
+平均点 > heikinten\ ;
+連合会 > rengoukai\ ;
+工業化 > kougyouka\ ;
+赤道儀 > sekidougi\ ;
+文学座 > bungakuza\ ;
+労働党 > roudoutou\ ;
+経済戦 > keizaisen\ ;
+米空軍 > beikuugun\ ;
+敷居置 > shikiichi\ ;
+配当金 > haitoukin\ ;
+飛蚊症 > hibunshou\ ;
+赤痢菌 > sekirikin\ ;
+五十肩 > gojuukata\ ;
+高等官 > koutoukan\ ;
+地方版 > chihouban\ ;
+片脳油 > hen''nouyu\ ;
+奉行所 > bugyousho\ ;
+肯定文 > kouteibun\ ;
+芳香剤 > houkouzai\ ;
+火災流 > kasairyuu\ ;
+印刷所 > insatsujo\ ;
+大聖堂 > daiseidou\ ;
+経済性 > keizaisei\ ;
+蛇紋石 > jamonseki\ ;
+流行歌 > ryuukouka\ ;
+三角洲 > sankakusu\ ;
+三文判 > sanmonban\ ;
+三角波 > sankakuha\ ;
+実際性 > jissaisei\ ;
+竹矢来 > takeyarai\ ;
+平行線 > heikousen\ ;
+葱坊主 > negibouzu\ ;
+孫弟子 > magodeshi\ ;
+容積比 > yousekihi\ ;
+制酸剤 > seisanzai\ ;
+占取権 > senshuken\ ;
+主眼点 > shuganten\ ;
+遠隔地 > enkakuchi\ ;
+三角比 > sankakuhi\ ;
+長時間 > choujikan\ ;
+半端者 > hanpamono\ ;
+独禁法 > dokkinhou\ ;
+広告費 > koukokuhi\ ;
+最優遇 > saiyuuguu\ ;
+台風眼 > taifuugan\ ;
+未教育 > mikyouiku\ ;
+裁断師 > saidanshi\ ;
+全単射 > zentansha\ ;
+効果的 > koukateki\ ;
+空手形 > kuutegata\ ;
+印刻師 > inkokushi\ ;
+青年輩 > seinenhai\ ;
+割烹店 > kappouten\ ;
+貿易品 > bouekihin\ ;
+削岩機 > sakuganki\ ;
+完了後 > kanryougo\ ;
+大上段 > daijoudan\ ;
+園芸学 > engeigaku\ ;
+指相撲 > yubizumou\ ;
+肩甲帯 > kenkoutai\ ;
+正当性 > seitousei\ ;
+砂糖水 > satoumizu\ ;
+方錐形 > housuikei\ ;
+相当数 > soutousuu\ ;
+醸造酒 > jouzoushu\ ;
+左中間 > sachuukan\ ;
+伝令者 > denreisha\ ;
+木綿針 > momenbari\ ;
+木版画 > mokuhanga\ ;
+検査役 > kensayaku\ ;
+忘年会 > bounenkai\ ;
+宇宙学 > uchuugaku\ ;
+真理値 > shinrichi\ ;
+配水管 > haisuikan\ ;
+太陽風 > taiyoufuu\ ;
+使用法 > shiyouhou\ ;
+印刷屋 > insatsuya\ ;
+音声学 > onseigaku\ ;
+伊達女 > dateon''na\ ;
+副詞句 > fukushiku\ ;
+実数体 > jissuutai\ ;
+裏長屋 > uranagaya\ ;
+東工大 > toukoudai\ ;
+花時計 > hanadokei\ ;
+製造品 > seizouhin\ ;
+計算書 > keisansho\ ;
+制動手 > seidoushu\ ;
+不規律 > fukiritsu\ ;
+口腔癌 > koukougan\ ;
+回答者 > kaitousha\ ;
+単従陣 > tanjuujin\ ;
+反英雄 > han''eiyuu\ ;
+主権者 > shukensha\ ;
+大本山 > daihonzan\ ;
+中和剤 > chuuwazai\ ;
+慈善箱 > jizenbako\ ;
+最左翼 > saisayoku\ ;
+三角旗 > sankakuki\ ;
+加入者 > kanyuusha\ ;
+裾模様 > susomoyou\ ;
+一隻眼 > issekigan\ ;
+使用権 > shiyouken\ ;
+近体詩 > kintaishi\ ;
+天狼星 > tenrousei\ ;
+再犯者 > saihansha\ ;
+哨戒機 > shoukaiki\ ;
+通過駅 > tsuukaeki\ ;
+大人共 > otonadomo\ ;
+為放題 > shihoudai\ ;
+苦心談 > kushindan\ ;
+操縦士 > soujuushi\ ;
+真珠光 > shinjukou\ ;
+速度計 > sokudokei\ ;
+無責任 > musekinin\ ;
+播但線 > bantansen\ ;
+聖誕祭 > seitansai\ ;
+無一文 > muichimon\ ;
+常分数 > joubunsuu\ ;
+再考慮 > saikouryo\ ;
+儀典長 > gitenchou\ ;
+工学科 > kougakuka\ ;
+交歓会 > koukankai\ ;
+天象儀 > tenshougi\ ;
+引用文 > in''youbun\ ;
+荒法師 > arahoushi\ ;
+療養費 > ryouyouhi\ ;
+機関長 > kikanchou\ ;
+向地性 > kouchisei\ ;
+凱旋門 > gaisenmon\ ;
+設備費 > setsubihi\ ;
+裁縫師 > saihoushi\ ;
+財産権 > zaisanken\ ;
+同行者 > doukousha\ ;
+投石機 > tousekiki\ ;
+愛校心 > aikoushin\ ;
+伏魔殿 > fukumaden\ ;
+茶器組 > chakigumi\ ;
+三塁手 > sanruishu\ ;
+虚無的 > kyomuteki\ ;
+伝導性 > dendousei\ ;
+文字列 > mojiretsu\ ;
+反芻類 > hansuurui\ ;
+定型詩 > teikeishi\ ;
+水菓子 > mizugashi\ ;
+使用方 > shiyouhou\ ;
+黍団子 > kibidango\ ;
+軟口蓋 > nankougai\ ;
+闇相場 > yamisouba\ ;
+宇宙博 > uchuuhaku\ ;
+最前戦 > saizensen\ ;
+芥子菜 > karashina\ ;
+珍道具 > chindougu\ ;
+黄表紙 > kibyoushi\ ;
+従姉妹 > juushimai\ ;
+子福者 > kobukusha\ ;
+思想界 > shisoukai\ ;
+民衆化 > minshuuka\ ;
+鈍黄色 > nibukiiro\ ;
+三角形 > sankakkei\ ;
+大本営 > daihon''ei\ ;
+猛特訓 > moutokkun\ ;
+予告編 > yokokuhen\ ;
+冷湿布 > reishippu\ ;
+標準化 > hyoujunka\ ;
+南蛮人 > nanbanjin\ ;
+田園詩 > den''enshi\ ;
+三角座 > sankakuza\ ;
+再試験 > saishiken\ ;
+寒帯林 > kantairin\ ;
+傾斜面 > keishamen\ ;
+死亡者 > shibousha\ ;
+三角帆 > sankakuho\ ;
+半端物 > hanpamono\ ;
+婚姻法 > kon''inhou\ ;
+三角州 > sankakusu\ ;
+二重窓 > nijuumado\ ;
+自然類 > shizenrui\ ;
+専売品 > senbaihin\ ;
+不統一 > futouitsu\ ;
+夜会服 > yakaifuku\ ;
+予告篇 > yokokuhen\ ;
+党派心 > touhashin\ ;
+思想犯 > shisouhan\ ;
+弁当代 > bentoudai\ ;
+肝臓癌 > kanzougan\ ;
+経済人 > keizaijin\ ;
+仏教徒 > bukkyouto\ ;
+米海軍 > beikaigun\ ;
+含油層 > gan''yusou\ ;
+情報誌 > jouhoushi\ ;
+凱旋軍 > gaisengun\ ;
+落伍者 > rakugosha\ ;
+融解点 > yuukaiten\ ;
+淋巴球 > rinpakyuu\ ;
+嫌煙権 > ken''enken\ ;
+夫婦仲 > fuufunaka\ ;
+感染原 > kansengen\ ;
+迎賓館 > geihinkan\ ;
+評議会 > hyougikai\ ;
+好男子 > koudanshi\ ;
+早春賦 > soushunfu\ ;
+喉頭癌 > koutougan\ ;
+寝業師 > newazashi\ ;
+人格化 > jinkakuka\ ;
+綺麗事 > kireigoto\ ;
+記名株 > kimeikabu\ ;
+携帯品 > keitaihin\ ;
+駐屯所 > chuutonjo\ ;
+研究所 > kenkyuujo\ ;
+最先端 > saisentan\ ;
+居住者 > kyojuusha\ ;
+誇張法 > kochouhou\ ;
+視覚化 > shikakuka\ ;
+中華街 > chuukagai\ ;
+連判状 > renbanjou\ ;
+麝香猫 > jakouneko\ ;
+変光星 > henkousei\ ;
+審査官 > shinsakan\ ;
+多用中 > tayouchuu\ ;
+早東戦 > soutousen\ ;
+黙秘権 > mokuhiken\ ;
+冒険談 > boukendan\ ;
+常備薬 > joubiyaku\ ;
+妊婦服 > ninpufuku\ ;
+体重計 > taijuukei\ ;
+警官隊 > keikantai\ ;
+講談社 > koudansha\ ;
+近代詩 > kindaishi\ ;
+煙草銭 > tabakosen\ ;
+間投詞 > kantoushi\ ;
+答弁者 > toubensha\ ;
+平行棒 > heikoubou\ ;
+蟻地獄 > arijigoku\ ;
+扁桃腺 > hentousen\ ;
+公判廷 > kouhantei\ ;
+数億年 > suuokunen\ ;
+盆灯籠 > bondourou\ ;
+終戦後 > shuusengo\ ;
+編集部 > henshuubu\ ;
+周囲長 > shuuichou\ ;
+公選制 > kousensei\ ;
+修理工 > shuurikou\ ;
+最適化 > saitekika\ ;
+化学者 > kagakusha\ ;
+贈賄罪 > zouwaizai\ ;
+不承認 > fushounin\ ;
+五重唱 > gojuushou\ ;
+年齢順 > nenreijun\ ;
+賭博場 > tobakujou\ ;
+看守者 > kanshusha\ ;
+弱電器 > jakudenki\ ;
+日本的 > nihonteki\ ;
+開墾地 > kaikonchi\ ;
+禁猟期 > kinryouki\ ;
+前額部 > zengakubu\ ;
+評論家 > hyouronka\ ;
+一斉安 > isseiyasu\ ;
+一親等 > isshintou\ ;
+再放送 > saihousou\ ;
+興行化 > kougyouka\ ;
+化学線 > kagakusen\ ;
+戦死者 > senshisha\ ;
+一文字 > ichimonji\ ;
+文士連 > bunshiren\ ;
+木綿糸 > momen''ito\ ;
+焦電気 > shoudenki\ ;
+授与式 > juyoshiki\ ;
+目分量 > mebunryou\ ;
+天下一 > tenkaichi\ ;
+中古品 > chuukohin\ ;
+市場性 > shijousei\ ;
+中性塩 > chuuseien\ ;
+文語調 > bungochou\ ;
+散兵線 > sanpeisen\ ;
+流行児 > ryuukouji\ ;
+又従弟 > mataitoko\ ;
+腹時計 > haradokei\ ;
+布袋腹 > hoteibara\ ;
+無教育 > mukyouiku\ ;
+研究家 > kenkyuuka\ ;
+教区民 > kyoukumin\ ;
+地震帯 > jishintai\ ;
+長期戦 > choukisen\ ;
+通知簿 > tsuuchibo\ ;
+加工業 > kakougyou\ ;
+不行状 > fugyoujou\ ;
+胡麻油 > gomaabura\ ;
+日本猿 > nihonzaru\ ;
+旧世界 > kyuusekai\ ;
+水平動 > suiheidou\ ;
+短大生 > tandaisei\ ;
+肖像画 > shouzouga\ ;
+一角獣 > ikkakujuu\ ;
+可変長 > kahenchou\ ;
+一要素 > ichiyouso\ ;
+児童劇 > jidougeki\ ;
+埋葬地 > maisouchi\ ;
+上製本 > jouseibon\ ;
+両性花 > ryouseika\ ;
+実行者 > jikkousha\ ;
+傾斜計 > keishakei\ ;
+犯罪者 > hanzaisha\ ;
+絶交状 > zekkoujou\ ;
+外来者 > gairaisha\ ;
+伝導体 > dendoutai\ ;
+斜滑降 > shakakkou\ ;
+常平倉 > jouheisou\ ;
+主催者 > shusaisha\ ;
+柔軟性 > juunansei\ ;
+分担金 > buntankin\ ;
+冷蔵車 > reizousha\ ;
+最高裁 > saikousai\ ;
+加入権 > kanyuuken\ ;
+前住所 > zenjuusho\ ;
+展望塔 > tenboutou\ ;
+過敏症 > kabinshou\ ;
+人頭税 > nintouzei\ ;
+舞台劇 > butaigeki\ ;
+平均値 > heikinchi\ ;
+格子面 > koushimen\ ;
+水茶屋 > mizuchaya\ ;
+情報網 > jouhoumou\ ;
+巴旦杏 > hatankyou\ ;
+審美眼 > shinbigan\ ;
+処世訓 > shoseikun\ ;
+自然観 > shizenkan\ ;
+脂肪酸 > shibousan\ ;
+門外漢 > mongaikan\ ;
+抗菌性 > koukinsei\ ;
+伝染性 > densensei\ ;
+未組織 > misoshiki\ ;
+水様液 > suiyoueki\ ;
+救助隊 > kyuujotai\ ;
+保存量 > hozonryou\ ;
+核兵器 > kakuheiki\ ;
+不満足 > fumanzoku\ ;
+長談議 > nagadangi\ ;
+冒険者 > boukensha\ ;
+羽蒲団 > hanebuton\ ;
+地方債 > chihousai\ ;
+本場物 > honbamono\ ;
+語学者 > gogakusha\ ;
+再試行 > saishikou\ ;
+居丈高 > itakedaka\ ;
+太陽系 > taiyoukei\ ;
+研究員 > kenkyuuin\ ;
+弥縫策 > bihousaku\ ;
+無報酬 > muhoushuu\ ;
+蘆溝橋 > rokoukyou\ ;
+絶対値 > zettaichi\ ;
+天頂儀 > tenchougi\ ;
+海賊王 > kaizokuou\ ;
+財界人 > zaikaijin\ ;
+風来坊 > fuuraibou\ ;
+寒冷地 > kanreichi\ ;
+前置詞 > zenchishi\ ;
+加判人 > kahan''nin\ ;
+動滑車 > doukassha\ ;
+結氷期 > keppyouki\ ;
+展望台 > tenboudai\ ;
+礼拝堂 > reihaidou\ ;
+高性能 > kouseinou\ ;
+乾海苔 > hoshinori\ ;
+使用例 > shiyourei\ ;
+有田焼 > aritayaki\ ;
+高周波 > koushuuha\ ;
+尿検査 > nyoukensa\ ;
+環状線 > kanjousen\ ;
+発想法 > hassouhou\ ;
+免税点 > menzeiten\ ;
+値段表 > nedanhyou\ ;
+直弟子 > jikideshi\ ;
+連邦制 > renpousei\ ;
+使用人 > shiyounin\ ;
+植木鉢 > uekibachi\ ;
+照射野 > shoushaya\ ;
+慈善心 > jizenshin\ ;
+木煉瓦 > mokurenga\ ;
+木綿物 > momenmono\ ;
+六分儀 > rokubungi\ ;
+視地平 > shichihei\ ;
+工作員 > kousakuin\ ;
+回漕店 > kaisouten\ ;
+石炭紀 > sekitanki\ ;
+投機的 > toukiteki\ ;
+猟犬座 > ryoukenza\ ;
+皮財布 > kawazaifu\ ;
+脳血栓 > noukessen\ ;
+正則化 > seisokuka\ ;
+大奥様 > oookusama\ ;
+欠陥車 > kekkansha\ ;
+一大事 > ichidaiji\ ;
+連分数 > renbunsuu\ ;
+修理代 > shuuridai\ ;
+蕁麻疹 > jinmashin\ ;
+具申書 > gushinsho\ ;
+読書家 > dokushoka\ ;
+美術部 > bijutsubu\ ;
+感謝祭 > kanshasai\ ;
+貴方方 > anatagata\ ;
+東京都 > toukyouto\ ;
+旧字体 > kyuujitai\ ;
+無調法 > buchouhou\ ;
+製作費 > seisakuhi\ ;
+二週間 > nishuukan\ ;
+部落民 > burakumin\ ;
+加盟国 > kameikoku\ ;
+一夜中 > hitoyajuu\ ;
+構造体 > kouzoutai\ ;
+中医学 > chuuigaku\ ;
+受信者 > jushinsha\ ;
+会議録 > kaigiroku\ ;
+禁煙車 > kin''ensha\ ;
+電子銃 > denshijuu\ ;
+具体策 > gutaisaku\ ;
+車掌区 > shashouku\ ;
+他国民 > takokumin\ ;
+儒学者 > jugakusha\ ;
+名探偵 > meitantei\ ;
+国連旗 > kokurenki\ ;
+又従兄 > mataitoko\ ;
+鯣烏賊 > surumeika\ ;
+全市民 > zenshimin\ ;
+報道官 > houdoukan\ ;
+日本晴 > nihonbare\ ;
+布団皮 > futongawa\ ;
+修繕費 > shuuzenhi\ ;
+専門書 > senmonsho\ ;
+公用車 > kouyousha\ ;
+耐性菌 > taiseikin\ ;
+同種類 > doushurui\ ;
+音域外 > on''ikigai\ ;
+親和性 > shinwasei\ ;
+前頭葉 > zentouyou\ ;
+珠暖簾 > tamanoren\ ;
+九星家 > kyuuseika\ ;
+通気孔 > tsuukikou\ ;
+隣人愛 > rinjin''ai\ ;
+不承知 > fushouchi\ ;
+死亡数 > shibousuu\ ;
+居住権 > kyojuuken\ ;
+鉤括弧 > kagikakko\ ;
+倦怠感 > kentaikan\ ;
+冷蔵船 > reizousen\ ;
+合成酒 > gouseishu\ ;
+味噌汁 > misoshiru\ ;
+指導者 > shidousha\ ;
+半可通 > hankatsuu\ ;
+無警告 > mukeikoku\ ;
+大西郷 > daisaigou\ ;
+睡眠剤 > suiminzai\ ;
+旋盤工 > senbankou\ ;
+帯分数 > taibunsuu\ ;
+後継者 > koukeisha\ ;
+長談義 > nagadangi\ ;
+天日塩 > tenpishio\ ;
+威圧的 > iatsuteki\ ;
+二重底 > nijuuzoko\ ;
+又弟子 > matadeshi\ ;
+救命具 > kyuumeigu\ ;
+禁猟区 > kinryouku\ ;
+弩級艦 > dokyuukan\ ;
+恒久化 > koukyuuka\ ;
+具体的 > gutaiteki\ ;
+腹一杯 > haraippai\ ;
+格理論 > kakuriron\ ;
+感謝状 > kanshajou\ ;
+現行犯 > genkouhan\ ;
+日付印 > hidzukein\ ;
+太陽灯 > taiyoutou\ ;
+常用者 > jouyousha\ ;
+情報源 > jouhougen\ ;
+公使館 > koushikan\ ;
+帆立貝 > hotategai\ ;
+若武者 > wakamusha\ ;
+清算書 > seisansho\ ;
+本街道 > honkaidou\ ;
+郵便車 > yuubinsha\ ;
+一点機 > ichitenki\ ;
+夏風邪 > natsukaze\ ;
+中道派 > chuudouha\ ;
+暴風域 > boufuuiki\ ;
+発禁本 > hakkinbon\ ;
+圧電気 > atsudenki\ ;
+巨人党 > kyojintou\ ;
+時代物 > jidaimono\ ;
+屏風岩 > byoubuiwa\ ;
+快記録 > kaikiroku\ ;
+暴風圏 > boufuuken\ ;
+講談師 > koudanshi\ ;
+不成績 > fuseiseki\ ;
+多音節 > taonsetsu\ ;
+連帯感 > rentaikan\ ;
+部分的 > bubunteki\ ;
+専門店 > senmonten\ ;
+慣用音 > kan''youon\ ;
+夜仕事 > yoshigoto\ ;
+演習林 > enshuurin\ ;
+某高校 > boukoukou\ ;
+綿菓子 > watagashi\ ;
+跨線橋 > kosenkyou\ ;
+煙草盆 > tabakobon\ ;
+受験票 > jukenhyou\ ;
+内斜視 > naishashi\ ;
+電信機 > denshinki\ ;
+圧縮機 > asshukuki\ ;
+実行権 > jikkouken\ ;
+科学者 > kagakusha\ ;
+現行法 > genkouhou\ ;
+自然界 > shizenkai\ ;
+懸垂線 > kensuisen\ ;
+上手者 > jouzumono\ ;
+日本学 > nihongaku\ ;
+排障器 > haishouki\ ;
+真夏日 > manatsubi\ ;
+感無量 > kanmuryou\ ;
+給付金 > kyuufukin\ ;
+代名詞 > daimeishi\ ;
+救助船 > kyuujosen\ ;
+牽引車 > ken''insha\ ;
+居住性 > kyojuusei\ ;
+抗凝固 > kougyouko\ ;
+看護長 > kangochou\ ;
+低性能 > teiseinou\ ;
+無計画 > mukeikaku\ ;
+多面角 > tamenkaku\ ;
+低周波 > teishuuha\ ;
+理想郷 > risoukyou\ ;
+被爆者 > hibakusha\ ;
+精製糖 > seiseitou\ ;
+化学戦 > kagakusen\ ;
+有用性 > yuuyousei\ ;
+娯楽街 > gorakugai\ ;
+後天性 > koutensei\ ;
+校友会 > kouyuukai\ ;
+単利表 > tanrihyou\ ;
+療養所 > ryouyoujo\ ;
+保守的 > hoshuteki\ ;
+皇民党 > koumintou\ ;
+二重唱 > nijuushou\ ;
+免税店 > menzeiten\ ;
+卵胎生 > rantaisei\ ;
+線香代 > senkoudai\ ;
+対角化 > taikakuka\ ;
+最高点 > saikouten\ ;
+最低限 > saiteigen\ ;
+歌合戦 > utagassen\ ;
+平和賞 > heiwashou\ ;
+数係数 > suukeisuu\ ;
+木炭画 > mokutanga\ ;
+再降臨 > saikourin\ ;
+再調査 > saichousa\ ;
+高野槙 > kouyamaki\ ;
+定滑車 > teikassha\ ;
+似我蜂 > jigabachi\ ;
+旋光性 > senkousei\ ;
+名投手 > meitoushu\ ;
+採算性 > saisansei\ ;
+企業者 > kigyousha\ ;
+銀砂子 > ginsunago\ ;
+国分寺 > kokubunji\ ;
+養豚場 > youtonjou\ ;
+非対称 > hitaishou\ ;
+不銹鋼 > fushuukou\ ;
+一院制 > ichiinsei\ ;
+手仕事 > teshigoto\ ;
+胆嚢炎 > tan''nouen\ ;
+強打者 > kyoudasha\ ;
+規範的 > kihanteki\ ;
+羅紗紙 > rashagami\ ;
+脱衣場 > datsuijou\ ;
+救助網 > kyuujomou\ ;
+当選者 > tousensha\ ;
+太陰暦 > taiinreki\ ;
+揚羽蝶 > agehachou\ ;
+士君子 > shikunshi\ ;
+腰羽目 > koshibame\ ;
+片一方 > kataippou\ ;
+阿片窟 > ahenkutsu\ ;
+吾木香 > waremokou\ ;
+大型車 > oogatasha\ ;
+夏季熱 > kakinetsu\ ;
+内陸霧 > nairikumu\ ;
+植字機 > shokujiki\ ;
+遊覧船 > yuuransen\ ;
+乳房炎 > nyuubouen\ ;
+脳挫傷 > nouzashou\ ;
+学生課 > gakuseika\ ;
+藁布団 > warabuton\ ;
+投機心 > toukishin\ ;
+郵便船 > yuubinsen\ ;
+青年団 > seinendan\ ;
+勧告案 > kankokuan\ ;
+天文台 > tenmondai\ ;
+自然法 > shizenhou\ ;
+石灰洞 > sekkaidou\ ;
+増刊号 > zoukangou\ ;
+内大臣 > naidaijin\ ;
+現在地 > genzaichi\ ;
+戦車隊 > senshatai\ ;
+二重丸 > nijuumaru\ ;
+酒造場 > shuzoujou\ ;
+愛読者 > aidokusha\ ;
+石灰水 > sekkaisui\ ;
+大地震 > daijishin\ ;
+不拡大 > fukakudai\ ;
+主導者 > shudousha\ ;
+高蒔絵 > takamakie\ ;
+自然死 > shizenshi\ ;
+居住地 > kyojuuchi\ ;
+決死隊 > kesshitai\ ;
+主脳者 > shunousha\ ;
+舞楽面 > bugakumen\ ;
+魚介類 > gyokairui\ ;
+最高検 > saikouken\ ;
+熱汚染 > netsuosen\ ;
+恒星年 > kouseinen\ ;
+自在鉤 > jizaikagi\ ;
+競走馬 > kyousouba\ ;
+御手洗 > mitarashi\ ;
+増幅器 > zoufukuki\ ;
+日本側 > nihongawa\ ;
+人類史 > jinruishi\ ;
+苦労様 > kurousama\ ;
+禀請書 > rinseisho\ ;
+俳諧師 > haikaishi\ ;
+慣用語 > kan''yougo\ ;
+女学生 > jogakusei\ ;
+電子管 > denshikan\ ;
+梵天王 > bonten''ou\ ;
+合成紙 > gouseishi\ ;
+黄銅鉱 > koudoukou\ ;
+司教区 > shikyouku\ ;
+解散権 > kaisanken\ ;
+適齢期 > tekireiki\ ;
+威嚇的 > ikakuteki\ ;
+銃連射 > juurensha\ ;
+免税品 > menzeihin\ ;
+高水準 > kousuijun\ ;
+太陽年 > taiyounen\ ;
+石細工 > ishizaiku\ ;
+寝小便 > neshouben\ ;
+冷蔵法 > reizouhou\ ;
+配分法 > haibunhou\ ;
+耽美的 > tanbiteki\ ;
+潜航艇 > senkoutei\ ;
+同窓生 > dousousei\ ;
+放浪者 > hourousha\ ;
+種概念 > shugainen\ ;
+早明戦 > soumeisen\ ;
+微積分 > bisekibun\ ;
+鳥瞰図 > choukanzu\ ;
+女王蜂 > jooubachi\ ;
+外交官 > gaikoukan\ ;
+歯肉炎 > shinikuen\ ;
+自然林 > shizenrin\ ;
+演習場 > enshuujou\ ;
+小麦色 > komugiiro\ ;
+魚貝類 > gyokairui\ ;
+復古調 > fukkochou\ ;
+反省会 > hanseikai\ ;
+熱帯魚 > nettaigyo\ ;
+単葉機 > tan''youki\ ;
+所有者 > shoyuusha\ ;
+販売者 > hanbaisha\ ;
+主人顔 > shujingao\ ;
+滑稽者 > odokemono\ ;
+水飢饉 > mizukikin\ ;
+海上法 > kaijouhou\ ;
+熱可塑 > netsukaso\ ;
+化学品 > kagakuhin\ ;
+子沢山 > kodakusan\ ;
+余水吐 > yosuihaki\ ;
+昨年度 > sakunendo\ ;
+自然数 > shizensuu\ ;
+再訂版 > saiteiban\ ;
+青年会 > seinenkai\ ;
+現地人 > genchijin\ ;
+市街戦 > shigaisen\ ;
+懐疑心 > kaigishin\ ;
+朝日影 > asahikage\ ;
+誘導弾 > yuudoudan\ ;
+販売網 > hanbaimou\ ;
+八百万 > yaoyorozu\ ;
+貧乏人 > binbounin\ ;
+工事中 > koujichuu\ ;
+窃盗罪 > settouzai\ ;
+原裁判 > gensaiban\ ;
+点火薬 > tenkayaku\ ;
+海上権 > kaijouken\ ;
+化学剤 > kagakuzai\ ;
+精製法 > seiseihou\ ;
+方眼紙 > houganshi\ ;
+受賞者 > jushousha\ ;
+推薦者 > suisensha\ ;
+雪模様 > yukimoyou\ ;
+一級品 > ikkyuuhin\ ;
+格子点 > koushiten\ ;
+購買者 > koubaisha\ ;
+一等賞 > ittoushou\ ;
+他国人 > takokujin\ ;
+空気浴 > kuukiyoku\ ;
+外交団 > gaikoudan\ ;
+執行部 > shikkoubu\ ;
+理神論 > rishinron\ ;
+受験料 > jukenryou\ ;
+勝手元 > kattemoto\ ;
+相対論 > soutairon\ ;
+刊行会 > kankoukai\ ;
+卑金属 > hikinzoku\ ;
+保育料 > hoikuryou\ ;
+総資産 > soushisan\ ;
+住民税 > juuminzei\ ;
+圧縮器 > asshukuki\ ;
+俸給日 > houkyuubi\ ;
+行政府 > gyouseifu\ ;
+処女膜 > shojomaku\ ;
+随伴者 > zuihansha\ ;
+車海老 > kurumaebi\ ;
+悪宣伝 > akusenden\ ;
+多面的 > tamenteki\ ;
+対戦車 > taisensha\ ;
+苦労性 > kuroushou\ ;
+恐妻家 > kyousaika\ ;
+主宰者 > shusaisha\ ;
+半鹹水 > hankansui\ ;
+密航者 > mikkousha\ ;
+一等親 > ittoushin\ ;
+注連縄 > shimenawa\ ;
+補強筋 > hokyoukin\ ;
+看板屋 > kanban''ya\ ;
+社員寮 > shainryou\ ;
+呼吸法 > kokyuuhou\ ;
+体量器 > tairyouki\ ;
+化学上 > kagakujou\ ;
+伽藍鳥 > garanchou\ ;
+心臓部 > shinzoubu\ ;
+最高峰 > saikouhou\ ;
+競輪場 > keirinjou\ ;
+重婚者 > juukonsha\ ;
+要撃機 > yougekiki\ ;
+気化熱 > kikanetsu\ ;
+日教組 > nikkyouso\ ;
+三等星 > santousei\ ;
+命名法 > meimeihou\ ;
+参加国 > sankakoku\ ;
+未開拓 > mikaitaku\ ;
+再編成 > saihensei\ ;
+透水性 > tousuisei\ ;
+反対論 > hantairon\ ;
+学芸員 > gakugeiin\ ;
+冷凍魚 > reitougyo\ ;
+敗残兵 > haizanhei\ ;
+書生論 > shoseiron\ ;
+志望者 > shibousha\ ;
+財政難 > zaiseinan\ ;
+制癌剤 > seiganzai\ ;
+発泡剤 > happouzai\ ;
+伝奇的 > denkiteki\ ;
+絆創膏 > bansoukou\ ;
+保存料 > hozonryou\ ;
+石灰岩 > sekkaigan\ ;
+兵学校 > heigakkou\ ;
+富山県 > toyamaken\ ;
+近代史 > kindaishi\ ;
+該当者 > gaitousha\ ;
+点数制 > tensuusei\ ;
+高知県 > kouchiken\ ;
+口上書 > koujousho\ ;
+解放感 > kaihoukan\ ;
+平和的 > heiwateki\ ;
+自閉症 > jiheishou\ ;
+飲用水 > in''yousui\ ;
+太陽光 > taiyoukou\ ;
+橋頭保 > kyoutouho\ ;
+古書市 > koshoichi\ ;
+天然塩 > ten''nenen\ ;
+公害罪 > kougaizai\ ;
+淫売宿 > inbaiyado\ ;
+起請文 > kishoumon\ ;
+碁盤縞 > gobanjima\ ;
+俗世間 > zokuseken\ ;
+甘納豆 > amanattou\ ;
+乾酪素 > kanrakuso\ ;
+冶金学 > yakingaku\ ;
+冗長度 > jouchoudo\ ;
+私家集 > shikashuu\ ;
+市街地 > shigaichi\ ;
+可読性 > kadokusei\ ;
+明示的 > meijiteki\ ;
+大回転 > daikaiten\ ;
+呉服店 > gofukuten\ ;
+中華丼 > chuukadon\ ;
+大西洋 > taiseiyou\ ;
+理想的 > risouteki\ ;
+妻帯者 > saitaisha\ ;
+八宝菜 > happousai\ ;
+双蹄獸 > souteijuu\ ;
+国全土 > kokuzendo\ ;
+二進法 > nishinhou\ ;
+羽布団 > hanebuton\ ;
+自然増 > shizenzou\ ;
+時代劇 > jidaigeki\ ;
+混成酒 > konseishu\ ;
+公倍数 > koubaisuu\ ;
+処方箋 > shohousen\ ;
+癌細胞 > gansaibou\ ;
+累減税 > ruigenzei\ ;
+所作事 > shosagoto\ ;
+無限小 > mugenshou\ ;
+窃盗犯 > settouhan\ ;
+仕手株 > shitekabu\ ;
+口下手 > kuchibeta\ ;
+金曜日 > kin''youbi\ ;
+低水準 > teisuijun\ ;
+製作所 > seisakujo\ ;
+伝声管 > denseikan\ ;
+陰武者 > kagemusha\ ;
+量子化 > ryoushika\ ;
+好一対 > kouittsui\ ;
+事務局 > jimukyoku\ ;
+副鼻腔 > fukubikuu\ ;
+浪費癖 > rouhiheki\ ;
+給費生 > kyuuhisei\ ;
+県人会 > kenjinkai\ ;
+主任者 > shuninsha\ ;
+公用文 > kouyoubun\ ;
+行政区 > gyouseiku\ ;
+推薦状 > suisenjou\ ;
+中距離 > chuukyori\ ;
+共産化 > kyousanka\ ;
+会期中 > kaikichuu\ ;
+野球場 > yakyuujou\ ;
+閑古鳥 > kankodori\ ;
+産褥期 > sanjokuki\ ;
+主導権 > shudouken\ ;
+募金箱 > bokinbako\ ;
+硬口蓋 > koukougai\ ;
+史記抄 > shikishou\ ;
+年齢層 > nenreisou\ ;
+頭頂部 > touchoubu\ ;
+早場米 > hayabamai\ ;
+口語訳 > kougoyaku\ ;
+油圧計 > yuatsukei\ ;
+二毛作 > nimousaku\ ;
+検糖計 > kentoukei\ ;
+誘導体 > yuudoutai\ ;
+真四角 > mashikaku\ ;
+申命記 > shinmeiki\ ;
+脂肪層 > shibousou\ ;
+物品税 > buppinzei\ ;
+鳳翅鐘 > houshitou\ ;
+層積雲 > sousekiun\ ;
+秒時計 > byoudokei\ ;
+珊瑚礁 > sangoshou\ ;
+連体詞 > rentaishi\ ;
+屁理屈 > herikutsu\ ;
+同情者 > doujousha\ ;
+志願者 > shigansha\ ;
+浪人生 > rouninsei\ ;
+不可逆 > fukagyaku\ ;
+大阪市 > oosakashi\ ;
+愛読書 > aidokusho\ ;
+可塑物 > kasobutsu\ ;
+新造語 > shinzougo\ ;
+反対者 > hantaisha\ ;
+黒砂糖 > kurozatou\ ;
+玄米茶 > genmaicha\ ;
+演繹法 > en''ekihou\ ;
+臨場感 > rinjoukan\ ;
+偏西風 > henseifuu\ ;
+香味料 > koumiryou\ ;
+正甲板 > seikanpan\ ;
+審議会 > shingikai\ ;
+青森県 > aomoriken\ ;
+不感症 > fukanshou\ ;
+禁衛隊 > kin''eitai\ ;
+放水車 > housuisha\ ;
+耐水性 > taisuisei\ ;
+玄関番 > genkanban\ ;
+前夜祭 > zen''yasai\ ;
+月桂冠 > gekkeikan\ ;
+二刀流 > nitouryuu\ ;
+所有権 > shoyuuken\ ;
+冷凍車 > reitousha\ ;
+来会者 > raikaisha\ ;
+上等品 > joutouhin\ ;
+荒療治 > araryouji\ ;
+楽観論 > rakkanron\ ;
+倶舎宗 > kushashuu\ ;
+無言劇 > mugongeki\ ;
+入苑券 > nyuuenken\ ;
+腱鞘炎 > kenshouen\ ;
+高年者 > kounensha\ ;
+探海灯 > tankaitou\ ;
+無規律 > mukiritsu\ ;
+形容詞 > keiyoushi\ ;
+岩雲雀 > iwahibari\ ;
+徒競走 > tokyousou\ ;
+不戦勝 > fusenshou\ ;
+自然人 > shizenjin\ ;
+家庭的 > kateiteki\ ;
+高気圧 > koukiatsu\ ;
+滑稽本 > kokkeibon\ ;
+女子寮 > joshiryou\ ;
+政治的 > seijiteki\ ;
+上等兵 > joutouhei\ ;
+原稿紙 > genkoushi\ ;
+色眼鏡 > iromegane\ ;
+楽譜台 > gakufudai\ ;
+冷水塊 > reisuikai\ ;
+保護色 > hogoshoku\ ;
+色収差 > iroshuusa\ ;
+美術家 > bijutsuka\ ;
+再評価 > saihyouka\ ;
+競争馬 > kyousouba\ ;
+準備中 > junbichuu\ ;
+光合成 > kougousei\ ;
+悪条件 > akujouken\ ;
+三悪趣 > sanakushu\ ;
+主産地 > shusanchi\ ;
+貴方々 > anatagata\ ;
+巻積雲 > kensekiun\ ;
+希硫酸 > kiryuusan\ ;
+脱穀機 > dakkokuki\ ;
+鼎談会 > teidankai\ ;
+複本位 > fukuhon''i\ ;
+俗趣味 > zokushumi\ ;
+終止符 > shuushifu\ ;
+精製品 > seiseihin\ ;
+憲兵隊 > kenpeitai\ ;
+配偶者 > haiguusha\ ;
+充当金 > juutoukin\ ;
+消火栓 > shoukasen\ ;
+寄留者 > kiryuusha\ ;
+灰神楽 > haikagura\ ;
+不量見 > furyouken\ ;
+金一封 > kin''ippuu\ ;
+床運動 > yukaundou\ ;
+寄生虫 > kiseichuu\ ;
+三等分 > santoubun\ ;
+喫水線 > kissuisen\ ;
+悪玉化 > akudamaka\ ;
+超簡易 > choukan''i\ ;
+戯作者 > gesakusha\ ;
+青瓢箪 > aobyoutan\ ;
+患者様 > kanjasama\ ;
+五寸釘 > gosunkugi\ ;
+仮登記 > karitouki\ ;
+合同軍 > goudougun\ ;
+非現業 > higengyou\ ;
+勤労者 > kinrousha\ ;
+固定長 > koteichou\ ;
+殺菌剤 > sakkinzai\ ;
+洋服屋 > youfukuya\ ;
+起爆剤 > kibakuzai\ ;
+表示灯 > hyoujitou\ ;
+便利帳 > benrichou\ ;
+取材班 > shuzaihan\ ;
+脂肪体 > shiboutai\ ;
+郵便屋 > yuubin''ya\ ;
+中辞典 > chuujiten\ ;
+洗面台 > senmendai\ ;
+内裏雛 > dairibina\ ;
+全二重 > zen''nijuu\ ;
+溶解性 > youkaisei\ ;
+整数論 > seisuuron\ ;
+民社党 > minshatou\ ;
+企画書 > kikakusho\ ;
+生地獄 > ikijigoku\ ;
+純米酒 > junmaishu\ ;
+回遊魚 > kaiyuugyo\ ;
+無関心 > mukanshin\ ;
+友人間 > yuujinkan\ ;
+有斐閣 > yuuhikaku\ ;
+販売店 > hanbaiten\ ;
+志望校 > shiboukou\ ;
+奉迎門 > hougeimon\ ;
+面会人 > menkainin\ ;
+一箇月 > ikkagetsu\ ;
+送水管 > sousuikan\ ;
+冷凍船 > reitousen\ ;
+年配者 > nenpaisha\ ;
+手数料 > tesuuryou\ ;
+離魂病 > rikonbyou\ ;
+水中花 > suichuuka\ ;
+動名詞 > doumeishi\ ;
+黄金色 > koganeiro\ ;
+二元的 > nigenteki\ ;
+縞栗鼠 > shimarisu\ ;
+娯楽場 > gorakujou\ ;
+遊覧地 > yuuranchi\ ;
+本因坊 > hon''inbou\ ;
+共栄圏 > kyoueiken\ ;
+相対死 > aitaijini\ ;
+国自慢 > kunijiman\ ;
+重大視 > juudaishi\ ;
+企業内 > kigyounai\ ;
+同窓会 > dousoukai\ ;
+法蓮草 > hourensou\ ;
+海外版 > kaigaiban\ ;
+扇状地 > senjouchi\ ;
+打撃戦 > dagekisen\ ;
+透写紙 > toushashi\ ;
+人文史 > jinbunshi\ ;
+指定券 > shiteiken\ ;
+香水瓶 > kousuibin\ ;
+熱帯病 > netaibyou\ ;
+伝記物 > denkimono\ ;
+計量器 > keiryouki\ ;
+補償金 > hoshoukin\ ;
+軽犯罪 > keihanzai\ ;
+霰弾銃 > sandanjuu\ ;
+合憲性 > goukensei\ ;
+地鎮祭 > jichinsai\ ;
+主体性 > shutaisei\ ;
+素粒子 > soryuushi\ ;
+奇麗事 > kireigoto\ ;
+蝿地獄 > haejigoku\ ;
+大災害 > daisaigai\ ;
+楽天家 > rakutenka\ ;
+理性的 > riseiteki\ ;
+鼓笛隊 > kotekitai\ ;
+寒暖計 > kandankei\ ;
+花粉症 > kafunshou\ ;
+人為的 > jin''iteki\ ;
+受領者 > juryousha\ ;
+企画性 > kikakusei\ ;
+内需型 > naijugata\ ;
+原成岩 > genseigan\ ;
+表示板 > hyoujiban\ ;
+永久歯 > eikyuushi\ ;
+千社札 > senjafuda\ ;
+菩提心 > bodaishin\ ;
+表示書 > hyoujisho\ ;
+精算書 > seisansho\ ;
+放水管 > housuikan\ ;
+双子葉 > soushiyou\ ;
+性転換 > seitenkan\ ;
+輸送量 > yusouryou\ ;
+所有地 > shoyuuchi\ ;
+鼓手長 > koshuchou\ ;
+総本店 > souhonten\ ;
+元気者 > genkimono\ ;
+代弁者 > daibensha\ ;
+町医者 > machiisha\ ;
+製材所 > seizaisho\ ;
+反乱軍 > hanrangun\ ;
+総人口 > soujinkou\ ;
+店仕舞 > misejimai\ ;
+中保者 > chuuhosha\ ;
+立法者 > rippousha\ ;
+草相撲 > kusazumou\ ;
+予備錨 > yobiikari\ ;
+歓送会 > kansoukai\ ;
+双翅類 > soushirui\ ;
+紙細工 > kamizaiku\ ;
+山水荘 > sansuisou\ ;
+表沙汰 > omotezata\ ;
+唐獅子 > karajishi\ ;
+平和国 > heiwakoku\ ;
+低気圧 > teikiatsu\ ;
+作業用 > sagyouyou\ ;
+水害地 > suigaichi\ ;
+総本山 > souhonzan\ ;
+演説家 > enzetsuka\ ;
+盲腸炎 > mouchouen\ ;
+稀硫酸 > kiryuusan\ ;
+遣唐使 > kentoushi\ ;
+作業班 > sagyouhan\ ;
+活性炭 > kasseitan\ ;
+最小化 > saishouka\ ;
+乗降場 > joukoujou\ ;
+俗世界 > zokusekai\ ;
+毛織物 > keorimono\ ;
+志願書 > shigansho\ ;
+不死鳥 > fushichou\ ;
+悲観的 > hikanteki\ ;
+成功者 > seikousha\ ;
+看護学 > kangogaku\ ;
+上向線 > joukousen\ ;
+消炎剤 > shouenzai\ ;
+公休日 > koukyuubi\ ;
+総罷業 > souhigyou\ ;
+再投資 > saitoushi\ ;
+歌劇場 > kagekijou\ ;
+浄水場 > jousuijou\ ;
+水耕法 > suikouhou\ ;
+大演習 > daienshuu\ ;
+実測図 > jissokuzu\ ;
+膨張度 > bouchoudo\ ;
+映写幕 > eishamaku\ ;
+上水道 > jousuidou\ ;
+全住民 > zenjuumin\ ;
+浄水地 > jousuichi\ ;
+男性用 > danseiyou\ ;
+好奇心 > koukishin\ ;
+肉体美 > nikutaibi\ ;
+国家的 > kokkateki\ ;
+犠牲的 > giseiteki\ ;
+連子窓 > renjimado\ ;
+相対性 > soutaisei\ ;
+関心事 > kanshinji\ ;
+蒲団皮 > futongawa\ ;
+北斗星 > hokutosei\ ;
+本拠地 > honkyochi\ ;
+舞踏病 > butoubyou\ ;
+内外人 > naigaijin\ ;
+下種女 > gesuon''na\ ;
+赤電車 > akadensha\ ;
+粘板岩 > nenbangan\ ;
+事業者 > jigyousha\ ;
+歓迎会 > kangeikai\ ;
+託児所 > takujisho\ ;
+保証金 > hoshoukin\ ;
+猩々緋 > shoujouhi\ ;
+水時計 > mizudokei\ ;
+盲導犬 > moudouken\ ;
+販売人 > hanbainin\ ;
+人国記 > jinkokuki\ ;
+普及版 > fukyuuban\ ;
+半部族 > hanbuzoku\ ;
+飛道具 > tobidougu\ ;
+人間界 > ningenkai\ ;
+乳母車 > ubaguruma\ ;
+惨死体 > zanshitai\ ;
+運搬人 > unpan''nin\ ;
+抗生剤 > kouseizai\ ;
+世迷言 > yomaigoto\ ;
+伝言板 > dengonban\ ;
+自立語 > jiritsugo\ ;
+熱帯林 > nettairin\ ;
+永久性 > eikyuusei\ ;
+製本屋 > seihon''ya\ ;
+汽車賃 > kishachin\ ;
+禁裏様 > kinrisama\ ;
+慣用句 > kan''youku\ ;
+観光地 > kankouchi\ ;
+会見者 > kaikensha\ ;
+東天紅 > toutenkou\ ;
+観光団 > kankoudan\ ;
+技巧的 > gikouteki\ ;
+楽隠居 > rakuinkyo\ ;
+高速度 > kousokudo\ ;
+私生子 > shiseishi\ ;
+日記帳 > nikkichou\ ;
+政治学 > seijigaku\ ;
+水理学 > suirigaku\ ;
+母子寮 > boshiryou\ ;
+着心地 > kigokochi\ ;
+戒厳令 > kaigenrei\ ;
+投与量 > touyoryou\ ;
+哺乳類 > honyuurui\ ;
+大蝙蝠 > ookoumori\ ;
+無投票 > mutouhyou\ ;
+指了図 > shiryouzu\ ;
+適応性 > tekiousei\ ;
+回送車 > kaisousha\ ;
+漫才師 > manzaishi\ ;
+花火師 > hanabishi\ ;
+事業税 > jigyouzei\ ;
+収容所 > shuuyoujo\ ;
+国璽書 > kokujisho\ ;
+感覚器 > kankakuki\ ;
+教育費 > kyouikuhi\ ;
+固定給 > koteikyuu\ ;
+展覧会 > tenrankai\ ;
+交代制 > koutaisei\ ;
+巡視艇 > junshitei\ ;
+巡視船 > junshisen\ ;
+汎関数 > hankansuu\ ;
+全人生 > zenjinsei\ ;
+断強度 > dankyoudo\ ;
+処女作 > shojosaku\ ;
+個性的 > koseiteki\ ;
+全音階 > zen''onkai\ ;
+反乱者 > hanransha\ ;
+軽音楽 > keiongaku\ ;
+鑿岩機 > sakuganki\ ;
+回復期 > kaifukuki\ ;
+不合格 > fugoukaku\ ;
+周波計 > shuuhakei\ ;
+不可欠 > fukaketsu\ ;
+硬化症 > koukashou\ ;
+逆効果 > gyakkouka\ ;
+一等国 > ittoukoku\ ;
+全封地 > zenhouchi\ ;
+分配金 > bunpaikin\ ;
+回遊船 > kaiyuusen\ ;
+公会堂 > koukaidou\ ;
+無表情 > muhyoujou\ ;
+水餃子 > suigyouza\ ;
+風土病 > fuudobyou\ ;
+逃避的 > touhiteki\ ;
+古文学 > kobungaku\ ;
+優等生 > yuutousei\ ;
+固定票 > koteihyou\ ;
+対向車 > taikousha\ ;
+事業界 > jigyoukai\ ;
+批判的 > hihanteki\ ;
+天地人 > tenchijin\ ;
+血統書 > kettousho\ ;
+中二階 > chuunikai\ ;
+山葡萄 > yamabudou\ ;
+黄道面 > koudoumen\ ;
+受難週 > junanshuu\ ;
+尊厳死 > songenshi\ ;
+考古学 > koukogaku\ ;
+保険証 > hokenshou\ ;
+高分子 > koubunshi\ ;
+冥加金 > myougakin\ ;
+内地米 > naichimai\ ;
+枯葉剤 > karehazai\ ;
+招待日 > shoutaibi\ ;
+誓願権 > seiganken\ ;
+愛国者 > aikokusha\ ;
+訴願人 > sogan''nin\ ;
+領事館 > ryoujikan\ ;
+主犯者 > shuhansha\ ;
+防護壁 > bougoheki\ ;
+資金源 > shikingen\ ;
+鼠咬症 > sokoushou\ ;
+三重盗 > sanjuutou\ ;
+連体形 > rentaikei\ ;
+現段階 > gendankai\ ;
+成年者 > seinensha\ ;
+金解禁 > kinkaikin\ ;
+羽子突 > hanetsuki\ ;
+洗濯粉 > sentakuko\ ;
+光化学 > koukagaku\ ;
+農学部 > nougakubu\ ;
+主任制 > shuninsei\ ;
+舞踏服 > butoufuku\ ;
+経験論 > keikenron\ ;
+経験談 > keikendan\ ;
+擦過傷 > sakkashou\ ;
+再製品 > saiseihin\ ;
+四重奏 > shijuusou\ ;
+相対値 > soutaichi\ ;
+母子共 > boshitomo\ ;
+鉄火巻 > tekkamaki\ ;
+英作文 > eisakubun\ ;
+戦車兵 > senshahei\ ;
+再投稿 > saitoukou\ ;
+教養部 > kyouyoubu\ ;
+立法権 > rippouken\ ;
+妥協点 > dakyouten\ ;
+雲仙岳 > unzendake\ ;
+受領書 > juryousho\ ;
+不活化 > fukatsuka\ ;
+文章語 > bunshougo\ ;
+青信号 > aoshingou\ ;
+時計皿 > tokeizara\ ;
+幽冥界 > yuumeikai\ ;
+執行吏 > shikkouri\ ;
+等高線 > toukousen\ ;
+絞首台 > koushudai\ ;
+破擦音 > hasatsuon\ ;
+送受信 > soujushin\ ;
+一神論 > isshinron\ ;
+着道楽 > kidouraku\ ;
+明後年 > myougonen\ ;
+法務省 > houmushou\ ;
+酵素学 > kousogaku\ ;
+混合酒 > kongoushu\ ;
+図像学 > zuzougaku\ ;
+奉加帳 > hougachou\ ;
+感嘆詞 > kantanshi\ ;
+前売券 > maeuriken\ ;
+志願兵 > shiganhei\ ;
+反射光 > hanshakou\ ;
+皮細工 > kawazaiku\ ;
+復水器 > fukusuiki\ ;
+関連性 > kanrensei\ ;
+統語学 > tougogaku\ ;
+晴眼者 > seigansha\ ;
+講演料 > kouenryou\ ;
+敬老会 > keiroukai\ ;
+時間軸 > jikanjiku\ ;
+反対党 > hantaitou\ ;
+搭乗者 > toujousha\ ;
+社民党 > shamintou\ ;
+絞首刑 > koushukei\ ;
+創建者 > soukensha\ ;
+最大限 > saidaigen\ ;
+楓子香 > fuushikou\ ;
+混成岩 > konseigan\ ;
+紙粘土 > kaminendo\ ;
+条件文 > joukenbun\ ;
+意識体 > ishikitai\ ;
+私企業 > shikigyou\ ;
+空模様 > soramoyou\ ;
+公有林 > kouyuurin\ ;
+山水楼 > sansuirou\ ;
+寄留地 > kiryuuchi\ ;
+断剛性 > dangousei\ ;
+空元気 > karagenki\ ;
+打算的 > dasanteki\ ;
+退蔵品 > taizouhin\ ;
+影響圏 > eikyouken\ ;
+真善美 > shinzenbi\ ;
+仲保者 > chuuhosha\ ;
+手術衣 > shujutsui\ ;
+人間愛 > ningen''ai\ ;
+理知的 > richiteki\ ;
+琥珀色 > kohakuiro\ ;
+御蔭様 > okagesama\ ;
+毛細管 > mousaikan\ ;
+白胡麻 > shirogoma\ ;
+主人公 > shujinkou\ ;
+人間性 > ningensei\ ;
+単孔類 > tankourui\ ;
+同労者 > dourousha\ ;
+即時性 > sokujisei\ ;
+乳呑児 > chinomigo\ ;
+不徳漢 > futokukan\ ;
+遭遇戦 > souguusen\ ;
+又家来 > matagerai\ ;
+正書法 > seishohou\ ;
+独自性 > dokujisei\ ;
+弁財天 > benzaiten\ ;
+勤務先 > kinmusaki\ ;
+持久戦 > jikyuusen\ ;
+重要視 > juuyoushi\ ;
+空梅雨 > karatsuyu\ ;
+混成団 > konseidan\ ;
+火口壁 > kakouheki\ ;
+時間表 > jikanhyou\ ;
+砂利道 > jarimichi\ ;
+会計官 > kaikeikan\ ;
+賤業婦 > sengyoufu\ ;
+経験者 > keikensha\ ;
+韓国語 > hankokugo\ ;
+教材費 > kyouzaihi\ ;
+勝利者 > shourisha\ ;
+潜伏期 > senpukuki\ ;
+大団円 > daidan''en\ ;
+午前様 > gozensama\ ;
+海潮音 > kaichouon\ ;
+正犯者 > seihansha\ ;
+可圧性 > kaatsusei\ ;
+船大工 > funadaiku\ ;
+土地柄 > tochigara\ ;
+登舷礼 > tougenrei\ ;
+政府筋 > seifusuji\ ;
+活性剤 > kasseizai\ ;
+反体制 > hantaisei\ ;
+藻菌類 > soukinrui\ ;
+滑石粉 > kassekiko\ ;
+緩衝器 > kanshouki\ ;
+鳩羽色 > hatobairo\ ;
+顕微鏡 > kenbikyou\ ;
+測定器 > sokuteiki\ ;
+名店街 > meitengai\ ;
+利休色 > rikyuuiro\ ;
+国事犯 > kokujihan\ ;
+混成品 > konseihin\ ;
+分配者 > bunpaisha\ ;
+半透明 > hantoumei\ ;
+分水線 > bunsuisen\ ;
+遊戯的 > yuugiteki\ ;
+近視眼 > kinshigan\ ;
+主謀者 > shubousha\ ;
+会計士 > kaikeishi\ ;
+初年兵 > shonenhei\ ;
+同年輩 > dounenpai\ ;
+珍無類 > chinmurui\ ;
+箝口令 > kankourei\ ;
+合法性 > gouhousei\ ;
+総領事 > souryouji\ ;
+州政府 > shuuseifu\ ;
+商務官 > shoumukan\ ;
+応接間 > ousetsuma\ ;
+参会者 > sankaisha\ ;
+五人組 > goningumi\ ;
+黄水晶 > kizuishou\ ;
+内裏様 > dairisama\ ;
+大衆化 > taishuuka\ ;
+重大性 > juudaisei\ ;
+外国語 > gaikokugo\ ;
+勢力家 > seiryokka\ ;
+声楽家 > seigakuka\ ;
+製靴業 > seikagyou\ ;
+箱馬車 > hakobasha\ ;
+宮内省 > kunaishou\ ;
+事業所 > jigyousho\ ;
+穿山甲 > senzankou\ ;
+臨港線 > rinkousen\ ;
+唯名論 > yuimeiron\ ;
+改造車 > kaizousha\ ;
+黄金国 > ougonkoku\ ;
+芋羊羹 > imoyoukan\ ;
+更生品 > kouseihin\ ;
+芋羊羮 > imoyoukan\ ;
+広小路 > hirokouji\ ;
+空返事 > sorahenji\ ;
+腐植土 > fushokudo\ ;
+次善策 > jizensaku\ ;
+遠眼鏡 > toomegane\ ;
+創造者 > souzousha\ ;
+休電日 > kyuudenbi\ ;
+板門店 > hanmonten\ ;
+導入部 > dounyuubu\ ;
+禅問答 > zenmondou\ ;
+複数個 > fukusuuko\ ;
+盲学校 > mougakkou\ ;
+詞華集 > shikashuu\ ;
+研修課 > kenshuuka\ ;
+弾性体 > danseitai\ ;
+献呈本 > kenteibon\ ;
+尾長鶏 > onagadori\ ;
+放送網 > housoumou\ ;
+麻酔薬 > masuiyaku\ ;
+千年紀 > sen''nenki\ ;
+僧帽弁 > soubouben\ ;
+太鼓腹 > taikobara\ ;
+前装砲 > zensouhou\ ;
+分遣隊 > bunkentai\ ;
+吹奏者 > suisousha\ ;
+好角家 > koukakuka\ ;
+悪天候 > akutenkou\ ;
+推進機 > suishinki\ ;
+鉤十字 > kagijuuji\ ;
+乱気流 > rankiryuu\ ;
+冷凍剤 > reitouzai\ ;
+初対面 > shotaimen\ ;
+未収載 > mishuusai\ ;
+嗜好品 > shikouhin\ ;
+火砕流 > kasairyuu\ ;
+悪天使 > akutenshi\ ;
+強化米 > kyoukamai\ ;
+水雷艇 > suiraitei\ ;
+観楓会 > kanpuukai\ ;
+体験談 > taikendan\ ;
+無感覚 > mukankaku\ ;
+群速度 > gunsokudo\ ;
+電総研 > densouken\ ;
+不確定 > fukakutei\ ;
+白百合 > shirayuri\ ;
+舞踊劇 > buyougeki\ ;
+火口丘 > kakoukyuu\ ;
+不正確 > fuseikaku\ ;
+陽子線 > youshisen\ ;
+時間給 > jikankyuu\ ;
+分水界 > bunsuikai\ ;
+乱反射 > ranhansha\ ;
+解答欄 > kaitouran\ ;
+魚雷艇 > gyoraitei\ ;
+公有地 > kouyuuchi\ ;
+欺瞞的 > gimanteki\ ;
+明瞭度 > meiryoudo\ ;
+会計係 > kaikeikei\ ;
+輸入税 > yunyuuzei\ ;
+不心得 > fukokoroe\ ;
+二業地 > nigyouchi\ ;
+単子論 > tanshiron\ ;
+証拠金 > shoukokin\ ;
+生演奏 > namaensou\ ;
+微分学 > bibungaku\ ;
+専従者 > senjuusha\ ;
+仙台侯 > sendaikou\ ;
+兄弟愛 > kyoudaiai\ ;
+万華鏡 > mangekyou\ ;
+禁漁期 > kinryouki\ ;
+人間像 > ningenzou\ ;
+回帰的 > kaikiteki\ ;
+市民税 > shiminzei\ ;
+富士額 > fujibitai\ ;
+光速度 > kousokudo\ ;
+開票所 > kaihyoujo\ ;
+体育館 > taiikukan\ ;
+変調波 > henchouha\ ;
+同盟軍 > doumeigun\ ;
+告訴人 > kokusonin\ ;
+学士院 > gakushiin\ ;
+倫理的 > rinriteki\ ;
+点鼻薬 > tenbiyaku\ ;
+投書欄 > toushoran\ ;
+訴訟法 > soshouhou\ ;
+四半分 > shihanbun\ ;
+吸音材 > kyuuonzai\ ;
+初体験 > shotaiken\ ;
+輸入盤 > yunyuuban\ ;
+不知火 > shiranuhi\ ;
+卵細胞 > ransaibou\ ;
+二極化 > nikyokuka\ ;
+南京錠 > nankinjou\ ;
+鳩時計 > hatodokei\ ;
+哺乳瓶 > honyuubin\ ;
+西洋風 > seiyoufuu\ ;
+既製服 > kiseifuku\ ;
+野外劇 > yagaigeki\ ;
+普遍的 > fuhenteki\ ;
+事業団 > jigyoudan\ ;
+小役人 > koyakunin\ ;
+鳥媒花 > choubaika\ ;
+自治領 > jichiryou\ ;
+破壊的 > hakaiteki\ ;
+窮措大 > kyuusodai\ ;
+達磨船 > darumasen\ ;
+内在性 > naizaisei\ ;
+小荷物 > konimotsu\ ;
+日系人 > nikkeijin\ ;
+精神科 > seishinka\ ;
+一合目 > ichigoume\ ;
+住居跡 > juukyoato\ ;
+再抗弁 > saikouben\ ;
+農作業 > nousagyou\ ;
+螢光燈 > keikoutou\ ;
+付年表 > funenpyou\ ;
+正誤表 > seigohyou\ ;
+四輪車 > yonrinsha\ ;
+金米糖 > konpeitou\ ;
+三重奏 > sanjuusou\ ;
+保証書 > hoshousho\ ;
+否定的 > hiteiteki\ ;
+不連続 > furenzoku\ ;
+武断的 > budanteki\ ;
+出穂期 > shussuiki\ ;
+上半期 > kamihanki\ ;
+単子葉 > tanshiyou\ ;
+微分商 > bibunshou\ ;
+義兄弟 > gikyoudai\ ;
+複素数 > fukusosuu\ ;
+転校生 > tenkousei\ ;
+昼夜帯 > chuuyaobi\ ;
+事件表 > jikenhyou\ ;
+螢光灯 > keikoutou\ ;
+強硬派 > kyoukouha\ ;
+排気量 > haikiryou\ ;
+女文字 > on''namoji\ ;
+無所属 > mushozoku\ ;
+周波数 > shuuhasuu\ ;
+猛禽類 > moukinrui\ ;
+生態系 > seitaikei\ ;
+散文詩 > sanbunshi\ ;
+栽培種 > saibaishu\ ;
+原著者 > genchosha\ ;
+電話料 > denwaryou\ ;
+技能賞 > ginoushou\ ;
+料金所 > ryoukinjo\ ;
+支配者 > shihaisha\ ;
+洗濯屋 > sentakuya\ ;
+側近者 > sokkinsha\ ;
+実社会 > jisshakai\ ;
+御連絡 > gorenraku\ ;
+香川県 > kagawaken\ ;
+点滴器 > tentekiki\ ;
+予定表 > yoteihyou\ ;
+弁護料 > bengoryou\ ;
+主要駅 > shuyoueki\ ;
+対応策 > taiousaku\ ;
+輸入港 > yunyuukou\ ;
+同志会 > doushikai\ ;
+迎撃機 > geigekiki\ ;
+人地名 > jinchimei\ ;
+保険料 > hokenryou\ ;
+大和芋 > yamatoimo\ ;
+高優先 > kouyuusen\ ;
+放送法 > housouhou\ ;
+示力図 > jiryokuzu\ ;
+雪女郎 > yukijorou\ ;
+零細農 > reisainou\ ;
+真清水 > mashimizu\ ;
+助太刀 > sukedachi\ ;
+克己心 > kokkishin\ ;
+設計者 > sekkeisha\ ;
+無神論 > mushinron\ ;
+有袋類 > yuutairui\ ;
+一殺那 > issetsuna\ ;
+心理戦 > shinrisen\ ;
+御歴歴 > orekireki\ ;
+不平等 > fubyoudou\ ;
+利尿剤 > rinyouzai\ ;
+絹積雲 > kensekiun\ ;
+牧歌的 > bokkateki\ ;
+漸近線 > zenkinsen\ ;
+子安貝 > koyasukai\ ;
+旅日記 > tabinikki\ ;
+売上金 > uriagekin\ ;
+受給者 > jukyuusha\ ;
+明年度 > myounendo\ ;
+二枚舌 > nimaijita\ ;
+三重冠 > sanjuukan\ ;
+誘電子 > yuudenshi\ ;
+関係詞 > kankeishi\ ;
+紡錘形 > bousuikei\ ;
+奉幣使 > houheishi\ ;
+革細工 > kawazaiku\ ;
+市民法 > shiminhou\ ;
+最敬礼 > saikeirei\ ;
+苦学生 > kugakusei\ ;
+得意先 > tokuisaki\ ;
+雨仕度 > amajitaku\ ;
+周波帯 > shuuhatai\ ;
+管制官 > kanseikan\ ;
+燃料費 > nenryouhi\ ;
+年輩者 > nenpaisha\ ;
+量記号 > ryoukigou\ ;
+発光体 > hakkoutai\ ;
+半円形 > han''enkei\ ;
+円虫類 > enchuurui\ ;
+懸想文 > kesoubumi\ ;
+検潮器 > kenchouki\ ;
+姉妹編 > shimaihen\ ;
+血糖値 > kettouchi\ ;
+無重量 > mujuuryou\ ;
+電話帳 > denwachou\ ;
+午前中 > gozenchuu\ ;
+営業所 > eigyousho\ ;
+米市場 > beiichiba\ ;
+不動心 > fudoushin\ ;
+推進器 > suishinki\ ;
+小判形 > kobangata\ ;
+回送店 > kaisouten\ ;
+照明器 > shoumeiki\ ;
+徹甲弾 > tekkoudan\ ;
+宮内庁 > kunaichou\ ;
+市民権 > shiminken\ ;
+千年期 > sen''nenki\ ;
+半舷砲 > hangenhou\ ;
+権威筋 > ken''isuji\ ;
+変電所 > hendensho\ ;
+電解液 > denkaieki\ ;
+雲上人 > unjoubito\ ;
+一周年 > isshuunen\ ;
+管制塔 > kanseitou\ ;
+華厳経 > kegonkyou\ ;
+対情報 > taijouhou\ ;
+格変化 > kakuhenka\ ;
+教育家 > kyouikuka\ ;
+安息香 > ansokukou\ ;
+石鹸水 > sekkensui\ ;
+不勉強 > fubenkyou\ ;
+塩化物 > enkabutsu\ ;
+両用機 > ryouyouki\ ;
+当世風 > touseifuu\ ;
+格天井 > goutenjou\ ;
+中耕機 > chuukouki\ ;
+不適格 > futekkaku\ ;
+遠心分 > enshinbun\ ;
+普通法 > futsuuhou\ ;
+媒染剤 > baisenzai\ ;
+破裂音 > haretsuon\ ;
+主観論 > shukanron\ ;
+二番作 > nibansaku\ ;
+生命線 > seimeisen\ ;
+空対空 > kuutaikuu\ ;
+猛吹雪 > moufubuki\ ;
+高射砲 > koushahou\ ;
+一歩銀 > ichibugin\ ;
+禁漁区 > kinryouku\ ;
+奈良漬 > naradzuke\ ;
+形象化 > keishouka\ ;
+内地人 > naichijin\ ;
+石南花 > shakunage\ ;
+傀儡師 > kairaishi\ ;
+一歩金 > ichibukin\ ;
+痩我慢 > yasegaman\ ;
+悪因縁 > akuin''nen\ ;
+不眠症 > fuminshou\ ;
+電解槽 > denkaisou\ ;
+法華宗 > hokkeshuu\ ;
+一瞬間 > isshunkan\ ;
+正三位 > shousanmi\ ;
+弾道弾 > dandoudan\ ;
+混合林 > kongourin\ ;
+水墨画 > suibokuga\ ;
+交易会 > kouekikai\ ;
+高楊子 > takayouji\ ;
+権威的 > ken''iteki\ ;
+社用車 > shayousha\ ;
+分水嶺 > bunsuirei\ ;
+子供用 > kodomoyou\ ;
+親孝行 > oyakoukou\ ;
+発射筒 > hasshatou\ ;
+拾万円 > juuman''en\ ;
+勤皇家 > kin''nouka\ ;
+乳化剤 > nyuukazai\ ;
+近地点 > kinchiten\ ;
+無競争 > mukyousou\ ;
+交際法 > kousaihou\ ;
+私有地 > shiyuuchi\ ;
+参与者 > san''yosha\ ;
+飲料水 > inryousui\ ;
+秋日和 > akibiyori\ ;
+区役所 > kuyakusho\ ;
+立志伝 > risshiden\ ;
+天秤棒 > tenbinbou\ ;
+変調器 > henchouki\ ;
+小判型 > kobangata\ ;
+関係者 > kankeisha\ ;
+大成功 > daiseikou\ ;
+二人称 > nininshou\ ;
+偶像視 > guuzoushi\ ;
+偶蹄類 > guuteirui\ ;
+来訪者 > raihousha\ ;
+騒乱罪 > souranzai\ ;
+完成品 > kanseihin\ ;
+創造性 > souzousei\ ;
+排水管 > haisuikan\ ;
+又請負 > mataukeoi\ ;
+金閣寺 > kinkakuji\ ;
+誘電体 > yuudentai\ ;
+南京米 > nankinmai\ ;
+無神経 > mushinkei\ ;
+銀交換 > ginkoukan\ ;
+不干渉 > fukanshou\ ;
+製塩業 > seiengyou\ ;
+教会員 > kyoukaiin\ ;
+搭乗券 > toujouken\ ;
+過硫酸 > karyuusan\ ;
+運命的 > unmeiteki\ ;
+観桜会 > kan''oukai\ ;
+無礼者 > bureimono\ ;
+構文法 > koubunpou\ ;
+接近戦 > sekkinsen\ ;
+無法者 > muhoumono\ ;
+不適当 > futekitou\ ;
+無水鍋 > musuinabe\ ;
+月給日 > gekkyuubi\ ;
+斥候隊 > sekkoutai\ ;
+創業費 > sougyouhi\ ;
+重要性 > juuyousei\ ;
+総売上 > souuriage\ ;
+十円玉 > juuendama\ ;
+倫理学 > rinrigaku\ ;
+一週間 > isshuukan\ ;
+社内報 > shanaihou\ ;
+住宅費 > juutakuhi\ ;
+屈地性 > kutchisei\ ;
+国有化 > kokuyuuka\ ;
+通風機 > tsuufuuki\ ;
+家屋敷 > ieyashiki\ ;
+山椒魚 > sanshouuo\ ;
+公文書 > koubunsho\ ;
+決定論 > ketteiron\ ;
+保証人 > hoshounin\ ;
+沿海州 > enkaishuu\ ;
+不道徳 > fudoutoku\ ;
+便乗者 > binjousha\ ;
+一升瓶 > isshoubin\ ;
+空腹時 > kuufukuji\ ;
+前衛戦 > zen''eisen\ ;
+感情論 > kanjouron\ ;
+支配権 > shihaiken\ ;
+団子鼻 > dangobana\ ;
+全論点 > zenronten\ ;
+道化者 > doukemono\ ;
+西洋紙 > seiyoushi\ ;
+書記長 > shokichou\ ;
+忌言葉 > imikotoba\ ;
+難事業 > nanjigyou\ ;
+付帯的 > futaiteki\ ;
+高飛車 > takabisha\ ;
+電話中 > denwachuu\ ;
+黄道帯 > koudoutai\ ;
+高校生 > koukousei\ ;
+肺水腫 > haisuishu\ ;
+商用語 > shouyougo\ ;
+略記法 > ryakkihou\ ;
+葡萄棚 > budoudana\ ;
+奉公人 > houkounin\ ;
+仏法僧 > buppousou\ ;
+体育祭 > taiikusai\ ;
+普通弾 > futsuudan\ ;
+戦中派 > senchuuha\ ;
+高山帯 > kouzantai\ ;
+性犯罪 > seihanzai\ ;
+民芸品 > mingeihin\ ;
+親会社 > oyagaisha\ ;
+参賀帳 > sangachou\ ;
+三輪車 > sanrinsha\ ;
+産科学 > sankagaku\ ;
+車内灯 > shanaitou\ ;
+医務室 > imushitsu\ ;
+永続性 > eizokusei\ ;
+探検隊 > tankentai\ ;
+実務家 > jitsumuka\ ;
+必須格 > hissukaku\ ;
+大和歌 > yamatouta\ ;
+丸太材 > marutazai\ ;
+研修所 > kenshuujo\ ;
+一刹那 > issetsuna\ ;
+公明党 > koumeitou\ ;
+絵空言 > esoragoto\ ;
+羅針盤 > rashinban\ ;
+器量人 > kiryoujin\ ;
+国際語 > kokusaigo\ ;
+四辺形 > shihenkei\ ;
+発作的 > hossateki\ ;
+聾学校 > rougakkou\ ;
+掃海艇 > soukaitei\ ;
+参考書 > sankousho\ ;
+化粧品 > keshouhin\ ;
+地平面 > chiheimen\ ;
+低能者 > teinousha\ ;
+先験論 > senkenron\ ;
+集英社 > shuueisha\ ;
+用水池 > yousuichi\ ;
+受難劇 > junangeki\ ;
+倉庫業 > soukogyou\ ;
+千六本 > senroppon\ ;
+輸入品 > yunyuuhin\ ;
+化粧台 > keshoudai\ ;
+塩加減 > shiokagen\ ;
+蛍光燈 > keikoutou\ ;
+娘子軍 > joushigun\ ;
+自治省 > jichishou\ ;
+尾長猿 > onagazaru\ ;
+警防団 > keiboudan\ ;
+正解者 > seikaisha\ ;
+限度額 > gendogaku\ ;
+再洗礼 > saisenrei\ ;
+姉妹校 > shimaikou\ ;
+格闘技 > kakutougi\ ;
+青春期 > seishunki\ ;
+速記録 > sokkiroku\ ;
+優勝馬 > yuushouba\ ;
+気候学 > kikougaku\ ;
+病院船 > byouinsen\ ;
+国文科 > kokubunka\ ;
+担当者 > tantousha\ ;
+来場者 > raijousha\ ;
+蛍光灯 > keikoutou\ ;
+排水溝 > haisuikou\ ;
+峻下剤 > shungezai\ ;
+外商部 > gaishoubu\ ;
+正方形 > seihoukei\ ;
+月経帯 > gekkeitai\ ;
+角行灯 > kakuandon\ ;
+課徴金 > kachoukin\ ;
+交換船 > koukansen\ ;
+保管証 > hokanshou\ ;
+添加物 > tenkamono\ ;
+一分銀 > ichibugin\ ;
+来観者 > raikansha\ ;
+綺羅星 > kiraboshi\ ;
+山岳部 > sangakubu\ ;
+発展性 > hattensei\ ;
+一分金 > ichibukin\ ;
+協定案 > kyouteian\ ;
+注射器 > chuushaki\ ;
+司法権 > shihouken\ ;
+正攻法 > seikouhou\ ;
+手拍子 > tebyoushi\ ;
+社会面 > shakaimen\ ;
+象皮病 > zouhibyou\ ;
+禁反言 > kinhangen\ ;
+無双窓 > musoumado\ ;
+時間割 > jikanwari\ ;
+用心棒 > youjinbou\ ;
+再感染 > saikansen\ ;
+毛製品 > mouseihin\ ;
+化粧代 > keshoudai\ ;
+格納庫 > kakunouko\ ;
+総索引 > sousakuin\ ;
+予審廷 > yoshintei\ ;
+茶屋酒 > chayazake\ ;
+四分円 > shibun''en\ ;
+佗住居 > wabizumai\ ;
+片手桶 > katateoke\ ;
+創刊号 > soukangou\ ;
+四分六 > shiburoku\ ;
+防潜網 > bousenmou\ ;
+名刺判 > meishiban\ ;
+河童巻 > kappamaki\ ;
+向光性 > koukousei\ ;
+勲一等 > kun''ittou\ ;
+反物屋 > tanmonoya\ ;
+互譲的 > gojouteki\ ;
+世界的 > sekaiteki\ ;
+御迷惑 > gomeiwaku\ ;
+三部作 > sanbusaku\ ;
+正面図 > shoumenzu\ ;
+表具師 > hyougushi\ ;
+不適任 > futekinin\ ;
+経企庁 > keikichou\ ;
+運動領 > undouryou\ ;
+先般来 > senpanrai\ ;
+定冠詞 > teikanshi\ ;
+黄道光 > koudoukou\ ;
+接尾辞 > setsubiji\ ;
+水無月 > minadzuki\ ;
+駐在員 > chuuzaiin\ ;
+輸尿管 > yunyoukan\ ;
+国防費 > kokubouhi\ ;
+侍従長 > jijuuchou\ ;
+殺風景 > sappuukei\ ;
+中支那 > nakashina\ ;
+誤挿入 > gosounyuu\ ;
+正教授 > seikyouju\ ;
+休火山 > kyuukazan\ ;
+子守歌 > komoriuta\ ;
+決定稿 > ketteikou\ ;
+防火壁 > boukaheki\ ;
+台湾人 > taiwanjin\ ;
+日章旗 > nisshouki\ ;
+部隊長 > butaichou\ ;
+御真影 > goshin''ei\ ;
+凝固点 > gyoukoten\ ;
+支店網 > shitenmou\ ;
+数表示 > suuhyouji\ ;
+風向計 > fuukoukei\ ;
+蛍光板 > keikouban\ ;
+新聞舗 > shinbunho\ ;
+西南西 > seinansei\ ;
+避雷針 > hiraishin\ ;
+獅子舞 > shishimai\ ;
+任期中 > ninkichuu\ ;
+方面隊 > houmentai\ ;
+風鈴草 > fuurinsou\ ;
+花野菜 > hanayasai\ ;
+曲独楽 > kyokugoma\ ;
+真向法 > makkouhou\ ;
+商船旗 > shousenki\ ;
+研修員 > kenshuuin\ ;
+評判記 > hyoubanki\ ;
+普通便 > futsuubin\ ;
+副知事 > fukuchiji\ ;
+母集団 > boshuudan\ ;
+三冠王 > sankan''ou\ ;
+恋愛観 > ren''aikan\ ;
+併行線 > heikousen\ ;
+地役権 > chiekiken\ ;
+普通人 > futsuujin\ ;
+先導者 > sendousha\ ;
+再協議 > saikyouki\ ;
+投降者 > toukousha\ ;
+代赭色 > taishairo\ ;
+接尾語 > setsubigo\ ;
+劇作家 > gekisakka\ ;
+重戦車 > juusensha\ ;
+音楽隊 > ongakutai\ ;
+再禁止 > saikinshi\ ;
+燻蒸剤 > kunjouzai\ ;
+洋裁師 > yousaishi\ ;
+真正面 > mashoumen\ ;
+月経前 > gekkeimae\ ;
+運動量 > undouryou\ ;
+低山帯 > teizantai\ ;
+励振器 > reishinki\ ;
+英雄的 > eiyuuteki\ ;
+記者席 > kishaseki\ ;
+健康者 > kenkousha\ ;
+肥満症 > himanshou\ ;
+最大値 > saidaichi\ ;
+計画案 > keikakuan\ ;
+華厳宗 > kegonshuu\ ;
+主要点 > shuyouten\ ;
+仮住居 > karizumai\ ;
+会員証 > kaiinshou\ ;
+精薄児 > seihakuji\ ;
+挿入図 > sounyuuzu\ ;
+丁年者 > teinensha\ ;
+監査役 > kansayaku\ ;
+薄化粧 > usugeshou\ ;
+出勤簿 > shukkinbo\ ;
+中央線 > chuuousen\ ;
+履歴書 > rirekisho\ ;
+養嗣子 > youshishi\ ;
+大海原 > oounabara\ ;
+低価格 > teikakaku\ ;
+交際上 > kousaijou\ ;
+参考品 > sankouhin\ ;
+神経科 > shinkeika\ ;
+小作農 > kosakunou\ ;
+私文書 > shibunsho\ ;
+決定版 > ketteiban\ ;
+心不全 > shinfuzen\ ;
+乳幼児 > nyuuyouji\ ;
+規則書 > kisokusho\ ;
+加除式 > kajoshiki\ ;
+司法官 > shihoukan\ ;
+空対地 > kuutaichi\ ;
+正視眼 > seishigan\ ;
+早慶戦 > soukeisen\ ;
+掘削機 > kussakuki\ ;
+未確定 > mikakutei\ ;
+高架橋 > koukakyou\ ;
+個別化 > kobetsuka\ ;
+挿入句 > sounyuuku\ ;
+政権党 > seikentou\ ;
+射利心 > sharishin\ ;
+監察医 > kansatsui\ ;
+道化方 > doukegata\ ;
+半二重 > han''nijuu\ ;
+禁治産 > kinchisan\ ;
+単語集 > tangoshuu\ ;
+用水地 > yousuiike\ ;
+車高短 > shakoutan\ ;
+消化腺 > shoukasen\ ;
+近海魚 > kinkaigyo\ ;
+排水孔 > haisuikou\ ;
+木金土 > mokukindo\ ;
+持続性 > jizokusei\ ;
+名工大 > meikoudai\ ;
+支配人 > shihainin\ ;
+幹事長 > kanjichou\ ;
+長水路 > chousuiro\ ;
+平党員 > hiratouin\ ;
+循環線 > junkansen\ ;
+下剋上 > gekokujou\ ;
+上層風 > jousoufuu\ ;
+圧延鋼 > atsuenkou\ ;
+菠薐草 > hourensou\ ;
+準教員 > junkyouin\ ;
+凹眼鏡 > ougankyou\ ;
+物価高 > bukkadaka\ ;
+誘拐罪 > yuukaizai\ ;
+循環系 > junkankei\ ;
+派生的 > haseiteki\ ;
+素反応 > sohan''nou\ ;
+在郷者 > zaigousha\ ;
+北海道 > hokkaidou\ ;
+林檎病 > ringobyou\ ;
+薬事法 > yakujihou\ ;
+短毛種 > tanmoushu\ ;
+概念論 > gainenron\ ;
+道徳家 > doutokuka\ ;
+参与官 > san''yokan\ ;
+最終案 > saishuuan\ ;
+世界新 > sekaishin\ ;
+参考人 > sankounin\ ;
+屋台骨 > yataibone\ ;
+大歓迎 > daikangei\ ;
+上層階 > jousoukai\ ;
+一切経 > issaikyou\ ;
+再配置 > saihaichi\ ;
+肌襦袢 > hadajuban\ ;
+六角形 > rokkakkei\ ;
+新生児 > shinseiji\ ;
+先住者 > senjuusha\ ;
+醜業婦 > shugyoufu\ ;
+裁判権 > saibanken\ ;
+大神宮 > daijinguu\ ;
+正教員 > seikyouin\ ;
+悪戯着 > itazuragi\ ;
+昼行灯 > hiruandon\ ;
+地平線 > chiheisen\ ;
+配電線 > haidensen\ ;
+白頭翁 > hakutouou\ ;
+発射台 > hasshadai\ ;
+主陣地 > shujinchi\ ;
+感想文 > kansoubun\ ;
+消化系 > shoukakei\ ;
+主観性 > shukansei\ ;
+大法廷 > daihoutei\ ;
+最終日 > saishuubi\ ;
+決定権 > ketteiken\ ;
+兎小屋 > usagigoya\ ;
+多神論 > tashinron\ ;
+後半生 > kouhansei\ ;
+増訂版 > zouteiban\ ;
+所在地 > shozaichi\ ;
+災害地 > saigaichi\ ;
+消化管 > shoukakan\ ;
+年代順 > nendaijun\ ;
+神経炎 > shinkeien\ ;
+奉仕者 > houshisha\ ;
+再受浸 > saijushin\ ;
+操業費 > sougyouhi\ ;
+二人前 > futarimae\ ;
+富士壺 > fujitsubo\ ;
+百貨店 > hyakkaten\ ;
+横断幕 > oudanmaku\ ;
+二人分 > futaribun\ ;
+納税者 > nouzeisha\ ;
+酸性紙 > sanseishi\ ;
+左右軸 > sayuujiku\ ;
+天水桶 > tensuioke\ ;
+公開状 > koukaijou\ ;
+貴金属 > kikinzoku\ ;
+波羅蜜 > haramitsu\ ;
+狩猟期 > shuryouki\ ;
+文法書 > bunpousho\ ;
+占領下 > senryouka\ ;
+燃焼炉 > nenshouro\ ;
+古筆家 > kohitsuka\ ;
+防衛庁 > boueichou\ ;
+大祭司 > daisaishi\ ;
+雛罌粟 > hinageshi\ ;
+全天候 > zentenkou\ ;
+超短波 > choutanpa\ ;
+放射能 > houshanou\ ;
+前科者 > zenkamono\ ;
+長野県 > naganoken\ ;
+青大将 > aodaishou\ ;
+知恵熱 > chienetsu\ ;
+包装紙 > housoushi\ ;
+会員章 > kaiinshou\ ;
+米産地 > beisanchi\ ;
+八角形 > hakkakkei\ ;
+五大洲 > godaishuu\ ;
+新学期 > shingakki\ ;
+配電盤 > haidenban\ ;
+英文学 > eibungaku\ ;
+子守唄 > komoriuta\ ;
+御兄弟 > gokyoudai\ ;
+裁判所 > saibansho\ ;
+参院選 > san''insen\ ;
+軍人風 > gunjinfuu\ ;
+無得点 > mutokuten\ ;
+論理的 > ronriteki\ ;
+劃期的 > kakkiteki\ ;
+三省堂 > sanseidou\ ;
+虚弱児 > kyojakuji\ ;
+当事国 > toujikoku\ ;
+論争者 > ronsousha\ ;
+放射線 > houshasen\ ;
+崇拝者 > suuhaisha\ ;
+健康法 > kenkouhou\ ;
+怪文書 > kaibunsho\ ;
+逮捕歴 > taihoreki\ ;
+筆頭者 > hittousha\ ;
+乾生姜 > kanshouga\ ;
+生残者 > seizansha\ ;
+淡水魚 > tansuigyo\ ;
+贈答品 > zoutouhin\ ;
+交換手 > koukanshu\ ;
+蛍光体 > keikoutai\ ;
+氷点下 > hyoutenka\ ;
+誘拐犯 > yuukaihan\ ;
+煎玉子 > iritamago\ ;
+興信所 > koushinjo\ ;
+甘味料 > kanmiryou\ ;
+試験紙 > shikenshi\ ;
+熏蒸剤 > kunjouzai\ ;
+肉襦袢 > nikujuban\ ;
+監守人 > kanshunin\ ;
+増大号 > zoudaigou\ ;
+滑走輪 > kassourin\ ;
+再創造 > saisouzou\ ;
+西洋史 > seiyoushi\ ;
+戸籍法 > kosekihou\ ;
+荒物屋 > aramonoya\ ;
+中西部 > chuuseibu\ ;
+自動的 > jidouteki\ ;
+借家人 > shakkanin\ ;
+法学部 > hougakubu\ ;
+軍資金 > gunshikin\ ;
+文法性 > bunpousei\ ;
+農夫症 > noufushou\ ;
+材料費 > zairyouhi\ ;
+催涙銃 > sairuijuu\ ;
+変換子 > henkanshi\ ;
+材木屋 > zaimokuya\ ;
+貧窮化 > hinkyuuka\ ;
+早合点 > hayagaten\ ;
+肥満性 > himanshou\ ;
+車馬賃 > shabachin\ ;
+竜騎兵 > ryuukihei\ ;
+土台石 > dodaiishi\ ;
+帰納的 > kinouteki\ ;
+試験管 > shikenkan\ ;
+男子高 > danshikou\ ;
+大反対 > daihantai\ ;
+非国民 > hikokumin\ ;
+小豆鱒 > azukimasu\ ;
+莢豌豆 > sayaendou\ ;
+両替機 > ryougaeki\ ;
+綿火薬 > menkayaku\ ;
+人民軍 > jinmingun\ ;
+欠勤者 > kekkinsha\ ;
+小作米 > kosakumai\ ;
+泥板岩 > deibangan\ ;
+擬革紙 > gikakushi\ ;
+貴重品 > kichouhin\ ;
+火山礫 > kazanreki\ ;
+顔写真 > kaojashin\ ;
+共演者 > kyouensha\ ;
+救護班 > kyuugohan\ ;
+再循環 > saijunkan\ ;
+荻江節 > ogiebushi\ ;
+集光器 > shuukouki\ ;
+一部分 > ichibubun\ ;
+装甲車 > soukousha\ ;
+新世紀 > shinseiki\ ;
+裁判官 > saibankan\ ;
+出勤日 > shukkinbi\ ;
+送信機 > soushinki\ ;
+雑居地 > zakkyochi\ ;
+英数国 > eisuukoku\ ;
+保管料 > hokanryou\ ;
+半貴石 > hankiseki\ ;
+軍用機 > gun''youki\ ;
+虎落笛 > mogaribue\ ;
+生還者 > seikansha\ ;
+懇談会 > kondankai\ ;
+未公表 > mikouhyou\ ;
+西洋人 > seiyoujin\ ;
+田舎者 > inakamono\ ;
+消化液 > shoukaeki\ ;
+健康方 > kenkouhou\ ;
+穴居人 > kekkyojin\ ;
+妨業員 > bougyouin\ ;
+風呂敷 > furoshiki\ ;
+何曜日 > nan''youbi\ ;
+警戒線 > keikaisen\ ;
+交換嬢 > koukanjou\ ;
+大道芸 > daidougei\ ;
+停止線 > teishisen\ ;
+勉強家 > benkyouka\ ;
+浪漫的 > romanteki\ ;
+勧世縒 > kanzeyori\ ;
+竹細工 > takezaiku\ ;
+産卵口 > sanrankou\ ;
+感動詞 > kandoushi\ ;
+水圧機 > suiatsuki\ ;
+音楽祭 > ongakusai\ ;
+人情本 > ninjoubon\ ;
+皇霊殿 > koureiden\ ;
+使命者 > shimeisha\ ;
+代用品 > daiyouhin\ ;
+葉菜類 > yousairui\ ;
+写真機 > shashinki\ ;
+男伊達 > otokodate\ ;
+兵站線 > heitansen\ ;
+帯電体 > taidentai\ ;
+文化的 > bunkateki\ ;
+未発表 > mihappyou\ ;
+先住民 > senjuumin\ ;
+途上国 > tojoukoku\ ;
+半音階 > han''onkai\ ;
+白木屋 > shirokiya\ ;
+仕様書 > shiyousho\ ;
+民事的 > minjiteki\ ;
+成層圏 > seisouken\ ;
+蒸気圧 > joukiatsu\ ;
+両替所 > ryougaejo\ ;
+後半戦 > kouhansen\ ;
+幽寂味 > yuujakumi\ ;
+帝王学 > teiougaku\ ;
+貯水池 > chosuichi\ ;
+新世界 > shinsekai\ ;
+命令法 > meireihou\ ;
+現像液 > genzoueki\ ;
+観覧車 > kanransha\ ;
+会社葬 > kaishasou\ ;
+禁酒法 > kinshuhou\ ;
+脳膜炎 > noumakuen\ ;
+五大州 > godaishuu\ ;
+文部省 > monbushou\ ;
+軍事通 > gunjitsuu\ ;
+脳腫瘍 > noushuyou\ ;
+世界一 > sekaiichi\ ;
+再分配 > saibunpai\ ;
+掛布団 > kakebuton\ ;
+外洋船 > gaiyousen\ ;
+組職図 > soshokuzu\ ;
+交換品 > koukanhin\ ;
+火食鳥 > hikuidori\ ;
+貯水槽 > chosuisou\ ;
+海水魚 > kaisuigyo\ ;
+精進日 > shoujinbi\ ;
+三色旗 > sanshokki\ ;
+逃亡者 > toubousha\ ;
+道具箱 > dougubako\ ;
+出廷日 > shutteibi\ ;
+画学紙 > gagakushi\ ;
+貯蔵所 > chozousho\ ;
+東海道 > toukaidou\ ;
+交換台 > koukandai\ ;
+戦時中 > senjichuu\ ;
+混分数 > konbunsuu\ ;
+生石灰 > seisekkai\ ;
+不検束 > fukensoku\ ;
+小松菜 > komatsuna\ ;
+舟大工 > funadaiku\ ;
+贈呈者 > zouteisha\ ;
+類概念 > ruigainen\ ;
+任天堂 > nintendou\ ;
+南方産 > nanpousan\ ;
+結納金 > yuinoukin\ ;
+太刀筋 > tachisuji\ ;
+熟字訓 > jukujikun\ ;
+声明書 > seimeisho\ ;
+問題点 > mondaiten\ ;
+分工場 > bunkoujou\ ;
+定年制 > teinensei\ ;
+地元紙 > jimotoshi\ ;
+預託金 > yotakukin\ ;
+防空砲 > boukuuhou\ ;
+静圧比 > seiatsuhi\ ;
+回顧録 > kaikoroku\ ;
+両替屋 > ryougaeya\ ;
+人気者 > ninkimono\ ;
+不良品 > furyouhin\ ;
+小便所 > shoubenjo\ ;
+循環性 > junkansei\ ;
+商用化 > shouyouka\ ;
+交換円 > koukan''en\ ;
+試験法 > shikenhou\ ;
+学園祭 > gakuensai\ ;
+感歎詞 > kantanshi\ ;
+第六感 > dairokkan\ ;
+貧民街 > hinmingai\ ;
+命令書 > meireisho\ ;
+半導体 > handoutai\ ;
+兵器廠 > heikishou\ ;
+裁判上 > saibanjou\ ;
+売春婦 > baishunpu\ ;
+下克上 > gekokujou\ ;
+配電所 > haidensho\ ;
+社交界 > shakoukai\ ;
+優勝旗 > yuushouki\ ;
+手品師 > tejinashi\ ;
+髄膜炎 > zuimakuen\ ;
+雨支度 > amajitaku\ ;
+修道院 > shuudouin\ ;
+海蛇座 > umihebiza\ ;
+命令文 > meireibun\ ;
+東洋風 > touyoufuu\ ;
+弟息子 > otomusuko\ ;
+五大国 > godaikoku\ ;
+接骨医 > sekkotsui\ ;
+望遠鏡 > bouenkyou\ ;
+梅雨空 > tsuyuzora\ ;
+工員寮 > kouinryou\ ;
+無遊病 > muyuubyou\ ;
+国際化 > kokusaika\ ;
+驚異的 > kyouiteki\ ;
+関東弁 > kantouben\ ;
+複合語 > fukugougo\ ;
+弘済会 > kousaikai\ ;
+至近弾 > shikindan\ ;
+本年度 > hon''nendo\ ;
+救護所 > kyuugosho\ ;
+呑気者 > nonkimono\ ;
+小作権 > kosakuken\ ;
+代理母 > dairihaha\ ;
+分界線 > bunkaisen\ ;
+端境期 > hazakaiki\ ;
+前々回 > zenzenkai\ ;
+語源学 > gogengaku\ ;
+心電図 > shindenzu\ ;
+健康地 > kenkouchi\ ;
+氏子札 > ujikofuda\ ;
+諸問題 > shomondai\ ;
+口唇期 > koushinki\ ;
+将棋盤 > shougiban\ ;
+獅子唐 > shishitou\ ;
+平信徒 > heishinto\ ;
+大気圧 > taikiatsu\ ;
+将軍家 > shougunke\ ;
+千代紙 > chiyogami\ ;
+主戦論 > shusenron\ ;
+劣等生 > rettousei\ ;
+新字体 > shinjitai\ ;
+納品書 > nouhinsho\ ;
+皇太子 > koutaishi\ ;
+騒擾罪 > soujouzai\ ;
+半官報 > hankanpou\ ;
+同伴者 > douhansha\ ;
+海鼠板 > namakoban\ ;
+准士官 > junshikan\ ;
+実験者 > jikkensha\ ;
+代理業 > dairigyou\ ;
+一次元 > ichijigen\ ;
+用益権 > youekiken\ ;
+上腕筋 > jouwankin\ ;
+参政権 > sanseiken\ ;
+巡礼者 > junreisha\ ;
+実験群 > jikkengun\ ;
+空景気 > karageiki\ ;
+写真家 > shashinka\ ;
+車椅子 > kurumaisu\ ;
+揮毫料 > kigouryou\ ;
+警告音 > keikokuon\ ;
+教授陣 > kyoujujin\ ;
+初七日 > shonanoka\ ;
+安心感 > anshinkan\ ;
+大入道 > oonyuudou\ ;
+社会悪 > shakaiaku\ ;
+主製品 > shuseihin\ ;
+無気力 > mukiryoku\ ;
+社会性 > shakaisei\ ;
+脱脂綿 > dasshimen\ ;
+気象台 > kishoudai\ ;
+命令形 > meireikei\ ;
+論理学 > ronrigaku\ ;
+実体論 > jittairon\ ;
+小会派 > shoukaiha\ ;
+同値性 > douchisei\ ;
+酸性岩 > sanseigan\ ;
+下足番 > gesokuban\ ;
+斥候兵 > sekkouhei\ ;
+好影響 > koueikyou\ ;
+邯鄲師 > kantanshi\ ;
+生化学 > seikagaku\ ;
+試乗車 > shijousha\ ;
+観覧者 > kanransha\ ;
+奉賀帳 > hougachou\ ;
+圧制的 > asseiteki\ ;
+炭酸紙 > tansanshi\ ;
+再従弟 > saijuutei\ ;
+余計者 > yokeimono\ ;
+不寝番 > fushinban\ ;
+理屈屋 > rikutsuya\ ;
+保管人 > hokan''nin\ ;
+優良馬 > yuuryouba\ ;
+運輸量 > un''yuryou\ ;
+太平洋 > taiheiyou\ ;
+貯蔵品 > chozouhin\ ;
+単糖類 > tantourui\ ;
+聚楽第 > jurakudai\ ;
+生半可 > namahanka\ ;
+協議所 > kyougisho\ ;
+今年度 > kon''nendo\ ;
+准教員 > junkyouin\ ;
+社会層 > shakaisou\ ;
+健康体 > kenkoutai\ ;
+思春期 > shishunki\ ;
+放射性 > houshasei\ ;
+虫媒花 > chuubaika\ ;
+写真器 > shashinki\ ;
+内向性 > naikousei\ ;
+改宗者 > kaisousha\ ;
+優待券 > yuutaiken\ ;
+四人組 > yoningumi\ ;
+退嬰的 > taieiteki\ ;
+善後策 > zengosaku\ ;
+助手席 > joshuseki\ ;
+火木金 > kamokukin\ ;
+氏子帳 > ujikochou\ ;
+皇太后 > koutaigou\ ;
+特攻隊 > tokkoutai\ ;
+遺言者 > yuigonsha\ ;
+郷土史 > kyoudoshi\ ;
+付属校 > fuzokukou\ ;
+統治者 > touchisha\ ;
+名人芸 > meijingei\ ;
+凄文句 > sugomonku\ ;
+戦災者 > sensaisha\ ;
+試作機 > shisakuki\ ;
+黄枯茶 > kigaracha\ ;
+胃腸薬 > ichouyaku\ ;
+陽電子 > youdenshi\ ;
+文殊様 > monjusama\ ;
+付属書 > fuzokusho\ ;
+討論者 > touronsha\ ;
+多汗症 > takanshou\ ;
+投手陣 > toushujin\ ;
+中継所 > chuukeijo\ ;
+根拠地 > konkyochi\ ;
+法人税 > houjinzei\ ;
+地元民 > jimotomin\ ;
+年期者 > nenkimono\ ;
+音楽性 > ongakusei\ ;
+被告人 > hikokunin\ ;
+文化庁 > bunkachou\ ;
+偏向板 > henkouban\ ;
+背任罪 > haininzai\ ;
+傍観者 > boukansha\ ;
+星状体 > seijoutai\ ;
+消化剤 > shoukazai\ ;
+欧州版 > oushuuban\ ;
+小豆粥 > azukigayu\ ;
+系図学 > keizugaku\ ;
+試験官 > shikenkan\ ;
+石楠花 > shakunage\ ;
+書簡箋 > shokansen\ ;
+再配分 > saihaibun\ ;
+協議官 > kyougikan\ ;
+同類項 > douruikou\ ;
+自転軸 > jitenjiku\ ;
+上甲板 > joukanpan\ ;
+全地方 > zenchihou\ ;
+会社法 > kaishahou\ ;
+奉仕品 > houshihin\ ;
+截拳道 > sekkendou\ ;
+仕舞屋 > shimotaya\ ;
+折衷案 > setchuuan\ ;
+航空隊 > koukuutai\ ;
+蝦蟇口 > gamaguchi\ ;
+禁止法 > kinshihou\ ;
+道具方 > dougukata\ ;
+旦那芸 > dan''nagei\ ;
+扶養料 > fuyouryou\ ;
+不信心 > fushinjin\ ;
+平安朝 > heianchou\ ;
+内野席 > naiyaseki\ ;
+因果律 > ingaritsu\ ;
+軽演劇 > keiengeki\ ;
+板金工 > bankinkou\ ;
+定価表 > teikahyou\ ;
+篤志家 > tokushika\ ;
+試験場 > shikenjou\ ;
+旅行者 > ryokousha\ ;
+歯齦炎 > shigin''en\ ;
+蛸坊主 > takobouzu\ ;
+参政官 > sanseikan\ ;
+軍事的 > gunjiteki\ ;
+古銭学 > kosengaku\ ;
+軍官憲 > gunkanken\ ;
+関数論 > kansuuron\ ;
+治療費 > chiryouhi\ ;
+板金屋 > bankin''ya\ ;
+操車場 > soushajou\ ;
+投融資 > touyuushi\ ;
+革命歌 > kakumeika\ ;
+社交性 > shakousei\ ;
+擬爆弾 > gibakudan\ ;
+竹蜻蛉 > taketonbo\ ;
+超党派 > choutouha\ ;
+問題外 > mondaigai\ ;
+一般的 > ippanteki\ ;
+資本金 > shihonkin\ ;
+男子用 > danshiyou\ ;
+対生葉 > taiseiyou\ ;
+社会党 > shakaitou\ ;
+厭世的 > enseiteki\ ;
+訓練生 > kunrensei\ ;
+贈呈本 > zouteibon\ ;
+夢遊病 > muyuubyou\ ;
+家族法 > kazokuhou\ ;
+人気株 > ninkikabu\ ;
+読後感 > dokugokan\ ;
+単細胞 > tansaibou\ ;
+鳴禽類 > meikinrui\ ;
+内部的 > naibuteki\ ;
+練兵場 > renpeijou\ ;
+大前提 > daizentei\ ;
+再従兄 > saijuukei\ ;
+可動橋 > kadoukyou\ ;
+画期的 > kakkiteki\ ;
+音楽堂 > ongakudou\ ;
+荒隠元 > sayaingen\ ;
+洗礼名 > senreimei\ ;
+現業員 > gengyouin\ ;
+一工夫 > hitokufuu\ ;
+膝小僧 > hizakozou\ ;
+作詞家 > sakushika\ ;
+作為的 > sakuiteki\ ;
+小宇宙 > shouuchuu\ ;
+風水害 > fuusuigai\ ;
+単数形 > tansuukei\ ;
+水溶液 > suiyoueki\ ;
+大車輪 > daisharin\ ;
+改定版 > kaiteihan\ ;
+社会人 > shakaijin\ ;
+悪影響 > akueikyou\ ;
+西部劇 > seibugeki\ ;
+雑貨商 > zakkashou\ ;
+劣等感 > rettoukan\ ;
+透明性 > toumeisei\ ;
+若夫婦 > wakafuufu\ ;
+現代詩 > gendaishi\ ;
+陰陽道 > onmyoudou\ ;
+休憩所 > kyuukeijo\ ;
+配給所 > haikyuujo\ ;
+装身具 > soushingu\ ;
+無欠席 > mukesseki\ ;
+自制心 > jiseishin\ ;
+副作用 > fukusayou\ ;
+再選挙 > saisenkyo\ ;
+隠匿者 > intokusha\ ;
+同人種 > doujinshu\ ;
+運送業 > unsougyou\ ;
+内務省 > naimushou\ ;
+炭酸水 > tansansui\ ;
+勤王家 > kin''nouka\ ;
+衛生的 > eiseiteki\ ;
+競技者 > kyougisha\ ;
+再発行 > saihakkou\ ;
+遺言状 > yuigonjou\ ;
+点眼水 > tengansui\ ;
+軽合金 > keigoukin\ ;
+一発屋 > ippatsuya\ ;
+全製品 > zenseihin\ ;
+応召者 > oushousha\ ;
+古印紙 > furuinshi\ ;
+資本財 > shihonzai\ ;
+回顧的 > kaikoteki\ ;
+二親等 > nishintou\ ;
+交戦権 > kousenken\ ;
+広報誌 > kouhoushi\ ;
+例年祭 > reinensai\ ;
+予防薬 > yobouyaku\ ;
+和声学 > waseigaku\ ;
+音楽史 > ongakushi\ ;
+萎縮腎 > ishukujin\ ;
+盗聴器 > touchouki\ ;
+予約金 > yoyakukin\ ;
+春場所 > harubasho\ ;
+租庸調 > soyouchou\ ;
+原子論 > genshiron\ ;
+無機物 > mukibutsu\ ;
+決議案 > ketsugian\ ;
+創作家 > sousakuka\ ;
+爛熟期 > ranjukuki\ ;
+中間派 > chuukanha\ ;
+里程標 > riteihyou\ ;
+資本論 > shihonron\ ;
+今様歌 > imayouuta\ ;
+会津塗 > aidzunuri\ ;
+丸坊主 > marubouzu\ ;
+移植性 > ishokusei\ ;
+前後策 > zengosaku\ ;
+別天地 > bettenchi\ ;
+協議会 > kyougikai\ ;
+防空壕 > boukuugou\ ;
+運送料 > unsouryou\ ;
+幽霊船 > yuureisen\ ;
+伯備線 > hakubisen\ ;
+胃腸病 > ichoubyou\ ;
+告示板 > kokujiban\ ;
+小作人 > kosakunin\ ;
+離間策 > rikansaku\ ;
+民数記 > minsuuki\ ;
+鉄砲座 > teppouza\ ;
+文化人 > bunkajin\ ;
+木工所 > mokkoujo\ ;
+一般法 > ippanhou\ ;
+労務者 > roumusha\ ;
+文庫本 > bunkobon\ ;
+代理人 > dairinin\ ;
+海水着 > kaisuigi\ ;
+自己流 > jikoryuu\ ;
+丁寧語 > teineigo\ ;
+音楽会 > ongakkai\ ;
+同胞愛 > douhouai\ ;
+毛唐人 > ketoujin\ ;
+民事上 > minjijou\ ;
+淡彩画 > tansaiga\ ;
+期待値 > kitaichi\ ;
+全裸体 > zenratai\ ;
+立体派 > rittaiha\ ;
+護送船 > gosousen\ ;
+野蛮人 > yabanjin\ ;
+女性軍 > joseigun\ ;
+同趣味 > doushumi\ ;
+可動性 > kadousei\ ;
+不養生 > fuyoujou\ ;
+飽和点 > houwaten\ ;
+既往症 > kioushou\ ;
+一致点 > itchiten\ ;
+筆記者 > hikkisha\ ;
+送風機 > soufuuki\ ;
+姫御子 > himemiko\ ;
+手配書 > tehaisho\ ;
+脳珊瑚 > nousango\ ;
+上層土 > jousoudo\ ;
+予約語 > yoyakugo\ ;
+油槽船 > yusousen\ ;
+一寸見 > chottomi\ ;
+予防線 > yobousen\ ;
+勘定日 > kanjoubi\ ;
+内帑金 > naidokin\ ;
+伝送路 > densouro\ ;
+銀細工 > ginzaiku\ ;
+人相見 > ninsoumi\ ;
+風刺画 > fuushiga\ ;
+午餐会 > gosankai\ ;
+無欠勤 > mukekkin\ ;
+比重計 > hijuukei\ ;
+運送店 > unsouten\ ;
+操作盤 > sousaban\ ;
+在庫品 > zaikohin\ ;
+民主化 > minshuka\ ;
+延滞金 > entaikin\ ;
+唐破風 > karahafu\ ;
+自公民 > jikoumin\ ;
+賢夫人 > kenpujin\ ;
+運転者 > untensha\ ;
+不格好 > bukakkou\ ;
+催淫剤 > saiinzai\ ;
+栄養短 > eiyoutan\ ;
+医学界 > igakukai\ ;
+無常感 > mujoukan\ ;
+背格好 > sekakkou\ ;
+山査子 > sanzashi\ ;
+医学生 > igakusei\ ;
+開業医 > kaigyoui\ ;
+便衣隊 > ben''itai\ ;
+幹事会 > kanjikai\ ;
+多原子 > tagenshi\ ;
+十字形 > juujikei\ ;
+外野手 > gaiyashu\ ;
+健胃錠 > ken''ijou\ ;
+関西馬 > kansaiba\ ;
+指示詞 > shijishi\ ;
+明日葉 > ashitaba\ ;
+短距離 > tankyori\ ;
+一軒屋 > ikken''ya\ ;
+芸備線 > geibisen\ ;
+陣太鼓 > jindaiko\ ;
+真冬日 > mafuyubi\ ;
+四季報 > shikihou\ ;
+一軒家 > ikken''ya\ ;
+繁華街 > hankagai\ ;
+訓練所 > kunrenjo\ ;
+海水温 > kaisuion\ ;
+筋電図 > kindenzu\ ;
+泌尿幾 > hinyouki\ ;
+不安心 > fuanshin\ ;
+訪問着 > houmongi\ ;
+会社員 > kaishain\ ;
+法王権 > hououken\ ;
+不導体 > fudoutai\ ;
+単試合 > tanshiai\ ;
+写生画 > shaseiga\ ;
+管理人 > kanrinin\ ;
+一家言 > ikkagoto\ ;
+同期生 > doukisei\ ;
+丁定規 > teijougi\ ;
+守備隊 > shubitai\ ;
+併合罪 > heigozai\ ;
+気無精 > kibushou\ ;
+三枚目 > sanmaime\ ;
+手配師 > tehaishi\ ;
+無自覚 > mujikaku\ ;
+火事泥 > kajidoro\ ;
+人工語 > jinkougo\ ;
+既往歴 > kioureki\ ;
+一般性 > ippansei\ ;
+年月日 > nengappi\ ;
+変成器 > henseiki\ ;
+未信者 > mishinja\ ;
+不案内 > fuan''nai\ ;
+自棄酒 > yakezake\ ;
+塑弾性 > sodansei\ ;
+武器倉 > bukigura\ ;
+聴音器 > chouonki\ ;
+平仮名 > hiragana\ ;
+感知器 > kanchiki\ ;
+前半期 > zenpanki\ ;
+空論家 > kuuronka\ ;
+農閑期 > noukanki\ ;
+不賛成 > fusansei\ ;
+養鶏家 > youkeika\ ;
+十二支 > juunishi\ ;
+構成比 > kouseihi\ ;
+向日葵 > himawari\ ;
+機業家 > kigyouka\ ;
+水滸伝 > suikoden\ ;
+御嬢様 > ojousama\ ;
+臨床医 > rinshoui\ ;
+栄養源 > eiyougen\ ;
+多年草 > tanensou\ ;
+荷厄介 > niyakkai\ ;
+励磁損 > reijison\ ;
+安全瓣 > anzenben\ ;
+重酸素 > juusanso\ ;
+二塁手 > niruishu\ ;
+木工具 > mokkougu\ ;
+点眼器 > tenganki\ ;
+莫大小 > meriyasu\ ;
+製鋼所 > seikoujo\ ;
+隠蔽子 > inpeishi\ ;
+勘定場 > kanjouba\ ;
+羽団扇 > hauchiwa\ ;
+破戒僧 > hakaisou\ ;
+瀬戸物 > setomono\ ;
+大英断 > daieidan\ ;
+泌尿器 > hinyouki\ ;
+先議権 > sengiken\ ;
+反抗期 > hankouki\ ;
+本会議 > honkaigi\ ;
+英米人 > eibeijin\ ;
+低順位 > teijun''i\ ;
+不老泉 > furousen\ ;
+名宛人 > naatenin\ ;
+自由詩 > jiyuushi\ ;
+意志的 > ishiteki\ ;
+戦闘員 > sentouin\ ;
+原画像 > gengazou\ ;
+大腿部 > daitaibu\ ;
+滋賀県 > shigaken\ ;
+重水素 > juusuiso\ ;
+人造湖 > jinzouko\ ;
+請負師 > ukeoishi\ ;
+水準器 > suijunki\ ;
+漫画本 > mangahon\ ;
+互換性 > gokansei\ ;
+種種相 > shujusou\ ;
+予防法 > yobouhou\ ;
+安全灯 > anzentou\ ;
+運送人 > unsounin\ ;
+上首尾 > joushubi\ ;
+仏舎利 > busshari\ ;
+與太者 > yotamono\ ;
+満天下 > mantenka\ ;
+価格差 > kakakusa\ ;
+無花果 > ichijiku\ ;
+不人情 > funinjou\ ;
+土建屋 > doken''ya\ ;
+遮断機 > shadanki\ ;
+乱杭歯 > ranguiba\ ;
+蝋細工 > rouzaiku\ ;
+糜爛性 > biransei\ ;
+貴公子 > kikoushi\ ;
+廉価版 > renkaban\ ;
+原子炉 > genshiro\ ;
+転換炉 > tenkanro\ ;
+黎明期 > reimeiki\ ;
+菖蒲湯 > shoubuyu\ ;
+無駄骨 > mudabone\ ;
+類似品 > ruijihin\ ;
+飛行隊 > hikoutai\ ;
+金鳳花 > kinpouge\ ;
+黒雲母 > kurounmo\ ;
+相手方 > aitegata\ ;
+不完全 > fukanzen\ ;
+祖国愛 > sokokuai\ ;
+募集費 > boshuuhi\ ;
+生産費 > seisanhi\ ;
+統合化 > tougouka\ ;
+旅行家 > ryokouka\ ;
+社外秘 > shagaihi\ ;
+従価税 > juukazei\ ;
+使徒書 > shitosho\ ;
+寝化粧 > negeshou\ ;
+創世期 > souseiki\ ;
+金目鯛 > kinmedai\ ;
+上下線 > jougesen\ ;
+理事国 > rijikoku\ ;
+水準儀 > suijungi\ ;
+再保険 > saihoken\ ;
+下馬先 > gebasaki\ ;
+泉貨紙 > senkashi\ ;
+御令嬢 > goreijou\ ;
+電気街 > denkigai\ ;
+軍政部 > gunseibu\ ;
+御題目 > odaimoku\ ;
+無保証 > muhoshou\ ;
+可分性 > kabunsei\ ;
+亜鉛鉄 > aentetsu\ ;
+動安定 > douantei\ ;
+刑事上 > keijijou\ ;
+女性用 > joseiyou\ ;
+乾燥炉 > kansouro\ ;
+育児法 > ikujihou\ ;
+愛鳥家 > aichouka\ ;
+本舞台 > honbutai\ ;
+個人性 > kojinsei\ ;
+依存症 > izonshou\ ;
+悪性度 > akuseido\ ;
+美男子 > binanshi\ ;
+電波法 > denpahou\ ;
+軍事上 > gunjijou\ ;
+烏犀角 > usaikaku\ ;
+偏微分 > henbibun\ ;
+素寒貧 > sukanpin\ ;
+豚小屋 > butagoya\ ;
+延滞税 > entaizei\ ;
+冥王星 > meiousei\ ;
+円盤状 > enbanjou\ ;
+蔵書家 > zoushoka\ ;
+録音機 > rokuonki\ ;
+過般来 > kahanrai\ ;
+鑚孔機 > sankouki\ ;
+一般人 > ippanjin\ ;
+相手役 > aiteyaku\ ;
+歩合給 > buaikyuu\ ;
+井戸綱 > idodzuna\ ;
+既知数 > kichisuu\ ;
+工務店 > koumuten\ ;
+一朱銀 > isshugin\ ;
+航空機 > koukuuki\ ;
+黒繻子 > kurojusu\ ;
+登記所 > toukisho\ ;
+適時打 > tekijida\ ;
+合理性 > gourisei\ ;
+陰電子 > indenshi\ ;
+助動詞 > jodoushi\ ;
+慰藉料 > isharyou\ ;
+衛生兵 > eiseihei\ ;
+低物価 > teibukka\ ;
+個人展 > kojinten\ ;
+実体化 > jittaika\ ;
+邪魔者 > jamamono\ ;
+米議会 > beigikai\ ;
+無尽蔵 > mujinzou\ ;
+転換期 > tenkanki\ ;
+代議士 > daigishi\ ;
+鼻濁音 > bidakuon\ ;
+高電位 > kouden''i\ ;
+持参金 > jisankin\ ;
+唯理論 > yuiriron\ ;
+名望家 > meibouka\ ;
+多元論 > tagenron\ ;
+自棄糞 > yakekuso\ ;
+正符号 > seifugou\ ;
+無産者 > musansha\ ;
+育児書 > ikujisho\ ;
+定期船 > teikisen\ ;
+手弁当 > tebentou\ ;
+乾燥機 > kansouki\ ;
+三日間 > mikkakan\ ;
+十二分 > juunibun\ ;
+稽古台 > keikodai\ ;
+先頭伍 > sentougo\ ;
+出来高 > dekidaka\ ;
+三世相 > sanzesou\ ;
+運根鈍 > unkondon\ ;
+衛生上 > eiseijou\ ;
+医学士 > igakushi\ ;
+請負人 > ukeoinin\ ;
+断面図 > danmenzu\ ;
+虚仮猿 > kokezaru\ ;
+未使用 > mishiyou\ ;
+電波星 > denpasei\ ;
+音韻論 > on''inron\ ;
+機械工 > kikaikou\ ;
+再封鎖 > saifuusa\ ;
+防波堤 > bouhatei\ ;
+運転手 > untenshu\ ;
+争覇戦 > souhasen\ ;
+黒文字 > kuromoji\ ;
+無駄足 > mudaashi\ ;
+着物地 > kimonoji\ ;
+外気圏 > gaikiken\ ;
+開会日 > kaikaibi\ ;
+由来書 > yuraisho\ ;
+鵝口瘡 > gakousou\ ;
+乾燥果 > kansouka\ ;
+安全性 > anzensei\ ;
+乾燥期 > kansouki\ ;
+栄養士 > eiyoushi\ ;
+台布巾 > daibukin\ ;
+構成員 > kouseiin\ ;
+模範生 > mohansei\ ;
+安全弁 > anzenben\ ;
+駆動輪 > kudourin\ ;
+東洋史 > toyofumi\ ;
+単精度 > tanseido\ ;
+火木土 > kamokudo\ ;
+代議制 > daigisei\ ;
+未定稿 > miteikou\ ;
+世話物 > sewamono\ ;
+観戦記 > kansenki\ ;
+天瓜粉 > tenkafun\ ;
+形成期 > keiseiki\ ;
+放映権 > houeiken\ ;
+監視所 > kanshijo\ ;
+御本尊 > gohonzon\ ;
+単純化 > tanjunka\ ;
+個人名 > kojinmei\ ;
+検眼医 > kengan''i\ ;
+医学史 > igakushi\ ;
+未踏峰 > mitouhou\ ;
+断断固 > dandanko\ ;
+暖房器 > danbouki\ ;
+斡旋者 > assensha\ ;
+仏生会 > busshoue\ ;
+規格化 > kikakuka\ ;
+司令部 > shireibu\ ;
+意匠権 > ishouken\ ;
+尊敬語 > sonkeigo\ ;
+形態素 > keitaiso\ ;
+美少女 > bishoujo\ ;
+円運動 > en''undou\ ;
+象牙色 > zougeiro\ ;
+遮断器 > shadanki\ ;
+許可書 > kyokasho\ ;
+商議員 > shougiin\ ;
+御一新 > goisshin\ ;
+愉快犯 > yukaihan\ ;
+指示板 > shijiban\ ;
+鉄工所 > tekkoujo\ ;
+経営難 > keieinan\ ;
+陰陽師 > on''youji\ ;
+換気扇 > kankisen\ ;
+非合法 > higouhou\ ;
+飛行艇 > hikoutei\ ;
+飛行船 > hikousen\ ;
+経営陣 > keieijin\ ;
+御来光 > goraikou\ ;
+不断草 > fudansou\ ;
+栄養剤 > eiyouzai\ ;
+連鎖店 > rensaten\ ;
+兵法家 > heihouka\ ;
+頻度数 > hindosuu\ ;
+資本家 > shihonka\ ;
+最右翼 > saiuyoku\ ;
+栄養分 > eiyoubun\ ;
+可処分 > kashobun\ ;
+蒙古斑 > moukohan\ ;
+寒稽古 > kangeiko\ ;
+第三紀 > daisanki\ ;
+砂風呂 > sunaburo\ ;
+運転士 > untenshi\ ;
+第一線 > daiissen\ ;
+邪魔物 > jamamono\ ;
+銀行家 > ginkouka\ ;
+三仙叉 > sansensa\ ;
+再工事 > saikouji\ ;
+裏日本 > uranihon\ ;
+被傭者 > hiyousha\ ;
+軽水炉 > keisuiro\ ;
+自由港 > jiyuukou\ ;
+御曹子 > onzoushi\ ;
+防水扉 > bousuihi\ ;
+居心地 > igokochi\ ;
+地下道 > chikadou\ ;
+無駄花 > mudabana\ ;
+与太者 > yotamono\ ;
+無定見 > muteiken\ ;
+美容師 > biyoushi\ ;
+発火点 > hakkaten\ ;
+現代化 > gendaika\ ;
+福井県 > fukuiken\ ;
+不敬虔 > fukeiken\ ;
+丁子油 > choujiyu\ ;
+乾燥季 > kansouki\ ;
+断断乎 > dandanko\ ;
+財務官 > zaimukan\ ;
+料理屋 > ryouriya\ ;
+停車場 > teishaba\ ;
+感光度 > kankoudo\ ;
+無能者 > munousha\ ;
+交叉点 > kousaten\ ;
+氷河期 > hyougaki\ ;
+低電位 > teiden''i\ ;
+出世魚 > shusseuo\ ;
+運転台 > untendai\ ;
+野心家 > yashinka\ ;
+自由権 > jiyuuken\ ;
+防水布 > bousuifu\ ;
+再臨派 > sairinha\ ;
+名場面 > meibamen\ ;
+筆記体 > hikkitai\ ;
+弦楽器 > gengakki\ ;
+滞在費 > taizaihi\ ;
+規定値 > kiteichi\ ;
+一体感 > ittaikan\ ;
+赤砂糖 > akazatou\ ;
+牛小屋 > ushigoya\ ;
+廉価品 > renkahin\ ;
+民需品 > minjuhin\ ;
+真人間 > maningen\ ;
+金盞花 > kinsenka\ ;
+取沙汰 > torizata\ ;
+銀行員 > ginkouin\ ;
+層位学 > souigaku\ ;
+透視図 > toushizu\ ;
+名義人 > meiginin\ ;
+給油所 > kyuuyujo\ ;
+自走砲 > jisouhou\ ;
+寄稿者 > kikousha\ ;
+抒情詩 > jojoushi\ ;
+円刃刀 > enjintou\ ;
+乾燥器 > kansouki\ ;
+三七日 > minanoka\ ;
+寺小屋 > terakoya\ ;
+御曹司 > onzoushi\ ;
+田雲雀 > tahibari\ ;
+温湿布 > onshippu\ ;
+御面相 > gomensou\ ;
+上景気 > joukeiki\ ;
+育英会 > ikueikai\ ;
+乗馬隊 > joubatai\ ;
+地下街 > chikagai\ ;
+青懸巣 > aokakesu\ ;
+不敬罪 > fukeizai\ ;
+原子価 > genshika\ ;
+総武線 > soubusen\ ;
+不縹緻 > bukiryou\ ;
+解像度 > kaizoudo\ ;
+控訴状 > kousojou\ ;
+再検査 > saikensa\ ;
+複座機 > fukuzaki\ ;
+批評家 > hihyouka\ ;
+御中元 > ochuugen\ ;
+人真似 > hitomane\ ;
+的地位 > tekichii\ ;
+換気口 > kankikou\ ;
+調査員 > chousain\ ;
+世話役 > sewayaku\ ;
+悪知恵 > warudjie\ ;
+短期間 > tankikan\ ;
+御主人 > goshujin\ ;
+同時性 > doujisei\ ;
+黄変米 > ouhenmai\ ;
+余所者 > yosomono\ ;
+滋養分 > jiyoubun\ ;
+棚牡丹 > tanabota\ ;
+銘酒屋 > meishuya\ ;
+塩類泉 > enruisen\ ;
+保菌者 > hokinsha\ ;
+防砂林 > bousarin\ ;
+閉世界 > heisekai\ ;
+地下茎 > chikakei\ ;
+多辺形 > tahenkei\ ;
+不明朗 > fumeirou\ ;
+泥火山 > deikazan\ ;
+京都府 > kyoutofu\ ;
+令夫人 > reifujin\ ;
+罷免権 > himenken\ ;
+丁字形 > teijikei\ ;
+候補者 > kouhosha\ ;
+絵画館 > kaigakan\ ;
+国営化 > kokueika\ ;
+物故者 > bukkosha\ ;
+前相撲 > maezumou\ ;
+研米機 > kenmaiki\ ;
+暗黒期 > ankokuki\ ;
+現時点 > genjiten\ ;
+隣保館 > rinpokan\ ;
+焼夷弾 > shouidan\ ;
+丁字帯 > teijitai\ ;
+加配米 > kahaimai\ ;
+高精度 > kouseido\ ;
+陰関数 > inkansuu\ ;
+水泳帽 > suieibou\ ;
+貸費生 > taihisei\ ;
+増税案 > zouzeian\ ;
+餓鬼共 > gakidomo\ ;
+許可制 > kyokasei\ ;
+女性像 > joseizou\ ;
+火星年 > kaseinen\ ;
+亜硫酸 > aryuusan\ ;
+再軍備 > saigunbi\ ;
+板屋貝 > itayagai\ ;
+斡旋案 > assen''an\ ;
+花崗岩 > kakougan\ ;
+未完成 > mikansei\ ;
+無用心 > buyoujin\ ;
+成文化 > seibunka\ ;
+粗悪品 > soakuhin\ ;
+控訴権 > kousoken\ ;
+調理場 > chouriba\ ;
+地下線 > chikasen\ ;
+亜硝酸 > ashousan\ ;
+定期戦 > teikisen\ ;
+体系化 > taikeika\ ;
+経営者 > keieisha\ ;
+被写体 > hishatai\ ;
+分娩期 > bunbenki\ ;
+後仕舞 > atojimai\ ;
+裏面史 > rimenshi\ ;
+見世物 > misemono\ ;
+被用者 > hiyousha\ ;
+語彙力 > goiryoku\ ;
+魔法瓶 > mahoubin\ ;
+分娩時 > bunbenji\ ;
+上下動 > jougedou\ ;
+平面図 > heimenzu\ ;
+耐火性 > taikasei\ ;
+再定義 > saiteigi\ ;
+電気工 > denkikou\ ;
+反古籠 > hogukago\ ;
+御降誕 > gokoutan\ ;
+明文化 > meibunka\ ;
+腹具合 > haraguai\ ;
+選挙日 > senkyobi\ ;
+輸精管 > yuseikan\ ;
+小売店 > kouriten\ ;
+宇宙論 > uchuuron\ ;
+鑑定家 > kanteika\ ;
+固溶体 > koyoutai\ ;
+案内所 > an''naijo\ ;
+自信家 > jishinka\ ;
+亜鉛末 > aenmatsu\ ;
+導電度 > doudendo\ ;
+県知事 > kenchiji\ ;
+宇宙観 > uchuukan\ ;
+電動機 > dendouki\ ;
+一丁目 > itchoume\ ;
+伊達衆 > dateshuu\ ;
+腋窩腺 > ekikasen\ ;
+不文法 > fubunpou\ ;
+一貫性 > ikkansei\ ;
+口内炎 > kounaien\ ;
+過不足 > kafusoku\ ;
+愛用者 > aiyousha\ ;
+公民科 > kouminka\ ;
+出格子 > degoushi\ ;
+今世紀 > konseiki\ ;
+未婚者 > mikonsha\ ;
+候補生 > kouhosei\ ;
+東南亜 > tounan''a\ ;
+供養塔 > kuyoutou\ ;
+健胃剤 > ken''izai\ ;
+修験者 > shugenja\ ;
+柔道着 > juudougi\ ;
+微系数 > bikeisuu\ ;
+仕置場 > shiokiba\ ;
+平方和 > heihouwa\ ;
+伴奏部 > bansoubu\ ;
+古写本 > koshahon\ ;
+出来物 > dekimono\ ;
+土饅頭 > domanjuu\ ;
+世話人 > sewabito\ ;
+美顔水 > bigansui\ ;
+自由刑 > jiyuukei\ ;
+塩風呂 > shioburo\ ;
+充電器 > juudenki\ ;
+被験者 > hikensha\ ;
+小熊座 > kogumaza\ ;
+手信語 > teshingo\ ;
+赤毛布 > akagetto\ ;
+水彩画 > suisaiga\ ;
+一人寝 > hitorine\ ;
+青味泥 > aomidoro\ ;
+自由党 > jiyuutou\ ;
+芙蓉峰 > fuyouhou\ ;
+落花生 > rakkasei\ ;
+山間部 > sankanbu\ ;
+同時代 > doujidai\ ;
+無宗派 > mushuuha\ ;
+軍政府 > gunseifu\ ;
+婦人会 > fujinkai\ ;
+寺子屋 > terakoya\ ;
+原繊維 > gensen''i\ ;
+継電気 > keidenki\ ;
+右中間 > uchuukan\ ;
+不文明 > fubunmei\ ;
+平土間 > hiradoma\ ;
+次男坊 > jinanbou\ ;
+膀胱炎 > boukouen\ ;
+有効打 > yuukouda\ ;
+雨量計 > uryoukei\ ;
+宇宙船 > uchuusen\ ;
+減衰器 > gensuiki\ ;
+繰糸機 > soushiki\ ;
+多芸性 > tageisei\ ;
+赤切符 > akagippu\ ;
+火星人 > kaseijin\ ;
+日航機 > nikkouki\ ;
+今世界 > konsekai\ ;
+軍需品 > gunjuhin\ ;
+水蒸気 > suijouki\ ;
+単漢字 > tankanji\ ;
+十文字 > juumonji\ ;
+守備兵 > shubihei\ ;
+暗号文 > angoubun\ ;
+高等科 > koutouka\ ;
+添乗員 > tenjouin\ ;
+案内図 > an''naizu\ ;
+合言葉 > aikotoba\ ;
+定期券 > teikiken\ ;
+予算案 > yosan''an\ ;
+多様性 > tayousei\ ;
+名文家 > meibunka\ ;
+自賠法 > jibaihou\ ;
+出不精 > debushou\ ;
+安山岩 > anzangan\ ;
+老大家 > routaika\ ;
+氏素性 > ujisujou\ ;
+上天気 > joutenki\ ;
+第一声 > daiissei\ ;
+導火線 > doukasen\ ;
+依頼心 > iraishin\ ;
+宇宙線 > uchuusen\ ;
+負債者 > fusaisha\ ;
+後頭部 > koutoubu\ ;
+皮膚病 > hifubyou\ ;
+老夫婦 > roufuufu\ ;
+地下水 > chikasui\ ;
+電気代 > denkidai\ ;
+定義域 > teigiiki\ ;
+放火罪 > houkazai\ ;
+雨合羽 > amagappa\ ;
+受刑者 > jukeisha\ ;
+非公開 > hikoukai\ ;
+普請場 > fushinba\ ;
+多島海 > tatoukai\ ;
+労働歌 > roudouka\ ;
+寄港地 > kikouchi\ ;
+定期便 > teikibin\ ;
+未来形 > miraikei\ ;
+飛行士 > hikoushi\ ;
+妊産婦 > ninsanpu\ ;
+短時間 > tanjikan\ ;
+偏差値 > hensachi\ ;
+下降線 > kakousen\ ;
+洋菓子 > yougashi\ ;
+断裁機 > dansaiki\ ;
+飛行場 > hikoujou\ ;
+工具入 > kouguire\ ;
+体温計 > taionkei\ ;
+発行日 > hakkoubi\ ;
+拷問具 > goumongu\ ;
+除外例 > jogairei\ ;
+寿老人 > juroujin\ ;
+公取委 > koutorii\ ;
+院外団 > ingaidan\ ;
+不変性 > fuhensei\ ;
+多産系 > tasankei\ ;
+小規模 > shoukibo\ ;
+合議制 > gougisei\ ;
+維管束 > ikansoku\ ;
+高温計 > kouonkei\ ;
+初等科 > shotouka\ ;
+記憶法 > kiokuhou\ ;
+今朝方 > kesagata\ ;
+選挙区 > senkyoku\ ;
+破砕性 > hasaisei\ ;
+鹿野苑 > rokuyaon\ ;
+舞台裏 > butaiura\ ;
+経営権 > keieiken\ ;
+不燃性 > funensei\ ;
+神祇官 > jingikan\ ;
+氏素姓 > ujisujou\ ;
+被害者 > higaisha\ ;
+水酸基 > suisanki\ ;
+天体図 > tentaizu\ ;
+近距離 > kinkyori\ ;
+準社員 > junshain\ ;
+人件費 > jinkenhi\ ;
+常得意 > joutokui\ ;
+皮脂腺 > hishisen\ ;
+無定形 > muteikei\ ;
+可用性 > kayousei\ ;
+人生派 > jinseiha\ ;
+発行所 > hakkoujo\ ;
+摩天楼 > matenrou\ ;
+小間物 > komamono\ ;
+御大層 > gotaisou\ ;
+警備隊 > keibitai\ ;
+割烹着 > kappougi\ ;
+協和音 > kyouwaon\ ;
+受動態 > judoutai\ ;
+総動員 > soudouin\ ;
+花林糖 > karintou\ ;
+正社員 > seishain\ ;
+等温線 > touonsen\ ;
+御霊屋 > mitamaya\ ;
+一夕話 > issekiwa\ ;
+小為替 > kogawase\ ;
+第一位 > daiichii\ ;
+税関吏 > zeikanri\ ;
+養育費 > youikuhi\ ;
+流鏑馬 > yabusame\ ;
+控訴人 > kousonin\ ;
+茶話会 > chawakai\ ;
+喫緊事 > kikkinji\ ;
+吸金剛 > kokongou\ ;
+老練家 > rourenka\ ;
+不調和 > fuchouwa\ ;
+気管支 > kikanshi\ ;
+水酸化 > suisanka\ ;
+大人気 > daininki\ ;
+青銅器 > seidouki\ ;
+飛行便 > hikoubin\ ;
+可能法 > kanouhou\ ;
+真珠母 > shinjubo\ ;
+専攻科 > senkouka\ ;
+化膿菌 > kanoukin\ ;
+非常線 > hijousen\ ;
+精一杯 > seiippai\ ;
+遇不遇 > guufuguu\ ;
+未耕地 > mikouchi\ ;
+門下生 > monkasei\ ;
+一風呂 > hitofuro\ ;
+培養基 > baiyouki\ ;
+軍隊化 > guntaika\ ;
+演芸会 > engeikai\ ;
+文人画 > bunjinga\ ;
+現時代 > genjidai\ ;
+広範囲 > kouhan''i\ ;
+円屋根 > maruyane\ ;
+培養土 > baiyoudo\ ;
+寒気団 > kankidan\ ;
+粗利益 > ararieki\ ;
+予算外 > yosangai\ ;
+非民主 > himinshu\ ;
+受益者 > juekisha\ ;
+安定板 > anteiban\ ;
+記念館 > kinenkan\ ;
+大宇宙 > daiuchuu\ ;
+亜急性 > akyuusei\ ;
+計算簿 > keisanbo\ ;
+静止画 > seishiga\ ;
+不整合 > fuseigou\ ;
+二重顎 > nijuuago\ ;
+制御機 > seigyoki\ ;
+二等分 > nitoubun\ ;
+平炉法 > heirohou\ ;
+五稜堡 > goryouho\ ;
+未来像 > miraizou\ ;
+足温器 > sokuonki\ ;
+二等兵 > nitouhei\ ;
+貴族院 > kizokuin\ ;
+継電器 > keidenki\ ;
+記号論 > kigouron\ ;
+名詞句 > meishiku\ ;
+伝馬船 > tenmasen\ ;
+銀河系 > gingakei\ ;
+大宮司 > daiguuji\ ;
+流行目 > hayarime\ ;
+遠視眼 > enshigan\ ;
+卵巣炎 > ransouen\ ;
+未亡人 > miboujin\ ;
+不経済 > fukeizai\ ;
+引用符 > in''youfu\ ;
+柔道家 > juudouka\ ;
+不均衡 > fukinkou\ ;
+対話者 > taiwasha\ ;
+訟務部 > shoumubu\ ;
+御霊前 > goreizen\ ;
+兌換券 > dakanken\ ;
+不摂生 > fusessei\ ;
+日本風 > nihonfuu\ ;
+候補地 > kouhochi\ ;
+砂防林 > sabourin\ ;
+下士官 > kashikan\ ;
+市議会 > shigikai\ ;
+一時期 > ichijiki\ ;
+自負心 > jifushin\ ;
+相合傘 > aiaigasa\ ;
+謙譲語 > kenjougo\ ;
+扶持米 > fuchimai\ ;
+再起動 > saikidou\ ;
+獣医学 > juuigaku\ ;
+非常用 > hijouyou\ ;
+破廉恥 > harenchi\ ;
+出放題 > dehoudai\ ;
+安定感 > anteikan\ ;
+養老院 > yourouin\ ;
+野良猫 > noraneko\ ;
+未丁年 > miteinen\ ;
+安定性 > anteisei\ ;
+決算期 > kessanki\ ;
+自乗根 > jijoukon\ ;
+全荷重 > zenkajuu\ ;
+奥御殿 > okugoten\ ;
+製造所 > seizoujo\ ;
+快男児 > kaidanji\ ;
+旺文社 > oubunsha\ ;
+超音波 > chouonpa\ ;
+守護霊 > shugorei\ ;
+木曾川 > kisogawa\ ;
+弱音器 > jakuonki\ ;
+決算日 > kessanbi\ ;
+自主権 > jishuken\ ;
+能弁家 > noubenka\ ;
+可能性 > kanousei\ ;
+大旦那 > oodan''na\ ;
+印度教 > indokyou\ ;
+無人島 > mujintou\ ;
+真似事 > manegoto\ ;
+謄写器 > toushaki\ ;
+帰還者 > kikansha\ ;
+助産院 > josan''in\ ;
+女店員 > joten''in\ ;
+蛸部屋 > takobeya\ ;
+予算上 > yosanjou\ ;
+定時制 > teijisei\ ;
+正弦波 > seigenha\ ;
+余所事 > yosogoto\ ;
+馬鹿者 > bakamono\ ;
+儀礼兵 > gireihei\ ;
+日本酒 > nihonshu\ ;
+早産児 > souzanji\ ;
+採綿器 > saimenki\ ;
+英連邦 > eirenpou\ ;
+早生児 > souseiji\ ;
+加盟者 > kameisha\ ;
+降雨量 > kouuryou\ ;
+警備艇 > keibitei\ ;
+出来事 > dekigoto\ ;
+価電子 > kadenshi\ ;
+古生界 > koseikai\ ;
+制動機 > seidouki\ ;
+金魚屋 > kingyoya\ ;
+木天蓼 > matatabi\ ;
+半裸体 > hanratai\ ;
+日本軍 > nihongun\ ;
+日本車 > nihonsha\ ;
+修羅道 > shuradou\ ;
+商行為 > shoukoui\ ;
+条里制 > jourisei\ ;
+投影法 > toueihou\ ;
+有尾類 > yuubirui\ ;
+欧羅巴 > youroppa\ ;
+世間体 > sekentei\ ;
+伊達巻 > datemaki\ ;
+水利権 > suiriken\ ;
+史学家 > shigakka\ ;
+納付金 > noufukin\ ;
+蕎麦殻 > sobagara\ ;
+方向舵 > houkouda\ ;
+夏至線 > geshisen\ ;
+不均等 > fukintou\ ;
+宇宙帽 > uchuubou\ ;
+無頼漢 > buraikan\ ;
+濃度計 > noudokei\ ;
+一昨年 > ototoshi\ ;
+未経験 > mikeiken\ ;
+朝寝坊 > asanebou\ ;
+過大視 > kadaishi\ ;
+翡翠色 > hisuiiro\ ;
+土根性 > dokonjou\ ;
+総模様 > soumoyou\ ;
+計算機 > keisanki\ ;
+弁当屋 > bentouya\ ;
+代打者 > daidasha\ ;
+風媒花 > fuubaika\ ;
+無試験 > mushiken\ ;
+醸造酢 > jouzousu\ ;
+反動派 > handouha\ ;
+経済家 > keizaika\ ;
+淋巴腺 > rinpasen\ ;
+自主性 > jishusei\ ;
+越天楽 > etenraku\ ;
+権利金 > kenrikin\ ;
+慢性化 > manseika\ ;
+授乳期 > junyuuki\ ;
+専門語 > senmongo\ ;
+前舞台 > maebutai\ ;
+選科生 > senkasei\ ;
+季刊誌 > kikanshi\ ;
+実際家 > jissaika\ ;
+一昼夜 > itchuuya\ ;
+衆議院 > shuugiin\ ;
+日本製 > nihonsei\ ;
+印判師 > inbanshi\ ;
+小火器 > shoukaki\ ;
+無風帯 > mufuutai\ ;
+制御器 > seigyoki\ ;
+走査線 > sousasen\ ;
+空手家 > karateka\ ;
+不器量 > bukiryou\ ;
+天井値 > tenjoune\ ;
+計算木 > keisangi\ ;
+採炭所 > saitanjo\ ;
+弁務官 > benmukan\ ;
+受益権 > juekiken\ ;
+加工紙 > kakoushi\ ;
+教務課 > kyoumuka\ ;
+連動機 > rendouki\ ;
+交差点 > kousaten\ ;
+議事録 > gijiroku\ ;
+再来年 > sarainen\ ;
+一昨夜 > issakuya\ ;
+宇宙塵 > uchuujin\ ;
+水道屋 > suidouya\ ;
+重軌条 > juukijou\ ;
+違約金 > iyakukin\ ;
+鸚鵡病 > oumubyou\ ;
+単性花 > tanseika\ ;
+注意点 > chuuiten\ ;
+常備金 > joubikin\ ;
+転移性 > ten''isei\ ;
+活火山 > kakkazan\ ;
+加工税 > kakouzei\ ;
+美粧院 > bishouin\ ;
+茶箪笥 > chadansu\ ;
+噴火山 > funkazan\ ;
+地方時 > chihouji\ ;
+悪餓鬼 > warugaki\ ;
+博愛家 > hakuaika\ ;
+情報部 > jouhoubu\ ;
+日本茶 > nihoncha\ ;
+光行差 > koukousa\ ;
+外耳道 > gaijidou\ ;
+地震波 > jishinha\ ;
+三塁打 > sanruida\ ;
+勾引状 > kouinjou\ ;
+地雷源 > jiraigen\ ;
+電機子 > denkishi\ ;
+常備軍 > joubigun\ ;
+小型化 > kogataka\ ;
+刷毛先 > hakesaki\ ;
+青内障 > aosokohi\ ;
+評議員 > hyougiin\ ;
+公分母 > koubunbo\ ;
+可聴度 > kachoudo\ ;
+無条件 > mujouken\ ;
+矢飛白 > yagasuri\ ;
+手腕家 > shuwanka\ ;
+検事正 > kenjisei\ ;
+偽善者 > gizensha\ ;
+伝導度 > dendoudo\ ;
+公募債 > koubosai\ ;
+機関銃 > kikanjuu\ ;
+武勇伝 > buyuuden\ ;
+制御下 > seigyoka\ ;
+蓮華草 > rengesou\ ;
+報知機 > houchiki\ ;
+夏至点 > geshiten\ ;
+武芸者 > bugeisha\ ;
+走馬灯 > soumatou\ ;
+歯軌条 > shikijou\ ;
+二重税 > nijuuzei\ ;
+正比例 > seihirei\ ;
+預金者 > yokinsha\ ;
+加速度 > kasokudo\ ;
+正当化 > seitouka\ ;
+手不足 > tebusoku\ ;
+側火山 > sokkazan\ ;
+過不及 > kafukyuu\ ;
+殺鼠剤 > sassozai\ ;
+記念祭 > kinensai\ ;
+不手際 > futegiwa\ ;
+不等辺 > futouhen\ ;
+被害地 > higaichi\ ;
+機関車 > kikansha\ ;
+日本紙 > nihonshi\ ;
+宇宙人 > uchuujin\ ;
+潜水夫 > sensuifu\ ;
+御陀仏 > odabutsu\ ;
+夜学校 > yagakkou\ ;
+再上映 > saijouei\ ;
+外来語 > gairaigo\ ;
+難破船 > nanpasen\ ;
+駒下駄 > komageta\ ;
+注意書 > chuuisho\ ;
+五重奏 > gojuusou\ ;
+漫談家 > mandanka\ ;
+倍精度 > baiseido\ ;
+納付者 > noufusha\ ;
+噴火口 > funkakou\ ;
+介護人 > kaigonin\ ;
+道議会 > dougikai\ ;
+有機体 > yuukitai\ ;
+死産児 > shizanji\ ;
+不規則 > fukisoku\ ;
+潜水器 > sensuiki\ ;
+整備工 > seibikou\ ;
+荒武者 > aramusha\ ;
+遠地点 > enchiten\ ;
+外字紙 > gaijishi\ ;
+今時分 > imajibun\ ;
+反動家 > handouka\ ;
+機関誌 > kikanshi\ ;
+大晦日 > oomisoka\ ;
+不精巧 > fuseikou\ ;
+大丈夫 > daijoubu\ ;
+保全会 > hozenkai\ ;
+同素体 > dousotai\ ;
+再交付 > saikoufu\ ;
+天日法 > tenpihou\ ;
+守護神 > shugojin\ ;
+組合費 > kumiaihi\ ;
+荒蕪地 > koubuchi\ ;
+愛媛県 > ehimeken\ ;
+計算器 > keisanki\ ;
+未青年 > miseinen\ ;
+人事欄 > jinjiran\ ;
+長音符 > chouonpu\ ;
+不均斉 > fukinsei\ ;
+準備金 > junbikin\ ;
+淋巴液 > rinpaeki\ ;
+事務長 > jimuchou\ ;
+修理屋 > shuuriya\ ;
+懐疑論 > kaigiron\ ;
+喉頭炎 > koutouen\ ;
+疎外感 > sogaikan\ ;
+加速器 > kasokuki\ ;
+加工歯 > kakoushi\ ;
+庭下駄 > niwageta\ ;
+非常勤 > hijoukin\ ;
+野球部 > yakyuubu\ ;
+前駆戦 > zenkusen\ ;
+指導部 > shidoubu\ ;
+財産家 > zaisanka\ ;
+居催促 > izaisoku\ ;
+当歳馬 > tousaiba\ ;
+仁王力 > niouriki\ ;
+多肉果 > tanikuka\ ;
+最盛期 > saiseiki\ ;
+反比例 > hanpirei\ ;
+女子高 > joshikou\ ;
+開回路 > kaikairo\ ;
+審査員 > shinsain\ ;
+麝香水 > jakousui\ ;
+日本犬 > nihonken\ ;
+事務量 > jimuryou\ ;
+引用句 > in''youku\ ;
+科学院 > kagakuin\ ;
+前頭部 > zentoubu\ ;
+十四日 > juuyokka\ ;
+連歌師 > rengashi\ ;
+支援者 > shiensha\ ;
+梶木座 > kajikiza\ ;
+地方区 > chihouku\ ;
+山火事 > yamakaji\ ;
+才未満 > saimiman\ ;
+人類猿 > jinruien\ ;
+議定書 > giteisho\ ;
+茶坊主 > chabouzu\ ;
+加盟店 > kameiten\ ;
+緩下剤 > kangezai\ ;
+萌黄色 > moegiiro\ ;
+空気銃 > kuukijuu\ ;
+鹹水湖 > kansuiko\ ;
+海老腰 > ebigoshi\ ;
+生計費 > seikeihi\ ;
+参加者 > sankasha\ ;
+日本海 > nihonkai\ ;
+被乗数 > hijousuu\ ;
+手風琴 > tefuukin\ ;
+注意報 > chuuihou\ ;
+風景画 > fuukeiga\ ;
+電子音 > denshion\ ;
+転化糖 > tenkatou\ ;
+閉経期 > heikeiki\ ;
+出無精 > debushou\ ;
+互助的 > gojoteki\ ;
+乾所帯 > kanjotai\ ;
+大音声 > daionjou\ ;
+破産者 > hasansha\ ;
+閉回路 > heikairo\ ;
+機関紙 > kikanshi\ ;
+胡麻擂 > gomasuri\ ;
+機雷原 > kiraigen\ ;
+多孔性 > takousei\ ;
+合成音 > gouseion\ ;
+破魔弓 > hamayumi\ ;
+造影剤 > zoueizai\ ;
+倦怠期 > kentaiki\ ;
+未納者 > minousha\ ;
+二重星 > nijuusei\ ;
+繁体字 > hantaiji\ ;
+消音器 > shouonki\ ;
+多人数 > taninzuu\ ;
+赴任地 > funinchi\ ;
+古生代 > koseidai\ ;
+芝居気 > shibaige\ ;
+横座標 > ouzahyou\ ;
+自警団 > jikeidan\ ;
+暫定案 > zanteian\ ;
+魚市場 > uoichiba\ ;
+駅馬車 > ekibasha\ ;
+対話体 > taiwatai\ ;
+清掃夫 > seisoufu\ ;
+高感度 > koukando\ ;
+紀元前 > kigenzen\ ;
+磨研紙 > makenshi\ ;
+火蜥蜴 > hitokage\ ;
+既婚者 > kikonsha\ ;
+搬送波 > hansouha\ ;
+疎開者 > sokaisha\ ;
+思想家 > shisouka\ ;
+岩田帯 > iwataobi\ ;
+開閉機 > kaiheiki\ ;
+序破急 > johakyuu\ ;
+足忠実 > ashimame\ ;
+半減期 > hangenki\ ;
+自然美 > shizenbi\ ;
+前世紀 > zenseiki\ ;
+研磨紙 > kenmashi\ ;
+青写真 > aojashin\ ;
+祈祷書 > kitousho\ ;
+帰還兵 > kikanhei\ ;
+閉経後 > heikeigo\ ;
+多方面 > tahoumen\ ;
+燕尾服 > enbifuku\ ;
+禀議書 > ringisho\ ;
+父兄会 > fukeikai\ ;
+高麗楽 > komagaku\ ;
+全盛期 > zenseiki\ ;
+予想外 > yosougai\ ;
+扁桃油 > hentouyu\ ;
+青年期 > seinenki\ ;
+均等化 > kintouka\ ;
+受験者 > jukensha\ ;
+時代相 > jidaisou\ ;
+増加分 > zoukabun\ ;
+二連銃 > nirenjuu\ ;
+一回転 > ikkaiten\ ;
+主脳部 > shunoubu\ ;
+納付書 > noufusho\ ;
+単弁花 > tanbenka\ ;
+流浪者 > rurousha\ ;
+荒利益 > ararieki\ ;
+菓子盆 > kashibon\ ;
+公用語 > kouyougo\ ;
+太陽炉 > taiyouro\ ;
+受身形 > ukemikei\ ;
+民営化 > min''eika\ ;
+人望家 > jinbouka\ ;
+総二階 > sounikai\ ;
+解雇者 > kaikosha\ ;
+漢時代 > kanjidai\ ;
+内外野 > naigaiya\ ;
+片仮名 > katakana\ ;
+脱衣所 > datsuijo\ ;
+不錆鋼 > fuseikou\ ;
+贈与者 > zouyosha\ ;
+保守系 > hoshukei\ ;
+海馬回 > kaibakai\ ;
+自堕落 > jidaraku\ ;
+本塁打 > honruida\ ;
+愛餐会 > aisankai\ ;
+対抗馬 > taikouba\ ;
+仮名文 > kanabumi\ ;
+胡麻塩 > gomashio\ ;
+加工品 > kakouhin\ ;
+権利書 > kenrisho\ ;
+廃要素 > haiyouso\ ;
+空想家 > kuusouka\ ;
+既定値 > kiteichi\ ;
+販売部 > hanbaibu\ ;
+眼鏡屋 > meganeya\ ;
+前世界 > zensekai\ ;
+本場所 > honbasho\ ;
+虚無党 > kyomutou\ ;
+人類愛 > jinruiai\ ;
+二重奏 > nijuusou\ ;
+愛好者 > aikousha\ ;
+合成語 > gouseigo\ ;
+石火矢 > ishibiya\ ;
+出納簿 > suitoubo\ ;
+軍管区 > gunkanku\ ;
+秋田県 > akitaken\ ;
+儒学界 > jugakkai\ ;
+下手糞 > hetakuso\ ;
+未墾地 > mikonchi\ ;
+大多数 > daitasuu\ ;
+子午線 > shigosen\ ;
+正常化 > seijouka\ ;
+発酵素 > hakkouso\ ;
+距離計 > kyorikei\ ;
+船小屋 > funagoya\ ;
+醸造所 > jouzoujo\ ;
+大納言 > dainagon\ ;
+天文家 > tenmonka\ ;
+模造者 > mozousha\ ;
+寝不足 > nebusoku\ ;
+専門家 > senmonka\ ;
+未然形 > mizenkei\ ;
+剪裁機 > sensaiki\ ;
+購買部 > koubaibu\ ;
+慈善会 > jizenkai\ ;
+悪趣味 > akushumi\ ;
+贈与税 > zouyozei\ ;
+保存系 > hozonkei\ ;
+気動車 > kidousha\ ;
+永住者 > eijuusha\ ;
+未熟児 > mijukuji\ ;
+記念品 > kinenhin\ ;
+破瓜病 > hakabyou\ ;
+破産法 > hasanhou\ ;
+停電日 > teidenbi\ ;
+受験生 > jukensei\ ;
+陸蒸気 > okajouki\ ;
+実行時 > jikkouji\ ;
+模造紙 > mozoushi\ ;
+二原子 > nigenshi\ ;
+他所者 > yosomono\ ;
+秋田犬 > akitaken\ ;
+万国旗 > bankokki\ ;
+事務的 > jimuteki\ ;
+推移的 > suiiteki\ ;
+空気穴 > kuukiana\ ;
+受容者 > juyousha\ ;
+糠味噌 > nukamiso\ ;
+方形波 > houkeiha\ ;
+戦前派 > senzenha\ ;
+処理場 > shorijou\ ;
+二弦琴 > nigenkin\ ;
+酒造家 > shuzouka\ ;
+掲示板 > keijiban\ ;
+内風呂 > uchiburo\ ;
+中労委 > chuuroui\ ;
+愛猫家 > aibyouka\ ;
+三回忌 > sankaiki\ ;
+総仕舞 > soujimai\ ;
+醸造家 > jouzouka\ ;
+交付金 > koufukin\ ;
+扇風機 > senpuuki\ ;
+全候補 > zenkouho\ ;
+理想論 > risouron\ ;
+日本史 > nihonshi\ ;
+漢数字 > kansuuji\ ;
+輝煌帝 > kikoutei\ ;
+支持者 > shijisha\ ;
+大文字 > daimonji\ ;
+子午環 > shigokan\ ;
+艶福家 > enpukuka\ ;
+開閉器 > kaiheiki\ ;
+専門医 > senmon''i\ ;
+更年期 > kounenki\ ;
+専門化 > senmonka\ ;
+日本刀 > nihontou\ ;
+不行儀 > fugyougi\ ;
+帰巣性 > kisousei\ ;
+下手物 > getemono\ ;
+提案者 > teiansha\ ;
+受信機 > jushinki\ ;
+揚子江 > yousukou\ ;
+経常費 > keijouhi\ ;
+海王星 > kaiousei\ ;
+幼稚園 > youchien\ ;
+企画課 > kikakuka\ ;
+月桂樹 > gekkeiju\ ;
+未記入 > mikinyuu\ ;
+研磨材 > kenmazai\ ;
+二年草 > ninensou\ ;
+義勇軍 > giyuugun\ ;
+文語文 > bungobun\ ;
+誕生日 > tanjoubi\ ;
+金時計 > kindokei\ ;
+空洞化 > kuudouka\ ;
+糞味噌 > kusomiso\ ;
+日本人 > nihonjin\ ;
+性遊戯 > seiyuugi\ ;
+次点者 > jitensha\ ;
+防腐剤 > boufuzai\ ;
+日本中 > nihonjuu\ ;
+腕相撲 > udezumou\ ;
+不節制 > fusessei\ ;
+地域差 > chiikisa\ ;
+保護鳥 > hogochou\ ;
+小手先 > kotesaki\ ;
+無降水 > mukousui\ ;
+鼻呼吸 > bikokyuu\ ;
+重騎兵 > juukihei\ ;
+古代史 > kodaishi\ ;
+能舞台 > noubutai\ ;
+競馬馬 > keibauma\ ;
+免租地 > mensochi\ ;
+二次的 > nijiteki\ ;
+演奏者 > ensousha\ ;
+具体性 > gutaisei\ ;
+一等車 > ittousha\ ;
+不品行 > fuhinkou\ ;
+特科兵 > tokkahei\ ;
+脂肪油 > shibouyu\ ;
+左大臣 > sadaijin\ ;
+金字塔 > kinjitou\ ;
+高野山 > kouyasan\ ;
+大熊座 > oogumaza\ ;
+冒険家 > boukenka\ ;
+塩濃度 > en''noudo\ ;
+日乃丸 > hinomaru\ ;
+何処迄 > dokomade\ ;
+近似値 > kinjichi\ ;
+透磁性 > toujisei\ ;
+保護領 > hogoryou\ ;
+特派員 > tokuhain\ ;
+唾液腺 > daekisen\ ;
+庭木戸 > niwakido\ ;
+後援者 > kouensha\ ;
+黄鉄鉱 > outekkou\ ;
+古代人 > kodaijin\ ;
+事務服 > jimufuku\ ;
+小麦粉 > komugiko\ ;
+不溶性 > fuyousei\ ;
+顧問団 > komondan\ ;
+保有者 > hoyuusha\ ;
+避病院 > hibyouin\ ;
+前景気 > maegeiki\ ;
+機関士 > kikanshi\ ;
+外交員 > gaikouin\ ;
+銅相場 > dousouba\ ;
+傾斜度 > keishado\ ;
+高度計 > koudokei\ ;
+近未来 > kinmirai\ ;
+捕鯨船 > hogeisen\ ;
+加害者 > kagaisha\ ;
+数珠玉 > juzudama\ ;
+手羽先 > tebasaki\ ;
+補助翼 > hojoyoku\ ;
+慈悲心 > jihishin\ ;
+外貨債 > gaikasai\ ;
+情報化 > jouhouka\ ;
+総予算 > souyosan\ ;
+真夜中 > mayonaka\ ;
+下意識 > kaishiki\ ;
+代稽古 > daigeiko\ ;
+永住権 > eijuuken\ ;
+保有米 > hoyuumai\ ;
+自国語 > jikokugo\ ;
+反対語 > hantaigo\ ;
+変異体 > hen''itai\ ;
+利己的 > rikoteki\ ;
+建具屋 > tateguya\ ;
+防寒具 > boukangu\ ;
+女学校 > jogakkou\ ;
+保守性 > hoshusei\ ;
+好景気 > koukeiki\ ;
+交付者 > koufusha\ ;
+可変数 > kahensuu\ ;
+花文字 > hanamoji\ ;
+面会日 > menkaibi\ ;
+煙草屋 > tabakoya\ ;
+雨模様 > amemoyou\ ;
+揺籃期 > youranki\ ;
+突破口 > toppakou\ ;
+近代化 > kindaika\ ;
+点火系 > tenkakei\ ;
+二年生 > ninensei\ ;
+星気体 > seikitai\ ;
+不等号 > fudougou\ ;
+五辺形 > gohenkei\ ;
+二輪車 > nirinsha\ ;
+用箪笥 > youdansu\ ;
+冷蔵庫 > reizouko\ ;
+不所存 > fushozon\ ;
+投光器 > toukouki\ ;
+女子校 > joshikou\ ;
+浜茄子 > hamanasu\ ;
+古書展 > koshoten\ ;
+二十代 > nijuudai\ ;
+市街図 > shigaizu\ ;
+樹枝状 > jushijou\ ;
+序盤戦 > jobansen\ ;
+火成岩 > kaseigan\ ;
+組合員 > kumiaiin\ ;
+亜脱臼 > adakkyuu\ ;
+鬱金色 > ukon''iro\ ;
+鬼武者 > onimusha\ ;
+斜投影 > shatouei\ ;
+滑空機 > kakkuuki\ ;
+軽騎兵 > keikihei\ ;
+二元論 > nigenron\ ;
+手料理 > teryouri\ ;
+単利法 > tanrihou\ ;
+御神輿 > omikoshi\ ;
+先鋭化 > sen''eika\ ;
+撒布剤 > sappuzai\ ;
+呉服屋 > gofukuya\ ;
+受信器 > jushinki\ ;
+溶解炉 > youkairo\ ;
+可変性 > kahensei\ ;
+年齢差 > nenreisa\ ;
+刀圭家 > toukeika\ ;
+鳳仙花 > housenka\ ;
+導波管 > douhakan\ ;
+単比例 > tanpirei\ ;
+捕鯨砲 > hogeihou\ ;
+直足袋 > jikatabi\ ;
+悪太郎 > akutarou\ ;
+有理数 > yuurisuu\ ;
+部分品 > bubunhin\ ;
+可燃性 > kanensei\ ;
+不善感 > fuzenkan\ ;
+洗面所 > senmenjo\ ;
+送油管 > souyukan\ ;
+格子戸 > koushido\ ;
+具体例 > gutairei\ ;
+支持杭 > shijikou\ ;
+無限大 > mugendai\ ;
+精米所 > seimaijo\ ;
+統語論 > tougoron\ ;
+未開墾 > mikaikon\ ;
+作業費 > sagyouhi\ ;
+大阪府 > oosakafu\ ;
+猊美渓 > geibikei\ ;
+打撃王 > dagekiou\ ;
+広葉樹 > kouyouju\ ;
+草創期 > sousouki\ ;
+侍衛長 > jieichou\ ;
+二進木 > nishingi\ ;
+顕在化 > kenzaika\ ;
+再試合 > saishiai\ ;
+伝音器 > den''onki\ ;
+義務的 > gimuteki\ ;
+輸卵管 > yurankan\ ;
+低利金 > teirikin\ ;
+戦利品 > senrihin\ ;
+文語体 > bungotai\ ;
+乾性油 > kanseiyu\ ;
+擂粉木 > surikogi\ ;
+指導員 > shidouin\ ;
+未開地 > mikaichi\ ;
+秘書官 > hishokan\ ;
+武家物 > bukemono\ ;
+整理券 > seiriken\ ;
+育雛器 > ikusuuki\ ;
+圧搾機 > assakuki\ ;
+二分法 > nibunhou\ ;
+混成語 > konseigo\ ;
+珈琲苑 > kouhiien\ ;
+二部作 > nibusaku\ ;
+総会屋 > soukaiya\ ;
+仕手戦 > shitesen\ ;
+好好爺 > koukouya\ ;
+税務署 > zeimusho\ ;
+販売機 > hanbaiki\ ;
+空気孔 > kuukikou\ ;
+疲労感 > hiroukan\ ;
+放水路 > housuiro\ ;
+会議所 > kaigisho\ ;
+形容語 > keiyougo\ ;
+一回戦 > ikkaisen\ ;
+疑問詞 > gimonshi\ ;
+苦労人 > kurounin\ ;
+聖火台 > seikadai\ ;
+水位標 > suiihyou\ ;
+悲観論 > hikanron\ ;
+妄語戒 > mougokai\ ;
+永小作 > eikosaku\ ;
+炭素鋼 > tansokou\ ;
+繊維束 > senisoku\ ;
+解放区 > kaihouku\ ;
+保守党 > hoshutou\ ;
+紅一点 > kouitten\ ;
+企業家 > kigyouka\ ;
+家庭用 > kateiyou\ ;
+虚空蔵 > kokuuzou\ ;
+会計課 > kaikeika\ ;
+勤務者 > kinmusha\ ;
+距離感 > kyorikan\ ;
+不成功 > fuseikou\ ;
+祈年祭 > kinensai\ ;
+看護法 > kangohou\ ;
+催事場 > saijijou\ ;
+鬼兵隊 > kiheitai\ ;
+女子大 > joshidai\ ;
+唯我論 > yuigaron\ ;
+未製品 > miseihin\ ;
+無統制 > mutousei\ ;
+造船所 > zousenjo\ ;
+身支度 > mijitaku\ ;
+金本位 > kinhon''i\ ;
+多面性 > tamensei\ ;
+大型機 > oogataki\ ;
+未開人 > mikaijin\ ;
+藁屋根 > warayane\ ;
+月世界 > gessekai\ ;
+得意顔 > tokuigao\ ;
+手間隙 > temahima\ ;
+空気口 > kuukikou\ ;
+政治犯 > seijihan\ ;
+洗面器 > senmenki\ ;
+人文字 > hitomoji\ ;
+模造品 > mozouhin\ ;
+呼吸器 > kokyuuki\ ;
+土地鑑 > tochikan\ ;
+気送管 > kisoukan\ ;
+低金利 > teikinri\ ;
+帽子屋 > boushiya\ ;
+御成功 > goseikou\ ;
+珊瑚海 > sangokai\ ;
+曳光弾 > eikoudan\ ;
+千里眼 > senrigan\ ;
+落下傘 > rakkasan\ ;
+渡航者 > tokousha\ ;
+下手人 > geshunin\ ;
+処女林 > shojorin\ ;
+事業部 > jigyoubu\ ;
+富山房 > fuzanbou\ ;
+接待費 > settaihi\ ;
+繊維性 > sen''isei\ ;
+手話法 > shuwahou\ ;
+保養地 > hoyouchi\ ;
+利己心 > rikoshin\ ;
+点火栓 > tenkasen\ ;
+鎔鉱炉 > youkouro\ ;
+可換群 > kakangun\ ;
+会議場 > kaigijou\ ;
+人非人 > ninpinin\ ;
+花粉管 > kafunkan\ ;
+過激派 > kagekiha\ ;
+溶解度 > youkaido\ ;
+句読点 > kutouten\ ;
+捜査陣 > sousajin\ ;
+企業化 > kigyouka\ ;
+営利的 > eiriteki\ ;
+被災者 > hisaisha\ ;
+不従順 > fujuujun\ ;
+反射炉 > hansharo\ ;
+佝僂病 > kurubyou\ ;
+都会人 > tokaijin\ ;
+呪禁道 > jukondou\ ;
+古版本 > kohanbon\ ;
+測候所 > sokkoujo\ ;
+派遣隊 > hakentai\ ;
+歓迎宴 > kangeien\ ;
+成功裡 > seikouri\ ;
+家庭欄 > kateiran\ ;
+多変数 > tahensuu\ ;
+男性美 > danseibi\ ;
+高機能 > koukinou\ ;
+人間苦 > ningenku\ ;
+三味線 > shamisen\ ;
+寿喜焼 > sukiyaki\ ;
+同程度 > douteido\ ;
+好塩菌 > kouenkin\ ;
+送気管 > soukikan\ ;
+犠牲者 > giseisha\ ;
+花紋板 > kamonban\ ;
+電子化 > denshika\ ;
+尽未来 > jinmirai\ ;
+句読法 > kutouhou\ ;
+好天気 > koutenki\ ;
+浄化槽 > joukasou\ ;
+有声音 > yuuseion\ ;
+反作用 > hansayou\ ;
+全自動 > zenjidou\ ;
+反対派 > hantaiha\ ;
+処女性 > shojosei\ ;
+手間賃 > temachin\ ;
+一回分 > ikkaibun\ ;
+罹災者 > risaisha\ ;
+貯炭所 > chotanjo\ ;
+有人化 > yuujinka\ ;
+印象派 > inshouha\ ;
+講演者 > kouensha\ ;
+槍騎兵 > soukihei\ ;
+逃避行 > touhikou\ ;
+内火艇 > naikatei\ ;
+圧搾器 > assakuki\ ;
+利権屋 > riken''ya\ ;
+光度計 > koudokei\ ;
+閲兵台 > eppeidai\ ;
+混種語 > konshugo\ ;
+透過性 > toukasei\ ;
+会見記 > kaikenki\ ;
+相似点 > soujiten\ ;
+螺子釘 > nejikugi\ ;
+処女峰 > shojohou\ ;
+看護師 > kangoshi\ ;
+有頂点 > uchouten\ ;
+一等星 > ittousei\ ;
+下水道 > gesuidou\ ;
+非人情 > hininjou\ ;
+主義者 > shugisha\ ;
+派遣軍 > hakengun\ ;
+再提案 > saiteian\ ;
+美意識 > biishiki\ ;
+総本家 > souhonke\ ;
+度外視 > dogaishi\ ;
+遠征隊 > enseitai\ ;
+理想型 > risoukei\ ;
+仮分数 > kabunsuu\ ;
+助数詞 > josuushi\ ;
+精算所 > seisanjo\ ;
+消火器 > shoukaki\ ;
+多面体 > tamentai\ ;
+形骸化 > keigaika\ ;
+欧米人 > oubeijin\ ;
+経師屋 > kyoujiya\ ;
+誤変換 > gohenkan\ ;
+還付金 > kanpukin\ ;
+晩御飯 > bangohan\ ;
+腕自慢 > udejiman\ ;
+浄水器 > jousuiki\ ;
+助教諭 > jokyouyu\ ;
+看護士 > kangoshi\ ;
+永子作 > eikosaku\ ;
+処女地 > shojochi\ ;
+利用者 > riyousha\ ;
+無精卵 > museiran\ ;
+無関係 > mukankei\ ;
+正字法 > seijihou\ ;
+軍医監 > gun''ikan\ ;
+警世家 > keiseika\ ;
+来学期 > raigakki\ ;
+映画評 > eigahyou\ ;
+批判者 > hihansha\ ;
+平叙文 > heijobun\ ;
+三重苦 > sanjuuku\ ;
+模倣者 > mohousha\ ;
+予選会 > yosenkai\ ;
+演奏会 > ensoukai\ ;
+不活性 > fukassei\ ;
+開口部 > kaikoubu\ ;
+双胴機 > soudouki\ ;
+須弥山 > shumisen\ ;
+偽造罪 > gizouzai\ ;
+秀画家 > shuugaka\ ;
+交代員 > koutaiin\ ;
+赤電話 > akadenwa\ ;
+有期刑 > yuukikei\ ;
+口話法 > kouwahou\ ;
+戸主権 > koshuken\ ;
+公安官 > kouankan\ ;
+歯牙状 > shigajou\ ;
+伝声器 > denseiki\ ;
+保険金 > hokenkin\ ;
+指数部 > shisuubu\ ;
+豪華船 > goukasen\ ;
+丸暗記 > maruanki\ ;
+基準点 > kijunten\ ;
+後援会 > kouenkai\ ;
+県議会 > kengikai\ ;
+行在所 > anzaisho\ ;
+口語文 > kougobun\ ;
+寝煙草 > netabako\ ;
+断破壊 > danhakai\ ;
+磁鉄鉱 > jitekkou\ ;
+円為替 > engawase\ ;
+看護兵 > kangohei\ ;
+営業部 > eigyoubu\ ;
+不消化 > fushouka\ ;
+不徳義 > futokugi\ ;
+地吹雪 > jifubuki\ ;
+須弥壇 > shumidan\ ;
+佐幕派 > sabakuha\ ;
+頓痴気 > tonchiki\ ;
+多数党 > tasuutou\ ;
+輸送船 > yusousen\ ;
+採油権 > saiyuken\ ;
+来世紀 > raiseiki\ ;
+山水画 > sansuiga\ ;
+掃除人 > soujinin\ ;
+一等地 > ittouchi\ ;
+税務官 > zeimukan\ ;
+看護人 > kangonin\ ;
+半切符 > hankippu\ ;
+圧瀘器 > atsuroki\ ;
+基準法 > kijunhou\ ;
+受講者 > jukousha\ ;
+測距儀 > sokkyogi\ ;
+冷凍機 > reitouki\ ;
+等距離 > toukyori\ ;
+不名数 > fumeisuu\ ;
+試運転 > shiunten\ ;
+義勇兵 > giyuuhei\ ;
+親画面 > oyagamen\ ;
+拒否権 > kyohiken\ ;
+二番線 > nibansen\ ;
+営業費 > eigyouhi\ ;
+相似形 > soujikei\ ;
+双生児 > souseiji\ ;
+罹災民 > risaimin\ ;
+寄生木 > yadorigi\ ;
+火薬庫 > kayakuko\ ;
+赤頭巾 > akazukin\ ;
+蜥蜴座 > tokageza\ ;
+警報音 > keihouon\ ;
+大蜥蜴 > ootokage\ ;
+更生期 > kouseiki\ ;
+疑問文 > gimonbun\ ;
+荷為替 > nigawase\ ;
+圧濾器 > atsuroki\ ;
+腎臓炎 > jinzouen\ ;
+線維束 > senisoku\ ;
+寄贈者 > kizousha\ ;
+家庭内 > kateinai\ ;
+落語家 > rakugoka\ ;
+無節操 > musessou\ ;
+容疑者 > yougisha\ ;
+展開図 > tenkaizu\ ;
+私生児 > shiseiji\ ;
+大手筋 > ootesuji\ ;
+公定価 > kouteika\ ;
+気分屋 > kibun''ya\ ;
+一等兵 > ittouhei\ ;
+下水管 > gesuikan\ ;
+整数比 > seisuuhi\ ;
+社務所 > shamusho\ ;
+高層雲 > kousouun\ ;
+常套語 > joutougo\ ;
+船外機 > sengaiki\ ;
+双暗車 > souansha\ ;
+旅客機 > ryokakki\ ;
+運営者 > un''eisha\ ;
+恣意的 > shiiteki\ ;
+破天荒 > hatenkou\ ;
+熱帯夜 > nettaiya\ ;
+達成度 > tasseido\ ;
+多角形 > takakkei\ ;
+入会権 > iriaiken\ ;
+千葉県 > chibaken\ ;
+五月雨 > samidare\ ;
+有頂天 > uchouten\ ;
+準会員 > junkaiin\ ;
+水曜日 > suiyoubi\ ;
+渇水期 > kassuiki\ ;
+競馬場 > keibajou\ ;
+鳩小屋 > hatogoya\ ;
+不正視 > fuseishi\ ;
+四半期 > shihanki\ ;
+熔鉱炉 > youkouro\ ;
+作用点 > sayouten\ ;
+遊園地 > yuuenchi\ ;
+軌道船 > kidousen\ ;
+弁理士 > benrishi\ ;
+麻酔銃 > masuijuu\ ;
+木螺子 > mokuneji\ ;
+歩数計 > hosuukei\ ;
+主題歌 > shudaika\ ;
+正会員 > seikaiin\ ;
+微分法 > bibunhou\ ;
+動員令 > douinrei\ ;
+青瓦台 > seigadai\ ;
+渡船場 > tosenjou\ ;
+意識下 > ishikika\ ;
+保護国 > hogokoku\ ;
+同性愛 > douseiai\ ;
+油圧器 > yuatsuki\ ;
+燕青拳 > enseiken\ ;
+幼年期 > younenki\ ;
+豪華版 > goukaban\ ;
+医原病 > igenbyou\ ;
+電話線 > denwasen\ ;
+冷凍庫 > reitouko\ ;
+還付税 > kanpuzei\ ;
+弁護者 > bengosha\ ;
+電話網 > denwamou\ ;
+登山道 > tozandou\ ;
+重電機 > juudenki\ ;
+不恰好 > bukakkou\ ;
+阿房鳥 > ahoudori\ ;
+予備的 > yobiteki\ ;
+扶助料 > fujoryou\ ;
+猿知恵 > sarudjie\ ;
+地蔵顔 > jizougao\ ;
+作業場 > sagyouba\ ;
+空相場 > kuusouba\ ;
+混合語 > kongougo\ ;
+妥協案 > dakyouan\ ;
+慰謝料 > isharyou\ ;
+無抵抗 > muteikou\ ;
+葉節点 > hasetten\ ;
+他動詞 > tadoushi\ ;
+未成年 > miseinen\ ;
+拘引状 > kouinjou\ ;
+映画狂 > eigakyou\ ;
+法華経 > hokekyou\ ;
+酢料理 > suryouri\ ;
+政府米 > seifumai\ ;
+好結果 > koukekka\ ;
+活性化 > kasseika\ ;
+助言者 > jogonsha\ ;
+裏千家 > urasenke\ ;
+舎利塔 > sharitou\ ;
+不祝儀 > bushuugi\ ;
+過渡的 > katoteki\ ;
+陶芸家 > tougeika\ ;
+作業員 > sagyouin\ ;
+全世界 > zensekai\ ;
+多摩川 > tamagawa\ ;
+微苦笑 > bikushou\ ;
+欺瞞者 > gimansha\ ;
+立法府 > rippoufu\ ;
+被災地 > hisaichi\ ;
+猛打者 > moudasha\ ;
+不祥事 > fushouji\ ;
+結果論 > kekkaron\ ;
+下水溝 > gesuikou\ ;
+水風呂 > mizuburo\ ;
+方位角 > houikaku\ ;
+防塵着 > boujingi\ ;
+既視想 > kishikan\ ;
+口語体 > kougotai\ ;
+幹部会 > kanbukai\ ;
+交際費 > kousaihi\ ;
+手間暇 > temahima\ ;
+武士道 > bushidou\ ;
+魔方陣 > mahoujin\ ;
+葡萄酒 > budoushu\ ;
+冷凍器 > reitouki\ ;
+双子座 > futagoza\ ;
+脱水機 > dassuiki\ ;
+火口原 > kakougen\ ;
+低次元 > teijigen\ ;
+厳冬期 > gentouki\ ;
+丸諳記 > maruanki\ ;
+不退転 > futaiten\ ;
+手土産 > temiyage\ ;
+危険視 > kikenshi\ ;
+舞踊団 > butoudan\ ;
+不決定 > fukettei\ ;
+回帰線 > kaikisen\ ;
+区民税 > kuminzei\ ;
+何番目 > nanbanme\ ;
+脱気水 > dakkisui\ ;
+刑務所 > keimusho\ ;
+健啖家 > kentanka\ ;
+破壊者 > hakaisha\ ;
+自意識 > jiishiki\ ;
+七十路 > nanasoji\ ;
+観自在 > kanjizai\ ;
+遠心機 > enshinki\ ;
+朱印船 > shuinsen\ ;
+洗濯機 > sentakki\ ;
+不動産 > fudousan\ ;
+噴気孔 > funkikou\ ;
+蝦夷松 > ezomatsu\ ;
+鬼刑事 > onikeiji\ ;
+感嘆符 > kantanfu\ ;
+法医学 > houigaku\ ;
+鳥小屋 > torigoya\ ;
+自営業 > jieigyou\ ;
+精錬所 > seirenjo\ ;
+黄菖蒲 > kishoubu\ ;
+亜大陸 > atairiku\ ;
+備考欄 > bikouran\ ;
+未成品 > miseihin\ ;
+片手間 > katatema\ ;
+人間味 > ningenmi\ ;
+無意識 > muishiki\ ;
+投資家 > toushika\ ;
+下水板 > gesuiita\ ;
+馬蹄形 > bateikei\ ;
+全音符 > zen''onpu\ ;
+高輝度 > koukidou\ ;
+不可侵 > fukashin\ ;
+黄口児 > koukouji\ ;
+分科会 > bunkakai\ ;
+蜘蛛膜 > kumomaku\ ;
+事業家 > jigyouka\ ;
+入会地 > iriaichi\ ;
+図書館 > toshokan\ ;
+製版所 > seihanjo\ ;
+東大寺 > toudaiji\ ;
+中位数 > chuuisuu\ ;
+参賀者 > sangasha\ ;
+批准書 > hijunsho\ ;
+舞踏会 > butoukai\ ;
+理化学 > rikagaku\ ;
+登山者 > tozansha\ ;
+助教授 > jokyouju\ ;
+刑務官 > keimukan\ ;
+政務官 > seimukan\ ;
+正義感 > seigikan\ ;
+医薬品 > iyakuhin\ ;
+化粧着 > keshougi\ ;
+火達磨 > hidaruma\ ;
+不徹底 > futettei\ ;
+留守宅 > rusutaku\ ;
+凡試合 > bonshiai\ ;
+万歩計 > manpokei\ ;
+二枚貝 > nimaigai\ ;
+用水路 > yousuiro\ ;
+時計店 > tokeiten\ ;
+固定子 > koteishi\ ;
+有煙炭 > yuuentan\ ;
+講演会 > kouenkai\ ;
+裏鬼門 > urakimon\ ;
+御母様 > okaasama\ ;
+道祖神 > dousojin\ ;
+合法化 > gouhouka\ ;
+首都圏 > shutoken\ ;
+三毛猫 > mikeneko\ ;
+探知機 > tanchiki\ ;
+死火山 > shikazan\ ;
+色模様 > iromoyou\ ;
+糸電話 > itodenwa\ ;
+重大化 > juudaika\ ;
+三段目 > sandanme\ ;
+祭壇座 > saidanza\ ;
+兄弟子 > anideshi\ ;
+運命論 > unmeiron\ ;
+普通科 > futsuuka\ ;
+上古史 > joukoshi\ ;
+預貯金 > yochokin\ ;
+妥当性 > datousei\ ;
+葡萄色 > budouiro\ ;
+排水路 > haisuiro\ ;
+横断面 > oudanmen\ ;
+整経機 > seikeiki\ ;
+事業化 > jigyouka\ ;
+簡体字 > kantaiji\ ;
+可溶片 > kayouhen\ ;
+儀仗兵 > gijouhei\ ;
+陸屋根 > rokuyane\ ;
+座談会 > zadankai\ ;
+帆前船 > homaesen\ ;
+指話法 > shiwahou\ ;
+偽造品 > gizouhin\ ;
+世帯数 > setaisuu\ ;
+一周期 > isshuuki\ ;
+中耳炎 > chuujien\ ;
+富士通 > fujitsuu\ ;
+家屋税 > kaokuzei\ ;
+機動隊 > kidoutai\ ;
+防火線 > boukasen\ ;
+教護院 > kyougoin\ ;
+螺子山 > nejiyama\ ;
+乳児院 > nyuujiin\ ;
+腕時計 > udedokei\ ;
+朱印状 > shuinjou\ ;
+真意義 > shin''igi\ ;
+遊技場 > yuugijou\ ;
+勧工場 > kankouba\ ;
+三冠馬 > sankanba\ ;
+天才児 > tensaiji\ ;
+逆茂木 > sakamogi\ ;
+補充兵 > hojuuhei\ ;
+建議者 > kengisha\ ;
+常夜灯 > jouyatou\ ;
+草屋根 > kusayane\ ;
+権威者 > ken''isha\ ;
+砕岩機 > saiganki\ ;
+葡萄糖 > budoutou\ ;
+白亜館 > hakuakan\ ;
+混和性 > konwasei\ ;
+化粧殿 > kewaiden\ ;
+千分比 > senbunhi\ ;
+時計台 > tokeidai\ ;
+同母姉 > douboshi\ ;
+上得意 > joutokui\ ;
+黄水仙 > kisuisen\ ;
+弱味噌 > yowamiso\ ;
+留守中 > rusuchuu\ ;
+変声期 > henseiki\ ;
+小児科 > shounika\ ;
+三十戸 > sanjikko\ ;
+電離層 > denrisou\ ;
+高踏派 > koutouha\ ;
+理工系 > rikoukei\ ;
+無礼講 > bureikou\ ;
+一周忌 > isshuuki\ ;
+不十分 > fujuubun\ ;
+哺乳期 > honyuuki\ ;
+石油王 > sekiyuou\ ;
+可鎔片 > kayouhen\ ;
+御利益 > goriyaku\ ;
+投書家 > toushoka\ ;
+遺留品 > iryuuhin\ ;
+遺伝病 > idenbyou\ ;
+揚炭機 > youtanki\ ;
+非変換 > hihenkan\ ;
+改正案 > kaiseian\ ;
+高高度 > koukoudo\ ;
+経産婦 > keisanpu\ ;
+赤裸裸 > sekirara\ ;
+混合機 > kongouki\ ;
+寄贈品 > kizouhin\ ;
+夜行性 > yakousei\ ;
+鑽孔機 > sankouki\ ;
+前衛派 > zen''eiha\ ;
+未決算 > mikessan\ ;
+主要部 > shuyoubu\ ;
+避寒地 > hikanchi\ ;
+水垢離 > mizugori\ ;
+委託生 > itakusei\ ;
+警報機 > keihouki\ ;
+温罨法 > on''anpou\ ;
+対応版 > taiouban\ ;
+喇嘛教 > ramakyou\ ;
+遺留分 > iryuubun\ ;
+昆布茶 > konbucha\ ;
+乗算器 > jouzanki\ ;
+葬儀社 > sougisha\ ;
+判検事 > hankenji\ ;
+特異点 > tokuiten\ ;
+保険屋 > hoken''ya\ ;
+不都合 > futsugou\ ;
+所持金 > shojikin\ ;
+虎河豚 > torafugu\ ;
+技能者 > ginousha\ ;
+抗議文 > kougibun\ ;
+既製品 > kiseihin\ ;
+基礎的 > kisoteki\ ;
+貝細工 > kaizaiku\ ;
+黒百合 > kuroyuri\ ;
+茶菓子 > chagashi\ ;
+否定文 > hiteibun\ ;
+弁護士 > bengoshi\ ;
+手裏剣 > shuriken\ ;
+銀時計 > gindokei\ ;
+三連符 > sanrenpu\ ;
+小切子 > kokiriko\ ;
+形而上 > keijijou\ ;
+搭乗員 > toujouin\ ;
+世界観 > sekaikan\ ;
+探知器 > tanchiki\ ;
+倉庫番 > soukoban\ ;
+文科系 > bunkakei\ ;
+能文家 > noubunka\ ;
+弁護団 > bengodan\ ;
+銀世界 > ginsekai\ ;
+普遍性 > fuhensei\ ;
+可溶性 > kayousei\ ;
+匈牙利 > hangarii\ ;
+猿真似 > sarumane\ ;
+猪口才 > chokozai\ ;
+鋳物師 > imonoshi\ ;
+無鉄砲 > muteppou\ ;
+同分母 > doubunbo\ ;
+未消化 > mishouka\ ;
+広東語 > kantongo\ ;
+一私人 > isshijin\ ;
+漢蔵語 > kanzougo\ ;
+二人目 > futarime\ ;
+富士絹 > fujiginu\ ;
+肛門科 > koumonka\ ;
+静電気 > seidenki\ ;
+原動機 > gendouki\ ;
+乾船渠 > kandokku\ ;
+鼓吹者 > kosuisha\ ;
+大和煮 > yamatoni\ ;
+茶道具 > chadougu\ ;
+排気管 > haikikan\ ;
+当事者 > toujisha\ ;
+墓誌銘 > boshimei\ ;
+短水路 > tansuiro\ ;
+喫茶店 > kissaten\ ;
+時間帯 > jikantai\ ;
+無水酸 > musuisan\ ;
+破防法 > habouhou\ ;
+合歓木 > nemunoki\ ;
+聖歌隊 > seikatai\ ;
+印紙税 > inshizei\ ;
+指揮者 > shikisha\ ;
+文房具 > bunbougu\ ;
+保管金 > hokankin\ ;
+最多数 > saitasuu\ ;
+不透明 > futoumei\ ;
+栽培所 > saibaijo\ ;
+林檎酒 > ringoshu\ ;
+母細胞 > bosaibou\ ;
+好打者 > koudasha\ ;
+円筒形 > entoukei\ ;
+摂関家 > sekkanke\ ;
+正規軍 > seikigun\ ;
+常套句 > joutouku\ ;
+未決済 > mikessai\ ;
+絃楽器 > gengakki\ ;
+納戸色 > nandoiro\ ;
+非線形 > hisenkei\ ;
+風呂釜 > furogama\ ;
+弁護人 > bengonin\ ;
+鎮守府 > chinjufu\ ;
+一張羅 > itchoura\ ;
+子会社 > kogaisha\ ;
+不凍港 > futoukou\ ;
+卵塔場 > rantouba\ ;
+中央部 > chuuoubu\ ;
+不凍液 > futoueki\ ;
+天秤座 > tenbinza\ ;
+危険性 > kikensei\ ;
+不凍海 > futoukai\ ;
+登山帽 > tozanbou\ ;
+煎豆腐 > iridoufu\ ;
+券売機 > kenbaiki\ ;
+時間外 > jikangai\ ;
+気候帯 > kikoutai\ ;
+楽器店 > gakkiten\ ;
+不分明 > fubunmei\ ;
+正電気 > seidenki\ ;
+本金庫 > honkinko\ ;
+可鎔性 > kayousei\ ;
+雄弁家 > yuubenka\ ;
+付帯犯 > futaihan\ ;
+西洋碁 > seiyougo\ ;
+戦争後 > sensougo\ ;
+敏腕家 > binwanka\ ;
+中以上 > chuuijou\ ;
+高下駄 > takageta\ ;
+非売品 > hibaihin\ ;
+何代目 > nandaime\ ;
+高架線 > koukasen\ ;
+水面下 > suimenka\ ;
+精油所 > seiyusho\ ;
+東西屋 > touzaiya\ ;
+銅版画 > douhanga\ ;
+炊飯器 > suihanki\ ;
+元帥府 > gensuifu\ ;
+鳥之巣 > torinosu\ ;
+医療車 > iryousha\ ;
+特異性 > tokuisei\ ;
+冬至線 > toujisen\ ;
+穿孔機 > senkouki\ ;
+無蓋車 > mugaisha\ ;
+抵抗器 > teikouki\ ;
+蒸気船 > joukisen\ ;
+非許容 > hikyoyou\ ;
+遠近法 > enkinhou\ ;
+仮定法 > kateihou\ ;
+混合器 > kongouki\ ;
+西洋画 > seiyouga\ ;
+達磨忌 > darumaki\ ;
+畳成語 > jouseigo\ ;
+怪事件 > kaijiken\ ;
+所持者 > shojisha\ ;
+擬人法 > gijinhou\ ;
+準大手 > jun''oote\ ;
+回転機 > kaitenki\ ;
+可哀相 > kawaisou\ ;
+交際家 > kousaika\ ;
+離乳期 > rinyuuki\ ;
+磁性層 > jiseisou\ ;
+越冬隊 > ettoutai\ ;
+譜面台 > fumendai\ ;
+仮小屋 > karigoya\ ;
+目論見 > mokuromi\ ;
+仙花紙 > senkashi\ ;
+演算子 > enzanshi\ ;
+有限個 > yuugenko\ ;
+戸障子 > toshouji\ ;
+可鍛性 > katansei\ ;
+太鼓判 > taikoban\ ;
+海坊主 > umibouzu\ ;
+黍魚子 > kibinago\ ;
+営林署 > eirinsho\ ;
+普辺性 > fuhensei\ ;
+固有値 > koyuuchi\ ;
+遺伝学 > idengaku\ ;
+育種所 > ikushujo\ ;
+金鍍金 > kinmekki\ ;
+鼻風邪 > hanakaze\ ;
+参事官 > sanjikan\ ;
+相談所 > soudanjo\ ;
+無税品 > muzeihin\ ;
+応答能 > outounou\ ;
+検問所 > kenmonjo\ ;
+岡場所 > okabasho\ ;
+地蔵尊 > jizouson\ ;
+空世辞 > karaseji\ ;
+表具屋 > hyouguya\ ;
+弔慰金 > chouikin\ ;
+初産婦 > shosanpu\ ;
+暗記物 > ankimono\ ;
+麻酔剤 > masuizai\ ;
+藪医者 > yabuisha\ ;
+何時頃 > itsugoro\ ;
+二義的 > nigiteki\ ;
+雁皮紙 > ganpishi\ ;
+日和見 > hiyorimi\ ;
+社会部 > shakaibu\ ;
+別世界 > bessekai\ ;
+無名氏 > mumeishi\ ;
+雇傭者 > koyousha\ ;
+絢緞子 > ayadonsu\ ;
+渦状文 > kajoumon\ ;
+自動車 > jidousha\ ;
+除草剤 > josouzai\ ;
+不公正 > fukousei\ ;
+闘技場 > tougijou\ ;
+主記憶 > shukioku\ ;
+鼻下長 > bikachou\ ;
+最大化 > saidaika\ ;
+防炎剤 > bouenzai\ ;
+溶鉱炉 > youkouro\ ;
+何時間 > nanjikan\ ;
+系統樹 > keitouju\ ;
+御自身 > gojishin\ ;
+上菓子 > jougashi\ ;
+被減数 > higensuu\ ;
+星条旗 > seijouki\ ;
+疎水性 > sosuisei\ ;
+自治権 > jichiken\ ;
+逮捕者 > taihosha\ ;
+二頭筋 > nitoukin\ ;
+素浪人 > surounin\ ;
+秋場所 > akibasho\ ;
+船火事 > funakaji\ ;
+育種家 > ikushuka\ ;
+正課外 > seikagai\ ;
+煉瓦塀 > rengabei\ ;
+英文法 > eibunpou\ ;
+未決定 > mikettei\ ;
+首脳部 > shunoubu\ ;
+健康美 > kenkoubi\ ;
+両議院 > ryougiin\ ;
+愛唱歌 > aishouka\ ;
+二本棒 > nihonbou\ ;
+青物屋 > aomonoya\ ;
+仮定形 > kateikei\ ;
+自動詞 > jidoushi\ ;
+便宜上 > bengijou\ ;
+田舎風 > inakafuu\ ;
+朝御飯 > asagohan\ ;
+指揮権 > shikiken\ ;
+設計図 > sekkeizu\ ;
+部外者 > bugaisha\ ;
+葬儀場 > sougijou\ ;
+磁性体 > jiseitai\ ;
+銀本位 > ginhon''i\ ;
+政党員 > seitouin\ ;
+対応値 > taiouchi\ ;
+軍艦旗 > gunkanki\ ;
+二乗根 > nijoukon\ ;
+指揮棒 > shikibou\ ;
+母国語 > bokokugo\ ;
+画用紙 > gayoushi\ ;
+検温器 > ken''onki\ ;
+駆潜艇 > kusentei\ ;
+堕胎罪 > dataizai\ ;
+磁気学 > jikigaku\ ;
+懐炉灰 > kairobai\ ;
+要注意 > youchuui\ ;
+初生児 > shoseiji\ ;
+不鮮明 > fusenmei\ ;
+天鵞絨 > biroudou\ ;
+製糖所 > seitoujo\ ;
+先駆者 > senkusha\ ;
+助成金 > joseikin\ ;
+渡来人 > toraijin\ ;
+速記者 > sokkisha\ ;
+艦載機 > kansaiki\ ;
+無名指 > mumeishi\ ;
+製粉機 > seifunki\ ;
+乱層雲 > ransouun\ ;
+参事会 > sanjikai\ ;
+排気弁 > haikiben\ ;
+正統派 > seitouha\ ;
+補佐役 > hosayaku\ ;
+未配当 > mihaitou\ ;
+是非共 > zehitomo\ ;
+未刊行 > mikankou\ ;
+枢機卿 > suukikei\ ;
+未遂罪 > misuizai\ ;
+文化財 > bunkazai\ ;
+武装船 > busousen\ ;
+記者団 > kishadan\ ;
+御用邸 > goyoutei\ ;
+御先棒 > osakibou\ ;
+定比例 > teihirei\ ;
+富士川 > fujikawa\ ;
+産卵期 > sanranki\ ;
+分相機 > bunsouki\ ;
+上層雲 > jousouun\ ;
+三次元 > sanjigen\ ;
+群馬県 > gunmaken\ ;
+兵站部 > heitanbu\ ;
+不公平 > fukouhei\ ;
+前鼻緒 > maehanao\ ;
+不凍剤 > futouzai\ ;
+物真似 > monomane\ ;
+遊歩道 > yuuhodou\ ;
+可哀想 > kawaisou\ ;
+稟議書 > ringisho\ ;
+無制限 > museigen\ ;
+体育家 > taiikuka\ ;
+分岐駅 > bunkieki\ ;
+医療用 > iryouyou\ ;
+逮捕状 > taihojou\ ;
+過去帳 > kakochou\ ;
+機動性 > kidousei\ ;
+熱風炉 > neppuuro\ ;
+歩行者 > hokousha\ ;
+円錐形 > ensuikei\ ;
+守銭奴 > shusendo\ ;
+道化師 > doukeshi\ ;
+下腹部 > kafukubu\ ;
+反政府 > hanseifu\ ;
+回転儀 > kaitengi\ ;
+上草履 > uwazouri\ ;
+米上院 > beijouin\ ;
+一帳羅 > itchoura\ ;
+朝稽古 > asageiko\ ;
+製粉所 > seifunjo\ ;
+被治者 > hichisha\ ;
+宮田家 > miyatake\ ;
+近衛兵 > konoehei\ ;
+岩手県 > iwateken\ ;
+連隊旗 > rentaiki\ ;
+管楽器 > kangakki\ ;
+謝恩会 > shaonkai\ ;
+養蜂家 > youhouka\ ;
+五線紙 > gosenshi\ ;
+平生着 > heizeigi\ ;
+機帆船 > kihansen\ ;
+非排水 > hihaisui\ ;
+着番号 > kibangou\ ;
+不倫罪 > furinzai\ ;
+飴細工 > amezaiku\ ;
+偽似症 > gijishou\ ;
+大広間 > oohiroma\ ;
+避難者 > hinansha\ ;
+定常波 > teijouha\ ;
+指揮官 > shikikan\ ;
+付属語 > fuzokugo\ ;
+年会費 > nenkaihi\ ;
+故買者 > kobaisha\ ;
+五大洋 > godaiyou\ ;
+珪藻土 > keisoudo\ ;
+人名簿 > jinmeibo\ ;
+排気口 > haikikou\ ;
+避妊法 > hininhou\ ;
+萌木色 > moegiiro\ ;
+特価品 > tokkahin\ ;
+揚抗比 > youkouhi\ ;
+雇用者 > koyousha\ ;
+辞書類 > jishorui\ ;
+大往生 > daioujou\ ;
+追起訴 > tsuikiso\ ;
+過半数 > kahansuu\ ;
+安息日 > ansokubi\ ;
+再浮上 > saifujou\ ;
+図書券 > toshoken\ ;
+発起人 > hokkinin\ ;
+道具論 > douguron\ ;
+分相応 > bunsouou\ ;
+立候補 > rikkouho\ ;
+避暑地 > hishochi\ ;
+接骨木 > niwatoko\ ;
+社会科 > shakaika\ ;
+上機嫌 > joukigen\ ;
+交換所 > koukanjo\ ;
+喜歌劇 > kikageki\ ;
+添加剤 > tenkazai\ ;
+未復員 > mifukuin\ ;
+謙遜語 > kensongo\ ;
+未処置 > mishochi\ ;
+地形図 > chikeizu\ ;
+未知数 > michisuu\ ;
+八潮路 > yashioji\ ;
+代理者 > dairisha\ ;
+軍令部 > gunreibu\ ;
+横文字 > yokomoji\ ;
+太古代 > taikodai\ ;
+幾何学 > kikagaku\ ;
+西洋化 > seiyouka\ ;
+刑余者 > keiyosha\ ;
+渡世人 > toseinin\ ;
+羅針儀 > rashingi\ ;
+子音群 > shiingun\ ;
+暗証化 > anshouka\ ;
+滑走路 > kassouro\ ;
+製図板 > seizuban\ ;
+皇統譜 > koutoufu\ ;
+理学部 > rigakubu\ ;
+英語塾 > eigojuku\ ;
+悲喜劇 > hikigeki\ ;
+保管林 > hokanrin\ ;
+再武装 > saibusou\ ;
+赤蜻蛉 > akatonbo\ ;
+予饌会 > yosenkai\ ;
+無辺際 > muhenzai\ ;
+不自然 > fushizen\ ;
+腎不全 > jinfuzen\ ;
+宴会場 > enkaijou\ ;
+経世家 > keiseika\ ;
+不信者 > fushinja\ ;
+単本位 > tanhon''i\ ;
+円錐台 > ensuidai\ ;
+因果者 > ingamono\ ;
+不信義 > fushingi\ ;
+軍事面 > gunjimen\ ;
+恒河沙 > gougasha\ ;
+創案者 > souansha\ ;
+自治体 > jichitai\ ;
+着尺地 > kijakuji\ ;
+後半期 > kouhanki\ ;
+自治会 > jichikai\ ;
+価値観 > kachikan\ ;
+西遊記 > seiyuuki\ ;
+年代記 > nendaiki\ ;
+感情家 > kanjouka\ ;
+文化祭 > bunkasai\ ;
+変換器 > henkanki\ ;
+世界史 > sekaishi\ ;
+受精卵 > juseiran\ ;
+総指揮 > soushiki\ ;
+年甲斐 > toshigai\ ;
+不充分 > fujuubun\ ;
+泥仕合 > dorojiai\ ;
+清子音 > seishiin\ ;
+二期作 > nikisaku\ ;
+横紋筋 > oumonkin\ ;
+運動界 > undoukai\ ;
+未発見 > mihakken\ ;
+偶像化 > guuzouka\ ;
+補聴器 > hochouki\ ;
+英語劇 > eigogeki\ ;
+電算機 > densanki\ ;
+再吟味 > saiginmi\ ;
+円錐体 > ensuitai\ ;
+予餞会 > yosenkai\ ;
+青天井 > aotenjou\ ;
+非戦論 > hisenron\ ;
+未発行 > mihakkou\ ;
+相場師 > soubashi\ ;
+古戦場 > kosenjou\ ;
+三畳紀 > sanjouki\ ;
+好意的 > kouiteki\ ;
+御馳走 > gochisou\ ;
+扶養者 > fuyousha\ ;
+十字軍 > juujigun\ ;
+按手礼 > anshurei\ ;
+同位角 > douikaku\ ;
+輪転機 > rintenki\ ;
+厭人者 > enjinsha\ ;
+無配当 > muhaitou\ ;
+富裕税 > fuyuuzei\ ;
+過労死 > karoushi\ ;
+紅衛兵 > koueihei\ ;
+管理者 > kanrisha\ ;
+夜商人 > yoakindo\ ;
+舌下腺 > zekkasen\ ;
+所持品 > shojihin\ ;
+紀行文 > kikoubun\ ;
+火山灰 > kazanbai\ ;
+騎士道 > kishidou\ ;
+剰余金 > jouyokin\ ;
+豊水期 > housuiki\ ;
+低能児 > teinouji\ ;
+帰納法 > kinouhou\ ;
+獅子座 > shishiza\ ;
+交換器 > koukanki\ ;
+世界人 > sekaijin\ ;
+衛生隊 > eiseitai\ ;
+理事長 > rijichou\ ;
+平屋根 > hirayane\ ;
+元老院 > genrouin\ ;
+棄権者 > kikensha\ ;
+世界中 > sekaijuu\ ;
+河口港 > kakoukou\ ;
+不体裁 > futeisai\ ;
+毒蜘蛛 > dokugumo\ ;
+単語篇 > tangohen\ ;
+生徒数 > seitosuu\ ;
+羊皮紙 > youhishi\ ;
+母系制 > bokeisei\ ;
+展示場 > tenjijou\ ;
+後遺症 > kouishou\ ;
+不定詞 > futeishi\ ;
+加担者 > katansha\ ;
+陽電気 > youdenki\ ;
+宣伝費 > sendenhi\ ;
+劇映画 > gekieiga\ ;
+無常観 > mujoukan\ ;
+遊蕩児 > yuutouji\ ;
+金満家 > kinmanka\ ;
+錠前屋 > joumaeya\ ;
+知名度 > chimeido\ ;
+出鱈目 > detarame\ ;
+懇話会 > konwakai\ ;
+避難民 > hinanmin\ ;
+十字街 > juujigai\ ;
+主演者 > shuensha\ ;
+世俗化 > sezokuka\ ;
+粗製品 > soseihin\ ;
+右心房 > ushinbou\ ;
+圧制者 > asseisha\ ;
+展示品 > tenjihin\ ;
+書記官 > shokikan\ ;
+郷土愛 > kyoudoai\ ;
+貯蔵庫 > chozouko\ ;
+下馬評 > gebahyou\ ;
+不能者 > funousha\ ;
+不良化 > furyouka\ ;
+薄荷糖 > hakkatou\ ;
+薄荷精 > hakkasei\ ;
+比喩的 > hiyuteki\ ;
+争議権 > sougiken\ ;
+重禁錮 > juukinko\ ;
+運動欄 > undouran\ ;
+普偏性 > fuhensei\ ;
+農繁期 > nouhanki\ ;
+感受性 > kanjusei\ ;
+兵器工 > heikikou\ ;
+倪雲林 > geiunrin\ ;
+運送船 > unsousen\ ;
+遊冶郎 > yuuyarou\ ;
+画仙紙 > gasenshi\ ;
+多段階 > tadankai\ ;
+試験機 > shikenki\ ;
+一般論 > ippanron\ ;
+加算税 > kasanzei\ ;
+分岐線 > bunkisen\ ;
+喇叭手 > rappashu\ ;
+免罪符 > menzaifu\ ;
+犬黄楊 > inutsuge\ ;
+厭世観 > enseikan\ ;
+半世紀 > hanseiki\ ;
+酵母菌 > koubokin\ ;
+冷罨法 > reianpou\ ;
+愛蔵版 > aizouban\ ;
+御偉方 > oeragata\ ;
+記数法 > kisuuhou\ ;
+空下手 > karaheta\ ;
+不健康 > fukenkou\ ;
+探検家 > tankenka\ ;
+大気圏 > taikiken\ ;
+獅子吼 > shishiku\ ;
+代理権 > dairiken\ ;
+物件費 > bukkenhi\ ;
+正規兵 > seikihei\ ;
+再配布 > saihaifu\ ;
+四畳半 > yojouhan\ ;
+展示会 > tenjikai\ ;
+大都市 > daitoshi\ ;
+先学期 > sengakki\ ;
+悪洒落 > warujare\ ;
+自民党 > jimintou\ ;
+医療品 > iryouhin\ ;
+内沙汰 > uchizata\ ;
+分光器 > bunkouki\ ;
+親不孝 > oyafukou\ ;
+縁起物 > engimono\ ;
+流星雨 > ryuuseiu\ ;
+年貢米 > nengumai\ ;
+洗浄器 > senjouki\ ;
+油送船 > yusousen\ ;
+循環器 > junkanki\ ;
+健康児 > kenkouji\ ;
+税理士 > zeirishi\ ;
+人情味 > ninjoumi\ ;
+嫌疑者 > kengisha\ ;
+等語線 > tougosen\ ;
+十字線 > juujisen\ ;
+不使用 > fushiyou\ ;
+一生面 > isseimen\ ;
+旅行記 > ryokouki\ ;
+個体群 > kotaigun\ ;
+口蓋音 > kougaion\ ;
+圧延機 > atsuenki\ ;
+和声法 > waseihou\ ;
+高頻度 > kouhindo\ ;
+小豆色 > azukiiro\ ;
+厳美渓 > genbikei\ ;
+火山弾 > kazandan\ ;
+半諧音 > hankaion\ ;
+消化器 > shoukaki\ ;
+求法者 > guhousha\ ;
+火山帯 > kazantai\ ;
+下駄箱 > getabako\ ;
+芝海老 > shibaebi\ ;
+大分県 > ooitaken\ ;
+山羊髭 > yagihige\ ;
+瀬戸際 > setogiwa\ ;
+火山島 > kazantou\ ;
+不審火 > fushinbi\ ;
+奉仕女 > houshime\ ;
+火山岩 > kazangan\ ;
+玉砂利 > tamajari\ ;
+一分半 > ippunhan\ ;
+花鳥画 > kachouga\ ;
+無菌法 > mukinhou\ ;
+無免許 > mumenkyo\ ;
+待避線 > taihisen\ ;
+等時性 > toujisei\ ;
+年賀状 > nengajou\ ;
+古参者 > kosansha\ ;
+感歎符 > kantanfu\ ;
+分岐点 > bunkiten\ ;
+侍従官 > jijuukan\ ;
+内野手 > naiyashu\ ;
+油送管 > yusoukan\ ;
+不用心 > buyoujin\ ;
+誘蛾灯 > yuugatou\ ;
+計理士 > keirishi\ ;
+雑貨店 > zakkaten\ ;
+座右銘 > zayuumei\ ;
+子音性 > shiinsei\ ;
+期待感 > kitaikan\ ;
+運動家 > undousha\ ;
+愚連隊 > gurentai\ ;
+原子雲 > genshiun\ ;
+代理店 > dairiten\ ;
+諸器械 > shokikai\ ;
+操舵手 > soudashu\ ;
+出歯亀 > debakame\ ;
+不健全 > fukenzen\ ;
+相補性 > souhosei\ ;
+自転車 > jitensha\ ;
+初期値 > shokichi\ ;
+接頭辞 > settouji\ ;
+生徒会 > seitokai\ ;
+赤裸々 > sekirara\ ;
+預言者 > yogensha\ ;
+開催日 > kaisaibi\ ;
+胴間声 > doumagoe\ ;
+背番号 > sebangou\ ;
+浮浪者 > furousha\ ;
+会員券 > kaiinken\ ;
+会員制 > kaiinsei\ ;
+英米法 > eibeihou\ ;
+合理論 > gouriron\ ;
+大部分 > daibubun\ ;
+五角形 > gokakkei\ ;
+社会化 > shakaika\ ;
+中規模 > chuukibo\ ;
+大都会 > daitokai\ ;
+護送車 > gosousha\ ;
+重手代 > omotedai\ ;
+広報部 > kouhoubu\ ;
+創世記 > souseiki\ ;
+三杯酢 > sanbaizu\ ;
+節炭器 > settanki\ ;
+希望者 > kibousha\ ;
+外科学 > gekagaku\ ;
+刑事犯 > keijihan\ ;
+配線図 > haisenzu\ ;
+機械論 > kikairon\ ;
+川秋沙 > kawaaisa\ ;
+文化圏 > bunkaken\ ;
+接頭語 > settougo\ ;
+事故歴 > jikoreki\ ;
+山小屋 > yamagoya\ ;
+糸蜻蛉 > itotonbo\ ;
+移転先 > itensaki\ ;
+大勲位 > daikun''i\ ;
+大目玉 > oomedama\ ;
+官公吏 > kankouri\ ;
+協議員 > kyougiin\ ;
+軍事犯 > gunjihan\ ;
+随行員 > zuikouin\ ;
+一辺倒 > ippentou\ ;
+現代語 > gendaigo\ ;
+聴音機 > chouonki\ ;
+不導性 > fudousei\ ;
+理容師 > riyoushi\ ;
+乱高下 > rankouge\ ;
+叙情詩 > jojoushi\ ;
+社交家 > shakouka\ ;
+文化史 > bunkashi\ ;
+不用品 > fuyouhin\ ;
+透明度 > toumeido\ ;
+不定法 > futeihou\ ;
+温排水 > onhaisui\ ;
+天花粉 > tenkafun\ ;
+航空路 > koukuuro\ ;
+資産家 > shisanka\ ;
+類似点 > ruijiten\ ;
+淡水湖 > tansuiko\ ;
+予言者 > yogensha\ ;
+広報課 > kouhouka\ ;
+小人数 > koninzuu\ ;
+愛知県 > aichiken\ ;
+人造藍 > jinzouai\ ;
+医学者 > igakusha\ ;
+悪感情 > akkanjou\ ;
+仮納金 > kanoukin\ ;
+未処分 > mishobun\ ;
+差配人 > sahainin\ ;
+低頻度 > teihindo\ ;
+作為犯 > sakuihan\ ;
+歯科用 > shikayou\ ;
+再処理 > saishori\ ;
+運動会 > undoukai\ ;
+花茣蓙 > hanagoza\ ;
+玄武岩 > genbugan\ ;
+液状化 > ekijouka\ ;
+無利息 > murisoku\ ;
+陣羽織 > jinbaori\ ;
+戦闘機 > sentouki\ ;
+有意的 > yuuiteki\ ;
+問題児 > mondaiji\ ;
+債務者 > saimusha\ ;
+一騎討 > ikkiuchi\ ;
+補給路 > hokyuuro\ ;
+下層土 > kasoudo\ ;
+起動機 > kidouki\ ;
+十字架 > juujika\ ;
+人工雨 > jinkouu\ ;
+餓鬼道 > gakidou\ ;
+不定期 > futeiki\ ;
+模擬店 > mogiten\ ;
+古武道 > kobudou\ ;
+栄養素 > eiyouso\ ;
+身勝手 > migatte\ ;
+無利子 > murishi\ ;
+瑠璃色 > ruriiro\ ;
+胃腸炎 > ichouen\ ;
+起動時 > kidouji\ ;
+殺陣師 > tateshi\ ;
+類義語 > ruigigo\ ;
+家計簿 > kakeibo\ ;
+登記簿 > toukibo\ ;
+重母音 > juuboin\ ;
+遅知恵 > osodjie\ ;
+大過去 > daikako\ ;
+加算器 > kasanki\ ;
+大相撲 > oozumou\ ;
+機能語 > kinougo\ ;
+有気音 > yuukion\ ;
+不条理 > fujouri\ ;
+大道具 > oodougu\ ;
+定位置 > teiichi\ ;
+運送屋 > unsouya\ ;
+造営費 > zoueihi\ ;
+蒙古語 > moukogo\ ;
+機械科 > kikaika\ ;
+次年度 > jinendo\ ;
+多重化 > tajuuka\ ;
+千代女 > chiyojo\ ;
+古社寺 > koshaji\ ;
+一層目 > issoume\ ;
+娑婆気 > shabake\ ;
+励磁機 > reijiki\ ;
+不首尾 > fushubi\ ;
+悪感化 > akkanka\ ;
+待避所 > taihijo\ ;
+四股名 > shikona\ ;
+不人気 > funinki\ ;
+西欧化 > seiouka\ ;
+二階屋 > nikaiya\ ;
+棒暗記 > bouanki\ ;
+不一致 > fuitchi\ ;
+血反吐 > chihedo\ ;
+曳火弾 > eikadan\ ;
+二階家 > nikaiya\ ;
+簡素化 > kansoka\ ;
+個体差 > kotaisa\ ;
+同音語 > douongo\ ;
+乗務員 > joumuin\ ;
+裏木戸 > urakido\ ;
+金毘羅 > konpira\ ;
+無造作 > muzousa\ ;
+十二時 > juuniji\ ;
+意想外 > isougai\ ;
+不安定 > fuantei\ ;
+陰電気 > indenki\ ;
+薄馬鹿 > usubaka\ ;
+丁字路 > teijiro\ ;
+提示部 > teijibu\ ;
+慰問品 > imonhin\ ;
+親文字 > oyamoji\ ;
+理財家 > rizaika\ ;
+稽古日 > keikobi\ ;
+二塁打 > niruida\ ;
+手相見 > tesoumi\ ;
+夜盗蛾 > yotouga\ ;
+女性美 > joseibi\ ;
+風邪声 > kazegoe\ ;
+厭世家 > enseika\ ;
+熨斗目 > noshime\ ;
+陰謀家 > inbouka\ ;
+随意筋 > zuiikin\ ;
+手加減 > tekagen\ ;
+讚美歌 > sanbika\ ;
+同位体 > douitai\ ;
+類音語 > ruiongo\ ;
+叉手網 > sadeami\ ;
+小綬鶏 > kojukei\ ;
+晴雨計 > seiukei\ ;
+文庫化 > bunkoka\ ;
+野次馬 > yajiuma\ ;
+街路樹 > gairoju\ ;
+控訴院 > kousoin\ ;
+仙人掌 > saboten\ ;
+義援金 > gienkin\ ;
+俯瞰図 > fukanzu\ ;
+御新香 > oshinko\ ;
+御家人 > gokenin\ ;
+大寺院 > daijiin\ ;
+烏羽玉 > ubatama\ ;
+性行為 > seikoui\ ;
+一般化 > ippanka\ ;
+十五夜 > juugoya\ ;
+二院制 > niinsei\ ;
+家政婦 > kaseifu\ ;
+第二義 > dainigi\ ;
+真魚板 > manaita\ ;
+円軌道 > enkidou\ ;
+野葡萄 > nobudou\ ;
+応募者 > oubosha\ ;
+麻実油 > asamiyu\ ;
+茶飯事 > sahanji\ ;
+八重雲 > yaeguma\ ;
+未踏査 > mitousa\ ;
+絵葉書 > ehagaki\ ;
+稽古場 > keikoba\ ;
+安全期 > anzenki\ ;
+反意語 > han''igo\ ;
+個人差 > kojinsa\ ;
+総務部 > soumubu\ ;
+警部補 > keibuho\ ;
+与太郎 > yotarou\ ;
+位牌堂 > ihaidou\ ;
+義太夫 > gidayuu\ ;
+三鞭酒 > shanpen\ ;
+妃殿下 > hidenka\ ;
+漫画家 > mangaka\ ;
+不本意 > fuhon''i\ ;
+歩合算 > buaizan\ ;
+語彙的 > goiteki\ ;
+第一課 > daiikka\ ;
+井戸端 > idobata\ ;
+理事会 > rijikai\ ;
+火曜日 > kayoubi\ ;
+御不浄 > gofujou\ ;
+未定義 > miteigi\ ;
+対位法 > taiihou\ ;
+浮浪児 > furouji\ ;
+婦人科 > fujinka\ ;
+他世界 > tasekai\ ;
+慰労金 > iroukin\ ;
+理不尽 > rifujin\ ;
+単坐機 > tanzaki\ ;
+不飽和 > fuhouwa\ ;
+代議員 > daigiin\ ;
+非合理 > higouri\ ;
+総務課 > soumuka\ ;
+椰子油 > yashiyu\ ;
+水泳着 > suieigi\ ;
+絵草紙 > ezoushi\ ;
+小犬座 > koinuza\ ;
+赤味噌 > akamiso\ ;
+対義語 > taigigo\ ;
+汚染菌 > osenkin\ ;
+三日路 > mikkaji\ ;
+居酒屋 > izakaya\ ;
+自家製 > jikasei\ ;
+塗布剤 > tofuzai\ ;
+古典語 > kotengo\ ;
+義捐金 > gienkin\ ;
+不景気 > fukeiki\ ;
+合理化 > gourika\ ;
+拉丁語 > ratengo\ ;
+電磁波 > denjiha\ ;
+電磁気 > denjiki\ ;
+安全器 > anzenki\ ;
+機械化 > kikaika\ ;
+栄養価 > eiyouka\ ;
+第二次 > dainiji\ ;
+井戸水 > idomizu\ ;
+一個人 > ikkojin\ ;
+亡祖父 > bousofu\ ;
+御朱印 > goshuin\ ;
+異性体 > iseitai\ ;
+非同期 > hidouki\ ;
+十露盤 > soroban\ ;
+筆記具 > hikkigu\ ;
+穏健派 > onkenha\ ;
+育児園 > ikujien\ ;
+電気炉 > denkiro\ ;
+依存性 > izonsei\ ;
+比叡山 > hieizan\ ;
+依頼者 > iraisha\ ;
+製油所 > seiyujo\ ;
+基本語 > kihongo\ ;
+御三家 > gosanke\ ;
+五節句 > gosekku\ ;
+誤動作 > godousa\ ;
+影印本 > eiinhon\ ;
+経営費 > keieihi\ ;
+円相場 > ensouba\ ;
+被疑者 > higisha\ ;
+放火魔 > houkama\ ;
+不断着 > fudangi\ ;
+聖路加 > seiroka\ ;
+下線部 > kasenbu\ ;
+多次元 > tajigen\ ;
+似非者 > esemono\ ;
+脳外科 > nougeka\ ;
+御下問 > gokamon\ ;
+膃肭臍 > ottosei\ ;
+女性器 > joseiki\ ;
+孵卵器 > furanki\ ;
+無理解 > murikai\ ;
+父性愛 > fuseiai\ ;
+非武装 > hibusou\ ;
+同父母 > doufubo\ ;
+女性化 > joseika\ ;
+無期限 > mukigen\ ;
+自家用 > jikayou\ ;
+家系図 > kakeizu\ ;
+一世紀 > isseiki\ ;
+自由度 > jiyuudo\ ;
+汚染源 > osengen\ ;
+依頼状 > iraijou\ ;
+第一歩 > daiippo\ ;
+微塵子 > mijinko\ ;
+贔屓目 > hiikime\ ;
+電磁場 > denjiba\ ;
+一体化 > ittaika\ ;
+御日様 > ohisama\ ;
+音羽屋 > otowaya\ ;
+医院長 > iinchou\ ;
+印欧語 > in''ougo\ ;
+出来秋 > dekiaki\ ;
+飛行機 > hikouki\ ;
+無作為 > musakui\ ;
+都市部 > toshibu\ ;
+座蒲団 > zabuton\ ;
+放課後 > houkago\ ;
+一本気 > ippongi\ ;
+電気屋 > denkiya\ ;
+未来派 > miraiha\ ;
+栄誉礼 > eiyorei\ ;
+糖衣錠 > touijou\ ;
+理論家 > rironka\ ;
+打楽器 > dagakki\ ;
+無作法 > busahou\ ;
+仁王門 > nioumon\ ;
+古典派 > kotenha\ ;
+素封家 > sohouka\ ;
+歩合制 > buaisei\ ;
+魚河岸 > uogashi\ ;
+自由化 > jiyuuka\ ;
+授産所 > jusanjo\ ;
+駆動機 > kudouki\ ;
+二箇所 > nikasho\ ;
+違犯者 > ihansha\ ;
+自画像 > jigazou\ ;
+形意拳 > keiiken\ ;
+母性愛 > boseiai\ ;
+井戸側 > idogawa\ ;
+破砕機 > hasaiki\ ;
+違警罪 > ikeizai\ ;
+希土類 > kidorui\ ;
+亜鉛引 > aenbiki\ ;
+太宰府 > dazaifu\ ;
+伊達者 > datesha\ ;
+送話器 > souwaki\ ;
+伴天連 > bateren\ ;
+亜麻布 > amanuno\ ;
+女郎屋 > jorouya\ ;
+噴霧器 > funmuki\ ;
+英単語 > eitango\ ;
+荷馬車 > nibasha\ ;
+擬態語 > gitaigo\ ;
+異邦人 > ihoujin\ ;
+怪我人 > keganin\ ;
+効果音 > koukaon\ ;
+墓碑銘 > bohimei\ ;
+飛行家 > hikouka\ ;
+火熨斗 > hinoshi\ ;
+優位性 > yuuisei\ ;
+無趣味 > mushumi\ ;
+過現未 > kagenmi\ ;
+長椅子 > nagaisu\ ;
+聾唖者 > rouasha\ ;
+文字盤 > mojiban\ ;
+五十音 > gojuuon\ ;
+天婦羅 > tenpura\ ;
+寝道具 > nedougu\ ;
+異分子 > ibunshi\ ;
+自販機 > jihanki\ ;
+八重垣 > yaegaki\ ;
+無価値 > mukachi\ ;
+人事院 > jinjiin\ ;
+不夜城 > fuyajou\ ;
+美丈夫 > bijoufu\ ;
+易損品 > isonhin\ ;
+尼僧院 > nisouin\ ;
+無理数 > murisuu\ ;
+無韻詩 > muinshi\ ;
+多様化 > tayouka\ ;
+甲斐性 > kaishou\ ;
+屋根裏 > yaneura\ ;
+暴風雨 > boufuuu\ ;
+生理日 > seiribi\ ;
+分限者 > bugenja\ ;
+人事部 > jinjibu\ ;
+鸚鵡貝 > oumugai\ ;
+一丁字 > itteiji\ ;
+分離派 > bunriha\ ;
+小細工 > kozaiku\ ;
+暗号化 > angouka\ ;
+印度洋 > indoyou\ ;
+塩素酸 > ensosan\ ;
+依頼人 > irainin\ ;
+父母会 > fubokai\ ;
+飲酒家 > inshuka\ ;
+不認可 > funinka\ ;
+慰労会 > iroukai\ ;
+豆腐屋 > toufuya\ ;
+分離機 > bunriki\ ;
+火炎瓶 > kaenbin\ ;
+御多分 > gotabun\ ;
+臨時費 > rinjihi\ ;
+大太鼓 > oodaiko\ ;
+如何程 > ikahodo\ ;
+牡牛座 > oushiza\ ;
+加工費 > kakouhi\ ;
+人事課 > jinjika\ ;
+野良犬 > norainu\ ;
+讃美歌 > sanbika\ ;
+日本間 > nihonma\ ;
+大豆油 > daizuyu\ ;
+児童画 > jidouga\ ;
+演舞場 > enbujou\ ;
+似非事 > esegoto\ ;
+不結果 > fukekka\ ;
+地下化 > chikaka\ ;
+八百長 > yaochou\ ;
+過飽和 > kahouwa\ ;
+早少女 > saotome\ ;
+如何物 > ikamono\ ;
+版画家 > hangaka\ ;
+愛飲者 > aiinsha\ ;
+安定器 > anteiki\ ;
+駄菓子 > dagashi\ ;
+唐胡麻 > tougoma\ ;
+停音符 > teionpu\ ;
+園芸家 > engeika\ ;
+投影機 > toueiki\ ;
+英吉利 > igirisu\ ;
+座布団 > zabuton\ ;
+無声音 > museion\ ;
+唐茄子 > tounasu\ ;
+日本語 > nihongo\ ;
+従三位 > jusanmi\ ;
+婦女子 > fujoshi\ ;
+工事費 > koujihi\ ;
+温度計 > ondokei\ ;
+安定化 > anteika\ ;
+法螺貝 > horagai\ ;
+非常時 > hijouji\ ;
+八千代 > yachiyo\ ;
+不細工 > busaiku\ ;
+余水路 > yosuiro\ ;
+相違点 > souiten\ ;
+曼荼羅 > mandara\ ;
+地雷火 > jiraika\ ;
+公務員 > koumuin\ ;
+案山子 > kakashi\ ;
+古代語 > kodaigo\ ;
+生一本 > kiippon\ ;
+身贔屓 > mibiiki\ ;
+未整理 > miseiri\ ;
+予科生 > yokasei\ ;
+未経過 > mikeika\ ;
+海松貝 > mirugai\ ;
+兵児帯 > hekoobi\ ;
+身奇麗 > migirei\ ;
+検査員 > kensain\ ;
+危機感 > kikikan\ ;
+赤茄子 > akanasu\ ;
+端武者 > hamusha\ ;
+印度人 > indojin\ ;
+内安打 > naianda\ ;
+屋根板 > yaneita\ ;
+無期刑 > mukikei\ ;
+記念碑 > kinenhi\ ;
+都市化 > toshika\ ;
+府知事 > fuchiji\ ;
+内耳炎 > naijien\ ;
+北京語 > pekingo\ ;
+犬小屋 > inugoya\ ;
+彼岸会 > higan''e\ ;
+相弟子 > aideshi\ ;
+鳳凰座 > hououza\ ;
+咽頭炎 > intouen\ ;
+投影図 > toueizu\ ;
+不衛生 > fueisei\ ;
+整理部 > seiribu\ ;
+入母屋 > irimoya\ ;
+多趣味 > tashumi\ ;
+音記号 > onkigou\ ;
+小坊主 > kobouzu\ ;
+日本画 > nihonga\ ;
+紀元後 > kigengo\ ;
+体温器 > taionki\ ;
+微温湯 > biontou\ ;
+貴婦人 > kifujin\ ;
+右大臣 > udaijin\ ;
+帰化人 > kikajin\ ;
+戦後派 > sengoha\ ;
+受像機 > juzouki\ ;
+記念樹 > kinenju\ ;
+粉微塵 > komijin\ ;
+為政者 > iseisha\ ;
+大犬座 > ooinuza\ ;
+日時計 > hidokei\ ;
+時事論 > jijiron\ ;
+保養院 > hoyouin\ ;
+自然薯 > jinenjo\ ;
+保健所 > hokenjo\ ;
+離弁花 > ribenka\ ;
+次世代 > jisedai\ ;
+不器用 > bukiyou\ ;
+手奇麗 > tegirei\ ;
+塩基性 > enkisei\ ;
+記念日 > kinenbi\ ;
+高祖父 > kousofu\ ;
+今日中 > kyoujuu\ ;
+身綺麗 > migirei\ ;
+萎黄病 > ioubyou\ ;
+擬古文 > gikobun\ ;
+地衣類 > chiirui\ ;
+婆羅門 > baramon\ ;
+秘書課 > hishoka\ ;
+印画紙 > ingashi\ ;
+予想屋 > yosouya\ ;
+慈善家 > jizenka\ ;
+早乙女 > saotome\ ;
+土曜日 > doyoubi\ ;
+降雨林 > kouurin\ ;
+朝風呂 > asaburo\ ;
+再下付 > saikafu\ ;
+洋画家 > yougaka\ ;
+定規座 > jougiza\ ;
+需用家 > juyouka\ ;
+保健婦 > hokenfu\ ;
+高祖母 > kousobo\ ;
+外耳炎 > gaijien\ ;
+不裁可 > fusaika\ ;
+警備員 > keibiin\ ;
+誤作動 > gosadou\ ;
+仮名本 > kanahon\ ;
+助産所 > josanjo\ ;
+大時代 > oojidai\ ;
+枸櫞酸 > kuensan\ ;
+虚無僧 > komusou\ ;
+嬰記号 > eikigou\ ;
+保健医 > hoken''i\ ;
+二十歳 > hatachi\ ;
+頭字語 > toujigo\ ;
+木太刀 > kidachi\ ;
+蓮華座 > rengeza\ ;
+愛書家 > aishoka\ ;
+馬刀貝 > mategai\ ;
+趣意書 > shuisho\ ;
+運搬費 > unpanhi\ ;
+攘夷論 > jouiron\ ;
+懐疑派 > kaigiha\ ;
+無煙炭 > muentan\ ;
+安静時 > anseiji\ ;
+女生徒 > joseito\ ;
+虎燕拳 > koenken\ ;
+正常位 > seijoui\ ;
+補助金 > hojokin\ ;
+阿婆擦 > abazure\ ;
+二十日 > hatsuka\ ;
+琵琶行 > biwakou\ ;
+秘書科 > hishoka\ ;
+助産婦 > josanpu\ ;
+修羅場 > shuraba\ ;
+手一杯 > teippai\ ;
+無線機 > musenki\ ;
+万灯会 > mandoue\ ;
+手綺麗 > tegirei\ ;
+水位計 > suiikei\ ;
+漢方医 > kanpoui\ ;
+羽目板 > hameita\ ;
+具体案 > gutaian\ ;
+日本化 > nihonka\ ;
+研磨機 > kenmaki\ ;
+大雑把 > oozappa\ ;
+古井戸 > furuido\ ;
+胃潰瘍 > ikaiyou\ ;
+多義性 > tagisei\ ;
+甘露煮 > kanroni\ ;
+乙女座 > otomeza\ ;
+保守派 > hoshuha\ ;
+叙事詩 > jojishi\ ;
+大掃除 > oosouji\ ;
+烏龍茶 > ūroncha\ ;
+女王蟻 > joouari\ ;
+半母音 > hanboin\ ;
+無政府 > museifu\ ;
+義和団 > giwadan\ ;
+好事家 > kouzuka\ ;
+行為者 > kouisha\ ;
+機関庫 > kikanko\ ;
+機関座 > kikanza\ ;
+同意見 > douiken\ ;
+議事堂 > gijidou\ ;
+天糸瓜 > hechima\ ;
+保安林 > hoanrin\ ;
+腐葉土 > fuyoudo\ ;
+海豚座 > irukaza\ ;
+自衛隊 > jieitai\ ;
+繊維素 > sen''iso\ ;
+移行性 > ikousei\ ;
+湯湯婆 > yutanpo\ ;
+交尾期 > koubiki\ ;
+陶磁器 > toujiki\ ;
+重馬場 > omobaba\ ;
+歳時記 > saijiki\ ;
+阿多福 > otafuku\ ;
+御節介 > osekkai\ ;
+菓子屋 > kashiya\ ;
+番小屋 > bangoya\ ;
+愛犬家 > aikenka\ ;
+耽美派 > tanbiha\ ;
+保育所 > hoikujo\ ;
+遊離基 > yuuriki\ ;
+互助会 > gojokai\ ;
+補助線 > hojosen\ ;
+事務所 > jimusho\ ;
+保護金 > hogokin\ ;
+菓子器 > kashiki\ ;
+愛妻家 > aisaika\ ;
+養父母 > youfubo\ ;
+起電機 > kidenki\ ;
+二死後 > nishigo\ ;
+葉牡丹 > habotan\ ;
+已然形 > izenkei\ ;
+単座機 > tanzaki\ ;
+大規模 > daikibo\ ;
+具体化 > gutaika\ ;
+保安官 > hoankan\ ;
+野獣派 > yajuuha\ ;
+電位差 > den''isa\ ;
+非対応 > hitaiou\ ;
+蓖麻子 > himashi\ ;
+裸体画 > rataiga\ ;
+事務官 > jimukan\ ;
+起訴状 > kisojou\ ;
+野暮用 > yaboyou\ ;
+無灯火 > mutouka\ ;
+無記名 > mukimei\ ;
+都議選 > togisen\ ;
+保育園 > hoikuen\ ;
+保育器 > hoikuki\ ;
+愛好家 > aikouka\ ;
+委任状 > ininjou\ ;
+用器画 > youkiga\ ;
+保養所 > hoyoujo\ ;
+家庭科 > kateika\ ;
+不名誉 > fumeiyo\ ;
+五輪旗 > gorinki\ ;
+作業衣 > sagyoui\ ;
+木戸銭 > kidosen\ ;
+耳下腺 > jikasen\ ;
+家庭着 > kateigi\ ;
+外陰部 > gaiinbu\ ;
+和菓子 > wagashi\ ;
+自在画 > jizaiga\ ;
+耕運機 > kouunki\ ;
+一回忌 > ikkaiki\ ;
+不可解 > fukakai\ ;
+不可視 > fukashi\ ;
+総理府 > sourifu\ ;
+二分木 > nibungi\ ;
+広辞苑 > koujien\ ;
+多数派 > tasuuha\ ;
+保護者 > hogosha\ ;
+夜間部 > yakanbu\ ;
+留守電 > rusuden\ ;
+掃除機 > soujiki\ ;
+事務会 > jimukai\ ;
+事前後 > jizengo\ ;
+菩提樹 > bodaiju\ ;
+貝独楽 > baigoma\ ;
+無防備 > muboubi\ ;
+不思議 > fushigi\ ;
+不穏当 > fuontou\ ;
+可塑材 > kasozai\ ;
+梳綿機 > somenki\ ;
+無手順 > mutejun\ ;
+尾状花 > bijouka\ ;
+便利屋 > benriya\ ;
+予知夢 > yochimu\ ;
+御神籤 > omikuji\ ;
+映写機 > eishaki\ ;
+保護税 > hogozei\ ;
+叙事文 > jojibun\ ;
+英会話 > eikaiwa\ ;
+不可能 > fukanou\ ;
+映画館 > eigakan\ ;
+風雲児 > fuuunji\ ;
+楕円形 > daenkei\ ;
+演奏家 > ensouka\ ;
+可塑性 > kasosei\ ;
+被除数 > hijosuu\ ;
+二次元 > nijigen\ ;
+手文庫 > tebunko\ ;
+一箇所 > ikkasho\ ;
+予備隊 > yobitai\ ;
+疑問符 > gimonfu\ ;
+固定費 > koteihi\ ;
+明治座 > meijiza\ ;
+理想家 > risouka\ ;
+土壇場 > dotanba\ ;
+二次会 > nijikai\ ;
+義務感 > gimukan\ ;
+三叉路 > sansaro\ ;
+波布茶 > habucha\ ;
+不愛想 > buaisou\ ;
+一箇年 > ikkanen\ ;
+予備金 > yobikin\ ;
+不可知 > fukachi\ ;
+菩提寺 > bodaiji\ ;
+硫黄山 > iouyama\ ;
+素因数 > soinsuu\ ;
+仏蘭西 > furansu\ ;
+不合理 > fugouri\ ;
+掃除婦 > soujifu\ ;
+野暮天 > yaboten\ ;
+家具等 > kagutou\ ;
+薔薇色 > barairo\ ;
+不愉快 > fuyukai\ ;
+農機具 > noukigu\ ;
+輸送費 > yusouhi\ ;
+看護婦 > kangofu\ ;
+御神火 > gojinka\ ;
+予備軍 > yobigun\ ;
+古文書 > komonjo\ ;
+自衛権 > jieiken\ ;
+掃除器 > soujiki\ ;
+理想化 > risouka\ ;
+合氣道 > aikidou\ ;
+点火器 > tenkaki\ ;
+羽二重 > habutae\ ;
+規準化 > kijunka\ ;
+高度差 > koudosa\ ;
+合気道 > aikidou\ ;
+無器用 > bukiyou\ ;
+寄付金 > kifukin\ ;
+火口湖 > kakouko\ ;
+政治屋 > seijiya\ ;
+個々人 > kokojin\ ;
+可塑剤 > kasozai\ ;
+政治家 > seijika\ ;
+運営費 > un''eihi\ ;
+蝦夷菊 > ezogiku\ ;
+保護林 > hogorin\ ;
+木戸番 > kidoban\ ;
+浅知恵 > asadjie\ ;
+青豌豆 > aoendou\ ;
+女丈夫 > jojoubu\ ;
+円記号 > enkigou\ ;
+亜寒帯 > akantai\ ;
+江戸川 > edogawa\ ;
+比電荷 > hidenka\ ;
+幼児語 > youjigo\ ;
+暗暗裡 > an''anri\ ;
+不浄場 > fujouba\ ;
+暗暗裏 > an''anri\ ;
+湯治場 > toujiba\ ;
+脳味噌 > noumiso\ ;
+子画面 > kogamen\ ;
+可視化 > kashika\ ;
+不注意 > fuchuui\ ;
+護衛艦 > goeikan\ ;
+次打者 > jidasha\ ;
+披露宴 > hirouen\ ;
+自衛官 > jieikan\ ;
+留守番 > rusuban\ ;
+亜音速 > aonsoku\ ;
+御注意 > gochuui\ ;
+医科学 > ikagaku\ ;
+異方性 > ihousei\ ;
+無鑑査 > mukansa\ ;
+二番目 > nibanme\ ;
+硬化油 > koukayu\ ;
+映画祭 > eigasai\ ;
+映画社 > eigasha\ ;
+不正規 > fuseiki\ ;
+荊棘線 > barasen\ ;
+慰霊祭 > ireisai\ ;
+学校医 > gakkoui\ ;
+金文字 > kinmoji\ ;
+御法度 > gohatto\ ;
+気保養 > kihoyou\ ;
+鉄火場 > tekkaba\ ;
+勤務員 > kinmuin\ ;
+異星人 > iseijin\ ;
+映画界 > eigakai\ ;
+五畿内 > gokinai\ ;
+御破算 > gohasan\ ;
+普段着 > fudangi\ ;
+否定語 > hiteigo\ ;
+違憲性 > ikensei\ ;
+塩化銀 > enkagin\ ;
+保護司 > hogoshi\ ;
+得意気 > tokuige\ ;
+手細工 > tezaiku\ ;
+舎利塩 > sharien\ ;
+親馬鹿 > oyabaka\ ;
+舞踊家 > butouka\ ;
+奇形児 > kikeiji\ ;
+午後中 > gogojuu\ ;
+詭弁家 > kibenka\ ;
+胃洗浄 > isenjou\ ;
+不同化 > fudouka\ ;
+異教徒 > ikyouto\ ;
+湯加減 > yukagen\ ;
+非課税 > hikazei\ ;
+和楽器 > wagakki\ ;
+違法者 > ihousha\ ;
+輸送機 > yusouki\ ;
+与野党 > yoyatou\ ;
+引火点 > inkaten\ ;
+羽子板 > hagoita\ ;
+音沙汰 > otosata\ ;
+禾本科 > kahonka\ ;
+不可分 > fukabun\ ;
+鼠径部 > sokeibu\ ;
+乾菓子 > higashi\ ;
+無技巧 > mugikou\ ;
+都議会 > togikai\ ;
+予備校 > yobikou\ ;
+観世音 > kanzeon\ ;
+半過去 > hankako\ ;
+不参加 > fusanka\ ;
+違反者 > ihansha\ ;
+恣意性 > shiisei\ ;
+付加税 > fukazei\ ;
+時計座 > tokeiza\ ;
+部屋代 > heyadai\ ;
+母音性 > boinsei\ ;
+不得意 > futokui\ ;
+電話機 > denwaki\ ;
+無担保 > mutanpo\ ;
+措辞法 > sojihou\ ;
+八九分 > hakkubu\ ;
+根太板 > nedaita\ ;
+火加減 > hikagen\ ;
+亜燐酸 > arinsan\ ;
+時計屋 > tokeiya\ ;
+青二才 > aonisai\ ;
+野放図 > nohouzu\ ;
+幼児期 > youjiki\ ;
+按摩膏 > anmakou\ ;
+気苦労 > kigurou\ ;
+政府案 > seifuan\ ;
+二王門 > nioumon\ ;
+予備役 > yobieki\ ;
+不道理 > fudouri\ ;
+金無垢 > kinmuku\ ;
+偽造印 > gizouin\ ;
+無批判 > muhihan\ ;
+図書費 > toshohi\ ;
+幸運児 > kouunji\ ;
+塩水湖 > ensuiko\ ;
+流布本 > rufubon\ ;
+山茶花 > sazanka\ ;
+移民法 > iminhou\ ;
+鬼百合 > oniyuri\ ;
+奈良県 > naraken\ ;
+不勝手 > fukatte\ ;
+天麩羅 > tenpura\ ;
+不利益 > furieki\ ;
+市吏員 > shiriin\ ;
+意見書 > ikensho\ ;
+慰霊塔 > ireitou\ ;
+我利勉 > gariben\ ;
+擬宝珠 > giboshi\ ;
+大和絵 > yamatoe\ ;
+小切手 > kogitte\ ;
+転路器 > tenroki\ ;
+判事補 > hanjiho\ ;
+屠蘇散 > tososan\ ;
+御広目 > ohirome\ ;
+参議院 > sangiin\ ;
+予備品 > yobihin\ ;
+理工科 > rikouka\ ;
+火葬場 > kasouba\ ;
+寒垢離 > kangori\ ;
+防衛費 > boueihi\ ;
+馬小屋 > umagoya\ ;
+予備兵 > yobihei\ ;
+小道具 > kodougu\ ;
+希元素 > kigenso\ ;
+世界語 > sekaigo\ ;
+護衛兵 > goeihei\ ;
+形而下 > keijika\ ;
+青電話 > aodenwa\ ;
+二枚目 > nimaime\ ;
+三差路 > sansaro\ ;
+他府県 > tafuken\ ;
+保線区 > hosenku\ ;
+出稽古 > degeiko\ ;
+不具者 > fugusha\ ;
+演算機 > enzanki\ ;
+干菓子 > higashi\ ;
+遺伝法 > idenhou\ ;
+医化学 > ikagaku\ ;
+遺家族 > ikazoku\ ;
+小利口 > korikou\ ;
+天気運 > tenkiun\ ;
+府議会 > fugikai\ ;
+保険医 > hoken''i\ ;
+止音器 > shionki\ ;
+合気会 > aikikai\ ;
+醍醐味 > daigomi\ ;
+意図的 > itoteki\ ;
+地磁気 > chijiki\ ;
+生意気 > namaiki\ ;
+四次元 > yojigen\ ;
+御目玉 > omedama\ ;
+公文所 > kumonjo\ ;
+御座所 > gozasho\ ;
+大鋸屑 > ogakuzu\ ;
+甘海苔 > amanori\ ;
+建議案 > kengian\ ;
+碁会所 > gokaijo\ ;
+防火戸 > boukado\ ;
+登山家 > tozanka\ ;
+炊事場 > suijiba\ ;
+無愛想 > buaisou\ ;
+英文科 > eibunka\ ;
+酸性雨 > sanseiu\ ;
+尊皇王 > son''nou\ ;
+派生語 > haseigo\ ;
+遺伝性 > idensei\ ;
+医療費 > iryouhi\ ;
+大祖父 > daisofu\ ;
+軍荼利 > gundari\ ;
+白亜紀 > hakuaki\ ;
+騎馬戦 > kibasen\ ;
+目一杯 > meippai\ ;
+記事文 > kijibun\ ;
+和太鼓 > wadaiko\ ;
+予定案 > yoteian\ ;
+符号器 > fugouki\ ;
+書記補 > shokiho\ ;
+応援団 > ouendan\ ;
+遺伝子 > idenshi\ ;
+除草器 > josouki\ ;
+予定日 > yoteibi\ ;
+保持者 > hojisha\ ;
+曼陀羅 > mandara\ ;
+単位元 > tanigen\ ;
+意地悪 > ijiwaru\ ;
+益荒男 > masurao\ ;
+上出来 > joudeki\ ;
+符号化 > fugouka\ ;
+不相応 > fusouou\ ;
+英語版 > eigoban\ ;
+重火器 > juukaki\ ;
+摩利支 > marishi\ ;
+異端視 > itanshi\ ;
+葬儀屋 > sougiya\ ;
+項位置 > kouichi\ ;
+医師法 > ishihou\ ;
+葡萄園 > budouen\ ;
+五斗米 > gotobei\ ;
+可愛気 > kawaige\ ;
+五線譜 > gosenfu\ ;
+御府内 > gofunai\ ;
+子馬座 > koumaza\ ;
+小芥子 > kokeshi\ ;
+恒温器 > kouonki\ ;
+知恵者 > chiesha\ ;
+遺贈分 > izoubun\ ;
+太刀魚 > tachiuo\ ;
+助演者 > joensha\ ;
+代理部 > dairibu\ ;
+移動体 > idoutai\ ;
+運動費 > undouhi\ ;
+天鵝絨 > biroudo\ ;
+一酸化 > issanka\ ;
+遠距離 > enkyori\ ;
+佐賀県 > sagaken\ ;
+高音部 > kouonbu\ ;
+異端者 > itansha\ ;
+弥次馬 > yajiuma\ ;
+耕耘機 > kouunki\ ;
+感化院 > kankain\ ;
+不機嫌 > fukigen\ ;
+部外秘 > bugaihi\ ;
+亜熱帯 > anettai\ ;
+富士山 > fujisan\ ;
+指揮所 > shikijo\ ;
+生醤油 > kijouyu\ ;
+浄瑠璃 > joururi\ ;
+補佐官 > hosakan\ ;
+過去形 > kakokei\ ;
+草仮名 > sougana\ ;
+御機嫌 > gokigen\ ;
+不履行 > furikou\ ;
+擬人化 > gijinka\ ;
+分度器 > bundoki\ ;
+出目金 > demekin\ ;
+夜汽車 > yogisha\ ;
+左派系 > sahakei\ ;
+詐欺罪 > sagizai\ ;
+饂飩屋 > udon''ya\ ;
+夢想家 > musouka\ ;
+記譜法 > kifuhou\ ;
+一死後 > isshigo\ ;
+非衛生 > hieisei\ ;
+誤投下 > gotouka\ ;
+不自由 > fujiyuu\ ;
+英数字 > eisuuji\ ;
+知情意 > chijoui\ ;
+風呂桶 > furooke\ ;
+英語圏 > eigoken\ ;
+低音部 > teionbu\ ;
+二期制 > nikisei\ ;
+擬声語 > giseigo\ ;
+用務員 > youmuin\ ;
+御苦労 > gokurou\ ;
+未登記 > mitouki\ ;
+簡易化 > kan''ika\ ;
+一過性 > ikkasei\ ;
+運送費 > unsouhi\ ;
+医師会 > ishikai\ ;
+自叙伝 > jijoden\ ;
+天気屋 > tenkiya\ ;
+難易度 > nan''ido\ ;
+仮数部 > kasuubu\ ;
+十字路 > juujiro\ ;
+鼠蹊部 > sokeibu\ ;
+負符号 > fufugou\ ;
+大御所 > oogosho\ ;
+分布図 > bunpuzu\ ;
+製図家 > seizuka\ ;
+戦時下 > senjika\ ;
+天気図 > tenkizu\ ;
+賛美歌 > sanbika\ ;
+軍事費 > gunjihi\ ;
+炎天下 > entenka\ ;
+肥満児 > himanji\ ;
+浪漫派 > romanha\ ;
+起重機 > kijuuki\ ;
+圧砕機 > assaiki\ ;
+回路図 > kairozu\ ;
+兵器庫 > heikiko\ ;
+岐阜県 > gifuken\ ;
+庶務課 > shomuka\ ;
+離縁状 > rienjou\ ;
+正規化 > seikika\ ;
+今出来 > imadeki\ ;
+検波器 > kenpaki\ ;
+絵双紙 > ezoushi\ ;
+下付金 > kafukin\ ;
+避難所 > hinanjo\ ;
+片意地 > kataiji\ ;
+医学部 > igakubu\ ;
+予報音 > yohouon\ ;
+風呂代 > furodai\ ;
+後知恵 > atodjie\ ;
+差機関 > sakikan\ ;
+委員長 > iinchou\ ;
+詐欺師 > sagishi\ ;
+外祖父 > gaisofu\ ;
+論理和 > ronriwa\ ;
+野営地 > yaeichi\ ;
+雰囲気 > fun''iki\ ;
+因美線 > inbisen\ ;
+気丈夫 > kijoubu\ ;
+初期化 > shokika\ ;
+歩行器 > hokouki\ ;
+湯豆腐 > yudoufu\ ;
+裏背戸 > urasedo\ ;
+加算機 > kasanki\ ;
+放生会 > houjoue\ ;
+育児院 > ikujiin\ ;
+不作為 > fusakui\ ;
+武装具 > busougu\ ;
+下駄番 > getaban\ ;
+自動化 > jidouka\ ;
+無遠慮 > buenryo\ ;
+運動場 > undouba\ ;
+家計費 > kakeihi\ ;
+音楽家 > ongakka\ ;
+外祖母 > gaisobo\ ;
+労務課 > roumuka\ ;
+無軌道 > mukidou\ ;
+不作法 > busahou\ ;
+十字火 > juujika\ ;
+胃痙攣 > ikeiren\ ;
+運動員 > undouin\ ;
+機械語 > kikaigo\ ;
+美容院 > biyouin\ ;
+一転機 > ittenki\ ;
+杓文字 > shamoji\ ;
+探査機 > tansaki\ ;
+田舎家 > inakaya\ ;
+運転費 > untenhi\ ;
+橙皮油 > touhiyu\ ;
+過年度 > kanendo\ ;
+運動具 > undougu\ ;
+御存知 > gozonji\ ;
+家政科 > kaseika\ ;
+小奇麗 > kogirei\ ;
+移住者 > ijuusha\ ;
+道具屋 > douguya\ ;
+同義語 > dougigo\ ;
+模擬戦 > mogisen\ ;
+蒲公英 > tanpopo\ ;
+稽古着 > keikogi\ ;
+下世話 > gesewa\ ;
+迦楼羅 > karura\ ;
+手忠実 > temame\ ;
+駄洒落 > dajare\ ;
+下駄屋 > getaya\ ;
+駄法螺 > dabora\ ;
+過保護 > kahogo\ ;
+非営利 > hieiri\ ;
+経緯儀 > keiigi\ ;
+呑兵衛 > nonbee\ ;
+不義理 > fugiri\ ;
+有意差 > yuuisa\ ;
+高緯度 > kouido\ ;
+不貞寝 > futene\ ;
+歯医者 > haisha\ ;
+似顔絵 > nigaoe\ ;
+歯科医 > shikai\ ;
+火事場 > kajiba\ ;
+豪雨禍 > gouuka\ ;
+亜麻製 > amasei\ ;
+似顔画 > nigaoe\ ;
+駄酒落 > dajare\ ;
+山羊座 > yagiza\ ;
+卒塔婆 > sotoba\ ;
+亜麻色 > amairo\ ;
+青海苔 > aonori\ ;
+似非親 > eseoya\ ;
+亜麻糸 > amaito\ ;
+六十路 > musoji\ ;
+亜温帯 > aontai\ ;
+余所見 > yosomi\ ;
+委員会 > iinkai\ ;
+依存度 > izondo\ ;
+阿僧祇 > asougi\ ;
+八十路 > yasoji\ ;
+伊勢蝦 > iseebi\ ;
+伊勢蛯 > iseebi\ ;
+曾祖父 > hijiji\ ;
+見栄坊 > miebou\ ;
+亜鉛版 > aenban\ ;
+御猪口 > ochoko\ ;
+鮎並女 > ainame\ ;
+平易化 > heiika\ ;
+安保理 > anpori\ ;
+曾祖母 > hibaba\ ;
+籐椅子 > touisu\ ;
+小文字 > komoji\ ;
+余所目 > yosome\ ;
+下院議 > kaingi\ ;
+孵化器 > fukaki\ ;
+亜鉛板 > aenban\ ;
+手真似 > temane\ ;
+不如意 > funyoi\ ;
+湯文字 > yumoji\ ;
+異機種 > ikishu\ ;
+亜砒酸 > ahisan\ ;
+阿修羅 > ashura\ ;
+御雑煮 > ozouni\ ;
+皮膚科 > hifuka\ ;
+弟小父 > otooji\ ;
+主治医 > shujii\ ;
+不誠意 > fuseii\ ;
+御詠歌 > goeika\ ;
+胃下垂 > ikasui\ ;
+刷毛目 > hakeme\ ;
+甲烏賊 > kouika\ ;
+伊達着 > dategi\ ;
+御見舞 > omimai\ ;
+背文字 > semoji\ ;
+優曇華 > udonge\ ;
+御襁褓 > omutsu\ ;
+西班牙 > supein\ ;
+不見目 > mijime\ ;
+蕎麦粉 > sobako\ ;
+梭子魚 > kamasu\ ;
+不随意 > fuzuii\ ;
+紫陽花 > ajisai\ ;
+野良着 > noragi\ ;
+于蘭盆 > urabon\ ;
+苦味素 > kumiso\ ;
+無事故 > mujiko\ ;
+一昨日 > ototoi\ ;
+出来値 > dekine\ ;
+伊勢丹 > isetan\ ;
+飲兵衛 > nonbee\ ;
+此処等 > kokora\ ;
+露西亜 > roshia\ ;
+目医者 > meisha\ ;
+如何様 > ikayou\ ;
+破魔矢 > hamaya\ ;
+相部屋 > aibeya\ ;
+孤児院 > kojiin\ ;
+今日日 > kyoubi\ ;
+荼枳尼 > dakini\ ;
+海老錠 > ebijou\ ;
+蕎麦屋 > sobaya\ ;
+雌捻子 > meneji\ ;
+古事記 > kojiki\ ;
+真面目 > majime\ ;
+那由他 > nayuta\ ;
+倶楽部 > kurabu\ ;
+屋根屋 > yaneya\ ;
+海老茶 > ebicha\ ;
+阿媽港 > amakou\ ;
+磁方位 > jihoui\ ;
+鍛冶屋 > kajiya\ ;
+塩基度 > enkido\ ;
+矢羽根 > yabane\ ;
+百合根 > yurine\ ;
+阿羅漢 > arakan\ ;
+野路子 > nojiko\ ;
+雌螺子 > meneji\ ;
+土下座 > dogeza\ ;
+慰安者 > iansha\ ;
+絵日記 > enikki\ ;
+陀羅尼 > darani\ ;
+羅方位 > rahoui\ ;
+異体字 > itaiji\ ;
+同意語 > douigo\ ;
+韋駄天 > idaten\ ;
+為政家 > iseika\ ;
+二度目 > nidome\ ;
+数寄屋 > sukiya\ ;
+同意義 > douigi\ ;
+大袈裟 > oogesa\ ;
+事務屋 > jimuya\ ;
+浮世絵 > ukiyoe\ ;
+琵琶湖 > biwako\ ;
+事務家 > jimuka\ ;
+加留多 > karuta\ ;
+不可避 > fukahi\ ;
+事務器 > jimuki\ ;
+御洒落 > oshare\ ;
+事務員 > jimuin\ ;
+植木屋 > uekiya\ ;
+不可誤 > fukago\ ;
+御釈迦 > oshaka\ ;
+印字機 > injiki\ ;
+硫黄泉 > iousen\ ;
+卒都婆 > sotoba\ ;
+偉丈夫 > ijoufu\ ;
+布海苔 > funori\ ;
+眼医者 > meisha\ ;
+眼科医 > gankai\ ;
+慰安会 > iankai\ ;
+披露目 > hirome\ ;
+予備馬 > yobiba\ ;
+気化器 > kikaki\ ;
+武者絵 > mushae\ ;
+風土記 > fudoki\ ;
+御河童 > okappa\ ;
+愛煙家 > aienka\ ;
+部屋着 > heyagi\ ;
+予備費 > yobihi\ ;
+瀘過器 > rokaki\ ;
+補助員 > hojoin\ ;
+比丘尼 > bikuni\ ;
+波止場 > hatoba\ ;
+易動度 > idoudo\ ;
+絵図面 > ezumen\ ;
+裸婦画 > rafuga\ ;
+歩一歩 > hoippo\ ;
+三十路 > misoji\ ;
+不沙汰 > busata\ ;
+不死身 > fujimi\ ;
+告天子 > hibari\ ;
+加奈陀 > kanada\ ;
+以遠権 > ienken\ ;
+施餓鬼 > segaki\ ;
+三重県 > mieken\ ;
+御沙汰 > gosata\ ;
+毛繻子 > kejusu\ ;
+不同意 > fudoui\ ;
+予備科 > yobika\ ;
+江戸前 > edomae\ ;
+盂蘭盆 > urabon\ ;
+保護区 > hogoku\ ;
+浅茅生 > asajiu\ ;
+家具屋 > kaguya\ ;
+小気味 > kokimi\ ;
+天蚕糸 > tegusu\ ;
+異文化 > ibunka\ ;
+夜見世 > yomise\ ;
+位相差 > isousa\ ;
+数奇屋 > sukiya\ ;
+薔薇園 > baraen\ ;
+過渡期 > katoki\ ;
+居場所 > ibasho\ ;
+違和感 > iwakan\ ;
+生蕎麦 > kisoba\ ;
+寝間着 > nemaki\ ;
+三十日 > misoka\ ;
+不気味 > bukimi\ ;
+最下位 > saikai\ ;
+御歳暮 > oseibo\ ;
+予備員 > yobiin\ ;
+映画化 > eigaka\ ;
+欧印語 > ouingo\ ;
+図案家 > zuanka\ ;
+応援歌 > ouenka\ ;
+韋陀天 > idaten\ ;
+歌舞伎 > kabuki\ ;
+阿蘭陀 > oranda\ ;
+歌留多 > karuta\ ;
+無慈悲 > mujihi\ ;
+受話器 > juwaki\ ;
+翻車魚 > manbou\ ;
+不出来 > fudeki\ ;
+雑魚寝 > zakone\ ;
+伊太利 > itarii\ ;
+饂飩粉 > udonko\ ;
+甘海老 > amaebi\ ;
+小馬鹿 > kobaka\ ;
+御菓子 > okashi\ ;
+産科医 > sankai\ ;
+三知土 > tataki\ ;
+賓位語 > hinigo\ ;
+摩莫枳 > mamaki\ ;
+小百合 > sayuri\ ;
+無沙汰 > busata\ ;
+烏帽子 > eboshi\ ;
+祖父母 > sofubo\ ;
+十六夜 > izayoi\ ;
+迂回路 > ukairo\ ;
+襤褸家 > boroya\ ;
+青紫蘇 > aojiso\ ;
+濾過器 > rokaki\ ;
+不具合 > fuguai\ ;
+知恵歯 > chieba\ ;
+不起訴 > fukiso\ ;
+無医村 > muison\ ;
+果樹園 > kajuen\ ;
+御転婆 > otenba\ ;
+風呂屋 > furoya\ ;
+意味論 > imiron\ ;
+無邪気 > mujaki\ ;
+風呂場 > furoba\ ;
+阿蘇山 > asosan\ ;
+鮎魚女 > ainame\ ;
+御家芸 > oiegei\ ;
+無気味 > bukimi\ ;
+内科医 > naikai\ ;
+大部屋 > oobeya\ ;
+堕胎医 > dataii\ ;
+不用意 > fuyoui\ ;
+久慈目 > kujime\ ;
+大御代 > oomiyo\ ;
+有意義 > yuuigi\ ;
+野薔薇 > nobara\ ;
+梅雨期 > baiuki\ ;
+耳鼻科 > jibika\ ;
+画架座 > gakaza\ ;
+不安気 > fuange\ ;
+大出来 > oodeki\ ;
+風邪気 > kazeke\ ;
+武器庫 > bukiko\ ;
+伊呂波 > iroha\ ;
+亜鉛華 > aenka\ ;
+維持費 > ijihi\ ;
+依估地 > ekoji\ ;
+意気地 > ikuji\ ;
+秋刀魚 > sanma\ ;
+八重歯 > yaeba\ ;
+大伯父 > oooji\ ;
+大伯母 > oooba\ ;
+紫雲英 > genge\ ;
+未曾有 > mizou\ ;
+伯父貴 > ojiki\ ;
+亜麻仁 > amani\ ;
+五十路 > isoji\ ;
+木乃伊 > miira\ ;
+二十重 > hatae\ ;
+作務衣 > samue\ ;
+居留守 > irusu\ ;
+寝椅子 > neisu\ ;
+座椅子 > zaisu\ ;
+雪花菜 > okara\ ;
+八百屋 > yaoya\ ;
+硫黄華 > iouka\ ;
+小意気 > koiki\ ;
+御神酒 > omiki\ ;
+伊佐木 > isaki\ ;
+慰安婦 > ianfu\ ;
+大見得 > oomie\ ;
+射手座 > iteza\ ;
+不意気 > buiki\ ;
+荏胡麻 > egoma\ ;
+絵文字 > emoji\ ;
+五倍子 > fushi\ ;
+恵比寿 > ebisu\ ;
+留守居 > rusui\ ;
+不得手 > fuete\ ;
+無意義 > muigi\ ;
+依怙地 > ekoji\ ;
+香具師 > yashi\ ;
+大叔父 > oooji\ ;
+無意味 > muimi\ ;
+大叔母 > oooba\ ;
+意固地 > ikoji\ ;
+御辞儀 > ojigi\ ;
+阿弥陀 > amida\ ;
+居合道 > iadou\ ;
+未通女 > oboko\ ;
+囲炉裏 > irori\ ;
+御世辞 > oseji\ ;
+外科医 > gekai\ ;
+石斑魚 > ugui\ ;
+如雨露 > joro\ ;
+百舌鳥 > mozu\ ;
+浮塵子 > unka\ ;
+亜細亜 > ajia\ ;
+似而非 > ese\ ;
+昔話 > mukashibanashi\ ;
+亥年 > inoshishidoshi\ ;
+話話 > hanashibanashi\ ;
+下唇 > shitakuchibiru\ ;
+昔昔 > mukashimukashi\ ;
+昔々 > mukashimukashi\ ;
+話々 > hanashibanashi\ ;
+私立 > watakushiritsu\ ;
+懐刀 > futokorogatana\ ;
+忝涙 > katajikenamida\ ;
+南東 > minamihigashi\ ;
+古兵 > furutsuwamono\ ;
+内踝 > uchikurubushi\ ;
+舌鼓 > shitatsudzumi\ ;
+健者 > shitatakamono\ ;
+桜祭 > sakuramatsuri\ ;
+乳窄 > chichishibori\ ;
+賢所 > kashikodokoro\ ;
+面魂 > tsuradamashii\ ;
+仏作 > hotokedzukuru\ ;
+東南 > higashiminami\ ;
+天牛 > kamikirimushi\ ;
+夢幻 > yumemaboroshi\ ;
+恙虫 > tsutsugamushi\ ;
+私共 > watakushidomo\ ;
+私事 > watakushigoto\ ;
+都忘 > miyakowasure\ ;
+道標 > michishirube\ ;
+辻社 > tsujiyashiro\ ;
+若紫 > wakamurasaki\ ;
+畳鰯 > tatamiiwashi\ ;
+盲暦 > mekuragoyomi\ ;
+腹鼓 > haratsudzumi\ ;
+内懐 > uchibutokoro\ ;
+鰻丼 > unagidonburi\ ;
+躾方 > shitsukekata\ ;
+僻心 > higamigokoro\ ;
+椿油 > tsubakiabura\ ;
+柏餅 > kashiwamochi\ ;
+柄頭 > tsukagashira\ ;
+俄盲 > niwakamekura\ ;
+枕詞 > makurakotoba\ ;
+候所 > souroutokoro\ ;
+桂男 > katsuraotoko\ ;
+山懐 > yamafutokoro\ ;
+丼飯 > donburimeshi\ ;
+丼鉢 > donburibachi\ ;
+倒事 > sakasamagoto\ ;
+暁闇 > akatsukiyami\ ;
+松毬 > matsupokkuri\ ;
+頭虱 > atamashirami\ ;
+松林 > matsubayashi\ ;
+束柱 > tsukabashira\ ;
+仏心 > hotokegokoro\ ;
+未年 > hitsujidoshi\ ;
+谷懐 > tanibutokoro\ ;
+雁骨 > kariganebone\ ;
+東口 > higashiguchi\ ;
+杯事 > sakazukigoto\ ;
+独枕 > hitorimakura\ ;
+一塊 > hitokatamari\ ;
+娘心 > musumegokoro\ ;
+夏祭 > natsumatsuri\ ;
+昔式 > mukashishiki\ ;
+妹娘 > imoutomusume\ ;
+霜柱 > shimobashira\ ;
+星印 > hoshijirushi\ ;
+袋鼠 > fukuronezumi\ ;
+続柄 > tsudzukigara\ ;
+土蛍 > tsuchibotaru\ ;
+土煙 > tsuchikemuri\ ;
+懐銭 > futokorozeni\ ;
+鋸鮫 > nokogirizame\ ;
+土埃 > tsuchibokori\ ;
+蛍袋 > hotarubukuro\ ;
+懐紙 > futokorogami\ ;
+私達 > watashitachi\ ;
+所所 > tokorodokoro\ ;
+金鋸 > kanenokogiri\ ;
+戯事 > tawamuregoto\ ;
+品形 > shinakatachi\ ;
+勢車 > hazumiguruma\ ;
+哀哉 > kanashiikana\ ;
+所々 > tokorodokoro\ ;
+水盃 > mizusakazuki\ ;
+包紙 > tsutsumigami\ ;
+水杯 > mizusakazuki\ ;
+帯鋸 > obinokogiri\ ;
+召使 > meshitsukai\ ;
+力石 > chikaraishi\ ;
+白鼠 > shironezumi\ ;
+力瘤 > chikarakobu\ ;
+力水 > chikaramizu\ ;
+南口 > minamiguchi\ ;
+力業 > chikarawaza\ ;
+逆睫 > sakamatsuge\ ;
+鰹節 > katsuobushi\ ;
+兜虫 > kabutomushi\ ;
+形体 > narikatachi\ ;
+床柱 > tokobashira\ ;
+出没 > shutsubotsu\ ;
+左端 > hidarihashi\ ;
+巴瓦 > tomoegawara\ ;
+切日 > shimekiribi\ ;
+幼心 > osanagokoro\ ;
+花筵 > hanamushiro\ ;
+男鰥 > otokoyamome\ ;
+花祭 > hanamatsuri\ ;
+初姿 > hatsusugata\ ;
+高話 > takabanashi\ ;
+膝頭 > hizagashira\ ;
+巻柱 > makibashira\ ;
+底力 > sokodjikara\ ;
+畳表 > tatamiomote\ ;
+出力 > shutsuryoku\ ;
+桜餅 > sakuramochi\ ;
+桜飯 > sakurameshi\ ;
+直出 > chokushutsu\ ;
+畳職 > tatamishoku\ ;
+草冠 > kusakanmuri\ ;
+瓢虫 > tentoumushi\ ;
+左下 > hidarishita\ ;
+百出 > hyakushutsu\ ;
+若侍 > wakazamurai\ ;
+候由 > sourouyoshi\ ;
+伽話 > togibanashi\ ;
+松飾 > matsukazari\ ;
+東風 > higashikaze\ ;
+赤紫 > akamurasaki\ ;
+柳腰 > yanagigoshi\ ;
+男心 > otokogokoro\ ;
+人虱 > hitoshirami\ ;
+獣道 > kemonomichi\ ;
+一雫 > hitoshizuku\ ;
+羊雲 > hitsujigumo\ ;
+猿轡 > sarugutsuwa\ ;
+脈所 > myakudokoro\ ;
+但書 > tadashigaki\ ;
+腰刀 > koshigatana\ ;
+貢物 > mitsugimono\ ;
+客室 > kyakushitsu\ ;
+人柱 > hitobashira\ ;
+旗頭 > hatagashira\ ;
+子年 > nezumidoshi\ ;
+旋風 > tsumujikaze\ ;
+質実 > shitsujitsu\ ;
+丼物 > donburimono\ ;
+杖柱 > tsuehashira\ ;
+下瞼 > shitamabuta\ ;
+杉林 > sugibayashi\ ;
+晒者 > sarashimono\ ;
+一滴 > hitoshizuku\ ;
+中柱 > nakabashira\ ;
+狸爺 > tanukijijii\ ;
+嫡室 > chakushitsu\ ;
+狐猿 > kitsunezaru\ ;
+東北 > higashikita\ ;
+七月 > shichigatsu\ ;
+一昔 > hitomukashi\ ;
+東側 > higashigawa\ ;
+一撮 > hitotsumami\ ;
+飾付 > kazaritsuke\ ;
+嫡出 > chakushutsu\ ;
+下心 > shitagokoro\ ;
+夏衣 > natsugoromo\ ;
+不嗜 > butashinami\ ;
+雀蜂 > suzumebachi\ ;
+組頭 > kumigashira\ ;
+緑虫 > midorimushi\ ;
+雪礫 > yukitsubute\ ;
+旗標 > hatajirushi\ ;
+夢現 > yumeutsutsu\ ;
+雛祭 > hinamatsuri\ ;
+女旱 > on''nahideri\ ;
+女心 > on''nagokoro\ ;
+握鮨 > nigirizushi\ ;
+静心 > shizugokoro\ ;
+隣町 > tonarimachi\ ;
+大晦 > ootsugomori\ ;
+握飯 > nigirimeshi\ ;
+紫色 > murasakiiro\ ;
+旗印 > hatajirushi\ ;
+雪庇 > yukibisashi\ ;
+長話 > nagabanashi\ ;
+紙礫 > kamitsubute\ ;
+裸虫 > hadakamushi\ ;
+話中 > hanashichuu\ ;
+塵埃 > chirihokori\ ;
+鏡餅 > kagamimochi\ ;
+烏口 > karasuguchi\ ;
+端金 > hashitagane\ ;
+控室 > hikaeshitsu\ ;
+米印 > komejirushi\ ;
+唐錦 > karanishiki\ ;
+蝸牛 > dendenmushi\ ;
+黒鶫 > kurotsugumi\ ;
+錦蛇 > nishikihebi\ ;
+国侍 > kunizamurai\ ;
+港町 > minatomachi\ ;
+虫薬 > mushigusuri\ ;
+唐紅 > karakurenai\ ;
+磯鵯 > isohiyodori\ ;
+命綱 > inochidzuna\ ;
+金轡 > kanagutsuwa\ ;
+口車 > kuchiguruma\ ;
+取調 > torishirabe\ ;
+鼻柱 > hanabashira\ ;
+窯印 > kamajirushi\ ;
+蔦蘿 > tsutakazura\ ;
+取締 > torishimari\ ;
+蔦蔓 > tsutakazura\ ;
+氷袋 > kooribukuro\ ;
+南西 > minaminishi\ ;
+包金 > tsutsumikin\ ;
+古狐 > furugitsune\ ;
+力革 > chikaragawa\ ;
+私儀 > watakushigi\ ;
+力足 > chikaraashi\ ;
+私供 > watashidomo\ ;
+力負 > chikaramake\ ;
+水澄 > mizusumashi\ ;
+取扱 > toriatsukai\ ;
+鉄兜 > tetsukabuto\ ;
+氷枕 > koorimakura\ ;
+水柱 > mizubashira\ ;
+切通 > kiridooshi\ ;
+鯰髭 > namazuhige\ ;
+口口 > kuchiguchi\ ;
+初詣 > hatsumoude\ ;
+石畳 > ishidatami\ ;
+逆説 > gyakusetsu\ ;
+茸雲 > kinokogumo\ ;
+近道 > chikamichi\ ;
+近近 > chikadjika\ ;
+水心 > mizugokoro\ ;
+砂煙 > sunakemuri\ ;
+川魚 > kawazakana\ ;
+卯年 > usagidoshi\ ;
+近路 > chikamichi\ ;
+辻辻 > tsujitsuji\ ;
+北枕 > kitamakura\ ;
+確執 > kakushitsu\ ;
+氷室 > hyoushitsu\ ;
+決別 > ketsubetsu\ ;
+後技 > ushirowaza\ ;
+卍巴 > manjidomoe\ ;
+心室 > shinshitsu\ ;
+着色 > chakushoku\ ;
+円鏡 > marukagami\ ;
+遣直 > yarinaoshi\ ;
+着脱 > chakudatsu\ ;
+彗星 > houkiboshi\ ;
+円鉋 > marugan''na\ ;
+後後 > nochinochi\ ;
+卸商 > oroshishou\ ;
+辻褄 > tsujitsuma\ ;
+花鰹 > hanagatsuo\ ;
+鶴嘴 > tsuruhashi\ ;
+先隣 > sakidonari\ ;
+左足 > hidariashi\ ;
+得失 > tokushitsu\ ;
+咄々 > totsutotsu\ ;
+酒処 > sakedokoro\ ;
+歳月 > toshitsuki\ ;
+横車 > yokoguruma\ ;
+卓出 > takushutsu\ ;
+式日 > shikijitsu\ ;
+入質 > nyuushichi\ ;
+着着 > chakuchaku\ ;
+南側 > minamigawa\ ;
+皮衣 > kawagoromo\ ;
+区区 > machimachi\ ;
+着発 > chakuhatsu\ ;
+花鋏 > hanabasami\ ;
+庭漆 > niwaurushi\ ;
+砂嵐 > sunaarashi\ ;
+年男 > toshiotoko\ ;
+次次 > tsugitsugi\ ;
+刀疵 > katanakizu\ ;
+違棚 > chigaidana\ ;
+直筆 > chokuhitsu\ ;
+弐心 > futagokoro\ ;
+直立 > chokuritsu\ ;
+兜蟹 > kabutogani\ ;
+盲窓 > mekuramado\ ;
+出獄 > shutsugoku\ ;
+出猟 > shutsuryou\ ;
+砂埃 > sunabokori\ ;
+左耳 > hidarimimi\ ;
+力帯 > chikaraobi\ ;
+砂嚢 > sunabukuro\ ;
+光蘚 > hikarigoke\ ;
+花詞 > hanakotoba\ ;
+初氷 > hatsugoori\ ;
+苦艾 > nigayomogi\ ;
+出漁 > shutsuryou\ ;
+皿秤 > sarabakari\ ;
+殺伐 > satsubatsu\ ;
+沸々 > futsufutsu\ ;
+兎脣 > mitsukuchi\ ;
+座技 > suwariwaza\ ;
+口々 > kuchiguchi\ ;
+良質 > ryoushitsu\ ;
+槍衾 > yaribusuma\ ;
+逐日 > chikujitsu\ ;
+若緑 > wakamidori\ ;
+車賃 > kurumachin\ ;
+逆接 > gyakusetsu\ ;
+畑鼠 > hatanezumi\ ;
+着払 > chakubarai\ ;
+出撃 > shutsugeki\ ;
+峠道 > tougemichi\ ;
+年強 > toshidzuyo\ ;
+艶艶 > tsuyatsuya\ ;
+田鵑 > hototogisu\ ;
+山鯨 > yamakujira\ ;
+草枕 > kusamakura\ ;
+着実 > chakujitsu\ ;
+傷薬 > kizugusuri\ ;
+茶柱 > chabashira\ ;
+帚星 > houkiboshi\ ;
+直接 > chokusetsu\ ;
+底土 > sokotsuchi\ ;
+畳針 > tatamihari\ ;
+発熱 > hatsunetsu\ ;
+切実 > setsujitsu\ ;
+山颪 > yamaoroshi\ ;
+光物 > hikarimono\ ;
+剔出 > tekishutsu\ ;
+生魚 > namazakana\ ;
+直截 > chokusetsu\ ;
+偏辺 > katahorori\ ;
+花畑 > hanabatake\ ;
+候間 > sourouaida\ ;
+進出 > shinshutsu\ ;
+店卸 > tanaoroshi\ ;
+略述 > ryakujutsu\ ;
+常常 > tsunedzune\ ;
+疵薬 > kizugusuri\ ;
+別口 > betsukuchi\ ;
+八橋 > yatsuhashi\ ;
+辰年 > tatsudoshi\ ;
+別別 > betsubetsu\ ;
+尻餠 > shirimochi\ ;
+出国 > shutsugoku\ ;
+尻餅 > shirimochi\ ;
+区々 > machimachi\ ;
+白樺 > shirakanba\ ;
+八月 > hachigatsu\ ;
+踏車 > fumiguruma\ ;
+後々 > nochinochi\ ;
+略説 > ryakusetsu\ ;
+申込 > moushikomi\ ;
+切切 > setsusetsu\ ;
+盲壁 > mekurakabe\ ;
+鯨幕 > kujiramaku\ ;
+白星 > shiroboshi\ ;
+百日 > hyakunichi\ ;
+膜質 > makushitsu\ ;
+出入 > shutsunyuu\ ;
+年下 > toshishita\ ;
+係長 > kakarichou\ ;
+候調 > sourouchou\ ;
+鯨尺 > kujirajaku\ ;
+盛土 > moritsuchi\ ;
+花暦 > hanagoyomi\ ;
+直列 > chokuretsu\ ;
+甲蟹 > kabutogani\ ;
+冽冽 > retsuretsu\ ;
+入室 > nyuushitsu\ ;
+山荒 > yamaarashi\ ;
+傑物 > ketsubutsu\ ;
+略筆 > ryakuhitsu\ ;
+左利 > hidarikiki\ ;
+伸餅 > noshimochi\ ;
+内冑 > uchikabuto\ ;
+内兜 > uchikabuto\ ;
+左側 > hidarigawa\ ;
+入口 > hairiguchi\ ;
+室長 > shitsuchou\ ;
+優姿 > yasasugata\ ;
+兎口 > mitsukuchi\ ;
+申立 > moushitate\ ;
+核質 > kakushitsu\ ;
+植物 > shokubutsu\ ;
+岩燕 > iwatsubame\ ;
+次々 > tsugitsugi\ ;
+儲口 > moukeguchi\ ;
+棟瓦 > munagawara\ ;
+高枕 > takamakura\ ;
+脹脛 > fukurahagi\ ;
+高曇 > takagumori\ ;
+桜花 > sakurabana\ ;
+桑苺 > kuwaichigo\ ;
+脚色 > kyakushoku\ ;
+桜肉 > sakuraniku\ ;
+肩車 > kataguruma\ ;
+別々 > betsubetsu\ ;
+質量 > shitsuryou\ ;
+畜殺 > chikusatsu\ ;
+杜鵑 > hototogisu\ ;
+脈脈 > myakumyaku\ ;
+着々 > chakuchaku\ ;
+楔形 > kusabigata\ ;
+桜紙 > sakuragami\ ;
+切々 > setsusetsu\ ;
+病室 > byoushitsu\ ;
+芋侍 > imozamurai\ ;
+肉質 > nikushitsu\ ;
+近々 > chikadjika\ ;
+宝船 > takarabune\ ;
+山桜 > yamazakura\ ;
+側室 > sokushitsu\ ;
+膝枕 > hizamakura\ ;
+乳首 > chichikubi\ ;
+常々 > tsunedzune\ ;
+子規 > hototogisu\ ;
+極力 > kyokuryoku\ ;
+辻々 > tsujitsuji\ ;
+桑畑 > kuwabatake\ ;
+略式 > ryakushiki\ ;
+冽々 > retsuretsu\ ;
+枕許 > makuramoto\ ;
+宝籤 > takarakuji\ ;
+宝箱 > takarabako\ ;
+質草 > shichigusa\ ;
+骨壷 > kotsutsubo\ ;
+宿直 > shukuchoku\ ;
+備付 > sonaetsuke\ ;
+略奪 > ryakudatsu\ ;
+山嵐 > yamaarashi\ ;
+松虫 > matsumushi\ ;
+乳質 > nyuushitsu\ ;
+両隣 > ryoudonari\ ;
+屡屡 > shibashiba\ ;
+群雀 > murasuzume\ ;
+木質 > mokushitsu\ ;
+実物 > jitsubutsu\ ;
+質種 > shichigusa\ ;
+下露 > shitatsuyu\ ;
+畜力 > chikuryoku\ ;
+寒椿 > kantsubaki\ ;
+質的 > shitsuteki\ ;
+棚卸 > tanaoroshi\ ;
+梔子 > kuchinashi\ ;
+驀地 > masshigura\ ;
+山刀 > yamagatana\ ;
+下道 > shitamichi\ ;
+不躾 > bushitsuke\ ;
+生卵 > namatamago\ ;
+風薬 > kazegusuri\ ;
+曲説 > kyokusetsu\ ;
+丸裸 > maruhadaka\ ;
+飯粒 > meshitsubu\ ;
+猫車 > nekoguruma\ ;
+三越 > mitsukoshi\ ;
+客月 > kyakugetsu\ ;
+時鳥 > hototogisu\ ;
+顔貌 > kaokatachi\ ;
+室料 > shitsuryou\ ;
+尺八 > shakuhachi\ ;
+艶々 > tsuyatsuya\ ;
+東男 > azumaotoko\ ;
+寝室 > shinshitsu\ ;
+質樸 > shitsuboku\ ;
+肘枕 > hijimakura\ ;
+仏滅 > butsumetsu\ ;
+小包 > kodzutsumi\ ;
+密密 > mitsumitsu\ ;
+就中 > nakandzuku\ ;
+上蓆 > uwamushiro\ ;
+質朴 > shitsuboku\ ;
+脱力 > datsuryoku\ ;
+質札 > shichifuda\ ;
+三菱 > mitsubishi\ ;
+仮枕 > karimakura\ ;
+供出 > kyoushutsu\ ;
+宮室 > kyuushitsu\ ;
+春霞 > harugasumi\ ;
+食物 > shokumotsu\ ;
+昔風 > mukashifuu\ ;
+宝島 > takarajima\ ;
+仏様 > hotokesama\ ;
+脚力 > kyakuryoku\ ;
+下職 > shitashoku\ ;
+曲節 > kyokusetsu\ ;
+曲筆 > kyokuhitsu\ ;
+一纏 > hitomatome\ ;
+飯櫃 > meshibitsu\ ;
+貝柱 > kaibashira\ ;
+上筵 > uwamushiro\ ;
+曲直 > kyokuchoku\ ;
+丸瓦 > marugawara\ ;
+七竈 > nanakamado\ ;
+一穴 > hitotsuana\ ;
+孫娘 > magomusume\ ;
+仏性 > hotokeshou\ ;
+静静 > shizushizu\ ;
+実力 > jitsuryoku\ ;
+曲率 > kyokuritsu\ ;
+大鼓 > ootsudzumi\ ;
+狐色 > kitsuneiro\ ;
+特質 > tokushitsu\ ;
+一睡 > hitonemuri\ ;
+下町 > shitamachi\ ;
+人心 > hitogokoro\ ;
+七生 > shichishou\ ;
+燕麦 > karasumugi\ ;
+一番 > hitotsugai\ ;
+物語 > monogatari\ ;
+女達 > on''natachi\ ;
+朧月 > oborodzuki\ ;
+片跛 > katachinba\ ;
+末日 > matsujitsu\ ;
+望月 > mochidzuki\ ;
+二心 > futagokoro\ ;
+革質 > kakushitsu\ ;
+大隼 > oohayabusa\ ;
+月月 > tsukidzuki\ ;
+一渡 > hitowatari\ ;
+屡々 > shibashiba\ ;
+杜宇 > hototogisu\ ;
+妾腹 > mekakebara\ ;
+雲霞 > kumokasumi\ ;
+革袋 > kawabukuro\ ;
+析出 > sekishutsu\ ;
+枕元 > makuramoto\ ;
+不束 > futsutsuka\ ;
+猫柳 > nekoyanagi\ ;
+曲折 > kyokusetsu\ ;
+貸付 > kashitsuke\ ;
+狸汁 > tanukijiru\ ;
+不抱 > kakawarazu\ ;
+一所 > hitotokoro\ ;
+曲尺 > kyokushaku\ ;
+雪質 > yukishitsu\ ;
+顔形 > kaokatachi\ ;
+犇犇 > hishihishi\ ;
+雛豆 > hiyokomame\ ;
+網頭 > amigashira\ ;
+塩魚 > shiozakana\ ;
+中執 > chuushitsu\ ;
+夏虫 > natsumushi\ ;
+綾錦 > ayanishiki\ ;
+月別 > tsukibetsu\ ;
+奪略 > datsuryaku\ ;
+繁繁 > shigeshige\ ;
+烏麦 > karasumugi\ ;
+一周 > hitomeguri\ ;
+烏鳩 > karasubato\ ;
+訥訥 > totsutotsu\ ;
+旅烏 > tabigarasu\ ;
+七光 > nanahikari\ ;
+娘婿 > musumemuko\ ;
+日没 > nichibotsu\ ;
+細雪 > sasameyuki\ ;
+頭分 > kashirabun\ ;
+斑牛 > madaraushi\ ;
+緑色 > ryokushoku\ ;
+日月 > nichigetsu\ ;
+旭日 > kyokujitsu\ ;
+角質 > kakushitsu\ ;
+隣組 > tonarigumi\ ;
+烏金 > karasugane\ ;
+隼科 > hayabusaka\ ;
+物心 > monogokoro\ ;
+旅枕 > tabimakura\ ;
+紅雀 > benisuzume\ ;
+父方 > chichikata\ ;
+塵芥 > chiriakuta\ ;
+雨燕 > amatsubame\ ;
+妹婿 > imoutomuko\ ;
+雪煙 > yukikemuri\ ;
+奪掠 > datsuryaku\ ;
+角蛙 > tsunogaeru\ ;
+失業 > shitsugyou\ ;
+設立 > setsuritsu\ ;
+雑物 > zatsubutsu\ ;
+熱烈 > netsuretsu\ ;
+随神 > kan''nagara\ ;
+裸麦 > hadakamugi\ ;
+霜月 > shimotsuki\ ;
+夢枕 > yumemakura\ ;
+旅心 > tabigokoro\ ;
+犬侍 > inuzamurai\ ;
+識別 > shikibetsu\ ;
+妾出 > shoushutsu\ ;
+緑玉 > ryokugyoku\ ;
+烏蛇 > karasuhebi\ ;
+特出 > tokushutsu\ ;
+紙袋 > kamibukuro\ ;
+雪柳 > yukiyanagi\ ;
+春休 > haruyasumi\ ;
+月々 > tsukidzuki\ ;
+触発 > shokuhatsu\ ;
+継父 > mamachichi\ ;
+烏紙 > karasugami\ ;
+日仏 > nichifutsu\ ;
+掛長 > kakarichou\ ;
+靴下 > kutsushita\ ;
+縮尺 > shukushaku\ ;
+女主 > on''naaruji\ ;
+敵失 > tekishitsu\ ;
+教室 > kyoushitsu\ ;
+絶滅 > zetsumetsu\ ;
+要石 > kanameishi\ ;
+裏話 > urabanashi\ ;
+粉薬 > konagusuri\ ;
+縮刷 > shukusatsu\ ;
+土豚 > tsuchibuta\ ;
+烈烈 > retsuretsu\ ;
+救出 > kyuushutsu\ ;
+壁土 > kabetsuchi\ ;
+結末 > ketsumatsu\ ;
+親柱 > oyabashira\ ;
+粛粛 > shukushuku\ ;
+国訛 > kuninamari\ ;
+綿埃 > watabokori\ ;
+親日 > shin''nichi\ ;
+灼熱 > shakunetsu\ ;
+雇主 > yatoinushi\ ;
+継娘 > mamamusume\ ;
+焼失 > shoushitsu\ ;
+訳出 > yakushutsu\ ;
+烈日 > retsujitsu\ ;
+締付 > shimetsuke\ ;
+訣別 > ketsubetsu\ ;
+筒鳥 > tsutsudori\ ;
+袋耳 > fukuromimi\ ;
+結実 > ketsujitsu\ ;
+続出 > zokushutsu\ ;
+濃紫 > komurasaki\ ;
+溝鼠 > dobunezumi\ ;
+粛殺 > shukusatsu\ ;
+血脈 > ketsumyaku\ ;
+鎌鼬 > kamaitachi\ ;
+袋物 > fukuromono\ ;
+西口 > nishiguchi\ ;
+摘出 > tekishutsu\ ;
+節節 > fushibushi\ ;
+筒袖 > tsutsusode\ ;
+糸印 > itojirushi\ ;
+為人 > hitotonari\ ;
+炭俵 > sumidawara\ ;
+蜀魂 > hototogisu\ ;
+米所 > komedokoro\ ;
+端近 > hashidjika\ ;
+鎖鎌 > kusarigama\ ;
+滅裂 > metsuretsu\ ;
+潮煙 > shiokemuri\ ;
+筆舌 > hitsuzetsu\ ;
+錦鯉 > nishikigoi\ ;
+滑脱 > katsudatsu\ ;
+掠奪 > ryakudatsu\ ;
+筆筒 > fudedzutsu\ ;
+描出 > byoushutsu\ ;
+土壁 > tsuchikabe\ ;
+手続 > tetsudzuki\ ;
+螢石 > hotaruishi\ ;
+蜜蜂 > mitsubachi\ ;
+箱柳 > hakoyanagi\ ;
+箱枕 > hakomakura\ ;
+米俵 > komedawara\ ;
+蜂蜜 > hachimitsu\ ;
+竹筒 > takedzutsu\ ;
+端端 > hashibashi\ ;
+箒星 > houkiboshi\ ;
+蝶番 > choutsugai\ ;
+拠所 > yoridokoro\ ;
+黒鼠 > kuronezumi\ ;
+表口 > omoteguchi\ ;
+竈神 > kamadogami\ ;
+黒鮪 > kuromaguro\ ;
+簇出 > zokushutsu\ ;
+表出 > hyoushutsu\ ;
+唐衣 > karakoromo\ ;
+筆旁 > fudezukuri\ ;
+齣落 > komaotoshi\ ;
+錨綱 > ikaridzuna\ ;
+筒形 > tsutsugata\ ;
+深緑 > fukamidori\ ;
+鼻薬 > hanagusuri\ ;
+所柄 > tokorogara\ ;
+持主 > mochinushi\ ;
+拙劣 > setsuretsu\ ;
+蛍石 > hotaruishi\ ;
+漂失 > hyoushitsu\ ;
+針鼠 > harinezumi\ ;
+流質 > ryuushichi\ ;
+抽出 > chuushutsu\ ;
+蜜月 > mitsugetsu\ ;
+空涙 > soranamida\ ;
+渋渋 > shibushibu\ ;
+滲出 > shinshutsu\ ;
+福袋 > fukubukuro\ ;
+筒先 > tsutsusaki\ ;
+筆力 > hitsuryoku\ ;
+抄出 > shoushutsu\ ;
+我心 > wagakokoro\ ;
+黒苺 > kuroichigo\ ;
+秩禄 > chitsuroku\ ;
+又隣 > matadonari\ ;
+金鋏 > kanabasami\ ;
+懐手 > futokorode\ ;
+黒緑 > kuromidori\ ;
+慄烈 > ritsuretsu\ ;
+鋸歯 > nokogiriba\ ;
+溌剌 > hatsuratsu\ ;
+惟神 > kan''nagara\ ;
+海燕 > umitsubame\ ;
+金袋 > kanabukuro\ ;
+油虫 > aburamushi\ ;
+銀狐 > gingitsune\ ;
+南風 > minamikaze\ ;
+虐殺 > gyakusatsu\ ;
+水鏡 > mizukagami\ ;
+活物 > katsubutsu\ ;
+卵酒 > tamagozake\ ;
+節々 > fushibushi\ ;
+都鳥 > miyakodori\ ;
+決裂 > ketsuretsu\ ;
+薬箱 > kusuribako\ ;
+麦畑 > mugibatake\ ;
+黒漆 > kokushitsu\ ;
+喉仏 > nodobotoke\ ;
+金聾 > kanatsunbo\ ;
+吸湿 > kyuushitsu\ ;
+水薬 > mizugusuri\ ;
+泉熱 > izuminetsu\ ;
+浴室 > yokushitsu\ ;
+愛娘 > manamusume\ ;
+古狸 > furudanuki\ ;
+河烏 > kawagarasu\ ;
+私宛 > watashiate\ ;
+必罰 > hitsubatsu\ ;
+祝日 > shukujitsu\ ;
+吊橋 > tsuribashi\ ;
+形許 > katabakari\ ;
+沸沸 > futsufutsu\ ;
+波枕 > namimakura\ ;
+碇綱 > ikaridzuna\ ;
+水秤 > mizubakari\ ;
+流失 > ryuushitsu\ ;
+浸出 > shinshutsu\ ;
+鉋屑 > kan''nakuzu\ ;
+菱餅 > hishimochi\ ;
+吉日 > kichinichi\ ;
+薬指 > kusuriyubi\ ;
+各方 > onoonogata\ ;
+金槌 > kanadzuchi\ ;
+砂袋 > sunabukuro\ ;
+咄咄 > totsutotsu\ ;
+前頭 > maegashira\ ;
+流出 > ryuushutsu\ ;
+活力 > katsuryoku\ ;
+卵焼 > tamagoyaki\ ;
+水煙 > mizukemuri\ ;
+道道 > michimichi\ ;
+強腰 > tsuyogoshi\ ;
+活仏 > katsubutsu\ ;
+初霜 > hatsushimo\ ;
+右左 > migihidari\ ;
+各室 > kakushitsu\ ;
+着雪 > chakusetsu\ ;
+必滅 > hitsumetsu\ ;
+里心 > satogokoro\ ;
+葵祭 > aoimatsuri\ ;
+油壷 > aburatsubo\ ;
+渋々 > shibushibu\ ;
+刻足 > kizamiashi\ ;
+水枕 > mizumakura\ ;
+勅筆 > chokuhitsu\ ;
+鰯雲 > iwashigumo\ ;
+心柄 > kokorogara\ ;
+睦言 > mutsugoto\ ;
+収奪 > shuudatsu\ ;
+恐喝 > kyoukatsu\ ;
+目頭 > megashira\ ;
+草餠 > kusamochi\ ;
+劇職 > gekishoku\ ;
+薬代 > kusuridai\ ;
+強直 > kyouchoku\ ;
+各冊 > kakusatsu\ ;
+通説 > tsuusetsu\ ;
+河口 > kawaguchi\ ;
+逆賊 > gyakuzoku\ ;
+道草 > michikusa\ ;
+死神 > shinigami\ ;
+適職 > tekishoku\ ;
+欠落 > ketsuraku\ ;
+巻鮨 > makizushi\ ;
+勝率 > shouritsu\ ;
+出軍 > shutsugun\ ;
+半日 > han''nichi\ ;
+厄年 > yakudoshi\ ;
+剥脱 > hakudatsu\ ;
+徒桜 > adazakura\ ;
+千日 > sen''nichi\ ;
+別行 > betsugyou\ ;
+落着 > rakuchaku\ ;
+逆襲 > gyakushuu\ ;
+毒殺 > dokusatsu\ ;
+確実 > kakujitsu\ ;
+重出 > juushutsu\ ;
+口先 > kuchisaki\ ;
+口元 > kuchimoto\ ;
+式目 > shikimoku\ ;
+卓抜 > takubatsu\ ;
+没入 > botsunyuu\ ;
+右下 > migishita\ ;
+強烈 > kyouretsu\ ;
+逸脱 > itsudatsu\ ;
+白黒 > shirokuro\ ;
+直達 > jikitatsu\ ;
+恋仇 > koigataki\ ;
+直進 > chokushin\ ;
+直通 > chokutsuu\ ;
+剽窃 > hyousetsu\ ;
+割箸 > waribashi\ ;
+免黜 > menchutsu\ ;
+金仏 > kanabutsu\ ;
+白鷺 > shirasagi\ ;
+醵出 > kyoshutsu\ ;
+直轄 > chokkatsu\ ;
+占師 > uranaishi\ ;
+皮靴 > kawagutsu\ ;
+急切 > kyuusetsu\ ;
+酉年 > toridoshi\ ;
+真裸 > mappadaka\ ;
+出血 > shukketsu\ ;
+白鱚 > shirogisu\ ;
+道筋 > michisuji\ ;
+道端 > michibata\ ;
+卸売 > oroshiuri\ ;
+忘失 > boushitsu\ ;
+蔭口 > kageguchi\ ;
+卵大 > tamagodai\ ;
+初花 > hatsuhana\ ;
+道程 > michinori\ ;
+白髪 > hakuhatsu\ ;
+磔刑 > haritsuke\ ;
+彦星 > hikoboshi\ ;
+辛辣 > shinratsu\ ;
+正物 > shoubutsu\ ;
+品々 > shinajina\ ;
+出藍 > shutsuran\ ;
+年若 > toshiwaka\ ;
+逆臣 > gyakushin\ ;
+平芝 > hirashiba\ ;
+横面 > yokotsura\ ;
+直読 > chokudoku\ ;
+凝血 > gyouketsu\ ;
+逃腰 > nigegoshi\ ;
+心太 > tokoroten\ ;
+心天 > tokoroten\ ;
+直訳 > chokuyaku\ ;
+初耳 > hatsumimi\ ;
+白雪 > hakusetsu\ ;
+出色 > shusshoku\ ;
+廃疾 > haishitsu\ ;
+劇烈 > gekiretsu\ ;
+速筆 > sokuhitsu\ ;
+水口 > mizuguchi\ ;
+殺戮 > satsuriku\ ;
+後室 > koushitsu\ ;
+蓄妾 > chikushou\ ;
+出群 > shutsugun\ ;
+進発 > shinpatsu\ ;
+茶袋 > chabukuro\ ;
+初空 > hatsuzora\ ;
+横道 > yokomichi\ ;
+落札 > rakusatsu\ ;
+刮目 > katsumoku\ ;
+白酒 > shirozake\ ;
+勘所 > kandokoro\ ;
+追突 > tsuitotsu\ ;
+式服 > shikifuku\ ;
+協力 > kyouryoku\ ;
+石持 > ishimochi\ ;
+落日 > rakujitsu\ ;
+逸物 > ichimotsu\ ;
+直腸 > chokuchou\ ;
+歴日 > rekijitsu\ ;
+進物 > shinmotsu\ ;
+出立 > shuttatsu\ ;
+真筆 > shinpitsu\ ;
+正月 > shougatsu\ ;
+凝縮 > gyoushuku\ ;
+着目 > chakumoku\ ;
+六識 > rokushiki\ ;
+凝結 > gyouketsu\ ;
+眼疾 > ganshitsu\ ;
+歌枕 > utamakura\ ;
+X線 > ekkususen\ ;
+知悉 > chishitsu\ ;
+別物 > betsumono\ ;
+直結 > chokketsu\ ;
+凝立 > gyouritsu\ ;
+常節 > tokobushi\ ;
+標識 > hyoushiki\ ;
+後出 > koushutsu\ ;
+初物 > hatsumono\ ;
+花道 > hanamichi\ ;
+出発 > shuppatsu\ ;
+北口 > kitaguchi\ ;
+年玉 > toshidama\ ;
+橙色 > daidaiiro\ ;
+矩差 > kanezashi\ ;
+千万 > chiyorozu\ ;
+弓弦 > yumidzuru\ ;
+盲穴 > mekuraana\ ;
+草箒 > kusabouki\ ;
+出現 > shutsugen\ ;
+凝着 > gyouchaku\ ;
+劣弱 > retsujaku\ ;
+真率 > shinsotsu\ ;
+苦虫 > nigamushi\ ;
+橋脚 > kyoukyaku\ ;
+左腕 > hidariude\ ;
+高鼾 > takaibiki\ ;
+真物 > shinbutsu\ ;
+弔客 > choukyaku\ ;
+百薬 > hyakuyaku\ ;
+茶筒 > chadzutsu\ ;
+弟娘 > otomusume\ ;
+省略 > shouryaku\ ;
+逆流 > gyakuryuu\ ;
+歌心 > utagokoro\ ;
+週末 > shuumatsu\ ;
+着氷 > chakuhyou\ ;
+白菊 > shiragiku\ ;
+年波 > toshinami\ ;
+正室 > seishitsu\ ;
+菊月 > kikudzuki\ ;
+別業 > betsugyou\ ;
+年毎 > toshigoto\ ;
+週日 > shuujitsu\ ;
+花街 > hanamachi\ ;
+川縁 > kawabuchi\ ;
+形代 > katashiro\ ;
+白色 > hakushoku\ ;
+別棟 > betsumune\ ;
+冊立 > sakuritsu\ ;
+島風 > shimakaze\ ;
+弱卒 > jakusotsu\ ;
+僕達 > bokutachi\ ;
+髭面 > higedzura\ ;
+張力 > chouryoku\ ;
+軟質 > nanshitsu\ ;
+菱形 > hishigata\ ;
+進捗 > shinchoku\ ;
+僻説 > hekisetsu\ ;
+茶畑 > chabatake\ ;
+横綱 > yokodzuna\ ;
+兎耳 > usagimimi\ ;
+出欠 > shukketsu\ ;
+島陰 > shimakage\ ;
+矢印 > yajirushi\ ;
+着服 > chakufuku\ ;
+建坪 > tatetsubo\ ;
+副尺 > fukushaku\ ;
+初春 > hatsuharu\ ;
+共立 > kyouritsu\ ;
+花菱 > hanabishi\ ;
+延坪 > nobetsubo\ ;
+極量 > kyokuryou\ ;
+良識 > ryoushiki\ ;
+弟分 > otoutobun\ ;
+色調 > shikichou\ ;
+鳶口 > tobiguchi\ ;
+八福 > hachifuku\ ;
+色覚 > shikikaku\ ;
+石仏 > sekibutsu\ ;
+歳出 > saishutsu\ ;
+直流 > chokuryuu\ ;
+芍薬 > shakuyaku\ ;
+出札 > shussatsu\ ;
+割増 > warimashi\ ;
+芝草 > shibakusa\ ;
+真東 > mahigashi\ ;
+樸直 > bokuchoku\ ;
+剥奪 > hakudatsu\ ;
+幕末 > bakumatsu\ ;
+椎骨 > tsuikotsu\ ;
+正出 > seishutsu\ ;
+凶日 > kyoujitsu\ ;
+遊失 > yuushitsu\ ;
+車蝦 > kurumaebi\ ;
+初役 > hatsuyaku\ ;
+選出 > senshutsu\ ;
+逆心 > gyakushin\ ;
+迫持 > serimochi\ ;
+着床 > chakushou\ ;
+年弱 > toshiyowa\ ;
+山鶉 > yamauzura\ ;
+W杯 > daburuhai\ ;
+着席 > chakuseki\ ;
+辻札 > tsujifuda\ ;
+適切 > tekisetsu\ ;
+発病 > hatsubyou\ ;
+病識 > byoushiki\ ;
+創出 > soushutsu\ ;
+別室 > besshitsu\ ;
+年嵩 > toshikasa\ ;
+初孫 > hatsumago\ ;
+出御 > shutsugyo\ ;
+幽室 > yuushitsu\ ;
+白玉 > shiratama\ ;
+直撃 > chokugeki\ ;
+年寄 > toshiyori\ ;
+榎茸 > enokitake\ ;
+船虫 > funamushi\ ;
+白熱 > hakunetsu\ ;
+極薄 > kyokuhaku\ ;
+白熊 > shirokuma\ ;
+帆柱 > hobashira\ ;
+割付 > waritsuke\ ;
+初夢 > hatsuyume\ ;
+分室 > bunshitsu\ ;
+庶出 > shoshutsu\ ;
+入滅 > nyuumetsu\ ;
+割下 > warishita\ ;
+市松 > ichimatsu\ ;
+優男 > yasaotoko\ ;
+花町 > hanamachi\ ;
+轢殺 > rekisatsu\ ;
+癈疾 > haishitsu\ ;
+真実 > shinjitsu\ ;
+白滝 > shirataki\ ;
+速口 > hayakuchi\ ;
+進入 > shin''nyuu\ ;
+儲物 > moukemono\ ;
+腰高 > koshidaka\ ;
+橋桁 > hashigeta\ ;
+骨質 > kosshitsu\ ;
+腰骨 > koshibone\ ;
+修飾 > shuushoku\ ;
+白浪 > shiranami\ ;
+白浜 > shirahama\ ;
+艶種 > tsuyadane\ ;
+速力 > sokuryoku\ ;
+辻店 > tsujimise\ ;
+白波 > shiranami\ ;
+茶所 > chadokoro\ ;
+広口 > hirokuchi\ ;
+尺骨 > shakkotsu\ ;
+出塁 > shutsurui\ ;
+目庇 > mabisashi\ ;
+白水 > shiromizu\ ;
+色神 > shikishin\ ;
+入植 > nyuushoku\ ;
+直属 > chokuzoku\ ;
+初出 > shoshutsu\ ;
+凡失 > bonshitsu\ ;
+六月 > rokugatsu\ ;
+入札 > nyuusatsu\ ;
+送出 > soushutsu\ ;
+山道 > yamamichi\ ;
+退出 > taishutsu\ ;
+楽節 > gakusetsu\ ;
+常夏 > tokonatsu\ ;
+申達 > shintatsu\ ;
+若松 > wakamatsu\ ;
+局長 > kyokuchou\ ;
+鬼瓦 > onigawara\ ;
+帝室 > teishitsu\ ;
+床下 > yukashita\ ;
+着信 > chakushin\ ;
+白札 > shirofuda\ ;
+切入 > setsunyuu\ ;
+標札 > hyousatsu\ ;
+出動 > shutsudou\ ;
+迫力 > hakuryoku\ ;
+屑鉄 > kuzutetsu\ ;
+髪綱 > kamidzuna\ ;
+逐一 > chikuichi\ ;
+侵食 > shinshoku\ ;
+花氷 > hanagoori\ ;
+俄雨 > niwakaame\ ;
+膠質 > koushitsu\ ;
+茶室 > chashitsu\ ;
+白日 > hakujitsu\ ;
+侠骨 > kyoukotsu\ ;
+少食 > shoushoku\ ;
+巳年 > hebidoshi\ ;
+艶物 > tsuyamono\ ;
+小食 > shoushoku\ ;
+冷奴 > hiyayakko\ ;
+小頭 > kogashira\ ;
+屈辱 > kutsujoku\ ;
+骨膜 > kotsumaku\ ;
+町角 > machikado\ ;
+辻君 > tsujigimi\ ;
+省力 > shouryoku\ ;
+鯉幟 > koinobori\ ;
+赤鰯 > akaiwashi\ ;
+骨肉 > kotsuniku\ ;
+内室 > naishitsu\ ;
+川岸 > kawagishi\ ;
+幕下 > makushita\ ;
+目印 > mejirushi\ ;
+尻軽 > shirigaru\ ;
+男衆 > otokoshuu\ ;
+鰐口 > waniguchi\ ;
+信越 > shin''etsu\ ;
+俊逸 > shun''itsu\ ;
+属託 > shokutaku\ ;
+盲判 > mekuraban\ ;
+胸骨 > kyoukotsu\ ;
+寝食 > shinshoku\ ;
+色沢 > shikitaku\ ;
+六尺 > rokushaku\ ;
+辛口 > karakuchi\ ;
+色欲 > shikiyoku\ ;
+極熱 > gokunetsu\ ;
+跳虫 > tobimushi\ ;
+痛烈 > tsuuretsu\ ;
+臣節 > shinsetsu\ ;
+骨箱 > kotsubako\ ;
+皇室 > koushitsu\ ;
+俗説 > zokusetsu\ ;
+儲役 > moukeyaku\ ;
+供述 > kyoujutsu\ ;
+峻烈 > shunretsu\ ;
+男腹 > otokobara\ ;
+極流 > kyokuryuu\ ;
+略章 > ryakushou\ ;
+再出 > saishutsu\ ;
+川口 > kawaguchi\ ;
+良日 > ryoujitsu\ ;
+略称 > ryakushou\ ;
+左前 > hidarimae\ ;
+対質 > taishitsu\ ;
+小説 > shousetsu\ ;
+左党 > hidaritou\ ;
+脇道 > wakimichi\ ;
+棹秤 > saobakari\ ;
+桜貝 > sakuragai\ ;
+病没 > byoubotsu\ ;
+共力 > kyouryoku\ ;
+船橋 > funabashi\ ;
+髪油 > kamiabura\ ;
+病歿 > byoubotsu\ ;
+侵蝕 > shinshoku\ ;
+病欠 > byouketsu\ ;
+八切 > yatsugiri\ ;
+入力 > nyuuryoku\ ;
+町筋 > machisuji\ ;
+色慾 > shikiyoku\ ;
+脂足 > aburaashi\ ;
+町立 > chouritsu\ ;
+脚註 > kyakuchuu\ ;
+極月 > gokugetsu\ ;
+脂質 > shishitsu\ ;
+舟橋 > funahashi\ ;
+供血 > kyouketsu\ ;
+川下 > kawashimo\ ;
+実録 > jitsuroku\ ;
+畜生 > chikushou\ ;
+色弱 > shikijaku\ ;
+発出 > hasshutsu\ ;
+腰縄 > koshinawa\ ;
+生節 > namabushi\ ;
+就職 > shuushoku\ ;
+足腰 > ashikoshi\ ;
+入仏 > nyuubutsu\ ;
+入交 > irimajiri\ ;
+腰紐 > koshihimo\ ;
+修築 > shuuchiku\ ;
+肉食 > nikushoku\ ;
+信約 > shin''yaku\ ;
+脱落 > datsuraku\ ;
+体質 > taishitsu\ ;
+輩出 > haishutsu\ ;
+修祓 > shuufutsu\ ;
+学閥 > gakubatsu\ ;
+位負 > kuraimake\ ;
+苗代 > nawashiro\ ;
+山男 > yamaotoko\ ;
+桜草 > sakurasou\ ;
+客足 > kyakuashi\ ;
+属目 > shokumoku\ ;
+俗筆 > zokuhitsu\ ;
+小職 > shoushoku\ ;
+償却 > shoukyaku\ ;
+楽律 > gakuritsu\ ;
+桜色 > sakurairo\ ;
+小羊 > kohitsuji\ ;
+実質 > jisshitsu\ ;
+肘鉄 > hijitetsu\ ;
+賃餅 > chinmochi\ ;
+宝貝 > takaragai\ ;
+軽口 > karukuchi\ ;
+超脱 > choudatsu\ ;
+男物 > otokomono\ ;
+職長 > shokuchou\ ;
+仏顔 > hotokegao\ ;
+仏領 > futsuryou\ ;
+略歴 > ryakureki\ ;
+骨柄 > kotsugara\ ;
+赤色 > sekishoku\ ;
+小節 > shousetsu\ ;
+尻癖 > shirikuse\ ;
+膠漆 > koushitsu\ ;
+島影 > shimakage\ ;
+極小 > kyokushou\ ;
+俵物 > hyoumotsu\ ;
+生爪 > namadzume\ ;
+松風 > matsukaze\ ;
+超絶 > chouzetsu\ ;
+船室 > senshitsu\ ;
+腺熱 > sen''netsu\ ;
+束髪 > sokuhatsu\ ;
+転出 > tenshutsu\ ;
+脩竹 > shuuchiku\ ;
+島島 > shimajima\ ;
+略服 > ryakufuku\ ;
+島山 > shimayama\ ;
+鬱勃 > utsubotsu\ ;
+東雲 > shinonome\ ;
+生滅 > shoumetsu\ ;
+俗物 > zokubutsu\ ;
+脱硫 > datsuryuu\ ;
+脈絡 > myakuraku\ ;
+学識 > gakushiki\ ;
+侵略 > shinryaku\ ;
+学説 > gakusetsu\ ;
+職責 > shokuseki\ ;
+艶事 > tsuyagoto\ ;
+玉鴫 > tamashigi\ ;
+瓦版 > kawaraban\ ;
+傷口 > kizuguchi\ ;
+密約 > mitsuyaku\ ;
+学術 > gakujutsu\ ;
+軒下 > nokishita\ ;
+車代 > kurumadai\ ;
+借料 > shakuryou\ ;
+資質 > shishitsu\ ;
+人達 > hitotachi\ ;
+候文 > souroubun\ ;
+寺男 > teraotoko\ ;
+極北 > kyokuhoku\ ;
+脱獄 > datsugoku\ ;
+町方 > machikata\ ;
+痛切 > tsuusetsu\ ;
+高坏 > takatsuki\ ;
+貸賃 > kashichin\ ;
+倉敷 > kurashiki\ ;
+乞食 > kotsujiki\ ;
+伸縮 > shinshuku\ ;
+人質 > hitojichi\ ;
+朝食 > choushoku\ ;
+疵口 > kizuguchi\ ;
+峻別 > shunbetsu\ ;
+届書 > todokesho\ ;
+客筋 > kyakusuji\ ;
+服飾 > fukushoku\ ;
+傑出 > kesshutsu\ ;
+休職 > kyuushoku\ ;
+甲所 > kandokoro\ ;
+二道 > futamichi\ ;
+船主 > funanushi\ ;
+食通 > shokutsuu\ ;
+客種 > kyakudane\ ;
+賊虐 > zokugyaku\ ;
+乳鉢 > nyuubachi\ ;
+月額 > getsugaku\ ;
+月頃 > tsukigoro\ ;
+作男 > sakuotoko\ ;
+男役 > otokoyaku\ ;
+上鶲 > joubitaki\ ;
+腕枕 > udemakura\ ;
+赤熱 > sekinetsu\ ;
+舌先 > shitasaki\ ;
+腹持 > haramochi\ ;
+珍説 > chinsetsu\ ;
+付落 > tsukeochi\ ;
+腰掛 > koshikake\ ;
+久闊 > kyuukatsu\ ;
+密猟 > mitsuryou\ ;
+申年 > sarudoshi\ ;
+材質 > zaishitsu\ ;
+松蝉 > matsuzemi\ ;
+京表 > kyouomote\ ;
+脚注 > kyakuchuu\ ;
+梅暦 > umegoyomi\ ;
+作物 > sakumotsu\ ;
+賞罰 > shoubatsu\ ;
+子羊 > kohitsuji\ ;
+室町 > muromachi\ ;
+小曲 > shoukyoku\ ;
+検出 > kenshutsu\ ;
+俊抜 > shunbatsu\ ;
+密漁 > mitsuryou\ ;
+肉筆 > nikuhitsu\ ;
+腰弱 > koshiyowa\ ;
+胆玉 > kimottama\ ;
+松茸 > matsutake\ ;
+桜桃 > sakuranbo\ ;
+寂滅 > jakumetsu\ ;
+本質 > honshitsu\ ;
+仔羊 > kohitsuji\ ;
+産室 > sanshitsu\ ;
+腰布 > koshinuno\ ;
+腰巻 > koshimaki\ ;
+佃煮 > tsukudani\ ;
+侵掠 > shinryaku\ ;
+桁橋 > ketabashi\ ;
+朴訥 > bokutotsu\ ;
+食虫 > shokuchuu\ ;
+松脂 > matsuyani\ ;
+七難 > shichinan\ ;
+低湿 > teishitsu\ ;
+男坂 > otokozaka\ ;
+宿泊 > shukuhaku\ ;
+伯爵 > hakushaku\ ;
+梓弓 > azusayumi\ ;
+餅肌 > mochihada\ ;
+居室 > kyoshitsu\ ;
+木訥 > bokutotsu\ ;
+額際 > hitaigiwa\ ;
+留別 > ryuubetsu\ ;
+信実 > shinjitsu\ ;
+贈物 > okurimono\ ;
+駐日 > chuunichi\ ;
+柿渋 > kakishibu\ ;
+下金 > shitagane\ ;
+中越 > chuugoshi\ ;
+媒質 > baishitsu\ ;
+乾草 > hoshigusa\ ;
+琴爪 > kotodzume\ ;
+腰垣 > koshigaki\ ;
+係官 > kakarikan\ ;
+脈搏 > myakuhaku\ ;
+玉虫 > tamamushi\ ;
+生唾 > namatsuba\ ;
+食肉 > shokuniku\ ;
+松笠 > matsukasa\ ;
+脈拍 > myakuhaku\ ;
+七道 > shichidou\ ;
+申入 > moushiire\ ;
+客様 > kyakusama\ ;
+乳色 > nyuushoku\ ;
+曲調 > kyokuchou\ ;
+借主 > karinushi\ ;
+乾肉 > hoshiniku\ ;
+宿料 > shukuryou\ ;
+実業 > jitsugyou\ ;
+宿敵 > shukuteki\ ;
+七輪 > shichirin\ ;
+産出 > sanshutsu\ ;
+何日 > nan''nichi\ ;
+質点 > shitsuten\ ;
+脳室 > noushitsu\ ;
+山伏 > yamabushi\ ;
+実株 > jitsukabu\ ;
+侵奪 > shindatsu\ ;
+町中 > machinaka\ ;
+町並 > machinami\ ;
+上質 > joushitsu\ ;
+下貼 > shitabari\ ;
+食紅 > shokubeni\ ;
+侠客 > kyoukyaku\ ;
+更衣 > koromogae\ ;
+食糧 > shokuryou\ ;
+中表 > nakaomote\ ;
+小姑 > kojuutome\ ;
+栃木 > tochinoki\ ;
+脂性 > aburashou\ ;
+倉主 > kuranushi\ ;
+七賢 > shichiken\ ;
+尻取 > shiritori\ ;
+格式 > kakushiki\ ;
+昼鳶 > hirutonbi\ ;
+亮直 > ryouchoku\ ;
+暢達 > choutatsu\ ;
+腰元 > koshimoto\ ;
+脇差 > wakizashi\ ;
+杉箸 > sugibashi\ ;
+付焼 > tsukeyaki\ ;
+学殖 > gakushoku\ ;
+株式 > kabushiki\ ;
+柏槙 > byakushin\ ;
+独酌 > dokushaku\ ;
+寅年 > toradoshi\ ;
+質権 > shichiken\ ;
+小咄 > kobanashi\ ;
+丸腰 > marugoshi\ ;
+昼飯 > hirumeshi\ ;
+伐木 > batsuboku\ ;
+俊傑 > shunketsu\ ;
+職歴 > shokureki\ ;
+之繞 > shin''nyuu\ ;
+架橋 > kakehashi\ ;
+柏木 > kashiwagi\ ;
+仮橋 > karibashi\ ;
+豆粒 > mametsubu\ ;
+休日 > kyuujitsu\ ;
+中腰 > chuugoshi\ ;
+上薬 > uwagusuri\ ;
+密室 > misshitsu\ ;
+玉章 > gyokushou\ ;
+侵入 > shin''nyuu\ ;
+宿将 > shukushou\ ;
+将卒 > shousotsu\ ;
+両舌 > ryouzetsu\ ;
+職業 > shokugyou\ ;
+導出 > doushutsu\ ;
+宿学 > shukugaku\ ;
+小冊 > shousatsu\ ;
+両脚 > ryoukyaku\ ;
+脱出 > dasshutsu\ ;
+客席 > kyakuseki\ ;
+下草 > shitakusa\ ;
+射出 > shashutsu\ ;
+暦術 > rekijutsu\ ;
+朴直 > bokuchoku\ ;
+赤土 > akatsuchi\ ;
+脅喝 > kyoukatsu\ ;
+中絶 > chuuzetsu\ ;
+下腹 > shitabara\ ;
+脱俗 > datsuzoku\ ;
+柏手 > kashiwade\ ;
+乾物 > hoshimono\ ;
+実学 > jitsugaku\ ;
+桟俵 > sandawara\ ;
+猟色 > ryoushoku\ ;
+一脈 > ichimyaku\ ;
+赤口 > sekiguchi\ ;
+中立 > chuuritsu\ ;
+職掌 > shokushou\ ;
+室外 > shitsugai\ ;
+寒卵 > kantamago\ ;
+島々 > shimajima\ ;
+質感 > shitsukan\ ;
+格別 > kakubetsu\ ;
+核力 > kakuryoku\ ;
+両端 > ryouhashi\ ;
+両立 > ryouritsu\ ;
+耐湿 > taishitsu\ ;
+下紐 > shitahimo\ ;
+今日 > kon''nichi\ ;
+早飯 > hayameshi\ ;
+貸方 > kashikata\ ;
+乾湿 > kanshitsu\ ;
+額縁 > gakubuchi\ ;
+一粒 > hitotsubu\ ;
+嫡流 > chakuryuu\ ;
+曲目 > kyokumoku\ ;
+食欲 > shokuyoku\ ;
+柴垣 > shibagaki\ ;
+亮月 > ryougetsu\ ;
+下穿 > shitabaki\ ;
+一節 > hitofushi\ ;
+革靴 > kawagutsu\ ;
+中略 > chuuryaku\ ;
+状袋 > joubukuro\ ;
+物量 > butsuryou\ ;
+末流 > matsuryuu\ ;
+株主 > kabunushi\ ;
+下石 > shitaishi\ ;
+飯時 > meshidoki\ ;
+作付 > sakudzuke\ ;
+上瞼 > uwamabuta\ ;
+伯叔 > hakushuku\ ;
+爪革 > tsumakawa\ ;
+室内 > shitsunai\ ;
+宿主 > yadonushi\ ;
+久濶 > kyuukatsu\ ;
+二月 > futatsuki\ ;
+日録 > nichiroku\ ;
+一瞥 > ichibetsu\ ;
+令室 > reishitsu\ ;
+体中 > karadajuu\ ;
+仲好 > nakayoshi\ ;
+食料 > shokuryou\ ;
+調髪 > chouhatsu\ ;
+物質 > busshitsu\ ;
+早道 > hayamichi\ ;
+新雪 > shinsetsu\ ;
+片道 > katamichi\ ;
+特設 > tokusetsu\ ;
+仏学 > butsugaku\ ;
+露霜 > tsuyujimo\ ;
+札束 > satsutaba\ ;
+夏鳥 > natsudori\ ;
+質問 > shitsumon\ ;
+独立 > dokuritsu\ ;
+月次 > tsukinami\ ;
+謬説 > byuusetsu\ ;
+学卒 > gakusotsu\ ;
+曲流 > kyokuryuu\ ;
+食慾 > shokuyoku\ ;
+一物 > ichimotsu\ ;
+奴輩 > yatsubara\ ;
+学力 > gakuryoku\ ;
+亮察 > ryousatsu\ ;
+中次 > nakatsugi\ ;
+質券 > shichiken\ ;
+孤児 > minashigo\ ;
+旧識 > kyuushiki\ ;
+人妻 > hitodzuma\ ;
+新釈 > shinshaku\ ;
+日諾 > nichidaku\ ;
+旧説 > kyuusetsu\ ;
+股下 > matashita\ ;
+珍客 > chinkyaku\ ;
+外面 > sotodzura\ ;
+春色 > shunshoku\ ;
+翌月 > yokugetsu\ ;
+聴力 > chouryoku\ ;
+京女 > kyouon''na\ ;
+串柿 > kushigaki\ ;
+九折 > kyuusetsu\ ;
+翌日 > yokujitsu\ ;
+斟酌 > shinshaku\ ;
+両極 > ryoukyoku\ ;
+仏名 > butsumyou\ ;
+特色 > tokushoku\ ;
+亡失 > boushitsu\ ;
+食客 > shokkyaku\ ;
+父親 > chichioya\ ;
+仮住 > karizumai\ ;
+了察 > ryousatsu\ ;
+雪靴 > yukigutsu\ ;
+現出 > genshutsu\ ;
+仏力 > butsuriki\ ;
+調達 > choutatsu\ ;
+下様 > shimozama\ ;
+繰越 > kurikoshi\ ;
+物腰 > monogoshi\ ;
+三椏 > mitsumata\ ;
+両日 > ryoujitsu\ ;
+松原 > matsubara\ ;
+賃借 > chinshaku\ ;
+熟食 > jukushoku\ ;
+新説 > shinsetsu\ ;
+付人 > tsukebito\ ;
+新訳 > shin''yaku\ ;
+新設 > shinsetsu\ ;
+玉将 > gyokushou\ ;
+月影 > tsukikage\ ;
+月形 > tsukigata\ ;
+七曜 > shichiyou\ ;
+一月 > hitotsuki\ ;
+天質 > tenshitsu\ ;
+下敷 > shitajiki\ ;
+七星 > shichisei\ ;
+星空 > hoshizora\ ;
+特筆 > tokuhitsu\ ;
+一日 > tsuitachi\ ;
+人伝 > hitodzute\ ;
+狐火 > kitsunebi\ ;
+爆裂 > bakuretsu\ ;
+特立 > tokuritsu\ ;
+人付 > hitodzuki\ ;
+青萍 > aoukikusa\ ;
+失言 > shitsugen\ ;
+雪道 > yukimichi\ ;
+雑録 > zatsuroku\ ;
+女腹 > on''nabara\ ;
+食卓 > shokutaku\ ;
+熱量 > netsuryou\ ;
+雪辱 > setsujoku\ ;
+新薬 > shin''yaku\ ;
+頭株 > atamakabu\ ;
+失血 > shikketsu\ ;
+暦月 > rekigetsu\ ;
+変質 > henshitsu\ ;
+食出 > hamidashi\ ;
+夜話 > yobanashi\ ;
+一抹 > ichimatsu\ ;
+天袋 > tenbukuro\ ;
+靴紐 > kutsuhimo\ ;
+暦日 > rekijitsu\ ;
+詳述 > shoujutsu\ ;
+食傷 > shokushou\ ;
+特発 > tokuhatsu\ ;
+靴篦 > kutsubera\ ;
+下役 > shitayaku\ ;
+両岸 > ryougishi\ ;
+曲学 > kyokugaku\ ;
+熟達 > jukutatsu\ ;
+靴箆 > kutsubera\ ;
+丑年 > ushidoshi\ ;
+露草 > tsuyukusa\ ;
+評釈 > hyoushaku\ ;
+一律 > ichiritsu\ ;
+物療 > butsuryou\ ;
+風口 > kazaguchi\ ;
+夏蝉 > natsuzemi\ ;
+霞草 > kasumisou\ ;
+牧畜 > bokuchiku\ ;
+調色 > choushoku\ ;
+焼餅 > yakimochi\ ;
+末僚 > batsuryou\ ;
+註釈 > chuushaku\ ;
+詳説 > shousetsu\ ;
+新緑 > shinryoku\ ;
+失脚 > shikkyaku\ ;
+失職 > shisshoku\ ;
+新約 > shin''yaku\ ;
+夏菊 > natsugiku\ ;
+縞蛇 > shimahebi\ ;
+中哲 > chuutetsu\ ;
+訳述 > yakujutsu\ ;
+新築 > shinchiku\ ;
+夏草 > natsugusa\ ;
+玉串 > tamagushi\ ;
+中口 > nakaguchi\ ;
+女癖 > on''naguse\ ;
+姥桜 > ubazakura\ ;
+中卒 > chuusotsu\ ;
+下坂 > shimosaka\ ;
+風下 > kazashimo\ ;
+霞網 > kasumiami\ ;
+両口 > ryouguchi\ ;
+爪皮 > tsumakawa\ ;
+爆竹 > bakuchiku\ ;
+日独 > nichidoku\ ;
+旧物 > kyuubutsu\ ;
+獣偏 > kemonohen\ ;
+露程 > tsuyuhodo\ ;
+調節 > chousetsu\ ;
+頭字 > kashiraji\ ;
+獄卒 > gokusotsu\ ;
+給食 > kyuushoku\ ;
+且又 > katsumata\ ;
+月並 > tsukinami\ ;
+物流 > butsuryuu\ ;
+両凸 > ryoutotsu\ ;
+陳述 > chinjutsu\ ;
+新着 > shinchaku\ ;
+女物 > on''namono\ ;
+不印 > fujirushi\ ;
+書付 > kakitsuke\ ;
+詰草 > tsumekusa\ ;
+中位 > chuugurai\ ;
+熊蜂 > kumabachi\ ;
+教職 > kyoushoku\ ;
+失礼 > shitsurei\ ;
+七厘 > shichirin\ ;
+物欲 > butsuyoku\ ;
+一口 > hitokuchi\ ;
+擂鉢 > suribachi\ ;
+爆発 > bakuhatsu\ ;
+昨日 > sakujitsu\ ;
+縮約 > shukuyaku\ ;
+失着 > shitchaku\ ;
+一別 > ichibetsu\ ;
+一列 > ichiretsu\ ;
+下側 > shitagawa\ ;
+雀色 > suzumeiro\ ;
+一儲 > hitomouke\ ;
+族滅 > zokumetsu\ ;
+下作 > shitasaku\ ;
+調略 > chouryaku\ ;
+昔日 > sekijitsu\ ;
+断熱 > dan''netsu\ ;
+明日 > myounichi\ ;
+下下 > shimojimo\ ;
+敷石 > shikiishi\ ;
+特撮 > tokusatsu\ ;
+親閲 > shin''etsu\ ;
+願事 > negaigoto\ ;
+頻出 > hinshutsu\ ;
+網袋 > amibukuro\ ;
+料率 > ryouritsu\ ;
+角逐 > kakuchiku\ ;
+七三 > shichisan\ ;
+細面 > hosoomote\ ;
+集結 > shuuketsu\ ;
+西風 > nishikaze\ ;
+夏痩 > natsuyase\ ;
+物指 > monosashi\ ;
+星影 > hoshikage\ ;
+独力 > dokuryoku\ ;
+触診 > shokushin\ ;
+壺皿 > tsubozara\ ;
+罪人 > tsumibito\ ;
+物慾 > butsuyoku\ ;
+敷物 > shikimono\ ;
+雪男 > yukiotoko\ ;
+夏物 > natsumono\ ;
+統計 > baratsuki\ ;
+女方 > on''nagata\ ;
+新橋 > shinbashi\ ;
+熱病 > netsubyou\ ;
+電熱 > den''netsu\ ;
+星屑 > hoshikuzu\ ;
+隔絶 > kakuzetsu\ ;
+独仏 > dokufutsu\ ;
+妻室 > saishitsu\ ;
+物干 > monohoshi\ ;
+細道 > hosomichi\ ;
+糧食 > ryoushoku\ ;
+物差 > monosashi\ ;
+熱球 > netsukyuu\ ;
+縞物 > shimamono\ ;
+新枕 > niimakura\ ;
+給血 > kyuuketsu\ ;
+新札 > shinsatsu\ ;
+新月 > shingetsu\ ;
+新曲 > shinkyoku\ ;
+旧式 > kyuushiki\ ;
+詰物 > tsumemono\ ;
+烏貝 > karasugai\ ;
+靴底 > kutsuzoko\ ;
+旧年 > furutoshi\ ;
+星型 > hoshigata\ ;
+長髪 > chouhatsu\ ;
+女形 > on''nagata\ ;
+失望 > shitsubou\ ;
+焼結 > shouketsu\ ;
+塵紙 > chirigami\ ;
+失明 > shitsumei\ ;
+紙質 > shishitsu\ ;
+雪沓 > yukigutsu\ ;
+文月 > fumidzuki\ ;
+炭質 > tanshitsu\ ;
+誅殺 > chuusatsu\ ;
+大昔 > oomukashi\ ;
+長靴 > nagagutsu\ ;
+糸車 > itoguruma\ ;
+夜晒 > yozarashi\ ;
+夏服 > natsufuku\ ;
+靴墨 > kutsuzumi\ ;
+裸馬 > hadakauma\ ;
+妹分 > imoutobun\ ;
+日墨 > nichiboku\ ;
+新式 > shinshiki\ ;
+夏時 > natsudoki\ ;
+炸裂 > sakuretsu\ ;
+特別 > tokubetsu\ ;
+複雑 > fukuzatsu\ ;
+靴型 > kutsugata\ ;
+粒食 > ryuushoku\ ;
+結膜 > ketsumaku\ ;
+縞柄 > shimagara\ ;
+失恋 > shitsuren\ ;
+失念 > shitsunen\ ;
+雨曇 > amagumori\ ;
+評決 > hyouketsu\ ;
+調律 > chouritsu\ ;
+女坂 > on''nazaka\ ;
+続発 > zokuhatsu\ ;
+雑株 > zatsukabu\ ;
+諒察 > ryousatsu\ ;
+牛刺 > gyuusashi\ ;
+執著 > shuuchaku\ ;
+早口 > hayakuchi\ ;
+糖質 > toushitsu\ ;
+片口 > katakuchi\ ;
+細腰 > hosogoshi\ ;
+集札 > shuusatsu\ ;
+日出 > nisshutsu\ ;
+終結 > shuuketsu\ ;
+坪量 > tsuboryou\ ;
+奴凧 > yakkodako\ ;
+親筆 > shinpitsu\ ;
+綿油 > wataabura\ ;
+然然 > shikajika\ ;
+焦熱 > shounetsu\ ;
+夏山 > natsuyama\ ;
+爪切 > tsumekiri\ ;
+政所 > mandokoro\ ;
+教式 > kyoushiki\ ;
+爪先 > tsumasaki\ ;
+塩漬 > shiodzuke\ ;
+縮小 > shukushou\ ;
+下々 > shimojimo\ ;
+奔出 > honshutsu\ ;
+隔月 > kakugetsu\ ;
+撃発 > gekihatsu\ ;
+執筆 > shippitsu\ ;
+隔日 > kakujitsu\ ;
+新入 > shin''nyuu\ ;
+斥力 > sekiryoku\ ;
+終発 > shuuhatsu\ ;
+失命 > shitsumei\ ;
+坂道 > sakamichi\ ;
+失名 > shitsumei\ ;
+撲滅 > bokumetsu\ ;
+詳察 > shousatsu\ ;
+雪女 > yukion''na\ ;
+詳密 > shoumitsu\ ;
+雑学 > zatsugaku\ ;
+防湿 > boushitsu\ ;
+均質 > kinshitsu\ ;
+執着 > shuuchaku\ ;
+烏瓜 > karasuuri\ ;
+撲殺 > bokusatsu\ ;
+摘発 > tekihatsu\ ;
+夏向 > natsumuki\ ;
+捨鉢 > sutebachi\ ;
+地質 > chishitsu\ ;
+堅物 > katabutsu\ ;
+国鉄 > kokutetsu\ ;
+角樽 > tsunodaru\ ;
+撃滅 > gekimetsu\ ;
+糧秣 > ryoumatsu\ ;
+隣室 > rinshitsu\ ;
+診察 > shinsatsu\ ;
+外付 > sotodzuke\ ;
+夏作 > natsusaku\ ;
+照尺 > shoushaku\ ;
+雪兎 > yukiusagi\ ;
+終決 > shuuketsu\ ;
+襲爵 > shuushaku\ ;
+覆滅 > fukumetsu\ ;
+墨壷 > sumitsubo\ ;
+誅伐 > chuubatsu\ ;
+放出 > houshutsu\ ;
+終極 > shuukyoku\ ;
+裸線 > hadakasen\ ;
+覆没 > fukubotsu\ ;
+煩型 > urusagata\ ;
+詔勅 > shouchoku\ ;
+支出 > shishutsu\ ;
+綢密 > chuumitsu\ ;
+組曲 > kumikyoku\ ;
+終末 > shuumatsu\ ;
+終曲 > shuukyoku\ ;
+継室 > keishitsu\ ;
+国表 > kuniomote\ ;
+終日 > shuujitsu\ ;
+締切 > shimekiri\ ;
+土色 > tsuchiiro\ ;
+接続 > setsuzoku\ ;
+米粒 > kometsubu\ ;
+糟漬 > kasudzuke\ ;
+粛白 > shukuhaku\ ;
+街角 > machikado\ ;
+撫子 > nadeshiko\ ;
+糠油 > nukaabura\ ;
+長物 > choubutsu\ ;
+陰口 > kageguchi\ ;
+親心 > oyagokoro\ ;
+衆説 > shuusetsu\ ;
+絶妙 > zetsumyou\ ;
+糸桜 > itozakura\ ;
+陳列 > chinretsu\ ;
+糸柳 > itoyanagi\ ;
+執拗 > shitsuyou\ ;
+焼却 > shoukyaku\ ;
+激職 > gekishoku\ ;
+親密 > shinmitsu\ ;
+終局 > shuukyoku\ ;
+筒音 > tsutsuoto\ ;
+紋所 > mondokoro\ ;
+袋網 > fukuroami\ ;
+言伝 > kotodzute\ ;
+火柱 > hibashira\ ;
+閥族 > batsuzoku\ ;
+褶曲 > shuukyoku\ ;
+角叉 > tsunomata\ ;
+抜錨 > batsubyou\ ;
+国立 > kokuritsu\ ;
+激突 > gekitotsu\ ;
+門松 > kadomatsu\ ;
+抜道 > nukemichi\ ;
+長月 > nagatsuki\ ;
+血肉 > ketsuniku\ ;
+紛失 > funshitsu\ ;
+振粛 > shinshuku\ ;
+土牢 > tsuchirou\ ;
+激発 > gekihatsu\ ;
+米油 > komeabura\ ;
+筋道 > sujimichi\ ;
+篳篥 > hichiriki\ ;
+衝突 > shoutotsu\ ;
+親切 > shinsetsu\ ;
+米櫃 > komebitsu\ ;
+竜骨 > ryuukotsu\ ;
+結了 > ketsuryou\ ;
+托鉢 > takuhatsu\ ;
+閏年 > uruudoshi\ ;
+等質 > toushitsu\ ;
+嘱託 > shokutaku\ ;
+節約 > setsuyaku\ ;
+激烈 > gekiretsu\ ;
+蟇蛙 > hikigaeru\ ;
+蜀黍 > morokoshi\ ;
+血眼 > chimanako\ ;
+箸箱 > hashibako\ ;
+複式 > fukushiki\ ;
+西側 > nishigawa\ ;
+損失 > sonshitsu\ ;
+闖入 > chin''nyuu\ ;
+蜂鳥 > hachidori\ ;
+為体 > teitaraku\ ;
+挑発 > chouhatsu\ ;
+溶質 > youshitsu\ ;
+灰土 > haitsuchi\ ;
+裏扉 > uratobira\ ;
+搬出 > hanshutsu\ ;
+粛学 > shukugaku\ ;
+閾値 > shikiichi\ ;
+裏情 > uranasake\ ;
+蟇股 > kaerumata\ ;
+血煙 > chikemuri\ ;
+表決 > hyouketsu\ ;
+滑落 > katsuraku\ ;
+持物 > mochimono\ ;
+門口 > kadoguchi\ ;
+潜熱 > sen''netsu\ ;
+挟殺 > kyousatsu\ ;
+表札 > hyousatsu\ ;
+表書 > omotegaki\ ;
+糊代 > norishiro\ ;
+穴隙 > ketsugeki\ ;
+錯雑 > sakuzatsu\ ;
+圧密 > atsumitsu\ ;
+在室 > zaishitsu\ ;
+漬物 > tsukemono\ ;
+蜜豆 > mitsumame\ ;
+漂着 > hyouchaku\ ;
+提出 > teishutsu\ ;
+深靴 > fukagutsu\ ;
+節欲 > setsuyoku\ ;
+袋帯 > fukuroobi\ ;
+嘱目 > shokumoku\ ;
+穀食 > kokushoku\ ;
+積雪 > sekisetsu\ ;
+節榑 > fushikure\ ;
+血族 > ketsuzoku\ ;
+策略 > sakuryaku\ ;
+鍼術 > shinjutsu\ ;
+挑撥 > chouhatsu\ ;
+拓殖 > takushoku\ ;
+蛙跳 > kaerutobi\ ;
+排出 > haishutsu\ ;
+圧力 > atsuryoku\ ;
+竹箒 > takebouki\ ;
+鼻面 > hanadzura\ ;
+竿秤 > saobakari\ ;
+袖口 > sodeguchi\ ;
+捻出 > nenshutsu\ ;
+鋳鉄 > chuutetsu\ ;
+章節 > shousetsu\ ;
+啓蟄 > keichitsu\ ;
+涙雨 > namidaame\ ;
+篤実 > tokujitsu\ ;
+鎖糸 > kusariito\ ;
+禿鷲 > hagewashi\ ;
+血尿 > ketsunyou\ ;
+懲罰 > choubatsu\ ;
+国力 > kokuryoku\ ;
+国別 > kunibetsu\ ;
+抽斗 > hikidashi\ ;
+浸食 > shinshoku\ ;
+築山 > tsukiyama\ ;
+袖付 > sodetsuke\ ;
+扼殺 > yakusatsu\ ;
+血塗 > chimidoro\ ;
+麹黴 > koujikabi\ ;
+涙金 > namidakin\ ;
+血圧 > ketsuatsu\ ;
+潮境 > shiozakai\ ;
+稟質 > hinshitsu\ ;
+湿田 > shitsuden\ ;
+黒髪 > kokuhatsu\ ;
+打消 > uchikeshi\ ;
+表側 > omotegawa\ ;
+蛙股 > kaerumata\ ;
+鐘撞 > kanetsuki\ ;
+行列 > gyouretsu\ ;
+笑殺 > shousatsu\ ;
+才槌 > saidzuchi\ ;
+湿潤 > shitsujun\ ;
+街並 > machinami\ ;
+鼻衝 > hanatsuki\ ;
+渋紙 > shibugami\ ;
+品質 > hinshitsu\ ;
+鼠講 > nezumikou\ ;
+鏡板 > kagamiita\ ;
+空穴 > karaketsu\ ;
+麦飯 > mugimeshi\ ;
+鋼色 > haganeiro\ ;
+払暁 > futsugyou\ ;
+虫螻 > mushikera\ ;
+童歌 > warabeuta\ ;
+打擲 > chouchaku\ ;
+活量 > katsuryou\ ;
+拠出 > kyoshutsu\ ;
+噴出 > funshutsu\ ;
+渋皮 > shibukawa\ ;
+藁靴 > waragutsu\ ;
+算出 > sanshutsu\ ;
+鎖樋 > kusaritoi\ ;
+活軸 > katsujiku\ ;
+湿板 > shitsuban\ ;
+浮袋 > ukibukuro\ ;
+浸蝕 > shinshoku\ ;
+商略 > shouryaku\ ;
+活躍 > katsuyaku\ ;
+鉱質 > koushitsu\ ;
+虫腹 > mushibara\ ;
+鼠色 > nezumiiro\ ;
+泥靴 > dorogutsu\ ;
+涜職 > tokushoku\ ;
+筆墨 > hitsuboku\ ;
+針鰻 > hariunagi\ ;
+鼻綱 > hanadzuna\ ;
+筆塚 > fudedzuka\ ;
+滝壺 > takitsubo\ ;
+滝壷 > takitsubo\ ;
+告達 > kokutatsu\ ;
+漏出 > roushutsu\ ;
+筆圧 > hitsuatsu\ ;
+窮極 > kyuukyoku\ ;
+金鯱 > kinshachi\ ;
+禀質 > hinshitsu\ ;
+口髭 > kuchihige\ ;
+虫籠 > mushikago\ ;
+流血 > ryuuketsu\ ;
+憑物 > tsukimono\ ;
+積率 > sekiritsu\ ;
+鼻突 > hanatsuki\ ;
+釜飯 > kamameshi\ ;
+深爪 > fukadzume\ ;
+竹帛 > chikuhaku\ ;
+秋色 > shuushoku\ ;
+泡銭 > abukuzeni\ ;
+注釈 > chuushaku\ ;
+愁色 > shuushoku\ ;
+悪質 > akushitsu\ ;
+淋疾 > rinshitsu\ ;
+麗質 > reishitsu\ ;
+麻袋 > asabukuro\ ;
+滝口 > takiguchi\ ;
+鼠算 > nezumizan\ ;
+湿式 > shisshiki\ ;
+穀物 > kokumotsu\ ;
+泥道 > doromichi\ ;
+古靴 > furugutsu\ ;
+沈鬱 > chin''utsu\ ;
+君達 > kimitachi\ ;
+鷲鼻 > washibana\ ;
+折伏 > shakubuku\ ;
+鼠穴 > nezumiana\ ;
+滑台 > suberidai\ ;
+竜巻 > tatsumaki\ ;
+釣鐘 > tsurigane\ ;
+黒色 > kokushoku\ ;
+究極 > kyuukyoku\ ;
+満室 > manshitsu\ ;
+鷦鷯 > misosazai\ ;
+端女 > hashitame\ ;
+釣針 > tsuribari\ ;
+金鎖 > kingusari\ ;
+藤蔓 > fujidzuru\ ;
+鉛色 > namariiro\ ;
+渋柿 > shibugaki\ ;
+吸血 > kyuuketsu\ ;
+古鉄 > furutetsu\ ;
+海神 > watatsumi\ ;
+鈴虫 > suzumushi\ ;
+同質 > doushitsu\ ;
+口金 > kuchigane\ ;
+突撃 > totsugeki\ ;
+鷓鴣 > yamauzura\ ;
+黒縁 > kurobuchi\ ;
+鎮圧 > chin''atsu\ ;
+喪失 > soushitsu\ ;
+種油 > taneabura\ ;
+唐櫃 > karabitsu\ ;
+口軽 > kuchigaru\ ;
+窮屈 > kyuukutsu\ ;
+黒竹 > kurochiku\ ;
+友達 > tomodachi\ ;
+品物 > shinamono\ ;
+竹光 > takemitsu\ ;
+藁苞 > waradzuto\ ;
+湿原 > shitsugen\ ;
+神色 > shinshoku\ ;
+唐松 > karamatsu\ ;
+神職 > shinshoku\ ;
+口許 > kuchimoto\ ;
+蚊柱 > kabashira\ ;
+竹串 > takegushi\ ;
+消滅 > shoumetsu\ ;
+針術 > shinjutsu\ ;
+黒白 > kokubyaku\ ;
+神罰 > shinbatsu\ ;
+油蝉 > aburazemi\ ;
+性質 > seishitsu\ ;
+取説 > torisetsu\ ;
+氷雪 > hyousetsu\ ;
+蛸壼 > takotsubo\ ;
+蛸壷 > takotsubo\ ;
+湧出 > youshutsu\ ;
+空室 > kuushitsu\ ;
+錘形 > tsumugata\ ;
+憩室 > keishitsu\ ;
+急設 > kyuusetsu\ ;
+金蔓 > kanedzuru\ ;
+消極 > shoukyoku\ ;
+釣船 > tsuribune\ ;
+氷釈 > hyoushaku\ ;
+鉢物 > hachimono\ ;
+浚渫 > shunsetsu\ ;
+淑徳 > shukutoku\ ;
+祝福 > shukufuku\ ;
+没落 > botsuraku\ ;
+窓口 > madoguchi\ ;
+告発 > kokuhatsu\ ;
+品柄 > shinagara\ ;
+悪疾 > akushitsu\ ;
+吸着 > kyuuchaku\ ;
+酌量 > shakuryou\ ;
+口脇 > kuchiwaki\ ;
+確説 > kakusetsu\ ;
+薄緑 > usumidori\ ;
+品数 > shinakazu\ ;
+鹿皮 > shikagawa\ ;
+蛙又 > kaerumata\ ;
+黙殺 > mokusatsu\ ;
+恐縮 > kyoushuku\ ;
+蚕室 > sanshitsu\ ;
+突出 > tosshutsu\ ;
+都風 > miyakofuu\ ;
+油糟 > aburakasu\ ;
+水質 > suishitsu\ ;
+突入 > totsunyuu\ ;
+油粕 > aburakasu\ ;
+稠密 > choumitsu\ ;
+黒樫 > kurogashi\ ;
+活歴 > katsureki\ ;
+口紅 > kuchibeni\ ;
+秋日 > shuujitsu\ ;
+右端 > migihashi\ ;
+薬瓶 > kusuribin\ ;
+哲学 > tetsugaku\ ;
+鉄渋 > kanashibu\ ;
+収縮 > shuushuku\ ;
+忌詞 > imikotoba\ ;
+台秤 > daibakari\ ;
+海扇 > hotategai\ ;
+必読 > hitsudoku\ ;
+博識 > hakushiki\ ;
+黒松 > kuromatsu\ ;
+〆切 > shimekiri\ ;
+卓識 > takushiki\ ;
+薬物 > yakubutsu\ ;
+深切 > shinsetsu\ ;
+硬質 > koushitsu\ ;
+氷蝕 > hyoushoku\ ;
+卓説 > takusetsu\ ;
+黒星 > kuroboshi\ ;
+秀抜 > shuubatsu\ ;
+心血 > shinketsu\ ;
+水虫 > mizumushi\ ;
+蔓草 > tsurukusa\ ;
+強飯 > kowameshi\ ;
+票決 > hyouketsu\ ;
+葛餅 > kuzumochi\ ;
+鶉豆 > uzuramame\ ;
+金盥 > kanadarai\ ;
+矯飾 > kyoushoku\ ;
+口癖 > kuchiguse\ ;
+石頭 > ishiatama\ ;
+鳥黐 > torimochi\ ;
+涙声 > namidagoe\ ;
+落髪 > rakuhatsu\ ;
+勅額 > chokugaku\ ;
+卵色 > tamagoiro\ ;
+稲光 > inabikari\ ;
+収着 > shuuchaku\ ;
+消失 > soushitsu\ ;
+殿達 > tonotachi\ ;
+求職 > kyuushoku\ ;
+落飾 > rakushoku\ ;
+沈着 > chinchaku\ ;
+薬殺 > yakusatsu\ ;
+祥月 > shoutsuki\ ;
+私室 > shishitsu\ ;
+形質 > keishitsu\ ;
+収率 > shuuritsu\ ;
+神曲 > shinkyoku\ ;
+確立 > kakuritsu\ ;
+占者 > uranaisha\ ;
+品品 > shinajina\ ;
+氷結 > hyouketsu\ ;
+忠節 > chuusetsu\ ;
+鉢巻 > hachimaki\ ;
+咄家 > hanashika\ ;
+銷却 > shoukyaku\ ;
+消却 > shoukyaku\ ;
+矍鑠 > kakushaku\ ;
+復職 > fukushoku\ ;
+毒虫 > dokumushi\ ;
+卓絶 > takuzetsu\ ;
+取消 > torikeshi\ ;
+周密 > shuumitsu\ ;
+副食 > fukushoku\ ;
+蒟蒻 > kon''nyaku\ ;
+各月 > kakutsuki\ ;
+段袋 > danbukuro\ ;
+浸入 > shin''nyuu\ ;
+収没 > shuubotsu\ ;
+鉄屑 > tetsukuzu\ ;
+卓筆 > takuhitsu\ ;
+確率 > kakuritsu\ ;
+取次 > toritsugi\ ;
+卓立 > takuritsu\ ;
+神式 > shinshiki\ ;
+正道 > masamichi\ ;
+沈没 > chinbotsu\ ;
+毒舌 > dokuzetsu\ ;
+磨汁 > togishiru\ ;
+役職 > yakushoku\ ;
+洋室 > youshitsu\ ;
+碧玉 > hekigyoku\ ;
+歯質 > shishitsu\ ;
+酷熱 > kokunetsu\ ;
+蔵浚 > kurazarae\ ;
+恋敵 > koigataki\ ;
+口早 > kuchibaya\ ;
+汁物 > shirumono\ ;
+酷烈 > kokuretsu\ ;
+蓄積 > chikuseki\ ;
+弱虫 > yowamushi\ ;
+徴発 > chouhatsu\ ;
+忠烈 > chuuretsu\ ;
+惜別 > sekibetsu\ ;
+活劇 > katsugeki\ ;
+台所 > daidokoro\ ;
+後程 > nochihodo\ ;
+反日 > han''nichi\ ;
+弓術 > kyuujutsu\ ;
+遠近 > ochikochi\ ;
+力説 > rikisetsu\ ;
+鴬色 > uguisuiro\ ;
+博物 > hakubutsu\ ;
+単物 > hitoemono\ ;
+毒筆 > dokuhitsu\ ;
+呑口 > nomiguchi\ ;
+命乞 > inochigoi\ ;
+同室 > doushitsu\ ;
+恋心 > koigokoro\ ;
+悪口 > waruguchi\ ;
+初雪 > hatsuyuki\ ;
+弱腰 > yowagoshi\ ;
+逆鞘 > gyakuzaya\ ;
+年頃 > toshigoro\ ;
+着陸 > chakuriku\ ;
+告別 > kokubetsu\ ;
+水油 > mizuabura\ ;
+氷水 > koorimizu\ ;
+呈出 > teishutsu\ ;
+前輿 > sakigoshi\ ;
+号室 > goushitsu\ ;
+河岸 > kawagishi\ ;
+強縮 > kyoushuku\ ;
+出願 > shutsugan\ ;
+出題 > shutsudai\ ;
+恐察 > kyousatsu\ ;
+鱗雲 > urokogumo\ ;
+鴃舌 > gekizetsu\ ;
+神勅 > shinchoku\ ;
+祝勝 > shukushou\ ;
+通釈 > tsuushaku\ ;
+砂粒 > sunatsubu\ ;
+速達 > sokutatsu\ ;
+出陣 > shutsujin\ ;
+通達 > tsuutatsu\ ;
+初釜 > hatsugama\ ;
+出門 > shutsumon\ ;
+釣堀 > tsuribori\ ;
+近頃 > chikagoro\ ;
+鳶職 > tobishoku\ ;
+石筆 > sekihitsu\ ;
+石竹 > sekichiku\ ;
+引綱 > hikidzuna\ ;
+神仏 > shinbutsu\ ;
+短筒 > tandzutsu\ ;
+毒物 > dokubutsu\ ;
+即日 > sokujitsu\ ;
+逃道 > nigemichi\ ;
+神主 > kan''nushi\ ;
+合印 > aijirushi\ ;
+卒業 > sotsugyou\ ;
+勝着 > shouchaku\ ;
+吐出 > toshutsu\ ;
+金型 > kanagata\ ;
+石神 > shakujin\ ;
+名刹 > meisatsu\ ;
+弾着 > danchaku\ ;
+落籍 > rakuseki\ ;
+矢筒 > yadzutsu\ ;
+心服 > shinpuku\ ;
+逆転 > gyakuten\ ;
+合力 > gouryoku\ ;
+薙刀 > naginata\ ;
+同列 > douretsu\ ;
+直面 > chokumen\ ;
+復業 > fukugyou\ ;
+薄口 > usukuchi\ ;
+草食 > soushoku\ ;
+常闇 > tokoyami\ ;
+合冊 > gousatsu\ ;
+剥落 > hakuraku\ ;
+茶髪 > chapatsu\ ;
+速読 > sokudoku\ ;
+厳密 > genmitsu\ ;
+出郷 > shukkyou\ ;
+厚底 > atsuzoko\ ;
+引窓 > hikimado\ ;
+分轄 > bunkatsu\ ;
+通読 > tsuudoku\ ;
+遜色 > sonshoku\ ;
+追跡 > tsuiseki\ ;
+勲爵 > kunshaku\ ;
+通訳 > tsuuyaku\ ;
+只只 > tadatada\ ;
+友垣 > tomogaki\ ;
+半月 > hantsuki\ ;
+真迹 > shinseki\ ;
+吉例 > kitsurei\ ;
+近鉄 > kintetsu\ ;
+茶飯 > chameshi\ ;
+別言 > betsugen\ ;
+殖産 > shokusan\ ;
+金口 > kinguchi\ ;
+造血 > zouketsu\ ;
+鳥籠 > torikago\ ;
+勃発 > boppatsu\ ;
+建築 > kenchiku\ ;
+出身 > shusshin\ ;
+十月 > juugatsu\ ;
+口占 > kuchiura\ ;
+正立 > seiritsu\ ;
+鯨骨 > geikotsu\ ;
+求心 > kyuushin\ ;
+相鎚 > aidzuchi\ ;
+眼識 > ganshiki\ ;
+心拍 > shinpaku\ ;
+彼此 > karekore\ ;
+歯磨 > hamigaki\ ;
+落石 > rakuseki\ ;
+帝闕 > teiketsu\ ;
+内鰐 > uchiwani\ ;
+真蹟 > shinseki\ ;
+古創 > furukizu\ ;
+鴨猟 > kamoryou\ ;
+没却 > bokkyaku\ ;
+金力 > kinryoku\ ;
+右側 > migigawa\ ;
+出超 > shutchou\ ;
+口前 > kuchimae\ ;
+刻薄 > kokuhaku\ ;
+真跡 > shinseki\ ;
+水性 > mizushou\ ;
+広袖 > hirosode\ ;
+重力 > juuryoku\ ;
+相鉄 > soutetsu\ ;
+荷車 > niguruma\ ;
+動物 > doubutsu\ ;
+知略 > chiryaku\ ;
+目録 > mokuroku\ ;
+切論 > setsuron\ ;
+凶賊 > kyouzoku\ ;
+着装 > chakusou\ ;
+遅脈 > chimyaku\ ;
+水引 > mizuhiki\ ;
+橈骨 > toukotsu\ ;
+殲滅 > senmetsu\ ;
+古傷 > furukizu\ ;
+冠雪 > kansetsu\ ;
+北極 > hokkyoku\ ;
+幻術 > genjutsu\ ;
+氷床 > hyoushou\ ;
+劃策 > kakusaku\ ;
+即席 > sokuseki\ ;
+又又 > matamata\ ;
+水底 > minasoko\ ;
+直配 > chokuhai\ ;
+切言 > setsugen\ ;
+急告 > kyuukoku\ ;
+釈典 > shakuten\ ;
+毫末 > goumatsu\ ;
+半折 > hansetsu\ ;
+平袖 > hirasode\ ;
+鯛飯 > taimeshi\ ;
+切要 > setsuyou\ ;
+巻雲 > makigumo\ ;
+残物 > zanbutsu\ ;
+態々 > wazawaza\ ;
+劫略 > gouryaku\ ;
+反別 > tanbetsu\ ;
+正直 > shoujiki\ ;
+効率 > kouritsu\ ;
+只事 > tadagoto\ ;
+碩学 > sekigaku\ ;
+水嵩 > mizukasa\ ;
+直送 > chokusou\ ;
+分裂 > bunretsu\ ;
+役柄 > yakugara\ ;
+凌辱 > ryoujoku\ ;
+律文 > ritsubun\ ;
+程々 > hodohodo\ ;
+収入 > shuunyuu\ ;
+若鶏 > wakadori\ ;
+沈勇 > chin''yuu\ ;
+双六 > sugoroku\ ;
+廃絶 > haizetsu\ ;
+道糸 > michiito\ ;
+創立 > souritsu\ ;
+協心 > kyoushin\ ;
+北朝 > hokuchou\ ;
+勇烈 > yuuretsu\ ;
+性別 > seibetsu\ ;
+勃然 > botsuzen\ ;
+単式 > tanshiki\ ;
+参列 > sanretsu\ ;
+気心 > kigokoro\ ;
+川風 > kawakaze\ ;
+刀術 > toujutsu\ ;
+匡救 > kyoukyuu\ ;
+死物 > shibutsu\ ;
+刳舟 > kuribune\ ;
+彼是 > karekore\ ;
+分蝕 > bunshoku\ ;
+白鳥 > hakuchou\ ;
+兵食 > heishoku\ ;
+殿様 > tonosama\ ;
+参入 > san''nyuu\ ;
+受付 > uketsuke\ ;
+単帯 > hitoeobi\ ;
+矯激 > kyougeki\ ;
+怪傑 > kaiketsu\ ;
+刺股 > sasumata\ ;
+汲取 > kumitori\ ;
+砂浜 > sunahama\ ;
+達筆 > tappitsu\ ;
+割礼 > katsurei\ ;
+毎月 > maitsuki\ ;
+升形 > masugata\ ;
+川霧 > kawagiri\ ;
+劇的 > gekiteki\ ;
+分蘖 > bunketsu\ ;
+叔世 > shukusei\ ;
+兀鷹 > hagetaka\ ;
+勘決 > kanketsu\ ;
+即妙 > sokumyou\ ;
+剣突 > kentsuku\ ;
+必定 > hitsujou\ ;
+急信 > kyuushin\ ;
+前約 > zen''yaku\ ;
+劇痛 > gekitsuu\ ;
+午年 > umadoshi\ ;
+平落 > hiraochi\ ;
+硬式 > koushiki\ ;
+常識 > joushiki\ ;
+心学 > shingaku\ ;
+毎日 > mainichi\ ;
+白骨 > hakkotsu\ ;
+升席 > masuseki\ ;
+横風 > yokokaze\ ;
+急伸 > kyuushin\ ;
+鰐足 > waniashi\ ;
+遅筆 > chihitsu\ ;
+母方 > hahakata\ ;
+氷壁 > hyouheki\ ;
+瞞着 > manchaku\ ;
+辛辛 > karagara\ ;
+相識 > soushiki\ ;
+菜箸 > saibashi\ ;
+週給 > shuukyuu\ ;
+八面 > hachimen\ ;
+博学 > hakugaku\ ;
+殖民 > shokumin\ ;
+進級 > shinkyuu\ ;
+前節 > zensetsu\ ;
+得心 > tokushin\ ;
+着船 > chakusen\ ;
+引潮 > hikishio\ ;
+常設 > jousetsu\ ;
+得得 > tokutoku\ ;
+落潮 > rakuchou\ ;
+弱毒 > jakudoku\ ;
+厥冷 > ketsurei\ ;
+蔵元 > kuramoto\ ;
+建物 > tatemono\ ;
+死滅 > shimetsu\ ;
+勇決 > yuuketsu\ ;
+先高 > sakidaka\ ;
+発駅 > hatsueki\ ;
+退色 > taishoku\ ;
+気室 > kishitsu\ ;
+円錐 > marugiri\ ;
+勝楽 > shouraku\ ;
+兎馬 > usagiuma\ ;
+欠礼 > ketsurei\ ;
+当月 > tougetsu\ ;
+千島 > chishima\ ;
+横雲 > yokogumo\ ;
+徐徐 > sorosoro\ ;
+元高 > motodaka\ ;
+師説 > shisetsu\ ;
+包摂 > housetsu\ ;
+殿方 > tonogata\ ;
+民宿 > minshuku\ ;
+連結 > renketsu\ ;
+直言 > chokugen\ ;
+彎月 > wangetsu\ ;
+巡錫 > junshaku\ ;
+彎曲 > wankyoku\ ;
+直角 > chokkaku\ ;
+廉直 > renchoku\ ;
+直覚 > chokkaku\ ;
+直視 > chokushi\ ;
+死活 > shikatsu\ ;
+心境 > shinkyou\ ;
+平脈 > heimyaku\ ;
+当日 > toujitsu\ ;
+復学 > fukugaku\ ;
+入閣 > nyuukaku\ ;
+横長 > yokonaga\ ;
+死没 > shibotsu\ ;
+包括 > houkatsu\ ;
+退職 > taishoku\ ;
+忠告 > chuukoku\ ;
+巻軸 > makijiku\ ;
+百雷 > hyakurai\ ;
+百難 > hyakunan\ ;
+出芽 > shutsuga\ ;
+菅笠 > sugegasa\ ;
+剛直 > gouchoku\ ;
+加湿 > kashitsu\ ;
+発電 > hatsuden\ ;
+分脈 > bunmyaku\ ;
+監訳 > kan''yaku\ ;
+式法 > shikihou\ ;
+遅着 > chichaku\ ;
+党閥 > toubatsu\ ;
+別納 > betsunou\ ;
+刑罰 > keibatsu\ ;
+内達 > naitatsu\ ;
+死歿 > shibotsu\ ;
+心嚢 > shin''nou\ ;
+役得 > yakutoku\ ;
+連立 > renritsu\ ;
+郷愁 > kyoushuu\ ;
+彷彿 > houfutsu\ ;
+庭石 > niwaishi\ ;
+切者 > kiremono\ ;
+遅発 > chihatsu\ ;
+元鞘 > motosaya\ ;
+忘却 > boukyaku\ ;
+歴歴 > rekireki\ ;
+確信 > kakushin\ ;
+石柱 > sekichuu\ ;
+欠番 > ketsuban\ ;
+彰徳 > shoutoku\ ;
+鱈腹 > tarafuku\ ;
+割物 > waremono\ ;
+幕臣 > bakushin\ ;
+入鋏 > nyuukyou\ ;
+軽鴨 > karugamo\ ;
+弯曲 > wankyoku\ ;
+念仏 > nenbutsu\ ;
+菊石 > kikuishi\ ;
+冷血 > reiketsu\ ;
+平絹 > hiraginu\ ;
+酒呑 > sakenomi\ ;
+葉桜 > hazakura\ ;
+着米 > chakubei\ ;
+強敵 > kyouteki\ ;
+求償 > kyuushou\ ;
+通称 > tsuushou\ ;
+忠僕 > chuuboku\ ;
+水力 > suiryoku\ ;
+残月 > zangetsu\ ;
+勅書 > chokusho\ ;
+共通 > kyoutsuu\ ;
+前略 > zenryaku\ ;
+殊更 > kotosara\ ;
+弦月 > gengetsu\ ;
+目薬 > megusuri\ ;
+協商 > kyoushou\ ;
+百錬 > hyakuren\ ;
+公達 > koutatsu\ ;
+弱敵 > jakuteki\ ;
+逆算 > gyakusan\ ;
+黙々 > mokumoku\ ;
+八達 > hattatsu\ ;
+八道 > hachidou\ ;
+北山 > kitayama\ ;
+剿滅 > soumetsu\ ;
+廃物 > haibutsu\ ;
+公述 > koujutsu\ ;
+忠信 > chuushin\ ;
+皮質 > hishitsu\ ;
+石文 > ishibumi\ ;
+形式 > keishiki\ ;
+凋落 > chouraku\ ;
+勅旨 > chokushi\ ;
+卸値 > oroshine\ ;
+短日 > tanjitsu\ ;
+水先 > mizusaki\ ;
+巷説 > kousetsu\ ;
+共軛 > kyouyaku\ ;
+黒々 > kuroguro\ ;
+剥焼 > sukiyaki\ ;
+逢着 > houchaku\ ;
+廃熱 > hainetsu\ ;
+役宅 > yakutaku\ ;
+到着 > touchaku\ ;
+茹蛸 > yudedako\ ;
+強振 > kyoushin\ ;
+再説 > saisetsu\ ;
+連発 > renpatsu\ ;
+復唱 > fukushou\ ;
+知日 > chinichi\ ;
+徴収 > choushuu\ ;
+勅撰 > chokusen\ ;
+分節 > bunsetsu\ ;
+配列 > hairetsu\ ;
+処罰 > shobatsu\ ;
+再設 > saisetsu\ ;
+歴朝 > rekichou\ ;
+劇毒 > gekidoku\ ;
+追究 > tsuikyuu\ ;
+歳末 > saimatsu\ ;
+横軸 > yokojiku\ ;
+分筆 > bunpitsu\ ;
+輯録 > shuuroku\ ;
+半口 > hankuchi\ ;
+十哲 > juttetsu\ ;
+百選 > hyakusen\ ;
+廉潔 > renketsu\ ;
+先金 > sakigane\ ;
+軽食 > keishoku\ ;
+分立 > bunritsu\ ;
+内訳 > uchiwake\ ;
+追福 > tsuifuku\ ;
+発達 > hattatsu\ ;
+欲深 > yokubuka\ ;
+歪曲 > waikyoku\ ;
+入超 > nyuuchou\ ;
+割注 > warichuu\ ;
+民力 > minryoku\ ;
+北壁 > hokuheki\ ;
+廃滅 > haimetsu\ ;
+水上 > minakami\ ;
+初盆 > hatsubon\ ;
+正札 > shoufuda\ ;
+葬式 > soushiki\ ;
+入賞 > nyuushou\ ;
+先達 > sendatsu\ ;
+止木 > tomarigi\ ;
+着眼 > chakugan\ ;
+半切 > hansetsu\ ;
+初発 > shohatsu\ ;
+軟骨 > nankotsu\ ;
+当局 > toukyoku\ ;
+殺害 > satsugai\ ;
+落掌 > rakushou\ ;
+共訳 > kyouyaku\ ;
+強弱 > kyoujaku\ ;
+心中 > shinchuu\ ;
+平皿 > hirazara\ ;
+初産 > hatsuzan\ ;
+常緑 > jouryoku\ ;
+南仏 > nanfutsu\ ;
+劫掠 > gouryaku\ ;
+十八 > juuhachi\ ;
+公設 > kousetsu\ ;
+適業 > tekigyou\ ;
+鬱鬱 > utsuutsu\ ;
+追白 > tsuihaku\ ;
+従卒 > juusotsu\ ;
+御冠 > okanmuri\ ;
+律呂 > ritsuryo\ ;
+辣腕 > ratsuwan\ ;
+着用 > chakuyou\ ;
+逆用 > gyakuyou\ ;
+逆産 > gyakuzan\ ;
+六親 > rokushin\ ;
+後口 > atokuchi\ ;
+全訳 > zen''yaku\ ;
+単一 > tan''itsu\ ;
+帯緑 > tairyoku\ ;
+石弓 > ishiyumi\ ;
+選曲 > senkyoku\ ;
+通牒 > tsuuchou\ ;
+直線 > chokusen\ ;
+県立 > kenritsu\ ;
+別状 > betsujou\ ;
+凍結 > touketsu\ ;
+川蝉 > kawasemi\ ;
+郷国 > kyoukoku\ ;
+副業 > fukugyou\ ;
+追申 > tsuishin\ ;
+砂山 > sunayama\ ;
+律動 > ritsudou\ ;
+正接 > seisetsu\ ;
+迫真 > hakushin\ ;
+省筆 > seihitsu\ ;
+弟御 > otoutogo\ ;
+兇賊 > kyouzoku\ ;
+凄絶 > seizetsu\ ;
+後列 > kouretsu\ ;
+強将 > kyoushou\ ;
+年率 > nenritsu\ ;
+冗舌 > jouzetsu\ ;
+標註 > hyouchuu\ ;
+真白 > masshiro\ ;
+典薬 > ten''yaku\ ;
+弱少 > jakushou\ ;
+弱小 > jakushou\ ;
+直答 > chokutou\ ;
+石山 > ishiyama\ ;
+茜色 > akaneiro\ ;
+発言 > hatsugen\ ;
+弓形 > yuminari\ ;
+副木 > fukuboku\ ;
+真症 > shinshou\ ;
+劣情 > retsujou\ ;
+冥罰 > meibatsu\ ;
+神々 > kamigami\ ;
+劣悪 > retsuaku\ ;
+鮮血 > senketsu\ ;
+役割 > yakuwari\ ;
+石室 > ishimuro\ ;
+若衆 > wakashuu\ ;
+母君 > hahagimi\ ;
+平熱 > heinetsu\ ;
+直税 > chokuzei\ ;
+近着 > kinchaku\ ;
+道板 > michiita\ ;
+勅宣 > chokusen\ ;
+矩尺 > kanejaku\ ;
+切物 > kiremono\ ;
+選抜 > senbatsu\ ;
+白蟻 > shiroari\ ;
+強奪 > goudatsu\ ;
+刺殺 > shisatsu\ ;
+凡百 > bonpyaku\ ;
+律令 > ritsurei\ ;
+内腿 > uchimomo\ ;
+軍閥 > gunbatsu\ ;
+幣物 > heimotsu\ ;
+逸楽 > itsuraku\ ;
+速決 > sokketsu\ ;
+北側 > hokusoku\ ;
+彫刻 > choukoku\ ;
+逆潮 > sakashio\ ;
+砲列 > houretsu\ ;
+正式 > seishiki\ ;
+冠絶 > kanzetsu\ ;
+殿原 > tonobara\ ;
+凸状 > totsujou\ ;
+内股 > uchimomo\ ;
+達文 > tatsubun\ ;
+征伐 > seibatsu\ ;
+幻滅 > genmetsu\ ;
+弾圧 > dan''atsu\ ;
+軽軽 > karugaru\ ;
+充血 > juuketsu\ ;
+内職 > naishoku\ ;
+軟鉄 > nantetsu\ ;
+干潮 > hikishio\ ;
+石墨 > sekiboku\ ;
+判決 > hanketsu\ ;
+短夜 > mijikayo\ ;
+強圧 > kyouatsu\ ;
+平滑 > heikatsu\ ;
+強国 > kyoukoku\ ;
+鬢長 > bin''naga\ ;
+円罐 > marugama\ ;
+直直 > jikijiki\ ;
+巻紙 > makigami\ ;
+兼職 > kenshoku\ ;
+欠文 > ketsubun\ ;
+冬空 > fuyuzora\ ;
+遅日 > chijitsu\ ;
+別殿 > betsuden\ ;
+別段 > betsudan\ ;
+逆浪 > sakanami\ ;
+白蓮 > byakuren\ ;
+石垣 > ishigaki\ ;
+郷俗 > kyouzoku\ ;
+軸足 > jikuashi\ ;
+逆波 > sakanami\ ;
+目的 > mokuteki\ ;
+萩属 > hagizoku\ ;
+速業 > hayawaza\ ;
+段別 > tanbetsu\ ;
+市立 > shiritsu\ ;
+若草 > wakakusa\ ;
+着水 > chakusui\ ;
+転轍 > tentetsu\ ;
+鰐皮 > wanigawa\ ;
+止宿 > shishuku\ ;
+芸術 > geijutsu\ ;
+正宗 > masamune\ ;
+横腹 > yokobara\ ;
+冗筆 > jouhitsu\ ;
+公職 > koushoku\ ;
+各々 > sorezore\ ;
+刃渡 > hawatari\ ;
+鳩尾 > mizoochi\ ;
+髣髴 > houfutsu\ ;
+出演 > shutsuen\ ;
+適役 > tekiyaku\ ;
+身長 > shinchou\ ;
+力学 > rikigaku\ ;
+色道 > shikidou\ ;
+百芸 > hyakugei\ ;
+勢力 > seiryoku\ ;
+船霊 > funadama\ ;
+追求 > tsuikyuu\ ;
+砂原 > sunahara\ ;
+彎入 > wan''nyuu\ ;
+制札 > seisatsu\ ;
+楽長 > gakuchou\ ;
+直球 > chokkyuu\ ;
+分泌 > bunpitsu\ ;
+極限 > kyokugen\ ;
+鮫膚 > samehada\ ;
+発色 > hasshoku\ ;
+葬列 > souretsu\ ;
+勅問 > chokumon\ ;
+弾力 > danryoku\ ;
+式場 > shikijou\ ;
+高高 > takadaka\ ;
+割引 > waribiki\ ;
+欲心 > yokushin\ ;
+選局 > senkyoku\ ;
+剔抉 > tekketsu\ ;
+欲得 > yokutoku\ ;
+鮮肉 > sen''niku\ ;
+逆様 > sakasama\ ;
+進撃 > shingeki\ ;
+動力 > douryoku\ ;
+勅命 > chokumei\ ;
+凛烈 > rinretsu\ ;
+武士 > mononofu\ ;
+鮫肌 > samehada\ ;
+殺人 > satsujin\ ;
+僭越 > sen''etsu\ ;
+連日 > renjitsu\ ;
+正夢 > masayume\ ;
+刷数 > satsusuu\ ;
+軋轢 > atsureki\ ;
+別条 > betsujou\ ;
+儲蓄 > chochiku\ ;
+円窓 > marumado\ ;
+若者 > wakamono\ ;
+車轄 > shakatsu\ ;
+恐々 > kowagowa\ ;
+通暁 > tsuugyou\ ;
+前払 > maebarai\ ;
+百聞 > hyakubun\ ;
+発育 > hatsuiku\ ;
+只々 > tadatada\ ;
+逐条 > chikujou\ ;
+益益 > masumasu\ ;
+横縞 > yokojima\ ;
+達弁 > tatsuben\ ;
+巣窟 > soukutsu\ ;
+川筋 > kawasuji\ ;
+僣越 > sen''etsu\ ;
+巾着 > kinchaku\ ;
+免職 > menshoku\ ;
+勇力 > yuuryoku\ ;
+川端 > kawabata\ ;
+勁卒 > keisotsu\ ;
+内祝 > uchiiwai\ ;
+草物 > kusamono\ ;
+岳麓 > gakuroku\ ;
+分極 > bunkyoku\ ;
+槍術 > soujutsu\ ;
+連接 > rensetsu\ ;
+入籍 > nyuuseki\ ;
+副将 > fukushou\ ;
+副審 > fukushin\ ;
+知力 > chiryoku\ ;
+割安 > wariyasu\ ;
+処決 > shoketsu\ ;
+年末 > nenmatsu\ ;
+幾日 > ikunichi\ ;
+年月 > nengetsu\ ;
+切株 > kirikabu\ ;
+効力 > kouryoku\ ;
+骸骨 > gaikotsu\ ;
+公立 > kouritsu\ ;
+式台 > shikidai\ ;
+骨鱗 > kotsurin\ ;
+再発 > saihatsu\ ;
+死力 > shiryoku\ ;
+労力 > rouryoku\ ;
+横筋 > yokosuji\ ;
+巌窟 > gankutsu\ ;
+冬物 > fuyumono\ ;
+逆数 > gyakusuu\ ;
+兎網 > usagiami\ ;
+白糸 > shiraito\ ;
+死別 > shibetsu\ ;
+切札 > kirifuda\ ;
+切望 > setsubou\ ;
+平日 > heijitsu\ ;
+左目 > hidarime\ ;
+軽蔑 > keibetsu\ ;
+剣客 > kenkyaku\ ;
+内発 > naihatsu\ ;
+勅使 > chokushi\ ;
+芋虫 > imomushi\ ;
+又々 > matamata\ ;
+椋鳥 > mukudori\ ;
+平政 > hiramasa\ ;
+骨髄 > kotsuzui\ ;
+目測 > mokusoku\ ;
+元締 > motojime\ ;
+石亀 > ishigame\ ;
+先細 > sakiboso\ ;
+勅任 > chokunin\ ;
+矛先 > hokosaki\ ;
+度度 > tabitabi\ ;
+勅令 > chokurei\ ;
+先約 > sen''yaku\ ;
+萩原 > hagiwara\ ;
+入神 > nyuushin\ ;
+歯列 > shiretsu\ ;
+切断 > setsudan\ ;
+廃嫡 > haichaku\ ;
+歪力 > wairyoku\ ;
+式典 > shikiten\ ;
+追撃 > tsuigeki\ ;
+芋蔓 > imodzuru\ ;
+標章 > hyoushou\ ;
+巻物 > makimono\ ;
+相殺 > sousatsu\ ;
+冗物 > joubutsu\ ;
+前屈 > zenkutsu\ ;
+刳形 > kurikata\ ;
+正割 > seikatsu\ ;
+躍進 > yakushin\ ;
+弁別 > benbetsu\ ;
+着手 > chakushu\ ;
+正切 > seisetsu\ ;
+茶漬 > chadzuke\ ;
+怖々 > kowagowa\ ;
+留鳥 > ryuuchou\ ;
+過失 > kashitsu\ ;
+船足 > funaashi\ ;
+兵略 > heiryaku\ ;
+白票 > hakuhyou\ ;
+偏食 > henshoku\ ;
+工率 > kouritsu\ ;
+歌合 > utaawase\ ;
+躑躅 > tsutsuji\ ;
+歌口 > utaguchi\ ;
+鰹木 > katsuogi\ ;
+迫撃 > hakugeki\ ;
+相槌 > aidzuchi\ ;
+汲々 > kyuukyuu\ ;
+初恋 > hatsukoi\ ;
+先程 > sakihodo\ ;
+着想 > chakusou\ ;
+船賃 > funachin\ ;
+茶渋 > chashibu\ ;
+透徹 > toutetsu\ ;
+病身 > byoushin\ ;
+進学 > shingaku\ ;
+概説 > gaisetsu\ ;
+落丁 > rakuchou\ ;
+通帳 > tsuuchou\ ;
+床店 > tokomise\ ;
+良薬 > ryouyaku\ ;
+欠場 > ketsujou\ ;
+切戻 > setsurai\ ;
+標石 > hyouseki\ ;
+偽金 > nisegane\ ;
+目標 > mokuhyou\ ;
+楽調 > gakuchou\ ;
+力倆 > rikiryou\ ;
+選別 > senbetsu\ ;
+刺客 > shikyaku\ ;
+帝欠 > teiketsu\ ;
+出捐 > shutsuen\ ;
+着心 > kigokoro\ ;
+逐年 > chikunen\ ;
+鮫皮 > samegawa\ ;
+広広 > hirobiro\ ;
+横町 > yokochou\ ;
+近日 > kinjitsu\ ;
+広幅 > hirohaba\ ;
+力作 > rikisaku\ ;
+鳩信 > kyuushin\ ;
+検閲 > ken''etsu\ ;
+瞬刻 > shunkoku\ ;
+発着 > hatchaku\ ;
+極論 > kyokuron\ ;
+着弾 > chakudan\ ;
+典物 > tenbutsu\ ;
+白皙 > hakuseki\ ;
+白白 > hakuhaku\ ;
+切情 > setsujou\ ;
+刑律 > keiritsu\ ;
+標的 > hyouteki\ ;
+出所 > dedokoro\ ;
+追徴 > tsuichou\ ;
+着底 > chakutei\ ;
+党略 > touryaku\ ;
+極言 > kyokugen\ ;
+床山 > tokoyama\ ;
+痛覚 > tsuukaku\ ;
+年式 > nenshiki\ ;
+発癌 > hatsugan\ ;
+着帽 > chakubou\ ;
+内濠 > uchibori\ ;
+先着 > senchaku\ ;
+着帯 > chakutai\ ;
+常春 > tokoharu\ ;
+追弔 > tsuichou\ ;
+荷捌 > nisabaki\ ;
+平庭 > hiraniwa\ ;
+山鳩 > yamabato\ ;
+進境 > shinkyou\ ;
+山鳥 > yamadori\ ;
+通学 > tsuugaku\ ;
+畜類 > chikurui\ ;
+平底 > hirazoko\ ;
+入獄 > nyuugoku\ ;
+公爵 > koushaku\ ;
+色艶 > irotsuya\ ;
+平幕 > hiramaku\ ;
+先発 > senpatsu\ ;
+剴切 > gaisetsu\ ;
+白瓜 > shirouri\ ;
+近接 > kinsetsu\ ;
+蹲踞 > tsukubai\ ;
+転職 > tenshoku\ ;
+透察 > tousatsu\ ;
+劇作 > gekisaku\ ;
+着岸 > chakugan\ ;
+軸索 > jikusaku\ ;
+席料 > sekiryou\ ;
+欠号 > ketsugou\ ;
+発現 > hatsugen\ ;
+百獣 > hyakujuu\ ;
+僚船 > tomobune\ ;
+真心 > magokoro\ ;
+劇中 > gekichuu\ ;
+蹄鉄 > teitetsu\ ;
+出張 > shutchou\ ;
+僧職 > soushoku\ ;
+退屈 > taikutsu\ ;
+前哲 > zentetsu\ ;
+出廬 > shutsuro\ ;
+適作 > tekisaku\ ;
+内法 > uchinori\ ;
+出度 > shutsudo\ ;
+劃一 > kakuitsu\ ;
+軸箱 > jikubako\ ;
+峡谷 > kyoukoku\ ;
+出席 > shusseki\ ;
+別売 > betsubai\ ;
+帝日 > teijitsu\ ;
+構築 > kouchiku\ ;
+目撃 > mokugeki\ ;
+軍職 > gunshoku\ ;
+分局 > bunkyoku\ ;
+冬服 > fuyufuku\ ;
+茶杓 > chashaku\ ;
+鮮烈 > senretsu\ ;
+高説 > kousetsu\ ;
+写植 > shashoku\ ;
+別堂 > betsudou\ ;
+分宿 > bunshuku\ ;
+全滅 > zenmetsu\ ;
+山風 > yamakaze\ ;
+草摺 > kusazuri\ ;
+先物 > sakimono\ ;
+百点 > hyakuten\ ;
+逆夢 > sakayume\ ;
+光熱 > kounetsu\ ;
+前列 > zenretsu\ ;
+逆境 > gyakkyou\ ;
+癇癪 > kanshaku\ ;
+軍縮 > gunshuku\ ;
+鮭漁 > sakeryou\ ;
+達人 > tatsujin\ ;
+色紙 > shikishi\ ;
+白濁 > hakudaku\ ;
+儁秀 > shunshuu\ ;
+幅広 > habahiro\ ;
+平声 > hyoushou\ ;
+山霧 > yamagiri\ ;
+逸出 > isshutsu\ ;
+盗撮 > tousatsu\ ;
+入浴 > nyuuyoku\ ;
+欠便 > ketsubin\ ;
+軽石 > karuishi\ ;
+切妻 > kirizuma\ ;
+巻末 > kanmatsu\ ;
+通商 > tsuushou\ ;
+距骨 > kyokotsu\ ;
+入津 > nyuushin\ ;
+生首 > namakubi\ ;
+入洛 > nyuuraku\ ;
+直情 > chokujou\ ;
+凶宅 > kyoutaku\ ;
+山際 > yamagiwa\ ;
+庭先 > niwasaki\ ;
+山陰 > yamakage\ ;
+剃刀 > kamisori\ ;
+横波 > yokonami\ ;
+着地 > chakuchi\ ;
+盗掘 > toukutsu\ ;
+省庁 > shouchou\ ;
+留金 > tomegane\ ;
+橋梁 > kyouryou\ ;
+町長 > chouchou\ ;
+属領 > zokuryou\ ;
+通告 > tsuukoku\ ;
+前借 > zenshaku\ ;
+欠乏 > ketsubou\ ;
+極致 > kyokuchi\ ;
+別命 > betsumei\ ;
+良策 > ryousaku\ ;
+甘食 > amashoku\ ;
+内枠 > uchiwaku\ ;
+別名 > betsumei\ ;
+橋杭 > hashigui\ ;
+別号 > betsugou\ ;
+橋杙 > hashigui\ ;
+借銭 > shakusen\ ;
+眉尻 > mayujiri\ ;
+真如 > shin''nyo\ ;
+若水 > wakamizu\ ;
+通力 > tsuuriki\ ;
+店先 > misesaki\ ;
+畔道 > azemichi\ ;
+若殿 > wakatono\ ;
+通則 > tsuusoku\ ;
+初口 > shokuchi\ ;
+樽柿 > tarugaki\ ;
+臭覚 > shuukaku\ ;
+週休 > shuukyuu\ ;
+省察 > seisatsu\ ;
+横様 > yokozama\ ;
+横槍 > yokoyari\ ;
+冷徹 > reitetsu\ ;
+督促 > tokusoku\ ;
+判別 > hanbetsu\ ;
+芳烈 > houretsu\ ;
+常客 > joukyaku\ ;
+帳尻 > choujiri\ ;
+出土 > shutsudo\ ;
+苗水 > nawamizu\ ;
+先決 > senketsu\ ;
+軽率 > keisotsu\ ;
+山鉾 > yamaboko\ ;
+髄虫 > zuimushi\ ;
+皆様 > minasama\ ;
+別册 > bessatsu\ ;
+別冊 > bessatsu\ ;
+帷子 > katabira\ ;
+草市 > kusaichi\ ;
+白檀 > byakudan\ ;
+若様 > wakasama\ ;
+直射 > chokusha\ ;
+山里 > yamazato\ ;
+退却 > taikyaku\ ;
+追及 > tsuikyuu\ ;
+槍玉 > yaridama\ ;
+甲鉄 > koutetsu\ ;
+局面 > kyokumen\ ;
+通信 > tsuushin\ ;
+極線 > kyokusen\ ;
+通俗 > tsuuzoku\ ;
+船縁 > funaberi\ ;
+皓月 > kougetsu\ ;
+色相 > shikisou\ ;
+色盲 > shikimou\ ;
+眉墨 > mayuzumi\ ;
+内接 > naisetsu\ ;
+巴戦 > tomoesen\ ;
+全曲 > zenkyoku\ ;
+徐々 > sorosoro\ ;
+軸物 > jikumono\ ;
+業績 > gyouseki\ ;
+入木 > nyuuboku\ ;
+登極 > toukyoku\ ;
+極細 > gokuboso\ ;
+入朝 > nyuuchou\ ;
+送別 > soubetsu\ ;
+足首 > ashikubi\ ;
+兼摂 > kensetsu\ ;
+別便 > betsubin\ ;
+年別 > nenbetsu\ ;
+局限 > kyokugen\ ;
+生録 > namaroku\ ;
+巧拙 > kousetsu\ ;
+白梅 > shiraume\ ;
+臆説 > okusetsu\ ;
+先様 > sakisama\ ;
+全日 > zenjitsu\ ;
+布引 > nunobiki\ ;
+監察 > kansatsu\ ;
+分力 > bunryoku\ ;
+傍耳 > katamimi\ ;
+略言 > ryakugen\ ;
+別人 > betsunin\ ;
+分割 > bunkatsu\ ;
+小魚 > kozakana\ ;
+左手 > hidarite\ ;
+色町 > iromachi\ ;
+色男 > irootoko\ ;
+楽章 > gakushou\ ;
+分別 > bunbetsu\ ;
+分列 > bunretsu\ ;
+鬱病 > utsubyou\ ;
+逆修 > gyakushu\ ;
+直売 > chokubai\ ;
+借貸 > shakutai\ ;
+借財 > shakuzai\ ;
+冬山 > fuyuyama\ ;
+分冊 > bunsatsu\ ;
+軍略 > gunryaku\ ;
+用達 > youtatsu\ ;
+荒夷 > araebisu\ ;
+極端 > kyokutan\ ;
+真南 > maminami\ ;
+略装 > ryakusou\ ;
+列伝 > retsuden\ ;
+共振 > kyoushin\ ;
+船端 > funabata\ ;
+鯨座 > kujiraza\ ;
+着任 > chakunin\ ;
+辻堂 > tsujidou\ ;
+俺達 > oretachi\ ;
+真勇 > shin''yuu\ ;
+傘紙 > kasagami\ ;
+白昼 > hakuchuu\ ;
+痼疾 > koshitsu\ ;
+出処 > dedokoro\ ;
+偽者 > nisemono\ ;
+克服 > kokufuku\ ;
+画質 > gashitsu\ ;
+跳躍 > chouyaku\ ;
+追伸 > tsuishin\ ;
+発明 > hatsumei\ ;
+逆上 > gyakujou\ ;
+先月 > sengetsu\ ;
+平仄 > hyousoku\ ;
+円形 > marugata\ ;
+少額 > shougaku\ ;
+返却 > henkyaku\ ;
+小額 > shougaku\ ;
+凶兆 > kyouchou\ ;
+驀進 > bakushin\ ;
+楓糖 > kaedetou\ ;
+幕内 > makuuchi\ ;
+巻尺 > makijaku\ ;
+先日 > senjitsu\ ;
+借覧 > shakuran\ ;
+駒鳥 > komadori\ ;
+健脚 > kenkyaku\ ;
+幕僚 > bakuryou\ ;
+写実 > shajitsu\ ;
+元日 > ganjitsu\ ;
+白描 > hakubyou\ ;
+尻重 > shiriomo\ ;
+脛骨 > keikotsu\ ;
+元方 > motokata\ ;
+発揚 > hatsuyou\ ;
+茶壺 > chatsubo\ ;
+修身 > shuushin\ ;
+発掘 > hakkutsu\ ;
+川底 > kawazoko\ ;
+川床 > kawadoko\ ;
+凶作 > kyousaku\ ;
+概略 > gairyaku\ ;
+川幅 > kawahaba\ ;
+出京 > shukkyou\ ;
+傷病 > shoubyou\ ;
+椎茸 > shiitake\ ;
+州州 > shuushuu\ ;
+停職 > teishoku\ ;
+侑食 > yuushoku\ ;
+内局 > naikyoku\ ;
+男親 > otokooya\ ;
+凛冽 > rinretsu\ ;
+花柄 > hanagara\ ;
+公式 > koushiki\ ;
+山襞 > yamahida\ ;
+辻占 > tsujiura\ ;
+様様 > samazama\ ;
+真中 > man''naka\ ;
+内密 > naimitsu\ ;
+花束 > hanataba\ ;
+内実 > naijitsu\ ;
+共布 > tomonuno\ ;
+山裾 > yamasuso\ ;
+高空 > takazora\ ;
+花札 > hanafuda\ ;
+百態 > hyakutai\ ;
+痔疾 > jishitsu\ ;
+八幡 > hachiman\ ;
+巡察 > junsatsu\ ;
+軽業 > karuwaza\ ;
+川尻 > kawajiri\ ;
+直前 > chokuzen\ ;
+棒術 > boujutsu\ ;
+草叢 > kusamura\ ;
+花時 > hanadoki\ ;
+入幕 > nyuumaku\ ;
+直刀 > chokutou\ ;
+発情 > hatsujou\ ;
+俳謔 > haigyaku\ ;
+岩脈 > ganmyaku\ ;
+帳元 > choumoto\ ;
+病的 > byouteki\ ;
+横幅 > yokohaba\ ;
+病癖 > byouheki\ ;
+胸高 > munadaka\ ;
+促進 > sokushin\ ;
+標徴 > hyouchou\ ;
+病症 > byoushou\ ;
+冷却 > reikyaku\ ;
+膏血 > kouketsu\ ;
+傷物 > kizumono\ ;
+百弊 > hyakuhei\ ;
+凝乳 > gyounyuu\ ;
+畜舎 > chikusha\ ;
+共学 > kyougaku\ ;
+内壕 > uchibori\ ;
+少量 > shouryou\ ;
+全局 > zenkyoku\ ;
+克復 > kokufuku\ ;
+百年 > hyakunen\ ;
+足軽 > ashigaru\ ;
+小量 > shouryou\ ;
+健筆 > kenpitsu\ ;
+寒餅 > kanmochi\ ;
+寮長 > ryouchou\ ;
+先役 > sen''yaku\ ;
+俊足 > shunsoku\ ;
+内堀 > uchibori\ ;
+入寂 > nyuujaku\ ;
+臣籍 > shinseki\ ;
+信認 > shin''nin\ ;
+円型 > marugata\ ;
+辛勝 > shinshou\ ;
+入学 > nyuugaku\ ;
+業物 > wazamono\ ;
+赤靴 > akagutsu\ ;
+足跡 > sokuseki\ ;
+信証 > shinshou\ ;
+州境 > shuukyou\ ;
+信託 > shintaku\ ;
+宿駅 > shukueki\ ;
+極点 > kyokuten\ ;
+俗調 > zokuchou\ ;
+舌癌 > zetsugan\ ;
+直中 > tadanaka\ ;
+花房 > hanafusa\ ;
+直上 > chokujou\ ;
+疫病 > yakubyou\ ;
+若宮 > wakamiya\ ;
+元帳 > motochou\ ;
+寛闊 > kankatsu\ ;
+寸鉄 > suntetsu\ ;
+百害 > hyakugai\ ;
+偶発 > guuhatsu\ ;
+小身 > shoushin\ ;
+宿願 > shukugan\ ;
+生薬 > shouyaku\ ;
+宿題 > shukudai\ ;
+瓶詰 > bindzume\ ;
+偏窟 > henkutsu\ ;
+先山 > sakiyama\ ;
+男色 > nanshoku\ ;
+脱輪 > datsurin\ ;
+蹴球 > shuukyuu\ ;
+倹約 > ken''yaku\ ;
+草丈 > kusatake\ ;
+入塾 > nyuujuku\ ;
+高率 > kouritsu\ ;
+駿足 > shunsoku\ ;
+優形 > yasagata\ ;
+先客 > senkyaku\ ;
+疵物 > kizumono\ ;
+俗衆 > zokushuu\ ;
+山膚 > yamahada\ ;
+榕樹 > gajumaru\ ;
+先安 > sakiyasu\ ;
+馬面 > umadzura\ ;
+盗伐 > toubatsu\ ;
+百姓 > hyakusei\ ;
+岩窟 > gankutsu\ ;
+歴々 > rekireki\ ;
+充実 > juujitsu\ ;
+花形 > hanagata\ ;
+盗人 > nusubito\ ;
+白妙 > shirotae\ ;
+山脈 > yamanami\ ;
+花弁 > hanabira\ ;
+山肌 > yamahada\ ;
+入国 > nyuukoku\ ;
+極洋 > kyokuyou\ ;
+白壁 > hakuheki\ ;
+高熱 > kounetsu\ ;
+白墨 > hakuboku\ ;
+発売 > hatsubai\ ;
+内力 > nairyoku\ ;
+赤銅 > shakudou\ ;
+偽物 > nisemono\ ;
+皮剥 > kawahagi\ ;
+巨刹 > kyosatsu\ ;
+骨盤 > kotsuban\ ;
+鯉口 > koiguchi\ ;
+生色 > seishoku\ ;
+先太 > sakibuto\ ;
+超越 > chouetsu\ ;
+定食 > teishoku\ ;
+兵卒 > heisotsu\ ;
+様式 > youshiki\ ;
+伴食 > banshoku\ ;
+兵力 > heiryoku\ ;
+楽楽 > rakuraku\ ;
+高潮 > takashio\ ;
+内側 > uchigawa\ ;
+脅迫 > kyouhaku\ ;
+高潔 > kouketsu\ ;
+腹膜 > fukumaku\ ;
+内倉 > uchigura\ ;
+花守 > hanamori\ ;
+胸郭 > kyoukaku\ ;
+其其 > sorezore\ ;
+病毒 > byoudoku\ ;
+極楽 > gokuraku\ ;
+極極 > gokugoku\ ;
+病歴 > byoureki\ ;
+花嫁 > hanayome\ ;
+全力 > zenryoku\ ;
+共共 > tomodomo\ ;
+花婿 > hanamuko\ ;
+贋首 > nisekubi\ ;
+供託 > kyoutaku\ ;
+若君 > wakagimi\ ;
+局舎 > kyokusha\ ;
+州俗 > shuuzoku\ ;
+信腹 > shinpuku\ ;
+植生 > shokusei\ ;
+権力 > kenryoku\ ;
+優女 > yasaon''a\ ;
+画策 > kakusaku\ ;
+染髪 > senpatsu\ ;
+宿酔 > shukusui\ ;
+赫赫 > kakukaku\ ;
+伸長 > shinchou\ ;
+密造 > mitsuzou\ ;
+楽曲 > gakkyoku\ ;
+高波 > takanami\ ;
+会食 > kaishoku\ ;
+倒立 > touritsu\ ;
+俗臭 > zokushuu\ ;
+色感 > shikikan\ ;
+左上 > hidariue\ ;
+先哲 > sentetsu\ ;
+極東 > kyokutou\ ;
+色情 > shikijou\ ;
+魚屋 > sakanaya\ ;
+跳箱 > tobibako\ ;
+軟式 > nanshiki\ ;
+高殿 > takadono\ ;
+偏片 > katahara\ ;
+川上 > kawakami\ ;
+山程 > yamahodo\ ;
+発動 > hatsudou\ ;
+先口 > senkuchi\ ;
+肋骨 > rokkotsu\ ;
+畜産 > chikusan\ ;
+色彩 > shikisai\ ;
+良心 > ryoushin\ ;
+生米 > namagome\ ;
+用筆 > youhitsu\ ;
+入信 > nyuushin\ ;
+臓物 > zoumotsu\ ;
+俗習 > zokushuu\ ;
+遙々 > harubaru\ ;
+骨灰 > kotsubai\ ;
+船旅 > funatabi\ ;
+船方 > funakata\ ;
+花園 > hanazono\ ;
+入伸 > nyuushin\ ;
+光力 > kouryoku\ ;
+軍律 > gunritsu\ ;
+軍役 > gun''yaku\ ;
+百億 > hyakuoku\ ;
+屑籠 > kuzukago\ ;
+痛撃 > tsuugeki\ ;
+全乳 > zen''nyuu\ ;
+格調 > kakuchou\ ;
+入京 > nyuukyou\ ;
+輸出 > yushutsu\ ;
+概括 > gaikatsu\ ;
+膠着 > kouchaku\ ;
+信経 > shinkyou\ ;
+併設 > heisetsu\ ;
+百倍 > hyakubai\ ;
+車座 > kurumaza\ ;
+先入 > sen''nyuu\ ;
+横丁 > yokochou\ ;
+借用 > shakuyou\ ;
+宿賃 > yadochin\ ;
+畜犬 > chikuken\ ;
+傍杖 > sobadzue\ ;
+元元 > motomoto\ ;
+寝袋 > nebukuro\ ;
+芝地 > shibachi\ ;
+的中 > tekichuu\ ;
+就縛 > shuubaku\ ;
+密謀 > mitsubou\ ;
+密談 > mitsudan\ ;
+発令 > hatsurei\ ;
+良将 > ryoushou\ ;
+客車 > kyakusha\ ;
+脱色 > dasshoku\ ;
+百世 > hyakusei\ ;
+高札 > kousatsu\ ;
+百万 > hyakuman\ ;
+小腸 > shouchou\ ;
+仙骨 > senkotsu\ ;
+安酒 > yasuzake\ ;
+僻境 > hekikyou\ ;
+学長 > gakuchou\ ;
+車屋 > kurumaya\ ;
+優劣 > yuuretsu\ ;
+身心 > shinshin\ ;
+痛惜 > tsuuseki\ ;
+偽札 > nisefuda\ ;
+贋金 > nisegane\ ;
+借物 > karimono\ ;
+度々 > tabitabi\ ;
+赤蛙 > akagaeru\ ;
+傷心 > shoushin\ ;
+付馬 > tsukeuma\ ;
+赤虫 > akamushi\ ;
+佗言 > wabigoto\ ;
+生皮 > namakawa\ ;
+側杖 > sobadzue\ ;
+極性 > kyokusei\ ;
+痛心 > tsuushin\ ;
+色女 > iroon''na\ ;
+輪伐 > rinbatsu\ ;
+倍率 > bairitsu\ ;
+俗称 > zokushou\ ;
+山猿 > yamazaru\ ;
+山猫 > yamaneko\ ;
+伝達 > dentatsu\ ;
+植民 > shokumin\ ;
+寵臣 > choushin\ ;
+植毛 > shokumou\ ;
+肉鍋 > nikunabe\ ;
+男爵 > danshaku\ ;
+人魂 > hitodama\ ;
+腹痛 > fukutsuu\ ;
+船底 > funazoko\ ;
+船床 > funadoko\ ;
+駆落 > kakeochi\ ;
+極希 > gokumare\ ;
+俊秀 > shunshuu\ ;
+人骨 > jinkotsu\ ;
+小結 > komusubi\ ;
+実説 > jissetsu\ ;
+履物 > hakimono\ ;
+病徴 > byouchou\ ;
+定説 > teisetsu\ ;
+臨月 > ringetsu\ ;
+病弱 > byoujaku\ ;
+広々 > hirobiro\ ;
+骨材 > kotsuzai\ ;
+産物 > sanbutsu\ ;
+官設 > kansetsu\ ;
+検札 > kensatsu\ ;
+臣服 > shinpuku\ ;
+貪食 > donshoku\ ;
+病床 > byoushou\ ;
+信用 > shin''you\ ;
+脇腹 > wakibara\ ;
+生物 > namamono\ ;
+供給 > kyoukyuu\ ;
+局番 > kyokuban\ ;
+小策 > shousaku\ ;
+槍先 > yarisaki\ ;
+痰壺 > tantsubo\ ;
+髪床 > kamidoko\ ;
+寒色 > kanshoku\ ;
+植栽 > shokusai\ ;
+休足 > kyuusoku\ ;
+船宿 > funayado\ ;
+仏門 > butsumon\ ;
+船客 > senkyaku\ ;
+傍役 > wakiyaku\ ;
+肉迫 > nikuhaku\ ;
+核膜 > kakumaku\ ;
+亡骸 > nakigara\ ;
+臘月 > rougetsu\ ;
+植林 > shokurin\ ;
+完訳 > kan''yaku\ ;
+胸膜 > kyoumaku\ ;
+飽食 > houshoku\ ;
+修熟 > shuujuku\ ;
+宅診 > takushin\ ;
+小禄 > shouroku\ ;
+伝説 > densetsu\ ;
+足癖 > ashikuse\ ;
+脱税 > datsuzei\ ;
+京響 > kyoukyou\ ;
+転入 > ten''nyuu\ ;
+対立 > tairitsu\ ;
+腫物 > shumotsu\ ;
+極大 > kyokudai\ ;
+略書 > ryakusho\ ;
+宿舎 > shukusha\ ;
+軍卒 > gunsotsu\ ;
+峰峰 > minemine\ ;
+容色 > youshoku\ ;
+介錯 > kaishaku\ ;
+森森 > shinshin\ ;
+嵌入 > kan''nyuu\ ;
+軒別 > kenbetsu\ ;
+側役 > sobayaku\ ;
+転借 > tenshaku\ ;
+脊索 > sekisaku\ ;
+休診 > kyuushin\ ;
+財閥 > zaibatsu\ ;
+環節 > kansetsu\ ;
+木鼠 > kinezumi\ ;
+骨折 > kossetsu\ ;
+脚立 > kyatatsu\ ;
+僻事 > higagoto\ ;
+略文 > ryakubun\ ;
+軒先 > nokisaki\ ;
+根絶 > konzetsu\ ;
+極地 > kyokuchi\ ;
+枝道 > edamichi\ ;
+宿老 > shukurou\ ;
+使節 > shisetsu\ ;
+貸金 > kashikin\ ;
+高察 > kousatsu\ ;
+倒様 > sakasama\ ;
+生活 > seikatsu\ ;
+高密 > koumitsu\ ;
+仏道 > butsudou\ ;
+何者 > nanimono\ ;
+良俗 > ryouzoku\ ;
+住職 > juushoku\ ;
+柔術 > juujutsu\ ;
+生水 > namamizu\ ;
+胸糞 > munekuso\ ;
+客船 > kyakusen\ ;
+耐食 > taishoku\ ;
+老骨 > roukotsu\ ;
+枕辺 > makurabe\ ;
+尤物 > yuubutsu\ ;
+客舎 > kyakusha\ ;
+乱髪 > ranpatsu\ ;
+体罰 > taibatsu\ ;
+痛哭 > tsuukoku\ ;
+生殖 > seishoku\ ;
+人里 > hitozato\ ;
+客膳 > kyakuzen\ ;
+肉親 > nikushin\ ;
+富籤 > tomikuji\ ;
+偵察 > teisatsu\ ;
+能筆 > nouhitsu\ ;
+乾風 > karakaze\ ;
+髪型 > kamigata\ ;
+良久 > ryoukyuu\ ;
+村雨 > murasame\ ;
+軒並 > nokinami\ ;
+軒丈 > nokitake\ ;
+寒竹 > kanchiku\ ;
+月齢 > getsurei\ ;
+楽匠 > gakushou\ ;
+楽勝 > rakushou\ ;
+跳梁 > chouryou\ ;
+寒空 > samuzora\ ;
+仰角 > gyoukaku\ ;
+楽劇 > gakugeki\ ;
+飄飄 > hyouhyou\ ;
+木骨 > mokkotsu\ ;
+侯爵 > koushaku\ ;
+玉髄 > gyokuzui\ ;
+聴診 > choushin\ ;
+俗流 > zokuryuu\ ;
+定職 > teishoku\ ;
+官職 > kanshoku\ ;
+健実 > kenjitsu\ ;
+豪雪 > gousetsu\ ;
+聴覚 > choukaku\ ;
+珍重 > chinchou\ ;
+直々 > jikijiki\ ;
+自室 > jishitsu\ ;
+側壁 > sokuheki\ ;
+検尿 > ken''nyou\ ;
+乱雑 > ranzatsu\ ;
+属望 > shokubou\ ;
+聴衆 > choushuu\ ;
+中黒 > nakaguro\ ;
+検察 > kensatsu\ ;
+人足 > hitoashi\ ;
+対物 > taibutsu\ ;
+肉薄 > nikuhaku\ ;
+玉顔 > gyokugan\ ;
+颯颯 > sassatsu\ ;
+偏屈 > henkutsu\ ;
+仏説 > bussetsu\ ;
+島台 > shimadai\ ;
+仇讎 > kyuushuu\ ;
+併発 > heihatsu\ ;
+駐留 > chuuryuu\ ;
+略帽 > ryakubou\ ;
+朝飯 > asameshi\ ;
+何程 > nanihodo\ ;
+風食 > fuushoku\ ;
+畳屋 > tatamiya\ ;
+側圧 > sokuatsu\ ;
+贖罪 > shokuzai\ ;
+肩肘 > katahiji\ ;
+染色 > senshoku\ ;
+身中 > shinchuu\ ;
+村里 > murazato\ ;
+仙術 > senjutsu\ ;
+自失 > jishitsu\ ;
+俗楽 > zokugaku\ ;
+首筋 > kubisuji\ ;
+佇立 > choritsu\ ;
+贋者 > nisemono\ ;
+密着 > mitchaku\ ;
+腰板 > koshiita\ ;
+股肉 > momoniku\ ;
+脱漏 > datsurou\ ;
+胸痛 > kyoutsuu\ ;
+丸髷 > marumage\ ;
+屈曲 > kukkyoku\ ;
+船人 > funabito\ ;
+骨太 > honebuto\ ;
+高卒 > kousotsu\ ;
+就業 > shuugyou\ ;
+食道 > shokudou\ ;
+谷風 > tanikaze\ ;
+信服 > shinpuku\ ;
+仮葺 > karibuki\ ;
+風雪 > fuusetsu\ ;
+完結 > kanketsu\ ;
+柔肌 > yawahada\ ;
+駐独 > chuudoku\ ;
+玉門 > gyokumon\ ;
+饒舌 > jouzetsu\ ;
+月食 > gesshoku\ ;
+栗石 > kuriishi\ ;
+小波 > sazanami\ ;
+益々 > masumasu\ ;
+定立 > teiritsu\ ;
+丸首 > marukubi\ ;
+中高 > nakadaka\ ;
+官立 > kanritsu\ ;
+能率 > nouritsu\ ;
+足業 > ashiwaza\ ;
+木鐸 > bokutaku\ ;
+主食 > shushoku\ ;
+驚愕 > kyougaku\ ;
+俗曲 > zokkyoku\ ;
+仙薬 > sen''yaku\ ;
+作病 > sakubyou\ ;
+何百 > nanbyaku\ ;
+仁術 > jinjutsu\ ;
+信教 > shinkyou\ ;
+桜湯 > sakurayu\ ;
+検圧 > ken''atsu\ ;
+一齣 > hitokoma\ ;
+足械 > ashikase\ ;
+月面 > getsumen\ ;
+乳酪 > nyuuraku\ ;
+尽日 > jinjitsu\ ;
+少欲 > shouyoku\ ;
+画引 > kakubiki\ ;
+留学 > ryuugaku\ ;
+学習 > gakushuu\ ;
+跋文 > batsubun\ ;
+山彦 > yamabiko\ ;
+山形 > yamagata\ ;
+病中 > byouchuu\ ;
+小欲 > shouyoku\ ;
+偶力 > guuryoku\ ;
+染織 > senshoku\ ;
+任職 > ninshoku\ ;
+脱毛 > datsumou\ ;
+専決 > senketsu\ ;
+梟敵 > kyouteki\ ;
+木鋏 > kibasami\ ;
+舟人 > funabito\ ;
+貧血 > hinketsu\ ;
+足枷 > ashikase\ ;
+耳許 > mimimoto\ ;
+傑人 > ketsujin\ ;
+対決 > taiketsu\ ;
+射殺 > shasatsu\ ;
+令色 > reishoku\ ;
+封殺 > fuusatsu\ ;
+小槌 > kodzuchi\ ;
+学績 > gakuseki\ ;
+山川 > yamagawa\ ;
+高低 > takahiku\ ;
+中頃 > nakagoro\ ;
+職能 > shokunou\ ;
+屈折 > kussetsu\ ;
+実直 > jitchoku\ ;
+腰折 > koshiore\ ;
+実益 > jitsueki\ ;
+定着 > teichaku\ ;
+梁木 > ryouboku\ ;
+偶偶 > tamatama\ ;
+曲面 > kyokumen\ ;
+足早 > ashibaya\ ;
+中震 > chuushin\ ;
+舌代 > zetsudai\ ;
+柱石 > chuuseki\ ;
+山山 > yamayama\ ;
+中隔 > chuukaku\ ;
+局所 > kyokusho\ ;
+貯蓄 > chochiku\ ;
+低率 > teiritsu\ ;
+州々 > shuushuu\ ;
+染筆 > senpitsu\ ;
+信憑 > shinpyou\ ;
+桟橋 > sanbashi\ ;
+画室 > gashitsu\ ;
+肉細 > nikuboso\ ;
+客用 > kyakuyou\ ;
+中限 > nakagiri\ ;
+何物 > nanimono\ ;
+山寺 > yamadera\ ;
+猟鳥 > ryouchou\ ;
+学籍 > gakuseki\ ;
+万骨 > bankotsu\ ;
+修復 > shuufuku\ ;
+仏艦 > futsukan\ ;
+腹心 > fukushin\ ;
+実用 > jitsuyou\ ;
+修得 > shuutoku\ ;
+胆略 > tanryaku\ ;
+其々 > sorezore\ ;
+丸鑿 > marunomi\ ;
+山守 > yamamori\ ;
+足摺 > ashizuri\ ;
+食言 > shokugen\ ;
+個室 > koshitsu\ ;
+二言 > futakoto\ ;
+体熱 > tainetsu\ ;
+共々 > tomodomo\ ;
+仮綴 > karitoji\ ;
+休祥 > kyuushou\ ;
+屈従 > kutsujuu\ ;
+実現 > jitsugen\ ;
+現職 > genshoku\ ;
+豁達 > kattatsu\ ;
+信念 > shin''nen\ ;
+顎骨 > gakkotsu\ ;
+三食 > sanshoku\ ;
+了覚 > ryoukaku\ ;
+一駒 > hitokoma\ ;
+群雲 > murakumo\ ;
+月金 > getsukin\ ;
+赤沈 > sekichin\ ;
+下顎 > shitaago\ ;
+山姫 > yamahime\ ;
+脂汗 > aburaase\ ;
+腰弁 > koshiben\ ;
+宝玉 > hougyoku\ ;
+少敵 > shouteki\ ;
+侵撃 > shingeki\ ;
+驍将 > gyoushou\ ;
+丘陵 > kyuuryou\ ;
+略名 > ryakumei\ ;
+小敵 > shouteki\ ;
+略号 > ryakugou\ ;
+足技 > ashiwaza\ ;
+略史 > ryakushi\ ;
+定率 > teiritsu\ ;
+番卒 > bansotsu\ ;
+略取 > ryakushu\ ;
+実状 > jitsujou\ ;
+借地 > shakuchi\ ;
+併殺 > heisatsu\ ;
+聖職 > seishoku\ ;
+腰帯 > koshiobi\ ;
+上靴 > uwagutsu\ ;
+膜壁 > makuheki\ ;
+脱文 > datsubun\ ;
+存立 > sonritsu\ ;
+宝物 > houmotsu\ ;
+俗形 > zokugyou\ ;
+人膚 > hitohada\ ;
+風足 > kazaashi\ ;
+乾裂 > kanretsu\ ;
+桎梏 > shikkoku\ ;
+一頃 > hitokoro\ ;
+翌週 > yokushuu\ ;
+対日 > tainichi\ ;
+枠組 > wakugumi\ ;
+人脚 > hitoashi\ ;
+翻訳 > hon''yaku\ ;
+人脈 > jinmyaku\ ;
+山城 > yamajiro\ ;
+頸骨 > keikotsu\ ;
+供料 > kyouryou\ ;
+脚本 > kyakuhon\ ;
+東芝 > toushiba\ ;
+赤樫 > akagashi\ ;
+耐蝕 > taishoku\ ;
+脊椎 > sekitsui\ ;
+柴犬 > shibainu\ ;
+修学 > shuugaku\ ;
+俊徳 > shuntoku\ ;
+月輪 > getsurin\ ;
+仲秋 > chuushuu\ ;
+主述 > shujutsu\ ;
+人肌 > hitohada\ ;
+人肉 > jin''niku\ ;
+媒酌 > baishaku\ ;
+例月 > reigetsu\ ;
+生娘 > kimusume\ ;
+代筆 > daihitsu\ ;
+脊梁 > sekiryou\ ;
+密殺 > missatsu\ ;
+暴食 > boushoku\ ;
+山国 > yamaguni\ ;
+職種 > shokushu\ ;
+一際 > hitokiwa\ ;
+乾蝕 > kanshoku\ ;
+一隅 > hitosumi\ ;
+就床 > shuushou\ ;
+丈長 > takenaga\ ;
+頭髪 > touhatsu\ ;
+猥雑 > waizatsu\ ;
+聯立 > renritsu\ ;
+脊柱 > sekichuu\ ;
+頭骨 > toukotsu\ ;
+足形 > ashigata\ ;
+安物 > yasumono\ ;
+寒極 > kankyoku\ ;
+足弱 > ashiyowa\ ;
+候哉 > sourouya\ ;
+例日 > reijitsu\ ;
+中速 > chuusoku\ ;
+生壁 > namakabe\ ;
+更迭 > koutetsu\ ;
+梟将 > kyoushou\ ;
+元々 > motomoto\ ;
+肉的 > nikuteki\ ;
+胸椎 > kyoutsui\ ;
+風説 > fuusetsu\ ;
+桂月 > keigetsu\ ;
+室温 > shitsuon\ ;
+仙窟 > senkutsu\ ;
+寧日 > neijitsu\ ;
+贋物 > nisemono\ ;
+番付 > bandzuke\ ;
+赤松 > akamatsu\ ;
+略体 > ryakutai\ ;
+梅干 > umeboshi\ ;
+俗学 > zokugaku\ ;
+腹壁 > fukuheki\ ;
+中軸 > chuujiku\ ;
+略伝 > ryakuden\ ;
+腸壁 > chouheki\ ;
+象虫 > zoumushi\ ;
+林立 > rinritsu\ ;
+嬌羞 > kyoushuu\ ;
+質疑 > shitsugi\ ;
+山吹 > yamabuki\ ;
+踏切 > fumikiri\ ;
+就寝 > shuushin\ ;
+杏茸 > anzutake\ ;
+生国 > shoukoku\ ;
+信女 > shin''nyo\ ;
+束脩 > sokushuu\ ;
+小心 > shoushin\ ;
+宿業 > shukugou\ ;
+申告 > shinkoku\ ;
+寒月 > kangetsu\ ;
+有識 > yuushiki\ ;
+佚楽 > itsuraku\ ;
+就学 > shuugaku\ ;
+餅網 > mochiami\ ;
+何様 > nanisama\ ;
+翁貝 > okinagai\ ;
+富札 > tomifuda\ ;
+局外 > kyokugai\ ;
+食膳 > shokuzen\ ;
+杉苔 > sugigoke\ ;
+密林 > mitsurin\ ;
+倉卒 > sousotsu\ ;
+甲卒 > kousotsu\ ;
+客殿 > kyakuden\ ;
+並足 > namiashi\ ;
+交織 > koushoku\ ;
+畑作 > hatasaku\ ;
+瓦屋 > kawaraya\ ;
+客死 > kyakushi\ ;
+男前 > otokomae\ ;
+局報 > kyokuhou\ ;
+顰蹙 > hinshuku\ ;
+宮様 > miyasama\ ;
+作柄 > sakugara\ ;
+献酌 > kenshaku\ ;
+食育 > shokuiku\ ;
+風蝕 > fuushoku\ ;
+両足 > ryousoku\ ;
+二股 > futamata\ ;
+瓦家 > kawaraya\ ;
+上達 > joutatsu\ ;
+膝元 > hizamoto\ ;
+望蜀 > boushoku\ ;
+宿望 > shukubou\ ;
+脱帽 > datsubou\ ;
+申出 > moushide\ ;
+柄物 > garamono\ ;
+上述 > joujutsu\ ;
+作曲 > sakkyoku\ ;
+耳糞 > mimikuso\ ;
+老若 > rounyaku\ ;
+肉牛 > nikugyuu\ ;
+山元 > yamamoto\ ;
+局地 > kyokuchi\ ;
+貞節 > teisetsu\ ;
+束縛 > sokubaku\ ;
+末葉 > matsuyou\ ;
+何月 > nangatsu\ ;
+尺地 > shakuchi\ ;
+豚草 > butakusa\ ;
+曲論 > kyokuron\ ;
+山側 > yamagawa\ ;
+少少 > shoushou\ ;
+少将 > shoushou\ ;
+暗闇 > kurayami\ ;
+休漁 > kyuuryou\ ;
+玉葱 > tamanegi\ ;
+乳臭 > nyuushuu\ ;
+甘口 > amakuchi\ ;
+木菟 > mimizuku\ ;
+嬌笑 > kyoushou\ ;
+産別 > sanbetsu\ ;
+月蝕 > gesshoku\ ;
+小学 > shougaku\ ;
+様々 > samazama\ ;
+便壺 > bentsubo\ ;
+一輛 > ichiryou\ ;
+賜物 > tamamono\ ;
+生別 > seibetsu\ ;
+首枷 > kubikase\ ;
+子爵 > shishaku\ ;
+例式 > reishiki\ ;
+現生 > gen''nama\ ;
+木苺 > kiichigo\ ;
+犬鷲 > inuwashi\ ;
+本色 > honshoku\ ;
+乱脈 > ranmyaku\ ;
+定植 > teishoku\ ;
+軽々 > karugaru\ ;
+密接 > missetsu\ ;
+一躍 > ichiyaku\ ;
+山人 > yamabito\ ;
+脇息 > kyousoku\ ;
+羽衣 > hagoromo\ ;
+服薬 > fukuyaku\ ;
+属僚 > zokuryou\ ;
+足型 > ashigata\ ;
+画一 > kakuitsu\ ;
+梵刹 > bonsetsu\ ;
+伏流 > fukuryuu\ ;
+対局 > taikyoku\ ;
+猫足 > nekoashi\ ;
+小娘 > komusume\ ;
+代物 > daibutsu\ ;
+姫鱒 > himemasu\ ;
+本腰 > hongoshi\ ;
+一足 > hitoashi\ ;
+腹切 > harakiri\ ;
+両親 > ryoushin\ ;
+晩飯 > banmeshi\ ;
+翼翼 > yokuyoku\ ;
+生傷 > namakizu\ ;
+豚肉 > butaniku\ ;
+脇役 > wakiyaku\ ;
+頭金 > atamakin\ ;
+美質 > bishitsu\ ;
+届出 > todokede\ ;
+赤心 > sekishin\ ;
+本職 > honshoku\ ;
+状骨 > joukotsu\ ;
+翠色 > suishoku\ ;
+両袖 > ryousode\ ;
+核心 > kakushin\ ;
+丸薬 > gan''yaku\ ;
+伸暢 > shinchou\ ;
+朝臣 > choushin\ ;
+宿所 > shukusho\ ;
+果物 > kudamono\ ;
+現物 > genbutsu\ ;
+下請 > shitauke\ ;
+木耳 > kikurage\ ;
+尽力 > jinryoku\ ;
+人畜 > jinchiku\ ;
+仮漆 > kashitsu\ ;
+村立 > sonritsu\ ;
+風脚 > kazaashi\ ;
+係員 > kakariin\ ;
+一諾 > ichidaku\ ;
+小国 > shoukoku\ ;
+学歴 > gakureki\ ;
+宿悪 > shukuaku\ ;
+胸座 > munagura\ ;
+一読 > ichidoku\ ;
+宗教 > shuukyou\ ;
+寥寥 > ryouryou\ ;
+有色 > yuushoku\ ;
+狭量 > kyouryou\ ;
+来着 > raichaku\ ;
+休業 > kyuugyou\ ;
+月色 > gesshoku\ ;
+修了 > shuuryou\ ;
+胸幅 > munehaba\ ;
+一言 > hitokoto\ ;
+宿志 > shukushi\ ;
+耳疾 > jishitsu\ ;
+腕力 > wanryoku\ ;
+腹中 > fukuchuu\ ;
+一角 > hitokado\ ;
+肉欲 > nikuyoku\ ;
+珠玉 > shugyoku\ ;
+什物 > juumotsu\ ;
+主色 > shushoku\ ;
+贋札 > nisefuda\ ;
+肩書 > katagaki\ ;
+信伏 > shinpuku\ ;
+信任 > shin''nin\ ;
+宿弊 > shukuhei\ ;
+鬱々 > utsuutsu\ ;
+乱筆 > ranpitsu\ ;
+人物 > jinbutsu\ ;
+俗信 > zokushin\ ;
+献血 > kenketsu\ ;
+格安 > kakuyasu\ ;
+両蓋 > ryoubuta\ ;
+学業 > gakugyou\ ;
+人爵 > jinshaku\ ;
+猥褻 > waisetsu\ ;
+豚箱 > butabako\ ;
+仮殿 > karidono\ ;
+飛石 > tobiishi\ ;
+乱立 > ranritsu\ ;
+宿帳 > yadochou\ ;
+寒寒 > samuzamu\ ;
+朱筆 > shuhitsu\ ;
+主脈 > shumyaku\ ;
+付添 > tsukisoi\ ;
+本節 > honbushi\ ;
+曲芸 > kyokugei\ ;
+末節 > massetsu\ ;
+足元 > ashimoto\ ;
+財物 > zaibutsu\ ;
+小名 > shoumyou\ ;
+乗組 > norikumi\ ;
+寝姿 > nesugata\ ;
+曳船 > hikibune\ ;
+翌翌 > yokuyoku\ ;
+末筆 > mappitsu\ ;
+昼頃 > hirugoro\ ;
+股旅 > matatabi\ ;
+独身 > dokushin\ ;
+琴曲 > kinkyoku\ ;
+京物 > kyoumono\ ;
+某月 > bougetsu\ ;
+豆粕 > mamekasu\ ;
+実情 > jitsujou\ ;
+中腹 > chuufuku\ ;
+順逆 > jungyaku\ ;
+杉皮 > sugikawa\ ;
+将又 > hatamata\ ;
+脱却 > dakkyaku\ ;
+寂寥 > sekiryou\ ;
+寂寞 > sekibaku\ ;
+食用 > shokuyou\ ;
+某日 > boujitsu\ ;
+晩酌 > banshaku\ ;
+中肉 > chuuniku\ ;
+貞烈 > teiretsu\ ;
+飲物 > nomimono\ ;
+両膚 > ryouhada\ ;
+仲核 > chuukaku\ ;
+九穀 > kyuukoku\ ;
+実弾 > jitsudan\ ;
+下萠 > shitamoe\ ;
+曲者 > kusemono\ ;
+定律 > teiritsu\ ;
+桃園 > momozono\ ;
+首巻 > kubimaki\ ;
+仏気 > hotokegi\ ;
+春風 > harukaze\ ;
+並肉 > naminiku\ ;
+客年 > kyakunen\ ;
+越南 > betonamu\ ;
+両脇 > ryouwaki\ ;
+伸張 > shinchou\ ;
+風窓 > kazamado\ ;
+風穴 > fuuketsu\ ;
+仏殿 > butsuden\ ;
+胸壁 > kyouheki\ ;
+定式 > teishiki\ ;
+星食 > seishoku\ ;
+両肘 > ryouhiji\ ;
+両肌 > ryouhada\ ;
+貞潔 > teiketsu\ ;
+嫡男 > chakunan\ ;
+乳白 > nyuuhaku\ ;
+低密 > teimitsu\ ;
+両耳 > ryoumimi\ ;
+乱発 > ranpatsu\ ;
+脅嚇 > kyoukaku\ ;
+暴虐 > bougyaku\ ;
+肘掛 > hijikake\ ;
+両翼 > ryouyoku\ ;
+密売 > mitsubai\ ;
+木石 > bokuseki\ ;
+玉砕 > gyokusai\ ;
+七草 > nanakusa\ ;
+宮守 > miyamori\ ;
+曠職 > koushoku\ ;
+玉石 > tamaishi\ ;
+三色 > sanshoku\ ;
+仲春 > chuushun\ ;
+桑原 > kuwabara\ ;
+識閾 > shikiiki\ ;
+人波 > hitonami\ ;
+春雨 > harusame\ ;
+翳目 > kasumime\ ;
+猿股 > sarumata\ ;
+曲線 > kyokusen\ ;
+休戚 > kyuuseki\ ;
+客層 > kyakusou\ ;
+春陽 > shun''you\ ;
+貞淑 > teishuku\ ;
+守役 > moriyaku\ ;
+主節 > shusetsu\ ;
+一花 > hitohana\ ;
+顔色 > ganshoku\ ;
+中細 > chuuboso\ ;
+中級 > chuukyuu\ ;
+超克 > choukoku\ ;
+主筆 > shuhitsu\ ;
+率直 > sotchoku\ ;
+猫舌 > nekojita\ ;
+三脚 > sankyaku\ ;
+智識 > chishiki\ ;
+下肥 > shimogoe\ ;
+実害 > jitsugai\ ;
+養殖 > youshoku\ ;
+小一 > shouichi\ ;
+貪欲 > don''yoku\ ;
+人欲 > jin''yoku\ ;
+耐熱 > tainetsu\ ;
+実存 > jitsuzon\ ;
+領袖 > ryoushuu\ ;
+休息 > kyuusoku\ ;
+旱魃 > kanbatsu\ ;
+特集 > tokushuu\ ;
+末男 > batsunan\ ;
+宿坊 > shukubou\ ;
+音質 > onshitsu\ ;
+丸窓 > marumado\ ;
+猫脚 > nekoashi\ ;
+寸借 > sunshaku\ ;
+超俗 > chouzoku\ ;
+曲管 > kyokukan\ ;
+休心 > kyuushin\ ;
+脈動 > myakudou\ ;
+顕職 > kenshoku\ ;
+肩幅 > katahaba\ ;
+案出 > anshutsu\ ;
+股引 > momohiki\ ;
+丸禿 > maruhage\ ;
+供人 > tomobito\ ;
+人様 > hitosama\ ;
+乳牛 > nyuugyuu\ ;
+専一 > sen''itsu\ ;
+枕木 > makuragi\ ;
+股座 > matagura\ ;
+特長 > tokuchou\ ;
+頂角 > choukaku\ ;
+狸藻 > tanukimo\ ;
+缶詰 > kandzume\ ;
+一翼 > ichiyoku\ ;
+実妹 > jitsumai\ ;
+中空 > nakazora\ ;
+柔弱 > nyuujaku\ ;
+飲水 > nomimizu\ ;
+中程 > nakahodo\ ;
+今月 > kongetsu\ ;
+貸本 > kashihon\ ;
+並立 > heiritsu\ ;
+安宿 > yasuyado\ ;
+能力 > nouryoku\ ;
+中秋 > chuushuu\ ;
+物陰 > monokage\ ;
+安安 > yasuyasu\ ;
+学徳 > gakutoku\ ;
+習癖 > shuuheki\ ;
+丸石 > maruishi\ ;
+万緑 > banryoku\ ;
+宿命 > shukumei\ ;
+仏文 > futsubun\ ;
+牛革 > gyuukawa\ ;
+聖日 > seijitsu\ ;
+人柄 > hitogara\ ;
+高々 > takadaka\ ;
+享楽 > kyouraku\ ;
+松柏 > shouhaku\ ;
+群竹 > muratake\ ;
+警蹕 > keihitsu\ ;
+乳濁 > nyuudaku\ ;
+翠玉 > suigyoku\ ;
+日食 > nisshoku\ ;
+仇敵 > kyuuteki\ ;
+靺鞨 > makkatsu\ ;
+姿見 > sugatami\ ;
+実在 > jitsuzai\ ;
+月番 > tsukiban\ ;
+環七 > kan''nana\ ;
+胸先 > munasaki\ ;
+胸元 > munamoto\ ;
+一組 > hitokumi\ ;
+猫糞 > nekobaba\ ;
+旧領 > kyuuryou\ ;
+靴音 > kutsuoto\ ;
+乗物 > norimono\ ;
+風物 > fuubutsu\ ;
+作劇 > sakugeki\ ;
+暖色 > danshoku\ ;
+何卒 > nanitozo\ ;
+率然 > sotsuzen\ ;
+休学 > kyuugaku\ ;
+三筆 > sanpitsu\ ;
+住友 > sumitomo\ ;
+松明 > taimatsu\ ;
+偶々 > tamatama\ ;
+仮役 > kariyaku\ ;
+中皿 > chuuzara\ ;
+胸倉 > munagura\ ;
+人数 > hitokazu\ ;
+婚約 > kon''yaku\ ;
+下穴 > shitaana\ ;
+体力 > tairyoku\ ;
+宿六 > yadoroku\ ;
+耳朶 > mimitabu\ ;
+書留 > kakitome\ ;
+一筋 > hitosuji\ ;
+学寮 > gakuryou\ ;
+一筆 > hitofude\ ;
+片隅 > katasumi\ ;
+豁然 > katsuzen\ ;
+低劣 > teiretsu\ ;
+片陰 > katakage\ ;
+亥月 > gaigetsu\ ;
+特進 > tokushin\ ;
+質屋 > shichiya\ ;
+猪突 > chototsu\ ;
+京方 > kyougata\ ;
+牛鍋 > gyuunabe\ ;
+実名 > jitsumei\ ;
+来月 > raigetsu\ ;
+胸中 > kyouchuu\ ;
+一種 > hitokusa\ ;
+習熟 > shuujuku\ ;
+明達 > meitatsu\ ;
+枡形 > masugata\ ;
+宿便 > shukuben\ ;
+密令 > mitsurei\ ;
+特輯 > tokushuu\ ;
+一秒 > ichibyou\ ;
+主物 > shubutsu\ ;
+群発 > gunpatsu\ ;
+曲球 > kyokkyuu\ ;
+早鐘 > hayagane\ ;
+賢察 > kensatsu\ ;
+二桁 > futaketa\ ;
+来日 > rainichi\ ;
+昇進 > shoushin\ ;
+爪音 > tsumaoto\ ;
+断髪 > danpatsu\ ;
+曲玉 > magatama\ ;
+客分 > kyakubun\ ;
+丘疹 > kyuushin\ ;
+何何 > naninani\ ;
+胆力 > tanryoku\ ;
+事柄 > kotogara\ ;
+仮宮 > karimiya\ ;
+書物 > shomotsu\ ;
+牛酪 > gyuuraku\ ;
+独習 > dokushuu\ ;
+仮宅 > karitaku\ ;
+子宝 > kodakara\ ;
+韮葱 > niranegi\ ;
+佗人 > wabibito\ ;
+仏式 > busshiki\ ;
+頸筋 > kubisuji\ ;
+貪慾 > don''yoku\ ;
+講釈 > koushaku\ ;
+三直 > sanchoku\ ;
+何事 > nanigoto\ ;
+肉太 > nikubuto\ ;
+三百 > sanbyaku\ ;
+族長 > zokuchou\ ;
+特賞 > tokushou\ ;
+客僧 > kyakusou\ ;
+交接 > kousetsu\ ;
+顔着 > ganchaku\ ;
+乳業 > nyuugyou\ ;
+日銀 > nichigin\ ;
+枕席 > chinseki\ ;
+賓客 > hinkyaku\ ;
+実像 > jitsuzou\ ;
+実働 > jitsudou\ ;
+宮人 > miyabito\ ;
+旧里 > furusato\ ;
+一皿 > hitosara\ ;
+一皮 > hitokawa\ ;
+二方 > futakata\ ;
+上略 > jouryaku\ ;
+賊将 > zokushou\ ;
+貫徹 > kantetsu\ ;
+枢密 > suumitsu\ ;
+一癖 > hitokuse\ ;
+球審 > kyuushin\ ;
+宮中 > kyuuchuu\ ;
+豆殻 > mamegara\ ;
+現尺 > genshaku\ ;
+人影 > hitokage\ ;
+客体 > kyakutai\ ;
+実例 > jitsurei\ ;
+木槌 > kidzuchi\ ;
+令姪 > reitetsu\ ;
+現実 > genjitsu\ ;
+肇国 > choukoku\ ;
+客人 > kyakujin\ ;
+霹靂 > hekireki\ ;
+譲葉 > yuzuriha\ ;
+谷水 > tanimizu\ ;
+豪日 > gounichi\ ;
+服毒 > fukudoku\ ;
+職域 > shokuiki\ ;
+暴発 > bouhatsu\ ;
+京形 > kyougata\ ;
+食指 > shokushi\ ;
+牴触 > teishoku\ ;
+日輪 > nichirin\ ;
+肩先 > katasaki\ ;
+外鰐 > sotowani\ ;
+頻発 > hinpatsu\ ;
+伯仲 > hakuchuu\ ;
+本本 > motomoto\ ;
+本末 > honmatsu\ ;
+万物 > banmotsu\ ;
+狭窄 > kyousaku\ ;
+玉杯 > gyokuhai\ ;
+献物 > kenmotsu\ ;
+人山 > hitoyama\ ;
+早足 > hayaashi\ ;
+了承 > ryoushou\ ;
+中流 > chuuryuu\ ;
+霧雨 > kirisame\ ;
+大食 > taishoku\ ;
+文飾 > bunshoku\ ;
+賢哲 > kentetsu\ ;
+片足 > kataashi\ ;
+一片 > hitohira\ ;
+本日 > honjitsu\ ;
+乾拭 > karabuki\ ;
+食感 > shokukan\ ;
+整髪 > seihatsu\ ;
+仏壇 > butsudan\ ;
+学割 > gakuwari\ ;
+整骨 > seikotsu\ ;
+贋作 > nisesaku\ ;
+学則 > gakusoku\ ;
+曲水 > kyokusui\ ;
+風月 > fuugetsu\ ;
+霜雪 > sousetsu\ ;
+乱掘 > rankutsu\ ;
+中毒 > chuudoku\ ;
+九日 > kokonoka\ ;
+日豪 > nichigou\ ;
+仏堂 > butsudou\ ;
+九族 > kyuuzoku\ ;
+響笛 > kyouteki\ ;
+読響 > yomikyou\ ;
+講説 > kousetsu\ ;
+牛角 > gyuukaku\ ;
+大雪 > taisetsu\ ;
+外食 > gaishoku\ ;
+耳屎 > mimikuso\ ;
+夕飯 > yuumeshi\ ;
+職名 > shokumei\ ;
+晩節 > bansetsu\ ;
+二役 > futayaku\ ;
+夕食 > yuushoku\ ;
+二形 > futanari\ ;
+春菊 > shungiku\ ;
+学僕 > gakuboku\ ;
+豆料 > mameryou\ ;
+玉摧 > gyokusai\ ;
+朝敵 > chouteki\ ;
+散髪 > sanpatsu\ ;
+謎謎 > nazonazo\ ;
+山々 > yamayama\ ;
+妄説 > mousetsu\ ;
+頓着 > tonchaku\ ;
+仏噸 > futsuton\ ;
+妖術 > youjutsu\ ;
+雛鳥 > hinadori\ ;
+電飾 > denshoku\ ;
+学修 > gakushuu\ ;
+旧訳 > kyuuyaku\ ;
+月末 > tsukizue\ ;
+独白 > dokuhaku\ ;
+猛烈 > mouretsu\ ;
+爪跡 > tsumeato\ ;
+仮初 > karisome\ ;
+来客 > raikyaku\ ;
+月曜 > getsuyou\ ;
+翌朝 > yokuchou\ ;
+繁雑 > hanzatsu\ ;
+職制 > shokusei\ ;
+新進 > shinshin\ ;
+職分 > shokubun\ ;
+乾式 > kanshiki\ ;
+面識 > menshiki\ ;
+人垣 > hitogaki\ ;
+失錯 > shissaku\ ;
+久方 > hisakata\ ;
+月明 > getsumei\ ;
+声高 > kowadaka\ ;
+論述 > ronjutsu\ ;
+翌春 > yokushun\ ;
+諾諾 > dakudaku\ ;
+識者 > shikisha\ ;
+仕口 > shikuchi\ ;
+中核 > chuukaku\ ;
+象徴 > shouchou\ ;
+珍妙 > chinmyou\ ;
+貝塚 > kaidzuka\ ;
+聖哲 > seitetsu\ ;
+面詰 > menkitsu\ ;
+縞馬 > shimauma\ ;
+食尽 > shokujin\ ;
+賭事 > kakegoto\ ;
+一流 > ichiryuu\ ;
+中柄 > chuugara\ ;
+書札 > shosatsu\ ;
+妙薬 > myouyaku\ ;
+主日 > shujitsu\ ;
+諸諸 > moromoro\ ;
+静謐 > seihitsu\ ;
+諸説 > shosetsu\ ;
+資力 > shiryoku\ ;
+女親 > on''naoya\ ;
+更更 > sarasara\ ;
+杓子 > shakushi\ ;
+曲曲 > kumaguma\ ;
+智略 > chiryaku\ ;
+明色 > meishoku\ ;
+日蝕 > nisshoku\ ;
+他出 > tashutsu\ ;
+雨靴 > amagutsu\ ;
+本式 > honshiki\ ;
+仏前 > butsuzen\ ;
+調進 > choushin\ ;
+雪雲 > yukigumo\ ;
+雨霰 > amearare\ ;
+仏刹 > bussetsu\ ;
+木彫 > mokuchou\ ;
+暑熱 > shonetsu\ ;
+物色 > busshoku\ ;
+職人 > shokunin\ ;
+諧謔 > kaigyaku\ ;
+独特 > dokutoku\ ;
+失速 > shissoku\ ;
+春繭 > harumayu\ ;
+餞別 > senbetsu\ ;
+熱願 > netsugan\ ;
+末年 > matsunen\ ;
+嫡孫 > chakuson\ ;
+物臭 > monogusa\ ;
+聖別 > seibetsu\ ;
+嫡子 > chakushi\ ;
+諤諤 > gakugaku\ ;
+狡猾 > koukatsu\ ;
+考察 > kousatsu\ ;
+雑食 > zasshoku\ ;
+主持 > shumochi\ ;
+嬰児 > midorigo\ ;
+縦長 > tatenaga\ ;
+施設 > shisetsu\ ;
+狂的 > kyouteki\ ;
+争奪 > soudatsu\ ;
+鞏膜 > kyoumaku\ ;
+仏像 > butsuzou\ ;
+老実 > roujitsu\ ;
+大逆 > daigyaku\ ;
+日蓮 > nichiren\ ;
+熱雷 > netsurai\ ;
+試食 > shishoku\ ;
+敷金 > shikikin\ ;
+人力 > jinryoku\ ;
+九州 > kyuushuu\ ;
+新調 > shinchou\ ;
+食堂 > shokudou\ ;
+嫡妻 > chakusai\ ;
+一棟 > hitomune\ ;
+失跡 > shisseki\ ;
+人刺 > jinsashi\ ;
+電鉄 > dentetsu\ ;
+人別 > ninbetsu\ ;
+論説 > ronsetsu\ ;
+本局 > honkyoku\ ;
+中指 > nakayubi\ ;
+貸借 > taishaku\ ;
+獲得 > kakutoku\ ;
+論詰 > ronkitsu\ ;
+一桁 > hitoketa\ ;
+施術 > shijutsu\ ;
+顛末 > tenmatsu\ ;
+貫入 > kan''nyuu\ ;
+財力 > zairyoku\ ;
+語部 > kataribe\ ;
+習得 > shuutoku\ ;
+三曲 > sankyoku\ ;
+景物 > keibutsu\ ;
+方術 > houjutsu\ ;
+特約 > tokuyaku\ ;
+一枚 > hitohira\ ;
+繰言 > kurigoto\ ;
+牛肉 > gyuuniku\ ;
+杉垣 > sugigaki\ ;
+王室 > oushitsu\ ;
+一束 > hitotaba\ ;
+京劇 > kyougeki\ ;
+牡羊 > ohitsuji\ ;
+谷底 > tanizoko\ ;
+一木 > ichiboku\ ;
+人傑 > jinketsu\ ;
+韜略 > touryaku\ ;
+旧臣 > kyuushin\ ;
+昨秋 > sakushuu\ ;
+好色 > koushoku\ ;
+谷川 > tanigawa\ ;
+仄仄 > honobono\ ;
+買主 > kainushi\ ;
+一時 > hitotoki\ ;
+昇給 > shoukyuu\ ;
+片膝 > katahiza\ ;
+乗客 > joukyaku\ ;
+丸形 > marugata\ ;
+飲助 > nomisuke\ ;
+曲悪 > kyokuaku\ ;
+昇級 > shoukyuu\ ;
+一旗 > hitohata\ ;
+一族 > ichizoku\ ;
+食品 > shokuhin\ ;
+物納 > butsunou\ ;
+失調 > shitchou\ ;
+煮魚 > nizakana\ ;
+失語 > shitsugo\ ;
+耳元 > mimimoto\ ;
+早耳 > hayamimi\ ;
+丸底 > maruzoko\ ;
+面色 > menshoku\ ;
+人人 > hitobito\ ;
+散逸 > san''itsu\ ;
+中心 > chuushin\ ;
+片肌 > katahada\ ;
+詳録 > shouroku\ ;
+嫡嗣 > chakushi\ ;
+書式 > shoshiki\ ;
+人事 > hitogoto\ ;
+総髪 > souhatsu\ ;
+服属 > fukuzoku\ ;
+特種 > tokudane\ ;
+中形 > chuugata\ ;
+片耳 > katamimi\ ;
+旧習 > kyuushuu\ ;
+人中 > hitonaka\ ;
+人並 > hitonami\ ;
+特称 > tokushou\ ;
+一撃 > ichigeki\ ;
+中庭 > nakaniwa\ ;
+少々 > shoushou\ ;
+始発 > shihatsu\ ;
+謝絶 > shazetsu\ ;
+乾咳 > karazeki\ ;
+中幕 > nakamaku\ ;
+中幅 > chuuhaba\ ;
+諸膝 > morohiza\ ;
+諸膚 > morohada\ ;
+中席 > nakaseki\ ;
+朝夕 > chouseki\ ;
+牧笛 > bokuteki\ ;
+両得 > ryoutoku\ ;
+縦軸 > tatejiku\ ;
+青色 > seishoku\ ;
+食前 > shokuzen\ ;
+姦物 > kanbutsu\ ;
+食刻 > shokkoku\ ;
+玉垣 > tamagaki\ ;
+集録 > shuuroku\ ;
+雲足 > kumoashi\ ;
+緑風 > ryokufuu\ ;
+物種 > monodane\ ;
+並幅 > namihaba\ ;
+妙策 > myousaku\ ;
+静脈 > joumyaku\ ;
+物税 > butsuzei\ ;
+主客 > shukyaku\ ;
+飼主 > kainushi\ ;
+諸肌 > morohada\ ;
+並巾 > namihaba\ ;
+交交 > komogomo\ ;
+爆薬 > bakuyaku\ ;
+中島 > nakajima\ ;
+故郷 > furusato\ ;
+事共 > kotodomo\ ;
+不悉 > fushitsu\ ;
+旧約 > kyuuyaku\ ;
+牧神 > bokushin\ ;
+緑青 > rokushou\ ;
+方舟 > hakobune\ ;
+飯事 > mamagoto\ ;
+中小 > chuushou\ ;
+曲射 > kyokusha\ ;
+雁金 > karigane\ ;
+日米 > nichibei\ ;
+焼鳥 > yakitori\ ;
+謹直 > kinchoku\ ;
+中学 > chuugaku\ ;
+練鉄 > rentetsu\ ;
+調薬 > chouyaku\ ;
+変説 > hensetsu\ ;
+敵襲 > tekishuu\ ;
+放逐 > houchiku\ ;
+三役 > san''yaku\ ;
+煩雑 > hanzatsu\ ;
+認識 > ninshiki\ ;
+旧章 > kyuushou\ ;
+緑門 > ryokumon\ ;
+村人 > murabito\ ;
+下帯 > shitaobi\ ;
+一役 > hitoyaku\ ;
+豪傑 > gouketsu\ ;
+事事 > kotogoto\ ;
+綿雲 > watagumo\ ;
+乱入 > ran''nyuu\ ;
+綿雪 > watayuki\ ;
+予予 > kanegane\ ;
+旧称 > kyuushou\ ;
+世局 > seikyoku\ ;
+練達 > rentatsu\ ;
+暇暇 > himahima\ ;
+一廉 > hitokado\ ;
+隆隆 > ryuuryuu\ ;
+一度 > hitotabi\ ;
+隅隅 > sumizumi\ ;
+一年 > hitotose\ ;
+静粛 > seishuku\ ;
+塩鮭 > shiozake\ ;
+族籍 > zokuseki\ ;
+大蒜 > nin''niku\ ;
+一幕 > hitomaku\ ;
+丸型 > marugata\ ;
+奉職 > houshoku\ ;
+赫々 > kakukaku\ ;
+一巻 > hitomaki\ ;
+難詰 > nankitsu\ ;
+雀躍 > jakuyaku\ ;
+中塗 > nakanuri\ ;
+陪食 > baishoku\ ;
+頌春 > shoushun\ ;
+万屋 > yorozuya\ ;
+中垣 > nakagaki\ ;
+中型 > chuugata\ ;
+風力 > fuuryoku\ ;
+上客 > joukyaku\ ;
+乱伐 > ranbatsu\ ;
+智日 > chinichi\ ;
+猫属 > nekozoku\ ;
+寒々 > samuzamu\ ;
+一山 > hitoyama\ ;
+中国 > chuugoku\ ;
+天色 > tenshoku\ ;
+頃日 > keijitsu\ ;
+詳註 > shouchuu\ ;
+雑談 > zatsudan\ ;
+族称 > zokushou\ ;
+日直 > nitchoku\ ;
+緑酒 > ryokushu\ ;
+一室 > isshitsu\ ;
+太腿 > futomomo\ ;
+領承 > ryoushou\ ;
+断絶 > danzetsu\ ;
+一子 > hitorigo\ ;
+姫様 > himesama\ ;
+電蓄 > denchiku\ ;
+末代 > matsudai\ ;
+壜詰 > bindzume\ ;
+言霊 > kotodama\ ;
+両国 > ryougoku\ ;
+主取 > shuudori\ ;
+雨蛙 > amagaeru\ ;
+熟読 > jukudoku\ ;
+玉体 > gyokutai\ ;
+牧牛 > bokugyuu\ ;
+塾長 > jukuchou\ ;
+太股 > futomomo\ ;
+有力 > yuuryoku\ ;
+熱血 > nekketsu\ ;
+散薬 > san''yaku\ ;
+玉代 > gyokudai\ ;
+天職 > tenshoku\ ;
+文脈 > bunmyaku\ ;
+集註 > shuuchuu\ ;
+隔週 > kakushuu\ ;
+日用 > nichiyou\ ;
+書取 > kakitori\ ;
+主力 > shuryoku\ ;
+月内 > getsunai\ ;
+七夜 > shichiya\ ;
+乞丐 > kotsugai\ ;
+七夕 > tanabata\ ;
+謡物 > utaimono\ ;
+頻尿 > hin''nyou\ ;
+天罰 > tenbatsu\ ;
+面白 > omoshiro\ ;
+曲名 > kyokumei\ ;
+総轄 > soukatsu\ ;
+中古 > chuuburu\ ;
+何々 > naninani\ ;
+一失 > isshitsu\ ;
+狼座 > ookamiza\ ;
+証跡 > shouseki\ ;
+奮発 > funpatsu\ ;
+新穀 > shinkoku\ ;
+評註 > hyouchuu\ ;
+変色 > henshoku\ ;
+明滅 > meimetsu\ ;
+陸釣 > okadzuri\ ;
+謀略 > bouryaku\ ;
+一塩 > hitoshio\ ;
+風上 > kazakami\ ;
+外股 > sotomata\ ;
+習俗 > shuuzoku\ ;
+降雪 > kousetsu\ ;
+独得 > dokutoku\ ;
+絶食 > zesshoku\ ;
+書初 > kakizome\ ;
+訓釈 > kunshaku\ ;
+誦習 > shoushuu\ ;
+爆笑 > bakushou\ ;
+習作 > shuusaku\ ;
+書冊 > shosatsu\ ;
+特注 > tokuchuu\ ;
+月例 > getsurei\ ;
+暦学 > rekigaku\ ;
+丸傷 > tamakizu\ ;
+奉祝 > houshuku\ ;
+頌徳 > shoutoku\ ;
+防食 > boushoku\ ;
+爪痕 > tsumeato\ ;
+中共 > chuukyou\ ;
+並列 > heiretsu\ ;
+久久 > hisabisa\ ;
+緑豆 > ryokutou\ ;
+好物 > koubutsu\ ;
+雲脚 > kumoashi\ ;
+青畳 > aodatami\ ;
+雛菊 > hinagiku\ ;
+失策 > shissaku\ ;
+時時 > tokidoki\ ;
+中傷 > chuushou\ ;
+失笑 > shisshou\ ;
+敗色 > haishoku\ ;
+雪膚 > yukihada\ ;
+難色 > nanshoku\ ;
+暗室 > anshitsu\ ;
+陵辱 > ryoujoku\ ;
+下味 > shitaaji\ ;
+結髪 > keppatsu\ ;
+焼酎 > shouchuu\ ;
+昼時 > hirudoki\ ;
+声色 > seishoku\ ;
+丸事 > marugoto\ ;
+文節 > bunsetsu\ ;
+文箱 > fumibako\ ;
+大筒 > oodzutsu\ ;
+丸丸 > marumaru\ ;
+防雪 > bousetsu\ ;
+雪肌 > yukihada\ ;
+訳読 > yakudoku\ ;
+七味 > shichimi\ ;
+方略 > houryaku\ ;
+丸一 > maruichi\ ;
+狭小 > kyoushou\ ;
+中低 > nakabiku\ ;
+総説 > sousetsu\ ;
+始末 > shimatsu\ ;
+文筆 > bunpitsu\ ;
+大童 > oowarawa\ ;
+青玉 > seigyoku\ ;
+両側 > ryousoku\ ;
+失神 > shisshin\ ;
+集落 > shuuraku\ ;
+静物 > seibutsu\ ;
+万卒 > bansotsu\ ;
+中京 > chuukyou\ ;
+一向 > hitasura\ ;
+独学 > dokugaku\ ;
+昨朝 > sakuchou\ ;
+一叢 > hitomura\ ;
+曲事 > kusegoto\ ;
+雑色 > zasshoku\ ;
+中中 > nakanaka\ ;
+安々 > yasuyasu\ ;
+教習 > kyoushuu\ ;
+陞進 > shoushin\ ;
+類別 > ruibetsu\ ;
+縮緬 > chirimen\ ;
+昨暁 > sakugyou\ ;
+結願 > kechigan\ ;
+昨春 > sakushun\ ;
+万別 > banbetsu\ ;
+焼身 > shoushin\ ;
+頁岩 > ketsugan\ ;
+並並 > naminami\ ;
+縦縞 > tatejima\ ;
+覗魔 > nozokima\ ;
+増設 > zousetsu\ ;
+一割 > ichiwari\ ;
+夕立 > yuudachi\ ;
+塩辛 > shiokara\ ;
+解釈 > kaishaku\ ;
+旧流 > kyuuryuu\ ;
+両両 > ryouryou\ ;
+警抜 > keibatsu\ ;
+変節 > hensetsu\ ;
+絹針 > kinubari\ ;
+獄中 > gokuchuu\ ;
+一入 > hitoshio\ ;
+一先 > hitomazu\ ;
+昇格 > shoukaku\ ;
+繭玉 > mayudama\ ;
+明月 > meigetsu\ ;
+鞭撻 > bentatsu\ ;
+雨粒 > ametsubu\ ;
+増血 > zouketsu\ ;
+暴力 > bouryoku\ ;
+観閲 > kan''etsu\ ;
+易易 > yasuyasu\ ;
+緑藻 > ryokusou\ ;
+壮絶 > souzetsu\ ;
+教籍 > kyouseki\ ;
+領国 > ryougoku\ ;
+明春 > myoushun\ ;
+万代 > yorozuyo\ ;
+支脈 > shimyaku\ ;
+独国 > dokukoku\ ;
+撰述 > senjutsu\ ;
+三下 > sanshita\ ;
+大略 > tairyaku\ ;
+女気 > on''nakke\ ;
+塩豆 > shiomame\ ;
+万世 > yorozuyo\ ;
+万一 > man''ichi\ ;
+雪空 > yukizora\ ;
+謀殺 > bousatsu\ ;
+組長 > kumichou\ ;
+言説 > gensetsu\ ;
+早業 > hayawaza\ ;
+角通 > kakutsuu\ ;
+一両 > ichiryou\ ;
+一一 > itsuitsu\ ;
+統轄 > toukatsu\ ;
+謡曲 > youkyoku\ ;
+紅鱒 > benimasu\ ;
+独唱 > dokushou\ ;
+新潮 > shinchou\ ;
+緑茶 > ryokucha\ ;
+昼席 > hiruseki\ ;
+紅鮭 > benizake\ ;
+納骨 > noukotsu\ ;
+旧株 > kyuukabu\ ;
+姫宮 > himemiya\ ;
+墜落 > tsuiraku\ ;
+数百 > suuhyaku\ ;
+集約 > shuuyaku\ ;
+誘発 > yuuhatsu\ ;
+領収 > ryoushuu\ ;
+片栗 > katakuri\ ;
+旬月 > jungetsu\ ;
+天爵 > tenshaku\ ;
+煎薬 > sen''yaku\ ;
+電略 > denryaku\ ;
+文物 > bunbutsu\ ;
+改築 > kaichiku\ ;
+試筋 > tamesuji\ ;
+試筆 > shihitsu\ ;
+旧暦 > kyuureki\ ;
+日曜 > nichiyou\ ;
+隔膜 > kakumaku\ ;
+旬日 > junjitsu\ ;
+散発 > sanpatsu\ ;
+雑税 > zatsuzei\ ;
+読物 > yomimono\ ;
+雪盲 > setsumou\ ;
+警察 > keisatsu\ ;
+解説 > kaisetsu\ ;
+緩緩 > yuruyuru\ ;
+早早 > hayabaya\ ;
+角貝 > tsunogai\ ;
+摂食 > sesshoku\ ;
+西陣 > nishijin\ ;
+触角 > shokkaku\ ;
+壁紙 > kabegami\ ;
+触覚 > shokkaku\ ;
+旧敵 > kyuuteki\ ;
+特徴 > tokuchou\ ;
+紐革 > himokawa\ ;
+旧教 > kyuukyou\ ;
+集積 > shuuseki\ ;
+埋骨 > maikotsu\ ;
+旗本 > hatamoto\ ;
+外物 > gaibutsu\ ;
+觝触 > teishoku\ ;
+級長 > kyuuchou\ ;
+斬殺 > zansatsu\ ;
+物情 > butsujou\ ;
+締結 > teiketsu\ ;
+革新 > kakushin\ ;
+集票 > shuuhyou\ ;
+智力 > chiryoku\ ;
+雨男 > ameotoko\ ;
+爆沈 > bakuchin\ ;
+夜烏 > yogarasu\ ;
+姫垣 > himegaki\ ;
+熊笹 > kumazasa\ ;
+熱発 > neppatsu\ ;
+順列 > junretsu\ ;
+墨繩 > suminawa\ ;
+謙抑 > ken''yoku\ ;
+撮要 > satsuyou\ ;
+独修 > dokushuu\ ;
+変物 > henbutsu\ ;
+墨縄 > suminawa\ ;
+春宵 > shunshou\ ;
+物影 > monokage\ ;
+闇雲 > yamikumo\ ;
+続落 > zokuraku\ ;
+雪玉 > yukidama\ ;
+摘録 > tekiroku\ ;
+仄々 > honobono\ ;
+早技 > hayawaza\ ;
+終身 > shuushin\ ;
+緊縮 > kinshuku\ ;
+試着 > shichaku\ ;
+外濠 > sotobori\ ;
+妾宅 > shoutaku\ ;
+星宿 > seishuku\ ;
+角袖 > kakusode\ ;
+闇闇 > yamiyami\ ;
+多湿 > tashitsu\ ;
+人々 > hitobito\ ;
+面接 > mensetsu\ ;
+雑用 > zatsuyou\ ;
+新株 > shinkabu\ ;
+摺足 > suriashi\ ;
+旁旁 > katagata\ ;
+新柄 > shingara\ ;
+政略 > seiryaku\ ;
+見通 > mitooshi\ ;
+難物 > nanbutsu\ ;
+見返 > mikaeshi\ ;
+増結 > zouketsu\ ;
+明察 > meisatsu\ ;
+姫君 > himegimi\ ;
+攻略 > kouryaku\ ;
+結論 > ketsuron\ ;
+奏曲 > soukyoku\ ;
+霽月 > seigetsu\ ;
+防蝕 > boushoku\ ;
+新暦 > shinreki\ ;
+焼肉 > yakiniku\ ;
+熾烈 > shiretsu\ ;
+結言 > ketsugen\ ;
+証票 > shouhyou\ ;
+随筆 > zuihitsu\ ;
+外法 > sotonori\ ;
+新春 > shinshun\ ;
+新旧 > shinkyuu\ ;
+陸続 > rikuzoku\ ;
+熱熱 > atsuatsu\ ;
+増築 > zouchiku\ ;
+交々 > komogomo\ ;
+間食 > kanshoku\ ;
+縮減 > shukugen\ ;
+新教 > shinkyou\ ;
+壮烈 > souretsu\ ;
+繁殖 > hanshoku\ ;
+天極 > tenkyoku\ ;
+狂信 > kyoushin\ ;
+旧幕 > kyuubaku\ ;
+絹莢 > kinusaya\ ;
+失格 > shikkaku\ ;
+閨閥 > keibatsu\ ;
+日常 > nichijou\ ;
+雑然 > zatsuzen\ ;
+敗滅 > haimetsu\ ;
+放熱 > hounetsu\ ;
+誘殺 > yuusatsu\ ;
+闊達 > kattatsu\ ;
+降職 > koushoku\ ;
+素質 > soshitsu\ ;
+垂髪 > taregami\ ;
+雁爪 > gandzume\ ;
+縦波 > tatenami\ ;
+細説 > saisetsu\ ;
+診療 > shinryou\ ;
+続続 > zokuzoku\ ;
+爆撃 > bakugeki\ ;
+見識 > kenshiki\ ;
+誰某 > daresore\ ;
+焼糞 > yakekuso\ ;
+旋律 > senritsu\ ;
+諸式 > shoshiki\ ;
+熱源 > netsugen\ ;
+解職 > kaishoku\ ;
+事々 > kotogoto\ ;
+夜桜 > yozakura\ ;
+文末 > bunmatsu\ ;
+旧宅 > kyuutaku\ ;
+調教 > choukyou\ ;
+予々 > kanegane\ ;
+時偶 > tokitama\ ;
+如実 > nyojitsu\ ;
+斎日 > saijitsu\ ;
+角膜 > kakumaku\ ;
+熱涙 > netsurui\ ;
+諒承 > ryoushou\ ;
+電極 > denkyoku\ ;
+塵箱 > gomibako\ ;
+敏活 > binkatsu\ ;
+開闢 > kaibyaku\ ;
+煥発 > kanpatsu\ ;
+大日 > dainichi\ ;
+韓人 > karabito\ ;
+外枠 > sotowaku\ ;
+敷板 > shikiita\ ;
+説明 > setsumei\ ;
+縦横 > tateyoko\ ;
+要訣 > youketsu\ ;
+増発 > zouhatsu\ ;
+明哲 > meitetsu\ ;
+夜昼 > yoruhiru\ ;
+点訳 > ten''yaku\ ;
+夕月 > yuudzuki\ ;
+方式 > houshiki\ ;
+門閥 > monbatsu\ ;
+飄々 > hyouhyou\ ;
+春先 > harusaki\ ;
+始値 > hajimene\ ;
+新形 > shingata\ ;
+翼々 > yokuyoku\ ;
+陸相 > rikushou\ ;
+絹綿 > kinuwata\ ;
+牆壁 > shouheki\ ;
+壊滅 > kaimetsu\ ;
+際物 > kiwamono\ ;
+夭折 > yousetsu\ ;
+奨学 > shougaku\ ;
+集注 > shuuchuu\ ;
+敵方 > tekigata\ ;
+長長 > naganaga\ ;
+新年 > shin''nen\ ;
+爆心 > bakushin\ ;
+約諾 > yakudaku\ ;
+数日 > suujitsu\ ;
+本々 > motomoto\ ;
+防縮 > boushuku\ ;
+擁立 > youritsu\ ;
+数数 > kazukazu\ ;
+大所 > oodokoro\ ;
+旧国 > kyuukoku\ ;
+地鼠 > jinezumi\ ;
+純血 > junketsu\ ;
+粉飾 > funshoku\ ;
+縦書 > tategaki\ ;
+擦疵 > surikizu\ ;
+粉食 > funshoku\ ;
+塚穴 > tsukaana\ ;
+外接 > gaisetsu\ ;
+評注 > hyouchuu\ ;
+照焼 > teriyaki\ ;
+失心 > shisshin\ ;
+絶筆 > zeppitsu\ ;
+難曲 > nankyoku\ ;
+計略 > keiryaku\ ;
+夙成 > shukusei\ ;
+見落 > miotoshi\ ;
+点薬 > ten''yaku\ ;
+炸薬 > sakuyaku\ ;
+新宅 > shintaku\ ;
+埋設 > maisetsu\ ;
+接骨 > sekkotsu\ ;
+陽物 > youbutsu\ ;
+論客 > ronkyaku\ ;
+角笛 > tsunobue\ ;
+熱望 > netsubou\ ;
+長針 > choushin\ ;
+閲読 > etsudoku\ ;
+誰彼 > tarekare\ ;
+米食 > beishoku\ ;
+索莫 > sakubaku\ ;
+結縄 > ketsujou\ ;
+久々 > hisabisa\ ;
+雑曲 > zakkyoku\ ;
+太巻 > futomaki\ ;
+新妻 > niidzuma\ ;
+結紮 > kessatsu\ ;
+夙志 > shukushi\ ;
+翌々 > yokuyoku\ ;
+旧劇 > kyuugeki\ ;
+摘芯 > tekishin\ ;
+関説 > kansetsu\ ;
+物事 > monogoto\ ;
+訳注 > yakuchuu\ ;
+改札 > kaisatsu\ ;
+煮沸 > shafutsu\ ;
+大嵐 > ooarashi\ ;
+製鉄 > seitetsu\ ;
+装飾 > soushoku\ ;
+雑文 > zatsubun\ ;
+丸々 > marumaru\ ;
+紙花 > kamibana\ ;
+焼物 > yakimono\ ;
+敵役 > tekiyaku\ ;
+結節 > kessetsu\ ;
+長軸 > choujiku\ ;
+外庭 > sotoniwa\ ;
+組紐 > kumihimo\ ;
+粒銀 > tsubugin\ ;
+震幅 > shinpuku\ ;
+整式 > seishiki\ ;
+開豁 > kaikatsu\ ;
+長身 > choushin\ ;
+縁日 > en''nichi\ ;
+大局 > taikyoku\ ;
+新型 > shingata\ ;
+夜嵐 > yoarashi\ ;
+数式 > suushiki\ ;
+更々 > sarasara\ ;
+牛乳 > gyuunyuu\ ;
+中々 > nakanaka\ ;
+曲々 > kumaguma\ ;
+長足 > chousoku\ ;
+塩物 > shiomono\ ;
+要職 > youshoku\ ;
+片側 > katagawa\ ;
+褶襞 > shuuheki\ ;
+雀斑 > sobakasu\ ;
+旧俗 > kyuuzoku\ ;
+雲形 > kumogata\ ;
+経穴 > keiketsu\ ;
+並々 > naminami\ ;
+撞着 > douchaku\ ;
+旧作 > kyuusaku\ ;
+紅花 > benibana\ ;
+陰湿 > inshitsu\ ;
+編曲 > henkyoku\ ;
+組立 > kumitate\ ;
+開設 > kaisetsu\ ;
+両々 > ryouryou\ ;
+細細 > hosoboso\ ;
+試掘 > shikutsu\ ;
+塩焼 > shioyaki\ ;
+外局 > gaikyoku\ ;
+増殖 > zoushoku\ ;
+旧人 > furubito\ ;
+訳業 > yakugyou\ ;
+排雪 > haisetsu\ ;
+粛軍 > shukugun\ ;
+熱感 > netsukan\ ;
+失墜 > shittsui\ ;
+国鳥 > kokuchou\ ;
+諸共 > morotomo\ ;
+夫夫 > sorezore\ ;
+紡織 > boushoku\ ;
+外客 > gaikyaku\ ;
+熱情 > netsujou\ ;
+外孫 > sotomago\ ;
+糖蜜 > toumitsu\ ;
+誠実 > seijitsu\ ;
+難役 > nan''yaku\ ;
+救急 > kyuukyuu\ ;
+塗物 > nurimono\ ;
+版下 > hanshita\ ;
+除湿 > joshitsu\ ;
+熔接 > yousetsu\ ;
+統率 > tousotsu\ ;
+長調 > chouchou\ ;
+旅先 > tabisaki\ ;
+点綴 > tentetsu\ ;
+細筆 > saihitsu\ ;
+雪嶺 > setsurei\ ;
+絹物 > kinumono\ ;
+訳柄 > wakegara\ ;
+襟腰 > erikoshi\ ;
+結着 > ketchaku\ ;
+緑林 > ryokurin\ ;
+結盟 > ketsumei\ ;
+熱弁 > netsuben\ ;
+雑念 > zatsunen\ ;
+討死 > uchijini\ ;
+支払 > shiharai\ ;
+親睦 > shinboku\ ;
+堀端 > horibata\ ;
+陥没 > kanbotsu\ ;
+新劇 > shingeki\ ;
+角牛 > kakugyuu\ ;
+雑役 > zatsueki\ ;
+雪山 > yukiyama\ ;
+諸人 > morobito\ ;
+陣没 > jinbotsu\ ;
+陽極 > youkyoku\ ;
+父上 > chichiue\ ;
+雪害 > setsugai\ ;
+長袖 > nagasode\ ;
+一々 > itsuitsu\ ;
+防熱 > bounetsu\ ;
+難局 > nankyoku\ ;
+縄張 > nawabari\ ;
+外堀 > sotobori\ ;
+経略 > keiryaku\ ;
+裏道 > uramichi\ ;
+隣接 > rinsetsu\ ;
+継母 > mamahaha\ ;
+大喝 > daikatsu\ ;
+紙筆 > shihitsu\ ;
+教学 > kyougaku\ ;
+露出 > roshutsu\ ;
+訪日 > hounichi\ ;
+塩水 > shiomizu\ ;
+敷地 > shikichi\ ;
+隆昌 > ryuushou\ ;
+新修 > shinshuu\ ;
+大吉 > daikichi\ ;
+新作 > shinsaku\ ;
+関脇 > sekiwake\ ;
+燭台 > shokudai\ ;
+炭窯 > sumigama\ ;
+電圧 > den''atsu\ ;
+雨女 > ameon''na\ ;
+爆傷 > bakushou\ ;
+新任 > shin''nin\ ;
+激震 > gekishin\ ;
+間色 > kanshoku\ ;
+変圧 > hen''atsu\ ;
+親王 > shin''nou\ ;
+大卒 > daisotsu\ ;
+総括 > soukatsu\ ;
+解決 > kaiketsu\ ;
+政局 > seikyoku\ ;
+壁役 > kabeyaku\ ;
+掛軸 > kakejiku\ ;
+縄尻 > nawajiri\ ;
+裲襠 > uchikake\ ;
+基督 > kirisuto\ ;
+褪色 > taishoku\ ;
+大別 > taibetsu\ ;
+大切 > taisetsu\ ;
+斉列 > seiretsu\ ;
+雪国 > yukiguni\ ;
+大冊 > taisatsu\ ;
+緻密 > chimitsu\ ;
+閑職 > kanshoku\ ;
+変哲 > hentetsu\ ;
+糸竹 > shichiku\ ;
+開脚 > kaikyaku\ ;
+支局 > shikyoku\ ;
+失保 > shitsuho\ ;
+終熄 > shuusoku\ ;
+外力 > gairyoku\ ;
+調伏 > choubuku\ ;
+雛型 > hinagata\ ;
+要略 > youryaku\ ;
+救国 > kyuukoku\ ;
+門脈 > monmyaku\ ;
+褐色 > kasshoku\ ;
+整列 > seiretsu\ ;
+電力 > denryoku\ ;
+接触 > sesshoku\ ;
+数列 > suuretsu\ ;
+大仏 > daibutsu\ ;
+関節 > kansetsu\ ;
+放埒 > houratsu\ ;
+絞殺 > kousatsu\ ;
+外側 > sotogawa\ ;
+表門 > omotemon\ ;
+数冊 > suusatsu\ ;
+雲助 > kumosuke\ ;
+雪原 > setsugen\ ;
+雑嚢 > zatsunou\ ;
+濁酒 > doburoku\ ;
+土質 > doshitsu\ ;
+敵側 > tekigawa\ ;
+訥弁 > totsuben\ ;
+裏表 > uraomote\ ;
+読了 > dokuryou\ ;
+灰篩 > haifurui\ ;
+粥腹 > kayubara\ ;
+瀉血 > shaketsu\ ;
+堅炭 > katazumi\ ;
+綿弓 > watayumi\ ;
+縮写 > shukusha\ ;
+教卓 > kyoutaku\ ;
+垂耳 > taremimi\ ;
+詰問 > kitsumon\ ;
+売却 > baikyaku\ ;
+採血 > saiketsu\ ;
+縦列 > juuretsu\ ;
+行革 > gyoukaku\ ;
+絶望 > zetsubou\ ;
+撃沈 > gekichin\ ;
+角柱 > kakuchuu\ ;
+国辱 > kokujoku\ ;
+教則 > kyousoku\ ;
+墨客 > bokkyaku\ ;
+士卒 > shisotsu\ ;
+地袋 > jibukuro\ ;
+敵中 > tekichuu\ ;
+売出 > uridashi\ ;
+緊密 > kinmitsu\ ;
+揺篭 > yurikago\ ;
+雪像 > setsuzou\ ;
+紅玉 > kougyoku\ ;
+米蔵 > komegura\ ;
+潮風 > shiokaze\ ;
+型紙 > katagami\ ;
+訪客 > houkyaku\ ;
+許嫁 > iinazuke\ ;
+捏造 > netsuzou\ ;
+散佚 > san''itsu\ ;
+許婚 > iinazuke\ ;
+索漠 > sakubaku\ ;
+閏秒 > uruubyou\ ;
+潤飾 > junshoku\ ;
+拳骨 > genkotsu\ ;
+綿密 > menmitsu\ ;
+激越 > gekietsu\ ;
+綿実 > menjitsu\ ;
+細波 > sazanami\ ;
+障壁 > shouheki\ ;
+国賊 > kokuzoku\ ;
+点滅 > tenmetsu\ ;
+触手 > shokushu\ ;
+節食 > sesshoku\ ;
+激賞 > gekishou\ ;
+製織 > seishoku\ ;
+給料 > kyuuryou\ ;
+純潔 > junketsu\ ;
+隔壁 > kakuheki\ ;
+放列 > houretsu\ ;
+陸将 > rikushou\ ;
+終業 > shuugyou\ ;
+雪上 > setsujou\ ;
+粟粒 > zokuryuu\ ;
+観月 > kangetsu\ ;
+統括 > toukatsu\ ;
+拾集 > shuushuu\ ;
+緑地 > ryokuchi\ ;
+焦心 > shoushin\ ;
+節電 > setsuden\ ;
+粘粘 > nebaneba\ ;
+炎熱 > en''netsu\ ;
+国許 > kunimoto\ ;
+開発 > kaihatsu\ ;
+粒粒 > ryuuryuu\ ;
+時々 > tokidoki\ ;
+解式 > kaishiki\ ;
+親族 > shinzoku\ ;
+長石 > chouseki\ ;
+粉粉 > konagona\ ;
+損率 > sonritsu\ ;
+表象 > hyoushou\ ;
+雇人 > yatoinin\ ;
+設問 > setsumon\ ;
+覚書 > oboegaki\ ;
+漆黒 > shikkoku\ ;
+編入 > hen''nyuu\ ;
+拒食 > kyoshoku\ ;
+集中 > shuuchuu\ ;
+累月 > ruigetsu\ ;
+垂直 > suichoku\ ;
+紅殻 > benigara\ ;
+招集 > shoushuu\ ;
+撥弦 > hatsugen\ ;
+行跡 > gyouseki\ ;
+角店 > kadomise\ ;
+練乳 > ren''nyuu\ ;
+米糠 > komenuka\ ;
+総力 > souryoku\ ;
+累日 > ruijitsu\ ;
+在職 > zaishoku\ ;
+総別 > soubetsu\ ;
+埋没 > maibotsu\ ;
+親戚 > shinseki\ ;
+粘着 > nenchaku\ ;
+糞溜 > kusodame\ ;
+緊切 > kinsetsu\ ;
+築造 > chikuzou\ ;
+触媒 > shokubai\ ;
+隊列 > tairetsu\ ;
+索敵 > sakuteki\ ;
+増刷 > zousatsu\ ;
+易々 > yasuyasu\ ;
+緑便 > ryokuben\ ;
+潮足 > shioashi\ ;
+閲歴 > etsureki\ ;
+納札 > nousatsu\ ;
+終息 > shuusoku\ ;
+振袖 > furisode\ ;
+糟汁 > kasujiru\ ;
+約束 > yakusoku\ ;
+衆評 > shuuhyou\ ;
+抑鬱 > yokuutsu\ ;
+指貫 > yubinuki\ ;
+絶大 > zetsudai\ ;
+激臭 > gekishuu\ ;
+見所 > midokoro\ ;
+換物 > kanbutsu\ ;
+粗率 > araritsu\ ;
+終幕 > shuumaku\ ;
+襲撃 > shuugeki\ ;
+結局 > kekkyoku\ ;
+筋骨 > sujibone\ ;
+擦傷 > surikizu\ ;
+観察 > kansatsu\ ;
+観客 > kankyaku\ ;
+濫立 > ranritsu\ ;
+接着 > setchaku\ ;
+陣列 > jinretsu\ ;
+間歇 > kanketsu\ ;
+土筆 > tsukushi\ ;
+衰色 > suishoku\ ;
+粛然 > shukuzen\ ;
+間欠 > kanketsu\ ;
+細引 > hosobiki\ ;
+親局 > oyakyoku\ ;
+管轄 > kankatsu\ ;
+陥入 > kan''nyuu\ ;
+表芸 > omotegei\ ;
+早々 > hayabaya\ ;
+装着 > souchaku\ ;
+終審 > shuushin\ ;
+濃縮 > noushuku\ ;
+討伐 > toubatsu\ ;
+謎々 > nazonazo\ ;
+終宵 > shuushou\ ;
+執心 > shuushin\ ;
+提灯 > chouchin\ ;
+摘心 > tekishin\ ;
+裏町 > uramachi\ ;
+煉乳 > ren''nyuu\ ;
+土神 > uchigami\ ;
+堀川 > horikawa\ ;
+絶命 > zetsumei\ ;
+陋劣 > rouretsu\ ;
+要式 > youshiki\ ;
+筆順 > hitsujun\ ;
+袴着 > hakamagi\ ;
+視察 > shisatsu\ ;
+簡約 > kan''yaku\ ;
+国籍 > kokuseki\ ;
+挽肉 > hikiniku\ ;
+続伸 > zokushin\ ;
+粛清 > shukusei\ ;
+細密 > saimitsu\ ;
+間柄 > aidagara\ ;
+撃墜 > gekitsui\ ;
+堅実 > kenjitsu\ ;
+諸々 > moromoro\ ;
+国策 > kokusaku\ ;
+濫発 > ranpatsu\ ;
+筆陣 > hitsujin\ ;
+結団 > ketsudan\ ;
+螢雪 > keisetsu\ ;
+閏月 > jungetsu\ ;
+覆審 > fukushin\ ;
+開札 > kaisatsu\ ;
+索寞 > sakubaku\ ;
+蝶鮫 > chouzame\ ;
+搦手 > karamete\ ;
+団結 > danketsu\ ;
+旁々 > katagata\ ;
+紙屑 > kamikuzu\ ;
+粕汁 > kasujiru\ ;
+血色 > kesshoku\ ;
+粛正 > shukusei\ ;
+門札 > monsatsu\ ;
+諤々 > gakugaku\ ;
+絶倫 > zetsurin\ ;
+型枠 > katawaku\ ;
+抽象 > chuushou\ ;
+抄録 > shouroku\ ;
+鑑識 > kanshiki\ ;
+闇市 > yamiichi\ ;
+融雪 > yuusetsu\ ;
+簒立 > sanritsu\ ;
+結合 > ketsugou\ ;
+地熱 > chinetsu\ ;
+間接 > kansetsu\ ;
+筋金 > sujigane\ ;
+親告 > shinkoku\ ;
+算術 > sanjutsu\ ;
+潤色 > junshoku\ ;
+表章 > hyoushou\ ;
+親友 > shin''yuu\ ;
+漢訳 > kan''yaku\ ;
+長旅 > nagatabi\ ;
+防人 > sakimori\ ;
+紳商 > shinshou\ ;
+蟻蜂 > aribachi\ ;
+激痛 > gekitsuu\ ;
+観入 > kan''nyuu\ ;
+衝立 > tsuitate\ ;
+抵触 > teishoku\ ;
+簡略 > kanryaku\ ;
+採決 > saiketsu\ ;
+捨猫 > suteneko\ ;
+箱船 > hakobune\ ;
+箱舟 > hakobune\ ;
+蟀谷 > komekami\ ;
+蟯虫 > gyouchuu\ ;
+夫々 > sorezore\ ;
+裁決 > saiketsu\ ;
+視力 > shiryoku\ ;
+粉末 > funmatsu\ ;
+掃滅 > soumetsu\ ;
+埒外 > rachigai\ ;
+排泄 > haisetsu\ ;
+西哲 > seitetsu\ ;
+坪数 > tsubosuu\ ;
+糞尿 > fun''nyou\ ;
+表白 > hyouhaku\ ;
+四百 > yonhyaku\ ;
+細別 > saibetsu\ ;
+手鏡 > tekagami\ ;
+親任 > shin''nin\ ;
+蠏股 > ganimata\ ;
+堀割 > horiwari\ ;
+関守 > sekimori\ ;
+血税 > ketsuzei\ ;
+執務 > shitsumu\ ;
+捕物 > torimono\ ;
+成香 > narikyou\ ;
+終了 > shuuryou\ ;
+米松 > beimatsu\ ;
+節糸 > fushiito\ ;
+型式 > keishiki\ ;
+節米 > setsumai\ ;
+数々 > kazukazu\ ;
+承諾 > shoudaku\ ;
+筆談 > hitsudan\ ;
+抄訳 > shouyaku\ ;
+開局 > kaikyoku\ ;
+窮鳥 > kyuuchou\ ;
+蟹股 > ganimata\ ;
+鎌首 > kamakubi\ ;
+立食 > risshoku\ ;
+衆目 > shuumoku\ ;
+筆触 > hisshoku\ ;
+簡潔 > kanketsu\ ;
+垂幕 > taremaku\ ;
+立願 > ritsugan\ ;
+摂動 > setsudou\ ;
+精密 > seimitsu\ ;
+節穴 > fushiana\ ;
+接断 > setsudan\ ;
+血盟 > ketsumei\ ;
+節税 > setsuzei\ ;
+糸口 > itoguchi\ ;
+手車 > teguruma\ ;
+長尻 > nagajiri\ ;
+濁流 > dakuryuu\ ;
+素人 > shirouto\ ;
+激流 > gekiryuu\ ;
+執事 > shitsuji\ ;
+所轄 > shokatsu\ ;
+拒絶 > kyozetsu\ ;
+排日 > hainichi\ ;
+系列 > keiretsu\ ;
+熱々 > atsuatsu\ ;
+衰滅 > suimetsu\ ;
+採掘 > saikutsu\ ;
+埒内 > rachinai\ ;
+在日 > zainichi\ ;
+漁色 > gyoshoku\ ;
+拙筆 > seppitsu\ ;
+純一 > jun''itsu\ ;
+搬入 > han''nyuu\ ;
+関取 > sekitori\ ;
+搾乳 > sakunyuu\ ;
+蛮骨 > bankotsu\ ;
+漫筆 > manpitsu\ ;
+節用 > setsuyou\ ;
+抜群 > batsugun\ ;
+所説 > shosetsu\ ;
+国柄 > kunigara\ ;
+溶血 > youketsu\ ;
+閑却 > kankyaku\ ;
+手袋 > tebukuro\ ;
+閣僚 > kakuryou\ ;
+手術 > shujutsu\ ;
+緩々 > yuruyuru\ ;
+籤引 > kujibiki\ ;
+簡札 > kansatsu\ ;
+蝶蝶 > chouchou\ ;
+筋肉 > kin''niku\ ;
+窓際 > madogiwa\ ;
+間八 > kanpachi\ ;
+減食 > genshoku\ ;
+笹舟 > sasabune\ ;
+接岸 > setsugan\ ;
+戯言 > tawagoto\ ;
+精力 > seiryoku\ ;
+血液 > ketsueki\ ;
+空風 > karakaze\ ;
+蠏玉 > kanitama\ ;
+血涙 > ketsurui\ ;
+潰滅 > kaimetsu\ ;
+戸袋 > tobukuro\ ;
+推察 > suisatsu\ ;
+接客 > sekkyaku\ ;
+嗅覚 > kyuukaku\ ;
+折節 > orifushi\ ;
+潤滑 > junkatsu\ ;
+間伐 > kanbatsu\ ;
+鎌足 > kamaashi\ ;
+潮流 > chouryuu\ ;
+四月 > shigatsu\ ;
+長刀 > naginata\ ;
+嘲笑 > choushou\ ;
+窮追 > kyuutsui\ ;
+窮迫 > kyuuhaku\ ;
+戦術 > senjutsu\ ;
+握力 > akuryoku\ ;
+複勝 > fukushou\ ;
+蟹玉 > kanitama\ ;
+潮汐 > chouseki\ ;
+簡抜 > kanbatsu\ ;
+潮水 > shiomizu\ ;
+節減 > setsugen\ ;
+鍛鉄 > tantetsu\ ;
+隆々 > ryuuryuu\ ;
+隅々 > sumizumi\ ;
+揚力 > youryoku\ ;
+竹薮 > takeyabu\ ;
+才色 > saishoku\ ;
+蛍雪 > keisetsu\ ;
+立論 > ritsuron\ ;
+米坪 > beitsubo\ ;
+筆箱 > fudebako\ ;
+測量 > sokuryou\ ;
+等等 > nadonado\ ;
+立言 > ritsugen\ ;
+粛党 > shukutou\ ;
+裸出 > rashutsu\ ;
+鍋釜 > nabekama\ ;
+衝撃 > shougeki\ ;
+漂白 > hyouhaku\ ;
+混雑 > konzatsu\ ;
+長久 > choukyuu\ ;
+回折 > kaisetsu\ ;
+地境 > djizakai\ ;
+挿抜 > soubatsu\ ;
+蝦腰 > ebigoshi\ ;
+衣手 > koromode\ ;
+衷心 > chuushin\ ;
+蛸足 > takoashi\ ;
+続々 > zokuzoku\ ;
+深長 > shinchou\ ;
+商量 > shouryou\ ;
+挟撃 > kyougeki\ ;
+接合 > setsugou\ ;
+裏口 > uraguchi\ ;
+蚕食 > sanshoku\ ;
+抑留 > yokuryuu\ ;
+錬鉄 > rentetsu\ ;
+潮時 > shiodoki\ ;
+濃密 > noumitsu\ ;
+表徴 > hyouchou\ ;
+表彰 > hyoushou\ ;
+国学 > kokugaku\ ;
+漠漠 > bakubaku\ ;
+推力 > suiryoku\ ;
+揉事 > momegoto\ ;
+競翔 > kyoushou\ ;
+鼻髭 > hanahige\ ;
+立葵 > tachiaoi\ ;
+粉乳 > fun''nyuu\ ;
+衝心 > shoushin\ ;
+鼻高 > hanataka\ ;
+喀血 > kakketsu\ ;
+才筆 > saihitsu\ ;
+投物 > nagemono\ ;
+地卵 > jitamago\ ;
+米倉 > komegura\ ;
+袖垣 > sodegaki\ ;
+深酒 > fukazake\ ;
+地力 > chiryoku\ ;
+空豆 > soramame\ ;
+振幅 > shinpuku\ ;
+鼻風 > hanakaze\ ;
+排列 > hairetsu\ ;
+米仏 > beifutsu\ ;
+捕失 > hoshitsu\ ;
+竪縞 > tatejima\ ;
+抄物 > shoumono\ ;
+竹簡 > chikukan\ ;
+漂漂 > hyouhyou\ ;
+抹殺 > massatsu\ ;
+裏付 > uradzuke\ ;
+唐鋤 > karasuki\ ;
+憶説 > okusetsu\ ;
+圧出 > asshutsu\ ;
+立脚 > rikkyaku\ ;
+竹箆 > takebera\ ;
+国国 > kuniguni\ ;
+簒奪 > sandatsu\ ;
+均一 > kin''itsu\ ;
+漏泄 > rousetsu\ ;
+鼻革 > hanagawa\ ;
+空説 > kuusetsu\ ;
+圧入 > atsunyuu\ ;
+挙式 > kyoshiki\ ;
+濫入 > ran''nyuu\ ;
+鋼鉄 > koutetsu\ ;
+空言 > soragoto\ ;
+唐金 > karakane\ ;
+虎鬚 > torahige\ ;
+溶発 > youhatsu\ ;
+滴滴 > tekiteki\ ;
+漂流 > hyouryuu\ ;
+虎髭 > torahige\ ;
+鏑矢 > kaburaya\ ;
+漂泊 > hyouhaku\ ;
+虚飾 > kyoshoku\ ;
+拙文 > setsubun\ ;
+箏曲 > soukyoku\ ;
+螢火 > hotarubi\ ;
+鑑札 > kansatsu\ ;
+才略 > sairyaku\ ;
+銀鼠 > gin''nezu\ ;
+濫伐 > ranbatsu\ ;
+拾得 > shuutoku\ ;
+国原 > kunibara\ ;
+蛞蝓 > namekuji\ ;
+掌中 > shouchuu\ ;
+禿鷹 > hagetaka\ ;
+空蝉 > utsusemi\ ;
+築庭 > chikutei\ ;
+篤学 > tokugaku\ ;
+融熱 > yuunetsu\ ;
+黙黙 > mokumoku\ ;
+鍋蓋 > nabebuta\ ;
+成立 > seiritsu\ ;
+筆洗 > fudearai\ ;
+困却 > konkyaku\ ;
+懸絶 > kenzetsu\ ;
+黒黴 > kurokabi\ ;
+海食 > kaishoku\ ;
+黒黒 > kuroguro\ ;
+慎重 > shinchou\ ;
+黒麦 > kuromugi\ ;
+成程 > naruhodo\ ;
+国元 > kunimoto\ ;
+才物 > saibutsu\ ;
+黒鷺 > kurosagi\ ;
+鉤鼻 > kagibana\ ;
+混血 > konketsu\ ;
+箱庭 > hakoniwa\ ;
+拙悪 > setsuaku\ ;
+消長 > shouchou\ ;
+細々 > hosoboso\ ;
+黒鴨 > kurogamo\ ;
+拡張 > kakuchou\ ;
+銀髪 > ginpatsu\ ;
+蛆虫 > ujimushi\ ;
+蝕甚 > shokujin\ ;
+蚕豆 > soramame\ ;
+蠍座 > sasoriza\ ;
+袖丈 > sodetake\ ;
+戦略 > senryaku\ ;
+回勅 > kaichoku\ ;
+国人 > kunibito\ ;
+湿疹 > shisshin\ ;
+嘱望 > shokubou\ ;
+浜風 > hamakaze\ ;
+竪琴 > tategoto\ ;
+渋茶 > shibucha\ ;
+行商 > gyoushou\ ;
+窮策 > kyuusaku\ ;
+蚰蜒 > gejigeji\ ;
+抗日 > kounichi\ ;
+渋色 > shibuiro\ ;
+活魚 > katsugyo\ ;
+築堤 > chikutei\ ;
+空耳 > soramimi\ ;
+銭金 > zenikane\ ;
+拝察 > haisatsu\ ;
+承服 > shoufuku\ ;
+截然 > setsuzen\ ;
+龍舟 > ryuushuu\ ;
+混色 > konshoku\ ;
+溢流 > itsuryuu\ ;
+滞日 > tainichi\ ;
+投技 > nagewaza\ ;
+戛然 > katsuzen\ ;
+我物 > wagamono\ ;
+鼻許 > hanamoto\ ;
+秒針 > byoushin\ ;
+振作 > shinsaku\ ;
+溝泥 > dobudoro\ ;
+銑鉄 > sentetsu\ ;
+禄高 > rokudaka\ ;
+溝水 > dobumizu\ ;
+憂色 > yuushoku\ ;
+空籤 > karakuji\ ;
+鉄骨 > tekkotsu\ ;
+湯煙 > yukemuri\ ;
+洗髪 > senpatsu\ ;
+淡色 > tanshoku\ ;
+私鉄 > shitetsu\ ;
+秒速 > byousoku\ ;
+篤信 > tokushin\ ;
+空箱 > karabako\ ;
+突立 > tottatsu\ ;
+唐草 > karakusa\ ;
+蟻塚 > aridzuka\ ;
+潮先 > shiosaki\ ;
+虚説 > kyosetsu\ ;
+血便 > ketsuben\ ;
+行中 > gyouchuu\ ;
+洋髪 > youhatsu\ ;
+戦没 > senbotsu\ ;
+指先 > yubisaki\ ;
+錦絵 > nishikie\ ;
+商策 > shousaku\ ;
+手枕 > temakura\ ;
+秀逸 > shuuitsu\ ;
+節分 > setsubun\ ;
+戦歿 > senbotsu\ ;
+竹槍 > takeyari\ ;
+融接 > yuusetsu\ ;
+黒鉄 > kurogane\ ;
+潜入 > sen''nyuu\ ;
+黒金 > kurogane\ ;
+洋食 > youshoku\ ;
+等式 > toushiki\ ;
+藩閥 > hanbatsu\ ;
+流量 > ryuuryou\ ;
+感触 > kanshoku\ ;
+鍼灸 > shinkyuu\ ;
+突発 > toppatsu\ ;
+鉤針 > kagibari\ ;
+投宿 > toushuku\ ;
+竹林 > chikurin\ ;
+溶接 > yousetsu\ ;
+啓発 > keihatsu\ ;
+竹材 > chikuzai\ ;
+空発 > kuuhatsu\ ;
+払拭 > fusshoku\ ;
+神風 > kamikaze\ ;
+窃用 > setsuyou\ ;
+流速 > ryuusoku\ ;
+流通 > ryuutsuu\ ;
+滝川 > takigawa\ ;
+穀粒 > kokuryuu\ ;
+筑子 > kokiriko\ ;
+端末 > tanmatsu\ ;
+唐紙 > karakami\ ;
+薦骨 > senkotsu\ ;
+長々 > naganaga\ ;
+蛸焼 > takoyaki\ ;
+祝電 > shukuden\ ;
+恐龍 > kyouryuu\ ;
+私説 > shisetsu\ ;
+品薄 > shinausu\ ;
+拝借 > haishaku\ ;
+截断 > setsudan\ ;
+海蝕 > kaishoku\ ;
+算入 > san''nyuu\ ;
+種紙 > tanegami\ ;
+温熱 > on''netsu\ ;
+鉄鉢 > teppachi\ ;
+私設 > shisetsu\ ;
+満月 > mangetsu\ ;
+鍋物 > nabemono\ ;
+湾曲 > wankyoku\ ;
+波風 > namikaze\ ;
+鑑別 > kanbetsu\ ;
+黒豹 > kurohyou\ ;
+房房 > fusafusa\ ;
+黒豆 > kuromame\ ;
+唐突 > toutotsu\ ;
+黙諾 > mokudaku\ ;
+野鼠 > nonezumi\ ;
+喬木 > kyouboku\ ;
+黙読 > mokudoku\ ;
+恥骨 > chikotsu\ ;
+手心 > tegokoro\ ;
+突然 > totsuzen\ ;
+押切 > oshikiri\ ;
+抑圧 > yokuatsu\ ;
+慶祝 > keishuku\ ;
+筆太 > fudebuto\ ;
+鉄道 > tetsudou\ ;
+粘々 > nebaneba\ ;
+神鏡 > shinkyou\ ;
+渉猟 > shouryou\ ;
+虚脱 > kyodatsu\ ;
+河鱒 > kawamasu\ ;
+銭苔 > zenigoke\ ;
+立札 > tatefuda\ ;
+噛傷 > kamikizu\ ;
+野鶲 > nobitaki\ ;
+演出 > enshutsu\ ;
+測深 > sokushin\ ;
+鼻紙 > hanagami\ ;
+温温 > nukunuku\ ;
+鼻糞 > hanakuso\ ;
+粉々 > konagona\ ;
+悪逆 > akugyaku\ ;
+悪辣 > akuratsu\ ;
+戦慄 > senritsu\ ;
+黒表 > kokuhyou\ ;
+涼秋 > ryoushuu\ ;
+鼻筋 > hanasuji\ ;
+麩質 > fushitsu\ ;
+沈黙 > chinmoku\ ;
+蛍火 > hotarubi\ ;
+金髪 > kinpatsu\ ;
+鉈豆 > natamame\ ;
+磯鷸 > isoshigi\ ;
+溝川 > dobugawa\ ;
+鎔接 > yousetsu\ ;
+鍵束 > kagitaba\ ;
+神速 > shinsoku\ ;
+黒蛇 > kurohebi\ ;
+満悦 > man''etsu\ ;
+我我 > wareware\ ;
+清潔 > seiketsu\ ;
+筆名 > hitsumei\ ;
+程程 > hodohodo\ ;
+蝎座 > sasoriza\ ;
+種畜 > shuchiku\ ;
+筋力 > kinryoku\ ;
+銅色 > doushoku\ ;
+反骨 > hankotsu\ ;
+準尺 > junshaku\ ;
+召集 > shoushuu\ ;
+注進 > chuushin\ ;
+商況 > shoukyou\ ;
+鋼玉 > kougyoku\ ;
+湿度 > shitsudo\ ;
+蟄伏 > chippuku\ ;
+浅葱 > asatsuki\ ;
+戒律 > kairitsu\ ;
+竺学 > jikugaku\ ;
+吹貫 > fukinuki\ ;
+笹原 > sasahara\ ;
+窓枠 > madowaku\ ;
+唐物 > toumotsu\ ;
+叢雲 > murakumo\ ;
+叢雨 > murasame\ ;
+涜神 > tokushin\ ;
+端局 > tankyoku\ ;
+択一 > takuitsu\ ;
+戦局 > senkyoku\ ;
+筆先 > fudesaki\ ;
+銭箱 > zenibako\ ;
+錨泊 > byouhaku\ ;
+鉄血 > tekketsu\ ;
+混浴 > kon''yoku\ ;
+深深 > fukabuka\ ;
+藪蛇 > yabuhebi\ ;
+種物 > tanemono\ ;
+種牛 > taneushi\ ;
+蛇毒 > hebidoku\ ;
+戌年 > inudoshi\ ;
+鼻疾 > bishitsu\ ;
+滑剤 > katsuzai\ ;
+黒船 > kurofune\ ;
+商標 > shouhyou\ ;
+鼎立 > teiritsu\ ;
+銀翼 > gin''yoku\ ;
+泥足 > doroashi\ ;
+鎌形 > kamagata\ ;
+滅却 > mekkyaku\ ;
+釣銭 > tsurisen\ ;
+商業 > shougyou\ ;
+鉱脈 > koumyaku\ ;
+収集 > shuushuu\ ;
+蚊燻 > kaibushi\ ;
+各週 > kakushuu\ ;
+神託 > shintaku\ ;
+承伏 > shoufuku\ ;
+吃逆 > shakkuri\ ;
+麹菌 > koujikin\ ;
+黄色 > koushoku\ ;
+命脈 > meimyaku\ ;
+黒肉 > kuroniku\ ;
+麦藁 > mugiwara\ ;
+竹垣 > takegaki\ ;
+鍛接 > tansetsu\ ;
+針金 > harigane\ ;
+銀縁 > ginbuchi\ ;
+金錆 > kanasabi\ ;
+税率 > zeiritsu\ ;
+立山 > tateyama\ ;
+麦蒔 > mugimaki\ ;
+金鉄 > kintetsu\ ;
+古金 > furugane\ ;
+古里 > furusato\ ;
+啄木 > takuboku\ ;
+口重 > kuchiomo\ ;
+渇望 > katsubou\ ;
+才力 > sairyoku\ ;
+古酒 > furuzake\ ;
+清朝 > shinchou\ ;
+鼻熊 > hanaguma\ ;
+笑劇 > shougeki\ ;
+錫杖 > shakujou\ ;
+空撮 > kuusatsu\ ;
+黙約 > mokuyaku\ ;
+社説 > shasetsu\ ;
+浅緑 > senryoku\ ;
+収録 > shuuroku\ ;
+手刀 > tegatana\ ;
+積極 > sekkyoku\ ;
+打傷 > uchikizu\ ;
+鉄色 > tetsuiro\ ;
+国々 > kuniguni\ ;
+福耳 > fukumimi\ ;
+滅亡 > metsubou\ ;
+慄然 > ritsuzen\ ;
+口述 > koujutsu\ ;
+同説 > dousetsu\ ;
+窒息 > chissoku\ ;
+右足 > migiashi\ ;
+沖釣 > okidzuri\ ;
+竹叢 > takamura\ ;
+黒米 > kurogome\ ;
+収量 > shuuryou\ ;
+鉄腕 > tetsuwan\ ;
+叛逆 > hangyaku\ ;
+點穴 > tenketsu\ ;
+水鳥 > mizudori\ ;
+満喫 > mankitsu\ ;
+呈色 > teishoku\ ;
+我国 > wagakuni\ ;
+薮蛇 > yabuhebi\ ;
+叱責 > shisseki\ ;
+悪舌 > akuzetsu\ ;
+虎猫 > toraneko\ ;
+洒脱 > shadatsu\ ;
+麻綱 > asadzuna\ ;
+黐竿 > mochizao\ ;
+含蓄 > ganchiku\ ;
+反逆 > hangyaku\ ;
+参酌 > sanshaku\ ;
+戦力 > senryoku\ ;
+収輯 > shuushuu\ ;
+各行 > kakugyou\ ;
+戦列 > senretsu\ ;
+鍋底 > nabezoko\ ;
+急進 > kyuushin\ ;
+悪者 > warumono\ ;
+急速 > kyuusoku\ ;
+急追 > kyuutsui\ ;
+急迫 > kyuuhaku\ ;
+鼻水 > hanamizu\ ;
+悽絶 > seizetsu\ ;
+窮境 > kyuukyou\ ;
+悶絶 > monzetsu\ ;
+周章 > shuushou\ ;
+快闊 > kaikatsu\ ;
+水食 > suishoku\ ;
+競作 > kyousaku\ ;
+立命 > ritsumei\ ;
+厳達 > gentatsu\ ;
+厳逹 > gentatsu\ ;
+湾入 > wan''nyuu\ ;
+温室 > onshitsu\ ;
+重説 > juusetsu\ ;
+鍋尻 > nabejiri\ ;
+深憂 > shin''yuu\ ;
+氷震 > hyoushin\ ;
+鉄筆 > teppitsu\ ;
+活眼 > katsugan\ ;
+口裏 > kuchiura\ ;
+洞窟 > doukutsu\ ;
+我儘 > wagamama\ ;
+水際 > mizugiwa\ ;
+重複 > choufuku\ ;
+私物 > shibutsu\ ;
+活発 > kappatsu\ ;
+麦稈 > mugiwara\ ;
+窒塞 > chissoku\ ;
+消沈 > shouchin\ ;
+同色 > doushoku\ ;
+悪筆 > akuhitsu\ ;
+硬骨 > koukotsu\ ;
+我侭 > wagamama\ ;
+沢蠏 > sawagani\ ;
+沢蟹 > sawagani\ ;
+憫察 > binsatsu\ ;
+麗筆 > reihitsu\ ;
+藁紙 > waragami\ ;
+立像 > ritsuzou\ ;
+活用 > katsuyou\ ;
+消毒 > shoudoku\ ;
+商学 > shougaku\ ;
+我人 > warehito\ ;
+鍋墨 > nabezumi\ ;
+成仏 > joubutsu\ ;
+黒猫 > kuroneko\ ;
+我事 > wagakoto\ ;
+同胞 > harakara\ ;
+鉱物 > koubutsu\ ;
+急襲 > kyuushuu\ ;
+同職 > doushoku\ ;
+空夢 > sorayume\ ;
+泥縄 > doronawa\ ;
+徴集 > choushuu\ ;
+酋長 > shuuchou\ ;
+半靴 > hangutsu\ ;
+悶着 > monchaku\ ;
+黄玉 > kougyoku\ ;
+黒熊 > kuroguma\ ;
+蒲魚 > kamatoto\ ;
+惨烈 > sanretsu\ ;
+喉元 > nodomoto\ ;
+空堀 > karabori\ ;
+薄膜 > hakumaku\ ;
+窯元 > kamamoto\ ;
+減圧 > gen''atsu\ ;
+私淑 > shishuku\ ;
+稚拙 > chisetsu\ ;
+祐筆 > yuuhitsu\ ;
+古草 > furukusa\ ;
+口荒 > kuchiara\ ;
+神神 > kamigami\ ;
+祝祷 > shukutou\ ;
+神祐 > shin''yuu\ ;
+祝祭 > shukusai\ ;
+告白 > kokuhaku\ ;
+黄熱 > kounetsu\ ;
+半長 > han''naga\ ;
+鉄瓶 > tetsubin\ ;
+水部 > mizunobu\ ;
+悪癖 > waruguse\ ;
+黒潮 > kuroshio\ ;
+蓄電 > chikuden\ ;
+母鳥 > hahadori\ ;
+口舌 > kouzetsu\ ;
+祝砲 > shukuhou\ ;
+毛髪 > mouhatsu\ ;
+礼節 > reisetsu\ ;
+及落 > kyuuraku\ ;
+銃殺 > juusatsu\ ;
+清国 > shinkoku\ ;
+情熱 > jounetsu\ ;
+空咳 > karazeki\ ;
+蛮力 > banryoku\ ;
+態態 > wazawaza\ ;
+金脈 > kinmyaku\ ;
+只者 > tadamono\ ;
+懇切 > konsetsu\ ;
+禁物 > kinmotsu\ ;
+虐政 > gyakusei\ ;
+名筆 > meihitsu\ ;
+確証 > kakushou\ ;
+社稷 > shashoku\ ;
+同筆 > douhitsu\ ;
+急落 > kyuuraku\ ;
+活溌 > kappatsu\ ;
+配達 > haitatsu\ ;
+鋸屑 > nokokuzu\ ;
+重職 > juushoku\ ;
+流流 > ryuuryuu\ ;
+淀川 > yodogawa\ ;
+惑溺 > wakudeki\ ;
+浅沓 > asagutsu\ ;
+同穴 > douketsu\ ;
+惨殺 > zansatsu\ ;
+酷評 > kokuhyou\ ;
+釣糸 > tsuriito\ ;
+洗熊 > araiguma\ ;
+心身 > shinshin\ ;
+重罰 > juubatsu\ ;
+流氷 > ryuuhyou\ ;
+注目 > chuumoku\ ;
+双脚 > soukyaku\ ;
+汗血 > kanketsu\ ;
+浪曲 > roukyoku\ ;
+金縁 > kinbuchi\ ;
+半道 > hanmichi\ ;
+北陸 > hokuriku\ ;
+原薬 > gen''yaku\ ;
+即諾 > sokudaku\ ;
+活殺 > kassatsu\ ;
+唯唯 > tadatada\ ;
+周流 > shuuryuu\ ;
+稲妻 > inadzuma\ ;
+右筆 > yuuhitsu\ ;
+唐墨 > karasumi\ ;
+史筆 > shihitsu\ ;
+釣竿 > tsurizao\ ;
+針箱 > haribako\ ;
+私曲 > shikyoku\ ;
+心象 > shinshou\ ;
+唱名 > shoumyou\ ;
+只管 > hitasura\ ;
+同着 > douchaku\ ;
+津津 > shinshin\ ;
+卓越 > takuetsu\ ;
+恐竜 > kyouryuu\ ;
+鼻屎 > hanakuso\ ;
+清冽 > seiretsu\ ;
+蒐集 > shuushuu\ ;
+取組 > torikumi\ ;
+蒲鉾 > kamaboko\ ;
+海抜 > kaibatsu\ ;
+金箱 > kanebako\ ;
+虚式 > kyoshiki\ ;
+消息 > shousoku\ ;
+気質 > kishitsu\ ;
+殻頂 > kakuchou\ ;
+口笛 > kuchibue\ ;
+各省 > kakushou\ ;
+原茸 > haratake\ ;
+鴛鴦 > oshidori\ ;
+薬玉 > kusudama\ ;
+虐待 > gyakutai\ ;
+黒枠 > kurowaku\ ;
+酷薄 > kokuhaku\ ;
+心証 > shinshou\ ;
+金穴 > kinketsu\ ;
+原色 > genshoku\ ;
+黒服 > kurofuku\ ;
+勝馬 > kachiuma\ ;
+深刻 > shinkoku\ ;
+破鐘 > waregane\ ;
+必要 > hitsuyou\ ;
+混入 > kon''nyuu\ ;
+忍術 > ninjutsu\ ;
+厳罰 > genbatsu\ ;
+流木 > ryuuboku\ ;
+鈍物 > donbutsu\ ;
+司直 > shichoku\ ;
+協調 > kyouchou\ ;
+後述 > koujutsu\ ;
+禁欲 > kin''yoku\ ;
+渇仰 > katsugou\ ;
+秩序 > chitsujo\ ;
+卒論 > sotsuron\ ;
+水蝕 > suishoku\ ;
+流暢 > ryuuchou\ ;
+水蜜 > suimitsu\ ;
+石高 > kokudaka\ ;
+漂々 > hyouhyou\ ;
+徴証 > choushou\ ;
+命日 > meinichi\ ;
+復讐 > fukushuu\ ;
+復讎 > fukushuu\ ;
+同率 > douritsu\ ;
+惜春 > sekishun\ ;
+礼物 > reimotsu\ ;
+短髪 > tanpatsu\ ;
+虚実 > kyojitsu\ ;
+沖積 > chuuseki\ ;
+蓄財 > chikuzai\ ;
+収穫 > shuukaku\ ;
+恋着 > renchaku\ ;
+復調 > fukuchou\ ;
+悩殺 > nousatsu\ ;
+復誦 > fukushou\ ;
+治略 > chiryaku\ ;
+名物 > meibutsu\ ;
+北進 > hokushin\ ;
+黄昏 > tasogare\ ;
+史略 > shiryaku\ ;
+泥濘 > nukarumi\ ;
+藤棚 > fujidana\ ;
+北辰 > hokushin\ ;
+厳粛 > genshuku\ ;
+鉄棒 > tetsubou\ ;
+鼓室 > koshitsu\ ;
+鳩麦 > hatomugi\ ;
+沈積 > chinseki\ ;
+鉄梃 > kanateko\ ;
+強震 > kyoushin\ ;
+落魄 > rakuhaku\ ;
+量的 > ryouteki\ ;
+忠良 > chuuryou\ ;
+藩札 > hansatsu\ ;
+古疵 > furukizu\ ;
+勅願 > chokugan\ ;
+酒蔵 > sakagura\ ;
+勅題 > chokudai\ ;
+忠臣 > chuushin\ ;
+弱震 > jakushin\ ;
+等々 > nadonado\ ;
+禁札 > kinsatsu\ ;
+種別 > shubetsu\ ;
+黒房 > kurobusa\ ;
+悦楽 > etsuraku\ ;
+水草 > mizukusa\ ;
+愛子 > itoshigo\ ;
+鉄材 > tetsuzai\ ;
+弦音 > tsuruoto\ ;
+唐傘 > karakasa\ ;
+麦束 > mugitaba\ ;
+水茎 > mizuguki\ ;
+憂事 > ureigoto\ ;
+短靴 > tangutsu\ ;
+水苔 > mizugoke\ ;
+洋梨 > younashi\ ;
+残雪 > zansetsu\ ;
+厚紙 > atsugami\ ;
+浴客 > yokkyaku\ ;
+神橋 > shinkyou\ ;
+水船 > mizubune\ ;
+泥沼 > doronuma\ ;
+反発 > hanpatsu\ ;
+神様 > kamisama\ ;
+双発 > souhatsu\ ;
+磨石 > togiishi\ ;
+弁髪 > benpatsu\ ;
+泥水 > doromizu\ ;
+泡沫 > houmatsu\ ;
+神業 > kamiwaza\ ;
+水腹 > mizubara\ ;
+参着 > sanchaku\ ;
+薬毒 > yakudoku\ ;
+確約 > kakuyaku\ ;
+酒色 > shushoku\ ;
+水脈 > suimyaku\ ;
+神棚 > kamidana\ ;
+古物 > furumono\ ;
+快絶 > kaizetsu\ ;
+配色 > haishoku\ ;
+金物 > kanamono\ ;
+神格 > shinkaku\ ;
+禿山 > hageyama\ ;
+十薬 > dokudami\ ;
+沈痛 > chintsuu\ ;
+急病 > kyuubyou\ ;
+針灸 > shinkyuu\ ;
+石鏃 > sekizoku\ ;
+祭日 > saijitsu\ ;
+単色 > tanshoku\ ;
+心腹 > shinpuku\ ;
+決着 > ketchaku\ ;
+税別 > zeibetsu\ ;
+黒幕 > kuromaku\ ;
+祝杯 > shukuhai\ ;
+神木 > shinboku\ ;
+悪擦 > waruzure\ ;
+鼻先 > hanasaki\ ;
+鼻元 > hanamoto\ ;
+神月 > koudzuki\ ;
+収獲 > shuukaku\ ;
+民草 > tamigusa\ ;
+活弁 > katsuben\ ;
+硝薬 > shouyaku\ ;
+和室 > washitsu\ ;
+釈然 > shakuzen\ ;
+称名 > shoumyou\ ;
+禁慾 > kin''yoku\ ;
+哲人 > tetsujin\ ;
+福徳 > fukutoku\ ;
+黒山 > kuroyama\ ;
+勿論 > mochiron\ ;
+強迫 > kyouhaku\ ;
+弔鐘 > choushou\ ;
+怪物 > kaibutsu\ ;
+福引 > fukubiki\ ;
+沼沢 > shoutaku\ ;
+蝶々 > chouchou\ ;
+薄氷 > hakuhyou\ ;
+卒者 > sotsusha\ ;
+油汗 > aburaase\ ;
+原発 > genpatsu\ ;
+割高 > waridaka\ ;
+著述 > chojutsu\ ;
+砲術 > houjutsu\ ;
+厚皮 > atsukawa\ ;
+勅選 > chokusen\ ;
+求積 > kyuuseki\ ;
+毛虱 > kejirami\ ;
+酒糟 > sakekasu\ ;
+酒粕 > sakekasu\ ;
+劇震 > gekishin\ ;
+引金 > hikigane\ ;
+古河 > furukawa\ ;
+復習 > fukushuu\ ;
+毒蛇 > dokuhebi\ ;
+鉄床 > kanatoko\ ;
+名月 > meigetsu\ ;
+名曲 > meikyoku\ ;
+鉄帽 > tetsubou\ ;
+同月 > dougetsu\ ;
+急激 > kyuugeki\ ;
+占算 > urayasan\ ;
+協約 > kyouyaku\ ;
+毒薬 > dokuyaku\ ;
+決然 > ketsuzen\ ;
+殖財 > shokuzai\ ;
+重殺 > juusatsu\ ;
+情実 > joujitsu\ ;
+秋口 > akiguchi\ ;
+金欠 > kinketsu\ ;
+単節 > tansetsu\ ;
+洋式 > youshiki\ ;
+取決 > torikime\ ;
+同日 > doujitsu\ ;
+祭式 > saishiki\ ;
+虐使 > gyakushi\ ;
+沐浴 > mokuyoku\ ;
+徒者 > tadamono\ ;
+鉄山 > tetsuzan\ ;
+原物 > genbutsu\ ;
+力量 > rikiryou\ ;
+洞察 > dousatsu\ ;
+強調 > kyouchou\ ;
+道順 > michijun\ ;
+神徳 > shintoku\ ;
+心神 > shinshin\ ;
+遊食 > yuushoku\ ;
+復籍 > fukuseki\ ;
+欠食 > kesshoku\ ;
+急流 > kyuuryuu\ ;
+毒茸 > dokutake\ ;
+延金 > nobegane\ ;
+碌碌 > rokuroku\ ;
+銭亀 > zenigame\ ;
+歯車 > haguruma\ ;
+強襲 > kyoushuu\ ;
+引越 > hikkoshi\ ;
+剃髪 > teihatsu\ ;
+忽然 > kotsuzen\ ;
+金梃 > kanateko\ ;
+古株 > furukabu\ ;
+勅諚 > chokujou\ ;
+菜食 > saishoku\ ;
+悄悄 > sugosugo\ ;
+硬筆 > kouhitsu\ ;
+神州 > shinshuu\ ;
+彩色 > saishoku\ ;
+必着 > hitchaku\ ;
+知識 > chishiki\ ;
+我々 > wareware\ ;
+進駐 > shinchuu\ ;
+愁傷 > shuushou\ ;
+古服 > furufuku\ ;
+水瓶 > mizugame\ ;
+心的 > shinteki\ ;
+黙劇 > mokugeki\ ;
+吾子 > wagimoko\ ;
+気短 > kimijika\ ;
+蕃殖 > hanshoku\ ;
+得策 > tokusaku\ ;
+勅裁 > chokusai\ ;
+従節 > juusetsu\ ;
+適量 > tekiryou\ ;
+心痛 > shintsuu\ ;
+劇通 > gekitsuu\ ;
+金星 > kinboshi\ ;
+汲汲 > kyuukyuu\ ;
+弾薬 > dan''yaku\ ;
+単発 > tanpatsu\ ;
+必用 > hitsuyou\ ;
+卒直 > sotchoku\ ;
+水玉 > mizutama\ ;
+神学 > shingaku\ ;
+禁圧 > kin''atsu\ ;
+秀作 > shuusaku\ ;
+徳目 > tokumoku\ ;
+里方 > satokata\ ;
+法律 > houritsu\ ;
+礼式 > reishiki\ ;
+収束 > shuusoku\ ;
+釈明 > shakumei\ ;
+活動 > katsudou\ ;
+黒円 > kuromaru\ ;
+法式 > houshiki\ ;
+水物 > mizumono\ ;
+得票 > tokuhyou\ ;
+遥遥 > harubaru\ ;
+派出 > hashutsu\ ;
+釈放 > shakuhou\ ;
+流入 > ryuunyuu\ ;
+残虐 > zangyaku\ ;
+薬屋 > kusuriya\ ;
+薬局 > yakkyoku\ ;
+硬直 > kouchoku\ ;
+合式 > goushiki\ ;
+神妙 > shinmyou\ ;
+遠道 > toomichi\ ;
+当職 > toushoku\ ;
+底革 > sokogawa\ ;
+醜業 > shuugyou\ ;
+薬学 > yakugaku\ ;
+硝石 > shouseki\ ;
+遙遙 > harubaru\ ;
+福助 > fukusuke\ ;
+毛筆 > mouhitsu\ ;
+快活 > kaikatsu\ ;
+去月 > kyogetsu\ ;
+正覚 > shougaku\ ;
+着駅 > chakueki\ ;
+反撥 > hanpatsu\ ;
+建設 > kensetsu\ ;
+恐悦 > kyouetsu\ ;
+蔭様 > kagesama\ ;
+神域 > shin''iki\ ;
+千生 > sen''nari\ ;
+薄弱 > hakujaku\ ;
+恍惚 > koukotsu\ ;
+必然 > hitsuzen\ ;
+恐恐 > kowagowa\ ;
+同局 > doukyoku\ ;
+黒丸 > kuromaru\ ;
+蒸着 > jouchaku\ ;
+半玉 > hangyoku\ ;
+逆風 > gyakufuu\ ;
+分骨 > bunkotsu\ ;
+神国 > shinkoku\ ;
+幼顔 > osanagao\ ;
+強膜 > kyoumaku\ ;
+同宿 > doushuku\ ;
+名実 > meijitsu\ ;
+止血 > shiketsu\ ;
+逐電 > chikuden\ ;
+収拾 > shuushuu\ ;
+動脈 > doumyaku\ ;
+着順 > chakujun\ ;
+蒸発 > jouhatsu\ ;
+逆順 > gyakujun\ ;
+合宿 > gasshuku\ ;
+劇評 > gekihyou\ ;
+酸欠 > sanketsu\ ;
+鉄剤 > tetsuzai\ ;
+硬玉 > kougyoku\ ;
+決断 > ketsudan\ ;
+後発 > kouhatsu\ ;
+副賞 > fukushou\ ;
+鉄分 > tetsubun\ ;
+河底 > kawazoko\ ;
+卒然 > sotsuzen\ ;
+着電 > chakuden\ ;
+広闊 > koukatsu\ ;
+友成 > tomonari\ ;
+水洟 > mizubana\ ;
+即決 > sokketsu\ ;
+後略 > kouryaku\ ;
+前述 > zenjutsu\ ;
+割譲 > katsujou\ ;
+原曲 > genkyoku\ ;
+切願 > setsugan\ ;
+出駕 > shutsuga\ ;
+後産 > nochizan\ ;
+落莫 > rakubaku\ ;
+適評 > tekihyou\ ;
+忙殺 > bousatsu\ ;
+蓋物 > futamono\ ;
+温々 > nukunuku\ ;
+出馬 > shutsuba\ ;
+適訳 > tekiyaku\ ;
+水没 > suibotsu\ ;
+御物 > gyobutsu\ ;
+当節 > tousetsu\ ;
+吸口 > suikuchi\ ;
+悋嗇 > rinshoku\ ;
+吸収 > kyuushuu\ ;
+古川 > furukawa\ ;
+創設 > sousetsu\ ;
+針山 > hariyama\ ;
+殉職 > junshoku\ ;
+取引 > torihiki\ ;
+没年 > botsunen\ ;
+史実 > shijitsu\ ;
+葉脈 > youmyaku\ ;
+台密 > taimitsu\ ;
+達識 > tasshiki\ ;
+収得 > shuutoku\ ;
+麦作 > mugisaku\ ;
+性悪 > shouwaru\ ;
+卑湿 > hishitsu\ ;
+吝嗇 > rinshoku\ ;
+従物 > juubutsu\ ;
+役畜 > ekichiku\ ;
+鉄人 > tetsujin\ ;
+死脈 > shimyaku\ ;
+凡骨 > bonkotsu\ ;
+金屑 > kanakuzu\ ;
+必殺 > hissatsu\ ;
+古寺 > furudera\ ;
+洛中 > rakuchuu\ ;
+凸面 > totsumen\ ;
+吸入 > kyuunyuu\ ;
+到達 > toutatsu\ ;
+口実 > koujitsu\ ;
+劇薬 > gekiyaku\ ;
+短縮 > tanshuku\ ;
+冷麦 > hiyamugi\ ;
+祝典 > shukuten\ ;
+出陳 > shutchin\ ;
+正色 > seishoku\ ;
+葛籠 > tsudzura\ ;
+徳沢 > tokutaku\ ;
+釈尊 > shakuson\ ;
+平鍋 > hiranabe\ ;
+酒樽 > sakadaru\ ;
+弁舌 > benzetsu\ ;
+追録 > tsuiroku\ ;
+恋妻 > koidzuma\ ;
+怖怖 > kowagowa\ ;
+復活 > fukkatsu\ ;
+氷柱 > hyouchuu\ ;
+恫喝 > doukatsu\ ;
+適薬 > tekiyaku\ ;
+剣術 > kenjutsu\ ;
+厳律 > genritsu\ ;
+劫罰 > goubatsu\ ;
+彫琢 > choutaku\ ;
+化物 > bakemono\ ;
+薪割 > makiwari\ ;
+当直 > touchoku\ ;
+前説 > zensetsu\ ;
+副虹 > fukuniji\ ;
+北爆 > hokubaku\ ;
+矢絣 > yagasuri\ ;
+莫逆 > bakugeki\ ;
+常食 > joushoku\ ;
+鰐鮫 > wanizame\ ;
+注入 > chuunyuu\ ;
+急峻 > kyuushun\ ;
+鳩胸 > hatomune\ ;
+勅答 > chokutou\ ;
+氷晶 > hyoushou\ ;
+店賃 > tanachin\ ;
+辮髪 > benpatsu\ ;
+南極 > nankyoku\ ;
+心根 > kokorone\ ;
+冬鳥 > fuyudori\ ;
+破物 > waremono\ ;
+唯々 > tadatada\ ;
+協業 > kyougyou\ ;
+凝集 > gyoushuu\ ;
+各各 > sorezore\ ;
+送達 > soutatsu\ ;
+彫物 > horimono\ ;
+底豆 > sokomame\ ;
+鳥肌 > torihada\ ;
+勾玉 > magatama\ ;
+鳥肉 > toriniku\ ;
+劇臭 > gekishuu\ ;
+母物 > hahamono\ ;
+恐嚇 > kyoukaku\ ;
+深々 > fukabuka\ ;
+真鍮 > shinchuu\ ;
+怠屈 > taikutsu\ ;
+社共 > shakyou\ ;
+心材 > shinzai\ ;
+近間 > chikama\ ;
+去就 > kyoshuu\ ;
+前表 > zenpyou\ ;
+君側 > kunsoku\ ;
+追送 > tsuisou\ ;
+占有 > sen''yuu\ ;
+忌日 > kinichi\ ;
+占書 > urabumi\ ;
+帳面 > choumen\ ;
+直音 > chokuon\ ;
+功績 > kouseki\ ;
+民業 > mingyou\ ;
+薄命 > hakumei\ ;
+席順 > sekijun\ ;
+益鳥 > ekichou\ ;
+沖天 > chuuten\ ;
+応接 > ousetsu\ ;
+瞠若 > doujaku\ ;
+後流 > kouryuu\ ;
+召喚 > shoukan\ ;
+引算 > hikizan\ ;
+卜書 > urabumi\ ;
+帯革 > obikawa\ ;
+出金 > shukkin\ ;
+叫喚 > kyoukan\ ;
+吉凶 > kikkyou\ ;
+重圧 > juuatsu\ ;
+述部 > jutsubu\ ;
+鷲座 > washiza\ ;
+弓箭 > kyuusen\ ;
+分進 > bunshin\ ;
+菩薩 > bosatsu\ ;
+分速 > funsoku\ ;
+水撃 > suigeki\ ;
+沢地 > sawachi\ ;
+切迫 > seppaku\ ;
+南朝 > nanchou\ ;
+念念 > nen''nen\ ;
+N響 > enukyou\ ;
+正続 > seizoku\ ;
+落第 > rakudai\ ;
+釣合 > tsuriai\ ;
+正絹 > shouken\ ;
+厳容 > gen''you\ ;
+進行 > shinkou\ ;
+吉兆 > kitchou\ ;
+動的 > douteki\ ;
+同僚 > douryou\ ;
+正経 > seikyou\ ;
+北満 > hokuman\ ;
+半格 > hankaku\ ;
+通謀 > tsuubou\ ;
+召命 > shoumei\ ;
+通論 > tsuuron\ ;
+序説 > josetsu\ ;
+泥中 > deichuu\ ;
+底角 > teikaku\ ;
+割興 > warikou\ ;
+徳望 > tokubou\ ;
+急変 > kyuuhen\ ;
+口唇 > koushin\ ;
+鳥網 > toriami\ ;
+恭倹 > kyouken\ ;
+叫号 > kyougou\ ;
+分身 > bunshin\ ;
+刺衝 > shishou\ ;
+幽谷 > yuukoku\ ;
+鄙歌 > hinauta\ ;
+段物 > danmono\ ;
+同信 > doushin\ ;
+石盤 > sekiban\ ;
+死票 > shihyou\ ;
+割腹 > kappuku\ ;
+廐舎 > kyuusha\ ;
+通計 > tsuukei\ ;
+同侶 > douryou\ ;
+台北 > taihoku\ ;
+勤王 > kin''nou\ ;
+廏舎 > kyuusha\ ;
+快復 > kaifuku\ ;
+民有 > min''yuu\ ;
+歴程 > rekitei\ ;
+破滅 > hametsu\ ;
+急増 > kyuuzou\ ;
+通解 > tsuukai\ ;
+判読 > handoku\ ;
+重唱 > juushou\ ;
+名作 > meisaku\ ;
+通観 > tsuukan\ ;
+弔祭 > chousai\ ;
+各停 > kakutei\ ;
+恩借 > onshaku\ ;
+史劇 > shigeki\ ;
+北洋 > hokuyou\ ;
+通覧 > tsuuran\ ;
+適者 > tekisha\ ;
+副腎 > fukujin\ ;
+社中 > shachuu\ ;
+追贈 > tsuizou\ ;
+急報 > kyuuhou\ ;
+師長 > shichou\ ;
+刀身 > toushin\ ;
+加筆 > kahitsu\ ;
+去声 > kyoshou\ ;
+名代 > myoudai\ ;
+匡正 > kyousei\ ;
+合作 > gassaku\ ;
+従業 > juugyou\ ;
+半時 > hantoki\ ;
+落磐 > rakuban\ ;
+原審 > genshin\ ;
+毒液 > dokueki\ ;
+彼氏 > kareshi\ ;
+帝陵 > teiryou\ ;
+徳政 > tokusei\ ;
+民族 > minzoku\ ;
+遠耳 > toomimi\ ;
+名主 > nanushi\ ;
+急坂 > kyuuhan\ ;
+初診 > shoshin\ ;
+広角 > koukaku\ ;
+吉事 > kitsuji\ ;
+氏族 > shizoku\ ;
+弔砲 > chouhou\ ;
+建策 > kensaku\ ;
+前葉 > zen''you\ ;
+通行 > tsuukou\ ;
+同一 > douitsu\ ;
+幾許 > ikubaku\ ;
+重厚 > choukou\ ;
+荷送 > niokuri\ ;
+復旧 > fukkyuu\ ;
+没収 > bosshuu\ ;
+廻章 > kaishou\ ;
+博捜 > hakusou\ ;
+知的 > chiteki\ ;
+各人 > kakujin\ ;
+残留 > zanryuu\ ;
+幕軍 > bakugun\ ;
+建立 > konryuu\ ;
+沃地 > yokuchi\ ;
+遊興 > yuukyou\ ;
+復文 > fukubun\ ;
+合一 > gouitsu\ ;
+別表 > beppyou\ ;
+副署 > fukusho\ ;
+受取 > uketori\ ;
+心房 > shinbou\ ;
+古刹 > kosatsu\ ;
+労相 > roushou\ ;
+郭清 > kakusei\ ;
+出走 > shussou\ ;
+幻覚 > genkaku\ ;
+剛腹 > goufuku\ ;
+歯石 > shiseki\ ;
+恥丘 > chikyuu\ ;
+落盤 > rakuban\ ;
+全麦 > zenbaku\ ;
+博打 > bakuchi\ ;
+追認 > tsuinin\ ;
+量刑 > ryoukei\ ;
+確定 > kakutei\ ;
+重刻 > juukoku\ ;
+確守 > kakushu\ ;
+追試 > tsuishi\ ;
+出資 > shusshi\ ;
+真贋 > shingan\ ;
+気持 > kimochi\ ;
+平角 > heikaku\ ;
+正確 > seikaku\ ;
+追討 > tsuitou\ ;
+毬栗 > igaguri\ ;
+死病 > shibyou\ ;
+共鳴 > kyoumei\ ;
+反収 > tanshuu\ ;
+忖度 > sontaku\ ;
+帯金 > obigane\ ;
+荘重 > souchou\ ;
+心情 > shinjou\ ;
+匹敵 > hitteki\ ;
+部活 > bukatsu\ ;
+野兎 > nousagi\ ;
+永年 > naganen\ ;
+逆行 > gyakkou\ ;
+迅速 > jinsoku\ ;
+後書 > atogaki\ ;
+前膊 > zenpaku\ ;
+金側 > kingawa\ ;
+心性 > shinsei\ ;
+石版 > sekiban\ ;
+述語 > jutsugo\ ;
+碧山 > hekizan\ ;
+沈吟 > chingin\ ;
+重傷 > juushou\ ;
+前脳 > zen''nou\ ;
+年表 > nenpyou\ ;
+前脚 > maeashi\ ;
+歎称 > tanshou\ ;
+出講 > shukkou\ ;
+刺草 > irakusa\ ;
+千振 > senburi\ ;
+進航 > shinkou\ ;
+心得 > kokoroe\ ;
+恒久 > koukyuu\ ;
+只今 > tadaima\ ;
+反則 > hansoku\ ;
+口供 > koukyou\ ;
+強火 > tsuyobi\ ;
+恋仲 > koinaka\ ;
+前肢 > maeashi\ ;
+死球 > shikyuu\ ;
+助番 > sukeban\ ;
+後日 > gonichi\ ;
+配役 > haiyaku\ ;
+恋人 > koibito\ ;
+市長 > shichou\ ;
+怪力 > kairiki\ ;
+征服 > seifuku\ ;
+母様 > kaasama\ ;
+真諦 > shintei\ ;
+弱点 > jakuten\ ;
+連荘 > renchan\ ;
+円顔 > marugao\ ;
+盲進 > moushin\ ;
+忠孝 > chuukou\ ;
+鳥瞰 > choukan\ ;
+幼虫 > youchuu\ ;
+落球 > rakkyuu\ ;
+巨額 > kyogaku\ ;
+割算 > warizan\ ;
+反共 > hankyou\ ;
+残照 > zanshou\ ;
+北東 > hokutou\ ;
+心底 > shintei\ ;
+逸聞 > itsubun\ ;
+酒席 > shuseki\ ;
+石炭 > sekitan\ ;
+氷山 > hyouzan\ ;
+引率 > insotsu\ ;
+延着 > enchaku\ ;
+氷屋 > kooriya\ ;
+危局 > kikyoku\ ;
+凸角 > tokkaku\ ;
+目送 > mokusou\ ;
+徳性 > tokusei\ ;
+直輸 > chokuyu\ ;
+砕氷 > saihyou\ ;
+真言 > shingon\ ;
+建白 > kenpaku\ ;
+武略 > buryaku\ ;
+性分 > shoubun\ ;
+冗長 > jouchou\ ;
+確報 > kakuhou\ ;
+座職 > zashoku\ ;
+口中 > kouchuu\ ;
+眞言 > shingon\ ;
+冷酷 > reikoku\ ;
+殴殺 > ousatsu\ ;
+入魂 > nyuukon\ ;
+志学 > shigaku\ ;
+往日 > oujitsu\ ;
+求婚 > kyuukon\ ;
+反側 > hansoku\ ;
+延発 > enpatsu\ ;
+真西 > manishi\ ;
+弓状 > kyuujou\ ;
+醜名 > shuumei\ ;
+民心 > minshin\ ;
+権高 > kendaka\ ;
+民徳 > mintoku\ ;
+反俗 > hanzoku\ ;
+決勝 > kesshou\ ;
+内陸 > nairiku\ ;
+直路 > chokuro\ ;
+適確 > tekkaku\ ;
+茶釜 > chagama\ ;
+通航 > tsuukou\ ;
+辛酸 > shinsan\ ;
+希釈 > kishaku\ ;
+凶行 > kyoukou\ ;
+毎朝 > maichou\ ;
+白鯨 > hakugei\ ;
+半弓 > hankyuu\ ;
+初荷 > hatsuni\ ;
+北支 > hokushi\ ;
+内閲 > naietsu\ ;
+内閣 > naikaku\ ;
+配属 > haizoku\ ;
+蔵匿 > zoutoku\ ;
+師走 > shiwasu\ ;
+沈倫 > chinrin\ ;
+彰明 > shoumei\ ;
+酒客 > shukaku\ ;
+比日 > hinichi\ ;
+原告 > genkoku\ ;
+白魚 > shirauo\ ;
+半年 > han''nen\ ;
+前納 > zen''nou\ ;
+運筆 > unpitsu\ ;
+鷹匠 > takajou\ ;
+歴然 > rekizen\ ;
+公領 > kouryou\ ;
+近親 > kinshin\ ;
+急使 > kyuushi\ ;
+剽盗 > hyoutou\ ;
+幼若 > youjaku\ ;
+全額 > zengaku\ ;
+標高 > hyoukou\ ;
+即売 > sokubai\ ;
+千度 > chitabi\ ;
+強気 > tsuyoki\ ;
+庁舎 > chousha\ ;
+劇界 > gekikai\ ;
+千年 > chitose\ ;
+劇甚 > gekijin\ ;
+横顔 > yokogao\ ;
+勧業 > kangyou\ ;
+凝視 > gyoushi\ ;
+刺繍 > shishuu\ ;
+瞠目 > doumoku\ ;
+再録 > sairoku\ ;
+真虫 > mamushi\ ;
+鳥獣 > choujuu\ ;
+徹宵 > tesshou\ ;
+卑屈 > hikutsu\ ;
+加熱 > kanetsu\ ;
+再鋳 > saichuu\ ;
+氷塊 > hyoukai\ ;
+卒寿 > sotsuju\ ;
+強欲 > gouyoku\ ;
+協定 > kyoutei\ ;
+兵長 > heichou\ ;
+酌婦 > shakufu\ ;
+砲撃 > hougeki\ ;
+気密 > kimitsu\ ;
+選球 > senkyuu\ ;
+原則 > gensoku\ ;
+共闘 > kyoutou\ ;
+直諫 > chokkan\ ;
+発馬 > hatsuba\ ;
+刺絡 > shiraku\ ;
+全集 > zenshuu\ ;
+卓子 > teiburu\ ;
+直諌 > chokkan\ ;
+直談 > jikidan\ ;
+入電 > nyuuden\ ;
+前章 > zenshou\ ;
+石段 > ishidan\ ;
+武烈 > buretsu\ ;
+直話 > chokuwa\ ;
+磁力 > jiryoku\ ;
+水垢 > mizuaka\ ;
+平臼 > hirausu\ ;
+役所 > yakusho\ ;
+適用 > tekiyou\ ;
+連続 > renzoku\ ;
+強権 > kyouken\ ;
+卵嚢 > ran''nou\ ;
+氏寺 > ujidera\ ;
+入隊 > nyuutai\ ;
+心外 > shingai\ ;
+半宵 > hanshou\ ;
+連絡 > renraku\ ;
+制約 > seiyaku\ ;
+瞑目 > meimoku\ ;
+力点 > rikiten\ ;
+水圧 > suiatsu\ ;
+幻聴 > genchou\ ;
+矯正 > kyousei\ ;
+標題 > hyoudai\ ;
+氷嚢 > hyounou\ ;
+念力 > nenriki\ ;
+直観 > chokkan\ ;
+博奕 > bakuchi\ ;
+直覧 > jikiran\ ;
+千尋 > chihiro\ ;
+全長 > zenchou\ ;
+博大 > hakudai\ ;
+落涙 > rakurui\ ;
+内金 > uchikin\ ;
+登頂 > touchou\ ;
+盗賊 > touzoku\ ;
+博士 > hakushi\ ;
+皇陵 > kouryou\ ;
+発音 > hatsuon\ ;
+入門 > nyuumon\ ;
+毒手 > dokushu\ ;
+石橋 > sekkyou\ ;
+真菌 > shinkin\ ;
+白面 > hakumen\ ;
+徹夜 > tetsuya\ ;
+石槨 > sekkaku\ ;
+快勝 > kaishou\ ;
+切腹 > seppuku\ ;
+忠君 > chuukun\ ;
+蔵人 > kuroudo\ ;
+凶荒 > kyoukou\ ;
+年老 > toshioi\ ;
+苔類 > kokerui\ ;
+発露 > hatsuro\ ;
+兇類 > kyourui\ ;
+途絶 > tozetsu\ ;
+直行 > chokkou\ ;
+力漕 > rikisou\ ;
+占地 > shimeji\ ;
+心地 > kokochi\ ;
+先頃 > senkoro\ ;
+死毒 > shidoku\ ;
+府立 > furitsu\ ;
+師表 > shihyou\ ;
+原作 > gensaku\ ;
+印哲 > intetsu\ ;
+冷評 > reihyou\ ;
+心因 > shin''in\ ;
+出航 > shukkou\ ;
+速算 > sokusan\ ;
+厄前 > yakumae\ ;
+残業 > zangyou\ ;
+荒行 > aragyou\ ;
+内通 > naitsuu\ ;
+勝景 > shoukei\ ;
+瞭然 > ryouzen\ ;
+従属 > juuzoku\ ;
+弦楽 > gengaku\ ;
+劃然 > kakuzen\ ;
+即吟 > sokugin\ ;
+千姫 > senhime\ ;
+忠勤 > chuukin\ ;
+忠勇 > chuuyuu\ ;
+冷覚 > reikaku\ ;
+通算 > tsuusan\ ;
+逆縁 > gyakuen\ ;
+初級 > shokyuu\ ;
+毒性 > dokusei\ ;
+巡遊 > jun''yuu\ ;
+従容 > shouyou\ ;
+南国 > nangoku\ ;
+強暴 > kyoubou\ ;
+幕舎 > bakusha\ ;
+氷原 > hyougen\ ;
+平織 > hiraori\ ;
+応力 > ouryoku\ ;
+勝敗 > shouhai\ ;
+求刑 > kyuukei\ ;
+巻貝 > makigai\ ;
+式次 > shikiji\ ;
+石板 > sekiban\ ;
+写象 > shashou\ ;
+残柱 > zanchuu\ ;
+石材 > sekizai\ ;
+後宮 > koukyuu\ ;
+邦楽 > hougaku\ ;
+剣玉 > kendama\ ;
+北嶺 > hokurei\ ;
+年給 > nenkyuu\ ;
+全量 > zenryou\ ;
+後学 > kougaku\ ;
+還流 > kanryuu\ ;
+即刻 > sokkoku\ ;
+凶聞 > kyoubun\ ;
+民国 > minkoku\ ;
+入金 > nyuukin\ ;
+剛球 > goukyuu\ ;
+半国 > hangoku\ ;
+永別 > eibetsu\ ;
+酷使 > kokushi\ ;
+快作 > kaisaku\ ;
+印刷 > insatsu\ ;
+追納 > tsuinou\ ;
+氷刃 > hyoujin\ ;
+六道 > rokudou\ ;
+北岸 > hokugan\ ;
+前生 > zenshou\ ;
+送籍 > souseki\ ;
+別称 > besshou\ ;
+庭番 > niwaban\ ;
+農薬 > nouyaku\ ;
+近臣 > kinshin\ ;
+遊猟 > yuuryou\ ;
+登録 > touroku\ ;
+占卜 > senboku\ ;
+葉月 > hadzuki\ ;
+巨賊 > kyozoku\ ;
+華燭 > kashoku\ ;
+当惑 > touwaku\ ;
+彫工 > choukou\ ;
+分納 > bun''nou\ ;
+初穂 > hatsuho\ ;
+必勝 > hisshou\ ;
+白銑 > hakusen\ ;
+全速 > zensoku\ ;
+入選 > nyuusen\ ;
+全通 > zentsuu\ ;
+白銅 > hakudou\ ;
+白銀 > hakugin\ ;
+入道 > nyuudou\ ;
+邪曲 > jakyoku\ ;
+卜占 > bokusen\ ;
+工賃 > kouchin\ ;
+氷像 > hyouzou\ ;
+遊牧 > yuuboku\ ;
+週番 > shuuban\ ;
+心労 > shinrou\ ;
+初秋 > shoshuu\ ;
+幾程 > ikuhodo\ ;
+残敵 > zanteki\ ;
+通研 > tsuuken\ ;
+協同 > kyoudou\ ;
+平等 > byoudou\ ;
+過熱 > kanetsu\ ;
+即値 > sokuchi\ ;
+通知 > tsuuchi\ ;
+療養 > ryouyou\ ;
+年端 > toshiha\ ;
+庭球 > teikyuu\ ;
+殉教 > junkyou\ ;
+歌沢 > utazawa\ ;
+勁敵 > keiteki\ ;
+再調 > saichou\ ;
+凝脂 > gyoushi\ ;
+再読 > saidoku\ ;
+求人 > kyuujin\ ;
+功業 > kougyou\ ;
+色黒 > iroguro\ ;
+南北 > nanboku\ ;
+博労 > bakurou\ ;
+破局 > hakyoku\ ;
+単勝 > tanshou\ ;
+正業 > seigyou\ ;
+帯芯 > obishin\ ;
+半周 > hanshuu\ ;
+遡源 > sakugen\ ;
+全身 > zenshin\ ;
+毒害 > dokugai\ ;
+内謁 > naietsu\ ;
+内諾 > naidaku\ ;
+幸福 > koufuku\ ;
+勤恪 > kinkaku\ ;
+出精 > shussei\ ;
+復命 > fukumei\ ;
+若造 > wakazou\ ;
+庚申 > koushin\ ;
+直航 > chokkou\ ;
+店番 > miseban\ ;
+魍魎 > mouryou\ ;
+光量 > kouryou\ ;
+廓清 > kakusei\ ;
+適法 > tekihou\ ;
+優長 > yuuchou\ ;
+忙中 > bouchuu\ ;
+卑劣 > hiretsu\ ;
+利発 > rihatsu\ ;
+復号 > fukugou\ ;
+心像 > shinzou\ ;
+連用 > ren''you\ ;
+気力 > kiryoku\ ;
+氷人 > hyoujin\ ;
+段平 > danbira\ ;
+共販 > kyouhan\ ;
+内証 > naishou\ ;
+内診 > naishin\ ;
+削片 > sakuhen\ ;
+正格 > seikaku\ ;
+強慾 > gouyoku\ ;
+復原 > fukugen\ ;
+発進 > hasshin\ ;
+弔文 > choubun\ ;
+北天 > hokuten\ ;
+北大 > hokudai\ ;
+元金 > motokin\ ;
+内角 > naikaku\ ;
+若輩 > jakuhai\ ;
+益虫 > ekichuu\ ;
+徳利 > tokkuri\ ;
+勁捷 > keishou\ ;
+必修 > hisshuu\ ;
+盲腸 > mouchou\ ;
+徳分 > tokubun\ ;
+蒸器 > mushiki\ ;
+微力 > biryoku\ ;
+匿名 > tokumei\ ;
+庵点 > ioriten\ ;
+延棒 > nobebou\ ;
+常習 > joushuu\ ;
+制球 > seikyuu\ ;
+分秒 > funbyou\ ;
+歓楽 > kanraku\ ;
+水中 > suichuu\ ;
+部局 > bukyoku\ ;
+凍肉 > touniku\ ;
+通用 > tsuuyou\ ;
+草色 > kusairo\ ;
+北境 > hokkyou\ ;
+魂魄 > konpaku\ ;
+徴兵 > chouhei\ ;
+配信 > haishin\ ;
+逗留 > touryuu\ ;
+適正 > tekisei\ ;
+正朝 > seichou\ ;
+正朔 > seisaku\ ;
+全豹 > zenpyou\ ;
+凄腕 > sugoude\ ;
+正服 > seifuku\ ;
+協働 > kyoudou\ ;
+光速 > kousoku\ ;
+勘忍 > kan''nin\ ;
+先進 > senshin\ ;
+先週 > senshuu\ ;
+入貢 > nyuukou\ ;
+酒代 > sakadai\ ;
+白身 > shiromi\ ;
+巫術 > fujutsu\ ;
+速球 > sokkyuu\ ;
+返納 > hen''nou\ ;
+復刻 > fukkoku\ ;
+共謀 > kyoubou\ ;
+軽震 > keishin\ ;
+荒肝 > aragimo\ ;
+出穂 > shussui\ ;
+引換 > hikikae\ ;
+輻輳 > fukusou\ ;
+欲求 > yokkyuu\ ;
+延板 > nobeita\ ;
+真空 > shinkuu\ ;
+眼目 > ganmoku\ ;
+引接 > insetsu\ ;
+色魔 > shikima\ ;
+必中 > hitchuu\ ;
+輪郭 > rinkaku\ ;
+単作 > tansaku\ ;
+省線 > shousen\ ;
+徴候 > choukou\ ;
+弾幕 > danmaku\ ;
+年益 > nen''eki\ ;
+復党 > fukutou\ ;
+光軸 > koujiku\ ;
+廿日 > hatsuka\ ;
+弱志 > jakushi\ ;
+北国 > hokkoku\ ;
+強弓 > goukyuu\ ;
+復元 > fukugen\ ;
+強弁 > kyouben\ ;
+還暦 > kanreki\ ;
+励振 > reishin\ ;
+辞色 > jishoku\ ;
+出社 > shussha\ ;
+草肥 > kusagoe\ ;
+利率 > riritsu\ ;
+発足 > hossoku\ ;
+公評 > kouhyou\ ;
+正教 > seikyou\ ;
+公証 > koushou\ ;
+十六 > juuroku\ ;
+別珍 > betchin\ ;
+協会 > kyoukai\ ;
+先蹴 > senshuu\ ;
+区別 > kubetsu\ ;
+千億 > sen''oku\ ;
+気位 > kigurai\ ;
+弱弟 > jakutei\ ;
+共襟 > tomoeri\ ;
+眼病 > ganbyou\ ;
+六角 > rokkaku\ ;
+卒伍 > sotsugo\ ;
+民俗 > minzoku\ ;
+殯宮 > hinkyuu\ ;
+研学 > kengaku\ ;
+残念 > zan''nen\ ;
+荷積 > nidzumi\ ;
+南中 > nanchuu\ ;
+冷肉 > reiniku\ ;
+落手 > rakushu\ ;
+相続 > souzoku\ ;
+残忍 > zan''nin\ ;
+気付 > kidzuke\ ;
+入試 > nyuushi\ ;
+残心 > zanshin\ ;
+創業 > sougyou\ ;
+凡策 > bonsaku\ ;
+勉強 > benkyou\ ;
+共裏 > tomoura\ ;
+後厄 > atoyaku\ ;
+落成 > rakusei\ ;
+全角 > zenkaku\ ;
+弱年 > jakunen\ ;
+勧学 > kangaku\ ;
+半作 > hansaku\ ;
+得分 > tokubun\ ;
+載録 > sairoku\ ;
+庶流 > shoryuu\ ;
+歴戦 > rekisen\ ;
+川蝦 > kawaebi\ ;
+歌曲 > kakyoku\ ;
+待合 > machiai\ ;
+帰結 > kiketsu\ ;
+石庭 > sekitei\ ;
+卒中 > sotchuu\ ;
+卓上 > takujou\ ;
+削減 > sakugen\ ;
+充足 > juusoku\ ;
+半休 > hankyuu\ ;
+茶腹 > chabara\ ;
+免責 > menseki\ ;
+匹儔 > hitchuu\ ;
+適格 > tekkaku\ ;
+荒縄 > aranawa\ ;
+僻隅 > hekiguu\ ;
+劇暑 > gekisho\ ;
+直経 > chokkei\ ;
+目縁 > mabuchi\ ;
+僻陬 > hekisuu\ ;
+遍歴 > henreki\ ;
+帯紙 > obigami\ ;
+広狭 > koukyou\ ;
+刺激 > shigeki\ ;
+干瓢 > kanpyou\ ;
+鄙劣 > hiretsu\ ;
+辞職 > jishoku\ ;
+償金 > shoukin\ ;
+氏人 > ujihito\ ;
+直系 > chokkei\ ;
+盗聴 > touchou\ ;
+公表 > kouhyou\ ;
+知徳 > chitoku\ ;
+遊歴 > yuureki\ ;
+公衆 > koushuu\ ;
+先負 > senmake\ ;
+知得 > chitoku\ ;
+眼球 > gankyuu\ ;
+帽章 > boushou\ ;
+近称 > kinshou\ ;
+復仇 > fukkyuu\ ;
+発議 > hatsugi\ ;
+出監 > shukkan\ ;
+送球 > soukyuu\ ;
+良風 > ryoufuu\ ;
+分留 > bunryuu\ ;
+勘審 > kanshin\ ;
+適材 > tekizai\ ;
+邀撃 > yougeki\ ;
+連濁 > rendaku\ ;
+歿後 > botsugo\ ;
+真相 > shinsou\ ;
+真直 > massugu\ ;
+役名 > yakumei\ ;
+従僕 > juuboku\ ;
+道楽 > douraku\ ;
+瞬断 > shundan\ ;
+発語 > hatsugo\ ;
+勧奨 > kanshou\ ;
+力投 > rikitou\ ;
+刑獄 > keigoku\ ;
+百計 > hyakkei\ ;
+償還 > shoukan\ ;
+千両 > senryou\ ;
+後先 > atosaki\ ;
+十九 > juukyuu\ ;
+発話 > hatsuwa\ ;
+較量 > kouryou\ ;
+北半 > hokuhan\ ;
+廃業 > haigyou\ ;
+発註 > hatchuu\ ;
+十両 > juuryou\ ;
+力戦 > rikisen\ ;
+十七 > juunana\ ;
+十一 > juuichi\ ;
+引当 > hikiate\ ;
+逸民 > itsumin\ ;
+律儀 > richigi\ ;
+前歴 > zenreki\ ;
+副本 > fukuhon\ ;
+艱難 > kan''nan\ ;
+式微 > shikibi\ ;
+遊楽 > yuuraku\ ;
+軽量 > keiryou\ ;
+軽重 > keichou\ ;
+目算 > mokusan\ ;
+副書 > fukusho\ ;
+出産 > shussan\ ;
+出生 > shussei\ ;
+発覚 > hakkaku\ ;
+進水 > shinsui\ ;
+欲望 > yokubou\ ;
+勇将 > yuushou\ ;
+盟約 > meiyaku\ ;
+相称 > soushou\ ;
+彼処 > kashiko\ ;
+矮小 > waishou\ ;
+睫毛 > matsuge\ ;
+邸宅 > teitaku\ ;
+短小 > tanshou\ ;
+目端 > mehashi\ ;
+勉学 > bengaku\ ;
+鯨肉 > geiniku\ ;
+茉莉 > matsuri\ ;
+優越 > yuuetsu\ ;
+百行 > hyakkou\ ;
+近眼 > chikame\ ;
+菌毒 > kindoku\ ;
+歴年 > rekinen\ ;
+弓師 > yumishi\ ;
+光覚 > koukaku\ ;
+先覚 > senkaku\ ;
+後作 > atosaku\ ;
+巨舶 > kyohaku\ ;
+底流 > teiryuu\ ;
+近目 > chikame\ ;
+発表 > happyou\ ;
+選択 > sentaku\ ;
+欠格 > kekkaku\ ;
+共著 > kyoucho\ ;
+広漠 > koubaku\ ;
+草笛 > kusabue\ ;
+勝報 > shouhou\ ;
+初潮 > shochou\ ;
+助平 > sukebei\ ;
+強大 > kyoudai\ ;
+輪読 > rindoku\ ;
+知将 > chishou\ ;
+内膜 > naimaku\ ;
+強壮 > kyousou\ ;
+役僧 > yakusou\ ;
+劇戦 > gekisen\ ;
+毒刃 > dokujin\ ;
+白蝋 > hakurou\ ;
+帆綱 > hodzuna\ ;
+軍長 > gunchou\ ;
+力役 > rikieki\ ;
+冷笑 > reishou\ ;
+茶粥 > chagayu\ ;
+廻心 > kaishin\ ;
+看病 > kanbyou\ ;
+目礼 > mokurei\ ;
+輸血 > yuketsu\ ;
+勝地 > shouchi\ ;
+初湯 > hatsuyu\ ;
+兇行 > kyoukou\ ;
+凶猛 > kyoumou\ ;
+艦長 > kanchou\ ;
+凍石 > touseki\ ;
+制欲 > seiyoku\ ;
+形勝 > keishou\ ;
+出版 > shuppan\ ;
+弟嫁 > otoyome\ ;
+凶状 > kyoujou\ ;
+樺色 > kabairo\ ;
+退潮 > taichou\ ;
+砂地 > sunachi\ ;
+道教 > doukyou\ ;
+過日 > kajitsu\ ;
+郷党 > kyoutou\ ;
+転針 > tenshin\ ;
+茶箱 > chabako\ ;
+帰着 > kichaku\ ;
+適所 > tekisho\ ;
+僻邑 > hekiyuu\ ;
+歎息 > tansoku\ ;
+苛虐 > kagyaku\ ;
+写経 > shakyou\ ;
+歓心 > kanshin\ ;
+彫像 > chouzou\ ;
+石塔 > sekitou\ ;
+返球 > henkyuu\ ;
+石塀 > ishibei\ ;
+弟姫 > otohime\ ;
+利殖 > rishoku\ ;
+役人 > yakunin\ ;
+帯皮 > obikawa\ ;
+辱知 > jokuchi\ ;
+勧告 > kankoku\ ;
+盲目 > moumoku\ ;
+痛風 > tsuufuu\ ;
+逸材 > itsuzai\ ;
+出炭 > shuttan\ ;
+弱国 > jakkoku\ ;
+幹流 > kanryuu\ ;
+歯学 > shigaku\ ;
+干渉 > kanshou\ ;
+荷物 > nimotsu\ ;
+北上 > hokujou\ ;
+副手 > fukushu\ ;
+剽悍 > hyoukan\ ;
+色里 > irozato\ ;
+転進 > tenshin\ ;
+盤石 > banjaku\ ;
+農相 > noushou\ ;
+遊撃 > yuugeki\ ;
+入船 > nyuusen\ ;
+分溜 > bunryuu\ ;
+入舎 > nyuusha\ ;
+逐次 > chikuji\ ;
+辺疆 > henkyou\ ;
+前方 > maekata\ ;
+白菜 > hakusai\ ;
+割愛 > katsuai\ ;
+適性 > tekisei\ ;
+監督 > kantoku\ ;
+躁鬱 > souutsu\ ;
+研削 > kensaku\ ;
+楽隊 > gakutai\ ;
+正客 > seikaku\ ;
+殉国 > junkoku\ ;
+全能 > zen''nou\ ;
+逆比 > gyakuhi\ ;
+冥福 > meifuku\ ;
+睦月 > mutsuki\ ;
+逸文 > itsubun\ ;
+刻本 > kokuhon\ ;
+正子 > shoushi\ ;
+幽欝 > yuuutsu\ ;
+殺傷 > sasshou\ ;
+内約 > naiyaku\ ;
+強味 > tsuyomi\ ;
+剣戟 > kengeki\ ;
+返照 > henshou\ ;
+艇長 > teichou\ ;
+適当 > tekitou\ ;
+転身 > tenshin\ ;
+分流 > bunryuu\ ;
+権能 > ken''nou\ ;
+凶漢 > kyoukan\ ;
+正嫡 > seiteki\ ;
+欲情 > yokujou\ ;
+座敷 > zashiki\ ;
+楼閣 > roukaku\ ;
+分注 > bunchuu\ ;
+包丁 > houchou\ ;
+制服 > seifuku\ ;
+発芽 > hatsuga\ ;
+進数 > shinsuu\ ;
+出港 > shukkou\ ;
+百般 > hyappan\ ;
+出渠 > shukkyo\ ;
+進攻 > shinkou\ ;
+落城 > rakujou\ ;
+割当 > wariate\ ;
+欲念 > yokunen\ ;
+樟脳 > shounou\ ;
+近火 > chikabi\ ;
+別格 > bekkaku\ ;
+疾風 > shippuu\ ;
+落地 > rakuchi\ ;
+共編 > kyouhen\ ;
+此奴 > koyatsu\ ;
+強勢 > kyousei\ ;
+盗癖 > touheki\ ;
+船長 > senchou\ ;
+研修 > kenshuu\ ;
+刷新 > sasshin\ ;
+殿中 > denchuu\ ;
+強力 > gouriki\ ;
+序曲 > jokyoku\ ;
+床板 > yukaita\ ;
+通有 > tsuuyuu\ ;
+剛愎 > goufuku\ ;
+兵糧 > hyourou\ ;
+遷客 > senkaku\ ;
+強剛 > kyougou\ ;
+盆石 > bonseki\ ;
+欣悦 > kinetsu\ ;
+強制 > kyousei\ ;
+兵粮 > hyourou\ ;
+道心 > doushin\ ;
+典籍 > tenseki\ ;
+道徳 > doutoku\ ;
+病難 > byounan\ ;
+力士 > rikishi\ ;
+車輛 > sharyou\ ;
+車輌 > sharyou\ ;
+兵籍 > heiseki\ ;
+劃定 > kakutei\ ;
+速断 > sokudan\ ;
+車軸 > shajiku\ ;
+内積 > naiseki\ ;
+透析 > touseki\ ;
+冠省 > kanshou\ ;
+剣形 > kengata\ ;
+荒物 > aramono\ ;
+盲爆 > moubaku\ ;
+僻論 > hekiron\ ;
+強兵 > kyouhei\ ;
+公約 > kouyaku\ ;
+段丘 > dankyuu\ ;
+農牧 > nouboku\ ;
+入綿 > irewata\ ;
+横線 > yokosen\ ;
+白羽 > shiraha\ ;
+峻険 > shunken\ ;
+巫祝 > fushuku\ ;
+軸装 > jikusou\ ;
+監獄 > kangoku\ ;
+別時 > betsuji\ ;
+弔問 > choumon\ ;
+勅勘 > chokkan\ ;
+全級 > zenkyuu\ ;
+内福 > naifuku\ ;
+写真 > shashin\ ;
+全納 > zen''nou\ ;
+凝滞 > gyoutai\ ;
+道床 > doushou\ ;
+殊勝 > shushou\ ;
+軍足 > gunsoku\ ;
+高額 > kougaku\ ;
+僻言 > hekigen\ ;
+剣幕 > kenmaku\ ;
+凶歳 > kyousai\ ;
+剛強 > goukyou\ ;
+分業 > bungyou\ ;
+真正 > shinsei\ ;
+転調 > tenchou\ ;
+歌姫 > utahime\ ;
+遠山 > tooyama\ ;
+横糸 > yokoito\ ;
+次式 > jishiki\ ;
+強健 > kyouken\ ;
+遊弋 > yuuyoku\ ;
+遺失 > ishitsu\ ;
+選奨 > senshou\ ;
+僻見 > hekiken\ ;
+花葵 > hanaaoi\ ;
+落命 > rakumei\ ;
+遊廓 > yuukaku\ ;
+軟調 > nanchou\ ;
+樹立 > juritsu\ ;
+魔術 > majutsu\ ;
+凡流 > bonryuu\ ;
+市町 > shichou\ ;
+舌音 > zetsuon\ ;
+初日 > hatsuhi\ ;
+引受 > hikiuke\ ;
+劇変 > gekihen\ ;
+建国 > kenkoku\ ;
+短冊 > tanzaku\ ;
+石像 > sekizou\ ;
+督戦 > tokusen\ ;
+刺戟 > shigeki\ ;
+眺望 > choubou\ ;
+劇壇 > gekidan\ ;
+近況 > kinkyou\ ;
+欠席 > kesseki\ ;
+巨石 > kyoseki\ ;
+前徴 > zenchou\ ;
+歴史 > rekishi\ ;
+白線 > hakusen\ ;
+平服 > heifuku\ ;
+転覆 > tenpuku\ ;
+機略 > kiryaku\ ;
+劇場 > gekijou\ ;
+身近 > midjika\ ;
+優良 > yuuryou\ ;
+逆旅 > gekiryo\ ;
+身辺 > shinpen\ ;
+分析 > bunseki\ ;
+弱体 > jakutai\ ;
+出棺 > shukkan\ ;
+白紙 > hakushi\ ;
+党籍 > touseki\ ;
+横笛 > yokobue\ ;
+発給 > hakkyuu\ ;
+軽薄 > keihaku\ ;
+引力 > inryoku\ ;
+内相 > naishou\ ;
+公称 > koushou\ ;
+円盆 > marubon\ ;
+著作 > chosaku\ ;
+痩身 > soushin\ ;
+花色 > hanairo\ ;
+速成 > sokusei\ ;
+高閣 > koukaku\ ;
+左直 > sachoku\ ;
+前年 > zen''nen\ ;
+送料 > souryou\ ;
+鱗木 > rinboku\ ;
+白粉 > oshiroi\ ;
+内的 > naiteki\ ;
+苦節 > kusetsu\ ;
+白米 > hakumai\ ;
+短信 > tanshin\ ;
+華実 > kajitsu\ ;
+横穴 > yokoana\ ;
+興隆 > kouryuu\ ;
+極道 > gokudou\ ;
+良計 > ryoukei\ ;
+眷族 > kenzoku\ ;
+道学 > dougaku\ ;
+側面 > sokumen\ ;
+出校 > shukkou\ ;
+幣束 > heisoku\ ;
+助勢 > sukezei\ ;
+功名 > koumyou\ ;
+艇身 > teishin\ ;
+過密 > kamitsu\ ;
+劇団 > gekidan\ ;
+努力 > doryoku\ ;
+庭師 > niwashi\ ;
+石亭 > sekitei\ ;
+骨骼 > kokkaku\ ;
+助力 > joryoku\ ;
+廟堂 > byoudou\ ;
+追放 > tsuihou\ ;
+峡間 > kyoukan\ ;
+荒涼 > kouryou\ ;
+死傷 > shishou\ ;
+遊客 > yuukaku\ ;
+入社 > nyuusha\ ;
+橋畔 > kyouhan\ ;
+遊学 > yuugaku\ ;
+歳入 > sainyuu\ ;
+内申 > naishin\ ;
+鳩合 > kyuugou\ ;
+欠字 > ketsuji\ ;
+正北 > seihoku\ ;
+傷跡 > kizuato\ ;
+武力 > buryoku\ ;
+適地 > tekichi\ ;
+功力 > kouriki\ ;
+荒波 > aranami\ ;
+近業 > kingyou\ ;
+真書 > shinsho\ ;
+舶載 > hakusai\ ;
+庵室 > anjitsu\ ;
+凶暴 > kyoubou\ ;
+共益 > kyoueki\ ;
+正副 > seifuku\ ;
+通性 > tsuusei\ ;
+正則 > seisoku\ ;
+前審 > zenshin\ ;
+鬱血 > ukketsu\ ;
+兼用 > ken''you\ ;
+労作 > rousaku\ ;
+通念 > tsuunen\ ;
+凋残 > chouzan\ ;
+冷涼 > reiryou\ ;
+軽舟 > keishuu\ ;
+落体 > rakutai\ ;
+的確 > tekkaku\ ;
+連年 > ren''nen\ ;
+切換 > kirikae\ ;
+痕跡 > konseki\ ;
+干拓 > kantaku\ ;
+死人 > shibito\ ;
+公的 > kouteki\ ;
+建前 > tatemae\ ;
+切掛 > kikkake\ ;
+進展 > shinten\ ;
+欠如 > ketsujo\ ;
+骨頂 > kotchou\ ;
+横着 > ouchaku\ ;
+分掌 > bunshou\ ;
+弁償 > benshou\ ;
+刑戮 > keiriku\ ;
+通弊 > tsuuhei\ ;
+発祥 > hasshou\ ;
+通弁 > tsuuben\ ;
+歴伝 > rekiden\ ;
+幽愁 > yuushuu\ ;
+落人 > ochuudo\ ;
+入監 > nyuukan\ ;
+死中 > shichuu\ ;
+歴任 > rekinin\ ;
+別後 > betsugo\ ;
+歴代 > rekidai\ ;
+歴仕 > rekishi\ ;
+共用 > kyouyou\ ;
+極貧 > gokuhin\ ;
+共産 > kyousan\ ;
+共生 > kyousei\ ;
+権益 > ken''eki\ ;
+幻惑 > genwaku\ ;
+転落 > tenraku\ ;
+幕政 > bakusei\ ;
+県有 > ken''yuu\ ;
+追懐 > tsuikai\ ;
+魚腹 > gyofuku\ ;
+通常 > tsuujou\ ;
+追憶 > tsuioku\ ;
+盛況 > seikyou\ ;
+初心 > shoshin\ ;
+躊躇 > chuucho\ ;
+川獺 > kawauso\ ;
+鬼蓮 > onibasu\ ;
+真摯 > shinshi\ ;
+皆目 > kaimoku\ ;
+白砂 > hakusha\ ;
+通巻 > tsuukan\ ;
+歴世 > rekishi\ ;
+概評 > gaihyou\ ;
+弋人 > yokujin\ ;
+航跡 > kouseki\ ;
+凝望 > gyoubou\ ;
+傾角 > keikaku\ ;
+典獄 > tengoku\ ;
+鯛焼 > taiyaki\ ;
+適合 > tekigou\ ;
+劇剤 > gekizai\ ;
+別席 > besseki\ ;
+元禄 > genroku\ ;
+追想 > tsuisou\ ;
+傾覆 > keifuku\ ;
+魚肉 > gyoniku\ ;
+追悼 > tsuitou\ ;
+入用 > nyuuyou\ ;
+白眼 > hakugan\ ;
+高進 > koushin\ ;
+荒業 > arawaza\ ;
+痛論 > tsuuron\ ;
+刺子 > sashiko\ ;
+正体 > shoutai\ ;
+逆徒 > gyakuto\ ;
+高速 > kousoku\ ;
+山麓 > sanroku\ ;
+幼弱 > youjaku\ ;
+迎春 > geishun\ ;
+白目 > shirome\ ;
+列強 > rekkyou\ ;
+農業 > nougyou\ ;
+切愛 > setsuai\ ;
+候鳥 > kouchou\ ;
+還俗 > genzoku\ ;
+速射 > sokusha\ ;
+迷惑 > meiwaku\ ;
+広州 > koushuu\ ;
+逼塞 > hissoku\ ;
+平復 > heifuku\ ;
+白癬 > hakusen\ ;
+痛言 > tsuugen\ ;
+初巳 > hatsumi\ ;
+疾走 > shissou\ ;
+列座 > retsuza\ ;
+着座 > chakuza\ ;
+共犯 > kyouhan\ ;
+茶殻 > chagara\ ;
+追従 > tsuijuu\ ;
+正中 > seichuu\ ;
+躬行 > kyuukou\ ;
+白痴 > hakuchi\ ;
+凶手 > kyoushu\ ;
+市況 > shikyou\ ;
+列席 > resseki\ ;
+帝業 > teigyou\ ;
+前垂 > maedare\ ;
+眩惑 > genwaku\ ;
+念々 > nen''nen\ ;
+着工 > chakkou\ ;
+割勘 > warikan\ ;
+退庁 > taichou\ ;
+発疹 > hosshin\ ;
+年年 > nen''nen\ ;
+鳥人 > choujin\ ;
+迎撃 > geigeki\ ;
+進塁 > shinrui\ ;
+剣呑 > ken''non\ ;
+冒涜 > boutoku\ ;
+検鏡 > kenkyou\ ;
+先皇 > sen''nou\ ;
+退席 > taiseki\ ;
+別宴 > betsuen\ ;
+週報 > shuuhou\ ;
+割前 > warimae\ ;
+円滑 > enkotsu\ ;
+別宅 > bettaku\ ;
+免疫 > men''eki\ ;
+盛業 > seigyou\ ;
+岡陵 > kouryou\ ;
+割判 > warihan\ ;
+軸線 > jikusen\ ;
+高足 > kousoku\ ;
+優秀 > yuushuu\ ;
+側辺 > sokuhen\ ;
+欠員 > ketsuin\ ;
+棒鱈 > boudara\ ;
+入物 > iremono\ ;
+入牢 > nyuurou\ ;
+真情 > shinjou\ ;
+選任 > sen''nin\ ;
+凶悪 > kyouaku\ ;
+初審 > shoshin\ ;
+番長 > banchou\ ;
+幼少 > youshou\ ;
+草木 > soumoku\ ;
+再注 > saichuu\ ;
+目星 > meboshi\ ;
+真性 > shinsei\ ;
+幽寂 > yuujaku\ ;
+創傷 > soushou\ ;
+側車 > sokusha\ ;
+全焼 > zenshou\ ;
+初子 > hatsugo\ ;
+僚艦 > ryoukan\ ;
+出征 > shussei\ ;
+幽客 > yuukaku\ ;
+分巻 > bunmaki\ ;
+通好 > tsuukou\ ;
+興趣 > kyoushu\ ;
+剣劇 > kengeki\ ;
+癩病 > raibyou\ ;
+通奏 > tsuusou\ ;
+疣足 > iboashi\ ;
+良能 > ryounou\ ;
+載積 > saiseki\ ;
+茶棚 > chadana\ ;
+幼子 > osanago\ ;
+適例 > tekirei\ ;
+検針 > kenshin\ ;
+出廷 > shuttei\ ;
+前哨 > zenshou\ ;
+崩落 > houraku\ ;
+真影 > shin''ei\ ;
+年少 > nenshou\ ;
+幣帛 > heihaku\ ;
+凶弾 > kyoudan\ ;
+速報 > sokuhou\ ;
+甲高 > koudaka\ ;
+白状 > hakujou\ ;
+適任 > tekinin\ ;
+制圧 > seiatsu\ ;
+剛力 > gouriki\ ;
+疾視 > shisshi\ ;
+苦熱 > kunetsu\ ;
+発狂 > hakkyou\ ;
+創作 > sousaku\ ;
+檄文 > gekibun\ ;
+内池 > uchiike\ ;
+目撥 > mebachi\ ;
+偏針 > henshin\ ;
+退学 > taigaku\ ;
+偏重 > henchou\ ;
+年子 > toshigo\ ;
+通報 > tsuuhou\ ;
+傍証 > boushou\ ;
+傍註 > bouchuu\ ;
+出帆 > shuppan\ ;
+剣先 > kensaki\ ;
+先王 > sen''nou\ ;
+凶年 > kyounen\ ;
+真平 > mappira\ ;
+癒着 > yuchaku\ ;
+副使 > fukushi\ ;
+高調 > kouchou\ ;
+莫大 > bakudai\ ;
+前厄 > maeyaku\ ;
+魚竜 > gyoryuu\ ;
+共済 > kyousai\ ;
+兇猛 > kyoumou\ ;
+迷宮 > meikyuu\ ;
+遅刻 > chikoku\ ;
+相承 > soushou\ ;
+高評 > kouhyou\ ;
+幔幕 > manmaku\ ;
+森閑 > shinkan\ ;
+進呈 > shintei\ ;
+辟易 > hekieki\ ;
+兇状 > kyoujou\ ;
+入漁 > nyuugyo\ ;
+直披 > chokuhi\ ;
+発煙 > hatsuen\ ;
+舟行 > shuukou\ ;
+岸辺 > kishibe\ ;
+高角 > koukaku\ ;
+道俗 > douzoku\ ;
+進取 > shinshu\ ;
+膨隆 > bouryuu\ ;
+倍額 > baigaku\ ;
+目指 > mokushi\ ;
+魔窟 > makutsu\ ;
+凝念 > gyounen\ ;
+巡歴 > junreki\ ;
+山頂 > sanchou\ ;
+転籍 > tenseki\ ;
+入湯 > nyuutou\ ;
+幽境 > yuukyou\ ;
+出展 > shutten\ ;
+荒技 > arawaza\ ;
+入港 > nyuukou\ ;
+入渠 > nyuukyo\ ;
+苛烈 > karetsu\ ;
+光照 > koushou\ ;
+迫害 > hakugai\ ;
+八洲 > yashima\ ;
+轟沈 > gouchin\ ;
+県庁 > kenchou\ ;
+凡庸 > bon''you\ ;
+癇癖 > kanpeki\ ;
+色素 > shikiso\ ;
+近年 > kin''nen\ ;
+直感 > chokkan\ ;
+盆暮 > bonkure\ ;
+蹉跌 > satetsu\ ;
+年増 > toshima\ ;
+遊侠 > yuukyou\ ;
+前兆 > zenchou\ ;
+癇症 > kanshou\ ;
+轢死 > rekishi\ ;
+道主 > doushuu\ ;
+凋悴 > chousui\ ;
+僧籍 > souseki\ ;
+道中 > douchuu\ ;
+山陽 > san''you\ ;
+工業 > kougyou\ ;
+山陵 > sanryou\ ;
+欠伸 > kenshin\ ;
+遊休 > yuukyuu\ ;
+痘苗 > toubyou\ ;
+幽囚 > yuushuu\ ;
+週刊 > shuukan\ ;
+庖厨 > houchuu\ ;
+倒閣 > toukaku\ ;
+列国 > rekkoku\ ;
+督励 > tokurei\ ;
+巡業 > jungyou\ ;
+標準 > hyoujun\ ;
+菊判 > kikuban\ ;
+産額 > sangaku\ ;
+週内 > shuunai\ ;
+傾聴 > keichou\ ;
+鰻屋 > unagiya\ ;
+帯心 > obishin\ ;
+入水 > nyuusui\ ;
+制勝 > seishou\ ;
+刻刻 > kokkoku\ ;
+備蓄 > bichiku\ ;
+興行 > kougyou\ ;
+通名 > toorina\ ;
+軍籍 > gunseki\ ;
+船舶 > senpaku\ ;
+連勝 > renshou\ ;
+通史 > tsuushi\ ;
+直後 > chokugo\ ;
+直径 > chokkei\ ;
+直往 > chokuou\ ;
+修養 > shuuyou\ ;
+兇漢 > kyoukan\ ;
+病菌 > byoukin\ ;
+僭称 > senshou\ ;
+出奔 > shuppon\ ;
+辛抱 > shinbou\ ;
+楽聖 > gakusei\ ;
+健診 > kenshin\ ;
+軽症 > keishou\ ;
+船腹 > senpuku\ ;
+白洲 > shirasu\ ;
+凡小 > bonshou\ ;
+前任 > zen''nin\ ;
+巨木 > kyoboku\ ;
+般若 > han''nya\ ;
+傷者 > shousha\ ;
+円曲 > enkyoku\ ;
+尾骨 > bikotsu\ ;
+内服 > naifuku\ ;
+広告 > koukoku\ ;
+芝生 > shibafu\ ;
+通勤 > tsuukin\ ;
+自説 > jisetsu\ ;
+充溢 > juuitsu\ ;
+看客 > kankaku\ ;
+茶托 > chataku\ ;
+真夏 > manatsu\ ;
+凶変 > kyouhen\ ;
+辺幅 > henpuku\ ;
+店内 > ten''nai\ ;
+刺傷 > shishou\ ;
+川柳 > senryuu\ ;
+発注 > hatchuu\ ;
+業腹 > gouhara\ ;
+良種 > ryoushu\ ;
+共棲 > kyousei\ ;
+借金 > shakkin\ ;
+削井 > sakusei\ ;
+異質 > ishitsu\ ;
+序列 > joretsu\ ;
+速写 > sokusha\ ;
+倒錯 > tousaku\ ;
+帝徳 > teitoku\ ;
+通分 > tsuubun\ ;
+追善 > tsuizen\ ;
+兼有 > ken''yuu\ ;
+凶報 > kyouhou\ ;
+検認 > ken''nin\ ;
+荒巻 > aramaki\ ;
+病舎 > byousha\ ;
+舞茸 > maitake\ ;
+梟首 > kyoushu\ ;
+週令 > shuurei\ ;
+准州 > junshuu\ ;
+共栓 > tomosen\ ;
+検証 > kenshou\ ;
+検診 > kenshin\ ;
+常宿 > jouyado\ ;
+信頼 > shinrai\ ;
+光沢 > koutaku\ ;
+帝廟 > teibyou\ ;
+凹地 > kubochi\ ;
+凸坊 > dekobou\ ;
+腱鞘 > kenshou\ ;
+軍票 > gunpyou\ ;
+盛徳 > seitoku\ ;
+生長 > seichou\ ;
+業者 > gyousha\ ;
+軍神 > gunshin\ ;
+入棺 > nyuukan\ ;
+蹈襲 > toushuu\ ;
+進上 > shinjou\ ;
+舟艇 > shuutei\ ;
+幽勝 > yuushou\ ;
+巨擘 > kyohaku\ ;
+舟航 > shuukou\ ;
+横棒 > yokobou\ ;
+制作 > seisaku\ ;
+年収 > nenshuu\ ;
+凋尽 > choujin\ ;
+盗心 > toushin\ ;
+入梅 > nyuubai\ ;
+腓骨 > hikotsu\ ;
+共有 > kyouyuu\ ;
+鰤子 > burikko\ ;
+相客 > aikyaku\ ;
+真因 > shin''in\ ;
+追号 > tsuigou\ ;
+連作 > rensaku\ ;
+兎欠 > toketsu\ ;
+兆民 > choumin\ ;
+別儀 > betsugi\ ;
+入校 > nyuukou\ ;
+良知 > ryouchi\ ;
+連休 > renkyuu\ ;
+切味 > kireaji\ ;
+造作 > zousaku\ ;
+六書 > rokusho\ ;
+着剣 > chakken\ ;
+分周 > bunshuu\ ;
+六曜 > rokuyou\ ;
+八朔 > hassaku\ ;
+刪修 > sanshuu\ ;
+准将 > junshou\ ;
+県境 > kenkyou\ ;
+腕首 > udekubi\ ;
+眼力 > ganriki\ ;
+荒寥 > kouryou\ ;
+通例 > tsuurei\ ;
+岬角 > koukaku\ ;
+標榜 > hyoubou\ ;
+入来 > nyuurai\ ;
+略譜 > ryakufu\ ;
+轢断 > rekidan\ ;
+転用 > ten''you\ ;
+皐月 > satsuki\ ;
+連中 > renchuu\ ;
+元歌 > motouta\ ;
+色白 > irojiro\ ;
+岩角 > iwakado\ ;
+逓信 > teishin\ ;
+庖丁 > houchou\ ;
+茶店 > chamise\ ;
+凝塊 > gyoukai\ ;
+逆光 > gyakkou\ ;
+梟雄 > kyouyuu\ ;
+出品 > shuppin\ ;
+梵鐘 > bonshou\ ;
+船級 > senkyuu\ ;
+農学 > nougaku\ ;
+通人 > tsuujin\ ;
+略語 > ryakugo\ ;
+僭用 > sen''you\ ;
+通交 > tsuukou\ ;
+踊躍 > youyaku\ ;
+茶席 > chaseki\ ;
+追刊 > tsuikan\ ;
+用量 > youryou\ ;
+自虐 > jigyaku\ ;
+鬼畜 > kichiku\ ;
+腐食 > fushoku\ ;
+年内 > nen''nai\ ;
+公敵 > kouteki\ ;
+傍聴 > bouchou\ ;
+左折 > sasetsu\ ;
+公教 > koukyou\ ;
+白桃 > hakutou\ ;
+若枝 > wakaeda\ ;
+出向 > shukkou\ ;
+近国 > kingoku\ ;
+船籍 > senseki\ ;
+元標 > genpyou\ ;
+出口 > deguchi\ ;
+切削 > sessaku\ ;
+略解 > ryakkai\ ;
+刀匠 > toushou\ ;
+発案 > hatsuan\ ;
+産量 > sanryou\ ;
+軟球 > nankyuu\ ;
+別事 > betsuji\ ;
+修錬 > shuuren\ ;
+直奏 > jikisou\ ;
+市庁 > shichou\ ;
+航続 > kouzoku\ ;
+良田 > ryouden\ ;
+足音 > ashioto\ ;
+先棒 > sakibou\ ;
+刈入 > kariire\ ;
+白木 > shiraki\ ;
+標本 > hyouhon\ ;
+皇族 > kouzoku\ ;
+出勤 > shukkin\ ;
+白書 > hakusho\ ;
+辺境 > henkyou\ ;
+送信 > soushin\ ;
+軍用 > gun''you\ ;
+初乳 > shonyuu\ ;
+平信 > heishin\ ;
+百景 > hyakkei\ ;
+荒壁 > arakabe\ ;
+八掛 > hakkake\ ;
+輪業 > ringyou\ ;
+茶寮 > charyou\ ;
+平作 > heisaku\ ;
+盲執 > moushuu\ ;
+甘酒 > amazake\ ;
+光束 > kousoku\ ;
+元栓 > motosen\ ;
+八挺 > hatchou\ ;
+真剣 > shinken\ ;
+凹凸 > outotsu\ ;
+辛子 > karashi\ ;
+凸凹 > totsuou\ ;
+百方 > hyappou\ ;
+平伏 > heifuku\ ;
+内心 > naishin\ ;
+側背 > sokuhai\ ;
+療法 > ryouhou\ ;
+入掛 > irekaku\ ;
+迷信 > meishin\ ;
+凶刃 > kyoujin\ ;
+出典 > shutten\ ;
+出兵 > shuppei\ ;
+白斑 > hakuhan\ ;
+刀傷 > toushou\ ;
+退京 > taikyou\ ;
+白文 > hakubun\ ;
+凸円 > totsuen\ ;
+山賊 > sanzoku\ ;
+眼中 > ganchuu\ ;
+側聞 > sokubun\ ;
+業種 > gyoushu\ ;
+兇暴 > kyoubou\ ;
+八手 > yatsude\ ;
+色物 > iromono\ ;
+元朝 > genchou\ ;
+痳病 > rinbyou\ ;
+元服 > genpuku\ ;
+修道 > shuudou\ ;
+凶党 > kyoutou\ ;
+克明 > kokumei\ ;
+年上 > toshiue\ ;
+信金 > shinkin\ ;
+光明 > koumyou\ ;
+共感 > kyoukan\ ;
+工廠 > koushou\ ;
+高給 > koukyuu\ ;
+保釈 > hoshaku\ ;
+入手 > nyuushu\ ;
+入所 > nyuusho\ ;
+述作 > jussaku\ ;
+内幕 > naimaku\ ;
+機密 > kimitsu\ ;
+踏襲 > toushuu\ ;
+高級 > koukyuu\ ;
+直営 > chokuei\ ;
+直喩 > chokuyu\ ;
+小面 > shoumen\ ;
+尿酸 > nyousan\ ;
+辛夷 > kobushi\ ;
+六情 > rokujou\ ;
+高粱 > kouryan\ ;
+小難 > shounan\ ;
+局部 > kyokubu\ ;
+帝国 > teikoku\ ;
+出会 > shukkai\ ;
+小隊 > shoutai\ ;
+鬱然 > utsuzen\ ;
+共役 > kyoueki\ ;
+出仕 > shusshi\ ;
+傷痕 > shoukon\ ;
+再審 > saishin\ ;
+県内 > ken''nai\ ;
+申請 > shinsei\ ;
+発振 > hasshin\ ;
+尿道 > nyoudou\ ;
+側線 > sokusen\ ;
+公徳 > koutoku\ ;
+少関 > shoukan\ ;
+常勝 > joushou\ ;
+少閑 > shoukan\ ;
+冥境 > meikyou\ ;
+真人 > shinjin\ ;
+白扇 > hakusen\ ;
+小閑 > shoukan\ ;
+冷嘲 > reichou\ ;
+全心 > zenshin\ ;
+痛痒 > tsuuyou\ ;
+馴鹿 > tonakai\ ;
+直参 > jikisan\ ;
+入念 > nyuunen\ ;
+脊髄 > sekizui\ ;
+真下 > mashita\ ;
+円安 > en''yasu\ ;
+尊長 > sonchou\ ;
+公庁 > kouchou\ ;
+返信 > henshin\ ;
+偽筆 > gihitsu\ ;
+相剋 > soukoku\ ;
+師匠 > shishou\ ;
+膝行 > shikkou\ ;
+転注 > tenchuu\ ;
+入廷 > nyuutei\ ;
+俗輩 > zokuhai\ ;
+脚韻 > kyakuin\ ;
+工学 > kougaku\ ;
+凡俗 > bonzoku\ ;
+寒鮒 > kanbuna\ ;
+業病 > goubyou\ ;
+農博 > nouhaku\ ;
+農協 > noukyou\ ;
+兇手 > kyoushu\ ;
+全幅 > zenpuku\ ;
+八州 > yashima\ ;
+全席 > zenseki\ ;
+高禄 > kouroku\ ;
+近作 > kinsaku\ ;
+荷主 > ninushi\ ;
+良港 > ryoukou\ ;
+寸隙 > sungeki\ ;
+凡作 > bonsaku\ ;
+業界 > gyoukai\ ;
+相克 > soukoku\ ;
+目前 > mokuzen\ ;
+岩肌 > iwahada\ ;
+凡人 > bon''nin\ ;
+信販 > shinpan\ ;
+俗趣 > zokushu\ ;
+修論 > shuuron\ ;
+巧妙 > koumyou\ ;
+兵学 > heigaku\ ;
+田螺 > tanishi\ ;
+発心 > hosshin\ ;
+凍傷 > toushou\ ;
+産褥 > sanjoku\ ;
+小銃 > shoujuu\ ;
+良法 > ryouhou\ ;
+兇悪 > kyouaku\ ;
+便通 > bentsuu\ ;
+小鉢 > kobachi\ ;
+若年 > jakunen\ ;
+兇悍 > kyoukan\ ;
+赤飯 > sekihan\ ;
+帝劇 > teigeki\ ;
+共存 > kyouzon\ ;
+省令 > shourei\ ;
+自粛 > jishuku\ ;
+百度 > hyakudo\ ;
+内壁 > naiheki\ ;
+修訂 > shuutei\ ;
+免役 > men''eki\ ;
+疾病 > shippei\ ;
+元悪 > gen''aku\ ;
+疼痛 > toutsuu\ ;
+害鳥 > gaichou\ ;
+傍白 > bouhaku\ ;
+検索 > kensaku\ ;
+良民 > ryoumin\ ;
+全寮 > zenryou\ ;
+入居 > nyuukyo\ ;
+甲虫 > kouchuu\ ;
+躁病 > soubyou\ ;
+登庁 > touchou\ ;
+全容 > zen''you\ ;
+入射 > nyuusha\ ;
+田虫 > tamushi\ ;
+盲信 > moushin\ ;
+白帆 > shiraho\ ;
+高直 > koujiki\ ;
+膿胸 > noukyou\ ;
+尊重 > sonchou\ ;
+生血 > namachi\ ;
+入寇 > nyuukou\ ;
+全学 > zengaku\ ;
+兇弾 > kyoudan\ ;
+入定 > nyuujou\ ;
+転業 > tengyou\ ;
+屈託 > kuttaku\ ;
+直伝 > jikiden\ ;
+茶匙 > chasaji\ ;
+自筆 > jihitsu\ ;
+苗床 > naedoko\ ;
+赤面 > sekimen\ ;
+辛労 > shinrou\ ;
+兄弟 > kyoudai\ ;
+俊賢 > shunken\ ;
+公娼 > koushou\ ;
+内圧 > naiatsu\ ;
+痛点 > tsuuten\ ;
+直交 > chokkou\ ;
+先年 > sen''nen\ ;
+疱疹 > houshin\ ;
+俗謡 > zokuyou\ ;
+鮮少 > senshou\ ;
+小道 > komichi\ ;
+自立 > jiritsu\ ;
+修行 > shugyou\ ;
+内国 > naikoku\ ;
+俗諺 > zokugen\ ;
+膏薬 > kouyaku\ ;
+至福 > shifuku\ ;
+寺銭 > terasen\ ;
+農作 > nousaku\ ;
+俗諦 > zokutai\ ;
+小逕 > shoukei\ ;
+俊豪 > shungou\ ;
+俗論 > zokuron\ ;
+症状 > shoujou\ ;
+俗談 > zokudan\ ;
+導通 > doutsuu\ ;
+魚族 > gyozoku\ ;
+入婿 > irimuko\ ;
+臼砲 > kyuuhou\ ;
+僻村 > hekison\ ;
+鮨屋 > sushiya\ ;
+健祥 > kenshou\ ;
+寄食 > kishoku\ ;
+白山 > hakusan\ ;
+病状 > byoujou\ ;
+元年 > gan''nen\ ;
+小農 > shounou\ ;
+席上 > sekijou\ ;
+荒事 > aragoto\ ;
+監修 > kanshuu\ ;
+偸盗 > chuutou\ ;
+僻書 > hekisho\ ;
+留置 > ryuuchi\ ;
+辛党 > karatou\ ;
+格闘 > kakutou\ ;
+番組 > bangumi\ ;
+俗言 > zokugen\ ;
+魂柱 > konchuu\ ;
+輪廓 > rinkaku\ ;
+百官 > hyakkan\ ;
+作風 > sakufuu\ ;
+馬食 > bashoku\ ;
+艦橋 > kankyou\ ;
+標定 > hyoutei\ ;
+膨脹 > bouchou\ ;
+倖臣 > koushin\ ;
+横奪 > oudatsu\ ;
+白子 > shiroko\ ;
+巨商 > kyoshou\ ;
+再告 > saikoku\ ;
+駅長 > ekichou\ ;
+軍楽 > gungaku\ ;
+山芋 > yamaimo\ ;
+帝京 > teikyou\ ;
+輻射 > fukusha\ ;
+入声 > nisshou\ ;
+軽捷 > keishou\ ;
+密雲 > mitsuun\ ;
+傾注 > keichuu\ ;
+入墨 > irezumi\ ;
+密集 > misshuu\ ;
+胸間 > kyoukan\ ;
+色柄 > irogara\ ;
+背高 > seitaka\ ;
+将軍 > shougun\ ;
+概況 > gaikyou\ ;
+全域 > zen''iki\ ;
+芳心 > houshin\ ;
+入場 > nyuujou\ ;
+盗作 > tousaku\ ;
+光学 > kougaku\ ;
+山腹 > sanpuku\ ;
+先学 > sengaku\ ;
+脚部 > kyakubu\ ;
+公国 > koukoku\ ;
+入城 > nyuujou\ ;
+胴長 > dounaga\ ;
+橋台 > kyoudai\ ;
+僧服 > soufuku\ ;
+馘首 > kakushu\ ;
+再勝 > saishou\ ;
+腹蔵 > fukuzou\ ;
+良材 > ryouzai\ ;
+癇性 > kanshou\ ;
+低額 > teigaku\ ;
+魚拓 > gyotaku\ ;
+輔弼 > hohitsu\ ;
+全国 > zengoku\ ;
+入坑 > nyuukou\ ;
+辛亥 > shingai\ ;
+良書 > ryousho\ ;
+宰領 > sairyou\ ;
+白太 > shirata\ ;
+白夜 > byakuya\ ;
+蹴爪 > kedzume\ ;
+巨匠 > kyoshou\ ;
+赤錆 > akasabi\ ;
+入団 > nyuudan\ ;
+工博 > kouhaku\ ;
+兄嫁 > aniyome\ ;
+差別 > sabetsu\ ;
+冪乗 > bekijou\ ;
+軍服 > gunpuku\ ;
+工匠 > koushou\ ;
+甲胄 > katchuu\ ;
+自発 > jihatsu\ ;
+畢竟 > hikkyou\ ;
+校閲 > kouetsu\ ;
+疎略 > soryaku\ ;
+岩礁 > ganshou\ ;
+校長 > kouchou\ ;
+傷歎 > shoutan\ ;
+色文 > irobumi\ ;
+皇国 > koukoku\ ;
+首領 > shuryou\ ;
+赤金 > akagane\ ;
+驕肆 > kyoushi\ ;
+学齢 > gakurei\ ;
+共同 > kyoudou\ ;
+宵闇 > yoiyami\ ;
+小論 > shouron\ ;
+兇変 > kyouhen\ ;
+体長 > taichou\ ;
+停留 > teiryuu\ ;
+市中 > shichuu\ ;
+岩石 > ganseki\ ;
+腹芸 > haragei\ ;
+公告 > koukoku\ ;
+白地 > shiroji\ ;
+核酸 > kakusan\ ;
+六合 > rikugou\ ;
+船歌 > funauta\ ;
+対象 > taishou\ ;
+騰落 > touraku\ ;
+検疫 > ken''eki\ ;
+腐蝕 > fushoku\ ;
+定額 > teigaku\ ;
+偏癖 > henpeki\ ;
+小計 > shoukei\ ;
+内傷 > naishou\ ;
+典則 > tensoku\ ;
+充塞 > juusoku\ ;
+棒縞 > boujima\ ;
+六十 > rokujuu\ ;
+赤道 > sekidou\ ;
+併進 > heishin\ ;
+生肉 > seiniku\ ;
+植皮 > shokuhi\ ;
+実需 > jitsuju\ ;
+免囚 > menshuu\ ;
+駆逐 > kuchiku\ ;
+駐車 > chuusha\ ;
+株金 > kabukin\ ;
+自玉 > jigyoku\ ;
+宿銭 > yadosen\ ;
+首長 > shuchou\ ;
+腹背 > fukuhai\ ;
+全勝 > zenshou\ ;
+柱頭 > chuutou\ ;
+痛棒 > tsuubou\ ;
+病死 > byoushi\ ;
+傍流 > bouryuu\ ;
+射角 > shakaku\ ;
+客間 > kyakuma\ ;
+工作 > kousaku\ ;
+儀式 > gishiki\ ;
+車掌 > shashou\ ;
+田紳 > denshin\ ;
+傍注 > bouchuu\ ;
+対訳 > taiyaku\ ;
+兼修 > kenshuu\ ;
+赤軍 > sekigun\ ;
+脂身 > aburami\ ;
+峡湾 > kyouwan\ ;
+軍拡 > gunkaku\ ;
+百味 > hyakumi\ ;
+対角 > taikaku\ ;
+柱面 > chuumen\ ;
+巨乳 > kyonyuu\ ;
+公共 > koukyou\ ;
+共働 > kyoudou\ ;
+画筆 > gahitsu\ ;
+供覧 > kyouran\ ;
+寸評 > sunpyou\ ;
+共催 > kyousai\ ;
+内中 > uchijuu\ ;
+容量 > youryou\ ;
+腫脹 > shuchou\ ;
+密通 > mittsuu\ ;
+舟歌 > funauta\ ;
+倶発 > guhatsu\ ;
+兼任 > ken''nin\ ;
+公僕 > kouboku\ ;
+入冦 > nyuukou\ ;
+体量 > tairyou\ ;
+公傷 > koushou\ ;
+宗門 > shuumon\ ;
+臆病 > okubyou\ ;
+全優 > zen''yuu\ ;
+軽少 > keishou\ ;
+入党 > nyuutou\ ;
+侑觴 > yuushou\ ;
+偏狭 > henkyou\ ;
+略画 > ryakuga\ ;
+俸給 > houkyuu\ ;
+宿運 > shukuun\ ;
+船板 > funaita\ ;
+俊英 > shun''ei\ ;
+芳墨 > houboku\ ;
+偏狂 > henkyou\ ;
+百匁 > hyakume\ ;
+生絹 > suzushi\ ;
+軟弱 > nanjaku\ ;
+休館 > kyuukan\ ;
+密輸 > mitsuyu\ ;
+党則 > tousoku\ ;
+修繕 > shuuzen\ ;
+就航 > shuukou\ ;
+休養 > kyuuyou\ ;
+例証 > reishou\ ;
+榴弾 > ryuudan\ ;
+山積 > sanseki\ ;
+舶来 > hakurai\ ;
+山稜 > sanryou\ ;
+赤貧 > sekihin\ ;
+修練 > shuuren\ ;
+英傑 > eiketsu\ ;
+極暑 > gokusho\ ;
+病棟 > byoutou\ ;
+肌骨 > kikotsu\ ;
+良性 > ryousei\ ;
+足芸 > ashigei\ ;
+腸線 > chousen\ ;
+僧形 > sougyou\ ;
+輪唱 > rinshou\ ;
+偉物 > eramono\ ;
+白刃 > hakujin\ ;
+公休 > koukyuu\ ;
+侮蔑 > bubetsu\ ;
+若党 > wakatou\ ;
+病根 > byoukon\ ;
+会集 > kaishuu\ ;
+屑糸 > kuzuito\ ;
+梟罪 > kyouzai\ ;
+若僧 > wakazou\ ;
+白兵 > hakuhei\ ;
+先勝 > senshou\ ;
+低速 > teisoku\ ;
+入会 > nyuukai\ ;
+屑米 > kuzumai\ ;
+軽妙 > keimyou\ ;
+自滅 > jimetsu\ ;
+休電 > kyuuden\ ;
+島根 > shimane\ ;
+学風 > gakufuu\ ;
+僵屍 > kyonshi\ ;
+八丁 > hatchou\ ;
+先刻 > senkoku\ ;
+肉饅 > nikuman\ ;
+併読 > heidoku\ ;
+馬跳 > umatobi\ ;
+転属 > tenzoku\ ;
+赤誠 > sekisei\ ;
+良師 > ryoushi\ ;
+会長 > kaichou\ ;
+兇刃 > kyoujin\ ;
+定量 > teiryou\ ;
+良工 > ryoukou\ ;
+格言 > kakugen\ ;
+駁論 > bakuron\ ;
+元凶 > genkyou\ ;
+肉類 > nikurui\ ;
+臼歯 > kyuushi\ ;
+疼木 > hiiragi\ ;
+転宅 > tentaku\ ;
+栄達 > eitatsu\ ;
+転学 > tengaku\ ;
+発信 > hasshin\ ;
+休閑 > kyuukan\ ;
+舞曲 > bukyoku\ ;
+自活 > jikatsu\ ;
+俸禄 > houroku\ ;
+俸祿 > houroku\ ;
+若人 > wakoudo\ ;
+楽才 > gakusai\ ;
+密議 > mitsugi\ ;
+興業 > kougyou\ ;
+元兇 > genkyou\ ;
+香車 > kyousha\ ;
+俗累 > zokurui\ ;
+学際 > gakusai\ ;
+停泊 > teihaku\ ;
+楊柳 > youryuu\ ;
+白人 > hakujin\ ;
+信管 > shinkan\ ;
+小舅 > kojuuto\ ;
+自決 > jiketsu\ ;
+百事 > hyakuji\ ;
+岩漿 > ganshou\ ;
+理髪 > rihatsu\ ;
+密語 > mitsugo\ ;
+兆候 > choukou\ ;
+胸襟 > kyoukin\ ;
+高木 > kouboku\ ;
+尿管 > nyoukan\ ;
+鬱屈 > ukkutsu\ ;
+軍属 > gunzoku\ ;
+痛憤 > tsuufun\ ;
+山番 > yamaban\ ;
+楽想 > gakusou\ ;
+自殺 > jisatsu\ ;
+小脳 > shounou\ ;
+優勝 > yuushou\ ;
+脱臼 > dakkyuu\ ;
+首足 > shusoku\ ;
+脱臭 > dasshuu\ ;
+軍将 > gunshou\ ;
+傷悴 > shousui\ ;
+偏流 > henryuu\ ;
+脳膜 > noumaku\ ;
+寒行 > kangyou\ ;
+先任 > sen''nin\ ;
+小胞 > shouhou\ ;
+痛感 > tsuukan\ ;
+現高 > gendaka\ ;
+小胆 > shoutan\ ;
+臣民 > shinmin\ ;
+軍容 > gun''you\ ;
+鬼婆 > onibaba\ ;
+作詩 > sakushi\ ;
+作詞 > sakushi\ ;
+脱腸 > datchou\ ;
+宅配 > takuhai\ ;
+軍学 > gungaku\ ;
+校註 > kouchuu\ ;
+休錘 > kyuusui\ ;
+田畑 > denpata\ ;
+傷忰 > shousui\ ;
+少者 > shousha\ ;
+痛恨 > tsuukon\ ;
+至極 > shigoku\ ;
+極悪 > gokuaku\ ;
+安逸 > an''itsu\ ;
+体調 > taichou\ ;
+僻地 > hekichi\ ;
+僻在 > hekizai\ ;
+定跡 > jouseki\ ;
+高教 > koukyou\ ;
+業態 > gyoutai\ ;
+輪作 > rinsaku\ ;
+痛快 > tsuukai\ ;
+岩波 > iwanami\ ;
+峻拒 > shunkyo\ ;
+低調 > teichou\ ;
+良妻 > ryousai\ ;
+刻々 > kokkoku\ ;
+臆測 > okusoku\ ;
+作製 > sakusei\ ;
+産痛 > santsuu\ ;
+職階 > shokkai\ ;
+良好 > ryoukou\ ;
+畝溝 > unemizo\ ;
+極微 > kyokubi\ ;
+果食 > kashoku\ ;
+桑苗 > soubyou\ ;
+膜状 > makujou\ ;
+甘皮 > amakawa\ ;
+赤蕪 > akakabu\ ;
+山犬 > yamainu\ ;
+俊童 > shundou\ ;
+楽師 > gakushi\ ;
+桑色 > kuwairo\ ;
+腕章 > wanshou\ ;
+馬術 > bajutsu\ ;
+病態 > byoutai\ ;
+腕立 > udetate\ ;
+柩車 > kyuusha\ ;
+腹癒 > haraise\ ;
+舞扇 > maiougi\ ;
+僅少 > kinshou\ ;
+寮舎 > ryousha\ ;
+極度 > kyokudo\ ;
+偕楽 > kairaku\ ;
+球面 > kyuumen\ ;
+小編 > shouhen\ ;
+芳信 > houshin\ ;
+病患 > byoukan\ ;
+画然 > kakuzen\ ;
+球電 > kyuuden\ ;
+客語 > kyakugo\ ;
+枕頭 > chintou\ ;
+船幅 > senpuku\ ;
+極左 > kyokusa\ ;
+瓢箪 > hyoutan\ ;
+芸事 > geigoto\ ;
+植樹 > shokuju\ ;
+実話 > jitsuwa\ ;
+疾患 > shikkan\ ;
+骨格 > kokkaku\ ;
+桃色 > momoiro\ ;
+検校 > kengyou\ ;
+実証 > jisshou\ ;
+今頃 > imagoro\ ;
+腰痛 > youtsuu\ ;
+小粒 > kotsubu\ ;
+業師 > wazashi\ ;
+花代 > hanadai\ ;
+客観 > kyakkan\ ;
+俗眼 > zokugan\ ;
+使臣 > shishin\ ;
+寒菊 > kangiku\ ;
+休載 > kyuusai\ ;
+尻目 > shirime\ ;
+定評 > teihyou\ ;
+休転 > kyuuten\ ;
+病弊 > byouhei\ ;
+傷害 > shougai\ ;
+定訳 > teiyaku\ ;
+軍国 > gunkoku\ ;
+魔力 > maryoku\ ;
+検束 > kensoku\ ;
+居留 > kyoryuu\ ;
+軽傷 > keishou\ ;
+館長 > kanchou\ ;
+岩棚 > iwadana\ ;
+仏陀 > butsuda\ ;
+害虫 > gaichuu\ ;
+就眠 > shuumin\ ;
+脇能 > wakinou\ ;
+億兆 > okuchou\ ;
+病巣 > byousou\ ;
+赤膚 > akahada\ ;
+賞金 > shoukin\ ;
+小童 > kowappa\ ;
+仏閣 > bukkaku\ ;
+俐発 > rihatsu\ ;
+仏間 > butsuma\ ;
+赤腹 > akahara\ ;
+軽信 > keishin\ ;
+腎石 > jinseki\ ;
+島庁 > touchou\ ;
+良品 > ryouhin\ ;
+俗用 > zokuyou\ ;
+胃袋 > ibukuro\ ;
+軽佻 > keichou\ ;
+峻嶺 > shunrei\ ;
+峻嶮 > shunken\ ;
+年々 > nen''nen\ ;
+儒仏 > jubutsu\ ;
+魅力 > miryoku\ ;
+高徳 > koutoku\ ;
+貸間 > kashima\ ;
+胸臆 > kyouoku\ ;
+魚信 > gyoshin\ ;
+腕白 > wanpaku\ ;
+赤肌 > akahada\ ;
+胸腺 > kyousen\ ;
+京風 > kyoufuu\ ;
+胸腔 > kyoukou\ ;
+楽天 > rakuten\ ;
+良友 > ryouyuu\ ;
+脱穀 > dakkoku\ ;
+班長 > hanchou\ ;
+伝誦 > denshou\ ;
+尊称 > sonshou\ ;
+偃月 > engetsu\ ;
+修煉 > shuuren\ ;
+対策 > taisaku\ ;
+小社 > shousha\ ;
+楽士 > gakushi\ ;
+借款 > shakkan\ ;
+楽壇 > gakudan\ ;
+便益 > ben''eki\ ;
+会読 > kaidoku\ ;
+棺桶 > kan''oke\ ;
+起結 > kiketsu\ ;
+航宙 > kouchuu\ ;
+低落 > teiraku\ ;
+病害 > byougai\ ;
+偉方 > eragata\ ;
+梟猛 > kyoumou\ ;
+界標 > kaihyou\ ;
+賃銭 > chinsen\ ;
+佞臣 > neishin\ ;
+余色 > yoshoku\ ;
+飲食 > inshoku\ ;
+僚友 > ryouyuu\ ;
+休講 > kyuukou\ ;
+賃銀 > chingin\ ;
+学資 > gakushi\ ;
+町民 > choumin\ ;
+傾国 > keikoku\ ;
+交響 > koukyou\ ;
+良剤 > ryouzai\ ;
+係留 > keiryuu\ ;
+男気 > otokogi\ ;
+小知 > shouchi\ ;
+対称 > taishou\ ;
+賃金 > chingin\ ;
+楓属 > fuuzoku\ ;
+胃薬 > igusuri\ ;
+仙郷 > senkyou\ ;
+栗色 > kuriiro\ ;
+購読 > koudoku\ ;
+車力 > shariki\ ;
+楽団 > gakudan\ ;
+臥所 > fushido\ ;
+体臭 > taishuu\ ;
+馬脚 > bakyaku\ ;
+侍立 > jiritsu\ ;
+寸秒 > sunbyou\ ;
+甲殻 > koukaku\ ;
+起筆 > kihitsu\ ;
+駐米 > chuubei\ ;
+乾魚 > hoshiuo\ ;
+至急 > shikyuu\ ;
+肝要 > kan''you\ ;
+生涯 > shougai\ ;
+会衆 > kaishuu\ ;
+森林 > shinrin\ ;
+赤組 > akagumi\ ;
+転任 > ten''nin\ ;
+格納 > kakunou\ ;
+高尚 > koushou\ ;
+小癪 > koshaku\ ;
+赤紙 > akagami\ ;
+驚歎 > kyoutan\ ;
+起立 > kiritsu\ ;
+傷嘆 > shoutan\ ;
+作者 > sakusha\ ;
+食餌 > shokuji\ ;
+腸満 > chouman\ ;
+仲買 > nakagai\ ;
+病変 > byouhen\ ;
+僥倖 > gyoukou\ ;
+賠責 > baiseki\ ;
+僧俗 > souzoku\ ;
+賞賛 > shousan\ ;
+尊皇 > son''nou\ ;
+玄麦 > genbaku\ ;
+脈管 > myakkan\ ;
+枢軸 > suujiku\ ;
+舞姫 > maihime\ ;
+痛嘆 > tsuutan\ ;
+尨犬 > mukuinu\ ;
+棟梁 > touryou\ ;
+家職 > kashoku\ ;
+根粒 > konryuu\ ;
+屠殺 > tosatsu\ ;
+賊軍 > zokugun\ ;
+腸液 > choueki\ ;
+舎宅 > shataku\ ;
+宸翰 > shinkan\ ;
+身命 > shinmei\ ;
+疫学 > ekigaku\ ;
+小町 > komachi\ ;
+小男 > kootoko\ ;
+腰湯 > koshiyu\ ;
+射的 > shateki\ ;
+小用 > shouyou\ ;
+脳症 > noushou\ ;
+脳病 > noubyou\ ;
+小生 > shousei\ ;
+自律 > jiritsu\ ;
+山椒 > sanshou\ ;
+佳節 > kasetsu\ ;
+修法 > shuuhou\ ;
+今週 > konshuu\ ;
+聖週 > seishuu\ ;
+低翼 > teiyoku\ ;
+色事 > irogoto\ ;
+柿色 > kakiiro\ ;
+環礁 > kanshou\ ;
+田楽 > dengaku\ ;
+今迄 > imamade\ ;
+乾飯 > hoshiii\ ;
+良人 > ryoujin\ ;
+宿縁 > shukuen\ ;
+臣従 > shinjuu\ ;
+側射 > sokusha\ ;
+腹水 > fukusui\ ;
+臨床 > rinshou\ ;
+跋渉 > basshou\ ;
+侵犯 > shinpan\ ;
+対症 > taishou\ ;
+乳香 > nyuukou\ ;
+仮説 > kasetsu\ ;
+専用 > sen''you\ ;
+町村 > chouson\ ;
+倒木 > touboku\ ;
+偏心 > henshin\ ;
+臨席 > rinseki\ ;
+賞詞 > shoushi\ ;
+架設 > kasetsu\ ;
+修正 > shuusei\ ;
+木魚 > mokugyo\ ;
+聴講 > choukou\ ;
+催告 > saikoku\ ;
+高声 > takagoe\ ;
+併称 > heishou\ ;
+交錯 > kousaku\ ;
+概則 > gaisoku\ ;
+仮設 > kasetsu\ ;
+耐震 > taishin\ ;
+栄職 > eishoku\ ;
+仏跡 > busseki\ ;
+供用 > kyouyou\ ;
+貫通 > kantsuu\ ;
+聖蹟 > seiseki\ ;
+島国 > tougoku\ ;
+尊王 > son''nou\ ;
+産業 > sangyou\ ;
+腰気 > koshike\ ;
+車中 > shachuu\ ;
+仰視 > gyoushi\ ;
+傷創 > shousou\ ;
+車両 > sharyou\ ;
+食間 > shokkan\ ;
+仮親 > karioya\ ;
+育苗 > ikubyou\ ;
+官能 > kan''nou\ ;
+賃貸 > chintai\ ;
+岡惚 > okabore\ ;
+聖跡 > seiseki\ ;
+枝豆 > edamame\ ;
+村長 > sonchou\ ;
+聴許 > choukyo\ ;
+朝鮮 > chousen\ ;
+生業 > nariwai\ ;
+代読 > daidoku\ ;
+現象 > genshou\ ;
+乳頭 > nyuutou\ ;
+小片 > shouhen\ ;
+実習 > jisshuu\ ;
+仲裁 > chuusai\ ;
+小爪 > kodzume\ ;
+疎密 > somitsu\ ;
+聴解 > choukai\ ;
+貧農 > hin''nou\ ;
+代診 > daishin\ ;
+聴視 > choushi\ ;
+腺様 > sen''you\ ;
+属格 > zokkaku\ ;
+傷兵 > shouhei\ ;
+楽典 > gakuten\ ;
+画数 > kakusuu\ ;
+低級 > teikyuu\ ;
+膺懲 > youchou\ ;
+倍旧 > baikyuu\ ;
+高圧 > kouatsu\ ;
+肝葉 > kan''you\ ;
+町政 > chousei\ ;
+修業 > shugyou\ ;
+極刑 > kyokkei\ ;
+岩床 > ganshou\ ;
+寮生 > ryousei\ ;
+病名 > byoumei\ ;
+東進 > toushin\ ;
+校章 > koushou\ ;
+梶棒 > kajibou\ ;
+極冠 > kyokkan\ ;
+極内 > gokunai\ ;
+病友 > byouyuu\ ;
+骰子 > saikoro\ ;
+岡引 > okahiki\ ;
+傴僂 > semushi\ ;
+停学 > teigaku\ ;
+朱鞘 > shuzaya\ ;
+実績 > jisseki\ ;
+病原 > byougen\ ;
+極光 > kyokkou\ ;
+亨通 > koutsuu\ ;
+本領 > honryou\ ;
+人跡 > hitoato\ ;
+付設 > fusetsu\ ;
+首級 > shukyuu\ ;
+供物 > kumotsu\ ;
+峻厳 > shungen\ ;
+象限 > shougen\ ;
+身体 > shintai\ ;
+至妙 > shimyou\ ;
+甘栗 > amaguri\ ;
+仕訳 > shiwake\ ;
+興国 > koukoku\ ;
+交通 > koutsuu\ ;
+躍動 > yakudou\ ;
+代表 > daihyou\ ;
+亢進 > koushin\ ;
+病勢 > byousei\ ;
+棲息 > seisoku\ ;
+背約 > haiyaku\ ;
+容積 > youseki\ ;
+仏語 > butsugo\ ;
+腰椎 > youtsui\ ;
+身代 > shindai\ ;
+玉音 > gyokuon\ ;
+寓目 > guumoku\ ;
+来週 > raishuu\ ;
+船側 > sensoku\ ;
+本震 > honshin\ ;
+体積 > taiseki\ ;
+木靴 > kigutsu\ ;
+香箱 > koubako\ ;
+休航 > kyuukou\ ;
+朝風 > asakaze\ ;
+対照 > taishou\ ;
+舷側 > gensoku\ ;
+根瘤 > konryuu\ ;
+岩山 > iwayama\ ;
+楽人 > gakujin\ ;
+豆類 > mamerui\ ;
+官給 > kankyuu\ ;
+玉露 > gyokuro\ ;
+身上 > shinjou\ ;
+船便 > funabin\ ;
+催促 > saisoku\ ;
+生新 > seishin\ ;
+脳漿 > noushou\ ;
+脹満 > chouman\ ;
+超然 > chouzen\ ;
+伝習 > denshuu\ ;
+留年 > ryuunen\ ;
+贅肉 > zeiniku\ ;
+高台 > takadai\ ;
+岩室 > iwamuro\ ;
+俵数 > hyousuu\ ;
+朔風 > sakufuu\ ;
+学芸 > gakugei\ ;
+首章 > shushou\ ;
+男手 > otokode\ ;
+梅毒 > baidoku\ ;
+植字 > shokuji\ ;
+朝靄 > asamoya\ ;
+屈服 > kuppuku\ ;
+朝霧 > asagiri\ ;
+信条 > shinjou\ ;
+翰長 > kanchou\ ;
+肌色 > hadairo\ ;
+学舎 > gakusha\ ;
+信望 > shinbou\ ;
+修整 > shuusei\ ;
+信書 > shinsho\ ;
+極上 > gokujou\ ;
+症候 > shoukou\ ;
+休耕 > kyuukou\ ;
+船中 > senchuu\ ;
+伸筋 > shinkin\ ;
+肉色 > nikuiro\ ;
+修改 > shuukai\ ;
+岸壁 > ganpeki\ ;
+完納 > kan''nou\ ;
+人証 > ninshou\ ;
+乾酪 > kanraku\ ;
+症例 > shourei\ ;
+略字 > ryakuji\ ;
+膨張 > bouchou\ ;
+屋敷 > yashiki\ ;
+修撰 > shuusen\ ;
+伏罪 > fukuzai\ ;
+密画 > mitsuga\ ;
+病体 > byoutai\ ;
+考量 > kouryou\ ;
+餡蜜 > anmitsu\ ;
+官窯 > kan''you\ ;
+仔虫 > shichuu\ ;
+耽読 > tandoku\ ;
+小水 > shousui\ ;
+肉腫 > nikushu\ ;
+俗書 > zokusho\ ;
+老醜 > roushuu\ ;
+驕慢 > kyouman\ ;
+倔強 > kukkyou\ ;
+病人 > byounin\ ;
+偏執 > henshuu\ ;
+俎板 > manaita\ ;
+乳酸 > nyuusan\ ;
+学者 > gakusha\ ;
+宰相 > saishou\ ;
+主領 > shuryou\ ;
+岩壁 > ganpeki\ ;
+佯狂 > youkyou\ ;
+丸顔 > marugao\ ;
+曳馬 > hikiuma\ ;
+対流 > tairyuu\ ;
+顔黒 > ganguro\ ;
+伏縫 > fusenui\ ;
+曲馬 > kyokuba\ ;
+赤燐 > sekirin\ ;
+傑作 > kessaku\ ;
+瑞祥 > zuishou\ ;
+驕恣 > kyoushi\ ;
+伏線 > fukusen\ ;
+傀儡 > kugutsu\ ;
+珍談 > chindan\ ;
+俗文 > zokubun\ ;
+交読 > koudoku\ ;
+倒幕 > toubaku\ ;
+家畜 > kachiku\ ;
+中飯 > chuuhan\ ;
+球菌 > kyuukin\ ;
+首相 > shushou\ ;
+中風 > chuubuu\ ;
+風鎮 > fuuchin\ ;
+借屋 > shakuya\ ;
+島中 > touchuu\ ;
+宝石 > houseki\ ;
+胆石 > tanseki\ ;
+山師 > yamashi\ ;
+食費 > shokuhi\ ;
+交角 > koukaku\ ;
+木金 > mokukin\ ;
+定石 > jouseki\ ;
+属性 > zokusei\ ;
+脳橋 > noukyou\ ;
+中項 > chuukou\ ;
+来診 > raishin\ ;
+球茎 > kyuukei\ ;
+山嶽 > sangaku\ ;
+肩章 > kenshou\ ;
+生息 > seisoku\ ;
+便服 > benpuku\ ;
+亡親 > boushin\ ;
+健勝 > kenshou\ ;
+仕草 > shigusa\ ;
+九重 > kokonoe\ ;
+俊敏 > shunbin\ ;
+来襲 > raishuu\ ;
+主長 > shuchou\ ;
+踊字 > odoriji\ ;
+山峡 > yamakai\ ;
+赤潮 > akashio\ ;
+最長 > saichou\ ;
+学級 > gakkyuu\ ;
+聴聞 > choumon\ ;
+山岳 > sangaku\ ;
+生得 > seitoku\ ;
+略図 > ryakuzu\ ;
+両頭 > ryoutou\ ;
+尚更 > naosara\ ;
+屏息 > heisoku\ ;
+中隊 > chuutai\ ;
+木造 > mokuzou\ ;
+伝票 > denpyou\ ;
+朝酒 > asazake\ ;
+容物 > iremono\ ;
+画定 > kakutei\ ;
+寂然 > sekizen\ ;
+甘心 > kanshin\ ;
+専業 > sengyou\ ;
+跡形 > atokata\ ;
+偶作 > guusaku\ ;
+曹長 > souchou\ ;
+小柄 > kodzuka\ ;
+孝経 > koukyou\ ;
+聴罪 > chouzai\ ;
+余熱 > yonetsu\ ;
+山容 > san''you\ ;
+両面 > ryoumen\ ;
+信愛 > shin''ai\ ;
+俗才 > zokusai\ ;
+存続 > sonzoku\ ;
+望郷 > boukyou\ ;
+猛鳥 > mouchou\ ;
+宝生 > houshou\ ;
+美髪 > bihatsu\ ;
+尚早 > shousou\ ;
+中間 > chuukan\ ;
+一髪 > ippatsu\ ;
+仲継 > chuukei\ ;
+将校 > shoukou\ ;
+安着 > anchaku\ ;
+両雄 > ryouyuu\ ;
+季節 > kisetsu\ ;
+争訟 > soushou\ ;
+二親 > futaoya\ ;
+豚足 > tonsoku\ ;
+官用 > kan''you\ ;
+余烈 > yoretsu\ ;
+松葉 > matsuba\ ;
+安直 > anchoku\ ;
+風速 > fuusoku\ ;
+顎髭 > agohige\ ;
+翼賛 > yokusan\ ;
+属島 > zokutou\ ;
+肺病 > haibyou\ ;
+小智 > shouchi\ ;
+実理 > jitsuri\ ;
+小景 > shoukei\ ;
+学童 > gakudou\ ;
+棋客 > kikyaku\ ;
+末路 > matsuro\ ;
+侵攻 > shinkou\ ;
+将来 > shourai\ ;
+了解 > ryoukai\ ;
+畑地 > hatachi\ ;
+信心 > shinjin\ ;
+対格 > taikaku\ ;
+屈強 > kukkyou\ ;
+学窓 > gakusou\ ;
+梟悪 > kyouaku\ ;
+男娼 > danshou\ ;
+孤立 > koritsu\ ;
+腹帯 > fukutai\ ;
+学究 > gakkyuu\ ;
+俗情 > zokujou\ ;
+了見 > ryouken\ ;
+丸鋼 > marukou\ ;
+俊才 > shunsai\ ;
+俗悪 > zokuaku\ ;
+職組 > shokuso\ ;
+寒流 > kanryuu\ ;
+群集 > gunshuu\ ;
+群雄 > gun''yuu\ ;
+山姥 > yamauba\ ;
+上顎 > jougaku\ ;
+寝殿 > shinden\ ;
+少数 > shousuu\ ;
+男妾 > danshou\ ;
+小斎 > shousai\ ;
+脂気 > aburake\ ;
+専有 > sen''yuu\ ;
+尽忠 > jinchuu\ ;
+小数 > shousuu\ ;
+条虫 > jouchuu\ ;
+略叙 > ryakujo\ ;
+美食 > bishoku\ ;
+山奥 > yamaoku\ ;
+珍蔵 > chinzou\ ;
+尊族 > sonzoku\ ;
+俗念 > zokunen\ ;
+格段 > kakudan\ ;
+一食 > isshoku\ ;
+将星 > shousei\ ;
+聯絡 > renraku\ ;
+学祭 > gakusai\ ;
+獄門 > gokumon\ ;
+促成 > sokusei\ ;
+考証 > koushou\ ;
+完璧 > kanpeki\ ;
+生害 > shougai\ ;
+乱調 > ranchou\ ;
+人臣 > jinshin\ ;
+一類 > ichirui\ ;
+乱読 > randoku\ ;
+亀裂 > kiretsu\ ;
+胸水 > kyousui\ ;
+枠線 > wakusen\ ;
+休眠 > kyuumin\ ;
+臨休 > rinkyuu\ ;
+仄聞 > sokubun\ ;
+低潮 > teichou\ ;
+伏目 > fushime\ ;
+万難 > ban''nan\ ;
+驕奢 > kyousha\ ;
+屎尿 > shinyou\ ;
+上陸 > jouriku\ ;
+尺度 > shakudo\ ;
+賤称 > senshou\ ;
+万障 > banshou\ ;
+最適 > saiteki\ ;
+就役 > shuueki\ ;
+一面 > ichimen\ ;
+対敵 > taiteki\ ;
+朝貢 > choukou\ ;
+仏縁 > butsuen\ ;
+仕組 > shikumi\ ;
+桐材 > kirizai\ ;
+射撃 > shageki\ ;
+校注 > kouchuu\ ;
+一雨 > hitoame\ ;
+柱状 > chuujou\ ;
+作況 > sakkyou\ ;
+一難 > ichinan\ ;
+山地 > yamachi\ ;
+俊彦 > shungen\ ;
+胴欲 > douyoku\ ;
+額面 > gakumen\ ;
+上長 > jouchou\ ;
+珍芸 > chingei\ ;
+森厳 > shingen\ ;
+男囚 > danshuu\ ;
+梯子 > hashigo\ ;
+枕絵 > makurae\ ;
+番傘 > bangasa\ ;
+一陣 > ichijin\ ;
+仏経 > bukkyou\ ;
+頬髭 > hoohige\ ;
+未設 > misetsu\ ;
+略儀 > ryakugi\ ;
+駿才 > shunsai\ ;
+能楽 > nougaku\ ;
+小才 > shousai\ ;
+主軸 > shujiku\ ;
+頬骨 > hoobone\ ;
+乱行 > rangyou\ ;
+嫉視 > shisshi\ ;
+小成 > shousei\ ;
+肉眼 > nikugan\ ;
+中道 > chuudou\ ;
+少憩 > shoukei\ ;
+客演 > kyakuen\ ;
+完熟 > kanjuku\ ;
+一門 > ichimon\ ;
+暗鬱 > an''utsu\ ;
+小憩 > shoukei\ ;
+中退 > chuutai\ ;
+植付 > uetsuke\ ;
+理窟 > rikutsu\ ;
+実演 > jitsuen\ ;
+修好 > shuukou\ ;
+尼寺 > amadera\ ;
+中農 > chuunou\ ;
+村落 > sonraku\ ;
+末裔 > matsuei\ ;
+尺寸 > sekisun\ ;
+驚嘆 > kyoutan\ ;
+梢子 > shoushi\ ;
+寸描 > sunbyou\ ;
+木製 > mokusei\ ;
+佗歌 > wabiuta\ ;
+並進 > heishin\ ;
+修士 > shuushi\ ;
+風評 > fuuhyou\ ;
+番人 > ban''nin\ ;
+害毒 > gaidoku\ ;
+学生 > gakusei\ ;
+朗読 > roudoku\ ;
+朗誦 > roushou\ ;
+実測 > jissoku\ ;
+生垣 > ikegaki\ ;
+属国 > zokkoku\ ;
+五色 > goshoku\ ;
+赤札 > akafuda\ ;
+板締 > itajime\ ;
+珍聞 > chinbun\ ;
+町名 > choumei\ ;
+朝見 > chouken\ ;
+暮雪 > bosetsu\ ;
+仕種 > shigusa\ ;
+佳月 > kagetsu\ ;
+肉界 > nikukai\ ;
+宮殿 > kyuuden\ ;
+来聴 > raichou\ ;
+頭領 > touryou\ ;
+任用 > nin''you\ ;
+胸板 > munaita\ ;
+信奉 > shinpou\ ;
+梓宮 > shikyuu\ ;
+板紙 > itagami\ ;
+頭頂 > touchou\ ;
+二色 > nishoku\ ;
+駐支 > chuushi\ ;
+小径 > shoukei\ ;
+曲路 > kyokuro\ ;
+少弟 > shoutei\ ;
+両輪 > ryourin\ ;
+木蝋 > mokurou\ ;
+一錠 > ichijou\ ;
+実況 > jikkyou\ ;
+赤旗 > akahata\ ;
+小弟 > shoutei\ ;
+俗姓 > zokusei\ ;
+係属 > keizoku\ ;
+佳日 > kajitsu\ ;
+両軍 > ryougun\ ;
+胎毒 > taidoku\ ;
+留任 > ryuunin\ ;
+朽葉 > kuchiba\ ;
+松籟 > shourai\ ;
+小康 > shoukou\ ;
+山勘 > yamakan\ ;
+少年 > shounen\ ;
+今程 > imahodo\ ;
+駒損 > komason\ ;
+罪障 > zaishou\ ;
+小店 > shouten\ ;
+宿根 > shukkon\ ;
+月評 > geppyou\ ;
+署長 > shochou\ ;
+今秋 > konshuu\ ;
+町制 > chousei\ ;
+下部 > shimobe\ ;
+専念 > sen''nen\ ;
+束群 > sokugun\ ;
+実母 > jitsubo\ ;
+専心 > senshin\ ;
+献酬 > kenshuu\ ;
+丁重 > teichou\ ;
+不達 > futatsu\ ;
+主調 > shuchou\ ;
+下達 > katatsu\ ;
+飛脚 > hikyaku\ ;
+町内 > chounai\ ;
+月見 > tsukimi\ ;
+俗塵 > zokujin\ ;
+個別 > kobetsu\ ;
+属名 > zokumei\ ;
+倡佯 > shouyou\ ;
+付着 > fuchaku\ ;
+上進 > joushin\ ;
+服装 > fukusou\ ;
+体格 > taikaku\ ;
+猟銃 > ryoujuu\ ;
+交絡 > kouraku\ ;
+棄却 > kikyaku\ ;
+何某 > nanibou\ ;
+校服 > koufuku\ ;
+仕着 > shikise\ ;
+木蔦 > kidzuta\ ;
+貧窮 > hinkyuu\ ;
+肉片 > nikuhen\ ;
+将帥 > shousui\ ;
+男優 > dan''yuu\ ;
+木蓮 > mokuren\ ;
+曲譜 > kyokufu\ ;
+梗塞 > kousoku\ ;
+甲冑 > katchuu\ ;
+侵害 > shingai\ ;
+肥溜 > koedame\ ;
+賞玩 > shougan\ ;
+借人 > karinin\ ;
+人称 > ninshou\ ;
+俊士 > shunshi\ ;
+有衆 > yuushuu\ ;
+書評 > shohyou\ ;
+密教 > mikkyou\ ;
+豪腹 > goufuku\ ;
+一道 > ichidou\ ;
+一遇 > ichiguu\ ;
+書証 > shoshou\ ;
+貫禄 > kanroku\ ;
+越年 > etsunen\ ;
+一連 > ichiren\ ;
+生協 > seikyou\ ;
+三軸 > sanjiku\ ;
+老臣 > roushin\ ;
+条約 > jouyaku\ ;
+修史 > shuushi\ ;
+豆蔵 > mamezou\ ;
+余日 > yojitsu\ ;
+球界 > kyuukai\ ;
+作文 > sakubun\ ;
+小寒 > shoukan\ ;
+賞状 > shoujou\ ;
+杜絶 > tozetsu\ ;
+低木 > teiboku\ ;
+尊属 > sonzoku\ ;
+馬方 > umakata\ ;
+乱臣 > ranshin\ ;
+何時 > nandoki\ ;
+赤手 > sekishu\ ;
+小官 > shoukan\ ;
+乳腺 > nyuusen\ ;
+少子 > shoushi\ ;
+献身 > kenshin\ ;
+倒伏 > toufuku\ ;
+賞牌 > shouhai\ ;
+曲解 > kyokkai\ ;
+珍答 > chintou\ ;
+一輪 > ichirin\ ;
+寵幸 > choukou\ ;
+町会 > choukai\ ;
+定業 > teigyou\ ;
+驕傲 > kyougou\ ;
+驚倒 > kyoutou\ ;
+尊容 > son''you\ ;
+現用 > gen''you\ ;
+上足 > jousoku\ ;
+官業 > kangyou\ ;
+両論 > ryouron\ ;
+一軍 > ichigun\ ;
+町人 > chounin\ ;
+上越 > jouetsu\ ;
+尊宅 > sontaku\ ;
+項領 > kouryou\ ;
+香木 > kouboku\ ;
+局員 > kyokuin\ ;
+専属 > senzoku\ ;
+何故 > naniyue\ ;
+亢竜 > kouryou\ ;
+猛進 > moushin\ ;
+介病 > kaibyou\ ;
+将官 > shoukan\ ;
+仏画 > butsuga\ ;
+脱字 > datsuji\ ;
+猛追 > moutsui\ ;
+贅沢 > zeitaku\ ;
+信号 > shingou\ ;
+田作 > densaku\ ;
+伯楽 > bakurou\ ;
+定格 > teikaku\ ;
+山中 > sanchuu\ ;
+胸懐 > kyoukai\ ;
+本腹 > honpuku\ ;
+対審 > taishin\ ;
+五節 > gosetsu\ ;
+主虹 > shuniji\ ;
+並製 > namisei\ ;
+甚六 > jinroku\ ;
+狂騒 > kyousou\ ;
+赤恥 > akahaji\ ;
+朱肉 > shuniku\ ;
+余接 > yosetsu\ ;
+甲乙 > kouotsu\ ;
+井筒 > idzutsu\ ;
+本能 > hon''nou\ ;
+万象 > banshou\ ;
+瑣末 > samatsu\ ;
+香料 > kouryou\ ;
+俗名 > zokumei\ ;
+球状 > kyuujou\ ;
+胴慾 > douyoku\ ;
+人皇 > nin''nou\ ;
+人的 > jinteki\ ;
+伏水 > fukusui\ ;
+少壮 > shousou\ ;
+脆弱 > zeijaku\ ;
+饑渇 > kikatsu\ ;
+小変 > shouhen\ ;
+主薬 > shuyaku\ ;
+購求 > koukyuu\ ;
+官有 > kan''yuu\ ;
+休止 > kyuushi\ ;
+了簡 > ryouken\ ;
+他物 > tabutsu\ ;
+羽虫 > hamushi\ ;
+産休 > sankyuu\ ;
+胎教 > taikyou\ ;
+作戦 > sakusen\ ;
+伯林 > berurin\ ;
+作成 > sakusei\ ;
+寒心 > kanshin\ ;
+狂風 > kyoufuu\ ;
+宣教 > senkyou\ ;
+背教 > haikyou\ ;
+豊胸 > houkyou\ ;
+柳条 > ryuujou\ ;
+将士 > shoushi\ ;
+生乳 > seinyuu\ ;
+宗旨 > shuushi\ ;
+侯国 > koukoku\ ;
+群衆 > gunshuu\ ;
+宗族 > souzoku\ ;
+肉池 > nikuchi\ ;
+梓匠 > shishou\ ;
+三角 > sankaku\ ;
+下見 > shitami\ ;
+伏樋 > fusedoi\ ;
+肉汁 > nikujuu\ ;
+乳糖 > nyuutou\ ;
+玄翁 > gen''nou\ ;
+一説 > issetsu\ ;
+駐屯 > chuuton\ ;
+就労 > shuurou\ ;
+胸底 > kyoutei\ ;
+宣揚 > sen''you\ ;
+買物 > kaimono\ ;
+顛覆 > tenpuku\ ;
+修交 > shuukou\ ;
+居候 > isourou\ ;
+服膺 > fukuyou\ ;
+宿怨 > shukuen\ ;
+而立 > jiritsu\ ;
+枯渇 > kokatsu\ ;
+風習 > fuushuu\ ;
+乗羃 > joubeki\ ;
+屈伸 > kusshin\ ;
+俗僧 > zokusou\ ;
+顕要 > ken''you\ ;
+肇歳 > chousai\ ;
+屈伏 > kuppuku\ ;
+本給 > honkyuu\ ;
+中葉 > chuuyou\ ;
+罪跡 > zaiseki\ ;
+飛礫 > tsubute\ ;
+条目 > joumoku\ ;
+一覧 > ichiran\ ;
+密度 > mitsudo\ ;
+上表 > jouhyou\ ;
+下血 > geketsu\ ;
+最良 > sairyou\ ;
+足労 > sokurou\ ;
+守旧 > shukyuu\ ;
+小善 > shouzen\ ;
+仮決 > kaketsu\ ;
+寛容 > kan''you\ ;
+休校 > kyuukou\ ;
+信仰 > shinkou\ ;
+栖息 > seisoku\ ;
+井目 > seimoku\ ;
+尚又 > naomata\ ;
+暗躍 > an''yaku\ ;
+考究 > koukyuu\ ;
+晩鐘 > banshou\ ;
+貨物 > kamotsu\ ;
+実技 > jitsugi\ ;
+本籤 > honkuji\ ;
+脱営 > datsuei\ ;
+体得 > taitoku\ ;
+本籍 > honseki\ ;
+木精 > mokusei\ ;
+小品 > shouhin\ ;
+有職 > yuusoku\ ;
+佳客 > kakyaku\ ;
+美術 > bijutsu\ ;
+罪責 > zaiseki\ ;
+赤子 > sekishi\ ;
+害心 > gaishin\ ;
+俗体 > zokutai\ ;
+昼餐 > chuusan\ ;
+二着 > nichaku\ ;
+俗伝 > zokuden\ ;
+了知 > ryouchi\ ;
+核子 > kakushi\ ;
+本箱 > honbako\ ;
+服罪 > fukuzai\ ;
+二直 > nichoku\ ;
+馬市 > umaichi\ ;
+環境 > kankyou\ ;
+小史 > shoushi\ ;
+俗人 > zokujin\ ;
+何年 > nan''nen\ ;
+猛襲 > moushuu\ ;
+小口 > koguchi\ ;
+松煤 > shoubai\ ;
+本筋 > honsuji\ ;
+東独 > toudoku\ ;
+獣肉 > juuniku\ ;
+中興 > chuukou\ ;
+二百 > nihyaku\ ;
+曲舞 > kusemai\ ;
+珍獣 > chinjuu\ ;
+本章 > honshou\ ;
+主翼 > shuyoku\ ;
+俗世 > zokusei\ ;
+群落 > gunraku\ ;
+飴玉 > amedama\ ;
+耄碌 > mouroku\ ;
+宮廷 > kyuutei\ ;
+就任 > shuunin\ ;
+妙齢 > myourei\ ;
+時雨 > shigure\ ;
+宮庭 > kyuutei\ ;
+中脳 > chuunou\ ;
+木立 > kodachi\ ;
+王立 > ouritsu\ ;
+小勇 > shouyuu\ ;
+職権 > shokken\ ;
+侵冦 > shinkou\ ;
+現況 > genkyou\ ;
+寄宿 > kishuku\ ;
+背徳 > haitoku\ ;
+習練 > shuuren\ ;
+格外 > kakugai\ ;
+上蔟 > jouzoku\ ;
+中背 > chuuzei\ ;
+赤外 > sekigai\ ;
+両舷 > ryougen\ ;
+季末 > kimatsu\ ;
+染料 > senryou\ ;
+松濤 > shoutou\ ;
+柄杓 > hishaku\ ;
+独走 > dokusou\ ;
+仮植 > kashoku\ ;
+玉稿 > gyokkou\ ;
+小刀 > shoutou\ ;
+便侫 > ben''nei\ ;
+頭註 > touchuu\ ;
+他殺 > tasatsu\ ;
+下葉 > shitaba\ ;
+足代 > ashidai\ ;
+有給 > yuukyuu\ ;
+便佞 > ben''nei\ ;
+中老 > chuurou\ ;
+月給 > gekkyuu\ ;
+駐在 > chuuzai\ ;
+首席 > shuseki\ ;
+有終 > yuushuu\ ;
+両腕 > ryouude\ ;
+獄舎 > gokusha\ ;
+頭角 > toukaku\ ;
+顛落 > tenraku\ ;
+小党 > shoutou\ ;
+侠勇 > kyouyuu\ ;
+導入 > dounyuu\ ;
+伝承 > denshou\ ;
+胸声 > kyousei\ ;
+乙種 > otsushu\ ;
+乗積 > jouseki\ ;
+牝鶏 > mendori\ ;
+群臣 > gunshin\ ;
+孟春 > moushun\ ;
+供勢 > tomozei\ ;
+乾留 > kanryuu\ ;
+審問 > shinmon\ ;
+賎業 > sengyou\ ;
+賞杯 > shouhai\ ;
+介殻 > kaikaku\ ;
+一葉 > ichiyou\ ;
+最終 > saishuu\ ;
+乳癌 > nyuugan\ ;
+将兵 > shouhei\ ;
+牝鳥 > mendori\ ;
+仰望 > gyoubou\ ;
+宗廟 > soubyou\ ;
+乾瓢 > kanpyou\ ;
+耽溺 > tandeki\ ;
+住宅 > juutaku\ ;
+両者 > ryousha\ ;
+超勤 > choukin\ ;
+貫流 > kanryuu\ ;
+官庁 > kanchou\ ;
+老病 > roubyou\ ;
+定席 > jouseki\ ;
+賓格 > hinkaku\ ;
+朝礼 > chourei\ ;
+小便 > shonben\ ;
+寸劇 > sungeki\ ;
+封入 > fuunyuu\ ;
+警鐘 > keishou\ ;
+春雷 > shunrai\ ;
+寒国 > kankoku\ ;
+侯伯 > kouhaku\ ;
+中編 > chuuhen\ ;
+未着 > michaku\ ;
+本省 > honshou\ ;
+書経 > shokyou\ ;
+寸刻 > sunkoku\ ;
+事物 > jibutsu\ ;
+仕業 > shiwaza\ ;
+首将 > shushou\ ;
+休戦 > kyuusen\ ;
+現業 > gengyou\ ;
+曳網 > hikiami\ ;
+尊信 > sonshin\ ;
+中継 > chuukei\ ;
+超凡 > choubon\ ;
+仲断 > chuudan\ ;
+小伝 > shouden\ ;
+鞦韆 > buranko\ ;
+豪球 > goukyuu\ ;
+乱用 > ran''you\ ;
+領解 > ryoukai\ ;
+七色 > nanairo\ ;
+上膊 > jouhaku\ ;
+何奴 > doyatsu\ ;
+林業 > ringyou\ ;
+一芸 > ichigei\ ;
+休憩 > kyuukei\ ;
+東清 > toushin\ ;
+犬釘 > inukugi\ ;
+球根 > kyuukon\ ;
+未発 > mihatsu\ ;
+小人 > shounin\ ;
+佗声 > wabigoe\ ;
+一色 > hitoiro\ ;
+主筋 > shusuji\ ;
+下脚 > kakyaku\ ;
+中糸 > chuuito\ ;
+群羊 > gun''you\ ;
+資格 > shikaku\ ;
+書籍 > shoseki\ ;
+宿場 > shukuba\ ;
+春闘 > shuntou\ ;
+専修 > senshuu\ ;
+小乗 > shoujou\ ;
+伸展 > shinten\ ;
+例刻 > reikoku\ ;
+暴落 > bouraku\ ;
+狂躁 > kyousou\ ;
+貨殖 > kashoku\ ;
+京洛 > keiraku\ ;
+会心 > kaishin\ ;
+中米 > chuubei\ ;
+交渉 > koushou\ ;
+頌詞 > shoushi\ ;
+万能 > man''nou\ ;
+三育 > san''iku\ ;
+三股 > sanmata\ ;
+一膳 > ichizen\ ;
+学才 > gakusai\ ;
+特電 > tokuden\ ;
+順調 > junchou\ ;
+羽箒 > habouki\ ;
+脚光 > kyakkou\ ;
+定宿 > jouyado\ ;
+審判 > shinpan\ ;
+独裁 > dokusai\ ;
+羊膜 > youmaku\ ;
+末生 > suenari\ ;
+査察 > sasatsu\ ;
+豪物 > eramono\ ;
+中篇 > chuuhen\ ;
+専任 > sen''nin\ ;
+羊腸 > youchou\ ;
+上翼 > jouyoku\ ;
+休怠 > kyuutai\ ;
+乱獲 > rankaku\ ;
+交流 > kouryuu\ ;
+姦通 > kantsuu\ ;
+義絶 > gizetsu\ ;
+昇順 > shoujun\ ;
+貝毒 > kaidoku\ ;
+官学 > kangaku\ ;
+現有 > gen''yuu\ ;
+貝殼 > kaigara\ ;
+貝殻 > kaigara\ ;
+賞揚 > shouyou\ ;
+中等 > chuutou\ ;
+物音 > monooto\ ;
+乳状 > nyuujou\ ;
+主神 > shushin\ ;
+林木 > rinboku\ ;
+玉璽 > gyokuji\ ;
+会席 > kaiseki\ ;
+狼藉 > rouzeki\ ;
+羊肉 > youniku\ ;
+翼状 > yokujou\ ;
+預血 > yoketsu\ ;
+風疹 > fuushin\ ;
+休廷 > kyuutei\ ;
+玉瑛 > gyokuei\ ;
+宮城 > kyuujou\ ;
+超人 > choujin\ ;
+宿営 > shukuei\ ;
+枝族 > shizoku\ ;
+他日 > tajitsu\ ;
+老熟 > roujuku\ ;
+讃賞 > sanshou\ ;
+資料 > shiryou\ ;
+駐兵 > chuuhei\ ;
+一群 > ichigun\ ;
+低圧 > teiatsu\ ;
+松楓 > shoufuu\ ;
+今朝 > konchou\ ;
+丹碧 > tanpeki\ ;
+暮色 > boshoku\ ;
+仕方 > shikata\ ;
+飢渇 > kikatsu\ ;
+今更 > imasara\ ;
+密告 > mikkoku\ ;
+昇降 > shoukou\ ;
+犯跡 > hanseki\ ;
+貴札 > kisatsu\ ;
+飄然 > hyouzen\ ;
+今暁 > kongyou\ ;
+早馬 > hayauma\ ;
+作品 > sakuhin\ ;
+負極 > fukyoku\ ;
+人格 > jinkaku\ ;
+本物 > honmono\ ;
+今時 > imadoki\ ;
+来歴 > raireki\ ;
+音訳 > on''yaku\ ;
+今春 > konshun\ ;
+今昔 > konseki\ ;
+聚斂 > shuuren\ ;
+仏教 > bukkyou\ ;
+貯木 > choboku\ ;
+木犀 > mokusei\ ;
+買春 > baishun\ ;
+富力 > furyoku\ ;
+上級 > joukyuu\ ;
+上紙 > uwagami\ ;
+聚散 > shuusan\ ;
+上紐 > uwahimo\ ;
+三級 > sankyuu\ ;
+今方 > imagata\ ;
+両種 > ryoushu\ ;
+木版 > mokuhan\ ;
+木片 > mokuhen\ ;
+孝心 > koushin\ ;
+狂詩 > kyoushi\ ;
+背圧 > haiatsu\ ;
+乾溜 > kanryuu\ ;
+肉弾 > nikudan\ ;
+獄窓 > gokusou\ ;
+学年 > gakunen\ ;
+聖教 > seikyou\ ;
+客土 > kyakudo\ ;
+譴責 > kenseki\ ;
+服用 > fukuyou\ ;
+低唱 > teishou\ ;
+旧風 > kyuufuu\ ;
+献納 > ken''nou\ ;
+存念 > zon''nen\ ;
+率爾 > sotsuji\ ;
+学帽 > gakubou\ ;
+明鏡 > meikyou\ ;
+本然 > hon''nen\ ;
+狂言 > kyougen\ ;
+仕掛 > shikake\ ;
+株券 > kabuken\ ;
+飛沫 > himatsu\ ;
+風狂 > fuukyou\ ;
+子息 > shisoku\ ;
+馬匹 > bahitsu\ ;
+書目 > shomoku\ ;
+上箱 > uwabako\ ;
+胸像 > kyouzou\ ;
+伏射 > fukusha\ ;
+胴元 > doumoto\ ;
+定圧 > teiatsu\ ;
+暗色 > anshoku\ ;
+完壁 > kanbeki\ ;
+胆嚢 > tan''nou\ ;
+豊熟 > houjuku\ ;
+上策 > jousaku\ ;
+顎紐 > agohimo\ ;
+木炭 > mokutan\ ;
+余力 > yoryoku\ ;
+体協 > taikyou\ ;
+首唱 > shushou\ ;
+中盤 > chuuban\ ;
+校則 > kousoku\ ;
+耳栓 > mimisen\ ;
+余割 > yokatsu\ ;
+万策 > bansaku\ ;
+令息 > reisoku\ ;
+片面 > katamen\ ;
+密儀 > mitsugi\ ;
+特配 > tokuhai\ ;
+乳清 > nyuusei\ ;
+日露 > nichiro\ ;
+献策 > kensaku\ ;
+余切 > yosetsu\ ;
+享有 > kyouyuu\ ;
+聴従 > choujuu\ ;
+乳液 > nyuueki\ ;
+核仁 > kakujin\ ;
+客員 > kyakuin\ ;
+星辰 > seishin\ ;
+献立 > kondate\ ;
+両眼 > ryougan\ ;
+何処 > dokoira\ ;
+豆炭 > mametan\ ;
+実員 > jitsuin\ ;
+特選 > tokusen\ ;
+宣告 > senkoku\ ;
+佝僂 > semushi\ ;
+珍本 > chinpon\ ;
+代役 > daiyaku\ ;
+乱流 > ranryuu\ ;
+一端 > ippashi\ ;
+三秋 > sanshuu\ ;
+容共 > youkyou\ ;
+校僕 > kouboku\ ;
+珍書 > chinsho\ ;
+何共 > nantomo\ ;
+寒中 > kanchuu\ ;
+丞相 > joushou\ ;
+中瓶 > chuubin\ ;
+万福 > manpuku\ ;
+来朝 > raichou\ ;
+職工 > shokkou\ ;
+宅地 > takuchi\ ;
+乳汁 > nyuujuu\ ;
+宮刑 > kyuukei\ ;
+飼料 > shiryou\ ;
+伏奏 > fukusou\ ;
+実収 > jisshuu\ ;
+校倉 > azekura\ ;
+翕然 > kyuuzen\ ;
+新鮮 > shinsen\ ;
+豊漁 > houryou\ ;
+譫言 > uwagoto\ ;
+朝潮 > asashio\ ;
+風潮 > fuuchou\ ;
+球形 > kyuukei\ ;
+胴中 > dounaka\ ;
+頚肉 > keiniku\ ;
+実印 > jitsuin\ ;
+作例 > sakurei\ ;
+本流 > honryuu\ ;
+密事 > mitsuji\ ;
+仰山 > gyousan\ ;
+仏恩 > butsuon\ ;
+他律 > taritsu\ ;
+来春 > raiharu\ ;
+乳歯 > nyuushi\ ;
+休場 > kyuujou\ ;
+現役 > gen''eki\ ;
+一礼 > ichirei\ ;
+順良 > junryou\ ;
+仕形 > shikata\ ;
+上石 > uwaishi\ ;
+両用 > ryouyou\ ;
+両生 > ryousei\ ;
+実務 > jitsumu\ ;
+五月 > satsuki\ ;
+子局 > kokyoku\ ;
+不着 > fuchaku\ ;
+下着 > shitagi\ ;
+未決 > miketsu\ ;
+大黒 > daikoku\ ;
+校了 > kouryou\ ;
+昂進 > koushin\ ;
+仕度 > shitaku\ ;
+学外 > gakugai\ ;
+実利 > jitsuri\ ;
+宗匠 > soushou\ ;
+頬紅 > hoobeni\ ;
+子宮 > shikyuu\ ;
+面長 > omonaga\ ;
+識語 > shikigo\ ;
+低俗 > teizoku\ ;
+学士 > gakushi\ ;
+下目 > shitame\ ;
+奇骨 > kikotsu\ ;
+杏林 > kyourin\ ;
+孑孑 > boufuri\ ;
+聖徳 > seitoku\ ;
+暗緑 > anryoku\ ;
+馬主 > banushi\ ;
+特赦 > tokusha\ ;
+不発 > fuhatsu\ ;
+九泉 > kyuusen\ ;
+何人 > nanpito\ ;
+伏在 > fukuzai\ ;
+職安 > shokuan\ ;
+定則 > teisoku\ ;
+新香 > shinkou\ ;
+景色 > keshiki\ ;
+定刻 > teikoku\ ;
+村有 > son''yuu\ ;
+材木 > zaimoku\ ;
+朧気 > oboroge\ ;
+万目 > banmoku\ ;
+買得 > kaidoku\ ;
+露骨 > rokotsu\ ;
+仏座 > butsuza\ ;
+飛札 > hisatsu\ ;
+伝唱 > denshou\ ;
+大鷺 > daisagi\ ;
+上白 > jouhaku\ ;
+論駁 > ronbaku\ ;
+風流 > fuuryuu\ ;
+学報 > gakuhou\ ;
+肉声 > nikusei\ ;
+代将 > daishou\ ;
+豊沃 > houyoku\ ;
+新館 > shinkan\ ;
+会商 > kaishou\ ;
+聖廟 > seibyou\ ;
+家主 > yanushi\ ;
+一着 > itchaku\ ;
+一眼 > ichigan\ ;
+一眸 > ichibou\ ;
+識見 > shikken\ ;
+某国 > boukoku\ ;
+杉材 > sugizai\ ;
+仁心 > jinshin\ ;
+一眠 > ichimin\ ;
+仁徳 > jintoku\ ;
+宛先 > atesaki\ ;
+理屈 > rikutsu\ ;
+新風 > shinpuu\ ;
+一直 > itchoku\ ;
+今年 > kon''nen\ ;
+胚乳 > hainyuu\ ;
+二日 > futsuka\ ;
+断食 > danjiki\ ;
+完勝 > kanshou\ ;
+乳棒 > nyuubou\ ;
+九死 > kyuushi\ ;
+下略 > geryaku\ ;
+瑞兆 > zuichou\ ;
+新顔 > shingao\ ;
+万病 > manbyou\ ;
+背信 > haishin\ ;
+讒臣 > zanshin\ ;
+主潮 > shuchou\ ;
+韻脚 > inkyaku\ ;
+一発 > ippatsu\ ;
+上申 > joushin\ ;
+翼棟 > yokutou\ ;
+三男 > san''nan\ ;
+材料 > zairyou\ ;
+官僚 > kanryou\ ;
+文鳥 > bunchou\ ;
+人徳 > nintoku\ ;
+仰天 > gyouten\ ;
+賊害 > zokugai\ ;
+中点 > chuuten\ ;
+題目 > daimoku\ ;
+人形 > ningyou\ ;
+牛車 > gyuusha\ ;
+賊子 > zokushi\ ;
+本業 > hongyou\ ;
+老松 > roushou\ ;
+旧邦 > kyuuhou\ ;
+果実 > kajitsu\ ;
+一畳 > ichijou\ ;
+貧弱 > hinjaku\ ;
+爆風 > bakufuu\ ;
+老朽 > roukyuu\ ;
+早速 > sassoku\ ;
+旧道 > kyuudou\ ;
+老木 > rouboku\ ;
+特認 > tokunin\ ;
+一男 > ichinan\ ;
+本棚 > hondana\ ;
+妙趣 > myoushu\ ;
+霊鳥 > reichou\ ;
+物象 > busshou\ ;
+仏寺 > butsuji\ ;
+末梢 > masshou\ ;
+論難 > ron''nan\ ;
+上玉 > joudama\ ;
+定休 > teikyuu\ ;
+論集 > ronshuu\ ;
+林学 > ringaku\ ;
+学問 > gakumon\ ;
+豪族 > gouzoku\ ;
+職場 > shokuba\ ;
+本格 > honkaku\ ;
+好適 > kouteki\ ;
+会則 > kaisoku\ ;
+主流 > shuryuu\ ;
+既述 > kijutsu\ ;
+義烈 > giretsu\ ;
+物議 > butsugi\ ;
+貸家 > kashiya\ ;
+有毒 > yuudoku\ ;
+新開 > shinkai\ ;
+下物 > kabutsu\ ;
+仙女 > sen''nyo\ ;
+爆雷 > bakurai\ ;
+伏勢 > fusezei\ ;
+特製 > tokusei\ ;
+上物 > joumono\ ;
+狂者 > kyousha\ ;
+枠外 > wakugai\ ;
+本朝 > honchou\ ;
+特装 > tokusou\ ;
+領空 > ryoukuu\ ;
+学名 > gakumei\ ;
+旧蹟 > furuato\ ;
+末期 > matsugo\ ;
+木杯 > mokuhai\ ;
+謬論 > byuuron\ ;
+木材 > mokuzai\ ;
+享年 > kyounen\ ;
+学友 > gakuyuu\ ;
+猩猩 > shoujou\ ;
+休刊 > kyuukan\ ;
+木本 > mokuhon\ ;
+下熱 > genetsu\ ;
+物証 > busshou\ ;
+安佚 > an''itsu\ ;
+来復 > raifuku\ ;
+旧跡 > furuato\ ;
+雷鳥 > raichou\ ;
+仙境 > senkyou\ ;
+丹毒 > tandoku\ ;
+旧趾 > kyuushi\ ;
+木曜 > mokuyou\ ;
+曲浦 > kyokuho\ ;
+類焼 > ruishou\ ;
+風格 > fuukaku\ ;
+球場 > kyuujou\ ;
+松屋 > matsuya\ ;
+完了 > kanryou\ ;
+頭目 > toumoku\ ;
+九月 > kugatsu\ ;
+伏兵 > fukuhei\ ;
+特融 > tokuyuu\ ;
+乱撃 > rangeki\ ;
+獣欲 > juuyoku\ ;
+天領 > tenryou\ ;
+貨客 > kakyaku\ ;
+豆板 > mameita\ ;
+天頂 > tenchou\ ;
+木星 > mokusei\ ;
+期末 > kimatsu\ ;
+購入 > kounyuu\ ;
+餅屋 > mochiya\ ;
+嫡披 > chakuhi\ ;
+朝来 > chourai\ ;
+謬見 > byuuken\ ;
+震駭 > shingai\ ;
+下火 > shitabi\ ;
+豆本 > mamehon\ ;
+賞品 > shouhin\ ;
+学制 > gakusei\ ;
+妙計 > myoukei\ ;
+今夕 > kon''yuu\ ;
+猟犬 > ryouken\ ;
+九星 > kyuusei\ ;
+姿絵 > sugatae\ ;
+失陥 > shikkan\ ;
+職員 > shokuin\ ;
+方針 > houshin\ ;
+夜食 > yashoku\ ;
+球団 > kyuudan\ ;
+新鋭 > shin''ei\ ;
+中段 > chuudan\ ;
+両洋 > ryouyou\ ;
+多食 > tashoku\ ;
+肖像 > shouzou\ ;
+東屋 > azumaya\ ;
+講読 > koudoku\ ;
+天雲 > amagumo\ ;
+不潔 > fuketsu\ ;
+学内 > gakunai\ ;
+中正 > chuusei\ ;
+中止 > chuushi\ ;
+文革 > bunkaku\ ;
+束帯 > sokutai\ ;
+期日 > kijitsu\ ;
+講評 > kouhyou\ ;
+食後 > shokugo\ ;
+不滅 > fumetsu\ ;
+猛爆 > moubaku\ ;
+学僧 > gakusou\ ;
+朝方 > asagata\ ;
+夕風 > yuukaze\ ;
+音節 > onsetsu\ ;
+大陸 > tairiku\ ;
+乳房 > nyuubou\ ;
+休会 > kyuukai\ ;
+文集 > bunshuu\ ;
+両氏 > ryoushi\ ;
+仏国 > fukkoku\ ;
+聴取 > choushu\ ;
+職印 > shokuin\ ;
+独眼 > dokugan\ ;
+朝政 > chousei\ ;
+下湯 > shimoyu\ ;
+風教 > fuukyou\ ;
+新酒 > shinshu\ ;
+夜露 > yotsuyu\ ;
+面責 > menseki\ ;
+人声 > hitogoe\ ;
+珍宝 > chinpou\ ;
+纒足 > tensoku\ ;
+主格 > shukaku\ ;
+村庄 > sonshou\ ;
+妄評 > mouhyou\ ;
+職務 > shokumu\ ;
+飯屋 > meshiya\ ;
+昆虫 > konchuu\ ;
+板壁 > itakabe\ ;
+新郎 > shinrou\ ;
+人境 > jinkyou\ ;
+纏足 > tensoku\ ;
+仲冬 > chuutou\ ;
+乾徳 > kentoku\ ;
+書棚 > shodana\ ;
+好調 > kouchou\ ;
+夕靄 > yuumoya\ ;
+新選 > shinsen\ ;
+来宅 > raitaku\ ;
+置物 > okimono\ ;
+獄死 > gokushi\ ;
+末技 > matsugi\ ;
+札所 > fudasho\ ;
+夕霧 > yuugiri\ ;
+頒白 > hanpaku\ ;
+旧観 > kyuukan\ ;
+上海 > shanhai\ ;
+斤量 > kinryou\ ;
+新道 > shindou\ ;
+仲兄 > chuukei\ ;
+既設 > kisetsu\ ;
+賊名 > zokumei\ ;
+晩秋 > banshuu\ ;
+好評 > kouhyou\ ;
+上流 > jouryuu\ ;
+嬌姿 > kyoushi\ ;
+新造 > shinzou\ ;
+乗換 > norikae\ ;
+三流 > sanryuu\ ;
+上洛 > jouraku\ ;
+雌鶏 > mendori\ ;
+末成 > uranari\ ;
+片親 > kataoya\ ;
+賠償 > baishou\ ;
+三洋 > san''you\ ;
+翌晩 > yokuban\ ;
+九拝 > kyuuhai\ ;
+仮免 > karimen\ ;
+丸材 > maruzai\ ;
+任侠 > ninkyou\ ;
+京大 > kyoudai\ ;
+旧製 > kyuusei\ ;
+丸本 > marubon\ ;
+肉体 > nikutai\ ;
+月日 > tsukihi\ ;
+両様 > ryouyou\ ;
+霊長 > reichou\ ;
+有料 > yuuryou\ ;
+雌鳥 > mendori\ ;
+敵陣 > tekijin\ ;
+項目 > koumoku\ ;
+変革 > henkaku\ ;
+乱心 > ranshin\ ;
+一浪 > ichirou\ ;
+放鳥 > houchou\ ;
+嬌声 > kyousei\ ;
+料金 > ryoukin\ ;
+老弱 > roujaku\ ;
+夕闇 > yuuyami\ ;
+数隻 > suuseki\ ;
+朽廃 > kyuuhai\ ;
+象形 > shoukei\ ;
+新車 > shinsha\ ;
+中枢 > chuusuu\ ;
+事局 > jikyoku\ ;
+文鎮 > bunchin\ ;
+両棲 > ryousei\ ;
+仮借 > kashaku\ ;
+中東 > chuutou\ ;
+代入 > dainyuu\ ;
+一泡 > hitoawa\ ;
+教養 > kyouyou\ ;
+雨風 > amekaze\ ;
+下歯 > shitaba\ ;
+豪州 > goushuu\ ;
+最新 > saishin\ ;
+代償 > daishou\ ;
+革装 > kawasou\ ;
+仏印 > futsuin\ ;
+主教 > shukyou\ ;
+一決 > ikketsu\ ;
+事実 > jijitsu\ ;
+中更 > chuukou\ ;
+予察 > yosatsu\ ;
+一汗 > hitoase\ ;
+諸訳 > showake\ ;
+朝憲 > chouken\ ;
+姦策 > kansaku\ ;
+仲仕 > nakashi\ ;
+本心 > honshin\ ;
+仲介 > chuukai\ ;
+仲人 > nakoudo\ ;
+京地 > kyouchi\ ;
+本復 > honpuku\ ;
+買収 > baishuu\ ;
+教頭 > kyoutou\ ;
+一毫 > ichigou\ ;
+枠内 > wakunai\ ;
+中景 > chuukei\ ;
+一毛 > ichimou\ ;
+耳垢 > mimiaka\ ;
+牧草 > bokusou\ ;
+時節 > jisetsu\ ;
+顕正 > kenshou\ ;
+東国 > tougoku\ ;
+大量 > tairyou\ ;
+教鞭 > kyouben\ ;
+館内 > kan''nai\ ;
+中旬 > chuujun\ ;
+狩猟 > shuryou\ ;
+更新 > koushin\ ;
+縦隔 > juukaku\ ;
+中断 > chuudan\ ;
+雑駁 > zappaku\ ;
+頓狂 > tonkyou\ ;
+雨雲 > amagumo\ ;
+失透 > shittou\ ;
+両替 > ryougae\ ;
+雪隠 > setchin\ ;
+旧藩 > kyuuhan\ ;
+中数 > chuusuu\ ;
+末座 > matsuza\ ;
+飴坊 > amenbou\ ;
+代作 > daisaku\ ;
+本庁 > honchou\ ;
+丸損 > maruzon\ ;
+林内 > rin''nai\ ;
+本年 > hon''nen\ ;
+諧調 > kaichou\ ;
+末広 > suehiro\ ;
+中支 > chuushi\ ;
+旁註 > bouchuu\ ;
+代休 > daikyuu\ ;
+牧舎 > bokusha\ ;
+仏具 > butsugu\ ;
+亡国 > boukoku\ ;
+警笛 > keiteki\ ;
+末席 > masseki\ ;
+謹聴 > kinchou\ ;
+諸行 > shogyou\ ;
+玉座 > gyokuza\ ;
+老少 > roushou\ ;
+本州 > honshuu\ ;
+旧蔵 > kyuuzou\ ;
+久懐 > kyuukai\ ;
+老将 > roushou\ ;
+猛毒 > moudoku\ ;
+緘黙 > kanmoku\ ;
+介入 > kainyuu\ ;
+昨紙 > sakushi\ ;
+一様 > ichiyou\ ;
+習慣 > shuukan\ ;
+曝書 > bakusho\ ;
+両方 > ryouhou\ ;
+豹変 > hyouhen\ ;
+救難 > kyuunan\ ;
+球体 > kyuutai\ ;
+両断 > ryoudan\ ;
+奥行 > okuyuki\ ;
+朝廷 > choutei\ ;
+文通 > buntsuu\ ;
+食塩 > shokuen\ ;
+熱雲 > netsuun\ ;
+電鋳 > denchuu\ ;
+教門 > kyoumon\ ;
+雑音 > zatsuon\ ;
+方角 > hougaku\ ;
+狛犬 > komainu\ ;
+珍問 > chinmon\ ;
+失踪 > shissou\ ;
+牛舎 > gyuusha\ ;
+仙人 > sen''nin\ ;
+雁首 > gankubi\ ;
+暦法 > rekihou\ ;
+天軸 > tenjiku\ ;
+語釈 > goshaku\ ;
+人前 > hitomae\ ;
+現任 > gen''nin\ ;
+夜道 > yomichi\ ;
+論調 > ronchou\ ;
+乙巡 > otsujun\ ;
+夏野 > natsuno\ ;
+習性 > shuusei\ ;
+外郭 > gaikaku\ ;
+珍品 > chinpin\ ;
+朝市 > asaichi\ ;
+奉読 > houdoku\ ;
+嬌名 > kyoumei\ ;
+昼礼 > chuurei\ ;
+牧者 > bokusha\ ;
+獣慾 > juuyoku\ ;
+末尾 > matsubi\ ;
+下期 > shimoki\ ;
+大身 > taishin\ ;
+頭注 > touchuu\ ;
+数量 > suuryou\ ;
+燗酒 > kanzake\ ;
+仕事 > shigoto\ ;
+新訂 > shintei\ ;
+論評 > ronpyou\ ;
+上服 > uwafuku\ ;
+木履 > pokkuri\ ;
+末寺 > matsuji\ ;
+論証 > ronshou\ ;
+物置 > monooki\ ;
+服従 > fukujuu\ ;
+三月 > mitsuki\ ;
+服役 > fukueki\ ;
+両損 > ryouzon\ ;
+牛脂 > gyuushi\ ;
+牧羊 > bokuyou\ ;
+文身 > bunshin\ ;
+士長 > shichou\ ;
+変量 > henryou\ ;
+万有 > ban''yuu\ ;
+本宅 > hontaku\ ;
+曲技 > kyokugi\ ;
+青蛙 > aogaeru\ ;
+有徳 > yuutoku\ ;
+特級 > tokkyuu\ ;
+献木 > kenboku\ ;
+飛地 > tobichi\ ;
+猫板 > nekoita\ ;
+日英 > nichiei\ ;
+仏事 > butsuji\ ;
+請謁 > seietsu\ ;
+易経 > ekikyou\ ;
+詩集 > shishuu\ ;
+貝割 > kaiwari\ ;
+不日 > fujitsu\ ;
+暖流 > danryuu\ ;
+一条 > ichijou\ ;
+青虫 > aomushi\ ;
+諒解 > ryoukai\ ;
+改革 > kaikaku\ ;
+上昇 > joushou\ ;
+三春 > sanshun\ ;
+朽壊 > kyuukai\ ;
+一札 > issatsu\ ;
+耐圧 > taiatsu\ ;
+一望 > ichibou\ ;
+新装 > shinsou\ ;
+縫針 > nuibari\ ;
+仁侠 > jinkyou\ ;
+頂点 > chouten\ ;
+一曲 > ikkyoku\ ;
+丹念 > tan''nen\ ;
+音物 > inmotsu\ ;
+日舞 > nichibu\ ;
+旧臘 > kyuurou\ ;
+獣心 > juushin\ ;
+請託 > seitaku\ ;
+丹心 > tanshin\ ;
+老境 > roukyou\ ;
+主役 > shuyaku\ ;
+大賞 > taishou\ ;
+今一 > imaichi\ ;
+万斛 > bankoku\ ;
+三教 > sankyou\ ;
+一晩 > hitoban\ ;
+領海 > ryoukai\ ;
+主張 > shuchou\ ;
+天象 > tenshou\ ;
+晩熟 > banjuku\ ;
+妥結 > daketsu\ ;
+春秋 > haruaki\ ;
+販促 > hansoku\ ;
+牛缶 > gyuukan\ ;
+最強 > saikyou\ ;
+変速 > hensoku\ ;
+変通 > hentsuu\ ;
+狂犬 > kyouken\ ;
+翌年 > yokunen\ ;
+晩照 > banshou\ ;
+講習 > koushuu\ ;
+文責 > bunseki\ ;
+暗殺 > ansatsu\ ;
+敵軍 > tekigun\ ;
+特等 > tokutou\ ;
+片腕 > kataude\ ;
+奇術 > kijutsu\ ;
+一旬 > ichijun\ ;
+乞婿 > koimuko\ ;
+頸椎 > keitsui\ ;
+責任 > sekinin\ ;
+顔料 > ganryou\ ;
+誕辰 > tanshin\ ;
+斜角 > shakaku\ ;
+末女 > matsujo\ ;
+顕教 > kenkyou\ ;
+中性 > chuusei\ ;
+朱墨 > shuboku\ ;
+丁数 > chousuu\ ;
+一文 > ichimon\ ;
+旗色 > hatairo\ ;
+暗欝 > an''utsu\ ;
+女色 > joshoku\ ;
+旧聞 > kyuubun\ ;
+片肺 > katahai\ ;
+主席 > shuseki\ ;
+支障 > shishou\ ;
+朱塗 > shunuri\ ;
+什一 > juuichi\ ;
+領水 > ryousui\ ;
+面舵 > omokaji\ ;
+領民 > ryoumin\ ;
+丸帯 > maruobi\ ;
+総高 > soudaka\ ;
+謀臣 > boushin\ ;
+声量 > seiryou\ ;
+朧夜 > oboroyo\ ;
+変身 > henshin\ ;
+壁面 > hekimen\ ;
+翰墨 > kanboku\ ;
+乙姫 > otohime\ ;
+玄妙 > genmyou\ ;
+羸弱 > ruijaku\ ;
+天誅 > tenchuu\ ;
+九天 > kyuuten\ ;
+九大 > kyuudai\ ;
+三振 > sanshin\ ;
+二十 > hatachi\ ;
+不抜 > fubatsu\ ;
+中庸 > chuuyou\ ;
+顕揚 > ken''you\ ;
+大詰 > oodzume\ ;
+両性 > ryousei\ ;
+調製 > chousei\ ;
+豪商 > goushou\ ;
+文調 > bunchou\ ;
+大詔 > taishou\ ;
+曲度 > kyokudo\ ;
+中年 > chuunen\ ;
+編集 > henshuu\ ;
+一握 > ichiaku\ ;
+曲庇 > kyokuhi\ ;
+婉曲 > enkyoku\ ;
+説諭 > setsuyu\ ;
+狂瀾 > kyouran\ ;
+交信 > koushin\ ;
+中帽 > chuubou\ ;
+春眠 > shunmin\ ;
+頬桁 > hoogeta\ ;
+中巻 > chuukan\ ;
+牧童 > bokudou\ ;
+東京 > toukyou\ ;
+本国 > hongoku\ ;
+説話 > setsuwa\ ;
+食券 > shokken\ ;
+主将 > shushou\ ;
+来信 > raishin\ ;
+最少 > saishou\ ;
+最小 > saishou\ ;
+主審 > shushin\ ;
+二列 > niretsu\ ;
+一括 > ikkatsu\ ;
+非職 > hishoku\ ;
+改鋳 > kaichuu\ ;
+猛撃 > mougeki\ ;
+敏速 > binsoku\ ;
+頬杖 > hoodzue\ ;
+新著 > shincho\ ;
+珍什 > chinjuu\ ;
+羞恥 > shuuchi\ ;
+九地 > kyuuchi\ ;
+明確 > meikaku\ ;
+総額 > sougaku\ ;
+二八 > nihachi\ ;
+諫臣 > kanshin\ ;
+静聴 > seichou\ ;
+景況 > keikyou\ ;
+総領 > souryou\ ;
+日給 > nikkyuu\ ;
+大衆 > taishuu\ ;
+朱唇 > shushin\ ;
+集金 > shuukin\ ;
+雨足 > ameashi\ ;
+整調 > seichou\ ;
+敷設 > fusetsu\ ;
+暦数 > rekisuu\ ;
+新茶 > shincha\ ;
+風圧 > fuuatsu\ ;
+総革 > sougawa\ ;
+中尊 > chuuzon\ ;
+外角 > gaikaku\ ;
+中将 > chuujou\ ;
+明瞭 > meiryou\ ;
+縷説 > rusetsu\ ;
+集配 > shuuhai\ ;
+月央 > getsuou\ ;
+中宮 > chuuguu\ ;
+綿飴 > wataame\ ;
+月夜 > tsukiyo\ ;
+版籍 > hanseki\ ;
+変調 > henchou\ ;
+三徳 > santoku\ ;
+陰鬱 > in''utsu\ ;
+緑陰 > ryokuin\ ;
+敵視 > tekishi\ ;
+講究 > koukyuu\ ;
+放逸 > houitsu\ ;
+上役 > uwayaku\ ;
+増額 > zougaku\ ;
+一息 > hitoiki\ ;
+新興 > shinkou\ ;
+乳剤 > nyuuzai\ ;
+明白 > meihaku\ ;
+改進 > kaishin\ ;
+下座 > shimoza\ ;
+謙称 > kenshou\ ;
+領有 > ryouyuu\ ;
+一念 > ichinen\ ;
+万引 > manbiki\ ;
+耕作 > kousaku\ ;
+特産 > tokusan\ ;
+顕彰 > kenshou\ ;
+木口 > kiguchi\ ;
+一徹 > ittetsu\ ;
+顔役 > kaoyaku\ ;
+翻刻 > honkoku\ ;
+食事 > shokuji\ ;
+総長 > souchou\ ;
+三年 > san''nen\ ;
+日立 > hitachi\ ;
+救貧 > kyuuhin\ ;
+断腸 > danchou\ ;
+上席 > jouseki\ ;
+認証 > ninshou\ ;
+杏仁 > kyounin\ ;
+万年 > man''nen\ ;
+物的 > butteki\ ;
+旧稿 > kyuukou\ ;
+陸風 > rikufuu\ ;
+一式 > isshiki\ ;
+朗唱 > roushou\ ;
+狂死 > kyoushi\ ;
+老僕 > rouboku\ ;
+群小 > gunshou\ ;
+状況 > joukyou\ ;
+新聞 > shinbun\ ;
+中夭 > chuuyou\ ;
+本則 > honsoku\ ;
+中天 > chuuten\ ;
+綱領 > kouryou\ ;
+中外 > chuugai\ ;
+教誨 > kyoukai\ ;
+奴等 > yatsura\ ;
+独断 > dokudan\ ;
+詰責 > kisseki\ ;
+耐久 > taikyuu\ ;
+隊長 > taichou\ ;
+難読 > nandoku\ ;
+顧客 > kokyaku\ ;
+独文 > dokubun\ ;
+一帖 > ichijou\ ;
+旗竿 > hatazao\ ;
+霊薬 > reiyaku\ ;
+一巡 > ichijun\ ;
+焼香 > shoukou\ ;
+教訓 > kyoukun\ ;
+不屈 > fukutsu\ ;
+木刀 > bokutou\ ;
+続騰 > zokutou\ ;
+新羅 > shiragi\ ;
+声調 > seichou\ ;
+増長 > zouchou\ ;
+暁星 > gyousei\ ;
+険難 > ken''nan\ ;
+上履 > uwabaki\ ;
+本元 > honmoto\ ;
+中堅 > chuuken\ ;
+中堂 > chuudou\ ;
+夏蚕 > natsugo\ ;
+三尺 > sanjaku\ ;
+天草 > tengusa\ ;
+月商 > gesshou\ ;
+線量 > senryou\ ;
+不実 > fujitsu\ ;
+面積 > menseki\ ;
+下宿 > geshuku\ ;
+議決 > giketsu\ ;
+乱作 > ransaku\ ;
+下家 > shitaya\ ;
+上宿 > jouyado\ ;
+豊凶 > houkyou\ ;
+猟師 > ryoushi\ ;
+旧知 > kyuuchi\ ;
+牛痘 > gyuutou\ ;
+詳論 > shouron\ ;
+物理 > butsuri\ ;
+更地 > sarachi\ ;
+牛疫 > gyuueki\ ;
+木像 > mokuzou\ ;
+朝刊 > choukan\ ;
+朝凪 > asanagi\ ;
+主唱 > shushou\ ;
+編輯 > henshuu\ ;
+一局 > ikkyoku\ ;
+一尺 > isshaku\ ;
+独探 > dokutan\ ;
+緑野 > ryokuya\ ;
+七宝 > shippou\ ;
+詳言 > shougen\ ;
+総量 > souryou\ ;
+旧盤 > kyuuban\ ;
+詳解 > shoukai\ ;
+契約 > keiyaku\ ;
+難行 > nangyou\ ;
+月収 > gesshuu\ ;
+雑話 > zatsuwa\ ;
+旧盆 > kyuubon\ ;
+一宿 > isshuku\ ;
+乱丁 > ranchou\ ;
+無骨 > bukotsu\ ;
+売行 > ureyuki\ ;
+頁数 > pējisuu\ ;
+断続 > danzoku\ ;
+音曲 > ongyoku\ ;
+一存 > ichizon\ ;
+夕菅 > yuusuge\ ;
+施策 > shisaku\ ;
+日白 > nippaku\ ;
+大腸 > daichou\ ;
+牢獄 > rougoku\ ;
+犬橇 > inuzori\ ;
+与奪 > yodatsu\ ;
+本人 > hon''nin\ ;
+除雪 > josetsu\ ;
+熟談 > jukudan\ ;
+失考 > shikkou\ ;
+牡猫 > osuneko\ ;
+晩春 > banshun\ ;
+夜色 > yashoku\ ;
+独房 > dokubou\ ;
+景教 > keikyou\ ;
+中啓 > chuukei\ ;
+新米 > shinmai\ ;
+方策 > housaku\ ;
+犬槙 > inumaki\ ;
+木仏 > kibutsu\ ;
+早番 > hayaban\ ;
+多色 > tashoku\ ;
+暦年 > rekinen\ ;
+本丸 > honmaru\ ;
+晩方 > bangata\ ;
+天聴 > tenchou\ ;
+繭紬 > kenchuu\ ;
+猟官 > ryoukan\ ;
+青票 > seihyou\ ;
+豊作 > housaku\ ;
+猛将 > moushou\ ;
+風俗 > fuuzoku\ ;
+狂暴 > kyoubou\ ;
+上声 > joushou\ ;
+丈夫 > masurao\ ;
+月利 > getsuri\ ;
+改訳 > kaiyaku\ ;
+増量 > zouryou\ ;
+零落 > reiraku\ ;
+丸十 > marujuu\ ;
+集計 > shuukei\ ;
+話術 > wajutsu\ ;
+牝犬 > mesuinu\ ;
+熟覧 > jukuran\ ;
+熟視 > jukushi\ ;
+面目 > menmoku\ ;
+煎鍋 > irinabe\ ;
+玄人 > kurouto\ ;
+断箱 > danbako\ ;
+朝会 > choukai\ ;
+填隙 > tengeki\ ;
+上塗 > uwanuri\ ;
+一如 > ichinyo\ ;
+不埒 > furachi\ ;
+緊迫 > kinpaku\ ;
+万境 > bankyou\ ;
+論策 > ronsaku\ ;
+訳載 > yakusai\ ;
+有償 > yuushou\ ;
+明澄 > meichou\ ;
+一大 > ichidai\ ;
+評論 > hyouron\ ;
+調練 > chouren\ ;
+中原 > chuugen\ ;
+誤脱 > godatsu\ ;
+狂文 > kyoubun\ ;
+読者 > dokusha\ ;
+売薬 > baiyaku\ ;
+豆乳 > tounyuu\ ;
+一声 > hitokoe\ ;
+霊肉 > reiniku\ ;
+中半 > chuuhan\ ;
+料紙 > ryoushi\ ;
+整腸 > seichou\ ;
+下地 > shitaji\ ;
+新種 > shinshu\ ;
+増進 > zoushin\ ;
+面疔 > menchou\ ;
+頂戴 > choudai\ ;
+論究 > ronkyuu\ ;
+新税 > shinzei\ ;
+降雹 > kouhyou\ ;
+静的 > seiteki\ ;
+評言 > hyougen\ ;
+下図 > shitazu\ ;
+一塁 > ichirui\ ;
+改行 > kaigyou\ ;
+一場 > ichijou\ ;
+丸公 > marukou\ ;
+語脈 > gomyaku\ ;
+好球 > koukyuu\ ;
+三国 > sangoku\ ;
+両名 > ryoumei\ ;
+随身 > zuishin\ ;
+一堂 > ichidou\ ;
+万国 > bankoku\ ;
+無雑 > muzatsu\ ;
+中前 > chuuzen\ ;
+親鸞 > shinran\ ;
+料簡 > ryouken\ ;
+電脳 > den''nou\ ;
+中判 > chuuban\ ;
+中分 > chuubun\ ;
+絶頂 > zetchou\ ;
+頑強 > gankyou\ ;
+旧版 > kyuuban\ ;
+繋縛 > keibaku\ ;
+族生 > zokusei\ ;
+談笑 > danshou\ ;
+太糸 > futoito\ ;
+始業 > shigyou\ ;
+一団 > ichidan\ ;
+記述 > kijutsu\ ;
+早熟 > soujuku\ ;
+誇色 > koshoku\ ;
+託送 > takusou\ ;
+計量 > keiryou\ ;
+統領 > touryou\ ;
+雌蘂 > meshibe\ ;
+中元 > chuugen\ ;
+順応 > jun''nou\ ;
+陸送 > rikusou\ ;
+月事 > getsuji\ ;
+親鳥 > oyadori\ ;
+給養 > kyuuyou\ ;
+特段 > tokudan\ ;
+両前 > ryoumae\ ;
+大粒 > ootsubu\ ;
+三唱 > sanshou\ ;
+上唇 > joushin\ ;
+訓迪 > kunteki\ ;
+特殊 > tokushu\ ;
+説経 > sekkyou\ ;
+境遇 > kyouguu\ ;
+日照 > nisshou\ ;
+救荒 > kyuukou\ ;
+試薬 > shiyaku\ ;
+詐術 > sajutsu\ ;
+両分 > ryoubun\ ;
+雌蕊 > meshibe\ ;
+両刀 > ryoutou\ ;
+撥音 > hatsuon\ ;
+書信 > shoshin\ ;
+時日 > jijitsu\ ;
+一喝 > ikkatsu\ ;
+不吉 > fukitsu\ ;
+緩衝 > kanshou\ ;
+上告 > joukoku\ ;
+両全 > ryouzen\ ;
+陸軍 > rikugun\ ;
+両党 > ryoutou\ ;
+一問 > ichimon\ ;
+証言 > shougen\ ;
+昇汞 > shoukou\ ;
+雨脚 > ameashi\ ;
+新盤 > shinban\ ;
+註解 > chuukai\ ;
+韻律 > inritsu\ ;
+暴圧 > bouatsu\ ;
+天竺 > tenjiku\ ;
+許諾 > kyodaku\ ;
+爆砕 > bakusai\ ;
+両像 > ryouzou\ ;
+狂態 > kyoutai\ ;
+大笑 > taishou\ ;
+婿入 > mukoiri\ ;
+訳詩 > yakushi\ ;
+昇殿 > shouden\ ;
+離脱 > ridatsu\ ;
+訳詞 > yakushi\ ;
+昇段 > shoudan\ ;
+牧民 > bokumin\ ;
+天窓 > tenmado\ ;
+一命 > ichimei\ ;
+教育 > kyouiku\ ;
+一味 > hitoaji\ ;
+失禁 > shikkin\ ;
+総評 > souhyou\ ;
+妙法 > myouhou\ ;
+給電 > kyuuden\ ;
+中仕 > nakashi\ ;
+親骨 > oyabone\ ;
+文章 > bunshou\ ;
+書中 > shochuu\ ;
+万博 > banpaku\ ;
+一名 > ichimei\ ;
+一同 > ichidou\ ;
+音律 > onritsu\ ;
+下劣 > geretsu\ ;
+難聴 > nanchou\ ;
+一号 > ichigou\ ;
+一台 > ichidai\ ;
+離職 > rishoku\ ;
+三助 > sansuke\ ;
+両便 > ryouben\ ;
+春本 > shunpon\ ;
+七十 > nanajuu\ ;
+中世 > chuusei\ ;
+覿面 > tekimen\ ;
+天福 > tenpuku\ ;
+新田 > shinden\ ;
+万力 > manriki\ ;
+新生 > shinsei\ ;
+上刻 > joukoku\ ;
+丁半 > chouhan\ ;
+大福 > daifuku\ ;
+願力 > ganriki\ ;
+天祐 > ten''yuu\ ;
+昨晩 > sakuban\ ;
+晩年 > ban''nen\ ;
+照覧 > shouran\ ;
+春暖 > shundan\ ;
+緊要 > kin''you\ ;
+一勺 > isshaku\ ;
+誓約 > seiyaku\ ;
+智将 > chishou\ ;
+妨業 > bougyou\ ;
+詩興 > shikyou\ ;
+両人 > ryounin\ ;
+観音 > kan''non\ ;
+時折 > tokiori\ ;
+牽束 > kensoku\ ;
+撰録 > senroku\ ;
+改良 > kairyou\ ;
+施物 > semotsu\ ;
+奮激 > fungeki\ ;
+両三 > ryousan\ ;
+電算 > densoro\ ;
+親類 > shinrui\ ;
+独奏 > dokusou\ ;
+結露 > ketsuro\ ;
+旧法 > kyuuhou\ ;
+教練 > kyouren\ ;
+特有 > tokuyuu\ ;
+上側 > uwagawa\ ;
+晶子 > shoushi\ ;
+縦糸 > tateito\ ;
+一冊 > issatsu\ ;
+姦悪 > kan''aku\ ;
+角錐 > kakusui\ ;
+結集 > kesshuu\ ;
+下値 > shitane\ ;
+女湯 > on''nayu\ ;
+一元 > ichigen\ ;
+羅列 > raretsu\ ;
+暖国 > dankoku\ ;
+爽涼 > souryou\ ;
+天真 > tenshin\ ;
+陳謝 > chinsha\ ;
+斑白 > hanpaku\ ;
+一億 > ichioku\ ;
+訓読 > kundoku\ ;
+丘上 > kyuujou\ ;
+爛熟 > ranjuku\ ;
+好況 > koukyou\ ;
+既決 > kiketsu\ ;
+試聴 > shichou\ ;
+明朝 > minchou\ ;
+託言 > takugen\ ;
+領域 > ryouiki\ ;
+暁天 > gyouten\ ;
+言責 > genseki\ ;
+新版 > shinpan\ ;
+親電 > shinden\ ;
+太白 > taihaku\ ;
+特旨 > tokushi\ ;
+上作 > jousaku\ ;
+天皇 > ten''nou\ ;
+上伸 > joushin\ ;
+数秒 > suubyou\ ;
+散策 > sansaku\ ;
+文相 > bunshou\ ;
+売約 > baiyaku\ ;
+三伸 > sanshin\ ;
+旧歓 > kyuukan\ ;
+大白 > taihaku\ ;
+万作 > mansaku\ ;
+明晰 > meiseki\ ;
+晩学 > bangaku\ ;
+領地 > ryouchi\ ;
+焦躁 > shousou\ ;
+明晩 > myouban\ ;
+一倍 > ichibai\ ;
+敬称 > keishou\ ;
+終電 > shuuden\ ;
+上人 > shounin\ ;
+日欧 > nichiou\ ;
+上京 > joukyou\ ;
+明星 > myoujou\ ;
+三人 > san''nin\ ;
+縦笛 > tatebue\ ;
+集群 > shuugun\ ;
+万人 > man''nin\ ;
+教範 > kyouhan\ ;
+一例 > ichirei\ ;
+大病 > taibyou\ ;
+敬神 > keishin\ ;
+特撰 > tokusen\ ;
+調琴 > choukin\ ;
+頭取 > toudori\ ;
+順境 > junkyou\ ;
+雨笠 > amagasa\ ;
+給金 > kyuukin\ ;
+詳細 > shousai\ ;
+縦穴 > tateana\ ;
+一任 > ichinin\ ;
+大男 > oootoko\ ;
+一代 > ichidai\ ;
+罰則 > bassoku\ ;
+震盪 > shintou\ ;
+霊的 > reiteki\ ;
+静注 > jouchuu\ ;
+外相 > gaishou\ ;
+多発 > tahatsu\ ;
+雨空 > amazora\ ;
+然諾 > zendaku\ ;
+詮索 > sensaku\ ;
+繋留 > keiryuu\ ;
+散票 > sanpyou\ ;
+練習 > renshuu\ ;
+評者 > hyousha\ ;
+熟練 > jukuren\ ;
+一丸 > ichigan\ ;
+外的 > gaiteki\ ;
+独善 > dokuzen\ ;
+夏着 > natsugi\ ;
+詩経 > shikyou\ ;
+特捜 > tokusou\ ;
+天球 > tenkyuu\ ;
+旧棲 > kyuusei\ ;
+妻戸 > tsumado\ ;
+教程 > kyoutei\ ;
+斑猫 > hanmyou\ ;
+晋山 > shinzan\ ;
+猟人 > ryoujin\ ;
+旋毛 > tsumuji\ ;
+報酬 > houshuu\ ;
+烈震 > resshin\ ;
+春情 > shunjou\ ;
+緬羊 > men''you\ ;
+旧栖 > kyuusei\ ;
+縟礼 > jokurei\ ;
+大獄 > taigoku\ ;
+大猟 > tairyou\ ;
+狂奔 > kyouhon\ ;
+墨色 > sumiiro\ ;
+総花 > soubana\ ;
+敦睦 > tonboku\ ;
+要領 > youryou\ ;
+独吟 > dokugin\ ;
+覆面 > fukumen\ ;
+織物 > orimono\ ;
+敬白 > keihaku\ ;
+奔流 > honryuu\ ;
+旧来 > kyuurai\ ;
+早朝 > souchou\ ;
+旧村 > kyuuson\ ;
+時局 > jikyoku\ ;
+支給 > shikyuu\ ;
+政策 > seisaku\ ;
+独占 > dokusen\ ;
+変症 > henshou\ ;
+日朝 > nitchou\ ;
+支索 > shisaku\ ;
+如月 > nigatsu\ ;
+早暁 > sougyou\ ;
+失点 > shitten\ ;
+雑穀 > zakkoku\ ;
+襟髪 > erigami\ ;
+親里 > oyazato\ ;
+照臨 > shourin\ ;
+早春 > soushun\ ;
+昨年 > sakunen\ ;
+謹慎 > kinshin\ ;
+解読 > kaidoku\ ;
+天然 > ten''nen\ ;
+新法 > shinpou\ ;
+奥様 > okusama\ ;
+独創 > dokusou\ ;
+日時 > nichiji\ ;
+緑肥 > ryokuhi\ ;
+領分 > ryoubun\ ;
+緯糸 > yokoito\ ;
+雪白 > seppaku\ ;
+特性 > tokusei\ ;
+特急 > tokkyuu\ ;
+攻究 > koukyuu\ ;
+領内 > ryounai\ ;
+附設 > fusetsu\ ;
+電球 > denkyuu\ ;
+牽強 > kenkyou\ ;
+片方 > katahou\ ;
+教皇 > kyoukou\ ;
+詞章 > shishou\ ;
+訳者 > yakusha\ ;
+特待 > tokutai\ ;
+襟首 > erikubi\ ;
+奪格 > dakkaku\ ;
+敵状 > tekijou\ ;
+撃退 > gekitai\ ;
+難癖 > nankuse\ ;
+改称 > kaishou\ ;
+妙手 > myoushu\ ;
+春嵐 > shunran\ ;
+襲雷 > shuurai\ ;
+妙所 > myousho\ ;
+親近 > shinkin\ ;
+明徴 > meichou\ ;
+明徳 > meitoku\ ;
+難症 > nanshou\ ;
+難病 > nanbyou\ ;
+無血 > muketsu\ ;
+覚醒 > kakusei\ ;
+締約 > teiyaku\ ;
+識字 > shikiji\ ;
+防諜 > bouchou\ ;
+暁光 > gyoukou\ ;
+教生 > kyousei\ ;
+昔年 > sekinen\ ;
+請求 > seikyuu\ ;
+大漁 > tairyou\ ;
+炒飯 > chaahan\ ;
+頃刻 > keikoku\ ;
+陥落 > kanraku\ ;
+誘爆 > yuubaku\ ;
+青松 > seishou\ ;
+外為 > gaitame\ ;
+証紙 > shoushi\ ;
+震災 > shinsai\ ;
+景勝 > keishou\ ;
+春寒 > shunkan\ ;
+統覚 > toukaku\ ;
+爆死 > bakushi\ ;
+網膜 > moumaku\ ;
+熟知 > jukuchi\ ;
+明年 > myounen\ ;
+天測 > tensoku\ ;
+天減 > tenbiki\ ;
+奏楽 > sougaku\ ;
+領会 > ryoukai\ ;
+調法 > chouhou\ ;
+昌平 > shouhei\ ;
+姉婿 > anemuko\ ;
+終車 > shuusha\ ;
+暑中 > shochuu\ ;
+綿羊 > men''you\ ;
+精麦 > seibaku\ ;
+熟睡 > jukusui\ ;
+縫物 > nuimono\ ;
+斯業 > shigyou\ ;
+晶光 > shoukou\ ;
+緊縛 > kinbaku\ ;
+観賞 > kanshou\ ;
+韓国 > kankoku\ ;
+難球 > nankyuu\ ;
+熟眠 > jukumin\ ;
+墨糸 > sumiito\ ;
+陰膳 > kagezen\ ;
+詩的 > shiteki\ ;
+領主 > ryoushu\ ;
+星学 > seigaku\ ;
+天津 > tenshin\ ;
+青春 > seishun\ ;
+暇人 > himajin\ ;
+観象 > kanshou\ ;
+音力 > onryoku\ ;
+為銀 > tamegin\ ;
+訓育 > kun''iku\ ;
+奥方 > okugata\ ;
+狩人 > karyudo\ ;
+累進 > ruishin\ ;
+天泣 > tenkyuu\ ;
+奮撃 > fungeki\ ;
+焼芋 > yakiimo\ ;
+旧懐 > kyuukai\ ;
+陪臣 > baishin\ ;
+牧師 > bokushi\ ;
+新案 > shin''an\ ;
+震源 > shingen\ ;
+旧慣 > kyuukan\ ;
+階級 > kaikyuu\ ;
+旧態 > kyuutai\ ;
+特定 > tokutei\ ;
+昨夕 > sakuyuu\ ;
+隻眼 > sekigan\ ;
+燃焼 > nenshou\ ;
+新来 > shinrai\ ;
+易学 > ekigaku\ ;
+増給 > zoukyuu\ ;
+旧悪 > kyuuaku\ ;
+数滴 > suuteki\ ;
+綾絹 > ayaginu\ ;
+索道 > sakudou\ ;
+妻妾 > saishou\ ;
+旧恨 > kyuukon\ ;
+早急 > soukyuu\ ;
+結語 > ketsugo\ ;
+新書 > shinsho\ ;
+純量 > junryou\ ;
+女手 > on''nade\ ;
+熱狂 > nekkyou\ ;
+女房 > nyoubou\ ;
+外海 > sotoumi\ ;
+大正 > taishou\ ;
+失権 > shikken\ ;
+大欲 > taiyoku\ ;
+結託 > kettaku\ ;
+外注 > gaichuu\ ;
+防虫 > bouchuu\ ;
+外泊 > gaihaku\ ;
+新星 > shinsei\ ;
+覆輪 > fukurin\ ;
+整流 > seiryuu\ ;
+頂上 > choujou\ ;
+熱燗 > atsukan\ ;
+日当 > hiatari\ ;
+糠雨 > nukaame\ ;
+総称 > soushou\ ;
+旧弊 > kyuuhei\ ;
+火食 > kashoku\ ;
+特大 > tokudai\ ;
+親許 > oyamoto\ ;
+春坊 > harubou\ ;
+詫状 > wabijou\ ;
+電流 > denryuu\ ;
+警告 > keikoku\ ;
+特売 > tokubai\ ;
+新政 > shinsei\ ;
+斬新 > zanshin\ ;
+犯則 > hansoku\ ;
+障碍 > shougai\ ;
+無色 > mushoku\ ;
+外殻 > gaikaku\ ;
+雌犬 > mesuinu\ ;
+天業 > tengyou\ ;
+論敵 > ronteki\ ;
+雀球 > jankyuu\ ;
+文様 > mon''you\ ;
+大業 > taigyou\ ;
+旧師 > kyuushi\ ;
+旅所 > tabisho\ ;
+糸鋸 > itonoko\ ;
+新撰 > shinsen\ ;
+観衆 > kanshuu\ ;
+放牧 > houboku\ ;
+特報 > tokuhou\ ;
+文楽 > bunraku\ ;
+無腰 > mugoshi\ ;
+親裁 > shinsai\ ;
+面影 > omokage\ ;
+煙突 > entotsu\ ;
+墓穴 > boketsu\ ;
+狂人 > kyoujin\ ;
+調書 > chousho\ ;
+昇天 > shouten\ ;
+親衛 > shin''ei\ ;
+狂乱 > kyouran\ ;
+革帯 > kawaobi\ ;
+天柱 > tenchuu\ ;
+旅愁 > ryoshuu\ ;
+解脱 > gedatsu\ ;
+昼前 > hirumae\ ;
+続編 > zokuhen\ ;
+熱演 > netsuen\ ;
+雪洞 > bonbori\ ;
+無職 > mushoku\ ;
+総督 > soutoku\ ;
+間隙 > kangeki\ ;
+視診 > shishin\ ;
+間隔 > kankaku\ ;
+靴屋 > kutsuya\ ;
+堅調 > kenchou\ ;
+斎服 > saifuku\ ;
+旧居 > kyuukyo\ ;
+緩球 > kankyuu\ ;
+継続 > keizoku\ ;
+天朝 > tenchou\ ;
+視角 > shikaku\ ;
+旧封 > kyuuhou\ ;
+誤植 > goshoku\ ;
+陋習 > roushuu\ ;
+大木 > taiboku\ ;
+城郭 > joukaku\ ;
+救済 > kyuusai\ ;
+視覚 > shikaku\ ;
+総皮 > sougawa\ ;
+陸稲 > rikutou\ ;
+教法 > kyouhou\ ;
+調整 > chousei\ ;
+旧官 > kyuukan\ ;
+失敬 > shikkei\ ;
+開陳 > kaichin\ ;
+失敗 > shippai\ ;
+好尚 > koushou\ ;
+奇抜 > kibatsu\ ;
+失政 > shissei\ ;
+討究 > toukyuu\ ;
+霊柩 > reikyuu\ ;
+読本 > dokuhon\ ;
+防臭 > boushuu\ ;
+読書 > dokusho\ ;
+犯人 > han''nin\ ;
+奥庭 > okuniwa\ ;
+説服 > seppuku\ ;
+妊娠 > ninshin\ ;
+奥底 > okuzoko\ ;
+牧地 > bokuchi\ ;
+敦樸 > tonboku\ ;
+好学 > kougaku\ ;
+編物 > amimono\ ;
+続篇 > zokuhen\ ;
+天敵 > tenteki\ ;
+経蔵 > kyouzou\ ;
+霊木 > reiboku\ ;
+夜曲 > yakyoku\ ;
+総画 > soukaku\ ;
+大敵 > taiteki\ ;
+特命 > tokumei\ ;
+陣笠 > jingasa\ ;
+隆盛 > ryuusei\ ;
+評点 > hyouten\ ;
+新患 > shinkan\ ;
+救民 > kyuumin\ ;
+要訳 > youyaku\ ;
+旧姓 > kyuusei\ ;
+降給 > koukyuu\ ;
+旧妻 > kyuusai\ ;
+文教 > bunkyou\ ;
+面容 > men''you\ ;
+変梃 > henteko\ ;
+米麦 > beibaku\ ;
+細螺 > kishago\ ;
+熱気 > netsuke\ ;
+昨冬 > sakutou\ ;
+春分 > shunbun\ ;
+観菊 > kangiku\ ;
+旧好 > kyuukou\ ;
+電柱 > denchuu\ ;
+開鑿 > kaisaku\ ;
+長雨 > nagaame\ ;
+変格 > henkaku\ ;
+旧套 > kyuutou\ ;
+語末 > gomatsu\ ;
+糧道 > ryoudou\ ;
+襟足 > eriashi\ ;
+謹告 > kinkoku\ ;
+説教 > sekkyou\ ;
+摘要 > tekiyou\ ;
+證券 > shouken\ ;
+教権 > kyouken\ ;
+旦夕 > tanseki\ ;
+断念 > dan''nen\ ;
+日夜 > nichiya\ ;
+城跡 > jouseki\ ;
+日夕 > nisseki\ ;
+春光 > shunkou\ ;
+放流 > houryuu\ ;
+震旦 > shintan\ ;
+奥山 > okuyama\ ;
+旧墟 > kyuukyo\ ;
+静寂 > seijaku\ ;
+解約 > kaiyaku\ ;
+失投 > shittou\ ;
+綱目 > koumoku\ ;
+火鉢 > hibachi\ ;
+絶縁 > zetsuen\ ;
+夕方 > yuugata\ ;
+執行 > shikkou\ ;
+粗食 > soshoku\ ;
+敬服 > keifuku\ ;
+外敵 > gaiteki\ ;
+故殺 > kosatsu\ ;
+要衝 > youshou\ ;
+妄執 > moushuu\ ;
+境目 > sakaime\ ;
+夏日 > kajitsu\ ;
+震撼 > shinkan\ ;
+敦朴 > tonboku\ ;
+声楽 > seigaku\ ;
+旧型 > kyuukei\ ;
+旅客 > ryokaku\ ;
+面妖 > men''you\ ;
+昭代 > shoudai\ ;
+無筆 > muhitsu\ ;
+特写 > tokusha\ ;
+失態 > shittai\ ;
+旧址 > kyuushi\ ;
+結腸 > ketchou\ ;
+旧地 > kyuuchi\ ;
+特典 > tokuten\ ;
+堪能 > tan''nou\ ;
+製革 > seikaku\ ;
+失意 > shitsui\ ;
+爆弾 > bakudan\ ;
+特免 > tokumen\ ;
+支流 > shiryuu\ ;
+揚陸 > youriku\ ;
+親船 > oyabune\ ;
+陸産 > rikusan\ ;
+陸生 > rikusei\ ;
+面壁 > menpeki\ ;
+探鳥 > tanchou\ ;
+親臨 > shinrin\ ;
+約言 > yakugen\ ;
+境界 > kyoukai\ ;
+教条 > kyoujou\ ;
+粗雑 > sozatsu\ ;
+教材 > kyouzai\ ;
+教本 > kyouhon\ ;
+電撃 > dengeki\ ;
+教書 > kyousho\ ;
+降神 > koushin\ ;
+間近 > madjika\ ;
+新居 > shinkyo\ ;
+紺色 > kon''iro\ ;
+継目 > tsugime\ ;
+雷撃 > raigeki\ ;
+塾生 > jukusei\ ;
+調弦 > chougen\ ;
+失当 > shittou\ ;
+燃料 > nenryou\ ;
+計画 > keikaku\ ;
+特例 > tokurei\ ;
+隠滅 > inmetsu\ ;
+特使 > tokushi\ ;
+大息 > taisoku\ ;
+集権 > shuuken\ ;
+開通 > kaitsuu\ ;
+陣痛 > jintsuu\ ;
+外戚 > gaiseki\ ;
+天心 > tenshin\ ;
+組職 > soshoku\ ;
+網猟 > amiryou\ ;
+斯学 > shigaku\ ;
+敵手 > tekishu\ ;
+売春 > baishun\ ;
+大徳 > daitoku\ ;
+離日 > rinichi\ ;
+精進 > shoujin\ ;
+大役 > taiyaku\ ;
+精通 > seitsuu\ ;
+煉獄 > rengoku\ ;
+親署 > shinsho\ ;
+諸国 > shokoku\ ;
+旧名 > kyuumei\ ;
+牛刀 > gyuutou\ ;
+難敵 > nanteki\ ;
+旧号 > kyuugou\ ;
+瀝青 > rekisei\ ;
+大弓 > daikyuu\ ;
+旧友 > kyuuyuu\ ;
+結縁 > kechien\ ;
+袞龍 > konryou\ ;
+新婚 > shinkon\ ;
+文弱 > bunjaku\ ;
+日収 > nisshuu\ ;
+雑木 > zouboku\ ;
+説得 > settoku\ ;
+靖国 > seikoku\ ;
+明亮 > meiryou\ ;
+天幕 > tenmaku\ ;
+士族 > shizoku\ ;
+熟柿 > jukushi\ ;
+閲覧 > etsuran\ ;
+革命 > kakumei\ ;
+織布 > shokufu\ ;
+日印 > nichiin\ ;
+繊弱 > senjaku\ ;
+細腕 > hosoude\ ;
+織工 > shokkou\ ;
+照準 > shoujun\ ;
+零戦 > zerosen\ ;
+敵情 > tekijou\ ;
+昇任 > shounin\ ;
+覚者 > kakusha\ ;
+視聴 > shichou\ ;
+組織 > soshiki\ ;
+長逝 > chousei\ ;
+附着 > fuchaku\ ;
+謬伝 > byuuden\ ;
+外心 > gaishin\ ;
+敵性 > tekisei\ ;
+誠忠 > seichuu\ ;
+誘惑 > yuuwaku\ ;
+牧人 > bokujin\ ;
+旧制 > kyuusei\ ;
+経糸 > tateito\ ;
+長辺 > chouhen\ ;
+誠心 > seishin\ ;
+霊廟 > reibyou\ ;
+詮方 > senkata\ ;
+旧刊 > kyuukan\ ;
+旭光 > kyokkou\ ;
+失対 > shittai\ ;
+片前 > katamae\ ;
+諜報 > chouhou\ ;
+墨池 > bokuchi\ ;
+垂迹 > suijaku\ ;
+整復 > seifuku\ ;
+旧冬 > kyuutou\ ;
+支柱 > shichuu\ ;
+墨汁 > bokujuu\ ;
+改暦 > kaireki\ ;
+新報 > shinpou\ ;
+外廓 > gaikaku\ ;
+阪神 > hanshin\ ;
+調子 > choushi\ ;
+旧典 > kyuuten\ ;
+敵弾 > tekidan\ ;
+門跡 > monzeki\ ;
+粗金 > aragane\ ;
+政敵 > seiteki\ ;
+親米 > shinbei\ ;
+敏捷 > binshou\ ;
+版元 > hanmoto\ ;
+政教 > seikyou\ ;
+試料 > shiryou\ ;
+襁褓 > mutsuki\ ;
+純良 > junryou\ ;
+変心 > henshin\ ;
+教戒 > kyoukai\ ;
+大小 > daishou\ ;
+大将 > daishou\ ;
+旧債 > kyuusai\ ;
+間諜 > kanchou\ ;
+見習 > minarai\ ;
+改新 > kaishin\ ;
+新地 > shinchi\ ;
+繋属 > keizoku\ ;
+放擲 > houteki\ ;
+敷布 > shikifu\ ;
+集散 > shuusan\ ;
+採集 > saishuu\ ;
+牛丼 > gyuudon\ ;
+角盆 > kakubon\ ;
+爽凉 > souryou\ ;
+詔書 > shousho\ ;
+大学 > daigaku\ ;
+親等 > shintou\ ;
+壁板 > kabeita\ ;
+妄信 > moushin\ ;
+文学 > bungaku\ ;
+攻撃 > kougeki\ ;
+緑樹 > ryokuju\ ;
+爪印 > tsumein\ ;
+旧例 > kyuurei\ ;
+支族 > shizoku\ ;
+糞蝿 > kusobae\ ;
+墜死 > tsuishi\ ;
+奨励 > shourei\ ;
+織姫 > orihime\ ;
+調声 > chousei\ ;
+褒賞 > houshou\ ;
+紅色 > beniiro\ ;
+陸海 > rikukai\ ;
+終端 > shuutan\ ;
+日伯 > nippaku\ ;
+旋削 > sensaku\ ;
+角番 > kadoban\ ;
+精読 > seidoku\ ;
+織女 > shokujo\ ;
+旧交 > kyuukou\ ;
+日付 > hidzuke\ ;
+熱愛 > netsuai\ ;
+境涯 > kyougai\ ;
+霜夜 > shimoyo\ ;
+焦燥 > shousou\ ;
+女傑 > joketsu\ ;
+天女 > ten''nyo\ ;
+角瓶 > kakubin\ ;
+紡績 > bouseki\ ;
+詩抄 > shishou\ ;
+旧主 > kyuushu\ ;
+大女 > ooon''na\ ;
+敵対 > tekitai\ ;
+計測 > keisoku\ ;
+新品 > shinpin\ ;
+奉唱 > houshou\ ;
+親祭 > shinsai\ ;
+料地 > ryouchi\ ;
+無熱 > munetsu\ ;
+結石 > kesseki\ ;
+長講 > choukou\ ;
+総桐 > sougiri\ ;
+焦点 > shouten\ ;
+熟成 > jukusei\ ;
+証書 > shousho\ ;
+論告 > ronkoku\ ;
+熱心 > nesshin\ ;
+解熱 > genetsu\ ;
+奉告 > houkoku\ ;
+失地 > shitchi\ ;
+新参 > shinzan\ ;
+集成 > shuusei\ ;
+数学 > suugaku\ ;
+教師 > kyoushi\ ;
+撃砕 > gekisai\ ;
+読売 > yomiuri\ ;
+掘鑿 > kussaku\ ;
+雹害 > hyougai\ ;
+総柄 > sougara\ ;
+霊妙 > reimyou\ ;
+変容 > hen''you\ ;
+旅僧 > tabisou\ ;
+裸足 > hadashi\ ;
+論及 > ronkyuu\ ;
+採録 > sairoku\ ;
+熟慮 > jukuryo\ ;
+要約 > youyaku\ ;
+炎色 > enshoku\ ;
+熱延 > netsuen\ ;
+訳本 > yakuhon\ ;
+証明 > shoumei\ ;
+墨書 > bokusho\ ;
+紛糾 > funkyuu\ ;
+訳書 > yakusho\ ;
+推量 > suiryou\ ;
+撞球 > doukyuu\ ;
+夙夜 > shukuya\ ;
+熱度 > netsudo\ ;
+震央 > shin''ou\ ;
+堆積 > taiseki\ ;
+累積 > ruiseki\ ;
+隻手 > sekishu\ ;
+天国 > tengoku\ ;
+裏釘 > urakugi\ ;
+裏金 > uragane\ ;
+攪拌 > kakuhan\ ;
+焙烙 > houroku\ ;
+陸橋 > rikkyou\ ;
+認容 > nin''you\ ;
+証文 > shoumon\ ;
+診断 > shindan\ ;
+大国 > taikoku\ ;
+陰欝 > in''utsu\ ;
+註文 > chuumon\ ;
+紺碧 > konpeki\ ;
+新制 > shinsei\ ;
+改悛 > kaishun\ ;
+詩心 > shishin\ ;
+絶無 > zetsumu\ ;
+外壁 > gaiheki\ ;
+熟思 > jukushi\ ;
+新刊 > shinkan\ ;
+新刀 > shintou\ ;
+霄壌 > shoujou\ ;
+放心 > houshin\ ;
+猩々 > shoujou\ ;
+塞源 > sokugen\ ;
+大嘴 > oohashi\ ;
+終盤 > shuuban\ ;
+納経 > noukyou\ ;
+教導 > kyoudou\ ;
+新兵 > shinpei\ ;
+焼死 > shoushi\ ;
+訳文 > yakubun\ ;
+新党 > shintou\ ;
+改心 > kaishin\ ;
+照星 > shousei\ ;
+掛金 > kakekin\ ;
+敗将 > haishou\ ;
+推進 > suishin\ ;
+照明 > shoumei\ ;
+雄心 > yuushin\ ;
+陸棲 > rikusei\ ;
+複視 > fukushi\ ;
+精虫 > seichuu\ ;
+敵塁 > tekirui\ ;
+網棚 > amidana\ ;
+陸棚 > rikuhou\ ;
+教官 > kyoukan\ ;
+国風 > kokufuu\ ;
+隆替 > ryuutai\ ;
+線描 > senbyou\ ;
+見神 > kenshin\ ;
+裁量 > sairyou\ ;
+調合 > chougou\ ;
+政庁 > seichou\ ;
+調号 > chougou\ ;
+陰極 > inkyoku\ ;
+夏場 > natsuba\ ;
+紅組 > akagumi\ ;
+角灯 > kakutou\ ;
+複製 > fukusei\ ;
+外圧 > gaiatsu\ ;
+斉唱 > seishou\ ;
+熟年 > jukunen\ ;
+結球 > kekkyuu\ ;
+堆石 > taiseki\ ;
+外国 > gaikoku\ ;
+接辞 > setsuji\ ;
+精薄 > seihaku\ ;
+敵地 > tekichi\ ;
+捕食 > hoshoku\ ;
+敵国 > tekkoku\ ;
+終生 > shuusei\ ;
+解消 > kaishou\ ;
+変域 > hen''iki\ ;
+陽暦 > youreki\ ;
+大名 > daimyou\ ;
+失効 > shikkou\ ;
+新体 > shintai\ ;
+国電 > kokuden\ ;
+大口 > ooguchi\ ;
+掘進 > kusshin\ ;
+調剤 > chouzai\ ;
+陸曹 > rikusou\ ;
+国難 > kokunan\ ;
+緩急 > kankyuu\ ;
+支度 > shitaku\ ;
+陽春 > youshun\ ;
+国際 > kokusai\ ;
+大厄 > taiyaku\ ;
+紋章 > monshou\ ;
+支庁 > shichou\ ;
+地道 > jimichi\ ;
+親玉 > oyadama\ ;
+新人 > shinjin\ ;
+故実 > kojitsu\ ;
+外商 > gaishou\ ;
+国防 > kokubou\ ;
+放尿 > hounyou\ ;
+解氷 > kaihyou\ ;
+文博 > bunhaku\ ;
+擯斥 > hinseki\ ;
+大勝 > taishou\ ;
+教壇 > kyoudan\ ;
+縮図 > shukuzu\ ;
+間膜 > kanmaku\ ;
+大力 > dairiki\ ;
+操業 > sougyou\ ;
+天則 > tensoku\ ;
+推賞 > suishou\ ;
+無欠 > muketsu\ ;
+詩学 > shigaku\ ;
+激闘 > gekitou\ ;
+観照 > kanshou\ ;
+外周 > gaishuu\ ;
+間脳 > kan''nou\ ;
+教場 > kyoujou\ ;
+困難 > kon''nan\ ;
+縦坑 > tatekou\ ;
+給源 > kyuugen\ ;
+露仏 > rofutsu\ ;
+誡告 > kaikoku\ ;
+給湯 > kyuutou\ ;
+地軸 > chijiku\ ;
+為着 > shikise\ ;
+大凶 > daikyou\ ;
+要目 > youmoku\ ;
+攻学 > kougaku\ ;
+組版 > kumihan\ ;
+調停 > choutei\ ;
+改宗 > kaishuu\ ;
+織元 > orimoto\ ;
+襟章 > erishou\ ;
+開腹 > kaifuku\ ;
+雛壇 > hinadan\ ;
+大兵 > daihyou\ ;
+燭光 > shokkou\ ;
+表題 > hyoudai\ ;
+震動 > shindou\ ;
+教団 > kyoudan\ ;
+純真 > junshin\ ;
+隷属 > reizoku\ ;
+斜交 > hasukai\ ;
+繁劇 > hangeki\ ;
+煩悩 > bon''nou\ ;
+製薬 > seiyaku\ ;
+売国 > baikoku\ ;
+失体 > shittai\ ;
+純益 > jun''eki\ ;
+料亭 > ryoutei\ ;
+親炙 > shinsha\ ;
+複葉 > fukuyou\ ;
+詳報 > shouhou\ ;
+緞帳 > donchou\ ;
+敵勢 > tekizei\ ;
+表面 > hyoumen\ ;
+長芋 > nagaimo\ ;
+隣席 > rinseki\ ;
+純白 > junpaku\ ;
+評定 > hyoutei\ ;
+防毒 > boudoku\ ;
+数匹 > suuhiki\ ;
+夕刻 > yuukoku\ ;
+電卓 > dentaku\ ;
+終点 > shuuten\ ;
+緊急 > kinkyuu\ ;
+降格 > koukaku\ ;
+給水 > kyuusui\ ;
+精肉 > seiniku\ ;
+敵前 > tekizen\ ;
+夕凪 > yuunagi\ ;
+塞栓 > sokusen\ ;
+繚乱 > ryouran\ ;
+天佑 > ten''yuu\ ;
+詩境 > shikyou\ ;
+縄墨 > jouboku\ ;
+大作 > taisaku\ ;
+親潮 > oyashio\ ;
+団長 > danchou\ ;
+闘病 > toubyou\ ;
+補血 > hoketsu\ ;
+観測 > kansoku\ ;
+煮干 > niboshi\ ;
+四阿 > azumaya\ ;
+綱手 > tsunade\ ;
+陸戦 > rikusen\ ;
+天人 > ten''nin\ ;
+灌腸 > kanchou\ ;
+緊張 > kinchou\ ;
+集塵 > shuujin\ ;
+隔年 > kakunen\ ;
+降服 > koufuku\ ;
+外傷 > gaishou\ ;
+変則 > hensoku\ ;
+集塊 > shuukai\ ;
+無札 > musatsu\ ;
+紅白 > kouhaku\ ;
+解析 > kaiseki\ ;
+無月 > mugetsu\ ;
+増徴 > zouchou\ ;
+襲用 > shuuyou\ ;
+説伏 > seppuku\ ;
+熱唱 > nesshou\ ;
+斉一 > seiitsu\ ;
+外信 > gaishin\ ;
+文中 > bunchuu\ ;
+増強 > zoukyou\ ;
+険悪 > ken''aku\ ;
+長考 > choukou\ ;
+長老 > chourou\ ;
+行頭 > gyoutou\ ;
+線審 > senshin\ ;
+西独 > seidoku\ ;
+救命 > kyuumei\ ;
+隠密 > onmitsu\ ;
+閨秀 > keishuu\ ;
+霍乱 > kakuran\ ;
+国道 > kokudou\ ;
+結氷 > keppyou\ ;
+集団 > shuudan\ ;
+国連 > kokuren\ ;
+陳情 > chinjou\ ;
+火箸 > hibashi\ ;
+売卜 > baiboku\ ;
+敗北 > haiboku\ ;
+障害 > shougai\ ;
+増幅 > zoufuku\ ;
+擲弾 > tekidan\ ;
+潮騒 > shiosai\ ;
+索然 > sakuzen\ ;
+焼成 > shousei\ ;
+電信 > denshin\ ;
+続投 > zokutou\ ;
+濫読 > randoku\ ;
+継承 > keishou\ ;
+綾布 > ayanuno\ ;
+粘膜 > nenmaku\ ;
+摂理 > setsuri\ ;
+雪冤 > setsuen\ ;
+政商 > seishou\ ;
+墨守 > bokushu\ ;
+粉茶 > konacha\ ;
+角材 > kakuzai\ ;
+経歴 > keireki\ ;
+離別 > ribetsu\ ;
+闘牛 > tougyuu\ ;
+照射 > shousha\ ;
+摩滅 > mametsu\ ;
+国軍 > kokugun\ ;
+塗擦 > tosatsu\ ;
+濫觴 > ranshou\ ;
+長編 > chouhen\ ;
+教典 > kyouten\ ;
+地表 > chihyou\ ;
+該博 > gaihaku\ ;
+推薬 > suiyaku\ ;
+陳弁 > chinben\ ;
+糸瓜 > hechima\ ;
+炬燵 > kotatsu\ ;
+行間 > gyoukan\ ;
+雨傘 > amagasa\ ;
+開立 > kairyuu\ ;
+終止 > shuushi\ ;
+撞木 > shumoku\ ;
+雑務 > zatsumu\ ;
+細流 > sairyuu\ ;
+討幕 > toubaku\ ;
+集合 > shuugou\ ;
+捨象 > shashou\ ;
+炮烙 > houroku\ ;
+地蜂 > jibachi\ ;
+険峻 > kenshun\ ;
+親権 > shinken\ ;
+街録 > gairoku\ ;
+複線 > fukusen\ ;
+雑則 > zassoku\ ;
+装薬 > souyaku\ ;
+国賓 > kokuhin\ ;
+点滴 > tenteki\ ;
+陸岸 > rikugan\ ;
+塗抹 > tomatsu\ ;
+詩劇 > shigeki\ ;
+開票 > kaihyou\ ;
+撹拌 > kakuhan\ ;
+陽射 > hizashi\ ;
+熱傷 > nesshou\ ;
+関白 > kanpaku\ ;
+補色 > hoshoku\ ;
+焦慮 > shouryo\ ;
+陪席 > baiseki\ ;
+結核 > kekkaku\ ;
+振鈴 > shinrei\ ;
+教会 > kyoukai\ ;
+雑兵 > zouhyou\ ;
+隣国 > ringoku\ ;
+絃楽 > gengaku\ ;
+雀卓 > jantaku\ ;
+陸封 > rikufuu\ ;
+雪中 > setchuu\ ;
+墨堤 > bokutei\ ;
+託宣 > takusen\ ;
+精神 > seishin\ ;
+損益 > son''eki\ ;
+陣幕 > jinmaku\ ;
+灰皿 > haizara\ ;
+粗縄 > aranawa\ ;
+挌闘 > kakutou\ ;
+挺進 > teishin\ ;
+糸爪 > hechima\ ;
+褒章 > houshou\ ;
+結束 > kessoku\ ;
+灰白 > kaihaku\ ;
+教主 > kyoushu\ ;
+触感 > shokkan\ ;
+招魂 > shoukon\ ;
+親株 > oyakabu\ ;
+精確 > seikaku\ ;
+国論 > kokuron\ ;
+緑土 > ryokudo\ ;
+集光 > shuukou\ ;
+結晶 > kesshou\ ;
+補職 > hoshoku\ ;
+激論 > gekiron\ ;
+詳伝 > shouden\ ;
+紅潮 > kouchou\ ;
+救世 > kyuusei\ ;
+要求 > youkyuu\ ;
+陪審 > baishin\ ;
+挺身 > teishin\ ;
+熱中 > netchuu\ ;
+親書 > shinsho\ ;
+裏腹 > urahara\ ;
+評判 > hyouban\ ;
+納涼 > nouryou\ ;
+図説 > zusetsu\ ;
+詩作 > shisaku\ ;
+間男 > maotoko\ ;
+摺本 > shouhon\ ;
+雑事 > zatsuji\ ;
+改修 > kaishuu\ ;
+雌伏 > shifuku\ ;
+経文 > kyoumon\ ;
+絶息 > zessoku\ ;
+陣容 > jin''you\ ;
+試作 > shisaku\ ;
+陸大 > rikudai\ ;
+褥瘡 > jokusou\ ;
+粗筋 > arasuji\ ;
+精白 > seihaku\ ;
+行進 > koushin\ ;
+長短 > choutan\ ;
+掣肘 > seichuu\ ;
+親方 > oyakata\ ;
+改作 > kaisaku\ ;
+設営 > setsuei\ ;
+集会 > shuukai\ ;
+執権 > shikken\ ;
+絵心 > egokoro\ ;
+拝領 > hairyou\ ;
+絶後 > zetsugo\ ;
+親政 > shinsei\ ;
+管領 > kanryou\ ;
+粘稠 > nenchuu\ ;
+撮影 > satsuei\ ;
+塩害 > shiogai\ ;
+補綴 > hotetsu\ ;
+篤農 > tokunou\ ;
+揮発 > kihatsu\ ;
+訳名 > yakumei\ ;
+烏木 > kokutan\ ;
+隊商 > taishou\ ;
+堆朱 > tsuishu\ ;
+陸地 > rikuchi\ ;
+境域 > kyouiki\ ;
+指針 > shishin\ ;
+回読 > kaidoku\ ;
+照合 > shougou\ ;
+証券 > shouken\ ;
+評伝 > hyouden\ ;
+灸点 > kyuuten\ ;
+型番 > kataban\ ;
+焼売 > shuumai\ ;
+回診 > kaishin\ ;
+複眼 > fukugan\ ;
+詔令 > shourei\ ;
+境地 > kyouchi\ ;
+編修 > henshuu\ ;
+統幕 > toubaku\ ;
+火燵 > kotatsu\ ;
+播州 > banshuu\ ;
+無宿 > mushuku\ ;
+角帽 > kakubou\ ;
+火熱 > kanetsu\ ;
+長男 > chounan\ ;
+親指 > oyayubi\ ;
+角帯 > kakuobi\ ;
+無実 > mujitsu\ ;
+長生 > chousei\ ;
+索条 > sakujou\ ;
+表解 > hyoukai\ ;
+総則 > sousoku\ ;
+四角 > shikaku\ ;
+紋様 > mon''you\ ;
+増収 > zoushuu\ ;
+行賞 > koushou\ ;
+管長 > kanchou\ ;
+綾取 > ayatori\ ;
+続報 > zokuhou\ ;
+探索 > tansaku\ ;
+血路 > ketsuro\ ;
+報徳 > houtoku\ ;
+摩擦 > masatsu\ ;
+報復 > houfuku\ ;
+提督 > teitoku\ ;
+見料 > kenryou\ ;
+表装 > hyousou\ ;
+終戦 > shuusen\ ;
+国葬 > kokusou\ ;
+西暦 > seireki\ ;
+籠絡 > rouraku\ ;
+粗皮 > arakawa\ ;
+炭柱 > tanchuu\ ;
+堪忍 > kan''nin\ ;
+親愛 > shin''ai\ ;
+術語 > jutsugo\ ;
+観念 > kan''nen\ ;
+純朴 > junboku\ ;
+訓告 > kunkoku\ ;
+西日 > nishibi\ ;
+襲来 > shuurai\ ;
+米穀 > beikoku\ ;
+節迫 > seppaku\ ;
+執政 > shissei\ ;
+擁壁 > youheki\ ;
+設備 > setsubi\ ;
+血豆 > chimame\ ;
+証人 > shounin\ ;
+圧縮 > asshuku\ ;
+掌編 > shouhen\ ;
+緒作 > shosaku\ ;
+塁審 > ruishin\ ;
+墳丘 > funkyuu\ ;
+粗略 > soryaku\ ;
+級数 > kyuusuu\ ;
+紋服 > monpuku\ ;
+裕福 > yuufuku\ ;
+掛算 > kakezan\ ;
+衆論 > shuuron\ ;
+回虫 > kaichuu\ ;
+推称 > suishou\ ;
+絵姿 > esugata\ ;
+要撃 > yougeki\ ;
+地籍 > chiseki\ ;
+探究 > tankyuu\ ;
+掌紋 > shoumon\ ;
+粒界 > ryuukai\ ;
+捧腹 > houfuku\ ;
+損流 > sonryuu\ ;
+漆食 > shikkui\ ;
+照会 > shoukai\ ;
+挙証 > kyoshou\ ;
+点描 > tenbyou\ ;
+在籍 > zaiseki\ ;
+拓銀 > takugin\ ;
+絶壁 > zeppeki\ ;
+隔世 > kakusei\ ;
+陸兵 > rikuhei\ ;
+綱具 > tsunagu\ ;
+粗玉 > aratama\ ;
+網元 > amimoto\ ;
+言及 > genkyuu\ ;
+糸枠 > itowaku\ ;
+除却 > jokyaku\ ;
+漫録 > manroku\ ;
+随一 > zuiichi\ ;
+糸杉 > itosugi\ ;
+灰殻 > haigara\ ;
+訪中 > houchuu\ ;
+摂政 > sesshou\ ;
+塩味 > shioaji\ ;
+地積 > chiseki\ ;
+結尾 > ketsubi\ ;
+約数 > yakusuu\ ;
+防壁 > bouheki\ ;
+糾明 > kyuumei\ ;
+塁壁 > ruiheki\ ;
+結審 > kesshin\ ;
+細心 > saishin\ ;
+採石 > saiseki\ ;
+堅忍 > ken''nin\ ;
+粒状 > ryuujou\ ;
+拙速 > sessoku\ ;
+潮解 > choukai\ ;
+撮土 > satsudo\ ;
+漸進 > zenshin\ ;
+親展 > shinten\ ;
+規律 > kiritsu\ ;
+持説 > jisetsu\ ;
+視床 > shishou\ ;
+角地 > kadochi\ ;
+経学 > keigaku\ ;
+粋狂 > suikyou\ ;
+裏白 > urajiro\ ;
+塵入 > gomiire\ ;
+報奨 > houshou\ ;
+細帯 > hosoobi\ ;
+親子 > shinshi\ ;
+無口 > mukuchi\ ;
+執念 > shuunen\ ;
+陸上 > rikujou\ ;
+漫遊 > man''yuu\ ;
+絶唱 > zesshou\ ;
+回腸 > kaichou\ ;
+長江 > choukou\ ;
+地目 > chimoku\ ;
+拍車 > hakusha\ ;
+無力 > muryoku\ ;
+抽選 > chuusen\ ;
+捜索 > sousaku\ ;
+開業 > kaigyou\ ;
+絶叫 > zekkyou\ ;
+国粋 > kokusui\ ;
+掛留 > keiryuu\ ;
+親好 > shinkou\ ;
+閉業 > heigyou\ ;
+報国 > houkoku\ ;
+米独 > beidoku\ ;
+振舞 > furumai\ ;
+箴言 > shingen\ ;
+終始 > shuushi\ ;
+長歎 > choutan\ ;
+長歌 > nagauta\ ;
+振興 > shinkou\ ;
+視学 > shigaku\ ;
+陞任 > shounin\ ;
+紙幅 > shifuku\ ;
+紙帳 > shichou\ ;
+経堂 > kyoudou\ ;
+陣中 > jinchuu\ ;
+納得 > nattoku\ ;
+絶勝 > zesshou\ ;
+粘液 > nen''eki\ ;
+土着 > dochaku\ ;
+国等 > kokutou\ ;
+堂守 > doumori\ ;
+拝謁 > haietsu\ ;
+撤収 > tesshuu\ ;
+籠球 > roukyuu\ ;
+灯明 > toumyou\ ;
+拝読 > haidoku\ ;
+蟶貝 > mategai\ ;
+等閑 > naozari\ ;
+招請 > shousei\ ;
+鏤骨 > rukotsu\ ;
+見学 > kengaku\ ;
+投錨 > toubyou\ ;
+経国 > keikoku\ ;
+在留 > zairyuu\ ;
+損料 > sonryou\ ;
+紐帯 > chuutai\ ;
+鏡高 > kyoukou\ ;
+圭璧 > keiheki\ ;
+描法 > byouhou\ ;
+製氷 > seihyou\ ;
+地球 > chikyuu\ ;
+鑑賞 > kanshou\ ;
+国税 > kokuzei\ ;
+濫用 > ran''you\ ;
+紀律 > kiritsu\ ;
+門柱 > monchuu\ ;
+降伏 > koufuku\ ;
+報告 > houkoku\ ;
+紳士 > shinshi\ ;
+糾弾 > kyuudan\ ;
+衒耀 > gen''you\ ;
+困窮 > konkyuu\ ;
+表紙 > hyoushi\ ;
+烈女 > retsujo\ ;
+防共 > boukyou\ ;
+撰修 > senshuu\ ;
+闘将 > toushou\ ;
+親善 > shinzen\ ;
+濫獲 > rankaku\ ;
+漫読 > mandoku\ ;
+関所 > sekisho\ ;
+瀟洒 > shousha\ ;
+城廓 > joukaku\ ;
+糸底 > itozoko\ ;
+漫評 > manpyou\ ;
+灌木 > kanboku\ ;
+見境 > misakai\ ;
+経史 > kyoushi\ ;
+折込 > orikomi\ ;
+回章 > kaishou\ ;
+授爵 > jushaku\ ;
+等量 > touryou\ ;
+鏡面 > kyoumen\ ;
+経協 > keikyou\ ;
+固着 > kochaku\ ;
+推測 > suisoku\ ;
+国益 > kokueki\ ;
+滲透 > shintou\ ;
+観劇 > kangeki\ ;
+約定 > yakujou\ ;
+報償 > houshou\ ;
+複本 > fukuhon\ ;
+長文 > choubun\ ;
+撩乱 > ryouran\ ;
+探測 > tansoku\ ;
+投身 > toushin\ ;
+統一 > touitsu\ ;
+開拓 > kaitaku\ ;
+関心 > kanshin\ ;
+補殺 > hosatsu\ ;
+糸屑 > itokuzu\ ;
+撃剣 > gekiken\ ;
+扁額 > hengaku\ ;
+演説 > enzetsu\ ;
+垂教 > suikyou\ ;
+複星 > fukusei\ ;
+等速 > tousoku\ ;
+所領 > shoryou\ ;
+竹馬 > chikuba\ ;
+補欠 > hoketsu\ ;
+国産 > kokusan\ ;
+血縁 > ketsuen\ ;
+複方 > fukuhou\ ;
+粗末 > somatsu\ ;
+術策 > jussaku\ ;
+複文 > fukubun\ ;
+激甚 > gekijin\ ;
+鎮魂 > chingon\ ;
+複数 > fukusuu\ ;
+灯心 > toushin\ ;
+損得 > sontoku\ ;
+堕力 > daryoku\ ;
+終刊 > shuukan\ ;
+探求 > tankyuu\ ;
+親元 > oyamoto\ ;
+成鳥 > seichou\ ;
+鏡鑑 > kyoukan\ ;
+血糊 > chinori\ ;
+等身 > toushin\ ;
+漸落 > zenraku\ ;
+粗方 > arakata\ ;
+糸姫 > itohime\ ;
+節義 > setsugi\ ;
+筆蹟 > hisseki\ ;
+長所 > chousho\ ;
+筆跡 > hisseki\ ;
+潮紅 > choukou\ ;
+所長 > shochou\ ;
+終値 > owarine\ ;
+細則 > saisoku\ ;
+血筋 > chisuji\ ;
+潅腸 > kanchou\ ;
+城壁 > jouheki\ ;
+地殻 > chikaku\ ;
+摘取 > tekishu\ ;
+招致 > shouchi\ ;
+策謀 > sakubou\ ;
+親交 > shinkou\ ;
+精強 > seikyou\ ;
+折角 > sekkaku\ ;
+融通 > yuudzuu\ ;
+開幕 > kaimaku\ ;
+喫驚 > bikkuri\ ;
+開帳 > kaichou\ ;
+簇生 > zokusei\ ;
+坑木 > kouboku\ ;
+級友 > kyuuyuu\ ;
+閉幕 > heimaku\ ;
+鎖骨 > sakotsu\ ;
+満額 > mangaku\ ;
+街着 > machigi\ ;
+振盪 > shintou\ ;
+西北 > seihoku\ ;
+覆刻 > fukkoku\ ;
+圧殺 > assatsu\ ;
+鎮静 > chinsei\ ;
+蟋蟀 > koorogi\ ;
+濠洲 > goushuu\ ;
+拝聴 > haichou\ ;
+才量 > sairyou\ ;
+濁点 > dakuten\ ;
+終世 > shuusei\ ;
+蠏缶 > kanikan\ ;
+竜顔 > ryougan\ ;
+長径 > choukei\ ;
+長征 > chousei\ ;
+執刀 > shittou\ ;
+折衷 > setchuu\ ;
+襲名 > shuumei\ ;
+招聘 > shouhei\ ;
+折衝 > sesshou\ ;
+紹介 > shoukai\ ;
+紅唇 > koushin\ ;
+表現 > hyougen\ ;
+四球 > shikyuu\ ;
+垂心 > suishin\ ;
+推服 > suifuku\ ;
+衆知 > shuuchi\ ;
+閑寂 > kanjaku\ ;
+糾問 > kyuumon\ ;
+裏書 > uragaki\ ;
+筆誅 > hitchuu\ ;
+承認 > shounin\ ;
+長幼 > chouyou\ ;
+長年 > naganen\ ;
+閣外 > kakugai\ ;
+要償 > youshou\ ;
+等角 > toukaku\ ;
+嘆賞 > tanshou\ ;
+等親 > toushin\ ;
+搾取 > sakushu\ ;
+堅人 > katajin\ ;
+装束 > souzoku\ ;
+土橋 > dobashi\ ;
+地核 > chikaku\ ;
+手近 > tedjika\ ;
+裏方 > urakata\ ;
+糾合 > kyuugou\ ;
+蟹缶 > kanikan\ ;
+激減 > gekigen\ ;
+粗忽 > sokotsu\ ;
+納入 > nounyuu\ ;
+技術 > gijutsu\ ;
+投薬 > touyaku\ ;
+激浪 > gekirou\ ;
+約分 > yakubun\ ;
+国法 > kokuhou\ ;
+手蹟 > shuseki\ ;
+成長 > seichou\ ;
+粒径 > ryuukei\ ;
+長官 > choukan\ ;
+手跡 > shuseki\ ;
+長子 > choushi\ ;
+国民 > kokumin\ ;
+精妙 > seimyou\ ;
+濁水 > dakusui\ ;
+蛟龍 > kouryou\ ;
+排斥 > haiseki\ ;
+閉塞 > heisoku\ ;
+行状 > gyoujou\ ;
+蝶貝 > chougai\ ;
+襟元 > erimoto\ ;
+血球 > kekkyuu\ ;
+拙策 > sessaku\ ;
+懸隔 > kenkaku\ ;
+裏技 > urawaza\ ;
+在方 > zaikata\ ;
+竹輪 > chikuwa\ ;
+排撃 > haigeki\ ;
+節目 > fushime\ ;
+採択 > saitaku\ ;
+捕殺 > hosatsu\ ;
+開国 > kaikoku\ ;
+螟虫 > meichuu\ ;
+災厄 > saiyaku\ ;
+土日 > donichi\ ;
+褒奨 > houshou\ ;
+長大 > choudai\ ;
+成銀 > narigin\ ;
+範疇 > hanchuu\ ;
+回流 > kairyuu\ ;
+粗密 > somitsu\ ;
+掌握 > shouaku\ ;
+成金 > narikin\ ;
+潔白 > keppaku\ ;
+潔癖 > keppeki\ ;
+漢籍 > kanseki\ ;
+圧接 > assetsu\ ;
+抽籤 > chuusen\ ;
+競走 > kyousou\ ;
+粒子 > ryuushi\ ;
+才覚 > saikaku\ ;
+火口 > higuchi\ ;
+所謂 > iwayuru\ ;
+笑覧 > shouran\ ;
+間口 > maguchi\ ;
+搏動 > hakudou\ ;
+戦跡 > senseki\ ;
+閣内 > kakunai\ ;
+満身 > manshin\ ;
+国本 > kokuhon\ ;
+裏庭 > uraniwa\ ;
+裏店 > uradana\ ;
+国有 > kokuyuu\ ;
+国書 > kokusho\ ;
+火力 > karyoku\ ;
+長嘆 > choutan\ ;
+竜車 > ryuusha\ ;
+我輩 > wagahai\ ;
+満足 > manzoku\ ;
+血潮 > chishio\ ;
+漆絵 > urushie\ ;
+粗壁 > arakabe\ ;
+血漿 > kesshou\ ;
+齷齪 > akuseku\ ;
+激暑 > gekisho\ ;
+商魂 > shoukon\ ;
+地心 > chishin\ ;
+空馬 > karauma\ ;
+長唄 > nagauta\ ;
+損傷 > sonshou\ ;
+算盤 > soroban\ ;
+国文 > kokubun\ ;
+開削 > kaisaku\ ;
+所行 > shogyou\ ;
+国教 > kokkyou\ ;
+長命 > choumei\ ;
+国政 > kokusei\ ;
+溢血 > ikketsu\ ;
+米審 > beishin\ ;
+坩堝 > rutsubo\ ;
+節煙 > setsuen\ ;
+団栗 > donguri\ ;
+減額 > gengaku\ ;
+図星 > zuboshi\ ;
+裏山 > urayama\ ;
+折紙 > origami\ ;
+拘留 > kouryuu\ ;
+行水 > gyouzui\ ;
+粉壁 > funpeki\ ;
+立身 > risshin\ ;
+接尾 > setsubi\ ;
+竹製 > takesei\ ;
+商館 > shoukan\ ;
+算用 > san''you\ ;
+血沈 > ketchin\ ;
+間作 > kansaku\ ;
+手蔓 > tedzuru\ ;
+複合 > fukugou\ ;
+長剣 > chouken\ ;
+火付 > hitsuke\ ;
+唐黍 > toukibi\ ;
+地峡 > chikyou\ ;
+築港 > chikkou\ ;
+提唱 > teishou\ ;
+空隙 > kuugeki\ ;
+抜穴 > nukeana\ ;
+閑人 > himajin\ ;
+空陸 > kuuriku\ ;
+蝙蝠 > henpuku\ ;
+抄紙 > shoushi\ ;
+回春 > kaishun\ ;
+間中 > aidajuu\ ;
+承継 > shoukei\ ;
+等級 > toukyuu\ ;
+排尿 > hainyou\ ;
+捷径 > shoukei\ ;
+国手 > kokushu\ ;
+推奨 > suishou\ ;
+行楽 > kouraku\ ;
+長兄 > choukei\ ;
+表明 > hyoumei\ ;
+激戦 > gekisen\ ;
+回教 > kaikyou\ ;
+地学 > chigaku\ ;
+漁礁 > gyoshou\ ;
+表敬 > hyoukei\ ;
+憂鬱 > yuuutsu\ ;
+懸賞 > kenshou\ ;
+激憤 > gekifun\ ;
+穿鑿 > sensaku\ ;
+潤沢 > juntaku\ ;
+振替 > furikae\ ;
+篦棒 > berabou\ ;
+複写 > fukusha\ ;
+投票 > touhyou\ ;
+国情 > kokujou\ ;
+在宅 > zaitaku\ ;
+在学 > zaigaku\ ;
+懐郷 > kaikyou\ ;
+激情 > gekijou\ ;
+精一 > seiitsu\ ;
+器物 > kibutsu\ ;
+米国 > beikoku\ ;
+立証 > risshou\ ;
+掛声 > kakegoe\ ;
+行末 > yukusue\ ;
+行書 > gyousho\ ;
+渾身 > konshin\ ;
+扁舟 > henshuu\ ;
+投石 > touseki\ ;
+指標 > shihyou\ ;
+困惑 > konwaku\ ;
+挟書 > kyousho\ ;
+描写 > byousha\ ;
+衆望 > shuubou\ ;
+長上 > choujou\ ;
+衷情 > chuujou\ ;
+減量 > genryou\ ;
+澄明 > choumei\ ;
+衆智 > shuuchi\ ;
+嘉節 > kasetsu\ ;
+行数 > gyousuu\ ;
+図式 > zushiki\ ;
+行政 > gyousei\ ;
+成虫 > seichuu\ ;
+漿液 > shoueki\ ;
+地坪 > jitsubo\ ;
+穀類 > kokurui\ ;
+漠然 > bakuzen\ ;
+競艇 > kyoutei\ ;
+製作 > seisaku\ ;
+突進 > tosshin\ ;
+提供 > teikyou\ ;
+深閑 > shinkan\ ;
+米収 > beishuu\ ;
+穿通 > sentsuu\ ;
+減速 > gensoku\ ;
+表情 > hyoujou\ ;
+符節 > fusetsu\ ;
+噴流 > funryuu\ ;
+承知 > shouchi\ ;
+種馬 > taneuma\ ;
+淡雪 > awayuki\ ;
+啓迪 > keiteki\ ;
+接受 > setsuju\ ;
+挨拶 > aisatsu\ ;
+挫折 > zasetsu\ ;
+接収 > sesshuu\ ;
+手綱 > tadzuna\ ;
+衰弱 > suijaku\ ;
+回心 > kaishin\ ;
+国対 > kokutai\ ;
+漁獲 > gyokaku\ ;
+回復 > kaifuku\ ;
+答申 > toushin\ ;
+扉絵 > tobirae\ ;
+国宝 > kokuhou\ ;
+漁猟 > gyoryou\ ;
+国定 > kokutei\ ;
+国守 > kokushu\ ;
+笑納 > shounou\ ;
+投球 > toukyuu\ ;
+囚役 > shuueki\ ;
+唇音 > shin''on\ ;
+捷報 > shouhou\ ;
+探勝 > tanshou\ ;
+投獄 > tougoku\ ;
+行成 > ikinari\ ;
+滑石 > kasseki\ ;
+清適 > seiteki\ ;
+満腹 > manpuku\ ;
+鼻骨 > bikotsu\ ;
+地口 > jiguchi\ ;
+手箒 > tebouki\ ;
+漂然 > hyouzen\ ;
+唐門 > karamon\ ;
+涼風 > ryoufuu\ ;
+滞留 > tairyuu\ ;
+指摘 > shiteki\ ;
+涵養 > kan''you\ ;
+抹消 > masshou\ ;
+竜脳 > ryuunou\ ;
+国大 > kokudai\ ;
+米俗 > beizoku\ ;
+国外 > kokugai\ ;
+掘削 > kussaku\ ;
+術後 > jutsugo\ ;
+国士 > kokushi\ ;
+裏側 > uragawa\ ;
+濁声 > damigoe\ ;
+米作 > beisaku\ ;
+激変 > gekihen\ ;
+唱道 > shoudou\ ;
+問責 > monseki\ ;
+挑戦 > chousen\ ;
+国境 > kokkyou\ ;
+表層 > hyousou\ ;
+空谷 > kuukoku\ ;
+戦績 > senseki\ ;
+激増 > gekizou\ ;
+懇親 > konshin\ ;
+端綱 > hadzuna\ ;
+深遠 > shin''en\ ;
+渓谷 > keikoku\ ;
+篤志 > tokushi\ ;
+裏作 > urasaku\ ;
+喜色 > kishoku\ ;
+裂傷 > resshou\ ;
+蛮襟 > bankara\ ;
+米中 > beichuu\ ;
+立腹 > rippuku\ ;
+税額 > zeigaku\ ;
+招来 > shourai\ ;
+竿竹 > saodake\ ;
+漫楽 > mangaku\ ;
+淫逸 > in''itsu\ ;
+拘束 > kousoku\ ;
+空調 > kuuchou\ ;
+突角 > tokkaku\ ;
+虫類 > chuurui\ ;
+捺印 > natsuin\ ;
+衆庶 > shuusho\ ;
+竹竿 > takezao\ ;
+問診 > monshin\ ;
+拓本 > takuhon\ ;
+漂浪 > hyourou\ ;
+拡散 > kakusan\ ;
+蛹虫 > youchuu\ ;
+鋳鋼 > chuukou\ ;
+積載 > sekisai\ ;
+海鳥 > kaichou\ ;
+国喪 > kokusou\ ;
+商談 > shoudan\ ;
+空襲 > kuushuu\ ;
+成績 > seiseki\ ;
+箆棒 > berabou\ ;
+在俗 > zaizoku\ ;
+拱手 > kyoushu\ ;
+善良 > zenryou\ ;
+衒学 > gengaku\ ;
+鋳金 > chuukin\ ;
+空行 > kuugyou\ ;
+地主 > jinushi\ ;
+地中 > chichuu\ ;
+成約 > seiyaku\ ;
+囃子 > hayashi\ ;
+秀麗 > shuurei\ ;
+濫作 > ransaku\ ;
+街娼 > gaishou\ ;
+国名 > kokumei\ ;
+国司 > kokushi\ ;
+国号 > kokugou\ ;
+国史 > kokushi\ ;
+錯角 > sakkaku\ ;
+在京 > zaikyou\ ;
+衝天 > shouten\ ;
+箇月 > kagetsu\ ;
+圏内 > ken''nai\ ;
+錯覚 > sakkaku\ ;
+拍数 > hakusuu\ ;
+漢朝 > kanchou\ ;
+管掌 > kanshou\ ;
+在中 > zaichuu\ ;
+潜心 > senshin\ ;
+回国 > kaikoku\ ;
+潛心 > senshin\ ;
+表在 > hyouzai\ ;
+滴水 > tekisui\ ;
+打率 > daritsu\ ;
+鋳造 > chuuzou\ ;
+国勢 > kokusei\ ;
+四国 > shikoku\ ;
+国労 > kokurou\ ;
+深謝 > shinsha\ ;
+拝承 > haishou\ ;
+深謀 > shinbou\ ;
+嚮導 > kyoudou\ ;
+激動 > gekidou\ ;
+立米 > ryuubei\ ;
+筋注 > kinchuu\ ;
+激励 > gekirei\ ;
+抑止 > yokushi\ ;
+漢族 > kanzoku\ ;
+満票 > manpyou\ ;
+節度 > setsudo\ ;
+禽鳥 > kinchou\ ;
+戴白 > taihaku\ ;
+拙技 > setsugi\ ;
+漁業 > gyogyou\ ;
+演曲 > enkyoku\ ;
+液量 > ekiryou\ ;
+蛇蠍 > dakatsu\ ;
+国内 > kokunai\ ;
+鼎革 > teikaku\ ;
+蛔虫 > kaichuu\ ;
+国典 > kokuten\ ;
+蝋石 > rouseki\ ;
+竜神 > ryuujin\ ;
+消防 > shoubou\ ;
+流麗 > ryuurei\ ;
+端的 > tanteki\ ;
+温色 > onshoku\ ;
+蛇蝎 > dakatsu\ ;
+国債 > kokusai\ ;
+準用 > jun''you\ ;
+穴蔵 > anagura\ ;
+拍手 > hakushu\ ;
+消閑 > shoukan\ ;
+手燭 > teshoku\ ;
+喪神 > soushin\ ;
+四周 > shishuu\ ;
+回収 > kaishuu\ ;
+箱師 > hakoshi\ ;
+表号 > hyougou\ ;
+黄麻 > tsunaso\ ;
+虫酸 > mushizu\ ;
+満目 > manmoku\ ;
+拝復 > haifuku\ ;
+鐘楼 > shourou\ ;
+立秋 > risshuu\ ;
+秋風 > shuufuu\ ;
+押捺 > ounatsu\ ;
+国使 > kokushi\ ;
+招待 > shoutai\ ;
+浦風 > urakaze\ ;
+空茶 > karacha\ ;
+国体 > kokutai\ ;
+竜眼 > ryuugan\ ;
+海陸 > kairiku\ ;
+稀釈 > kishaku\ ;
+税込 > zeikomi\ ;
+黒鯛 > kurodai\ ;
+空色 > sorairo\ ;
+挙国 > kyokoku\ ;
+国主 > kokushu\ ;
+衰兆 > suichou\ ;
+国中 > kunijuu\ ;
+秋霜 > shuusou\ ;
+喉笛 > nodobue\ ;
+秋霖 > shuurin\ ;
+蛮習 > banshuu\ ;
+黄鳥 > kouchou\ ;
+行啓 > gyoukei\ ;
+秋雨 > akisame\ ;
+空腹 > kuufuku\ ;
+滋殖 > jishoku\ ;
+衝動 > shoudou\ ;
+挿入 > sounyuu\ ;
+和食 > washoku\ ;
+抜擢 > batteki\ ;
+溯源 > sakugen\ ;
+抛擲 > houteki\ ;
+商船 > shousen\ ;
+鍵穴 > kagiana\ ;
+振動 > shindou\ ;
+蟻巻 > arimaki\ ;
+扶植 > fushoku\ ;
+抄本 > shouhon\ ;
+指圧 > shiatsu\ ;
+投擲 > touteki\ ;
+指図 > sashizu\ ;
+溺水 > dekisui\ ;
+築地 > tsukiji\ ;
+黒風 > kokufuu\ ;
+蝋燭 > rousoku\ ;
+溺死 > dekishi\ ;
+拙宅 > settaku\ ;
+手沢 > shutaku\ ;
+惣領 > souryou\ ;
+禁鳥 > kinchou\ ;
+抑揚 > yokuyou\ ;
+囚人 > shuujin\ ;
+清聴 > seichou\ ;
+笊法 > zaruhou\ ;
+懇篤 > kontoku\ ;
+競漕 > kyousou\ ;
+淳良 > junryou\ ;
+減給 > genkyuu\ ;
+鏖殺 > ousatsu\ ;
+唐薯 > karaimo\ ;
+税調 > zeichou\ ;
+笑止 > shoushi\ ;
+蘭鋳 > ranchuu\ ;
+拡大 > kakudai\ ;
+銅鐸 > doutaku\ ;
+拍子 > hyoushi\ ;
+銅鏡 > doukyou\ ;
+浸透 > shintou\ ;
+策戦 > sakusen\ ;
+成熟 > seijuku\ ;
+溜池 > tameike\ ;
+浦里 > urazato\ ;
+湯熨 > yunoshi\ ;
+喫煙 > kitsuen\ ;
+嘉日 > kajitsu\ ;
+満潮 > manchou\ ;
+称賛 > shousan\ ;
+嚇嚇 > kakkaku\ ;
+商経 > shoukei\ ;
+拓大 > takudai\ ;
+源流 > genryuu\ ;
+穎脱 > eidatsu\ ;
+突端 > toppana\ ;
+行体 > gyoutai\ ;
+漢学 > kangaku\ ;
+黄雀 > koujaku\ ;
+喀痰 > kakutan\ ;
+鼻血 > hanadji\ ;
+錯綜 > sakusou\ ;
+深耕 > shinkou\ ;
+術中 > jutchuu\ ;
+派閥 > habatsu\ ;
+善用 > zen''you\ ;
+蛟竜 > kouryou\ ;
+漆工 > shikkou\ ;
+憲章 > kenshou\ ;
+麻雀 > mazejan\ ;
+戦況 > senkyou\ ;
+漁師 > ryoushi\ ;
+篆刻 > tenkoku\ ;
+衆人 > shuujin\ ;
+所業 > shogyou\ ;
+究竟 > kukkyou\ ;
+嘲弄 > chourou\ ;
+戯歌 > zareuta\ ;
+蠢動 > shundou\ ;
+唐臼 > karausu\ ;
+満洲 > manshuu\ ;
+湾流 > wanryuu\ ;
+善玉 > zendama\ ;
+私通 > shitsuu\ ;
+種苗 > shubyou\ ;
+海賊 > kaizoku\ ;
+種芋 > taneimo\ ;
+湮滅 > inmetsu\ ;
+戦歴 > senreki\ ;
+指値 > sashine\ ;
+海豹 > kaihyou\ ;
+海象 > seiuchi\ ;
+窮状 > kyuujou\ ;
+押売 > oshiuri\ ;
+品評 > hinpyou\ ;
+惨酷 > zankoku\ ;
+悪食 > akujiki\ ;
+蛮的 > banteki\ ;
+深紅 > shinkou\ ;
+神髄 > shinzui\ ;
+蘇鉄 > sotetsu\ ;
+等張 > touchou\ ;
+蟄居 > chikkyo\ ;
+愚説 > gusetsu\ ;
+懸濁 > kendaku\ ;
+商社 > shousha\ ;
+銃身 > juushin\ ;
+溝板 > dobuita\ ;
+清秋 > seishuu\ ;
+感覚 > kankaku\ ;
+清福 > seifuku\ ;
+減益 > gen''eki\ ;
+清祥 > seishou\ ;
+嚢中 > nouchuu\ ;
+神饌 > shinsen\ ;
+龍神 > ryuujin\ ;
+秘訣 > hiketsu\ ;
+空白 > kuuhaku\ ;
+潜伏 > senpuku\ ;
+嘆息 > tansoku\ ;
+虹色 > nijiiro\ ;
+策定 > sakutei\ ;
+流連 > ryuuren\ ;
+浮説 > fusetsu\ ;
+積算 > sekisan\ ;
+悪阻 > tsuwari\ ;
+憶病 > okubyou\ ;
+慣習 > kanshuu\ ;
+深窓 > shinsou\ ;
+戯曲 > gikyoku\ ;
+手掌 > shushou\ ;
+患難 > kan''nan\ ;
+拡充 > kakujuu\ ;
+神韻 > shin''in\ ;
+穀粉 > kokufun\ ;
+哨舎 > shousha\ ;
+管内 > kan''nai\ ;
+鑿井 > sakusei\ ;
+唐糸 > karaito\ ;
+鉄鎚 > tettsui\ ;
+空瓶 > karabin\ ;
+満株 > mankabu\ ;
+鋼索 > kousaku\ ;
+拍動 > hakudou\ ;
+手抄 > shushou\ ;
+秘術 > hijutsu\ ;
+滑席 > kasseki\ ;
+神霊 > shinrei\ ;
+成業 > seigyou\ ;
+蛋白 > tanpaku\ ;
+周遊 > shuuyuu\ ;
+悠長 > yuuchou\ ;
+商用 > shouyou\ ;
+滅度 > metsudo\ ;
+満更 > manzara\ ;
+策士 > sakushi\ ;
+周辺 > shuuhen\ ;
+成桂 > narikei\ ;
+海蛇 > umihebi\ ;
+活路 > katsuro\ ;
+黒貂 > kuroten\ ;
+鐘声 > shousei\ ;
+拙作 > sessaku\ ;
+銭葵 > zeniaoi\ ;
+漆喰 > shikkui\ ;
+波音 > namioto\ ;
+稜線 > ryousen\ ;
+窮民 > kyuumin\ ;
+才徳 > saitoku\ ;
+立案 > ritsuan\ ;
+黙認 > mokunin\ ;
+慶福 > keifuku\ ;
+呵責 > kashaku\ ;
+空爆 > kuubaku\ ;
+吃驚 > bikkuri\ ;
+蝿帳 > haichou\ ;
+窮死 > kyuushi\ ;
+各駅 > kakueki\ ;
+商状 > shoujou\ ;
+秋蚕 > shuusan\ ;
+押入 > oshiire\ ;
+混用 > kon''you\ ;
+渦潮 > uzushio\ ;
+黙視 > mokushi\ ;
+蘭虫 > ranchuu\ ;
+釣魚 > chougyo\ ;
+我方 > wagahou\ ;
+同額 > dougaku\ ;
+穴熊 > anaguma\ ;
+流説 > rusetsu\ ;
+所得 > shotoku\ ;
+溜息 > tameiki\ ;
+深甚 > shinjin\ ;
+恭順 > kyoujun\ ;
+漏刻 > roukoku\ ;
+薩長 > satchou\ ;
+流言 > ryuugen\ ;
+担任 > tan''nin\ ;
+感興 > kankyou\ ;
+淡白 > tanpaku\ ;
+立春 > risshun\ ;
+窯業 > yougyou\ ;
+抜去 > bakkyou\ ;
+抗告 > koukoku\ ;
+温浴 > on''yoku\ ;
+禁足 > kinsoku\ ;
+準急 > junkyuu\ ;
+吃音 > kitsuon\ ;
+鉄路 > tetsuro\ ;
+社長 > shachou\ ;
+空漠 > kuubaku\ ;
+各面 > kakumen\ ;
+黒血 > kurochi\ ;
+消耗 > shoumou\ ;
+竣成 > shunsei\ ;
+洗足 > sensoku\ ;
+黒蟻 > kuroari\ ;
+憶測 > okusoku\ ;
+流行 > ryuukou\ ;
+窒死 > chisshi\ ;
+金高 > kindaka\ ;
+筺体 > kyoutai\ ;
+各階 > kakukai\ ;
+含量 > ganryou\ ;
+秋草 > akikusa\ ;
+才学 > saigaku\ ;
+神道 > shintou\ ;
+吾輩 > wagahai\ ;
+憤激 > fungeki\ ;
+情調 > jouchou\ ;
+愉色 > yushoku\ ;
+種目 > shumoku\ ;
+清濁 > seidaku\ ;
+策動 > sakudou\ ;
+周覧 > shuuran\ ;
+清澄 > seichou\ ;
+所属 > shozoku\ ;
+策励 > sakurei\ ;
+戦役 > sen''eki\ ;
+薄雲 > usugumo\ ;
+薄雪 > usuyuki\ ;
+祝辞 > shukuji\ ;
+抑制 > yokusei\ ;
+恋風 > koikaze\ ;
+商港 > shoukou\ ;
+神輿 > mikoshi\ ;
+蕁麻 > irakusa\ ;
+渓流 > keiryuu\ ;
+湿性 > shissei\ ;
+童心 > doushin\ ;
+戒慎 > kaishin\ ;
+投入 > tounyuu\ ;
+鹿追 > shikaoi\ ;
+祖述 > sojutsu\ ;
+淋病 > rinbyou\ ;
+戊戌 > bojutsu\ ;
+薬酒 > yakushu\ ;
+呪術 > jujutsu\ ;
+古顔 > furugao\ ;
+浅薄 > senpaku\ ;
+手妻 > tedzuma\ ;
+混濁 > kondaku\ ;
+金額 > kingaku\ ;
+鉤虫 > kouchuu\ ;
+浣腸 > kanchou\ ;
+清涼 > seiryou\ ;
+惨落 > sanraku\ ;
+商法 > shouhou\ ;
+慣用 > kan''you\ ;
+銅臭 > doushuu\ ;
+笑声 > shousei\ ;
+蘊蓄 > unchiku\ ;
+銀色 > gin''iro\ ;
+麦角 > bakkaku\ ;
+戒心 > kaishin\ ;
+投信 > toushin\ ;
+清流 > seiryuu\ ;
+私腹 > shifuku\ ;
+満幅 > manpuku\ ;
+台閣 > daikaku\ ;
+満席 > manseki\ ;
+承前 > shouzen\ ;
+喬志 > kyoushi\ ;
+深潭 > shintan\ ;
+反駁 > hanpaku\ ;
+竣工 > shunkou\ ;
+満州 > manshuu\ ;
+喪心 > soushin\ ;
+同量 > douryou\ ;
+祝賀 > shukuga\ ;
+悪評 > akuhyou\ ;
+哄笑 > koushou\ ;
+悪訳 > akuyaku\ ;
+急騰 > kyuutou\ ;
+蕪雑 > buzatsu\ ;
+黒茶 > kurocha\ ;
+税目 > zeimoku\ ;
+折中 > setchuu\ ;
+秘結 > hiketsu\ ;
+同郷 > doukyou\ ;
+懲戒 > choukai\ ;
+示達 > jitatsu\ ;
+重陽 > chouyou\ ;
+深淵 > shin''en\ ;
+懐旧 > kaikyuu\ ;
+筐体 > kyoutai\ ;
+虎穴 > koketsu\ ;
+喘息 > zensoku\ ;
+反響 > hankyou\ ;
+鎮定 > chintei\ ;
+深海 > shinkai\ ;
+商権 > shouken\ ;
+筒井 > tsutsui\ ;
+深浅 > shinsen\ ;
+哲理 > tetsuri\ ;
+鈍足 > donsoku\ ;
+空桶 > karaoke\ ;
+薄鈍 > usunoro\ ;
+懲悪 > chouaku\ ;
+空株 > kuukabu\ ;
+蛮族 > banzoku\ ;
+蕉風 > shoufuu\ ;
+笛吹 > fuefuki\ ;
+法身 > hosshin\ ;
+竜宮 > ryuuguu\ ;
+祝言 > shuugen\ ;
+鏡台 > kyoudai\ ;
+恥辱 > chijoku\ ;
+沈静 > chinsei\ ;
+懲役 > choueki\ ;
+善悪 > zen''aku\ ;
+滞京 > taikyou\ ;
+重鎮 > juuchin\ ;
+名跡 > meiseki\ ;
+急難 > kyuunan\ ;
+薄遇 > hakuguu\ ;
+参集 > sanshuu\ ;
+淡泊 > tanpaku\ ;
+手口 > teguchi\ ;
+沈降 > chinkou\ ;
+浸礼 > shinrei\ ;
+周航 > shuukou\ ;
+善心 > zenshin\ ;
+善徳 > zentoku\ ;
+打力 > daryoku\ ;
+淫欲 > in''yoku\ ;
+銀紙 > gingami\ ;
+鈴蘭 > suzuran\ ;
+戦域 > sen''iki\ ;
+吟誦 > ginshou\ ;
+究明 > kyuumei\ ;
+品目 > hinmoku\ ;
+醜類 > shuurui\ ;
+齲歯 > mushiba\ ;
+召還 > shoukan\ ;
+注解 > chuukai\ ;
+可逆 > kagyaku\ ;
+憂欝 > yuuutsu\ ;
+銅箔 > douhaku\ ;
+注視 > chuushi\ ;
+重量 > juuryou\ ;
+戦国 > sengoku\ ;
+所収 > shoshuu\ ;
+愛着 > aichaku\ ;
+鈍角 > donkaku\ ;
+麦茶 > mugicha\ ;
+黒線 > kokusen\ ;
+愚直 > guchoku\ ;
+銀箔 > ginpaku\ ;
+鏡像 > kyouzou\ ;
+藤色 > fujiiro\ ;
+史蹟 > shiseki\ ;
+戸口 > toguchi\ ;
+空揚 > karaage\ ;
+銀笛 > ginteki\ ;
+湿地 > shitchi\ ;
+海相 > kaishou\ ;
+第一 > daiichi\ ;
+清新 > seishin\ ;
+恭謙 > kyouken\ ;
+野道 > nomichi\ ;
+唐歌 > karauta\ ;
+同調 > douchou\ ;
+史跡 > shiseki\ ;
+鷹隼 > youshun\ ;
+競合 > kyougou\ ;
+名訳 > meiyaku\ ;
+収金 > shuukin\ ;
+合調 > gouchou\ ;
+口輪 > kuchiwa\ ;
+淳朴 > junboku\ ;
+黄緑 > ouryoku\ ;
+忠魂 > chuukon\ ;
+各論 > kakuron\ ;
+涸渇 > kokatsu\ ;
+合評 > gappyou\ ;
+叙述 > jojutsu\ ;
+深更 > shinkou\ ;
+洗脳 > sen''nou\ ;
+戸別 > kobetsu\ ;
+神葬 > shinsou\ ;
+立場 > tachiba\ ;
+唐様 > karayou\ ;
+麻縄 > asanawa\ ;
+鶺鴒 > sekirei\ ;
+悪臭 > akushuu\ ;
+積木 > tsumiki\ ;
+古跡 > furuato\ ;
+準則 > junsoku\ ;
+戦友 > sen''yuu\ ;
+浴用 > yokuyou\ ;
+吐血 > toketsu\ ;
+鈎虫 > kouchuu\ ;
+薄謝 > hakusha\ ;
+鎮台 > chindai\ ;
+沈酔 > chinsui\ ;
+商才 > shousai\ ;
+黙祷 > mokutou\ ;
+金赤 > kin''aka\ ;
+所信 > shoshin\ ;
+商戦 > shousen\ ;
+立国 > rikkoku\ ;
+黙礼 > mokurei\ ;
+黙示 > mokushi\ ;
+蚕業 > sangyou\ ;
+戦勝 > senshou\ ;
+叛跡 > hanseki\ ;
+思量 > shiryou\ ;
+手中 > shuchuu\ ;
+消燈 > shoutou\ ;
+神苑 > shin''en\ ;
+手下 > teshita\ ;
+収載 > shuusai\ ;
+急遽 > kyuukyo\ ;
+私的 > shiteki\ ;
+満卓 > mantaku\ ;
+急造 > kyuuzou\ ;
+急逝 > kyuusei\ ;
+渦巻 > uzumaki\ ;
+海猫 > umineko\ ;
+愚物 > gubutsu\ ;
+重責 > juuseki\ ;
+鼻汗 > hanaase\ ;
+反身 > hanshin\ ;
+急送 > kyuusou\ ;
+戒告 > kaikoku\ ;
+善女 > zen''nyo\ ;
+神興 > mikoshi\ ;
+悪習 > akushuu\ ;
+召請 > shousei\ ;
+鉛筆 > enpitsu\ ;
+叛賊 > hanzoku\ ;
+戒名 > kaimyou\ ;
+厳酷 > genkoku\ ;
+竣功 > shunkou\ ;
+唐朝 > touchou\ ;
+消灯 > shoutou\ ;
+心魂 > shinkon\ ;
+厄難 > yakunan\ ;
+房中 > bouchuu\ ;
+反跳 > hanchou\ ;
+海牛 > kaigyuu\ ;
+鉱石 > kouseki\ ;
+薬莢 > yakkyou\ ;
+鼻歌 > hanauta\ ;
+憑拠 > hyoukyo\ ;
+鉄索 > tessaku\ ;
+心髄 > shinzui\ ;
+急転 > kyuuten\ ;
+反越 > hanetsu\ ;
+吹聴 > fuichou\ ;
+湯口 > yuguchi\ ;
+戦傷 > senshou\ ;
+古説 > kosetsu\ ;
+水飴 > mizuame\ ;
+名薬 > meiyaku\ ;
+稿料 > kouryou\ ;
+即題 > sokudai\ ;
+忠霊 > chuurei\ ;
+口説 > kuzetsu\ ;
+口誦 > koushou\ ;
+薬草 > yakusou\ ;
+種板 > taneita\ ;
+虫気 > mushike\ ;
+空席 > kuuseki\ ;
+測定 > sokutei\ ;
+流砂 > ryuusha\ ;
+湾内 > wan''nai\ ;
+愕然 > gakuzen\ ;
+種本 > tanehon\ ;
+神聖 > shinsei\ ;
+収賄 > shuuwai\ ;
+反賊 > hanzoku\ ;
+感激 > kangeki\ ;
+鶴首 > kakushu\ ;
+虫歯 > mushiba\ ;
+各藩 > kakuhan\ ;
+洪積 > kouseki\ ;
+競争 > kyousou\ ;
+口角 > koukaku\ ;
+窮地 > kyuuchi\ ;
+商店 > shouten\ ;
+氷面 > hyoumen\ ;
+重訳 > juuyaku\ ;
+鈍色 > nibiiro\ ;
+千鳥 > chidori\ ;
+叙説 > josetsu\ ;
+志集 > shishuu\ ;
+窪地 > kubochi\ ;
+憔悴 > shousui\ ;
+深慮 > shinryo\ ;
+福祉 > fukushi\ ;
+禎祥 > teishou\ ;
+気骨 > kikotsu\ ;
+種族 > shuzoku\ ;
+里親 > satooya\ ;
+商工 > shoukou\ ;
+減少 > genshou\ ;
+黒痣 > kuroaza\ ;
+醋酸 > sakusan\ ;
+麦笛 > mugibue\ ;
+君臣 > kunshin\ ;
+洞穴 > horaana\ ;
+懸吊 > kenchou\ ;
+銃猟 > juuryou\ ;
+心願 > shingan\ ;
+淫慾 > in''yoku\ ;
+浸潤 > shinjun\ ;
+満作 > mansaku\ ;
+古血 > furuchi\ ;
+憂戚 > yuuseki\ ;
+含羞 > ganshuu\ ;
+空将 > kuushou\ ;
+心頭 > shintou\ ;
+唐揚 > karaage\ ;
+戦中 > senchuu\ ;
+水陸 > suiriku\ ;
+占領 > senryou\ ;
+浸漬 > shinshi\ ;
+心音 > shin''on\ ;
+周知 > shuuchi\ ;
+啓学 > keigaku\ ;
+薫育 > kun''iku\ ;
+愁然 > shuuzen\ ;
+黄白 > kouhaku\ ;
+反証 > hanshou\ ;
+流用 > ryuuyou\ ;
+満了 > manryou\ ;
+流産 > ryuuzan\ ;
+積悪 > sekiaku\ ;
+鉛直 > enchoku\ ;
+悪策 > akusaku\ ;
+麦秋 > mugiaki\ ;
+金融 > kin''yuu\ ;
+必需 > hitsuju\ ;
+憂愁 > yuushuu\ ;
+神経 > shinkei\ ;
+心霊 > shinrei\ ;
+感泣 > kankyuu\ ;
+収覧 > shuuran\ ;
+同舟 > doushuu\ ;
+惇睦 > tonboku\ ;
+海深 > kaishin\ ;
+蛮境 > bankyou\ ;
+反覆 > hanpuku\ ;
+福相 > fukusou\ ;
+突如 > totsujo\ ;
+液晶 > ekishou\ ;
+同腹 > doufuku\ ;
+海流 > kairyuu\ ;
+各般 > kakuhan\ ;
+測地 > sokuchi\ ;
+憂心 > yuushin\ ;
+積弊 > sekihei\ ;
+虚業 > kyogyou\ ;
+油菜 > aburana\ ;
+半額 > hangaku\ ;
+決議 > ketsugi\ ;
+鉄石 > tesseki\ ;
+快適 > kaiteki\ ;
+積年 > sekinen\ ;
+浸水 > shinsui\ ;
+酷遇 > kokuguu\ ;
+秘決 > hiketsu\ ;
+快速 > kaisoku\ ;
+黙然 > mokunen\ ;
+酪酸 > rakusan\ ;
+神童 > shindou\ ;
+釉薬 > yuuyaku\ ;
+唱導 > shoudou\ ;
+告知 > kokuchi\ ;
+急行 > kyuukou\ ;
+商大 > shoudai\ ;
+深層 > shinsou\ ;
+商売 > shoubai\ ;
+恋草 > koigusa\ ;
+慶弔 > keichou\ ;
+酢酸 > sakusan\ ;
+求道 > kyuudou\ ;
+浦波 > uranami\ ;
+薬籠 > yakurou\ ;
+渉外 > shougai\ ;
+黒点 > kokuten\ ;
+黒炭 > kokutan\ ;
+水量 > suiryou\ ;
+空圧 > kuuatsu\ ;
+秋水 > shuusui\ ;
+右腕 > migiude\ ;
+口茶 > kuchija\ ;
+品格 > hinkaku\ ;
+徒食 > toshoku\ ;
+酪農 > rakunou\ ;
+薄肉 > usuniku\ ;
+召致 > shouchi\ ;
+北鮮 > hokusen\ ;
+黴毒 > baidoku\ ;
+黄熟 > koujuku\ ;
+呪物 > jubutsu\ ;
+快足 > kaisoku\ ;
+収蔵 > shuuzou\ ;
+古色 > koshoku\ ;
+浴槽 > yokusou\ ;
+涼感 > ryoukan\ ;
+金色 > konjiki\ ;
+酒量 > shuryou\ ;
+慢心 > manshin\ ;
+同級 > doukyuu\ ;
+原註 > genchuu\ ;
+愁歎 > shuutan\ ;
+口臭 > koushuu\ ;
+嚇々 > kakkaku\ ;
+悪症 > akushou\ ;
+悪病 > akubyou\ ;
+化骨 > kakotsu\ ;
+里芋 > satoimo\ ;
+醜行 > shuukou\ ;
+哨戒 > shoukai\ ;
+反落 > hanraku\ ;
+半鐘 > hanshou\ ;
+薬種 > yakushu\ ;
+口腹 > koufuku\ ;
+心酔 > shinsui\ ;
+心配 > shinpai\ ;
+禁獄 > kingoku\ ;
+氷輪 > hyourin\ ;
+感服 > kanpuku\ ;
+毒魚 > dokugyo\ ;
+禁猟 > kinryou\ ;
+重臣 > juushin\ ;
+善人 > zen''nin\ ;
+吸盤 > kyuuban\ ;
+蛮勇 > ban''yuu\ ;
+深奥 > shin''ou\ ;
+各紙 > kakushi\ ;
+私欲 > shiyoku\ ;
+鹿砦 > rokusai\ ;
+祉福 > shifuku\ ;
+叛臣 > hanshin\ ;
+社章 > shashou\ ;
+窮乏 > kyuubou\ ;
+浸染 > shinsen\ ;
+鋳工 > chuukou\ ;
+深夜 > shin''ya\ ;
+確認 > kakunin\ ;
+減収 > genshuu\ ;
+薬礼 > yakurei\ ;
+錨地 > byouchi\ ;
+薄縁 > usuberi\ ;
+治績 > chiseki\ ;
+消散 > shousan\ ;
+票田 > hyouden\ ;
+確言 > kakugen\ ;
+薄絹 > usuginu\ ;
+快諾 > kaidaku\ ;
+北風 > hokufuu\ ;
+薄給 > hakkyuu\ ;
+重聴 > juuchou\ ;
+商品 > shouhin\ ;
+快調 > kaichou\ ;
+銘柄 > meigara\ ;
+悪玉 > akudama\ ;
+秘曲 > hikyoku\ ;
+薄紙 > usugami\ ;
+薄紅 > usubeni\ ;
+称揚 > shouyou\ ;
+蓚酸 > shuusan\ ;
+渋味 > shibumi\ ;
+南進 > nanshin\ ;
+黙止 > mokushi\ ;
+銘木 > meiboku\ ;
+鉱毒 > koudoku\ ;
+名称 > meishou\ ;
+商号 > shougou\ ;
+怨色 > enshoku\ ;
+流汗 > ryuukan\ ;
+北面 > hokumen\ ;
+悉皆 > shikkai\ ;
+流水 > ryuusui\ ;
+突先 > tossaki\ ;
+活況 > kakkyou\ ;
+釈義 > shakugi\ ;
+復配 > fukuhai\ ;
+忠誠 > chuusei\ ;
+原虫 > genchuu\ ;
+各種 > kakushu\ ;
+史籍 > shiseki\ ;
+吉祥 > kisshou\ ;
+硫酸 > ryuusan\ ;
+懐中 > kaichuu\ ;
+単身 > tanshin\ ;
+弱齢 > jakurei\ ;
+鄭重 > teichou\ ;
+忠言 > chuugen\ ;
+泡盛 > awamori\ ;
+北限 > hokugen\ ;
+升遷 > shousen\ ;
+秋晴 > akibare\ ;
+穴凹 > anaboko\ ;
+金網 > kanaami\ ;
+号笛 > gouteki\ ;
+蛇口 > jaguchi\ ;
+黒檀 > kokutan\ ;
+淑女 > shukujo\ ;
+憂国 > yuukoku\ ;
+洗濯 > sentaku\ ;
+各社 > kakusha\ ;
+双翼 > souyoku\ ;
+半農 > han''nou\ ;
+禁漁 > kinryou\ ;
+口約 > kouyaku\ ;
+清勝 > seishou\ ;
+鈍痛 > dontsuu\ ;
+私服 > shifuku\ ;
+口糧 > kouryou\ ;
+金納 > kin''nou\ ;
+北門 > kitamon\ ;
+吸物 > suimono\ ;
+厚薄 > kouhaku\ ;
+鉱業 > kougyou\ ;
+十進 > jisshin\ ;
+薬用 > yakuyou\ ;
+永訣 > eiketsu\ ;
+積善 > sekizen\ ;
+銀杏 > gin''nan\ ;
+渡仏 > tofutsu\ ;
+硝酸 > shousan\ ;
+磊落 > rairaku\ ;
+虚心 > kyoshin\ ;
+減作 > gensaku\ ;
+半身 > hanshin\ ;
+情況 > joukyou\ ;
+洗滌 > sendeki\ ;
+氷解 > hyoukai\ ;
+名目 > meimoku\ ;
+句節 > kusetsu\ ;
+同省 > doushou\ ;
+津波 > tsunami\ ;
+収繭 > shuuken\ ;
+法的 > houteki\ ;
+泉石 > senseki\ ;
+沖縄 > okinawa\ ;
+民踊 > min''you\ ;
+虚弱 > kyojaku\ ;
+協賛 > kyousan\ ;
+即製 > sokusei\ ;
+金箔 > kinpaku\ ;
+古筆 > kohitsu\ ;
+後釜 > atogama\ ;
+深厚 > shinkou\ ;
+御輿 > mikoshi\ ;
+重篤 > juutoku\ ;
+添削 > tensaku\ ;
+金策 > kinsaku\ ;
+鉱柱 > kouchuu\ ;
+金筋 > kinsuji\ ;
+得道 > tokudou\ ;
+礦石 > kouseki\ ;
+郷関 > kyoukan\ ;
+重箱 > juubako\ ;
+各県 > kakuken\ ;
+厩舎 > kyuusha\ ;
+可祝 > kashiku\ ;
+同病 > doubyou\ ;
+情欲 > jouyoku\ ;
+収納 > shuunou\ ;
+空中 > kuuchuu\ ;
+黒板 > kokuban\ ;
+神灯 > shintou\ ;
+藁灰 > warabai\ ;
+同町 > douchou\ ;
+虫害 > chuugai\ ;
+感応 > kan''nou\ ;
+商会 > shoukai\ ;
+感心 > kanshin\ ;
+単調 > tanchou\ ;
+銃撃 > juugeki\ ;
+黄梢 > koushou\ ;
+感得 > kantoku\ ;
+惇樸 > tonboku\ ;
+石鯛 > ishidai\ ;
+醜聞 > shuubun\ ;
+商人 > shounin\ ;
+後逸 > kouitsu\ ;
+後進 > koushin\ ;
+重積 > juuseki\ ;
+台石 > daiishi\ ;
+卓論 > takuron\ ;
+殿閣 > denkaku\ ;
+薄皮 > usukawa\ ;
+厚臼 > atsuusu\ ;
+博覧 > hakuran\ ;
+単角 > tankaku\ ;
+虎巻 > torakan\ ;
+当限 > tougiri\ ;
+積分 > sekibun\ ;
+悄然 > shouzen\ ;
+民謡 > min''you\ ;
+錯乱 > sakuran\ ;
+黒斑 > kokuhan\ ;
+流星 > ryuusei\ ;
+治療 > chiryou\ ;
+史的 > shiteki\ ;
+混信 > konshin\ ;
+郡長 > gunchou\ ;
+単複 > tanpuku\ ;
+残高 > zandaka\ ;
+思索 > shisaku\ ;
+及第 > kyuudai\ ;
+秀才 > shuusai\ ;
+鉄橋 > tekkyou\ ;
+強風 > kyoufuu\ ;
+薪炭 > shintan\ ;
+混作 > konsaku\ ;
+金石 > kinseki\ ;
+鉄槌 > tettsui\ ;
+収税 > shuuzei\ ;
+惜敗 > sekihai\ ;
+稲叢 > inamura\ ;
+私慾 > shiyoku\ ;
+硬調 > kouchou\ ;
+半角 > hankaku\ ;
+彫金 > choukin\ ;
+毒酒 > dokushu\ ;
+浮彫 > ukibori\ ;
+秋思 > shuushi\ ;
+後足 > atoashi\ ;
+北辺 > hokuhen\ ;
+唯今 > tadaima\ ;
+釣瓶 > tsurube\ ;
+慟哭 > doukoku\ ;
+惑星 > wakusei\ ;
+半襟 > han''eri\ ;
+惇朴 > tonboku\ ;
+死魄 > shihaku\ ;
+強靭 > kyoujin\ ;
+吸水 > kyuusui\ ;
+確聞 > kakubun\ ;
+恋病 > koiyami\ ;
+金的 > kinteki\ ;
+深交 > shinkou\ ;
+周易 > shuueki\ ;
+矯風 > kyoufuu\ ;
+慶兆 > keichou\ ;
+半袖 > hansode\ ;
+吸殻 > suigara\ ;
+郷邑 > kyouyuu\ ;
+虫垂 > chuusui\ ;
+周旋 > shuusen\ ;
+正鵠 > seikoku\ ;
+民衆 > minshuu\ ;
+海峡 > kaikyou\ ;
+鉄柵 > tessaku\ ;
+鉄柱 > tetchuu\ ;
+毎週 > maishuu\ ;
+私心 > shishin\ ;
+神殿 > shinden\ ;
+残額 > zangaku\ ;
+息災 > sokusai\ ;
+弱電 > jakuden\ ;
+蔵米 > kuramai\ ;
+海山 > umiyama\ ;
+残響 > zankyou\ ;
+洋楽 > yougaku\ ;
+穀倉 > kokusou\ ;
+重症 > juushou\ ;
+重病 > juubyou\ ;
+薬液 > yakueki\ ;
+海将 > kaishou\ ;
+薄物 > usumono\ ;
+原級 > genkyuu\ ;
+重畳 > choujou\ ;
+薄片 > hakuhen\ ;
+黙想 > mokusou\ ;
+量産 > ryousan\ ;
+泥海 > doroumi\ ;
+鼻唄 > hanauta\ ;
+否決 > hiketsu\ ;
+御袋 > ofukuro\ ;
+怪石 > kaiseki\ ;
+水芸 > mizugei\ ;
+重用 > chouyou\ ;
+落首 > rakushu\ ;
+即興 > sokkyou\ ;
+秘密 > himitsu\ ;
+咫尺 > shiseki\ ;
+当量 > touryou\ ;
+収監 > shuukan\ ;
+卵膜 > ranmaku\ ;
+反目 > hanmoku\ ;
+水色 > mizuiro\ ;
+砲身 > houshin\ ;
+収益 > shuueki\ ;
+神権 > shinken\ ;
+原籍 > genseki\ ;
+悲曲 > hikyoku\ ;
+蕃神 > banshin\ ;
+針状 > harijou\ ;
+殉難 > jun''nan\ ;
+律語 > ritsugo\ ;
+銃床 > juushou\ ;
+黙思 > mokushi\ ;
+注水 > chuusui\ ;
+召状 > shoujou\ ;
+黙念 > mokunen\ ;
+恋猫 > koineko\ ;
+適齢 > tekirei\ ;
+武骨 > bukotsu\ ;
+和式 > washiki\ ;
+虜囚 > ryoshuu\ ;
+流感 > ryuukan\ ;
+銚子 > choushi\ ;
+禁教 > kinkyou\ ;
+単葉 > tan''you\ ;
+黙従 > mokujuu\ ;
+金玉 > kintama\ ;
+銀幕 > ginmaku\ ;
+薪水 > shinsui\ ;
+矢面 > yaomote\ ;
+税収 > zeishuu\ ;
+稲作 > inasaku\ ;
+洋服 > youfuku\ ;
+祭服 > saifuku\ ;
+性的 > seiteki\ ;
+収用 > shuuyou\ ;
+印肉 > in''niku\ ;
+性癖 > seiheki\ ;
+酒興 > shukyou\ ;
+弁駁 > benpaku\ ;
+蘭学 > rangaku\ ;
+名流 > meiryuu\ ;
+恵沢 > keitaku\ ;
+形跡 > keiseki\ ;
+同流 > douryuu\ ;
+重犯 > chouhan\ ;
+砂鉄 > satetsu\ ;
+性病 > seibyou\ ;
+告文 > kokubun\ ;
+心臓 > shinzou\ ;
+弔電 > chouden\ ;
+落雷 > rakurai\ ;
+双璧 > souheki\ ;
+悪方 > akugata\ ;
+鉱床 > koushou\ ;
+合流 > gouryuu\ ;
+落雁 > rakugan\ ;
+流弾 > ryuudan\ ;
+社歴 > shareki\ ;
+私宅 > shitaku\ ;
+落陽 > rakuyou\ ;
+重爆 > juubaku\ ;
+確答 > kakutou\ ;
+鳩首 > kyuushu\ ;
+私学 > shigaku\ ;
+参画 > sankaku\ ;
+勧農 > kan''nou\ ;
+原票 > genpyou\ ;
+正風 > shoufuu\ ;
+急用 > kyuuyou\ ;
+黒帯 > kuroobi\ ;
+動量 > douryou\ ;
+哨兵 > shouhei\ ;
+銀将 > ginshou\ ;
+叙爵 > joshaku\ ;
+心胆 > shintan\ ;
+情慾 > jouyoku\ ;
+北西 > hokusei\ ;
+浴場 > yokujou\ ;
+形象 > keishou\ ;
+気色 > kishoku\ ;
+心肝 > shinkan\ ;
+忠純 > chuujun\ ;
+磐石 > banjaku\ ;
+票数 > hyousuu\ ;
+口火 > kuchibi\ ;
+叔父 > shukufu\ ;
+反独 > handoku\ ;
+私娼 > shishou\ ;
+泥棒 > dorobou\ ;
+秋声 > shuusei\ ;
+神明 > shinmei\ ;
+汁粉 > shiruko\ ;
+弱酸 > jakusan\ ;
+海国 > kaikoku\ ;
+蔵相 > zoushou\ ;
+千草 > chigusa\ ;
+勘進 > kanshin\ ;
+博聞 > hakubun\ ;
+含有 > gan''yuu\ ;
+反物 > tanmono\ ;
+原石 > genseki\ ;
+卜者 > bokusha\ ;
+鳥類 > chourui\ ;
+称号 > shougou\ ;
+弁難 > ben''nan\ ;
+即納 > sokunou\ ;
+社業 > shagyou\ ;
+気脈 > kimyaku\ ;
+号泣 > goukyuu\ ;
+礼楽 > reigaku\ ;
+神政 > shinsei\ ;
+短針 > tanshin\ ;
+母親 > hahaoya\ ;
+酷税 > kokuzei\ ;
+移出 > ishutsu\ ;
+徳育 > tokuiku\ ;
+磁石 > jishaku\ ;
+残酷 > zankoku\ ;
+法楽 > houraku\ ;
+反照 > hanshou\ ;
+消去 > shoukyo\ ;
+醜男 > buotoko\ ;
+破裂 > haretsu\ ;
+水精 > suishou\ ;
+周年 > shuunen\ ;
+蔑称 > besshou\ ;
+消印 > keshiin\ ;
+同業 > dougyou\ ;
+私塾 > shijuku\ ;
+勧賞 > kanshou\ ;
+悪戯 > itazura\ ;
+動軸 > doujiku\ ;
+浅学 > sengaku\ ;
+碧空 > hekikuu\ ;
+劈頭 > hekitou\ ;
+厚相 > koushou\ ;
+力闘 > rikitou\ ;
+石造 > sekizou\ ;
+油気 > aburake\ ;
+蘭国 > rankoku\ ;
+心緒 > shincho\ ;
+可決 > kaketsu\ ;
+勇進 > yuushin\ ;
+即答 > sokutou\ ;
+弱輩 > jakuhai\ ;
+鉄心 > tesshin\ ;
+毛虫 > kemushi\ ;
+弔銃 > choujuu\ ;
+参照 > sanshou\ ;
+恋河 > koikawa\ ;
+配給 > haikyuu\ ;
+同格 > doukaku\ ;
+注文 > chuumon\ ;
+叱正 > shissei\ ;
+薬方 > yakuhou\ ;
+活字 > katsuji\ ;
+原由 > gen''yuu\ ;
+哀別 > aibetsu\ ;
+徒花 > adabana\ ;
+週齡 > shuurei\ ;
+礼服 > reifuku\ ;
+選集 > senshuu\ ;
+恋水 > koimizu\ ;
+哀切 > aisetsu\ ;
+合格 > goukaku\ ;
+愁嘆 > shuutan\ ;
+礦業 > kougyou\ ;
+海原 > unabara\ ;
+麻屑 > asakuzu\ ;
+古池 > furuike\ ;
+鶏肉 > keiniku\ ;
+法服 > houfuku\ ;
+勘責 > kanseki\ ;
+愚劣 > guretsu\ ;
+消光 > shoukou\ ;
+単級 > tankyuu\ ;
+名木 > meiboku\ ;
+短軸 > tanjiku\ ;
+勇躍 > yuuyaku\ ;
+醜状 > shuujou\ ;
+各校 > kakukou\ ;
+叢氷 > souhyou\ ;
+恋死 > koijini\ ;
+勧誘 > kan''yuu\ ;
+悪徳 > akutoku\ ;
+気絶 > kizetsu\ ;
+黒壇 > kokutan\ ;
+心算 > shinzan\ ;
+沈澱 > chinden\ ;
+強豪 > kyougou\ ;
+悪役 > akuyaku\ ;
+劈開 > hekikai\ ;
+悪形 > akugata\ ;
+心筋 > shinkin\ ;
+古歌 > furuuta\ ;
+落選 > rakusen\ ;
+沈潜 > chinsen\ ;
+神慮 > shinryo\ ;
+副題 > fukudai\ ;
+式部 > shikibu\ ;
+弓道 > kyuudou\ ;
+正銘 > shoumei\ ;
+卜筮 > bokuzei\ ;
+呂律 > roretsu\ ;
+葉身 > youshin\ ;
+徐脈 > jomyaku\ ;
+感傷 > kanshou\ ;
+碧眼 > hekigan\ ;
+後腹 > atobara\ ;
+洋弓 > youkyuu\ ;
+瞬間 > shunkan\ ;
+短足 > tansoku\ ;
+示教 > shikyou\ ;
+卿相 > keishou\ ;
+歴遊 > rekiyuu\ ;
+沈滞 > chintai\ ;
+同族 > douzoku\ ;
+剳青 > irezumi\ ;
+彬蔚 > hinutsu\ ;
+禅寺 > zendera\ ;
+後脚 > atoashi\ ;
+思潮 > shichou\ ;
+浮力 > furyoku\ ;
+磨滅 > mametsu\ ;
+死軸 > shijiku\ ;
+正金 > shoukin\ ;
+流域 > ryuuiki\ ;
+禅宗 > zenshuu\ ;
+鶴科 > tsuruka\ ;
+藩学 > hangaku\ ;
+恭敬 > kyoukei\ ;
+汎用 > han''you\ ;
+急減 > kyuugen\ ;
+神性 > shinsei\ ;
+悔悛 > kaishun\ ;
+禅学 > zengaku\ ;
+叔母 > shukubo\ ;
+式辞 > shikiji\ ;
+秀吟 > shuugin\ ;
+過食 > kashoku\ ;
+原爆 > genbaku\ ;
+鳥銃 > choujuu\ ;
+前髪 > maegami\ ;
+咀嚼 > soshaku\ ;
+租借 > soshaku\ ;
+殺虫 > satchuu\ ;
+勤行 > gongyou\ ;
+悖徳 > haitoku\ ;
+毒草 > dokusou\ ;
+卵白 > ranpaku\ ;
+秋分 > shuubun\ ;
+参洛 > sanraku\ ;
+咬傷 > koushou\ ;
+律義 > richigi\ ;
+秋冷 > shuurei\ ;
+強要 > kyouyou\ ;
+金棒 > kanabou\ ;
+薄明 > hakumei\ ;
+座骨 > zakotsu\ ;
+剣難 > ken''nan\ ;
+徴税 > chouzei\ ;
+復答 > fukutou\ ;
+勅諭 > chokuyu\ ;
+労賃 > rouchin\ ;
+弱視 > jakushi\ ;
+合掌 > gasshou\ ;
+勅語 > chokugo\ ;
+短調 > tanchou\ ;
+司教 > shikyou\ ;
+沈殿 > chinden\ ;
+鵬翼 > houyoku\ ;
+勅許 > chokkyo\ ;
+短評 > tanpyou\ ;
+秘仏 > hibutsu\ ;
+急死 > kyuushi\ ;
+強行 > kyoukou\ ;
+性欲 > seiyoku\ ;
+海亀 > umigame\ ;
+毒腺 > dokusen\ ;
+史料 > shiryou\ ;
+氷田 > hyouden\ ;
+心眼 > shingan\ ;
+邁進 > maishin\ ;
+古本 > furubon\ ;
+確然 > kakuzen\ ;
+洋学 > yougaku\ ;
+役者 > yakusha\ ;
+惰力 > daryoku\ ;
+反様 > kaisama\ ;
+民福 > minpuku\ ;
+前額 > zengaku\ ;
+海中 > kaichuu\ ;
+後続 > kouzoku\ ;
+古曲 > kokyoku\ ;
+遅霜 > osojimo\ ;
+周回 > shuukai\ ;
+洛外 > rakugai\ ;
+半神 > hanshin\ ;
+当落 > touraku\ ;
+酒癖 > shuheki\ ;
+邪説 > jasetsu\ ;
+欠除 > ketsujo\ ;
+氏神 > ujigami\ ;
+金曜 > kin''you\ ;
+段落 > danraku\ ;
+座食 > zashoku\ ;
+呻吟 > shingin\ ;
+鉄壁 > teppeki\ ;
+秋作 > akisaku\ ;
+千秋 > senshuu\ ;
+区立 > kuritsu\ ;
+忠犬 > chuuken\ ;
+各所 > kakusho\ ;
+劇道 > gekidou\ ;
+惨劇 > sangeki\ ;
+恋文 > koibumi\ ;
+銃傷 > juushou\ ;
+法悦 > houetsu\ ;
+知覚 > chikaku\ ;
+邦訳 > houyaku\ ;
+水球 > suikyuu\ ;
+私信 > shishin\ ;
+力走 > rikisou\ ;
+浦人 > urabito\ ;
+反核 > hankaku\ ;
+幽鳥 > yuuchou\ ;
+薬師 > yakushi\ ;
+神宝 > shinpou\ ;
+神官 > shinkan\ ;
+祝宴 > shukuen\ ;
+銀側 > gingawa\ ;
+取替 > torikae\ ;
+弔詞 > choushi\ ;
+占用 > sen''you\ ;
+前陳 > zenchin\ ;
+石蝋 > sekirou\ ;
+死角 > shikaku\ ;
+蓬生 > yomogiu\ ;
+流動 > ryuudou\ ;
+厄災 > yakusai\ ;
+叫換 > kyoukan\ ;
+怠業 > taigyou\ ;
+歴訪 > rekihou\ ;
+同心 > doushin\ ;
+原注 > genchuu\ ;
+逆鱗 > gekirin\ ;
+知行 > chigyou\ ;
+性格 > seikaku\ ;
+同役 > douyaku\ ;
+酸漿 > hoozuki\ ;
+吉徴 > kitchou\ ;
+歴覧 > rekiran\ ;
+水牢 > mizurou\ ;
+水牛 > suigyuu\ ;
+合従 > gasshou\ ;
+半白 > hanpaku\ ;
+鳥貝 > torigai\ ;
+池沼 > chishou\ ;
+配球 > haikyuu\ ;
+幽鬱 > yuuutsu\ ;
+水爆 > suibaku\ ;
+北米 > hokubei\ ;
+卓用 > takuyou\ ;
+蕃椒 > banshou\ ;
+剽軽 > hyoukin\ ;
+注射 > chuusha\ ;
+徴用 > chouyou\ ;
+酔狂 > suikyou\ ;
+咎人 > toganin\ ;
+葉蜂 > habachi\ ;
+心猿 > shin''en\ ;
+徳用 > tokuyou\ ;
+恰幅 > kappuku\ ;
+迷鳥 > meichou\ ;
+通風 > tsuufuu\ ;
+十目 > juumoku\ ;
+薄情 > hakujou\ ;
+正調 > seichou\ ;
+同席 > douseki\ ;
+参朝 > sanchou\ ;
+真黒 > makkuro\ ;
+劣角 > rekkaku\ ;
+薬害 > yakugai\ ;
+恢復 > kaifuku\ ;
+週間 > shuukan\ ;
+禄命 > rokumei\ ;
+古拙 > kosetsu\ ;
+刻限 > kokugen\ ;
+収斂 > shuuren\ ;
+神変 > shinpen\ ;
+氷点 > hyouten\ ;
+弁証 > benshou\ ;
+氷炭 > hyoutan\ ;
+歎賞 > tanshou\ ;
+吸塵 > kyuujin\ ;
+君寵 > kunchou\ ;
+干魚 > hoshiuo\ ;
+収支 > shuushi\ ;
+収攬 > shuuran\ ;
+各店 > kakuten\ ;
+卓球 > takkyuu\ ;
+恐慌 > kyoukou\ ;
+口承 > koushou\ ;
+厳格 > genkaku\ ;
+薄志 > hakushi\ ;
+禀告 > rinkoku\ ;
+周到 > shuutou\ ;
+汗水 > asemizu\ ;
+北端 > hokutan\ ;
+単独 > tandoku\ ;
+各市 > kakushi\ ;
+反撃 > hangeki\ ;
+流体 > ryuutai\ ;
+黒人 > kokujin\ ;
+彼程 > arehodo\ ;
+社宅 > shataku\ ;
+流会 > ryuukai\ ;
+半球 > hankyuu\ ;
+遊郭 > yuukaku\ ;
+道辺 > michibe\ ;
+店長 > tenchou\ ;
+恒心 > koushin\ ;
+武術 > bujutsu\ ;
+残菊 > zangiku\ ;
+名将 > meishou\ ;
+没我 > botsuga\ ;
+同小 > doushou\ ;
+流亡 > ryuubou\ ;
+初音 > hatsune\ ;
+都立 > toritsu\ ;
+后宮 > koukyuu\ ;
+別離 > betsuri\ ;
+従的 > juuteki\ ;
+命中 > meichuu\ ;
+破竹 > hachiku\ ;
+蒼白 > souhaku\ ;
+水滴 > suiteki\ ;
+量感 > ryoukan\ ;
+法学 > hougaku\ ;
+劇論 > gekiron\ ;
+卒爾 > sotsuji\ ;
+劇談 > gekidan\ ;
+思料 > shiryou\ ;
+硬球 > koukyuu\ ;
+力行 > ryokkou\ ;
+同宗 > doushuu\ ;
+蕃族 > banzoku\ ;
+禁則 > kinsoku\ ;
+選評 > senpyou\ ;
+礫岩 > rekigan\ ;
+各層 > kakusou\ ;
+別院 > betsuin\ ;
+同学 > dougaku\ ;
+磁極 > jikyoku\ ;
+通関 > tsuukan\ ;
+勝者 > shousha\ ;
+劇詩 > gekishi\ ;
+干飯 > hoshiii\ ;
+鉄則 > tessoku\ ;
+遅速 > chisoku\ ;
+碧水 > hekisui\ ;
+石臼 > ishiusu\ ;
+年額 > nengaku\ ;
+強肩 > kyouken\ ;
+台帳 > daichou\ ;
+水深 > suishin\ ;
+氷海 > hyoukai\ ;
+泰国 > taikoku\ ;
+別間 > betsuma\ ;
+汁気 > shiruke\ ;
+洛内 > rakunai\ ;
+毎秒 > maibyou\ ;
+微熱 > binetsu\ ;
+水浴 > suiyoku\ ;
+惑乱 > wakuran\ ;
+落葉 > rakuyou\ ;
+加虐 > kagyaku\ ;
+強者 > kyousha\ ;
+古式 > koshiki\ ;
+蒸留 > jouryuu\ ;
+重心 > juushin\ ;
+半熟 > hanjuku\ ;
+水流 > suiryuu\ ;
+真髄 > shinzui\ ;
+前進 > zenshin\ ;
+前週 > zenshuu\ ;
+原木 > genboku\ ;
+重役 > juuyaku\ ;
+叛心 > hanshin\ ;
+勤続 > kinzoku\ ;
+逼迫 > hippaku\ ;
+半焼 > hanshou\ ;
+神品 > shinpin\ ;
+厚板 > atsuita\ ;
+没後 > botsugo\ ;
+泥坊 > dorobou\ ;
+弱者 > jakusha\ ;
+卵殻 > rankaku\ ;
+金平 > kinpira\ ;
+危気 > abunage\ ;
+急所 > kyuusho\ ;
+殻竿 > karasao\ ;
+醇朴 > junboku\ ;
+取得 > shutoku\ ;
+即死 > sokushi\ ;
+鴇色 > tokiiro\ ;
+台尻 > daijiri\ ;
+君国 > kunkoku\ ;
+性慾 > seiyoku\ ;
+追随 > tsuizui\ ;
+勲章 > kunshou\ ;
+進退 > shintai\ ;
+連量 > renryou\ ;
+前身 > zenshin\ ;
+原料 > genryou\ ;
+死臭 > shishuu\ ;
+邑落 > yuuraku\ ;
+副詞 > fukushi\ ;
+合壁 > gappeki\ ;
+前蹤 > zenshou\ ;
+史学 > shigaku\ ;
+反応 > han''nou\ ;
+出額 > debitai\ ;
+刹那 > setsuna\ ;
+年長 > nenchou\ ;
+反復 > hanpuku\ ;
+出頭 > shuttou\ ;
+切除 > setsujo\ ;
+葭簀 > yoshizu\ ;
+凶類 > kyourui\ ;
+碇泊 > teihaku\ ;
+急患 > kyuukan\ ;
+前足 > maeashi\ ;
+吟唱 > ginshou\ ;
+洋傘 > yougasa\ ;
+研究 > kenkyuu\ ;
+進軍 > shingun\ ;
+性急 > seikyuu\ ;
+禁中 > kinchuu\ ;
+神剣 > shinken\ ;
+酒毒 > shudoku\ ;
+神前 > shinzen\ ;
+金属 > kinzoku\ ;
+急性 > kyuusei\ ;
+葦簾 > yoshizu\ ;
+薬品 > yakuhin\ ;
+沈思 > chinshi\ ;
+南洋 > nan''you\ ;
+同国 > doukoku\ ;
+死肉 > shiniku\ ;
+性徴 > seichou\ ;
+平鑿 > heisaku\ ;
+葦簀 > yoshizu\ ;
+勝算 > shousan\ ;
+金将 > kinshou\ ;
+思惑 > omowaku\ ;
+鳶色 > tobiiro\ ;
+石綿 > sekimen\ ;
+落胆 > rakutan\ ;
+鳥葬 > chousou\ ;
+危極 > kikyoku\ ;
+沢山 > takusan\ ;
+得点 > tokuten\ ;
+叉庫 > azekura\ ;
+酷暑 > kokusho\ ;
+双幅 > soufuku\ ;
+当確 > toukaku\ ;
+刺身 > sashimi\ ;
+広量 > kouryou\ ;
+各地 > kakuchi\ ;
+薄墨 > usuzumi\ ;
+泊地 > hakuchi\ ;
+厨房 > chuubou\ ;
+叛将 > hanshou\ ;
+各国 > kakkoku\ ;
+葦笛 > ashibue\ ;
+重宝 > chouhou\ ;
+量子 > ryoushi\ ;
+幕電 > makuden\ ;
+剥製 > hakusei\ ;
+醜態 > shuutai\ ;
+功臣 > koushin\ ;
+短絡 > tanraku\ ;
+薬包 > yakuhou\ ;
+民泊 > minpaku\ ;
+社告 > shakoku\ ;
+弁膜 > benmaku\ ;
+進貢 > shinkou\ ;
+常駐 > jouchuu\ ;
+醜悪 > shuuaku\ ;
+決心 > kesshin\ ;
+砕石 > saiseki\ ;
+正腹 > seifuku\ ;
+鳩舎 > kyuusha\ ;
+薬剤 > yakuzai\ ;
+比率 > hiritsu\ ;
+合唱 > gasshou\ ;
+勾留 > kouryuu\ ;
+別辞 > betsuji\ ;
+弊習 > heishuu\ ;
+役牛 > ekigyuu\ ;
+逍遥 > shouyou\ ;
+沼地 > numachi\ ;
+逍遙 > shouyou\ ;
+莫連 > bakuren\ ;
+法名 > houmyou\ ;
+廷臣 > teishin\ ;
+石筍 > sekijun\ ;
+神体 > shintai\ ;
+収容 > shuuyou\ ;
+悠久 > yuukyuu\ ;
+治国 > chikoku\ ;
+初速 > shosoku\ ;
+名号 > myougou\ ;
+心棒 > shinbou\ ;
+神仙 > shinsen\ ;
+進講 > shinkou\ ;
+法博 > houhaku\ ;
+神人 > shinjin\ ;
+逆運 > gyakuun\ ;
+眉雪 > bisetsu\ ;
+選良 > senryou\ ;
+凸鏡 > tokkyou\ ;
+蒸溜 > jouryuu\ ;
+合口 > aikuchi\ ;
+社則 > shasoku\ ;
+欝血 > ukketsu\ ;
+水晶 > suishou\ ;
+荒駒 > aragoma\ ;
+名匠 > meishou\ ;
+永日 > eijitsu\ ;
+殺生 > sesshou\ ;
+即断 > sokudan\ ;
+分針 > funshin\ ;
+千歳 > chitose\ ;
+分量 > bunryou\ ;
+名勝 > meishou\ ;
+別路 > betsuro\ ;
+法力 > houriki\ ;
+比熱 > hinetsu\ ;
+勤皇 > kin''nou\ ;
+強硬 > kyoukou\ ;
+法則 > housoku\ ;
+進言 > shingen\ ;
+廃虚 > haikyo\ ;
+忿怒 > fun''nu\ ;
+送迎 > sougei\ ;
+迅雷 > jinrai\ ;
+志操 > shisou\ ;
+通貨 > tsuuka\ ;
+名刺 > meishi\ ;
+同前 > douzen\ ;
+礼典 > reiten\ ;
+前衛 > zen''ei\ ;
+矢筈 > yahazu\ ;
+金坑 > kinkou\ ;
+原形 > genkei\ ;
+復権 > fukken\ ;
+前行 > zenkou\ ;
+名分 > meibun\ ;
+形状 > keijou\ ;
+列車 > ressha\ ;
+名刀 > meitou\ ;
+廃藩 > haihan\ ;
+配本 > haihon\ ;
+厚志 > koushi\ ;
+薄味 > hakumi\ ;
+社僧 > shasou\ ;
+合剤 > gouzai\ ;
+同処 > dousho\ ;
+法典 > houten\ ;
+社債 > shasai\ ;
+年輪 > nenrin\ ;
+年輩 > nenpai\ ;
+磁心 > jishin\ ;
+分遣 > bunken\ ;
+友好 > yuukou\ ;
+勤番 > kinban\ ;
+石碑 > sekihi\ ;
+合切 > gassai\ ;
+退転 > taiten\ ;
+正編 > seihen\ ;
+反変 > hanpen\ ;
+叱咤 > shitta\ ;
+同党 > doutou\ ;
+幽趣 > yuushu\ ;
+加給 > kakyuu\ ;
+名優 > meiyuu\ ;
+厳封 > genpuu\ ;
+帯電 > taiden\ ;
+律法 > rippou\ ;
+凌雲 > ryouun\ ;
+快感 > kaikan\ ;
+選考 > senkou\ ;
+矢種 > yadane\ ;
+汎愛 > han''ai\ ;
+強盗 > goutou\ ;
+厳寒 > genkan\ ;
+量器 > ryouki\ ;
+名僧 > meisou\ ;
+正統 > seitou\ ;
+遊蕩 > yuutou\ ;
+決定 > kettei\ ;
+蒸民 > joumin\ ;
+弾痕 > dankon\ ;
+重噸 > juuton\ ;
+迂闊 > ukatsu\ ;
+造詣 > zoukei\ ;
+淡々 > tantan\ ;
+厳守 > genshu\ ;
+台名 > taimei\ ;
+厳存 > genson\ ;
+正系 > seikei\ ;
+邪神 > jashin\ ;
+辺陬 > hensuu\ ;
+造言 > zougen\ ;
+逃走 > tousou\ ;
+通語 > tsuugo\ ;
+分載 > bunsai\ ;
+酸性 > sansei\ ;
+相関 > soukan\ ;
+後段 > koudan\ ;
+社会 > shakai\ ;
+通話 > tsuuwa\ ;
+復校 > fukkou\ ;
+同値 > douchi\ ;
+切身 > kirimi\ ;
+君主 > kunshu\ ;
+草鞋 > waraji\ ;
+法例 > hourei\ ;
+河原 > kawara\ ;
+制裁 > seisai\ ;
+南方 > nanpou\ ;
+北海 > hokkai\ ;
+忠愛 > chuuai\ ;
+金員 > kin''in\ ;
+単文 > tanbun\ ;
+確度 > kakudo\ ;
+民望 > minbou\ ;
+薄利 > hakuri\ ;
+社交 > shakou\ ;
+微服 > bifuku\ ;
+求愛 > kyuuai\ ;
+単数 > tansuu\ ;
+必携 > hikkei\ ;
+金品 > kinpin\ ;
+劣等 > rettou\ ;
+盤面 > banmen\ ;
+匠気 > shouki\ ;
+動産 > dousan\ ;
+延納 > en''nou\ ;
+砕片 > saihen\ ;
+真逆 > masaka\ ;
+同体 > doutai\ ;
+河北 > kahoku\ ;
+社主 > shashu\ ;
+南支 > nanshi\ ;
+口吻 > koufun\ ;
+弾琴 > dankin\ ;
+師門 > shimon\ ;
+気早 > kibaya\ ;
+法令 > hourei\ ;
+急場 > kyuuba\ ;
+同伴 > douhan\ ;
+連衡 > renkou\ ;
+口吟 > kougin\ ;
+連行 > renkou\ ;
+法人 > houjin\ ;
+冷静 > reisei\ ;
+返金 > henkin\ ;
+参堂 > sandou\ ;
+快弁 > kaiben\ ;
+忠恕 > chuujo\ ;
+召募 > shoubo\ ;
+合併 > gouhei\ ;
+吐乳 > tonyuu\ ;
+迷走 > meisou\ ;
+正答 > seitou\ ;
+名人 > meijin\ ;
+合体 > gattai\ ;
+薄光 > hakkou\ ;
+蔓延 > man''en\ ;
+当然 > touzen\ ;
+反噬 > hanzei\ ;
+原寸 > gensun\ ;
+同仁 > doujin\ ;
+同人 > dounin\ ;
+典麗 > tenrei\ ;
+向上 > koujou\ ;
+巣鶏 > sudori\ ;
+十本 > juppon\ ;
+廃艦 > haikan\ ;
+江山 > kouzan\ ;
+座薬 > zayaku\ ;
+萎縮 > ishuku\ ;
+重合 > juugou\ ;
+広言 > kougen\ ;
+廃船 > haisen\ ;
+廐肥 > kyuuhi\ ;
+同乗 > doujou\ ;
+応急 > oukyuu\ ;
+金印 > kin''in\ ;
+遊芸 > yuugei\ ;
+残痕 > zankon\ ;
+前著 > zencho\ ;
+菖蒲 > shoubu\ ;
+野原 > nohara\ ;
+決壊 > kekkai\ ;
+原子 > genshi\ ;
+毛氈 > mousen\ ;
+占拠 > senkyo\ ;
+同上 > doujou\ ;
+別製 > bessei\ ;
+弊社 > heisha\ ;
+比況 > hikyou\ ;
+透視 > toushi\ ;
+半数 > hansuu\ ;
+醜女 > shuujo\ ;
+効目 > kikime\ ;
+民政 > minsei\ ;
+鳴禽 > meikin\ ;
+民放 > minpou\ ;
+近郷 > kingou\ ;
+酒手 > sakate\ ;
+返還 > henkan\ ;
+弓矢 > yumiya\ ;
+前菜 > zensai\ ;
+反問 > hanmon\ ;
+処遇 > shoguu\ ;
+心技 > shingi\ ;
+近郊 > kinkou\ ;
+薄倖 > hakkou\ ;
+初見 > shoken\ ;
+欠航 > kekkou\ ;
+盗電 > touden\ ;
+巨鯨 > kyogei\ ;
+沃土 > yokudo\ ;
+巻首 > kanshu\ ;
+出足 > deashi\ ;
+残生 > zansei\ ;
+北欧 > hokuou\ ;
+盗難 > tounan\ ;
+加禄 > karoku\ ;
+号俸 > gouhou\ ;
+死相 > shisou\ ;
+危急 > kikyuu\ ;
+剛臆 > gouoku\ ;
+弾片 > danpen\ ;
+県道 > kendou\ ;
+即応 > sokuou\ ;
+武神 > bushin\ ;
+返送 > hensou\ ;
+復改 > fukkai\ ;
+金剛 > kongou\ ;
+幣貢 > heikou\ ;
+配所 > haisho\ ;
+卵形 > rankei\ ;
+金券 > kinken\ ;
+酔態 > suitai\ ;
+幻視 > genshi\ ;
+巨魁 > kyokai\ ;
+蕃地 > banchi\ ;
+十数 > juusuu\ ;
+汽圧 > kiatsu\ ;
+凡退 > bontai\ ;
+達者 > tassha\ ;
+従来 > juurai\ ;
+選管 > senkan\ ;
+分譲 > bunjou\ ;
+司会 > shikai\ ;
+御料 > goryou\ ;
+円高 > endaka\ ;
+近辺 > kinpen\ ;
+原始 > genshi\ ;
+口内 > kounai\ ;
+出費 > shuppi\ ;
+金冠 > kinkan\ ;
+印形 > ingyou\ ;
+司令 > shirei\ ;
+重刑 > juukei\ ;
+追訴 > tsuiso\ ;
+号令 > gourei\ ;
+加硫 > karyuu\ ;
+剛胆 > goutan\ ;
+金具 > kanagu\ ;
+収受 > shuuju\ ;
+配慮 > hairyo\ ;
+迷論 > meiron\ ;
+毎毎 > maimai\ ;
+追記 > tsuiki\ ;
+睡蓮 > suiren\ ;
+心意 > shin''i\ ;
+割線 > kassen\ ;
+切諌 > sekkan\ ;
+忘年 > bounen\ ;
+即座 > sokuza\ ;
+巻頭 > kantou\ ;
+効用 > kouyou\ ;
+劫盗 > goutou\ ;
+蒲柳 > horyuu\ ;
+恒例 > kourei\ ;
+史伝 > shiden\ ;
+忍従 > ninjuu\ ;
+酷寒 > kokkan\ ;
+市電 > shiden\ ;
+勇猛 > yuumou\ ;
+毬果 > kyuuka\ ;
+荷足 > niashi\ ;
+常道 > joudou\ ;
+分詞 > bunshi\ ;
+治乱 > chiran\ ;
+卵巣 > ransou\ ;
+死産 > shizan\ ;
+死生 > shisei\ ;
+博愛 > hakuai\ ;
+常連 > jouren\ ;
+冒頭 > boutou\ ;
+性向 > seikou\ ;
+帰郷 > kikyou\ ;
+水平 > suihei\ ;
+治世 > chisei\ ;
+引用 > in''you\ ;
+鮮麗 > senrei\ ;
+目釘 > mekugi\ ;
+反動 > handou\ ;
+前腕 > maeude\ ;
+史乗 > shijou\ ;
+分解 > bunkai\ ;
+参向 > sankou\ ;
+右上 > migiue\ ;
+遣米 > kenbei\ ;
+古俗 > kozoku\ ;
+後景 > koukei\ ;
+史上 > shijou\ ;
+厖大 > boudai\ ;
+退行 > taikou\ ;
+可也 > kanari\ ;
+平衡 > heikou\ ;
+座興 > zakyou\ ;
+正眼 > seigan\ ;
+平行 > heikou\ ;
+待望 > taibou\ ;
+磁壁 > jiheki\ ;
+差額 > sagaku\ ;
+残片 > zanpen\ ;
+句作 > kusaku\ ;
+後昆 > koukon\ ;
+正目 > masame\ ;
+矢玉 > yadama\ ;
+十指 > jusshi\ ;
+単性 > tansei\ ;
+原型 > genkei\ ;
+毛根 > moukon\ ;
+市門 > shimon\ ;
+蒸散 > jousan\ ;
+後方 > kouhou\ ;
+配当 > haitou\ ;
+加療 > karyou\ ;
+律旋 > rissen\ ;
+口伝 > kouden\ ;
+酒店 > shuten\ ;
+師道 > shidou\ ;
+底荷 > sokoni\ ;
+刊行 > kankou\ ;
+出訴 > shusso\ ;
+博徒 > bakuto\ ;
+廃線 > haisen\ ;
+砂漠 > sabaku\ ;
+急募 > kyuubo\ ;
+弱火 > yowabi\ ;
+前者 > zensha\ ;
+急務 > kyuumu\ ;
+巨頭 > kyotou\ ;
+葉物 > hamono\ ;
+分袂 > bunbei\ ;
+円頂 > enchou\ ;
+気息 > kisoku\ ;
+後攻 > koukou\ ;
+鳩目 > hatome\ ;
+重体 > juutai\ ;
+厳命 > genmei\ ;
+冒険 > bouken\ ;
+原因 > gen''in\ ;
+内項 > naikou\ ;
+前翅 > zenshi\ ;
+度胸 > dokyou\ ;
+看貫 > kankan\ ;
+卑怯 > hikyou\ ;
+博引 > hakuin\ ;
+機長 > kichou\ ;
+割符 > warifu\ ;
+気性 > kishou\ ;
+十戒 > jikkai\ ;
+友党 > yuutou\ ;
+受信 > jushin\ ;
+目途 > mokuto\ ;
+農道 > noudou\ ;
+石灰 > sekkai\ ;
+民情 > minjou\ ;
+厚地 > atsuji\ ;
+重任 > juunin\ ;
+迎賓 > geihin\ ;
+厳君 > genkun\ ;
+前置 > zenchi\ ;
+重代 > juudai\ ;
+列藩 > reppan\ ;
+鳥目 > torime\ ;
+単弁 > tanben\ ;
+段段 > dandan\ ;
+水屋 > mizuya\ ;
+往昔 > ouseki\ ;
+金主 > kinshu\ ;
+破格 > hakaku\ ;
+千慮 > senryo\ ;
+去勢 > kyosei\ ;
+口上 > koujou\ ;
+当歳 > tousai\ ;
+皮革 > hikaku\ ;
+内面 > naimen\ ;
+巷間 > koukan\ ;
+冷酒 > reishu\ ;
+卵子 > ranshi\ ;
+怪光 > kaikou\ ;
+兼題 > kendai\ ;
+檀那 > dan''na\ ;
+野中 > nonaka\ ;
+造船 > zousen\ ;
+参内 > sandai\ ;
+水害 > suigai\ ;
+徹底 > tettei\ ;
+気弱 > kiyowa\ ;
+叛乱 > hanran\ ;
+御慶 > gyokei\ ;
+県警 > kenkei\ ;
+帝道 > teidou\ ;
+別荘 > bessou\ ;
+碁席 > goseki\ ;
+初葉 > shoyou\ ;
+彼方 > kanata\ ;
+盟邦 > meihou\ ;
+快報 > kaihou\ ;
+厭厭 > iyaiya\ ;
+水子 > mizugo\ ;
+再開 > saikai\ ;
+遠称 > enshou\ ;
+北方 > hoppou\ ;
+内陣 > naijin\ ;
+半径 > hankei\ ;
+葛湯 > kuzuyu\ ;
+鮮魚 > sengyo\ ;
+冷遇 > reiguu\ ;
+半影 > han''ei\ ;
+反例 > hanrei\ ;
+巣雛 > suhina\ ;
+微弱 > bijaku\ ;
+郷村 > gouson\ ;
+硬性 > kousei\ ;
+酒屋 > sakaya\ ;
+公館 > koukan\ ;
+前編 > zenpen\ ;
+退蔵 > taizou\ ;
+凝議 > gyougi\ ;
+前線 > zensen\ ;
+歯状 > shijou\ ;
+川面 > kawamo\ ;
+原品 > genpin\ ;
+引照 > inshou\ ;
+占居 > senkyo\ ;
+全館 > zenkan\ ;
+厳刑 > genkei\ ;
+近詠 > kin''ei\ ;
+蒙昧 > moumai\ ;
+残滓 > zanshi\ ;
+沙丘 > sakyuu\ ;
+死点 > shiten\ ;
+相貌 > soubou\ ;
+送葬 > sousou\ ;
+白魔 > hakuma\ ;
+卜居 > bokkyo\ ;
+碍子 > gaishi\ ;
+毎晩 > maiban\ ;
+厳冬 > gentou\ ;
+死灰 > shikai\ ;
+友人 > yuujin\ ;
+益金 > ekikin\ ;
+労災 > rousai\ ;
+反乱 > hanran\ ;
+南岸 > nangan\ ;
+着荷 > chakka\ ;
+友交 > yuukou\ ;
+葦毛 > ashige\ ;
+次第 > shidai\ ;
+厚味 > atsumi\ ;
+兵難 > heinan\ ;
+即夜 > sokuya\ ;
+形木 > katagi\ ;
+師資 > shishi\ ;
+南山 > nanzan\ ;
+志士 > shishi\ ;
+看視 > kanshi\ ;
+近視 > kinshi\ ;
+巌頭 > gantou\ ;
+茶道 > chadou\ ;
+次章 > jishou\ ;
+具陳 > guchin\ ;
+怪人 > kaijin\ ;
+登高 > toukou\ ;
+盤踞 > bankyo\ ;
+兵隊 > heitai\ ;
+連署 > rensho\ ;
+正犯 > seihan\ ;
+単射 > tansha\ ;
+参会 > sankai\ ;
+劇画 > gekiga\ ;
+全音 > zen''on\ ;
+卵塔 > rantou\ ;
+党首 > toushu\ ;
+過称 > kashou\ ;
+性交 > seikou\ ;
+十干 > jikkan\ ;
+英領 > eiryou\ ;
+卑屬 > hizoku\ ;
+巨鐘 > oogane\ ;
+横領 > ouryou\ ;
+卑属 > hizoku\ ;
+石油 > sekiyu\ ;
+廻状 > kaijou\ ;
+前篇 > zenpen\ ;
+達磨 > daruma\ ;
+原動 > gendou\ ;
+南宋 > nansou\ ;
+公電 > kouden\ ;
+弱気 > yowaki\ ;
+全面 > zenmen\ ;
+御幸 > miyuki\ ;
+徘徊 > haikai\ ;
+郵政 > yuusei\ ;
+半島 > hantou\ ;
+卑小 > hishou\ ;
+白馬 > hakuba\ ;
+相談 > soudan\ ;
+欝積 > usseki\ ;
+征戦 > seisen\ ;
+割目 > wareme\ ;
+菌糸 > kinshi\ ;
+全霊 > zenrei\ ;
+後患 > koukan\ ;
+市道 > shidou\ ;
+連繋 > renkei\ ;
+当板 > ateita\ ;
+参与 > san''yo\ ;
+後悔 > koukai\ ;
+参上 > sanjou\ ;
+沈下 > chinka\ ;
+真薯 > shinjo\ ;
+函蓋 > kangai\ ;
+原初 > gensho\ ;
+前端 > zentan\ ;
+快哉 > kaisai\ ;
+気学 > kigaku\ ;
+水域 > suiiki\ ;
+微少 > bishou\ ;
+微小 > bishou\ ;
+全隊 > zentai\ ;
+送致 > souchi\ ;
+連綿 > renmen\ ;
+創痕 > soukon\ ;
+欲目 > yokume\ ;
+得度 > tokudo\ ;
+従弟 > juutei\ ;
+部族 > buzoku\ ;
+蕃人 > banjin\ ;
+菜種 > natane\ ;
+直訴 > jikiso\ ;
+原典 > genten\ ;
+公開 > koukai\ ;
+鱗茎 > rinkei\ ;
+入院 > nyuuin\ ;
+短毛 > tanmou\ ;
+幻肢 > genshi\ ;
+荒誕 > koutan\ ;
+初老 > shorou\ ;
+酷吏 > kokuri\ ;
+連累 > renrui\ ;
+死海 > shikai\ ;
+蕃主 > banshu\ ;
+師訓 > shikun\ ;
+権限 > kengen\ ;
+勘検 > kanken\ ;
+遺物 > ibutsu\ ;
+准許 > junkyo\ ;
+酒場 > sakaba\ ;
+全開 > zenkai\ ;
+殉死 > junshi\ ;
+原像 > genzou\ ;
+延焼 > enshou\ ;
+目許 > memoto\ ;
+水嚢 > suinou\ ;
+当方 > touhou\ ;
+出荷 > shukka\ ;
+真菰 > makomo\ ;
+元首 > genshu\ ;
+南天 > nanten\ ;
+目角 > mekado\ ;
+再選 > saisen\ ;
+廃盤 > haiban\ ;
+硫安 > ryuuan\ ;
+機軸 > kijiku\ ;
+勢望 > seibou\ ;
+権門 > kenmon\ ;
+銘々 > meimei\ ;
+勘案 > kan''an\ ;
+後年 > kounen\ ;
+医局 > ikyoku\ ;
+再遊 > saiyuu\ ;
+砲手 > houshu\ ;
+白露 > hakuro\ ;
+花鳥 > kachou\ ;
+追肥 > tsuihi\ ;
+勘校 > kankou\ ;
+念写 > nensha\ ;
+知歯 > chishi\ ;
+帆走 > hansou\ ;
+往復 > oufuku\ ;
+石榴 > zakuro\ ;
+白雲 > hakuun\ ;
+再送 > saisou\ ;
+光頭 > koutou\ ;
+律師 > risshi\ ;
+愈々 > iyoiyo\ ;
+兵鋒 > heihou\ ;
+出花 > debana\ ;
+歩測 > hosoku\ ;
+先頭 > sentou\ ;
+広縁 > hiroen\ ;
+浪々 > rourou\ ;
+力演 > rikien\ ;
+邪欲 > jayoku\ ;
+心土 > shindo\ ;
+微妙 > bimyou\ ;
+径庭 > keitei\ ;
+別紙 > besshi\ ;
+応召 > oushou\ ;
+出船 > defune\ ;
+酷刑 > kokkei\ ;
+快刀 > kaitou\ ;
+石棺 > sekkan\ ;
+先鞭 > senben\ ;
+巧遅 > kouchi\ ;
+座礁 > zashou\ ;
+選炭 > sentan\ ;
+弁済 > bensai\ ;
+半天 > hanten\ ;
+志向 > shikou\ ;
+監視 > kanshi\ ;
+出臍 > debeso\ ;
+彷徨 > houkou\ ;
+半夜 > han''ya\ ;
+制空 > seikuu\ ;
+原人 > genjin\ ;
+再転 > saiten\ ;
+形成 > keisei\ ;
+市販 > shihan\ ;
+州都 > shuuto\ ;
+光電 > kouden\ ;
+硝安 > shouan\ ;
+初経 > shokei\ ;
+半壊 > hankai\ ;
+弔歌 > chouka\ ;
+近著 > kincho\ ;
+落款 > rakkan\ ;
+切羽 > kiriha\ ;
+硝子 > garasu\ ;
+幹線 > kansen\ ;
+都心 > toshin\ ;
+確保 > kakuho\ ;
+歳歳 > saisai\ ;
+充電 > juuden\ ;
+池亭 > chitei\ ;
+内輪 > uchiwa\ ;
+運用 > un''you\ ;
+盛観 > seikan\ ;
+千夜 > sen''ya\ ;
+序章 > joshou\ ;
+制禦 > seigyo\ ;
+分署 > bunsho\ ;
+形態 > keitai\ ;
+硬変 > kouhen\ ;
+先陣 > senjin\ ;
+気圧 > kiatsu\ ;
+公金 > koukin\ ;
+鳥渡 > chotto\ ;
+遅番 > osoban\ ;
+力泳 > rikiei\ ;
+正油 > shouyu\ ;
+印匣 > inbako\ ;
+即効 > sokkou\ ;
+荷船 > nibune\ ;
+広範 > kouhan\ ;
+石木 > ishiki\ ;
+江上 > koujou\ ;
+即功 > sokkou\ ;
+碩儒 > sekiju\ ;
+著書 > chosho\ ;
+川辺 > kawabe\ ;
+鳩派 > hatoha\ ;
+母御 > hahago\ ;
+鄭声 > teisei\ ;
+砲弾 > houdan\ ;
+当所 > tousho\ ;
+盛装 > seisou\ ;
+芳香 > houkou\ ;
+快便 > kaiben\ ;
+水勢 > suisei\ ;
+都庁 > tochou\ ;
+六部 > rokubu\ ;
+止水 > shisui\ ;
+鮮鋭 > sen''ei\ ;
+酒名 > shumei\ ;
+盛衰 > seisui\ ;
+民団 > mindan\ ;
+芸風 > geifuu\ ;
+弦材 > genzai\ ;
+初等 > shotou\ ;
+公邸 > koutei\ ;
+印刻 > inkoku\ ;
+割烹 > kappou\ ;
+蓮台 > rendai\ ;
+正殿 > seiden\ ;
+冠詞 > kanshi\ ;
+再販 > saihan\ ;
+切線 > sessen\ ;
+剣状 > kenjou\ ;
+卵円 > ran''en\ ;
+酷似 > kokuji\ ;
+別種 > besshu\ ;
+睥睨 > heigei\ ;
+葉柄 > youhei\ ;
+著明 > chomei\ ;
+従姉 > juushi\ ;
+殺意 > satsui\ ;
+辞表 > jihyou\ ;
+公選 > kousen\ ;
+従妹 > juumai\ ;
+利福 > rifuku\ ;
+占取 > senshu\ ;
+歯槽 > shisou\ ;
+真義 > shingi\ ;
+毎年 > mainen\ ;
+残暑 > zansho\ ;
+公道 > koudou\ ;
+正正 > seisei\ ;
+平米 > heibei\ ;
+配合 > haigou\ ;
+水分 > suibun\ ;
+真美 > shinbi\ ;
+幄舎 > akusha\ ;
+魚鱗 > gyorin\ ;
+矢柄 > yagara\ ;
+入部 > nyuubu\ ;
+石斧 > sekifu\ ;
+冗談 > joudan\ ;
+水冷 > suirei\ ;
+兵車 > heisha\ ;
+矮星 > waisei\ ;
+蒼天 > souten\ ;
+全道 > zendou\ ;
+幼童 > youdou\ ;
+轟轟 > gougou\ ;
+睡眠 > suimin\ ;
+巨資 > kyoshi\ ;
+葉書 > hagaki\ ;
+公辺 > kouhen\ ;
+包帯 > houtai\ ;
+厄介 > yakkai\ ;
+民営 > min''ei\ ;
+勇断 > yuudan\ ;
+動揺 > douyou\ ;
+殿御 > tonogo\ ;
+水兵 > suihei\ ;
+十回 > jukkai\ ;
+十四 > juuyon\ ;
+巨財 > kyozai\ ;
+協和 > kyouwa\ ;
+幽窓 > yuusou\ ;
+川路 > kawaji\ ;
+巷談 > koudan\ ;
+目蓋 > mabuta\ ;
+勇敢 > yuukan\ ;
+巨象 > kyozou\ ;
+権道 > kendou\ ;
+冗言 > jougen\ ;
+短文 > tanbun\ ;
+欠片 > kakera\ ;
+連盟 > renmei\ ;
+幼稚 > youchi\ ;
+後天 > kouten\ ;
+具足 > gusoku\ ;
+鱗粉 > rinpun\ ;
+化学 > kagaku\ ;
+遵法 > junpou\ ;
+白金 > hakkin\ ;
+公転 > kouten\ ;
+適温 > tekion\ ;
+南半 > nanhan\ ;
+逸球 > ikkyuu\ ;
+配剤 > haizai\ ;
+皇道 > koudou\ ;
+歯根 > shikon\ ;
+卒去 > sokkyo\ ;
+再誕 > saitan\ ;
+先鋭 > sen''ei\ ;
+選民 > senmin\ ;
+市街 > shigai\ ;
+嵩高 > suukou\ ;
+先鋒 > senpou\ ;
+真綿 > mawata\ ;
+欣然 > kinzen\ ;
+後塵 > koujin\ ;
+全軍 > zengun\ ;
+送稿 > soukou\ ;
+冷蔵 > reizou\ ;
+配分 > haibun\ ;
+復員 > fukuin\ ;
+出納 > suitou\ ;
+処置 > shochi\ ;
+徘回 > haikai\ ;
+迷答 > meitou\ ;
+発酵 > hakkou\ ;
+再訪 > saihou\ ;
+後報 > kouhou\ ;
+草葉 > kusaba\ ;
+彩層 > saisou\ ;
+年税 > nenzei\ ;
+再訂 > saitei\ ;
+苛酷 > kakoku\ ;
+強打 > kyouda\ ;
+邪教 > jakyou\ ;
+矢文 > yabumi\ ;
+内談 > naidan\ ;
+氏名 > shimei\ ;
+具象 > gushou\ ;
+真紅 > shinku\ ;
+卓効 > takkou\ ;
+艦齢 > kanrei\ ;
+勤怠 > kintai\ ;
+即今 > sokkon\ ;
+連番 > renban\ ;
+徴募 > choubo\ ;
+邦文 > houbun\ ;
+当店 > touten\ ;
+欠点 > ketten\ ;
+弊村 > heison\ ;
+当年 > tounen\ ;
+年祭 > nensai\ ;
+彼女 > kanojo\ ;
+死斑 > shihan\ ;
+荷縄 > ninawa\ ;
+死文 > shibun\ ;
+荏苒 > jinzen\ ;
+歳晩 > saiban\ ;
+包容 > houyou\ ;
+農芸 > nougei\ ;
+年礼 > nenrei\ ;
+弔旗 > chouki\ ;
+退社 > taisha\ ;
+半半 > hanhan\ ;
+別盃 > beppai\ ;
+過激 > kageki\ ;
+内訓 > naikun\ ;
+皇軍 > kougun\ ;
+内訌 > naikou\ ;
+水仙 > suisen\ ;
+草草 > sousou\ ;
+却下 > kyakka\ ;
+動態 > doutai\ ;
+再製 > saisei\ ;
+歳星 > saisei\ ;
+強慢 > gouman\ ;
+巧言 > kougen\ ;
+希薄 > kihaku\ ;
+単元 > tangen\ ;
+遠浅 > tooasa\ ;
+轆轤 > rokuro\ ;
+毒婦 > dokufu\ ;
+歳旦 > saitan\ ;
+南光 > nankou\ ;
+十台 > juudai\ ;
+配偶 > haiguu\ ;
+内観 > naikan\ ;
+発送 > hassou\ ;
+御告 > otsuge\ ;
+内覧 > nairan\ ;
+遠洋 > en''you\ ;
+弾性 > dansei\ ;
+内見 > naiken\ ;
+形容 > keiyou\ ;
+部属 > buzoku\ ;
+正東 > seitou\ ;
+強情 > goujou\ ;
+千千 > chidji\ ;
+近縁 > kin''en\ ;
+真箇 > shinko\ ;
+魚類 > gyorui\ ;
+勇戦 > yuusen\ ;
+鶏口 > keikou\ ;
+常置 > jouchi\ ;
+卒先 > sossen\ ;
+出端 > debana\ ;
+遠沈 > enchin\ ;
+正本 > seihon\ ;
+正木 > masaki\ ;
+全貌 > zenbou\ ;
+部将 > bushou\ ;
+先遣 > senken\ ;
+硫化 > ryuuka\ ;
+遡求 > sokyuu\ ;
+眼瞼 > ganken\ ;
+半分 > hanpun\ ;
+分社 > bunsha\ ;
+正書 > seisho\ ;
+入費 > nyuuhi\ ;
+短所 > tansho\ ;
+午刻 > gokoku\ ;
+登載 > tousai\ ;
+弊方 > heihou\ ;
+占住 > senjuu\ ;
+巡覧 > junran\ ;
+気儘 > kimama\ ;
+忌中 > kichuu\ ;
+内装 > naisou\ ;
+勧工 > kankou\ ;
+役場 > yakuba\ ;
+魔風 > makaze\ ;
+出窓 > demado\ ;
+後嗣 > koushi\ ;
+目脂 > meyani\ ;
+巡視 > junshi\ ;
+助教 > jokyou\ ;
+酒仙 > shusen\ ;
+鶏卵 > keiran\ ;
+真竹 > madake\ ;
+看経 > kankin\ ;
+建材 > kenzai\ ;
+発車 > hassha\ ;
+民兵 > minpei\ ;
+復刊 > fukkan\ ;
+半円 > han''en\ ;
+勘当 > kandou\ ;
+弊政 > heisei\ ;
+匈奴 > kyoudo\ ;
+酒乱 > shuran\ ;
+盲者 > mousha\ ;
+廃液 > haieki\ ;
+矇昧 > moumai\ ;
+左表 > sahyou\ ;
+遅滞 > chitai\ ;
+刀礼 > tourei\ ;
+弁明 > benmei\ ;
+心事 > shinji\ ;
+勘弁 > kanben\ ;
+欲気 > yokuke\ ;
+短慮 > tanryo\ ;
+千分 > senbun\ ;
+劣敗 > reppai\ ;
+毎夕 > maiyuu\ ;
+砲声 > housei\ ;
+光輪 > kourin\ ;
+卒倒 > sottou\ ;
+単体 > tantai\ ;
+百足 > mukade\ ;
+欧洲 > oushuu\ ;
+勅意 > chokui\ ;
+公論 > kouron\ ;
+十分 > juppun\ ;
+魚雷 > gyorai\ ;
+先輩 > senpai\ ;
+平目 > hirame\ ;
+郷士 > goushi\ ;
+此方 > konata\ ;
+剣法 > kenpou\ ;
+微傷 > bishou\ ;
+茶茶 > chacha\ ;
+正方 > seihou\ ;
+武教 > bukyou\ ;
+剪毛 > senmou\ ;
+辛苦 > shinku\ ;
+配乗 > haijou\ ;
+市葬 > shisou\ ;
+矜持 > kyouji\ ;
+農耕 > noukou\ ;
+卑俗 > hizoku\ ;
+千円 > sen''en\ ;
+初生 > shosei\ ;
+公認 > kounin\ ;
+巡行 > junkou\ ;
+区劃 > kukaku\ ;
+正文 > seibun\ ;
+公試 > koushi\ ;
+気侭 > kimama\ ;
+歌格 > kakaku\ ;
+幽界 > yuukai\ ;
+正数 > seisuu\ ;
+後味 > atoaji\ ;
+砲塔 > houtou\ ;
+硝化 > shouka\ ;
+兼行 > kenkou\ ;
+強度 > kyoudo\ ;
+彫塑 > chouso\ ;
+十全 > juuzen\ ;
+公許 > koukyo\ ;
+発走 > hassou\ ;
+南京 > nankin\ ;
+知慮 > chiryo\ ;
+死所 > shisho\ ;
+幼生 > yousei\ ;
+道民 > doumin\ ;
+半値 > han''ne\ ;
+公言 > kougen\ ;
+悶々 > monmon\ ;
+返答 > hentou\ ;
+茶色 > chairo\ ;
+権謀 > kenbou\ ;
+鶏冠 > tosaka\ ;
+百貨 > hyakka\ ;
+廻文 > kaibun\ ;
+勁悍 > keikan\ ;
+元軍 > gengun\ ;
+十億 > juuoku\ ;
+引手 > hikite\ ;
+形声 > keisei\ ;
+魔障 > mashou\ ;
+切目 > kireme\ ;
+引戸 > hikido\ ;
+軟風 > nanpuu\ ;
+幸甚 > koujin\ ;
+待命 > taimei\ ;
+眼界 > gankai\ ;
+茶臼 > chausu\ ;
+選書 > sensho\ ;
+英訳 > eiyaku\ ;
+転音 > ten''on\ ;
+残影 > zan''ei\ ;
+後半 > kouhan\ ;
+芳醇 > houjun\ ;
+年産 > nensan\ ;
+年生 > nensei\ ;
+千倍 > senbai\ ;
+廃残 > haizan\ ;
+良馬 > ryouba\ ;
+従前 > juuzen\ ;
+平生 > heizei\ ;
+郷土 > kyoudo\ ;
+遊民 > yuumin\ ;
+葛布 > kuzufu\ ;
+廃止 > haishi\ ;
+輪転 > rinten\ ;
+帆船 > hobune\ ;
+十倍 > juubai\ ;
+知性 > chisei\ ;
+剛毛 > goumou\ ;
+毎回 > maikai\ ;
+母国 > bokoku\ ;
+民人 > minjin\ ;
+真砂 > masago\ ;
+助手 > sukete\ ;
+止揚 > shiyou\ ;
+幽玄 > yuugen\ ;
+芸道 > geidou\ ;
+先賢 > senken\ ;
+加振 > kashin\ ;
+盛者 > jousha\ ;
+役員 > yakuin\ ;
+微乳 > binyuu\ ;
+県税 > kenzei\ ;
+帳簿 > choubo\ ;
+邪心 > jashin\ ;
+優遇 > yuuguu\ ;
+石工 > sekkou\ ;
+内蔵 > naizou\ ;
+船齢 > senrei\ ;
+民主 > minshu\ ;
+初犯 > shohan\ ;
+後刻 > gokoku\ ;
+殿堂 > dendou\ ;
+復交 > fukkou\ ;
+庶民 > shomin\ ;
+瞬時 > shunji\ ;
+優退 > yuutai\ ;
+凹目 > kubome\ ;
+従兄 > juukei\ ;
+劣才 > ressai\ ;
+千仭 > senjin\ ;
+分界 > bunkai\ ;
+千仞 > senjin\ ;
+輪距 > rinkyo\ ;
+艦首 > kanshu\ ;
+返礼 > henrei\ ;
+刀痕 > toukon\ ;
+初版 > shohan\ ;
+鳴戸 > naruto\ ;
+十代 > juudai\ ;
+勘定 > kanjou\ ;
+内蒙 > naimou\ ;
+目糞 > mekuso\ ;
+座浴 > zayoku\ ;
+標語 > hyougo\ ;
+白話 > hakuwa\ ;
+判然 > hanzen\ ;
+砂子 > sunago\ ;
+弁才 > bensai\ ;
+悠々 > yuuyuu\ ;
+権衡 > kenkou\ ;
+労役 > roueki\ ;
+茗荷 > myouga\ ;
+目籠 > mekago\ ;
+着物 > kimono\ ;
+車風 > shafuu\ ;
+標記 > hyouki\ ;
+鬚髯 > shuzen\ ;
+前段 > zendan\ ;
+遮断 > shadan\ ;
+茎葉 > keiyou\ ;
+適時 > tekiji\ ;
+師範 > shihan\ ;
+草紙 > soushi\ ;
+落後 > rakugo\ ;
+盲管 > moukan\ ;
+十三 > juusan\ ;
+十万 > juuman\ ;
+毒味 > dokumi\ ;
+葉巻 > hamaki\ ;
+市肆 > shishi\ ;
+張子 > hariko\ ;
+石屋 > ishiya\ ;
+御主 > onushi\ ;
+都合 > tsugou\ ;
+幻燈 > gentou\ ;
+御中 > onchuu\ ;
+花輪 > hanawa\ ;
+弁慶 > benkei\ ;
+免許 > menkyo\ ;
+干犯 > kanpan\ ;
+剪枝 > senshi\ ;
+花軸 > kajiku\ ;
+幽然 > yuuzen\ ;
+凹田 > kubota\ ;
+苦衷 > kuchuu\ ;
+発見 > hakken\ ;
+兎角 > tokaku\ ;
+当地 > touchi\ ;
+干物 > himono\ ;
+平版 > heihan\ ;
+苦行 > kugyou\ ;
+鯨脂 > geishi\ ;
+再興 > saikou\ ;
+落度 > ochido\ ;
+砲台 > houdai\ ;
+再臨 > sairin\ ;
+砲口 > houkou\ ;
+真田 > sanada\ ;
+助役 > joyaku\ ;
+毎号 > maigou\ ;
+劣性 > ressei\ ;
+目笊 > mezaru\ ;
+歯形 > hagata\ ;
+弾奏 > dansou\ ;
+包含 > hougan\ ;
+廃校 > haikou\ ;
+後便 > koubin\ ;
+選挙 > senkyo\ ;
+匍匐 > hofuku\ ;
+郊外 > kougai\ ;
+強姦 > goukan\ ;
+白衣 > byakue\ ;
+剖検 > bouken\ ;
+巨艦 > kyokan\ ;
+進歩 > shinpo\ ;
+凡眼 > bongan\ ;
+僧門 > soumon\ ;
+返盃 > henpai\ ;
+工芸 > kougei\ ;
+軍隊 > guntai\ ;
+近県 > kinken\ ;
+落差 > rakusa\ ;
+幻灯 > gentou\ ;
+巨船 > kyosen\ ;
+鱗状 > rinjou\ ;
+内航 > naikou\ ;
+先見 > senken\ ;
+軍陣 > gunjin\ ;
+輪講 > rinkou\ ;
+残存 > zanzon\ ;
+着火 > chakka\ ;
+平然 > heizen\ ;
+切片 > seppen\ ;
+発行 > hakkou\ ;
+北光 > hokkou\ ;
+武徳 > butoku\ ;
+眉目 > bimoku\ ;
+眈眈 > tantan\ ;
+眼点 > ganten\ ;
+動天 > douten\ ;
+功徳 > kudoku\ ;
+後任 > kounin\ ;
+廃材 > haizai\ ;
+内臓 > naizou\ ;
+後件 > kouken\ ;
+艦隊 > kantai\ ;
+苗裔 > byouei\ ;
+加役 > kayaku\ ;
+選手 > senshu\ ;
+後代 > koudai\ ;
+鱗片 > rinpen\ ;
+弊店 > heiten\ ;
+真理 > shinri\ ;
+刃物 > hamono\ ;
+儕輩 > saihai\ ;
+皮膜 > himaku\ ;
+後人 > koujin\ ;
+役儀 > yakugi\ ;
+真珠 > shinju\ ;
+否々 > iyaiya\ ;
+剪断 > sendan\ ;
+公葬 > kousou\ ;
+砂場 > sunaba\ ;
+弁当 > bentou\ ;
+内腔 > naikou\ ;
+逓減 > teigen\ ;
+巡航 > junkou\ ;
+往信 > oushin\ ;
+軍門 > gunmon\ ;
+座標 > zahyou\ ;
+正当 > seitou\ ;
+荒神 > koujin\ ;
+魚道 > gyodou\ ;
+死屍 > shishi\ ;
+艇首 > teishu\ ;
+邪宗 > jashuu\ ;
+正弦 > seigen\ ;
+草稿 > soukou\ ;
+勇姿 > yuushi\ ;
+再考 > saikou\ ;
+分煙 > bun''en\ ;
+欠本 > keppon\ ;
+後世 > kousei\ ;
+先行 > senkou\ ;
+軟鋼 > nankou\ ;
+毎分 > maifun\ ;
+制止 > seishi\ ;
+郵券 > yuuken\ ;
+荒磯 > araiso\ ;
+軽輩 > keihai\ ;
+華族 > kazoku\ ;
+形勢 > keisei\ ;
+構造 > kouzou\ ;
+著大 > chodai\ ;
+出物 > demono\ ;
+茅舎 > bousha\ ;
+座業 > zagyou\ ;
+勝因 > shouin\ ;
+白虹 > hakkou\ ;
+皮肉 > hiniku\ ;
+前栽 > senzai\ ;
+高齢 > kourei\ ;
+砲兵 > houhei\ ;
+内聞 > naibun\ ;
+分点 > bunten\ ;
+死守 > shishu\ ;
+底止 > teishi\ ;
+兵船 > heisen\ ;
+別法 > beppou\ ;
+凸版 > toppan\ ;
+八荒 > hakkou\ ;
+通気 > tsuuki\ ;
+加州 > kashuu\ ;
+正帽 > seibou\ ;
+兵舎 > heisha\ ;
+正常 > seijou\ ;
+廻廊 > kairou\ ;
+速歩 > sokuho\ ;
+干潟 > higata\ ;
+軽躁 > keisou\ ;
+遥拝 > youhai\ ;
+遊星 > yuusei\ ;
+芸談 > geidan\ ;
+過料 > karyou\ ;
+勇壮 > yuusou\ ;
+勇士 > yuushi\ ;
+監禁 > kankin\ ;
+巧者 > kousha\ ;
+優諚 > yuujou\ ;
+鳩座 > hatoza\ ;
+短大 > tandai\ ;
+左翼 > sayoku\ ;
+茶筅 > chasen\ ;
+前板 > maeita\ ;
+僻遠 > hekien\ ;
+高麗 > kourai\ ;
+身頃 > migoro\ ;
+石塊 > sekkai\ ;
+前条 > zenjou\ ;
+入荷 > nyuuka\ ;
+崇高 > suukou\ ;
+割拠 > kakkyo\ ;
+強固 > kyouko\ ;
+歓待 > kantai\ ;
+平準 > heijun\ ;
+船首 > senshu\ ;
+弟妹 > teimai\ ;
+痛飲 > tsuuin\ ;
+劾奏 > gaisou\ ;
+干満 > kanman\ ;
+前書 > zensho\ ;
+延年 > en''nen\ ;
+病魔 > byouma\ ;
+広汎 > kouhan\ ;
+利欲 > riyoku\ ;
+郭公 > kakkou\ ;
+公舎 > kousha\ ;
+庭木 > niwaki\ ;
+楽音 > gakuon\ ;
+残塁 > zanrui\ ;
+入苑 > nyuuen\ ;
+若葉 > wakaba\ ;
+准看 > junkan\ ;
+再編 > saihen\ ;
+凍瘡 > tousou\ ;
+常用 > jouyou\ ;
+勲功 > kunkou\ ;
+弊害 > heigai\ ;
+此岸 > shigan\ ;
+全船 > zensen\ ;
+平淡 > heitan\ ;
+全般 > zenpan\ ;
+前景 > zenkei\ ;
+遠戚 > enseki\ ;
+殺到 > sattou\ ;
+出火 > shukka\ ;
+目盛 > memori\ ;
+若菜 > wakana\ ;
+帆立 > hotate\ ;
+郡制 > gunsei\ ;
+郵便 > yuubin\ ;
+転送 > tensou\ ;
+遷延 > sen''en\ ;
+武将 > bushou\ ;
+目白 > mejiro\ ;
+庶政 > shosei\ ;
+盪盪 > toutou\ ;
+初段 > shodan\ ;
+当初 > tousho\ ;
+船頭 > sendou\ ;
+当分 > toubun\ ;
+週期 > shuuki\ ;
+郎君 > roukun\ ;
+弘大 > koudai\ ;
+近状 > kinjou\ ;
+巨編 > kyohen\ ;
+残在 > zanzon\ ;
+花見 > hanami\ ;
+毀傷 > kishou\ ;
+内線 > naisen\ ;
+巧緻 > kouchi\ ;
+欠損 > kesson\ ;
+内緒 > naisho\ ;
+遷幸 > senkou\ ;
+刑法 > keihou\ ;
+鳴子 > naruko\ ;
+前文 > zenbun\ ;
+舷頭 > gentou\ ;
+武学 > bugaku\ ;
+遣悶 > kenmon\ ;
+出潮 > deshio\ ;
+席画 > sekiga\ ;
+逆毛 > sakage\ ;
+適応 > tekiou\ ;
+魚貝 > gyobai\ ;
+若芽 > wakame\ ;
+転載 > tensai\ ;
+冷眼 > reigan\ ;
+勤勉 > kinben\ ;
+励声 > reisei\ ;
+櫛比 > shippi\ ;
+送水 > sousui\ ;
+勤労 > kinrou\ ;
+市税 > shizei\ ;
+砲丸 > hougan\ ;
+母乳 > bonyuu\ ;
+転転 > tenten\ ;
+達成 > tassei\ ;
+内紛 > naifun\ ;
+勿体 > mottai\ ;
+勘合 > kangou\ ;
+茶碗 > chawan\ ;
+軍配 > gunbai\ ;
+平水 > heisui\ ;
+弘報 > kouhou\ ;
+鳥屋 > toriya\ ;
+款待 > kantai\ ;
+平民 > heimin\ ;
+平氏 > heishi\ ;
+百花 > hyakka\ ;
+連枝 > renshi\ ;
+母上 > hahaue\ ;
+動向 > doukou\ ;
+疾駆 > shikku\ ;
+函渠 > kankyo\ ;
+農産 > nousan\ ;
+刑死 > keishi\ ;
+楼門 > roumon\ ;
+公署 > kousho\ ;
+瞑想 > meisou\ ;
+年歯 > nenshi\ ;
+造林 > zourin\ ;
+船隊 > sentai\ ;
+遠心 > enshin\ ;
+苛苛 > iraira\ ;
+弱味 > yowami\ ;
+適度 > tekido\ ;
+削摩 > sakuma\ ;
+輪蔵 > rinzou\ ;
+弾劾 > dangai\ ;
+達意 > tatsui\ ;
+底本 > teihon\ ;
+到来 > tourai\ ;
+発艦 > hakkan\ ;
+刎死 > funshi\ ;
+軍道 > gundou\ ;
+創建 > souken\ ;
+前提 > zentei\ ;
+死地 > shichi\ ;
+冬着 > fuyugi\ ;
+造本 > zouhon\ ;
+看点 > kanten\ ;
+欣懐 > kinkai\ ;
+薄々 > usuusu\ ;
+前掲 > zenkei\ ;
+冬眠 > toumin\ ;
+発航 > hakkou\ ;
+勝利 > shouri\ ;
+巨篇 > kyohen\ ;
+登臨 > tourin\ ;
+車道 > shadou\ ;
+強化 > kyouka\ ;
+正妻 > seisai\ ;
+辛目 > karame\ ;
+動勢 > dousei\ ;
+痴鈍 > chidon\ ;
+著名 > chomei\ ;
+残品 > zanpin\ ;
+庸才 > yousai\ ;
+動労 > dourou\ ;
+軒輊 > kenchi\ ;
+光芒 > koubou\ ;
+帯状 > obijou\ ;
+苦肉 > kuniku\ ;
+鳳声 > housei\ ;
+連星 > rensei\ ;
+皇考 > koukou\ ;
+目玉 > medama\ ;
+高騰 > koutou\ ;
+茶盆 > chabon\ ;
+郎党 > roudou\ ;
+布石 > fuseki\ ;
+臥龍 > garyou\ ;
+弁天 > benten\ ;
+切歯 > sesshi\ ;
+軽視 > keishi\ ;
+短命 > tanmei\ ;
+巣箱 > subako\ ;
+殿上 > tenjou\ ;
+舷門 > genmon\ ;
+選定 > sentei\ ;
+勇名 > yuumei\ ;
+正大 > seidai\ ;
+髑髏 > dokuro\ ;
+利札 > rifuda\ ;
+遷宮 > senguu\ ;
+転貸 > tentai\ ;
+幽棲 > yuusei\ ;
+歯垢 > shikou\ ;
+弁士 > benshi\ ;
+道念 > dounen\ ;
+瞳孔 > doukou\ ;
+瞳子 > doushi\ ;
+歯型 > hagata\ ;
+当代 > toudai\ ;
+床机 > shougi\ ;
+別杯 > beppai\ ;
+先般 > senpan\ ;
+当今 > toukon\ ;
+勤倹 > kinken\ ;
+剛情 > goujou\ ;
+当人 > tounin\ ;
+遵守 > junshu\ ;
+車輪 > sharin\ ;
+初校 > shokou\ ;
+軍車 > gunsha\ ;
+歌学 > kagaku\ ;
+連敗 > renpai\ ;
+全編 > zenpen\ ;
+底数 > teisuu\ ;
+出水 > demizu\ ;
+全線 > zensen\ ;
+軽装 > keisou\ ;
+身銭 > mizeni\ ;
+艦載 > kansai\ ;
+傍題 > boudai\ ;
+違式 > ishiki\ ;
+広東 > kanton\ ;
+布目 > nunome\ ;
+典範 > tenpan\ ;
+当主 > toushu\ ;
+病院 > byouin\ ;
+送検 > souken\ ;
+峰頭 > houtou\ ;
+知命 > chimei\ ;
+幽栖 > yuusei\ ;
+盗用 > touyou\ ;
+剛性 > gousei\ ;
+欣快 > kinkai\ ;
+当世 > tousei\ ;
+八紘 > hakkou\ ;
+勉励 > benrei\ ;
+速攻 > sokkou\ ;
+出殻 > degara\ ;
+兎肉 > toniku\ ;
+眠気 > nemuke\ ;
+茶番 > chaban\ ;
+真水 > mamizu\ ;
+左程 > sahodo\ ;
+分権 > bunken\ ;
+高風 > koufuu\ ;
+知名 > chimei\ ;
+工程 > koutei\ ;
+幽林 > yuurin\ ;
+返済 > hensai\ ;
+全紙 > zenshi\ ;
+冬瓜 > tougan\ ;
+殊勲 > shukun\ ;
+光背 > kouhai\ ;
+軌跡 > kiseki\ ;
+弱冠 > jakkan\ ;
+弾倉 > dansou\ ;
+知友 > chiyuu\ ;
+加圧 > kaatsu\ ;
+茶瓶 > chabin\ ;
+連携 > renkei\ ;
+初更 > shokou\ ;
+利敵 > riteki\ ;
+判明 > hanmei\ ;
+死命 > shimei\ ;
+適宜 > tekigi\ ;
+殊功 > shukou\ ;
+弥勒 > miroku\ ;
+冥界 > meikai\ ;
+芭蕉 > bashou\ ;
+運弓 > unkyuu\ ;
+剣帯 > kentai\ ;
+退校 > taikou\ ;
+高音 > takane\ ;
+良貨 > ryouka\ ;
+兵端 > heitan\ ;
+短剣 > tanken\ ;
+先聖 > sensei\ ;
+全米 > zenbei\ ;
+盲点 > mouten\ ;
+判断 > handan\ ;
+兵站 > heitan\ ;
+歓声 > kansei\ ;
+欽定 > kintei\ ;
+透明 > toumei\ ;
+重々 > juujuu\ ;
+軟論 > nanron\ ;
+邸内 > teinai\ ;
+皇統 > koutou\ ;
+近海 > kinkai\ ;
+免罪 > menzai\ ;
+廃帝 > haitei\ ;
+先考 > senkou\ ;
+短刀 > tantou\ ;
+勘例 > kanrei\ ;
+公算 > kousan\ ;
+舌頭 > zettou\ ;
+選外 > sengai\ ;
+死去 > shikyo\ ;
+軍資 > gunshi\ ;
+欧州 > oushuu\ ;
+引合 > hikiai\ ;
+幽景 > yuukei\ ;
+遊底 > yuutei\ ;
+知勇 > chiyuu\ ;
+矩則 > kusoku\ ;
+巡礼 > junrei\ ;
+遵奉 > junpou\ ;
+年来 > nenrai\ ;
+初旬 > shojun\ ;
+平板 > heiban\ ;
+儀表 > gihyou\ ;
+歎声 > tansei\ ;
+全篇 > zenpen\ ;
+兵種 > heishu\ ;
+巨砲 > kyohou\ ;
+皆納 > kainou\ ;
+至高 > shikou\ ;
+幽明 > yuumei\ ;
+残党 > zantou\ ;
+次席 > jiseki\ ;
+歌声 > utagoe\ ;
+模索 > mosaku\ ;
+残光 > zankou\ ;
+動体 > doutai\ ;
+元老 > genrou\ ;
+鮮紅 > senkou\ ;
+副官 > fukkan\ ;
+芳草 > housou\ ;
+真横 > mayoko\ ;
+八端 > hattan\ ;
+巧知 > kouchi\ ;
+分校 > bunkou\ ;
+連投 > rentou\ ;
+典礼 > tenrei\ ;
+盗犯 > touhan\ ;
+弾丸 > dangan\ ;
+歌境 > kakyou\ ;
+写生 > shasei\ ;
+残像 > zanzou\ ;
+労動 > roudou\ ;
+歩哨 > hoshou\ ;
+県民 > kenmin\ ;
+勇健 > yuuken\ ;
+冗用 > jouyou\ ;
+剪定 > sentei\ ;
+剣山 > kenzan\ ;
+労功 > roukou\ ;
+連戦 > rensen\ ;
+冷然 > reizen\ ;
+砂丘 > sakyuu\ ;
+動乱 > douran\ ;
+制憲 > seiken\ ;
+弓勢 > yunzei\ ;
+内省 > naisei\ ;
+廃山 > haizan\ ;
+前庭 > zentei\ ;
+平明 > heimei\ ;
+死刑 > shikei\ ;
+創始 > soushi\ ;
+眉毛 > mayuge\ ;
+造成 > zousei\ ;
+巨盗 > kyotou\ ;
+廃屋 > haioku\ ;
+切替 > settai\ ;
+公私 > koushi\ ;
+死処 > shisho\ ;
+逃散 > tousan\ ;
+身軽 > migaru\ ;
+光線 > kousen\ ;
+廣報 > kouhou\ ;
+矢先 > yasaki\ ;
+平方 > heihou\ ;
+軍談 > gundan\ ;
+華客 > kakaku\ ;
+過少 > kashou\ ;
+過小 > kashou\ ;
+年数 > nensuu\ ;
+正味 > shoumi\ ;
+退散 > taisan\ ;
+公社 > kousha\ ;
+芸能 > geinou\ ;
+連想 > rensou\ ;
+再生 > saisei\ ;
+残余 > zan''yo\ ;
+過客 > kakaku\ ;
+遣外 > kengai\ ;
+冠状 > kanjou\ ;
+次将 > jishou\ ;
+弁口 > benkou\ ;
+干支 > kanshi\ ;
+皓礬 > kouban\ ;
+正号 > seigou\ ;
+正史 > seishi\ ;
+苦笑 > kushou\ ;
+全社 > zensha\ ;
+分明 > bunmei\ ;
+弓具 > kyuugu\ ;
+進度 > shindo\ ;
+癌腫 > ganshu\ ;
+劣勢 > ressei\ ;
+労働 > roudou\ ;
+矮人 > waijin\ ;
+廻向 > kaikou\ ;
+荒海 > araumi\ ;
+鳴動 > meidou\ ;
+内界 > naikai\ ;
+座席 > zaseki\ ;
+正南 > seinan\ ;
+芸者 > geisha\ ;
+遊子 > yuushi\ ;
+正午 > shougo\ ;
+内用 > naiyou\ ;
+別懇 > bekkon\ ;
+制御 > seigyo\ ;
+分数 > bunsuu\ ;
+分散 > bunsan\ ;
+優者 > yuusha\ ;
+登第 > toudai\ ;
+歯冠 > shikan\ ;
+再現 > saigen\ ;
+康寧 > kounei\ ;
+公知 > kouchi\ ;
+功労 > kourou\ ;
+欄干 > rankan\ ;
+列挙 > rekkyo\ ;
+前山 > zenzan\ ;
+弥久 > bikyuu\ ;
+発端 > hottan\ ;
+初戦 > shosen\ ;
+軍装 > gunsou\ ;
+別意 > betsui\ ;
+出時 > dedoki\ ;
+連弾 > rendan\ ;
+全知 > zenchi\ ;
+知人 > chijin\ ;
+茫然 > bouzen\ ;
+輔翼 > hoyoku\ ;
+農法 > nouhou\ ;
+歌唱 > kashou\ ;
+利息 > risoku\ ;
+府庁 > fuchou\ ;
+真暗 > makura\ ;
+庶子 > shoshi\ ;
+華奢 > kyasha\ ;
+至難 > shinan\ ;
+凍死 > toushi\ ;
+労使 > roushi\ ;
+廉売 > renbai\ ;
+造形 > zoukei\ ;
+死体 > shitai\ ;
+逢引 > aibiki\ ;
+停頓 > teiton\ ;
+百科 > hyakka\ ;
+遺告 > yuigou\ ;
+函数 > kansuu\ ;
+冷淡 > reitan\ ;
+逆手 > sakate\ ;
+真昼 > mahiru\ ;
+出方 > dekata\ ;
+道士 > doushi\ ;
+前官 > zenkan\ ;
+剣士 > kenshi\ ;
+公益 > koueki\ ;
+船路 > funaji\ ;
+邦人 > houjin\ ;
+疎隔 > sokaku\ ;
+制帽 > seibou\ ;
+加入 > kanyuu\ ;
+再犯 > saihan\ ;
+先端 > sentan\ ;
+農民 > noumin\ ;
+遠国 > ongoku\ ;
+具申 > gushin\ ;
+荷札 > nifuda\ ;
+席次 > sekiji\ ;
+利得 > ritoku\ ;
+全盲 > zenmou\ ;
+死亡 > shibou\ ;
+巨獣 > kyojuu\ ;
+岸頭 > gantou\ ;
+落伍 > rakugo\ ;
+正兵 > seihei\ ;
+全盛 > zensei\ ;
+蹈鞴 > tatara\ ;
+連帯 > rentai\ ;
+速度 > sokudo\ ;
+到底 > toutei\ ;
+免税 > menzei\ ;
+再版 > saihan\ ;
+副因 > fukuin\ ;
+発禁 > hakkin\ ;
+舌鋒 > zeppou\ ;
+造幣 > zouhei\ ;
+道場 > doujou\ ;
+標示 > hyouji\ ;
+廃墟 > haikyo\ ;
+平手 > hirate\ ;
+返杯 > henpai\ ;
+停電 > teiden\ ;
+健闘 > kentou\ ;
+舟運 > shuuun\ ;
+横目 > yokome\ ;
+平成 > heisei\ ;
+凱旋 > gaisen\ ;
+厭々 > iyaiya\ ;
+目次 > mokuji\ ;
+冷泉 > reisen\ ;
+全癒 > zen''yu\ ;
+白磁 > hakuji\ ;
+返本 > henpon\ ;
+別形 > bekkei\ ;
+幻想 > gensou\ ;
+看板 > kanban\ ;
+再燃 > sainen\ ;
+着意 > chakui\ ;
+内状 > naijou\ ;
+別当 > bettou\ ;
+近東 > kintou\ ;
+建具 > tategu\ ;
+近来 > kinrai\ ;
+返書 > hensho\ ;
+序幕 > jomaku\ ;
+側鎖 > sokusa\ ;
+概論 > gairon\ ;
+病躯 > byouku\ ;
+楽譜 > gakufu\ ;
+冷汗 > reikan\ ;
+分担 > buntan\ ;
+辣油 > razeyu\ ;
+高配 > kouhai\ ;
+廷内 > teinai\ ;
+劇化 > gekika\ ;
+冷水 > reisui\ ;
+初志 > shoshi\ ;
+公田 > kouden\ ;
+還元 > kangen\ ;
+逕庭 > keitei\ ;
+利幅 > rihaba\ ;
+公用 > kouyou\ ;
+凡書 > bonsho\ ;
+連峰 > renpou\ ;
+劇務 > gekimu\ ;
+巡狩 > junshu\ ;
+切手 > kirete\ ;
+幻怪 > genkai\ ;
+追慕 > tsuibo\ ;
+武侠 > bukyou\ ;
+発砲 > happou\ ;
+廃坑 > haikou\ ;
+身許 > mimoto\ ;
+適否 > tekihi\ ;
+出掛 > degake\ ;
+円熟 > enjuku\ ;
+全甲 > zenkou\ ;
+近景 > kinkei\ ;
+歌劇 > kageki\ ;
+連山 > renzan\ ;
+高邁 > koumai\ ;
+前奏 > zensou\ ;
+店屋 > miseya\ ;
+処方 > shohou\ ;
+航走 > kousou\ ;
+処断 > shodan\ ;
+遍在 > henzai\ ;
+正使 > seishi\ ;
+刻字 > kokuji\ ;
+別巻 > bekkan\ ;
+冗漫 > jouman\ ;
+概観 > gaikan\ ;
+前夜 > zen''ya\ ;
+建値 > tatene\ ;
+幻影 > gen''ei\ ;
+連射 > rensha\ ;
+前売 > maeuri\ ;
+概要 > gaiyou\ ;
+傍輩 > houbai\ ;
+白眉 > hakubi\ ;
+峡部 > kyoubu\ ;
+制定 > seitei\ ;
+正伝 > seiden\ ;
+軽罪 > keizai\ ;
+番頭 > bantou\ ;
+初年 > shonen\ ;
+述懐 > jukkai\ ;
+辛気 > shinki\ ;
+楽観 > rakkan\ ;
+割合 > wariai\ ;
+楼観 > roukan\ ;
+苦痛 > kutsuu\ ;
+希求 > kikyuu\ ;
+幾年 > ikunen\ ;
+冬毛 > fuyuge\ ;
+先知 > senchi\ ;
+店子 > tanako\ ;
+魚群 > gyogun\ ;
+遡及 > sokyuu\ ;
+退役 > taieki\ ;
+幼年 > younen\ ;
+迂曲 > ukyoku\ ;
+優等 > yuutou\ ;
+軍葬 > gunsou\ ;
+割印 > wariin\ ;
+華商 > kashou\ ;
+利尿 > rinyou\ ;
+兵燹 > heisen\ ;
+延伸 > enshin\ ;
+床屋 > tokoya\ ;
+退廷 > taitei\ ;
+権現 > gongen\ ;
+側部 > sokubu\ ;
+帰朝 > kichou\ ;
+帰服 > kifuku\ ;
+眼底 > gantei\ ;
+退廃 > taihai\ ;
+別居 > bekkyo\ ;
+留飲 > ryuuin\ ;
+刪定 > santei\ ;
+遮光 > shakou\ ;
+前坊 > zenbou\ ;
+軟膏 > nankou\ ;
+欄外 > rangai\ ;
+冠水 > kansui\ ;
+別封 > beppuu\ ;
+眼帯 > gantai\ ;
+平年 > heinen\ ;
+平平 > heihei\ ;
+臆面 > okumen\ ;
+廃品 > haihin\ ;
+迷彩 > meisai\ ;
+市民 > shimin\ ;
+庄屋 > shouya\ ;
+色色 > iroiro\ ;
+高踏 > koutou\ ;
+冠毛 > kanmou\ ;
+巨漢 > kyokan\ ;
+常数 > jousuu\ ;
+創刊 > soukan\ ;
+先登 > sentou\ ;
+前回 > zenkai\ ;
+農林 > nourin\ ;
+平常 > heijou\ ;
+苔癬 > taisen\ ;
+癲癇 > tenkan\ ;
+草根 > soukon\ ;
+登用 > touyou\ ;
+高距 > koukyo\ ;
+判定 > hantei\ ;
+判官 > hangan\ ;
+川瀬 > kawase\ ;
+廷丁 > teitei\ ;
+発生 > hassei\ ;
+農村 > nouson\ ;
+側近 > sokkin\ ;
+盤根 > bankon\ ;
+莚席 > enseki\ ;
+真意 > shin''i\ ;
+魂胆 > kontan\ ;
+列島 > rettou\ ;
+轟然 > gouzen\ ;
+廃合 > haigou\ ;
+別嬪 > beppin\ ;
+欠品 > keppin\ ;
+魚網 > gyomou\ ;
+連奏 > rensou\ ;
+内湯 > uchiyu\ ;
+生麩 > namafu\ ;
+幽居 > yuukyo\ ;
+連夜 > ren''ya\ ;
+巡演 > jun''en\ ;
+分店 > bunten\ ;
+歌会 > utakai\ ;
+内港 > naikou\ ;
+公然 > kouzen\ ;
+巻毛 > makige\ ;
+軍艦 > gunkan\ ;
+連声 > renjou\ ;
+自重 > jichou\ ;
+内済 > naisai\ ;
+先番 > senban\ ;
+遊吟 > yuugin\ ;
+遊君 > yuukun\ ;
+軍船 > gunsen\ ;
+華北 > kahoku\ ;
+草本 > souhon\ ;
+盲断 > moudan\ ;
+着尺 > kijaku\ ;
+艨艟 > moudou\ ;
+返戻 > henrei\ ;
+先生 > sensei\ ;
+剪刀 > sentou\ ;
+偽足 > gisoku\ ;
+草書 > sousho\ ;
+全然 > zenzen\ ;
+列寧 > reenin\ ;
+魚精 > gyosei\ ;
+艦艇 > kantei\ ;
+艦船 > kansen\ ;
+内海 > naikai\ ;
+目方 > mekata\ ;
+凡才 > bonsai\ ;
+凡手 > bonshu\ ;
+光環 > koukan\ ;
+充用 > juuyou\ ;
+輝石 > kiseki\ ;
+魚粉 > gyofun\ ;
+凡戦 > bonsen\ ;
+庸君 > youkun\ ;
+値頃 > negoro\ ;
+凶徒 > kyouto\ ;
+疎通 > sotsuu\ ;
+至近 > shikin\ ;
+幢幡 > douban\ ;
+平屋 > hiraya\ ;
+遅参 > chisan\ ;
+逆子 > sakago\ ;
+白狐 > byakko\ ;
+値鞘 > nezaya\ ;
+出庫 > shukko\ ;
+追尾 > tsuibi\ ;
+刀工 > toukou\ ;
+出府 > shuppu\ ;
+初婚 > shokon\ ;
+出店 > demise\ ;
+内治 > naichi\ ;
+農政 > nousei\ ;
+剛勇 > gouyuu\ ;
+欠勤 > kekkin\ ;
+共演 > kyouen\ ;
+自適 > jiteki\ ;
+凡慮 > bonryo\ ;
+廃刊 > haikan\ ;
+退官 > taikan\ ;
+眼孔 > gankou\ ;
+界面 > kaimen\ ;
+工法 > kouhou\ ;
+遯世 > tonsei\ ;
+平定 > heitei\ ;
+華冑 > kachuu\ ;
+輪番 > rinban\ ;
+干害 > kangai\ ;
+出師 > suishi\ ;
+造型 > zoukei\ ;
+航行 > koukou\ ;
+前名 > zenmei\ ;
+函嶺 > kanrei\ ;
+道元 > dougen\ ;
+癌研 > ganken\ ;
+前号 > zengou\ ;
+判士 > hanshi\ ;
+前史 > zenshi\ ;
+輪生 > rinsei\ ;
+内気 > uchiki\ ;
+傍訓 > boukun\ ;
+眸子 > boushi\ ;
+遅効 > chikou\ ;
+盛暑 > seisho\ ;
+近情 > kinjou\ ;
+廃兵 > haihei\ ;
+免状 > menjou\ ;
+全潰 > zenkai\ ;
+広大 > koudai\ ;
+高論 > kouron\ ;
+帆桁 > hogeta\ ;
+高談 > koudan\ ;
+機業 > kigyou\ ;
+逓増 > teizou\ ;
+幕府 > bakufu\ ;
+席捲 > sekken\ ;
+荷役 > niyaku\ ;
+幻姿 > genshi\ ;
+内殿 > naiden\ ;
+広壮 > kousou\ ;
+傍観 > boukan\ ;
+華僑 > kakyou\ ;
+帝政 > teisei\ ;
+界隈 > kaiwai\ ;
+分封 > bunpou\ ;
+別報 > beppou\ ;
+公準 > koujun\ ;
+傍視 > wakimi\ ;
+前半 > zenpan\ ;
+白煙 > hakuen\ ;
+幽契 > yuukei\ ;
+生鮮 > seisen\ ;
+苔状 > taijou\ ;
+魔笛 > mateki\ ;
+創世 > sousei\ ;
+盆栽 > bonsai\ ;
+高言 > kougen\ ;
+跳馬 > chouba\ ;
+常態 > joutai\ ;
+広場 > hiroba\ ;
+広報 > kouhou\ ;
+山顛 > santen\ ;
+分子 > bunshi\ ;
+自身 > jishin\ ;
+兵法 > heihou\ ;
+停車 > teisha\ ;
+年始 > nenshi\ ;
+高覧 > kouran\ ;
+甘鯛 > amadai\ ;
+近影 > kin''ei\ ;
+広域 > kouiki\ ;
+横溢 > ouitsu\ ;
+冬日 > fuyubi\ ;
+高見 > takami\ ;
+僧綱 > sougou\ ;
+前前 > maemae\ ;
+座卓 > zataku\ ;
+公海 > koukai\ ;
+冠木 > kabuki\ ;
+良縁 > ryouen\ ;
+剛健 > gouken\ ;
+偽証 > gishou\ ;
+過信 > kashin\ ;
+市有 > shiyuu\ ;
+庭前 > teizen\ ;
+優生 > yuusei\ ;
+検車 > kensha\ ;
+店員 > ten''in\ ;
+進化 > shinka\ ;
+樹氷 > juhyou\ ;
+庄園 > shouen\ ;
+自足 > jisoku\ ;
+骨身 > honemi\ ;
+六法 > roppou\ ;
+出家 > shukke\ ;
+干天 > kanten\ ;
+凡庶 > bonsho\ ;
+高裁 > kousai\ ;
+画集 > gashuu\ ;
+公法 > kouhou\ ;
+分娩 > bunben\ ;
+輪状 > rinjou\ ;
+色糸 > iroito\ ;
+画障 > gashou\ ;
+平壌 > heijou\ ;
+山霊 > sanrei\ ;
+写本 > shahon\ ;
+入海 > iriumi\ ;
+蹂躪 > juurin\ ;
+蹂躙 > juurin\ ;
+幕屋 > makuya\ ;
+鬼籍 > kiseki\ ;
+刻印 > kokuin\ ;
+光点 > kouten\ ;
+凡常 > bonjou\ ;
+迷妄 > meimou\ ;
+痛苦 > tsuuku\ ;
+盆景 > bonkei\ ;
+船荷 > funani\ ;
+連吟 > rengin\ ;
+初回 > shokai\ ;
+廃人 > haijin\ ;
+剛体 > goutai\ ;
+車線 > shasen\ ;
+几帳 > kichou\ ;
+全治 > zenchi\ ;
+連名 > renmei\ ;
+連合 > rengou\ ;
+皆済 > kaisai\ ;
+盲想 > mousou\ ;
+刑場 > keijou\ ;
+年報 > nenpou\ ;
+退場 > taijou\ ;
+内検 > naiken\ ;
+再校 > saikou\ ;
+相性 > aishou\ ;
+若湯 > wakayu\ ;
+運休 > unkyuu\ ;
+相思 > soushi\ ;
+公民 > koumin\ ;
+市日 > ichibi\ ;
+花環 > hanawa\ ;
+様相 > yousou\ ;
+華中 > kachuu\ ;
+偸視 > toushi\ ;
+前傾 > zenkei\ ;
+鱈子 > tarako\ ;
+屍骸 > shigai\ ;
+自責 > jiseki\ ;
+分外 > bungai\ ;
+監房 > kanbou\ ;
+布教 > fukyou\ ;
+造反 > zouhan\ ;
+分売 > bunbai\ ;
+凄惨 > seisan\ ;
+盛挙 > seikyo\ ;
+干城 > kanjou\ ;
+軽目 > karume\ ;
+帰心 > kishin\ ;
+茘枝 > reishi\ ;
+相役 > aiyaku\ ;
+市政 > shisei\ ;
+座元 > zamoto\ ;
+再来 > sairai\ ;
+公正 > kousei\ ;
+兼業 > kengou\ ;
+盾座 > tateza\ ;
+冷房 > reibou\ ;
+制動 > seidou\ ;
+艶笑 > enshou\ ;
+相当 > soutou\ ;
+巡検 > junken\ ;
+平坦 > heitan\ ;
+兵権 > heiken\ ;
+冷戦 > reisen\ ;
+百済 > kudara\ ;
+全段 > zendan\ ;
+至論 > shiron\ ;
+船艙 > sensou\ ;
+逝去 > seikyo\ ;
+山間 > yamaai\ ;
+刺刺 > iraira\ ;
+皓歯 > koushi\ ;
+別品 > beppin\ ;
+平均 > heikin\ ;
+山門 > sanmon\ ;
+傭船 > yousen\ ;
+円柱 > enchuu\ ;
+生類 > seirui\ ;
+平地 > heichi\ ;
+連動 > rendou\ ;
+前便 > zenbin\ ;
+至誠 > shisei\ ;
+庸人 > youjin\ ;
+年回 > nenkai\ ;
+退団 > taidan\ ;
+盲従 > moujuu\ ;
+前例 > zenrei\ ;
+冗文 > joubun\ ;
+橋架 > kyouka\ ;
+全欧 > zen''ou\ ;
+軟禁 > nankin\ ;
+速効 > sokkou\ ;
+睾丸 > kougan\ ;
+至言 > shigen\ ;
+巨材 > kyozai\ ;
+光源 > kougen\ ;
+連判 > renpan\ ;
+軒端 > nokiba\ ;
+師弟 > shitei\ ;
+前件 > zenken\ ;
+公権 > kouken\ ;
+屏風 > byoubu\ ;
+相席 > aiseki\ ;
+前代 > zendai\ ;
+生面 > seimen\ ;
+苦汁 > nigari\ ;
+前人 > zenjin\ ;
+切地 > kireji\ ;
+半々 > hanhan\ ;
+遁世 > tonsei\ ;
+至要 > shiyou\ ;
+凶夢 > kyoumu\ ;
+分地 > bunchi\ ;
+看守 > kanshu\ ;
+艶福 > enpuku\ ;
+充満 > juuman\ ;
+若気 > wakage\ ;
+病苦 > byouku\ ;
+全権 > zenken\ ;
+荒廃 > kouhai\ ;
+発泡 > happou\ ;
+産院 > san''in\ ;
+分団 > bundan\ ;
+自註 > jichuu\ ;
+広原 > kougen\ ;
+初号 > shogou\ ;
+席巻 > sekken\ ;
+再敗 > saihai\ ;
+前世 > zensei\ ;
+造兵 > zouhei\ ;
+逸事 > itsuji\ ;
+僻目 > higame\ ;
+傭聘 > youhei\ ;
+鬱積 > usseki\ ;
+巨星 > kyosei\ ;
+刀圭 > toukei\ ;
+冊数 > sassuu\ ;
+幼君 > youkun\ ;
+発汗 > hakkan\ ;
+画鋲 > gabyou\ ;
+出城 > dejiro\ ;
+幼名 > youmei\ ;
+車窓 > shasou\ ;
+小鼻 > kobana\ ;
+内旨 > naishi\ ;
+痛罵 > tsuuba\ ;
+自覚 > jikaku\ ;
+疾苦 > shikku\ ;
+内方 > naihou\ ;
+偽薬 > giyaku\ ;
+病臥 > byouga\ ;
+帽子 > boushi\ ;
+共栄 > kyouei\ ;
+車種 > shashu\ ;
+値遇 > chiguu\ ;
+并呑 > heidon\ ;
+床几 > shougi\ ;
+幾千 > ikusen\ ;
+高著 > koucho\ ;
+農工 > noukou\ ;
+小麦 > komugi\ ;
+検討 > kentou\ ;
+分営 > bun''ei\ ;
+棒鋼 > boukou\ ;
+送呈 > soutei\ ;
+座中 > zachuu\ ;
+内政 > naisei\ ;
+内攻 > naikou\ ;
+并合 > heigou\ ;
+公栽 > kousai\ ;
+修院 > shuuin\ ;
+底値 > sokone\ ;
+帰属 > kizoku\ ;
+工数 > kousuu\ ;
+兵曹 > heisou\ ;
+兵書 > heisho\ ;
+刑名 > keimei\ ;
+軍礼 > gunrei\ ;
+樹木 > jumoku\ ;
+高菜 > takana\ ;
+相対 > soutai\ ;
+連係 > renkei\ ;
+年号 > nengou\ ;
+検視 > kenshi\ ;
+冥想 > meisou\ ;
+花火 > hanabi\ ;
+展開 > tenkai\ ;
+相宿 > aiyado\ ;
+舞舞 > maimai\ ;
+退去 > taikyo\ ;
+全校 > zenkou\ ;
+帯封 > obifuu\ ;
+凍寒 > toukan\ ;
+平原 > heigen\ ;
+県外 > kengai\ ;
+凍害 > tougai\ ;
+山野 > san''ya\ ;
+透写 > tousha\ ;
+制令 > seirei\ ;
+六本 > roppon\ ;
+苦楽 > kuraku\ ;
+帰宅 > kitaku\ ;
+盲射 > mousha\ ;
+疽腫 > soshou\ ;
+横根 > yokone\ ;
+幾分 > ikubun\ ;
+異説 > isetsu\ ;
+魔球 > makyuu\ ;
+凶器 > kyouki\ ;
+初冬 > shotou\ ;
+保革 > hokaku\ ;
+再挙 > saikyo\ ;
+目屎 > mekuso\ ;
+俊馬 > shunme\ ;
+甲鈑 > kouban\ ;
+八本 > happon\ ;
+公有 > kouyuu\ ;
+偏見 > henken\ ;
+府中 > fuchuu\ ;
+目尻 > mejiri\ ;
+其方 > sonata\ ;
+盛年 > seinen\ ;
+小鴨 > kogamo\ ;
+再拝 > saihai\ ;
+退勢 > taisei\ ;
+返報 > henpou\ ;
+連亘 > renkou\ ;
+幽冥 > yuumei\ ;
+載炭 > saitan\ ;
+内探 > naitan\ ;
+権柄 > kenpei\ ;
+小鳥 > kotori\ ;
+年功 > nenkou\ ;
+田野 > den''ya\ ;
+兵数 > heisuu\ ;
+盪尽 > toujin\ ;
+眼前 > ganzen\ ;
+全書 > zensho\ ;
+艦砲 > kanpou\ ;
+店主 > tenshu\ ;
+転生 > tensei\ ;
+足駄 > ashida\ ;
+八景 > hakkei\ ;
+登楼 > tourou\ ;
+保障 > hoshou\ ;
+目安 > meyasu\ ;
+内挿 > naisou\ ;
+概算 > gaisan\ ;
+分厘 > bunrin\ ;
+追加 > tsuika\ ;
+横木 > yokogi\ ;
+優渥 > yuuaku\ ;
+再戦 > saisen\ ;
+帆影 > hokage\ ;
+年初 > nensho\ ;
+腰間 > youkan\ ;
+草屋 > souoku\ ;
+公明 > koumei\ ;
+年刊 > nenkan\ ;
+年分 > nenbun\ ;
+全智 > zenchi\ ;
+逆児 > sakago\ ;
+全景 > zenkei\ ;
+幕営 > bakuei\ ;
+小鰭 > kohada\ ;
+別使 > besshi\ ;
+平分 > heibun\ ;
+相姦 > soukan\ ;
+六方 > roppou\ ;
+判例 > hanrei\ ;
+平凡 > heibon\ ;
+瘋癲 > fuuten\ ;
+幻像 > genzou\ ;
+八方 > happou\ ;
+追分 > oiwake\ ;
+鰥夫 > yamome\ ;
+用金 > youkin\ ;
+魔物 > mamono\ ;
+公文 > koubun\ ;
+眼光 > gankou\ ;
+茶巾 > chakin\ ;
+相好 > sougou\ ;
+刑典 > keiten\ ;
+近在 > kinzai\ ;
+別件 > bekken\ ;
+逓伝 > teiden\ ;
+山辺 > yamabe\ ;
+内所 > naisho\ ;
+略記 > ryakki\ ;
+巧手 > koushu\ ;
+内戦 > naisen\ ;
+真味 > shinmi\ ;
+身空 > misora\ ;
+近因 > kin''in\ ;
+草子 > soushi\ ;
+芋版 > imoban\ ;
+全文 > zenbun\ ;
+巡拝 > junpai\ ;
+産金 > sankin\ ;
+登校 > toukou\ ;
+全数 > zensuu\ ;
+監守 > kanshu\ ;
+工手 > koushu\ ;
+工房 > koubou\ ;
+全敗 > zenpai\ ;
+真否 > shinpi\ ;
+若木 > wakagi\ ;
+列候 > rekkou\ ;
+追儺 > tsuina\ ;
+冷害 > reigai\ ;
+床上 > yukaue\ ;
+偽膜 > gimaku\ ;
+帆布 > honuno\ ;
+凝固 > gyouko\ ;
+途中 > tochuu\ ;
+内憂 > naiyuu\ ;
+俗間 > zokkan\ ;
+促音 > sokuon\ ;
+小骨 > kobone\ ;
+幽体 > yuutai\ ;
+典拠 > tenkyo\ ;
+登板 > touban\ ;
+初代 > shodai\ ;
+刀剣 > touken\ ;
+帳場 > chouba\ ;
+幕吏 > bakuri\ ;
+魚灯 > gyotou\ ;
+膚身 > hadami\ ;
+癖毛 > kusege\ ;
+幸便 > koubin\ ;
+僭王 > sen''ou\ ;
+幣制 > heisei\ ;
+再思 > saishi\ ;
+県営 > ken''ei\ ;
+鮮明 > senmei\ ;
+荒天 > kouten\ ;
+生酒 > kizake\ ;
+分党 > buntou\ ;
+年俸 > nenpou\ ;
+分光 > bunkou\ ;
+刀刃 > toujin\ ;
+幾人 > ikunin\ ;
+脳髄 > nouzui\ ;
+驥足 > kisoku\ ;
+内情 > naijou\ ;
+真北 > makita\ ;
+巨悪 > kyoaku\ ;
+内患 > naikan\ ;
+荊妻 > keisai\ ;
+全損 > zenson\ ;
+刃先 > hasaki\ ;
+山路 > yamaji\ ;
+再征 > saisei\ ;
+駿馬 > shunme\ ;
+産道 > sandou\ ;
+帯域 > taiiki\ ;
+希少 > kishou\ ;
+船窓 > sensou\ ;
+返品 > henpin\ ;
+小首 > kokubi\ ;
+年余 > nen''yo\ ;
+甘酸 > kansan\ ;
+生還 > seikan\ ;
+舷窓 > gensou\ ;
+騒霊 > sourei\ ;
+幅員 > fukuin\ ;
+光来 > kourai\ ;
+至芸 > shigei\ ;
+年会 > nenkai\ ;
+退会 > taikai\ ;
+寡黙 > kamoku\ ;
+刃傷 > ninjou\ ;
+再建 > saikon\ ;
+極秘 > gokuhi\ ;
+逃亡 > toubou\ ;
+退任 > tainin\ ;
+円心 > enshin\ ;
+年令 > nenrei\ ;
+年代 > nendai\ ;
+傍線 > bousen\ ;
+標旗 > hyouki\ ;
+省営 > shouei\ ;
+帰国 > kikoku\ ;
+着丈 > kitake\ ;
+農場 > noujou\ ;
+軽減 > keigen\ ;
+骨董 > kottou\ ;
+荒城 > koujou\ ;
+践踏 > sentou\ ;
+荘園 > shouen\ ;
+療治 > ryouji\ ;
+辺地 > henchi\ ;
+駝鳥 > dachou\ ;
+内径 > naikei\ ;
+腹部 > fukubu\ ;
+出先 > desaki\ ;
+元来 > ganrai\ ;
+真冬 > mafuyu\ ;
+輪栽 > rinsai\ ;
+巨弾 > kyodan\ ;
+元本 > genpon\ ;
+光景 > koukei\ ;
+凶具 > kyougu\ ;
+自若 > jijaku\ ;
+年中 > nenjuu\ ;
+看取 > kanshu\ ;
+発散 > hassan\ ;
+師団 > shidan\ ;
+駱駝 > rakuda\ ;
+内廷 > naitei\ ;
+傍系 > boukei\ ;
+分体 > buntai\ ;
+迎合 > geigou\ ;
+毎々 > maimai\ ;
+修造 > shuzou\ ;
+登攀 > touhan\ ;
+草堂 > soudou\ ;
+干与 > kan''yo\ ;
+分会 > bunkai\ ;
+髀肉 > hiniku\ ;
+機屋 > hataya\ ;
+内庭 > naitei\ ;
+農地 > nouchi\ ;
+公憤 > koufun\ ;
+盛大 > seidai\ ;
+航空 > koukuu\ ;
+市子 > ichiko\ ;
+尊顔 > songan\ ;
+軍犬 > genken\ ;
+先方 > senpou\ ;
+修辞 > shuuji\ ;
+生身 > namami\ ;
+横手 > yokote\ ;
+停船 > teisen\ ;
+県勢 > kensei\ ;
+六感 > rokkan\ ;
+真偽 > shingi\ ;
+航程 > koutei\ ;
+分乗 > bunjou\ ;
+草地 > souchi\ ;
+元旦 > gantan\ ;
+先攻 > senkou\ ;
+処刑 > shokei\ ;
+画調 > gachou\ ;
+冗官 > joukan\ ;
+処分 > shobun\ ;
+軽水 > keisui\ ;
+自腹 > jibara\ ;
+真個 > shinko\ ;
+価額 > kagaku\ ;
+分与 > bun''yo\ ;
+較正 > kousei\ ;
+処処 > shosho\ ;
+芒洋 > bouyou\ ;
+小雪 > koyuki\ ;
+小雨 > kosame\ ;
+巡幸 > junkou\ ;
+導電 > douden\ ;
+兵役 > heieki\ ;
+小雀 > kogara\ ;
+真価 > shinka\ ;
+近刊 > kinkan\ ;
+函人 > kanjin\ ;
+盗塁 > tourui\ ;
+兼帯 > kentai\ ;
+苦手 > nigate\ ;
+対顔 > taigan\ ;
+若手 > wakate\ ;
+巨峰 > kyohou\ ;
+冬場 > fuyuba\ ;
+催眠 > saimin\ ;
+優柔 > yuujuu\ ;
+芸林 > geirin\ ;
+軒灯 > kentou\ ;
+相反 > souhan\ ;
+巨岩 > kyogan\ ;
+帯同 > taidou\ ;
+常勤 > joukin\ ;
+荘司 > shouji\ ;
+公役 > koueki\ ;
+全快 > zenkai\ ;
+内層 > naisou\ ;
+高等 > koutou\ ;
+凍原 > tougen\ ;
+楽界 > gakkai\ ;
+花柳 > karyuu\ ;
+花柱 > kachuu\ ;
+荘厳 > sougon\ ;
+出世 > shusse\ ;
+凶事 > kyouji\ ;
+市外 > shigai\ ;
+痘瘡 > tousou\ ;
+凄味 > sugomi\ ;
+自習 > jishuu\ ;
+凡僧 > bonsou\ ;
+対面 > taimen\ ;
+番茶 > bancha\ ;
+冊子 > soushi\ ;
+異色 > ishoku\ ;
+師友 > shiyuu\ ;
+痘痕 > toukon\ ;
+円寂 > enjaku\ ;
+全形 > zenkei\ ;
+段々 > dandan\ ;
+州崎 > susaki\ ;
+近傍 > kinbou\ ;
+入御 > nyuugo\ ;
+内容 > naiyou\ ;
+内宮 > naiguu\ ;
+公庭 > koutei\ ;
+内定 > naitei\ ;
+市塵 > shijin\ ;
+践言 > sengen\ ;
+芳書 > housho\ ;
+用談 > youdan\ ;
+花木 > kaboku\ ;
+荒原 > kougen\ ;
+公平 > kouhei\ ;
+内孫 > naison\ ;
+市場 > shijou\ ;
+男装 > dansou\ ;
+保身 > hoshin\ ;
+発憤 > happun\ ;
+再婚 > saikon\ ;
+舌端 > zettan\ ;
+全廃 > zenpai\ ;
+先投 > sentou\ ;
+偕老 > kairou\ ;
+全店 > zenten\ ;
+盲動 > moudou\ ;
+対陣 > taijin\ ;
+例題 > reidai\ ;
+帯剣 > taiken\ ;
+帝命 > teimei\ ;
+軟泥 > nandei\ ;
+茅屋 > bouoku\ ;
+入庫 > nyuuko\ ;
+用言 > yougen\ ;
+発意 > hatsui\ ;
+入府 > nyuufu\ ;
+芸文 > geibun\ ;
+凡例 > hanrei\ ;
+専門 > senmon\ ;
+発想 > hassou\ ;
+帯刀 > taitou\ ;
+近体 > kintai\ ;
+苦心 > kushin\ ;
+檀君 > dankun\ ;
+兼官 > kenkan\ ;
+全市 > zenshi\ ;
+尖鋭 > sen''ei\ ;
+全巻 > zenkan\ ;
+尿路 > nyouro\ ;
+県会 > kenkai\ ;
+盤台 > bandai\ ;
+布地 > nunoji\ ;
+至純 > shijun\ ;
+草原 > sougen\ ;
+自縛 > jibaku\ ;
+梅酒 > umeshu\ ;
+元手 > motode\ ;
+県令 > kenrei\ ;
+寝首 > nekubi\ ;
+生誕 > seitan\ ;
+俳諧 > haikai\ ;
+軟水 > nansui\ ;
+近代 > kindai\ ;
+県人 > kenjin\ ;
+盆地 > bonchi\ ;
+再変 > saihen\ ;
+偽称 > gishou\ ;
+軍港 > gunkou\ ;
+党弊 > touhei\ ;
+処世 > shosei\ ;
+冷厳 > reigen\ ;
+臭素 > shuuso\ ;
+内妻 > naisai\ ;
+茄子 > nasubi\ ;
+盟友 > meiyuu\ ;
+盗品 > touhin\ ;
+生計 > seikei\ ;
+舗石 > hoseki\ ;
+自給 > jikyuu\ ;
+返上 > henjou\ ;
+魚梯 > gyotei\ ;
+盛名 > seimei\ ;
+全島 > zentou\ ;
+赭顔 > shagan\ ;
+共寝 > tomone\ ;
+小銭 > kozeni\ ;
+皇帝 > koutei\ ;
+内奏 > naisou\ ;
+近世 > kinsei\ ;
+臨終 > rinjuu\ ;
+常例 > jourei\ ;
+草創 > sousou\ ;
+全岸 > zengan\ ;
+巨大 > kyodai\ ;
+辛味 > karami\ ;
+内外 > naigai\ ;
+若干 > jakkan\ ;
+屍諌 > shikan\ ;
+目先 > mesaki\ ;
+師僧 > shisou\ ;
+常体 > joutai\ ;
+目元 > memoto\ ;
+常住 > joujuu\ ;
+全山 > zenzan\ ;
+農兵 > nouhei\ ;
+傍目 > hatame\ ;
+展観 > tenkan\ ;
+展覧 > tenran\ ;
+甘言 > kangen\ ;
+常会 > joukai\ ;
+工大 > koudai\ ;
+公害 > kougai\ ;
+帥先 > sossen\ ;
+常任 > jounin\ ;
+俯角 > fukaku\ ;
+若布 > wakame\ ;
+帝制 > teisei\ ;
+痴漢 > chikan\ ;
+公定 > koutei\ ;
+軍法 > gunpou\ ;
+小金 > kogane\ ;
+登庸 > touyou\ ;
+全射 > zensha\ ;
+荊冠 > keikan\ ;
+冷剛 > reigou\ ;
+常人 > joujin\ ;
+魚板 > gyoban\ ;
+崩潰 > houkai\ ;
+公子 > koushi\ ;
+僧正 > soujou\ ;
+桑門 > soumon\ ;
+内報 > naihou\ ;
+允恭 > inkyou\ ;
+光彩 > kousai\ ;
+軸木 > jikugi\ ;
+兇徒 > kyouto\ ;
+相伝 > souden\ ;
+足蹴 > ashige\ ;
+帝冠 > teikan\ ;
+併音 > pin''in\ ;
+高目 > takame\ ;
+円域 > en''iki\ ;
+寒風 > kanpuu\ ;
+駅頭 > ekitou\ ;
+傾瀉 > keisha\ ;
+冷凍 > reitou\ ;
+軍民 > gunmin\ ;
+骨粉 > koppun\ ;
+病理 > byouri\ ;
+帰休 > kikyuu\ ;
+帰伏 > kifuku\ ;
+常世 > tokoyo\ ;
+傲然 > gouzen\ ;
+膵臓 > suizou\ ;
+其奴 > soitsu\ ;
+充当 > juutou\ ;
+修補 > shuuho\ ;
+布告 > fukoku\ ;
+皇居 > koukyo\ ;
+舎監 > shakan\ ;
+疱瘡 > housou\ ;
+権官 > kenkan\ ;
+儒教 > jukyou\ ;
+帰京 > kikyou\ ;
+俗議 > zokugi\ ;
+冷光 > reikou\ ;
+相乗 > soujou\ ;
+寝際 > negiwa\ ;
+師伝 > shiden\ ;
+内地 > naichi\ ;
+光年 > kounen\ ;
+的屋 > tekiya\ ;
+益友 > ekiyuu\ ;
+内在 > naizai\ ;
+兵変 > heihen\ ;
+山葵 > wasabi\ ;
+小過 > shouka\ ;
+兵士 > heishi\ ;
+偵知 > teichi\ ;
+疫癘 > ekirei\ ;
+盲人 > moujin\ ;
+皇宮 > kouguu\ ;
+能面 > noumen\ ;
+盛典 > seiten\ ;
+保証 > hoshou\ ;
+検算 > kenzan\ ;
+皇宗 > kousou\ ;
+先師 > senshi\ ;
+先帝 > sentei\ ;
+根雪 > neyuki\ ;
+茅場 > kayaba\ ;
+帰一 > kiitsu\ ;
+皇孫 > kouson\ ;
+侮辱 > bujoku\ ;
+番線 > bansen\ ;
+農会 > noukai\ ;
+俗語 > zokugo\ ;
+目今 > mokkon\ ;
+冥加 > myouga\ ;
+臥竜 > garyou\ ;
+直下 > chokka\ ;
+尸諌 > shikan\ ;
+山菜 > sansai\ ;
+転校 > tenkou\ ;
+輪形 > rinkei\ ;
+俗話 > zokuwa\ ;
+疥癬 > kaisen\ ;
+船灯 > sentou\ ;
+自称 > jishou\ ;
+苦学 > kugaku\ ;
+元帥 > gensui\ ;
+草体 > soutai\ ;
+白寿 > hakuju\ ;
+冥利 > myouri\ ;
+市勢 > shisei\ ;
+体験 > taiken\ ;
+発展 > hatten\ ;
+巡回 > junkai\ ;
+構文 > koubun\ ;
+舷灯 > gentou\ ;
+輪廻 > rin''ne\ ;
+典型 > tenkei\ ;
+山荘 > sansou\ ;
+公売 > koubai\ ;
+馨香 > keikou\ ;
+脱退 > dattai\ ;
+俗解 > zokkai\ ;
+背鰭 > sebire\ ;
+発射 > hassha\ ;
+僚機 > ryouki\ ;
+全天 > zenten\ ;
+校風 > koufuu\ ;
+赤門 > akamon\ ;
+冥冥 > meimei\ ;
+屍蝋 > shirou\ ;
+畝織 > uneori\ ;
+俗見 > zokken\ ;
+倉荷 > kurani\ ;
+芳情 > houjou\ ;
+市制 > shisei\ ;
+首魁 > shukai\ ;
+入夫 > nyuufu\ ;
+全壊 > zenkai\ ;
+生薑 > shouga\ ;
+公報 > kouhou\ ;
+優性 > yuusei\ ;
+兵団 > heidan\ ;
+対遇 > taiguu\ ;
+生蕃 > seiban\ ;
+供進 > gushin\ ;
+免官 > menkan\ ;
+桟道 > sandou\ ;
+先導 > sendou\ ;
+市内 > shinai\ ;
+小路 > shouji\ ;
+軽挙 > keikyo\ ;
+良案 > ryouan\ ;
+容顔 > yougan\ ;
+兼営 > ken''ei\ ;
+円味 > marumi\ ;
+盛会 > seikai\ ;
+円周 > enshuu\ ;
+芸当 > geitou\ ;
+優待 > yuutai\ ;
+甘薯 > kansho\ ;
+内命 > naimei\ ;
+車検 > shaken\ ;
+芳志 > houshi\ ;
+小足 > koashi\ ;
+皇天 > kouten\ ;
+対辺 > taihen\ ;
+超過 > chouka\ ;
+盛代 > seidai\ ;
+苗字 > myouji\ ;
+背骨 > sebone\ ;
+内含 > naigan\ ;
+馬革 > bakaku\ ;
+盟主 > meishu\ ;
+内向 > naikou\ ;
+光子 > koushi\ ;
+香香 > koukou\ ;
+内合 > naigou\ ;
+船渠 > senkyo\ ;
+甘蔗 > kansho\ ;
+巨口 > kyokou\ ;
+公団 > koudan\ ;
+再勤 > saikin\ ;
+市債 > shisai\ ;
+岩穴 > iwaana\ ;
+元寇 > genkou\ ;
+余震 > yoshin\ ;
+全地 > zenchi\ ;
+畏縮 > ishuku\ ;
+冕冠 > benkan\ ;
+茶会 > chakai\ ;
+瑶顔 > yougan\ ;
+低頭 > teitou\ ;
+円卓 > entaku\ ;
+密閉 > mippei\ ;
+山背 > yamase\ ;
+様態 > youtai\ ;
+茶代 > chadai\ ;
+体面 > taimen\ ;
+催涙 > sairui\ ;
+背馳 > haichi\ ;
+共営 > kyouei\ ;
+脱走 > dassou\ ;
+百夜 > momoyo\ ;
+苦境 > kukyou\ ;
+写像 > shazou\ ;
+実験 > jikken\ ;
+入園 > nyuuen\ ;
+茶人 > chajin\ ;
+苦塩 > nigari\ ;
+発奮 > happun\ ;
+英国 > eikoku\ ;
+内包 > naihou\ ;
+再刊 > saikan\ ;
+用船 > yousen\ ;
+高燥 > kousou\ ;
+内勤 > naikin\ ;
+花床 > kashou\ ;
+肺魚 > haigyo\ ;
+自白 > jihaku\ ;
+家集 > kashuu\ ;
+軍曹 > gunsou\ ;
+軍書 > gunsho\ ;
+傍点 > bouten\ ;
+便覧 > benran\ ;
+発声 > hassei\ ;
+登壇 > toudan\ ;
+構成 > kousei\ ;
+検眼 > kengan\ ;
+再再 > saisai\ ;
+倒置 > touchi\ ;
+校門 > koumon\ ;
+首題 > shudai\ ;
+内剛 > naigou\ ;
+軒昂 > kenkou\ ;
+先妻 > sensai\ ;
+川原 > kawara\ ;
+市会 > shikai\ ;
+骨相 > kossou\ ;
+転換 > tenkan\ ;
+共和 > kyouwa\ ;
+甘草 > kanzou\ ;
+内分 > naibun\ ;
+甘茶 > amacha\ ;
+登場 > toujou\ ;
+寝酒 > nezake\ ;
+兄姉 > keishi\ ;
+正々 > seisei\ ;
+市人 > shijin\ ;
+兄妹 > keimai\ ;
+入営 > nyuuei\ ;
+兼勤 > kenkin\ ;
+元始 > genshi\ ;
+膏肓 > koukou\ ;
+高点 > kouten\ ;
+軒数 > kensuu\ ;
+先天 > senten\ ;
+先夜 > sen''ya\ ;
+市井 > shisei\ ;
+円内 > en''nai\ ;
+内内 > nainai\ ;
+軍旅 > gunryo\ ;
+内典 > naiten\ ;
+軽快 > keikai\ ;
+航海 > koukai\ ;
+構想 > kousou\ ;
+家長 > kachou\ ;
+全員 > zen''in\ ;
+臨界 > rinkai\ ;
+高瀬 > takase\ ;
+全品 > zenpin\ ;
+検痰 > kentan\ ;
+入唐 > nittou\ ;
+市上 > shijou\ ;
+小話 > shouwa\ ;
+皇嗣 > koushi\ ;
+工兵 > kouhei\ ;
+背革 > segawa\ ;
+巨億 > kyooku\ ;
+背面 > haimen\ ;
+軍政 > gunsei\ ;
+債権 > saiken\ ;
+先塔 > sentou\ ;
+公司 > koushi\ ;
+輪姦 > rinkan\ ;
+航法 > kouhou\ ;
+巨像 > kyozou\ ;
+疑獄 > gigoku\ ;
+小言 > kogoto\ ;
+内債 > naisai\ ;
+検番 > kenban\ ;
+充填 > juuten\ ;
+層群 > sougun\ ;
+花屋 > hanaya\ ;
+軟投 > nantou\ ;
+内偵 > naitei\ ;
+全史 > zenshi\ ;
+転戦 > tensen\ ;
+偶然 > guuzen\ ;
+生育 > seiiku\ ;
+膀胱 > boukou\ ;
+転成 > tensei\ ;
+兵制 > heisei\ ;
+岩盤 > ganban\ ;
+魔性 > mashou\ ;
+共助 > kyoujo\ ;
+較差 > kakusa\ ;
+棒線 > bousen\ ;
+八十 > yasoji\ ;
+兵刃 > heijin\ ;
+再会 > saikai\ ;
+花客 > kakaku\ ;
+花実 > hanami\ ;
+苗圃 > byouho\ ;
+再任 > sainin\ ;
+余録 > yoroku\ ;
+病気 > byouki\ ;
+胸部 > kyoubu\ ;
+駅逓 > ekitei\ ;
+先在 > senzai\ ;
+実際 > jissai\ ;
+生者 > shouja\ ;
+由緒 > yuisho\ ;
+俳聖 > haisei\ ;
+山系 > sankei\ ;
+男系 > dankei\ ;
+佳辰 > kashin\ ;
+対論 > tairon\ ;
+権原 > kengen\ ;
+寮費 > ryouhi\ ;
+対談 > taidan\ ;
+身柄 > migara\ ;
+倫社 > rinsha\ ;
+巨体 > kyotai\ ;
+内住 > naijuu\ ;
+皇后 > kougou\ ;
+小袖 > kosode\ ;
+対語 > tsuigo\ ;
+能辯 > nouben\ ;
+苦味 > nigami\ ;
+僧房 > soubou\ ;
+公判 > kouhan\ ;
+魅惑 > miwaku\ ;
+公刊 > koukan\ ;
+再三 > saisan\ ;
+兇器 > kyouki\ ;
+島民 > toumin\ ;
+権勢 > kensei\ ;
+巨人 > kyojin\ ;
+内争 > naisou\ ;
+将補 > shouho\ ;
+内乱 > nairan\ ;
+兎唇 > toshin\ ;
+兼併 > kenpei\ ;
+工人 > koujin\ ;
+芸大 > geidai\ ;
+公党 > koutou\ ;
+自爆 > jibaku\ ;
+舷梯 > gentei\ ;
+脱衣 > datsui\ ;
+円丘 > enkyuu\ ;
+会館 > kaikan\ ;
+芝居 > shibai\ ;
+軟性 > nansei\ ;
+皆勤 > kaikin\ ;
+巨万 > kyoman\ ;
+軍扇 > gunsen\ ;
+査閲 > saetsu\ ;
+寸言 > sungen\ ;
+密送 > missou\ ;
+輪回 > rin''ne\ ;
+用紙 > youshi\ ;
+寄進 > kishin\ ;
+痔核 > jikaku\ ;
+全免 > zenmen\ ;
+発向 > hakkou\ ;
+体重 > taijuu\ ;
+公債 > kousai\ ;
+党勢 > tousei\ ;
+棄約 > kiyaku\ ;
+侍読 > jidoku\ ;
+骨牌 > karuta\ ;
+側溝 > sokkou\ ;
+審議 > shingi\ ;
+骨片 > koppen\ ;
+傾斜 > keisha\ ;
+儒学 > jugaku\ ;
+自然 > shizen\ ;
+専行 > senkou\ ;
+赤赤 > akaaka\ ;
+色悪 > iroaku\ ;
+苦力 > kuurii\ ;
+身方 > mikata\ ;
+楷書 > kaisho\ ;
+宝鑑 > houkan\ ;
+会頭 > kaitou\ ;
+信者 > shinja\ ;
+起請 > kishou\ ;
+膿瘍 > nouyou\ ;
+概数 > gaisuu\ ;
+芸域 > geiiki\ ;
+小虎 > kodora\ ;
+色恋 > irokoi\ ;
+肺門 > haimon\ ;
+兵仗 > heijou\ ;
+家郷 > kakyou\ ;
+畢生 > hissei\ ;
+信義 > shingi\ ;
+岳父 > gakufu\ ;
+高段 > koudan\ ;
+生紙 > kigami\ ;
+膿疱 > nouhou\ ;
+例言 > reigen\ ;
+皇典 > kouten\ ;
+先君 > senkun\ ;
+佳賞 > kashou\ ;
+公侯 > koukou\ ;
+赤貝 > akagai\ ;
+例解 > reikai\ ;
+皆兵 > kaihei\ ;
+軍情 > gunjou\ ;
+高歯 > takaba\ ;
+兵乱 > heiran\ ;
+何遍 > nanben\ ;
+公使 > koushi\ ;
+先取 > senshu\ ;
+発勁 > hakkei\ ;
+駄賃 > dachin\ ;
+発効 > hakkou\ ;
+尾翼 > biyoku\ ;
+髄液 > zuieki\ ;
+封蝋 > fuurou\ ;
+党内 > tounai\ ;
+用箋 > yousen\ ;
+公住 > koujuu\ ;
+全便 > zenbin\ ;
+生粋 > kissui\ ;
+甲種 > koushu\ ;
+俗耳 > zokuji\ ;
+高欄 > kouran\ ;
+桿菌 > kankin\ ;
+公会 > koukai\ ;
+舞楽 > bugaku\ ;
+宴遊 > en''yuu\ ;
+元号 > gengou\ ;
+骨炭 > kottan\ ;
+発券 > hakken\ ;
+側泳 > sobaei\ ;
+英俊 > eishun\ ;
+異物 > ibutsu\ ;
+全体 > zentai\ ;
+環視 > kanshi\ ;
+脱藩 > dappan\ ;
+発刊 > hakkan\ ;
+公人 > koujin\ ;
+儀宸 > gishin\ ;
+係船 > keisen\ ;
+柔順 > juujun\ ;
+全会 > zenkai\ ;
+番犬 > banken\ ;
+馬身 > bashin\ ;
+白光 > hakkou\ ;
+痙攣 > keiren\ ;
+低迷 > teimei\ ;
+芯地 > shinji\ ;
+便船 > binsen\ ;
+全人 > zenjin\ ;
+腎臓 > jinzou\ ;
+馳走 > chisou\ ;
+発光 > hakkou\ ;
+元勲 > genkun\ ;
+腋臭 > wakiga\ ;
+停滞 > teitai\ ;
+先制 > sensei\ ;
+香道 > koudou\ ;
+英京 > eikyou\ ;
+痴態 > chitai\ ;
+山砦 > sansai\ ;
+寝言 > negoto\ ;
+佳調 > kachou\ ;
+高楼 > kourou\ ;
+転居 > tenkyo\ ;
+偉烈 > iretsu\ ;
+光冠 > koukan\ ;
+魯国 > rokoku\ ;
+脇見 > wakimi\ ;
+充分 > juubun\ ;
+模作 > mosaku\ ;
+皆伝 > kaiden\ ;
+痴情 > chijou\ ;
+孝養 > kouyou\ ;
+臨港 > rinkou\ ;
+崇敬 > suukei\ ;
+転寝 > gorone\ ;
+腐肉 > funiku\ ;
+官金 > kankin\ ;
+輸入 > yunyuu\ ;
+先兵 > senpei\ ;
+軍帽 > gunbou\ ;
+兇具 > kyougu\ ;
+俗縁 > zokuen\ ;
+軍師 > gunshi\ ;
+腹筋 > fukkin\ ;
+自涜 > jitoku\ ;
+膚着 > hadagi\ ;
+走行 > soukou\ ;
+容赦 > yousha\ ;
+尿素 > nyouso\ ;
+栄進 > eishin\ ;
+構外 > kougai\ ;
+楓林 > fuurin\ ;
+党人 > toujin\ ;
+臨海 > rinkai\ ;
+余賊 > yozoku\ ;
+検温 > ken''on\ ;
+寓言 > guugen\ ;
+党争 > tousou\ ;
+遅々 > chichi\ ;
+首輪 > kubiwa\ ;
+芸名 > geimei\ ;
+健気 > kenage\ ;
+高校 > koukou\ ;
+孝順 > koujun\ ;
+肛門 > koumon\ ;
+自注 > jichuu\ ;
+栄辱 > eijoku\ ;
+官邸 > kantei\ ;
+赤裸 > sekira\ ;
+致死 > chishi\ ;
+小船 > kobune\ ;
+伍長 > gochou\ ;
+艶容 > en''you\ ;
+屈筋 > kukkin\ ;
+容貌 > youbou\ ;
+小舟 > kobune\ ;
+発会 > hakkai\ ;
+自沈 > jichin\ ;
+官選 > kansen\ ;
+痛打 > tsuuda\ ;
+臭気 > shuuki\ ;
+家賃 > yachin\ ;
+登仙 > tousen\ ;
+芳名 > houmei\ ;
+学院 > gakuin\ ;
+魔境 > makyou\ ;
+舌根 > zekkon\ ;
+倉皇 > soukou\ ;
+崩御 > hougyo\ ;
+体貌 > taibou\ ;
+饅頭 > manjuu\ ;
+作譜 > sakufu\ ;
+併行 > heikou\ ;
+先便 > senbin\ ;
+小膝 > kohiza\ ;
+前々 > maemae\ ;
+岬湾 > kouwan\ ;
+倒産 > tousan\ ;
+小腹 > kobara\ ;
+先例 > senrei\ ;
+元値 > motone\ ;
+低資 > teishi\ ;
+骨法 > koppou\ ;
+生硬 > seikou\ ;
+良家 > ryouke\ ;
+光体 > koutai\ ;
+官辺 > kanpen\ ;
+苟且 > kousho\ ;
+層相 > sousou\ ;
+実車 > jissha\ ;
+先住 > senjuu\ ;
+密計 > mikkei\ ;
+優勢 > yuusei\ ;
+傲慢 > gouman\ ;
+介鱗 > kairin\ ;
+胸裏 > kyouri\ ;
+小脇 > kowaki\ ;
+寄託 > kitaku\ ;
+崇拝 > suuhai\ ;
+概念 > gainen\ ;
+用益 > youeki\ ;
+屯田 > tonden\ ;
+膾炙 > kaisha\ ;
+癸丑 > kichuu\ ;
+先代 > sendai\ ;
+駘蕩 > taitou\ ;
+停止 > teishi\ ;
+小股 > komata\ ;
+先人 > senjin\ ;
+転変 > tenpen\ ;
+転売 > tenbai\ ;
+側根 > sokkon\ ;
+完遂 > kansui\ ;
+実践 > jissen\ ;
+官軍 > kangun\ ;
+背走 > haisou\ ;
+身形 > minari\ ;
+校訓 > koukun\ ;
+小耳 > komimi\ ;
+聴音 > chouon\ ;
+校訂 > koutei\ ;
+興替 > koutai\ ;
+容認 > younin\ ;
+脱脂 > dasshi\ ;
+先主 > senshu\ ;
+会釈 > eshaku\ ;
+孔雀 > kujaku\ ;
+検死 > kenshi\ ;
+小者 > komono\ ;
+代願 > daigan\ ;
+養鶏 > youkei\ ;
+係累 > keirui\ ;
+肝銘 > kanmei\ ;
+体認 > tainin\ ;
+余角 > yokaku\ ;
+脱肛 > dakkou\ ;
+寝藁 > newara\ ;
+優先 > yuusen\ ;
+賽銭 > saisen\ ;
+偶有 > guuyuu\ ;
+密行 > mikkou\ ;
+元三 > ganzan\ ;
+膠状 > koujou\ ;
+体言 > taigen\ ;
+健棒 > kenbou\ ;
+刺々 > iraira\ ;
+身幅 > mihaba\ ;
+仲間 > nakama\ ;
+伝道 > dendou\ ;
+伴走 > bansou\ ;
+身巾 > mihaba\ ;
+孔門 > koumon\ ;
+転地 > tenchi\ ;
+良夜 > ryouya\ ;
+体要 > taiyou\ ;
+伝送 > densou\ ;
+贋造 > ganzou\ ;
+鮎並 > ainame\ ;
+船影 > sen''ei\ ;
+興敗 > kouhai\ ;
+転回 > tenkai\ ;
+臨検 > rinken\ ;
+対聯 > tairen\ ;
+癈兵 > haihei\ ;
+首謀 > shubou\ ;
+僕婢 > bokuhi\ ;
+棒状 > boujou\ ;
+高揚 > kouyou\ ;
+他領 > taryou\ ;
+聯隊 > rentai\ ;
+寸胴 > zundou\ ;
+僧堂 > soudou\ ;
+侍臣 > jishin\ ;
+験算 > kenzan\ ;
+生産 > seisan\ ;
+生生 > seisei\ ;
+人魚 > ningyo\ ;
+体裁 > teisai\ ;
+軍士 > gunshi\ ;
+便管 > benkan\ ;
+偶数 > guusuu\ ;
+便箋 > binsen\ ;
+養魚 > yougyo\ ;
+導線 > dousen\ ;
+聖餐 > seisan\ ;
+完走 > kansou\ ;
+伉配 > kouhai\ ;
+馬蝿 > umabae\ ;
+花信 > kashin\ ;
+宣誓 > sensei\ ;
+令閨 > reikei\ ;
+僧坊 > soubou\ ;
+対置 > taichi\ ;
+駐英 > chuuei\ ;
+肩身 > katami\ ;
+今風 > imafuu\ ;
+這々 > houhou\ ;
+芸人 > geinin\ ;
+柔道 > juudou\ ;
+層状 > soujou\ ;
+脱線 > dassen\ ;
+根菜 > konsai\ ;
+宣言 > sengen\ ;
+胡蝶 > kochou\ ;
+小糠 > konuka\ ;
+検案 > ken''an\ ;
+枝隊 > shitai\ ;
+定論 > teiron\ ;
+楽屋 > gakuya\ ;
+高所 > kousho\ ;
+病後 > byougo\ ;
+膿汁 > noujuu\ ;
+傲岸 > gougan\ ;
+小米 > kogome\ ;
+学部 > gakubu\ ;
+臨書 > rinsho\ ;
+査読 > sadoku\ ;
+腫瘍 > shuyou\ ;
+楽寝 > rakune\ ;
+封緘 > fuukan\ ;
+根茎 > konkei\ ;
+膨満 > bouman\ ;
+修理 > shuuri\ ;
+脱糞 > dappun\ ;
+信疑 > shingi\ ;
+実見 > jikken\ ;
+軍団 > gundan\ ;
+臘梅 > roubai\ ;
+定言 > teigen\ ;
+査証 > sashou\ ;
+倒潰 > toukai\ ;
+舌戦 > zessen\ ;
+尖端 > sentan\ ;
+官許 > kankyo\ ;
+高慢 > kouman\ ;
+柔軟 > juunan\ ;
+小箱 > kobako\ ;
+聖霊 > seirei\ ;
+癈人 > haijin\ ;
+転向 > tenkou\ ;
+密葬 > missou\ ;
+尽瘁 > jinsui\ ;
+佳良 > karyou\ ;
+尊簡 > sonkan\ ;
+導管 > douken\ ;
+射精 > shasei\ ;
+定見 > teiken\ ;
+保留 > horyuu\ ;
+構内 > kounai\ ;
+瓦礫 > gareki\ ;
+実装 > jissou\ ;
+極寒 > gokkan\ ;
+駅舎 > ekisha\ ;
+来鮮 > raisen\ ;
+人類 > jinrui\ ;
+林間 > rinkan\ ;
+宗規 > shuuki\ ;
+審美 > shinbi\ ;
+崩壊 > houkai\ ;
+亡魂 > boukon\ ;
+贈賄 > zouwai\ ;
+使聘 > shihei\ ;
+人頭 > jintou\ ;
+走者 > sousha\ ;
+孝道 > koudou\ ;
+実行 > jikkou\ ;
+軍営 > gun''ei\ ;
+僭取 > senshu\ ;
+様体 > youtai\ ;
+賜金 > shikin\ ;
+校葬 > kousou\ ;
+軽便 > keiben\ ;
+使者 > shisha\ ;
+官製 > kansei\ ;
+偶成 > guusei\ ;
+俗界 > zokkai\ ;
+転勤 > tenkin\ ;
+交驩 > koukan\ ;
+俗画 > zokuga\ ;
+松韻 > shouin\ ;
+対米 > taibei\ ;
+宋詞 > soushi\ ;
+平々 > heihei\ ;
+距爪 > kyosou\ ;
+僧号 > sougou\ ;
+脂肪 > shibou\ ;
+人面 > jinmen\ ;
+専管 > senkan\ ;
+肌身 > hadami\ ;
+良否 > ryouhi\ ;
+飼養 > shiyou\ ;
+島嶼 > tousho\ ;
+老齢 > rourei\ ;
+良吏 > ryouri\ ;
+松露 > shouro\ ;
+封筒 > fuutou\ ;
+飛鳥 > hichou\ ;
+脚絆 > kyahan\ ;
+偶感 > guukan\ ;
+貝類 > kairui\ ;
+付録 > furoku\ ;
+偏旁 > henbou\ ;
+代金 > daikin\ ;
+高弟 > koutei\ ;
+購買 > koubai\ ;
+脱稿 > dakkou\ ;
+偏斜 > hensha\ ;
+山海 > sankai\ ;
+密航 > mikkou\ ;
+寒肥 > kangoe\ ;
+対等 > taitou\ ;
+転写 > tensha\ ;
+会談 > kaidan\ ;
+舎弟 > shatei\ ;
+傾城 > keisei\ ;
+健投 > kentou\ ;
+馴致 > junchi\ ;
+魚介 > gyokai\ ;
+傘屋 > kasaya\ ;
+高年 > kounen\ ;
+併置 > heichi\ ;
+射程 > shatei\ ;
+伝言 > dengon\ ;
+車台 > shadai\ ;
+畳数 > jousuu\ ;
+対空 > taikuu\ ;
+会計 > kaikei\ ;
+作興 > sakkou\ ;
+聯邦 > renpou\ ;
+腸炎 > chouen\ ;
+人間 > ningen\ ;
+学費 > gakuhi\ ;
+東面 > toumen\ ;
+高工 > koukou\ ;
+校舎 > kousha\ ;
+小破 > shouha\ ;
+資金 > shikin\ ;
+高嶺 > takane\ ;
+飛魚 > tobiuo\ ;
+山水 > sansui\ ;
+余興 > yokyou\ ;
+山気 > yamake\ ;
+小石 > koishi\ ;
+興廃 > kouhai\ ;
+軍勢 > gunzei\ ;
+余臭 > yoshuu\ ;
+会見 > kaiken\ ;
+倒死 > toushi\ ;
+封禅 > houzen\ ;
+贅言 > zeigen\ ;
+現金 > genkin\ ;
+居然 > kyozen\ ;
+億万 > okuman\ ;
+検挙 > kenkyo\ ;
+軍功 > gunkou\ ;
+転倒 > tentou\ ;
+町歩 > choubu\ ;
+僧兵 > souhei\ ;
+疑惑 > giwaku\ ;
+島守 > toushu\ ;
+代返 > daihen\ ;
+停戦 > teisen\ ;
+楽土 > rakudo\ ;
+臨戦 > rinsen\ ;
+宝蔵 > houzou\ ;
+楽園 > rakuen\ ;
+至情 > shijou\ ;
+高峰 > kouhou\ ;
+林野 > rin''ya\ ;
+軍制 > gunsei\ ;
+京阪 > keihan\ ;
+赤線 > akasen\ ;
+家臣 > kashin\ ;
+交霊 > kourei\ ;
+他郷 > takyou\ ;
+軍刀 > guntou\ ;
+香草 > kousou\ ;
+痴呆 > chihou\ ;
+条項 > joukou\ ;
+軟便 > nanben\ ;
+小目 > komoku\ ;
+某誌 > boushi\ ;
+栄落 > eiraku\ ;
+車券 > shaken\ ;
+転住 > tenjuu\ ;
+用法 > youhou\ ;
+艙口 > soukou\ ;
+臆断 > okudan\ ;
+高山 > kouzan\ ;
+躍如 > yakujo\ ;
+高層 > kousou\ ;
+小皿 > kozara\ ;
+小皺 > kojiwa\ ;
+亡霊 > bourei\ ;
+交際 > kousai\ ;
+船型 > senkei\ ;
+赤経 > sekkei\ ;
+佞者 > neisha\ ;
+業報 > gouhou\ ;
+馬肉 > baniku\ ;
+体腔 > taikou\ ;
+偕成 > kaisei\ ;
+疑心 > gishin\ ;
+軍兵 > gunpei\ ;
+来電 > raiden\ ;
+東門 > toumon\ ;
+高専 > kousen\ ;
+健忘 > kenbou\ ;
+用水 > yousui\ ;
+車内 > shanai\ ;
+馭者 > gyosha\ ;
+魅了 > miryou\ ;
+二食 > nijiki\ ;
+船団 > sendan\ ;
+脂粉 > shifun\ ;
+現送 > gensou\ ;
+高官 > koukan\ ;
+至当 > shitou\ ;
+玄黄 > genkou\ ;
+体育 > taiiku\ ;
+軍僧 > gunsou\ ;
+履歴 > rireki\ ;
+僧侶 > souryo\ ;
+林道 > rindou\ ;
+貴重 > kichou\ ;
+余習 > yoshuu\ ;
+豊麗 > hourei\ ;
+値札 > nefuda\ ;
+低能 > teinou\ ;
+来阪 > raihan\ ;
+僧体 > soutai\ ;
+例祭 > reisai\ ;
+貴酬 > kishuu\ ;
+胚胎 > haitai\ ;
+僧伽 > sougya\ ;
+桧皮 > hiwada\ ;
+傾向 > keikou\ ;
+子豚 > kobuta\ ;
+貯金 > chokin\ ;
+楽員 > gakuin\ ;
+健康 > kenkou\ ;
+自得 > jitoku\ ;
+僭主 > senshu\ ;
+代走 > daisou\ ;
+代赭 > taisha\ ;
+肺葉 > haiyou\ ;
+僭上 > senjou\ ;
+臨御 > ringyo\ ;
+貧鉱 > hinkou\ ;
+偏愛 > hen''ai\ ;
+偽学 > gigaku\ ;
+傑士 > kesshi\ ;
+首脳 > shunou\ ;
+軍使 > gunshi\ ;
+生残 > seizan\ ;
+生死 > seishi\ ;
+板金 > bankin\ ;
+棟木 > munagi\ ;
+番所 > bansho\ ;
+路標 > rohyou\ ;
+眈々 > tantan\ ;
+男根 > dankon\ ;
+低置 > teichi\ ;
+首肯 > shukou\ ;
+車体 > shatai\ ;
+船員 > sen''in\ ;
+病因 > byouin\ ;
+字訳 > jiyaku\ ;
+軍令 > gunrei\ ;
+偏性 > hensei\ ;
+棍棒 > konbou\ ;
+層楼 > sourou\ ;
+停年 > teinen\ ;
+傘地 > kasaji\ ;
+臨幸 > rinkou\ ;
+軍人 > gunjin\ ;
+自席 > jiseki\ ;
+予震 > yoshin\ ;
+官舎 > kansha\ ;
+騒然 > souzen\ ;
+高大 > koudai\ ;
+臥床 > gashou\ ;
+山林 > sanrin\ ;
+極右 > kyokuu\ ;
+木魂 > kodama\ ;
+高士 > koushi\ ;
+腎炎 > jin''en\ ;
+山村 > sanson\ ;
+人選 > jinsen\ ;
+小猫 > koneko\ ;
+仮託 > kataku\ ;
+対生 > taisei\ ;
+棒杭 > bougui\ ;
+船台 > sendai\ ;
+人道 > jindou\ ;
+骨幹 > kokkan\ ;
+棒杙 > bougui\ ;
+馬糧 > baryou\ ;
+資財 > shizai\ ;
+馬糞 > maguso\ ;
+人造 > jinzou\ ;
+僅僅 > kinkin\ ;
+極印 > gokuin\ ;
+代謝 > taisha\ ;
+代講 > daikou\ ;
+会葬 > kaisou\ ;
+孝行 > koukou\ ;
+甲板 > kouhan\ ;
+車上 > shajou\ ;
+至尊 > shison\ ;
+舅姑 > kyuuko\ ;
+争闘 > soutou\ ;
+興奮 > koufun\ ;
+艦上 > kanjou\ ;
+肺臓 > haizou\ ;
+身内 > miuchi\ ;
+小物 > komono\ ;
+高堂 > koudou\ ;
+小牛 > koushi\ ;
+身共 > midomo\ ;
+瑶緘 > youkan\ ;
+債券 > saiken\ ;
+至宝 > shihou\ ;
+体系 > taikei\ ;
+偏平 > henpei\ ;
+身元 > mimoto\ ;
+察知 > satchi\ ;
+生検 > seiken\ ;
+京都 > kyouto\ ;
+末香 > makkou\ ;
+至孝 > shikou\ ;
+木馬 > mokuba\ ;
+側女 > sobame\ ;
+本館 > honkan\ ;
+代言 > daigen\ ;
+東郊 > toukou\ ;
+肺胞 > haihou\ ;
+高地 > kouchi\ ;
+東邦 > touhou\ ;
+聖賢 > seiken\ ;
+人車 > jinsha\ ;
+痴人 > chijin\ ;
+朱顔 > shugan\ ;
+人身 > hitomi\ ;
+用材 > youzai\ ;
+交配 > kouhai\ ;
+東遷 > tousen\ ;
+肺肝 > haikan\ ;
+足湯 > ashiyu\ ;
+定置 > teichi\ ;
+傾倒 > keitou\ ;
+業務 > gyoumu\ ;
+倍数 > baisuu\ ;
+桑田 > souden\ ;
+老雄 > rouyuu\ ;
+船出 > funade\ ;
+自宅 > jitaku\ ;
+脇目 > wakime\ ;
+検屍 > kenshi\ ;
+本願 > hongan\ ;
+本題 > hondai\ ;
+乱雲 > ran''un\ ;
+疾呼 > shikko\ ;
+傭兵 > youhei\ ;
+船具 > funagu\ ;
+家筋 > iesuji\ ;
+豊饒 > houjou\ ;
+本音 > hon''ne\ ;
+付託 > futaku\ ;
+会舘 > kaikan\ ;
+末項 > makkou\ ;
+生来 > seirai\ ;
+交遊 > kouyuu\ ;
+倦憊 > kenpai\ ;
+枢要 > suuyou\ ;
+颱風 > taifuu\ ;
+実線 > jissen\ ;
+寝癖 > neguse\ ;
+臍帯 > seitai\ ;
+検定 > kentei\ ;
+来邸 > raitei\ ;
+腹案 > fukuan\ ;
+生木 > namaki\ ;
+草々 > sousou\ ;
+余程 > yohodo\ ;
+代行 > daikou\ ;
+島司 > toushi\ ;
+傲倨 > goukyo\ ;
+骨子 > kosshi\ ;
+至大 > shidai\ ;
+使用 > shiyou\ ;
+乱闘 > rantou\ ;
+来遊 > raiyuu\ ;
+東軍 > tougun\ ;
+展望 > tenbou\ ;
+耳輪 > mimiwa\ ;
+余禄 > yoroku\ ;
+小潮 > koshio\ ;
+審理 > shinri\ ;
+梶木 > kajiki\ ;
+貧賤 > hinsen\ ;
+貧賎 > hinsen\ ;
+来迎 > raigou\ ;
+有髪 > uhatsu\ ;
+赤痢 > sekiri\ ;
+便法 > benpou\ ;
+船倉 > sensou\ ;
+低空 > teikuu\ ;
+木霊 > kodama\ ;
+伝聞 > denbun\ ;
+本隊 > hontai\ ;
+岩層 > gansou\ ;
+肝臓 > kanzou\ ;
+朝顔 > asagao\ ;
+身丈 > mitake\ ;
+倦怠 > kentai\ ;
+本陣 > honjin\ ;
+本院 > hon''in\ ;
+尨毛 > mukuge\ ;
+定紋 > joumon\ ;
+養豚 > youton\ ;
+付表 > fuhyou\ ;
+家禄 > karoku\ ;
+朱門 > shumon\ ;
+肝腎 > kanjin\ ;
+併用 > heiyou\ ;
+高吟 > kougin\ ;
+木陰 > kokage\ ;
+船体 > sentai\ ;
+高名 > koumei\ ;
+倒懸 > touken\ ;
+債主 > saishu\ ;
+現行 > genkou\ ;
+環状 > kanjou\ ;
+来車 > raisha\ ;
+背筋 > haikin\ ;
+山手 > yamate\ ;
+腋毛 > wakige\ ;
+俳文 > haibun\ ;
+便殿 > benden\ ;
+最高 > saikou\ ;
+梗概 > kougai\ ;
+肝胆 > kantan\ ;
+高原 > kougen\ ;
+朝露 > chouro\ ;
+屯所 > tonsho\ ;
+傭人 > younin\ ;
+賀表 > gahyou\ ;
+朝霞 > chouka\ ;
+宝算 > housan\ ;
+茶々 > chacha\ ;
+風霜 > fuusou\ ;
+起爆 > kibaku\ ;
+興味 > kyoumi\ ;
+耐酸 > taisan\ ;
+健在 > kenzai\ ;
+肉芽 > nikuga\ ;
+臨場 > rinjou\ ;
+島内 > tounai\ ;
+用捨 > yousha\ ;
+孤舟 > koshuu\ ;
+二進 > nishin\ ;
+村道 > sondou\ ;
+偏好 > henkou\ ;
+二通 > nitsuu\ ;
+冥々 > meimei\ ;
+子葉 > shiyou\ ;
+肯綮 > koukei\ ;
+佩用 > haiyou\ ;
+乗降 > joukou\ ;
+事迹 > jiseki\ ;
+官等 > kantou\ ;
+値幅 > nehaba\ ;
+玄関 > genkan\ ;
+風防 > fuubou\ ;
+尚武 > shoubu\ ;
+枯葉 > kareha\ ;
+家督 > katoku\ ;
+偶吟 > guukin\ ;
+伝線 > densen\ ;
+値巾 > nehaba\ ;
+自国 > jikoku\ ;
+臨在 > rinzai\ ;
+余白 > yohaku\ ;
+宿痾 > shukua\ ;
+密生 > missei\ ;
+寄留 > kiryuu\ ;
+来賓 > raihin\ ;
+至善 > shizen\ ;
+伝統 > dentou\ ;
+画心 > gashin\ ;
+導水 > dousui\ ;
+来貢 > raikou\ ;
+男性 > dansei\ ;
+居敷 > ishiki\ ;
+脱法 > dappou\ ;
+値嵩 > negasa\ ;
+検地 > kenchi\ ;
+豪邸 > goutei\ ;
+健啖 > kentan\ ;
+余病 > yobyou\ ;
+自嘲 > jichou\ ;
+負託 > futaku\ ;
+老酒 > roushu\ ;
+主題 > shudai\ ;
+低目 > hikume\ ;
+作画 > sakuga\ ;
+獣類 > juurui\ ;
+豪邁 > goumai\ ;
+射法 > shahou\ ;
+交譲 > koujou\ ;
+事蹟 > jiseki\ ;
+山径 > sankei\ ;
+環濠 > kangou\ ;
+駄物 > damono\ ;
+脱水 > dassui\ ;
+豪遊 > gouyuu\ ;
+飛躍 > hiyaku\ ;
+高僧 > kousou\ ;
+致命 > chimei\ ;
+乱酔 > ransui\ ;
+乱酒 > ranshu\ ;
+舎兄 > shakei\ ;
+仰臥 > gyouga\ ;
+番外 > bangai\ ;
+岩塩 > gan''en\ ;
+生成 > seisei\ ;
+偏在 > henzai\ ;
+事跡 > jiseki\ ;
+何番 > nanban\ ;
+書風 > shofuu\ ;
+脳死 > noushi\ ;
+二足 > nisoku\ ;
+宗祖 > shuuso\ ;
+羽風 > hakaze\ ;
+豪農 > gounou\ ;
+島人 > toujin\ ;
+侠気 > kyouki\ ;
+画幅 > gafuku\ ;
+有限 > yuugen\ ;
+書類 > shorui\ ;
+香盒 > kougou\ ;
+画帳 > gachou\ ;
+生憎 > ainiku\ ;
+高値 > takane\ ;
+中飛 > chuuhi\ ;
+枝葉 > shiyou\ ;
+谷間 > tanima\ ;
+交詢 > koujun\ ;
+丹青 > tansei\ ;
+東西 > touzai\ ;
+臭味 > shuumi\ ;
+琴線 > kinsen\ ;
+胡瓜 > kyuuri\ ;
+再々 > saisai\ ;
+飛越 > hietsu\ ;
+生態 > seitai\ ;
+島主 > toushu\ ;
+来談 > raidan\ ;
+倉廩 > sourin\ ;
+腐朽 > fukyuu\ ;
+安穏 > an''non\ ;
+値安 > neyasu\ ;
+代艦 > daikan\ ;
+寸法 > sunpou\ ;
+胎盤 > taiban\ ;
+老農 > rounou\ ;
+乱造 > ranzou\ ;
+傍人 > boujin\ ;
+屈指 > kusshi\ ;
+育種 > ikushu\ ;
+検問 > kenmon\ ;
+梅林 > bairin\ ;
+木釘 > kikugi\ ;
+有閑 > yuukan\ ;
+用心 > youjin\ ;
+男工 > dankou\ ;
+豼貅 > hikyuu\ ;
+月間 > gekkan\ ;
+山巓 > santen\ ;
+仏葬 > bussou\ ;
+借家 > shakka\ ;
+書面 > shomen\ ;
+山嶺 > sanrei\ ;
+来訪 > raihou\ ;
+中音 > chuuon\ ;
+用役 > youeki\ ;
+珪藻 > keisou\ ;
+贈答 > zoutou\ ;
+老輩 > rouhai\ ;
+聾者 > rousha\ ;
+桑海 > soukai\ ;
+小楯 > kodate\ ;
+柱礎 > chuuso\ ;
+養蜂 > youhou\ ;
+実相 > jissou\ ;
+事象 > jishou\ ;
+寒点 > kanten\ ;
+聚落 > juraku\ ;
+検品 > kenpin\ ;
+内々 > nainai\ ;
+偶像 > guuzou\ ;
+存置 > sonchi\ ;
+本邸 > hontei\ ;
+体現 > taigen\ ;
+番地 > banchi\ ;
+東行 > toukou\ ;
+本邦 > honpou\ ;
+甲巡 > koujun\ ;
+来観 > raikan\ ;
+養蚕 > yousan\ ;
+本選 > honsen\ ;
+頽齢 > tairei\ ;
+環海 > kankai\ ;
+木部 > mokubu\ ;
+桃源 > tougen\ ;
+本道 > hondou\ ;
+居所 > kyosho\ ;
+風鈴 > fuurin\ ;
+路床 > roshou\ ;
+偽作 > gisaku\ ;
+乱軍 > rangun\ ;
+賞美 > shoubi\ ;
+展性 > tensei\ ;
+貯蔵 > chozou\ ;
+専横 > sen''ou\ ;
+専権 > senken\ ;
+倡婦 > shoufu\ ;
+朝野 > chouya\ ;
+胚珠 > haishu\ ;
+未進 > mishin\ ;
+休符 > kyuufu\ ;
+生彩 > seisai\ ;
+風采 > fuusai\ ;
+胎生 > taisei\ ;
+産廃 > sanpai\ ;
+令聞 > reibun\ ;
+俳徊 > haikai\ ;
+自力 > jiriki\ ;
+係数 > keisuu\ ;
+中陰 > chuuin\ ;
+検印 > ken''in\ ;
+町家 > chouka\ ;
+少林 > shorin\ ;
+健全 > kenzen\ ;
+偏向 > henkou\ ;
+寮母 > ryoubo\ ;
+興亡 > koubou\ ;
+画学 > gagaku\ ;
+将棋 > shougi\ ;
+互角 > gokaku\ ;
+質素 > shisso\ ;
+根源 > kongen\ ;
+柳眉 > ryuubi\ ;
+争論 > souron\ ;
+走法 > souhou\ ;
+上騰 > joutou\ ;
+山家 > yamaga\ ;
+会社 > kaisha\ ;
+実生 > mishou\ ;
+末輩 > mappai\ ;
+属差 > zokusa\ ;
+不馴 > funare\ ;
+生年 > seinen\ ;
+騒擾 > soujou\ ;
+椿事 > chinji\ ;
+寮歌 > ryouka\ ;
+首班 > shuhan\ ;
+定番 > teiban\ ;
+偶人 > guujin\ ;
+男子 > danshi\ ;
+代署 > daisho\ ;
+代置 > daichi\ ;
+肺癌 > haigan\ ;
+価格 > kakaku\ ;
+臨写 > rinsha\ ;
+官界 > kankai\ ;
+饌米 > senmai\ ;
+趣旨 > shushi\ ;
+今般 > konpan\ ;
+尊来 > sonrai\ ;
+梯形 > teikei\ ;
+轟々 > gougou\ ;
+膨大 > boudai\ ;
+二見 > futami\ ;
+自儘 > jimama\ ;
+果肉 > kaniku\ ;
+検分 > kenbun\ ;
+両院 > ryouin\ ;
+甲子 > kasshi\ ;
+一驚 > ikkyou\ ;
+少時 > shouji\ ;
+五行 > gogyou\ ;
+群青 > gunjou\ ;
+至便 > shiben\ ;
+尊書 > sonsho\ ;
+予覚 > yokaku\ ;
+小昼 > kohiru\ ;
+何点 > nanten\ ;
+曝露 > bakuro\ ;
+小春 > koharu\ ;
+余瀝 > yoreki\ ;
+宝珠 > houshu\ ;
+対校 > taikou\ ;
+子細 > shisai\ ;
+献饌 > kensen\ ;
+信徒 > shinto\ ;
+番号 > bangou\ ;
+番台 > bandai\ ;
+一駄 > ichida\ ;
+脇毛 > wakige\ ;
+類題 > ruidai\ ;
+曜霊 > yourei\ ;
+根治 > konchi\ ;
+寺格 > jikaku\ ;
+偉力 > iryoku\ ;
+寡欲 > kayoku\ ;
+有配 > yuuhai\ ;
+致仕 > chishi\ ;
+乗車 > jousha\ ;
+自修 > jishuu\ ;
+自信 > jishin\ ;
+仕置 > shioki\ ;
+風車 > fuusha\ ;
+暗黙 > anmoku\ ;
+山女 > yamame\ ;
+京葉 > keiyou\ ;
+暗黒 > ankoku\ ;
+封書 > fuusho\ ;
+仏者 > bussha\ ;
+棄子 > sutego\ ;
+倹吝 > kenrin\ ;
+胸泳 > kyouei\ ;
+属官 > zokkan\ ;
+倒壊 > toukai\ ;
+自供 > jikyou\ ;
+三韓 > sankan\ ;
+予表 > yohyou\ ;
+万頃 > bankei\ ;
+一飛 > ichihi\ ;
+起業 > kigyou\ ;
+偏光 > henkou\ ;
+桔梗 > kikyou\ ;
+根毛 > konmou\ ;
+余滴 > yoteki\ ;
+倍大 > baidai\ ;
+自作 > jisaku\ ;
+育生 > ikusei\ ;
+画境 > gakyou\ ;
+木賊 > tokusa\ ;
+尊敬 > sonkei\ ;
+男声 > dansei\ ;
+上面 > joumen\ ;
+居常 > kyojou\ ;
+代納 > dainou\ ;
+寒気 > samuke\ ;
+至上 > shijou\ ;
+三面 > sanmen\ ;
+尊攘 > sonjou\ ;
+停会 > teikai\ ;
+倍増 > baizou\ ;
+検便 > kenben\ ;
+生存 > seizon\ ;
+屑屋 > kuzuya\ ;
+願面 > ganmen\ ;
+山塞 > sansai\ ;
+風趣 > fuushu\ ;
+甲声 > kangoe\ ;
+暴騰 > boutou\ ;
+山塊 > sankai\ ;
+専断 > sendan\ ;
+胸毛 > munage\ ;
+山場 > yamaba\ ;
+屏居 > heikyo\ ;
+万雷 > banrai\ ;
+検体 > kentai\ ;
+官版 > kanpan\ ;
+三階 > sangai\ ;
+寝様 > nezama\ ;
+顔面 > ganmen\ ;
+上限 > jougen\ ;
+朋輩 > houbai\ ;
+専攻 > senkou\ ;
+仁者 > jinsha\ ;
+番兵 > banpei\ ;
+乱視 > ranshi\ ;
+朝賀 > chouga\ ;
+対数 > taisuu\ ;
+審査 > shinsa\ ;
+寝業 > newaza\ ;
+本論 > honron\ ;
+借問 > shamon\ ;
+曾遊 > souyuu\ ;
+臣事 > shinji\ ;
+琢磨 > takuma\ ;
+腹子 > harako\ ;
+桟敷 > sajiki\ ;
+対支 > taishi\ ;
+養育 > youiku\ ;
+風貌 > fuubou\ ;
+伯父 > hakufu\ ;
+本誌 > honshi\ ;
+子種 > kodane\ ;
+仔細 > shisai\ ;
+東航 > toukou\ ;
+小指 > koyubi\ ;
+最近 > saikin\ ;
+未読 > midoku\ ;
+仮称 > kashou\ ;
+体液 > taieki\ ;
+一隻 > isseki\ ;
+寸断 > sundan\ ;
+生姜 > shouga\ ;
+三門 > sanmon\ ;
+老衰 > rousui\ ;
+苛々 > iraira\ ;
+低減 > teigen\ ;
+臣下 > shinka\ ;
+倡和 > shouwa\ ;
+未詳 > mishou\ ;
+腐心 > fushin\ ;
+暴風 > boufuu\ ;
+余沢 > yotaku\ ;
+定点 > teiten\ ;
+書道 > shodou\ ;
+中部 > chuubu\ ;
+偏人 > henjin\ ;
+倦厭 > ken''en\ ;
+学監 > gakkan\ ;
+養老 > yourou\ ;
+肌着 > hadagi\ ;
+産声 > ubugoe\ ;
+飴色 > ameiro\ ;
+田地 > denchi\ ;
+朝議 > chougi\ ;
+田園 > den''en\ ;
+小我 > shouga\ ;
+婦長 > fuchou\ ;
+香港 > honkon\ ;
+梵妻 > bonsai\ ;
+桂林 > keirin\ ;
+一間 > hitoma\ ;
+存知 > zonchi\ ;
+中途 > chuuto\ ;
+琺瑯 > hourou\ ;
+画商 > gashou\ ;
+来航 > raikou\ ;
+頻頻 > hinpin\ ;
+尻尾 > shippo\ ;
+校正 > kousei\ ;
+例文 > reibun\ ;
+甚大 > jindai\ ;
+例数 > reisuu\ ;
+二葉 > futaba\ ;
+飼育 > shiiku\ ;
+俳壇 > haidan\ ;
+屯営 > ton''ei\ ;
+来臨 > rairin\ ;
+梵天 > bonten\ ;
+用地 > youchi\ ;
+貴紳 > kishin\ ;
+暴露 > bakuro\ ;
+寒梅 > kanbai\ ;
+根柢 > kontei\ ;
+射手 > shashu\ ;
+何歳 > nansai\ ;
+瑶池 > youchi\ ;
+学界 > gakkai\ ;
+栗毛 > kurige\ ;
+尊慮 > sonryo\ ;
+住民 > juumin\ ;
+驚喜 > kyouki\ ;
+少恩 > shouon\ ;
+産地 > sanchi\ ;
+俗字 > zokuji\ ;
+対抗 > taikou\ ;
+企画 > kikaku\ ;
+甘塩 > amajio\ ;
+赤本 > akahon\ ;
+風解 > fuukai\ ;
+併有 > heiyuu\ ;
+屋外 > okugai\ ;
+馬橇 > basori\ ;
+中身 > nakami\ ;
+理神 > rishin\ ;
+佳木 > kaboku\ ;
+根本 > nemoto\ ;
+聖算 > seisan\ ;
+人絹 > jinken\ ;
+主賓 > shuhin\ ;
+生地 > seichi\ ;
+風見 > kazami\ ;
+対戦 > taisen\ ;
+他称 > tashou\ ;
+望見 > bouken\ ;
+香水 > kousui\ ;
+寒村 > kanson\ ;
+杉菜 > sugina\ ;
+留保 > ryuuho\ ;
+能書 > nousho\ ;
+作業 > sagyou\ ;
+付票 > fuhyou\ ;
+倨傲 > kyogou\ ;
+根暗 > nekura\ ;
+跡地 > atochi\ ;
+人糞 > jinpun\ ;
+学理 > gakuri\ ;
+脳性 > nousei\ ;
+画匠 > gashou\ ;
+余業 > yogyou\ ;
+小形 > kogata\ ;
+信士 > shinji\ ;
+腫大 > shudai\ ;
+乾菜 > kansai\ ;
+月謝 > gessha\ ;
+密栓 > missen\ ;
+寒暖 > kandan\ ;
+寒暑 > kansho\ ;
+子癇 > shikan\ ;
+風袋 > fuutai\ ;
+倥偬 > kousou\ ;
+小引 > shouin\ ;
+体様 > taiyou\ ;
+人籟 > jinrai\ ;
+三重 > sanjuu\ ;
+財経 > zaikei\ ;
+存生 > zonjou\ ;
+字画 > jikaku\ ;
+万金 > mankin\ ;
+尊影 > son''ei\ ;
+根方 > nekata\ ;
+用品 > youhin\ ;
+仮病 > kebyou\ ;
+上酒 > joushu\ ;
+宗派 > shuuha\ ;
+定法 > jouhou\ ;
+家業 > kagyou\ ;
+献金 > kenkin\ ;
+環指 > kanshi\ ;
+用命 > youmei\ ;
+胡椒 > koshou\ ;
+聯盟 > renmei\ ;
+胆汁 > tanjuu\ ;
+琥珀 > kohaku\ ;
+能文 > noubun\ ;
+居城 > kyojou\ ;
+主謀 > shubou\ ;
+宗法 > souhou\ ;
+小幅 > kohaba\ ;
+孤独 > kodoku\ ;
+産品 > sanpin\ ;
+願酒 > ganshu\ ;
+東経 > toukei\ ;
+乾芻 > kansuu\ ;
+完済 > kansai\ ;
+不適 > futeki\ ;
+密書 > missho\ ;
+股火 > matabi\ ;
+須髯 > shuzen\ ;
+導師 > doushi\ ;
+美醜 > bishuu\ ;
+専従 > senjuu\ ;
+一里 > ichiri\ ;
+寵愛 > chouai\ ;
+宝殿 > houden\ ;
+乳菓 > nyuuka\ ;
+小差 > shousa\ ;
+珠算 > shuzan\ ;
+不通 > futsuu\ ;
+脳幹 > noukan\ ;
+供応 > kyouou\ ;
+玉藻 > tamamo\ ;
+肝炎 > kan''en\ ;
+三選 > sansen\ ;
+尋常 > jinjou\ ;
+修営 > shuuei\ ;
+丹誠 > tansei\ ;
+胡桃 > kurumi\ ;
+万邦 > banpou\ ;
+老荘 > rousou\ ;
+官民 > kanmin\ ;
+乾舷 > kangen\ ;
+属吏 > zokuri\ ;
+枡目 > masume\ ;
+丁酉 > teiyuu\ ;
+聞知 > bunchi\ ;
+家格 > kakaku\ ;
+越後 > echigo\ ;
+生命 > seimei\ ;
+尚尚 > naonao\ ;
+三連 > sanren\ ;
+義足 > gisoku\ ;
+主計 > shukei\ ;
+校本 > kouhon\ ;
+暮鐘 > boshou\ ;
+封建 > houken\ ;
+対当 > taitou\ ;
+木蔭 > kokage\ ;
+倒像 > touzou\ ;
+羅針 > rashin\ ;
+射幸 > shakou\ ;
+梵唄 > bonbai\ ;
+上辺 > jouhen\ ;
+一郭 > ikkaku\ ;
+一部 > ichibu\ ;
+定款 > teikan\ ;
+何枚 > nanmai\ ;
+寸志 > sunshi\ ;
+佞智 > neichi\ ;
+主観 > shukan\ ;
+家柄 > iegara\ ;
+小島 > kojima\ ;
+本葬 > honsou\ ;
+産卵 > sanran\ ;
+人種 > jinshu\ ;
+完治 > kanchi\ ;
+何条 > nanjou\ ;
+主要 > shuyou\ ;
+代用 > daiyou\ ;
+書誌 > shoshi\ ;
+甲兵 > kouhei\ ;
+伯母 > hakubo\ ;
+俳名 > haimei\ ;
+実権 > jikken\ ;
+俳号 > haigou\ ;
+越度 > ochido\ ;
+飛翔 > hishou\ ;
+予習 > yoshuu\ ;
+義賊 > gizoku\ ;
+寝技 > newaza\ ;
+小山 > koyama\ ;
+三輪 > sanrin\ ;
+尊崇 > sonsuu\ ;
+俳友 > haiyuu\ ;
+一週 > isshuu\ ;
+休演 > kyuuen\ ;
+一通 > ittsuu\ ;
+脇戸 > wakido\ ;
+三軽 > sankei\ ;
+尿器 > nyouki\ ;
+寝所 > shinjo\ ;
+尨大 > boudai\ ;
+三軍 > sangun\ ;
+狭霧 > sagiri\ ;
+子猫 > koneko\ ;
+根拠 > konkyo\ ;
+寡慾 > kayoku\ ;
+井綱 > idzuna\ ;
+万軍 > bangun\ ;
+驕児 > kyouji\ ;
+豪胆 > goutan\ ;
+東端 > toutan\ ;
+本草 > honzou\ ;
+生動 > seidou\ ;
+費目 > himoku\ ;
+書見 > shoken\ ;
+仙界 > senkai\ ;
+官権 > kanken\ ;
+更訂 > koutei\ ;
+産前 > sanzen\ ;
+小宴 > shouen\ ;
+玉菜 > tamana\ ;
+産制 > sansei\ ;
+孔版 > kouhan\ ;
+末茶 > matcha\ ;
+飯米 > hanmai\ ;
+順風 > junpuu\ ;
+朱色 > shuiro\ ;
+実検 > jikken\ ;
+伝法 > denpou\ ;
+画伯 > gahaku\ ;
+用兵 > youhei\ ;
+狭隘 > kyouai\ ;
+獣行 > juukou\ ;
+不足 > fusoku\ ;
+資産 > shisan\ ;
+嫁菜 > yomena\ ;
+五経 > gokyou\ ;
+駅手 > ekishu\ ;
+嬉笑 > kishou\ ;
+事績 > jiseki\ ;
+生前 > seizen\ ;
+棄児 > sutego\ ;
+子牛 > koushi\ ;
+他生 > tashou\ ;
+下足 > gesoku\ ;
+何方 > donata\ ;
+豚舎 > tonsha\ ;
+足場 > ashiba\ ;
+家族 > kazoku\ ;
+順順 > junjun\ ;
+一身 > isshin\ ;
+本船 > honsen\ ;
+肥沃 > hiyoku\ ;
+対岸 > taigan\ ;
+梱包 > konpou\ ;
+一蹴 > isshuu\ ;
+林産 > rinsan\ ;
+人知 > jinchi\ ;
+罰金 > bakkin\ ;
+家教 > kakyou\ ;
+令状 > reijou\ ;
+例年 > reinen\ ;
+狭間 > hazama\ ;
+脛巾 > habaki\ ;
+趣好 > shukou\ ;
+履修 > rishuu\ ;
+信受 > shinju\ ;
+膝下 > shikka\ ;
+二級 > nikyuu\ ;
+赫怒 > kakudo\ ;
+本膳 > honzen\ ;
+起床 > kishou\ ;
+一路 > ichiro\ ;
+脆性 > zeisei\ ;
+体操 > taisou\ ;
+使役 > shieki\ ;
+中衛 > chuuei\ ;
+晩餐 > bansan\ ;
+介甲 > kaikou\ ;
+肝油 > kan''yu\ ;
+山上 > sanjou\ ;
+群論 > gunron\ ;
+小姓 > koshou\ ;
+用便 > youben\ ;
+俳優 > haiyuu\ ;
+今生 > konjou\ ;
+少女 > shoujo\ ;
+人相 > ninsou\ ;
+予約 > yoyaku\ ;
+供宴 > kyouen\ ;
+人目 > hitome\ ;
+用例 > yourei\ ;
+甘党 > amatou\ ;
+貧相 > hinsou\ ;
+背景 > haikei\ ;
+駒座 > komaza\ ;
+俗吏 > zokuri\ ;
+安楽 > anraku\ ;
+根性 > konjou\ ;
+尖塔 > sentou\ ;
+世評 > sehyou\ ;
+乗艦 > joukan\ ;
+並行 > heikou\ ;
+班田 > handen\ ;
+有蓋 > yuugai\ ;
+仔猫 > koneko\ ;
+定本 > teihon\ ;
+用件 > youken\ ;
+乗船 > jousen\ ;
+騰勢 > tousei\ ;
+実景 > jikkei\ ;
+屋内 > okunai\ ;
+学派 > gakuha\ ;
+風船 > fuusen\ ;
+用人 > younin\ ;
+柔毛 > juumou\ ;
+来社 > raisha\ ;
+現状 > genjou\ ;
+音響 > onkyou\ ;
+木肌 > kihada\ ;
+尊大 > sondai\ ;
+脳天 > nouten\ ;
+媚薬 > biyaku\ ;
+風致 > fuuchi\ ;
+不調 > fuchou\ ;
+寝床 > nedoko\ ;
+某氏 > boushi\ ;
+五穀 > gokoku\ ;
+世襲 > seshuu\ ;
+老練 > rouren\ ;
+生体 > seitai\ ;
+仔牛 > koushi\ ;
+不詳 > fushou\ ;
+実施 > jisshi\ ;
+頸輪 > kubiwa\ ;
+万謝 > bansha\ ;
+三論 > sanron\ ;
+不評 > fuhyou\ ;
+俗務 > zokumu\ ;
+駅弁 > ekiben\ ;
+晩霜 > bansou\ ;
+侠女 > kyoujo\ ;
+本署 > honsho\ ;
+寝巻 > nemaki\ ;
+村童 > sondou\ ;
+実数 > jissuu\ ;
+能弁 > nouben\ ;
+人生 > jinsei\ ;
+守株 > shushu\ ;
+何才 > nansai\ ;
+争端 > soutan\ ;
+根底 > kontei\ ;
+中蘇 > chuuso\ ;
+一議 > ichigi\ ;
+伴星 > bansei\ ;
+飛竜 > hiryuu\ ;
+根幹 > konkan\ ;
+赤帽 > akabou\ ;
+小型 > kogata\ ;
+養生 > youjou\ ;
+杯盤 > haiban\ ;
+暴走 > bousou\ ;
+上計 > joukei\ ;
+尊堂 > sondou\ ;
+格差 > kakusa\ ;
+専売 > senbai\ ;
+宿意 > shukui\ ;
+不覚 > fukaku\ ;
+俳人 > haijin\ ;
+完本 > kanpon\ ;
+耳目 > jimoku\ ;
+定数 > teisuu\ ;
+佞悪 > neiaku\ ;
+俯伏 > fufuku\ ;
+献詠 > ken''ei\ ;
+富強 > fukyou\ ;
+騙取 > henshu\ ;
+俯仰 > fugyou\ ;
+上覧 > jouran\ ;
+万言 > mangen\ ;
+対外 > taigai\ ;
+住所 > juusho\ ;
+財界 > zaikai\ ;
+耕種 > koushu\ ;
+風聞 > fuubun\ ;
+上覆 > uwaooi\ ;
+容態 > youdai\ ;
+射場 > shajou\ ;
+屍体 > shitai\ ;
+財産 > zaisan\ ;
+一語 > ichigo\ ;
+寒帯 > kantai\ ;
+寵姫 > chouki\ ;
+献言 > kengen\ ;
+伝染 > densen\ ;
+寡少 > kashou\ ;
+両虎 > ryouko\ ;
+猥談 > waidan\ ;
+越境 > ekkyou\ ;
+小器 > shouki\ ;
+上製 > jousei\ ;
+本線 > honsen\ ;
+伎楽 > gigaku\ ;
+体感 > taikan\ ;
+俗儒 > zokuju\ ;
+乃至 > naishi\ ;
+上裁 > jousai\ ;
+伝来 > denrai\ ;
+色々 > iroiro\ ;
+寝小 > neshou\ ;
+本絹 > honken\ ;
+飯盒 > hangou\ ;
+下表 > kahyou\ ;
+賤民 > senmin\ ;
+居住 > kyojuu\ ;
+腕前 > udemae\ ;
+仮泊 > kahaku\ ;
+余徳 > yotoku\ ;
+本紙 > honshi\ ;
+趨向 > suukou\ ;
+佞弁 > neiben\ ;
+中華 > chuuka\ ;
+余得 > yotoku\ ;
+害悪 > gaiaku\ ;
+封地 > houchi\ ;
+完敗 > kanpai\ ;
+交番 > kouban\ ;
+俚俗 > rizoku\ ;
+題言 > daigen\ ;
+屋上 > okujou\ ;
+木組 > kigumi\ ;
+有能 > yuunou\ ;
+尚古 > shouko\ ;
+騒動 > soudou\ ;
+背戻 > hairei\ ;
+例外 > reigai\ ;
+宣戦 > sensen\ ;
+耳環 > mimiwa\ ;
+五目 > gomoku\ ;
+寓居 > guukyo\ ;
+趣向 > shukou\ ;
+貢献 > kouken\ ;
+独逸 > doitsu\ ;
+校庭 > koutei\ ;
+資源 > shigen\ ;
+寡婦 > yamome\ ;
+尋問 > jinmon\ ;
+暴論 > bouron\ ;
+条痕 > joukon\ ;
+格子 > koushi\ ;
+企業 > kigyou\ ;
+併存 > heizon\ ;
+飲用 > in''you\ ;
+体形 > taikei\ ;
+富岳 > fugaku\ ;
+実戦 > jissen\ ;
+主脳 > shunou\ ;
+胡弓 > kokyuu\ ;
+昼餉 > hiruge\ ;
+琴柱 > kotoji\ ;
+趨勢 > suusei\ ;
+依嘱 > ishoku\ ;
+昼食 > hiruge\ ;
+寒害 > kangai\ ;
+頑迷 > ganmei\ ;
+宛所 > atesho\ ;
+某某 > boubou\ ;
+獣脂 > juushi\ ;
+低徊 > teikai\ ;
+本管 > honkan\ ;
+貯炭 > chotan\ ;
+二目 > futame\ ;
+小吏 > shouri\ ;
+人煙 > jin''en\ ;
+暴言 > bougen\ ;
+俊偉 > shun''i\ ;
+尊命 > sonmei\ ;
+官房 > kanbou\ ;
+松煙 > shouen\ ;
+肥料 > hiryou\ ;
+休暇 > kyuuka\ ;
+俗事 > zokuji\ ;
+実態 > jittai\ ;
+木箱 > kibako\ ;
+有罪 > yuuzai\ ;
+狭軌 > kyouki\ ;
+購書 > kousho\ ;
+学校 > gakkou\ ;
+木管 > mokkan\ ;
+玄米 > genmai\ ;
+珈琲 > kouhii\ ;
+風紋 > fuumon\ ;
+株屋 > kabuya\ ;
+実感 > jikkan\ ;
+尊君 > sonkun\ ;
+実意 > jitsui\ ;
+尊名 > sonmei\ ;
+低廉 > teiren\ ;
+飼犬 > kaiinu\ ;
+尊号 > songou\ ;
+他流 > taryuu\ ;
+尊台 > sondai\ ;
+末端 > mattan\ ;
+官憲 > kanken\ ;
+付注 > fuchuu\ ;
+飛白 > kasuri\ ;
+賎民 > senmin\ ;
+佐幕 > sabaku\ ;
+人災 > jinsai\ ;
+下薬 > geyaku\ ;
+密封 > mippuu\ ;
+宴席 > enseki\ ;
+小匙 > kosaji\ ;
+尊厳 > songen\ ;
+肉桂 > nikkei\ ;
+走塁 > sourui\ ;
+格好 > kakkou\ ;
+伝搬 > denpan\ ;
+寛大 > kandai\ ;
+本稿 > honkou\ ;
+書肆 > shoshi\ ;
+完投 > kantou\ ;
+子様 > kosama\ ;
+宿屋 > yadoya\ ;
+書聖 > shosei\ ;
+寿命 > jumyou\ ;
+三蔵 > sanzou\ ;
+音量 > onryou\ ;
+亡状 > boujou\ ;
+費消 > hishou\ ;
+尖兵 > senpei\ ;
+乗算 > jouzan\ ;
+暴行 > boukou\ ;
+根太 > nebuto\ ;
+議長 > gichou\ ;
+乾盃 > kanpai\ ;
+完成 > kansei\ ;
+小利 > shouri\ ;
+書翰 > shokan\ ;
+来状 > raijou\ ;
+有線 > yuusen\ ;
+仏法 > buppou\ ;
+安手 > yasude\ ;
+僅々 > kinkin\ ;
+対向 > taikou\ ;
+定性 > teisei\ ;
+豪盛 > gousei\ ;
+乾癬 > kansen\ ;
+対句 > tsuiku\ ;
+中耳 > chuuji\ ;
+育成 > ikusei\ ;
+守戦 > shusen\ ;
+校定 > koutei\ ;
+寒天 > kanten\ ;
+本社 > honsha\ ;
+下落 > geraku\ ;
+警防 > keibou\ ;
+寒夜 > kan''ya\ ;
+守成 > shusei\ ;
+特高 > tokkou\ ;
+末社 > massha\ ;
+胸奥 > kyouou\ ;
+佳境 > kakyou\ ;
+普通 > futsuu\ ;
+佗寝 > wabine\ ;
+実弟 > jittei\ ;
+玲瓏 > reirou\ ;
+老眼 > rougan\ ;
+豊穣 > houjou\ ;
+栽培 > saibai\ ;
+義臣 > gishin\ ;
+牡鶏 > ondori\ ;
+小兵 > kohyou\ ;
+月経 > gekkei\ ;
+背広 > sebiro\ ;
+季春 > kishun\ ;
+小児 > shouni\ ;
+豊稔 > hounen\ ;
+牝鷄 > hinkei\ ;
+定形 > teikei\ ;
+条片 > jouhen\ ;
+係争 > keisou\ ;
+象眼 > zougan\ ;
+玳瑁 > taimai\ ;
+暗誦 > anshou\ ;
+騒人 > soujin\ ;
+宗徒 > shuuto\ ;
+子株 > kokabu\ ;
+昼間 > hiruma\ ;
+低層 > teisou\ ;
+根城 > nejiro\ ;
+亀甲 > kikkou\ ;
+賀正 > gashou\ ;
+顕著 > kencho\ ;
+牡鳥 > ondori\ ;
+騒乱 > souran\ ;
+尊公 > sonkou\ ;
+宵宮 > yomiya\ ;
+交点 > kouten\ ;
+住専 > juusen\ ;
+音速 > onsoku\ ;
+伐採 > bassai\ ;
+家宅 > kataku\ ;
+飛球 > hikyuu\ ;
+暗証 > anshou\ ;
+尊兄 > sonkei\ ;
+便乗 > binjou\ ;
+専制 > sensei\ ;
+乾田 > kanden\ ;
+家学 > kagaku\ ;
+伸度 > shindo\ ;
+会所 > kaisho\ ;
+使嗾 > shisou\ ;
+豆科 > mameka\ ;
+脱党 > dattou\ ;
+会戦 > kaisen\ ;
+佞姦 > neikan\ ;
+住家 > sumika\ ;
+玲玲 > reirei\ ;
+侶伴 > ryohan\ ;
+胞子 > houshi\ ;
+定年 > teinen\ ;
+時鐘 > jishou\ ;
+賜杯 > shihai\ ;
+財源 > zaigen\ ;
+並置 > heichi\ ;
+安息 > ansoku\ ;
+尊像 > sonzou\ ;
+不良 > furyou\ ;
+仕樣 > shiyou\ ;
+東漸 > touzen\ ;
+定常 > teijou\ ;
+佞奸 > neikan\ ;
+献茶 > kencha\ ;
+一菊 > ikkiku\ ;
+宮家 > miyake\ ;
+風神 > fuujin\ ;
+胚子 > haishi\ ;
+孝敬 > koukei\ ;
+対処 > taisho\ ;
+両義 > ryougi\ ;
+丹精 > tansei\ ;
+仕様 > shiyou\ ;
+寒地 > kanchi\ ;
+不興 > fukyou\ ;
+万芸 > bangei\ ;
+不臣 > fushin\ ;
+脚半 > kyahan\ ;
+賢明 > kenmei\ ;
+上船 > jousen\ ;
+貯水 > chosui\ ;
+容姿 > youshi\ ;
+上航 > joukou\ ;
+少佐 > shousa\ ;
+枯木 > kareki\ ;
+一荘 > iichan\ ;
+寸前 > sunzen\ ;
+宏弁 > kouben\ ;
+対内 > tainai\ ;
+老生 > rousei\ ;
+件数 > kensuu\ ;
+下臣 > kashin\ ;
+獺祭 > dassai\ ;
+独語 > dokugo\ ;
+上臼 > uwausu\ ;
+小作 > kosaku\ ;
+本盗 > hontou\ ;
+飽満 > houman\ ;
+校外 > kougai\ ;
+寸分 > sunbun\ ;
+独話 > dokuwa\ ;
+導体 > doutai\ ;
+万般 > banpan\ ;
+上臈 > jourou\ ;
+星霜 > seisou\ ;
+使命 > shimei\ ;
+物騒 > bussou\ ;
+木目 > mokume\ ;
+主管 > shukan\ ;
+令望 > reibou\ ;
+上腿 > joutai\ ;
+宦官 > kangan\ ;
+富国 > fukoku\ ;
+更紗 > sarasa\ ;
+人気 > hitoke\ ;
+木皿 > kizara\ ;
+人民 > jinmin\ ;
+射倖 > shakou\ ;
+上腕 > jouwan\ ;
+尊体 > sontai\ ;
+木皮 > mokuhi\ ;
+代替 > daitai\ ;
+代書 > daisho\ ;
+某所 > bousho\ ;
+昂騰 > koutou\ ;
+子方 > kokata\ ;
+小事 > shouji\ ;
+作場 > sakuba\ ;
+貧民 > hinmin\ ;
+今様 > imayou\ ;
+実射 > jissha\ ;
+対偶 > taiguu\ ;
+京浜 > keihin\ ;
+書簡 > shokan\ ;
+不肖 > fushou\ ;
+東海 > toukai\ ;
+有税 > yuuzei\ ;
+体外 > taigai\ ;
+果核 > kakaku\ ;
+預託 > yotaku\ ;
+脱会 > dakkai\ ;
+一興 > ikkyou\ ;
+上背 > uwazei\ ;
+寵児 > chouji\ ;
+完工 > kankou\ ;
+上肢 > joushi\ ;
+智謀 > chibou\ ;
+類聚 > ruijuu\ ;
+本番 > honban\ ;
+東洋 > touyou\ ;
+特需 > tokuju\ ;
+貴様 > kisama\ ;
+聰明 > soumei\ ;
+風眼 > fuugan\ ;
+上聞 > joubun\ ;
+実子 > jisshi\ ;
+老獪 > roukai\ ;
+杯洗 > haisen\ ;
+家塾 > kajuku\ ;
+令旨 > reishi\ ;
+併呑 > heidon\ ;
+資材 > shizai\ ;
+低声 > teisei\ ;
+争点 > souten\ ;
+資本 > shihon\ ;
+作土 > sakudo\ ;
+尊上 > sonjou\ ;
+寛厳 > kangen\ ;
+会式 > eshiki\ ;
+羚羊 > reiyou\ ;
+併合 > heigou\ ;
+乾燥 > kansou\ ;
+伶官 > reikan\ ;
+寛厚 > kankou\ ;
+三者 > sansha\ ;
+豪爽 > gousou\ ;
+作図 > sakuzu\ ;
+猫背 > nekoze\ ;
+飛火 > tobihi\ ;
+片鱗 > henrin\ ;
+警醒 > keisei\ ;
+駅名 > ekimei\ ;
+代数 > daisuu\ ;
+香奠 > kouden\ ;
+豐田 > toyota\ ;
+翔破 > shouha\ ;
+独行 > dokkou\ ;
+根号 > kongou\ ;
+肝心 > kanjin\ ;
+牛馬 > gyuuba\ ;
+人権 > jinken\ ;
+肺尖 > haisen\ ;
+丸秘 > maruhi\ ;
+飛瀑 > hibaku\ ;
+体型 > taikei\ ;
+頒行 > hankou\ ;
+東毎 > toumai\ ;
+須要 > shuyou\ ;
+対人 > taijin\ ;
+胡国 > kokoku\ ;
+案内 > an''nai\ ;
+何回 > nankai\ ;
+普請 > fushin\ ;
+時速 > jisoku\ ;
+孤愁 > koshuu\ ;
+護身 > goshin\ ;
+木琴 > mokkin\ ;
+実姉 > jisshi\ ;
+仏書 > bussho\ ;
+完封 > kanpuu\ ;
+耳殻 > jikaku\ ;
+類纂 > ruisan\ ;
+青黴 > aokabi\ ;
+木理 > mokuri\ ;
+供与 > kyouyo\ ;
+聡明 > soumei\ ;
+讒謗 > zanbou\ ;
+寝刃 > netaba\ ;
+一羽 > ichiwa\ ;
+肉感 > nikkan\ ;
+賢才 > kensai\ ;
+一義 > ichigi\ ;
+低地 > teichi\ ;
+桂冠 > keikan\ ;
+安寧 > an''nei\ ;
+能動 > noudou\ ;
+羊羹 > youkan\ ;
+饗応 > kyouou\ ;
+羊羮 > youkan\ ;
+聖書 > seisho\ ;
+主砲 > shuhou\ ;
+低回 > teikai\ ;
+寝具 > shingu\ ;
+貿易 > boueki\ ;
+現数 > gensuu\ ;
+音調 > onchou\ ;
+交歓 > koukan\ ;
+駅前 > ekimae\ ;
+守宮 > yamori\ ;
+景観 > keikan\ ;
+音読 > ondoku\ ;
+交款 > koukan\ ;
+枚数 > maisuu\ ;
+聡敏 > soubin\ ;
+貧棒 > binbou\ ;
+上線 > jousen\ ;
+順行 > junkou\ ;
+月相 > gessou\ ;
+子房 > shibou\ ;
+例会 > reikai\ ;
+最短 > saitan\ ;
+青鷺 > aosagi\ ;
+学徒 > gakuto\ ;
+丹砂 > tansha\ ;
+有益 > yuueki\ ;
+今晩 > konban\ ;
+井泉 > seisen\ ;
+寒剤 > kanzai\ ;
+賢慮 > kenryo\ ;
+孝悌 > koutei\ ;
+肯定 > koutei\ ;
+下絵 > shitae\ ;
+讒言 > zangen\ ;
+赦免 > shamen\ ;
+予測 > yosoku\ ;
+翻然 > honzen\ ;
+伴奏 > bansou\ ;
+賛成 > sansei\ ;
+風琴 > fuukin\ ;
+伝導 > dendou\ ;
+林政 > rinsei\ ;
+根冠 > konkan\ ;
+起伏 > kifuku\ ;
+下級 > kakyuu\ ;
+主眼 > shugan\ ;
+三組 > mikumi\ ;
+三絃 > sangen\ ;
+宝塔 > houtou\ ;
+聖旨 > seishi\ ;
+不精 > bushou\ ;
+上納 > jounou\ ;
+王物 > oumono\ ;
+一縷 > ichiru\ ;
+二流 > niryuu\ ;
+脚下 > kyakka\ ;
+根元 > nemoto\ ;
+寒冷 > kanrei\ ;
+聖断 > seidan\ ;
+佩剣 > haiken\ ;
+嫌煙 > ken''en\ ;
+校合 > kougou\ ;
+条款 > joukan\ ;
+学府 > gakufu\ ;
+仁智 > jinchi\ ;
+人材 > jinzai\ ;
+校友 > kouyuu\ ;
+佩刀 > haitou\ ;
+未熟 > mijuku\ ;
+朱点 > shuten\ ;
+上米 > joumai\ ;
+中破 > chuuha\ ;
+人望 > jinbou\ ;
+貴族 > kizoku\ ;
+寡作 > kasaku\ ;
+官報 > kanpou\ ;
+中砥 > nakato\ ;
+宏大 > koudai\ ;
+颯爽 > sassou\ ;
+実地 > jitchi\ ;
+孝弟 > koutei\ ;
+板書 > bansho\ ;
+背嚢 > hainou\ ;
+賦役 > buyaku\ ;
+有用 > yuuyou\ ;
+宏壮 > kousou\ ;
+有産 > yuusan\ ;
+丙種 > heishu\ ;
+定型 > teikei\ ;
+月産 > gessan\ ;
+伏屋 > fuseya\ ;
+一級 > ikkyuu\ ;
+人智 > jinchi\ ;
+完売 > kanbai\ ;
+村民 > sonmin\ ;
+球技 > kyuugi\ ;
+枚挙 > maikyo\ ;
+日頃 > higoro\ ;
+下策 > gesaku\ ;
+青鮫 > aozame\ ;
+字引 > jibiki\ ;
+仁政 > jinsei\ ;
+低吟 > teigin\ ;
+日韓 > nikkan\ ;
+球戯 > kyuugi\ ;
+何千 > nanzen\ ;
+何十 > nanjuu\ ;
+賢弟 > kentei\ ;
+上等 > joutou\ ;
+馬力 > bariki\ ;
+存廃 > zonpai\ ;
+聯想 > rensou\ ;
+使丁 > shitei\ ;
+三等 > santou\ ;
+主用 > shuyou\ ;
+一籌 > itchuu\ ;
+佳作 > kasaku\ ;
+寛仁 > kanjin\ ;
+瑶台 > youdai\ ;
+子役 > koyaku\ ;
+伏字 > fuseji\ ;
+耐水 > taisui\ ;
+上端 > joutan\ ;
+駄作 > dasaku\ ;
+丹田 > tanden\ ;
+三竿 > sankan\ ;
+人文 > jinmon\ ;
+駅伝 > ekiden\ ;
+体勢 > taisei\ ;
+字幕 > jimaku\ ;
+伝奏 > densou\ ;
+子弟 > shitei\ ;
+万端 > bantan\ ;
+上空 > joukuu\ ;
+獰猛 > neimou\ ;
+香合 > kougou\ ;
+片雲 > hen''un\ ;
+独英 > dokuei\ ;
+校内 > kounai\ ;
+日雀 > higara\ ;
+題簽 > daisen\ ;
+密偵 > mittei\ ;
+頻繁 > hinpan\ ;
+一策 > issaku\ ;
+何分 > nanpun\ ;
+牽連 > kenren\ ;
+孫子 > magoko\ ;
+介抱 > kaihou\ ;
+三種 > sanshu\ ;
+体制 > taisei\ ;
+饗宴 > kyouen\ ;
+上程 > joutei\ ;
+日陰 > hikage\ ;
+書生 > shosei\ ;
+旬間 > junkan\ ;
+馬克 > maruku\ ;
+官営 > kan''ei\ ;
+体刑 > taikei\ ;
+羽田 > haneda\ ;
+顆粒 > karyuu\ ;
+主班 > shuhan\ ;
+一笑 > isshou\ ;
+面頬 > menpoo\ ;
+日限 > higiri\ ;
+不祥 > fushou\ ;
+両目 > ryoume\ ;
+本源 > hongen\ ;
+肉屋 > nikuya\ ;
+胴体 > doutai\ ;
+姦計 > kankei\ ;
+交替 > koutai\ ;
+静養 > seiyou\ ;
+財政 > zaisei\ ;
+孤客 > kokaku\ ;
+令弟 > reitei\ ;
+株価 > kabuka\ ;
+美空 > misora\ ;
+更生 > kousei\ ;
+寄信 > kishin\ ;
+聖戦 > seisen\ ;
+中生 > nakate\ ;
+体内 > tainai\ ;
+背反 > haihan\ ;
+独自 > dokuji\ ;
+代弁 > daiben\ ;
+密使 > misshi\ ;
+東方 > touhou\ ;
+謹選 > kinsen\ ;
+豊潤 > houjun\ ;
+会場 > kaijou\ ;
+会報 > kaihou\ ;
+時評 > jihyou\ ;
+家元 > iemoto\ ;
+牧野 > bokuya\ ;
+面面 > menmen\ ;
+資性 > shisei\ ;
+事業 > jigyou\ ;
+丁稚 > detchi\ ;
+来書 > raisho\ ;
+日長 > hinaga\ ;
+五桁 > goketa\ ;
+会堂 > kaidou\ ;
+美称 > bishou\ ;
+密会 > mikkai\ ;
+賊徒 > zokuto\ ;
+猫科 > nekoka\ ;
+旅館 > ryokan\ ;
+胴乱 > douran\ ;
+任官 > ninkan\ ;
+貞操 > teisou\ ;
+交易 > koueki\ ;
+官命 > kanmei\ ;
+家僕 > kaboku\ ;
+主犯 > shuhan\ ;
+罫線 > keisen\ ;
+孟子 > moushi\ ;
+群盲 > gunmou\ ;
+胎動 > taidou\ ;
+昏迷 > konmei\ ;
+並用 > heiyou\ ;
+乳母 > nyuubo\ ;
+群盗 > guntou\ ;
+他心 > tashin\ ;
+老死 > roushi\ ;
+孝子 > koushi\ ;
+纏頭 > tentou\ ;
+犯行 > hankou\ ;
+豊満 > houman\ ;
+住僧 > juusou\ ;
+官名 > kanmei\ ;
+一票 > ippyou\ ;
+奔騰 > hontou\ ;
+査収 > sashuu\ ;
+二核 > nikaku\ ;
+実勢 > jissei\ ;
+仮屋 > kariya\ ;
+佞人 > neijin\ ;
+末法 > mappou\ ;
+香典 > kouden\ ;
+実効 > jikkou\ ;
+来方 > kikata\ ;
+警視 > keishi\ ;
+飲料 > inryou\ ;
+家信 > kashin\ ;
+官印 > kan''in\ ;
+人才 > jinsai\ ;
+人手 > hitode\ ;
+書状 > shojou\ ;
+容体 > youdai\ ;
+仮寝 > karine\ ;
+孔孟 > koumou\ ;
+仮家 > kariie\ ;
+孔子 > koushi\ ;
+胎内 > tainai\ ;
+仁愛 > jin''ai\ ;
+来攻 > raikou\ ;
+宝剣 > houken\ ;
+家作 > kasaku\ ;
+大麦 > oomugi\ ;
+狭義 > kyougi\ ;
+謝金 > shakin\ ;
+実刑 > jikkei\ ;
+養成 > yousei\ ;
+条文 > joubun\ ;
+校主 > koushu\ ;
+子守 > komori\ ;
+宿世 > sukuse\ ;
+奮闘 > funtou\ ;
+宗務 > shuumu\ ;
+婚礼 > konrei\ ;
+子孫 > shison\ ;
+三省 > sansei\ ;
+本殿 > honden\ ;
+三相 > sansou\ ;
+猛禽 > moukin\ ;
+宝刀 > houtou\ ;
+群生 > gunsei\ ;
+一石 > isseki\ ;
+実写 > jissha\ ;
+仁恵 > jinkei\ ;
+五日 > itsuka\ ;
+風浪 > fuurou\ ;
+智能 > chinou\ ;
+上皇 > joukou\ ;
+交換 > koukan\ ;
+享持 > kyouji\ ;
+一瞬 > isshun\ ;
+宝冠 > houkan\ ;
+官制 > kansei\ ;
+実兄 > jikkei\ ;
+宝典 > houten\ ;
+風洞 > fuudou\ ;
+斬首 > zanshu\ ;
+日銭 > hizeni\ ;
+乗法 > jouhou\ ;
+本欄 > honran\ ;
+献盃 > kenpai\ ;
+人情 > ninjou\ ;
+住人 > juunin\ ;
+仏師 > busshi\ ;
+家中 > kachuu\ ;
+家並 > yanami\ ;
+豊水 > housui\ ;
+賢妻 > kensai\ ;
+代官 > daikan\ ;
+丁目 > choume\ ;
+令孫 > reison\ ;
+仏工 > bukkou\ ;
+一目 > hitome\ ;
+肉塊 > nikkai\ ;
+京成 > keisei\ ;
+暮秋 > boshuu\ ;
+智者 > chisha\ ;
+方面 > houmen\ ;
+乾板 > kanpan\ ;
+存外 > zongai\ ;
+令嬢 > reijou\ ;
+美的 > biteki\ ;
+伶優 > reiyuu\ ;
+乾杯 > kanpai\ ;
+人性 > jinsei\ ;
+乗気 > noriki\ ;
+上番 > jouban\ ;
+狗肉 > kuniku\ ;
+風水 > fuusui\ ;
+乾材 > kanzai\ ;
+譜表 > fuhyou\ ;
+付属 > fuzoku\ ;
+上界 > joukai\ ;
+三番 > sanban\ ;
+学園 > gakuen\ ;
+旨酒 > shishu\ ;
+謙遜 > kenson\ ;
+上田 > jouden\ ;
+三界 > sangai\ ;
+夜鷹 > yotaka\ ;
+仲夏 > chuuka\ ;
+守勢 > shusei\ ;
+贈呈 > zoutei\ ;
+論題 > rondai\ ;
+伴僧 > bansou\ ;
+会同 > kaidou\ ;
+会合 > kaigou\ ;
+理学 > rigaku\ ;
+伺候 > shikou\ ;
+令婿 > reisei\ ;
+球宴 > kyuuen\ ;
+交戦 > kousen\ ;
+旧都 > kyuuto\ ;
+伯兄 > hakkei\ ;
+贈号 > zougou\ ;
+中火 > chuubi\ ;
+伝単 > dentan\ ;
+宣伝 > senden\ ;
+木槿 > mukuge\ ;
+方陣 > houjin\ ;
+贋印 > nisein\ ;
+令娘 > reijou\ ;
+背任 > hainin\ ;
+翻案 > hon''an\ ;
+王様 > ousama\ ;
+任地 > ninchi\ ;
+実体 > jittai\ ;
+一疋 > ippiki\ ;
+老来 > rourai\ ;
+物資 > busshi\ ;
+他宗 > tashuu\ ;
+旦那 > dan''na\ ;
+好配 > kouhai\ ;
+老杉 > rousan\ ;
+令姉 > reishi\ ;
+仕官 > shikan\ ;
+完全 > kanzen\ ;
+伝動 > dendou\ ;
+断面 > danmen\ ;
+令妹 > reimai\ ;
+夜鳥 > yachou\ ;
+猛省 > mousei\ ;
+一画 > ikkaku\ ;
+柔和 > nyuuwa\ ;
+早退 > soutai\ ;
+定例 > teirei\ ;
+現存 > genzon\ ;
+乱杭 > rangui\ ;
+伴侶 > hanryo\ ;
+交感 > koukan\ ;
+定住 > teijuu\ ;
+請願 > seigan\ ;
+守兵 > shuhei\ ;
+財形 > zaikei\ ;
+背中 > senaka\ ;
+特許 > tokkyo\ ;
+調馬 > chouba\ ;
+存在 > sonzai\ ;
+背丈 > setake\ ;
+特訓 > tokkun\ ;
+不猟 > furyou\ ;
+爆音 > bakuon\ ;
+交情 > koujou\ ;
+本案 > hon''an\ ;
+下獄 > gegoku\ ;
+今尚 > imanao\ ;
+本校 > honkou\ ;
+人工 > jinkou\ ;
+乱暴 > ranbou\ ;
+望樓 > bourou\ ;
+三猿 > mizaru\ ;
+論陣 > ronjin\ ;
+顕現 > kengen\ ;
+伶人 > reijin\ ;
+東征 > tousei\ ;
+斜頸 > shakei\ ;
+豪放 > gouhou\ ;
+一理 > ichiri\ ;
+主法 > shuhou\ ;
+謹言 > kingen\ ;
+朱書 > shusho\ ;
+館娃 > kan''ai\ ;
+片輪 > katawa\ ;
+望楼 > bourou\ ;
+安値 > yasune\ ;
+本来 > honrai\ ;
+明言 > meigen\ ;
+翰林 > kanrin\ ;
+令堂 > reidou\ ;
+明解 > meikai\ ;
+万状 > banjou\ ;
+宗主 > soushu\ ;
+霊魂 > reikon\ ;
+本木 > motoki\ ;
+青銅 > seidou\ ;
+一獲 > ikkaku\ ;
+本望 > honmou\ ;
+罹病 > ribyou\ ;
+願状 > ganjou\ ;
+末末 > suezue\ ;
+子嚢 > shinou\ ;
+本書 > honsho\ ;
+暗礁 > anshou\ ;
+明視 > meishi\ ;
+斜面 > shamen\ ;
+片身 > katami\ ;
+二手 > futate\ ;
+諒闇 > ryouan\ ;
+乱数 > ransuu\ ;
+調音 > chouon\ ;
+春蚕 > harugo\ ;
+好転 > kouten\ ;
+木末 > konure\ ;
+肌合 > hadaai\ ;
+京師 > keishi\ ;
+王朝 > ouchou\ ;
+館外 > kangai\ ;
+企及 > kikyuu\ ;
+謹製 > kinsei\ ;
+犬舎 > kensha\ ;
+雷鳴 > raimei\ ;
+任命 > ninmei\ ;
+書法 > shohou\ ;
+什宝 > juuhou\ ;
+人屋 > hitoya\ ;
+朦朧 > mourou\ ;
+朦朦 > moumou\ ;
+代地 > daichi\ ;
+中洲 > nakasu\ ;
+賛嘆 > santan\ ;
+日足 > hiashi\ ;
+青酸 > seisan\ ;
+斜陽 > shayou\ ;
+大風 > ookaze\ ;
+諸道 > shodou\ ;
+奪還 > dakkan\ ;
+中波 > chuuha\ ;
+音締 > nejime\ ;
+霊験 > reigen\ ;
+不為 > futame\ ;
+天顔 > tengan\ ;
+物見 > monomi\ ;
+本旨 > honshi\ ;
+壮齢 > sourei\ ;
+学務 > gakumu\ ;
+替歌 > kaeuta\ ;
+存命 > zonmei\ ;
+奮迅 > funjin\ ;
+賭博 > tobaku\ ;
+大願 > taigan\ ;
+杉戸 > sugido\ ;
+貧寒 > hinkan\ ;
+媾曳 > aibiki\ ;
+有様 > ariyou\ ;
+本文 > honmon\ ;
+件名 > kenmei\ ;
+来店 > raiten\ ;
+本数 > honsuu\ ;
+斧鑿 > fusaku\ ;
+来年 > rainen\ ;
+猛獣 > moujuu\ ;
+文題 > bundai\ ;
+王族 > ouzoku\ ;
+企劃 > kikaku\ ;
+五徳 > gotoku\ ;
+三災 > sansai\ ;
+好走 > kousou\ ;
+万点 > manten\ ;
+今夜 > kon''ya\ ;
+飯店 > hanten\ ;
+養子 > youshi\ ;
+中気 > chuuki\ ;
+顕然 > kenzen\ ;
+令嗣 > reishi\ ;
+謙譲 > kenjou\ ;
+壮麗 > sourei\ ;
+東岸 > tougan\ ;
+伝令 > denrei\ ;
+仏塔 > buttou\ ;
+霜雰 > soufun\ ;
+賞味 > shoumi\ ;
+頭痛 > zutsuu\ ;
+主権 > shuken\ ;
+雷魚 > raigyo\ ;
+万灯 > mandou\ ;
+聖壇 > seidan\ ;
+財宝 > zaihou\ ;
+講談 > koudan\ ;
+夜風 > yokaze\ ;
+貪婪 > donran\ ;
+献灯 > kentou\ ;
+伐倒 > battou\ ;
+現地 > genchi\ ;
+肢体 > shitai\ ;
+猛犬 > mouken\ ;
+更正 > kousei\ ;
+天雷 > tenrai\ ;
+朝晩 > asaban\ ;
+現在 > genzai\ ;
+他国 > takoku\ ;
+朗朗 > rourou\ ;
+仮名 > kemyou\ ;
+風景 > fuukei\ ;
+論鋒 > ronpou\ ;
+文面 > bunmen\ ;
+伎倆 > giryou\ ;
+餃子 > gyouza\ ;
+井底 > seitei\ ;
+学兄 > gakkei\ ;
+犯罪 > hanzai\ ;
+大難 > tainan\ ;
+中欧 > chuuou\ ;
+伝世 > densei\ ;
+賛同 > sandou\ ;
+不漁 > furyou\ ;
+太陽 > taiyou\ ;
+天際 > tensai\ ;
+暴状 > boujou\ ;
+旋転 > senten\ ;
+多額 > tagaku\ ;
+天険 > tenken\ ;
+聖堂 > seidou\ ;
+老手 > roushu\ ;
+会主 > kaishu\ ;
+東宮 > touguu\ ;
+東宝 > touhou\ ;
+聖域 > seiiki\ ;
+大隊 > daitai\ ;
+代品 > daihin\ ;
+月桂 > gekkei\ ;
+頓知 > tonchi\ ;
+老成 > rousei\ ;
+耐性 > taisei\ ;
+敵飛 > tekihi\ ;
+順礼 > junrei\ ;
+乗数 > jousuu\ ;
+夕顔 > yuugao\ ;
+乱戦 > ransen\ ;
+時習 > jishuu\ ;
+考慮 > kouryo\ ;
+断金 > dankin\ ;
+不測 > fusoku\ ;
+介在 > kaizai\ ;
+太閤 > taikou\ ;
+旧誼 > kyuugi\ ;
+整風 > seifuu\ ;
+任免 > ninmen\ ;
+存分 > zonbun\ ;
+令名 > reimei\ ;
+飲屋 > nomiya\ ;
+聖地 > seichi\ ;
+人外 > ningai\ ;
+斧鉞 > fuetsu\ ;
+夜霧 > yogiri\ ;
+猛然 > mouzen\ ;
+聯合 > rengou\ ;
+人士 > jinshi\ ;
+面貌 > menbou\ ;
+販売 > hanbai\ ;
+乾性 > kansei\ ;
+主根 > shukon\ ;
+大関 > oozeki\ ;
+旧詠 > kyuuei\ ;
+今回 > konkai\ ;
+日誌 > nisshi\ ;
+早計 > soukei\ ;
+代参 > daisan\ ;
+大門 > daimon\ ;
+本拠 > honkyo\ ;
+有望 > yuubou\ ;
+狡知 > kouchi\ ;
+飮屋 > nomiya\ ;
+整頓 > seiton\ ;
+旧記 > kyuuki\ ;
+課長 > kachou\ ;
+妄言 > mougen\ ;
+諸賢 > shoken\ ;
+晩稲 > bantou\ ;
+些少 > sashou\ ;
+亡子 > boushi\ ;
+貴国 > kikoku\ ;
+旅路 > tabiji\ ;
+豪快 > goukai\ ;
+日計 > nikkei\ ;
+早見 > hayami\ ;
+電顕 > denken\ ;
+館員 > kan''in\ ;
+賢兄 > kenkei\ ;
+外電 > gaiden\ ;
+現員 > gen''in\ ;
+板塀 > itabei\ ;
+片言 > hengen\ ;
+交媾 > koukou\ ;
+下流 > karyuu\ ;
+罪状 > zaijou\ ;
+旧規 > kyuuki\ ;
+斯道 > shidou\ ;
+現品 > genpin\ ;
+玩弄 > ganrou\ ;
+放鷹 > houyou\ ;
+学会 > gakkai\ ;
+奉還 > houkan\ ;
+不況 > fukyou\ ;
+奉遷 > housen\ ;
+誓願 > seigan\ ;
+本懐 > honkai\ ;
+丹朱 > tanshu\ ;
+大鑑 > taikan\ ;
+丸木 > maruki\ ;
+学事 > gakuji\ ;
+月旦 > gettan\ ;
+夜長 > yonaga\ ;
+東天 > touten\ ;
+奉送 > housou\ ;
+東大 > toudai\ ;
+面談 > mendan\ ;
+奉迎 > hougei\ ;
+書林 > shorin\ ;
+奸計 > kankei\ ;
+燕雀 > enjaku\ ;
+有数 > yuusuu\ ;
+狼狽 > roubai\ ;
+媒染 > baisen\ ;
+繁閑 > hankan\ ;
+仲値 > nakane\ ;
+上水 > jousui\ ;
+誘電 > yuuden\ ;
+時給 > jikyuu\ ;
+雄鶏 > ondori\ ;
+晴着 > haregi\ ;
+罰点 > batten\ ;
+亡姉 > boushi\ ;
+大鎌 > oogama\ ;
+亡妻 > bousai\ ;
+青豆 > aomame\ ;
+貧困 > hinkon\ ;
+仲保 > chuuho\ ;
+珍奇 > chinki\ ;
+謀計 > boukei\ ;
+主旨 > shushi\ ;
+亢奮 > koufun\ ;
+版行 > hankou\ ;
+大鍋 > oonabe\ ;
+暴漢 > boukan\ ;
+上段 > joudan\ ;
+最早 > mohaya\ ;
+雷電 > raiden\ ;
+万民 > banmin\ ;
+老廃 > rouhai\ ;
+令兄 > reikei\ ;
+委縮 > ishuku\ ;
+乗手 > norite\ ;
+仏参 > bussan\ ;
+昇華 > shouka\ ;
+一泊 > ippaku\ ;
+諷諌 > fuukan\ ;
+主文 > shubun\ ;
+雄鳥 > ondori\ ;
+現勢 > gensei\ ;
+老幼 > rouyou\ ;
+語長 > gochou\ ;
+奔走 > honsou\ ;
+老年 > rounen\ ;
+中期 > chuuki\ ;
+三死 > sanshi\ ;
+他力 > tariki\ ;
+本性 > honsei\ ;
+付則 > fusoku\ ;
+翻弄 > honrou\ ;
+財団 > zaidan\ ;
+謙虚 > kenkyo\ ;
+代僧 > daisou\ ;
+予審 > yoshin\ ;
+主攻 > shukou\ ;
+誌面 > shimen\ ;
+万死 > banshi\ ;
+老師 > roushi\ ;
+万歳 > manzai\ ;
+子供 > kodomo\ ;
+存亡 > sonbou\ ;
+二子 > futago\ ;
+上欄 > jouran\ ;
+仮作 > kasaku\ ;
+順番 > junban\ ;
+賢人 > kenjin\ ;
+雲集 > unshuu\ ;
+諳誦 > anshou\ ;
+雲雀 > hibari\ ;
+現前 > genzen\ ;
+老巧 > roukou\ ;
+介卵 > kairan\ ;
+大鉈 > oonata\ ;
+詩魂 > shikon\ ;
+奇蹟 > kiseki\ ;
+羊水 > yousui\ ;
+群棲 > gunsei\ ;
+難題 > nandai\ ;
+天金 > tenkin\ ;
+本影 > hon''ei\ ;
+耐寒 > taikan\ ;
+天重 > tenjuu\ ;
+並木 > namiki\ ;
+本当 > hontou\ ;
+斜辺 > shahen\ ;
+賢主 > kenshu\ ;
+書斎 > shosai\ ;
+羊毛 > youmou\ ;
+大金 > taikin\ ;
+静観 > seikan\ ;
+奇跡 > kiseki\ ;
+仁君 > jinkun\ ;
+不様 > buzama\ ;
+人員 > jin''in\ ;
+中日 > nakabi\ ;
+末弟 > mattei\ ;
+人品 > jinpin\ ;
+三権 > sanken\ ;
+諮詢 > shijun\ ;
+縦隊 > juutai\ ;
+一次 > ichiji\ ;
+熱風 > neppuu\ ;
+象嵌 > zougan\ ;
+大酔 > taisui\ ;
+上様 > uezama\ ;
+大酒 > oozake\ ;
+人命 > jinmei\ ;
+縦陣 > juujin\ ;
+嫁御 > yomego\ ;
+賞与 > shouyo\ ;
+朝恩 > chouon\ ;
+本店 > honten\ ;
+雲間 > kumoma\ ;
+始終 > shijuu\ ;
+論賛 > ronsan\ ;
+更改 > koukai\ ;
+敢闘 > kantou\ ;
+人君 > jinkun\ ;
+現像 > genzou\ ;
+人名 > jinmei\ ;
+夭逝 > yousei\ ;
+散開 > sankai\ ;
+仏典 > butten\ ;
+三業 > sangou\ ;
+諫言 > kangen\ ;
+代任 > dainin\ ;
+羨望 > senbou\ ;
+試験 > shiken\ ;
+世柄 > yogara\ ;
+人口 > jinkou\ ;
+語録 > goroku\ ;
+易者 > ekisha\ ;
+天道 > tendou\ ;
+人参 > ninjin\ ;
+天遍 > tenpen\ ;
+天運 > ten''un\ ;
+一樹 > ichiju\ ;
+代人 > dainin\ ;
+今冬 > kontou\ ;
+上棟 > joutou\ ;
+大道 > daidou\ ;
+離隔 > rikaku\ ;
+仏僧 > bussou\ ;
+多量 > taryou\ ;
+日蔭 > hikage\ ;
+聖典 > seiten\ ;
+暴民 > boumin\ ;
+離陸 > ririku\ ;
+老害 > rougai\ ;
+文選 > bunsen\ ;
+上梓 > joushi\ ;
+木工 > mokkou\ ;
+乱射 > ransha\ ;
+天辺 > teppen\ ;
+責務 > sekimu\ ;
+文運 > bun''un\ ;
+旅装 > ryosou\ ;
+諦観 > teikan\ ;
+老子 > roushi\ ;
+豊年 > hounen\ ;
+大農 > dainou\ ;
+方言 > hougen\ ;
+奏請 > sousei\ ;
+三桁 > miketa\ ;
+本島 > hontou\ ;
+主戦 > shusen\ ;
+老嬢 > roujou\ ;
+聖像 > seizou\ ;
+三校 > sankou\ ;
+旅行 > ryokou\ ;
+難関 > nankan\ ;
+新語 > shingo\ ;
+大輪 > tairin\ ;
+不朽 > fukyuu\ ;
+放題 > houdai\ ;
+本山 > honzan\ ;
+天軍 > tengun\ ;
+三枚 > sanmai\ ;
+板前 > itamae\ ;
+現代 > gendai\ ;
+頻死 > hinshi\ ;
+燐鉱 > rinkou\ ;
+仁兄 > jinkei\ ;
+本屋 > hon''ya\ ;
+不服 > fufuku\ ;
+電鈴 > denrei\ ;
+三板 > sanpan\ ;
+類本 > ruihon\ ;
+声門 > seimon\ ;
+曚昧 > moumai\ ;
+現今 > genkon\ ;
+風帯 > fuutai\ ;
+享受 > kyouju\ ;
+風師 > fuushi\ ;
+仙丹 > sentan\ ;
+人出 > hitode\ ;
+類書 > ruisho\ ;
+本尊 > honzon\ ;
+上期 > kamiki\ ;
+熱闘 > nettou\ ;
+珍味 > chinmi\ ;
+書房 > shobou\ ;
+一案 > ichian\ ;
+三本 > sanbon\ ;
+養分 > youbun\ ;
+有性 > yuusei\ ;
+万来 > banrai\ ;
+豪奢 > gousha\ ;
+改題 > kaidai\ ;
+上書 > jousho\ ;
+木屑 > kikuzu\ ;
+仏会 > butsue\ ;
+館主 > kanshu\ ;
+三曹 > sansou\ ;
+三更 > sankou\ ;
+献杯 > kenpai\ ;
+亡命 > boumei\ ;
+東半 > touhan\ ;
+故障 > koshou\ ;
+断言 > dangen\ ;
+外遊 > gaiyuu\ ;
+有志 > yuushi\ ;
+本官 > honkan\ ;
+玉屋 > tamaya\ ;
+交合 > kougou\ ;
+新規 > shinki\ ;
+老妻 > rousai\ ;
+王将 > oushou\ ;
+仕上 > shiage\ ;
+豪壮 > gousou\ ;
+願望 > ganmou\ ;
+爬虫 > hachuu\ ;
+聖体 > seitai\ ;
+献本 > kenpon\ ;
+耕地 > kouchi\ ;
+中手 > nakate\ ;
+上智 > jouchi\ ;
+最悪 > saiaku\ ;
+燐酸 > rinsan\ ;
+独演 > dokuen\ ;
+失費 > shippi\ ;
+交友 > kouyuu\ ;
+願書 > gansho\ ;
+末孫 > masson\ ;
+亡君 > boukun\ ;
+警砲 > keihou\ ;
+暗流 > anryuu\ ;
+聖伝 > seiden\ ;
+末子 > masshi\ ;
+三景 > sankei\ ;
+王宮 > oukyuu\ ;
+嫌嫌 > iyaiya\ ;
+放電 > houden\ ;
+雌雄 > shiyuu\ ;
+有形 > yuukei\ ;
+翠嵐 > suiran\ ;
+食器 > shokki\ ;
+大足 > ooashi\ ;
+聖代 > seidai\ ;
+亡友 > bouyuu\ ;
+美服 > bifuku\ ;
+今今 > imaima\ ;
+三昧 > sanmai\ ;
+一朶 > ichida\ ;
+今人 > konjin\ ;
+聖人 > seijin\ ;
+獣性 > juusei\ ;
+雲量 > unryou\ ;
+上旬 > joujun\ ;
+大赦 > taisha\ ;
+上旨 > joushi\ ;
+一朝 > itchou\ ;
+夢路 > yumeji\ ;
+一服 > ippuku\ ;
+奇襲 > kishuu\ ;
+不敵 > futeki\ ;
+談論 > danron\ ;
+両拳 > janken\ ;
+上方 > jouhou\ ;
+玉子 > tamago\ ;
+飯台 > handai\ ;
+日航 > nikkou\ ;
+明細 > meisai\ ;
+羈束 > kisoku\ ;
+罷業 > higyou\ ;
+人偏 > ninben\ ;
+外輪 > gairin\ ;
+天賜 > tenshi\ ;
+三方 > sanpou\ ;
+青藍 > seiran\ ;
+天資 > tenshi\ ;
+韲物 > aemono\ ;
+上文 > joubun\ ;
+主従 > shujuu\ ;
+断裁 > dansai\ ;
+人倫 > jinrin\ ;
+請訓 > seikun\ ;
+猥本 > waihon\ ;
+乾坤 > kenkon\ ;
+乱売 > ranbai\ ;
+三文 > sanmon\ ;
+大賢 > taiken\ ;
+万方 > banpou\ ;
+変遷 > hensen\ ;
+題材 > daizai\ ;
+今上 > kinjou\ ;
+聖上 > seijou\ ;
+外車 > gaisha\ ;
+電送 > densou\ ;
+玄孫 > genson\ ;
+攻防 > koubou\ ;
+両手 > ryoute\ ;
+七日 > nanoka\ ;
+断行 > dankou\ ;
+朝家 > chouka\ ;
+変造 > henzou\ ;
+願文 > ganmon\ ;
+本姓 > honsei\ ;
+一昨 > issaku\ ;
+奉行 > bugyou\ ;
+負傷 > fushou\ ;
+仁人 > jinjin\ ;
+本妻 > honsai\ ;
+風害 > fuugai\ ;
+嫉妬 > shitto\ ;
+謝罪 > shazai\ ;
+猟期 > ryouki\ ;
+人体 > nintei\ ;
+日脚 > hiashi\ ;
+文豪 > bungou\ ;
+一新 > isshin\ ;
+主幹 > shukan\ ;
+施薬 > seyaku\ ;
+独泳 > dokuei\ ;
+斜視 > shashi\ ;
+天譴 > tenken\ ;
+数軒 > suuken\ ;
+天警 > tenkei\ ;
+誹諧 > haikai\ ;
+罪業 > zaigou\ ;
+支隊 > shitai\ ;
+早老 > sourou\ ;
+電車 > densha\ ;
+獣帯 > juutai\ ;
+一攫 > ikkaku\ ;
+主帆 > shuhan\ ;
+類推 > ruisui\ ;
+明答 > meitou\ ;
+上提 > joutei\ ;
+線香 > senkou\ ;
+変転 > henten\ ;
+一擲 > itteki\ ;
+上掲 > joukei\ ;
+来冦 > raikou\ ;
+猛暑 > mousho\ ;
+諸芸 > shogei\ ;
+亡兄 > boukei\ ;
+予告 > yokoku\ ;
+不振 > fushin\ ;
+書店 > shoten\ ;
+人世 > jinsei\ ;
+本塁 > honrui\ ;
+貧乏 > binbou\ ;
+来光 > raikou\ ;
+外資 > gaishi\ ;
+燻製 > kunsei\ ;
+風姿 > fuushi\ ;
+離郷 > rikyou\ ;
+本堂 > hondou\ ;
+九夏 > kyuuka\ ;
+青草 > aokusa\ ;
+諸般 > shohan\ ;
+外貌 > gaibou\ ;
+既習 > kishuu\ ;
+中座 > chuuza\ ;
+犬猿 > ken''en\ ;
+主峰 > shuhou\ ;
+不承 > fushou\ ;
+罰杯 > bappai\ ;
+頸木 > kubiki\ ;
+三拝 > sanpai\ ;
+妖精 > yousei\ ;
+乙夜 > otsuya\ ;
+頓死 > tonshi\ ;
+有害 > yuugai\ ;
+習字 > shuuji\ ;
+大計 > taikei\ ;
+春着 > harugi\ ;
+一掬 > ikkiku\ ;
+編隊 > hentai\ ;
+亭亭 > teitei\ ;
+天覧 > tenran\ ;
+読誦 > dokuju\ ;
+順法 > junpou\ ;
+京人 > keijin\ ;
+敗退 > haitai\ ;
+猛攻 > moukou\ ;
+大観 > taikan\ ;
+二割 > niwari\ ;
+木型 > kigata\ ;
+三才 > sansai\ ;
+望外 > bougai\ ;
+中州 > nakasu\ ;
+義心 > gishin\ ;
+大要 > taiyou\ ;
+一挺 > itchou\ ;
+暮春 > boshun\ ;
+主導 > shudou\ ;
+娯楽 > goraku\ ;
+亭主 > teishu\ ;
+万才 > manzai\ ;
+暴政 > bousei\ ;
+誤謬 > gobyuu\ ;
+旧縁 > kyuuen\ ;
+亀卜 > kiboku\ ;
+読解 > dokkai\ ;
+主宰 > shusai\ ;
+王国 > oukoku\ ;
+多読 > tadoku\ ;
+風塵 > fuujin\ ;
+士道 > shidou\ ;
+頌歌 > shouka\ ;
+交代 > koutai\ ;
+乗場 > noriba\ ;
+東上 > toujou\ ;
+夢見 > yumemi\ ;
+両度 > ryoudo\ ;
+変貌 > henbou\ ;
+頻数 > hinsuu\ ;
+誤読 > godoku\ ;
+一把 > ichiwa\ ;
+頭書 > tousho\ ;
+晦渋 > kaijuu\ ;
+不惑 > fuwaku\ ;
+珍事 > chinji\ ;
+敗軍 > haigun\ ;
+来会 > raikai\ ;
+一打 > ichida\ ;
+条例 > jourei\ ;
+一手 > hitote\ ;
+来任 > rainin\ ;
+智歯 > chishi\ ;
+曾孫 > himago\ ;
+誤診 > goshin\ ;
+誤訳 > goyaku\ ;
+曽孫 > himago\ ;
+縦走 > juusou\ ;
+本営 > hon''ei\ ;
+日経 > nikkei\ ;
+朗報 > rouhou\ ;
+多角 > takaku\ ;
+万感 > bankan\ ;
+奈落 > naraku\ ;
+妨碍 > bougai\ ;
+語調 > gochou\ ;
+夜襲 > yashuu\ ;
+犠牛 > gigyuu\ ;
+豪勢 > gousei\ ;
+不急 > fukyuu\ ;
+日系 > nikkei\ ;
+春画 > shunga\ ;
+条件 > jouken\ ;
+雅量 > garyou\ ;
+条令 > jourei\ ;
+豪勇 > gouyuu\ ;
+散財 > sanzai\ ;
+熔銑 > yousen\ ;
+不忠 > fuchuu\ ;
+既約 > kiyaku\ ;
+外観 > gaikan\ ;
+随順 > zuijun\ ;
+来世 > raisei\ ;
+縦貫 > juukan\ ;
+不徳 > futoku\ ;
+緑雨 > ryokuu\ ;
+本員 > hon''in\ ;
+電請 > densei\ ;
+外見 > sotomi\ ;
+三思 > sanshi\ ;
+昏睡 > konsui\ ;
+詩選 > shisen\ ;
+面繋 > omogai\ ;
+際限 > saigen\ ;
+新芽 > shinme\ ;
+有声 > yuusei\ ;
+乳化 > nyuuka\ ;
+敗走 > haisou\ ;
+政道 > seidou\ ;
+数詞 > suushi\ ;
+訪韓 > houkan\ ;
+明眸 > meibou\ ;
+頭数 > tousuu\ ;
+暴挙 > boukyo\ ;
+獣姦 > juukan\ ;
+隔離 > kakuri\ ;
+本命 > honmei\ ;
+類形 > ruikei\ ;
+中子 > nakago\ ;
+老功 > roukou\ ;
+曳子 > hikiko\ ;
+天蚕 > tensan\ ;
+放送 > housou\ ;
+太虚 > taikyo\ ;
+外装 > gaisou\ ;
+本名 > honmei\ ;
+改選 > kaisen\ ;
+上弦 > jougen\ ;
+女給 > jokyuu\ ;
+電解 > denkai\ ;
+三弦 > sangen\ ;
+置換 > chikan\ ;
+誓詞 > seishi\ ;
+二伸 > nishin\ ;
+月報 > geppou\ ;
+最大 > saidai\ ;
+燻蒸 > kunjou\ ;
+云云 > un''nun\ ;
+隙間 > sukima\ ;
+最外 > saigai\ ;
+婦徳 > futoku\ ;
+暴戻 > bourei\ ;
+改造 > kaizou\ ;
+大虎 > oodora\ ;
+陵駕 > ryouga\ ;
+売買 > baibai\ ;
+支配 > shihai\ ;
+並存 > heizon\ ;
+丸太 > maruta\ ;
+村会 > sonkai\ ;
+美徳 > bitoku\ ;
+未収 > mishuu\ ;
+一応 > ichiou\ ;
+詠進 > eishin\ ;
+群島 > guntou\ ;
+誓言 > seigen\ ;
+群峰 > gunpou\ ;
+服地 > fukuji\ ;
+謝礼 > sharei\ ;
+一心 > isshin\ ;
+木叢 > komura\ ;
+両家 > ryouke\ ;
+一徳 > ittoku\ ;
+二人 > futari\ ;
+老兵 > rouhei\ ;
+狂気 > kyouki\ ;
+一得 > ittoku\ ;
+総門 > soumon\ ;
+老公 > roukou\ ;
+片端 > katawa\ ;
+獄屋 > gokuya\ ;
+講社 > kousha\ ;
+一往 > ichiou\ ;
+頌栄 > shouei\ ;
+煎餅 > senbei\ ;
+上帯 > uwaobi\ ;
+雑踏 > zattou\ ;
+更始 > koushi\ ;
+文藻 > bunsou\ ;
+上帝 > joutei\ ;
+老優 > rouyuu\ ;
+熱賛 > nessan\ ;
+教護 > kyougo\ ;
+乳児 > nyuuji\ ;
+一張 > itchou\ ;
+上巻 > joukan\ ;
+暴慢 > bouman\ ;
+上巳 > joushi\ ;
+群居 > gunkyo\ ;
+纏綿 > tenmen\ ;
+媾合 > kougou\ ;
+老僧 > rousou\ ;
+争乱 > souran\ ;
+猛悪 > mouaku\ ;
+奏聞 > soumon\ ;
+大蔵 > ookura\ ;
+変装 > hensou\ ;
+万巻 > mangan\ ;
+頓智 > tonchi\ ;
+狂歌 > kyouka\ ;
+日程 > nittei\ ;
+姦淫 > kan''in\ ;
+丁度 > choudo\ ;
+天蓋 > tengai\ ;
+教諭 > kyouyu\ ;
+獅子 > shishi\ ;
+一座 > ichiza\ ;
+中央 > chuuou\ ;
+奏者 > sousha\ ;
+丁年 > teinen\ ;
+乗合 > noriai\ ;
+音標 > onpyou\ ;
+散見 > sanken\ ;
+乗号 > jougou\ ;
+暴悪 > bouaku\ ;
+本初 > honsho\ ;
+風向 > fuukou\ ;
+詩趣 > shishu\ ;
+本分 > honbun\ ;
+救護 > kyuugo\ ;
+縦覧 > juuran\ ;
+一幅 > ippuku\ ;
+耐乏 > taibou\ ;
+服喪 > fukumo\ ;
+木剣 > bokken\ ;
+縫製 > housei\ ;
+一席 > isseki\ ;
+大葬 > taisou\ ;
+大著 > taicho\ ;
+擬革 > gikaku\ ;
+世子 > seishi\ ;
+論者 > ronsha\ ;
+論考 > ronkou\ ;
+音楽 > ongaku\ ;
+朗吟 > rougin\ ;
+雪見 > yukimi\ ;
+物産 > bussan\ ;
+乱倫 > ranrin\ ;
+雲表 > unpyou\ ;
+牛皮 > gyuuhi\ ;
+上層 > jousou\ ;
+難訓 > nankun\ ;
+乳価 > nyuuka\ ;
+不審 > fushin\ ;
+翻倒 > hontou\ ;
+老体 > routai\ ;
+陸離 > rikuri\ ;
+擡頭 > taitou\ ;
+奇習 > kishuu\ ;
+難解 > nankai\ ;
+断罪 > danzai\ ;
+訓電 > kunden\ ;
+牢番 > rouban\ ;
+時流 > jiryuu\ ;
+斬罪 > zanzai\ ;
+旅籠 > hatago\ ;
+敢行 > kankou\ ;
+赤々 > akaaka\ ;
+晴朗 > seirou\ ;
+三封 > sanpuu\ ;
+熱誠 > nessei\ ;
+三寸 > sanzun\ ;
+不学 > fugaku\ ;
+万尋 > banjin\ ;
+老人 > roujin\ ;
+猶子 > yuushi\ ;
+晴曇 > seidon\ ;
+上官 > joukan\ ;
+三宝 > sanpou\ ;
+風前 > fuuzen\ ;
+陣風 > jinpuu\ ;
+玄冬 > gentou\ ;
+集貨 > shuuka\ ;
+率先 > sossen\ ;
+風刺 > fuushi\ ;
+隧道 > suidou\ ;
+壮観 > soukan\ ;
+最善 > saizen\ ;
+罪悪 > zaiaku\ ;
+万宝 > banpou\ ;
+暖房 > danbou\ ;
+敬虔 > keiken\ ;
+隣邦 > rinpou\ ;
+乱交 > rankou\ ;
+老中 > roujuu\ ;
+本俸 > honpou\ ;
+女神 > megami\ ;
+犬歯 > kenshi\ ;
+青筋 > aosuji\ ;
+諸種 > shoshu\ ;
+陣頭 > jintou\ ;
+頽廃 > taihai\ ;
+有名 > yuumei\ ;
+朋友 > houyuu\ ;
+文芸 > bungei\ ;
+陰陽 > on''you\ ;
+有司 > yuushi\ ;
+有史 > yuushi\ ;
+詳記 > shouki\ ;
+丁寧 > teinei\ ;
+一将 > isshou\ ;
+一対 > ittsui\ ;
+義塾 > gijuku\ ;
+一寸 > chotto\ ;
+大船 > oobune\ ;
+青竹 > aodake\ ;
+一審 > isshin\ ;
+革砥 > kawato\ ;
+雑誌 > zasshi\ ;
+片眼 > katame\ ;
+断線 > dansen\ ;
+乱世 > ransei\ ;
+熟議 > jukugi\ ;
+世変 > seihen\ ;
+本体 > hontai\ ;
+風光 > fuukou\ ;
+主命 > shumei\ ;
+隠逸 > initsu\ ;
+大臣 > daijin\ ;
+美学 > bigaku\ ;
+一宗 > isshuu\ ;
+詩論 > shiron\ ;
+片目 > katame\ ;
+政論 > seiron\ ;
+丁子 > chouji\ ;
+率倒 > sottou\ ;
+服務 > fukumu\ ;
+青空 > aozora\ ;
+政談 > seidan\ ;
+有半 > yuuhan\ ;
+一字 > ichiji\ ;
+雑言 > zougon\ ;
+繋船 > keisen\ ;
+本件 > honken\ ;
+放談 > houdan\ ;
+主君 > shukun\ ;
+丸味 > marumi\ ;
+本代 > hondai\ ;
+大腿 > daitai\ ;
+試論 > shiron\ ;
+晩景 > bankei\ ;
+下姓 > geshou\ ;
+壮行 > soukou\ ;
+妙王 > myouou\ ;
+大脳 > dainou\ ;
+旅程 > ryotei\ ;
+奉納 > hounou\ ;
+熟語 > jukugo\ ;
+霊芝 > reishi\ ;
+有効 > yuukou\ ;
+狙撃 > sogeki\ ;
+有功 > yuukou\ ;
+猶太 > yudaya\ ;
+夜船 > yofune\ ;
+未了 > miryou\ ;
+姓氏 > seishi\ ;
+上奏 > jousou\ ;
+放言 > hougen\ ;
+大胆 > daitan\ ;
+上天 > jouten\ ;
+早産 > souzan\ ;
+大股 > oomata\ ;
+最南 > sainan\ ;
+天聞 > tenbun\ ;
+訴追 > sotsui\ ;
+猛射 > mousha\ ;
+詠誦 > eishou\ ;
+晦日 > misoka\ ;
+繭糸 > kenshi\ ;
+政見 > seiken\ ;
+猟季 > ryouki\ ;
+妄用 > bouyou\ ;
+曹司 > soushi\ ;
+記録 > kiroku\ ;
+書名 > shomei\ ;
+大聖 > taisei\ ;
+月刊 > gekkan\ ;
+万天 > banten\ ;
+三士 > sanshi\ ;
+中和 > chuuwa\ ;
+主動 > shudou\ ;
+改訂 > kaitei\ ;
+中味 > nakami\ ;
+日産 > nissan\ ;
+面相 > mensou\ ;
+美妙 > bimyou\ ;
+評議 > hyougi\ ;
+斜線 > shasen\ ;
+大老 > tairou\ ;
+朋党 > houtou\ ;
+風体 > fuutei\ ;
+牝牛 > meushi\ ;
+増配 > zouhai\ ;
+面皰 > menbou\ ;
+乃公 > naikou\ ;
+陣門 > jinmon\ ;
+昂然 > kouzen\ ;
+一女 > ichijo\ ;
+上場 > joujou\ ;
+降順 > koujun\ ;
+大群 > taigun\ ;
+院長 > inchou\ ;
+中句 > chuuku\ ;
+三塁 > sanrui\ ;
+最前 > saizen\ ;
+隻語 > sekigo\ ;
+曇天 > donten\ ;
+月光 > gekkou\ ;
+謝状 > shajou\ ;
+霊能 > reinou\ ;
+主刑 > shukei\ ;
+続開 > zokkai\ ;
+姻族 > inzoku\ ;
+丹前 > tanzen\ ;
+奉答 > houtou\ ;
+丸剤 > ganzai\ ;
+大罪 > daizai\ ;
+一夢 > ichimu\ ;
+最初 > saisho\ ;
+一夜 > hitoyo\ ;
+一夕 > isseki\ ;
+万場 > manjou\ ;
+諸相 > shosou\ ;
+類型 > ruikei\ ;
+奇策 > kisaku\ ;
+評語 > hyougo\ ;
+婚姻 > kon''in\ ;
+与圧 > yoatsu\ ;
+熔解 > youkai\ ;
+解題 > kaidai\ ;
+多肉 > taniku\ ;
+与国 > yokoku\ ;
+改装 > kaisou\ ;
+試行 > shikou\ ;
+暗幕 > anmaku\ ;
+隆運 > ryuuun\ ;
+旋盤 > senban\ ;
+降霜 > kousou\ ;
+誘致 > yuuchi\ ;
+暖帯 > dantai\ ;
+下国 > gekoku\ ;
+暫定 > zantei\ ;
+智慮 > chiryo\ ;
+警棒 > keibou\ ;
+断種 > danshu\ ;
+独往 > dokuou\ ;
+韜晦 > toukai\ ;
+晋書 > shinjo\ ;
+猟奇 > ryouki\ ;
+三囲 > mitsui\ ;
+外聞 > gaibun\ ;
+三回 > sankai\ ;
+月俸 > geppou\ ;
+特派 > tokuha\ ;
+主催 > shusai\ ;
+主傘 > shusan\ ;
+雁行 > gankou\ ;
+天網 > tenmou\ ;
+陶酔 > tousui\ ;
+書写 > shosha\ ;
+斑紋 > hanmon\ ;
+顕在 > kenzai\ ;
+有体 > yuutai\ ;
+大綱 > taikou\ ;
+姦智 > kanchi\ ;
+熏製 > kunsei\ ;
+獄吏 > gokuri\ ;
+独座 > dokuza\ ;
+緩解 > kankai\ ;
+三嘆 > santan\ ;
+奉祀 > houshi\ ;
+一国 > ikkoku\ ;
+娼家 > shouka\ ;
+晃曜 > kouyou\ ;
+猟場 > ryouba\ ;
+領布 > ryoufu\ ;
+片片 > henpen\ ;
+一因 > ichiin\ ;
+霧笛 > muteki\ ;
+陸運 > rikuun\ ;
+有人 > yuujin\ ;
+無闇 > muyami\ ;
+晩成 > bansei\ ;
+雄蜂 > obachi\ ;
+防風 > boufuu\ ;
+詩藻 > shisou\ ;
+大系 > taikei\ ;
+絹雲 > ken''un\ ;
+煮豆 > nimame\ ;
+熔融 > youyuu\ ;
+主体 > shutai\ ;
+訓連 > kunren\ ;
+万善 > manzen\ ;
+天籟 > tenrai\ ;
+文系 > bunkei\ ;
+最低 > saitei\ ;
+繋累 > keirui\ ;
+読経 > dokyou\ ;
+繊細 > sensai\ ;
+施療 > seryou\ ;
+主任 > shunin\ ;
+敬老 > keirou\ ;
+順当 > juntou\ ;
+陽転 > youten\ ;
+両刃 > ryouba\ ;
+絞首 > koushu\ ;
+日焼 > hiyake\ ;
+上品 > joubon\ ;
+放蕩 > houtou\ ;
+主人 > shujin\ ;
+顫動 > sendou\ ;
+雄蘂 > yuuzui\ ;
+阻隔 > sokaku\ ;
+難船 > nansen\ ;
+隆起 > ryuuki\ ;
+順延 > jun''en\ ;
+難航 > nankou\ ;
+娼婦 > shoufu\ ;
+委曲 > ikyoku\ ;
+中値 > nakane\ ;
+奇矯 > kikyou\ ;
+緩行 > kankou\ ;
+外線 > gaisen\ ;
+姻戚 > inseki\ ;
+昭栄 > shouei\ ;
+類同 > ruidou\ ;
+誦経 > zukyou\ ;
+早瀬 > hayase\ ;
+詞藻 > shisou\ ;
+書体 > shotai\ ;
+中保 > chuuho\ ;
+緒論 > choron\ ;
+上向 > joukou\ ;
+註記 > chuuki\ ;
+主上 > shujou\ ;
+最中 > monaka\ ;
+上司 > joushi\ ;
+姿態 > shitai\ ;
+雑菌 > zakkin\ ;
+文範 > bunpan\ ;
+新盆 > niibon\ ;
+増資 > zoushi\ ;
+雄蕊 > yuuzui\ ;
+最上 > mogami\ ;
+大筋 > oosuji\ ;
+媒体 > baitai\ ;
+爆破 > bakuha\ ;
+総論 > souron\ ;
+一員 > ichiin\ ;
+天童 > tendou\ ;
+献呈 > kentei\ ;
+独居 > dokkyo\ ;
+娼妓 > shougi\ ;
+特権 > tokken\ ;
+訳語 > yakugo\ ;
+外紙 > gaishi\ ;
+中佐 > chuusa\ ;
+万口 > bankou\ ;
+雑草 > zassou\ ;
+上半 > jouhan\ ;
+陸路 > rikuro\ ;
+媒介 > baikai\ ;
+天空 > tenkuu\ ;
+緒言 > chogen\ ;
+更代 > koutai\ ;
+訴訟 > soshou\ ;
+需給 > jukyuu\ ;
+頭声 > tousei\ ;
+三千 > sanzen\ ;
+三十 > sanjuu\ ;
+改葬 > kaisou\ ;
+与力 > yoriki\ ;
+経験 > keiken\ ;
+早漏 > sourou\ ;
+電線 > densen\ ;
+大空 > oozora\ ;
+外米 > gaimai\ ;
+総計 > soukei\ ;
+万千 > bansen\ ;
+天稟 > tenpin\ ;
+訳解 > yakkai\ ;
+繁簡 > hankan\ ;
+中二 > chuuni\ ;
+奇癖 > kiheki\ ;
+敏腕 > binwan\ ;
+天秤 > tenbin\ ;
+索麺 > soumen\ ;
+総覧 > souran\ ;
+群像 > gunzou\ ;
+総見 > souken\ ;
+素麺 > soumen\ ;
+曙光 > shokou\ ;
+敗者 > haisha\ ;
+奮然 > funzen\ ;
+万劫 > mangou\ ;
+上前 > uwamae\ ;
+設計 > sekkei\ ;
+斯界 > shikai\ ;
+新甫 > shinpo\ ;
+集荷 > shuuka\ ;
+附録 > furoku\ ;
+教義 > kyougi\ ;
+雌花 > mebana\ ;
+奇病 > kibyou\ ;
+晴嵐 > seiran\ ;
+青物 > aomono\ ;
+牢死 > roushi\ ;
+状態 > joutai\ ;
+天神 > tenjin\ ;
+然迄 > samade\ ;
+題名 > daimei\ ;
+一升 > isshou\ ;
+好漢 > koukan\ ;
+一匹 > ippiki\ ;
+題号 > daigou\ ;
+大祭 > taisai\ ;
+三分 > sanpun\ ;
+義侠 > gikyou\ ;
+熏蒸 > kunjou\ ;
+零細 > reisai\ ;
+大社 > taisha\ ;
+大礼 > tairei\ ;
+誓紙 > seishi\ ;
+総裏 > souura\ ;
+物権 > bukken\ ;
+夜空 > yozora\ ;
+一勝 > isshou\ ;
+壮者 > sousha\ ;
+総裁 > sousai\ ;
+無量 > muryou\ ;
+三冬 > santou\ ;
+一助 > ichijo\ ;
+雀荘 > jansou\ ;
+緊褌 > kinkon\ ;
+世俗 > sezoku\ ;
+頽唐 > taitou\ ;
+縦線 > juusen\ ;
+牛歩 > gyuuho\ ;
+万円 > man''en\ ;
+増訂 > zoutei\ ;
+順守 > junshu\ ;
+万全 > manzen\ ;
+一刻 > ikkoku\ ;
+旧派 > kyuuha\ ;
+羅北 > rahoku\ ;
+雪線 > sessen\ ;
+群体 > guntai\ ;
+下僚 > karyou\ ;
+細魚 > sayori\ ;
+下僕 > geboku\ ;
+一利 > ichiri\ ;
+大砲 > taihou\ ;
+暴君 > boukun\ ;
+旧波 > kyuuha\ ;
+数等 > suutou\ ;
+女滝 > medaki\ ;
+世伝 > seiden\ ;
+警手 > keishu\ ;
+随行 > zuikou\ ;
+操車 > sousha\ ;
+如法 > nyohou\ ;
+与信 > yoshin\ ;
+記誦 > kishou\ ;
+雷管 > raikan\ ;
+多祥 > tashou\ ;
+一円 > ichien\ ;
+一具 > ichigu\ ;
+不信 > fushin\ ;
+編著 > hencho\ ;
+警戒 > keikai\ ;
+塊鉱 > kaikou\ ;
+爛爛 > ranran\ ;
+暖地 > danchi\ ;
+綸言 > ringen\ ;
+放胆 > houtan\ ;
+訓諭 > kun''yu\ ;
+曠世 > kousei\ ;
+天眼 > tengan\ ;
+読破 > dokuha\ ;
+三倍 > sanbai\ ;
+顛倒 > tentou\ ;
+旁点 > bouten\ ;
+詩聖 > shisei\ ;
+猛勇 > mouyuu\ ;
+放肆 > houshi\ ;
+奉献 > houken\ ;
+一儀 > ichigi\ ;
+継走 > keisou\ ;
+日永 > hinaga\ ;
+類例 > ruirei\ ;
+訓誡 > kunkai\ ;
+不作 > fusaku\ ;
+言質 > genchi\ ;
+謹書 > kinsho\ ;
+署名 > shomei\ ;
+明朗 > meirou\ ;
+上例 > jourei\ ;
+闘鶏 > toukei\ ;
+天盃 > tenpai\ ;
+上使 > joushi\ ;
+昔時 > sekiji\ ;
+暴動 > boudou\ ;
+堤防 > teibou\ ;
+討論 > touron\ ;
+日毎 > higoto\ ;
+上体 > joutai\ ;
+不仲 > funaka\ ;
+課目 > kamoku\ ;
+大盃 > taihai\ ;
+大皿 > oozara\ ;
+三体 > santai\ ;
+文盲 > monmou\ ;
+熱線 > nessen\ ;
+頽勢 > taisei\ ;
+熟考 > jukkou\ ;
+変種 > henshu\ ;
+断片 > danpen\ ;
+猟具 > ryougu\ ;
+某々 > boubou\ ;
+墓表 > bohyou\ ;
+訓解 > kunkai\ ;
+昵懇 > jikkon\ ;
+女流 > joryuu\ ;
+音容 > on''you\ ;
+降車 > kousha\ ;
+霊知 > reichi\ ;
+声紋 > seimon\ ;
+上代 > joudai\ ;
+奇特 > kidoku\ ;
+領土 > ryoudo\ ;
+美俗 > bizoku\ ;
+順奉 > junpou\ ;
+易断 > ekidan\ ;
+三代 > sandai\ ;
+一俵 > ippyou\ ;
+綱要 > kouyou\ ;
+放置 > houchi\ ;
+闇黒 > ankoku\ ;
+不乙 > fuitsu\ ;
+献体 > kentai\ ;
+罪名 > zaimei\ ;
+昏昏 > konkon\ ;
+雑纂 > zassan\ ;
+妙案 > myouan\ ;
+女波 > menami\ ;
+明明 > akaaka\ ;
+万仞 > banjin\ ;
+離籍 > riseki\ ;
+不一 > fuitsu\ ;
+料理 > ryouri\ ;
+上乗 > joujou\ ;
+暗唱 > anshou\ ;
+三乗 > sanjou\ ;
+明断 > meidan\ ;
+紺青 > konjou\ ;
+敬礼 > keirei\ ;
+雷神 > raijin\ ;
+陶製 > tousei\ ;
+上世 > jousei\ ;
+上上 > joujou\ ;
+明文 > meibun\ ;
+晴天 > seiten\ ;
+万乗 > banjou\ ;
+調理 > chouri\ ;
+断然 > danzen\ ;
+天産 > tensan\ ;
+天生 > tensei\ ;
+晩婚 > bankon\ ;
+明敏 > meibin\ ;
+願主 > ganshu\ ;
+版権 > hanken\ ;
+烈風 > reppuu\ ;
+組閣 > sokaku\ ;
+万丈 > banjou\ ;
+万万 > manman\ ;
+言論 > genron\ ;
+陸行 > rikkou\ ;
+大生 > daisei\ ;
+雀羅 > jakura\ ;
+丁亥 > teigai\ ;
+議席 > giseki\ ;
+美事 > migoto\ ;
+姑息 > kosoku\ ;
+繁盛 > hanjou\ ;
+一人 > hitori\ ;
+放縦 > houjuu\ ;
+論点 > ronten\ ;
+詩編 > shihen\ ;
+献上 > kenjou\ ;
+日様 > hisama\ ;
+陪観 > baikan\ ;
+一二 > ichini\ ;
+一事 > ichiji\ ;
+素首 > sokubi\ ;
+爛漫 > ranman\ ;
+闘魂 > toukon\ ;
+特措 > tokuso\ ;
+政綱 > seikou\ ;
+試練 > shiren\ ;
+誇称 > koshou\ ;
+奉灯 > houtou\ ;
+言訳 > iiwake\ ;
+培養 > baiyou\ ;
+支署 > shisho\ ;
+丁丁 > toutou\ ;
+諸氏 > shoshi\ ;
+言言 > gengen\ ;
+一丁 > itchou\ ;
+総菜 > souzai\ ;
+政経 > seikei\ ;
+多病 > tabyou\ ;
+零砕 > reisai\ ;
+撤退 > tettai\ ;
+見頃 > migoro\ ;
+改編 > kaihen\ ;
+無賃 > muchin\ ;
+計装 > keisou\ ;
+雄編 > yuuhen\ ;
+教科 > kyouka\ ;
+綜覧 > souran\ ;
+霊界 > reikai\ ;
+智嚢 > chinou\ ;
+縁組 > engumi\ ;
+多生 > tashou\ ;
+講書 > kousho\ ;
+紫電 > shiden\ ;
+静止 > seishi\ ;
+特技 > tokugi\ ;
+独和 > dokuwa\ ;
+教祖 > kyouso\ ;
+教示 > kyouji\ ;
+堅陣 > kenjin\ ;
+認知 > ninchi\ ;
+狂女 > kyoujo\ ;
+外用 > gaiyou\ ;
+物損 > busson\ ;
+要項 > youkou\ ;
+要頂 > youkou\ ;
+点頭 > tentou\ ;
+支線 > shisen\ ;
+罰俸 > bappou\ ;
+文献 > bunken\ ;
+詩篇 > shihen\ ;
+日柄 > higara\ ;
+姉弟 > shimai\ ;
+縁籍 > enseki\ ;
+離礁 > rishou\ ;
+音域 > on''iki\ ;
+言行 > genkou\ ;
+角距 > kakkyo\ ;
+報道 > houdou\ ;
+方法 > houhou\ ;
+旭暉 > kyokki\ ;
+絶賛 > zessan\ ;
+如来 > nyorai\ ;
+大物 > oomono\ ;
+昂揚 > kouyou\ ;
+露滴 > roteki\ ;
+続行 > zokkou\ ;
+試算 > shisan\ ;
+諫死 > kanshi\ ;
+降誕 > koutan\ ;
+版本 > hanpon\ ;
+諫止 > kanshi\ ;
+暖冬 > dantou\ ;
+電番 > denban\ ;
+電界 > denkai\ ;
+讚嘆 > santan\ ;
+早晩 > souban\ ;
+霊獣 > reijuu\ ;
+編纂 > hensan\ ;
+時宗 > jishuu\ ;
+新派 > shinpa\ ;
+旭旗 > kyokki\ ;
+雄篇 > yuuhen\ ;
+雑種 > zasshu\ ;
+紙面 > shimen\ ;
+奏法 > souhou\ ;
+失火 > shikka\ ;
+斑点 > hanten\ ;
+雪目 > yukime\ ;
+好望 > koubou\ ;
+旧時 > kyuuji\ ;
+誕生 > tanjou\ ;
+昼寝 > hirune\ ;
+操行 > soukou\ ;
+特恵 > tokkei\ ;
+昼寐 > hirune\ ;
+煙草 > tabako\ ;
+詩稿 > shikou\ ;
+警官 > keikan\ ;
+絶讃 > zessan\ ;
+方正 > housei\ ;
+論法 > ronpou\ ;
+爛死 > ranshi\ ;
+敵王 > tekiou\ ;
+鞅掌 > oushou\ ;
+謄本 > touhon\ ;
+改竄 > kaizan\ ;
+妄断 > moudan\ ;
+特快 > tokkai\ ;
+天災 > tensai\ ;
+青楼 > seirou\ ;
+附託 > futaku\ ;
+旧故 > kyuuko\ ;
+牽引 > ken''in\ ;
+景品 > keihin\ ;
+日数 > hikazu\ ;
+版数 > hansuu\ ;
+断水 > dansui\ ;
+給費 > kyuuhi\ ;
+燦然 > sanzen\ ;
+妙技 > myougi\ ;
+紅顔 > kougan\ ;
+妻帯 > saitai\ ;
+雅称 > gashou\ ;
+威喝 > ikatsu\ ;
+頑冥 > ganmei\ ;
+読点 > touten\ ;
+煎茶 > sencha\ ;
+明快 > meikai\ ;
+妬心 > toshin\ ;
+智勇 > chiyuu\ ;
+譫妄 > senmou\ ;
+晶化 > shouka\ ;
+整版 > seihan\ ;
+雷獣 > raijuu\ ;
+青桐 > aogiri\ ;
+大潮 > ooshio\ ;
+普及 > fukyuu\ ;
+狂喜 > kyouki\ ;
+天漢 > tenkan\ ;
+陶芸 > tougei\ ;
+旗日 > hatabi\ ;
+青柳 > aoyagi\ ;
+設置 > setchi\ ;
+物性 > bussei\ ;
+附表 > fuhyou\ ;
+難産 > nanzan\ ;
+讒口 > zankou\ ;
+今々 > imaima\ ;
+頑健 > ganken\ ;
+暗中 > anchuu\ ;
+護国 > gokoku\ ;
+昼夜 > chuuya\ ;
+言葉 > kotoba\ ;
+親身 > shinmi\ ;
+整然 > seizen\ ;
+紡錘 > bousui\ ;
+諌止 > kanshi\ ;
+外灯 > gaitou\ ;
+妄挙 > boukyo\ ;
+縁石 > enseki\ ;
+埼銀 > saigin\ ;
+間鴨 > aigamo\ ;
+霧氷 > muhyou\ ;
+支社 > shisha\ ;
+青書 > seisho\ ;
+春季 > shunki\ ;
+教理 > kyouri\ ;
+諸方 > shohou\ ;
+増置 > zouchi\ ;
+天涯 > tengai\ ;
+詐称 > sashou\ ;
+摂関 > sekkan\ ;
+警報 > keihou\ ;
+綾羅 > ryoura\ ;
+総統 > soutou\ ;
+領事 > ryouji\ ;
+狂句 > kyouku\ ;
+妖怪 > youkai\ ;
+教王 > kyouou\ ;
+諸政 > shosei\ ;
+施条 > shijou\ ;
+陳腐 > chinpu\ ;
+大海 > taikai\ ;
+姉妹 > shimai\ ;
+報謝 > housha\ ;
+妻子 > saishi\ ;
+独乙 > doitsu\ ;
+煩累 > hanrui\ ;
+片手 > katate\ ;
+電灯 > dentou\ ;
+片戸 > katado\ ;
+大洋 > taiyou\ ;
+姿勢 > shisei\ ;
+角行 > kakkou\ ;
+威力 > iryoku\ ;
+好投 > koutou\ ;
+斑気 > muraki\ ;
+敦煌 > tonkou\ ;
+雪片 > seppen\ ;
+大波 > oonami\ ;
+変災 > hensai\ ;
+大法 > taihou\ ;
+零点 > reiten\ ;
+好手 > koushu\ ;
+晩冬 > bantou\ ;
+好戦 > kousen\ ;
+断案 > dan''an\ ;
+文法 > bunpou\ ;
+天水 > tensui\ ;
+頑丈 > ganjou\ ;
+外湯 > sotoyu\ ;
+文治 > bunchi\ ;
+敢然 > kanzen\ ;
+晦冥 > kaimei\ ;
+教父 > kyoufu\ ;
+妄想 > mousou\ ;
+純銀 > jungin\ ;
+夭死 > youshi\ ;
+政界 > seikai\ ;
+大水 > oomizu\ ;
+綿綿 > menmen\ ;
+外港 > gaikou\ ;
+説法 > seppou\ ;
+見込 > mikomi\ ;
+訪米 > houbei\ ;
+試用 > shiyou\ ;
+細身 > hosomi\ ;
+城門 > joumon\ ;
+文民 > bunmin\ ;
+炭鉱 > tankou\ ;
+旧恩 > kyuuon\ ;
+綿紡 > menbou\ ;
+好感 > koukan\ ;
+純金 > junkin\ ;
+西郊 > seikou\ ;
+夜泊 > yahaku\ ;
+施政 > shisei\ ;
+旧怨 > kyuuen\ ;
+方方 > houbou\ ;
+綿糸 > menshi\ ;
+旨念 > shinen\ ;
+操船 > sousen\ ;
+妨害 > bougai\ ;
+霊泉 > reisen\ ;
+綾糸 > ayaito\ ;
+電源 > dengen\ ;
+妄念 > mounen\ ;
+状勢 > jousei\ ;
+委嘱 > ishoku\ ;
+繊毛 > senmou\ ;
+関頭 > kantou\ ;
+奉書 > housho\ ;
+外洋 > gaiyou\ ;
+西遊 > seiyuu\ ;
+織機 > shokki\ ;
+奮戦 > funsen\ ;
+講師 > koushi\ ;
+霊水 > reisui\ ;
+炭酸 > tansan\ ;
+奔放 > honpou\ ;
+納金 > noukin\ ;
+景仰 > keikou\ ;
+納采 > nousai\ ;
+斃死 > heishi\ ;
+観覧 > kanran\ ;
+諸手 > morote\ ;
+音信 > onshin\ ;
+糖類 > tourui\ ;
+精魂 > seikon\ ;
+訓練 > kunren\ ;
+基軸 > kijiku\ ;
+難点 > nanten\ ;
+夜毎 > yogoto\ ;
+日影 > hikage\ ;
+散漫 > sanman\ ;
+緩目 > yurume\ ;
+片影 > hen''ei\ ;
+災難 > sainan\ ;
+妄弁 > bouben\ ;
+霊殿 > reiden\ ;
+既得 > kitoku\ ;
+大権 > taiken\ ;
+論旨 > ronshi\ ;
+精髄 > seizui\ ;
+斯文 > shibun\ ;
+埴輪 > haniwa\ ;
+論断 > rondan\ ;
+論文 > ronbun\ ;
+煙管 > kiseru\ ;
+爽快 > soukai\ ;
+降臨 > kourin\ ;
+大概 > taigai\ ;
+調査 > chousa\ ;
+静態 > seitai\ ;
+雌牛 > meushi\ ;
+締盟 > teimei\ ;
+開館 > kaikan\ ;
+課業 > kagyou\ ;
+無臭 > mushuu\ ;
+変法 > henpou\ ;
+靱帯 > jintai\ ;
+明大 > meidai\ ;
+牟子 > boushi\ ;
+電池 > denchi\ ;
+閉館 > heikan\ ;
+諸悪 > shoaku\ ;
+星団 > seidan\ ;
+壁画 > hekiga\ ;
+姓名 > seimei\ ;
+素足 > suashi\ ;
+敵歩 > tekifu\ ;
+雪渓 > sekkei\ ;
+雄犬 > osuinu\ ;
+靭帯 > jintai\ ;
+増税 > zouzei\ ;
+時刻 > jikoku\ ;
+墾田 > konden\ ;
+改版 > kaihan\ ;
+父御 > tetego\ ;
+関門 > kanmon\ ;
+細謹 > saikin\ ;
+塊茎 > kaikei\ ;
+隕石 > inseki\ ;
+昭和 > shouwa\ ;
+大根 > daikon\ ;
+斑条 > hanjou\ ;
+閑静 > kansei\ ;
+閑靖 > kansei\ ;
+静思 > seishi\ ;
+旱害 > kangai\ ;
+雑炊 > zousui\ ;
+夜業 > yagyou\ ;
+記章 > kishou\ ;
+昂奮 > koufun\ ;
+細論 > sairon\ ;
+試煉 > shiren\ ;
+牧夫 > bokufu\ ;
+文案 > bun''an\ ;
+旅情 > ryojou\ ;
+云々 > un''nun\ ;
+変死 > henshi\ ;
+難渋 > nanjuu\ ;
+外様 > tozama\ ;
+大柄 > oogara\ ;
+諸彦 > shogen\ ;
+間際 > magiwa\ ;
+天杯 > tenpai\ ;
+天来 > tenrai\ ;
+大枚 > taimai\ ;
+無聊 > buryou\ ;
+長駆 > chouku\ ;
+始原 > shigen\ ;
+散水 > sansui\ ;
+大杯 > taihai\ ;
+雲母 > kirara\ ;
+早寝 > hayane\ ;
+西貢 > saigon\ ;
+教派 > kyouha\ ;
+操縦 > soujuu\ ;
+総監 > soukan\ ;
+大本 > taihon\ ;
+熱湯 > nettou\ ;
+大望 > taimou\ ;
+論拠 > ronkyo\ ;
+日射 > nissha\ ;
+累計 > ruikei\ ;
+註疏 > chuuso\ ;
+奉拝 > houhai\ ;
+大書 > taisho\ ;
+旧家 > kyuuka\ ;
+牧場 > makiba\ ;
+計算 > keisan\ ;
+旋廻 > senkai\ ;
+除籍 > joseki\ ;
+始動 > shidou\ ;
+細見 > saiken\ ;
+繊条 > senjou\ ;
+糸遊 > itoyuu\ ;
+旧字 > kyuuji\ ;
+大暑 > taisho\ ;
+難治 > nanchi\ ;
+墨痕 > bokkon\ ;
+煙硝 > enshou\ ;
+関鍵 > kanken\ ;
+論戦 > ronsen\ ;
+精霊 > seirei\ ;
+日子 > nisshi\ ;
+奉戴 > houtai\ ;
+天明 > tenmei\ ;
+基調 > kichou\ ;
+繁栄 > han''ei\ ;
+墓石 > boseki\ ;
+見解 > kenkai\ ;
+放漫 > houman\ ;
+好守 > koushu\ ;
+雌滝 > medaki\ ;
+姦人 > kanjin\ ;
+墨画 > bokuga\ ;
+難民 > nanmin\ ;
+早婚 > soukon\ ;
+素読 > sodoku\ ;
+要諦 > youtei\ ;
+天文 > tenmon\ ;
+大方 > ookata\ ;
+要請 > yousei\ ;
+支点 > shiten\ ;
+要談 > youdan\ ;
+文明 > bunmei\ ;
+青年 > seinen\ ;
+開閉 > kaihei\ ;
+語格 > gokaku\ ;
+長音 > chouon\ ;
+旧婦 > kyuufu\ ;
+開門 > kaimon\ ;
+旱天 > kanten\ ;
+搬送 > hansou\ ;
+鞏固 > kyouko\ ;
+文旦 > buntan\ ;
+謹啓 > kinkei\ ;
+練炭 > rentan\ ;
+大数 > taisuu\ ;
+解纜 > kairan\ ;
+閉門 > heimon\ ;
+議了 > giryou\ ;
+奥州 > oushuu\ ;
+敗残 > haizan\ ;
+増益 > zoueki\ ;
+大敗 > taihai\ ;
+講壇 > koudan\ ;
+外来 > gairai\ ;
+闇路 > yamiji\ ;
+諸島 > shotou\ ;
+外材 > gaizai\ ;
+大政 > taisei\ ;
+女将 > joshou\ ;
+門院 > mon''in\ ;
+納豆 > nattou\ ;
+門限 > mongen\ ;
+方形 > houkei\ ;
+陥穽 > kansei\ ;
+霊智 > reichi\ ;
+文政 > bunsei\ ;
+女官 > nyokan\ ;
+搭載 > tousai\ ;
+無給 > mukyuu\ ;
+早天 > souten\ ;
+早大 > soudai\ ;
+講堂 > koudou\ ;
+要覧 > youran\ ;
+青嵐 > seiran\ ;
+雛段 > suudan\ ;
+面子 > mentsu\ ;
+謹呈 > kintei\ ;
+数枚 > suumai\ ;
+雨樋 > amadoi\ ;
+旧夫 > kyuufu\ ;
+旧夢 > kyuumu\ ;
+雄渾 > yuukon\ ;
+繁昌 > hanjou\ ;
+放浪 > hourou\ ;
+続稿 > zokkou\ ;
+雑沓 > zattou\ ;
+複音 > fukuon\ ;
+明君 > meikun\ ;
+旬報 > junpou\ ;
+険相 > kensou\ ;
+無精 > bushou\ ;
+警乗 > keijou\ ;
+謹厳 > kingen\ ;
+然程 > sahodo\ ;
+特務 > tokumu\ ;
+物品 > buppin\ ;
+警世 > keisei\ ;
+増産 > zousan\ ;
+損金 > sonkin\ ;
+青山 > seizan\ ;
+特効 > tokkou\ ;
+諸子 > shoshi\ ;
+牽制 > kensei\ ;
+好天 > kouten\ ;
+特功 > tokkou\ ;
+変更 > henkou\ ;
+長閑 > nodoka\ ;
+語族 > gozoku\ ;
+論弁 > ronben\ ;
+日報 > nippou\ ;
+門鑑 > monkan\ ;
+大挙 > taikyo\ ;
+堕落 > daraku\ ;
+関連 > kanren\ ;
+煮物 > nimono\ ;
+旅寝 > tabine\ ;
+嫌々 > iyaiya\ ;
+放水 > housui\ ;
+昇叙 > shoujo\ ;
+絹糸 > kenshi\ ;
+降等 > koutou\ ;
+陳皮 > chinpi\ ;
+整斉 > seisei\ ;
+整数 > seisuu\ ;
+大抵 > taitei\ ;
+紫蘭 > shiran\ ;
+開銀 > kaigin\ ;
+無策 > musaku\ ;
+謦咳 > keigai\ ;
+妥協 > dakyou\ ;
+斎戒 > saikai\ ;
+天才 > tensai\ ;
+末々 > suezue\ ;
+奉幣 > houhei\ ;
+大技 > oowaza\ ;
+精錬 > seiren\ ;
+旧土 > kyuudo\ ;
+電断 > dendan\ ;
+霰弾 > sandan\ ;
+教案 > kyouan\ ;
+天成 > tensei\ ;
+繊指 > senshi\ ;
+妙味 > myoumi\ ;
+電文 > denbun\ ;
+大戦 > taisen\ ;
+諸姉 > shoshi\ ;
+解答 > kaitou\ ;
+明初 > meisho\ ;
+絞罪 > kouzai\ ;
+大成 > taisei\ ;
+無窮 > mukyuu\ ;
+文才 > bunsai\ ;
+昨今 > sakkon\ ;
+精銅 > seidou\ ;
+変数 > hensuu\ ;
+絨緞 > juutan\ ;
+方寸 > housun\ ;
+誓文 > seimon\ ;
+変改 > henkai\ ;
+改正 > kaisei\ ;
+繊手 > senshu\ ;
+大慶 > taikei\ ;
+零敗 > reihai\ ;
+間道 > kandou\ ;
+製陶 > seitou\ ;
+断崖 > dangai\ ;
+襯衣 > shin''i\ ;
+奥妙 > oumyou\ ;
+総点 > souten\ ;
+政権 > seiken\ ;
+雪景 > sekkei\ ;
+操短 > soutan\ ;
+細菌 > saikin\ ;
+散文 > sanbun\ ;
+天恵 > tenkei\ ;
+散散 > sanzan\ ;
+天恩 > ten''on\ ;
+大患 > taikan\ ;
+断層 > dansou\ ;
+土龍 > mogura\ ;
+縦断 > juudan\ ;
+声望 > seibou\ ;
+謚号 > shigou\ ;
+天性 > tensei\ ;
+青天 > seiten\ ;
+電探 > dentan\ ;
+解禁 > kaikin\ ;
+変換 > henkan\ ;
+昏倒 > kontou\ ;
+朗々 > rourou\ ;
+調度 > choudo\ ;
+女囚 > joshuu\ ;
+夫役 > buyaku\ ;
+附票 > fuhyou\ ;
+新字 > shinji\ ;
+撚糸 > nenshi\ ;
+大志 > taishi\ ;
+断定 > dantei\ ;
+論定 > rontei\ ;
+粉雪 > koyuki\ ;
+精選 > seisen\ ;
+塵界 > jinkai\ ;
+雅楽 > gagaku\ ;
+霊感 > reikan\ ;
+携行 > keikou\ ;
+論孟 > ronmou\ ;
+日和 > hiyori\ ;
+網状 > moujou\ ;
+誘拐 > yuukai\ ;
+声明 > seimei\ ;
+大形 > oogyou\ ;
+難文 > nanbun\ ;
+諧声 > kaisei\ ;
+米飯 > beihan\ ;
+網版 > amihan\ ;
+売文 > baibun\ ;
+日向 > hinata\ ;
+精農 > seinou\ ;
+新婦 > shinpu\ ;
+奪回 > dakkai\ ;
+火足 > hiashi\ ;
+焦眉 > shoubi\ ;
+放校 > houkou\ ;
+防空 > boukuu\ ;
+天底 > tentei\ ;
+太平 > taihei\ ;
+読後 > dokugo\ ;
+日参 > nissan\ ;
+際涯 > saigai\ ;
+旋回 > senkai\ ;
+奥地 > okuchi\ ;
+天平 > tenbin\ ;
+霊性 > reisei\ ;
+大店 > oodana\ ;
+外患 > gaikan\ ;
+雑書 > zassho\ ;
+閣議 > kakugi\ ;
+灰貝 > haigai\ ;
+変成 > hensei\ ;
+天帝 > tentei\ ;
+経線 > keisen\ ;
+物体 > mottai\ ;
+大幅 > oohaba\ ;
+経綸 > keirin\ ;
+明主 > meishu\ ;
+大師 > daishi\ ;
+天工 > tenkou\ ;
+大帝 > taitei\ ;
+製錬 > seiren\ ;
+妄動 > moudou\ ;
+焔硝 > enshou\ ;
+結納 > yuinou\ ;
+旅団 > ryodan\ ;
+繁忙 > hanbou\ ;
+地髪 > jigami\ ;
+防禦 > bougyo\ ;
+細胞 > saibou\ ;
+物件 > bukken\ ;
+天嶮 > tenken\ ;
+製鋼 > seikou\ ;
+日勤 > nikkin\ ;
+大巧 > taikou\ ;
+点茶 > tencha\ ;
+旬刊 > junkan\ ;
+紅藻 > kousou\ ;
+新奇 > shinki\ ;
+陶然 > touzen\ ;
+長途 > chouto\ ;
+摘芽 > tekiga\ ;
+変態 > hentai\ ;
+換金 > kankin\ ;
+教授 > kyouju\ ;
+故旧 > kokyuu\ ;
+雄松 > omatsu\ ;
+早出 > hayade\ ;
+奇妙 > kimyou\ ;
+外径 > gaikei\ ;
+外征 > gaisei\ ;
+接頭 > settou\ ;
+外形 > gaikei\ ;
+訓点 > kunten\ ;
+論外 > rongai\ ;
+限界 > genkai\ ;
+夜店 > yomise\ ;
+絃線 > gensen\ ;
+諾否 > dakuhi\ ;
+探題 > tandai\ ;
+繊巧 > senkou\ ;
+無痛 > mutsuu\ ;
+無病 > mubyou\ ;
+日刊 > nikkan\ ;
+救援 > kyuuen\ ;
+論壇 > rondan\ ;
+壟断 > roudan\ ;
+片刃 > kataha\ ;
+敵影 > tekiei\ ;
+絹目 > kinume\ ;
+煮汁 > nijiru\ ;
+裾野 > susono\ ;
+訴求 > sokyuu\ ;
+煉炭 > rentan\ ;
+震度 > shindo\ ;
+整形 > seikei\ ;
+夜市 > yoichi\ ;
+増減 > zougen\ ;
+雁書 > gansho\ ;
+繃帯 > houtai\ ;
+詩文 > shibun\ ;
+変性 > hensei\ ;
+見聞 > kenmon\ ;
+大山 > taizan\ ;
+諸君 > shokun\ ;
+諮問 > shimon\ ;
+関西 > kansai\ ;
+長躯 > chouku\ ;
+大層 > taisou\ ;
+霜害 > sougai\ ;
+縄文 > joumon\ ;
+日光 > nikkou\ ;
+改易 > kaieki\ ;
+旧儀 > kyuugi\ ;
+大尽 > daijin\ ;
+壮挙 > soukyo\ ;
+紅葉 > momiji\ ;
+放散 > housan\ ;
+斎宮 > saiguu\ ;
+見者 > kensha\ ;
+難所 > nansho\ ;
+敗戦 > haisen\ ;
+奪取 > dasshu\ ;
+摸索 > mosaku\ ;
+牀几 > shougi\ ;
+太守 > taishu\ ;
+斉射 > seisha\ ;
+統監 > toukan\ ;
+大寒 > daikan\ ;
+坊間 > boukan\ ;
+夫子 > fuushi\ ;
+天守 > tenshu\ ;
+変形 > henkei\ ;
+素肌 > suhada\ ;
+雄断 > yuudan\ ;
+太字 > futoji\ ;
+太子 > taishi\ ;
+天孫 > tenson\ ;
+雑損 > zasson\ ;
+閑談 > kandan\ ;
+日傘 > higasa\ ;
+大宗 > taisou\ ;
+天子 > tenshi\ ;
+革具 > kawagu\ ;
+面前 > menzen\ ;
+霊峰 > reihou\ ;
+隷書 > reisho\ ;
+角皮 > kakuhi\ ;
+謄写 > tousha\ ;
+探険 > tanken\ ;
+視線 > shisen\ ;
+数年 > suunen\ ;
+奮励 > funrei\ ;
+非力 > hiriki\ ;
+諭告 > yukoku\ ;
+開講 > kaikou\ ;
+文官 > bunkan\ ;
+旬余 > jun''yo\ ;
+階段 > kaidan\ ;
+青史 > seishi\ ;
+紙背 > shihai\ ;
+紅茶 > koucha\ ;
+細緻 > saichi\ ;
+埋蔵 > maizou\ ;
+製造 > seizou\ ;
+霊山 > reizan\ ;
+熱戦 > nessen\ ;
+裏門 > uramon\ ;
+変幻 > hengen\ ;
+霊屋 > tamaya\ ;
+増水 > zousui\ ;
+講中 > koujuu\ ;
+離愁 > rishuu\ ;
+電工 > denkou\ ;
+散弾 > sandan\ ;
+斜塔 > shatou\ ;
+多少 > tashou\ ;
+夜寒 > yozamu\ ;
+諷刺 > fuushi\ ;
+塩煮 > shioni\ ;
+夜宮 > yomiya\ ;
+露国 > rokoku\ ;
+諸刃 > moroha\ ;
+外層 > gaisou\ ;
+埋葬 > maisou\ ;
+綿毛 > watage\ ;
+結社 > kessha\ ;
+褒貶 > houhen\ ;
+累累 > ruirui\ ;
+地霊 > chirei\ ;
+霊宝 > reihou\ ;
+地震 > jishin\ ;
+報知 > houchi\ ;
+細糸 > saishi\ ;
+夜学 > yagaku\ ;
+誤審 > goshin\ ;
+日伊 > nichii\ ;
+防疫 > boueki\ ;
+角界 > kakkai\ ;
+敏感 > binkan\ ;
+敷居 > shikii\ ;
+炭肺 > tanhai\ ;
+好例 > kourei\ ;
+奔命 > honmei\ ;
+煙毒 > endoku\ ;
+誇張 > kochou\ ;
+熱意 > netsui\ ;
+方向 > houkou\ ;
+紫紺 > shikon\ ;
+地階 > chikai\ ;
+教徒 > kyouto\ ;
+規約 > kiyaku\ ;
+諸兄 > shokei\ ;
+諸元 > shogen\ ;
+早世 > sousei\ ;
+開襟 > kaikin\ ;
+斜坑 > shakou\ ;
+縫工 > houkou\ ;
+旅券 > ryoken\ ;
+隣村 > rinson\ ;
+天外 > tengai\ ;
+詩才 > shisai\ ;
+堡礁 > hoshou\ ;
+天変 > tenpen\ ;
+面倒 > mendou\ ;
+日中 > hinaka\ ;
+天声 > tensei\ ;
+旋光 > senkou\ ;
+契合 > keigou\ ;
+霊媒 > reibai\ ;
+線条 > senjou\ ;
+解版 > kaihan\ ;
+整容 > seiyou\ ;
+新味 > shinmi\ ;
+天壌 > tenjou\ ;
+大変 > taihen\ ;
+続演 > zokuen\ ;
+壮快 > soukai\ ;
+裸身 > rashin\ ;
+米銭 > beisen\ ;
+熱性 > nessei\ ;
+語学 > gogaku\ ;
+誘導 > yuudou\ ;
+雑感 > zakkan\ ;
+斎場 > saijou\ ;
+要綱 > youkou\ ;
+累算 > ruisan\ ;
+文士 > bunshi\ ;
+点線 > tensen\ ;
+女体 > nyotai\ ;
+縁戚 > enseki\ ;
+面体 > mentei\ ;
+文壇 > bundan\ ;
+奉呈 > houtei\ ;
+撃破 > gekiha\ ;
+精製 > seisei\ ;
+面会 > menkai\ ;
+紡糸 > boushi\ ;
+天堂 > tendou\ ;
+離床 > rishou\ ;
+墓標 > bohyou\ ;
+階梯 > kaitei\ ;
+売店 > baiten\ ;
+論叢 > ronsou\ ;
+諸侯 > shokou\ ;
+電子 > denshi\ ;
+爵位 > shakui\ ;
+西経 > seikei\ ;
+詩想 > shisou\ ;
+塊状 > kaijou\ ;
+観相 > kansou\ ;
+女人 > nyonin\ ;
+改憲 > kaiken\ ;
+大域 > taiiki\ ;
+絶版 > zeppan\ ;
+雪崩 > nadare\ ;
+詩情 > shijou\ ;
+外姓 > gaisei\ ;
+言海 > genkai\ ;
+照査 > shousa\ ;
+政情 > seijou\ ;
+紛紛 > funpun\ ;
+奏効 > soukou\ ;
+壮年 > sounen\ ;
+大型 > oogata\ ;
+声帯 > seitai\ ;
+上々 > joujou\ ;
+奏功 > soukou\ ;
+純綿 > junmen\ ;
+天地 > tenchi\ ;
+塩湯 > shioyu\ ;
+該当 > gaitou\ ;
+坑道 > koudou\ ;
+女中 > jochuu\ ;
+激高 > gekkou\ ;
+探鉱 > tankou\ ;
+総書 > sousho\ ;
+外套 > gaitou\ ;
+綿棒 > menbou\ ;
+支所 > shisho\ ;
+採鉱 > saikou\ ;
+大地 > daichi\ ;
+純絹 > junken\ ;
+放恣 > houshi\ ;
+文型 > bunkei\ ;
+門衛 > mon''ei\ ;
+雌性 > shisei\ ;
+万々 > manman\ ;
+垂訓 > suikun\ ;
+大圏 > taiken\ ;
+防犯 > bouhan\ ;
+認定 > nintei\ ;
+火薬 > kayaku\ ;
+熱帯 > nettai\ ;
+練成 > rensei\ ;
+焚火 > takibi\ ;
+改悪 > kaiaku\ ;
+放念 > hounen\ ;
+奇勝 > kishou\ ;
+霊場 > reijou\ ;
+純系 > junkei\ ;
+奢侈 > shashi\ ;
+奥伝 > okuden\ ;
+塩浴 > enyoku\ ;
+談合 > dangou\ ;
+丁々 > toutou\ ;
+詩形 > shikei\ ;
+霊域 > reiiki\ ;
+論判 > ronpan\ ;
+煮方 > nikata\ ;
+熊手 > kumade\ ;
+純粋 > junsui\ ;
+読図 > dokuzu\ ;
+雄性 > yuusei\ ;
+火蓋 > hibuta\ ;
+装釘 > soutei\ ;
+調和 > chouwa\ ;
+訂正 > teisei\ ;
+照映 > shouei\ ;
+雄志 > yuushi\ ;
+調味 > choumi\ ;
+掲載 > keisai\ ;
+旅人 > ryojin\ ;
+旅亭 > ryotei\ ;
+換言 > kangen\ ;
+総数 > sousuu\ ;
+霊地 > reichi\ ;
+揚言 > yougen\ ;
+大喪 > taisou\ ;
+雑巾 > zoukin\ ;
+天啓 > tenkei\ ;
+隅木 > sumiki\ ;
+奉公 > houkou\ ;
+総攬 > souran\ ;
+編成 > hensei\ ;
+親疎 > shinso\ ;
+方便 > houben\ ;
+離宮 > rikyuu\ ;
+絢爛 > kenran\ ;
+外地 > gaichi\ ;
+外在 > gaizai\ ;
+塩気 > shioke\ ;
+接近 > sekkin\ ;
+雄弁 > yuuben\ ;
+米軍 > beigun\ ;
+詩巻 > shikan\ ;
+改廃 > kaihai\ ;
+階数 > kaisuu\ ;
+園長 > enchou\ ;
+地金 > jigane\ ;
+緩慢 > kanman\ ;
+電報 > denpou\ ;
+調印 > chouin\ ;
+防災 > bousai\ ;
+天命 > tenmei\ ;
+籤運 > kujiun\ ;
+補足 > hosoku\ ;
+濁音 > dakuon\ ;
+大和 > yamato\ ;
+談判 > danpan\ ;
+整地 > seichi\ ;
+大命 > taimei\ ;
+長蛇 > chouda\ ;
+方今 > houkon\ ;
+提言 > teigen\ ;
+証拠 > shouko\ ;
+紅粉 > beniko\ ;
+太后 > taikou\ ;
+地酒 > jizake\ ;
+隻影 > sekiei\ ;
+士官 > shikan\ ;
+土鍋 > donabe\ ;
+天后 > tenkou\ ;
+灰色 > haiiro\ ;
+天台 > tendai\ ;
+系統 > keitou\ ;
+大君 > taikun\ ;
+陰核 > inkaku\ ;
+大同 > daidou\ ;
+隷従 > reijuu\ ;
+細目 > hosome\ ;
+支弁 > shiben\ ;
+提要 > teiyou\ ;
+火花 > hibana\ ;
+変型 > henkei\ ;
+純種 > junshu\ ;
+雑居 > zakkyo\ ;
+降水 > kousui\ ;
+方丈 > houjou\ ;
+埋線 > maisen\ ;
+数回 > suukai\ ;
+文名 > bunmei\ ;
+奕世 > ekisei\ ;
+緩怠 > kantai\ ;
+解法 > kaihou\ ;
+支店 > shiten\ ;
+基石 > kiseki\ ;
+製袋 > seitai\ ;
+頻々 > hinpin\ ;
+斜光 > shakou\ ;
+奉体 > houtai\ ;
+附注 > fuchuu\ ;
+斥候 > sekkou\ ;
+関聯 > kanren\ ;
+奉伺 > houshi\ ;
+大半 > taihan\ ;
+褐藻 > kassou\ ;
+煽情 > senjou\ ;
+敵営 > tekiei\ ;
+無毒 > mudoku\ ;
+大匙 > oosaji\ ;
+在郷 > zaigou\ ;
+絶海 > zekkai\ ;
+雄峰 > yuuhou\ ;
+奉仕 > houshi\ ;
+納税 > nouzei\ ;
+土釜 > dogama\ ;
+大勢 > taizei\ ;
+奏上 > soujou\ ;
+断交 > dankou\ ;
+緒戦 > chosen\ ;
+放射 > housha\ ;
+大勇 > taiyuu\ ;
+視界 > shikai\ ;
+論争 > ronsou\ ;
+裳裾 > mosuso\ ;
+試射 > shisha\ ;
+除核 > jokaku\ ;
+大功 > taikou\ ;
+解毒 > gedoku\ ;
+詩宗 > shisou\ ;
+文勢 > bunsei\ ;
+陰暦 > inreki\ ;
+無欲 > muyoku\ ;
+太初 > taisho\ ;
+散在 > sanzai\ ;
+炭礦 > tankou\ ;
+火脚 > hiashi\ ;
+誣告 > bukoku\ ;
+天刑 > tenkei\ ;
+天分 > tenbun\ ;
+壮大 > soudai\ ;
+衰頽 > suitai\ ;
+点睛 > tensei\ ;
+大分 > daibun\ ;
+壮士 > soushi\ ;
+敗報 > haihou\ ;
+外向 > gaikou\ ;
+大刀 > daitou\ ;
+攻守 > koushu\ ;
+雑婚 > zakkon\ ;
+損耗 > sonmou\ ;
+点眼 > tengan\ ;
+圧迫 > appaku\ ;
+外史 > gaishi\ ;
+大凡 > ooyoso\ ;
+濫造 > ranzou\ ;
+熔岩 > yougan\ ;
+随所 > zuisho\ ;
+改定 > kaitei\ ;
+雅客 > gakaku\ ;
+統治 > touchi\ ;
+天兵 > tenpei\ ;
+観点 > kanten\ ;
+隠忍 > in''nin\ ;
+大典 > taiten\ ;
+除服 > jofuku\ ;
+大公 > taikou\ ;
+大全 > taizen\ ;
+整合 > seigou\ ;
+精舎 > shouja\ ;
+大兄 > taikei\ ;
+詞宗 > shisou\ ;
+声域 > seiiki\ ;
+電命 > denmei\ ;
+補註 > hochuu\ ;
+衣食 > ishoku\ ;
+無様 > buzama\ ;
+摸牌 > moupai\ ;
+文典 > bunten\ ;
+線形 > senkei\ ;
+霊剣 > reiken\ ;
+数名 > suumei\ ;
+表音 > hyouon\ ;
+外勤 > gaikin\ ;
+霊前 > reizen\ ;
+補角 > hokaku\ ;
+随感 > zuikan\ ;
+炯眼 > keigan\ ;
+煩悶 > hanmon\ ;
+計数 > keisuu\ ;
+夜凪 > yonagi\ ;
+随想 > zuisou\ ;
+防水 > bousui\ ;
+推論 > suiron\ ;
+変名 > henmei\ ;
+給油 > kyuuyu\ ;
+言明 > genmei\ ;
+天候 > tenkou\ ;
+終焉 > shuuen\ ;
+熱型 > nekkei\ ;
+雷名 > raimei\ ;
+雷同 > raidou\ ;
+霧中 > muchuu\ ;
+四面 > shimen\ ;
+糟糠 > soukou\ ;
+数千 > suusen\ ;
+数十 > suujuu\ ;
+要用 > youyou\ ;
+続映 > zokuei\ ;
+除斥 > joseki\ ;
+雄姿 > yuushi\ ;
+改姓 > kaisei\ ;
+外分 > gaibun\ ;
+煖房 > danbou\ ;
+政変 > seihen\ ;
+埴生 > hanyuu\ ;
+外出 > sotode\ ;
+雲呑 > wantan\ ;
+夕刊 > yuukan\ ;
+煩忙 > hanbou\ ;
+結滞 > kettai\ ;
+絨毯 > juutan\ ;
+炉端 > robata\ ;
+雑報 > zappou\ ;
+詩壇 > shidan\ ;
+大便 > daiben\ ;
+絨毛 > juumou\ ;
+天使 > tenshi\ ;
+防止 > boushi\ ;
+累犯 > ruihan\ ;
+推計 > suikei\ ;
+照応 > shouou\ ;
+天体 > tentai\ ;
+縫合 > hougou\ ;
+電動 > dendou\ ;
+然斯 > soukou\ ;
+大使 > taishi\ ;
+証左 > shousa\ ;
+四隣 > shirin\ ;
+電効 > denkou\ ;
+外典 > gaiten\ ;
+細片 > saihen\ ;
+見猿 > mizaru\ ;
+大体 > daitai\ ;
+四隅 > yosumi\ ;
+堅牢 > kenrou\ ;
+火縄 > hinawa\ ;
+敦厚 > tonkou\ ;
+改変 > kaihen\ ;
+変動 > hendou\ ;
+照影 > shouei\ ;
+随従 > zuijuu\ ;
+雄大 > yuudai\ ;
+文例 > bunrei\ ;
+降板 > kouban\ ;
+大会 > taikai\ ;
+難問 > nanmon\ ;
+教唆 > kyousa\ ;
+探訪 > tanbou\ ;
+捻転 > nenten\ ;
+街頭 > gaitou\ ;
+大任 > tainin\ ;
+雄壮 > yuusou\ ;
+文体 > buntai\ ;
+大仰 > oogyou\ ;
+教員 > kyouin\ ;
+図録 > zuroku\ ;
+大代 > daidai\ ;
+天井 > tenjou\ ;
+接見 > sekken\ ;
+裏襟 > uraeri\ ;
+土足 > dosoku\ ;
+大人 > dainin\ ;
+斎主 > saishu\ ;
+訓戒 > kunkai\ ;
+外債 > gaisai\ ;
+故国 > kokoku\ ;
+授賞 > jushou\ ;
+詩型 > shikei\ ;
+見物 > mimono\ ;
+経済 > keizai\ ;
+総帥 > sousui\ ;
+天丼 > tendon\ ;
+天主 > tenshu\ ;
+大乱 > tairan\ ;
+炭田 > tanden\ ;
+照度 > shoudo\ ;
+隊形 > taikei\ ;
+城砦 > jousai\ ;
+終演 > shuuen\ ;
+文人 > bunjin\ ;
+読会 > dokkai\ ;
+大乗 > daijou\ ;
+売品 > baihin\ ;
+天与 > ten''yo\ ;
+天上 > tenjou\ ;
+均衡 > kinkou\ ;
+攻城 > koujou\ ;
+地謡 > jiutai\ ;
+視点 > shiten\ ;
+撒水 > sansui\ ;
+製茶 > seicha\ ;
+灯籠 > tourou\ ;
+誤信 > goshin\ ;
+電光 > denkou\ ;
+夜伽 > yotogi\ ;
+繋争 > keisou\ ;
+無暗 > muyami\ ;
+裁許 > saikyo\ ;
+擅断 > sendan\ ;
+多作 > tasaku\ ;
+燐光 > rinkou\ ;
+長者 > chouja\ ;
+散剤 > sanzai\ ;
+地誌 > chishi\ ;
+売名 > baimei\ ;
+陽性 > yousei\ ;
+夢中 > muchuu\ ;
+雷光 > raikou\ ;
+塊根 > kaikon\ ;
+焚書 > funsho\ ;
+褪紅 > taikou\ ;
+摂生 > sessei\ ;
+関空 > kankuu\ ;
+無明 > mumyou\ ;
+教区 > kyouku\ ;
+精緻 > seichi\ ;
+精練 > seiren\ ;
+国運 > kokuun\ ;
+閉経 > heikei\ ;
+教化 > kyouka\ ;
+絹本 > kenpon\ ;
+血餅 > keppei\ ;
+外伝 > gaiden\ ;
+電停 > dentei\ ;
+順々 > junjun\ ;
+数値 > suuchi\ ;
+関税 > kanzei\ ;
+教務 > kyoumu\ ;
+数倍 > suubai\ ;
+無料 > muryou\ ;
+夜中 > yonaka\ ;
+解明 > kaimei\ ;
+無敵 > muteki\ ;
+散兵 > sanpei\ ;
+経水 > keisui\ ;
+外人 > gaijin\ ;
+紙片 > shihen\ ;
+外交 > gaikou\ ;
+壇場 > danjou\ ;
+散光 > sankou\ ;
+捨身 > sutemi\ ;
+障子 > shouji\ ;
+精細 > seisai\ ;
+塗料 > toryou\ ;
+素焼 > suyaki\ ;
+継投 > keitou\ ;
+煙幕 > enmaku\ ;
+外乱 > gairan\ ;
+雑品 > zappin\ ;
+解散 > kaisan\ ;
+精糖 > seitou\ ;
+闘犬 > touken\ ;
+擱座 > kakuza\ ;
+精精 > seizei\ ;
+解放 > kaihou\ ;
+絶景 > zekkei\ ;
+試問 > shimon\ ;
+許容 > kyoyou\ ;
+階層 > kaisou\ ;
+地裁 > chisai\ ;
+精粋 > seisui\ ;
+精粉 > seifun\ ;
+揺籃 > youran\ ;
+捕逸 > hoitsu\ ;
+紛然 > funzen\ ;
+救助 > kyuujo\ ;
+精米 > seimai\ ;
+改善 > kaizen\ ;
+変体 > hentai\ ;
+敬体 > keitai\ ;
+要点 > youten\ ;
+圧覚 > akkaku\ ;
+数人 > suunin\ ;
+陰徳 > intoku\ ;
+教具 > kyougu\ ;
+火種 > hidane\ ;
+点点 > tenten\ ;
+記帳 > kichou\ ;
+設定 > settei\ ;
+推薦 > suisen\ ;
+炎症 > enshou\ ;
+掃討 > soutou\ ;
+衆院 > shuuin\ ;
+詩吟 > shigin\ ;
+点灯 > tentou\ ;
+烝民 > joumin\ ;
+詠唱 > eishou\ ;
+変人 > henjin\ ;
+累減 > ruigen\ ;
+籐製 > tousei\ ;
+綱常 > koujou\ ;
+精管 > seikan\ ;
+純然 > junzen\ ;
+防暑 > bousho\ ;
+精算 > seisan\ ;
+数万 > suuman\ ;
+垂線 > suisen\ ;
+閉端 > heitan\ ;
+変乱 > henran\ ;
+関知 > kanchi\ ;
+詩友 > shiyuu\ ;
+結構 > kekkou\ ;
+士分 > shibun\ ;
+陪従 > baijuu\ ;
+衣鉢 > ihatsu\ ;
+四重 > shijuu\ ;
+潮音 > chouon\ ;
+被覆 > hifuku\ ;
+声優 > seiyuu\ ;
+陶工 > toukou\ ;
+散会 > sankai\ ;
+指頭 > shitou\ ;
+改名 > kaimei\ ;
+炯炯 > keikei\ ;
+改号 > kaigou\ ;
+製缶 > seikan\ ;
+誌代 > shidai\ ;
+西漸 > seizen\ ;
+衰退 > suitai\ ;
+散乱 > sanran\ ;
+陣形 > jinkei\ ;
+炭火 > sumibi\ ;
+国費 > kokuhi\ ;
+政労 > seirou\ ;
+地虫 > mimizu\ ;
+壮健 > souken\ ;
+観梅 > kanbai\ ;
+回遊 > kaiyuu\ ;
+観桜 > kan''ou\ ;
+攻勢 > kousei\ ;
+誌上 > shijou\ ;
+細民 > saimin\ ;
+回送 > kaisou\ ;
+要港 > youkou\ ;
+堅気 > katagi\ ;
+雄勁 > yuukei\ ;
+垂範 > suihan\ ;
+無慾 > muyoku\ ;
+陽子 > youshi\ ;
+難件 > nanken\ ;
+除幕 > jomaku\ ;
+絢文 > kenbun\ ;
+訓導 > kundou\ ;
+四辺 > shihen\ ;
+敗亡 > haibou\ ;
+離京 > rikyou\ ;
+紅灯 > koutou\ ;
+売人 > bainin\ ;
+政党 > seitou\ ;
+試写 > shisha\ ;
+潮間 > shioma\ ;
+離乳 > rinyuu\ ;
+放免 > houmen\ ;
+裏芸 > uragei\ ;
+放光 > houkou\ ;
+観望 > kanbou\ ;
+回転 > kaiten\ ;
+討尋 > toujin\ ;
+製紙 > seishi\ ;
+場数 > bakazu\ ;
+火皿 > hizara\ ;
+篆隷 > tenrei\ ;
+製糸 > seishi\ ;
+製糖 > seitou\ ;
+増大 > zoudai\ ;
+西洋 > seiyou\ ;
+縁先 > ensaki\ ;
+経木 > kyougi\ ;
+売上 > uriage\ ;
+雑俳 > zappai\ ;
+国語 > kokugo\ ;
+製粉 > seifun\ ;
+経書 > keisho\ ;
+練功 > renkou\ ;
+改元 > kaigen\ ;
+換算 > kanzan\ ;
+開眼 > kaigen\ ;
+行金 > koukin\ ;
+粗粗 > araara\ ;
+炊爨 > suisan\ ;
+激語 > gekigo\ ;
+街道 > kaidou\ ;
+紡毛 > boumou\ ;
+壮丁 > soutei\ ;
+無心 > mushin\ ;
+紫檀 > shitan\ ;
+点水 > tensui\ ;
+縁側 > engawa\ ;
+補習 > hoshuu\ ;
+陣屋 > jin''ya\ ;
+雑件 > zakken\ ;
+掃蕩 > soutou\ ;
+防戦 > bousen\ ;
+終期 > shuuki\ ;
+雑人 > zounin\ ;
+練兵 > renpei\ ;
+墓場 > hakaba\ ;
+垂示 > suishi\ ;
+政体 > seitai\ ;
+雅俗 > gazoku\ ;
+純水 > junsui\ ;
+詩仙 > shisen\ ;
+政令 > seirei\ ;
+放任 > hounin\ ;
+粉糠 > konuka\ ;
+詩人 > shijin\ ;
+推考 > suikou\ ;
+陽報 > youhou\ ;
+編制 > hensei\ ;
+純毛 > junmou\ ;
+拳闘 > kentou\ ;
+紅涙 > kourui\ ;
+政争 > seisou\ ;
+終映 > shuuei\ ;
+素樸 > soboku\ ;
+拝顔 > haigan\ ;
+紅海 > koukai\ ;
+陋巷 > roukou\ ;
+緘口 > kankou\ ;
+粉米 > kogome\ ;
+探聞 > tanbun\ ;
+噴飯 > funpan\ ;
+煽動 > sendou\ ;
+継子 > mamako\ ;
+純正 > junsei\ ;
+覇業 > hagyou\ ;
+陵墓 > ryoubo\ ;
+簡裁 > kansai\ ;
+証印 > shouin\ ;
+試乗 > shijou\ ;
+隠匿 > intoku\ ;
+規格 > kikaku\ ;
+火玉 > hidama\ ;
+訪問 > houmon\ ;
+長目 > nagame\ ;
+操守 > soushu\ ;
+統御 > tougyo\ ;
+蟻食 > arikui\ ;
+搾油 > sakuyu\ ;
+衿裏 > eriura\ ;
+振起 > shinki\ ;
+総合 > sougou\ ;
+補給 > hokyuu\ ;
+摂氏 > sesshi\ ;
+行軍 > kougun\ ;
+評価 > hyouka\ ;
+門番 > monban\ ;
+堅材 > kenzai\ ;
+図表 > zuhyou\ ;
+堅木 > katagi\ ;
+援用 > en''you\ ;
+防御 > bougyo\ ;
+米綿 > beimen\ ;
+灰燼 > kaijin\ ;
+点検 > tenken\ ;
+塹壕 > zangou\ ;
+紅毛 > koumou\ ;
+線分 > senbun\ ;
+緑化 > ryokka\ ;
+陋屋 > rouoku\ ;
+地肌 > jihada\ ;
+防弾 > boudan\ ;
+限定 > gentei\ ;
+装置 > souchi\ ;
+階名 > kaimei\ ;
+言外 > gengai\ ;
+角度 > kakudo\ ;
+垣牆 > enshou\ ;
+総勢 > souzei\ ;
+回訓 > kaikun\ ;
+壊乱 > kairan\ ;
+統帥 > tousui\ ;
+観戦 > kansen\ ;
+接線 > sessen\ ;
+結成 > kessei\ ;
+約款 > yakkan\ ;
+表記 > hyouki\ ;
+撤廃 > teppai\ ;
+附属 > fuzoku\ ;
+因襲 > inshuu\ ;
+回覧 > kairan\ ;
+米粉 > beifun\ ;
+煩労 > hanrou\ ;
+墨刑 > bokkei\ ;
+無学 > mugaku\ ;
+被膜 > himaku\ ;
+城池 > jouchi\ ;
+描破 > byouha\ ;
+摘果 > tekika\ ;
+絶島 > zettou\ ;
+陰嚢 > fuguri\ ;
+壇上 > danjou\ ;
+裏紋 > uramon\ ;
+素朴 > soboku\ ;
+間然 > kanzen\ ;
+抹香 > makkou\ ;
+拳銃 > kenjuu\ ;
+紫斑 > shihan\ ;
+要望 > youbou\ ;
+観想 > kansou\ ;
+節酒 > sesshu\ ;
+見方 > mikata\ ;
+納棺 > noukan\ ;
+裁縫 > saihou\ ;
+噴門 > funmon\ ;
+為替 > kawase\ ;
+表裏 > hyouri\ ;
+随分 > zuibun\ ;
+絶対 > zettai\ ;
+随処 > zuisho\ ;
+粗目 > zarame\ ;
+陣地 > jinchi\ ;
+漢音 > kan''on\ ;
+指輪 > yubiwa\ ;
+推算 > suisan\ ;
+均等 > kintou\ ;
+点景 > tenkei\ ;
+限外 > gengai\ ;
+粉砕 > funsai\ ;
+基教 > kikyou\ ;
+陰唇 > inshin\ ;
+要旨 > youshi\ ;
+訊問 > jinmon\ ;
+隣人 > rinjin\ ;
+米突 > mētoru\ ;
+素敵 > suteki\ ;
+増刊 > zoukan\ ;
+増分 > zoubun\ ;
+精煉 > seiren\ ;
+潮路 > shioji\ ;
+紅梅 > koubai\ ;
+降壇 > koudan\ ;
+西方 > seihou\ ;
+術計 > jukkei\ ;
+採算 > saisan\ ;
+納杯 > nouhai\ ;
+潰走 > kaisou\ ;
+衆議 > shuugi\ ;
+褒状 > houjou\ ;
+防寒 > boukan\ ;
+際会 > saikai\ ;
+点数 > tensuu\ ;
+納本 > nouhon\ ;
+拳道 > kondou\ ;
+増兵 > zouhei\ ;
+明々 > akaaka\ ;
+陣営 > jin''ei\ ;
+坐礁 > zashou\ ;
+紙数 > shisuu\ ;
+継嗣 > keishi\ ;
+総体 > soutai\ ;
+描画 > byouga\ ;
+紛擾 > funjou\ ;
+灸治 > kyuuji\ ;
+総会 > soukai\ ;
+接種 > sesshu\ ;
+総代 > soudai\ ;
+門灯 > montou\ ;
+拠金 > kyokin\ ;
+門火 > kadobi\ ;
+煎剤 > senzai\ ;
+絶好 > zekkou\ ;
+焦土 > shoudo\ ;
+素描 > sobyou\ ;
+紆曲 > ukyoku\ ;
+拝金 > haikin\ ;
+袱紗 > fukusa\ ;
+随伴 > zuihan\ ;
+陽光 > youkou\ ;
+経常 > keijou\ ;
+提琴 > teikin\ ;
+経師 > kyouji\ ;
+記入 > kinyuu\ ;
+在米 > zaibei\ ;
+覚悟 > kakugo\ ;
+増俸 > zouhou\ ;
+袢纏 > hanten\ ;
+開港 > kaikou\ ;
+増便 > zoubin\ ;
+綜合 > sougou\ ;
+陰刻 > inkoku\ ;
+漏電 > rouden\ ;
+褐炭 > kattan\ ;
+階乗 > kaijou\ ;
+掻痒 > souyou\ ;
+炉棚 > rodana\ ;
+解団 > kaidan\ ;
+境内 > keidai\ ;
+階上 > kaijou\ ;
+陞叙 > shoujo\ ;
+推知 > suichi\ ;
+擾乱 > jouran\ ;
+火水 > himizu\ ;
+製版 > seihan\ ;
+篤行 > tokkou\ ;
+要所 > yousho\ ;
+地税 > chizei\ ;
+絹地 > kinuji\ ;
+言動 > gendou\ ;
+精液 > seieki\ ;
+防塵 > boujin\ ;
+探知 > tanchi\ ;
+堅志 > kenshi\ ;
+防塞 > bousai\ ;
+器量 > kiryou\ ;
+挙行 > kyokou\ ;
+灌漑 > kangai\ ;
+阪大 > handai\ ;
+血行 > kekkou\ ;
+長湯 > nagayu\ ;
+続刊 > zokkan\ ;
+土竜 > mogura\ ;
+漸近 > zenkin\ ;
+土窯 > dogama\ ;
+院内 > in''nai\ ;
+場外 > jougai\ ;
+製炭 > seitan\ ;
+垂準 > suijun\ ;
+粉状 > funjou\ ;
+無告 > mukoku\ ;
+訓令 > kunrei\ ;
+見当 > kentou\ ;
+累年 > ruinen\ ;
+回船 > kaisen\ ;
+降参 > kousan\ ;
+圧神 > asshin\ ;
+米産 > beisan\ ;
+結婚 > kekkon\ ;
+回航 > kaikou\ ;
+閉止 > heishi\ ;
+納所 > nassho\ ;
+撤回 > tekkai\ ;
+籠目 > kagome\ ;
+純愛 > jun''ai\ ;
+投降 > toukou\ ;
+紺屋 > kon''ya\ ;
+手鼻 > tebana\ ;
+長波 > chouha\ ;
+操典 > souten\ ;
+垂涎 > zuizen\ ;
+索引 > sakuin\ ;
+純情 > junjou\ ;
+点心 > tenjin\ ;
+関東 > kantou\ ;
+煉丹 > rentan\ ;
+絶品 > zeppin\ ;
+探番 > tanban\ ;
+訌争 > kousou\ ;
+門歯 > monshi\ ;
+濃紺 > noukon\ ;
+約手 > yakute\ ;
+地相 > chisou\ ;
+衰耗 > suimou\ ;
+筆頭 > hittou\ ;
+採用 > saiyou\ ;
+灌水 > kansui\ ;
+捕縛 > hobaku\ ;
+裂痔 > kireji\ ;
+粉炭 > funtan\ ;
+陪乗 > baijou\ ;
+四肢 > shishi\ ;
+管財 > kanzai\ ;
+装甲 > soukou\ ;
+装用 > souyou\ ;
+計上 > keijou\ ;
+闘志 > toushi\ ;
+圧着 > atsugi\ ;
+垣根 > kakine\ ;
+因習 > inshuu\ ;
+面々 > menmen\ ;
+四聖 > shisei\ ;
+解剖 > kaibou\ ;
+統合 > tougou\ ;
+土石 > doseki\ ;
+開梱 > kaikon\ ;
+附則 > fusoku\ ;
+潜行 > senkou\ ;
+紙幣 > shihei\ ;
+襟懐 > kinkai\ ;
+解凍 > kaitou\ ;
+地番 > chiban\ ;
+焚刑 > funkei\ ;
+垂死 > suishi\ ;
+細字 > hosoji\ ;
+細孔 > saikou\ ;
+堅守 > kenshu\ ;
+無償 > mushou\ ;
+火木 > kamoku\ ;
+終夜 > shuuya\ ;
+地界 > chikai\ ;
+関数 > kansuu\ ;
+絃声 > gensei\ ;
+言上 > gonjou\ ;
+開校 > kaikou\ ;
+拝謝 > haisha\ ;
+間服 > aifuku\ ;
+解党 > kaitou\ ;
+閉校 > heikou\ ;
+無傷 > mukizu\ ;
+揚水 > yousui\ ;
+撤去 > tekkyo\ ;
+製法 > seihou\ ;
+滞陣 > taijin\ ;
+精根 > seikon\ ;
+因縁 > in''nen\ ;
+西岸 > seigan\ ;
+嘆願 > tangan\ ;
+澱粉 > denpun\ ;
+統制 > tousei\ ;
+持薬 > jiyaku\ ;
+回線 > kaisen\ ;
+間断 > kandan\ ;
+拝観 > haikan\ ;
+要害 > yougai\ ;
+紙屋 > kamiya\ ;
+降任 > kounin\ ;
+拝見 > haiken\ ;
+蟠踞 > bankyo\ ;
+間数 > makazu\ ;
+国禁 > kokkin\ ;
+挿絵 > sashie\ ;
+地獄 > jigoku\ ;
+無休 > mukyuu\ ;
+垂楊 > suiyou\ ;
+掌理 > shouri\ ;
+細大 > saidai\ ;
+閑散 > kansan\ ;
+開明 > kaimei\ ;
+土産 > miyage\ ;
+解体 > kaitai\ ;
+接点 > setten\ ;
+国礎 > kokuso\ ;
+滑降 > kakkou\ ;
+閨房 > keibou\ ;
+開方 > kaihou\ ;
+端麗 > tanrei\ ;
+血膿 > chiumi\ ;
+解任 > kainin\ ;
+方々 > houbou\ ;
+絶倒 > zettou\ ;
+紙子 > kamiko\ ;
+炭層 > tansou\ ;
+撤兵 > teppei\ ;
+紫外 > shigai\ ;
+累増 > ruizou\ ;
+行者 > gyouja\ ;
+採点 > saiten\ ;
+携帯 > keitai\ ;
+採炭 > saitan\ ;
+烈士 > resshi\ ;
+開放 > kaihou\ ;
+漫談 > mandan\ ;
+手駒 > tegoma\ ;
+堅塁 > kenrui\ ;
+手首 > tekubi\ ;
+堂塔 > doutou\ ;
+長期 > chouki\ ;
+堅城 > kenjou\ ;
+炉心 > roshin\ ;
+筆鋒 > hippou\ ;
+堂堂 > doudou\ ;
+漫言 > mangen\ ;
+回答 > kaitou\ ;
+親和 > shinwa\ ;
+経口 > keikou\ ;
+城市 > joushi\ ;
+絶交 > zekkou\ ;
+垂木 > taruki\ ;
+場内 > jounai\ ;
+按腹 > anpuku\ ;
+補注 > hochuu\ ;
+地点 > chiten\ ;
+漢詩 > kanshi\ ;
+闇屋 > yamiya\ ;
+絶世 > zessei\ ;
+技量 > giryou\ ;
+手頸 > tekubi\ ;
+組合 > kumiai\ ;
+炉床 > roshou\ ;
+手頃 > tegoro\ ;
+見地 > kenchi\ ;
+要塞 > yousai\ ;
+被爆 > hibaku\ ;
+蟷螂 > tourou\ ;
+覆土 > fukudo\ ;
+培地 > baichi\ ;
+潜航 > senkou\ ;
+西域 > seiiki\ ;
+給付 > kyuufu\ ;
+給仕 > kyuuji\ ;
+回礼 > kairei\ ;
+所願 > shogan\ ;
+闘士 > toushi\ ;
+結党 > kettou\ ;
+瀕死 > hinshi\ ;
+純増 > junzou\ ;
+開戦 > kaisen\ ;
+観光 > kankou\ ;
+製材 > seizai\ ;
+溜飲 > ryuuin\ ;
+表示 > hyouji\ ;
+要地 > youchi\ ;
+製本 > seihon\ ;
+烙印 > rakuin\ ;
+手際 > tegiwa\ ;
+手隙 > tesuki\ ;
+経典 > keiten\ ;
+親分 > oyabun\ ;
+紙型 > shikei\ ;
+等辺 > touhen\ ;
+点在 > tenzai\ ;
+地溝 > chikou\ ;
+給与 > kyuuyo\ ;
+炭塵 > tanjin\ ;
+国璽 > kokuji\ ;
+粗服 > sofuku\ ;
+血統 > kettou\ ;
+火急 > kakyuu\ ;
+域外 > ikigai\ ;
+竿頭 > kantou\ ;
+細君 > saikun\ ;
+灯影 > hokage\ ;
+投資 > toushi\ ;
+拙著 > setcho\ ;
+血糖 > kettou\ ;
+手長 > tenaga\ ;
+火影 > hokage\ ;
+排液 > haieki\ ;
+炭坑 > tankou\ ;
+闇夜 > yamiyo\ ;
+国王 > kokuou\ ;
+紅塵 > koujin\ ;
+見台 > kendai\ ;
+粉本 > funpon\ ;
+長打 > chouda\ ;
+見参 > kenzan\ ;
+精悍 > seikan\ ;
+圏点 > kenten\ ;
+火床 > hidoko\ ;
+血管 > kekkan\ ;
+経伝 > keiden\ ;
+捕球 > hokyuu\ ;
+成魚 > seigyo\ ;
+表皮 > hyouhi\ ;
+行程 > koutei\ ;
+揚揚 > youyou\ ;
+城外 > jougai\ ;
+指紋 > shimon\ ;
+排水 > haisui\ ;
+国父 > kokufu\ ;
+細分 > saibun\ ;
+災害 > saigai\ ;
+開廷 > kaitei\ ;
+嘉辰 > kashin\ ;
+捕獲 > hokaku\ ;
+持続 > jizoku\ ;
+溶銑 > yousen\ ;
+規則 > kisoku\ ;
+閉廷 > heitei\ ;
+握手 > akushu\ ;
+開店 > kaiten\ ;
+精彩 > seisai\ ;
+提携 > teikei\ ;
+手鍋 > tenabe\ ;
+掃海 > soukai\ ;
+竜馬 > ryuume\ ;
+城塞 > jousai\ ;
+経世 > keisei\ ;
+開平 > kaihei\ ;
+抗言 > kougen\ ;
+窮鼠 > kyuuso\ ;
+閉店 > heiten\ ;
+城塁 > jourui\ ;
+滑車 > kassha\ ;
+童顔 > dougan\ ;
+回生 > kaisei\ ;
+満願 > mangan\ ;
+開巻 > kaikan\ ;
+西南 > seinan\ ;
+探検 > tanken\ ;
+門弟 > montei\ ;
+戦雲 > sen''un\ ;
+手鉤 > tekagi\ ;
+湾頭 > wantou\ ;
+納品 > nouhin\ ;
+喧騒 > kensou\ ;
+損害 > songai\ ;
+米材 > beizai\ ;
+城址 > joushi\ ;
+戦隊 > sentai\ ;
+拝聞 > haibun\ ;
+蜚鳥 > hichou\ ;
+戦陣 > senjin\ ;
+精巧 > seikou\ ;
+精巣 > seisou\ ;
+満面 > manmen\ ;
+閑居 > kankyo\ ;
+竜頭 > ryuuzu\ ;
+滑走 > kassou\ ;
+喫飯 > kippan\ ;
+索具 > sakugu\ ;
+裏板 > uraita\ ;
+蝦錠 > ebijou\ ;
+火宅 > kataku\ ;
+戦闘 > sentou\ ;
+手酌 > tejaku\ ;
+拙者 > sessha\ ;
+開山 > kaisan\ ;
+長座 > chouza\ ;
+漢英 > kan''ei\ ;
+閉山 > heizan\ ;
+嘉賞 > kashou\ ;
+地検 > chiken\ ;
+閉居 > heikyo\ ;
+開封 > kaifuu\ ;
+摂取 > sesshu\ ;
+関大 > kandai\ ;
+国漢 > kokkan\ ;
+点光 > tenkou\ ;
+炭労 > tanrou\ ;
+抹茶 > matcha\ ;
+回状 > kaijou\ ;
+累代 > ruidai\ ;
+拘置 > kouchi\ ;
+純分 > junbun\ ;
+坦懐 > tankai\ ;
+均斉 > kinsei\ ;
+満開 > mankai\ ;
+均整 > kinsei\ ;
+累乗 > ruijou\ ;
+推断 > suidan\ ;
+散々 > sanzan\ ;
+批評 > hihyou\ ;
+授業 > jugyou\ ;
+融資 > yuushi\ ;
+推敲 > suikou\ ;
+累世 > ruisei\ ;
+血相 > kessou\ ;
+粘性 > nensei\ ;
+複座 > fukuza\ ;
+濃淡 > noutan\ ;
+掲揚 > keiyou\ ;
+見事 > migoto\ ;
+精子 > seishi\ ;
+堂上 > doujou\ ;
+螳螂 > tourou\ ;
+手軽 > tegaru\ ;
+灰塵 > haijin\ ;
+在校 > zaikou\ ;
+褥婦 > jokufu\ ;
+漕艇 > soutei\ ;
+長屋 > nagaya\ ;
+血痰 > kettan\ ;
+開始 > kaishi\ ;
+衆生 > shujou\ ;
+要件 > youken\ ;
+血痕 > kekkon\ ;
+域内 > ikinai\ ;
+長寿 > chouju\ ;
+要人 > youjin\ ;
+在来 > zairai\ ;
+挙用 > kyoyou\ ;
+長家 > nagaya\ ;
+裁断 > saidan\ ;
+抜萃 > bassui\ ;
+紛争 > funsou\ ;
+所載 > shosai\ ;
+手足 > teashi\ ;
+圧服 > appuku\ ;
+紛乱 > funran\ ;
+潰瘍 > kaiyou\ ;
+開墾 > kaikon\ ;
+地方 > chihou\ ;
+推挙 > suikyo\ ;
+国母 > kokubo\ ;
+粒度 > ryuudo\ ;
+地文 > chimon\ ;
+街燈 > gaitou\ ;
+游魚 > yuugyo\ ;
+抗菌 > koukin\ ;
+紙上 > shijou\ ;
+開場 > kaijou\ ;
+融解 > yuukai\ ;
+回漕 > kaisou\ ;
+土木 > doboku\ ;
+閉場 > heijou\ ;
+被服 > hifuku\ ;
+喉頭 > koutou\ ;
+閑地 > kanchi\ ;
+米懇 > beikon\ ;
+闘争 > tousou\ ;
+納会 > noukai\ ;
+開城 > kaijou\ ;
+閣員 > kakuin\ ;
+門外 > mongai\ ;
+捺染 > nassen\ ;
+被曝 > hibaku\ ;
+推戴 > suitai\ ;
+城内 > jounai\ ;
+管端 > kantan\ ;
+城兵 > jouhei\ ;
+漁船 > gyosen\ ;
+闇値 > yamine\ ;
+演習 > enshuu\ ;
+接戦 > sessen\ ;
+回游 > kaiyuu\ ;
+街灯 > gaitou\ ;
+競輪 > keirin\ ;
+持病 > jibyou\ ;
+長女 > choujo\ ;
+国権 > kokken\ ;
+紊乱 > bunran\ ;
+長夜 > chouya\ ;
+指環 > yubiwa\ ;
+拙稿 > sekkou\ ;
+土方 > dokata\ ;
+打診 > dashin\ ;
+善霊 > zenrei\ ;
+拝礼 > hairei\ ;
+四海 > shikai\ ;
+圧搾 > assaku\ ;
+溶解 > youkai\ ;
+演繹 > en''eki\ ;
+補強 > hokyou\ ;
+門地 > monchi\ ;
+拘禁 > koukin\ ;
+立錐 > rissui\ ;
+精嚢 > seinou\ ;
+善隣 > zenrin\ ;
+笑話 > shouwa\ ;
+鎔銑 > yousen\ ;
+戦車 > sensha\ ;
+坑底 > koutei\ ;
+灯台 > toudai\ ;
+算程 > santei\ ;
+手許 > temoto\ ;
+渠魁 > kyokai\ ;
+衰残 > suizan\ ;
+衰死 > suishi\ ;
+粉屋 > konaya\ ;
+城代 > joudai\ ;
+所論 > shoron\ ;
+四民 > shimin\ ;
+団欒 > danran\ ;
+満載 > mansai\ ;
+接待 > settai\ ;
+満車 > mansha\ ;
+所詮 > shosen\ ;
+城主 > joushu\ ;
+在所 > zaisho\ ;
+瀑布 > bakufu\ ;
+米帝 > beitei\ ;
+糖分 > toubun\ ;
+搭乗 > toujou\ ;
+喝采 > kassai\ ;
+開口 > kaikou\ ;
+溶融 > youyuu\ ;
+灰分 > kaibun\ ;
+嘲罵 > chouba\ ;
+筋腫 > kinshu\ ;
+閉口 > heikou\ ;
+蛮風 > banpuu\ ;
+懇願 > kongan\ ;
+筆致 > hitchi\ ;
+所見 > shoken\ ;
+所要 > shoyou\ ;
+図柄 > zugara\ ;
+装弾 > soudan\ ;
+戊辰 > boshin\ ;
+漁網 > gyomou\ ;
+国是 > kokuze\ ;
+灯光 > toukou\ ;
+糞便 > funben\ ;
+蝴蝶 > kochou\ ;
+潮瀬 > shiose\ ;
+関係 > kankei\ ;
+童貞 > doutei\ ;
+突風 > toppuu\ ;
+激昂 > gekkou\ ;
+折線 > sessen\ ;
+火先 > hosaki\ ;
+米屋 > komeya\ ;
+火元 > himoto\ ;
+地形 > chikei\ ;
+満貫 > mangan\ ;
+装幀 > soutei\ ;
+揺動 > youdou\ ;
+簡明 > kanmei\ ;
+戯評 > gihyou\ ;
+精勤 > seikin\ ;
+抜糸 > basshi\ ;
+血清 > kessei\ ;
+穴馬 > anauma\ ;
+精励 > seirei\ ;
+火傷 > yakedo\ ;
+滅菌 > mekkin\ ;
+筆耕 > hikkou\ ;
+鎮護 > chingo\ ;
+蛮隷 > banrei\ ;
+筆者 > hissha\ ;
+抜粋 > bassui\ ;
+地底 > chitei\ ;
+在役 > zaieki\ ;
+才藻 > saisou\ ;
+地平 > chihei\ ;
+精到 > seitou\ ;
+換喩 > kan''yu\ ;
+粉塵 > funjin\ ;
+地帯 > chitai\ ;
+節点 > setten\ ;
+推定 > suitei\ ;
+童謡 > douyou\ ;
+問題 > mondai\ ;
+門前 > monzen\ ;
+四桁 > yoketa\ ;
+行殊 > gyoujo\ ;
+坦坦 > tantan\ ;
+空音 > sorane\ ;
+関与 > kan''yo\ ;
+圧延 > atsuen\ ;
+衰替 > suitai\ ;
+開催 > kaisai\ ;
+門出 > kadode\ ;
+精兵 > seihei\ ;
+採寸 > saisun\ ;
+開傘 > kaisan\ ;
+扶翼 > fuyoku\ ;
+損亡 > sonbou\ ;
+閃光 > senkou\ ;
+籠居 > roukyo\ ;
+坑外 > kougai\ ;
+懸軍 > kengun\ ;
+龍馬 > ryuume\ ;
+空電 > kuuden\ ;
+四書 > shisho\ ;
+挙止 > kyoshi\ ;
+製品 > seihin\ ;
+空際 > kuusai\ ;
+善道 > zendou\ ;
+清風 > seifuu\ ;
+管状 > kanjou\ ;
+鍛錬 > tanren\ ;
+地層 > chisou\ ;
+火中 > kachuu\ ;
+国技 > kokugi\ ;
+録音 > rokuon\ ;
+鍛鋼 > tankou\ ;
+裁定 > seitei\ ;
+所蔵 > shozou\ ;
+長円 > chouen\ ;
+開会 > kaikai\ ;
+測鎖 > sokusa\ ;
+潟湖 > sekiko\ ;
+喉輪 > nodowa\ ;
+渋面 > juumen\ ;
+閉会 > heikai\ ;
+回旋 > kaisen\ ;
+筆紙 > hisshi\ ;
+捕捉 > hosoku\ ;
+空閨 > kuukei\ ;
+潮気 > shioke\ ;
+回文 > kaibun\ ;
+演目 > enmoku\ ;
+空間 > kuukan\ ;
+国憲 > kokken\ ;
+回数 > kaisuu\ ;
+投稿 > toukou\ ;
+国慶 > kokkei\ ;
+才芸 > saigei\ ;
+複利 > fukuri\ ;
+裏声 > uragoe\ ;
+滞納 > tainou\ ;
+四散 > shisan\ ;
+渓間 > keikan\ ;
+拠点 > kyoten\ ;
+手芸 > shugei\ ;
+測鉛 > sokuen\ ;
+在官 > zaikan\ ;
+噴煙 > fun''en\ ;
+滞米 > taibei\ ;
+漂砂 > hyousa\ ;
+門人 > monjin\ ;
+筆算 > hissan\ ;
+国恩 > kokuon\ ;
+掃射 > sousha\ ;
+鎔解 > youkai\ ;
+筆答 > hittou\ ;
+才腕 > saiwan\ ;
+困憊 > konpai\ ;
+節水 > sessui\ ;
+潅漑 > kangai\ ;
+筆端 > hittan\ ;
+答礼 > tourei\ ;
+手腕 > shuwan\ ;
+潜水 > sensui\ ;
+激怒 > gekido\ ;
+才能 > sainou\ ;
+装填 > souten\ ;
+拳法 > kenpou\ ;
+清閑 > seikan\ ;
+接地 > setchi\ ;
+鍛造 > tanzou\ ;
+竜蝦 > iseebi\ ;
+地変 > chihen\ ;
+血栓 > kessen\ ;
+排外 > haigai\ ;
+団扇 > uchiwa\ ;
+手職 > tejoku\ ;
+窓辺 > madobe\ ;
+術数 > jussuu\ ;
+籠城 > roujou\ ;
+漫然 > manzen\ ;
+滞空 > taikuu\ ;
+深雪 > miyuki\ ;
+地塊 > chikai\ ;
+回戦 > kaisen\ ;
+濁度 > dakudo\ ;
+手翰 > shukan\ ;
+在天 > zaiten\ ;
+行旅 > kouryo\ ;
+稽首 > keishu\ ;
+竜虎 > ryouko\ ;
+在外 > zaigai\ ;
+衰態 > suitai\ ;
+行文 > koubun\ ;
+血書 > kessho\ ;
+裂地 > kireji\ ;
+坑口 > koukou\ ;
+地域 > chiiki\ ;
+減配 > genpai\ ;
+積雲 > sekiun\ ;
+満蒙 > manmou\ ;
+漸減 > zengen\ ;
+回想 > kaisou\ ;
+滑空 > kakkuu\ ;
+深間 > fukama\ ;
+滑稽 > kokkei\ ;
+漫漫 > manman\ ;
+錬鋼 > renkou\ ;
+血斑 > keppan\ ;
+稚鰤 > warasa\ ;
+減退 > gentai\ ;
+端艇 > tantei\ ;
+接吻 > seppun\ ;
+推参 > suisan\ ;
+拘泥 > koudei\ ;
+筋目 > sujime\ ;
+戦艦 > senkan\ ;
+補則 > hosoku\ ;
+捨子 > sutego\ ;
+噴泉 > funsen\ ;
+稚鮎 > chiayu\ ;
+蜥蜴 > tokage\ ;
+拝殿 > haiden\ ;
+稚魚 > chigyo\ ;
+均勢 > kinsei\ ;
+国富 > kokufu\ ;
+採取 > saishu\ ;
+坑内 > kounai\ ;
+噴水 > funsui\ ;
+手紙 > tegami\ ;
+算法 > sanpou\ ;
+国字 > kokuji\ ;
+囚徒 > shuuto\ ;
+衰幣 > suihei\ ;
+篆書 > tensho\ ;
+種類 > shurui\ ;
+清酒 > seishu\ ;
+粉体 > funtai\ ;
+圏外 > kengai\ ;
+補償 > hoshou\ ;
+商運 > shouun\ ;
+回廊 > kairou\ ;
+空転 > kuuten\ ;
+均分 > kinbun\ ;
+滅私 > messhi\ ;
+空軍 > kuugun\ ;
+空車 > kuusha\ ;
+粋人 > suijin\ ;
+手籠 > tekago\ ;
+空身 > karami\ ;
+指数 > shisuu\ ;
+善行 > zenkou\ ;
+錚錚 > sousou\ ;
+手簡 > shukan\ ;
+算段 > sandan\ ;
+清遊 > seiyuu\ ;
+地名 > chimei\ ;
+満腔 > mankou\ ;
+披瀝 > hireki\ ;
+拒止 > kyoshi\ ;
+手箱 > tebako\ ;
+手管 > tekuda\ ;
+筆生 > hissei\ ;
+補修 > hoshuu\ ;
+接写 > sessha\ ;
+四川 > shisen\ ;
+手筋 > tesuji\ ;
+手筈 > tehazu\ ;
+挙手 > kyoshu\ ;
+突貫 > tokkan\ ;
+衡平 > kouhei\ ;
+準縄 > junjou\ ;
+竹縁 > takeen\ ;
+排卵 > hairan\ ;
+湯花 > yubana\ ;
+減資 > genshi\ ;
+血戦 > kessen\ ;
+懇請 > konsei\ ;
+懇談 > kondan\ ;
+捨場 > suteba\ ;
+採光 > saikou\ ;
+地勢 > chisei\ ;
+湯船 > yubune\ ;
+筒状 > toujou\ ;
+衆愚 > shuugu\ ;
+稲門 > toumon\ ;
+裁判 > saiban\ ;
+竜胆 > rindou\ ;
+所管 > shokan\ ;
+深部 > shinbu\ ;
+戸籍 > koseki\ ;
+探偵 > tantei\ ;
+節操 > sessou\ ;
+被告 > hikoku\ ;
+混迷 > konmei\ ;
+滅相 > messou\ ;
+端線 > tansen\ ;
+端緒 > tancho\ ;
+在勤 > zaikin\ ;
+潔斎 > kessai\ ;
+成育 > seiiku\ ;
+蜈蚣 > mukade\ ;
+圧勝 > asshou\ ;
+海鼠 > namako\ ;
+戦線 > sensen\ ;
+漿果 > shouka\ ;
+固執 > koshuu\ ;
+接伴 > seppan\ ;
+竹簀 > takesu\ ;
+器楽 > kigaku\ ;
+地元 > jimoto\ ;
+混載 > konsai\ ;
+液面 > ekimen\ ;
+蛇足 > dasoku\ ;
+滾滾 > konkon\ ;
+国土 > kokudo\ ;
+虹霓 > kougei\ ;
+行幸 > miyuki\ ;
+行年 > kounen\ ;
+空論 > kuuron\ ;
+空談 > kuudan\ ;
+漁港 > gyokou\ ;
+清貧 > seihin\ ;
+才知 > saichi\ ;
+蝋紙 > roushi\ ;
+愛鳥 > aichou\ ;
+蛮行 > bankou\ ;
+漏水 > rousui\ ;
+商議 > shougi\ ;
+蠱惑 > kowaku\ ;
+戯笑 > gishou\ ;
+筋炎 > kin''en\ ;
+排便 > haiben\ ;
+国営 > kokuei\ ;
+四姓 > shisei\ ;
+拮据 > kikkyo\ ;
+披歴 > hireki\ ;
+捕囚 > hoshuu\ ;
+回天 > kaiten\ ;
+振子 > furiko\ ;
+噸数 > tonsuu\ ;
+漁法 > gyohou\ ;
+装丁 > soutei\ ;
+団塊 > dankai\ ;
+捧呈 > houtei\ ;
+減衰 > gensui\ ;
+地代 > chidai\ ;
+戦端 > sentan\ ;
+喫緊 > kikkin\ ;
+四声 > shisei\ ;
+手癖 > tekuse\ ;
+拮抗 > kikkou\ ;
+錯誤 > sakugo\ ;
+税関 > zeikan\ ;
+漁民 > gyomin\ ;
+在住 > zaijuu\ ;
+蚊鉤 > kabari\ ;
+指弾 > shidan\ ;
+回報 > kaihou\ ;
+地上 > chijou\ ;
+在任 > zainin\ ;
+圧伏 > appuku\ ;
+潮干 > shiohi\ ;
+海魚 > kaigyo\ ;
+嗜眠 > shimin\ ;
+算数 > sansuu\ ;
+土俵 > dohyou\ ;
+園内 > en''nai\ ;
+団地 > danchi\ ;
+土俗 > dozoku\ ;
+蚊針 > kabari\ ;
+衆寡 > shuuka\ ;
+抜歯 > basshi\ ;
+潮差 > chousa\ ;
+濃厚 > noukou\ ;
+漢書 > kansho\ ;
+打球 > dakyuu\ ;
+鼻鏡 > bikyou\ ;
+符牒 > fuchou\ ;
+在世 > zaisei\ ;
+授乳 > junyuu\ ;
+海驢 > ashika\ ;
+漫文 > manbun\ ;
+表土 > hyoudo\ ;
+成算 > seisan\ ;
+国務 > kokumu\ ;
+消音 > shouon\ ;
+簡単 > kantan\ ;
+我等 > warera\ ;
+挽回 > bankai\ ;
+折檻 > sekkan\ ;
+空虚 > kuukyo\ ;
+激務 > gekimu\ ;
+土中 > dochuu\ ;
+所用 > shoyou\ ;
+所産 > shosan\ ;
+漢方 > kanpou\ ;
+淺見 > senken\ ;
+融点 > yuuten\ ;
+国利 > kokuri\ ;
+漢文 > kanbun\ ;
+手玉 > tedama\ ;
+滔滔 > toutou\ ;
+喪章 > moshou\ ;
+成空 > seikuu\ ;
+嚇怒 > kakudo\ ;
+団員 > dan''in\ ;
+筆法 > hippou\ ;
+海風 > kaifuu\ ;
+手狭 > tezema\ ;
+国光 > kokkou\ ;
+指導 > shidou\ ;
+鼾酔 > kansui\ ;
+銀鱗 > ginrin\ ;
+感電 > kanden\ ;
+啓蒙 > keimou\ ;
+衆多 > shuuta\ ;
+税金 > zeikin\ ;
+指定 > shitei\ ;
+温良 > onryou\ ;
+喪祭 > sousai\ ;
+懐胎 > kaitai\ ;
+海面 > kaimen\ ;
+黒鵐 > kuroji\ ;
+累々 > ruirui\ ;
+漫才 > manzai\ ;
+蠏座 > kaniza\ ;
+衰勢 > suisei\ ;
+漁村 > gyoson\ ;
+海難 > kainan\ ;
+堂々 > doudou\ ;
+囂囂 > gougou\ ;
+漁期 > ryouki\ ;
+空荷 > karani\ ;
+抱擁 > houyou\ ;
+鋳貨 > chuuka\ ;
+血塊 > kekkai\ ;
+四千 > yonsen\ ;
+四十 > yonjuu\ ;
+簡便 > kanben\ ;
+国会 > kokkai\ ;
+管弦 > kangen\ ;
+海防 > kaibou\ ;
+唐詩 > toushi\ ;
+鼻輪 > hanawa\ ;
+国交 > kokkou\ ;
+国事 > kokuji\ ;
+海関 > kaikan\ ;
+投書 > tousho\ ;
+海門 > kaimon\ ;
+図体 > zuutai\ ;
+箱屋 > hakoya\ ;
+滅法 > meppou\ ;
+四分 > shibun\ ;
+抵抗 > teikou\ ;
+鑽孔 > sankou\ ;
+濁世 > dakuse\ ;
+点々 > tenten\ ;
+齲蝕 > ushoku\ ;
+手漉 > tesuki\ ;
+表具 > hyougu\ ;
+鍛練 > tanren\ ;
+蟹座 > kaniza\ ;
+蚯蚓 > mimizu\ ;
+溶液 > youeki\ ;
+漁撈 > gyorou\ ;
+節奏 > sessou\ ;
+商舗 > shouho\ ;
+鋼製 > kousei\ ;
+拐帯 > kaitai\ ;
+減耗 > genmou\ ;
+端物 > hamono\ ;
+感銘 > kanmei\ ;
+戦犯 > senpan\ ;
+抱懐 > houkai\ ;
+行司 > gyouji\ ;
+担当 > tantou\ ;
+築城 > tsuiki\ ;
+窒素 > chisso\ ;
+団体 > dantai\ ;
+拠守 > kyoshu\ ;
+鋭角 > eikaku\ ;
+秘録 > hiroku\ ;
+招宴 > shouen\ ;
+私闘 > shitou\ ;
+衰亡 > suibou\ ;
+竜王 > ryuuou\ ;
+端然 > tanzen\ ;
+団交 > dankou\ ;
+噴射 > funsha\ ;
+行動 > koudou\ ;
+問罪 > monzai\ ;
+手法 > shuhou\ ;
+黛青 > taisei\ ;
+拙守 > sesshu\ ;
+衰世 > suisei\ ;
+蛇腹 > jabara\ ;
+等方 > touhou\ ;
+命題 > meidai\ ;
+潜在 > senzai\ ;
+慣行 > kankou\ ;
+手水 > temizu\ ;
+抵当 > teitou\ ;
+愛郷 > aikyou\ ;
+笑気 > shouki\ ;
+溝渠 > koukyo\ ;
+抗拒 > koukyo\ ;
+戦災 > sensai\ ;
+銘銘 > meimei\ ;
+手毬 > temari\ ;
+折折 > oriori\ ;
+湯玉 > yudama\ ;
+挫傷 > zashou\ ;
+算定 > santei\ ;
+競演 > kyouen\ ;
+挙動 > kyodou\ ;
+流音 > ryuuon\ ;
+手段 > shudan\ ;
+成犬 > seiken\ ;
+鎮火 > chinka\ ;
+抗戦 > kousen\ ;
+黒雲 > kokuun\ ;
+投手 > toushu\ ;
+満点 > manten\ ;
+行儀 > gyougi\ ;
+鍵盤 > kenban\ ;
+流露 > ryuuro\ ;
+把捉 > hasoku\ ;
+指向 > shikou\ ;
+血判 > keppan\ ;
+指名 > shimei\ ;
+藻類 > sourui\ ;
+流離 > ryuuri\ ;
+銘酒 > meishu\ ;
+海道 > kaidou\ ;
+鼠賊 > sozoku\ ;
+挙兵 > kyohei\ ;
+温突 > ondoru\ ;
+手機 > tebata\ ;
+鑑定 > kantei\ ;
+挙党 > kyotou\ ;
+拷問 > goumon\ ;
+指南 > shinan\ ;
+融朗 > yuurou\ ;
+麺類 > menrui\ ;
+減算 > genzan\ ;
+銅銭 > dousen\ ;
+競泳 > kyouei\ ;
+行使 > koushi\ ;
+戸毎 > kogoto\ ;
+銅鉱 > doukou\ ;
+減等 > gentou\ ;
+手業 > tewaza\ ;
+漸増 > zenzou\ ;
+福音 > fukuin\ ;
+源泉 > gensen\ ;
+海軍 > kaigun\ ;
+消費 > shouhi\ ;
+満満 > manman\ ;
+浪速 > naniwa\ ;
+銀鉱 > ginkou\ ;
+行人 > koujin\ ;
+問答 > mondou\ ;
+吹鳴 > suimei\ ;
+筆才 > hissai\ ;
+行事 > gyouji\ ;
+銀鈴 > ginrei\ ;
+清純 > seijun\ ;
+筆戦 > hissen\ ;
+移設 > isetsu\ ;
+虚誕 > kyotan\ ;
+戦法 > senpou\ ;
+淋菌 > rinkin\ ;
+溶材 > youzai\ ;
+減税 > genzei\ ;
+抗弁 > kouben\ ;
+策応 > sakuou\ ;
+空空 > kuukuu\ ;
+競歩 > kyouho\ ;
+清粋 > seisui\ ;
+私邸 > shitei\ ;
+麪類 > menrui\ ;
+温石 > onjaku\ ;
+虚言 > kyogen\ ;
+黒鍵 > kokken\ ;
+手柄 > tegara\ ;
+私選 > shisen\ ;
+手枷 > tekase\ ;
+混線 > konsen\ ;
+私道 > shidou\ ;
+筆意 > hitsui\ ;
+節制 > sessei\ ;
+端正 > tansei\ ;
+手札 > tefuda\ ;
+清算 > seisan\ ;
+答弁 > touben\ ;
+扁桃 > hentou\ ;
+潜函 > senkan\ ;
+洗顔 > sengan\ ;
+拝啓 > haikei\ ;
+戦死 > senshi\ ;
+手書 > shusho\ ;
+混紡 > konbou\ ;
+哀調 > aichou\ ;
+浜辺 > hamabe\ ;
+感謝 > kansha\ ;
+黒鉛 > kokuen\ ;
+才智 > saichi\ ;
+品詞 > hinshi\ ;
+満水 > mansui\ ;
+戸棚 > todana\ ;
+洋館 > youkan\ ;
+鼎談 > teidan\ ;
+湿気 > shikke\ ;
+蠕動 > zendou\ ;
+我流 > garyuu\ ;
+商科 > shouka\ ;
+拝命 > haimei\ ;
+悪風 > akufuu\ ;
+洗面 > senmen\ ;
+拝呈 > haitei\ ;
+潰乱 > kairan\ ;
+洋風 > youfuu\ ;
+空砲 > kuuhou\ ;
+潜像 > senzou\ ;
+愛読 > aidoku\ ;
+手旗 > tebata\ ;
+愛誦 > aishou\ ;
+所望 > shomou\ ;
+所有 > shoyuu\ ;
+黒酒 > kuroki\ ;
+打撲 > daboku\ ;
+指令 > shirei\ ;
+窃盗 > settou\ ;
+銀輪 > ginrin\ ;
+禅門 > zenmon\ ;
+打撃 > dageki\ ;
+節倹 > sekken\ ;
+承引 > shouin\ ;
+範例 > hanrei\ ;
+黄銅 > koudou\ ;
+意識 > ishiki\ ;
+洞門 > doumon\ ;
+神馬 > shinme\ ;
+投射 > tousha\ ;
+箝口 > kankou\ ;
+喫水 > kissui\ ;
+吸飲 > kyuuin\ ;
+空目 > sorame\ ;
+品行 > hinkou\ ;
+湯水 > yumizu\ ;
+扁旁 > henbou\ ;
+悪霊 > akurei\ ;
+黄金 > kogane\ ;
+手摺 > tesuri\ ;
+稀薄 > kihaku\ ;
+立法 > rippou\ ;
+持久 > jikyuu\ ;
+節会 > sechie\ ;
+我欲 > gayoku\ ;
+湯殿 > yudono\ ;
+端株 > hakabu\ ;
+節介 > sekkai\ ;
+精々 > seizei\ ;
+拐取 > kaishu\ ;
+私財 > shizai\ ;
+吸音 > kyuuon\ ;
+管制 > kansei\ ;
+湧水 > yuusui\ ;
+蝋梅 > roubai\ ;
+渚畔 > shohan\ ;
+営業 > eigyou\ ;
+減産 > gensan\ ;
+鋼線 > kousen\ ;
+準星 > junsei\ ;
+合鴨 > aigamo\ ;
+手指 > shushi\ ;
+黄道 > koudou\ ;
+手拭 > tefuki\ ;
+競映 > kyouei\ ;
+吹雪 > fubuki\ ;
+溺愛 > dekiai\ ;
+湯槽 > yubune\ ;
+筋子 > sujiko\ ;
+愁訴 > shuuso\ ;
+薫香 > kunkou\ ;
+鉄鋼 > tekkou\ ;
+私論 > shiron\ ;
+漢名 > kanmei\ ;
+湖沼 > koshou\ ;
+蚕紙 > sanshi\ ;
+蚕糸 > sanshi\ ;
+悌順 > teijun\ ;
+洗錬 > senren\ ;
+満杯 > manpai\ ;
+薬餌 > yakuji\ ;
+鍼治 > shinji\ ;
+鉄鉱 > tekkou\ ;
+福運 > fukuun\ ;
+押収 > oushuu\ ;
+端整 > tansei\ ;
+薫風 > kunpuu\ ;
+究理 > kyuuri\ ;
+録画 > rokuga\ ;
+銓衡 > senkou\ ;
+河鹿 > kajika\ ;
+鋼管 > koukan\ ;
+鼻翼 > biyoku\ ;
+漆器 > shikki\ ;
+禁酒 > kinshu\ ;
+藩邸 > hantei\ ;
+戦敗 > senpai\ ;
+私見 > shiken\ ;
+浄財 > jouzai\ ;
+虎落 > mogari\ ;
+海蘿 > funori\ ;
+所懐 > shokai\ ;
+温灸 > onkyuu\ ;
+海藻 > kaisou\ ;
+扇情 > senjou\ ;
+私製 > shisei\ ;
+悪銭 > akusen\ ;
+社風 > shafuu\ ;
+名香 > meikou\ ;
+和訳 > wayaku\ ;
+銅製 > dousei\ ;
+準拠 > junkyo\ ;
+涙腺 > ruisen\ ;
+等外 > tougai\ ;
+抱卵 > houran\ ;
+払底 > futtei\ ;
+所感 > shokan\ ;
+洋銀 > yougin\ ;
+秘薬 > hiyaku\ ;
+鎮撫 > chinbu\ ;
+社頭 > shatou\ ;
+私行 > shikou\ ;
+喪服 > mofuku\ ;
+算体 > santai\ ;
+和親 > washin\ ;
+手役 > teyaku\ ;
+銀製 > ginsei\ ;
+黙許 > mokkyo\ ;
+手形 > tegata\ ;
+競技 > kyougi\ ;
+蚕種 > sanshu\ ;
+打席 > daseki\ ;
+港湾 > kouwan\ ;
+薫陶 > kuntou\ ;
+手引 > tebiki\ ;
+渾沌 > konton\ ;
+減点 > genten\ ;
+扇形 > senkei\ ;
+演劇 > engeki\ ;
+悪酒 > akushu\ ;
+所思 > shoshi\ ;
+禁輸 > kin''yu\ ;
+浮薄 > fuhaku\ ;
+同類 > dourui\ ;
+銀行 > ginkou\ ;
+才幹 > saikan\ ;
+洋酒 > youshu\ ;
+龍王 > ryuuou\ ;
+情趣 > joushu\ ;
+成文 > seibun\ ;
+懸案 > ken''an\ ;
+手帳 > techou\ ;
+成敗 > seibai\ ;
+虚聞 > kyobun\ ;
+担体 > tantai\ ;
+手帖 > techou\ ;
+鈍間 > noroma\ ;
+針魚 > hariyo\ ;
+手工 > shukou\ ;
+波間 > namima\ ;
+鼓膜 > komaku\ ;
+憫然 > binzen\ ;
+悪道 > akudou\ ;
+浅見 > senken\ ;
+野鳥 > yachou\ ;
+波長 > hachou\ ;
+鼓腹 > kofuku\ ;
+鼓腸 > kochou\ ;
+治験 > chiken\ ;
+溶岩 > yougan\ ;
+海草 > kaisou\ ;
+法難 > hounan\ ;
+味読 > midoku\ ;
+洗車 > sensha\ ;
+告辞 > kokuji\ ;
+各項 > kakkou\ ;
+沸騰 > futtou\ ;
+温海 > atsumi\ ;
+善業 > zengou\ ;
+扁平 > henpei\ ;
+立方 > rippou\ ;
+笠子 > kasago\ ;
+活計 > kakkei\ ;
+投合 > tougou\ ;
+憤然 > funzen\ ;
+号館 > goukan\ ;
+滞在 > taizai\ ;
+渡渉 > toshou\ ;
+所帯 > shotai\ ;
+抗原 > kougen\ ;
+渦流 > karyuu\ ;
+漢人 > kanjin\ ;
+漁労 > gyorou\ ;
+浪華 > naniwa\ ;
+折半 > seppan\ ;
+金魚 > kingyo\ ;
+嘆声 > tansei\ ;
+銘茶 > meicha\ ;
+称美 > shoubi\ ;
+私蔵 > shizou\ ;
+味覚 > mikaku\ ;
+龕灯 > gandou\ ;
+黴菌 > baikin\ ;
+抜剣 > bakken\ ;
+善根 > zenkon\ ;
+名門 > meimon\ ;
+空港 > kuukou\ ;
+同門 > doumon\ ;
+蛮民 > banmin\ ;
+抜刀 > battou\ ;
+台風 > taifuu\ ;
+慧眼 > keigan\ ;
+才子 > saishi\ ;
+錘状 > suijou\ ;
+溶媒 > youbai\ ;
+禅譲 > zenjou\ ;
+沿革 > enkaku\ ;
+浪花 > naniwa\ ;
+端役 > hayaku\ ;
+台顔 > daigan\ ;
+呉越 > goetsu\ ;
+台頭 > taitou\ ;
+渋滞 > juutai\ ;
+混然 > konzen\ ;
+筋合 > sujiai\ ;
+減法 > genpou\ ;
+投函 > toukan\ ;
+善書 > zensho\ ;
+空洞 > kuudou\ ;
+鈑金 > bankin\ ;
+源平 > genpei\ ;
+名鑑 > meikan\ ;
+等号 > tougou\ ;
+嗣子 > shishi\ ;
+野駒 > nogoma\ ;
+浮腫 > mukumi\ ;
+減水 > gensui\ ;
+麻裏 > asaura\ ;
+種痘 > shutou\ ;
+鈍重 > donjuu\ ;
+叩頭 > koutou\ ;
+憲法 > kenpou\ ;
+所定 > shotei\ ;
+釘頭 > teitou\ ;
+禀請 > rinsei\ ;
+涙管 > ruikan\ ;
+所存 > shozon\ ;
+泥酔 > deisui\ ;
+減殺 > gensai\ ;
+減段 > gentan\ ;
+鎮座 > chinza\ ;
+穂状 > suijou\ ;
+口頭 > koutou\ ;
+清清 > seisei\ ;
+合鍵 > aikagi\ ;
+筆勢 > hissei\ ;
+立憲 > rikken\ ;
+善政 > zensei\ ;
+洞見 > douken\ ;
+礼金 > reikin\ ;
+懐柔 > kaijuu\ ;
+反騰 > hantou\ ;
+蘚苔 > sentai\ ;
+満干 > mankan\ ;
+禽舎 > kinsha\ ;
+告諭 > kokuyu\ ;
+清浄 > seijou\ ;
+等分 > toubun\ ;
+空欄 > kuuran\ ;
+没頭 > bottou\ ;
+抗体 > koutai\ ;
+句集 > kushuu\ ;
+手塩 > teshio\ ;
+湿布 > shippu\ ;
+端山 > hayama\ ;
+惣菜 > souzai\ ;
+成形 > seikei\ ;
+竜座 > ryuuza\ ;
+鉄製 > tessei\ ;
+告訴 > kokuso\ ;
+海綿 > kaimen\ ;
+嗜好 > shikou\ ;
+受領 > juryou\ ;
+筆写 > hissha\ ;
+渇水 > kassui\ ;
+済民 > saimin\ ;
+禁衛 > kin''ei\ ;
+抗争 > kousou\ ;
+清水 > seisui\ ;
+合金 > goukin\ ;
+混淆 > konkou\ ;
+品等 > hintou\ ;
+承允 > shouin\ ;
+悪言 > akugen\ ;
+礼遇 > reiguu\ ;
+喜悦 > kietsu\ ;
+立志 > risshi\ ;
+鼓笛 > koteki\ ;
+成年 > seinen\ ;
+私考 > shikou\ ;
+憤死 > funshi\ ;
+麻薬 > mayaku\ ;
+渇死 > kasshi\ ;
+端子 > tanshi\ ;
+懇望 > konmou\ ;
+虚礼 > kyorei\ ;
+融合 > yuugou\ ;
+同邦 > douhou\ ;
+沈香 > jinkou\ ;
+懇書 > konsho\ ;
+黄葉 > kouyou\ ;
+等値 > touchi\ ;
+湾岸 > wangan\ ;
+満山 > manzan\ ;
+螢光 > keikou\ ;
+双頭 > soutou\ ;
+商機 > shouki\ ;
+才噸 > saiton\ ;
+同道 > doudou\ ;
+稲熱 > imochi\ ;
+鎮守 > chinju\ ;
+滴下 > tekika\ ;
+品種 > hinshu\ ;
+黄菊 > kigiku\ ;
+技倆 > giryou\ ;
+愚策 > gusaku\ ;
+混沌 > konton\ ;
+各部 > kakubu\ ;
+波路 > namiji\ ;
+反面 > hanmen\ ;
+善戦 > zensen\ ;
+洋装 > yousou\ ;
+洋裁 > yousai\ ;
+所在 > shozai\ ;
+悪血 > oketsu\ ;
+神話 > shinwa\ ;
+慨然 > gaizen\ ;
+競売 > keibai\ ;
+藻草 > mogusa\ ;
+移着 > ichaku\ ;
+祝詞 > norito\ ;
+洋行 > youkou\ ;
+同輩 > douhai\ ;
+急須 > kyuusu\ ;
+秘策 > hisaku\ ;
+消磨 > shouma\ ;
+黙考 > mokkou\ ;
+憎気 > nikuge\ ;
+同車 > dousha\ ;
+消磁 > shouji\ ;
+唱歌 > shouka\ ;
+愛称 > aishou\ ;
+湖心 > koshin\ ;
+淡淡 > tantan\ ;
+善感 > zenkan\ ;
+沙門 > shamon\ ;
+種火 > tanebi\ ;
+銅線 > dousen\ ;
+怨霊 > onryou\ ;
+手品 > tejina\ ;
+我家 > wagaya\ ;
+空曹 > kuusou\ ;
+戦士 > senshi\ ;
+反間 > hankan\ ;
+才名 > saimei\ ;
+社賓 > shahin\ ;
+液状 > ekijou\ ;
+恵贈 > keizou\ ;
+口銭 > kousen\ ;
+善性 > zensei\ ;
+礼賛 > raisan\ ;
+戦塵 > senjin\ ;
+金銭 > kinsen\ ;
+懸巣 > kakesu\ ;
+穂波 > honami\ ;
+懐抱 > kaihou\ ;
+参院 > san''in\ ;
+鏤刻 > rukoku\ ;
+金銀 > kingin\ ;
+銀経 > ginkei\ ;
+戦場 > senjou\ ;
+金鉱 > kinkou\ ;
+憶断 > okudan\ ;
+減数 > gensuu\ ;
+満天 > manten\ ;
+和綴 > watoji\ ;
+浄罪 > jouzai\ ;
+感知 > kanchi\ ;
+泰西 > taisei\ ;
+洋蘭 > youran\ ;
+銀糸 > ginshi\ ;
+淡水 > tansui\ ;
+溶剤 > youzai\ ;
+空文 > kuubun\ ;
+黄肌 > kihada\ ;
+成婚 > seikon\ ;
+注記 > chuuki\ ;
+吟詠 > gin''ei\ ;
+懸崖 > kengai\ ;
+鍛成 > tansei\ ;
+銀粉 > ginpun\ ;
+懦弱 > dajaku\ ;
+恭賀 > kyouga\ ;
+卵黄 > ran''ou\ ;
+手動 > shudou\ ;
+藍藻 > ransou\ ;
+憲政 > kensei\ ;
+戦地 > senchi\ ;
+礼讃 > raisan\ ;
+満塁 > manrui\ ;
+合資 > goushi\ ;
+満場 > manjou\ ;
+号車 > gousha\ ;
+泣訴 > kyuuso\ ;
+重重 > juujuu\ ;
+恩賞 > onshou\ ;
+清書 > seisho\ ;
+満堂 > mandou\ ;
+扇動 > sendou\ ;
+才分 > saibun\ ;
+減損 > genson\ ;
+水黽 > amenbo\ ;
+神蛇 > shinja\ ;
+哀痛 > aitsuu\ ;
+戒壇 > kaidan\ ;
+麦芽 > bakuga\ ;
+台車 > daisha\ ;
+品番 > hinban\ ;
+薫製 > kunsei\ ;
+手写 > shusha\ ;
+清明 > seimei\ ;
+法論 > houron\ ;
+決闘 > kettou\ ;
+法談 > houdan\ ;
+原題 > gendai\ ;
+手兵 > shuhei\ ;
+所労 > shorou\ ;
+原頭 > gentou\ ;
+采配 > saihai\ ;
+名論 > meiron\ ;
+浅紅 > senkou\ ;
+第三 > daisan\ ;
+添書 > tensho\ ;
+手先 > tesaki\ ;
+手元 > temoto\ ;
+恩讐 > onshuu\ ;
+恩讎 > onshuu\ ;
+口辺 > kouhen\ ;
+原音 > gen''on\ ;
+我執 > gashuu\ ;
+空挺 > kuutei\ ;
+活線 > kassen\ ;
+同誌 > doushi\ ;
+厚顔 > kougan\ ;
+名詞 > meishi\ ;
+鈍行 > donkou\ ;
+懇情 > konjou\ ;
+添景 > tenkei\ ;
+手傷 > tekizu\ ;
+空拳 > kuuken\ ;
+針路 > shinro\ ;
+符丁 > fuchou\ ;
+名言 > meigen\ ;
+同訓 > doukun\ ;
+金輪 > kanawa\ ;
+成型 > seikei\ ;
+沢辺 > sawabe\ ;
+法要 > houyou\ ;
+科目 > kamoku\ ;
+鼈甲 > bekkou\ ;
+蜂巣 > housou\ ;
+空手 > karate\ ;
+礼装 > reisou\ ;
+同視 > doushi\ ;
+善導 > zendou\ ;
+空所 > kuusho\ ;
+念願 > nengan\ ;
+合計 > goukei\ ;
+麻織 > asaori\ ;
+古蹟 > koseki\ ;
+呪縛 > jubaku\ ;
+空戦 > kuusen\ ;
+慨歎 > gaitan\ ;
+汗顔 > kangan\ ;
+念頭 > nentou\ ;
+科白 > serifu\ ;
+原隊 > gentai\ ;
+醵金 > kyokin\ ;
+稼業 > kagyou\ ;
+端厳 > tangen\ ;
+薮蚊 > yabuka\ ;
+周縁 > shuuen\ ;
+喚声 > kansei\ ;
+海産 > kaisan\ ;
+戦史 > senshi\ ;
+満員 > man''in\ ;
+叛軍 > hangun\ ;
+黄粉 > kinako\ ;
+税源 > zeigen\ ;
+友邦 > yuuhou\ ;
+鎖国 > sakoku\ ;
+竹刀 > shinai\ ;
+愁眉 > shuubi\ ;
+黙秘 > mokuhi\ ;
+清掃 > seisou\ ;
+麻絲 > asaito\ ;
+銃砲 > juuhou\ ;
+才人 > saijin\ ;
+測度 > sokudo\ ;
+同衾 > doukin\ ;
+鍛工 > tankou\ ;
+酸類 > sanrui\ ;
+涼気 > ryouki\ ;
+立地 > ritchi\ ;
+同行 > doukou\ ;
+空想 > kuusou\ ;
+手交 > shukou\ ;
+黒穂 > kurobo\ ;
+情緒 > joucho\ ;
+沃野 > yokuya\ ;
+麻糸 > asaito\ ;
+喧噪 > kensou\ ;
+温床 > onshou\ ;
+感状 > kanjou\ ;
+合衾 > goukin\ ;
+愛猫 > aibyou\ ;
+醸造 > jouzou\ ;
+戦功 > senkou\ ;
+私益 > shieki\ ;
+湾口 > wankou\ ;
+史論 > shiron\ ;
+銃眼 > juugan\ ;
+史談 > shidan\ ;
+章句 > shouku\ ;
+銅盤 > douban\ ;
+憶念 > okunen\ ;
+呼称 > koshou\ ;
+戦前 > senzen\ ;
+鸞輿 > ran''yo\ ;
+憧憬 > doukei\ ;
+双輪 > sourin\ ;
+参道 > sandou\ ;
+液汁 > ekijuu\ ;
+稿本 > kouhon\ ;
+海獣 > kaijuu\ ;
+憤懣 > funman\ ;
+史詩 > shishi\ ;
+反転 > hanten\ ;
+反軍 > hangun\ ;
+可読 > kadoku\ ;
+懸垂 > kensui\ ;
+税法 > zeihou\ ;
+厳重 > genjuu\ ;
+薫蒸 > kunjou\ ;
+台詞 > serifu\ ;
+錬成 > rensei\ ;
+銀盤 > ginban\ ;
+友軍 > yuugun\ ;
+和睦 > waboku\ ;
+銀盃 > ginpai\ ;
+憤慨 > fungai\ ;
+唐本 > touhon\ ;
+鉄線 > tessen\ ;
+鋼板 > kouban\ ;
+鼻毛 > hanage\ ;
+史観 > shikan\ ;
+双蹄 > soutei\ ;
+受賞 > jushou\ ;
+消火 > shouka\ ;
+戒厳 > kaigen\ ;
+鋼材 > kouzai\ ;
+洗練 > senren\ ;
+台覧 > tairan\ ;
+私用 > shiyou\ ;
+志願 > shigan\ ;
+同藩 > douhan\ ;
+口論 > kouron\ ;
+口調 > kuchou\ ;
+叢談 > soudan\ ;
+厳選 > gensen\ ;
+端倪 > tangei\ ;
+金談 > kindan\ ;
+混戦 > konsen\ ;
+戯作 > gesaku\ ;
+混成 > konsei\ ;
+喚問 > kanmon\ ;
+社葬 > shasou\ ;
+憤怒 > fun''nu\ ;
+古註 > kochuu\ ;
+流石 > sasuga\ ;
+鉄粉 > teppun\ ;
+醗酵 > hakkou\ ;
+原鉱 > genkou\ ;
+温容 > on''you\ ;
+麦粉 > mugiko\ ;
+成功 > seikou\ ;
+深手 > fukade\ ;
+黒目 > kurome\ ;
+金言 > kingen\ ;
+洗米 > senmai\ ;
+憐憫 > renbin\ ;
+原野 > gen''ya\ ;
+気魄 > kihaku\ ;
+受諾 > judaku\ ;
+気鬱 > kiutsu\ ;
+成分 > seibun\ ;
+薬舗 > yakuho\ ;
+名著 > meicho\ ;
+鉄管 > tekkan\ ;
+重言 > juugon\ ;
+氷霧 > hyoumu\ ;
+愍然 > binzen\ ;
+金襴 > kinran\ ;
+懐妊 > kainin\ ;
+水面 > minomo\ ;
+禍福 > kafuku\ ;
+氷雨 > hisame\ ;
+鉄筋 > tekkin\ ;
+懸命 > kenmei\ ;
+酔顔 > suigan\ ;
+憐愍 > renbin\ ;
+洋紙 > youshi\ ;
+重視 > juushi\ ;
+成典 > seiten\ ;
+銭湯 > sentou\ ;
+清廉 > seiren\ ;
+洋紅 > youkou\ ;
+重要 > juuyou\ ;
+金製 > kinsei\ ;
+酒類 > shurui\ ;
+合著 > goucho\ ;
+鶏鳴 > keimei\ ;
+禽獣 > kinjuu\ ;
+水雷 > suirai\ ;
+受註 > juchuu\ ;
+受診 > jushin\ ;
+口装 > kousou\ ;
+深意 > shin''i\ ;
+磁針 > jishin\ ;
+憐情 > renjou\ ;
+水難 > suinan\ ;
+君臨 > kunrin\ ;
+戦争 > sensou\ ;
+受託 > jutaku\ ;
+戦乱 > senran\ ;
+浩然 > kouzen\ ;
+窓外 > sougai\ ;
+問屋 > ton''ya\ ;
+鉄窓 > tessou\ ;
+名茶 > meicha\ ;
+慧敏 > keibin\ ;
+港外 > kougai\ ;
+蛇座 > hebiza\ ;
+穿孔 > senkou\ ;
+湯元 > yumoto\ ;
+鼻梁 > biryou\ ;
+私版 > shihan\ ;
+反論 > hanron\ ;
+空寝 > sorane\ ;
+浄界 > joukai\ ;
+薄薄 > usuusu\ ;
+水防 > suibou\ ;
+銅牌 > douhai\ ;
+喜劇 > kigeki\ ;
+憂憤 > yuufun\ ;
+感涙 > kanrui\ ;
+穴居 > kekkyo\ ;
+立冬 > rittou\ ;
+憂慮 > yuuryo\ ;
+海溝 > kaikou\ ;
+立党 > rittou\ ;
+厚遇 > kouguu\ ;
+和独 > wadoku\ ;
+怪談 > kaidan\ ;
+浩瀚 > koukan\ ;
+金蝿 > kinbae\ ;
+銀牌 > ginpai\ ;
+水門 > suimon\ ;
+蛮声 > bansei\ ;
+善哉 > zenzai\ ;
+吏臭 > rishuu\ ;
+同船 > dousen\ ;
+単項 > tankou\ ;
+単音 > tan''on\ ;
+海港 > kaikou\ ;
+鉛白 > enpaku\ ;
+参謀 > sanbou\ ;
+悪童 > akudou\ ;
+憂悶 > yuumon\ ;
+憂患 > yuukan\ ;
+浮漂 > fuhyou\ ;
+鼻木 > hanagi\ ;
+配電 > haiden\ ;
+和牛 > wagyuu\ ;
+薄葉 > usuyou\ ;
+成体 > seitai\ ;
+唐手 > karate\ ;
+淫心 > inshin\ ;
+商家 > shouka\ ;
+唐戸 > karado\ ;
+洗礼 > senrei\ ;
+合致 > gatchi\ ;
+南面 > nanmen\ ;
+参詣 > sankei\ ;
+憂思 > yuushi\ ;
+向背 > kouhai\ ;
+深度 > shindo\ ;
+慷慨 > kougai\ ;
+惨状 > sanjou\ ;
+吾等 > warera\ ;
+海浜 > kaihin\ ;
+民風 > minpuu\ ;
+虚構 > kyokou\ ;
+博雅 > bakuga\ ;
+成人 > seijin\ ;
+悪税 > akuzei\ ;
+黄瓜 > kyuuri\ ;
+吹管 > suikan\ ;
+洋種 > youshu\ ;
+海洋 > kaiyou\ ;
+移植 > ishoku\ ;
+鉄砲 > teppou\ ;
+各自 > kakuji\ ;
+麻疹 > mashin\ ;
+喧伝 > kenden\ ;
+薄茶 > usucha\ ;
+参観 > sankan\ ;
+告示 > kokuji\ ;
+感歎 > kantan\ ;
+南隅 > nanguu\ ;
+含糖 > gantou\ ;
+蛮地 > banchi\ ;
+悪神 > akujin\ ;
+名聞 > meibun\ ;
+立体 > rittai\ ;
+半音 > han''on\ ;
+南限 > nangen\ ;
+情痴 > jouchi\ ;
+突堤 > tottei\ ;
+喪中 > mochuu\ ;
+減塩 > gen''en\ ;
+渥地 > akuchi\ ;
+淡彩 > tansai\ ;
+海水 > kaisui\ ;
+浮流 > furyuu\ ;
+祭神 > saijin\ ;
+神符 > shinpu\ ;
+金蔵 > kinzou\ ;
+愛欲 > aiyoku\ ;
+祭祀 > saishi\ ;
+厳談 > gendan\ ;
+薄色 > usuiro\ ;
+祭礼 > sairei\ ;
+民青 > minsei\ ;
+半面 > hanmen\ ;
+口蓋 > kougai\ ;
+浪浪 > rourou\ ;
+渓声 > keisei\ ;
+虚根 > kyokon\ ;
+微震 > bishin\ ;
+応酬 > oushuu\ ;
+南門 > nanmon\ ;
+原資 > genshi\ ;
+洗眼 > sengan\ ;
+酩酊 > meitei\ ;
+性行 > seikou\ ;
+善処 > zensho\ ;
+同罪 > douzai\ ;
+浮沈 > fuchin\ ;
+水銀 > suigin\ ;
+黒煙 > kokuen\ ;
+御題 > gyodai\ ;
+厳訓 > genkun\ ;
+即金 > sokkin\ ;
+哀楽 > airaku\ ;
+空域 > kuuiki\ ;
+銀漢 > ginkan\ ;
+深山 > miyama\ ;
+野蒜 > nobiru\ ;
+浮氷 > fuhyou\ ;
+鶏頭 > keitou\ ;
+秋波 > shuuha\ ;
+活版 > kappan\ ;
+社線 > shasen\ ;
+気長 > kinaga\ ;
+神秘 > shinpi\ ;
+空地 > akichi\ ;
+台臨 > tairin\ ;
+惨澹 > santan\ ;
+愛楽 > aigyou\ ;
+野菊 > nogiku\ ;
+秋気 > shuuki\ ;
+法線 > housen\ ;
+民間 > minkan\ ;
+懇命 > konmei\ ;
+港口 > koukou\ ;
+悪相 > akusou\ ;
+御霊 > mitama\ ;
+決裁 > kessai\ ;
+半開 > hankai\ ;
+法網 > houmou\ ;
+悲痛 > hitsuu\ ;
+麦田 > mugita\ ;
+鵞鳥 > gachou\ ;
+水郷 > suigou\ ;
+合繊 > gousen\ ;
+私法 > shihou\ ;
+鵝鳥 > gachou\ ;
+慣性 > kansei\ ;
+原論 > genron\ ;
+決行 > kekkou\ ;
+慢性 > mansei\ ;
+御陵 > goryou\ ;
+快走 > kaisou\ ;
+従順 > juujun\ ;
+鼠族 > sozoku\ ;
+治者 > chisha\ ;
+原詩 > genshi\ ;
+水道 > suidou\ ;
+感染 > kansen\ ;
+懐剣 > kaiken\ ;
+情状 > joujou\ ;
+同紙 > doushi\ ;
+鉱滓 > koushi\ ;
+向米 > koubei\ ;
+鉄琴 > tekkin\ ;
+同系 > doukei\ ;
+窮余 > kyuuyo\ ;
+浮標 > fuhyou\ ;
+銀泥 > gindei\ ;
+可聴 > kachou\ ;
+虚数 > kyosuu\ ;
+海棠 > kaidou\ ;
+悪疫 > akueki\ ;
+減員 > gen''in\ ;
+吃緊 > kikkin\ ;
+恩給 > onkyuu\ ;
+水辺 > mizube\ ;
+御門 > mikado\ ;
+双葉 > futaba\ ;
+後項 > koukou\ ;
+稟性 > hinsei\ ;
+混声 > konsei\ ;
+口腔 > koukou\ ;
+鍛冶 > tan''ya\ ;
+悪用 > akuyou\ ;
+窃取 > sesshu\ ;
+愉楽 > yuraku\ ;
+秀歌 > shuuka\ ;
+区長 > kuchou\ ;
+減号 > gengou\ ;
+港内 > kounai\ ;
+水車 > suisha\ ;
+減反 > gentan\ ;
+酒造 > shuzou\ ;
+虎斑 > torafu\ ;
+黒海 > kokkai\ ;
+名答 > meitou\ ;
+後難 > kounan\ ;
+空名 > kuumei\ ;
+浅海 > senkai\ ;
+錦地 > kinchi\ ;
+反英 > han''ei\ ;
+同等 > doutou\ ;
+液性 > ekisei\ ;
+鼻息 > bisoku\ ;
+悪球 > akkyuu\ ;
+合算 > gassan\ ;
+反芻 > hansuu\ ;
+洋琴 > youkin\ ;
+私権 > shiken\ ;
+鉄片 > teppen\ ;
+硼酸 > housan\ ;
+鉱泉 > kousen\ ;
+海月 > kurage\ ;
+海曹 > kaisou\ ;
+配送 > haisou\ ;
+後陣 > koujin\ ;
+南郊 > nankou\ ;
+汎論 > hanron\ ;
+唐子 > karako\ ;
+流派 > ryuuha\ ;
+薄紗 > hakusa\ ;
+虹彩 > kousai\ ;
+混在 > konzai\ ;
+同窓 > dousou\ ;
+禁煙 > kin''en\ ;
+銘板 > meiban\ ;
+鉱水 > kousui\ ;
+微量 > biryou\ ;
+油絵 > aburae\ ;
+海景 > kaikei\ ;
+空包 > kuuhou\ ;
+半金 > hankin\ ;
+毛頭 > moutou\ ;
+愛敬 > aikyou\ ;
+同種 > doushu\ ;
+穿刺 > senshi\ ;
+形骸 > keigai\ ;
+惨死 > zanshi\ ;
+海星 > hitode\ ;
+慈心 > jishin\ ;
+後門 > koumon\ ;
+浄水 > jousui\ ;
+減刑 > genkei\ ;
+重罪 > juuzai\ ;
+酢豚 > subuta\ ;
+千鈞 > senkin\ ;
+黄海 > koukai\ ;
+台紙 > daishi\ ;
+配車 > haisha\ ;
+神璽 > shinji\ ;
+空前 > kuuzen\ ;
+洗煉 > senren\ ;
+洋犬 > youken\ ;
+洸洸 > koukou\ ;
+印象 > inshou\ ;
+千金 > senkin\ ;
+種子 > shushi\ ;
+洸洋 > kouyou\ ;
+秋期 > shuuki\ ;
+気迫 > kihaku\ ;
+同社 > dousha\ ;
+影響 > eikyou\ ;
+蔑視 > besshi\ ;
+応諾 > oudaku\ ;
+減免 > genmen\ ;
+民選 > minsen\ ;
+空冷 > kuurei\ ;
+惚気 > noroke\ ;
+礼砲 > reihou\ ;
+単車 > tansha\ ;
+慶大 > keidai\ ;
+和楽 > waraku\ ;
+怪腕 > kaiwan\ ;
+合祭 > gousai\ ;
+双肩 > souken\ ;
+商務 > shoumu\ ;
+悪熱 > anetsu\ ;
+合祀 > goushi\ ;
+性腺 > seisen\ ;
+憲兵 > kenpei\ ;
+減債 > gensai\ ;
+黄水 > kimizu\ ;
+銘文 > meibun\ ;
+口絵 > kuchie\ ;
+科料 > karyou\ ;
+御酌 > oshaku\ ;
+気軽 > kigaru\ ;
+性能 > seinou\ ;
+呆然 > bouzen\ ;
+注疏 > chuuso\ ;
+注疎 > chuuso\ ;
+商利 > shouri\ ;
+銅板 > douban\ ;
+酒販 > shuhan\ ;
+蛮人 > banjin\ ;
+唱和 > shouwa\ ;
+周波 > shuuha\ ;
+海損 > kaison\ ;
+怪聞 > kaibun\ ;
+私有 > shiyuu\ ;
+慮外 > ryogai\ ;
+酒豪 > shugou\ ;
+私書 > shisho\ ;
+金糸 > kinshi\ ;
+減俸 > genpou\ ;
+半輪 > hanrin\ ;
+法眼 > hougen\ ;
+混同 > kondou\ ;
+銀杯 > ginpai\ ;
+混合 > kongou\ ;
+石鹸 > sekken\ ;
+金粉 > kinpun\ ;
+鉛毒 > endoku\ ;
+当駅 > toueki\ ;
+御遊 > gyoyuu\ ;
+渦中 > kachuu\ ;
+法相 > hossou\ ;
+深味 > fukami\ ;
+神父 > shinpu\ ;
+原著 > gencho\ ;
+悠然 > yuuzen\ ;
+感懐 > kankai\ ;
+麦湯 > mugiyu\ ;
+想望 > soubou\ ;
+参考 > sankou\ ;
+同県 > douken\ ;
+名盤 > meiban\ ;
+司祭 > shisai\ ;
+受給 > jukyuu\ ;
+同相 > dousou\ ;
+同盟 > doumei\ ;
+洪水 > kouzui\ ;
+哀愁 > aishuu\ ;
+感慨 > kangai\ ;
+千載 > senzai\ ;
+蛍光 > keikou\ ;
+哀惜 > aiseki\ ;
+吉相 > kissou\ ;
+空似 > sorani\ ;
+和服 > wafuku\ ;
+硬軟 > kounan\ ;
+金管 > kinkan\ ;
+薬理 > yakuri\ ;
+愛憎 > ainiku\ ;
+口答 > koutou\ ;
+後金 > atokin\ ;
+愛慾 > aiyoku\ ;
+感想 > kansou\ ;
+社用 > shayou\ ;
+銀映 > gin''ei\ ;
+鹵獲 > rokaku\ ;
+砲門 > houmon\ ;
+海戦 > kaisen\ ;
+感情 > kanjou\ ;
+思考 > shikou\ ;
+品性 > hinsei\ ;
+復路 > fukuro\ ;
+命根 > meikon\ ;
+情死 > joushi\ ;
+錠剤 > jouzai\ ;
+深化 > shinka\ ;
+即行 > sokkou\ ;
+錠前 > joumae\ ;
+気象 > kishou\ ;
+愛惜 > aiseki\ ;
+号砲 > gouhou\ ;
+法界 > hokkai\ ;
+啓上 > keijou\ ;
+洗浄 > senjou\ ;
+感性 > kansei\ ;
+神火 > shinka\ ;
+双紙 > soushi\ ;
+名産 > meisan\ ;
+愛息 > aisoku\ ;
+藤氏 > toushi\ ;
+協議 > kyougi\ ;
+黒木 > kuroki\ ;
+愚息 > gusoku\ ;
+古称 > koshou\ ;
+鴕鳥 > dachou\ ;
+泥状 > deijou\ ;
+当面 > toumen\ ;
+必見 > hikken\ ;
+鼓弓 > kokyuu\ ;
+哀弔 > aichou\ ;
+悲況 > hikyou\ ;
+泰然 > taizen\ ;
+反米 > hanbei\ ;
+活栓 > kassen\ ;
+浄書 > jousho\ ;
+破鏡 > hakyou\ ;
+稀少 > kishou\ ;
+商事 > shouji\ ;
+禁止 > kinshi\ ;
+後送 > kousou\ ;
+後退 > koutai\ ;
+受章 > jushou\ ;
+重税 > juuzei\ ;
+酢蛸 > sudako\ ;
+歯齦 > shigin\ ;
+各界 > kakkai\ ;
+叢祠 > hokora\ ;
+慨嘆 > gaitan\ ;
+従軍 > juugun\ ;
+毛鈎 > kebari\ ;
+部長 > buchou\ ;
+史眼 > shigan\ ;
+悶死 > monshi\ ;
+段階 > dankai\ ;
+鼾声 > kansei\ ;
+惨敗 > zanpai\ ;
+悪法 > akuhou\ ;
+待遇 > taiguu\ ;
+洋洋 > youyou\ ;
+麺棒 > menbou\ ;
+右目 > migime\ ;
+必衰 > hissui\ ;
+歯黒 > haguro\ ;
+重祚 > chouso\ ;
+後輪 > kourin\ ;
+後輩 > kouhai\ ;
+黎明 > reimei\ ;
+愈愈 > iyoiyo\ ;
+礼状 > reijou\ ;
+民論 > minron\ ;
+参籠 > sanrou\ ;
+悪水 > akusui\ ;
+滾々 > konkon\ ;
+匪躬 > hikyuu\ ;
+後軍 > kougun\ ;
+後車 > kousha\ ;
+愉悦 > yuetsu\ ;
+針目 > harime\ ;
+北部 > hokubu\ ;
+弾頭 > dantou\ ;
+悪気 > warugi\ ;
+矢鱈 > yatara\ ;
+礎石 > soseki\ ;
+浴後 > yokugo\ ;
+卓見 > takken\ ;
+命数 > meisuu\ ;
+北郊 > hokkou\ ;
+残骸 > zangai\ ;
+折々 > oriori\ ;
+泥炭 > deitan\ ;
+金砂 > kinsha\ ;
+名状 > meijou\ ;
+勧降 > kankou\ ;
+葛餡 > kuzuan\ ;
+浮心 > fushin\ ;
+重砲 > juuhou\ ;
+私憤 > shifun\ ;
+汗腺 > kansen\ ;
+海底 > kaitei\ ;
+怪童 > kaidou\ ;
+沼田 > numada\ ;
+祭殿 > saiden\ ;
+単行 > tankou\ ;
+砲金 > houkin\ ;
+古着 > furugi\ ;
+半解 > hankai\ ;
+南行 > nankou\ ;
+銀扇 > ginsen\ ;
+重石 > omoshi\ ;
+治産 > chisan\ ;
+募集 > boshuu\ ;
+添乗 > tenjou\ ;
+郷里 > kyouri\ ;
+周期 > shuuki\ ;
+原罪 > genzai\ ;
+錦上 > kinjou\ ;
+味方 > mikata\ ;
+種名 > shumei\ ;
+強音 > kyouon\ ;
+混交 > konkou\ ;
+蚕卵 > sanran\ ;
+私感 > shikan\ ;
+十誡 > jikkai\ ;
+残香 > zankou\ ;
+麪棒 > menbou\ ;
+汚職 > oshoku\ ;
+藩校 > hankou\ ;
+混乱 > konran\ ;
+穂先 > hosaki\ ;
+金目 > kaneme\ ;
+私情 > shijou\ ;
+海嶺 > kairei\ ;
+動静 > dousei\ ;
+恒産 > kousan\ ;
+量目 > ryoume\ ;
+徳行 > tokkou\ ;
+研鑽 > kensan\ ;
+弱音 > yowane\ ;
+匪賊 > hizoku\ ;
+吸気 > kyuuki\ ;
+勢門 > seimon\ ;
+快腕 > kaiwan\ ;
+私恨 > shikon\ ;
+残飯 > zanpan\ ;
+水葬 > suisou\ ;
+半裁 > hansai\ ;
+禅林 > zenrin\ ;
+唯一 > yuitsu\ ;
+重盗 > juutou\ ;
+同然 > douzen\ ;
+死骸 > shigai\ ;
+御託 > gotaku\ ;
+微衷 > bichuu\ ;
+御言 > mikoto\ ;
+氷菓 > hyouka\ ;
+神気 > shinki\ ;
+効験 > kouken\ ;
+南蛮 > nanban\ ;
+半衿 > haneri\ ;
+虚妄 > kyomou\ ;
+決算 > kessan\ ;
+感官 > kankan\ ;
+化身 > keshin\ ;
+恬然 > tenzen\ ;
+情景 > joukei\ ;
+薬湯 > yakuyu\ ;
+汽笛 > kiteki\ ;
+法灯 > houtou\ ;
+涼味 > ryoumi\ ;
+同点 > douten\ ;
+水菜 > mizuna\ ;
+海岸 > kaigan\ ;
+勾配 > koubai\ ;
+悪業 > akugou\ ;
+参禅 > sanzen\ ;
+原綿 > genmen\ ;
+惨憺 > santan\ ;
+藤本 > touhon\ ;
+鉄板 > teppan\ ;
+郵送 > yuusou\ ;
+比較 > hikaku\ ;
+浅才 > sensai\ ;
+短音 > tan''on\ ;
+禁書 > kinsho\ ;
+葉風 > hakaze\ ;
+叢生 > sousei\ ;
+御製 > gyosei\ ;
+蓴菜 > junsai\ ;
+含水 > gansui\ ;
+想念 > sounen\ ;
+影身 > kagemi\ ;
+原紙 > genshi\ ;
+愛嬌 > aikyou\ ;
+銷夏 > shouka\ ;
+毛足 > keashi\ ;
+原糸 > genshi\ ;
+歯髄 > shizui\ ;
+海容 > kaiyou\ ;
+銃弾 > juudan\ ;
+虚報 > kyohou\ ;
+原糖 > gentou\ ;
+落馬 > rakuba\ ;
+金環 > kinkan\ ;
+砕鉱 > saikou\ ;
+弓馬 > kyuuba\ ;
+双眼 > sougan\ ;
+双眸 > soubou\ ;
+鹹水 > kansui\ ;
+砲車 > housha\ ;
+憂世 > yuusei\ ;
+反省 > hansei\ ;
+注油 > chuuyu\ ;
+浅慮 > senryo\ ;
+郷軍 > gougun\ ;
+情操 > jousou\ ;
+神樹 > shinju\ ;
+消夏 > shouka\ ;
+沈砂 > chinsa\ ;
+勧銀 > kangin\ ;
+医術 > ijutsu\ ;
+邦題 > houdai\ ;
+蕃社 > bansha\ ;
+稿人 > koujin\ ;
+禁断 > kindan\ ;
+萌黎 > hourei\ ;
+惰弱 > dajaku\ ;
+律詩 > risshi\ ;
+感奮 > kanpun\ ;
+厳禁 > genkin\ ;
+涙嚢 > ruinou\ ;
+穂並 > honami\ ;
+卵胞 > ranhou\ ;
+同源 > dougen\ ;
+愛妾 > aishou\ ;
+名湯 > meitou\ ;
+野球 > yakyuu\ ;
+怪盗 > kaitou\ ;
+呉服 > gofuku\ ;
+神楽 > kagura\ ;
+忠義 > chuugi\ ;
+葷酒 > kunshu\ ;
+水腫 > suishu\ ;
+科学 > kagaku\ ;
+藍染 > aizome\ ;
+唐人 > toujin\ ;
+油然 > yuuzen\ ;
+悪書 > akusho\ ;
+当選 > tousen\ ;
+洋本 > youhon\ ;
+後見 > kouken\ ;
+君民 > kunmin\ ;
+洋書 > yousho\ ;
+葉陰 > hakage\ ;
+銀嶺 > ginrei\ ;
+礼法 > reihou\ ;
+沸点 > futten\ ;
+秋季 > shuuki\ ;
+態勢 > taisei\ ;
+和布 > wakame\ ;
+恬淡 > tentan\ ;
+黙座 > mokuza\ ;
+液剤 > ekizai\ ;
+死霊 > shirei\ ;
+殿軍 > dengun\ ;
+黒影 > kokuei\ ;
+弊風 > heifuu\ ;
+双生 > sousei\ ;
+必至 > hisshi\ ;
+往診 > oushin\ ;
+征討 > seitou\ ;
+蔗糖 > shotou\ ;
+金牌 > kinpai\ ;
+配船 > haisen\ ;
+銅山 > douzan\ ;
+慣例 > kanrei\ ;
+法治 > houchi\ ;
+海外 > kaigai\ ;
+原稿 > genkou\ ;
+原種 > genshu\ ;
+水耕 > suikou\ ;
+郵貯 > yuucho\ ;
+野牛 > yagyuu\ ;
+活性 > kassei\ ;
+社殿 > shaden\ ;
+愛執 > aishuu\ ;
+勧進 > kanjin\ ;
+重版 > juuhan\ ;
+悪文 > akubun\ ;
+砂金 > shakin\ ;
+正餐 > seisan\ ;
+配膳 > haizen\ ;
+求縁 > kyuuen\ ;
+銀山 > ginzan\ ;
+税制 > zeisei\ ;
+忍耐 > nintai\ ;
+悪政 > akusei\ ;
+歯面 > shimen\ ;
+合法 > gouhou\ ;
+死闘 > shitou\ ;
+祭文 > saimon\ ;
+各派 > kakuha\ ;
+遺髪 > ihatsu\ ;
+南航 > nankou\ ;
+慨世 > gaisei\ ;
+秘境 > hikyou\ ;
+酒肴 > shukou\ ;
+汀線 > teisen\ ;
+去痰 > kyotan\ ;
+海堡 > kaihou\ ;
+同氏 > doushi\ ;
+祭政 > saisei\ ;
+遺骨 > ikotsu\ ;
+黒巾 > kurogo\ ;
+恩沢 > ontaku\ ;
+海域 > kaiiki\ ;
+径行 > keikou\ ;
+愛国 > aikoku\ ;
+鉄拳 > tekken\ ;
+名残 > nagori\ ;
+沼湖 > shouko\ ;
+葬送 > sousou\ ;
+破調 > hachou\ ;
+想定 > soutei\ ;
+情感 > joukan\ ;
+虚名 > kyomei\ ;
+厚礼 > kourei\ ;
+禁所 > kinsho\ ;
+弾道 > dandou\ ;
+民芸 > mingei\ ;
+感嘆 > kantan\ ;
+哺乳 > honyuu\ ;
+重点 > juuten\ ;
+吃水 > kissui\ ;
+称呼 > shouko\ ;
+台湾 > taiwan\ ;
+泉水 > sensui\ ;
+鉄扇 > tessen\ ;
+怪獣 > kaijuu\ ;
+周忌 > shuuki\ ;
+永続 > eizoku\ ;
+正面 > matomo\ ;
+重灰 > juukai\ ;
+水練 > suiren\ ;
+短銃 > tanjuu\ ;
+哀哭 > aikoku\ ;
+水線 > suisen\ ;
+鉱山 > kouzan\ ;
+危絵 > abunae\ ;
+鉱層 > kousou\ ;
+恥毛 > chimou\ ;
+北行 > hokkou\ ;
+沛然 > haizen\ ;
+殷賑 > inshin\ ;
+毒見 > dokumi\ ;
+助長 > jochou\ ;
+液体 > ekitai\ ;
+司法 > shihou\ ;
+鈍根 > donkon\ ;
+情念 > jounen\ ;
+悽惨 > seisan\ ;
+惨害 > sangai\ ;
+虚勢 > kyosei\ ;
+碇置 > teichi\ ;
+配置 > haichi\ ;
+気胸 > kikyou\ ;
+咳嗽 > gaisou\ ;
+残金 > zankin\ ;
+復航 > fukkou\ ;
+同権 > douken\ ;
+毬藻 > marimo\ ;
+薫染 > kunsen\ ;
+私大 > shidai\ ;
+毛蟹 > kegani\ ;
+復興 > fukkou\ ;
+愛唱 > aishou\ ;
+性状 > seijou\ ;
+品名 > hinmei\ ;
+鉱害 > kougai\ ;
+同様 > douyou\ ;
+千般 > senpan\ ;
+水系 > suikei\ ;
+悠揚 > yuuyou\ ;
+悪投 > akutou\ ;
+原盤 > genban\ ;
+鳴門 > naruto\ ;
+動輪 > dourin\ ;
+河流 > karyuu\ ;
+厚着 > atsugi\ ;
+悪才 > akusai\ ;
+悪手 > akushu\ ;
+感吟 > kangin\ ;
+沼気 > shouki\ ;
+治水 > chisui\ ;
+悪所 > akusho\ ;
+銃声 > juusei\ ;
+卵管 > rankan\ ;
+歎願 > tangan\ ;
+黒字 > kuroji\ ;
+黒子 > hokuro\ ;
+悶悶 > monmon\ ;
+悪戦 > akusen\ ;
+動転 > douten\ ;
+禀性 > rinsei\ ;
+勇邁 > yuumai\ ;
+危篤 > kitoku\ ;
+私報 > shihou\ ;
+悲愁 > hishuu\ ;
+消化 > shouka\ ;
+正閏 > seijun\ ;
+正門 > seimon\ ;
+形見 > katami\ ;
+同棲 > dousei\ ;
+鶏舎 > keisha\ ;
+包装 > housou\ ;
+徳義 > tokugi\ ;
+葉酸 > yousan\ ;
+労銀 > rougin\ ;
+印箱 > inbako\ ;
+後葉 > kouyou\ ;
+郵袋 > yuutai\ ;
+配線 > haisen\ ;
+勇退 > yuutai\ ;
+吹挙 > suikyo\ ;
+殊遇 > shuguu\ ;
+蒼茫 > soubou\ ;
+水管 > suikan\ ;
+神授 > shinju\ ;
+悪態 > akutai\ ;
+古流 > koryuu\ ;
+十能 > juunou\ ;
+銀塊 > ginkai\ ;
+藻屑 > mokuzu\ ;
+虚像 > kyozou\ ;
+酒精 > shusei\ ;
+同根 > doukon\ ;
+沙漠 > sabaku\ ;
+水筒 > suitou\ ;
+黙契 > mokkei\ ;
+感動 > kandou\ ;
+同校 > doukou\ ;
+重液 > juueki\ ;
+古注 > kochuu\ ;
+単線 > tansen\ ;
+当該 > tougai\ ;
+印章 > inshou\ ;
+毒蛾 > dokuga\ ;
+原産 > gensan\ ;
+勝負 > shoubu\ ;
+原生 > gensei\ ;
+延長 > enchou\ ;
+金泥 > kondei\ ;
+知遇 > chiguu\ ;
+歌集 > kashuu\ ;
+池畔 > chihan\ ;
+卦算 > keisan\ ;
+黒奴 > kokudo\ ;
+急火 > kyuuka\ ;
+神技 > shingi\ ;
+銀坑 > ginkou\ ;
+法曹 > housou\ ;
+同村 > douson\ ;
+厚生 > kousei\ ;
+名札 > nafuda\ ;
+悪性 > akusei\ ;
+単純 > tanjun\ ;
+名望 > meibou\ ;
+勧説 > kanzei\ ;
+向暑 > kousho\ ;
+蘊奥 > un''nou\ ;
+快眠 > kaimin\ ;
+悪念 > akunen\ ;
+半纏 > hanten\ ;
+御者 > gyosha\ ;
+水稲 > suitou\ ;
+同朋 > doubou\ ;
+合板 > gouban\ ;
+同書 > dousho\ ;
+金気 > kanake\ ;
+秘匿 > hitoku\ ;
+感冒 > kanbou\ ;
+福寿 > fukuju\ ;
+怪漢 > kaikan\ ;
+鉄工 > tekkou\ ;
+合本 > gappon\ ;
+遭難 > sounan\ ;
+重水 > juusui\ ;
+水禽 > suikin\ ;
+感光 > kankou\ ;
+虚伝 > kyoden\ ;
+合服 > aifuku\ ;
+悠悠 > yuuyuu\ ;
+南米 > nanbei\ ;
+鶏群 > keigun\ ;
+配管 > haikan\ ;
+哀傷 > aishou\ ;
+受注 > juchuu\ ;
+労連 > rouren\ ;
+勦討 > soutou\ ;
+厳然 > genzen\ ;
+鉗子 > kanshi\ ;
+単簡 > tankan\ ;
+蔵版 > zouhan\ ;
+水神 > suijin\ ;
+悪弊 > akuhei\ ;
+創面 > soumen\ ;
+労農 > rounou\ ;
+復縁 > fukuen\ ;
+神意 > shin''i\ ;
+黽勉 > binben\ ;
+意力 > iryoku\ ;
+当行 > toukou\ ;
+禅尼 > zen''ni\ ;
+祝意 > shukui\ ;
+法文 > houbun\ ;
+加重 > kachou\ ;
+同断 > doudan\ ;
+取水 > shusui\ ;
+浄域 > jouiki\ ;
+名文 > meibun\ ;
+半紙 > hanshi\ ;
+弔辞 > chouji\ ;
+鉱坑 > koukou\ ;
+名数 > meisuu\ ;
+酒税 > shuzei\ ;
+同文 > doubun\ ;
+勝訴 > shouso\ ;
+原状 > genjou\ ;
+海内 > kaidai\ ;
+同数 > dousuu\ ;
+海兵 > kaihei\ ;
+従者 > juusha\ ;
+包蔵 > houzou\ ;
+徽章 > kishou\ ;
+毛茸 > moujou\ ;
+禅定 > zenjou\ ;
+合方 > aikata\ ;
+黒地 > kuroji\ ;
+沈渣 > chinsa\ ;
+後肢 > koushi\ ;
+黒土 > kokudo\ ;
+原版 > genpan\ ;
+薄板 > usuita\ ;
+短資 > tanshi\ ;
+金権 > kinken\ ;
+南端 > nantan\ ;
+強請 > gousei\ ;
+強談 > goudan\ ;
+銘刀 > meitou\ ;
+悔恨 > kaikon\ ;
+遠隔 > enkaku\ ;
+決潰 > kekkai\ ;
+薦挙 > senkyo\ ;
+黄塵 > koujin\ ;
+動詞 > doushi\ ;
+秀句 > shuuku\ ;
+釣果 > chouka\ ;
+古楽 > kogaku\ ;
+司書 > shisho\ ;
+後者 > kousha\ ;
+北航 > hokkou\ ;
+鈍才 > donsai\ ;
+吸引 > kyuuin\ ;
+廃頽 > haitai\ ;
+藻塩 > moshio\ ;
+銃口 > juukou\ ;
+強記 > kyouki\ ;
+急派 > kyuuha\ ;
+創開 > soukai\ ;
+反毛 > hanmou\ ;
+薄暮 > hakubo\ ;
+矩象 > kushou\ ;
+水着 > mizugi\ ;
+満々 > manman\ ;
+碑石 > hiseki\ ;
+愚作 > gusaku\ ;
+加速 > kasoku\ ;
+後置 > kouchi\ ;
+汚物 > obutsu\ ;
+史書 > shisho\ ;
+洪大 > koudai\ ;
+台本 > daihon\ ;
+鶏糞 > keifun\ ;
+水盤 > suiban\ ;
+包莖 > houkei\ ;
+咆哮 > houkou\ ;
+礼拝 > reihai\ ;
+微笑 > bishou\ ;
+剥離 > hakuri\ ;
+選鉱 > senkou\ ;
+原点 > genten\ ;
+蒐荷 > shuuka\ ;
+千篇 > senpen\ ;
+古格 > kokaku\ ;
+決済 > kessai\ ;
+卑称 > hishou\ ;
+鈍感 > donkan\ ;
+包茎 > houkei\ ;
+毛脛 > kezune\ ;
+毛脚 > keashi\ ;
+鳳輦 > houren\ ;
+労資 > roushi\ ;
+怪死 > kaishi\ ;
+砲艦 > houkan\ ;
+私刑 > shikei\ ;
+酔眼 > suigan\ ;
+幼齢 > yourei\ ;
+廻送 > kaisou\ ;
+建造 > kenzou\ ;
+刺魚 > togeuo\ ;
+部落 > buraku\ ;
+号数 > gousuu\ ;
+銃創 > juusou\ ;
+祖廟 > sobyou\ ;
+卵生 > ransei\ ;
+銃剣 > juuken\ ;
+参殿 > sanden\ ;
+引責 > inseki\ ;
+藩士 > hanshi\ ;
+水痘 > suitou\ ;
+金柑 > kinkan\ ;
+短詩 > tanshi\ ;
+恒星 > kousei\ ;
+情報 > jouhou\ ;
+麗容 > reiyou\ ;
+鄭箋 > teisen\ ;
+水疱 > suihou\ ;
+叢林 > sourin\ ;
+右文 > yuubun\ ;
+銃刑 > juukei\ ;
+郵船 > yuusen\ ;
+名手 > meishu\ ;
+後編 > kouhen\ ;
+私兵 > shihei\ ;
+名所 > meisho\ ;
+邂逅 > kaikou\ ;
+古木 > koboku\ ;
+金杯 > kinpai\ ;
+知謀 > chibou\ ;
+私党 > shitou\ ;
+同所 > dousho\ ;
+同房 > doubou\ ;
+君恩 > kun''on\ ;
+合抱 > gouhou\ ;
+想到 > soutou\ ;
+原潜 > gensen\ ;
+醤油 > shouyu\ ;
+微禄 > biroku\ ;
+碁石 > goishi\ ;
+後継 > koukei\ ;
+泰平 > taihei\ ;
+台数 > daisuu\ ;
+水田 > suiden\ ;
+海上 > kaijou\ ;
+水産 > suisan\ ;
+年齢 > nenrei\ ;
+水生 > suisei\ ;
+遼遠 > ryouen\ ;
+底魚 > sokouo\ ;
+恒数 > kousuu\ ;
+秘中 > hichuu\ ;
+前項 > zenkou\ ;
+叢書 > sousho\ ;
+殺菌 > sakkin\ ;
+廻転 > kaiten\ ;
+欠陥 > kekkan\ ;
+銘仙 > meisen\ ;
+短見 > tanken\ ;
+呼吸 > kokyuu\ ;
+弱行 > jakkou\ ;
+命名 > meimei\ ;
+禅堂 > zendou\ ;
+合戦 > kassen\ ;
+呼名 > yobina\ ;
+歓送 > kansou\ ;
+合成 > gousei\ ;
+決水 > kessui\ ;
+同憂 > douyuu\ ;
+銅像 > douzou\ ;
+同慶 > doukei\ ;
+単眼 > tangan\ ;
+歓迎 > kangei\ ;
+重曹 > juusou\ ;
+前面 > zenmen\ ;
+古昔 > koseki\ ;
+蒸籠 > seirou\ ;
+比翼 > hiyoku\ ;
+合憲 > gouken\ ;
+単相 > tansou\ ;
+鉄塔 > tettou\ ;
+同感 > doukan\ ;
+浪人 > rounin\ ;
+剔除 > tekijo\ ;
+合憎 > ainiku\ ;
+没書 > bossho\ ;
+次長 > jichou\ ;
+鷹派 > takaha\ ;
+悪妻 > akusai\ ;
+麗姿 > reishi\ ;
+前電 > zenden\ ;
+知見 > chiken\ ;
+決死 > kesshi\ ;
+想像 > souzou\ ;
+取材 > shuzai\ ;
+同情 > doujou\ ;
+制馭 > seigyo\ ;
+向性 > kousei\ ;
+蘭人 > ranjin\ ;
+殿舎 > densha\ ;
+菌類 > kinrui\ ;
+神宮 > jinguu\ ;
+悲境 > hikyou\ ;
+厳正 > gensei\ ;
+落語 > rakugo\ ;
+黄吻 > koufun\ ;
+重星 > juusei\ ;
+口数 > kousuu\ ;
+卵状 > ranjou\ ;
+正賓 > seihin\ ;
+引証 > inshou\ ;
+悪天 > akuten\ ;
+後篇 > kouhen\ ;
+黄口 > koukou\ ;
+同性 > dousei\ ;
+悪声 > akusei\ ;
+泰山 > taizan\ ;
+遭遇 > souguu\ ;
+重文 > juubun\ ;
+削除 > sakujo\ ;
+半睡 > hansui\ ;
+同志 > doushi\ ;
+吾妹 > wagimo\ ;
+半眼 > hangan\ ;
+合性 > aishou\ ;
+私人 > shijin\ ;
+右折 > usetsu\ ;
+祭壇 > saidan\ ;
+原油 > gen''yu\ ;
+歳計 > saikei\ ;
+性根 > shoune\ ;
+葛藤 > kattou\ ;
+半盲 > hanmou\ ;
+後端 > koutan\ ;
+浄写 > jousha\ ;
+同形 > doukei\ ;
+前門 > zenmon\ ;
+悪場 > waruba\ ;
+悪報 > akuhou\ ;
+法廷 > houtei\ ;
+右手 > migite\ ;
+双書 > sousho\ ;
+心理 > shinri\ ;
+友朋 > yuuhou\ ;
+快漢 > kaikan\ ;
+升目 > masume\ ;
+礼帽 > reibou\ ;
+出鼻 > debana\ ;
+叉木 > matagi\ ;
+歩調 > hochou\ ;
+店頭 > tentou\ ;
+祭場 > saijou\ ;
+幽魂 > yuukon\ ;
+神威 > shin''i\ ;
+又木 > matagi\ ;
+幼魚 > yougyo\ ;
+刺青 > shisei\ ;
+原民 > genmin\ ;
+創造 > souzou\ ;
+恰度 > choudo\ ;
+吹奏 > suisou\ ;
+名店 > meiten\ ;
+券面 > kenmen\ ;
+原毛 > genmou\ ;
+銃丸 > juugan\ ;
+干鱈 > hidara\ ;
+同店 > douten\ ;
+可成 > kanari\ ;
+到頭 > toutou\ ;
+合弁 > gouben\ ;
+法師 > houshi\ ;
+弁論 > benron\ ;
+反映 > han''ei\ ;
+同年 > dounen\ ;
+法帖 > houjou\ ;
+流儀 > ryuugi\ ;
+正論 > seiron\ ;
+情史 > joushi\ ;
+活写 > kassha\ ;
+水煮 > mizuni\ ;
+励行 > reikou\ ;
+惇厚 > tonkou\ ;
+座長 > zachou\ ;
+恐懼 > kyouku\ ;
+別館 > bekkan\ ;
+毒素 > dokuso\ ;
+名工 > meikou\ ;
+同市 > doushi\ ;
+氾濫 > hanran\ ;
+底面 > teimen\ ;
+双方 > souhou\ ;
+半畳 > hanjou\ ;
+破約 > hayaku\ ;
+彼等 > karera\ ;
+過量 > karyou\ ;
+厘毛 > rinmou\ ;
+反数 > hansuu\ ;
+民生 > minsei\ ;
+毛管 > moukan\ ;
+半生 > hansei\ ;
+正訓 > seikun\ ;
+反攻 > hankou\ ;
+去来 > kyorai\ ;
+弁解 > benkai\ ;
+運針 > unshin\ ;
+過酷 > kakoku\ ;
+古手 > furute\ ;
+正解 > seikai\ ;
+制限 > seigen\ ;
+毛筋 > kesuji\ ;
+社屋 > shaoku\ ;
+気球 > kikyuu\ ;
+可惜 > attara\ ;
+連隊 > rentai\ ;
+遊金 > yuukin\ ;
+口才 > kousai\ ;
+醇正 > junsei\ ;
+情勢 > jousei\ ;
+幽香 > yuukou\ ;
+金扇 > kinsen\ ;
+正視 > seishi\ ;
+君子 > kunshi\ ;
+止観 > shikan\ ;
+利鞘 > rizaya\ ;
+別項 > bekkou\ ;
+正西 > seisei\ ;
+福利 > fukuri\ ;
+遅鈍 > chidon\ ;
+取捨 > shusha\ ;
+剣道 > kendou\ ;
+怨敵 > onteki\ ;
+循環 > junkan\ ;
+建言 > kengen\ ;
+恋愛 > ren''ai\ ;
+欠配 > keppai\ ;
+鵬程 > houtei\ ;
+蕃書 > bansho\ ;
+恒性 > kousei\ ;
+廻覧 > kairan\ ;
+命令 > meirei\ ;
+名山 > meizan\ ;
+真鴨 > magamo\ ;
+連関 > renkan\ ;
+向寒 > koukan\ ;
+汀渚 > teisho\ ;
+恋情 > renjou\ ;
+歓談 > kandan\ ;
+恐怖 > kyoufu\ ;
+正装 > seisou\ ;
+参政 > sansei\ ;
+同居 > doukyo\ ;
+初頭 > shotou\ ;
+遅配 > chihai\ ;
+廃退 > haitai\ ;
+汁液 > juueki\ ;
+通院 > tsuuin\ ;
+恵存 > keizon\ ;
+薄幸 > hakkou\ ;
+同封 > doufuu\ ;
+台形 > daikei\ ;
+法定 > houtei\ ;
+法官 > houkan\ ;
+恋恋 > renren\ ;
+石英 > sekiei\ ;
+彩管 > saikan\ ;
+遠足 > ensoku\ ;
+区画 > kukaku\ ;
+厳暑 > gensho\ ;
+次週 > jishuu\ ;
+前金 > maekin\ ;
+重態 > juutai\ ;
+死蔵 > shizou\ ;
+治平 > chihei\ ;
+洋品 > youhin\ ;
+同定 > doutei\ ;
+名字 > myouji\ ;
+剥身 > mukimi\ ;
+水準 > suijun\ ;
+水源 > suigen\ ;
+禁制 > kinsei\ ;
+送風 > soufuu\ ;
+遺言 > yuigon\ ;
+息子 > musuko\ ;
+恩寵 > onchou\ ;
+遅遅 > chichi\ ;
+悪名 > akumei\ ;
+蔵本 > zouhon\ ;
+厳旨 > genshi\ ;
+原案 > gen''an\ ;
+重患 > juukan\ ;
+反抗 > hankou\ ;
+祖国 > sokoku\ ;
+廃車 > haisha\ ;
+蔵書 > zousho\ ;
+悪友 > akuyuu\ ;
+酔漢 > suikan\ ;
+重恩 > chouon\ ;
+年頭 > nentou\ ;
+河床 > kashou\ ;
+洗剤 > senzai\ ;
+幽霊 > yuurei\ ;
+祭司 > saishi\ ;
+勘考 > kankou\ ;
+恒常 > koujou\ ;
+悲劇 > higeki\ ;
+座金 > zagane\ ;
+禅僧 > zensou\ ;
+口径 > koukei\ ;
+双手 > morote\ ;
+石膏 > sekkou\ ;
+短艇 > tantei\ ;
+水涯 > suigai\ ;
+反戦 > hansen\ ;
+刎頸 > funkei\ ;
+度量 > doryou\ ;
+蒼生 > sousei\ ;
+分館 > bunkan\ ;
+分餐 > bunsan\ ;
+遊軍 > yuugun\ ;
+原板 > genpan\ ;
+郵税 > yuuzei\ ;
+野心 > yashin\ ;
+勃興 > bokkou\ ;
+化石 > kaseki\ ;
+社外 > shagai\ ;
+怯懦 > kyouda\ ;
+口弁 > kouben\ ;
+古廟 > kobyou\ ;
+当籤 > tousen\ ;
+広間 > hiroma\ ;
+原本 > genpon\ ;
+水洗 > suisen\ ;
+氷河 > hyouga\ ;
+醸成 > jousei\ ;
+参拝 > sanpai\ ;
+平面 > heimen\ ;
+平静 > heisei\ ;
+同姓 > dousei\ ;
+藉口 > shakou\ ;
+原書 > gensho\ ;
+含嗽 > gansou\ ;
+水泡 > suihou\ ;
+吻合 > fungou\ ;
+郷社 > gousha\ ;
+送電 > souden\ ;
+分類 > bunrui\ ;
+治山 > chisan\ ;
+後生 > goshou\ ;
+恰好 > kakkou\ ;
+加薬 > kayaku\ ;
+快楽 > keraku\ ;
+反感 > hankan\ ;
+同好 > doukou\ ;
+薬園 > yakuen\ ;
+藩侯 > hankou\ ;
+息女 > sokujo\ ;
+法外 > hougai\ ;
+鉄傘 > tessan\ ;
+江村 > kouson\ ;
+念校 > nenkou\ ;
+単漢 > tankan\ ;
+磁束 > jisoku\ ;
+名大 > meidai\ ;
+幽閑 > yuukan\ ;
+幽閉 > yuuhei\ ;
+忍法 > ninpou\ ;
+幽門 > yuumon\ ;
+参戦 > sansen\ ;
+同大 > doudai\ ;
+勲等 > kuntou\ ;
+役目 > yakume\ ;
+情人 > jounin\ ;
+著者 > chosha\ ;
+瞥見 > bekken\ ;
+名声 > meisei\ ;
+情交 > joukou\ ;
+古巣 > furusu\ ;
+名士 > meishi\ ;
+遵行 > junkou\ ;
+退陣 > taijin\ ;
+剣豪 > kengou\ ;
+水気 > mizuke\ ;
+同士 > doushi\ ;
+年限 > nengen\ ;
+友情 > yuujou\ ;
+沢庵 > takuan\ ;
+過賞 > kashou\ ;
+毒矢 > dokuya\ ;
+厳探 > gentan\ ;
+合奏 > gassou\ ;
+悲傷 > hishou\ ;
+金工 > kinkou\ ;
+毛皮 > kegawa\ ;
+南溟 > nanmei\ ;
+葉腋 > youeki\ ;
+前軍 > zengun\ ;
+勇者 > yuusha\ ;
+前車 > zensha\ ;
+水母 > kurage\ ;
+目鼻 > mehana\ ;
+都督 > totoku\ ;
+南満 > nanman\ ;
+悪党 > akutou\ ;
+史官 > shikan\ ;
+運賃 > unchin\ ;
+性感 > seikan\ ;
+水死 > suishi\ ;
+原文 > genbun\ ;
+遊資 > yuushi\ ;
+麦価 > bakuka\ ;
+重工 > juukou\ ;
+知能 > chinou\ ;
+創見 > souken\ ;
+祭典 > saiten\ ;
+動線 > dousen\ ;
+念書 > nensho\ ;
+年間 > nenkan\ ;
+必治 > hitchi\ ;
+禁令 > kinrei\ ;
+歯茎 > haguki\ ;
+性情 > seijou\ ;
+悪僧 > akusou\ ;
+従犯 > juuhan\ ;
+神化 > shinka\ ;
+藩主 > hanshu\ ;
+占法 > senpou\ ;
+知育 > chiiku\ ;
+社団 > shadan\ ;
+効能 > kounou\ ;
+分際 > bunzai\ ;
+遁走 > tonsou\ ;
+萵苣 > chisha\ ;
+吉報 > kippou\ ;
+分隊 > buntai\ ;
+反影 > han''ei\ ;
+怠慢 > taiman\ ;
+破目 > wareme\ ;
+造酒 > zoushu\ ;
+創製 > sousei\ ;
+分院 > bun''in\ ;
+神助 > shinjo\ ;
+分限 > bungen\ ;
+南海 > nankai\ ;
+同型 > doukei\ ;
+思慮 > shiryo\ ;
+決戦 > kessen\ ;
+連邦 > renpou\ ;
+凱風 > gaifuu\ ;
+怨念 > on''nen\ ;
+化生 > keshou\ ;
+金山 > kinzan\ ;
+知者 > chisha\ ;
+否否 > iyaiya\ ;
+厳戒 > genkai\ ;
+凶音 > kyouin\ ;
+心気 > shinki\ ;
+悟入 > gonyuu\ ;
+同地 > douchi\ ;
+硝煙 > shouen\ ;
+配水 > haisui\ ;
+逸足 > issoku\ ;
+思想 > shisou\ ;
+砥石 > toishi\ ;
+切開 > sekkai\ ;
+年鑑 > nenkan\ ;
+必死 > hisshi\ ;
+古家 > furuie\ ;
+当社 > tousha\ ;
+落胤 > rakuin\ ;
+薬味 > yakumi\ ;
+水槽 > suisou\ ;
+郎等 > roudou\ ;
+重層 > juusou\ ;
+前賢 > zenken\ ;
+眼鏡 > megane\ ;
+真面 > matomo\ ;
+悪例 > akurei\ ;
+口宣 > kousen\ ;
+矢羽 > yabane\ ;
+真青 > massao\ ;
+半減 > hangen\ ;
+気流 > kiryuu\ ;
+進路 > shinro\ ;
+古学 > kogaku\ ;
+号外 > gougai\ ;
+蒼然 > souzen\ ;
+欠講 > kekkou\ ;
+蕩尽 > toujin\ ;
+反帝 > hantei\ ;
+死者 > shisha\ ;
+快晴 > kaisei\ ;
+達観 > takkan\ ;
+出際 > degiwa\ ;
+収差 > shuusa\ ;
+形相 > keisou\ ;
+決意 > ketsui\ ;
+底辺 > teihen\ ;
+道観 > doukan\ ;
+君命 > kunmei\ ;
+達見 > takken\ ;
+野宿 > nojuku\ ;
+遊説 > yuuzei\ ;
+短編 > tanpen\ ;
+剪裁 > sensai\ ;
+葛粉 > kuzuko\ ;
+悪令 > akurei\ ;
+通過 > tsuuka\ ;
+思念 > shinen\ ;
+通運 > tsuuun\ ;
+薄塩 > usujio\ ;
+真際 > magiwa\ ;
+各回 > kakkai\ ;
+悪人 > akunin\ ;
+死罪 > shizai\ ;
+連載 > rensai\ ;
+祝儀 > shuugi\ ;
+水棲 > suisei\ ;
+武臣 > bushin\ ;
+別邸 > bettei\ ;
+快方 > kaihou\ ;
+波及 > hakyuu\ ;
+這這 > houhou\ ;
+原拠 > genkyo\ ;
+薨去 > koukyo\ ;
+弩級 > dokyuu\ ;
+毛玉 > kedama\ ;
+麗人 > reijin\ ;
+里子 > satogo\ ;
+社命 > shamei\ ;
+心機 > shinki\ ;
+歯肉 > haniku\ ;
+荷鞍 > nigura\ ;
+石粉 > ishiko\ ;
+悩乱 > nouran\ ;
+民法 > minpou\ ;
+酸敗 > sanpai\ ;
+厄日 > yakubi\ ;
+呈上 > teijou\ ;
+南欧 > nan''ou\ ;
+金婚 > kinkon\ ;
+遊覧 > yuuran\ ;
+清々 > seisei\ ;
+廻船 > kaisen\ ;
+匍球 > hokyuu\ ;
+遮蔽 > shahei\ ;
+社名 > shamei\ ;
+薬効 > yakkou\ ;
+葬祭 > sousai\ ;
+思弁 > shiben\ ;
+別送 > bessou\ ;
+社史 > shashi\ ;
+祭主 > saishu\ ;
+洋上 > youjou\ ;
+水栓 > suisen\ ;
+華表 > kahyou\ ;
+名品 > meihin\ ;
+葬礼 > sourei\ ;
+逓送 > teisou\ ;
+社友 > shayuu\ ;
+郡県 > gunken\ ;
+重婚 > juukon\ ;
+弛緩 > chikan\ ;
+志望 > shibou\ ;
+送金 > soukin\ ;
+厚手 > atsude\ ;
+幕間 > makuai\ ;
+年金 > nenkin\ ;
+反射 > hansha\ ;
+反対 > hantai\ ;
+氷期 > hyouki\ ;
+悟了 > goryou\ ;
+忿懣 > funman\ ;
+法号 > hougou\ ;
+劣者 > ressha\ ;
+死線 > shisen\ ;
+双射 > sousha\ ;
+名吟 > meigin\ ;
+双対 > soutai\ ;
+名君 > meikun\ ;
+目高 > medaka\ ;
+返電 > henden\ ;
+幽邃 > yuusui\ ;
+鈍刀 > dontou\ ;
+破獄 > hagoku\ ;
+口外 > kougai\ ;
+油圧 > yuatsu\ ;
+凌駕 > ryouga\ ;
+同名 > doumei\ ;
+短篇 > tanpen\ ;
+卯月 > udzuki\ ;
+水木 > mizuki\ ;
+半死 > hanshi\ ;
+砂礫 > sareki\ ;
+次表 > jihyou\ ;
+怒張 > dochou\ ;
+各員 > kakuin\ ;
+年配 > nenpai\ ;
+前言 > zengen\ ;
+硬水 > kousui\ ;
+神代 > jindai\ ;
+遊行 > yuukou\ ;
+古墨 > koboku\ ;
+台地 > daichi\ ;
+分銅 > fundou\ ;
+逸話 > itsuwa\ ;
+草魚 > sougyo\ ;
+即時 > sokuji\ ;
+水曜 > suiyou\ ;
+重奏 > juusou\ ;
+弁者 > bensha\ ;
+通路 > tsuuro\ ;
+蓮根 > renkon\ ;
+庭訓 > teikin\ ;
+双子 > futago\ ;
+合同 > goudou\ ;
+重大 > juudai\ ;
+近隣 > kinrin\ ;
+神事 > shinji\ ;
+凍餒 > toudai\ ;
+重変 > juuhen\ ;
+毒牙 > dokuga\ ;
+忌服 > kifuku\ ;
+徒渉 > toshou\ ;
+功罪 > kouzai\ ;
+送還 > soukan\ ;
+荒馬 > arauma\ ;
+金塊 > kinkai\ ;
+快挙 > kaikyo\ ;
+分野 > bun''ya\ ;
+当番 > touban\ ;
+水星 > suisei\ ;
+厚情 > koujou\ ;
+酒杯 > shuhai\ ;
+水明 > suimei\ ;
+同勢 > douzei\ ;
+金堂 > kondou\ ;
+叮嚀 > teinei\ ;
+遂行 > suikou\ ;
+気楽 > kiraku\ ;
+蒼海 > soukai\ ;
+民権 > minken\ ;
+刃針 > habari\ ;
+当用 > touyou\ ;
+幇間 > houkan\ ;
+励精 > reisei\ ;
+参宮 > sanguu\ ;
+同労 > dourou\ ;
+金城 > kinjou\ ;
+別趣 > besshu\ ;
+前装 > zensou\ ;
+社内 > shanai\ ;
+分配 > bunpai\ ;
+法制 > housei\ ;
+遺脱 > idatsu\ ;
+瞽者 > kosha\ ;
+名前 > namae\ ;
+古址 > koshi\ ;
+帰順 > kijun\ ;
+座視 > zashi\ ;
+快打 > kaida\ ;
+送辞 > souji\ ;
+名利 > meiri\ ;
+眉間 > miken\ ;
+磁性 > jisei\ ;
+薬価 > yakka\ ;
+砲煙 > houen\ ;
+礼儀 > reigi\ ;
+法具 > hougu\ ;
+吏党 > ritou\ ;
+目顔 > megao\ ;
+碑文 > hibun\ ;
+連語 > rengo\ ;
+重囲 > choui\ ;
+沮喪 > sosou\ ;
+遺習 > ishuu\ ;
+選者 > senja\ ;
+歌聖 > kasei\ ;
+造語 > zougo\ ;
+砲火 > houka\ ;
+蒸気 > jouki\ ;
+怪奇 > kaiki\ ;
+連記 > renki\ ;
+重器 > juuki\ ;
+加糖 > katou\ ;
+恩典 > onten\ ;
+徒死 > toshi\ ;
+序論 > joron\ ;
+毅然 > kizen\ ;
+制覇 > seiha\ ;
+歎美 > tanbi\ ;
+退路 > tairo\ ;
+応手 > oushu\ ;
+速記 > sokki\ ;
+波乱 > haran\ ;
+応戦 > ousen\ ;
+連覇 > renpa\ ;
+怨声 > ensei\ ;
+油単 > yutan\ ;
+序詞 > joshi\ ;
+医業 > igyou\ ;
+序言 > jogen\ ;
+忘我 > bouga\ ;
+荷重 > kajuu\ ;
+区検 > kuken\ ;
+南斗 > nanto\ ;
+沽券 > koken\ ;
+半期 > hanki\ ;
+同価 > douka\ ;
+動画 > douga\ ;
+河南 > kanan\ ;
+薄刃 > usuba\ ;
+加算 > kasan\ ;
+年賦 > nenpu\ ;
+口味 > koumi\ ;
+迷路 > meiro\ ;
+油剤 > yuzai\ ;
+年賀 > nenga\ ;
+可動 > kadou\ ;
+年貢 > nengu\ ;
+御株 > okabu\ ;
+厨子 > zushi\ ;
+別記 > bekki\ ;
+古史 > koshi\ ;
+吏人 > rijin\ ;
+各個 > kakko\ ;
+邪知 > jachi\ ;
+古参 > kosan\ ;
+法事 > houji\ ;
+蕃夷 > ban''i\ ;
+重味 > omomi\ ;
+樹齢 > jurei\ ;
+千木 > chigi\ ;
+歯科 > shika\ ;
+恵与 > keiyo\ ;
+酸度 > sando\ ;
+励磁 > reiji\ ;
+剣舞 > kenbu\ ;
+法主 > hossu\ ;
+母港 > bokou\ ;
+野合 > yagou\ ;
+同事 > douji\ ;
+可分 > kabun\ ;
+野史 > yashi\ ;
+助祭 > josai\ ;
+半旗 > hanki\ ;
+各位 > kakui\ ;
+御札 > ofuda\ ;
+過般 > kahan\ ;
+分賦 > bunpu\ ;
+種々 > shuju\ ;
+忘恩 > bouon\ ;
+待機 > taiki\ ;
+恩人 > onjin\ ;
+年譜 > nenpu\ ;
+忌憚 > kitan\ ;
+運航 > unkou\ ;
+河内 > hanoi\ ;
+恨事 > konji\ ;
+性器 > seiki\ ;
+怒声 > dosei\ ;
+機首 > kishu\ ;
+列記 > rekki\ ;
+古制 > kosei\ ;
+反哺 > hanpo\ ;
+十日 > tooka\ ;
+御昼 > ohiru\ ;
+都民 > tomin\ ;
+看過 > kanka\ ;
+古刀 > kotou\ ;
+弥生 > yayoi\ ;
+送話 > souwa\ ;
+平語 > heigo\ ;
+毒気 > dokke\ ;
+矛盾 > mujun\ ;
+破水 > hasui\ ;
+金利 > kinri\ ;
+泉下 > senka\ ;
+返辞 > henji\ ;
+鵞毛 > gamou\ ;
+叙勲 > jokun\ ;
+沖合 > okiai\ ;
+鵝毛 > gamou\ ;
+古典 > koten\ ;
+鯨飲 > geiin\ ;
+重利 > juuri\ ;
+印影 > in''ei\ ;
+単打 > tanda\ ;
+御数 > okazu\ ;
+受動 > judou\ ;
+道義 > dougi\ ;
+後架 > kouka\ ;
+遠縁 > tooen\ ;
+分課 > bunka\ ;
+邦画 > houga\ ;
+野党 > yatou\ ;
+着衣 > yakui\ ;
+受刑 > jukei\ ;
+毎次 > maiji\ ;
+後期 > kouki\ ;
+蕩児 > touji\ ;
+油井 > yusei\ ;
+建碑 > kenpi\ ;
+冥闇 > meian\ ;
+布陣 > fujin\ ;
+荒野 > kouya\ ;
+治下 > chika\ ;
+辺鄙 > henpi\ ;
+酒徒 > shuto\ ;
+機雷 > kirai\ ;
+歌稿 > kakou\ ;
+弧状 > kojou\ ;
+遷移 > sen''i\ ;
+選科 > senka\ ;
+帰還 > kikan\ ;
+歯痛 > haita\ ;
+民戸 > minko\ ;
+加盟 > kamei\ ;
+菊花 > kikka\ ;
+古例 > korei\ ;
+台下 > daika\ ;
+刻苦 > kokku\ ;
+母権 > boken\ ;
+古体 > kotai\ ;
+往来 > ourai\ ;
+受像 > juzou\ ;
+句会 > kukai\ ;
+古伝 > koden\ ;
+応対 > outai\ ;
+危峰 > kihou\ ;
+殺気 > sakki\ ;
+助産 > josan\ ;
+常軌 > jouki\ ;
+帰農 > kinou\ ;
+古代 > kodai\ ;
+古今 > kokon\ ;
+古人 > kojin\ ;
+違約 > iyaku\ ;
+原図 > genzu\ ;
+十手 > jitte\ ;
+機関 > kikan\ ;
+民意 > min''i\ ;
+参加 > sanka\ ;
+冶金 > yakin\ ;
+石火 > sekka\ ;
+兵馬 > heiba\ ;
+御所 > gosho\ ;
+野人 > yajin\ ;
+弁疏 > benso\ ;
+原器 > genki\ ;
+造花 > zouka\ ;
+帝都 > teito\ ;
+英魂 > eikon\ ;
+里人 > rijin\ ;
+厭味 > iyami\ ;
+危害 > kigai\ ;
+店舗 > tenpo\ ;
+配布 > haifu\ ;
+段歩 > tanbu\ ;
+単座 > tanza\ ;
+叙任 > jonin\ ;
+欧米 > oubei\ ;
+弧灯 > kotou\ ;
+怒号 > dogou\ ;
+永存 > eizon\ ;
+工面 > kumen\ ;
+内需 > naiju\ ;
+受任 > junin\ ;
+母校 > bokou\ ;
+後援 > kouen\ ;
+県議 > kengi\ ;
+勤求 > gongu\ ;
+看護 > kango\ ;
+円陣 > enjin\ ;
+酸基 > sanki\ ;
+確固 > kakko\ ;
+帰趨 > kisuu\ ;
+帰趣 > kishu\ ;
+当機 > touki\ ;
+弁理 > benri\ ;
+母材 > bozai\ ;
+徒手 > toshu\ ;
+盛運 > seiun\ ;
+歯牙 > shiga\ ;
+民度 > mindo\ ;
+運算 > unzan\ ;
+応変 > ouhen\ ;
+酒家 > shuka\ ;
+弥漫 > biman\ ;
+酒宴 > shuen\ ;
+鮟鱇 > ankou\ ;
+轟音 > gouon\ ;
+御念 > gonen\ ;
+得意 > tokui\ ;
+機鋒 > kihou\ ;
+典雅 > tenga\ ;
+双互 > sougo\ ;
+勘気 > kanki\ ;
+毎時 > maiji\ ;
+辞退 > jitai\ ;
+原句 > genku\ ;
+遺留 > iryuu\ ;
+機銃 > kijuu\ ;
+都政 > tosei\ ;
+動気 > douki\ ;
+応報 > ouhou\ ;
+幼芽 > youga\ ;
+硬度 > koudo\ ;
+復帰 > fukki\ ;
+欺瞞 > giman\ ;
+遠矢 > tooya\ ;
+過程 > katei\ ;
+水夫 > suifu\ ;
+母斑 > bohan\ ;
+怜俐 > reiri\ ;
+市部 > shibu\ ;
+劫火 > gouka\ ;
+冥途 > meido\ ;
+参事 > sanji\ ;
+御幣 > gohei\ ;
+弾機 > danki\ ;
+遠眼 > engan\ ;
+破摧 > hasai\ ;
+近衛 > konoe\ ;
+短波 > tanpa\ ;
+遠目 > toome\ ;
+醇化 > junka\ ;
+判者 > hanja\ ;
+破損 > hason\ ;
+道破 > douha\ ;
+英霊 > eirei\ ;
+勇気 > yuuki\ ;
+当期 > touki\ ;
+動機 > douki\ ;
+気孔 > kikou\ ;
+加点 > katen\ ;
+酸味 > sanmi\ ;
+冠辞 > kanji\ ;
+英雄 > eiyuu\ ;
+快味 > kaimi\ ;
+危地 > kichi\ ;
+平臥 > heiga\ ;
+厚利 > kouri\ ;
+徒弟 > totei\ ;
+短気 > tanki\ ;
+民家 > minka\ ;
+化成 > kasei\ ;
+差金 > sakin\ ;
+横隊 > outai\ ;
+部数 > busuu\ ;
+広義 > kougi\ ;
+勇武 > yuubu\ ;
+先駆 > senku\ ;
+邪法 > jahou\ ;
+半季 > hanki\ ;
+忌垣 > igaki\ ;
+当時 > touji\ ;
+前科 > zenka\ ;
+氏子 > ujiko\ ;
+差配 > sahai\ ;
+短歌 > tanka\ ;
+監護 > kango\ ;
+内野 > naiya\ ;
+相補 > souho\ ;
+弦歌 > genka\ ;
+千家 > senke\ ;
+苦難 > kunan\ ;
+弘法 > guhou\ ;
+厭人 > enjin\ ;
+酸化 > sanka\ ;
+機転 > kiten\ ;
+破戒 > hakai\ ;
+毀損 > kison\ ;
+十字 > juuji\ ;
+差遣 > saken\ ;
+御宴 > gyoen\ ;
+勘査 > kansa\ ;
+矮樹 > waiju\ ;
+白雨 > hakuu\ ;
+厭世 > ensei\ ;
+御宅 > otaku\ ;
+内部 > naibu\ ;
+原価 > genka\ ;
+冷語 > reigo\ ;
+座禅 > zazen\ ;
+荷葉 > kayou\ ;
+苦闘 > kutou\ ;
+辞譲 > jijou\ ;
+医学 > igaku\ ;
+加減 > kagen\ ;
+座礼 > zarei\ ;
+酒器 > shuki\ ;
+左遷 > sasen\ ;
+登院 > touin\ ;
+華甲 > kakou\ ;
+先非 > senpi\ ;
+運痴 > unchi\ ;
+市費 > shihi\ ;
+往年 > ounen\ ;
+府税 > fuzei\ ;
+研摩 > kenma\ ;
+巡邏 > junra\ ;
+剣璽 > kenji\ ;
+免除 > menjo\ ;
+花魁 > oiran\ ;
+延滞 > entai\ ;
+左辺 > sahen\ ;
+微塵 > mijin\ ;
+部所 > busho\ ;
+匹婦 > hippu\ ;
+光陰 > kouin\ ;
+次男 > jinan\ ;
+加法 > kahou\ ;
+後尾 > koubi\ ;
+円転 > enten\ ;
+道理 > douri\ ;
+歳次 > saiji\ ;
+冗費 > jouhi\ ;
+別箇 > bekko\ ;
+茶話 > chawa\ ;
+母性 > bosei\ ;
+遅疑 > chigi\ ;
+気圏 > kiken\ ;
+巨躯 > kyoku\ ;
+市議 > shigi\ ;
+気団 > kidan\ ;
+応分 > oubun\ ;
+御大 > ontai\ ;
+加水 > kasui\ ;
+化工 > kakou\ ;
+毛布 > moufu\ ;
+再起 > saiki\ ;
+永劫 > eigou\ ;
+気嚢 > kinou\ ;
+水化 > suika\ ;
+途端 > totan\ ;
+都度 > tsudo\ ;
+母形 > bokei\ ;
+正気 > seiki\ ;
+匹夫 > hippu\ ;
+平素 > heiso\ ;
+花香 > kakou\ ;
+勿怪 > mokke\ ;
+写譜 > shafu\ ;
+確乎 > kakko\ ;
+短期 > tanki\ ;
+正比 > seihi\ ;
+彼岸 > higan\ ;
+印判 > inpan\ ;
+都市 > toshi\ ;
+毎度 > maido\ ;
+全都 > zento\ ;
+印刀 > intou\ ;
+全部 > zenbu\ ;
+水利 > suiri\ ;
+連破 > renpa\ ;
+彩度 > saido\ ;
+形影 > keiei\ ;
+別科 > bekka\ ;
+遠火 > toobi\ ;
+葉末 > hazue\ ;
+効果 > kouka\ ;
+快事 > kaiji\ ;
+府県 > fuken\ ;
+冗語 > jougo\ ;
+区域 > kuiki\ ;
+勾引 > kouin\ ;
+巨費 > kyohi\ ;
+御坊 > gobou\ ;
+矢来 > yarai\ ;
+化導 > kedou\ ;
+英邁 > eimai\ ;
+後妻 > gosai\ ;
+比島 > hitou\ ;
+単句 > tanku\ ;
+気品 > kihin\ ;
+再議 > saigi\ ;
+工費 > kouhi\ ;
+勝手 > katte\ ;
+死期 > shiki\ ;
+眼窩 > ganka\ ;
+布袋 > hotei\ ;
+艶麗 > enrei\ ;
+優雅 > yuuga\ ;
+毛孔 > keana\ ;
+破屋 > haoku\ ;
+勤惰 > kinda\ ;
+内議 > naigi\ ;
+轗軻 > kanka\ ;
+歔欷 > kyoki\ ;
+輸銀 > yugin\ ;
+全躯 > zenku\ ;
+平穏 > heion\ ;
+即位 > sokui\ ;
+帰艦 > kikan\ ;
+序盤 > joban\ ;
+近習 > kinju\ ;
+模造 > mozou\ ;
+母屋 > omoya\ ;
+魑魅 > chimi\ ;
+永住 > eijuu\ ;
+眼科 > ganka\ ;
+目茶 > mecha\ ;
+公路 > kouro\ ;
+切符 > kippu\ ;
+帰航 > kikou\ ;
+横転 > outen\ ;
+年租 > nenso\ ;
+軍鼓 > gunko\ ;
+半可 > hanka\ ;
+半句 > hanku\ ;
+選歌 > senka\ ;
+単利 > tanri\ ;
+徳化 > tokka\ ;
+利益 > rieki\ ;
+次点 > jiten\ ;
+当座 > touza\ ;
+従因 > juuin\ ;
+永代 > eitai\ ;
+気勢 > kisei\ ;
+歯朶 > shida\ ;
+歳暮 > seibo\ ;
+母家 > omoya\ ;
+彼奴 > aitsu\ ;
+気功 > kikou\ ;
+復古 > fukko\ ;
+目色 > meiro\ ;
+凄艶 > seien\ ;
+母子 > boshi\ ;
+遠海 > enkai\ ;
+気前 > kimae\ ;
+千古 > senko\ ;
+冷菓 > reika\ ;
+引数 > insuu\ ;
+匪団 > hidan\ ;
+配備 > haibi\ ;
+微動 > bidou\ ;
+永世 > eisei\ ;
+段差 > dansa\ ;
+役夫 > ekifu\ ;
+気分 > kibun\ ;
+酒保 > shuho\ ;
+公費 > kouhi\ ;
+強意 > kyoui\ ;
+内規 > naiki\ ;
+遠泳 > en''ei\ ;
+草花 > souka\ ;
+分科 > bunka\ ;
+酔余 > suiyo\ ;
+動悸 > douki\ ;
+蒲団 > futon\ ;
+御台 > midai\ ;
+軍鶏 > shamo\ ;
+連理 > renri\ ;
+邪推 > jasui\ ;
+民利 > minri\ ;
+遺業 > igyou\ ;
+運漕 > unsou\ ;
+硬化 > kouka\ ;
+連珠 > renju\ ;
+利用 > riyou\ ;
+微分 > bibun\ ;
+短打 > tanda\ ;
+午前 > gozen\ ;
+英資 > eishi\ ;
+内裏 > dairi\ ;
+輸送 > yusou\ ;
+先途 > sendo\ ;
+兵語 > heigo\ ;
+助攻 > jokou\ ;
+殿宇 > den''u\ ;
+芟除 > sanjo\ ;
+切磋 > sessa\ ;
+民具 > mingu\ ;
+公議 > kougi\ ;
+鵄尾 > shibi\ ;
+医博 > ihaku\ ;
+茶菓 > chaka\ ;
+微光 > bikou\ ;
+単価 > tanka\ ;
+配付 > haifu\ ;
+歩数 > hosuu\ ;
+破壊 > hakai\ ;
+毎夜 > maiyo\ ;
+武断 > budan\ ;
+単位 > tan''i\ ;
+光輝 > kouki\ ;
+気候 > kikou\ ;
+兼補 > kenpo\ ;
+加数 > kasuu\ ;
+御前 > gozen\ ;
+公課 > kouka\ ;
+当家 > touke\ ;
+強引 > gouin\ ;
+徒名 > adana\ ;
+御凸 > odeko\ ;
+当字 > ateji\ ;
+配下 > haika\ ;
+公訴 > kouso\ ;
+平癒 > heiyu\ ;
+発起 > hokki\ ;
+選果 > senka\ ;
+気体 > kitai\ ;
+邪慳 > jaken\ ;
+区分 > kubun\ ;
+華氏 > kashi\ ;
+避暑 > hisho\ ;
+遊泳 > yuuei\ ;
+区処 > kusho\ ;
+母堂 > bodou\ ;
+御免 > gomen\ ;
+御先 > osaki\ ;
+冬至 > touji\ ;
+茶舗 > chaho\ ;
+英詩 > eishi\ ;
+勇往 > yuuou\ ;
+弓手 > yunde\ ;
+半価 > hanka\ ;
+南下 > nanka\ ;
+区内 > kunai\ ;
+色香 > iroka\ ;
+徒労 > torou\ ;
+母型 > bokei\ ;
+道歌 > douka\ ;
+党議 > tougi\ ;
+邪悪 > jaaku\ ;
+年甫 > nenpo\ ;
+部外 > bugai\ ;
+歌書 > kasho\ ;
+剛気 > gouki\ ;
+弧形 > kokei\ ;
+勢家 > seika\ ;
+劃期 > kakki\ ;
+砂岩 > sagan\ ;
+邪恋 > jaren\ ;
+帰納 > kinou\ ;
+弔慰 > choui\ ;
+気丈 > kijou\ ;
+剛毅 > gouki\ ;
+復位 > fukui\ ;
+徒刑 > tokei\ ;
+目線 > mesen\ ;
+萌木 > moegi\ ;
+冷罵 > reiba\ ;
+民事 > minji\ ;
+矩形 > kukei\ ;
+遺族 > izoku\ ;
+毛唐 > ketou\ ;
+全裸 > zenra\ ;
+邪念 > janen\ ;
+助成 > josei\ ;
+軍馬 > gunba\ ;
+弔意 > choui\ ;
+創案 > souan\ ;
+模試 > moshi\ ;
+遊歩 > yuuho\ ;
+凹眼 > ougan\ ;
+当夜 > touya\ ;
+車馬 > shaba\ ;
+加担 > katan\ ;
+鴨居 > kamoi\ ;
+御供 > otomo\ ;
+徒党 > totou\ ;
+円蓋 > engai\ ;
+千代 > chiyo\ ;
+兄貴 > aniki\ ;
+苦言 > kugen\ ;
+御伽 > otogi\ ;
+化合 > kagou\ ;
+利点 > riten\ ;
+鬼面 > kimen\ ;
+輿論 > yoron\ ;
+党規 > touki\ ;
+十五 > juugo\ ;
+死後 > shigo\ ;
+十二 > juuni\ ;
+横行 > oukou\ ;
+医伯 > ihaku\ ;
+御仁 > gojin\ ;
+後光 > gokou\ ;
+千世 > chiyo\ ;
+先議 > sengi\ ;
+区会 > kukai\ ;
+遠来 > enrai\ ;
+鴟尾 > shibi\ ;
+登記 > touki\ ;
+前歯 > maeba\ ;
+遠望 > enbou\ ;
+出番 > deban\ ;
+知己 > chiki\ ;
+励弧 > reiko\ ;
+後備 > koubi\ ;
+看破 > kanpa\ ;
+御上 > okami\ ;
+免訴 > menso\ ;
+役務 > ekimu\ ;
+機能 > kinou\ ;
+蒙古 > mouko\ ;
+冠者 > kanja\ ;
+廃棄 > haiki\ ;
+利潤 > rijun\ ;
+僧院 > souin\ ;
+軍靴 > gunka\ ;
+冤罪 > enzai\ ;
+遠景 > enkei\ ;
+内苑 > naien\ ;
+廃案 > haian\ ;
+母后 > bokou\ ;
+軍需 > gunju\ ;
+布置 > fuchi\ ;
+鬼門 > kimon\ ;
+儒道 > judou\ ;
+遠方 > enpou\ ;
+従事 > juuji\ ;
+債鬼 > saiki\ ;
+左舷 > sagen\ ;
+允許 > inkyo\ ;
+帰社 > kisha\ ;
+劣弧 > rekko\ ;
+部品 > buhin\ ;
+砂塵 > sajin\ ;
+剛果 > gouka\ ;
+初演 > shoen\ ;
+歩廊 > horou\ ;
+歌手 > kashu\ ;
+後事 > kouji\ ;
+勇婦 > yuufu\ ;
+歪度 > waido\ ;
+平炉 > heiro\ ;
+農科 > nouka\ ;
+次条 > jijou\ ;
+武弁 > buben\ ;
+軌間 > kikan\ ;
+都内 > tonai\ ;
+弟子 > deshi\ ;
+左脳 > sanou\ ;
+延性 > ensei\ ;
+邦家 > houka\ ;
+加年 > kanen\ ;
+近畿 > kinki\ ;
+弁座 > benza\ ;
+別派 > beppa\ ;
+正座 > seiza\ ;
+引導 > indou\ ;
+連歌 > renga\ ;
+魔道 > madou\ ;
+影像 > eizou\ ;
+巫者 > fusha\ ;
+邦字 > houji\ ;
+凹版 > ouban\ ;
+内耳 > naiji\ ;
+加工 > kakou\ ;
+勇夫 > yuufu\ ;
+欧文 > oubun\ ;
+当否 > touhi\ ;
+利水 > risui\ ;
+造次 > zouji\ ;
+六花 > rikka\ ;
+処理 > shori\ ;
+延引 > en''in\ ;
+睿智 > eichi\ ;
+八苦 > hakku\ ;
+比倫 > hirin\ ;
+帰省 > kisei\ ;
+過敏 > kabin\ ;
+序歯 > joshi\ ;
+延延 > en''en\ ;
+動因 > douin\ ;
+弊履 > heiri\ ;
+遺徳 > itoku\ ;
+破倫 > harin\ ;
+北京 > pekin\ ;
+砂嘴 > sashi\ ;
+前期 > zenki\ ;
+次数 > jisuu\ ;
+造機 > zouki\ ;
+比例 > hirei\ ;
+部分 > bubun\ ;
+平温 > heion\ ;
+再縁 > saien\ ;
+目眩 > memai\ ;
+樹脂 > jushi\ ;
+残基 > zanki\ ;
+逸書 > issho\ ;
+都会 > tokai\ ;
+欽慕 > kinbo\ ;
+部内 > bunai\ ;
+六腑 > roppu\ ;
+逓次 > teiji\ ;
+都人 > tojin\ ;
+運搬 > unpan\ ;
+前日 > maebi\ ;
+母体 > botai\ ;
+利権 > riken\ ;
+内縁 > naien\ ;
+遷座 > senza\ ;
+加害 > kagai\ ;
+遠慮 > enryo\ ;
+勧化 > kange\ ;
+勇図 > yuuto\ ;
+菩提 > bodai\ ;
+僧都 > souzu\ ;
+武官 > bukan\ ;
+初歩 > shoho\ ;
+石器 > sekki\ ;
+退治 > taiji\ ;
+動員 > douin\ ;
+菲才 > hisai\ ;
+勤務 > kinmu\ ;
+弥四 > yashi\ ;
+正字 > seiji\ ;
+巨細 > kosai\ ;
+運指 > unshi\ ;
+鳥居 > torii\ ;
+平気 > heiki\ ;
+連架 > renka\ ;
+分派 > bunpa\ ;
+軍部 > gunbu\ ;
+公義 > kougi\ ;
+出湯 > ideyu\ ;
+機種 > kishu\ ;
+度数 > dosuu\ ;
+遊技 > yuugi\ ;
+退歩 > taiho\ ;
+皇胤 > kouin\ ;
+邦土 > houdo\ ;
+避寒 > hikan\ ;
+部会 > bukai\ ;
+利根 > rikon\ ;
+崎陽 > kiyou\ ;
+年次 > nenji\ ;
+遊戯 > yuugi\ ;
+遠征 > ensei\ ;
+差等 > satou\ ;
+軌道 > kidou\ ;
+遺尿 > inyou\ ;
+死因 > shiin\ ;
+勲位 > kun''i\ ;
+葬具 > sougu\ ;
+円筒 > entou\ ;
+分母 > bunbo\ ;
+茶目 > chame\ ;
+店是 > tenze\ ;
+募兵 > bohei\ ;
+殿下 > denka\ ;
+欝憤 > uppun\ ;
+葬儀 > sougi\ ;
+違心 > ishin\ ;
+弱化 > jakka\ ;
+加増 > kazou\ ;
+遊惰 > yuuda\ ;
+募債 > bosai\ ;
+短句 > tanku\ ;
+当事 > touji\ ;
+過怠 > katai\ ;
+出汁 > dashi\ ;
+石化 > sekka\ ;
+監理 > kanri\ ;
+前戯 > zengi\ ;
+師父 > shifu\ ;
+正塩 > seien\ ;
+機知 > kichi\ ;
+庸愚 > yougu\ ;
+引喩 > in''yu\ ;
+帝王 > teiou\ ;
+避妊 > hinin\ ;
+内科 > naika\ ;
+逮捕 > taiho\ ;
+序文 > jobun\ ;
+過当 > katou\ ;
+軍路 > gunro\ ;
+序数 > josuu\ ;
+残務 > zanmu\ ;
+初期 > shoki\ ;
+遠島 > entou\ ;
+工科 > kouka\ ;
+身重 > miomo\ ;
+座所 > zasho\ ;
+内示 > naiji\ ;
+正坐 > seiza\ ;
+輪舞 > rinbu\ ;
+途方 > tohou\ ;
+儀装 > gisou\ ;
+幽暗 > yuuan\ ;
+英米 > eibei\ ;
+軍費 > gunpi\ ;
+魔街 > magai\ ;
+転訛 > tenka\ ;
+転記 > tenki\ ;
+凱歌 > gaika\ ;
+次年 > jinen\ ;
+遺墨 > iboku\ ;
+皇紀 > kouki\ ;
+遅延 > chien\ ;
+幼時 > youji\ ;
+盆画 > bonga\ ;
+刑期 > keiki\ ;
+年期 > nenki\ ;
+動作 > dousa\ ;
+出様 > deyou\ ;
+芸苑 > geien\ ;
+弧光 > kokou\ ;
+歌壇 > kadan\ ;
+兵科 > heika\ ;
+助命 > jomei\ ;
+高雅 > kouga\ ;
+常温 > jouon\ ;
+党紀 > touki\ ;
+前後 > zengo\ ;
+兵禍 > heika\ ;
+機甲 > kikou\ ;
+武問 > bumon\ ;
+労務 > roumu\ ;
+差益 > saeki\ ;
+連打 > renda\ ;
+優艶 > yuuen\ ;
+庶幾 > shoki\ ;
+花茎 > kakei\ ;
+砂上 > sajou\ ;
+軍議 > gungi\ ;
+転補 > tenpo\ ;
+平時 > heiji\ ;
+円盤 > enban\ ;
+偽電 > giden\ ;
+皮相 > hisou\ ;
+帰港 > kikou\ ;
+返歌 > henka\ ;
+前座 > zenza\ ;
+公租 > kouso\ ;
+痩躯 > souku\ ;
+分木 > bungi\ ;
+正員 > seiin\ ;
+内皮 > naihi\ ;
+道家 > douka\ ;
+模範 > mohan\ ;
+芽胞 > gahou\ ;
+刀架 > touka\ ;
+載荷 > saika\ ;
+皮癬 > hizen\ ;
+遊山 > yusan\ ;
+武名 > bumei\ ;
+全科 > zenka\ ;
+加号 > kagou\ ;
+芙蓉 > fuyou\ ;
+廃家 > haika\ ;
+公示 > kouji\ ;
+死児 > shiji\ ;
+正否 > seihi\ ;
+底意 > sokoi\ ;
+自首 > jishu\ ;
+軍記 > gunki\ ;
+荒淫 > kouin\ ;
+劣化 > rekka\ ;
+遠大 > endai\ ;
+別戸 > bekko\ ;
+歓喜 > kanki\ ;
+具眼 > gugan\ ;
+次官 > jikan\ ;
+眩暈 > memai\ ;
+軍規 > gunki\ ;
+次子 > jishi\ ;
+武勲 > bukun\ ;
+延命 > enmei\ ;
+加勢 > kasei\ ;
+元素 > genso\ ;
+武勇 > buyuu\ ;
+武功 > bukou\ ;
+廷吏 > teiri\ ;
+円環 > enkan\ ;
+岩魚 > iwana\ ;
+初手 > shote\ ;
+皇祖 > kouso\ ;
+優美 > yuubi\ ;
+儒良 > jugon\ ;
+儒艮 > jugon\ ;
+児童 > jidou\ ;
+歓呼 > kanko\ ;
+加判 > kahan\ ;
+功利 > kouri\ ;
+鳳凰 > houou\ ;
+知事 > chiji\ ;
+道央 > douou\ ;
+軍衣 > gun''i\ ;
+制度 > seido\ ;
+歩兵 > hohei\ ;
+英知 > eichi\ ;
+停音 > teion\ ;
+引例 > inrei\ ;
+痴話 > chiwa\ ;
+加冠 > kakan\ ;
+連座 > renza\ ;
+艤装 > gisou\ ;
+遠地 > enchi\ ;
+華壇 > kadan\ ;
+登科 > touka\ ;
+白禍 > hakka\ ;
+過大 > kadai\ ;
+苛税 > kazei\ ;
+遠因 > en''in\ ;
+遊女 > yuujo\ ;
+輝線 > kisen\ ;
+入相 > iriai\ ;
+免租 > menso\ ;
+芋茎 > zuiki\ ;
+菓子 > kashi\ ;
+干戈 > kanka\ ;
+疎開 > sokai\ ;
+前婦 > zenpu\ ;
+偏頗 > henpa\ ;
+遷化 > senge\ ;
+落下 > rakka\ ;
+具現 > gugen\ ;
+加俸 > kahou\ ;
+冷気 > reiki\ ;
+儒者 > jusha\ ;
+舗道 > hodou\ ;
+先祖 > senzo\ ;
+航路 > kouro\ ;
+発破 > happa\ ;
+畳韻 > jouin\ ;
+相棒 > aibou\ ;
+幽微 > yuubi\ ;
+芳紀 > houki\ ;
+廃園 > haien\ ;
+正価 > seika\ ;
+近時 > kinji\ ;
+魚肥 > gyohi\ ;
+躍起 > yakki\ ;
+高遠 > kouen\ ;
+前夫 > zenpu\ ;
+花紋 > kamon\ ;
+元祖 > ganso\ ;
+剰員 > jouin\ ;
+花糸 > kashi\ ;
+盗汗 > nease\ ;
+公理 > kouri\ ;
+武人 > bujin\ ;
+花粉 > kafun\ ;
+帰校 > kikou\ ;
+舞蹈 > butou\ ;
+幾度 > ikudo\ ;
+次回 > jikai\ ;
+年忌 > nenki\ ;
+舞踏 > butou\ ;
+鬱蒼 > ussou\ ;
+舞踊 > buyou\ ;
+内炎 > naien\ ;
+輪禍 > rinka\ ;
+刑徒 > keito\ ;
+年後 > nengo\ ;
+連子 > renji\ ;
+相板 > aiban\ ;
+前場 > zenba\ ;
+田麩 > denbu\ ;
+凹所 > ousho\ ;
+偽造 > gizou\ ;
+帰来 > kirai\ ;
+苦界 > kugai\ ;
+再演 > saien\ ;
+帰村 > kison\ ;
+常時 > jouji\ ;
+延会 > enkai\ ;
+欣喜 > kinki\ ;
+還付 > kanpu\ ;
+運営 > un''ei\ ;
+菜園 > saien\ ;
+年度 > nendo\ ;
+逮夜 > taiya\ ;
+退座 > taiza\ ;
+利害 > rigai\ ;
+艱苦 > kanku\ ;
+次善 > jizen\ ;
+利子 > rishi\ ;
+荷担 > katan\ ;
+別家 > bekke\ ;
+遺作 > isaku\ ;
+草案 > souan\ ;
+荒木 > araki\ ;
+岩間 > iwama\ ;
+庭園 > teien\ ;
+鯨波 > geiha\ ;
+年差 > nensa\ ;
+鯨油 > geiyu\ ;
+蹶起 > kekki\ ;
+円満 > enman\ ;
+花穂 > kasui\ ;
+農期 > nouki\ ;
+判子 > hanko\ ;
+華厳 > kegon\ ;
+遠出 > toode\ ;
+運命 > unmei\ ;
+兵火 > heika\ ;
+監査 > kansa\ ;
+華南 > kanan\ ;
+道化 > douke\ ;
+歌仙 > kasen\ ;
+転義 > tengi\ ;
+次号 > jigou\ ;
+歌人 > kajin\ ;
+高貴 > kouki\ ;
+過半 > kahan\ ;
+分布 > bunpu\ ;
+相撲 > sumou\ ;
+艶聞 > enbun\ ;
+序奏 > josou\ ;
+近所 > kinjo\ ;
+凡打 > bonda\ ;
+凹形 > oukei\ ;
+興起 > kouki\ ;
+舎費 > shahi\ ;
+過勤 > kakin\ ;
+通夜 > tsuya\ ;
+過労 > karou\ ;
+自邸 > jitei\ ;
+運勢 > unsei\ ;
+巨波 > kyoha\ ;
+運動 > undou\ ;
+辞柄 > jihei\ ;
+過剰 > kajou\ ;
+畝間 > unema\ ;
+自選 > jisen\ ;
+辞林 > jirin\ ;
+盛期 > seiki\ ;
+平家 > heike\ ;
+連坐 > renza\ ;
+逸品 > ippin\ ;
+道具 > dougu\ ;
+過分 > kabun\ ;
+平安 > heian\ ;
+年季 > nenki\ ;
+皆無 > kaimu\ ;
+凡愚 > bongu\ ;
+機構 > kikou\ ;
+分岐 > bunki\ ;
+前古 > zenko\ ;
+画餅 > gabei\ ;
+公演 > kouen\ ;
+辞書 > jisho\ ;
+造園 > zouen\ ;
+冬期 > touki\ ;
+高誼 > kougi\ ;
+剰余 > jouyo\ ;
+庶務 > shomu\ ;
+画風 > gafuu\ ;
+盛時 > seiji\ ;
+儀範 > gihan\ ;
+芳眉 > houbi\ ;
+初夜 > shoya\ ;
+傍見 > okami\ ;
+樹液 > jueki\ ;
+初夏 > shoka\ ;
+希望 > kibou\ ;
+巨歩 > kyoho\ ;
+幼女 > youjo\ ;
+画題 > gadai\ ;
+分家 > bunke\ ;
+希書 > kisho\ ;
+帰投 > kitou\ ;
+冤枉 > en''ou\ ;
+樹海 > jukai\ ;
+幾夜 > ikuyo\ ;
+幾多 > ikuta\ ;
+次兄 > jikei\ ;
+次元 > jigen\ ;
+迷子 > maigo\ ;
+自転 > jiten\ ;
+機械 > kikai\ ;
+座右 > zayuu\ ;
+幻夢 > genmu\ ;
+廉価 > renka\ ;
+先父 > senpu\ ;
+遡上 > sojou\ ;
+機根 > kikon\ ;
+偽誓 > gisei\ ;
+與論 > yoron\ ;
+造営 > zouei\ ;
+冥暗 > meian\ ;
+舗装 > hosou\ ;
+異郷 > ikyou\ ;
+画面 > gamen\ ;
+倍音 > baion\ ;
+棋風 > kifuu\ ;
+発火 > hakka\ ;
+偽計 > gikei\ ;
+相愛 > souai\ ;
+偽言 > gigen\ ;
+光焔 > kouen\ ;
+偶語 > guugo\ ;
+機材 > kizai\ ;
+次便 > jibin\ ;
+連呼 > renko\ ;
+左様 > sayou\ ;
+偶詠 > guuei\ ;
+魔神 > majin\ ;
+廊下 > rouka\ ;
+驟雨 > shuuu\ ;
+盲愛 > mouai\ ;
+花瓶 > kabin\ ;
+光炎 > kouen\ ;
+再案 > saian\ ;
+儀礼 > girei\ ;
+自賛 > jisan\ ;
+連句 > renku\ ;
+路頭 > rotou\ ;
+次会 > jikai\ ;
+迷夢 > meimu\ ;
+英法 > eihou\ ;
+自販 > jihan\ ;
+機智 > kichi\ ;
+苦渋 > kujuu\ ;
+偽装 > gisou\ ;
+相応 > souou\ ;
+次代 > jidai\ ;
+軍紀 > gunki\ ;
+尾鰭 > obire\ ;
+師恩 > shion\ ;
+公武 > koubu\ ;
+転移 > ten''i\ ;
+路面 > romen\ ;
+岡辺 > okabe\ ;
+偉蹟 > iseki\ ;
+転科 > tenka\ ;
+臀部 > denbu\ ;
+党派 > touha\ ;
+運上 > unjou\ ;
+業苦 > gouku\ ;
+層雲 > souun\ ;
+座像 > zazou\ ;
+帷幕 > ibaku\ ;
+造化 > zouka\ ;
+帷帳 > ichou\ ;
+自讃 > jisan\ ;
+利口 > rikou\ ;
+機敏 > kibin\ ;
+自警 > jikei\ ;
+偉跡 > iseki\ ;
+入歯 > ireba\ ;
+庶事 > shoji\ ;
+魔睡 > masui\ ;
+横死 > oushi\ ;
+軌範 > kihan\ ;
+円本 > enpon\ ;
+儒生 > jusei\ ;
+巡査 > junsa\ ;
+再映 > saiei\ ;
+庵主 > anshu\ ;
+自認 > jinin\ ;
+備荒 > bikou\ ;
+帰帆 > kihan\ ;
+花片 > kahen\ ;
+鬼神 > kijin\ ;
+膳部 > zenbu\ ;
+輸液 > yueki\ ;
+甘露 > kanro\ ;
+檀徒 > danto\ ;
+利刃 > rijin\ ;
+利刀 > ritou\ ;
+異象 > ishou\ ;
+茂林 > morin\ ;
+保養 > hoyou\ ;
+光波 > kouha\ ;
+距離 > kyori\ ;
+左方 > sahou\ ;
+座乗 > zajou\ ;
+草庵 > souan\ ;
+樹林 > jurin\ ;
+魔界 > makai\ ;
+平和 > heiwa\ ;
+省字 > seiji\ ;
+具有 > guyuu\ ;
+鰥寡 > kanka\ ;
+公案 > kouan\ ;
+自製 > jisei\ ;
+処女 > shojo\ ;
+帝座 > teiza\ ;
+刑吏 > keiri\ ;
+送受 > souju\ ;
+差損 > sason\ ;
+模様 > moyou\ ;
+機才 > kisai\ ;
+畳語 > jougo\ ;
+凡夫 > bonpu\ ;
+寿齢 > jurei\ ;
+元気 > genki\ ;
+刻下 > kokka\ ;
+退化 > taika\ ;
+准尉 > jun''i\ ;
+冶工 > yakou\ ;
+師家 > shika\ ;
+横柄 > ouhei\ ;
+典故 > tenko\ ;
+色目 > irome\ ;
+利便 > riben\ ;
+公暇 > kouka\ ;
+備考 > bikou\ ;
+別個 > bekko\ ;
+画道 > gadou\ ;
+路銀 > rogin\ ;
+幼児 > youji\ ;
+農家 > nouka\ ;
+草履 > zouri\ ;
+保険 > hoken\ ;
+年利 > nenri\ ;
+英書 > eisho\ ;
+六日 > muika\ ;
+分区 > bunku\ ;
+八日 > youka\ ;
+分化 > bunka\ ;
+公方 > kubou\ ;
+横暴 > oubou\ ;
+冥府 > meifu\ ;
+刑具 > keigu\ ;
+巧技 > kougi\ ;
+苦杯 > kuhai\ ;
+英明 > eimei\ ;
+檀家 > danka\ ;
+模本 > mohon\ ;
+入日 > irihi\ ;
+自薦 > jisen\ ;
+尾長 > onaga\ ;
+農婦 > noufu\ ;
+小鬢 > kobin\ ;
+棋道 > kidou\ ;
+判事 > hanji\ ;
+分利 > bunri\ ;
+英断 > eidan\ ;
+傅育 > fuiku\ ;
+横断 > oudan\ ;
+英文 > eibun\ ;
+凡器 > bonki\ ;
+英数 > eisuu\ ;
+横文 > oubun\ ;
+冴寒 > gokan\ ;
+途上 > tojou\ ;
+山車 > dashi\ ;
+布巾 > fukin\ ;
+相場 > souba\ ;
+盛宴 > seien\ ;
+騒音 > souon\ ;
+皆既 > kaiki\ ;
+党是 > touze\ ;
+農奴 > noudo\ ;
+用途 > youto\ ;
+光栄 > kouei\ ;
+茶屋 > chaya\ ;
+芳気 > houki\ ;
+輿望 > yobou\ ;
+農夫 > noufu\ ;
+自著 > jicho\ ;
+児曹 > jisou\ ;
+出前 > demae\ ;
+平価 > heika\ ;
+小馬 > kouma\ ;
+機巧 > kikou\ ;
+刑余 > keiyo\ ;
+荷台 > nidai\ ;
+甘酢 > amazu\ ;
+冬季 > touki\ ;
+苗木 > naegi\ ;
+兵戈 > heika\ ;
+幹事 > kanji\ ;
+駻馬 > kanba\ ;
+画賛 > gasan\ ;
+白旗 > hakki\ ;
+送付 > soufu\ ;
+内応 > naiou\ ;
+凍土 > toudo\ ;
+帯地 > obiji\ ;
+再度 > saido\ ;
+辺土 > hendo\ ;
+尾錠 > bijou\ ;
+刑事 > keiji\ ;
+円弾 > endan\ ;
+目垢 > meaka\ ;
+眼下 > ganka\ ;
+再帰 > saiki\ ;
+冷夏 > reika\ ;
+近古 > kinko\ ;
+己巳 > kishi\ ;
+軽浮 > keifu\ ;
+荒土 > koudo\ ;
+苛斂 > karen\ ;
+転炉 > tenro\ ;
+全戸 > zenko\ ;
+苛政 > kasei\ ;
+画讚 > gasan\ ;
+画讃 > gasan\ ;
+農園 > nouen\ ;
+巻尾 > kanbi\ ;
+盛夏 > seika\ ;
+佳麗 > karei\ ;
+艶然 > enzen\ ;
+英才 > eisai\ ;
+腰部 > youbu\ ;
+軽油 > keiyu\ ;
+幇助 > houjo\ ;
+内帑 > naido\ ;
+画談 > gadan\ ;
+写字 > shaji\ ;
+供養 > kuyou\ ;
+倒語 > tougo\ ;
+発揮 > hakki\ ;
+鬼火 > onibi\ ;
+魚油 > gyoyu\ ;
+帝土 > teido\ ;
+機嫌 > kigen\ ;
+生起 > seiki\ ;
+花梨 > karin\ ;
+兌換 > dakan\ ;
+刀下 > touka\ ;
+魔法 > mahou\ ;
+苦戦 > kusen\ ;
+傷痍 > shoui\ ;
+候補 > kouho\ ;
+常務 > joumu\ ;
+帰参 > kisan\ ;
+左岸 > sagan\ ;
+円居 > madoi\ ;
+皮層 > hisou\ ;
+樹幹 > jukan\ ;
+苦慮 > kuryo\ ;
+馬齢 > barei\ ;
+余齢 > yorei\ ;
+軽機 > keiki\ ;
+痔瘻 > jirou\ ;
+巨富 > kyofu\ ;
+再嫁 > saika\ ;
+内宴 > naien\ ;
+自署 > jisho\ ;
+公庫 > kouko\ ;
+備砲 > bihou\ ;
+公序 > koujo\ ;
+苦情 > kujou\ ;
+茶園 > chaen\ ;
+苦悶 > kumon\ ;
+苦悩 > kunou\ ;
+異臭 > ishuu\ ;
+用語 > yougo\ ;
+左官 > sakan\ ;
+槐樹 > kaiju\ ;
+冗多 > jouta\ ;
+軟派 > nanpa\ ;
+冥土 > meido\ ;
+公布 > koufu\ ;
+異腹 > ifuku\ ;
+先手 > sente\ ;
+公差 > kousa\ ;
+茶器 > chaki\ ;
+臓腑 > zoufu\ ;
+近侍 > kinji\ ;
+鬱滞 > uttai\ ;
+桂馬 > keima\ ;
+近似 > kinji\ ;
+返付 > henpu\ ;
+高祖 > kouso\ ;
+梅酢 > umezu\ ;
+農務 > noumu\ ;
+常備 > joubi\ ;
+苦役 > kueki\ ;
+布団 > futon\ ;
+返事 > henji\ ;
+舌禍 > zekka\ ;
+兵家 > heika\ ;
+近事 > kinji\ ;
+嵐気 > ranki\ ;
+鮮度 > sendo\ ;
+苛性 > kasei\ ;
+梵語 > bongo\ ;
+騰貴 > touki\ ;
+履行 > rikou\ ;
+県下 > kenka\ ;
+内奥 > naiou\ ;
+腕輪 > udewa\ ;
+起電 > kiden\ ;
+師儒 > shiju\ ;
+家鴨 > ahiru\ ;
+寝顔 > negao\ ;
+農具 > nougu\ ;
+市営 > shiei\ ;
+円墳 > enpun\ ;
+色気 > iroke\ ;
+工夫 > koufu\ ;
+辞去 > jikyo\ ;
+転機 > tenki\ ;
+鬼歯 > oniba\ ;
+封鎖 > fuusa\ ;
+英屯 > eiton\ ;
+公安 > kouan\ ;
+尖部 > senbu\ ;
+辭典 > jiten\ ;
+常事 > jouji\ ;
+全家 > zenka\ ;
+相似 > souji\ ;
+偉績 > iseki\ ;
+工場 > kouba\ ;
+発布 > happu\ ;
+帰任 > kinin\ ;
+兄後 > anigo\ ;
+相互 > sougo\ ;
+倶者 > kusha\ ;
+俚謡 > riyou\ ;
+光度 > koudo\ ;
+馳駆 > chiku\ ;
+俚諺 > rigen\ ;
+先度 > sendo\ ;
+俎豆 > sotou\ ;
+冗員 > jouin\ ;
+軍歌 > gunka\ ;
+生蝋 > kirou\ ;
+克己 > kokki\ ;
+内因 > naiin\ ;
+跛行 > hakou\ ;
+盲亀 > mouki\ ;
+師事 > shiji\ ;
+苦寒 > kukan\ ;
+辞典 > jiten\ ;
+疫痢 > ekiri\ ;
+盛儀 > seigi\ ;
+市区 > shiku\ ;
+馬首 > bashu\ ;
+俚言 > rigen\ ;
+余香 > yokou\ ;
+登山 > tozan\ ;
+疵瑕 > shika\ ;
+軍機 > gunki\ ;
+英姿 > eishi\ ;
+冗句 > jouku\ ;
+農事 > nouji\ ;
+権威 > ken''i\ ;
+目下 > mokka\ ;
+嶮岨 > kenso\ ;
+業火 > gouka\ ;
+自社 > jisha\ ;
+疣痔 > iboji\ ;
+余風 > yofuu\ ;
+機動 > kidou\ ;
+余類 > yorui\ ;
+児孫 > jison\ ;
+監事 > kanji\ ;
+馬頭 > batou\ ;
+倹素 > kenso\ ;
+甘藻 > amamo\ ;
+皇妃 > kouhi\ ;
+尾行 > bikou\ ;
+皇女 > koujo\ ;
+家風 > kafuu\ ;
+工員 > kouin\ ;
+兵器 > heiki\ ;
+艶書 > ensho\ ;
+優弧 > yuuko\ ;
+公園 > kouen\ ;
+辞任 > jinin\ ;
+盛事 > seiji\ ;
+辞令 > jirei\ ;
+棉花 > menka\ ;
+機内 > kinai\ ;
+公図 > kouzu\ ;
+兵営 > heiei\ ;
+田舎 > inaka\ ;
+左右 > sayuu\ ;
+機先 > kisen\ ;
+全土 > zendo\ ;
+全図 > zenzu\ ;
+胯間 > kokan\ ;
+異称 > ishou\ ;
+画聖 > gasei\ ;
+公器 > kouki\ ;
+低音 > teion\ ;
+自省 > jisei\ ;
+希代 > kidai\ ;
+辞世 > jisei\ ;
+先婦 > senpu\ ;
+軌条 > kijou\ ;
+小豆 > azuki\ ;
+兵員 > heiin\ ;
+案配 > anbai\ ;
+家電 > kaden\ ;
+内務 > naimu\ ;
+尊貴 > sonki\ ;
+市価 > shika\ ;
+差分 > sabun\ ;
+公営 > kouei\ ;
+内助 > naijo\ ;
+瓦解 > gakai\ ;
+冠位 > kan''i\ ;
+英噸 > eiton\ ;
+梅見 > umemi\ ;
+工務 > koumu\ ;
+模型 > mokei\ ;
+希世 > kisei\ ;
+栄養 > eiyou\ ;
+俘虜 > furyo\ ;
+魔手 > mashu\ ;
+生花 > seika\ ;
+偽版 > gihan\ ;
+低雲 > teiun\ ;
+先妣 > senpi\ ;
+布令 > furei\ ;
+巨利 > kyori\ ;
+白堊 > hakua\ ;
+棋聖 > kisei\ ;
+先夫 > zenpu\ ;
+兼務 > kenmu\ ;
+機体 > kitai\ ;
+甘苦 > kanku\ ;
+香露 > kouro\ ;
+高炉 > kouro\ ;
+登城 > tojou\ ;
+軍旗 > gunki\ ;
+佳醸 > kajou\ ;
+路肩 > roken\ ;
+機会 > kikai\ ;
+似顔 > nigao\ ;
+甲羅 > koura\ ;
+家門 > kamon\ ;
+自由 > jiyuu\ ;
+棄背 > kihai\ ;
+便衣 > ben''i\ ;
+円光 > enkou\ ;
+自用 > jiyou\ ;
+自生 > jisei\ ;
+使途 > shito\ ;
+軽微 > keibi\ ;
+兵匪 > heihi\ ;
+佳酒 > kashu\ ;
+工具 > kougu\ ;
+登坂 > tohan\ ;
+富鉱 > fukou\ ;
+公吏 > kouri\ ;
+内儀 > naigi\ ;
+侮言 > bugen\ ;
+騎行 > kikou\ ;
+輿地 > yochi\ ;
+延々 > en''en\ ;
+棄老 > kirou\ ;
+芸子 > geiko\ ;
+背離 > hairi\ ;
+左傾 > sakei\ ;
+保菌 > hokin\ ;
+機上 > kijou\ ;
+公印 > kouin\ ;
+輔導 > hodou\ ;
+八卦 > hakke\ ;
+軽度 > keido\ ;
+巴人 > hajin\ ;
+画紙 > gashi\ ;
+英名 > eimei\ ;
+腹腔 > fukko\ ;
+公募 > koubo\ ;
+公務 > koumu\ ;
+番目 > banme\ ;
+党員 > touin\ ;
+内侍 > naiji\ ;
+兼備 > kenbi\ ;
+鬼才 > kisai\ ;
+寄金 > kikin\ ;
+走路 > souro\ ;
+魔弾 > madan\ ;
+岡目 > okame\ ;
+官需 > kanju\ ;
+儀形 > gikei\ ;
+優婉 > yuuen\ ;
+瑞雲 > zuiun\ ;
+高温 > kouon\ ;
+尾花 > obana\ ;
+対話 > taiwa\ ;
+伝馬 > tenma\ ;
+轍叉 > tessa\ ;
+依託 > itaku\ ;
+脳裡 > nouri\ ;
+権化 > gonge\ ;
+脳裏 > nouri\ ;
+苦吟 > kugin\ ;
+芸妓 > geigi\ ;
+路線 > rosen\ ;
+赤身 > akami\ ;
+兵備 > heibi\ ;
+内事 > naiji\ ;
+甘美 > kanbi\ ;
+富農 > funou\ ;
+修羅 > shura\ ;
+芥子 > keshi\ ;
+疑点 > giten\ ;
+工事 > kouji\ ;
+樽俎 > sonso\ ;
+侍講 > jikou\ ;
+軍手 > gunte\ ;
+権利 > kenri\ ;
+会飲 > kaiin\ ;
+典侍 > tenji\ ;
+公儀 > kougi\ ;
+安静 > ansei\ ;
+駅路 > ekiro\ ;
+儒官 > jukan\ ;
+入内 > judai\ ;
+党務 > toumu\ ;
+具体 > gutai\ ;
+発句 > hokku\ ;
+併起 > heiki\ ;
+鬱憤 > uppun\ ;
+苦労 > kurou\ ;
+佳趣 > kashu\ ;
+様子 > yousu\ ;
+保育 > hoiku\ ;
+画稿 > gakou\ ;
+山窩 > sanka\ ;
+例話 > reiwa\ ;
+充員 > juuin\ ;
+花壇 > kadan\ ;
+全備 > zenbi\ ;
+党利 > touri\ ;
+踏破 > touha\ ;
+孤高 > kokou\ ;
+自炊 > jisui\ ;
+業果 > gouka\ ;
+佳賓 > kahin\ ;
+生糸 > kiito\ ;
+兵事 > heiji\ ;
+先古 > senko\ ;
+模写 > mosha\ ;
+僧徒 > souto\ ;
+胃鏡 > ikyou\ ;
+高歌 > kouka\ ;
+例規 > reiki\ ;
+高次 > kouji\ ;
+疎漏 > sorou\ ;
+安閑 > ankan\ ;
+樹上 > jujou\ ;
+余輩 > yohai\ ;
+梅花 > baika\ ;
+儀容 > giyou\ ;
+田租 > denso\ ;
+僧庵 > souan\ ;
+馬車 > basha\ ;
+公事 > kouji\ ;
+先務 > senmu\ ;
+俺等 > orera\ ;
+富貴 > fukki\ ;
+寡言 > kagen\ ;
+首都 > shuto\ ;
+模倣 > mohou\ ;
+富豪 > fugou\ ;
+饑饉 > kikin\ ;
+馬蹄 > batei\ ;
+践祚 > senso\ ;
+路程 > rotei\ ;
+寄贈 > kizou\ ;
+体躯 > taiku\ ;
+痴愚 > chigu\ ;
+背部 > haibu\ ;
+保線 > hosen\ ;
+英主 > eishu\ ;
+季題 > kidai\ ;
+元利 > genri\ ;
+併記 > heiki\ ;
+倫理 > rinri\ ;
+車庫 > shako\ ;
+股間 > kokan\ ;
+産科 > sanka\ ;
+寓話 > guuwa\ ;
+佳言 > kagen\ ;
+自浄 > jijou\ ;
+疏水 > sosui\ ;
+疎水 > sosui\ ;
+余財 > yozai\ ;
+脾臟 > hizou\ ;
+子馬 > kouma\ ;
+脾臓 > hizou\ ;
+僧尼 > souni\ ;
+発作 > hossa\ ;
+転嫁 > tenka\ ;
+自治 > jichi\ ;
+癒合 > yugou\ ;
+充備 > juubi\ ;
+僧寺 > souji\ ;
+脾腫 > hishu\ ;
+高架 > kouka\ ;
+尾籠 > birou\ ;
+痛手 > itade\ ;
+白亜 > hakua\ ;
+僧家 > souka\ ;
+家財 > kazai\ ;
+転婆 > tenba\ ;
+健歩 > kenpo\ ;
+鬼子 > onigo\ ;
+楊枝 > youji\ ;
+展示 > tenji\ ;
+官途 > kanto\ ;
+自民 > jimin\ ;
+保管 > hokan\ ;
+栄転 > eiten\ ;
+検波 > kenpa\ ;
+仮題 > kadai\ ;
+字面 > jimen\ ;
+路盤 > roban\ ;
+元価 > genka\ ;
+舵手 > dashu\ ;
+宏遠 > kouen\ ;
+子音 > shiin\ ;
+艦尾 > kanbi\ ;
+余談 > yodan\ ;
+儀型 > gikei\ ;
+富裕 > fuyuu\ ;
+構図 > kouzu\ ;
+産着 > ubugi\ ;
+偏波 > henha\ ;
+驚異 > kyoui\ ;
+偽本 > gihon\ ;
+艶姿 > enshi\ ;
+優利 > yuuri\ ;
+極意 > gokui\ ;
+仮面 > kamen\ ;
+偽書 > gisho\ ;
+岡湯 > okayu\ ;
+棋界 > kikai\ ;
+保税 > hozei\ ;
+余計 > yokei\ ;
+僅差 > kinsa\ ;
+兄事 > keiji\ ;
+躯幹 > kukan\ ;
+傾度 > keido\ ;
+俯瞰 > fukan\ ;
+校規 > kouki\ ;
+臨機 > rinki\ ;
+肩部 > kenbu\ ;
+艇庫 > teiko\ ;
+尊者 > sonja\ ;
+跡目 > atome\ ;
+路用 > royou\ ;
+家訓 > kakun\ ;
+字間 > jikan\ ;
+家計 > kakei\ ;
+花冠 > kakan\ ;
+低語 > teigo\ ;
+実費 > jippi\ ;
+傾差 > keisa\ ;
+男猫 > oneko\ ;
+甦生 > sosei\ ;
+起草 > kisou\ ;
+架間 > kakan\ ;
+余裕 > yoyuu\ ;
+嵩呼 > suuko\ ;
+官費 > kanpi\ ;
+養鯉 > youri\ ;
+軍夫 > gunpu\ ;
+疎林 > sorin\ ;
+家裁 > kasai\ ;
+俳画 > haiga\ ;
+車夫 > shafu\ ;
+他面 > tamen\ ;
+小紋 > komon\ ;
+桃花 > touka\ ;
+生理 > seiri\ ;
+腋窩 > ekika\ ;
+付随 > fuzui\ ;
+高批 > kouhi\ ;
+家蝿 > iebae\ ;
+検査 > kensa\ ;
+備忘 > bibou\ ;
+小粋 > koiki\ ;
+実記 > jikki\ ;
+自書 > jisho\ ;
+貫首 > kanju\ ;
+偉業 > igyou\ ;
+人馬 > jinba\ ;
+億劫 > okkuu\ ;
+貴顕 > kiken\ ;
+侍者 > jisha\ ;
+自暴 > jibou\ ;
+便秘 > benpi\ ;
+官話 > kanwa\ ;
+崎崖 > kigai\ ;
+疎放 > sohou\ ;
+余薫 > yokun\ ;
+自明 > jimei\ ;
+臨時 > rinji\ ;
+餌食 > ejiki\ ;
+軍器 > gunki\ ;
+定規 > jougi\ ;
+船尾 > senbi\ ;
+儀刑 > gikei\ ;
+今際 > imawa\ ;
+億円 > okuen\ ;
+儀刀 > gitou\ ;
+守護 > shugo\ ;
+会費 > kaihi\ ;
+岩根 > iwane\ ;
+饋還 > kikan\ ;
+寡聞 > kabun\ ;
+高恩 > kouon\ ;
+男滝 > odaki\ ;
+転化 > tenka\ ;
+儀典 > giten\ ;
+瓜科 > urika\ ;
+軽侮 > keibu\ ;
+家蔵 > kazou\ ;
+供米 > kumai\ ;
+栄螺 > sazae\ ;
+軟化 > nanka\ ;
+値段 > nedan\ ;
+孤軍 > kogun\ ;
+偽悪 > giaku\ ;
+異朝 > ichou\ ;
+佳肴 > kakou\ ;
+疲弊 > hihei\ ;
+会議 > kaigi\ ;
+甘煮 > amani\ ;
+偽性 > gisei\ ;
+来駕 > raiga\ ;
+画法 > gahou\ ;
+寄航 > kikou\ ;
+高座 > kouza\ ;
+高度 > koudo\ ;
+良医 > ryoui\ ;
+伝記 > denki\ ;
+会話 > kaiwa\ ;
+余芳 > yohou\ ;
+乱麻 > ranma\ ;
+傘寿 > sanju\ ;
+山河 > sanga\ ;
+尾状 > bijou\ ;
+耳順 > jijun\ ;
+伽藍 > garan\ ;
+賛辞 > sanji\ ;
+軍医 > gun''i\ ;
+専科 > senka\ ;
+異教 > ikyou\ ;
+儀仗 > gijou\ ;
+守衛 > shuei\ ;
+富者 > fusha\ ;
+会規 > kaiki\ ;
+軍務 > gunmu\ ;
+産湯 > ubuyu\ ;
+香華 > kouge\ ;
+自戒 > jikai\ ;
+尾燈 > bitou\ ;
+供祭 > gusai\ ;
+賓辞 > hinji\ ;
+胚芽 > haiga\ ;
+起算 > kisan\ ;
+舞子 > maiko\ ;
+佳編 > kahen\ ;
+自慢 > jiman\ ;
+転位 > ten''i\ ;
+飢饉 > kikin\ ;
+楽器 > gakki\ ;
+疑念 > ginen\ ;
+寺社 > jisha\ ;
+余聞 > yobun\ ;
+交附 > koufu\ ;
+学課 > gakka\ ;
+僭位 > sen''i\ ;
+付近 > fukin\ ;
+尾灯 > bitou\ ;
+馬耕 > bakou\ ;
+瓜田 > kaden\ ;
+踏査 > tousa\ ;
+高宜 > kougi\ ;
+起稿 > kikou\ ;
+画楼 > garou\ ;
+脱皮 > dappi\ ;
+畏服 > ifuku\ ;
+来院 > raiin\ ;
+侍祭 > jisai\ ;
+軍備 > gunbi\ ;
+産気 > sanke\ ;
+楊子 > youji\ ;
+小異 > shoui\ ;
+舞妓 > maiko\ ;
+棄死 > kishi\ ;
+余罪 > yozai\ ;
+産毛 > ubuge\ ;
+業因 > gouin\ ;
+例示 > reiji\ ;
+家老 > karou\ ;
+生気 > seiki\ ;
+事項 > jikou\ ;
+腐爛 > furan\ ;
+小瓶 > kobin\ ;
+佳篇 > kahen\ ;
+脱疽 > dasso\ ;
+岩戸 > iwato\ ;
+寿盃 > juhai\ ;
+生母 > seibo\ ;
+自弁 > jiben\ ;
+番手 > bante\ ;
+偸安 > touan\ ;
+小琴 > ogoto\ ;
+俄然 > gazen\ ;
+棄権 > kiken\ ;
+豪飲 > gouin\ ;
+亀頭 > kitou\ ;
+画板 > gaban\ ;
+字訓 > jikun\ ;
+梳毛 > somou\ ;
+飛電 > hiden\ ;
+二階 > nikai\ ;
+画材 > gazai\ ;
+字解 > jikai\ ;
+軍事 > gunji\ ;
+理財 > rizai\ ;
+画本 > gahon\ ;
+画期 > kakki\ ;
+自工 > jikou\ ;
+胃腸 > ichou\ ;
+校紀 > kouki\ ;
+畸形 > kikei\ ;
+代議 > daigi\ ;
+仮言 > kagen\ ;
+走破 > souha\ ;
+債務 > saimu\ ;
+身分 > mibun\ ;
+個条 > kajou\ ;
+赤禍 > sekka\ ;
+予防 > yobou\ ;
+偉徳 > itoku\ ;
+賄賂 > wairo\ ;
+育英 > ikuei\ ;
+小犬 > koinu\ ;
+栄耀 > eiyou\ ;
+由来 > yurai\ ;
+異心 > ishin\ ;
+船医 > sen''i\ ;
+椰子 > yashi\ ;
+家紋 > kamon\ ;
+家系 > kakei\ ;
+異形 > igyou\ ;
+伽羅 > kyara\ ;
+肺腑 > haifu\ ;
+仏貨 > fukka\ ;
+東都 > touto\ ;
+東部 > toubu\ ;
+仮装 > kasou\ ;
+自尽 > jijin\ ;
+理論 > riron\ ;
+偏差 > hensa\ ;
+尊父 > sonpu\ ;
+自尊 > jison\ ;
+偽報 > gihou\ ;
+定義 > teigi\ ;
+備品 > bihin\ ;
+貨車 > kasha\ ;
+俗気 > zokke\ ;
+自害 > jigai\ ;
+貸費 > taihi\ ;
+寄稿 > kikou\ ;
+留意 > ryuui\ ;
+何箇 > nanko\ ;
+個数 > kosuu\ ;
+寝相 > nezou\ ;
+颶風 > gufuu\ ;
+貴賤 > kisen\ ;
+自存 > jison\ ;
+桂皮 > keihi\ ;
+飲酒 > inshu\ ;
+貴賓 > kihin\ ;
+亨運 > kouun\ ;
+理解 > rikai\ ;
+貴賎 > kisen\ ;
+起用 > kiyou\ ;
+何等 > nanra\ ;
+販路 > hanro\ ;
+期首 > kishu\ ;
+俗歌 > zokka\ ;
+乗馬 > jouba\ ;
+付言 > fugen\ ;
+赤目 > akame\ ;
+介護 > kaigo\ ;
+他言 > tagon\ ;
+亀鑑 > kikan\ ;
+脳炎 > nouen\ ;
+検字 > kenji\ ;
+五重 > gojuu\ ;
+賀詞 > gashi\ ;
+舞台 > butai\ ;
+朝餉 > asage\ ;
+寡男 > yamoo\ ;
+他見 > taken\ ;
+舎営 > shaei\ ;
+伎芸 > gigei\ ;
+疎外 > sogai\ ;
+偶因 > guuin\ ;
+安置 > anchi\ ;
+貨財 > kazai\ ;
+傍受 > bouju\ ;
+胴着 > dougi\ ;
+家禽 > kakin\ ;
+岩屋 > iwaya\ ;
+二重 > futae\ ;
+肥育 > hiiku\ ;
+小滝 > otaki\ ;
+予鈴 > yorei\ ;
+偽善 > gizen\ ;
+梧桐 > gotou\ ;
+貢賦 > koufu\ ;
+画才 > gasai\ ;
+画手 > gashu\ ;
+官紀 > kanki\ ;
+貴誌 > kishi\ ;
+風韻 > fuuin\ ;
+畳字 > jouji\ ;
+他行 > takou\ ;
+股肱 > kokou\ ;
+財貨 > zaika\ ;
+異宗 > ishuu\ ;
+互選 > gosen\ ;
+自壊 > jikai\ ;
+棄損 > kison\ ;
+風靡 > fuubi\ ;
+養護 > yougo\ ;
+貝貨 > baika\ ;
+伎能 > ginou\ ;
+未開 > mikai\ ;
+個所 > kasho\ ;
+貴覧 > kiran\ ;
+走狗 > souku\ ;
+風雲 > fuuun\ ;
+乖離 > kairi\ ;
+疲労 > hirou\ ;
+仮葬 > kasou\ ;
+偽名 > gimei\ ;
+人語 > jingo\ ;
+風雅 > fuuga\ ;
+五輪 > gorin\ ;
+偽史 > gishi\ ;
+期限 > kigen\ ;
+予選 > yosen\ ;
+乗除 > joujo\ ;
+偏奇 > henki\ ;
+主馬 > shume\ ;
+保有 > hoyuu\ ;
+自在 > jizai\ ;
+高利 > kouri\ ;
+期間 > kikan\ ;
+起点 > kiten\ ;
+二輪 > nirin\ ;
+朝間 > asama\ ;
+脳波 > nouha\ ;
+実科 > jikka\ ;
+家相 > kasou\ ;
+来賀 > raiga\ ;
+屠所 > tosho\ ;
+疑問 > gimon\ ;
+舎利 > shari\ ;
+寄生 > kisei\ ;
+二軍 > nigun\ ;
+倒影 > touei\ ;
+他薦 > tazen\ ;
+個性 > kosei\ ;
+駄犬 > daken\ ;
+飛車 > hisha\ ;
+屹度 > kitto\ ;
+作用 > sayou\ ;
+倭寇 > wakou\ ;
+小歌 > kouta\ ;
+主音 > shuon\ ;
+異境 > ikyou\ ;
+容疑 > yougi\ ;
+画廊 > garou\ ;
+余生 > yosei\ ;
+美麗 > birei\ ;
+定礎 > teiso\ ;
+偏土 > hendo\ ;
+岩場 > iwaba\ ;
+自問 > jimon\ ;
+偽兵 > gihei\ ;
+交誼 > kougi\ ;
+腕木 > udegi\ ;
+傘下 > sanka\ ;
+健否 > kenpi\ ;
+画師 > gashi\ ;
+画帖 > gajou\ ;
+家産 > kasan\ ;
+画工 > gakou\ ;
+起源 > kigen\ ;
+羽音 > haoto\ ;
+高価 > kouka\ ;
+倉庫 > souko\ ;
+果菜 > kasai\ ;
+机辺 > kihen\ ;
+対比 > taihi\ ;
+異国 > ikoku\ ;
+村費 > sonpi\ ;
+賢者 > kenja\ ;
+本部 > honbu\ ;
+互譲 > gojou\ ;
+臓器 > zouki\ ;
+対欧 > taiou\ ;
+老躯 > rouku\ ;
+産後 > sango\ ;
+用度 > youdo\ ;
+書院 > shoin\ ;
+桐油 > touyu\ ;
+未遂 > misui\ ;
+生徒 > seito\ ;
+生後 > seigo\ ;
+条規 > jouki\ ;
+脚気 > kakke\ ;
+高下 > kouge\ ;
+自動 > jidou\ ;
+王道 > oudou\ ;
+賛美 > sanbi\ ;
+腐敗 > fuhai\ ;
+蹄叉 > teisa\ ;
+争議 > sougi\ ;
+木通 > akebi\ ;
+仕舞 > jimai\ ;
+越権 > ekken\ ;
+跋扈 > bakko\ ;
+余燼 > yojin\ ;
+個展 > koten\ ;
+自前 > jimae\ ;
+自制 > jisei\ ;
+健児 > kenji\ ;
+胃痛 > itsuu\ ;
+予謀 > yobou\ ;
+骨化 > kokka\ ;
+小枝 > koeda\ ;
+胃病 > ibyou\ ;
+自分 > jibun\ ;
+自刃 > jijin\ ;
+起毛 > kimou\ ;
+瑪瑙 > menou\ ;
+風邪 > fuuja\ ;
+起死 > kishi\ ;
+架線 > kasen\ ;
+上馬 > jouba\ ;
+作為 > sakui\ ;
+背理 > hairi\ ;
+安眠 > anmin\ ;
+自党 > jitou\ ;
+尿意 > nyoui\ ;
+望遠 > bouen\ ;
+田家 > denka\ ;
+予言 > yogen\ ;
+九輪 > kurin\ ;
+乱費 > ranpi\ ;
+他聞 > tabun\ ;
+未踏 > mitou\ ;
+争覇 > souha\ ;
+寝汗 > nease\ ;
+健保 > kenpo\ ;
+対案 > taian\ ;
+瑕疵 > kashi\ ;
+予見 > yoken\ ;
+下風 > kafuu\ ;
+他者 > tasha\ ;
+畿内 > kinai\ ;
+仮納 > kanou\ ;
+猪首 > ikubi\ ;
+定理 > teiri\ ;
+不順 > fujun\ ;
+一首 > isshu\ ;
+産屋 > ubuya\ ;
+仮粧 > kewai\ ;
+豪語 > gougo\ ;
+類韻 > ruiin\ ;
+類音 > ruion\ ;
+寒波 > kanpa\ ;
+用字 > youji\ ;
+学科 > gakka\ ;
+貧苦 > hinku\ ;
+男女 > danjo\ ;
+考課 > kouka\ ;
+根気 > konki\ ;
+赤毛 > akage\ ;
+一飯 > ippan\ ;
+画壇 > gadan\ ;
+寄港 > kikou\ ;
+香煙 > kouen\ ;
+美風 > bifuu\ ;
+飛行 > hikou\ ;
+予行 > yokou\ ;
+京華 > keika\ ;
+安産 > anzan\ ;
+自体 > jitai\ ;
+一風 > ippuu\ ;
+美顔 > bigan\ ;
+生家 > seika\ ;
+実父 > jippu\ ;
+自伝 > jiden\ ;
+聖者 > seija\ ;
+便所 > benjo\ ;
+画報 > gahou\ ;
+自任 > jinin\ ;
+世間 > seken\ ;
+一頭 > ittou\ ;
+甲夜 > kouya\ ;
+自今 > jikon\ ;
+不随 > fuzui\ ;
+香炉 > kouro\ ;
+主部 > shubu\ ;
+一項 > ikkou\ ;
+騎手 > kishu\ ;
+田夫 > denpu\ ;
+賦税 > fuzei\ ;
+飛蝗 > batta\ ;
+璽書 > jisho\ ;
+尻座 > kouza\ ;
+貴翰 > kikan\ ;
+理系 > rikei\ ;
+自乗 > jijou\ ;
+産婦 > sanpu\ ;
+下限 > kagen\ ;
+下降 > kakou\ ;
+上院 > jouin\ ;
+自主 > jishu\ ;
+寸暇 > sunka\ ;
+架空 > kakuu\ ;
+産婆 > sanba\ ;
+棋士 > kishi\ ;
+豌豆 > endou\ ;
+下阪 > gehan\ ;
+寸時 > sunji\ ;
+梵字 > bonji\ ;
+甘子 > amago\ ;
+体温 > taion\ ;
+便意 > ben''i\ ;
+仁義 > jingi\ ;
+宛然 > enzen\ ;
+作法 > sahou\ ;
+検事 > kenji\ ;
+主辞 > shuji\ ;
+暴飲 > bouin\ ;
+寝棺 > nekan\ ;
+果糖 > katou\ ;
+低温 > teion\ ;
+走査 > sousa\ ;
+一階 > ikkai\ ;
+本訴 > honso\ ;
+一隊 > ittai\ ;
+曹達 > souda\ ;
+畸人 > kijin\ ;
+貧者 > hinja\ ;
+俐巧 > rikou\ ;
+例時 > reiji\ ;
+家法 > kahou\ ;
+田圃 > denpo\ ;
+屠場 > tojou\ ;
+付箋 > fusen\ ;
+未見 > miken\ ;
+耳腔 > jikou\ ;
+一閃 > issen\ ;
+少慰 > shoui\ ;
+侮慢 > buman\ ;
+作歌 > sakka\ ;
+桃李 > touri\ ;
+校歌 > kouka\ ;
+義金 > gikin\ ;
+保守 > hoshu\ ;
+風諭 > fuuyu\ ;
+世銀 > segin\ ;
+保存 > hozon\ ;
+肺炎 > haien\ ;
+甘夢 > kanmu\ ;
+尤度 > yuudo\ ;
+耽美 > tanbi\ ;
+曠野 > kouya\ ;
+貴紙 > kishi\ ;
+月賦 > geppu\ ;
+展墓 > tenbo\ ;
+便座 > benza\ ;
+五芒 > gobou\ ;
+珪素 > keiso\ ;
+核果 > kakka\ ;
+尊意 > son''i\ ;
+香油 > kouyu\ ;
+用器 > youki\ ;
+案文 > anmon\ ;
+仮睡 > kasui\ ;
+朗詠 > rouei\ ;
+倒句 > touku\ ;
+倒叙 > toujo\ ;
+仮眠 > kamin\ ;
+貴簡 > kikan\ ;
+臍下 > seika\ ;
+定温 > teion\ ;
+仮相 > kasou\ ;
+五臓 > gozou\ ;
+背泳 > haiei\ ;
+香気 > kouki\ ;
+亡者 > mouja\ ;
+膠化 > kouka\ ;
+頭韻 > touin\ ;
+佳景 > kakei\ ;
+尖度 > sendo\ ;
+他社 > tasha\ ;
+豪華 > gouka\ ;
+富有 > fuyuu\ ;
+世途 > seito\ ;
+仮痘 > katou\ ;
+万里 > banri\ ;
+理知 > richi\ ;
+丘辺 > okabe\ ;
+腹囲 > fukui\ ;
+佐様 > sayou\ ;
+仏祖 > busso\ ;
+駄文 > dabun\ ;
+義軍 > gigun\ ;
+倍加 > baika\ ;
+倭人 > wajin\ ;
+七重 > nanae\ ;
+下郎 > gerou\ ;
+上部 > joubu\ ;
+頓馬 > tonma\ ;
+三部 > sanbu\ ;
+貴種 > kishu\ ;
+不遜 > fuson\ ;
+射影 > shaei\ ;
+不遇 > fuguu\ ;
+一重 > hitoe\ ;
+主語 > shugo\ ;
+便宜 > bengi\ ;
+騎射 > kisha\ ;
+寄書 > kisho\ ;
+不逞 > futei\ ;
+小川 > ogawa\ ;
+対応 > taiou\ ;
+不退 > futai\ ;
+美酒 > bishu\ ;
+瑞気 > zuiki\ ;
+主訴 > shuso\ ;
+暗雲 > an''un\ ;
+貴社 > kisha\ ;
+男児 > danji\ ;
+二者 > nisha\ ;
+画像 > gazou\ ;
+他県 > taken\ ;
+俳味 > haimi\ ;
+佚書 > issho\ ;
+婦選 > fusen\ ;
+用務 > youmu\ ;
+婦道 > fudou\ ;
+村翁 > sonou\ ;
+安泰 > antai\ ;
+肥満 > himan\ ;
+下輩 > gehai\ ;
+家来 > kerai\ ;
+対座 > taiza\ ;
+値上 > neage\ ;
+甘味 > kanmi\ ;
+俳句 > haiku\ ;
+一遍 > ippen\ ;
+老舗 > rouho\ ;
+暗闘 > antou\ ;
+書記 > shoki\ ;
+下車 > gesha\ ;
+少尉 > shoui\ ;
+甚句 > jinku\ ;
+家書 > kasho\ ;
+些細 > sasai\ ;
+理由 > riyuu\ ;
+人祖 > jinso\ ;
+小尉 > shoui\ ;
+校旗 > kouki\ ;
+乱舞 > ranbu\ ;
+五線 > gosen\ ;
+甘受 > kanju\ ;
+一辺 > ippen\ ;
+侍従 > jijuu\ ;
+孤灯 > kotou\ ;
+代理 > dairi\ ;
+貢租 > kouso\ ;
+娃鬟 > aikan\ ;
+会派 > kaiha\ ;
+子犬 > koinu\ ;
+聯珠 > renju\ ;
+用具 > yougu\ ;
+画会 > gakai\ ;
+他界 > takai\ ;
+五絃 > gogen\ ;
+小字 > koaza\ ;
+屋号 > yagou\ ;
+屋台 > yatai\ ;
+尊家 > sonka\ ;
+一転 > itten\ ;
+画人 > gajin\ ;
+題辞 > daiji\ ;
+一軒 > ikken\ ;
+実梅 > miume\ ;
+個体 > kotai\ ;
+騎士 > kishi\ ;
+対峙 > taiji\ ;
+産児 > sanji\ ;
+路傍 > robou\ ;
+本舗 > honpo\ ;
+群議 > gungi\ ;
+不買 > fubai\ ;
+家政 > kasei\ ;
+下賤 > gesen\ ;
+寝息 > neiki\ ;
+不貞 > futei\ ;
+下賜 > kashi\ ;
+下賎 > gesen\ ;
+枯燥 > kosou\ ;
+個人 > kojin\ ;
+木舞 > komai\ ;
+使徒 > shito\ ;
+老翁 > rouou\ ;
+羽蟻 > haari\ ;
+寛恕 > kanjo\ ;
+費用 > hiyou\ ;
+頸部 > keibu\ ;
+代父 > daifu\ ;
+貫目 > kanme\ ;
+小委 > shoui\ ;
+義訓 > gikun\ ;
+予納 > yonou\ ;
+万貨 > banka\ ;
+世論 > yoron\ ;
+豊艶 > houen\ ;
+起工 > kikou\ ;
+板目 > itame\ ;
+頭重 > zuomo\ ;
+梅園 > baien\ ;
+貴男 > takao\ ;
+定木 > jougi\ ;
+定期 > teiki\ ;
+小売 > kouri\ ;
+美貌 > bibou\ ;
+小声 > kogoe\ ;
+桂庵 > keian\ ;
+一貫 > ikkan\ ;
+上議 > jougi\ ;
+生保 > seiho\ ;
+便器 > benki\ ;
+与論 > yoron\ ;
+未聞 > mimon\ ;
+音韻 > on''in\ ;
+用事 > youji\ ;
+景雲 > keiun\ ;
+頭部 > toubu\ ;
+仔犬 > koinu\ ;
+二等 > nitou\ ;
+罪過 > zaika\ ;
+上諭 > jouyu\ ;
+俗化 > zokka\ ;
+字源 > jigen\ ;
+予算 > yosan\ ;
+類語 > ruigo\ ;
+路上 > rojou\ ;
+本義 > hongi\ ;
+賀状 > gajou\ ;
+定時 > teiji\ ;
+棄世 > kisei\ ;
+豆腐 > toufu\ ;
+駄弁 > daben\ ;
+婦警 > fukei\ ;
+起居 > kikyo\ ;
+獄衣 > gokui\ ;
+板画 > hanga\ ;
+不言 > fugen\ ;
+住持 > juuji\ ;
+体技 > taigi\ ;
+保冷 > horei\ ;
+余憤 > yofun\ ;
+上訴 > jouso\ ;
+上記 > jouki\ ;
+余慶 > yokei\ ;
+作意 > sakui\ ;
+保全 > hozen\ ;
+二種 > nishu\ ;
+果然 > kazen\ ;
+不要 > fuyou\ ;
+音階 > onkai\ ;
+美談 > bidan\ ;
+家憲 > kaken\ ;
+予稿 > yokou\ ;
+導因 > douin\ ;
+代演 > daien\ ;
+余情 > yojou\ ;
+寡居 > kakyo\ ;
+犬馬 > kenba\ ;
+餓狼 > garou\ ;
+尼僧 > nisou\ ;
+保健 > hoken\ ;
+翡翠 > hisui\ ;
+枯淡 > kotan\ ;
+頚部 > keibu\ ;
+未練 > miren\ ;
+一計 > ikkei\ ;
+美観 > bikan\ ;
+預金 > yokin\ ;
+余念 > yonen\ ;
+下行 > kakou\ ;
+題詠 > daiei\ ;
+木綿 > momen\ ;
+丹花 > tanka\ ;
+一見 > ikken\ ;
+丹色 > niiro\ ;
+王統 > outou\ ;
+会期 > kaiki\ ;
+封土 > houdo\ ;
+趣味 > shumi\ ;
+賢母 > kenbo\ ;
+暗転 > anten\ ;
+未納 > minou\ ;
+対坐 > taiza\ ;
+余弦 > yogen\ ;
+議題 > gidai\ ;
+聖火 > seika\ ;
+小唄 > kouta\ ;
+余弊 > yohei\ ;
+腐刑 > fukei\ ;
+佳容 > kayou\ ;
+家従 > kajuu\ ;
+赤字 > akaji\ ;
+養父 > youfu\ ;
+来由 > raiyu\ ;
+予知 > yochi\ ;
+仮死 > kashi\ ;
+一行 > ikkou\ ;
+便利 > benri\ ;
+仮歯 > kashi\ ;
+根子 > nekko\ ;
+寸土 > sundo\ ;
+何度 > nando\ ;
+二相 > nisou\ ;
+胡座 > agura\ ;
+賛歌 > sanka\ ;
+珊瑚 > sango\ ;
+案外 > angai\ ;
+事相 > jisou\ ;
+家庭 > katei\ ;
+枯死 > koshi\ ;
+脅威 > kyoui\ ;
+曳航 > eikou\ ;
+理法 > rihou\ ;
+風紀 > fuuki\ ;
+代母 > daibo\ ;
+瓦全 > gazen\ ;
+家常 > kajou\ ;
+人為 > jin''i\ ;
+伝播 > denpa\ ;
+罵言 > bagen\ ;
+騎兵 > kihei\ ;
+低度 > teido\ ;
+桑園 > souen\ ;
+互用 > goyou\ ;
+主義 > shugi\ ;
+条理 > jouri\ ;
+小勢 > kozei\ ;
+寄寓 > kiguu\ ;
+尊卑 > sonpi\ ;
+学期 > gakki\ ;
+二番 > niban\ ;
+時限 > jigen\ ;
+背後 > haigo\ ;
+牡鹿 > ojika\ ;
+企望 > kibou\ ;
+本科 > honka\ ;
+果汁 > kajuu\ ;
+馬屋 > umaya\ ;
+駅夫 > ekifu\ ;
+伝授 > denju\ ;
+事由 > jiyuu\ ;
+俎上 > sojou\ ;
+小判 > koban\ ;
+乾皮 > kanpi\ ;
+羽翼 > uyoku\ ;
+枝毛 > edage\ ;
+寿司 > sushi\ ;
+作家 > sakka\ ;
+首座 > shuza\ ;
+普選 > fusen\ ;
+首府 > shufu\ ;
+亡父 > boufu\ ;
+普遍 > fuhen\ ;
+余寒 > yokan\ ;
+時間 > jikan\ ;
+封印 > fuuin\ ;
+譜面 > fumen\ ;
+任期 > ninki\ ;
+赭土 > shado\ ;
+家屋 > kaoku\ ;
+家居 > kakyo\ ;
+讚辞 > sanji\ ;
+聖油 > seiyu\ ;
+腐乱 > furan\ ;
+専務 > senmu\ ;
+猟虎 > rakko\ ;
+普辺 > fuhen\ ;
+寝坊 > nebou\ ;
+飴煮 > ameni\ ;
+枢機 > suuki\ ;
+群舞 > gunbu\ ;
+根基 > konki\ ;
+住居 > sumai\ ;
+胃弱 > ijaku\ ;
+伝手 > tsute\ ;
+宵寝 > yoine\ ;
+宣布 > senpu\ ;
+足下 > sokka\ ;
+小僧 > kozou\ ;
+宝庫 > houko\ ;
+順路 > junro\ ;
+上荷 > uwani\ ;
+家宝 > kahou\ ;
+射利 > shari\ ;
+猛虎 > mouko\ ;
+字書 > jisho\ ;
+一葦 > ichii\ ;
+宮居 > miyai\ ;
+赤地 > akaji\ ;
+佐官 > sakan\ ;
+脱兎 > datto\ ;
+聖母 > seibo\ ;
+羽織 > haori\ ;
+腋下 > ekika\ ;
+義肢 > gishi\ ;
+騎乗 > kijou\ ;
+侍史 > jishi\ ;
+官府 > kanpu\ ;
+未知 > michi\ ;
+暗視 > anshi\ ;
+林檎 > ringo\ ;
+代案 > daian\ ;
+聖歌 > seika\ ;
+今次 > konji\ ;
+貴殿 > kiden\ ;
+下船 > gesen\ ;
+事犯 > jihan\ ;
+首尾 > shubi\ ;
+越冬 > ettou\ ;
+安心 > anjin\ ;
+献花 > kenka\ ;
+耳漏 > jirou\ ;
+賜暇 > shika\ ;
+一茎 > ikkei\ ;
+起原 > kigen\ ;
+胸囲 > kyoui\ ;
+字数 > jisuu\ ;
+貪汚 > tan''o\ ;
+班次 > hanji\ ;
+下腿 > katai\ ;
+餓死 > gashi\ ;
+星雲 > seiun\ ;
+寿像 > juzou\ ;
+価値 > kachi\ ;
+不能 > funou\ ;
+妖魔 > youma\ ;
+環化 > kanka\ ;
+一艘 > issou\ ;
+来演 > raien\ ;
+嫌疑 > kengi\ ;
+起動 > kidou\ ;
+仮数 > kasuu\ ;
+余塵 > yojin\ ;
+普賢 > fugen\ ;
+一般 > ippan\ ;
+休意 > kyuui\ ;
+養母 > youbo\ ;
+家声 > kasei\ ;
+実家 > jikka\ ;
+下肢 > kashi\ ;
+預言 > yogen\ ;
+一致 > itchi\ ;
+駅員 > ekiin\ ;
+会得 > etoku\ ;
+寝台 > nedai\ ;
+下聞 > kabun\ ;
+佳品 > kahin\ ;
+寡占 > kasen\ ;
+不老 > furou\ ;
+赤味 > akami\ ;
+護送 > gosou\ ;
+対価 > taika\ ;
+侏儒 > shuju\ ;
+尊下 > sonka\ ;
+他村 > tason\ ;
+杜漏 > zurou\ ;
+寡勢 > kazei\ ;
+宛字 > ateji\ ;
+査定 > satei\ ;
+宗家 > souke\ ;
+侍僧 > jisou\ ;
+余地 > yochi\ ;
+牝馬 > hinba\ ;
+美育 > biiku\ ;
+案分 > anbun\ ;
+能吏 > nouri\ ;
+仏果 > bukka\ ;
+耐火 > taika\ ;
+老爺 > rouya\ ;
+老父 > roufu\ ;
+警部 > keibu\ ;
+頭蓋 > zugai\ ;
+赤化 > sekka\ ;
+理数 > risuu\ ;
+亜流 > aryuu\ ;
+起債 > kisai\ ;
+象牙 > zouge\ ;
+一考 > ikkou\ ;
+東歌 > touka\ ;
+警邏 > keira\ ;
+安居 > ankyo\ ;
+東欧 > touou\ ;
+駆動 > kudou\ ;
+容器 > youki\ ;
+贔屓 > hiiki\ ;
+寡兵 > kahei\ ;
+世紀 > seiki\ ;
+他方 > tahou\ ;
+今期 > konki\ ;
+果断 > kadan\ ;
+任意 > nin''i\ ;
+類縁 > ruien\ ;
+余喘 > yozen\ ;
+讒誣 > zanbu\ ;
+亡母 > boubo\ ;
+果敢 > kakan\ ;
+安定 > antei\ ;
+下線 > kasen\ ;
+下緒 > sageo\ ;
+宇宙 > uchuu\ ;
+讒訴 > zanso\ ;
+官女 > kanjo\ ;
+音詩 > onshi\ ;
+不純 > fujun\ ;
+不納 > funou\ ;
+伎工 > gikou\ ;
+音訓 > onkun\ ;
+賢愚 > kengu\ ;
+胃壁 > iheki\ ;
+余命 > yomei\ ;
+伝家 > denka\ ;
+杜氏 > touji\ ;
+不粋 > busui\ ;
+妖雲 > youun\ ;
+赴任 > funin\ ;
+賦性 > fusei\ ;
+馴化 > junka\ ;
+一線 > issen\ ;
+一緒 > issho\ ;
+代打 > daida\ ;
+仮想 > kasou\ ;
+案件 > anken\ ;
+獣皮 > juuhi\ ;
+五段 > godan\ ;
+賛意 > san''i\ ;
+板木 > hangi\ ;
+貴方 > kihou\ ;
+飢民 > kimin\ ;
+一統 > ittou\ ;
+飛泉 > hisen\ ;
+未然 > mizen\ ;
+駐伊 > chuui\ ;
+好餌 > kouji\ ;
+映配 > eihai\ ;
+家君 > kakun\ ;
+孤帆 > kohan\ ;
+家名 > kamei\ ;
+一系 > ikkei\ ;
+寡人 > kajin\ ;
+仮性 > kasei\ ;
+作動 > sadou\ ;
+一糸 > isshi\ ;
+字形 > jikei\ ;
+不等 > futou\ ;
+校務 > koumu\ ;
+人時 > ninji\ ;
+羈絆 > kihan\ ;
+頭脳 > zunou\ ;
+余勢 > yosei\ ;
+下等 > katou\ ;
+駆使 > kushi\ ;
+佳例 > karei\ ;
+二死 > nishi\ ;
+宝器 > houki\ ;
+木灰 > kibai\ ;
+下端 > katan\ ;
+余剰 > yojou\ ;
+羅紗 > rasha\ ;
+奇麗 > kirei\ ;
+仕手 > shite\ ;
+孤島 > kotou\ ;
+馬券 > baken\ ;
+宮司 > guuji\ ;
+香味 > koumi\ ;
+余分 > yobun\ ;
+伝奇 > denki\ ;
+理想 > risou\ ;
+佳什 > kajuu\ ;
+佳人 > kajin\ ;
+一管 > ikkan\ ;
+宥和 > yuuwa\ ;
+佑助 > yuujo\ ;
+校具 > kougu\ ;
+議論 > giron\ ;
+一等 > ittou\ ;
+書画 > shoga\ ;
+獲物 > emono\ ;
+能事 > nouji\ ;
+奮飛 > funpi\ ;
+肥大 > hidai\ ;
+余党 > yotou\ ;
+余光 > yokou\ ;
+豪気 > gouki\ ;
+理性 > risei\ ;
+時論 > jiron\ ;
+警護 > keigo\ ;
+負数 > fusuu\ ;
+二様 > niyou\ ;
+義眼 > gigan\ ;
+査問 > samon\ ;
+理念 > rinen\ ;
+青馬 > aouma\ ;
+低利 > teiri\ ;
+譫語 > sengo\ ;
+未満 > miman\ ;
+家内 > kanai\ ;
+世知 > sechi\ ;
+定員 > teiin\ ;
+買手 > kaite\ ;
+容儀 > yougi\ ;
+実否 > jippi\ ;
+来期 > raiki\ ;
+乃父 > daifu\ ;
+家兄 > kakei\ ;
+季子 > kishi\ ;
+井桁 > igeta\ ;
+暗翳 > an''ei\ ;
+未済 > misai\ ;
+貴所 > kisho\ ;
+姉貴 > aneki\ ;
+時計 > tokei\ ;
+老母 > roubo\ ;
+他念 > tanen\ ;
+宛名 > atena\ ;
+女難 > jonan\ ;
+奴隷 > dorei\ ;
+世相 > sesou\ ;
+仲居 > nakai\ ;
+顕示 > kenji\ ;
+不知 > fuchi\ ;
+官吏 > kanri\ ;
+末派 > mappa\ ;
+何個 > nanko\ ;
+非難 > hinan\ ;
+下知 > gedji\ ;
+太鼓 > taiko\ ;
+下瞰 > kakan\ ;
+香具 > kougu\ ;
+須臾 > shuyu\ ;
+朝湯 > asayu\ ;
+五書 > gosho\ ;
+五更 > gokou\ ;
+奔馬 > honba\ ;
+聖恩 > seion\ ;
+嫌気 > kenki\ ;
+委託 > itaku\ ;
+不眠 > fumin\ ;
+亜族 > azoku\ ;
+王法 > ouhou\ ;
+仁慈 > jinji\ ;
+仮寓 > kaguu\ ;
+仏徒 > butto\ ;
+理工 > rikou\ ;
+板戸 > itado\ ;
+人我 > jinga\ ;
+家例 > karei\ ;
+貧打 > hinda\ ;
+余人 > yonin\ ;
+他店 > taten\ ;
+大黄 > daiou\ ;
+上着 > uwagi\ ;
+大麻 > taima\ ;
+本気 > honki\ ;
+仮定 > katei\ ;
+他年 > tanen\ ;
+老樹 > rouju\ ;
+付帯 > futai\ ;
+胎児 > taiji\ ;
+是認 > zenin\ ;
+負担 > futan\ ;
+家伝 > kaden\ ;
+暗線 > ansen\ ;
+上目 > uwame\ ;
+栄冠 > eikan\ ;
+低価 > teika\ ;
+王水 > ousui\ ;
+今後 > kongo\ ;
+聖徒 > seito\ ;
+世界 > sekai\ ;
+栄典 > eiten\ ;
+孟女 > moujo\ ;
+飛来 > hirai\ ;
+家令 > karei\ ;
+二曹 > nisou\ ;
+二更 > nikou\ ;
+宴会 > enkai\ ;
+青雲 > seiun\ ;
+馬上 > bajou\ ;
+上皮 > jouhi\ ;
+一矢 > isshi\ ;
+余世 > yosei\ ;
+馬丁 > batei\ ;
+家什 > kajuu\ ;
+栄光 > eikou\ ;
+家人 > kenin\ ;
+警衛 > keiei\ ;
+孝女 > koujo\ ;
+仁恕 > jinjo\ ;
+孟夏 > mouka\ ;
+斑鳩 > ikaru\ ;
+風波 > fuuha\ ;
+来援 > raien\ ;
+今度 > kondo\ ;
+下疳 > gekan\ ;
+会員 > kaiin\ ;
+乾枯 > kanko\ ;
+孤城 > kojou\ ;
+音色 > neiro\ ;
+乾果 > kanka\ ;
+而来 > jirai\ ;
+杜撰 > zusan\ ;
+譎詐 > kissa\ ;
+上疏 > jouso\ ;
+下番 > kaban\ ;
+不用 > fuyou\ ;
+考案 > kouan\ ;
+下界 > gekai\ ;
+下男 > genan\ ;
+下田 > geden\ ;
+低下 > teika\ ;
+理容 > riyou\ ;
+暖簾 > noren\ ;
+貴店 > kiten\ ;
+乾期 > kanki\ ;
+考査 > kousa\ ;
+他山 > tazan\ ;
+伝受 > denju\ ;
+主演 > shuen\ ;
+謝辞 > shaji\ ;
+予断 > yodan\ ;
+子女 > shijo\ ;
+人後 > jingo\ ;
+王権 > ouken\ ;
+飛散 > hisan\ ;
+暗算 > anzan\ ;
+胎仔 > taiji\ ;
+仮声 > kasei\ ;
+嬌態 > shina\ ;
+罪科 > zaika\ ;
+肥厚 > hikou\ ;
+負性 > fusei\ ;
+互換 > gokan\ ;
+美男 > binan\ ;
+露顕 > roken\ ;
+美田 > biden\ ;
+伶俐 > reiri\ ;
+天魔 > tenma\ ;
+定価 > teika\ ;
+露頭 > rotou\ ;
+讚美 > sanbi\ ;
+一生 > issei\ ;
+安全 > anzen\ ;
+五指 > goshi\ ;
+育児 > ikuji\ ;
+罌粟 > keshi\ ;
+宣下 > senge\ ;
+仏家 > bukke\ ;
+特記 > tokki\ ;
+貨幣 > kahei\ ;
+官位 > kan''i\ ;
+一環 > ikkan\ ;
+既遂 > kisui\ ;
+孵卵 > furan\ ;
+完備 > kanbi\ ;
+題画 > daiga\ ;
+好運 > kouun\ ;
+聖寿 > seiju\ ;
+飛揚 > hiyou\ ;
+球威 > kyuui\ ;
+謹話 > kinwa\ ;
+不犯 > fubon\ ;
+今宵 > koyoi\ ;
+守備 > shubi\ ;
+五戒 > gokai\ ;
+猜疑 > saigi\ ;
+官事 > kanji\ ;
+杞憂 > kiyuu\ ;
+今季 > konki\ ;
+理外 > rigai\ ;
+面部 > menbu\ ;
+明記 > meiki\ ;
+他姓 > tasei\ ;
+女郎 > jorou\ ;
+天馬 > tenba\ ;
+財布 > saifu\ ;
+未来 > mirai\ ;
+不燃 > funen\ ;
+一献 > ikkon\ ;
+五感 > gokan\ ;
+施錠 > sejou\ ;
+安住 > anjuu\ ;
+耳底 > jitei\ ;
+非道 > hidou\ ;
+五情 > gojou\ ;
+霧雰 > mufun\ ;
+板屋 > itaya\ ;
+一犬 > ikken\ ;
+五悪 > goaku\ ;
+学区 > gakku\ ;
+人寿 > jinju\ ;
+有機 > yuuki\ ;
+讃美 > sanbi\ ;
+与点 > yoten\ ;
+一版 > ippan\ ;
+人家 > jinka\ ;
+頭皮 > touhi\ ;
+未明 > mimei\ ;
+互恵 > gokei\ ;
+事態 > jitai\ ;
+果報 > kahou\ ;
+面輪 > omowa\ ;
+貧富 > hinpu\ ;
+現場 > genba\ ;
+貧家 > hinka\ ;
+養家 > youka\ ;
+課題 > kadai\ ;
+類火 > ruika\ ;
+存否 > zonpi\ ;
+交差 > kousa\ ;
+板子 > itago\ ;
+奠都 > tento\ ;
+事情 > jijou\ ;
+貴姉 > kishi\ ;
+予感 > yokan\ ;
+聖夜 > seiya\ ;
+今夏 > konka\ ;
+字号 > jigou\ ;
+予想 > yosou\ ;
+五彩 > gosai\ ;
+任務 > ninmu\ ;
+方里 > houri\ ;
+王政 > ousei\ ;
+季刊 > kikan\ ;
+架台 > kadai\ ;
+美点 > biten\ ;
+二念 > ninen\ ;
+講話 > kouwa\ ;
+一点 > itten\ ;
+賛否 > sanpi\ ;
+大雨 > ooame\ ;
+夕餉 > yuuge\ ;
+太陰 > taiin\ ;
+朝日 > asahi\ ;
+代員 > daiin\ ;
+上演 > jouen\ ;
+雲高 > unkou\ ;
+五常 > gojou\ ;
+文雅 > bunga\ ;
+交尾 > koubi\ ;
+不満 > fuman\ ;
+贈与 > zouyo\ ;
+乱打 > randa\ ;
+外題 > gedai\ ;
+牡蠣 > borei\ ;
+奮起 > funki\ ;
+人夫 > ninpu\ ;
+耶嬢 > yajou\ ;
+互市 > goshi\ ;
+養女 > youjo\ ;
+妄語 > mougo\ ;
+貞婦 > teifu\ ;
+義民 > gimin\ ;
+多面 > tamen\ ;
+耳孔 > jikou\ ;
+語類 > gorui\ ;
+方途 > houto\ ;
+仏器 > bukki\ ;
+交宜 > kougi\ ;
+日課 > nikka\ ;
+聯句 > renku\ ;
+語頭 > gotou\ ;
+亜属 > azoku\ ;
+有期 > yuuki\ ;
+賛助 > sanjo\ ;
+語順 > gojun\ ;
+主査 > shusa\ ;
+季候 > kikou\ ;
+多難 > tanan\ ;
+字典 > jiten\ ;
+貴地 > kichi\ ;
+代印 > daiin\ ;
+義歯 > gishi\ ;
+好誼 > kougi\ ;
+不浄 > fujou\ ;
+日記 > nikki\ ;
+以北 > ihoku\ ;
+子分 > kobun\ ;
+猛火 > mouka\ ;
+外需 > gaiju\ ;
+学位 > gakui\ ;
+本手 > honte\ ;
+来季 > raiki\ ;
+貞女 > teijo\ ;
+音程 > ontei\ ;
+翻意 > hon''i\ ;
+謀議 > bougi\ ;
+不法 > fuhou\ ;
+美港 > bikou\ ;
+代務 > daimu\ ;
+不治 > fuchi\ ;
+羅漢 > rakan\ ;
+餬口 > kokou\ ;
+罹災 > risai\ ;
+未成 > misei\ ;
+最期 > saigo\ ;
+雪駄 > setta\ ;
+夕陽 > yuuhi\ ;
+夜間 > yakan\ ;
+亡婦 > boufu\ ;
+奇遇 > kiguu\ ;
+書架 > shoka\ ;
+老後 > rougo\ ;
+什器 > juuki\ ;
+旅費 > ryohi\ ;
+井守 > imori\ ;
+青貝 > aogai\ ;
+下水 > gesui\ ;
+五官 > gokan\ ;
+奈辺 > nahen\ ;
+整除 > seijo\ ;
+不毛 > fumou\ ;
+下民 > gemin\ ;
+本意 > hon''i\ ;
+嫌悪 > ken''o\ ;
+旧衣 > kyuui\ ;
+貧土 > hindo\ ;
+既製 > kisei\ ;
+電離 > denri\ ;
+上気 > jouki\ ;
+類比 > ruihi\ ;
+飢寒 > kikan\ ;
+一洗 > issen\ ;
+下殿 > geden\ ;
+不死 > fushi\ ;
+下段 > gedan\ ;
+零露 > reiro\ ;
+不正 > fusei\ ;
+二封 > nifuu\ ;
+雷雲 > raiun\ ;
+字体 > jitai\ ;
+期成 > kisei\ ;
+他動 > tadou\ ;
+類歌 > ruika\ ;
+謁見 > ekken\ ;
+亡夫 > boufu\ ;
+上歯 > uwaba\ ;
+二宮 > niguu\ ;
+斗酒 > toshu\ ;
+他励 > tarei\ ;
+不欄 > furan\ ;
+班員 > hanin\ ;
+諷誦 > fuuju\ ;
+嫌忌 > kengi\ ;
+今古 > kinko\ ;
+諮議 > shigi\ ;
+三次 > sanji\ ;
+一水 > issui\ ;
+仇名 > adana\ ;
+予定 > yotei\ ;
+貴君 > kikun\ ;
+断路 > danro\ ;
+狼煙 > rouen\ ;
+貴名 > kimei\ ;
+貴台 > kidai\ ;
+仮令 > tatoe\ ;
+一段 > ittan\ ;
+女装 > josou\ ;
+牛蒡 > gobou\ ;
+暗然 > anzen\ ;
+一死 > isshi\ ;
+一歳 > issai\ ;
+来場 > raiba\ ;
+課金 > kakin\ ;
+音盤 > onban\ ;
+介助 > kaijo\ ;
+万機 > banki\ ;
+飯場 > hanba\ ;
+羊歯 > shida\ ;
+風情 > fuzei\ ;
+代価 > daika\ ;
+架上 > kajou\ ;
+声音 > seion\ ;
+暗点 > anten\ ;
+狼火 > rouka\ ;
+仕儀 > shigi\ ;
+暖炉 > danro\ ;
+非行 > hikou\ ;
+乾季 > kanki\ ;
+大部 > daibu\ ;
+奉賀 > houga\ ;
+豪家 > gouka\ ;
+時空 > jikuu\ ;
+音痴 > onchi\ ;
+期待 > kitai\ ;
+文部 > monbu\ ;
+井堰 > iseki\ ;
+大過 > taika\ ;
+暗澹 > antan\ ;
+王師 > oushi\ ;
+話題 > wadai\ ;
+事大 > jidai\ ;
+多重 > tajuu\ ;
+話頭 > watou\ ;
+二士 > nishi\ ;
+事変 > jihen\ ;
+晩生 > okute\ ;
+雨間 > amaai\ ;
+妖艶 > youen\ ;
+外野 > gaiya\ ;
+下校 > gekou\ ;
+現価 > genka\ ;
+論議 > rongi\ ;
+負号 > fugou\ ;
+試飲 > shiin\ ;
+読過 > dokka\ ;
+明美 > meibi\ ;
+付会 > fukai\ ;
+貴公 > kikou\ ;
+請負 > ukeoi\ ;
+主我 > shuga\ ;
+飽和 > houwa\ ;
+二塁 > nirui\ ;
+誤配 > gohai\ ;
+貴兄 > kikei\ ;
+奇警 > kikei\ ;
+離間 > rikan\ ;
+翻字 > honji\ ;
+飛報 > hihou\ ;
+貴僧 > kisou\ ;
+繋辞 > keiji\ ;
+日華 > nikka\ ;
+予報 > yohou\ ;
+他人 > tanin\ ;
+雄飛 > yuuhi\ ;
+外部 > gaibu\ ;
+論語 > rongo\ ;
+曜日 > youbi\ ;
+老婦 > roufu\ ;
+外郎 > uirou\ ;
+青蝿 > aobae\ ;
+罨法 > anpou\ ;
+暗渠 > ankyo\ ;
+老婆 > rouba\ ;
+奇談 > kidan\ ;
+財務 > zaimu\ ;
+下書 > gesho\ ;
+亭午 > teigo\ ;
+施行 > sekou\ ;
+一校 > ikkou\ ;
+最愛 > saiai\ ;
+曖昧 > aimai\ ;
+早苗 > sanae\ ;
+万朶 > banda\ ;
+本家 > honke\ ;
+外道 > gedou\ ;
+媚態 > bitai\ ;
+時短 > jitan\ ;
+暗涙 > anrui\ ;
+有心 > ushin\ ;
+現世 > genze\ ;
+二回 > nikai\ ;
+現下 > genka\ ;
+暢気 > nonki\ ;
+老妓 > rougi\ ;
+未定 > mitei\ ;
+耕土 > koudo\ ;
+本字 > honji\ ;
+不易 > fueki\ ;
+交叉 > kousa\ ;
+未完 > mikan\ ;
+奇計 > kikei\ ;
+不明 > fumei\ ;
+貼付 > tenpu\ ;
+末季 > makki\ ;
+老女 > roujo\ ;
+主恩 > shuon\ ;
+一杯 > ippai\ ;
+美本 > bihon\ ;
+三時 > sanji\ ;
+上映 > jouei\ ;
+奇観 > kikan\ ;
+王孫 > ouson\ ;
+下旬 > gejun\ ;
+不断 > fudan\ ;
+一本 > ippon\ ;
+不斉 > fusei\ ;
+不文 > fubun\ ;
+材器 > zaiki\ ;
+下方 > kahou\ ;
+不整 > fusei\ ;
+不敬 > fukei\ ;
+三日 > mikka\ ;
+一曹 > issou\ ;
+一書 > issho\ ;
+時相 > jisou\ ;
+一更 > ikkou\ ;
+始祖 > shiso\ ;
+不敗 > fuhai\ ;
+不敏 > fubin\ ;
+天賦 > tenpu\ ;
+豎子 > jushi\ ;
+豊富 > houfu\ ;
+美景 > bikei\ ;
+露見 > roken\ ;
+義挙 > gikyo\ ;
+下放 > kahou\ ;
+談話 > danwa\ ;
+最後 > saigo\ ;
+貴人 > kijin\ ;
+敬遠 > keien\ ;
+未婚 > mikon\ ;
+朝寝 > asane\ ;
+貸与 > taiyo\ ;
+亘古 > kouko\ ;
+暖気 > nonki\ ;
+乾固 > kanko\ ;
+不撓 > futou\ ;
+綺麗 > kirei\ ;
+負債 > fusai\ ;
+乙子 > otogo\ ;
+婚期 > konki\ ;
+大豆 > daizu\ ;
+講義 > kougi\ ;
+雨量 > uryou\ ;
+一旦 > ittan\ ;
+奇行 > kikou\ ;
+人位 > jin''i\ ;
+義手 > gishu\ ;
+美文 > bibun\ ;
+一方 > ippou\ ;
+暑気 > shoki\ ;
+一斤 > ikkin\ ;
+義戦 > gisen\ ;
+一斑 > ippan\ ;
+一斉 > issei\ ;
+誹謗 > hibou\ ;
+旗艦 > kikan\ ;
+緋鯉 > higoi\ ;
+一敗 > ippai\ ;
+羈旅 > kiryo\ ;
+五十 > gojuu\ ;
+義憤 > gifun\ ;
+二君 > nikun\ ;
+世才 > sesai\ ;
+貫主 > kanju\ ;
+二号 > nigou\ ;
+最左 > saisa\ ;
+未墾 > mikon\ ;
+亡児 > bouji\ ;
+書庫 > shoko\ ;
+本場 > honba\ ;
+電路 > denro\ ;
+外貨 > gaika\ ;
+乙女 > otome\ ;
+文語 > bungo\ ;
+世態 > setai\ ;
+玩味 > ganmi\ ;
+顧慮 > koryo\ ;
+誘起 > yuuki\ ;
+不才 > fusai\ ;
+夜警 > yakei\ ;
+隠顕 > inken\ ;
+不戦 > fusen\ ;
+王城 > oujou\ ;
+一掃 > issou\ ;
+上手 > jouzu\ ;
+本土 > hondo\ ;
+世情 > sejou\ ;
+上戸 > jougo\ ;
+美挙 > bikyo\ ;
+多謝 > tasha\ ;
+不憫 > fubin\ ;
+事前 > jizen\ ;
+一挙 > ikkyo\ ;
+離農 > rinou\ ;
+万戸 > banko\ ;
+一指 > isshi\ ;
+音源 > ongen\ ;
+不慮 > furyo\ ;
+耳介 > jikai\ ;
+二分 > nibun\ ;
+暫時 > zanji\ ;
+明示 > meiji\ ;
+壮途 > souto\ ;
+主家 > shuka\ ;
+隠面 > inmen\ ;
+交付 > koufu\ ;
+訴願 > sogan\ ;
+不愍 > fubin\ ;
+義弟 > gitei\ ;
+父老 > furou\ ;
+率土 > sotto\ ;
+交互 > kougo\ ;
+誤認 > gonin\ ;
+雪踏 > setta\ ;
+天衣 > ten''i\ ;
+面罵 > menba\ ;
+一才 > issai\ ;
+事典 > jiten\ ;
+外語 > gaigo\ ;
+多言 > tagen\ ;
+一戦 > issen\ ;
+下情 > kajou\ ;
+五倫 > gorin\ ;
+耕具 > kougu\ ;
+五倍 > gobai\ ;
+順次 > junji\ ;
+犠牲 > gisei\ ;
+誤解 > gokai\ ;
+誣言 > fugen\ ;
+書家 > shoka\ ;
+願意 > gan''i\ ;
+語誌 > goshi\ ;
+詭道 > kidou\ ;
+主婦 > shufu\ ;
+景気 > keiki\ ;
+不快 > fukai\ ;
+風土 > fuudo\ ;
+中尉 > chuui\ ;
+難路 > nanro\ ;
+燃費 > nenpi\ ;
+美感 > bikan\ ;
+有夫 > yuufu\ ;
+五体 > gotai\ ;
+老化 > rouka\ ;
+有夏 > yuuka\ ;
+嫌味 > iyami\ ;
+一意 > ichii\ ;
+普段 > fudan\ ;
+二倍 > nibai\ ;
+讚歌 > sanka\ ;
+下御 > gegyo\ ;
+玩具 > gangu\ ;
+詭辯 > kiben\ ;
+不当 > futou\ ;
+奥義 > okugi\ ;
+電話 > denwa\ ;
+世帯 > setai\ ;
+時点 > jiten\ ;
+敬語 > keigo\ ;
+夜行 > yakou\ ;
+猛打 > mouda\ ;
+需要 > juyou\ ;
+大蛇 > daija\ ;
+下弦 > kagen\ ;
+朱印 > shuin\ ;
+事例 > jirei\ ;
+外被 > gaihi\ ;
+事体 > jitai\ ;
+最多 > saita\ ;
+特異 > tokui\ ;
+不幸 > fukou\ ;
+風喩 > fuuyu\ ;
+不平 > fuhei\ ;
+顕微 > kenbi\ ;
+女系 > jokei\ ;
+谷地 > yachi\ ;
+上座 > jouza\ ;
+縁辺 > enpen\ ;
+雄途 > yuuto\ ;
+事件 > jiken\ ;
+三度 > sando\ ;
+三府 > sanpu\ ;
+支部 > shibu\ ;
+美形 > bikei\ ;
+媾和 > kouwa\ ;
+父系 > fukei\ ;
+乗員 > jouin\ ;
+予令 > yorei\ ;
+支那 > shina\ ;
+下巻 > gekan\ ;
+二乗 > nijou\ ;
+上布 > joufu\ ;
+老儒 > rouju\ ;
+本務 > honmu\ ;
+二世 > nisei\ ;
+二三 > nisan\ ;
+譲渡 > jouto\ ;
+風味 > fuumi\ ;
+義子 > gishi\ ;
+九十 > kujuu\ ;
+罹患 > rikan\ ;
+未到 > mitou\ ;
+護法 > gohou\ ;
+而今 > jikon\ ;
+豚児 > tonji\ ;
+一帯 > ittai\ ;
+讃歌 > sanka\ ;
+旺盛 > ousei\ ;
+未刊 > mikan\ ;
+難語 > nango\ ;
+故買 > kobai\ ;
+雑費 > zappi\ ;
+王制 > ousei\ ;
+主因 > shuin\ ;
+朱儒 > shuju\ ;
+雑貨 > zakka\ ;
+奇聞 > kibun\ ;
+不尽 > fujin\ ;
+下山 > gezan\ ;
+敗訴 > haiso\ ;
+下層 > kasou\ ;
+声誉 > seiyo\ ;
+雅趣 > gashu\ ;
+上屋 > uwaya\ ;
+王冠 > oukan\ ;
+風化 > fuuka\ ;
+壮語 > sougo\ ;
+乗務 > joumu\ ;
+暴徒 > bouto\ ;
+王公 > oukou\ ;
+義姉 > gishi\ ;
+不宣 > fusen\ ;
+義妹 > gimai\ ;
+王党 > outou\ ;
+不定 > futei\ ;
+三尉 > san''i\ ;
+険阻 > kenso\ ;
+不孝 > fukou\ ;
+万寿 > banju\ ;
+詮議 > sengi\ ;
+類字 > ruiji\ ;
+降魔 > gouma\ ;
+天花 > tenka\ ;
+音栓 > onsen\ ;
+義士 > gishi\ ;
+一層 > issou\ ;
+韻書 > insho\ ;
+施米 > semai\ ;
+詞賦 > shifu\ ;
+期内 > kinai\ ;
+既知 > kichi\ ;
+譲歩 > jouho\ ;
+詭謀 > kibou\ ;
+文苑 > bunen\ ;
+静穏 > seion\ ;
+机上 > kijou\ ;
+陰険 > inken\ ;
+一尉 > ichii\ ;
+一封 > ippuu\ ;
+美容 > biyou\ ;
+晩期 > banki\ ;
+繁華 > hanka\ ;
+頻度 > hindo\ ;
+談義 > dangi\ ;
+隠遁 > inton\ ;
+非礼 > hirei\ ;
+本位 > hon''i\ ;
+一定 > ittei\ ;
+王侯 > oukou\ ;
+頓挫 > tonza\ ;
+丁字 > teiji\ ;
+雑記 > zakki\ ;
+不姙 > funin\ ;
+隠退 > intai\ ;
+靱皮 > jinpi\ ;
+風儀 > fuugi\ ;
+詩語 > shigo\ ;
+詭計 > kikei\ ;
+除霜 > josou\ ;
+威服 > ifuku\ ;
+除霊 > jorei\ ;
+不妊 > funin\ ;
+塩類 > enrui\ ;
+陰門 > inmon\ ;
+旧痾 > kyuua\ ;
+韻文 > inbun\ ;
+縁談 > endan\ ;
+靭皮 > jinpi\ ;
+最古 > saiko\ ;
+繁茂 > hanmo\ ;
+多芸 > tagei\ ;
+除隊 > jotai\ ;
+婚家 > konka\ ;
+不変 > fuhen\ ;
+題字 > daiji\ ;
+三女 > sanjo\ ;
+外苑 > gaien\ ;
+末世 > masse\ ;
+有利 > yuuri\ ;
+下士 > kashi\ ;
+三夏 > sanka\ ;
+牡牛 > oushi\ ;
+万夫 > banpu\ ;
+主務 > shumu\ ;
+版画 > hanga\ ;
+諭示 > yushi\ ;
+電荷 > denka\ ;
+雅言 > gagen\ ;
+不堪 > fukan\ ;
+暗影 > an''ei\ ;
+青磁 > seiji\ ;
+無風 > mufuu\ ;
+面皮 > menpi\ ;
+頭巾 > zukin\ ;
+大義 > taigi\ ;
+無類 > murui\ ;
+美大 > bidai\ ;
+線路 > senro\ ;
+無題 > mudai\ ;
+無頼 > burai\ ;
+試補 > shiho\ ;
+頑愚 > gangu\ ;
+一天 > itten\ ;
+美声 > bisei\ ;
+多能 > tanou\ ;
+下城 > gejou\ ;
+是正 > zesei\ ;
+一変 > ippen\ ;
+罷官 > hikan\ ;
+散華 > sange\ ;
+一士 > isshi\ ;
+下垂 > kasui\ ;
+夏至 > geshi\ ;
+総身 > soumi\ ;
+不在 > fuzai\ ;
+中医 > chuui\ ;
+誤聞 > gobun\ ;
+一報 > ippou\ ;
+上図 > jouzu\ ;
+面画 > menga\ ;
+煙道 > endou\ ;
+女生 > josei\ ;
+無電 > muden\ ;
+無難 > bunan\ ;
+外耳 > gaiji\ ;
+非番 > hiban\ ;
+顧問 > komon\ ;
+有価 > yuuka\ ;
+有余 > yuuyo\ ;
+解離 > kairi\ ;
+無限 > mugen\ ;
+解雇 > kaiko\ ;
+不善 > fuzen\ ;
+雪花 > sekka\ ;
+曠古 > kouko\ ;
+解除 > kaijo\ ;
+不問 > fumon\ ;
+一回 > ikkai\ ;
+附随 > fuzui\ ;
+繊維 > sen''i\ ;
+有事 > yuuji\ ;
+下問 > kamon\ ;
+明治 > meiji\ ;
+丙午 > heigo\ ;
+義勇 > giyuu\ ;
+頒布 > hanpu\ ;
+論破 > ronpa\ ;
+罵声 > basei\ ;
+下品 > gehin\ ;
+防音 > bouon\ ;
+月下 > gekka\ ;
+記載 > kisai\ ;
+訓辞 > kunji\ ;
+夢精 > musei\ ;
+下命 > kamei\ ;
+主事 > shuji\ ;
+外縁 > gaien\ ;
+不同 > fudou\ ;
+音感 > onkan\ ;
+時文 > jibun\ ;
+奇知 > kichi\ ;
+総譜 > soufu\ ;
+下向 > gekou\ ;
+下名 > kamei\ ;
+講演 > kouen\ ;
+不参 > fusan\ ;
+順序 > junjo\ ;
+類句 > ruiku\ ;
+上句 > jouku\ ;
+上古 > jouko\ ;
+最下 > saika\ ;
+隠見 > inken\ ;
+義兵 > gihei\ ;
+三叉 > sansa\ ;
+一品 > ippin\ ;
+義兄 > gikei\ ;
+万古 > banko\ ;
+険路 > kenro\ ;
+始期 > shiki\ ;
+下半 > kahan\ ;
+防除 > boujo\ ;
+不勢 > buzei\ ;
+話芸 > wagei\ ;
+不動 > fudou\ ;
+不労 > furou\ ;
+美名 > bimei\ ;
+塩酸 > ensan\ ;
+大穴 > ooana\ ;
+猪口 > choko\ ;
+露盤 > roban\ ;
+万化 > banka\ ;
+威徳 > itoku\ ;
+一反 > ittan\ ;
+一双 > issou\ ;
+斤目 > kinme\ ;
+牧歌 > bokka\ ;
+下剤 > gezai\ ;
+無銭 > musen\ ;
+場面 > bamen\ ;
+言辞 > genji\ ;
+課税 > kazei\ ;
+課程 > katei\ ;
+無銘 > mumei\ ;
+誤算 > gosan\ ;
+不凡 > fubon\ ;
+爪牙 > souga\ ;
+太祖 > taiso\ ;
+暗夜 > an''ya\ ;
+不凍 > futou\ ;
+天祖 > tenso\ ;
+一半 > ippan\ ;
+一千 > issen\ ;
+妖気 > youki\ ;
+好演 > kouen\ ;
+誤答 > gotou\ ;
+文科 > bunka\ ;
+護憲 > goken\ ;
+多端 > tatan\ ;
+与党 > yotou\ ;
+不全 > fuzen\ ;
+詠草 > eisou\ ;
+不党 > futou\ ;
+雄花 > obana\ ;
+既済 > kisai\ ;
+壮美 > soubi\ ;
+墓誌 > boshi\ ;
+多種 > tashu\ ;
+綺談 > kidan\ ;
+無配 > muhai\ ;
+犯意 > han''i\ ;
+下僧 > gesou\ ;
+義人 > gijin\ ;
+一切 > issai\ ;
+一分 > ippun\ ;
+一刀 > ittou\ ;
+奇瑞 > kizui\ ;
+論理 > ronri\ ;
+大破 > taiha\ ;
+不偏 > fuhen\ ;
+雅致 > gachi\ ;
+不倫 > furin\ ;
+話者 > washa\ ;
+署員 > shoin\ ;
+講武 > koubu\ ;
+日波 > nippo\ ;
+世代 > sedai\ ;
+一再 > issai\ ;
+世人 > sejin\ ;
+故老 > korou\ ;
+猿人 > enjin\ ;
+星斗 > seito\ ;
+上値 > uwane\ ;
+一党 > ittou\ ;
+無道 > mudou\ ;
+不便 > fuben\ ;
+討議 > tougi\ ;
+増補 > zouho\ ;
+不例 > furei\ ;
+織目 > orime\ ;
+継起 > keiki\ ;
+訓話 > kunwa\ ;
+無辺 > muhen\ ;
+世上 > sejou\ ;
+与件 > yoken\ ;
+下体 > katai\ ;
+類似 > ruiji\ ;
+隠蔽 > inpei\ ;
+羅典 > raten\ ;
+陰謀 > inbou\ ;
+訓詁 > kunko\ ;
+三佐 > sansa\ ;
+三位 > sanmi\ ;
+娑婆 > shaba\ ;
+不仁 > fujin\ ;
+丈余 > jouyo\ ;
+明暗 > meian\ ;
+妓楼 > girou\ ;
+文目 > ayame\ ;
+好気 > kouki\ ;
+猶予 > yuuyo\ ;
+変移 > hen''i\ ;
+附近 > fukin\ ;
+下人 > genin\ ;
+暴利 > bouri\ ;
+暗喩 > an''yu\ ;
+塑造 > sozou\ ;
+婚儀 > kongi\ ;
+下乗 > gejou\ ;
+擬製 > gisei\ ;
+紙魚 > shimi\ ;
+万事 > banji\ ;
+擬装 > gisou\ ;
+一体 > ittai\ ;
+一位 > ichii\ ;
+諸派 > shoha\ ;
+上下 > jouge\ ;
+夜盗 > yatou\ ;
+三世 > sanze\ ;
+電磁 > denji\ ;
+晴夜 > seiya\ ;
+婦人 > fujin\ ;
+頑固 > ganko\ ;
+時弊 > jihei\ ;
+一件 > ikken\ ;
+美人 > bijin\ ;
+一介 > ikkai\ ;
+罷免 > himen\ ;
+大瓶 > oobin\ ;
+言語 > gengo\ ;
+好機 > kouki\ ;
+故紙 > koshi\ ;
+夷狄 > iteki\ ;
+暗君 > ankun\ ;
+外皮 > gaihi\ ;
+暗合 > angou\ ;
+暗号 > angou\ ;
+護岸 > gogan\ ;
+一世 > issei\ ;
+物故 > bukko\ ;
+天理 > tenri\ ;
+夏眠 > kamin\ ;
+素養 > soyou\ ;
+姐御 > anego\ ;
+夜番 > yoban\ ;
+露点 > roten\ ;
+晩夏 > banka\ ;
+音大 > ondai\ ;
+音声 > onsei\ ;
+文理 > bunri\ ;
+多用 > tayou\ ;
+多産 > tasan\ ;
+大王 > daiou\ ;
+罵倒 > batou\ ;
+素顔 > sugao\ ;
+改組 > kaiso\ ;
+紫雲 > shiun\ ;
+編者 > henja\ ;
+女権 > joken\ ;
+誤用 > goyou\ ;
+姉御 > anego\ ;
+外界 > gekai\ ;
+擁護 > yougo\ ;
+天狗 > tengu\ ;
+父権 > fuken\ ;
+奥歯 > okuba\ ;
+早期 > souki\ ;
+素面 > sumen\ ;
+議定 > gitei\ ;
+天父 > tenpu\ ;
+需用 > juyou\ ;
+縫目 > nuime\ ;
+無謀 > mubou\ ;
+旅次 > ryoji\ ;
+日本 > nihon\ ;
+版木 > hangi\ ;
+靈氣 > reiki\ ;
+無論 > muron\ ;
+非業 > higou\ ;
+填補 > tenpo\ ;
+難破 > nanpa\ ;
+旦暮 > tanbo\ ;
+変異 > hen''i\ ;
+既望 > kibou\ ;
+陛衛 > heiei\ ;
+糸魚 > itoyo\ ;
+雨着 > amagi\ ;
+威圧 > iatsu\ ;
+好期 > kouki\ ;
+姦婦 > kanpu\ ;
+解語 > kaigo\ ;
+整理 > seiri\ ;
+無言 > mugon\ ;
+如是 > nyoze\ ;
+爾来 > jirai\ ;
+片時 > henji\ ;
+綿花 > menka\ ;
+陰蔽 > inpei\ ;
+天為 > ten''i\ ;
+威嚇 > ikaku\ ;
+無視 > mushi\ ;
+数理 > suuri\ ;
+経過 > keika\ ;
+熱砂 > nessa\ ;
+星座 > seiza\ ;
+天火 > tenpi\ ;
+埠頭 > futou\ ;
+猊下 > geika\ ;
+附言 > fugen\ ;
+大火 > taika\ ;
+姦夫 > kanpu\ ;
+順化 > junka\ ;
+防護 > bougo\ ;
+非望 > hibou\ ;
+頭上 > zujou\ ;
+議士 > gishi\ ;
+時好 > jikou\ ;
+青梅 > aoume\ ;
+塗装 > tosou\ ;
+詩碑 > shihi\ ;
+故知 > kochi\ ;
+隠線 > insen\ ;
+契機 > keiki\ ;
+視野 > shiya\ ;
+議場 > gijou\ ;
+摸造 > mozou\ ;
+陰茎 > inkei\ ;
+斧正 > fusei\ ;
+青果 > seika\ ;
+燠火 > okibi\ ;
+音名 > onmei\ ;
+明度 > meido\ ;
+妥当 > datou\ ;
+時報 > jihou\ ;
+経路 > keiro\ ;
+斯様 > kayou\ ;
+塩蔵 > enzou\ ;
+映射 > eisha\ ;
+頒価 > hanka\ ;
+諺文 > onmon\ ;
+墨絵 > sumie\ ;
+細部 > saibu\ ;
+練磨 > renma\ ;
+除草 > josou\ ;
+譏嫌 > kigen\ ;
+奥旨 > oushi\ ;
+基金 > kikin\ ;
+経費 > keihi\ ;
+記者 > kisha\ ;
+謝恩 > shaon\ ;
+昆布 > konbu\ ;
+雲煙 > un''en\ ;
+天河 > tenga\ ;
+諭旨 > yushi\ ;
+燐火 > rinka\ ;
+好打 > kouda\ ;
+既成 > kisei\ ;
+防衛 > bouei\ ;
+大河 > taiga\ ;
+雷火 > raika\ ;
+緇素 > shiso\ ;
+網羅 > moura\ ;
+天気 > tenki\ ;
+順位 > jun''i\ ;
+訓義 > kungi\ ;
+昨夜 > yuube\ ;
+大気 > taiki\ ;
+無蓋 > mugai\ ;
+語源 > gogen\ ;
+覇道 > hadou\ ;
+普偏 > fuhen\ ;
+敢為 > kan''i\ ;
+陰翳 > in''ei\ ;
+旗手 > kishu\ ;
+西部 > seibu\ ;
+雇用 > koyou\ ;
+音像 > onzou\ ;
+妻女 > saijo\ ;
+操舵 > souda\ ;
+大歌 > oouta\ ;
+講座 > kouza\ ;
+文殊 > monju\ ;
+星夜 > seiya\ ;
+無菌 > mukin\ ;
+文武 > bunbu\ ;
+非才 > hisai\ ;
+奇書 > kisho\ ;
+夫権 > fuken\ ;
+天機 > tenki\ ;
+霊気 > reiki\ ;
+明媚 > meibi\ ;
+無茶 > mucha\ ;
+音便 > onbin\ ;
+牢屋 > rouya\ ;
+奇智 > kichi\ ;
+多毛 > tamou\ ;
+威信 > ishin\ ;
+語法 > gohou\ ;
+大樹 > taiju\ ;
+外気 > gaiki\ ;
+無芸 > mugei\ ;
+大様 > ooyou\ ;
+奥手 > okute\ ;
+綱紀 > kouki\ ;
+製麻 > seima\ ;
+総社 > souja\ ;
+電波 > denpa\ ;
+時半 > jihan\ ;
+警句 > keiku\ ;
+非情 > hijou\ ;
+請暇 > seika\ ;
+時化 > shike\ ;
+女性 > josei\ ;
+雨滴 > uteki\ ;
+奇数 > kisuu\ ;
+雄猫 > oneko\ ;
+時勢 > jisei\ ;
+斧斤 > fukin\ ;
+雲海 > unkai\ ;
+雑煮 > zouni\ ;
+時効 > jikou\ ;
+星図 > seizu\ ;
+父性 > fusei\ ;
+要路 > youro\ ;
+女御 > nyogo\ ;
+電気 > denki\ ;
+斡旋 > assen\ ;
+雲泥 > undei\ ;
+警務 > keimu\ ;
+時制 > jisei\ ;
+雄牛 > oushi\ ;
+時分 > jibun\ ;
+無能 > munou\ ;
+多様 > tayou\ ;
+犬儒 > kenju\ ;
+火難 > kanan\ ;
+数次 > suuji\ ;
+妖婦 > youfu\ ;
+敵機 > tekki\ ;
+雲水 > unsui\ ;
+妖婆 > youba\ ;
+旗幟 > kishi\ ;
+青息 > aoiki\ ;
+閑雅 > kanga\ ;
+大枝 > ooeda\ ;
+売淫 > baiin\ ;
+霧散 > musan\ ;
+女帝 > jotei\ ;
+雨注 > uchuu\ ;
+放火 > houka\ ;
+奉持 > houji\ ;
+女工 > jokou\ ;
+電機 > denki\ ;
+線画 > senga\ ;
+非常 > hijou\ ;
+妖女 > youjo\ ;
+新手 > arate\ ;
+静座 > seiza\ ;
+無罪 > muzai\ ;
+散歩 > sanpo\ ;
+雨氷 > uhyou\ ;
+文書 > monjo\ ;
+開院 > kaiin\ ;
+妊婦 > ninpu\ ;
+時候 > jikou\ ;
+閉院 > heiin\ ;
+既定 > kitei\ ;
+警備 > keibi\ ;
+奇才 > kisai\ ;
+奇手 > kishu\ ;
+天日 > tenpi\ ;
+大映 > daiei\ ;
+夜来 > yarai\ ;
+好宜 > kougi\ ;
+紛議 > fungi\ ;
+除算 > jozan\ ;
+既存 > kison\ ;
+議会 > gikai\ ;
+離水 > risui\ ;
+訓示 > kunji\ ;
+試演 > shien\ ;
+撫育 > buiku\ ;
+防腐 > boufu\ ;
+語根 > gokon\ ;
+撰者 > senja\ ;
+熱波 > neppa\ ;
+多望 > tabou\ ;
+陶磁 > touji\ ;
+女尊 > joson\ ;
+奇態 > kitai\ ;
+時代 > jidai\ ;
+譲与 > jouyo\ ;
+無線 > musen\ ;
+牢固 > rouko\ ;
+夜景 > yakei\ ;
+摘記 > tekki\ ;
+既婚 > kikon\ ;
+時人 > jijin\ ;
+雄滝 > odaki\ ;
+牙城 > gajou\ ;
+奇想 > kisou\ ;
+士気 > shiki\ ;
+話法 > wahou\ ;
+炉辺 > rohen\ ;
+女子 > joshi\ ;
+煩瑣 > hansa\ ;
+総理 > souri\ ;
+時世 > jisei\ ;
+父子 > fushi\ ;
+無糖 > mutou\ ;
+陽皮 > youhi\ ;
+施工 > sekou\ ;
+大損 > oozon\ ;
+解組 > kaiso\ ;
+奇怪 > kikai\ ;
+諸家 > shoka\ ;
+特化 > tokka\ ;
+露悪 > roaku\ ;
+犀利 > sairi\ ;
+多数 > tasuu\ ;
+大揚 > ooyou\ ;
+無粋 > busui\ ;
+網目 > amime\ ;
+天授 > tenju\ ;
+映写 > eisha\ ;
+夕日 > yuuhi\ ;
+女婿 > josei\ ;
+好奇 > kouki\ ;
+外方 > soppo\ ;
+政治 > seiji\ ;
+粗餐 > sosan\ ;
+粗飯 > sohan\ ;
+閉鎖 > heisa\ ;
+素行 > sokou\ ;
+絹絵 > kinue\ ;
+譜代 > fudai\ ;
+訴状 > sojou\ ;
+奇形 > kikei\ ;
+塩税 > enzei\ ;
+映像 > eizou\ ;
+絵絹 > eginu\ ;
+雑歌 > zouka\ ;
+隠然 > inzen\ ;
+奇弁 > kiben\ ;
+語数 > gosuu\ ;
+既報 > kihou\ ;
+陽画 > youga\ ;
+火酒 > kashu\ ;
+紫蘇 > shiso\ ;
+製靴 > seika\ ;
+零時 > reiji\ ;
+映倫 > eirin\ ;
+詩歌 > shika\ ;
+精鋭 > seiei\ ;
+女声 > josei\ ;
+放歌 > houka\ ;
+附箋 > fusen\ ;
+系譜 > keifu\ ;
+雲景 > unkei\ ;
+誉望 > yobou\ ;
+版図 > hanto\ ;
+露店 > roten\ ;
+奇巌 > kigan\ ;
+姉上 > aneue\ ;
+斜影 > shaei\ ;
+無稽 > mukei\ ;
+襲衣 > shuui\ ;
+間遠 > madoo\ ;
+露帝 > rotei\ ;
+雄武 > yuubu\ ;
+無税 > muzei\ ;
+天意 > ten''i\ ;
+詠歎 > eitan\ ;
+静夜 > seiya\ ;
+講和 > kouwa\ ;
+大愚 > taigu\ ;
+無私 > mushi\ ;
+煉瓦 > renga\ ;
+雲散 > unsan\ ;
+離村 > rison\ ;
+夜戦 > yasen\ ;
+紀要 > kiyou\ ;
+煤煙 > baien\ ;
+絵筆 > efude\ ;
+多才 > tasai\ ;
+文意 > bun''i\ ;
+襤褸 > ranru\ ;
+大悟 > daigo\ ;
+特価 > tokka\ ;
+奇岩 > kigan\ ;
+無礼 > burei\ ;
+繻子 > shusu\ ;
+開運 > kaiun\ ;
+大恩 > daion\ ;
+該案 > gaian\ ;
+夢想 > musou\ ;
+襦袢 > juban\ ;
+難易 > nan''i\ ;
+旨味 > umami\ ;
+話柄 > wahei\ ;
+奉安 > houan\ ;
+堕胎 > datai\ ;
+紀行 > kikou\ ;
+放棄 > houki\ ;
+多感 > takan\ ;
+播種 > hashu\ ;
+課役 > kaeki\ ;
+院生 > insei\ ;
+補題 > hodai\ ;
+多情 > tajou\ ;
+無知 > muchi\ ;
+離散 > risan\ ;
+試案 > shian\ ;
+天府 > tenpu\ ;
+多恨 > takon\ ;
+大度 > taido\ ;
+物価 > bukka\ ;
+語感 > gokan\ ;
+敵意 > tekii\ ;
+好古 > kouko\ ;
+文庫 > bunko\ ;
+多忙 > tabou\ ;
+見舞 > mimai\ ;
+煖炉 > danro\ ;
+堕罪 > dazai\ ;
+塩田 > enden\ ;
+故智 > kochi\ ;
+無益 > mueki\ ;
+陽炎 > youen\ ;
+大差 > taisa\ ;
+繊度 > sendo\ ;
+大工 > daiku\ ;
+諷喩 > fuuyu\ ;
+多彩 > tasai\ ;
+閉路 > heiro\ ;
+多形 > takei\ ;
+敬慕 > keibo\ ;
+堆肥 > taihi\ ;
+日加 > nikka\ ;
+援軍 > engun\ ;
+粗鋼 > sokou\ ;
+敬愛 > keiai\ ;
+多弁 > taben\ ;
+声援 > seien\ ;
+熨斗 > noshi\ ;
+非命 > himei\ ;
+謀叛 > muhon\ ;
+女史 > joshi\ ;
+謀反 > muhon\ ;
+粗銅 > sodou\ ;
+褒辞 > houji\ ;
+摩耗 > mamou\ ;
+粗鉱 > sokou\ ;
+父君 > fukun\ ;
+放映 > houei\ ;
+外延 > gaien\ ;
+多幸 > takou\ ;
+多年 > tanen\ ;
+紅蓮 > guren\ ;
+雁木 > gangi\ ;
+奇声 > kisei\ ;
+語形 > gokei\ ;
+奄奄 > en''en\ ;
+裏面 > rimen\ ;
+既刊 > kikan\ ;
+方図 > houzu\ ;
+雨戸 > amado\ ;
+露天 > roten\ ;
+補間 > hokan\ ;
+語弊 > gohei\ ;
+牢乎 > rouko\ ;
+無用 > muyou\ ;
+無産 > musan\ ;
+牡丹 > botan\ ;
+大尾 > taibi\ ;
+天寿 > tenju\ ;
+語幹 > gokan\ ;
+粗酒 > soshu\ ;
+控除 > koujo\ ;
+売手 > urite\ ;
+増派 > zouha\ ;
+誘引 > yuuin\ ;
+大家 > taike\ ;
+雅文 > gabun\ ;
+覇者 > hasha\ ;
+斉家 > seika\ ;
+露場 > rojou\ ;
+大安 > daian\ ;
+数度 > suudo\ ;
+大字 > ooaza\ ;
+閑話 > kanwa\ ;
+地頭 > jitou\ ;
+陸湯 > okayu\ ;
+断固 > danko\ ;
+雲影 > un''ei\ ;
+文字 > monji\ ;
+燕巣 > ensou\ ;
+奥印 > okuin\ ;
+夫婦 > meoto\ ;
+多層 > tasou\ ;
+訴権 > soken\ ;
+零度 > reido\ ;
+点者 > tenja\ ;
+絵画 > kaiga\ ;
+隠棲 > insei\ ;
+要義 > yougi\ ;
+非凡 > hibon\ ;
+訪欧 > houou\ ;
+地面 > jimen\ ;
+好個 > kouko\ ;
+女優 > joyuu\ ;
+天威 > ten''i\ ;
+夫妻 > fusai\ ;
+誤射 > gosha\ ;
+父兄 > fukei\ ;
+地雷 > jirai\ ;
+記法 > kihou\ ;
+煖気 > danki\ ;
+隠栖 > insei\ ;
+多孔 > takou\ ;
+外宮 > gekuu\ ;
+煙死 > enshi\ ;
+太夫 > tayuu\ ;
+陽気 > youki\ ;
+基線 > kisen\ ;
+大奥 > oooku\ ;
+排除 > haijo\ ;
+外字 > gaiji\ ;
+散布 > sanpu\ ;
+奇問 > kimon\ ;
+如上 > jojou\ ;
+好事 > kouzu\ ;
+大声 > oogoe\ ;
+課外 > kagai\ ;
+夷国 > ikoku\ ;
+支援 > shien\ ;
+擬毛 > gimou\ ;
+素絹 > soken\ ;
+契印 > keiin\ ;
+難度 > nando\ ;
+規範 > kihan\ ;
+擬死 > gishi\ ;
+数字 > suuji\ ;
+多妻 > tasai\ ;
+斎垣 > igaki\ ;
+要素 > youso\ ;
+旗亭 > kitei\ ;
+支持 > shiji\ ;
+雅懐 > gakai\ ;
+提起 > teiki\ ;
+雲居 > kumoi\ ;
+露命 > romei\ ;
+無灯 > mutou\ ;
+陰毛 > inmou\ ;
+変字 > henji\ ;
+西紀 > seiki\ ;
+織地 > oriji\ ;
+霊夢 > reimu\ ;
+露呈 > rotei\ ;
+多大 > tadai\ ;
+掃除 > souji\ ;
+塗炭 > totan\ ;
+捕鯨 > hogei\ ;
+非人 > hinin\ ;
+多売 > tabai\ ;
+露台 > rodai\ ;
+繁多 > hanta\ ;
+除法 > johou\ ;
+焜炉 > konro\ ;
+方円 > houen\ ;
+諸事 > shoji\ ;
+改悟 > kaigo\ ;
+継泳 > keiei\ ;
+奉加 > houga\ ;
+規程 > kitei\ ;
+離島 > ritou\ ;
+奇効 > kikou\ ;
+詭弁 > kiben\ ;
+隕星 > insei\ ;
+大器 > taiki\ ;
+離岸 > rigan\ ;
+炭素 > tanso\ ;
+誤報 > gohou\ ;
+外場 > gaiba\ ;
+数奇 > suuki\ ;
+離山 > rizan\ ;
+大嘘 > oouso\ ;
+糖菓 > touka\ ;
+数多 > suuta\ ;
+提議 > teigi\ ;
+随時 > zuiji\ ;
+経由 > keiyu\ ;
+火葬 > kasou\ ;
+霊園 > reien\ ;
+政府 > seifu\ ;
+奇兵 > kihei\ ;
+阿漕 > akogi\ ;
+防炎 > bouen\ ;
+斗南 > tonan\ ;
+売子 > uriko\ ;
+電場 > denba\ ;
+外因 > gaiin\ ;
+防火 > bouka\ ;
+提訴 > teiso\ ;
+露光 > rokou\ ;
+夫君 > fukun\ ;
+複衣 > fukui\ ;
+経理 > keiri\ ;
+大呼 > taiko\ ;
+大味 > ooaji\ ;
+施主 > seshu\ ;
+雲壌 > unjou\ ;
+奇偶 > kiguu\ ;
+太古 > taiko\ ;
+無法 > muhou\ ;
+故山 > kozan\ ;
+濃霧 > noumu\ ;
+離婚 > rikon\ ;
+大台 > oodai\ ;
+在野 > zaiya\ ;
+点示 > tenji\ ;
+教委 > kyoui\ ;
+誇大 > kodai\ ;
+火色 > hiiro\ ;
+然様 > sayou\ ;
+衣魚 > shimi\ ;
+誘因 > yuuin\ ;
+粗製 > sosei\ ;
+文句 > monku\ ;
+無水 > musui\ ;
+烽火 > houka\ ;
+精華 > seika\ ;
+奇体 > kitai\ ;
+無毛 > mumou\ ;
+繭価 > kenka\ ;
+電器 > denki\ ;
+図面 > zumen\ ;
+緩徐 > kanjo\ ;
+放屁 > houhi\ ;
+売女 > baita\ ;
+天助 > tenjo\ ;
+米貨 > beika\ ;
+固陋 > korou\ ;
+無残 > muzan\ ;
+開花 > kaika\ ;
+無死 > mushi\ ;
+文化 > bunka\ ;
+奇人 > kijin\ ;
+断乎 > danko\ ;
+増援 > zouen\ ;
+夜叉 > yasha\ ;
+基盤 > kiban\ ;
+太刀 > tachi\ ;
+陰晴 > insei\ ;
+士女 > shijo\ ;
+大判 > ooban\ ;
+素直 > sunao\ ;
+親爺 > oyaji\ ;
+親父 > oyaji\ ;
+課制 > kasei\ ;
+需品 > juhin\ ;
+補講 > hokou\ ;
+難場 > nanba\ ;
+維新 > ishin\ ;
+売場 > uriba\ ;
+夷俗 > izoku\ ;
+回顧 > kaiko\ ;
+夜勤 > yakin\ ;
+大円 > daien\ ;
+計時 > keiji\ ;
+塩梅 > anbai\ ;
+陰文 > inbun\ ;
+院本 > inpon\ ;
+多勢 > tazei\ ;
+隔意 > kakui\ ;
+四顧 > shiko\ ;
+間者 > kanja\ ;
+大儒 > daiju\ ;
+語原 > gogen\ ;
+大儀 > taigi\ ;
+夜前 > yazen\ ;
+補訂 > hotei\ ;
+米語 > beigo\ ;
+阻止 > soshi\ ;
+外務 > gaimu\ ;
+雑多 > zatta\ ;
+夜分 > yabun\ ;
+敗因 > haiin\ ;
+米話 > beiwa\ ;
+坐視 > zashi\ ;
+斉備 > seibi\ ;
+多分 > tabun\ ;
+墓所 > bosho\ ;
+語勢 > gosei\ ;
+誤判 > gohan\ ;
+採譜 > saifu\ ;
+壇家 > danka\ ;
+壮図 > souto\ ;
+図鑑 > zukan\ ;
+夜光 > yakou\ ;
+点画 > tenga\ ;
+除数 > josuu\ ;
+電化 > denka\ ;
+誤写 > gosha\ ;
+控訴 > kouso\ ;
+多元 > tagen\ ;
+天位 > ten''i\ ;
+雲台 > undai\ ;
+西瓜 > suika\ ;
+認否 > ninpi\ ;
+無根 > mukon\ ;
+変化 > henge\ ;
+院政 > insei\ ;
+大佐 > taisa\ ;
+認可 > ninka\ ;
+夫人 > fujin\ ;
+火線 > kasen\ ;
+網戸 > amido\ ;
+精義 > seigi\ ;
+誰何 > suika\ ;
+記憶 > kioku\ ;
+製菓 > seika\ ;
+大事 > daiji\ ;
+濫費 > ranpi\ ;
+天下 > tenka\ ;
+文事 > bunji\ ;
+擬態 > gitai\ ;
+隠居 > inkyo\ ;
+整備 > seibi\ ;
+紫煙 > shien\ ;
+敬具 > keigu\ ;
+粗茶 > socha\ ;
+夜会 > yakai\ ;
+無智 > muchi\ ;
+隣家 > rinka\ ;
+純理 > junri\ ;
+離合 > rigou\ ;
+難句 > nanku\ ;
+糊精 > kosei\ ;
+緞子 > donsu\ ;
+離反 > rihan\ ;
+素片 > sohen\ ;
+煙弾 > endan\ ;
+誤伝 > goden\ ;
+雪加 > sekka\ ;
+糸目 > itome\ ;
+絵柄 > egara\ ;
+記念 > kinen\ ;
+褒美 > houbi\ ;
+雄図 > yuuto\ ;
+災禍 > saika\ ;
+無断 > mudan\ ;
+烈火 > rekka\ ;
+数個 > suuko\ ;
+陰惨 > insan\ ;
+無数 > musuu\ ;
+絵札 > efuda\ ;
+外事 > gaiji\ ;
+数価 > suuka\ ;
+綿布 > menpu\ ;
+蠧魚 > shimi\ ;
+基点 > kiten\ ;
+陰性 > insei\ ;
+電位 > den''i\ ;
+詠嘆 > eitan\ ;
+精粗 > seiso\ ;
+雨具 > amagu\ ;
+変位 > hen''i\ ;
+陰影 > in''ei\ ;
+規準 > kijun\ ;
+総嫁 > souka\ ;
+点火 > tenka\ ;
+離党 > ritou\ ;
+掩蔽 > enpei\ ;
+変事 > henji\ ;
+詩句 > shiku\ ;
+難儀 > nangi\ ;
+絃歌 > genka\ ;
+試合 > shiai\ ;
+隠士 > inshi\ ;
+掩蓋 > engai\ ;
+墳墓 > funbo\ ;
+縁台 > endai\ ;
+雲井 > kumoi\ ;
+衰運 > suiun\ ;
+基準 > kijun\ ;
+零下 > reika\ ;
+雅号 > gagou\ ;
+基源 > kigen\ ;
+詠吟 > eigin\ ;
+土製 > dosei\ ;
+詠史 > eishi\ ;
+煙害 > engai\ ;
+政務 > seimu\ ;
+場末 > basue\ ;
+回避 > kaihi\ ;
+雲上 > unjou\ ;
+改印 > kaiin\ ;
+綾子 > rinzu\ ;
+無才 > musai\ ;
+炬火 > kyoka\ ;
+開祖 > kaiso\ ;
+火砲 > kahou\ ;
+開示 > kaiji\ ;
+売価 > baika\ ;
+米英 > beiei\ ;
+煩多 > hanta\ ;
+声価 > seika\ ;
+隠坊 > onbou\ ;
+綸子 > rinzu\ ;
+隻句 > sekku\ ;
+無慮 > muryo\ ;
+雪下 > sekka\ ;
+堀江 > horie\ ;
+離任 > rinin\ ;
+結果 > kekka\ ;
+雨中 > uchuu\ ;
+衰躯 > suiku\ ;
+紅炎 > kouen\ ;
+綴字 > teiji\ ;
+難事 > nanji\ ;
+地蔵 > jizou\ ;
+無想 > musou\ ;
+無惨 > muzan\ ;
+累次 > ruiji\ ;
+無情 > mujou\ ;
+緩和 > kanwa\ ;
+規正 > kisei\ ;
+詐取 > sashu\ ;
+無恥 > muchi\ ;
+装荷 > souka\ ;
+無性 > musei\ ;
+雅兄 > gakei\ ;
+粗糖 > sotou\ ;
+隠喩 > in''yu\ ;
+無念 > munen\ ;
+回路 > kairo\ ;
+雇傭 > koyou\ ;
+親木 > oyagi\ ;
+雑作 > zousa\ ;
+無形 > mukei\ ;
+限度 > gendo\ ;
+煙塵 > enjin\ ;
+塁打 > ruida\ ;
+故人 > kojin\ ;
+土蔵 > dozou\ ;
+西武 > seibu\ ;
+炎炎 > en''en\ ;
+見様 > miyou\ ;
+故主 > koshu\ ;
+西欧 > seiou\ ;
+覇権 > haken\ ;
+院宣 > inzen\ ;
+粗笨 > sohon\ ;
+紡機 > bouki\ ;
+図解 > zukai\ ;
+在荷 > zaika\ ;
+闘気 > touki\ ;
+地色 > jiiro\ ;
+無帽 > mubou\ ;
+無常 > mujou\ ;
+土葬 > dosou\ ;
+政事 > seiji\ ;
+措置 > sochi\ ;
+墓地 > bochi\ ;
+総員 > souin\ ;
+随喜 > zuiki\ ;
+在英 > zaiei\ ;
+糜爛 > biran\ ;
+総和 > souwa\ ;
+雅人 > gajin\ ;
+場所 > basho\ ;
+街路 > gairo\ ;
+附帯 > futai\ ;
+塗工 > tokou\ ;
+回議 > kaigi\ ;
+随員 > zuiin\ ;
+堅果 > kenka\ ;
+許否 > kyohi\ ;
+拗音 > youon\ ;
+許可 > kyoka\ ;
+見栄 > mibae\ ;
+絹布 > kenpu\ ;
+隊員 > taiin\ ;
+陶土 > toudo\ ;
+提示 > teiji\ ;
+按配 > anbai\ ;
+無尽 > mujin\ ;
+除外 > jogai\ ;
+増員 > zouin\ ;
+絵巻 > emaki\ ;
+行路 > kouro\ ;
+挿話 > souwa\ ;
+見本 > mihon\ ;
+院外 > ingai\ ;
+総務 > soumu\ ;
+闊歩 > kappo\ ;
+噪音 > souon\ ;
+基板 > kiban\ ;
+陶器 > touki\ ;
+継夫 > keifu\ ;
+無害 > mugai\ ;
+隠元 > ingen\ ;
+無官 > mukan\ ;
+訃報 > fuhou\ ;
+基本 > kihon\ ;
+粗砥 > arato\ ;
+報恩 > houon\ ;
+隷下 > reika\ ;
+素材 > sozai\ ;
+降嫁 > kouka\ ;
+総出 > soude\ ;
+見映 > mibae\ ;
+綽名 > adana\ ;
+園芸 > engei\ ;
+灯火 > touka\ ;
+解字 > kaiji\ ;
+捕虜 > horyo\ ;
+隣保 > rinpo\ ;
+墓参 > bosan\ ;
+火災 > kasai\ ;
+計器 > keiki\ ;
+組成 > sosei\ ;
+裸眼 > ragan\ ;
+粗相 > sosou\ ;
+拾遺 > shuui\ ;
+絶家 > zekke\ ;
+記名 > kimei\ ;
+衣裳 > ishou\ ;
+増加 > zouka\ ;
+記号 > kigou\ ;
+濾紙 > roshi\ ;
+阻害 > sogai\ ;
+地縁 > chien\ ;
+無始 > mushi\ ;
+囚衣 > shuui\ ;
+衣装 > ishou\ ;
+摩損 > mason\ ;
+基数 > kisuu\ ;
+衛視 > eishi\ ;
+国華 > kokka\ ;
+塔婆 > touba\ ;
+素数 > sosuu\ ;
+坐禅 > zazen\ ;
+墓前 > bozen\ ;
+隠亡 > onbou\ ;
+無声 > musei\ ;
+地紋 > jimon\ ;
+掲示 > keiji\ ;
+演題 > endai\ ;
+納期 > nouki\ ;
+撒布 > sanpu\ ;
+堅持 > kenji\ ;
+擬勢 > gisei\ ;
+国花 > kokka\ ;
+地米 > jimai\ ;
+親御 > oyago\ ;
+点播 > tenpa\ ;
+濃艶 > nouen\ ;
+訴人 > sonin\ ;
+街衢 > gaiku\ ;
+開演 > kaien\ ;
+討匪 > touhi\ ;
+経度 > keido\ ;
+擬制 > gisei\ ;
+紋日 > monbi\ ;
+授精 > jusei\ ;
+除名 > jomei\ ;
+灯油 > touyu\ ;
+除号 > jogou\ ;
+陶冶 > touya\ ;
+困苦 > konku\ ;
+披露 > hirou\ ;
+除去 > jokyo\ ;
+院号 > ingou\ ;
+隊伍 > taigo\ ;
+紅旗 > kouki\ ;
+階下 > kaika\ ;
+投飛 > touhi\ ;
+蟻酸 > gisan\ ;
+素懐 > sokai\ ;
+地租 > chiso\ ;
+細微 > saibi\ ;
+訛伝 > kaden\ ;
+拝辞 > haiji\ ;
+土管 > dokan\ ;
+地祇 > chigi\ ;
+塊土 > kaido\ ;
+裏目 > urame\ ;
+持論 > jiron\ ;
+視度 > shido\ ;
+炎暑 > ensho\ ;
+精油 > seiyu\ ;
+粗煮 > arani\ ;
+闘技 > tougi\ ;
+挿花 > souka\ ;
+擬人 > gijin\ ;
+精気 > seiki\ ;
+視差 > shisa\ ;
+無名 > mumei\ ;
+素性 > sujou\ ;
+親字 > oyaji\ ;
+阻喪 > sosou\ ;
+納戸 > nando\ ;
+無双 > musou\ ;
+塩分 > enbun\ ;
+素志 > soshi\ ;
+細工 > saiku\ ;
+陪侍 > baiji\ ;
+堰堤 > entei\ ;
+無勢 > buzei\ ;
+基底 > kitei\ ;
+掻爬 > souha\ ;
+圧砕 > assai\ ;
+基幹 > kikan\ ;
+揮毫 > kigou\ ;
+無効 > mukou\ ;
+地盤 > jiban\ ;
+囲繞 > inyou\ ;
+拝賀 > haiga\ ;
+火桶 > hioke\ ;
+推理 > suiri\ ;
+粗漏 > sorou\ ;
+扶養 > fuyou\ ;
+捕縄 > hojou\ ;
+絶句 > zekku\ ;
+四股 > shiko\ ;
+簡素 > kanso\ ;
+押送 > ousou\ ;
+土砂 > dosha\ ;
+無冠 > mukan\ ;
+点差 > tensa\ ;
+堡塁 > horui\ ;
+操作 > sousa\ ;
+純度 > jundo\ ;
+言下 > genka\ ;
+規定 > kitei\ ;
+火曜 > kayou\ ;
+滋養 > jiyou\ ;
+換気 > kanki\ ;
+開架 > kaika\ ;
+圧痕 > akkon\ ;
+批難 > hinan\ ;
+製油 > seiyu\ ;
+器財 > kizai\ ;
+閑暇 > kanka\ ;
+火星 > kasei\ ;
+陛下 > heika\ ;
+角力 > sumou\ ;
+精査 > seisa\ ;
+地理 > chiri\ ;
+場味 > baaji\ ;
+算譜 > sanpu\ ;
+烈婦 > reppu\ ;
+塑像 > sozou\ ;
+授産 > jusan\ ;
+無体 > mutai\ ;
+行脚 > angya\ ;
+無住 > mujuu\ ;
+揺曳 > youei\ ;
+素子 > soshi\ ;
+経営 > keiei\ ;
+土用 > doyou\ ;
+無代 > mudai\ ;
+蠑螺 > sazae\ ;
+螺鈿 > raden\ ;
+点字 > tenji\ ;
+無人 > munin\ ;
+土瓶 > dobin\ ;
+堂奥 > douou\ ;
+防具 > bougu\ ;
+降下 > kouka\ ;
+紺地 > konji\ ;
+長柄 > nagae\ ;
+襟度 > kindo\ ;
+無上 > mujou\ ;
+衣糧 > iryou\ ;
+絶佳 > zekka\ ;
+素姓 > sujou\ ;
+防備 > boubi\ ;
+図示 > zushi\ ;
+結句 > kekku\ ;
+城府 > joufu\ ;
+融除 > yuujo\ ;
+扣除 > koujo\ ;
+阿亀 > okame\ ;
+打順 > dajun\ ;
+抱負 > houfu\ ;
+排煙 > haien\ ;
+漢語 > kango\ ;
+摂家 > sekke\ ;
+堅固 > kengo\ ;
+火手 > kashu\ ;
+手順 > tejun\ ;
+打電 > daden\ ;
+答辞 > touji\ ;
+提案 > teian\ ;
+基地 > kichi\ ;
+圧点 > atten\ ;
+開扉 > kaihi\ ;
+補正 > hosei\ ;
+握斧 > akufu\ ;
+披講 > hikou\ ;
+打開 > dakai\ ;
+要図 > youzu\ ;
+西土 > seido\ ;
+要因 > youin\ ;
+競馬 > keiba\ ;
+粗木 > araki\ ;
+漏話 > rouwa\ ;
+採油 > saiyu\ ;
+被災 > hisai\ ;
+場代 > badai\ ;
+粗暴 > sobou\ ;
+地温 > chion\ ;
+措止 > soshi\ ;
+裏毛 > urake\ ;
+門扉 > monpi\ ;
+門戸 > monko\ ;
+糖度 > toudo\ ;
+開悟 > kaigo\ ;
+紙器 > shiki\ ;
+披見 > hiken\ ;
+摸写 > mosha\ ;
+表着 > uwagi\ ;
+炭団 > tadon\ ;
+回目 > kaime\ ;
+抗議 > kougi\ ;
+滅金 > mekki\ ;
+粗放 > sohou\ ;
+要員 > youin\ ;
+打鍵 > daken\ ;
+累加 > ruika\ ;
+蝟集 > ishuu\ ;
+炊婦 > suifu\ ;
+点呼 > tenko\ ;
+排気 > haiki\ ;
+摸倣 > mohou\ ;
+規制 > kisei\ ;
+炎天 > enten\ ;
+因由 > in''yu\ ;
+地歩 > chiho\ ;
+手錠 > tejou\ ;
+濶歩 > kappo\ ;
+地歌 > jiuta\ ;
+門徒 > monto\ ;
+営養 > eiyou\ ;
+炊夫 > suifu\ ;
+挿画 > souga\ ;
+図版 > zuhan\ ;
+精度 > seido\ ;
+援引 > en''in\ ;
+滞貨 > taika\ ;
+要務 > youmu\ ;
+火山 > kazan\ ;
+系図 > keizu\ ;
+圧死 > asshi\ ;
+手金 > tekin\ ;
+土民 > domin\ ;
+点前 > temae\ ;
+探査 > tansa\ ;
+純化 > junka\ ;
+納受 > nouju\ ;
+手配 > tehai\ ;
+拉致 > rachi\ ;
+衛生 > eisei\ ;
+補整 > hosei\ ;
+要具 > yougu\ ;
+補数 > hosuu\ ;
+炭化 > tanka\ ;
+授権 > juken\ ;
+純利 > junri\ ;
+筆記 > hikki\ ;
+細事 > saiji\ ;
+指示 > shiji\ ;
+粗悪 > soaku\ ;
+素体 > sotai\ ;
+演芸 > engei\ ;
+糞土 > fundo\ ;
+長居 > nagai\ ;
+漫罵 > manba\ ;
+紙価 > shika\ ;
+端銭 > hasen\ ;
+嘉言 > kagen\ ;
+粘度 > nendo\ ;
+箪笥 > tansu\ ;
+紀元 > kigen\ ;
+図法 > zuhou\ ;
+潤目 > urume\ ;
+国歌 > kokka\ ;
+開基 > kaiki\ ;
+湖面 > komen\ ;
+揚屋 > ageya\ ;
+土曜 > doyou\ ;
+納付 > noufu\ ;
+裏手 > urate\ ;
+螟蛾 > meiga\ ;
+圧政 > assei\ ;
+開園 > kaien\ ;
+土星 > dosei\ ;
+炎光 > enkou\ ;
+押絵 > oshie\ ;
+湯銭 > yusen\ ;
+閲兵 > eppei\ ;
+補弦 > hogen\ ;
+糸価 > shika\ ;
+行灯 > andon\ ;
+手話 > shuwa\ ;
+圧排 > appai\ ;
+手記 > shuki\ ;
+営造 > eizou\ ;
+地所 > jisho\ ;
+糖化 > touka\ ;
+営農 > einou\ ;
+補巻 > hokan\ ;
+裕度 > yuudo\ ;
+糊口 > kokou\ ;
+技芸 > gigei\ ;
+閹人 > enjin\ ;
+捜査 > sousa\ ;
+手製 > tesei\ ;
+城下 > jouka\ ;
+火勢 > kasei\ ;
+拝眉 > haibi\ ;
+挽歌 > banka\ ;
+授戒 > jukai\ ;
+粗大 > sodai\ ;
+戦費 > senpi\ ;
+固有 > koyuu\ ;
+温顔 > ongan\ ;
+炊事 > suiji\ ;
+炎上 > enjou\ ;
+捻挫 > nenza\ ;
+製塩 > seien\ ;
+火刑 > kakei\ ;
+演算 > enzan\ ;
+温順 > onjun\ ;
+開化 > kaika\ ;
+補導 > hodou\ ;
+因業 > ingou\ ;
+技能 > ginou\ ;
+突飛 > toppi\ ;
+国旗 > kokki\ ;
+図書 > tosho\ ;
+火光 > kakou\ ;
+補完 > hokan\ ;
+簡易 > kan''i\ ;
+衒気 > genki\ ;
+米寿 > beiju\ ;
+投網 > toami\ ;
+製図 > seizu\ ;
+粘土 > nendo\ ;
+損保 > sonpo\ ;
+裏屋 > uraya\ ;
+措定 > sotei\ ;
+扶育 > fuiku\ ;
+閣下 > kakka\ ;
+戦記 > senki\ ;
+手薄 > teusu\ ;
+管理 > kanri\ ;
+在庫 > zaiko\ ;
+捧持 > houji\ ;
+童話 > douwa\ ;
+蝦蛄 > shako\ ;
+援兵 > enpei\ ;
+坑夫 > koufu\ ;
+被弾 > hidan\ ;
+血気 > kekki\ ;
+嘉肴 > kakou\ ;
+器用 > kiyou\ ;
+間代 > madai\ ;
+圧巻 > akkan\ ;
+戒護 > kaigo\ ;
+灯下 > touka\ ;
+漫画 > manga\ ;
+揚句 > ageku\ ;
+喚起 > kanki\ ;
+補填 > hoten\ ;
+衣服 > ifuku\ ;
+粗品 > sohin\ ;
+土工 > dokou\ ;
+清音 > seion\ ;
+因数 > insuu\ ;
+成語 > seigo\ ;
+四日 > yokka\ ;
+手荒 > teara\ ;
+米塩 > beien\ ;
+掩壕 > engou\ ;
+嘆美 > tanbi\ ;
+蝗虫 > batta\ ;
+衣料 > iryou\ ;
+捕手 > hoshu\ ;
+在家 > zaike\ ;
+補回 > hokai\ ;
+衛星 > eisei\ ;
+門下 > monka\ ;
+行李 > kouri\ ;
+噴火 > funka\ ;
+粗利 > arari\ ;
+被害 > higai\ ;
+節気 > sekki\ ;
+裏地 > uraji\ ;
+鍍金 > mekki\ ;
+嘉納 > kanou\ ;
+淫風 > inpuu\ ;
+打者 > dasha\ ;
+地声 > jigoe\ ;
+蜿蜒 > en''en\ ;
+添附 > tenpu\ ;
+固形 > kokei\ ;
+折目 > orime\ ;
+国庫 > kokko\ ;
+濃度 > noudo\ ;
+筆禍 > hikka\ ;
+蜻蛉 > tonbo\ ;
+行方 > yukue\ ;
+衍文 > enbun\ ;
+裸像 > razou\ ;
+四手 > shide\ ;
+図形 > zukei\ ;
+垂下 > suika\ ;
+蜂起 > houki\ ;
+PC > pīshī\ ;
+打線 > dasen\ ;
+地図 > chizu\ ;
+表意 > hyoui\ ;
+技研 > giken\ ;
+土壌 > dojou\ ;
+手織 > teori\ ;
+裸体 > ratai\ ;
+図工 > zukou\ ;
+衛所 > eisho\ ;
+衰微 > suibi\ ;
+裏名 > urana\ ;
+土塊 > dokai\ ;
+手練 > teren\ ;
+土塁 > dorui\ ;
+土塀 > dobei\ ;
+唐音 > touon\ ;
+因循 > injun\ ;
+簿外 > bogai\ ;
+回忌 > kaiki\ ;
+採否 > saihi\ ;
+技監 > gikan\ ;
+国家 > kokka\ ;
+戎葵 > juuki\ ;
+噴気 > funki\ ;
+空輸 > kuuyu\ ;
+土地 > tochi\ ;
+補充 > hojuu\ ;
+坑儒 > kouju\ ;
+固定 > kotei\ ;
+地唄 > jiuta\ ;
+固守 > koshu\ ;
+挙措 > kyoso\ ;
+打算 > dasan\ ;
+坐像 > zazou\ ;
+土嚢 > donou\ ;
+裁可 > saika\ ;
+地味 > chimi\ ;
+突起 > tokki\ ;
+営舎 > eisha\ ;
+回帰 > kaiki\ ;
+漸次 > zenji\ ;
+喫茶 > kissa\ ;
+空路 > kuuro\ ;
+国威 > kokui\ ;
+潜時 > senji\ ;
+地区 > chiku\ ;
+指揮 > shiki\ ;
+按排 > anbai\ ;
+補任 > honin\ ;
+漫歩 > manpo\ ;
+米価 > beika\ ;
+衆意 > shuui\ ;
+漁火 > gyoka\ ;
+懇話 > konwa\ ;
+空費 > kuuhi\ ;
+蜉蝣 > fuyuu\ ;
+蛮語 > bango\ ;
+装具 > sougu\ ;
+戯絵 > zaree\ ;
+坐乗 > zajou\ ;
+団子 > dango\ ;
+土台 > dodai\ ;
+涼雨 > ryouu\ ;
+装備 > soubi\ ;
+因子 > inshi\ ;
+按手 > anshu\ ;
+坊主 > bouzu\ ;
+衆徒 > shuto\ ;
+漏洩 > rouei\ ;
+圧制 > assei\ ;
+四季 > shiki\ ;
+営繕 > eizen\ ;
+器械 > kikai\ ;
+移駐 > ichuu\ ;
+持戒 > jikai\ ;
+虎魚 > okoze\ ;
+算木 > sangi\ ;
+地価 > chika\ ;
+手相 > tesou\ ;
+器材 > kizai\ ;
+鑑査 > kansa\ ;
+圧倒 > attou\ ;
+海鰻 > anago\ ;
+担架 > tanka\ ;
+鋭鋒 > eihou\ ;
+排他 > haita\ ;
+憂身 > ukimi\ ;
+批点 > hiten\ ;
+土偶 > doguu\ ;
+行宮 > anguu\ ;
+地下 > chika\ ;
+箇条 > kajou\ ;
+土侯 > dokou\ ;
+戦禍 > senka\ ;
+等温 > touon\ ;
+濃化 > nouka\ ;
+哀願 > aigan\ ;
+挿図 > souzu\ ;
+土人 > dojin\ ;
+激化 > gekka\ ;
+愛餐 > aisan\ ;
+咽頭 > intou\ ;
+箇数 > kosuu\ ;
+善美 > zenbi\ ;
+投機 > touki\ ;
+蛇行 > dakou\ ;
+技法 > gihou\ ;
+衡器 > kouki\ ;
+浅黄 > asagi\ ;
+慶賀 > keiga\ ;
+括弧 > kakko\ ;
+等比 > touhi\ ;
+抛棄 > houki\ ;
+街図 > gaizu\ ;
+園丁 > entei\ ;
+拇指 > boshi\ ;
+投棄 > touki\ ;
+打点 > daten\ ;
+海霧 > kaimu\ ;
+漏斗 > routo\ ;
+篆字 > tenji\ ;
+渡船 > tosen\ ;
+渡航 > tokou\ ;
+滞欧 > taiou\ ;
+淫行 > inkou\ ;
+節季 > sekki\ ;
+箇所 > kasho\ ;
+固体 > kotai\ ;
+答案 > touan\ ;
+拘引 > kouin\ ;
+童画 > douga\ ;
+温習 > sarai\ ;
+節婦 > seppu\ ;
+拐引 > kaiin\ ;
+喝破 > kappa\ ;
+行員 > kouin\ ;
+街区 > gaiku\ ;
+黄鯛 > kidai\ ;
+和風 > wafuu\ ;
+螺旋 > rasen\ ;
+稟議 > ringi\ ;
+憂虞 > yuugu\ ;
+手淫 > shuin\ ;
+鋒起 > houki\ ;
+打法 > dahou\ ;
+淫蕩 > intou\ ;
+秘鍵 > hiken\ ;
+扶桑 > fusou\ ;
+虚辞 > kyoji\ ;
+衛兵 > eihei\ ;
+渦線 > kasen\ ;
+窺知 > kichi\ ;
+愚鈍 > gudon\ ;
+行務 > koumu\ ;
+鼠輩 > sohai\ ;
+挙句 > ageku\ ;
+回付 > kaifu\ ;
+範囲 > han''i\ ;
+渦紋 > kamon\ ;
+才気 > saiki\ ;
+海里 > kairi\ ;
+鼠蹊 > sokei\ ;
+戦火 > senka\ ;
+把握 > haaku\ ;
+悲鳴 > himei\ ;
+渡米 > tobei\ ;
+拳固 > genko\ ;
+投打 > touda\ ;
+指呼 > shiko\ ;
+麒麟 > kirin\ ;
+拷器 > gouki\ ;
+器官 > kikan\ ;
+鎖状 > sajou\ ;
+溢水 > issui\ ;
+慈訓 > jikun\ ;
+湖畔 > kohan\ ;
+海運 > kaiun\ ;
+憂苦 > yuuku\ ;
+嗟歎 > satan\ ;
+海辺 > umibe\ ;
+愛車 > aisha\ ;
+把手 > hashu\ ;
+持参 > jisan\ ;
+打棒 > dabou\ ;
+湯煎 > yusen\ ;
+浮遊 > fuyuu\ ;
+漢字 > kanji\ ;
+抒情 > jojou\ ;
+節句 > sekku\ ;
+移調 > ichou\ ;
+按分 > anbun\ ;
+悪魔 > akuma\ ;
+技手 > gishu\ ;
+湯灌 > yukan\ ;
+手桶 > teoke\ ;
+稲荷 > inari\ ;
+源氏 > genji\ ;
+投影 > touei\ ;
+海路 > kairo\ ;
+扶持 > fuchi\ ;
+浦辺 > urabe\ ;
+和金 > wakin\ ;
+麝香 > jakou\ ;
+鈍麻 > donma\ ;
+啓示 > keiji\ ;
+悪馬 > akume\ ;
+手本 > tehon\ ;
+減磨 > genma\ ;
+悲願 > higan\ ;
+突破 > toppa\ ;
+海豚 > iruka\ ;
+懐疑 > kaigi\ ;
+蛇管 > jakan\ ;
+哀詩 > aishi\ ;
+潮位 > choui\ ;
+哀詞 > aishi\ ;
+打数 > dasuu\ ;
+愚論 > guron\ ;
+戦機 > senki\ ;
+所期 > shoki\ ;
+漁家 > gyoka\ ;
+手斧 > teono\ ;
+演奏 > ensou\ ;
+黙過 > mokka\ ;
+拝受 > haiju\ ;
+浪費 > rouhi\ ;
+手数 > tesuu\ ;
+戸板 > toita\ ;
+漢土 > kando\ ;
+演壇 > endan\ ;
+愚計 > gukei\ ;
+湯治 > touji\ ;
+鉛錘 > ensui\ ;
+節供 > sekku\ ;
+立派 > rippa\ ;
+泥鰌 > dojou\ ;
+等差 > tousa\ ;
+管区 > kanku\ ;
+愚見 > guken\ ;
+技師 > gishi\ ;
+惹起 > jakki\ ;
+拒否 > kyohi\ ;
+鉛鉱 > enkou\ ;
+味醂 > mirin\ ;
+命運 > meiun\ ;
+技巧 > gikou\ ;
+技工 > gikou\ ;
+鼻茸 > bijou\ ;
+錬磨 > renma\ ;
+秘計 > hikei\ ;
+私費 > shihi\ ;
+意訳 > iyaku\ ;
+蘇連 > soren\ ;
+哺育 > hoiku\ ;
+派遣 > haken\ ;
+想起 > souki\ ;
+銅貨 > douka\ ;
+悍馬 > kanba\ ;
+戯書 > gisho\ ;
+銘記 > meiki\ ;
+愚行 > gukou\ ;
+空疎 > kuuso\ ;
+浮言 > fugen\ ;
+漁夫 > gyofu\ ;
+拝具 > haigu\ ;
+戸数 > kosuu\ ;
+波高 > hakou\ ;
+戦果 > senka\ ;
+銀貨 > ginka\ ;
+端本 > hahon\ ;
+麻酔 > masui\ ;
+洋間 > youma\ ;
+鉄鎖 > tessa\ ;
+私議 > shigi\ ;
+禁錮 > kinko\ ;
+流転 > ruten\ ;
+漢和 > kanwa\ ;
+手技 > shugi\ ;
+鼻腔 > bikou\ ;
+浴衣 > yokui\ ;
+漁場 > gyoba\ ;
+渦状 > kajou\ ;
+意表 > ihyou\ ;
+戯文 > gibun\ ;
+液肥 > ekihi\ ;
+技官 > gikan\ ;
+私語 > shigo\ ;
+戦時 > senji\ ;
+淫祠 > inshi\ ;
+空理 > kuuri\ ;
+所持 > shoji\ ;
+懐炉 > kairo\ ;
+満期 > manki\ ;
+営林 > eirin\ ;
+湖水 > kosui\ ;
+和讚 > wasan\ ;
+私記 > shiki\ ;
+戦旗 > senki\ ;
+端数 > hasuu\ ;
+嘘字 > usoji\ ;
+成案 > seian\ ;
+祈願 > kigan\ ;
+温点 > onten\ ;
+波頭 > hatou\ ;
+成果 > seika\ ;
+愛蔵 > aizou\ ;
+麦酒 > biiru\ ;
+名馬 > meiba\ ;
+和訓 > wakun\ ;
+戸戸 > kokou\ ;
+和解 > wakai\ ;
+波面 > hamen\ ;
+管下 > kanka\ ;
+手当 > teate\ ;
+悼辞 > touji\ ;
+秘蔵 > hizou\ ;
+稲穂 > inaho\ ;
+鼻緒 > hanao\ ;
+和製 > wasei\ ;
+鋤簾 > joren\ ;
+種種 > shuju\ ;
+游泳 > yuuei\ ;
+和装 > wasou\ ;
+担保 > tanpo\ ;
+和裁 > wasai\ ;
+憂目 > ukime\ ;
+野鶏 > yakei\ ;
+温湯 > ontou\ ;
+同音 > douon\ ;
+憮然 > buzen\ ;
+悪運 > akuun\ ;
+懸架 > kenga\ ;
+患部 > kanbu\ ;
+漁区 > gyoku\ ;
+拉丁 > raten\ ;
+薬鑵 > yakan\ ;
+銘菓 > meika\ ;
+蜜柑 > mikan\ ;
+黒衣 > kokue\ ;
+温泉 > onsen\ ;
+悠遠 > yuuen\ ;
+戦意 > sen''i\ ;
+悟道 > godou\ ;
+味見 > ajimi\ ;
+渡海 > tokai\ ;
+営所 > eisho\ ;
+温水 > onsui\ ;
+鼻端 > bitan\ ;
+渡洋 > toyou\ ;
+愛育 > aiiku\ ;
+滅多 > metta\ ;
+号音 > gouon\ ;
+淫猥 > inwai\ ;
+善果 > zenka\ ;
+情誼 > jougi\ ;
+漁具 > gyogu\ ;
+悪路 > akuro\ ;
+浅蜊 > asari\ ;
+情話 > jouwa\ ;
+種皮 > shuhi\ ;
+愚者 > gusha\ ;
+愚考 > gukou\ ;
+戦後 > sengo\ ;
+鉛製 > ensei\ ;
+禀議 > ringi\ ;
+才媛 > saien\ ;
+扇子 > sensu\ ;
+慰留 > iryuu\ ;
+移籍 > iseki\ ;
+野馬 > nouma\ ;
+端座 > tanza\ ;
+禅話 > zenwa\ ;
+我慢 > gaman\ ;
+喜捨 > kisha\ ;
+古風 > kofuu\ ;
+稲田 > inada\ ;
+受験 > juken\ ;
+空気 > kuuki\ ;
+我情 > gajou\ ;
+才女 > saijo\ ;
+空母 > kuubo\ ;
+唾液 > daeki\ ;
+満座 > manza\ ;
+営庭 > eitei\ ;
+禁裡 > kinri\ ;
+禁裏 > kinri\ ;
+味蕾 > mirai\ ;
+虚空 > kokuu\ ;
+悲観 > hikan\ ;
+淵源 > engen\ ;
+和船 > wasen\ ;
+洋語 > yougo\ ;
+慈眼 > jigen\ ;
+営巣 > eisou\ ;
+社運 > shaun\ ;
+批判 > hihan\ ;
+手垢 > teaka\ ;
+融和 > yuuwa\ ;
+悪計 > akkei\ ;
+批准 > hijun\ ;
+鼓童 > kodou\ ;
+吏道 > rodou\ ;
+投与 > touyo\ ;
+投下 > touka\ ;
+懸想 > kesou\ ;
+受難 > junan\ ;
+戸外 > kogai\ ;
+懺悔 > zange\ ;
+鋳物 > imono\ ;
+才器 > saiki\ ;
+竪子 > jushi\ ;
+符合 > fugou\ ;
+添水 > souzu\ ;
+符号 > fugou\ ;
+技倒 > gitou\ ;
+温暖 > ondan\ ;
+等価 > touka\ ;
+渡来 > torai\ ;
+名辞 > meiji\ ;
+恥部 > chibu\ ;
+童子 > douji\ ;
+懸念 > kenen\ ;
+悪行 > akkou\ ;
+酸鼻 > sanbi\ ;
+淡湖 > tanko\ ;
+黄花 > kouka\ ;
+成就 > jouju\ ;
+租税 > sozei\ ;
+善意 > zen''i\ ;
+嗟嘆 > satan\ ;
+清楚 > seiso\ ;
+鼠盗 > sotou\ ;
+泰語 > taigo\ ;
+愛社 > aisha\ ;
+沿道 > endou\ ;
+喪家 > souka\ ;
+古銭 > kosen\ ;
+社費 > shahi\ ;
+童女 > doujo\ ;
+否認 > hinin\ ;
+溶化 > youka\ ;
+湖底 > kotei\ ;
+淋漓 > rinri\ ;
+所員 > shoin\ ;
+嘉例 > karei\ ;
+清栄 > seiei\ ;
+鼠疫 > soeki\ ;
+善後 > zengo\ ;
+祈請 > kisei\ ;
+法貨 > houka\ ;
+祈誓 > kisei\ ;
+流罪 > ruzai\ ;
+端坐 > tanza\ ;
+嗚咽 > oetsu\ ;
+恩赦 > onsha\ ;
+和紙 > washi\ ;
+手勢 > tezei\ ;
+減摩 > genma\ ;
+台辞 > daiji\ ;
+淘汰 > touta\ ;
+恩賜 > onshi\ ;
+洒落 > share\ ;
+海砂 > kaisa\ ;
+手前 > temae\ ;
+台輪 > daiwa\ ;
+湖岸 > kogan\ ;
+洵美 > junbi\ ;
+古道 > kodou\ ;
+第五 > daigo\ ;
+第二 > daini\ ;
+示談 > jidan\ ;
+野郎 > yarou\ ;
+野選 > yasen\ ;
+法語 > hougo\ ;
+合議 > gougi\ ;
+法話 > houwa\ ;
+汗馬 > kanba\ ;
+懇意 > kon''i\ ;
+懊悩 > ounou\ ;
+打倒 > datou\ ;
+名誉 > meiyo\ ;
+愚痴 > guchi\ ;
+営団 > eidan\ ;
+水鶏 > kuina\ ;
+叉銃 > sajuu\ ;
+温情 > onjou\ ;
+移牒 > ichou\ ;
+立夏 > rikka\ ;
+唐檜 > touhi\ ;
+情義 > jougi\ ;
+錦旗 > kinki\ ;
+愛用 > aiyou\ ;
+法規 > houki\ ;
+懈怠 > getai\ ;
+租界 > sokai\ ;
+愚生 > gusei\ ;
+釈迦 > shaka\ ;
+湯垢 > yuaka\ ;
+恋路 > koiji\ ;
+派米 > habei\ ;
+成因 > seiin\ ;
+厦門 > kamon\ ;
+法被 > happi\ ;
+洋舞 > youbu\ ;
+虎狼 > korou\ ;
+古趾 > koshi\ ;
+藍色 > aiiro\ ;
+端午 > tango\ ;
+虚無 > kyomu\ ;
+手代 > tedai\ ;
+愛玩 > aigan\ ;
+受身 > ukemi\ ;
+惨禍 > sanka\ ;
+渡御 > togyo\ ;
+水魔 > suima\ ;
+野趣 > yashu\ ;
+古賢 > koken\ ;
+戦務 > senmu\ ;
+浮生 > fusei\ ;
+快音 > kaion\ ;
+喧嘩 > kenka\ ;
+稚気 > chiki\ ;
+温帯 > ontai\ ;
+所作 > shosa\ ;
+古豪 > kogou\ ;
+金貨 > kinka\ ;
+愛犬 > aiken\ ;
+海獺 > rakko\ ;
+成員 > seiin\ ;
+準備 > junbi\ ;
+惣社 > souja\ ;
+磯辺 > isobe\ ;
+鉛管 > enkan\ ;
+鼻汁 > bijuu\ ;
+海狸 > kairi\ ;
+惰眠 > damin\ ;
+房事 > bouji\ ;
+叙賜 > joshi\ ;
+成否 > seihi\ ;
+受贈 > juzou\ ;
+悪罵 > akuba\ ;
+成句 > seiku\ ;
+所与 > shoyo\ ;
+患者 > kanja\ ;
+古諺 > kogen\ ;
+可視 > kashi\ ;
+句読 > kutou\ ;
+黄禍 > kouka\ ;
+稲木 > inagi\ ;
+戦備 > senbi\ ;
+口語 > kougo\ ;
+古詩 > koshi\ ;
+戸主 > koshu\ ;
+里謡 > riyou\ ;
+古訓 > kokun\ ;
+空巣 > akisu\ ;
+古言 > kogen\ ;
+悪縁 > akuen\ ;
+温存 > onzon\ ;
+受講 > jukou\ ;
+印面 > inmen\ ;
+汽車 > kisha\ ;
+叡覧 > eiran\ ;
+黄砂 > kousa\ ;
+穎才 > eisai\ ;
+里言 > rigen\ ;
+単騎 > tanki\ ;
+醍醐 > daigo\ ;
+済度 > saido\ ;
+危難 > kinan\ ;
+泳者 > eisha\ ;
+名菓 > meika\ ;
+参賀 > sanga\ ;
+危険 > kiken\ ;
+営倉 > eisou\ ;
+喪具 > sougu\ ;
+必須 > hissu\ ;
+憂懼 > yuuku\ ;
+反語 > hango\ ;
+鼻根 > bikon\ ;
+友誼 > yuugi\ ;
+名花 > meika\ ;
+決起 > kekki\ ;
+麻睡 > masui\ ;
+反訴 > hanso\ ;
+鋭敏 > eibin\ ;
+蘇生 > sosei\ ;
+愛液 > aieki\ ;
+参議 > sangi\ ;
+名舗 > meiho\ ;
+派生 > hasei\ ;
+秘湯 > hitou\ ;
+黄疸 > oudan\ ;
+気風 > kifuu\ ;
+海淵 > kaien\ ;
+穴子 > anago\ ;
+喇叭 > rappa\ ;
+鍼医 > harii\ ;
+怪訝 > kegen\ ;
+薬罐 > yakan\ ;
+薬缶 > yakan\ ;
+思議 > shigi\ ;
+穏当 > ontou\ ;
+野蛮 > yaban\ ;
+印鑑 > inkan\ ;
+怨言 > engen\ ;
+午餐 > gosan\ ;
+微風 > bifuu\ ;
+港図 > kouzu\ ;
+汚辱 > ojoku\ ;
+哀歓 > aikan\ ;
+浮游 > fuyuu\ ;
+薄荷 > hakka\ ;
+銃火 > juuka\ ;
+愚民 > gumin\ ;
+秘法 > hihou\ ;
+呈示 > teiji\ ;
+喪主 > moshu\ ;
+南阿 > nan''a\ ;
+浮浪 > furou\ ;
+黄班 > ouhan\ ;
+渾名 > adana\ ;
+海気 > kaiki\ ;
+御飯 > gohan\ ;
+気随 > kizui\ ;
+名義 > meigi\ ;
+波線 > hasen\ ;
+沙蚕 > gokai\ ;
+同義 > dougi\ ;
+卑陋 > hirou\ ;
+民需 > minju\ ;
+稀書 > kisho\ ;
+虚栄 > kyoei\ ;
+涅槃 > nehan\ ;
+添字 > soeji\ ;
+合羽 > kappa\ ;
+員数 > inzuu\ ;
+浮気 > uwaki\ ;
+波紋 > hamon\ ;
+禅画 > zenga\ ;
+穴場 > anaba\ ;
+碑銘 > himei\ ;
+和漢 > wakan\ ;
+懐古 > kaiko\ ;
+意欲 > iyoku\ ;
+情理 > jouri\ ;
+鋭感 > eikan\ ;
+野菜 > yasai\ ;
+古茶 > kocha\ ;
+神祇 > jingi\ ;
+浄火 > jouka\ ;
+神社 > jinja\ ;
+黄燐 > ourin\ ;
+浅瀬 > asase\ ;
+油脂 > yushi\ ;
+御難 > gonan\ ;
+鉛版 > enban\ ;
+重荷 > juuka\ ;
+蛹化 > youka\ ;
+野草 > yasou\ ;
+御陰 > okage\ ;
+可能 > kanou\ ;
+原語 > gengo\ ;
+蚕座 > sanza\ ;
+水運 > suiun\ ;
+温厚 > onkou\ ;
+湖上 > kojou\ ;
+右翼 > uyoku\ ;
+銀波 > ginpa\ ;
+厚誼 > kougi\ ;
+後顧 > kouko\ ;
+銀河 > ginga\ ;
+慕情 > bojou\ ;
+和洋 > wayou\ ;
+啖呵 > tanka\ ;
+名簿 > meibo\ ;
+医長 > ichou\ ;
+区間 > kukan\ ;
+洋画 > youga\ ;
+淋巴 > rinpa\ ;
+善事 > zenji\ ;
+渦動 > kadou\ ;
+薬禍 > yakka\ ;
+慇懃 > ingin\ ;
+念誦 > nenju\ ;
+愛書 > aisho\ ;
+祈祷 > kitou\ ;
+匕首 > hishu\ ;
+沿線 > ensen\ ;
+金肥 > kinpi\ ;
+古聖 > kosei\ ;
+情焔 > jouen\ ;
+原被 > genpi\ ;
+蕗草 > rosou\ ;
+淫奔 > inpon\ ;
+口耳 > kouji\ ;
+古老 > korou\ ;
+気重 > kiomo\ ;
+南都 > nanto\ ;
+南部 > nanbu\ ;
+鉱油 > kouyu\ ;
+情炎 > jouen\ ;
+淫売 > inbai\ ;
+秘本 > hihon\ ;
+愚昧 > gumai\ ;
+流浪 > rurou\ ;
+情火 > jouka\ ;
+水路 > suiro\ ;
+慈恵 > jikei\ ;
+秘書 > hisho\ ;
+気配 > kehai\ ;
+薬研 > yagen\ ;
+受胎 > jutai\ ;
+微醺 > bikun\ ;
+半里 > hanri\ ;
+法科 > houka\ ;
+油紙 > yushi\ ;
+稲子 > inago\ ;
+気道 > kidou\ ;
+比類 > hirui\ ;
+流民 > rumin\ ;
+千里 > senri\ ;
+秘方 > hihou\ ;
+同祖 > douso\ ;
+態度 > taido\ ;
+鉄火 > tekka\ ;
+河系 > kakei\ ;
+私案 > shian\ ;
+禍源 > kagen\ ;
+破顔 > hagan\ ;
+卑近 > hikin\ ;
+黄河 > kouga\ ;
+御釜 > okama\ ;
+御金 > okane\ ;
+浦曲 > urawa\ ;
+活気 > kakki\ ;
+半途 > hanto\ ;
+程度 > teido\ ;
+重縁 > juuen\ ;
+古紙 > koshi\ ;
+部首 > bushu\ ;
+都電 > toden\ ;
+鼓手 > koshu\ ;
+銃架 > juuka\ ;
+混和 > konwa\ ;
+汽艇 > kitei\ ;
+汽船 > kisen\ ;
+比隣 > hirin\ ;
+愚挙 > gukyo\ ;
+友義 > yuugi\ ;
+古米 > komai\ ;
+哀憫 > aibin\ ;
+減価 > genka\ ;
+哀憐 > airen\ ;
+彩雲 > saiun\ ;
+河童 > kappa\ ;
+淵叢 > ensou\ ;
+部類 > burui\ ;
+哀感 > aikan\ ;
+法皇 > houou\ ;
+哀愍 > aibin\ ;
+蔬菜 > sosai\ ;
+磨耗 > mamou\ ;
+浮揚 > fuyou\ ;
+和本 > wahon\ ;
+液安 > ekian\ ;
+空佐 > kuusa\ ;
+渡世 > tosei\ ;
+受納 > junou\ ;
+唐土 > toudo\ ;
+添加 > tenka\ ;
+哀情 > aijou\ ;
+哀悼 > aitou\ ;
+和書 > washo\ ;
+愛憐 > airen\ ;
+破門 > hamon\ ;
+受精 > jusei\ ;
+悪漢 > akkan\ ;
+卑賤 > hisen\ ;
+憂哭 > ukine\ ;
+卑賎 > hisen\ ;
+受粉 > jufun\ ;
+部面 > bumen\ ;
+鼻孔 > bikou\ ;
+科挙 > kakyo\ ;
+矮鶏 > chabo\ ;
+毫釐 > gouri\ ;
+愛想 > aisou\ ;
+情歌 > jouka\ ;
+黄楊 > tsuge\ ;
+愛情 > aijou\ ;
+鋳型 > igata\ ;
+微賤 > bisen\ ;
+微賎 > bisen\ ;
+後部 > koubu\ ;
+印行 > inkou\ ;
+名画 > meiga\ ;
+鼠巣 > sosou\ ;
+部隊 > butai\ ;
+和文 > wabun\ ;
+汽罐 > kikan\ ;
+汽缶 > kikan\ ;
+意慾 > iyoku\ ;
+単語 > tango\ ;
+薄着 > usugi\ ;
+情機 > jouki\ ;
+波状 > hajou\ ;
+示現 > jigen\ ;
+黄桃 > outou\ ;
+古祠 > koshi\ ;
+薄目 > usume\ ;
+呑気 > nonki\ ;
+徒輩 > tohai\ ;
+法理 > houri\ ;
+里程 > ritei\ ;
+単記 > tanki\ ;
+硬貨 > kouka\ ;
+野禽 > yakin\ ;
+重科 > juuka\ ;
+部門 > bumon\ ;
+待避 > taihi\ ;
+慈姑 > kuwai\ ;
+蛇体 > jatai\ ;
+感度 > kando\ ;
+鼎座 > teiza\ ;
+法王 > houou\ ;
+稽古 > keiko\ ;
+愚弟 > gutei\ ;
+愚弄 > gurou\ ;
+鼻声 > bisei\ ;
+薫煙 > kunen\ ;
+口碑 > kouhi\ ;
+往還 > oukan\ ;
+沃素 > youso\ ;
+合理 > gouri\ ;
+治癒 > chiyu\ ;
+悲歎 > hitan\ ;
+汚臭 > oshuu\ ;
+卑言 > higen\ ;
+加齢 > karei\ ;
+征途 > seito\ ;
+鼠害 > sogai\ ;
+弧高 > kokou\ ;
+鉛板 > enban\ ;
+民話 > minwa\ ;
+比重 > hijuu\ ;
+卑見 > hiken\ ;
+員外 > ingai\ ;
+往返 > ouhen\ ;
+禍根 > kakon\ ;
+虚字 > kyoji\ ;
+添付 > tenpu\ ;
+憑依 > hyoui\ ;
+野砲 > yahou\ ;
+叡知 > eichi\ ;
+稼動 > kadou\ ;
+単衣 > hitoe\ ;
+愉快 > yukai\ ;
+穏健 > onken\ ;
+原義 > gengi\ ;
+波瀾 > haran\ ;
+油田 > yuden\ ;
+弾雨 > dan''u\ ;
+穏便 > onbin\ ;
+波濤 > hatou\ ;
+台甫 > taiho\ ;
+都邑 > toyuu\ ;
+和戦 > wasen\ ;
+可用 > kayou\ ;
+鹹湖 > kanko\ ;
+河畔 > kahan\ ;
+勇飛 > yuuhi\ ;
+半裸 > hanra\ ;
+径路 > keiro\ ;
+御詠 > gyoei\ ;
+重目 > omome\ ;
+半被 > happi\ ;
+私怨 > shien\ ;
+砂防 > sabou\ ;
+微行 > bikou\ ;
+呪文 > jumon\ ;
+泳法 > eihou\ ;
+御覧 > goran\ ;
+稼働 > kadou\ ;
+吐瀉 > tosha\ ;
+淫乱 > inran\ ;
+受益 > jueki\ ;
+神武 > jinmu\ ;
+合点 > gaten\ ;
+愛孫 > aison\ ;
+浅手 > asade\ ;
+愛孃 > aijou\ ;
+蚕具 > sangu\ ;
+銃後 > juugo\ ;
+愛嬢 > aijou\ ;
+原素 > genso\ ;
+蚕児 > sanji\ ;
+慈善 > jizen\ ;
+惰性 > dasei\ ;
+油状 > yujou\ ;
+野生 > yasei\ ;
+波浪 > harou\ ;
+秘宝 > hihou\ ;
+蓮華 > renge\ ;
+愛婿 > aisei\ ;
+忍苦 > ninku\ ;
+銃座 > juuza\ ;
+厳秘 > genpi\ ;
+原簿 > genbo\ ;
+厳科 > genka\ ;
+鋭兵 > eihei\ ;
+銀座 > ginza\ ;
+郡部 > gunbu\ ;
+鼻口 > bikou\ ;
+後記 > kouki\ ;
+愛妻 > aisai\ ;
+愚妻 > gusai\ ;
+慶事 > keiji\ ;
+税吏 > zeiri\ ;
+愛好 > aikou\ ;
+労音 > rouon\ ;
+可燃 > kanen\ ;
+液化 > ekika\ ;
+吝気 > rinki\ ;
+鄙見 > hiken\ ;
+和平 > wahei\ ;
+野獣 > yajuu\ ;
+鳳駕 > houga\ ;
+野猪 > yacho\ ;
+邪険 > jaken\ ;
+徒行 > tokou\ ;
+水肥 > suihi\ ;
+古版 > kohan\ ;
+募金 > bokin\ ;
+後裔 > kouei\ ;
+徐行 > jokou\ ;
+同派 > douha\ ;
+酸素 > sanso\ ;
+往訪 > ouhou\ ;
+野犬 > yaken\ ;
+延髄 > enzui\ ;
+税務 > zeimu\ ;
+悪日 > akubi\ ;
+稚児 > chigo\ ;
+加餐 > kasan\ ;
+加養 > kayou\ ;
+歯音 > shion\ ;
+後衛 > kouei\ ;
+酵素 > kouso\ ;
+郊野 > kouya\ ;
+私家 > shika\ ;
+鼎坐 > teiza\ ;
+忍者 > ninja\ ;
+医薬 > iyaku\ ;
+社歌 > shaka\ ;
+鼻内 > binai\ ;
+御蔭 > okage\ ;
+勢運 > seiun\ ;
+同気 > douki\ ;
+句点 > kuten\ ;
+破談 > hadan\ ;
+和尚 > oshou\ ;
+口炎 > kouen\ ;
+当路 > touro\ ;
+慈兄 > jikei\ ;
+情愛 > jouai\ ;
+正音 > seion\ ;
+名歌 > meika\ ;
+部財 > buzai\ ;
+可溶 > kayou\ ;
+沿海 > enkai\ ;
+華麗 > karei\ ;
+鉄扉 > teppi\ ;
+咽喉 > inkou\ ;
+海図 > kaizu\ ;
+御菜 > okazu\ ;
+印綿 > inmen\ ;
+浮城 > fujou\ ;
+恒温 > kouon\ ;
+古潭 > kotan\ ;
+河港 > kakou\ ;
+河清 > kasei\ ;
+印紙 > inshi\ ;
+気胞 > kihou\ ;
+口演 > kouen\ ;
+鼓吹 > kosui\ ;
+愚問 > gumon\ ;
+水素 > suiso\ ;
+虎口 > kokou\ ;
+御苑 > gyoen\ ;
+蒲薦 > hosen\ ;
+哀号 > aigou\ ;
+悲憤 > hifun\ ;
+哀史 > aishi\ ;
+麻幹 > ogara\ ;
+応答 > outou\ ;
+印籠 > inrou\ ;
+歌風 > kafuu\ ;
+武門 > bumon\ ;
+和姦 > wakan\ ;
+移入 > inyuu\ ;
+悲愴 > hisou\ ;
+残部 > zanbu\ ;
+泰斗 > taito\ ;
+感受 > kanju\ ;
+歌題 > kadai\ ;
+悲惨 > hisan\ ;
+禁忌 > kinki\ ;
+愛吟 > aigin\ ;
+海員 > kaiin\ ;
+避難 > hinan\ ;
+重湯 > omoyu\ ;
+惣嫁 > souka\ ;
+鼓動 > kodou\ ;
+欺騙 > gihen\ ;
+法案 > houan\ ;
+御腹 > onaka\ ;
+和声 > wasei\ ;
+河水 > kasui\ ;
+名案 > meian\ ;
+悲恋 > hiren\ ;
+感化 > kanka\ ;
+武鑑 > bukan\ ;
+遺集 > ishuu\ ;
+句法 > kuhou\ ;
+怪火 > kaika\ ;
+微罪 > bizai\ ;
+原画 > genga\ ;
+南緯 > nan''i\ ;
+古法 > kohou\ ;
+虚偽 > kyogi\ ;
+勲記 > kunki\ ;
+剣鬼 > kenki\ ;
+金波 > kinpa\ ;
+海参 > iriko\ ;
+秘史 > hishi\ ;
+邪道 > jadou\ ;
+稀代 > kidai\ ;
+厳父 > genpu\ ;
+鉱夫 > koufu\ ;
+戸々 > kokou\ ;
+銀地 > ginji\ ;
+社是 > shaze\ ;
+磁界 > jikai\ ;
+海区 > kaiku\ ;
+印税 > inzei\ ;
+口気 > kouki\ ;
+同期 > douki\ ;
+重油 > juuyu\ ;
+銅器 > douki\ ;
+矮躯 > waiku\ ;
+沮止 > soshi\ ;
+油槽 > yusou\ ;
+短躯 > tanku\ ;
+恋歌 > renka\ ;
+科名 > kamei\ ;
+悪心 > oshin\ ;
+銃器 > juuki\ ;
+弘遠 > kouen\ ;
+原理 > genri\ ;
+汗疹 > asemo\ ;
+汗疣 > asemo\ ;
+悪徒 > akuto\ ;
+硼素 > houso\ ;
+受洗 > jusen\ ;
+稀世 > kisei\ ;
+私営 > shiei\ ;
+意匠 > ishou\ ;
+銀器 > ginki\ ;
+水禍 > suika\ ;
+禍害 > kagai\ ;
+快癒 > kaiyu\ ;
+金歯 > kinba\ ;
+同時 > douji\ ;
+短路 > tanro\ ;
+遠音 > toone\ ;
+引退 > intai\ ;
+那辺 > nahen\ ;
+情宜 > jougi\ ;
+愚兄 > gukei\ ;
+悟性 > gosei\ ;
+微細 > bisai\ ;
+動議 > dougi\ ;
+浮動 > fudou\ ;
+勃起 > bokki\ ;
+愚僧 > gusou\ ;
+後胤 > kouin\ ;
+禅家 > zenke\ ;
+黄変 > ouhen\ ;
+加配 > kahai\ ;
+品位 > hin''i\ ;
+往航 > oukou\ ;
+遠雷 > enrai\ ;
+念珠 > nenju\ ;
+悔悟 > kaigo\ ;
+気管 > kikan\ ;
+欧風 > oufuu\ ;
+浄土 > joudo\ ;
+含意 > gan''i\ ;
+情婦 > joufu\ ;
+重機 > juuki\ ;
+悧巧 > rikou\ ;
+気筒 > kitou\ ;
+怒濤 > dotou\ ;
+惹句 > jakku\ ;
+歩道 > hodou\ ;
+磨淬 > masai\ ;
+毛色 > keiro\ ;
+永眠 > eimin\ ;
+強訴 > gouso\ ;
+咄嗟 > tossa\ ;
+私印 > shiin\ ;
+武道 > budou\ ;
+正邪 > seija\ ;
+反比 > hanpi\ ;
+功過 > kouka\ ;
+印相 > inzou\ ;
+化膿 > kanou\ ;
+次類 > jirui\ ;
+反歯 > soppa\ ;
+反歩 > tanbu\ ;
+剪除 > senjo\ ;
+台木 > daigi\ ;
+注意 > chuui\ ;
+反歌 > hanka\ ;
+醸母 > joubo\ ;
+前駆 > zenku\ ;
+武辺 > buhen\ ;
+座高 > zakou\ ;
+情夫 > joufu\ ;
+和名 > wamei\ ;
+愛人 > aijin\ ;
+和合 > wagou\ ;
+励起 > reiki\ ;
+半端 > hanpa\ ;
+薄日 > usubi\ ;
+愚人 > gujin\ ;
+黄土 > koudo\ ;
+応用 > ouyou\ ;
+邦貨 > houka\ ;
+私利 > shiri\ ;
+破船 > hasen\ ;
+否応 > iyaou\ ;
+医籍 > iseki\ ;
+化育 > kaiku\ ;
+秘伝 > hiden\ ;
+母艦 > bokan\ ;
+受検 > juken\ ;
+油断 > yudan\ ;
+睡魔 > suima\ ;
+母船 > bosen\ ;
+礎材 > sozai\ ;
+廃除 > haijo\ ;
+古来 > korai\ ;
+海事 > kaiji\ ;
+永生 > eisei\ ;
+助走 > josou\ ;
+遊離 > yuuri\ ;
+怒涛 > dotou\ ;
+祈念 > kinen\ ;
+歳費 > saihi\ ;
+祖師 > soshi\ ;
+古書 > kosho\ ;
+周囲 > shuui\ ;
+決河 > kekka\ ;
+遷都 > sento\ ;
+汽水 > kisui\ ;
+比肩 > hiken\ ;
+印環 > inkan\ ;
+野末 > nozue\ ;
+野望 > yabou\ ;
+意中 > ichuu\ ;
+悪婦 > akufu\ ;
+呼号 > kogou\ ;
+正路 > seiro\ ;
+鉱区 > kouku\ ;
+悪婆 > akuba\ ;
+鉱化 > kouka\ ;
+波形 > hakei\ ;
+邦語 > hougo\ ;
+叡智 > eichi\ ;
+各戸 > kakko\ ;
+前非 > zenpi\ ;
+汚濁 > odaku\ ;
+母胎 > botai\ ;
+歌道 > kadou\ ;
+碁盤 > goban\ ;
+死語 > shigo\ ;
+可撓 > katou\ ;
+悲壮 > hisou\ ;
+弘誓 > guzei\ ;
+浮世 > ukiyo\ ;
+座頭 > zatou\ ;
+吐息 > toiki\ ;
+浮上 > fujou\ ;
+古方 > kohou\ ;
+浄化 > jouka\ ;
+叡旨 > eishi\ ;
+邪見 > jaken\ ;
+古文 > komon\ ;
+悪女 > akujo\ ;
+化繊 > kasen\ ;
+午砲 > gohou\ ;
+毛織 > keori\ ;
+江湖 > gouko\ ;
+恩愛 > on''ai\ ;
+気相 > kisou\ ;
+悲報 > hihou\ ;
+御社 > onsha\ ;
+悪夢 > akumu\ ;
+北緯 > hokui\ ;
+叙景 > jokei\ ;
+正貨 > seika\ ;
+正負 > seifu\ ;
+禁固 > kinko\ ;
+向後 > kougo\ ;
+硅素 > keiso\ ;
+恩情 > onjou\ ;
+叛旗 > hanki\ ;
+薄手 > usude\ ;
+恩恵 > onkei\ ;
+永牢 > eirou\ ;
+遺蹟 > iseki\ ;
+里数 > risuu\ ;
+午睡 > gosui\ ;
+引見 > inken\ ;
+祖宗 > sosou\ ;
+流刑 > rukei\ ;
+助詞 > joshi\ ;
+銀位 > gin''i\ ;
+叙文 > jobun\ ;
+南画 > nanga\ ;
+示度 > shido\ ;
+遺跡 > iseki\ ;
+鉄器 > tekki\ ;
+遥遠 > youen\ ;
+弁護 > bengo\ ;
+勤苦 > kinku\ ;
+毛糸 > keito\ ;
+助言 > jogon\ ;
+法度 > hatto\ ;
+南瓜 > nanka\ ;
+幽鬼 > yuuki\ ;
+化粧 > kewai\ ;
+情味 > joumi\ ;
+江河 > kouga\ ;
+否定 > hitei\ ;
+破線 > hasen\ ;
+影絵 > kagee\ ;
+同座 > douza\ ;
+破綻 > hatan\ ;
+口授 > kouju\ ;
+派兵 > hahei\ ;
+思案 > shian\ ;
+葡萄 > budou\ ;
+建議 > kengi\ ;
+正課 > seika\ ;
+母線 > bosen\ ;
+反旗 > hanki\ ;
+正誤 > seigo\ ;
+悲嘆 > hitan\ ;
+禅味 > zenmi\ ;
+部署 > busho\ ;
+可憐 > karen\ ;
+悪因 > akuin\ ;
+蒔絵 > makie\ ;
+過重 > kajuu\ ;
+匕箸 > hicho\ ;
+半田 > handa\ ;
+欄間 > ranma\ ;
+葉蘭 > haran\ ;
+恩師 > onshi\ ;
+母系 > bokei\ ;
+遊里 > yuuri\ ;
+水火 > suika\ ;
+惨事 > sanji\ ;
+祭器 > saiki\ ;
+恨布 > konbu\ ;
+油性 > yusei\ ;
+正規 > seiki\ ;
+禁句 > kinku\ ;
+社寺 > shaji\ ;
+恋慕 > renbo\ ;
+医療 > iryou\ ;
+華道 > kadou\ ;
+野手 > yashu\ ;
+社家 > shake\ ;
+重手 > omode\ ;
+武装 > busou\ ;
+野戦 > yasen\ ;
+歩行 > hokou\ ;
+毛穴 > keana\ ;
+卑猥 > hiwai\ ;
+破算 > hasan\ ;
+呑吐 > donto\ ;
+油彩 > yusai\ ;
+叡慮 > eiryo\ ;
+御用 > goyou\ ;
+流人 > runin\ ;
+叡感 > eikan\ ;
+歌謡 > kayou\ ;
+名家 > meika\ ;
+御璽 > gyoji\ ;
+取手 > totte\ ;
+名宛 > naate\ ;
+同家 > douke\ ;
+着類 > kirui\ ;
+受戒 > jukai\ ;
+運送 > unsou\ ;
+黄体 > outai\ ;
+歌論 > karon\ ;
+酵母 > koubo\ ;
+祖型 > sokei\ ;
+重愛 > juuai\ ;
+神器 > jingi\ ;
+同字 > douji\ ;
+台座 > daiza\ ;
+割賦 > wappu\ ;
+真鯛 > madai\ ;
+叛意 > han''i\ ;
+歌詞 > kashi\ ;
+真鯉 > magoi\ ;
+残花 > zanka\ ;
+黄人 > oujin\ ;
+水温 > suion\ ;
+運輸 > un''yu\ ;
+藩儒 > hanju\ ;
+剰費 > jouhi\ ;
+前部 > zenbu\ ;
+麗句 > reiku\ ;
+磨損 > mason\ ;
+野性 > yasei\ ;
+葉茶 > hadja\ ;
+叙情 > jojou\ ;
+御玉 > otama\ ;
+道路 > douro\ ;
+運転 > unten\ ;
+幽雅 > yuuga\ ;
+初陣 > uijin\ ;
+沿岸 > engan\ ;
+連鎖 > rensa\ ;
+葉芽 > youga\ ;
+河川 > kasen\ ;
+遁辞 > tonji\ ;
+前途 > zento\ ;
+遍路 > henro\ ;
+鉛丹 > entan\ ;
+水泳 > suiei\ ;
+后妃 > kouhi\ ;
+名妓 > meigi\ ;
+口座 > kouza\ ;
+志気 > shiki\ ;
+叛徒 > hanto\ ;
+金庫 > kinko\ ;
+印池 > inchi\ ;
+泥土 > deido\ ;
+油層 > yusou\ ;
+労苦 > rouku\ ;
+友愛 > yuuai\ ;
+遠謀 > enbou\ ;
+同夜 > douya\ ;
+重度 > juudo\ ;
+前輪 > maewa\ ;
+退院 > taiin\ ;
+情事 > jouji\ ;
+破砕 > hasai\ ;
+危殆 > kitai\ ;
+治安 > chian\ ;
+剰語 > jougo\ ;
+野師 > yashi\ ;
+落花 > rakka\ ;
+史家 > shika\ ;
+鈍器 > donki\ ;
+性愛 > seiai\ ;
+引航 > inkou\ ;
+砂絵 > sunae\ ;
+得物 > emono\ ;
+沙弥 > shami\ ;
+祭具 > saigu\ ;
+含味 > ganmi\ ;
+往生 > oujou\ ;
+分離 > bunri\ ;
+配流 > hairu\ ;
+引致 > inchi\ ;
+反徒 > hanto\ ;
+刈除 > gaijo\ ;
+怨恨 > enkon\ ;
+遠視 > enshi\ ;
+祭儀 > saigi\ ;
+鄙猥 > hiwai\ ;
+歯芽 > shiga\ ;
+遠見 > toomi\ ;
+鹹味 > kanmi\ ;
+荷馬 > niuma\ ;
+真顔 > magao\ ;
+砂糖 > satou\ ;
+酒気 > shuki\ ;
+鷹揚 > ouyou\ ;
+利鈍 > ridon\ ;
+思慕 > shibo\ ;
+怠惰 > taida\ ;
+利金 > rikin\ ;
+沮害 > sogai\ ;
+同坐 > douza\ ;
+区点 > kuten\ ;
+友引 > yuuin\ ;
+酔歩 > suiho\ ;
+凹面 > oumen\ ;
+道話 > douwa\ ;
+包皮 > houhi\ ;
+逸走 > issou\ ;
+廃語 > haigo\ ;
+吟味 > ginmi\ ;
+厭戦 > ensen\ ;
+武芸 > bugei\ ;
+遡行 > sokou\ ;
+名器 > meiki\ ;
+華言 > kagen\ ;
+影画 > kagee\ ;
+徒然 > tozen\ ;
+連辞 > renji\ ;
+広野 > kouya\ ;
+気泡 > kihou\ ;
+金字 > kinji\ ;
+弥縫 > bihou\ ;
+金子 > kinsu\ ;
+弧線 > kosen\ ;
+欠課 > kekka\ ;
+単比 > tanpi\ ;
+過言 > kagon\ ;
+破産 > hasan\ ;
+社員 > shain\ ;
+印棉 > inmen\ ;
+研磨 > kenma\ ;
+悪事 > akuji\ ;
+示唆 > shisa\ ;
+可変 > kahen\ ;
+彩画 > saiga\ ;
+薫化 > kunka\ ;
+受容 > juyou\ ;
+祭事 > saiji\ ;
+祖先 > sosen\ ;
+鈍化 > donka\ ;
+性差 > seisa\ ;
+萠芽 > houga\ ;
+別途 > betto\ ;
+過褒 > kahou\ ;
+荷電 > kaden\ ;
+硬派 > kouha\ ;
+台場 > daiba\ ;
+吾人 > gojin\ ;
+波動 > hadou\ ;
+薄地 > usuji\ ;
+透過 > touka\ ;
+単機 > tanki\ ;
+殷盛 > insei\ ;
+社印 > shain\ ;
+印材 > inzai\ ;
+平野 > heiya\ ;
+印本 > inpon\ ;
+息吹 > ibuki\ ;
+幹部 > kanbu\ ;
+印書 > insho\ ;
+幽遠 > yuuen\ ;
+名句 > meiku\ ;
+前記 > zenki\ ;
+運行 > unkou\ ;
+武者 > musha\ ;
+社務 > shamu\ ;
+原意 > gen''i\ ;
+古墳 > kofun\ ;
+恩命 > onmei\ ;
+友宜 > yuugi\ ;
+野天 > noten\ ;
+合否 > gouhi\ ;
+労組 > rouso\ ;
+野外 > yagai\ ;
+座談 > zadan\ ;
+弗素 > fusso\ ;
+逃避 > touhi\ ;
+幸運 > kouun\ ;
+破牢 > harou\ ;
+遺臣 > ishin\ ;
+広軌 > kouki\ ;
+正義 > seigi\ ;
+法務 > houmu\ ;
+破片 > hahen\ ;
+同化 > douka\ ;
+退避 > taihi\ ;
+古城 > kojou\ ;
+吐剤 > tozai\ ;
+気概 > kigai\ ;
+府警 > fukei\ ;
+御殿 > goten\ ;
+萌芽 > houga\ ;
+区民 > kumin\ ;
+厚恩 > kouon\ ;
+応援 > ouen\ ;
+庫裏 > kuri\ ;
+古器 > koki\ ;
+凍雨 > touu\ ;
+徒歩 > toho\ ;
+可否 > kahi\ ;
+徐歩 > joho\ ;
+庇護 > higo\ ;
+野営 > yaei\ ;
+法会 > houe\ ;
+同位 > doui\ ;
+危懼 > kigu\ ;
+句句 > kuku\ ;
+古句 > koku\ ;
+口受 > kuju\ ;
+治具 > jigu\ ;
+冷雨 > reiu\ ;
+当為 > toui\ ;
+右党 > utou\ ;
+危惧 > kigu\ ;
+遺精 > isei\ ;
+野卑 > yahi\ ;
+右傾 > ukei\ ;
+医書 > isho\ ;
+違背 > ihai\ ;
+怨嗟 > ensa\ ;
+鸚哥 > inko\ ;
+破毀 > haki\ ;
+反吐 > hedo\ ;
+反古 > hogo\ ;
+古儀 > kogi\ ;
+華美 > kabi\ ;
+印度 > indo\ ;
+遺稿 > ikou\ ;
+相違 > soui\ ;
+座臥 > zaga\ ;
+帰途 > kito\ ;
+忠実 > mame\ ;
+円顱 > enro\ ;
+磁場 > jiba\ ;
+古事 > koji\ ;
+破棄 > haki\ ;
+永寿 > eiju\ ;
+歌碑 > kahi\ ;
+往時 > ouji\ ;
+磁土 > jido\ ;
+鴉片 > ahen\ ;
+印字 > inji\ ;
+違算 > isan\ ;
+叙事 > joji\ ;
+磁器 > jiki\ ;
+微微 > bibi\ ;
+帰路 > kiro\ ;
+御意 > gyoi\ ;
+砂洲 > sasu\ ;
+午後 > gogo\ ;
+毀棄 > kiki\ ;
+遠祖 > enso\ ;
+後手 > gote\ ;
+干葉 > hiba\ ;
+引火 > inka\ ;
+御影 > goei\ ;
+遺産 > isan\ ;
+樹陰 > juin\ ;
+英音 > eion\ ;
+汚名 > omei\ ;
+磁区 > jiku\ ;
+邪淫 > jain\ ;
+迂言 > ugen\ ;
+磁化 > jika\ ;
+医師 > ishi\ ;
+彼我 > higa\ ;
+危坐 > kiza\ ;
+創痍 > soui\ ;
+機運 > kiun\ ;
+匪徒 > hito\ ;
+助演 > joen\ ;
+邪気 > jaki\ ;
+弥次 > yaji\ ;
+御宇 > gyou\ ;
+往往 > ouou\ ;
+刀自 > toji\ ;
+御子 > miko\ ;
+医官 > ikan\ ;
+加温 > kaon\ ;
+過疎 > kaso\ ;
+刀背 > mine\ ;
+応募 > oubo\ ;
+遺漏 > irou\ ;
+後家 > goke\ ;
+医大 > idai\ ;
+殴打 > ouda\ ;
+歩武 > hobu\ ;
+違犯 > ihan\ ;
+円貨 > enka\ ;
+気味 > gimi\ ;
+気合 > kiai\ ;
+布衍 > fuen\ ;
+魔魅 > mami\ ;
+後場 > goba\ ;
+破家 > baka\ ;
+気化 > kika\ ;
+征夷 > seii\ ;
+午后 > gogo\ ;
+水位 > suii\ ;
+永久 > towa\ ;
+左記 > saki\ ;
+円規 > enki\ ;
+盈虧 > eiki\ ;
+遺構 > ikou\ ;
+御名 > mina\ ;
+部屋 > heya\ ;
+英貨 > eika\ ;
+過渡 > kato\ ;
+違法 > ihou\ ;
+殷富 > inpu\ ;
+延期 > enki\ ;
+横議 > ougi\ ;
+砂州 > sasu\ ;
+茣蓙 > goza\ ;
+英語 > eigo\ ;
+運河 > unga\ ;
+遺書 > isho\ ;
+知恵 > chie\ ;
+運気 > unki\ ;
+輸贏 > yuei\ ;
+卑下 > hige\ ;
+勢子 > seko\ ;
+包囲 > houi\ ;
+往古 > ouko\ ;
+加持 > kaji\ ;
+弧度 > kodo\ ;
+都営 > toei\ ;
+比喩 > hiyu\ ;
+遺文 > ibun\ ;
+逢瀬 > ouse\ ;
+出目 > deme\ ;
+彙報 > ihou\ ;
+武技 > bugi\ ;
+輝輝 > kiki\ ;
+座洲 > zasu\ ;
+御代 > miyo\ ;
+勢威 > seii\ ;
+医会 > ikai\ ;
+得体 > etai\ ;
+御世 > miyo\ ;
+影印 > eiin\ ;
+正意 > seii\ ;
+円舞 > enbu\ ;
+鵜匠 > ujou\ ;
+母印 > boin\ ;
+逸機 > ikki\ ;
+部員 > buin\ ;
+遺戒 > ikai\ ;
+皮膚 > hifu\ ;
+遺憾 > ikan\ ;
+刷毛 > hake\ ;
+歩度 > hodo\ ;
+次期 > jiki\ ;
+武庫 > buko\ ;
+機縁 > kien\ ;
+砂土 > sado\ ;
+遺恨 > ikon\ ;
+往事 > ouji\ ;
+花譜 > kafu\ ;
+遺志 > ishi\ ;
+序次 > joji\ ;
+比価 > hika\ ;
+途次 > toji\ ;
+創意 > soui\ ;
+武家 > buke\ ;
+横臥 > ouga\ ;
+鬱金 > ukon\ ;
+比丘 > biku\ ;
+都下 > toka\ ;
+矢場 > yaba\ ;
+花被 > kahi\ ;
+違憲 > iken\ ;
+延寿 > enju\ ;
+百舌 > mozu\ ;
+武夫 > bufu\ ;
+砂利 > jari\ ;
+部下 > buka\ ;
+遺子 > ishi\ ;
+瞽女 > goze\ ;
+句々 > kuku\ ;
+出歯 > deba\ ;
+過度 > kado\ ;
+武器 > buki\ ;
+運座 > unza\ ;
+次序 > jijo\ ;
+模糊 > moko\ ;
+花芽 > kaga\ ;
+遺址 > ishi\ ;
+平易 > heii\ ;
+加味 > kami\ ;
+歩合 > buai\ ;
+欧字 > ouji\ ;
+出来 > deki\ ;
+僧衣 > soui\ ;
+疎音 > soin\ ;
+座州 > zasu\ ;
+樹皮 > juhi\ ;
+府庫 > fuko\ ;
+遺品 > ihin\ ;
+疑雲 > giun\ ;
+遺命 > imei\ ;
+此処 > koko\ ;
+武具 > bugu\ ;
+過多 > kata\ ;
+次女 > jijo\ ;
+几案 > kian\ ;
+武備 > bubi\ ;
+追手 > otte\ ;
+遺功 > ikou\ ;
+異風 > ifuu\ ;
+遺制 > isei\ ;
+異類 > irui\ ;
+利己 > riko\ ;
+正位 > seii\ ;
+刷子 > hake\ ;
+武事 > buji\ ;
+荊棘 > bara\ ;
+魔羅 > mara\ ;
+遺体 > itai\ ;
+違反 > ihan\ ;
+遺伝 > iden\ ;
+過去 > kako\ ;
+欧化 > ouka\ ;
+疎遠 > soen\ ;
+疑辞 > giji\ ;
+左派 > saha\ ;
+艶美 > enbi\ ;
+驢馬 > roba\ ;
+岐阜 > gifu\ ;
+座員 > zain\ ;
+永々 > eiei\ ;
+真帆 > maho\ ;
+相手 > aite\ ;
+度合 > doai\ ;
+違例 > irei\ ;
+利器 > riki\ ;
+色絵 > iroe\ ;
+異邦 > ihou\ ;
+違令 > irei\ ;
+廃位 > haii\ ;
+布施 > fuse\ ;
+自費 > jihi\ ;
+自負 > jifu\ ;
+入江 > irie\ ;
+英気 > eiki\ ;
+騾馬 > raba\ ;
+花王 > kaou\ ;
+棋院 > kiin\ ;
+帷幄 > iaku\ ;
+英武 > eibu\ ;
+異趣 > ishu\ ;
+具案 > guan\ ;
+出場 > deba\ ;
+自記 > jiki\ ;
+座主 > zasu\ ;
+自衛 > jiei\ ;
+異論 > iron\ ;
+岐路 > kiro\ ;
+相子 > aiko\ ;
+府下 > fuka\ ;
+魔王 > maou\ ;
+偉観 > ikan\ ;
+異見 > iken\ ;
+利他 > rita\ ;
+騎馬 > kiba\ ;
+機微 > kibi\ ;
+機影 > kiei\ ;
+幾何 > kika\ ;
+往々 > ouou\ ;
+発条 > bane\ ;
+内意 > naii\ ;
+機序 > kijo\ ;
+癸未 > kibi\ ;
+帝威 > teii\ ;
+迂回 > ukai\ ;
+退位 > taii\ ;
+出刃 > deba\ ;
+梅雨 > baiu\ ;
+模擬 > mogi\ ;
+円弧 > enko\ ;
+痲痺 > mahi\ ;
+目地 > meji\ ;
+円座 > enza\ ;
+機尾 > kibi\ ;
+花樹 > kaju\ ;
+帰営 > kiei\ ;
+画譜 > gafu\ ;
+機宜 > kigi\ ;
+尾部 > bibu\ ;
+盲唖 > moua\ ;
+依願 > igan\ ;
+依頼 > irai\ ;
+疑義 > gigi\ ;
+真似 > mane\ ;
+棋譜 > kifu\ ;
+帰化 > kika\ ;
+児戯 > jigi\ ;
+真上 > maue\ ;
+巫子 > miko\ ;
+希土 > kido\ ;
+花期 > kaki\ ;
+希図 > kito\ ;
+馬鹿 > baka\ ;
+臙脂 > enji\ ;
+偃臥 > enga\ ;
+胡麻 > goma\ ;
+栗鼠 > risu\ ;
+寺院 > jiin\ ;
+異聞 > ibun\ ;
+巫女 > miko\ ;
+目処 > medo\ ;
+駄馬 > daba\ ;
+鬼気 > kiki\ ;
+几下 > kika\ ;
+機器 > kiki\ ;
+公家 > kuge\ ;
+艶歌 > enka\ ;
+保護 > hogo\ ;
+兵威 > heii\ ;
+鬱気 > ukki\ ;
+軽易 > keii\ ;
+英字 > eiji\ ;
+花押 > kaou\ ;
+俚語 > rigo\ ;
+皇子 > ouji\ ;
+屠蘇 > toso\ ;
+冀図 > kito\ ;
+駆除 > kujo\ ;
+寝間 > nema\ ;
+辞儀 > jigi\ ;
+目上 > meue\ ;
+帝位 > teii\ ;
+機化 > kika\ ;
+輪差 > wasa\ ;
+余韻 > yoin\ ;
+異端 > itan\ ;
+輝度 > kido\ ;
+寄附 > kifu\ ;
+機具 > kigu\ ;
+工合 > guai\ ;
+異種 > ishu\ ;
+児女 > jijo\ ;
+花序 > kajo\ ;
+具合 > guai\ ;
+足袋 > tabi\ ;
+山羊 > yagi\ ;
+苦土 > kudo\ ;
+位階 > ikai\ ;
+寿賀 > juga\ ;
+自画 > jiga\ ;
+英和 > eiwa\ ;
+公卿 > kuge\ ;
+画素 > gaso\ ;
+其処 > soko\ ;
+梨花 > rika\ ;
+由縁 > yuen\ ;
+円価 > enka\ ;
+花季 > kaki\ ;
+魚座 > uoza\ ;
+具備 > gubi\ ;
+越訴 > esso\ ;
+肥馬 > hiba\ ;
+百合 > yuri\ ;
+皮下 > hika\ ;
+儒家 > juka\ ;
+自火 > jika\ ;
+起訴 > kiso\ ;
+俚耳 > riji\ ;
+家運 > kaun\ ;
+異状 > ijou\ ;
+楚楚 > soso\ ;
+允可 > inka\ ;
+侍衛 > jiei\ ;
+饑餓 > kiga\ ;
+花器 > kaki\ ;
+皇位 > koui\ ;
+佳話 > kawa\ ;
+胃酸 > isan\ ;
+先先 > mama\ ;
+家路 > ieji\ ;
+桧葉 > hiba\ ;
+魔女 > majo\ ;
+饂飩 > udon\ ;
+字音 > jion\ ;
+寄語 > kigo\ ;
+花卉 > kaki\ ;
+家譜 > kafu\ ;
+胴衣 > doui\ ;
+鬼女 > kijo\ ;
+耳鼻 > jibi\ ;
+餓鬼 > gaki\ ;
+胤裔 > inei\ ;
+儲位 > choi\ ;
+自棄 > yake\ ;
+理非 > rihi\ ;
+以降 > ikou\ ;
+優位 > yuui\ ;
+起臥 > kiga\ ;
+胞衣 > houi\ ;
+栄誉 > eiyo\ ;
+嬰音 > eion\ ;
+輔佐 > hosa\ ;
+伊達 > date\ ;
+異様 > iyou\ ;
+余蘊 > youn\ ;
+家蚊 > ieka\ ;
+尼甫 > jiho\ ;
+偉材 > izai\ ;
+異本 > ihon\ ;
+植木 > ueki\ ;
+胼胝 > tako\ ;
+航宇 > kouu\ ;
+疑懼 > giku\ ;
+異文 > ibun\ ;
+異数 > isuu\ ;
+疑惧 > gigu\ ;
+自我 > jiga\ ;
+駕籠 > kago\ ;
+魁偉 > kaii\ ;
+保無 > homu\ ;
+駕篭 > kago\ ;
+飢餓 > kiga\ ;
+自愛 > jiai\ ;
+栄華 > eiga\ ;
+偉挙 > ikyo\ ;
+季語 > kigo\ ;
+肚裏 > tori\ ;
+僧位 > soui\ ;
+偉才 > isai\ ;
+異才 > isai\ ;
+費途 > hito\ ;
+理路 > riro\ ;
+賦課 > fuka\ ;
+賦詠 > fuei\ ;
+畏敬 > ikei\ ;
+保温 > hoon\ ;
+自序 > jijo\ ;
+画架 > gaka\ ;
+位置 > ichi\ ;
+二院 > niin\ ;
+自己 > jiko\ ;
+異性 > isei\ ;
+異彩 > isai\ ;
+疑字 > giji\ ;
+豪雨 > gouu\ ;
+付議 > fugi\ ;
+保母 > hobo\ ;
+安臥 > anga\ ;
+以西 > isei\ ;
+亜鈴 > arei\ ;
+自家 > jika\ ;
+異常 > ijou\ ;
+供犠 > kugi\ ;
+付記 > fuki\ ;
+小火 > boya\ ;
+駄目 > dame\ ;
+屋根 > yane\ ;
+依然 > izen\ ;
+伊艦 > ikan\ ;
+偉容 > iyou\ ;
+梨果 > rika\ ;
+異存 > izon\ ;
+二部 > nibu\ ;
+風雨 > fuuu\ ;
+棄捐 > kien\ ;
+楕円 > daen\ ;
+偽印 > giin\ ;
+肌膚 > kifu\ ;
+異姓 > isei\ ;
+偉大 > idai\ ;
+異変 > ihen\ ;
+留守 > rusu\ ;
+位相 > isou\ ;
+一鼓 > ikko\ ;
+自営 > jiei\ ;
+用意 > youi\ ;
+耳語 > jigo\ ;
+異域 > iiki\ ;
+画布 > gafu\ ;
+高位 > koui\ ;
+字義 > jigi\ ;
+自叙 > jijo\ ;
+保持 > hoji\ ;
+驥尾 > kibi\ ;
+倚子 > ishi\ ;
+自助 > jijo\ ;
+胃癌 > igan\ ;
+画家 > gaka\ ;
+興亜 > koua\ ;
+瓦斯 > gasu\ ;
+自利 > jiri\ ;
+家父 > kafu\ ;
+飛語 > higo\ ;
+余煙 > yoen\ ;
+下駄 > geta\ ;
+下馬 > geba\ ;
+假名 > kana\ ;
+異名 > imei\ ;
+位牌 > ihai\ ;
+異同 > idou\ ;
+耶蘇 > yaso\ ;
+余炎 > yoen\ ;
+瑠璃 > ruri\ ;
+一騎 > ikki\ ;
+疑似 > giji\ ;
+偉勲 > ikun\ ;
+偉効 > ikou\ ;
+偉功 > ikou\ ;
+異動 > idou\ ;
+負荷 > fuka\ ;
+久遠 > kuon\ ;
+自余 > jiyo\ ;
+不離 > furi\ ;
+一顧 > ikko\ ;
+自他 > jita\ ;
+美音 > bion\ ;
+子等 > kora\ ;
+下院 > kain\ ;
+起案 > kian\ ;
+不間 > buma\ ;
+画因 > gain\ ;
+余波 > yoha\ ;
+畏友 > iyuu\ ;
+異例 > irei\ ;
+小手 > kote\ ;
+異体 > itai\ ;
+趣意 > shui\ ;
+先々 > mama\ ;
+偉人 > ijin\ ;
+異人 > ijin\ ;
+保安 > hoan\ ;
+余殃 > yoou\ ;
+路地 > roji\ ;
+依拠 > ikyo\ ;
+琵琶 > biwa\ ;
+理科 > rika\ ;
+暮雲 > boun\ ;
+保姆 > hobo\ ;
+胃液 > ieki\ ;
+居士 > koji\ ;
+亜聖 > asei\ ;
+李花 > rika\ ;
+下野 > geya\ ;
+上野 > ueno\ ;
+肌理 > kime\ ;
+馴染 > naji\ ;
+亜群 > agun\ ;
+世辞 > seji\ ;
+不運 > fuun\ ;
+余栄 > yoei\ ;
+腰囲 > youi\ ;
+梨園 > rien\ ;
+供御 > gugo\ ;
+梃子 > teko\ ;
+路加 > ruka\ ;
+亜綱 > akou\ ;
+果皮 > kahi\ ;
+不軌 > fuki\ ;
+余暇 > yoka\ ;
+一過 > ikka\ ;
+小屋 > koya\ ;
+一途 > itto\ ;
+美辞 > biji\ ;
+安気 > anki\ ;
+琉璃 > ruri\ ;
+容易 > youi\ ;
+個個 > koko\ ;
+不起 > fuki\ ;
+尉官 > ikan\ ;
+栄枯 > eiko\ ;
+起座 > kiza\ ;
+寓意 > guui\ ;
+依存 > izon\ ;
+世話 > sewa\ ;
+亜種 > ashu\ ;
+晴雨 > seiu\ ;
+小夜 > sayo\ ;
+威風 > ifuu\ ;
+飛簷 > hien\ ;
+音頭 > ondo\ ;
+余技 > yogi\ ;
+不語 > fugo\ ;
+余所 > yoso\ ;
+王者 > ouja\ ;
+家扶 > kafu\ ;
+下記 > kaki\ ;
+暗部 > anbu\ ;
+供奉 > gubu\ ;
+胃散 > isan\ ;
+仁王 > niou\ ;
+侍婢 > jihi\ ;
+予科 > yoka\ ;
+害意 > gaii\ ;
+予示 > yoji\ ;
+安易 > an''i\ ;
+下衆 > gesu\ ;
+上衣 > joui\ ;
+侍女 > jijo\ ;
+字母 > jibo\ ;
+背戸 > sedo\ ;
+寄席 > yose\ ;
+佳宴 > kaen\ ;
+犠飛 > gihi\ ;
+不虞 > fugu\ ;
+腐儒 > fuju\ ;
+罵詈 > bari\ ;
+富家 > fuka\ ;
+他派 > taha\ ;
+議院 > giin\ ;
+起因 > kiin\ ;
+玻璃 > hari\ ;
+安打 > anda\ ;
+暗譜 > anpu\ ;
+馬子 > mago\ ;
+是非 > zehi\ ;
+事理 > jiri\ ;
+家家 > ieie\ ;
+枸杞 > kuko\ ;
+二王 > niou\ ;
+猿臂 > enpi\ ;
+暗記 > anki\ ;
+果樹 > kaju\ ;
+位官 > ikan\ ;
+云爾 > unji\ ;
+亜炭 > atan\ ;
+一荷 > ikka\ ;
+起句 > kiku\ ;
+会意 > kaii\ ;
+以東 > itou\ ;
+以来 > irai\ ;
+飛燕 > hien\ ;
+安座 > anza\ ;
+旗鼓 > kiko\ ;
+馬場 > baba\ ;
+鞍馬 > anba\ ;
+一臂 > ippi\ ;
+佳味 > kami\ ;
+不義 > fugi\ ;
+不羈 > fuki\ ;
+不羇 > fuki\ ;
+佳句 > kaku\ ;
+木瓜 > boke\ ;
+駄句 > daku\ ;
+肩巾 > hire\ ;
+時運 > jiun\ ;
+韻語 > ingo\ ;
+楚々 > soso\ ;
+音譜 > onpu\ ;
+不縁 > fuen\ ;
+位地 > ichi\ ;
+枇杷 > biwa\ ;
+上絵 > uwae\ ;
+孤影 > koei\ ;
+案価 > anka\ ;
+猛者 > mosa\ ;
+校医 > koui\ ;
+羽目 > hame\ ;
+案下 > anka\ ;
+柚子 > yuzu\ ;
+護謨 > gomu\ ;
+他所 > yoso\ ;
+二次 > niji\ ;
+如露 > joro\ ;
+不穏 > fuon\ ;
+安堵 > ando\ ;
+一箇 > ikko\ ;
+下種 > gesu\ ;
+馬具 > bagu\ ;
+位勲 > ikun\ ;
+他愛 > taai\ ;
+家出 > iede\ ;
+余儀 > yogi\ ;
+安固 > anko\ ;
+家具 > kagu\ ;
+不磨 > fuma\ ;
+家兎 > kato\ ;
+日間 > hiai\ ;
+伎女 > gijo\ ;
+委譲 > ijou\ ;
+位冠 > ikan\ ;
+護衛 > goei\ ;
+介意 > kaii\ ;
+寄付 > kifu\ ;
+鞍部 > anbu\ ;
+有為 > yuui\ ;
+寄与 > kiyo\ ;
+体位 > taii\ ;
+余事 > yoji\ ;
+青青 > aoao\ ;
+仮字 > kana\ ;
+二期 > niki\ ;
+低位 > teii\ ;
+安否 > anpi\ ;
+胡乱 > uron\ ;
+予期 > yoki\ ;
+家事 > kaji\ ;
+義理 > giri\ ;
+譏誹 > kihi\ ;
+下痢 > geri\ ;
+安危 > anki\ ;
+賭場 > toba\ ;
+首位 > shui\ ;
+嬉戯 > kigi\ ;
+事故 > jiko\ ;
+企図 > kito\ ;
+義父 > gifu\ ;
+他家 > take\ ;
+不理 > furi\ ;
+賀宴 > gaen\ ;
+定位 > teii\ ;
+宇内 > udai\ ;
+以外 > igai\ ;
+瑣事 > saji\ ;
+夢魔 > muma\ ;
+来意 > raii\ ;
+孵化 > fuka\ ;
+貴家 > kika\ ;
+暗示 > anji\ ;
+安保 > anpo\ ;
+安価 > anka\ ;
+木木 > kigi\ ;
+非運 > hiun\ ;
+聾唖 > roua\ ;
+贏余 > eiyo\ ;
+羽毛 > umou\ ;
+音素 > onso\ ;
+字句 > jiku\ ;
+贈位 > zoui\ ;
+貴女 > kijo\ ;
+付図 > fuzu\ ;
+肉刺 > mame\ ;
+事後 > jigo\ ;
+予後 > yogo\ ;
+二度 > nido\ ;
+音符 > onpu\ ;
+義気 > giki\ ;
+個々 > koko\ ;
+義母 > gibo\ ;
+語音 > goon\ ;
+以南 > inan\ ;
+而後 > jigo\ ;
+夜陰 > yain\ ;
+付和 > fuwa\ ;
+牡蛎 > kaki\ ;
+王手 > oute\ ;
+羽根 > hane\ ;
+木戸 > kido\ ;
+以前 > izen\ ;
+東夷 > toui\ ;
+非議 > higi\ ;
+韋編 > ihen\ ;
+以内 > inai\ ;
+一派 > ippa\ ;
+三毛 > mike\ ;
+雷雨 > raiu\ ;
+諳譜 > anpu\ ;
+付加 > fuka\ ;
+不次 > fuji\ ;
+雑魚 > jako\ ;
+護符 > gofu\ ;
+雲霧 > unmu\ ;
+事宜 > jigi\ ;
+曳曳 > eiei\ ;
+二字 > niji\ ;
+一気 > ikki\ ;
+賦与 > fuyo\ ;
+杏子 > anzu\ ;
+委細 > isai\ ;
+諳記 > anki\ ;
+大野 > oono\ ;
+一歩 > ippo\ ;
+斎部 > inbe\ ;
+代位 > daii\ ;
+狐疑 > kogi\ ;
+王座 > ouza\ ;
+代代 > yoyo\ ;
+奇貨 > kika\ ;
+以上 > ijou\ ;
+義旗 > giki\ ;
+理事 > riji\ ;
+有意 > yuui\ ;
+有情 > ujou\ ;
+不期 > fuki\ ;
+他事 > taji\ ;
+狒狒 > hihi\ ;
+付与 > fuyo\ ;
+主意 > shui\ ;
+狐狸 > kori\ ;
+世故 > seko\ ;
+不時 > fuji\ ;
+露語 > rogo\ ;
+大路 > ooji\ ;
+王家 > ouke\ ;
+義援 > gien\ ;
+王子 > ouji\ ;
+一期 > ikki\ ;
+義捐 > gien\ ;
+誹議 > higi\ ;
+貴下 > kika\ ;
+一斗 > itto\ ;
+王妃 > ouhi\ ;
+王女 > oujo\ ;
+青葉 > aoba\ ;
+語路 > goro\ ;
+青菜 > aona\ ;
+互助 > gojo\ ;
+木場 > kiba\ ;
+五分 > gobu\ ;
+一揆 > ikki\ ;
+事務 > jimu\ ;
+下手 > heta\ ;
+下戸 > geko\ ;
+東亞 > toua\ ;
+東亜 > toua\ ;
+木地 > kiji\ ;
+王土 > oudo\ ;
+美技 > bigi\ ;
+上意 > joui\ ;
+一戸 > ikko\ ;
+独楽 > koma\ ;
+誤記 > goki\ ;
+音波 > onpa\ ;
+些事 > saji\ ;
+韻母 > inbo\ ;
+映画 > eiga\ ;
+予備 > yobi\ ;
+二価 > nika\ ;
+施肥 > sehi\ ;
+題意 > daii\ ;
+二佐 > nisa\ ;
+予価 > yoka\ ;
+外衣 > gaii\ ;
+不帰 > fuki\ ;
+敷衍 > fuen\ ;
+早稲 > wase\ ;
+訛音 > kaon\ ;
+羽太 > hata\ ;
+煙霧 > enmu\ ;
+王化 > ouka\ ;
+煙霞 > enka\ ;
+煙雨 > en''u\ ;
+風呂 > furo\ ;
+乾位 > keni\ ;
+擬音 > gion\ ;
+威権 > iken\ ;
+一己 > ikko\ ;
+縁起 > engi\ ;
+九分 > kubu\ ;
+不安 > fuan\ ;
+妖異 > youi\ ;
+訃音 > fuon\ ;
+机下 > kika\ ;
+父祖 > fuso\ ;
+下婢 > kahi\ ;
+一家 > ikke\ ;
+陰阜 > infu\ ;
+奇縁 > kien\ ;
+暗愚 > angu\ ;
+与太 > yota\ ;
+下女 > gejo\ ;
+無駄 > muda\ ;
+縁語 > engo\ ;
+雅語 > gago\ ;
+王事 > ouji\ ;
+時機 > jiki\ ;
+早生 > wase\ ;
+獣医 > juui\ ;
+美姫 > biki\ ;
+婦女 > fujo\ ;
+美妓 > bigi\ ;
+風位 > fuui\ ;
+美女 > bijo\ ;
+九九 > kuku\ ;
+青砥 > aoto\ ;
+家々 > ieie\ ;
+無音 > muon\ ;
+議案 > gian\ ;
+不図 > futo\ ;
+隘路 > airo\ ;
+猛威 > moui\ ;
+降雨 > kouu\ ;
+智慧 > chie\ ;
+不器 > fuki\ ;
+多義 > tagi\ ;
+暴威 > boui\ ;
+多羅 > tara\ ;
+時期 > jiki\ ;
+語義 > gogi\ ;
+陰部 > inbu\ ;
+女王 > joou\ ;
+主位 > shui\ ;
+非理 > hiri\ ;
+雲脂 > fuke\ ;
+義務 > gimu\ ;
+離苦 > riku\ ;
+暮夜 > boya\ ;
+青田 > aota\ ;
+不和 > fuwa\ ;
+不味 > fumi\ ;
+隠語 > ingo\ ;
+護摩 > goma\ ;
+三味 > sami\ ;
+不可 > fuka\ ;
+下吏 > kari\ ;
+下司 > gesu\ ;
+下句 > geku\ ;
+縷縷 > ruru\ ;
+更位 > koui\ ;
+壁蝨 > dani\ ;
+美味 > bimi\ ;
+下卑 > gebi\ ;
+謳歌 > ouka\ ;
+護持 > goji\ ;
+一句 > ikku\ ;
+不利 > furi\ ;
+無鉛 > muen\ ;
+美化 > bika\ ;
+一区 > ikku\ ;
+頭垢 > fuke\ ;
+不具 > fugu\ ;
+頭囲 > toui\ ;
+記譜 > kifu\ ;
+不備 > fubi\ ;
+訛語 > kago\ ;
+犠打 > gida\ ;
+外科 > geka\ ;
+離縁 > rien\ ;
+世事 > seji\ ;
+韻字 > inji\ ;
+世世 > yoyo\ ;
+大目 > oome\ ;
+無辜 > muko\ ;
+上位 > joui\ ;
+下付 > kafu\ ;
+縁者 > enja\ ;
+日歩 > hibu\ ;
+不二 > fuji\ ;
+不予 > fuyo\ ;
+一個 > ikko\ ;
+爾汝 > jijo\ ;
+威容 > iyou\ ;
+音字 > onji\ ;
+夜着 > yogi\ ;
+院議 > ingi\ ;
+夜目 > yome\ ;
+一佐 > issa\ ;
+父母 > fubo\ ;
+非毀 > hiki\ ;
+時差 > jisa\ ;
+細雨 > saiu\ ;
+霊異 > reii\ ;
+誇示 > koji\ ;
+基音 > kion\ ;
+緯線 > isen\ ;
+附議 > fugi\ ;
+時宜 > jigi\ ;
+代々 > yoyo\ ;
+隠者 > inja\ ;
+時季 > jiki\ ;
+閻魔 > enma\ ;
+日日 > hibi\ ;
+数珠 > juzu\ ;
+附記 > fuki\ ;
+頤使 > ishi\ ;
+陰萎 > in''i\ ;
+音吐 > onto\ ;
+音叉 > onsa\ ;
+威名 > imei\ ;
+青木 > aoki\ ;
+威厳 > igen\ ;
+謝意 > shai\ ;
+綺羅 > kira\ ;
+威勢 > isei\ ;
+基部 > kibu\ ;
+如意 > nyoi\ ;
+譬喩 > hiyu\ ;
+議員 > giin\ ;
+威光 > ikou\ ;
+好意 > koui\ ;
+好悪 > kouo\ ;
+夜気 > yaki\ ;
+音価 > onka\ ;
+韻事 > inji\ ;
+記紀 > kiki\ ;
+既往 > kiou\ ;
+語気 > goki\ ;
+爾後 > jigo\ ;
+威令 > irei\ ;
+時務 > jimu\ ;
+奥意 > okui\ ;
+垢離 > kori\ ;
+雲気 > unki\ ;
+間間 > mama\ ;
+墓碑 > bohi\ ;
+雨水 > usui\ ;
+譲位 > joui\ ;
+塩素 > enso\ ;
+時価 > jika\ ;
+議事 > giji\ ;
+無縁 > muen\ ;
+夜暗 > yaan\ ;
+時事 > jiji\ ;
+時下 > jika\ ;
+夏期 > kaki\ ;
+委任 > inin\ ;
+奴婢 > nuhi\ ;
+縊死 > ishi\ ;
+大手 > oode\ ;
+木々 > kigi\ ;
+露座 > roza\ ;
+雅歌 > gaka\ ;
+詠歌 > eika\ ;
+陰画 > inga\ ;
+大意 > taii\ ;
+壊死 > eshi\ ;
+無碍 > muge\ ;
+詐欺 > sagi\ ;
+誠意 > seii\ ;
+煙火 > enka\ ;
+経緯 > keii\ ;
+青地 > aoji\ ;
+青図 > aozu\ ;
+敬意 > keii\ ;
+摩羅 > mara\ ;
+粗野 > soya\ ;
+大屋 > ooya\ ;
+誤差 > gosa\ ;
+大尉 > taii\ ;
+曳々 > eiei\ ;
+縁故 > enko\ ;
+無理 > muri\ ;
+夢寐 > mubi\ ;
+緯書 > isho\ ;
+多岐 > taki\ ;
+煙波 > enpa\ ;
+糖衣 > toui\ ;
+露地 > roji\ ;
+女児 > joji\ ;
+多寡 > taka\ ;
+援護 > engo\ ;
+旧事 > kuji\ ;
+語尾 > gobi\ ;
+誤字 > goji\ ;
+爾余 > jiyo\ ;
+露営 > roei\ ;
+世々 > yoyo\ ;
+夥多 > kata\ ;
+無煙 > muen\ ;
+数寄 > suki\ ;
+夏季 > kaki\ ;
+阿片 > ahen\ ;
+陰気 > inki\ ;
+夜夜 > yoyo\ ;
+多多 > tata\ ;
+旗下 > kika\ ;
+土間 > doma\ ;
+措辞 > soji\ ;
+縁座 > enza\ ;
+方位 > houi\ ;
+外囲 > gaii\ ;
+課員 > kain\ ;
+基礎 > kiso\ ;
+無派 > muha\ ;
+規矩 > kiku\ ;
+夜営 > yaei\ ;
+濾過 > roka\ ;
+雨天 > uten\ ;
+奈何 > ikan\ ;
+雨声 > usei\ ;
+無比 > muhi\ ;
+見目 > mime\ ;
+雨域 > uiki\ ;
+縁家 > enka\ ;
+夜半 > yowa\ ;
+雉子 > kiji\ ;
+衣香 > ikou\ ;
+語呂 > goro\ ;
+無機 > muki\ ;
+補語 > hogo\ ;
+総意 > soui\ ;
+隠微 > inbi\ ;
+語句 > goku\ ;
+掩護 > engo\ ;
+補記 > hoki\ ;
+随意 > zuii\ ;
+夷人 > ijin\ ;
+衣類 > irui\ ;
+夜具 > yagu\ ;
+無期 > muki\ ;
+粗菓 > soka\ ;
+多価 > taka\ ;
+霊位 > reii\ ;
+攻囲 > koui\ ;
+多事 > taji\ ;
+火箭 > hiya\ ;
+絵本 > ehon\ ;
+固辞 > koji\ ;
+狒々 > hihi\ ;
+土語 > dogo\ ;
+地衣 > chii\ ;
+攘夷 > joui\ ;
+雇員 > koin\ ;
+無援 > muen\ ;
+雅味 > gami\ ;
+簿記 > boki\ ;
+無手 > mute\ ;
+無我 > muga\ ;
+火矢 > hiya\ ;
+阿房 > ahou\ ;
+覇気 > haki\ ;
+補肥 > hohi\ ;
+訴因 > soin\ ;
+規模 > kibo\ ;
+雄偉 > yuui\ ;
+故事 > koji\ ;
+袈裟 > kesa\ ;
+塗布 > tofu\ ;
+絵師 > eshi\ ;
+除夜 > joya\ ;
+無季 > muki\ ;
+火焔 > kaen\ ;
+火炎 > kaen\ ;
+火炉 > karo\ ;
+押韻 > ouin\ ;
+塩基 > enki\ ;
+擬古 > giko\ ;
+為政 > isei\ ;
+無塩 > muen\ ;
+推移 > suii\ ;
+無垢 > muku\ ;
+無地 > muji\ ;
+附図 > fuzu\ ;
+素手 > sude\ ;
+火気 > kaki\ ;
+擬似 > giji\ ;
+塩化 > enka\ ;
+記事 > kiji\ ;
+無味 > mumi\ ;
+日々 > hibi\ ;
+阿呆 > ahou\ ;
+地異 > chii\ ;
+闇愚 > angu\ ;
+院主 > inju\ ;
+堂宇 > douu\ ;
+青々 > aoao\ ;
+阿兄 > akei\ ;
+無価 > muka\ ;
+場合 > baai\ ;
+絵像 > ezou\ ;
+無二 > muni\ ;
+無事 > buji\ ;
+衣紋 > emon\ ;
+納屋 > naya\ ;
+見場 > miba\ ;
+阿世 > asei\ ;
+笑顔 > egao\ ;
+揶揄 > yayu\ ;
+基因 > kiin\ ;
+素地 > soji\ ;
+素因 > soin\ ;
+粗朶 > soda\ ;
+手間 > tema\ ;
+図画 > zuga\ ;
+章魚 > tako\ ;
+夜々 > yoyo\ ;
+多々 > tata\ ;
+火屋 > hoya\ ;
+批議 > higi\ ;
+瀬戸 > seto\ ;
+螻蛄 > kera\ ;
+火夫 > kafu\ ;
+間夫 > mabu\ ;
+持碁 > jigo\ ;
+演舞 > enbu\ ;
+糊塗 > koto\ ;
+粗布 > sofu\ ;
+演者 > enja\ ;
+火器 > kaki\ ;
+蛙黽 > abou\ ;
+演義 > engi\ ;
+掏摸 > suri\ ;
+行為 > koui\ ;
+籠手 > kote\ ;
+行火 > anka\ ;
+箇箇 > koko\ ;
+裸婦 > rafu\ ;
+図案 > zuan\ ;
+土手 > dote\ ;
+温雅 > onga\ ;
+援助 > enjo\ ;
+蝦蟇 > gama\ ;
+因果 > inga\ ;
+衣桁 > ikou\ ;
+齟齬 > sogo\ ;
+火事 > kaji\ ;
+固持 > koji\ ;
+四時 > yoji\ ;
+四方 > yomo\ ;
+蝌蚪 > kato\ ;
+国府 > kofu\ ;
+捻子 > neji\ ;
+地場 > jiba\ ;
+淫靡 > inbi\ ;
+手羽 > teba\ ;
+蜚語 > higo\ ;
+淫雨 > in''u\ ;
+補助 > hojo\ ;
+捩子 > neji\ ;
+湯葉 > yuba\ ;
+慰霊 > irei\ ;
+土器 > doki\ ;
+蜘蛛 > kumo\ ;
+按摩 > anma\ ;
+衣帯 > itai\ ;
+補佐 > hosa\ ;
+授受 > juju\ ;
+打破 > daha\ ;
+拿捕 > daho\ ;
+鼻音 > bion\ ;
+土匪 > dohi\ ;
+唖鈴 > arei\ ;
+演武 > enbu\ ;
+演歌 > enka\ ;
+地位 > chii\ ;
+移項 > ikou\ ;
+在位 > zaii\ ;
+衍字 > enji\ ;
+園児 > enji\ ;
+愛馬 > aiba\ ;
+授与 > juyo\ ;
+四囲 > shii\ ;
+固化 > koka\ ;
+捕吏 > hori\ ;
+愛飲 > aiin\ ;
+哀音 > aion\ ;
+海馬 > todo\ ;
+愛顧 > aiko\ ;
+海鞘 > hoya\ ;
+回向 > ekou\ ;
+渡英 > toei\ ;
+戯画 > giga\ ;
+慰謝 > isha\ ;
+黴雨 > baiu\ ;
+演技 > engi\ ;
+衣冠 > ikan\ ;
+演戯 > engi\ ;
+移送 > isou\ ;
+和音 > waon\ ;
+押忍 > ossu\ ;
+移転 > iten\ ;
+銅鑼 > dora\ ;
+慰藉 > isha\ ;
+把持 > haji\ ;
+愛輝 > aiki\ ;
+湯煮 > yuni\ ;
+移譲 > ijou\ ;
+悪鬼 > akki\ ;
+意趣 > ishu\ ;
+愛護 > aigo\ ;
+移行 > ikou\ ;
+哀話 > aiwa\ ;
+哀訴 > aiso\ ;
+呉須 > gosu\ ;
+間々 > mama\ ;
+呉音 > goon\ ;
+黄鉛 > ouen\ ;
+秘話 > hiwa\ ;
+湯気 > yuge\ ;
+螺子 > neji\ ;
+意見 > iken\ ;
+拇印 > boin\ ;
+黄身 > kimi\ ;
+和議 > wagi\ ;
+押印 > ouin\ ;
+器具 > kigu\ ;
+和語 > wago\ ;
+悲運 > hiun\ ;
+鼓舞 > kobu\ ;
+吐露 > toro\ ;
+恩顧 > onko\ ;
+恵雨 > keiu\ ;
+浮華 > fuka\ ;
+海苔 > nori\ ;
+海芋 > kaiu\ ;
+神酒 > miki\ ;
+浄衣 > joue\ ;
+河馬 > kaba\ ;
+蕎麦 > soba\ ;
+押下 > ouka\ ;
+渡河 > toka\ ;
+鸚鵡 > oumu\ ;
+合間 > aima\ ;
+右面 > umen\ ;
+鼻祖 > biso\ ;
+悪貨 > akka\ ;
+渡欧 > toou\ ;
+移管 > ikan\ ;
+否運 > hiun\ ;
+古音 > koon\ ;
+嘔吐 > outo\ ;
+悲話 > hiwa\ ;
+和英 > waei\ ;
+古雅 > koga\ ;
+滋味 > jimi\ ;
+扶助 > fujo\ ;
+唖然 > azen\ ;
+蘇芳 > suou\ ;
+等位 > toui\ ;
+藍褸 > boro\ ;
+悪衣 > akui\ ;
+祖語 > sogo\ ;
+怪雨 > kaiu\ ;
+湯屋 > yuya\ ;
+唾棄 > daki\ ;
+右辺 > uhen\ ;
+慈父 > jifu\ ;
+喜寿 > kiju\ ;
+古都 > koto\ ;
+沿路 > enro\ ;
+野鄙 > yahi\ ;
+湯女 > yuna\ ;
+厭離 > onri\ ;
+鼻炎 > bien\ ;
+野辺 > nobe\ ;
+黄緯 > koui\ ;
+蕪辞 > buji\ ;
+恩誼 > ongi\ ;
+穎果 > eika\ ;
+鋭気 > eiki\ ;
+営営 > eiei\ ;
+法衣 > houe\ ;
+河豚 > fugu\ ;
+野路 > noji\ ;
+温度 > ondo\ ;
+法螺 > hora\ ;
+蓖麻 > hima\ ;
+所以 > yuen\ ;
+呪符 > jufu\ ;
+慈母 > jibo\ ;
+古語 > kogo\ ;
+営利 > eiri\ ;
+古記 > koki\ ;
+応需 > ouju\ ;
+薔薇 > bara\ ;
+我利 > gari\ ;
+移民 > imin\ ;
+喇嘛 > rama\ ;
+憎悪 > zouo\ ;
+空尉 > kuui\ ;
+穎悟 > eigo\ ;
+気韻 > kiin\ ;
+右葉 > uyou\ ;
+麻痺 > mahi\ ;
+哀歌 > aika\ ;
+気障 > kiza\ ;
+受蘊 > juun\ ;
+御顔 > okao\ ;
+愛機 > aiki\ ;
+右舷 > ugen\ ;
+鹵簿 > robo\ ;
+恩義 > ongi\ ;
+十雨 > juuu\ ;
+右脳 > unou\ ;
+温和 > onwa\ ;
+永遠 > eien\ ;
+愚案 > guan\ ;
+野良 > nora\ ;
+忌避 > kihi\ ;
+蒿雀 > aoji\ ;
+淫婦 > inpu\ ;
+気鋭 > kiei\ ;
+惰気 > daki\ ;
+和気 > waki\ ;
+蚊帳 > kaya\ ;
+海松 > miru\ ;
+慈愛 > jiai\ ;
+慈悲 > jihi\ ;
+句義 > kugi\ ;
+古義 > kogi\ ;
+和歌 > waka\ ;
+汚行 > okou\ ;
+呼気 > koki\ ;
+気運 > kiun\ ;
+蚊屋 > kaya\ ;
+破風 > hafu\ ;
+愛撫 > aibu\ ;
+黄泉 > yomi\ ;
+印譜 > inpu\ ;
+応訴 > ouso\ ;
+御酒 > miki\ ;
+母音 > boin\ ;
+都雅 > toga\ ;
+黄櫨 > haze\ ;
+忌諱 > kiki\ ;
+哀慕 > aibo\ ;
+医道 > idou\ ;
+合着 > aigi\ ;
+穏和 > onwa\ ;
+空位 > kuui\ ;
+秘技 > higi\ ;
+祖父 > sofu\ ;
+愛慕 > aibo\ ;
+御身 > onmi\ ;
+同異 > doui\ ;
+古稀 > koki\ ;
+殺陣 > tate\ ;
+慰問 > imon\ ;
+卑語 > higo\ ;
+危虞 > kigu\ ;
+意思 > ishi\ ;
+悲歌 > hika\ ;
+区費 > kuhi\ ;
+意志 > ishi\ ;
+呆気 > akke\ ;
+邪魔 > jama\ ;
+邪鬼 > jaki\ ;
+都鄙 > tohi\ ;
+区議 > kugi\ ;
+私意 > shii\ ;
+徒費 > tohi\ ;
+慰労 > irou\ ;
+破邪 > haja\ ;
+往路 > ouro\ ;
+淫事 > inji\ ;
+古画 > koga\ ;
+邪飛 > jahi\ ;
+祖母 > sobo\ ;
+御衣 > gyoi\ ;
+鋭利 > eiri\ ;
+派手 > hade\ ;
+悪果 > akka\ ;
+油煙 > yuen\ ;
+弥陀 > mida\ ;
+野猿 > yaen\ ;
+受理 > juri\ ;
+呼応 > koou\ ;
+秘奥 > hiou\ ;
+怪異 > kaii\ ;
+都議 > togi\ ;
+意外 > igai\ ;
+比諭 > hiyu\ ;
+遺骸 > igai\ ;
+汚穢 > owai\ ;
+愚図 > guzu\ ;
+征衣 > seii\ ;
+情意 > joui\ ;
+流布 > rufu\ ;
+母語 > bogo\ ;
+遺香 > ikou\ ;
+野火 > nobi\ ;
+和字 > waji\ ;
+合歓 > nemu\ ;
+移動 > idou\ ;
+印綬 > inju\ ;
+加除 > kajo\ ;
+御茶 > ocha\ ;
+意嚮 > ikou\ ;
+遺風 > ifuu\ ;
+毀誉 > kiyo\ ;
+麻布 > mafu\ ;
+鼻下 > bika\ ;
+悪感 > okan\ ;
+悪意 > akui\ ;
+意向 > ikou\ ;
+移住 > ijuu\ ;
+虚位 > kyoi\ ;
+医者 > isha\ ;
+恵方 > ehou\ ;
+虚仮 > koke\ ;
+移乗 > ijou\ ;
+愛児 > aiji\ ;
+加里 > kari\ ;
+野次 > yaji\ ;
+沙汰 > sata\ ;
+秘儀 > higi\ ;
+助辞 > joji\ ;
+武運 > buun\ ;
+欧露 > ouro\ ;
+御簾 > misu\ ;
+悪寒 > okan\ ;
+危疑 > kigi\ ;
+味噌 > miso\ ;
+右方 > uhou\ ;
+印画 > inga\ ;
+廈門 > amoi\ ;
+秘事 > hiji\ ;
+汚点 > oten\ ;
+印璽 > inji\ ;
+毛羽 > keba\ ;
+禍因 > kain\ ;
+野暮 > yabo\ ;
+呵呵 > kaka\ ;
+同意 > doui\ ;
+怒気 > doki\ ;
+合意 > goui\ ;
+御礼 > orei\ ;
+波布 > habu\ ;
+御碗 > owan\ ;
+恣意 > shii\ ;
+葵花 > kika\ ;
+加護 > kago\ ;
+遺贈 > izou\ ;
+汚泥 > odei\ ;
+遺賢 > iken\ ;
+磁気 > jiki\ ;
+遺財 > izai\ ;
+石蓴 > aosa\ ;
+御盆 > obon\ ;
+悲喜 > hiki\ ;
+汚水 > osui\ ;
+反故 > hogo\ ;
+弊衣 > heii\ ;
+悲哀 > hiai\ ;
+遠路 > enro\ ;
+医界 > ikai\ ;
+遺誡 > ikai\ ;
+医用 > iyou\ ;
+遺訓 > ikun\ ;
+南無 > namu\ ;
+征矢 > soya\ ;
+追風 > oite\ ;
+悪化 > akka\ ;
+気炎 > kien\ ;
+砒素 > hiso\ ;
+怪我 > kega\ ;
+右岸 > ugan\ ;
+麾下 > kika\ ;
+永永 > eiei\ ;
+汚染 > osen\ ;
+恩威 > on''i\ ;
+祇園 > gion\ ;
+古希 > koki\ ;
+荷駄 > nida\ ;
+危機 > kiki\ ;
+気温 > kion\ ;
+徒爾 > toji\ ;
+思惟 > shii\ ;
+微温 > bion\ ;
+過誤 > kago\ ;
+古字 > koji\ ;
+合図 > aizu\ ;
+破瓜 > haka\ ;
+遺著 > icho\ ;
+幾重 > ikue\ ;
+汚損 > oson\ ;
+吏員 > riin\ ;
+厭悪 > en''o\ ;
+可塑 > kaso\ ;
+去年 > kozo\ ;
+遺草 > isou\ ;
+莫迦 > baka\ ;
+遺芳 > ihou\ ;
+名医 > meii\ ;
+厚意 > koui\ ;
+吏務 > rimu\ ;
+歌舞 > kabu\ ;
+迂遠 > uen\ ;
+微意 > bii\ ;
+叙位 > joi\ ;
+迂路 > uro\ ;
+得手 > ete\ ;
+気宇 > kiu\ ;
+差違 > sai\ ;
+医家 > ika\ ;
+八重 > yae\ ;
+医員 > iin\ ;
+遺棄 > iki\ ;
+医務 > imu\ ;
+医事 > iji\ ;
+遺愛 > iai\ ;
+遺影 > iei\ ;
+部位 > bui\ ;
+武威 > bui\ ;
+遺孤 > iko\ ;
+差異 > sai\ ;
+異音 > ion\ ;
+遺児 > iji\ ;
+違和 > iwa\ ;
+遺事 > iji\ ;
+希有 > keu\ ;
+迂愚 > ugu\ ;
+欧亜 > oua\ ;
+次位 > jii\ ;
+次亜 > jia\ ;
+眉宇 > biu\ ;
+辞意 > jii\ ;
+異議 > igi\ ;
+辞彙 > jii\ ;
+居間 > ima\ ;
+異義 > igi\ ;
+帰依 > kie\ ;
+香魚 > ayu\ ;
+機位 > kii\ ;
+似非 > ese\ ;
+尾羽 > oha\ ;
+異父 > ifu\ ;
+会陰 > ein\ ;
+位記 > iki\ ;
+異母 > ibo\ ;
+亜麻 > ama\ ;
+以遠 > ien\ ;
+伊語 > igo\ ;
+自慰 > jii\ ;
+安芸 > aki\ ;
+亜鉛 > aen\ ;
+甲斐 > kai\ ;
+畏懼 > iku\ ;
+畏怖 > ifu\ ;
+尾根 > one\ ;
+画意 > gai\ ;
+椅子 > isu\ ;
+異図 > ito\ ;
+異化 > ika\ ;
+胃炎 > ien\ ;
+位次 > iji\ ;
+依怙 > eko\ ;
+亜科 > aka\ ;
+余意 > yoi\ ;
+仮有 > keu\ ;
+侍医 > jii\ ;
+云為 > uni\ ;
+依估 > eko\ ;
+亜欧 > aou\ ;
+以後 > igo\ ;
+以往 > iou\ ;
+他意 > tai\ ;
+賀意 > gai\ ;
+有無 > umu\ ;
+貴意 > kii\ ;
+会厭 > een\ ;
+栄位 > eii\ ;
+井戸 > ido\ ;
+非違 > hii\ ;
+夜雨 > yau\ ;
+多雨 > tau\ ;
+二尉 > nii\ ;
+雨露 > uro\ ;
+以下 > ika\ ;
+墨魚 > ika\ ;
+不意 > fui\ ;
+下意 > kai\ ;
+二位 > nii\ ;
+威武 > ibu\ ;
+有卦 > uke\ ;
+王位 > oui\ ;
+羅宇 > rao\ ;
+羽化 > uka\ ;
+絵馬 > ema\ ;
+委棄 > iki\ ;
+奇異 > kii\ ;
+下位 > kai\ ;
+阿諛 > ayu\ ;
+威儀 > igi\ ;
+壊疽 > eso\ ;
+烏賊 > ika\ ;
+委員 > iin\ ;
+雨気 > uki\ ;
+委付 > ifu\ ;
+雨期 > uki\ ;
+語意 > goi\ ;
+語彙 > goi\ ;
+女医 > joi\ ;
+如何 > dou\ ;
+雨後 > ugo\ ;
+故意 > koi\ ;
+無為 > mui\ ;
+補遺 > hoi\ ;
+雨季 > uki\ ;
+緯度 > ido\ ;
+阿比 > abi\ ;
+維持 > iji\ ;
+雲丹 > uni\ ;
+無意 > mui\ ;
+阿字 > aji\ ;
+阿媽 > ama\ ;
+灰汁 > aku\ ;
+絵図 > ezu\ ;
+見得 > mie\ ;
+阿吽 > aun\ ;
+無位 > mui\ ;
+滋雨 > jiu\ ;
+囲碁 > igo\ ;
+紆余 > uyo\ ;
+衣架 > ika\ ;
+慈雨 > jiu\ ;
+海髪 > ogo\ ;
+意馬 > iba\ ;
+図会 > zue\ ;
+所為 > sei\ ;
+悪露 > oro\ ;
+海胆 > uni\ ;
+海老 > ebi\ ;
+我意 > gai\ ;
+麻衣 > mai\ ;
+意義 > igi\ ;
+蝦夷 > ezo\ ;
+硫黄 > iou\ ;
+慰撫 > ibu\ ;
+微雨 > biu\ ;
+意気 > iki\ ;
+鋭意 > eii\ ;
+穢多 > eta\ ;
+医院 > iin\ ;
+穢土 > edo\ ;
+右縁 > uen\ ;
+慰安 > ian\ ;
+十重 > toe\ ;
+愚意 > gui\ ;
+海女 > ama\ ;
+意地 > iji\ ;
+意図 > ito\ ;
+右派 > uha\ ;
+意味 > imi\ ;
+萎靡 > ibi\ ;
+海人 > ama\ ;
+医科 > ika\ ;
+年魚 > ayu\ ;
+句意 > kui\ ;
+古意 > koi\ ;
+遺詠 > iei\ ;
+示威 > jii\ ;
+江戸 > edo\ ;
+伊井 > ii\ ;
+嗚呼 > aa\ ;
+軖 > tsumugikuruma\ ;
+糎 > senchimeitoru\ ;
+粨 > hekutomeetoru\ ;
+爫 > tsumekanmuri\ ;
+忄 > ritsushinben\ ;
+志 > kokorozashi\ ;
+政 > matsurigoto\ ;
+鶎 > kikuitadaki\ ;
+粍 > mirimeitoru\ ;
+粁 > kiromeitoru\ ;
+籵 > dekameetoru\ ;
+竰 > senchiritto\ ;
+竡 > hekutoritto\ ;
+竓 > miririttoru\ ;
+竏 > kirorittoru\ ;
+瓰 > deshiguramu\ ;
+己 > tsuchinoto\ ;
+屡 > shibashiba\ ;
+謀 > hakarigoto\ ;
+熟 > tsukudzuku\ ;
+嘴 > kuchibashi\ ;
+々 > kurikaeshi\ ;
+酛 > sakenomoto\ ;
+詔 > mikotonori\ ;
+蝟 > harinezumi\ ;
+萙 > kutabireru\ ;
+竕 > deshiritto\ ;
+甅 > senchigura\ ;
+瓸 > hekutogura\ ;
+瓱 > miriguramu\ ;
+瓩 > kiroguramu\ ;
+瓧 > dekaguramu\ ;
+擅 > hoshiimama\ ;
+勅 > mikotonori\ ;
+倩 > tsuratsura\ ;
+幻 > maboroshi\ ;
+屍 > shikabane\ ;
+孤 > minashigo\ ;
+猪 > inoshishi\ ;
+唇 > kuchibiru\ ;
+檣 > hobashira\ ;
+橘 > tachibana\ ;
+兵 > tsuwamono\ ;
+銀 > shirogane\ ;
+邪 > yokoshima\ ;
+鯐 > subashiri\ ;
+鮗 > konoshiro\ ;
+阝 > kozatohen\ ;
+踝 > kurubushi\ ;
+裃 > kamishimo\ ;
+衤 > koromohen\ ;
+竍 > dekaritto\ ;
+犭 > kemonohen\ ;
+椴 > todomatsu\ ;
+嵙 > yamashina\ ;
+尸 > shikabane\ ;
+凩 > kogarashi\ ;
+亥 > inoshishi\ ;
+弱 > nayonayo\ ;
+蹲 > tsukubai\ ;
+姑 > shuutome\ ;
+塊 > katamari\ ;
+堤 > tsutsumi\ ;
+鼓 > tsudzumi\ ;
+源 > minamoto\ ;
+鶏 > niwatori\ ;
+叢 > kusamura\ ;
+印 > shirushi\ ;
+魂 > tamashii\ ;
+腸 > harawata\ ;
+杯 > sakazuki\ ;
+雷 > kaminari\ ;
+雁 > karigane\ ;
+暁 > akatsuki\ ;
+紫 > murasaki\ ;
+掌 > tenohira\ ;
+抑 > somosomo\ ;
+懐 > futokoro\ ;
+黛 > mayuzumi\ ;
+鱩 > hatahata\ ;
+鰰 > hatahata\ ;
+鯑 > kazunoko\ ;
+魁 > sakigake\ ;
+鬣 > tategami\ ;
+餞 > hanamuke\ ;
+頑 > katakuna\ ;
+隼 > hayabusa\ ;
+陵 > misasagi\ ;
+閊 > tsukaeru\ ;
+鋸 > nokogiri\ ;
+躾 > shitsuke\ ;
+諺 > kotowaza\ ;
+褌 > fundoshi\ ;
+蛤 > hamaguri\ ;
+蒜 > nin''niku\ ;
+聾 > mimishii\ ;
+綴 > tsudzuri\ ;
+篁 > takamura\ ;
+筍 > takenoko\ ;
+碑 > ishibumi\ ;
+癸 > mizunoto\ ;
+漣 > sazanami\ ;
+楠 > kusunoki\ ;
+巫 > kan''nagi\ ;
+寿 > kotobuki\ ;
+圕 > toshokan\ ;
+形 > katachi\ ;
+轍 > wadachi\ ;
+巷 > chimata\ ;
+跣 > hadashi\ ;
+趣 > omomuki\ ;
+局 > tsubone\ ;
+寧 > mushiro\ ;
+獺 > kawauso\ ;
+狐 > kitsune\ ;
+嫂 > aniyome\ ;
+話 > hanashi\ ;
+燕 > tsubame\ ;
+滴 > shizuku\ ;
+湖 > mizuumi\ ;
+剣 > tsurugi\ ;
+凝 > shikori\ ;
+冠 > kanmuri\ ;
+椿 > tsubaki\ ;
+梟 > fukurou\ ;
+頂 > itadaki\ ;
+柱 > hashira\ ;
+俎 > manaita\ ;
+林 > hayashi\ ;
+侍 > samurai\ ;
+羊 > hitsuji\ ;
+東 > higashi\ ;
+昔 > mukashi\ ;
+経 > tateito\ ;
+筵 > mushiro\ ;
+錦 > nishiki\ ;
+私 > watashi\ ;
+祭 > matsuri\ ;
+社 > yashiro\ ;
+確 > tashika\ ;
+邸 > yashiki\ ;
+齲 > mushiba\ ;
+黥 > irezumi\ ;
+鶫 > tsugumi\ ;
+鵤 > ikaruga\ ;
+鵆 > chidori\ ;
+鰘 > muroaji\ ;
+鯳 > sukesou\ ;
+鬘 > katsura\ ;
+雫 > shizuku\ ;
+鎹 > kasugai\ ;
+鋩 > kissaki\ ;
+鋒 > kissaki\ ;
+銯 > kasugai\ ;
+蹄 > hidzume\ ;
+謬 > ayamari\ ;
+誼 > yoshimi\ ;
+誮 > yasashi\ ;
+襅 > chihaya\ ;
+蠎 > uwabami\ ;
+蝮 > mamushi\ ;
+蜆 > shijimi\ ;
+虱 > shirami\ ;
+蘰 > katsura\ ;
+蕾 > tsubomi\ ;
+蓆 > mushiro\ ;
+艀 > hashike\ ;
+聢 > shikato\ ;
+翼 > tsubasa\ ;
+籡 > shinshi\ ;
+礫 > tsubute\ ;
+礎 > ishizue\ ;
+睫 > matsuge\ ;
+甦 > yomigae\ ;
+牜 > ushihen\ ;
+毮 > mushiru\ ;
+毟 > mushiru\ ;
+楿 > katsura\ ;
+棗 > natsume\ ;
+梻 > shikimi\ ;
+柊 > hiiragi\ ;
+曙 > akebono\ ;
+晒 > sarashi\ ;
+旁 > tsukuri\ ;
+挘 > mushiru\ ;
+拳 > kobushi\ ;
+怺 > koraeru\ ;
+徤 > takeshi\ ;
+巽 > tatsumi\ ;
+壬 > mizunoe\ ;
+嚏 > kushami\ ;
+噺 > hanashi\ ;
+俤 > omokage\ ;
+丼 > donburi\ ;
+〃 > onajiku\ ;
+瞼 > mabuta\ ;
+辷 > suberu\ ;
+瞳 > hitomi\ ;
+輩 > yakara\ ;
+盲 > meshii\ ;
+車 > kuruma\ ;
+序 > tsuide\ ;
+皆 > min''na\ ;
+幕 > tobari\ ;
+帳 > tobari\ ;
+帝 > mikado\ ;
+左 > hidari\ ;
+疾 > shitsu\ ;
+畳 > tatami\ ;
+畠 > hatake\ ;
+畑 > hatake\ ;
+瓦 > kawara\ ;
+岬 > misaki\ ;
+届 > todoke\ ;
+尊 > mikoto\ ;
+宝 > takara\ ;
+獣 > kemono\ ;
+狼 > ookami\ ;
+独 > doitsu\ ;
+嫉 > shitsu\ ;
+誠 > makoto\ ;
+証 > akashi\ ;
+父 > chichi\ ;
+訛 > namari\ ;
+娘 > musume\ ;
+姿 > sugata\ ;
+妾 > warawa\ ;
+妹 > imouto\ ;
+要 > kaname\ ;
+襷 > tasuki\ ;
+煙 > kemuri\ ;
+襖 > fusuma\ ;
+失 > shitsu\ ;
+裸 > hadaka\ ;
+袴 > hakama\ ;
+袋 > fukuro\ ;
+衣 > koromo\ ;
+執 > shitsu\ ;
+濕 > shitsu\ ;
+蟋 > shitsu\ ;
+埃 > hokori\ ;
+蟀 > shutsu\ ;
+鼬 > itachi\ ;
+鼠 > nezumi\ ;
+土 > tsuchi\ ;
+漆 > urushi\ ;
+蛹 > sanagi\ ;
+蛙 > kawazu\ ;
+湿 > shitsu\ ;
+器 > utsuwa\ ;
+港 > minato\ ;
+薬 > kusuri\ ;
+薪 > takigi\ ;
+涙 > namida\ ;
+薇 > zenmai\ ;
+薄 > susuki\ ;
+鴉 > karasu\ ;
+叱 > shitsu\ ;
+厨 > kuriya\ ;
+卸 > oroshi\ ;
+卵 > tamago\ ;
+歪 > ibitsu\ ;
+魚 > sakana\ ;
+南 > minami\ ;
+匠 > takumi\ ;
+櫻 > sakura\ ;
+苺 > ichigo\ ;
+勢 > hazumi\ ;
+檜 > hinoki\ ;
+舅 > shuuto\ ;
+榊 > sakaki\ ;
+光 > hikari\ ;
+館 > yakata\ ;
+肴 > sakana\ ;
+桜 > sakura\ ;
+候 > sourou\ ;
+響 > hibiki\ ;
+柳 > yanagi\ ;
+俥 > kuruma\ ;
+信 > makoto\ ;
+俄 > niwaka\ ;
+係 > kakari\ ;
+便 > yosuga\ ;
+枕 > makura\ ;
+机 > tsukue\ ;
+仏 > hotoke\ ;
+曇 > kumori\ ;
+雀 > suzume\ ;
+京 > miyako\ ;
+隣 > tonari\ ;
+乳 > chichi\ ;
+乙 > kinoto\ ;
+乍 > nagara\ ;
+万 > yorozu\ ;
+七 > shichi\ ;
+縁 > yosuga\ ;
+丁 > hinoto\ ;
+緑 > midori\ ;
+絣 > kasuri\ ;
+絆 > kizuna\ ;
+簾 > sudare\ ;
+鏡 > kagami\ ;
+鎖 > kusari\ ;
+筒 > tsutsu\ ;
+捌 > sabaki\ ;
+鋼 > hagane\ ;
+童 > warabe\ ;
+鋏 > hasami\ ;
+銃 > tsutsu\ ;
+鉛 > namari\ ;
+扉 > tobira\ ;
+所 > tokoro\ ;
+都 > miyako\ ;
+悉 > shitsu\ ;
+齦 > haguki\ ;
+鼈 > suppon\ ;
+黜 > chutsu\ ;
+麩 > fusuma\ ;
+麓 > fumoto\ ;
+鵥 > kakesu\ ;
+鴬 > uguisu\ ;
+鴎 > kamome\ ;
+鱸 > suzuki\ ;
+鱰 > shiira\ ;
+鱪 > shiira\ ;
+鰹 > katsuo\ ;
+鰯 > iwashi\ ;
+鰮 > iwashi\ ;
+鰚 > haraka\ ;
+鰊 > nishin\ ;
+鰆 > sawara\ ;
+鯱 > shachi\ ;
+鯰 > namazu\ ;
+鯨 > kujira\ ;
+鯣 > surume\ ;
+鮪 > maguro\ ;
+鮖 > kajika\ ;
+鮃 > hirame\ ;
+魸 > namazu\ ;
+騭 > shitsu\ ;
+颪 > oroshi\ ;
+鞐 > kohaze\ ;
+霞 > kasumi\ ;
+霙 > mizore\ ;
+雛 > hiyoko\ ;
+隲 > shitsu\ ;
+隰 > shitsu\ ;
+鑢 > yasuri\ ;
+鑕 > shitsu\ ;
+鎺 > habaki\ ;
+錺 > kazari\ ;
+銍 > chitsu\ ;
+銊 > shutsu\ ;
+鉥 > shutsu\ ;
+鉋 > kan''na\ ;
+鈨 > habaki\ ;
+醪 > moromi\ ;
+郅 > shitsu\ ;
+遖 > appare\ ;
+迚 > totemo\ ;
+軈 > yagate\ ;
+軅 > yagate\ ;
+躻 > utsuke\ ;
+躮 > segare\ ;
+踵 > kakato\ ;
+賉 > shutsu\ ;
+貭 > shitsu\ ;
+豑 > chitsu\ ;
+訁 > gonben\ ;
+袠 > chitsu\ ;
+袟 > chitsu\ ;
+衾 > fusuma\ ;
+蠍 > sasori\ ;
+蟄 > chitsu\ ;
+蝨 > shitsu\ ;
+蛍 > hotaru\ ;
+薺 > nazuna\ ;
+蕨 > warabi\ ;
+蔶 > sonoko\ ;
+蓬 > yomogi\ ;
+蒺 > shitsu\ ;
+蒅 > sukumo\ ;
+蒁 > shutsu\ ;
+莨 > tabako\ ;
+茸 > kinoko\ ;
+膣 > chitsu\ ;
+膠 > nikawa\ ;
+腟 > chitsu\ ;
+纃 > kasuri\ ;
+縅 > odoshi\ ;
+緕 > kasuri\ ;
+絀 > chutsu\ ;
+糘 > sukumo\ ;
+糒 > hoshii\ ;
+粭 > sukumo\ ;
+笂 > utsubo\ ;
+竈 > kamado\ ;
+窒 > chitsu\ ;
+窋 > chutsu\ ;
+秩 > chitsu\ ;
+秤 > hakari\ ;
+禊 > misogi\ ;
+祑 > chitsu\ ;
+礩 > shitsu\ ;
+硲 > hazama\ ;
+砦 > toride\ ;
+甩 > shutsu\ ;
+瓼 > sarake\ ;
+璱 > shitsu\ ;
+瑟 > shitsu\ ;
+狸 > tanuki\ ;
+牃 > ouchou\ ;
+烏 > karasu\ ;
+渚 > nagisa\ ;
+涎 > yodare\ ;
+泏 > chutsu\ ;
+汢 > tsuchi\ ;
+汀 > migiwa\ ;
+氵 > sanzui\ ;
+橙 > daidai\ ;
+樵 > kikori\ ;
+樮 > hokuso\ ;
+楔 > kusabi\ ;
+楊 > yanagi\ ;
+椹 > sawara\ ;
+椪 > kunugi\ ;
+椡 > kunugi\ ;
+椛 > momiji\ ;
+椚 > kunugi\ ;
+梺 > fumoto\ ;
+桼 > shitsu\ ;
+桎 > shitsu\ ;
+栞 > shiori\ ;
+柒 > shitsu\ ;
+李 > sumomo\ ;
+暦 > koyomi\ ;
+晊 > shitsu\ ;
+昴 > subaru\ ;
+摔 > shutsu\ ;
+挃 > chitsu\ ;
+抶 > chitsu\ ;
+扖 > hameru\ ;
+憖 > namaji\ ;
+愱 > shitsu\ ;
+彠 > kuwaku\ ;
+彏 > kuwaku\ ;
+彍 > kuwaku\ ;
+彉 > kuwaku\ ;
+廓 > kuruwa\ ;
+庢 > chitsu\ ;
+幟 > nobori\ ;
+幉 > tazuna\ ;
+帙 > chitsu\ ;
+嵐 > arashi\ ;
+崒 > shutsu\ ;
+岀 > shutsu\ ;
+寡 > yamome\ ;
+嫟 > jiyuku\ ;
+妷 > chitsu\ ;
+墎 > kuwaku\ ;
+堲 > shitsu\ ;
+堛 > hiyoku\ ;
+圷 > akutsu\ ;
+咰 > shutsu\ ;
+后 > kisaki\ ;
+叺 > kamasu\ ;
+厠 > kawaya\ ;
+厔 > shitsu\ ;
+厀 > shitsu\ ;
+卛 > shutsu\ ;
+劕 > shitsu\ ;
+兜 > kabuto\ ;
+儨 > shitsu\ ;
+偪 > hiyoku\ ;
+倭 > yamato\ ;
+侄 > shitsu\ ;
+伡 > kuruma\ ;
+仝 > doujou\ ;
+仇 > kataki\ ;
+〒 > yuubin\ ;
+述 > jutsu\ ;
+必 > hitsu\ ;
+辻 > tsuji\ ;
+徹 > tetsu\ ;
+瞥 > betsu\ ;
+後 > nochi\ ;
+律 > ritsu\ ;
+着 > chaku\ ;
+式 > shiki\ ;
+皺 > shiwa\ ;
+躅 > choku\ ;
+百 > hyaku\ ;
+白 > shiro\ ;
+發 > hotsu\ ;
+発 > hatsu\ ;
+幸 > sachi\ ;
+年 > toshi\ ;
+癪 > shaku\ ;
+巴 > tomoe\ ;
+病 > yamai\ ;
+略 > ryaku\ ;
+畢 > hitsu\ ;
+畜 > chiku\ ;
+町 > machi\ ;
+男 > otoko\ ;
+由 > yoshi\ ;
+島 > shima\ ;
+質 > tachi\ ;
+岸 > kishi\ ;
+屈 > kutsu\ ;
+尻 > shiri\ ;
+尺 > shaku\ ;
+實 > jitsu\ ;
+察 > satsu\ ;
+密 > mitsu\ ;
+宴 > utage\ ;
+客 > kyaku\ ;
+率 > ritsu\ ;
+識 > shiki\ ;
+猾 > katsu\ ;
+説 > setsu\ ;
+詰 > kitsu\ ;
+爺 > jijii\ ;
+爵 > shaku\ ;
+設 > setsu\ ;
+爪 > tsume\ ;
+訣 > ketsu\ ;
+觸 > shoku\ ;
+燭 > shoku\ ;
+触 > shoku\ ;
+角 > tsuno\ ;
+妻 > tsuma\ ;
+熱 > netsu\ ;
+西 > nishi\ ;
+奴 > yatsu\ ;
+奪 > datsu\ ;
+夏 > natsu\ ;
+烈 > retsu\ ;
+裂 > retsu\ ;
+袷 > awase\ ;
+炎 > honoo\ ;
+境 > sakai\ ;
+灼 > shaku\ ;
+塵 > chiri\ ;
+塚 > tsuka\ ;
+街 > machi\ ;
+基 > motoi\ ;
+濶 > katsu\ ;
+埒 > rachi\ ;
+城 > shiro\ ;
+齢 > yowai\ ;
+蝕 > shoku\ ;
+潔 > ketsu\ ;
+鼾 > ibiki\ ;
+蜂 > hachi\ ;
+蜀 > shoku\ ;
+黐 > mochi\ ;
+滑 > katsu\ ;
+滅 > metsu\ ;
+蚕 > kaiko\ ;
+溌 > hatsu\ ;
+鹿 > shika\ ;
+虫 > mushi\ ;
+虞 > osore\ ;
+噂 > uwasa\ ;
+渇 > katsu\ ;
+淵 > fuchi\ ;
+鷲 > washi\ ;
+淑 > shuku\ ;
+嗇 > shoku\ ;
+鶴 > tsuru\ ;
+薔 > shoku\ ;
+喇 > ratsu\ ;
+啜 > setsu\ ;
+唾 > tsuba\ ;
+活 > katsu\ ;
+蔑 > betsu\ ;
+哲 > tetsu\ ;
+泉 > izumi\ ;
+蓄 > chiku\ ;
+油 > abura\ ;
+没 > botsu\ ;
+咄 > totsu\ ;
+決 > ketsu\ ;
+葦 > yoshi\ ;
+著 > chaku\ ;
+汁 > tsuyu\ ;
+鰌 > dojou\ ;
+吉 > kichi\ ;
+叭 > hatsu\ ;
+口 > kuchi\ ;
+叔 > shuku\ ;
+殺 > satsu\ ;
+殖 > shoku\ ;
+却 > kyaku\ ;
+単 > hitoe\ ;
+卒 > sotsu\ ;
+匹 > hitsu\ ;
+次 > tsugi\ ;
+勿 > mochi\ ;
+髮 > hatsu\ ;
+櫛 > kushi\ ;
+劣 > retsu\ ;
+芝 > shiba\ ;
+力 > ryoku\ ;
+艶 > tsuya\ ;
+橋 > hashi\ ;
+刹 > setsu\ ;
+刷 > satsu\ ;
+樫 > kashi\ ;
+別 > betsu\ ;
+初 > hatsu\ ;
+列 > retsu\ ;
+樒 > mitsu\ ;
+舌 > shita\ ;
+切 > setsu\ ;
+刃 > yaiba\ ;
+册 > satsu\ ;
+冊 > satsu\ ;
+腰 > koshi\ ;
+八 > yatsu\ ;
+兎 > usagi\ ;
+兀 > kotsu\ ;
+脱 > datsu\ ;
+植 > shoku\ ;
+脈 > myaku\ ;
+餅 > mochi\ ;
+飾 > shoku\ ;
+飯 > meshi\ ;
+食 > shoku\ ;
+梨 > nashi\ ;
+梢 > kozue\ ;
+梓 > azusa\ ;
+傑 > ketsu\ ;
+肅 > shuku\ ;
+職 > shoku\ ;
+額 > hitai\ ;
+借 > shaku\ ;
+頁 > peiji\ ;
+柄 > tsuka\ ;
+翁 > okina\ ;
+鞭 > muchi\ ;
+鞄 > kaban\ ;
+松 > matsu\ ;
+靴 > kutsu\ ;
+罰 > batsu\ ;
+罪 > tsumi\ ;
+束 > tsuka\ ;
+佛 > butsu\ ;
+杓 > shaku\ ;
+位 > kurai\ ;
+缺 > ketsu\ ;
+伸 > noshi\ ;
+露 > tsuyu\ ;
+霰 > arare\ ;
+末 > matsu\ ;
+霜 > shimo\ ;
+月 > tsuki\ ;
+曲 > kyoku\ ;
+雜 > zatsu\ ;
+仙 > sento\ ;
+雑 > zatsu\ ;
+雇 > yatoi\ ;
+乾 > hoshi\ ;
+乞 > kotsu\ ;
+主 > nushi\ ;
+縮 > shuku\ ;
+星 > hoshi\ ;
+縞 > shima\ ;
+下 > shita\ ;
+綱 > tsuna\ ;
+絶 > zetsu\ ;
+結 > ketsu\ ;
+終 > owari\ ;
+操 > misao\ ;
+撮 > satsu\ ;
+鐵 > tetsu\ ;
+鐡 > tetsu\ ;
+築 > chiku\ ;
+節 > bushi\ ;
+箸 > hashi\ ;
+接 > setsu\ ;
+掠 > ryaku\ ;
+掘 > kutsu\ ;
+箒 > houki\ ;
+捩 > retsu\ ;
+答 > kotae\ ;
+拶 > satsu\ ;
+拭 > shiki\ ;
+括 > katsu\ ;
+拙 > setsu\ ;
+拔 > batsu\ ;
+立 > ritsu\ ;
+竊 > setsu\ ;
+拂 > futsu\ ;
+抜 > batsu\ ;
+抉 > ketsu\ ;
+突 > totsu\ ;
+穴 > ketsu\ ;
+鉢 > hachi\ ;
+払 > futsu\ ;
+鉄 > tetsu\ ;
+截 > setsu\ ;
+戦 > ikusa\ ;
+釋 > shaku\ ;
+釈 > shaku\ ;
+祝 > shuku\ ;
+酌 > shaku\ ;
+慄 > ritsu\ ;
+惚 > kotsu\ ;
+達 > tachi\ ;
+道 > michi\ ;
+逹 > tatsu\ ;
+逐 > chiku\ ;
+逆 > gyaku\ ;
+忽 > kotsu\ ;
+龞 > betsu\ ;
+齧 > ketsu\ ;
+齕 > kotsu\ ;
+齃 > katsu\ ;
+鼿 > gotsu\ ;
+鼎 > kanae\ ;
+黻 > futsu\ ;
+黠 > katsu\ ;
+麹 > kouji\ ;
+鷫 > shuku\ ;
+鷩 > hetsu\ ;
+鶻 > kotsu\ ;
+鶡 > katsu\ ;
+鶍 > isuka\ ;
+鶉 > uzura\ ;
+鵓 > hotsu\ ;
+鴰 > katsu\ ;
+鴫 > shigi\ ;
+鴃 > ketsu\ ;
+鴂 > ketsu\ ;
+鲾 > hyaku\ ;
+鲬 > kochi\ ;
+鱗 > uroko\ ;
+鱐 > shuku\ ;
+鱉 > betsu\ ;
+鱁 > chiku\ ;
+鰻 > unagi\ ;
+鰒 > awabi\ ;
+鰏 > hyoku\ ;
+鰍 > inada\ ;
+鰉 > higai\ ;
+鰈 > karei\ ;
+鯲 > dojou\ ;
+鯒 > kochi\ ;
+鯏 > asari\ ;
+鮭 > shake\ ;
+鮨 > sushi\ ;
+鮚 > kitsu\ ;
+鮓 > sushi\ ;
+鮑 > awabi\ ;
+鮅 > hitsu\ ;
+鮄 > futsu\ ;
+魩 > hachi\ ;
+魃 > batsu\ ;
+鬻 > shuku\ ;
+鬠 > katsu\ ;
+鬎 > ratsu\ ;
+髺 > gatsu\ ;
+髴 > futsu\ ;
+驖 > tetsu\ ;
+驌 > shuku\ ;
+驋 > hatsu\ ;
+騄 > ryoku\ ;
+駜 > hitsu\ ;
+駃 > ketsu\ ;
+馹 > jitsu\ ;
+馝 > hitsu\ ;
+馛 > hatsu\ ;
+饆 > hitsu\ ;
+餮 > tetsu\ ;
+餟 > tetsu\ ;
+餝 > shoku\ ;
+餑 > hotsu\ ;
+飶 > hitsu\ ;
+飭 > choku\ ;
+颳 > katsu\ ;
+颰 > hatsu\ ;
+颯 > satsu\ ;
+顣 > shuku\ ;
+頡 > kitsu\ ;
+頊 > kyoku\ ;
+韤 > batsu\ ;
+韡 > sakan\ ;
+韠 > hitsu\ ;
+韍 > futsu\ ;
+韈 > betsu\ ;
+韃 > datsu\ ;
+鞸 > hitsu\ ;
+鞨 > katsu\ ;
+靺 > matsu\ ;
+靹 > ketsu\ ;
+靨 > ekubo\ ;
+隉 > getsu\ ;
+陟 > choku\ ;
+阢 > gotsu\ ;
+闥 > tatsu\ ;
+闕 > ketsu\ ;
+闑 > getsu\ ;
+闋 > ketsu\ ;
+闊 > katsu\ ;
+閦 > shuku\ ;
+閥 > batsu\ ;
+钃 > shoku\ ;
+鑠 > shaku\ ;
+鐽 > tatsu\ ;
+鐯 > shaku\ ;
+鐍 > tetsu\ ;
+鏺 > hatsu\ ;
+鏉 > shyuu\ ;
+鏅 > shyuu\ ;
+鎧 > yoroi\ ;
+鎋 > katsu\ ;
+鍥 > ketsu\ ;
+鍘 > satsu\ ;
+鍔 > tsuba\ ;
+錨 > ikari\ ;
+錘 > tsumu\ ;
+鋨 > tetsu\ ;
+鋝 > retsu\ ;
+鋍 > hotsu\ ;
+銽 > katsu\ ;
+銫 > shoku\ ;
+銕 > tetsu\ ;
+鉽 > shuku\ ;
+鉘 > futsu\ ;
+鈺 > gyoku\ ;
+鈸 > hatsu\ ;
+鈯 > totsu\ ;
+鈤 > jitsu\ ;
+鈅 > getsu\ ;
+釰 > jitsu\ ;
+釟 > hatsu\ ;
+醱 > hatsu\ ;
+醗 > hatsu\ ;
+醔 > shyuu\ ;
+醊 > tetsu\ ;
+醁 > ryoku\ ;
+酫 > setsu\ ;
+酦 > hatsu\ ;
+鄐 > chiku\ ;
+邲 > hitsu\ ;
+逼 > hitsu\ ;
+逯 > ryoku\ ;
+适 > katsu\ ;
+迾 > retsu\ ;
+迭 > tetsu\ ;
+达 > tatsu\ ;
+辶 > chaku\ ;
+辵 > chaku\ ;
+辰 > tatsu\ ;
+辥 > setsu\ ;
+辣 > ratsu\ ;
+辜 > tsumi\ ;
+轕 > katsu\ ;
+轄 > katsu\ ;
+輿 > koshi\ ;
+輵 > katsu\ ;
+輟 > tetsu\ ;
+輂 > kyoku\ ;
+軾 > shoku\ ;
+軷 > hatsu\ ;
+軏 > getsu\ ;
+軄 > shoku\ ;
+躵 > nerau\ ;
+躩 > kyaku\ ;
+躂 > tatsu\ ;
+蹶 > ketsu\ ;
+蹩 > hetsu\ ;
+蹜 > shuku\ ;
+蹙 > shuku\ ;
+蹕 > hitsu\ ;
+踧 > shuku\ ;
+踋 > kyaku\ ;
+跼 > kyoku\ ;
+跛 > bikko\ ;
+跌 > tetsu\ ;
+跋 > batsu\ ;
+跀 > getsu\ ;
+趹 > ketsu\ ;
+趷 > kotsu\ ;
+趞 > shaku\ ;
+趐 > ketsu\ ;
+赩 > kyoku\ ;
+贖 > shoku\ ;
+賡 > shoku\ ;
+貜 > kyaku\ ;
+豁 > katsu\ ;
+讞 > getsu\ ;
+譎 > kitsu\ ;
+謖 > shoku\ ;
+謔 > gyaku\ ;
+謐 > hitsu\ ;
+諔 > shuku\ ;
+誳 > kutsu\ ;
+說 > setsu\ ;
+誖 > hotsu\ ;
+詧 > satsu\ ;
+詘 > kutsu\ ;
+訥 > totsu\ ;
+訖 > kitsu\ ;
+訐 > ketsu\ ;
+觱 > hitsu\ ;
+觖 > ketsu\ ;
+覕 > betsu\ ;
+襭 > ketsu\ ;
+襪 > betsu\ ;
+襡 > shoku\ ;
+襒 > hetsu\ ;
+襏 > hatsu\ ;
+襍 > zatsu\ ;
+褻 > setsu\ ;
+褐 > katsu\ ;
+褄 > tsuma\ ;
+裰 > tatsu\ ;
+袺 > ketsu\ ;
+袜 > batsu\ ;
+袚 > hatsu\ ;
+衵 > jitsu\ ;
+衋 > kyoku\ ;
+衊 > betsu\ ;
+蠼 > kyaku\ ;
+蠞 > setsu\ ;
+蠛 > betsu\ ;
+蠘 > setsu\ ;
+蠋 > shoku\ ;
+蟙 > shoku\ ;
+蝲 > ratsu\ ;
+蝎 > katsu\ ;
+蜜 > mitsu\ ;
+蜇 > tetsu\ ;
+蛥 > setsu\ ;
+蛣 > kitsu\ ;
+蛞 > katsu\ ;
+蛚 > retsu\ ;
+虐 > gyaku\ ;
+蘖 > getsu\ ;
+藜 > akaza\ ;
+藚 > shoku\ ;
+薩 > satsu\ ;
+薥 > shoku\ ;
+薛 > setsu\ ;
+薘 > tatsu\ ;
+薊 > azami\ ;
+蕟 > hitsu\ ;
+蕝 > setsu\ ;
+蕀 > kyoku\ ;
+蔦 > tsuta\ ;
+蔤 > bitsu\ ;
+蔎 > setsu\ ;
+蓿 > shuku\ ;
+蓽 > hitsu\ ;
+蓇 > kotsu\ ;
+葧 > hotsu\ ;
+葜 > katsu\ ;
+葖 > totsu\ ;
+葎 > ritsu\ ;
+菽 > shuku\ ;
+菝 > hatsu\ ;
+菉 > ryoku\ ;
+莭 > setsu\ ;
+莂 > hetsu\ ;
+荸 > hotsu\ ;
+荗 > shoku\ ;
+茨 > ibara\ ;
+茢 > retsu\ ;
+茜 > akane\ ;
+茍 > kyoku\ ;
+茉 > matsu\ ;
+茇 > hatsu\ ;
+茁 > satsu\ ;
+茀 > hutsu\ ;
+苾 > hitsu\ ;
+苶 > detsu\ ;
+芴 > butsu\ ;
+芍 > shaku\ ;
+艴 > hotsu\ ;
+舳 > chiku\ ;
+舝 > katsu\ ;
+舄 > shaku\ ;
+舃 > shaku\ ;
+臸 > jitsu\ ;
+臲 > getsu\ ;
+臅 > shoku\ ;
+腷 > hyoku\ ;
+腯 > totsu\ ;
+脫 > datsu\ ;
+脖 > hotsu\ ;
+脉 > myaku\ ;
+胈 > hatsu\ ;
+肸 > kitsu\ ;
+肭 > dotsu\ ;
+肋 > abara\ ;
+聒 > katsu\ ;
+聀 > shoku\ ;
+耋 > tetsu\ ;
+耊 > tetsu\ ;
+羯 > katsu\ ;
+羍 > tatsu\ ;
+罸 > batsu\ ;
+缽 > hachi\ ;
+缼 > ketsu\ ;
+纈 > ketsu\ ;
+繳 > shaku\ ;
+繘 > kitsu\ ;
+縬 > shuku\ ;
+緤 > setsu\ ;
+綽 > shaku\ ;
+綠 > ryoku\ ;
+綍 > hutsu\ ;
+絰 > tetsu\ ;
+絜 > ketsu\ ;
+絗 > kotsu\ ;
+絕 > zetsu\ ;
+絏 > setsu\ ;
+紼 > hutsu\ ;
+紲 > setsu\ ;
+紱 > hutsu\ ;
+紮 > satsu\ ;
+紇 > kotsu\ ;
+糵 > getsu\ ;
+糏 > setsu\ ;
+糀 > kouji\ ;
+粛 > shuku\ ;
+粒 > tsubu\ ;
+籙 > ryoku\ ;
+篾 > betsu\ ;
+篳 > hitsu\ ;
+篩 > furui\ ;
+篥 > ritsu\ ;
+箻 > ritsu\ ;
+箚 > satsu\ ;
+筑 > chiku\ ;
+筏 > ikada\ ;
+筁 > kyoku\ ;
+笽 > souke\ ;
+笰 > hutsu\ ;
+笔 > hitsu\ ;
+笏 > kotsu\ ;
+竭 > ketsu\ ;
+窣 > sotsu\ ;
+窟 > kutsu\ ;
+窃 > setsu\ ;
+穡 > shoku\ ;
+稷 > shoku\ ;
+稭 > katsu\ ;
+稫 > hyoku\ ;
+稡 > sotsu\ ;
+稙 > choku\ ;
+秸 > katsu\ ;
+秫 > jotsu\ ;
+秣 > matsu\ ;
+秡 > hatsu\ ;
+禝 > shoku\ ;
+祓 > futsu\ ;
+磆 > katsu\ ;
+碿 > sotsu\ ;
+碣 > ketsu\ ;
+碟 > katsu\ ;
+碏 > shaku\ ;
+硈 > katsu\ ;
+矻 > kotsu\ ;
+矚 > shoku\ ;
+矗 > chiku\ ;
+瞮 > tetsu\ ;
+瞎 > katsu\ ;
+睰 > batsu\ ;
+眜 > batsu\ ;
+盋 > hatsu\ ;
+皭 > shaku\ ;
+皕 > hyoku\ ;
+皌 > batsu\ ;
+癶 > hatsu\ ;
+癤 > setsu\ ;
+癟 > hetsu\ ;
+瘧 > gyaku\ ;
+瘜 > shoku\ ;
+瘌 > ratsu\ ;
+瘄 > shaku\ ;
+瘃 > shoku\ ;
+痆 > datsu\ ;
+疙 > gitsu\ ;
+畷 > tetsu\ ;
+畧 > ryaku\ ;
+畟 > shoku\ ;
+甶 > futsu\ ;
+瓞 > tetsu\ ;
+瑮 > ritsu\ ;
+珿 > shuku\ ;
+珌 > hitsu\ ;
+玦 > ketsu\ ;
+玥 > getsu\ ;
+玐 > hatsu\ ;
+玃 > kyaku\ ;
+獦 > katsu\ ;
+獝 > kitsu\ ;
+獗 > ketsu\ ;
+猲 > katsu\ ;
+猝 > sotsu\ ;
+狘 > ketsu\ ;
+犮 > hatsu\ ;
+爝 > shaku\ ;
+爍 > shaku\ ;
+爇 > zetsu\ ;
+燵 > tatsu\ ;
+熚 > hitsu\ ;
+煞 > satsu\ ;
+焯 > shaku\ ;
+焫 > zetsu\ ;
+焔 > honoo\ ;
+焏 > kyoku\ ;
+烕 > ketsu\ ;
+瀒 > shoku\ ;
+濇 > shoku\ ;
+澈 > tetsu\ ;
+潚 > shuku\ ;
+潑 > hatsu\ ;
+潏 > ketsu\ ;
+滭 > hitsu\ ;
+滀 > chiku\ ;
+溭 > shoku\ ;
+溧 > ritsu\ ;
+溂 > ratsu\ ;
+湢 > hyoku\ ;
+湜 > shoku\ ;
+渴 > katsu\ ;
+渫 > setsu\ ;
+渤 > botsu\ ;
+渋 > shibu\ ;
+淈 > kotsu\ ;
+涅 > netsu\ ;
+浬 > kairi\ ;
+浡 > hotsu\ ;
+浙 > setsu\ ;
+洯 > ketsu\ ;
+洫 > kyoku\ ;
+洌 > retsu\ ;
+泬 > ketsu\ ;
+泐 > ryoku\ ;
+泌 > hitsu\ ;
+沸 > futsu\ ;
+沫 > matsu\ ;
+沕 > butsu\ ;
+沒 > botsu\ ;
+汔 > kitsu\ ;
+氟 > hutsu\ ;
+氒 > ketsu\ ;
+殛 > kyoku\ ;
+殁 > botsu\ ;
+歿 > botsu\ ;
+歾 > botsu\ ;
+歽 > setsu\ ;
+歹 > gatsu\ ;
+歠 > setsu\ ;
+歘 > kutsu\ ;
+歇 > ketsu\ ;
+欻 > kutsu\ ;
+欯 > kitsu\ ;
+欠 > ketsu\ ;
+欟 > tsuki\ ;
+櫱 > getsu\ ;
+櫁 > mitsu\ ;
+檫 > satsu\ ;
+檋 > kyoku\ ;
+橛 > ketsu\ ;
+樴 > shoku\ ;
+槭 > shuku\ ;
+榾 > kotsu\ ;
+榍 > setsu\ ;
+榀 > komai\ ;
+楾 > hazou\ ;
+楬 > ketsu\ ;
+椣 > shide\ ;
+椊 > sotsu\ ;
+椄 > setsu\ ;
+棁 > setsu\ ;
+梲 > setsu\ ;
+桲 > hotsu\ ;
+桰 > katsu\ ;
+桛 > kasei\ ;
+桔 > kitsu\ ;
+桀 > ketsu\ ;
+栻 > choku\ ;
+栰 > hatsu\ ;
+栨 > setsu\ ;
+栃 > tochi\ ;
+柷 > shuku\ ;
+柮 > totsu\ ;
+杰 > ketsu\ ;
+杤 > tochi\ ;
+杌 > gotsu\ ;
+杁 > eburi\ ;
+朸 > ryoku\ ;
+朳 > hatsu\ ;
+术 > jutsu\ ;
+朮 > jutsu\ ;
+朅 > ketsu\ ;
+曷 > katsu\ ;
+暼 > hetsu\ ;
+暱 > jitsu\ ;
+晢 > setsu\ ;
+昵 > jitsu\ ;
+昳 > tetsu\ ;
+昩 > batsu\ ;
+昢 > hotsu\ ;
+昒 > kotsu\ ;
+旭 > asahi\ ;
+斫 > shaku\ ;
+斣 > shuku\ ;
+敪 > tatsu\ ;
+敠 > tatsu\ ;
+敕 > choku\ ;
+攝 > setsu\ ;
+擽 > ryaku\ ;
+擷 > ketsu\ ;
+擦 > satsu\ ;
+撻 > tachi\ ;
+撥 > bachi\ ;
+撤 > tetsu\ ;
+撇 > hetsu\ ;
+撅 > ketsu\ ;
+摋 > satsu\ ;
+摂 > setsu\ ;
+搰 > kotsu\ ;
+搩 > ketsu\ ;
+搐 > chiku\ ;
+揳 > setsu\ ;
+揲 > setsu\ ;
+揬 > totsu\ ;
+揠 > satsu\ ;
+揑 > getsu\ ;
+掟 > okite\ ;
+掇 > tatsu\ ;
+捽 > sotsu\ ;
+捺 > natsu\ ;
+捸 > totsu\ ;
+捝 > tatsu\ ;
+捏 > detsu\ ;
+捋 > ratsu\ ;
+挶 > kyoku\ ;
+挩 > tatsu\ ;
+挈 > ketsu\ ;
+拮 > kitsu\ ;
+拉 > ratsu\ ;
+抹 > matsu\ ;
+抐 > dotsu\ ;
+抈 > getsu\ ;
+扤 > gotsu\ ;
+扎 > satsu\ ;
+戠 > shoku\ ;
+戞 > katsu\ ;
+戜 > tetsu\ ;
+戛 > katsu\ ;
+戄 > kyaku\ ;
+懤 > chyuu\ ;
+懎 > shoku\ ;
+憠 > ketsu\ ;
+憟 > shoku\ ;
+憋 > hetsu\ ;
+愎 > hyoku\ ;
+愊 > hyoku\ ;
+愂 > botsu\ ;
+惙 > tetsu\ ;
+悊 > tetsu\ ;
+恤 > jutsu\ ;
+怵 > jutsu\ ;
+怭 > hitsu\ ;
+怫 > futsu\ ;
+怛 > datsu\ ;
+忔 > kitsu\ ;
+徏 > choku\ ;
+彿 > futsu\ ;
+彴 > shaku\ ;
+彃 > hitsu\ ;
+彂 > hotsu\ ;
+弼 > hitsu\ ;
+弻 > hitsu\ ;
+弦 > tsuru\ ;
+弡 > kutsu\ ;
+廐 > umaya\ ;
+庂 > shoku\ ;
+幯 > setsu\ ;
+幭 > betsu\ ;
+帴 > satsu\ ;
+帥 > sotsu\ ;
+帚 > houki\ ;
+帕 > batsu\ ;
+巿 > hutsu\ ;
+巀 > satsu\ ;
+嶱 > katsu\ ;
+嶭 > gatsu\ ;
+嶍 > shihu\ ;
+嵽 > tetsu\ ;
+嵲 > getsu\ ;
+嵥 > ketsu\ ;
+嵑 > ketsu\ ;
+嵂 > ritsu\ ;
+崱 > shoku\ ;
+崫 > kutsu\ ;
+崛 > kutsu\ ;
+峠 > touge\ ;
+峚 > bitsu\ ;
+峌 > tetsu\ ;
+岪 > hutsu\ ;
+岤 > ketsu\ ;
+岏 > guwan\ ;
+岊 > setsu\ ;
+岉 > butsu\ ;
+屼 > gotsu\ ;
+屹 > kitsu\ ;
+屵 > gatsu\ ;
+屴 > ryoku\ ;
+屫 > kyaku\ ;
+屩 > kyaku\ ;
+尳 > kotsu\ ;
+尗 > shuku\ ;
+尐 > setsu\ ;
+寣 > kotsu\ ;
+寔 > shoku\ ;
+宻 > mitsu\ ;
+宓 > bitsu\ ;
+宊 > totsu\ ;
+孽 > getsu\ ;
+孼 > getsu\ ;
+孰 > izure\ ;
+孛 > botsu\ ;
+孒 > ketsu\ ;
+孑 > ketsu\ ;
+孎 > shoku\ ;
+嬇 > kuwai\ ;
+嬂 > shoku\ ;
+嫳 > hetsu\ ;
+嫡 > chaku\ ;
+媟 > setsu\ ;
+婼 > shaku\ ;
+婌 > shuku\ ;
+娎 > ketsu\ ;
+姴 > retsu\ ;
+姡 > katsu\ ;
+姞 > kitsu\ ;
+妺 > batsu\ ;
+妲 > datsu\ ;
+妰 > chaku\ ;
+妭 > hatsu\ ;
+妁 > shaku\ ;
+奯 > katsu\ ;
+契 > setsu\ ;
+夷 > ebisu\ ;
+夬 > ketsu\ ;
+夨 > shoku\ ;
+夙 > shuku\ ;
+壷 > tsubo\ ;
+墢 > hatsu\ ;
+墌 > shaku\ ;
+墆 > tetsu\ ;
+塛 > ritsu\ ;
+堨 > getsu\ ;
+埴 > shoku\ ;
+埱 > shyuu\ ;
+埓 > rachi\ ;
+垤 > tetsu\ ;
+垡 > hatsu\ ;
+垔 > shyou\ ;
+垏 > rotsu\ ;
+垃 > ratsu\ ;
+坺 > hatsu\ ;
+坹 > ketsu\ ;
+坲 > hutsu\ ;
+坪 > tsubo\ ;
+圿 > katsu\ ;
+圽 > botsu\ ;
+圴 > shaku\ ;
+圪 > gitsu\ ;
+圣 > kutsu\ ;
+囮 > otori\ ;
+囫 > kotsu\ ;
+囓 > ketsu\ ;
+囑 > shoku\ ;
+囐 > satsu\ ;
+囋 > satsu\ ;
+嚽 > setsu\ ;
+嚼 > shaku\ ;
+嚞 > tetsu\ ;
+噶 > katsu\ ;
+噲 > kuwai\ ;
+噱 > kyaku\ ;
+噠 > tatsu\ ;
+噘 > ketsu\ ;
+噈 > shuku\ ;
+噄 > kitsu\ ;
+嘱 > shoku\ ;
+嘠 > katsu\ ;
+嘎 > katsu\ ;
+嗶 > hitsu\ ;
+嗧 > garon\ ;
+嗢 > ratsu\ ;
+嗖 > shuhu\ ;
+嗕 > shoku\ ;
+嗐 > katsu\ ;
+喫 > kitsu\ ;
+喝 > katsu\ ;
+喌 > shuku\ ;
+喆 > tetsu\ ;
+啠 > tetsu\ ;
+啒 > kotsu\ ;
+唿 > kotsu\ ;
+唰 > setsu\ ;
+哾 > yatsu\ ;
+哷 > retsu\ ;
+哳 > tatsu\ ;
+哱 > hotsu\ ;
+哫 > shoku\ ;
+哘 > sasou\ ;
+哋 > tetsu\ ;
+咱 > satsu\ ;
+咭 > kitsu\ ;
+咧 > retsu\ ;
+咈 > hutsu\ ;
+咇 > hetsu\ ;
+呾 > tatsu\ ;
+呐 > totsu\ ;
+吷 > ketsu\ ;
+吶 > totsu\ ;
+吡 > hitsu\ ;
+吋 > inchi\ ;
+吃 > kitsu\ ;
+叕 > tetsu\ ;
+叐 > hatsu\ ;
+厩 > umaya\ ;
+厥 > ketsu\ ;
+卼 > gotsu\ ;
+卻 > kyaku\ ;
+卹 > jutsu\ ;
+卩 > setsu\ ;
+卨 > setsu\ ;
+卍 > manji\ ;
+卆 > sotsu\ ;
+匱 > hitsu\ ;
+匫 > kotsu\ ;
+匤 > kyaku\ ;
+匢 > kotsu\ ;
+匃 > katsu\ ;
+匁 > monme\ ;
+勺 > shaku\ ;
+勶 > ketsu\ ;
+勪 > kyaku\ ;
+勖 > kyaku\ ;
+勃 > botsu\ ;
+劽 > retsu\ ;
+劼 > katsu\ ;
+劚 > chaku\ ;
+劄 > satsu\ ;
+劂 > ketsu\ ;
+劀 > katsu\ ;
+剟 > tetsu\ ;
+剎 > satsu\ ;
+剌 > ratsu\ ;
+刮 > katsu\ ;
+别 > betsu\ ;
+刜 > hutsu\ ;
+刖 > getsu\ ;
+刔 > ketsu\ ;
+凓 > ritsu\ ;
+冽 > retsu\ ;
+冹 > hutsu\ ;
+决 > ketsu\ ;
+儲 > mouke\ ;
+僪 > kitsu\ ;
+僦 > shyuu\ ;
+僁 > setsu\ ;
+傠 > hatsu\ ;
+傈 > ritsu\ ;
+傄 > katsu\ ;
+偰 > setsu\ ;
+偟 > kuwau\ ;
+偈 > ketsu\ ;
+倔 > kutsu\ ;
+倐 > shuku\ ;
+倏 > shuku\ ;
+倌 > kuwan\ ;
+俶 > shuku\ ;
+侼 > hotsu\ ;
+侻 > tatsu\ ;
+侷 > kyoku\ ;
+侙 > choku\ ;
+侓 > rotsu\ ;
+侐 > kyoku\ ;
+佸 > katsu\ ;
+佶 > kitsu\ ;
+佪 > kuwai\ ;
+佚 > tetsu\ ;
+佖 > hitsu\ ;
+伵 > kyoku\ ;
+伳 > setsu\ ;
+伜 > sotsu\ ;
+伐 > batsu\ ;
+仴 > gatsu\ ;
+仡 > kitsu\ ;
+仈 > hatsu\ ;
+亟 > kyoku\ ;
+亍 > choku\ ;
+亅 > ketsu\ ;
+乴 > setsu\ ;
+乄 > shime\ ;
+乀 > futsu\ ;
+丿 > hetsu\ ;
+串 > kushi\ ;
+〆 > shime\ ;
+石 > koku\ ;
+迫 > haku\ ;
+迄 > made\ ;
+心 > shin\ ;
+込 > komu\ ;
+徴 > chou\ ;
+徳 > toku\ ;
+辱 > joku\ ;
+瞭 > ryou\ ;
+瞬 > shun\ ;
+復 > fuku\ ;
+辛 > shin\ ;
+得 > toku\ ;
+彼 > kare\ ;
+役 > yaku\ ;
+影 > kage\ ;
+彫 > chou\ ;
+睦 > boku\ ;
+督 > toku\ ;
+弾 > tama\ ;
+眺 > chou\ ;
+強 > kyou\ ;
+張 > chou\ ;
+輯 > shuu\ ;
+眞 > shin\ ;
+弔 > chou\ ;
+眉 > mayu\ ;
+較 > kaku\ ;
+直 > hita\ ;
+軒 > noki\ ;
+益 > yaku\ ;
+廂 > shou\ ;
+皿 > sara\ ;
+庵 > iori\ ;
+皮 > kawa\ ;
+庭 > niwa\ ;
+店 > mise\ ;
+底 > soko\ ;
+躑 > teki\ ;
+躍 > yaku\ ;
+躊 > chuu\ ;
+床 > yuka\ ;
+的 > mato\ ;
+庁 > chou\ ;
+幹 > miki\ ;
+蹴 > shuu\ ;
+平 > hira\ ;
+蹠 > seki\ ;
+蹟 > seki\ ;
+癖 > kuse\ ;
+幅 > haba\ ;
+療 > ryou\ ;
+常 > towa\ ;
+席 > seki\ ;
+希 > mare\ ;
+布 > nuno\ ;
+巻 > maki\ ;
+跳 > chou\ ;
+川 > kawa\ ;
+症 > shou\ ;
+足 > ashi\ ;
+越 > etsu\ ;
+超 > chou\ ;
+赫 > kaku\ ;
+畫 > kaku\ ;
+赤 > seki\ ;
+留 > ryuu\ ;
+画 > kaku\ ;
+申 > saru\ ;
+生 > nama\ ;
+甚 > shin\ ;
+崖 > gake\ ;
+崎 > saki\ ;
+峰 > mine\ ;
+賑 > shin\ ;
+賊 > zoku\ ;
+賃 > chin\ ;
+責 > seki\ ;
+山 > yama\ ;
+屬 > zoku\ ;
+属 > zoku\ ;
+屑 > kuzu\ ;
+豆 > mame\ ;
+琴 > koto\ ;
+就 > shuu\ ;
+少 > shou\ ;
+小 > shou\ ;
+将 > shou\ ;
+球 > tama\ ;
+対 > tsui\ ;
+寺 > tera\ ;
+寵 > chou\ ;
+審 > shin\ ;
+寥 > ryou\ ;
+寢 > shin\ ;
+珍 > chin\ ;
+富 > tomi\ ;
+寂 > sabi\ ;
+宿 > yado\ ;
+宮 > miya\ ;
+室 > muro\ ;
+宗 > shuu\ ;
+玖 > kyuu\ ;
+玉 > dama\ ;
+安 > yasu\ ;
+守 > mori\ ;
+宅 > taku\ ;
+讀 > toku\ ;
+學 > gaku\ ;
+獲 > kaku\ ;
+譯 > yaku\ ;
+孫 > mago\ ;
+獨 > doku\ ;
+学 > gaku\ ;
+證 > shou\ ;
+獄 > goku\ ;
+猿 > saru\ ;
+猫 > neko\ ;
+謡 > utai\ ;
+謎 > nazo\ ;
+嬌 > kyou\ ;
+謁 > etsu\ ;
+狹 > kyou\ ;
+狭 > kyou\ ;
+狂 > kyou\ ;
+嫁 > yome\ ;
+調 > chou\ ;
+誰 > dare\ ;
+読 > toku\ ;
+誂 > chou\ ;
+婿 > muko\ ;
+特 > toku\ ;
+詳 > shou\ ;
+物 > mono\ ;
+牧 > boku\ ;
+牛 > ushi\ ;
+評 > hyou\ ;
+牒 > chou\ ;
+婆 > baba\ ;
+診 > shin\ ;
+訳 > wake\ ;
+訟 > shou\ ;
+娠 > shin\ ;
+託 > taku\ ;
+爆 > baku\ ;
+姫 > hime\ ;
+燒 > shou\ ;
+覺 > kaku\ ;
+覚 > kaku\ ;
+妙 > myou\ ;
+熊 > kuma\ ;
+覆 > fuku\ ;
+襲 > shuu\ ;
+照 > shou\ ;
+煤 > susu\ ;
+襁 > kyou\ ;
+焼 > yaki\ ;
+夫 > otto\ ;
+焦 > shou\ ;
+夢 > yume\ ;
+夜 > yoru\ ;
+外 > hoka\ ;
+複 > fuku\ ;
+裾 > suso\ ;
+壱 > ichi\ ;
+壓 > atsu\ ;
+壁 > kabe\ ;
+為 > tame\ ;
+炭 > sumi\ ;
+墨 > sumi\ ;
+袖 > sode\ ;
+墓 > haka\ ;
+衷 > chuu\ ;
+表 > hyou\ ;
+塩 > shio\ ;
+衝 > shou\ ;
+塞 > soku\ ;
+術 > sube\ ;
+行 > gyou\ ;
+衆 > shuu\ ;
+蠢 > shun\ ;
+瀝 > reki\ ;
+堀 > hori\ ;
+濯 > taku\ ;
+濁 > daku\ ;
+激 > geki\ ;
+澤 > taku\ ;
+垣 > kaki\ ;
+型 > kata\ ;
+澄 > chou\ ;
+潮 > shio\ ;
+蝠 > fuku\ ;
+蝉 > semi\ ;
+坂 > saka\ ;
+漿 > shou\ ;
+鼻 > hana\ ;
+漲 > chou\ ;
+圧 > atsu\ ;
+漠 > baku\ ;
+園 > sono\ ;
+國 > koku\ ;
+蜃 > shin\ ;
+漂 > hyou\ ;
+漁 > ryou\ ;
+国 > kuni\ ;
+黴 > kabi\ ;
+黙 > moku\ ;
+默 > moku\ ;
+黒 > kuro\ ;
+黍 > kibi\ ;
+蛇 > hebi\ ;
+囁 > shou\ ;
+溺 > deki\ ;
+麦 > mugi\ ;
+麥 > baku\ ;
+蚤 > nomi\ ;
+溢 > itsu\ ;
+溝 > mizo\ ;
+溜 > ryuu\ ;
+虎 > tora\ ;
+測 > soku\ ;
+嘗 > shou\ ;
+渉 > shou\ ;
+鷹 > taka\ ;
+深 > shin\ ;
+藥 > yaku\ ;
+藤 > fuji\ ;
+嗅 > kyuu\ ;
+藁 > wara\ ;
+涼 > ryou\ ;
+涜 > toku\ ;
+喋 > chou\ ;
+喉 > nodo\ ;
+消 > shou\ ;
+浸 > shin\ ;
+浴 > yoku\ ;
+浜 > hama\ ;
+浚 > shun\ ;
+蕎 > kyou\ ;
+商 > shou\ ;
+流 > ryuu\ ;
+洲 > shuu\ ;
+唱 > shou\ ;
+唯 > tada\ ;
+蔭 > kage\ ;
+津 > shin\ ;
+洞 > hora\ ;
+洛 > raku\ ;
+唖 > oshi\ ;
+蓮 > hasu\ ;
+哭 > koku\ ;
+鳩 > hato\ ;
+注 > chuu\ ;
+鳥 > tori\ ;
+泥 > doro\ ;
+泣 > kyuu\ ;
+波 > nami\ ;
+蓋 > futa\ ;
+泊 > haku\ ;
+況 > kyou\ ;
+咽 > nodo\ ;
+沼 > numa\ ;
+蒻 > jaku\ ;
+河 > kawa\ ;
+蒲 > gama\ ;
+咳 > seki\ ;
+咲 > shou\ ;
+沢 > sawa\ ;
+咎 > kyuu\ ;
+沈 > chin\ ;
+汲 > kyuu\ ;
+周 > shuu\ ;
+鱈 > tara\ ;
+告 > koku\ ;
+求 > kyuu\ ;
+落 > ochi\ ;
+吸 > kyuu\ ;
+水 > mizu\ ;
+民 > tami\ ;
+吊 > chou\ ;
+各 > kaku\ ;
+右 > migi\ ;
+華 > hana\ ;
+毬 > kyuu\ ;
+召 > shou\ ;
+叫 > kyou\ ;
+只 > tada\ ;
+古 > furu\ ;
+取 > tori\ ;
+毒 > doku\ ;
+収 > shuu\ ;
+母 > haha\ ;
+双 > futa\ ;
+菊 > kiku\ ;
+友 > tomo\ ;
+及 > kyuu\ ;
+又 > mata\ ;
+殿 > dono\ ;
+殻 > kara\ ;
+莢 > saya\ ;
+原 > hara\ ;
+厄 > yaku\ ;
+歴 > reki\ ;
+即 > soku\ ;
+博 > baku\ ;
+協 > kyou\ ;
+卓 > taku\ ;
+草 > kusa\ ;
+升 > masu\ ;
+鬱 > utsu\ ;
+欲 > yoku\ ;
+欝 > utsu\ ;
+鬚 > hige\ ;
+匙 > saji\ ;
+北 > hoku\ ;
+茎 > kuki\ ;
+茅 > kaya\ ;
+匂 > niou\ ;
+髷 > mage\ ;
+髭 > hige\ ;
+髪 > kami\ ;
+若 > jaku\ ;
+勝 > shou\ ;
+高 > taka\ ;
+苔 > koke\ ;
+花 > hana\ ;
+骨 > hone\ ;
+助 > suke\ ;
+劇 > geki\ ;
+劃 > kaku\ ;
+剽 > hyou\ ;
+割 > wari\ ;
+良 > ryou\ ;
+剥 > haku\ ;
+機 > hata\ ;
+驚 > kyou\ ;
+削 > saku\ ;
+則 > soku\ ;
+刻 > koku\ ;
+船 > fune\ ;
+刺 > toge\ ;
+舶 > haku\ ;
+横 > yoko\ ;
+舟 > fune\ ;
+標 > hyou\ ;
+舎 > seki\ ;
+舊 > kyuu\ ;
+刈 > kari\ ;
+樅 > momi\ ;
+樂 > gaku\ ;
+臭 > shuu\ ;
+臣 > shin\ ;
+駒 > koma\ ;
+駐 > chuu\ ;
+臍 > heso\ ;
+槌 > tsui\ ;
+凌 > ryou\ ;
+槇 > maki\ ;
+馴 > shun\ ;
+冬 > fuyu\ ;
+膝 > hiza\ ;
+膜 > maku\ ;
+榛 > shin\ ;
+香 > kyou\ ;
+首 > kubi\ ;
+円 > maru\ ;
+内 > uchi\ ;
+楽 > raku\ ;
+腹 > hara\ ;
+極 > goku\ ;
+共 > domo\ ;
+業 > waza\ ;
+六 > roku\ ;
+兩 > ryou\ ;
+入 > nyuu\ ;
+元 > moto\ ;
+脣 > shin\ ;
+償 > shou\ ;
+脚 > ashi\ ;
+儘 > mama\ ;
+椎 > tsui\ ;
+脊 > seki\ ;
+脇 > waki\ ;
+脅 > kyou\ ;
+脂 > yani\ ;
+能 > yoku\ ;
+胸 > mune\ ;
+森 > mori\ ;
+棚 > tana\ ;
+僚 > ryou\ ;
+僕 > boku\ ;
+僑 > kyou\ ;
+傷 > shou\ ;
+肩 > kata\ ;
+肝 > kimo\ ;
+肘 > hiji\ ;
+傘 > kasa\ ;
+肖 > shou\ ;
+肌 > hada\ ;
+傍 > waki\ ;
+肉 > niku\ ;
+梃 > teko\ ;
+聽 > chou\ ;
+偽 > nise\ ;
+聴 > chou\ ;
+聳 > shou\ ;
+側 > hata\ ;
+聚 > shuu\ ;
+桐 > kiri\ ;
+聊 > ryou\ ;
+桃 > momo\ ;
+桁 > keta\ ;
+格 > kaku\ ;
+頸 > kubi\ ;
+耳 > mimi\ ;
+頬 > hoho\ ;
+領 > ryou\ ;
+栗 > kuri\ ;
+者 > mono\ ;
+頃 > goro\ ;
+柿 > kaki\ ;
+柵 > saku\ ;
+修 > shuu\ ;
+柚 > yuzu\ ;
+俗 > zoku\ ;
+柔 > nyuu\ ;
+習 > shuu\ ;
+翌 > yoku\ ;
+促 > soku\ ;
+侵 > shin\ ;
+価 > atai\ ;
+羞 > shuu\ ;
+供 > tomo\ ;
+鞘 > saya\ ;
+革 > kawa\ ;
+作 > saku\ ;
+杖 > tsue\ ;
+村 > mura\ ;
+杏 > anzu\ ;
+杉 > sugi\ ;
+伽 > togi\ ;
+朴 > boku\ ;
+伴 > tomo\ ;
+伯 > haku\ ;
+札 > fuda\ ;
+本 > moto\ ;
+霧 > kiri\ ;
+休 > kyuu\ ;
+伏 > fuku\ ;
+服 > fuku\ ;
+震 > shin\ ;
+雲 > kumo\ ;
+仲 > naka\ ;
+仰 > gyou\ ;
+仮 > kari\ ;
+雪 > yuki\ ;
+曝 > baku\ ;
+他 > hoka\ ;
+雌 > mesu\ ;
+集 > shuu\ ;
+仄 > soku\ ;
+人 > hito\ ;
+享 > kyou\ ;
+亦 > mata\ ;
+暢 > chou\ ;
+障 > shou\ ;
+隙 > suki\ ;
+隔 > kaku\ ;
+續 > zoku\ ;
+事 > koto\ ;
+隆 > ryuu\ ;
+暇 > hima\ ;
+隅 > sumi\ ;
+了 > ryou\ ;
+陸 > roku\ ;
+晶 > shou\ ;
+陰 > kage\ ;
+晝 > chuu\ ;
+之 > kore\ ;
+久 > kyuu\ ;
+時 > toki\ ;
+昼 > hiru\ ;
+丸 > maru\ ;
+昭 > shou\ ;
+中 > naka\ ;
+昨 > saku\ ;
+縦 > tate\ ;
+春 > haru\ ;
+両 > ryou\ ;
+縛 > baku\ ;
+縋 > tsui\ ;
+丈 > dake\ ;
+昇 > shou\ ;
+縄 > nawa\ ;
+一 > ichi\ ;
+旨 > mune\ ;
+旗 > hata\ ;
+族 > zoku\ ;
+闇 > yami\ ;
+旅 > tabi\ ;
+綿 > wata\ ;
+閾 > yoku\ ;
+綾 > ryou\ ;
+閲 > etsu\ ;
+新 > shin\ ;
+閣 > kaku\ ;
+斥 > seki\ ;
+関 > seki\ ;
+続 > zoku\ ;
+料 > ryou\ ;
+閑 > hima\ ;
+斑 > mura\ ;
+斎 > toki\ ;
+絹 > kinu\ ;
+敵 > teki\ ;
+給 > kyuu\ ;
+絡 > raku\ ;
+教 > kyou\ ;
+救 > kyuu\ ;
+組 > kumi\ ;
+紹 > shou\ ;
+收 > shuu\ ;
+紳 > shin\ ;
+攫 > kaku\ ;
+索 > saku\ ;
+級 > kyuu\ ;
+紙 > kami\ ;
+紐 > himo\ ;
+紅 > beni\ ;
+約 > yaku\ ;
+擱 > kaku\ ;
+糧 > ryou\ ;
+撲 > boku\ ;
+粧 > shou\ ;
+粥 > kayu\ ;
+粉 > kona\ ;
+撃 > geki\ ;
+摺 > shou\ ;
+米 > kome\ ;
+籠 > kago\ ;
+籍 > seki\ ;
+鐘 > kane\ ;
+鐐 > ryou\ ;
+揺 > yuri\ ;
+篭 > kago\ ;
+篤 > toku\ ;
+描 > byou\ ;
+掴 > kaku\ ;
+箱 > hako\ ;
+管 > kuda\ ;
+鍵 > kagi\ ;
+鍮 > chuu\ ;
+策 > saku\ ;
+鍋 > nabe\ ;
+筋 > suji\ ;
+等 > nado\ ;
+筈 > hazu\ ;
+筆 > fude\ ;
+挾 > kyou\ ;
+笹 > sasa\ ;
+録 > roku\ ;
+錯 > saku\ ;
+振 > shin\ ;
+笠 > kasa\ ;
+笑 > shou\ ;
+錐 > kiri\ ;
+指 > yubi\ ;
+竹 > take\ ;
+競 > kyou\ ;
+端 > hana\ ;
+章 > shou\ ;
+招 > shou\ ;
+拍 > haku\ ;
+抽 > chuu\ ;
+窮 > kyuu\ ;
+窓 > mado\ ;
+銑 > zuku\ ;
+技 > waza\ ;
+承 > shou\ ;
+空 > sora\ ;
+究 > kyuu\ ;
+積 > seki\ ;
+扇 > ougi\ ;
+房 > fusa\ ;
+鈴 > suzu\ ;
+稱 > shou\ ;
+種 > tane\ ;
+戟 > geki\ ;
+戚 > seki\ ;
+我 > ware\ ;
+稍 > yaya\ ;
+程 > hodo\ ;
+稀 > mare\ ;
+称 > shou\ ;
+釣 > chou\ ;
+針 > hari\ ;
+釜 > kama\ ;
+釘 > kugi\ ;
+秒 > byou\ ;
+秀 > shuu\ ;
+禿 > hage\ ;
+憩 > ikoi\ ;
+醤 > shou\ ;
+醜 > shuu\ ;
+憔 > shou\ ;
+憑 > hyou\ ;
+福 > fuku\ ;
+禄 > roku\ ;
+慾 > yoku\ ;
+酷 > koku\ ;
+酬 > shuu\ ;
+神 > kami\ ;
+酒 > sake\ ;
+態 > zama\ ;
+愕 > gaku\ ;
+郷 > kyou\ ;
+郭 > kaku\ ;
+惜 > seki\ ;
+惑 > waku\ ;
+悪 > waru\ ;
+碧 > heki\ ;
+碌 > roku\ ;
+悄 > shou\ ;
+恭 > kyou\ ;
+適 > teki\ ;
+恥 > haji\ ;
+硝 > shou\ ;
+恐 > kyou\ ;
+逸 > itsu\ ;
+進 > shin\ ;
+週 > shuu\ ;
+怯 > kyou\ ;
+急 > kyuu\ ;
+速 > soku\ ;
+通 > tsuu\ ;
+怎 > shin\ ;
+砂 > suna\ ;
+追 > tsui\ ;
+龥 > yaku\ ;
+龣 > kaku\ ;
+龠 > yaku\ ;
+龝 > shuu\ ;
+龔 > kyou\ ;
+龏 > kyou\ ;
+龍 > ryuu\ ;
+齺 > shuu\ ;
+齱 > seku\ ;
+齰 > saku\ ;
+齪 > soku\ ;
+齨 > kyuu\ ;
+齣 > koma\ ;
+齠 > chou\ ;
+齚 > saku\ ;
+齔 > shin\ ;
+齓 > shin\ ;
+齅 > kyuu\ ;
+鼼 > gyou\ ;
+鼫 > seki\ ;
+鼦 > chou\ ;
+鼚 > chou\ ;
+鼏 > beki\ ;
+鼂 > chou\ ;
+黷 > toku\ ;
+黰 > shin\ ;
+黑 > koku\ ;
+麿 > maro\ ;
+麴 > kiku\ ;
+麯 > kiku\ ;
+麨 > shou\ ;
+麞 > shou\ ;
+麘 > kyou\ ;
+麎 > shin\ ;
+鹶 > kyou\ ;
+鹢 > geki\ ;
+鹡 > seki\ ;
+鸴 > kaku\ ;
+鸙 > yaku\ ;
+鸖 > kaku\ ;
+鸑 > gaku\ ;
+鸐 > teki\ ;
+鸊 > heki\ ;
+鷽 > kaku\ ;
+鷸 > itsu\ ;
+鷯 > ryou\ ;
+鷮 > kyou\ ;
+鷦 > shou\ ;
+鷟 > saku\ ;
+鷚 > ryuu\ ;
+鷊 > geki\ ;
+鷁 > geki\ ;
+鶺 > seki\ ;
+鶹 > ryuu\ ;
+鶸 > jaku\ ;
+鶮 > koku\ ;
+鶪 > keki\ ;
+鶩 > boku\ ;
+鶚 > gaku\ ;
+鶖 > shuu\ ;
+鶓 > byou\ ;
+鶒 > seki\ ;
+鶃 > geki\ ;
+鵲 > jaku\ ;
+鵰 > chou\ ;
+鵩 > fuku\ ;
+鵢 > shin\ ;
+鵠 > koku\ ;
+鵟 > kyou\ ;
+鵙 > mozu\ ;
+鵔 > shun\ ;
+鵇 > toki\ ;
+鵅 > raku\ ;
+鵃 > chuu\ ;
+鵂 > kyuu\ ;
+鴪 > itsu\ ;
+鴨 > kamo\ ;
+鴗 > ryuu\ ;
+鴇 > toki\ ;
+鴆 > chin\ ;
+鳦 > itsu\ ;
+鲌 > haku\ ;
+鱷 > gaku\ ;
+鱶 > fuka\ ;
+鱵 > shin\ ;
+鱲 > ryou\ ;
+鱨 > shou\ ;
+鱧 > hamo\ ;
+鱜 > kyou\ ;
+鱚 > kisu\ ;
+鱘 > shin\ ;
+鱒 > masu\ ;
+鱏 > shin\ ;
+鱎 > kyou\ ;
+鱊 > itsu\ ;
+鱆 > shou\ ;
+鱅 > shou\ ;
+鱃 > shuu\ ;
+鱂 > shou\ ;
+鰾 > hyou\ ;
+鰽 > shuu\ ;
+鰷 > chou\ ;
+鰭 > hire\ ;
+鰨 > chou\ ;
+鰤 > buri\ ;
+鰡 > ryuu\ ;
+鰙 > haya\ ;
+鰐 > wani\ ;
+鰂 > soku\ ;
+鯽 > seki\ ;
+鯪 > ryou\ ;
+鯧 > shou\ ;
+鯥 > riku\ ;
+鯗 > shou\ ;
+鯖 > saba\ ;
+鯔 > bora\ ;
+鯎 > ugui\ ;
+鯊 > haze\ ;
+鮿 > chou\ ;
+鮼 > shin\ ;
+鮹 > tako\ ;
+鮴 > gori\ ;
+鮲 > mate\ ;
+鮱 > bora\ ;
+鮫 > same\ ;
+鮠 > haya\ ;
+鮝 > shou\ ;
+鮒 > funa\ ;
+鮊 > haku\ ;
+鮉 > chou\ ;
+魹 > todo\ ;
+魫 > shin\ ;
+魡 > teki\ ;
+魗 > shuu\ ;
+魎 > ryou\ ;
+魈 > shou\ ;
+魄 > haku\ ;
+鬺 > shou\ ;
+鬲 > reki\ ;
+鬰 > utsu\ ;
+鬯 > chou\ ;
+鬮 > kyuu\ ;
+鬩 > geki\ ;
+鬛 > ryou\ ;
+鬒 > shin\ ;
+鬆 > shou\ ;
+髹 > kyuu\ ;
+髫 > chou\ ;
+髤 > kyuu\ ;
+髟 > hyou\ ;
+髜 > kyou\ ;
+髑 > toku\ ;
+髎 > ryou\ ;
+髆 > haku\ ;
+骼 > kaku\ ;
+骲 > haku\ ;
+骮 > yoku\ ;
+骭 > hagi\ ;
+骎 > shin\ ;
+骉 > hyuu\ ;
+驫 > hyuu\ ;
+驟 > shuu\ ;
+驝 > taku\ ;
+驕 > kyou\ ;
+驑 > ryuu\ ;
+驍 > gyou\ ;
+驃 > hyou\ ;
+驀 > baku\ ;
+騶 > shuu\ ;
+騳 > toku\ ;
+騮 > ryuu\ ;
+騞 > kaku\ ;
+駿 > shun\ ;
+駸 > shin\ ;
+駵 > ryuu\ ;
+駲 > shuu\ ;
+駱 > raku\ ;
+駮 > haku\ ;
+駪 > shin\ ;
+駁 > baku\ ;
+馽 > chuu\ ;
+馲 > taku\ ;
+馰 > teki\ ;
+馮 > hyou\ ;
+馥 > fuku\ ;
+馘 > kaku\ ;
+饟 > shou\ ;
+饗 > kyou\ ;
+饈 > shuu\ ;
+餾 > ryuu\ ;
+餺 > haku\ ;
+餦 > chou\ ;
+餗 > soku\ ;
+餕 > shun\ ;
+餉 > shou\ ;
+飥 > taku\ ;
+飈 > hyou\ ;
+飇 > hyou\ ;
+飆 > hyou\ ;
+飅 > ryuu\ ;
+飄 > hyou\ ;
+飃 > hyou\ ;
+飂 > ryuu\ ;
+颷 > hyou\ ;
+颮 > hyou\ ;
+顳 > shou\ ;
+顦 > shou\ ;
+顖 > shin\ ;
+顒 > gyou\ ;
+頰 > kyou\ ;
+頣 > shin\ ;
+頞 > atsu\ ;
+頙 > saku\ ;
+頔 > teki\ ;
+頌 > shou\ ;
+韷 > raku\ ;
+韶 > shou\ ;
+韮 > nira\ ;
+韭 > kyuu\ ;
+韘 > shou\ ;
+韔 > chou\ ;
+韇 > toku\ ;
+韁 > kyou\ ;
+鞹 > kaku\ ;
+鞴 > fuku\ ;
+鞫 > kiku\ ;
+鞦 > shuu\ ;
+鞢 > shou\ ;
+鞠 > mari\ ;
+鞟 > kaku\ ;
+鞏 > kyou\ ;
+鞆 > tomo\ ;
+靮 > teki\ ;
+靕 > shin\ ;
+靏 > kaku\ ;
+靎 > kaku\ ;
+靄 > moya\ ;
+靃 > kaku\ ;
+靂 > reki\ ;
+霹 > heki\ ;
+霸 > haku\ ;
+霳 > ryuu\ ;
+霱 > itsu\ ;
+霤 > ryuu\ ;
+霢 > baku\ ;
+霡 > baku\ ;
+霍 > kaku\ ;
+霅 > shou\ ;
+霄 > shou\ ;
+霃 > chin\ ;
+霂 > boku\ ;
+雹 > hyou\ ;
+雘 > waku\ ;
+雕 > chou\ ;
+雒 > raku\ ;
+雉 > kiji\ ;
+隻 > seki\ ;
+隺 > koku\ ;
+隟 > geki\ ;
+陿 > kyou\ ;
+陳 > chin\ ;
+陞 > shou\ ;
+陗 > shou\ ;
+陌 > haku\ ;
+阞 > roku\ ;
+闢 > heki\ ;
+闟 > kyuu\ ;
+闝 > hyou\ ;
+闖 > chin\ ;
+闃 > geki\ ;
+閶 > shou\ ;
+閴 > keki\ ;
+閱 > etsu\ ;
+閠 > tama\ ;
+閖 > yuru\ ;
+閄 > koku\ ;
+镹 > kyuu\ ;
+镸 > chou\ ;
+镠 > ryuu\ ;
+锺 > shou\ ;
+钁 > kaku\ ;
+鑿 > nomi\ ;
+鑰 > yaku\ ;
+鑮 > haku\ ;
+鑣 > hyou\ ;
+鑡 > saku\ ;
+鑟 > toku\ ;
+鑜 > shou\ ;
+鑓 > yari\ ;
+鑊 > kaku\ ;
+鑄 > chuu\ ;
+鑃 > tyou\ ;
+鐸 > taku\ ;
+鐴 > heki\ ;
+鐲 > taku\ ;
+鐔 > shin\ ;
+鐎 > shou\ ;
+鐈 > kyou\ ;
+鐂 > ryuu\ ;
+鏽 > shuu\ ;
+鏹 > kyou\ ;
+鏷 > hoku\ ;
+鏦 > shou\ ;
+鏥 > shuu\ ;
+鏢 > hyou\ ;
+鏛 > shou\ ;
+鏘 > shou\ ;
+鏑 > teki\ ;
+鏐 > ryuu\ ;
+鏌 > baku\ ;
+鏊 > gyou\ ;
+鏃 > zoku\ ;
+鎴 > soku\ ;
+鎰 > itsu\ ;
+鎮 > chin\ ;
+鎭 > chin\ ;
+鎨 > shun\ ;
+鎦 > ryuu\ ;
+鎛 > haku\ ;
+鎚 > tsui\ ;
+鎘 > reki\ ;
+鎐 > soku\ ;
+鎏 > ryuu\ ;
+鎍 > saku\ ;
+鎌 > kama\ ;
+鎀 > shuu\ ;
+鍾 > shou\ ;
+鍼 > hari\ ;
+鍶 > shou\ ;
+鍬 > kuwa\ ;
+鍖 > chin\ ;
+錷 > atsu\ ;
+錶 > hyou\ ;
+錴 > roku\ ;
+錫 > suzu\ ;
+錩 > shou\ ;
+錞 > shun\ ;
+錆 > sabi\ ;
+錄 > roku\ ;
+錂 > ryou\ ;
+鋿 > shou\ ;
+鋹 > chou\ ;
+鋳 > chuu\ ;
+鋲 > byou\ ;
+鋤 > suki\ ;
+鋠 > shin\ ;
+鋜 > saku\ ;
+鋈 > yoku\ ;
+銿 > shou\ ;
+銹 > shuu\ ;
+銸 > shou\ ;
+銷 > shou\ ;
+銶 > kyuu\ ;
+銛 > mori\ ;
+銎 > kyou\ ;
+銉 > itsu\ ;
+鉾 > hoko\ ;
+鉻 > raku\ ;
+鉮 > shin\ ;
+鉦 > kane\ ;
+鉞 > etsu\ ;
+鉝 > ryuu\ ;
+鉚 > ryuu\ ;
+鉑 > haku\ ;
+鉐 > seki\ ;
+鉊 > shou\ ;
+鈾 > chuu\ ;
+鈼 > saku\ ;
+鈬 > taku\ ;
+鈕 > chuu\ ;
+鈔 > shou\ ;
+鈎 > kagi\ ;
+鈌 > etsu\ ;
+鈊 > shin\ ;
+釽 > heki\ ;
+釻 > kyuu\ ;
+釥 > shou\ ;
+釞 > shuu\ ;
+釛 > koku\ ;
+釚 > kyuu\ ;
+釙 > haku\ ;
+釗 > shou\ ;
+釔 > itsu\ ;
+釓 > hyuu\ ;
+量 > ryou\ ;
+釂 > shou\ ;
+醻 > shuu\ ;
+醮 > shou\ ;
+醭 > hoku\ ;
+醬 > shou\ ;
+醕 > shun\ ;
+醋 > saku\ ;
+醇 > shun\ ;
+酱 > shou\ ;
+酪 > raku\ ;
+酧 > shuu\ ;
+酙 > shin\ ;
+酎 > chuu\ ;
+酋 > shuu\ ;
+酉 > tori\ ;
+鄹 > shuu\ ;
+鄴 > gyou\ ;
+鄩 > shin\ ;
+鄥 > kyou\ ;
+鄣 > shou\ ;
+鄚 > baku\ ;
+鄙 > hina\ ;
+鄕 > kyou\ ;
+鄉 > kyou\ ;
+鄂 > gaku\ ;
+鄀 > jaku\ ;
+郴 > chin\ ;
+郰 > shuu\ ;
+郤 > geki\ ;
+郝 > kaku\ ;
+郇 > shun\ ;
+郄 > keki\ ;
+邵 > shou\ ;
+邱 > kyuu\ ;
+邦 > kuni\ ;
+邥 > shin\ ;
+邛 > kyou\ ;
+邋 > ryou\ ;
+邈 > baku\ ;
+遼 > ryou\ ;
+遹 > itsu\ ;
+遬 > soku\ ;
+遧 > shou\ ;
+遛 > ryuu\ ;
+遒 > shuu\ ;
+遏 > atsu\ ;
+遌 > gaku\ ;
+逷 > keki\ ;
+逴 > taku\ ;
+逪 > saku\ ;
+逩 > kamu\ ;
+逧 > sako\ ;
+逡 > shun\ ;
+逛 > kyou\ ;
+逖 > teki\ ;
+逑 > kyuu\ ;
+逎 > shuu\ ;
+逍 > shou\ ;
+迹 > seki\ ;
+迮 > saku\ ;
+迪 > teki\ ;
+迢 > chou\ ;
+迠 > shou\ ;
+迍 > chun\ ;
+辸 > shou\ ;
+辟 > heki\ ;
+轣 > reki\ ;
+轢 > reki\ ;
+轎 > kyou\ ;
+轌 > sori\ ;
+轆 > roku\ ;
+轃 > shin\ ;
+轂 > koku\ ;
+輻 > fuku\ ;
+輹 > fuku\ ;
+輴 > chun\ ;
+輬 > ryou\ ;
+輧 > byou\ ;
+輛 > ryou\ ;
+輙 > chou\ ;
+輘 > ryou\ ;
+輖 > shuu\ ;
+輒 > chou\ ;
+輌 > ryou\ ;
+輈 > chuu\ ;
+軿 > byou\ ;
+軼 > itsu\ ;
+軸 > jiku\ ;
+軭 > kyou\ ;
+軫 > shin\ ;
+軋 > atsu\ ;
+躳 > kyuu\ ;
+躬 > kyuu\ ;
+躞 > shou\ ;
+躒 > reki\ ;
+躐 > ryou\ ;
+躄 > heki\ ;
+躃 > heki\ ;
+蹼 > boku\ ;
+蹻 > kyou\ ;
+蹺 > kyou\ ;
+蹱 > shou\ ;
+蹰 > shuu\ ;
+蹤 > shou\ ;
+蹢 > teki\ ;
+蹐 > seki\ ;
+蹌 > shou\ ;
+蹀 > chou\ ;
+踸 > chin\ ;
+踳 > shun\ ;
+踱 > taku\ ;
+踪 > shou\ ;
+踢 > teki\ ;
+踖 > seki\ ;
+踉 > ryou\ ;
+踆 > shun\ ;
+踄 > haku\ ;
+跫 > kyou\ ;
+跖 > seki\ ;
+跕 > chou\ ;
+跅 > taku\ ;
+趻 > chin\ ;
+趵 > haku\ ;
+趬 > kyou\ ;
+趫 > kyou\ ;
+趠 > taku\ ;
+趙 > chou\ ;
+趂 > chin\ ;
+趁 > chin\ ;
+赳 > kyuu\ ;
+赥 > keki\ ;
+贐 > shin\ ;
+贋 > nise\ ;
+賾 > saku\ ;
+賰 > shun\ ;
+賭 > kake\ ;
+賬 > chou\ ;
+賞 > shou\ ;
+賝 > chin\ ;
+賙 > shuu\ ;
+賕 > kyuu\ ;
+貺 > kyou\ ;
+貘 > baku\ ;
+貓 > byou\ ;
+貊 > haku\ ;
+貉 > kaku\ ;
+貅 > kyuu\ ;
+貂 > chou\ ;
+豹 > hyou\ ;
+豚 > buta\ ;
+讬 > taku\ ;
+讟 > toku\ ;
+讖 > shin\ ;
+讐 > shuu\ ;
+讎 > shuu\ ;
+讍 > gaku\ ;
+讋 > shou\ ;
+讅 > shin\ ;
+讁 > taku\ ;
+譸 > chuu\ ;
+譛 > shin\ ;
+譙 > shou\ ;
+譖 > shin\ ;
+譅 > shuu\ ;
+謷 > gyou\ ;
+謫 > taku\ ;
+謞 > kaku\ ;
+謋 > kaku\ ;
+諿 > shuu\ ;
+諾 > daku\ ;
+諶 > shin\ ;
+諤 > gaku\ ;
+諜 > chou\ ;
+諗 > shin\ ;
+諒 > ryou\ ;
+諑 > taku\ ;
+諊 > kiku\ ;
+諃 > chin\ ;
+誯 > shou\ ;
+誦 > shou\ ;
+誚 > shou\ ;
+誑 > kyou\ ;
+誆 > kyou\ ;
+誅 > chuu\ ;
+詾 > kyou\ ;
+詻 > gaku\ ;
+詶 > shuu\ ;
+詵 > shin\ ;
+詗 > kyou\ ;
+註 > chuu\ ;
+訷 > shin\ ;
+訫 > shin\ ;
+訦 > shin\ ;
+訠 > shin\ ;
+訅 > kyuu\ ;
+訄 > kyuu\ ;
+觴 > shou\ ;
+觳 > koku\ ;
+觫 > soku\ ;
+觩 > kyuu\ ;
+覿 > teki\ ;
+覡 > geki\ ;
+覜 > chou\ ;
+覛 > biki\ ;
+覓 > beki\ ;
+覐 > kaku\ ;
+覈 > kaku\ ;
+襵 > shou\ ;
+襯 > shin\ ;
+襮 > haku\ ;
+襫 > seki\ ;
+襞 > hida\ ;
+襗 > taku\ ;
+襆 > hoku\ ;
+襂 > shin\ ;
+襀 > seki\ ;
+褾 > hyou\ ;
+褺 > chou\ ;
+褶 > chou\ ;
+褱 > kaie\ ;
+褥 > joku\ ;
+褎 > shuu\ ;
+褁 > seki\ ;
+裼 > seki\ ;
+裲 > ryou\ ;
+裱 > hyou\ ;
+裯 > chuu\ ;
+裛 > youu\ ;
+裘 > kyuu\ ;
+裓 > koku\ ;
+裑 > shin\ ;
+裄 > yuki\ ;
+袱 > fuku\ ;
+袰 > horo\ ;
+袗 > shin\ ;
+衱 > kyou\ ;
+衠 > shun\ ;
+衉 > kaku\ ;
+衄 > jiku\ ;
+衂 > jiku\ ;
+蠰 > shou\ ;
+蠮 > etsu\ ;
+蠨 > shou\ ;
+蠚 > kaku\ ;
+蠖 > kaku\ ;
+蠁 > kyou\ ;
+蟹 > kani\ ;
+蟯 > gyou\ ;
+蟭 > shou\ ;
+蟟 > ryou\ ;
+蟜 > kyou\ ;
+蟎 > dani\ ;
+蟉 > ryuu\ ;
+蟈 > kaku\ ;
+蟇 > hiki\ ;
+蟆 > hiki\ ;
+螿 > shou\ ;
+螽 > shuu\ ;
+螵 > hyou\ ;
+螫 > seki\ ;
+螓 > shin\ ;
+螋 > shuu\ ;
+蝶 > chou\ ;
+蝤 > shuu\ ;
+蝍 > soku\ ;
+蜽 > ryou\ ;
+蜮 > yoku\ ;
+蜩 > chou\ ;
+蜨 > shou\ ;
+蜥 > seki\ ;
+蜣 > kyou\ ;
+蜙 > shou\ ;
+蜐 > kyou\ ;
+蜄 > shin\ ;
+蛺 > kyou\ ;
+蛸 > tako\ ;
+蛭 > hiru\ ;
+蛬 > kyou\ ;
+蛩 > kyou\ ;
+蛒 > kaku\ ;
+蛁 > chou\ ;
+蚸 > reki\ ;
+蚱 > saku\ ;
+蚯 > kyuu\ ;
+蚋 > buyo\ ;
+虹 > niji\ ;
+虯 > kyuu\ ;
+虬 > kyuu\ ;
+虩 > keki\ ;
+虙 > huku\ ;
+虈 > kyou\ ;
+蘽 > ryuu\ ;
+蘗 > haku\ ;
+蘒 > hagi\ ;
+蘆 > ashi\ ;
+蘀 > taku\ ;
+藿 > kaku\ ;
+藶 > reki\ ;
+藭 > kyuu\ ;
+藪 > yabu\ ;
+藨 > hyou\ ;
+藠 > kyou\ ;
+藐 > baku\ ;
+藎 > shin\ ;
+藋 > chou\ ;
+薽 > shin\ ;
+薼 > chin\ ;
+薸 > hyou\ ;
+薜 > heki\ ;
+薓 > shin\ ;
+薑 > kyou\ ;
+薏 > yoku\ ;
+薌 > kyou\ ;
+蕺 > shuu\ ;
+蕭 > shou\ ;
+蕪 > kabu\ ;
+蕣 > shun\ ;
+蕚 > gaku\ ;
+蕗 > fuki\ ;
+蕐 > kuwa\ ;
+蕉 > shou\ ;
+蕈 > shin\ ;
+蔯 > chin\ ;
+蔣 > shou\ ;
+蔟 > zoku\ ;
+蔚 > utsu\ ;
+蔘 > shin\ ;
+蔕 > heta\ ;
+蔔 > fuku\ ;
+蔐 > teki\ ;
+蔏 > shou\ ;
+蔌 > soku\ ;
+蔇 > kike\ ;
+蔆 > ryou\ ;
+蔃 > kyou\ ;
+蓼 > tade\ ;
+蓻 > shuu\ ;
+蓴 > shun\ ;
+蓲 > kyuu\ ;
+蓧 > shou\ ;
+蓚 > chou\ ;
+蓑 > mino\ ;
+蓐 > joku\ ;
+蓁 > shin\ ;
+蒴 > saku\ ;
+蒪 > haku\ ;
+蒦 > waku\ ;
+蒖 > shin\ ;
+蒐 > shuu\ ;
+蒋 > shou\ ;
+葺 > shuu\ ;
+葴 > shin\ ;
+葱 > negi\ ;
+葯 > yaku\ ;
+葤 > chuu\ ;
+葠 > shin\ ;
+葛 > kuzu\ ;
+葚 > chin\ ;
+葙 > shou\ ;
+葍 > huku\ ;
+萼 > gaku\ ;
+萪 > kuwa\ ;
+萩 > hagi\ ;
+萢 > yaji\ ;
+萛 > kyuu\ ;
+萇 > chou\ ;
+萅 > shun\ ;
+菱 > ryou\ ;
+菨 > shou\ ;
+菖 > shou\ ;
+菔 > hoku\ ;
+菐 > hoku\ ;
+莜 > teki\ ;
+莘 > shin\ ;
+莍 > kyuu\ ;
+莀 > shin\ ;
+荍 > kyou\ ;
+茽 > chuu\ ;
+茺 > shuu\ ;
+茯 > fuku\ ;
+茮 > shou\ ;
+茭 > keki\ ;
+茟 > itsu\ ;
+茞 > shin\ ;
+茖 > kaku\ ;
+苜 > boku\ ;
+苙 > ryuu\ ;
+苕 > chou\ ;
+苆 > susa\ ;
+芹 > seri\ ;
+芲 > kuwa\ ;
+芯 > shin\ ;
+芨 > kyuu\ ;
+芒 > nogi\ ;
+芎 > kyuu\ ;
+芀 > shou\ ;
+艽 > kyuu\ ;
+艻 > roku\ ;
+艫 > tomo\ ;
+艧 > waku\ ;
+艢 > shou\ ;
+艝 > sori\ ;
+艏 > shuu\ ;
+舵 > kaji\ ;
+舴 > taku\ ;
+舜 > shun\ ;
+舏 > kyuu\ ;
+舂 > shou\ ;
+臻 > shin\ ;
+臹 > shuu\ ;
+臵 > kaku\ ;
+臰 > shuu\ ;
+臫 > kyou\ ;
+臛 > koku\ ;
+臕 > hyou\ ;
+膲 > shou\ ;
+膮 > kyou\ ;
+膤 > tara\ ;
+膘 > hyou\ ;
+膕 > kaku\ ;
+膓 > chou\ ;
+膋 > ryou\ ;
+膊 > haku\ ;
+膈 > kaku\ ;
+膄 > shuu\ ;
+膃 > otsu\ ;
+腿 > momo\ ;
+腽 > otsu\ ;
+腭 > gaku\ ;
+腘 > kaku\ ;
+腊 > seki\ ;
+脼 > ryou\ ;
+脹 > chou\ ;
+脩 > shuu\ ;
+脤 > shin\ ;
+脛 > sune\ ;
+脋 > kyou\ ;
+胺 > atsu\ ;
+胳 > kaku\ ;
+胤 > tane\ ;
+胗 > shin\ ;
+胄 > chuu\ ;
+肱 > hiji\ ;
+肫 > shun\ ;
+股 > momo\ ;
+肈 > chou\ ;
+肇 > chou\ ;
+肁 > chou\ ;
+聿 > itsu\ ;
+聼 > chou\ ;
+聄 > shin\ ;
+耴 > chou\ ;
+耤 > seki\ ;
+翹 > gyou\ ;
+翲 > hyou\ ;
+翯 > koku\ ;
+翮 > kaku\ ;
+翟 > keki\ ;
+翕 > kyuu\ ;
+翔 > shou\ ;
+翏 > ryuu\ ;
+翊 > yoku\ ;
+翀 > chuu\ ;
+羗 > kyou\ ;
+羌 > kyou\ ;
+羃 > beki\ ;
+羀 > ryuu\ ;
+罿 > shou\ ;
+罶 > ryuu\ ;
+罭 > yoku\ ;
+罧 > shin\ ;
+罠 > wana\ ;
+罅 > hibi\ ;
+纕 > shou\ ;
+纆 > boku\ ;
+繮 > kyou\ ;
+繭 > mayu\ ;
+繦 > kyou\ ;
+繡 > shuu\ ;
+繚 > ryou\ ;
+繒 > shou\ ;
+繍 > shuu\ ;
+繈 > kyou\ ;
+繆 > kyuu\ ;
+績 > seki\ ;
+縹 > hyou\ ;
+縶 > chuu\ ;
+縠 > koku\ ;
+縟 > joku\ ;
+縝 > shin\ ;
+縐 > shuu\ ;
+縉 > shin\ ;
+緲 > byou\ ;
+緝 > shuu\ ;
+緙 > kaku\ ;
+緗 > shou\ ;
+緎 > yoku\ ;
+緆 > seki\ ;
+緅 > shuu\ ;
+緃 > shou\ ;
+綹 > ryuu\ ;
+綶 > kuwa\ ;
+綧 > shun\ ;
+綢 > chuu\ ;
+綝 > chin\ ;
+綛 > kase\ ;
+綌 > keki\ ;
+綅 > shin\ ;
+綃 > shou\ ;
+絿 > kyuu\ ;
+絈 > baku\ ;
+紾 > shin\ ;
+紬 > chuu\ ;
+紖 > chin\ ;
+紃 > shun\ ;
+紂 > chuu\ ;
+糾 > kyuu\ ;
+糺 > kyuu\ ;
+糶 > chou\ ;
+糴 > teki\ ;
+糠 > nuka\ ;
+糗 > kyuu\ ;
+糔 > shuu\ ;
+糓 > koku\ ;
+糊 > nori\ ;
+粻 > chou\ ;
+粷 > kiku\ ;
+粶 > roku\ ;
+粵 > etsu\ ;
+粱 > ryou\ ;
+粮 > ryou\ ;
+粤 > etsu\ ;
+粕 > haku\ ;
+粂 > kume\ ;
+籾 > momi\ ;
+籰 > waku\ ;
+籥 > yaku\ ;
+籤 > kuji\ ;
+籜 > taku\ ;
+籕 > ryuu\ ;
+籒 > shuu\ ;
+籏 > hata\ ;
+籌 > chuu\ ;
+籊 > teki\ ;
+籆 > waku\ ;
+籀 > chuu\ ;
+簶 > roku\ ;
+簱 > hata\ ;
+簫 > shou\ ;
+簪 > shin\ ;
+簨 > shun\ ;
+簥 > kyou\ ;
+簙 > haku\ ;
+簘 > shou\ ;
+簗 > yana\ ;
+簏 > roku\ ;
+簎 > saku\ ;
+簌 > soku\ ;
+簉 > shuu\ ;
+簀 > saku\ ;
+篸 > shin\ ;
+篴 > teki\ ;
+篠 > shou\ ;
+篛 > jaku\ ;
+篗 > waku\ ;
+篋 > kyou\ ;
+箺 > shun\ ;
+箴 > shin\ ;
+箰 > shun\ ;
+箬 > joku\ ;
+箙 > fuku\ ;
+箔 > haku\ ;
+箍 > taga\ ;
+箆 > hera\ ;
+筿 > shou\ ;
+筺 > kyou\ ;
+筴 > kyou\ ;
+筱 > shou\ ;
+筰 > saku\ ;
+筐 > kyou\ ;
+筇 > kyou\ ;
+笿 > raku\ ;
+笮 > saku\ ;
+笧 > saku\ ;
+笊 > zaru\ ;
+笈 > kyuu\ ;
+竻 > roku\ ;
+竺 > toku\ ;
+竴 > shun\ ;
+竨 > chou\ ;
+竦 > shou\ ;
+竣 > shun\ ;
+竜 > ryuu\ ;
+竆 > kyuu\ ;
+竅 > kyou\ ;
+窿 > ryuu\ ;
+窵 > chou\ ;
+窯 > kama\ ;
+窕 > chou\ ;
+窄 > saku\ ;
+窀 > chun\ ;
+穹 > kyuu\ ;
+穸 > seki\ ;
+穵 > atsu\ ;
+穫 > kaku\ ;
+穪 > shou\ ;
+穙 > hoku\ ;
+穕 > shou\ ;
+穐 > shuu\ ;
+穆 > boku\ ;
+穀 > koku\ ;
+稹 > shin\ ;
+稸 > kiku\ ;
+稠 > chuu\ ;
+稜 > ryou\ ;
+稕 > shun\ ;
+稑 > riku\ ;
+秦 > shin\ ;
+秝 > reki\ ;
+种 > chuu\ ;
+秃 > toku\ ;
+禴 > yaku\ ;
+禛 > shin\ ;
+祿 > roku\ ;
+祾 > ryou\ ;
+祲 > shin\ ;
+票 > hyou\ ;
+祧 > chou\ ;
+祥 > shou\ ;
+祏 > seki\ ;
+礿 > yaku\ ;
+礴 > haku\ ;
+礭 > kaku\ ;
+礐 > kaku\ ;
+礁 > shou\ ;
+磿 > reki\ ;
+磶 > seki\ ;
+磧 > seki\ ;
+磦 > hyou\ ;
+磟 > riku\ ;
+磔 > taku\ ;
+碻 > kaku\ ;
+碵 > seki\ ;
+碪 > chin\ ;
+碩 > seki\ ;
+碡 > toku\ ;
+硾 > tsui\ ;
+硺 > taku\ ;
+硴 > kaki\ ;
+确 > kaku\ ;
+硫 > ryuu\ ;
+硞 > kaku\ ;
+硌 > raku\ ;
+砷 > shin\ ;
+砧 > chin\ ;
+砡 > giku\ ;
+砝 > kyou\ ;
+砉 > keki\ ;
+矱 > waku\ ;
+矯 > kyou\ ;
+矪 > chuu\ ;
+矧 > shin\ ;
+矤 > shin\ ;
+矠 > saku\ ;
+矟 > saku\ ;
+矞 > itsu\ ;
+矛 > hoko\ ;
+矍 > kaku\ ;
+瞾 > shou\ ;
+瞧 > shou\ ;
+瞟 > hyou\ ;
+瞚 > shun\ ;
+瞕 > shou\ ;
+瞔 > saku\ ;
+瞋 > shin\ ;
+瞄 > byou\ ;
+睗 > seki\ ;
+睖 > chou\ ;
+眾 > shuu\ ;
+眽 > baku\ ;
+眹 > chin\ ;
+眶 > kyou\ ;
+眕 > shin\ ;
+眒 > shin\ ;
+眇 > byou\ ;
+盾 > tate\ ;
+盹 > shun\ ;
+盅 > chuu\ ;
+皹 > hibi\ ;
+皸 > hibi\ ;
+皴 > shun\ ;
+皪 > reki\ ;
+皦 > kyou\ ;
+皢 > kyou\ ;
+皟 > saku\ ;
+皛 > kyou\ ;
+皙 > seki\ ;
+皍 > soku\ ;
+皀 > hyuu\ ;
+癨 > kaku\ ;
+癧 > reki\ ;
+癥 > chou\ ;
+癋 > kaku\ ;
+癅 > ryuu\ ;
+癄 > shou\ ;
+癃 > ryuu\ ;
+癁 > fuku\ ;
+瘼 > baku\ ;
+瘹 > chou\ ;
+瘴 > shou\ ;
+瘳 > chuu\ ;
+瘲 > shou\ ;
+瘮 > shin\ ;
+瘭 > hyou\ ;
+瘤 > kobu\ ;
+瘠 > seki\ ;
+瘇 > shou\ ;
+痮 > chou\ ;
+痟 > shou\ ;
+痜 > toku\ ;
+疹 > shin\ ;
+疢 > chin\ ;
+疚 > kyuu\ ;
+疔 > chou\ ;
+疒 > daku\ ;
+疇 > chuu\ ;
+疆 > kyou\ ;
+疅 > kyou\ ;
+畼 > chou\ ;
+畻 > shou\ ;
+畺 > kyou\ ;
+畵 > kaku\ ;
+畴 > chuu\ ;
+畱 > ryuu\ ;
+畯 > shun\ ;
+畩 > kesa\ ;
+畛 > shin\ ;
+畐 > fuku\ ;
+畄 > ryuu\ ;
+畃 > shun\ ;
+甼 > chou\ ;
+甪 > roku\ ;
+甧 > shin\ ;
+甡 > shin\ ;
+甞 > shou\ ;
+甕 > mika\ ;
+甓 > heki\ ;
+甃 > shuu\ ;
+瓺 > chou\ ;
+瓤 > shou\ ;
+瓢 > hyou\ ;
+瓟 > haku\ ;
+璹 > shuu\ ;
+璧 > heki\ ;
+璢 > ryuu\ ;
+璡 > shin\ ;
+璞 > haku\ ;
+璙 > ryou\ ;
+璋 > shou\ ;
+璆 > kyuu\ ;
+瑲 > shou\ ;
+瑨 > shin\ ;
+瑧 > shin\ ;
+瑠 > ryuu\ ;
+瑕 > kizu\ ;
+瑒 > chou\ ;
+瑃 > chun\ ;
+琱 > chou\ ;
+琭 > koku\ ;
+琩 > shou\ ;
+琢 > taku\ ;
+琛 > chin\ ;
+琉 > ryuu\ ;
+琇 > shuu\ ;
+珦 > kyou\ ;
+珣 > shun\ ;
+珞 > raku\ ;
+珙 > kyou\ ;
+珒 > shin\ ;
+珏 > kaku\ ;
+珎 > chin\ ;
+珋 > ryuu\ ;
+珅 > shin\ ;
+珀 > haku\ ;
+玿 > shou\ ;
+玓 > teki\ ;
+玅 > myou\ ;
+獶 > nyou\ ;
+獵 > ryou\ ;
+獠 > ryou\ ;
+獟 > gyou\ ;
+獐 > shou\ ;
+獏 > baku\ ;
+獎 > shou\ ;
+獍 > kyou\ ;
+猟 > ryou\ ;
+猖 > shou\ ;
+猋 > hyou\ ;
+狥 > shun\ ;
+狢 > kaku\ ;
+狛 > haku\ ;
+狇 > boku\ ;
+狆 > chin\ ;
+狄 > teki\ ;
+犱 > keki\ ;
+犨 > shuu\ ;
+犢 > toku\ ;
+犖 > raku\ ;
+牿 > koku\ ;
+牞 > kyuu\ ;
+牙 > kiba\ ;
+牘 > toku\ ;
+牔 > haku\ ;
+牆 > shou\ ;
+爿 > shou\ ;
+爴 > kaku\ ;
+爯 > shou\ ;
+爚 > yaku\ ;
+爀 > kaku\ ;
+燸 > jiyu\ ;
+燮 > shou\ ;
+燚 > itsu\ ;
+燖 > shin\ ;
+燎 > ryou\ ;
+燋 > shou\ ;
+熛 > hyou\ ;
+熇 > koku\ ;
+熄 > soku\ ;
+煁 > shin\ ;
+焻 > shou\ ;
+焌 > shun\ ;
+焇 > shou\ ;
+焆 > etsu\ ;
+焅 > koku\ ;
+焃 > kaku\ ;
+烙 > raku\ ;
+炸 > saku\ ;
+炤 > shou\ ;
+灸 > kyuu\ ;
+灬 > hyou\ ;
+灥 > shun\ ;
+灄 > shou\ ;
+瀹 > seku\ ;
+瀷 > yoku\ ;
+瀧 > taki\ ;
+瀟 > shou\ ;
+瀓 > chou\ ;
+瀑 > baku\ ;
+瀏 > ryuu\ ;
+瀋 > shin\ ;
+瀆 > toku\ ;
+濼 > roku\ ;
+濹 > boku\ ;
+濮 > hoku\ ;
+濬 > shun\ ;
+濩 > kaku\ ;
+濈 > shuu\ ;
+濅 > shin\ ;
+澼 > heki\ ;
+澵 > shin\ ;
+澠 > shou\ ;
+澙 > seki\ ;
+澓 > huku\ ;
+澑 > ryuu\ ;
+澆 > gyou\ ;
+澂 > chou\ ;
+潟 > kata\ ;
+潝 > kyuu\ ;
+潗 > shuu\ ;
+漻 > ryou\ ;
+漳 > shou\ ;
+漘 > shin\ ;
+漍 > kaku\ ;
+漉 > roku\ ;
+滲 > shin\ ;
+滮 > hyuu\ ;
+滫 > shuu\ ;
+滝 > taki\ ;
+滓 > kasu\ ;
+滌 > deki\ ;
+溽 > joku\ ;
+溱 > shin\ ;
+溍 > shin\ ;
+湫 > shou\ ;
+湨 > keki\ ;
+湘 > shou\ ;
+湒 > shuu\ ;
+渺 > byou\ ;
+渞 > shuu\ ;
+渗 > shin\ ;
+渌 > roku\ ;
+淼 > byou\ ;
+淴 > otsu\ ;
+淳 > shun\ ;
+淩 > ryou\ ;
+淥 > roku\ ;
+淢 > yoku\ ;
+淞 > shou\ ;
+淕 > riku\ ;
+淌 > shou\ ;
+淅 > seki\ ;
+涿 > toku\ ;
+涉 > shou\ ;
+浹 > shou\ ;
+浞 > saku\ ;
+浗 > kyuu\ ;
+洶 > kyou\ ;
+洵 > shun\ ;
+洦 > baku\ ;
+洟 > hana\ ;
+洓 > saku\ ;
+洑 > huku\ ;
+泵 > ryuu\ ;
+泧 > etsu\ ;
+泆 > itsu\ ;
+泅 > shuu\ ;
+沰 > taku\ ;
+沐 > boku\ ;
+沉 > chin\ ;
+沃 > yoku\ ;
+沁 > shin\ ;
+汹 > kyou\ ;
+汩 > itsu\ ;
+汨 > beki\ ;
+汛 > shin\ ;
+汐 > seki\ ;
+汋 > saku\ ;
+氻 > roku\ ;
+氶 > shou\ ;
+氎 > chou\ ;
+氅 > shou\ ;
+毱 > kiku\ ;
+毣 > boku\ ;
+毄 > keki\ ;
+毃 > kaku\ ;
+殾 > shun\ ;
+殼 > kaku\ ;
+殰 > toku\ ;
+殭 > kyou\ ;
+殤 > shou\ ;
+殠 > shuu\ ;
+殟 > otsu\ ;
+殑 > kyou\ ;
+殍 > hyou\ ;
+歵 > saku\ ;
+歰 > shuu\ ;
+歙 > kyuu\ ;
+歒 > teki\ ;
+歊 > kyou\ ;
+欶 > saku\ ;
+欫 > keki\ ;
+欇 > shou\ ;
+欂 > haku\ ;
+櫬 > shin\ ;
+櫪 > reki\ ;
+櫟 > reki\ ;
+櫝 > toku\ ;
+檴 > kaku\ ;
+檪 > reki\ ;
+檝 > shuu\ ;
+檗 > haku\ ;
+檍 > yoku\ ;
+檄 > geki\ ;
+橿 > kyou\ ;
+橸 > shou\ ;
+橳 > nude\ ;
+橲 > zusa\ ;
+橡 > shou\ ;
+橐 > taku\ ;
+橊 > ryou\ ;
+樾 > etsu\ ;
+樽 > taru\ ;
+樺 > kaba\ ;
+樸 > boku\ ;
+樰 > tara\ ;
+樢 > boku\ ;
+樟 > shou\ ;
+樛 > kyuu\ ;
+樚 > roku\ ;
+樕 > soku\ ;
+樑 > ryou\ ;
+樀 > teki\ ;
+槳 > shou\ ;
+槲 > koku\ ;
+槮 > shin\ ;
+槨 > kaku\ ;
+槢 > shuu\ ;
+槗 > kyou\ ;
+槖 > taku\ ;
+槍 > yari\ ;
+槊 > saku\ ;
+槅 > kaku\ ;
+榺 > shou\ ;
+榷 > kaku\ ;
+榴 > ryuu\ ;
+榲 > otsu\ ;
+榫 > shun\ ;
+榧 > kaya\ ;
+榖 > koku\ ;
+榒 > doku\ ;
+榅 > otsu\ ;
+榁 > muro\ ;
+楸 > shuu\ ;
+楫 > shuu\ ;
+楢 > shuu\ ;
+楉 > jaku\ ;
+楅 > hyku\ ;
+椨 > tafu\ ;
+椥 > nagi\ ;
+椙 > sugi\ ;
+椓 > taku\ ;
+椒 > shou\ ;
+椋 > ryou\ ;
+椈 > kiku\ ;
+椆 > chuu\ ;
+椁 > kaku\ ;
+棽 > chin\ ;
+棫 > yoku\ ;
+棟 > mune\ ;
+棘 > toge\ ;
+棏 > toku\ ;
+梮 > kiku\ ;
+梥 > shou\ ;
+梣 > shin\ ;
+梜 > kyou\ ;
+梏 > koku\ ;
+梂 > kyuu\ ;
+梁 > hari\ ;
+桺 > ryuu\ ;
+桷 > kaku\ ;
+桝 > masu\ ;
+桘 > tsui\ ;
+桕 > kyuu\ ;
+桑 > kuwa\ ;
+桌 > taku\ ;
+框 > kyou\ ;
+栿 > fuku\ ;
+核 > kaku\ ;
+栱 > kyou\ ;
+株 > kabu\ ;
+栢 > haku\ ;
+栅 > saku\ ;
+栂 > toga\ ;
+柾 > kyuu\ ;
+柩 > kyuu\ ;
+柞 > saku\ ;
+柝 > taku\ ;
+柗 > shou\ ;
+柏 > haku\ ;
+枷 > kase\ ;
+枵 > kyou\ ;
+枩 > shou\ ;
+枡 > masu\ ;
+枠 > waku\ ;
+析 > seki\ ;
+极 > kyou\ ;
+杻 > chuu\ ;
+杶 > chun\ ;
+杪 > byou\ ;
+杦 > sugi\ ;
+杣 > soma\ ;
+杢 > moku\ ;
+杙 > yoku\ ;
+杔 > taku\ ;
+朽 > kyuu\ ;
+朕 > chin\ ;
+朔 > saku\ ;
+朓 > chou\ ;
+朒 > niku\ ;
+朐 > kyou\ ;
+曻 > shou\ ;
+曰 > etsu\ ;
+曟 > shin\ ;
+曏 > kyou\ ;
+曌 > shou\ ;
+曉 > gyou\ ;
+曆 > reki\ ;
+暸 > ryou\ ;
+暲 > shou\ ;
+暙 > shun\ ;
+暍 > etsu\ ;
+晿 > shou\ ;
+晾 > ryou\ ;
+晳 > seki\ ;
+晰 > seki\ ;
+晫 > taku\ ;
+晨 > shin\ ;
+晙 > shun\ ;
+晑 > kyou\ ;
+晌 > shou\ ;
+晋 > shin\ ;
+晉 > shin\ ;
+晁 > chou\ ;
+晀 > chou\ ;
+昶 > chou\ ;
+昮 > shou\ ;
+昣 > shin\ ;
+昌 > shou\ ;
+昃 > soku\ ;
+旾 > shun\ ;
+旧 > kyuu\ ;
+旒 > ryuu\ ;
+旐 > chou\ ;
+旈 > ryuu\ ;
+斲 > taku\ ;
+斮 > saku\ ;
+斡 > atsu\ ;
+斠 > kaku\ ;
+斟 > shin\ ;
+斛 > koku\ ;
+斘 > shou\ ;
+斈 > gaku\ ;
+敿 > kyou\ ;
+敽 > kyou\ ;
+敫 > seku\ ;
+敞 > shou\ ;
+敒 > chin\ ;
+敐 > shin\ ;
+敎 > kyou\ ;
+敋 > kaku\ ;
+敇 > saku\ ;
+攵 > boku\ ;
+攴 > hoku\ ;
+攪 > kaku\ ;
+攊 > fuki\ ;
+攉 > kaku\ ;
+擿 > teki\ ;
+擴 > kaku\ ;
+擲 > teki\ ;
+擢 > teki\ ;
+擘 > haku\ ;
+擗 > heki\ ;
+擑 > shou\ ;
+擌 > saku\ ;
+擊 > geki\ ;
+擉 > saku\ ;
+擇 > taku\ ;
+撹 > kaku\ ;
+撬 > kyou\ ;
+撩 > ryou\ ;
+撨 > shou\ ;
+撟 > kyou\ ;
+撑 > chou\ ;
+撐 > chou\ ;
+摽 > hyou\ ;
+摭 > seki\ ;
+摝 > roku\ ;
+摘 > teki\ ;
+摑 > kaku\ ;
+摏 > shou\ ;
+摎 > kyuu\ ;
+搿 > kaku\ ;
+搾 > saku\ ;
+搶 > shou\ ;
+搦 > jaku\ ;
+搢 > shin\ ;
+搠 > saku\ ;
+搏 > haku\ ;
+搊 > shuu\ ;
+搉 > kaku\ ;
+揪 > shuu\ ;
+揕 > chin\ ;
+掵 > haba\ ;
+掬 > kiku\ ;
+掦 > teki\ ;
+掤 > hyou\ ;
+掚 > ryou\ ;
+掕 > ryou\ ;
+捷 > shou\ ;
+捔 > kaku\ ;
+捒 > shou\ ;
+捉 > soku\ ;
+捄 > kyuu\ ;
+捁 > kaku\ ;
+挟 > kyou\ ;
+挖 > atsu\ ;
+挑 > chou\ ;
+挌 > kaku\ ;
+挋 > shin\ ;
+拲 > kyou\ ;
+拱 > kyou\ ;
+拫 > shuu\ ;
+拡 > kaku\ ;
+拓 > taku\ ;
+拆 > taku\ ;
+抻 > shin\ ;
+択 > taku\ ;
+抍 > shou\ ;
+抄 > shou\ ;
+抂 > kyou\ ;
+扨 > sate\ ;
+扚 > chou\ ;
+托 > taku\ ;
+扑 > hoku\ ;
+扐 > roku\ ;
+扄 > shou\ ;
+戳 > taku\ ;
+戮 > riku\ ;
+戫 > yoku\ ;
+戢 > shuu\ ;
+戝 > zoku\ ;
+戕 > shou\ ;
+戉 > etsu\ ;
+戈 > hoko\ ;
+懾 > shou\ ;
+懲 > chou\ ;
+懟 > tsui\ ;
+懏 > shun\ ;
+憭 > ryou\ ;
+憍 > kyou\ ;
+憀 > ryou\ ;
+慿 > hyou\ ;
+慼 > seki\ ;
+慴 > shou\ ;
+慯 > shou\ ;
+慫 > shou\ ;
+慞 > shou\ ;
+慝 > toku\ ;
+慓 > hyou\ ;
+慎 > shin\ ;
+愽 > haku\ ;
+愼 > shin\ ;
+愶 > kyou\ ;
+愵 > deki\ ;
+愨 > kaku\ ;
+愜 > kyou\ ;
+愙 > kaku\ ;
+愖 > shin\ ;
+愁 > shuu\ ;
+愀 > shou\ ;
+惻 > soku\ ;
+惷 > shun\ ;
+惵 > chou\ ;
+惪 > toku\ ;
+惝 > shou\ ;
+惖 > teki\ ;
+惕 > teki\ ;
+惊 > ryou\ ;
+惆 > chuu\ ;
+惄 > deki\ ;
+悵 > chou\ ;
+悳 > toku\ ;
+悦 > etsu\ ;
+悥 > yoku\ ;
+悢 > ryou\ ;
+悚 > shou\ ;
+悅 > etsu\ ;
+恷 > kyuu\ ;
+恱 > etsu\ ;
+恪 > kaku\ ;
+恧 > jiku\ ;
+恟 > kyou\ ;
+恔 > kyou\ ;
+恌 > chou\ ;
+恊 > kyou\ ;
+恇 > kyou\ ;
+怳 > kyou\ ;
+怗 > chou\ ;
+怍 > saku\ ;
+怊 > chou\ ;
+忸 > jiku\ ;
+忷 > kyou\ ;
+忱 > shin\ ;
+忪 > shou\ ;
+忡 > chuu\ ;
+忠 > chuu\ ;
+忒 > toku\ ;
+忑 > toku\ ;
+忇 > roku\ ;
+徼 > kyou\ ;
+徸 > shou\ ;
+德 > toku\ ;
+徵 > chou\ ;
+徱 > hyou\ ;
+徢 > shou\ ;
+徜 > shou\ ;
+徇 > shun\ ;
+彸 > shou\ ;
+彶 > kihu\ ;
+彳 > teki\ ;
+彰 > shou\ ;
+彪 > hyou\ ;
+彟 > kaku\ ;
+彔 > roku\ ;
+彊 > kyou\ ;
+彅 > nagi\ ;
+强 > kyou\ ;
+弶 > gyau\ ;
+弫 > shin\ ;
+弜 > kyou\ ;
+弗 > doru\ ;
+弓 > yumi\ ;
+弌 > itsu\ ;
+弋 > yoku\ ;
+廾 > kyou\ ;
+廸 > teki\ ;
+廳 > chou\ ;
+廰 > chou\ ;
+廫 > ryou\ ;
+廧 > shau\ ;
+廦 > heki\ ;
+廠 > shou\ ;
+廟 > byou\ ;
+廙 > yoku\ ;
+廘 > roku\ ;
+廖 > ryou\ ;
+廋 > shuu\ ;
+庿 > byou\ ;
+庴 > seki\ ;
+庱 > chou\ ;
+庥 > kyuu\ ;
+庠 > shou\ ;
+幬 > chuu\ ;
+幦 > beki\ ;
+幞 > hoku\ ;
+幛 > shou\ ;
+幙 > baku\ ;
+幘 > saku\ ;
+幗 > kaku\ ;
+幖 > hyou\ ;
+幓 > shin\ ;
+幎 > beki\ ;
+幂 > beki\ ;
+帤 > geyo\ ;
+帢 > kahu\ ;
+帛 > haku\ ;
+巩 > kyou\ ;
+巤 > rehu\ ;
+巐 > chou\ ;
+嶽 > gaku\ ;
+嶯 > shiu\ ;
+嶫 > gyou\ ;
+嶪 > gyou\ ;
+嶨 > kaku\ ;
+嶢 > gyou\ ;
+嶠 > kyou\ ;
+嶜 > shin\ ;
+嶛 > ryou\ ;
+嶚 > ryou\ ;
+嶒 > shou\ ;
+嶐 > ryuu\ ;
+嶈 > shau\ ;
+嶂 > shou\ ;
+嵾 > shin\ ;
+嵹 > kyou\ ;
+嵷 > shou\ ;
+嵊 > shou\ ;
+嵀 > chiu\ ;
+崿 > gaku\ ;
+崷 > shiu\ ;
+崨 > sehu\ ;
+崧 > shuu\ ;
+崚 > ryou\ ;
+崈 > shuu\ ;
+峽 > kyou\ ;
+峻 > shun\ ;
+峷 > shin\ ;
+峭 > shou\ ;
+峪 > yoku\ ;
+峣 > gyou\ ;
+峡 > kyou\ ;
+峋 > shun\ ;
+峉 > gaku\ ;
+峈 > raku\ ;
+峆 > kahu\ ;
+峅 > kura\ ;
+峀 > shuu\ ;
+岼 > yuri\ ;
+岶 > haku\ ;
+岳 > take\ ;
+岫 > shuu\ ;
+岦 > ryuu\ ;
+岝 > saku\ ;
+岑 > shin\ ;
+岌 > kyuu\ ;
+屾 > shin\ ;
+屶 > nata\ ;
+屰 > geki\ ;
+屪 > ryou\ ;
+屐 > geki\ ;
+屌 > chou\ ;
+尿 > nyou\ ;
+尰 > shou\ ;
+尭 > gyou\ ;
+尦 > ryou\ ;
+尥 > ryou\ ;
+尞 > ryou\ ;
+尙 > shou\ ;
+將 > shou\ ;
+尅 > koku\ ;
+寴 > shin\ ;
+寯 > shun\ ;
+寮 > ryou\ ;
+寞 > baku\ ;
+寖 > shin\ ;
+寑 > shin\ ;
+寉 > kaku\ ;
+寅 > tora\ ;
+宸 > shin\ ;
+宷 > shin\ ;
+宫 > kyuu\ ;
+宨 > tewa\ ;
+宙 > chuu\ ;
+宒 > chun\ ;
+宍 > niku\ ;
+宆 > kyou\ ;
+孞 > shin\ ;
+孇 > sawa\ ;
+嬼 > riwa\ ;
+嬸 > shin\ ;
+嬶 > kaka\ ;
+嬧 > shin\ ;
+嬦 > chiu\ ;
+嬥 > chou\ ;
+嬙 > shou\ ;
+嬅 > kuwa\ ;
+嫿 > kaku\ ;
+嫞 > shou\ ;
+嫜 > shau\ ;
+嫖 > hyou\ ;
+嫀 > shin\ ;
+媷 > joku\ ;
+媳 > seki\ ;
+媰 > shiu\ ;
+媝 > shuu\ ;
+媛 > hime\ ;
+媋 > shun\ ;
+媃 > jyuu\ ;
+婳 > kaku\ ;
+婤 > shuu\ ;
+婕 > shou\ ;
+婊 > hyou\ ;
+婈 > ryou\ ;
+婅 > kiku\ ;
+娼 > shou\ ;
+娷 > tsui\ ;
+娖 > saku\ ;
+娕 > saku\ ;
+娀 > shuu\ ;
+姺 > shin\ ;
+姠 > shou\ ;
+姜 > kyou\ ;
+妽 > shin\ ;
+妱 > shou\ ;
+妯 > chuu\ ;
+妕 > chuu\ ;
+妐 > shou\ ;
+奭 > seki\ ;
+奬 > shou\ ;
+奨 > shou\ ;
+奞 > shun\ ;
+奝 > chou\ ;
+夌 > ryou\ ;
+夋 > shun\ ;
+壿 > shun\ ;
+壹 > ichi\ ;
+壳 > kaku\ ;
+壢 > reki\ ;
+壗 > mama\ ;
+壑 > gaku\ ;
+壆 > kaku\ ;
+墼 > keki\ ;
+墻 > shou\ ;
+墹 > mama\ ;
+墫 > shun\ ;
+墣 > haku\ ;
+墜 > tsui\ ;
+墒 > shou\ ;
+墑 > teki\ ;
+墏 > shou\ ;
+墋 > shin\ ;
+墇 > shou\ ;
+墄 > soku\ ;
+墂 > hyou\ ;
+塾 > juku\ ;
+塻 > baku\ ;
+塶 > koku\ ;
+塨 > kyou\ ;
+塥 > kaku\ ;
+塙 > kaku\ ;
+塖 > shou\ ;
+塓 > beki\ ;
+塍 > shou\ ;
+塉 > seki\ ;
+堻 > shin\ ;
+堹 > shou\ ;
+堯 > gyou\ ;
+堮 > gaku\ ;
+堘 > shou\ ;
+埻 > shun\ ;
+埫 > shou\ ;
+埖 > gomi\ ;
+埐 > shin\ ;
+埈 > shun\ ;
+埆 > kaku\ ;
+埁 > shin\ ;
+垳 > gake\ ;
+垬 > kyou\ ;
+垘 > huku\ ;
+坼 > taku\ ;
+坶 > boku\ ;
+坵 > kyou\ ;
+坴 > riku\ ;
+坧 > seki\ ;
+圾 > gyuu\ ;
+圸 > yama\ ;
+圳 > shiu\ ;
+圥 > roku\ ;
+圤 > haku\ ;
+圠 > atsu\ ;
+圀 > koku\ ;
+囻 > koku\ ;
+囶 > koku\ ;
+囯 > koku\ ;
+团 > shuu\ ;
+囟 > shin\ ;
+囚 > shuu\ ;
+嚳 > koku\ ;
+嚫 > shin\ ;
+嚩 > haku\ ;
+嚦 > reki\ ;
+嚠 > ryuu\ ;
+嚝 > kaku\ ;
+嚗 > haku\ ;
+嚐 > shou\ ;
+嚍 > shin\ ;
+嚋 > chuu\ ;
+嚇 > kaku\ ;
+嚄 > kaku\ ;
+嚁 > teki\ ;
+噭 > kyou\ ;
+噩 > kaku\ ;
+噦 > etsu\ ;
+噗 > boku\ ;
+噏 > kyuu\ ;
+噎 > itsu\ ;
+噊 > itsu\ ;
+嘿 > boku\ ;
+嘼 > kyuu\ ;
+嘺 > kyou\ ;
+嘸 > sazo\ ;
+嘯 > shou\ ;
+嘨 > shou\ ;
+嘞 > roku\ ;
+嘚 > toku\ ;
+嘖 > saku\ ;
+嘓 > kaku\ ;
+嘂 > kyou\ ;
+嘁 > sahu\ ;
+嘀 > saku\ ;
+嗽 > ugai\ ;
+嗼 > baku\ ;
+嗝 > kaku\ ;
+嗗 > atsu\ ;
+嗔 > shin\ ;
+嗑 > kahu\ ;
+嗍 > saku\ ;
+嗋 > kyou\ ;
+嗆 > shou\ ;
+嗀 > kaku\ ;
+喲 > yaku\ ;
+喬 > kyou\ ;
+喨 > ryou\ ;
+喢 > tehu\ ;
+喞 > soku\ ;
+喁 > gyou\ ;
+喀 > kaku\ ;
+啾 > shuu\ ;
+啯 > kaku\ ;
+啦 > rahu\ ;
+啢 > ryou\ ;
+啋 > kyou\ ;
+啇 > teki\ ;
+啅 > taku\ ;
+啄 > taku\ ;
+啃 > shuu\ ;
+唽 > seki\ ;
+唼 > sahu\ ;
+唴 > kyou\ ;
+售 > shuu\ ;
+唧 > soku\ ;
+唡 > ryou\ ;
+唚 > shin\ ;
+唙 > teki\ ;
+唒 > shuu\ ;
+唊 > kyou\ ;
+唃 > koku\ ;
+哨 > shou\ ;
+响 > kyou\ ;
+哂 > shin\ ;
+咹 > atsu\ ;
+咶 > kuui\ ;
+咯 > kaku\ ;
+咢 > gaku\ ;
+咠 > shuu\ ;
+咟 > kaku\ ;
+咋 > saku\ ;
+呻 > shin\ ;
+呺 > kyou\ ;
+呹 > itsu\ ;
+呫 > tehu\ ;
+呏 > shou\ ;
+呎 > seki\ ;
+呌 > kyou\ ;
+呄 > koku\ ;
+吿 > koku\ ;
+吵 > byou\ ;
+吲 > shin\ ;
+吣 > shin\ ;
+吢 > shin\ ;
+吜 > chuu\ ;
+叼 > chou\ ;
+叻 > roku\ ;
+叶 > kyou\ ;
+叠 > chou\ ;
+叒 > jaku\ ;
+叉 > mata\ ;
+厰 > shou\ ;
+厯 > reki\ ;
+厤 > reki\ ;
+厝 > saku\ ;
+厒 > kahu\ ;
+压 > atsu\ ;
+厇 > taku\ ;
+卾 > gaku\ ;
+卽 > soku\ ;
+卲 > shou\ ;
+卭 > kyou\ ;
+卡 > sahu\ ;
+卜 > boku\ ;
+卙 > shou\ ;
+卌 > shuu\ ;
+卂 > shin\ ;
+匿 > toku\ ;
+匵 > toku\ ;
+匩 > kyou\ ;
+匧 > kyou\ ;
+匣 > hako\ ;
+匡 > kyou\ ;
+匞 > shou\ ;
+匛 > kyuu\ ;
+匓 > kyou\ ;
+匑 > kyuu\ ;
+匐 > hoku\ ;
+匊 > kiku\ ;
+匉 > hyou\ ;
+匈 > kyou\ ;
+勼 > kyuu\ ;
+勰 > kyou\ ;
+勥 > kyou\ ;
+勣 > seki\ ;
+勠 > riku\ ;
+勒 > roku\ ;
+勀 > koku\ ;
+劻 > kyou\ ;
+劰 > baku\ ;
+劮 > itsu\ ;
+劭 > shou\ ;
+劦 > kyou\ ;
+劜 > atsu\ ;
+劐 > kaku\ ;
+劋 > syou\ ;
+劉 > ryuu\ ;
+劈 > heki\ ;
+劅 > taku\ ;
+劁 > syou\ ;
+剹 > riku\ ;
+副 > fuku\ ;
+剫 > taku\ ;
+剨 > kaku\ ;
+剢 > toku\ ;
+剝 > haku\ ;
+剔 > teki\ ;
+剒 > saku\ ;
+剋 > koku\ ;
+刼 > kyou\ ;
+刦 > kyou\ ;
+刟 > chou\ ;
+刘 > ryuu\ ;
+凸 > deko\ ;
+凶 > kyou\ ;
+凴 > hyou\ ;
+凪 > nagi\ ;
+凧 > tako\ ;
+凙 > taku\ ;
+凋 > chou\ ;
+凉 > ryou\ ;
+凇 > shou\ ;
+冾 > kyou\ ;
+冼 > shou\ ;
+况 > kyou\ ;
+冲 > chuu\ ;
+冰 > hyou\ ;
+冫 > hyou\ ;
+冪 > beki\ ;
+冢 > chou\ ;
+冖 > beki\ ;
+冑 > chuu\ ;
+典 > nori\ ;
+兢 > kyou\ ;
+兟 > shin\ ;
+兓 > shin\ ;
+兏 > chou\ ;
+克 > koku\ ;
+兇 > kyou\ ;
+兆 > chou\ ;
+兂 > shin\ ;
+儵 > shuu\ ;
+儴 > shou\ ;
+儮 > reki\ ;
+儭 > shin\ ;
+儬 > shin\ ;
+儦 > hyou\ ;
+儠 > ryou\ ;
+儔 > chuu\ ;
+儁 > shun\ ;
+僽 > shuu\ ;
+僻 > heki\ ;
+僺 > shou\ ;
+僵 > kyou\ ;
+僰 > hoku\ ;
+僥 > gyou\ ;
+僘 > shou\ ;
+僇 > riku\ ;
+傽 > shou\ ;
+傹 > kyou\ ;
+傶 > soku\ ;
+傱 > shou\ ;
+傕 > kaku\ ;
+偷 > chuu\ ;
+偱 > shun\ ;
+偮 > shuu\ ;
+偆 > shun\ ;
+偅 > shou\ ;
+偁 > shou\ ;
+倰 > ryou\ ;
+倯 > shou\ ;
+倬 > taku\ ;
+倢 > shou\ ;
+倡 > shou\ ;
+倜 > teki\ ;
+倘 > shou\ ;
+倆 > ryou\ ;
+倃 > kyuu\ ;
+倀 > chou\ ;
+俵 > hyou\ ;
+俣 > mata\ ;
+俢 > shuu\ ;
+俠 > kyou\ ;
+俍 > ryou\ ;
+俋 > chuu\ ;
+俈 > koku\ ;
+俇 > kyau\ ;
+俅 > kyuu\ ;
+侺 > shin\ ;
+侶 > tomo\ ;
+侴 > chuu\ ;
+侲 > shin\ ;
+侠 > kyan\ ;
+侜 > chuu\ ;
+侚 > shun\ ;
+侂 > taku\ ;
+侁 > shin\ ;
+佾 > itsu\ ;
+佻 > chou\ ;
+佰 > haku\ ;
+佬 > ryou\ ;
+佫 > kaku\ ;
+佗 > wabi\ ;
+佔 > chin\ ;
+佋 > shou\ ;
+伷 > chuu\ ;
+伩 > shin\ ;
+伔 > shin\ ;
+伋 > kyuu\ ;
+伈 > shin\ ;
+伄 > chou\ ;
+伀 > shou\ ;
+仼 > kyou\ ;
+仢 > haku\ ;
+仗 > tsue\ ;
+仉 > shou\ ;
+仂 > roku\ ;
+亼 > shuu\ ;
+亳 > haku\ ;
+亯 > kyou\ ;
+亮 > ryou\ ;
+亨 > kyou\ ;
+亀 > kame\ ;
+乣 > kyuu\ ;
+也 > nari\ ;
+乇 > taku\ ;
+乆 > kyuu\ ;
+丵 > saku\ ;
+丮 > keki\ ;
+丩 > kyuu\ ;
+两 > ryou\ ;
+丢 > chuu\ ;
+丠 > kyuu\ ;
+丟 > chuu\ ;
+丞 > shou\ ;
+丒 > chuu\ ;
+丑 > ushi\ ;
+丄 > shou\ ;
+〇 > maru\ ;
+迷 > mei\ ;
+念 > nen\ ;
+短 > tan\ ;
+快 > kai\ ;
+迥 > kei\ ;
+知 > chi\ ;
+矜 > kin\ ;
+忙 > bou\ ;
+忘 > bou\ ;
+返 > hen\ ;
+近 > kin\ ;
+迎 > gei\ ;
+忍 > nin\ ;
+迅 > jin\ ;
+辿 > ten\ ;
+瞻 > sen\ ;
+辺 > hen\ ;
+農 > nou\ ;
+辯 > ben\ ;
+循 > jun\ ;
+瞠 > dou\ ;
+從 > juu\ ;
+従 > juu\ ;
+徊 > kai\ ;
+待 > tai\ ;
+径 > kei\ ;
+彩 > sai\ ;
+睨 > gei\ ;
+睡 > sui\ ;
+轟 > gou\ ;
+当 > tou\ ;
+轉 > ten\ ;
+彈 > dan\ ;
+眩 > gen\ ;
+眠 > min\ ;
+弟 > tei\ ;
+弛 > shi\ ;
+弘 > kou\ ;
+輕 > kei\ ;
+県 > ken\ ;
+看 > kan\ ;
+載 > sai\ ;
+弄 > rou\ ;
+省 > sei\ ;
+弁 > ben\ ;
+軽 > kei\ ;
+廻 > kai\ ;
+建 > ken\ ;
+相 > sou\ ;
+盥 > kan\ ;
+監 > kan\ ;
+転 > ten\ ;
+廣 > kou\ ;
+廢 > hai\ ;
+盡 > jin\ ;
+盜 > tou\ ;
+盛 > sei\ ;
+盗 > tou\ ;
+軍 > gun\ ;
+廊 > rou\ ;
+廉 > ren\ ;
+盆 > bon\ ;
+盃 > hai\ ;
+廃 > hai\ ;
+庸 > you\ ;
+康 > kou\ ;
+皰 > hou\ ;
+庚 > kou\ ;
+庖 > hou\ ;
+躓 > chi\ ;
+躇 > cho\ ;
+皇 > kou\ ;
+庄 > sou\ ;
+広 > kou\ ;
+幾 > iku\ ;
+幽 > yuu\ ;
+幼 > you\ ;
+登 > tou\ ;
+干 > kan\ ;
+癌 > gan\ ;
+癇 > kan\ ;
+帽 > bou\ ;
+帶 > tai\ ;
+帯 > tai\ ;
+師 > shi\ ;
+踟 > chi\ ;
+踏 > tou\ ;
+踊 > you\ ;
+市 > shi\ ;
+巾 > kin\ ;
+痴 > chi\ ;
+痩 > sou\ ;
+巧 > kou\ ;
+工 > kou\ ;
+跡 > ato\ ;
+跟 > kon\ ;
+巡 > jun\ ;
+距 > kyo\ ;
+痕 > kon\ ;
+痒 > you\ ;
+嶮 > ken\ ;
+疊 > jou\ ;
+當 > tou\ ;
+走 > sou\ ;
+番 > ban\ ;
+赧 > tan\ ;
+畦 > aze\ ;
+畔 > han\ ;
+界 > kai\ ;
+嵌 > kan\ ;
+甲 > kou\ ;
+崩 > hou\ ;
+用 > you\ ;
+産 > san\ ;
+甘 > kan\ ;
+崗 > kou\ ;
+贅 > zei\ ;
+賽 > sai\ ;
+購 > kou\ ;
+賺 > tan\ ;
+瓶 > bin\ ;
+賣 > bai\ ;
+賢 > ken\ ;
+瓜 > uri\ ;
+資 > shi\ ;
+貼 > ten\ ;
+貸 > tai\ ;
+買 > bai\ ;
+貰 > sei\ ;
+貯 > cho\ ;
+岩 > iwa\ ;
+貧 > bin\ ;
+財 > zai\ ;
+岡 > kou\ ;
+貞 > tei\ ;
+貝 > kai\ ;
+豪 > gou\ ;
+層 > sou\ ;
+象 > zou\ ;
+展 > ten\ ;
+豐 > hou\ ;
+屏 > hei\ ;
+豊 > hou\ ;
+屆 > kai\ ;
+居 > kyo\ ;
+尽 > jin\ ;
+琲 > hai\ ;
+尤 > yuu\ ;
+尠 > sen\ ;
+尚 > nao\ ;
+尖 > sen\ ;
+導 > dou\ ;
+對 > tai\ ;
+尋 > jin\ ;
+尉 > jou\ ;
+專 > sen\ ;
+射 > sha\ ;
+封 > fuu\ ;
+現 > gen\ ;
+寸 > sun\ ;
+寫 > sha\ ;
+珪 > kei\ ;
+寒 > kan\ ;
+容 > you\ ;
+宵 > yoi\ ;
+害 > gai\ ;
+宰 > sai\ ;
+玩 > gan\ ;
+宣 > sen\ ;
+宛 > ate\ ;
+定 > tei\ ;
+官 > kan\ ;
+完 > kan\ ;
+變 > hen\ ;
+讃 > san\ ;
+玄 > gen\ ;
+獻 > ken\ ;
+獸 > juu\ ;
+譲 > jou\ ;
+譫 > sen\ ;
+警 > kei\ ;
+存 > son\ ;
+孔 > kou\ ;
+謹 > kin\ ;
+猶 > yuu\ ;
+嬪 > hin\ ;
+嬢 > jou\ ;
+謝 > sha\ ;
+猜 > sai\ ;
+講 > kou\ ;
+謙 > ken\ ;
+狽 > hai\ ;
+諸 > sho\ ;
+諦 > tei\ ;
+狡 > kou\ ;
+狙 > sho\ ;
+狗 > kou\ ;
+論 > ron\ ;
+請 > sei\ ;
+嫌 > iya\ ;
+談 > dan\ ;
+狃 > juu\ ;
+状 > jou\ ;
+犯 > han\ ;
+犬 > inu\ ;
+誘 > yuu\ ;
+誓 > sei\ ;
+媒 > bai\ ;
+認 > nin\ ;
+誌 > shi\ ;
+誄 > rui\ ;
+該 > gai\ ;
+牲 > sei\ ;
+詮 > sen\ ;
+詩 > shi\ ;
+試 > shi\ ;
+牢 > rou\ ;
+牡 > osu\ ;
+詞 > shi\ ;
+婚 > kon\ ;
+牌 > pai\ ;
+版 > han\ ;
+片 > hen\ ;
+牀 > sou\ ;
+爽 > sou\ ;
+許 > kyo\ ;
+爭 > sou\ ;
+訪 > hou\ ;
+爛 > ran\ ;
+娑 > sha\ ;
+訊 > jin\ ;
+計 > kei\ ;
+言 > gen\ ;
+燻 > kun\ ;
+解 > kai\ ;
+姓 > sei\ ;
+始 > shi\ ;
+姉 > ane\ ;
+燈 > tou\ ;
+燃 > nen\ ;
+觀 > kan\ ;
+覽 > ran\ ;
+観 > kan\ ;
+親 > oya\ ;
+覧 > ran\ ;
+覗 > shi\ ;
+視 > shi\ ;
+妖 > you\ ;
+妊 > nin\ ;
+妄 > bou\ ;
+煽 > sen\ ;
+好 > kou\ ;
+煮 > sha\ ;
+奮 > fun\ ;
+煩 > han\ ;
+襤 > ran\ ;
+奥 > oku\ ;
+奢 > sha\ ;
+襟 > eri\ ;
+套 > tou\ ;
+奏 > sou\ ;
+煎 > sen\ ;
+奉 > hou\ ;
+夾 > kou\ ;
+褸 > rou\ ;
+然 > zen\ ;
+褪 > tai\ ;
+天 > ten\ ;
+大 > tai\ ;
+焚 > fun\ ;
+夕 > yuu\ ;
+褒 > hou\ ;
+変 > hen\ ;
+製 > sei\ ;
+壻 > sei\ ;
+売 > bai\ ;
+声 > koe\ ;
+壯 > sou\ ;
+士 > shi\ ;
+裝 > sou\ ;
+壞 > kai\ ;
+裕 > yuu\ ;
+裏 > ura\ ;
+壊 > kai\ ;
+壇 > dan\ ;
+装 > sou\ ;
+裁 > sai\ ;
+点 > ten\ ;
+袢 > han\ ;
+増 > zou\ ;
+炊 > sui\ ;
+袂 > bei\ ;
+災 > sai\ ;
+灰 > hai\ ;
+衡 > kou\ ;
+塔 > tou\ ;
+灌 > kan\ ;
+血 > chi\ ;
+塀 > hei\ ;
+蠶 > san\ ;
+報 > hou\ ;
+堪 > kan\ ;
+瀕 > hin\ ;
+堆 > tai\ ;
+堅 > ken\ ;
+堂 > dou\ ;
+蟻 > ari\ ;
+濺 > sen\ ;
+濱 > hin\ ;
+濟 > sai\ ;
+濘 > nei\ ;
+埋 > mai\ ;
+濃 > nou\ ;
+澹 > tan\ ;
+螢 > kei\ ;
+垢 > aka\ ;
+龕 > gan\ ;
+融 > yuu\ ;
+垂 > sui\ ;
+蝿 > hae\ ;
+潰 > kai\ ;
+坦 > tan\ ;
+齡 > rei\ ;
+潜 > sen\ ;
+蝙 > hen\ ;
+齎 > sei\ ;
+齊 > sei\ ;
+蝋 > rou\ ;
+坊 > bou\ ;
+均 > kin\ ;
+蜻 > sei\ ;
+漸 > zen\ ;
+地 > chi\ ;
+漬 > shi\ ;
+在 > zai\ ;
+漢 > kan\ ;
+蜘 > chi\ ;
+團 > dan\ ;
+漕 > sou\ ;
+漏 > rou\ ;
+圏 > ken\ ;
+滿 > man\ ;
+困 > kon\ ;
+滯 > tai\ ;
+黨 > tou\ ;
+団 > dan\ ;
+點 > ten\ ;
+回 > kai\ ;
+蛛 > shu\ ;
+四 > yon\ ;
+蛉 > rei\ ;
+蛆 > sho\ ;
+麻 > asa\ ;
+溶 > you\ ;
+嚴 > gen\ ;
+溪 > kei\ ;
+麗 > rei\ ;
+準 > jun\ ;
+満 > man\ ;
+湾 > wan\ ;
+鹸 > ken\ ;
+噪 > sou\ ;
+湧 > yuu\ ;
+號 > gou\ ;
+虜 > ryo\ ;
+虚 > kyo\ ;
+噛 > gou\ ;
+處 > sho\ ;
+噌 > sou\ ;
+嘲 > tou\ ;
+蘭 > ran\ ;
+渦 > uzu\ ;
+渠 > kyo\ ;
+減 > gen\ ;
+嘘 > uso\ ;
+済 > sai\ ;
+嘆 > tan\ ;
+清 > sei\ ;
+蘂 > zui\ ;
+添 > ten\ ;
+淺 > sen\ ;
+混 > kon\ ;
+藩 > han\ ;
+嗣 > shi\ ;
+淡 > tan\ ;
+藝 > gei\ ;
+嗜 > shi\ ;
+淋 > rin\ ;
+藉 > sha\ ;
+鷄 > kei\ ;
+液 > eki\ ;
+薯 > sho\ ;
+喰 > kuu\ ;
+涯 > gai\ ;
+薮 > sou\ ;
+單 > tan\ ;
+薦 > sen\ ;
+喧 > ken\ ;
+喚 > kan\ ;
+喘 > zen\ ;
+涌 > yuu\ ;
+善 > zen\ ;
+啼 > tei\ ;
+海 > umi\ ;
+浪 > rou\ ;
+蕩 > tou\ ;
+啣 > kan\ ;
+問 > mon\ ;
+浅 > sen\ ;
+浄 > jou\ ;
+蔽 > hei\ ;
+唸 > ten\ ;
+蔵 > sou\ ;
+洗 > sen\ ;
+洒 > sei\ ;
+唐 > tou\ ;
+洋 > you\ ;
+鳴 > mei\ ;
+泡 > awa\ ;
+法 > hou\ ;
+品 > hin\ ;
+蒼 > sou\ ;
+蒸 > jou\ ;
+咬 > kou\ ;
+蒟 > kon\ ;
+蒙 > mou\ ;
+沖 > oki\ ;
+蒔 > shi\ ;
+沌 > ton\ ;
+命 > mei\ ;
+味 > aji\ ;
+葬 > sou\ ;
+董 > tou\ ;
+池 > ike\ ;
+呟 > gen\ ;
+汗 > ase\ ;
+呑 > don\ ;
+呆 > bou\ ;
+呂 > ryo\ ;
+鰺 > aji\ ;
+吻 > fun\ ;
+吹 > sui\ ;
+萬 > man\ ;
+含 > gan\ ;
+吝 > rin\ ;
+君 > kun\ ;
+向 > kou\ ;
+氏 > uji\ ;
+萌 > hou\ ;
+同 > dou\ ;
+氈 > sen\ ;
+合 > gou\ ;
+萄 > tou\ ;
+司 > shi\ ;
+史 > shi\ ;
+台 > dai\ ;
+菫 > kin\ ;
+毫 > kou\ ;
+菩 > hai\ ;
+叩 > kou\ ;
+句 > kou\ ;
+毎 > mai\ ;
+反 > han\ ;
+參 > san\ ;
+参 > san\ ;
+去 > kyo\ ;
+段 > dan\ ;
+厳 > gen\ ;
+鮮 > sen\ ;
+厭 > iya\ ;
+厚 > kou\ ;
+殘 > zan\ ;
+厘 > rin\ ;
+残 > zan\ ;
+殊 > shu\ ;
+殆 > tai\ ;
+卿 > kei\ ;
+死 > shi\ ;
+卷 > kan\ ;
+歳 > sai\ ;
+此 > shi\ ;
+正 > sei\ ;
+止 > shi\ ;
+歡 > kan\ ;
+占 > sen\ ;
+歔 > kyo\ ;
+荒 > kou\ ;
+歎 > tan\ ;
+歌 > uta\ ;
+半 > han\ ;
+午 > uma\ ;
+千 > chi\ ;
+十 > too\ ;
+鬼 > oni\ ;
+茶 > cha\ ;
+茫 > bou\ ;
+鬢 > hin\ ;
+匚 > hou\ ;
+權 > ken\ ;
+匆 > sou\ ;
+欅 > kyo\ ;
+包 > hou\ ;
+勾 > kou\ ;
+勸 > kan\ ;
+勧 > kan\ ;
+勤 > gon\ ;
+勞 > rou\ ;
+苗 > nae\ ;
+勘 > kan\ ;
+體 > tei\ ;
+動 > dou\ ;
+勉 > ben\ ;
+勇 > yuu\ ;
+髄 > zui\ ;
+骸 > kai\ ;
+芸 > gei\ ;
+効 > kou\ ;
+芳 > hou\ ;
+労 > rou\ ;
+励 > rei\ ;
+劫 > gou\ ;
+檢 > ken\ ;
+功 > kou\ ;
+劍 > ken\ ;
+檀 > tan\ ;
+艸 > sou\ ;
+創 > sou\ ;
+色 > iro\ ;
+驢 > ryo\ ;
+剛 > gou\ ;
+驗 > ken\ ;
+剖 > bou\ ;
+前 > mae\ ;
+剃 > tei\ ;
+騷 > sou\ ;
+制 > sei\ ;
+到 > tou\ ;
+般 > han\ ;
+航 > kou\ ;
+権 > ken\ ;
+判 > ban\ ;
+樣 > you\ ;
+騙 > hen\ ;
+験 > ken\ ;
+騒 > sou\ ;
+樓 > rou\ ;
+刑 > kei\ ;
+刊 > kan\ ;
+興 > kou\ ;
+分 > bun\ ;
+刀 > tou\ ;
+槽 > sou\ ;
+臼 > usu\ ;
+函 > kan\ ;
+臺 > tai\ ;
+致 > chi\ ;
+至 > shi\ ;
+自 > shi\ ;
+臨 > rin\ ;
+処 > sho\ ;
+凡 > bon\ ;
+臟 > zou\ ;
+駛 > shi\ ;
+様 > you\ ;
+凍 > tou\ ;
+構 > kou\ ;
+駅 > eki\ ;
+凄 > sei\ ;
+膿 > umi\ ;
+膽 > tan\ ;
+榻 > tou\ ;
+冷 > rei\ ;
+馳 > chi\ ;
+膳 > zen\ ;
+馭 > gyo\ ;
+馬 > uma\ ;
+写 > sha\ ;
+冗 > jou\ ;
+冒 > bou\ ;
+再 > sai\ ;
+概 > gai\ ;
+楼 > rou\ ;
+兼 > ken\ ;
+腮 > sai\ ;
+公 > kou\ ;
+全 > zen\ ;
+腦 > nou\ ;
+党 > tou\ ;
+腕 > ude\ ;
+饒 > jou\ ;
+楓 > fuu\ ;
+免 > men\ ;
+腋 > eki\ ;
+饅 > man\ ;
+先 > sen\ ;
+充 > juu\ ;
+兄 > ani\ ;
+脳 > nou\ ;
+優 > yuu\ ;
+検 > ken\ ;
+餐 > san\ ;
+養 > you\ ;
+億 > oku\ ;
+椀 > wan\ ;
+飽 > hou\ ;
+飼 > shi\ ;
+棺 > kan\ ;
+飴 > ame\ ;
+胴 > dou\ ;
+棲 > sei\ ;
+僧 > sou\ ;
+胞 > hou\ ;
+飜 > hon\ ;
+棒 > bou\ ;
+胎 > tai\ ;
+像 > zou\ ;
+背 > sei\ ;
+働 > dou\ ;
+胆 > tan\ ;
+僅 > kin\ ;
+傾 > kei\ ;
+育 > iku\ ;
+傳 > den\ ;
+械 > kai\ ;
+肯 > kou\ ;
+梯 > tei\ ;
+催 > sai\ ;
+風 > fuu\ ;
+肥 > koe\ ;
+條 > jou\ ;
+肆 > shi\ ;
+梅 > ume\ ;
+桶 > oke\ ;
+偶 > guu\ ;
+偵 > tei\ ;
+聲 > sei\ ;
+顯 > ken\ ;
+顫 > sen\ ;
+桧 > kai\ ;
+健 > ken\ ;
+類 > rui\ ;
+桟 > san\ ;
+聞 > bun\ ;
+顛 > ten\ ;
+停 > tei\ ;
+願 > gan\ ;
+聖 > sei\ ;
+顕 > ken\ ;
+顔 > kao\ ;
+顏 > gan\ ;
+顎 > ago\ ;
+題 > dai\ ;
+桂 > kei\ ;
+耽 > tan\ ;
+頼 > rai\ ;
+頻 > hin\ ;
+耻 > chi\ ;
+倹 > ken\ ;
+頭 > tou\ ;
+倦 > ken\ ;
+校 > kou\ ;
+頚 > kei\ ;
+耕 > kou\ ;
+頓 > ton\ ;
+栓 > sen\ ;
+倒 > tou\ ;
+耐 > tai\ ;
+倉 > sou\ ;
+順 > jun\ ;
+項 > kou\ ;
+考 > kou\ ;
+老 > rou\ ;
+翻 > hon\ ;
+俺 > ore\ ;
+柴 > sai\ ;
+染 > sen\ ;
+某 > bou\ ;
+羹 > kou\ ;
+羮 > kou\ ;
+侯 > kou\ ;
+侭 > jin\ ;
+羨 > sen\ ;
+群 > gun\ ;
+枝 > eda\ ;
+枚 > mai\ ;
+例 > rei\ ;
+來 > rai\ ;
+板 > ita\ ;
+使 > shi\ ;
+杵 > sho\ ;
+併 > hei\ ;
+置 > chi\ ;
+来 > rai\ ;
+面 > men\ ;
+条 > jou\ ;
+靜 > sei\ ;
+静 > sei\ ;
+靖 > sei\ ;
+何 > nan\ ;
+体 > tei\ ;
+罐 > kan\ ;
+材 > zai\ ;
+罎 > tan\ ;
+住 > juu\ ;
+低 > tei\ ;
+靈 > rei\ ;
+佇 > cho\ ;
+佃 > ten\ ;
+伺 > shi\ ;
+朱 > aka\ ;
+朧 > rou\ ;
+朦 > bou\ ;
+朝 > asa\ ;
+伝 > ten\ ;
+望 > bou\ ;
+会 > kai\ ;
+朗 > rou\ ;
+霊 > rei\ ;
+朋 > hou\ ;
+有 > yuu\ ;
+會 > kai\ ;
+最 > sai\ ;
+替 > tai\ ;
+曾 > sou\ ;
+電 > den\ ;
+曼 > ban\ ;
+任 > nin\ ;
+零 > rei\ ;
+書 > sho\ ;
+件 > ken\ ;
+更 > kou\ ;
+雨 > ame\ ;
+難 > nan\ ;
+令 > rei\ ;
+曜 > you\ ;
+雖 > sui\ ;
+仕 > shi\ ;
+仔 > shi\ ;
+介 > kai\ ;
+今 > kon\ ;
+雄 > osu\ ;
+仁 > nin\ ;
+暴 > bou\ ;
+亭 > tei\ ;
+險 > ken\ ;
+暫 > zan\ ;
+隨 > zui\ ;
+交 > kou\ ;
+亡 > bou\ ;
+際 > sai\ ;
+亙 > kou\ ;
+亘 > sen\ ;
+暖 > dan\ ;
+井 > sei\ ;
+纒 > ten\ ;
+暑 > sho\ ;
+随 > zui\ ;
+纏 > ten\ ;
+階 > kai\ ;
+隊 > tai\ ;
+隈 > wai\ ;
+争 > sou\ ;
+纂 > san\ ;
+亂 > ran\ ;
+陽 > you\ ;
+繼 > kei\ ;
+険 > ken\ ;
+智 > chi\ ;
+陶 > tou\ ;
+晴 > sei\ ;
+繰 > sou\ ;
+乱 > ran\ ;
+景 > kei\ ;
+繪 > kai\ ;
+繩 > jou\ ;
+晩 > ban\ ;
+陥 > kan\ ;
+陣 > jin\ ;
+繞 > jou\ ;
+乘 > jou\ ;
+繕 > zen\ ;
+乗 > jou\ ;
+織 > ori\ ;
+限 > gen\ ;
+降 > kou\ ;
+乏 > bou\ ;
+繁 > han\ ;
+總 > sou\ ;
+防 > bou\ ;
+縱 > juu\ ;
+縫 > hou\ ;
+阪 > han\ ;
+並 > hei\ ;
+丘 > oka\ ;
+且 > sha\ ;
+易 > eki\ ;
+明 > mei\ ;
+上 > jou\ ;
+昆 > kon\ ;
+昂 > kou\ ;
+練 > ren\ ;
+緬 > men\ ;
+旬 > jun\ ;
+緩 > kan\ ;
+早 > sou\ ;
+編 > hen\ ;
+旦 > tan\ ;
+締 > tei\ ;
+關 > kan\ ;
+線 > sen\ ;
+闘 > tou\ ;
+総 > sou\ ;
+旋 > sen\ ;
+緊 > kin\ ;
+方 > hou\ ;
+斷 > dan\ ;
+網 > ami\ ;
+斯 > shi\ ;
+断 > dan\ ;
+斬 > zan\ ;
+閤 > kou\ ;
+斜 > sha\ ;
+継 > kei\ ;
+經 > kei\ ;
+開 > kai\ ;
+閉 > hei\ ;
+斉 > sei\ ;
+文 > bun\ ;
+閃 > sen\ ;
+斃 > hei\ ;
+門 > mon\ ;
+長 > osa\ ;
+數 > suu\ ;
+整 > sei\ ;
+絲 > shi\ ;
+統 > tou\ ;
+数 > suu\ ;
+敬 > kei\ ;
+絨 > juu\ ;
+散 > san\ ;
+敢 > kan\ ;
+絞 > kou\ ;
+敗 > hai\ ;
+敏 > bin\ ;
+效 > kou\ ;
+故 > yue\ ;
+放 > hou\ ;
+紺 > kon\ ;
+改 > kai\ ;
+細 > sei\ ;
+累 > rui\ ;
+支 > shi\ ;
+紛 > fun\ ;
+純 > jun\ ;
+納 > tou\ ;
+紋 > mon\ ;
+糸 > ito\ ;
+擧 > kyo\ ;
+擡 > tai\ ;
+糞 > fun\ ;
+糖 > tou\ ;
+擔 > tan\ ;
+精 > sei\ ;
+粟 > awa\ ;
+粗 > ara\ ;
+鑵 > kan\ ;
+籖 > sen\ ;
+鑒 > kan\ ;
+籐 > tou\ ;
+携 > kei\ ;
+簡 > kan\ ;
+搜 > sou\ ;
+搖 > you\ ;
+損 > son\ ;
+握 > aku\ ;
+換 > kan\ ;
+揚 > you\ ;
+提 > tei\ ;
+揉 > juu\ ;
+範 > han\ ;
+揃 > sen\ ;
+掻 > sou\ ;
+掲 > kei\ ;
+箪 > tan\ ;
+推 > sui\ ;
+控 > kou\ ;
+掣 > sei\ ;
+探 > tan\ ;
+採 > sai\ ;
+算 > san\ ;
+排 > hai\ ;
+箋 > sen\ ;
+掃 > sou\ ;
+捻 > nen\ ;
+捲 > ken\ ;
+据 > kyo\ ;
+捨 > sha\ ;
+筧 > ken\ ;
+鍛 > tan\ ;
+捜 > sou\ ;
+挿 > sou\ ;
+挽 > ban\ ;
+第 > dai\ ;
+笥 > shi\ ;
+錢 > sen\ ;
+笛 > fue\ ;
+挙 > kyo\ ;
+笄 > kei\ ;
+竿 > sao\ ;
+拾 > juu\ ;
+拵 > son\ ;
+拠 > kyo\ ;
+竟 > kei\ ;
+竝 > hei\ ;
+拝 > hai\ ;
+拜 > hai\ ;
+拘 > kou\ ;
+担 > tan\ ;
+竃 > sou\ ;
+抵 > tei\ ;
+抱 > hou\ ;
+銭 > sen\ ;
+銜 > kan\ ;
+抛 > hou\ ;
+銘 > mei\ ;
+折 > ori\ ;
+抗 > kou\ ;
+投 > tou\ ;
+抓 > sou\ ;
+銅 > dou\ ;
+穿 > sen\ ;
+扱 > sou\ ;
+扮 > fun\ ;
+穗 > sui\ ;
+才 > sai\ ;
+穉 > chi\ ;
+稿 > kou\ ;
+稽 > kei\ ;
+稻 > tou\ ;
+戻 > rei\ ;
+戴 > tai\ ;
+稲 > ine\ ;
+戰 > sen\ ;
+稚 > chi\ ;
+或 > aru\ ;
+戒 > kai\ ;
+成 > sei\ ;
+鈍 > don\ ;
+税 > zei\ ;
+戌 > inu\ ;
+戀 > ren\ ;
+懸 > ken\ ;
+懷 > kai\ ;
+金 > kin\ ;
+重 > omo\ ;
+秋 > aki\ ;
+應 > you\ ;
+采 > sai\ ;
+懃 > kin\ ;
+禽 > kin\ ;
+憺 > tan\ ;
+憶 > oku\ ;
+禰 > dei\ ;
+禮 > rei\ ;
+憬 > kei\ ;
+憧 > dou\ ;
+憤 > fun\ ;
+醒 > sei\ ;
+憐 > ren\ ;
+憎 > zou\ ;
+醉 > sui\ ;
+禅 > zen\ ;
+憂 > yuu\ ;
+禁 > kin\ ;
+酸 > san\ ;
+祷 > tou\ ;
+慮 > ryo\ ;
+慨 > gai\ ;
+慥 > zou\ ;
+慣 > kan\ ;
+慢 > man\ ;
+慘 > san\ ;
+酔 > sui\ ;
+配 > hai\ ;
+慌 > kou\ ;
+慊 > ken\ ;
+礼 > rei\ ;
+示 > shi\ ;
+感 > kan\ ;
+礙 > gai\ ;
+郵 > yuu\ ;
+想 > sou\ ;
+惱 > nou\ ;
+惨 > san\ ;
+惠 > kei\ ;
+磐 > iwa\ ;
+郎 > rou\ ;
+郊 > kou\ ;
+情 > jou\ ;
+悼 > tou\ ;
+悶 > mon\ ;
+悴 > sui\ ;
+患 > kan\ ;
+悠 > yuu\ ;
+碗 > wan\ ;
+悖 > hai\ ;
+悔 > kai\ ;
+邊 > hen\ ;
+還 > kan\ ;
+邂 > kai\ ;
+選 > sen\ ;
+遲 > chi\ ;
+恰 > kou\ ;
+遮 > sha\ ;
+遭 > sou\ ;
+息 > iki\ ;
+硬 > kou\ ;
+恨 > kon\ ;
+遥 > you\ ;
+遣 > ken\ ;
+遠 > too\ ;
+遜 > son\ ;
+遙 > you\ ;
+遑 > kou\ ;
+遍 > hen\ ;
+恍 > kou\ ;
+遊 > yuu\ ;
+恋 > koi\ ;
+遇 > guu\ ;
+遅 > chi\ ;
+遂 > sui\ ;
+遁 > ton\ ;
+怪 > kai\ ;
+性 > sei\ ;
+砥 > shi\ ;
+連 > ren\ ;
+逢 > hou\ ;
+造 > zou\ ;
+怠 > tai\ ;
+逞 > tei\ ;
+逝 > sei\ ;
+思 > shi\ ;
+這 > gen\ ;
+砕 > sai\ ;
+研 > ken\ ;
+透 > tou\ ;
+逅 > kou\ ;
+逃 > tou\ ;
+送 > sou\ ;
+退 > tai\ ;
+忿 > fun\ ;
+龤 > kai\ ;
+龡 > sui\ ;
+龘 > tou\ ;
+龗 > rei\ ;
+龖 > tou\ ;
+龒 > ryu\ ;
+龐 > hou\ ;
+齽 > kin\ ;
+齷 > aku\ ;
+齶 > ago\ ;
+齵 > gou\ ;
+齳 > gun\ ;
+齯 > gei\ ;
+齭 > sho\ ;
+齬 > gyo\ ;
+齩 > gou\ ;
+齞 > gen\ ;
+齝 > chi\ ;
+齘 > kai\ ;
+齗 > kin\ ;
+齒 > shi\ ;
+齏 > sei\ ;
+齋 > sai\ ;
+齄 > sha\ ;
+齁 > kou\ ;
+鼺 > rui\ ;
+鼷 > kei\ ;
+鼲 > kon\ ;
+鼱 > sei\ ;
+鼪 > sei\ ;
+鼢 > fun\ ;
+鼡 > sho\ ;
+鼟 > tou\ ;
+鼛 > kou\ ;
+鼙 > hei\ ;
+鼗 > tou\ ;
+鼖 > fun\ ;
+鼕 > tou\ ;
+鼒 > shi\ ;
+鼑 > tei\ ;
+鼐 > dai\ ;
+鼇 > gou\ ;
+鼅 > chi\ ;
+鼃 > wai\ ;
+黿 > gen\ ;
+黽 > bou\ ;
+黹 > chi\ ;
+黶 > aza\ ;
+黵 > tan\ ;
+黲 > san\ ;
+黱 > tai\ ;
+黮 > tan\ ;
+黬 > kan\ ;
+黧 > rei\ ;
+黝 > yuu\ ;
+黕 > tan\ ;
+黔 > ken\ ;
+黏 > nen\ ;
+黎 > rei\ ;
+黌 > kou\ ;
+黋 > kou\ ;
+黈 > tou\ ;
+黆 > kou\ ;
+黃 > kou\ ;
+麺 > men\ ;
+麵 > ben\ ;
+麳 > rai\ ;
+麰 > bou\ ;
+麮 > kyo\ ;
+麭 > hou\ ;
+麪 > men\ ;
+麟 > rin\ ;
+麝 > sha\ ;
+麛 > bei\ ;
+麖 > kei\ ;
+麕 > kin\ ;
+麑 > gei\ ;
+麏 > kin\ ;
+麈 > shu\ ;
+麇 > kin\ ;
+麅 > hou\ ;
+麃 > hou\ ;
+麀 > yuu\ ;
+鹼 > ken\ ;
+鹻 > kan\ ;
+鹹 > kan\ ;
+鸰 > rei\ ;
+鸞 > ran\ ;
+鸛 > kan\ ;
+鸎 > you\ ;
+鸇 > sen\ ;
+鸂 > kei\ ;
+鷴 > kan\ ;
+鷳 > kan\ ;
+鷭 > ban\ ;
+鷥 > shi\ ;
+鷠 > gyo\ ;
+鷞 > sou\ ;
+鷙 > shi\ ;
+鷕 > you\ ;
+鷔 > gou\ ;
+鷓 > sha\ ;
+鷏 > ten\ ;
+鷉 > tei\ ;
+鷇 > kou\ ;
+鷆 > ten\ ;
+鷂 > you\ ;
+鶿 > shi\ ;
+鶼 > ken\ ;
+鶵 > suu\ ;
+鶱 > ken\ ;
+鶬 > sou\ ;
+鶤 > kon\ ;
+鶗 > tei\ ;
+鶊 > kou\ ;
+鶇 > tou\ ;
+鶆 > rai\ ;
+鶄 > sei\ ;
+鵾 > kon\ ;
+鵼 > kou\ ;
+鵻 > sui\ ;
+鵬 > hou\ ;
+鵫 > tou\ ;
+鵧 > hei\ ;
+鵣 > rai\ ;
+鵑 > ken\ ;
+鵊 > kou\ ;
+鵈 > ten\ ;
+鵄 > shi\ ;
+鵁 > kou\ ;
+鴿 > kou\ ;
+鴾 > bou\ ;
+鴻 > kou\ ;
+鴺 > tei\ ;
+鴴 > kou\ ;
+鴲 > shi\ ;
+鴦 > you\ ;
+鴟 > shi\ ;
+鴞 > you\ ;
+鴜 > shi\ ;
+鴘 > hen\ ;
+鴒 > rei\ ;
+鴋 > hou\ ;
+鴈 > gan\ ;
+鳹 > ken\ ;
+鳷 > shi\ ;
+鳳 > hou\ ;
+鳲 > shi\ ;
+鳰 > nio\ ;
+鳯 > hou\ ;
+鳮 > kei\ ;
+鳫 > gan\ ;
+鲹 > sou\ ;
+鲙 > kai\ ;
+鲉 > yuu\ ;
+鱻 > sen\ ;
+鱮 > sho\ ;
+鱤 > kan\ ;
+鱣 > tan\ ;
+鱠 > kai\ ;
+鱟 > kou\ ;
+鱞 > kan\ ;
+鱝 > fun\ ;
+鱛 > eso\ ;
+鱖 > kei\ ;
+鱔 > sen\ ;
+鱓 > sen\ ;
+鱇 > kou\ ;
+鱄 > sen\ ;
+鰶 > sei\ ;
+鰵 > bin\ ;
+鰲 > gou\ ;
+鰱 > ren\ ;
+鰪 > kou\ ;
+鰩 > you\ ;
+鰧 > tou\ ;
+鰦 > shi\ ;
+鰥 > kan\ ;
+鰣 > shi\ ;
+鰜 > ken\ ;
+鰕 > ebi\ ;
+鰔 > kan\ ;
+鰓 > era\ ;
+鰑 > you\ ;
+鰃 > wai\ ;
+鰁 > sen\ ;
+鰀 > kan\ ;
+鯿 > hen\ ;
+鯺 > sho\ ;
+鯹 > sei\ ;
+鯸 > kou\ ;
+鯷 > tei\ ;
+鯵 > aji\ ;
+鯯 > sei\ ;
+鯫 > sou\ ;
+鯤 > kon\ ;
+鯢 > gei\ ;
+鯟 > tou\ ;
+鯛 > tai\ ;
+鯘 > dai\ ;
+鯉 > koi\ ;
+鯈 > yuu\ ;
+鯇 > kan\ ;
+鯁 > kou\ ;
+鯀 > kon\ ;
+鮾 > dai\ ;
+鮸 > ben\ ;
+鮷 > tei\ ;
+鮰 > kai\ ;
+鮩 > hou\ ;
+鮦 > tou\ ;
+鮔 > kyo\ ;
+鮐 > tai\ ;
+鮏 > sei\ ;
+鮎 > ayu\ ;
+鮋 > yuu\ ;
+鮆 > sei\ ;
+魿 > rei\ ;
+魷 > yuu\ ;
+魵 > fun\ ;
+魴 > hou\ ;
+魳 > shi\ ;
+魭 > gen\ ;
+魬 > han\ ;
+魪 > kai\ ;
+魨 > ton\ ;
+魥 > gou\ ;
+魣 > sho\ ;
+魞 > eri\ ;
+魜 > jin\ ;
+魛 > tou\ ;
+魖 > kyo\ ;
+魑 > chi\ ;
+魍 > bou\ ;
+魋 > tai\ ;
+鬷 > sou\ ;
+鬵 > sen\ ;
+鬳 > ken\ ;
+鬭 > tou\ ;
+鬬 > tou\ ;
+鬫 > kan\ ;
+鬪 > tou\ ;
+鬨 > kou\ ;
+鬧 > tou\ ;
+鬦 > tou\ ;
+鬥 > tou\ ;
+鬟 > kan\ ;
+鬜 > kan\ ;
+鬙 > sou\ ;
+鬖 > san\ ;
+鬋 > sen\ ;
+鬉 > sou\ ;
+鬈 > ken\ ;
+鬅 > hou\ ;
+鬄 > tei\ ;
+鬃 > sou\ ;
+鬂 > bin\ ;
+鬀 > tei\ ;
+髻 > kei\ ;
+髳 > bou\ ;
+髱 > hou\ ;
+髯 > zen\ ;
+髩 > bin\ ;
+髧 > tan\ ;
+髦 > bou\ ;
+髥 > zen\ ;
+髣 > hou\ ;
+髢 > tei\ ;
+髠 > kon\ ;
+髞 > sou\ ;
+髛 > kou\ ;
+髙 > kou\ ;
+髖 > kan\ ;
+髕 > hin\ ;
+髓 > zui\ ;
+髒 > sou\ ;
+髐 > kou\ ;
+髏 > rou\ ;
+髈 > hou\ ;
+髁 > kai\ ;
+骿 > hen\ ;
+骾 > kou\ ;
+骹 > kou\ ;
+骶 > tei\ ;
+骵 > tai\ ;
+骴 > shi\ ;
+骰 > tou\ ;
+骯 > kou\ ;
+骔 > sou\ ;
+驩 > kan\ ;
+驤 > jou\ ;
+驛 > eki\ ;
+驔 > ten\ ;
+驒 > tan\ ;
+驎 > rin\ ;
+驇 > chi\ ;
+驄 > sou\ ;
+驂 > san\ ;
+驁 > gou\ ;
+騺 > chi\ ;
+騸 > sen\ ;
+騵 > gen\ ;
+騰 > tou\ ;
+騫 > ken\ ;
+騨 > tan\ ;
+騣 > sou\ ;
+騠 > tei\ ;
+騗 > hen\ ;
+騐 > ken\ ;
+騌 > sou\ ;
+騋 > rai\ ;
+騈 > hen\ ;
+騅 > sui\ ;
+騃 > gai\ ;
+騂 > sei\ ;
+騁 > tei\ ;
+駾 > tai\ ;
+駽 > ken\ ;
+駻 > kan\ ;
+駹 > bou\ ;
+駴 > kai\ ;
+駭 > kai\ ;
+駫 > kei\ ;
+駧 > tou\ ;
+駢 > hen\ ;
+駟 > shi\ ;
+駚 > you\ ;
+駘 > tai\ ;
+駔 > sou\ ;
+駉 > kei\ ;
+馼 > bun\ ;
+馺 > sou\ ;
+馵 > shu\ ;
+馨 > kei\ ;
+馦 > ken\ ;
+馓 > san\ ;
+饞 > san\ ;
+饛 > bou\ ;
+饙 > fun\ ;
+饘 > sen\ ;
+饕 > tou\ ;
+饔 > you\ ;
+饎 > shi\ ;
+饍 > zen\ ;
+饌 > sen\ ;
+饊 > san\ ;
+饉 > kin\ ;
+饁 > you\ ;
+饀 > tou\ ;
+餻 > kou\ ;
+餹 > tou\ ;
+餵 > dai\ ;
+餴 > fun\ ;
+餳 > tou\ ;
+餱 > kou\ ;
+餧 > dai\ ;
+餤 > tan\ ;
+餢 > hou\ ;
+餠 > hei\ ;
+餛 > kon\ ;
+餚 > kou\ ;
+餖 > tou\ ;
+餒 > dai\ ;
+餌 > esa\ ;
+餈 > shi\ ;
+餃 > kou\ ;
+餂 > ten\ ;
+餁 > jin\ ;
+飳 > shu\ ;
+飰 > han\ ;
+飪 > jin\ ;
+飩 > ton\ ;
+飧 > son\ ;
+飦 > ken\ ;
+飣 > tei\ ;
+飡 > san\ ;
+飌 > fuu\ ;
+颿 > han\ ;
+颻 > you\ ;
+颺 > you\ ;
+颸 > shi\ ;
+颴 > sen\ ;
+颱 > tai\ ;
+颭 > sen\ ;
+顴 > kan\ ;
+顰 > hin\ ;
+顪 > kai\ ;
+顥 > kou\ ;
+顢 > ban\ ;
+顚 > ten\ ;
+顙 > sou\ ;
+顓 > sen\ ;
+顑 > kan\ ;
+顋 > sai\ ;
+顇 > sui\ ;
+顄 > kan\ ;
+頾 > shi\ ;
+頽 > tai\ ;
+頹 > tai\ ;
+頷 > kan\ ;
+頳 > tei\ ;
+頲 > tei\ ;
+頯 > kai\ ;
+頮 > kai\ ;
+頦 > kai\ ;
+頠 > gai\ ;
+頜 > kan\ ;
+頖 > han\ ;
+頒 > han\ ;
+頏 > kou\ ;
+須 > shu\ ;
+頇 > kan\ ;
+韸 > hou\ ;
+韴 > sou\ ;
+韲 > sei\ ;
+韱 > sen\ ;
+韯 > sen\ ;
+韝 > kou\ ;
+韜 > tou\ ;
+韛 > hai\ ;
+韓 > kan\ ;
+韐 > kou\ ;
+韎 > bai\ ;
+韌 > jin\ ;
+韊 > ran\ ;
+韉 > sen\ ;
+韆 > sen\ ;
+韅 > ken\ ;
+韄 > aku\ ;
+鞺 > tou\ ;
+鞶 > han\ ;
+鞳 > tou\ ;
+鞲 > kou\ ;
+鞱 > tou\ ;
+鞮 > tei\ ;
+鞬 > ken\ ;
+鞣 > juu\ ;
+鞞 > hei\ ;
+鞜 > tou\ ;
+鞚 > kou\ ;
+鞙 > ken\ ;
+鞗 > tou\ ;
+鞖 > sai\ ;
+鞕 > gou\ ;
+鞉 > tou\ ;
+鞀 > tou\ ;
+靽 > ban\ ;
+靼 > tan\ ;
+靸 > sou\ ;
+靳 > kin\ ;
+靱 > jin\ ;
+靭 > jin\ ;
+靫 > sai\ ;
+靪 > tei\ ;
+靧 > kai\ ;
+靦 > ten\ ;
+靤 > hou\ ;
+靣 > men\ ;
+靠 > kou\ ;
+靛 > ten\ ;
+靚 > sei\ ;
+靗 > tei\ ;
+靑 > sei\ ;
+靊 > fuu\ ;
+靆 > tai\ ;
+靁 > rai\ ;
+霾 > bai\ ;
+霽 > sei\ ;
+霝 > rei\ ;
+霛 > rei\ ;
+霚 > bou\ ;
+霖 > rin\ ;
+霓 > gei\ ;
+霑 > ten\ ;
+霎 > sou\ ;
+霉 > bai\ ;
+霈 > hai\ ;
+霆 > tei\ ;
+雱 > hou\ ;
+雰 > fun\ ;
+雯 > bun\ ;
+雟 > kei\ ;
+雞 > kei\ ;
+雝 > you\ ;
+雚 > kan\ ;
+雙 > sou\ ;
+雎 > sho\ ;
+雍 > you\ ;
+雋 > sen\ ;
+雊 > kou\ ;
+雈 > kan\ ;
+隹 > sui\ ;
+隸 > rei\ ;
+隷 > rei\ ;
+隶 > tai\ ;
+隴 > rou\ ;
+隯 > tou\ ;
+隮 > sei\ ;
+隧 > sui\ ;
+隦 > hei\ ;
+隥 > tou\ ;
+隤 > tai\ ;
+隝 > tou\ ;
+隚 > tou\ ;
+隗 > kai\ ;
+隑 > kai\ ;
+隍 > kou\ ;
+隄 > tei\ ;
+隃 > shu\ ;
+陾 > jou\ ;
+陼 > sho\ ;
+陷 > kan\ ;
+陲 > sui\ ;
+陮 > tai\ ;
+陬 > suu\ ;
+陪 > bai\ ;
+陦 > tou\ ;
+陡 > tou\ ;
+陝 > sen\ ;
+陜 > kou\ ;
+陛 > hei\ ;
+陘 > kei\ ;
+陖 > kai\ ;
+陔 > gai\ ;
+陋 > rou\ ;
+阺 > kyo\ ;
+阸 > aku\ ;
+阷 > tei\ ;
+阳 > you\ ;
+阱 > sei\ ;
+阯 > shi\ ;
+阮 > gen\ ;
+阬 > kou\ ;
+阨 > aku\ ;
+阦 > you\ ;
+阤 > chi\ ;
+阡 > sen\ ;
+闦 > gon\ ;
+闤 > kan\ ;
+闡 > sen\ ;
+闠 > kai\ ;
+闙 > kei\ ;
+闗 > kan\ ;
+闔 > kou\ ;
+闓 > kai\ ;
+闒 > tou\ ;
+闐 > ten\ ;
+闌 > ran\ ;
+闆 > han\ ;
+閿 > bun\ ;
+閽 > kon\ ;
+閺 > ben\ ;
+閬 > rou\ ;
+閫 > kon\ ;
+閩 > ben\ ;
+閨 > kei\ ;
+閧 > kou\ ;
+閡 > gai\ ;
+閞 > hen\ ;
+閝 > rei\ ;
+閙 > tou\ ;
+閘 > kou\ ;
+閔 > bin\ ;
+閏 > jun\ ;
+閎 > kou\ ;
+閍 > hou\ ;
+閌 > kou\ ;
+閈 > kan\ ;
+閇 > hei\ ;
+閂 > san\ ;
+镴 > rou\ ;
+镮 > kan\ ;
+锽 > kou\ ;
+铦 > sen\ ;
+铓 > bou\ ;
+铇 > hou\ ;
+钄 > ran\ ;
+鑾 > ran\ ;
+鑽 > san\ ;
+鑷 > jou\ ;
+鑲 > jou\ ;
+鑱 > san\ ;
+鑯 > sen\ ;
+鑭 > ran\ ;
+鑫 > kin\ ;
+鑨 > rou\ ;
+鑞 > rou\ ;
+鑛 > kou\ ;
+鑚 > san\ ;
+鑙 > kei\ ;
+鑑 > kan\ ;
+鑌 > hin\ ;
+鑈 > gei\ ;
+鑅 > kou\ ;
+鑁 > ban\ ;
+鐻 > kyo\ ;
+鐺 > tou\ ;
+鐶 > kan\ ;
+鐳 > rai\ ;
+鐱 > sen\ ;
+鐮 > ren\ ;
+鐫 > sen\ ;
+鐟 > tei\ ;
+鐙 > tou\ ;
+鐗 > kan\ ;
+鐕 > san\ ;
+鐓 > tai\ ;
+鐏 > son\ ;
+鐉 > sen\ ;
+鐇 > han\ ;
+鐄 > kou\ ;
+鐃 > dou\ ;
+鐁 > shi\ ;
+鏻 > rin\ ;
+鏸 > tei\ ;
+鏨 > san\ ;
+鏧 > rou\ ;
+鏤 > rou\ ;
+鏟 > san\ ;
+鏞 > you\ ;
+鏝 > man\ ;
+鏜 > tou\ ;
+鏙 > sai\ ;
+鏗 > kou\ ;
+鏓 > sou\ ;
+鏋 > ban\ ;
+鏈 > ren\ ;
+鏇 > sen\ ;
+鏆 > kan\ ;
+鏄 > tan\ ;
+鎬 > kou\ ;
+鎫 > ban\ ;
+鎩 > sai\ ;
+鎤 > kou\ ;
+鎡 > shi\ ;
+鎞 > hei\ ;
+鎗 > sou\ ;
+鎕 > tou\ ;
+鎔 > you\ ;
+鎒 > dou\ ;
+鎊 > hau\ ;
+鍿 > shi\ ;
+鍽 > hen\ ;
+鍴 > tan\ ;
+鍳 > kan\ ;
+鍱 > you\ ;
+鍰 > kan\ ;
+鍯 > sou\ ;
+鍭 > kou\ ;
+鍪 > bou\ ;
+鍩 > ten\ ;
+鍧 > kou\ ;
+鍤 > sou\ ;
+鍠 > kou\ ;
+鍞 > kou\ ;
+鍚 > you\ ;
+鍗 > tei\ ;
+鍕 > kun\ ;
+鍒 > juu\ ;
+鍑 > huu\ ;
+鍐 > sou\ ;
+鍊 > ren\ ;
+鍉 > tei\ ;
+鍇 > kai\ ;
+鍄 > kei\ ;
+錵 > nie\ ;
+錳 > mou\ ;
+錬 > ren\ ;
+錪 > ten\ ;
+錧 > kan\ ;
+錥 > iku\ ;
+錣 > tei\ ;
+錠 > jou\ ;
+錟 > tan\ ;
+錝 > sou\ ;
+錜 > jou\ ;
+錚 > sou\ ;
+錙 > shi\ ;
+錕 > kon\ ;
+錔 > tou\ ;
+錑 > rai\ ;
+錈 > ken\ ;
+錀 > rin\ ;
+鋻 > ken\ ;
+鋮 > sei\ ;
+鋬 > han\ ;
+鋧 > ken\ ;
+鋥 > tou\ ;
+鋡 > kan\ ;
+鋟 > sen\ ;
+鋙 > gyo\ ;
+鋗 > ken\ ;
+鋕 > shi\ ;
+鋓 > ten\ ;
+鋐 > kou\ ;
+鋎 > kan\ ;
+鋌 > tei\ ;
+鋋 > sen\ ;
+鋇 > hai\ ;
+鋅 > shi\ ;
+鋃 > rou\ ;
+鋂 > bai\ ;
+鋁 > ryo\ ;
+鋀 > tou\ ;
+銻 > tei\ ;
+銺 > sou\ ;
+銲 > kan\ ;
+銧 > kou\ ;
+銤 > bei\ ;
+銠 > rou\ ;
+銚 > you\ ;
+銙 > kai\ ;
+銗 > kou\ ;
+銖 > shu\ ;
+銓 > sen\ ;
+銒 > kei\ ;
+銈 > tei\ ;
+鉿 > kou\ ;
+鉼 > hei\ ;
+鉹 > shi\ ;
+鉸 > kou\ ;
+鉷 > kou\ ;
+鉶 > kei\ ;
+鉵 > tou\ ;
+鉱 > kou\ ;
+鉰 > shi\ ;
+鉩 > jou\ ;
+鉨 > dei\ ;
+鉧 > bou\ ;
+鉤 > kou\ ;
+鉡 > han\ ;
+鉜 > fuu\ ;
+鉙 > tai\ ;
+鉗 > kan\ ;
+鉏 > sho\ ;
+鉎 > sou\ ;
+鉉 > ken\ ;
+鉈 > sha\ ;
+鉇 > shi\ ;
+鉆 > ten\ ;
+鉅 > kyo\ ;
+鉃 > shi\ ;
+鉂 > shi\ ;
+鉀 > kou\ ;
+鈿 > ten\ ;
+鈶 > shi\ ;
+鈵 > hei\ ;
+鈰 > shi\ ;
+鈮 > dei\ ;
+鈣 > kai\ ;
+鈞 > kin\ ;
+鈜 > kou\ ;
+鈖 > hun\ ;
+鈓 > jin\ ;
+鈒 > sou\ ;
+鈑 > han\ ;
+鈐 > ken\ ;
+鈉 > dou\ ;
+鈄 > tou\ ;
+鈁 > hou\ ;
+釿 > kin\ ;
+釼 > ken\ ;
+釶 > shi\ ;
+釱 > tei\ ;
+釯 > bou\ ;
+釮 > sen\ ;
+釭 > kou\ ;
+釬 > kan\ ;
+釩 > han\ ;
+釧 > sen\ ;
+釦 > kou\ ;
+釤 > san\ ;
+釖 > tou\ ;
+釉 > yuu\ ;
+釆 > han\ ;
+釅 > gen\ ;
+釃 > shi\ ;
+釁 > kin\ ;
+釀 > jou\ ;
+醽 > rei\ ;
+醺 > kun\ ;
+醸 > jou\ ;
+醶 > gen\ ;
+醵 > kyo\ ;
+醴 > rei\ ;
+醳 > eki\ ;
+醲 > jou\ ;
+醰 > tan\ ;
+醯 > kei\ ;
+醦 > san\ ;
+醢 > kai\ ;
+醘 > kou\ ;
+醓 > tan\ ;
+醑 > sho\ ;
+醎 > dai\ ;
+醍 > tei\ ;
+醆 > san\ ;
+醅 > hai\ ;
+醂 > rin\ ;
+酻 > sui\ ;
+酹 > rai\ ;
+酶 > bai\ ;
+酵 > kou\ ;
+酲 > tei\ ;
+酭 > yuu\ ;
+酩 > mei\ ;
+酣 > kan\ ;
+酚 > hun\ ;
+酘 > tou\ ;
+酖 > tan\ ;
+酊 > tei\ ;
+酇 > san\ ;
+酆 > fuu\ ;
+酃 > rei\ ;
+鄽 > ten\ ;
+鄼 > sab\ ;
+鄺 > kou\ ;
+鄷 > hou\ ;
+鄶 > kai\ ;
+鄲 > tan\ ;
+鄰 > rin\ ;
+鄯 > sen\ ;
+鄮 > bou\ ;
+鄭 > tei\ ;
+鄧 > tou\ ;
+鄞 > gin\ ;
+鄘 > you\ ;
+鄗 > kou\ ;
+鄒 > suu\ ;
+鄍 > mei\ ;
+鄄 > ken\ ;
+郯 > tan\ ;
+郥 > hai\ ;
+郡 > gun\ ;
+郟 > kou\ ;
+郞 > rou\ ;
+郜 > kou\ ;
+郘 > ryo\ ;
+郗 > chi\ ;
+郕 > sei\ ;
+郒 > rou\ ;
+郌 > kei\ ;
+郈 > kou\ ;
+郃 > kou\ ;
+郁 > iku\ ;
+邾 > chu\ ;
+邽 > kei\ ;
+邶 > hai\ ;
+邴 > hei\ ;
+邰 > tai\ ;
+邯 > kan\ ;
+邨 > son\ ;
+邢 > kei\ ;
+邡 > hou\ ;
+邠 > hin\ ;
+邙 > bou\ ;
+邗 > kan\ ;
+邕 > you\ ;
+邑 > yuu\ ;
+邎 > yuu\ ;
+邌 > rei\ ;
+邉 > hen\ ;
+邅 > ken\ ;
+邃 > sui\ ;
+邁 > bai\ ;
+邀 > you\ ;
+遽 > kyo\ ;
+遷 > sen\ ;
+遶 > jou\ ;
+遵 > jun\ ;
+遴 > rin\ ;
+遰 > tei\ ;
+遯 > ton\ ;
+遨 > gou\ ;
+遦 > kan\ ;
+遢 > tou\ ;
+遟 > chi\ ;
+遞 > tei\ ;
+遝 > tou\ ;
+遘 > kou\ ;
+遉 > tei\ ;
+遄 > sen\ ;
+遃 > gen\ ;
+逿 > tou\ ;
+逳 > iku\ ;
+逰 > yuu\ ;
+逮 > tai\ ;
+逭 > kan\ ;
+逬 > hou\ ;
+逨 > rai\ ;
+逥 > kai\ ;
+逗 > tou\ ;
+逕 > kei\ ;
+逓 > tei\ ;
+逌 > yuu\ ;
+逈 > kei\ ;
+逄 > hou\ ;
+迺 > dai\ ;
+迸 > hou\ ;
+迶 > yuu\ ;
+迵 > tou\ ;
+迴 > kai\ ;
+迯 > tou\ ;
+迨 > tai\ ;
+迣 > sei\ ;
+迒 > kou\ ;
+迊 > sou\ ;
+迁 > sen\ ;
+迀 > kan\ ;
+边 > hen\ ;
+辮 > hen\ ;
+辨 > ben\ ;
+辧 > ben\ ;
+辦 > han\ ;
+辡 > hen\ ;
+辠 > sai\ ;
+轥 > rin\ ;
+轞 > kan\ ;
+轘 > kan\ ;
+轗 > kan\ ;
+轔 > rin\ ;
+轓 > han\ ;
+轒 > hun\ ;
+轑 > rau\ ;
+轏 > san\ ;
+轇 > kou\ ;
+轁 > tou\ ;
+輾 > ten\ ;
+輺 > shi\ ;
+輷 > kou\ ;
+輶 > yuu\ ;
+輳 > sou\ ;
+輮 > juu\ ;
+輭 > zen\ ;
+輨 > kan\ ;
+輦 > ren\ ;
+輥 > kon\ ;
+輣 > hou\ ;
+輡 > kan\ ;
+輞 > bou\ ;
+輜 > shi\ ;
+輗 > gei\ ;
+輓 > ban\ ;
+輐 > kan\ ;
+輏 > yuu\ ;
+輊 > chi\ ;
+輇 > sen\ ;
+軺 > you\ ;
+軹 > shi\ ;
+軰 > hai\ ;
+軨 > rei\ ;
+軣 > gou\ ;
+軠 > jin\ ;
+軟 > nan\ ;
+軜 > dou\ ;
+軛 > aku\ ;
+軔 > jin\ ;
+軑 > tei\ ;
+軐 > sen\ ;
+軇 > tou\ ;
+軆 > tei\ ;
+軁 > rou\ ;
+躺 > tou\ ;
+躰 > tei\ ;
+躭 > tan\ ;
+躪 > rin\ ;
+躧 > shi\ ;
+躢 > tou\ ;
+躡 > jou\ ;
+躝 > ran\ ;
+躚 > sen\ ;
+躙 > rin\ ;
+躕 > chu\ ;
+躔 > ten\ ;
+躋 > sei\ ;
+躉 > ton\ ;
+躁 > sou\ ;
+蹹 > tou\ ;
+蹯 > han\ ;
+蹭 > sou\ ;
+蹬 > tou\ ;
+蹣 > man\ ;
+蹡 > you\ ;
+蹝 > shi\ ;
+蹛 > tai\ ;
+蹔 > san\ ;
+蹏 > tei\ ;
+蹎 > ten\ ;
+蹍 > ten\ ;
+蹋 > tou\ ;
+蹊 > kei\ ;
+蹈 > tou\ ;
+蹇 > ken\ ;
+蹂 > juu\ ;
+蹁 > hen\ ;
+踹 > sen\ ;
+踶 > tei\ ;
+踴 > you\ ;
+踣 > hou\ ;
+踡 > ken\ ;
+踞 > kyo\ ;
+踔 > tou\ ;
+踐 > sen\ ;
+踈 > sho\ ;
+踅 > tei\ ;
+踁 > kei\ ;
+践 > sen\ ;
+跴 > sai\ ;
+跲 > kou\ ;
+跱 > chi\ ;
+跰 > hou\ ;
+跧 > sen\ ;
+跤 > kou\ ;
+跚 > san\ ;
+跙 > sho\ ;
+跑 > hou\ ;
+跊 > bai\ ;
+跈 > den\ ;
+跆 > tai\ ;
+趾 > shi\ ;
+趼 > gen\ ;
+趲 > san\ ;
+趯 > kan\ ;
+趨 > suu\ ;
+趦 > shi\ ;
+趟 > tou\ ;
+趕 > kan\ ;
+趑 > shi\ ;
+趍 > chi\ ;
+趈 > tan\ ;
+趄 > sho\ ;
+赿 > chi\ ;
+赱 > sou\ ;
+赭 > sha\ ;
+赬 > tei\ ;
+赦 > sha\ ;
+贜 > zou\ ;
+贛 > kou\ ;
+贗 > ken\ ;
+贓 > zou\ ;
+贒 > ken\ ;
+贍 > sen\ ;
+贊 > san\ ;
+贉 > tan\ ;
+贈 > zou\ ;
+贄 > shi\ ;
+贃 > wan\ ;
+贁 > hai\ ;
+賿 > rou\ ;
+賸 > you\ ;
+賷 > sei\ ;
+賵 > huu\ ;
+賴 > rai\ ;
+賲 > hou\ ;
+賯 > kei\ ;
+賨 > sou\ ;
+賤 > sen\ ;
+賠 > bai\ ;
+賜 > shi\ ;
+賛 > san\ ;
+賚 > rai\ ;
+賖 > sha\ ;
+賔 > hin\ ;
+賓 > hin\ ;
+賒 > sha\ ;
+賎 > sen\ ;
+賍 > sou\ ;
+賋 > kou\ ;
+賆 > hen\ ;
+賅 > kai\ ;
+賄 > wai\ ;
+貿 > bou\ ;
+貹 > sei\ ;
+貶 > hen\ ;
+貲 > shi\ ;
+貫 > kan\ ;
+貪 > don\ ;
+販 > han\ ;
+貢 > kou\ ;
+貛 > kan\ ;
+貙 > chu\ ;
+貒 > tan\ ;
+貎 > gei\ ;
+貌 > bou\ ;
+貋 > kan\ ;
+貇 > kon\ ;
+貆 > kan\ ;
+豻 > kan\ ;
+豺 > sai\ ;
+豸 > chi\ ;
+豶 > hun\ ;
+豵 > sou\ ;
+豳 > hin\ ;
+豬 > cho\ ;
+豩 > hin\ ;
+豦 > kyo\ ;
+豤 > kon\ ;
+豣 > ken\ ;
+豢 > ken\ ;
+豜 > ken\ ;
+豛 > eki\ ;
+豘 > ton\ ;
+豕 > shi\ ;
+豏 > kan\ ;
+豋 > tou\ ;
+豉 > shi\ ;
+豇 > kou\ ;
+豅 > rou\ ;
+谿 > kei\ ;
+谾 > kou\ ;
+谽 > kan\ ;
+谹 > kou\ ;
+谸 > sen\ ;
+讜 > tou\ ;
+讚 > san\ ;
+讙 > kan\ ;
+讕 > ran\ ;
+讓 > jou\ ;
+讒 > san\ ;
+譾 > sen\ ;
+譼 > kan\ ;
+譹 > kou\ ;
+譶 > tou\ ;
+譴 > ken\ ;
+譱 > zen\ ;
+譣 > sen\ ;
+譟 > sou\ ;
+譞 > ken\ ;
+譚 > tan\ ;
+譔 > sen\ ;
+譓 > kei\ ;
+譍 > you\ ;
+譈 > tai\ ;
+譄 > sou\ ;
+譂 > sen\ ;
+謾 > ban\ ;
+謰 > ren\ ;
+謭 > sei\ ;
+謦 > kei\ ;
+謠 > you\ ;
+謟 > tou\ ;
+謜 > gen\ ;
+謚 > shi\ ;
+謗 > bou\ ;
+謑 > kei\ ;
+謊 > kou\ ;
+謇 > ken\ ;
+謆 > sen\ ;
+謅 > sou\ ;
+謄 > tou\ ;
+諼 > ken\ ;
+諷 > fuu\ ;
+諵 > nan\ ;
+諴 > kan\ ;
+諰 > shi\ ;
+諮 > shi\ ;
+諬 > kei\ ;
+諫 > kan\ ;
+諧 > kai\ ;
+諢 > kon\ ;
+諡 > shi\ ;
+諠 > ken\ ;
+諟 > shi\ ;
+諞 > hen\ ;
+諝 > sho\ ;
+諚 > jou\ ;
+諕 > kou\ ;
+諓 > sen\ ;
+諏 > shu\ ;
+諍 > sou\ ;
+諌 > kan\ ;
+諉 > zui\ ;
+諈 > sui\ ;
+諄 > jun\ ;
+諂 > ten\ ;
+誾 > gin\ ;
+誻 > tou\ ;
+誷 > bou\ ;
+誶 > sui\ ;
+誩 > kei\ ;
+誨 > kai\ ;
+誥 > kou\ ;
+誡 > kai\ ;
+誟 > kou\ ;
+誙 > kou\ ;
+誗 > ten\ ;
+誕 > tan\ ;
+誏 > rou\ ;
+誃 > shi\ ;
+詿 > kai\ ;
+詼 > kai\ ;
+詺 > bii\ ;
+詹 > sen\ ;
+詷 > tou\ ;
+詬 > kou\ ;
+詥 > kou\ ;
+詣 > kei\ ;
+詢 > jun\ ;
+詝 > cho\ ;
+詜 > tou\ ;
+詓 > kyo\ ;
+詒 > tai\ ;
+詎 > kyo\ ;
+詉 > dou\ ;
+詇 > you\ ;
+詆 > tei\ ;
+詅 > rei\ ;
+詃 > ken\ ;
+詀 > tan\ ;
+訾 > shi\ ;
+訽 > kou\ ;
+訵 > chi\ ;
+訬 > sou\ ;
+訤 > kon\ ;
+訢 > kin\ ;
+訞 > you\ ;
+訕 > san\ ;
+訔 > gin\ ;
+訓 > kun\ ;
+訒 > jin\ ;
+訑 > shi\ ;
+討 > tou\ ;
+訌 > kou\ ;
+訇 > kou\ ;
+訂 > tei\ ;
+觿 > kei\ ;
+觽 > kei\ ;
+觹 > kei\ ;
+觶 > shi\ ;
+觧 > kai\ ;
+觥 > kou\ ;
+觝 > tei\ ;
+觜 > shi\ ;
+觘 > sou\ ;
+觗 > shi\ ;
+觔 > kin\ ;
+覸 > kan\ ;
+覷 > shu\ ;
+覵 > kan\ ;
+覴 > tou\ ;
+覲 > kin\ ;
+覯 > kou\ ;
+覥 > ten\ ;
+覠 > kin\ ;
+覟 > shi\ ;
+覘 > ten\ ;
+覔 > eki\ ;
+覍 > hen\ ;
+覌 > kan\ ;
+覃 > tan\ ;
+襾 > aka\ ;
+襽 > ran\ ;
+襼 > gei\ ;
+襻 > han\ ;
+襺 > ken\ ;
+襴 > ran\ ;
+襳 > sen\ ;
+襰 > rai\ ;
+襢 > tan\ ;
+襠 > tou\ ;
+襜 > sen\ ;
+襛 > jou\ ;
+襚 > sui\ ;
+襕 > ran\ ;
+襌 > tan\ ;
+襉 > kan\ ;
+襄 > jou\ ;
+襃 > hou\ ;
+褹 > gei\ ;
+褰 > ken\ ;
+褫 > chi\ ;
+褧 > kei\ ;
+褦 > dai\ ;
+褠 > kou\ ;
+褝 > tan\ ;
+褜 > ena\ ;
+褚 > cho\ ;
+褙 > hai\ ;
+褖 > tan\ ;
+褏 > yuu\ ;
+褍 > tan\ ;
+褊 > hen\ ;
+褆 > shi\ ;
+褂 > kai\ ;
+裵 > hai\ ;
+裴 > hai\ ;
+裪 > tau\ ;
+裧 > sen\ ;
+裞 > sei\ ;
+裙 > kun\ ;
+裒 > hou\ ;
+裎 > tei\ ;
+裍 > kon\ ;
+裌 > kou\ ;
+裋 > shu\ ;
+裊 > jou\ ;
+裈 > kon\ ;
+袿 > kei\ ;
+袾 > chu\ ;
+袵 > jin\ ;
+袳 > shi\ ;
+袪 > kyo\ ;
+袨 > ken\ ;
+袤 > bou\ ;
+袞 > kon\ ;
+袛 > tei\ ;
+袒 > tan\ ;
+袍 > hou\ ;
+袀 > kin\ ;
+衿 > eri\ ;
+衽 > jin\ ;
+衻 > zen\ ;
+衲 > dou\ ;
+衮 > kon\ ;
+衫 > san\ ;
+衩 > sai\ ;
+衦 > kan\ ;
+衟 > dou\ ;
+衜 > dou\ ;
+衙 > gyo\ ;
+衘 > kan\ ;
+衖 > kou\ ;
+衕 > tou\ ;
+衒 > ken\ ;
+衑 > rei\ ;
+衎 > kan\ ;
+衅 > kin\ ;
+衃 > hai\ ;
+衁 > kou\ ;
+蠻 > ban\ ;
+蠺 > san\ ;
+蠵 > kei\ ;
+蠲 > ken\ ;
+蠭 > hou\ ;
+蠣 > rei\ ;
+蠡 > rei\ ;
+蠟 > rou\ ;
+蠜 > han\ ;
+蠙 > hen\ ;
+蠔 > kou\ ;
+蠓 > bou\ ;
+蠒 > ken\ ;
+蠐 > sei\ ;
+蠏 > kai\ ;
+蠊 > ren\ ;
+蠉 > ken\ ;
+蠆 > tai\ ;
+蠅 > you\ ;
+蟿 > kei\ ;
+蟾 > sen\ ;
+蟺 > sen\ ;
+蟸 > rei\ ;
+蟷 > tou\ ;
+蟶 > tei\ ;
+蟳 > jin\ ;
+蟱 > bou\ ;
+蟬 > sen\ ;
+蟪 > kei\ ;
+蟤 > sen\ ;
+蟠 > han\ ;
+蟚 > hou\ ;
+蟖 > shi\ ;
+蟕 > sui\ ;
+蟒 > bou\ ;
+蟐 > tou\ ;
+蟊 > bou\ ;
+蟁 > bun\ ;
+螻 > rou\ ;
+螳 > tou\ ;
+螯 > gou\ ;
+螮 > tei\ ;
+螭 > chi\ ;
+螬 > sou\ ;
+螧 > ebi\ ;
+螣 > tou\ ;
+螟 > mei\ ;
+螗 > tou\ ;
+螕 > hei\ ;
+螌 > han\ ;
+螈 > gen\ ;
+螇 > kei\ ;
+螆 > shi\ ;
+螅 > shi\ ;
+螄 > shi\ ;
+螃 > hou\ ;
+螂 > rou\ ;
+蝻 > nan\ ;
+蝱 > mou\ ;
+蝪 > tou\ ;
+蝦 > ebi\ ;
+蝥 > bou\ ;
+蝣 > yuu\ ;
+蝡 > zen\ ;
+蝗 > kou\ ;
+蝅 > san\ ;
+蝃 > tei\ ;
+蝀 > tou\ ;
+蜺 > gei\ ;
+蜹 > zei\ ;
+蜷 > ken\ ;
+蜴 > eki\ ;
+蜯 > hou\ ;
+蜡 > sho\ ;
+蜟 > iku\ ;
+蜖 > kai\ ;
+蜕 > zei\ ;
+蜔 > ten\ ;
+蜓 > ten\ ;
+蜑 > tan\ ;
+蜏 > yuu\ ;
+蜍 > sho\ ;
+蜋 > rou\ ;
+蛽 > bai\ ;
+蛼 > sha\ ;
+蛻 > zei\ ;
+蛯 > ebi\ ;
+蛮 > ban\ ;
+蛧 > bou\ ;
+蛠 > rei\ ;
+蛟 > kou\ ;
+蛗 > huu\ ;
+蛕 > kai\ ;
+蛔 > kai\ ;
+蛑 > bou\ ;
+蛎 > rei\ ;
+蛋 > tan\ ;
+蛅 > zen\ ;
+蛃 > hei\ ;
+蛀 > shu\ ;
+蚿 > ken\ ;
+蚷 > kyo\ ;
+蚶 > kan\ ;
+蚴 > yuu\ ;
+蚳 > chi\ ;
+蚰 > yuu\ ;
+蚫 > hou\ ;
+蚪 > tou\ ;
+蚩 > shi\ ;
+蚧 > kai\ ;
+蚦 > zen\ ;
+蚣 > kou\ ;
+蚡 > hun\ ;
+蚘 > kai\ ;
+蚖 > gen\ ;
+蚌 > hou\ ;
+蚈 > ken\ ;
+虻 > abu\ ;
+虷 > kan\ ;
+虵 > sha\ ;
+虤 > gan\ ;
+虣 > hou\ ;
+虢 > hou\ ;
+虡 > kyo\ ;
+虠 > kou\ ;
+虛 > kyo\ ;
+虗 > kyo\ ;
+虔 > ken\ ;
+虓 > kou\ ;
+虒 > shi\ ;
+虆 > rui\ ;
+虀 > sei\ ;
+蘸 > san\ ;
+蘯 > tou\ ;
+蘩 > han\ ;
+蘢 > rou\ ;
+蘞 > ren\ ;
+蘛 > iku\ ;
+蘚 > sen\ ;
+蘘 > jou\ ;
+蘐 > ken\ ;
+蘏 > kei\ ;
+蘍 > kun\ ;
+蘋 > hin\ ;
+蘅 > kou\ ;
+藾 > rai\ ;
+藼 > ken\ ;
+藺 > rin\ ;
+藷 > sho\ ;
+藳 > kou\ ;
+藟 > rui\ ;
+藘 > ryo\ ;
+藕 > guu\ ;
+藏 > zou\ ;
+藊 > hen\ ;
+藇 > sho\ ;
+藂 > sou\ ;
+薾 > shi\ ;
+薹 > tai\ ;
+薶 > bai\ ;
+薴 > nou\ ;
+薰 > kun\ ;
+薭 > hai\ ;
+薫 > kun\ ;
+薨 > kou\ ;
+薧 > kou\ ;
+薤 > kai\ ;
+薢 > kai\ ;
+薠 > han\ ;
+薟 > ren\ ;
+薝 > sen\ ;
+薙 > tei\ ;
+薐 > rou\ ;
+薋 > shi\ ;
+薉 > wai\ ;
+薈 > kai\ ;
+薅 > kou\ ;
+薁 > iku\ ;
+蕿 > ken\ ;
+蕽 > dou\ ;
+蕻 > kou\ ;
+蕹 > you\ ;
+蕯 > rou\ ;
+蕫 > tou\ ;
+蕤 > zui\ ;
+蕢 > kai\ ;
+蕡 > hun\ ;
+蕞 > sai\ ;
+蕙 > kei\ ;
+蕘 > jou\ ;
+蕖 > kyo\ ;
+蕕 > yuu\ ;
+蕒 > bai\ ;
+蕑 > kan\ ;
+蕏 > cho\ ;
+蕋 > zui\ ;
+蕊 > zui\ ;
+蕆 > ten\ ;
+蕃 > ban\ ;
+蕁 > jin\ ;
+蔳 > sen\ ;
+蔲 > kou\ ;
+蔪 > sen\ ;
+蔧 > sei\ ;
+蔥 > sou\ ;
+蔡 > sai\ ;
+蔞 > rou\ ;
+蔜 > gou\ ;
+蔗 > sho\ ;
+蔓 > ban\ ;
+蔂 > rui\ ;
+蔀 > hou\ ;
+蓺 > gei\ ;
+蓷 > tai\ ;
+蓱 > hei\ ;
+蓰 > shi\ ;
+蓯 > sou\ ;
+蓪 > tou\ ;
+蓜 > hai\ ;
+蓓 > hai\ ;
+蓍 > shi\ ;
+蓉 > you\ ;
+蓈 > kou\ ;
+蓂 > mei\ ;
+蓀 > son\ ;
+蒿 > kou\ ;
+蒾 > bei\ ;
+蒹 > ken\ ;
+蒯 > kai\ ;
+蒭 > suu\ ;
+蒨 > sen\ ;
+蒡 > hou\ ;
+蒓 > jun\ ;
+蒒 > shi\ ;
+蒄 > kan\ ;
+蒂 > tei\ ;
+葽 > you\ ;
+葼 > sou\ ;
+葹 > shi\ ;
+葸 > sai\ ;
+葷 > gun\ ;
+葶 > tei\ ;
+葵 > aoi\ ;
+葰 > sui\ ;
+葮 > tan\ ;
+葪 > kei\ ;
+葥 > sen\ ;
+葢 > gai\ ;
+葘 > shi\ ;
+葒 > kou\ ;
+葑 > hou\ ;
+葏 > sen\ ;
+葈 > shi\ ;
+葇 > juu\ ;
+葅 > sho\ ;
+萹 > hen\ ;
+萱 > ken\ ;
+萯 > huu\ ;
+萠 > hou\ ;
+萕 > sei\ ;
+萑 > kan\ ;
+萏 > tan\ ;
+萍 > hei\ ;
+萋 > sei\ ;
+萊 > rai\ ;
+萃 > sui\ ;
+菼 > tan\ ;
+菻 > rin\ ;
+菹 > sho\ ;
+菷 > sou\ ;
+菶 > hou\ ;
+菪 > tou\ ;
+菘 > suu\ ;
+菑 > shi\ ;
+菎 > kon\ ;
+菌 > kin\ ;
+菅 > kan\ ;
+菁 > sei\ ;
+莿 > shi\ ;
+莾 > mou\ ;
+莽 > bou\ ;
+莱 > rai\ ;
+莬 > bun\ ;
+莧 > kan\ ;
+莦 > sou\ ;
+莠 > yuu\ ;
+莟 > kan\ ;
+莞 > kan\ ;
+莛 > tei\ ;
+莙 > kin\ ;
+莖 > kei\ ;
+莕 > kou\ ;
+莔 > mou\ ;
+莓 > mai\ ;
+莒 > kyo\ ;
+莊 > sou\ ;
+莉 > chi\ ;
+莇 > cho\ ;
+莄 > kou\ ;
+荿 > sei\ ;
+荻 > ogi\ ;
+荵 > jin\ ;
+荳 > tou\ ;
+荘 > sou\ ;
+荖 > hou\ ;
+荕 > kin\ ;
+荓 > hei\ ;
+荑 > tei\ ;
+荐 > sen\ ;
+荎 > chi\ ;
+荊 > kei\ ;
+荇 > kou\ ;
+荆 > kei\ ;
+荅 > tou\ ;
+荄 > kai\ ;
+荃 > sen\ ;
+荀 > jun\ ;
+茼 > tou\ ;
+茷 > hai\ ;
+茴 > kai\ ;
+茳 > kou\ ;
+茱 > shu\ ;
+茬 > shi\ ;
+茝 > sai\ ;
+茛 > kon\ ;
+茗 > mei\ ;
+茋 > shi\ ;
+茊 > shi\ ;
+茈 > shi\ ;
+茆 > bou\ ;
+范 > han\ ;
+苹 > hei\ ;
+苷 > kan\ ;
+苳 > tou\ ;
+苯 > hon\ ;
+苭 > you\ ;
+苫 > sen\ ;
+苪 > hei\ ;
+苨 > dei\ ;
+苧 > cho\ ;
+苣 > kyo\ ;
+苠 > bin\ ;
+苟 > kou\ ;
+苞 > hou\ ;
+苚 > you\ ;
+苓 > rei\ ;
+苒 > zen\ ;
+苐 > tei\ ;
+苅 > gai\ ;
+芿 > jou\ ;
+芼 > bou\ ;
+芻 > suu\ ;
+芷 > shi\ ;
+芮 > zei\ ;
+芬 > fun\ ;
+芫 > gen\ ;
+芩 > kin\ ;
+芧 > cho\ ;
+芥 > kai\ ;
+芤 > kou\ ;
+芣 > huu\ ;
+芡 > ken\ ;
+芠 > bun\ ;
+芟 > san\ ;
+芚 > ton\ ;
+芖 > chi\ ;
+芋 > imo\ ;
+芊 > sen\ ;
+芉 > kai\ ;
+芇 > ben\ ;
+芄 > kan\ ;
+芃 > hou\ ;
+芁 > kou\ ;
+艿 > jou\ ;
+艾 > gai\ ;
+艱 > kan\ ;
+艮 > kon\ ;
+艭 > sou\ ;
+艨 > mou\ ;
+艦 > kan\ ;
+艠 > tou\ ;
+艟 > dou\ ;
+艜 > tai\ ;
+艚 > sou\ ;
+艙 > sou\ ;
+艘 > sou\ ;
+艑 > hen\ ;
+艎 > kou\ ;
+艋 > mou\ ;
+艇 > tei\ ;
+艆 > rou\ ;
+艄 > sou\ ;
+舺 > kou\ ;
+舷 > ken\ ;
+舲 > rei\ ;
+舫 > hou\ ;
+舩 > sen\ ;
+舨 > han\ ;
+舢 > san\ ;
+舡 > kou\ ;
+舛 > sen\ ;
+舚 > ten\ ;
+舙 > kuu\ ;
+舘 > kan\ ;
+舔 > ten\ ;
+舓 > shi\ ;
+舐 > shi\ ;
+舍 > sha\ ;
+舉 > kyo\ ;
+舀 > you\ ;
+臿 > sou\ ;
+臽 > kan\ ;
+臶 > sen\ ;
+臱 > ben\ ;
+臧 > zou\ ;
+臤 > kan\ ;
+臡 > dei\ ;
+臠 > ren\ ;
+臚 > ryo\ ;
+臘 > rou\ ;
+臗 > kon\ ;
+臓 > zou\ ;
+臑 > dau\ ;
+臏 > hin\ ;
+臎 > sui\ ;
+臋 > den\ ;
+臊 > sou\ ;
+臉 > ren\ ;
+臈 > rou\ ;
+臆 > oku\ ;
+臃 > you\ ;
+臀 > den\ ;
+膾 > kai\ ;
+膻 > tan\ ;
+膺 > you\ ;
+膸 > zui\ ;
+膵 > sui\ ;
+膰 > han\ ;
+膨 > bou\ ;
+膢 > rou\ ;
+膞 > sen\ ;
+膛 > tou\ ;
+膖 > hou\ ;
+膐 > ryo\ ;
+膏 > kou\ ;
+膎 > kai\ ;
+膅 > tou\ ;
+膂 > ryo\ ;
+膁 > ken\ ;
+膀 > hou\ ;
+腺 > sen\ ;
+腱 > ken\ ;
+腫 > shu\ ;
+腩 > dan\ ;
+腨 > sen\ ;
+腧 > shu\ ;
+腥 > sei\ ;
+腠 > sou\ ;
+腔 > kou\ ;
+腒 > kyo\ ;
+腎 > jin\ ;
+腌 > you\ ;
+腇 > dai\ ;
+腆 > ten\ ;
+腅 > tan\ ;
+腁 > hen\ ;
+脺 > zei\ ;
+脰 > tou\ ;
+脬 > hou\ ;
+脧 > sai\ ;
+脠 > sen\ ;
+脘 > kan\ ;
+脗 > bun\ ;
+脆 > zei\ ;
+脃 > zei\ ;
+胾 > shi\ ;
+胼 > hen\ ;
+胶 > kou\ ;
+胲 > kai\ ;
+胱 > kou\ ;
+胮 > hou\ ;
+胥 > sho\ ;
+胠 > kyo\ ;
+胝 > chi\ ;
+胛 > kou\ ;
+胚 > hai\ ;
+胘 > ken\ ;
+胖 > han\ ;
+胔 > shi\ ;
+胒 > dei\ ;
+胏 > shi\ ;
+肺 > hai\ ;
+肬 > yuu\ ;
+肪 > bou\ ;
+肧 > hai\ ;
+肦 > fun\ ;
+肢 > shi\ ;
+肜 > yuu\ ;
+肛 > kou\ ;
+肓 > kou\ ;
+肎 > kou\ ;
+聹 > dei\ ;
+聶 > jou\ ;
+聵 > gai\ ;
+聱 > gou\ ;
+聰 > sou\ ;
+聯 > ren\ ;
+聮 > ren\ ;
+聫 > ren\ ;
+聨 > ren\ ;
+聦 > sou\ ;
+聤 > tei\ ;
+聡 > sou\ ;
+聠 > hei\ ;
+聟 > sei\ ;
+聘 > hei\ ;
+聆 > rei\ ;
+耿 > kou\ ;
+耾 > kou\ ;
+耼 > tan\ ;
+耹 > kin\ ;
+耷 > tou\ ;
+耵 > tei\ ;
+耰 > yuu\ ;
+耮 > rou\ ;
+耬 > rou\ ;
+耨 > dou\ ;
+耦 > gou\ ;
+耠 > kou\ ;
+耟 > kyo\ ;
+耝 > sho\ ;
+耜 > shi\ ;
+耗 > mou\ ;
+耖 > sou\ ;
+耔 > shi\ ;
+耓 > tei\ ;
+耒 > rai\ ;
+耑 > tan\ ;
+耎 > zen\ ;
+耉 > kou\ ;
+耈 > kou\ ;
+耇 > kou\ ;
+耄 > mou\ ;
+耀 > you\ ;
+翿 > tou\ ;
+翾 > ken\ ;
+翽 > kai\ ;
+翺 > gou\ ;
+翰 > kan\ ;
+翫 > gan\ ;
+翩 > hen\ ;
+翨 > shi\ ;
+翦 > sen\ ;
+翥 > sho\ ;
+翣 > sou\ ;
+翠 > sui\ ;
+翛 > yuu\ ;
+翎 > rei\ ;
+翈 > kou\ ;
+翆 > sui\ ;
+翅 > shi\ ;
+翃 > kou\ ;
+羿 > gei\ ;
+羼 > san\ ;
+羸 > rui\ ;
+羶 > sen\ ;
+羴 > sen\ ;
+羪 > you\ ;
+羦 > kan\ ;
+羣 > gun\ ;
+羢 > jou\ ;
+羡 > sen\ ;
+羝 > tei\ ;
+羜 > cho\ ;
+羚 > rei\ ;
+羘 > sou\ ;
+羔 > kou\ ;
+羑 > yuu\ ;
+羐 > yuu\ ;
+羏 > you\ ;
+羂 > ken\ ;
+罾 > sou\ ;
+罽 > kei\ ;
+署 > sho\ ;
+罱 > gun\ ;
+罫 > kei\ ;
+罩 > tou\ ;
+罥 > ken\ ;
+罤 > tei\ ;
+罣 > kai\ ;
+罡 > kou\ ;
+罝 > sha\ ;
+罜 > shu\ ;
+罕 > kan\ ;
+罔 > mou\ ;
+罓 > mou\ ;
+罒 > mou\ ;
+网 > bou\ ;
+罍 > rai\ ;
+罇 > son\ ;
+罄 > kei\ ;
+缿 > tou\ ;
+缾 > hei\ ;
+缸 > kou\ ;
+缷 > sha\ ;
+缶 > kan\ ;
+缐 > sen\ ;
+绹 > tou\ ;
+纻 > cho\ ;
+纮 > kou\ ;
+纞 > ren\ ;
+纝 > rui\ ;
+纜 > ran\ ;
+纛 > tou\ ;
+纚 > shi\ ;
+纘 > sab\ ;
+纖 > sen\ ;
+纔 > san\ ;
+纐 > kou\ ;
+纎 > sen\ ;
+纍 > rui\ ;
+纊 > kou\ ;
+纉 > san\ ;
+纇 > rai\ ;
+纁 > kun\ ;
+繿 > ran\ ;
+繾 > ten\ ;
+繽 > hin\ ;
+繹 > eki\ ;
+繸 > sui\ ;
+繯 > ken\ ;
+繫 > kei\ ;
+繤 > san\ ;
+繢 > kai\ ;
+繟 > sen\ ;
+繝 > kan\ ;
+繙 > han\ ;
+繖 > san\ ;
+繐 > kei\ ;
+繎 > bin\ ;
+繋 > kei\ ;
+繊 > sen\ ;
+繇 > you\ ;
+繅 > sou\ ;
+繃 > hou\ ;
+縿 > san\ ;
+縺 > ren\ ;
+縵 > ban\ ;
+縴 > ken\ ;
+縳 > ten\ ;
+縲 > rui\ ;
+縨 > kou\ ;
+縧 > tou\ ;
+縣 > ken\ ;
+縢 > tou\ ;
+縡 > sai\ ;
+縗 > sai\ ;
+縒 > shi\ ;
+縑 > ken\ ;
+縆 > kou\ ;
+縂 > sou\ ;
+緻 > chi\ ;
+緺 > kai\ ;
+緹 > tei\ ;
+緶 > hen\ ;
+緵 > sou\ ;
+緱 > kou\ ;
+緫 > sou\ ;
+緪 > kou\ ;
+緦 > shi\ ;
+緥 > hou\ ;
+緢 > bou\ ;
+緡 > bin\ ;
+緞 > tan\ ;
+緜 > ben\ ;
+緘 > kan\ ;
+緖 > sho\ ;
+緍 > bin\ ;
+緌 > zui\ ;
+緇 > shi\ ;
+緄 > kon\ ;
+緂 > tan\ ;
+綻 > tan\ ;
+綸 > rin\ ;
+綷 > sai\ ;
+綵 > sai\ ;
+綳 > hou\ ;
+綰 > wan\ ;
+綯 > tou\ ;
+綮 > kei\ ;
+綫 > sen\ ;
+綪 > sen\ ;
+綣 > ken\ ;
+綟 > rei\ ;
+綜 > sou\ ;
+綗 > gei\ ;
+綑 > kon\ ;
+綏 > sui\ ;
+綋 > kou\ ;
+綉 > tou\ ;
+綈 > tei\ ;
+綆 > kou\ ;
+綂 > tou\ ;
+綁 > hou\ ;
+絽 > ryo\ ;
+絻 > bun\ ;
+絺 > chi\ ;
+絸 > ken\ ;
+絳 > kou\ ;
+絧 > tou\ ;
+絢 > ken\ ;
+絛 > jou\ ;
+絚 > kou\ ;
+絙 > kan\ ;
+絖 > kou\ ;
+絓 > kai\ ;
+絑 > shu\ ;
+絎 > kou\ ;
+絍 > jin\ ;
+絋 > kou\ ;
+絅 > kei\ ;
+絃 > gen\ ;
+絁 > shi\ ;
+紿 > tai\ ;
+紵 > cho\ ;
+紭 > kou\ ;
+紪 > sei\ ;
+紣 > sai\ ;
+紡 > bou\ ;
+紞 > tan\ ;
+紝 > jin\ ;
+紘 > kou\ ;
+紓 > sho\ ;
+紒 > kei\ ;
+紑 > huu\ ;
+紏 > tou\ ;
+紊 > bin\ ;
+紉 > jin\ ;
+紈 > kan\ ;
+系 > kei\ ;
+糲 > rei\ ;
+糰 > dan\ ;
+糫 > kai\ ;
+糩 > kai\ ;
+糦 > shi\ ;
+糤 > san\ ;
+糟 > sou\ ;
+糝 > san\ ;
+糚 > sou\ ;
+糙 > sou\ ;
+糕 > kou\ ;
+糍 > shi\ ;
+糉 > sou\ ;
+糈 > sho\ ;
+糇 > kou\ ;
+糅 > juu\ ;
+糄 > hen\ ;
+糂 > san\ ;
+粽 > sou\ ;
+粼 > rin\ ;
+粺 > hai\ ;
+粹 > sui\ ;
+粳 > kou\ ;
+粲 > san\ ;
+粰 > fuu\ ;
+粦 > rin\ ;
+粢 > shi\ ;
+粡 > tou\ ;
+粠 > kou\ ;
+粞 > sei\ ;
+粘 > nen\ ;
+粔 > kyo\ ;
+粋 > iki\ ;
+粇 > kou\ ;
+籽 > shi\ ;
+籼 > sen\ ;
+籭 > shi\ ;
+籩 > hen\ ;
+籧 > kyo\ ;
+籣 > ran\ ;
+籟 > rai\ ;
+籞 > gyo\ ;
+籛 > sen\ ;
+籘 > tou\ ;
+籓 > han\ ;
+籑 > sen\ ;
+籃 > ran\ ;
+簽 > sen\ ;
+簺 > sai\ ;
+簹 > tou\ ;
+簴 > kyo\ ;
+簳 > kan\ ;
+簧 > kou\ ;
+簦 > tou\ ;
+簟 > ten\ ;
+簞 > tan\ ;
+簛 > shi\ ;
+簓 > sen\ ;
+簒 > san\ ;
+簍 > rou\ ;
+簇 > sou\ ;
+簆 > kou\ ;
+簁 > shi\ ;
+篼 > tou\ ;
+篺 > hai\ ;
+篹 > san\ ;
+篷 > hou\ ;
+篵 > sou\ ;
+篲 > sui\ ;
+篪 > chi\ ;
+篨 > cho\ ;
+篦 > hei\ ;
+篡 > san\ ;
+篝 > kou\ ;
+篙 > kou\ ;
+篖 > tou\ ;
+篏 > kan\ ;
+篌 > kou\ ;
+篊 > kou\ ;
+篈 > hou\ ;
+篇 > hen\ ;
+篆 > ten\ ;
+篅 > sui\ ;
+篂 > sei\ ;
+箽 > tou\ ;
+箼 > oku\ ;
+箵 > sei\ ;
+箲 > sen\ ;
+箯 > hen\ ;
+箭 > sen\ ;
+箠 > sui\ ;
+箟 > kin\ ;
+箞 > ken\ ;
+箝 > kan\ ;
+箜 > kou\ ;
+箘 > kin\ ;
+箖 > rin\ ;
+箑 > sou\ ;
+箐 > sei\ ;
+箏 > sou\ ;
+箉 > kai\ ;
+箄 > hai\ ;
+筷 > kai\ ;
+筳 > tei\ ;
+筲 > sou\ ;
+筯 > cho\ ;
+筮 > sei\ ;
+筭 > san\ ;
+筬 > sei\ ;
+筪 > kou\ ;
+筩 > tou\ ;
+筦 > kan\ ;
+筥 > kyo\ ;
+筤 > rou\ ;
+筝 > sou\ ;
+筕 > kou\ ;
+筌 > sen\ ;
+筅 > sen\ ;
+筀 > kei\ ;
+笶 > shi\ ;
+笵 > han\ ;
+笱 > kou\ ;
+笭 > rei\ ;
+笫 > shi\ ;
+笪 > tan\ ;
+笩 > hai\ ;
+笨 > hon\ ;
+笣 > hou\ ;
+笞 > chi\ ;
+笙 > sou\ ;
+笘 > sen\ ;
+笋 > jun\ ;
+笇 > san\ ;
+竾 > shi\ ;
+竼 > hou\ ;
+竸 > kei\ ;
+竱 > sen\ ;
+竫 > sei\ ;
+竢 > shi\ ;
+竛 > rei\ ;
+竚 > cho\ ;
+站 > tan\ ;
+竑 > kou\ ;
+竎 > fuu\ ;
+竌 > sho\ ;
+竉 > rou\ ;
+竇 > tou\ ;
+竄 > zan\ ;
+窼 > sou\ ;
+窻 > sou\ ;
+窰 > you\ ;
+窞 > tan\ ;
+窘 > kin\ ;
+窗 > sou\ ;
+窖 > kou\ ;
+窔 > you\ ;
+窑 > you\ ;
+窐 > kei\ ;
+窈 > you\ ;
+窆 > bin\ ;
+窅 > you\ ;
+窂 > rou\ ;
+穾 > you\ ;
+穽 > sei\ ;
+穰 > jou\ ;
+穭 > ryo\ ;
+穧 > sei\ ;
+穣 > jou\ ;
+穠 > jou\ ;
+穟 > sui\ ;
+穝 > sai\ ;
+穜 > tou\ ;
+穈 > bon\ ;
+穇 > san\ ;
+穅 > kou\ ;
+穄 > sei\ ;
+穃 > you\ ;
+稾 > kou\ ;
+稺 > chi\ ;
+稵 > shi\ ;
+稴 > ren\ ;
+稰 > sho\ ;
+稯 > sou\ ;
+稧 > kei\ ;
+稟 > rin\ ;
+稛 > kon\ ;
+稗 > hie\ ;
+稔 > jin\ ;
+稊 > tei\ ;
+稉 > kou\ ;
+稈 > kan\ ;
+稇 > kon\ ;
+稅 > zei\ ;
+稂 > rou\ ;
+秼 > shu\ ;
+秱 > tou\ ;
+秭 > shi\ ;
+秬 > kyo\ ;
+秪 > chi\ ;
+秥 > den\ ;
+秢 > rei\ ;
+秞 > yuu\ ;
+秚 > han\ ;
+秖 > shi\ ;
+秔 > kou\ ;
+秏 > kou\ ;
+秊 > nen\ ;
+秉 > hei\ ;
+秈 > sen\ ;
+秇 > gei\ ;
+秄 > shi\ ;
+秂 > jin\ ;
+离 > chi\ ;
+禺 > guu\ ;
+禸 > juu\ ;
+禳 > jou\ ;
+禱 > tou\ ;
+禯 > jou\ ;
+禫 > tan\ ;
+禪 > zen\ ;
+禩 > shi\ ;
+禦 > gyo\ ;
+禘 > tei\ ;
+禖 > bai\ ;
+禔 > shi\ ;
+禓 > you\ ;
+禎 > tei\ ;
+禌 > shi\ ;
+禀 > rin\ ;
+祼 > kan\ ;
+祹 > tou\ ;
+祫 > kou\ ;
+祩 > shu\ ;
+祢 > dei\ ;
+祠 > shi\ ;
+祟 > sui\ ;
+祛 > kyo\ ;
+祘 > san\ ;
+祗 > shi\ ;
+祐 > yuu\ ;
+祋 > tai\ ;
+祊 > hou\ ;
+祉 > shi\ ;
+祆 > ken\ ;
+祅 > you\ ;
+祄 > kai\ ;
+祀 > shi\ ;
+礽 > jou\ ;
+礻 > shi\ ;
+礵 > sou\ ;
+礱 > rou\ ;
+礬 > ban\ ;
+礪 > rei\ ;
+礧 > rai\ ;
+礦 > kou\ ;
+礥 > kin\ ;
+礟 > hou\ ;
+礞 > bou\ ;
+礚 > kai\ ;
+礑 > tou\ ;
+礌 > rai\ ;
+礇 > iku\ ;
+礆 > ken\ ;
+礀 > kan\ ;
+磽 > kou\ ;
+磻 > han\ ;
+磺 > kou\ ;
+磷 > rin\ ;
+磴 > tou\ ;
+磳 > sou\ ;
+磲 > kyo\ ;
+磬 > kei\ ;
+磪 > sai\ ;
+磡 > kan\ ;
+磛 > san\ ;
+磚 > sen\ ;
+磖 > rou\ ;
+磕 > kai\ ;
+磓 > tai\ ;
+磑 > gai\ ;
+磎 > kei\ ;
+磌 > ten\ ;
+磊 > rai\ ;
+磉 > sou\ ;
+磇 > hei\ ;
+磅 > hou\ ;
+碾 > ten\ ;
+碽 > kou\ ;
+碳 > tan\ ;
+碲 > tei\ ;
+碱 > ken\ ;
+碰 > hou\ ;
+碯 > dou\ ;
+碭 > tou\ ;
+碨 > wai\ ;
+碞 > gan\ ;
+碝 > zen\ ;
+碚 > hai\ ;
+碘 > ten\ ;
+碓 > tai\ ;
+碎 > sai\ ;
+碍 > gai\ ;
+碊 > sen\ ;
+碇 > tei\ ;
+硼 > hou\ ;
+硯 > ken\ ;
+硨 > sha\ ;
+硤 > kou\ ;
+硣 > kou\ ;
+硡 > kou\ ;
+硠 > rou\ ;
+硜 > kou\ ;
+硙 > gai\ ;
+硒 > sei\ ;
+硏 > ken\ ;
+硎 > kei\ ;
+硇 > dou\ ;
+硅 > kei\ ;
+硄 > kou\ ;
+硃 > shu\ ;
+砿 > kou\ ;
+砺 > rei\ ;
+砲 > hou\ ;
+砰 > hou\ ;
+砭 > hen\ ;
+砠 > sho\ ;
+砎 > kai\ ;
+砍 > kan\ ;
+砌 > sei\ ;
+砅 > rei\ ;
+矼 > kou\ ;
+矸 > kan\ ;
+矴 > tei\ ;
+矰 > sou\ ;
+矮 > wai\ ;
+矦 > kou\ ;
+矙 > kan\ ;
+矕 > ban\ ;
+矒 > bou\ ;
+矉 > hin\ ;
+矈 > ben\ ;
+矇 > mou\ ;
+矃 > gei\ ;
+瞵 > rin\ ;
+瞱 > you\ ;
+瞰 > kan\ ;
+瞯 > kan\ ;
+瞪 > dou\ ;
+瞢 > bou\ ;
+瞞 > ban\ ;
+瞑 > mei\ ;
+瞍 > sou\ ;
+瞌 > kou\ ;
+瞀 > bou\ ;
+睾 > kou\ ;
+睽 > kei\ ;
+睺 > kou\ ;
+睴 > kon\ ;
+睳 > kei\ ;
+睲 > sei\ ;
+睬 > sai\ ;
+睪 > eki\ ;
+睧 > kon\ ;
+睥 > hei\ ;
+睤 > hei\ ;
+睠 > ken\ ;
+睟 > sui\ ;
+睞 > rai\ ;
+睜 > sei\ ;
+睛 > sei\ ;
+睚 > gai\ ;
+睒 > sen\ ;
+睏 > kon\ ;
+睍 > ken\ ;
+睇 > tei\ ;
+睆 > kan\ ;
+睅 > kan\ ;
+眸 > bou\ ;
+眷 > ken\ ;
+眵 > shi\ ;
+眴 > ken\ ;
+眯 > bei\ ;
+眮 > tou\ ;
+眨 > sou\ ;
+眦 > sei\ ;
+眥 > sei\ ;
+眤 > tei\ ;
+眢 > wan\ ;
+眛 > mai\ ;
+眚 > sei\ ;
+眙 > chi\ ;
+眔 > tou\ ;
+眎 > shi\ ;
+眊 > bou\ ;
+眈 > tan\ ;
+眆 > hou\ ;
+眄 > ben\ ;
+眀 > bei\ ;
+盼 > han\ ;
+盻 > kei\ ;
+盶 > gin\ ;
+盰 > kan\ ;
+盪 > tou\ ;
+盨 > shu\ ;
+盤 > ban\ ;
+盠 > rei\ ;
+盟 > mei\ ;
+盞 > san\ ;
+盖 > gai\ ;
+盔 > kai\ ;
+盒 > kou\ ;
+盍 > kou\ ;
+盌 > wan\ ;
+皽 > ten\ ;
+皨 > sei\ ;
+皥 > kou\ ;
+皣 > you\ ;
+皠 > sai\ ;
+皝 > kou\ ;
+皜 > kou\ ;
+皚 > gai\ ;
+皖 > kan\ ;
+皓 > kou\ ;
+皐 > kou\ ;
+皎 > kou\ ;
+皋 > kou\ ;
+皅 > hae\ ;
+皃 > bou\ ;
+皁 > sou\ ;
+癴 > ren\ ;
+癲 > ten\ ;
+癱 > tan\ ;
+癰 > you\ ;
+癬 > sen\ ;
+癩 > rai\ ;
+癢 > you\ ;
+癡 > chi\ ;
+癜 > den\ ;
+癙 > sho\ ;
+癘 > rei\ ;
+癕 > you\ ;
+癉 > tan\ ;
+癈 > hai\ ;
+癆 > rou\ ;
+癀 > kou\ ;
+瘻 > rou\ ;
+瘺 > rou\ ;
+瘵 > sai\ ;
+瘰 > rui\ ;
+瘩 > tou\ ;
+瘦 > sou\ ;
+瘣 > kai\ ;
+瘢 > han\ ;
+瘡 > sou\ ;
+瘝 > kan\ ;
+瘛 > sei\ ;
+瘙 > sou\ ;
+瘓 > tan\ ;
+瘒 > gon\ ;
+瘍 > you\ ;
+瘋 > fuu\ ;
+瘊 > kou\ ;
+瘈 > kei\ ;
+瘁 > sui\ ;
+痳 > rin\ ;
+痰 > tan\ ;
+痯 > kan\ ;
+痬 > eki\ ;
+痣 > aza\ ;
+痠 > san\ ;
+痙 > kei\ ;
+痘 > tou\ ;
+痗 > bai\ ;
+痎 > kai\ ;
+痌 > tou\ ;
+痊 > sen\ ;
+痃 > ken\ ;
+痁 > sen\ ;
+疽 > sho\ ;
+疼 > tou\ ;
+疺 > hou\ ;
+疸 > tan\ ;
+疵 > shi\ ;
+疳 > kan\ ;
+疱 > hou\ ;
+疫 > eki\ ;
+疥 > kai\ ;
+疣 > ibo\ ;
+疝 > san\ ;
+疓 > zai\ ;
+疐 > chi\ ;
+疉 > jou\ ;
+疂 > jou\ ;
+疁 > ryu\ ;
+畾 > sui\ ;
+畽 > ton\ ;
+畤 > shi\ ;
+畡 > kai\ ;
+畞 > bou\ ;
+畚 > hon\ ;
+畗 > tou\ ;
+畎 > ken\ ;
+畍 > kai\ ;
+畋 > ten\ ;
+畊 > kou\ ;
+畈 > han\ ;
+甿 > mou\ ;
+甾 > shi\ ;
+甽 > ken\ ;
+甹 > hei\ ;
+甸 > ten\ ;
+甴 > sou\ ;
+甯 > nei\ ;
+甬 > you\ ;
+甤 > zui\ ;
+產 > san\ ;
+甠 > sei\ ;
+甜 > ten\ ;
+甛 > ten\ ;
+甗 > gen\ ;
+甑 > sou\ ;
+甎 > sen\ ;
+甍 > bou\ ;
+甆 > shi\ ;
+甄 > ken\ ;
+甁 > hei\ ;
+瓿 > hou\ ;
+瓻 > chi\ ;
+瓷 > shi\ ;
+瓴 > rii\ ;
+瓲 > ton\ ;
+瓫 > hon\ ;
+瓪 > han\ ;
+瓨 > kou\ ;
+瓣 > ben\ ;
+瓛 > kan\ ;
+瓚 > san\ ;
+瓘 > kan\ ;
+瓓 > ran\ ;
+瓏 > rou\ ;
+瓌 > kai\ ;
+瓊 > kei\ ;
+瓉 > san\ ;
+瓈 > rei\ ;
+璿 > sen\ ;
+璻 > sui\ ;
+璲 > sui\ ;
+璯 > kai\ ;
+璮 > tan\ ;
+璫 > tou\ ;
+璪 > sou\ ;
+璩 > kyo\ ;
+璨 > san\ ;
+璠 > han\ ;
+璜 > kou\ ;
+璚 > kei\ ;
+璘 > rin\ ;
+璒 > tou\ ;
+璏 > tei\ ;
+璉 > rin\ ;
+璇 > sen\ ;
+璅 > sou\ ;
+璁 > sou\ ;
+璀 > sai\ ;
+瑾 > kin\ ;
+瑶 > you\ ;
+瑱 > ten\ ;
+瑰 > kai\ ;
+瑯 > rou\ ;
+瑭 > tou\ ;
+瑫 > tou\ ;
+瑤 > you\ ;
+瑢 > you\ ;
+瑞 > zui\ ;
+瑝 > kou\ ;
+瑙 > dou\ ;
+瑑 > ten\ ;
+瑍 > kan\ ;
+瑇 > tai\ ;
+瑆 > sei\ ;
+瑅 > tei\ ;
+瑄 > sen\ ;
+瑁 > bou\ ;
+琿 > kon\ ;
+琺 > hou\ ;
+琹 > kin\ ;
+琳 > rin\ ;
+琯 > kan\ ;
+琮 > sou\ ;
+琫 > hou\ ;
+琨 > kon\ ;
+琤 > sou\ ;
+琚 > kyo\ ;
+琅 > rou\ ;
+琄 > ken\ ;
+琁 > zen\ ;
+琀 > kan\ ;
+珽 > tei\ ;
+珻 > bai\ ;
+珺 > kun\ ;
+珹 > sei\ ;
+珵 > tei\ ;
+珮 > hai\ ;
+班 > han\ ;
+珩 > kou\ ;
+珧 > you\ ;
+珢 > gin\ ;
+珡 > kin\ ;
+珠 > shu\ ;
+珖 > kou\ ;
+珓 > kou\ ;
+珊 > san\ ;
+珉 > bin\ ;
+玽 > kou\ ;
+玼 > sei\ ;
+玹 > ken\ ;
+玷 > ten\ ;
+玵 > gan\ ;
+玳 > tai\ ;
+玲 > rei\ ;
+玭 > hin\ ;
+玫 > bai\ ;
+玪 > kan\ ;
+玢 > hin\ ;
+玠 > kai\ ;
+玟 > bin\ ;
+玜 > kou\ ;
+玕 > kan\ ;
+玎 > tei\ ;
+玁 > ken\ ;
+獷 > kou\ ;
+獱 > hin\ ;
+獰 > dou\ ;
+獯 > kun\ ;
+獮 > sen\ ;
+獬 > kai\ ;
+獫 > ken\ ;
+獪 > kai\ ;
+獩 > wai\ ;
+獧 > ken\ ;
+獞 > tou\ ;
+獘 > hei\ ;
+獖 > fun\ ;
+獒 > gou\ ;
+獊 > sou\ ;
+獅 > shi\ ;
+獃 > gai\ ;
+猽 > bei\ ;
+猻 > son\ ;
+猺 > you\ ;
+猷 > yuu\ ;
+猵 > hen\ ;
+猴 > kou\ ;
+猱 > dou\ ;
+猯 > tan\ ;
+献 > ken\ ;
+猩 > sei\ ;
+猥 > wai\ ;
+猞 > sha\ ;
+猛 > mou\ ;
+猙 > sou\ ;
+猘 > sei\ ;
+猍 > rai\ ;
+猊 > gei\ ;
+猅 > hai\ ;
+猄 > kei\ ;
+猂 > kan\ ;
+狾 > sei\ ;
+狻 > san\ ;
+狺 > gen\ ;
+狷 > ken\ ;
+狴 > hei\ ;
+狩 > shu\ ;
+狠 > gan\ ;
+狟 > kan\ ;
+狝 > sen\ ;
+狖 > yuu\ ;
+狎 > kou\ ;
+狌 > sei\ ;
+狀 > jou\ ;
+犾 > gin\ ;
+犹 > yuu\ ;
+犴 > kan\ ;
+犲 > sai\ ;
+犛 > bou\ ;
+犒 > kou\ ;
+犎 > hou\ ;
+犍 > ken\ ;
+犉 > jun\ ;
+犇 > hon\ ;
+犀 > sai\ ;
+牽 > ken\ ;
+牼 > kou\ ;
+牻 > bou\ ;
+牸 > shi\ ;
+牷 > sen\ ;
+牴 > tei\ ;
+牮 > sen\ ;
+牬 > hai\ ;
+牨 > kou\ ;
+牣 > jin\ ;
+牟 > bou\ ;
+牝 > hin\ ;
+牚 > tou\ ;
+牖 > yuu\ ;
+牕 > sou\ ;
+牓 > bou\ ;
+牐 > sou\ ;
+牏 > chu\ ;
+牎 > sou\ ;
+牋 > sen\ ;
+牅 > you\ ;
+牂 > sou\ ;
+爼 > sho\ ;
+爻 > kou\ ;
+爨 > san\ ;
+爤 > ran\ ;
+爟 > kan\ ;
+爗 > you\ ;
+爉 > rou\ ;
+爈 > ryo\ ;
+燿 > you\ ;
+燾 > tou\ ;
+燼 > jin\ ;
+燹 > sen\ ;
+燧 > sui\ ;
+燦 > san\ ;
+燥 > sou\ ;
+燠 > oki\ ;
+燜 > mon\ ;
+燙 > tou\ ;
+燗 > ran\ ;
+燔 > han\ ;
+燓 > fun\ ;
+燐 > rin\ ;
+燌 > fun\ ;
+燉 > ton\ ;
+燁 > you\ ;
+燀 > sen\ ;
+熿 > kou\ ;
+熾 > shi\ ;
+熳 > man\ ;
+熲 > kei\ ;
+熯 > zen\ ;
+熬 > gou\ ;
+熢 > hou\ ;
+熠 > yuu\ ;
+熕 > kou\ ;
+熔 > you\ ;
+熒 > kei\ ;
+熏 > kun\ ;
+熌 > sen\ ;
+熀 > you\ ;
+煹 > kou\ ;
+煬 > you\ ;
+煨 > wai\ ;
+煥 > kan\ ;
+煢 > kei\ ;
+煠 > you\ ;
+煜 > iku\ ;
+煚 > kei\ ;
+煗 > dan\ ;
+煖 > dan\ ;
+煑 > sha\ ;
+煌 > kou\ ;
+煋 > sei\ ;
+煊 > ken\ ;
+煉 > ren\ ;
+煅 > tan\ ;
+焭 > kei\ ;
+焠 > sai\ ;
+焞 > ton\ ;
+焜 > kon\ ;
+焙 > hou\ ;
+焕 > kan\ ;
+焋 > sou\ ;
+焄 > kun\ ;
+烽 > hou\ ;
+烺 > kou\ ;
+烹 > hou\ ;
+烱 > kei\ ;
+烤 > kou\ ;
+烝 > jou\ ;
+烜 > ten\ ;
+烘 > kou\ ;
+烖 > sai\ ;
+烔 > tou\ ;
+烑 > you\ ;
+烋 > kou\ ;
+烊 > you\ ;
+烉 > kan\ ;
+炷 > shu\ ;
+炴 > you\ ;
+炳 > hei\ ;
+炱 > tai\ ;
+炰 > hou\ ;
+炯 > kei\ ;
+炮 > hou\ ;
+炫 > ken\ ;
+炛 > you\ ;
+炙 > sha\ ;
+炘 > kin\ ;
+炗 > kou\ ;
+炖 > ton\ ;
+炕 > kou\ ;
+炔 > kei\ ;
+炒 > sou\ ;
+炆 > bun\ ;
+炅 > kei\ ;
+灾 > sai\ ;
+灶 > sou\ ;
+灵 > rei\ ;
+灮 > kou\ ;
+灤 > ran\ ;
+灣 > wan\ ;
+灝 > kou\ ;
+灘 > dan\ ;
+灑 > sai\ ;
+灋 > hou\ ;
+灊 > sen\ ;
+灉 > you\ ;
+灃 > huu\ ;
+瀾 > ran\ ;
+瀼 > jou\ ;
+瀲 > ren\ ;
+瀨 > rai\ ;
+瀦 > cho\ ;
+瀣 > kai\ ;
+瀞 > jou\ ;
+瀚 > kan\ ;
+瀗 > ken\ ;
+瀍 > ten\ ;
+瀉 > sha\ ;
+瀁 > you\ ;
+瀀 > yuu\ ;
+濾 > ryo\ ;
+濽 > san\ ;
+濵 > hin\ ;
+濳 > sen\ ;
+濫 > ran\ ;
+濨 > shi\ ;
+濤 > tou\ ;
+濠 > gou\ ;
+濔 > dei\ ;
+濊 > kai\ ;
+濆 > fun\ ;
+濂 > ren\ ;
+澶 > sen\ ;
+澳 > iku\ ;
+澱 > ten\ ;
+澰 > ren\ ;
+澯 > san\ ;
+澮 > kai\ ;
+澪 > rei\ ;
+澨 > sei\ ;
+澧 > rei\ ;
+澥 > kai\ ;
+澣 > kan\ ;
+澡 > sou\ ;
+澟 > rin\ ;
+澚 > iku\ ;
+澗 > kan\ ;
+澖 > kan\ ;
+澔 > kou\ ;
+澒 > kou\ ;
+澎 > hou\ ;
+澍 > shu\ ;
+澌 > shi\ ;
+澋 > kou\ ;
+澇 > rou\ ;
+澃 > gei\ ;
+澁 > juu\ ;
+澀 > juu\ ;
+潾 > rin\ ;
+潼 > dou\ ;
+潺 > san\ ;
+潸 > san\ ;
+潴 > cho\ ;
+潯 > jin\ ;
+潭 > tan\ ;
+潬 > tan\ ;
+潨 > sou\ ;
+潦 > rou\ ;
+潤 > jun\ ;
+潢 > kou\ ;
+潡 > ton\ ;
+潛 > sen\ ;
+潘 > han\ ;
+潓 > kei\ ;
+潒 > tou\ ;
+潅 > kan\ ;
+潀 > sou\ ;
+漾 > you\ ;
+漼 > sai\ ;
+漶 > kan\ ;
+漱 > sou\ ;
+漰 > hou\ ;
+漯 > tou\ ;
+漭 > bou\ ;
+漫 > man\ ;
+漩 > sen\ ;
+漛 > tou\ ;
+漖 > kou\ ;
+漑 > gai\ ;
+漌 > kin\ ;
+漈 > sei\ ;
+漄 > gai\ ;
+滾 > kon\ ;
+滽 > you\ ;
+滻 > san\ ;
+满 > man\ ;
+滞 > tai\ ;
+滚 > kon\ ;
+滕 > tou\ ;
+滔 > tou\ ;
+滎 > kei\ ;
+滍 > chi\ ;
+滉 > kou\ ;
+滈 > kou\ ;
+滇 > ten\ ;
+滄 > sou\ ;
+滂 > bou\ ;
+滁 > cho\ ;
+溿 > han\ ;
+溻 > tou\ ;
+溷 > kon\ ;
+溲 > sou\ ;
+溮 > shi\ ;
+溟 > mei\ ;
+溙 > tai\ ;
+溘 > kou\ ;
+溓 > ren\ ;
+溏 > tou\ ;
+溉 > gai\ ;
+湽 > shi\ ;
+湻 > jun\ ;
+湶 > sen\ ;
+湳 > dan\ ;
+湲 > kan\ ;
+湣 > bin\ ;
+湟 > kou\ ;
+湞 > tou\ ;
+湝 > kai\ ;
+湛 > tan\ ;
+湗 > hou\ ;
+湔 > sen\ ;
+湓 > hon\ ;
+湑 > sho\ ;
+湏 > kai\ ;
+湎 > ben\ ;
+湍 > tan\ ;
+湊 > sou\ ;
+湉 > ten\ ;
+湈 > bai\ ;
+湅 > ren\ ;
+湃 > hai\ ;
+渾 > kon\ ;
+渻 > sei\ ;
+渹 > kou\ ;
+游 > yuu\ ;
+渲 > sen\ ;
+渧 > tei\ ;
+渥 > aku\ ;
+渢 > huu\ ;
+渟 > tei\ ;
+渙 > kan\ ;
+渓 > kei\ ;
+渀 > hon\ ;
+淸 > sei\ ;
+淶 > rai\ ;
+淰 > den\ ;
+淯 > iku\ ;
+淮 > wai\ ;
+淬 > sai\ ;
+淪 > rin\ ;
+淨 > jou\ ;
+淦 > kan\ ;
+淟 > ten\ ;
+淛 > sei\ ;
+淚 > rui\ ;
+淙 > sou\ ;
+淘 > tou\ ;
+淖 > dou\ ;
+淒 > sei\ ;
+淏 > kou\ ;
+淎 > hou\ ;
+淊 > kan\ ;
+淆 > kou\ ;
+淄 > shi\ ;
+淀 > ten\ ;
+涽 > kon\ ;
+涷 > tou\ ;
+涵 > kan\ ;
+涬 > kei\ ;
+涪 > huu\ ;
+涣 > kan\ ;
+涛 > tou\ ;
+涚 > sei\ ;
+涘 > shi\ ;
+涗 > sei\ ;
+涖 > rei\ ;
+涕 > tei\ ;
+涔 > san\ ;
+涓 > ken\ ;
+涒 > ton\ ;
+涑 > sou\ ;
+涇 > tei\ ;
+浼 > bai\ ;
+浰 > ren\ ;
+浩 > kou\ ;
+浧 > tei\ ;
+浦 > ura\ ;
+浥 > yuu\ ;
+浤 > kou\ ;
+浣 > kan\ ;
+浟 > yuu\ ;
+洽 > kou\ ;
+洸 > kou\ ;
+洮 > tou\ ;
+洪 > kou\ ;
+洨 > kou\ ;
+洚 > kou\ ;
+洙 > shu\ ;
+洊 > sen\ ;
+洄 > kai\ ;
+泴 > kan\ ;
+泲 > sei\ ;
+泰 > tai\ ;
+泯 > bin\ ;
+泮 > han\ ;
+泫 > ken\ ;
+泪 > rui\ ;
+泩 > sou\ ;
+泠 > rei\ ;
+泜 > tei\ ;
+泛 > han\ ;
+泚 > sei\ ;
+泙 > hou\ ;
+泗 > shi\ ;
+泖 > bou\ ;
+泔 > kan\ ;
+泑 > yuu\ ;
+泍 > hon\ ;
+泂 > kei\ ;
+沾 > ten\ ;
+沺 > ten\ ;
+沵 > dei\ ;
+沴 > rei\ ;
+沮 > sho\ ;
+沟 > kou\ ;
+沜 > han\ ;
+沛 > hai\ ;
+沚 > shi\ ;
+沗 > ten\ ;
+沔 > ben\ ;
+沓 > tou\ ;
+沆 > kou\ ;
+沅 > gen\ ;
+汾 > fun\ ;
+汸 > hou\ ;
+汶 > bun\ ;
+汴 > hen\ ;
+汳 > hen\ ;
+汯 > kou\ ;
+汭 > zei\ ;
+汫 > kei\ ;
+汧 > ken\ ;
+汞 > kou\ ;
+汜 > shi\ ;
+汕 > san\ ;
+汒 > bou\ ;
+汏 > tai\ ;
+汎 > han\ ;
+汍 > kan\ ;
+氾 > han\ ;
+氽 > ton\ ;
+氺 > sui\ ;
+氹 > kan\ ;
+氮 > tan\ ;
+氧 > you\ ;
+氦 > gai\ ;
+氛 > fun\ ;
+氙 > sen\ ;
+氓 > bou\ ;
+氐 > tei\ ;
+氉 > sou\ ;
+氄 > juu\ ;
+毿 > san\ ;
+毷 > bou\ ;
+毳 > zei\ ;
+毯 > tan\ ;
+毧 > juu\ ;
+毡 > sen\ ;
+毚 > san\ ;
+毓 > iku\ ;
+每 > mai\ ;
+毌 > kan\ ;
+殽 > kou\ ;
+殸 > kei\ ;
+殳 > shu\ ;
+殲 > sen\ ;
+殱 > sen\ ;
+殯 > hin\ ;
+殮 > ren\ ;
+殫 > tan\ ;
+殩 > san\ ;
+殨 > kai\ ;
+殣 > kin\ ;
+殢 > tei\ ;
+殗 > you\ ;
+殕 > fuu\ ;
+殉 > jun\ ;
+殅 > sou\ ;
+殄 > ten\ ;
+殃 > you\ ;
+殀 > you\ ;
+歲 > sei\ ;
+歮 > juu\ ;
+歫 > kyo\ ;
+歝 > eki\ ;
+歛 > kan\ ;
+歓 > kan\ ;
+歉 > ken\ ;
+歆 > kin\ ;
+歃 > sou\ ;
+欿 > tan\ ;
+款 > kan\ ;
+欽 > kin\ ;
+欵 > kan\ ;
+欬 > kai\ ;
+欣 > gon\ ;
+欞 > rei\ ;
+欗 > ran\ ;
+欖 > ran\ ;
+欒 > ran\ ;
+欑 > san\ ;
+欐 > rei\ ;
+欉 > sou\ ;
+欆 > sou\ ;
+欄 > ran\ ;
+欃 > san\ ;
+櫼 > sen\ ;
+櫺 > rei\ ;
+櫰 > kai\ ;
+櫧 > sho\ ;
+櫥 > chu\ ;
+櫤 > sen\ ;
+櫜 > kou\ ;
+櫚 > ryo\ ;
+櫖 > ryo\ ;
+櫕 > san\ ;
+櫔 > rei\ ;
+櫑 > rai\ ;
+櫐 > rui\ ;
+櫌 > yuu\ ;
+櫉 > chu\ ;
+櫈 > tou\ ;
+櫆 > kai\ ;
+櫂 > kai\ ;
+檾 > kei\ ;
+檻 > ori\ ;
+檸 > nei\ ;
+檳 > bin\ ;
+檰 > hen\ ;
+檯 > tai\ ;
+檮 > tou\ ;
+檬 > bou\ ;
+檩 > rin\ ;
+檠 > kei\ ;
+檞 > kai\ ;
+檑 > rai\ ;
+檉 > tei\ ;
+檇 > sui\ ;
+檆 > san\ ;
+檁 > rin\ ;
+橾 > shu\ ;
+橪 > zen\ ;
+橧 > sou\ ;
+橦 > tou\ ;
+橤 > zui\ ;
+橖 > tou\ ;
+橕 > tou\ ;
+橑 > rou\ ;
+橎 > han\ ;
+橉 > rin\ ;
+橈 > kai\ ;
+橇 > zei\ ;
+橄 > kan\ ;
+樿 > sen\ ;
+樷 > sou\ ;
+樶 > sai\ ;
+樨 > sei\ ;
+樤 > jou\ ;
+樠 > bon\ ;
+樞 > suu\ ;
+樗 > cho\ ;
+樔 > sou\ ;
+樏 > rui\ ;
+樌 > kan\ ;
+樋 > toi\ ;
+樊 > han\ ;
+樃 > rou\ ;
+樁 > tou\ ;
+槿 > kin\ ;
+槾 > ban\ ;
+槹 > kou\ ;
+槵 > kan\ ;
+槱 > yuu\ ;
+槯 > sai\ ;
+槫 > tan\ ;
+槪 > gai\ ;
+槧 > san\ ;
+槞 > rou\ ;
+槝 > tou\ ;
+槙 > ten\ ;
+槓 > kou\ ;
+槑 > bai\ ;
+槐 > kai\ ;
+槈 > dou\ ;
+槃 > han\ ;
+槁 > kou\ ;
+榼 > kou\ ;
+榸 > tai\ ;
+榱 > sui\ ;
+榯 > shi\ ;
+榭 > sha\ ;
+榦 > kan\ ;
+榥 > kou\ ;
+榠 > bei\ ;
+榜 > bou\ ;
+榕 > you\ ;
+榔 > rou\ ;
+楻 > kou\ ;
+楺 > juu\ ;
+楷 > kai\ ;
+楴 > tei\ ;
+楳 > bai\ ;
+楱 > sou\ ;
+楯 > jun\ ;
+楮 > cho\ ;
+楪 > you\ ;
+楩 > hen\ ;
+楨 > tei\ ;
+楦 > ken\ ;
+楥 > ken\ ;
+楤 > sou\ ;
+楞 > rou\ ;
+楝 > ren\ ;
+楙 > bou\ ;
+楗 > ken\ ;
+楎 > kon\ ;
+椽 > ten\ ;
+椶 > shu\ ;
+椳 > wai\ ;
+椱 > fuu\ ;
+椦 > ken\ ;
+椢 > kai\ ;
+椗 > tei\ ;
+椖 > hou\ ;
+椑 > hei\ ;
+椐 > kyo\ ;
+椌 > kou\ ;
+椉 > jou\ ;
+棼 > hun\ ;
+棹 > sao\ ;
+棶 > rai\ ;
+棵 > kan\ ;
+棱 > rou\ ;
+棰 > soi\ ;
+棯 > jin\ ;
+棭 > eki\ ;
+棬 > ken\ ;
+棨 > kei\ ;
+棧 > san\ ;
+棥 > han\ ;
+棣 > tei\ ;
+棡 > kou\ ;
+棠 > tou\ ;
+棙 > rei\ ;
+棖 > tou\ ;
+棕 > shu\ ;
+棔 > kon\ ;
+棓 > hou\ ;
+棑 > hai\ ;
+棍 > kon\ ;
+棌 > sai\ ;
+棉 > men\ ;
+棈 > sen\ ;
+棆 > rin\ ;
+棅 > hei\ ;
+梼 > tou\ ;
+梹 > bin\ ;
+梵 > fuu\ ;
+梱 > kon\ ;
+梪 > tou\ ;
+梡 > kan\ ;
+梠 > ryo\ ;
+梚 > ban\ ;
+梘 > ken\ ;
+梗 > kou\ ;
+梖 > hai\ ;
+梔 > shi\ ;
+梍 > sou\ ;
+梈 > hou\ ;
+梆 > hou\ ;
+梄 > you\ ;
+桿 > kan\ ;
+桾 > kun\ ;
+桻 > hou\ ;
+桹 > rou\ ;
+桵 > zui\ ;
+桱 > kei\ ;
+桯 > tei\ ;
+桮 > hai\ ;
+档 > tou\ ;
+桓 > kan\ ;
+桒 > sou\ ;
+桊 > ken\ ;
+桅 > gai\ ;
+桄 > kou\ ;
+栽 > sai\ ;
+栴 > sen\ ;
+栳 > rou\ ;
+栲 > gou\ ;
+栯 > iku\ ;
+栬 > sei\ ;
+栫 > son\ ;
+栟 > hei\ ;
+栝 > ten\ ;
+栙 > kou\ ;
+栖 > sei\ ;
+栔 > kei\ ;
+栈 > san\ ;
+柹 > shi\ ;
+柶 > shi\ ;
+柬 > kan\ ;
+柦 > tan\ ;
+柢 > tei\ ;
+柜 > kyo\ ;
+柙 > kou\ ;
+柘 > sha\ ;
+柑 > kan\ ;
+柉 > han\ ;
+柈 > han\ ;
+柆 > rou\ ;
+柃 > rei\ ;
+枾 > shi\ ;
+枽 > sou\ ;
+枼 > you\ ;
+枹 > hou\ ;
+枴 > kai\ ;
+枲 > shi\ ;
+枰 > hei\ ;
+枢 > suu\ ;
+枛 > sou\ ;
+枘 > zei\ ;
+枖 > you\ ;
+枓 > shu\ ;
+枏 > dan\ ;
+枌 > fun\ ;
+枋 > hou\ ;
+枅 > kei\ ;
+构 > kou\ ;
+杼 > cho\ ;
+杴 > ken\ ;
+杳 > you\ ;
+杲 > kou\ ;
+杮 > hai\ ;
+杭 > kui\ ;
+杬 > gen\ ;
+杧 > man\ ;
+杠 > kou\ ;
+杝 > chi\ ;
+杕 > tei\ ;
+杆 > kan\ ;
+朿 > shi\ ;
+朾 > tou\ ;
+朷 > tou\ ;
+朩 > tou\ ;
+朢 > bou\ ;
+朜 > ton\ ;
+朙 > mei\ ;
+朘 > sen\ ;
+朖 > rou\ ;
+朎 > rei\ ;
+朌 > han\ ;
+曺 > sou\ ;
+曹 > sou\ ;
+曮 > gan\ ;
+曬 > sai\ ;
+曫 > ran\ ;
+曩 > dou\ ;
+曨 > rou\ ;
+曡 > jou\ ;
+曠 > kou\ ;
+曛 > kun\ ;
+曚 > bou\ ;
+曔 > kei\ ;
+曎 > eki\ ;
+曈 > tou\ ;
+曅 > you\ ;
+曄 > you\ ;
+曃 > tai\ ;
+曂 > kou\ ;
+暾 > ton\ ;
+暻 > kei\ ;
+暹 > sen\ ;
+暵 > kan\ ;
+暭 > kou\ ;
+暤 > kou\ ;
+暠 > kou\ ;
+暟 > kai\ ;
+暝 > mei\ ;
+暚 > you\ ;
+暘 > you\ ;
+暒 > sei\ ;
+暌 > kei\ ;
+暋 > bin\ ;
+暄 > ken\ ;
+晹 > eki\ ;
+晸 > tei\ ;
+晵 > kei\ ;
+晬 > sai\ ;
+晪 > ten\ ;
+晧 > kou\ ;
+晦 > kai\ ;
+晠 > sei\ ;
+晟 > sei\ ;
+晜 > kon\ ;
+晛 > ken\ ;
+晚 > ban\ ;
+晘 > kan\ ;
+晗 > kan\ ;
+晎 > kou\ ;
+晆 > kai\ ;
+晅 > ken\ ;
+晄 > kou\ ;
+晃 > kou\ ;
+昿 > kou\ ;
+昻 > kou\ ;
+昱 > iku\ ;
+昰 > shi\ ;
+昬 > kon\ ;
+昪 > hen\ ;
+昧 > mai\ ;
+昦 > kou\ ;
+昤 > rei\ ;
+昡 > ken\ ;
+昞 > hei\ ;
+昝 > san\ ;
+昜 > you\ ;
+昕 > kin\ ;
+昑 > kin\ ;
+昏 > kon\ ;
+昍 > ken\ ;
+昊 > kou\ ;
+昉 > hou\ ;
+昄 > han\ ;
+旻 > bin\ ;
+旵 > tan\ ;
+旲 > tai\ ;
+旱 > kan\ ;
+旰 > kan\ ;
+旛 > han\ ;
+旙 > han\ ;
+旘 > shi\ ;
+旔 > ken\ ;
+旌 > sei\ ;
+旆 > hai\ ;
+旄 > bou\ ;
+旃 > sen\ ;
+斿 > you\ ;
+施 > shi\ ;
+斴 > rin\ ;
+斳 > kin\ ;
+斧 > ono\ ;
+斦 > gin\ ;
+斤 > kin\ ;
+斕 > ran\ ;
+斒 > han\ ;
+斌 > hin\ ;
+斊 > sei\ ;
+斆 > kou\ ;
+斅 > kou\ ;
+斂 > ren\ ;
+斁 > eki\ ;
+敻 > kei\ ;
+敲 > kou\ ;
+敯 > bin\ ;
+敭 > you\ ;
+敩 > kou\ ;
+敦 > ton\ ;
+敟 > ten\ ;
+敝 > hei\ ;
+敖 > gou\ ;
+敔 > gyo\ ;
+敃 > bin\ ;
+攽 > han\ ;
+攼 > kan\ ;
+攻 > kou\ ;
+攸 > yuu\ ;
+攷 > kou\ ;
+攮 > dou\ ;
+攬 > ran\ ;
+攩 > tou\ ;
+攦 > rei\ ;
+攤 > tan\ ;
+攣 > ren\ ;
+攢 > san\ ;
+攟 > kun\ ;
+攜 > kei\ ;
+攛 > san\ ;
+攙 > sen\ ;
+攘 > jou\ ;
+攔 > ran\ ;
+攓 > ken\ ;
+攏 > rou\ ;
+攈 > kun\ ;
+攅 > san\ ;
+攄 > cho\ ;
+攁 > you\ ;
+攀 > han\ ;
+擾 > jou\ ;
+擻 > sou\ ;
+擺 > hai\ ;
+擶 > sen\ ;
+擰 > dou\ ;
+擯 > hin\ ;
+擭 > kyo\ ;
+擪 > you\ ;
+擥 > ran\ ;
+擤 > kou\ ;
+擣 > tou\ ;
+擠 > sei\ ;
+據 > kyo\ ;
+擕 > kei\ ;
+擒 > kin\ ;
+擐 > kan\ ;
+擎 > kei\ ;
+擋 > tou\ ;
+擄 > ryo\ ;
+擂 > rai\ ;
+擁 > you\ ;
+撿 > ren\ ;
+撽 > kou\ ;
+撼 > kan\ ;
+撳 > kin\ ;
+撰 > san\ ;
+撦 > sha\ ;
+撣 > tan\ ;
+撡 > sou\ ;
+撞 > shu\ ;
+撛 > rin\ ;
+撚 > nen\ ;
+撙 > son\ ;
+撘 > tou\ ;
+撕 > sei\ ;
+撓 > dou\ ;
+撒 > san\ ;
+撏 > san\ ;
+撈 > rou\ ;
+摻 > san\ ;
+摶 > tan\ ;
+摴 > cho\ ;
+摳 > kou\ ;
+摯 > shi\ ;
+摧 > sai\ ;
+摡 > kai\ ;
+摠 > sou\ ;
+摟 > rou\ ;
+摜 > kan\ ;
+摛 > chi\ ;
+摚 > tou\ ;
+摓 > hou\ ;
+摒 > hei\ ;
+摇 > you\ ;
+搴 > ken\ ;
+搯 > tou\ ;
+搭 > tou\ ;
+搬 > han\ ;
+搪 > tou\ ;
+搨 > tou\ ;
+搥 > tai\ ;
+搤 > aku\ ;
+搞 > kou\ ;
+搘 > shi\ ;
+搗 > tou\ ;
+搔 > sou\ ;
+搒 > hou\ ;
+搆 > kou\ ;
+揹 > hai\ ;
+揷 > sou\ ;
+揵 > ken\ ;
+揭 > kei\ ;
+揩 > kai\ ;
+揥 > tei\ ;
+揣 > shi\ ;
+揖 > yuu\ ;
+揔 > sou\ ;
+揓 > shi\ ;
+插 > sou\ ;
+揎 > sen\ ;
+揈 > kou\ ;
+揅 > ken\ ;
+揁 > tei\ ;
+揀 > kan\ ;
+掽 > hou\ ;
+掯 > kou\ ;
+掮 > ken\ ;
+掭 > ten\ ;
+掫 > sou\ ;
+掙 > sou\ ;
+掖 > eki\ ;
+掔 > kan\ ;
+掐 > kou\ ;
+掏 > tou\ ;
+掊 > hou\ ;
+掉 > tou\ ;
+掄 > ron\ ;
+掂 > ten\ ;
+掀 > kin\ ;
+捿 > sei\ ;
+捶 > sui\ ;
+捵 > ten\ ;
+捴 > fun\ ;
+捱 > gai\ ;
+捭 > hai\ ;
+捫 > mon\ ;
+捧 > hou\ ;
+捦 > kin\ ;
+捥 > wan\ ;
+换 > kan\ ;
+捛 > ryo\ ;
+捘 > son\ ;
+捎 > sou\ ;
+捍 > kan\ ;
+捊 > hou\ ;
+捆 > kon\ ;
+捃 > kun\ ;
+挺 > tei\ ;
+挹 > yuu\ ;
+挵 > rou\ ;
+挭 > kou\ ;
+挍 > kou\ ;
+挊 > rou\ ;
+挄 > kou\ ;
+挂 > kei\ ;
+拼 > hou\ ;
+拷 > gou\ ;
+拴 > sen\ ;
+拯 > jou\ ;
+拪 > sen\ ;
+拚 > hen\ ;
+拒 > kyo\ ;
+拑 > kan\ ;
+拐 > kai\ ;
+拎 > rei\ ;
+拌 > han\ ;
+拋 > hou\ ;
+拈 > den\ ;
+拄 > chu\ ;
+抿 > bin\ ;
+抾 > kyo\ ;
+抺 > bai\ ;
+抬 > tai\ ;
+抨 > hou\ ;
+抦 > hei\ ;
+抖 > tou\ ;
+抔 > hou\ ;
+抏 > gan\ ;
+抃 > ben\ ;
+扽 > ton\ ;
+扼 > aku\ ;
+扺 > tei\ ;
+扳 > han\ ;
+扭 > juu\ ;
+扣 > kou\ ;
+扞 > kan\ ;
+扛 > kou\ ;
+扔 > jou\ ;
+扒 > hai\ ;
+扌 > shu\ ;
+扃 > kei\ ;
+扂 > ten\ ;
+扁 > hen\ ;
+戾 > rei\ ;
+戼 > bou\ ;
+戹 > aku\ ;
+戩 > sen\ ;
+戧 > sou\ ;
+戡 > kan\ ;
+戔 > san\ ;
+戎 > juu\ ;
+戇 > tou\ ;
+戃 > tou\ ;
+戁 > dan\ ;
+懽 > kan\ ;
+懺 > zan\ ;
+懶 > ran\ ;
+懴 > zan\ ;
+懭 > kou\ ;
+懬 > kou\ ;
+懩 > you\ ;
+懣 > mon\ ;
+懢 > ran\ ;
+懞 > bou\ ;
+懝 > gai\ ;
+懜 > bou\ ;
+懔 > rin\ ;
+懍 > rin\ ;
+懌 > eki\ ;
+懋 > bou\ ;
+懈 > kai\ ;
+懇 > kon\ ;
+懆 > sou\ ;
+懂 > tou\ ;
+懁 > ken\ ;
+懀 > wai\ ;
+憾 > kan\ ;
+憼 > kei\ ;
+憹 > dou\ ;
+憸 > sen\ ;
+憲 > ken\ ;
+憫 > bin\ ;
+憪 > kan\ ;
+憨 > kan\ ;
+憥 > rou\ ;
+憝 > tai\ ;
+憚 > tan\ ;
+憗 > gin\ ;
+憓 > kei\ ;
+憒 > kai\ ;
+憊 > hai\ ;
+憇 > kei\ ;
+憄 > chi\ ;
+憃 > tou\ ;
+憁 > sou\ ;
+慻 > ken\ ;
+慸 > tei\ ;
+慷 > kou\ ;
+慶 > kei\ ;
+慵 > you\ ;
+慳 > kan\ ;
+慲 > ban\ ;
+慱 > tan\ ;
+慭 > gin\ ;
+慬 > kin\ ;
+慧 > kei\ ;
+慠 > gou\ ;
+慟 > dou\ ;
+慚 > zan\ ;
+慙 > zan\ ;
+慉 > kin\ ;
+慆 > tou\ ;
+慅 > sou\ ;
+慂 > you\ ;
+慁 > kon\ ;
+愿 > gen\ ;
+愹 > you\ ;
+愷 > kai\ ;
+愴 > sou\ ;
+愰 > kau\ ;
+愢 > sai\ ;
+愡 > sou\ ;
+愞 > zen\ ;
+愗 > bou\ ;
+愓 > tou\ ;
+愒 > kei\ ;
+愑 > you\ ;
+愐 > ben\ ;
+愍 > bin\ ;
+愌 > kan\ ;
+愆 > ken\ ;
+愃 > ken\ ;
+惽 > kon\ ;
+惼 > hen\ ;
+惺 > sei\ ;
+惸 > kei\ ;
+惶 > kou\ ;
+惴 > zui\ ;
+惥 > you\ ;
+惣 > sou\ ;
+惞 > kin\ ;
+惛 > kon\ ;
+惘 > bou\ ;
+惔 > tan\ ;
+惓 > ken\ ;
+惏 > ran\ ;
+惋 > wan\ ;
+惉 > sen\ ;
+惇 > ton\ ;
+惂 > kan\ ;
+悾 > kou\ ;
+悽 > sei\ ;
+悻 > kei\ ;
+悷 > rei\ ;
+悰 > sou\ ;
+悩 > nou\ ;
+悤 > sou\ ;
+悝 > kai\ ;
+悛 > sen\ ;
+悗 > ban\ ;
+悓 > ken\ ;
+悒 > yuu\ ;
+悎 > kou\ ;
+悍 > kan\ ;
+悌 > tei\ ;
+悋 > rin\ ;
+悈 > kai\ ;
+悃 > kon\ ;
+恿 > you\ ;
+恾 > bou\ ;
+恵 > kei\ ;
+恬 > ten\ ;
+恫 > dou\ ;
+恣 > shi\ ;
+恢 > kai\ ;
+恡 > rin\ ;
+恠 > kai\ ;
+恝 > kai\ ;
+恙 > you\ ;
+恖 > shi\ ;
+恒 > kou\ ;
+恉 > shi\ ;
+恈 > bou\ ;
+恆 > kou\ ;
+恂 > jun\ ;
+恀 > shi\ ;
+怱 > sou\ ;
+怦 > hou\ ;
+怟 > tei\ ;
+怜 > rei\ ;
+怚 > sho\ ;
+怔 > sei\ ;
+怓 > dou\ ;
+怐 > kou\ ;
+怏 > you\ ;
+怇 > kyo\ ;
+忼 > kou\ ;
+忻 > kin\ ;
+忺 > ken\ ;
+忶 > kon\ ;
+忳 > ton\ ;
+忲 > tai\ ;
+忰 > sui\ ;
+忮 > shi\ ;
+忭 > hen\ ;
+忩 > sou\ ;
+忨 > gan\ ;
+忞 > bin\ ;
+忝 > ten\ ;
+忖 > son\ ;
+忓 > kan\ ;
+忐 > kun\ ;
+忋 > kai\ ;
+忉 > tou\ ;
+忈 > jin\ ;
+徰 > sei\ ;
+徯 > kei\ ;
+徭 > you\ ;
+徬 > hou\ ;
+徨 > kou\ ;
+徧 > hen\ ;
+徠 > rai\ ;
+徝 > chi\ ;
+徙 > shi\ ;
+徘 > hai\ ;
+徖 > sou\ ;
+徑 > kei\ ;
+徉 > you\ ;
+很 > kon\ ;
+徆 > sei\ ;
+征 > sei\ ;
+彾 > rei\ ;
+彽 > chi\ ;
+彷 > hou\ ;
+彲 > chi\ ;
+彯 > heu\ ;
+彭 > hou\ ;
+彬 > hin\ ;
+彧 > iku\ ;
+彦 > gen\ ;
+彥 > gen\ ;
+彤 > tou\ ;
+彣 > bun\ ;
+彡 > san\ ;
+彘 > tei\ ;
+彗 > sui\ ;
+彖 > tan\ ;
+彑 > kei\ ;
+彐 > kei\ ;
+彎 > wan\ ;
+彋 > kau\ ;
+彇 > you\ ;
+彄 > kou\ ;
+彁 > sei\ ;
+彀 > kou\ ;
+弿 > ken\ ;
+弽 > you\ ;
+弹 > dan\ ;
+弸 > hou\ ;
+弴 > ton\ ;
+弰 > sou\ ;
+弯 > wan\ ;
+弮 > ken\ ;
+弨 > seu\ ;
+弤 > tei\ ;
+弢 > tou\ ;
+弚 > tai\ ;
+弒 > shi\ ;
+弑 > shi\ ;
+弎 > san\ ;
+弊 > hei\ ;
+弉 > jou\ ;
+弈 > eki\ ;
+弆 > kyo\ ;
+弅 > hun\ ;
+廿 > juu\ ;
+廽 > kai\ ;
+廼 > dai\ ;
+廷 > tei\ ;
+廵 > jun\ ;
+廲 > rei\ ;
+廱 > you\ ;
+廯 > sen\ ;
+廬 > ryo\ ;
+廪 > rin\ ;
+廩 > rin\ ;
+廨 > kai\ ;
+廥 > kai\ ;
+廞 > kin\ ;
+廝 > shi\ ;
+廛 > ten\ ;
+廗 > tai\ ;
+廔 > rou\ ;
+廒 > gou\ ;
+廑 > kin\ ;
+廎 > kei\ ;
+廌 > chi\ ;
+廇 > riu\ ;
+廆 > kai\ ;
+廅 > ahu\ ;
+廁 > shi\ ;
+廀 > sou\ ;
+庽 > dou\ ;
+庻 > sho\ ;
+庶 > sho\ ;
+庲 > rai\ ;
+庰 > hei\ ;
+庬 > bou\ ;
+庨 > kou\ ;
+庤 > chi\ ;
+庣 > teu\ ;
+庛 > shi\ ;
+庎 > kai\ ;
+庍 > hai\ ;
+庉 > ton\ ;
+庈 > kin\ ;
+广 > gen\ ;
+幺 > you\ ;
+幷 > hei\ ;
+并 > hei\ ;
+幵 > ken\ ;
+幱 > ran\ ;
+幰 > ken\ ;
+幮 > chu\ ;
+幫 > hou\ ;
+幪 > bou\ ;
+幩 > hun\ ;
+幨 > sen\ ;
+幧 > seu\ ;
+幤 > hei\ ;
+幣 > hei\ ;
+幢 > tou\ ;
+幡 > han\ ;
+幝 > sen\ ;
+幜 > kei\ ;
+幚 > hou\ ;
+幔 > ban\ ;
+幐 > tou\ ;
+幍 > tou\ ;
+幌 > kou\ ;
+幋 > han\ ;
+幊 > kou\ ;
+幈 > hei\ ;
+幇 > hou\ ;
+幄 > aku\ ;
+幀 > tei\ ;
+帵 > wan\ ;
+帲 > hei\ ;
+帮 > hou\ ;
+帬 > kun\ ;
+帩 > seu\ ;
+帨 > sei\ ;
+带 > tai\ ;
+帣 > ken\ ;
+帡 > hei\ ;
+帠 > gei\ ;
+帟 > eki\ ;
+帘 > ren\ ;
+帖 > jou\ ;
+帒 > tai\ ;
+帎 > tan\ ;
+帋 > shi\ ;
+帇 > den\ ;
+帄 > tei\ ;
+帀 > sou\ ;
+巺 > son\ ;
+巹 > kin\ ;
+巵 > shi\ ;
+巠 > kei\ ;
+巟 > kou\ ;
+巜 > kai\ ;
+巛 > sen\ ;
+巘 > gen\ ;
+巖 > gan\ ;
+巔 > ten\ ;
+巓 > ten\ ;
+巒 > ran\ ;
+巑 > san\ ;
+巏 > ken\ ;
+巎 > dou\ ;
+巌 > gan\ ;
+巉 > san\ ;
+巆 > kou\ ;
+巃 > rou\ ;
+巂 > sui\ ;
+嶼 > sho\ ;
+嶺 > rei\ ;
+嶹 > tou\ ;
+嶸 > kou\ ;
+嶵 > sai\ ;
+嶲 > kei\ ;
+嶰 > kai\ ;
+嶩 > dau\ ;
+嶧 > eki\ ;
+嶡 > kei\ ;
+嶟 > son\ ;
+嶝 > tou\ ;
+嶙 > rin\ ;
+嶕 > seu\ ;
+嶔 > kin\ ;
+嶌 > tou\ ;
+嶋 > tou\ ;
+嶊 > sui\ ;
+嶉 > sui\ ;
+嶆 > sau\ ;
+嶄 > san\ ;
+嶃 > san\ ;
+嵿 > tei\ ;
+嵼 > san\ ;
+嵺 > reu\ ;
+嵶 > tao\ ;
+嵱 > you\ ;
+嵰 > ken\ ;
+嵭 > hou\ ;
+嵬 > kai\ ;
+嵪 > kou\ ;
+嵩 > suu\ ;
+嵧 > riu\ ;
+嵤 > kei\ ;
+嵣 > tau\ ;
+嵢 > sou\ ;
+嵠 > gei\ ;
+嵗 > sei\ ;
+嵕 > sou\ ;
+嵓 > gan\ ;
+嵒 > gan\ ;
+嵎 > guu\ ;
+嵉 > tei\ ;
+嵈 > kan\ ;
+嵇 > kei\ ;
+嵆 > kei\ ;
+嵅 > kan\ ;
+嵃 > gen\ ;
+嵁 > kan\ ;
+崽 > sai\ ;
+崼 > shi\ ;
+崹 > tei\ ;
+崸 > ton\ ;
+崶 > hou\ ;
+崵 > seu\ ;
+崴 > wai\ ;
+崲 > kou\ ;
+崥 > hei\ ;
+崤 > kou\ ;
+崢 > sou\ ;
+崡 > kan\ ;
+崠 > tou\ ;
+崟 > gin\ ;
+崝 > sau\ ;
+崙 > ron\ ;
+崘 > ron\ ;
+崕 > gai\ ;
+崔 > sai\ ;
+崑 > kon\ ;
+崐 > kon\ ;
+崏 > bin\ ;
+崍 > rai\ ;
+崇 > suu\ ;
+崆 > kou\ ;
+崄 > ken\ ;
+崁 > kan\ ;
+峺 > kou\ ;
+峸 > sei\ ;
+峵 > kou\ ;
+峴 > ken\ ;
+峱 > dou\ ;
+峯 > hou\ ;
+峮 > kin\ ;
+峟 > you\ ;
+峝 > tou\ ;
+峜 > kei\ ;
+峘 > kan\ ;
+峕 > shi\ ;
+峒 > tou\ ;
+峐 > kai\ ;
+峎 > gon\ ;
+峇 > kou\ ;
+岾 > sen\ ;
+岺 > rei\ ;
+岷 > bin\ ;
+岲 > kou\ ;
+岱 > tai\ ;
+岰 > you\ ;
+岭 > rei\ ;
+岧 > teu\ ;
+岣 > kou\ ;
+岠 > kyo\ ;
+岟 > you\ ;
+岕 > kai\ ;
+岒 > ken\ ;
+岋 > gou\ ;
+岇 > gou\ ;
+岅 > han\ ;
+屽 > kan\ ;
+屻 > jin\ ;
+屳 > sen\ ;
+屯 > ton\ ;
+屧 > tei\ ;
+屣 > shi\ ;
+屟 > tei\ ;
+屜 > tei\ ;
+屛 > hei\ ;
+屚 > rou\ ;
+屖 > sei\ ;
+屔 > dei\ ;
+屎 > shi\ ;
+屇 > ten\ ;
+尼 > ama\ ;
+尷 > kan\ ;
+尶 > kan\ ;
+尵 > tai\ ;
+尲 > kan\ ;
+尬 > kai\ ;
+尨 > bou\ ;
+尟 > sen\ ;
+尌 > shu\ ;
+専 > sen\ ;
+寽 > rin\ ;
+对 > tai\ ;
+寶 > hou\ ;
+寳 > hou\ ;
+寱 > gei\ ;
+寰 > kan\ ;
+寬 > kan\ ;
+寨 > sai\ ;
+寜 > nei\ ;
+寛 > kan\ ;
+寚 > hou\ ;
+寘 > shi\ ;
+寗 > nei\ ;
+寕 > nei\ ;
+寓 > guu\ ;
+寏 > kan\ ;
+寎 > hei\ ;
+寍 > nei\ ;
+寋 > ken\ ;
+寊 > tei\ ;
+寇 > kou\ ;
+寁 > san\ ;
+寀 > sai\ ;
+宼 > kou\ ;
+宺 > kou\ ;
+宲 > hou\ ;
+宯 > kou\ ;
+宭 > kun\ ;
+宬 > sei\ ;
+宩 > shi\ ;
+宦 > kan\ ;
+宥 > yuu\ ;
+宖 > kou\ ;
+宕 > tou\ ;
+宔 > shu\ ;
+宑 > sei\ ;
+宏 > kou\ ;
+宋 > sou\ ;
+宁 > cho\ ;
+宀 > ben\ ;
+孿 > san\ ;
+孻 > dai\ ;
+孳 > shi\ ;
+孱 > sen\ ;
+孯 > kan\ ;
+孮 > sou\ ;
+孩 > kai\ ;
+孨 > sen\ ;
+孟 > mou\ ;
+孝 > kou\ ;
+孜 > shi\ ;
+孖 > shi\ ;
+孕 > you\ ;
+孍 > gen\ ;
+孌 > ren\ ;
+孈 > sui\ ;
+孅 > sen\ ;
+孃 > jou\ ;
+孁 > rei\ ;
+孀 > sou\ ;
+嬾 > ran\ ;
+嬲 > jou\ ;
+嬯 > tai\ ;
+嬭 > dai\ ;
+嬬 > shu\ ;
+嬨 > shi\ ;
+嬣 > tau\ ;
+嬠 > san\ ;
+嬞 > tou\ ;
+嬝 > jou\ ;
+嬛 > ken\ ;
+嬚 > ren\ ;
+嬗 > sen\ ;
+嬖 > hei\ ;
+嬓 > keu\ ;
+嬐 > sen\ ;
+嬏 > han\ ;
+嬎 > han\ ;
+嬋 > sen\ ;
+嬈 > deu\ ;
+嬃 > shu\ ;
+嬁 > tou\ ;
+嫽 > reu\ ;
+嫻 > kan\ ;
+嫺 > kan\ ;
+嫹 > bau\ ;
+嫸 > sen\ ;
+嫶 > seu\ ;
+嫬 > sha\ ;
+嫪 > rau\ ;
+嫩 > don\ ;
+嫨 > kan\ ;
+嫦 > kou\ ;
+嫥 > sen\ ;
+嫝 > kau\ ;
+嫚 > ban\ ;
+嫙 > seb\ ;
+嫘 > rui\ ;
+嫐 > jou\ ;
+嫏 > rou\ ;
+嫍 > tau\ ;
+嫋 > jou\ ;
+嫈 > seu\ ;
+嫇 > bei\ ;
+嫆 > you\ ;
+嫄 > gen\ ;
+媾 > kou\ ;
+媻 > han\ ;
+媹 > riu\ ;
+媸 > shi\ ;
+媶 > jou\ ;
+媵 > you\ ;
+媲 > hei\ ;
+媮 > tou\ ;
+媭 > shu\ ;
+媧 > kai\ ;
+媥 > hen\ ;
+媤 > shi\ ;
+媢 > bou\ ;
+媞 > shi\ ;
+媜 > tei\ ;
+媗 > ken\ ;
+媔 > ben\ ;
+媓 > kou\ ;
+媏 > tan\ ;
+媌 > bou\ ;
+媊 > sen\ ;
+婾 > tou\ ;
+婻 > dan\ ;
+婸 > tou\ ;
+婷 > tei\ ;
+婰 > ten\ ;
+婪 > ran\ ;
+婩 > gen\ ;
+婧 > sei\ ;
+婥 > dou\ ;
+婠 > wan\ ;
+婞 > kei\ ;
+婝 > ten\ ;
+婜 > kan\ ;
+婛 > kei\ ;
+婘 > ken\ ;
+婗 > gei\ ;
+婖 > ten\ ;
+婒 > tan\ ;
+婑 > zui\ ;
+婇 > sai\ ;
+婄 > hou\ ;
+婃 > sou\ ;
+婂 > ben\ ;
+婁 > rou\ ;
+娾 > gai\ ;
+娹 > ken\ ;
+娶 > shu\ ;
+娵 > shu\ ;
+娮 > den\ ;
+娩 > ben\ ;
+娨 > ban\ ;
+娧 > tai\ ;
+娤 > sou\ ;
+娣 > tei\ ;
+娟 > ken\ ;
+娞 > dai\ ;
+娚 > nan\ ;
+娙 > gou\ ;
+娗 > tei\ ;
+娏 > bou\ ;
+娍 > sei\ ;
+娊 > ken\ ;
+娉 > hei\ ;
+姾 > sen\ ;
+姼 > shi\ ;
+姸 > ken\ ;
+姷 > yuu\ ;
+姵 > hai\ ;
+姳 > bei\ ;
+姯 > kou\ ;
+姮 > kou\ ;
+姭 > ken\ ;
+姪 > mei\ ;
+姩 > den\ ;
+姧 > kan\ ;
+姦 > kan\ ;
+姤 > kou\ ;
+姣 > kou\ ;
+姢 > ken\ ;
+姟 > kai\ ;
+姛 > tou\ ;
+姚 > you\ ;
+姙 > nin\ ;
+姘 > hin\ ;
+姗 > san\ ;
+姖 > kyo\ ;
+姒 > shi\ ;
+姐 > ane\ ;
+姏 > ban\ ;
+姍 > san\ ;
+姌 > zen\ ;
+姊 > shi\ ;
+姈 > rei\ ;
+姅 > han\ ;
+姄 > bin\ ;
+姃 > sei\ ;
+妶 > ken\ ;
+妵 > tou\ ;
+妳 > dai\ ;
+妨 > bou\ ;
+妧 > gen\ ;
+妦 > hou\ ;
+妢 > hun\ ;
+妡 > kin\ ;
+妠 > dou\ ;
+妞 > juu\ ;
+妝 > sou\ ;
+妛 > shi\ ;
+妚 > huu\ ;
+妗 > sen\ ;
+妏 > bun\ ;
+妎 > kai\ ;
+妍 > ken\ ;
+妌 > sei\ ;
+妅 > kou\ ;
+奿 > gan\ ;
+奾 > sen\ ;
+奻 > dan\ ;
+她 > chi\ ;
+奸 > kan\ ;
+奷 > sen\ ;
+奶 > dai\ ;
+奵 > tei\ ;
+奲 > sha\ ;
+奱 > ren\ ;
+奩 > ren\ ;
+奣 > wan\ ;
+奡 > gau\ ;
+奠 > ten\ ;
+奟 > kou\ ;
+奛 > kou\ ;
+奚 > kei\ ;
+奙 > hon\ ;
+奘 > jou\ ;
+奕 > eki\ ;
+奔 > hon\ ;
+奒 > kai\ ;
+奐 > kan\ ;
+奎 > kei\ ;
+奌 > ten\ ;
+奆 > ken\ ;
+奅 > hou\ ;
+奃 > tei\ ;
+奀 > bou\ ;
+夳 > tai\ ;
+夲 > tou\ ;
+夰 > kou\ ;
+夯 > kou\ ;
+夭 > you\ ;
+夣 > bou\ ;
+夠 > kou\ ;
+夝 > sei\ ;
+夘 > bou\ ;
+夒 > dou\ ;
+夐 > kei\ ;
+夊 > sui\ ;
+夆 > hou\ ;
+夅 > kou\ ;
+夂 > chi\ ;
+壾 > bou\ ;
+壼 > kon\ ;
+壸 > kon\ ;
+壴 > shu\ ;
+壮 > sou\ ;
+壨 > rai\ ;
+壧 > gan\ ;
+壥 > ten\ ;
+壤 > jou\ ;
+壣 > rin\ ;
+壠 > rou\ ;
+壟 > oka\ ;
+壜 > tan\ ;
+壙 > kou\ ;
+壘 > rui\ ;
+壖 > zen\ ;
+壕 > gou\ ;
+壔 > tau\ ;
+壐 > shi\ ;
+壏 > kan\ ;
+壎 > ken\ ;
+壍 > zan\ ;
+壌 > jou\ ;
+壉 > kyo\ ;
+壅 > you\ ;
+壂 > ten\ ;
+墿 > eki\ ;
+墾 > kon\ ;
+墽 > kau\ ;
+墸 > sho\ ;
+墳 > fun\ ;
+墱 > tou\ ;
+墭 > sei\ ;
+墬 > chi\ ;
+墩 > ton\ ;
+墦 > han\ ;
+墥 > tou\ ;
+墡 > sen\ ;
+墠 > sen\ ;
+墟 > kyo\ ;
+增 > zou\ ;
+墝 > kou\ ;
+墖 > tou\ ;
+墔 > sai\ ;
+墐 > kin\ ;
+墊 > ten\ ;
+墉 > you\ ;
+墈 > kan\ ;
+墅 > sho\ ;
+墁 > ban\ ;
+墀 > chi\ ;
+塿 > rou\ ;
+塽 > sau\ ;
+塼 > sen\ ;
+塺 > bai\ ;
+塹 > zan\ ;
+塴 > hou\ ;
+塲 > jou\ ;
+塰 > ama\ ;
+填 > ten\ ;
+塤 > ken\ ;
+塣 > tei\ ;
+塡 > ten\ ;
+塟 > sou\ ;
+塝 > hau\ ;
+塜 > hou\ ;
+塘 > tou\ ;
+塒 > shi\ ;
+塏 > kai\ ;
+塎 > you\ ;
+塌 > tou\ ;
+塁 > rui\ ;
+堿 > kan\ ;
+堽 > kou\ ;
+堼 > kou\ ;
+堺 > kai\ ;
+堭 > kau\ ;
+堩 > kou\ ;
+堧 > zen\ ;
+堦 > kai\ ;
+堥 > bou\ ;
+堡 > hou\ ;
+堠 > kou\ ;
+堟 > ten\ ;
+堞 > teu\ ;
+堜 > ren\ ;
+堋 > hou\ ;
+堉 > iku\ ;
+堈 > kou\ ;
+堇 > kin\ ;
+堄 > gen\ ;
+堃 > kon\ ;
+埿 > dei\ ;
+埾 > shu\ ;
+埽 > sou\ ;
+培 > bai\ ;
+埸 > eki\ ;
+埶 > gei\ ;
+埳 > kan\ ;
+埲 > hou\ ;
+埰 > sai\ ;
+埮 > tan\ ;
+埭 > tai\ ;
+埬 > tou\ ;
+埩 > sau\ ;
+埦 > wan\ ;
+埥 > sei\ ;
+埣 > sai\ ;
+埢 > ken\ ;
+域 > iki\ ;
+埞 > tei\ ;
+埝 > ten\ ;
+埜 > sho\ ;
+埕 > tei\ ;
+埏 > sen\ ;
+埌 > rou\ ;
+埇 > you\ ;
+埄 > hou\ ;
+埂 > kau\ ;
+埀 > sui\ ;
+垿 > sho\ ;
+垾 > kan\ ;
+垽 > gin\ ;
+垼 > eki\ ;
+垻 > hai\ ;
+垹 > hou\ ;
+垸 > kan\ ;
+垶 > sei\ ;
+垰 > tao\ ;
+垩 > sei\ ;
+垨 > shu\ ;
+垧 > kei\ ;
+垥 > keu\ ;
+垠 > gin\ ;
+垟 > you\ ;
+垚 > geu\ ;
+垙 > kuu\ ;
+垗 > teu\ ;
+垕 > kou\ ;
+垓 > gai\ ;
+垐 > shi\ ;
+垌 > tou\ ;
+垉 > hou\ ;
+垈 > tai\ ;
+垁 > chi\ ;
+坾 > cho\ ;
+坽 > rei\ ;
+坻 > chi\ ;
+坰 > kei\ ;
+坮 > dai\ ;
+坭 > dei\ ;
+坫 > ten\ ;
+坩 > kan\ ;
+坥 > sho\ ;
+坤 > kon\ ;
+坢 > han\ ;
+坚 > ken\ ;
+坙 > kei\ ;
+块 > kai\ ;
+坑 > kou\ ;
+坏 > hai\ ;
+坎 > kan\ ;
+坍 > tan\ ;
+坌 > hon\ ;
+坋 > hun\ ;
+坉 > ton\ ;
+坆 > bai\ ;
+坅 > kin\ ;
+坁 > shi\ ;
+址 > shi\ ;
+圭 > kei\ ;
+圦 > iri\ ;
+圢 > tei\ ;
+圞 > ran\ ;
+圝 > ran\ ;
+圜 > kan\ ;
+圛 > eki\ ;
+圚 > kai\ ;
+圌 > sen\ ;
+圊 > sei\ ;
+圉 > gyo\ ;
+圈 > ken\ ;
+圇 > rin\ ;
+圅 > kan\ ;
+圄 > gyo\ ;
+圂 > kon\ ;
+圁 > gin\ ;
+囿 > yuu\ ;
+囹 > rei\ ;
+囷 > kin\ ;
+囱 > sou\ ;
+园 > gan\ ;
+囬 > kai\ ;
+囪 > sou\ ;
+囨 > hen\ ;
+囧 > kei\ ;
+囥 > kou\ ;
+囤 > ton\ ;
+囡 > juu\ ;
+囝 > ken\ ;
+囜 > jin\ ;
+囘 > kai\ ;
+囔 > dou\ ;
+囏 > kan\ ;
+囊 > nou\ ;
+囈 > gei\ ;
+囆 > tai\ ;
+囅 > ten\ ;
+囃 > sou\ ;
+囂 > gou\ ;
+囀 > ten\ ;
+嚾 > kan\ ;
+嚻 > gou\ ;
+嚷 > jau\ ;
+嚵 > san\ ;
+嚮 > kou\ ;
+嚬 > hin\ ;
+嚪 > tan\ ;
+嚨 > rou\ ;
+嚢 > nou\ ;
+嚚 > gin\ ;
+嚙 > gou\ ;
+嚔 > tei\ ;
+嚎 > kau\ ;
+嚌 > sei\ ;
+嚈 > you\ ;
+嚆 > kou\ ;
+嚃 > tou\ ;
+嚂 > ran\ ;
+嚀 > dei\ ;
+噿 > sui\ ;
+噹 > tou\ ;
+噸 > ton\ ;
+噷 > kin\ ;
+噵 > dou\ ;
+噴 > fun\ ;
+噰 > you\ ;
+噬 > zei\ ;
+噥 > dou\ ;
+噤 > kin\ ;
+噣 > chu\ ;
+噢 > iku\ ;
+噡 > sen\ ;
+噟 > you\ ;
+噞 > gen\ ;
+噙 > kin\ ;
+噔 > tou\ ;
+噓 > kyo\ ;
+噍 > seu\ ;
+噋 > ton\ ;
+噉 > tan\ ;
+噇 > tou\ ;
+噆 > sou\ ;
+噃 > han\ ;
+噀 > son\ ;
+嘾 > tan\ ;
+嘽 > tan\ ;
+嘹 > reu\ ;
+嘷 > kou\ ;
+嘶 > sei\ ;
+嘵 > keu\ ;
+嘮 > tou\ ;
+嘭 > hou\ ;
+嘬 > sai\ ;
+嘫 > dam\ ;
+嘪 > bai\ ;
+嘕 > ken\ ;
+嘒 > kei\ ;
+嘐 > hau\ ;
+嘍 > rou\ ;
+嘌 > heu\ ;
+嘊 > gai\ ;
+嘈 > sau\ ;
+嘅 > kai\ ;
+嘄 > keu\ ;
+嗿 > tan\ ;
+嗾 > sou\ ;
+嗻 > sha\ ;
+嗺 > sui\ ;
+嗹 > ren\ ;
+嗸 > gou\ ;
+嗷 > gou\ ;
+嗨 > kai\ ;
+嗥 > kou\ ;
+嗤 > shi\ ;
+嗡 > rou\ ;
+嗞 > shi\ ;
+嗛 > ken\ ;
+嗙 > hou\ ;
+嗘 > kei\ ;
+嗓 > sou\ ;
+嗒 > tou\ ;
+嗌 > eki\ ;
+嗊 > kou\ ;
+嗈 > you\ ;
+嗃 > kou\ ;
+嗁 > tei\ ;
+喿 > sou\ ;
+喭 > gen\ ;
+喦 > jou\ ;
+喤 > kou\ ;
+喛 > kan\ ;
+喙 > kai\ ;
+喗 > gin\ ;
+喕 > ben\ ;
+喔 > aku\ ;
+喒 > san\ ;
+喏 > sha\ ;
+喍 > sai\ ;
+喊 > kan\ ;
+喈 > kai\ ;
+喃 > nan\ ;
+啿 > tan\ ;
+啽 > gan\ ;
+啻 > shi\ ;
+啴 > tan\ ;
+啮 > gou\ ;
+啥 > sha\ ;
+啡 > hai\ ;
+啟 > kei\ ;
+啛 > sai\ ;
+啙 > shi\ ;
+啗 > tan\ ;
+啖 > tan\ ;
+啕 > tou\ ;
+啔 > kei\ ;
+啓 > kei\ ;
+啑 > sou\ ;
+啐 > sai\ ;
+啍 > ton\ ;
+啌 > kou\ ;
+啉 > ran\ ;
+啈 > kou\ ;
+啁 > tou\ ;
+啀 > gai\ ;
+唻 > rai\ ;
+唶 > sha\ ;
+唳 > rei\ ;
+唫 > gin\ ;
+唪 > hou\ ;
+唤 > kan\ ;
+唝 > kou\ ;
+唘 > kei\ ;
+唗 > tou\ ;
+唕 > sou\ ;
+唑 > zei\ ;
+唍 > kan\ ;
+唌 > sen\ ;
+唉 > kai\ ;
+唅 > kan\ ;
+唄 > uta\ ;
+唁 > gen\ ;
+哽 > kou\ ;
+哼 > kou\ ;
+哻 > kan\ ;
+哸 > sai\ ;
+哰 > rou\ ;
+哯 > ken\ ;
+哮 > kou\ ;
+哤 > bou\ ;
+哢 > rou\ ;
+哠 > kou\ ;
+哏 > kon\ ;
+哎 > gai\ ;
+哊 > iku\ ;
+哈 > gou\ ;
+哆 > shi\ ;
+哅 > kou\ ;
+哄 > kou\ ;
+哃 > tou\ ;
+咾 > rou\ ;
+咺 > ken\ ;
+咸 > kan\ ;
+咷 > tau\ ;
+咵 > kuu\ ;
+咴 > kai\ ;
+咮 > tou\ ;
+咫 > shi\ ;
+咨 > shi\ ;
+咣 > kou\ ;
+咔 > rou\ ;
+咒 > shu\ ;
+咍 > kai\ ;
+咆 > hou\ ;
+咅 > tou\ ;
+咂 > sou\ ;
+咁 > kan\ ;
+呷 > kou\ ;
+呲 > shi\ ;
+呰 > shi\ ;
+呯 > hei\ ;
+呩 > shi\ ;
+呧 > tei\ ;
+呥 > zen\ ;
+呤 > rei\ ;
+呣 > bou\ ;
+呡 > bun\ ;
+呠 > hon\ ;
+呞 > shi\ ;
+呈 > tei\ ;
+呇 > kei\ ;
+呅 > bai\ ;
+呃 > aku\ ;
+呁 > kin\ ;
+吼 > kou\ ;
+吺 > tou\ ;
+吱 > shi\ ;
+吰 > kou\ ;
+启 > kei\ ;
+吮 > sen\ ;
+吭 > kou\ ;
+听 > kin\ ;
+吪 > guu\ ;
+吩 > fun\ ;
+吨 > ton\ ;
+吥 > hou\ ;
+吤 > kai\ ;
+吠 > hai\ ;
+吟 > gin\ ;
+吞 > don\ ;
+吙 > kuu\ ;
+吘 > gou\ ;
+吕 > ryo\ ;
+吆 > you\ ;
+吅 > ten\ ;
+吂 > bou\ ;
+号 > gou\ ;
+叮 > tei\ ;
+叨 > tou\ ;
+另 > rei\ ;
+叟 > sou\ ;
+叝 > kou\ ;
+叛 > han\ ;
+变 > hen\ ;
+叓 > shi\ ;
+叏 > kai\ ;
+叇 > tai\ ;
+叅 > san\ ;
+叄 > san\ ;
+叁 > san\ ;
+叀 > sen\ ;
+厽 > rui\ ;
+厺 > kyo\ ;
+厹 > jiu\ ;
+厸 > rin\ ;
+厷 > kou\ ;
+厶 > shi\ ;
+厵 > gen\ ;
+厲 > rei\ ;
+厮 > shi\ ;
+厫 > gou\ ;
+厪 > kin\ ;
+厧 > ten\ ;
+厡 > gen\ ;
+厜 > shi\ ;
+厙 > sha\ ;
+厗 > tei\ ;
+厖 > bou\ ;
+厓 > gai\ ;
+厎 > shi\ ;
+厉 > rei\ ;
+厈 > kan\ ;
+厃 > sen\ ;
+厂 > kan\ ;
+卺 > kin\ ;
+卯 > bou\ ;
+卮 > shi\ ;
+卬 > gau\ ;
+卥 > sei\ ;
+卤 > sei\ ;
+卣 > yuu\ ;
+卞 > hen\ ;
+卝 > kan\ ;
+单 > tan\ ;
+卐 > ban\ ;
+卋 > sei\ ;
+卅 > sou\ ;
+卄 > juu\ ;
+匾 > hen\ ;
+匸 > kei\ ;
+匷 > kyo\ ;
+匴 > san\ ;
+匳 > ren\ ;
+匲 > ren\ ;
+匰 > tan\ ;
+匯 > wai\ ;
+匨 > zou\ ;
+匥 > hen\ ;
+匟 > kou\ ;
+匝 > sou\ ;
+匘 > dou\ ;
+匒 > tou\ ;
+匏 > hou\ ;
+匌 > kou\ ;
+匋 > tou\ ;
+匄 > kai\ ;
+勽 > bun\ ;
+勹 > hou\ ;
+勷 > jou\ ;
+勵 > rei\ ;
+勴 > ryo\ ;
+勳 > kun\ ;
+勲 > kun\ ;
+勱 > bai\ ;
+勯 > tan\ ;
+勬 > ken\ ;
+勫 > han\ ;
+勨 > you\ ;
+勦 > sou\ ;
+勡 > heu\ ;
+勛 > kun\ ;
+勗 > bou\ ;
+勔 > ben\ ;
+勓 > kai\ ;
+勑 > rai\ ;
+勐 > bau\ ;
+勏 > hou\ ;
+勍 > kei\ ;
+勌 > ken\ ;
+勈 > you\ ;
+勆 > rou\ ;
+勄 > bin\ ;
+勂 > kou\ ;
+勁 > kei\ ;
+势 > sei\ ;
+劾 > gai\ ;
+劺 > bou\ ;
+劷 > you\ ;
+劶 > kou\ ;
+劵 > ken\ ;
+劳 > rou\ ;
+劲 > kei\ ;
+劯 > sho\ ;
+劧 > shi\ ;
+劥 > kou\ ;
+劤 > kin\ ;
+办 > hen\ ;
+劝 > kan\ ;
+劗 > san\ ;
+劖 > san\ ;
+劔 > ken\ ;
+劒 > ken\ ;
+劑 > zai\ ;
+劎 > ken\ ;
+劌 > kei\ ;
+劊 > kai\ ;
+劆 > ren\ ;
+剿 > sou\ ;
+剼 > san\ ;
+剻 > huu\ ;
+剸 > tan\ ;
+剷 > san\ ;
+剴 > gai\ ;
+剳 > tou\ ;
+剱 > ken\ ;
+剰 > jou\ ;
+剭 > oku\ ;
+剬 > tan\ ;
+剪 > sen\ ;
+剩 > jou\ ;
+剤 > zai\ ;
+剠 > kei\ ;
+剜 > wan\ ;
+剚 > shi\ ;
+剙 > sou\ ;
+剗 > san\ ;
+剏 > sou\ ;
+剅 > rou\ ;
+剄 > kei\ ;
+券 > ken\ ;
+刲 > kei\ ;
+刱 > sou\ ;
+刬 > san\ ;
+刪 > san\ ;
+刨 > hou\ ;
+刧 > gou\ ;
+刢 > rei\ ;
+刡 > bin\ ;
+删 > san\ ;
+刞 > sho\ ;
+刓 > gun\ ;
+刐 > tan\ ;
+刎 > fun\ ;
+刌 > son\ ;
+刋 > sen\ ;
+刅 > sou\ ;
+刄 > jin\ ;
+刂 > tau\ ;
+刁 > teu\ ;
+凾 > kan\ ;
+凷 > kai\ ;
+凵 > kan\ ;
+凳 > tou\ ;
+凲 > kan\ ;
+凱 > gai\ ;
+凰 > kou\ ;
+凮 > fuu\ ;
+凭 > hei\ ;
+凨 > fuu\ ;
+凥 > kyo\ ;
+凤 > hou\ ;
+凣 > han\ ;
+凢 > bon\ ;
+凜 > rin\ ;
+凛 > rin\ ;
+凘 > shi\ ;
+凗 > sai\ ;
+凖 > jun\ ;
+凕 > bei\ ;
+凔 > sau\ ;
+凑 > sou\ ;
+减 > gen\ ;
+凊 > sei\ ;
+凈 > sou\ ;
+准 > jun\ ;
+凂 > bai\ ;
+冿 > sen\ ;
+冺 > bin\ ;
+冸 > han\ ;
+冭 > tai\ ;
+冩 > sha\ ;
+冦 > kou\ ;
+冥 > mei\ ;
+冣 > shu\ ;
+冡 > bou\ ;
+冕 > ben\ ;
+冓 > kou\ ;
+冐 > bou\ ;
+冏 > kei\ ;
+冋 > kei\ ;
+冉 > nen\ ;
+冄 > zen\ ;
+冃 > bou\ ;
+冂 > kei\ ;
+兮 > kei\ ;
+內 > dai\ ;
+兦 > bou\ ;
+兤 > kou\ ;
+兘 > shi\ ;
+兕 > shi\ ;
+兊 > tai\ ;
+儿 > jin\ ;
+儽 > rai\ ;
+儼 > gen\ ;
+儻 > tou\ ;
+儹 > san\ ;
+儷 > rei\ ;
+儳 > san\ ;
+儱 > rou\ ;
+儯 > tou\ ;
+儩 > shi\ ;
+儧 > san\ ;
+儥 > iku\ ;
+儤 > hou\ ;
+儣 > kou\ ;
+儢 > ryo\ ;
+儡 > rai\ ;
+儝 > kei\ ;
+儜 > dau\ ;
+儚 > bou\ ;
+儙 > ken\ ;
+儖 > ran\ ;
+儕 > sei\ ;
+儓 > tai\ ;
+儑 > gan\ ;
+儐 > hin\ ;
+儎 > sai\ ;
+儌 > keu\ ;
+儋 > tan\ ;
+儊 > sho\ ;
+儉 > ken\ ;
+儈 > kai\ ;
+儇 > ken\ ;
+儆 > kei\ ;
+儅 > tou\ ;
+儃 > sen\ ;
+儂 > dou\ ;
+僿 > shi\ ;
+僼 > hou\ ;
+僸 > kin\ ;
+僶 > bin\ ;
+僯 > rin\ ;
+僮 > dou\ ;
+僭 > sen\ ;
+僬 > seu\ ;
+僩 > kan\ ;
+僨 > hun\ ;
+僤 > tan\ ;
+僣 > sen\ ;
+僢 > sen\ ;
+僠 > fan\ ;
+僝 > san\ ;
+僜 > tou\ ;
+僙 > kou\ ;
+僗 > rau\ ;
+僔 > son\ ;
+僓 > tai\ ;
+僐 > sen\ ;
+僎 > sen\ ;
+僌 > you\ ;
+僋 > tan\ ;
+僊 > sen\ ;
+僉 > sen\ ;
+僈 > ban\ ;
+僆 > ren\ ;
+僄 > heu\ ;
+僂 > rou\ ;
+僀 > tei\ ;
+傺 > tei\ ;
+傸 > sau\ ;
+債 > sai\ ;
+傲 > gou\ ;
+傰 > hou\ ;
+傯 > sou\ ;
+傮 > sou\ ;
+傭 > you\ ;
+傪 > san\ ;
+傤 > sai\ ;
+傡 > hei\ ;
+傝 > tan\ ;
+傛 > you\ ;
+傚 > kou\ ;
+傖 > sau\ ;
+傔 > ken\ ;
+傓 > sen\ ;
+傒 > kei\ ;
+傐 > kou\ ;
+傏 > tou\ ;
+傎 > ten\ ;
+傋 > kau\ ;
+傇 > jou\ ;
+傆 > gen\ ;
+傂 > chi\ ;
+傁 > sou\ ;
+傀 > kai\ ;
+偻 > rou\ ;
+偺 > san\ ;
+偸 > tou\ ;
+偳 > tan\ ;
+偲 > shi\ ;
+偭 > ben\ ;
+偬 > sou\ ;
+偫 > chi\ ;
+偩 > huu\ ;
+偨 > shi\ ;
+偦 > sho\ ;
+偢 > seu\ ;
+偡 > tan\ ;
+偞 > you\ ;
+偝 > hai\ ;
+偛 > sou\ ;
+偙 > tei\ ;
+偘 > kan\ ;
+偗 > sei\ ;
+偖 > sha\ ;
+偕 > kai\ ;
+偓 > aku\ ;
+偒 > tou\ ;
+偑 > huu\ ;
+偐 > gan\ ;
+偏 > hen\ ;
+偎 > wai\ ;
+偍 > tei\ ;
+偋 > hei\ ;
+偄 > dan\ ;
+偂 > sen\ ;
+值 > chi\ ;
+倷 > dai\ ;
+倴 > hon\ ;
+倳 > shi\ ;
+倲 > tou\ ;
+倱 > kon\ ;
+倫 > rin\ ;
+倪 > gei\ ;
+倨 > kyo\ ;
+倧 > sou\ ;
+倥 > kou\ ;
+倣 > hou\ ;
+倞 > kei\ ;
+倝 > kan\ ;
+倗 > hou\ ;
+倖 > kou\ ;
+倕 > sui\ ;
+倓 > tan\ ;
+們 > mon\ ;
+倎 > ten\ ;
+倍 > bai\ ;
+倊 > sou\ ;
+倈 > rai\ ;
+倅 > sai\ ;
+倄 > kou\ ;
+倂 > hei\ ;
+倁 > chi\ ;
+俿 > chi\ ;
+俽 > kin\ ;
+俼 > iku\ ;
+俸 > hou\ ;
+俴 > sen\ ;
+俳 > hai\ ;
+俲 > kou\ ;
+俫 > rai\ ;
+俟 > shi\ ;
+俜 > hei\ ;
+俛 > ben\ ;
+俖 > hai\ ;
+俔 > ken\ ;
+俓 > gau\ ;
+俒 > kon\ ;
+俑 > you\ ;
+俏 > seu\ ;
+俊 > jun\ ;
+俆 > sho\ ;
+俀 > tai\ ;
+侾 > kou\ ;
+侽 > dan\ ;
+侹 > tei\ ;
+侫 > nei\ ;
+侣 > ryo\ ;
+侟 > sen\ ;
+侗 > tou\ ;
+侖 > ron\ ;
+侔 > bou\ ;
+侑 > yuu\ ;
+侏 > shu\ ;
+侊 > kou\ ;
+侈 > shi\ ;
+侅 > kai\ ;
+侃 > kan\ ;
+侀 > kei\ ;
+佽 > shi\ ;
+佼 > kou\ ;
+佺 > sen\ ;
+佷 > kou\ ;
+佱 > hou\ ;
+佯 > you\ ;
+佮 > kou\ ;
+佩 > hai\ ;
+佣 > you\ ;
+佢 > kyo\ ;
+佡 > ken\ ;
+佟 > tou\ ;
+佞 > nei\ ;
+佝 > kou\ ;
+佘 > sha\ ;
+佑 > yuu\ ;
+佌 > shi\ ;
+佉 > kyo\ ;
+但 > tan\ ;
+佂 > yai\ ;
+佀 > shi\ ;
+伻 > hou\ ;
+伹 > sho\ ;
+伶 > rei\ ;
+伭 > ken\ ;
+伣 > ken\ ;
+优 > yuu\ ;
+众 > gin\ ;
+伓 > hai\ ;
+伒 > kin\ ;
+伉 > kou\ ;
+伇 > eki\ ;
+伅 > ton\ ;
+伂 > hai\ ;
+仿 > hou\ ;
+仾 > tei\ ;
+份 > hin\ ;
+价 > kai\ ;
+仱 > ken\ ;
+仯 > sou\ ;
+仭 > jin\ ;
+仠 > kan\ ;
+仟 > sen\ ;
+仞 > jin\ ;
+仜 > kou\ ;
+仚 > ken\ ;
+仐 > san\ ;
+从 > juu\ ;
+仍 > jou\ ;
+仃 > tei\ ;
+什 > juu\ ;
+亾 > bou\ ;
+亷 > ren\ ;
+亶 > tan\ ;
+亰 > kei\ ;
+亢 > kou\ ;
+亠 > tou\ ;
+亝 > sei\ ;
+亗 > sai\ ;
+亖 > shi\ ;
+亃 > rin\ ;
+亁 > ken\ ;
+乿 > chi\ ;
+乹 > kan\ ;
+乪 > dou\ ;
+乩 > kei\ ;
+乨 > shi\ ;
+乢 > gai\ ;
+乖 > kai\ ;
+乓 > hau\ ;
+乒 > hei\ ;
+乑 > gin\ ;
+乂 > gai\ ;
+举 > kyo\ ;
+丽 > rei\ ;
+丶 > chu\ ;
+丳 > san\ ;
+丱 > kan\ ;
+丰 > hou\ ;
+丯 > kai\ ;
+丨 > kon\ ;
+丣 > yuu\ ;
+丙 > hei\ ;
+丗 > sei\ ;
+专 > sen\ ;
+丐 > kai\ ;
+丏 > ben\ ;
+丂 > kou\ ;
+迦 > ka\ ;
+矢 > ya\ ;
+応 > ou\ ;
+忌 > ki\ ;
+辭 > ji\ ;
+微 > bi\ ;
+御 > go\ ;
+辞 > ji\ ;
+徒 > to\ ;
+徐 > jo\ ;
+徃 > ou\ ;
+往 > ou\ ;
+眼 > me\ ;
+輪 > wa\ ;
+弥 > mi\ ;
+真 > ma\ ;
+輝 > ki\ ;
+引 > in\ ;
+弐 > ni\ ;
+延 > en\ ;
+目 > me\ ;
+身 > mi\ ;
+庫 > ko\ ;
+座 > za\ ;
+度 > do\ ;
+府 > fu\ ;
+庇 > hi\ ;
+踰 > yu\ ;
+帰 > ki\ ;
+痺 > hi\ ;
+路 > ro\ ;
+差 > sa\ ;
+跪 > ki\ ;
+巨 > ko\ ;
+巣 > su\ ;
+州 > su\ ;
+痛 > ts\ ;
+疲 > hi\ ;
+疑 > gi\ ;
+疎 > so\ ;
+疋 > so\ ;
+起 > ki\ ;
+赴 > fu\ ;
+田 > ta\ ;
+甥 > oi\ ;
+贔 > hi\ ;
+費 > hi\ ;
+貴 > ki\ ;
+環 > wa\ ;
+貨 > ka\ ;
+負 > fu\ ;
+豫 > yo\ ;
+履 > ri\ ;
+屓 > ki\ ;
+屋 > ya\ ;
+谷 > ya\ ;
+理 > ri\ ;
+寝 > ne\ ;
+寐 > bi\ ;
+珈 > ka\ ;
+寄 > ki\ ;
+家 > ke\ ;
+実 > mi\ ;
+宜 > gi\ ;
+王 > ou\ ;
+譽 > yo\ ;
+護 > go\ ;
+議 > gi\ ;
+譬 > hi\ ;
+季 > ki\ ;
+字 > ji\ ;
+子 > ne\ ;
+嬉 > ki\ ;
+媼 > ou\ ;
+課 > ka\ ;
+誤 > go\ ;
+犠 > gi\ ;
+語 > go\ ;
+媚 > bi\ ;
+誉 > yo\ ;
+誇 > ko\ ;
+婦 > fu\ ;
+婢 > hi\ ;
+婉 > en\ ;
+訴 > so\ ;
+訝 > ga\ ;
+記 > ki\ ;
+爐 > ro\ ;
+營 > ei\ ;
+妬 > to\ ;
+妓 > ki\ ;
+見 > mi\ ;
+如 > jo\ ;
+女 > jo\ ;
+襦 > ju\ ;
+奧 > ou\ ;
+奈 > na\ ;
+奇 > ki\ ;
+央 > ou\ ;
+太 > ta\ ;
+無 > mu\ ;
+褞 > on\ ;
+多 > ta\ ;
+褓 > ho\ ;
+裳 > mo\ ;
+裡 > ri\ ;
+烟 > en\ ;
+補 > ho\ ;
+墮 > da\ ;
+被 > hi\ ;
+衰 > sa\ ;
+灯 > hi\ ;
+火 > hi\ ;
+衞 > ei\ ;
+衛 > ei\ ;
+塗 > to\ ;
+堵 > to\ ;
+場 > ba\ ;
+瀬 > se\ ;
+堕 > da\ ;
+蟲 > ki\ ;
+濡 > ju\ ;
+螺 > ra\ ;
+坐 > za\ ;
+圖 > to\ ;
+演 > en\ ;
+圓 > en\ ;
+圃 > ho\ ;
+固 > ko\ ;
+図 > zu\ ;
+因 > in\ ;
+黄 > ki\ ;
+溯 > so\ ;
+蚊 > ka\ ;
+鹽 > en\ ;
+湯 > yu\ ;
+温 > on\ ;
+嘩 > ka\ ;
+渡 > to\ ;
+鸚 > ou\ ;
+嘔 > ou\ ;
+蘇 > so\ ;
+鷺 > ro\ ;
+淹 > en\ ;
+淫 > in\ ;
+嗟 > aa\ ;
+藍 > ai\ ;
+涸 > ko\ ;
+喪 > mo\ ;
+喜 > ki\ ;
+浮 > fu\ ;
+鵡 > bu\ ;
+派 > ha\ ;
+洩 > ei\ ;
+泳 > ei\ ;
+哩 > ri\ ;
+員 > in\ ;
+泄 > ei\ ;
+哀 > ai\ ;
+沿 > en\ ;
+治 > ji\ ;
+沙 > sa\ ;
+和 > wa\ ;
+汽 > ki\ ;
+呼 > ko\ ;
+汰 > ta\ ;
+呪 > ju\ ;
+葡 > ho\ ;
+汝 > jo\ ;
+葉 > ha\ ;
+呉 > go\ ;
+吾 > go\ ;
+永 > ei\ ;
+氷 > hi\ ;
+否 > hi\ ;
+氣 > ki\ ;
+気 > ki\ ;
+吐 > to\ ;
+吏 > ri\ ;
+名 > na\ ;
+可 > ka\ ;
+菜 > na\ ;
+毛 > ke\ ;
+叙 > jo\ ;
+毘 > hi\ ;
+受 > ju\ ;
+比 > hi\ ;
+菓 > ka\ ;
+毆 > ou\ ;
+莫 > bo\ ;
+歸 > ki\ ;
+荷 > ni\ ;
+魯 > ro\ ;
+危 > ki\ ;
+歯 > ha\ ;
+歩 > ho\ ;
+武 > bu\ ;
+歟 > yo\ ;
+魘 > en\ ;
+魔 > ma\ ;
+卑 > hi\ ;
+歐 > ou\ ;
+魅 > mi\ ;
+茹 > jo\ ;
+欺 > gi\ ;
+欷 > ki\ ;
+化 > ka\ ;
+匍 > ho\ ;
+茄 > ka\ ;
+茂 > mo\ ;
+英 > ei\ ;
+苦 > ku\ ;
+苛 > ka\ ;
+務 > mu\ ;
+苑 > en\ ;
+芽 > me\ ;
+努 > do\ ;
+加 > ka\ ;
+檐 > en\ ;
+檎 > go\ ;
+驅 > ku\ ;
+樹 > ju\ ;
+利 > ri\ ;
+模 > mo\ ;
+舞 > bu\ ;
+與 > yo\ ;
+出 > de\ ;
+臥 > ga\ ;
+駈 > ku\ ;
+駆 > ku\ ;
+駄 > ta\ ;
+冶 > ya\ ;
+膚 > fu\ ;
+榎 > ka\ ;
+具 > gu\ ;
+其 > ki\ ;
+饑 > ki\ ;
+腑 > fu\ ;
+兒 > ji\ ;
+腐 > fu\ ;
+児 > ji\ ;
+餘 > yo\ ;
+餓 > ga\ ;
+儀 > gi\ ;
+價 > ka\ ;
+飲 > in\ ;
+飮 > in\ ;
+飢 > ki\ ;
+胡 > ko\ ;
+僞 > gi\ ;
+飛 > hi\ ;
+棄 > ki\ ;
+備 > bi\ ;
+顧 > ko\ ;
+做 > sa\ ;
+顆 > ka\ ;
+案 > an\ ;
+假 > ka\ ;
+根 > ne\ ;
+倶 > ku\ ;
+値 > ne\ ;
+倚 > ki\ ;
+頗 > ha\ ;
+預 > yo\ ;
+個 > ko\ ;
+栄 > ei\ ;
+韻 > in\ ;
+査 > sa\ ;
+音 > ne\ ;
+翳 > ei\ ;
+俯 > fu\ ;
+保 > ho\ ;
+羽 > wa\ ;
+架 > ka\ ;
+枯 > ko\ ;
+侮 > bu\ ;
+義 > gi\ ;
+果 > ka\ ;
+侘 > ta\ ;
+美 > bi\ ;
+羅 > ra\ ;
+罹 > ri\ ;
+罵 > ba\ ;
+靡 > hi\ ;
+非 > hi\ ;
+余 > yo\ ;
+青 > ao\ ;
+佐 > sa\ ;
+似 > ni\ ;
+未 > mi\ ;
+木 > ki\ ;
+期 > ki\ ;
+伎 > gi\ ;
+伍 > go\ ;
+企 > ki\ ;
+曳 > ei\ ;
+離 > ri\ ;
+代 > yo\ ;
+付 > fu\ ;
+隱 > in\ ;
+暮 > bo\ ;
+隠 > in\ ;
+些 > sa\ ;
+暗 > an\ ;
+五 > go\ ;
+互 > go\ ;
+云 > un\ ;
+二 > ni\ ;
+予 > yo\ ;
+繻 > ju\ ;
+普 > fu\ ;
+除 > jo\ ;
+院 > in\ ;
+九 > ku\ ;
+附 > fu\ ;
+乃 > no\ ;
+陀 > da\ ;
+丹 > ni\ ;
+是 > ze\ ;
+映 > ei\ ;
+世 > yo\ ;
+与 > yo\ ;
+不 > fu\ ;
+三 > mi\ ;
+旺 > ou\ ;
+日 > hi\ ;
+既 > ki\ ;
+綺 > ki\ ;
+斗 > to\ ;
+間 > ma\ ;
+斐 > hi\ ;
+敷 > fu\ ;
+素 > so\ ;
+紀 > ki\ ;
+擬 > gi\ ;
+撫 > bu\ ;
+摩 > ma\ ;
+籔 > su\ ;
+簿 > bo\ ;
+簷 > en\ ;
+措 > so\ ;
+掩 > en\ ;
+掛 > ka\ ;
+授 > ju\ ;
+箇 > ka\ ;
+捗 > ho\ ;
+捕 > ho\ ;
+挨 > ai\ ;
+符 > fu\ ;
+持 > ji\ ;
+鋭 > ei\ ;
+鋪 > ho\ ;
+押 > ou\ ;
+窺 > ki\ ;
+窶 > ku\ ;
+披 > hi\ ;
+抒 > jo\ ;
+批 > hi\ ;
+扶 > fu\ ;
+打 > da\ ;
+穏 > on\ ;
+手 > te\ ;
+穂 > ho\ ;
+稼 > ka\ ;
+戸 > to\ ;
+戲 > gi\ ;
+戯 > gi\ ;
+懼 > ku\ ;
+秘 > hi\ ;
+科 > ka\ ;
+野 > no\ ;
+里 > ri\ ;
+祖 > so\ ;
+祕 > hi\ ;
+慕 > bo\ ;
+祈 > ki\ ;
+慇 > in\ ;
+愛 > ai\ ;
+愚 > gu\ ;
+愉 > yu\ ;
+愈 > yu\ ;
+惹 > ja\ ;
+部 > bu\ ;
+磨 > ma\ ;
+悸 > ki\ ;
+悲 > hi\ ;
+那 > da\ ;
+悟 > go\ ;
+避 > hi\ ;
+恩 > on\ ;
+過 > ka\ ;
+運 > un\ ;
+破 > ha\ ;
+怨 > en\ ;
+怖 > fu\ ;
+途 > to\ ;
+怒 > do\ ;
+龢 > ka\ ;
+龜 > ki\ ;
+龑 > en\ ;
+齮 > gi\ ;
+齟 > so\ ;
+齖 > ga\ ;
+齇 > sa\ ;
+齆 > ou\ ;
+鼽 > gu\ ;
+鼹 > en\ ;
+鼴 > en\ ;
+鼯 > go\ ;
+鼔 > ko\ ;
+鼉 > ta\ ;
+黼 > ho\ ;
+黸 > ro\ ;
+黯 > an\ ;
+黭 > en\ ;
+黤 > en\ ;
+黡 > en\ ;
+黟 > ei\ ;
+麾 > ki\ ;
+麼 > ma\ ;
+麸 > fu\ ;
+麬 > fu\ ;
+麤 > so\ ;
+麒 > ki\ ;
+麌 > gu\ ;
+麋 > bi\ ;
+麄 > so\ ;
+麂 > ki\ ;
+麁 > so\ ;
+鹺 > sa\ ;
+鹵 > ro\ ;
+鹟 > ou\ ;
+鹀 > bu\ ;
+鸝 > ri\ ;
+鸜 > ku\ ;
+鸕 > ro\ ;
+鸒 > yo\ ;
+鷰 > en\ ;
+鷗 > ou\ ;
+鷖 > ei\ ;
+鷃 > an\ ;
+鶲 > ou\ ;
+鶯 > ou\ ;
+鶘 > ko\ ;
+鶕 > an\ ;
+鵺 > ya\ ;
+鵷 > en\ ;
+鵯 > hi\ ;
+鵪 > an\ ;
+鵞 > ga\ ;
+鵝 > ga\ ;
+鵐 > bu\ ;
+鴽 > jo\ ;
+鴼 > ro\ ;
+鴳 > an\ ;
+鴯 > ji\ ;
+鴣 > ko\ ;
+鴝 > ku\ ;
+鴛 > en\ ;
+鴕 > ta\ ;
+鴑 > do\ ;
+鳶 > en\ ;
+鳬 > fu\ ;
+鳧 > fu\ ;
+鳁 > on\ ;
+鲏 > hi\ ;
+鲊 > sa\ ;
+鱫 > ai\ ;
+鰢 > ba\ ;
+鰛 > on\ ;
+鰖 > ta\ ;
+鰋 > en\ ;
+鯡 > hi\ ;
+鯝 > ko\ ;
+鯋 > sa\ ;
+鯆 > ho\ ;
+鮻 > sa\ ;
+鮬 > ho\ ;
+鮟 > an\ ;
+鮞 > ji\ ;
+鮍 > hi\ ;
+鮇 > bi\ ;
+鮀 > ta\ ;
+魲 > ro\ ;
+魮 > hi\ ;
+魦 > sa\ ;
+魕 > ki\ ;
+魏 > gi\ ;
+魌 > ki\ ;
+鬽 > bi\ ;
+鬹 > ki\ ;
+鬶 > ki\ ;
+鬴 > fu\ ;
+鬐 > ki\ ;
+鬍 > ko\ ;
+鬌 > ta\ ;
+鬁 > ri\ ;
+髿 > sa\ ;
+髽 > sa\ ;
+髵 > ji\ ;
+髲 > hi\ ;
+髬 > hi\ ;
+髗 > ro\ ;
+髃 > gu\ ;
+髀 > hi\ ;
+骻 > ka\ ;
+驪 > ri\ ;
+驥 > ki\ ;
+驊 > ka\ ;
+騾 > ra\ ;
+騧 > ka\ ;
+騤 > ki\ ;
+騢 > ka\ ;
+騖 > bu\ ;
+騑 > hi\ ;
+騏 > ki\ ;
+騎 > ki\ ;
+駰 > in\ ;
+駬 > ji\ ;
+駡 > ba\ ;
+駞 > da\ ;
+駝 > ta\ ;
+駙 > fu\ ;
+駕 > ga\ ;
+駓 > hi\ ;
+駑 > do\ ;
+馿 > ro\ ;
+馱 > ta\ ;
+馟 > to\ ;
+馗 > ki\ ;
+饠 > ra\ ;
+饜 > en\ ;
+饋 > ki\ ;
+饇 > yo\ ;
+饂 > un\ ;
+餽 > ki\ ;
+餼 > ki\ ;
+餲 > ei\ ;
+餬 > ko\ ;
+餫 > un\ ;
+餡 > an\ ;
+餜 > ka\ ;
+餔 > ho\ ;
+餇 > to\ ;
+飫 > yo\ ;
+颶 > ku\ ;
+颫 > fu\ ;
+颕 > ei\ ;
+顱 > ro\ ;
+顬 > ju\ ;
+顗 > gi\ ;
+頵 > in\ ;
+頴 > ei\ ;
+頫 > fu\ ;
+頎 > ki\ ;
+頍 > gi\ ;
+韺 > ei\ ;
+韵 > in\ ;
+韞 > on\ ;
+韗 > un\ ;
+鞿 > ki\ ;
+鞾 > ka\ ;
+鞼 > ki\ ;
+鞵 > ai\ ;
+鞍 > an\ ;
+鞋 > ai\ ;
+鞅 > ou\ ;
+鞁 > hi\ ;
+靿 > ou\ ;
+靻 > so\ ;
+靷 > in\ ;
+靶 > ha\ ;
+靉 > ai\ ;
+霪 > in\ ;
+霣 > in\ ;
+霏 > hi\ ;
+需 > ju\ ;
+雺 > mu\ ;
+雅 > ga\ ;
+隳 > ki\ ;
+隩 > ou\ ;
+隘 > ai\ ;
+隕 > in\ ;
+隐 > in\ ;
+隋 > ta\ ;
+隂 > in\ ;
+隁 > en\ ;
+陻 > in\ ;
+陴 > hi\ ;
+陒 > ki\ ;
+陏 > ta\ ;
+陂 > ha\ ;
+陁 > ta\ ;
+阽 > en\ ;
+阼 > so\ ;
+阻 > so\ ;
+阥 > in\ ;
+阜 > fu\ ;
+阇 > to\ ;
+闞 > kn\ ;
+闚 > ki\ ;
+闍 > to\ ;
+闉 > in\ ;
+閻 > en\ ;
+閹 > en\ ;
+閭 > ro\ ;
+閟 > hi\ ;
+镾 > bi\ ;
+鑼 > ra\ ;
+鑪 > ro\ ;
+鐖 > ki\ ;
+鏖 > ou\ ;
+鏍 > ra\ ;
+鏁 > sa\ ;
+鎶 > ka\ ;
+鎵 > ka\ ;
+鎣 > ei\ ;
+鎈 > sa\ ;
+鎂 > bi\ ;
+鎁 > ya\ ;
+鍺 > ta\ ;
+鍜 > ka\ ;
+鍍 > to\ ;
+鍈 > ei\ ;
+錻 > bu\ ;
+錮 > ko\ ;
+錤 > ki\ ;
+錡 > ki\ ;
+錍 > hi\ ;
+鋺 > en\ ;
+鋰 > ri\ ;
+鋣 > ya\ ;
+鋘 > ka\ ;
+鋆 > in\ ;
+銼 > sa\ ;
+銳 > ei\ ;
+銨 > an\ ;
+銟 > sa\ ;
+鉠 > ei\ ;
+鉍 > hi\ ;
+鈹 > hi\ ;
+鈷 > ko\ ;
+鈩 > ro\ ;
+鈦 > ta\ ;
+鈥 > ka\ ;
+鈝 > in\ ;
+鈘 > gi\ ;
+鈇 > hu\ ;
+鈆 > en\ ;
+鈀 > ha\ ;
+釹 > jo\ ;
+釷 > to\ ;
+釵 > sa\ ;
+釡 > fu\ ;
+釐 > ri\ ;
+醿 > bi\ ;
+醼 > en\ ;
+醨 > ri\ ;
+醡 > sa\ ;
+醞 > un\ ;
+醖 > un\ ;
+醐 > ko\ ;
+醃 > en\ ;
+酺 > ho\ ;
+酴 > to\ ;
+酳 > in\ ;
+酥 > so\ ;
+酤 > ko\ ;
+酢 > su\ ;
+酡 > ta\ ;
+酗 > ku\ ;
+酓 > en\ ;
+酈 > ri\ ;
+鄱 > ha\ ;
+鄢 > en\ ;
+鄠 > ko\ ;
+鄜 > hu\ ;
+鄖 > un\ ;
+鄈 > ki\ ;
+鄆 > un\ ;
+鄅 > gu\ ;
+郿 > bi\ ;
+郾 > en\ ;
+郶 > bu\ ;
+郫 > hi\ ;
+郢 > ei\ ;
+郛 > fu\ ;
+郙 > hu\ ;
+邳 > hi\ ;
+邐 > ri\ ;
+邏 > ra\ ;
+邇 > ji\ ;
+遡 > so\ ;
+遐 > ka\ ;
+逾 > yu\ ;
+逺 > en\ ;
+逵 > ki\ ;
+逘 > gi\ ;
+逋 > ho\ ;
+迱 > ta\ ;
+迬 > ou\ ;
+迩 > ji\ ;
+迕 > go\ ;
+迓 > ga\ ;
+运 > un\ ;
+迋 > ou\ ;
+辤 > ji\ ;
+辝 > ji\ ;
+轤 > ro\ ;
+轡 > hi\ ;
+轝 > yo\ ;
+轜 > ji\ ;
+轅 > en\ ;
+轀 > on\ ;
+輸 > yu\ ;
+輠 > ka\ ;
+輔 > fu\ ;
+輅 > ro\ ;
+輀 > ji\ ;
+軻 > ka\ ;
+軱 > ko\ ;
+軮 > ou\ ;
+軌 > ki\ ;
+軃 > ta\ ;
+軀 > ku\ ;
+躲 > ta\ ;
+躱 > ta\ ;
+躯 > ku\ ;
+躛 > ei\ ;
+躗 > ei\ ;
+蹞 > ki\ ;
+蹉 > sa\ ;
+踽 > ku\ ;
+踷 > ta\ ;
+踦 > ki\ ;
+踠 > en\ ;
+踑 > ki\ ;
+跿 > to\ ;
+跽 > ki\ ;
+跺 > ta\ ;
+跬 > ki\ ;
+跨 > ko\ ;
+跥 > ta\ ;
+跗 > fu\ ;
+跔 > ku\ ;
+跏 > ka\ ;
+跎 > ta\ ;
+跇 > ei\ ;
+跂 > ki\ ;
+趺 > fu\ ;
+赮 > ka\ ;
+赟 > in\ ;
+赑 > hi\ ;
+贏 > ei\ ;
+贇 > in\ ;
+賻 > fu\ ;
+賦 > fu\ ;
+賏 > ei\ ;
+賈 > ko\ ;
+賂 > ro\ ;
+賁 > hi\ ;
+賀 > ga\ ;
+貳 > ni\ ;
+貮 > ni\ ;
+貔 > hi\ ;
+貐 > yu\ ;
+貍 > ri\ ;
+豾 > hi\ ;
+豼 > hi\ ;
+豭 > ka\ ;
+豨 > ki\ ;
+豝 > ha\ ;
+豙 > gi\ ;
+豗 > ka\ ;
+豔 > en\ ;
+豓 > en\ ;
+豎 > ju\ ;
+豌 > en\ ;
+豈 > ki\ ;
+谺 > ka\ ;
+讔 > in\ ;
+讏 > ei\ ;
+讌 > en\ ;
+讆 > ei\ ;
+讄 > ru\ ;
+譭 > ki\ ;
+譜 > fu\ ;
+譒 > ha\ ;
+譏 > ki\ ;
+譌 > ka\ ;
+譆 > ki\ ;
+譃 > ku\ ;
+譁 > ka\ ;
+謼 > ko\ ;
+謳 > ou\ ;
+謨 > bo\ ;
+謌 > ka\ ;
+諳 > an\ ;
+諱 > ki\ ;
+諭 > yu\ ;
+諛 > yu\ ;
+諆 > ki\ ;
+誹 > hi\ ;
+誧 > ho\ ;
+誣 > fu\ ;
+誒 > ki\ ;
+誐 > ga\ ;
+誋 > ki\ ;
+誀 > ji\ ;
+詭 > ki\ ;
+詫 > ta\ ;
+詡 > ku\ ;
+詠 > ei\ ;
+詛 > so\ ;
+詖 > hi\ ;
+詑 > ta\ ;
+詐 > sa\ ;
+詍 > ei\ ;
+詈 > ri\ ;
+詁 > ko\ ;
+訶 > ka\ ;
+訯 > sa\ ;
+訏 > ku\ ;
+訃 > fu\ ;
+觭 > ki\ ;
+觚 > ko\ ;
+觕 > so\ ;
+覼 > ra\ ;
+覶 > ra\ ;
+覰 > so\ ;
+覬 > ki\ ;
+覩 > to\ ;
+覦 > yu\ ;
+覙 > ra\ ;
+規 > ki\ ;
+覊 > ki\ ;
+覉 > ki\ ;
+覇 > ha\ ;
+襣 > hi\ ;
+褵 > ri\ ;
+褲 > ko\ ;
+褨 > sa\ ;
+褕 > yu\ ;
+裹 > ka\ ;
+裷 > en\ ;
+裨 > hi\ ;
+裟 > sa\ ;
+裔 > ei\ ;
+裀 > in\ ;
+袽 > jo\ ;
+袮 > ne\ ;
+袙 > ha\ ;
+袈 > ka\ ;
+袁 > en\ ;
+衹 > ki\ ;
+衢 > ku\ ;
+衚 > ko\ ;
+衍 > en\ ;
+衈 > ji\ ;
+蠹 > to\ ;
+蠱 > ko\ ;
+蠧 > to\ ;
+蠕 > da\ ;
+蠑 > ei\ ;
+蠃 > ra\ ;
+蟫 > in\ ;
+蟣 > ki\ ;
+蟢 > ki\ ;
+螾 > in\ ;
+螞 > ba\ ;
+螘 > gi\ ;
+蝸 > ka\ ;
+蝴 > ko\ ;
+蝯 > en\ ;
+蝝 > en\ ;
+蝘 > en\ ;
+蝓 > yu\ ;
+蝌 > ka\ ;
+蜿 > en\ ;
+蜾 > ka\ ;
+蜱 > hi\ ;
+蜞 > ki\ ;
+蜚 > hi\ ;
+蜒 > en\ ;
+蜎 > en\ ;
+蜊 > ri\ ;
+蜉 > fu\ ;
+蜈 > go\ ;
+蜅 > hu\ ;
+蛾 > ga\ ;
+蛄 > ko\ ;
+蚹 > hu\ ;
+蚵 > ka\ ;
+蚭 > ji\ ;
+蚨 > hu\ ;
+蚜 > ka\ ;
+蚚 > ki\ ;
+蚓 > in\ ;
+蚑 > ki\ ;
+蚍 > hi\ ;
+虺 > ki\ ;
+虧 > ki\ ;
+虝 > ko\ ;
+虘 > sa\ ;
+虖 > ko\ ;
+虍 > ko\ ;
+虂 > ro\ ;
+虁 > ki\ ;
+蘿 > ra\ ;
+蘼 > bi\ ;
+蘺 > ri\ ;
+蘶 > gi\ ;
+蘧 > ku\ ;
+蘡 > ou\ ;
+蘙 > ei\ ;
+蘓 > so\ ;
+蘑 > ma\ ;
+蘎 > ki\ ;
+蘊 > un\ ;
+蘄 > ki\ ;
+藻 > mo\ ;
+藹 > ai\ ;
+藴 > un\ ;
+藦 > ba\ ;
+薿 > gi\ ;
+薷 > ju\ ;
+薗 > en\ ;
+薆 > ai\ ;
+薀 > un\ ;
+蕷 > yo\ ;
+蕰 > un\ ;
+蕠 > jo\ ;
+蕜 > hi\ ;
+蕓 > un\ ;
+蔴 > ma\ ;
+蔬 > so\ ;
+蔫 > en\ ;
+蔢 > ha\ ;
+蓙 > za\ ;
+蓖 > hi\ ;
+蓏 > ra\ ;
+蓌 > sa\ ;
+蓊 > ou\ ;
+蒽 > on\ ;
+蒱 > ho\ ;
+蒩 > so\ ;
+蒞 > ri\ ;
+蒕 > un\ ;
+葭 > ka\ ;
+葫 > ko\ ;
+葩 > ha\ ;
+葊 > an\ ;
+葆 > ho\ ;
+萸 > yu\ ;
+萵 > wa\ ;
+萓 > gi\ ;
+萆 > hi\ ;
+萁 > ki\ ;
+菸 > en\ ;
+菴 > an\ ;
+菲 > hi\ ;
+菰 > ko\ ;
+菠 > ha\ ;
+菟 > to\ ;
+菏 > ka\ ;
+菇 > ko\ ;
+菀 > en\ ;
+莵 > to\ ;
+莪 > ga\ ;
+莩 > hu\ ;
+莝 > sa\ ;
+莚 > en\ ;
+莎 > sa\ ;
+莆 > hu\ ;
+莅 > ri\ ;
+荼 > to\ ;
+荰 > to\ ;
+荔 > ri\ ;
+荂 > ka\ ;
+茵 > in\ ;
+茲 > ji\ ;
+茰 > yu\ ;
+茣 > go\ ;
+茘 > ri\ ;
+苽 > ko\ ;
+苻 > fu\ ;
+苴 > so\ ;
+苤 > hi\ ;
+芾 > hi\ ;
+芺 > ou\ ;
+芰 > ki\ ;
+芭 > ba\ ;
+芪 > ki\ ;
+芦 > ro\ ;
+芙 > fu\ ;
+芘 > hi\ ;
+芔 > ki\ ;
+芑 > ki\ ;
+芈 > ba\ ;
+艷 > en\ ;
+艪 > ro\ ;
+艤 > gi\ ;
+艣 > ro\ ;
+艖 > sa\ ;
+艅 > yo\ ;
+艃 > ri\ ;
+舸 > ka\ ;
+舮 > ro\ ;
+舗 > ho\ ;
+舖 > ho\ ;
+舒 > jo\ ;
+舁 > yo\ ;
+臾 > yu\ ;
+臞 > ku\ ;
+臝 > ra\ ;
+臙 > en\ ;
+臂 > hi\ ;
+膴 > ko\ ;
+膩 > ji\ ;
+膆 > so\ ;
+腴 > yu\ ;
+腡 > ra\ ;
+腗 > hi\ ;
+腓 > hi\ ;
+脾 > hi\ ;
+脵 > ko\ ;
+脯 > ho\ ;
+脞 > sa\ ;
+脜 > ju\ ;
+胹 > ji\ ;
+胯 > ko\ ;
+胭 > in\ ;
+胙 > so\ ;
+胕 > hu\ ;
+胍 > ko\ ;
+胊 > ku\ ;
+肹 > hi\ ;
+肞 > sa\ ;
+肚 > to\ ;
+聭 > ki\ ;
+耺 > un\ ;
+耶 > ya\ ;
+耡 > jo\ ;
+耞 > ka\ ;
+耙 > ha\ ;
+耘 > un\ ;
+耏 > ji\ ;
+耍 > sa\ ;
+而 > ji\ ;
+耆 > ki\ ;
+翬 > ki\ ;
+翡 > hi\ ;
+羲 > gi\ ;
+羭 > yu\ ;
+羖 > ko\ ;
+羋 > ba\ ;
+羈 > ki\ ;
+羇 > ki\ ;
+羆 > hi\ ;
+罷 > hi\ ;
+罨 > an\ ;
+罦 > hu\ ;
+罟 > ko\ ;
+罛 > ro\ ;
+罘 > fu\ ;
+罏 > ro\ ;
+罌 > ou\ ;
+罃 > ou\ ;
+缻 > fu\ ;
+纓 > ei\ ;
+纑 > ro\ ;
+繧 > un\ ;
+繥 > ki\ ;
+繄 > ei\ ;
+縻 > bi\ ;
+縷 > ru\ ;
+縯 > en\ ;
+縭 > ri\ ;
+縜 > in\ ;
+縕 > un\ ;
+縊 > ei\ ;
+縈 > ei\ ;
+縀 > ka\ ;
+緣 > en\ ;
+緋 > hi\ ;
+綬 > ju\ ;
+綦 > ki\ ;
+綞 > ta\ ;
+綖 > en\ ;
+絮 > jo\ ;
+絪 > in\ ;
+絥 > hi\ ;
+絝 > ku\ ;
+絇 > ku\ ;
+紽 > ta\ ;
+紦 > ha\ ;
+紜 > un\ ;
+紗 > sa\ ;
+紕 > hi\ ;
+糯 > da\ ;
+糢 > bo\ ;
+糜 > bi\ ;
+粿 > ka\ ;
+粫 > ji\ ;
+粐 > ro\ ;
+粏 > ta\ ;
+粆 > sa\ ;
+粃 > hi\ ;
+籹 > jo\ ;
+籲 > yu\ ;
+籮 > ra\ ;
+籬 > ri\ ;
+籝 > ei\ ;
+籚 > ro\ ;
+簸 > ha\ ;
+簬 > ro\ ;
+簣 > ki\ ;
+簠 > hu\ ;
+簔 > sa\ ;
+簑 > sa\ ;
+簋 > ki\ ;
+簄 > ko\ ;
+簂 > ke\ ;
+篶 > en\ ;
+篚 > hi\ ;
+篔 > un\ ;
+箶 > ko\ ;
+箥 > ha\ ;
+箛 > ko\ ;
+箕 > ki\ ;
+箎 > ko\ ;
+筠 > in\ ;
+筎 > jo\ ;
+笴 > ka\ ;
+笳 > ka\ ;
+笯 > do\ ;
+笟 > ko\ ;
+笆 > ha\ ;
+竬 > ku\ ;
+竪 > ju\ ;
+竩 > gi\ ;
+竒 > ki\ ;
+窹 > go\ ;
+窳 > wa\ ;
+窬 > yu\ ;
+窪 > wa\ ;
+窩 > ka\ ;
+窠 > ka\ ;
+窊 > wa\ ;
+穩 > on\ ;
+穥 > yo\ ;
+穢 > ai\ ;
+穖 > ki\ ;
+穎 > ei\ ;
+穌 > so\ ;
+稳 > on\ ;
+稞 > ka\ ;
+稘 > ki\ ;
+稌 > to\ ;
+稃 > hu\ ;
+秧 > ou\ ;
+秠 > hi\ ;
+租 > so\ ;
+秕 > hi\ ;
+禾 > ka\ ;
+禨 > ki\ ;
+禧 > ki\ ;
+禡 > ba\ ;
+禜 > ei\ ;
+禑 > gu\ ;
+禍 > ka\ ;
+禋 > in\ ;
+祻 > ko\ ;
+祺 > ki\ ;
+祜 > ko\ ;
+祚 > so\ ;
+祙 > mi\ ;
+祔 > hu\ ;
+祇 > ki\ ;
+祁 > ki\ ;
+礠 > ji\ ;
+礜 > yo\ ;
+礒 > gi\ ;
+磯 > ki\ ;
+磤 > in\ ;
+磠 > ro\ ;
+磒 > in\ ;
+磋 > sa\ ;
+磁 > ji\ ;
+碼 > ba\ ;
+碬 > ka\ ;
+碤 > ei\ ;
+碕 > ki\ ;
+碔 > bu\ ;
+碆 > ha\ ;
+碁 > go\ ;
+硪 > gi\ ;
+砵 > ou\ ;
+砮 > do\ ;
+砣 > ta\ ;
+砢 > ra\ ;
+砒 > hi\ ;
+砑 > ga\ ;
+砆 > hu\ ;
+矬 > sa\ ;
+矩 > ku\ ;
+矑 > ro\ ;
+瞿 > ku\ ;
+瞽 > ko\ ;
+瞹 > ai\ ;
+瞶 > ki\ ;
+瞖 > ei\ ;
+瞆 > ki\ ;
+睿 > ei\ ;
+睹 > to\ ;
+睱 > ka\ ;
+睢 > ki\ ;
+睎 > ki\ ;
+睊 > en\ ;
+睂 > bi\ ;
+眭 > ki\ ;
+眗 > ku\ ;
+盱 > ku\ ;
+盬 > ko\ ;
+盧 > ro\ ;
+盦 > ou\ ;
+盙 > fu\ ;
+盎 > ou\ ;
+盉 > ka\ ;
+盈 > ei\ ;
+盁 > ei\ ;
+皷 > ko\ ;
+皧 > ai\ ;
+皤 > ha\ ;
+皈 > ki\ ;
+癯 > ku\ ;
+癮 > in\ ;
+癭 > ei\ ;
+癒 > yu\ ;
+癊 > in\ ;
+瘸 > ka\ ;
+瘥 > sa\ ;
+瘟 > on\ ;
+瘞 > ei\ ;
+瘖 > in\ ;
+瘕 > ka\ ;
+瘏 > to\ ;
+瘉 > yu\ ;
+瘀 > yo\ ;
+痼 > ko\ ;
+痹 > hi\ ;
+痲 > ma\ ;
+痱 > hi\ ;
+痧 > sa\ ;
+痤 > sa\ ;
+痢 > ri\ ;
+痡 > ho\ ;
+痞 > hi\ ;
+痔 > ji\ ;
+痄 > sa\ ;
+痂 > ka\ ;
+痀 > ku\ ;
+疿 > hi\ ;
+疤 > ha\ ;
+疜 > ka\ ;
+疕 > hi\ ;
+疏 > so\ ;
+畿 > ki\ ;
+畸 > ki\ ;
+畲 > yo\ ;
+畭 > yo\ ;
+畬 > yo\ ;
+畝 > se\ ;
+畒 > ho\ ;
+畉 > fu\ ;
+畇 > in\ ;
+畆 > ho\ ;
+畀 > hi\ ;
+甫 > ho\ ;
+甖 > ou\ ;
+甒 > bu\ ;
+甌 > ou\ ;
+瓯 > ou\ ;
+瓮 > ou\ ;
+瓠 > ko\ ;
+瓔 > ei\ ;
+瓐 > ro\ ;
+璽 > ji\ ;
+璵 > yo\ ;
+璦 > ai\ ;
+璣 > ki\ ;
+璟 > ei\ ;
+璑 > bu\ ;
+璐 > ro\ ;
+璃 > ri\ ;
+瑳 > sa\ ;
+瑪 > ba\ ;
+瑩 > ei\ ;
+瑣 > sa\ ;
+瑜 > yu\ ;
+瑛 > ei\ ;
+瑚 > ko\ ;
+瑗 > en\ ;
+琶 > ha\ ;
+琵 > bi\ ;
+琰 > en\ ;
+琬 > en\ ;
+琪 > ki\ ;
+琦 > ki\ ;
+琥 > ko\ ;
+琑 > sa\ ;
+琊 > ya\ ;
+珸 > go\ ;
+珷 > bu\ ;
+珴 > ga\ ;
+珱 > ei\ ;
+珥 > ji\ ;
+珝 > ku\ ;
+珂 > ka\ ;
+玻 > ha\ ;
+玞 > hu\ ;
+玘 > ki\ ;
+玆 > ji\ ;
+玀 > ra\ ;
+獼 > bi\ ;
+獹 > ro\ ;
+猨 > en\ ;
+猧 > ka\ ;
+猤 > ki\ ;
+猢 > ko\ ;
+猓 > ka\ ;
+猒 > en\ ;
+猇 > ou\ ;
+狳 > yo\ ;
+狕 > ou\ ;
+狒 > hi\ ;
+狉 > hi\ ;
+狁 > in\ ;
+犧 > gi\ ;
+犓 > su\ ;
+犂 > ri\ ;
+犁 > ri\ ;
+牾 > go\ ;
+牱 > ka\ ;
+牯 > ko\ ;
+牫 > ka\ ;
+牠 > ta\ ;
+牁 > ka\ ;
+爾 > ji\ ;
+爹 > ta\ ;
+爸 > ha\ ;
+爰 > en\ ;
+爬 > ha\ ;
+爓 > en\ ;
+燬 > ki\ ;
+燄 > en\ ;
+熺 > ki\ ;
+熹 > ki\ ;
+熰 > ou\ ;
+熙 > ki\ ;
+熈 > ki\ ;
+熅 > un\ ;
+煦 > ku\ ;
+煕 > ki\ ;
+煐 > ei\ ;
+煇 > ki\ ;
+煆 > ka\ ;
+焸 > ko\ ;
+焱 > en\ ;
+焰 > en\ ;
+焉 > en\ ;
+烓 > ei\ ;
+炬 > ko\ ;
+炉 > ro\ ;
+炁 > ki\ ;
+灩 > en\ ;
+灧 > en\ ;
+灞 > ha\ ;
+灕 > ri\ ;
+灔 > en\ ;
+灎 > en\ ;
+灈 > ku\ ;
+瀴 > ei\ ;
+瀰 > bi\ ;
+瀯 > ei\ ;
+瀠 > ei\ ;
+瀛 > ei\ ;
+瀘 > ro\ ;
+瀇 > ou\ ;
+瀅 > ei\ ;
+濞 > hi\ ;
+濚 > ei\ ;
+澦 > yo\ ;
+澐 > un\ ;
+潽 > ho\ ;
+潞 > ro\ ;
+潙 > ki\ ;
+潁 > ei\ ;
+漦 > gi\ ;
+漚 > ou\ ;
+漓 > ri\ ;
+漊 > ru\ ;
+滹 > ko\ ;
+滸 > ko\ ;
+滷 > ro\ ;
+滬 > ko\ ;
+滏 > hu\ ;
+滋 > ji\ ;
+滊 > ki\ ;
+滃 > ou\ ;
+溳 > un\ ;
+溫 > on\ ;
+溦 > mi\ ;
+溥 > ho\ ;
+溠 > sa\ ;
+溈 > ki\ ;
+湮 > in\ ;
+湄 > bi\ ;
+渼 > bi\ ;
+渶 > ei\ ;
+渮 > ka\ ;
+渣 > sa\ ;
+渝 > yu\ ;
+渕 > en\ ;
+渊 > en\ ;
+渄 > hi\ ;
+淤 > yo\ ;
+淠 > hi\ ;
+淝 > hi\ ;
+淇 > ki\ ;
+涹 > wa\ ;
+涴 > en\ ;
+涂 > to\ ;
+浯 > go\ ;
+洼 > ai\ ;
+洹 > en\ ;
+洳 > jo\ ;
+洱 > ji\ ;
+洏 > ji\ ;
+洎 > ki\ ;
+洇 > in\ ;
+泱 > ou\ ;
+泝 > so\ ;
+泓 > ou\ ;
+泒 > ko\ ;
+沽 > ko\ ;
+沲 > ta\ ;
+沱 > ta\ ;
+沘 > hi\ ;
+沍 > go\ ;
+沇 > en\ ;
+沂 > ki\ ;
+汻 > ko\ ;
+汪 > ou\ ;
+汊 > sa\ ;
+氿 > ki\ ;
+氳 > un\ ;
+氲 > un\ ;
+氨 > an\ ;
+氤 > in\ ;
+气 > ki\ ;
+氍 > ku\ ;
+氂 > ri\ ;
+毹 > yu\ ;
+毦 > ji\ ;
+毖 > hi\ ;
+毋 > bu\ ;
+毅 > ki\ ;
+毁 > ki\ ;
+毀 > ki\ ;
+殹 > ei\ ;
+殷 > in\ ;
+殴 > ou\ ;
+殬 > to\ ;
+殪 > ei\ ;
+殞 > in\ ;
+殂 > so\ ;
+歧 > ki\ ;
+步 > ho\ ;
+歖 > ki\ ;
+欸 > ai\ ;
+欨 > ku\ ;
+欧 > ou\ ;
+欤 > yo\ ;
+欛 > ha\ ;
+欏 > ra\ ;
+櫽 > in\ ;
+櫲 > yo\ ;
+櫨 > ro\ ;
+櫞 > en\ ;
+櫓 > ro\ ;
+櫃 > ki\ ;
+檿 > en\ ;
+檽 > ji\ ;
+檼 > in\ ;
+檱 > ki\ ;
+檥 > gi\ ;
+檟 > ka\ ;
+檛 > ta\ ;
+檃 > in\ ;
+橱 > zu\ ;
+橫 > ou\ ;
+橢 > da\ ;
+橒 > un\ ;
+橆 > bu\ ;
+橅 > bo\ ;
+樻 > ki\ ;
+樲 > ji\ ;
+樝 > sa\ ;
+槻 > ki\ ;
+槥 > ei\ ;
+槎 > sa\ ;
+榿 > ki\ ;
+榮 > ei\ ;
+榨 > sa\ ;
+榡 > so\ ;
+榘 > ku\ ;
+榑 > fu\ ;
+榆 > yu\ ;
+楹 > ei\ ;
+楰 > yu\ ;
+楣 > bi\ ;
+楡 > yu\ ;
+楜 > ko\ ;
+楛 > ko\ ;
+楚 > so\ ;
+楕 > da\ ;
+楂 > sa\ ;
+椻 > en\ ;
+椵 > ka\ ;
+椰 > ya\ ;
+棪 > en\ ;
+棝 > ko\ ;
+棜 > yo\ ;
+棐 > hi\ ;
+棋 > ki\ ;
+棊 > ki\ ;
+梶 > bi\ ;
+梳 > so\ ;
+梭 > sa\ ;
+梩 > ri\ ;
+梧 > go\ ;
+梦 > mu\ ;
+梛 > da\ ;
+梎 > ou\ ;
+桴 > fu\ ;
+桫 > sa\ ;
+桗 > ta\ ;
+桍 > ko\ ;
+栭 > ji\ ;
+栩 > ku\ ;
+栧 > ei\ ;
+柲 > hi\ ;
+柰 > na\ ;
+柯 > ka\ ;
+柧 > ko\ ;
+查 > sa\ ;
+柤 > sa\ ;
+柡 > ei\ ;
+柎 > fu\ ;
+柅 > ji\ ;
+柁 > ta\ ;
+柀 > hi\ ;
+枻 > ei\ ;
+枸 > ku\ ;
+枳 > ki\ ;
+枦 > ro\ ;
+枙 > ga\ ;
+枑 > ko\ ;
+枎 > hu\ ;
+枉 > ou\ ;
+枇 > hi\ ;
+杷 > ha\ ;
+杞 > ko\ ;
+杜 > do\ ;
+杈 > sa\ ;
+朶 > da\ ;
+朵 > da\ ;
+朠 > ei\ ;
+朞 > ki\ ;
+朏 > hi\ ;
+朇 > hi\ ;
+曽 > zo\ ;
+曵 > ei\ ;
+曱 > ou\ ;
+曦 > gi\ ;
+曖 > ai\ ;
+曁 > ki\ ;
+曀 > ei\ ;
+暿 > ki\ ;
+暨 > ki\ ;
+暜 > fu\ ;
+暛 > sa\ ;
+暎 > ei\ ;
+暉 > ki\ ;
+暈 > un\ ;
+暃 > hi\ ;
+暀 > ou\ ;
+晼 > en\ ;
+晻 > an\ ;
+晷 > ki\ ;
+晤 > go\ ;
+晡 > ho\ ;
+晞 > ki\ ;
+晏 > an\ ;
+昹 > ai\ ;
+昷 > on\ ;
+昫 > ku\ ;
+昖 > en\ ;
+昈 > ko\ ;
+昀 > in\ ;
+旿 > go\ ;
+旹 > ji\ ;
+旴 > ku\ ;
+旣 > ki\ ;
+旡 > ki\ ;
+无 > bu\ ;
+旟 > yo\ ;
+旎 > ji\ ;
+旉 > fu\ ;
+旂 > ki\ ;
+斝 > ka\ ;
+敺 > ku\ ;
+敧 > ki\ ;
+敘 > jo\ ;
+敍 > jo\ ;
+敉 > bi\ ;
+攱 > ki\ ;
+攰 > ki\ ;
+攞 > ra\ ;
+攖 > ei\ ;
+擵 > ma\ ;
+擩 > ju\ ;
+撾 > ta\ ;
+播 > ha\ ;
+撝 > ki\ ;
+摸 > mo\ ;
+摣 > sa\ ;
+搽 > ta\ ;
+搵 > on\ ;
+搙 > nu\ ;
+搓 > sa\ ;
+揸 > sa\ ;
+揶 > ya\ ;
+援 > en\ ;
+揮 > ki\ ;
+揜 > en\ ;
+揆 > ki\ ;
+揄 > yu\ ;
+掾 > en\ ;
+掞 > en\ ;
+掎 > ki\ ;
+捼 > da\ ;
+捬 > hu\ ;
+捓 > se\ ;
+捐 > en\ ;
+捂 > go\ ;
+挼 > da\ ;
+挫 > za\ ;
+挪 > da\ ;
+挧 > ku\ ;
+挓 > ta\ ;
+挐 > da\ ;
+按 > an\ ;
+拿 > da\ ;
+拽 > ei\ ;
+拗 > ou\ ;
+拖 > ta\ ;
+拕 > ta\ ;
+拏 > da\ ;
+拊 > fu\ ;
+拇 > bo\ ;
+抷 > hi\ ;
+抳 > ji\ ;
+抎 > un\ ;
+把 > wa\ ;
+找 > ka\ ;
+扯 > ta\ ;
+扠 > sa\ ;
+扈 > ko\ ;
+戽 > ko\ ;
+户 > ko\ ;
+戶 > ko\ ;
+戱 > gi\ ;
+戣 > ki\ ;
+戓 > ka\ ;
+戍 > ju\ ;
+戊 > bo\ ;
+懯 > fu\ ;
+懧 > da\ ;
+懦 > da\ ;
+懡 > ba\ ;
+懕 > en\ ;
+懊 > ou\ ;
+憮 > bu\ ;
+憜 > ta\ ;
+憙 > ki\ ;
+憘 > ki\ ;
+慍 > un\ ;
+慈 > ji\ ;
+愾 > ki\ ;
+愬 > so\ ;
+愫 > so\ ;
+愪 > un\ ;
+愧 > ki\ ;
+愠 > un\ ;
+愔 > in\ ;
+惲 > un\ ;
+惰 > da\ ;
+惧 > ku\ ;
+惢 > sa\ ;
+惎 > ki\ ;
+惈 > ka\ ;
+悱 > hi\ ;
+您 > ji\ ;
+悧 > ri\ ;
+悞 > go\ ;
+悕 > ki\ ;
+悑 > ho\ ;
+悆 > yo\ ;
+悂 > hi\ ;
+悁 > en\ ;
+恗 > ko\ ;
+恕 > jo\ ;
+恑 > ki\ ;
+恃 > ji\ ;
+恁 > in\ ;
+怩 > ji\ ;
+怤 > hu\ ;
+怙 > ko\ ;
+怘 > ko\ ;
+怕 > ha\ ;
+忯 > ki\ ;
+忬 > yo\ ;
+忤 > go\ ;
+忢 > go\ ;
+徽 > ki\ ;
+徍 > ai\ ;
+徂 > so\ ;
+彺 > ou\ ;
+彵 > ta\ ;
+彌 > bi\ ;
+弭 > bi\ ;
+弩 > do\ ;
+弧 > ko\ ;
+弣 > hu\ ;
+弝 > ha\ ;
+弖 > te\ ;
+弍 > ni\ ;
+弇 > en\ ;
+弃 > ki\ ;
+廴 > in\ ;
+廮 > ei\ ;
+廡 > bu\ ;
+廜 > to\ ;
+廚 > zu\ ;
+廕 > in\ ;
+廈 > ka\ ;
+庾 > yu\ ;
+庳 > hi\ ;
+庯 > ho\ ;
+庮 > iu\ ;
+庪 > ki\ ;
+庌 > ga\ ;
+庋 > ki\ ;
+庀 > hi\ ;
+幠 > ko\ ;
+幑 > ki\ ;
+幏 > ka\ ;
+幁 > su\ ;
+帾 > to\ ;
+帔 > hi\ ;
+帑 > do\ ;
+帍 > ko\ ;
+帊 > ha\ ;
+帆 > ho\ ;
+巳 > mi\ ;
+巙 > ki\ ;
+巍 > gi\ ;
+巋 > ki\ ;
+巇 > ki\ ;
+嶷 > gi\ ;
+嶴 > au\ ;
+嶬 > gi\ ;
+嶞 > ta\ ;
+嶓 > ha\ ;
+嶇 > ku\ ;
+嶁 > ru\ ;
+嶀 > to\ ;
+嵳 > sa\ ;
+嵯 > sa\ ;
+嵡 > ou\ ;
+嵟 > ki\ ;
+嵞 > to\ ;
+嵜 > ki\ ;
+嵖 > sa\ ;
+嵋 > bi\ ;
+崳 > yu\ ;
+崦 > en\ ;
+崋 > ka\ ;
+峹 > to\ ;
+峲 > ri\ ;
+峬 > ho\ ;
+峫 > ya\ ;
+峩 > ga\ ;
+峨 > ga\ ;
+峞 > ki\ ;
+峛 > ri\ ;
+峙 > ji\ ;
+峗 > gi\ ;
+峖 > an\ ;
+峔 > bo\ ;
+峏 > ji\ ;
+峊 > hu\ ;
+岻 > ji\ ;
+岵 > ko\ ;
+岴 > ku\ ;
+岯 > hi\ ;
+岮 > ta\ ;
+岨 > so\ ;
+岥 > ha\ ;
+岔 > sa\ ;
+岓 > ki\ ;
+岐 > ki\ ;
+岈 > ka\ ;
+岆 > eu\ ;
+屺 > ki\ ;
+屮 > sa\ ;
+屭 > ki\ ;
+屨 > ku\ ;
+屢 > ru\ ;
+屠 > to\ ;
+屄 > hi\ ;
+屃 > ki\ ;
+屁 > he\ ;
+尹 > in\ ;
+尯 > ki\ ;
+尮 > ta\ ;
+尫 > ou\ ;
+尪 > ou\ ;
+尩 > ou\ ;
+尣 > ou\ ;
+尢 > ou\ ;
+尔 > ji\ ;
+尓 > ji\ ;
+尒 > ji\ ;
+尃 > hu\ ;
+尀 > ha\ ;
+寲 > gi\ ;
+寤 > go\ ;
+寠 > ku\ ;
+寙 > yu\ ;
+寃 > en\ ;
+宱 > sa\ ;
+宐 > gi\ ;
+宎 > eu\ ;
+宄 > ki\ ;
+它 > ta\ ;
+孾 > ei\ ;
+孺 > ju\ ;
+孷 > ri\ ;
+孵 > fu\ ;
+孥 > do\ ;
+孚 > fu\ ;
+孋 > ri\ ;
+嬿 > en\ ;
+嬽 > en\ ;
+嬷 > ba\ ;
+嬴 > ei\ ;
+嬰 > ei\ ;
+嬮 > en\ ;
+嬤 > ba\ ;
+嬡 > ai\ ;
+嬔 > hu\ ;
+嬍 > bi\ ;
+嬀 > ki\ ;
+嫷 > ta\ ;
+嫵 > bu\ ;
+嫴 > ko\ ;
+嫮 > ko\ ;
+嫭 > ko\ ;
+嫫 > bo\ ;
+嫣 > en\ ;
+嫢 > ki\ ;
+嫠 > ri\ ;
+嫛 > ei\ ;
+嫗 > ou\ ;
+嫕 > ei\ ;
+嫊 > so\ ;
+媿 > ki\ ;
+媽 > bo\ ;
+媺 > bi\ ;
+媴 > en\ ;
+媱 > eu\ ;
+媬 > ho\ ;
+媪 > ou\ ;
+媩 > ko\ ;
+媠 > ta\ ;
+媖 > ei\ ;
+媕 > en\ ;
+媐 > ki\ ;
+媎 > so\ ;
+媄 > bi\ ;
+婽 > ka\ ;
+婺 > bu\ ;
+婬 > in\ ;
+婣 > in\ ;
+婟 > ko\ ;
+婓 > hi\ ;
+婐 > wa\ ;
+婍 > ki\ ;
+娸 > ki\ ;
+娰 > ji\ ;
+娯 > go\ ;
+娭 > ki\ ;
+娬 > bu\ ;
+娪 > go\ ;
+娥 > ga\ ;
+娜 > da\ ;
+娛 > go\ ;
+娓 > bi\ ;
+娒 > bo\ ;
+娌 > ri\ ;
+娄 > ru\ ;
+姽 > ki\ ;
+姻 > in\ ;
+姹 > ta\ ;
+姶 > ou\ ;
+姲 > an\ ;
+姱 > ka\ ;
+姬 > ki\ ;
+姥 > bo\ ;
+姝 > su\ ;
+姎 > au\ ;
+姇 > hu\ ;
+姆 > bo\ ;
+姁 > ku\ ;
+姀 > ka\ ;
+妼 > hi\ ;
+妴 > en\ ;
+妮 > ji\ ;
+妥 > da\ ;
+妤 > yo\ ;
+妣 > hi\ ;
+妟 > an\ ;
+妘 > un\ ;
+妒 > to\ ;
+妋 > fu\ ;
+妃 > hi\ ;
+奼 > ta\ ;
+奰 > hi\ ;
+奫 > in\ ;
+奜 > hi\ ;
+奓 > ta\ ;
+奄 > en\ ;
+夿 > ha\ ;
+夸 > ko\ ;
+夶 > hi\ ;
+夵 > en\ ;
+夥 > ka\ ;
+夤 > in\ ;
+夡 > ki\ ;
+夛 > ta\ ;
+夗 > en\ ;
+夔 > ki\ ;
+夓 > ka\ ;
+夎 > sa\ ;
+夃 > ko\ ;
+壽 > ju\ ;
+壺 > ko\ ;
+壩 > ha\ ;
+壡 > ei\ ;
+壛 > en\ ;
+壚 > ro\ ;
+壒 > ai\ ;
+壈 > on\ ;
+壄 > ya\ ;
+墺 > ou\ ;
+墲 > bo\ ;
+墯 > da\ ;
+墍 > ki\ ;
+塸 > ou\ ;
+塧 > ai\ ;
+塕 > ou\ ;
+塑 > so\ ;
+塐 > so\ ;
+塋 > ei\ ;
+塈 > ki\ ;
+堸 > hu\ ;
+堷 > an\ ;
+堶 > ku\ ;
+堳 > bi\ ;
+堰 > en\ ;
+堬 > yu\ ;
+堣 > gu\ ;
+堝 > ka\ ;
+堙 > in\ ;
+堍 > to\ ;
+堌 > ko\ ;
+堁 > ka\ ;
+埼 > ki\ ;
+埵 > ta\ ;
+埯 > en\ ;
+埧 > ku\ ;
+埤 > hi\ ;
+埠 > fu\ ;
+埔 > ho\ ;
+垺 > hu\ ;
+垪 > ha\ ;
+垞 > ta\ ;
+垝 > ki\ ;
+垜 > da\ ;
+垛 > da\ ;
+垀 > ko\ ;
+坿 > fu\ ;
+坷 > ka\ ;
+坳 > au\ ;
+坱 > au\ ;
+坯 > hi\ ;
+坬 > ka\ ;
+坡 > ha\ ;
+坒 > hi\ ;
+圻 > ki\ ;
+圮 > hi\ ;
+圫 > au\ ;
+圗 > to\ ;
+圔 > ou\ ;
+圑 > ho\ ;
+圎 > en\ ;
+囦 > en\ ;
+囙 > in\ ;
+囎 > so\ ;
+囌 > so\ ;
+囉 > ra\ ;
+嚶 > ou\ ;
+嚲 > ta\ ;
+嚱 > ki\ ;
+嚭 > hi\ ;
+嚧 > ro\ ;
+嚥 > en\ ;
+嚟 > ri\ ;
+嚜 > bi\ ;
+嚘 > iu\ ;
+嚕 > ro\ ;
+嚊 > hi\ ;
+嚅 > ju\ ;
+噾 > in\ ;
+噳 > gu\ ;
+噯 > ai\ ;
+噮 > en\ ;
+噫 > aa\ ;
+噕 > ki\ ;
+噐 > ki\ ;
+噅 > ki\ ;
+嘻 > ki\ ;
+嘳 > ki\ ;
+嘰 > ki\ ;
+嘟 > to\ ;
+嘜 > ba\ ;
+嘛 > ma\ ;
+嘙 > ha\ ;
+嘑 > ko\ ;
+嘏 > ka\ ;
+嘉 > ka\ ;
+嗩 > sa\ ;
+嗦 > sa\ ;
+嗏 > sa\ ;
+嗎 > ba\ ;
+嗉 > so\ ;
+嗄 > sa\ ;
+嗂 > eu\ ;
+喻 > yu\ ;
+営 > ei\ ;
+喳 > sa\ ;
+喱 > ri\ ;
+喩 > yu\ ;
+喥 > to\ ;
+喣 > ku\ ;
+喟 > ki\ ;
+喓 > eu\ ;
+喑 > in\ ;
+喎 > ka\ ;
+喂 > ki\ ;
+啤 > hi\ ;
+啝 > ka\ ;
+啚 > hi\ ;
+啘 > en\ ;
+啎 > go\ ;
+唹 > yo\ ;
+唷 > yo\ ;
+唵 > an\ ;
+唲 > ji\ ;
+唭 > ki\ ;
+唬 > ka\ ;
+唔 > go\ ;
+唏 > ki\ ;
+唎 > ri\ ;
+唋 > to\ ;
+唈 > ou\ ;
+唆 > sa\ ;
+唀 > iu\ ;
+哿 > ka\ ;
+哺 > ho\ ;
+哶 > ba\ ;
+哬 > ka\ ;
+哪 > da\ ;
+哧 > ka\ ;
+哦 > ga\ ;
+哥 > ka\ ;
+哉 > ya\ ;
+哇 > ai\ ;
+咼 > ka\ ;
+咻 > ku\ ;
+咪 > bi\ ;
+咩 > bi\ ;
+咥 > ki\ ;
+咤 > ta\ ;
+咡 > ji\ ;
+咜 > ta\ ;
+咖 > ka\ ;
+咕 > ko\ ;
+咑 > da\ ;
+咐 > ho\ ;
+咏 > ei\ ;
+咊 > wa\ ;
+咉 > au\ ;
+咃 > ta\ ;
+咀 > so\ ;
+呿 > ka\ ;
+呸 > hi\ ;
+呶 > do\ ;
+呵 > ka\ ;
+呴 > ku\ ;
+呱 > ko\ ;
+呮 > ki\ ;
+呭 > ei\ ;
+呬 > ki\ ;
+呦 > iu\ ;
+呢 > ji\ ;
+呍 > un\ ;
+呋 > hu\ ;
+呀 > ga\ ;
+吽 > in\ ;
+吴 > go\ ;
+吳 > go\ ;
+吧 > ha\ ;
+吔 > se\ ;
+吓 > ka\ ;
+吒 > ta\ ;
+吁 > ku\ ;
+叹 > iu\ ;
+叵 > ha\ ;
+叧 > ka\ ;
+叡 > ei\ ;
+叚 > ka\ ;
+叆 > ai\ ;
+厴 > en\ ;
+厬 > ki\ ;
+厦 > ka\ ;
+厞 > hi\ ;
+厏 > sa\ ;
+厊 > ka\ ;
+卦 > ka\ ;
+卉 > ki\ ;
+區 > ku\ ;
+匽 > en\ ;
+匼 > an\ ;
+区 > ku\ ;
+匭 > ki\ ;
+匬 > yu\ ;
+匪 > hi\ ;
+匕 > hi\ ;
+匎 > ou\ ;
+匀 > in\ ;
+勻 > in\ ;
+勩 > ei\ ;
+募 > bo\ ;
+勜 > ou\ ;
+勚 > ei\ ;
+劸 > ai\ ;
+劬 > ku\ ;
+劙 > ri\ ;
+劘 > ba\ ;
+劓 > gi\ ;
+剺 > ri\ ;
+剮 > ka\ ;
+剦 > en\ ;
+剡 > en\ ;
+剞 > ki\ ;
+剘 > ki\ ;
+剕 > hi\ ;
+剉 > sa\ ;
+剆 > ra\ ;
+剁 > ta\ ;
+刵 > ji\ ;
+刴 > ta\ ;
+刳 > ko\ ;
+刕 > ri\ ;
+划 > ka\ ;
+刏 > ki\ ;
+刉 > ki\ ;
+凹 > ou\ ;
+几 > ki\ ;
+凞 > ki\ ;
+凒 > gi\ ;
+凐 > in\ ;
+凅 > ko\ ;
+冴 > go\ ;
+冱 > go\ ;
+冨 > fu\ ;
+冤 > en\ ;
+冞 > bi\ ;
+冝 > gi\ ;
+冘 > in\ ;
+冔 > ku\ ;
+冎 > ka\ ;
+冀 > ki\ ;
+兾 > ki\ ;
+兹 > ji\ ;
+兪 > yu\ ;
+兗 > en\ ;
+兔 > to\ ;
+兑 > da\ ;
+兌 > da\ ;
+允 > in\ ;
+儺 > na\ ;
+儸 > ra\ ;
+儞 > ji\ ;
+儛 > bu\ ;
+儗 > gi\ ;
+儒 > ju\ ;
+儍 > sa\ ;
+僾 > ai\ ;
+僱 > ko\ ;
+僟 > ki\ ;
+僛 > ki\ ;
+僖 > ki\ ;
+僃 > bi\ ;
+傿 > en\ ;
+傻 > sa\ ;
+傴 > ku\ ;
+傢 > ka\ ;
+傟 > au\ ;
+傞 > sa\ ;
+傜 > eu\ ;
+傌 > ba\ ;
+傊 > in\ ;
+傅 > fu\ ;
+傃 > so\ ;
+偹 > bi\ ;
+偧 > ta\ ;
+偤 > yu\ ;
+偣 > en\ ;
+偠 > eu\ ;
+偌 > ja\ ;
+偃 > en\ ;
+偀 > ei\ ;
+倻 > ya\ ;
+倵 > bu\ ;
+倮 > ra\ ;
+倠 > ki\ ;
+倛 > ki\ ;
+倇 > en\ ;
+俾 > hi\ ;
+俻 > bi\ ;
+俷 > hi\ ;
+俱 > ku\ ;
+俰 > ka\ ;
+俞 > yu\ ;
+俚 > ri\ ;
+俙 > ki\ ;
+俘 > fu\ ;
+俐 > ri\ ;
+俌 > fu\ ;
+俉 > go\ ;
+俁 > gu\ ;
+侳 > sa\ ;
+侢 > bu\ ;
+侞 > jo\ ;
+侕 > ji\ ;
+侒 > an\ ;
+侎 > bi\ ;
+侌 > in\ ;
+侉 > ka\ ;
+佹 > ki\ ;
+佴 > ji\ ;
+佳 > ka\ ;
+你 > ji\ ;
+佒 > au\ ;
+佈 > ho\ ;
+佁 > ai\ ;
+伾 > hi\ ;
+伲 > ji\ ;
+伱 > ji\ ;
+估 > ko\ ;
+伮 > do\ ;
+伙 > ka\ ;
+伖 > do\ ;
+伕 > hu\ ;
+伌 > ai\ ;
+伃 > yo\ ;
+仵 > ko\ ;
+仳 > hi\ ;
+仨 > sa\ ;
+仛 > ta\ ;
+仆 > fu\ ;
+仅 > hu\ ;
+亹 > bi\ ;
+亸 > ta\ ;
+亱 > ya\ ;
+亓 > ki\ ;
+亊 > ji\ ;
+乵 > en\ ;
+乜 > ba\ ;
+乚 > in\ ;
+乕 > ko\ ;
+乎 > ka\ ;
+么 > eu\ ;
+个 > ka\ ;
+丕 > hi\ ;
+丌 > ki\ ;
+丅 > ka\ ;
+帷 > i\ ;
+異 > i\ ;
+畏 > i\ ;
+尾 > o\ ;
+宇 > u\ ;
+謂 > i\ ;
+爲 > i\ ;
+威 > i\ ;
+委 > i\ ;
+圍 > i\ ;
+囲 > i\ ;
+嗚 > o\ ;
+江 > e\ ;
+汚 > o\ ;
+萎 > i\ ;
+医 > i\ ;
+椅 > i\ ;
+胃 > i\ ;
+偉 > i\ ;
+頤 > i\ ;
+依 > e\ ;
+伊 > i\ ;
+以 > i\ ;
+亞 > a\ ;
+阿 > a\ ;
+緒 > o\ ;
+於 > o\ ;
+維 > i\ ;
+絵 > e\ ;
+移 > i\ ;
+醫 > i\ ;
+慰 > i\ ;
+意 > i\ ;
+惡 > o\ ;
+遺 > i\ ;
+違 > i\ ;
+鷾 > i\ ;
+鷧 > i\ ;
+鵶 > a\ ;
+鵜 > u\ ;
+鰞 > o\ ;
+鰄 > i\ ;
+鮧 > i\ ;
+骬 > u\ ;
+骫 > i\ ;
+骪 > i\ ;
+饐 > i\ ;
+顊 > i\ ;
+頥 > i\ ;
+頉 > i\ ;
+韙 > i\ ;
+韑 > i\ ;
+韋 > i\ ;
+霨 > i\ ;
+雩 > u\ ;
+隖 > o\ ;
+闈 > i\ ;
+閼 > a\ ;
+铔 > a\ ;
+鐿 > i\ ;
+鐚 > a\ ;
+錏 > a\ ;
+銥 > i\ ;
+鉯 > i\ ;
+鈳 > a\ ;
+釪 > u\ ;
+酏 > i\ ;
+鄔 > o\ ;
+邘 > u\ ;
+逶 > i\ ;
+迻 > i\ ;
+迤 > i\ ;
+迆 > i\ ;
+迂 > u\ ;
+貽 > i\ ;
+貤 > i\ ;
+褘 > i\ ;
+袘 > i\ ;
+螱 > i\ ;
+螠 > i\ ;
+螐 > o\ ;
+螉 > o\ ;
+蜼 > i\ ;
+蜲 > i\ ;
+蛜 > i\ ;
+虶 > u\ ;
+蔿 > i\ ;
+葳 > i\ ;
+荽 > i\ ;
+荏 > e\ ;
+茡 > u\ ;
+苢 > i\ ;
+苡 > i\ ;
+芛 > i\ ;
+胰 > i\ ;
+肄 > i\ ;
+緯 > i\ ;
+緭 > i\ ;
+紆 > u\ ;
+簃 > i\ ;
+竽 > u\ ;
+禹 > u\ ;
+禕 > i\ ;
+磈 > i\ ;
+矣 > i\ ;
+盂 > u\ ;
+瘂 > a\ ;
+痿 > i\ ;
+痾 > a\ ;
+痏 > i\ ;
+痍 > i\ ;
+疴 > a\ ;
+瑦 > o\ ;
+瑋 > i\ ;
+瑀 > u\ ;
+珆 > i\ ;
+玗 > u\ ;
+猬 > i\ ;
+猗 > i\ ;
+犄 > i\ ;
+熨 > i\ ;
+煒 > i\ ;
+濰 > i\ ;
+漪 > i\ ;
+湋 > i\ ;
+渭 > i\ ;
+洿 > o\ ;
+洧 > i\ ;
+污 > o\ ;
+汙 > o\ ;
+氬 > a\ ;
+毉 > i\ ;
+歍 > o\ ;
+欹 > i\ ;
+楲 > i\ ;
+椸 > i\ ;
+椏 > a\ ;
+桙 > u\ ;
+柂 > i\ ;
+枱 > i\ ;
+杇 > o\ ;
+杅 > u\ ;
+暐 > i\ ;
+旖 > i\ ;
+敡 > i\ ;
+攺 > i\ ;
+扜 > u\ ;
+扆 > i\ ;
+扅 > i\ ;
+懿 > i\ ;
+愇 > i\ ;
+惟 > i\ ;
+悘 > i\ ;
+恚 > i\ ;
+怡 > i\ ;
+徫 > i\ ;
+彞 > i\ ;
+彝 > i\ ;
+彜 > i\ ;
+彛 > i\ ;
+彚 > i\ ;
+彙 > i\ ;
+弬 > i\ ;
+弙 > o\ ;
+异 > i\ ;
+幃 > i\ ;
+巸 > i\ ;
+已 > i\ ;
+嵨 > o\ ;
+崺 > i\ ;
+崣 > i\ ;
+屙 > a\ ;
+寪 > i\ ;
+孲 > a\ ;
+媦 > i\ ;
+媙 > i\ ;
+婭 > a\ ;
+婀 > a\ ;
+娿 > a\ ;
+娃 > a\ ;
+姨 > i\ ;
+妸 > a\ ;
+壝 > i\ ;
+塢 > o\ ;
+堊 > a\ ;
+埡 > o\ ;
+坨 > i\ ;
+圯 > i\ ;
+圬 > o\ ;
+圩 > u\ ;
+囗 > i\ ;
+噁 > o\ ;
+喴 > i\ ;
+喡 > i\ ;
+啞 > a\ ;
+啊 > a\ ;
+咿 > i\ ;
+咦 > i\ ;
+吚 > i\ ;
+叞 > i\ ;
+匜 > i\ ;
+儰 > i\ ;
+偯 > i\ ;
+偊 > u\ ;
+侇 > i\ ;
+伿 > i\ ;
+亜 > a\ ;
+亏 > u\ ;
+于 > u\ ;
+亄 > i\ ;
+乁 > i\ ;
+丫 > a\ ;
+。 <> '.';
+# End RAW data for converting CJK characters
+
+
+:: katakana-latin ();
+:: hiragana-latin ();
+:: fullwidth-halfwidth ();
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Hebrew_Latin.txt b/src/com/ibm/icu/impl/data/Transliterator_Hebrew_Latin.txt
new file mode 100644
index 0000000..2c50a44
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Hebrew_Latin.txt
@@ -0,0 +1,100 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Hebrew_Latin.txt,v $
+# $Date: 2002/07/26 19:56:55 $
+# $Revision: 1.4 $
+#--------------------------------------------------------------------
+
+# Transliteration table for Hebrew
+# Based on the UNGEGN table at:
+#   http://www.eki.ee/wgrs/rom1_he.pdf
+#
+# Exceptions:
+# - Accents are added to disambiguate letters
+# - Combinations of dagesh, shin/sin dot that produce different
+#   letters are not yet encoded.
+#
+# To test, open:
+#   http://oss.software.ibm.com/cgi-bin/icu/tr
+# Click Edit, paste in this file, Save As hebrew-latin/XXX
+# (where XXX is a username)
+# Now go back to the main window, and try it out.
+# Use hebrew-latin/XXX for Output 1, and (Inverse) for Output 2
+# Paste in hebrew text in Input, and hit Transliterate.
+#
+# For more information, see"
+#   http://oss.software.ibm.com/icu/userguide/Transliteration.html
+
+:: [[:Hebrew:] [\u05B0-\u05B9\u05BB-\u05BC\u05C1-\u05C2\u2135-\u2138̄\u05BF]] ;
+:: nfkd (nfc) ;
+$letterAfter = [:M:]* [:L:] ;
+
+# move longer items here to avoid masking
+
+ח <> ẖ ;
+צ <> ẕ } $letterAfter;
+ץ <> ẕ ;
+ש <> ş ;
+ת <> ţ ;
+
+א <> ʼ ;
+ב <> b ;
+ג <> g ;
+ד <> d ;
+ה <> h ;
+ו <> w ;
+ז <> z ;
+ט <> t ;
+י <> y ;
+כ <> k } $letterAfter;
+ך <> k ;
+ל <> l ;
+מ <> m } $letterAfter;
+ם <> m ; 
+נ <> n  } $letterAfter;
+ן <> n ;
+ס <> s ;
+ע <> ʻ ;
+פ <> p } $letterAfter;
+ף <> p ;
+ק <> q ;
+ר <> r ;
+
+ װ > |  וו; # HEBREW LIGATURE YIDDISH DOUBLE VAV
+ ױ > | וי; # HEBREW LIGATURE YIDDISH VAV YOD
+ ײ > | יי ; # HEBREW LIGATURE YIDDISH DOUBLE YOD
+
+
+ּ <> ̇ ; # dagesh just goes to overdot for now
+ׁ <> ̌ ; # shin dot -> sh
+ׂ <> ̂ ; # sin dot -> s
+
+# points
+ֲ <> à ;
+ָ <> á ;
+ֱ <> è ;
+ֵ <> é ;
+ְ <> ê ;
+ִ <> i ;
+ֹ <> ò ;
+ֻ <> u ;
+
+ַ <> a ;
+ֶ <> e ;
+ֳ <> o ;
+
+\u05BF <>   ̄ ;
+
+# fallbacks
+ק < c ;
+פ < f } $letterAfter;
+ף < f ;
+ז < j ;
+ו < v ;
+כס < x ;
+
+:: (lower);
+:: nfc (nfd) ;
+:: ([[:Latin:] [\u02BB-\u02BC\u0300-\u0302\u0307\u030C\u0327\u0331\u0340-\u0341    ̄ ]]);
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Hiragana_Katakana.txt b/src/com/ibm/icu/impl/data/Transliterator_Hiragana_Katakana.txt
new file mode 100755
index 0000000..e537a69
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Hiragana_Katakana.txt
@@ -0,0 +1,211 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Hiragana_Katakana.txt,v $
+# $Date: 2002/03/02 00:27:27 $
+# $Revision: 1.5 $
+#--------------------------------------------------------------------
+
+# note: a global filter is more efficient, but MUST include all source chars
+:: [\u0000-\u007E \u3001\u3002 \u3099-\u309C \u30A1-\u30FC \uFF61-\uFF9Fー[:Hiragana:] [:Katakana:] [:nonspacing mark:]] ;
+:: NFKC ();
+
+# Hiragana-Katakana
+
+# This is largely a one-to-one mapping, but it has a
+# few kinks:
+
+# 1. The Katakana va/vi/ve/vo (30F7-30FA) have no
+# Hiragana equivalents.  We use Hiragana wa/wi/we/wo
+# (308F-3092) with a voicing mark (3099), which is
+# semantically equivalent.  However, this is a non-
+# roundtripping transformation.
+
+# 2. The Katakana small ka/ke (30F5,30F6) have no
+# Hiragana equiavlents.  We convert them to normal
+# Hiragana ka/ke (304B,3051).  This is a one-way
+# information-losing transformation and precludes
+# round-tripping of 30F5 and 30F6.
+
+# 3. The combining marks 3099-309C are in the Hiragana
+# block, but they apply to Katakana as well, so we
+# leave them untouched.
+
+# 4. The Katakana prolonged sound mark 30FC doubles the
+# preceding vowel.  This is a one-way information-
+# losing transformation from Katakana to Hiragana.
+
+# 5. The Katakana middle dot separates words in foreign
+# expressions; we leave this unmodified.
+
+# The above points preclude successful round-trip
+# transformations of arbitrary input text.  However,
+# they provide naturalistic results that should conform
+# to user expectations.
+
+
+# Combining equivalents va/vi/ve/vo
+わ゙ <> ヷ;
+ゐ゙ <> ヸ;
+ゑ゙ <> ヹ;
+を゙ <> ヺ;
+
+# One-to-one mappings, main block
+# 3041:3094 <> 30A1:30F4
+# 309D,E <> 30FD,E
+ぁ <> ァ;
+あ <> ア;
+ぃ <> ィ;
+い <> イ;
+ぅ <> ゥ;
+う <> ウ;
+ぇ <> ェ;
+え <> エ;
+ぉ <> ォ;
+お <> オ;
+か <> カ;
+が <> ガ;
+き <> キ;
+ぎ <> ギ;
+く <> ク;
+ぐ <> グ;
+け <> ケ;
+げ <> ゲ;
+こ <> コ;
+ご <> ゴ;
+さ <> サ;
+ざ <> ザ;
+し <> シ;
+じ <> ジ;
+す <> ス;
+ず <> ズ;
+せ <> セ;
+ぜ <> ゼ;
+そ <> ソ;
+ぞ <> ゾ;
+た <> タ;
+だ <> ダ;
+ち <> チ;
+ぢ <> ヂ;
+っ <> ッ;
+つ <> ツ;
+づ <> ヅ;
+て <> テ;
+で <> デ;
+と <> ト;
+ど <> ド;
+な <> ナ;
+に <> ニ;
+ぬ <> ヌ;
+ね <> ネ;
+の <> ノ;
+は <> ハ;
+ば <> バ;
+ぱ <> パ;
+ひ <> ヒ;
+び <> ビ;
+ぴ <> ピ;
+ふ <> フ;
+ぶ <> ブ;
+ぷ <> プ;
+へ <> ヘ;
+べ <> ベ;
+ぺ <> ペ;
+ほ <> ホ;
+ぼ <> ボ;
+ぽ <> ポ;
+ま <> マ;
+み <> ミ;
+む <> ム;
+め <> メ;
+も <> モ;
+ゃ <> ャ;
+や <> ヤ;
+ゅ <> ュ;
+ゆ <> ユ;
+ょ <> ョ;
+よ <> ヨ;
+ら <> ラ;
+り <> リ;
+る <> ル;
+れ <> レ;
+ろ <> ロ;
+ゎ <> ヮ;
+わ <> ワ;
+ゐ <> ヰ;
+ゑ <> ヱ;
+を <> ヲ;
+ん <> ン;
+ゔ <> ヴ;
+ゝ <> ヽ;
+ゞ <> ヾ;
+
+# One-way Katakana-Hiragana xform of small K ka/ke to
+# normal H ka/ke.
+か < ヵ;
+け < ヶ;
+
+# Katakana followed by a prolonged sound mark 30FC has
+# its final vowel doubled.  This is a Katakana-Hiragana
+# one-way information-losing transformation.  We
+# include the small Katakana (e.g., small A 3041) and
+# do not distinguish them from their large
+# counterparts.  It doesn't make sense to double a
+# small counterpart vowel as a small Hiragana vowel, so
+# we don't do so.  In natural text this should never
+# occur anyway.  If a 30FC is seen without a preceding
+# vowel sound (e.g., after n 30F3) we do not change it.
+
+### $long = ー;
+
+# The following categories are Hiragana, not Katakana
+# as might be expected, since by the time we get to the
+# 30FC, the preceding character will have already been
+# transformed to Hiragana.
+
+# {The following mechanically generated from the
+# Unicode 3.0 data:}
+
+$xa = [ \
+ぁ あ か が さ ざ \
+た だ な は ば ぱ \
+ま ゃ や ら ゎ わ \
+];
+
+$xi = [ \
+ぃ い き ぎ し じ \
+ち ぢ に ひ び ぴ \
+み り ゐ \
+];
+
+$xu = [ \
+ぅ う く ぐ す ず \
+っ つ づ ぬ ふ ぶ \
+ぷ む ゅ ゆ る ゔ \
+];
+
+$xe = [ \
+ぇ え け げ せ ぜ \
+て で ね へ べ ぺ \
+め れ ゑ \
+];
+
+$xo = [ \
+ぉ お こ ご そ ぞ \
+と ど の ほ ぼ ぽ \
+も ょ よ ろ を \
+];
+
+あ < $xa {ー};
+い < $xi {ー};
+う < $xu {ー};
+え < $xe {ー};
+お < $xo {ー};
+
+:: (NFKC) ;
+
+# note: a global filter is more efficient, but MUST include all source chars!!
+:: ([\u0000-\u007E \u3001\u3002 \u3099-\u309C \u30A1-\u30FC \uFF61-\uFF9Fー[:Hiragana:] [:Katakana:] [:nonspacing mark:]]);
+
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Hiragana_Latin.txt b/src/com/ibm/icu/impl/data/Transliterator_Hiragana_Latin.txt
new file mode 100755
index 0000000..72838d2
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Hiragana_Latin.txt
@@ -0,0 +1,18 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Hiragana_Latin.txt,v $
+# $Date: 2001/11/30 22:21:15 $
+# $Revision: 1.6 $
+#--------------------------------------------------------------------
+
+:: [\u3041-\u3094\u3099\u309D-\u309E\u30AC\u30AE\u30B0\u30B2\u30B4\u30B6\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0\u30D3\u30D6\u30D9\u30DC\u30F4\u30F7-\u30FA\u30FE] ;
+:: NFD ;
+
+:: Hiragana-Katakana;
+:: Katakana-Latin;
+
+:: NFC ;
+:: (Lower) ;
+:: ([',.A-Za-z~\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01ED\u01F0\u01F4-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u0304\u04E2-\u04E3\u04EE-\u04EF\u1E00-\u1E99\u1EA0-\u1EF9\u1FB1\u1FB9\u1FD1\u1FD9\u1FE1\u1FE9\u212A-\u212B]) ;
diff --git a/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Bengali.txt b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Bengali.txt
new file mode 100755
index 0000000..5d4e108
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Bengali.txt
@@ -0,0 +1,134 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_InterIndic_Bengali.txt,v $
+# $Date: 2002/08/14 00:40:58 $
+# $Revision: 1.9 $
+#--------------------------------------------------------------------
+
+# InterIndic-Bengali
+#:: NFD (NFC) ;
+\uE001>\u0981;          # SIGN CANDRABINDU
+\uE002>\u0982;          # SIGN ANUSVARA
+\uE003>\u0983;          # SIGN VISARGA
+\uE005>\u0985;          # LETTER A
+\uE006>\u0986;          # LETTER AA
+\uE007>\u0987;          # LETTER I
+\uE008>\u0988;          # LETTER II
+\uE009>\u0989;          # LETTER U
+\uE00A>\u098A;          # LETTER UU
+\uE00B>\u098B;          # LETTER VOCALIC R
+\uE00C>\u098C;          # LETTER VOCALIC L
+\uE00D>\u098F;          # FALLBACK
+\uE00E>\u098F;          # FALLBACK
+\uE00F>\u098F;          # LETTER E
+\uE010>\u0990;          # LETTER AI
+\uE011>\u0993;          # FALLBACK
+\uE012>\u0993;          # FALLBACK
+\uE013>\u0993;          # LETTER O
+\uE014>\u0994;          # LETTER AU
+\uE015>\u0995;          # LETTER KA
+\uE016>\u0996;          # LETTER KHA
+\uE017>\u0997;          # LETTER GA
+\uE018>\u0998;          # LETTER GHA
+\uE019>\u0999;          # LETTER NGA
+\uE01A>\u099A;          # LETTER CA
+\uE01B>\u099B;          # LETTER CHA
+\uE01C>\u099C;          # LETTER JA
+\uE01D>\u099D;          # LETTER JHA
+\uE01E>\u099E;          # LETTER NYA
+\uE01F>\u099F;          # LETTER TTA
+\uE020>\u09A0;          # LETTER TTHA
+\uE021>\u09A1;          # LETTER DDA
+\uE022>\u09A2;          # LETTER DDHA
+\uE023>\u09A3;          # LETTER NNA
+\uE024>\u09A4;          # LETTER TA
+\uE025>\u09A5;          # LETTER THA
+\uE026>\u09A6;          # LETTER DA
+\uE027>\u09A7;          # LETTER DHA
+\uE028>\u09A8;          # LETTER NA
+\uE029>\u09A8\u09BC;    # REMAP (indicExceptions.txt): \u09a9>\u09a8 = LETTER NNNA>LETTER NA
+\uE02A>\u09AA;          # LETTER PA
+\uE02B>\u09AB;          # LETTER PHA
+\uE02C>\u09AC;          # LETTER BA
+\uE02D>\u09AD;          # LETTER BHA
+\uE02E>\u09AE;          # LETTER MA
+\uE02F>\u09AF;          # LETTER YA
+\uE030>\u09B0;          # LETTER RA
+\uE031>\u09B0\u09BC;    # FALLBACK to RA
+\uE032>\u09B2;          # LETTER LA
+\uE033>\u09B2;          # REMAP (indicExceptions.txt): \u09b3>\u09b2 = LETTER LLA>LETTER LA
+\uE034>\u09B2;          # REMAP (indicExceptions.txt): \u09b4>\u09b2 = LETTER LLLA>LETTER LA
+\uE035>\u09AC;          # REMAP (indicExceptions.txt): \u09b5>\u09ac = LETTER VA>LETTER BA
+\uE036>\u09B6;          # LETTER SHA
+\uE037>\u09B7;          # LETTER SSA
+\uE038>\u09B8;          # LETTER SA
+\uE039>\u09B9;          # LETTER HA
+\uE03C>\u09BC;          # SIGN NUKTA
+\uE03D>;                # FALLBACK BLOW AWAY AVAGRAHA
+\uE03E>\u09BE;          # VOWEL SIGN AA
+\uE03F>\u09BF;          # VOWEL SIGN I
+\uE040>\u09C0;          # VOWEL SIGN II
+\uE041>\u09C1;          # VOWEL SIGN U
+\uE042>\u09C2;          # VOWEL SIGN UU
+\uE043>\u09C3;          # VOWEL SIGN VOCALIC R
+\uE044>\u09C4;          # VOWEL SIGN VOCALIC RR
+\uE045>\u09C7;          # REMAP (indicExceptions.txt): \u09c5>\u09c7 = VOWEL SIGN CANDRA E>VOWEL SIGN E
+\uE046>\u09C7;          # FALLBACK
+\uE047>\u09C7;          # VOWEL SIGN E
+\uE048>\u09C8;          # VOWEL SIGN AI
+\uE049>\u09C7\u09BE;    # REMAP (indicExceptions.txt): \u09c9>\u09cb = VOWEL SIGN CANDRA O>VOWEL SIGN O
+\uE04A>\u09C7\u09BE;    # FALLBACK
+\uE04B>\u09C7\u09BE;    # VOWEL SIGN O
+\uE04C>\u09C7\u09D7;    # VOWEL SIGN AU
+\uE04D>\u09CD;          # SIGN VIRAMA
+\uE050>\u0993\u0982;    #  InterIndic-Bengali: OM
+\ue051>;
+\ue052>;
+\ue053>;
+\ue054>;
+\uE055>;               # UNMAPPED InterIndic-Bengali: LENGTH MARK
+\uE056>\u09C8;          # REMAP (indicExceptions.txt): \u09d6>\u09c8 = AI LENGTH MARK>VOWEL SIGN AI
+\uE057>\u09D7;          # AU LENGTH MARK
+\uE058>\u0995\u09BC;    # FALLBACK
+\uE059>\u0996\u09BC;    # REMAP (indicExceptions.txt): \u09d9>\u0996 = LETTER KHHA>LETTER KHA
+\uE05A>\u0997\u09BC;    # REMAP (indicExceptions.txt): \u09da>\u0997 = LETTER GHHA>LETTER GA
+\uE05B>\u099C\u09BC;    # REMAP (indicExceptions.txt): \u09db>\u099c = LETTER ZA>LETTER JA
+\uE05C>\u09A1\u09BC;    # FALLBACK
+\uE05D>\u09A2\u09BC;    # LETTER RHA
+\uE05E>\u09AB\u09BC;    # REMAP (indicExceptions.txt): \u09de>\u09ab = LETTER FA>LETTER PHA
+\uE05F>\u09AF\u09BC;    # LETTER YYA
+\uE060>\u09E0;          # LETTER VOCALIC RR
+\uE061>\u09E1;          # LETTER VOCALIC LL
+\uE062>\u09E2;          # VOWEL SIGN VOCALIC L
+\uE063>\u09E3;          # VOWEL SIGN VOCALIC LL
+\uE064>\u0964;          # DANDA
+\uE065>\u0965;          # DOUBLE DANDA
+\uE066>\u09E6;          # DIGIT ZERO
+\uE067>\u09E7;          # DIGIT ONE
+\uE068>\u09E8;          # DIGIT TWO
+\uE069>\u09E9;          # DIGIT THREE
+\uE06A>\u09EA;          # DIGIT FOUR
+\uE06B>\u09EB;          # DIGIT FIVE
+\uE06C>\u09EC;          # DIGIT SIX
+\uE06D>\u09ED;          # DIGIT SEVEN
+\uE06E>\u09EE;          # DIGIT EIGHT
+\uE06F>\u09EF;          # DIGIT NINE
+\uE070>\u09F0;          #  UNMAPPED Bengali-InterIndic: LETTER RA WITH MIDDLE DIAGONAL
+\uE071>\u09F1;
+0 > \u09E6;       # FALLBACK FOR TAMIL
+1 > \u09E7;
+\ue072>;
+\ue073>;
+\ue074>;
+
+\ue075>\u09F5;
+\ue076>\u09F6;
+\ue077>\u09F7;
+\ue078>\u09F8;
+\ue079>\u09F9;
+\ue07A>\u09FA;		# ISSHAR
+
+#    :: NFC (NFD) ;
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Devanagari.txt b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Devanagari.txt
new file mode 100755
index 0000000..5435537
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Devanagari.txt
@@ -0,0 +1,159 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_InterIndic_Devanagari.txt,v $
+# $Date: 2002/08/14 00:40:58 $
+# $Revision: 1.8 $
+#--------------------------------------------------------------------
+
+# InterIndic-Devanagari
+#:: NFD (NFC) ; 
+#Rules for Decomposed characters
+ \ue028\ue03c > \u0929;  #\ue029
+ \ue030\ue03c > \u0931;  #\ue031
+ \ue033\ue03c > \u0934;  #\ue034
+ \ue015\ue03c > \u0958;  #\ue058 LETTER QA   (For Urdu)
+ \ue016\ue03c > \u0959;  #\ue059 LETTER KHHA (For Urdu)
+ \ue017\ue03c > \u095a;  #\ue05a LETTER GHHA (For Urdu)
+ \ue01c\ue03c > \u095b;  #\ue05b LETTER ZA   (For Urdu)
+ \ue021\ue03c > \u095c;  #\ue05c LETTER DDDHA (pronounced RRA)
+ \ue022\ue03c > \u095d;  #\ue05d LETTER RHA   (pronounced RRHA)
+ \ue02b\ue03c > \u095e;  #\ue05e LETTER FA
+ \ue02f\ue03c > \u095f;  #\ue05f LETTER YYA
+ 
+ #Decomposed compatibility transliterations
+ \ue012\ue057>\u0914;   # FALLBACK FOR TAMIL AU
+ 0 > \u0966;       # FALLBACK FOR TAMIL
+ 1 > \u0967;
+
+ \ue055>; # FALLBACK BLOW AWAY KANNADA AND TELUGU LENGTH MARK
+ \ue056>; # FALLBACK BLOW AWAY KANNADA AND TELUGU AI LENGTH MARK
+ \ue057>; # FALLBACK BLOW AWAY TAMIL AU LENGTH MARK
+ \ue070>; # FALLBACK BLOW AWAY GURMUKHI 
+ \ue071>; # FALLBACK BLOW AWAY GURMUKHI
+ \ue072>; # FALLBACK BLOW AWAY GURMUKHI
+ \ue073>; # FALLBACK BLOW AWAY GURMUKHI
+ \ue074>; # FALLBACK BLOW AWAY GURMUKHI
+
+
+ \ue001 >  \u0901;  # SIGN CANDRABINDU
+ \ue002 >  \u0902;  # SIGN ANUSVARA
+ \ue003 >  \u0903;  # SIGN VISARGA
+ \ue005 >  \u0905;  # LETTER A
+ \ue006 >  \u0906;  # LETTER AA
+ \ue007 >  \u0907;  # LETTER I
+ \ue008 >  \u0908;  # LETTER II
+ \ue009 >  \u0909;  # LETTER U
+ \ue00a >  \u090a;  # LETTER UU
+ \ue00b >  \u090b;  # LETTER VOCALIC R
+ \ue00c >  \u090c;  # LETTER VOCALIC L
+ \ue00d >  \u090d;  # LETTER CANDRA E (For representing English sounds)
+ \ue00e >  \u090e; # UNMAPPED LETTER SHORT E(For Southern Scripts)
+ #\ue00e >  \u090f;
+ \ue00f >  \u090f;  # LETTER E
+ \ue010 >  \u0910;  # LETTER AI
+ \ue011 >  \u0911;  # LETTER CANDRA O (For representing English sounds)
+ \ue012 >  \u0912; # UNMAPPED LETTER SHORT O (For Southern Scripts)
+ #\ue012 >  \u0913; 
+ \ue013 >  \u0913;  # LETTER O
+ \ue014 >  \u0914;  # LETTER AU
+ \ue015 >  \u0915;  # LETTER KA
+ \ue016 >  \u0916;  # LETTER KHA
+ \ue017 >  \u0917;  # LETTER GA
+ \ue018 >  \u0918;  # LETTER GHA
+ \ue019 >  \u0919;  # LETTER NGA
+ \ue01a >  \u091a;  # LETTER CA
+ \ue01b >  \u091b;  # LETTER CHA
+ \ue01c >  \u091c;  # LETTER JA
+ \ue01d >  \u091d;  # LETTER JHA
+ \ue01e >  \u091e;  # LETTER NYA
+ \ue01f >  \u091f;  # LETTER TTA
+ \ue020 >  \u0920;  # LETTER TTHA
+ \ue021 >  \u0921;  # LETTER DDA
+ \ue022 >  \u0922;  # LETTER DDHA
+ \ue023 >  \u0923;  # LETTER NNA
+ \ue024 >  \u0924;  # LETTER TA
+ \ue025 >  \u0925;  # LETTER THA
+ \ue026 >  \u0926;  # LETTER DA
+ \ue027 >  \u0927;  # LETTER DHA
+ \ue028 >  \u0928;  # LETTER NA
+ \ue029 >  \u0929;  # LETTER NNNA
+ \ue02a >  \u092a;  # LETTER PA
+ \ue02b >  \u092b;  # LETTER PHA
+ \ue02c >  \u092c;  # LETTER BA
+ \ue02d >  \u092d;  # LETTER BHA
+ \ue02e >  \u092e;  # LETTER MA
+ \ue02f >  \u092f;  # LETTER YA
+ \ue030 >  \u0930;  # LETTER RA
+ \ue031 >  \u0931;  # LETTER RRA (Eyelash RA for Southern scripts)
+ #\ue031 >  \u0930;  
+ \ue032 >  \u0932;  # LETTER LA
+ \ue033 >  \u0933;  # LETTER LLA
+ \ue034 >  \u0934;  # LETTER LLLA (LLLA for Southern scripts)
+ #\ue034 >  \u0933;  
+ \ue035 >  \u0935;  # LETTER VA
+ \ue036 >  \u0936;  # LETTER SHA
+ \ue037 >  \u0937;  # LETTER SSA
+ \ue038 >  \u0938;  # LETTER SA
+ \ue039 >  \u0939;  # LETTER HA
+ \ue03c >  \u093c;  # SIGN NUKTA
+ \ue03d >  \u093d;  # SIGN AVAGRAHA
+ \ue03e >  \u093e;  # VOWEL SIGN AA
+ \ue03f >  \u093f;  # VOWEL SIGN I
+ \ue040 >  \u0940;  # VOWEL SIGN II
+ \ue041 >  \u0941;  # VOWEL SIGN U
+ \ue042 >  \u0942;  # VOWEL SIGN UU
+ \ue043 >  \u0943;  # VOWEL SIGN VOCALIC R
+ \ue044 >  \u0944;  # VOWEL SIGN VOCALIC RR
+ \ue045 >  \u0945;  # VOWEL SIGN CANDRA E
+ \ue046 >  \u0946; # UNMAPPED VOWEL SIGN SHORT E
+ #\ue046 >  \u0947; 
+ \ue047 >  \u0947;  # VOWEL SIGN E
+ \ue048 >  \u0948;  # VOWEL SIGN AI
+ \ue049 >  \u0949;  # VOWEL SIGN CANDRA O
+ \ue04a >  \u094a; # UNMAPPED VOWEL SIGN SHORT O
+ #\ue04a >  \u094b; 
+ \ue04b >  \u094b;  # VOWEL SIGN O
+ \ue04c >  \u094c;  # VOWEL SIGN AU
+ \ue04d >  \u094d;  # SIGN VIRAMA
+ \ue050 >  \u0950;  # OM
+ \ue051 >  \u0951;  # UNMAPPED STRESS SIGN UDATTA
+ \ue052 >  \u0952;  # UNMAPPED STRESS SIGN ANUDATTA
+ \ue053 >  \u0953;  # UNMAPPED GRAVE ACCENT
+ \ue054 >  \u0954;  # UNMAPPED ACUTE ACCENT
+ \ue058 >  \u0958;  # LETTER QA   (For Urdu)
+ \ue059 >  \u0959;  # LETTER KHHA (For Urdu)
+ \ue05a >  \u095a;  # LETTER GHHA (For Urdu)
+ \ue05b >  \u095b;  # LETTER ZA   (For Urdu)
+ \ue05c >  \u095c;  # LETTER DDDHA (pronounced RRA)
+ \ue05d >  \u095d;  # LETTER RHA   (pronounced RRHA)
+ \ue05e >  \u095e;  # LETTER FA
+ \ue05f >  \u095f;  # LETTER YYA
+ \ue060 >  \u0960;  # LETTER VOCALIC RR
+ \ue061 >  \u0961;  # LETTER VOCALIC LL
+ \ue062 >  \u0962;  # VOWEL SIGN VOCALIC L
+ \ue063 >  \u0963;  # VOWEL SIGN VOCALIC LL
+ \ue064 >  \u0964;  # UNMAPPED Devanagari-InterIndic: DANDA
+ \ue065 >  \u0965;  # UNMAPPED Devanagari-InterIndic: DOUBLE DANDA
+ \ue066 >  \u0966;  # DIGIT ZERO
+ \ue067 >  \u0967;  # DIGIT ONE
+ \ue068 >  \u0968;  # DIGIT TWO
+ \ue069 >  \u0969;  # DIGIT THREE
+ \ue06a >  \u096a;  # DIGIT FOUR
+ \ue06b >  \u096b;  # DIGIT FIVE
+ \ue06c >  \u096c;  # DIGIT SIX
+ \ue06d >  \u096d;  # DIGIT SEVEN
+ \ue06e >  \u096e;  # DIGIT EIGHT
+ \ue06f >  \u096f;  # DIGIT NINE
+
+\ue075>;
+\ue076>;
+\ue077>;
+\ue078>;
+\ue079>;
+\ue07A>;
+ 
+#         \u0970  # UNMAPPED Devanagari-InterIndic: ABBREVIATION SIGN
+#    :: NFC;
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Gujarati.txt b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Gujarati.txt
new file mode 100755
index 0000000..8689159
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Gujarati.txt
@@ -0,0 +1,134 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_InterIndic_Gujarati.txt,v $
+# $Date: 2002/08/14 00:40:58 $
+# $Revision: 1.9 $
+#--------------------------------------------------------------------
+
+# InterIndic-Gujarati
+#:: NFD (NFC) ;
+\ue001>\u0a81; # SIGN CANDRABINDU
+\ue002>\u0a82; # SIGN ANUSVARA
+\ue003>\u0a83; # SIGN VISARGA
+\ue005>\u0a85; # LETTER A
+\ue006>\u0a86; # LETTER AA
+\ue007>\u0a87; # LETTER I
+\ue008>\u0a88; # LETTER II
+\ue009>\u0a89; # LETTER U
+\ue00a>\u0a8a; # LETTER UU
+\ue00b>\u0a8b; # LETTER VOCALIC R
+\ue00c>\u0ab2\u0ac3; # REMAP (indicExceptions.txt): \u0a8c>\u0ab2\u0ac3 = LETTER VOCALIC L>LETTER LA.VOWEL SIGN VOCALIC R
+\ue00d>\u0a8d; # GUJARATI VOWEL CANDRA E
+\ue00e>\u0a8f; # FALLBACK
+\ue00f>\u0a8f; #  InterIndic-Gujarati: LETTER EE (\u0a8f = LETTER E)
+\ue010>\u0a90; # LETTER AI
+\ue011>\u0a91; # FALLBACK
+\ue012>\u0a93; # FALLBACK
+\ue013>\u0a93; # UNMAPPED InterIndic-Gujarati: LETTER OO (\u0a93 = LETTER O)
+\ue014>\u0a94; # LETTER AU
+\ue015>\u0a95; # LETTER KA
+\ue016>\u0a96; # LETTER KHA
+\ue017>\u0a97; # LETTER GA
+\ue018>\u0a98; # LETTER GHA
+\ue019>\u0a99; # LETTER NGA
+\ue01a>\u0a9a; # LETTER CA
+\ue01b>\u0a9b; # LETTER CHA
+\ue01c>\u0a9c; # LETTER JA
+\ue01d>\u0a9d; # LETTER JHA
+\ue01e>\u0a9e; # LETTER NYA
+\ue01f>\u0a9f; # LETTER TTA
+\ue020>\u0aa0; # LETTER TTHA
+\ue021>\u0aa1; # LETTER DDA
+\ue022>\u0aa2; # LETTER DDHA
+\ue023>\u0aa3; # LETTER NNA
+\ue024>\u0aa4; # LETTER TA
+\ue025>\u0aa5; # LETTER THA
+\ue026>\u0aa6; # LETTER DA
+\ue027>\u0aa7; # LETTER DHA
+\ue028>\u0aa8; # LETTER NA
+\ue029>\u0aa8\u0abc; # FALLBACK to NA+NUKTA
+\ue02a>\u0aaa; # LETTER PA
+\ue02b>\u0aab; # LETTER PHA
+\ue02c>\u0aac; # LETTER BA
+\ue02d>\u0aad; # LETTER BHA
+\ue02e>\u0aae; # LETTER MA
+\ue02f>\u0aaf; # LETTER YA
+\ue030>\u0ab0; # LETTER RA
+\ue031>\u0ab0\u0abc; # FALLBACK
+\ue032>\u0ab2; # LETTER LA
+\ue033>\u0ab3; # LETTER LLA
+\ue034>\u0ab3\u0abc; #  LETTER LLLA>LETTER LLA+NUKTA
+\ue035>\u0ab5; # LETTER VA
+\ue036>\u0ab6; # LETTER SHA
+\ue037>\u0ab7; # LETTER SSA
+\ue038>\u0ab8; # LETTER SA
+\ue039>\u0ab9; # LETTER HA
+\ue03c>\u0abc; # SIGN NUKTA
+\ue03d>\u0abd; # SIGN AVAGRAHA
+\ue03e>\u0abe; # VOWEL SIGN AA
+\ue03f>\u0abf; # VOWEL SIGN I
+\ue040>\u0ac0; # VOWEL SIGN II
+\ue041>\u0ac1; # VOWEL SIGN U
+\ue042>\u0ac2; # VOWEL SIGN UU
+\ue043>\u0ac3; # VOWEL SIGN VOCALIC R
+\ue044>\u0ac4; # VOWEL SIGN VOCALIC RR
+\ue045>\u0ac5; # VOWEL SIGN CANDRA E
+\ue046>\u0ac7; # FALLBACK
+\ue047>\u0ac7; #  InterIndic-Gujarati: VOWEL SIGN EE (\u0ac7 = VOWEL SIGN E)
+\ue048>\u0ac8; # VOWEL SIGN AI
+\ue049>\u0ac9; # VOWEL SIGN CANDRA O
+\ue04a>\u0acb; # FALLBACK
+\ue04b>\u0acb; # UNMAPPED InterIndic-Gujarati: VOWEL SIGN OO (\u0acb = VOWEL SIGN O)
+\ue04c>\u0acc; # VOWEL SIGN AU
+\ue04d>\u0acd; # SIGN VIRAMA
+\ue050>\u0ad0; # OM
+\ue051>;
+\ue052>;
+\ue053>;
+\ue054>;
+\ue055>; # UNMAPPED InterIndic-Gujarati: LENGTH MARK
+\ue056>\u0ac8; # REMAP (indicExceptions.txt): \u0ad6>\u0ac8 = AI LENGTH MARK>VOWEL SIGN AI
+\ue057>\u0acc; # REMAP (indicExceptions.txt): \u0ad7>\u0acc = AU LENGTH MARK>VOWEL SIGN AU
+\ue058>\u0a95\u0abc; # FALLBACK
+\ue059>\u0a96\u0abc; # REMAP (indicExceptions.txt): \u0ad9>\u0a96\u0abc = LETTER KHHA>LETTER KHA.SIGN NUKTA
+\ue05a>\u0a97\u0abc; # REMAP (indicExceptions.txt): \u0ada>\u0a97\u0abc = LETTER GHHA>LETTER GA.SIGN NUKTA
+\ue05b>\u0a9c\u0abc; # REMAP (indicExceptions.txt): \u0adb>\u0a9c\u0abc = LETTER ZA>LETTER JA.SIGN NUKTA
+\ue05c>\u0aa1\u0abc; # FALLBACK
+\ue05d>\u0aa2\u0abc; # REMAP (indicExceptions.txt): \u0add>\u0aa2\u0abc = LETTER RHA>LETTER DDHA.SIGN NUKTA
+\ue05e>\u0aab\u0abc; # REMAP (indicExceptions.txt): \u0ade>\u0aab\u0abc = LETTER FA>LETTER PHA.SIGN NUKTA
+\ue05f>\u0aaf\u0abc; # REMAP (indicExceptions.txt): \u0adf>\u0aaf\u0abc = LETTER YYA>LETTER YA.SIGN NUKTA
+\ue060>\u0ae0; # LETTER VOCALIC RR
+\ue061>\u0ab2\u0ac3; # REMAP (indicExceptions.txt): \u0ae1>\u0ab2\u0ac3 = LETTER VOCALIC LL>LETTER LA.VOWEL SIGN VOCALIC R
+\ue062>\u0abf\u0abc; # REMAP (indicExceptions.txt): \u0ae2>\u0abf\u0abc = VOWEL SIGN VOCALIC L>VOWEL SIGN I.SIGN NUKTA
+\ue063>\u0ac0\u0abc; # REMAP (indicExceptions.txt): \u0ae3>\u0ac0\u0abc = VOWEL SIGN VOCALIC LL>VOWEL SIGN II.SIGN NUKTA
+\uE064>\u0964;          # DANDA
+\uE065>\u0965;          # DOUBLE DANDA
+\ue066>\u0ae6; # DIGIT ZERO
+\ue067>\u0ae7; # DIGIT ONE
+\ue068>\u0ae8; # DIGIT TWO
+\ue069>\u0ae9; # DIGIT THREE
+\ue06a>\u0aea; # DIGIT FOUR
+\ue06b>\u0aeb; # DIGIT FIVE
+\ue06c>\u0aec; # DIGIT SIX
+\ue06d>\u0aed; # DIGIT SEVEN
+\ue06e>\u0aee; # DIGIT EIGHT
+\ue06f>\u0aef; # DIGIT NINE
+\ue070 >  \u0ab0;  # FALLBACK RA 
+\ue071 >  \u0ab0;  # FALLBACK RA
+\ue072>;
+\ue073>;
+\ue074>;
+\ue075>;
+\ue076>;
+\ue077>;
+\ue078>;
+\ue079>;
+\ue07A>;
+0 > \u0ae6;       # FALLBACK FOR TAMIL
+1 > \u0ae7;
+
+#\ue080>; # UNMAPPED InterIndic-Gujarati: ISSHAR
+#    :: NFC (NFD) ;
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Gurmukhi.txt b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Gurmukhi.txt
new file mode 100755
index 0000000..9ea1391
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Gurmukhi.txt
@@ -0,0 +1,148 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_InterIndic_Gurmukhi.txt,v $
+# $Date: 2002/08/14 00:40:58 $
+# $Revision: 1.9 $
+#--------------------------------------------------------------------
+
+# InterIndic-Gurmukhi
+#:: NFD (NFC) ;
+$vowel = [\u0A05-\u0A14 \u0A3e-\u0A4D];
+$consonant = [\u0A15-\u0A39];
+
+\ue001>;       # FALLBACK BLOW AWAY SIGN CHANDRABINDU
+#rules for BINDI
+
+# Anusvara is equivalent to BINDI when preceeded by a vowel
+$vowel{\ue002>\u0a02; # SIGN ANUSVARA (\u0a02 = SIGN BINDI)
+# else is equivalent to TIPPI
+$consonant{\ue002>\u0a70; # SIGN TIPPI
+\ue002>\u0a02;
+
+\ue003>; # FALLBACK BLOW AWAY SIGN VISARGA
+\ue005>\u0a05; # LETTER A
+\ue006>\u0a06; # LETTER AA
+\ue007>\u0a07; # LETTER I
+\ue008>\u0a08; # LETTER II
+\ue009>\u0a09; # LETTER U
+\ue00a>\u0a0a; # LETTER UU
+\ue00b>\u0a30\u0a3f; # REMAP (indicExceptions.txt): \u0a0b>\u0a30\u0a3f = LETTER VOCALIC R>LETTER RA.VOWEL SIGN I
+\ue00c>\u0a33; # FALLBACK
+\ue00d>\u0a0f; # FALLBACK
+\ue00e>\u0a0f; # FALLBACK
+\ue00f>\u0a0f; # LETTER EE
+\ue010>\u0a10; # LETTER AI
+\ue011>\u0a13; # FALLBACK
+\ue012>\u0a13; # FALLBACK
+\ue013>\u0a13; # LETTER OO
+\ue014>\u0a14; # LETTER AU
+\ue015>\u0a15; # LETTER KA
+\ue016>\u0a16; # LETTER KHA
+\ue017>\u0a17; # LETTER GA
+\ue018>\u0a18; # LETTER GHA
+\ue019>\u0a19; # LETTER NGA
+\ue01a>\u0a1a; # LETTER CA
+\ue01b>\u0a1b; # LETTER CHA
+\ue01c>\u0a1c; # LETTER JA
+\ue01d>\u0a1d; # LETTER JHA
+\ue01e>\u0a1e; # LETTER NYA
+\ue01f>\u0a1f; # LETTER TTA
+\ue020>\u0a20; # LETTER TTHA
+\ue021>\u0a21; # LETTER DDA
+\ue022>\u0a22; # LETTER DDHA
+\ue023>\u0a23; # LETTER NNA
+\ue024>\u0a24; # LETTER TA
+\ue025>\u0a25; # LETTER THA
+\ue026>\u0a26; # LETTER DA
+\ue027>\u0a27; # LETTER DHA
+\ue028>\u0a28; # LETTER NA
+\ue029>\u0a28\u0a3c; # REMAP (indicExceptions.txt): \u0a29>\u0a28 = LETTER NNNA>LETTER NA
+\ue02a>\u0a2a; # LETTER PA
+\ue02b>\u0a2b; # LETTER PHA
+\ue02c>\u0a2c; # LETTER BA
+\ue02d>\u0a2d; # LETTER BHA
+\ue02e>\u0a2e; # LETTER MA
+\ue02f>\u0a2f; # LETTER YA
+\ue030>\u0a30; # LETTER RA
+\ue031>\u0a30\u0a3c; # FALLBACK LETTER RA+NUKTA
+\ue032>\u0a32; # LETTER LA
+\ue033>\u0a33; # LETTER LLA
+\ue034>\u0a33; # REMAP (indicExceptions.txt): \u0a34>\u0a33 = LETTER LLLA>LETTER LLA
+\ue035>\u0a35; # LETTER VA
+\ue036>\u0a36; # LETTER SHA
+\ue037>\u0a36; # REMAP (indicExceptions.txt): \u0a37>\u0a36 = LETTER SSA>LETTER SHA
+\ue038>\u0a38; # LETTER SA
+\ue039>\u0a39; # LETTER HA
+\ue03c>\u0a3c; # SIGN NUKTA
+\ue03d>; # FALLBACK BLOW AWAY SIGN AVAGRAHA
+\ue03e>\u0a3e; # VOWEL SIGN AA
+\ue03f>\u0a3f; # VOWEL SIGN I
+\ue040>\u0a40; # VOWEL SIGN II
+\ue041>\u0a41; # VOWEL SIGN U
+\ue042>\u0a42; # VOWEL SIGN UU
+\ue043>; # FALLBACK BLOW AWAY VOWEL SIGN VOCALIC R
+\ue044>; # FALLBACK BLOW AWAY VOWEL SIGN VOCALIC RR
+\ue045>\u0a48; # REMAP (indicExceptions.txt): \u0a45>\u0a48 = VOWEL SIGN CANDRA E>VOWEL SIGN AI
+\ue046>\u0a47; # FALLABCK
+\ue047>\u0a47; # VOWEL SIGN EE
+\ue048>\u0a48; # VOWEL SIGN AI
+\ue049>\u0a4c; # REMAP (indicExceptions.txt): \u0a49>\u0a4c = VOWEL SIGN CANDRA O>VOWEL SIGN AU
+\ue04a>\u0a4b; # FALLBACK
+\ue04b>\u0a4b; # VOWEL SIGN OO
+\ue04c>\u0a4c; # VOWEL SIGN AU
+\ue04d>\u0a4d; # SIGN VIRAMA
+\ue050>\u0a0f\u0a02; #  FALLBACK to OO+BINDI : OM
+\ue051>;
+\ue052>;
+\ue053>;
+\ue054>;
+\ue055>; # FALLBACK BLOW AWAY LENGTH MARK
+\ue056>\u0a48; # REMAP (indicExceptions.txt): \u0a56>\u0a48 = AI LENGTH MARK>VOWEL SIGN AI
+\ue057>\u0a4c; # REMAP (indicExceptions.txt): \u0a57>\u0a4c = AU LENGTH MARK>VOWEL SIGN AU
+\ue058>\u0a15\u0a3c; # FALLBACK RA+ NUKTA
+\ue059>\u0a59; # LETTER KHHA
+\ue05a>\u0a5a; # LETTER GHHA
+\ue05b>\u0a5b; # LETTER ZA
+\ue05c>\u0a5c; # LETTER RRA
+\ue05d>\u0a22\u0a3c; # REMAP (indicExceptions.txt): \u0a5d>\u0a22\u0a3c = LETTER RHA>LETTER DDHA.SIGN NUKTA
+\ue05e>\u0a5e; # LETTER FA
+\ue05f>\u0a2f\u0a3c; # REMAP (indicExceptions.txt): \u0a5f>\u0a2f = LETTER YYA>LETTER YA
+\ue060>\u0a30\u0a3f; # REMAP (indicExceptions.txt): \u0a60>\u0a30\u0a3f = LETTER VOCALIC RR>LETTER RA.VOWEL SIGN I
+\ue061>\u0a33\u0a3c; # 
+\ue062>\u0a3f\u0a3c; # REMAP (indicExceptions.txt): \u0a62>\u0a3f\u0a3c = VOWEL SIGN VOCALIC L>VOWEL SIGN I.SIGN NUKTA
+\ue063>\u0a40\u0a3c; # REMAP (indicExceptions.txt): \u0a63>\u0a40\u0a3c = VOWEL SIGN VOCALIC LL>VOWEL SIGN II.SIGN NUKTA
+\uE064>\u0964;          # DANDA
+\uE065>\u0965;          # DOUBLE DANDA
+\ue066>\u0a66; # DIGIT ZERO
+\ue067>\u0a67; # DIGIT ONE
+\ue068>\u0a68; # DIGIT TWO
+\ue069>\u0a69; # DIGIT THREE
+\ue06a>\u0a6a; # DIGIT FOUR
+\ue06b>\u0a6b; # DIGIT FIVE
+\ue06c>\u0a6c; # DIGIT SIX
+\ue06d>\u0a6d; # DIGIT SEVEN
+\ue06e>\u0a6e; # DIGIT EIGHT
+\ue06f>\u0a6f; # DIGIT NINE
+\ue070>; #  TIPPI
+\ue071>; #  ADDAK
+\ue072>; #  IRI
+\ue073>; #  URA
+\ue074>; #  EK ONKAR
+\ue075>;
+\ue076>;
+\ue077>;
+\ue078>;
+\ue079>;
+\ue07A>;
+\ue080>; # FALLBACK BLOW AWAY ISSHAR
+\ue081>; # FALLBACK BLOW AWAY LETTER E
+\ue082>; # FALLBACK BLOW AWAY LETTER O (\u0a02 = SIGN BINDI)
+\ue084>; # FALLBACK BLOW AWAY VOWEL SIGN E
+\ue085>; # FALLBACK BLOW AWAY VOWEL SIGN O (\u0a05 = LETTER A)
+
+0 > \u0a66;       # FALLBACK FOR TAMIL
+1 > \u0a67;
+#    :: NFC (NFD) ;
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Kannada.txt b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Kannada.txt
new file mode 100755
index 0000000..1eb4762
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Kannada.txt
@@ -0,0 +1,139 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_InterIndic_Kannada.txt,v $
+# $Date: 2002/07/25 21:20:26 $
+# $Revision: 1.9 $
+#--------------------------------------------------------------------
+
+# InterIndic-Kannada
+#:: NFD (NFC) ;
+\ue02b\ue03c>\u0cde; # LETTER FA
+\ue001>\u0c82; # REMAP (indicExceptions.txt): \u0c81>\u0c82 = SIGN CANDRABINDU>SIGN ANUSVARA
+\ue002>\u0c82; # SIGN ANUSVARA
+\ue003>\u0c83; # SIGN VISARGA
+\ue005>\u0c85; # LETTER A
+\ue006>\u0c86; # LETTER AA
+\ue007>\u0c87; # LETTER I
+\ue008>\u0c88; # LETTER II
+\ue009>\u0c89; # LETTER U
+\ue00a>\u0c8a; # LETTER UU
+\ue00b>\u0c8b; # LETTER VOCALIC R
+\ue00c>\u0c8c; # LETTER VOCALIC L
+\ue00d>\u0c8e; # LETTER E
+\ue00e>\u0c8e; # FALLBACK
+\ue00f>\u0c8f; # LETTER EE
+\ue010>\u0c90; # LETTER AI
+\ue011>\u0c92; # FALLBACK
+\ue012>\u0c92; # LETTER O
+\ue013>\u0c93; # LETTER OO
+\ue014>\u0c94; # LETTER AU
+\ue015>\u0c95; # LETTER KA
+\ue016>\u0c96; # LETTER KHA
+\ue017>\u0c97; # LETTER GA
+\ue018>\u0c98; # LETTER GHA
+\ue019>\u0c99; # LETTER NGA
+\ue01a>\u0c9a; # LETTER CA
+\ue01b>\u0c9b; # LETTER CHA
+\ue01c>\u0c9c; # LETTER JA
+\ue01d>\u0c9d; # LETTER JHA
+\ue01e>\u0c9e; # LETTER NYA
+\ue01f>\u0c9f; # LETTER TTA
+\ue020>\u0ca0; # LETTER TTHA
+\ue021>\u0ca1; # LETTER DDA
+\ue022>\u0ca2; # LETTER DDHA
+\ue023>\u0ca3; # LETTER NNA
+\ue024>\u0ca4; # LETTER TA
+\ue025>\u0ca5; # LETTER THA
+\ue026>\u0ca6; # LETTER DA
+\ue027>\u0ca7; # LETTER DHA
+\ue028>\u0ca8; # LETTER NA
+\ue029>\u0ca8; # REMAP (indicExceptions.txt): \u0ca9>\u0ca8 = LETTER NNNA>LETTER NA
+\ue02a>\u0caa; # LETTER PA
+\ue02b>\u0cab; # LETTER PHA
+\ue02c>\u0cac; # LETTER BA
+\ue02d>\u0cad; # LETTER BHA
+\ue02e>\u0cae; # LETTER MA
+\ue02f>\u0caf; # LETTER YA
+\ue030\ue03c>\u0cb1;
+\ue030>\u0cb0; # LETTER RA
+\ue031>\u0cb1; # LETTER RRA
+\ue032>\u0cb2; # LETTER LA
+\ue033>\u0cb3; # LETTER LLA
+\ue034>\u0cb3; # REMAP (indicExceptions.txt): \u0cb4>\u0cb3 = LETTER LLLA>LETTER LLA
+\ue035>\u0cb5; # LETTER VA
+\ue036>\u0cb6; # LETTER SHA
+\ue037>\u0cb7; # LETTER SSA
+\ue038>\u0cb8; # LETTER SA
+\ue039>\u0cb9; # LETTER HA
+
+\ue03c>; # FALLBACK BLOW AWAY NUKTA
+\ue03d>; # FALLBACK BLOW AWAY AVAGRAHA
+
+\ue03e>\u0cbe; # VOWEL SIGN AA
+\ue03f>\u0cbf; # VOWEL SIGN I
+\ue040>\u0cc0; # VOWEL SIGN II
+\ue041>\u0cc1; # VOWEL SIGN U
+\ue042>\u0cc2; # VOWEL SIGN UU
+\ue043>\u0cc3; # VOWEL SIGN VOCALIC R
+\ue044>\u0cc4; # VOWEL SIGN VOCALIC RR
+\ue045>\u0cc6; # REMAP (indicExceptions.txt): \u0cc5>\u0cc6 = VOWEL SIGN CANDRA E>VOWEL SIGN E
+\ue046>\u0cc6; # VOWEL SIGN E
+\ue047>\u0cc7; # VOWEL SIGN EE
+\ue048>\u0cc8; # VOWEL SIGN AI
+\ue049>\u0cca; # REMAP (indicExceptions.txt): \u0cc9>\u0cca = VOWEL SIGN CANDRA O>VOWEL SIGN O
+\ue04a>\u0cca; # VOWEL SIGN O
+\ue04b>\u0ccb; # VOWEL SIGN OO
+\ue04c>\u0ccc; # VOWEL SIGN AU
+\ue04d>\u0ccd; # SIGN VIRAMA
+\ue050>\u0c93\u0c82; # REMAP (indicExceptions.txt): \u0cd0>\u0c93\u0c82 = OM>LETTER OO.SIGN ANUSVARA
+\ue051>;
+\ue052>;
+\ue053>;
+\ue054>;
+\ue055>\u0cd5; # LENGTH MARK
+\ue056>\u0cd6; # AI LENGTH MARK
+\ue057>\u0ccc; # REMAP (indicExceptions.txt): \u0cd7>\u0ccc = AU LENGTH MARK>VOWEL SIGN AU
+\ue058>\u0c95; # FALLBACK
+\ue059>\u0c96; # REMAP (indicExceptions.txt): \u0cd9>\u0c96 = LETTER KHHA>LETTER KHA
+\ue05a>\u0c97; # REMAP (indicExceptions.txt): \u0cda>\u0c97 = LETTER GHHA>LETTER GA
+\ue05b>\u0c9c; # REMAP (indicExceptions.txt): \u0cdb>\u0c9c = LETTER ZA>LETTER JA
+\ue05c>\u0ca2; # FALLBACK
+\ue05d>\u0ca2; # REMAP (indicExceptions.txt): \u0cdd>\u0ca2 = LETTER RHA>LETTER DDHA
+\ue05e>\u0cde; # LETTER FA
+\ue05f>\u0caf; # REMAP (indicExceptions.txt): \u0cdf>\u0caf = LETTER YYA>LETTER YA
+\ue060>\u0ce0; # LETTER VOCALIC RR
+\ue061>\u0ce1; # LETTER VOCALIC LL
+\ue062>\u0cbf; # REMAP (indicExceptions.txt): \u0ce2>\u0cbf = VOWEL SIGN VOCALIC L>VOWEL SIGN I
+\ue063>\u0cc0; # REMAP (indicExceptions.txt): \u0ce3>\u0cc0 = VOWEL SIGN VOCALIC LL>VOWEL SIGN II
+\ue064>'.'   ; # FALLBACK FOR DANDA
+\ue065>'.'   ; # FALLBACK FOR DOUBLE DANDA	
+\ue066>\u0ce6; # DIGIT ZERO
+\ue067>\u0ce7; # DIGIT ONE
+\ue068>\u0ce8; # DIGIT TWO
+\ue069>\u0ce9; # DIGIT THREE
+\ue06a>\u0cea; # DIGIT FOUR
+\ue06b>\u0ceb; # DIGIT FIVE
+\ue06c>\u0cec; # DIGIT SIX
+\ue06d>\u0ced; # DIGIT SEVEN
+\ue06e>\u0cee; # DIGIT EIGHT
+\ue06f>\u0cef; # DIGIT NINE
+\ue080>; # UNMAPPED InterIndic-Kannada: ISSHAR
+\ue070>;
+\ue071>;
+\ue072>;
+\ue073>;
+\ue074>;
+\ue075>;
+\ue076>;
+\ue077>;
+\ue078>;
+\ue079>;
+\ue07A>;
+0 > \u0ce6;       # FALLBACK FOR TAMIL
+1 > \u0ce7;
+\ue0f0 >  \u0cb0;  # FALLBACK RA 
+\ue0f1 >  \u0cb0;  # FALLBACK RA
+#    :: NFC (NFD) ;
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Latin.txt b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Latin.txt
new file mode 100755
index 0000000..e600db3
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Latin.txt
@@ -0,0 +1,532 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_InterIndic_Latin.txt,v $
+# $Date: 2002/07/25 21:20:26 $
+# $Revision: 1.7 $
+#--------------------------------------------------------------------
+
+# InterIndic-Latin
+   #\u0e00 reserved
+    #consonants
+    $chandrabindu=\ue001;
+    $anusvara=\ue002;
+    $visarga=\ue003;
+    #\u0e004 reserved
+    # w<vowel> represents the stand-alone form
+    $wa=\ue005;
+    $waa=\ue006;
+    $wi=\ue007;
+    $wii=\ue008;
+    $wu=\ue009;
+    $wuu=\ue00a;
+    $wr=\ue00b;
+    $wl=\ue00c;
+    $wce=\ue00d; # LETTER CANDRA E
+    $wse=\ue00e; # LETTER SHORT E
+    $we=\ue00f;  # \u090f LETTER E
+    $wai=\ue010;
+    $wco=\ue011; # LETTER CANDRA O
+    $wso=\ue012; # LETTER SHORT O
+    $wo=\ue013;  # \u0913 LETTER O
+    $wau=\ue014;
+    $ka=\ue015;
+    $kha=\ue016;
+    $ga=\ue017;
+    $gha=\ue018;
+    $nga=\ue019;
+    $ca=\ue01a;
+    $cha=\ue01b;
+    $ja=\ue01c;
+    $jha=\ue01d;
+    $nya=\ue01e;
+    $tta=\ue01f;
+    $ttha=\ue020;
+    $dda=\ue021;
+    $ddha=\ue022;
+    $nna=\ue023;
+    $ta=\ue024;
+    $tha=\ue025;
+    $da=\ue026;
+    $dha=\ue027;
+    $na=\ue028;
+    $ena=\ue029; #compatibility
+    $pa=\ue02a;
+    $pha=\ue02b;
+    $ba=\ue02c;
+    $bha=\ue02d;
+    $ma=\ue02e;
+    $ya=\ue02f;
+    $ra=\ue030;
+    $rra=\ue031;
+    $la=\ue032;
+    $lla=\ue033; 
+    $ela=\ue034; #compatibility
+    $va=\ue035;
+    $sha=\ue036;
+    $ssa=\ue037;
+    $sa=\ue038;
+    $ha=\ue039;
+#\u093a Reserved
+#\u093b Reserved
+    $nukta=\ue03c;
+    $avagraha=\ue03d; # SIGN AVAGRAHA
+    # <vowel> represents the dependent form
+    $aa=\ue03e;
+    $i=\ue03f;
+    $ii=\ue040;
+    $u=\ue041;
+    $uu=\ue042;
+    $rh=\ue043;
+    $lh=\ue044;
+    $ce=\ue045; #VOWEL SIGN CANDRA E 
+    $se=\ue046; #VOWEL SIGN SHORT E
+    $e=\ue047;
+    $ai=\ue048;
+    $co=\ue049; # VOWEL SIGN CANDRA O
+    $so=\ue04a; # VOWEL SIGN SHORT O
+    $o=\ue04b;  # \u094b
+    $au=\ue04c;    
+    $virama=\ue04d;
+# \u094e Reserved
+# \u094f Reserved
+    $om=\ue050; # OM
+    \ue051>;        # UNMAPPED STRESS SIGN UDATTA
+    \ue052>;        # UNMAPPED STRESS SIGN ANUDATTA
+    \ue053>;        # UNMAPPED GRAVE ACCENT
+    \ue054>;        # UNMAPPED ACUTE ACCENT
+    $lm = \ue055;#  Telugu Length Mark    
+    $ailm=\ue056;#  AI Length Mark 
+    $aulm=\ue057;#  AU Length Mark 
+     #urdu compatibity forms
+    $uka=\ue058;
+    $ukha=\ue059;
+    $ugha=\ue05a;
+    $ujha=\ue05b;
+    $uddha=\ue05c;
+    $udha=\ue05d;
+    $ufa=\ue05e;
+    $uya=\ue05f;
+    $wrr=\ue060;
+    $wll=\ue061;
+    $rrh=\ue062;
+    $llh=\ue063;
+    $danda=\ue064;
+    $doubleDanda=\ue065;
+    $zero=\ue066;     # DIGIT ZERO
+    $one=\ue067;      # DIGIT ONE
+    $two=\ue068;      # DIGIT TWO
+    $three=\ue069;    # DIGIT THREE
+    $four=\ue06a;     # DIGIT FOUR
+    $five=\ue06b;     # DIGIT FIVE
+    $six=\ue06c;      # DIGIT SIX
+    $seven=\ue06d;    # DIGIT SEVEN
+    $eight=\ue06e;    # DIGIT EIGHT
+    $nine=\ue06f;     # DIGIT NINE
+    # For all other scripts
+    $ecp0=\ue070;
+    $ecp1=\ue071;
+    $ecp2=\ue072;
+    $ecp3=\ue073;
+    $ecp4=\ue074;
+    $ecp5=\ue075;
+    $ecp6=\ue076;
+    $ecp7=\ue077;
+    $ecp8=\ue078;
+    $ecp9=\ue079;
+    $ecpA=\ue07a;
+    $ecpB=\ue07b;
+    $ecpC=\ue07c;
+    $ecpD=\ue07d;
+    $ecpE=\ue07e;
+    $ecpF=\ue07f;
+# \u0970>; # UNMAPPED ABBREVIATION SIGN
+    $depVowelAbove=[\ue03e-\ue040\ue045-\ue04c];
+    $depVowelBelow=[\ue041-\ue044];
+    # $x was originally called '&'; $z was '%'
+    $x=[$aa$ai$au$ii$i$uu$u$rrh$rh$lh$llh$e$o$se$ce$so$co];
+    $z=[bcdfghjklmnpqrstvwxyz];
+    $vowels=[aeiour\u0304\u0325\u0306];
+    $forceIndependentMatra = [^[[:L:][\u0300-\u034c]]];
+    ######################################################################
+    # convert from Native letters to Latin letters
+    ######################################################################
+     #transliterations for anusvara
+    $anusvara} [$ka$kha$ga$gha$nga]             > n\u0307;
+    $anusvara} [$ca$cha$ja$jha$nya]             > n\u0304;
+    $anusvara} [$tta$ttha$dda$ddha$nna]         > n\u0323;
+    $anusvara} [$ta$tha$da$dha$na]              > n      ;
+    $anusvara} [$pa$pha$ba$bha$ma]              > m      ;
+    $anusvara} [$ya$ra$lla$la$va$ssa$sha$sa$ha] > n      ;
+    $anusvara> m\u0307;
+
+    # Urdu compatibility
+    $ya$nukta}$x        > y\u0307  ;
+    $ya$nukta$virama    > y\u0307  ;
+    $ya$nukta           > y\u0307a ;    
+
+    $la$nukta }$x       > l\u0331  ;
+    $la$nukta$virama    > l\u0331  ;
+    $la$nukta           > l\u0331a ;
+
+    $na$nukta }$x       > n\u0331  ;
+    $na$nukta$virama    > n\u0331  ;
+    $na$nukta           > n\u0331a ;
+
+    $ena }$x            > n\u0331  ;
+    $ena$virama         > n\u0331  ;
+    $ena                > n\u0331a ;
+    $uka		> qa       ;
+    $ka$nukta }$x       > q        ;
+    $ka$nukta$virama    > q        ;
+    $ka$nukta           > qa       ;
+    $kha$nukta }$x      > k\u0331h\u0331 ;
+    $kha$nukta$virama   > k\u0331h\u0331 ;
+    $kha$nukta          > k\u0331h\u0331a ;
+    $ukha$virama        > k\u0331h\u0331;
+    $ukha               > k\u0331h\u0331a;
+    $ugha		> g\u0307a ;
+    $ga$nukta }$x       > g\u0307  ;
+    $ga$nukta$virama    > g\u0307  ;
+    $ga$nukta           > g\u0307a ;
+    
+    $ujha                > za       ;	
+    $ja$nukta }$x       > z        ;
+    $ja$nukta$virama    > z        ;
+    $ja$nukta           > za       ;
+    $ddha$nukta}$x      > r\u0323h ;
+    $ddha$nukta$virama  > r\u0323h ;
+    $ddha$nukta         > r\u0323ha;
+
+    $uddha}$x           > r\u0323  ;
+    $uddha$virama       > r\u0323 ;
+    $uddha              > r\u0323a;
+    
+    $udha               > r\u0323a ;
+    $dda$nukta}$x       > r\u0323  ;
+    $dda$nukta$virama   > r\u0323  ;
+    $dda$nukta          > r\u0323a ;
+    $pha$nukta }$x      > f  ;
+    $pha$nukta$virama   > f  ;
+    $pha$nukta          > fa ;
+    $ufa }$x            > f  ;
+    $ufa$virama         > f  ;
+    $ufa                > fa ;
+
+    $ra$nukta}$x        > r\u0331;
+    $ra$nukta$virama    > r\u0331;
+    $ra$nukta           > r\u0331a;
+    $lla$nukta}$x       > l\u0331;
+    $lla$nukta$virama   > l\u0331; 
+    $lla$nukta          > l\u0331a;
+
+    $ela}$x             > l\u0331;
+    $ela$virama         > l\u0331; 
+    $ela                > l\u0331a;
+
+    $uya}$x             > y\u0307;
+    $uya$virama         > y\u0307;
+    $uya                > y\u0307a;
+
+
+    # normal consonants
+    $ka$virama}$ha>k'';
+    $ka}$x>k;
+    $ka$virama>k;
+    $ka>ka;
+    $kha}$x>kh;
+    $kha$virama>kh;
+    $kha>kha;
+    $ga$virama}$ha>g'';
+    $ga}$x>g;
+    $ga$virama>g;
+    $ga>ga;
+
+    $gha}$x>gh;
+    $gha$virama>gh;
+    $gha>gha;
+
+    $nga}$x>n\u0307;
+    $nga$virama>n\u0307;
+    $nga>n\u0307a  ;
+    $ca$virama}$ha>c'';
+    $ca}$x>c;
+    $ca$virama>c;
+    $ca>ca;
+
+    $cha}$x>ch;
+    $cha$virama>ch;
+    $cha>cha;
+    $ja$virama}$ha>j'';
+    $ja}$x>j;
+    $ja$virama>j;
+    $ja>ja;
+
+    $jha}$x>jh;
+    $jha$virama>jh;
+    $jha>jha;
+
+    $nya }$x>n\u0303 ;
+    $nya$virama>n\u0303;
+    $nya > n\u0303a  ;
+
+
+    $tta$virama}$ha>t\u0323'';
+    $tta}$x>t\u0323;
+    $tta$virama>t\u0323;
+    $tta>t\u0323a;
+
+    $ttha}$x>t\u0323h;
+    $ttha$virama>t\u0323h;
+    $ttha>t\u0323ha;
+    $dda}$x$ha>d\u0323'';
+    $dda}$x>d\u0323;
+    $dda$virama>d\u0323;
+    $dda>d\u0323a;
+
+    $ddha}$x>d\u0323h;
+    $ddha$virama>d\u0323h;
+    $ddha>d\u0323ha;
+
+    $nna}$x>n\u0323  ;
+    $nna$virama>n\u0323;
+    $nna>n\u0323a   ;
+
+
+    $ta$virama}$ha>t'';
+    $ta$virama}$ttha>t'';
+    $ta$virama}$tta>t'';
+    $ta$virama}$tha>t'';
+    $ta}$x>t;
+    $ta$virama>t;
+    $ta>ta;
+    $tha}$x>th;
+    $tha$virama>th;
+    $tha>tha;
+
+    $da$virama}$ha>d'';
+    $da$virama}$ddha>d'';
+    $da$virama}$dda>d'';
+    $da$virama}$dha>d'';
+    $da}$x>d;
+    $da$virama>d;
+    $da>da;
+    $dha}$x>dh;
+    $dha$virama>dh;
+    $dha>dha;
+    $na$virama}$ga>n'';
+    $na$virama}$ya>n'';
+    $na}$x>n;
+    $na$virama>n;
+    $na>na;
+
+
+    $pa$virama}$ha>p'';
+    $pa}$x>p;
+    $pa$virama>p;
+    $pa>pa;
+    $pha}$x>ph;
+    $pha$virama>ph;
+    $pha>pha;
+    $ba$virama}$ha>b'';
+    $ba}$x>b;
+    $ba$virama>b;
+    $ba>ba;
+
+    $bha}$x>bh;
+    $bha$virama>bh;
+    $bha>bha;
+
+    $ma$virama}$ma>m'';
+    $ma}$x>m;
+    $ma$virama>m;
+    $ma>ma;
+
+    $ya}$x>y;
+    $ya$virama>y;
+    $ya>ya;
+    $ra$virama}$ha>r'';
+    $ra}$x>r;
+    $ra$virama>r;
+    $ra>ra;
+    $rra$virama}$ha>r\u0331'';
+    $rra}$x>r\u0331;
+    $rra$virama>r\u0331;
+    $rra>r\u0331a;
+    $la$virama}$ha>l'';
+    $la}$x>l;
+    $la$virama>l;
+    $la>la;
+    $lla$virama}$ha>l\u0323'';
+    $lla}$x>l\u0323;
+    $lla$virama>l\u0323;
+    $lla>l\u0323a;
+    $va}$x>v;
+    $va$virama>v;
+    $va>va;
+    $sa$virama}$ha>s'';
+    $sa$virama}$sha>s'';
+    $sa$virama}$ssa>s'';
+    $sa$virama}$sa>s'';
+    $sa}$x>s;
+    $sa$virama>s;
+
+    #for gurmukhi
+    $sa$nukta}$x>s\u0301;
+    $sa$nukta$virama>s\u0301;
+    $sa$nukta>s\u0301a;
+    $sa>sa;
+
+    $sha}$x>s\u0301;
+    $sha$virama>s\u0301;
+    $sha>s\u0301a;
+
+    $ssa}$x>s\u0323;
+    $ssa$virama>s\u0323;
+    $ssa>s\u0323a;
+    $ha}$x>h;
+    $ha$virama>h;
+    $ha>ha;
+
+    # dependent vowels (should never occur except following consonants)
+    $forceIndependentMatra{$aa  > \u0314a\u0304       ;
+    $forceIndependentMatra{$ai  > \u0314ai            ;
+    $forceIndependentMatra{$au  > \u0314au            ;
+    $forceIndependentMatra{$ii  > \u0314i\u0304       ;
+    $forceIndependentMatra{$i   > \u0314i             ;
+    $forceIndependentMatra{$uu  > \u0314u\u0304       ;
+    $forceIndependentMatra{$u   > \u0314u             ;
+    $forceIndependentMatra{$rrh > \u0314r\u0325\u0304 ;
+    $forceIndependentMatra{$rh  > \u0314r\u0325       ;
+    $forceIndependentMatra{$llh > \u0314l\u0325\u0304 ;
+    $forceIndependentMatra{$lh  > \u0314l\u0325       ;
+    $forceIndependentMatra{$e   > \u0314e\u0304       ;
+    $forceIndependentMatra{$o   > \u0314o\u0304       ;
+    #extra vowels
+    $forceIndependentMatra{$ce  > \u0314e\u0306       ;
+    $forceIndependentMatra{$co  > \u0314o\u0306       ;
+    $forceIndependentMatra{$se  > \u0314e             ;
+    $forceIndependentMatra{$so  > \u0314o             ;
+    $forceIndependentMatra{$nukta  >; # Nukta cannot appear independently or as first character
+    $forceIndependentMatra{$virama >; # Virama cannot appear independently or as first character
+    $aa  > a\u0304       ;
+    $ai  > ai            ;
+    $au  > au            ;
+    $ii  > i\u0304       ;
+    $i   > i             ;
+    $uu  > u\u0304       ;
+    $u   > u             ;
+    $rrh > r\u0325\u0304 ;
+    $rh  > r\u0325       ;
+    $llh > l\u0325\u0304 ;
+    $lh  > l\u0325       ;
+    $e   > e\u0304       ;
+    $o   > o\u0304       ;
+    #extra vowels
+    $ce  > e\u0306       ;
+    $co  > o\u0306       ;
+    $se  > e             ;
+    $so  > o             ;
+    #dependent vowels when following independent vowels. Generally Illegal only for roundtripping
+    $waa} $x > a\u0304\u0314        ;
+    $wai} $x > ai\u0314             ;
+    $wau} $x > au\u0314             ;
+    $wii} $x > i\u0304\u0314        ;
+    $wi } $x > i\u0314              ;
+    $wuu} $x > u\u0304\u0314        ;
+    $wu } $x > u\u0314              ;
+    $wrr} $x > r\u0325\u0304\u0314  ;
+    $wr } $x > r\u0325\u0314        ;
+    $wll} $x > l\u0325\u0304\u0314  ;
+    $wl } $x > l\u0325\u0314        ;
+    $we } $x > e\u0304\u0314        ;
+    $wo } $x > o\u0304\u0314        ;
+    $wa } $x > a\u0314              ;
+    #extra vowels
+    $wce} $x > e\u0306\u0314        ;
+    $wco} $x > o\u0306\u0314        ;
+    $wse} $x > e\u0314              ;
+    $wso} $x > o\u0314              ;
+    $om} $x > ''om\u0314            ;
+           
+    # independent vowels when preceeded by vowels
+    $vowels{$waa    > ''a\u0304         ;
+    $vowels{$wai    > ''ai              ;
+    $vowels{$wau    > ''au              ;
+    $vowels{$wii     > ''i\u0304        ;
+    $vowels{$wi     > ''i               ;
+    $vowels{$wuu    > ''u\u0304         ;
+    $vowels{$wu     > ''u               ;
+    $vowels{$wrr    > ''r\u0325\u0304   ;
+    $vowels{$wr     > ''r\u0325         ;
+    $vowels{$wll    > ''l\u0325\u0304   ;
+    $vowels{$wl     > ''l\u0325         ;
+    $vowels{$we     > ''e\u0304         ;
+    $vowels{$wo     > ''o\u0304         ;
+    $vowels{$wa     > ''a               ;
+    #extra vowels
+    $vowels{$wce    > ''e\u0306         ;
+    $vowels{$wco    > ''o\u0306         ;
+    $vowels{$wse    > ''e               ;
+    $vowels{$wso    > ''o               ;
+
+    # independent vowels (otherwise)
+    $waa > a\u0304          ;
+    $wai > ai               ;
+    $wau > au               ;
+    $wii > i\u0304          ;
+    $wi  > i                ;
+    $wuu > u\u0304          ;
+    $wu  > u                ;
+    $wrr > r\u0325\u0304    ;
+    $wr  > r\u0325          ;
+    $wll > l\u0325\u0304    ;
+    $wl  > l\u0325          ;
+    $we  > e\u0304          ;
+    $wo  > o\u0304          ;
+    $wa  > a                ;
+    #extra vowels
+    $wce > e\u0306          ;
+    $wco > o\u0306          ;
+    $wse > e                ;
+    $wso > o                ;
+    $om > ''om              ;
+
+    #stress marks
+    $avagraha > \u0315;
+    $chandrabindu$anusvara>\u0303;
+    $chandrabindu > m\u0310;
+    $visarga>h\u0323;
+    #numbers
+    $zero  > 0; 
+    $one   > 1;  
+    $two   > 2;  
+    $three > 3;
+    $four  > 4; 
+    $five  > 5; 
+    $six   > 6;  
+    $seven > 7;
+    $eight > 8;
+    $nine  > 9;
+    $lm   >; 
+    $ailm >;
+    $aulm >;
+    $ecp0 >;
+    $ecp1 >;
+    $ecp2 >;
+    $ecp3 >;
+    $ecp4 >;
+    $ecp5 >;
+    $ecp6 >;
+    $ecp7 >;
+    $ecp8 >;
+    $ecp9 >;
+    $ecpA >;
+    $ecpB >;
+    $ecpC >;
+    $ecpD >;
+    $ecpE >;
+    $ecpF >;
+    $danda>'.';
+    $doubleDanda>'.';
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Malayalam.txt b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Malayalam.txt
new file mode 100755
index 0000000..f6c7585
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Malayalam.txt
@@ -0,0 +1,141 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_InterIndic_Malayalam.txt,v $
+# $Date: 2002/07/25 21:20:26 $
+# $Revision: 1.8 $
+#--------------------------------------------------------------------
+
+# InterIndic-Malayalam
+#:: NFD (NFC) ;
+\ue001>\u0d02; # REMAP (indicExceptions.txt): \u0d01>\u0d02 = SIGN CANDRABINDU>SIGN ANUSVARA
+\ue002>\u0d02; # SIGN ANUSVARA
+\ue003>\u0d03; # SIGN VISARGA
+\ue005>\u0d05; # LETTER A
+\ue006>\u0d06; # LETTER AA
+\ue007>\u0d07; # LETTER I
+\ue008>\u0d08; # LETTER II
+\ue009>\u0d09; # LETTER U
+\ue00a>\u0d0a; # LETTER UU
+\ue00b>\u0d0b; # LETTER VOCALIC R
+\ue00c>\u0d0c; # LETTER VOCALIC L
+\ue00d>\u0d0e; # FALLLBACK LETTER E
+\ue00e>\u0d0e; # LETTER E
+\ue00f>\u0d0f; # LETTER EE
+\ue010>\u0d10; # LETTER AI
+\ue011>\u0d12; # FALLBACK TO O
+\ue012>\u0d12; # LETTER O
+\ue013>\u0d13; # LETTER OO
+\ue014>\u0d14; # LETTER AU
+\ue015>\u0d15; # LETTER KA
+\ue016>\u0d16; # LETTER KHA
+\ue017>\u0d17; # LETTER GA
+\ue018>\u0d18; # LETTER GHA
+\ue019>\u0d19; # LETTER NGA
+\ue01a>\u0d1a; # LETTER CA
+\ue01b>\u0d1b; # LETTER CHA
+\ue01c>\u0d1c; # LETTER JA
+\ue01d>\u0d1d; # LETTER JHA
+\ue01e>\u0d1e; # LETTER NYA
+\ue01f>\u0d1f; # LETTER TTA
+\ue020>\u0d20; # LETTER TTHA
+\ue021>\u0d21; # LETTER DDA
+\ue022>\u0d22; # LETTER DDHA
+\ue023>\u0d23; # LETTER NNA
+\ue024>\u0d24; # LETTER TA
+\ue025>\u0d25; # LETTER THA
+\ue026>\u0d26; # LETTER DA
+\ue027>\u0d27; # LETTER DHA
+\ue028>\u0d28; # LETTER NA
+\ue029>\u0d28; # REMAP (indicExceptions.txt): \u0d29>\u0d28 = LETTER NNNA>LETTER NA
+\ue02a>\u0d2a; # LETTER PA
+\ue02b>\u0d2b; # LETTER PHA
+\ue02c>\u0d2c; # LETTER BA
+\ue02d>\u0d2d; # LETTER BHA
+\ue02e>\u0d2e; # LETTER MA
+\ue02f>\u0d2f; # LETTER YA
+\ue030\ue03c>\u0d31;
+\ue030>\u0d30; # LETTER RA
+\ue031>\u0d31; # LETTER RRA
+\ue032>\u0d32; # LETTER LA
+\ue033\ue03c>\u0d34;
+\ue033>\u0d33; # LETTER LLA
+\ue034>\u0d34; # LETTER LLLA
+\ue035>\u0d35; # LETTER VA
+\ue036>\u0d36; # LETTER SHA
+\ue037>\u0d37; # LETTER SSA
+\ue038>\u0d38; # LETTER SA
+\ue039>\u0d39; # LETTER HA
+
+\ue03c>; # FALLBACK BLOW AWAY NUKTA
+\ue03d>; # FALLBACK BLOW AWAY AVAGRAHA
+
+\ue03e>\u0d3e; # VOWEL SIGN AA
+\ue03f>\u0d3f; # VOWEL SIGN I
+\ue040>\u0d40; # VOWEL SIGN II
+\ue041>\u0d41; # VOWEL SIGN U
+\ue042>\u0d42; # VOWEL SIGN UU
+\ue043>\u0d43; # VOWEL SIGN VOCALIC R
+\ue044>; # FALLBACK BLOW AWAY VOWEL SIGN VOCALIC RR
+\ue045>\u0d3e; # REMAP (indicExceptions.txt): \u0d45>\u0d3e = VOWEL SIGN CANDRA E>VOWEL SIGN AA
+\ue046>\u0d46; # VOWEL SIGN E
+\ue047>\u0d47; # VOWEL SIGN EE
+\ue048>\u0d48; # VOWEL SIGN AI
+\ue049>\u0d4b; # REMAP (indicExceptions.txt): \u0d49>\u0d4b = VOWEL SIGN CANDRA O>VOWEL SIGN OO
+\ue04a>\u0d4a; # VOWEL SIGN O
+\ue04b>\u0d4b; # VOWEL SIGN OO
+\ue04c>\u0d4c; # VOWEL SIGN AU
+\ue04d>\u0d4d; # SIGN VIRAMA
+\ue050>\u0d13\u0d02; # UNMAPPED InterIndic-Malayalam: OM
+\ue051>;
+\ue052>;
+\ue053>;
+\ue054>;
+\ue055>; # FALLBACK BLOW AWAY LENGTH MARK
+\ue056>\u0d48; # REMAP (indicExceptions.txt): \u0d56>\u0d48 = AI LENGTH MARK>VOWEL SIGN AI
+\ue057>\u0d57; # AU LENGTH MARK
+\ue058>\u0d15; # FALLBACK
+\ue059>\u0d16; # REMAP (indicExceptions.txt): \u0d59>\u0d16 = LETTER KHHA>LETTER KHA
+\ue05a>\u0d17; # REMAP (indicExceptions.txt): \u0d5a>\u0d17 = LETTER GHHA>LETTER GA
+\ue05b>\u0d1c; # REMAP (indicExceptions.txt): \u0d5b>\u0d1c = LETTER ZA>LETTER JA
+\ue05d>\u0d22; # REMAP (indicExceptions.txt): \u0d5d>\u0d22 = LETTER RHA>LETTER DDHA
+\ue05c>\u0d21; # FALLBACK
+\ue05e>\u0d2b; # REMAP (indicExceptions.txt): \u0d5e>\u0d2b = LETTER FA>LETTER PHA
+\ue05f>\u0d2f; # REMAP (indicExceptions.txt): \u0d5f>\u0d2f = LETTER YYA>LETTER YA
+\ue060>\u0d60; # LETTER VOCALIC RR
+\ue061>\u0d61; # LETTER VOCALIC LL
+\ue062>; # FALLBACK BLOW AWAY VOWEL SIGN VOCALIC L
+\ue063>; # FALLBACK BLOW AWAY VOWEL SIGN VOCALIC LL
+\ue064>'.'   ; # FALLBACK FOR DANDA
+\ue065>'.'   ; # FALLBACK FOR DOUBLE DANDA	
+\ue066>\u0d66; # DIGIT ZERO
+\ue067>\u0d67; # DIGIT ONE
+\ue068>\u0d68; # DIGIT TWO
+\ue069>\u0d69; # DIGIT THREE
+\ue06a>\u0d6a; # DIGIT FOUR
+\ue06b>\u0d6b; # DIGIT FIVE
+\ue06c>\u0d6c; # DIGIT SIX
+\ue06d>\u0d6d; # DIGIT SEVEN
+\ue06e>\u0d6e; # DIGIT EIGHT
+\ue06f>\u0d6f; # DIGIT NINE
+\ue080>; # UNMAPPED InterIndic-Malayalam: ISSHAR
+\ue070>;
+\ue071>;
+\ue072>;
+\ue073>;
+\ue074>;
+\ue075>;
+\ue076>;
+\ue077>;
+\ue078>;
+\ue079>;
+\ue07A>;
+0 > \u0d66;       # FALLBACK FOR TAMIL
+1 > \u0d67;
+\ue0f0 >  \u0d30;  # FALLBACK RA 
+\ue0f1 >  \u0d30;  # FALLBACK RA
+
+
+#    :: NFC (NFD) ;
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Oriya.txt b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Oriya.txt
new file mode 100755
index 0000000..394e6de
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Oriya.txt
@@ -0,0 +1,134 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_InterIndic_Oriya.txt,v $
+# $Date: 2002/07/25 21:20:26 $
+# $Revision: 1.8 $
+#--------------------------------------------------------------------
+
+# InterIndic-Oriya
+#:: NFD (NFC) ;
+\ue001>\u0b01; # SIGN CANDRABINDU
+\ue002>\u0b02; # SIGN ANUSVARA
+\ue003>\u0b03; # SIGN VISARGA
+\ue005>\u0b05; # LETTER A
+\ue006>\u0b06; # LETTER AA
+\ue007>\u0b07; # LETTER I
+\ue008>\u0b08; # LETTER II
+\ue009>\u0b09; # LETTER U
+\ue00a>\u0b0a; # LETTER UU
+\ue00b>\u0b0b; # LETTER VOCALIC R
+\ue00c>\u0b0c; # LETTER VOCALIC L
+\ue00d>\u0b0f; # FALLBACK
+\ue00e>\u0b0f; # FALLBACK
+\ue00f>\u0b0f; # LETTER E
+\ue010>\u0b10; # LETTER AI
+\ue011>\u0b13; # FALLBACK
+\ue012>\u0b13; # FALLBACK
+\ue013>\u0b13; # UNMAPPED InterIndic-Oriya: LETTER OO (\u0b13 = LETTER O)
+\ue014>\u0b14; # LETTER AU
+\ue015>\u0b15; # LETTER KA
+\ue016>\u0b16; # LETTER KHA
+\ue017>\u0b17; # LETTER GA
+\ue018>\u0b18; # LETTER GHA
+\ue019>\u0b19; # LETTER NGA
+\ue01a>\u0b1a; # LETTER CA
+\ue01b>\u0b1b; # LETTER CHA
+\ue01c>\u0b1c; # LETTER JA
+\ue01d>\u0b1d; # LETTER JHA
+\ue01e>\u0b1e; # LETTER NYA
+\ue01f>\u0b1f; # LETTER TTA
+\ue020>\u0b20; # LETTER TTHA
+\ue021>\u0b21; # LETTER DDA
+\ue022>\u0b22; # LETTER DDHA
+\ue023>\u0b23; # LETTER NNA
+\ue024>\u0b24; # LETTER TA
+\ue025>\u0b25; # LETTER THA
+\ue026>\u0b26; # LETTER DA
+\ue027>\u0b27; # LETTER DHA
+\ue028>\u0b28; # LETTER NA
+\ue029>\u0b28\u0b3c; # REMAP (indicExceptions.txt): \u0b29>\u0b28 = LETTER NNNA>LETTER NA
+\ue02a>\u0b2a; # LETTER PA
+\ue02b>\u0b2b; # LETTER PHA
+\ue02c>\u0b2c; # LETTER BA
+\ue02d>\u0b2d; # LETTER BHA
+\ue02e>\u0b2e; # LETTER MA
+\ue02f>\u0b2f; # LETTER YA
+\ue030>\u0b30; # LETTER RA
+\ue031>\u0b5c; # LETTER RRA
+\ue032>\u0b32; # LETTER LA
+\ue033>\u0b33; # LETTER LLA
+\ue034>\u0b33\u0b3c; # REMAP (indicExceptions.txt): \u0b34>\u0b33 = LETTER LLLA>LETTER LLA
+\ue035>\u0b2c; # REMAP (indicExceptions.txt): \u0b35>\u0b2c = LETTER VA>LETTER BA
+\ue036>\u0b36; # LETTER SHA
+\ue037>\u0b37; # LETTER SSA
+\ue038>\u0b38; # LETTER SA
+\ue039>\u0b39; # LETTER HA
+\ue03c>\u0b3c; # SIGN NUKTA
+\ue03d>\u0b3d; # SIGN AVAGRAHA
+\ue03e>\u0b3e; # VOWEL SIGN AA
+\ue03f>\u0b3f; # VOWEL SIGN I
+\ue040>\u0b40; # VOWEL SIGN II
+\ue041>\u0b41; # VOWEL SIGN U
+\ue042>\u0b42; # VOWEL SIGN UU
+\ue043>\u0b43; # VOWEL SIGN VOCALIC R
+\ue044>\u0b43\u0b3c; # REMAP (indicExceptions.txt): \u0b44>\u0b43\u0b3c = VOWEL SIGN VOCALIC RR>VOWEL SIGN VOCALIC R.SIGN NUKTA
+\ue045>\u0b47; # FALLBACK
+\ue046>\u0b47; # FALLBACK
+\ue047>\u0b47; # VOWEL SIGN E
+\ue048>\u0b48; # VOWEL SIGN AI
+\ue049>\u0b4b; # FALLBACK
+\ue04a>\u0b4b; # FALLBACK
+\ue04b>\u0b4b; # VOWEL SIGN E
+\ue04c>\u0b4c; # VOWEL SIGN AU
+\ue04d>\u0b4d; # SIGN VIRAMA
+\ue050>\u0b13\u0b01; # REMAP (indicExceptions.txt): \u0b50>\u0b13\u0b01 = OM>LETTER O.SIGN CANDRABINDU
+\ue051>;
+\ue052>;
+\ue053>;
+\ue054>;
+\ue055>; # UNMAPPED InterIndic-Oriya: LENGTH MARK
+\ue056>\u0b56; # AI LENGTH MARK
+\ue057>\u0b57; # AU LENGTH MARK
+\ue059>\u0b16\u0b3c; # REMAP (indicExceptions.txt): \u0b59>\u0b16\u0b3c = LETTER KHHA>LETTER KHA.SIGN NUKTA
+\ue058>\u0b15\u0b3c; # FALLBACK
+\ue05a>\u0b17\u0b3c; # REMAP (indicExceptions.txt): \u0b5a>\u0b17\u0b3c = LETTER GHHA>LETTER GA.SIGN NUKTA
+\ue05b>\u0b1c\u0b3c; # REMAP (indicExceptions.txt): \u0b5b>\u0b1c\u0b3c = LETTER ZA>LETTER JA.SIGN NUKTA
+\ue05c>\u0b21\u0b3c; # FALLBACK
+\ue05d>\u0b5d; # LETTER RHA
+\ue05e>\u0b2b\u0b3c; # REMAP (indicExceptions.txt): \u0b5e>\u0b2b\u0b3c = LETTER FA>LETTER PHA.SIGN NUKTA
+\ue05f>\u0b5f; # LETTER YYA
+\ue060>\u0b60; # LETTER VOCALIC RR
+\ue061>\u0b61; # LETTER VOCALIC LL
+\ue062>\u0b56\u0b3c; # REMAP (indicExceptions.txt): \u0b62>\u0b56\u0b3c = VOWEL SIGN VOCALIC L>AI LENGTH MARK.SIGN NUKTA
+\ue063>\u0b57\u0b3c; # REMAP (indicExceptions.txt): \u0b63>\u0b57\u0b3c = VOWEL SIGN VOCALIC LL>AU LENGTH MARK.SIGN NUKTA
+\uE064>\u0964;          # DANDA
+\uE065>\u0965;          # DOUBLE DANDA
+\ue066>\u0b66; # DIGIT ZERO
+\ue067>\u0b67; # DIGIT ONE
+\ue068>\u0b68; # DIGIT TWO
+\ue069>\u0b69; # DIGIT THREE
+\ue06a>\u0b6a; # DIGIT FOUR
+\ue06b>\u0b6b; # DIGIT FIVE
+\ue06c>\u0b6c; # DIGIT SIX
+\ue06d>\u0b6d; # DIGIT SEVEN
+\ue06e>\u0b6e; # DIGIT EIGHT
+\ue06f>\u0b6f; # DIGIT NINE
+\ue070>; # ISSHAR
+\ue071>;
+\ue072>;
+\ue073>;
+\ue074>;
+\ue075>;
+\ue076>;
+\ue077>;
+\ue078>;
+\ue079>;
+\ue07A>;
+0 > \u0b66;       # FALLBACK FOR TAMIL
+1 > \u0b67;
+\ue0f0 >  \u0b30;  # FALLBACK RA 
+\ue0f1 >  \u0b30;  # FALLBACK RA
+#    :: NFC (NFD) ;
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Tamil.txt b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Tamil.txt
new file mode 100755
index 0000000..5370069
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Tamil.txt
@@ -0,0 +1,151 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_InterIndic_Tamil.txt,v $
+# $Date: 2002/07/25 21:20:26 $
+# $Revision: 1.9 $
+#--------------------------------------------------------------------
+
+# InterIndic-Tamil
+#:: NFD (NFC) ;
+\ue001>\u0b82; # FALLBACK SIGN CANDRABINDU
+\ue002>\u0b82; # SIGN ANUSVARA
+\ue003>\u0b83; # SIGN VISARGA
+\ue005>\u0b85; # LETTER A
+\ue006>\u0b86; # LETTER AA
+\ue007>\u0b87; # LETTER I
+\ue008>\u0b88; # LETTER II
+\ue009>\u0b89; # LETTER U
+\ue00a>\u0b8a; # LETTER UU
+\ue00b>\u0bb0\u0bbf; # REMAP (indicExceptions.txt): \u0b8b>\u0bb0\u0bbf = LETTER VOCALIC R>LETTER RA.VOWEL SIGN I
+\ue00c>\u0b87; # REMAP (indicExceptions.txt): \u0b8c>\u0b87 = LETTER VOCALIC L>LETTER I
+\ue00d>\u0b8f; # FALLBACK
+\ue00e>\u0b8e; # LETTER E
+\ue00f>\u0b8f; # LETTER EE
+\ue010>\u0b90; # LETTER AI
+\ue011>\u0b92; # FALLBACK
+\ue012>\u0b92; # LETTER O
+\ue013>\u0b93; # LETTER OO
+\ue014>\u0b94; # LETTER AU
+\ue015>\u0b95; # LETTER KA
+\ue016>\u0b95; # REMAP (indicExceptions.txt): \u0b96>\u0b95 = LETTER KHA>LETTER KA
+\ue017>\u0b95; # REMAP (indicExceptions.txt): \u0b97>\u0b95 = LETTER GA>LETTER KA
+\ue018>\u0b95; # REMAP (indicExceptions.txt): \u0b98>\u0b95 = LETTER GHA>LETTER KA
+\ue019>\u0b99; # LETTER NGA
+\ue01a>\u0b9a; # LETTER CA
+\ue01b>\u0b9a; # REMAP (indicExceptions.txt): \u0b9b>\u0b9a = LETTER CHA>LETTER CA
+\ue01c>\u0b9c; # LETTER JA
+\ue01d>\u0b9a; # REMAP (indicExceptions.txt): \u0b9d>\u0b9a = LETTER JHA>LETTER CA
+\ue01e>\u0b9e; # LETTER NYA
+\ue01f>\u0b9f; # LETTER TTA
+\ue020>\u0b9f; # REMAP (indicExceptions.txt): \u0ba0>\u0b9f = LETTER TTHA>LETTER TTA
+\ue021>\u0b9f; # REMAP (indicExceptions.txt): \u0ba1>\u0b9f = LETTER DDA>LETTER TTA
+\ue022>\u0b9f; # REMAP (indicExceptions.txt): \u0ba2>\u0b9f = LETTER DDHA>LETTER TTA
+\ue023>\u0ba3; # LETTER NNA
+\ue024>\u0ba4; # LETTER TA
+\ue025>\u0ba4; # REMAP (indicExceptions.txt): \u0ba5>\u0ba4 = LETTER THA>LETTER TA
+\ue026>\u0ba4; # REMAP (indicExceptions.txt): \u0ba6>\u0ba4 = LETTER DA>LETTER TA
+\ue027>\u0ba4; # REMAP (indicExceptions.txt): \u0ba7>\u0ba4 = LETTER DHA>LETTER TA
+\ue028\ue03c>\u0ba9;
+\ue028>\u0ba8; # LETTER NA
+\ue029>\u0ba9; # LETTER NNNA
+\ue02a>\u0baa; # LETTER PA
+\ue02b>\u0baa; # REMAP (indicExceptions.txt): \u0bab>\u0baa = LETTER PHA>LETTER PA
+\ue02c>\u0baa; # REMAP (indicExceptions.txt): \u0bac>\u0baa = LETTER BA>LETTER PA
+\ue02d>\u0baa; # REMAP (indicExceptions.txt): \u0bad>\u0baa = LETTER BHA>LETTER PA
+\ue02e>\u0bae; # LETTER MA
+\ue02f>\u0baf; # LETTER YA
+\ue030\ue03c>\u0bb1;
+\ue030>\u0bb0; # LETTER RA
+\ue031>\u0bb1; # LETTER RRA
+\ue032>\u0bb2; # LETTER LA
+\ue033\ue03c>\u0bb4;
+\ue033>\u0bb3; # LETTER LLA
+\ue034>\u0bb4; # LETTER LLLA
+\ue035>\u0bb5; # LETTER VA
+\ue036>\u0bb7; # REMAP (indicExceptions.txt): \u0bb6>\u0bb7 = LETTER SHA>LETTER SSA
+\ue037>\u0bb7; # LETTER SSA
+\ue038>\u0bb8; # LETTER SA
+\ue039>\u0bb9; # LETTER HA
+
+\ue03c>; # FALLBACK BLOW AWAY NUKTA
+\ue03d>; # FALLBACK BLOW AWAY AVAGRAHA
+
+\ue03e>\u0bbe; # VOWEL SIGN AA
+\ue03f>\u0bbf; # VOWEL SIGN I
+\ue040>\u0bc0; # VOWEL SIGN II
+\ue041>\u0bc1; # VOWEL SIGN U
+\ue042>\u0bc2; # VOWEL SIGN UU
+\ue043>\u0bcd\u0bb0\u0bbf; # REMAP (indicExceptions.txt): \u0bc3>\u0bcd\u0bb0\u0bbf = VOWEL SIGN VOCALIC R>SIGN VIRAMA.LETTER RA.VOWEL SIGN I
+\ue044>\u0bcd\u0bb0\u0bbf; # REMAP (indicExceptions.txt): \u0bc4>\u0bcd\u0bb0\u0bbf = VOWEL SIGN VOCALIC RR>SIGN VIRAMA.LETTER RA.VOWEL SIGN I
+\ue045>\u0bbe; # REMAP (indicExceptions.txt): \u0bc5>\u0bbe = VOWEL SIGN CANDRA E>VOWEL SIGN AA
+\ue046>\u0bc6; # VOWEL SIGN E
+\ue047>\u0bc7; # VOWEL SIGN EE
+\ue048>\u0bc8; # VOWEL SIGN AI
+\ue049>\u0bbe; # REMAP (indicExceptions.txt): \u0bc9>\u0bbe = VOWEL SIGN CANDRA O>VOWEL SIGN AA
+\ue04a>\u0bca; # VOWEL SIGN O
+\ue04b>\u0bcb; # VOWEL SIGN OO
+\ue04c>\u0bcc; # VOWEL SIGN AU
+\ue04d>\u0bcd; # SIGN VIRAMA
+\ue050>\u0b93\u0bae\u0bcd; # REMAP (indicExceptions.txt): \u0bd0>\u0b93\u0bae\u0bcd = OM>LETTER OO.LETTER MA.SIGN VIRAMA
+\ue051>;
+\ue052>;
+\ue053>;
+\ue054>;
+\ue055>; # UNMAPPED InterIndic-Tamil: LENGTH MARK
+\ue056>\u0bc8; # REMAP (indicExceptions.txt): \u0bd6>\u0bc8 = AI LENGTH MARK>VOWEL SIGN AI
+\ue057>\u0bd7; # AU LENGTH MARK
+\ue058>\u0b95; # FALLBACK
+\ue059>\u0b95; # REMAP (indicExceptions.txt): \u0bd9>\u0b95 = LETTER KHHA>LETTER KA
+\ue05a>\u0b95; # REMAP (indicExceptions.txt): \u0bda>\u0b95 = LETTER GHHA>LETTER KA
+\ue05b>\u0b9c; # REMAP (indicExceptions.txt): \u0bdb>\u0b9c = LETTER ZA>LETTER JA
+\ue05c>\u0ba4; # FALLBACK
+\ue05d>\u0b9f; # REMAP (indicExceptions.txt): \u0bdd>\u0b9f = LETTER RHA>LETTER TTA
+\ue05e>\u0baa; # REMAP (indicExceptions.txt): \u0bde>\u0baa = LETTER FA>LETTER PA
+\ue05f>\u0baf; # REMAP (indicExceptions.txt): \u0bdf>\u0baf = LETTER YYA>LETTER YA
+\ue060>\u0bb0\u0bbf; # REMAP (indicExceptions.txt): \u0be0>\u0bb0\u0bbf = LETTER VOCALIC RR>LETTER RA.VOWEL SIGN I
+\ue061>\u0b88; # REMAP (indicExceptions.txt): \u0be1>\u0b88 = LETTER VOCALIC LL>LETTER II
+\ue062>\u0bbf;# FALLBACK VOWEL SIGN VOCALIC L
+\ue063>\u0bc0;# FALLBACK VOWEL SIGN VOCALIC LL
+\ue064>'.'   ; # FALLBACK FOR DANDA
+\ue065>'.'   ; # FALLBACK FOR DOUBLE DANDA	
+
+\ue066>\u0030; # FALLBACK DIGIT ZERO
+
+\ue067\ue066\ue066\ue066>\u0bF2;
+\ue067\ue066\ue066>\u0bf1;
+\ue067\ue066>\u0bF0;
+
+\ue067>\u0be7; # DIGIT ONE
+\ue068>\u0be8; # DIGIT TWO
+\ue069>\u0be9; # DIGIT THREE
+\ue06a>\u0bea; # DIGIT FOUR
+\ue06b>\u0beb; # DIGIT FIVE
+\ue06c>\u0bec; # DIGIT SIX
+\ue06d>\u0bed; # DIGIT SEVEN
+\ue06e>\u0bee; # DIGIT EIGHT
+\ue06f>\u0bef; # DIGIT NINE
+
+1000  >\u0BF2;         # UNMAPPED Tamil-InterIndic: NUMBER ONE THOUSAND
+100   >\u0BF1;         # UNMAPPED Tamil-InterIndic: NUMBER ONE HUNDRED
+10    >\u0BF0;         # UNMAPPED Tamil-InterIndic: NUMBER TEN
+
+
+
+\ue080>; # UNMAPPED InterIndic-Tamil: ISSHAR
+\ue070>\u0BF0;
+\ue071>\u0BF2;
+\ue072>\u0BF1;
+\ue073>;
+\ue074>;
+\ue075>;
+\ue076>;
+\ue077>;
+\ue078>;
+\ue079>;
+\ue07A>;
+\ue0f0 >  \u0bb0;  # FALLBACK RA 
+\ue0f1 >  \u0bb0;  # FALLBACK RA
+#    :: NFC (NFD) ;
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Telugu.txt b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Telugu.txt
new file mode 100755
index 0000000..4d137b0
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_InterIndic_Telugu.txt
@@ -0,0 +1,141 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_InterIndic_Telugu.txt,v $
+# $Date: 2002/07/25 21:20:26 $
+# $Revision: 1.8 $
+#--------------------------------------------------------------------
+
+# InterIndic-Telugu
+#:: NFD (NFC) ;
+\ue001>\u0c01; # SIGN CANDRABINDU
+\ue002>\u0c02; # SIGN ANUSVARA
+\ue003>\u0c03; # SIGN VISARGA
+\ue005>\u0c05; # LETTER A
+\ue006>\u0c06; # LETTER AA
+\ue007>\u0c07; # LETTER I
+\ue008>\u0c08; # LETTER II
+\ue009>\u0c09; # LETTER U
+\ue00a>\u0c0a; # LETTER UU
+\ue00b>\u0c0b; # LETTER VOCALIC R
+\ue00c>\u0c0c; # LETTER VOCALIC L
+\ue00d>\u0c0E; # FALLBACK MAPPING
+\ue00e>\u0c0E; # LETTER E
+\ue00f>\u0c0f; # LETTER EE
+\ue010>\u0c10; # LETTER AI
+\ue011>\u0c12; # FALBACK MAPPING
+\ue012>\u0c12; # LETTER O
+\ue013>\u0c13; # LETTER OO
+\ue014>\u0c14; # LETTER AU
+\ue015>\u0c15; # LETTER KA
+\ue016>\u0c16; # LETTER KHA
+\ue017>\u0c17; # LETTER GA
+\ue018>\u0c18; # LETTER GHA
+\ue019>\u0c19; # LETTER NGA
+\ue01a>\u0c1a; # LETTER CA
+\ue01b>\u0c1b; # LETTER CHA
+\ue01c>\u0c1c; # LETTER JA
+\ue01d>\u0c1d; # LETTER JHA
+\ue01e>\u0c1e; # LETTER NYA
+\ue01f>\u0c1f; # LETTER TTA
+\ue020>\u0c20; # LETTER TTHA
+\ue021>\u0c21; # LETTER DDA
+\ue022>\u0c22; # LETTER DDHA
+\ue023>\u0c23; # LETTER NNA
+\ue024>\u0c24; # LETTER TA
+\ue025>\u0c25; # LETTER THA
+\ue026>\u0c26; # LETTER DA
+\ue027>\u0c27; # LETTER DHA
+\ue028>\u0c28; # LETTER NA
+\ue029>\u0c28; # REMAP (indicExceptions.txt): \u0c29>\u0c28 = LETTER NNNA>LETTER NA
+\ue02a>\u0c2a; # LETTER PA
+\ue02b>\u0c2b; # LETTER PHA
+\ue02c>\u0c2c; # LETTER BA
+\ue02d>\u0c2d; # LETTER BHA
+\ue02e>\u0c2e; # LETTER MA
+\ue02f>\u0c2f; # LETTER YA
+\ue030\ue03c>\u0c31;
+\ue030>\u0c30; # LETTER RA
+\ue031>\u0c31; # LETTER RRA
+\ue032>\u0c32; # LETTER LA
+\ue033>\u0c33; # LETTER LLA
+\ue034>\u0c33; # REMAP (indicExceptions.txt): \u0c34>\u0c33 = LETTER LLLA>LETTER LLA
+\ue035>\u0c35; # LETTER VA
+\ue036>\u0c36; # LETTER SHA
+\ue037>\u0c37; # LETTER SSA
+\ue038>\u0c38; # LETTER SA
+\ue039>\u0c39; # LETTER HA
+
+\ue03c>; # FALLBACK BLOW AWAY NUKTA
+\ue03d>; # FALLBACK BLOW AWAY AVAGRAHA
+
+\ue03e>\u0c3e; # VOWEL SIGN AA
+\ue03f>\u0c3f; # VOWEL SIGN I
+\ue040>\u0c40; # VOWEL SIGN II
+\ue041>\u0c41; # VOWEL SIGN U
+\ue042>\u0c42; # VOWEL SIGN UU
+\ue043>\u0c43; # VOWEL SIGN VOCALIC R
+\ue044>\u0c44; # VOWEL SIGN VOCALIC RR
+\ue045>\u0c46; # VOWEL SIGN CANDRA E>VOWEL SIGN E
+\ue047>\u0c47; # VOWEL SIGN EE
+\ue048>\u0c48; # VOWEL SIGN AI
+\ue049>\u0c4a; # REMAP (indicExceptions.txt): \u0c49>\u0c4a = VOWEL SIGN CANDRA O>VOWEL SIGN O
+\ue04b>\u0c4b; # VOWEL SIGN OO
+\ue04c>\u0c4c; # VOWEL SIGN AU
+\ue04d>\u0c4d; # SIGN VIRAMA
+\ue050>\u0c13\u0c02; # REMAP (indicExceptions.txt): \u0c50>\u0c13\u0c02 = OM>LETTER OO.SIGN ANUSVARA
+\ue051>;
+\ue052>;
+\ue053>;
+\ue054>;
+\ue055>\u0c55; # LENGTH MARK
+\ue056>\u0c56; # AI LENGTH MARK
+\ue057>\u0c4c; # REMAP (indicExceptions.txt): \u0c57>\u0c4c = AU LENGTH MARK>VOWEL SIGN AU
+\ue058>\u0c15; # REMAP
+\ue059>\u0c16; # REMAP (indicExceptions.txt): \u0c59>\u0c16 = LETTER KHHA>LETTER KHA
+\ue05a>\u0c17; # REMAP (indicExceptions.txt): \u0c5a>\u0c17 = LETTER GHHA>LETTER GA
+\ue05b>\u0c1c; # REMAP (indicExceptions.txt): \u0c5b>\u0c1c = LETTER ZA>LETTER JA
+\ue05c>\u0c22; # REMAP
+\ue05d>\u0c22; # REMAP (indicExceptions.txt): \u0c5d>\u0c22 = LETTER RHA>LETTER DDHA
+\ue05e>\u0c2b; # REMAP (indicExceptions.txt): \u0c5e>\u0c2b = LETTER FA>LETTER PHA
+\ue05f>\u0c2f; # REMAP (indicExceptions.txt): \u0c5f>\u0c2f = LETTER YYA>LETTER YA
+\ue060>\u0c60; # LETTER VOCALIC RR
+\ue061>\u0c61; # LETTER VOCALIC LL
+\ue062>\u0c3f; # REMAP (indicExceptions.txt): \u0c62>\u0c3f = VOWEL SIGN VOCALIC L>VOWEL SIGN I
+\ue063>\u0c40; # REMAP (indicExceptions.txt): \u0c63>\u0c40 = VOWEL SIGN VOCALIC LL>VOWEL SIGN II
+\ue064>'.'   ; # FALLBACK FOR DANDA
+\ue065>'.'   ; # FALLBACK FOR DOUBLE DANDA	
+\ue066>\u0c66; # DIGIT ZERO
+\ue067>\u0c67; # DIGIT ONE
+\ue068>\u0c68; # DIGIT TWO
+\ue069>\u0c69; # DIGIT THREE
+\ue06a>\u0c6a; # DIGIT FOUR
+\ue06b>\u0c6b; # DIGIT FIVE
+\ue06c>\u0c6c; # DIGIT SIX
+\ue06d>\u0c6d; # DIGIT SEVEN
+\ue06e>\u0c6e; # DIGIT EIGHT
+\ue06f>\u0c6f; # DIGIT NINE
+# \ue080>; # UNMAPPED InterIndic-Telugu: ISSHAR
+
+
+\ue046>\u0c46; # VOWEL SIGN E
+\ue04a>\u0c4a; # VOWEL SIGN O
+\ue070>;
+\ue071>;
+\ue072>;
+\ue073>;
+\ue074>;
+\ue075>;
+\ue076>;
+\ue077>;
+\ue078>;
+\ue079>;
+\ue07A>;
+
+0 > \u0c66;       # FALLBACK FOR TAMIL
+1 > \u0c67;
+\ue0f0 >  \u0c30;  # FALLBACK RA 
+\ue0f1 >  \u0c30;  # FALLBACK RA
+#    :: NFC (NFD) ;
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Kannada_InterIndic.txt b/src/com/ibm/icu/impl/data/Transliterator_Kannada_InterIndic.txt
new file mode 100755
index 0000000..0e5b614
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Kannada_InterIndic.txt
@@ -0,0 +1,94 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Kannada_InterIndic.txt,v $
+# $Date: 2002/03/02 00:27:27 $
+# $Revision: 1.5 $
+#--------------------------------------------------------------------
+
+# Kannada-InterIndic
+\u0CC6\u0CD5>\uE047;        # VOWEL SIGN EE
+\u0CC6\u0CCD\u0CD6>\uE048\ue04d;        # VOWEL SIGN AI
+\u0CC6\u0CD6>\uE048;        # VOWEL SIGN AI
+\u0CC6\u0CC2\u0CD5>\uE04B;  # VOWEL SIGN OO
+\u0CC6\u0CC2>\uE04A;        # VOWEL SIGN O
+\u0CBF\u0CD5>\uE040;        # VOWEL SIGN II
+
+\u0C82>\uE002;              # SIGN ANUSVARA
+\u0C83>\uE003;              # SIGN VISARGA
+\u0C85>\uE005;              # LETTER A
+\u0C86>\uE006;              # LETTER AA
+\u0C87>\uE007;              # LETTER I
+\u0C88>\uE008;              # LETTER II
+\u0C89>\uE009;              # LETTER U
+\u0C8A>\uE00A;              # LETTER UU
+\u0C8B>\uE00B;              # LETTER VOCALIC R
+\u0C8C>\uE00C;              # LETTER VOCALIC L
+\u0C8E>\uE00E;              # LETTER E
+\u0C8F>\uE00F;              # LETTER EE
+\u0C90>\uE010;              # LETTER AI
+\u0C92>\uE012;              # LETTER O
+\u0C93>\uE013;              # LETTER OO
+\u0C94>\uE014;              # LETTER AU
+\u0C95>\uE015;              # LETTER KA
+\u0C96>\uE016;              # LETTER KHA
+\u0C97>\uE017;              # LETTER GA
+\u0C98>\uE018;              # LETTER GHA
+\u0C99>\uE019;              # LETTER NGA
+\u0C9A>\uE01A;              # LETTER CA
+\u0C9B>\uE01B;              # LETTER CHA
+\u0C9C>\uE01C;              # LETTER JA
+\u0C9D>\uE01D;              # LETTER JHA
+\u0C9E>\uE01E;              # LETTER NYA
+\u0C9F>\uE01F;              # LETTER TTA
+\u0CA0>\uE020;              # LETTER TTHA
+\u0CA1>\uE021;              # LETTER DDA
+\u0CA2>\uE022;              # LETTER DDHA
+\u0CA3>\uE023;              # LETTER NNA
+\u0CA4>\uE024;              # LETTER TA
+\u0CA5>\uE025;              # LETTER THA
+\u0CA6>\uE026;              # LETTER DA
+\u0CA7>\uE027;              # LETTER DHA
+\u0CA8>\uE028;              # LETTER NA
+\u0CAA>\uE02A;              # LETTER PA
+\u0CAB>\uE02B;              # LETTER PHA
+\u0CAC>\uE02C;              # LETTER BA
+\u0CAD>\uE02D;              # LETTER BHA
+\u0CAE>\uE02E;              # LETTER MA
+\u0CAF>\uE02F;              # LETTER YA
+\u0CB0>\uE030;              # LETTER RA
+\u0CB1>\uE031;              # LETTER RRA
+\u0CB2>\uE032;              # LETTER LA
+\u0CB3>\uE033;              # LETTER LLA
+\u0CB5>\uE035;              # LETTER VA
+\u0CB6>\uE036;              # LETTER SHA
+\u0CB7>\uE037;              # LETTER SSA
+\u0CB8>\uE038;              # LETTER SA
+\u0CB9>\uE039;              # LETTER HA
+\u0CBE>\uE03E;              # VOWEL SIGN AA
+\u0CBF>\uE03F;              # VOWEL SIGN I
+\u0CC1>\uE041;              # VOWEL SIGN U
+\u0CC2>\uE042;              # VOWEL SIGN UU
+\u0CC3>\uE043;              # VOWEL SIGN VOCALIC R
+\u0CC4>\uE044;              # VOWEL SIGN VOCALIC RR
+\u0CC6>\uE046;              # VOWEL SIGN E
+\u0CCC>\uE04C;              # VOWEL SIGN AU
+\u0CCD>\uE04D;              # SIGN VIRAMA
+\u0CD5>\uE055;              # LENGTH MARK
+\u0CD6>\uE056;              # AI LENGTH MARK
+\u0CDE>\uE05E;              # LETTER FA
+\u0CE0>\uE060;              # LETTER VOCALIC RR
+\u0CE1>\uE061;              # LETTER VOCALIC LL
+\u0CE6>\uE066;              # DIGIT ZERO
+\u0CE7>\uE067;              # DIGIT ONE
+\u0CE8>\uE068;              # DIGIT TWO
+\u0CE9>\uE069;              # DIGIT THREE
+\u0CEA>\uE06A;              # DIGIT FOUR
+\u0CEB>\uE06B;              # DIGIT FIVE
+\u0CEC>\uE06C;              # DIGIT SIX
+\u0CED>\uE06D;              # DIGIT SEVEN
+\u0CEE>\uE06E;              # DIGIT EIGHT
+\u0CEF>\uE06F;              # DIGIT NINE
+
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Latin_InterIndic.txt b/src/com/ibm/icu/impl/data/Transliterator_Latin_InterIndic.txt
new file mode 100755
index 0000000..e659bb5
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Latin_InterIndic.txt
@@ -0,0 +1,385 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Latin_InterIndic.txt,v $
+# $Date: 2002/03/02 00:27:26 $
+# $Revision: 1.7 $
+#--------------------------------------------------------------------
+
+# Latin-InterIndic
+    #:: NFD;
+    #\u0e00 reserved
+    #consonants
+    $chandrabindu=\ue001;
+    $anusvara=\ue002;
+    $visarga=\ue003;
+    #\u0e004 reserved
+    # w<vowel> represents the stand-alone form
+    $wa=\ue005;
+    $waa=\ue006;
+    $wi=\ue007;
+    $wii=\ue008;
+    $wu=\ue009;
+    $wuu=\ue00a;
+    $wr=\ue00b;
+    $wl=\ue00c;
+    $wce=\ue00d; # LETTER CANDRA E
+    $wse=\ue00e; # LETTER SHORT E
+    $we=\ue00f;  # \u090f LETTER E
+    $wai=\ue010;
+    $wco=\ue011; # LETTER CANDRA O
+    $wso=\ue012; # LETTER SHORT O
+    $wo=\ue013;  # \u0913 LETTER O
+    $wau=\ue014;
+    $ka=\ue015;
+    $kha=\ue016;
+    $ga=\ue017;
+    $gha=\ue018;
+    $nga=\ue019;
+    $ca=\ue01a;
+    $cha=\ue01b;
+    $ja=\ue01c;
+    $jha=\ue01d;
+    $nya=\ue01e;
+    $tta=\ue01f;
+    $ttha=\ue020;
+    $dda=\ue021;
+    $ddha=\ue022;
+    $nna=\ue023;
+    $ta=\ue024;
+    $tha=\ue025;
+    $da=\ue026;
+    $dha=\ue027;
+    $na=\ue028;
+    $ena=\ue029; #compatibility
+    $pa=\ue02a;
+    $pha=\ue02b;
+    $ba=\ue02c;
+    $bha=\ue02d;
+    $ma=\ue02e;
+    $ya=\ue02f;
+    $ra=\ue030;
+    $rra=\ue031;
+    $la=\ue032;
+    $lla=\ue033; 
+    $ela=\ue034; #compatibility
+    $va=\ue035;
+    $sha=\ue036;
+    $ssa=\ue037;
+    $sa=\ue038;
+    $ha=\ue039;
+#\u093a Reserved
+#\u093b Reserved
+    $nukta=\ue03c;
+    $avagraha=\ue03d; # SIGN AVAGRAHA
+    # <vowel> represents the dependent form
+    $aa=\ue03e;
+    $i=\ue03f;
+    $ii=\ue040;
+    $u=\ue041;
+    $uu=\ue042;
+    $rh=\ue043;
+    $lh=\ue044;
+    $ce=\ue045; #VOWEL SIGN CANDRA E 
+    $se=\ue046; #VOWEL SIGN SHORT E
+    $e=\ue047;
+    $ai=\ue048;
+    $co=\ue049; # VOWEL SIGN CANDRA O
+    $so=\ue04a; # VOWEL SIGN SHORT O
+    $o=\ue04b;  # \u094b
+    $au=\ue04c;    
+    $virama=\ue04d;
+# \u094e Reserved
+# \u094f Reserved
+   $om = \ue050; # OM
+# \u0951>;        # UNMAPPED STRESS SIGN UDATTA
+# \u0952>;        # UNMAPPED STRESS SIGN ANUDATTA
+# \u0953>;        # UNMAPPED GRAVE ACCENT
+# \u0954>;        # UNMAPPED ACUTE ACCENT
+    $lm = \ue055;#  Telugu Length Mark    
+    $ailm=\ue056;#  AI Length Mark 
+    $aulm=\ue057;#  AU Length Mark 
+     #urdu compatibity forms
+    $uka=\ue058;
+    $ukha=\ue059;
+    $ugha=\ue05a;
+    $ujha=\ue05b;
+    $uddha=\ue05c;
+    $udha=\ue05d;
+    $ufa=\ue05e;
+    $uya=\ue05f;
+    $wrr=\ue060;
+    $wll=\ue061;
+    $rrh=\ue062;
+    $llh=\ue063;
+    $danda=\ue064;
+    $doubleDanda=\ue065;
+    $zero=\ue066;     # DIGIT ZERO
+    $one=\ue067;      # DIGIT ONE
+    $two=\ue068;      # DIGIT TWO
+    $three=\ue069;    # DIGIT THREE
+    $four=\ue06a;     # DIGIT FOUR
+    $five=\ue06b;     # DIGIT FIVE
+    $six=\ue06c;      # DIGIT SIX
+    $seven=\ue06d;    # DIGIT SEVEN
+    $eight=\ue06e;    # DIGIT EIGHT
+    $nine=\ue06f;     # DIGIT NINE
+    # For all other scripts
+    $ecp0=\ue070;
+    $ecp1=\ue071;
+    $ecp2=\ue072;
+    $ecp3=\ue073;
+    $ecp4=\ue074;
+    $ecp5=\ue075;
+    $ecp6=\ue076;
+    $ecp7=\ue077;
+    $ecp8=\ue078;
+    $ecp9=\ue079;
+    $ecpA=\ue07a;
+    $ecpB=\ue07b;
+    $ecpC=\ue07c;
+    $ecpD=\ue07d;
+    $ecpE=\ue07e;
+    $ecpF=\ue07f;
+# \u0970>; # UNMAPPED ABBREVIATION SIGN
+    $depVowelAbove=[\ue03e-\ue040\ue045-\ue04c];
+    $depVowelBelow=[\ue041-\ue044];
+    $endThing=[$danda$doubleDanda];
+    # $x was originally called '&'; $z was '%'
+    $x=[$virama$aa$ai$au$ii$i$uu$u$rrh$rh$lh$e$o$se$ce$so$co];
+    $z=[bcdfghjklmnpqrstvwxyz];
+    $consonants=[[$ka-$ha]$z[\u0915-\u0939][\u0995-\u09b9][\u0a15-\u0a39][\u0a95-\u0ab9][\u0b15-\u0b39][\u0b95-\u0bb9][\u0c15-\u0c39][\u0c95-\u0cb9][\u0d15-\u0d39]];
+    \u0315 > $avagraha;
+    \u0303>$chandrabindu$anusvara;
+    m\u0310>$chandrabindu;
+    h\u0323>$visarga;
+    x>$ka$virama$sa;
+# convert to independent forms at start of word or syllable:
+# dependent forms for roundtrip
+    \u0314a\u0304>$aa;
+    \u0314ai>$ai;
+    \u0314au>$au;
+    \u0314ii>$ii;
+    \u0314i\u0304>$ii;
+    \u0314i>$i;
+    \u0314u\u0304>$uu;
+    \u0314u>$u;
+    \u0314r\u0325\u0304>$rrh;
+    \u0314r\u0325>$rh;
+    \u0314l\u0325\u0304>$llh;
+    \u0314lh>$lh;
+    \u0314l\u0325>$lh;
+    \u0314e\u0304>$e;
+    \u0314o\u0304>$o;
+    \u0314a>;
+    \u0314e\u0306>$ce;
+    \u0314o\u0306>$co;
+    \u0314e>$se;
+    \u0314o>$so;
+
+# preceeded by consonants
+    $consonants{ a\u0304>$aa;
+    $consonants{ ai>$ai;
+    $consonants{ au>$au;
+    $consonants{ ii>$ii;
+    $consonants{ i\u0304>$ii;
+    $consonants{ i>$i;
+    $consonants{ u\u0304>$uu;
+    $consonants{ u>$u;
+    $consonants{ r\u0325\u0304>$rrh;
+    $consonants{ r\u0325a>$rh;
+    $consonants{ r\u0325>$rh;
+    $consonants{ l\u0325\u0304>$llh;
+    $consonants{ lh>$lh;
+    $consonants{ l\u0325>$lh;
+    $consonants{ e\u0304>$e;
+    $consonants{ o\u0304>$o;
+    $consonants{ e\u0306>$ce;
+    $consonants{ o\u0306>$co;
+    $consonants{ e>$se;
+    $consonants{ o>$so;
+
+# e.g. keai -> {ka}{e}{wai}; k'ai -> {ka}{wai}; (ai) -> ({wai})
+    a\u0304>$waa;
+    ai>$wai;
+    au>$wau;
+    i\u0304>$wii;
+    i>$wi;
+    u\u0304>$wuu;
+    u>$wu;
+    r\u0325\u0304>$wrr;
+    r\u0325>$wr;
+    l\u0325\u0304>$wll;
+    lh>$wl;
+    l\u0325>$wl;
+    e\u0304>$we;
+    o\u0304>$wo;
+    a>$wa;
+    e\u0306>$wce;
+    o\u0306>$wco;
+    e>$wse;
+    ''om>$om;
+    o>$wso;
+    
+    # rules for anusvara
+    n}r\u0325           > $na|$virama;
+    n}l\u0325           > $na|$virama;
+    n}na                > $na|$virama;
+    n\u0307}[kg]        > $anusvara;
+    n\u0307}n\u0307     > $anusvara;
+    n\u0304}[cj]        > $anusvara;
+    n\u0304}n\u0303     > $anusvara;
+    n\u0323}[tdn]\u0323 > $anusvara;
+    n}[tdn]             > $anusvara;
+    m}[pbm]             > $anusvara;
+    n}[ylvshr]          > $anusvara;
+    m\u0307             > $anusvara;
+    
+    #urdu compatibility
+    q>$uka|$virama;
+    k\u0331h\u0331>$ukha |$virama;
+    g\u0307> $ugha | $virama;
+    z > $ujha |$virama;
+    f > $ufa|$virama;
+    
+    # dev
+    y\u0307>$uya|$virama;
+    l\u0331>$ela|$virama;
+    n\u0331>$ena|$virama;
+    n\u0307>$nga|$virama;
+    n\u0303>$nya|$virama;
+    n\u0323>$nna|$virama;
+    t\u0323h>$ttha|$virama;
+    t\u0323>$tta|$virama;
+    r\u0323h>$udha|$virama;
+    r\u0323>$uddha|$virama;
+    d\u0323h>$ddha|$virama;
+    d\u0323>$dda|$virama;
+    kh>$kha|$virama;
+    k>$ka|$virama;
+    gh>$gha|$virama;
+    g>$ga|$virama;
+    ch>$cha|$virama;
+    c>$ca|$virama;
+    jh>$jha|$virama;
+    j>$ja|$virama;
+    ny>$nya|$virama;
+    tth>$ttha|$virama;
+    ddh>$ddha|$virama;
+    th>$tha|$virama;
+    t>$ta|$virama;
+    dh>$dha|$virama;
+    d>$da|$virama;
+    n>$na|$virama;
+    ph>$pha|$virama;
+    p>$pa|$virama;
+    bh>$bha|$virama;
+    b>$ba|$virama;
+    m>$ma|$virama;
+    y>$ya|$virama;
+    r\u0331>$rra|$virama;
+    r>$ra|$virama;
+    l\u0323>$lla|$virama;
+    l>$la|$virama;
+    v>$va|$virama;
+    w>$va|$virama;
+    sh>$sha|$virama;
+    ss>$ssa|$virama;
+    s\u0323>$ssa|$virama;
+    s\u0301>$sha|$virama;
+    s>$sa|$virama;
+    h>$ha|$virama;
+    '.'>$danda;
+    $danda'.'>$doubleDanda;
+    $depVowelAbove{'~'>$anusvara;
+    $depVowelBelow{'~'>$chandrabindu;
+# convert to dependent forms after consonant with no vowel:
+# e.g. kai -> {ka}{virama}ai -> {ka}{ai}
+    #$virama aa>$aa;
+    $virama a\u0304>$aa;
+    $virama ai>$ai;
+    $virama au>$au;
+    $virama ii>$ii;
+    $virama i\u0304>$ii;
+    $virama i>$i;
+    #$virama uu>$uu;
+    $virama u\u0304>$uu;
+    $virama u>$u;
+    #$virama rrh>$rrh;
+    $virama r\u0325\u0304>$rrh;
+    #$virama rh>$rh;
+    $virama r\u0325a>$rh;
+    $virama r\u0325>$rh;
+    $virama l\u0325\u0304>$llh;
+    $virama lh>$lh;
+    $virama l\u0325>$lh;
+    $virama e\u0304>$e;
+    $virama o\u0304>$o;
+    $virama a>;
+    $virama e\u0306>$ce;
+    $virama o\u0306>$co;
+    $virama e>$se;
+    $virama o>$so;
+
+
+# otherwise convert independent forms when separated by ': k'ai -> {ka}{virama}{wai}
+    #$virama''aa>$waa;
+    $virama''a\u0304>$waa;
+    $virama''ai>$wai;
+    $virama''au>$wau;
+    #$virama''ii>$wii;
+    $virama''i\u0304>$wii;
+    $virama''i>$wi;
+    #$virama''uu>$wuu;
+    $virama''u\u0304>$wuu;
+    $virama''u>$wu;
+    #$virama''rrh>$wrr;
+    $virama''r\u0325\u0304>$wrr;
+    #$virama''rh>$wr;
+    $virama''r\u0325>$wr;
+    $virama''l\u0325\u0304>$wll;
+    #$virama''lh>$wl;
+    $virama''l\u0325>$wl;
+    $virama''e\u0304>$we;
+    $virama''o\u0304>$wo;
+    $virama''a>$wa;
+    $virama''e\u0306>$wce;
+    $virama''o\u0306>$wco;
+    $virama''e>$wse;
+    $virama''o>$wso;
+# no virama
+    ''a\u0304>$waa;
+    ''ai>$wai;
+    ''au>$wau;
+    ''i\u0304>$wii;
+    ''i>$wi;
+    ''u\u0304>$wuu;
+    ''u>$wu;
+    ''r\u0325\u0304>$wrr;
+    ''r\u0325>$wr;
+    ''l\u0325\u0304>$wll;
+    ''l\u0325>$wl;
+    ''e\u0304>$we;
+    ''o\u0304>$wo;
+    ''a>$wa;
+    ''e\u0306>$wce;
+    ''o\u0306>$wco;
+    ''e>$wse;
+    ''o>$wso;
+
+    $virama } [$z] > $virama;
+    $virama } ' ' > $virama ;
+    $virama}$endThing>;
+    0>$zero;
+    1>$one;
+    2>$two;
+    3>$three;
+    4>$four;
+    5>$five;
+    6>$six;
+    7>$seven;
+    8>$eight;
+    9>$nine;
+    ''>;
+    #:: NFC (NFD) ;
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Latin_Jamo.txt b/src/com/ibm/icu/impl/data/Transliterator_Latin_Jamo.txt
new file mode 100755
index 0000000..7c1f190
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Latin_Jamo.txt
@@ -0,0 +1,526 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Latin_Jamo.txt,v $
+# $Date: 2002/03/02 00:27:27 $
+# $Revision: 1.5 $
+#--------------------------------------------------------------------
+
+#- N.B. DO NOT put any filters, NFD, etc. here -- those are aliased in
+#- the INDEX file.  This transliterator is, by itself, not
+#- instantiated.  It is used as a part of Latin-Jamo, Latin-Hangul, or
+#- inverses thereof.
+
+# Transliteration from Latin characters to Korean script is done in
+# two steps: Latin to Jamo, then Jamo to Hangul.  The Jamo-Hangul
+# transliteration is done algorithmically following Unicode 3.0
+# section 3.11.  This file implements the Latin to Jamo
+# transliteration using rules.
+
+# Jamo occupy the block 1100-11FF.  Within this block there are three
+# groups of characters: initial consonants or choseong (I), medial
+# vowels or jungseong (M), and trailing consonants or jongseong (F).
+# Standard Korean syllables are of the form I+M+F*.
+
+# Section 3.11 describes the use of 'filler' jamo to convert
+# nonstandard syllables to standard form: the choseong filler 115F and
+# the junseong filler 1160.  In this transliterator, we will not use
+# 115F or 1160.
+
+# We will, however, insert two 'null' jamo to make foreign words
+# conform to Korean syllable structure.  These are the null initial
+# consonant 110B (IEUNG) and the null vowel 1173 (EU).  In Latin text,
+# we will use the separator in order to disambiguate strings,
+# e.g. "kan-ggan" (initial GG) vs. "kanggan" (final NG + initial G).
+
+# We will not use all of the characters in the jamo block.  We will
+# only use the 19 initials, 21 medials, and 27 finals possessing a
+# jamo short name as defined in section 4.4 of the Unicode book.
+
+# Rules of thumb.  These guidelines provide the basic framework
+# for the rules.  They are phrased in terms of Latin-Jamo transliteration.
+# The Jamo-Latin rules derive from these, since the Jamo-Latin rules are
+# just context-free transliteration of jamo to corresponding short names,
+# with the addition of separators to maintain round-trip integrity
+# in the context of the Latin-Jamo rules.
+
+# A sequence of vowels:
+# - Take the longest sequence you can. If there are too many, or you don't
+#   have a starting consonant, introduce a 110B necessary.
+
+# A sequence of consonants.
+# - First join the double consonants: G + G -> GG
+# - In the remaining list,
+# -- If there is no preceding vowel, take the first consonant, and insert EU
+#    after it. Continue with the rest of the consonants.
+# -- If there is one consonant, attach to the following vowel
+# -- If there are two consonants and a following vowel, attach one to the
+#    preceeding vowel, and one to the following vowel.
+# -- If there are more than two consonants, join the first two together if you
+#    can: L + G => LG
+# -- If you still end up with more than 2 consonants, insert EU after the
+#    first one, and continue with the rest of the consonants.
+
+#----------------------------------------------------------------------
+# Variables
+
+# Some latin consonants or consonant pairs only occur as initials, and
+# some only as finals, but some occur as both.  This makes some jamo
+# consonants ambiguous when transliterated into latin.
+#   Initial only: IEUNG BB DD JJ R
+#   Final only: BS GS L LB LG LH LM LP LS LT NG NH NJ
+#   Initial and Final: B C D G GG H J K M N P S SS T
+
+  $Gi = \u1100;
+  $GGi = \u1101;
+  $Ni = \u1102;
+  $Di = \u1103;
+  $DD = \u1104;
+  $R = \u1105;
+  $Mi = \u1106;
+  $Bi = \u1107;
+  $BB = \u1108;
+  $Si = \u1109;
+  $SSi = \u110A;
+  $IEUNG = \u110B; # null initial, inserted during Latin-Jamo
+  $Ji = \u110C;
+  $JJ = \u110D;
+  $Ci = \u110E;
+  $Ki = \u110F;
+  $Ti = \u1110;
+  $Pi = \u1111;
+  $Hi = \u1112;
+
+  $A = \u1161;
+  $AE = \u1162;
+  $YA = \u1163;
+  $YAE = \u1164;
+  $EO = \u1165;
+  $E = \u1166;
+  $YEO = \u1167;
+  $YE = \u1168;
+  $O = \u1169;
+  $WA = \u116A;
+  $WAE = \u116B;
+  $OE = \u116C;
+  $YO = \u116D;
+  $U = \u116E;
+  $WEO = \u116F;
+  $WE = \u1170;
+  $WI = \u1171;
+  $YU = \u1172;
+  $EU = \u1173; # null medial, inserted during Latin-Jamo
+  $YI = \u1174;
+  $I = \u1175;
+
+  $Gf = \u11A8;
+  $GGf = \u11A9;
+  $GS = \u11AA;
+  $Nf = \u11AB;
+  $NJ = \u11AC;
+  $NH = \u11AD;
+  $Df = \u11AE;
+  $L = \u11AF;
+  $LG = \u11B0;
+  $LM = \u11B1;
+  $LB = \u11B2;
+  $LS = \u11B3;
+  $LT = \u11B4;
+  $LP = \u11B5;
+  $LH = \u11B6;
+  $Mf = \u11B7;
+  $Bf = \u11B8;
+  $BS = \u11B9;
+  $Sf = \u11BA;
+  $SSf = \u11BB;
+  $NG = \u11BC;
+  $Jf = \u11BD;
+  $Cf = \u11BE;
+  $Kf = \u11BF;
+  $Tf = \u11C0;
+  $Pf = \u11C1;
+  $Hf = \u11C2;
+  
+  $jamoInitial = [\u1100-\u1112];
+
+  $jamoMedial = [\u1161-\u1175];
+
+  $latinInitial = [bcdghjkmnprst];
+
+  # Any character in the latin transliteration of a medial
+  $latinMedial = [aeiouwy];
+
+  # The last character of the latin transliteration of a medial
+  $latinMedialEnd = [aeiou];
+
+  # Disambiguation separator
+  $sep = \';
+
+#----------------------------------------------------------------------
+# Jamo-Latin
+
+# Jamo to latin is relatively simple, since it is the latin that is
+# ambiguous.  Most rules are straightforward, and we encode them below
+# as simple add-on back rule, e.g.:
+
+#   $jamoMedial {bs} > $BS;
+
+# becomes
+
+#   $jamoMedial {bs} <> $BS;
+
+# Furthermore, we don't care about the ordering for Jamo-Latin because
+# we are going from single characters, so we can very easily piggyback
+# on the Latin-Jamo.
+
+# The main issue with Jamo-Latin is when to insert separators.
+# Separators are inserted to obtain correct round trip behavior.  For
+# example, the sequence Ki A Gf Gi E, if transliterated to "kagge",
+# would then round trip to Ki A GGi E.  To prevent this, we insert a
+# separator: "kag-ge".  IMPORTANT: The need for separators depends
+# very specifically on the behavior of the Latin-Jamo rules.  A change
+# in the Latin-Jamo behavior can completely change the way the
+# separator insertion must be done.
+
+# First try to preserve actual separators in the jamo text by doubling
+# them.  This fixes problems like:
+# (Di)(A)(Ji)(U)(NG)-(IEUNG)(YEO)(Nf)(Gi)(YEO)(L) => dajung-yeongyeol
+# => (Di)(A)(Ji)(U)(NG)(IEUNG)(YEO)(Nf)(Gi)(YEO)(L).  This is optional
+# -- if we don't care about losing separators in the jamo, we can delete
+# this rule.
+
+  $sep $sep <> $sep;
+
+# Triple consonants.  For three consonants "axxx" we insert a
+# separator between the first and second "x" if XXf, Xf, and Xi all
+# exist, and we have A Xf XXi.  This prevents the reverse
+# transliteration to A XXf Xi.
+
+  $sep < $latinMedialEnd g {} $GGi;
+  $sep < $latinMedialEnd s {} $SSi;
+
+# For vowels the rule is similar.  If there is a vowel "ae" such that
+# "a" by itself and "e" by itself are vowels, then we want to map A E
+# to "a-e" so as not to round trip to AE.  However, in the text Ki EO
+# IEUNG E we don't need to map to "keo-e".  "keoe" suffices.  For
+# vowels of the form "aei", both "ae" + "i" and "a" + "ei" must be
+# tested.  NOTE: These rules used to have a left context of
+# $latinInitial instead of [^$latinMedial].  The problem with this is
+# sequences where an initial IEUNG is transliterated away:
+#   (IEUNG)(A)(IEUNG)(EO) => aeo => (IEUNG)(AE)(IEUNG)(O)
+
+  $sep < [^$latinMedial] [y w] e {} [$O $OE];
+  $sep < [^$latinMedial] e {} [$O $OE $U];
+  $sep < [^$latinMedial] [o a] {} [$E $EO $EU];
+  $sep < [^$latinMedial] [w y] a {} [$E $EO $EU];
+
+# Similar to the above, but with an intervening $IEUNG.
+
+  $sep < [^$latinMedial] [y w] e {} $IEUNG [$O $OE];
+  $sep < [^$latinMedial] e {} $IEUNG [$O $OE $U];
+  $sep < [^$latinMedial] [o a] {} $IEUNG [$E $EO $EU];
+  $sep < [^$latinMedial] [w y] a {} $IEUNG [$E $EO $EU];
+
+# Single finals followed by IEUNG.  The jamo sequence A Xf IEUNG E,
+# where Xi also exists, must be transliterated as "ax-e" to prevent
+# the round trip conversion to A Xi E.
+
+  $sep < $latinMedialEnd b {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd c {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd d {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd g {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd h {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd j {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd k {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd m {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd n {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd p {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd s {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd t {} $IEUNG $jamoMedial;
+
+# Double finals followed by IEUNG.  Similar to the single finals
+# followed by IEUNG.  Any latin consonant pair X Y, between medials,
+# that we would split by Latin-Jamo, we must handle when it occurs as
+# part of A XYf IEUNG E, to prevent round trip conversion to A Xf Yi
+# E.
+
+  $sep < $latinMedialEnd b s {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd g g {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd g s {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd l b {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd l g {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd l h {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd l m {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd l p {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd l s {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd l t {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd n g {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd n h {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd n j {} $IEUNG $jamoMedial;
+  $sep < $latinMedialEnd s s {} $IEUNG $jamoMedial;
+
+# Split doubles.  Text of the form A Xi Xf E, where XXi also occurs,
+# we transliterate as "ax-xe" to prevent round trip transliteration as
+# A XXi E.
+
+  $sep < $latinMedialEnd b {} $Bi $jamoMedial;
+  $sep < $latinMedialEnd d {} $Di $jamoMedial;
+  $sep < $latinMedialEnd j {} $Ji $jamoMedial;
+  $sep < $latinMedialEnd g {} $Gi $jamoMedial;
+  $sep < $latinMedialEnd s {} $Si $jamoMedial;
+
+# XYY.  This corresponds to the XYY rule in Latin-Jamo.  By default
+# Latin-Jamo maps "xyy" to Xf YYi, to keep YY together.  As a result,
+# "xyy" forms that correspond to XYf Yi must be transliterated as
+# "xy-y".
+
+  $sep < $latinMedialEnd b s {} [$Si $SSi];
+  $sep < $latinMedialEnd g s {} [$Si $SSi];
+  $sep < $latinMedialEnd l b {} [$Bi $BB];
+  $sep < $latinMedialEnd l g {} [$Gi $GGi];
+  $sep < $latinMedialEnd l s {} [$Si $SSi];
+  $sep < $latinMedialEnd n g {} [$Gi $GGi];
+  $sep < $latinMedialEnd n j {} [$Ji $JJ];
+
+# Deletion of IEUNG is handled below.
+
+#----------------------------------------------------------------------
+# Latin-Jamo
+
+# [Basic, context-free Jamo-Latin rules are embedded here too.  See
+# above.]
+
+# Split digraphs: Text of the form 'axye', where 'xy' is a final
+# digraph, 'x' is a final (by itself), 'y' is an initial, and 'a' and
+# 'e' are medials, we want to transliterate this as A Xf Yi E rather
+# than A XYf IEUNG E.  We do NOT include text of the form "axxe",
+# since that is handled differently below.  These rules are generated
+# programmatically from the jamo data.
+
+  $jamoMedial {b s} $latinMedial > $Bf $Si;
+  $jamoMedial {g s} $latinMedial > $Gf $Si;
+  $jamoMedial {l b} $latinMedial > $L $Bi;
+  $jamoMedial {l g} $latinMedial > $L $Gi;
+  $jamoMedial {l h} $latinMedial > $L $Hi;
+  $jamoMedial {l m} $latinMedial > $L $Mi;
+  $jamoMedial {l p} $latinMedial > $L $Pi;
+  $jamoMedial {l s} $latinMedial > $L $Si;
+  $jamoMedial {l t} $latinMedial > $L $Ti;
+  $jamoMedial {n g} $latinMedial > $Nf $Gi;
+  $jamoMedial {n h} $latinMedial > $Nf $Hi;
+  $jamoMedial {n j} $latinMedial > $Nf $Ji;
+
+# Single consonants are initials: Text of the form 'axe', where 'x'
+# can be an initial or a final, and 'a' and 'e' are medials, we want
+# to transliterate as A Xi E rather than A Xf IEUNG E.
+
+  $jamoMedial {b} $latinMedial > $Bi;
+  $jamoMedial {c} $latinMedial > $Ci;
+  $jamoMedial {d} $latinMedial > $Di;
+  $jamoMedial {g} $latinMedial > $Gi;
+  $jamoMedial {h} $latinMedial > $Hi;
+  $jamoMedial {j} $latinMedial > $Ji;
+  $jamoMedial {k} $latinMedial > $Ki;
+  $jamoMedial {m} $latinMedial > $Mi;
+  $jamoMedial {n} $latinMedial > $Ni;
+  $jamoMedial {p} $latinMedial > $Pi;
+  $jamoMedial {s} $latinMedial > $Si;
+  $jamoMedial {t} $latinMedial > $Ti;
+
+# Doubled initials.  The sequence "axxe", where XX exists as an initial
+# (XXi), and also Xi and Xf exist (true of all digraphs XX), we want
+# to transliterate as A XXi E, rather than split to A Xf Xi E.
+
+  $jamoMedial {b b} $latinMedial > $BB;
+  $jamoMedial {d d} $latinMedial > $DD;
+  $jamoMedial {j j} $latinMedial > $JJ;
+  $jamoMedial {g g} $latinMedial > $GGi;
+  $jamoMedial {s s} $latinMedial > $SSi;
+
+# XYY.  Because doubled consonants bind more strongly than XY
+# consonants, we must handle the sequence "axyy" specially.  Here XYf
+# and YYi must exist.  In these cases, we map to Xf YYi rather than
+# XYf.
+
+  $jamoMedial {b} s s > $Bf;
+  $jamoMedial {g} s s > $Gf;
+  $jamoMedial {l} b b > $L;
+  $jamoMedial {l} g g > $L;
+  $jamoMedial {l} s s > $L;
+  $jamoMedial {n} g g > $Nf;
+  $jamoMedial {n} j j > $Nf;
+
+# Finals: Attach consonant with preceding medial to preceding medial.
+# Do this BEFORE mapping consonants to initials.  Longer keys must
+# precede shorter keys that they start with, e.g., the rule for 'bs'
+# must precede 'b'.
+
+# [BASIC Jamo-Latin FINALS handled here.  Order irrelevant within this
+# block for Jamo-Latin.]
+
+  $jamoMedial {bs} <> $BS;
+  $jamoMedial {b} <> $Bf;
+  $jamoMedial {c} <> $Cf;
+  $jamoMedial {d} <> $Df;
+  $jamoMedial {gg} <> $GGf;
+  $jamoMedial {gs} <> $GS;
+  $jamoMedial {g} <> $Gf;
+  $jamoMedial {h} <> $Hf;
+  $jamoMedial {j} <> $Jf;
+  $jamoMedial {k} <> $Kf;
+  $jamoMedial {lb} <> $LB;  $jamoMedial {lg} <> $LG;
+  $jamoMedial {lh} <> $LH;
+  $jamoMedial {lm} <> $LM;
+  $jamoMedial {lp} <> $LP;
+  $jamoMedial {ls} <> $LS;
+  $jamoMedial {lt} <> $LT;
+  $jamoMedial {l} <> $L;
+  $jamoMedial {m} <> $Mf;
+  $jamoMedial {ng} <> $NG;
+  $jamoMedial {nh} <> $NH;
+  $jamoMedial {nj} <> $NJ;
+  $jamoMedial {n} <> $Nf;
+  $jamoMedial {p} <> $Pf;
+  $jamoMedial {ss} <> $SSf;
+  $jamoMedial {s} <> $Sf;
+  $jamoMedial {t} <> $Tf;
+
+# Initials: Attach single consonant to following medial.  Do this
+# AFTER mapping finals.  Longer keys must precede shorter keys that
+# they start with, e.g., the rule for 'gg' must precede 'g'.
+
+# [BASIC Jamo-Latin INITIALS handled here.  Order irrelevant within
+# this block for Jamo-Latin.]
+
+  {gg} $latinMedial <> $GGi;
+  {g} $latinMedial <> $Gi;
+  {n} $latinMedial <> $Ni;
+  {dd} $latinMedial <> $DD;
+  {d} $latinMedial <> $Di;
+  {r} $latinMedial <> $R;
+  {m} $latinMedial <> $Mi;
+  {bb} $latinMedial <> $BB;
+  {b} $latinMedial <> $Bi;
+  {ss} $latinMedial <> $SSi;
+  {s} $latinMedial <> $Si;
+  {jj} $latinMedial <> $JJ;
+  {j} $latinMedial <> $Ji;
+  {c} $latinMedial <> $Ci;
+  {k} $latinMedial <> $Ki;
+  {t} $latinMedial <> $Ti;
+  {p} $latinMedial <> $Pi;
+  {h} $latinMedial <> $Hi;
+
+# 'r' in final position.  Because of the equivalency of the 'l' and
+# 'r' jamo (the glyphs are the same), we try to provide the same
+# equivalency in Latin-Jamo.  The 'l' to 'r' conversion is handled
+# below.  If we see an 'r' in an apparent final position, treat it
+# like 'l'.  For example, "karka" => Ki A R EU Ki A without this rule.
+# Instead, we want Ki A L Ki A.
+
+  $jamoMedial {r} $latinInitial > | l;
+
+# Initial + Final: If we match the next rule, we have initial then
+# final consonant with no intervening medial.  We insert the null
+# vowel BEFORE it to create a well-formed syllable.  (In the next rule
+# we insert a null vowel AFTER an anomalous initial.)
+
+  $jamoInitial {} [bcdghjklmnpst] > $EU;
+
+# Initial + X: This block matches an initial consonant not followed by
+# a medial.  We insert the null vowel after it.  We handle double
+# initials explicitly here; for single initial consonants we insert EU
+# (as Latin) after them and let standard rules do the rest.
+
+# BREAKS ROUND TRIP INTEGRITY
+
+  gg > $GGi $EU;
+  dd > $DD $EU;
+  bb > $BB $EU;
+  ss > $SSi $EU;
+  jj > $JJ $EU;
+
+  ([bcdghjkmnprst]) > | $1 eu;
+
+# X + Final: Finally we have to deal with a consonant that can only be
+# interpreted as a final (not an initial) and which is preceded
+# neither by an initial nor a medial.  It is the start of the
+# syllable, but cannot be.  Most of these will already be handled by
+# the above rules.  'bs' splits into Bi EU Sf.  Similar for 'gs' 'ng'
+# 'nh' 'nj'.  The only problem is 'l' and digraphs starting with 'l'.
+# For this isolated case, we could add a null initial and medial,
+# which would give "la" => IEUNG EU L IEUNG A, for example.  A more
+# economical solution is to transliterate isolated "l" (that is,
+# initial "l") to "r".  (Other similar conversions of consonants that
+# occur neither as initials nor as finals are handled below.)
+
+  l > | r;
+
+# Medials.  If a medial is preceded by an initial, then we proceed
+# normally.  As usual, longer keys must precede shorter ones.
+
+# [BASIC Jamo-Latin MEDIALS handled here.  Order irrelevant within
+# this block for Jamo-Latin.]
+
+  $jamoInitial {ae} <> $AE;
+  $jamoInitial {a} <> $A;
+  $jamoInitial {eo} <> $EO;
+  $jamoInitial {eu} <> $EU;
+  $jamoInitial {e} <> $E;
+  $jamoInitial {i} <> $I;
+  $jamoInitial {oe} <> $OE;
+  $jamoInitial {o} <> $O;
+  $jamoInitial {u} <> $U;
+  $jamoInitial {wae} <> $WAE;
+  $jamoInitial {wa} <> $WA;
+  $jamoInitial {weo} <> $WEO;
+  $jamoInitial {we} <> $WE;
+  $jamoInitial {wi} <> $WI;
+  $jamoInitial {yae} <> $YAE;
+  $jamoInitial {ya} <> $YA;
+  $jamoInitial {yeo} <> $YEO;
+  $jamoInitial {ye} <> $YE;
+  $jamoInitial {yi} <> $YI;
+  $jamoInitial {yo} <> $YO;
+  $jamoInitial {yu} <> $YU;
+
+# We may see an anomalous isolated 'w' or 'y'.  In that case, we
+# interpret it as 'wi' and 'yu', respectively.
+
+# BREAKS ROUND TRIP INTEGRITY
+
+  $jamoInitial {w} > | wi;
+  $jamoInitial {y} > | yu;
+
+# Otherwise, insert a null consonant IEUNG before the medial (which is
+# still an untransliterated latin vowel).
+
+  ($latinMedial) > $IEUNG | $1;
+
+# Convert non-jamo latin consonants to equivalents.  These occur as
+# neither initials nor finals in jamo.  'l' occurs as a final, but not
+# an initial; it is handled above.  The following letters (left hand
+# side) will never be output by Jamo-Latin.
+
+  f > | p;
+  q > | k;
+  v > | b;
+  x > | ks;
+  z > | s;
+
+# Delete separators (Latin-Jamo).
+
+  $sep > ;
+
+# Delete null consonants (Jamo-Latin).  Do NOT delete null EU vowels,
+# since these may also occur in text.
+
+  < $IEUNG;
+
+#- N.B. DO NOT put any filters, NFD, etc. here -- those are aliased in
+#- the INDEX file.  This transliterator is, by itself, not
+#- instantiated.  It is used as a part of Latin-Jamo, Latin-Hangul, or
+#- inverses thereof.
+
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Latin_Katakana.txt b/src/com/ibm/icu/impl/data/Transliterator_Latin_Katakana.txt
new file mode 100755
index 0000000..11c5961
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Latin_Katakana.txt
@@ -0,0 +1,499 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Latin_Katakana.txt,v $
+# $Date: 2001/12/03 02:10:26 $
+# $Revision: 1.19 $
+#--------------------------------------------------------------------
+
+# note: a global filter is more efficient, but MUST include all source chars
+#:: [\u0000-\u007E \u3001\u3002 \u3099-\u309C \u30A1-\u30FC \uFF61-\uFF9F [:Latin:][:Katakana:] [:nonspacing mark:]] ;
+# MINIMAL FILTER GENERATED FOR: Latin-Katakana
+### WARNING -- must add width filter, both here and below!!! ###
+:: [[\u1100-\u1112\u111A\u1121\u1160-\u1175\u11AA\u11AC-\u11AD\u11B0-\u11B5\u2190-\u2193\u2502\u25A0\u25CB\u3000-\u3002\u300C-\u300D\u3099-\u309A\u30A1-\u30ED\u30EF\u30F2-\u30F4\u30F7\u30FA-\u30FC\uFF01-\uFF5E\uFFE0-\uFFE6][',.A-Za-z~\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01ED\u01F0\u01F4-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u0304\u04E2-\u04E3\u04EE-\u04EF\u1E00-\u1E99\u1EA0-\u1EF9\u1FB1\u1FB9\u1FD1\u1FD9\u1FE1\u1FE9\u212A-\u212B]] ;
+
+:: [:Latin:] fullwidth-halfwidth ();
+:: NFD (NFC);
+:: Lower ();    # whenever transliterating from cased to uncased script, include this
+# :: NFD () ;   # this would catch the odd cases where a lowercase is not in NFD, but none are important for Japanese
+
+# Uses modified Hepburn. Small changes to make  unambiguous.
+
+# | Kunrei-shiki: Hepburn/MHepburn
+# | ------------------------------
+# | si: shi
+# | si ~ya: sha
+# | si ~yu: shu
+# | si ~yo: sho
+# | zi: ji
+# | zi ~ya: ja
+# | zi ~yu: ju
+# | zi ~yo: jo
+# | ti: chi
+# | ti ~ya: cha
+# | ti ~yu: chu
+# | ti ~yu: cho
+# | tu: tsu
+# | di: ji/dji
+# | du: zu/dzu
+# | hu: fu
+
+# | For foreign words:
+# | -----------------
+# | se ~i si
+# | si ~e she
+# | 
+# | ze ~i zi
+# | zi ~e je
+# | 
+# | te ~i ti
+# | ti ~e che
+# | te ~u tu
+# | 
+# | de ~i di
+# | de ~u du
+# | de ~i di
+# | 
+# | he ~u: hu
+# | hu ~a fa
+# | hu ~i fi
+# | hu ~e he
+# | hu ~o ho
+
+# Most small forms are generated, but if necessary
+# explicit small forms are given with ~a, ~ya, etc.
+
+#------------------------------------------------------
+# Variables
+
+$vowel = [aeiou] ;
+$consonant = [bcdfghjklmnpqrstvwxyz] ;
+$macron = \u0304 ;
+
+# Variables used for doubled-consonants with tsu
+
+$kana = [\u3041-\u3094] ;
+
+$voice = [\u3099\u309B];
+$semivoice = [\u309A\u309C];
+
+$k_start = [カキクケコかきくけこ] ;
+
+$s_start = [サシスセソさしすせそ] ;
+
+$j_start = [シし] $voice ;
+
+$t_start = [タチツテトたちつてと] ;
+
+$n_start = [ナニヌネノンなにぬねの] ;
+
+$h_start = [ハヒヘホはひへほ] ;
+$f_start = [フふ] ;
+
+$m_start = [マミムメモまみむめも] ;
+
+$y_start = [ヤユヨやゆよ] ;
+
+$r_start = [ラリルレロらりるれろ] ;
+
+$w_start = [ワヰヱヲわゐゑを] ;
+
+$v_start = [ワヰヱヲ]゙ ;
+
+# if ン is followed by $n_quoter, then it needs an
+# apostrophe after its romaji form to disambiguate it.
+# e.g., ン ア ! =  ナ, so represent as "n'a", not "na".
+
+$n_quoter  =  [ア イ ウ エ オ ナ ニ ヌ ネ ノ ヤ ユ ヨ ン] ;
+
+$small_y = [ャィュェョ] ;
+
+$iteration = \u309D ;
+
+#------------------------------------------------------
+# katakana rules
+
+# Punctuation
+
+'.' <> 。;
+',' <> 、;
+# ' ' } [a-z] > ; # delete spaces before latin
+# ' ' < [^' '\u30A0-\u30ff] {} ['\u30A0-\u30ff] ; #insert spaces before hiragana
+
+# Iteration Mark
+# Copy previous letter & marks
+
+# TODO
+# | $1 $1 < ($kana [[:M:]$voice$semivoice]?) $iteration
+
+# Specials for katakana -- not shared with hiragana
+
+va <> ヷ ;
+vi <> ヸ ;
+ve <> ヹ ;
+vo <> ヺ ;
+'~ka' <> ヵ ;
+'~ke' <> ヶ ;
+
+# ~~~ begin shared rules ~~~
+
+#special
+
+ya < '~'ャ;
+yi < '~'ィ ;
+yu < '~'ュ;
+ye < '~'ェ;
+yo < '~'ョ;
+
+#normal
+
+a <> ア ;
+
+b | '~' < ヒ ゙} $small_y ;
+by } $vowel > ビ | '~y' ;
+
+ba <> バ ;
+bi <> ビ ;
+bu <> ブ ;
+be <> ベ ;
+bo <> ボ ;
+
+c } i > | s ;
+c } e > | s ;
+
+da <> ダ ;
+di <> ディ ;
+du <> デゥ ;
+de <> デ ;
+do <> ド ;
+dzu <> ヅ ;
+dja < ヂャ ;
+dji'~i' < ヂィ ; # liu
+dju < ヂュ ;
+dje < ヂェ ;
+djo < ヂョ ;
+dji <> ヂ ;
+dj  } $vowel > ヂ | '~y' ;
+
+# TODO: QUESTION: use ĵĴżŻ instead of dj, dz
+
+cha < チャ ;
+chi'~i' < チィ ; # liu
+chu < チュ ;
+che < チェ ;
+cho < チョ ;
+chi <> チ ;
+ch } $vowel > チ | '~y' ;
+
+e <> エ ;
+
+g | '~' < ギ} $small_y ;
+gy  } $vowel > ギ | '~y' ;
+
+ga <> ガ ;
+gi <> ギ ;
+gu <> グ ;
+ge <> ゲ ;
+go <> ゴ ;
+
+i <> イ ;
+
+# j  } $vowel > ジ | '~y' ;
+
+ja <> ジャ ;
+ji'~i' < ジィ ; # liu
+ju <> ジュ ;
+je <> ジェ ;
+jo <> ジョ ;
+ji <> ジ ;
+
+k | '~' < キ} $small_y ;
+ky  } $vowel > キ | '~y' ;
+
+ka <> カ ;
+ki <> キ ;
+ku <> ク ;
+ke <> ケ ;
+ko <> コ ;
+
+m | '~' < ミ} $small_y ;
+my  } $vowel > ミ | '~y' ;
+
+ma <> マ ;
+mi <> ミ ;
+mu <> ム ;
+me <> メ ;
+mo <> モ ;
+
+m } [pbfv] > ン ;
+
+n | '~' < ニ } $small_y ;
+ny  } $vowel > ニ | '~y' ;
+
+na <> ナ ;
+ni <> ニ ;
+nu <> ヌ ;
+ne <> ネ ;
+no <> ノ ;
+
+o <> オ ;
+
+p | '~' < ピ } $small_y ;
+py  } $vowel > ピ | '~y' ;
+
+pa <> パ ;
+pi <> ピ ;
+pu <> プ ;
+pe <> ペ ;
+po <> ポ ;
+
+h | '~' < ヒ } $small_y ;
+hy  } $vowel > ヒ | '~y' ;
+
+ha <> ハ ;
+hi <> ヒ ;
+hu <> ヘゥ ;
+he <> ヘ ;
+ho <> ホ ;
+
+# f | '~' < フ } $small_y ;
+# f } $vowel > フ | '~' ;
+
+fa <> ファ ;
+fi <> フィ ;
+fe <> フェ ;
+fo <> フォ ;
+fu <> フ ;
+
+r | '~' < リ } $small_y ;
+ry  } $vowel > リ | '~y' ;
+
+ra <> ラ ;
+ri <> リ ;
+ru <> ル ;
+re <> レ ;
+ro <> ロ ;
+
+za <> ザ ;
+zi <> ゼィ ;
+zu <> ズ ;
+ze <> ゼ ;
+zo <> ゾ ;
+
+sa <> サ ;
+si <> セィ ;
+su <> ス ;
+se <> セ ;
+so <> ソ ;
+
+sha < シャ ;
+shi'~i' < シィ ; # liu
+shu < シュ ;
+she < シェ ;
+sho < ショ ;
+shi <> シ ;
+sh } $vowel > シ | '~y' ;
+
+ta <> タ ;
+ti <> ティ ;
+tu <> テゥ ;
+te <> テ ;
+to <> ト ;
+
+tsu <> ツ ;
+
+# v  } $vowel > ヴ | '~' ;
+
+#'v~a' < ヴァ ; # liu
+#'v~i' < ヴィ ; # liu
+#'v~e' < ヴェ ; # liu
+#'v~o' < ヴォ ; # liu
+vu <> ヴ ;
+
+u <> ウ ;
+
+# w  } $vowel > ウ | '~' ;
+
+wa <> ワ ;
+wi <> ヰ ;
+wu > ウ ;
+we <> ヱ ;
+wo <> ヲ ;
+
+ya <> ヤ ;
+yi > イ ;
+yu <> ユ ;
+ye > エ ;
+yo <> ヨ ;
+
+# double consonants
+
+#specials
+s } sh > ッ ;
+t } ch > ッ ;
+
+#voiced
+
+j } j <> ッ } $j_start ;
+b } b <> ッ } [$h_start$f_start] $voice;
+d } d <> ッ } $t_start $voice;
+g } g <> ッ } $k_start $voice;
+p } p <> ッ } [$h_start$f_start] $semivoice;
+# v } v <> ッ } [ワヰウヱヲう]  $voice ;
+z } z <> ッ } $s_start $voice;
+v } v <> ッ } $v_start;
+
+# normal
+
+k } k <> ッ } $k_start ;
+m } m <> ッ } $m_start ;
+n } n <> ッ } $n_start ;
+h } h <> ッ } $h_start ;
+f } f <> ッ } $f_start ;
+r } r <> ッ } $r_start ;
+t } t <> ッ } $t_start ;
+s } s <> ッ } $s_start ;
+
+w } w  <> ッ } $w_start;
+y } y <> ッ } $y_start;
+
+# completeness 
+x } x > ッ ;
+c } k > ッ ;
+c } c > ッ ;
+c } q > ッ ;
+l } l > ッ ;
+q } q > ッ ;
+# y } y > ッ ;
+# w } w > ッ ;
+
+# prolonged vowel mark. this indicates a doubling of
+# the preceding vowel sound
+
+#a < a { ー ; # liu
+#e < e { ー ; # liu
+#i < i { ー ; # liu
+#o < o { ー ; # liu
+#u < u { ー ; # liu
+
+$macron <> ー ;
+
+# small forms
+
+'~a' <> ァ ;
+'~i' <> ィ ;
+'~u' <> ゥ ;
+'~e' <> ェ ;
+'~o' <> ォ ;
+'~tsu' <> ッ ;
+'~wa' <> ヮ ;
+'~ya' <> ャ ;
+'~yi' > ィ ;
+'~yu' <> ュ ;
+'~ye' > ェ ;
+'~yo' <> ョ ;
+
+# iteration marks
+# TODO: make more accurate
+
+j $1 < sh (y* $vowel) {ヽ$voice ;
+dj $1 < ch (y* $vowel) {ヽ$voice ;
+dz $1 < ts (y* $vowel) {ヽ$voice ;
+
+g $1 < k (y* $vowel) {ヽ$voice ;
+z $1 < s (y* $vowel) {ヽ$voice ;
+d $1 < t (y* $vowel) {ヽ$voice ;
+h $1 < b (y* $vowel) {ヽ$voice ;
+v $1 < w (y* $vowel) {ヽ$voice ;
+
+sh $1 < sh (y* $vowel) {ヽ$voice ;
+j $1 < j (y* $vowel) {ヽ$voice ;
+ch $1 < ch (y* $vowel) {ヽ$voice ;
+dj $1 < dj(y* $vowel) {ヽ$voice ;
+ts $1 < ts (y* $vowel) {ヽ$voice ;
+dz $1 < dz (y* $vowel) {ヽ$voice ;
+
+$1 < ($consonant y* $vowel) {ヽ$voice? ;
+$1 < (.) {ヽ $voice? ; # otherwise repeat last character
+ < ヽ $voice? ; # delete if no characters found
+
+# h- rule: lengthens vowel if not followed by a vowel
+
+[aeiou] } h > ー ;
+
+# one-way latin- > kana rules. these do not occur in
+# well-formed romaji representing actual japanese text.
+# their purpose is to make all romaji map to kana of
+# some sort.
+
+# the following are not really necessary, but produce
+# slightly more natural results.
+
+cy > セィ ;
+dy > ディ ;
+hy > ヒ ;
+sy > セィ ;
+ty > ティ ;
+zy > ゼィ ;
+
+h > ヘ ;
+
+# isolated consonants listed here so as not to mask
+# longer rules above.
+
+ch > チ;
+sh > シ ;
+dz > ヅ ;
+dj > ヂ;
+
+b > ブ ;
+d > デ ;
+g > グ ;
+k > ク ;
+m > ム ;
+n'' < ン } $n_quoter ;
+n <> ン ;
+p > プ ;
+r > ル ;
+s > ス ;
+t > テ ;
+y > イ ;
+z > ズ ;
+v > ヴ ;
+
+f > フ;
+j  > ジ;
+w > ウ;
+
+ß > | ss ;
+æ > | e ;
+ð > | d ;
+ø > | u ;
+þ > | th ;
+
+# simple substitutions using backup
+
+c > | k ;
+l > | r ;
+q > | k ;
+x > | ks ;
+
+# ~~~ END shared rules ~~~
+
+#------------------------------------------------------
+# Final cleanup
+
+'~' > ; # delete stray tildes between letters
+[:Katakana:] { '' } [:Latin:] > ; # delete stray quotes between letters
+# [\u02BE[:Nonspacing Mark:]-[\u3099-\u309C]] > ; # delete any non-spacing marks that we didn't use
+
+:: NFC (NFD) ; 
+:: ([:Katakana:] halfwidth-fullwidth);
+
+# note: a global filter is more efficient, but MUST include all source chars!!
+#:: ([\u0000-\u007E \u3001\u3002 \u3099-\u309C \u30A1-\u30FC \uFF61-\uFF9F [:Latin:][:Katakana:] [:nonspacing mark:]]);
+# MINIMAL FILTER GENERATED FOR: Latin-Katakana BACKWARD
+:: ( [[\ -~\u00A2-\u00A3\u00A5-\u00A6\u00AC\u0304\u20A9\uFF61-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE8-\uFFEE][~\u3001-\u3002\u304C\u304E\u3050\u3052\u3054\u3056\u3058\u305A\u305C\u305E\u3060\u3062\u3065\u3067\u3069\u3070-\u3071\u3073-\u3074\u3076-\u3077\u3079-\u307A\u307C-\u307D\u3094\u3099-\u309B\u309E\u30A1-\u30FA\u30FC-\u30FE]] ) ;
+
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Malayalam_InterIndic.txt b/src/com/ibm/icu/impl/data/Transliterator_Malayalam_InterIndic.txt
new file mode 100755
index 0000000..379efe0
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Malayalam_InterIndic.txt
@@ -0,0 +1,89 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Malayalam_InterIndic.txt,v $
+# $Date: 2002/03/02 00:27:26 $
+# $Revision: 1.5 $
+#--------------------------------------------------------------------
+
+# Malayalam-InterIndic
+#:: NFD (NFC) ;
+
+\u0D02>\uE002;      # SIGN ANUSVARA
+\u0D03>\uE003;      # SIGN VISARGA
+\u0D05>\uE005;      # LETTER A
+\u0D06>\uE006;      # LETTER AA
+\u0D07>\uE007;      # LETTER I
+\u0D08>\uE008;      # LETTER II
+\u0D09>\uE009;      # LETTER U
+\u0D0A>\uE00A;      # LETTER UU
+\u0D0B>\uE00B;      # LETTER VOCALIC R
+\u0D0C>\uE00C;      # LETTER VOCALIC L
+\u0D0E>\uE00E;      # LETTER E
+\u0D0F>\uE00F;      # LETTER EE
+\u0D10>\uE010;      # LETTER AI
+\u0D12>\uE012;      # LETTER O
+\u0D13>\uE013;      # LETTER OO
+\u0D14>\uE014;      # LETTER AU
+\u0D15>\uE015;      # LETTER KA
+\u0D16>\uE016;      # LETTER KHA
+\u0D17>\uE017;      # LETTER GA
+\u0D18>\uE018;      # LETTER GHA
+\u0D19>\uE019;      # LETTER NGA
+\u0D1A>\uE01A;      # LETTER CA
+\u0D1B>\uE01B;      # LETTER CHA
+\u0D1C>\uE01C;      # LETTER JA
+\u0D1D>\uE01D;      # LETTER JHA
+\u0D1E>\uE01E;      # LETTER NYA
+\u0D1F>\uE01F;      # LETTER TTA
+\u0D20>\uE020;      # LETTER TTHA
+\u0D21>\uE021;      # LETTER DDA
+\u0D22>\uE022;      # LETTER DDHA
+\u0D23>\uE023;      # LETTER NNA
+\u0D24>\uE024;      # LETTER TA
+\u0D25>\uE025;      # LETTER THA
+\u0D26>\uE026;      # LETTER DA
+\u0D27>\uE027;      # LETTER DHA
+\u0D28>\uE028;      # LETTER NA
+\u0D2A>\uE02A;      # LETTER PA
+\u0D2B>\uE02B;      # LETTER PHA
+\u0D2C>\uE02C;      # LETTER BA
+\u0D2D>\uE02D;      # LETTER BHA
+\u0D2E>\uE02E;      # LETTER MA
+\u0D2F>\uE02F;      # LETTER YA
+\u0D30>\uE030;      # LETTER RA
+\u0D31>\uE031;      # LETTER RRA
+\u0D32>\uE032;      # LETTER LA
+\u0D33>\uE033;      # LETTER LLA
+\u0D34>\uE034;      # LETTER LLLA
+\u0D35>\uE035;      # LETTER VA
+\u0D36>\uE036;      # LETTER SHA
+\u0D37>\uE037;      # LETTER SSA
+\u0D38>\uE038;      # LETTER SA
+\u0D39>\uE039;      # LETTER HA
+\u0D3E>\uE03E;      # VOWEL SIGN AA
+\u0D3F>\uE03F;      # VOWEL SIGN I
+\u0D40>\uE040;      # VOWEL SIGN II
+\u0D41>\uE041;      # VOWEL SIGN U
+\u0D42>\uE042;      # VOWEL SIGN UU
+\u0D43>\uE043;      # VOWEL SIGN VOCALIC R
+\u0D46>\uE046;      # VOWEL SIGN E
+\u0D47>\uE047;      # VOWEL SIGN EE
+\u0D48>\uE048;      # VOWEL SIGN AI
+\u0D4D>\uE04D;      # SIGN VIRAMA
+\u0D57>\uE057;      # AU LENGTH MARK
+\u0D60>\uE060;      # LETTER VOCALIC RR
+\u0D61>\uE061;      # LETTER VOCALIC LL
+\u0D66>\uE066;      # DIGIT ZERO
+\u0D67>\uE067;      # DIGIT ONE
+\u0D68>\uE068;      # DIGIT TWO
+\u0D69>\uE069;      # DIGIT THREE
+\u0D6A>\uE06A;      # DIGIT FOUR
+\u0D6B>\uE06B;      # DIGIT FIVE
+\u0D6C>\uE06C;      # DIGIT SIX
+\u0D6D>\uE06D;      # DIGIT SEVEN
+\u0D6E>\uE06E;      # DIGIT EIGHT
+\u0D6F>\uE06F;      # DIGIT NINE
+#    :: NFC (NFD) ;
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Oriya_InterIndic.txt b/src/com/ibm/icu/impl/data/Transliterator_Oriya_InterIndic.txt
new file mode 100755
index 0000000..8082c85
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Oriya_InterIndic.txt
@@ -0,0 +1,95 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Oriya_InterIndic.txt,v $
+# $Date: 2002/03/02 00:27:27 $
+# $Revision: 1.5 $
+#--------------------------------------------------------------------
+
+# Oriya-InterIndic
+#:: NFD (NFC) ;
+#\u0B21\u0B3C>\uE05C;# LETTER RRA
+#\u0B22\u0B3C>\uE05D;# LETTER RHA
+\u0B47\u0B56>\uE048;# VOWEL SIGN AI
+\u0B47\u0B3E>\uE04B;# VOWEL SIGN O
+\u0B47\u0B57>\uE04C;# VOWEL SIGN AU
+
+\u0B01>\uE001;      # SIGN CANDRABINDU
+\u0B02>\uE002;      # SIGN ANUSVARA
+\u0B03>\uE003;      # SIGN VISARGA
+\u0B05>\uE005;      # LETTER A
+\u0B06>\uE006;      # LETTER AA
+\u0B07>\uE007;      # LETTER I
+\u0B08>\uE008;      # LETTER II
+\u0B09>\uE009;      # LETTER U
+\u0B0A>\uE00A;      # LETTER UU
+\u0B0B>\uE00B;      # LETTER VOCALIC R
+\u0B0C>\uE00C;      # LETTER VOCALIC L
+\u0B0F>\uE00F;      # LETTER E
+\u0B10>\uE010;      # LETTER AI
+\u0B13>\uE013;      # LETTER O
+\u0B14>\uE014;      # LETTER AU
+\u0B15>\uE015;      # LETTER KA
+\u0B16>\uE016;      # LETTER KHA
+\u0B17>\uE017;      # LETTER GA
+\u0B18>\uE018;      # LETTER GHA
+\u0B19>\uE019;      # LETTER NGA
+\u0B1A>\uE01A;      # LETTER CA
+\u0B1B>\uE01B;      # LETTER CHA
+\u0B1C>\uE01C;      # LETTER JA
+\u0B1D>\uE01D;      # LETTER JHA
+\u0B1E>\uE01E;      # LETTER NYA
+\u0B1F>\uE01F;      # LETTER TTA
+\u0B20>\uE020;      # LETTER TTHA
+\u0B21>\uE021;      # LETTER DDA
+\u0B22>\uE022;      # LETTER DDHA
+\u0B23>\uE023;      # LETTER NNA
+\u0B24>\uE024;      # LETTER TA
+\u0B25>\uE025;      # LETTER THA
+\u0B26>\uE026;      # LETTER DA
+\u0B27>\uE027;      # LETTER DHA
+\u0B28>\uE028;      # LETTER NA
+\u0B2A>\uE02A;      # LETTER PA
+\u0B2B>\uE02B;      # LETTER PHA
+\u0B2C>\uE02C;      # LETTER BA
+\u0B2D>\uE02D;      # LETTER BHA
+\u0B2E>\uE02E;      # LETTER MA
+\u0B2F>\uE02F;      # LETTER YA
+\u0B30>\uE030;      # LETTER RA
+\u0B32>\uE032;      # LETTER LA
+\u0B33>\uE033;      # LETTER LLA
+\u0B36>\uE036;      # LETTER SHA
+\u0B37>\uE037;      # LETTER SSA
+\u0B38>\uE038;      # LETTER SA
+\u0B39>\uE039;      # LETTER HA
+\u0B3C>\uE03C;      # SIGN NUKTA
+\u0B3D>\uE03D;      # SIGN AVAGRAHA
+\u0B3E>\uE03E;      # VOWEL SIGN AA
+\u0B3F>\uE03F;      # VOWEL SIGN I
+\u0B40>\uE040;      # VOWEL SIGN II
+\u0B41>\uE041;      # VOWEL SIGN U
+\u0B42>\uE042;      # VOWEL SIGN UU
+\u0B43>\uE043;      # VOWEL SIGN VOCALIC R
+\u0B47>\uE047;      # VOWEL SIGN E
+#
+\u0B4D>\uE04D;      # SIGN VIRAMA
+\u0B56>\uE056;      # AI LENGTH MARK
+\u0B57>\uE057;      # AU LENGTH MARK
+#
+\u0B5F>\uE05F;      # LETTER YYA
+\u0B60>\uE060;      # LETTER VOCALIC RR
+\u0B61>\uE061;      # LETTER VOCALIC LL
+\u0B66>\uE066;      # DIGIT ZERO
+\u0B67>\uE067;      # DIGIT ONE
+\u0B68>\uE068;      # DIGIT TWO
+\u0B69>\uE069;      # DIGIT THREE
+\u0B6A>\uE06A;      # DIGIT FOUR
+\u0B6B>\uE06B;      # DIGIT FIVE
+\u0B6C>\uE06C;      # DIGIT SIX
+\u0B6D>\uE06D;      # DIGIT SEVEN
+\u0B6E>\uE06E;      # DIGIT EIGHT
+\u0B6F>\uE06F;      # DIGIT NINE
+\u0B70>\uE070;      # ISSHAR
+#    :: NFC (NFD) ;
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Tamil_InterIndic.txt b/src/com/ibm/icu/impl/data/Transliterator_Tamil_InterIndic.txt
new file mode 100755
index 0000000..0ab9f40
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Tamil_InterIndic.txt
@@ -0,0 +1,80 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Tamil_InterIndic.txt,v $
+# $Date: 2002/07/25 21:20:26 $
+# $Revision: 1.8 $
+#--------------------------------------------------------------------
+
+# Tamil-InterIndic
+#:: NFD (NFC) ;
+
+\u0BC6\u0BBE>\uE04A;# VOWEL SIGN O
+\u0BC7\u0BBE>\uE04B;# VOWEL SIGN OO
+\u0BC6\u0BD7>\uE04C;# VOWEL SIGN AU
+\u0B92\u0BD7>\uE014;# LETTER AU
+
+\u0B82>\uE002;      # SIGN ANUSVARA
+\u0B83>\uE003;      # SIGN VISARGA
+\u0B85>\uE005;      # LETTER A
+\u0B86>\uE006;      # LETTER AA
+\u0B87>\uE007;      # LETTER I
+\u0B88>\uE008;      # LETTER II
+\u0B89>\uE009;      # LETTER U
+\u0B8A>\uE00A;      # LETTER UU
+\u0B8E>\uE00E;      # LETTER E
+\u0B8F>\uE00F;      # LETTER EE
+\u0B90>\uE010;      # LETTER AI
+\u0B92>\uE012;      # LETTER O
+\u0B93>\uE013;      # LETTER OO
+\u0B94>\uE014;	    # LETTER AU
+\u0B95>\uE015;      # LETTER KA
+\u0B99>\uE019;      # LETTER NGA
+\u0B9A>\uE01A;      # LETTER CA
+\u0B9C>\uE01C;      # LETTER JA
+\u0B9E>\uE01E;      # LETTER NYA
+\u0B9F>\uE01F;      # LETTER TTA
+\u0BA3>\uE023;      # LETTER NNA
+\u0BA4>\uE024;      # LETTER TA
+\u0BA8>\uE028;      # LETTER NA
+\u0BA9>\uE029;      # LETTER NNNA
+\u0BAA>\uE02A;      # LETTER PA
+\u0BAE>\uE02E;      # LETTER MA
+\u0BAF>\uE02F;      # LETTER YA
+\u0BB0>\uE030;      # LETTER RA
+\u0BB1>\uE031;      # LETTER RRA
+\u0BB2>\uE032;      # LETTER LA
+\u0BB3>\uE033;      # LETTER LLA
+\u0BB4>\uE034;      # LETTER LLLA
+\u0BB5>\uE035;      # LETTER VA
+\u0BB7>\uE037;      # LETTER SSA
+\u0BB8>\uE038;      # LETTER SA
+\u0BB9>\uE039;      # LETTER HA
+\u0BBE>\uE03E;      # VOWEL SIGN AA
+\u0BBF>\uE03F;      # VOWEL SIGN I
+\u0BC0>\uE040;      # VOWEL SIGN II
+\u0BC1>\uE041;      # VOWEL SIGN U
+\u0BC2>\uE042;      # VOWEL SIGN UU
+\u0BC6>\uE046;      # VOWEL SIGN E
+\u0BC7>\uE047;      # VOWEL SIGN EE
+\u0BC8>\uE048;      # VOWEL SIGN AI
+
+\u0BCD>\uE04D;      # SIGN VIRAMA
+\u0BD7>\uE057;      # AU LENGTH MARK
+\u0BE7>\uE067;      # DIGIT ONE
+\u0BE8>\uE068;      # DIGIT TWO
+\u0BE9>\uE069;      # DIGIT THREE
+\u0BEA>\uE06A;      # DIGIT FOUR
+\u0BEB>\uE06B;      # DIGIT FIVE
+\u0BEC>\uE06C;      # DIGIT SIX
+\u0BED>\uE06D;      # DIGIT SEVEN
+\u0BEE>\uE06E;      # DIGIT EIGHT
+\u0BEF>\uE06F;      # DIGIT NINE
+\u0BF0>\uE067\uE066;          	# UNMAPPED Tamil-InterIndic: NUMBER TEN
+\u0BF1>\uE067\uE066\uE066;     	# UNMAPPED Tamil-InterIndic: NUMBER ONE HUNDRED
+\u0BF2>\uE067\uE066\uE066\uE066;# UNMAPPED Tamil-InterIndic: NUMBER ONE THOUSAND
+0>\ue066;
+
+#    :: NFC (NFD) ;
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Telugu_InterIndic.txt b/src/com/ibm/icu/impl/data/Transliterator_Telugu_InterIndic.txt
new file mode 100755
index 0000000..bb07edf
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Telugu_InterIndic.txt
@@ -0,0 +1,94 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Telugu_InterIndic.txt,v $
+# $Date: 2002/08/14 00:40:58 $
+# $Revision: 1.7 $
+#--------------------------------------------------------------------
+
+# Telugu-InterIndic
+#:: NFD (NFC) ;
+\u0c46\u0c4d\u0c56>\ue048\ue04d;
+\u0C46\u0C56>\uE048;# VOWEL SIGN AI
+\u0C01>\uE001;      # SIGN CANDRABINDU
+\u0C02>\uE002;      # SIGN ANUSVARA
+\u0C03>\uE003;      # SIGN VISARGA
+\u0C05>\uE005;      # LETTER A
+\u0C06>\uE006;      # LETTER AA
+\u0C07>\uE007;      # LETTER I
+\u0C08>\uE008;      # LETTER II
+\u0C09>\uE009;      # LETTER U
+\u0C0A>\uE00A;      # LETTER UU
+\u0C0B>\uE00B;      # LETTER VOCALIC R
+\u0C0C>\uE00C;      # LETTER VOCALIC L
+\u0C0E>\uE00E;      # LETTER E
+\u0C0F>\uE00F;      # LETTER EE
+\u0C10>\uE010;      # LETTER AI
+\u0C12>\uE012;      # LETTER O
+\u0C13>\uE013;      # LETTER OO
+\u0C14>\uE014;      # LETTER AU
+\u0C15>\uE015;      # LETTER KA
+\u0C16>\uE016;      # LETTER KHA
+\u0C17>\uE017;      # LETTER GA
+\u0C18>\uE018;      # LETTER GHA
+\u0C19>\uE019;      # LETTER NGA
+\u0C1A>\uE01A;      # LETTER CA
+\u0C1B>\uE01B;      # LETTER CHA
+\u0C1C>\uE01C;      # LETTER JA
+\u0C1D>\uE01D;      # LETTER JHA
+\u0C1E>\uE01E;      # LETTER NYA
+\u0C1F>\uE01F;      # LETTER TTA
+\u0C20>\uE020;      # LETTER TTHA
+\u0C21>\uE021;      # LETTER DDA
+\u0C22>\uE022;      # LETTER DDHA
+\u0C23>\uE023;      # LETTER NNA
+\u0C24>\uE024;      # LETTER TA
+\u0C25>\uE025;      # LETTER THA
+\u0C26>\uE026;      # LETTER DA
+\u0C27>\uE027;      # LETTER DHA
+\u0C28>\uE028;      # LETTER NA
+\u0C2A>\uE02A;      # LETTER PA
+\u0C2B>\uE02B;      # LETTER PHA
+\u0C2C>\uE02C;      # LETTER BA
+\u0C2D>\uE02D;      # LETTER BHA
+\u0C2E>\uE02E;      # LETTER MA
+\u0C2F>\uE02F;      # LETTER YA
+\u0C30>\uE030;      # LETTER RA
+\u0C31>\uE031;      # LETTER RRA
+\u0C32>\uE032;      # LETTER LA
+\u0C33>\uE033;      # LETTER LLA
+\u0C35>\uE035;      # LETTER VA
+\u0C36>\uE036;      # LETTER SHA
+\u0C37>\uE037;      # LETTER SSA
+\u0C38>\uE038;      # LETTER SA
+\u0C39>\uE039;      # LETTER HA
+\u0C3E>\uE03E;      # VOWEL SIGN AA
+\u0C3F>\uE03F;      # VOWEL SIGN I
+\u0C40>\uE040;      # VOWEL SIGN II
+\u0C41>\uE041;      # VOWEL SIGN U
+\u0C42>\uE042;      # VOWEL SIGN UU
+\u0C43>\uE043;      # VOWEL SIGN VOCALIC R
+\u0C44>\uE044;      # VOWEL SIGN VOCALIC RR
+\u0C46>\uE046;      # VOWEL SIGN E
+\u0C47>\uE047;      # VOWEL SIGN EE
+\u0C4A>\uE04A;      # VOWEL SIGN O
+\u0C4B>\uE04B;      # VOWEL SIGN OO
+\u0C4C>\uE04C;      # VOWEL SIGN AU
+\u0C4D>\uE04D;      # SIGN VIRAMA
+\u0C55>\uE055;      # LENGTH MARK
+\u0C56>\uE056;      # AI LENGTH MARK
+\u0C60>\uE060;      # LETTER VOCALIC RR
+\u0C61>\uE061;      # LETTER VOCALIC LL
+\u0C66>\uE066;      # DIGIT ZERO
+\u0C67>\uE067;      # DIGIT ONE
+\u0C68>\uE068;      # DIGIT TWO
+\u0C69>\uE069;      # DIGIT THREE
+\u0C6A>\uE06A;      # DIGIT FOUR
+\u0C6B>\uE06B;      # DIGIT FIVE
+\u0C6C>\uE06C;      # DIGIT SIX
+\u0C6D>\uE06D;      # DIGIT SEVEN
+\u0C6E>\uE06E;      # DIGIT EIGHT
+\u0C6F>\uE06F;      # DIGIT NINE
+#    :: NFC (NFD) ;
+# eof
diff --git a/src/com/ibm/icu/impl/data/Transliterator_ThaiLogical_Latin.txt b/src/com/ibm/icu/impl/data/Transliterator_ThaiLogical_Latin.txt
new file mode 100644
index 0000000..6ef8ff6
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_ThaiLogical_Latin.txt
@@ -0,0 +1,191 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_ThaiLogical_Latin.txt,v $
+# $Date: 2002/07/26 19:56:55 $
+# $Revision: 1.5 $
+#--------------------------------------------------------------------
+
+# Thai-Latin
+# This set of rules follows ISO 11940
+#	see http://homepage.mac.com/sirbinks/pdf/Thai.r2.pdf
+# except that that does not mention an implicit vowel, so we use ọ
+#
+# The transcription is fairly ugly, so we ought to also do the UNGEGN version
+#	see: http://www.eki.ee/wgrs/rom1_th.pdf
+# and probably make that the main variant.
+
+# Note: this is an internal file. The NFD/NFC is handled externally, in the index
+# The insertion of spaces between words, the reversal of the vowels
+# and the conversion of space to semicolon are done *outside* of these rules.
+# So as far as these rules are concerned, the vowels are in logical order!
+
+# insert implicit vowel (and remove it going the other way)
+# COMMENTED out: the implicit vowel positions cannot be predicted algorithmically
+#$consonant = [ก-ฮ];
+#$vowel = [ะ-ฺเ-ไ็];
+
+#{ ( $consonant ) } [^$vowel ] > | $1  ;
+# > ọ ;
+# < ọ ;
+
+$notAbove = [^\p{ccc=0}\p{ccc=above}] ;
+$notBelow = [^\p{ccc=0}\p{ccc=below}] ;
+
+# Consonants
+# Warning: the 'h's need to be handled carefully!
+# What we really want to say is the following, but we can't
+# $notHAccent = !($notAbove*   ̄ | $notBelow*   ̣) ;
+
+# Since the only accents we care about that could cause problems are free-standing accents below, we use instead:
+$freeStandingBelow = [\u0325  ];
+$hAccent =  [   ̄     ̣]
+$notHAccent0 = [^$freeStandingBelow$hAccent];
+$notHAccent1 = $freeStandingBelow [^$hAccent];
+
+ห > h̄ ; # THAI CHARACTER HO HIP
+ ห | $1 < h ($notAbove*)    ̄; # backward case, account for reordering
+ฮ <> ḥ ; # THAI CHARACTER HO NOKHUK
+
+ข <> k̄h ; # THAI CHARACTER KHO KHAI
+ฃ <> ḳ̄h ; # THAI CHARACTER KHO KHUAT
+ฅ <> kʹh ; # THAI CHARACTER KHO KHON  
+ฆ <> ḳh ; # THAI CHARACTER KHO RAKHANG
+ค < kh } $notHAccent1 ; # THAI CHARACTER KHO KHWAI  
+ค <> kh } $notHAccent0 ; # THAI CHARACTER KHO KHWAI  
+ก <> k ; # THAI CHARACTER KO KAI
+
+ภ <> p̣h ; # THAI CHARACTER PHO SAMPHAO
+ผ <> p̄h ; # THAI CHARACTER PHO PHUNG
+พ < ph } $notHAccent1 ; # THAI CHARACTER PHO PHAN
+พ <> ph } $notHAccent0 ; # THAI CHARACTER PHO PHAN
+ป <> p ; # THAI CHARACTER PO PLA
+
+ฉ <> c̄h ; # THAI CHARACTER CHO CHING
+ฌ <> c̣h ; # THAI CHARACTER CHO CHOE
+ช < ch } $notHAccent1 ; # THAI CHARACTER CHO CHANG
+ช <> ch } $notHAccent0 ; # THAI CHARACTER CHO CHANG
+จ <> c ; # THAI CHARACTER CHO CHAN
+
+ฐ <> ṭ̄h ; # THAI CHARACTER THO THAN
+ฑ <> ṯh ; # THAI CHARACTER THO NANGMONTHO
+ฒ <> tʹh ; # THAI CHARACTER THO PHUTHAO
+ถ <> t̄h ; # THAI CHARACTER THO THUNG
+ธ <> ṭh ; # THAI CHARACTER THO THONG
+ท < th } $notHAccent1 ; # THAI CHARACTER THO THAHAN
+ท <> th } $notHAccent0 ; # THAI CHARACTER THO THAHAN
+#Note: TO PATAK deviates from ISO since t-dotunder + h would be ambigous. So it uses vertical tick.
+ฏ <> t̩ ; # THAI CHARACTER TO PATAK
+ต <> t ; # THAI CHARACTER TO TAO
+
+# since there is no singleton g (generated), don't worry about that.
+ง <> ng ; # THAI CHARACTER NGO NGU
+ณ <> ṇ ; # THAI CHARACTER NO NEN
+น <> n ; # THAI CHARACTER NO NU
+
+ญ <> ỵ  ; # THAI CHARACTER YO YING
+ฎ <> ḍ ; # THAI CHARACTER DO CHADA
+ด <> d ; # THAI CHARACTER DO DEK
+
+บ <> b ; # THAI CHARACTER BO BAIMAI
+ฝ <> f̄ ; # THAI CHARACTER FO FA
+ ฝ | $1 < f ($notAbove*)    ̄; # backward case, account for reordering
+
+ม <> m ; # THAI CHARACTER MO MA
+ย <> y ; # THAI CHARACTER YO YAK
+ร <> r ; # THAI CHARACTER RO RUA
+ฤ <> v ; # THAI CHARACTER RU
+ฦ <> ł ; # THAI CHARACTER LU
+ว <> w ; # THAI CHARACTER WO WAEN
+
+ศ <> ṣ̄ ; # THAI CHARACTER SO SALA***
+ ศ | $1 < s    ̣ ($notAbove*)    ̄; # backward case, account for reordering
+ษ <> s̄ʹ ; # THAI CHARACTER SO RUSI
+ส > s̄ ; # THAI CHARACTER SO SUA***
+ ส | $1 < s ($notAbove*)    ̄; # backward case, account for reordering
+
+ฬ <> ḷ ; # THAI CHARACTER LO CHULA
+ล <> l ; # THAI CHARACTER LO LING
+ฟ <> f ; # THAI CHARACTER FO FAN
+
+อ <> x ; # THAI CHARACTER O ANG
+ซ <> s ; # THAI CHARACTER SO SO
+
+# vowels
+
+ ั <> ạ ; # THAI CHARACTER MAI HAN-AKAT
+
+า > ā ; # THAI CHARACTER SARA AA
+ า | $1 < a ($notAbove*)    ̄; # backward case, account for reordering
+
+# We deviate from ISO for SARA AM for disambiguation
+ำ > a  ̉; # THAI CHARACTER SARA AM
+ ำ | $1 < a ($notAbove*)  ̉ ; # backward case, account for reordering
+
+ะ <> a ; # THAI CHARACTER SARA A
+ ี <> ī ; # THAI CHARACTER SARA II
+  ี | $1 < i ($notAbove*)    ̄  ; # backward case, account for reordering
+
+ ื <> ụ̄ ; # THAI CHARACTER SARA UEE
+  ื | $1 < u   ̣ ($notAbove*)    ̄  ; # backward case, account for reordering
+
+ ึ <> ụ ; # THAI CHARACTER SARA UE
+ ู <> ū ; # THAI CHARACTER SARA UU
+ ู | $1 < u  ($notAbove*)    ̄  ; # backward case, account for reordering
+
+ ุ <> u ; # THAI CHARACTER SARA U
+
+ฯ <> ‡ ; # THAI CHARACTER PAIYANNOI
+
+# ฿ <> XXX ; # THAI CURRENCY SYMBOL BAHT
+
+เ <> e ; # THAI CHARACTER SARA E
+แ <> æ ; # THAI CHARACTER SARA AE
+โ <> o ; # THAI CHARACTER SARA O
+ใ <> ı ; # THAI CHARACTER SARA AI MAIMUAN
+ไ <> ị ; # THAI CHARACTER SARA AI MAIMALAI
+ๅ <> ɨ ; # THAI CHARACTER LAKKHANGYAO
+ ็ <> ̆ ; # THAI CHARACTER MAITAIKHU
+ ่ <> ̀ ; # THAI CHARACTER MAI EK
+ ้ <> ̂ ; # THAI CHARACTER MAI THO
+ ๊ <> ́ ; # THAI CHARACTER MAI TRI
+ ๋ <> ̌ ; # THAI CHARACTER MAI CHATTAWA
+ ์ <> ̒ ; # THAI CHARACTER THANTHAKHAT
+ ๎ <> '~' ; # THAI CHARACTER YAMAKKAN
+
+# We deviate from ISO for disambiguation
+ ํ <>  ̊ ; # THAI CHARACTER NIKHAHIT
+
+๏ <> § ; # THAI CHARACTER FONGMAN
+
+๐ <> 0 ; # THAI DIGIT ZERO
+๑ <> 1 ; # THAI DIGIT ONE
+๒ <> 2 ; # THAI DIGIT TWO
+๓ <> 3 ; # THAI DIGIT THREE
+๔ <> 4 ; # THAI DIGIT FOUR
+๕ <> 5 ; # THAI DIGIT FIVE
+๖ <> 6 ; # THAI DIGIT SIX
+๗ <> 7 ; # THAI DIGIT SEVEN
+๘ <> 8 ; # THAI DIGIT EIGHT
+๙ <> 9 ; # THAI DIGIT NINE
+
+๚ <> '||' ; # THAI CHARACTER ANGKHANKHU
+
+๛ <> » ; # THAI CHARACTER KHOMUT
+ๆ <> « ; # THAI CHARACTER MAIYAMOK
+
+# moved down to make shorter first
+#Note: PHINTHU deviates from ISO since underring causes canonical problems. So it uses spacing tick below.
+ ฺ <> ˌ ; # THAI CHARACTER PHINTHU
+ ิ <> i ; # THAI CHARACTER SARA I
+
+# fallbacks
+
+| k < g ;
+| k < h ;
+| c < j ;
+| k < q ;
+| s < z ;
+
+:: (lower);
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Thai_ThaiLogical.txt b/src/com/ibm/icu/impl/data/Transliterator_Thai_ThaiLogical.txt
new file mode 100644
index 0000000..b0b44f0
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Thai_ThaiLogical.txt
@@ -0,0 +1,30 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Thai_ThaiLogical.txt,v $
+# $Date: 2002/07/26 19:56:55 $
+# $Revision: 1.3 $
+#--------------------------------------------------------------------
+
+# This reverses the Thai LogicalOrderException vowels, and does (part of) spaces
+# The rules that convert space into semicolon are in another file;
+# since they have to come BEFORE the break iterator
+
+$thai = [[:thai:] \u0E01-\u0E3A\u0E40-\u0E5B] ;
+
+# First convert the semicolon back
+
+' '  < $thai { '; '  } $thai;
+
+# Remove any other spaces between thai letters
+
+< $thai { ' ' } $thai;
+
+# Now vowels
+$thai_reversing = [[:Logical_Order_Exception:] & $thai];
+$thai_non_reversing = [$thai - $thai_reversing ];
+
+( $thai_reversing ) ( $thai_non_reversing ) > $2 $1;
+# other direction
+$2 $1 < ( $thai_non_reversing ) ( $thai_reversing ) ;
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Thai_ThaiSemi.txt b/src/com/ibm/icu/impl/data/Transliterator_Thai_ThaiSemi.txt
new file mode 100644
index 0000000..c8862ab
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Thai_ThaiSemi.txt
@@ -0,0 +1,15 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_Thai_ThaiSemi.txt,v $
+# $Date: 2002/07/26 19:56:55 $
+# $Revision: 1.3 $
+#--------------------------------------------------------------------
+
+# The rules that convert space into semicolon are in this file;
+# since they have to come BEFORE the break iterator.
+
+$thai = [[:thai:] \u0E01-\u0E3A\u0E40-\u0E5B] ;
+
+$thai { ' ' } $thai > '; ' ;
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/data/Transliterator_index.txt b/src/com/ibm/icu/impl/data/Transliterator_index.txt
new file mode 100755
index 0000000..c198a8d
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_index.txt
@@ -0,0 +1,248 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/Attic/Transliterator_index.txt,v $
+# $Date: 2002/08/13 18:54:20 $
+# $Revision: 1.39 $
+#--------------------------------------------------------------------
+#
+# TRANSLITERATOR INDEX FILE.  This file lists the non-algorithmic
+# system transliterators.  It allows arbitrary mappings between
+# transliterator IDs and file names, and also allows the system to
+# define aliases for transliterators, so that "Latin-Hangul", for
+# example, can be implemented transparently as the compound
+# "Latin-Jamo;Jamo-Hangul".  Internal IDs may also be defined; these
+# are invisible to the user, but can be composed together by the
+# system to create visible transliterators.
+#
+# Blank lines and lines beginning with '#' are ignored.
+#
+# Lines in this file have one of the following forms (text not
+# enclosed by <> is literal):
+#
+#   <id>:file:<resource>:<encoding>:<direction>
+#   <id>:internal:<resource>:<encoding>:<direction>
+#   <id>:alias:<getInstanceArg>
+#
+# <id> is the ID of the system transliterator being defined.  These
+# are public IDs enumerated by Transliterator.getAvailableIDs(),
+# unless the second field is "internal".
+#
+# <resource> is a ResourceReader resource name.  Currently these refer
+# to file names under com/ibm/text/resources.  This string is passed
+# directly to ResourceReader, together with <encoding>.
+#
+# <encoding> is the character encoding to use when reading <resource>;
+# passed directly to ResourceReader.  E.g., "UTF8".
+#
+# <direction> is either "FORWARD" or "REVERSE".
+#
+# <getInstanceArg> is a string to be passed directly to
+# Transliterator.getInstance().  The returned Transliterator object
+# then has its ID changed to <id> and is returned.
+
+
+# Bidirectional rule files
+
+Fullwidth-Halfwidth:file:Transliterator_Fullwidth_Halfwidth.txt:UTF8:FORWARD
+Halfwidth-Fullwidth:file:Transliterator_Fullwidth_Halfwidth.txt:UTF8:REVERSE
+
+Latin-Cyrillic:file:Transliterator_Cyrillic_Latin.txt:UTF8:REVERSE
+Cyrillic-Latin:file:Transliterator_Cyrillic_Latin.txt:UTF8:FORWARD
+
+Latin-Hebrew:file:Transliterator_Hebrew_Latin.txt:UTF8:REVERSE
+Hebrew-Latin:file:Transliterator_Hebrew_Latin.txt:UTF8:FORWARD
+
+Latin-Arabic:file:Transliterator_Arabic_Latin.txt:UTF8:REVERSE
+Arabic-Latin:file:Transliterator_Arabic_Latin.txt:UTF8:FORWARD
+
+Han-Latin:file:Transliterator_Han_Latin.txt:UTF8:FORWARD
+#Latin-Han:file:Transliterator_Han_Latin.txt:UTF8:REVERSE # no round trip!
+Latin-Han:alias:null
+
+# Comment these out; they are only for testing
+# Latin-Han/definition:file:Transliterator_Han_Latin_Definition.txt:UTF8:REVERSE
+# Han-Latin/definition:file:Transliterator_Han_Latin_Definition.txt:UTF8:FORWARD
+
+#Latin-Han/EDICT:file:Transliterator_Han_Latin_EDICT.txt:UTF8:REVERSE
+#Han-Latin/EDICT:file:Transliterator_Han_Latin_EDICT.txt:UTF8:FORWARD
+
+Latin-Greek:file:Transliterator_Greek_Latin.txt:UTF8:REVERSE
+Greek-Latin:file:Transliterator_Greek_Latin.txt:UTF8:FORWARD
+
+Latin-Greek/UNGEGN:file:Transliterator_Greek_Latin_UNGEGN.txt:UTF8:REVERSE
+Greek-Latin/UNGEGN:file:Transliterator_Greek_Latin_UNGEGN.txt:UTF8:FORWARD
+
+Latin-Katakana:file:Transliterator_Latin_Katakana.txt:UTF8:FORWARD
+Katakana-Latin:file:Transliterator_Latin_Katakana.txt:UTF8:REVERSE
+
+Latin-Hiragana:file:Transliterator_Hiragana_Latin.txt:UTF8:REVERSE
+Hiragana-Latin:file:Transliterator_Hiragana_Latin.txt:UTF8:FORWARD
+
+#Thai Stuff: will change if we get \b into Transliterator
+
+Thai-ThaiSemi:internal:Transliterator_Thai_ThaiSemi.txt:UTF8:FORWARD
+
+Thai-ThaiLogical:internal:Transliterator_Thai_ThaiLogical.txt:UTF8:FORWARD
+ThaiLogical-Thai:internal:Transliterator_Thai_ThaiLogical.txt:UTF8:REVERSE
+
+ThaiLogical-Latin:internal:Transliterator_ThaiLogical_Latin.txt:UTF8:FORWARD
+Latin-ThaiLogical:internal:Transliterator_ThaiLogical_Latin.txt:UTF8:REVERSE
+
+# Must use the order below!
+# We need two separate passes because of the Thai vowel reversal
+# Thai-Logical also converts spaces to semicolons. That has to be done before we insert latin spaces
+
+Thai-Latin:alias:[[:thai:] \u0E01-\u0E3A\u0E40-\u0E5B];NFD;Thai-ThaiSemi;Any-BreakInternal;Thai-ThaiLogical;ThaiLogical-Latin;NFC
+Latin-Thai:alias:[[:Latin:][:Mn:][:Me:] \ \;0-9|~\u00A7\u00AB\u00BB\u02B9\u0374\u2021\u02CC];NFD;Latin-ThaiLogical;ThaiLogical-Thai;NFC
+
+# end of Thai Stuff
+
+Hiragana-Katakana:file:Transliterator_Hiragana_Katakana.txt:UTF8:FORWARD
+Katakana-Hiragana:file:Transliterator_Hiragana_Katakana.txt:UTF8:REVERSE
+
+Any-Accents:file:Transliterator_Any_Accents.txt:UTF8:FORWARD
+Accents-Any:file:Transliterator_Any_Accents.txt:UTF8:REVERSE
+
+Any-Publishing:file:Transliterator_Any_Publishing.txt:UTF8:FORWARD
+Publishing-Any:file:Transliterator_Any_Publishing.txt:UTF8:REVERSE
+
+# Korean
+# N.B. Don't end Latin-Jamo with NFC; that produces Hangul.  For
+# Hangul output use Latin-Hangul.
+
+LowerLatin-Jamo:internal:Transliterator_Latin_Jamo.txt:UTF8:FORWARD
+Jamo-LowerLatin:internal:Transliterator_Latin_Jamo.txt:UTF8:REVERSE
+Latin-Jamo:alias:['A-Za-z\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E1\u01E6-\u01ED\u01F0\u01F4-\u01F5\u01F8-\u01FB\u0200-\u021B\u021E-\u021F\u0226-\u0233\u1E00-\u1E99\u1EA0-\u1EF9\u212A-\u212B];NFD;Lower;LowerLatin-Jamo
+Jamo-Latin:alias:['\u1100-\u1112\u1161-\u1175\u11A8-\u11C2\uAC00-\uD7A3];NFD;Jamo-LowerLatin;NFC
+Latin-Hangul:alias:['A-Za-z\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E1\u01E6-\u01ED\u01F0\u01F4-\u01F5\u01F8-\u01FB\u0200-\u021B\u021E-\u021F\u0226-\u0233\u1E00-\u1E99\u1EA0-\u1EF9\u212A-\u212B];NFD;Lower;LowerLatin-Jamo;NFC
+Hangul-Latin:alias:['\u1100-\u1112\u1161-\u1175\u11A8-\u11C2\u3131-\u313F\u3141-\u3143\u3145-\u3163\u3200-\u321C\u3260-\u327B\uAC00-\uD7A3\uFF07\uFFA1-\uFFAF\uFFB1-\uFFB3\uFFB5-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC];NFKD;Jamo-LowerLatin;NFC
+
+# Inter-Indic composed rules
+Latin-InterIndic:internal:Transliterator_Latin_InterIndic.txt:UTF8:FORWARD
+Devanagari-InterIndic:internal:Transliterator_Devanagari_InterIndic.txt:UTF8:FORWARD
+Bengali-InterIndic:internal:Transliterator_Bengali_InterIndic.txt:UTF8:FORWARD
+Gurmukhi-InterIndic:internal:Transliterator_Gurmukhi_InterIndic.txt:UTF8:FORWARD
+Gujarati-InterIndic:internal:Transliterator_Gujarati_InterIndic.txt:UTF8:FORWARD
+Oriya-InterIndic:internal:Transliterator_Oriya_InterIndic.txt:UTF8:FORWARD
+Tamil-InterIndic:internal:Transliterator_Tamil_InterIndic.txt:UTF8:FORWARD
+Telugu-InterIndic:internal:Transliterator_Telugu_InterIndic.txt:UTF8:FORWARD
+Kannada-InterIndic:internal:Transliterator_Kannada_InterIndic.txt:UTF8:FORWARD
+Malayalam-InterIndic:internal:Transliterator_Malayalam_InterIndic.txt:UTF8:FORWARD
+
+InterIndic-Latin:internal:Transliterator_InterIndic_Latin.txt:UTF8:FORWARD
+InterIndic-Devanagari:internal:Transliterator_InterIndic_Devanagari.txt:UTF8:FORWARD
+InterIndic-Bengali:internal:Transliterator_InterIndic_Bengali.txt:UTF8:FORWARD
+InterIndic-Gurmukhi:internal:Transliterator_InterIndic_Gurmukhi.txt:UTF8:FORWARD
+InterIndic-Gujarati:internal:Transliterator_InterIndic_Gujarati.txt:UTF8:FORWARD
+InterIndic-Oriya:internal:Transliterator_InterIndic_Oriya.txt:UTF8:FORWARD
+InterIndic-Tamil:internal:Transliterator_InterIndic_Tamil.txt:UTF8:FORWARD
+InterIndic-Telugu:internal:Transliterator_InterIndic_Telugu.txt:UTF8:FORWARD
+InterIndic-Kannada:internal:Transliterator_InterIndic_Kannada.txt:UTF8:FORWARD
+InterIndic-Malayalam:internal:Transliterator_InterIndic_Malayalam.txt:UTF8:FORWARD
+
+#Latin-Indic transliterators
+Latin-Devanagari:alias:['.0-9A-Za-z~\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01ED\u01F0\u01F4-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u0301\u0303-\u0304\u0306-\u0307\u0310\u0314-\u0315\u0323\u0325\u0331\u0341\u0344\u0385-\u0386\u0388-\u038A\u038C\u038E-\u0390\u03AC-\u03B0\u03CC-\u03CE\u03D3\u0403\u040C\u040E\u0419\u0439\u0453\u045C\u045E\u04C1-\u04C2\u04D0-\u04D1\u04D6-\u04D7\u04E2-\u04E3\u04EE-\u04EF\u1E00-\u1E99\u1EA0-\u1EF9\u1F01\u1F03-\u1F05\u1F07\u1F09\u1F0B-\u1F0D\u1F0F\u1F11\u1F13-\u1F15\u1F19\u1F1B-\u1F1D\u1F21\u1F23-\u1F25\u1F27\u1F29\u1F2B-\u1F2D\u1F2F\u1F31\u1F33-\u1F35\u1F37\u1F39\u1F3B-\u1F3D\u1F3F\u1F41\u1F43-\u1F45\u1F49\u1F4B-\u1F4D\u1F51\u1F53-\u1F55\u1F57\u1F59\u1F5B\u1F5D\u1F5F\u1F61\u1F63-\u1F65\u1F67\u1F69\u1F6B-\u1F6D\u1F6F\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1F81\u1F83-\u1F85\u1F87\u1F89\u1F8B-\u1F8D\u1F8F\u1F91\u1F93-\u1F95\u1F97\u1F99\u1F9B-\u1F9D\u1F9F\u1FA1\u1FA3-\u1FA5\u1FA7\u1FA9\u1FAB-\u1FAD\u1FAF-\u1FB1\u1FB4\u1FB8-\u1FB9\u1FBB\u1FC4\u1FC9\u1FCB\u1FCE\u1FD0-\u1FD1\u1FD3\u1FD8-\u1FD9\u1FDB\u1FDE\u1FE0-\u1FE1\u1FE3\u1FE5\u1FE8-\u1FE9\u1FEB-\u1FEC\u1FEE\u1FF4\u1FF9\u1FFB\u212A-\u212B\uE04D\uE064];NFD;Lower;Latin-InterIndic;InterIndic-Devanagari;NFC
+Latin-Bengali:alias:['.0-9A-Za-z~\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01ED\u01F0\u01F4-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u0301\u0303-\u0304\u0306-\u0307\u0310\u0314-\u0315\u0323\u0325\u0331\u0341\u0344\u0385-\u0386\u0388-\u038A\u038C\u038E-\u0390\u03AC-\u03B0\u03CC-\u03CE\u03D3\u0403\u040C\u040E\u0419\u0439\u0453\u045C\u045E\u04C1-\u04C2\u04D0-\u04D1\u04D6-\u04D7\u04E2-\u04E3\u04EE-\u04EF\u1E00-\u1E99\u1EA0-\u1EF9\u1F01\u1F03-\u1F05\u1F07\u1F09\u1F0B-\u1F0D\u1F0F\u1F11\u1F13-\u1F15\u1F19\u1F1B-\u1F1D\u1F21\u1F23-\u1F25\u1F27\u1F29\u1F2B-\u1F2D\u1F2F\u1F31\u1F33-\u1F35\u1F37\u1F39\u1F3B-\u1F3D\u1F3F\u1F41\u1F43-\u1F45\u1F49\u1F4B-\u1F4D\u1F51\u1F53-\u1F55\u1F57\u1F59\u1F5B\u1F5D\u1F5F\u1F61\u1F63-\u1F65\u1F67\u1F69\u1F6B-\u1F6D\u1F6F\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1F81\u1F83-\u1F85\u1F87\u1F89\u1F8B-\u1F8D\u1F8F\u1F91\u1F93-\u1F95\u1F97\u1F99\u1F9B-\u1F9D\u1F9F\u1FA1\u1FA3-\u1FA5\u1FA7\u1FA9\u1FAB-\u1FAD\u1FAF-\u1FB1\u1FB4\u1FB8-\u1FB9\u1FBB\u1FC4\u1FC9\u1FCB\u1FCE\u1FD0-\u1FD1\u1FD3\u1FD8-\u1FD9\u1FDB\u1FDE\u1FE0-\u1FE1\u1FE3\u1FE5\u1FE8-\u1FE9\u1FEB-\u1FEC\u1FEE\u1FF4\u1FF9\u1FFB\u212A-\u212B\uE04D\uE064];NFD;Lower;Latin-InterIndic;InterIndic-Bengali;NFC
+Latin-Gurmukhi:alias:['.0-9A-Za-z~\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01ED\u01F0\u01F4-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u0301\u0303-\u0304\u0306-\u0307\u0310\u0314-\u0315\u0323\u0325\u0331\u0341\u0344\u0385-\u0386\u0388-\u038A\u038C\u038E-\u0390\u03AC-\u03B0\u03CC-\u03CE\u03D3\u0403\u040C\u040E\u0419\u0439\u0453\u045C\u045E\u04C1-\u04C2\u04D0-\u04D1\u04D6-\u04D7\u04E2-\u04E3\u04EE-\u04EF\u1E00-\u1E99\u1EA0-\u1EF9\u1F01\u1F03-\u1F05\u1F07\u1F09\u1F0B-\u1F0D\u1F0F\u1F11\u1F13-\u1F15\u1F19\u1F1B-\u1F1D\u1F21\u1F23-\u1F25\u1F27\u1F29\u1F2B-\u1F2D\u1F2F\u1F31\u1F33-\u1F35\u1F37\u1F39\u1F3B-\u1F3D\u1F3F\u1F41\u1F43-\u1F45\u1F49\u1F4B-\u1F4D\u1F51\u1F53-\u1F55\u1F57\u1F59\u1F5B\u1F5D\u1F5F\u1F61\u1F63-\u1F65\u1F67\u1F69\u1F6B-\u1F6D\u1F6F\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1F81\u1F83-\u1F85\u1F87\u1F89\u1F8B-\u1F8D\u1F8F\u1F91\u1F93-\u1F95\u1F97\u1F99\u1F9B-\u1F9D\u1F9F\u1FA1\u1FA3-\u1FA5\u1FA7\u1FA9\u1FAB-\u1FAD\u1FAF-\u1FB1\u1FB4\u1FB8-\u1FB9\u1FBB\u1FC4\u1FC9\u1FCB\u1FCE\u1FD0-\u1FD1\u1FD3\u1FD8-\u1FD9\u1FDB\u1FDE\u1FE0-\u1FE1\u1FE3\u1FE5\u1FE8-\u1FE9\u1FEB-\u1FEC\u1FEE\u1FF4\u1FF9\u1FFB\u212A-\u212B\uE04D\uE064];NFD;Lower;Latin-InterIndic;InterIndic-Gurmukhi;NFC
+Latin-Gujarati:alias:['.0-9A-Za-z~\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01ED\u01F0\u01F4-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u0301\u0303-\u0304\u0306-\u0307\u0310\u0314-\u0315\u0323\u0325\u0331\u0341\u0344\u0385-\u0386\u0388-\u038A\u038C\u038E-\u0390\u03AC-\u03B0\u03CC-\u03CE\u03D3\u0403\u040C\u040E\u0419\u0439\u0453\u045C\u045E\u04C1-\u04C2\u04D0-\u04D1\u04D6-\u04D7\u04E2-\u04E3\u04EE-\u04EF\u1E00-\u1E99\u1EA0-\u1EF9\u1F01\u1F03-\u1F05\u1F07\u1F09\u1F0B-\u1F0D\u1F0F\u1F11\u1F13-\u1F15\u1F19\u1F1B-\u1F1D\u1F21\u1F23-\u1F25\u1F27\u1F29\u1F2B-\u1F2D\u1F2F\u1F31\u1F33-\u1F35\u1F37\u1F39\u1F3B-\u1F3D\u1F3F\u1F41\u1F43-\u1F45\u1F49\u1F4B-\u1F4D\u1F51\u1F53-\u1F55\u1F57\u1F59\u1F5B\u1F5D\u1F5F\u1F61\u1F63-\u1F65\u1F67\u1F69\u1F6B-\u1F6D\u1F6F\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1F81\u1F83-\u1F85\u1F87\u1F89\u1F8B-\u1F8D\u1F8F\u1F91\u1F93-\u1F95\u1F97\u1F99\u1F9B-\u1F9D\u1F9F\u1FA1\u1FA3-\u1FA5\u1FA7\u1FA9\u1FAB-\u1FAD\u1FAF-\u1FB1\u1FB4\u1FB8-\u1FB9\u1FBB\u1FC4\u1FC9\u1FCB\u1FCE\u1FD0-\u1FD1\u1FD3\u1FD8-\u1FD9\u1FDB\u1FDE\u1FE0-\u1FE1\u1FE3\u1FE5\u1FE8-\u1FE9\u1FEB-\u1FEC\u1FEE\u1FF4\u1FF9\u1FFB\u212A-\u212B\uE04D\uE064];NFD;Lower;Latin-InterIndic;InterIndic-Gujarati;NFC
+Latin-Oriya:alias:['.0-9A-Za-z~\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01ED\u01F0\u01F4-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u0301\u0303-\u0304\u0306-\u0307\u0310\u0314-\u0315\u0323\u0325\u0331\u0341\u0344\u0385-\u0386\u0388-\u038A\u038C\u038E-\u0390\u03AC-\u03B0\u03CC-\u03CE\u03D3\u0403\u040C\u040E\u0419\u0439\u0453\u045C\u045E\u04C1-\u04C2\u04D0-\u04D1\u04D6-\u04D7\u04E2-\u04E3\u04EE-\u04EF\u1E00-\u1E99\u1EA0-\u1EF9\u1F01\u1F03-\u1F05\u1F07\u1F09\u1F0B-\u1F0D\u1F0F\u1F11\u1F13-\u1F15\u1F19\u1F1B-\u1F1D\u1F21\u1F23-\u1F25\u1F27\u1F29\u1F2B-\u1F2D\u1F2F\u1F31\u1F33-\u1F35\u1F37\u1F39\u1F3B-\u1F3D\u1F3F\u1F41\u1F43-\u1F45\u1F49\u1F4B-\u1F4D\u1F51\u1F53-\u1F55\u1F57\u1F59\u1F5B\u1F5D\u1F5F\u1F61\u1F63-\u1F65\u1F67\u1F69\u1F6B-\u1F6D\u1F6F\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1F81\u1F83-\u1F85\u1F87\u1F89\u1F8B-\u1F8D\u1F8F\u1F91\u1F93-\u1F95\u1F97\u1F99\u1F9B-\u1F9D\u1F9F\u1FA1\u1FA3-\u1FA5\u1FA7\u1FA9\u1FAB-\u1FAD\u1FAF-\u1FB1\u1FB4\u1FB8-\u1FB9\u1FBB\u1FC4\u1FC9\u1FCB\u1FCE\u1FD0-\u1FD1\u1FD3\u1FD8-\u1FD9\u1FDB\u1FDE\u1FE0-\u1FE1\u1FE3\u1FE5\u1FE8-\u1FE9\u1FEB-\u1FEC\u1FEE\u1FF4\u1FF9\u1FFB\u212A-\u212B\uE04D\uE064];NFD;Lower;Latin-InterIndic;InterIndic-Oriya;NFC
+Latin-Tamil:alias:['.0-9A-Za-z~\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01ED\u01F0\u01F4-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u0301\u0303-\u0304\u0306-\u0307\u0310\u0314-\u0315\u0323\u0325\u0331\u0341\u0344\u0385-\u0386\u0388-\u038A\u038C\u038E-\u0390\u03AC-\u03B0\u03CC-\u03CE\u03D3\u0403\u040C\u040E\u0419\u0439\u0453\u045C\u045E\u04C1-\u04C2\u04D0-\u04D1\u04D6-\u04D7\u04E2-\u04E3\u04EE-\u04EF\u1E00-\u1E99\u1EA0-\u1EF9\u1F01\u1F03-\u1F05\u1F07\u1F09\u1F0B-\u1F0D\u1F0F\u1F11\u1F13-\u1F15\u1F19\u1F1B-\u1F1D\u1F21\u1F23-\u1F25\u1F27\u1F29\u1F2B-\u1F2D\u1F2F\u1F31\u1F33-\u1F35\u1F37\u1F39\u1F3B-\u1F3D\u1F3F\u1F41\u1F43-\u1F45\u1F49\u1F4B-\u1F4D\u1F51\u1F53-\u1F55\u1F57\u1F59\u1F5B\u1F5D\u1F5F\u1F61\u1F63-\u1F65\u1F67\u1F69\u1F6B-\u1F6D\u1F6F\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1F81\u1F83-\u1F85\u1F87\u1F89\u1F8B-\u1F8D\u1F8F\u1F91\u1F93-\u1F95\u1F97\u1F99\u1F9B-\u1F9D\u1F9F\u1FA1\u1FA3-\u1FA5\u1FA7\u1FA9\u1FAB-\u1FAD\u1FAF-\u1FB1\u1FB4\u1FB8-\u1FB9\u1FBB\u1FC4\u1FC9\u1FCB\u1FCE\u1FD0-\u1FD1\u1FD3\u1FD8-\u1FD9\u1FDB\u1FDE\u1FE0-\u1FE1\u1FE3\u1FE5\u1FE8-\u1FE9\u1FEB-\u1FEC\u1FEE\u1FF4\u1FF9\u1FFB\u212A-\u212B\uE04D\uE064];NFD;Lower;Latin-InterIndic;InterIndic-Tamil;NFC
+Latin-Telugu:alias:['.0-9A-Za-z~\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01ED\u01F0\u01F4-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u0301\u0303-\u0304\u0306-\u0307\u0310\u0314-\u0315\u0323\u0325\u0331\u0341\u0344\u0385-\u0386\u0388-\u038A\u038C\u038E-\u0390\u03AC-\u03B0\u03CC-\u03CE\u03D3\u0403\u040C\u040E\u0419\u0439\u0453\u045C\u045E\u04C1-\u04C2\u04D0-\u04D1\u04D6-\u04D7\u04E2-\u04E3\u04EE-\u04EF\u1E00-\u1E99\u1EA0-\u1EF9\u1F01\u1F03-\u1F05\u1F07\u1F09\u1F0B-\u1F0D\u1F0F\u1F11\u1F13-\u1F15\u1F19\u1F1B-\u1F1D\u1F21\u1F23-\u1F25\u1F27\u1F29\u1F2B-\u1F2D\u1F2F\u1F31\u1F33-\u1F35\u1F37\u1F39\u1F3B-\u1F3D\u1F3F\u1F41\u1F43-\u1F45\u1F49\u1F4B-\u1F4D\u1F51\u1F53-\u1F55\u1F57\u1F59\u1F5B\u1F5D\u1F5F\u1F61\u1F63-\u1F65\u1F67\u1F69\u1F6B-\u1F6D\u1F6F\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1F81\u1F83-\u1F85\u1F87\u1F89\u1F8B-\u1F8D\u1F8F\u1F91\u1F93-\u1F95\u1F97\u1F99\u1F9B-\u1F9D\u1F9F\u1FA1\u1FA3-\u1FA5\u1FA7\u1FA9\u1FAB-\u1FAD\u1FAF-\u1FB1\u1FB4\u1FB8-\u1FB9\u1FBB\u1FC4\u1FC9\u1FCB\u1FCE\u1FD0-\u1FD1\u1FD3\u1FD8-\u1FD9\u1FDB\u1FDE\u1FE0-\u1FE1\u1FE3\u1FE5\u1FE8-\u1FE9\u1FEB-\u1FEC\u1FEE\u1FF4\u1FF9\u1FFB\u212A-\u212B\uE04D\uE064];NFD;Lower;Latin-InterIndic;InterIndic-Telugu;NFC
+Latin-Kannada:alias:['.0-9A-Za-z~\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01ED\u01F0\u01F4-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u0301\u0303-\u0304\u0306-\u0307\u0310\u0314-\u0315\u0323\u0325\u0331\u0341\u0344\u0385-\u0386\u0388-\u038A\u038C\u038E-\u0390\u03AC-\u03B0\u03CC-\u03CE\u03D3\u0403\u040C\u040E\u0419\u0439\u0453\u045C\u045E\u04C1-\u04C2\u04D0-\u04D1\u04D6-\u04D7\u04E2-\u04E3\u04EE-\u04EF\u1E00-\u1E99\u1EA0-\u1EF9\u1F01\u1F03-\u1F05\u1F07\u1F09\u1F0B-\u1F0D\u1F0F\u1F11\u1F13-\u1F15\u1F19\u1F1B-\u1F1D\u1F21\u1F23-\u1F25\u1F27\u1F29\u1F2B-\u1F2D\u1F2F\u1F31\u1F33-\u1F35\u1F37\u1F39\u1F3B-\u1F3D\u1F3F\u1F41\u1F43-\u1F45\u1F49\u1F4B-\u1F4D\u1F51\u1F53-\u1F55\u1F57\u1F59\u1F5B\u1F5D\u1F5F\u1F61\u1F63-\u1F65\u1F67\u1F69\u1F6B-\u1F6D\u1F6F\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1F81\u1F83-\u1F85\u1F87\u1F89\u1F8B-\u1F8D\u1F8F\u1F91\u1F93-\u1F95\u1F97\u1F99\u1F9B-\u1F9D\u1F9F\u1FA1\u1FA3-\u1FA5\u1FA7\u1FA9\u1FAB-\u1FAD\u1FAF-\u1FB1\u1FB4\u1FB8-\u1FB9\u1FBB\u1FC4\u1FC9\u1FCB\u1FCE\u1FD0-\u1FD1\u1FD3\u1FD8-\u1FD9\u1FDB\u1FDE\u1FE0-\u1FE1\u1FE3\u1FE5\u1FE8-\u1FE9\u1FEB-\u1FEC\u1FEE\u1FF4\u1FF9\u1FFB\u212A-\u212B\uE04D\uE064];NFD;Lower;Latin-InterIndic;InterIndic-Kannada;NFC
+Latin-Malayalam:alias:['.0-9A-Za-z~\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01ED\u01F0\u01F4-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u0301\u0303-\u0304\u0306-\u0307\u0310\u0314-\u0315\u0323\u0325\u0331\u0341\u0344\u0385-\u0386\u0388-\u038A\u038C\u038E-\u0390\u03AC-\u03B0\u03CC-\u03CE\u03D3\u0403\u040C\u040E\u0419\u0439\u0453\u045C\u045E\u04C1-\u04C2\u04D0-\u04D1\u04D6-\u04D7\u04E2-\u04E3\u04EE-\u04EF\u1E00-\u1E99\u1EA0-\u1EF9\u1F01\u1F03-\u1F05\u1F07\u1F09\u1F0B-\u1F0D\u1F0F\u1F11\u1F13-\u1F15\u1F19\u1F1B-\u1F1D\u1F21\u1F23-\u1F25\u1F27\u1F29\u1F2B-\u1F2D\u1F2F\u1F31\u1F33-\u1F35\u1F37\u1F39\u1F3B-\u1F3D\u1F3F\u1F41\u1F43-\u1F45\u1F49\u1F4B-\u1F4D\u1F51\u1F53-\u1F55\u1F57\u1F59\u1F5B\u1F5D\u1F5F\u1F61\u1F63-\u1F65\u1F67\u1F69\u1F6B-\u1F6D\u1F6F\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1F81\u1F83-\u1F85\u1F87\u1F89\u1F8B-\u1F8D\u1F8F\u1F91\u1F93-\u1F95\u1F97\u1F99\u1F9B-\u1F9D\u1F9F\u1FA1\u1FA3-\u1FA5\u1FA7\u1FA9\u1FAB-\u1FAD\u1FAF-\u1FB1\u1FB4\u1FB8-\u1FB9\u1FBB\u1FC4\u1FC9\u1FCB\u1FCE\u1FD0-\u1FD1\u1FD3\u1FD8-\u1FD9\u1FDB\u1FDE\u1FE0-\u1FE1\u1FE3\u1FE5\u1FE8-\u1FE9\u1FEB-\u1FEC\u1FEE\u1FF4\u1FF9\u1FFB\u212A-\u212B\uE04D\uE064];NFD;Lower;Latin-InterIndic;InterIndic-Malayalam;NFC
+   
+#Indic-Latin transliterators
+Devanagari-Latin:alias:[\u0901-\u0903\u0905-\u0939\u093C-\u094D\u0950-\u0954\u0958-\u096F];NFD;Devanagari-InterIndic;InterIndic-Latin;NFC
+Bengali-Latin:alias:[\u0964-\u0965\u0981-\u0983\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC\u09BE-\u09C4\u09C7-\u09C8\u09CB-\u09CD\u09D7\u09DC-\u09DD\u09DF-\u09E3\u09E6-\u09FA];NFD;Bengali-InterIndic;InterIndic-Latin;NFC
+Gurmukhi-Latin:alias:[\u0964-\u0965\u0A02\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A3C\u0A3E-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A59-\u0A5C\u0A5E\u0A66-\u0A74];NFD;Gurmukhi-InterIndic;InterIndic-Latin;NFC
+Gujarati-Latin:alias:[\u0964-\u0965\u0A81-\u0A83\u0A85-\u0A8B\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0\u0AE6-\u0AEF];NFD;Gujarati-InterIndic;InterIndic-Latin;NFC
+Oriya-Latin:alias:[\u0B01-\u0B03\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B36-\u0B39\u0B3C-\u0B43\u0B47-\u0B48\u0B4B-\u0B4D\u0B56-\u0B57\u0B5C-\u0B5D\u0B5F-\u0B61\u0B66-\u0B70];NFD;Oriya-InterIndic;InterIndic-Latin;NFC
+Tamil-Latin:alias:[0\u0B82-\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE7-\u0BF2];NFD;Tamil-InterIndic;InterIndic-Latin;NFC
+Telugu-Latin:alias:[\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C60-\u0C61\u0C66-\u0C6F];NFD;Telugu-InterIndic;InterIndic-Latin;NFC
+Kannada-Latin:alias:[\u0C82-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5-\u0CD6\u0CDE\u0CE0-\u0CE1\u0CE6-\u0CEF];NFD;Kannada-InterIndic;InterIndic-Latin;NFC
+Malayalam-Latin:alias:[\u0D02-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D60-\u0D61\u0D66-\u0D6F];NFD;Malayalam-InterIndic;InterIndic-Latin;NFC
+
+Devanagari-Bengali:alias:[\u0901-\u0903\u0905-\u0939\u093C-\u094D\u0950-\u0954\u0958-\u096F];NFD;Devanagari-InterIndic;InterIndic-Bengali;NFC
+Devanagari-Gurmukhi:alias:[\u0901-\u0903\u0905-\u0939\u093C-\u094D\u0950-\u0954\u0958-\u096F];NFD;Devanagari-InterIndic;InterIndic-Gurmukhi;NFC
+Devanagari-Gujarati:alias:[\u0901-\u0903\u0905-\u0939\u093C-\u094D\u0950-\u0954\u0958-\u096F];NFD;Devanagari-InterIndic;InterIndic-Gujarati;NFC
+Devanagari-Oriya:alias:[\u0901-\u0903\u0905-\u0939\u093C-\u094D\u0950-\u0954\u0958-\u096F];NFD;Devanagari-InterIndic;InterIndic-Oriya;NFC
+Devanagari-Tamil:alias:[\u0901-\u0903\u0905-\u0939\u093C-\u094D\u0950-\u0954\u0958-\u096F];NFD;Devanagari-InterIndic;InterIndic-Tamil;NFC
+Devanagari-Telugu:alias:[\u0901-\u0903\u0905-\u0939\u093C-\u094D\u0950-\u0954\u0958-\u096F];NFD;Devanagari-InterIndic;InterIndic-Telugu;NFC
+Devanagari-Kannada:alias:[\u0901-\u0903\u0905-\u0939\u093C-\u094D\u0950-\u0954\u0958-\u096F];NFD;Devanagari-InterIndic;InterIndic-Kannada;NFC
+Devanagari-Malayalam:alias:[\u0901-\u0903\u0905-\u0939\u093C-\u094D\u0950-\u0954\u0958-\u096F];NFD;Devanagari-InterIndic;InterIndic-Malayalam;NFC
+
+Bengali-Devanagari:alias:[\u0964-\u0965\u0981-\u0983\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC\u09BE-\u09C4\u09C7-\u09C8\u09CB-\u09CD\u09D7\u09DC-\u09DD\u09DF-\u09E3\u09E6-\u09FA];NFD;Bengali-InterIndic;InterIndic-Devanagari;NFC
+Bengali-Gurmukhi:alias:[\u0964-\u0965\u0981-\u0983\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC\u09BE-\u09C4\u09C7-\u09C8\u09CB-\u09CD\u09D7\u09DC-\u09DD\u09DF-\u09E3\u09E6-\u09FA];NFD;Bengali-InterIndic;InterIndic-Gurmukhi;NFC
+Bengali-Gujarati:alias:[\u0964-\u0965\u0981-\u0983\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC\u09BE-\u09C4\u09C7-\u09C8\u09CB-\u09CD\u09D7\u09DC-\u09DD\u09DF-\u09E3\u09E6-\u09FA];NFD;Bengali-InterIndic;InterIndic-Gujarati;NFC
+Bengali-Oriya:alias:[\u0964-\u0965\u0981-\u0983\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC\u09BE-\u09C4\u09C7-\u09C8\u09CB-\u09CD\u09D7\u09DC-\u09DD\u09DF-\u09E3\u09E6-\u09FA];NFD;Bengali-InterIndic;InterIndic-Oriya;NFC
+Bengali-Tamil:alias:[\u0964-\u0965\u0981-\u0983\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC\u09BE-\u09C4\u09C7-\u09C8\u09CB-\u09CD\u09D7\u09DC-\u09DD\u09DF-\u09E3\u09E6-\u09FA];NFD;Bengali-InterIndic;InterIndic-Tamil;NFC
+Bengali-Telugu:alias:[\u0964-\u0965\u0981-\u0983\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC\u09BE-\u09C4\u09C7-\u09C8\u09CB-\u09CD\u09D7\u09DC-\u09DD\u09DF-\u09E3\u09E6-\u09FA];NFD;Bengali-InterIndic;InterIndic-Telugu;NFC
+Bengali-Kannada:alias:[\u0964-\u0965\u0981-\u0983\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC\u09BE-\u09C4\u09C7-\u09C8\u09CB-\u09CD\u09D7\u09DC-\u09DD\u09DF-\u09E3\u09E6-\u09FA];NFD;Bengali-InterIndic;InterIndic-Kannada;NFC
+Bengali-Malayalam:alias:[\u0964-\u0965\u0981-\u0983\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC\u09BE-\u09C4\u09C7-\u09C8\u09CB-\u09CD\u09D7\u09DC-\u09DD\u09DF-\u09E3\u09E6-\u09FA];NFD;Bengali-InterIndic;InterIndic-Malayalam;NFC
+
+Gurmukhi-Devanagari:alias:[\u0964-\u0965\u0A02\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A3C\u0A3E-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A59-\u0A5C\u0A5E\u0A66-\u0A74];NFD;Gurmukhi-InterIndic;InterIndic-Devanagari;NFC
+Gurmukhi-Bengali:alias:[\u0964-\u0965\u0A02\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A3C\u0A3E-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A59-\u0A5C\u0A5E\u0A66-\u0A74];NFD;Gurmukhi-InterIndic;InterIndic-Bengali;NFC
+Gurmukhi-Gujarati:alias:[\u0964-\u0965\u0A02\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A3C\u0A3E-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A59-\u0A5C\u0A5E\u0A66-\u0A74];NFD;Gurmukhi-InterIndic;InterIndic-Gujarati;NFC
+Gurmukhi-Oriya:alias:[\u0964-\u0965\u0A02\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A3C\u0A3E-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A59-\u0A5C\u0A5E\u0A66-\u0A74];NFD;Gurmukhi-InterIndic;InterIndic-Oriya;NFC
+Gurmukhi-Tamil:alias:[\u0964-\u0965\u0A02\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A3C\u0A3E-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A59-\u0A5C\u0A5E\u0A66-\u0A74];NFD;Gurmukhi-InterIndic;InterIndic-Tamil;NFC
+Gurmukhi-Telugu:alias:[\u0964-\u0965\u0A02\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A3C\u0A3E-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A59-\u0A5C\u0A5E\u0A66-\u0A74];NFD;Gurmukhi-InterIndic;InterIndic-Telugu;NFC
+Gurmukhi-Kannada:alias:[\u0964-\u0965\u0A02\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A3C\u0A3E-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A59-\u0A5C\u0A5E\u0A66-\u0A74];NFD;Gurmukhi-InterIndic;InterIndic-Kannada;NFC
+Gurmukhi-Malayalam:alias:[\u0964-\u0965\u0A02\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A3C\u0A3E-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A59-\u0A5C\u0A5E\u0A66-\u0A74];NFD;Gurmukhi-InterIndic;InterIndic-Malayalam;NFC
+
+Gujarati-Devanagari:alias:[\u0964-\u0965\u0A81-\u0A83\u0A85-\u0A8B\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0\u0AE6-\u0AEF];NFD;Gujarati-InterIndic;InterIndic-Devanagari;NFC
+Gujarati-Bengali:alias:[\u0964-\u0965\u0A81-\u0A83\u0A85-\u0A8B\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0\u0AE6-\u0AEF];NFD;Gujarati-InterIndic;InterIndic-Bengali;NFC
+Gujarati-Gurmukhi:alias:[\u0964-\u0965\u0A81-\u0A83\u0A85-\u0A8B\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0\u0AE6-\u0AEF];NFD;Gujarati-InterIndic;InterIndic-Gurmukhi;NFC
+Gujarati-Oriya:alias:[\u0964-\u0965\u0A81-\u0A83\u0A85-\u0A8B\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0\u0AE6-\u0AEF];NFD;Gujarati-InterIndic;InterIndic-Oriya;NFC
+Gujarati-Tamil:alias:[\u0964-\u0965\u0A81-\u0A83\u0A85-\u0A8B\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0\u0AE6-\u0AEF];NFD;Gujarati-InterIndic;InterIndic-Tamil;NFC
+Gujarati-Telugu:alias:[\u0964-\u0965\u0A81-\u0A83\u0A85-\u0A8B\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0\u0AE6-\u0AEF];NFD;Gujarati-InterIndic;InterIndic-Telugu;NFC
+Gujarati-Kannada:alias:[\u0964-\u0965\u0A81-\u0A83\u0A85-\u0A8B\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0\u0AE6-\u0AEF];NFD;Gujarati-InterIndic;InterIndic-Kannada;NFC
+Gujarati-Malayalam:alias:[\u0964-\u0965\u0A81-\u0A83\u0A85-\u0A8B\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0\u0AE6-\u0AEF];NFD;Gujarati-InterIndic;InterIndic-Malayalam;NFC
+
+Oriya-Devanagari:alias:[\u0B01-\u0B03\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B36-\u0B39\u0B3C-\u0B43\u0B47-\u0B48\u0B4B-\u0B4D\u0B56-\u0B57\u0B5C-\u0B5D\u0B5F-\u0B61\u0B66-\u0B70];NFD;Oriya-InterIndic;InterIndic-Devanagari;NFC
+Oriya-Bengali:alias:[\u0B01-\u0B03\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B36-\u0B39\u0B3C-\u0B43\u0B47-\u0B48\u0B4B-\u0B4D\u0B56-\u0B57\u0B5C-\u0B5D\u0B5F-\u0B61\u0B66-\u0B70];NFD;Oriya-InterIndic;InterIndic-Bengali;NFC
+Oriya-Gurmukhi:alias:[\u0B01-\u0B03\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B36-\u0B39\u0B3C-\u0B43\u0B47-\u0B48\u0B4B-\u0B4D\u0B56-\u0B57\u0B5C-\u0B5D\u0B5F-\u0B61\u0B66-\u0B70];NFD;Oriya-InterIndic;InterIndic-Gurmukhi;NFC
+Oriya-Gujarati:alias:[\u0B01-\u0B03\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B36-\u0B39\u0B3C-\u0B43\u0B47-\u0B48\u0B4B-\u0B4D\u0B56-\u0B57\u0B5C-\u0B5D\u0B5F-\u0B61\u0B66-\u0B70];NFD;Oriya-InterIndic;InterIndic-Gujarati;NFC
+Oriya-Tamil:alias:[\u0B01-\u0B03\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B36-\u0B39\u0B3C-\u0B43\u0B47-\u0B48\u0B4B-\u0B4D\u0B56-\u0B57\u0B5C-\u0B5D\u0B5F-\u0B61\u0B66-\u0B70];NFD;Oriya-InterIndic;InterIndic-Tamil;NFC
+Oriya-Telugu:alias:[\u0B01-\u0B03\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B36-\u0B39\u0B3C-\u0B43\u0B47-\u0B48\u0B4B-\u0B4D\u0B56-\u0B57\u0B5C-\u0B5D\u0B5F-\u0B61\u0B66-\u0B70];NFD;Oriya-InterIndic;InterIndic-Telugu;NFC
+Oriya-Kannada:alias:[\u0B01-\u0B03\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B36-\u0B39\u0B3C-\u0B43\u0B47-\u0B48\u0B4B-\u0B4D\u0B56-\u0B57\u0B5C-\u0B5D\u0B5F-\u0B61\u0B66-\u0B70];NFD;Oriya-InterIndic;InterIndic-Kannada;NFC
+Oriya-Malayalam:alias:[\u0B01-\u0B03\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B36-\u0B39\u0B3C-\u0B43\u0B47-\u0B48\u0B4B-\u0B4D\u0B56-\u0B57\u0B5C-\u0B5D\u0B5F-\u0B61\u0B66-\u0B70];NFD;Oriya-InterIndic;InterIndic-Malayalam;NFC
+
+Tamil-Devanagari:alias:[0\u0B82-\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE7-\u0BF2];NFD;Tamil-InterIndic;InterIndic-Devanagari;NFC
+Tamil-Bengali:alias:[0\u0B82-\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE7-\u0BF2];NFD;Tamil-InterIndic;InterIndic-Bengali;NFC
+Tamil-Gurmukhi:alias:[0\u0B82-\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE7-\u0BF2];NFD;Tamil-InterIndic;InterIndic-Gurmukhi;NFC
+Tamil-Gujarati:alias:[0\u0B82-\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE7-\u0BF2];NFD;Tamil-InterIndic;InterIndic-Gujarati;NFC
+Tamil-Oriya:alias:[0\u0B82-\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE7-\u0BF2];NFD;Tamil-InterIndic;InterIndic-Oriya;NFC
+Tamil-Telugu:alias:[0\u0B82-\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE7-\u0BF2];NFD;Tamil-InterIndic;InterIndic-Telugu;NFC
+Tamil-Kannada:alias:[0\u0B82-\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE7-\u0BF2];NFD;Tamil-InterIndic;InterIndic-Kannada;NFC
+Tamil-Malayalam:alias:[0\u0B82-\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE7-\u0BF2];NFD;Tamil-InterIndic;InterIndic-Malayalam;NFC
+
+Telugu-Devanagari:alias:[\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C60-\u0C61\u0C66-\u0C6F];NFD;Telugu-InterIndic;InterIndic-Devanagari;NFC
+Telugu-Bengali:alias:[\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C60-\u0C61\u0C66-\u0C6F];NFD;Telugu-InterIndic;InterIndic-Bengali;NFC
+Telugu-Gurmukhi:alias:[\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C60-\u0C61\u0C66-\u0C6F];NFD;Telugu-InterIndic;InterIndic-Gurmukhi;NFC
+Telugu-Gujarati:alias:[\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C60-\u0C61\u0C66-\u0C6F];NFD;Telugu-InterIndic;InterIndic-Gujarati;NFC
+Telugu-Oriya:alias:[\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C60-\u0C61\u0C66-\u0C6F];NFD;Telugu-InterIndic;InterIndic-Oriya;NFC
+Telugu-Tamil:alias:[\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C60-\u0C61\u0C66-\u0C6F];NFD;Telugu-InterIndic;InterIndic-Tamil;NFC
+Telugu-Kannada:alias:[\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C60-\u0C61\u0C66-\u0C6F];NFD;Telugu-InterIndic;InterIndic-Kannada;NFC
+Telugu-Malayalam:alias:[\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C60-\u0C61\u0C66-\u0C6F];NFD;Telugu-InterIndic;InterIndic-Malayalam;NFC
+
+Kannada-Devanagari:alias:[\u0C82-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5-\u0CD6\u0CDE\u0CE0-\u0CE1\u0CE6-\u0CEF];NFD;Kannada-InterIndic;InterIndic-Devanagari;NFC
+Kannada-Bengali:alias:[\u0C82-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5-\u0CD6\u0CDE\u0CE0-\u0CE1\u0CE6-\u0CEF];NFD;Kannada-InterIndic;InterIndic-Bengali;NFC
+Kannada-Gurmukhi:alias:[\u0C82-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5-\u0CD6\u0CDE\u0CE0-\u0CE1\u0CE6-\u0CEF];NFD;Kannada-InterIndic;InterIndic-Gurmukhi;NFC
+Kannada-Gujarati:alias:[\u0C82-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5-\u0CD6\u0CDE\u0CE0-\u0CE1\u0CE6-\u0CEF];NFD;Kannada-InterIndic;InterIndic-Gujarati;NFC
+Kannada-Oriya:alias:[\u0C82-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5-\u0CD6\u0CDE\u0CE0-\u0CE1\u0CE6-\u0CEF];NFD;Kannada-InterIndic;InterIndic-Oriya;NFC
+Kannada-Tamil:alias:[\u0C82-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5-\u0CD6\u0CDE\u0CE0-\u0CE1\u0CE6-\u0CEF];NFD;Kannada-InterIndic;InterIndic-Tamil;NFC
+Kannada-Telugu:alias:[\u0C82-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5-\u0CD6\u0CDE\u0CE0-\u0CE1\u0CE6-\u0CEF];NFD;Kannada-InterIndic;InterIndic-Telugu;NFC
+Kannada-Malayalam:alias:[\u0C82-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5-\u0CD6\u0CDE\u0CE0-\u0CE1\u0CE6-\u0CEF];NFD;Kannada-InterIndic;InterIndic-Malayalam;NFC
+
+Malayalam-Devanagari:alias:[\u0D02-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D60-\u0D61\u0D66-\u0D6F];NFD;Malayalam-InterIndic;InterIndic-Devanagari;NFC
+Malayalam-Bengali:alias:[\u0D02-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D60-\u0D61\u0D66-\u0D6F];NFD;Malayalam-InterIndic;InterIndic-Bengali;NFC
+Malayalam-Gurmukhi:alias:[\u0D02-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D60-\u0D61\u0D66-\u0D6F];NFD;Malayalam-InterIndic;InterIndic-Gurmukhi;NFC
+Malayalam-Gujarati:alias:[\u0D02-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D60-\u0D61\u0D66-\u0D6F];NFD;Malayalam-InterIndic;InterIndic-Gujarati;NFC
+Malayalam-Oriya:alias:[\u0D02-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D60-\u0D61\u0D66-\u0D6F];NFD;Malayalam-InterIndic;InterIndic-Oriya;NFC
+Malayalam-Tamil:alias:[\u0D02-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D60-\u0D61\u0D66-\u0D6F];NFD;Malayalam-InterIndic;InterIndic-Tamil;NFC
+Malayalam-Telugu:alias:[\u0D02-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D60-\u0D61\u0D66-\u0D6F];NFD;Malayalam-InterIndic;InterIndic-Telugu;NFC
+Malayalam-Kannada:alias:[\u0D02-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D60-\u0D61\u0D66-\u0D6F];NFD;Malayalam-InterIndic;InterIndic-Kannada;NFC
+
+# eof
diff --git a/src/com/ibm/icu/impl/data/invuca.icu b/src/com/ibm/icu/impl/data/invuca.icu
new file mode 100644
index 0000000..0a37c2e
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/invuca.icu
Binary files differ
diff --git a/src/com/ibm/icu/impl/data/package.html b/src/com/ibm/icu/impl/data/package.html
new file mode 100755
index 0000000..80967df
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/impl/data/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 21:35:52 $
+-->
+</head>
+<body bgcolor="white">
+Resource data used by classes in com.ibm.text.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/data/thai_dict b/src/com/ibm/icu/impl/data/thai_dict
new file mode 100755
index 0000000..9f8f77f
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/thai_dict
Binary files differ
diff --git a/src/com/ibm/icu/impl/data/ucadata.icu b/src/com/ibm/icu/impl/data/ucadata.icu
new file mode 100644
index 0000000..45c0ca5
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/ucadata.icu
Binary files differ
diff --git a/src/com/ibm/icu/impl/data/unames.icu b/src/com/ibm/icu/impl/data/unames.icu
new file mode 100644
index 0000000..309e254
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/unames.icu
Binary files differ
diff --git a/src/com/ibm/icu/impl/data/unorm.icu b/src/com/ibm/icu/impl/data/unorm.icu
new file mode 100644
index 0000000..1d9b787
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/unorm.icu
Binary files differ
diff --git a/src/com/ibm/icu/impl/data/uprops.icu b/src/com/ibm/icu/impl/data/uprops.icu
new file mode 100644
index 0000000..fff0a26
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/uprops.icu
Binary files differ
diff --git a/src/com/ibm/icu/lang/UCharacter.java b/src/com/ibm/icu/lang/UCharacter.java
new file mode 100755
index 0000000..74cec4b
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacter.java
@@ -0,0 +1,1899 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/lang/UCharacter.java,v $ 
+* $Date: 2002/07/30 02:38:11 $ 
+* $Revision: 1.45 $
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+import java.util.Locale;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.util.RangeValueIterator;
+import com.ibm.icu.util.ValueIterator;
+import com.ibm.icu.util.VersionInfo;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.impl.NormalizerImpl;
+
+/**
+* <p>
+* The UCharacter class provides extensions to the 
+* <a href=http://java.sun.com/j2se/1.3/docs/api/java/lang/Character.html>
+* java.lang.Character</a> class. These extensions provide support for 
+* Unicode 3.1 properties and together with the <a href=UTF16.html>UTF16</a> 
+* class, provide support for supplementary characters (those with code 
+* points above U+FFFF).
+* </p>
+* <p>
+* Code points are represented in these API using ints. While it would be 
+* more convenient in Java to have a separate primitive datatype for them, 
+* ints suffice in the meantime.
+* </p>
+* <p>
+* To use this class please add the jar file name icu4j.jar to the 
+* class path, since it contains data files which supply the information used 
+* by this file.<br>
+* E.g. In Windows <br>
+* <code>set CLASSPATH=%CLASSPATH%;$JAR_FILE_PATH/ucharacter.jar</code>.<br>
+* Otherwise, another method would be to copy the files uprops.dat and 
+* unames.icu from the icu4j source subdirectory 
+* <i>$ICU4J_SRC/src/com.ibm.icu.impl.data</i> to your class directory 
+* <i>$ICU4J_CLASS/com.ibm.icu.impl.data</i>.
+* </p>
+* <p>
+* Aside from the additions for UTF-16 support, and the updated Unicode 3.1
+* properties, the main differences between UCharacter and Character are:
+* <ul>
+* <li> UCharacter is not designed to be a char wrapper and does not have 
+*      APIs to which involves management of that single char.<br>
+*      These include: 
+*      <ul>
+*        <li> char charValue(), 
+*        <li> int compareTo(java.lang.Character, java.lang.Character), etc.
+*      </ul>
+* <li> UCharacter does not include Character APIs that are deprecated, not 
+*      does it include the Java-specific character information, such as 
+*      boolean isJavaIdentifierPart(char ch).
+* <li> Character maps characters 'A' - 'Z' and 'a' - 'z' to the numeric 
+*      values '10' - '35'. UCharacter also does this in digit and
+*      getNumericValue, to adhere to the java semantics of these
+*      methods.  New methods unicodeDigit, and
+*      getUnicodeNumericValue do not treat the above code points 
+*      as having numeric values.  This is a semantic change from ICU4J 1.3.1.
+* </ul>
+* <p>
+* Further detail differences can be determined from the program 
+*        <a href = http://oss.software.ibm.com/developerworks/opensource/cvs/icu4j/~checkout~/icu4j/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java>
+*        com.ibm.icu.dev.test.lang.UCharacterCompare</a>
+* </p>
+* @author Syn Wee Quek
+* @since oct 06 2000
+* @see com.ibm.icu.lang.UCharacterCategory
+* @see com.ibm.icu.lang.UCharacterDirection
+*/
+
+public final class UCharacter
+{ 
+    // public data members -----------------------------------------------
+  
+    /** 
+    * The lowest Unicode code point value.
+    */
+    public static final int MIN_VALUE = UTF16.CODEPOINT_MIN_VALUE;
+
+    /**
+    * The highest Unicode code point value (scalar value) according to the 
+    * Unicode Standard. 
+    * This is a 21-bit value (21 bits, rounded up).<br>
+    * Up-to-date Unicode implementation of java.lang.Character.MIN_VALUE
+    */
+    public static final int MAX_VALUE = UTF16.CODEPOINT_MAX_VALUE; 
+      
+    /**
+    * The minimum value for Supplementary code points
+    */
+    public static final int SUPPLEMENTARY_MIN_VALUE = 
+                                          UTF16.SUPPLEMENTARY_MIN_VALUE;
+      
+    /**
+    * Unicode value used when translating into Unicode encoding form and there 
+    * is no existing character.
+    */
+	public static final int REPLACEMENT_CHAR = '\uFFFD';
+    	
+	
+    // public methods ----------------------------------------------------
+      
+    /**
+    * Retrieves the numeric value of a decimal digit code point.
+    * <br>This method observes the semantics of
+    * <code>java.lang.Character.digit()</code>.  Note that this
+    * will return positive values for code points for which isDigit
+    * returns false, just like java.lang.Character.
+    * <br><em>Semantic Change:</em> In release 1.3.1 and
+    * prior, this did not treat the European letters as having a
+    * digit value, and also treated numeric letters and other numbers as 
+    * digits.  
+    * This has been changed to conform to the java semantics.
+    * <br>A code point is a valid digit if and only if:
+    * <ul>
+    *   <li>ch is a decimal digit or one of the european letters, and
+    *   <li>the value of ch is less than the specified radix.
+    * </ul>
+    * @param ch the code point to query
+    * @param radix the radix
+    * @return the numeric value represented by the code point in the
+    * specified radix, or -1 if the code point is not a decimal digit
+    * or if its value is too large for the radix
+    */
+    public static int digit(int ch, int radix)
+    {
+        int props       = getProps(ch);
+        int numericType = UCharacterProperty.getNumericType(props);
+        
+        int result = -1;
+        if (numericType == UCharacterProperty.DECIMAL_DIGIT_NUMERIC_TYPE_) {
+        	// if props == 0, it will just fall through and return -1
+        	if (!UCharacterProperty.isExceptionIndicator(props)) {
+            	// not contained in exception data
+            	result = UCharacterProperty.getSignedValue(props);
+            }
+            else {
+            	int index = UCharacterProperty.getExceptionIndex(props);
+            	if (PROPERTY_.hasExceptionValue(index, 
+                                   UCharacterProperty.EXC_NUMERIC_VALUE_)) {
+                	return PROPERTY_.getException(index, 
+                                      UCharacterProperty.EXC_NUMERIC_VALUE_); 
+                }
+            }
+        }
+        
+        if (result < 0 && radix > 10) {
+            result = getEuropeanDigit(ch);
+        }
+        
+        if (result < 0 || result >= radix) {
+            return -1;
+        }
+        return result;
+    }
+    
+    /**
+    * Retrieves the numeric value of a decimal digit code point.
+    * <br>This is a convenience overload of <code>digit(int, int)</code> 
+    * that provides a decimal radix.
+    * <br><em>Semantic Change:</em> In release 1.3.1 and prior, this
+    * treated numeric letters and other numbers as digits.  This has
+    * been changed to conform to the java semantics.
+    * @param ch the code point to query
+    * @return the numeric value represented by the code point,
+    * or -1 if the code point is not a decimal digit or if its
+    * value is too large for a decimal radix 
+    */
+    public static int digit(int ch)
+    {
+        return digit(ch, DECIMAL_RADIX_);
+    }
+
+   /**
+    * Returns the numeric value of the code point as a nonnegative 
+    * integer.
+    * <br>If the code point does not have a numeric value, then -1 is returned. 
+    * <br>
+    * If the code point has a numeric value that cannot be represented as a 
+    * nonnegative integer (for example, a fractional value), then -2 is 
+    * returned.
+    * <br><em>Semantic Change:</em> In release 1.3.1 and
+    * prior, this returned -1 for ASCII letters and their
+    * fullwidth counterparts.  This has been changed to
+    * conform to the java semantics.
+    * @param ch the code point to query
+    * @return the numeric value of the code point, or -1 if it has no numeric 
+    * value, or -2 if it has a numeric value that cannot be represented as a 
+    * nonnegative integer
+    */
+    public static int getNumericValue(int ch)
+    {
+        return getNumericValueInternal(ch, true);
+    }
+
+   /**
+    * Returns the Unicode numeric value of the code point as a nonnegative 
+    * integer.
+    * <br>If the code point does not have a numeric value, then -1 is returned. <br>
+    * If the code point has a numeric value that cannot be represented as a 
+    * nonnegative integer (for example, a fractional value), then -2 is 
+    * returned.
+    * This returns values other than -1 for all and only those code points 
+    * whose type is a numeric type.
+    * @param ch the code point to query
+    * @return the numeric value of the code point, or -1 if it has no numeric 
+    * value, or -2 if it has a numeric value that cannot be represented as a 
+    * nonnegative integer
+    */
+    public static int getUnicodeNumericValue(int ch)
+    {
+        return getNumericValueInternal(ch, false);
+    }
+  
+    /**
+    * Returns a value indicating a code point's Unicode category.
+    * Up-to-date Unicode implementation of java.lang.Character.getType() except 
+    * for the above mentioned code points that had their category changed.<br>
+    * Return results are constants from the interface 
+    * <a href=UCharacterCategory.html>UCharacterCategory</a>
+    * @param ch code point whose type is to be determined
+    * @return category which is a value of UCharacterCategory
+    */
+    public static int getType(int ch)
+    {
+        return UCharacterProperty.getPropType(getProps(ch));
+    }
+       
+    /**
+    * Determines if a code point has a defined meaning in the up-to-date Unicode
+    * standard.
+    * E.g. supplementary code points though allocated space are not defined in 
+    * Unicode yet.<br>
+    * Up-to-date Unicode implementation of java.lang.Character.isDefined()
+    * @param ch code point to be determined if it is defined in the most current 
+    *        version of Unicode
+    * @return true if this code point is defined in unicode
+    */
+    public static boolean isDefined(int ch)
+    {
+        return getType(ch) != 0;
+    }
+                                    
+   /**
+    * Determines if a code point is a Java digit.
+    * <br>This method observes the semantics of
+    * <code>java.lang.Character.isDigit()</code>.  It returns true for
+    * decimal digits only.
+    * <br><em>Semantic Change:</em> In release 1.3.1 and prior, this
+    * treated numeric letters and other numbers as digits.  This has
+    * been changed to conform to the java semantics.
+    * @param ch code point to query
+    * @return true if this code point is a digit */
+    public static boolean isDigit(int ch)
+    {
+        return getType(ch) == UCharacterCategory.DECIMAL_DIGIT_NUMBER;
+    }
+
+    /**
+    * Determines if the specified code point is an ISO control character.
+    * A code point is considered to be an ISO control character if it is in the 
+    * range &#92u0000 through &#92u001F or in the range &#92u007F through 
+    * &#92u009F.<br>
+    * Up-to-date Unicode implementation of java.lang.Character.isISOControl()
+    * @param ch code point to determine if it is an ISO control character
+    * @return true if code point is a ISO control character
+    */
+    public static boolean isISOControl(int ch)
+    {
+        return ch >= 0 && ch <= APPLICATION_PROGRAM_COMMAND_ && 
+            ((ch <= UNIT_SEPARATOR_) || (ch >= DELETE_));
+    }
+                                    
+    /**
+    * Determines if the specified code point is a letter.
+    * Up-to-date Unicode implementation of java.lang.Character.isLetter()
+    * @param ch code point to determine if it is a letter
+    * @return true if code point is a letter
+    */
+    public static boolean isLetter(int ch)
+    {
+        int cat = getType(ch);
+        // if props == 0, it will just fall through and return false
+        return cat == UCharacterCategory.UPPERCASE_LETTER || 
+            cat == UCharacterCategory.LOWERCASE_LETTER || 
+            cat == UCharacterCategory.TITLECASE_LETTER || 
+            cat == UCharacterCategory.MODIFIER_LETTER ||
+            cat == UCharacterCategory.OTHER_LETTER;
+    }
+                
+    /**
+    * Determines if the specified code point is a letter or digit.
+    * Note this method, unlike java.lang.Character does not regard the ascii 
+    * characters 'A' - 'Z' and 'a' - 'z' as digits.
+    * @param ch code point to determine if it is a letter or a digit
+    * @return true if code point is a letter or a digit
+    */
+    public static boolean isLetterOrDigit(int ch)
+    {
+        return isDigit(ch) || isLetter(ch);
+    }
+        
+    /**
+    * Determines if the specified code point is a lowercase character.
+    * UnicodeData only contains case mappings for code points where they are 
+    * one-to-one mappings; it also omits information about context-sensitive 
+    * case mappings.<br> For more information about Unicode case mapping please 
+    * refer to the <a href=http://www.unicode.org/unicode/reports/tr21/>
+    * Technical report #21</a>.<br>
+    * Up-to-date Unicode implementation of java.lang.Character.isLowerCase()
+    * @param ch code point to determine if it is in lowercase
+    * @return true if code point is a lowercase character
+    */
+    public static boolean isLowerCase(int ch)
+    {
+        // if props == 0, it will just fall through and return false
+        return getType(ch) == UCharacterCategory.LOWERCASE_LETTER;
+    }
+       
+    /**
+    * Determines if the specified code point is a white space character.
+    * A code point is considered to be an whitespace character if and only
+    * if it satisfies one of the following criteria:
+    * <ul>
+    * <li> It is a Unicode space separator (category "Zs"), but is not
+    *      a no-break space (&#92u00A0 or &#92u202F or &#92uFEFF).
+    * <li> It is a Unicode line separator (category "Zl").
+    * <li> It is a Unicode paragraph separator (category "Zp").
+    * <li> It is &#92u0009, HORIZONTAL TABULATION. 
+    * <li> It is &#92u000A, LINE FEED. 
+    * <li> It is &#92u000B, VERTICAL TABULATION. 
+    * <li> It is &#92u000C, FORM FEED. 
+    * <li> It is &#92u000D, CARRIAGE RETURN. 
+    * <li> It is &#92u001C, FILE SEPARATOR. 
+    * <li> It is &#92u001D, GROUP SEPARATOR. 
+    * <li> It is &#92u001E, RECORD SEPARATOR. 
+    * <li> It is &#92u001F, UNIT SEPARATOR. 
+    * </ul>
+    *
+    * Up-to-date Unicode implementation of java.lang.Character.isWhitespace().
+    * @param ch code point to determine if it is a white space
+    * @return true if the specified code point is a white space character
+    */
+    public static boolean isWhitespace(int ch)
+    {
+        int cat = getType(ch);
+        // exclude no-break spaces
+        // if props == 0, it will just fall through and return false
+        return (cat == UCharacterCategory.SPACE_SEPARATOR || 
+                cat == UCharacterCategory.LINE_SEPARATOR ||
+                cat == UCharacterCategory.PARAGRAPH_SEPARATOR) && 
+                (ch != NO_BREAK_SPACE_) && 
+                (ch != NARROW_NO_BREAK_SPACE_) && 
+                (ch != ZERO_WIDTH_NO_BREAK_SPACE_) ||
+                // TAB VT LF FF CR FS GS RS US NL are all control characters
+                // that are white spaces.
+                (ch >= 0x9 && ch <= 0xd) || (ch >= 0x1c && ch <= 0x1f);
+    }
+       
+    /**
+    * Determines if the specified code point is a Unicode specified space 
+    * character, i.e. if code point is in the category Zs, Zl and Zp.
+    * Up-to-date Unicode implementation of java.lang.Character.isSpaceChar().
+    * @param ch code point to determine if it is a space
+    * @return true if the specified code point is a space character
+    */
+    public static boolean isSpaceChar(int ch)
+    {
+        int cat = getType(ch);
+        // if props == 0, it will just fall through and return false
+        return cat == UCharacterCategory.SPACE_SEPARATOR || 
+            cat == UCharacterCategory.LINE_SEPARATOR ||
+            cat == UCharacterCategory.PARAGRAPH_SEPARATOR;
+    }
+                                    
+    /**
+    * Determines if the specified code point is a titlecase character.
+    * UnicodeData only contains case mappings for code points where they are 
+    * one-to-one mappings; it also omits information about context-sensitive 
+    * case mappings.<br>
+    * For more information about Unicode case mapping please refer to the 
+    * <a href=http://www.unicode.org/unicode/reports/tr21/>
+    * Technical report #21</a>.<br>
+    * Up-to-date Unicode implementation of java.lang.Character.isTitleCase().
+    * @param ch code point to determine if it is in title case
+    * @return true if the specified code point is a titlecase character
+    */
+    public static boolean isTitleCase(int ch)
+    {
+        int cat = getType(ch);
+        // if props == 0, it will just fall through and return false
+        return cat == UCharacterCategory.TITLECASE_LETTER;
+    }
+       
+    /**
+    * Determines if the specified code point may be any part of a Unicode 
+    * identifier other than the starting character.
+    * A code point may be part of a Unicode identifier if and only if it is one 
+    * of the following: 
+    * <ul>
+    * <li> Lu Uppercase letter
+    * <li> Ll Lowercase letter
+    * <li> Lt Titlecase letter
+    * <li> Lm Modifier letter
+    * <li> Lo Other letter
+    * <li> Nl Letter number
+    * <li> Pc Connecting punctuation character 
+    * <li> Nd decimal number
+    * <li> Mc Spacing combining mark 
+    * <li> Mn Non-spacing mark 
+    * <li> Cf formatting code
+    * </ul>
+    * Up-to-date Unicode implementation of 
+    * java.lang.Character.isUnicodeIdentifierPart().<br>
+    * See <a href=http://www.unicode.org/unicode/reports/tr8/>UTR #8</a>.
+    * @param ch code point to determine if is can be part of a Unicode identifier
+    * @return true if code point is any character belonging a unicode identifier
+    *         suffix after the first character
+    */
+    public static boolean isUnicodeIdentifierPart(int ch)
+    {
+        int cat = getType(ch);
+        // if props == 0, it will just fall through and return false
+        return cat == UCharacterCategory.UPPERCASE_LETTER || 
+            cat == UCharacterCategory.LOWERCASE_LETTER || 
+            cat == UCharacterCategory.TITLECASE_LETTER || 
+            cat == UCharacterCategory.MODIFIER_LETTER ||
+            cat == UCharacterCategory.OTHER_LETTER || 
+            cat == UCharacterCategory.LETTER_NUMBER ||
+            cat == UCharacterCategory.CONNECTOR_PUNCTUATION ||
+            cat == UCharacterCategory.DECIMAL_DIGIT_NUMBER ||
+            cat == UCharacterCategory.COMBINING_SPACING_MARK || 
+            cat == UCharacterCategory.NON_SPACING_MARK || 
+            // cat == UCharacterCategory.FORMAT;
+            isIdentifierIgnorable(ch);
+    }
+                       
+    /**
+    * Determines if the specified code point is permissible as the first 
+    * character in a Unicode identifier.
+    * A code point may start a Unicode identifier if it is of type either 
+    * <ul> 
+    * <li> Lu Uppercase letter
+    * <li> Ll Lowercase letter
+    * <li> Lt Titlecase letter
+    * <li> Lm Modifier letter
+    * <li> Lo Other letter
+    * <li> Nl Letter number
+    * </ul>
+    * Up-to-date Unicode implementation of 
+    * java.lang.Character.isUnicodeIdentifierStart().<br>
+    * See <a href=http://www.unicode.org/unicode/reports/tr8/>UTR #8</a>.
+    * @param ch code point to determine if it can start a Unicode identifier
+    * @return true if code point is the first character belonging a unicode 
+    *              identifier
+    */
+    public static boolean isUnicodeIdentifierStart(int ch)
+    {
+        int cat = getType(ch);
+        // if props == 0, it will just fall through and return false
+        return cat == UCharacterCategory.UPPERCASE_LETTER || 
+            cat == UCharacterCategory.LOWERCASE_LETTER || 
+            cat == UCharacterCategory.TITLECASE_LETTER || 
+            cat == UCharacterCategory.MODIFIER_LETTER ||
+            cat == UCharacterCategory.OTHER_LETTER || 
+            cat == UCharacterCategory.LETTER_NUMBER;
+    }
+
+    /**
+    * Determines if the specified code point should be regarded as an ignorable
+    * character in a Unicode identifier.
+    * A character is ignorable in the Unicode standard if it is of the type Cf, 
+    * Formatting code.<br>
+    * Up-to-date Unicode implementation of 
+    * java.lang.Character.isIdentifierIgnorable().<br>
+    * See <a href=http://www.unicode.org/unicode/reports/tr8/>UTR #8</a>.
+    * @param ch code point to be determined if it can be ignored in a Unicode 
+    *        identifier.
+    * @return true if the code point is ignorable
+    */
+    public static boolean isIdentifierIgnorable(int ch)
+    {
+        // see java.lang.Character.isIdentifierIgnorable() on range of 
+        // ignorable characters.
+        return ch <= 8 || (ch >= 0xe && ch <= 0x1b) 
+               || (ch >= 0x7f && ch <= 0x9f) 
+               || (ch >= 0x200a && ch <= 0x200f) 
+               || (ch >= 0x206a && ch <= 0x206f) || ch == 0xfeff;
+    }
+                      
+    /**
+    * Determines if the specified code point is an uppercase character.
+    * UnicodeData only contains case mappings for code point where they are 
+    * one-to-one mappings; it also omits information about context-sensitive 
+    * case mappings.<br> 
+    * For language specific case conversion behavior, use 
+    * toUpperCase(locale, str). <br>
+    * For example, the case conversion for dot-less i and dotted I in Turkish,
+    * or for final sigma in Greek.
+    * For more information about Unicode case mapping please refer to the 
+    * <a href=http://www.unicode.org/unicode/reports/tr21/>
+    * Technical report #21</a>.<br>
+    * Up-to-date Unicode implementation of java.lang.Character.isUpperCase().
+    * @param ch code point to determine if it is in uppercase
+    * @return true if the code point is an uppercase character
+    */
+    public static boolean isUpperCase(int ch)
+    {
+        int cat = getType(ch);
+        // if props == 0, it will just fall through and return false
+        return cat == UCharacterCategory.UPPERCASE_LETTER;
+    }
+                       
+    /**
+    * The given code point is mapped to its lowercase equivalent; if the code 
+    * point has no lowercase equivalent, the code point itself is returned.
+    * UnicodeData only contains case mappings for code point where they are 
+    * one-to-one mappings; it also omits information about context-sensitive 
+    * case mappings.<br> 
+    * For language specific case conversion behavior, use 
+    * toLowerCase(locale, str). <br>
+    * For example, the case conversion for dot-less i and dotted I in Turkish,
+    * or for final sigma in Greek.
+    * For more information about Unicode case mapping please refer to the 
+    * <a href=http://www.unicode.org/unicode/reports/tr21/>
+    * Technical report #21</a>.<br>
+    * Up-to-date Unicode implementation of java.lang.Character.toLowerCase()
+    * @param ch code point whose lowercase equivalent is to be retrieved
+    * @return the lowercase equivalent code point
+    */
+    public static int toLowerCase(int ch)
+    {
+        int props = getProps(ch);
+        // if props == 0, it will just fall through and return itself
+        if(!UCharacterProperty.isExceptionIndicator(props)) {
+            int cat = UCharacterProperty.getPropType(props);
+            if (cat == UCharacterCategory.UPPERCASE_LETTER || 
+                cat == UCharacterCategory.TITLECASE_LETTER) {
+                return ch + UCharacterProperty.getSignedValue(props);
+            }
+        } 
+        else 
+        {
+            int index = UCharacterProperty.getExceptionIndex(props);
+            if (PROPERTY_.hasExceptionValue(index, 
+                                       UCharacterProperty.EXC_LOWERCASE_)) {
+                return PROPERTY_.getException(index, 
+                                         UCharacterProperty.EXC_LOWERCASE_); 
+            }
+        }
+        return ch;
+    }
+
+    /**
+    * Converts argument code point and returns a String object representing the 
+    * code point's value in UTF16 format.
+    * The result is a string whose length is 1 for non-supplementary code points, 
+    * 2 otherwise.<br>
+    * com.ibm.ibm.icu.UTF16 can be used to parse Strings generated by this 
+    * function.<br>
+    * Up-to-date Unicode implementation of java.lang.Character.toString()
+    * @param ch code point
+    * @return string representation of the code point, null if code point is not
+    *         defined in unicode
+    */
+    public static String toString(int ch)
+    {
+        if (ch < MIN_VALUE || ch > MAX_VALUE) {
+            return null;
+        }
+        
+        if (ch < SUPPLEMENTARY_MIN_VALUE) {
+            return String.valueOf((char)ch);
+        }
+        
+        StringBuffer result = new StringBuffer();
+        result.append(UTF16.getLeadSurrogate(ch));
+        result.append(UTF16.getTrailSurrogate(ch));
+        return result.toString();
+    }
+                                    
+    /**
+    * Converts the code point argument to titlecase.
+    * UnicodeData only contains case mappings for code points where they are 
+    * one-to-one mappings; it also omits information about context-sensitive 
+    * case mappings.<br> 
+    * There are only four Unicode characters that are truly titlecase forms
+    * that are distinct from uppercase forms.
+    * For more information about Unicode case mapping please refer
+    * to the <a href=http://www.unicode.org/unicode/reports/tr21/>
+    * Technical report #21</a>.<br>
+    * If no titlecase is available, the uppercase is returned. If no uppercase 
+    * is available, the code point itself is returned.<br>
+    * Up-to-date Unicode implementation of java.lang.Character.toTitleCase()
+    * @param ch code point  whose title case is to be retrieved
+    * @return titlecase code point
+    */
+    public static int toTitleCase(int ch)
+    {
+        int props = getProps(ch);
+        // if props == 0, it will just fall through and return itself
+        if (!UCharacterProperty.isExceptionIndicator(props)) {
+            if (UCharacterProperty.getPropType(props) == 
+                UCharacterCategory.LOWERCASE_LETTER) {
+                // here, titlecase is same as uppercase
+                return ch - UCharacterProperty.getSignedValue(props);
+            }
+        } 
+        else {
+            int index = UCharacterProperty.getExceptionIndex(props);
+            if (PROPERTY_.hasExceptionValue(index, 
+                                         UCharacterProperty.EXC_TITLECASE_)) {
+                return PROPERTY_.getException(index,
+                                         UCharacterProperty.EXC_TITLECASE_);
+            }
+            else {
+                // here, titlecase is same as uppercase
+                if (PROPERTY_.hasExceptionValue(index, 
+                                       UCharacterProperty.EXC_UPPERCASE_)) {
+                    return PROPERTY_.getException(index, 
+                                         UCharacterProperty.EXC_UPPERCASE_); 
+                }
+            }
+        }
+        return ch; // no mapping - return c itself
+    }
+       
+    /**
+    * Converts the character argument to uppercase.
+    * UnicodeData only contains case mappings for characters where they are 
+    * one-to-one mappings; it also omits information about context-sensitive 
+    * case mappings.<br> 
+    * For more information about Unicode case mapping please refer
+    * to the <a href=http://www.unicode.org/unicode/reports/tr21/>
+    * Technical report #21</a>.<br>
+    * If no uppercase is available, the character itself is returned.<br>
+    * Up-to-date Unicode implementation of java.lang.Character.toUpperCase()
+    * @param ch code point whose uppercase is to be retrieved
+    * @return uppercase code point
+    */
+    public static int toUpperCase(int ch)
+    {
+        int props = getProps(ch);
+        // if props == 0, it will just fall through and return itself
+        if (!UCharacterProperty.isExceptionIndicator(props)) {
+            if (UCharacterProperty.getPropType(props) == 
+                UCharacterCategory.LOWERCASE_LETTER) {
+                // here, titlecase is same as uppercase */
+                return ch - UCharacterProperty.getSignedValue(props);
+            }
+        }
+        else 
+        {
+            int index = UCharacterProperty.getExceptionIndex(props);
+            if (PROPERTY_.hasExceptionValue(index, 
+                                         UCharacterProperty.EXC_UPPERCASE_)) {
+                return PROPERTY_.getException(index, 
+                                         UCharacterProperty.EXC_UPPERCASE_); 
+            }
+        }
+        return ch; // no mapping - return c itself
+    }
+       
+    // extra methods not in java.lang.Character --------------------------
+       
+    /**
+    * Determines if the code point is a supplementary character.
+    * A code point is a supplementary character if and only if it is greater than
+    * <a href=#SUPPLEMENTARY_MIN_VALUE>SUPPLEMENTARY_MIN_VALUE</a>
+    * @param ch code point to be determined if it is in the supplementary plane
+    * @return true if code point is a supplementary character
+    */
+    public static boolean isSupplementary(int ch)
+    {
+        return ch >= UCharacter.SUPPLEMENTARY_MIN_VALUE && 
+            ch <= UCharacter.MAX_VALUE;
+    }
+      
+    /**
+    * Determines if the code point is in the BMP plane.
+    * @param ch code point to be determined if it is not a supplementary 
+    *        character
+    * @return true if code point is not a supplementary character
+    */
+    public static boolean isBMP(int ch) 
+    {
+        return (ch >= 0 && ch <= LAST_CHAR_MASK_);
+    }
+
+    /**
+    * Determines whether the specified code point is a printable character 
+    * according to the Unicode standard.
+    * @param ch code point to be determined if it is printable
+    * @return true if the code point is a printable character
+    */
+    public static boolean isPrintable(int ch)
+    {
+        int cat = getType(ch);
+        // if props == 0, it will just fall through and return false
+        return (cat != UCharacterCategory.UNASSIGNED && 
+            cat != UCharacterCategory.CONTROL && 
+            cat != UCharacterCategory.FORMAT &&
+            cat != UCharacterCategory.PRIVATE_USE &&
+            cat != UCharacterCategory.SURROGATE &&
+            cat != UCharacterCategory.GENERAL_OTHER_TYPES);
+    }
+
+    /**
+    * Determines whether the specified code point is of base form.
+    * A code point of base form does not graphically combine with preceding 
+    * characters, and is neither a control nor a format character.
+    * @param ch code point to be determined if it is of base form
+    * @return true if the code point is of base form
+    */
+    public static boolean isBaseForm(int ch)
+    {
+        int cat = getType(ch);
+        // if props == 0, it will just fall through and return false
+        return cat == UCharacterCategory.DECIMAL_DIGIT_NUMBER || 
+            cat == UCharacterCategory.OTHER_NUMBER || 
+            cat == UCharacterCategory.LETTER_NUMBER || 
+            cat == UCharacterCategory.UPPERCASE_LETTER || 
+            cat == UCharacterCategory.LOWERCASE_LETTER || 
+            cat == UCharacterCategory.TITLECASE_LETTER ||
+            cat == UCharacterCategory.MODIFIER_LETTER || 
+            cat == UCharacterCategory.OTHER_LETTER || 
+            cat == UCharacterCategory.NON_SPACING_MARK || 
+            cat == UCharacterCategory.ENCLOSING_MARK ||
+            cat == UCharacterCategory.COMBINING_SPACING_MARK;
+    }
+
+    /**
+    * Returns the Bidirection property of a code point.
+    * For example, 0x0041 (letter A) has the LEFT_TO_RIGHT directional 
+    * property.<br>
+    * Result returned belongs to the interface 
+    * <a href=UCharacterDirection.html>UCharacterDirection</a>
+    * @param ch the code point to be determined its direction
+    * @return direction constant from UCharacterDirection.
+    */
+    public static int getDirection(int ch)
+    {
+        int props = getProps(ch);
+        return UCharacterProperty.getDirection(props);
+    }
+
+    /**
+    * Determines whether the code point has the "mirrored" property.
+    * This property is set for characters that are commonly used in
+    * Right-To-Left contexts and need to be displayed with a "mirrored"
+    * glyph.
+    * @param ch code point whose mirror is to be determined
+    * @return true if the code point has the "mirrored" property
+    */
+    public static boolean isMirrored(int ch)
+    {
+        int props = getProps(ch);
+        // if props == 0, it will just fall through and return false
+        return UCharacterProperty.isMirrored(props);
+    }
+
+    /**
+    * Maps the specified code point to a "mirror-image" code point.
+    * For code points with the "mirrored" property, implementations sometimes 
+    * need a "poor man's" mapping to another code point such that the default 
+    * glyph may serve as the mirror-image of the default glyph of the specified
+    * code point.<br> 
+    * This is useful for text conversion to and from codepages with visual 
+    * order, and for displays without glyph selection capabilities.
+    * @param ch code point whose mirror is to be retrieved
+    * @return another code point that may serve as a mirror-image substitute, or 
+    *         ch itself if there is no such mapping or ch does not have the 
+    *         "mirrored" property
+    */
+    public static int getMirror(int ch)
+    {
+        int props = getProps(ch);
+        // mirrored - the value is a mirror offset
+        // if props == 0, it will just fall through and return false
+        if (UCharacterProperty.isMirrored(props)) {
+            if(!UCharacterProperty.isExceptionIndicator(props)) {
+                return ch + UCharacterProperty.getSignedValue(props);
+            }
+            else 
+            {
+                int index = UCharacterProperty.getExceptionIndex(props);
+                if (PROPERTY_.hasExceptionValue(index, 
+                                    UCharacterProperty.EXC_MIRROR_MAPPING_)) 
+                return PROPERTY_.getException(index, 
+                                     UCharacterProperty.EXC_MIRROR_MAPPING_);   
+            }
+        }
+        return ch;
+    }
+      
+    /**
+    * Gets the combining class of the argument codepoint
+    * @param ch code point whose combining is to be retrieved
+    * @return the combining class of the codepoint
+    */
+    public static int getCombiningClass(int ch)
+    {
+    	if (ch < MIN_VALUE || ch > MAX_VALUE) {
+    		throw new IllegalArgumentException("Codepoint out of bounds");
+    	}
+    	return NormalizerImpl.getCombiningClass(ch);
+    }
+      
+    /**
+    * A code point is illegal if and only if
+    * <ul>
+    * <li> Out of bounds, less than 0 or greater than UCharacter.MAX_VALUE
+    * <li> A surrogate value, 0xD800 to 0xDFFF
+    * <li> Not-a-character, having the form 0x xxFFFF or 0x xxFFFE
+    * </ul>
+    * Note: legal does not mean that it is assigned in this version of Unicode.
+    * @param ch code point to determine if it is a legal code point by itself
+    * @return true if and only if legal. 
+    */
+    public static boolean isLegal(int ch) 
+    {
+        if (ch < MIN_VALUE) {
+            return false;
+        }
+        if (ch < UTF16.SURROGATE_MIN_VALUE) {
+            return true;
+        }
+        if (ch <= UTF16.SURROGATE_MAX_VALUE) {
+            return false;
+        }
+        if (isNonCharacter(ch)) {
+            return false;
+        }
+        return (ch <= MAX_VALUE);
+    }
+      
+    /**
+    * A string is legal iff all its code points are legal.
+    * A code point is illegal if and only if
+    * <ul>
+    * <li> Out of bounds, less than 0 or greater than UCharacter.MAX_VALUE
+    * <li> A surrogate value, 0xD800 to 0xDFFF
+    * <li> Not-a-character, having the form 0x xxFFFF or 0x xxFFFE
+    * </ul>
+    * Note: legal does not mean that it is assigned in this version of Unicode.
+    * @param ch code point to determine if it is a legal code point by itself
+    * @return true if and only if legal. 
+    */
+    public static boolean isLegal(String str) 
+    {
+        int size = str.length();
+        int codepoint;
+        for (int i = 0; i < size; i ++)
+        {
+            codepoint = UTF16.charAt(str, i);
+            if (!isLegal(codepoint)) {
+                return false;
+            }
+            if (isSupplementary(codepoint)) {
+                i ++;
+            }
+        }
+        return true;
+    }
+
+    /**
+    * Gets the version of Unicode data used. 
+    * @return the unicode version number used
+    */
+    public static VersionInfo getUnicodeVersion()
+    {
+        return PROPERTY_.m_unicodeVersion_;
+    }
+      
+    /**
+    * Retrieve the most current Unicode name of the argument code point, or 
+    * null if the character is unassigned or outside the range 
+    * UCharacter.MIN_VALUE and UCharacter.MAX_VALUE or does not have a name.
+    * <br>
+    * Note calling any methods related to code point names, e.g. get*Name*() 
+    * incurs a one-time initialisation cost to construct the name tables.
+    * @param ch the code point for which to get the name
+    * @return most current Unicode name
+    */
+    public static String getName(int ch)
+    {
+        return NAME_.getName(ch, UCharacterNameChoice.U_UNICODE_CHAR_NAME);
+    }
+      
+    /**
+    * Retrieve the earlier version 1.0 Unicode name of the argument code point,
+    * or null if the character is unassigned or outside the range 
+    * UCharacter.MIN_VALUE and UCharacter.MAX_VALUE or does not have a name.
+    * <br>
+    * Note calling any methods related to code point names, e.g. get*Name*() 
+    * incurs a one-time initialisation cost to construct the name tables.
+    * @param ch the code point for which to get the name
+    * @return version 1.0 Unicode name
+    */
+    public static String getName1_0(int ch)
+    {
+        return NAME_.getName(ch, 
+                             UCharacterNameChoice.U_UNICODE_10_CHAR_NAME);
+    }
+    
+    /**
+    * <p>Retrieves a name for a valid codepoint. Unlike, getName(int) and
+    * getName1_0(int), this method will return a name even for codepoints that
+    * are not assigned a name in UnicodeData.txt.
+    * </p>
+    * The names are returned in the following order.
+    * <ul>
+    * <li> Most current Unicode name if there is any
+    * <li> Unicode 1.0 name if there is any
+    * <li> Extended name in the form of "<codepoint_type-codepoint_hex_digits>". 
+    *      E.g. <noncharacter-fffe>
+    * </ul>
+    * Note calling any methods related to code point names, e.g. get*Name*() 
+    * incurs a one-time initialisation cost to construct the name tables.
+    * @param ch the code point for which to get the name
+    * @return a name for the argument codepoint
+    * @draft 2.1
+    */
+    public static String getExtendedName(int ch) 
+    {
+        return NAME_.getName(ch, UCharacterNameChoice.U_EXTENDED_CHAR_NAME);
+    }
+      
+    /**
+    * <p>Find a Unicode code point by its most current Unicode name and 
+    * return its code point value. All Unicode names are in uppercase.</p>
+    * Note calling any methods related to code point names, e.g. get*Name*() 
+    * incurs a one-time initialisation cost to construct the name tables.
+    * @param name most current Unicode character name whose code point is to be 
+    *        returned
+    * @return code point or -1 if name is not found
+    */
+    public static int getCharFromName(String name)
+    {
+        return NAME_.getCharFromName(
+                            UCharacterNameChoice.U_UNICODE_CHAR_NAME, name);
+    }
+      
+    /**
+    * <p>Find a Unicode character by its version 1.0 Unicode name and return 
+    * its code point value. All Unicode names are in uppercase.</p>
+    * Note calling any methods related to code point names, e.g. get*Name*() 
+    * incurs a one-time initialisation cost to construct the name tables.
+    * @param name Unicode 1.0 code point name whose code point is to 
+    *             returned
+    * @return code point or -1 if name is not found
+    */
+    public static int getCharFromName1_0(String name)
+    {
+        return NAME_.getCharFromName(
+                         UCharacterNameChoice.U_UNICODE_10_CHAR_NAME, name);
+    }
+    
+    /**
+    * <p>Find a Unicode character by either its name and return its code 
+    * point value. All Unicode names are in uppercase. 
+    * Extended names are all lowercase except for numbers and are contained
+    * within angle brackets.</p>
+    * The names are searched in the following order
+    * <ul>
+    * <li> Most current Unicode name if there is any
+    * <li> Unicode 1.0 name if there is any
+    * <li> Extended name in the form of "<codepoint_type-codepoint_hex_digits>". 
+    *      E.g. <noncharacter-FFFE>
+    * </ul>
+    * Note calling any methods related to code point names, e.g. get*Name*() 
+    * incurs a one-time initialisation cost to construct the name tables.
+    * @param name codepoint name
+    * @return code point associated with the name or -1 if the name is not
+    *         found.
+    * @draft 2.1
+    */
+    public static int getCharFromExtendedName(String name)
+    {
+        return NAME_.getCharFromName(
+                            UCharacterNameChoice.U_EXTENDED_CHAR_NAME, name);
+    }
+      
+    /**
+    * Returns a code point corresponding to the two UTF16 characters.
+    * @param lead the lead char
+    * @param trail the trail char
+    * @return code point if surrogate characters are valid.
+    * @exception IllegalArgumentException thrown when argument characters do
+    *            not form a valid codepoint
+    */
+    public static int getCodePoint(char lead, char trail) 
+    {
+        if (lead >= UTF16.LEAD_SURROGATE_MIN_VALUE && 
+	        lead <= UTF16.LEAD_SURROGATE_MAX_VALUE &&
+            trail >= UTF16.TRAIL_SURROGATE_MIN_VALUE && 
+	        trail <= UTF16.TRAIL_SURROGATE_MAX_VALUE) {
+            return UCharacterProperty.getRawSupplementary(lead, trail);
+        }
+        throw new IllegalArgumentException("Illegal surrogate characters");
+    }
+      
+    /**
+    * Returns the code point corresponding to the UTF16 character.
+    * @param char16 the UTF16 character
+    * @return code point if argument is a valid character.
+    * @exception IllegalArgumentException thrown when char16 is not a valid
+    *            codepoint
+    */
+    public static int getCodePoint(char char16) 
+    {
+        if (UCharacter.isLegal(char16)) {
+            return char16;
+        }
+        throw new IllegalArgumentException("Illegal codepoint");
+    }
+      
+    /**
+    * Gets uppercase version of the argument string. 
+    * Casing is dependent on the default locale and context-sensitive.
+    * @param str source string to be performed on
+    * @return uppercase version of the argument string
+    */
+    public static String toUpperCase(String str)
+    {
+        return toUpperCase(Locale.getDefault(), str);
+    }
+      
+    /**
+    * Gets lowercase version of the argument string. 
+    * Casing is dependent on the default locale and context-sensitive
+    * @param str source string to be performed on
+    * @return lowercase version of the argument string
+    */
+    public static String toLowerCase(String str)
+    {
+        return toLowerCase(Locale.getDefault(), str);
+    }
+    
+    /**
+    * <p>Gets the titlecase version of the argument string.</p>
+    * <p>Position for titlecasing is determined by the argument break 
+    * iterator, hence the user can customized his break iterator for 
+    * a specialized titlecasing. In this case only the forward iteration 
+    * needs to be implemented.
+    * If the break iterator passed in is null, the default Unicode algorithm
+    * will be used to determine the titlecase positions.
+    * </p>
+    * <p>Only positions returned by the break iterator will be title cased,
+    * character in between the positions will all be in lower case.</p>
+    * <p>Casing is dependent on the default locale and context-sensitive</p>
+    * @param str source string to be performed on
+    * @param breakiter break iterator to determine the positions in which
+    *        the character should be title cased.
+    * @return lowercase version of the argument string
+    * @draft 2.1
+    */
+    public static String toTitleCase(String str, BreakIterator breakiter)
+    {
+        return toTitleCase(Locale.getDefault(), str, breakiter);
+    }
+      
+    /**
+    * Gets uppercase version of the argument string. 
+    * Casing is dependent on the argument locale and context-sensitive.
+    * @param locale which string is to be converted in
+    * @param str source string to be performed on
+    * @return uppercase version of the argument string
+    */
+    public static String toUpperCase(Locale locale, String str)
+    {
+    	if (locale == null) {
+    		locale = Locale.getDefault();
+    	}
+        return PROPERTY_.toUpperCase(locale, str, 0, str.length());
+    }
+      
+    /**
+    * Gets lowercase version of the argument string. 
+    * Casing is dependent on the argument locale and context-sensitive
+    * @param locale which string is to be converted in
+    * @param str source string to be performed on
+    * @return lowercase version of the argument string
+    */
+    public static String toLowerCase(Locale locale, String str)
+    {
+    	int length = str.length();
+    	StringBuffer result = new StringBuffer(length);
+    	if (locale == null) {
+    		locale = Locale.getDefault();
+    	}
+        PROPERTY_.toLowerCase(locale, str, 0, length, result);
+        return result.toString();
+    }
+    
+    /**
+    * <p>Gets the titlecase version of the argument string.</p>
+    * <p>Position for titlecasing is determined by the argument break 
+    * iterator, hence the user can customized his break iterator for 
+    * a specialized titlecasing. In this case only the forward iteration 
+    * needs to be implemented.
+    * If the break iterator passed in is null, the default Unicode algorithm
+    * will be used to determine the titlecase positions.
+    * </p>
+    * <p>Only positions returned by the break iterator will be title cased,
+    * character in between the positions will all be in lower case.</p>
+    * <p>Casing is dependent on the argument locale and context-sensitive</p>
+    * @param locale which string is to be converted in
+    * @param str source string to be performed on
+    * @param breakiter break iterator to determine the positions in which
+    *        the character should be title cased.
+    * @return lowercase version of the argument string
+    * @draft 2.1
+    */
+    public static String toTitleCase(Locale locale, String str, 
+                                     BreakIterator breakiter)
+    {
+        if (breakiter == null) {
+        	if (locale == null) {
+        		locale = Locale.getDefault();
+        	}
+            breakiter = BreakIterator.getWordInstance(locale);
+        }
+        return PROPERTY_.toTitleCase(locale, str, breakiter);
+    }
+    
+    /**
+    * The given character is mapped to its case folding equivalent according to
+    * UnicodeData.txt and CaseFolding.txt; if the character has no case folding 
+    * equivalent, the character itself is returned.
+    * Only "simple", single-code point case folding mappings are used.
+    * For "full", multiple-code point mappings use the API 
+    * foldCase(String str, boolean defaultmapping).
+    * @param ch             the character to be converted
+    * @param defaultmapping Indicates if all mappings defined in CaseFolding.txt 
+    *                       is to be used, otherwise the mappings for dotted I 
+    *                       and dotless i marked with 'I' in CaseFolding.txt will 
+    *                       be skipped.
+    * @return               the case folding equivalent of the character, if any;
+    *                       otherwise the character itself.
+    * @see                  #foldCase(String, boolean)
+    */
+    public static int foldCase(int ch, boolean defaultmapping)
+    {
+        // Some special cases are hardcoded because their conditions cannot be
+        // parsed and processed from CaseFolding.txt.
+        // Unicode 3.2 CaseFolding.txt specifies for its status field:
+        // # C: common case folding, common mappings shared by both simple and 
+        // full mappings.
+        // # F: full case folding, mappings that cause strings to grow in 
+        // length. Multiple characters are separated by spaces.
+        // # S: simple case folding, mappings to single characters where 
+        // different from F.
+        // # T: special case for uppercase I and dotted uppercase I
+        // #    - For non-Turkic languages, this mapping is normally not used.
+        // #    - For Turkic languages (tr, az), this mapping can be used 
+        // instead of the normal mapping for these characters.
+        // # Usage:
+        // #  A. To do a simple case folding, use the mappings with status 
+        // C + S.
+        // #  B. To do a full case folding, use the mappings with status C + F.
+        // #    The mappings with status T can be used or omitted depending on 
+        // the desired case-folding behavior. 
+        // (The default option is to exclude them.)
+        // Unicode 3.2 has 'T' mappings as follows:
+        // 0049; T; 0131; # LATIN CAPITAL LETTER I
+        // 0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+        // while the default mappings for these code points are:
+        // 0049; C; 0069; # LATIN CAPITAL LETTER I
+        // 0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+        // U+0130 is otherwise lowercased to U+0069 (UnicodeData.txt).
+        // In case this code is used with CaseFolding.txt from an older version 
+        // of Unicode where CaseFolding.txt contains mappings with a status of 
+        // 'I' that have the opposite polarity ('I' mappings are included by 
+        // default but excluded for Turkic), we must also hardcode the Unicode 
+        // 3.2 mappings for the code points with 'I' mappings. 
+        // Unicode 3.1.1 has 'I' mappings for U+0130 and U+0131.
+        // Unicode 3.2 has a 'T' mapping for U+0130, and lowercases U+0131 to 
+        // itself (see UnicodeData.txt).
+
+        int props = PROPERTY_.getProperty(ch);
+        if (!UCharacterProperty.isExceptionIndicator(props)) {
+            int type = UCharacterProperty.getPropType(props);
+            if (type == UCharacterCategory.UPPERCASE_LETTER ||
+                type == UCharacterCategory.TITLECASE_LETTER) {
+                return ch + UCharacterProperty.getSignedValue(props);
+            }
+        } 
+        else {
+            int index = UCharacterProperty.getExceptionIndex(props);
+            if (PROPERTY_.hasExceptionValue(index, 
+                                      UCharacterProperty.EXC_CASE_FOLDING_)) {
+                int exception = PROPERTY_.getException(index, 
+                                      UCharacterProperty.EXC_CASE_FOLDING_);
+                if (exception != 0) {
+                    int foldedcasech = 
+                         PROPERTY_.getFoldCase(exception & LAST_CHAR_MASK_);
+                    if (foldedcasech != 0){
+                        return foldedcasech;
+                    }
+                }
+                else {
+                    // special case folding mappings, hardcoded
+                    if (defaultmapping) { 
+                        // default mappings
+                        if (ch == 0x49 || ch == 0x130) { 
+                            // 0049; C; 0069; # LATIN CAPITAL LETTER I */
+                            // no simple default mapping for U+0130, 
+                            // use UnicodeData.txt
+                            return UCharacterProperty.LATIN_SMALL_LETTER_I_;
+                        } 
+                    } 
+                    else {
+                        // Turkic mappings 
+                        if (ch == 0x49) {
+                            // 0049; T; 0131; # LATIN CAPITAL LETTER I
+                            return 0x131;
+                        } 
+                        else if (ch == 0x130) {
+                            // 0130; T; 0069; 
+                            // # LATIN CAPITAL LETTER I WITH DOT ABOVE
+                            return 0x69;
+                        }
+                    }
+                    // return ch itself because it is excluded from case folding
+                    return ch;
+                }                                  
+            }
+            if (PROPERTY_.hasExceptionValue(index, 
+                                       UCharacterProperty.EXC_LOWERCASE_)) {  
+                // not else! - allow to fall through from above
+                return PROPERTY_.getException(index, 
+                                         UCharacterProperty.EXC_LOWERCASE_);
+            }
+        }
+            
+        return ch; // no mapping - return the character itself
+    }
+
+    /**
+    * The given string is mapped to its case folding equivalent according to
+    * UnicodeData.txt and CaseFolding.txt; if any character has no case folding 
+    * equivalent, the character itself is returned.
+    * "Full", multiple-code point case folding mappings are returned here.
+    * For "simple" single-code point mappings use the API 
+    * foldCase(int ch, boolean defaultmapping).
+    * @param str            the String to be converted
+    * @param defaultmapping Indicates if all mappings defined in CaseFolding.txt 
+    *                       is to be used, otherwise the mappings for dotted I 
+    *                       and dotless i marked with 'I' in CaseFolding.txt will 
+    *                       be skipped.
+    * @return               the case folding equivalent of the character, if any;
+    *                       otherwise the character itself.
+    * @see                  #foldCase(int, boolean)
+    */
+    public static String foldCase(String str, boolean defaultmapping)
+    {
+        int          size   = str.length();
+        StringBuffer result = new StringBuffer(size);
+        int          offset  = 0;
+        int          ch;
+
+        // case mapping loop
+        while (offset < size) {
+            ch = UTF16.charAt(str, offset);
+            offset += UTF16.getCharCount(ch);
+            int props = PROPERTY_.getProperty(ch);
+            if (!UCharacterProperty.isExceptionIndicator(props)) {
+                int type = UCharacterProperty.getPropType(props);
+                if (type == UCharacterCategory.UPPERCASE_LETTER ||
+                    type == UCharacterCategory.TITLECASE_LETTER) {
+                    ch += UCharacterProperty.getSignedValue(props);
+                }
+            }  
+            else {
+                int index = UCharacterProperty.getExceptionIndex(props);
+                if (PROPERTY_.hasExceptionValue(index, 
+                                    UCharacterProperty.EXC_CASE_FOLDING_)) {
+                    int exception = PROPERTY_.getException(index, 
+                                      UCharacterProperty.EXC_CASE_FOLDING_);                             
+                    if (exception != 0) {
+                        PROPERTY_.getFoldCase(exception & LAST_CHAR_MASK_, 
+                                             exception >> SHIFT_24_, result);
+                    } 
+                    else {
+                        // special case folding mappings, hardcoded
+                        if (ch != 0x49 && ch != 0x130) {
+                            // return ch itself because there is no special 
+                            // mapping for it
+                            UTF16.append(result, ch);
+                            continue;
+                        }
+                        if (defaultmapping) {
+                            // default mappings
+                            if (ch == 0x49) {
+                                // 0049; C; 0069; # LATIN CAPITAL LETTER I
+                                result.append(
+                                    UCharacterProperty.LATIN_SMALL_LETTER_I_);
+                            }
+                            else if (ch == 0x130) {
+                                // 0130; F; 0069 0307; 
+                                // # LATIN CAPITAL LETTER I WITH DOT ABOVE
+                                result.append(
+                                    UCharacterProperty.LATIN_SMALL_LETTER_I_);
+                                result.append((char)0x307);
+                            }
+                        }
+                        else {
+                            // Turkic mappings
+                            if (ch == 0x49) {
+                                // 0049; T; 0131; # LATIN CAPITAL LETTER I
+                                result.append((char)0x131);
+                            } 
+                            else if (ch == 0x130) {
+                                // 0130; T; 0069; 
+                                // # LATIN CAPITAL LETTER I WITH DOT ABOVE
+                                result.append(
+                                    UCharacterProperty.LATIN_SMALL_LETTER_I_);
+                            }
+                        }
+                    }
+                    // do not fall through to the output of c
+                    continue;
+                } 
+                else {
+                    if (PROPERTY_.hasExceptionValue(index, 
+                                         UCharacterProperty.EXC_LOWERCASE_)) {
+                        ch = PROPERTY_.getException(index, 
+                                          UCharacterProperty.EXC_LOWERCASE_);
+                    }
+                }
+                
+            }
+
+            // handle 1:1 code point mappings from UnicodeData.txt
+            UTF16.append(result, ch);
+        }
+        
+        return result.toString();
+    }
+    
+    /**
+    * Return numeric value of Han code points.
+    * <br> This returns the value of Han 'numeric' code points,
+    * including those for zero, ten, hundred, thousand, ten thousand,
+    * and hundred million.  Unicode does not consider these to be
+    * numeric. This includes both the standard and 'checkwriting'
+    * characters, the 'big circle' zero character, and the standard
+    * zero character.
+    * @draft
+    * @param ch code point to query
+    * @return value if it is a Han 'numeric character,' otherwise return -1.  
+    */
+    public static int getHanNumericValue(int ch)
+    {
+        switch(ch)
+        {
+        case IDEOGRAPHIC_NUMBER_ZERO_ :
+        case CJK_IDEOGRAPH_COMPLEX_ZERO_ :
+            return 0; // Han Zero
+        case CJK_IDEOGRAPH_FIRST_ :
+        case CJK_IDEOGRAPH_COMPLEX_ONE_ :
+            return 1; // Han One
+        case CJK_IDEOGRAPH_SECOND_ :
+        case CJK_IDEOGRAPH_COMPLEX_TWO_ :
+            return 2; // Han Two
+        case CJK_IDEOGRAPH_THIRD_ :
+        case CJK_IDEOGRAPH_COMPLEX_THREE_ :
+            return 3; // Han Three
+        case CJK_IDEOGRAPH_FOURTH_ :
+        case CJK_IDEOGRAPH_COMPLEX_FOUR_ :
+            return 4; // Han Four
+        case CJK_IDEOGRAPH_FIFTH_ :
+        case CJK_IDEOGRAPH_COMPLEX_FIVE_ :
+            return 5; // Han Five
+        case CJK_IDEOGRAPH_SIXTH_ :
+        case CJK_IDEOGRAPH_COMPLEX_SIX_ :
+            return 6; // Han Six
+        case CJK_IDEOGRAPH_SEVENTH_ :
+        case CJK_IDEOGRAPH_COMPLEX_SEVEN_ :
+            return 7; // Han Seven
+        case CJK_IDEOGRAPH_EIGHTH_ : 
+        case CJK_IDEOGRAPH_COMPLEX_EIGHT_ :
+            return 8; // Han Eight
+        case CJK_IDEOGRAPH_NINETH_ :
+        case CJK_IDEOGRAPH_COMPLEX_NINE_ :
+            return 9; // Han Nine
+        case CJK_IDEOGRAPH_TEN_ :
+        case CJK_IDEOGRAPH_COMPLEX_TEN_ :
+            return 10;
+        case CJK_IDEOGRAPH_HUNDRED_ :
+        case CJK_IDEOGRAPH_COMPLEX_HUNDRED_ :
+            return 100;
+        case CJK_IDEOGRAPH_THOUSAND_ :
+        case CJK_IDEOGRAPH_COMPLEX_THOUSAND_ :
+            return 1000;
+        case CJK_IDEOGRAPH_TEN_THOUSAND_ :
+            return 10000;
+        case CJK_IDEOGRAPH_HUNDRED_MILLION_ :
+            return 100000000;
+        }
+        return -1; // no value
+    }
+    
+    /**
+    * <p>Gets an iterator for character types, iterating over codepoints.</p>
+    * Example of use:<br>
+    * <pre>
+    * RangeValueIterator iterator = UCharacter.getTypeIterator();
+    * RangeValueIterator.Element element = new RangeValueIterator.Element();
+    * while (iterator.next(element)) {
+    *     System.out.println("Codepoint \\u" + 
+    *                        Integer.toHexString(element.start) + 
+    *                        " to codepoint \\u" +
+    *                        Integer.toHexString(element.limit - 1) + 
+    *                        " has the character type " + 
+    *                        element.value);
+    * }
+    * </pre>
+    * @return an iterator 
+    * @draft 2.1
+    */
+    public static RangeValueIterator getTypeIterator()
+    {
+        return new UCharacterTypeIterator(PROPERTY_);
+    }
+
+	/**
+    * <p>Gets an iterator for character names, iterating over codepoints.</p>
+    * <p>This API only gets the iterator for the modern, most up-to-date 
+    * Unicode names. For older 1.0 Unicode names use get1_0NameIterator() or
+    * for extended names use getExtendedNameIterator().</p>
+    * Example of use:<br>
+    * <pre>
+    * ValueIterator iterator = UCharacter.getNameIterator();
+    * ValueIterator.Element element = new ValueIterator.Element();
+    * while (iterator.next(element)) {
+    *     System.out.println("Codepoint \\u" + 
+    *                        Integer.toHexString(element.codepoint) +
+    *                        " has the name " + (String)element.value);
+    * }
+    * </pre>
+    * <p>The maximal range which the name iterator iterates is from 
+    * UCharacter.MIN_VALUE to UCharacter.MAX_VALUE.</p>
+    * @return an iterator 
+    * @draft 2.1
+    */
+    public static ValueIterator getNameIterator()
+    {
+        return new UCharacterNameIterator(NAME_,
+                                   UCharacterNameChoice.U_UNICODE_CHAR_NAME);
+    }
+    
+    /**
+    * <p>Gets an iterator for character names, iterating over codepoints.</p>
+    * <p>This API only gets the iterator for the older 1.0 Unicode names. 
+    * For modern, most up-to-date Unicode names use getNameIterator() or
+    * for extended names use getExtendedNameIterator().</p>
+    * Example of use:<br>
+    * <pre>
+    * ValueIterator iterator = UCharacter.get1_0NameIterator();
+    * ValueIterator.Element element = new ValueIterator.Element();
+    * while (iterator.next(element)) {
+    *     System.out.println("Codepoint \\u" + 
+    *                        Integer.toHexString(element.codepoint) +
+    *                        " has the name " + (String)element.value);
+    * }
+    * </pre>
+    * <p>The maximal range which the name iterator iterates is from 
+    * @return an iterator 
+    * @draft 2.1
+    */
+    public static ValueIterator getName1_0Iterator()
+    {
+        return new UCharacterNameIterator(NAME_,
+                                 UCharacterNameChoice.U_UNICODE_10_CHAR_NAME);
+    }
+    
+    /**
+    * <p>Gets an iterator for character names, iterating over codepoints.</p>
+    * <p>This API only gets the iterator for the extended names. 
+    * For modern, most up-to-date Unicode names use getNameIterator() or
+    * for older 1.0 Unicode names use get1_0NameIterator().</p>
+    * Example of use:<br>
+    * <pre>
+    * ValueIterator iterator = UCharacter.getExtendedNameIterator();
+    * ValueIterator.Element element = new ValueIterator.Element();
+    * while (iterator.next(element)) {
+    *     System.out.println("Codepoint \\u" + 
+    *                        Integer.toHexString(element.codepoint) +
+    *                        " has the name " + (String)element.value);
+    * }
+    * </pre>
+    * <p>The maximal range which the name iterator iterates is from 
+    * @return an iterator 
+    * @draft 2.1
+    */
+    public static ValueIterator getExtendedNameIterator()
+    {
+        return new UCharacterNameIterator(NAME_,
+                                 UCharacterNameChoice.U_EXTENDED_CHAR_NAME);
+    }
+    
+    /**
+     * <p>Get the "age" of the code point.</p>
+     * <p>The "age" is the Unicode version when the code point was first
+     * designated (as a non-character or for Private Use) or assigned a 
+     * character.
+     * <p>This can be useful to avoid emitting code points to receiving 
+     * processes that do not accept newer characters.</p>
+     * <p>The data is from the UCD file DerivedAge.txt.</p>
+     * @param ch The code point.
+     * @return the Unicode version number
+     * @draft ICU 2.1
+     */
+    public static VersionInfo getAge(int ch) 
+    {
+    	if (ch < MIN_VALUE || ch > MAX_VALUE) {
+    		throw new IllegalArgumentException("Codepoint out of bounds");
+    	}
+    	return PROPERTY_.getAge(ch);
+    }
+    
+    /**
+	 * <p>Check a binary Unicode property for a code point.</p> 
+	 * <p>Unicode, especially in version 3.2, defines many more properties 
+	 * than the original set in UnicodeData.txt.</p>
+	 * <p>This API is intended to reflect Unicode properties as defined in 
+	 * the Unicode Character Database (UCD) and Unicode Technical Reports 
+	 * (UTR).</p>
+	 * <p>For details about the properties see 
+	 * <a href=http://www.unicode.org/>http://www.unicode.org/</a>.</p>
+	 * <p>For names of Unicode properties see the UCD file 
+	 * PropertyAliases.txt.</p>
+	 * <p>This API does not check the validity of the codepoint.</p>
+	 * <p>Important: If ICU is built with UCD files from Unicode versions 
+	 * below 3.2, then properties marked with "new" are not or 
+	 * not fully available.</p>
+	 * @param codepoint Code point to test.
+	 * @param property selector constant from com.ibm.icu.lang.UProperty, 
+	 *        identifies which binary property to check.
+	 * @return true or false according to the binary Unicode property value 
+	 *         for ch. Also false if property is out of bounds or if the 
+	 *         Unicode version does not have data for the property at all, or 
+	 *         not for this code point.
+	 * @see com.ibm.icu.lang.UProperty
+	 * @draft ICU 2.1
+	 */
+	public static boolean hasBinaryProperty(int ch, int property) 
+	{
+		if (ch < MIN_VALUE || ch > MAX_VALUE) {
+    		throw new IllegalArgumentException("Codepoint out of bounds");
+    	}
+    	return PROPERTY_.hasBinaryProperty(ch, property);
+	}
+	
+	/**
+	 * <p>Check if a code point has the Alphabetic Unicode property.</p> 
+	 * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.ALPHABETIC).</p>
+	 * <p>Different from UCharacter.isLetter(ch)!</p> 
+	 * @draft ICU 2.1
+	 * @param ch codepoint to be tested
+	 */
+	public static boolean isUAlphabetic(int ch)
+	{
+		return hasBinaryProperty(ch, UProperty.ALPHABETIC);
+	}
+
+	/**
+	 * <p>Check if a code point has the Lowercase Unicode property.</p>
+	 * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.LOWERCASE).</p>
+	 * <p>This is different from UCharacter.isLowerCase(ch)!</p>
+	 * @param ch codepoint to be tested
+	 * @draft ICU 2.1
+	 */
+	public static boolean isULowercase(int ch) 
+	{
+		return hasBinaryProperty(ch, UProperty.LOWERCASE);
+	}
+
+	/**
+	 * <p>Check if a code point has the Uppercase Unicode property.</p>
+	 * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.UPPERCASE).</p>
+	 * <p>This is different from UCharacter.isUpperCase(ch)!</p>
+	 * @param ch codepoint to be tested
+	 * @draft ICU 2.1
+	 */
+	public static boolean isUUppercase(int ch) 
+	{
+		return hasBinaryProperty(ch, UProperty.UPPERCASE);
+	}
+
+	/**
+	 * <p>Check if a code point has the White_Space Unicode property.</p>
+	 * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.WHITE_SPACE).</p>
+	 * <p>This is different from both UCharacter.isSpace(ch) and 
+	 * UCharacter.isWhitespace(ch)!</p>
+	 * @param ch codepoint to be tested
+	 * @draft ICU 2.1
+	 */
+	public static boolean isUWhiteSpace(int ch) 
+	{
+		return hasBinaryProperty(ch, UProperty.WHITE_SPACE);
+	}
+
+    // protected data members --------------------------------------------
+    
+    /**
+    * Database storing the sets of character name
+    */
+    protected static final UCharacterName NAME_;
+      
+    // block to initialise name database and unicode 1.0 data 
+    static
+    {
+        try
+        {
+            NAME_ = new UCharacterName();
+        }
+        catch (Exception e)
+        {
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+    
+    // protected methods -------------------------------------------------
+      
+    /**
+    * Determines if codepoint is a non character
+    * @param ch codepoint
+    * @return true if codepoint is a non character false otherwise
+    */
+    static boolean isNonCharacter(int ch) 
+    {
+        if ((ch & NON_CHARACTER_SUFFIX_MIN_3_0_) == 
+                                            NON_CHARACTER_SUFFIX_MIN_3_0_) {
+            return true;
+        }
+        
+        return ch >= NON_CHARACTER_MIN_3_1_ && ch <=  NON_CHARACTER_MAX_3_1_;
+    }
+        
+    // private variables -------------------------------------------------
+    
+    /**
+    * Database storing the sets of character property
+    */
+    private static final UCharacterProperty PROPERTY_;
+                                                    
+	// block to initialise character property database
+    static
+    {
+        try
+        {
+            PROPERTY_ = UCharacterProperty.getInstance();
+        }
+        catch (Exception e)
+        {
+            throw new RuntimeException(e.getMessage());
+        }
+    }                                                    
+   
+    /**
+    * To get the last character out from a data type
+    */
+    private static final int LAST_CHAR_MASK_ = 0xFFFF;
+      
+    /**
+    * To get the last byte out from a data type
+    */
+    private static final int LAST_BYTE_MASK_ = 0xFF;
+      
+    /**
+    * Shift 16 bits
+    */
+    private static final int SHIFT_16_ = 16;
+      
+    /**
+    * Shift 24 bits
+    */
+    private static final int SHIFT_24_ = 24;
+      
+    /**
+    * Minimum suffix value that indicates if a character is non character.
+    * Unicode 3.0 non characters
+    */
+    private static final int NON_CHARACTER_SUFFIX_MIN_3_0_ = 0xFFFE;
+    
+    /**
+    * New minimum non character in Unicode 3.1
+    */
+    private static final int NON_CHARACTER_MIN_3_1_ = 0xFDD0;
+    
+    /**
+    * New non character range in Unicode 3.1
+    */
+    private static final int NON_CHARACTER_MAX_3_1_ = 0xFDEF;
+      
+    /**
+    * Decimal radix
+    */
+    private static final int DECIMAL_RADIX_ = 10;
+      
+    /**
+    * No break space code point
+    */
+    private static final int NO_BREAK_SPACE_ = 0xA0;
+      
+    /**
+    * Narrow no break space code point
+    */
+    private static final int NARROW_NO_BREAK_SPACE_ = 0x202F;
+      
+    /**
+    * Zero width no break space code point
+    */
+    private static final int ZERO_WIDTH_NO_BREAK_SPACE_ = 0xFEFF;
+      
+    /**
+    * Ideographic number zero code point
+    */
+    private static final int IDEOGRAPHIC_NUMBER_ZERO_ = 0x3007;
+            
+    /**
+    * CJK Ideograph, First code point
+    */
+    private static final int CJK_IDEOGRAPH_FIRST_ = 0x4e00;
+      
+    /**
+    * CJK Ideograph, Second code point
+    */
+    private static final int CJK_IDEOGRAPH_SECOND_ = 0x4e8c;
+            
+    /**
+    * CJK Ideograph, Third code point
+    */
+    private static final int CJK_IDEOGRAPH_THIRD_ = 0x4e09;
+      
+    /**
+    * CJK Ideograph, Fourth code point
+    */
+    private static final int CJK_IDEOGRAPH_FOURTH_ = 0x56d8;
+      
+    /**
+    * CJK Ideograph, FIFTH code point
+    */
+    private static final int CJK_IDEOGRAPH_FIFTH_ = 0x4e94;
+      
+    /**
+    * CJK Ideograph, Sixth code point
+    */
+    private static final int CJK_IDEOGRAPH_SIXTH_ = 0x516d;
+            
+    /**
+    * CJK Ideograph, Seventh code point
+    */
+    private static final int CJK_IDEOGRAPH_SEVENTH_ = 0x4e03;
+      
+    /**
+    * CJK Ideograph, Eighth code point
+    */
+    private static final int CJK_IDEOGRAPH_EIGHTH_ = 0x516b;
+      
+    /**
+    * CJK Ideograph, Nineth code point
+    */
+    private static final int CJK_IDEOGRAPH_NINETH_ = 0x4e5d;
+      
+    /**
+    * Application Program command code point
+    */
+    private static final int APPLICATION_PROGRAM_COMMAND_ = 0x009F;
+      
+    /**
+    * Unit separator code point
+    */
+    private static final int UNIT_SEPARATOR_ = 0x001F;
+      
+    /**
+    * Delete code point
+    */
+    private static final int DELETE_ = 0x007F;
+      
+    /**
+    * ISO control character first range upper limit 0x0 - 0x1F
+    */
+    private static final int ISO_CONTROL_FIRST_RANGE_MAX_ = 0x1F;
+    
+    /**
+    * Han digit characters
+    */
+    private static final int CJK_IDEOGRAPH_COMPLEX_ZERO_     = 0x96f6;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_ONE_      = 0x58f9;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_TWO_      = 0x8cb3;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_THREE_    = 0x53c3;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_FOUR_     = 0x8086;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_FIVE_     = 0x4f0d;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_SIX_      = 0x9678;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_SEVEN_    = 0x67d2;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_EIGHT_    = 0x634c;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_NINE_     = 0x7396;    
+    private static final int CJK_IDEOGRAPH_TEN_              = 0x5341;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_TEN_      = 0x62fe;    
+    private static final int CJK_IDEOGRAPH_HUNDRED_          = 0x767e;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_HUNDRED_  = 0x4f70;    
+    private static final int CJK_IDEOGRAPH_THOUSAND_         = 0x5343;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_THOUSAND_ = 0x4edf;    
+    private static final int CJK_IDEOGRAPH_TEN_THOUSAND_     = 0x824c;    
+    private static final int CJK_IDEOGRAPH_HUNDRED_MILLION_  = 0x5104;
+                           
+    // private constructor -----------------------------------------------
+      
+    /**
+    * Private constructor to prevent instantiation
+    */
+    private UCharacter()
+    {
+    }
+      
+    // private methods ---------------------------------------------------
+      
+    /**
+    * Gets the correct property information from UCharacterProperty
+    * @param ch character whose information is to be retrieved
+    * @return a 32 bit information, returns 0 if no data is found.
+    */
+    private static int getProps(int ch)
+    {
+        if (ch >= MIN_VALUE & ch <= MAX_VALUE) {
+            return PROPERTY_.getProperty(ch);
+        }
+        return 0;
+    }
+    
+    private static int getEuropeanDigit(int ch) {
+        if (ch <= 0x7a) {
+            if (ch >= 0x41 && ch <= 0x5a) {
+                return ch + 10 - 0x41;
+            } else if (ch >= 0x61) {
+                return ch + 10 - 0x61;
+            }
+        } else if (ch >= 0xff21) {
+            if (ch <= 0xff3a) {
+                return ch + 10 - 0xff21;
+            } else if (ch >= 0xff41 && ch <= 0xff5a) {
+                return ch + 10 - 0xff41;
+            }
+        }
+        return -1;
+    }
+    
+    private static int getNumericValueInternal(int ch, boolean useEuropean)
+    {
+        int props       = getProps(ch);
+        int numericType = UCharacterProperty.getNumericType(props);
+        
+        int result = -1;
+        if (numericType == UCharacterProperty.NON_DIGIT_NUMERIC_TYPE_) {
+            result = -2;
+        }
+        if (numericType != UCharacterProperty.NON_NUMERIC_TYPE_) {
+        	// if props == 0, it will just fall through and return -1
+        	if (!UCharacterProperty.isExceptionIndicator(props)) {
+            	// not contained in exception data
+            	return UCharacterProperty.getSignedValue(props);
+            }
+            
+			int index = UCharacterProperty.getExceptionIndex(props);
+           	if (!PROPERTY_.hasExceptionValue(index, 
+                               UCharacterProperty.EXC_DENOMINATOR_VALUE_) && 
+                PROPERTY_.hasExceptionValue(index, 
+                                   UCharacterProperty.EXC_NUMERIC_VALUE_)) {
+               	return PROPERTY_.getException(index, 
+                                     UCharacterProperty.EXC_NUMERIC_VALUE_);
+            }
+        }
+        
+        if (result < 0 && useEuropean) {
+            int europeannumeric = getEuropeanDigit(ch);
+            if (europeannumeric >= 0) {
+            	return europeannumeric;
+            }
+        }
+        
+        return result;
+    }
+}
+
diff --git a/src/com/ibm/icu/lang/UCharacterCategory.java b/src/com/ibm/icu/lang/UCharacterCategory.java
new file mode 100755
index 0000000..bc34453
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterCategory.java
@@ -0,0 +1,309 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: 
+*      /usr/cvs/icu4j/icu4j/src/com/ibm/icu/text/UCharacterCategory.java $ 
+* $Date: 2002/07/11 21:25:24 $ 
+* $Revision: 1.7 $
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+/**
+* Enumerated Unicode category types from the UnicodeData.txt file.
+* Used as return results from <a href=UCharacter.html>UCharacter</a>
+* Equivalent to icu's UCharCategory.
+* Refer to <a href=http://www.unicode.org/Public/UNIDATA/UnicodeData.html>
+* Unicode Consortium</a> for more information about UnicodeData.txt.
+* @author Syn Wee Quek
+* @since oct0300
+*/
+
+public class UCharacterCategory
+{
+  // public variable -----------------------------------------------------
+  
+  /**
+  * Unassigned character type
+  */
+  public static final int UNASSIGNED              = 0; 
+  /**
+  * Character type Cn
+  * Not Assigned (no characters in [UnicodeData.txt] have this property) 
+  * @draft 2.1
+  */
+  public static final int GENERAL_OTHER_TYPES     = 0;
+  /**
+  * Character type Lu
+  */
+  public static final int UPPERCASE_LETTER        = 1;
+  /**
+  * Character type Ll
+  */
+	public static final int LOWERCASE_LETTER        = 2;
+	/**
+  * Character type Lt
+  */
+	public static final int TITLECASE_LETTER        = 3;
+	/**
+  * Character type Lm
+  */
+	public static final int MODIFIER_LETTER         = 4;
+	/**
+  * Character type Lo
+  */
+	public static final int OTHER_LETTER            = 5;
+	/**
+  * Character type Mn
+  */
+	public static final int NON_SPACING_MARK        = 6;
+	/**
+  * Character type Me
+  */
+	public static final int ENCLOSING_MARK          = 7;
+	/**
+  * Character type Mc
+  */
+	public static final int COMBINING_SPACING_MARK  = 8;
+	/**
+  * Character type Nd
+  */
+	public static final int DECIMAL_DIGIT_NUMBER    = 9;
+	/**
+  * Character type Nl
+  */
+	public static final int LETTER_NUMBER           = 10;
+	
+	// start of 11------------
+	
+	/**
+  * Character type No
+  */
+	public static final int OTHER_NUMBER            = 11;
+	/**
+  * Character type Zs
+  */
+	public static final int SPACE_SEPARATOR         = 12;
+	/**
+  * Character type Zl
+  */
+	public static final int LINE_SEPARATOR          = 13;
+	/**
+  * Character type Zp
+  */
+	public static final int PARAGRAPH_SEPARATOR     = 14;
+	/**
+  * Character type Cc
+  */
+	public static final int CONTROL                 = 15;
+	/**
+  * Character type Cf
+  */
+	public static final int FORMAT                  = 16;
+	/**
+  * Character type Co
+  */
+	public static final int PRIVATE_USE             = 17;
+	/**
+  * Character type Cs
+  */
+	public static final int SURROGATE               = 18;
+	/**
+  * Character type Pd
+  */
+	public static final int DASH_PUNCTUATION        = 19;
+	/**
+  * Character type Ps
+  */
+	public static final int START_PUNCTUATION       = 20;
+	
+	// start of 21 ------------
+
+	/**
+  * Character type Pe
+  */
+	public static final int END_PUNCTUATION         = 21;
+	/**
+  * Character type Pc
+  */
+	public static final int CONNECTOR_PUNCTUATION   = 22;
+	/**
+  * Character type Po
+  */
+	public static final int OTHER_PUNCTUATION       = 23;
+	/**
+  * Character type Sm
+  */
+	public static final int MATH_SYMBOL             = 24;
+	/**
+  * Character type Sc
+  */
+	public static final int CURRENCY_SYMBOL         = 25;
+	/**
+  * Character type Sk
+  */
+	public static final int MODIFIER_SYMBOL         = 26;
+	/**
+  * Character type So
+  */
+	public static final int OTHER_SYMBOL            = 27;
+	/**
+  * Character type Pi
+  */
+	public static final int INITIAL_PUNCTUATION     = 28;
+	/**
+  * Character type Pf
+  */
+	public static final int FINAL_PUNCTUATION       = 29;
+	
+	// start of 31 ------------
+
+	/**
+  * Character type count
+  */
+	public static final int CHAR_CATEGORY_COUNT     = 30;
+	
+	/**
+	* Gets the name of the argument category
+	* @param category to retrieve name
+	* @return category name
+	*/
+	public static String toString(int category)
+	{
+	  switch (category)
+	  {
+	    case UPPERCASE_LETTER :
+	      return "Letter, Uppercase";
+	    case LOWERCASE_LETTER :
+	      return "Letter, Lowercase";
+	    case TITLECASE_LETTER :
+	      return "Letter, Titlecase";
+	    case MODIFIER_LETTER :
+	      return "Letter, Modifier";
+	    case OTHER_LETTER :
+	      return "Letter, Other";
+	    case NON_SPACING_MARK :
+	      return "Mark, Non-Spacing";
+	    case ENCLOSING_MARK : 
+	      return "Mark, Enclosing";
+	    case COMBINING_SPACING_MARK :
+	      return "Mark, Spacing Combining";
+	    case DECIMAL_DIGIT_NUMBER :
+	      return "Number, Decimal Digit";
+	    case LETTER_NUMBER :
+	      return "Number, Letter";
+	    case OTHER_NUMBER :
+	      return "Number, Other";
+	    case SPACE_SEPARATOR :
+	      return "Separator, Space";
+	    case LINE_SEPARATOR :
+	      return "Separator, Line";
+	    case PARAGRAPH_SEPARATOR :
+	      return "Separator, Paragraph";
+	    case CONTROL :
+	      return "Other, Control";
+	    case FORMAT :
+	      return "Other, Format";
+	    case PRIVATE_USE :
+	      return "Other, Private Use";
+	    case SURROGATE :
+	      return "Other, Surrogate";
+	    case DASH_PUNCTUATION :
+	      return "Punctuation, Dash";
+	    case START_PUNCTUATION :
+	      return "Punctuation, Open";
+	    case END_PUNCTUATION :
+	      return "Punctuation, Close";
+	    case CONNECTOR_PUNCTUATION :
+	      return "Punctuation, Connector";
+	    case OTHER_PUNCTUATION :
+	      return "Punctuation, Other";
+	    case MATH_SYMBOL :
+	      return "Symbol, Math";
+	    case CURRENCY_SYMBOL :
+	      return "Symbol, Currency";
+	    case MODIFIER_SYMBOL :
+	      return "Symbol, Modifier";
+	    case OTHER_SYMBOL :
+	      return "Symbol, Other";
+	    case INITIAL_PUNCTUATION :
+	      return "Punctuation, Initial quote";
+	    case FINAL_PUNCTUATION :
+	      return "Punctuation, Final quote";
+	  }
+	  return "Unassigned";
+	}
+	
+	// private constructor -----------------------------------------------
+  
+    /**
+    * Private constructor to prevent initialisation
+    */
+    private UCharacterCategory()
+    {
+    }
+    
+	// package private data members --------------------------------------
+	
+	/**
+	* Not a character type
+	*/
+	static final int NON_CHARACTER_ = CHAR_CATEGORY_COUNT;
+	/**
+	* Lead surrogate type
+	*/
+	static final int LEAD_SURROGATE_ = CHAR_CATEGORY_COUNT + 1;
+    /**
+	* Trail surrogate type
+	*/
+	static final int TRAIL_SURROGATE_ = CHAR_CATEGORY_COUNT + 2;
+	/**
+	* Extended category count
+	*/
+	static final int EXTENDED_CATEGORY_ = CHAR_CATEGORY_COUNT + 3;
+	/**
+    * Type names used for extended names
+    */
+    static final String TYPE_NAMES_[] = {"unassigned",
+                                                 "uppercase letter",
+                                                 "lowercase letter",
+                                                 "titlecase letter",
+                                                 "modifier letter",
+                                                 "other letter",
+                                                 "non spacing mark",
+                                                 "enclosing mark",
+                                                 "combining spacing mark",
+                                                 "decimal digit number",
+                                                 "letter number",
+                                                 "other number",
+                                                 "space separator",
+                                                 "line separator",
+                                                 "paragraph separator",
+                                                 "control",
+                                                 "format",
+                                                 "private use area",
+                                                 "surrogate",
+                                                 "dash punctuation",   
+                                                 "start punctuation",
+                                                 "end punctuation",
+                                                 "connector punctuation",
+                                                 "other punctuation",
+                                                 "math symbol",
+                                                 "currency symbol",
+                                                 "modifier symbol",
+                                                 "other symbol",
+                                                 "initial punctuation",
+                                                 "final punctuation",
+                                                 "noncharacter",
+                                                 "lead surrogate",
+                                                 "trail surrogate"};
+   /**
+   * Unknown type name
+   */
+   static final String UNKNOWN_TYPE_NAME_ = "unknown";
+}
diff --git a/src/com/ibm/icu/lang/UCharacterDirection.java b/src/com/ibm/icu/lang/UCharacterDirection.java
new file mode 100755
index 0000000..1b10447
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterDirection.java
@@ -0,0 +1,171 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: 
+*     /usr/cvs/icu4j/icu4j/src/com/ibm/icu/text/UCharacterDirection.java $ 
+* $Date: 2002/02/28 23:42:04 $ 
+* $Revision: 1.4 $
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+/**
+* Enumerated Unicode character linguistic direction constants.
+* Used as return results from <a href=UCharacter.html>UCharacter</a>
+* @author Syn Wee Quek
+* @since oct0300
+*/
+
+public final class UCharacterDirection
+{
+  // private constructor =========================================
+  
+  /**
+  * Private constructor to prevent initialisation
+  */
+  private UCharacterDirection()
+  {
+  }
+  
+  // public variable =============================================
+  
+  /**
+  * Directional type L
+  */
+  public static final int LEFT_TO_RIGHT              = 0;
+  /**
+  * Directional type R
+  */
+	public static final int RIGHT_TO_LEFT              = 1;
+	/**
+  * Directional type EN
+  */
+	public static final int EUROPEAN_NUMBER            = 2;
+	/**
+  * Directional type ES
+  */
+	public static final int EUROPEAN_NUMBER_SEPARATOR  = 3;
+	/**
+  * Directional type ET
+  */
+	public static final int EUROPEAN_NUMBER_TERMINATOR = 4;
+  /**
+  * Directional type AN
+  */	                                               
+	public static final int ARABIC_NUMBER              = 5;
+	/**
+  * Directional type CS
+  */
+	public static final int COMMON_NUMBER_SEPARATOR    = 6;
+	/**
+  * Directional type B
+  */
+	public static final int BLOCK_SEPARATOR            = 7;
+	/**
+  * Directional type S
+  */      
+	public static final int SEGMENT_SEPARATOR          = 8;
+	/**
+  * Directional type WS
+  */
+	public static final int WHITE_SPACE_NEUTRAL        = 9;
+	
+	// start of 11 ---------------
+	
+	/**
+  * Directional type ON
+  */
+	public static final int OTHER_NEUTRAL              = 10;
+	/**
+  * Directional type LRE
+  */
+	public static final int LEFT_TO_RIGHT_EMBEDDING    = 11;
+	/**
+  * Directional type LRO
+  */
+	public static final int LEFT_TO_RIGHT_OVERRIDE     = 12;  
+  /**
+  * Directional type AL
+  */
+	public static final int RIGHT_TO_LEFT_ARABIC       = 13;
+	/**
+  * Directional type RLE
+  */
+	public static final int RIGHT_TO_LEFT_EMBEDDING    = 14;
+	/**
+  * Directional type RLO
+  */
+	public static final int RIGHT_TO_LEFT_OVERRIDE     = 15;
+	/**
+  * Directional type PDF
+  */
+	public static final int POP_DIRECTIONAL_FORMAT     = 16;
+	/**
+  * Directional type NSM
+  */
+	public static final int DIR_NON_SPACING_MARK       = 17;
+	/**
+  * Directional type BN
+  */
+	public static final int BOUNDARY_NEUTRAL           = 18;
+	/**
+  * Number of directional type
+  */
+	public static final int CHAR_DIRECTION_COUNT       = 19;
+	
+	/**
+	* Gets the name of the argument direction
+	* @param dir direction type to retrieve name
+	* @return directional name
+	*/
+	public static String toString(int dir)
+	{
+	  switch(dir)
+	  {
+	    case LEFT_TO_RIGHT :
+	      return "Left-to-Right";
+	    case RIGHT_TO_LEFT :
+	      return "Right-to-Left";
+	    case EUROPEAN_NUMBER :
+	      return "European Number";
+	    case EUROPEAN_NUMBER_SEPARATOR :
+	      return "European Number Separator";
+	    case EUROPEAN_NUMBER_TERMINATOR :
+	      return "European Number Terminator";
+	    case ARABIC_NUMBER :
+	      return "Arabic Number";
+	    case COMMON_NUMBER_SEPARATOR :
+	      return "Common Number Separator";
+	    case BLOCK_SEPARATOR :
+	      return "Paragraph Separator";
+	    case SEGMENT_SEPARATOR :
+	      return "Segment Separator";
+	    case WHITE_SPACE_NEUTRAL :
+	      return "Whitespace";
+	    case OTHER_NEUTRAL :
+	      return "Other Neutrals";
+	    case LEFT_TO_RIGHT_EMBEDDING :
+	      return "Left-to-Right Embedding";
+	    case LEFT_TO_RIGHT_OVERRIDE :
+	      return "Left-to-Right Override";
+	    case RIGHT_TO_LEFT_ARABIC :
+	      return "Right-to-Left Arabic";
+	    case RIGHT_TO_LEFT_EMBEDDING :
+	      return "Right-to-Left Embedding";
+	    case RIGHT_TO_LEFT_OVERRIDE :
+	      return "Right-to-Left Override";
+	    case POP_DIRECTIONAL_FORMAT :
+	      return "Pop Directional Format";
+	    case DIR_NON_SPACING_MARK :
+	      return "Non-Spacing Mark";
+	    case BOUNDARY_NEUTRAL :
+	      return "Boundary Neutral";
+	  }
+	  return "Unassigned";
+	}
+}
diff --git a/src/com/ibm/icu/lang/UCharacterName.java b/src/com/ibm/icu/lang/UCharacterName.java
new file mode 100755
index 0000000..208c624
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterName.java
@@ -0,0 +1,1181 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: 
+*     /usr/cvs/icu4j/icu4j/src/com/ibm/icu/text/UCharacterName.java $ 
+* $Date: 2002/07/30 02:38:11 $ 
+* $Revision: 1.17 $
+*
+*******************************************************************************
+*/
+package com.ibm.icu.lang;
+
+import java.io.InputStream;
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UTF16;
+
+/**
+* Internal class to manage character names.
+* Since data in <a href=UCharacterNameDB.html>UCharacterNameDB</a> is stored
+* in an array of char, by default indexes used in this class is refering to 
+* a 2 byte count, unless otherwise stated. Cases where the index is refering 
+* to a byte count, the index is halved and depending on whether the index is 
+* even or odd, the MSB or LSB of the result char at the halved index is 
+* returned. For indexes to an array of int, the index is multiplied by 2, 
+* result char at the multiplied index and its following char is returned as an 
+* int.
+* <a href=UCharacter.html>UCharacter</a> acts as a public facade for this class
+* Note : 0 - 0x1F are control characters without names in Unicode 3.0
+* Information on parsing of the binary data is located at
+* <a href=oss.software.ibm.com/icu4j/icu4jhtml/com/ibm/icu/text/readme.html>
+* ReadMe</a>
+* @author Syn Wee Quek
+* @since nov0700
+*/
+
+final class UCharacterName
+{
+    // public methods ----------------------------------------------------
+    
+    /**
+    * toString method for printing
+    */
+    public String toString()
+    {
+        StringBuffer result = new StringBuffer("names content \n");
+        /*result.append(super.toString());
+        result.append('\n');
+        result.append("token string offset ");
+        result.append(m_tokenstringoffset_);
+        result.append("\n");
+        result.append("group offset ");
+        result.append(m_groupsoffset_);
+        result.append("\n");
+        result.append("group string offset ");
+        result.append(m_groupstringoffset_);
+        result.append("\n");
+        result.append("alg names offset ");
+        result.append(m_algnamesoffset_);
+        result.append("\n");
+        */
+        return result.toString();
+    } 
+    
+    // package protected inner class -------------------------------------
+    
+    /**
+    * Algorithmic name class
+    */
+    static final class AlgorithmName
+    {
+        // protected data members ----------------------------------------
+        
+        /**
+        * Constant type value of the different AlgorithmName
+        */
+        protected static final int TYPE_0_ = 0;
+        protected static final int TYPE_1_ = 1;
+        
+        // protected constructors ----------------------------------------
+        
+        /**
+        * Constructor
+        */
+        protected AlgorithmName()
+        {
+        }
+        
+        // protected methods ---------------------------------------------
+        
+        /**
+        * Sets the information for accessing the algorithmic names
+        * @param rangestart starting code point that lies within this name group
+        * @param rangeend end code point that lies within this name group
+        * @param type algorithm type. There's 2 kinds of algorithmic type. First 
+        *        which uses code point as part of its name and the other uses 
+        *        variant postfix strings
+        * @param variant algorithmic variant
+        * @return true if values are valid
+        */ 
+        protected boolean setInfo(int rangestart, int rangeend, byte type,
+                                byte variant)
+        {
+            if (rangestart >= UCharacter.MIN_VALUE && rangestart <= rangeend 
+                && rangeend <= UCharacter.MAX_VALUE && 
+                (type == TYPE_0_ || type == TYPE_1_)) {
+                m_rangestart_ = rangestart;
+                m_rangeend_ = rangeend;
+                m_type_ = type;
+                m_variant_ = variant;
+                return true;
+            }
+            return false;
+        }
+        
+        /**
+        * Sets the factor data
+        * @param array of factor
+        * @return true if factors are valid
+        */
+        protected boolean setFactor(char factor[])
+        {
+            if (factor.length == m_variant_) {
+                m_factor_ = factor;
+                return true;
+            }
+            return false;
+        }
+        
+        /**
+        * Sets the name prefix
+        * @param prefix
+        * @return true if prefix is set
+        */
+        protected boolean setPrefix(String prefix)
+        {
+            if (prefix != null && prefix.length() > 0) {
+                m_prefix_ = prefix;
+                return true;
+            }
+            return false;
+        }
+        
+        /**
+        * Sets the variant factorized name data 
+        * @param string variant factorized name data
+        * @return true if values are set
+        */
+        protected boolean setFactorString(byte string[])
+        {
+            // factor and variant string can be empty for things like 
+            // hanggul code points
+            m_factorstring_ = string;
+            return true;
+        }
+      
+        /**
+        * Checks if code point lies in Algorithm object at index
+        * @param ch code point 
+        */
+        protected boolean contains(int ch)
+        {
+            return m_rangestart_ <= ch && ch <= m_rangeend_;
+        }
+        
+        /**
+        * Appends algorithm name of code point into StringBuffer.
+        * Note this method does not check for validity of code point in Algorithm,
+        * result is undefined if code point does not belong in Algorithm.
+        * @param ch code point
+        * @param str StringBuffer to append to
+        */
+        protected void appendName(int ch, StringBuffer str)
+        {
+            str.append(m_prefix_);
+            switch (m_type_) 
+            {
+                case TYPE_0_: 
+                    // prefix followed by hex digits indicating variants
+                    Utility.hex(ch, m_variant_, str);
+                    break;
+                case TYPE_1_: 
+                    // prefix followed by factorized-elements
+                    int offset = ch - m_rangestart_;
+                    int indexes[] = new int[m_variant_];
+                    int factor;
+                      
+                    // write elements according to the factors
+                    // the factorized elements are determined by modulo 
+                    // arithmetic
+                    for (int i = m_variant_ - 1; i > 0; i --) 
+                    {
+                        factor = m_factor_[i] & 0x00FF;
+                        indexes[i] = offset % factor;
+                        offset /= factor;
+                    }
+                      
+                    // we don't need to calculate the last modulus because 
+                    // start <= code <= end guarantees here that 
+                    // code <= factors[0]
+                    indexes[0] = offset;
+
+                    // joining up the factorized strings 
+                    String s[] = getFactorString(indexes);
+                    if (s != null && s.length > 0)
+                    {
+                        int size = s.length;
+                        for (int i = 0; i < size; i ++)
+                        str.append(s[i]);
+                    }
+                    break;
+            }
+        }
+        
+        /**
+        * Gets the character for the argument algorithmic name
+        * @return the algorithmic char or -1 otherwise.
+        */
+        protected int getAlgorithmChar(String name)
+        {
+            int prefixlen = m_prefix_.length();
+            if (name.length() < prefixlen || 
+                !m_prefix_.equals(name.substring(0, prefixlen))) {
+                return -1;
+            }
+                
+            switch (m_type_) 
+            {
+                case TYPE_0_ : 
+                try
+                {
+                    int result = Integer.parseInt(name.substring(prefixlen), 
+                                                  16);
+                    // does it fit into the range?
+                    if (m_rangestart_ <= result && result <= m_rangeend_) {
+                        return result;
+                    }
+                }
+                catch (NumberFormatException e)
+                {
+                    return -1;
+                }
+                break;
+                case TYPE_1_ : 
+                    // repetitative suffix name comparison done here
+                    // offset is the character code - start
+                    for (int ch = m_rangestart_; ch <= m_rangeend_; ch ++)
+                    {
+                        int offset = ch - m_rangestart_;
+                        int indexes[] = new int[m_variant_];
+                        int factor;
+                  
+                        // write elements according to the factors
+                        // the factorized elements are determined by modulo 
+                        // arithmetic
+                        for (int i = m_variant_ - 1; i > 0; i --) 
+                        {
+                            factor = m_factor_[i] & 0x00FF;
+                            indexes[i] = offset % factor;
+                            offset /= factor;
+                        }
+                        
+                        // we don't need to calculate the last modulus 
+                        // because start <= code <= end guarantees here that 
+                        // code <= factors[0]
+                        indexes[0] = offset;
+
+                        // joining up the factorized strings 
+                        if (compareFactorString(indexes, name, prefixlen)) {
+                            return ch;
+                        }
+                    }
+            }
+
+            return -1;
+        }
+        
+        // private data members ------------------------------------------
+        
+        /**
+        * Algorithmic data information
+        */
+        private int m_rangestart_;
+        private int m_rangeend_;
+        private byte m_type_;
+        private byte m_variant_;
+        private char m_factor_[];
+        private String m_prefix_;
+        private byte m_factorstring_[];
+        
+        // private methods -----------------------------------------------
+                
+        /**
+        * Gets the indexth string in each of the argument factor block
+        * @param index array with each index corresponding to each factor block
+        * @return array of indexth factor string in factor block
+        */
+        private String[] getFactorString(int index[])
+        {
+            int size = m_factor_.length;
+            if (index == null || index.length != size) {
+                return null;
+            }
+                
+            String result[] = new String[size];
+            StringBuffer str = new StringBuffer();
+            int count = 0;
+            int factor;
+            size --;
+            for (int i = 0; i <= size; i ++) {
+                factor = m_factor_[i];
+                count = UCharacterUtil.skipNullTermByteSubString(
+                                          m_factorstring_, count, index[i]);
+                count = UCharacterUtil.getNullTermByteSubString(
+                                          str, m_factorstring_, count);
+                if (i != size) {
+                    count = UCharacterUtil.skipNullTermByteSubString(
+                                                   m_factorstring_, count, 
+                                                   factor - index[i] - 1);
+                }
+                result[i] = str.toString();
+                str.delete(0, str.length());
+            }
+            return result;
+        }
+        
+        /**
+        * Compares the indexth string in each of the argument factor block with
+        * the argument string
+        * @param index array with each index corresponding to each factor block
+        * @param str string to compare with
+        * @param offset of str to start comparison
+        * @return true if string matches
+        */
+        private boolean compareFactorString(int index[], String str, 
+                                            int offset)
+        {
+            int size = m_factor_.length;
+            if (index == null || index.length != size)
+                return false;
+                
+            int count = 0;
+            int strcount = offset;
+            int factor;
+            size --;
+            for (int i = 0; i <= size; i ++)
+            {
+                factor = m_factor_[i];
+                count = UCharacterUtil.skipNullTermByteSubString(
+                                          m_factorstring_, count, index[i]);
+                strcount = UCharacterUtil.compareNullTermByteSubString(str, 
+                                          m_factorstring_, strcount, count);
+                if (strcount < 0) {
+                    return false;
+                }
+                  
+                if (i != size) {
+                    count = UCharacterUtil.skipNullTermByteSubString(
+                                  m_factorstring_, count, factor - index[i]);
+                }
+            }
+            if (strcount != str.length()) {
+                return false;
+            }
+            return true;
+        }
+    }
+    
+    // protected data members --------------------------------------------
+    
+    /**
+     * Maximum number of groups
+     */
+    protected int m_groupcount_ = 0;
+    /**
+     * Size of each groups
+     */
+    protected int m_groupsize_ = 0;
+    /**
+    * Number of lines per group 
+    * 1 << GROUP_SHIFT_
+    */
+    protected static final int LINES_PER_GROUP_ = 1 << 5;
+    
+    // protected constructor ---------------------------------------------
+    
+    /**
+    * <p>Protected constructor for use in UCharacter.</p>
+    * @exception IOException thrown when data reading fails
+    */
+    protected UCharacterName() throws IOException
+    {
+        InputStream i = getClass().getResourceAsStream(NAME_FILE_NAME_);
+        BufferedInputStream b = new BufferedInputStream(i, 
+                                                        NAME_BUFFER_SIZE_);
+        UCharacterNameReader reader = new UCharacterNameReader(b);
+        reader.read(this);
+        i.close();
+    }
+      
+    // protected methods -------------------------------------------------
+     
+    /**
+    * Retrieve the name of a Unicode code point.
+    * Depending on <code>choice</code>, the character name written into the 
+    * buffer is the "modern" name or the name that was defined in Unicode 
+    * version 1.0.
+    * The name contains only "invariant" characters
+    * like A-Z, 0-9, space, and '-'.
+    *
+    * @param ch the code point for which to get the name.
+    * @param choice Selector for which name to get.
+    * @return if code point is above 0x1fff, null is returned
+    */
+    protected String getName(int ch, int choice)
+    {
+        if (ch < UCharacter.MIN_VALUE || ch > UCharacter.MAX_VALUE || 
+            choice >= UCharacterNameChoice.U_CHAR_NAME_CHOICE_COUNT) {
+            return null;
+        }
+        
+        String result = null;
+        
+        result = getAlgName(ch, choice);
+          
+        // getting normal character name
+        if (result == null || result.length() == 0) {
+        	if (choice == UCharacterNameChoice.U_EXTENDED_CHAR_NAME) {	  
+                result = getExtendedName(ch);	
+            } else {
+                result = getGroupName(ch, choice);
+            }
+        }
+          
+        return result;
+    }
+      
+    /**
+    * Find a character by its name and return its code point value
+    * @param character name
+    * @param choice selector to indicate if argument name is a Unicode 1.0 
+    *        or the most current version 
+    * @return code point
+    */
+    protected int getCharFromName(int choice, String name)
+    {
+        // checks for illegal arguments
+        if (choice >= UCharacterNameChoice.U_CHAR_NAME_CHOICE_COUNT || 
+            name == null || name.length() == 0) {
+            return -1;
+        }
+        
+        // try extended names first  
+        int result = getExtendedChar(name.toLowerCase(), choice);
+        if (result >= -1) {
+            return result;
+        }
+        
+        String upperCaseName = name.toUpperCase();
+        // try algorithmic names first, if fails then try group names
+        // int result = getAlgorithmChar(choice, uppercasename);
+        
+        if (choice != UCharacterNameChoice.U_UNICODE_10_CHAR_NAME) {
+        	int count = 0;
+        	if (m_algorithm_ != null) {
+        	    count = m_algorithm_.length;
+        	}
+        	for (count --; count >= 0; count --) {
+         	    result = m_algorithm_[count].getAlgorithmChar(upperCaseName); 
+          	    if (result >= 0) {
+           	        return result;
+            	}
+        	}
+        }
+            
+        if (choice == UCharacterNameChoice.U_EXTENDED_CHAR_NAME) {
+	        result = getGroupChar(upperCaseName, 
+	                              UCharacterNameChoice.U_UNICODE_CHAR_NAME);
+        	if (result == -1) {
+	            result = getGroupChar(upperCaseName, 
+	                              UCharacterNameChoice.U_UNICODE_10_CHAR_NAME);
+        	}
+        }
+        else {
+        	result = getGroupChar(upperCaseName, choice);
+        }
+    	return result;
+    }
+    
+    /**
+    * Sets the token data
+    * @param token array of tokens
+    * @param tokenstring array of string values of the tokens
+    * @return false if there is a data error
+    */
+    protected boolean setToken(char token[], byte tokenstring[])
+    {
+        if (token != null && tokenstring != null && token.length > 0 &&
+            tokenstring.length > 0) {
+            m_tokentable_ = token;
+            m_tokenstring_ = tokenstring;
+            return true;
+        }
+        return false; 
+    }
+        
+    /**
+    * Set the algorithm name information array
+    * @param algorithm information array
+    * @return true if the group string offset has been set correctly
+    */
+    protected boolean setAlgorithm(AlgorithmName alg[])
+    {
+        if (alg != null && alg.length != 0) {
+            m_algorithm_ = alg;
+            return true;
+        }
+        return false;
+    }
+    
+    /**
+    * Sets the number of group and size of each group in number of char
+    * @param count number of groups
+    * @param size size of group in char
+    * @return true if group size is set correctly
+    */
+    protected boolean setGroupCountSize(int count, int size)
+    {
+        if (count <= 0 || size <= 0) {
+            return false;
+        }
+        m_groupcount_ = count;
+        m_groupsize_ = size;
+        return true;
+    }
+      
+    /**
+    * Sets the group name data
+    * @param group index information array
+    * @param groupstring name information array
+    * @return false if there is a data error
+    */
+    protected boolean setGroup(char group[], byte groupstring[])
+    {
+        if (group != null && groupstring != null && group.length > 0 &&
+            groupstring.length > 0) {
+            m_groupinfo_ = group;
+            m_groupstring_ = groupstring;
+            return true;
+        }
+        return false; 
+    }
+    
+    /**
+    * Reads a block of compressed lengths of 32 strings and expands them into 
+    * offsets and lengths for each string. Lengths are stored with a 
+    * variable-width encoding in consecutive nibbles:
+    * If a nibble<0xc, then it is the length itself (0 = empty string).
+    * If a nibble>=0xc, then it forms a length value with the following 
+    * nibble.
+    * The offsets and lengths arrays must be at least 33 (one more) long 
+    * because there is no check here at the end if the last nibble is still 
+    * used.
+    * @param index of group string object in array
+    * @param offsets array to store the value of the string offsets
+    * @param lengths array to store the value of the string length
+    * @return next index of the data string immediately after the lengths 
+    *         in terms of byte address
+    */
+    protected int getGroupLengths(int index, char offsets[], char lengths[]) 
+    {
+        char length = 0xffff;
+        byte b = 0,
+            n = 0;
+        int shift;
+        index = index * m_groupsize_; // byte count offsets of group strings
+        int stringoffset = UCharacterUtil.toInt(
+                                 m_groupinfo_[index + OFFSET_HIGH_OFFSET_], 
+                                 m_groupinfo_[index + OFFSET_LOW_OFFSET_]);
+            
+        offsets[0] = 0;
+        
+        // all 32 lengths must be read to get the offset of the first group 
+        // string
+        for (int i = 0; i < LINES_PER_GROUP_; stringoffset ++) {
+            b = m_groupstring_[stringoffset];
+            shift = 4;
+              
+            while (shift >= 0) {
+                // getting nibble
+                n = (byte)((b >> shift) & 0x0F);   
+                if (length == 0xffff && n > SINGLE_NIBBLE_MAX_) {
+                	length = (char)((n - 12) << 4);
+                }
+                else {
+                	if (length != 0xffff) {
+                 	   lengths[i] = (char)((length | n) + 12);
+                	}
+                	else {
+                 	   lengths[i] = (char)n;
+                	}
+                    
+                	if (i < LINES_PER_GROUP_) {
+                 	   offsets[i + 1] = (char)(offsets[i] + lengths[i]);
+                	}
+                    
+                	length = 0xffff;
+                	i ++;
+                }
+                      
+                shift -= 4;
+            }
+        }
+        return stringoffset;
+    }
+    
+    /**
+    * Gets the name of the argument group index
+    * @param index of the group name string in byte count
+    * @param length of the group name string
+    * @param choice of Unicode 1.0 name or the most current name
+    * @return name of the group 
+    */
+    protected String getGroupName(int index, int length, int choice) 
+    {
+        if (choice == UCharacterNameChoice.U_UNICODE_10_CHAR_NAME) {
+        	int oldindex = index;
+         	index += UCharacterUtil.skipByteSubString(m_groupstring_, 
+         		                               index, length, (byte)';');   
+         	length -= (index - oldindex);
+        }
+        
+        StringBuffer s = new StringBuffer();
+        byte b;
+        char token;
+        for (int i = 0; i < length;) {
+            b = m_groupstring_[index + i];
+            i ++;
+              
+            if (b >= m_tokentable_.length) {
+                if (b == ';') {
+                	break;
+                }
+                s.append(b); // implicit letter
+            }
+            else {
+                token = m_tokentable_[b & 0x00ff];
+                if (token == 0xFFFE) {
+                    // this is a lead byte for a double-byte token
+                    token = m_tokentable_[b << 8 | 
+                                      (m_groupstring_[index + i] & 0x00ff)];
+                    i ++;
+                }
+                if (token == 0xFFFF) {
+                    if (b == ';') {
+                    	// skip the semicolon if we are seeking extended 
+                    	// names and there was no 2.0 name but there
+                        // is a 1.0 name.
+                    	if (s.length() == 0 && choice == 
+                    	       UCharacterNameChoice.U_EXTENDED_CHAR_NAME) {
+                        	continue;
+                    	}
+                        break;
+                    }
+                    s.append((char)(b & 0x00ff)); // explicit letter
+                }
+                else { // write token word
+                    UCharacterUtil.getNullTermByteSubString(s, 
+                                                     m_tokenstring_, token);
+                }
+            }
+        }
+
+        if (s.length() == 0) {
+            return null;
+        }
+        return s.toString();
+    }
+    
+    /**
+    * Retrieves the extended name
+    */
+    protected String getExtendedName(int ch) 
+    {    
+        String result = getName(ch, UCharacterNameChoice.U_UNICODE_CHAR_NAME);    
+        if (result == null) {        
+            if (getType(ch) == UCharacterCategory.CONTROL) {            
+                result = getName(ch, 
+                                 UCharacterNameChoice.U_UNICODE_10_CHAR_NAME);        
+            }        
+            if (result == null) {            
+                result = getExtendedOr10Name(ch);
+            }
+        }    
+        return result;
+    }
+    
+    /**
+     * Gets the group index for the codepoint, or the group before it.
+     * @param codepoint
+     * @return group index containing codepoint or the group before it.
+     */
+    protected int getGroup(int codepoint)
+    {
+    	int endGroup = m_groupcount_;
+    	int msb      = getCodepointMSB(codepoint);
+        int result   = 0;    
+        // binary search for the group of names that contains the one for 
+        // code
+        // find the group that contains codepoint, or the highest before it
+        while (result < endGroup - 1) {
+            int gindex = (result + endGroup) >> 1;
+            if (msb < getGroupMSB(gindex)) {
+               	endGroup = gindex;
+            }
+            else {
+               	result = gindex;
+            }
+        }
+        return result;
+    }
+    
+    /**
+     * Gets the extended and 1.0 name when the most current unicode names
+     * fail
+     * @param ch codepoint
+     * @return name of codepoint extended or 1.0
+     */
+    protected String getExtendedOr10Name(int ch)
+    {
+    	String result = null;
+    	if (getType(ch) == UCharacterCategory.CONTROL) {            
+            result = getName(ch, 
+                             UCharacterNameChoice.U_UNICODE_10_CHAR_NAME);        
+        }        
+        if (result == null) {            
+            int type = getType(ch);    
+            // Return unknown if the table of names above is not up to 
+            // date.
+            if (type >= UCharacterCategory.TYPE_NAMES_.length) {       
+                result = UCharacterCategory.UNKNOWN_TYPE_NAME_;    
+            } 
+            else {        
+                result = UCharacterCategory.TYPE_NAMES_[type];    
+            }
+            StringBuffer tempResult = new StringBuffer(result);
+            tempResult.insert(0, '<');
+            tempResult.append('-');
+            String chStr = Integer.toHexString(ch).toUpperCase();
+            int zeros = 4 - chStr.length();
+            while (zeros > 0) {
+                tempResult.append('0');
+                zeros --;
+            }
+            tempResult.append(chStr);
+            tempResult.append('>');
+            result = tempResult.toString();
+        }
+        return result;
+    }
+    
+    // these are all UCharacterNameIterator use methods -------------------
+    
+    /**
+     * Gets the MSB from the group index
+     * @param gindex group index
+     * @return the MSB of the group if gindex is valid, -1 otherwise
+     */
+    protected int getGroupMSB(int gindex)
+    {
+    	if (gindex >= m_groupcount_) {
+    		return -1;
+    	}
+    	return m_groupinfo_[gindex * m_groupsize_];
+    }
+    
+    /**
+     * Gets the MSB of the codepoint
+     * @param codepoint 
+     * @return the MSB of the codepoint
+     */
+    protected int getCodepointMSB(int codepoint)
+    {
+    	return codepoint >> GROUP_SHIFT_;
+    }
+    
+    /**
+     * Gets the maximum codepoint + 1 of the group
+     * @param msb most significant byte of the group
+     * @return limit codepoint of the group
+     */
+    protected int getGroupLimit(int msb)
+    {
+    	return (msb << GROUP_SHIFT_) + LINES_PER_GROUP_;
+    }
+    
+    /**
+     * Gets the minimum codepoint of the group
+     * @param msb most significant byte of the group
+     * @return minimum codepoint of the group
+     */
+    protected int getGroupMin(int msb)
+    {
+    	return msb << GROUP_SHIFT_;
+    }
+    
+    /**
+     * Gets the offset to a group
+     * @param codepoint 
+     * @return offset to a group
+     */
+    protected int getGroupOffset(int codepoint)
+    {
+    	return codepoint & GROUP_MASK_;
+    }
+
+	/**
+     * Gets the minimum codepoint of a group
+     * @param codepoint
+     * @return minimum codepoint in the group which codepoint belongs to
+     */
+    protected int getGroupMinFromCodepoint(int codepoint)
+    {
+    	return codepoint & ~GROUP_MASK_;
+    }
+    
+    /**
+     * Get the Algorithm range length 
+     * @return Algorithm range length
+     */
+    protected int getAlgorithmLength()
+    {
+    	return m_algorithm_.length;
+    }
+        
+    /**
+     * Gets the start of the range
+     * @param index algorithm index
+     * @return algorithm range start
+     */
+    protected int getAlgorithmStart(int index)
+    {
+      	return m_algorithm_[index].m_rangestart_;
+    }
+        
+    /**
+     * Gets the end of the range
+     * @param index algorithm index
+     * @return algorithm range end
+     */
+    protected int getAlgorithmEnd(int index)
+    {
+      	return m_algorithm_[index].m_rangeend_;
+    }
+    
+    /**
+     * Gets the Algorithmic name of the codepoint
+     * @param index algorithmic range index
+     * @param codepoint 
+     * @return algorithmic name of codepoint
+     */
+    protected String getAlgorithmName(int index, int codepoint) 
+    {
+    	StringBuffer result = new StringBuffer();
+    	m_algorithm_[index].appendName(codepoint, result);
+        return result.toString();
+    }
+    
+        
+    // private data members ----------------------------------------------
+    
+    /**
+    * Data used in unames.icu
+    */
+    private char m_tokentable_[];
+    private byte m_tokenstring_[];
+    private char m_groupinfo_[];
+    private byte m_groupstring_[];
+    private AlgorithmName m_algorithm_[];
+      
+    /**
+    * Group use
+    */
+    private char m_groupoffsets_[] = new char[LINES_PER_GROUP_ + 1];
+    private char m_grouplengths_[] = new char[LINES_PER_GROUP_ + 1];
+      	 
+    /**
+    * Default name of the name datafile
+    */
+    private static final String NAME_FILE_NAME_ = 
+                                           "/com/ibm/icu/impl/data/unames.icu";
+    /**
+    * Shift count to retrieve group information
+    */
+    private static final int GROUP_SHIFT_ = 5;
+    /**
+    * Mask to retrieve the offset for a particular character within a group
+    */
+    private static final int GROUP_MASK_ = LINES_PER_GROUP_ - 1;
+    /**
+    * Default buffer size of datafile
+    */
+    private static final int NAME_BUFFER_SIZE_ = 100000;
+      
+    /**
+    * Position of offsethigh in group information array
+    */
+    private static final int OFFSET_HIGH_OFFSET_ = 1;
+      
+    /**
+    * Position of offsetlow in group information array
+    */
+    private static final int OFFSET_LOW_OFFSET_ = 2;
+    /**
+    * Double nibble indicator, any nibble > this number has to be combined
+    * with its following nibble
+    */
+    private static final int SINGLE_NIBBLE_MAX_ = 11;
+     
+      
+    // private methods ---------------------------------------------------
+      
+    /**
+    * Gets the algorithmic name for the argument character
+    * @param ch character to determine name for
+    * @param choice name choice
+    * @return the algorithmic name or null if not found
+    */
+    private String getAlgName(int ch, int choice) 
+    {
+    	// Do not write algorithmic Unicode 1.0 names because Unihan names are 
+        // the same as the modern ones, extension A was only introduced with 
+        // Unicode 3.0, and the Hangul syllable block was moved and changed 
+        // around Unicode 1.1.5.
+        if (choice != UCharacterNameChoice.U_UNICODE_10_CHAR_NAME) {
+       	 	// index in terms integer index
+        	StringBuffer s = new StringBuffer();
+        
+        	for (int index = m_algorithm_.length - 1; index >= 0; index --) {
+         	   if (m_algorithm_[index].contains(ch)) {
+          	      m_algorithm_[index].appendName(ch, s);
+            	  return s.toString();
+         	   }
+            }
+        }
+        return null;
+    }
+      
+    /**
+    * Getting the character with the tokenized argument name
+    * @param name of the character
+    * @return character with the tokenized argument name or -1 if character
+    *         is not found
+    */
+    private synchronized int getGroupChar(String name, int choice) 
+    {
+    	for (int i = 0; i < m_groupcount_; i ++) {
+        	// populating the data set of grouptable
+        	
+        	int startgpstrindex = getGroupLengths(i, m_groupoffsets_, 
+                                                  m_grouplengths_);
+          
+        	// shift out to function
+        	int result = getGroupChar(startgpstrindex, m_grouplengths_, name, 
+        	                          choice);
+        	if (result != -1) {
+            	return (m_groupinfo_[i * m_groupsize_] << GROUP_SHIFT_) 
+            	         | result;
+        	}
+        }
+        return -1;
+    }
+      
+    /**
+    * Compares and retrieve character if name is found within the argument 
+    * group
+    * @param index index where the set of names reside in the group block
+    * @param length list of lengths of the strings
+    * @param name character name to search for
+    * @param choice of either 1.0 or the most current unicode name
+    * @return relative character in the group which matches name, otherwise if   
+    *         not found, -1 will be returned
+    */
+    private int getGroupChar(int index, char length[], String name, 
+                             int choice)
+    { 
+        byte b = 0; 
+        char token;
+        int len;
+        int namelen = name.length();
+        int nindex;
+        int count;
+        
+        for (int result = 0; result <= LINES_PER_GROUP_; result ++) {
+            nindex = 0;
+            len = length[result];
+              
+            if (choice == UCharacterNameChoice.U_UNICODE_10_CHAR_NAME) {
+                int oldindex = index;
+                index += UCharacterUtil.skipByteSubString(m_groupstring_, 
+                                                     index, len, (byte)';');
+                len -= (index - oldindex);
+            }
+                
+            // number of tokens is > the length of the name
+            // write each letter directly, and write a token word per token
+            for (count = 0; count < len && nindex != -1 && nindex < namelen;
+                ) {
+                b = m_groupstring_[index + count];
+                count ++;
+                   
+                if (b >= m_tokentable_.length) {
+                    if (name.charAt(nindex ++) != (b & 0xFF)) {
+                        nindex = -1;
+                    }
+                }
+                else {
+                    token = m_tokentable_[b & 0xFF];
+                    if (token == 0xFFFE) {
+                        // this is a lead byte for a double-byte token
+                        token = m_tokentable_[b << 8 | 
+                                   (m_groupstring_[index + count] & 0x00ff)];
+                        count ++;
+                    }
+                    if (token == 0xFFFF) {
+                        if (name.charAt(nindex ++) != (b & 0xFF)) {
+                            nindex = -1;
+                        }
+                    }
+                    else {
+                        // compare token with name
+                        nindex = UCharacterUtil.compareNullTermByteSubString(
+                                        name, m_tokenstring_, nindex, token);
+                    }
+                }
+            }
+
+            if (namelen == nindex && 
+                (count == len || m_groupstring_[index + count] == ';')) {
+                return result;
+            }
+                
+            index += len;
+        }
+        return -1;
+    }
+       
+    /**
+    * Binary search for the group strings set that contains the argument Unicode 
+    * code point's most significant bits.
+    * The return value is always a valid group string set that contain msb.
+    * If group string set is not found, -1 is returned
+    * @param ch the code point to look for
+    * @return group string set index in datatable otherwise -1 is returned if 
+    *         group string set is not found
+    */
+    private int getGroupStringIndex(int ch)
+    {
+        // gets the msb
+        int msb = ch >> GROUP_SHIFT_,
+            end = m_groupcount_,
+            start,
+            gindex = 0;
+            
+        // binary search for the group of names that contains the one for code
+        for (start = 0; start < end - 1;) {
+            gindex = (start + end) >> 1;
+            if (msb < m_groupinfo_[gindex * m_groupsize_]) {
+                end = gindex;
+            }
+            else {
+                start = gindex;
+            }
+        }
+
+        // return this if it is an exact match
+        if (msb == m_groupinfo_[start * m_groupsize_]) {
+            start = start * m_groupsize_;
+            return UCharacterUtil.toInt(
+                                m_groupinfo_[start + OFFSET_HIGH_OFFSET_], 
+                                m_groupinfo_[start + OFFSET_LOW_OFFSET_]);
+        }
+        return -1;
+    }
+    
+    /**
+    * Gets the group name of the character
+    * @param ch character to get the group name 
+    * @param choice name choice selector to choose a unicode 1.0 or newer name
+    */
+    private synchronized String getGroupName(int ch, int choice) 
+    {            
+        // gets the msb
+        int msb   = getCodepointMSB(ch);
+        int group = getGroup(ch);
+
+        // return this if it is an exact match
+        if (msb == m_groupinfo_[group * m_groupsize_]) {
+            int index = getGroupLengths(group, m_groupoffsets_, 
+                                        m_grouplengths_);
+            int offset = ch & GROUP_MASK_;
+            return getGroupName(index + m_groupoffsets_[offset], 
+                                m_grouplengths_[offset], choice);
+        }
+        
+        return null;
+    }
+    
+    /**
+    * Gets the character extended type
+    * @param ch character to be tested
+    * @return extended type it is associated with
+    */
+    private int getType(int ch)
+    {
+        if (UCharacter.isNonCharacter(ch)) {  
+            // not a character we return a invalid category count
+            return UCharacterCategory.NON_CHARACTER_;    
+        }    
+        int result = UCharacter.getType(ch);
+        if (result == UCharacterCategory.SURROGATE) {            
+            if (ch <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
+                result = UCharacterCategory.LEAD_SURROGATE_;
+            }
+            else {
+                result = UCharacterCategory.TRAIL_SURROGATE_;
+            }    
+        }    
+        return result;
+    }
+    
+    /**
+    * Getting the character with extended name of the form <....>.
+    * @param name of the character to be found
+    * @param choice name choice
+    * @return character associated with the name, -1 if such character is not
+    *                   found and -2 if we should continue with the search.
+    */
+    private int getExtendedChar(String name, int choice)
+    {
+        if (name.charAt(0) == '<') {        
+            if (choice == UCharacterNameChoice.U_EXTENDED_CHAR_NAME) {            
+                int endIndex = name.length() - 1;
+                if (name.charAt(endIndex) == '>') {
+                    int startIndex = name.lastIndexOf('-');
+                    if (startIndex >= 0) { // We've got a category.     
+                        startIndex ++;
+                        int result = -1;
+                        try {
+                            result = Integer.parseInt(
+                                        name.substring(startIndex, endIndex), 
+                                        16);
+                        }
+                        catch (NumberFormatException e) {
+                            return -1;     
+                        } 
+                        // Now validate the category name. We could use a 
+                        // binary search, or a trie, if we really wanted to. 
+                        String type = name.substring(1, startIndex - 1);
+                        int length = UCharacterCategory.TYPE_NAMES_.length;
+                        for (int i = 0; i < length; ++ i) {             
+                            if (type.compareTo(
+                                   UCharacterCategory.TYPE_NAMES_[i]) == 0) { 
+                                if (getType(result) == i) { 
+                                    return result;     
+                                }  
+                                break;          
+                            } 
+                        }
+                    }
+                }
+            }            
+            return -1; 
+        }    
+        return -2;
+    }
+}
diff --git a/src/com/ibm/icu/lang/UCharacterNameChoice.java b/src/com/ibm/icu/lang/UCharacterNameChoice.java
new file mode 100755
index 0000000..537dd83
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterNameChoice.java
@@ -0,0 +1,35 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: 
+*     /usr/cvs/icu4j/icu4j/src/com/ibm/icu/text/UCharacterNameChoiceEnum.java $ 
+* $Date: 2002/02/16 03:05:57 $ 
+* $Revision: 1.4 $
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+/**
+* Internal class containing selector constants for the unicode character names.
+* Constants representing the "modern" name of a Unicode character or the name 
+* that was defined in Unicode version 1.0, before the Unicode standard 
+* merged with ISO-10646.
+* Arguments for <a href=UCharacterName.html>UCharacterName</a>
+* @author Syn Wee Quek
+* @since oct0600
+*/
+
+interface UCharacterNameChoice
+{
+  // public variables =============================================
+  
+  static final int U_UNICODE_CHAR_NAME = 0;
+  static final int U_UNICODE_10_CHAR_NAME = 1;
+  static final int U_EXTENDED_CHAR_NAME = 2;
+  static final int U_CHAR_NAME_CHOICE_COUNT = 3;
+}
diff --git a/src/com/ibm/icu/lang/UCharacterNameIterator.java b/src/com/ibm/icu/lang/UCharacterNameIterator.java
new file mode 100644
index 0000000..796c98e
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterNameIterator.java
@@ -0,0 +1,334 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/lang/UCharacterNameIterator.java,v $
+* $Date: 2002/04/05 01:38:15 $
+* $Revision: 1.3 $
+*
+******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+import com.ibm.icu.util.ValueIterator;
+
+/**
+ * <p>Class enabling iteration of the codepoints and their names.</p>
+ * <p>Result of each iteration contains a valid codepoint that has valid 
+ * name.</p>
+ * <p>See UCharacter.getNameIterator() for an example of use.</p>
+ * @author synwee
+ * @since release 2.1, March 5 2002
+ */
+class UCharacterNameIterator implements ValueIterator
+{
+	// public methods ----------------------------------------------------
+	
+	/**
+    * <p>Gets the next result for this iteration and returns 
+    * true if we are not at the end of the iteration, false otherwise.</p>
+    * <p>If the return boolean is a false, the contents of elements will not
+    * be updated.</p>
+    * @param element for storing the result codepoint and name
+    * @return true if we are not at the end of the iteration, false otherwise.
+    * @see Element
+    * @draft 2.1
+    */
+    public boolean next(ValueIterator.Element element)
+    {
+    	if (m_current_ >= m_limit_) {
+    		return false;
+    	}
+    	
+    	if (m_choice_ != UCharacterNameChoice.U_UNICODE_10_CHAR_NAME) {
+    		int length = m_name_.getAlgorithmLength();
+    		if (m_algorithmIndex_ < length) {
+    			while (m_algorithmIndex_ < length) {
+    				// find the algorithm range that could contain m_current_ 
+    				if (m_algorithmIndex_ < 0 ||
+    				    m_name_.getAlgorithmEnd(m_algorithmIndex_) < 
+    				    m_current_) {
+    				 	m_algorithmIndex_ ++;   
+    				}
+    				else {
+    					break;
+    				}
+    			}
+    			
+    			if (m_algorithmIndex_ < length) {
+    				// interleave the data-driven ones with the algorithmic ones
+   					// iterate over all algorithmic ranges; assume that they are 
+   					// in ascending order
+   					int start = m_name_.getAlgorithmStart(m_algorithmIndex_);
+   					if (m_current_ < start) {
+   						// this should get rid of those codepoints that are not
+   						// in the algorithmic range
+   						int end = start;
+        		    	if (m_limit_ <= start) {
+         		 	      	end = m_limit_;
+          		  		}
+            			if (!iterateGroup(element, end)) {
+            				m_current_ ++;
+              	 		 	return true;
+            			}	
+        			}
+        	
+        			if (m_current_ >= m_limit_) {
+        				// after iterateGroup fails, current codepoint may be
+        				// greater than limit
+        				return false;
+        			}
+        			
+        			element.integer = m_current_;
+        			element.value   = m_name_.getAlgorithmName(m_algorithmIndex_, 
+        		 	                                               m_current_);
+        			// reset the group index if we are in the algorithmic names                       
+        			m_groupIndex_ = -1; 
+        			m_current_ ++;
+        			return true;
+    			}
+    		}
+    	}
+    	// enumerate the character names after the last algorithmic range 
+    	if (!iterateGroup(element, m_limit_)) {
+    		m_current_ ++;
+    		return true;
+    	}
+    	else if (m_choice_ == UCharacterNameChoice.U_EXTENDED_CHAR_NAME) {
+    		if (!iterateExtended(element, m_limit_)) {
+    			m_current_ ++;
+    			return true;
+    		}
+    	}
+    	
+		return false;
+    }
+    
+    /**
+    * <p>Resets the iterator to start iterating from the integer index 
+    * UCharacter.MIN_VALUE or X if a setRange(X, Y) has been called previously.
+    * </p>
+    * @draft 2.1
+    */
+    public void reset()
+    {
+    	m_current_        = m_start_;
+    	m_groupIndex_     = -1;
+    	m_algorithmIndex_ = -1;
+    }
+    
+    /**
+     * <p>Restricts the range of integers to iterate and resets the iteration 
+     * to begin at the index argument start.</p>
+     * <p>If setRange(start, end) is not performed before next(element) is 
+     * called, the iteration will start from the integer index 
+     * UCharacter.MIN_VALUE and end at UCharacter.MAX_VALUE.</p>
+     * <p>
+     * If this range is set outside the range of UCharacter.MIN_VALUE and 
+     * UCharacter.MAX_VALUE, next(element) will always return false.
+     * </p>
+     * @param start first integer in range to iterate
+     * @param limit 1 integer after the last integer in range 
+     * @exception IllegalArgumentException thrown when attempting to set an 
+     *            illegal range. E.g limit <= start
+     * @draft 2.1
+     */
+    public void setRange(int start, int limit)
+    {
+    	if (start >= limit) {
+    	    throw new IllegalArgumentException(
+    	        "start or limit has to be valid Unicode codepoints and start < limit");
+    	}
+    	if (start < UCharacter.MIN_VALUE) {
+    		m_start_ = UCharacter.MIN_VALUE;
+    	} 
+    	else {
+    		m_start_ = start;
+    	}
+    	
+    	if (limit > UCharacter.MAX_VALUE + 1) {
+    		m_limit_ = UCharacter.MAX_VALUE + 1;
+    	}
+    	else {
+    		m_limit_ = limit;
+    	}
+    	m_current_ = m_start_;
+    }
+    
+	// protected constructor ---------------------------------------------
+    
+    /**
+    * Constructor
+    * @param name name data
+    * @param choice name choice from the class 
+    *               com.ibm.icu.lang.UCharacterNameChoice
+    * @draft 2.1
+    */
+    protected UCharacterNameIterator(UCharacterName name, int choice)
+    {
+    	m_name_    = name;
+    	// no explicit choice in UCharacter so no checks on choice
+     	m_choice_  = choice;
+    	m_start_   = UCharacter.MIN_VALUE;
+    	m_limit_   = UCharacter.MAX_VALUE + 1;
+    	m_current_ = m_start_;
+    }
+    
+    // private data members ---------------------------------------------
+  	
+  	/**
+  	 * Name data
+  	 */
+  	private UCharacterName m_name_;
+  	/**
+  	 * Name choice
+  	 */
+  	private int m_choice_;
+  	 /**
+     * Start iteration range
+     */
+    private int m_start_;
+    /**
+     * End + 1 iteration range
+     */
+    private int m_limit_;
+    /**
+     * Current codepoint
+     */
+    private int m_current_;
+    /**
+     * Group index
+     */
+    private int m_groupIndex_ = -1;
+    /**
+     * Algorithm index
+     */
+    private int m_algorithmIndex_ = -1;
+    /**
+    * Group use
+    */
+    private static char GROUP_OFFSETS_[] = 
+                                new char[UCharacterName.LINES_PER_GROUP_ + 1];
+    private static char GROUP_LENGTHS_[] = 
+                                new char[UCharacterName.LINES_PER_GROUP_ + 1];
+    
+    // private methods --------------------------------------------------
+    
+    /**
+     * Group name iteration, iterate all the names in the current 32-group and 
+     * returns the first codepoint that has a valid name.
+ 	 * @param result stores the result codepoint and name
+ 	 * @param limit last codepoint + 1 in range to search
+ 	 * @return false if a codepoint with a name is found in group and we can
+ 	 *         bail from further iteration, true to continue on with the 
+ 	 *         iteration
+     */
+    private boolean iterateSingleGroup(ValueIterator.Element result, int limit) 
+    {
+    	synchronized(GROUP_OFFSETS_) {
+    	synchronized(GROUP_LENGTHS_) {
+ 			int index = m_name_.getGroupLengths(m_groupIndex_, GROUP_OFFSETS_, 
+    		                                    GROUP_LENGTHS_);
+        	while (m_current_ < limit) {
+        		int    offset = m_name_.getGroupOffset(m_current_);
+        		String name   = m_name_.getGroupName(
+        		                          index + GROUP_OFFSETS_[offset], 
+        	 	                          GROUP_LENGTHS_[offset], m_choice_);
+        		if ((name == null || name.length() == 0) && 
+          	 		m_choice_ == UCharacterNameChoice.U_EXTENDED_CHAR_NAME) {
+           			name = m_name_.getExtendedName(m_current_);
+        		}
+        		if (name != null && name.length() > 0) {
+        			result.integer = m_current_;
+        			result.value   = name;
+          	  	    return false;
+            	}
+            	++ m_current_;
+        	}
+    	}
+    	}
+    	return true;
+	}
+	
+	/**
+     * Group name iteration, iterate all the names in the current 32-group and 
+     * returns the first codepoint that has a valid name.
+ 	 * @param result stores the result codepoint and name
+ 	 * @param limit last codepoint + 1 in range to search
+ 	 * @return false if a codepoint with a name is found in group and we can
+ 	 *         bail from further iteration, true to continue on with the 
+ 	 *         iteration
+     */
+    private boolean iterateGroup(ValueIterator.Element result, int limit)
+    {
+    	if (m_groupIndex_ < 0) {
+    		m_groupIndex_ = m_name_.getGroup(m_current_);
+    	}
+    	
+    	while (m_groupIndex_ < m_name_.m_groupcount_ &&
+    	       m_current_ < limit) { 
+    		// iterate till the last group or the last codepoint
+    		int startMSB = m_name_.getCodepointMSB(m_current_);
+    		int gMSB     = m_name_.getGroupMSB(m_groupIndex_); // can be -1
+    		if (startMSB == gMSB) {
+    			if (startMSB == m_name_.getCodepointMSB(limit - 1)) {
+    				// if start and limit - 1 are in the same group, then enumerate 
+    				// only in that one
+    				return iterateSingleGroup(result, limit);
+    			}
+    			// enumerate characters in the partial start group
+           		// if (m_name_.getGroupOffset(m_current_) != 0) {
+               	if (!iterateSingleGroup(result, 
+                           	            m_name_.getGroupLimit(gMSB))) {
+                	return false;
+                }
+               	++ m_groupIndex_; // continue with the next group
+    		}	
+       		else if (startMSB > gMSB) {
+           			// make sure that we start enumerating with the first group 
+           			// after start 
+           			m_groupIndex_ ++;
+       		}
+       		else { 
+       			int gMIN = m_name_.getGroupMin(gMSB);
+       			if (gMIN > limit) {
+               		gMIN = limit;
+            	}
+       			if (m_choice_ == UCharacterNameChoice.U_EXTENDED_CHAR_NAME) {
+					if (!iterateExtended(result, gMIN)) {
+		 				return false;
+					}
+	  			}
+	  			m_current_ = gMIN;
+        	}
+    	}
+        
+		return true;
+	}
+	
+	/**
+ 	 * Iterate extended names.
+ 	 * @param result stores the result codepoint and name
+ 	 * @param limit last codepoint + 1 in range to search
+ 	 * @return false if a codepoint with a name is found and we can
+ 	 *         bail from further iteration, true to continue on with the 
+ 	 *         iteration (this will always be false for valid codepoints)
+ 	 */ 
+	private boolean iterateExtended(ValueIterator.Element result,
+	                                int limit)
+	{
+        while (m_current_ < limit) {
+        	String name = m_name_.getExtendedOr10Name(m_current_);
+        	if (name != null && name.length() > 0) {
+                result.integer = m_current_;
+        		result.value   = name;
+    			return false;
+            }
+            ++ m_current_;
+        }
+    	return true;
+  	}
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/lang/UCharacterNameReader.java b/src/com/ibm/icu/lang/UCharacterNameReader.java
new file mode 100755
index 0000000..22471ba
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterNameReader.java
@@ -0,0 +1,220 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/lang/Attic/UCharacterNameReader.java,v $ 
+* $Date: 2002/08/01 19:50:26 $ 
+* $Revision: 1.11 $
+*
+*******************************************************************************
+*/
+package com.ibm.icu.lang;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.util.Arrays;
+import com.ibm.icu.impl.ICUBinary;
+
+/**
+* <p>Internal reader class for ICU data file uname.dat containing 
+* Unicode codepoint name data.</p> 
+* <p>This class simply reads unames.icu, authenticates that it is a valid
+* ICU data file and split its contents up into blocks of data for use in
+* <a href=UCharacterName.html>com.ibm.icu.lang.UCharacterName</a>.
+* </p> 
+* <p>For more information about the format of unames.icu refer to
+* <a href=oss.software.ibm.com/icu4j/icu4jhtml/com/ibm/icu/lang/readme.html>
+* ReadMe</a>.<\p>
+* <p>unames.icu which is in big-endian format is jared together with this 
+* package.</p>
+* @author Syn Wee Quek
+* @since release 2.1, February 1st 2002
+* @draft 2.1
+*/
+
+final class UCharacterNameReader
+{      
+    // protected constructor ---------------------------------------------
+    
+    /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU uprop.dat file input stream
+    * @exception IOException throw if data file fails authentication 
+    * @draft 2.1
+    */
+    protected UCharacterNameReader(InputStream inputStream) 
+                                                        throws IOException
+    {
+        ICUBinary.readHeader(inputStream, DATA_FORMAT_ID_, 
+                             DATA_FORMAT_VERSION_);
+        m_dataInputStream_ = new DataInputStream(inputStream);
+    }
+  
+    // protected methods -------------------------------------------------
+      
+    /**
+    * Read and break up the stream of data passed in as arguments
+    * and fills up UCharacterName.
+    * If unsuccessful false will be returned.
+    * @param data instance of datablock
+    * @exception thrown when there's a data error.
+    */
+    protected void read(UCharacterName data) throws IOException
+    {
+        // reading index
+        m_tokenstringindex_ = m_dataInputStream_.readInt();
+        m_groupindex_       = m_dataInputStream_.readInt();
+        m_groupstringindex_ = m_dataInputStream_.readInt();
+        m_algnamesindex_    = m_dataInputStream_.readInt();
+        
+        // reading tokens
+        int count = m_dataInputStream_.readChar();
+        char token[] = new char[count];
+        for (char i = 0; i < count; i ++) {
+            token[i] = m_dataInputStream_.readChar();
+        }
+        int size = m_groupindex_ - m_tokenstringindex_;
+        byte tokenstr[] = new byte[size];
+        m_dataInputStream_.readFully(tokenstr);
+        data.setToken(token, tokenstr);
+        
+        // reading the group information records
+        count = m_dataInputStream_.readChar();
+        data.setGroupCountSize(count, GROUP_INFO_SIZE_);
+        count *= GROUP_INFO_SIZE_;
+        char group[] = new char[count];
+        for (int i = 0; i < count; i ++) {
+            group[i] = m_dataInputStream_.readChar();
+        }
+        
+        size = m_algnamesindex_ - m_groupstringindex_;
+        byte groupstring[] = new byte[size];
+        m_dataInputStream_.readFully(groupstring);
+    
+        data.setGroup(group, groupstring);
+        
+        count = m_dataInputStream_.readInt();
+        UCharacterName.AlgorithmName alg[] = 
+                                 new UCharacterName.AlgorithmName[count];
+     
+        for (int i = 0; i < count; i ++)
+        {
+            UCharacterName.AlgorithmName an = readAlg();
+            if (an == null) {
+                throw new IOException("unames.icu read error: Algorithmic names creation error");
+            }
+            alg[i] = an;
+        }
+        data.setAlgorithm(alg);
+    }
+      
+    /**
+    * <p>Checking the file for the correct format.</p>
+    * @param dataformatid
+    * @param dataformatversio
+    * @return true if the file format version is correct
+    * @draft 2.1
+    */
+    protected boolean authenticate(byte dataformatid[],
+                                   byte dataformatversion[])
+    {
+        return Arrays.equals(DATA_FORMAT_ID_, dataformatid) &&
+               Arrays.equals(DATA_FORMAT_VERSION_, dataformatversion);
+    }
+    
+    // private variables -------------------------------------------------
+  
+    /**
+    * Data input stream for names 
+    */
+    private DataInputStream m_dataInputStream_;
+    /**
+    * Size of the group information block in number of char
+    */
+    private static final int GROUP_INFO_SIZE_ = 3;
+
+    /**
+    * Index of the offset information
+    */
+    private int m_tokenstringindex_;
+    private int m_groupindex_;
+    private int m_groupstringindex_;
+    private int m_algnamesindex_;
+      
+    /**
+    * Size of an algorithmic name information group
+    * start code point size + end code point size + type size + variant size + 
+    * size of data size
+    */
+    private static final int ALG_INFO_SIZE_ = 12;
+      
+    /**
+    * File format version and id that this class understands.
+    * No guarantees are made if a older version is used
+    */
+    private static final byte DATA_FORMAT_VERSION_[] = 
+                                    {(byte)0x1, (byte)0x0, (byte)0x0, (byte)0x0};
+    private static final byte DATA_FORMAT_ID_[] = {(byte)0x75, (byte)0x6E, 
+                                                    (byte)0x61, (byte)0x6D};                                                 
+    /**
+    * Corrupted error string
+    */
+    private static final String CORRUPTED_DATA_ERROR_ =
+                                "Data corrupted in character name data file";
+      
+    // private methods ---------------------------------------------------
+      
+    /**
+    * Reads an individual record of AlgorithmNames
+    * @return an instance of AlgorithNames if read is successful otherwise null
+    * @exception thrown when file read error occurs or data is corrupted
+    */
+    private UCharacterName.AlgorithmName readAlg() throws IOException
+    {
+        UCharacterName.AlgorithmName result = 
+                                       new UCharacterName.AlgorithmName();
+        int rangestart = m_dataInputStream_.readInt();
+        int rangeend   = m_dataInputStream_.readInt();
+        byte type      = m_dataInputStream_.readByte();
+        byte variant   = m_dataInputStream_.readByte();
+        if (!result.setInfo(rangestart, rangeend, type, variant)) {
+        	return null;
+        }
+                         
+        int size = m_dataInputStream_.readChar();
+        if (type == UCharacterName.AlgorithmName.TYPE_1_)
+        {
+            char factor[] = new char[variant];
+            for (int j = 0; j < variant; j ++) {
+                factor[j] = m_dataInputStream_.readChar();
+            }
+                  
+            result.setFactor(factor);
+            size -= (variant << 1);
+        }
+          
+        StringBuffer prefix = new StringBuffer();
+        char c = (char)(m_dataInputStream_.readByte() & 0x00FF);
+        while (c != 0)
+        {
+            prefix.append(c);
+            c = (char)(m_dataInputStream_.readByte() & 0x00FF);
+        }
+        
+        result.setPrefix(prefix.toString());
+        
+        size -= (ALG_INFO_SIZE_ + prefix.length() + 1);
+        
+        if (size > 0)
+        {
+            byte string[] = new byte[size];
+            m_dataInputStream_.readFully(string);
+            result.setFactorString(string);
+        }
+        return result;
+    }
+}
+
diff --git a/src/com/ibm/icu/lang/UCharacterTypeIterator.java b/src/com/ibm/icu/lang/UCharacterTypeIterator.java
new file mode 100755
index 0000000..069a4e0
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterTypeIterator.java
@@ -0,0 +1,80 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/lang/UCharacterTypeIterator.java,v $
+* $Date: 2002/03/15 22:48:07 $
+* $Revision: 1.5 $
+*
+******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+import com.ibm.icu.impl.TrieIterator;
+import com.ibm.icu.impl.UCharacterProperty;
+
+/**
+ * Class enabling iteration of the codepoints according to their types.
+ * Result of each iteration contains the interval of codepoints that have
+ * the same type.
+ * Example of use:<br>
+ * <pre>
+ * UCharacterTypeIterator iterator = UCharacter.getUCharacterTypeIterator();
+ * while (iterator.next()) {
+ *     System.out.println("Codepoint \\u" + 
+ *                        Integer.toHexString(iterator.getStart()) + 
+ *                        " to codepoint \\u" +
+ *                        Integer.toHexString(iterator.getLimit() - 1) + 
+ *                        " has the character type " + iterator.getValue());
+ * }
+ * </pre>
+ * @author synwee
+ * @see com.ibm.icu.util.TrieIterator
+ * @since release 2.1, Jan 24 2002
+ */
+class UCharacterTypeIterator extends TrieIterator
+{
+    // protected constructor ---------------------------------------------
+    
+    /**
+    * TrieEnumeration constructor
+    * @param property the unicode character properties to be used
+    * @draft 2.1
+    */
+    protected UCharacterTypeIterator(UCharacterProperty property)
+    {
+       super(property.m_trie_);
+    }
+    
+    // protected methods ----------------------------------------------
+    
+    /**
+    * Called by nextElement() to extracts a 32 bit value from a trie value
+    * used for comparison.
+    * This method is to be overwritten if special manipulation is to be done
+    * to retrieve a relevant comparison.
+    * The default function is to return the value as it is.
+    * @param value a value from the trie
+    * @return extracted value
+    */
+    protected int extract(int value)
+    {
+    	// this is needed because TrieIterator() gets called first and it
+    	// in turn calls extract to instantiate this default value
+    	// so sometimes m_property_ does not get assigned properly
+    	if (m_property_ == null) {
+    		m_property_ = UCharacterProperty.getInstance().m_property_;
+    	}
+    	return UCharacterProperty.getPropType(m_property_[value]);
+    }
+    
+    // private data members ---------------------------------------------
+    
+    /**
+     * Character property
+     */
+    private int m_property_[];
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/lang/UCharacterUtil.java b/src/com/ibm/icu/lang/UCharacterUtil.java
new file mode 100755
index 0000000..88a42ac
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterUtil.java
@@ -0,0 +1,176 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/lang/Attic/UCharacterUtil.java,v $ 
+* $Date: 2002/07/22 23:28:21 $ 
+* $Revision: 1.6 $
+*
+*******************************************************************************
+*/
+package com.ibm.icu.lang;
+
+/**
+* Internal character utility class for simple data type conversion and String 
+* parsing functions. Does not have an analog in the JDK.
+* @author Syn Wee Quek
+* @since sep2900
+*/
+
+final class UCharacterUtil
+{
+    // constructor =====================================================
+      
+    /**
+    * private constructor to avoid initialisation
+    */
+    private UCharacterUtil()
+    {
+    }
+      
+    // protected methods ===============================================
+      
+    /**
+    * joining 2 chars to form an int
+    * @param msc most significant char
+    * @param lsc least significant char
+    * @return int form
+    */
+    protected static int toInt(char msc, char lsc)
+    {
+        return ((msc << 16) | lsc);
+    }
+       
+    /**
+    * converting 2 bytes into a char
+    * @param msb the most significant byte
+    * @param lsb the least significant byte
+    * @return char form
+    */
+    protected static char toChar(byte msb, byte lsb)
+    {
+        return (char)((msb << 8) | (lsb & 0xFF));
+    }
+       
+    /**
+    * Retrieves a null terminated substring from an array of bytes.
+    * Substring is a set of non-zero bytes starting from argument start to the 
+    * next zero byte. If the first byte is a zero, the next byte will be taken as
+    * the first byte.
+    * @param str stringbuffer to store data in, data will be store with each
+    *            byte as a char
+    * @param array byte array
+    * @param index to start substring in byte count
+    * @return the end position of the substring within the character array
+    */
+    protected static int getNullTermByteSubString(StringBuffer str, byte[] array, 
+                                                  int index)
+    {
+        byte b = 1;
+        
+        while (b != 0)
+        {
+            b = array[index];
+            if (b != 0) {
+                str.append((char)(b & 0x00FF));
+            }
+            index ++;
+        }
+        return index;
+    }
+       
+    /**
+    * Compares a null terminated substring from an array of bytes.
+    * Substring is a set of non-zero bytes starting from argument start to the 
+    * next zero byte. if the first byte is a zero, the next byte will be taken as
+    * the first byte.
+    * @param str string to compare
+    * @param array byte array
+    * @param strindex index within str to start comparing
+    * @param aindex array index to start in byte count
+    * @return the end position of the substring within str if matches otherwise 
+    *         a -1
+    */
+    protected static int compareNullTermByteSubString(String str, byte[] array, 
+                                                      int strindex, int aindex)
+    {
+        byte b = 1;
+        int length = str.length();
+        
+        while (b != 0)
+        {
+            b = array[aindex];  
+            aindex ++;
+            if (b == 0) {
+                break;
+            }
+            // if we have reached the end of the string and yet the array has not 
+            // reached the end of their substring yet, abort
+            if (strindex == length 
+                || (str.charAt(strindex) != (char)(b & 0xFF))) {
+              return -1;
+            }
+            strindex ++;
+        }
+        return strindex;
+    }
+       
+    /**
+    * Skip null terminated substrings from an array of bytes.
+    * Substring is a set of non-zero bytes starting from argument start to the 
+    * next zero byte. If the first byte is a zero, the next byte will be taken as
+    * the first byte.
+    * @param array byte array
+    * @param index to start substrings in byte count
+    * @param skipcount number of null terminated substrings to skip
+    * @return the end position of the substrings within the character array
+    */
+    protected static int skipNullTermByteSubString(byte[] array, int index, 
+                                                   int skipcount)
+    {
+        byte b;
+        for (int i = 0; i < skipcount; i ++)
+        {
+            b = 1;
+            while (b != 0)
+            {
+                b = array[index];
+                index ++;
+            }
+        }
+        return index;
+    }
+       
+    /**
+     * skip substrings from an array of characters, where each character is a set 
+     * of 2 bytes. substring is a set of non-zero bytes starting from argument 
+     * start to the byte of the argument value. skips up to a max number of 
+     * characters
+     * @param array byte array to parse
+     * @param index to start substrings in byte count
+     * @param length the max number of bytes to skip
+     * @param skipend value of byte to skip to
+     * @return the number of bytes skipped
+     */
+    protected static int skipByteSubString(byte[] array, int index, int length, 
+                                           byte skipend)
+    {
+        int result;
+        byte b;
+        
+        for (result = 0; result < length; result ++)
+        {
+            b = array[index + result];
+            if (b == skipend)
+            {
+                result ++;
+                break;
+            }
+        }
+        
+        return result;
+    }
+}
+
diff --git a/src/com/ibm/icu/lang/UProperty.java b/src/com/ibm/icu/lang/UProperty.java
new file mode 100644
index 0000000..9de69d9
--- /dev/null
+++ b/src/com/ibm/icu/lang/UProperty.java
@@ -0,0 +1,363 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, international Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: 
+*      /usr/cvs/icu4j/icu4j/src/com/ibm/icu/text/UCharacterCategory.java $ 
+* $Date: 2002/07/08 23:52:13 $ 
+* $Revision: 1.3 $
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+/**
+ * <p>Selection constants for Unicode properties. </p>
+ * <p>These constants are used in functions like 
+ * UCharacter.hasBinaryProperty(int) to select one of the Unicode properties. 
+ * </p>
+ * <p>The properties APIs are intended to reflect Unicode properties as 
+ * defined in the Unicode Character Database (UCD) and Unicode Technical 
+ * Reports (UTR).</p>
+ * <p>For details about the properties see <a href=http://www.unicode.org>
+ * http://www.unicode.org</a>.</p> 
+ * <p>For names of Unicode properties see the UCD file PropertyAliases.txt.
+ * </p> 
+ * <p>Important: If ICU is built with UCD files from Unicode versions below 
+ * 3.2, then properties marked with "new" are not or not fully 
+ * available. Check UCharacter.getUnicodeVersion() to be sure.</p>
+ * @author Syn Wee Quek
+ * @since March 8 2002
+ * @see com.ibm.icu.lang.UCharacter
+ * @draft ICU 2.1
+ */
+public interface UProperty
+{
+  	// public data member --------------------------------------------------
+  
+  	/** 
+  	 * <p>Binary property Alphabetic. </p>
+  	 * <p>Property for UCharacter.isUAlphabetic(), different from the property 
+  	 * in UCharacter.isalpha().</p>
+  	 * <p>Lu + Ll + Lt + Lm + Lo + Nl + Other_Alphabetic.</p>
+  	 * @draft ICU 2.1 
+  	 */ 
+    public static final int ALPHABETIC = 0; 
+    /** 
+     * First constant for binary Unicode properties. 
+     * @draft ICU 2.1 
+     */ 
+    public static final int BINARY_START = ALPHABETIC;
+    /** 
+     * Binary property ASCII_Hex_Digit (0-9 A-F a-f).
+     * @draft ICU 2.1 
+     */ 
+    public static final int ASCII_HEX_DIGIT = 1; 
+    /** 
+     * <p>Binary property Bidi_Control.</p>
+     * <p>Format controls which have specific functions in the Bidi Algorithm.
+     * </p> 
+     * @draft ICU 2.1 
+     */ 
+   	public static final int BIDI_CONTROL = 2; 
+    /** 
+     * <p>Binary property Bidi_Mirrored.</p> 
+     * <p>Characters that may change display in RTL text.</p> 
+     * <p>Property for UCharacter.isMirrored().</p> 
+     * <p>See Bidi Algorithm; UTR 9.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int BIDI_MIRRORED = 3; 
+    /** 
+     * <p>Binary property Dash.</p> 
+     * <p>Variations of dashes.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int DASH = 4; 
+    /** 
+     * <p>Binary property Default_Ignorable_Code_Point (new).
+     * </p> 
+     * <p>Property that indicates codepoint is ignorable in most processing.
+     * </p>
+     * <p>Codepoints (2060..206F, FFF0..FFFB, E0000..E0FFF) + 
+     * Other_Default_Ignorable_Code_Point + (Cf + Cc + Cs - White_Space)</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int DEFAULT_IGNORABLE_CODE_POINT = 5; 
+    /** 
+     * <p>Binary property Deprecated (new).</p> 
+     * <p>The usage of deprecated characters is strongly discouraged.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int DEPRECATED = 6; 
+    /** 
+     * <p>Binary property Diacritic.</p> 
+     * <p>Characters that linguistically modify the meaning of another 
+     * character to which they apply.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int DIACRITIC = 7; 
+    /** 
+     * <p>Binary property Extender.</p> 
+     * <p>Extend the value or shape of a preceding alphabetic character, e.g.
+     * length and iteration marks.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int EXTENDER = 8; 
+    /** 
+     * <p>Binary property Full_Composition_Exclusion.</p> 
+     * <p>CompositionExclusions.txt + Singleton Decompositions + 
+     * Non-Starter Decompositions.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int FULL_COMPOSITION_EXCLUSION = 9; 
+    /** 
+     * <p>Binary property Grapheme_Base (new).</p>
+     * <p>For programmatic determination of grapheme cluster boundaries. 
+     * [0..10FFFF]-Cc-Cf-Cs-Co-Cn-Zl-Zp-Grapheme_Link-Grapheme_Extend-CGJ</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int GRAPHEME_BASE = 10; 
+    /** 
+     * <p>Binary property Grapheme_Extend (new).</p> 
+     * <p>For programmatic determination of grapheme cluster boundaries.</p> 
+     * <p>Me+Mn+Mc+Other_Grapheme_Extend-Grapheme_Link-CGJ</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int GRAPHEME_EXTEND = 11; 
+    /** 
+     * <p>Binary property Grapheme_Link (new).</p> 
+     * <p>For programmatic determination of grapheme cluster boundaries.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int GRAPHEME_LINK = 12; 
+    /** 
+     * <p>Binary property Hex_Digit.</p> 
+     * <p>Characters commonly used for hexadecimal numbers.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int HEX_DIGIT = 13; 
+    /** 
+     * <p>Binary property Hyphen.</p> 
+     * <p>Dashes used to mark connections between pieces of words, plus the 
+     * Katakana middle dot.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int HYPHEN = 14; 
+    /** 
+     * <p>Binary property ID_Continue.</p>
+     * <p>Characters that can continue an identifier.</p> 
+     * <p>ID_Start+Mn+Mc+Nd+Pc</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int ID_CONTINUE = 15; 
+    /** 
+     * <p>Binary property ID_Start.</p> 
+     * <p>Characters that can start an identifier.</p> 
+     * <p>Lu+Ll+Lt+Lm+Lo+Nl</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int ID_START = 16; 
+    /** 
+     * <p>Binary property Ideographic.</p> 
+     * <p>CJKV ideographs.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int IDEOGRAPHIC = 17; 
+    /** 
+     * <p>Binary property IDS_Binary_Operator (new).</p> 
+     * <p>For programmatic determination of Ideographic Description Sequences.
+     * </p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int IDS_BINARY_OPERATOR = 18; 
+    /** 
+     * <p>Binary property IDS_Trinary_Operator (new).</p> 
+     * <p?For programmatic determination of Ideographic Description 
+     * Sequences.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int IDS_TRINARY_OPERATOR = 19; 
+    /** 
+     * <p>Binary property Join_Control.</p> 
+     * <p>Format controls for cursive joining and ligation.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int JOIN_CONTROL = 20; 
+    /** 
+     * <p>Binary property Logical_Order_Exception (new).</p> 
+     * <p>Characters that do not use logical order and require special 
+     * handling in most processing.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int LOGICAL_ORDER_EXCEPTION = 21; 
+    /** 
+     * <p>Binary property Lowercase.</p> 
+     * <p>Same as UCharacter.isULowercase(), different from 
+     * UCharacter.islower().</p> 
+     * <p>Ll+Other_Lowercase</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int LOWERCASE = 22; 
+    /** <p>Binary property Math.</p> 
+     * <p>Sm+Other_Math</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int MATH = 23; 
+    /** 
+     * <p>Binary property Noncharacter_Code_Point.</p> 
+     * <p>Code points that are explicitly defined as illegal for the encoding 
+     * of characters.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int NONCHARACTER_CODE_POINT = 24; 
+    /** 
+     * <p>Binary property Quotation_Mark.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int QUOTATION_MARK = 25; 
+    /** 
+     * <p>Binary property Radical (new).</p> 
+     * <p>For programmatic determination of Ideographic Description 
+     * Sequences.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int RADICAL = 26; 
+    /** 
+     * <p>Binary property Soft_Dotted (new).</p> 
+     * <p>Characters with a "soft dot", like i or j.</p>
+     * <p>An accent placed on these characters causes the dot to disappear.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int SOFT_DOTTED = 27; 
+    /** 
+     * <p>Binary property Terminal_Punctuation.</p> 
+     * <p>Punctuation characters that generally mark the end of textual 
+     * units.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int TERMINAL_PUNCTUATION = 28; 
+    /** 
+     * <p>Binary property Unified_Ideograph (new).</p> 
+     * <p>For programmatic determination of Ideographic Description 
+     * Sequences.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int UNIFIED_IDEOGRAPH = 29; 
+    /** 
+     * <p>Binary property Uppercase.</p> 
+     * <p>Same as UCharacter.isUUppercase(), different from 
+     * UCharacter.isUpperCase().</p> 
+     * <p>Lu+Other_Uppercase</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int UPPERCASE = 30; 
+    /** 
+     * <p>Binary property White_Space.</p> 
+     * <p>Same as UCharacter.isUWhiteSpace(), different from 
+     * UCharacter.isSpace() and UCharacter.isWhitespace().</p> 
+     * Space characters+TAB+CR+LF-ZWSP-ZWNBSP</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int WHITE_SPACE = 31; 
+    /** 
+     * <p>Binary property XID_Continue.</p> 
+     * <p>ID_Continue modified to allow closure under normalization forms 
+     * NFKC and NFKD.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int XID_CONTINUE = 32; 
+    /** 
+     * <p>Binary property XID_Start.</p> 
+     * <p>ID_Start modified to allow closure under normalization forms NFKC 
+     * and NFKD.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int XID_START = 33; 
+    /** 
+     * <p>One more than the last constant for binary Unicode properties.</p> 
+     * @draft ICU 2.1 
+     */ 
+    public static final int BINARY_LIMIT = 34;
+    /** 
+     * Enumerated property Bidi_Class.
+     * Same as u_charDirection, returns UCharDirection values. 
+     * @draft ICU 2.2 
+     */
+    // public static final int BIDI_CLASS = 0x1000;
+    /** 
+     * First constant for enumerated/integer Unicode properties. 
+     * @draft ICU 2.2 
+     */
+    // public static final int INT_START = BIDI_CLASS;
+    /** 
+     * Enumerated property Block.
+     * Same as ublock_getCode, returns UBlockCode values. 
+     * @draft ICU 2.2 
+     */
+    // public static final int BLOCK = 0x1001;
+    /** 
+     * Enumerated property Canonical_Combining_Class.
+     * Same as getCombiningClass, returns 8-bit numeric values. 
+     * @draft ICU 2.2 
+     */
+    // public static final int CANONICAL_COMBINING_CLASS = 0x1002;
+    /** 
+     * Enumerated property Decomposition_Type.
+     * Returns UDecompositionType values. 
+     * @draft ICU 2.2 
+     */
+    // public static final int DECOMPOSITION_TYPE = 0x1003;
+    /** 
+     * Enumerated property East_Asian_Width.
+     * See http://www.unicode.org/reports/tr11/
+     * Returns UEastAsianWidth values. 
+     * @draft ICU 2.2 
+     */
+    // public static final int EAST_ASIAN_WIDTH = 0x1004;
+    /** 
+     * Enumerated property General_Category.
+     * Same as charType, returns UCharacterCategory values. 
+     * @draft ICU 2.2 
+     */
+    // public static final int GENERAL_CATEGORY = 0x1005;
+    /** 
+     * Enumerated property Joining_Group.
+     * Returns UJoiningGroup values. 
+     * @draft ICU 2.2 
+     */
+    // public static final int JOINING_GROUP = 0x1006;
+    /** 
+     * Enumerated property Joining_Type.
+     * Returns UJoiningType values. 
+     * @draft ICU 2.2 
+     */
+    // public static final int JOINING_TYPE = 0x1007;
+    /** 
+     * Enumerated property Line_Break.
+     * Returns ULineBreak values. 
+     * @draft ICU 2.2 
+     */
+    // public static final int LINE_BREAK = 0x1008;
+    /** 
+     * Enumerated property Numeric_Type.
+     * Returns UNumericType values. 
+     * @draft ICU 2.2 
+     */
+    // public static final int NUMERIC_TYPE = 0x1009;
+    /** 
+     * Enumerated property Script.
+     * Same as uscript_getScript, returns UScriptCode values. 
+     * @draft ICU 2.2 
+     */
+    // public static final int SCRIPT = 0x100A;
+    /** 
+     * One more than the last constant for enumerated/integer Unicode 
+     * properties. 
+     * @draft ICU 2.2 
+     */
+    // public static final int INT_LIMIT = 0x100B;
+}
diff --git a/src/com/ibm/icu/lang/UScript.java b/src/com/ibm/icu/lang/UScript.java
new file mode 100755
index 0000000..cf2bdb4
--- /dev/null
+++ b/src/com/ibm/icu/lang/UScript.java
@@ -0,0 +1,414 @@
+/**
+*******************************************************************************
+* Copyright (C) 2001, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.impl.UCharacterProperty;
+
+import java.util.ResourceBundle;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+/**
+ * A class to reflect UTR #24: Script Names
+ * (based on ISO 15924:2000, "Code for the representation of names of
+ * scripts").  UTR #24 describes the basis for a new Unicode data file,
+ * Scripts.txt.
+ */
+public final class UScript {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a92001 IBM Corp.  All rights reserved.";
+        
+    public static final int INVALID_CODE = -1;
+    public static final int COMMON       =  0;  /* Zyyy */
+    public static final int INHERITED    =  1;  /* Qaai */
+    public static final int ARABIC       =  2;  /* Arab */
+    public static final int ARMENIAN     =  3;  /* Armn */
+    public static final int BENGALI      =  4;  /* Beng */
+    public static final int BOPOMOFO     =  5;  /* Bopo */
+    public static final int CHEROKEE     =  6;  /* Cher */
+    public static final int COPTIC       =  7;  /* Qaac */
+    public static final int CYRILLIC     =  8;  /* Cyrl (Cyrs) */
+    public static final int DESERET      =  9;  /* Dsrt */
+    public static final int DEVANAGARI   = 10;  /* Deva */
+    public static final int ETHIOPIC     = 11;  /* Ethi */
+    public static final int GEORGIAN     = 12;  /* Geor (Geon; Geoa) */
+    public static final int GOTHIC       = 13;  /* Goth */
+    public static final int GREEK        = 14;  /* Grek */
+    public static final int GUJARATI     = 15;  /* Gujr */
+    public static final int GURMUKHI     = 16;  /* Guru */
+    public static final int HAN          = 17;  /* Hani */
+    public static final int HANGUL       = 18;  /* Hang */
+    public static final int HEBREW       = 19;  /* Hebr */
+    public static final int HIRAGANA     = 20;  /* Hira */
+    public static final int KANNADA      = 21;  /* Knda */
+    public static final int KATAKANA     = 22;  /* Kana */
+    public static final int KHMER        = 23;  /* Khmr */
+    public static final int LAO          = 24;  /* Laoo */
+    public static final int LATIN        = 25;  /* Latn (Latf; Latg) */
+    public static final int MALAYALAM    = 26;  /* Mlym */
+    public static final int MONGOLIAN    = 27;  /* Mong */
+    public static final int MYANMAR      = 28;  /* Mymr */
+    public static final int OGHAM        = 29;  /* Ogam */
+    public static final int OLD_ITALIC   = 30;  /* Ital */
+    public static final int ORIYA        = 31;  /* Orya */
+    public static final int RUNIC        = 32;  /* Runr */
+    public static final int SINHALA      = 33;  /* Sinh */
+    public static final int SYRIAC       = 34;  /* Syrc (Syrj; Syrn; Syre) */
+    public static final int TAMIL        = 35;  /* Taml */
+    public static final int TELUGU       = 36;  /* Telu */
+    public static final int THAANA       = 37;  /* Thaa */
+    public static final int THAI         = 38;  /* Thai */
+    public static final int TIBETAN      = 39;  /* Tibt */
+    public static final int UCAS         = 40;  /* Cans */
+    public static final int YI           = 41;  /* Yiii */
+    public static final int TAGALOG      = 42;  /* Tglg */
+    public static final int HANUNOO      = 43;  /* Hano */
+    public static final int BUHID        = 44;  /* Buhd */
+    public static final int TAGBANWA     = 45;  /* Tagb */
+    public static final int CODE_LIMIT   = 46; 
+    
+    private static final class NameCodePair{
+        String name;
+        int code;
+        private NameCodePair(String str, int cd){
+            name = str;
+            code=cd;
+        }
+    }
+    
+	private static final NameCodePair[] scriptNames={
+	   new NameCodePair( "ARABIC",              ARABIC      ),
+	   new NameCodePair( "ARMENIAN",            ARMENIAN    ),
+	   new NameCodePair( "BENGALI",             BENGALI     ),
+	   new NameCodePair( "BOPOMOFO",            BOPOMOFO    ),
+	   new NameCodePair( "BUHID",               BUHID       ),
+	   new NameCodePair( "CANADIAN_ABORIGINAL", UCAS        ),
+	   new NameCodePair( "CHEROKEE",            CHEROKEE    ),
+	   new NameCodePair( "COMMON",              COMMON      ),
+       new NameCodePair( "COPTIC",              COPTIC      ),
+	   new NameCodePair( "CYRILLIC",            CYRILLIC    ),
+	   new NameCodePair( "DESERET",             DESERET     ),
+	   new NameCodePair( "DEVANAGARI",          DEVANAGARI  ),
+	   new NameCodePair( "ETHIOPIC",            ETHIOPIC    ),
+	   new NameCodePair( "GEORGIAN",            GEORGIAN    ),
+	   new NameCodePair( "GOTHIC",              GOTHIC      ),
+	   new NameCodePair( "GREEK",               GREEK       ),
+	   new NameCodePair( "GUJARATI",            GUJARATI    ),
+	   new NameCodePair( "GURMUKHI",            GURMUKHI    ),
+	   new NameCodePair( "HAN",                 HAN         ),
+	   new NameCodePair( "HANGUL",              HANGUL      ),
+	   new NameCodePair( "HANUNOO",             HANUNOO     ),
+	   new NameCodePair( "HEBREW",              HEBREW      ),
+	   new NameCodePair( "HIRAGANA",            HIRAGANA    ),
+	   new NameCodePair( "INHERITED",           INHERITED   ),
+	   new NameCodePair( "KANNADA",             KANNADA     ),
+	   new NameCodePair( "KATAKANA",            KATAKANA    ),
+	   new NameCodePair( "KHMER",               KHMER       ),
+       new NameCodePair( "LAO",                 LAO         ),
+	   new NameCodePair( "LATIN",               LATIN       ),
+	   new NameCodePair( "MALAYALAM",           MALAYALAM   ),
+	   new NameCodePair( "MONGOLIAN",           MONGOLIAN   ),
+	   new NameCodePair( "MYANMAR",             MYANMAR     ),
+	   new NameCodePair( "OGHAM",               OGHAM       ),
+	   new NameCodePair( "OLD_ITALIC",          OLD_ITALIC  ),
+	   new NameCodePair( "ORIYA",               ORIYA       ),
+	   new NameCodePair( "RUNIC",               RUNIC       ),
+	   new NameCodePair( "SINHALA",             SINHALA     ),
+	   new NameCodePair( "SYRIAC",              SYRIAC      ),
+	   new NameCodePair( "TAGALOG",             TAGALOG     ),
+	   new NameCodePair( "TAGBANWA",            TAGBANWA    ),
+	   new NameCodePair( "TAMIL",               TAMIL       ),
+	   new NameCodePair( "TELUGU",              TELUGU      ),
+	   new NameCodePair( "THAANA",              THAANA      ),
+	   new NameCodePair( "THAI",                THAI        ),
+	   new NameCodePair( "TIBETAN",             TIBETAN     ),
+	   new NameCodePair( "UCAS",                UCAS        ),
+	   new NameCodePair( "YI",                  YI          )
+    };
+	
+	/* script abbreviations with codes, sorted by abbreviations */
+	private static final NameCodePair[] scriptAbbr= {
+	    new NameCodePair( "Arab",       ARABIC      ),
+	    new NameCodePair( "Armn",       ARMENIAN    ),
+	    new NameCodePair( "Beng",       BENGALI     ),
+	    new NameCodePair( "Bopo",       BOPOMOFO    ),
+	    new NameCodePair( "Buhd",       BUHID       ),
+	    new NameCodePair( "Cans",       UCAS        ),
+	    new NameCodePair( "Cher",       CHEROKEE    ),
+	    new NameCodePair( "Cyrl",       CYRILLIC    ),
+	 /* new NameCodePair( "Cyrs",       CYRILLIC    ), */
+	    new NameCodePair( "Deva",       DEVANAGARI  ),
+	    new NameCodePair( "Dsrt",       DESERET     ),
+	    new NameCodePair( "Ethi",       ETHIOPIC    ),
+	 /* new NameCodePair( Geoa",       GEORGIAN    ), */
+	 /* new NameCodePair( Geon",       GEORGIAN    ), */
+	    new NameCodePair( "Geor",       GEORGIAN    ),
+	    new NameCodePair( "Goth",       GOTHIC      ),
+	    new NameCodePair( "Grek",       GREEK       ),
+	    new NameCodePair( "Gujr",       GUJARATI    ),
+	    new NameCodePair( "Guru",       GURMUKHI    ),
+	    new NameCodePair( "Hang",       HANGUL      ),
+	    new NameCodePair( "Hani",       HAN         ),
+	    new NameCodePair( "Hano",       HANUNOO     ),
+	    new NameCodePair( "Hebr",       HEBREW      ),
+	    new NameCodePair( "Hira",       HIRAGANA    ),
+	    new NameCodePair( "Ital",       OLD_ITALIC  ),
+	    new NameCodePair( "Kana",       KATAKANA    ),
+	    new NameCodePair( "Khmr",       KHMER       ),
+	    new NameCodePair( "Knda",       KANNADA     ),
+	    new NameCodePair( "Lao",        LAO         ),
+	 /* new NameCodePair( "Laoo",       LAO         ), */
+	 /* new NameCodePair( "Latf",       LATIN       ), */
+	 /* new NameCodePair( "Latg",       LATIN       ), */
+	    new NameCodePair( "Latn",       LATIN       ),
+	    new NameCodePair( "Mlym",       MALAYALAM   ),
+	    new NameCodePair( "Mong",       MONGOLIAN   ),
+	    new NameCodePair( "Mymr",       MYANMAR     ),
+	    new NameCodePair( "Ogam",       OGHAM       ),
+	    new NameCodePair( "Orya",       ORIYA       ),
+	    new NameCodePair( "Qaac",       COPTIC      ),
+	    new NameCodePair( "Qaai",       INHERITED   ),
+	    new NameCodePair( "Runr",       RUNIC       ),
+	    new NameCodePair( "Sinh",       SINHALA     ),
+	    new NameCodePair( "Syrc",       SYRIAC      ),
+	 /* new NameCodePair( "Syre",       SYRIAC      ), */
+	 /* new NameCodePair( "Syrj",       SYRIAC      ), */
+	 /* new NameCodePair( "Syrn",       SYRIAC      ), */
+	    new NameCodePair( "Tagb",       TAGBANWA    ),
+	    new NameCodePair( "Taml",       TAMIL       ),
+	    new NameCodePair( "Telu",       TELUGU      ),
+	    new NameCodePair( "Tglg",       TAGALOG     ),
+	    new NameCodePair( "Thaa",       THAANA      ),
+	    new NameCodePair( "Thai",       THAI        ),
+	    new NameCodePair( "Tibt",       TIBETAN     ),
+	    new NameCodePair( "Yiii",       YI          ),
+	    new NameCodePair( "Zyyy",       COMMON      )
+    };
+
+
+
+    /* binary search the string array */
+    private static int findStringIndex(NameCodePair[] sortedArr, String target){
+        int size = sortedArr.length;
+        int left, middle, right,rc;
+        left =0;
+        right= size-1;
+        
+        target = target.toUpperCase();
+        while(left <= right){
+            middle = (left+right)/2;
+            rc=comparePropertyNames(sortedArr[middle].name,target);
+            if(rc<0){
+                left = middle+1;
+            }else if(rc >0){
+                right = middle -1;
+            }else{
+                return middle;
+            }
+        }
+        return -1;
+    }
+
+    /* linearly search the array and return the index */
+    private static int findCodeIndex(NameCodePair[] unsorted, int target){
+        int size = unsorted.length;
+        int i=0;
+        while(i<size){
+            if(target == unsorted[i].code){
+                return i;
+            }
+            i++;
+        }
+        return -1;
+    }
+    
+    private static final int SCRIPT_MASK   = 0x0000007f;
+    private static final UCharacterProperty prop= UCharacterProperty.getInstance();
+    
+    /**
+     * Helper function to find the code from locale.
+     * @param Locale the locale.
+     * @exception MissingResourceException if LocaleScript cannot be opened
+     */
+    private static int[] findCodeFromLocale(Locale locale) {
+
+        ResourceBundle rb = ICULocaleData.getLocaleElements(locale);
+
+        // if rb is not a strict fallback of the requested locale, return null
+        if (rb==null || !LocaleUtility.isFallbackOf(rb.getLocale(), locale)) {
+            return null;
+        }
+
+        String[] scripts = rb.getStringArray("LocaleScript");
+        int[] result = new int[scripts.length];
+        int w = 0;
+        for (int i = 0; i < scripts.length; ++i) {
+            int strIndex = findStringIndex(scriptAbbr, scripts[i]);
+            if (strIndex != -1) {
+                result[w++] = scriptAbbr[strIndex].code;
+            }
+        }
+
+        if (w < result.length) {
+            throw new InternalError("bad locale data, listed " + scripts.length + " scripts but found only " + w);
+        }
+
+        return result;
+    }
+         
+    /**
+     * Gets a script codes associated with the given locale or ISO 15924 abbreviation or name. 
+     * Returns MALAYAM given "Malayam" OR "Mlym".
+     * Returns LATIN given "en" OR "en_US" 
+     * @param locale Locale
+     * @return The script codes array. null if the the code cannot be found. 
+     * @exception MissingResourceException
+     * @draft
+     */
+    public static final int[] getCode(Locale locale)
+        throws MissingResourceException {
+        return findCodeFromLocale(locale);
+        }
+    
+    /**
+     * Gets a script codes associated with the given locale or ISO 15924 abbreviation or name. 
+     * Returns MALAYAM given "Malayam" OR "Mlym".
+     * Returns LATIN given "en" OR "en_US" 
+     * @param nameOrAbbrOrLocale name of the script or ISO 15924 code or locale
+     * @return The script codes array. null if the the code cannot be found.
+     * @draft
+     */
+    public static final int[] getCode(String nameOrAbbrOrLocale){
+            
+        int[] code = new int[1];
+        code[0] = INVALID_CODE;
+        int strIndex=0;
+        
+        /* try the Names array first */
+        strIndex = findStringIndex(scriptNames, nameOrAbbrOrLocale);
+        
+        if(strIndex>=0 && strIndex < scriptNames.length){ 
+            code[0] =  scriptNames[strIndex].code;
+        }
+        /* we did not find in names array so try abbr array*/
+        if(code[0] == INVALID_CODE){
+            strIndex = findStringIndex(scriptAbbr, nameOrAbbrOrLocale);
+            if(strIndex>=0 && strIndex < scriptAbbr.length){ 
+                code[0] =  scriptAbbr[strIndex].code;
+            }
+        }
+        /* we still haven't found it try locale */        
+        if(code[0]==INVALID_CODE){            
+            code = findCodeFromLocale(LocaleUtility.getLocaleFromName(nameOrAbbrOrLocale));
+        }
+        return code;
+    }
+
+    /** 
+     * Gets the script code associated with the given codepoint.
+     * Returns UScript.MALAYAM given 0x0D02 
+     * @param codepoint UChar32 codepoint
+     * @param err the error status code.
+     * @return The script code 
+     * @exception IllegalArgumentException
+     * @draft
+     */
+    public static final int getScript(int codepoint){
+        if (codepoint >= UCharacter.MIN_VALUE & codepoint <= UCharacter.MAX_VALUE) {
+            return (int)(prop.getAdditional(codepoint,0) & SCRIPT_MASK);
+        }else{
+            throw new IllegalArgumentException(Integer.toString(codepoint));
+        } 
+    }
+    
+    /**
+     * Gets a script name associated with the given script code. 
+     * Returns  "Malayam" given MALAYAM
+     * @param scriptCode int script code
+     * @return script name as a string in full as given in TR#24
+     * @exception IllegalArgumentException
+     * @draft
+     */
+    public static final String getName(int scriptCode){
+        int index = -1;
+        if(scriptCode > CODE_LIMIT){
+            throw new IllegalArgumentException(Integer.toString(scriptCode));
+        }
+        index = findCodeIndex(scriptNames,scriptCode);
+        if(index >=0){
+            return scriptNames[index].name;
+        }else{
+            throw new IllegalArgumentException(Integer.toString(scriptCode));
+        }
+    }
+    
+    /**
+     * Gets a script name associated with the given script code. 
+     * Returns  "Mlym" given MALAYAM
+     * @param scriptCode int script code 
+     * @return script abbreviated name as a string  as given in TR#24
+     * @exception IllegalArgumentException
+     * @draft
+     */
+    public static final String getShortName(int scriptCode){
+        int index = -1;
+        if(scriptCode > CODE_LIMIT){
+            throw new IllegalArgumentException(Integer.toString(scriptCode));
+        }
+        index = findCodeIndex(scriptAbbr,scriptCode);
+        if(index >=0){
+            return scriptAbbr[index].name;
+        }else{
+            throw new IllegalArgumentException(Integer.toString(scriptCode));
+        }
+    }
+    private static int comparePropertyNames( String s1, String s2) {    
+	    int rc;
+	    char c1, c2;
+	    char[] name1 = s1.toCharArray();
+        char[] name2 = s2.toCharArray();
+        int i=0;
+        int j=0;
+        int endIndex1 = name1.length-1;
+        int endIndex2 = name2.length-1;
+	    for(;;) {
+            if((i>=name1.length)||(j>=name2.length)) {
+                return (name1.length - name2.length);
+            }
+            // Ignore delimiters '-', '_', and ASCII White_Space 
+	        while((c1=name1[i])=='-' || c1=='_' ||
+	              c1==' ' || c1=='\t' || c1=='\n' || c1==0x0B || c1=='\f' || c1=='\r'
+	        ) {
+	            ++i;
+	        }
+	        while((c2=name2[j])=='-' || c2=='_' ||
+	              c2==' ' || c2=='\t' || c2=='\n' || c2==0x0B || c2=='\f' || c2=='\r'
+	        ) {
+	            ++j;
+	        }
+	        // Case-insensitive comparison
+	        if(c1!=c2) {
+	            rc=(int)(char)UCharacter.toLowerCase(c1)-(int)(char)UCharacter.toLowerCase(c2);
+	            if(rc!=0) {
+	                return rc;
+	            }
+	        }
+	        if(i==endIndex1 && j==endIndex2){
+                return 0;
+            }
+	        ++i;
+	        ++j;
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/lang/UScriptRun.java b/src/com/ibm/icu/lang/UScriptRun.java
new file mode 100644
index 0000000..5fc48a6
--- /dev/null
+++ b/src/com/ibm/icu/lang/UScriptRun.java
@@ -0,0 +1,528 @@
+/*
+ *******************************************************************************
+ *
+ *   Copyright (C) 1999-2002, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.lang;
+
+import com.ibm.icu.impl.UCharacterIterator;
+import com.ibm.icu.impl.UForwardCharacterIterator;
+
+/**
+ * <code>UScriptRun</code> is used to find runs of characters in
+ * the same script, as defined in the <code>UScript</code> class.
+ * It implements a simple iterator over an array of characters.
+ * The iterator will assign <code>COMMON</code> and <code>INHERITED</code>
+ * characters to the same script as the preceeding characters. If the
+ * COMMON and INHERITED characters are first, they will be assigned to
+ * the same script as the following characters.
+ *
+ * The iterator will try to match paired punctuation. If it sees an
+ * opening punctuation character, it will remember the script that
+ * was assigned to that character, and assign the same script to the
+ * matching closing punctuation.
+ *
+ * No attempt is made to combine related scripts into a single run. In
+ * particular, Hiragana, Katakana, and Han characters will appear in seperate
+ * runs.
+
+ * Here is an example of how to iterate over script runs:
+ * <pre>
+ * void printScriptRuns(char[] text)
+ * {
+ *     UScriptRun scriptRun = new UScriptRun(text);
+ *
+ *     while (scriptRun.next()) {
+ *         int start  = scriptRun.getScriptStart();
+ *         int limit  = scriptRun.getScriptLimit();
+ *         int script = scriptRun.getScriptCode();
+ *
+ *         System.out.println("Script \"" + UScript.getName(script) + "\" from " +
+ *                            start + " to " + limit + ".");
+ *     }
+ *  }
+ * </pre>
+ */
+public final class UScriptRun
+{
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91999-2002 IBM Corp.  All rights reserved.";
+
+    /**
+     * Construct an empty <code>UScriptRun</code> object. The <code>next()</code>
+     * method will return <code>false</code> the first time it is called.
+     *
+     * @internal
+     */
+    public UScriptRun()
+    {
+        char[] nullChars = null;
+        
+        reset(nullChars, 0, 0);
+    }
+    
+    /**
+     * Construct a <code>UScriptRun</code> object which iterates over the
+     * characters in the given string.
+     *
+     * @param text the string of characters over which to iterate.
+     *
+     * @internal
+     */
+    public UScriptRun(String text)
+    {
+        reset (text);
+    }
+    
+    /**
+     * Construct a <code>UScriptRun</code> object which iterates over a subrange
+     * of the characetrs in the given string.
+     *
+     * @param text the string of characters over which to iterate.
+     * @param start the index of the first character over which to iterate
+     * @param count the number of characters over which to iterate
+     *
+     * @internal
+     */
+    public UScriptRun(String text, int start, int count)
+    {
+        reset(text, start, count);
+    }
+
+    /**
+     * Construct a <code>UScriptRun</code> object which iterates over the given
+     * characetrs.
+     *
+     * @param chars the array of characters over which to iterate.
+     *
+     * @internal
+     */
+    public UScriptRun(char[] chars)
+    {
+        reset(chars);
+    }
+
+    /**
+     * Construct a <code>UScriptRun</code> object which iterates over a subrange
+     * of the given characetrs.
+     *
+     * @param chars the array of characters over which to iterate.
+     * @param start the index of the first character over which to iterate
+     * @param count the number of characters over which to iterate
+     *
+     * @internal
+     */
+    public UScriptRun(char[] chars, int start, int count)
+    {
+        reset(chars, start, count);
+    }
+
+
+    /**
+     * Reset the iterator to the start of the text.
+     *
+     * @internal
+     */
+    public final void reset()
+    {
+        scriptStart = textStart;
+        scriptLimit = textStart;
+        scriptCode  = UScript.INVALID_CODE;
+        parenSP     = -1;
+        
+        text.setToStart();
+    }
+
+    /**
+     * Reset the iterator to iterate over the given range of the text. Throws
+     * IllegalArgumentException if the range is outside of the bounds of the
+     * character array.
+     *
+     * @param start the index of the new first character over which to iterate
+     * @param count the new number of characters over which to iterate.
+     * @exception IllegalArgumentException
+     *
+     * @internal
+     */
+    public final void reset(int start, int count)
+    throws IllegalArgumentException
+    {
+        int len = 0;
+        
+        if (text != null) {
+            len = text.getLength();
+        }
+        
+        if (start < 0 || count < 0 || start > len - count) {
+            throw new IllegalArgumentException();
+        }
+        
+        textStart = start;
+        textLimit = start + count;
+
+        reset();
+    }
+
+    /**
+     * Reset the iterator to iterate over <code>count</code> characters
+     * in <code>chars</code> starting at <code>start</code>. This allows
+     * clients to reuse an iterator.
+     *
+     * @param chars the new array of characters over which to iterate.
+     * @param start the index of the first character over which to iterate.
+     * @param count the nuber of characters over which to iterate.
+     *
+     * @internal
+     */
+    public final void reset(char[] chars, int start, int count)
+    {
+        if (chars == null) {
+            chars = emptyCharArray;
+        }
+        
+        text = UCharacterIterator.getInstance(chars, start, start + count);
+
+        reset(start, count);
+    }
+    
+    /**
+     * Reset the iterator to iterate over the characters
+     * in <code>chars</code>. This allows clients to reuse an iterator.
+     *
+     * @param chars the new array of characters over which to iterate.
+     *
+     * @internal
+     */
+    public final void reset(char[] chars)
+    {
+        int length = 0;
+        
+        if (chars != null) {
+            length = chars.length;
+        }
+        
+        reset(chars, 0, length);
+    }
+    
+    /**
+     * Reset the iterator to iterate over <code>count</code> characters
+     * in <code>text</code> starting at <code>start</code>. This allows
+     * clients to reuse an iterator.
+     *
+     * @param text the new string of characters over which to iterate.
+     * @param start the index of the first character over which to iterate.
+     * @param count the nuber of characters over which to iterate.
+     *
+     * @internal
+     */
+    public final void reset(String text, int start, int count)
+    {
+        char[] chars = null;
+        
+        if (text != null) {
+            chars = text.toCharArray();
+        }
+        
+        reset(chars, start, count);
+    }
+    
+    /**
+     * Reset the iterator to iterate over the characters
+     * in <code>text</code>. This allows clients to reuse an iterator.
+     *
+     * @param text the new string of characters over which to iterate.
+     *
+     * @internal
+     */
+    public final void reset(String text)
+    {
+        int length   = 0;
+        
+        if (text != null) {
+            length = text.length();
+        }
+        
+        reset(text, 0, length);
+    }
+        
+
+
+    /**
+     * Get the starting index of the current script run.
+     *
+     * @return the index of the first character in the current script run.
+     *
+     * @internal
+     */
+    public final int getScriptStart()
+    {
+        return scriptStart;
+    }
+
+    /**
+     * Get the index of the first character after the current script run.
+     *
+     * @return the index of the first character after the current script run.
+     *
+     * @internal
+     */
+    public final int getScriptLimit()
+    {
+        return scriptLimit;
+    }
+
+    /**
+     * Get the script code for the script of the current script run.
+     *
+     * @return the script code for the script of the current script run.
+     * @see com.ibm.icu.lang.UScript
+     *
+     * @internal
+     */
+    public final int getScriptCode()
+    {
+        return scriptCode;
+    }
+
+    /**
+     * Find the next script run. Returns <code>false</code> if there
+     * isn't another run, returns <code>true</code> if there is.
+     *
+     * @return <code>false</code> if there isn't another run, <code>true</code> if there is.
+     *
+     * @internal
+     */
+    public final boolean next()
+	{
+		int startSP  = parenSP;  // used to find the first new open character
+
+		// if we've fallen off the end of the text, we're done
+		if (scriptLimit >= textLimit) {
+			return false;
+		}
+    
+		scriptCode  = UScript.COMMON;
+        scriptStart = scriptLimit;
+        
+        int ch;
+        
+        while ((ch = text.nextCodePoint()) != UForwardCharacterIterator.DONE) {
+			int sc = UScript.getScript(ch);
+			int pairIndex = getPairIndex(ch);
+
+			// Paired character handling:
+			//
+			// if it's an open character, push it onto the stack.
+			// if it's a close character, find the matching open on the
+			// stack, and use that script code. Any non-matching open
+			// characters above it on the stack will be poped.
+			if (pairIndex >= 0) {
+				if ((pairIndex & 1) == 0) {
+				    
+                    /*
+                     * If the paren stack is full, empty it. This
+                     * means that deeply nested paired punctuation
+                     * characters will be ignored, but that's an unusual
+                     * case, and it's better to ignore them than to
+                     * write off the end of the stack...
+                     */
+				    if (++parenSP >= PAREN_STACK_DEPTH) {
+				        parenSP = 0;
+				    }
+				    
+				    parenStack[parenSP] = new ParenStackEntry(pairIndex, scriptCode);
+				} else if (parenSP >= 0) {
+					int pi = pairIndex & ~1;
+
+					while (parenSP >= 0 && parenStack[parenSP].pairIndex != pi) {
+						parenSP -= 1;
+					}
+
+					if (parenSP < startSP) {
+						startSP = parenSP;
+					}
+
+					if (parenSP >= 0) {
+						sc = parenStack[parenSP].scriptCode;
+					}
+				}
+			}
+
+			if (sameScript(scriptCode, sc)) {
+				if (scriptCode <= UScript.INHERITED && sc > UScript.INHERITED) {
+					scriptCode = sc;
+
+					// now that we have a final script code, fix any open
+					// characters we pushed before we knew the script code.
+					while (startSP < parenSP) {
+						parenStack[++startSP].scriptCode = scriptCode;
+					}
+				}
+
+				// if this character is a close paired character,
+				// pop it from the stack
+				if (pairIndex >= 0 && (pairIndex & 1) != 0 && parenSP >= 0) {
+					parenSP -= 1;
+					startSP -= 1;
+				}
+			} else {
+			    // We've just seen the first character of
+			    // the next run. Back over it so we'll see
+			    // it again the next time.
+			    text.previousCodePoint();
+			    break;
+			}
+		}
+
+        scriptLimit = textStart + text.getIndex();
+		return true;
+	}
+
+    /**
+     * Compare two script codes to see if they are in the same script. If one script is
+     * a strong script, and the other is INHERITED or COMMON, it will compare equal.
+     *
+     * @param scriptOne one of the script codes.
+     * @param scriptTwo the other script code.
+     * @return <code>true</code> if the two scripts are the same.
+     * @see com.ibm.icu.lang.UScript
+     */
+    private static boolean sameScript(int scriptOne, int scriptTwo)
+	{
+		return scriptOne <= UScript.INHERITED || scriptTwo <= UScript.INHERITED || scriptOne == scriptTwo;
+	}
+
+    /*
+     * An internal class which holds entries on the paren stack.
+     */
+	private static final class ParenStackEntry
+	{
+		int pairIndex;
+		int scriptCode;
+		
+		public ParenStackEntry(int thePairIndex, int theScriptCode)
+		{
+		    pairIndex  = thePairIndex;
+		    scriptCode = theScriptCode;
+		}
+    };
+    
+    private char[] emptyCharArray = {};
+
+    private UCharacterIterator text;
+
+    private int  textStart;
+    private int  textLimit;
+    
+    private int  scriptStart;
+    private int  scriptLimit;
+    private int  scriptCode;
+
+    private static int PAREN_STACK_DEPTH = 128;
+    private static ParenStackEntry parenStack[] = new ParenStackEntry[PAREN_STACK_DEPTH];
+    private int  parenSP;
+
+    /**
+     * Find the highest bit that's set in a word. Uses a binary search through
+     * the bits.
+     *
+     * @param n the word in which to find the highest bit that's set.
+     * @return the bit number (counting from the low order bit) of the highest bit.
+     */
+    private static final byte highBit(int n)
+    {
+        if (n <= 0) {
+            return -32;
+        }
+
+        byte bit = 0;
+
+        if (n >= 1 << 16) {
+            n >>= 16;
+            bit += 16;
+        }
+
+        if (n >= 1 << 8) {
+            n >>= 8;
+            bit += 8;
+        }
+
+        if (n >= 1 << 4) {
+            n >>= 4;
+            bit += 4;
+        }
+
+        if (n >= 1 << 2) {
+            n >>= 2;
+            bit += 2;
+        }
+
+        if (n >= 1 << 1) {
+            n >>= 1;
+            bit += 1;
+        }
+
+        return bit;
+    }
+
+    /**
+     * Search the pairedChars array for the given character.
+     *
+     * @param ch the character for which to search.
+     * @return the index of the character in the table, or -1 if it's not there.
+     */
+    private static int getPairIndex(int ch)
+	{
+		int probe = pairedCharPower;
+		int index = 0;
+
+		if (ch >= pairedChars[pairedCharExtra]) {
+			index = pairedCharExtra;
+		}
+
+		while (probe > (1 << 0)) {
+			probe >>= 1;
+
+			if (ch >= pairedChars[index + probe]) {
+				index += probe;
+			}
+		}
+
+		if (pairedChars[index] != ch) {
+			index = -1;
+		}
+
+		return index;
+	}
+
+    private static int pairedChars[] = {
+		0x0028, 0x0029, // ascii paired punctuation
+		0x003c, 0x003e,
+		0x005b, 0x005d,
+		0x007b, 0x007d,
+		0x00ab, 0x00bb, // guillemets
+		0x2018, 0x2019, // general punctuation
+		0x201c, 0x201d,
+		0x2039, 0x203a,
+		0x3008, 0x3009, // chinese paired punctuation
+		0x300a, 0x300b,
+		0x300c, 0x300d,
+		0x300e, 0x300f,
+		0x3010, 0x3011,
+		0x3014, 0x3015,
+		0x3016, 0x3017,
+		0x3018, 0x3019,
+		0x301a, 0x301b
+	};
+
+    private static int pairedCharPower = 1 << highBit(pairedChars.length);
+    private static int pairedCharExtra = pairedChars.length - pairedCharPower;
+}
+
diff --git a/src/com/ibm/icu/manifest.stub b/src/com/ibm/icu/manifest.stub
new file mode 100644
index 0000000..ba0a305
--- /dev/null
+++ b/src/com/ibm/icu/manifest.stub
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Specification-Title: ICU for Java
+Specification-Version: 2.2
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java
+Implementation-Version: 2.2
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+
+Name: com/ibm/icu
diff --git a/src/com/ibm/icu/math/BigDecimal.java b/src/com/ibm/icu/math/BigDecimal.java
new file mode 100755
index 0000000..841eed3
--- /dev/null
+++ b/src/com/ibm/icu/math/BigDecimal.java
@@ -0,0 +1,4359 @@
+/* Generated from 'BigDecimal.nrx' 8 Sep 2000 11:10:50 [v2.00] */
+/* Options: Binary Comments Crossref Format Java Logo Strictargs Strictcase Trace2 Verbose3 */
+package com.ibm.icu.math;
+import java.math.BigInteger;
+import com.ibm.icu.impl.Utility;
+
+/* ------------------------------------------------------------------ */
+/* BigDecimal -- Decimal arithmetic for Java                          */
+/* ------------------------------------------------------------------ */
+/* Copyright IBM Corporation, 1996, 2000.  All Rights Reserved.       */
+/*                                                                    */
+/* The BigDecimal class provides immutable arbitrary-precision        */
+/* floating point (including integer) decimal numbers.                */
+/*                                                                    */
+/* As the numbers are decimal, there is an exact correspondence       */
+/* between an instance of a BigDecimal object and its String          */
+/* representation; the BigDecimal class provides direct conversions   */
+/* to and from String and character array objects, and well as        */
+/* conversions to and from the Java primitive types (which may not    */
+/* be exact).                                                         */
+/* ------------------------------------------------------------------ */
+/* Notes:                                                             */
+/*                                                                    */
+/* 1. A BigDecimal object is never changed in value once constructed; */
+/*    this avoids the need for locking.  Note in particular that the  */
+/*    mantissa array may be shared between many BigDecimal objects,   */
+/*    so that once exposed it must not be altered.                    */
+/*                                                                    */
+/* 2. This class looks at MathContext class fields directly (for      */
+/*    performance).  It must not and does not change them.            */
+/*                                                                    */
+/* 3. Exponent checking is delayed until finish(), as we know         */
+/*    intermediate calculations cannot cause 31-bit overflow.         */
+/*    [This assertion depends on MAX_DIGITS in MathContext.]          */
+/*                                                                    */
+/* 4. Comments for the public API now follow the javadoc conventions. */
+/*    The NetRexx -comments option is used to pass these comments     */
+/*    through to the generated Java code (with -format, if desired).  */
+/*                                                                    */
+/* 5. System.arraycopy is faster than explicit loop as follows        */
+/*      Mean length 4:  equal                                         */
+/*      Mean length 8:  x2                                            */
+/*      Mean length 16: x3                                            */
+/*      Mean length 24: x4                                            */
+/*    From prior experience, we expect mean length a little below 8,  */
+/*    but arraycopy is still the one to use, in general, until later  */
+/*    measurements suggest otherwise.                                 */
+/*                                                                    */
+/* 6. 'DMSRCN' referred to below is the original (1981) IBM S/370     */
+/*    assembler code implementation of the algorithms below; it is    */
+/*    now called IXXRCN and is available with the OS/390 and VM/ESA   */
+/*    operating systems.                                              */
+/* ------------------------------------------------------------------ */
+/* Change History:                                                    */
+/* 1997.09.02 Initial version (derived from netrexx.lang classes)     */
+/* 1997.09.12 Add lostDigits checking                                 */
+/* 1997.10.06 Change mantissa to a byte array                         */
+/* 1997.11.22 Rework power [did not prepare arguments, etc.]          */
+/* 1997.12.13 multiply did not prepare arguments                      */
+/* 1997.12.14 add did not prepare and align arguments correctly       */
+/* 1998.05.02 0.07 packaging changes suggested by Sun and Oracle      */
+/* 1998.05.21 adjust remainder operator finalization                  */
+/* 1998.06.04 rework to pass MathContext to finish() and round()      */
+/* 1998.06.06 change format to use round(); support rounding modes    */
+/* 1998.06.25 rename to BigDecimal and begin merge                    */
+/*            zero can now have trailing zeros (i.e., exp\=0)         */
+/* 1998.06.28 new methods: movePointXxxx, scale, toBigInteger         */
+/*                         unscaledValue, valueof                     */
+/* 1998.07.01 improve byteaddsub to allow array reuse, etc.           */
+/* 1998.07.01 make null testing explicit to avoid JIT bug [Win32]     */
+/* 1998.07.07 scaled division  [divide(BigDecimal, int, int)]         */
+/* 1998.07.08 setScale, faster equals                                 */
+/* 1998.07.11 allow 1E6 (no sign) <sigh>; new double/float conversion */
+/* 1998.10.12 change package to com.ibm.icu.math                          */
+/* 1998.12.14 power operator no longer rounds RHS [to match ANSI]     */
+/*            add toBigDecimal() and BigDecimal(java.math.BigDecimal) */
+/* 1998.12.29 improve byteaddsub by using table lookup                */
+/* 1999.02.04 lostdigits=0 behaviour rounds instead of digits+1 guard */
+/* 1999.02.05 cleaner code for BigDecimal(char[])                     */
+/* 1999.02.06 add javadoc comments                                    */
+/* 1999.02.11 format() changed from 7 to 2 method form                */
+/* 1999.03.05 null pointer checking is no longer explicit             */
+/* 1999.03.05 simplify; changes from discussion with J. Bloch:        */
+/*            null no longer permitted for MathContext; drop boolean, */
+/*            byte, char, float, short constructor, deprecate double  */
+/*            constructor, no blanks in string constructor, add       */
+/*            offset and length version of char[] constructor;        */
+/*            add valueOf(double); drop booleanValue, charValue;      */
+/*            add ...Exact versions of remaining convertors           */
+/* 1999.03.13 add toBigIntegerExact                                   */
+/* 1999.03.13 1.00 release to IBM Centre for Java Technology          */
+/* 1999.05.27 1.01 correct 0-0.2 bug under scaled arithmetic          */
+/* 1999.06.29 1.02 constructors should not allow exponent > 9 digits  */
+/* 1999.07.03 1.03 lost digits should not be checked if digits=0      */
+/* 1999.07.06      lost digits Exception message changed              */
+/* 1999.07.10 1.04 more work on 0-0.2 (scaled arithmetic)             */
+/* 1999.07.17      improve messages from pow method                   */
+/* 1999.08.08      performance tweaks                                 */
+/* 1999.08.15      fastpath in multiply                               */
+/* 1999.11.05 1.05 fix problem in intValueExact [e.g., 5555555555]    */
+/* 1999.12.22 1.06 remove multiply fastpath, and improve performance  */
+/* 2000.01.01      copyright update [Y2K has arrived]                 */
+/* 2000.06.18 1.08 no longer deprecate BigDecimal(double)             */
+/* ------------------------------------------------------------------ */
+
+
+
+
+
+/**
+ * The <code>BigDecimal</code> class implements immutable
+ * arbitrary-precision decimal numbers.  The methods of the
+ * <code>BigDecimal</code> class provide operations for fixed and
+ * floating point arithmetic, comparison, format conversions, and
+ * hashing.
+ * <p>
+ * As the numbers are decimal, there is an exact correspondence between
+ * an instance of a <code>BigDecimal</code> object and its
+ * <code>String</code> representation; the <code>BigDecimal</code> class
+ * provides direct conversions to and from <code>String</code> and
+ * character array (<code>char[]</code>) objects, as well as conversions
+ * to and from the Java primitive types (which may not be exact) and
+ * <code>BigInteger</code>.
+ * <p>
+ * In the descriptions of constructors and methods in this documentation,
+ * the value of a <code>BigDecimal</code> number object is shown as the
+ * result of invoking the <code>toString()</code> method on the object.
+ * The internal representation of a decimal number is neither defined
+ * nor exposed, and is not permitted to affect the result of any
+ * operation.
+ * <p>
+ * The floating point arithmetic provided by this class is defined by
+ * the ANSI X3.274-1996 standard, and is also documented at
+ * <code>http://www2.hursley.ibm.com/decimal</code>
+ * <br><i>[This URL will change.]</i>
+ *
+ * <h3>Operator methods</h3>
+ * <p>
+ * Operations on <code>BigDecimal</code> numbers are controlled by a
+ * {@link MathContext} object, which provides the context (precision and
+ * other information) for the operation. Methods that can take a
+ * <code>MathContext</code> parameter implement the standard arithmetic
+ * operators for <code>BigDecimal</code> objects and are known as
+ * <i>operator methods</i>.  The default settings provided by the
+ * constant {@link MathContext#DEFAULT} (<code>digits=9,
+ * form=SCIENTIFIC, lostDigits=false, roundingMode=ROUND_HALF_UP</code>)
+ * perform general-purpose floating point arithmetic to nine digits of
+ * precision.  The <code>MathContext</code> parameter must not be
+ * <code>null</code>.
+ * <p>
+ * Each operator method also has a version provided which does
+ * not take a <code>MathContext</code> parameter.  For this version of
+ * each method, the context settings used are <code>digits=0,
+ * form=PLAIN, lostDigits=false, roundingMode=ROUND_HALF_UP</code>;
+ * these settings perform fixed point arithmetic with unlimited
+ * precision, as defined for the original BigDecimal class in Java 1.1
+ * and Java 1.2.
+ * <p>
+ * For monadic operators, only the optional <code>MathContext</code>
+ * parameter is present; the operation acts upon the current object.
+ * <p>
+ * For dyadic operators, a <code>BigDecimal</code> parameter is always
+ * present; it must not be <code>null</code>.
+ * The operation acts with the current object being the left-hand operand
+ * and the <code>BigDecimal</code> parameter being the right-hand operand.
+ * <p>
+ * For example, adding two <code>BigDecimal</code> objects referred to
+ * by the names <code>award</code> and <code>extra</code> could be
+ * written as any of:
+ * <p><code>
+ *     award.add(extra)
+ * <br>award.add(extra, MathContext.DEFAULT)
+ * <br>award.add(extra, acontext)
+ * </code>
+ * <p>
+ * (where <code>acontext</code> is a <code>MathContext</code> object),
+ * which would return a <code>BigDecimal</code> object whose value is
+ * the result of adding <code>award</code> and <code>extra</code> under
+ * the appropriate context settings.
+ * <p>
+ * When a <code>BigDecimal</code> operator method is used, a set of
+ * rules define what the result will be (and, by implication, how the
+ * result would be represented as a character string).
+ * These rules are defined in the BigDecimal arithmetic documentation
+ * (see the URL above), but in summary:
+ * <ul>
+ * <li>Results are normally calculated with up to some maximum number of
+ * significant digits.
+ * For example, if the <code>MathContext</code> parameter for an operation
+ * were <code>MathContext.DEFAULT</code> then the result would be
+ * rounded to 9 digits; the division of 2 by 3 would then result in
+ * 0.666666667.
+ * <br>
+ * You can change the default of 9 significant digits by providing the
+ * method with a suitable <code>MathContext</code> object. This lets you
+ * calculate using as many digits as you need -- thousands, if necessary.
+ * Fixed point (scaled) arithmetic is indicated by using a
+ * <code>digits</code> setting of 0 (or omitting the
+ * <code>MathContext</code> parameter).
+ * <br>
+ * Similarly, you can change the algorithm used for rounding from the
+ * default "classic" algorithm.
+ * <li>
+ * In standard arithmetic (that is, when the <code>form</code> setting
+ * is not <code>PLAIN</code>), a zero result is always expressed as the
+ * single digit <code>'0'</code> (that is, with no sign, decimal point,
+ * or exponent part).
+ * <li>
+ * Except for the division and power operators in standard arithmetic,
+ * trailing zeros are preserved (this is in contrast to binary floating
+ * point operations and most electronic calculators, which lose the
+ * information about trailing zeros in the fractional part of results).
+ * <br>
+ * So, for example:
+ * <p><code>
+ *     new BigDecimal("2.40").add(     new BigDecimal("2"))      =&gt; "4.40"
+ * <br>new BigDecimal("2.40").subtract(new BigDecimal("2"))      =&gt; "0.40"
+ * <br>new BigDecimal("2.40").multiply(new BigDecimal("2"))      =&gt; "4.80"
+ * <br>new BigDecimal("2.40").divide(  new BigDecimal("2"), def) =&gt; "1.2"
+ * </code>
+ * <p>where the value on the right of the <code>=&gt;</code> would be the
+ * result of the operation, expressed as a <code>String</code>, and
+ * <code>def</code> (in this and following examples) refers to
+ * <code>MathContext.DEFAULT</code>).
+ * This preservation of trailing zeros is desirable for most
+ * calculations (including financial calculations).
+ * If necessary, trailing zeros may be easily removed using division by 1.
+ * <li>
+ * In standard arithmetic, exponential form is used for a result
+ * depending on its value and the current setting of <code>digits</code>
+ * (the default is 9 digits).
+ * If the number of places needed before the decimal point exceeds the
+ * <code>digits</code> setting, or the absolute value of the number is
+ * less than <code>0.000001</code>, then the number will be expressed in
+ * exponential notation; thus
+ * <p><code>
+ *   new BigDecimal("1e+6").multiply(new BigDecimal("1e+6"), def)
+ * </code>
+ * <p>results in <code>1E+12</code> instead of
+ * <code>1000000000000</code>, and
+ * <p><code>
+ *   new BigDecimal("1").divide(new BigDecimal("3E+10"), def)
+ * </code>
+ * <p>results in <code>3.33333333E-11</code> instead of
+ * <code>0.0000000000333333333</code>.
+ * <p>
+ * The form of the exponential notation (scientific or engineering) is
+ * determined by the <code>form</code> setting.
+ * <eul>
+ * <p>
+ * The names of methods in this class follow the conventions established
+ * by <code>java.lang.Number</code>, <code>java.math.BigInteger</code>,
+ * and <code>java.math.BigDecimal</code> in Java 1.1 and Java 1.2.
+ *
+ * @see     MathContext
+ * @version 1.08 2000.06.18
+ * @author  Mike Cowlishaw
+ */
+
+public class BigDecimal extends java.lang.Number implements java.io.Serializable,java.lang.Comparable{
+ private static final java.lang.String $0="BigDecimal.nrx";
+ 
+ 
+ 
+ /* ----- Constants ----- */
+ /* properties constant public */ // useful to others
+ /**
+  * The <code>BigDecimal</code> constant "0".
+  *
+  * @see #ONE
+  * @see #TEN
+  * @since IBM JDK 1.1.8
+  */
+ public static final com.ibm.icu.math.BigDecimal ZERO=new com.ibm.icu.math.BigDecimal((long)0); // use long as we want the int constructor
+ // .. to be able to use this, for speed
+ 
+ /**
+  * The <code>BigDecimal</code> constant "1".
+  *
+  * @see #TEN
+  * @see #ZERO
+  * @since IBM JDK 1.1.8
+  */
+ public static final com.ibm.icu.math.BigDecimal ONE=new com.ibm.icu.math.BigDecimal((long)1); // use long as we want the int constructor
+ // .. to be able to use this, for speed
+ 
+ /**
+  * The <code>BigDecimal</code> constant "10".
+  *
+  * @see #ONE
+  * @see #ZERO
+  * @since IBM JDK 1.1.8
+  */
+ public static final com.ibm.icu.math.BigDecimal TEN=new com.ibm.icu.math.BigDecimal(10);
+ 
+ // the rounding modes (copied here for upwards compatibility)
+ /**
+  * Rounding mode to round to a more positive number.
+  * @see MathContext#ROUND_CEILING
+  */
+ public static final int ROUND_CEILING=com.ibm.icu.math.MathContext.ROUND_CEILING;
+ 
+ /**
+  * Rounding mode to round towards zero.
+  * @see MathContext#ROUND_DOWN
+  */
+ public static final int ROUND_DOWN=com.ibm.icu.math.MathContext.ROUND_DOWN;
+ 
+ /**
+  * Rounding mode to round to a more negative number.
+  * @see MathContext#ROUND_FLOOR
+  */
+ public static final int ROUND_FLOOR=com.ibm.icu.math.MathContext.ROUND_FLOOR;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded down.
+  * @see MathContext#ROUND_HALF_DOWN
+  */
+ public static final int ROUND_HALF_DOWN=com.ibm.icu.math.MathContext.ROUND_HALF_DOWN;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded to the nearest even neighbor.
+  * @see MathContext#ROUND_HALF_EVEN
+  */
+ public static final int ROUND_HALF_EVEN=com.ibm.icu.math.MathContext.ROUND_HALF_EVEN;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded up.
+  * @see MathContext#ROUND_HALF_UP
+  */
+ public static final int ROUND_HALF_UP=com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+ 
+ /**
+  * Rounding mode to assert that no rounding is necessary.
+  * @see MathContext#ROUND_UNNECESSARY
+  */
+ public static final int ROUND_UNNECESSARY=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY;
+ 
+ /**
+  * Rounding mode to round away from zero.
+  * @see MathContext#ROUND_UP
+  */
+ public static final int ROUND_UP=com.ibm.icu.math.MathContext.ROUND_UP;
+ 
+ /* properties constant private */ // locals
+ private static final byte ispos=1; // ind: indicates positive (must be 1)
+ private static final byte iszero=0; // ind: indicates zero     (must be 0)
+ private static final byte isneg=-1; // ind: indicates negative (must be -1)
+ // [later could add NaN, +/- infinity, here]
+ 
+ private static final int MinExp=-999999999; // minimum exponent allowed
+ private static final int MaxExp=999999999; // maximum exponent allowed
+ private static final int MinArg=-999999999; // minimum argument integer
+ private static final int MaxArg=999999999; // maximum argument integer
+ 
+ private static final com.ibm.icu.math.MathContext plainMC=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN); // context for plain unlimited math
+ 
+ /* properties constant private unused */ // present but not referenced
+ 
+ // Serialization version
+ private static final long serialVersionUID=8245355804974198832L;
+ 
+ private static final java.lang.String copyright=" Copyright (c) IBM Corporation 1996, 2000.  All rights reserved. ";
+ 
+ /* properties static private */
+ // Precalculated constant arrays (used by byteaddsub)
+ private static byte bytecar[]=new byte[(90+99)+1]; // carry/borrow array
+ private static byte bytedig[]=diginit(); // next digit array
+ 
+ /* ----- Instance properties [all private and immutable] ----- */
+ /* properties private */
+ 
+ /**
+  * The indicator. This may take the values:
+  * <ul>
+  * <li>ispos  -- the number is positive
+  * <li>iszero -- the number is zero
+  * <li>isneg  -- the number is negative
+  * </ul>
+  *
+  * @serial
+  */
+ private byte ind; // assumed undefined
+ // Note: some code below assumes IND = Sign [-1, 0, 1], at present.
+ // We only need two bits for this, but use a byte [also permits
+ // smooth future extension].
+ 
+ /**
+  * The formatting style. This may take the values:
+  * <ul>
+  * <li>MathContext.PLAIN        -- no exponent needed
+  * <li>MathContext.SCIENTIFIC   -- scientific notation required
+  * <li>MathContext.ENGINEERING  -- engineering notation required
+  * </ul>
+  * <p>
+  * This property is an optimization; it allows us to defer number
+  * layout until it is actually needed as a string, hence avoiding
+  * unnecessary formatting.
+  *
+  * @serial
+  */
+ private byte form=(byte)com.ibm.icu.math.MathContext.PLAIN; // assumed PLAIN
+ // We only need two bits for this, at present, but use a byte
+ // [again, to allow for smooth future extension]
+ 
+ /**
+  * The value of the mantissa.
+  * <p>
+  * Once constructed, this may become shared between several BigDecimal
+  * objects, so must not be altered.
+  * <p>
+  * For efficiency (speed), this is a byte array, with each byte
+  * taking a value of 0 -> 9.
+  * <p>
+  * If the first byte is 0 then the value of the number is zero (and
+  * mant.length=1, except when constructed from a plain number, for
+  * example, 0.000).
+  *
+  * @serial
+  */
+ private byte mant[]; // assumed null
+ 
+ /**
+  * The exponent.
+  * <p>
+  * For fixed point arithmetic, scale is <code>-exp</code>, and can
+  * apply to zero.
+  *
+  * Note that this property can have a value less than MinExp when
+  * the mantissa has more than one digit.
+  *
+  * @serial
+  */
+ private int exp;
+ // assumed 0
+ 
+ /* ---------------------------------------------------------------- */
+ /* Constructors                                                     */
+ /* ---------------------------------------------------------------- */
+ 
+ /**
+  * Constructs a <code>BigDecimal</code> object from a
+  * <code>java.math.BigDecimal</code>.
+  * <p>
+  * Constructs a <code>BigDecimal</code> as though the parameter had
+  * been represented as a <code>String</code> (using its
+  * <code>toString</code> method) and the
+  * {@link #BigDecimal(java.lang.String)} constructor had then been
+  * used.
+  * The parameter must not be <code>null</code>.
+  * <p>
+  * <i>(Note: this constructor is provided only in the
+  * <code>com.ibm.icu.math</code> version of the BigDecimal class.
+  * It would not be present in a <code>java.math</code> version.)</i>
+  *
+  * @param bd The <code>BigDecimal</code> to be translated.
+  * @since IBM JDK 1.1.8
+  */
+ 
+ public BigDecimal(java.math.BigDecimal bd){
+  this(bd.toString());
+  return;}
+
+ /**
+  * Constructs a <code>BigDecimal</code> object from a
+  * <code>BigInteger</code>, with scale 0.
+  * <p>
+  * Constructs a <code>BigDecimal</code> which is the exact decimal
+  * representation of the <code>BigInteger</code>, with a scale of
+  * zero.
+  * The value of the <code>BigDecimal</code> is identical to the value
+  * of the <code>BigInteger</code>.
+  * The parameter must not be <code>null</code>.
+  * <p>
+  * The <code>BigDecimal</code> will contain only decimal digits,
+  * prefixed with a leading minus sign (hyphen) if the
+  * <code>BigInteger</code> is negative.  A leading zero will be
+  * present only if the <code>BigInteger</code> is zero.
+  *
+  * @param bi The <code>BigInteger</code> to be converted.
+  */
+ 
+ public BigDecimal(java.math.BigInteger bi){
+  this(bi.toString(10));
+  return;}
+ // exp remains 0
+ 
+ /**
+  * Constructs a <code>BigDecimal</code> object from a
+  * <code>BigInteger</code> and a scale.
+  * <p>
+  * Constructs a <code>BigDecimal</code> which is the exact decimal
+  * representation of the <code>BigInteger</code>, scaled by the
+  * second parameter, which may not be negative.
+  * The value of the <code>BigDecimal</code> is the
+  * <code>BigInteger</code> divided by ten to the power of the scale.
+  * The <code>BigInteger</code> parameter must not be
+  * <code>null</code>.
+  * <p>
+  * The <code>BigDecimal</code> will contain only decimal digits, (with
+  * an embedded decimal point followed by <code>scale</code> decimal
+  * digits if the scale is positive), prefixed with a leading minus
+  * sign (hyphen) if the <code>BigInteger</code> is negative.  A
+  * leading zero will be present only if the <code>BigInteger</code> is
+  * zero.
+  *
+  * @param  bi    The <code>BigInteger</code> to be converted.
+  * @param  scale The <code>int</code> specifying the scale.
+  * @throws NumberFormatException if the scale is negative.
+  */
+ 
+ public BigDecimal(java.math.BigInteger bi,int scale){
+  this(bi.toString(10));
+  if (scale<0) 
+   throw new java.lang.NumberFormatException("Negative scale:"+" "+scale);
+  exp=(int)-scale; // exponent is -scale
+  return;}
+
+ /**
+  * Constructs a <code>BigDecimal</code> object from an array of characters.
+  * <p>
+  * Constructs a <code>BigDecimal</code> as though a
+  * <code>String</code> had been constructed from the character array
+  * and the {@link #BigDecimal(java.lang.String)} constructor had then
+  * been used. The parameter must not be <code>null</code>.
+  * <p>
+  * Using this constructor is faster than using the
+  * <code>BigDecimal(String)</code> constructor if the string is
+  * already available in character array form.
+  *
+  * @param inchars The <code>char[]</code> array containing the number
+  *                to be converted.
+  * @throws NumberFormatException if the parameter is not a valid
+  *                number.
+  * @since IBM JDK 1.1.8
+  */
+ 
+ public BigDecimal(char inchars[]){
+  this(inchars,0,inchars.length);
+  return;}
+
+ /**
+  * Constructs a <code>BigDecimal</code> object from an array of characters.
+  * <p>
+  * Constructs a <code>BigDecimal</code> as though a
+  * <code>String</code> had been constructed from the character array
+  * (or a subarray of that array) and the
+  * {@link #BigDecimal(java.lang.String)} constructor had then been
+  * used. The first parameter must not be <code>null</code>, and the
+  * subarray must be wholly contained within it.
+  * <p>
+  * Using this constructor is faster than using the
+  * <code>BigDecimal(String)</code> constructor if the string is
+  * already available within a character array.
+  *
+  * @param inchars The <code>char[]</code> array containing the number
+  *                to be converted.
+  * @param offset  The <code>int</code> offset into the array of the
+  *                start of the number to be converted.
+  * @param length  The <code>int</code> length of the number.
+  * @throws NumberFormatException if the parameter is not a valid
+  *                number for any reason.
+  * @since IBM JDK 1.1.8
+  */
+ 
+ public BigDecimal(char inchars[],int offset,int length){super();
+  boolean exotic;
+  boolean hadexp;
+  int d;
+  int dotoff;
+  int last;
+  int i=0;
+  char si=0;
+  boolean eneg=false;
+  int k=0;
+  int elen=0;
+  int j=0;
+  char sj=0;
+  int dvalue=0;
+  int mag=0;
+  // This is the primary constructor; all incoming strings end up
+  // here; it uses explicit (inline) parsing for speed and to avoid
+  // generating intermediate (temporary) objects of any kind.
+  // 1998.06.25: exponent form built only if E/e in string
+  // 1998.06.25: trailing zeros not removed for zero
+  // 1999.03.06: no embedded blanks; allow offset and length
+  if (length<=0) 
+   bad(inchars); // bad conversion (empty string)
+  // [bad offset will raise array bounds exception]
+  
+  /* Handle and step past sign */
+  ind=ispos; // assume positive
+  if (inchars[0]==('-')) 
+   {
+    length--;
+    if (length==0) 
+     bad(inchars); // nothing after sign
+    ind=isneg;
+    offset++;
+   }
+  else 
+   if (inchars[0]==('+')) 
+    {
+     length--;
+     if (length==0) 
+      bad(inchars); // nothing after sign
+     offset++;
+    }
+  
+  /* We're at the start of the number */
+  exotic=false; // have extra digits
+  hadexp=false; // had explicit exponent
+  d=0; // count of digits found
+  dotoff=-1; // offset where dot was found
+  last=-1; // last character of mantissa
+  {int $1=length;i=offset;i:for(;$1>0;$1--,i++){
+   si=inchars[i];
+   if (si>='0')  // test for Arabic digit
+    if (si<='9') 
+     {
+      last=i;
+      d++; // still in mantissa
+      continue i;
+     }
+   if (si=='.') 
+    { // record and ignore
+     if (dotoff>=0) 
+      bad(inchars); // two dots
+     dotoff=i-offset; // offset into mantissa
+     continue i;
+    }
+   if (si!='e') 
+    if (si!='E') 
+     { // expect an extra digit
+      if ((!(java.lang.Character.isDigit(si)))) 
+       bad(inchars); // not a number
+      // defer the base 10 check until later to avoid extra method call
+      exotic=true; // will need conversion later
+      last=i;
+      d++; // still in mantissa
+      continue i;
+     }
+   /* Found 'e' or 'E' -- now process explicit exponent */
+   // 1998.07.11: sign no longer required
+   if ((i-offset)>(length-2)) 
+    bad(inchars); // no room for even one digit
+   eneg=false;
+   if ((inchars[i+1])==('-')) 
+    {
+     eneg=true;
+     k=i+2;
+    }
+   else 
+    if ((inchars[i+1])==('+')) 
+     k=i+2;
+    else 
+     k=i+1;
+   // k is offset of first expected digit
+   elen=length-((k-offset)); // possible number of digits
+   if ((elen==0)|(elen>9)) 
+    bad(inchars); // 0 or more than 9 digits
+   {int $2=elen;j=k;j:for(;$2>0;$2--,j++){
+    sj=inchars[j];
+    if (sj<'0') 
+     bad(inchars); // always bad
+    if (sj>'9') 
+     { // maybe an exotic digit
+      if ((!(java.lang.Character.isDigit(sj)))) 
+       bad(inchars); // not a number
+      dvalue=java.lang.Character.digit(sj,10); // check base
+      if (dvalue<0) 
+       bad(inchars); // not base 10
+     }
+    else 
+     dvalue=((int)(sj))-((int)('0'));
+    exp=(exp*10)+dvalue;
+    }
+   }/*j*/
+   if (eneg) 
+    exp=(int)-exp; // was negative
+   hadexp=true; // remember we had one
+   break i; // we are done
+   }
+  }/*i*/
+  
+  /* Here when all inspected */
+  if (d==0) 
+   bad(inchars); // no mantissa digits
+  if (dotoff>=0) 
+   exp=(exp+dotoff)-d; // adjust exponent if had dot
+  
+  /* strip leading zeros/dot (leave final if all 0's) */
+  {int $3=last-1;i=offset;i:for(;i<=$3;i++){
+   si=inchars[i];
+   if (si=='0') 
+    {
+     offset++;
+     dotoff--;
+     d--;
+    }
+   else 
+    if (si=='.') 
+     {
+      offset++; // step past dot
+      dotoff--;
+     }
+    else 
+     if (si<='9') 
+      break i;/* non-0 */
+     else 
+      {/* exotic */
+       if ((java.lang.Character.digit(si,10))!=0) 
+        break i; // non-0 or bad
+       // is 0 .. strip like '0'
+       offset++;
+       dotoff--;
+       d--;
+      }
+   }
+  }/*i*/
+  
+  /* Create the mantissa array */
+  mant=new byte[d]; // we know the length
+  j=offset; // input offset
+  if (exotic) 
+   {exotica:do{ // slow: check for exotica
+    {int $4=d;i=0;i:for(;$4>0;$4--,i++){
+     if (i==dotoff) 
+      j++; // at dot
+     sj=inchars[j];
+     if (sj<='9') 
+      mant[i]=(byte)(((int)(sj))-((int)('0')));/* easy */
+     else 
+      {
+       dvalue=java.lang.Character.digit(sj,10);
+       if (dvalue<0) 
+        bad(inchars); // not a number after all
+       mant[i]=(byte)dvalue;
+      }
+     j++;
+     }
+    }/*i*/
+   }while(false);}/*exotica*/
+  else 
+   {simple:do{
+    {int $5=d;i=0;i:for(;$5>0;$5--,i++){
+     if (i==dotoff) 
+      j++;
+     mant[i]=(byte)(((int)(inchars[j]))-((int)('0')));
+     j++;
+     }
+    }/*i*/
+   }while(false);}/*simple*/
+  
+  /* Looks good.  Set the sign indicator and form, as needed. */
+  // Trailing zeros are preserved
+  // The rule here for form is:
+  //   If no E-notation, then request plain notation
+  //   Otherwise act as though add(0,DEFAULT) and request scientific notation
+  // [form is already PLAIN]
+  if (mant[0]==0) 
+   {
+    ind=iszero; // force to show zero
+    // negative exponent is significant (e.g., -3 for 0.000) if plain
+    if (exp>0) 
+     exp=0; // positive exponent can be ignored
+    if (hadexp) 
+     { // zero becomes single digit from add
+      mant=ZERO.mant;
+      exp=0;
+     }
+   }
+  else 
+   { // non-zero
+    // [ind was set earlier]
+    // now determine form
+    if (hadexp) 
+     {
+      form=(byte)com.ibm.icu.math.MathContext.SCIENTIFIC;
+      // 1999.06.29 check for overflow
+      mag=(exp+mant.length)-1; // true exponent in scientific notation
+      if ((mag<MinExp)|(mag>MaxExp)) 
+       bad(inchars);
+     }
+   }
+  // say 'BD(c[]): mant[0] mantlen exp ind form:' mant[0] mant.length exp ind form
+  return;
+  }
+
+ /**
+  * Constructs a <code>BigDecimal</code> object directly from a
+  * <code>double</code>.
+  * <p>
+  * Constructs a <code>BigDecimal</code> which is the exact decimal
+  * representation of the 64-bit signed binary floating point
+  * parameter.
+  * <p>
+  * Note that this constructor it an exact conversion; it does not give
+  * the same result as converting <code>num</code> to a
+  * <code>String</code> using the <code>Double.toString()</code> method
+  * and then using the {@link #BigDecimal(java.lang.String)}
+  * constructor.
+  * To get that result, use the static {@link #valueOf(double)}
+  * method to construct a <code>BigDecimal</code> from a
+  * <code>double</code>.
+  *
+  * @param num The <code>double</code> to be converted.
+  * @throws NumberFormatException if the parameter is infinite or
+  *            not a number.
+  */
+ 
+ public BigDecimal(double num){
+  // 1999.03.06: use exactly the old algorithm
+  // 2000.01.01: note that this constructor does give an exact result,
+  //             so perhaps it should not be deprecated
+  // 2000.06.18: no longer deprecated
+  this((new java.math.BigDecimal(num)).toString());
+  return;}
+
+ /**
+  * Constructs a <code>BigDecimal</code> object directly from a
+  * <code>int</code>.
+  * <p>
+  * Constructs a <code>BigDecimal</code> which is the exact decimal
+  * representation of the 32-bit signed binary integer parameter.
+  * The <code>BigDecimal</code> will contain only decimal digits,
+  * prefixed with a leading minus sign (hyphen) if the parameter is
+  * negative.
+  * A leading zero will be present only if the parameter is zero.
+  *
+  * @param num The <code>int</code> to be converted.
+  * @since IBM JDK 1.1.8
+  */
+ 
+ public BigDecimal(int num){super();
+  int mun;
+  int i=0;
+  // We fastpath commoners
+  if (num<=9) 
+   if (num>=(-9)) 
+    {singledigit:do{
+     // very common single digit case
+     {/*select*/
+     if (num==0)
+      {
+       mant=ZERO.mant;
+       ind=iszero;
+      }
+     else if (num==1)
+      {
+       mant=ONE.mant;
+       ind=ispos;
+      }
+     else if (num==(-1))
+      {
+       mant=ONE.mant;
+       ind=isneg;
+      }
+     else{
+      {
+       mant=new byte[1];
+       if (num>0) 
+        {
+         mant[0]=(byte)num;
+         ind=ispos;
+        }
+       else 
+        { // num<-1
+         mant[0]=(byte)((int)-num);
+         ind=isneg;
+        }
+      }
+     }
+     }
+     return;
+    }while(false);}/*singledigit*/
+  
+  /* We work on negative numbers so we handle the most negative number */
+  if (num>0) 
+   {
+    ind=ispos;
+    num=(int)-num;
+   }
+  else 
+   ind=isneg;/* negative */ // [0 case already handled]
+  // [it is quicker, here, to pre-calculate the length with
+  // one loop, then allocate exactly the right length of byte array,
+  // then re-fill it with another loop]
+  mun=num; // working copy
+  {i=9;i:for(;;i--){
+   mun=mun/10;
+   if (mun==0) 
+    break i;
+   }
+  }/*i*/
+  // i is the position of the leftmost digit placed
+  mant=new byte[10-i];
+  {i=(10-i)-1;i:for(;;i--){
+   mant[i]=(byte)-(((byte)(num%10)));
+   num=num/10;
+   if (num==0) 
+    break i;
+   }
+  }/*i*/
+  return;
+  }
+
+ /**
+  * Constructs a <code>BigDecimal</code> object directly from a
+  * <code>long</code>.
+  * <p>
+  * Constructs a <code>BigDecimal</code> which is the exact decimal
+  * representation of the 64-bit signed binary integer parameter.
+  * The <code>BigDecimal</code> will contain only decimal digits,
+  * prefixed with a leading minus sign (hyphen) if the parameter is
+  * negative.
+  * A leading zero will be present only if the parameter is zero.
+  *
+  * @param num The <code>long</code> to be converted.
+  * @since IBM JDK 1.1.8
+  */
+ 
+ public BigDecimal(long num){super();
+  long mun;
+  int i=0;
+  // Not really worth fastpathing commoners in this constructor [also,
+  // we use this to construct the static constants].
+  // This is much faster than: this(String.valueOf(num).toCharArray())
+  /* We work on negative num so we handle the most negative number */
+  if (num>0) 
+   {
+    ind=ispos;
+    num=(long)-num;
+   }
+  else 
+   if (num==0) 
+    ind=iszero;
+   else 
+    ind=isneg;/* negative */
+  mun=num;
+  {i=18;i:for(;;i--){
+   mun=mun/10;
+   if (mun==0) 
+    break i;
+   }
+  }/*i*/
+  // i is the position of the leftmost digit placed
+  mant=new byte[19-i];
+  {i=(19-i)-1;i:for(;;i--){
+   mant[i]=(byte)-(((byte)(num%10)));
+   num=num/10;
+   if (num==0) 
+    break i;
+   }
+  }/*i*/
+  return;
+  }
+
+ /**
+  * Constructs a <code>BigDecimal</code> object from a <code>String</code>.
+  * <p>
+  * Constructs a <code>BigDecimal</code> from the parameter, which must
+  * not be <code>null</code> and must represent a valid <i>number</i>,
+  * as described formally in the documentation referred to
+  * {@link BigDecimal above}.
+  * <p>
+  * In summary, numbers in <code>String</code> form must have at least
+  * one digit, may have a leading sign, may have a decimal point, and
+  * exponential notation may be used.  They follow conventional syntax,
+  * and may not contain blanks.
+  * <p>
+  * Some valid strings from which a <code>BigDecimal</code> might
+  * be constructed are:
+  * <pre>
+  *       "0"         -- Zero
+  *      "12"         -- A whole number
+  *     "-76"         -- A signed whole number
+  *      "12.70"      -- Some decimal places
+  *     "+0.003"      -- Plus sign is allowed
+  *      "17."        -- The same as 17
+  *        ".5"       -- The same as 0.5
+  *      "4E+9"       -- Exponential notation
+  *       "0.73e-7"   -- Exponential notation
+  * </pre>
+  * <p>
+  * (Exponential notation means that the number includes an optional
+  * sign and a power of ten following an '</code>E</code>' that
+  * indicates how the decimal point will be shifted.  Thus the
+  * <code>"4E+9"</code> above is just a short way of writing
+  * <code>4000000000</code>, and the <code>"0.73e-7"</code> is short
+  * for <code>0.000000073</code>.)
+  * <p>
+  * The <code>BigDecimal</code> constructed from the String is in a
+  * standard form, with no blanks, as though the
+  * {@link #add(BigDecimal)} method had been used to add zero to the
+  * number with unlimited precision.
+  * If the string uses exponential notation (that is, includes an
+  * <code>e</code> or an <code>E</code>), then the
+  * <code>BigDecimal</code> number will be expressed in scientific
+  * notation (where the power of ten is adjusted so there is a single
+  * non-zero digit to the left of the decimal point); in this case if
+  * the number is zero then it will be expressed as the single digit 0,
+  * and if non-zero it will have an exponent unless that exponent would
+  * be 0.  The exponent must fit in nine digits both before and after it
+  * is expressed in scientific notation.
+  * <p>
+  * Any digits in the parameter must be decimal; that is,
+  * <code>Character.digit(c, 10)</code> (where </code>c</code> is the
+  * character in question) would not return -1.
+  *
+  * @param string The <code>String</code> to be converted.
+  * @throws NumberFormatException if the parameter is not a valid
+  * number.
+  */
+ 
+ public BigDecimal(java.lang.String string){
+  this(string.toCharArray(),0,string.length());
+  return;}
+
+ /* <sgml> Make a default BigDecimal object for local use. </sgml> */
+ 
+ private BigDecimal(){super();
+  return;
+  }
+
+ /* ---------------------------------------------------------------- */
+ /* Operator methods [methods which take a context parameter]        */
+ /* ---------------------------------------------------------------- */
+ 
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is the absolute
+  * value of this <code>BigDecimal</code>.
+  * <p>
+  * The same as {@link #abs(MathContext)}, where the context is
+  * <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will
+  * be <code>this.scale()</code>
+  *
+  * @return A <code>BigDecimal</code> whose value is the absolute
+  *         value of this <code>BigDecimal</code>.
+  */
+ 
+ public com.ibm.icu.math.BigDecimal abs(){
+  return this.abs(plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is the absolute value
+  * of this <code>BigDecimal</code>.
+  * <p>
+  * If the current object is zero or positive, then the same result as
+  * invoking the {@link #plus(MathContext)} method with the same
+  * parameter is returned.
+  * Otherwise, the same result as invoking the
+  * {@link #negate(MathContext)} method with the same parameter is
+  * returned.
+  *
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is the absolute
+  *             value of this <code>BigDecimal</code>.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public com.ibm.icu.math.BigDecimal abs(com.ibm.icu.math.MathContext set){
+  if (this.ind==isneg) 
+   return this.negate(set);
+  return this.plus(set);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this+rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #add(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * the maximum of the scales of the two operands.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the addition.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this+rhs</code>, using fixed point arithmetic.
+  */
+ 
+ public com.ibm.icu.math.BigDecimal add(com.ibm.icu.math.BigDecimal rhs){
+  return this.add(rhs,plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>this+rhs</code>.
+  * <p>
+  * Implements the addition (<b><code>+</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the addition.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this+rhs</code>.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public com.ibm.icu.math.BigDecimal add(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  com.ibm.icu.math.BigDecimal lhs;
+  int reqdig;
+  com.ibm.icu.math.BigDecimal res;
+  byte usel[];
+  int usellen;
+  byte user[];
+  int userlen;
+  int newlen=0;
+  int tlen=0;
+  int mult=0;
+  byte t[]=null;
+  int ia=0;
+  int ib=0;
+  int ea=0;
+  int eb=0;
+  byte ca=0;
+  byte cb=0;
+  /* determine requested digits and form */
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  lhs=this; // name for clarity and proxy
+  
+  /* Quick exit for add floating 0 */
+  // plus() will optimize to return same object if possible
+  if (lhs.ind==0) 
+   if (set.form!=com.ibm.icu.math.MathContext.PLAIN) 
+    return rhs.plus(set);
+  if (rhs.ind==0) 
+   if (set.form!=com.ibm.icu.math.MathContext.PLAIN) 
+    return lhs.plus(set);
+  
+  /* Prepare numbers (round, unless unlimited precision) */
+  reqdig=set.digits; // local copy (heavily used)
+  if (reqdig>0) 
+   {
+    if (lhs.mant.length>reqdig) 
+     lhs=clone(lhs).round(set);
+    if (rhs.mant.length>reqdig) 
+     rhs=clone(rhs).round(set);
+   // [we could reuse the new LHS for result in this case]
+   }
+  
+  res=new com.ibm.icu.math.BigDecimal(); // build result here
+  
+  /* Now see how much we have to pad or truncate lhs or rhs in order
+     to align the numbers.  If one number is much larger than the
+     other, then the smaller cannot affect the answer [but we may
+     still need to pad with up to DIGITS trailing zeros]. */
+  // Note sign may be 0 if digits (reqdig) is 0
+  // usel and user will be the byte arrays passed to the adder; we'll
+  // use them on all paths except quick exits
+  usel=lhs.mant;
+  usellen=lhs.mant.length;
+  user=rhs.mant;
+  userlen=rhs.mant.length;
+  {padder:do{/*select*/
+  if (lhs.exp==rhs.exp)
+   {/* no padding needed */
+    // This is the most common, and fastest, path
+    res.exp=lhs.exp;
+   }
+  else if (lhs.exp>rhs.exp)
+   { // need to pad lhs and/or truncate rhs
+    newlen=(usellen+lhs.exp)-rhs.exp;
+    /* If, after pad, lhs would be longer than rhs by digits+1 or
+       more (and digits>0) then rhs cannot affect answer, so we only
+       need to pad up to a length of DIGITS+1. */
+    if (newlen>=((userlen+reqdig)+1)) 
+     if (reqdig>0) 
+      {
+       // LHS is sufficient
+       res.mant=usel;
+       res.exp=lhs.exp;
+       res.ind=lhs.ind;
+       if (usellen<reqdig) 
+        { // need 0 padding
+         res.mant=extend(lhs.mant,reqdig);
+         res.exp=res.exp-((reqdig-usellen));
+        }
+       return res.finish(set,false);
+      }
+    // RHS may affect result
+    res.exp=rhs.exp; // expected final exponent
+    if (newlen>(reqdig+1)) 
+     if (reqdig>0) 
+      {
+       // LHS will be max; RHS truncated
+       tlen=(newlen-reqdig)-1; // truncation length
+       userlen=userlen-tlen;
+       res.exp=res.exp+tlen;
+       newlen=reqdig+1;
+      }
+    if (newlen>usellen) 
+     usellen=newlen; // need to pad LHS
+   }
+  else{ // need to pad rhs and/or truncate lhs
+   newlen=(userlen+rhs.exp)-lhs.exp;
+   if (newlen>=((usellen+reqdig)+1)) 
+    if (reqdig>0) 
+     {
+      // RHS is sufficient
+      res.mant=user;
+      res.exp=rhs.exp;
+      res.ind=rhs.ind;
+      if (userlen<reqdig) 
+       { // need 0 padding
+        res.mant=extend(rhs.mant,reqdig);
+        res.exp=res.exp-((reqdig-userlen));
+       }
+      return res.finish(set,false);
+     }
+   // LHS may affect result
+   res.exp=lhs.exp; // expected final exponent
+   if (newlen>(reqdig+1)) 
+    if (reqdig>0) 
+     {
+      // RHS will be max; LHS truncated
+      tlen=(newlen-reqdig)-1; // truncation length
+      usellen=usellen-tlen;
+      res.exp=res.exp+tlen;
+      newlen=reqdig+1;
+     }
+   if (newlen>userlen) 
+    userlen=newlen; // need to pad RHS
+  }
+  }while(false);}/*padder*/
+  
+  /* OK, we have aligned mantissas.  Now add or subtract. */
+  // 1998.06.27 Sign may now be 0 [e.g., 0.000] .. treat as positive
+  // 1999.05.27 Allow for 00 on lhs [is not larger than 2 on rhs]
+  // 1999.07.10 Allow for 00 on rhs [is not larger than 2 on rhs]
+  if (lhs.ind==iszero) 
+   res.ind=ispos;
+  else 
+   res.ind=lhs.ind; // likely sign, all paths
+  if (((lhs.ind==isneg)?1:0)==((rhs.ind==isneg)?1:0))  // same sign, 0 non-negative
+   mult=1;
+  else 
+   {signdiff:do{ // different signs, so subtraction is needed
+    mult=-1; // will cause subtract
+    /* Before we can subtract we must determine which is the larger,
+       as our add/subtract routine only handles non-negative results
+       so we may need to swap the operands. */
+    {swaptest:do{/*select*/
+    if (rhs.ind==iszero)
+     ; // original A bigger
+    else if ((usellen<userlen)|(lhs.ind==iszero))
+     { // original B bigger
+      t=usel;
+      usel=user;
+      user=t; // swap
+      tlen=usellen;
+      usellen=userlen;
+      userlen=tlen; // ..
+      res.ind=(byte)-res.ind; // and set sign
+     }
+    else if (usellen>userlen)
+     ; // original A bigger
+    else{
+     {/* logical lengths the same */ // need compare
+      /* may still need to swap: compare the strings */
+      ia=0;
+      ib=0;
+      ea=usel.length-1;
+      eb=user.length-1;
+      {compare:for(;;){
+       if (ia<=ea) 
+        ca=usel[ia];
+       else 
+        {
+         if (ib>eb) 
+          {/* identical */
+           if (set.form!=com.ibm.icu.math.MathContext.PLAIN) 
+            return ZERO;
+           // [if PLAIN we must do the subtract, in case of 0.000 results]
+           break compare;
+          }
+         ca=(byte)0;
+        }
+       if (ib<=eb) 
+        cb=user[ib];
+       else 
+        cb=(byte)0;
+       if (ca!=cb) 
+        {
+         if (ca<cb) 
+          {/* swap needed */
+           t=usel;
+           usel=user;
+           user=t; // swap
+           tlen=usellen;
+           usellen=userlen;
+           userlen=tlen; // ..
+           res.ind=(byte)-res.ind;
+          }
+         break compare;
+        }
+       /* mantissas the same, so far */
+       ia++;
+       ib++;
+       }
+      }/*compare*/
+     } // lengths the same
+    }
+    }while(false);}/*swaptest*/
+   }while(false);}/*signdiff*/
+  
+  /* here, A is > B if subtracting */
+  // add [A+B*1] or subtract [A+(B*-1)]
+  res.mant=byteaddsub(usel,usellen,user,userlen,mult,false);
+  // [reuse possible only after chop; accounting makes not worthwhile]
+  
+  // Finish() rounds before stripping leading 0's, then sets form, etc.
+  return res.finish(set,false);
+  }
+
+ /**
+  * Compares this <code>BigDecimal</code> to another, using unlimited
+  * precision.
+  * <p>
+  * The same as {@link #compareTo(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @return     An <code>int</code> whose value is -1, 0, or 1 as
+  *             <code>this</code> is numerically less than, equal to,
+  *             or greater than <code>rhs</code>.
+  * @see    #compareTo(Object)
+  */
+ 
+ public int compareTo(com.ibm.icu.math.BigDecimal rhs){
+  return this.compareTo(rhs,plainMC);
+  }
+
+ /**
+  * Compares this <code>BigDecimal</code> to another.
+  * <p>
+  * Implements numeric comparison,
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns a result of type <code>int</code>.
+  * <p>
+  * The result will be:
+  * <table cellpadding=2><tr>
+  * <td align=right><b>-1</b></td>
+  * <td>if the current object is less than the first parameter</td>
+  * </tr><tr>
+  * <td align=right><b>0</b></td>
+  * <td>if the current object is equal to the first parameter</td>
+  * </tr><tr>
+  * <td align=right><b>1</b></td>
+  * <td>if the current object is greater than the first parameter.</td>
+  * </tr></table>
+  * <p>
+  * A {@link #compareTo(Object)} method is also provided.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     An <code>int</code> whose value is -1, 0, or 1 as
+  *             <code>this</code> is numerically less than, equal to,
+  *             or greater than <code>rhs</code>.
+  * @see    #compareTo(Object)
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public int compareTo(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  int thislength=0;
+  int i=0;
+  com.ibm.icu.math.BigDecimal newrhs;
+  // rhs=null will raise NullPointerException, as per Comparable interface
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  // [add will recheck in slowpath cases .. but would report -rhs]
+  if ((this.ind==rhs.ind)&(this.exp==rhs.exp)) 
+   {
+    /* sign & exponent the same [very common] */
+    thislength=this.mant.length;
+    if (thislength<rhs.mant.length) 
+     return (byte)-this.ind;
+    if (thislength>rhs.mant.length) 
+     return this.ind;
+    /* lengths are the same; we can do a straight mantissa compare
+       unless maybe rounding [rounding is very unusual] */
+    if ((thislength<=set.digits)|(set.digits==0)) 
+     {
+      {int $6=thislength;i=0;i:for(;$6>0;$6--,i++){
+       if (this.mant[i]<rhs.mant[i]) 
+        return (byte)-this.ind;
+       if (this.mant[i]>rhs.mant[i]) 
+        return this.ind;
+       }
+      }/*i*/
+      return 0; // identical
+     }
+   /* drop through for full comparison */
+   }
+  else 
+   {
+    /* More fastpaths possible */
+    if (this.ind<rhs.ind) 
+     return -1;
+    if (this.ind>rhs.ind) 
+     return 1;
+   }
+  /* carry out a subtract to make the comparison */
+  newrhs=clone(rhs); // safe copy
+  newrhs.ind=(byte)-newrhs.ind; // prepare to subtract
+  return this.add(newrhs,set).ind; // add, and return sign of result
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this/rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #divide(BigDecimal, int)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the rounding mode is {@link MathContext#ROUND_HALF_UP}.
+  *
+  * The length of the decimal part (the scale) of the result will be
+  * the same as the scale of the current object, if the latter were
+  * formatted without exponential notation.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the division.
+  * @return     A plain <code>BigDecimal</code> whose value is
+  *             <code>this/rhs</code>, using fixed point arithmetic.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs){
+  return this.dodivide('D',rhs,plainMC,-1);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this/rhs</code>, using fixed point arithmetic and a
+  * rounding mode.
+  * <p>
+  * The same as {@link #divide(BigDecimal, int, int)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the second parameter is <code>this.scale()</code>, and
+  * the third is <code>round</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will
+  * therefore be the same as the scale of the current object, if the
+  * latter were formatted without exponential notation.
+  * <p>
+  * @param  rhs   The <code>BigDecimal</code> for the right hand side of
+  *               the division.
+  * @param  round The <code>int</code> rounding mode to be used for
+  *               the division (see the {@link MathContext} class).
+  * @return       A plain <code>BigDecimal</code> whose value is
+  *               <code>this/rhs</code>, using fixed point arithmetic
+  *               and the specified rounding mode.
+  * @throws IllegalArgumentException if <code>round</code> is not a
+  *               valid rounding mode.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @throws ArithmeticException if <code>round</code> is {@link
+  *               MathContext#ROUND_UNNECESSARY} and
+  *               <code>this.scale()</code> is insufficient to
+  *               represent the result exactly.
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,int round){
+  com.ibm.icu.math.MathContext set;
+  set=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,round); // [checks round, too]
+  return this.dodivide('D',rhs,set,-1); // take scale from LHS
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this/rhs</code>, using fixed point arithmetic and a
+  * given scale and rounding mode.
+  * <p>
+  * The same as {@link #divide(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * <code>new MathContext(0, MathContext.PLAIN, false, round)</code>,
+  * except that the length of the decimal part (the scale) to be used
+  * for the result is explicit rather than being taken from
+  * <code>this</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * the same as the scale of the current object, if the latter were
+  * formatted without exponential notation.
+  * <p>
+  * @param  rhs   The <code>BigDecimal</code> for the right hand side of
+  *               the division.
+  * @param  scale The <code>int</code> scale to be used for the result.
+  * @param  round The <code>int</code> rounding mode to be used for
+  *               the division (see the {@link MathContext} class).
+  * @return       A plain <code>BigDecimal</code> whose value is
+  *               <code>this/rhs</code>, using fixed point arithmetic
+  *               and the specified rounding mode.
+  * @throws IllegalArgumentException if <code>round</code> is not a
+  *               valid rounding mode.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @throws ArithmeticException if <code>scale</code> is negative.
+  * @throws ArithmeticException if <code>round</code> is {@link
+  *               MathContext#ROUND_UNNECESSARY} and <code>scale</code>
+  *               is insufficient to represent the result exactly.
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,int scale,int round){
+  com.ibm.icu.math.MathContext set;
+  if (scale<0) 
+   throw new java.lang.ArithmeticException("Negative scale:"+" "+scale);
+  set=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,round); // [checks round]
+  return this.dodivide('D',rhs,set,scale);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>this/rhs</code>.
+  * <p>
+  * Implements the division (<b><code>/</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the division.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this/rhs</code>.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  return this.dodivide('D',rhs,set,-1);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is the integer
+  * part of <code>this/rhs</code>.
+  * <p>
+  * The same as {@link #divideInteger(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the integer division.
+  * @return     A <code>BigDecimal</code> whose value is the integer
+  *             part of <code>this/rhs</code>.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divideInteger(com.ibm.icu.math.BigDecimal rhs){
+  // scale 0 to drop .000 when plain
+  return this.dodivide('I',rhs,plainMC,0);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is the integer
+  * part of <code>this/rhs</code>.
+  * <p>
+  * Implements the integer division operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the integer division.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is the integer
+  *             part of <code>this/rhs</code>.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @throws ArithmeticException if the result will not fit in the
+  *             number of digits specified for the context.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divideInteger(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  // scale 0 to drop .000 when plain
+  return this.dodivide('I',rhs,set,0);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * the maximum of <code>this</code> and <code>rhs</code>.
+  * <p>
+  * The same as {@link #max(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             the maximum of <code>this</code> and <code>rhs</code>.
+  */
+ 
+ public com.ibm.icu.math.BigDecimal max(com.ibm.icu.math.BigDecimal rhs){
+  return this.max(rhs,plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is
+  * the maximum of <code>this</code> and <code>rhs</code>.
+  * <p>
+  * Returns the larger of the current object and the first parameter.
+  * <p>
+  * If calling the {@link #compareTo(BigDecimal, MathContext)} method
+  * with the same parameters would return <code>1</code> or
+  * <code>0</code>, then the result of calling the
+  * {@link #plus(MathContext)} method on the current object (using the
+  * same <code>MathContext</code> parameter) is returned.
+  * Otherwise, the result of calling the {@link #plus(MathContext)}
+  * method on the first parameter object (using the same
+  * <code>MathContext</code> parameter) is returned.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             the maximum of <code>this</code> and <code>rhs</code>.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public com.ibm.icu.math.BigDecimal max(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  if ((this.compareTo(rhs,set))>=0) 
+   return this.plus(set);
+  else 
+   return rhs.plus(set);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * the minimum of <code>this</code> and <code>rhs</code>.
+  * <p>
+  * The same as {@link #min(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             the minimum of <code>this</code> and <code>rhs</code>.
+  */
+ 
+ public com.ibm.icu.math.BigDecimal min(com.ibm.icu.math.BigDecimal rhs){
+  return this.min(rhs,plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is
+  * the minimum of <code>this</code> and <code>rhs</code>.
+  * <p>
+  * Returns the smaller of the current object and the first parameter.
+  * <p>
+  * If calling the {@link #compareTo(BigDecimal, MathContext)} method
+  * with the same parameters would return <code>-1</code> or
+  * <code>0</code>, then the result of calling the
+  * {@link #plus(MathContext)} method on the current object (using the
+  * same <code>MathContext</code> parameter) is returned.
+  * Otherwise, the result of calling the {@link #plus(MathContext)}
+  * method on the first parameter object (using the same
+  * <code>MathContext</code> parameter) is returned.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             the minimum of <code>this</code> and <code>rhs</code>.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public com.ibm.icu.math.BigDecimal min(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  if ((this.compareTo(rhs,set))<=0) 
+   return this.plus(set);
+  else 
+   return rhs.plus(set);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this*rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #add(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * the sum of the scales of the operands, if they were formatted
+  * without exponential notation.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the multiplication.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this*rhs</code>, using fixed point arithmetic.
+  */
+ 
+ public com.ibm.icu.math.BigDecimal multiply(com.ibm.icu.math.BigDecimal rhs){
+  return this.multiply(rhs,plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>this*rhs</code>.
+  * <p>
+  * Implements the multiplication (<b><code>*</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the multiplication.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this*rhs</code>.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public com.ibm.icu.math.BigDecimal multiply(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  com.ibm.icu.math.BigDecimal lhs;
+  int padding;
+  int reqdig;
+  byte multer[]=null;
+  byte multand[]=null;
+  int multandlen;
+  int acclen=0;
+  com.ibm.icu.math.BigDecimal res;
+  byte acc[];
+  int n=0;
+  byte mult=0;
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  lhs=this; // name for clarity and proxy
+  
+  /* Prepare numbers (truncate, unless unlimited precision) */
+  padding=0; // trailing 0's to add
+  reqdig=set.digits; // local copy
+  if (reqdig>0) 
+   {
+    if (lhs.mant.length>reqdig) 
+     lhs=clone(lhs).round(set);
+    if (rhs.mant.length>reqdig) 
+     rhs=clone(rhs).round(set);
+   // [we could reuse the new LHS for result in this case]
+   }
+  else 
+   {/* unlimited */
+    // fixed point arithmetic will want every trailing 0; we add these
+    // after the calculation rather than before, for speed.
+    if (lhs.exp>0) 
+     padding=padding+lhs.exp;
+    if (rhs.exp>0) 
+     padding=padding+rhs.exp;
+   }
+  
+  // For best speed, as in DMSRCN, we use the shorter number as the
+  // multiplier and the longer as the multiplicand.
+  // 1999.12.22: We used to special case when the result would fit in
+  //             a long, but with Java 1.3 this gave no advantage.
+  if (lhs.mant.length<rhs.mant.length) 
+   {
+    multer=lhs.mant;
+    multand=rhs.mant;
+   }
+  else 
+   {
+    multer=rhs.mant;
+    multand=lhs.mant;
+   }
+  
+  /* Calculate how long result byte array will be */
+  multandlen=(multer.length+multand.length)-1; // effective length
+  // optimize for 75% of the cases where a carry is expected...
+  if ((multer[0]*multand[0])>9) 
+   acclen=multandlen+1;
+  else 
+   acclen=multandlen;
+  
+  /* Now the main long multiplication loop */
+  res=new com.ibm.icu.math.BigDecimal(); // where we'll build result
+  acc=new byte[acclen]; // accumulator, all zeros
+  // 1998.07.01: calculate from left to right so that accumulator goes
+  // to likely final length on first addition; this avoids a one-digit
+  // extension (and object allocation) each time around the loop.
+  // Initial number therefore has virtual zeros added to right.
+  {int $7=multer.length;n=0;n:for(;$7>0;$7--,n++){
+   mult=multer[n];
+   if (mult!=0) 
+    { // [optimization]
+     // accumulate [accumulator is reusable array]
+     acc=byteaddsub(acc,acc.length,multand,multandlen,mult,true);
+    }
+   // divide multiplicand by 10 for next digit to right
+   multandlen--; // 'virtual length'
+   }
+  }/*n*/
+  
+  res.ind=(byte)(lhs.ind*rhs.ind); // final sign
+  res.exp=(lhs.exp+rhs.exp)-padding; // final exponent
+  // [overflow is checked by finish]
+  
+  /* add trailing zeros to the result, if necessary */
+  if (padding==0) 
+   res.mant=acc;
+  else 
+   res.mant=extend(acc,acc.length+padding); // add trailing 0s
+  return res.finish(set,false);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>-this</code>.
+  * <p>
+  * The same as {@link #negate(MathContext)}, where the context is
+  * <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * be <code>this.scale()</code>
+  *
+  *
+  * @return A <code>BigDecimal</code> whose value is
+  *         <code>-this</code>.
+  */
+ 
+ public com.ibm.icu.math.BigDecimal negate(){
+  return this.negate(plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>-this</code>.
+  * <p>
+  * Implements the negation (Prefix <b><code>-</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return A <code>BigDecimal</code> whose value is
+  *         <code>-this</code>.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public com.ibm.icu.math.BigDecimal negate(com.ibm.icu.math.MathContext set){
+  com.ibm.icu.math.BigDecimal res;
+  // Originally called minus(), changed to matched Java precedents
+  // This simply clones, flips the sign, and possibly rounds
+  if (set.lostDigits) 
+   checkdigits((com.ibm.icu.math.BigDecimal)null,set.digits);
+  res=clone(this); // safe copy
+  res.ind=(byte)-res.ind;
+  return res.finish(set,false);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>+this</code>.
+  * Note that <code>this</code> is not necessarily a
+  * plain <code>BigDecimal</code>, but the result will always be.
+  * <p>
+  * The same as {@link #plus(MathContext)}, where the context is
+  * <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * be <code>this.scale()</code>
+  *
+  * @return A <code>BigDecimal</code> whose value is
+  *         <code>+this</code>.
+  */
+ 
+ public com.ibm.icu.math.BigDecimal plus(){
+  return this.plus(plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is
+  * <code>+this</code>.
+  * <p>
+  * Implements the plus (Prefix <b><code>+</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  * <p>
+  * This method is useful for rounding or otherwise applying a context
+  * to a decimal value.
+  *
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return A <code>BigDecimal</code> whose value is
+  *         <code>+this</code>.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public com.ibm.icu.math.BigDecimal plus(com.ibm.icu.math.MathContext set){
+  // This clones and forces the result to the new settings
+  // May return same object
+  if (set.lostDigits) 
+   checkdigits((com.ibm.icu.math.BigDecimal)null,set.digits);
+  // Optimization: returns same object for some common cases
+  if (set.form==com.ibm.icu.math.MathContext.PLAIN) 
+   if (this.form==com.ibm.icu.math.MathContext.PLAIN) 
+    {
+     if (this.mant.length<=set.digits) 
+      return this;
+     if (set.digits==0) 
+      return this;
+    }
+  return clone(this).finish(set,false);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this**rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #pow(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The parameter is the power to which the <code>this</code> will be
+  * raised; it must be in the range 0 through 999999999, and must
+  * have a decimal part of zero.  Note that these restrictions may be
+  * removed in the future, so they should not be used as a test for a
+  * whole number.
+  * <p>
+  * In addition, the power must not be negative, as no
+  * <code>MathContext</code> is used and so the result would then
+  * always be 0.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the operation (the power).
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this**rhs</code>, using fixed point arithmetic.
+  * @throws ArithmeticException if <code>rhs</code> is out of range or
+  *             is not a whole number.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public com.ibm.icu.math.BigDecimal pow(com.ibm.icu.math.BigDecimal rhs){
+  return this.pow(rhs,plainMC);
+  }
+ // The name for this method is inherited from the precedent set by the
+ // BigInteger and Math classes.
+ 
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>this**rhs</code>.
+  * <p>
+  * Implements the power (<b><code>**</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  * <p>
+  * The first parameter is the power to which the <code>this</code>
+  * will be raised; it must be in the range -999999999 through
+  * 999999999, and must have a decimal part of zero.  Note that these
+  * restrictions may be removed in the future, so they should not be
+  * used as a test for a whole number.
+  * <p>
+  * If the <code>digits</code> setting of the <code>MathContext</code>
+  * parameter is 0, the power must be zero or positive.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the operation (the power).
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this**rhs</code>.
+  * @throws ArithmeticException if <code>rhs</code> is out of range or
+  *             is not a whole number.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public com.ibm.icu.math.BigDecimal pow(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  int n;
+  com.ibm.icu.math.BigDecimal lhs;
+  int reqdig;
+  int workdigits=0;
+  int L=0;
+  com.ibm.icu.math.MathContext workset;
+  com.ibm.icu.math.BigDecimal res;
+  boolean seenbit;
+  int i=0;
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  n=rhs.intcheck(MinArg,MaxArg); // check RHS by the rules
+  lhs=this; // clarified name
+  
+  reqdig=set.digits; // local copy (heavily used)
+  if (reqdig==0) 
+   {
+    if (rhs.ind==isneg) 
+     throw new java.lang.ArithmeticException("Negative power:"+" "+rhs.toString());
+    workdigits=0;
+   }
+  else 
+   {/* non-0 digits */
+    if ((rhs.mant.length+rhs.exp)>reqdig) 
+     throw new java.lang.ArithmeticException("Too many digits:"+" "+rhs.toString());
+    
+    /* Round the lhs to DIGITS if need be */
+    if (lhs.mant.length>reqdig) 
+     lhs=clone(lhs).round(set);
+    
+    /* L for precision calculation [see ANSI X3.274-1996] */
+    L=rhs.mant.length+rhs.exp; // length without decimal zeros/exp
+    workdigits=(reqdig+L)+1; // calculate the working DIGITS
+   }
+  
+  /* Create a copy of set for working settings */
+  // Note: no need to check for lostDigits again.
+  // 1999.07.17 Note: this construction must follow RHS check
+  workset=new com.ibm.icu.math.MathContext(workdigits,set.form,false,set.roundingMode);
+  
+  res=ONE; // accumulator
+  if (n==0) 
+   return res; // x**0 == 1
+  if (n<0) 
+   n=(int)-n; // [rhs.ind records the sign]
+  seenbit=false; // set once we've seen a 1-bit
+  {i=1;i:for(;;i++){ // for each bit [top bit ignored]
+   n=n+n; // shift left 1 bit
+   if (n<0) 
+    { // top bit is set
+     seenbit=true; // OK, we're off
+     res=res.multiply(lhs,workset); // acc=acc*x
+    }
+   if (i==31) 
+    break i; // that was the last bit
+   if ((!seenbit)) 
+    continue i; // we don't have to square 1
+   res=res.multiply(res,workset); // acc=acc*acc [square]
+   }
+  }/*i*/ // 32 bits
+  if (rhs.ind<0)  // was a **-n [hence digits>0]
+   res=ONE.divide(res,workset); // .. so acc=1/acc
+  return res.finish(set,true); // round and strip [original digits]
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * the remainder of <code>this/rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #remainder(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * This is not the modulo operator -- the result may be negative.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the remainder operation.
+  * @return     A <code>BigDecimal</code> whose value is the remainder
+  *             of <code>this/rhs</code>, using fixed point arithmetic.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public com.ibm.icu.math.BigDecimal remainder(com.ibm.icu.math.BigDecimal rhs){
+  return this.dodivide('R',rhs,plainMC,-1);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is the remainder of
+  * <code>this/rhs</code>.
+  * <p>
+  * Implements the remainder operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  * <p>
+  * This is not the modulo operator -- the result may be negative.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the remainder operation.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is the remainder
+  *             of <code>this+rhs</code>.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @throws ArithmeticException if the integer part of the result will
+  *             not fit in the number of digits specified for the
+  *             context.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public com.ibm.icu.math.BigDecimal remainder(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  return this.dodivide('R',rhs,set,-1);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this-rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #subtract(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * the maximum of the scales of the two operands.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the subtraction.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this-rhs</code>, using fixed point arithmetic.
+  */
+ 
+ public com.ibm.icu.math.BigDecimal subtract(com.ibm.icu.math.BigDecimal rhs){
+  return this.subtract(rhs,plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>this-rhs</code>.
+  * <p>
+  * Implements the subtraction (<b><code>-</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the subtraction.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this-rhs</code>.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public com.ibm.icu.math.BigDecimal subtract(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  com.ibm.icu.math.BigDecimal newrhs;
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  // [add will recheck .. but would report -rhs]
+  /* carry out the subtraction */
+  // we could fastpath -0, but it is too rare.
+  newrhs=clone(rhs); // safe copy
+  newrhs.ind=(byte)-newrhs.ind; // prepare to subtract
+  return this.add(newrhs,set); // arithmetic
+  }
+
+ /* ---------------------------------------------------------------- */
+ /* Other methods                                                    */
+ /* ---------------------------------------------------------------- */
+ 
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>byte</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part or is
+  * out of the possible range for a <code>byte</code> (8-bit signed
+  * integer) result then an <code>ArithmeticException</code> is thrown.
+  *
+  * @return A <code>byte</code> equal in value to <code>this</code>.
+  * @throws ArithmeticException if <code>this</code> has a non-zero
+  *                 decimal part, or will not fit in a <code>byte</code>.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public byte byteValueExact(){
+  int num;
+  num=this.intValueExact(); // will check decimal part too
+  if ((num>127)|(num<(-128))) 
+   throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+  return (byte)num;
+  }
+
+ /**
+  * Compares this <code>BigDecimal</code> with the value of the parameter.
+  * <p>
+  * If the parameter is <code>null</code>, or is not an instance of the
+  * <code>BigDecimal</code> type, an exception is thrown.
+  * Otherwise, the parameter is cast to type <code>BigDecimal</code>
+  * and the result of the {@link #compareTo(BigDecimal)} method,
+  * using the cast parameter, is returned.
+  * <p>
+  * The {@link #compareTo(BigDecimal, MathContext)} method should be
+  * used when a <code>MathContext</code> is needed for the comparison.
+  *
+  * @param  rhs The <code>Object</code> for the right hand side of
+  *             the comparison.
+  * @return     An <code>int</code> whose value is -1, 0, or 1 as
+  *             <code>this</code> is numerically less than, equal to,
+  *             or greater than <code>rhs</code>.
+  * @throws ClassCastException if <code>rhs</code> cannot be cast to
+  *                 a <code>BigDecimal</code> object.
+  * @see    #compareTo(BigDecimal)
+  * @since  JDK1.2
+  */
+ 
+ public int compareTo(java.lang.Object rhsobj){
+  // the cast in the next line will raise ClassCastException if necessary
+  return compareTo((com.ibm.icu.math.BigDecimal)rhsobj,plainMC);
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>double</code>.
+  * If the <code>BigDecimal</code> is out of the possible range for a
+  * <code>double</code> (64-bit signed floating point) result then an
+  * <code>ArithmeticException</code> is thrown.
+  * <p>
+  * The double produced is identical to result of expressing the
+  * <code>BigDecimal</code> as a <code>String</code> and then
+  * converting it using the <code>Double(String)</code> constructor;
+  * this can result in values of <code>Double.NEGATIVE_INFINITY</code>
+  * or <code>Double.POSITIVE_INFINITY</code>.
+  *
+  * @return A <code>double</code> corresponding to <code>this</code>.
+  */
+ 
+ public double doubleValue(){
+  // We go via a String [as does BigDecimal in JDK 1.2]
+  // Next line could possibly raise NumberFormatException
+  return java.lang.Double.valueOf(this.toString()).doubleValue();
+  }
+
+ /**
+  * Compares this <code>BigDecimal</code> with <code>rhs</code> for
+  * equality.
+  * <p>
+  * If the parameter is <code>null</code>, or is not an instance of the
+  * BigDecimal type, or is not exactly equal to the current
+  * <code>BigDecimal</code> object, then <i>false</i> is returned.
+  * Otherwise, <i>true</i> is returned.
+  * <p>
+  * "Exactly equal", here, means that the <code>String</code>
+  * representations of the <code>BigDecimal</code> numbers are
+  * identical (they have the same characters in the same sequence).
+  * <p>
+  * The {@link #compareTo(BigDecimal, MathContext)} method should be
+  * used for more general comparisons.
+  * @param  rhs The <code>Object</code> for the right hand side of
+  *             the comparison.
+  * @return     A <code>boolean</code> whose value <i>true</i> if and
+  *             only if the operands have identical string representations.
+  * @throws ClassCastException if <code>rhs</code> cannot be cast to
+  *                 a <code>BigDecimal</code> object.
+  * @see    #compareTo(Object)
+  * @see    #compareTo(BigDecimal)
+  * @see    #compareTo(BigDecimal, MathContext)
+  */
+ 
+ public boolean equals(java.lang.Object obj){
+  com.ibm.icu.math.BigDecimal rhs;
+  int i=0;
+  char lca[]=null;
+  char rca[]=null;
+  // We are equal iff toString of both are exactly the same
+  if (obj==null) 
+   return false; // not equal
+  if ((!(((obj instanceof com.ibm.icu.math.BigDecimal))))) 
+   return false; // not a decimal
+  rhs=(com.ibm.icu.math.BigDecimal)obj; // cast; we know it will work
+  if (this.ind!=rhs.ind) 
+   return false; // different signs never match
+  if (((this.mant.length==rhs.mant.length)&(this.exp==rhs.exp))&(this.form==rhs.form)) 
+   
+   { // mantissas say all
+    // here with equal-length byte arrays to compare
+    {int $8=this.mant.length;i=0;i:for(;$8>0;$8--,i++){
+     if (this.mant[i]!=rhs.mant[i]) 
+      return false;
+     }
+    }/*i*/
+   }
+  else 
+   { // need proper layout
+    lca=this.layout(); // layout to character array
+    rca=rhs.layout();
+    if (lca.length!=rca.length) 
+     return false; // mismatch
+    // here with equal-length character arrays to compare
+    {int $9=lca.length;i=0;i:for(;$9>0;$9--,i++){
+     if (lca[i]!=rca[i]) 
+      return false;
+     }
+    }/*i*/
+   }
+  return true; // arrays have identical content
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>float</code>.
+  * If the <code>BigDecimal</code> is out of the possible range for a
+  * <code>float</code> (32-bit signed floating point) result then an
+  * <code>ArithmeticException</code> is thrown.
+  * <p>
+  * The float produced is identical to result of expressing the
+  * <code>BigDecimal</code> as a <code>String</code> and then
+  * converting it using the <code>Float(String)</code> constructor;
+  * this can result in values of <code>Float.NEGATIVE_INFINITY</code>
+  * or <code>Float.POSITIVE_INFINITY</code>.
+  *
+  * @return A <code>float</code> corresponding to <code>this</code>.
+  */
+ 
+ public float floatValue(){
+  return java.lang.Float.valueOf(this.toString()).floatValue();
+  }
+
+ /**
+  * Returns the <code>String</code> representation of this
+  * <code>BigDecimal</code>, modified by layout parameters.
+  * <p>
+  * <i>This method is provided as a primitive for use by more
+  * sophisticated classes, such as <code>DecimalFormat</code>, that
+  * can apply locale-sensitive editing of the result.  The level of
+  * formatting that it provides is a necessary part of the BigDecimal
+  * class as it is sensitive to and must follow the calculation and
+  * rounding rules for BigDecimal arithmetic.
+  * However, if the function is provided elsewhere, it may be removed
+  * from this class. </i>
+  * <p>
+  * The parameters, for both forms of the <code>format</code> method
+  * are all of type <code>int</code>.
+  * A value of -1 for any parameter indicates that the default action
+  * or value for that parameter should be used.
+  * <p>
+  * The parameters, <code>before</code> and <code>after</code>,
+  * specify the number of characters to be used for the integer part
+  * and decimal part of the result respectively.  Exponential notation
+  * is not used. If either parameter is -1 (which indicates the default
+  * action), the number of characters used will be exactly as many as
+  * are needed for that part.
+  * <p>
+  * <code>before</code> must be a positive number; if it is larger than
+  * is needed to contain the integer part, that part is padded on the
+  * left with blanks to the requested length. If <code>before</code> is
+  * not large enough to contain the integer part of the number
+  * (including the sign, for negative numbers) an exception is thrown.
+  * <p>
+  * <code>after</code> must be a non-negative number; if it is not the
+  * same size as the decimal part of the number, the number will be
+  * rounded (or extended with zeros) to fit.  Specifying 0 for
+  * <code>after</code> will cause the number to be rounded to an
+  * integer (that is, it will have no decimal part or decimal point).
+  * The rounding method will be the default,
+  * <code>MathContext.ROUND_HALF_UP</code>.
+  * <p>
+  * Other rounding methods, and the use of exponential notation, can
+  * be selected by using {@link #format(int,int,int,int,int,int)}.
+  * Using the two-parameter form of the method has exactly the same
+  * effect as using the six-parameter form with the final four
+  * parameters all being -1.
+  *
+  * @param  before The <code>int</code> specifying the number of places
+  *                before the decimal point.  Use -1 for 'as many as
+  *                are needed'.
+  * @param  after  The <code>int</code> specifying the number of places
+  *                after the decimal point.  Use -1 for 'as many as are
+  *                needed'.
+  * @return        A <code>String</code> representing this
+  *                <code>BigDecimal</code>, laid out according to the
+  *                specified parameters
+  * @throws ArithmeticException if the number cannot be laid out as
+  *                requested.
+  * @throws IllegalArgumentException if a parameter is out of range.
+  * @see    #toString
+  * @see    #toCharArray
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public java.lang.String format(int before,int after){
+  return format(before,after,-1,-1,com.ibm.icu.math.MathContext.SCIENTIFIC,ROUND_HALF_UP);
+  }
+
+ /**
+  * Returns the <code>String</code> representation of this
+  * <code>BigDecimal</code>, modified by layout parameters and allowing
+  * exponential notation.
+  * <p>
+  * <i>This method is provided as a primitive for use by more
+  * sophisticated classes, such as <code>DecimalFormat</code>, that
+  * can apply locale-sensitive editing of the result.  The level of
+  * formatting that it provides is a necessary part of the BigDecimal
+  * class as it is sensitive to and must follow the calculation and
+  * rounding rules for BigDecimal arithmetic.
+  * However, if the function is provided elsewhere, it may be removed
+  * from this class. </i>
+  * <p>
+  * The parameters are all of type <code>int</code>.
+  * A value of -1 for any parameter indicates that the default action
+  * or value for that parameter should be used.
+  * <p>
+  * The first two parameters (<code>before</code> and
+  * <code>after</code>) specify the number of characters to be used for
+  * the integer part and decimal part of the result respectively, as
+  * defined for {@link #format(int,int)}.
+  * If either of these is -1 (which indicates the default action), the
+  * number of characters used will be exactly as many as are needed for
+  * that part.
+  * <p>
+  * The remaining parameters control the use of exponential notation
+  * and rounding.  Three (<code>explaces</code>, <code>exdigits</code>,
+  * and <code>exform</code>) control the exponent part of the result.
+  * As before, the default action for any of these parameters may be
+  * selected by using the value -1.
+  * <p>
+  * <code>explaces</code> must be a positive number; it sets the number
+  * of places (digits after the sign of the exponent) to be used for
+  * any exponent part, the default (when <code>explaces</code> is -1)
+  * being to use as many as are needed.
+  * If <code>explaces</code> is not -1, space is always reserved for
+  * an exponent; if one is not needed (for example, if the exponent
+  * will be 0) then <code>explaces</code>+2 blanks are appended to the
+  * result.
+  * <!-- (This preserves vertical alignment of similarly formatted
+  *       numbers in a monospace font.) -->
+  * If <code>explaces</code> is not -1 and is not large enough to
+  * contain the exponent, an exception is thrown.
+  * <p>
+  * <code>exdigits</code> sets the trigger point for use of exponential
+  * notation. If, before any rounding, the number of places needed
+  * before the decimal point exceeds <code>exdigits</code>, or if the
+  * absolute value of the result is less than <code>0.000001</code>,
+  * then exponential form will be used, provided that
+  * <code>exdigits</code> was specified.
+  * When <code>exdigits</code> is -1, exponential notation will never
+  * be used. If 0 is specified for <code>exdigits</code>, exponential
+  * notation is always used unless the exponent would be 0.
+  * <p>
+  * <code>exform</code> sets the form for exponential notation (if
+  * needed).
+  * It  may be either {@link MathContext#SCIENTIFIC} or
+  * {@link MathContext#ENGINEERING}.
+  * If the latter, engineering, form is requested, up to three digits
+  * (plus sign, if negative) may be needed for the integer part of the
+  * result (<code>before</code>).  Otherwise, only one digit (plus
+  * sign, if negative) is needed.
+  * <p>
+  * Finally, the sixth argument, <code>exround</code>, selects the
+  * rounding algorithm to be used, and must be one of the values
+  * indicated by a public constant in the {@link MathContext} class
+  * whose name starts with <code>ROUND_</code>.
+  * The default (<code>ROUND_HALF_UP</code>) may also be selected by
+  * using the value -1, as before.
+  * <p>
+  * The special value <code>MathContext.ROUND_UNNECESSARY</code> may be
+  * used to detect whether non-zero digits are discarded -- if
+  * <code>exround</code> has this value than if non-zero digits would
+  * be discarded (rounded) during formatting then an
+  * <code>ArithmeticException</code> is thrown.
+  *
+  * @param  before   The <code>int</code> specifying the number of places
+  *                  before the decimal point.
+  *                  Use -1 for 'as many as are needed'.
+  * @param  after    The <code>int</code> specifying the number of places
+  *                  after the decimal point.
+  *                  Use -1 for 'as many as are needed'.
+  * @param  explaces The <code>int</code> specifying the number of places
+  *                  to be used for any exponent.
+  *                  Use -1 for 'as many as are needed'.
+  * @param  exdigits The <code>int</code> specifying the trigger
+  *                  (digits before the decimal point) which if
+  *                  exceeded causes exponential notation to be used.
+  *                  Use 0 to force exponential notation.
+  *                  Use -1 to force plain notation (no exponential
+  *                  notation).
+  * @param  exform   The <code>int</code> specifying the form of
+  *                  exponential notation to be used
+  *                  ({@link MathContext#SCIENTIFIC} or
+  *                  {@link MathContext#ENGINEERING}).
+  * @param  exround  The <code>int</code> specifying the rounding mode
+  *                  to use.
+  *                  Use -1 for the default, {@link MathContext#ROUND_HALF_UP}.
+  * @return          A <code>String</code> representing this
+  *                  <code>BigDecimal</code>, laid out according to the
+  *                  specified parameters
+  * @throws ArithmeticException if the number cannot be laid out as
+  *                  requested.
+  * @throws IllegalArgumentException if a parameter is out of range.
+  * @see    #toString
+  * @see    #toCharArray
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public java.lang.String format(int before,int after,int explaces,int exdigits,int exformint,int exround){
+  com.ibm.icu.math.BigDecimal num;
+  int mag=0;
+  int thisafter=0;
+  int lead=0;
+  byte newmant[]=null;
+  int chop=0;
+  int need=0;
+  int oldexp=0;
+  char a[];
+  int p=0;
+  char newa[]=null;
+  int i=0;
+  int places=0;
+  
+  
+  /* Check arguments */
+  if ((before<(-1))|(before==0)) 
+   badarg("format",1,java.lang.String.valueOf(before));
+  if (after<(-1)) 
+   badarg("format",2,java.lang.String.valueOf(after));
+  if ((explaces<(-1))|(explaces==0)) 
+   badarg("format",3,java.lang.String.valueOf(explaces));
+  if (exdigits<(-1)) 
+   badarg("format",4,java.lang.String.valueOf(explaces));
+  {/*select*/
+  if (exformint==com.ibm.icu.math.MathContext.SCIENTIFIC)
+   ;
+  else if (exformint==com.ibm.icu.math.MathContext.ENGINEERING)
+   ;
+  else if (exformint==(-1))
+   exformint=com.ibm.icu.math.MathContext.SCIENTIFIC;
+   // note PLAIN isn't allowed
+  else{
+   badarg("format",5,java.lang.String.valueOf(exformint));
+  }
+  }
+  // checking the rounding mode is done by trying to construct a
+  // MathContext object with that mode; it will fail if bad
+  if (exround!=ROUND_HALF_UP) 
+   {try{ // if non-default...
+    if (exround==(-1)) 
+     exround=ROUND_HALF_UP;
+    else 
+     new com.ibm.icu.math.MathContext(9,com.ibm.icu.math.MathContext.SCIENTIFIC,false,exround);
+   }
+   catch (java.lang.IllegalArgumentException $10){
+    badarg("format",6,java.lang.String.valueOf(exround));
+   }}
+  
+  num=clone(this); // make private copy
+  
+  /* Here:
+     num       is BigDecimal to format
+     before    is places before point [>0]
+     after     is places after point  [>=0]
+     explaces  is exponent places     [>0]
+     exdigits  is exponent digits     [>=0]
+     exformint is exponent form       [one of two]
+     exround   is rounding mode       [one of eight]
+     'before' through 'exdigits' are -1 if not specified
+  */
+  
+  /* determine form */
+  {setform:do{/*select*/
+  if (exdigits==(-1))
+   num.form=(byte)com.ibm.icu.math.MathContext.PLAIN;
+  else if (num.ind==iszero)
+   num.form=(byte)com.ibm.icu.math.MathContext.PLAIN;
+  else{
+   // determine whether triggers
+   mag=num.exp+num.mant.length;
+   if (mag>exdigits) 
+    num.form=(byte)exformint;
+   else 
+    if (mag<(-5)) 
+     num.form=(byte)exformint;
+    else 
+     num.form=(byte)com.ibm.icu.math.MathContext.PLAIN;
+  }
+  }while(false);}/*setform*/
+  
+  /* If 'after' was specified then we may need to adjust the
+     mantissa.  This is a little tricky, as we must conform to the
+     rules of exponential layout if necessary (e.g., we cannot end up
+     with 10.0 if scientific). */
+  if (after>=0) 
+   {setafter:for(;;){
+    // calculate the current after-length
+    {/*select*/
+    if (num.form==com.ibm.icu.math.MathContext.PLAIN)
+     thisafter=(int)-num.exp; // has decimal part
+    else if (num.form==com.ibm.icu.math.MathContext.SCIENTIFIC)
+     thisafter=num.mant.length-1;
+    else{ // engineering
+     lead=(((num.exp+num.mant.length)-1))%3; // exponent to use
+     if (lead<0) 
+      lead=3+lead; // negative exponent case
+     lead++; // number of leading digits
+     if (lead>=num.mant.length) 
+      thisafter=0;
+     else 
+      thisafter=num.mant.length-lead;
+    }
+    }
+    if (thisafter==after) 
+     break setafter; // we're in luck
+    if (thisafter<after) 
+     { // need added trailing zeros
+      // [thisafter can be negative]
+      newmant=extend(num.mant,(num.mant.length+after)-thisafter);
+      num.mant=newmant;
+      num.exp=num.exp-((after-thisafter)); // adjust exponent
+      if (num.exp<MinExp) 
+       throw new java.lang.ArithmeticException("Exponent Overflow:"+" "+num.exp);
+      break setafter;
+     }
+    // We have too many digits after the decimal point; this could
+    // cause a carry, which could change the mantissa...
+    // Watch out for implied leading zeros in PLAIN case
+    chop=thisafter-after; // digits to lop [is >0]
+    if (chop>num.mant.length) 
+     { // all digits go, no chance of carry
+      // carry on with zero
+      num.mant=ZERO.mant;
+      num.ind=iszero;
+      num.exp=0;
+      continue setafter; // recheck: we may need trailing zeros
+     }
+    // we have a digit to inspect from existing mantissa
+    // round the number as required
+    need=num.mant.length-chop; // digits to end up with [may be 0]
+    oldexp=num.exp; // save old exponent
+    num.round(need,exround);
+    // if the exponent grew by more than the digits we chopped, then
+    // we must have had a carry, so will need to recheck the layout
+    if ((num.exp-oldexp)==chop) 
+     break setafter; // number did not have carry
+    // mantissa got extended .. so go around and check again
+    }
+   }/*setafter*/
+  
+  a=num.layout(); // lay out, with exponent if required, etc.
+  
+  /* Here we have laid-out number in 'a' */
+  // now apply 'before' and 'explaces' as needed
+  if (before>0) 
+   {
+    // look for '.' or 'E'
+    {int $11=a.length;p=0;p:for(;$11>0;$11--,p++){
+     if (a[p]=='.') 
+      break p;
+     if (a[p]=='E') 
+      break p;
+     }
+    }/*p*/
+    // p is now offset of '.', 'E', or character after end of array
+    // that is, the current length of before part
+    if (p>before) 
+     badarg("format",1,java.lang.String.valueOf(before)); // won't fit
+    if (p<before) 
+     { // need leading blanks
+      newa=new char[(a.length+before)-p];
+      {int $12=before-p;i=0;i:for(;$12>0;$12--,i++){
+       newa[i]=' ';
+       }
+      }/*i*/
+      java.lang.System.arraycopy((java.lang.Object)a,0,(java.lang.Object)newa,i,a.length);
+      a=newa;
+     }
+   // [if p=before then it's just the right length]
+   }
+  
+  if (explaces>0) 
+   {
+    // look for 'E' [cannot be at offset 0]
+    {int $13=a.length-1;p=a.length-1;p:for(;$13>0;$13--,p--){
+     if (a[p]=='E') 
+      break p;
+     }
+    }/*p*/
+    // p is now offset of 'E', or 0
+    if (p==0) 
+     { // no E part; add trailing blanks
+      newa=new char[(a.length+explaces)+2];
+      java.lang.System.arraycopy((java.lang.Object)a,0,(java.lang.Object)newa,0,a.length);
+      {int $14=explaces+2;i=a.length;i:for(;$14>0;$14--,i++){
+       newa[i]=' ';
+       }
+      }/*i*/
+      a=newa;
+     }
+    else 
+     {/* found E */ // may need to insert zeros
+      places=(a.length-p)-2; // number so far
+      if (places>explaces) 
+       badarg("format",3,java.lang.String.valueOf(explaces));
+      if (places<explaces) 
+       { // need to insert zeros
+        newa=new char[(a.length+explaces)-places];
+        java.lang.System.arraycopy((java.lang.Object)a,0,(java.lang.Object)newa,0,p+2); // through E and sign
+        {int $15=explaces-places;i=p+2;i:for(;$15>0;$15--,i++){
+         newa[i]='0';
+         }
+        }/*i*/
+        java.lang.System.arraycopy((java.lang.Object)a,p+2,(java.lang.Object)newa,i,places); // remainder of exponent
+        a=newa;
+       }
+     // [if places=explaces then it's just the right length]
+     }
+   }
+  return new java.lang.String(a);
+  }
+
+ /**
+  * Returns the hashcode for this <code>BigDecimal</code>.
+  * This hashcode is suitable for use by the
+  * <code>java.util.Hashtable</code> class.
+  * <p>
+  * Note that two <code>BigDecimal</code> objects are only guaranteed
+  * to produce the same hashcode if they are exactly equal (that is,
+  * the <code>String</code> representations of the
+  * <code>BigDecimal</code> numbers are identical -- they have the same
+  * characters in the same sequence).
+  *
+  * @return An <code>int</code> that is the hashcode for <code>this</code>.
+  */
+ 
+ public int hashCode(){
+  // Maybe calculate ourselves, later.  If so, note that there can be
+  // more than one internal representation for a given toString() result.
+  return this.toString().hashCode();
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to an <code>int</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part it is
+  * discarded. If the <code>BigDecimal</code> is out of the possible
+  * range for an <code>int</code> (32-bit signed integer) result then
+  * only the low-order 32 bits are used. (That is, the number may be
+  * <i>decapitated</i>.)  To avoid unexpected errors when these
+  * conditions occur, use the {@link #intValueExact} method.
+  *
+  * @return An <code>int</code> converted from <code>this</code>,
+  *         truncated and decapitated if necessary.
+  */
+ 
+ public int intValue(){
+  return toBigInteger().intValue();
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to an <code>int</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part or is
+  * out of the possible range for an <code>int</code> (32-bit signed
+  * integer) result then an <code>ArithmeticException</code> is thrown.
+  *
+  * @return An <code>int</code> equal in value to <code>this</code>.
+  * @throws ArithmeticException if <code>this</code> has a non-zero
+  *                 decimal part, or will not fit in an
+  *                 <code>int</code>.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public int intValueExact(){
+  int lodigit;
+  int useexp=0;
+  int result;
+  int i=0;
+  int topdig=0;
+  // This does not use longValueExact() as the latter can be much
+  // slower.
+  // intcheck (from pow) relies on this to check decimal part
+  if (ind==iszero) 
+   return 0; // easy, and quite common
+  /* test and drop any trailing decimal part */
+  lodigit=mant.length-1;
+  if (exp<0) 
+   {
+    lodigit=lodigit+exp; // reduces by -(-exp)
+    /* all decimal places must be 0 */
+    if ((!(allzero(mant,lodigit+1)))) 
+     throw new java.lang.ArithmeticException("Decimal part non-zero:"+" "+this.toString());
+    if (lodigit<0) 
+     return 0; // -1<this<1
+    useexp=0;
+   }
+  else 
+   {/* >=0 */
+    if ((exp+lodigit)>9)  // early exit
+     throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+    useexp=exp;
+   }
+  /* convert the mantissa to binary, inline for speed */
+  result=0;
+  {int $16=lodigit+useexp;i=0;i:for(;i<=$16;i++){
+   result=result*10;
+   if (i<=lodigit) 
+    result=result+mant[i];
+   }
+  }/*i*/
+  
+  /* Now, if the risky length, check for overflow */
+  if ((lodigit+useexp)==9) 
+   {
+    // note we cannot just test for -ve result, as overflow can move a
+    // zero into the top bit [consider 5555555555]
+    topdig=result/1000000000; // get top digit, preserving sign
+    if (topdig!=mant[0]) 
+     { // digit must match and be positive
+      // except in the special case ...
+      if (result==java.lang.Integer.MIN_VALUE)  // looks like the special
+       if (ind==isneg)  // really was negative
+        if (mant[0]==2) 
+         return result; // really had top digit 2
+      throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+     }
+   }
+  
+  /* Looks good */
+  if (ind==ispos) 
+   return result;
+  return (int)-result;
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>long</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part it is
+  * discarded. If the <code>BigDecimal</code> is out of the possible
+  * range for a <code>long</code> (64-bit signed integer) result then
+  * only the low-order 64 bits are used. (That is, the number may be
+  * <i>decapitated</i>.)  To avoid unexpected errors when these
+  * conditions occur, use the {@link #longValueExact} method.
+  *
+  * @return A <code>long</code> converted from <code>this</code>,
+  *         truncated and decapitated if necessary.
+  */
+ 
+ public long longValue(){
+  return toBigInteger().longValue();
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>long</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part or is
+  * out of the possible range for a <code>long</code> (64-bit signed
+  * integer) result then an <code>ArithmeticException</code> is thrown.
+  *
+  * @return A <code>long</code> equal in value to <code>this</code>.
+  * @throws ArithmeticException if <code>this</code> has a non-zero
+  *                 decimal part, or will not fit in a
+  *                 <code>long</code>.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public long longValueExact(){
+  int lodigit;
+  int cstart=0;
+  int useexp=0;
+  long result;
+  int i=0;
+  long topdig=0;
+  // Identical to intValueExact except for result=long, and exp>=20 test
+  if (ind==0) 
+   return 0; // easy, and quite common
+  lodigit=mant.length-1; // last included digit
+  if (exp<0) 
+   {
+    lodigit=lodigit+exp; // -(-exp)
+    /* all decimal places must be 0 */
+    if (lodigit<0) 
+     cstart=0;
+    else 
+     cstart=lodigit+1;
+    if ((!(allzero(mant,cstart)))) 
+     throw new java.lang.ArithmeticException("Decimal part non-zero:"+" "+this.toString());
+    if (lodigit<0) 
+     return 0; // -1<this<1
+    useexp=0;
+   }
+  else 
+   {/* >=0 */
+    if ((exp+mant.length)>18)  // early exit
+     throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+    useexp=exp;
+   }
+  
+  /* convert the mantissa to binary, inline for speed */
+  // note that we could safely use the 'test for wrap to negative'
+  // algorithm here, but instead we parallel the intValueExact
+  // algorithm for ease of checking and maintenance.
+  result=(long)0;
+  {int $17=lodigit+useexp;i=0;i:for(;i<=$17;i++){
+   result=result*10;
+   if (i<=lodigit) 
+    result=result+mant[i];
+   }
+  }/*i*/
+  
+  /* Now, if the risky length, check for overflow */
+  if ((lodigit+useexp)==18) 
+   {
+    topdig=result/1000000000000000000L; // get top digit, preserving sign
+    if (topdig!=mant[0]) 
+     { // digit must match and be positive
+      // except in the special case ...
+      if (result==java.lang.Long.MIN_VALUE)  // looks like the special
+       if (ind==isneg)  // really was negative
+        if (mant[0]==9) 
+         return result; // really had top digit 9
+      throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+     }
+   }
+  
+  /* Looks good */
+  if (ind==ispos) 
+   return result;
+  return (long)-result;
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose decimal point has
+  * been moved to the left by a specified number of positions.
+  * The parameter, <code>n</code>, specifies the number of positions to
+  * move the decimal point.
+  * That is, if <code>n</code> is 0 or positive, the number returned is
+  * given by:
+  * <p><code>
+  * this.multiply(TEN.pow(new BigDecimal(-n)))
+  * </code>
+  * <p>
+  * <code>n</code> may be negative, in which case the method returns
+  * the same result as <code>movePointRight(-n)</code>.
+  *
+  * @param  n The <code>int</code> specifying the number of places to
+  *           move the decimal point leftwards.
+  * @return   A <code>BigDecimal</code> derived from
+  *           <code>this</code>, with the decimal point moved
+  *           <code>n</code> places to the left.
+  */
+ 
+ public com.ibm.icu.math.BigDecimal movePointLeft(int n){
+  com.ibm.icu.math.BigDecimal res;
+  // very little point in optimizing for shift of 0
+  res=clone(this);
+  res.exp=res.exp-n;
+  return res.finish(plainMC,false); // finish sets form and checks exponent
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose decimal point has
+  * been moved to the right by a specified number of positions.
+  * The parameter, <code>n</code>, specifies the number of positions to
+  * move the decimal point.
+  * That is, if <code>n</code> is 0 or positive, the number returned is
+  * given by:
+  * <p><code>
+  * this.multiply(TEN.pow(new BigDecimal(n)))
+  * </code>
+  * <p>
+  * <code>n</code> may be negative, in which case the method returns
+  * the same result as <code>movePointLeft(-n)</code>.
+  *
+  * @param  n The <code>int</code> specifying the number of places to
+  *           move the decimal point rightwards.
+  * @return   A <code>BigDecimal</code> derived from
+  *           <code>this</code>, with the decimal point moved
+  *           <code>n</code> places to the right.
+  */
+ 
+ public com.ibm.icu.math.BigDecimal movePointRight(int n){
+  com.ibm.icu.math.BigDecimal res;
+  res=clone(this);
+  res.exp=res.exp+n;
+  return res.finish(plainMC,false);
+  }
+
+ /**
+  * Returns the scale of this <code>BigDecimal</code>.
+  * Returns a non-negative <code>int</code> which is the scale of the
+  * number. The scale is the number of digits in the decimal part of
+  * the number if the number were formatted without exponential
+  * notation.
+  *
+  * @return An <code>int</code> whose value is the scale of this
+  *         <code>BigDecimal</code>.
+  */
+ 
+ public int scale(){
+  if (exp>=0) 
+   return 0; // scale can never be negative
+  return (int)-exp;
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> with a given scale.
+  * <p>
+  * If the given scale (which must be zero or positive) is the same as
+  * or greater than the length of the decimal part (the scale) of this
+  * <code>BigDecimal</code> then trailing zeros will be added to the
+  * decimal part as necessary.
+  * <p>
+  * If the given scale is less than the length of the decimal part (the
+  * scale) of this <code>BigDecimal</code> then trailing digits
+  * will be removed, and in this case an
+  * <code>ArithmeticException</code> is thrown if any discarded digits
+  * are non-zero.
+  * <p>
+  * The same as {@link #setScale(int, int)}, where the first parameter
+  * is the scale, and the second is
+  * <code>MathContext.ROUND_UNNECESSARY</code>.
+  *
+  * @param  scale The <code>int</code> specifying the scale of the
+  *               resulting <code>BigDecimal</code>.
+  * @return       A plain <code>BigDecimal</code> with the given scale.
+  * @throws ArithmeticException if <code>scale</code> is negative.
+  * @throws ArithmeticException if reducing scale would discard
+  *               non-zero digits.
+  */
+ 
+ public com.ibm.icu.math.BigDecimal setScale(int scale){
+  return setScale(scale,ROUND_UNNECESSARY);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> with a given scale.
+  * <p>
+  * If the given scale (which must be zero or positive) is the same as
+  * or greater than the length of the decimal part (the scale) of this
+  * <code>BigDecimal</code> then trailing zeros will be added to the
+  * decimal part as necessary.
+  * <p>
+  * If the given scale is less than the length of the decimal part (the
+  * scale) of this <code>BigDecimal</code> then trailing digits
+  * will be removed, and the rounding mode given by the second
+  * parameter is used to determine if the remaining digits are
+  * affected by a carry.
+  * In this case, an <code>IllegalArgumentException</code> is thrown if
+  * <code>round</code> is not a valid rounding mode.
+  * <p>
+  * If <code>round</code> is <code>MathContext.ROUND_UNNECESSARY</code>,
+  * an <code>ArithmeticException</code> is thrown if any discarded
+  * digits are non-zero.
+  *
+  * @param  scale The <code>int</code> specifying the scale of the
+  *               resulting <code>BigDecimal</code>.
+  * @param  round The <code>int</code> rounding mode to be used for
+  *               the division (see the {@link MathContext} class).
+  * @return       A plain <code>BigDecimal</code> with the given scale.
+  * @throws IllegalArgumentException if <code>round</code> is not a
+  *               valid rounding mode.
+  * @throws ArithmeticException if <code>scale</code> is negative.
+  * @throws ArithmeticException if <code>round</code> is
+  *               <code>MathContext.ROUND_UNNECESSARY</code>, and
+  *               reducing scale would discard non-zero digits.
+  */
+ 
+ public com.ibm.icu.math.BigDecimal setScale(int scale,int round){
+  int ourscale;
+  com.ibm.icu.math.BigDecimal res;
+  int padding=0;
+  int newlen=0;
+  // at present this naughtily only checks the round value if it is
+  // needed (used), for speed
+  ourscale=this.scale();
+  if (ourscale==scale)  // already correct scale
+   if (this.form==com.ibm.icu.math.MathContext.PLAIN)  // .. and form
+    return this;
+  res=clone(this); // need copy
+  if (ourscale<=scale) 
+   { // simply zero-padding/changing form
+    // if ourscale is 0 we may have lots of 0s to add
+    if (ourscale==0) 
+     padding=res.exp+scale;
+    else 
+     padding=scale-ourscale;
+    res.mant=extend(res.mant,res.mant.length+padding);
+    res.exp=(int)-scale; // as requested
+   }
+  else 
+   {/* ourscale>scale: shortening, probably */
+    if (scale<0) 
+     throw new java.lang.ArithmeticException("Negative scale:"+" "+scale);
+    // [round() will raise exception if invalid round]
+    newlen=res.mant.length-((ourscale-scale)); // [<=0 is OK]
+    res=res.round(newlen,round); // round to required length
+    // This could have shifted left if round (say) 0.9->1[.0]
+    // Repair if so by adding a zero and reducing exponent
+    if (res.exp!=((int)-scale)) 
+     {
+      res.mant=extend(res.mant,res.mant.length+1);
+      res.exp=res.exp-1;
+     }
+   }
+  res.form=(byte)com.ibm.icu.math.MathContext.PLAIN; // by definition
+  return res;
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>short</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part or is
+  * out of the possible range for a <code>short</code> (16-bit signed
+  * integer) result then an <code>ArithmeticException</code> is thrown.
+  *
+  * @return A <code>short</code> equal in value to <code>this</code>.
+  * @throws ArithmeticException if <code>this</code> has a non-zero
+  *                 decimal part, or will not fit in a
+  *                 <code>short</code>.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public short shortValueExact(){
+  int num;
+  num=this.intValueExact(); // will check decimal part too
+  if ((num>32767)|(num<(-32768))) 
+   throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+  return (short)num;
+  }
+
+ /**
+  * Returns the sign of this <code>BigDecimal</code>, as an
+  * <code>int</code>.
+  * This returns the <i>signum</i> function value that represents the
+  * sign of this <code>BigDecimal</code>.
+  * That is, -1 if the <code>BigDecimal</code> is negative, 0 if it is
+  * numerically equal to zero, or 1 if it is positive.
+  *
+  * @return An <code>int</code> which is -1 if the
+  *         <code>BigDecimal</code> is negative, 0 if it is
+  *         numerically equal to zero, or 1 if it is positive.
+  */
+ 
+ public int signum(){
+  return (int)this.ind; // [note this assumes values for ind.]
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a
+  * <code>java.math.BigDecimal</code>.
+  * <p>
+  * This is an exact conversion; the result is the same as if the
+  * <code>BigDecimal</code> were formatted as a plain number without
+  * any rounding or exponent and then the
+  * <code>java.math.BigDecimal(java.lang.String)</code> constructor
+  * were used to construct the result.
+  * <p>
+  * <i>(Note: this method is provided only in the
+  * <code>com.ibm.icu.math</code> version of the BigDecimal class.
+  * It would not be present in a <code>java.math</code> version.)</i>
+  *
+  * @return The <code>java.math.BigDecimal</code> equal in value
+  *         to this <code>BigDecimal</code>.
+  * @since IBM JDK 1.1.8
+  */
+ 
+ public java.math.BigDecimal toBigDecimal(){
+  return new java.math.BigDecimal(this.unscaledValue(),this.scale());
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a
+  * <code>java.math.BigInteger</code>.
+  * <p>
+  * Any decimal part is truncated (discarded).
+  * If an exception is desired should the decimal part be non-zero,
+  * use {@link #toBigIntegerExact()}.
+  *
+  * @return The <code>java.math.BigInteger</code> equal in value
+  *         to the integer part of this <code>BigDecimal</code>.
+  */
+ 
+ public java.math.BigInteger toBigInteger(){
+  com.ibm.icu.math.BigDecimal res=null;
+  int newlen=0;
+  byte newmant[]=null;
+  {/*select*/
+  if ((exp>=0)&(form==com.ibm.icu.math.MathContext.PLAIN))
+   res=this; // can layout simply
+  else if (exp>=0)
+   {
+    res=clone(this); // safe copy
+    res.form=(byte)com.ibm.icu.math.MathContext.PLAIN; // .. and request PLAIN
+   }
+  else{
+   { // exp<0; scale to be truncated
+    // we could use divideInteger, but we may as well be quicker
+    if (((int)-this.exp)>=this.mant.length) 
+     res=ZERO; // all blows away
+    else 
+     {
+      res=clone(this); // safe copy
+      newlen=res.mant.length+res.exp;
+      newmant=new byte[newlen]; // [shorter]
+      java.lang.System.arraycopy((java.lang.Object)res.mant,0,(java.lang.Object)newmant,0,newlen);
+      res.mant=newmant;
+      res.form=(byte)com.ibm.icu.math.MathContext.PLAIN;
+      res.exp=0;
+     }
+   }
+  }
+  }
+  return new BigInteger(new java.lang.String(res.layout()));
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a
+  * <code>java.math.BigInteger</code>.
+  * <p>
+  * An exception is thrown if the decimal part (if any) is non-zero.
+  *
+  * @return The <code>java.math.BigInteger</code> equal in value
+  *         to the integer part of this <code>BigDecimal</code>.
+  * @throws ArithmeticException if <code>this</code> has a non-zero
+  *         decimal part.
+  * @since  IBM JDK 1.1.8
+  */
+ 
+ public java.math.BigInteger toBigIntegerExact(){
+  /* test any trailing decimal part */
+  if (exp<0) 
+   { // possible decimal part
+    /* all decimal places must be 0; note exp<0 */
+    if ((!(allzero(mant,mant.length+exp)))) 
+     throw new java.lang.ArithmeticException("Decimal part non-zero:"+" "+this.toString());
+   }
+  return toBigInteger();
+  }
+
+ /**
+  * Returns the <code>BigDecimal</code> as a character array.
+  * The result of this method is the same as using the
+  * sequence <code>toString().toCharArray()</code>, but avoids creating
+  * the intermediate <code>String</code> and <code>char[]</code>
+  * objects.
+  *
+  * @return The <code>char[]</code> array corresponding to this
+  *         <code>BigDecimal</code>.
+  * @since IBM JDK 1.1.8
+  */
+ 
+ public char[] toCharArray(){
+  return layout();
+  }
+
+ /**
+  * Returns the <code>BigDecimal</code> as a <code>String</code>.
+  * This returns a <code>String</code> that exactly represents this
+  * <code>BigDecimal</code>, as defined in the decimal documentation
+  * (see {@link BigDecimal class header}).
+  * <p>
+  * By definition, using the {@link #BigDecimal(String)} constructor
+  * on the result <code>String</code> will create a
+  * <code>BigDecimal</code> that is exactly equal to the original
+  * <code>BigDecimal</code>.
+  *
+  * @return The <code>String</code> exactly corresponding to this
+  *         <code>BigDecimal</code>.
+  * @see    #format(int, int)
+  * @see    #format(int, int, int, int, int, int)
+  * @see    #toCharArray()
+  */
+ 
+ public java.lang.String toString(){
+  return new java.lang.String(layout());
+  }
+
+ /**
+  * Returns the number as a <code>BigInteger</code> after removing the
+  * scale.
+  * That is, the number is expressed as a plain number, any decimal
+  * point is then removed (retaining the digits of any decimal part),
+  * and the result is then converted to a <code>BigInteger</code>.
+  *
+  * @return The <code>java.math.BigInteger</code> equal in value to
+  *         this <code>BigDecimal</code> multiplied by ten to the
+  *         power of <code>this.scale()</code>.
+  * @since JDK1.2
+  */
+ 
+ public java.math.BigInteger unscaledValue(){
+  com.ibm.icu.math.BigDecimal res=null;
+  if (exp>=0) 
+   res=this;
+  else 
+   {
+    res=clone(this); // safe copy
+    res.exp=0; // drop scale
+   }
+  return res.toBigInteger();
+  }
+
+ /**
+  * Translates a <code>double</code> to a <code>BigDecimal</code>.
+  * <p>
+  * Returns a <code>BigDecimal</code> which is the decimal
+  * representation of the 64-bit signed binary floating point
+  * parameter. If the parameter is infinite, or is not a number (NaN),
+  * a <code>NumberFormatException</code> is thrown.
+  * <p>
+  * The number is constructed as though <code>num</code> had been
+  * converted to a <code>String</code> using the
+  * <code>Double.toString()</code> method and the
+  * {@link #BigDecimal(java.lang.String)} constructor had then been used.
+  * This is typically not an exact conversion.
+  *
+  * @param  dub The <code>double</code> to be translated.
+  * @return     The <code>BigDecimal</code> equal in value to
+  *             <code>dub</code>.
+  * @throws NumberFormatException if the parameter is infinite or
+  *             not a number.
+  * @since IBM JDK 1.1.8
+  */
+ 
+ public static com.ibm.icu.math.BigDecimal valueOf(double dub){
+  // Reminder: a zero double returns '0.0', so we cannot fastpath to
+  // use the constant ZERO.  This might be important enough to justify
+  // a factory approach, a cache, or a few private constants, later.
+  return new com.ibm.icu.math.BigDecimal((new java.lang.Double(dub)).toString());
+  }
+
+ /**
+  * Translates a <code>long</code> to a <code>BigDecimal</code>.
+  * That is, returns a plain <code>BigDecimal</code> whose value is
+  * equal to the given <code>long</code>.
+  *
+  * @param  lint The <code>long</code> to be translated.
+  * @return      The <code>BigDecimal</code> equal in value to
+  *              <code>lint</code>.
+  */
+ 
+ public static com.ibm.icu.math.BigDecimal valueOf(long lint){
+  return valueOf(lint,0);
+  }
+
+ /**
+  * Translates a <code>long</code> to a <code>BigDecimal</code> with a
+  * given scale.
+  * That is, returns a plain <code>BigDecimal</code> whose unscaled
+  * value is equal to the given <code>long</code>, adjusted by the
+  * second parameter, <code>scale</code>.
+  * <p>
+  * The result is given by:
+  * <p><code>
+  * (new BigDecimal(lint)).divide(TEN.pow(new BigDecimal(scale)))
+  * </code>
+  * <p>
+  * A <code>NumberFormatException</code> is thrown if <code>scale</code>
+  * is negative.
+  *
+  * @param  lint  The <code>long</code> to be translated.
+  * @param  scale The <code>int</code> scale to be applied.
+  * @return       The <code>BigDecimal</code> equal in value to
+  *               <code>lint</code>.
+  * @throws NumberFormatException if the scale is negative.
+  */
+ 
+ public static com.ibm.icu.math.BigDecimal valueOf(long lint,int scale){
+  com.ibm.icu.math.BigDecimal res=null;
+  {/*select*/
+  if (lint==0)
+   res=ZERO;
+  else if (lint==1)
+   res=ONE;
+  else if (lint==10)
+   res=TEN;
+  else{
+   res=new com.ibm.icu.math.BigDecimal(lint);
+  }
+  }
+  if (scale==0) 
+   return res;
+  if (scale<0) 
+   throw new java.lang.NumberFormatException("Negative scale:"+" "+scale);
+  res=clone(res); // safe copy [do not mutate]
+  res.exp=(int)-scale; // exponent is -scale
+  return res;
+  }
+
+ /* ---------------------------------------------------------------- */
+ /* Private methods                                                  */
+ /* ---------------------------------------------------------------- */
+ 
+ /* <sgml> Return char array value of a BigDecimal (conversion from
+       BigDecimal to laid-out canonical char array).
+    <p>The mantissa will either already have been rounded (following an
+       operation) or will be of length appropriate (in the case of
+       construction from an int, for example).
+    <p>We must not alter the mantissa, here.
+    <p>'form' describes whether we are to use exponential notation (and
+       if so, which), or if we are to lay out as a plain/pure numeric.
+    </sgml> */
+ 
+ private char[] layout(){
+  char cmant[];
+  int i=0;
+  java.lang.StringBuffer sb=null;
+  int euse=0;
+  int sig=0;
+  char csign=0;
+  char rec[]=null;
+  int needsign;
+  int mag;
+  int len=0;
+  cmant=new char[mant.length]; // copy byte[] to a char[]
+  {int $18=mant.length;i=0;i:for(;$18>0;$18--,i++){
+   cmant[i]=(char)(mant[i]+((int)('0')));
+   }
+  }/*i*/
+  
+  if (form!=com.ibm.icu.math.MathContext.PLAIN) 
+   {/* exponential notation needed */
+    sb=new java.lang.StringBuffer(cmant.length+15); // -x.xxxE+999999999
+    if (ind==isneg) 
+     sb.append('-');
+    euse=(exp+cmant.length)-1; // exponent to use
+    /* setup sig=significant digits and copy to result */
+    if (form==com.ibm.icu.math.MathContext.SCIENTIFIC) 
+     { // [default]
+      sb.append(cmant[0]); // significant character
+      if (cmant.length>1)  // have decimal part
+       sb.append('.').append(cmant,1,cmant.length-1);
+     }
+    else 
+     {engineering:do{
+      sig=euse%3; // common
+      if (sig<0) 
+       sig=3+sig; // negative exponent
+      euse=euse-sig;
+      sig++;
+      if (sig>=cmant.length) 
+       { // zero padding may be needed
+        sb.append(cmant,0,cmant.length);
+        {int $19=sig-cmant.length;for(;$19>0;$19--){
+         sb.append('0');
+         }
+        }
+       }
+      else 
+       { // decimal point needed
+        sb.append(cmant,0,sig).append('.').append(cmant,sig,cmant.length-sig);
+       }
+     }while(false);}/*engineering*/
+    if (euse!=0) 
+     {
+      if (euse<0) 
+       {
+        csign='-';
+        euse=(int)-euse;
+       }
+      else 
+       csign='+';
+      sb.append('E').append(csign).append(euse);
+     }
+    rec=new char[sb.length()];
+    Utility.getChars(sb, 0,sb.length(),rec,0);
+    return rec;
+   }
+  
+  /* Here for non-exponential (plain) notation */
+  if (exp==0) 
+   {/* easy */
+    if (ind>=0) 
+     return cmant; // non-negative integer
+    rec=new char[cmant.length+1];
+    rec[0]='-';
+    java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,1,cmant.length);
+    return rec;
+   }
+  
+  /* Need a '.' and/or some zeros */
+  needsign=(int)((ind==isneg)?1:0); // space for sign?  0 or 1
+  
+  /* MAG is the position of the point in the mantissa (index of the
+     character it follows) */
+  mag=exp+cmant.length;
+  
+  if (mag<1) 
+   {/* 0.00xxxx form */
+    len=(needsign+2)-exp; // needsign+2+(-mag)+cmant.length
+    rec=new char[len];
+    if (needsign!=0) 
+     rec[0]='-';
+    rec[needsign]='0';
+    rec[needsign+1]='.';
+    {int $20=(int)-mag;i=needsign+2;i:for(;$20>0;$20--,i++){ // maybe none
+     rec[i]='0';
+     }
+    }/*i*/
+    java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,(needsign+2)-mag,cmant.length);
+    return rec;
+   }
+  
+  if (mag>cmant.length) 
+   {/* xxxx0000 form */
+    len=needsign+mag;
+    rec=new char[len];
+    if (needsign!=0) 
+     rec[0]='-';
+    java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,needsign,cmant.length);
+    {int $21=mag-cmant.length;i=needsign+cmant.length;i:for(;$21>0;$21--,i++){ // never 0
+     rec[i]='0';
+     }
+    }/*i*/
+    return rec;
+   }
+  
+  /* decimal point is in the middle of the mantissa */
+  len=(needsign+1)+cmant.length;
+  rec=new char[len];
+  if (needsign!=0) 
+   rec[0]='-';
+  java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,needsign,mag);
+  rec[needsign+mag]='.';
+  java.lang.System.arraycopy((java.lang.Object)cmant,mag,(java.lang.Object)rec,(needsign+mag)+1,cmant.length-mag);
+  return rec;
+  }
+
+ /* <sgml> Checks a BigDecimal argument to ensure it's a true integer
+       in a given range.
+    <p>If OK, returns it as an int. </sgml> */
+ // [currently only used by pow]
+ 
+ private int intcheck(int min,int max){
+  int i;
+  i=this.intValueExact(); // [checks for non-0 decimal part]
+  // Use same message as though intValueExact failed due to size
+  if ((i<min)|(i>max)) 
+   throw new java.lang.ArithmeticException("Conversion overflow:"+" "+i);
+  return i;
+  }
+
+ /* <sgml> Carry out division operations. </sgml> */
+ /*
+    Arg1 is operation code: D=divide, I=integer divide, R=remainder
+    Arg2 is the rhs.
+    Arg3 is the context.
+    Arg4 is explicit scale iff code='D' or 'I' (-1 if none).
+ 
+    Underlying algorithm (complications for Remainder function and
+    scaled division are omitted for clarity):
+ 
+      Test for x/0 and then 0/x
+      Exp =Exp1 - Exp2
+      Exp =Exp +len(var1) -len(var2)
+      Sign=Sign1 * Sign2
+      Pad accumulator (Var1) to double-length with 0's (pad1)
+      Pad Var2 to same length as Var1
+      B2B=1st two digits of var2, +1 to allow for roundup
+      have=0
+      Do until (have=digits+1 OR residue=0)
+        if exp<0 then if integer divide/residue then leave
+        this_digit=0
+        Do forever
+           compare numbers
+           if <0 then leave inner_loop
+           if =0 then (- quick exit without subtract -) do
+              this_digit=this_digit+1; output this_digit
+              leave outer_loop; end
+           Compare lengths of numbers (mantissae):
+           If same then CA=first_digit_of_Var1
+                   else CA=first_two_digits_of_Var1
+           mult=ca*10/b2b   -- Good and safe guess at divisor
+           if mult=0 then mult=1
+           this_digit=this_digit+mult
+           subtract
+           end inner_loop
+         if have\=0 | this_digit\=0 then do
+           output this_digit
+           have=have+1; end
+         var2=var2/10
+         exp=exp-1
+         end outer_loop
+      exp=exp+1   -- set the proper exponent
+      if have=0 then generate answer=0
+      Return to FINISHED
+      Result defined by MATHV1
+ 
+    For extended commentary, see DMSRCN.
+  */
+ 
+ private com.ibm.icu.math.BigDecimal dodivide(char code,com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set,int scale){
+  com.ibm.icu.math.BigDecimal lhs;
+  int reqdig;
+  int newexp;
+  com.ibm.icu.math.BigDecimal res;
+  int newlen;
+  byte var1[];
+  int var1len;
+  byte var2[];
+  int var2len;
+  int b2b;
+  int have;
+  int thisdigit=0;
+  int i=0;
+  byte v2=0;
+  int ba=0;
+  int mult=0;
+  int start=0;
+  int padding=0;
+  int d=0;
+  byte newvar1[]=null;
+  byte lasthave=0;
+  int actdig=0;
+  byte newmant[]=null;
+  
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  lhs=this; // name for clarity
+  
+  // [note we must have checked lostDigits before the following checks]
+  if (rhs.ind==0) 
+   throw new java.lang.ArithmeticException("Divide by 0"); // includes 0/0
+  if (lhs.ind==0) 
+   { // 0/x => 0 [possibly with .0s]
+    if (set.form!=com.ibm.icu.math.MathContext.PLAIN) 
+     return ZERO;
+    if (scale==(-1)) 
+     return lhs;
+    return lhs.setScale(scale);
+   }
+  
+  /* Prepare numbers according to BigDecimal rules */
+  reqdig=set.digits; // local copy (heavily used)
+  if (reqdig>0) 
+   {
+    if (lhs.mant.length>reqdig) 
+     lhs=clone(lhs).round(set);
+    if (rhs.mant.length>reqdig) 
+     rhs=clone(rhs).round(set);
+   }
+  else 
+   {/* scaled divide */
+    if (scale==(-1)) 
+     scale=lhs.scale();
+    // set reqdig to be at least large enough for the computation
+    reqdig=lhs.mant.length; // base length
+    // next line handles both positive lhs.exp and also scale mismatch
+    if (scale!=((int)-lhs.exp)) 
+     reqdig=(reqdig+scale)+lhs.exp;
+    reqdig=(reqdig-((rhs.mant.length-1)))-rhs.exp; // reduce by RHS effect
+    if (reqdig<lhs.mant.length) 
+     reqdig=lhs.mant.length; // clamp
+    if (reqdig<rhs.mant.length) 
+     reqdig=rhs.mant.length; // ..
+   }
+  
+  /* precalculate exponent */
+  newexp=((lhs.exp-rhs.exp)+lhs.mant.length)-rhs.mant.length;
+  /* If new exponent -ve, then some quick exits are possible */
+  if (newexp<0) 
+   if (code!='D') 
+    {
+     if (code=='I') 
+      return ZERO; // easy - no integer part
+     /* Must be 'R'; remainder is [finished clone of] input value */
+     return clone(lhs).finish(set,false);
+    }
+  
+  /* We need slow division */
+  res=new com.ibm.icu.math.BigDecimal(); // where we'll build result
+  res.ind=(byte)(lhs.ind*rhs.ind); // final sign (for D/I)
+  res.exp=newexp; // initial exponent (for D/I)
+  res.mant=new byte[reqdig+1]; // where build the result
+  
+  /* Now [virtually pad the mantissae with trailing zeros */
+  // Also copy the LHS, which will be our working array
+  newlen=(reqdig+reqdig)+1;
+  var1=extend(lhs.mant,newlen); // always makes longer, so new safe array
+  var1len=newlen; // [remaining digits are 0]
+  
+  var2=rhs.mant;
+  var2len=newlen;
+  
+  /* Calculate first two digits of rhs (var2), +1 for later estimations */
+  b2b=(var2[0]*10)+1;
+  if (var2.length>1) 
+   b2b=b2b+var2[1];
+  
+  /* start the long-division loops */
+  have=0;
+  {outer:for(;;){
+   thisdigit=0;
+   /* find the next digit */
+   {inner:for(;;){
+    if (var1len<var2len) 
+     break inner; // V1 too low
+    if (var1len==var2len) 
+     { // compare needed
+      {compare:do{ // comparison
+       {int $22=var1len;i=0;i:for(;$22>0;$22--,i++){
+        // var1len is always <= var1.length
+        if (i<var2.length) 
+         v2=var2[i];
+        else 
+         v2=(byte)0;
+        if (var1[i]<v2) 
+         break inner; // V1 too low
+        if (var1[i]>v2) 
+         break compare; // OK to subtract
+        }
+       }/*i*/
+       /* reach here if lhs and rhs are identical; subtraction will
+          increase digit by one, and the residue will be 0 so we
+          are done; leave the loop with residue set to 0 (in case
+          code is 'R' or ROUND_UNNECESSARY or a ROUND_HALF_xxxx is
+          being checked) */
+       thisdigit++;
+       res.mant[have]=(byte)thisdigit;
+       have++;
+       var1[0]=(byte)0; // residue to 0 [this is all we'll test]
+       // var1len=1      -- [optimized out]
+       break outer;
+      }while(false);}/*compare*/
+      /* prepare for subtraction.  Estimate BA (lengths the same) */
+      ba=(int)var1[0]; // use only first digit
+     } // lengths the same
+    else 
+     {/* lhs longer than rhs */
+      /* use first two digits for estimate */
+      ba=var1[0]*10;
+      if (var1len>1) 
+       ba=ba+var1[1];
+     }
+    /* subtraction needed; V1>=V2 */
+    mult=(ba*10)/b2b;
+    if (mult==0) 
+     mult=1;
+    thisdigit=thisdigit+mult;
+    // subtract; var1 reusable
+    var1=byteaddsub(var1,var1len,var2,var2len,(int)-mult,true);
+    if (var1[0]!=0) 
+     continue inner; // maybe another subtract needed
+    /* V1 now probably has leading zeros, remove leading 0's and try
+       again. (It could be longer than V2) */
+    {int $23=var1len-2;start=0;start:for(;start<=$23;start++){
+     if (var1[start]!=0) 
+      break start;
+     var1len--;
+     }
+    }/*start*/
+    if (start==0) 
+     continue inner;
+    // shift left
+    java.lang.System.arraycopy((java.lang.Object)var1,start,(java.lang.Object)var1,0,var1len);
+    }
+   }/*inner*/
+   
+   /* We have the next digit */
+   if ((have!=0)|(thisdigit!=0)) 
+    { // put the digit we got
+     res.mant[have]=(byte)thisdigit;
+     have++;
+     if (have==(reqdig+1)) 
+      break outer; // we have all we need
+     if (var1[0]==0) 
+      break outer; // residue now 0
+    }
+   /* can leave now if a scaled divide and exponent is small enough */
+   if (scale>=0) 
+    if (((int)-res.exp)>scale) 
+     break outer;
+   /* can leave now if not Divide and no integer part left  */
+   if (code!='D') 
+    if (res.exp<=0) 
+     break outer;
+   res.exp=res.exp-1; // reduce the exponent
+   /* to get here, V1 is less than V2, so divide V2 by 10 and go for
+      the next digit */
+   var2len--;
+   }
+  }/*outer*/
+  
+  /* here when we have finished dividing, for some reason */
+  // have is the number of digits we collected in res.mant
+  if (have==0) 
+   have=1; // res.mant[0] is 0; we always want a digit
+  
+  if ((code=='I')|(code=='R')) 
+   {/* check for integer overflow needed */
+    if ((have+res.exp)>reqdig) 
+     throw new java.lang.ArithmeticException("Integer overflow");
+    
+    if (code=='R') 
+     {remainder:do{
+      /* We were doing Remainder -- return the residue */
+      if (res.mant[0]==0)  // no integer part was found
+       return clone(lhs).finish(set,false); // .. so return lhs, canonical
+      if (var1[0]==0) 
+       return ZERO; // simple 0 residue
+      res.ind=lhs.ind; // sign is always as LHS
+      /* Calculate the exponent by subtracting the number of padding zeros
+         we added and adding the original exponent */
+      padding=((reqdig+reqdig)+1)-lhs.mant.length;
+      res.exp=(res.exp-padding)+lhs.exp;
+      
+      /* strip insignificant padding zeros from residue, and create/copy
+         the resulting mantissa if need be */
+      d=var1len;
+      {i=d-1;i:for(;i>=1;i--){if(!((res.exp<lhs.exp)&(res.exp<rhs.exp)))break;
+       if (var1[i]!=0) 
+        break i;
+       d--;
+       res.exp=res.exp+1;
+       }
+      }/*i*/
+      if (d<var1.length) 
+       {/* need to reduce */
+        newvar1=new byte[d];
+        java.lang.System.arraycopy((java.lang.Object)var1,0,(java.lang.Object)newvar1,0,d); // shorten
+        var1=newvar1;
+       }
+      res.mant=var1;
+      return res.finish(set,false);
+     }while(false);}/*remainder*/
+   }
+   
+  else 
+   {/* 'D' -- no overflow check needed */
+    // If there was a residue then bump the final digit (iff 0 or 5)
+    // so that the residue is visible for ROUND_UP, ROUND_HALF_xxx and
+    // ROUND_UNNECESSARY checks (etc.) later.
+    // [if we finished early, the residue will be 0]
+    if (var1[0]!=0) 
+     { // residue not 0
+      lasthave=res.mant[have-1];
+      if (((lasthave%5))==0) 
+       res.mant[have-1]=(byte)(lasthave+1);
+     }
+   }
+  
+  /* Here for Divide or Integer Divide */
+  // handle scaled results first ['I' always scale 0, optional for 'D']
+  if (scale>=0) 
+   {scaled:do{
+    // say 'scale have res.exp len' scale have res.exp res.mant.length
+    if (have!=res.mant.length) 
+     // already padded with 0's, so just adjust exponent
+     res.exp=res.exp-((res.mant.length-have));
+    // calculate number of digits we really want [may be 0]
+    actdig=res.mant.length-((((int)-res.exp)-scale));
+    res.round(actdig,set.roundingMode); // round to desired length
+    // This could have shifted left if round (say) 0.9->1[.0]
+    // Repair if so by adding a zero and reducing exponent
+    if (res.exp!=((int)-scale)) 
+     {
+      res.mant=extend(res.mant,res.mant.length+1);
+      res.exp=res.exp-1;
+     }
+    return res.finish(set,true); // [strip if not PLAIN]
+   }while(false);}/*scaled*/
+  
+  // reach here only if a non-scaled
+  if (have==res.mant.length) 
+   { // got digits+1 digits
+    res.round(set);
+    have=reqdig;
+   }
+  else 
+   {/* have<=reqdig */
+    if (res.mant[0]==0) 
+     return ZERO; // fastpath
+    // make the mantissa truly just 'have' long
+    // [we could let finish do this, during strip, if we adjusted
+    // the exponent; however, truncation avoids the strip loop]
+    newmant=new byte[have]; // shorten
+    java.lang.System.arraycopy((java.lang.Object)res.mant,0,(java.lang.Object)newmant,0,have);
+    res.mant=newmant;
+   }
+  return res.finish(set,true);
+  }
+
+ 
+ /* <sgml> Report a conversion exception. </sgml> */
+ 
+ private void bad(char s[]){
+  throw new java.lang.NumberFormatException("Not a number:"+" "+java.lang.String.valueOf(s));
+  }
+
+ /* <sgml> Report a bad argument to a method. </sgml>
+    Arg1 is method name
+    Arg2 is argument position
+    Arg3 is what was found */
+ 
+ private void badarg(java.lang.String name,int pos,java.lang.String value){
+  throw new java.lang.IllegalArgumentException("Bad argument"+" "+pos+" "+"to"+" "+name+":"+" "+value);
+  }
+
+ /* <sgml> Extend byte array to given length, padding with 0s.  If no
+    extension is required then return the same array. </sgml>
+ 
+    Arg1 is the source byte array
+    Arg2 is the new length (longer)
+    */
+ 
+ private static final byte[] extend(byte inarr[],int newlen){
+  byte newarr[];
+  if (inarr.length==newlen) 
+   return inarr;
+  newarr=new byte[newlen];
+  java.lang.System.arraycopy((java.lang.Object)inarr,0,(java.lang.Object)newarr,0,inarr.length);
+  // 0 padding is carried out by the JVM on allocation initialization
+  return newarr;
+  }
+
+ /* <sgml> Add or subtract two >=0 integers in byte arrays
+    <p>This routine performs the calculation:
+    <pre>
+    C=A+(B*M)
+    </pre>
+    Where M is in the range -9 through +9
+    <p>
+    If M<0 then A>=B must be true, so the result is always
+    non-negative.
+ 
+    Leading zeros are not removed after a subtraction.  The result is
+    either the same length as the longer of A and B, or 1 longer than
+    that (if a carry occurred).
+ 
+    A is not altered unless Arg6 is 1.
+    B is never altered.
+ 
+    Arg1 is A
+    Arg2 is A length to use (if longer than A, pad with 0's)
+    Arg3 is B
+    Arg4 is B length to use (if longer than B, pad with 0's)
+    Arg5 is M, the multiplier
+    Arg6 is 1 if A can be used to build the result (if it fits)
+ 
+    This routine is severely performance-critical; *any* change here
+    must be measured (timed) to assure no performance degradation.
+    */
+ // 1996.02.20 -- enhanced version of DMSRCN algorithm (1981)
+ // 1997.10.05 -- changed to byte arrays (from char arrays)
+ // 1998.07.01 -- changed to allow destructive reuse of LHS
+ // 1998.07.01 -- changed to allow virtual lengths for the arrays
+ // 1998.12.29 -- use lookaside for digit/carry calculation
+ // 1999.08.07 -- avoid multiply when mult=1, and make db an int
+ // 1999.12.22 -- special case m=-1, also drop 0 special case
+ 
+ private static final byte[] byteaddsub(byte a[],int avlen,byte b[],int bvlen,int m,boolean reuse){
+  int alength;
+  int blength;
+  int ap;
+  int bp;
+  int maxarr;
+  byte reb[];
+  boolean quickm;
+  int digit;
+  int op=0;
+  int dp90=0;
+  byte newarr[];
+  int i=0;
+  
+  
+  
+  
+  // We'll usually be right if we assume no carry
+  alength=a.length; // physical lengths
+  blength=b.length; // ..
+  ap=avlen-1; // -> final (rightmost) digit
+  bp=bvlen-1; // ..
+  maxarr=bp;
+  if (maxarr<ap) 
+   maxarr=ap;
+  reb=(byte[])null; // result byte array
+  if (reuse) 
+   if ((maxarr+1)==alength) 
+    reb=a; // OK to reuse A
+  if (reb==null) 
+   reb=new byte[maxarr+1]; // need new array
+  
+  quickm=false; // 1 if no multiply needed
+  if (m==1) 
+   quickm=true; // most common
+  else 
+   if (m==(-1)) 
+    quickm=true; // also common
+  
+  digit=0; // digit, with carry or borrow
+  {op=maxarr;op:for(;op>=0;op--){
+   if (ap>=0) 
+    {
+     if (ap<alength) 
+      digit=digit+a[ap]; // within A
+     ap--;
+    }
+   if (bp>=0) 
+    {
+     if (bp<blength) 
+      { // within B
+       if (quickm) 
+        {
+         if (m>0) 
+          digit=digit+b[bp]; // most common
+         else 
+          digit=digit-b[bp]; // also common
+        }
+       else 
+        digit=digit+(b[bp]*m);
+      }
+     bp--;
+    }
+   /* result so far (digit) could be -90 through 99 */
+   if (digit<10) 
+    if (digit>=0) 
+     {quick:do{ // 0-9
+      reb[op]=(byte)digit;
+      digit=0; // no carry
+      continue op;
+     }while(false);}/*quick*/
+   dp90=digit+90;
+   reb[op]=bytedig[dp90]; // this digit
+   digit=bytecar[dp90]; // carry or borrow
+   }
+  }/*op*/
+  
+  if (digit==0) 
+   return reb; // no carry
+  // following line will become an Assert, later
+  // if digit<0 then signal ArithmeticException("internal.error ["digit"]")
+  
+  /* We have carry -- need to make space for the extra digit */
+  newarr=(byte[])null;
+  if (reuse) 
+   if ((maxarr+2)==a.length) 
+    newarr=a; // OK to reuse A
+  if (newarr==null) 
+   newarr=new byte[maxarr+2];
+  newarr[0]=(byte)digit; // the carried digit ..
+  // .. and all the rest [use local loop for short numbers]
+  if (maxarr<10) 
+   {int $24=maxarr+1;i=0;i:for(;$24>0;$24--,i++){
+    newarr[i+1]=reb[i];
+    }
+   }/*i*/
+  else 
+   java.lang.System.arraycopy((java.lang.Object)reb,0,(java.lang.Object)newarr,1,maxarr+1);
+  return newarr;
+  }
+
+ /* <sgml> Initializer for digit array properties (lookaside). </sgml>
+    Returns the digit array, and initializes the carry array. */
+ 
+ private static final byte[] diginit(){
+  byte work[];
+  int op=0;
+  int digit=0;
+  work=new byte[(90+99)+1];
+  {op=0;op:for(;op<=(90+99);op++){
+   digit=op-90;
+   if (digit>=0) 
+    {
+     work[op]=(byte)(digit%10);
+     bytecar[op]=(byte)(digit/10); // calculate carry
+     continue op;
+    }
+   // borrowing...
+   digit=digit+100; // yes, this is right [consider -50]
+   work[op]=(byte)(digit%10);
+   bytecar[op]=(byte)((digit/10)-10); // calculate borrow [NB: - after %]
+   }
+  }/*op*/
+  return work;
+  }
+
+ /* <sgml> Create a copy of BigDecimal object for local use.
+    <p>This does NOT make a copy of the mantissa array.
+    </sgml>
+    Arg1 is the BigDecimal to clone (non-null)
+    */
+ 
+ private static final com.ibm.icu.math.BigDecimal clone(com.ibm.icu.math.BigDecimal dec){
+  com.ibm.icu.math.BigDecimal copy;
+  copy=new com.ibm.icu.math.BigDecimal();
+  copy.ind=dec.ind;
+  copy.exp=dec.exp;
+  copy.form=dec.form;
+  copy.mant=dec.mant;
+  return copy;
+  }
+
+ /* <sgml> Check one or two numbers for lost digits. </sgml>
+    Arg1 is RHS (or null, if none)
+    Arg2 is current DIGITS setting
+    returns quietly or throws an exception */
+ 
+ private void checkdigits(com.ibm.icu.math.BigDecimal rhs,int dig){
+  if (dig==0) 
+   return; // don't check if digits=0
+  // first check lhs...
+  if (this.mant.length>dig) 
+   if ((!(allzero(this.mant,dig)))) 
+    throw new java.lang.ArithmeticException("Too many digits:"+" "+this.toString());
+  if (rhs==null) 
+   return; // monadic
+  if (rhs.mant.length>dig) 
+   if ((!(allzero(rhs.mant,dig)))) 
+    throw new java.lang.ArithmeticException("Too many digits:"+" "+rhs.toString());
+  return;
+  }
+
+ /* <sgml> Round to specified digits, if necessary. </sgml>
+    Arg1 is requested MathContext [with length and rounding mode]
+    returns this, for convenience */
+ 
+ private com.ibm.icu.math.BigDecimal round(com.ibm.icu.math.MathContext set){
+  return round(set.digits,set.roundingMode);
+  }
+
+ /* <sgml> Round to specified digits, if necessary.
+    Arg1 is requested length (digits to round to)
+            [may be <=0 when called from format, dodivide, etc.]
+    Arg2 is rounding mode
+    returns this, for convenience
+ 
+    ind and exp are adjusted, but not cleared for a mantissa of zero
+ 
+    The length of the mantissa returned will be Arg1, except when Arg1
+    is 0, in which case the returned mantissa length will be 1.
+    </sgml>
+    */
+ 
+ private com.ibm.icu.math.BigDecimal round(int len,int mode){
+  int adjust;
+  int sign;
+  byte oldmant[];
+  boolean reuse=false;
+  byte first=0;
+  int increment;
+  byte newmant[]=null;
+  adjust=mant.length-len;
+  if (adjust<=0) 
+   return this; // nowt to do
+  
+  exp=exp+adjust; // exponent of result
+  sign=(int)ind; // save [assumes -1, 0, 1]
+  oldmant=mant; // save
+  if (len>0) 
+   {
+    // remove the unwanted digits
+    mant=new byte[len];
+    java.lang.System.arraycopy((java.lang.Object)oldmant,0,(java.lang.Object)mant,0,len);
+    reuse=true; // can reuse mantissa
+    first=oldmant[len]; // first of discarded digits
+   }
+  else 
+   {/* len<=0 */
+    mant=ZERO.mant;
+    ind=iszero;
+    reuse=false; // cannot reuse mantissa
+    if (len==0) 
+     first=oldmant[0];
+    else 
+     first=(byte)0; // [virtual digit]
+   }
+  
+  // decide rounding adjustment depending on mode, sign, and discarded digits
+  increment=0; // bumper
+  {modes:do{/*select*/
+  if (mode==ROUND_HALF_UP)
+   { // default first [most common]
+    if (first>=5) 
+     increment=sign;
+   }
+  else if (mode==ROUND_UNNECESSARY)
+   { // default for setScale()
+    // discarding any non-zero digits is an error
+    if ((!(allzero(oldmant,len)))) 
+     throw new java.lang.ArithmeticException("Rounding necessary");
+   }
+  else if (mode==ROUND_HALF_DOWN)
+   { // 0.5000 goes down
+    if (first>5) 
+     increment=sign;
+    else 
+     if (first==5) 
+      if ((!(allzero(oldmant,len+1)))) 
+       increment=sign;
+   }
+  else if (mode==ROUND_HALF_EVEN)
+   { // 0.5000 goes down if left digit even
+    if (first>5) 
+     increment=sign;
+    else 
+     if (first==5) 
+      {
+       if ((!(allzero(oldmant,len+1)))) 
+        increment=sign;
+       else /* 0.5000 */
+        if ((((mant[mant.length-1])%2))==1) 
+         increment=sign;
+      }
+   }
+  else if (mode==ROUND_DOWN)
+   ; // never increment
+  else if (mode==ROUND_UP)
+   { // increment if discarded non-zero
+    if ((!(allzero(oldmant,len)))) 
+     increment=sign;
+   }
+  else if (mode==ROUND_CEILING)
+   { // more positive
+    if (sign>0) 
+     if ((!(allzero(oldmant,len)))) 
+      increment=sign;
+   }
+  else if (mode==ROUND_FLOOR)
+   { // more negative
+    if (sign<0) 
+     if ((!(allzero(oldmant,len)))) 
+      increment=sign;
+   }
+  else{
+   throw new java.lang.IllegalArgumentException("Bad round value:"+" "+mode);
+  }
+  }while(false);}/*modes*/
+  
+  if (increment!=0) 
+   {bump:do{
+    if (ind==iszero) 
+     {
+      // we must not subtract from 0, but result is trivial anyway
+      mant=ONE.mant;
+      ind=(byte)increment;
+     }
+    else 
+     {
+      // mantissa is non-0; we can safely add or subtract 1
+      if (ind==isneg) 
+       increment=(int)-increment;
+      newmant=byteaddsub(mant,mant.length,ONE.mant,1,increment,reuse);
+      if (newmant.length>mant.length) 
+       { // had a carry
+        // drop rightmost digit and raise exponent
+        exp++;
+        // mant is already the correct length
+        java.lang.System.arraycopy((java.lang.Object)newmant,0,(java.lang.Object)mant,0,mant.length);
+       }
+      else 
+       mant=newmant;
+     }
+   }while(false);}/*bump*/
+  // rounding can increase exponent significantly
+  if (exp>MaxExp) 
+   throw new java.lang.ArithmeticException("Exponent Overflow:"+" "+exp);
+  return this;
+  }
+
+ /* <sgml> Test if rightmost digits are all 0.
+    Arg1 is a mantissa array to test
+    Arg2 is the offset of first digit to check
+            [may be negative; if so, digits to left are 0's]
+    returns 1 if all the digits starting at Arg2 are 0
+ 
+    Arg2 may be beyond array bounds, in which case 1 is returned
+    </sgml> */
+ 
+ private static final boolean allzero(byte array[],int start){
+  int i=0;
+  if (start<0) 
+   start=0;
+  {int $25=array.length-1;i=start;i:for(;i<=$25;i++){
+   if (array[i]!=0) 
+    return false;
+   }
+  }/*i*/
+  return true;
+  }
+
+ /* <sgml> Carry out final checks and canonicalization
+    <p>
+    This finishes off the current number by:
+      1. Rounding if necessary (NB: length includes leading zeros)
+      2. Stripping trailing zeros (if requested and \PLAIN)
+      3. Stripping leading zeros (always)
+      4. Selecting exponential notation (if required)
+      5. Converting a zero result to just '0' (if \PLAIN)
+    In practice, these operations overlap and share code.
+    It always sets form.
+    </sgml>
+    Arg1 is requested MathContext (length to round to, trigger, and FORM)
+    Arg2 is 1 if trailing insignificant zeros should be removed after
+         round (for division, etc.), provided that set.form isn't PLAIN.
+   returns this, for convenience
+   */
+ 
+ private com.ibm.icu.math.BigDecimal finish(com.ibm.icu.math.MathContext set,boolean strip){
+  int d=0;
+  int i=0;
+  byte newmant[]=null;
+  int mag=0;
+  int sig=0;
+  /* Round if mantissa too long and digits requested */
+  if (set.digits!=0) 
+   if (this.mant.length>set.digits) 
+    this.round(set);
+  
+  /* If strip requested (and standard formatting), remove
+     insignificant trailing zeros. */
+  if (strip) 
+   if (set.form!=com.ibm.icu.math.MathContext.PLAIN) 
+    {
+     d=this.mant.length;
+     /* see if we need to drop any trailing zeros */
+     {i=d-1;i:for(;i>=1;i--){
+      if (this.mant[i]!=0) 
+       break i;
+      d--;
+      exp++;
+      }
+     }/*i*/
+     if (d<this.mant.length) 
+      {/* need to reduce */
+       newmant=new byte[d];
+       java.lang.System.arraycopy((java.lang.Object)this.mant,0,(java.lang.Object)newmant,0,d);
+       this.mant=newmant;
+      }
+    }
+  
+  form=(byte)com.ibm.icu.math.MathContext.PLAIN; // preset
+  
+  /* Now check for leading- and all- zeros in mantissa */
+  {int $26=this.mant.length;i=0;i:for(;$26>0;$26--,i++){
+   if (this.mant[i]!=0) 
+    {
+     // non-0 result; ind will be correct
+     // remove leading zeros [e.g., after subtract]
+     if (i>0) 
+      {delead:do{
+       newmant=new byte[this.mant.length-i];
+       java.lang.System.arraycopy((java.lang.Object)this.mant,i,(java.lang.Object)newmant,0,this.mant.length-i);
+       this.mant=newmant;
+      }while(false);}/*delead*/
+     // now determine form if not PLAIN
+     mag=exp+mant.length;
+     if (mag>0) 
+      { // most common path
+       if (mag>set.digits) 
+        if (set.digits!=0) 
+         form=(byte)set.form;
+       if ((mag-1)<=MaxExp) 
+        return this; // no overflow; quick return
+      }
+     else 
+      if (mag<(-5)) 
+       form=(byte)set.form;
+     /* check for overflow */
+     mag--;
+     if ((mag<MinExp)|(mag>MaxExp)) 
+      {overflow:do{
+       // possible reprieve if form is engineering
+       if (form==com.ibm.icu.math.MathContext.ENGINEERING) 
+        {
+         sig=mag%3; // leftover
+         if (sig<0) 
+          sig=3+sig; // negative exponent
+         mag=mag-sig; // exponent to use
+         // 1999.06.29: second test here must be MaxExp
+         if (mag>=MinExp) 
+          if (mag<=MaxExp) 
+           break overflow;
+        }
+       throw new java.lang.ArithmeticException("Exponent Overflow:"+" "+mag);
+      }while(false);}/*overflow*/
+     return this;
+    }
+   }
+  }/*i*/
+  
+  // Drop through to here only if mantissa is all zeros
+  ind=iszero;
+  {/*select*/
+  if (set.form!=com.ibm.icu.math.MathContext.PLAIN)
+   exp=0; // standard result; go to '0'
+  else if (exp>0)
+   exp=0; // +ve exponent also goes to '0'
+  else{
+   // a plain number with -ve exponent; preserve and check exponent
+   if (exp<MinExp) 
+    throw new java.lang.ArithmeticException("Exponent Overflow:"+" "+exp);
+  }
+  }
+  mant=ZERO.mant; // canonical mantissa
+  return this;
+  }
+ }
diff --git a/src/com/ibm/icu/math/MathContext.java b/src/com/ibm/icu/math/MathContext.java
new file mode 100755
index 0000000..8c423c8
--- /dev/null
+++ b/src/com/ibm/icu/math/MathContext.java
@@ -0,0 +1,582 @@
+/* Generated from 'MathContext.nrx' 8 Sep 2000 11:07:48 [v2.00] */
+/* Options: Binary Comments Crossref Format Java Logo Strictargs Strictcase Trace2 Verbose3 */
+package com.ibm.icu.math;
+
+/* ------------------------------------------------------------------ */
+/* MathContext -- Math context settings                               */
+/* ------------------------------------------------------------------ */
+/* Copyright IBM Corporation, 1997, 2000.  All Rights Reserved.       */
+/*                                                                    */
+/*   The MathContext object encapsulates the settings used by the     */
+/*   BigDecimal class; it could also be used by other arithmetics.    */
+/* ------------------------------------------------------------------ */
+/* Notes:                                                             */
+/*                                                                    */
+/* 1. The properties are checked for validity on construction, so     */
+/*    the BigDecimal class may assume that they are correct.          */
+/* ------------------------------------------------------------------ */
+/* Author:    Mike Cowlishaw                                          */
+/* 1997.09.03 Initial version (edited from netrexx.lang.RexxSet)      */
+/* 1997.09.12 Add lostDigits property                                 */
+/* 1998.05.02 Make the class immutable and final; drop set methods    */
+/* 1998.06.05 Add Round (rounding modes) property                     */
+/* 1998.06.25 Rename from DecimalContext; allow digits=0              */
+/* 1998.10.12 change to com.ibm.icu.math package                          */
+/* 1999.02.06 add javadoc comments                                    */
+/* 1999.03.05 simplify; changes from discussion with J. Bloch         */
+/* 1999.03.13 1.00 release to IBM Centre for Java Technology          */
+/* 1999.07.10 1.04 flag serialization unused                          */
+/* 2000.01.01 1.06 copyright update                                   */
+/* ------------------------------------------------------------------ */
+
+
+
+
+/**
+ * The <code>MathContext</code> immutable class encapsulates the
+ * settings understood by the operator methods of the {@link BigDecimal}
+ * class (and potentially other classes).  Operator methods are those
+ * that effect an operation on a number or a pair of numbers.
+ * <p>
+ * The settings, which are not base-dependent, comprise:
+ * <ol>
+ * <li><code>digits</code>:
+ * the number of digits (precision) to be used for an operation
+ * <li><code>form</code>:
+ * the form of any exponent that results from the operation
+ * <li><code>lostDigits</code>:
+ * whether checking for lost digits is enabled
+ * <li><code>roundingMode</code>:
+ * the algorithm to be used for rounding.
+ * </ol>
+ * <p>
+ * When provided, a <code>MathContext</code> object supplies the
+ * settings for an operation directly.
+ * <p>
+ * When <code>MathContext.DEFAULT</code> is provided for a
+ * <code>MathContext</code> parameter then the default settings are used
+ * (<code>9, SCIENTIFIC, false, ROUND_HALF_UP</code>).
+ * <p>
+ * In the <code>BigDecimal</code> class, all methods which accept a
+ * <code>MathContext</code> object defaults) also have a version of the
+ * method which does not accept a MathContext parameter.  These versions
+ * carry out unlimited precision fixed point arithmetic (as though the
+ * settings were (<code>0, PLAIN, false, ROUND_HALF_UP</code>).
+ * <p>
+ * The instance variables are shared with default access (so they are
+ * directly accessible to the <code>BigDecimal</code> class), but must
+ * never be changed.
+ * <p>
+ * The rounding mode constants have the same names and values as the
+ * constants of the same name in <code>java.math.BigDecimal</code>, to
+ * maintain compatibility with earlier versions of
+ * <code>BigDecimal</code>.
+ *
+ * @see     BigDecimal
+ * @version 1.08 2000.06.18
+ * @author  Mike Cowlishaw
+ */
+
+public final class MathContext implements java.io.Serializable{
+ private static final java.lang.String $0="MathContext.nrx";
+ 
+ /* ----- Properties ----- */
+ /* properties public constant */
+ /**
+  * Plain (fixed point) notation, without any exponent.
+  * Used as a setting to control the form of the result of a
+  * <code>BigDecimal</code> operation.
+  * A zero result in plain form may have a decimal part of one or
+  * more zeros.
+  *
+  * @see #ENGINEERING
+  * @see #SCIENTIFIC
+  */
+ public static final int PLAIN=0; // [no exponent]
+ 
+ /**
+  * Standard floating point notation (with scientific exponential
+  * format, where there is one digit before any decimal point).
+  * Used as a setting to control the form of the result of a
+  * <code>BigDecimal</code> operation.
+  * A zero result in plain form may have a decimal part of one or
+  * more zeros.
+  *
+  * @see #ENGINEERING
+  * @see #PLAIN
+  */
+ public static final int SCIENTIFIC=1; // 1 digit before .
+ 
+ /**
+  * Standard floating point notation (with engineering exponential
+  * format, where the power of ten is a multiple of 3).
+  * Used as a setting to control the form of the result of a
+  * <code>BigDecimal</code> operation.
+  * A zero result in plain form may have a decimal part of one or
+  * more zeros.
+  *
+  * @see #PLAIN
+  * @see #SCIENTIFIC
+  */
+ public static final int ENGINEERING=2; // 1-3 digits before .
+ 
+ // The rounding modes match the original BigDecimal class values
+ /**
+  * Rounding mode to round to a more positive number.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If any of the discarded digits are non-zero then the result
+  * should be rounded towards the next more positive digit.
+  */
+ public static final int ROUND_CEILING=2;
+ 
+ /**
+  * Rounding mode to round towards zero.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * All discarded digits are ignored (truncated).  The result is
+  * neither incremented nor decremented.
+  */
+ public static final int ROUND_DOWN=1;
+ 
+ /**
+  * Rounding mode to round to a more negative number.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If any of the discarded digits are non-zero then the result
+  * should be rounded towards the next more negative digit.
+  */
+ public static final int ROUND_FLOOR=3;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded down.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If the discarded digits represent greater than half (0.5 times)
+  * the value of a one in the next position then the result should be
+  * rounded up (away from zero).  Otherwise the discarded digits are
+  * ignored.
+  */
+ public static final int ROUND_HALF_DOWN=5;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded to the nearest even neighbor.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If the discarded digits represent greater than half (0.5 times)
+  * the value of a one in the next position then the result should be
+  * rounded up (away from zero).  If they represent less than half,
+  * then the result should be rounded down.
+  * <p>
+  * Otherwise (they represent exactly half) the result is rounded
+  * down if its rightmost digit is even, or rounded up if its
+  * rightmost digit is odd (to make an even digit).
+  */
+ public static final int ROUND_HALF_EVEN=6;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded up.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If the discarded digits represent greater than or equal to half
+  * (0.5 times) the value of a one in the next position then the result
+  * should be rounded up (away from zero).  Otherwise the discarded
+  * digits are ignored.
+  */
+ public static final int ROUND_HALF_UP=4;
+ 
+ /**
+  * Rounding mode to assert that no rounding is necessary.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * Rounding (potential loss of information) is not permitted.
+  * If any of the discarded digits are non-zero then an
+  * <code>ArithmeticException</code> should be thrown.
+  */
+ public static final int ROUND_UNNECESSARY=7;
+ 
+ /**
+  * Rounding mode to round away from zero.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If any of the discarded digits are non-zero then the result will
+  * be rounded up (away from zero).
+  */
+ public static final int ROUND_UP=0;
+ 
+ 
+ /* properties shared */
+ /**
+  * The number of digits (precision) to be used for an operation.
+  * A value of 0 indicates that unlimited precision (as many digits
+  * as are required) will be used.
+  * <p>
+  * The {@link BigDecimal} operator methods use this value to
+  * determine the precision of results.
+  * Note that leading zeros (in the integer part of a number) are
+  * never significant.
+  * <p>
+  * <code>digits</code> will always be non-negative.
+  *
+  * @serial
+  */
+ int digits;
+ 
+ /**
+  * The form of results from an operation.
+  * <p>
+  * The {@link BigDecimal} operator methods use this value to
+  * determine the form of results, in particular whether and how
+  * exponential notation should be used.
+  *
+  * @see #ENGINEERING
+  * @see #PLAIN
+  * @see #SCIENTIFIC
+  * @serial
+  */
+ int form; // values for this must fit in a byte
+ 
+ /**
+  * Controls whether lost digits checking is enabled for an
+  * operation.
+  * Set to <code>true</code> to enable checking, or
+  * to <code>false</code> to disable checking.
+  * <p>
+  * When enabled, the {@link BigDecimal} operator methods check
+  * the precision of their operand or operands, and throw an
+  * <code>ArithmeticException</code> if an operand is more precise
+  * than the digits setting (that is, digits would be lost).
+  * When disabled, operands are rounded to the specified digits.
+  *
+  * @serial
+  */
+ boolean lostDigits;
+ 
+ /**
+  * The rounding algorithm to be used for an operation.
+  * <p>
+  * The {@link BigDecimal} operator methods use this value to
+  * determine the algorithm to be used when non-zero digits have to
+  * be discarded in order to reduce the precision of a result.
+  * The value must be one of the public constants whose name starts
+  * with <code>ROUND_</code>.
+  *
+  * @see #ROUND_CEILING
+  * @see #ROUND_DOWN
+  * @see #ROUND_FLOOR
+  * @see #ROUND_HALF_DOWN
+  * @see #ROUND_HALF_EVEN
+  * @see #ROUND_HALF_UP
+  * @see #ROUND_UNNECESSARY
+  * @see #ROUND_UP
+  * @serial
+  */
+ int roundingMode;
+ 
+ /* properties private constant */
+ // default settings
+ private static final int DEFAULT_FORM=SCIENTIFIC;
+ private static final int DEFAULT_DIGITS=9;
+ private static final boolean DEFAULT_LOSTDIGITS=false;
+ private static final int DEFAULT_ROUNDINGMODE=ROUND_HALF_UP;
+ 
+ /* properties private constant */
+ 
+ private static final int MIN_DIGITS=0; // smallest value for DIGITS.
+ private static final int MAX_DIGITS=999999999; // largest value for DIGITS.  If increased,
+ // the BigDecimal class may need update.
+ // list of valid rounding mode values, most common two first
+ private static final int ROUNDS[]=new int[]{ROUND_HALF_UP,ROUND_UNNECESSARY,ROUND_CEILING,ROUND_DOWN,ROUND_FLOOR,ROUND_HALF_DOWN,ROUND_HALF_EVEN,ROUND_UP};
+ 
+ 
+ private static final java.lang.String ROUNDWORDS[]=new java.lang.String[]{"ROUND_HALF_UP","ROUND_UNNECESSARY","ROUND_CEILING","ROUND_DOWN","ROUND_FLOOR","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_UP"}; // matching names of the ROUNDS values
+ 
+ 
+ 
+ 
+ /* properties private constant unused */
+ 
+ // Serialization version
+ private static final long serialVersionUID=7163376998892515376L;
+ 
+ /* properties public constant */
+ /**
+  * A <code>MathContext</code> object initialized to the default
+  * settings for general-purpose arithmetic.  That is,
+  * <code>digits=9 form=SCIENTIFIC lostDigits=false
+  * roundingMode=ROUND_HALF_UP</code>.
+  *
+  * @see #SCIENTIFIC
+  * @see #ROUND_HALF_UP
+  */
+ public static final com.ibm.icu.math.MathContext DEFAULT=new com.ibm.icu.math.MathContext(DEFAULT_DIGITS,DEFAULT_FORM,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE);
+
+ 
+ 
+ 
+ /* ----- Constructors ----- */
+ 
+ /**
+  * Constructs a new <code>MathContext</code> with a specified
+  * precision.
+  * The other settings are set to the default values
+  * (see {@link #DEFAULT}).
+  *
+  * An <code>IllegalArgumentException</code> is thrown if the
+  * <code>setdigits</code> parameter is out of range
+  * (&lt;0 or &gt;999999999).
+  *
+  * @param setdigits     The <code>int</code> digits setting
+  *                      for this <code>MathContext</code>.
+  * @throws IllegalArgumentException parameter out of range.
+  */
+ 
+ public MathContext(int setdigits){
+  this(setdigits,DEFAULT_FORM,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE);
+  return;}
+
+ 
+ /**
+  * Constructs a new <code>MathContext</code> with a specified
+  * precision and form.
+  * The other settings are set to the default values
+  * (see {@link #DEFAULT}).
+  *
+  * An <code>IllegalArgumentException</code> is thrown if the
+  * <code>setdigits</code> parameter is out of range
+  * (&lt;0 or &gt;999999999), or if the value given for the
+  * <code>setform</code> parameter is not one of the appropriate
+  * constants.
+  *
+  * @param setdigits     The <code>int</code> digits setting
+  *                      for this <code>MathContext</code>.
+  * @param setform       The <code>int</code> form setting
+  *                      for this <code>MathContext</code>.
+  * @throws IllegalArgumentException parameter out of range.
+  */
+ 
+ public MathContext(int setdigits,int setform){
+  this(setdigits,setform,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE);
+  return;}
+
+ /**
+  * Constructs a new <code>MathContext</code> with a specified
+  * precision, form, and lostDigits setting.
+  * The roundingMode setting is set to its default value
+  * (see {@link #DEFAULT}).
+  *
+  * An <code>IllegalArgumentException</code> is thrown if the
+  * <code>setdigits</code> parameter is out of range
+  * (&lt;0 or &gt;999999999), or if the value given for the
+  * <code>setform</code> parameter is not one of the appropriate
+  * constants.
+  *
+  * @param setdigits     The <code>int</code> digits setting
+  *                      for this <code>MathContext</code>.
+  * @param setform       The <code>int</code> form setting
+  *                      for this <code>MathContext</code>.
+  * @param setlostdigits The <code>boolean</code> lostDigits
+  *                      setting for this <code>MathContext</code>.
+  * @throws IllegalArgumentException parameter out of range.
+  */
+ 
+ public MathContext(int setdigits,int setform,boolean setlostdigits){
+  this(setdigits,setform,setlostdigits,DEFAULT_ROUNDINGMODE);
+  return;}
+
+ /**
+  * Constructs a new <code>MathContext</code> with a specified
+  * precision, form, lostDigits, and roundingMode setting.
+  *
+  * An <code>IllegalArgumentException</code> is thrown if the
+  * <code>setdigits</code> parameter is out of range
+  * (&lt;0 or &gt;999999999), or if the value given for the
+  * <code>setform</code> or <code>setroundingmode</code> parameters is
+  * not one of the appropriate constants.
+  *
+  * @param setdigits       The <code>int</code> digits setting
+  *                        for this <code>MathContext</code>.
+  * @param setform         The <code>int</code> form setting
+  *                        for this <code>MathContext</code>.
+  * @param setlostdigits   The <code>boolean</code> lostDigits
+  *                        setting for this <code>MathContext</code>.
+  * @param setroundingmode The <code>int</code> roundingMode setting
+  *                        for this <code>MathContext</code>.
+  * @throws IllegalArgumentException parameter out of range.
+  */
+ 
+ public MathContext(int setdigits,int setform,boolean setlostdigits,int setroundingmode){super();
+  
+  
+  // set values, after checking
+  if (setdigits!=DEFAULT_DIGITS) 
+   {
+    if (setdigits<MIN_DIGITS) 
+     throw new java.lang.IllegalArgumentException("Digits too small:"+" "+setdigits);
+    if (setdigits>MAX_DIGITS) 
+     throw new java.lang.IllegalArgumentException("Digits too large:"+" "+setdigits);
+   }
+  {/*select*/
+  if (setform==SCIENTIFIC)
+   ; // [most common]
+  else if (setform==ENGINEERING)
+   ;
+  else if (setform==PLAIN)
+   ;
+  else{
+   throw new java.lang.IllegalArgumentException("Bad form value:"+" "+setform);
+  }
+  }
+  if ((!(isValidRound(setroundingmode)))) 
+   throw new java.lang.IllegalArgumentException("Bad roundingMode value:"+" "+setroundingmode);
+  digits=setdigits;
+  form=setform;
+  lostDigits=setlostdigits; // [no bad value possible]
+  roundingMode=setroundingmode;
+  return;}
+
+ /**
+  * Returns the digits setting.
+  * This value is always non-negative.
+  *
+  * @return an <code>int</code> which is the value of the digits
+  *         setting
+  */
+ 
+ public int getDigits(){
+  return digits;
+  }
+
+ /**
+  * Returns the form setting.
+  * This will be one of
+  * {@link #ENGINEERING},
+  * {@link #PLAIN}, or
+  * {@link #SCIENTIFIC}.
+  *
+  * @return an <code>int</code> which is the value of the form setting
+  */
+ 
+ public int getForm(){
+  return form;
+  }
+
+ /**
+  * Returns the lostDigits setting.
+  * This will be either <code>true</code> (enabled) or
+  * <code>false</code> (disabled).
+  *
+  * @return a <code>boolean</code> which is the value of the lostDigits
+  *           setting
+  */
+ 
+ public boolean getLostDigits(){
+  return lostDigits;
+  }
+
+ /**
+  * Returns the roundingMode setting.
+  * This will be one of
+  * {@link  #ROUND_CEILING},
+  * {@link  #ROUND_DOWN},
+  * {@link  #ROUND_FLOOR},
+  * {@link  #ROUND_HALF_DOWN},
+  * {@link  #ROUND_HALF_EVEN},
+  * {@link  #ROUND_HALF_UP},
+  * {@link  #ROUND_UNNECESSARY}, or
+  * {@link  #ROUND_UP}.
+  *
+  * @return an <code>int</code> which is the value of the roundingMode
+  *         setting
+  */
+ 
+ public int getRoundingMode(){
+  return roundingMode;
+  }
+
+ /** Returns the <code>MathContext</code> as a readable string.
+  * The <code>String</code> returned represents the settings of the
+  * <code>MathContext</code> object as four blank-delimited words
+  * separated by a single blank and with no leading or trailing blanks,
+  * as follows:
+  * <ol>
+  * <li>
+  * <code>digits=</code>, immediately followed by
+  * the value of the digits setting as a numeric word.
+  * <li>
+  * <code>form=</code>, immediately followed by
+  * the value of the form setting as an uppercase word
+  * (one of <code>SCIENTIFIC</code>, <code>PLAIN</code>, or
+  * <code>ENGINEERING</code>).
+  * <li>
+  * <code>lostDigits=</code>, immediately followed by
+  * the value of the lostDigits setting
+  * (<code>1</code> if enabled, <code>0</code> if disabled).
+  * <li>
+  * <code>roundingMode=</code>, immediately followed by
+  * the value of the roundingMode setting as a word.
+  * This word will be the same as the name of the corresponding public
+  * constant.
+  * </ol>
+  * <p>
+  * For example:
+  * <br><code>
+  * digits=9 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_HALF_UP
+  * </code>
+  * <p>
+  * Additional words may be appended to the result of
+  * <code>toString</code> in the future if more properties are added
+  * to the class.
+  *
+  * @return a <code>String</code> representing the context settings.
+  */
+ 
+ public java.lang.String toString(){
+  java.lang.String formstr=null;
+  int r=0;
+  java.lang.String roundword=null;
+  {/*select*/
+  if (form==SCIENTIFIC)
+   formstr="SCIENTIFIC";
+  else if (form==ENGINEERING)
+   formstr="ENGINEERING";
+  else{
+   formstr="PLAIN";/* form=PLAIN */
+  }
+  }
+  {int $1=ROUNDS.length;r=0;r:for(;$1>0;$1--,r++){
+   if (roundingMode==ROUNDS[r]) 
+    {
+     roundword=ROUNDWORDS[r];
+     break r;
+    }
+   }
+  }/*r*/
+  return "digits="+digits+" "+"form="+formstr+" "+"lostDigits="+(lostDigits?"1":"0")+" "+"roundingMode="+roundword;
+  }
+
+ 
+ /* <sgml> Test whether round is valid. </sgml> */
+ // This could be made shared for use by BigDecimal for setScale.
+ 
+ private static boolean isValidRound(int testround){
+  int r=0;
+  {int $2=ROUNDS.length;r=0;r:for(;$2>0;$2--,r++){
+   if (testround==ROUNDS[r]) 
+    return true;
+   }
+  }/*r*/
+  return false;
+  }
+ }
diff --git a/src/com/ibm/icu/math/package.html b/src/com/ibm/icu/math/package.html
new file mode 100755
index 0000000..adb6639
--- /dev/null
+++ b/src/com/ibm/icu/math/package.html
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+
+<head><!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/math/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/04/05 18:05:11 $
+-->
+
+<title>C:\cvs\icu4j\src\com\ibm\demo\package.html</title>
+</head>
+
+<body bgcolor="white">
+
+<p>IBM BigDecimal support.</p>
+</body>
+</html>
diff --git a/src/com/ibm/icu/text/AnyTransliterator.java b/src/com/ibm/icu/text/AnyTransliterator.java
new file mode 100644
index 0000000..e6743dd
--- /dev/null
+++ b/src/com/ibm/icu/text/AnyTransliterator.java
@@ -0,0 +1,338 @@
+/*
+*****************************************************************
+* Copyright (c) 2002, International Business Machines Corporation
+* and others.  All Rights Reserved.
+*****************************************************************
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/AnyTransliterator.java,v $ 
+* $Revision: 1.1 $
+*****************************************************************
+* Date        Name        Description
+* 06/06/2002  aliu        Creation.
+*****************************************************************
+*/
+package com.ibm.icu.text;
+import com.ibm.icu.lang.UScript;
+import java.lang.Math;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * A transliterator that translates multiple input scripts to a single
+ * output script.  It is named Any-T or Any-T/V, where T is the target
+ * and V is the optional variant.  The target T is a script.
+ * 
+ * <p>An AnyTransliterator partitions text into runs of the same
+ * script, together with adjacent COMMON or INHERITED characters.
+ * After determining the script of each run, it transliterates from
+ * that script to the given target/variant.  It does so by
+ * instantiating a transliterator from the source script to the
+ * target/variant.  If a run consists only of the target script,
+ * COMMON, or INHERITED characters, then the run is not changed.
+ *
+ * <p>At startup, all possible AnyTransliterators are registered with
+ * the system, as determined by examining the registered script
+ * transliterators.
+ * 
+ * @since ICU 2.2
+ * @author Alan Liu
+ */
+class AnyTransliterator extends Transliterator {
+
+    //------------------------------------------------------------
+    // Constants
+    
+    static final char TARGET_SEP = '-';
+    static final char VARIANT_SEP = '/';
+    static final String ANY = "Any";
+    static final String NULL_ID = "Null";
+    static final String LATIN_PIVOT = "-Latin;Latin-";
+    
+    /**
+     * Cache mapping UScriptCode values to Transliterator*.
+     */
+    private Map cache;
+
+    /**
+     * The target or target/variant string.
+     */
+    private String target;
+
+    /**
+     * The target script code.  Never USCRIPT_INVALID_CODE.
+     */
+    private int targetScript;
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position pos, boolean isIncremental) {
+        int allStart = pos.start;
+        int allLimit = pos.limit;
+
+        ScriptRunIterator it =
+            new ScriptRunIterator(text, pos.contextStart, pos.contextLimit);
+
+        while (it.next()) {
+            // Ignore runs in the ante context
+            if (it.limit <= allStart) continue;
+
+            // Try to instantiate transliterator from it.scriptCode to
+            // our target or target/variant
+            Transliterator t = getTransliterator(it.scriptCode);
+
+            if (t == null) {
+                // We have no transliterator.  Do nothing, but keep
+                // pos.start up to date.
+                pos.start = it.limit;
+                continue;
+            }
+
+            // If the run end is before the transliteration limit, do
+            // a non-incremental transliteration.  Otherwise do an
+            // incremental one.
+            boolean incremental = isIncremental && (it.limit >= allLimit);
+
+            pos.start = Math.max(allStart, it.start);
+            pos.limit = Math.min(allLimit, it.limit);
+            int limit = pos.limit;
+            t.filteredTransliterate(text, pos, incremental);
+            int delta = pos.limit - limit;
+            allLimit += delta;
+            it.adjustLimit(delta);
+
+            // We're done if we enter the post context
+            if (it.limit >= allLimit) break;
+        }
+
+        // Restore limit.  pos.start is fine where the last transliterator
+        // left it, or at the end of the last run.
+        pos.limit = allLimit;
+    }
+
+    /**
+     * Private constructor
+     * @param id the ID of the form S-T or S-T/V, where T is theTarget
+     * and V is theVariant.  Must not be empty.
+     * @param theTarget the target name.  Must not be empty, and must
+     * name a script corresponding to theTargetScript.
+     * @param theVariant the variant name, or the empty string if
+     * there is no variant
+     * @param theTargetScript the script code corresponding to
+     * theTarget.
+     * @param ec error code, fails if the internal hashtable cannot be
+     * allocated
+     */
+    private AnyTransliterator(String id,
+                              String theTarget,
+                              String theVariant,
+                              int theTargetScript) {
+        super(id, null);
+        targetScript = theTargetScript;
+        cache = new HashMap();
+        
+        target = theTarget;
+        if (theVariant.length() > 0) {
+            target = theTarget + VARIANT_SEP + theVariant;
+        }
+    }
+
+    /**
+     * Returns a transliterator from the given source to our target or
+     * target/variant.  Returns NULL if the source is the same as our
+     * target script, or if the source is USCRIPT_INVALID_CODE.
+     * Caches the result and returns the same transliterator the next
+     * time.  The caller does NOT own the result and must not delete
+     * it.
+     */
+    private Transliterator getTransliterator(int source) {
+        if (source == targetScript || source == UScript.INVALID_CODE) {
+            return null;
+        }
+
+        Integer key = new Integer(source);
+        Transliterator t = (Transliterator) cache.get(key);
+        if (t == null) {
+            String sourceName = UScript.getName(source);
+            String id = sourceName + TARGET_SEP + target;
+        
+            t = Transliterator.getInstance(id, FORWARD);
+            if (t == null) {
+            
+                // Try to pivot around Latin, our most common script
+                id = sourceName + LATIN_PIVOT + target;
+                t = Transliterator.getInstance(id, FORWARD);
+            }
+
+            if (t != null) {
+                cache.put(key, t);
+            }
+        }
+
+        return t;
+    }
+
+    /**
+     * Registers standard transliterators with the system.  Called by
+     * Transliterator during initialization.  Scan all current targets
+     * and register those that are scripts T as Any-T/V.
+     */
+    static void register() {
+
+        HashSet seen = new HashSet();
+
+        for (Enumeration s=Transliterator.getAvailableSources(); s.hasMoreElements(); ) {
+            String source = (String) s.nextElement();
+
+            // Ignore the "Any" source
+            if (source.equalsIgnoreCase(ANY)) continue;
+
+            for (Enumeration t=Transliterator.getAvailableTargets(source);
+                 t.hasMoreElements(); ) {
+                String target = (String) t.nextElement();
+
+                // Only process each target once
+                if (seen.contains(target)) continue;
+                seen.add(target);
+            
+                // Get the script code for the target.  If not a script, ignore.
+                int targetScript = scriptNameToCode(target);
+                if (targetScript == UScript.INVALID_CODE) continue;
+
+                for (Enumeration v=Transliterator.getAvailableVariants(source, target);
+                     v.hasMoreElements(); ) {
+                    String variant = (String) v.nextElement();
+                
+                    String id;
+                    id = TransliteratorIDParser.STVtoID(ANY, target, variant);
+                    AnyTransliterator trans = new AnyTransliterator(id, target, variant,
+                                                                    targetScript);
+                    Transliterator.registerInstance(trans);
+                    Transliterator.registerSpecialInverse(target, NULL_ID, false);
+                }
+            }
+        }
+    }
+
+    /**
+     * Return the script code for a given name, or
+     * UScript.INVALID_CODE if not found.
+     */
+    private static int scriptNameToCode(String name) {
+        int[] codes = UScript.getCode(name);
+        return codes != null ? codes[0] : UScript.INVALID_CODE;
+    }
+    
+    //------------------------------------------------------------
+    // ScriptRunIterator
+
+    /**
+     * Returns a series of ranges corresponding to scripts. They will be
+     * of the form:
+     *
+     * ccccSScSSccccTTcTcccc   - c = common, S = first script, T = second
+     * |            |          - first run (start, limit)
+     *          |           |  - second run (start, limit)
+     *
+     * That is, the runs will overlap. The reason for this is so that a
+     * transliterator can consider common characters both before and after
+     * the scripts.
+     */
+    private static class ScriptRunIterator {
+
+        private Replaceable text;
+        private int textStart;
+        private int textLimit;
+
+        /**
+         * The code of the current run, valid after next() returns.  May
+         * be UScript.INVALID_CODE if and only if the entire text is
+         * COMMON/INHERITED.
+         */
+        public int scriptCode;
+
+        /**
+         * The start of the run, inclusive, valid after next() returns.
+         */
+        public int start;
+
+        /**
+         * The end of the run, exclusive, valid after next() returns.
+         */
+        public int limit;
+
+        /**
+         * Constructs a run iterator over the given text from start
+         * (inclusive) to limit (exclusive).
+         */
+        public ScriptRunIterator(Replaceable text, int start, int limit) {
+            this.text = text;
+            this.textStart = start;
+            this.textLimit = limit;
+            this.limit = start;
+        }
+
+
+        /**
+         * Returns TRUE if there are any more runs.  TRUE is always
+         * returned at least once.  Upon return, the caller should
+         * examine scriptCode, start, and limit.
+         */
+        public boolean next() {
+            int ch;
+            int s;
+
+            scriptCode = UScript.INVALID_CODE; // don't know script yet
+            start = limit;
+
+            // Are we done?
+            if (start == textLimit) {
+                return false;
+            }
+
+            // Move start back to include adjacent COMMON or INHERITED
+            // characters
+            while (start > textStart) {
+                ch = text.char32At(start - 1); // look back
+                s = UScript.getScript(ch);
+                if (s == UScript.COMMON || s == UScript.INHERITED) {
+                    --start;
+                } else {
+                    break;
+                }
+            }
+
+            // Move limit ahead to include COMMON, INHERITED, and characters
+            // of the current script.
+            while (limit < textLimit) {
+                ch = text.char32At(limit); // look ahead
+                s = UScript.getScript(ch);
+                if (s != UScript.COMMON && s != UScript.INHERITED) {
+                    if (scriptCode == UScript.INVALID_CODE) {
+                        scriptCode = s;
+                    } else if (s != scriptCode) {
+                        break;
+                    }
+                }
+                ++limit;
+            }
+
+            // Return TRUE even if the entire text is COMMON / INHERITED, in
+            // which case scriptCode will be UScript.INVALID_CODE.
+            return true;
+        }
+
+        /**
+         * Adjusts internal indices for a change in the limit index of the
+         * given delta.  A positive delta means the limit has increased.
+         */
+        public void adjustLimit(int delta) {
+            limit += delta;
+            textLimit += delta;
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/ArabicShaping.java b/src/com/ibm/icu/text/ArabicShaping.java
new file mode 100755
index 0000000..aed1f75
--- /dev/null
+++ b/src/com/ibm/icu/text/ArabicShaping.java
@@ -0,0 +1,1181 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.lang.*;
+
+/**
+ * Shape Arabic text on a character basis.
+ *
+ * <p>ArabicShaping performs basic operations for "shaping" Arabic text. It is most
+ * useful for use with legacy data formats and legacy display technology
+ * (simple terminals). All operations are performed on Unicode characters.</p>
+ *
+ * <p>Text-based shaping means that some character code points in the text are
+ * replaced by others depending on the context. It transforms one kind of text
+ * into another. In comparison, modern displays for Arabic text select
+ * appropriate, context-dependent font glyphs for each text element, which means
+ * that they transform text into a glyph vector.</p>
+ *
+ * <p>Text transformations are necessary when modern display technology is not
+ * available or when text needs to be transformed to or from legacy formats that
+ * use "shaped" characters. Since the Arabic script is cursive, connecting
+ * adjacent letters to each other, computers select images for each letter based
+ * on the surrounding letters. This usually results in four images per Arabic
+ * letter: initial, middle, final, and isolated forms. In Unicode, on the other
+ * hand, letters are normally stored abstract, and a display system is expected
+ * to select the necessary glyphs. (This makes searching and other text
+ * processing easier because the same letter has only one code.) It is possible
+ * to mimic this with text transformations because there are characters in
+ * Unicode that are rendered as letters with a specific shape
+ * (or cursive connectivity). They were included for interoperability with
+ * legacy systems and codepages, and for unsophisticated display systems.</p>
+ *
+ * <p>A second kind of text transformations is supported for Arabic digits:
+ * For compatibility with legacy codepages that only include European digits,
+ * it is possible to replace one set of digits by another, changing the
+ * character code points. These operations can be performed for either
+ * Arabic-Indic Digits (U+0660...U+0669) or Eastern (Extended) Arabic-Indic
+ * digits (U+06f0...U+06f9).</p>
+ *
+ * <p>Some replacements may result in more or fewer characters (code points).
+ * By default, this means that the destination buffer may receive text with a
+ * length different from the source length. Some legacy systems rely on the
+ * length of the text to be constant. They expect extra spaces to be added
+ * or consumed either next to the affected character or at the end of the
+ * text.</p>
+ */
+public final class ArabicShaping {
+    private final int options;
+    private boolean isLogical; // convenience
+
+    /**
+     * Convert a range of text in the source array, putting the result 
+     * into a range of text in the destination array, and return the number
+     * of characters written.
+     *
+     * @param source An array containing the input text
+     * @param sourceStart The start of the range of text to convert
+     * @param sourceLength The length of the range of text to convert
+     * @param dest The destination array that will receive the result.
+     *   It may be <code>NULL</code> only if  <code>destSize</code> is 0.  
+     * @param destStart The start of the range of the destination buffer to use.
+     * @param destSize The size (capacity) of the destination buffer.
+     *   If <code>destSize</code> is 0, then no output is produced,
+     *   but the necessary buffer size is returned ("preflighting").  This
+     *   does not validate the text against the options, for example, 
+     *   if letters are being unshaped, and spaces are being consumed
+     *   following lamalef, this will not detect a lamalef without a 
+     *   corresponding space.  An error will be thrown when the actual
+     *   conversion is attempted.
+     * @return The number of chars written to the destination buffer.
+     *   If an error occurs, then no output was written, or it may be
+     *   incomplete.
+     * @throws ArabicShapingException if the text cannot be converted according to the options.
+     */
+    public int shape(char[] source, int sourceStart, int sourceLength,
+                     char[] dest, int destStart, int destSize) throws ArabicShapingException {
+        if (source == null) {
+            throw new IllegalArgumentException("source can not be null");
+        }
+        if (sourceStart < 0 || sourceLength < 0 || sourceStart + sourceLength > source.length) {
+            throw new IllegalArgumentException("bad source start (" + sourceStart +
+                                               ") or length (" + sourceLength +
+                                               ") for buffer of length " + source.length);
+        }
+        if (dest == null && destSize != 0) {
+            throw new IllegalArgumentException("null dest requires destSize == 0");
+        }
+        if ((destSize != 0) &&
+            (destStart < 0 || destSize < 0 || destStart + destSize > dest.length)) {
+            throw new IllegalArgumentException("bad dest start (" + destStart + 
+                                               ") or size (" + destSize + 
+                                               ") for buffer of length " + dest.length);
+        }
+
+        return internalShape(source, sourceStart, sourceLength, dest, destStart, destSize);
+    }
+
+    /**
+     * Convert a range of text in place.  This may only be used if the Length option
+     * does not grow or shrink the text.
+     *
+     * @param source An array containing the input text
+     * @param start The start of the range of text to convert
+     * @param length The length of the range of text to convert
+     * @throws ArabicShapingException if the text cannot be converted according to the options.
+     */
+    public void shape(char[] source, int start, int length) throws ArabicShapingException {
+        if ((options & LENGTH_MASK) == LENGTH_GROW_SHRINK) {
+            throw new ArabicShapingException("Cannot shape in place with length option grow/shrink.");
+        }
+        shape(source, start, length, source, start, length);
+    }
+
+    /**
+     * Convert a string, returning the new string.
+     *
+     * @param source The string to convert.
+     * @return The converted string.
+     * @throws ArabicShapingException if the string cannot be converted according to the options.
+     */
+    public String shape(String text) throws ArabicShapingException {
+        char[] src = text.toCharArray();
+        char[] dest = src;
+        if (((options & LENGTH_MASK) == LENGTH_GROW_SHRINK) &&
+            ((options & LETTERS_MASK) == LETTERS_UNSHAPE)) {
+
+            dest = new char[src.length * 2]; // max
+        }
+        int len = shape(src, 0, src.length, dest, 0, dest.length);
+
+        return new String(dest, 0, len);
+    }
+
+    /**
+     * Construct ArabicShaping using the options flags.
+     * The flags are as follows:<br>
+     * 'LENGTH' flags control whether the text can change size, and if not,
+     * how to maintain the size of the text when LamAlef ligatures are 
+     * formed or broken.<br>
+     * 'TEXT_DIRECTION' flags control whether the text is read and written
+     * in visual order or in logical order.<br>
+     * 'LETTERS_SHAPE' flags control whether conversion is to or from
+     * presentation forms.<br>
+     * 'DIGITS' flags control whether digits are shaped, and whether from
+     * European to Arabic-Indic or vice-versa.<br>
+     * 'DIGIT_TYPE' flags control whether standard or extended Arabic-Indic
+     * digits are used when performing digit conversion.
+     */
+    public ArabicShaping(int options) {
+        this.options = options;
+        if ((options & DIGITS_MASK) > 0x80) {
+            throw new IllegalArgumentException("bad DIGITS options");
+        }
+        isLogical = (options & TEXT_DIRECTION_MASK) == TEXT_DIRECTION_LOGICAL;
+    }
+
+    /**
+     * Memory option: allow the result to have a different length than the source.
+     */
+    public static final int LENGTH_GROW_SHRINK = 0;
+
+    /**
+     * Memory option: the result must have the same length as the source.
+     * If more room is necessary, then try to consume spaces next to modified characters.
+     */
+    public static final int LENGTH_FIXED_SPACES_NEAR = 1;
+
+    /**
+     * Memory option: the result must have the same length as the source.
+     * If more room is necessary, then try to consume spaces at the end of the text.
+     */
+    public static final int LENGTH_FIXED_SPACES_AT_END = 2;
+
+    /**
+     * Memory option: the result must have the same length as the source.
+     * If more room is necessary, then try to consume spaces at the beginning of the text.
+     */
+    public static final int LENGTH_FIXED_SPACES_AT_BEGINNING = 3;
+
+    /** 
+     * Bit mask for memory options. 
+     */
+    public static final int LENGTH_MASK = 3;
+
+
+    /** 
+     * Direction indicator: the source is in logical (keyboard) order. 
+     */
+    public static final int TEXT_DIRECTION_LOGICAL = 0;
+
+    /** 
+     * Direction indicator: the source is in visual (display) order, that is,
+     * the leftmost displayed character is stored first.
+     */
+    public static final int TEXT_DIRECTION_VISUAL_LTR = 4;
+
+    /** 
+     * Bit mask for direction indicators. 
+     */
+    public static final int TEXT_DIRECTION_MASK = 4;
+
+
+    /**
+     * Letter shaping option: do not perform letter shaping. 
+     */
+    public static final int LETTERS_NOOP = 0;
+
+    /** 
+     * Letter shaping option: replace normative letter characters in the U+0600 (Arabic) block,
+     * by shaped ones in the U+FE70 (Presentation Forms B) block. Performs Lam-Alef ligature
+     * substitution.
+     */
+    public static final int LETTERS_SHAPE = 8;
+
+    /** 
+     * Letter shaping option: replace shaped letter characters in the U+FE70 (Presentation Forms B) block
+     * by normative ones in the U+0600 (Arabic) block.  Converts Lam-Alef ligatures to pairs of Lam and
+     * Alef characters, consuming spaces if required.
+     */
+    public static final int LETTERS_UNSHAPE = 0x10;
+
+    /**
+     * Letter shaping option: replace normative letter characters in the U+0600 (Arabic) block,
+     * except for the TASHKEEL characters at U+064B...U+0652, by shaped ones in the U+Fe70
+     * (Presentation Forms B) block.  The TASHKEEL characters will always be converted to
+     * the isolated forms rather than to their correct shape.
+     */
+    public static final int LETTERS_SHAPE_TASHKEEL_ISOLATED = 0x18;
+
+    /** 
+     * Bit mask for letter shaping options. 
+     */
+    public static final int LETTERS_MASK = 0x18;
+
+
+    /** 
+     * Digit shaping option: do not perform digit shaping. 
+     */
+    public static final int DIGITS_NOOP = 0;
+
+    /**
+     * Digit shaping option: Replace European digits (U+0030...U+0039) by Arabic-Indic digits.
+     */
+    public static final int DIGITS_EN2AN = 0x20;
+
+    /**
+     * Digit shaping option: Replace Arabic-Indic digits by European digits (U+0030...U+0039).
+     */
+    public static final int DIGITS_AN2EN = 0x40;
+
+    /**
+     * Digit shaping option:
+     * Replace European digits (U+0030...U+0039) by Arabic-Indic digits
+     * if the most recent strongly directional character
+     * is an Arabic letter (its Bidi direction value is RIGHT_TO_LEFT_ARABIC). 
+     * The initial state at the start of the text is assumed to be not an Arabic,
+     * letter, so European digits at the start of the text will not change.
+     * Compare to DIGITS_ALEN2AN_INIT_AL.
+     */
+    public static final int DIGITS_EN2AN_INIT_LR = 0x60;
+
+    /**
+     * Digit shaping option:
+     * Replace European digits (U+0030...U+0039) by Arabic-Indic digits
+     * if the most recent strongly directional character
+     * is an Arabic letter (its Bidi direction value is RIGHT_TO_LEFT_ARABIC). 
+     * The initial state at the start of the text is assumed to be an Arabic,
+     * letter, so European digits at the start of the text will change.
+     * Compare to DIGITS_ALEN2AN_INT_LR.
+     */
+    public static final int DIGITS_EN2AN_INIT_AL = 0x80;
+
+    /** Not a valid option value. */
+    private static final int DIGITS_RESERVED = 0xa0;
+
+    /** 
+     * Bit mask for digit shaping options. 
+     */
+    public static final int DIGITS_MASK = 0xe0;
+
+    /** 
+     * Digit type option: Use Arabic-Indic digits (U+0660...U+0669). 
+     */
+    public static final int DIGIT_TYPE_AN = 0;
+
+    /** 
+     * Digit type option: Use Eastern (Extended) Arabic-Indic digits (U+06f0...U+06f9). 
+     */
+    public static final int DIGIT_TYPE_AN_EXTENDED = 0x100;
+
+    /** 
+     * Bit mask for digit type options. 
+     */
+    public static final int DIGIT_TYPE_MASK = 0x0100; // 0x3f00?
+
+    public boolean equals(Object rhs) {
+        return rhs != null && 
+            rhs.getClass() == ArabicShaping.class && 
+            options == ((ArabicShaping)rhs).options;
+    }
+
+    public int hashCode() {
+        return options;
+    }
+
+    public String toString() {
+        StringBuffer buf = new StringBuffer(super.toString());
+        buf.append('[');
+        switch (options & LENGTH_MASK) {
+        case LENGTH_GROW_SHRINK: buf.append("grow/shrink"); break;
+        case LENGTH_FIXED_SPACES_NEAR: buf.append("spaces near"); break;
+        case LENGTH_FIXED_SPACES_AT_END: buf.append("spaces at end"); break;
+        case LENGTH_FIXED_SPACES_AT_BEGINNING: buf.append("spaces at beginning"); break;
+        }
+        switch (options & TEXT_DIRECTION_MASK) {
+        case TEXT_DIRECTION_LOGICAL: buf.append(", logical"); break;
+        case TEXT_DIRECTION_VISUAL_LTR: buf.append(", visual"); break;
+        }
+        switch (options & LETTERS_MASK) {
+        case LETTERS_NOOP: buf.append(", no letter shaping"); break;
+        case LETTERS_SHAPE: buf.append(", shape letters"); break;
+        case LETTERS_SHAPE_TASHKEEL_ISOLATED: buf.append(", shape letters tashkeel isolated"); break;
+        case LETTERS_UNSHAPE: buf.append(", unshape letters"); break;
+        }
+        switch (options & DIGITS_MASK) {
+        case DIGITS_NOOP: buf.append(", no digit shaping"); break;
+        case DIGITS_EN2AN: buf.append(", shape digits to AN"); break;
+        case DIGITS_AN2EN: buf.append(", shape digits to EN"); break;
+        case DIGITS_EN2AN_INIT_LR: buf.append(", shape digits to AN contextually: default EN"); break;
+        case DIGITS_EN2AN_INIT_AL: buf.append(", shape digits to AN contextually: default AL"); break;
+        }
+        switch (options & DIGIT_TYPE_MASK) {
+        case DIGIT_TYPE_AN: buf.append(", standard Arabic-Indic digits"); break;
+        case DIGIT_TYPE_AN_EXTENDED: buf.append(", extended Arabic-Indic digits"); break;
+        }
+        buf.append("]");
+
+        return buf.toString();
+    }
+
+    //
+    // ported api
+    //
+
+    private static final int IRRELEVANT = 4;
+    private static final int LAMTYPE = 16;
+    private static final int ALEFTYPE = 32;
+
+    private static final int LINKR = 1;
+    private static final int LINKL = 2;
+    private static final int LINK_MASK = 3;
+
+    private static final int irrelevantPos[] = { 
+        0x0, 0x2, 0x4, 0x6, 0x8, 0xA, 0xC, 0xE 
+    };
+
+    private static final char convertLamAlef[] =  {
+        '\u0622', // FEF5 
+        '\u0622', // FEF6
+        '\u0623', // FEF7
+        '\u0623', // FEF8
+        '\u0625', // FEF9
+        '\u0625', // FEFA
+        '\u0627', // FEFB
+        '\u0627'  // FEFC 
+    };
+
+    private static final char convertNormalizedLamAlef[] = {
+        '\u0622', // 065C
+        '\u0623', // 065D
+        '\u0625', // 065E
+        '\u0627', // 065F
+    };
+
+    private static final int[] araLink = {
+        1           + 32 + 256 * 0x11,  /*0x0622*/
+        1           + 32 + 256 * 0x13,  /*0x0623*/
+        1                + 256 * 0x15,  /*0x0624*/
+        1           + 32 + 256 * 0x17,  /*0x0625*/
+        1 + 2            + 256 * 0x19,  /*0x0626*/
+        1           + 32 + 256 * 0x1D,  /*0x0627*/
+        1 + 2            + 256 * 0x1F,  /*0x0628*/
+        1                + 256 * 0x23,  /*0x0629*/
+        1 + 2            + 256 * 0x25,  /*0x062A*/
+        1 + 2            + 256 * 0x29,  /*0x062B*/
+        1 + 2            + 256 * 0x2D,  /*0x062C*/
+        1 + 2            + 256 * 0x31,  /*0x062D*/
+        1 + 2            + 256 * 0x35,  /*0x062E*/
+        1                + 256 * 0x39,  /*0x062F*/
+        1                + 256 * 0x3B,  /*0x0630*/
+        1                + 256 * 0x3D,  /*0x0631*/
+        1                + 256 * 0x3F,  /*0x0632*/
+        1 + 2            + 256 * 0x41,  /*0x0633*/
+        1 + 2            + 256 * 0x45,  /*0x0634*/
+        1 + 2            + 256 * 0x49,  /*0x0635*/
+        1 + 2            + 256 * 0x4D,  /*0x0636*/
+        1 + 2            + 256 * 0x51,  /*0x0637*/
+        1 + 2            + 256 * 0x55,  /*0x0638*/
+        1 + 2            + 256 * 0x59,  /*0x0639*/
+        1 + 2            + 256 * 0x5D,  /*0x063A*/
+        0, 0, 0, 0, 0,                  /*0x063B-0x063F*/
+        1 + 2,                          /*0x0640*/
+        1 + 2            + 256 * 0x61,  /*0x0641*/
+        1 + 2            + 256 * 0x65,  /*0x0642*/
+        1 + 2            + 256 * 0x69,  /*0x0643*/
+        1 + 2       + 16 + 256 * 0x6D,  /*0x0644*/
+        1 + 2            + 256 * 0x71,  /*0x0645*/
+        1 + 2            + 256 * 0x75,  /*0x0646*/
+        1 + 2            + 256 * 0x79,  /*0x0647*/
+        1                + 256 * 0x7D,  /*0x0648*/
+        1                + 256 * 0x7F,  /*0x0649*/
+        1 + 2            + 256 * 0x81,  /*0x064A*/
+        4, 4, 4, 4,                     /*0x064B-0x064E*/
+        4, 4, 4, 4,                     /*0x064F-0x0652*/
+        4, 4, 4, 0, 0,                  /*0x0653-0x0657*/
+        0, 0, 0, 0,                     /*0x0658-0x065B*/
+        1                + 256 * 0x85,  /*0x065C*/
+        1                + 256 * 0x87,  /*0x065D*/
+        1                + 256 * 0x89,  /*0x065E*/
+        1                + 256 * 0x8B,  /*0x065F*/
+        0, 0, 0, 0, 0,                  /*0x0660-0x0664*/
+        0, 0, 0, 0, 0,                  /*0x0665-0x0669*/
+        0, 0, 0, 0, 0, 0,               /*0x066A-0x066F*/
+        4,                              /*0x0670*/
+        0,                              /*0x0671*/
+        1           + 32,               /*0x0672*/
+        1           + 32,               /*0x0673*/
+        0,                              /*0x0674*/
+        1           + 32,               /*0x0675*/
+        1, 1,                           /*0x0676-0x0677*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x0678-0x067D*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x067E-0x0683*/
+        1+2, 1+2, 1+2, 1+2,             /*0x0684-0x0687*/
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,   /*0x0688-0x0691*/
+        1, 1, 1, 1, 1, 1, 1, 1,         /*0x0692-0x0699*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x069A-0x06A3*/
+        1+2, 1+2, 1+2, 1+2,             /*0x069A-0x06A3*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x06A4-0x06AD*/
+        1+2, 1+2, 1+2, 1+2,             /*0x06A4-0x06AD*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x06AE-0x06B7*/
+        1+2, 1+2, 1+2, 1+2,             /*0x06AE-0x06B7*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x06B8-0x06BF*/
+        1+2, 1+2,                       /*0x06B8-0x06BF*/
+        1,                              /*0x06C0*/
+        1+2,                            /*0x06C1*/
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,   /*0x06C2-0x06CB*/
+        1+2,                            /*0x06CC*/
+        1,                              /*0x06CD*/
+        1+2, 1+2, 1+2, 1+2,             /*0x06CE-0x06D1*/
+        1, 1                            /*0x06D2-0x06D3*/
+    };
+
+    private static final int[] presLink = {
+        1 + 2,                        /*0xFE70*/
+        1 + 2,                        /*0xFE71*/
+        1 + 2, 0, 1+ 2, 0, 1+ 2,      /*0xFE72-0xFE76*/
+        1 + 2,                        /*0xFE77*/
+        1+ 2, 1 + 2, 1+2, 1 + 2,      /*0xFE78-0xFE81*/
+        1+ 2, 1 + 2, 1+2, 1 + 2,      /*0xFE82-0xFE85*/
+        0, 0 + 32, 1 + 32, 0 + 32,    /*0xFE86-0xFE89*/
+        1 + 32, 0, 1,  0 + 32,        /*0xFE8A-0xFE8D*/
+        1 + 32, 0, 2,  1 + 2,         /*0xFE8E-0xFE91*/
+        1, 0 + 32, 1 + 32, 0,         /*0xFE92-0xFE95*/
+        2, 1 + 2, 1, 0,               /*0xFE96-0xFE99*/
+        1, 0, 2, 1 + 2,               /*0xFE9A-0xFE9D*/
+        1, 0, 2, 1 + 2,               /*0xFE9E-0xFEA1*/
+        1, 0, 2, 1 + 2,               /*0xFEA2-0xFEA5*/
+        1, 0, 2, 1 + 2,               /*0xFEA6-0xFEA9*/
+        1, 0, 2, 1 + 2,               /*0xFEAA-0xFEAD*/
+        1, 0, 1, 0,                   /*0xFEAE-0xFEB1*/
+        1, 0, 1, 0,                   /*0xFEB2-0xFEB5*/
+        1, 0, 2, 1+2,                 /*0xFEB6-0xFEB9*/
+        1, 0, 2, 1+2,                 /*0xFEBA-0xFEBD*/
+        1, 0, 2, 1+2,                 /*0xFEBE-0xFEC1*/
+        1, 0, 2, 1+2,                 /*0xFEC2-0xFEC5*/
+        1, 0, 2, 1+2,                 /*0xFEC6-0xFEC9*/
+        1, 0, 2, 1+2,                 /*0xFECA-0xFECD*/
+        1, 0, 2, 1+2,                 /*0xFECE-0xFED1*/
+        1, 0, 2, 1+2,                 /*0xFED2-0xFED5*/
+        1, 0, 2, 1+2,                 /*0xFED6-0xFED9*/
+        1, 0, 2, 1+2,                 /*0xFEDA-0xFEDD*/
+        1, 0, 2, 1+2,                 /*0xFEDE-0xFEE1*/
+        1, 0 + 16, 2 + 16, 1 + 2 +16, /*0xFEE2-0xFEE5*/
+        1 + 16, 0, 2, 1+2,            /*0xFEE6-0xFEE9*/
+        1, 0, 2, 1+2,                 /*0xFEEA-0xFEED*/
+        1, 0, 2, 1+2,                 /*0xFEEE-0xFEF1*/
+        1, 0, 1, 0,                   /*0xFEF2-0xFEF5*/
+        1, 0, 2, 1+2,                 /*0xFEF6-0xFEF9*/
+        1, 0, 1, 0,                   /*0xFEFA-0xFEFD*/
+        1, 0, 1, 0,
+        1
+    };
+
+    private static int[] convertFEto06 = {
+        /***********0******1******2******3******4******5******6******7******8******9******A******B******C******D******E******F***/
+        /*FE7*/   0x64B, 0x64B, 0x64C, 0x64C, 0x64D, 0x64D, 0x64E, 0x64E, 0x64F, 0x64F, 0x650, 0x650, 0x651, 0x651, 0x652, 0x652,
+        /*FE8*/   0x621, 0x622, 0x622, 0x623, 0x623, 0x624, 0x624, 0x625, 0x625, 0x626, 0x626, 0x626, 0x626, 0x627, 0x627, 0x628,
+        /*FE9*/   0x628, 0x628, 0x628, 0x629, 0x629, 0x62A, 0x62A, 0x62A, 0x62A, 0x62B, 0x62B, 0x62B, 0x62B, 0x62C, 0x62C, 0x62C,
+        /*FEA*/   0x62C, 0x62D, 0x62D, 0x62D, 0x62D, 0x62E, 0x62E, 0x62E, 0x62E, 0x62F, 0x62F, 0x630, 0x630, 0x631, 0x631, 0x632,
+        /*FEB*/   0x632, 0x633, 0x633, 0x633, 0x633, 0x634, 0x634, 0x634, 0x634, 0x635, 0x635, 0x635, 0x635, 0x636, 0x636, 0x636,
+        /*FEC*/   0x636, 0x637, 0x637, 0x637, 0x637, 0x638, 0x638, 0x638, 0x638, 0x639, 0x639, 0x639, 0x639, 0x63A, 0x63A, 0x63A,
+        /*FED*/   0x63A, 0x641, 0x641, 0x641, 0x641, 0x642, 0x642, 0x642, 0x642, 0x643, 0x643, 0x643, 0x643, 0x644, 0x644, 0x644,
+        /*FEE*/   0x644, 0x645, 0x645, 0x645, 0x645, 0x646, 0x646, 0x646, 0x646, 0x647, 0x647, 0x647, 0x647, 0x648, 0x648, 0x649,
+        /*FEF*/   0x649, 0x64A, 0x64A, 0x64A, 0x64A, 0x65C, 0x65C, 0x65D, 0x65D, 0x65E, 0x65E, 0x65F, 0x65F
+    };
+
+    private static final int shapeTable[][][] = {
+        { {0,0,0,0}, {0,0,0,0}, {0,1,0,3}, {0,1,0,1} },
+        { {0,0,2,2}, {0,0,1,2}, {0,1,1,2}, {0,1,1,3} },
+        { {0,0,0,0}, {0,0,0,0}, {0,1,0,3}, {0,1,0,3} },
+        { {0,0,1,2}, {0,0,1,2}, {0,1,1,2}, {0,1,1,3} }
+    };
+
+    /*
+     * This function shapes European digits to Arabic-Indic digits
+     * in-place, writing over the input characters.  Data is in visual
+     * order.
+     */
+    private void shapeToArabicDigitsWithContext(char[] dest,
+                                                int start,
+                                                int length,
+                                                char digitBase,
+                                                boolean lastStrongWasAL) {
+
+        digitBase -= '0'; // move common adjustment out of loop
+
+        for(int i = start + length; --i >= start;) {
+            char ch = dest[i];
+            switch (UCharacter.getDirection(ch)) {
+            case UCharacterDirection.LEFT_TO_RIGHT:
+            case UCharacterDirection.RIGHT_TO_LEFT:
+                lastStrongWasAL = false;
+                break;
+            case UCharacterDirection.RIGHT_TO_LEFT_ARABIC:
+                lastStrongWasAL = true;
+                break;
+            case UCharacterDirection.EUROPEAN_NUMBER:
+                if (lastStrongWasAL && ch <= '\u0039') {
+                    dest[i] = (char)(ch + digitBase);
+                }
+                break;
+            default:
+                break;
+            }
+        }
+    }
+
+    /*
+     * Name    : invertBuffer
+     * Function: This function inverts the buffer, it's used
+     *           in case the user specifies the buffer to be
+     *           TEXT_DIRECTION_LOGICAL
+     */
+    private static void invertBuffer(char[] buffer,
+                                     int start,
+                                     int length) {
+
+        for(int i = start, j = start + length - 1; i < j; i++, --j) {
+            char temp = buffer[i];
+            buffer[i] = buffer[j];
+            buffer[j] = temp;
+        }
+    }
+
+    /*
+     * Name    : changeLamAlef
+     * Function: Converts the Alef characters into an equivalent
+     *           LamAlef location in the 0x06xx Range, this is an
+     *           intermediate stage in the operation of the program
+     *           later it'll be converted into the 0xFExx LamAlefs 
+     *           in the shaping function.
+     */
+    private static char changeLamAlef(char ch) {
+        switch(ch) {
+        case '\u0622': return '\u065C';
+        case '\u0623': return '\u065D';
+        case '\u0625': return '\u065E';
+        case '\u0627': return '\u065F';
+        default:  return '\u0000'; // not a lamalef
+        }
+    }
+
+    /*
+     * Name    : specialChar
+     * Function: Special Arabic characters need special handling in the shapeUnicode
+     *           function, this function returns 1 or 2 for these special characters
+     */
+    private static int specialChar(char ch) {
+        if ((ch > '\u0621' && ch < '\u0626') || 
+            (ch == '\u0627') ||
+            (ch > '\u062E' && ch < '\u0633') ||
+            (ch > '\u0647' && ch < '\u064A') ||
+            (ch == '\u0629')) {
+            return 1;
+        } else if (ch >= '\u064B' && ch<= '\u0652') {
+            return 2;
+        } else if (ch >= 0x0653 && ch <= 0x0655 || 
+                   ch == 0x0670 ||
+                   ch >= 0xFE70 && ch <= 0xFE7F) {
+            return 3;
+        } else {
+            return 0;
+        }
+    }
+    
+    /*
+     * Name    : getLink
+     * Function: Resolves the link between the characters as 
+     *           Arabic characters have four forms :
+     *           Isolated, Initial, Middle and Final Form
+     */
+    private static int getLink(char ch) {
+        if (ch >= '\u0622' && ch <= '\u06D3') {
+            return araLink[ch - '\u0622'];
+        } else if (ch == '\u200D') {
+            return 3;
+        } else if (ch >= '\u206D' && ch <= '\u206F') {
+            return 4;
+        } else if (ch >= '\uFE70' && ch <= '\uFEFC') {
+            return presLink[ch - '\uFE70'];
+        } else {
+            return 0;
+        }
+    }
+
+    /*
+     * Name    : countSpaces
+     * Function: Counts the number of spaces
+     *           at each end of the logical buffer
+     */
+    private static int countSpacesLeft(char[] dest, 
+                                       int start,
+                                       int count) {
+        for (int i = start, e = start + count; i < e; ++i) {
+            if (dest[i] != '\u0020') {
+                return i - start;
+            }
+        }
+        return count;
+    }
+
+    private static int countSpacesRight(char[] dest,
+                                        int start,
+                                        int count) {
+
+        for (int i = start + count; --i >= start;) {
+            if (dest[i] != '\u0020') {
+                return start + count - 1 - i;
+            }
+        }
+        return count;
+    }
+
+    /*
+     * Name    : isTashkeelChar
+     * Function: Returns 1 for Tashkeel characters else return 0
+     */
+    private static boolean isTashkeelChar(char ch) {
+        return ch >='\u064B' && ch <= '\u0652';
+    }
+
+    /*
+     * Name    : isAlefChar
+     * Function: Returns 1 for Alef characters else return 0
+     */
+    private static boolean isAlefChar(char ch) {
+        return ch == '\u0622' || ch == '\u0623' || ch == '\u0625' || ch == '\u0627';
+    }
+
+    /*
+     * Name    : isLamAlefChar
+     * Function: Returns 1 for LamAlef characters else return 0
+     */
+    private static boolean isLamAlefChar(char ch) {
+        return ch >= '\uFEF5' && ch <= '\uFEFC';
+    }
+
+    private static boolean isNormalizedLamAlefChar(char ch) {
+        return ch >= '\u065C' && ch <= '\u065F';
+    }
+
+    /*
+     * Name    : calculateSize
+     * Function: This function calculates the destSize to be used in preflighting
+     *           when the destSize is equal to 0
+     */
+    private int calculateSize(char[] source,
+                              int sourceStart,
+                              int sourceLength) {
+	
+        int destSize = sourceLength;
+
+        switch (options & LETTERS_MASK) {
+        case LETTERS_SHAPE:
+        case LETTERS_SHAPE_TASHKEEL_ISOLATED:
+            if (isLogical) {
+                for (int i = sourceStart, e = sourceStart + sourceLength - 1; i < e; ++i) {
+                    if (source[i] == '\u0644' && isAlefChar(source[i+1])) {
+                        --destSize;
+                    }
+                }
+            } else { // visual
+                for(int i = sourceStart + 1, e = sourceStart + sourceLength; i < e; ++i) {
+                    if (source[i] == '\u0644' && isAlefChar(source[i-1])) {
+                        --destSize;
+                    }
+                }
+            }
+            break;
+
+        case LETTERS_UNSHAPE:
+            for(int i = sourceStart, e = sourceStart + sourceLength; i < e; ++i) {
+                if (isLamAlefChar(source[i])) {
+                    destSize++;
+                }
+            }
+            break;
+
+        default:
+            break;
+        }
+
+        return destSize;
+    }
+
+    /*
+     * Name    : removeLamAlefSpaces
+     * Function: The shapeUnicode function converts Lam + Alef into LamAlef + space,
+     *           this function removes the spaces behind the LamAlefs according to
+     *           the options the user specifies, the spaces are removed to the end
+     *           of the buffer, or shrink the buffer and remove spaces for good
+     *           or leave the buffer as it is LamAlef + space.
+     */
+    private int removeLamAlefSpaces(char[] dest, 
+                                    int start,
+                                    int length) {
+	
+        int lenOptions = options & LENGTH_MASK;
+        if (!isLogical) {
+            switch (lenOptions) {
+            case LENGTH_FIXED_SPACES_AT_BEGINNING: lenOptions = LENGTH_FIXED_SPACES_AT_END; break;
+            case LENGTH_FIXED_SPACES_AT_END: lenOptions = LENGTH_FIXED_SPACES_AT_BEGINNING; break;
+            default: break;
+            }
+        }
+
+        if (lenOptions == LENGTH_FIXED_SPACES_NEAR) {
+            for (int i = start, e = i + length; i < e; ++i) {
+                if (dest[i] == '\uffff') {
+                    dest[i] = '\u0020';
+                }
+            }
+        } else {
+            final int e = start + length;
+            int w = e;
+            int r = e;
+            while (--r >= start) {
+                char ch = dest[r];
+                if (ch != '\uffff') {
+                    --w;
+                    if (w != r) {
+                        dest[w] = ch;
+                    }
+                }
+            }
+
+            if (lenOptions == LENGTH_FIXED_SPACES_AT_END) {
+                while (w > start) {
+                    dest[--w] = '\u0020';
+                }
+            } else {
+                if (w > start) {
+                    // shift, assume small buffer size so don't use arraycopy
+                    r = w;
+                    w = start;
+                    while (r < e) {
+                        dest[w++] = dest[r++];
+                    }
+                } else {
+                    w = e;
+                }
+                if (lenOptions == LENGTH_GROW_SHRINK) {
+                    length = w - start;
+                } else { // spaces at beginning
+                    while (w < e) {
+                        dest[w++] = '\u0020';
+                    }
+                }
+            }
+        }
+        return length;
+    }
+
+    /*
+     * Name    : expandLamAlef
+     * Function: LamAlef needs special handling as the LamAlef is
+     *           one character while expanding it will give two
+     *           characters Lam + Alef, so we need to expand the LamAlef
+     *           in near or far spaces according to the options the user
+     *           specifies or increase the buffer size.
+     *           Dest has enough room for the expansion if we are growing.
+     *           lamalef are normalized to the 'special characters'
+     */
+    private int expandLamAlef(char[] dest,
+                              int start,
+                              int length,
+                              int lacount) throws ArabicShapingException {
+
+        int lenOptions = options & LENGTH_MASK;
+        if (!isLogical) {
+            switch (lenOptions) {
+            case LENGTH_FIXED_SPACES_AT_BEGINNING: lenOptions = LENGTH_FIXED_SPACES_AT_END; break;
+            case LENGTH_FIXED_SPACES_AT_END: lenOptions = LENGTH_FIXED_SPACES_AT_BEGINNING; break;
+            default: break;
+            }
+        }
+
+        switch (lenOptions) {
+        case LENGTH_GROW_SHRINK: 
+            {
+                for (int r = start + length, w = r + lacount; --r >= start;) {
+                    char ch = dest[r];
+                    if (isNormalizedLamAlefChar(ch)) {
+                        dest[--w] = '\u0644';
+                        dest[--w] = convertNormalizedLamAlef[ch - '\u065C'];
+                    } else {
+                        dest[--w] = ch;
+                    }
+                }
+            }
+            length += lacount;
+            break;
+
+        case LENGTH_FIXED_SPACES_NEAR: 
+            {
+                if (isNormalizedLamAlefChar(dest[start])) {
+                    throw new ArabicShapingException("no space for lamalef");
+                }
+                for (int i = start + length; --i > start;) { // don't check start, already checked
+                    char ch = dest[i];
+                    if (isNormalizedLamAlefChar(ch)) {
+                        if (dest[i-1] == '\u0020') {
+                            dest[i] = '\u0644';
+                            dest[--i] = convertNormalizedLamAlef[ch - '\u065C'];
+                        } else {
+                            throw new ArabicShapingException("no space for lamalef");
+                        }
+                    }
+                }
+            }
+            break;
+
+        case LENGTH_FIXED_SPACES_AT_END: 
+            {
+                if (lacount > countSpacesLeft(dest, start, length)) {
+                    throw new ArabicShapingException("no space for lamalef");
+                }
+                for (int r = start + lacount, w = start, e = start + length; r < e; ++r) {
+                    char ch = dest[r];
+                    if (isNormalizedLamAlefChar(ch)) {
+                        dest[w++] = convertNormalizedLamAlef[ch - '\u065C'];
+                        dest[w++] = '\u0644';
+                    } else {
+                        dest[w++] = ch;
+                    }
+                }
+            }
+            break;
+                
+        case LENGTH_FIXED_SPACES_AT_BEGINNING: 
+            {
+                if (lacount > countSpacesRight(dest, start, length)) {
+                    throw new ArabicShapingException("no space for lamalef");
+                }
+                for (int r = start + length - lacount, w = start + length; --r >= start;) {
+                    char ch = dest[r];
+                    if (isNormalizedLamAlefChar(ch)) {
+                        dest[--w] = '\u0644';
+                        dest[--w] = convertNormalizedLamAlef[ch - '\u065C'];
+                    } else {
+                        dest[--w] = ch;
+                    }
+                }
+            }
+            break;
+        }
+
+        return length;
+    }
+
+    /* Convert the input buffer from FExx Range into 06xx Range
+     * to put all characters into the 06xx range
+     * even the lamalef is converted to the special region in
+     * the 06xx range.  Return the number of lamalef chars found.
+     */
+    private int normalize(char[] dest, int start, int length) {
+        int lacount = 0;
+        for (int i = start, e = i + length; i < e; ++i) {
+            char ch = dest[i];
+            if (ch >= '\uFE70' && ch <= '\uFEFC') {
+                if (isLamAlefChar(ch)) {
+                    ++lacount;
+                }
+                dest[i] = (char)convertFEto06[ch - '\uFE70'];
+            }
+        }
+        return lacount;
+    }
+
+    /*
+     * Name    : shapeUnicode
+     * Function: Converts an Arabic Unicode buffer in 06xx Range into a shaped
+     *           arabic Unicode buffer in FExx Range
+     */
+    private int shapeUnicode(char[] dest, 
+                             int start,
+                             int length,
+                             int destSize,
+                             int tashkeelFlag) {
+
+
+        normalize(dest, start, length);
+
+        // resolve the link between the characters.
+        // Arabic characters have four forms: Isolated, Initial, Medial and Final.
+        // Tashkeel characters have two, isolated or medial, and sometimes only isolated.
+        // tashkeelFlag == 0: shape normally, 1: shape isolated, 2: don't shape
+
+        boolean lamalef_found = false;
+        int i = start + length - 1;
+        int currLink = getLink(dest[i]);
+        int nextLink = 0;
+        int prevLink = 0;
+        int lastLink = 0;
+        int prevPos = i;
+        int lastPos = i;
+        int nx = -2;
+        int nw = 0;
+
+        while (i >= 0) {
+            // If high byte of currLink > 0 then there might be more than one shape
+            if ((currLink & '\uFF00') > 0 || isTashkeelChar(dest[i])) {
+                nw = i - 1;
+                nx = -2;
+                while (nx < 0) { // we need to know about next char
+                    if (nw == -1) {
+                        nextLink = 0;
+                        nx = Integer.MAX_VALUE;
+                    } else {
+                        nextLink = getLink(dest[nw]);
+                        if ((nextLink & IRRELEVANT) == 0) {
+                            nx = nw;
+                        } else {
+                            --nw;
+                        }
+                    }
+                }
+
+                if (((currLink & ALEFTYPE) > 0) && ((lastLink & LAMTYPE) > 0)) {
+                    lamalef_found = true; 
+                    char wLamalef = changeLamAlef(dest[i]); // get from 0x065C-0x065f
+                    if (wLamalef != '\u0000') {
+                        // replace alef by marker, it will be removed later
+                        dest[i] = '\uffff';
+                        dest[lastPos] = wLamalef;
+                        i = lastPos;
+                    }
+
+                    lastLink = prevLink;
+                    currLink = getLink(wLamalef); // requires '\u0000', unfortunately
+                }
+
+                // get the proper shape according to link ability of neighbors
+                // and of character; depends on the order of the shapes
+                // (isolated, initial, middle, final) in the compatibility area
+
+                int flag = specialChar(dest[i]);
+
+                int shape = shapeTable[nextLink & LINK_MASK]
+                    [lastLink & LINK_MASK]
+                    [currLink & LINK_MASK];
+
+                if (flag == 1) {
+                    shape &= 0x1;
+                } else if (flag == 2) {
+                    if (tashkeelFlag == 0 &&
+                        ((lastLink & LINKL) != 0) && 
+                        ((nextLink & LINKR) != 0) && 
+                        dest[i] != '\u064C' && 
+                        dest[i] != '\u064D' &&
+                        !((nextLink & ALEFTYPE) == ALEFTYPE && 
+                          (lastLink & LAMTYPE) == LAMTYPE)) {
+		
+                        shape = 1;
+                    } else {
+                        shape = 0;
+                    }
+                }
+
+                if (flag == 2) {
+                    if (tashkeelFlag < 2) {
+                        dest[i] = (char)('\uFE70' + irrelevantPos[dest[i] - '\u064B'] + shape);
+                    } // else leave tashkeel alone                    
+                } else {
+                    dest[i] = (char)('\uFE70' + (currLink >> 8) + shape);
+                }
+            }
+
+            // move one notch forward
+            if ((currLink & IRRELEVANT) == 0) {
+                prevLink = lastLink;
+                lastLink = currLink;
+                prevPos = lastPos;
+                lastPos = i;
+            }
+
+            --i;
+            if (i == nx) {
+                currLink = nextLink;
+                nx = -2;
+            } else if (i != -1) {
+                currLink = getLink(dest[i]);
+            }
+        }
+
+        // If we found a lam/alef pair in the buffer 
+        // call removeLamAlefSpaces to remove the spaces that were added
+
+        if (lamalef_found) {
+            destSize = removeLamAlefSpaces(dest, start, length);
+        } else {
+            destSize = length;
+        }
+        
+        return destSize;
+    }
+
+    /*
+     * Name    : deShapeUnicode
+     * Function: Converts an Arabic Unicode buffer in FExx Range into unshaped
+     *           arabic Unicode buffer in 06xx Range
+     */
+    private int deShapeUnicode(char[] dest, 
+                               int start,
+                               int length,
+                               int destSize) throws ArabicShapingException {
+
+        int lamalef_count = normalize(dest, start, length);
+
+        // If there was a lamalef in the buffer call expandLamAlef
+        if (lamalef_count != 0) {
+            // need to adjust dest to fit expanded buffer... !!!
+            destSize = expandLamAlef(dest, start, length, lamalef_count);
+        } else {
+            destSize = length;
+        }
+
+        return destSize;
+    }
+
+    private int internalShape(char[] source, 
+                              int sourceStart,
+                              int sourceLength,
+                              char[] dest,
+                              int destStart,
+                              int destSize) throws ArabicShapingException {
+
+        if (sourceLength == 0) {
+            return 0;
+        }
+
+        if (destSize == 0) {
+            if (((options & LETTERS_MASK) != LETTERS_NOOP) &&
+                ((options & LENGTH_MASK) == LENGTH_GROW_SHRINK)) {
+	
+                return calculateSize(source, sourceStart, sourceLength);
+            } else {
+                return sourceLength; // by definition
+            }
+        }
+
+        // always use temp buffer
+        char[] temp = new char[sourceLength * 2]; // all lamalefs requiring expansion
+        System.arraycopy(source, sourceStart, temp, 0, sourceLength);
+
+        if (isLogical) {
+            invertBuffer(temp, 0, sourceLength);
+        }
+
+        int outputSize = sourceLength;
+
+        switch (options & LETTERS_MASK) {
+        case LETTERS_SHAPE_TASHKEEL_ISOLATED:
+            outputSize = shapeUnicode(temp, 0, sourceLength, destSize, 1);
+            break;
+
+        case LETTERS_SHAPE:
+            outputSize = shapeUnicode(temp, 0, sourceLength, destSize, 0);
+            break;
+
+        case LETTERS_UNSHAPE:
+            outputSize = deShapeUnicode(temp, 0, sourceLength, destSize);
+            break; 
+
+        default:
+            break;
+        }
+                
+        if (outputSize > destSize) {
+            throw new ArabicShapingException("not enough room for result data");
+        }
+
+        if ((options & DIGITS_MASK) != DIGITS_NOOP) {
+            char digitBase = '\u0030'; // European digits
+            switch (options & DIGIT_TYPE_MASK) {
+            case DIGIT_TYPE_AN:
+                digitBase = '\u0660';  // Arabic-Indic digits
+                break;
+
+            case DIGIT_TYPE_AN_EXTENDED:
+                digitBase = '\u06f0';  // Eastern Arabic-Indic digits (Persian and Urdu)
+                break;
+
+            default:
+                break;
+            }
+
+            switch (options & DIGITS_MASK) {
+            case DIGITS_EN2AN:
+                {
+                    int digitDelta = digitBase - '\u0030';
+                    for (int i = 0; i < outputSize; ++i) {
+                        char ch = temp[i];
+                        if (ch <= '\u0039' && ch >= '\u0030') {
+                            temp[i] += digitDelta;
+                        }
+                    }
+                }
+                break;
+
+            case DIGITS_AN2EN:
+                {
+                    char digitTop = (char)(digitBase + 9);
+                    int digitDelta = '\u0030' - digitBase;
+                    for (int i = 0; i < outputSize; ++i) {
+                        char ch = temp[i];
+                        if (ch <= digitTop && ch >= digitBase) {
+                            temp[i] += digitDelta;
+                        }
+                    }
+                }
+                break;
+
+            case DIGITS_EN2AN_INIT_LR:
+                shapeToArabicDigitsWithContext(temp, 0, outputSize, digitBase, false);
+                break;
+
+            case DIGITS_EN2AN_INIT_AL:
+                shapeToArabicDigitsWithContext(temp, 0, outputSize, digitBase, true);
+                break;
+
+            default:
+                break;
+            }
+        }
+
+        if (isLogical) {
+            invertBuffer(temp, 0, outputSize);
+        }
+      
+        System.arraycopy(temp, 0, dest, destStart, outputSize);
+      
+        return outputSize;
+    }
+}
diff --git a/src/com/ibm/icu/text/ArabicShapingException.java b/src/com/ibm/icu/text/ArabicShapingException.java
new file mode 100755
index 0000000..8bcc2dd
--- /dev/null
+++ b/src/com/ibm/icu/text/ArabicShapingException.java
@@ -0,0 +1,17 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.text;
+
+/**
+ * Thrown by ArabicShaping when there is a shaping error.
+ */
+public final class ArabicShapingException extends Exception {
+    ArabicShapingException(String message) {
+        super(message);
+    }
+}
diff --git a/src/com/ibm/icu/text/BreakDictionary.java b/src/com/ibm/icu/text/BreakDictionary.java
new file mode 100755
index 0000000..5af9120
--- /dev/null
+++ b/src/com/ibm/icu/text/BreakDictionary.java
@@ -0,0 +1,307 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/BreakDictionary.java,v $ 
+ * $Date: 2002/02/16 03:06:03 $ 
+ * $Revision: 1.7 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.FileNotFoundException;
+import java.io.UnsupportedEncodingException;
+import java.io.IOException;
+import java.io.FileInputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.FileOutputStream;
+
+import com.ibm.icu.util.CompactByteArray;
+
+/**
+ * This is the class that represents the list of known words used by
+ * DictionaryBasedBreakIterator.  The conceptual data structure used
+ * here is a trie: there is a node hanging off the root node for every
+ * letter that can start a word.  Each of these nodes has a node hanging
+ * off of it for every letter that can be the second letter of a word
+ * if this node is the first letter, and so on.  The trie is represented
+ * as a two-dimensional array that can be treated as a table of state
+ * transitions.  Indexes are used to compress this array, taking
+ * advantage of the fact that this array will always be very sparse.
+ */
+public class BreakDictionary {
+    //=================================================================================
+    // testing and debugging
+    //=================================================================================
+    public static void main(String args[])
+            throws FileNotFoundException, UnsupportedEncodingException, IOException {
+        String filename = args[0];
+
+        BreakDictionary dictionary = new BreakDictionary(new FileInputStream(filename));
+
+        PrintWriter out = null;
+        
+        if(args.length >= 2) {
+            out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(args[1]), "UnicodeLittle"));
+        }
+        
+        dictionary.printWordList("", 0, out);
+        
+        if (out != null) {
+            out.close();
+        }
+    }
+
+    public void printWordList(String partialWord, int state, PrintWriter out)
+            throws IOException {
+        if (state == 0xFFFF) {
+            System.out.println(partialWord);
+            if (out != null) {
+                out.println(partialWord);
+            }
+        }
+        else {
+            for (int i = 0; i < numCols; i++) {
+                int newState = (at(state, i)) & 0xFFFF;
+                
+                if (newState != 0) {
+                    char newChar = reverseColumnMap[i];
+                    String newPartialWord = partialWord;
+                    
+                    if (newChar != 0) {
+                        newPartialWord += newChar;
+                    }
+                    
+                    printWordList(newPartialWord, newState, out);
+                }
+            }
+        }
+    }
+
+    /**
+     * A map used to go from column numbers to characters.  Used only
+     * for debugging right now.
+     */
+    private char[] reverseColumnMap = null;
+
+    //=================================================================================
+    // data members
+    //=================================================================================
+
+    /**
+     * Maps from characters to column numbers.  The main use of this is to
+     * avoid making room in the array for empty columns.
+     */
+    private CompactByteArray columnMap = null;
+
+    /**
+     * The number of actual columns in the table
+     */
+    private int numCols;
+
+    /**
+     * Columns are organized into groups of 32.  This says how many
+     * column groups.  (We could calculate this, but we store the
+     * value to avoid having to repeatedly calculate it.)
+     */
+    private int numColGroups;
+
+    /**
+     * The actual compressed state table.  Each conceptual row represents
+     * a state, and the cells in it contain the row numbers of the states
+     * to transition to for each possible letter.  0 is used to indicate
+     * an illegal combination of letters (i.e., the error state).  The
+     * table is compressed by eliminating all the unpopulated (i.e., zero)
+     * cells.  Multiple conceptual rows can then be doubled up in a single
+     * physical row by sliding them up and possibly shifting them to one
+     * side or the other so the populated cells don't collide.  Indexes
+     * are used to identify unpopulated cells and to locate populated cells.
+     */
+    private short[] table = null;
+
+    /**
+     * This index maps logical row numbers to physical row numbers
+     */
+    private short[] rowIndex = null;
+
+    /**
+     * A bitmap is used to tell which cells in the comceptual table are
+     * populated.  This array contains all the unique bit combinations
+     * in that bitmap.  If the table is more than 32 columns wide,
+     * successive entries in this array are used for a single row.
+     */
+    private int[] rowIndexFlags = null;
+
+    /**
+     * This index maps from a logical row number into the bitmap table above.
+     * (This keeps us from storing duplicate bitmap combinations.)  Since there
+     * are a lot of rows with only one populated cell, instead of wasting space
+     * in the bitmap table, we just store a negative number in this index for
+     * rows with one populated cell.  The absolute value of that number is
+     * the column number of the populated cell.
+     */
+    private short[] rowIndexFlagsIndex = null;
+
+    /**
+     * For each logical row, this index contains a constant that is added to
+     * the logical column number to get the physical column number
+     */
+    private byte[] rowIndexShifts = null;
+
+    //=================================================================================
+    // deserialization
+    //=================================================================================
+
+    public BreakDictionary(InputStream dictionaryStream) throws IOException {
+        readDictionaryFile(new DataInputStream(dictionaryStream));
+    }
+
+    public void readDictionaryFile(DataInputStream in) throws IOException {
+        int l;
+
+        // read in the version number (right now we just ignore it)
+        in.readInt();
+        
+        // read in the column map (this is serialized in its internal form:
+        // an index array followed by a data array)
+        l = in.readInt();
+        char[] temp = new char[l];
+        for (int i = 0; i < temp.length; i++)
+            temp[i] = (char)in.readShort();
+        l = in.readInt();
+        byte[] temp2 = new byte[l];
+        for (int i = 0; i < temp2.length; i++)
+            temp2[i] = in.readByte();
+        columnMap = new CompactByteArray(temp, temp2);
+
+        // read in numCols and numColGroups
+        numCols = in.readInt();
+        numColGroups = in.readInt();
+
+        // read in the row-number index
+        l = in.readInt();
+        rowIndex = new short[l];
+        for (int i = 0; i < rowIndex.length; i++)
+            rowIndex[i] = in.readShort();
+
+        // load in the populated-cells bitmap: index first, then bitmap list
+        l = in.readInt();
+        rowIndexFlagsIndex = new short[l];
+        for (int i = 0; i < rowIndexFlagsIndex.length; i++)
+            rowIndexFlagsIndex[i] = in.readShort();
+        l = in.readInt();
+        rowIndexFlags = new int[l];
+        for (int i = 0; i < rowIndexFlags.length; i++)
+            rowIndexFlags[i] = in.readInt();
+
+        // load in the row-shift index
+        l = in.readInt();
+        rowIndexShifts = new byte[l];
+        for (int i = 0; i < rowIndexShifts.length; i++)
+            rowIndexShifts[i] = in.readByte();
+
+        // finally, load in the actual state table
+        l = in.readInt();
+        table = new short[l];
+        for (int i = 0; i < table.length; i++)
+            table[i] = in.readShort();
+
+        // this data structure is only necessary for testing and debugging purposes
+        reverseColumnMap = new char[numCols];
+        for (char c = 0; c < 0xffff; c++) {
+            int col = columnMap.elementAt(c);
+            if (col != 0) {
+               reverseColumnMap[col] = c;
+            }
+        }
+
+        // close the stream
+        in.close();
+    }
+
+    //=================================================================================
+    // access to the words
+    //=================================================================================
+
+    /**
+     * Uses the column map to map the character to a column number, then
+     * passes the row and column number to the other version of at()
+     * @param row The current state
+     * @param ch The character whose column we're interested in
+     * @return The new state to transition to
+     */
+    public final short at(int row, char ch) {
+        int col = columnMap.elementAt(ch);
+        return at(row, col);
+    }
+
+    /**
+     * Returns the value in the cell with the specified (logical) row and
+     * column numbers.  In DictionaryBasedBreakIterator, the row number is
+     * a state number, the column number is an input, and the return value
+     * is the row number of the new state to transition to.  (0 is the
+     * "error" state, and -1 is the "end of word" state in a dictionary)
+     * @param row The row number of the current state
+     * @param col The column number of the input character (0 means "not a
+     * dictionary character")
+     * @return The row number of the new state to transition to
+     */
+    public final short at(int row, int col) {
+        if (cellIsPopulated(row, col)) {
+            // we map from logical to physical row number by looking up the
+            // mapping in rowIndex; we map from logical column number to
+            // physical column number by looking up a shift value for this
+            // logical row and offsetting the logical column number by
+            // the shift amount.  Then we can use internalAt() to actually
+            // get the value out of the table.
+            return internalAt(rowIndex[row], col + rowIndexShifts[row]);
+        }
+        else {
+            return 0;
+        }
+    }
+
+    /**
+     * Given (logical) row and column numbers, returns true if the
+     * cell in that position is populated
+     */
+    private final boolean cellIsPopulated(int row, int col) {
+        // look up the entry in the bitmap index for the specified row.
+        // If it's a negative number, it's the column number of the only
+        // populated cell in the row
+        if (rowIndexFlagsIndex[row] < 0) {
+            return col == -rowIndexFlagsIndex[row];
+        }
+
+        // if it's a positive number, it's the offset of an entry in the bitmap
+        // list.  If the table is more than 32 columns wide, the bitmap is stored
+        // successive entries in the bitmap list, so we have to divide the column
+        // number by 32 and offset the number we got out of the index by the result.
+        // Once we have the appropriate piece of the bitmap, test the appropriate
+        // bit and return the result.
+        else {
+            int flags = rowIndexFlags[rowIndexFlagsIndex[row] + (col >> 5)];
+            return (flags & (1 << (col & 0x1f))) != 0;
+        }
+    }
+
+    /**
+     * Implementation of at() when we know the specified cell is populated.
+     * @param row The PHYSICAL row number of the cell
+     * @param col The PHYSICAL column number of the cell
+     * @return The value stored in the cell
+     */
+    private final short internalAt(int row, int col) {
+        // the table is a one-dimensional array, so this just does the math necessary
+        // to treat it as a two-dimensional array (we don't just use a two-dimensional
+        // array because two-dimensional arrays are inefficient in Java)
+        return table[row * numCols + col];
+    }
+}
+
diff --git a/src/com/ibm/icu/text/BreakIterator.java b/src/com/ibm/icu/text/BreakIterator.java
new file mode 100755
index 0000000..8467bab
--- /dev/null
+++ b/src/com/ibm/icu/text/BreakIterator.java
@@ -0,0 +1,621 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/BreakIterator.java,v $ 
+ * $Date: 2002/03/20 05:11:15 $ 
+ * $Revision: 1.8 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICULocaleData;
+
+import java.io.InputStream;
+import java.io.IOException;
+import java.lang.ref.SoftReference;
+import java.net.URL;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.Vector;
+
+/**
+ * A class that locates boundaries in text.  This class defines a protocol for
+ * objects that break up a piece of natural-language text according to a set
+ * of criteria.  Instances or subclasses of BreakIterator can be provided, for
+ * example, to break a piece of text into words, sentences, or logical characters
+ * according to the conventions of some language or group of languages.
+ *
+ * We provide four built-in types of BreakIterator:
+ * <ul><li>getSentenceInstance() returns a BreakIterator that locates boundaries
+ * between sentences.  This is useful for triple-click selection, for example.
+ * <li>getWordInstance() returns a BreakIterator that locates boundaries between
+ * words.  This is useful for double-click selection or "find whole words" searches.
+ * This type of BreakIterator makes sure there is a boundary position at the
+ * beginning and end of each legal word.  (Numbers count as words, too.)  Whitespace
+ * and punctuation are kept separate from real words.
+ * <li>getLineInstance() returns a BreakIterator that locates positions where it is
+ * legal for a text editor to wrap lines.  This is similar to word breaking, but
+ * not the same: punctuation and whitespace are generally kept with words (you don't
+ * want a line to start with whitespace, for example), and some special characters
+ * can force a position to be considered a line-break position or prevent a position
+ * from being a line-break position.
+ * <li>getCharacterInstance() returns a BreakIterator that locates boundaries between
+ * logical characters.  Because of the structure of the Unicode encoding, a logical
+ * character may be stored internally as more than one Unicode code point.  (A with an
+ * umlaut may be stored as an a followed by a separate combining umlaut character,
+ * for example, but the user still thinks of it as one character.)  This iterator allows
+ * various processes (especially text editors) to treat as characters the units of text
+ * that a user would think of as characters, rather than the units of text that the
+ * computer sees as "characters".</ul>
+ *
+ * BreakIterator's interface follows an "iterator" model (hence the name), meaning it
+ * has a concept of a "current position" and methods like first(), last(), next(),
+ * and previous() that update the current position.  All BreakIterators uphold the
+ * following invariants:
+ * <ul><li>The beginning and end of the text are always treated as boundary positions.
+ * <li>The current position of the iterator is always a boundary position (random-
+ * access methods move the iterator to the nearest boundary position before or
+ * after the specified position, not _to_ the specified position).
+ * <li>DONE is used as a flag to indicate when iteration has stopped.  DONE is only
+ * returned when the current position is the end of the text and the user calls next(),
+ * or when the current position is the beginning of the text and the user calls
+ * previous().
+ * <li>Break positions are numbered by the positions of the characters that follow
+ * them.  Thus, under normal circumstances, the position before the first character
+ * is 0, the position after the first character is 1, and the position after the
+ * last character is 1 plus the length of the string.
+ * <li>The client can change the position of an iterator, or the text it analyzes,
+ * at will, but cannot change the behavior.  If the user wants different behavior, he
+ * must instantiate a new iterator.</ul>
+ *
+ * BreakIterator accesses the text it analyzes through a CharacterIterator, which makes
+ * it possible to use BreakIterator to analyze text in any text-storage vehicle that
+ * provides a CharacterIterator interface.
+ *
+ * <b>NOTE:</b>  Some types of BreakIterator can take a long time to create, and
+ * instances of BreakIterator are not currently cached by the system.  For
+ * optimal performance, keep instances of BreakIterator around as long as makes
+ * sense.  For example, when word-wrapping a document, don't create and destroy a
+ * new BreakIterator for each line.  Create one break iterator for the whole document
+ * (or whatever stretch of text you're wrapping) and use it to do the whole job of
+ * wrapping the text.
+ *
+  * <P>
+ * <strong>Examples</strong>:<P>
+ * Creating and using text boundaries
+ * <blockquote>
+ * <pre>
+ * public static void main(String args[]) {
+ *      if (args.length == 1) {
+ *          String stringToExamine = args[0];
+ *          //print each word in order
+ *          BreakIterator boundary = BreakIterator.getWordInstance();
+ *          boundary.setText(stringToExamine);
+ *          printEachForward(boundary, stringToExamine);
+ *          //print each sentence in reverse order
+ *          boundary = BreakIterator.getSentenceInstance(Locale.US);
+ *          boundary.setText(stringToExamine);
+ *          printEachBackward(boundary, stringToExamine);
+ *          printFirst(boundary, stringToExamine);
+ *          printLast(boundary, stringToExamine);
+ *      }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print each element in order
+ * <blockquote>
+ * <pre>
+ * public static void printEachForward(BreakIterator boundary, String source) {
+ *     int start = boundary.first();
+ *     for (int end = boundary.next();
+ *          end != BreakIterator.DONE;
+ *          start = end, end = boundary.next()) {
+ *          System.out.println(source.substring(start,end));
+ *     }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print each element in reverse order
+ * <blockquote>
+ * <pre>
+ * public static void printEachBackward(BreakIterator boundary, String source) {
+ *     int end = boundary.last();
+ *     for (int start = boundary.previous();
+ *          start != BreakIterator.DONE;
+ *          end = start, start = boundary.previous()) {
+ *         System.out.println(source.substring(start,end));
+ *     }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print first element
+ * <blockquote>
+ * <pre>
+ * public static void printFirst(BreakIterator boundary, String source) {
+ *     int start = boundary.first();
+ *     int end = boundary.next();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print last element
+ * <blockquote>
+ * <pre>
+ * public static void printLast(BreakIterator boundary, String source) {
+ *     int end = boundary.last();
+ *     int start = boundary.previous();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print the element at a specified position
+ * <blockquote>
+ * <pre>
+ * public static void printAt(BreakIterator boundary, int pos, String source) {
+ *     int end = boundary.following(pos);
+ *     int start = boundary.previous();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Find the next word
+ * <blockquote>
+ * <pre>
+ * public static int nextWordStartAfter(int pos, String text) {
+ *     BreakIterator wb = BreakIterator.getWordInstance();
+ *     wb.setText(text);
+ *     int last = wb.following(pos);
+ *     int current = wb.next();
+ *     while (current != BreakIterator.DONE) {
+ *         for (int p = last; p < current; p++) {
+ *             if (Character.isLetter(text.charAt(p))
+ *                 return last;
+ *         }
+ *         last = current;
+ *         current = wb.next();
+ *     }
+ *     return BreakIterator.DONE;
+ * }
+ * </pre>
+ * (The iterator returned by BreakIterator.getWordInstance() is unique in that
+ * the break positions it returns don't represent both the start and end of the
+ * thing being iterated over.  That is, a sentence-break iterator returns breaks
+ * that each represent the end of one sentence and the beginning of the next.
+ * With the word-break iterator, the characters between two boundaries might be a
+ * word, or they might be the punctuation or whitespace between two words.  The
+ * above code uses a simple heuristic to determine which boundary is the beginning
+ * of a word: If the characters between this boundary and the next boundary
+ * include at least one letter (this can be an alphabetical letter, a CJK ideograph,
+ * a Hangul syllable, a Kana character, etc.), then the text between this boundary
+ * and the next is a word; otherwise, it's the material between words.)
+ * </blockquote>
+ *
+ * @see CharacterIterator
+ *
+ */
+
+public abstract class BreakIterator implements Cloneable
+{
+    /**
+     * Default constructor.  There is no state that is carried by this abstract
+     * base class.
+     */
+    protected BreakIterator()
+    {
+    }
+
+    /**
+     * Clone method.  Creates another BreakIterator with the same behavior and
+     * current state as this one.
+     * @return The clone.
+     */
+    public Object clone()
+    {
+        try {
+            return super.clone();
+        }
+        catch (CloneNotSupportedException e) {
+            throw new InternalError();
+        }
+    }
+
+    /**
+     * DONE is returned by previous() and next() after all valid
+     * boundaries have been returned.
+     */
+    public static final int DONE = -1;
+
+    /**
+     * Return the first boundary position.  This is always the beginning
+     * index of the text this iterator iterates over.  For example, if
+     * the iterator iterates over a whole string, this function will
+     * always return 0.  This function also updates the iteration position
+     * to point to the beginning of the text.
+     * @return The character offset of the beginning of the stretch of text
+     * being broken.
+     */
+    public abstract int first();
+
+    /**
+     * Return the last boundary position.  This is always the "past-the-end"
+     * index of the text this iterator iterates over.  For example, if the
+     * iterator iterates over a whole string (call it "text"), this function
+     * will always return text.length().  This function also updated the
+     * iteration position to point to the end of the text.
+     * @return The character offset of the end of the stretch of text
+     * being broken.
+     */
+    public abstract int last();
+
+    /**
+     * Advances the specified number of steps forward in the text (a negative
+     * number, therefore, advances backwards).  If this causes the iterator
+     * to advance off either end of the text, this function returns DONE;
+     * otherwise, this function returns the position of the appropriate
+     * boundary.  Calling this function is equivalent to calling next() or
+     * previous() n times.
+     * @param n The number of boundaries to advance over (if positive, moves
+     * forward; if negative, moves backwards).
+     * @return The position of the boundary n boundaries from the current
+     * iteration position, or DONE if moving n boundaries causes the iterator
+     * to advance off either end of the text.
+     */
+    public abstract int next(int n);
+
+    /**
+     * Advances the iterator forward one boundary.  The current iteration
+     * position is updated to point to the next boundary position after the
+     * current position, and this is also the value that is returned.  If
+     * the current position is equal to the value returned by last(), or to
+     * DONE, this function returns DONE and sets the current position to
+     * DONE.
+     * @return The position of the first boundary position following the
+     * iteration position.
+     */
+    public abstract int next();
+
+    /**
+     * Advances the iterator backward one boundary.  The current iteration
+     * position is updated to point to the last boundary position before
+     * the current position, and this is also the value that is returned.  If
+     * the current position is equal to the value returned by first(), or to
+     * DONE, this function returns DONE and sets the current position to
+     * DONE.
+     * @return The position of the last boundary position preceding the
+     * iteration position.
+     */
+    public abstract int previous();
+
+    /**
+     * Sets the iterator's current iteration position to be the first
+     * boundary position following the specified position.  (Whether the
+     * specified position is itself a boundary position or not doesn't
+     * matter-- this function always moves the iteration position to the
+     * first boundary after the specified position.)  If the specified
+     * position is the past-the-end position, returns DONE.
+     * @param offset The character position to start searching from.
+     * @return The position of the first boundary position following
+     * "offset" (whether or not "offset" itself is a boundary position),
+     * or DONE if "offset" is the past-the-end offset.
+     */
+    public abstract int following(int offset);
+
+    /**
+     * Sets the iterator's current iteration position to be the last
+     * boundary position preceding the specified position.  (Whether the
+     * specified position is itself a boundary position or not doesn't
+     * matter-- this function always moves the iteration position to the
+     * last boundary before the specified position.)  If the specified
+     * position is the starting position, returns DONE.
+     * @param offset The character position to start searching from.
+     * @return The position of the last boundary position preceding
+     * "offset" (whether of not "offset" itself is a boundary position),
+     * or DONE if "offset" is the starting offset of the iterator.
+     */
+    public int preceding(int offset) {
+        // NOTE:  This implementation is here solely because we can't add new
+        // abstract methods to an existing class.  There is almost ALWAYS a
+        // better, faster way to do this.
+        int pos = following(offset);
+        while (pos >= offset && pos != DONE)
+            pos = previous();
+        return pos;
+    }
+
+    /**
+     * Return true if the specfied position is a boundary position.  If the
+     * function returns true, the current iteration position is set to the
+     * specified position; if the function returns false, the current
+     * iteration position is set as though following() had been called.
+     * @param offset the offset to check.
+     * @return True if "offset" is a boundary position.
+     */
+    public boolean isBoundary(int offset) {
+        // Again, this is the default implementation, which is provided solely because
+        // we couldn't add a new abstract method to an existing class.  The real
+        // implementations will usually need to do a little more work.
+        if (offset == 0) {
+            return true;
+        }
+        else
+            return following(offset - 1) == offset;
+    }
+
+    /**
+     * Return the iterator's current position.
+     * @return The iterator's current position.
+     */
+    public abstract int current();
+
+    /**
+     * Returns a CharacterIterator over the text being analyzed.
+     * For at least some subclasses of BreakIterator, this is a reference
+     * to the <b>actual iterator being used</b> by the BreakIterator,
+     * and therefore, this function's return value should be treated as
+     * <tt>const</tt>.  No guarantees are made about the current position
+     * of this iterator when it is returned.  If you need to move that
+     * position to examine the text, clone this function's return value first.
+     * @return A CharacterIterator over the text being analyzed.
+     */
+    public abstract CharacterIterator getText();
+
+    /**
+     * Sets the iterator to analyze a new piece of text.  The new
+     * piece of text is passed in as a String, and the current
+     * iteration position is reset to the beginning of the string.
+     * (The old text is dropped.)
+     * @param newText A String containing the text to analyze with
+     * this BreakIterator.
+     */
+    public void setText(String newText)
+    {
+        setText(new StringCharacterIterator(newText));
+    }
+
+    /**
+     * Sets the iterator to analyze a new piece of text.  The
+     * BreakIterator is passed a CharacterIterator through which
+     * it will access the text itself.  The current iteration
+     * position is reset to the CharacterIterator's start index.
+     * (The old iterator is dropped.)
+     * @param newText A CharacterIterator referring to the text
+     * to analyze with this BreakIterator (the iterator's current
+     * position is ignored, but its other state is significant).
+     */
+    public abstract void setText(CharacterIterator newText);
+
+    private static final int CHARACTER_INDEX = 0;
+    private static final int WORD_INDEX = 1;
+    private static final int LINE_INDEX = 2;
+    private static final int SENTENCE_INDEX = 3;
+    private static final int TITLE_INDEX = 4;
+    private static final SoftReference[] iterCache = new SoftReference[5];
+
+    /**
+     * Returns a new instance of BreakIterator that locates word boundaries.
+     * This function assumes that the text being analyzed is in the default
+     * locale's language.
+     * @return An instance of BreakIterator that locates word boundaries.
+     */
+    public static BreakIterator getWordInstance()
+    {
+        return getWordInstance(Locale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates word boundaries.
+     * @param where A locale specifying the language of the text to be
+     * analyzed.
+     * @return An instance of BreakIterator that locates word boundaries.
+     */
+    public static BreakIterator getWordInstance(Locale where)
+    {
+        return getBreakInstance(where,
+                                WORD_INDEX,
+                                "WordBreakRules",
+                                "WordBreakDictionary");
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates legal line-
+     * wrapping positions.  This function assumes the text being broken
+     * is in the default locale's language.
+     * @return A new instance of BreakIterator that locates legal
+     * line-wrapping positions.
+     */
+    public static BreakIterator getLineInstance()
+    {
+        return getLineInstance(Locale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates legal line-
+     * wrapping positions.
+     * @param where A Locale specifying the language of the text being broken.
+     * @return A new instance of BreakIterator that locates legal
+     * line-wrapping positions.
+     */
+    public static BreakIterator getLineInstance(Locale where)
+    {
+        return getBreakInstance(where,
+                                LINE_INDEX,
+                                "LineBreakRules",
+                                "LineBreakDictionary");
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates logical-character
+     * boundaries.  This function assumes that the text being analyzed is
+     * in the default locale's language.
+     * @return A new instance of BreakIterator that locates logical-character
+     * boundaries.
+     */
+    public static BreakIterator getCharacterInstance()
+    {
+        return getCharacterInstance(Locale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates logical-character
+     * boundaries.
+     */
+    public static BreakIterator getCharacterInstance(Locale where)
+    {
+        return getBreakInstance(where,
+                                CHARACTER_INDEX,
+                                "CharacterBreakRules",
+                                "CharacterBreakDictionary");
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * This function assumes the text being analyzed is in the default locale's
+     * language.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     */
+    public static BreakIterator getSentenceInstance()
+    {
+        return getSentenceInstance(Locale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     */
+    public static BreakIterator getSentenceInstance(Locale where)
+    {
+        return getBreakInstance(where,
+                                SENTENCE_INDEX,
+                                "SentenceBreakRules",
+                                "SentenceBreakDictionary");
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * This function assumes the text being analyzed is in the default locale's
+     * language.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     */
+    public static BreakIterator getTitleInstance()
+    {
+        return getTitleInstance(Locale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     */
+    public static BreakIterator getTitleInstance(Locale where)
+    {
+        return getBreakInstance(where,
+                                TITLE_INDEX,
+                                "TitleBreakRules",
+                                "TitleBreakDictionary");
+    }
+
+    private static BreakIterator getBreakInstance(Locale where,
+                                                  int type,
+                                                  String rulesName,
+                                                  String dictionaryName) {
+
+        if (iterCache[type] != null) {
+            BreakIteratorCache cache = (BreakIteratorCache) iterCache[type].get();
+            if (cache != null) {
+                if (cache.getLocale().equals(where)) {
+                    return cache.createBreakInstance();
+                }
+            }
+        }
+
+        BreakIterator result = createBreakInstance(where,
+                                                   type,
+                                                   rulesName,
+                                                   dictionaryName);
+        BreakIteratorCache cache = new BreakIteratorCache(where, result);
+        iterCache[type] = new SoftReference(cache);
+        return result;
+    }
+
+    private static BreakIterator createBreakInstance(Locale where,
+                                                     int type,
+                                                     String rulesName,
+                                                     String dictionaryName) {
+
+//		System.out.println("rulesName: "+rulesName);
+//		System.out.println("dictionaryName: "+dictionaryName);
+        ResourceBundle bundle = ICULocaleData.getResourceBundle("BreakIteratorRules", where);
+        String[] classNames = bundle.getStringArray("BreakIteratorClasses");
+
+        String rules = bundle.getString(rulesName);
+        
+        if (classNames[type].equals("RuleBasedBreakIterator")) {
+            return new RuleBasedBreakIterator(rules);
+        }
+        else if (classNames[type].equals("DictionaryBasedBreakIterator")) {
+            try {
+				// System.out.println(dictionaryName);
+                Object t = bundle.getObject(dictionaryName);
+				// System.out.println(t);
+                URL url = (URL)t;
+                InputStream dictionary = url.openStream();
+                return new DictionaryBasedBreakIterator(rules, dictionary);
+            }
+            catch(IOException e) {
+            }
+            catch(MissingResourceException e) {
+            }
+            return new RuleBasedBreakIterator(rules);
+        }
+        else
+            throw new IllegalArgumentException("Invalid break iterator class \"" +
+                            classNames[type] + "\"");
+    }
+
+    /**
+     * Returns a list of locales for which BreakIterators can be used.
+     * @return An array of Locales.  All of the locales in the array can
+     * be used when creating a BreakIterator.
+     */
+    public static synchronized Locale[] getAvailableLocales()
+    {
+		// returns all locales
+        return ICULocaleData.getAvailableLocales();
+    }
+
+    private static final class BreakIteratorCache {
+
+        private BreakIterator iter;
+        private Locale where;
+
+        BreakIteratorCache(Locale where, BreakIterator iter) {
+            this.where = where;
+            this.iter = (BreakIterator) iter.clone();
+        }
+
+        Locale getLocale() {
+            return where;
+        }
+
+        BreakIterator createBreakInstance() {
+            return (BreakIterator) iter.clone();
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/BreakTransliterator.java b/src/com/ibm/icu/text/BreakTransliterator.java
new file mode 100644
index 0000000..d5f4c6b
--- /dev/null
+++ b/src/com/ibm/icu/text/BreakTransliterator.java
@@ -0,0 +1,394 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/BreakTransliterator.java,v $ 
+ * $Date: 2002/07/13 03:27:09 $ 
+ * $Revision: 1.1 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+//import com.ibm.icu.dev.demo.impl.*;
+//import com.ibm.icu.lang.*;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.UnicodeFilter;
+import com.ibm.icu.text.Replaceable;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.impl.UCharacterIterator;
+import java.util.Locale;
+import java.text.StringCharacterIterator;
+import java.text.CharacterIterator;
+//import java.util.*;
+//import java.util.ArrayList;
+//import java.io.*;
+
+/**
+ * Inserts the specified characters at word breaks. To restrict it to particular characters, use a filter.
+ * TODO: this is an internal class, and only temporary. Remove it once we have \b notation in Transliterator.
+ */
+final class BreakTransliterator extends Transliterator {
+    private BreakIterator bi;
+    private String insertion;
+    private int[] boundaries = new int[50];
+    private int boundaryCount = 0;
+    
+    public BreakTransliterator(String ID, UnicodeFilter filter, BreakIterator bi, String insertion) {
+        super(ID, filter);
+        if (bi == null) bi = BreakIterator.getWordInstance(new Locale("th", "TH"));
+        this.bi = bi;
+        this.insertion = insertion;
+    }
+    
+    public BreakTransliterator(String ID, UnicodeFilter filter) {
+        this(ID, filter, null, " ");
+    }
+    
+    public String getInsertion() {
+        return insertion;
+    }
+    
+    public void setInsertion(String insertion) {
+        this.insertion = insertion;
+    }
+    
+    public BreakIterator getBreakIterator() {
+        return bi;
+    }
+    
+    public void setBreakIterator(BreakIterator bi) {
+        this.bi = bi;
+    }
+    
+    static final int LETTER_OR_MARK_MASK = 
+          (1<<Character.UPPERCASE_LETTER)
+        | (1<<Character.LOWERCASE_LETTER)
+        | (1<<Character.TITLECASE_LETTER)
+        | (1<<Character.MODIFIER_LETTER)
+        | (1<<Character.OTHER_LETTER)
+        | (1<<Character.COMBINING_SPACING_MARK)
+        | (1<<Character.NON_SPACING_MARK)
+        | (1<<Character.ENCLOSING_MARK)
+        ;
+    protected void handleTransliterate(Replaceable text, Position pos, boolean incremental) {
+        boundaryCount = 0;
+        int boundary = 0;
+        bi.setText(new ReplaceableCharacterIterator(text, pos.start, pos.limit, pos.start));
+        // TODO: fix clumsy workaround used below.
+        /*
+        char[] tempBuffer = new char[text.length()];
+        text.getChars(0, text.length(), tempBuffer, 0);
+        bi.setText(new StringCharacterIterator(new String(tempBuffer), pos.start, pos.limit, pos.start));
+        */
+        // end debugging
+        
+        // To make things much easier, we will stack the boundaries, and then insert at the end.
+        // generally, we won't need too many, since we will be filtered.
+        
+        for(boundary = bi.first(); boundary != bi.DONE && boundary < pos.limit; boundary = bi.next()) {
+            if (boundary == 0) continue;
+            // HACK: Check to see that preceeding item was a letter
+
+            int cp = UTF16.charAt(text, boundary-1);
+            int type = UCharacter.getType(cp);
+            //System.out.println(Integer.toString(cp,16) + " (before): " + type);
+            if (((1<<type) & LETTER_OR_MARK_MASK) == 0) continue;
+            
+            cp = UTF16.charAt(text, boundary);
+            type = UCharacter.getType(cp);
+            //System.out.println(Integer.toString(cp,16) + " (after): " + type);
+            if (((1<<type) & LETTER_OR_MARK_MASK) == 0) continue;
+            
+            if (boundaryCount >= boundaries.length) {       // realloc if necessary
+                int[] temp = new int[boundaries.length * 2];
+                System.arraycopy(boundaries, 0, temp, 0, boundaries.length);
+                boundaries = temp;
+            }
+            
+            boundaries[boundaryCount++] = boundary;
+            //System.out.println(boundary);
+        }
+        
+        int delta = 0;
+        int lastBoundary = 0;
+        
+        if (boundaryCount != 0) { // if we found something, adjust
+            delta = boundaryCount * insertion.length();
+            lastBoundary = boundaries[boundaryCount-1];
+            
+            // we do this from the end backwards, so that we don't have to keep updating.
+            
+            while (boundaryCount > 0) {
+                boundary = boundaries[--boundaryCount];
+                text.replace(boundary, boundary, insertion);
+            }
+        }
+        
+        // Now fix up the return values
+        pos.contextLimit += delta;
+        pos.limit += delta;
+        pos.start = incremental ? lastBoundary + delta : pos.limit;
+    }
+    
+    
+    /**
+     * Registers standard variants with the system.  Called by
+     * Transliterator during initialization.
+     */
+    static void register() {
+        // false means that it is invisible
+        Transliterator trans = new BreakTransliterator("Any-BreakInternal", null);
+        Transliterator.registerInstance(trans, false);
+        /*
+        Transliterator.registerFactory("Any-Break", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new BreakTransliterator("Any-Break", null);
+            }
+        });
+        */
+    }
+    
+    // Hack, just to get a real character iterator.
+    
+    static final class ReplaceableCharacterIterator implements CharacterIterator
+    {
+        private Replaceable text;
+        private int begin;
+        private int end;
+        // invariant: begin <= pos <= end
+        private int pos;
+
+        /**
+        * Constructs an iterator with an initial index of 0.
+        */
+        public ReplaceableCharacterIterator(Replaceable text)
+        {
+            this(text, 0);
+        }
+
+        /**
+        * Constructs an iterator with the specified initial index.
+        *
+        * @param  text   The String to be iterated over
+        * @param  pos    Initial iterator position
+        */
+        public ReplaceableCharacterIterator(Replaceable text, int pos)
+        {
+        this(text, 0, text.length(), pos);
+        }
+
+        /**
+        * Constructs an iterator over the given range of the given string, with the
+        * index set at the specified position.
+        *
+        * @param  text   The String to be iterated over
+        * @param  begin  Index of the first character
+        * @param  end    Index of the character following the last character
+        * @param  pos    Initial iterator position
+        */
+        public ReplaceableCharacterIterator(Replaceable text, int begin, int end, int pos) {
+            if (text == null) {
+                throw new NullPointerException();
+            }
+            this.text = text;
+
+            if (begin < 0 || begin > end || end > text.length()) {
+                throw new IllegalArgumentException("Invalid substring range");
+            }
+
+            if (pos < begin || pos > end) {
+                throw new IllegalArgumentException("Invalid position");
+            }
+
+            this.begin = begin;
+            this.end = end;
+            this.pos = pos;
+        }
+
+        /**
+        * Reset this iterator to point to a new string.  This package-visible
+        * method is used by other java.text classes that want to avoid allocating
+        * new ReplaceableCharacterIterator objects every time their setText method
+        * is called.
+        *
+        * @param  text   The String to be iterated over
+        */
+        public void setText(Replaceable text) {
+            if (text == null) {
+                throw new NullPointerException();
+            }
+            this.text = text;
+            this.begin = 0;
+            this.end = text.length();
+            this.pos = 0;
+        }
+
+        /**
+        * Implements CharacterIterator.first() for String.
+        * @see CharacterIterator#first
+        */
+        public char first()
+        {
+            pos = begin;
+            return current();
+        }
+
+        /**
+        * Implements CharacterIterator.last() for String.
+        * @see CharacterIterator#last
+        */
+        public char last()
+        {
+            if (end != begin) {
+                pos = end - 1;
+            } else {
+                pos = end;
+            }
+            return current();
+        }
+
+        /**
+        * Implements CharacterIterator.setIndex() for String.
+        * @see CharacterIterator#setIndex
+        */
+        public char setIndex(int p)
+        {
+        if (p < begin || p > end) {
+                throw new IllegalArgumentException("Invalid index");
+        }
+            pos = p;
+            return current();
+        }
+
+        /**
+        * Implements CharacterIterator.current() for String.
+        * @see CharacterIterator#current
+        */
+        public char current()
+        {
+            if (pos >= begin && pos < end) {
+                return text.charAt(pos);
+            }
+            else {
+                return DONE;
+            }
+        }
+
+        /**
+        * Implements CharacterIterator.next() for String.
+        * @see CharacterIterator#next
+        */
+        public char next()
+        {
+            if (pos < end - 1) {
+                pos++;
+                return text.charAt(pos);
+            }
+            else {
+                pos = end;
+                return DONE;
+            }
+        }
+
+        /**
+        * Implements CharacterIterator.previous() for String.
+        * @see CharacterIterator#previous
+        */
+        public char previous()
+        {
+            if (pos > begin) {
+                pos--;
+                return text.charAt(pos);
+            }
+            else {
+                return DONE;
+            }
+        }
+
+        /**
+        * Implements CharacterIterator.getBeginIndex() for String.
+        * @see CharacterIterator#getBeginIndex
+        */
+        public int getBeginIndex()
+        {
+            return begin;
+        }
+
+        /**
+        * Implements CharacterIterator.getEndIndex() for String.
+        * @see CharacterIterator#getEndIndex
+        */
+        public int getEndIndex()
+        {
+            return end;
+        }
+
+        /**
+        * Implements CharacterIterator.getIndex() for String.
+        * @see CharacterIterator#getIndex
+        */
+        public int getIndex()
+        {
+            return pos;
+        }
+
+        /**
+        * Compares the equality of two ReplaceableCharacterIterator objects.
+        * @param obj the ReplaceableCharacterIterator object to be compared with.
+        * @return true if the given obj is the same as this
+        * ReplaceableCharacterIterator object; false otherwise.
+        */
+        public boolean equals(Object obj)
+        {
+            if (this == obj) {
+                return true;
+            }
+            if (!(obj instanceof ReplaceableCharacterIterator)) {
+                return false;
+            }
+
+            ReplaceableCharacterIterator that = (ReplaceableCharacterIterator) obj;
+
+            if (hashCode() != that.hashCode()) {
+                return false;
+            }
+            if (!text.equals(that.text)) {
+                return false;
+            }
+            if (pos != that.pos || begin != that.begin || end != that.end) {
+                return false;
+            }
+            return true;
+        }
+
+        /**
+        * Computes a hashcode for this iterator.
+        * @return A hash code
+        */
+        public int hashCode()
+        {
+            return text.hashCode() ^ pos ^ begin ^ end;
+        }
+
+        /**
+        * Creates a copy of this iterator.
+        * @return A copy of this
+        */
+        public Object clone()
+        {
+            try {
+                ReplaceableCharacterIterator other
+                = (ReplaceableCharacterIterator) super.clone();
+                return other;
+            }
+            catch (CloneNotSupportedException e) {
+                throw new InternalError();
+            }
+        }
+
+    }
+        
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/text/CanonicalIterator.java b/src/com/ibm/icu/text/CanonicalIterator.java
new file mode 100755
index 0000000..d65f54f
--- /dev/null
+++ b/src/com/ibm/icu/text/CanonicalIterator.java
@@ -0,0 +1,527 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/CanonicalIterator.java,v $ 
+ * $Date: 2002/07/31 03:01:19 $ 
+ * $Revision: 1.11 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.lang.*;
+import java.util.*;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.USerializedSet;
+/**
+ * This class allows one to iterate through all the strings that are canonically equivalent to a given
+ * string. For example, here are some sample results:
+ * Results for: {A WITH RING ABOVE}{d}{DOT ABOVE}{CEDILLA}
+ * <pre>
+ 1: {A}{RING ABOVE}{d}{DOT ABOVE}{CEDILLA}
+ 2: {A}{RING ABOVE}{d}{CEDILLA}{DOT ABOVE}
+ 3: {A}{RING ABOVE}{d WITH DOT ABOVE}{CEDILLA}
+ 4: {A}{RING ABOVE}{d WITH CEDILLA}{DOT ABOVE}
+ 5: {A WITH RING ABOVE}{d}{DOT ABOVE}{CEDILLA}
+ 6: {A WITH RING ABOVE}{d}{CEDILLA}{DOT ABOVE}
+ 7: {A WITH RING ABOVE}{d WITH DOT ABOVE}{CEDILLA}
+ 8: {A WITH RING ABOVE}{d WITH CEDILLA}{DOT ABOVE}
+ 9: {ANGSTROM SIGN}{d}{DOT ABOVE}{CEDILLA}
+10: {ANGSTROM SIGN}{d}{CEDILLA}{DOT ABOVE}
+11: {ANGSTROM SIGN}{d WITH DOT ABOVE}{CEDILLA}
+12: {ANGSTROM SIGN}{d WITH CEDILLA}{DOT ABOVE}
+ *</pre>
+ *<br>Note: the code is intended for use with small strings, and is not suitable for larger ones,
+ * since it has not been optimized for that situation.
+ *@author M. Davis
+ *@draft 2.2
+ *@internal -- not for public use: the API may change without warning.
+ */
+
+public class CanonicalIterator {
+    /**
+     *@param source string to get results for
+     */
+    public CanonicalIterator(String source) {
+        setSource(source);
+    }
+    
+    /**
+     *@return gets the source: NOTE: it is the NFD form of the source originally passed in
+     */
+    public String getSource() {
+      return source;
+    }
+    
+    /**
+     * Resets the iterator so that one can start again from the beginning.
+     */
+    public void reset() {
+        done = false;
+        for (int i = 0; i < current.length; ++i) {
+            current[i] = 0;
+        }
+    }
+    
+    /**
+     *@return the next string that is canonically equivalent. The value null is returned when
+     * the iteration is done.
+	 *<br><b>Warning: The strings are not guaranteed to be in any particular order.</b>
+     */
+    public String next() {
+        if (done) return null;
+        
+        // construct return value
+        
+        buffer.setLength(0); // delete old contents
+        for (int i = 0; i < pieces.length; ++i) {
+            buffer.append(pieces[i][current[i]]);
+        }
+        String result = buffer.toString();
+        
+        // find next value for next time
+        
+        for (int i = current.length - 1; ; --i) {
+            if (i < 0) {
+                done = true;
+                break;
+            }
+            current[i]++;
+            if (current[i] < pieces[i].length) break; // got sequence
+            current[i] = 0;
+        }
+        return result;
+    }
+    
+    /**
+     *@param set the source string to iterate against. This allows the same iterator to be used
+     * while changing the source string, saving object creation.
+     */
+    public void setSource(String newSource) {
+        source = Normalizer.normalize(newSource, Normalizer.NFD);
+        done = false;
+        
+        // catch degenerate case
+    	if (newSource.length() == 0) {
+    		pieces = new String[1][];
+    		current = new int[1];
+    		pieces[0] = new String[]{""};
+    		return;
+    	}
+        
+        // find the segments
+        List list = new ArrayList();
+        int cp;
+        int start = 0;
+        
+	    // i should be the end of the first code point
+	    
+	    int i = UTF16.findOffsetFromCodePoint(source, 1);
+        
+        for (; i < source.length(); i += UTF16.getCharCount(i)) {
+            cp = UTF16.charAt(source, i);
+            if (NormalizerImpl.isCanonSafeStart(cp)) {
+                list.add(source.substring(start, i)); // add up to i
+                start = i;
+            }
+        }
+        list.add(source.substring(start, i)); // add last one
+        
+        // allocate the arrays, and find the strings that are CE to each segment
+        pieces = new String[list.size()][];
+        current = new int[list.size()];
+        for (i = 0; i < pieces.length; ++i) {
+            if (PROGRESS) System.out.println("SEGMENT");
+            pieces[i] = getEquivalents((String) list.get(i));
+        }
+    }
+    
+    /**
+     * Simple implementation of permutation. 
+	 *<br><b>Warning: The strings are not guaranteed to be in any particular order.</b>
+     * @param source the string to find permutations for
+     * @param the set to add the results to
+     * @internal
+     */
+    public static void permute(String source, boolean skipZeros, Set output) {
+    	// TODO: optimize
+        //if (PROGRESS) System.out.println("Permute: " + source);
+        
+        // optimization:
+        // if zero or one character, just return a set with it
+        // we check for length < 2 to keep from counting code points all the time
+        if (source.length() <= 2 && UTF16.countCodePoint(source) <= 1) {
+            output.add(source);
+            return;
+        }
+        
+        // otherwise iterate through the string, and recursively permute all the other characters
+        Set subpermute = new HashSet();
+        int cp;
+        for (int i = 0; i < source.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(source, i);
+            
+        	// optimization:
+        	// if the character is canonical combining class zero,
+        	// don't permute it
+        	if (skipZeros && i != 0 && UCharacter.getCombiningClass(cp) == 0) {
+        		//System.out.println("Skipping " + Utility.hex(UTF16.valueOf(source, i)));
+	        	continue;
+        	}            
+            
+            // see what the permutations of the characters before and after this one are
+            subpermute.clear();
+            permute(source.substring(0,i) 
+            	+ source.substring(i + UTF16.getCharCount(cp)), skipZeros, subpermute);
+            
+            // prefix this character to all of them
+            String chStr = UTF16.valueOf(source, i);
+            Iterator it = subpermute.iterator();
+            while (it.hasNext()) {
+                String piece = chStr + (String) it.next();
+                //if (PROGRESS) System.out.println("  Piece: " + piece);
+                output.add(piece);
+            }
+        }
+        return;
+    }
+    
+    // FOR TESTING
+    
+    /**
+     *@return the set of "safe starts", characters that are class zero AND are never non-initial in a decomposition.
+     *@internal
+     *
+    public static UnicodeSet getSafeStart() {
+        return (UnicodeSet) SAFE_START.clone();
+    }
+    */
+    /**
+     *@return the set of characters whose decompositions start with the given character
+     *@internal
+     *
+    public static UnicodeSet getStarts(int cp) {
+        UnicodeSet result = AT_START.get(cp);
+        if (result == null) result = EMPTY;
+        return (UnicodeSet) result.clone();
+    }
+    */
+    
+    // ===================== PRIVATES ==============================
+    
+    // debug
+    private static boolean PROGRESS = false; // debug progress
+    private static Transliterator NAME = PROGRESS ? Transliterator.getInstance("name") : null;
+    private static boolean SKIP_ZEROS = true;
+ 
+    // fields
+    private String source;
+    private boolean done;
+    private String[][] pieces;
+    private int[] current;
+    // Note: C will need two more fields, since arrays there don't have lengths
+    // int pieces_length;
+    // int[] pieces_lengths;
+    
+    // transient fields
+    private transient StringBuffer buffer = new StringBuffer();
+    
+    
+    // we have a segment, in NFD. Find all the strings that are canonically equivalent to it.
+    private String[] getEquivalents(String segment) {
+        Set result = new HashSet();
+        Set basic = getEquivalents2(segment);
+        Set permutations = new HashSet();
+        
+        // now get all the permutations
+        // add only the ones that are canonically equivalent
+        // TODO: optimize by not permuting any class zero.
+        Iterator it = basic.iterator();
+        while (it.hasNext()) {
+            String item = (String) it.next();
+        	permutations.clear();
+            permute(item, SKIP_ZEROS, permutations);
+            Iterator it2 = permutations.iterator();
+            while (it2.hasNext()) {
+                String possible = (String) it2.next();
+                
+/*               
+				String attempt = Normalizer.normalize(possible, Normalizer.DECOMP, 0);
+				if (attempt.equals(segment)) {
+*/
+                if (Normalizer.compare(possible, segment,0)==0) {
+             	               	
+            		if (PROGRESS) System.out.println("Adding Permutation: " + NAME.transliterate(possible));
+                	result.add(possible);
+
+                } else {
+            		if (PROGRESS) System.out.println("-Skipping Permutation: " + NAME.transliterate(possible));
+                }
+            }
+        }
+        
+        // convert into a String[] to clean up storage
+        String[] finalResult = new String[result.size()];
+        result.toArray(finalResult);
+        return finalResult;
+    }
+    
+     
+    private Set getEquivalents2(String segment) {
+        
+        Set result = new HashSet();
+        
+        if (PROGRESS) System.out.println("Adding: " + NAME.transliterate(segment));
+        
+        result.add(segment);
+        StringBuffer workingBuffer = new StringBuffer();
+        
+        // cycle through all the characters
+        int cp=0,end=0;
+	    int[] range = new int[2];
+        for (int i = 0; i < segment.length(); i += UTF16.getCharCount(cp)) {
+            
+	        // see if any character is at the start of some decomposition
+	        cp = UTF16.charAt(segment, i);;
+	        USerializedSet starts = new USerializedSet();
+           
+            if (!NormalizerImpl.getCanonStartSet(cp, starts)) {
+	          continue;
+	        }
+	        int j=0;
+            // if so, see which decompositions match 
+	        for(j = 0, cp = end+1; cp <= end ||starts.getSerializedRange(j++, range); ++cp) {
+                if(cp>end){
+                    cp=range[0];
+                    end=range[1];
+                }
+                
+	            Set remainder = extract(cp, segment, i,workingBuffer);
+	            if (remainder == null) continue;
+	
+	            // there were some matches, so add all the possibilities to the set.
+	            String prefix= segment.substring(0,i);
+	            prefix += UTF16.valueOf(cp);
+	            int el = -1;
+	            Iterator iter = remainder.iterator();
+	            while (iter.hasNext()) {
+	                String item = (String) iter.next();
+	                String toAdd = new String(prefix);
+	                toAdd += item;
+	                result.add(toAdd);		
+	                //if (PROGRESS) printf("Adding: %s\n", UToS(Tr(*toAdd)));
+	            }
+
+            }
+	    }
+	    return result;
+        /*
+        Set result = new HashSet();
+        if (PROGRESS) System.out.println("Adding: " + NAME.transliterate(segment));
+        result.add(segment);
+        StringBuffer workingBuffer = new StringBuffer();
+        
+        // cycle through all the characters
+        int cp;
+        
+        for (int i = 0; i < segment.length(); i += UTF16.getCharCount(cp)) {
+            // see if any character is at the start of some decomposition
+            cp = UTF16.charAt(segment, i);
+            NormalizerImpl.getCanonStartSet(c,fillSet)
+            UnicodeSet starts = AT_START.get(cp);
+            if (starts == null) continue;
+            UnicodeSetIterator usi = new UnicodeSetIterator(starts);
+            // if so, see which decompositions match
+            while (usi.next()) {
+                int cp2 = usi.codepoint;
+                // we know that there are no strings in it
+                // so we don't have to check CharacterIterator.IS_STRING
+                Set remainder = extract(cp2, segment, i, workingBuffer);
+                if (remainder == null) continue;
+                
+                // there were some matches, so add all the possibilities to the set.
+                String prefix = segment.substring(0, i) + UTF16.valueOf(cp2);
+                Iterator it = remainder.iterator();
+                while (it.hasNext()) {
+                    String item = (String) it.next();
+                    if (PROGRESS) System.out.println("Adding: " + NAME.transliterate(prefix + item));
+                    result.add(prefix + item);
+                }
+            }
+        }
+        return result;
+        */
+    }
+    
+    /**
+     * See if the decomposition of cp2 is at segment starting at segmentPos 
+     * (with canonical rearrangment!)
+     * If so, take the remainder, and return the equivalents 
+     */
+    private Set extract(int comp, String segment, int segmentPos, StringBuffer buffer) {
+        if (PROGRESS) System.out.println(" extract: " + NAME.transliterate(UTF16.valueOf(comp))
+            + ", " + NAME.transliterate(segment.substring(segmentPos)));
+            
+        //String decomp = Normalizer.normalize(UTF16.valueOf(comp), Normalizer.DECOMP, 0);
+        String decomp = Normalizer.normalize(comp, Normalizer.NFD);
+        
+        // See if it matches the start of segment (at segmentPos)
+        boolean ok = false;
+        int cp;
+        int decompPos = 0;
+        int decompCp = UTF16.charAt(decomp,0);
+        decompPos += UTF16.getCharCount(decompCp); // adjust position to skip first char
+        //int decompClass = getClass(decompCp);
+        buffer.setLength(0); // initialize working buffer, shared among callees
+        
+        for (int i = segmentPos; i < segment.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(segment, i);
+            if (cp == decompCp) { // if equal, eat another cp from decomp
+                if (PROGRESS) System.out.println("  matches: " + NAME.transliterate(UTF16.valueOf(cp)));
+                if (decompPos == decomp.length()) { // done, have all decomp characters!
+                    buffer.append(segment.substring(i + UTF16.getCharCount(cp))); // add remaining segment chars
+                    ok = true;
+                    break;
+                }
+                decompCp = UTF16.charAt(decomp, decompPos);
+                decompPos += UTF16.getCharCount(decompCp);
+                //decompClass = getClass(decompCp);
+            } else {
+                if (PROGRESS) System.out.println("  buffer: " + NAME.transliterate(UTF16.valueOf(cp)));
+                // brute force approach
+                UTF16.append(buffer, cp);
+                /* TODO: optimize
+                // since we know that the classes are monotonically increasing, after zero
+                // e.g. 0 5 7 9 0 3
+                // we can do an optimization
+                // there are only a few cases that work: zero, less, same, greater
+                // if both classes are the same, we fail
+                // if the decomp class < the segment class, we fail
+        
+                segClass = getClass(cp);
+                if (decompClass <= segClass) return null;
+                */
+            }
+        }
+        if (!ok) return null; // we failed, characters left over
+        if (PROGRESS) System.out.println("Matches");
+        if (buffer.length() == 0) return SET_WITH_NULL_STRING; // succeed, but no remainder
+        String remainder = buffer.toString();
+        
+        // brute force approach
+        // to check to make sure result is canonically equivalent
+        /*
+        String trial = Normalizer.normalize(UTF16.valueOf(comp) + remainder, Normalizer.DECOMP, 0);
+        if (!segment.regionMatches(segmentPos, trial, 0, segment.length() - segmentPos)) return null;
+        */
+        
+        if (0!=Normalizer.compare(UTF16.valueOf(comp) + remainder, segment.substring(segmentPos), 0)) return null;
+        
+        // get the remaining combinations
+        return getEquivalents2(remainder);
+    }
+    
+    /*
+    // TODO: fix once we have a codepoint interface to get the canonical combining class
+    // TODO: Need public access to canonical combining class in UCharacter!
+    private static int getClass(int cp) {
+        return Normalizer.getClass((char)cp);
+    }
+    */
+    
+   // ================= BUILDER =========================
+    // TODO: Flatten this data so it doesn't have to be reconstructed each time!
+    
+    private static final UnicodeSet EMPTY = new UnicodeSet(); // constant, don't change
+    private static final Set SET_WITH_NULL_STRING = new HashSet(); // constant, don't change
+    static {
+        SET_WITH_NULL_STRING.add("");
+    }
+    
+  //  private static UnicodeSet SAFE_START = new UnicodeSet();
+  //  private static CharMap AT_START = new CharMap();
+    
+        // TODO: WARNING, NORMALIZER doesn't have supplementaries yet !!;
+        // Change FFFF to 10FFFF in C, and in Java when normalizer is upgraded.
+  //  private static int LAST_UNICODE = 0x10FFFF;
+    /*
+    static {
+        buildData();
+    }
+    */
+    /*
+    private static void buildData() {
+
+        if (PROGRESS) System.out.println("Getting Safe Start");
+        for (int cp = 0; cp <= LAST_UNICODE; ++cp) {
+            if (PROGRESS & (cp & 0x7FF) == 0) System.out.print('.');
+            int cc = UCharacter.getCombiningClass(cp);
+            if (cc == 0) SAFE_START.add(cp);
+            // will fix to be really safe below
+        }
+        if (PROGRESS) System.out.println();
+        
+        if (PROGRESS) System.out.println("Getting Containment");
+        for (int cp = 0; cp <= LAST_UNICODE; ++cp) {
+            if (PROGRESS & (cp & 0x7FF) == 0) System.out.print('.');
+            
+            if (Normalizer.isNormalized(cp, Normalizer.NFD)) continue;
+
+            //String istr = UTF16.valueOf(cp);
+            String decomp = Normalizer.normalize(cp, Normalizer.NFD);
+            //if (decomp.equals(istr)) continue;
+            
+            // add each character in the decomposition to canBeIn 
+            
+            int component;
+            for (int i = 0; i < decomp.length(); i += UTF16.getCharCount(component)) {
+                component = UTF16.charAt(decomp, i);
+                if (i == 0) {
+                    AT_START.add(component, cp);
+                } else if (UCharacter.getCombiningClass(component) == 0) {
+                    SAFE_START.remove(component);
+                }
+            }
+        }
+        if (PROGRESS) System.out.println();
+    }
+        // the following is just for a map from characters to a set of characters
+    
+    private static class CharMap {
+        Map storage = new HashMap();
+        MutableInt probe = new MutableInt();
+        boolean converted = false;
+        
+        public void add(int cp, int whatItIsIn) {
+            UnicodeSet result = (UnicodeSet) storage.get(probe.set(cp));
+            if (result == null) {
+                result = new UnicodeSet();
+                storage.put(probe, result);
+            }
+            result.add(whatItIsIn);
+        }
+        
+        public UnicodeSet get(int cp) {
+            return (UnicodeSet) storage.get(probe.set(cp));
+        }
+    }
+            
+    private static class MutableInt {
+        public int contents;
+        public int hashCode() { return contents; }
+        public boolean equals(Object other) {
+            return ((MutableInt)other).contents == contents;
+        }
+        // allows chaining
+        public MutableInt set(int contents) {
+            this.contents = contents;
+            return this;
+        }
+    }
+    */
+
+}
+    
\ No newline at end of file
diff --git a/src/com/ibm/icu/text/ChineseDateFormat.java b/src/com/ibm/icu/text/ChineseDateFormat.java
new file mode 100755
index 0000000..33d7048
--- /dev/null
+++ b/src/com/ibm/icu/text/ChineseDateFormat.java
@@ -0,0 +1,127 @@
+/*********************************************************************
+ * Copyright (C) 2000, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *********************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/ChineseDateFormat.java,v $
+ * $Date: 2002/03/02 00:07:28 $
+ * $Revision: 1.5 $
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.util.*;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Locale;
+
+/**
+ * A concrete {@link DateFormat} for {@link com.ibm.icu.util.ChineseCalendar}.
+ * This class handles a <code>ChineseCalendar</code>-specific field,
+ * <code>ChineseCalendar.IS_LEAP_MONTH</code>.  It also redefines the
+ * handling of two fields, <code>ERA</code> and <code>YEAR</code>.  The
+ * former is displayed numerically, instead of symbolically, since it is
+ * the numeric cycle number in <code>ChineseCalendar</code>.  The latter is
+ * numeric, as before, but has no special 2-digit Y2K behavior.
+ *
+ * <p>With regard to <code>ChineseCalendar.IS_LEAP_MONTH</code>, this
+ * class handles parsing specially.  If no string symbol is found at all,
+ * this is taken as equivalent to an <code>IS_LEAP_MONTH</code> value of
+ * zero.  This allows formats to display a special string (e.g., "*") for
+ * leap months, but no string for normal months.
+ *
+ * <p>Summary of field changes vs. {@link SimpleDateFormat}:<pre>
+ * Symbol   Meaning                 Presentation        Example
+ * ------   -------                 ------------        -------
+ * G        cycle                   (Number)            78
+ * y        year of cycle (1..60)   (Number)            17
+ * l        is leap month           (Text)              4637
+ * </pre>
+ *
+ * @see com.ibm.icu.util.ChineseCalendar
+ * @see ChineseDateFormatSymbols
+ * @author Alan Liu
+ */
+public class ChineseDateFormat extends SimpleDateFormat {
+
+    // TODO Finish the constructors
+
+    public ChineseDateFormat(String pattern, Locale locale) {
+        super(pattern, new ChineseDateFormatSymbols(locale));
+    }
+
+    protected String subFormat(char ch, int count, int beginOffset,
+                               FieldPosition pos, DateFormatSymbols formatData,
+                               Calendar cal)  {
+        switch (ch) {
+        case 'G': // 'G' - ERA
+            return zeroPaddingNumber(cal.get(Calendar.ERA), 1, 9);
+        case 'l': // 'l' - IS_LEAP_MONTH
+            {
+                ChineseDateFormatSymbols symbols =
+                    (ChineseDateFormatSymbols) formatData;
+                return symbols.getLeapMonth(cal.get(
+                               ChineseCalendar.IS_LEAP_MONTH));
+            }
+        default:
+            return super.subFormat(ch, count, beginOffset, pos, formatData, cal);
+        }
+    }    
+
+    protected int subParse(String text, int start, char ch, int count,
+                           boolean obeyCount, boolean[] ambiguousYear, Calendar cal) {
+        if (ch != 'G' && ch != 'l' && ch != 'y') {
+            return super.subParse(text, start, ch, count, obeyCount, ambiguousYear, cal);
+        }
+
+        ParsePosition pos = new ParsePosition(start);
+
+        // If there are any spaces here, skip over them.  If we hit the end
+        // of the string, then fail.
+        for (;;) {
+            if (pos.getIndex() >= text.length()) {
+                return -start;
+            }
+            char c = text.charAt(pos.getIndex());
+            if (c != ' ' && c != '\t') { // TODO Shouldn't this be isWhitespace?
+                break;
+            }
+            pos.setIndex(pos.getIndex()+1);
+        }
+
+        switch (ch) {
+        case 'G': // 'G' - ERA
+        case 'y': // 'y' - YEAR, but without the 2-digit Y2K adjustment
+            {
+                Number number = null;
+                if (obeyCount) {
+                    if ((start+count) > text.length()) {
+                        return -start;
+                    }
+                    number = numberFormat.parse(text.substring(0, start+count), pos);
+                } else {
+                    number = numberFormat.parse(text, pos);
+                }
+                if (number == null) {
+                    return -start;
+                }
+                int value = number.intValue();
+                cal.set(ch == 'G' ? Calendar.ERA : Calendar.YEAR, value);
+                return pos.getIndex();
+            }
+        case 'l': // 'l' - IS_LEAP_MONTH
+            {
+                ChineseDateFormatSymbols symbols =
+                    (ChineseDateFormatSymbols) getSymbols();
+                int result = matchString(text, start, ChineseCalendar.IS_LEAP_MONTH,
+                                         symbols.isLeapMonth, cal);
+                // Treat the absence of any matching string as setting
+                // IS_LEAP_MONTH to false.
+                if (result<0) {
+                    cal.set(ChineseCalendar.IS_LEAP_MONTH, 0);
+                    result = start;
+                }
+                return result;
+            }
+        default:
+            return 0; // This can never happen
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/ChineseDateFormatSymbols.java b/src/com/ibm/icu/text/ChineseDateFormatSymbols.java
new file mode 100755
index 0000000..2144a01
--- /dev/null
+++ b/src/com/ibm/icu/text/ChineseDateFormatSymbols.java
@@ -0,0 +1,60 @@
+/*********************************************************************
+ * Copyright (C) 2000, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *********************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/ChineseDateFormatSymbols.java,v $
+ * $Date: 2002/02/16 03:06:04 $
+ * $Revision: 1.2 $
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.util.*;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+
+/**
+ * A subclass of {@link DateFormatSymbols} for {@link ChineseDateFormat}.
+ * This class contains additional symbols corresponding to the
+ * <code>ChineseCalendar.IS_LEAP_MONTH</code> field.
+ *
+ * @see ChineseDateFormat
+ * @see com.ibm.icu.util.ChineseCalendar
+ * @author Alan Liu
+ */
+public class ChineseDateFormatSymbols extends DateFormatSymbols {
+    
+    /**
+     * Package-private array that ChineseDateFormat needs to be able to
+     * read.
+     */
+    String isLeapMonth[]; // Do NOT add =null initializer
+
+    public ChineseDateFormatSymbols() {
+        this(Locale.getDefault());
+    }
+
+    public ChineseDateFormatSymbols(Locale locale) {
+        super(ChineseCalendar.class, locale);
+    }
+
+    public ChineseDateFormatSymbols(Calendar cal, Locale locale) {
+        super(cal==null?null:cal.getClass(), locale);
+    }
+
+    // New API
+    public String getLeapMonth(int isLeapMonth) {
+        return this.isLeapMonth[isLeapMonth];
+    }
+
+    /**
+     * Override DateFormatSymbols.
+     */
+    protected void constructCalendarSpecific(ResourceBundle bundle) {
+        super.constructCalendarSpecific(bundle);
+        if (bundle != null) {
+            try {
+                isLeapMonth = bundle.getStringArray("IsLeapMonth");
+            } catch (MissingResourceException e) {}
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/CollationElementIterator.java b/src/com/ibm/icu/text/CollationElementIterator.java
new file mode 100755
index 0000000..cff3b2a
--- /dev/null
+++ b/src/com/ibm/icu/text/CollationElementIterator.java
@@ -0,0 +1,2492 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.text.CharacterIterator;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.impl.ICUDebug;
+
+/**
+ * <p><code>CollationElementIterator</code> is an iterator created by
+ * a RuleBasedCollator to walk through a string. The return result of
+ * each iteration is a 32-bit collation element that defines the
+ * ordering priority of the next character or sequence of characters
+ * in the source string.</p>
+ *
+ * <p>For illustration, consider the following in Spanish:
+ * <blockquote>
+ * <pre>
+ * "ca" -> the first collation element is collation_element('c') and second 
+ *         collation element is collation_element('a').
+ * 
+ * Since "ch" in Spanish sorts as one entity, the below example returns one
+ * collation element for the two characters 'c' and 'h'
+ * 
+ * "cha" -> the first collation element is collation_element('ch') and second 
+ *          collation element is collation_element('a').
+ * </pre>
+ * </blockquote>
+ * And in German,
+ * <blockquote>
+ * <pre>
+ * Since the character '&#230;' is a composed character of 'a' and 'e', the
+ * iterator returns two collation elements for the single character '&#230;'
+ * 
+ * "&#230;b" -> the first collation element is collation_element('a'), the 
+ *              second collation element is collation_element('e'), and the 
+ *              third collation element is collation_element('b').
+ * </pre>
+ * </blockquote>
+ * </p>
+ *
+ * <p>For collation ordering comparison, the collation element results
+ * can not be compared simply by using basic arithmetric operators,
+ * e.g. &lt;, == or &gt;, further processing has to be done. Details
+ * can be found in the ICU
+ * <a href=http://oss.software.ibm.com/icu/userguide/Collate_ServiceArchitecture.html>
+ * user guide</a>. An example of using the CollationElementIterator
+ * for collation ordering comparison is the class 
+ * <a href=StringSearch.html> com.ibm.icu.text.StringSearch</a>.</p>
+ *
+ * <p>To construct a CollationElementIterator object, users 
+ * call the method getCollationElementIterator() on a
+ * RuleBasedCollator that defines the desired sorting order.</p>
+ *
+ * <p> Example:
+ * <blockquote>
+ * <pre>
+ *  String testString = "This is a test";
+ *  RuleBasedCollator rbc = new RuleBasedCollator("&amp;a&lt;b");
+ *  CollationElementIterator iterator = rbc.getCollationElementIterator(testString);
+ *  int primaryOrder = iterator.IGNORABLE;
+ *  while (primaryOrder != iterator.NULLORDER) {
+ *      int order = iterator.next();
+ *      if (order != iterator.IGNORABLE &&
+ *          order != iterator.NULLORDER) {
+ *          // order is valid, not ignorable and we have not passed the end
+ *          // of the iteration, we do something
+ *          primaryOrder = CollationElementIterator.primaryOrder(order);
+ *          System.out.println("Next primary order 0x" + 
+ *                             Integer.toHexString(primaryOrder));
+ *      }
+ *  }
+ * </pre>
+ * </blockquote>
+ * </p>
+ * 
+ * @see Collator
+ * @see RuleBasedCollator
+ * @see StringSearch
+ * @author Syn Wee Quek
+ * @since release 2.2, April 18 2002
+ * @draft 2.2 
+ */
+public final class CollationElementIterator 
+{
+    // public data members --------------------------------------------------
+        
+    /**
+     * <p>This constant is returned by the iterator in the methods
+     * next() and previous() when the end or the beginning of the
+     * source string has been reached, and there are no more valid
+     * collation elements to return.</p>
+     *
+     * <p>See class documentation for an example of use.</p>
+     * @draft 2.2
+     * @see #next
+     * @see #previous */
+    public final static int NULLORDER = 0xffffffff;
+
+    /**
+     * <p>This constant is returned by the iterator in the methods
+     * next() and previous() when a collation element result is to be
+     * ignored.</p>
+     *
+     * <p>See class documentation for an example of use.</p>
+     * @draft 2.2
+     * @see #next
+     * @see #previous */
+    public static final int IGNORABLE = 0;
+
+    // public methods -------------------------------------------------------
+        
+    // public getters -------------------------------------------------------
+        
+    /**
+     * <p>Returns the character offset in the source string
+     * corresponding to the next collation element. I.e., getOffset()
+     * returns the position in the source string corresponding to the
+     * collation element that will be returned by the next call to
+     * next(). This value could be any of:
+     * <ul>
+     * <li> The index of the <b>first</b> character corresponding to
+     * the next collation element. (This means that if
+     * <code>setOffset(offset)</code> sets the index in the middle of
+     * a contraction, <code>getOffset()</code> returns the index of
+     * the first character in the contraction, which may not be equal
+     * to the original offset that was set. Hence calling getOffset()
+     * immediately after setOffset(offset) does not guarantee that the
+     * original offset set will be returned.)
+     * <li> If normalization is on, the index of the <b>immediate</b>
+     * subsequent character, or composite character with the first
+     * character, having a combining class of 0.
+     * <li> The length of the source string, if iteration has reached
+     * the end.
+     *</ul>
+     * </p>
+     * @return The character offset in the source string corresponding to the 
+     *         collation element that will be returned by the next call to 
+     *         next().
+     * @draft 2.2 */
+    public int getOffset()
+    {
+        if (m_bufferOffset_ != -1) {
+            if (m_isForwards_) {
+                return m_FCDLimit_;
+            }
+            return m_FCDStart_;
+        }
+        return m_source_.getIndex();
+    }
+
+
+    /**
+     * <p> Returns the maximum length of any expansion sequence that ends with 
+     * the specified collation element. If there is no expansion with this
+     * collation element as the last element, returns 1.
+     * </p>
+     * @param ce a collation element returned by previous() or next().
+     * @return the maximum length of any expansion sequence ending
+     *         with the specified collation element.
+     * @draft 2.2
+     */
+    public int getMaxExpansion(int ce)
+    {
+        int start = 0;                                  
+        int limit = m_collator_.m_expansionEndCE_.length;
+        long unsignedce = ce & 0xFFFFFFFFl;
+        while (start < limit - 1) {
+            int mid = start + ((limit - start) >> 1);              
+            long midce = m_collator_.m_expansionEndCE_[mid] & 0xFFFFFFFFl;
+            if (unsignedce <= midce) {              
+                limit = mid;                                              
+            }                                                             
+            else {                                                        
+                start = mid;                                              
+            }                                                             
+        }          
+        int result = 1;                                                       
+        if (m_collator_.m_expansionEndCE_[start] == ce) {
+            result = m_collator_.m_expansionEndCEMaxSize_[start];
+        }                                                                
+        else if (limit < m_collator_.m_expansionEndCE_.length &&
+                 m_collator_.m_expansionEndCE_[limit] == ce) {           
+            result = m_collator_.m_expansionEndCEMaxSize_[limit]; 
+        }                                  
+        else if ((ce & 0xFFFF) == 0x00C0) {
+            result = 2;                                                    
+        }                                                                
+        return result;    
+    }
+
+    // public other methods -------------------------------------------------
+        
+    /**
+     * <p> Resets the cursor to the beginning of the string. The next
+     * call to next() or previous() will return the first and last
+     * collation element in the string, respectively.</p>
+     *
+     * <p>If the RuleBasedCollator used by this iterator has had its
+     * attributes changed, calling reset() will reinitialize the
+     * iterator to use the new attributes.</p>
+     *
+     * @draft 2.2 
+     */
+    public void reset()
+    {
+        m_source_.setIndex(m_source_.getBeginIndex());
+        updateInternalState();
+    }
+
+    /**
+     * <p>Get the next collation element in the source string.</p>  
+     *
+     * <p>This iterator iterates over a sequence of collation elements
+     * that were built from the string. Because there isn't
+     * necessarily a one-to-one mapping from characters to collation
+     * elements, this doesn't mean the same thing as "return the
+     * collation element [or ordering priority] of the next character
+     * in the string".</p>
+     *
+     * <p>This function returns the collation element that the
+     * iterator is currently pointing to, and then updates the
+     * internal pointer to point to the next element.  Previous()
+     * updates the pointer first, and then returns the element. This
+     * means that when you change direction while iterating (i.e.,
+     * call next() and then call previous(), or call previous() and
+     * then call next()), you'll get back the same element twice.</p>
+     *
+     * @return the next collation element or NULLORDER if the end of the 
+     *         iteration has been reached.
+     * @draft 2.2 
+     */
+    public int next()
+    {
+        m_isForwards_ = true;
+        if (m_CEBufferSize_ > 0) { 
+            if (m_CEBufferOffset_ < m_CEBufferSize_) { 
+                // if there are expansions left in the buffer, we return it
+                return m_CEBuffer_[m_CEBufferOffset_ ++];
+            }
+            m_CEBufferSize_ = 0;
+            m_CEBufferOffset_ = 0;
+        }
+        
+        char ch = nextChar();    
+        /* System.out.println("ch " + Integer.toHexString(ch) + " " + 
+           Integer.toHexString(m_source_.current()));*/
+        if (ch == CharacterIterator.DONE) {
+            return NULLORDER;
+        }
+        if (m_collator_.m_isHiragana4_) {
+            m_isCodePointHiragana_ = (ch >= 0x3040 && ch <= 0x309e) 
+                                     && !(ch > 0x3094 && ch < 0x309d);
+        }
+            
+        int result = NULLORDER;
+        if (ch <= 0xFF) {
+            // For latin-1 characters we never need to fall back to the UCA 
+            // table because all of the UCA data is replicated in the 
+            // latinOneMapping array
+            result = m_collator_.m_trie_.getLatin1LinearValue(ch);
+            if (RuleBasedCollator.isSpecial(result)) {
+                result = nextSpecial(m_collator_, result, ch);
+            }
+        }
+        else {
+            result = m_collator_.m_trie_.getLeadValue(ch);
+            //System.out.println(Integer.toHexString(result));
+            if (RuleBasedCollator.isSpecial(result)) {               
+                // surrogate leads are handled as special ces
+                result = nextSpecial(m_collator_, result, ch);
+            }
+            if (result == CE_NOT_FOUND_) {   
+                // couldn't find a good CE in the tailoring
+                // if we got here, the codepoint MUST be over 0xFF - so we look 
+                // directly in the UCA
+                result = m_collator_.UCA_.m_trie_.getLeadValue(ch);
+                if (RuleBasedCollator.isSpecial(result)) { 
+                    // UCA also gives us a special CE
+                    result = nextSpecial(m_collator_.UCA_, result, ch);
+                }
+            }
+        }
+        return result; 
+    }
+
+    /**
+     * <p>Get the previous collation element in the source string.</p>
+     *
+     * <p>This iterator iterates over a sequence of collation elements
+     * that were built from the string. Because there isn't
+     * necessarily a one-to-one mapping from characters to collation
+     * elements, this doesn't mean the same thing as "return the
+     * collation element [or ordering priority] of the previous
+     * character in the string".</p>
+     *
+     * <p>This function updates the iterator's internal pointer to
+     * point to the collation element preceding the one it's currently
+     * pointing to and then returns that element, while next() returns
+     * the current element and then updates the pointer. This means
+     * that when you change direction while iterating (i.e., call
+     * next() and then call previous(), or call previous() and then
+     * call next()), you'll get back the same element twice.</p>
+     *
+     * @return the previous collation element, or NULLORDER when the start of 
+     *             the iteration has been reached.
+     * @draft 2.2 */
+    public int previous()
+    {
+        if (m_source_.getIndex() <= 0 && m_isForwards_) {
+            // if iterator is new or reset, we can immediate perform  backwards
+            // iteration even when the offset is not right.
+            m_source_.setIndex(m_source_.getEndIndex());
+            updateInternalState();
+        }
+        m_isForwards_ = false;
+        int result = NULLORDER;
+        if (m_CEBufferSize_ > 0) {
+            if (m_CEBufferOffset_ > 0) {
+                return m_CEBuffer_[-- m_CEBufferOffset_];
+            }
+            m_CEBufferSize_ = 0; 
+            m_CEBufferOffset_ = 0;
+        }
+        char ch = previousChar();    
+        if (ch == CharacterIterator.DONE) {
+            return NULLORDER;
+        } 
+        if (m_collator_.m_isHiragana4_) {
+            m_isCodePointHiragana_ = (ch >= 0x3040 && ch <= 0x309f);
+        }
+        if (m_collator_.isContractionEnd(ch) && !isBackwardsStart()) {
+            result = previousSpecial(m_collator_, CE_CONTRACTION_, ch);
+        }
+        else {
+            if (ch <= 0xFF) {
+                result = m_collator_.m_trie_.getLatin1LinearValue(ch);
+                if (RuleBasedCollator.isSpecial(result)) {
+                    result = previousSpecial(m_collator_, result, ch);
+                }
+            }
+            else {
+                if (m_bufferOffset_ < 0 && m_source_.getIndex() != 0) {
+                    // we now rearrange unconditionally
+                    if (isThaiPreVowel(m_source_.previous())) {
+                        result = CE_THAI_;
+                    }
+                    else {
+                        result = m_collator_.m_trie_.getLeadValue(ch);
+                    }
+                    m_source_.next();           
+                }
+                else {
+                    result = m_collator_.m_trie_.getLeadValue(ch);
+                }
+                if (RuleBasedCollator.isSpecial(result)) {
+                    result = previousSpecial(m_collator_, result, ch);
+                }
+                if (result == CE_NOT_FOUND_) {
+                    if (!isBackwardsStart() 
+                        && m_collator_.isContractionEnd(ch)) {
+                        result = CE_CONTRACTION_;
+                    }
+                    else {
+                        result 
+                             = RuleBasedCollator.UCA_.m_trie_.getLeadValue(ch);
+                    }
+        
+                    if (RuleBasedCollator.isSpecial(result)) {
+                        result = previousSpecial(RuleBasedCollator.UCA_, 
+                                                 result, ch);
+                    }
+                }
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Return the primary order of the specified collation element, 
+     * i.e. the first 16 bits.  This value is unsigned.
+     * @param ce the collation element
+     * @return the element's 16 bits primary order.
+     * @draft 2.2
+     */
+    public final static int primaryOrder(int ce)
+    {
+        return (ce & RuleBasedCollator.CE_PRIMARY_MASK_) 
+            >>> RuleBasedCollator.CE_PRIMARY_SHIFT_;
+    }
+    /**
+     * Return the secondary order of the specified collation element,
+     * i.e. the 16th to 23th bits, inclusive.  This value is unsigned.
+     * @param ce the collation element
+     * @return the element's 8 bits secondary order
+     * @draft 2.2
+     */
+    public final static int secondaryOrder(int ce)
+    {
+        return (ce & RuleBasedCollator.CE_SECONDARY_MASK_) 
+            >> RuleBasedCollator.CE_SECONDARY_SHIFT_;
+    }
+    
+    /**
+     * Return the tertiary order of the specified collation element, i.e. the last
+     * 8 bits.  This value is unsigned.
+     * @param ce the collation element
+     * @return the element's 8 bits tertiary order
+     * @draft 2.2
+     */
+    public final static int tertiaryOrder(int ce)
+    {
+        return ce & RuleBasedCollator.CE_TERTIARY_MASK_;
+    }
+
+    /**
+     * <p> Sets the iterator to point to the collation element
+     * corresponding to the character at the specified offset. The
+     * value returned by the next call to next() will be the collation
+     * element corresponding to the characters at offset.</p>
+     *
+     * <p>If offset is in the middle of a contracting character
+     * sequence, the iterator is adjusted to the start of the
+     * contracting sequence. This means that getOffset() is not
+     * guaranteed to return the same value set by this method.</p>
+     *
+     * <p>If the decomposition mode is on, and offset is in the middle
+     * of a decomposible range of source text, the iterator may not
+     * return a correct result for the next forwards or backwards
+     * iteration.  The user must ensure that the offset is not in the
+     * middle of a decomposible range.</p>
+     *
+     * @param offset the character offset into the original source string to 
+     *        set. Note that this is not an offset into the corresponding 
+     *        sequence of collation elements.
+     * @draft 2.2 */
+    public void setOffset(int offset)
+    {  
+        m_source_.setIndex(offset);
+        char ch = m_source_.current();
+        if (m_collator_.isUnsafe(ch)) {
+            // if it is unsafe we need to check if it is part of a contraction
+            // or a surrogate character
+            if (UTF16.isTrailSurrogate(ch)) {
+                // if it is a surrogate pair we move up one character
+                char prevch = m_source_.previous();
+                if (!UTF16.isLeadSurrogate(prevch)) {
+                    m_source_.setIndex(offset); // go back to the same index
+                }
+            }
+            else {
+                // could be part of a contraction
+                // backup to a safe point and iterate till we pass offset
+                while (m_source_.getIndex() > 0) {
+                    if (!m_collator_.isUnsafe(ch)) {
+                        break;
+                    }
+                    ch = m_source_.previous();
+                }
+                updateInternalState();
+                int prevoffset = 0;
+                while (m_source_.getIndex() <= offset) {
+                    prevoffset = m_source_.getIndex();
+                    next();
+                }       
+                m_source_.setIndex(prevoffset);
+            }
+        }
+        updateInternalState();
+    }
+
+    /**
+     * <p>Set a new source string for iteration, and reset the offset
+     * to the beginning of the text.</p>
+     *
+     * @param source the new source string for iteration.
+     * @draft 2.2 */
+    public void setText(String source)
+    {
+        m_srcUtilIter_.setText(source);   
+        m_source_ = m_srcUtilIter_;
+        updateInternalState();
+    }
+
+    /**
+     * <p>Set a new source string iterator for iteration, and reset the 
+     * offset to the beginning of the text.
+     * </p>
+     * @param source the new source string iterator for iteration.
+     * @draft 2.2
+     */
+    public void setText(CharacterIterator source)
+    {   
+        m_source_ = source;     
+        m_source_.setIndex(m_source_.getBeginIndex());
+        updateInternalState();
+    }
+    
+    // public miscellaneous methods -----------------------------------------
+    
+    /**
+     * Tests that argument object is equals to this CollationElementIterator.
+     * Iterators are equal if the objects uses the same RuleBasedCollator,
+     * the same source text and have the same current position in iteration.
+     * @param that object to test if it is equals to this 
+     *             CollationElementIterator
+     */
+    public boolean equals(Object that) 
+    {
+        if (that == this) {
+            return true;
+        }
+        if (that instanceof CollationElementIterator) {
+            CollationElementIterator thatceiter 
+                                              = (CollationElementIterator)that;
+            if (m_collator_.equals(thatceiter.m_collator_) 
+                && m_source_.equals(thatceiter.m_source_)) {
+                return true;
+            }
+        }
+        return false;
+    }
+    
+    // protected constructors -----------------------------------------------
+        
+    /**
+     * <p>CollationElementIterator constructor. This takes a source
+     * string and a RuleBasedCollator. The iterator will walk through
+     * the source string based on the rules defined by the
+     * collator. If the source string is empty, NULLORDER will be
+     * returned on the first call to next().</p>
+     *
+     * @param source the source string.
+     * @param collator the RuleBasedCollator
+     * @draft 2.2 */
+    CollationElementIterator(String source, RuleBasedCollator collator) 
+    {
+        m_srcUtilIter_ = new StringCharacterIterator(source);
+        m_utilStringBuffer_ = new StringBuffer();
+        m_source_ = m_srcUtilIter_;
+        m_collator_ = collator;
+        m_CEBuffer_ = new int[CE_BUFFER_INIT_SIZE_];
+        m_buffer_ = new StringBuffer();
+        m_utilSpecialBackUp_ = new Backup();
+        updateInternalState();
+    }
+
+    /**
+     * <p>CollationElementIterator constructor. This takes a source
+     * character iterator and a RuleBasedCollator. The iterator will
+     * walk through the source string based on the rules defined by
+     * the collator. If the source string is empty, NULLORDER will be
+     * returned on the first call to next().</p>
+     *
+     * @param source the source string iterator.
+     * @param collator the RuleBasedCollator
+     * @draft 2.2 */
+    CollationElementIterator(CharacterIterator source, 
+                             RuleBasedCollator collator) 
+    {
+        m_srcUtilIter_ = new StringCharacterIterator("");
+        m_utilStringBuffer_ = new StringBuffer();
+        m_source_ = source;
+        m_collator_ = collator;
+        m_CEBuffer_ = new int[CE_BUFFER_INIT_SIZE_];
+        m_buffer_ = new StringBuffer();
+        m_utilSpecialBackUp_ = new Backup();
+        updateInternalState();
+    }
+    
+    // package private data members -----------------------------------------
+        
+    /**
+     * true if current codepoint was Hiragana
+     */
+    boolean m_isCodePointHiragana_;
+    /**
+     * Position in the original string that starts with a non-FCD sequence
+     */
+    int m_FCDStart_;
+    /** 
+     * This is the CE from CEs buffer that should be returned. 
+     * Initial value is 0.
+     * Forwards iteration will end with m_CEBufferOffset_ == m_CEBufferSize_,
+     * backwards will end with m_CEBufferOffset_ == 0.
+     * The next/previous after we reach the end/beginning of the m_CEBuffer_
+     * will cause this value to be reset to 0.
+     */
+    int m_CEBufferOffset_;
+
+    /** 
+     * This is the position to which we have stored processed CEs.
+     * Initial value is 0.
+     * The next/previous after we reach the end/beginning of the m_CEBuffer_
+     * will cause this value to be reset to 0.
+     */
+    int m_CEBufferSize_; 
+    
+    // package private methods ----------------------------------------------
+    
+    /**
+     * Sets the collator used.
+     * Internal use, all data members will be reset to the default values
+     * @param collator to set
+     */
+    void setCollator(RuleBasedCollator collator) 
+    {
+        m_collator_ = collator;
+        updateInternalState();
+    }
+    
+    /**
+     * <p>Sets the iterator to point to the collation element corresponding to
+     * the specified character (the parameter is a CHARACTER offset in the
+     * original string, not an offset into its corresponding sequence of
+     * collation elements). The value returned by the next call to next()
+     * will be the collation element corresponding to the specified position
+     * in the text. Unlike the public method setOffset(int), this method does 
+     * not try to readjust the offset to the start of a contracting sequence.
+     * getOffset() is guaranteed to return the same value as was passed to a 
+     * preceding call to setOffset().</p>
+     * @param offset new character offset into the original text to set. 
+     * @draft 2.2
+     */
+    void setExactOffset(int offset)
+    {  
+        m_source_.setIndex(offset);
+        updateInternalState();
+    }
+    
+    /**
+     * Checks if iterator is in the buffer zone
+     * @return true if iterator is in buffer zone, false otherwise
+     */
+    boolean isInBuffer()
+    {
+        return m_bufferOffset_ > 0;
+    }
+    
+    /**
+     * Determine if a character is a Thai vowel, which sorts after its base 
+     * consonant.
+     * @param ch character to test
+     * @return true if ch is a Thai prevowel, false otherwise
+     */
+    static final boolean isThaiPreVowel(char ch)
+    { 
+        return (ch >= 0xe40 && ch <= 0xe44) || (ch >= 0xec0 && ch <= 0xec4);
+    }
+    
+    /**
+     * <p>Sets the iterator to point to the collation element corresponding to
+     * the specified character (the parameter is a CHARACTER offset in the
+     * original string, not an offset into its corresponding sequence of
+     * collation elements). The value returned by the next call to next()
+     * will be the collation element corresponding to the specified position
+     * in the text. Unlike the public method setOffset(int), this method does 
+     * not try to readjust the offset to the start of a contracting sequence.
+     * getOffset() is guaranteed to return the same value as was passed to a 
+     * preceding call to setOffset().</p>
+     * </p>
+     * @param source the new source string iterator for iteration.
+     * @param offset to the source
+     * @draft 2.2
+     */
+    void setText(CharacterIterator source, int offset)
+    {
+        m_source_ = source;     
+        m_source_.setIndex(offset);
+        updateInternalState();
+    }
+    
+    // private inner class --------------------------------------------------
+    
+    /**
+     * Backup data class
+     */
+    private static final class Backup
+    {
+        // protected data members -------------------------------------------
+        
+        /**
+         * Backup non FCD sequence limit
+         */
+        protected int m_FCDLimit_;
+        /**
+         * Backup non FCD sequence start
+         */
+        protected int m_FCDStart_;
+        /**
+         * Backup if previous Codepoint is Hiragana quatenary
+         */
+        protected boolean m_isCodePointHiragana_;
+        /**
+         * Backup buffer position 
+         */
+        protected int m_bufferOffset_;
+        /**
+         * Backup source iterator offset
+         */
+        protected int m_offset_;
+        /**
+         * Backup buffer contents
+         */
+        protected StringBuffer m_buffer_;
+                
+        // protected constructor --------------------------------------------
+                
+        /**
+         * Empty constructor
+         */
+        protected Backup()
+        {
+            m_buffer_ = new StringBuffer();
+        }
+    }
+    // end inner class ------------------------------------------------------
+    
+    /**
+     * Direction of travel
+     */
+    private boolean m_isForwards_;
+    /**
+     * Source string iterator
+     */
+    private CharacterIterator m_source_;
+    /** 
+     * This is position to the m_buffer_, -1 if iterator is not in m_buffer_
+     */
+    private int m_bufferOffset_;
+    /**
+     * Buffer for temporary storage of normalized characters, discontiguous
+     * characters and Thai characters
+     */
+    private StringBuffer m_buffer_;
+    /** 
+     * Position in the original string to continue forward FCD check from. 
+     */
+    private int m_FCDLimit_; 
+    /**
+     * The collator this iterator is based on
+     */ 
+    private RuleBasedCollator m_collator_;
+    /**
+     * true if Hiragana quatenary is on
+     */
+    private boolean m_isHiragana4_;
+    /**
+     * CE buffer
+     */ 
+    private int m_CEBuffer_[]; 
+    /** 
+     * In reality we should not have to deal with expansion sequences longer 
+     * then 16. However this value can be change if a bigger buffer is needed.
+     * Note, if the size is change to too small a number, BIG trouble.
+     * Reasonable small value is around 10, if there's no Arabic or other 
+     * funky collations that have long expansion sequence. This is the longest 
+     * expansion sequence this can handle without bombing out.
+     */
+    private static final int CE_BUFFER_INIT_SIZE_ = 512;
+    /**
+     * Backup storage for special processing inner cases
+     */
+    private Backup m_utilSpecialBackUp_;
+    /**
+     * Backup storage in special processing entry state
+     */
+    private Backup m_utilSpecialEntryBackUp_;
+    /**
+     * Backup storage in special processing discontiguous state
+     */
+    private Backup m_utilSpecialDiscontiguousBackUp_;
+    /**
+     * Utility 
+     */
+    private StringCharacterIterator m_srcUtilIter_;
+    private StringBuffer m_utilStringBuffer_;
+    private StringBuffer m_utilSkippedBuffer_;
+    private CollationElementIterator m_utilColEIter_;
+    /**
+     * One character before the first non-zero combining class character
+     */
+    private static final int FULL_ZERO_COMBINING_CLASS_FAST_LIMIT_ = 0xC0;
+    /**
+     * One character before the first character with leading non-zero combining 
+     * class 
+     */
+    private static final int LEAD_ZERO_COMBINING_CLASS_FAST_LIMIT_ = 0x300;
+    /**
+     * Mask for the last byte
+     */
+    private static final int LAST_BYTE_MASK_ = 0xFF;
+    /**
+     * Shift value for the second last byte
+     */
+    private static final int SECOND_LAST_BYTE_SHIFT_ = 8;
+
+    // special ce values and tags -------------------------------------------
+    private static final int CE_NOT_FOUND_ = 0xF0000000;
+    private static final int CE_EXPANSION_ = 0xF1000000;
+    private static final int CE_CONTRACTION_ = 0xF2000000;
+    private static final int CE_THAI_ = 0xF3000000;
+    /**
+     * Indicates the last ce has been consumed. Compare with NULLORDER. 
+     * NULLORDER is returned if error occurs.
+     */
+    private static final int CE_NO_MORE_CES_ = 0x00010101;
+    private static final int CE_NO_MORE_CES_PRIMARY_ = 0x00010000;
+    private static final int CE_NO_MORE_CES_SECONDARY_ = 0x00000100;
+    private static final int CE_NO_MORE_CES_TERTIARY_ = 0x00000001;
+
+    private static final int CE_NOT_FOUND_TAG_ = 0;
+    private static final int CE_EXPANSION_TAG_ = 1;       
+    private static final int CE_CONTRACTION_TAG_ = 2;     
+    private static final int CE_THAI_TAG_ = 3;
+    /** 
+     * Charset processing, not yet implemented 
+     */
+    private static final int CE_CHARSET_TAG_ = 4;         
+    /** 
+     * AC00-D7AF
+     */
+    private static final int CE_HANGUL_SYLLABLE_TAG_ = 6;
+    /**
+     * D800-DBFF
+     */
+    private static final int CE_LEAD_SURROGATE_TAG_ = 7;  
+    /** 
+     * DC00-DFFF
+     */
+    private static final int CE_TRAIL_SURROGATE_TAG_ = 8; 
+    /** 
+     * 0x3400-0x4DB5, 0x4E00-0x9FA5, 0xF900-0xFA2D
+     */    
+    private static final int CE_CJK_IMPLICIT_TAG_ = 9;    
+    private static final int CE_IMPLICIT_TAG_ = 10;
+    private static final int CE_SPEC_PROC_TAG_ = 11;
+    /** 
+     * This is a 3 byte primary with starting secondaries and tertiaries.
+     * It fits in a single 32 bit CE and is used instead of expansion to save
+     * space without affecting the performance (hopefully).
+     */
+    private static final int CE_LONG_PRIMARY_TAG_ = 12; 
+    private static final int CE_CE_TAGS_COUNT = 13;
+    private static final int CE_BYTE_COMMON_ = 0x05;
+        
+    // end special ce values and tags ---------------------------------------
+        
+    private static final int HANGUL_SBASE_ = 0xAC00;
+    private static final int HANGUL_LBASE_ = 0x1100; 
+    private static final int HANGUL_VBASE_ = 0x1161;
+    private static final int HANGUL_TBASE_ = 0x11A7;
+    private static final int HANGUL_VCOUNT_ = 21; 
+    private static final int HANGUL_TCOUNT_ = 28;    
+    
+    // CJK stuff ------------------------------------------------------------
+    
+    private static final int CJK_BASE_ = 0x4E00;
+    private static final int CJK_LIMIT_ = 0x9FFF+1;
+    private static final int CJK_COMPAT_USED_BASE_ = 0xFA0E;
+    private static final int CJK_COMPAT_USED_LIMIT_ = 0xFA2F + 1;
+    private static final int CJK_A_BASE_ = 0x3400;
+    private static final int CJK_A_LIMIT_ = 0x4DBF + 1;
+    private static final int CJK_B_BASE_ = 0x20000;
+    private static final int CJK_B_LIMIT_ = 0x2A6DF + 1;
+    private static final int NON_CJK_OFFSET_ = 0x110000;
+                                                        
+    // private methods ------------------------------------------------------
+        
+    /**
+     * Reset the iterator internally
+     */
+    private void updateInternalState()
+    {
+        m_isCodePointHiragana_ = false;
+        m_buffer_.setLength(0);
+        m_bufferOffset_ = -1; 
+        m_CEBufferOffset_ = 0;
+        m_CEBufferSize_ = 0; 
+        m_FCDLimit_ = -1;
+        m_FCDStart_ = m_source_.getEndIndex();
+        m_isHiragana4_ = m_collator_.m_isHiragana4_;
+        m_isForwards_ = true;
+    }
+        
+    /**
+     * Backup the current internal state
+     * @param backup object to store the data
+     */
+    private void backupInternalState(Backup backup)
+    {
+        backup.m_offset_ = m_source_.getIndex();
+        backup.m_FCDLimit_ = m_FCDLimit_;
+        backup.m_FCDStart_ = m_FCDStart_;
+        backup.m_isCodePointHiragana_ = m_isCodePointHiragana_;
+        backup.m_bufferOffset_ = m_bufferOffset_;
+        backup.m_buffer_.setLength(0);
+        if (m_bufferOffset_ >= 0) {
+            // jdk 1.3.1 does not have append(StringBuffer) yet
+            if(ICUDebug.isJDK14OrHigher){
+                backup.m_buffer_.append(m_buffer_);
+            }else{
+                backup.m_buffer_.append(m_buffer_.toString());
+            }
+        }
+    }
+                
+    /**
+     * Update the iterator internally with backed-up state
+     * @param backup object that stored the data
+     */
+    private void updateInternalState(Backup backup)
+    {
+        m_source_.setIndex(backup.m_offset_);
+        m_isCodePointHiragana_ = backup.m_isCodePointHiragana_;
+        m_bufferOffset_ = backup.m_bufferOffset_;
+        m_FCDLimit_ = backup.m_FCDLimit_;
+        m_FCDStart_ = backup.m_FCDStart_;
+        m_buffer_.setLength(0);
+        if (m_bufferOffset_ >= 0) {
+            // jdk 1.3.1 does not have append(StringBuffer) yet
+            m_buffer_.append(backup.m_buffer_.toString());
+        }
+    }
+        
+    /**
+     * A fast combining class retrieval system.
+     * @param ch UTF16 character
+     * @return combining class of ch
+     */
+    private int getCombiningClass(char ch) 
+    {
+        if (ch >= LEAD_ZERO_COMBINING_CLASS_FAST_LIMIT_ && 
+            m_collator_.isUnsafe(ch)) {
+            return NormalizerImpl.getCombiningClass(ch);
+        }
+        return 0;
+    }
+        
+    /**
+     * <p>Incremental normalization, this is an essential optimization.
+     * Assuming FCD checks has been done, normalize the non-FCD characters into 
+     * the buffer.
+     * Source offsets points to the current processing character.
+     * </p>
+     */
+    private void normalize() 
+    {
+        int size = m_FCDLimit_ - m_FCDStart_;
+        m_buffer_.setLength(0);
+        m_source_.setIndex(m_FCDStart_);
+        for (int i = 0; i < size; i ++) {
+            m_buffer_.append(m_source_.current());
+            m_source_.next();
+        }
+        String decomp = Normalizer.decompose(m_buffer_.toString(), false);
+        m_buffer_.setLength(0);
+        m_buffer_.append(decomp);
+        m_bufferOffset_ = 0;
+    }
+        
+    /** 
+     * <p>Incremental FCD check and normalization. Gets the next base character
+     * position and determines if the in-between characters needs normalization.
+     * </p> 
+     * <p>When entering, the state is known to be this:
+     * <ul>
+     * <li>We are working on source string, not the buffer.
+     * <li>The leading combining class from the current character is 0 or the 
+     *     trailing combining class of the previous char was zero.
+     * </ul>
+     * Incoming source offsets points to the current processing character.
+     * Return source offsets points to the current processing character.
+     * </p>
+     * @param ch current character
+     * @param offset current character offset
+     * @return true if FCDCheck passes, false otherwise
+     */
+    private boolean FCDCheck(char ch, int offset) 
+    {
+        boolean result = true;
+
+        // Get the trailing combining class of the current character.  
+        // If it's zero, we are OK.
+        m_FCDStart_ = offset;
+        m_source_.setIndex(offset);
+        // trie access
+        char fcd = NormalizerImpl.getFCD16(ch);
+        if (fcd != 0 && UTF16.isLeadSurrogate(ch)) {
+            ch = m_source_.next(); // CharacterIterator.DONE has 0 fcd
+            if (UTF16.isTrailSurrogate(ch)) {
+                fcd = NormalizerImpl.getFCD16FromSurrogatePair(fcd, ch);
+            } else {
+                fcd = 0;
+            }
+        }
+
+        int prevTrailCC = fcd & LAST_BYTE_MASK_;
+
+        if (prevTrailCC != 0) {
+            // The current char has a non-zero trailing CC. Scan forward until 
+            // we find a char with a leading cc of zero.
+            while (true) {
+                ch = m_source_.next();
+                if (ch == CharacterIterator.DONE) {
+                    break;
+                }
+                // trie access
+                fcd = NormalizerImpl.getFCD16(ch);
+                if (fcd != 0 && UTF16.isLeadSurrogate(ch)) {
+                    ch = m_source_.next();
+                    if (UTF16.isTrailSurrogate(ch)) {
+                        fcd = NormalizerImpl.getFCD16FromSurrogatePair(fcd, ch);
+                    } else {
+                        fcd = 0;
+                    }
+                }
+                int leadCC = fcd >>> SECOND_LAST_BYTE_SHIFT_;
+                if (leadCC == 0) {
+                    // this is a base character, we stop the FCD checks
+                    break;
+                }
+
+                if (leadCC < prevTrailCC) {
+                    result = false;
+                }
+
+                prevTrailCC = fcd & LAST_BYTE_MASK_;
+            }
+        }
+        m_FCDLimit_ = m_source_.getIndex();
+        m_source_.setIndex(m_FCDStart_);
+        m_source_.next();
+        return result;
+    }
+        
+    /** 
+     * <p>Method tries to fetch the next character that is in fcd form.</p>
+     * <p>Normalization is done if required.</p>
+     * <p>Offsets are returned at the next character.</p>
+     * @return next fcd character
+     */
+    private char nextChar()
+    {
+        char result;
+        
+        // loop handles the next character whether it is in the buffer or not.
+        if (m_bufferOffset_ < 0) {
+            // we're working on the source and not normalizing. fast path.
+            // note Thai pre-vowel reordering uses buffer too
+            result = m_source_.current();
+        }
+        else {
+            // we are in the buffer, buffer offset will never be 0 here
+            if (m_bufferOffset_ >= m_buffer_.length()) {
+                // Null marked end of buffer, revert to the source string and
+                // loop back to top to try again to get a character.
+                m_source_.setIndex(m_FCDLimit_);
+                m_bufferOffset_ = -1;
+                m_buffer_.setLength(0);
+                return nextChar();
+            }
+            return m_buffer_.charAt(m_bufferOffset_ ++);
+        }
+        int startoffset = m_source_.getIndex();
+        if (result < FULL_ZERO_COMBINING_CLASS_FAST_LIMIT_  
+            // Fast fcd safe path. trail combining class == 0.
+            || m_collator_.getDecomposition() == Collator.NO_DECOMPOSITION 
+            || m_bufferOffset_ >= 0 || m_FCDLimit_ > startoffset) {
+            // skip the fcd checks            
+            m_source_.next();
+            return result;
+        }
+                
+        if (result < LEAD_ZERO_COMBINING_CLASS_FAST_LIMIT_) {
+            // We need to peek at the next character in order to tell if we are 
+            // FCD
+            char next = m_source_.next();
+            if (next == CharacterIterator.DONE 
+                || next <= LEAD_ZERO_COMBINING_CLASS_FAST_LIMIT_) {
+                return result; // end of source string and if next character 
+                // starts with a base character is always fcd.
+            }
+        }
+        
+        // Need a more complete FCD check and possible normalization.
+        if (!FCDCheck(result, startoffset)) {
+            normalize();
+            result = m_buffer_.charAt(0);
+            m_bufferOffset_ = 1;          
+        }       
+        return result;
+    }
+        
+    /**
+     * <p>Incremental normalization, this is an essential optimization.
+     * Assuming FCD checks has been done, normalize the non-FCD characters into 
+     * the buffer.
+     * Source offsets points to the current processing character.</p>
+     */
+    private void normalizeBackwards()
+    {
+        normalize();
+        m_bufferOffset_ = m_buffer_.length();
+    }
+
+    /**
+     * <p>Incremental backwards FCD check and normalization. Gets the previous 
+     * base character position and determines if the in-between characters 
+     * needs normalization.
+     * </p> 
+     * <p>When entering, the state is known to be this:
+     * <ul>
+     * <li>We are working on source string, not the buffer.
+     * <li>The trailing combining class from the current character is 0 or the 
+     *     leading combining class of the next char was zero.
+     * </ul>
+     * Input source offsets points to the previous character.
+     * Return source offsets points to the current processing character.
+     * </p>
+     * @param ch current character
+     * @param offset current character offset
+     * @return true if FCDCheck passes, false otherwise
+     */
+    private boolean FCDCheckBackwards(char ch, int offset)
+    {
+        boolean result = true;    
+        char fcd = 0; 
+        m_FCDLimit_ = offset + 1;
+        m_source_.setIndex(offset);
+        if (!UTF16.isSurrogate(ch)) {
+            fcd = NormalizerImpl.getFCD16(ch);
+        } 
+        else if (UTF16.isTrailSurrogate(ch) && m_FCDLimit_ > 0) { 
+            // note trail surrogate characters gets 0 fcd
+            char trailch = ch;
+            ch = m_source_.previous();  
+            if (UTF16.isLeadSurrogate(ch)) {
+                fcd = NormalizerImpl.getFCD16(ch);
+                if (fcd != 0) {
+                    fcd = NormalizerImpl.getFCD16FromSurrogatePair(fcd, 
+                                                                   trailch);
+                }
+            } 
+            else {
+                fcd = 0; // unpaired surrogate 
+            }
+        }
+        
+        int leadCC = fcd >>> SECOND_LAST_BYTE_SHIFT_;
+        // The current char has a non-zero leading combining class.
+        // Scan backward until we find a char with a trailing cc of zero.
+        
+        while (leadCC != 0) {
+            offset = m_source_.getIndex();
+            if (offset == 0) {
+                break;
+            }
+            ch = m_source_.previous();
+            if (!UTF16.isSurrogate(ch)) {
+                fcd = NormalizerImpl.getFCD16(ch);
+            } 
+            else if (UTF16.isTrailSurrogate(ch) && m_source_.getIndex() > 0) {
+                char trail = ch;
+                ch = m_source_.previous();
+                if (UTF16.isLeadSurrogate(ch)) {
+                    fcd = NormalizerImpl.getFCD16(ch);
+                }
+                if (fcd != 0) {
+                    fcd = NormalizerImpl.getFCD16FromSurrogatePair(fcd, trail);
+                }
+            }
+            else {
+                fcd = 0; // unpaired surrogate
+            }
+            int prevTrailCC = fcd & LAST_BYTE_MASK_;
+            if (leadCC < prevTrailCC) {
+                result = false;
+            }
+            leadCC = fcd >>> SECOND_LAST_BYTE_SHIFT_;
+        }
+        
+        // storing character with 0 lead fcd or the 1st accent with a base 
+        // character before it   
+        if (fcd == 0) {
+            m_FCDStart_ = offset;
+        }
+        else {
+            m_FCDStart_ = m_source_.getIndex();
+        } 
+        m_source_.setIndex(m_FCDLimit_);
+        return result;
+    }
+        
+    /** 
+     * <p>Method tries to fetch the previous character that is in fcd form.</p>
+     * <p>Normalization is done if required.</p>
+     * <p>Offsets are returned at the current character.</p>
+     * @return previous fcd character
+     */
+    private char previousChar()
+    {
+        if (m_bufferOffset_ >= 0) {
+            m_bufferOffset_ --;
+            if (m_bufferOffset_ >= 0) {
+                return m_buffer_.charAt(m_bufferOffset_);
+            }
+            else {
+                // At the start of buffer, route back to string.
+                m_buffer_.setLength(0);
+                if (m_FCDStart_ == m_source_.getBeginIndex()) {
+                    m_FCDStart_ = -1;
+                    m_source_.setIndex(m_source_.getBeginIndex());
+                    return CharacterIterator.DONE;
+                }
+                else {
+                    m_FCDLimit_ = m_FCDStart_;
+                    m_source_.setIndex(m_FCDStart_);
+                    return previousChar();
+                }
+            }
+        }    
+        char result = m_source_.previous();
+        int startoffset = m_source_.getIndex();
+        if (result < LEAD_ZERO_COMBINING_CLASS_FAST_LIMIT_ 
+            || m_collator_.getDecomposition() == Collator.NO_DECOMPOSITION 
+            || m_FCDStart_ <= startoffset || m_source_.getIndex() == 0) {
+            return result;
+        }
+        char ch = m_source_.previous();
+        if (ch < FULL_ZERO_COMBINING_CLASS_FAST_LIMIT_) {
+            // if previous character is FCD 
+            m_source_.next();
+            return result;
+        }
+        // Need a more complete FCD check and possible normalization.
+        if (!FCDCheckBackwards(result, startoffset)) {
+            normalizeBackwards();
+            m_bufferOffset_ --;
+            result = m_buffer_.charAt(m_bufferOffset_);
+        }
+        else {
+        	// fcd checks alway reset m_source_ to the limit of the FCD
+        	m_source_.setIndex(startoffset);
+        }
+        return result;
+    }
+        
+    /**
+     * Determines if it is at the start of source iteration
+     * @return true if iterator at the start, false otherwise
+     */
+    private final boolean isBackwardsStart() 
+    {
+        return (m_bufferOffset_ < 0 && m_source_.getIndex() == 0)
+            || (m_bufferOffset_ == 0 && m_FCDStart_ <= 0);
+    }
+        
+    /**
+     * Checks if iterator is at the end of its source string.
+     * @return true if it is at the end, false otherwise
+     */
+    private final boolean isEnd() 
+    {
+        if (m_bufferOffset_ >= 0) {
+            if (m_bufferOffset_ != m_buffer_.length()) {
+                return false;
+            }
+            else {
+                // at end of buffer. check if fcd is at the end
+                return m_FCDLimit_ == m_source_.getEndIndex();
+            }
+        }
+        return m_source_.getEndIndex() == m_source_.getIndex();
+    }
+        
+    /**
+     * <p>Special CE management for surrogates</p>
+     * <p>Lead surrogate is encountered. CE to be retrieved by using the 
+     * following code unit. If next character is a trail surrogate, both 
+     * characters will be combined to retrieve the CE, otherwise completely 
+     * ignorable (UCA specification) is returned.</p>
+     * @param collator collator to use
+     * @param ce current CE
+     * @param trail character
+     * @return next CE for the surrogate characters
+     */
+    private final int nextSurrogate(RuleBasedCollator collator, int ce, 
+                                    char trail)
+    {
+        if (!UTF16.isTrailSurrogate(trail)) {
+            updateInternalState(m_utilSpecialBackUp_);
+            return IGNORABLE;
+        } 
+        // TODO: CE contain the data from the previous CE + the mask. 
+        // It should at least be unmasked
+        int result = collator.m_trie_.getTrailValue(ce, trail);
+        if (result == CE_NOT_FOUND_) { 
+            updateInternalState(m_utilSpecialBackUp_);
+        }
+        return result;
+    }
+        
+    /**
+     * Gets the CE expansion offset
+     * @param collator current collator
+     * @param ce ce to test
+     * @return expansion offset
+     */
+    private int getExpansionOffset(RuleBasedCollator collator, int ce)
+    {
+        return ((ce & 0xFFFFF0) >> 4) - collator.m_expansionOffset_;
+    }
+        
+    /**
+     * Swaps the Thai and Laos characters and returns the CEs.
+     * @param collator collator to use
+     * @param ce current ce
+     * @param ch current character
+     * @return next CE for Thai characters
+     */
+    private int nextThai(RuleBasedCollator collator, int ce, char ch)
+    {
+        if (m_bufferOffset_ != -1 // already swapped
+            || isEnd()) {
+            // Treat Thai as a length one expansion
+            // find the offset to expansion table
+            // we now rearrange unconditionally so do not check base consonant
+            return collator.m_expansion_[getExpansionOffset(collator, ce)]; 
+        }
+        else {
+            // swap the prevowel and the following char into the 
+            // buffer with their order swapped
+            // buffer is always clean when we are in the source string
+            m_buffer_.append(nextChar());
+            m_buffer_.append(ch);
+            m_FCDLimit_ = m_source_.getIndex();
+            m_FCDStart_ = m_FCDLimit_ - 2; 
+            m_bufferOffset_ = 0;
+            return IGNORABLE;
+        }
+    }
+        
+    /**
+     * Gets the contraction ce offset
+     * @param collator current collator
+     * @param ce current ce
+     * @return contraction offset
+     */
+    private int getContractionOffset(RuleBasedCollator collator, int ce)
+    {
+        return (ce & 0xFFFFFF) - collator.m_contractionOffset_;
+    }
+        
+    /**
+     * Checks if CE is a special tag CE
+     * @param ce to check
+     * @return true if CE is a special tag CE, false otherwise
+     */
+    private boolean isSpecialPrefixTag(int ce)
+    {
+        return RuleBasedCollator.isSpecial(ce) && 
+            RuleBasedCollator.getTag(ce) == CE_SPEC_PROC_TAG_;
+    }
+        
+    /**
+     * <p>Special processing getting a CE that is preceded by a certain 
+     * prefix.</p>
+     * <p>Used for optimizing Japanese length and iteration marks. When a 
+     * special processing tag is encountered, iterate backwards to see if 
+     * there's a match.</p> 
+     * <p>Contraction tables are used, prefix data is stored backwards in the 
+     * table.</p>
+     * @param collator collator to use
+     * @param ce current ce
+     * @param entrybackup entry backup iterator status
+     * @return next collation element
+     */
+    private int nextSpecialPrefix(RuleBasedCollator collator, int ce,
+                                  Backup entrybackup)
+    {
+        backupInternalState(m_utilSpecialBackUp_);
+        updateInternalState(entrybackup);
+        previousChar();
+        // We want to look at the character where we entered
+        
+        while (true) {
+            // This loop will run once per source string character, for as 
+            // long as we are matching a potential contraction sequence                  
+            // First we position ourselves at the begining of contraction 
+            // sequence 
+            int entryoffset = getContractionOffset(collator, ce);
+            int offset = entryoffset;                                           
+            if (isBackwardsStart()) {
+                ce = collator.m_contractionCE_[offset];
+                break;
+            }
+            char previous = previousChar();
+            while (previous > collator.m_contractionIndex_[offset]) { 
+                // contraction characters are ordered, skip smaller characters
+                offset ++;
+            }
+        
+            if (previous == collator.m_contractionIndex_[offset]) {
+                // Found the source string char in the table.
+                // Pick up the corresponding CE from the table.
+                ce = collator.m_contractionCE_[offset];
+            }
+            else {
+                 // if there is a completely ignorable code point in the middle 
+                 // of a prefix, we need to act as if it's not there 
+                 // assumption: 'real' noncharacters (*fffe, *ffff, fdd0-fdef 
+                 // are set to zero) 
+                 // lone surrogates cannot be set to zero as it would break 
+                 // other processing 
+                 int isZeroCE = collator.m_trie_.getLeadValue(previous); 
+                 // it's easy for BMP code points 
+                 if (isZeroCE == 0) { 
+                     continue; 
+                 } 
+                 else if (UTF16.isSurrogate(previous)) { 
+                     // for supplementary code points, we have to check the 
+                     // next one situations where we are going to ignore 
+                     // 1. beginning of the string: schar is a lone surrogate 
+                     // 2. schar is a lone surrogate 
+                     // 3. schar is a trail surrogate in a valid surrogate 
+                     // sequence that is explicitly set to zero. 
+                     if (!isBackwardsStart()) { 
+                         char lead = previousChar(); 
+                         if (UTF16.isLeadSurrogate(lead)) { 
+                             isZeroCE = collator.m_trie_.getLeadValue(lead); 
+                             if (RuleBasedCollator.getTag(isZeroCE) 
+                                 == RuleBasedCollator.CE_SURROGATE_TAG_) { 
+                                 int finalCE = collator.m_trie_.getTrailValue(
+                                                           isZeroCE, previous); 
+                                 if (finalCE == 0) { 
+                                     // this is a real, assigned completely 
+                                     // ignorable code point
+                                     continue; 
+                                 } 
+                             } 
+                         } 
+                         else { 
+                             // lone surrogate, completely ignorable 
+                             nextChar();
+                             continue; 
+                         } 
+                         nextChar(); // shift back to original position
+                     } 
+                     else { 
+                         // lone surrogate at the beggining, completely ignorable 
+                         continue; 
+                     } 
+                 } 
+
+                // Source string char was not in the table, prefix not found
+                ce = collator.m_contractionCE_[entryoffset];
+            }
+        
+            if (!isSpecialPrefixTag(ce)) {
+                // The source string char was in the contraction table, and 
+                // the corresponding CE is not a prefix CE. We found the 
+                // prefix, break out of loop, this CE will end up being 
+                // returned. This is the normal way out of prefix handling 
+                // when the source actually contained the prefix.
+                break;
+            }
+        }
+        if (ce != CE_NOT_FOUND_) { 
+            // we found something and we can merilly continue
+            updateInternalState(m_utilSpecialBackUp_);
+        } 
+        else { // prefix search was a failure, we have to backup all the way to 
+            // the start
+            updateInternalState(entrybackup);
+        }
+        return ce;
+    }
+        
+    /**
+     * Checks if the ce is a contraction tag
+     * @param ce ce to check
+     * @return true if ce is a contraction tag, false otherwise
+     */
+    private boolean isContractionTag(int ce)
+    {
+        return RuleBasedCollator.isSpecial(ce) && 
+            RuleBasedCollator.getTag(ce) == CE_CONTRACTION_TAG_;
+    }
+        
+    /**
+     * Method to copy skipped characters into the buffer and sets the fcd 
+     * position. To ensure that the skipped characters are considered later, 
+     * we need to place it in the appropriate position in the buffer and 
+     * reassign the source index. simple case if index reside in string, 
+     * simply copy to buffer and fcdposition = pos, pos = start of buffer. 
+     * if pos in normalization buffer, we'll insert the copy infront of pos 
+     * and point pos to the start of the buffer. why am i doing these copies?
+     * well, so that the whole chunk of codes in the getNextCE, 
+     * ucol_prv_getSpecialCE does not require any changes, which will be 
+     * really painful.
+     * @param skipped character buffer
+     */
+    private void setDiscontiguous(StringBuffer skipped)
+    {
+        if (m_bufferOffset_ >= 0) {
+            m_buffer_.replace(0, m_bufferOffset_, skipped.toString());
+        }
+        else {
+            m_FCDLimit_ = m_source_.getIndex();
+            m_buffer_.setLength(0);
+            m_buffer_.append(skipped.toString());
+        }
+        
+        m_bufferOffset_ = 0;
+    }
+        
+    /**
+     * Returns the current character for forward iteration
+     * @return current character
+     */
+    private char currentChar()
+    {
+        if (m_bufferOffset_ < 0) {
+            char result = m_source_.previous();
+            m_source_.next();
+            return result;
+        }
+                
+        // m_bufferOffset_ is never 0 in normal circumstances except after a
+        // discontiguous contraction since it is always returned and moved
+        // by 1 when we do nextChar()
+        return m_buffer_.charAt(m_bufferOffset_ - 1);
+    }
+
+    /**
+     * Method to get the discontiguous collation element within the source.
+     * Note this function will set the position to the appropriate places.
+     * Passed in character offset points to the second combining character 
+     * after the start character.
+     * @param collator current collator used
+     * @param entryoffset index to the start character in the contraction table
+     * @return discontiguous collation element offset
+     */
+    private int nextDiscontiguous(RuleBasedCollator collator, int entryoffset)
+    {
+        int offset = entryoffset;
+        boolean multicontraction = false;
+        // since it will be stuffed into this iterator and ran over again
+        if (m_utilSkippedBuffer_ == null) {
+            m_utilSkippedBuffer_ = new StringBuffer(); 
+        }
+        else {
+            m_utilSkippedBuffer_.setLength(0);
+        }
+        char ch = currentChar();
+        m_utilSkippedBuffer_.append(currentChar()); 
+        // accent after the first character
+        if (m_utilSpecialDiscontiguousBackUp_ == null) {
+            m_utilSpecialDiscontiguousBackUp_ = new Backup();
+        }
+        backupInternalState(m_utilSpecialDiscontiguousBackUp_);
+        char nextch = ch;
+        while (true) {
+            ch = nextch;
+            nextch = nextChar(); 
+            if (nextch == CharacterIterator.DONE 
+                || getCombiningClass(nextch) == 0) {
+                // if there are no more accents to move around
+                // we don't have to shift previousChar, since we are resetting
+                // the offset later
+                if (multicontraction) {
+                    if (nextch != CharacterIterator.DONE) {
+                        previousChar(); // backtrack
+                    }
+                    setDiscontiguous(m_utilSkippedBuffer_);
+                    return collator.m_contractionCE_[offset];
+                }
+                break;
+            }
+    
+            offset ++; // skip the combining class offset
+            while (nextch > collator.m_contractionIndex_[offset]) {
+                offset ++;
+            }
+    
+            int ce = CE_NOT_FOUND_;
+            if (nextch != collator.m_contractionIndex_[offset]
+                    || getCombiningClass(nextch) == getCombiningClass(ch)) {
+                    // unmatched or blocked character
+                m_utilSkippedBuffer_.append(nextch);
+                continue;
+            }
+            else {
+                ce = collator.m_contractionCE_[offset];
+            }
+                    
+            if (ce == CE_NOT_FOUND_) {
+                break;
+            } 
+            else if (isContractionTag(ce)) {
+                // this is a multi-contraction
+                offset = getContractionOffset(collator, ce);
+                if (collator.m_contractionCE_[offset] != CE_NOT_FOUND_) {
+                    multicontraction = true;
+                    backupInternalState(m_utilSpecialDiscontiguousBackUp_);
+                }
+            } 
+            else {
+                setDiscontiguous(m_utilSkippedBuffer_);
+                return ce;
+            }
+        }
+        
+        updateInternalState(m_utilSpecialDiscontiguousBackUp_);
+        // backup is one forward of the base character, we need to move back 
+        // one more
+        previousChar();
+        return collator.m_contractionCE_[entryoffset];
+    }
+        
+    /**
+     * Gets the next contraction ce
+     * @param collator collator to use
+     * @param ce current ce
+     * @param entrybackup entry backup iterator status
+     * @return ce of the next contraction
+     */
+    private int nextContraction(RuleBasedCollator collator, int ce)
+    {
+        backupInternalState(m_utilSpecialBackUp_);
+        int entryce = CE_NOT_FOUND_;
+        while (true) {
+            int entryoffset = getContractionOffset(collator, ce);
+            int offset = entryoffset;   
+        
+            if (isEnd()) {
+                ce = collator.m_contractionCE_[offset];
+                if (ce == CE_NOT_FOUND_) {
+                    // back up the source over all the chars we scanned going 
+                    // into this contraction.
+                    ce = entryce;  
+                    updateInternalState(m_utilSpecialBackUp_);
+                }
+                break;
+            }
+        
+            // get the discontiguos maximum combining class
+            byte maxCC = (byte)(collator.m_contractionIndex_[offset] & 0xFF); 
+            // checks if all characters have the same combining class
+            byte allSame = (byte)(collator.m_contractionIndex_[offset] >> 8);
+            char ch = nextChar();
+            offset ++;
+            while (ch > collator.m_contractionIndex_[offset]) { 
+                // contraction characters are ordered, skip all smaller
+                offset ++;
+            }
+        
+            if (ch == collator.m_contractionIndex_[offset]) {
+                // Found the source string char in the contraction table.
+                //  Pick up the corresponding CE from the table.
+                ce = collator.m_contractionCE_[offset];
+            }
+            else {
+                // if there is a completely ignorable code point in the middle 
+                // of contraction, we need to act as if it's not there 
+                int isZeroCE = collator.m_trie_.getLeadValue(ch); 
+                // it's easy for BMP code points 
+                if (isZeroCE == 0) {                     
+                    continue; 
+                } 
+                else if (UTF16.isLeadSurrogate(ch)) { 
+                    if (!isEnd()) { 
+                        backupInternalState(m_utilSpecialBackUp_); 
+                        char trail = nextChar(); 
+                        if (UTF16.isTrailSurrogate(trail)) { 
+                            // do stuff with trail 
+                            if (RuleBasedCollator.getTag(isZeroCE) 
+                                == RuleBasedCollator.CE_SURROGATE_TAG_) { 
+                                int finalCE = collator.m_trie_.getTrailValue(
+                                                           isZeroCE, trail); 
+                                if (finalCE == 0) { 
+                                    continue; 
+                                } 
+                            } 
+                        } 
+                        else { 
+                            // broken surrogate sequence, thus completely 
+                            // ignorable 
+                            updateInternalState(
+                                              m_utilSpecialBackUp_); 
+                            continue; 
+                        } 
+                        updateInternalState(m_utilSpecialBackUp_); 
+                    } 
+                    else { 
+                        // no  more characters, so broken surrogate pair...  
+                        // this contraction will ultimately fail, but not 
+                        // because of us 
+                        continue;  
+                    } 
+               } 
+
+                // Source string char was not in contraction table.
+                // Unless it is a discontiguous contraction, we are done
+                byte sCC;
+                if (maxCC == 0 || (sCC = (byte)getCombiningClass(ch)) == 0 
+                    || sCC > maxCC || (allSame != 0 && sCC == maxCC) || 
+                    isEnd()) {
+                    // Contraction can not be discontiguous, back up by one
+                    previousChar(); 
+                    ce = collator.m_contractionCE_[entryoffset];
+                } 
+                else {
+                    // Contraction is possibly discontiguous.
+                    // find the next character if ch is not a base character
+                    char nextch = nextChar();
+                    if (nextch != CharacterIterator.DONE) {
+                        previousChar();
+                    }
+                    if (getCombiningClass(nextch) == 0) {
+                        previousChar();
+                        // base character not part of discontiguous contraction
+                        ce = collator.m_contractionCE_[entryoffset];
+                    } 
+                    else {
+                        ce = nextDiscontiguous(collator, entryoffset);
+                    }
+                }
+            }
+        
+            if (ce == CE_NOT_FOUND_) {
+                // source did not match the contraction, revert back original
+                updateInternalState(m_utilSpecialBackUp_);
+                ce = entryce;
+                break;
+            }
+                
+            // source was a contraction
+            if (!isContractionTag(ce)) {
+                break;
+            }
+        
+            // ccontinue looping to check for the remaining contraction.
+            if (collator.m_contractionCE_[entryoffset] != CE_NOT_FOUND_) {
+                // there are further contractions to be performed, so we store
+                // the so-far completed ce, so that if we fail in the next
+                // round we just return this one.
+                entryce = collator.m_contractionCE_[entryoffset];
+                backupInternalState(m_utilSpecialBackUp_);
+                if (m_utilSpecialBackUp_.m_bufferOffset_ >= 0) {
+                    m_utilSpecialBackUp_.m_bufferOffset_ --;
+                }
+                else {
+                    m_utilSpecialBackUp_.m_offset_ --;
+                }
+            }
+        }                                                            
+        return ce;
+    }
+        
+    /**
+     * Gets the next ce for long primaries, stuffs the rest of the collation 
+     * elements into the ce buffer
+     * @param ce current ce
+     * @return next ce
+     */
+    private int nextLongPrimary(int ce)
+    {
+        m_CEBuffer_[1] = ((ce & 0xFF) << 24) 
+            | RuleBasedCollator.CE_CONTINUATION_MARKER_;
+        m_CEBufferOffset_ = 1;
+        m_CEBufferSize_ = 2;
+        m_CEBuffer_[0] = ((ce & 0xFFFF00) << 8) | (CE_BYTE_COMMON_ << 8) | 
+            CE_BYTE_COMMON_;
+        return m_CEBuffer_[0];
+    }
+        
+    /**
+     * Gets the number of expansion
+     * @param ce current ce
+     * @return number of expansion
+     */
+    private int getExpansionCount(int ce)
+    {   
+        return ce & 0xF;
+    }
+        
+    /**
+     * Gets the next expansion ce and stuffs the rest of the collation elements
+     * into the ce buffer
+     * @param collator current collator
+     * @param ce current ce
+     * @return next expansion ce
+     */
+    private int nextExpansion(RuleBasedCollator collator, int ce)
+    {
+        // NOTE: we can encounter both continuations and expansions in an 
+        // expansion!
+        // I have to decide where continuations are going to be dealt with 
+        int offset = getExpansionOffset(collator, ce);
+        m_CEBufferSize_ = getExpansionCount(ce); 
+        m_CEBufferOffset_ = 1;
+        m_CEBuffer_[0] = collator.m_expansion_[offset];
+        if (m_CEBufferSize_ != 0) { 
+            // if there are less than 16 elements in expansion
+            for (int i = 1; i < m_CEBufferSize_; i ++) {
+                m_CEBuffer_[i] = collator.m_expansion_[offset + i];
+            }
+        } 
+        else { 
+            // ce are terminated
+            m_CEBufferSize_ = 1;
+            while (collator.m_expansion_[offset] != 0) {
+                m_CEBuffer_[m_CEBufferSize_ ++] = 
+                    collator.m_expansion_[++ offset];
+            }
+        }
+        return m_CEBuffer_[0];
+    }
+    
+    /**
+     * Gets the next implicit ce for codepoints
+     * @param codepoint current codepoint
+     * @return implicit ce
+     */
+    private int nextImplicit(int codepoint) 
+    {
+        if (!UCharacter.isLegal(codepoint)) {
+            // synwee to check with vladimir on the range of isNonChar()
+            // illegal code value, use completely ignoreable!
+            return IGNORABLE;
+        }
+        int result = getImplicitPrimary(codepoint);
+        m_CEBuffer_[0] = (result & RuleBasedCollator.CE_PRIMARY_MASK_) 
+                         | 0x00000505;
+        m_CEBuffer_[1] = ((result & 0x0000FFFF) << 16) | 0x000000C0;
+        m_CEBufferOffset_ = 1;
+        m_CEBufferSize_ = 2;
+        return m_CEBuffer_[0];
+    }
+        
+    /**
+     * Returns the next ce associated with the following surrogate characters
+     * @param ch current character
+     * @return ce
+     */
+    private int nextSurrogate(char ch)
+    {
+        char nextch = nextChar();
+        if (nextch != CharacterIterator.DONE && 
+            UTF16.isTrailSurrogate(nextch)) {
+            int codepoint = UCharacterProperty.getRawSupplementary(ch, nextch);
+            return nextImplicit(codepoint);
+        } 
+        if (nextch != CharacterIterator.DONE) {
+            previousChar(); // reverts back to the original position
+        }
+        return IGNORABLE; // completely ignorable
+    }
+        
+    /**
+     * Returns the next ce for a hangul character, this is an implicit 
+     * calculation
+     * @param collator current collator
+     * @param ch current character
+     * @return hangul ce
+     */
+    private int nextHangul(RuleBasedCollator collator, char ch)
+    {
+        char L = (char)(ch - HANGUL_SBASE_);
+                
+        // divide into pieces
+        // do it in this order since some compilers can do % and / in one 
+        // operation
+        char T = (char)(L % HANGUL_TCOUNT_); 
+        L /= HANGUL_TCOUNT_;
+        char V = (char)(L % HANGUL_VCOUNT_);
+        L /= HANGUL_VCOUNT_;
+                
+        // offset them
+        L += HANGUL_LBASE_;
+        V += HANGUL_VBASE_;
+        T += HANGUL_TBASE_;
+                        
+        // return the first CE, but first put the rest into the expansion 
+        // buffer
+        m_CEBufferSize_ = 0;
+        if (!collator.m_isJamoSpecial_) { // FAST PATH
+            m_CEBuffer_[m_CEBufferSize_ ++] = 
+                collator.m_trie_.getLeadValue(L);
+            m_CEBuffer_[m_CEBufferSize_ ++] = 
+                collator.m_trie_.getLeadValue(V);
+                        
+            if (T != HANGUL_TBASE_) {
+                m_CEBuffer_[m_CEBufferSize_ ++] = 
+                    collator.m_trie_.getLeadValue(T);
+            }
+            m_CEBufferOffset_ = 1;
+            return m_CEBuffer_[0];
+        } 
+        else { 
+            // Jamo is Special
+            // Since Hanguls pass the FCD check, it is guaranteed that we 
+            // won't be in the normalization buffer if something like this 
+            // happens
+            // Move Jamos into normalization buffer
+            m_buffer_.append((char)L);
+            m_buffer_.append((char)V);
+            if (T != HANGUL_TBASE_) {
+                m_buffer_.append((char)T);
+            }
+            m_FCDLimit_ = m_source_.getIndex();  
+            m_FCDStart_ = m_FCDLimit_ - 1;
+            // Indicate where to continue in main input string after 
+            // exhausting the buffer
+            return IGNORABLE;
+        }
+    }
+        
+    /**
+     * <p>Special CE management. Expansions, contractions etc...</p>
+     * @param collator can be plain UCA 
+     * @param ce current ce
+     * @param ch current character
+     * @return next special ce
+     */
+    private int nextSpecial(RuleBasedCollator collator, int ce, char ch) 
+    {
+        int codepoint = ch;
+        Backup entrybackup = m_utilSpecialEntryBackUp_;
+        // this is to handle recursive looping
+        if (entrybackup != null) {
+            m_utilSpecialEntryBackUp_ = null;
+        }
+        else {
+            entrybackup = new Backup();
+        }
+        backupInternalState(entrybackup);
+        try { // forces it to assign m_utilSpecialEntryBackup_
+            while (true) {
+                // This loop will repeat only in the case of contractions, 
+                // surrogate
+                switch(RuleBasedCollator.getTag(ce)) {
+                case CE_NOT_FOUND_TAG_:
+                    // impossible case for icu4j
+                    return ce;
+                case RuleBasedCollator.CE_SURROGATE_TAG_:
+                    if (isEnd()) {
+                        return IGNORABLE;
+                    }
+                    backupInternalState(m_utilSpecialBackUp_);
+                    char trail = nextChar();
+                    ce = nextSurrogate(collator, ce, trail);
+                    // calculate the supplementary code point value, 
+                    // if surrogate was not tailored we go one more round
+                    codepoint = 
+                        UCharacterProperty.getRawSupplementary(ch, trail);
+                    break;
+                case CE_THAI_TAG_:
+                    ce = nextThai(collator, ce, ch);
+                    break;
+                case CE_SPEC_PROC_TAG_:
+                    ce = nextSpecialPrefix(collator, ce, entrybackup);
+                    break;
+                case CE_CONTRACTION_TAG_:
+                    ce = nextContraction(collator, ce);
+                    break;
+                case CE_LONG_PRIMARY_TAG_:
+                    return nextLongPrimary(ce);
+                case CE_EXPANSION_TAG_:
+                    return nextExpansion(collator, ce);
+                    // various implicits optimization
+                case CE_CJK_IMPLICIT_TAG_:    
+                    // 0x3400-0x4DB5, 0x4E00-0x9FA5, 0xF900-0xFA2D
+                    return nextImplicit(codepoint);
+                case CE_IMPLICIT_TAG_: // everything that is not defined 
+                    return nextImplicit(codepoint);
+                case CE_TRAIL_SURROGATE_TAG_: 
+                    return IGNORABLE; // DC00-DFFF broken surrogate
+                case CE_LEAD_SURROGATE_TAG_:  // D800-DBFF
+                    return nextSurrogate(ch);
+                case CE_HANGUL_SYLLABLE_TAG_: // AC00-D7AF
+                    return nextHangul(collator, ch);
+                case CE_CHARSET_TAG_:
+                                    // not yet implemented probably after 1.8
+                    return CE_NOT_FOUND_;
+                default:
+                    ce = IGNORABLE;
+                    // synwee todo, throw exception or something here.
+                }
+                if (!RuleBasedCollator.isSpecial(ce)) {
+                    break;
+                }
+            }
+        } finally {
+            m_utilSpecialEntryBackUp_ = entrybackup;
+        }
+        return ce;
+    }
+        
+    /**
+     * Getting the previous Thai ce
+     * @param collator current collator
+     * @param ch current character
+     * @return previous Thai ce
+     */
+    private int previousThai(RuleBasedCollator collator, int ce, char ch)
+    {
+        if (m_bufferOffset_ >= 0 || m_source_.getIndex() == 0) {
+            // if we have already swapped or at the start of the source
+            // Treat Thai as a length one expansion
+            return collator.m_expansion_[getExpansionOffset(collator, ce)];
+        }
+        char prevch = previousChar();
+        if (!isThaiPreVowel(prevch)) {
+            // we now rearrange unconditionally do not check for base consonant
+            if (prevch != CharacterIterator.DONE) {
+                nextChar();
+            }
+            // Treat Thai as a length one expansion
+            return collator.m_expansion_[getExpansionOffset(collator, ce)];   
+        }
+        
+        // Move the prevowel and the following base Consonant into the
+        // normalization buffer with their order swapped
+        // buffer is always clean when we are in the source string
+        m_buffer_.append(ch);
+        m_buffer_.append(prevch);
+        m_bufferOffset_ = 2;
+                        
+        if (m_source_.getIndex() == 0) {
+            m_FCDStart_ = 0;
+            m_FCDLimit_ = 2;
+        } 
+        else {
+            m_FCDStart_ = m_source_.getIndex();
+            m_FCDLimit_ = m_FCDStart_ + 2;
+        }
+        
+        return IGNORABLE;
+    }
+        
+    /**
+     * Special processing is getting a CE that is preceded by a certain prefix.
+     * Currently this is only needed for optimizing Japanese length and 
+     * iteration marks. When we encouter a special processing tag, we go 
+     * backwards and try to see if we have a match. Contraction tables are used 
+     * - so the whole process is not unlike contraction. prefix data is stored 
+     * backwards in the table.
+     * @param collator current collator
+     * @param ce current ce
+     * @return previous ce
+     */
+    private int previousSpecialPrefix(RuleBasedCollator collator, int ce)
+    {
+        backupInternalState(m_utilSpecialBackUp_);
+        while (true) {
+            // position ourselves at the begining of contraction sequence 
+            int offset = getContractionOffset(collator, ce);
+            int entryoffset = offset;
+            if (isBackwardsStart()) {
+                ce = collator.m_contractionCE_[offset];
+                break;
+            }
+            char prevch = previousChar();
+            while (prevch > collator.m_contractionIndex_[offset]) { 
+                // since contraction codepoints are ordered, we skip all that 
+                // are smaller
+                offset ++;
+            }
+            if (prevch == collator.m_contractionIndex_[offset]) {
+                ce = collator.m_contractionCE_[offset];
+            }
+            else {
+                // if there is a completely ignorable code point in the middle 
+                // of a prefix, we need to act as if it's not there assumption: 
+                // 'real' noncharacters (*fffe, *ffff, fdd0-fdef are set to 
+                // zero) 
+                // lone surrogates cannot be set to zero as it would break 
+                // other processing 
+                int isZeroCE = collator.m_trie_.getLeadValue(prevch); 
+                // it's easy for BMP code points 
+                if (isZeroCE == 0) { 
+                    continue; 
+                } 
+                else if (UTF16.isTrailSurrogate(prevch) 
+                         || UTF16.isLeadSurrogate(prevch)) { 
+                    // for supplementary code points, we have to check the next one 
+                    // situations where we are going to ignore 
+                    // 1. beginning of the string: schar is a lone surrogate 
+                    // 2. schar is a lone surrogate 
+                    // 3. schar is a trail surrogate in a valid surrogate 
+                    //    sequence that is explicitly set to zero. 
+                    if (!isBackwardsStart()) { 
+                        char lead = previousChar(); 
+                        if (UTF16.isLeadSurrogate(lead)) { 
+                            isZeroCE = collator.m_trie_.getLeadValue(lead); 
+                            if (RuleBasedCollator.getTag(isZeroCE) 
+                                == RuleBasedCollator.CE_SURROGATE_TAG_) { 
+                                int finalCE = collator.m_trie_.getTrailValue(
+                                                           isZeroCE & 0xFFFFFF, 
+                                                           prevch); 
+                                if (finalCE == 0) { 
+                                    // this is a real, assigned completely 
+                                    // ignorable code point 
+                                    continue; 
+                                }
+                            } 
+                        } 
+                        else { 
+                            nextChar(); // revert to original offset
+                            // lone surrogate, completely ignorable 
+                            continue; 
+                        } 
+                        nextChar(); // revert to original offset
+                    } 
+                    else { 
+                         // lone surrogate at the beggining, completely ignorable 
+                         continue; 
+                    } 
+                } 
+
+                // char was not in the table. prefix not found
+                ce = collator.m_contractionCE_[entryoffset];
+            }
+        
+            if (!isSpecialPrefixTag(ce)) {
+                // char was in the contraction table, and the corresponding ce 
+                // is not a prefix ce.  We found the prefix, break out of loop, 
+                // this ce will end up being returned. 
+                break;
+            }
+        }
+        updateInternalState(m_utilSpecialBackUp_);
+        return ce;
+    }
+        
+    /**
+     * Retrieves the previous contraction ce. To ensure that the backwards and 
+     * forwards iteration matches, we take the current region of most possible 
+     * match and pass it through the forward iteration. This will ensure that 
+     * the obstinate problem of overlapping contractions will not occur.
+     * @param collator current collator
+     * @param ce current ce
+     * @param ch current character
+     * @return previous contraction ce
+     */
+    private int previousContraction(RuleBasedCollator collator, int ce, char ch)
+    {
+        m_utilStringBuffer_.setLength(0);
+        while (collator.isUnsafe(ch)) {
+            m_utilStringBuffer_.insert(0, ch);
+            ch = previousChar();
+            if (isBackwardsStart()) {
+                break;
+            }
+        }
+        // adds the initial base character to the string
+        m_utilStringBuffer_.insert(0, ch);   
+        
+        // a new collation element iterator is used to simply things, since 
+        // using the current collation element iterator will mean that the 
+        // forward and backwards iteration will share and change the same 
+        // buffers. it is going to be painful. 
+        int originaldecomp = collator.getDecomposition();
+        // for faster access, since string would have been normalized above
+        collator.setDecomposition(Collator.NO_DECOMPOSITION); 
+        if (m_utilColEIter_ == null) {
+            m_utilColEIter_ = new CollationElementIterator(
+                                                m_utilStringBuffer_.toString(),
+                                                collator);
+        }
+        else {
+            m_utilColEIter_.m_collator_ = collator;
+            m_utilColEIter_.setText(m_utilStringBuffer_.toString());
+        }
+        ce = m_utilColEIter_.next();
+        m_CEBufferSize_ = 0;
+        while (ce != NULLORDER) {
+            if (m_CEBufferSize_ == m_CEBuffer_.length) {
+                try {
+                    // increasing cebuffer size
+                    int tempbuffer[] = new int[m_CEBuffer_.length + 50];
+                    System.arraycopy(m_CEBuffer_, 0, tempbuffer, 0, 
+                                     m_CEBuffer_.length);
+                    m_CEBuffer_ = tempbuffer;
+                }
+                catch (Exception e) {
+                    e.printStackTrace();
+                    return NULLORDER;
+                }
+            }
+            m_CEBuffer_[m_CEBufferSize_ ++] = ce;
+            ce = m_utilColEIter_.next();
+        }
+        collator.setDecomposition(originaldecomp);       
+        m_CEBufferOffset_ = m_CEBufferSize_ - 1;
+        return m_CEBuffer_[m_CEBufferOffset_];
+    }
+        
+    /**
+     * Returns the previous long primary ces
+     * @param ce long primary ce
+     * @return previous long primary ces
+     */
+    private int previousLongPrimary(int ce)
+    {
+        m_CEBufferSize_ = 0;
+        m_CEBuffer_[m_CEBufferSize_ ++] = 
+            ((ce & 0xFFFF00) << 8) | (CE_BYTE_COMMON_ << 8) | CE_BYTE_COMMON_;
+        m_CEBuffer_[m_CEBufferSize_ ++] = ((ce & 0xFF) << 24) 
+            | RuleBasedCollator.CE_CONTINUATION_MARKER_;
+        m_CEBufferOffset_ = m_CEBufferSize_ - 1;
+        return m_CEBuffer_[m_CEBufferOffset_];
+    }
+        
+    /**
+     * Returns the previous expansion ces
+     * @param collator current collator
+     * @param ce current ce
+     * @return previous expansion ce
+     */
+    private int previousExpansion(RuleBasedCollator collator, int ce)
+    {
+        // find the offset to expansion table
+        int offset = getExpansionOffset(collator, ce);
+        m_CEBufferSize_ = getExpansionCount(ce);
+        if (m_CEBufferSize_ != 0) {
+            // less than 16 elements in expansion
+            for (int i = 0; i < m_CEBufferSize_; i ++) {
+                m_CEBuffer_[i] = collator.m_expansion_[offset + i];
+            }
+                
+        }
+        else {
+            // null terminated ces
+            while (collator.m_expansion_[offset + m_CEBufferSize_] != 0) {
+                m_CEBuffer_[m_CEBufferSize_] = 
+                    collator.m_expansion_[offset + m_CEBufferSize_];
+                m_CEBufferSize_ ++;
+            }
+        }
+        m_CEBufferOffset_ = m_CEBufferSize_ - 1;
+        return m_CEBuffer_[m_CEBufferOffset_];
+    }
+        
+    /**
+     * Returns previous hangul ces
+     * @param collator current collator
+     * @param ch current character
+     * @return previous hangul ce
+     */
+    private int previousHangul(RuleBasedCollator collator, char ch)
+    {
+        char L = (char)(ch - HANGUL_SBASE_);
+        // we do it in this order since some compilers can do % and / in one
+        // operation
+        char T = (char)(L % HANGUL_TCOUNT_);
+        L /= HANGUL_TCOUNT_;
+        char V = (char)(L % HANGUL_VCOUNT_);
+        L /= HANGUL_VCOUNT_;
+        
+        // offset them
+        L += HANGUL_LBASE_;
+        V += HANGUL_VBASE_;
+        T += HANGUL_TBASE_;
+        
+        m_CEBufferSize_ = 0;
+        if (!collator.m_isJamoSpecial_) {
+            m_CEBuffer_[m_CEBufferSize_ ++] =
+                collator.m_trie_.getLeadValue(L);
+            m_CEBuffer_[m_CEBufferSize_ ++] =
+                collator.m_trie_.getLeadValue(V);
+            if (T != HANGUL_TBASE_) {
+                m_CEBuffer_[m_CEBufferSize_ ++] =
+                    collator.m_trie_.getLeadValue(T);
+            }
+            m_CEBufferOffset_ = m_CEBufferSize_ - 1;
+            return m_CEBuffer_[m_CEBufferOffset_];
+        } 
+        else {
+            // Since Hanguls pass the FCD check, it is guaranteed that we won't 
+            // be in the normalization buffer if something like this happens
+            // Move Jamos into normalization buffer
+            m_buffer_.append(L);
+            m_buffer_.append(V);
+            if (T != HANGUL_TBASE_) {
+                m_buffer_.append(T);
+            } 
+                        
+            m_FCDStart_ = m_source_.getIndex();
+            m_FCDLimit_ = m_FCDStart_ + 1;
+            return IGNORABLE;
+        }
+    }
+        
+    /**
+     * Gets implicit codepoint ces
+     * @param codepoint current codepoint
+     * @return implicit codepoint ces
+     */
+    private int previousImplicit(int codepoint)
+    {
+        if (!UCharacter.isLegal(codepoint)) {
+            return IGNORABLE; // illegal code value, completely ignoreable! 
+        }
+        int result = getImplicitPrimary(codepoint);
+        m_CEBufferSize_ = 2;
+        m_CEBufferOffset_ = 1;
+        m_CEBuffer_[0] = (result & RuleBasedCollator.CE_PRIMARY_MASK_) 
+                         | 0x00000505;
+        m_CEBuffer_[1] = ((result & 0x0000FFFF) << 16) | 0x000000C0;
+        return m_CEBuffer_[1];
+    }
+        
+    /**
+     * Gets the previous surrogate ce
+     * @param ch current character
+     * @return previous surrogate ce
+     */
+    private int previousSurrogate(char ch)
+    {
+        if (isBackwardsStart()) {
+            // we are at the start of the string, wrong place to be at
+            return IGNORABLE;
+        }
+        char prevch = previousChar(); 
+        // Handles Han and Supplementary characters here.
+        if (UTF16.isLeadSurrogate(prevch)) {
+            return previousImplicit(
+                          UCharacterProperty.getRawSupplementary(prevch, ch));
+        } 
+        if (prevch != CharacterIterator.DONE) {
+            nextChar();
+        }
+        return IGNORABLE; // completely ignorable 
+    }
+                
+    /**
+     * <p>Special CE management. Expansions, contractions etc...</p>
+     * @param collator can be plain UCA 
+     * @param ce current ce
+     * @param ch current character
+     * @return previous special ce
+     */
+    private int previousSpecial(RuleBasedCollator collator, int ce, char ch)
+    {
+        while(true) {
+            // the only ces that loops are thai, special prefix and 
+            // contractions 
+            switch (RuleBasedCollator.getTag(ce)) {
+            case CE_NOT_FOUND_TAG_:  // this tag always returns
+                return ce;
+            case RuleBasedCollator.CE_SURROGATE_TAG_: 
+                                // essentialy a disengaged lead surrogate. a broken 
+                                // sequence was encountered and this is an error
+                return IGNORABLE;
+            case CE_THAI_TAG_:
+                ce = previousThai(collator, ce, ch);
+                break;
+            case CE_SPEC_PROC_TAG_:
+                ce = previousSpecialPrefix(collator, ce);
+                break;
+            case CE_CONTRACTION_TAG_:
+                // may loop for first character e.g. "0x0f71" for english
+                if (isBackwardsStart()) {
+                    // start of string or this is not the end of any contraction
+                    ce = collator.m_contractionCE_[
+                                            getContractionOffset(collator, ce)];
+                    break;
+                }
+                return previousContraction(collator, ce, ch); // else
+            case CE_LONG_PRIMARY_TAG_:
+                return previousLongPrimary(ce);
+            case CE_EXPANSION_TAG_: // always returns
+                return previousExpansion(collator, ce);
+            case CE_HANGUL_SYLLABLE_TAG_: // AC00-D7AF
+                return previousHangul(collator, ch);
+            case CE_LEAD_SURROGATE_TAG_:  // D800-DBFF
+                return IGNORABLE; // broken surrogate sequence
+            case CE_TRAIL_SURROGATE_TAG_: // DC00-DFFF
+                return previousSurrogate(ch);
+            case CE_CJK_IMPLICIT_TAG_: 
+                // 0x3400-0x4DB5, 0x4E00-0x9FA5, 0xF900-0xFA2D
+                return previousImplicit(ch);
+            case CE_IMPLICIT_TAG_: // everything that is not defined
+                // UCA is filled with these. Tailorings are NOT_FOUND 
+                return previousImplicit(ch);
+            case CE_CHARSET_TAG_: // this tag always returns
+                return CE_NOT_FOUND_;
+            default: // this tag always returns
+                ce = IGNORABLE;
+            }
+            if (!RuleBasedCollator.isSpecial(ce)) {
+                break;
+            }
+        }
+        return ce;
+    }
+    
+    /** 
+     * GET IMPLICIT PRIMARY WEIGHTS
+     * @param cp codepoint
+     * @param value is left justified primary key
+     */
+    private static final int getImplicitPrimary(int cp) 
+    {
+        cp = swapCJK(cp);
+        
+        //if (DEBUG) System.out.println("CJK swapped: " + Utility.hex(cp));
+        // we now have a range of numbers from 0 to 21FFFF.
+        // we must skip all 00, 01, 02 bytes, so most bytes have 253 values
+        // we must leave a gap of 01 between all values of the last byte, so 
+        // the last byte has 126 values (3 byte case)
+        // we shift so that HAN all has the same first primary, for 
+        // compression.
+        // for the 4 byte case, we make the gap as large as we can fit.
+        // Three byte forms are EC xx xx, ED xx xx, EE xx xx (with a gap of 1)
+        // Four byte forms (most supplementaries) are EF xx xx xx (with a gap 
+        // of LAST2_MULTIPLIER == 14)
+        
+        int last0 = cp - RuleBasedCollator.IMPLICIT_4BYTE_BOUNDARY_;
+        if (last0 < 0) {
+            int last1 = cp / RuleBasedCollator.LAST_COUNT_;
+            last0 = cp % RuleBasedCollator.LAST_COUNT_;
+            
+            int last2 = last1 / RuleBasedCollator.OTHER_COUNT_;
+            last1 %= RuleBasedCollator.OTHER_COUNT_;
+            return RuleBasedCollator.IMPLICIT_BASE_3BYTE_ + (last2 << 24) 
+                   + (last1 << 16) 
+                   + ((last0 * RuleBasedCollator.LAST_MULTIPLIER_) << 8);
+        } 
+        else {
+            int last1 = last0 / RuleBasedCollator.LAST_COUNT2_;
+            last0 %= RuleBasedCollator.LAST_COUNT2_;
+            
+            int last2 = last1 / RuleBasedCollator.OTHER_COUNT_;
+            last1 %= RuleBasedCollator.OTHER_COUNT_;
+            
+            int last3 = last2 / RuleBasedCollator.OTHER_COUNT_;
+            last2 %= RuleBasedCollator.OTHER_COUNT_;
+            return RuleBasedCollator.IMPLICIT_BASE_4BYTE_ + (last3 << 24) 
+                   + (last2 << 16) + (last1 << 8) 
+                   + (last0 * RuleBasedCollator.LAST2_MULTIPLIER_);
+        }
+    }
+    
+    /**
+     * Swapping CJK characters for implicit ces
+     * @param cp codepoint CJK
+     * @return swapped result
+     */
+    private static final int swapCJK(int cp) 
+    {
+        if (cp >= CJK_BASE_) {
+            if (cp < CJK_LIMIT_) {
+                return cp - CJK_BASE_;
+            }
+            if (cp < CJK_COMPAT_USED_BASE_) {
+                return cp + NON_CJK_OFFSET_;
+            }
+            if (cp < CJK_COMPAT_USED_LIMIT_) {
+                return cp - CJK_COMPAT_USED_BASE_ + (CJK_LIMIT_ - CJK_BASE_);
+            }
+            if (cp < CJK_B_BASE_) {
+                return cp + NON_CJK_OFFSET_;
+            }
+            if (cp < CJK_B_LIMIT_) {
+                return cp; // non-BMP-CJK
+            }
+            return cp + NON_CJK_OFFSET_; // non-CJK
+        }
+        if (cp < CJK_A_BASE_) {
+            return cp + NON_CJK_OFFSET_;
+        }
+        if (cp < CJK_A_LIMIT_) {
+            return cp - CJK_A_BASE_ + (CJK_LIMIT_ - CJK_BASE_) 
+                   + (CJK_COMPAT_USED_LIMIT_ - CJK_COMPAT_USED_BASE_);
+        }
+        return cp + NON_CJK_OFFSET_; // non-CJK
+    }
+}
diff --git a/src/com/ibm/icu/text/CollationKey.java b/src/com/ibm/icu/text/CollationKey.java
new file mode 100755
index 0000000..b6a4f38
--- /dev/null
+++ b/src/com/ibm/icu/text/CollationKey.java
@@ -0,0 +1,350 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/CollationKey.java,v $ 
+* $Date: 2002/08/02 19:40:19 $ 
+* $Revision: 1.9 $
+*
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+/**
+ * <p>A <code>CollationKey</code> represents a <code>String</code>
+ * under the rules of a specific <code>Collator</code>
+ * object. Comparing two <code>CollationKey</code>s returns the
+ * relative order of the <code>String</code>s they represent.</p>
+ *
+ * <p>Since the rule set of <code>Collator</code>s can differ, the
+ * sort orders of the same string under two different
+ * <code>Collator</code>s might differ.  Hence comparing
+ * <code>CollationKey</code>s generated from different
+ * <code>Collator</code>s can give incorrect results.</p>
+ *
+ * <p>Both the method
+ * <code>CollationKey.compareTo(CollationKey)</code> and the method
+ * <code>Collator.compare(String, String)</code> compare two strings
+ * and returns their relative order.  The performance characterictics
+ * of these two approaches can differ.</p>
+ *
+ * <p>During the construction of a <code>CollationKey</code>, the
+ * entire source string is examined and processed into a series of
+ * bits that are stored in the <code>CollationKey</code>. When
+ * <code>CollationKey.compareTo(CollationKey)</code> executes, it
+ * performs bitwise comparison on the bit sequences.  This can incurs
+ * startup cost when creating the <code>CollationKey</code>, but once
+ * the key is created, binary comparisons are fast.  This approach is
+ * recommended when the same strings are to be compared over and over
+ * again.</p>
+ *
+ * <p>On the other hand, implementations of
+ * <code>Collator.compare(String, String)</code> can examine and
+ * process the strings only until the first characters differing in
+ * order.  This approach is recommended if the strings are to be
+ * compared only once.</p>
+ * 
+ * <p>More information about the composition of the bit sequence can
+ * be found in the 
+ * <a href="http://oss.software.ibm.com/icu/userguide/Collate_ServiceArchitecture.html">
+ * user guide</a>.</p>
+ *
+ * <p>The following example shows how <code>CollationKey</code>s can be used
+ * to sort a list of <code>String</code>s.</p>
+ * <blockquote>
+ * <pre>
+ * // Create an array of CollationKeys for the Strings to be sorted.
+ * Collator myCollator = Collator.getInstance();
+ * CollationKey[] keys = new CollationKey[3];
+ * keys[0] = myCollator.getCollationKey("Tom");
+ * keys[1] = myCollator.getCollationKey("Dick");
+ * keys[2] = myCollator.getCollationKey("Harry");
+ * sort( keys );
+ * <br>
+ * //...
+ * <br>
+ * // Inside body of sort routine, compare keys this way
+ * if( keys[i].compareTo( keys[j] ) > 0 )
+ *    // swap keys[i] and keys[j]
+ * <br>
+ * //...
+ * <br>
+ * // Finally, when we've returned from sort.
+ * System.out.println( keys[0].getSourceString() );
+ * System.out.println( keys[1].getSourceString() );
+ * System.out.println( keys[2].getSourceString() );
+ * </pre>
+ * </blockquote>
+ * </p>
+ * @see Collator
+ * @see RuleBasedCollator
+ * @author Syn Wee Quek
+ * @since release 2.2, April 18 2002
+ * @draft 2.2 
+ */
+public final class CollationKey implements Comparable 
+{
+    // public constructor ---------------------------------------------------
+    
+    /**
+     * CollationKey constructor.
+     * This constructor is given public access, unlike the JDK version, to
+     * allow access to users extending the Collator class. See 
+     * {@link Collator#getCollationKey(String)}. 
+     * @param source string this CollationKey is to represent
+     * @param key array of bytes that represent the collation order of argument
+     *            source
+     * @see Collator
+     * @draft 2.2
+     */
+    public CollationKey(String source, byte key[])
+    {
+        m_source_ = source;
+        m_key_ = key;
+        m_hashCode_ = 0;
+    }
+    
+    // public getters -------------------------------------------------------
+	
+    /**
+     * Return the source string that this CollationKey represents.
+     * @return source string that this CollationKey represents
+     * @draft 2.2
+     */
+    public String getSourceString() 
+    {
+        return m_source_;
+    }
+
+    /**
+     * <p>Duplicates and returns the value of this CollationKey as a sequence 
+     * of big-endian bytes terminated by a null.</p> 
+     *
+     * <p>If two CollationKeys can be legitimately compared, then one can
+     * compare the byte arrays of each to obtain the same result, e.g.
+     * <pre>
+     * byte key1[] = collationkey1.toByteArray();
+     * byte key2[] = collationkey2.toByteArray();
+     * int key, targetkey;
+     * int i = 0;
+     * do {
+     *	   key = key1[i] & 0xFF;
+     *     targetkey = key2[i] & 0xFF;
+     *     if (key &lt; targetkey) {
+     *         System.out.println("String 1 is less than string 2");
+     *         return;
+     *     }
+     *     if (targetkey &lt; key) {
+     *         System.out.println("String 1 is more than string 2");
+     *     }
+     *     i ++;
+     * } while (key != 0 && targetKey != 0);
+     *
+     * System.out.println("Strings are equal.");
+     * </pre>
+     * </p>  
+     * @return CollationKey value in a sequence of big-endian byte bytes 
+     *         terminated by a null.
+     * @draft 2.2
+     */
+    public byte[] toByteArray() 
+    {
+    	int length = 0;
+    	while (true) {
+    	    if (m_key_[length] == 0) {
+    		  break;
+    	    }
+    	    length ++;
+    	}
+    	length ++;
+    	byte result[] = new byte[length];
+    	System.arraycopy(m_key_, 0, result, 0, length);
+        return result;
+    }
+
+    // public other methods -------------------------------------------------	
+ 	
+    /**
+     * <p>Compare this CollationKey to another CollationKey.  The
+     * collation rules of the Collator that created this key are
+     * applied.</p>
+     *
+     * <p><strong>Note:</strong> Comparison between CollationKeys
+     * created by different Collators might return incorrect
+     * results.  See class documentation.</p>
+     *
+     * @param target target CollationKey
+     * @return an integer value.  If the value is less than zero this CollationKey
+     *         is less than than target, if the value is zero they are equal, and
+     *         if the value is greater than zero this CollationKey is greater 
+     *         than target.
+     * @exception NullPointerException is thrown if argument is null.
+     * @see Collator#compare(String, String)
+     * @draft 2.2 */
+    public int compareTo(CollationKey target)
+    {
+    	int i = 0;
+    	while (m_key_[i] != 0 && target.m_key_[i] != 0) {
+            byte key = m_key_[i];
+            byte targetkey = target.m_key_[i];
+            if (key == targetkey) {
+                i ++;
+                continue;
+            }
+            if (key >= 0) {
+                if (targetkey < 0 || key < targetkey) {
+                    return -1;
+                }
+                // target key has to be positive and less than key
+                return 1;
+            }
+            else {
+                // key is negative
+                if (targetkey >= 0 || key > targetkey) {
+                    return 1;
+                }
+                return -1;
+            }
+    	}
+    	// last comparison if we encounter a 0
+        if (m_key_[i] == target.m_key_[i]) {
+            return 0;
+        }
+        if (m_key_[i] == 0) {
+            return -1;
+        }
+        // target is 0
+        return 1;
+    }
+
+    /**
+     * <p>Compare this CollationKey with the specified Object.  The
+     * collation rules of the Collator that created this key are
+     * applied.</p>
+     * 
+     * <p>See note in compareTo(CollationKey) for warnings about possible
+     * incorrect results.</p>
+     *
+     * @param obj the Object to be compared to.
+     * @return Returns a negative integer, zero, or a positive integer 
+     *         respectively if this CollationKey is less than, equal to, or 
+     *         greater than the given Object.
+     * @exception ClassCastException is thrown when the argument is not 
+     *            a CollationKey.  NullPointerException is thrown when the argument 
+     *            is null.
+     * @see #compareTo(CollationKey)
+     * @draft 2.2 */
+    public int compareTo(Object obj) 
+    {
+	return compareTo((CollationKey)obj);
+    }
+
+    /**
+     * <p>Compare this CollationKey and the specified Object for
+     * equality.  The collation rules of the Collator that created
+     * this key are applied.</p>
+     *
+     * <p>See note in compareTo(CollationKey) for warnings about
+     * possible incorrect results.</p>
+     *
+     * @param target the object to compare to.
+     * @return true if the two keys compare as equal, false otherwise.
+     * @see #compareTo(CollationKey)
+     * @exception ClassCastException is thrown when the argument is not 
+     *            a CollationKey.  NullPointerException is thrown when the argument 
+     *            is null.
+     * @draft 2.2 
+     */
+    public boolean equals(Object target) 
+    {
+        if (!(target instanceof CollationKey)) {
+            return false;
+        }
+        
+        return equals((CollationKey)target);
+    }
+    
+    /**
+     * <p>
+     * Compare this CollationKey and the argument target CollationKey for 
+     * equality.
+     * The collation 
+     * rules of the Collator object which created these objects are applied.
+     * </p>
+     * <p>
+     * See note in compareTo(CollationKey) for warnings of incorrect results
+     * </p>
+     * @param target the CollationKey to compare to.
+     * @return true if two objects are equal, false otherwise.
+     * @exception NullPointerException is thrown when the argument is null.
+     * @draft 2.2
+     */
+    public boolean equals(CollationKey target) 
+    {
+        if (this == target) {
+	    return true;
+        }
+        if (target == null) {
+            return false;
+        }
+        CollationKey other = (CollationKey)target;
+        int i = 0;
+        while (true) {
+	    if (m_key_[i] != other.m_key_[i]) {
+		return false;
+	    }
+	    if (m_key_[i] == 0) {
+		break;
+	    }
+	    i ++;
+        }
+        return true;
+    }
+
+    /**
+     * <p>Returns a hash code for this CollationKey. The hash value is calculated 
+     * on the key itself, not the String from which the key was created. Thus 
+     * if x and y are CollationKeys, then x.hashCode(x) == y.hashCode() 
+     * if x.equals(y) is true. This allows language-sensitive comparison in a 
+     * hash table.
+     * </p>
+     * @return the hash value.
+     * @draft 2.2
+     */
+    public int hashCode() 
+    {
+    	if (m_hashCode_ == 0) {
+	    int size = m_key_.length >> 1;
+	    StringBuffer key = new StringBuffer(size);
+	    int i = 0;
+	    while (m_key_[i] != 0 && m_key_[i + 1] != 0) {
+		key.append((char)((m_key_[i] << 8) | m_key_[i + 1]));
+		i += 2;
+	    }
+	    if (m_key_[i] != 0) {
+		key.append((char)(m_key_[i] << 8));
+	    }
+	    m_hashCode_ = key.toString().hashCode();
+    	}
+        return m_hashCode_;
+    }
+
+    // private data members -------------------------------------------------
+
+    /**
+     * Source string this CollationKey represents
+     */	
+    private String m_source_;
+
+    /**
+     * Sequence of bytes that represents the sort key
+     */
+    private byte m_key_[];
+
+    /**
+     * Hash code for the key
+     */
+    private int m_hashCode_;
+}
diff --git a/src/com/ibm/icu/text/CollationParsedRuleBuilder.java b/src/com/ibm/icu/text/CollationParsedRuleBuilder.java
new file mode 100644
index 0000000..7529638
--- /dev/null
+++ b/src/com/ibm/icu/text/CollationParsedRuleBuilder.java
@@ -0,0 +1,3585 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/CollationParsedRuleBuilder.java,v $ 
+* $Date: 2002/08/01 21:09:17 $ 
+* $Revision: 1.4 $
+*
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+ 
+import java.io.InputStream;
+import java.io.BufferedInputStream;
+import java.text.ParseException;
+import java.util.Hashtable;
+import java.util.Vector;
+import java.util.Arrays;
+import java.util.Enumeration;
+
+import com.ibm.icu.impl.TrieBuilder;
+import com.ibm.icu.impl.IntTrieBuilder;
+import com.ibm.icu.impl.TrieIterator;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.util.RangeValueIterator;
+
+/**
+* Class for building a collator from a list of collation rules.
+* This class is uses CollationRuleParser
+* @author Syn Wee Quek
+* @since release 2.2, June 11 2002
+* @draft 2.2
+*/
+class CollationParsedRuleBuilder
+{     
+	// package private constructors ------------------------------------------
+
+    /**
+     * Constructor
+     * @param rules collation rules
+     * @exception ParseException thrown when argument rules have an invalid 
+     *            syntax 
+     */
+    CollationParsedRuleBuilder(String rules) throws ParseException
+    {
+        m_parser_ = new CollationRuleParser(rules);
+        m_utilColEIter_ = RuleBasedCollator.UCA_.getCollationElementIterator(
+                                                                           "");
+    }
+    
+    // package private inner classes -----------------------------------------
+    
+    /** 
+     * Inverse UCA wrapper
+     */
+    static class InverseUCA 
+    {
+        // package private constructor ---------------------------------------
+        
+        InverseUCA() 
+        {
+        }
+        
+        // package private data member ---------------------------------------
+        
+        /**
+         * Array list of characters
+         */
+        int m_table_[];
+        /**
+         * Array list of continuation characters
+         */
+        char m_continuations_[];
+        
+        // package private method --------------------------------------------
+        
+        /**
+	     * Returns the previous inverse ces of the argument ces
+	     * @param ce ce to test
+	     * @param contce continuation ce to test
+	     * @param strength collation strength
+	     * @param prevresult an array to store the return results previous 
+         *                   inverse ce and previous inverse continuation ce
+         * @return result of the inverse ce 
+	     */
+	    final int getInversePrevCE(int ce, int contce, int strength, 
+                                    int prevresult[]) 
+	    {
+		    int result = findInverseCE(ce, contce);
+		
+		    if (result < 0) {
+		        prevresult[0] = CollationElementIterator.NULLORDER;
+		        return -1;
+		    }
+		
+		    ce &= STRENGTH_MASK_[strength];
+		    contce &= STRENGTH_MASK_[strength];
+		
+            prevresult[0] = ce;
+		    prevresult[1] = contce;
+		
+		    while ((prevresult[0]  & STRENGTH_MASK_[strength]) == ce 
+		           && (prevresult[1]  & STRENGTH_MASK_[strength])== contce
+		           && result > 0) { 
+		                // this condition should prevent falling off the edge of the 
+		                // world 
+		        // here, we end up in a singularity - zero
+		        prevresult[0] = m_table_[3 * (-- result)];
+		        prevresult[1] = m_table_[3 * result + 1];
+		   }
+           return result;
+		}
+        
+        /**
+         * Finding the inverse CE of the argument CEs
+         * @param ce CE to be tested
+         * @param contce continuation CE
+         * @return inverse CE
+         */
+        int findInverseCE(int ce, int contce) 
+        {
+            int bottom = 0;
+            int top = m_table_.length / 3;
+            int result = 0;
+    
+            while (bottom < top - 1) {
+		        result = (top + bottom) >> 1;
+		        int first = m_table_[3 * result];
+		        int second = m_table_[3 * result + 1];
+                int comparison = Utility.compareUnsigned(first, ce);
+			    if (comparison > 0) {
+			        top = result;
+			    } 
+                else if (comparison < 0) {
+			        bottom = result;
+			    } 
+                else {
+			        if (second > contce) {
+			            top = result;
+			        } 
+                    else if (second < contce) {
+			            bottom = result;
+			        } 
+                    else {
+			            break;
+			        }
+			    }
+		    }
+		
+		    return result;
+		}
+    
+	    /**
+	     * Getting gap offsets in the inverse UCA
+	     * @param listheader parsed token lists
+	     * @exception Exception thrown when error occurs while finding the 
+	     *            collation gaps
+	     */
+	    void getInverseGapPositions(CollationRuleParser.TokenListHeader 
+                                                                    listheader)
+	                                                           throws Exception 
+	    {
+	        // reset all the gaps
+		    CollationRuleParser.Token token = listheader.m_first_;
+	        int tokenstrength = token.m_strength_;
+	
+			for (int i = 0; i < 3; i ++) {
+			    listheader.m_gapsHi_[3 * i] = 0;
+			    listheader.m_gapsHi_[3 * i + 1] = 0;
+			    listheader.m_gapsHi_[3 * i + 2] = 0;
+			    listheader.m_gapsLo_[3 * i] = 0;
+			    listheader.m_gapsLo_[3 * i + 1] = 0;
+			    listheader.m_gapsLo_[3 * i + 2] = 0;
+			    listheader.m_numStr_[i] = 0;
+			    listheader.m_fStrToken_[i] = null;
+			    listheader.m_lStrToken_[i] = null;
+			    listheader.m_pos_[i] = -1;
+		    }
+	
+	        if ((listheader.m_baseCE_ >>> 24) 
+                >= RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_IMPLICIT_MIN_
+	            && (listheader.m_baseCE_ >>> 24)
+                < RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_IMPLICIT_MAX_) 
+            { 
+	            // implicits -
+			    listheader.m_pos_[0] = 0;
+			    int t1 = listheader.m_baseCE_;
+			    int t2 = listheader.m_baseContCE_;
+			    listheader.m_gapsLo_[0] = mergeCE(t1, t2, 
+	                                              Collator.PRIMARY);
+			    listheader.m_gapsLo_[1] = mergeCE(t1, t2, 
+	                                              Collator.SECONDARY);
+			    listheader.m_gapsLo_[2] = mergeCE(t1, t2, 
+	                                              Collator.TERTIARY);
+			    if (listheader.m_baseCE_ < 0xEF000000) {
+			        // first implicits have three byte primaries, with a gap of
+                    // one so we esentially need to add 2 to the top byte in 
+	                // listheader.m_baseContCE_
+			        t2 += 0x02000000;
+			    } 
+	            else {
+			        // second implicits have four byte primaries, with a gap of
+                    // IMPLICIT_LAST2_MULTIPLIER_
+			        // Now, this guy is not really accessible here, so until we 
+	                // find a better way to pass it around, assume that the gap is 1
+			        t2 += 0x00020000;
+			    }
+		        listheader.m_gapsHi_[0] = mergeCE(t1, t2, 
+	                                              Collator.PRIMARY);
+		        listheader.m_gapsHi_[1] = mergeCE(t1, t2, 
+	                                              Collator.SECONDARY);
+		        listheader.m_gapsHi_[2] = mergeCE(t1, t2, 
+	                                              Collator.TERTIARY);
+		    } 
+	        else if (listheader.m_indirect_ == true 
+                     && listheader.m_nextCE_ != 0) {
+		        listheader.m_pos_[0] = 0;
+			    int t1 = listheader.m_baseCE_;
+			    int t2 = listheader.m_baseContCE_;
+			    listheader.m_gapsLo_[0] = mergeCE(t1, t2, 
+	                                              Collator.PRIMARY);
+			    listheader.m_gapsLo_[1] = mergeCE(t1, t2, 
+	                                              Collator.SECONDARY);
+			    listheader.m_gapsLo_[2] = mergeCE(t1, t2, 
+	                                              Collator.TERTIARY);
+			    t1 = listheader.m_nextCE_;
+			    t2 = listheader.m_nextContCE_;
+			    listheader.m_gapsHi_[0] = mergeCE(t1, t2, 
+	                                              Collator.PRIMARY);
+			    listheader.m_gapsHi_[1] = mergeCE(t1, t2, 
+	                                              Collator.SECONDARY);
+			    listheader.m_gapsHi_[2] = mergeCE(t1, t2, 
+	                                              Collator.TERTIARY);
+			} 
+	        else {
+			    while (true) {
+			        if (tokenstrength < CE_BASIC_STRENGTH_LIMIT_) {
+	                    listheader.m_pos_[tokenstrength] 
+	                                   = getInverseNext(listheader, 
+                                                        tokenstrength);
+			            if (listheader.m_pos_[tokenstrength] >= 0) {
+			                listheader.m_fStrToken_[tokenstrength] = token;
+			            } 
+	                    else { 
+	                        // The CE must be implicit, since it's not in the 
+                            // table 
+				            // Error
+				            throw new Exception("Internal program error");
+			            }
+			        }
+			
+			        while (token != null && token.m_strength_ >= tokenstrength) 
+                    {
+				        if (tokenstrength < CE_BASIC_STRENGTH_LIMIT_) {
+				            listheader.m_lStrToken_[tokenstrength] = token;
+				        }
+				        token = token.m_next_;
+				    }
+			        if (tokenstrength < CE_BASIC_STRENGTH_LIMIT_ - 1) {
+			            // check if previous interval is the same and merge the 
+	                    // intervals if it is so
+			            if (listheader.m_pos_[tokenstrength] 
+	                                == listheader.m_pos_[tokenstrength + 1]) {
+			                listheader.m_fStrToken_[tokenstrength] 
+	                                  = listheader.m_fStrToken_[tokenstrength 
+                                                                + 1];
+			                listheader.m_fStrToken_[tokenstrength + 1] = null;
+			                listheader.m_lStrToken_[tokenstrength + 1] = null;
+			                listheader.m_pos_[tokenstrength + 1] = -1;
+			            }
+			        }
+			        if (token != null) {
+			            tokenstrength = token.m_strength_;
+			        } 
+	                else {
+			            break;
+			        }
+			    }
+		        for (int st = 0; st < 3; st ++) {
+	                int pos = listheader.m_pos_[st];
+		            if (pos >= 0) {
+		                int t1 = m_table_[3 * pos];
+		                int t2 = m_table_[3 * pos + 1];
+		                listheader.m_gapsHi_[3 * st] = mergeCE(t1, t2, 
+	                                                Collator.PRIMARY);
+		                listheader.m_gapsHi_[3 * st + 1] = mergeCE(t1, t2, 
+	                                              Collator.SECONDARY);
+		                listheader.m_gapsHi_[3 * st + 2] = (t1 & 0x3f) << 24 
+	                                                       | (t2 & 0x3f) << 16;
+		                pos --;
+		                t1 = m_table_[3 * pos];
+		                t2 = m_table_[3 * pos + 1];
+		                listheader.m_gapsLo_[3 * st] = mergeCE(t1, t2, 
+	                                                Collator.PRIMARY);
+		                listheader.m_gapsLo_[3 * st + 1] = mergeCE(t1, t2, 
+	                                              Collator.SECONDARY);
+		                listheader.m_gapsLo_[3 * st + 2] = (t1 & 0x3f) << 24 
+	                                                       | (t2 & 0x3f) << 16;
+		            }
+		        }
+		    }
+        }
+	    
+	    /**
+	     * Gets the next CE in the inverse table
+	     * @param listheader token list header
+	     * @param strength collation strength
+	     * @return next ce
+	     */
+	    private final int getInverseNext(CollationRuleParser.TokenListHeader 
+                                                                    listheader, 
+	                                     int strength) 
+	    {
+		    int ce = listheader.m_baseCE_;
+		    int secondce = listheader.m_baseContCE_; 
+		    int result = findInverseCE(ce, secondce);
+			
+		    if (result < 0) {
+		        return -1;
+		    }
+			
+		    ce &= STRENGTH_MASK_[strength];
+		    secondce &= STRENGTH_MASK_[strength];
+		
+		    int nextce = ce;
+		    int nextcontce = secondce;
+		
+		    while((nextce & STRENGTH_MASK_[strength]) == ce 
+		          && (nextcontce  & STRENGTH_MASK_[strength]) == secondce) {
+		        nextce = m_table_[3 * (++ result)];
+		        nextcontce = m_table_[3 * result + 1];
+		    }
+			
+		    listheader.m_nextCE_ = nextce;
+		    listheader.m_nextContCE_ = nextcontce;
+		
+		    return result;
+		}
+	}
+
+    // package private data members ------------------------------------------
+    
+    /**
+     * Inverse UCA, instantiate only when required
+     */
+    static final InverseUCA INVERSE_UCA_; 
+    
+    /**
+     * Initializing the inverse UCA
+     */
+    static {
+        try
+        {
+            String invdat = "/com/ibm/icu/impl/data/invuca.icu";
+            InputStream i = invdat.getClass().getResourceAsStream(invdat);
+            BufferedInputStream b = new BufferedInputStream(i, 110000);
+            INVERSE_UCA_ = CollatorReader.readInverseUCA(b);
+            b.close();
+            i.close();
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+    
+    // package private methods -----------------------------------------------
+    
+    /**
+     * Parse and sets the collation rules in the argument collator
+     * @param collator to set
+     * @exception Exception thrown when internal program error occurs
+     */
+    void setRules(RuleBasedCollator collator) throws Exception
+    {
+        if (m_parser_.m_resultLength_ > 0) { 
+		    // we have a set of rules, let's make something of it 
+		    assembleTailoringTable(collator);
+		} 
+		else { // no rules, but no error either must be only options
+		       // We will init the collator from UCA   
+		    collator.setWithUCATables();
+		}
+        // And set only the options
+        m_parser_.setDefaultOptionsInCollator(collator);
+    }
+    
+    /**
+     * 2.  Eliminate the negative lists by doing the following for each 
+     * non-null negative list: 
+     * o   if previousCE(baseCE, strongestN) != some ListHeader X's baseCE, 
+     * create new ListHeader X 
+     * o   reverse the list, add to the end of X's positive list. Reset the 
+     * strength of the first item you add, based on the stronger strength 
+     * levels of the two lists. 
+     * 
+     * 3.  For each ListHeader with a non-null positive list: 
+     * o   Find all character strings with CEs between the baseCE and the 
+     * next/previous CE, at the strength of the first token. Add these to the 
+     * tailoring. 
+     *     ? That is, if UCA has ...  x <<< X << x' <<< X' < y ..., and the 
+     *       tailoring has & x < z... 
+     *     ? Then we change the tailoring to & x  <<< X << x' <<< X' < z ... 
+     * 
+     * It is possible that this part should be done even while constructing list
+     * The problem is that it is unknown what is going to be the strongest 
+     * weight.
+     * So we might as well do it here
+     * o   Allocate CEs for each token in the list, based on the total number N 
+     * of the largest level difference, and the gap G between baseCE and nextCE 
+     * at that level. The relation * between the last item and nextCE is the 
+     * same as the strongest strength. 
+     * o   Example: baseCE < a << b <<< q << c < d < e * nextCE(X,1) 
+     *     ? There are 3 primary items: a, d, e. Fit them into the primary gap. 
+     *     Then fit b and c into the secondary gap between a and d, then fit q 
+     *     into the tertiary gap between b and c. 
+     * o   Example: baseCE << b <<< q << c * nextCE(X,2) 
+     *     ? There are 2 secondary items: b, c. Fit them into the secondary gap. 
+     *       Then fit q into the tertiary gap between b and c. 
+     * o   When incrementing primary values, we will not cross high byte 
+     *     boundaries except where there is only a single-byte primary. That is 
+     *     to ensure that the script reordering will continue to work. 
+     * @param collator the rule based collator to update
+     * @exception Exception thrown when internal program error occurs
+     */
+    void assembleTailoringTable(RuleBasedCollator collator) throws Exception
+    {
+        
+	    for (int i = 0; i < m_parser_.m_resultLength_; i ++) {
+		    // now we need to generate the CEs  
+		    // We stuff the initial value in the buffers, and increase the 
+            // appropriate buffer according to strength
+		    initBuffers(m_parser_.m_listHeader_[i]);
+	    }
+		
+        if (m_parser_.m_variableTop_ != null) { 
+            // stuff the variable top value
+		    m_parser_.m_options_.m_variableTopValue_ 
+                                    = m_parser_.m_variableTop_.m_CE_[0] >>> 16;
+		    // remove it from the list
+		    if (m_parser_.m_variableTop_.m_listHeader_.m_first_ 
+                == m_parser_.m_variableTop_) { // first in list
+		        m_parser_.m_variableTop_.m_listHeader_.m_first_ 
+                                            = m_parser_.m_variableTop_.m_next_;
+		    }
+		    if (m_parser_.m_variableTop_.m_listHeader_.m_last_ 
+                                                == m_parser_.m_variableTop_) { 
+                // first in list
+		        m_parser_.m_variableTop_.m_listHeader_.m_last_ 
+                                        = m_parser_.m_variableTop_.m_previous_;    
+		    }
+		    if (m_parser_.m_variableTop_.m_next_ != null) {
+		        m_parser_.m_variableTop_.m_next_.m_previous_ 
+                                        = m_parser_.m_variableTop_.m_previous_;
+		    }
+		    if (m_parser_.m_variableTop_.m_previous_ != null) {
+		        m_parser_.m_variableTop_.m_previous_.m_next_ 
+                                           = m_parser_.m_variableTop_.m_next_;
+		    }
+		}
+		
+		
+		BuildTable t = new BuildTable(m_parser_);
+		
+		// After this, we have assigned CE values to all regular CEs now we 
+		// will go through list once more and resolve expansions, make 
+		// UCAElements structs and add them to table               
+		for (int i = 0; i < m_parser_.m_resultLength_; i ++) {
+		    // now we need to generate the CEs 
+		    // We stuff the initial value in the buffers, and increase the 
+		    // appropriate buffer according to strength                                                          */
+		    createElements(t, m_parser_.m_listHeader_[i]);
+		}
+		
+		Elements el = new Elements();
+        el.m_isThai_ = false;
+		el.m_prefixChars_ = null;
+		int ce[] = new int[256];
+        StringBuffer str = new StringBuffer();
+        
+		// add latin-1 stuff
+		for (char u = 0; u < 0x100; u ++) {
+            // if ((CE = ucmpe32_get(t.m_mapping, u)) == UCOL_NOT_FOUND
+            int CE = t.m_mapping_.getValue((int)u);
+            if (CE == CE_NOT_FOUND_ 
+		        // this test is for contractions that are missing the starting 
+                // element. Looks like latin-1 should be done before 
+                // assembling the table, even if it results in more false 
+                // closure elements
+		        || (isContractionTableElement(CE) 
+                   && getCE(t.m_contractions_, CE, 0) == CE_NOT_FOUND_)) {
+                str.delete(0, str.length());
+                str.append(u);
+		        el.m_uchars_ = str.toString();
+		        el.m_cPoints_ = el.m_uchars_;
+		        el.m_prefix_ = 0;
+                int ceoffset = 0;
+                m_utilColEIter_.setText(el.m_uchars_);
+		        while (CE != CollationElementIterator.NULLORDER) {
+		            CE = m_utilColEIter_.next();
+		            if (CE != CollationElementIterator.NULLORDER) {
+		                ce[ceoffset ++] = CE;
+		            }
+		        }
+                el.m_CEs_ = new int[ceoffset];
+                System.arraycopy(ce, 0, el.m_CEs_, 0, ceoffset);
+		        addAnElement(t, el);
+		    }
+		}
+		
+        // copy contractions from the UCA - this is felt mostly for cyrillic
+		char conts[] = RuleBasedCollator.UCA_CONTRACTIONS_;
+        int offset = 0;
+		while (conts[offset] != 0) {
+		    // tailoredCE = ucmpe32_get(t.m_mapping, *conts);
+		    int tailoredCE = t.m_mapping_.getValue(conts[offset]);
+		    if (tailoredCE != CE_NOT_FOUND_) {         
+		        boolean needToAdd = true;
+		        if (isContractionTableElement(tailoredCE)) {
+		            if (isTailored(t.m_contractions_, tailoredCE, 
+                                   conts, offset + 1) == true) {
+		                needToAdd = false;
+		            }
+		        }
+                if (needToAdd == true) { 
+                    // we need to add if this contraction is not tailored.
+		            el.m_prefix_ = 0;
+		            el.m_prefixChars_ = null;
+		            el.m_cPoints_ = el.m_uchars_;
+                    str.delete(0, str.length());
+                    str.append(conts[offset]);
+                    str.append(conts[offset + 1]);
+		            if (conts[offset + 2] != 0) {
+    		            str.append(conts[offset + 2]);
+    		        } 
+                    el.m_uchars_ = str.toString();
+                    int ceoffset = 0;
+                    m_utilColEIter_.setText(el.m_uchars_);
+                    while (true) {
+                        int CE = m_utilColEIter_.next();
+                        if (CE != CollationElementIterator.NULLORDER) {
+                            ce[ceoffset ++] = CE;
+                        }
+                        else {
+                            break;
+                        }
+                    }
+                    el.m_CEs_ = new int[ceoffset];
+                    System.arraycopy(ce, 0, el.m_CEs_, 0, ceoffset);
+		            addAnElement(t, el);
+                }
+		    }
+		    offset += 3;
+		}
+		
+        // Add completely ignorable elements
+        processUCACompleteIgnorables(t);
+  
+        // canonical closure 
+        canonicalClosure(t);
+		// still need to produce compatibility closure
+		assembleTable(t, collator);  
+    }
+    
+    // private inner classes -------------------------------------------------
+    
+    private static class CEGenerator 
+    {
+        // package private data members --------------------------------------
+        
+	    WeightRange m_ranges_[];
+	    int m_rangesLength_;
+	    int m_byteSize_; 
+        int m_start_; 
+        int m_limit_;
+	    int m_maxCount_;
+	    int m_count_;
+	    int m_current_;
+	    int m_fLow_; // forbidden Low 
+	    int m_fHigh_; // forbidden High 
+        
+        // package private constructor ---------------------------------------
+        
+        CEGenerator() 
+        {
+            m_ranges_ = new WeightRange[7];      
+            for (int i = 6; i >= 0; i --) {
+                m_ranges_[i] = new WeightRange();
+            }
+        }
+	};
+
+    private static class WeightRange implements Comparable
+    {
+        // public methods ----------------------------------------------------
+        
+        /**
+         * Compares this object with target
+         * @param target object to compare with
+         * @return 0 if equals, 1 if this is > target, -1 otherwise
+         */
+        public int compareTo(Object target) 
+        {
+            if (this == target) {
+                return 0;
+            }
+            int tstart = ((WeightRange)target).m_start_;   
+            if (m_start_ == tstart) {
+                return 0;
+            }
+            if (m_start_ > tstart) {
+                return 1;
+            }
+            return -1;
+        }
+        
+        // package private data members --------------------------------------
+        
+	    int m_start_;
+        int m_end_;
+	    int m_length_; 
+        int m_count_;
+	    int m_length2_;
+	    int m_count2_;
+        
+        // package private constructor ---------------------------------------
+        
+        WeightRange()
+        {
+            m_start_ = 0;
+            m_end_ = 0;
+            m_length_ = 0; 
+            m_count_ = 0;
+            m_length2_ = 0;
+            m_count2_ = 0;
+        }
+	};
+	
+	private static class MaxJamoExpansionTable
+	{
+		// package private data members --------------------------------------
+		
+	    Vector m_endExpansionCE_;
+	    // vector of booleans
+	    Vector m_isV_;
+	    byte m_maxLSize_;
+	    byte m_maxVSize_;
+	    byte m_maxTSize_;
+	    
+	    // package private constructor ---------------------------------------
+	    
+	    MaxJamoExpansionTable()
+	    {
+	    	m_endExpansionCE_ = new Vector();
+	    	m_isV_ = new Vector();
+	    	m_endExpansionCE_.add(new Integer(0));
+	    	m_isV_.add(new Integer(0));
+            m_maxLSize_ = 1;
+            m_maxVSize_ = 1;
+            m_maxTSize_ = 1;
+	    }
+        
+        MaxJamoExpansionTable(MaxJamoExpansionTable table)
+        {
+            m_endExpansionCE_ = (Vector)table.m_endExpansionCE_.clone();
+            m_isV_ = (Vector)table.m_isV_.clone();
+            m_maxLSize_ = table.m_maxLSize_;
+            m_maxVSize_ = table.m_maxVSize_;
+            m_maxTSize_ = table.m_maxTSize_;
+        }
+	};
+	
+	private static class MaxExpansionTable 
+	{
+		// package private constructor --------------------------------------
+		
+		MaxExpansionTable() 
+		{
+			m_endExpansionCE_ = new Vector();
+			m_expansionCESize_ = new Vector();
+			m_endExpansionCE_.add(new Integer(0));
+			m_expansionCESize_.add(new Byte((byte)0));
+		}
+        
+        MaxExpansionTable(MaxExpansionTable table) 
+        {
+            m_endExpansionCE_ = (Vector)table.m_endExpansionCE_.clone();
+            m_expansionCESize_ = (Vector)table.m_expansionCESize_.clone();
+        }
+		
+		// package private data member --------------------------------------
+		
+	    Vector m_endExpansionCE_;
+	    Vector m_expansionCESize_;
+	};
+	
+	private static class BasicContractionTable 
+	{
+		// package private constructors -------------------------------------
+		
+		BasicContractionTable()
+		{
+			m_CEs_ = new Vector();
+	        m_codePoints_ = new StringBuffer();
+		}
+		
+		// package private data members -------------------------------------
+		
+	    StringBuffer m_codePoints_;
+	    Vector m_CEs_;
+    };
+    
+	private static class ContractionTable 
+	{
+		// package private constructor --------------------------------------
+		
+		/**
+		 * Builds a contraction table
+		 * @param buildtable
+		 */
+		ContractionTable(IntTrieBuilder mapping) 
+		{
+		    m_mapping_ = mapping;
+		    m_elements_ = new Vector();
+		    m_CEs_ = new Vector();
+		    m_codePoints_ = new StringBuffer();
+		    m_offsets_ = new Vector();
+		    m_currentTag_ = CE_NOT_FOUND_TAG_;
+		}
+        
+        /**
+         * Copies a contraction table.
+         * Not all data will be copied into their own object.
+         * @param table
+         */
+        ContractionTable(ContractionTable table) 
+        {
+            m_mapping_ = table.m_mapping_;
+            m_elements_ = (Vector)table.m_elements_.clone();
+            m_codePoints_ = new StringBuffer(table.m_codePoints_.toString());
+            m_CEs_ = (Vector)table.m_CEs_.clone();
+            m_offsets_ = (Vector)table.m_offsets_.clone();
+            m_currentTag_ = table.m_currentTag_;
+        }
+	
+	    // package private data members ------------------------------------
+	    
+		/**
+		 * Vector of BasicContractionTable
+		 */
+        Vector m_elements_;
+        IntTrieBuilder m_mapping_;
+        StringBuffer m_codePoints_;
+	    Vector m_CEs_;
+	    Vector m_offsets_;
+	    int m_currentTag_;
+	};
+
+	private static class BuildTable implements TrieBuilder.DataManipulate
+	{
+		// package private methods ------------------------------------------
+		
+		/**
+		 * For construction of the Trie tables.
+		 * Has to be labeled public
+		 * @param table build table
+		 * @param cp
+		 * @param offset
+		 * @return data offset or 0 
+		 * @draft 2.2
+		 */
+		public final int getFoldedValue(int cp, int offset)
+		{
+		    int limit = cp + 0x400;
+		    while (cp < limit) {
+		    	int value = m_mapping_.getValue(cp);
+		    	boolean inBlockZero = m_mapping_.isInZeroBlock(cp);
+			    int tag = getCETag(value);
+			    if (inBlockZero == true) {
+			        cp += TrieBuilder.DATA_BLOCK_LENGTH_;
+			    } 
+			    else if (!(isSpecial(value) && (tag == CE_IMPLICIT_TAG_ 
+			                                    || tag == CE_NOT_FOUND_TAG_))) {
+			        // These are values that are starting in either UCA 
+			        // (IMPLICIT_TAG) or in the tailorings (NOT_FOUND_TAG). 
+			        // Presence of these tags means that there is nothing in 
+			        // this position and that it should be skipped.
+			        return RuleBasedCollator.CE_SPECIAL_FLAG_ 
+			               | (CE_SURROGATE_TAG_ << 24) | offset;
+			    } 
+			    else {
+			        ++ cp;
+			    }
+		    }
+			return 0;
+		}
+	
+		// package private constructor --------------------------------------
+		
+		/**
+		 * Returns a table
+		 * @return build table
+		 */
+		BuildTable(CollationRuleParser parser) 
+		{
+			m_collator_ = new RuleBasedCollator();
+			m_collator_.setWithUCAData();
+	        MaxExpansionTable maxet = new MaxExpansionTable();
+	        MaxJamoExpansionTable maxjet = new MaxJamoExpansionTable();
+	        m_options_ = parser.m_options_;
+	        m_expansions_ = new Vector();
+	        // Do your own mallocs for the structure, array and have linear 
+	        // Latin 1
+	        m_mapping_ = new IntTrieBuilder(null, 0x100000, 
+	                                      RuleBasedCollator.CE_SPECIAL_FLAG_
+                                          | (CE_NOT_FOUND_TAG_ << 24), 
+	                                      true); 
+	        m_prefixLookup_ = new Hashtable();
+	        // uhash_open(prefixLookupHash, prefixLookupComp);
+	        m_contractions_ = new ContractionTable(m_mapping_);
+	        // copy UCA's maxexpansion and merge as we go along
+		    m_maxExpansions_ = maxet;
+		    // adding an extra initial value for easier manipulation 
+		    for (int i = 0; 
+		         i < RuleBasedCollator.UCA_.m_expansionEndCE_.length; i ++) {
+		         maxet.m_endExpansionCE_.add(new Integer(
+		                         RuleBasedCollator.UCA_.m_expansionEndCE_[i]));
+		         maxet.m_expansionCESize_.add(new Byte(
+                          RuleBasedCollator.UCA_.m_expansionEndCEMaxSize_[i]));
+		    }
+		    m_maxJamoExpansions_ = maxjet;
+		
+		    m_unsafeCP_ = new byte[UNSAFECP_TABLE_SIZE_];
+		    m_contrEndCP_ = new byte[UNSAFECP_TABLE_SIZE_];
+		    Arrays.fill(m_unsafeCP_, (byte)0);
+		    Arrays.fill(m_contrEndCP_, (byte)0);
+		}
+	
+        /**
+         * Duplicating a BuildTable.
+         * Not all data will be duplicated into their own object.
+         * @param table to clone
+         */
+        BuildTable(BuildTable table) 
+        {
+            m_collator_ = table.m_collator_;
+            m_mapping_ = new IntTrieBuilder(table.m_mapping_);
+            m_expansions_ = (Vector)table.m_expansions_.clone();
+            m_contractions_ = new ContractionTable(table.m_contractions_);
+            m_contractions_.m_mapping_ = m_mapping_;
+            m_options_ = table.m_options_;
+            m_maxExpansions_ = new MaxExpansionTable(table.m_maxExpansions_);
+            m_maxJamoExpansions_ 
+                       = new MaxJamoExpansionTable(table.m_maxJamoExpansions_);
+            m_unsafeCP_ = new byte[table.m_unsafeCP_.length];
+            System.arraycopy(table.m_unsafeCP_, 0, m_unsafeCP_, 0,
+                             m_unsafeCP_.length);
+            m_contrEndCP_ = new byte[table.m_contrEndCP_.length];
+            System.arraycopy(table.m_contrEndCP_, 0, m_contrEndCP_, 0,
+                             m_contrEndCP_.length);
+        }
+        
+		// package private data members -------------------------------------
+		
+		RuleBasedCollator m_collator_;
+        IntTrieBuilder m_mapping_; 
+        Vector m_expansions_; 
+        ContractionTable m_contractions_;
+	    // UCATableHeader image;
+	    CollationRuleParser.OptionSet m_options_;
+	    MaxExpansionTable m_maxExpansions_;
+	    MaxJamoExpansionTable m_maxJamoExpansions_;
+	    byte m_unsafeCP_[];
+	    byte m_contrEndCP_[];
+	    Hashtable m_prefixLookup_;
+	}; 
+	
+	private static class Elements
+	{
+		// package private data members -------------------------------------
+		
+		String m_prefixChars_;
+	    int m_prefix_;
+	    String m_uchars_;
+	    /**
+	     * Working string
+	     */
+	    String m_cPoints_;    
+	    /**
+	     * Offset to the working string
+	     */
+	    int m_cPointsOffset_;
+	    /** 
+	     * These are collation elements - there could be more than one - in 
+	     * case of expansion 
+	     */    
+	    int m_CEs_[];      
+	    /** 
+	     * This is the value element maps in original table   
+	     */
+	    int m_mapCE_;         
+	    int m_sizePrim_[];
+	    int m_sizeSec_[];
+	    int m_sizeTer_[];
+	    boolean m_variableTop_;
+	    boolean m_caseBit_;
+	    boolean m_isThai_;
+	    
+		// package private constructors -------------------------------------
+		
+		/**
+		 * Package private constructor
+		 */
+		Elements()
+		{
+			m_sizePrim_ = new int[128];	
+		    m_sizeSec_ = new int[128];	
+		    m_sizeTer_ = new int[128];	
+		}
+
+        /**
+		 * Package private constructor
+		 */
+		Elements(Elements element)
+		{
+            m_prefixChars_ = element.m_prefixChars_;
+            m_prefix_ = element.m_prefix_;
+            m_uchars_ = element.m_uchars_;
+            m_cPoints_ = element.m_cPoints_;    
+            m_cPointsOffset_ = element.m_cPointsOffset_;    
+            m_CEs_ = element.m_CEs_;
+            m_mapCE_ = element.m_mapCE_;
+		    m_sizePrim_ = element.m_sizePrim_;
+		    m_sizeSec_ = element.m_sizeSec_;
+		    m_sizeTer_ = element.m_sizeTer_;
+		    m_variableTop_ = element.m_variableTop_;
+		    m_caseBit_ = element.m_caseBit_;
+		    m_isThai_ = element.m_isThai_;
+		}
+
+        // package private methods -------------------------------------------
+        
+        /**
+         * Hashcode calculation for token
+         * @return the hashcode
+         */
+        public int hashCode()
+        {
+        	String str = m_cPoints_.substring(m_cPointsOffset_);
+		    return str.hashCode();
+	    }
+		
+		/**
+	     * Equals calculation
+	     * @param target object to compare
+	     * @return true if target is the same as this object
+	     */
+	    public boolean equals(Object target)
+	    {
+	        if (target == this) {
+	            return true;
+	        }
+	        if (target instanceof Elements) {
+	        	Elements t = (Elements)target;
+	        	int size = m_cPoints_.length() - m_cPointsOffset_;
+	        	if (size == t.m_cPoints_.length() - t.m_cPointsOffset_) {
+				    return t.m_cPoints_.regionMatches(t.m_cPointsOffset_, 
+				                                      m_cPoints_, 
+				                                      m_cPointsOffset_, size);
+	        	}
+            }
+            return false;
+		}
+	};
+
+    // private data member ---------------------------------------------------
+    
+    /**
+     * Maximum strength used in CE building
+     */
+    private static final int CE_BASIC_STRENGTH_LIMIT_ = 3;
+    /**
+     * Maximum collation strength
+     */
+    private static final int CE_STRENGTH_LIMIT_ = 16;
+    /**
+     * Strength mask array, used in inverse UCA
+     */
+    private static final int STRENGTH_MASK_[] = {0xFFFF0000, 0xFFFFFF00, 
+                                                 0xFFFFFFFF};
+    /**
+     * CE tag for not found
+     */
+    private static final int CE_NOT_FOUND_ = 0xF0000000;
+    /**
+     * CE tag for not found
+     */
+    private static final int CE_NOT_FOUND_TAG_ = 0;
+    /**
+     * This code point results in an expansion 
+     */
+    private static final int CE_EXPANSION_TAG_ = 1;
+    /** 
+     * Start of a contraction 
+     */
+    private static final int CE_CONTRACTION_TAG_ = 2;
+    /** 
+     * Thai character - do the reordering 
+     */
+    private static final int CE_THAI_TAG_ = 3;            
+    /** 
+     * Charset processing, not yet implemented
+     */
+    private static final int CE_CHARSET_TAG_ = 4;         
+    /** 
+     * Lead surrogate that is tailored and doesn't start a contraction 
+     */
+    private static final int CE_SURROGATE_TAG_ = 5;
+    /** 
+     * AC00-D7AF
+     */
+    private static final int CE_HANGUL_SYLLABLE_TAG_ = 6;
+    /** 
+     * D800-DBFF
+     */
+    private static final int CE_LEAD_SURROGATE_TAG_ = 7;
+    /** 
+     * DC00-DFFF
+     */
+    private static final int CE_TRAIL_SURROGATE_TAG_ = 8; 
+    /** 
+     * 0x3400-0x4DB5, 0x4E00-0x9FA5, 0xF900-0xFA2D
+     */    
+    private static final int CE_CJK_IMPLICIT_TAG_ = 9;
+    private static final int CE_IMPLICIT_TAG_ = 10;
+    private static final int CE_SPEC_PROC_TAG_ = 11;
+    /** 
+     * This is a three byte primary with starting secondaries and tertiaries.
+     * It fits in a single 32 bit CE and is used instead of expansion to save
+     * space without affecting the performance (hopefully) 
+     */
+    private static final int CE_LONG_PRIMARY_TAG_ = 12;  
+    /** 
+     * Unsafe UChar hash table table size. Size is 32 bytes for 1 bit for each 
+     * latin 1 char + some power of two for hashing the rest of the chars. 
+     * Size in bytes                               
+     */
+    private static final int UNSAFECP_TABLE_SIZE_ = 1056;
+    /** 
+     * Mask value down to "some power of two" -1. Number of bits, not num of 
+     * bytes.       
+     */
+    private static final int UNSAFECP_TABLE_MASK_ = 0x1fff;
+    /**
+     * Case values
+     */
+    private static final int UPPER_CASE_ = 0x80;
+    private static final int MIXED_CASE_ = 0x40;
+    private static final int LOWER_CASE_ = 0x00;
+    /**
+     * Initial table size
+     */
+    private static final int INIT_TABLE_SIZE_ = 1028;
+    /**
+     * Header size, copied from ICU4C, to be changed when that value changes
+     */
+    private static final int HEADER_SIZE_ = 0xC4;
+    /**
+     * Contraction table new element indicator
+     */
+    private static final int CONTRACTION_TABLE_NEW_ELEMENT_ = 0xFFFFFF;
+    /**
+     * Parser for the rules
+     */
+    private CollationRuleParser m_parser_;
+    /**
+     * Utility UCA collation element iterator
+     */
+    private CollationElementIterator m_utilColEIter_;
+    
+    // private methods -------------------------------------------------------
+    
+    /**
+     * @param listheader parsed rule tokens
+     * @exception Exception thrown when internal error occurs
+     */
+    private void initBuffers(CollationRuleParser.TokenListHeader listheader) 
+                                                            throws Exception
+    {
+        CEGenerator gens[] = {new CEGenerator(), new CEGenerator(),
+                              new CEGenerator()};
+		int ceparts[] = new int[CE_BASIC_STRENGTH_LIMIT_];
+		CollationRuleParser.Token token = listheader.m_last_;
+		int t[] = new int[CE_STRENGTH_LIMIT_];
+		Arrays.fill(t, 0, CE_STRENGTH_LIMIT_, 0);
+		
+		token.m_toInsert_ = 1;
+		t[token.m_strength_] = 1;
+		
+		while (token.m_previous_ != null) {
+		    if (token.m_previous_.m_strength_ < token.m_strength_) { 
+                // going up
+		        t[token.m_strength_] = 0;
+		        t[token.m_previous_.m_strength_] ++;
+		    } 
+            else if (token.m_previous_.m_strength_ > token.m_strength_) { 
+                // going down
+		        t[token.m_previous_.m_strength_] = 1;
+		    } 
+            else {
+		        t[token.m_strength_] ++;
+		    }
+		    token = token.m_previous_;
+		    token.m_toInsert_ = t[token.m_strength_];
+		} 
+		
+		token.m_toInsert_ = t[token.m_strength_];
+		INVERSE_UCA_.getInverseGapPositions(listheader);
+		
+		token = listheader.m_first_;
+		int fstrength = Collator.IDENTICAL;
+		int initstrength = Collator.IDENTICAL;
+		
+		ceparts[Collator.PRIMARY] = mergeCE(listheader.m_baseCE_, 
+                                            listheader.m_baseContCE_,
+                                            Collator.PRIMARY);
+		ceparts[Collator.SECONDARY] = mergeCE(listheader.m_baseCE_, 
+                                              listheader.m_baseContCE_,
+                                              Collator.SECONDARY);
+		ceparts[Collator.TERTIARY] = mergeCE(listheader.m_baseCE_, 
+                                             listheader.m_baseContCE_,
+                                             Collator.TERTIARY);
+		while (token != null) {
+		    fstrength = token.m_strength_;
+		    if (fstrength < initstrength) {
+		        initstrength = fstrength;
+		        if (listheader.m_pos_[fstrength] == -1) {
+		            while (listheader.m_pos_[fstrength] == -1 && fstrength > 0) 
+                    {
+		                fstrength--;
+		            }
+		            if (listheader.m_pos_[fstrength] == -1) {
+		                throw new Exception("Internal program error");
+		            }
+		        }
+		        if (initstrength == Collator.TERTIARY) { 
+                    // starting with tertiary
+			        ceparts[Collator.PRIMARY] 
+                                         = listheader.m_gapsLo_[fstrength * 3];
+			        ceparts[Collator.SECONDARY] 
+                                     = listheader.m_gapsLo_[fstrength * 3 + 1];
+			        ceparts[Collator.TERTIARY] = getCEGenerator(
+                                                       gens[Collator.TERTIARY], 
+                                                       listheader.m_gapsLo_, 
+                                                       listheader.m_gapsHi_, 
+                                                       token, fstrength); 
+		        } 
+                else if (initstrength == Collator.SECONDARY) { 
+                    // secondaries
+		            ceparts[Collator.PRIMARY] 
+                                         = listheader.m_gapsLo_[fstrength * 3];
+		            ceparts[Collator.SECONDARY] 
+                                     = getCEGenerator(gens[Collator.SECONDARY], 
+                                                      listheader.m_gapsLo_, 
+                                                      listheader.m_gapsHi_, 
+                                                      token, 
+                                                      fstrength);
+		            ceparts[Collator.TERTIARY] = getSimpleCEGenerator(
+                                                       gens[Collator.TERTIARY], 
+                                                       token, 
+                                                       Collator.TERTIARY);
+		        } 
+                else { 
+                    // primaries 
+		            ceparts[Collator.PRIMARY] = getCEGenerator(
+                                                        gens[Collator.PRIMARY], 
+                                                        listheader.m_gapsLo_, 
+                                                        listheader.m_gapsHi_, 
+                                                        token, fstrength);
+		            ceparts[Collator.SECONDARY] = getSimpleCEGenerator(
+                                                      gens[Collator.SECONDARY], 
+                                                      token, 
+                                                      Collator.SECONDARY);
+		            ceparts[Collator.TERTIARY] = getSimpleCEGenerator(
+                                                       gens[Collator.TERTIARY], 
+                                                       token, 
+                                                       Collator.TERTIARY);
+		        }
+		    } 
+            else {
+		        if (token.m_strength_ == Collator.TERTIARY) {
+		            ceparts[Collator.TERTIARY] = getNextGenerated(
+                                                      gens[Collator.TERTIARY]);
+		        } 
+                else if (token.m_strength_ == Collator.SECONDARY) {
+		            ceparts[Collator.SECONDARY] = getNextGenerated(
+                                                     gens[Collator.SECONDARY]);
+		            ceparts[Collator.TERTIARY] = getSimpleCEGenerator(
+                                                       gens[Collator.TERTIARY], 
+                                                       token, 
+                                                       Collator.TERTIARY);
+		        } 
+                else if (token.m_strength_ == Collator.PRIMARY) {
+		            ceparts[Collator.PRIMARY] = getNextGenerated(
+                                                       gens[Collator.PRIMARY]);
+		            ceparts[Collator.SECONDARY] = getSimpleCEGenerator(
+                                                      gens[Collator.SECONDARY], 
+                                                      token, 
+                                                      Collator.SECONDARY);
+		            ceparts[Collator.TERTIARY] = getSimpleCEGenerator(
+                                                      gens[Collator.TERTIARY], 
+                                                      token, 
+                                                      Collator.TERTIARY);
+		        }
+		    }
+		    doCE(ceparts, token);
+		    token = token.m_next_;
+	    }
+	}
+
+    /**
+     * Get the next generated ce
+     * @param g ce generator
+     * @return next generated ce 
+     */
+    private int getNextGenerated(CEGenerator g) 
+    {
+        g.m_current_ = nextWeight(g);
+        return g.m_current_;
+    }
+
+    /**
+     * @param g CEGenerator
+     * @param token rule token
+     * @param fstrength 
+     * @return ce generator
+     * @exception Exception thrown when internal error occurs
+     */
+    private int getSimpleCEGenerator(CEGenerator g, 
+                                     CollationRuleParser.Token token, 
+                                     int strength) throws Exception
+    {
+        int high, low, count = 1;
+        int maxbyte = (strength == Collator.TERTIARY) ? 0x3F : 0xFF;
+
+	    if (strength == Collator.SECONDARY) {
+		    low = RuleBasedCollator.COMMON_TOP_2_ << 24;
+		    high = 0xFFFFFFFF;
+		    count = 0xFF - RuleBasedCollator.COMMON_TOP_2_;
+	    } 
+        else {
+	        low = RuleBasedCollator.BYTE_COMMON_ << 24; //0x05000000;
+	        high = 0x40000000;
+	        count = 0x40 - RuleBasedCollator.BYTE_COMMON_;
+	    }
+	
+	    if (token.m_next_ != null && token.m_next_.m_strength_ == strength) {
+	        count = token.m_next_.m_toInsert_;
+	    } 
+	
+	    g.m_rangesLength_ = allocateWeights(low, high, count, maxbyte, 
+                                            g.m_ranges_);
+	    g.m_current_ = RuleBasedCollator.BYTE_COMMON_ << 24;
+	
+	    if (g.m_rangesLength_ == 0) {
+	        throw new Exception("Internal program error");
+	    }
+	    return g.m_current_;
+	}
+
+    /**
+     * Combines 2 ce into one with respect to the argument strength
+     * @param ce1 first ce
+     * @param ce2 second ce
+     * @param strength strength to use
+     * @return combined ce
+     */
+    private static int mergeCE(int ce1, int ce2, int strength) 
+    {
+        int mask = RuleBasedCollator.CE_TERTIARY_MASK_;
+        if (strength == Collator.SECONDARY) {
+            mask = RuleBasedCollator.CE_SECONDARY_MASK_;
+        }
+        else if (strength == Collator.PRIMARY) {
+            mask = RuleBasedCollator.CE_PRIMARY_MASK_;
+        }
+        ce1 &= mask;
+        ce2 &= mask;
+        switch (strength) 
+        {
+            case Collator.PRIMARY:
+                return ce1 | ce2 >>> 16;
+            case Collator.SECONDARY:
+                return ce1 << 16 | ce2 << 8;
+            default:
+                return ce1 << 24 | ce2 << 16;
+        }
+    }
+    
+    /**
+     * @param g CEGenerator
+     * @param lows low gap array
+     * @param highs high gap array
+     * @param token rule token
+     * @param fstrength 
+     * @exception Exception thrown when internal error occurs
+     */
+    private int getCEGenerator(CEGenerator g, int lows[], int highs[], 
+                               CollationRuleParser.Token token, int fstrength) 
+                               throws Exception
+    {
+	    int strength = token.m_strength_;
+	    int low = lows[fstrength * 3 + strength];
+	    int high = highs[fstrength * 3 + strength];
+	    int maxbyte = (strength == Collator.TERTIARY) ? 0x3F : 0xFF;
+	
+	    int count = token.m_toInsert_;
+	
+	    if (Utility.compareUnsigned(low, high) >= 0 
+            && strength > Collator.PRIMARY) {
+	        int s = strength;
+	        while (true) {
+		        s --;
+		        if (lows[fstrength * 3 + s] != highs[fstrength * 3 + s]) {
+		            if (strength == Collator.SECONDARY) {
+		                low = RuleBasedCollator.COMMON_TOP_2_ << 24;
+		                high = 0xFFFFFFFF;
+		            } 
+                    else {
+		                // low = 0x02000000; 
+                        // This needs to be checked - what if low is
+		                // not good...
+		                high = 0x40000000;
+		            }
+		            break;
+		        }
+		        if (s < 0) {
+		            throw new Exception("Internal program error");
+		        }
+	        }
+	    } 
+	    if (low == 0) {
+	        low = 0x01000000;
+	    }
+	    if (strength == Collator.SECONDARY) { // similar as simple 
+	        if (Utility.compareUnsigned(low, 
+                                 RuleBasedCollator.COMMON_BOTTOM_2_ << 24) >= 0
+                && Utility.compareUnsigned(low, 
+                                 RuleBasedCollator.COMMON_TOP_2_ << 24) < 0) {
+	            low = RuleBasedCollator.COMMON_TOP_2_ << 24;
+            }
+	        if (Utility.compareUnsigned(high, 
+                                  RuleBasedCollator.COMMON_BOTTOM_2_ << 24) > 0 
+                && Utility.compareUnsigned(high, 
+                                  RuleBasedCollator.COMMON_TOP_2_ << 24) < 0) {
+	            high = RuleBasedCollator.COMMON_TOP_2_ << 24;
+	        } 
+	        if (Utility.compareUnsigned(low, 
+                               RuleBasedCollator.COMMON_BOTTOM_2_ << 24) < 0) {
+	            g.m_rangesLength_ = allocateWeights(
+                                         RuleBasedCollator.COMMON_TOP_2_ << 24, 
+                                         high, count, maxbyte, g.m_ranges_);
+	            g.m_current_ = RuleBasedCollator.COMMON_BOTTOM_2_;
+	            return g.m_current_;
+	        }
+	    } 
+	
+	    g.m_rangesLength_ = allocateWeights(low, high, count, maxbyte, 
+                                            g.m_ranges_);
+	    if (g.m_rangesLength_ == 0) {
+	        throw new Exception("Internal program error");
+	    }
+	    g.m_current_ = nextWeight(g);
+	    return g.m_current_;
+	}
+
+    /**
+     * @param ceparts list of collation elements parts
+     * @param token rule token
+     */
+    private void doCE(int ceparts[], CollationRuleParser.Token token) 
+    {
+        // this one makes the table and stuff
+	    int noofbytes[] = new int[3];
+	    for (int i = 0; i < 3; i ++) {
+	        noofbytes[i] = countBytes(ceparts[i]);
+	    }
+	
+	    // Here we have to pack CEs from parts
+	    int cei = 0;
+	    int value = 0;
+	
+	    while ((cei << 1) < noofbytes[0] || cei < noofbytes[1] 
+               || cei <noofbytes[2]) {
+	        if (cei > 0) {
+	            value = RuleBasedCollator.CE_CONTINUATION_MARKER_;
+		    } else {
+		        value = 0;
+		    }
+		
+		    if ((cei << 1) < noofbytes[0]) {
+		        value |= ((ceparts[0] >> (32 - ((cei + 1) << 4))) & 0xFFFF) 
+                                                                        << 16;
+		    }
+		    if (cei < noofbytes[1]) {
+		        value |= ((ceparts[1] >> (32 - ((cei + 1) << 3))) & 0xFF) << 8;
+		    }
+		    if (cei < noofbytes[2]) {
+		        value |= ((ceparts[2] >> (32 - ((cei+1) << 3))) & 0x3F);
+		    }
+		    token.m_CE_[cei] = value;
+		    cei ++;
+		  }
+		  if (cei == 0) { // totally ignorable
+		      token.m_CELength_ = 1;
+		      token.m_CE_[0] = 0;
+		  } 
+          else { // there is at least something
+		      token.m_CELength_ = cei;
+		}
+	}
+
+    /**
+     * Count the number of non-zero bytes used in the ce
+     * @param ce 
+     * @return number of non-zero bytes used in ce
+     */
+    private static final int countBytes(int ce)   
+    {                               
+	    int mask = 0xFFFFFFFF;   
+	    int result = 0;              
+	    while (mask != 0) {            
+	        if ((ce & mask) != 0) { 
+	            result ++;            
+	        }                           
+	        mask >>>= 8;                 
+	    }   
+        return result;                          
+	}
+	
+	/**
+	 * We are ready to create collation elements
+	 * @param t build table to insert
+	 * @param lh rule token list header
+	 * @exception Exception thrown when internal program error occurs
+	 */
+	private void createElements(BuildTable t, 
+	                            CollationRuleParser.TokenListHeader lh) 
+	                            throws Exception
+    {
+	    CollationRuleParser.Token tok = lh.m_first_;
+	    Elements el = new Elements();
+	    while (tok != null) {
+	    	// first, check if there are any expansions
+	    	// if there are expansions, we need to do a little bit more 
+	    	// processing since parts of expansion can be tailored, while 
+	    	// others are not
+	    	if (tok.m_expansion_ != 0) {
+	            int len = tok.m_expansion_ >>> 24;
+	            int currentSequenceLen = len;
+	            int expOffset = tok.m_expansion_ & 0x00FFFFFF;
+	            CollationRuleParser.Token exp 
+	                                         = new CollationRuleParser.Token();
+	            exp.m_source_ = currentSequenceLen | expOffset;
+	            exp.m_rules_ = m_parser_.m_source_;
+	
+	            while (len > 0) {
+			        currentSequenceLen = len;
+			        while (currentSequenceLen > 0) {
+			            exp.m_source_ = (currentSequenceLen << 24) | expOffset;
+			            CollationRuleParser.Token expt = 
+			                                   (CollationRuleParser.Token)
+			                                   m_parser_.m_hashTable_.get(exp);
+			            if (expt != null 
+			                && expt.m_strength_ 
+			                   != CollationRuleParser.TOKEN_RESET_) { 
+			                // expansion is tailored
+			                int noOfCEsToCopy = expt.m_CELength_;
+			                for (int j = 0; j < noOfCEsToCopy; j ++) {
+			                    tok.m_expCE_[tok.m_expCELength_ + j] 
+			                                                   = expt.m_CE_[j];
+			                 }
+			                 tok.m_expCELength_ += noOfCEsToCopy;
+			                 // never try to add codepoints and CEs.
+			                 // For some odd reason, it won't work.
+			                 expOffset += currentSequenceLen; //noOfCEsToCopy;
+			                 len -= currentSequenceLen; //noOfCEsToCopy;
+			                 break;
+			             } 
+			             else {
+			                 currentSequenceLen --;
+			             }
+			        }
+	                if (currentSequenceLen == 0) { 
+	                    // couldn't find any tailored subsequence, will have to 
+	                    // get one from UCA. first, get the UChars from the 
+	                    // rules then pick CEs out until there is no more and 
+	                    // stuff them into expansion
+	                    m_utilColEIter_.setText(m_parser_.m_source_.substring(
+	                                                expOffset, expOffset + 1));
+	                    while (true) {
+	                        int order = m_utilColEIter_.next();
+	                        if (order == CollationElementIterator.NULLORDER) {
+	                            break;
+	                        }
+	                        tok.m_expCE_[tok.m_expCELength_ ++] = order;
+	                    }
+	                    expOffset ++;
+	                    len --;
+	                }
+	            }
+	        } 
+	        else {
+	            tok.m_expCELength_ = 0;
+	        }
+	
+	        // set the ucaelement with obtained values
+	        el.m_CEs_ = new int[tok.m_CELength_ + tok.m_expCELength_];
+	        // copy CEs
+	        System.arraycopy(tok.m_CE_, 0, el.m_CEs_, 0, tok.m_CELength_);
+	        System.arraycopy(tok.m_expCE_, 0, el.m_CEs_, tok.m_CELength_, 
+                             tok.m_expCELength_);
+	
+	        // copy UChars 
+	        // We kept prefix and source kind of together, as it is a kind of a 
+	        // contraction. 
+	        // However, now we have to slice the prefix off the main thing - 
+	        el.m_prefix_ = 0;// el.m_prefixChars_;
+	        el.m_cPointsOffset_ = 0; //el.m_uchars_;
+	        if (tok.m_prefix_ != 0) { 
+	        	// we will just copy the prefix here, and adjust accordingly in 
+	        	// the addPrefix function in ucol_elm. The reason is that we 
+	        	// need to add both composed AND decomposed elements to the 
+	        	// unsafe table.
+		        int size = tok.m_prefix_ >> 24;
+		        int offset = tok.m_prefix_ & 0x00FFFFFF;
+		        el.m_prefixChars_ = m_parser_.m_source_.substring(offset, 
+		                                                       offset + size);
+		        size = (tok.m_source_ >> 24) - (tok.m_prefix_ >> 24); 
+		        offset = (tok.m_source_ & 0x00FFFFFF) + (tok.m_prefix_ >> 24);
+		        el.m_uchars_ = m_parser_.m_source_.substring(offset, 
+		                                                     offset + size);
+		    } 
+		    else {
+	            el.m_prefixChars_ = null;
+	            int offset = tok.m_source_ & 0x00FFFFFF;
+	            int size = tok.m_source_ >>> 24;
+	            el.m_uchars_ = m_parser_.m_source_.substring(offset, 
+	                                                         offset + size);
+	        }
+	        el.m_cPoints_ = el.m_uchars_;
+	        el.m_isThai_ = CollationElementIterator.isThaiPreVowel(
+	                                                  el.m_cPoints_.charAt(0));
+	        for (int i = 0; i < el.m_cPoints_.length() - el.m_cPointsOffset_; 
+	             i ++) {
+		         if (isJamo(el.m_cPoints_.charAt(i))) {
+		             t.m_collator_.m_isJamoSpecial_ = true;
+		             break;
+		        }
+		    }
+	
+	        // Case bits handling 
+	        el.m_CEs_[0] &= 0xFFFFFF3F; // Clean the case bits field
+	        if (el.m_cPoints_.length() - el.m_cPointsOffset_ > 1) {
+	            // Do it manually
+	            el.m_CEs_[0] |= getCaseBits(el.m_cPoints_);
+	        } 
+	        else {
+	            // Copy it from the UCA
+	            int caseCE = getFirstCE(el.m_cPoints_.charAt(0));
+	            el.m_CEs_[0] |= (caseCE & 0xC0);
+	        }
+	
+	        // and then, add it
+	        addAnElement(t, el);
+	        tok = tok.m_next_;
+	    }   
+	}
+	
+	/**
+	 * Testing if the string argument has case
+	 * @param src string
+	 * @return the case for this char array
+	 * @exception Exception thrown when internal program error occurs
+	 */
+	private final int getCaseBits(String src) throws Exception
+	{
+		int uCount = 0; 
+		int lCount = 0;
+		src = Normalizer.decompose(src, true);
+		m_utilColEIter_.setText(src);
+		for (int i = 0; i < src.length(); i++) {
+			m_utilColEIter_.setText(src.substring(i, i + 1));
+		    int order = m_utilColEIter_.next();
+		    if (RuleBasedCollator.isContinuation(order)) {
+		        throw new Exception("Internal program error");
+		    }
+		    if ((order & RuleBasedCollator.CE_CASE_BIT_MASK_)
+		                                                  == UPPER_CASE_) {
+		        uCount ++;
+		    } 
+		    else {
+		    	char ch = src.charAt(i);
+		        if (UCharacter.isLowerCase(ch)) {
+		            lCount ++;
+		        } 
+		        else {
+		            if (toSmallKana(ch) == ch && toLargeKana(ch) != ch) {
+		                lCount ++;
+		            }
+		        }
+		    }
+		}
+		
+		if (uCount != 0 && lCount != 0) {
+		    return MIXED_CASE_;
+		} 
+		else if (uCount != 0) {
+		    return UPPER_CASE_;
+		} 
+		else {
+		    return LOWER_CASE_;
+		}
+	}
+	
+	/**
+	 * Converts a char to the uppercase Kana
+	 * @param ch character to convert
+	 * @return the converted Kana character
+	 */
+	private static final char toLargeKana(char ch) 
+	{
+	    if (0x3042 < ch && ch < 0x30ef) { // Kana range 
+	        switch (ch - 0x3000) {
+	            case 0x41: 
+	            case 0x43: 
+	            case 0x45: 
+	            case 0x47: 
+	            case 0x49: 
+	            case 0x63: 
+	            case 0x83: 
+	            case 0x85: 
+	            case 0x8E:
+	            case 0xA1: 
+	            case 0xA3: 
+	            case 0xA5: 
+	            case 0xA7: 
+	            case 0xA9: 
+	            case 0xC3: 
+	            case 0xE3: 
+	            case 0xE5: 
+	            case 0xEE:
+	                ch ++;
+	            break;
+	        case 0xF5:
+	            ch = 0x30AB;
+	            break;
+	        case 0xF6:
+	            ch = 0x30B1;
+	            break;
+	        }
+	    }
+	    return ch;
+	}
+	
+	/**
+	 * Converts a char to the lowercase Kana
+	 * @param ch character to convert
+	 * @return the converted Kana character
+	 */
+	private static final char toSmallKana(char ch) 
+	{
+	    if (0x3042 < ch && ch < 0x30ef) { // Kana range
+	        switch (ch - 0x3000) {
+	            case 0x42: 
+	            case 0x44: 
+	            case 0x46: 
+	            case 0x48: 
+	            case 0x4A: 
+	            case 0x64: 
+	            case 0x84: 
+	            case 0x86: 
+	            case 0x8F:
+	            case 0xA2: 
+	            case 0xA4: 
+	            case 0xA6: 
+	            case 0xA8: 
+	            case 0xAA: 
+	            case 0xC4: 
+	            case 0xE4: 
+	            case 0xE6: 
+	            case 0xEF:
+	                ch --;
+	                break;
+	            case 0xAB:
+	                ch = 0x30F5;
+	                break;
+	            case 0xB1:
+	                ch = 0x30F6;
+	                break;
+	        }
+	    }
+	    return ch;
+	}
+
+    /**
+     * This should be connected to special Jamo handling.
+     */
+    private final int getFirstCE(char ch) 
+    {
+    	m_utilColEIter_.setText(UCharacter.toString(ch));
+	    return m_utilColEIter_.next();
+	}
+	
+	/** 
+	 * This adds a read element, while testing for existence 
+	 * @param t build table
+	 * @param element 
+	 * @return ce
+	 */
+    private static int addAnElement(BuildTable t, Elements element) 
+    {
+  		Vector expansions = t.m_expansions_;
+        if (element.m_CEs_.length == 1) {
+	    	if (element.m_isThai_ == false) {
+	            element.m_mapCE_ = element.m_CEs_[0];
+	        } 
+	        else { // add thai - totally bad here
+                // omitted the expansion offset here for the builder
+                // (HEADER_SIZE_ >> 2)
+	            int expansion = RuleBasedCollator.CE_SPECIAL_FLAG_ 
+	                        | (CE_THAI_TAG_ << RuleBasedCollator.CE_TAG_SHIFT_) 
+	                        | (addExpansion(expansions, element.m_CEs_[0])
+	                           << 4) 
+	                        | 0x1;
+	            element.m_mapCE_ = expansion;
+	        }
+	    } 
+	    else {     
+	        // unfortunately, it looks like we have to look for a long primary 
+	        // here since in canonical closure we are going to hit some long 
+	        // primaries from the first phase, and they will come back as 
+	        // continuations/expansions destroying the effect of the previous 
+	        // opitimization. A long primary is a three byte primary with 
+	        // starting secondaries and tertiaries. It can appear in long runs 
+	        // of only primary differences (like east Asian tailorings) also, 
+	        // it should not be an expansion, as expansions would break with 
+	        // this
+	        if (element.m_CEs_.length == 2 // a two CE expansion 
+	            && RuleBasedCollator.isContinuation(element.m_CEs_[1]) 
+	            && (element.m_CEs_[1] 
+	             & (~(0xFF << 24 | RuleBasedCollator.CE_CONTINUATION_MARKER_))) 
+	                            == 0 // that has only primaries in continuation
+	            && (((element.m_CEs_[0] >> 8) & 0xFF) 
+	                                         == RuleBasedCollator.BYTE_COMMON_) 
+	            // a common secondary
+	            && ((element.m_CEs_[0] & 0xFF) 
+	                == RuleBasedCollator.BYTE_COMMON_) // and a common tertiary
+	            ) {
+	            element.m_mapCE_ = RuleBasedCollator.CE_SPECIAL_FLAG_ 
+	                               // a long primary special
+	                               | (CE_LONG_PRIMARY_TAG_ << 24) 
+	                               // first and second byte of primary
+	                               | ((element.m_CEs_[0] >> 8) & 0xFFFF00) 
+	                               // third byte of primary
+	                               | ((element.m_CEs_[1] >> 24) & 0xFF);   
+	        } 
+	        else {
+                // omitting expansion offset in builder
+                // (HEADER_SIZE_ >> 2)
+	            int expansion = RuleBasedCollator.CE_SPECIAL_FLAG_ 
+	                        | (CE_EXPANSION_TAG_ 
+	                                      << RuleBasedCollator.CE_TAG_SHIFT_) 
+	                        | (addExpansion(expansions, element.m_CEs_[0])
+                                << 4) & 0xFFFFF0;
+	
+	            for (int i = 1; i < element.m_CEs_.length; i ++) {
+	                 addExpansion(expansions, element.m_CEs_[i]);
+	            }
+			    if (element.m_CEs_.length <= 0xF) {
+			        expansion |= element.m_CEs_.length;
+			    } 
+			    else {
+			        addExpansion(expansions, 0);
+			    }
+			    element.m_mapCE_ = expansion;
+			    setMaxExpansion(element.m_CEs_[element.m_CEs_.length - 1],
+			                    (byte)element.m_CEs_.length, 
+			                    t.m_maxExpansions_);
+			    if (isJamo(element.m_cPoints_.charAt(0))){
+			        t.m_collator_.m_isJamoSpecial_ = true;
+			        setMaxJamoExpansion(element.m_cPoints_.charAt(0),
+			                            element.m_CEs_[element.m_CEs_.length 
+                                                                          - 1],
+			                            (byte)element.m_CEs_.length,
+			                            t.m_maxJamoExpansions_);
+			    }
+		    }
+	    }
+	
+	    // here we want to add the prefix structure.
+	    // I will try to process it as a reverse contraction, if possible.
+	    // prefix buffer is already reversed.
+	
+	    if (element.m_prefixChars_ != null &&
+            element.m_prefixChars_.length() - element.m_prefix_ > 0) {
+		    // We keep the seen prefix starter elements in a hashtable we need 
+            // it to be able to distinguish between the simple codepoints and 
+            // prefix starters. Also, we need to use it for canonical closure.
+		    Elements composed = new Elements(element);
+		    composed.m_prefix_ = 0;
+		    composed.m_uchars_ = Normalizer.compose(element.m_prefixChars_, 
+                                                    false);
+            composed.m_cPoints_ = composed.m_uchars_;                         
+            composed.m_cPointsOffset_ = 0;
+		    if (t.m_prefixLookup_ != null) {
+		        Elements uCE = (Elements)t.m_prefixLookup_.get(element);
+		        if (uCE != null) { 
+                    // there is already a set of code points here
+		            element.m_mapCE_ = addPrefix(t, uCE.m_mapCE_, element);
+		        } 
+                else { // no code points, so this spot is clean
+		            element.m_mapCE_ = addPrefix(t, CE_NOT_FOUND_, element);
+		            uCE = new Elements(element);
+		            uCE.m_cPoints_ = uCE.m_uchars_;
+		            t.m_prefixLookup_.put(uCE, uCE);
+		        }
+		        if (composed.m_prefixChars_.length() 
+                        != element.m_prefixChars_.length() - element.m_prefix_
+                    || !composed.m_prefixChars_.regionMatches(0,
+                                    element.m_prefixChars_, element.m_prefix_,
+                                    composed.m_prefixChars_.length())) {
+		            // do it!
+		            composed.m_mapCE_ = addPrefix(t, element.m_mapCE_, 
+                                                  composed);
+		        }
+		    }
+	    }
+	
+	    // We need to use the canonical iterator here
+	    // the way we do it is to generate the canonically equivalent strings 
+	    // for the contraction and then add the sequences that pass FCD check
+	    if (element.m_cPoints_.length() - element.m_cPointsOffset_ > 1 
+	        && !(element.m_cPoints_.length() - element.m_cPointsOffset_ == 2 
+            && UTF16.isLeadSurrogate(element.m_cPoints_.charAt(0)) 
+            && UTF16.isTrailSurrogate(element.m_cPoints_.charAt(1)))) { 
+            // this is a contraction, we should check whether a composed form 
+            // should also be included
+	        CanonicalIterator it = new CanonicalIterator(element.m_cPoints_);
+		    String source = it.next();
+		    while (source != null && source.length() > 0) {
+		        if (Normalizer.quickCheck(source, Normalizer.FCD) 
+                    != Normalizer.NO) {
+		            element.m_uchars_ = source;
+		            element.m_cPoints_ = element.m_uchars_;
+		            finalizeAddition(t, element);
+		        }
+		        source = it.next();
+		    }
+		
+		    return element.m_mapCE_;
+		} 
+        else {
+		    return finalizeAddition(t, element);  
+		}
+	}
+
+    /**
+     * Pads the argument value to a count of 4
+     * @param something value to pad
+     * @return padded something
+     */
+    private static final int paddedsize(int something) 
+    {
+    	return something + ((something % 4) != 0 ? 4 - (something % 4) : 0);
+    }    
+    
+    /**
+     * Adds an expansion ce to the expansion vector
+     * @param expansions vector to add to
+     * @param value of the expansion
+     * @return the current position of the new element
+     */
+    private static final int addExpansion(Vector expansions, int value) 
+    {
+	    expansions.add(new Integer(value));
+	    return expansions.size() - 1;
+	}
+	
+	/**
+ 	 * Looks for the maximum length of all expansion sequences ending with the 
+ 	 * same collation element. The size required for maxexpansion and maxsize 
+ 	 * is returned if the arrays are too small.
+	 * @param endexpansion the last expansion collation element to be added
+	 * @param expansionsize size of the expansion
+	 * @param maxexpansion data structure to store the maximum expansion data.
+	 * @returns size of the maxexpansion and maxsize used.
+	 */
+	private static int setMaxExpansion(int endexpansion, byte expansionsize,
+	                                   MaxExpansionTable maxexpansion)
+	{
+	    int start = 0;
+	    int limit = maxexpansion.m_endExpansionCE_.size();
+        long unsigned = (long)endexpansion;
+        unsigned &= 0xFFFFFFFFl;
+	
+	    // using binary search to determine if last expansion element is 
+	    // already in the array 
+	    int result = -1;
+	    while (start < limit - 1) {                                                
+	        int mid = start + ((limit - start) >> 1);                                    
+            long unsignedce = ((Integer)maxexpansion.m_endExpansionCE_.get(
+                                                            mid)).intValue(); 
+            unsignedce &= 0xFFFFFFFFl;
+	        if (unsigned <= unsignedce) {                                                   
+	            limit = mid;                                                           
+		    }                                                                        
+		    else {                                                                   
+		      start = mid;                                                           
+		    }                                                                        
+	    } 
+	      
+	    if (((Integer)maxexpansion.m_endExpansionCE_.get(start)).intValue() 
+	                                                         == endexpansion) {                                                     
+	        result = start;  
+	    }                                                                          
+	    else if (((Integer)maxexpansion.m_endExpansionCE_.get(limit)).intValue() 
+	                                                         == endexpansion) {                                                     
+	            result = limit;      
+	    }                                            
+	    if (result > -1) {
+	        // found the ce in expansion, we'll just modify the size if it 
+	        // is smaller
+	        Object currentsize = maxexpansion.m_expansionCESize_.get(result);
+		    if (((Byte)currentsize).byteValue() < expansionsize) {
+		        maxexpansion.m_expansionCESize_.set(result, 
+		                                          new Byte(expansionsize));
+		    }
+	    }
+	    else {
+		    // we'll need to squeeze the value into the array. initial 
+		    // implementation. shifting the subarray down by 1
+		    maxexpansion.m_endExpansionCE_.insertElementAt(
+		                                           new Integer(endexpansion),
+		                                           start + 1);
+		    maxexpansion.m_expansionCESize_.insertElementAt(
+		                                           new Byte(expansionsize),
+		                                           start + 1);
+	    }
+	    return maxexpansion.m_endExpansionCE_.size();
+	}
+	
+	/**
+ 	 * Sets the maximum length of all jamo expansion sequences ending with the 
+ 	 * same collation element. The size required for maxexpansion and maxsize 
+ 	 * is returned if the arrays are too small.
+	 * @param ch the jamo codepoint
+	 * @param endexpansion the last expansion collation element to be added
+	 * @param expansionsize size of the expansion
+	 * @param maxexpansion data structure to store the maximum expansion data.
+	 * @returns size of the maxexpansion and maxsize used.
+	 */
+	private static int setMaxJamoExpansion(char ch, int endexpansion,
+	                                       byte expansionsize,
+	                                       MaxJamoExpansionTable maxexpansion)
+	{
+	    boolean isV = true;
+	    if (ch >= 0x1100 && ch <= 0x1112) {
+	        // determines L for Jamo, doesn't need to store this since it is 
+	        // never at the end of a expansion
+	        if (maxexpansion.m_maxLSize_ < expansionsize) {
+	            maxexpansion.m_maxLSize_ = expansionsize;
+	        }
+	        return maxexpansion.m_endExpansionCE_.size();
+	    }
+	
+	    if (ch >= 0x1161 && ch <= 0x1175) {
+	        // determines V for Jamo
+	        if (maxexpansion.m_maxVSize_ < expansionsize) {
+	            maxexpansion.m_maxVSize_ = expansionsize;
+	        }
+	    }
+	
+	    if (ch >= 0x11A8 && ch <= 0x11C2) {
+	        isV = false;
+	        // determines T for Jamo
+	        if (maxexpansion.m_maxTSize_ < expansionsize) {
+	            maxexpansion.m_maxTSize_ = expansionsize;
+	        }
+	    }
+
+        int pos = maxexpansion.m_endExpansionCE_.size();	
+		while (pos > 0) {
+		    pos --;
+		    if (((Integer)maxexpansion.m_endExpansionCE_.get(pos)).intValue() 
+		                                                    == endexpansion) {
+		        return maxexpansion.m_endExpansionCE_.size();
+		    }
+		}
+		maxexpansion.m_endExpansionCE_.add(new Integer(endexpansion));
+		maxexpansion.m_isV_.add(new Boolean(isV));
+		  
+		return maxexpansion.m_endExpansionCE_.size();
+	}
+	
+	/**
+	 * Adds a prefix to the table
+	 * @param t build table to update
+	 * @param CE collation element to add
+	 * @param element rule element to add
+	 * @return modified ce
+	 */
+	private static int addPrefix(BuildTable t, int CE, Elements element) 
+	{
+	    // currently the longest prefix we're supporting in Japanese is two 
+	    // characters long. Although this table could quite easily mimic 
+	    // complete contraction stuff there is no good reason to make a general 
+	    // solution, as it would require some error prone messing.
+	    ContractionTable contractions = t.m_contractions_;
+	    String oldCP = element.m_cPoints_;
+	    int oldCPOffset = element.m_cPointsOffset_;
+	    
+	    contractions.m_currentTag_ = CE_SPEC_PROC_TAG_;
+	    // here, we will normalize & add prefix to the table.
+	    int size = element.m_prefixChars_.length() - element.m_prefix_;
+	    for (int j = 1; j < size; j ++) {   
+	        // First add NFD prefix chars to unsafe CP hash table 
+	        // Unless it is a trail surrogate, which is handled algoritmically 
+	        // and shouldn't take up space in the table.
+	        char ch = element.m_prefixChars_.charAt(j + element.m_prefix_);
+	        if (!UTF16.isTrailSurrogate(ch)) {
+	            unsafeCPSet(t.m_unsafeCP_, ch);
+	        }
+	    }
+	    
+	    StringBuffer reversed = new StringBuffer();
+	    for (int j = 0; j < size; j ++) { 
+	    	// prefixes are going to be looked up backwards
+	        // therefore, we will promptly reverse the prefix buffer...
+	        int offset = element.m_prefixChars_.length() - j - 1;
+	        reversed.append(element.m_prefixChars_.charAt(offset));
+	    }
+	    element.m_prefixChars_ = reversed.toString();
+	    element.m_prefix_ = 0;
+	
+	    // the first codepoint is also unsafe, as it forms a 'contraction' with 
+	    // the prefix
+	    if (!UTF16.isTrailSurrogate(element.m_cPoints_.charAt(0))) {
+	        unsafeCPSet(t.m_unsafeCP_, element.m_cPoints_.charAt(0));
+	    }
+		
+	    element.m_cPoints_ = element.m_prefixChars_;
+	    element.m_cPointsOffset_ = element.m_prefix_;
+	
+	    // Add the last char of the contraction to the contraction-end hash 
+	    // table. unless it is a trail surrogate, which is handled 
+	    // algorithmically and shouldn't be in the table
+	    if (!UTF16.isTrailSurrogate(
+	            element.m_cPoints_.charAt(element.m_cPoints_.length() - 1))) {
+	        ContrEndCPSet(t.m_contrEndCP_, element.m_cPoints_.charAt(
+	                                         element.m_cPoints_.length() - 1));
+	    }
+	    // First we need to check if contractions starts with a surrogate
+	    // int cp = UTF16.charAt(element.m_cPoints_, element.m_cPointsOffset_);
+	
+	    // If there are any Jamos in the contraction, we should turn on special 
+	    // processing for Jamos
+	    if (isJamo(element.m_prefixChars_.charAt(element.m_prefix_))) {
+	        t.m_collator_.m_isJamoSpecial_ = true;
+	    }
+	    // then we need to deal with it 
+	    // we could aready have something in table - or we might not 
+	    if (!isPrefix(CE)) { 
+	        // if it wasn't contraction, we wouldn't end up here
+	        int firstContractionOffset = addContraction(contractions, 
+                                                 CONTRACTION_TABLE_NEW_ELEMENT_, 
+	                                                    (char)0, CE);
+	        int newCE = processContraction(contractions, element, 
+	                                       CE_NOT_FOUND_);
+	        addContraction(contractions, firstContractionOffset, 
+                           element.m_prefixChars_.charAt(element.m_prefix_), 
+                           newCE);
+	        addContraction(contractions, firstContractionOffset, (char)0xFFFF, 
+    	                   CE);
+	        CE = constructSpecialCE(CE_SPEC_PROC_TAG_, firstContractionOffset);
+	    } 
+	    else { 
+	        // we are adding to existing contraction 
+	        // there were already some elements in the table, so we need to add 
+	        // a new contraction 
+	        // Two things can happen here: either the codepoint is already in 
+	        // the table, or it is not
+	        char ch = element.m_prefixChars_.charAt(element.m_prefix_);
+	        int position = findCP(contractions, CE, ch);
+	        if (position > 0) {       
+	            // if it is we just continue down the chain 
+	            int eCE = getCE(contractions, CE, position);
+	            int newCE = processContraction(contractions, element, eCE);
+	            setContraction(contractions, CE, position, ch, newCE);
+	        } 
+	        else {                  
+	            // if it isn't, we will have to create a new sequence 
+	            processContraction(contractions, element, CE_NOT_FOUND_);
+	            insertContraction(contractions, CE, ch, element.m_mapCE_);
+	        }
+	    }
+	
+	    element.m_cPoints_ = oldCP;
+	    element.m_cPointsOffset_ = oldCPOffset;
+	
+	    return CE;
+	}
+	
+	/**
+	 * Checks if the argument ce is a contraction
+	 * @param CE collation element
+	 * @return true if argument ce is a contraction
+	 */
+	private static final boolean isContraction(int CE) 
+	{
+		return isSpecial(CE) && (getCETag(CE) == CE_CONTRACTION_TAG_);
+	}
+	
+	/**
+	 * Checks if the argument ce has a prefix
+	 * @param CE collation element
+	 * @return true if argument ce has a prefix
+	 */
+	private static final boolean isPrefix(int CE) 
+	{
+		return isSpecial(CE) && (getCETag(CE) == CE_SPEC_PROC_TAG_);
+	}
+	
+	/**
+	 * Checks if the argument ce is special
+	 * @param CE collation element
+	 * @return true if argument ce is special
+	 */
+	private static final boolean isSpecial(int CE) 
+	{
+		return (CE & RuleBasedCollator.CE_SPECIAL_FLAG_) == 0xF0000000;
+	}
+	
+	/**
+	 * Checks if the argument ce has a prefix
+	 * @param CE collation element
+	 * @return true if argument ce has a prefix
+	 */
+	private static final int getCETag(int CE) 
+	{
+	    return (CE & RuleBasedCollator.CE_TAG_MASK_) >>> 
+	           RuleBasedCollator.CE_TAG_SHIFT_;
+	}
+	
+	/**
+	 * Gets the ce at position in contraction table
+	 * @param table contraction table
+	 * @param position offset to the contraction table
+	 * @return ce
+	 */
+	private static final int getCE(ContractionTable table, int element, 
+	                               int position) 
+	{
+		element &= 0xFFFFFF;
+        BasicContractionTable tbl = null;
+
+        if (element == 0xFFFFFF || table.m_elements_.get(element) == null) {
+            tbl = null;
+        } 
+        else {
+        	tbl = (BasicContractionTable)table.m_elements_.get(element);
+        }	
+        
+    	if (tbl == null) {
+            return CE_NOT_FOUND_;
+        }
+		if (position > tbl.m_CEs_.size() || position == -1) {
+		    return CE_NOT_FOUND_;
+		} 
+		else {
+		    return ((Integer)tbl.m_CEs_.get(position)).intValue();
+		}
+	}
+	
+	/**
+	 * Sets the unsafe character
+	 * @param table unsafe table
+	 * @param c character to be added
+	 */
+	private static final void unsafeCPSet(byte table[], char c) 
+	{
+	    int hash = c;
+	    if (hash >= (UNSAFECP_TABLE_SIZE_ << 3)) {
+	        if (hash >= 0xd800 && hash <= 0xf8ff) {
+	            // Part of a surrogate, or in private use area. 
+	            // These don't go in the table                            
+	            return;
+	        }
+	        hash = (hash & UNSAFECP_TABLE_MASK_) + 256;
+	    }
+	    table[hash >> 3] |= (1 << (hash & 7));
+	}
+	
+	/**
+	 * Sets the contraction end character
+	 * @param table contraction end table
+	 * @param c character to be added
+	 */
+	private static final void ContrEndCPSet(byte table[], char c) 
+	{
+	    int hash = c;
+	    if (hash >= (UNSAFECP_TABLE_SIZE_ << 3)) {
+	        hash = (hash & UNSAFECP_TABLE_MASK_) + 256;
+	    }
+	    table[hash >> 3] |= (1 << (hash & 7));
+	}
+	
+	/** 
+	 * Adds more contractions in table. If element is non existant, it creates 
+	 * on. Returns element handle 
+	 * @param table contraction table
+	 * @param element offset to the contraction table
+	 * @param codePoint codepoint to add
+	 * @param value
+	 * @return collation element
+	 */
+    private static int addContraction(ContractionTable table, int element, 
+                                      char codePoint, int value) 
+    {
+	    BasicContractionTable tbl = getBasicContractionTable(table, element);
+	    if (tbl == null) {
+	        tbl = addAContractionElement(table);
+	        element = table.m_elements_.size() - 1;
+	    } 
+	
+	    tbl.m_CEs_.add(new Integer(value));
+	    tbl.m_codePoints_.append(codePoint);
+	    return constructSpecialCE(table.m_currentTag_, element);
+	}
+
+    /**
+     * Adds a contraction element to the table
+     * @param table contraction table to update
+     * @return contraction 
+     */
+    private static BasicContractionTable addAContractionElement(
+                                                       ContractionTable table) 
+    {
+	    BasicContractionTable result = new BasicContractionTable();
+	    table.m_elements_.add(result);
+	    return result;
+	}
+
+    /**
+     * Constructs a special ce
+     * @param tag special tag
+     * @param ce 
+     * @return a contraction ce
+     */
+	private static final int constructSpecialCE(int tag, int CE) 
+	{
+		return RuleBasedCollator.CE_SPECIAL_FLAG_ 
+		        | (tag << RuleBasedCollator.CE_TAG_SHIFT_) | (CE & 0xFFFFFF);
+	}
+	
+	/**
+	 * Sets and inserts the element that has a contraction
+	 * @param contraction table 
+	 * @param element contracting element
+	 * @param existingCE
+	 * @return contraction ce
+	 */
+	private static int processContraction(ContractionTable contractions, 
+	                                      Elements element, 
+	                                      int existingCE) 
+    {
+	    int firstContractionOffset = 0;
+	    // end of recursion 
+	    if (element.m_cPoints_.length() - element.m_cPointsOffset_ == 1) {
+	        if (isContractionTableElement(existingCE) 
+	            && getCETag(existingCE) == contractions.m_currentTag_) {
+	            changeContraction(contractions, existingCE, (char)0, 
+	                              element.m_mapCE_);
+	            changeContraction(contractions, existingCE, (char)0xFFFF,
+                                  element.m_mapCE_);
+	            return existingCE;
+	        } 
+	        else {
+	        	// can't do just that. existingCe might be a contraction, 
+	        	// meaning that we need to do another step
+	            return element.m_mapCE_; 
+	        }
+	    }
+	
+	    // this recursion currently feeds on the only element we have... 
+	    // We will have to copy it in order to accomodate for both backward 
+	    // and forward cycles
+	    // we encountered either an empty space or a non-contraction element 
+	    // this means we are constructing a new contraction sequence 
+	    element.m_cPointsOffset_ ++;
+	    if (!isContractionTableElement(existingCE)) { 
+	        // if it wasn't contraction, we wouldn't end up here
+	        firstContractionOffset = addContraction(contractions, 
+	                                           CONTRACTION_TABLE_NEW_ELEMENT_, 
+	                                           (char)0, existingCE);
+	        int newCE = processContraction(contractions, element, 
+	                                       CE_NOT_FOUND_);
+	        addContraction(contractions, firstContractionOffset, 
+	                       element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+	                       newCE);
+	        addContraction(contractions, firstContractionOffset, 
+	                       (char)0xFFFF, existingCE);
+	        existingCE = constructSpecialCE(contractions.m_currentTag_, 
+	                                        firstContractionOffset);
+	    } 
+	    else { 
+	        // we are adding to existing contraction
+	        // there were already some elements in the table, so we need to add 
+	        // a new contraction 
+	        // Two things can happen here: either the codepoint is already in 
+	        // the table, or it is not
+	        int position = findCP(contractions, existingCE, 
+                          element.m_cPoints_.charAt(element.m_cPointsOffset_));
+	        if (position > 0) {       
+	            // if it is we just continue down the chain 
+	            int eCE = getCE(contractions, existingCE, position);
+	            int newCE = processContraction(contractions, element, eCE);
+	            setContraction(contractions, existingCE, position, 
+	                       element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+	                           newCE);
+	        } 
+	        else {  
+	            // if it isn't, we will have to create a new sequence 
+	            int newCE = processContraction(contractions, element, 
+	                                           CE_NOT_FOUND_);
+	            insertContraction(contractions, existingCE, 
+	                       element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+	                              newCE);
+	        }
+	    }
+	    element.m_cPointsOffset_ --;
+	    return existingCE;
+	}
+	
+	/**
+	 * Checks if CE belongs to the contraction table
+	 * @param CE collation element to test
+	 * @return true if CE belongs to the contraction table
+	 */
+	private static final boolean isContractionTableElement(int CE) 
+	{ 
+		return isSpecial(CE) 
+               && (getCETag(CE) == CE_CONTRACTION_TAG_
+		           || getCETag(CE) == CE_SPEC_PROC_TAG_);
+	}
+	
+	/**
+	 * Gets the codepoint 
+	 * @param table contraction table
+	 * @param element offset to the contraction element in the table
+	 * @param codePoint code point to look for
+	 * @return the offset to the code point
+	 */
+	private static int findCP(ContractionTable table, int element, 
+	                          char codePoint) 
+	{
+		BasicContractionTable tbl = getBasicContractionTable(table, element);
+		if (tbl == null) {
+	        return -1;
+	    }
+	
+	    int position = 0;
+	    while (codePoint > tbl.m_codePoints_.charAt(position)) {
+	         position ++;
+	         if (position > tbl.m_codePoints_.length()) {
+	             return -1;
+	         }
+	    }
+	    if (codePoint == tbl.m_codePoints_.charAt(position)) {
+	        return position;
+	    } 
+	    else {
+	        return -1;
+	    }
+    }
+
+    /**
+     * Gets the contraction element out of the contraction table
+     * @param table contraction table
+     * @param offset to the element in the contraction table
+     * @return basic contraction element at offset in the contraction table
+     */
+    private static final BasicContractionTable getBasicContractionTable(
+                                                     ContractionTable table,
+                                                     int offset) 
+    {
+    	offset &= 0xFFFFFF;
+    	if (offset == 0xFFFFFF) {
+    		return null;
+    	}
+	    return (BasicContractionTable)table.m_elements_.get(offset);
+    }
+    
+    /**
+     * Changes the contraction element
+     * @param table contraction table
+     * @param element offset to the element in the contraction table
+     * @param codePoint codepoint 
+     * @param newCE new collation element
+     * @return basic contraction element at offset in the contraction table
+     */
+    private static final int changeContraction(ContractionTable table, 
+                                               int element, char codePoint, 
+                                               int newCE) 
+    {
+	    BasicContractionTable tbl = getBasicContractionTable(table, element);	
+	    if (tbl == null) {
+	        return 0;
+	    }
+	    int position = 0;
+	    while (codePoint > tbl.m_codePoints_.charAt(position)) {
+	        position ++;
+	        if (position > tbl.m_codePoints_.length()) {
+	            return CE_NOT_FOUND_;
+	        }
+	    }
+	    if (codePoint == tbl.m_codePoints_.charAt(position)) {
+	        tbl.m_CEs_.set(position, new Integer(newCE));
+	        return element & 0xFFFFFF;
+	    } 
+	    else {
+	        return CE_NOT_FOUND_;
+	    }
+	}
+	
+	/** 
+	 * Sets a part of contraction sequence in table. If element is non 
+	 * existant, it creates on. Returns element handle.
+	 * @param table contraction table
+	 * @param element offset to the contraction table
+	 * @param offset
+	 * @param codePoint contraction character
+	 * @param value ce value
+	 * @return new contraction ce
+	 */
+    private static final int setContraction(ContractionTable table, 
+                                            int element, int offset, 
+                                            char codePoint, int value) 
+    {
+    	element &= 0xFFFFFF;
+	    BasicContractionTable tbl = getBasicContractionTable(table, element);	
+	    if (tbl == null) {
+	        tbl = addAContractionElement(table);
+	        element = table.m_elements_.size() - 1;
+	    }
+	
+	    tbl.m_CEs_.set(offset, new Integer(value));
+	    tbl.m_codePoints_.setCharAt(offset, codePoint);
+	    return constructSpecialCE(table.m_currentTag_, element);
+	}
+	
+	/** 
+	 * Inserts a part of contraction sequence in table. Sequences behind the 
+	 * offset are moved back. If element is non existent, it creates on. 
+	 * @param table contraction
+	 * @param element offset to the table contraction
+	 * @param codePoint code point
+	 * @param value collation element value
+	 * @return contraction collation element
+	 */
+    private static final int insertContraction(ContractionTable table, 
+                                               int element, char codePoint, 
+                                               int value) 
+    {
+	    element &= 0xFFFFFF;
+	    BasicContractionTable tbl = getBasicContractionTable(table, element);
+	    if (tbl == null) {
+	        tbl = addAContractionElement(table);
+	        element = table.m_elements_.size() - 1;
+	    }
+	
+	    int offset = 0;
+	    while (tbl.m_codePoints_.charAt(offset) < codePoint 
+	           && offset < tbl.m_codePoints_.length()) {
+	        offset ++;
+	    }
+	
+	    tbl.m_CEs_.insertElementAt(new Integer(value), offset);
+	    tbl.m_codePoints_.insert(offset, codePoint);
+	
+	    return constructSpecialCE(table.m_currentTag_, element);
+	}
+	
+	/**
+	 * Finalize addition
+	 * @param t build table
+	 * @param element to add
+	 */
+	private final static int finalizeAddition(BuildTable t, Elements element) 
+	{
+		int CE = CE_NOT_FOUND_;
+        // This should add a completely ignorable element to the  
+        // unsafe table, so that backward iteration will skip 
+        // over it when treating contractions. 
+        if (element.m_mapCE_ == 0) { 
+            for (int i = 0; i < element.m_cPoints_.length(); i ++) { 
+                char ch = element.m_cPoints_.charAt(i);
+                if (!UTF16.isTrailSurrogate(ch)) { 
+                    unsafeCPSet(t.m_unsafeCP_, ch); 
+                } 
+            } 
+        } 
+
+		if (element.m_cPoints_.length() - element.m_cPointsOffset_ > 1) { 
+		    // we're adding a contraction
+		    int cp = UTF16.charAt(element.m_cPoints_, element.m_cPointsOffset_);
+		    CE = t.m_mapping_.getValue(cp);
+		    CE = addContraction(t, CE, element);
+		} 
+		else { 
+		    // easy case
+		    CE = t.m_mapping_.getValue(element.m_cPoints_.charAt(
+		                                           element.m_cPointsOffset_));
+		
+		    if (CE != CE_NOT_FOUND_) {
+		        if(isContractionTableElement(CE)) { 
+		            // adding a non contraction element (thai, expansion, 
+		            // single) to already existing contraction 
+			        if (!isPrefix(element.m_mapCE_)) { 
+			        	// we cannot reenter prefix elements - as we are going 
+			        	// to create a dead loop
+			            // Only expansions and regular CEs can go here... 
+			            // Contractions will never happen in this place
+			            setContraction(t.m_contractions_, CE, 0, (char)0, 
+			                           element.m_mapCE_);
+			            // This loop has to change the CE at the end of 
+			            // contraction REDO!
+			            changeLastCE(t.m_contractions_, CE, element.m_mapCE_);
+			        }
+		        } 
+		        else {
+		            t.m_mapping_.setValue(element.m_cPoints_.charAt(
+		                                             element.m_cPointsOffset_), 
+		                                  element.m_mapCE_);
+		        }
+		    } 
+		    else {
+		        t.m_mapping_.setValue(element.m_cPoints_.charAt(
+                                                     element.m_cPointsOffset_), 
+                                      element.m_mapCE_);
+		    }
+		}
+		return CE;
+	}
+	
+	/** 
+	 * Note regarding surrogate handling: We are interested only in the single
+	 * or leading surrogates in a contraction. If a surrogate is somewhere else
+	 * in the contraction, it is going to be handled as a pair of code units,
+	 * as it doesn't affect the performance AND handling surrogates specially
+	 * would complicate code way too much.
+	 */
+	private static int addContraction(BuildTable t, int CE, Elements element) 
+    {
+	    ContractionTable contractions = t.m_contractions_;
+	    contractions.m_currentTag_ = CE_CONTRACTION_TAG_;
+	
+	    // First we need to check if contractions starts with a surrogate
+	    int cp = UTF16.charAt(element.m_cPoints_, 0);
+	    int cpsize = 1;
+	    if (UCharacter.isSupplementary(cp)) {
+	    	cpsize = 2;
+	    }
+	    if (cpsize < element.m_cPoints_.length()) { 
+	    	// This is a real contraction, if there are other characters after 
+	    	// the first
+	    	int size = element.m_cPoints_.length() - element.m_cPointsOffset_;
+	        for (int j = 1; j < size; j ++) {   
+	            // First add contraction chars to unsafe CP hash table 
+	            // Unless it is a trail surrogate, which is handled 
+	            // algoritmically and shouldn't take up space in the table.
+	            if (!UTF16.isTrailSurrogate(element.m_cPoints_.charAt(
+	                                         element.m_cPointsOffset_ + j))) {
+	                 unsafeCPSet(t.m_unsafeCP_, 
+	                             element.m_cPoints_.charAt(
+	                                           element.m_cPointsOffset_ + j));
+	            }
+	        }
+	        // Add the last char of the contraction to the contraction-end 
+	        // hash table. unless it is a trail surrogate, which is handled 
+	        // algorithmically and shouldn't be in the table
+	        if (!UTF16.isTrailSurrogate(element.m_cPoints_.charAt(
+                                            element.m_cPoints_.length() -1))) {
+	            ContrEndCPSet(t.m_contrEndCP_, 
+	                          element.m_cPoints_.charAt(
+                                              element.m_cPoints_.length() -1));
+	        }
+	
+	        // If there are any Jamos in the contraction, we should turn on 
+	        // special processing for Jamos
+	        if (isJamo(element.m_cPoints_.charAt(element.m_cPointsOffset_))) {
+	            t.m_collator_.m_isJamoSpecial_ = true;
+	        }
+	        // then we need to deal with it 
+	        // we could aready have something in table - or we might not 
+	        element.m_cPointsOffset_ += cpsize;
+	        if (!isContraction(CE)) { 
+		        // if it wasn't contraction, we wouldn't end up here
+		        int firstContractionOffset = addContraction(contractions, 
+		                          CONTRACTION_TABLE_NEW_ELEMENT_, (char)0, CE);
+		        int newCE = processContraction(contractions, element, 
+		                                       CE_NOT_FOUND_);
+		        addContraction(contractions, firstContractionOffset, 
+                          element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+                                                       newCE);
+		        addContraction(contractions, firstContractionOffset, 
+                               (char)0xFFFF, CE);
+		        CE = constructSpecialCE(CE_CONTRACTION_TAG_, 
+		                                firstContractionOffset);
+		    } 
+		    else { 
+		        // we are adding to existing contraction 
+		        // there were already some elements in the table, so we need to 
+		        // add a new contraction
+		        // Two things can happen here: either the codepoint is already 
+		        // in the table, or it is not 
+		        int position = findCP(contractions, CE, 
+                          element.m_cPoints_.charAt(element.m_cPointsOffset_));
+		        if (position > 0) {       
+		            // if it is we just continue down the chain
+		            int eCE = getCE(contractions, CE, position);
+		            int newCE = processContraction(contractions, element, eCE);
+		            setContraction(contractions, CE, position, 
+		                  element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+		                  newCE);
+		        } 
+		        else {                  
+		            // if it isn't, we will have to create a new sequence 
+		            int newCE = processContraction(contractions, element, 
+		                                           CE_NOT_FOUND_);
+		            insertContraction(contractions, CE, 
+                           element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+                                      newCE);
+		        }
+		    }
+		    element.m_cPointsOffset_ -= cpsize;
+	        t.m_mapping_.setValue(cp, CE);
+	    } 
+	    else if (!isContraction(CE)) { 
+	        // this is just a surrogate, and there is no contraction 
+	        t.m_mapping_.setValue(cp, element.m_mapCE_);
+	    } 
+	    else { 
+	        // fill out the first stage of the contraction with the surrogate 
+	        // CE 
+	        changeContraction(contractions, CE, (char)0, element.m_mapCE_);
+	        changeContraction(contractions, CE, (char)0xFFFF, element.m_mapCE_);
+	    }
+	    return CE;
+	}
+	
+	/** 
+	 * this is for adding non contractions 
+	 * @param table contraction table
+	 * @param element offset to the contraction table
+	 * @param value collation element value
+	 * @return new collation element 
+	 */
+    private static final int changeLastCE(ContractionTable table, int element, 
+                                          int value) 
+    {
+	    BasicContractionTable tbl = getBasicContractionTable(table, element);
+	    if (tbl == null) {
+	        return 0;
+	    }
+	
+	    tbl.m_CEs_.set(tbl.m_CEs_.size() - 1, new Integer(value));
+	    return constructSpecialCE(table.m_currentTag_, element & 0xFFFFFF);
+	}
+    
+    /**
+     * Given a set of ranges calculated by allocWeights(), iterate through the 
+     * weights. Sets the next weight in cegenerator.m_current_.
+     * @param cegenerator object that contains ranges weight range array and
+     *        its rangeCount
+     * @return the next weight
+     */
+    private static int nextWeight(CEGenerator cegenerator) 
+    {
+        if (cegenerator.m_rangesLength_ > 0) {
+            // get maxByte from the .count field
+            int maxByte = cegenerator.m_ranges_[0].m_count_;
+            // get the next weight 
+            int weight = cegenerator.m_ranges_[0].m_start_;
+            if (weight == cegenerator.m_ranges_[0].m_end_) {
+                // this range is finished, remove it and move the following 
+                // ones up 
+                cegenerator.m_rangesLength_ --;
+                if (cegenerator.m_rangesLength_ > 0) {
+                    System.arraycopy(cegenerator.m_ranges_, 1, 
+                                     cegenerator.m_ranges_, 0, 
+                                     cegenerator.m_rangesLength_);
+                    cegenerator.m_ranges_[0].m_count_ = maxByte; 
+                    // keep maxByte in ranges[0]
+                }
+            } 
+            else {
+                // increment the weight for the next value
+                cegenerator.m_ranges_[0].m_start_ 
+                      = incWeight(weight, cegenerator.m_ranges_[0].m_length2_, 
+                                  maxByte);
+            }
+            return weight;
+        }
+        return -1;
+    }
+    
+    /**
+     * Increment the collation weight
+     * @param weight to increment
+     * @param length
+     * @param maxByte
+     * @return new incremented weight
+     */
+    private static final int incWeight(int weight, int length, int maxByte) 
+    {
+        while (true) {
+            int b = getWeightByte(weight, length);
+            if (b < maxByte) {
+                return setWeightByte(weight, length, b + 1);
+            } 
+            else {
+                // roll over, set this byte to BYTE_FIRST_TAILORED_ and 
+                // increment the previous one
+                weight = setWeightByte(weight, length, 
+                                       RuleBasedCollator.BYTE_FIRST_TAILORED_);
+                -- length;
+            }
+        }
+    }
+    
+    /**
+     * Gets the weight byte
+     * @param weight
+     * @param index
+     * @return byte
+     */
+    private static final int getWeightByte(int weight, int index) 
+    {
+        return (weight >> ((4 - index) << 3)) & 0xff;
+    }
+    
+    /**
+     * Set the weight byte in table
+     * @param weight 
+     * @param index
+     * @param b byte
+     */
+    private static final int setWeightByte(int weight, int index, int b) 
+    {
+        index <<= 3;
+        // 0xffffffff except a 00 "hole" for the index-th byte
+        int mask = 0xffffffff >>> index;
+        index = 32 - index;
+        mask |= 0xffffff00 << index;
+        return (weight & mask) | (b << index);
+    }
+    
+    /**
+     * Call getWeightRanges and then determine heuristically which ranges to 
+     * use for a given number of weights between (excluding) two limits
+     * @param lowerlimit
+     * @param upperlimit
+     * @param n
+     * @param maxByte
+     * @param ranges
+     * @return
+     */
+    private static int allocateWeights(int lowerLimit, int upperLimit, int n,
+                                       int maxByte, WeightRange ranges[]) 
+    {
+        // number of usable byte values 3..maxByte
+        int countBytes = maxByte - RuleBasedCollator.BYTE_FIRST_TAILORED_ + 1;
+        // [0] unused, [5] to make index checks unnecessary 
+        int lengthCounts[] = new int[6];     
+        // countBytes to the power of index 
+        long powers[] = new long[5]; // for unsignedness
+        // gcc requires explicit initialization 
+        powers[0] = 1;
+        powers[1] = countBytes;
+        powers[2] = powers[1] * countBytes;
+        powers[3] = powers[2] * countBytes;
+        powers[4] = powers[3] * countBytes;
+        int rangeCount = getWeightRanges(lowerLimit, upperLimit, maxByte, 
+                                         countBytes, ranges);
+        if (rangeCount <= 0) {
+            return 0;
+        }
+        // what is the maximum number of weights with these ranges?
+        long maxCount = 0;
+        for (int i = 0; i < rangeCount; ++ i) {
+            maxCount += (long)ranges[i].m_count_ 
+                        * powers[4 - ranges[i].m_length_];
+        }
+        if (maxCount < n) {
+            return 0;
+        }
+        // set the length2 and count2 fields
+        for (int i = 0; i < rangeCount; ++ i) {
+            ranges[i].m_length2_ = ranges[i].m_length_;
+            ranges[i].m_count2_ = ranges[i].m_count_;
+        }
+        // try until we find suitably large ranges
+        while (true) {
+            // get the smallest number of bytes in a range
+            int minLength = ranges[0].m_length2_;
+            // sum up the number of elements that fit into ranges of each byte 
+            // length
+            Arrays.fill(lengthCounts, 0);
+            for (int i = 0; i < rangeCount; ++ i) {
+                lengthCounts[ranges[i].m_length2_] += ranges[i].m_count2_;
+            }
+            // now try to allocate n elements in the available short ranges 
+            if (n <= lengthCounts[minLength] + lengthCounts[minLength + 1]) {
+                // trivial cases, use the first few ranges
+                maxCount = 0;
+                rangeCount = 0;
+                do {
+                    maxCount += ranges[rangeCount].m_count2_;
+                    ++ rangeCount;
+                } while (n > maxCount);
+                break;
+            } 
+            else if (n <= ranges[0].m_count2_ * countBytes) {
+                // easy case, just make this one range large enough by 
+                // lengthening it once more, possibly split it
+                rangeCount = 1;
+                // calculate how to split the range between maxLength-1 
+                // (count1) and maxLength (count2) 
+                long power_1 = powers[minLength - ranges[0].m_length_];
+                long power = power_1 * countBytes;
+                int count2 = (int)((n + power - 1) / power);
+                int count1 = ranges[0].m_count_ - count2;
+                // split the range
+                if (count1 < 1) {
+                    // lengthen the entire range to maxLength 
+                    lengthenRange(ranges, 0, maxByte, countBytes);
+                } 
+                else {
+                    // really split the range
+                    // create a new range with the end and initial and current 
+                    // length of the old one
+                    rangeCount = 2;
+                    ranges[1].m_end_ = ranges[0].m_end_;
+                    ranges[1].m_length_ = ranges[0].m_length_;
+                    ranges[1].m_length2_ = minLength;
+                    // set the end of the first range according to count1
+                    int i = ranges[0].m_length_;
+                    int b = getWeightByte(ranges[0].m_start_, i) + count1 - 1;
+                    // ranges[0].count and count1 may be >countBytes from 
+                    // merging adjacent ranges; b > maxByte is possible
+                    if (b <= maxByte) {
+                        ranges[0].m_end_ = setWeightByte(ranges[0].m_start_, i, 
+                                                         b);
+                    } 
+                    else {
+                        ranges[0].m_end_ = setWeightByte(
+                                           incWeight(ranges[0].m_start_, i - 1, 
+                                                     maxByte), 
+                                           i, b - countBytes);
+                    }
+                    // set the bytes in the end weight at length + 1..length2 
+                    // to maxByte
+                    b = (maxByte << 24) | (maxByte << 16) | (maxByte << 8)
+                        | maxByte; // this used to be 0xffffffff 
+                    ranges[0].m_end_ = truncateWeight(ranges[0].m_end_, i) 
+                                       | (b >> (i << 3)) 
+                                       & (b << ((4 - minLength) << 3));
+                    // set the start of the second range to immediately follow 
+                    // the end of the first one
+                    ranges[1].m_start_ = incWeight(ranges[0].m_end_, minLength, 
+                                                   maxByte);
+                    // set the count values (informational)
+                    ranges[0].m_count_ = count1;
+                    ranges[1].m_count_ = count2;
+    
+                    ranges[0].m_count2_ = (int)(count1 * power_1);
+                    // will be *countBytes when lengthened 
+                    ranges[1].m_count2_ = (int)(count2 * power_1); 
+    
+                    // lengthen the second range to maxLength
+                    lengthenRange(ranges, 1, maxByte, countBytes);
+                }
+                break;
+            }
+            // no good match, lengthen all minLength ranges and iterate 
+            for (int i=0; ranges[i].m_length2_ == minLength; ++ i) {
+                lengthenRange(ranges, i, maxByte, countBytes);
+            }
+        }
+    
+        if (rangeCount > 1) {
+            // sort the ranges by weight values 
+            Arrays.sort(ranges, 0, rangeCount);
+        }
+    
+        // set maxByte in ranges[0] for ucol_nextWeight()
+        ranges[0].m_count_ = maxByte;
+    
+        return rangeCount;
+    }
+    
+    /**
+     * Updates the range length
+     * @param range weight range array
+     * @param offset to weight range array
+     * @param maxByte
+     * @param countBytes
+     * @return new length
+     */
+    private static final int lengthenRange(WeightRange range[], int offset, 
+                                           int maxByte, int countBytes) 
+    {
+        int length = range[offset].m_length2_ + 1;
+        range[offset].m_start_ = setWeightTrail(range[offset].m_start_, length, 
+                                       RuleBasedCollator.BYTE_FIRST_TAILORED_);
+        range[offset].m_end_ = setWeightTrail(range[offset].m_end_, length, 
+                                              maxByte);
+        range[offset].m_count2_ *= countBytes;
+        range[offset].m_length2_ = length;
+        return length;
+    }
+    
+    /**
+     * Gets the weight 
+     * @param weight
+     * @param length
+     * @param trail
+     * @return new weight
+     */
+    private static final int setWeightTrail(int weight, int length, int trail) 
+    {
+        length = (4 - length) << 3;
+        return (weight & (0xffffff00 << length)) | (trail << length);
+    }
+    
+    /**
+     * take two CE weights and calculate the
+     * possible ranges of weights between the two limits, excluding them
+     * for weights with up to 4 bytes there are up to 2*4-1=7 ranges
+     * @param lowerlimit
+     * @param upperlimit
+     * @param maxByte
+     * @param countBytes
+     * @param ranges
+     * @return weight ranges
+     */
+    private static int getWeightRanges(int lowerLimit, int upperLimit, 
+                                       int maxByte, int countBytes,
+                                       WeightRange ranges[]) 
+    {
+        // assume that both lowerLimit & upperLimit are not 0 
+        // get the lengths of the limits 
+        int lowerLength = lengthOfWeight(lowerLimit);
+        int upperLength = lengthOfWeight(upperLimit);
+        if (Utility.compareUnsigned(lowerLimit, upperLimit) >= 0) {
+            return 0;
+        }
+        // check that neither is a prefix of the other
+        if (lowerLength < upperLength) {
+            if (lowerLimit == truncateWeight(upperLimit, lowerLength)) {
+                return 0;
+            }
+        }
+        // if the upper limit is a prefix of the lower limit then the earlier 
+        // test lowerLimit >= upperLimit has caught it
+        // reset local variables
+        // With the limit lengths of 1..4, there are up to 7 ranges for 
+        // allocation:
+        // range     minimum length
+        // lower[4]  4
+        // lower[3]  3
+        // lower[2]  2
+        // middle    1
+        // upper[2]  2
+        // upper[3]  3
+        // upper[4]  4
+        // We are now going to calculate up to 7 ranges.
+        // Some of them will typically overlap, so we will then have to merge 
+        // and eliminate ranges.
+        int weight = lowerLimit;
+        WeightRange lower[] = {new WeightRange(), new WeightRange(), 
+                               new WeightRange(), new WeightRange(), 
+                               new WeightRange()}; 
+        for (int length = lowerLength; length >= 2; -- length) {
+            int trail = getWeightByte(weight, length);
+            if (trail < maxByte) {
+                lower[length].m_start_ = incWeightTrail(weight, length);
+                lower[length].m_end_ = setWeightTrail(weight, length, maxByte);
+                lower[length].m_length_ = length;
+                lower[length].m_count_ = maxByte - trail;
+            }
+            weight = truncateWeight(weight, length - 1);
+        }
+        WeightRange middle = new WeightRange(); 
+        middle.m_start_ = incWeightTrail(weight, 1);
+    
+        weight = upperLimit;
+        // [0] and [1] are not used - this simplifies indexing 
+        WeightRange upper[] = {new WeightRange(), new WeightRange(), 
+                               new WeightRange(), new WeightRange(), 
+                               new WeightRange()}; 
+        for (int length = upperLength; length >= 2; length --) {
+            int trail = getWeightByte(weight, length);
+            if (trail > RuleBasedCollator.BYTE_FIRST_TAILORED_) {
+                upper[length].m_start_ = setWeightTrail(weight, length, 
+                                       RuleBasedCollator.BYTE_FIRST_TAILORED_);
+                upper[length].m_end_ = decWeightTrail(weight, length);
+                upper[length].m_length_ = length;
+                upper[length].m_count_ = trail
+                                     - RuleBasedCollator.BYTE_FIRST_TAILORED_;
+            }
+            weight = truncateWeight(weight, length - 1);
+        }
+        middle.m_end_ = decWeightTrail(weight, 1);
+    
+        // set the middle range
+        middle.m_length_ = 1;
+        if (middle.m_end_ >= middle.m_start_) {
+            middle.m_count_ = ((middle.m_end_ - middle.m_start_) >> 24) + 1;
+        } 
+        else {
+            // eliminate overlaps
+            // remove the middle range
+            middle.m_count_ = 0;
+            // reduce or remove the lower ranges that go beyond upperLimit
+            for (int length = 4; length >= 2; -- length) {
+                if (lower[length].m_count_>0 && upper[length].m_count_ > 0) {
+                    int start = upper[length].m_start_;
+                    int end = lower[length].m_end_;
+                    if (end >= start || incWeight(end, length, maxByte) 
+                                        == start) {
+                        // lower and upper ranges collide or are directly 
+                        // adjacent: merge these two and remove all shorter 
+                        // ranges
+                        start = lower[length].m_start_;
+                        end = lower[length].m_end_ = upper[length].m_end_;
+                        // merging directly adjacent ranges needs to subtract 
+                        // the 0/1 gaps in between;
+                        // it may result in a range with count>countBytes
+                        lower[length].m_count_ = getWeightByte(end, length)
+                                  - getWeightByte(start, length) + 1 
+                                  + countBytes * (getWeightByte(end, length - 1)
+                                                  - getWeightByte(start, 
+                                                                  length - 1));
+                        upper[length].m_count_=0;
+                        while (-- length >= 2) {
+                            lower[length].m_count_ = upper[length].m_count_ 
+                                                                           = 0;
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+    
+        // copy the ranges, shortest first, into the result array 
+        int rangeCount = 0;
+        if (middle.m_count_ > 0) {
+            ranges[0] = middle;
+            rangeCount = 1;
+        }
+        for (int length = 2; length <= 4; ++ length) {
+            // copy upper first so that later the middle range is more likely 
+            // the first one to use
+            if (upper[length].m_count_ > 0) {
+                ranges[rangeCount] = upper[length];
+                ++ rangeCount;
+            }
+            if (lower[length].m_count_ > 0) {
+                ranges[rangeCount] = lower[length];
+                ++ rangeCount;
+            }
+        }
+        return rangeCount;
+    }
+    
+    /**
+     * Truncates the weight with length
+     * @param weight
+     * @param length
+     * @return truncated weight
+     */
+    private static final int truncateWeight(int weight, int length) 
+    {
+        return weight & (0xffffffff << ((4 - length) << 3));
+    }
+    
+    /**
+     * Length of the weight
+     * @param weight
+     * @return length of the weight
+     */
+    private static final int lengthOfWeight(int weight) 
+    {
+        if ((weight & 0xffffff) == 0) {
+            return 1;
+        } 
+        else if ((weight & 0xffff) == 0) {
+            return 2;
+        } 
+        else if ((weight & 0xff) == 0) {
+            return 3;
+        } 
+        return 4;
+    }
+    
+    /**
+     * Increment the weight trail
+     * @param weight 
+     * @param length
+     * @return new weight
+     */
+    private static final int incWeightTrail(int weight, int length) 
+    {
+        return weight + (1 << ((4-length) << 3));
+    }
+
+    /**
+     * Decrement the weight trail
+     * @param weight 
+     * @param length
+     * @return new weight
+     */
+    private static final int decWeightTrail(int weight, int length) 
+    {
+        return weight - (1 << ((4 - length) << 3));
+    }
+    
+    /**
+     * Checks if the string is tailored in the contraction
+     * @param table contraction table
+     * @param element 
+     * @param array character array to check
+     * @param offset array offset
+     * @return true if it is tailored
+     */
+    private boolean isTailored(ContractionTable table, int element, 
+                               char array[], int offset) 
+    {
+        while (array[offset] != 0) {
+            element = getCE(table, element, array[offset]);
+            if (element == CE_NOT_FOUND_) {
+                return false;
+            }
+            if (!isContractionTableElement(element)) {
+                return true;
+            }
+            offset ++;
+        }
+        if (getCE(table, element, 0) != CE_NOT_FOUND_) {
+            return true;
+        } 
+        else {
+            return false; 
+        }
+    }
+    
+    /**
+     * Assemble RuleBasedCollator
+     * @param t build table
+     * @param collator to update
+     */
+    private void assembleTable(BuildTable t, RuleBasedCollator collator) 
+    {
+        IntTrieBuilder mapping = t.m_mapping_;
+        Vector expansions = t.m_expansions_;
+        ContractionTable contractions = t.m_contractions_;
+        MaxExpansionTable maxexpansion = t.m_maxExpansions_;
+    
+        // contraction offset has to be in since we are building on the 
+        // UCA contractions 
+        // int beforeContractions = (HEADER_SIZE_ 
+        //                         + paddedsize(expansions.size() << 2)) >>> 1;
+        collator.m_contractionOffset_ = 0;
+        int contractionsSize = constructTable(contractions);
+    
+        // the following operation depends on the trie data. Therefore, we have 
+        // to do it before the trie is compacted 
+        // sets jamo expansions
+        getMaxExpansionJamo(mapping, maxexpansion, t.m_maxJamoExpansions_,
+                            collator.m_isJamoSpecial_);
+        // TODO: LATIN1 array is now in the utrie - it should be removed from 
+        // the calculation
+        setAttributes(collator, t.m_options_);
+        // copy expansions
+        int size = expansions.size();
+        collator.m_expansion_ = new int[size];
+        for (int i = 0; i < size; i ++) {
+            collator.m_expansion_[i] = ((Integer)expansions.get(i)).intValue();
+        }
+        // contractions block 
+        if (contractionsSize != 0) {
+            // copy contraction index 
+            collator.m_contractionIndex_ = new char[contractionsSize];
+            contractions.m_codePoints_.getChars(0, contractionsSize, 
+                                                collator.m_contractionIndex_, 
+                                                0);
+            // copy contraction collation elements
+            collator.m_contractionCE_ = new int[contractionsSize];
+            for (int i = 0; i < contractionsSize; i ++) {
+                collator.m_contractionCE_[i] = ((Integer)
+                                        contractions.m_CEs_.get(i)).intValue();
+            }
+        } 
+        // copy mapping table
+        collator.m_trie_ = mapping.serialize(t, 
+                               RuleBasedCollator.DataManipulate.getInstance());
+        // copy max expansion table
+        // not copying the first element which is a dummy
+        // to be in synch with icu4c's builder, we continue to use the 
+        // expansion offset
+        // omitting expansion offset in builder
+        collator.m_expansionOffset_ = 0; 
+        size = maxexpansion.m_endExpansionCE_.size() - 1;
+        collator.m_expansionEndCE_ = new int[size];
+        for (int i = 1; i < size; i ++) {
+            collator.m_expansionEndCE_[i - 1] = ((Integer)
+                             maxexpansion.m_endExpansionCE_.get(i)).intValue();
+        }
+        collator.m_expansionEndCEMaxSize_ = new byte[size];
+        for (int i = 1; i < size; i ++) {
+            collator.m_expansionEndCEMaxSize_[i - 1] 
+                 = ((Byte)maxexpansion.m_expansionCESize_.get(i)).byteValue();
+        }
+        // Unsafe chars table.  Finish it off, then copy it.
+        unsafeCPAddCCNZ(t);
+        // Or in unsafebits from UCA, making a combined table.
+        for (int i = 0; i < UNSAFECP_TABLE_SIZE_; i ++) {    
+             t.m_unsafeCP_[i] |= RuleBasedCollator.UCA_.m_unsafe_[i];
+        }
+        collator.m_unsafe_ = t.m_unsafeCP_;
+    
+        // Finish building Contraction Ending chars hash table and then copy it 
+        // out.
+        // Or in unsafebits from UCA, making a combined table
+        for (int i = 0; i < UNSAFECP_TABLE_SIZE_; i ++) {    
+             t.m_contrEndCP_[i] |= RuleBasedCollator.UCA_.m_contractionEnd_[i];
+        }
+        collator.m_contractionEnd_ = t.m_contrEndCP_;
+    }
+    
+    /**
+     * Sets this collator to use the all options and tables in UCA. 
+     * @param collator which attribute is to be set 
+     * @param option to set with
+     */
+    private static final void setAttributes(RuleBasedCollator collator,
+                                          CollationRuleParser.OptionSet option)
+    {
+        collator.m_caseFirst_ = option.m_caseFirst_;
+        collator.setDecomposition(option.m_decomposition_);
+        collator.setAlternateHandlingShifted(
+                                         option.m_isAlternateHandlingShifted_);
+        collator.setCaseLevel(option.m_isCaseLevel_);
+        collator.setFrenchCollation(option.m_isFrenchCollation_);
+        collator.m_isHiragana4_ = option.m_isHiragana4_;
+        collator.setStrength(option.m_strength_);
+        collator.m_variableTopValue_ = option.m_variableTopValue_;    
+    }
+    
+    /**
+     * Constructing the contraction table
+     * @param table contraction table
+     * @return 
+     */
+    private int constructTable(ContractionTable table) 
+    {
+        // See how much memory we need 
+        int tsize = table.m_elements_.size();
+        if (tsize == 0) {
+            return 0;
+        }
+        table.m_offsets_.clear();
+        int position = 0;
+        for (int i = 0; i < tsize; i ++) {
+            table.m_offsets_.add(new Integer(position));
+            position += ((BasicContractionTable)
+                                       table.m_elements_.get(i)).m_CEs_.size();
+        }
+        table.m_CEs_.clear();
+        table.m_codePoints_.delete(0, table.m_codePoints_.length());
+        // Now stuff the things in
+        StringBuffer cpPointer = table.m_codePoints_;
+        Vector CEPointer = table.m_CEs_;
+        for (int i = 0; i < tsize; i ++) {
+            BasicContractionTable bct = (BasicContractionTable)
+                                                      table.m_elements_.get(i);
+            int size = bct.m_CEs_.size();
+            char ccMax = 0;
+            char ccMin = 255;
+            int offset = CEPointer.size();
+            CEPointer.add(bct.m_CEs_.get(0));
+            for (int j = 1; j < size; j ++) {
+                char ch = bct.m_codePoints_.charAt(j);
+                char cc = (char)(UCharacter.getCombiningClass(ch) & 0xFF);
+                if (cc > ccMax) {
+                    ccMax = cc;
+                }
+                if (cc < ccMin) {
+                    ccMin = cc;
+                }
+                cpPointer.append(ch);
+                CEPointer.add(bct.m_CEs_.get(j));
+            }
+            cpPointer.insert(offset, 
+                             (char)(((ccMin == ccMax) ? 1 : 0 << 8) | ccMax));
+            for (int j = 0; j < size; j ++) {
+                if (isContractionTableElement(((Integer)
+                                      CEPointer.get(offset + j)).intValue())) {
+                    int ce = ((Integer)CEPointer.get(offset + j)).intValue();
+                    CEPointer.set(offset + j, 
+                        new Integer(constructSpecialCE(getCETag(ce), 
+                                    ((Integer)table.m_offsets_.get(
+                                      getContractionOffset(ce))).intValue())));
+                }
+            }
+        }
+    
+        for (int i = 0; i <= 0x10FFFF; i ++) {
+            int CE = table.m_mapping_.getValue(i);
+            if (isContractionTableElement(CE)) {
+                CE = constructSpecialCE(getCETag(CE), 
+                                        ((Integer)table.m_offsets_.get(
+                                        getContractionOffset(CE))).intValue());
+                table.m_mapping_.setValue(i, CE);
+            }
+        }
+        return position;
+    }
+    
+    /**
+     * Get contraction offset
+     * @param ce collation element 
+     * @return contraction offset
+     */
+    private static final int getContractionOffset(int ce)
+    {
+        return ce & 0xFFFFFF;
+    }
+    
+    /**
+     * Gets the maximum Jamo expansion
+     * @param table trie table
+     * @param maxexpansion maximum expansion table
+     * @param maxjamoexpansion maximum jamo expansion table
+     * @param jamospecial is jamo special?
+     */
+    private static void getMaxExpansionJamo(IntTrieBuilder mapping, 
+                                            MaxExpansionTable maxexpansion,
+                                            MaxJamoExpansionTable 
+                                                              maxjamoexpansion,
+                                            boolean jamospecial)
+    {
+        int VBASE  = 0x1161;
+        int TBASE  = 0x11A8;
+        int VCOUNT = 21;
+        int TCOUNT = 28;
+        int v = VBASE + VCOUNT - 1;
+        int t = TBASE + TCOUNT - 1;
+        
+        while (v >= VBASE) {
+            int ce = mapping.getValue(v);
+            if ((ce & RuleBasedCollator.CE_SPECIAL_FLAG_) 
+                                      != RuleBasedCollator.CE_SPECIAL_FLAG_) {
+                setMaxExpansion(ce, (byte)2, maxexpansion);
+            }
+            v --;
+        }
+        
+        while (t >= TBASE)
+        {
+            int ce = mapping.getValue(t);
+            if ((ce & RuleBasedCollator.CE_SPECIAL_FLAG_) 
+                                      != RuleBasedCollator.CE_SPECIAL_FLAG_) {
+                setMaxExpansion(ce, (byte)3, maxexpansion);
+            }
+            t --;
+        }
+        // According to the docs, 99% of the time, the Jamo will not be special 
+        if (jamospecial) {
+            // gets the max expansion in all unicode characters
+            int count = maxjamoexpansion.m_endExpansionCE_.size();
+            byte maxTSize = (byte)(maxjamoexpansion.m_maxLSize_ + 
+                                   maxjamoexpansion.m_maxVSize_ +
+                                   maxjamoexpansion.m_maxTSize_);
+            byte maxVSize = (byte)(maxjamoexpansion.m_maxLSize_ + 
+                                   maxjamoexpansion.m_maxVSize_);
+        
+            while (count > 0) {
+                count --;
+                if (((Boolean)maxjamoexpansion.m_isV_.get(count)).booleanValue()
+                                                                     == true) {
+                    setMaxExpansion(((Integer)
+                     maxjamoexpansion.m_endExpansionCE_.get(count)).intValue(), 
+                                                       maxVSize, maxexpansion);
+                }
+                else {
+                    setMaxExpansion(((Integer)
+                     maxjamoexpansion.m_endExpansionCE_.get(count)).intValue(), 
+                                                       maxTSize, maxexpansion);
+                }
+            }
+        }
+    }
+    
+    /**  
+     * To the UnsafeCP hash table, add all chars with combining class != 0     
+     * @param t build table
+     */
+    private static final void unsafeCPAddCCNZ(BuildTable t) 
+    {
+    
+        for (char c = 0; c < 0xffff; c ++) {
+            char fcd = NormalizerImpl.getFCD16(c);
+            if (fcd >= 0x100 || // if the leading combining class(c) > 0 ||
+                (UTF16.isLeadSurrogate(c) && fcd != 0)) {
+                // c is a leading surrogate with some FCD data
+                unsafeCPSet(t.m_unsafeCP_, c);
+            }
+        }
+    
+        if (t.m_prefixLookup_ != null) {
+            Enumeration enum = t.m_prefixLookup_.elements();
+            while (enum.hasMoreElements()) {
+                Elements e = (Elements)enum.nextElement();
+                // codepoints here are in the NFD form. We need to add the
+                // first code point of the NFC form to unsafe, because 
+                // strcoll needs to backup over them.
+                String decomp = Normalizer.decompose(e.m_cPoints_, true);
+                unsafeCPSet(t.m_unsafeCP_, decomp.charAt(0));
+            } 
+        }
+    }
+    
+    /**
+     * Create closure
+     * @param t build table
+     * @param collator RuleBasedCollator
+     * @param colEl collation element iterator
+     * @param start 
+     * @param limit
+     * @param type character type
+     * @return 
+     */
+    private static boolean enumCategoryRangeClosureCategory(BuildTable t, 
+                                             RuleBasedCollator collator, 
+                                             CollationElementIterator colEl, 
+                                             int start, int limit, int type) 
+    {
+        if (type != UCharacterCategory.UNASSIGNED 
+            && type != UCharacterCategory.PRIVATE_USE) { 
+            // if the range is assigned - we might ommit more categories later
+            Elements el = new Elements();
+            char dec[] = new char[256];
+            for (int u32 = start; u32 < limit; u32 ++) {
+                int noOfDec = NormalizerImpl.getDecomposition(u32, false,
+                                                              dec, 0, 256);
+                if (noOfDec > 0) {
+                    // if we're positive, that means there is no decomposition
+                    String comp = UCharacter.toString(u32);
+                    String decomp = new String(dec, 0, noOfDec);
+                    if (!collator.equals(comp, decomp)) {
+                        el.m_cPoints_ = decomp;
+                        el.m_prefix_ = 0;
+                        Vector cevector = new Vector();
+                        Elements prefix = (Elements)t.m_prefixLookup_.get(el);
+                        if (prefix == null) {
+                            el.m_cPoints_ = comp;
+                            el.m_prefix_ = 0;
+                            el.m_prefixChars_ = null;
+                            el.m_CEs_ = null;
+                            colEl.setText(decomp);
+                            int ce = colEl.next();
+                            while (ce != CollationElementIterator.NULLORDER) {
+                                cevector.add(new Integer(ce));
+                                ce = colEl.next();
+                            }
+                            int size = cevector.size();
+                            el.m_CEs_ = new int[size];
+                            for (int i = 0; i < size; i ++) {
+                                el.m_CEs_[i] 
+                                       = ((Integer)cevector.get(i)).intValue();
+                            }
+                        } 
+                        else {
+                            el.m_cPoints_ = comp;
+                            el.m_prefix_ = 0;
+                            el.m_prefixChars_ = null;
+                            el.m_CEs_ = new int[1];
+                            el.m_CEs_[0] = prefix.m_mapCE_;
+                            // This character uses a prefix. We have to add it 
+                            // to the unsafe table, as it decomposed form is 
+                            // already in. In Japanese, this happens for \u309e 
+                            // & \u30fe
+                            // Since unsafeCPSet is static in ucol_elm, we are 
+                            // going to wrap it up in the unsafeCPAddCCNZ 
+                            // function
+                            el.m_isThai_ 
+                                    = CollationElementIterator.isThaiPreVowel(
+                                                   el.m_cPoints_.charAt(0));
+                        }
+                        addAnElement(t, el);
+                    }
+                }
+            }
+        }
+        return true;
+    }
+    
+    /**
+ 	 * Determine if a character is a Jamo
+ 	 * @param ch character to test
+ 	 * @return true if ch is a Jamo, false otherwise
+ 	 */
+	private static final boolean isJamo(char ch)
+	{ 
+		return (ch >= 0x1100 && ch <= 0x1112) 
+		       || (ch >= 0x1175 && ch <= 0x1161) 
+		       || (ch >= 0x11A8 && ch <= 0x11C2);
+	}
+    
+    /**
+     * Produces canonical closure
+     */
+    private void canonicalClosure(BuildTable t) 
+    {
+        BuildTable temp = new BuildTable(t);
+        assembleTable(temp, temp.m_collator_);
+        // produce canonical closure 
+        CollationElementIterator coleiter 
+                            = temp.m_collator_.getCollationElementIterator("");
+        RangeValueIterator typeiter = UCharacter.getTypeIterator();
+        RangeValueIterator.Element element = new RangeValueIterator.Element();
+        while (typeiter.next(element)) {
+            enumCategoryRangeClosureCategory(t, temp.m_collator_, coleiter, 
+                                              element.start, element.limit, 
+                                              element.value);
+        }
+    }
+    
+    private static void processUCACompleteIgnorables(BuildTable t) 
+    {
+        TrieIterator trieiterator 
+                            = new TrieIterator(RuleBasedCollator.UCA_.m_trie_);
+        RangeValueIterator.Element element = new RangeValueIterator.Element();
+        while (trieiterator.next(element)) {
+            int start = element.start;
+            int limit = element.limit;
+            if (element.value == 0) {
+                while (start < limit) {
+                    int CE = t.m_mapping_.getValue(start);
+                    if (CE == CE_NOT_FOUND_) {
+                        Elements el = new Elements();
+                        el.m_isThai_ = false;
+                        el.m_prefix_ = 0;
+                        el.m_uchars_ = UCharacter.toString(start);
+                        el.m_cPoints_ = el.m_uchars_;
+                        el.m_cPointsOffset_ = 0;
+                        el.m_CEs_ = new int[1];
+                        el.m_CEs_[0] = 0;
+                        addAnElement(t, el);
+                    }
+                    start ++;
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/CollationRuleParser.java b/src/com/ibm/icu/text/CollationRuleParser.java
new file mode 100644
index 0000000..fe39214
--- /dev/null
+++ b/src/com/ibm/icu/text/CollationRuleParser.java
@@ -0,0 +1,1771 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/CollationRuleParser.java,v $ 
+* $Date: 2002/08/01 21:11:27 $ 
+* $Revision: 1.5 $
+*
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.text.ParseException;
+import java.util.Hashtable;
+import java.util.Arrays;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.impl.UCharacterProperty;
+
+/**
+* Class for parsing collation rules, produces a list of tokens that will be 
+* turned into collation elements
+* @author Syn Wee Quek
+* @since release 2.2, June 7 2002
+* @draft 2.2
+*/
+class CollationRuleParser
+{     
+	// public data members ---------------------------------------------------
+	
+	// package private constructors ------------------------------------------
+	
+	/**
+     * <p>RuleBasedCollator constructor that takes the rules. 
+     * Please see RuleBasedCollator class description for more details on the 
+     * collation rule syntax.</p>
+     * @see java.util.Locale
+     * @param rules the collation rules to build the collation table from.
+     * @exception ParseException thrown when argument rules have an invalid 
+     *            syntax.
+     * @draft 2.2
+     */
+    CollationRuleParser(String rules) throws ParseException
+    {
+        m_source_ = new StringBuffer(Normalizer.decompose(rules, false).trim());
+        m_rules_ = m_source_.toString();
+        m_current_ = 0;
+        m_extraCurrent_ = m_source_.length();
+        m_variableTop_ = null;
+        m_parsedToken_ = new ParsedToken();
+        m_hashTable_ = new Hashtable();
+        m_options_ = new OptionSet(RuleBasedCollator.UCA_);
+        m_listHeader_ = new TokenListHeader[512];
+        m_resultLength_ = 0;
+		assembleTokenList();
+    }
+    
+	// package private inner classes -----------------------------------------
+    
+    /**
+     * Collation options set
+     */
+    static class OptionSet 
+    {
+	    // package private constructor ---------------------------------------
+	    
+	    /**
+	     * Initializes the option set with the argument collators
+	     * @param collator option to use
+	     */
+	    OptionSet(RuleBasedCollator collator) 
+	    {
+		    m_variableTopValue_ = collator.m_variableTopValue_;
+		    m_isFrenchCollation_ = collator.isFrenchCollation();
+		    m_isAlternateHandlingShifted_ 
+		                           = collator.isAlternateHandlingShifted();
+		    m_caseFirst_ = collator.m_caseFirst_;
+		    m_isCaseLevel_ = collator.isCaseLevel();
+		    m_decomposition_ = collator.getDecomposition();
+		    m_strength_ = collator.getStrength();
+		    m_isHiragana4_ = collator.m_isHiragana4_;
+	    }
+	    
+	    // package private data members --------------------------------------
+	    
+	    int m_variableTopValue_;
+	    boolean m_isFrenchCollation_;
+	    /** 
+	     * Attribute for handling variable elements
+	     */
+	    boolean m_isAlternateHandlingShifted_; 
+	    /** 
+	     * who goes first, lower case or uppercase 
+	     */
+	    int m_caseFirst_;         
+	    /** 
+	     * do we have an extra case level 
+	     */
+	    boolean m_isCaseLevel_;         
+	    /** 
+	     * attribute for normalization 
+	     */
+	    int m_decomposition_; 
+	    /** 
+	     * attribute for strength
+	     */
+	    int m_strength_;          
+	    /** 
+	     * attribute for special Hiragana 
+	     */
+	    boolean m_isHiragana4_;         
+    };
+    
+    /**
+     * List of tokens used by the collation rules
+     */
+    static class TokenListHeader
+    {
+        Token m_first_;
+        Token m_last_;
+        Token m_reset_;
+        boolean m_indirect_;
+        int m_baseCE_;
+        int m_baseContCE_;
+        int m_nextCE_;
+        int m_nextContCE_;
+        int m_previousCE_;
+        int m_previousContCE_;
+        int m_pos_[] = new int[Collator.IDENTICAL + 1];
+        int m_gapsLo_[] = new int[3 * (Collator.TERTIARY + 1)];
+        int m_gapsHi_[] = new int[3 * (Collator.TERTIARY + 1)];
+        int m_numStr_[] = new int[3 * (Collator.TERTIARY + 1)];
+        Token m_fStrToken_[] = new Token[Collator.TERTIARY + 1];
+        Token m_lStrToken_[] = new Token[Collator.TERTIARY + 1];
+    };
+    
+    /**
+     * Token wrapper for collation rules
+     */   
+    static class Token 
+    {
+       // package private data members ---------------------------------------
+       
+       int m_CE_[];
+       int m_CELength_;
+       int m_expCE_[];
+       int m_expCELength_;
+       int m_source_;
+       int m_expansion_;
+       int m_prefix_;
+       int m_strength_;
+       int m_toInsert_;
+       int m_polarity_; // 1 for <, <<, <<<, , ; and 0 for >, >>, >>>
+       TokenListHeader m_listHeader_;
+       Token m_previous_;
+       Token m_next_;
+       StringBuffer m_rules_;
+       
+       // package private constructors ---------------------------------------
+       
+       Token() 
+       {
+           m_CE_ = new int[128];
+           m_expCE_ = new int[128];
+           // TODO: this should also handle reverse
+           m_polarity_ = TOKEN_POLARITY_POSITIVE_; 
+           m_next_ = null;
+           m_previous_ = null;
+           m_CELength_ = 0;
+           m_expCELength_ = 0;
+       }
+                
+       // package private methods --------------------------------------------
+       
+       /**
+        * Hashcode calculation for token
+        * @return the hashcode
+        */
+       public int hashCode()
+       {
+           int result = 0;
+	       int len = (m_source_ & 0xFF000000) >>> 24;
+	       int inc = ((len - 32) / 32) + 1;
+	        
+	       int start = m_source_ & 0x00FFFFFF;
+	       int limit = start + len;    
+	
+	       while (start < limit) {
+	           result = (result * 37) + m_rules_.charAt(start);
+	           start += inc;
+	       }
+	       return result;
+	   }
+	
+	   /**
+	    * Equals calculation
+	    * @param target object to compare
+	    * @return true if target is the same as this object
+	    */
+	   public boolean equals(Object target)
+	   {
+	       if (target == this) {
+	           return true;
+	       }
+	       if (target instanceof Token) {
+	           Token t = (Token)target;
+			   int sstart = m_source_ & 0x00FFFFFF;
+			   int tstart = t.m_source_ & 0x00FFFFFF;
+			   int slimit = (m_source_ & 0xFF000000) >> 24;
+			   int tlimit = (m_source_ & 0xFF000000) >> 24;
+			   
+			   int end = sstart + slimit - 1;
+			
+			   if (m_source_ == 0 || t.m_source_ == 0) {
+			       return false;
+			   }
+			   if (slimit != tlimit) {
+			       return false;
+			   }
+			   if (m_source_ == t.m_source_) {
+			       return true;
+			   }
+               
+			   while (sstart < end 
+			          && m_rules_.charAt(sstart) == t.m_rules_.charAt(tstart)) 
+	           {
+	               ++ sstart;
+	               ++ tstart;
+	           }
+			   if (m_rules_.charAt(sstart) == t.m_rules_.charAt(tstart)) {
+			       return true;
+			   }
+	       }    
+	       return false;
+	    }
+    };
+    
+    // package private data member -------------------------------------------
+    
+    /**
+     * Indicator that the token is resetted yet, ie & in the rules
+     */
+    static final int TOKEN_RESET_ = 0xDEADBEEF;
+    
+    /**
+     * Size of the number of tokens
+     */
+    int m_resultLength_;
+    /**
+     * List of parsed tokens
+     */
+    TokenListHeader m_listHeader_[];
+    /**
+     * Variable top token
+     */
+    Token m_variableTop_;
+    /**
+     * Collation options
+     */
+    OptionSet m_options_;
+    /**
+     * Normalized collation rules with some extra characters
+     */
+    StringBuffer m_source_;
+    /**
+     * Hash table to keep all tokens
+     */
+    Hashtable m_hashTable_;
+    
+    // package private method ------------------------------------------------
+    
+    void setDefaultOptionsInCollator(RuleBasedCollator collator)
+    {
+        collator.m_defaultStrength_ = m_options_.m_strength_;
+        collator.m_defaultDecomposition_ = m_options_.m_decomposition_;
+        collator.m_defaultIsFrenchCollation_ = m_options_.m_isFrenchCollation_;
+        collator.m_defaultIsAlternateHandlingShifted_ 
+                                    = m_options_.m_isAlternateHandlingShifted_;
+        collator.m_defaultIsCaseLevel_ = m_options_.m_isCaseLevel_;
+        collator.m_defaultCaseFirst_ = m_options_.m_caseFirst_;
+        collator.m_defaultIsHiragana4_ = m_options_.m_isHiragana4_;
+        collator.m_defaultVariableTopValue_ = m_options_.m_variableTopValue_;
+    }
+    
+    // private inner classes -------------------------------------------------
+    
+    /** 
+     * This is a token that has been parsed but not yet processed. Used to 
+     * reduce the number of arguments in the parser
+     */
+    private static class ParsedToken 
+    {
+        // private constructor ----------------------------------------------
+        
+        /**
+         * Empty constructor
+         */
+        ParsedToken()
+        {
+            m_charsLen_ = 0;
+            m_charsOffset_ = 0;
+            m_extensionLen_ = 0;
+            m_extensionOffset_ = 0;
+            m_prefixLen_ = 0;
+            m_prefixOffset_ = 0;
+            m_flags_ = 0;
+            m_strength_ = TOKEN_UNSET_;
+        }
+        
+        // private data members ---------------------------------------------
+        
+        int m_strength_;
+        int m_charsOffset_;
+        int m_charsLen_;
+        int m_extensionOffset_;
+        int m_extensionLen_;
+        int m_prefixOffset_;
+        int m_prefixLen_;
+        char m_flags_;
+        char m_indirectIndex_;
+    };
+    
+    /**
+     * Boundary wrappers
+     */
+    private static class IndirectBoundaries 
+    {
+        // package private constructor ---------------------------------------
+        
+        IndirectBoundaries(int startce[], int limitce[]) 
+        {
+            // Set values for the top - TODO: once we have values for all the 
+            // indirects, we are going to initalize here. 
+            m_startCE_ = startce[0];
+            m_startContCE_ = startce[1];
+            if (limitce != null) {
+                m_limitCE_ = limitce[0];
+                m_limitContCE_ = limitce[1];
+            } 
+            else { 
+                m_limitCE_ = 0;
+                m_limitContCE_ = 0; 
+            } 
+        }
+        
+        // package private data members --------------------------------------
+        
+	    int m_startCE_;
+	    int m_startContCE_;
+	    int m_limitCE_;
+	    int m_limitContCE_;
+    };
+
+    /**
+     * Collation option rule tag
+     */
+    private static class TokenOption
+    {
+    	// package private constructor ---------------------------------------
+    	
+    	TokenOption(String name, int attribute, String suboptions[],
+    	            int suboptionattributevalue[]) 
+    	{
+    		m_name_ = name;
+    		m_attribute_ = attribute;
+        	m_subOptions_ = suboptions;
+        	m_subOptionAttributeValues_ = suboptionattributevalue;		
+    	}
+    	
+    	// package private data member ---------------------------------------
+    	
+    	private String m_name_;
+    	private int m_attribute_;
+        private String m_subOptions_[];
+        private int m_subOptionAttributeValues_[];
+    };
+    
+    // private variables -----------------------------------------------------
+
+    /**
+     * Current parsed token
+     */
+    private ParsedToken m_parsedToken_;
+    /**
+     * Collation rule
+     */
+    private String m_rules_;
+    private int m_current_;
+    /**
+     * Current offset in m_source
+     */
+    private int m_sourceLimit_;
+    /**
+     * Offset to m_source_ ofr the extra expansion characters
+     */
+    private int m_extraCurrent_;
+    /** 
+     * This is space for the extra strings that need to be unquoted during the 
+     * parsing of the rules 
+     */
+    private static final int TOKEN_EXTRA_RULE_SPACE_SIZE_ = 2048;
+    /**
+     * Indicator that the token is not set yet
+     */
+    private static final int TOKEN_UNSET_ = 0xFFFFFFFF;
+    /**
+     * Indicator that the rule is in the > polarity, ie everything on the 
+     * right of the rule is less than
+     */
+    private static final int TOKEN_POLARITY_NEGATIVE_ = 0;
+    /**
+     * Indicator that the rule is in the < polarity, ie everything on the 
+     * right of the rule is greater than
+     */
+    private static final int TOKEN_POLARITY_POSITIVE_ = 1;
+    /**
+     * Flag mask to determine if top is set
+     */
+    private static final int TOKEN_TOP_MASK_ = 0x04;
+    /**
+     * Flag mask to determine if variable top is set
+     */
+    private static final int TOKEN_VARIABLE_TOP_MASK_ = 0x08;
+    /**
+     * Flag mask to determine if a before attribute is set
+     */
+    private static final int TOKEN_BEFORE_ = 0x03;
+    /**
+     * For use in parsing token options
+     */
+    private static final int TOKEN_SUCCESS_MASK_ = 0x10;
+    
+    /** 
+     * These values are used for finding CE values for indirect positioning. 
+     * Indirect positioning is a mechanism for allowing resets on symbolic 
+     * values. It only works for resets and you cannot tailor indirect names.
+     * An indirect name can define either an anchor point or a range. An anchor 
+     * point behaves in exactly the same way as a code point in reset would, 
+     * except that it cannot be tailored. A range (we currently only know for 
+     * the [top] range will explicitly set the upper bound for generated CEs, 
+     * thus allowing for better control over how many CEs can be squeezed 
+     * between in the range without performance penalty. In that respect, we use 
+     * [top] for tailoring of locales that use CJK characters. Other indirect 
+     * values are currently a pure convenience, they can be used to assure that 
+     * the CEs will be always positioned in the same place relative to a point 
+     * with known properties (e.g. first primary ignorable). 
+     */
+    private static final IndirectBoundaries INDIRECT_BOUNDARIES_[];
+   
+    /**
+     * Inverse UCA constants
+     */
+    private static final int INVERSE_SIZE_MASK_ = 0xFFF00000;
+    private static final int INVERSE_OFFSET_MASK_ = 0x000FFFFF;
+    private static final int INVERSE_SHIFT_VALUE_ = 20;
+    
+    /**
+     * Collation option tags
+     * [last variable] last variable value 
+     * [last primary ignorable] largest CE for primary ignorable 
+     * [last secondary ignorable] largest CE for secondary ignorable 
+     * [last tertiary ignorable] largest CE for tertiary ignorable 
+     * [top] guaranteed to be above all implicit CEs, for now and in the future (in 1.8) 
+	 */
+	private static final TokenOption RULES_OPTIONS_[];
+	
+	static 
+	{
+        INDIRECT_BOUNDARIES_ = new IndirectBoundaries[15];
+        // UCOL_RESET_TOP_VALUE
+        INDIRECT_BOUNDARIES_[0] = new IndirectBoundaries(
+                        RuleBasedCollator.UCA_CONSTANTS_.LAST_NON_VARIABLE_, 
+                        RuleBasedCollator.UCA_CONSTANTS_.FIRST_IMPLICIT_);
+        // UCOL_FIRST_PRIMARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[1] = new IndirectBoundaries(
+                    RuleBasedCollator.UCA_CONSTANTS_.FIRST_PRIMARY_IGNORABLE_, 
+                    null);
+        // UCOL_LAST_PRIMARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[2] = new IndirectBoundaries(
+                    RuleBasedCollator.UCA_CONSTANTS_.LAST_PRIMARY_IGNORABLE_, 
+                    null);
+          
+        // UCOL_FIRST_SECONDARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[3] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_SECONDARY_IGNORABLE_, 
+                   null);
+        // UCOL_LAST_SECONDARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[4] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_SECONDARY_IGNORABLE_, 
+                   null);
+        // UCOL_FIRST_TERTIARY_IGNORABLE 
+        INDIRECT_BOUNDARIES_[5] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_TERTIARY_IGNORABLE_, 
+                   null);
+        // UCOL_LAST_TERTIARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[6] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_TERTIARY_IGNORABLE_, 
+                   null);
+        // UCOL_FIRST_VARIABLE;
+        INDIRECT_BOUNDARIES_[7] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_VARIABLE_, 
+                   null);  
+        // UCOL_LAST_VARIABLE 
+        INDIRECT_BOUNDARIES_[8] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_VARIABLE_, 
+                   null);
+        // UCOL_FIRST_NON_VARIABLE
+        INDIRECT_BOUNDARIES_[9] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_NON_VARIABLE_, 
+                   null);
+        // UCOL_LAST_NON_VARIABLE
+        INDIRECT_BOUNDARIES_[10] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_NON_VARIABLE_, 
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_IMPLICIT_);
+        // UCOL_FIRST_IMPLICIT 
+        INDIRECT_BOUNDARIES_[11] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_IMPLICIT_,
+                   null); 
+        // UCOL_LAST_IMPLICIT 
+        INDIRECT_BOUNDARIES_[12] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_IMPLICIT_, 
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_TRAILING_); 
+        // UCOL_FIRST_TRAILING 
+        INDIRECT_BOUNDARIES_[13] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_TRAILING_, 
+                   null); 
+        // UCOL_LAST_TRAILING 
+        INDIRECT_BOUNDARIES_[14] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_TRAILING_, 
+                   null); 
+        INDIRECT_BOUNDARIES_[14].m_limitCE_ 
+                 = RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_SPECIAL_MIN_ << 24; 
+
+		RULES_OPTIONS_ = new TokenOption[17];
+		String option[] = {"non-ignorable", "shifted"};
+		int value[] = {RuleBasedCollator.AttributeValue.NON_IGNORABLE_, 
+	                   RuleBasedCollator.AttributeValue.SHIFTED_};
+	    RULES_OPTIONS_[0] = new TokenOption("alternate", 
+	                          RuleBasedCollator.Attribute.ALTERNATE_HANDLING_, 
+	                          option, value);
+        option = new String[1];
+        option[0] = "2";
+        value = new int[1];
+        value[0] = RuleBasedCollator.AttributeValue.ON_;
+        RULES_OPTIONS_[1] = new TokenOption("backwards", 
+	                             RuleBasedCollator.Attribute.FRENCH_COLLATION_,
+                                 option, value);
+	    String offonoption[] = new String[2];
+        offonoption[0] = "off"; 
+        offonoption[1] = "on";
+        int offonvalue[] = new int[2];
+        offonvalue[0] = RuleBasedCollator.AttributeValue.OFF_; 
+        offonvalue[1] = RuleBasedCollator.AttributeValue.ON_;
+        RULES_OPTIONS_[2] = new TokenOption("caseLevel", 
+                                       RuleBasedCollator.Attribute.CASE_LEVEL_,
+                                       offonoption, offonvalue);
+	    option = new String[3];
+        option[0] = "lower"; 
+        option[1] = "upper";
+        option[2] = "off";
+        value = new int[3];
+        value[0] = RuleBasedCollator.AttributeValue.LOWER_FIRST_;
+        value[1] = RuleBasedCollator.AttributeValue.UPPER_FIRST_;
+        value[2] = RuleBasedCollator.AttributeValue.OFF_;
+        RULES_OPTIONS_[3] = new TokenOption("caseFirst", 
+                                       RuleBasedCollator.Attribute.CASE_FIRST_, 
+                                       option, value);
+        RULES_OPTIONS_[4] = new TokenOption("normalization", 
+                               RuleBasedCollator.Attribute.NORMALIZATION_MODE_,
+        	                   offonoption, offonvalue);
+	    RULES_OPTIONS_[5] = new TokenOption("hiraganaQ", 
+	                     RuleBasedCollator.Attribute.HIRAGANA_QUATERNARY_MODE_,
+	    	             offonoption, offonvalue);
+        option = new String[5];
+        option[0] = "1"; 
+        option[1] = "2";
+        option[2] = "3";
+        option[3] = "4"; 
+        option[4] = "I";
+        value = new int[5];
+        value[0] = RuleBasedCollator.AttributeValue.PRIMARY_;
+        value[1] = RuleBasedCollator.AttributeValue.SECONDARY_;
+        value[2] = RuleBasedCollator.AttributeValue.TERTIARY_;
+        value[3] = RuleBasedCollator.AttributeValue.QUATERNARY_;
+        value[4] = RuleBasedCollator.AttributeValue.IDENTICAL_;
+	    RULES_OPTIONS_[6] = new TokenOption("strength",
+                                         RuleBasedCollator.Attribute.STRENGTH_, 
+                                         option, value);
+        RULES_OPTIONS_[7] = new TokenOption("variable top", 
+	                              RuleBasedCollator.Attribute.LIMIT_, 
+                                  null, null);
+	    RULES_OPTIONS_[8] = new TokenOption("rearrange", 
+	                              RuleBasedCollator.Attribute.LIMIT_, 
+                                  null, null);
+        option = new String[3];
+        option[0] = "1";
+        option[1] = "2";
+        option[2] = "3";
+        value = new int[3];
+        value[0] = RuleBasedCollator.AttributeValue.PRIMARY_;
+        value[1] = RuleBasedCollator.AttributeValue.SECONDARY_;
+        value[2] = RuleBasedCollator.AttributeValue.TERTIARY_;
+	    RULES_OPTIONS_[9] = new TokenOption("before", 
+                                  RuleBasedCollator.Attribute.LIMIT_, 
+                                  option, value);
+	    RULES_OPTIONS_[10] = new TokenOption("top", 
+                                  RuleBasedCollator.Attribute.LIMIT_, 
+                                  null, null);
+        String firstlastoption[] = new String[7];
+        firstlastoption[0] = "primary";
+        firstlastoption[1] = "secondary";
+        firstlastoption[2] = "tertiary";
+        firstlastoption[3] = "variable";
+        firstlastoption[4] = "regular";
+        firstlastoption[5] = "implicit";
+        firstlastoption[6] = "trailing";
+
+        int firstlastvalue[] = new int[7];
+        Arrays.fill(firstlastvalue, RuleBasedCollator.AttributeValue.PRIMARY_);
+
+	    RULES_OPTIONS_[11] = new TokenOption("first", 
+                                  RuleBasedCollator.Attribute.LIMIT_, 
+	    	                      firstlastoption, firstlastvalue);
+        RULES_OPTIONS_[12] = new TokenOption("last", 
+                                  RuleBasedCollator.Attribute.LIMIT_, 
+	    	                      firstlastoption, firstlastvalue);
+	    RULES_OPTIONS_[13] = new TokenOption("undefined", 
+	                              RuleBasedCollator.Attribute.LIMIT_, 
+                                  null, null);
+	    RULES_OPTIONS_[14] = new TokenOption("scriptOrder", 
+	                              RuleBasedCollator.Attribute.LIMIT_, 
+                                  null, null);
+	    RULES_OPTIONS_[15] = new TokenOption("charsetname", 
+	                              RuleBasedCollator.Attribute.LIMIT_, 
+                                  null, null);
+	    RULES_OPTIONS_[16] = new TokenOption("charset", 
+	                              RuleBasedCollator.Attribute.LIMIT_, 
+                                  null, null);
+	};
+    
+    // private methods -------------------------------------------------------
+
+    /**
+     * Assembles the token list
+     * @param
+     * @exception ParseException thrown when rules syntax fails
+     */
+    private int assembleTokenList() throws ParseException
+    {
+		Token lastToken = null;
+	    m_parsedToken_.m_strength_ = TOKEN_UNSET_; 
+        int sourcelimit = m_source_.length();
+        int expandNext = 0;
+		
+        while (m_current_ < sourcelimit) {
+            m_parsedToken_.m_prefixOffset_ = 0;
+		    parseNextToken(lastToken == null);
+		    char specs = m_parsedToken_.m_flags_;
+		    boolean variableTop = ((specs & TOKEN_VARIABLE_TOP_MASK_) != 0);
+		    boolean top = ((specs & TOKEN_TOP_MASK_) != 0);
+		    int lastStrength = TOKEN_UNSET_;
+            if (lastToken != null) {
+                lastStrength = lastToken.m_strength_;
+            }
+            Token key = new Token();
+            key.m_source_ = m_parsedToken_.m_charsLen_ << 24 
+                                             | m_parsedToken_.m_charsOffset_;
+            key.m_rules_ = m_source_;
+            // 4 Lookup each source in the CharsToToken map, and find a 
+            // sourcetoken
+            Token sourceToken = (Token)m_hashTable_.get(key);
+            if (m_parsedToken_.m_strength_ != TOKEN_RESET_) {
+		        if (lastToken == null) { 
+		        	// this means that rules haven't started properly
+		            throwParseException(m_source_.toString(), 0);
+		        }
+                //  6 Otherwise (when relation != reset)
+               if (sourceToken == null) {
+                   // If sourceToken is null, create new one
+		           sourceToken = new Token();
+     		       sourceToken.m_rules_ = m_source_;
+		           sourceToken.m_source_ = m_parsedToken_.m_charsLen_ << 24 
+		                                   | m_parsedToken_.m_charsOffset_;
+		           sourceToken.m_prefix_ = m_parsedToken_.m_prefixLen_ << 24 
+		                                   | m_parsedToken_.m_prefixOffset_;
+		           // TODO: this should also handle reverse
+		           sourceToken.m_polarity_ = TOKEN_POLARITY_POSITIVE_; 
+		           sourceToken.m_next_ = null;
+		           sourceToken.m_previous_ = null;
+		           sourceToken.m_CELength_ = 0;
+		           sourceToken.m_expCELength_ = 0;
+		           m_hashTable_.put(sourceToken, sourceToken);
+		        } 
+		        else {
+		            // we could have fished out a reset here
+		            if (sourceToken.m_strength_ != TOKEN_RESET_ 
+		                && lastToken != sourceToken) {
+		                // otherwise remove sourceToken from where it was.
+		                if (sourceToken.m_next_ != null) {
+		                    if (sourceToken.m_next_.m_strength_ 
+		                                           > sourceToken.m_strength_) {
+		                        sourceToken.m_next_.m_strength_ 
+		                                           = sourceToken.m_strength_;
+		                    }
+		                    sourceToken.m_next_.m_previous_ 
+		                                            = sourceToken.m_previous_;
+		                } 
+		                else {
+		                    sourceToken.m_listHeader_.m_last_ 
+		                                            = sourceToken.m_previous_;
+		                }
+		                if (sourceToken.m_previous_ != null) {
+		                    sourceToken.m_previous_.m_next_ 
+		                                                = sourceToken.m_next_;
+		                } 
+		                else {
+		                    sourceToken.m_listHeader_.m_first_ 
+		                                                = sourceToken.m_next_;
+		                }
+		                sourceToken.m_next_ = null;
+		                sourceToken.m_previous_ = null;
+		            }
+		        }
+        		sourceToken.m_strength_ = m_parsedToken_.m_strength_;
+                sourceToken.m_listHeader_ = lastToken.m_listHeader_;
+                
+                // 1.  Find the strongest strength in each list, and set 
+                // strongestP and strongestN accordingly in the headers. 
+                if (lastStrength == TOKEN_RESET_
+                    || sourceToken.m_listHeader_.m_first_ == null) {
+                    // If LAST is a reset insert sourceToken in the list.
+			        if (sourceToken.m_listHeader_.m_first_ == null) {
+			            sourceToken.m_listHeader_.m_first_ = sourceToken;
+			            sourceToken.m_listHeader_.m_last_ = sourceToken;
+			        } 
+			        else { // we need to find a place for us
+			               // and we'll get in front of the same strength
+			            if (sourceToken.m_listHeader_.m_first_.m_strength_ 
+			                                     <= sourceToken.m_strength_) {
+			                sourceToken.m_next_ 
+			                              = sourceToken.m_listHeader_.m_first_;
+			                sourceToken.m_next_.m_previous_ = sourceToken;
+			                sourceToken.m_listHeader_.m_first_ = sourceToken;
+			                sourceToken.m_previous_ = null;
+			            } 
+			            else {
+			                lastToken = sourceToken.m_listHeader_.m_first_;
+			                while (lastToken.m_next_ != null 
+			                       && lastToken.m_next_.m_strength_ 
+			                                     > sourceToken.m_strength_) {
+			                    lastToken = lastToken.m_next_;
+			                }
+			                if (lastToken.m_next_ != null) {
+			                    lastToken.m_next_.m_previous_ = sourceToken;
+			                } 
+			                else {
+			                    sourceToken.m_listHeader_.m_last_ 
+			                                                   = sourceToken;
+			                }
+			                sourceToken.m_previous_ = lastToken;
+			                sourceToken.m_next_ = lastToken.m_next_;
+			                lastToken.m_next_ = sourceToken;
+			            }
+			        }
+                } 
+                else {
+                    // Otherwise (when LAST is not a reset) 
+                    // if polarity (LAST) == polarity(relation), insert 
+                    // sourceToken after LAST, otherwise insert before. 
+                    // when inserting after or before, search to the next 
+                    // position with the same strength in that direction. 
+                    // (This is called postpone insertion).        
+			        if (sourceToken != lastToken) { 
+			            if (lastToken.m_polarity_ == sourceToken.m_polarity_) {
+			                while (lastToken.m_next_ != null 
+			                       && lastToken.m_next_.m_strength_ 
+			                                       > sourceToken.m_strength_) {
+			                    lastToken = lastToken.m_next_;
+			                }
+			                sourceToken.m_previous_ = lastToken;
+			                if (lastToken.m_next_ != null) {
+			                    lastToken.m_next_.m_previous_ = sourceToken;
+			                } 
+			                else {
+			                    sourceToken.m_listHeader_.m_last_ = sourceToken;
+			                }
+			                sourceToken.m_next_ = lastToken.m_next_;
+			                lastToken.m_next_ = sourceToken;
+			            } 
+			            else {
+			                while (lastToken.m_previous_ != null 
+			                       && lastToken.m_previous_.m_strength_ 
+		                                        > sourceToken.m_strength_) {
+			                    lastToken = lastToken.m_previous_;
+			                }
+			                sourceToken.m_next_ = lastToken;
+			                if (lastToken.m_previous_ != null) {
+			                    lastToken.m_previous_.m_next_ = sourceToken;
+			                } 
+			                else {
+			                    sourceToken.m_listHeader_.m_first_ 
+			                                                     = sourceToken;
+			                }
+			                sourceToken.m_previous_ = lastToken.m_previous_;
+			                lastToken.m_previous_ = sourceToken;
+			            }
+			        } 
+			        else { // repeated one thing twice in rules, stay with the 
+			        	   // stronger strength 
+			            if (lastStrength < sourceToken.m_strength_) {
+			                sourceToken.m_strength_ = lastStrength;
+			            }
+			        }
+                }
+                // if the token was a variable top, we're gonna put it in 
+                if (variableTop == true && m_variableTop_ == null) {
+                    variableTop = false;
+                    m_variableTop_ = sourceToken;
+                }
+                // Treat the expansions.
+                // There are two types of expansions: explicit (x / y) and 
+                // reset based propagating expansions 
+                // (&abc * d * e <=> &ab * d / c * e / c) 
+                // if both of them are in effect for a token, they are combined.
+               sourceToken.m_expansion_ = m_parsedToken_.m_extensionLen_ << 24 
+                                          | m_parsedToken_.m_extensionOffset_;
+               if (expandNext != 0) {
+		           if (sourceToken.m_strength_ == RuleBasedCollator.PRIMARY) { 
+		               // primary strength kills off the implicit expansion 
+		               expandNext = 0;
+		           } 
+		           else if (sourceToken.m_expansion_ == 0) { 
+		               // if there is no expansion, implicit is just added to 
+		               // the token 
+		               sourceToken.m_expansion_ = expandNext;
+		           } 
+		           else { 
+		               // there is both explicit and implicit expansion. 
+		               // We need to make a combination
+		               int start = expandNext & 0xFFFFFF;
+                       int size = expandNext >>> 24;
+                       if (size > 0) {
+		                  m_source_.append(m_source_.substring(start,
+                                                               start + size));
+                       }
+   		               start = m_parsedToken_.m_extensionOffset_;
+		               m_source_.append(m_source_.substring(start, 
+		                              start + m_parsedToken_.m_extensionLen_));
+		               sourceToken.m_expansion_ = (size 
+		                               + m_parsedToken_.m_extensionLen_) << 24 
+		                               | m_extraCurrent_;
+		               m_extraCurrent_ += size + m_parsedToken_.m_extensionLen_;
+		           }
+		        }
+            } 
+            else {
+	            if (lastToken != null && lastStrength == TOKEN_RESET_) {
+	                // if the previous token was also a reset, this means that 
+	                // we have two consecutive resets and we want to remove the 
+	                // previous one if empty
+	                if (m_listHeader_[m_resultLength_ - 1].m_first_ == null) {
+	                    m_resultLength_ --;
+	                }
+	            }
+	            if (sourceToken == null) { 
+	                // this is a reset, but it might still be somewhere in the 
+	                // tailoring, in shorter form
+	                int searchCharsLen = m_parsedToken_.m_charsLen_;
+	                while (searchCharsLen > 1 && sourceToken == null) {
+	                    searchCharsLen --;
+	                    // key = searchCharsLen << 24 | charsOffset;
+			            Token tokenkey = new Token();
+			            tokenkey.m_source_ = searchCharsLen << 24 
+			                                 | m_parsedToken_.m_charsOffset_;
+			            tokenkey.m_rules_ = m_source_;
+			            sourceToken = (Token)m_hashTable_.get(tokenkey);
+			        }
+			        if (sourceToken != null) {
+			            expandNext = (m_parsedToken_.m_charsLen_ 
+			                                          - searchCharsLen) << 24 
+			                            | (m_parsedToken_.m_charsOffset_ 
+			                               + searchCharsLen);
+			        }
+			    }
+		        if ((specs & TOKEN_BEFORE_) != 0) {
+                    if (top == false) { 
+    		            // we're doing before & there is no indirection
+    	                int strength = (specs & TOKEN_BEFORE_) - 1;
+    	                if (sourceToken != null 
+    	                    && sourceToken.m_strength_ != TOKEN_RESET_) { 
+    	                    // this is a before that is already ordered in the UCA 
+    	                    // - so we need to get the previous with good strength
+    			            while (sourceToken.m_strength_ > strength 
+    			                   && sourceToken.m_previous_ != null) {
+    			                sourceToken = sourceToken.m_previous_;
+    			            }
+    			            // here, either we hit the strength or NULL
+    			            if (sourceToken.m_strength_ == strength) {
+    			                if (sourceToken.m_previous_ != null) {
+    			                    sourceToken = sourceToken.m_previous_;
+    			                } 
+    			                else { // start of list
+    			                    sourceToken 
+    			                              = sourceToken.m_listHeader_.m_reset_;
+    			                }              
+    			            } 
+    			            else { // we hit NULL, we should be doing the else part 
+    			                sourceToken = sourceToken.m_listHeader_.m_reset_;
+    			                sourceToken = getVirginBefore(sourceToken, 
+    			                                              strength);
+    			            }
+    			        } 
+    			        else {
+    			            sourceToken = getVirginBefore(sourceToken, strength);
+                        } 
+                    }
+                    else { 
+                        // this is both before and indirection
+                        top = false; 
+                        m_listHeader_[m_resultLength_] = new TokenListHeader();
+                        m_listHeader_[m_resultLength_].m_previousCE_ = 0; 
+                        m_listHeader_[m_resultLength_].m_previousContCE_ = 0; 
+                        m_listHeader_[m_resultLength_].m_indirect_ = true; 
+                        // we need to do slightly more work. we need to get the 
+                        // baseCE using the inverse UCA & getPrevious. The next 
+                        // bound is not set, and will be decided in ucol_bld
+                        int strength = (specs & TOKEN_BEFORE_) - 1; 
+                        int baseCE = INDIRECT_BOUNDARIES_[
+                                   m_parsedToken_.m_indirectIndex_].m_startCE_;
+                        int baseContCE = INDIRECT_BOUNDARIES_[
+                               m_parsedToken_.m_indirectIndex_].m_startContCE_;
+                        int ce[] = new int[2]; 
+                        CollationParsedRuleBuilder.InverseUCA invuca
+                                     = CollationParsedRuleBuilder.INVERSE_UCA_;
+                        invuca.getInversePrevCE(baseCE, baseContCE, strength, 
+                                                ce);
+                        m_listHeader_[m_resultLength_].m_baseCE_ = ce[0];
+                        m_listHeader_[m_resultLength_].m_baseContCE_ = ce[1];
+                        m_listHeader_[m_resultLength_].m_nextCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_nextContCE_ = 0;
+                        
+                        sourceToken = new Token();
+                        expandNext = initAReset(0, sourceToken);    
+    			    }
+			    }
+	            // 5 If the relation is a reset: 
+	            // If sourceToken is null 
+	            // Create new list, create new sourceToken, make the baseCE 
+	            // from source, put the sourceToken in ListHeader of the new 
+	            // list
+	            if (sourceToken == null) {
+                    if (m_listHeader_[m_resultLength_] == null) {
+	            	    m_listHeader_[m_resultLength_] = new TokenListHeader();
+                    }
+	                // 3 Consider each item: relation, source, and expansion: 
+	                // e.g. ...< x / y ... 
+	                // First convert all expansions into normal form. 
+	                // Examples: 
+	                // If "xy" doesn't occur earlier in the list or in the UCA, 
+	                // convert &xy * c * d * ... into &x * c/y * d * ... 
+	                // Note: reset values can never have expansions, although 
+	                // they can cause the very next item to have one. They may 
+	                // be contractions, if they are found earlier in the list. 
+			        if (top == false) {
+			            CollationElementIterator coleiter 
+                        = RuleBasedCollator.UCA_.getCollationElementIterator(
+                        	m_source_.substring(m_parsedToken_.m_charsOffset_, 
+                                            	m_parsedToken_.m_charsOffset_ 
+                                            	+ m_parsedToken_.m_charsLen_));
+			
+			            int CE = coleiter.next();
+			            // offset to the character in the full rule string
+			            int expand = coleiter.getOffset() 
+			                         + m_parsedToken_.m_charsOffset_;
+			            int SecondCE = coleiter.next();
+			            
+			            m_listHeader_[m_resultLength_].m_baseCE_ 
+			                                                 = CE & 0xFFFFFF3F;
+			            if (RuleBasedCollator.isContinuation(SecondCE)) {
+			                m_listHeader_[m_resultLength_].m_baseContCE_ 
+			                                                        = SecondCE;
+			            } 
+			            else {
+			                m_listHeader_[m_resultLength_].m_baseContCE_ = 0;
+			            }
+			            m_listHeader_[m_resultLength_].m_nextCE_ = 0;
+			            m_listHeader_[m_resultLength_].m_nextContCE_ = 0;
+			            m_listHeader_[m_resultLength_].m_previousCE_ = 0;
+			            m_listHeader_[m_resultLength_].m_previousContCE_ = 0;
+			            m_listHeader_[m_resultLength_].m_indirect_ = false;
+			            sourceToken = new Token();
+			            expandNext = initAReset(expand, sourceToken);
+			        } 
+			        else { // top == TRUE
+			            top = false;
+			            m_listHeader_[m_resultLength_].m_previousCE_ = 0;
+			            m_listHeader_[m_resultLength_].m_previousContCE_ = 0;
+			            m_listHeader_[m_resultLength_].m_indirect_ = true;
+			            IndirectBoundaries ib = INDIRECT_BOUNDARIES_[
+                                              m_parsedToken_.m_indirectIndex_];
+			            m_listHeader_[m_resultLength_].m_baseCE_ 
+			                                                   = ib.m_startCE_;
+			            m_listHeader_[m_resultLength_].m_baseContCE_ 
+		                                                   = ib.m_startContCE_;
+			            m_listHeader_[m_resultLength_].m_nextCE_ 
+			                                                   = ib.m_limitCE_;
+			            m_listHeader_[m_resultLength_].m_nextContCE_ 
+			                                               = ib.m_limitContCE_;
+			            sourceToken = new Token();
+			            expandNext = initAReset(0, sourceToken);
+	                }
+		        } 
+		        else { // reset to something already in rules
+		            top = false;
+		        }
+		    }
+		    // 7 After all this, set LAST to point to sourceToken, and goto 
+		    // step 3.
+		    lastToken = sourceToken;
+		}
+		  
+		if (m_resultLength_ > 0 
+            && m_listHeader_[m_resultLength_ - 1].m_first_ == null) {
+		    m_resultLength_ --;
+		}
+		return m_resultLength_;
+	}
+     
+    /**
+     * Formats and throws a ParseException
+     * @param rules collation rule that failed
+     * @param offset failed offset in rules
+     * @throws ParseException with failure information
+     */
+    private static final void throwParseException(String rules, int offset)
+                                                          throws ParseException
+    {
+        // for pre-context
+        String precontext = rules.substring(0, offset);
+        String postcontext = rules.substring(offset, rules.length());
+        StringBuffer error = new StringBuffer(
+                                    "Parse error occurred in rule at offset "); 
+        error.append(offset); 
+        error.append("\n after the prefix \"");
+        error.append(precontext);
+        error.append("\" before the suffix \"");
+        error.append(postcontext);
+        throw new ParseException(error.toString(), offset);
+    }
+    
+    private final boolean doSetTop() {
+        m_parsedToken_.m_charsOffset_ = m_extraCurrent_;
+        m_source_.append((char)0xFFFE);
+        IndirectBoundaries ib = 
+                  INDIRECT_BOUNDARIES_[m_parsedToken_.m_indirectIndex_];
+        m_source_.append((char)(ib.m_startCE_ >> 16));
+        m_source_.append((char)(ib.m_startCE_ & 0xFFFF));
+        m_extraCurrent_ += 3;
+        if (INDIRECT_BOUNDARIES_[m_parsedToken_.m_indirectIndex_
+                                                       ].m_startContCE_ == 0) {
+            m_parsedToken_.m_charsLen_ = 3;
+        }
+        else { 
+            m_source_.append((char)(INDIRECT_BOUNDARIES_[
+                                        m_parsedToken_.m_indirectIndex_
+                                    ].m_startContCE_ >> 16)); 
+            m_source_.append((char)(INDIRECT_BOUNDARIES_[
+                                        m_parsedToken_.m_indirectIndex_
+                                    ].m_startContCE_ & 0xFFFF)); 
+            m_extraCurrent_ += 2;
+            m_parsedToken_.m_charsLen_ = 5;
+        } 
+        return true;
+    }
+    
+    /**
+     * Getting the next token
+     * @param startofrules flag indicating if we are at the start of rules
+     * @return the offset of the rules
+     * @exception ParseException thrown when rule parsing fails
+     */
+    private int parseNextToken(boolean startofrules) throws ParseException
+    { 
+	    // parsing part
+	    boolean variabletop = false;
+	    boolean top = false;
+	    boolean inchars = true;
+	    boolean inquote = false;
+	    boolean wasinquote = false;
+	    byte before = 0;
+	    boolean isescaped = false;
+	    int /*newcharslen = 0,*/ newextensionlen = 0;
+	    int /*charsoffset = 0,*/ extensionoffset = 0;
+	    int newstrength = TOKEN_UNSET_; 
+	
+        m_parsedToken_.m_charsLen_ = 0;
+	    m_parsedToken_.m_charsOffset_ = 0;
+        m_parsedToken_.m_prefixOffset_ = 0; 
+        m_parsedToken_.m_prefixLen_ = 0;
+	    m_parsedToken_.m_indirectIndex_ = 0;
+	
+	    int limit = m_rules_.length();
+	    while (m_current_ < limit) {
+	        char ch = m_source_.charAt(m_current_);
+	        if (inquote) {
+		        if (ch == 0x0027) { // '\''
+		            inquote = false;
+		        } 
+                else {
+		            if ((m_parsedToken_.m_charsLen_ == 0) || inchars) {
+		                 if (m_parsedToken_.m_charsLen_ == 0) {
+		                     m_parsedToken_.m_charsOffset_ = m_extraCurrent_;
+		                 }
+		                 m_parsedToken_.m_charsLen_ ++;
+		            } 
+                    else {
+		                if (newextensionlen == 0) {
+		                    extensionoffset = m_extraCurrent_;
+		                }
+		                newextensionlen ++;
+		            }
+		        }
+	        }
+            else if (isescaped) {
+	            isescaped = false;
+	            if (newstrength == TOKEN_UNSET_) {
+	                throwParseException(m_rules_, m_current_);
+	            }
+	            if (ch != 0 && m_current_ != limit) {
+	                if (inchars) {
+	                    if (m_parsedToken_.m_charsLen_ == 0) {
+	                        m_parsedToken_.m_charsOffset_ = m_current_;
+	                    }
+	                    m_parsedToken_.m_charsLen_ ++;
+	                } 
+                    else {
+	                    if (newextensionlen == 0) {
+	                        extensionoffset = m_current_;
+	                    }
+	                    newextensionlen ++;
+	                }
+	            }
+	        }
+            else {
+                if (!UCharacterProperty.isRuleWhiteSpace(ch)) {
+                    // Sets the strength for this entry
+	                switch (ch) {
+	                case 0x003D : // '='
+	                    if (newstrength != TOKEN_UNSET_) {
+	                        return doEndParseNextToken(newstrength, 
+                                                       top, 
+                                                       extensionoffset,
+                                                       newextensionlen, 
+                                                       variabletop, before);
+	                    }
+	                    // if we start with strength, we'll reset to top
+	                    if (startofrules == true) {
+                            m_parsedToken_.m_indirectIndex_ = 5;
+                            top = doSetTop();
+	                        return doEndParseNextToken(TOKEN_RESET_, 
+                                                       top, 
+                                                       extensionoffset, 
+                                                       newextensionlen, 
+                                                       variabletop, before);
+	                    }
+	                    newstrength = Collator.IDENTICAL;
+	                    break;
+	                case 0x002C : // ','
+	                    if (newstrength != TOKEN_UNSET_) {
+	                        return doEndParseNextToken(newstrength, 
+                                                       top, 
+                                                       extensionoffset, 
+                                                       newextensionlen, 
+                                                       variabletop, before);
+	                    }
+	                    // if we start with strength, we'll reset to top
+	                    if (startofrules == true) {
+                            m_parsedToken_.m_indirectIndex_ = 5;
+                            top = doSetTop();
+	                        return doEndParseNextToken(TOKEN_RESET_, 
+                                                       top, 
+                                                       extensionoffset, 
+                                                       newextensionlen, 
+                                                       variabletop, before);
+	                    }
+	                    newstrength = Collator.TERTIARY;
+	                    break;
+	                case 0x003B : // ';'
+	                    if (newstrength != TOKEN_UNSET_) {
+	                        return doEndParseNextToken(newstrength, 
+                                                       top, 
+                                                       extensionoffset, 
+                                                       newextensionlen, 
+                                                       variabletop, before);   
+	                    }
+	                    // if we start with strength, we'll reset to top
+	                    if (startofrules == true) {
+                            m_parsedToken_.m_indirectIndex_ = 5;
+                            top = doSetTop();
+                            return doEndParseNextToken(TOKEN_RESET_, 
+                                                       top, 
+                                                       extensionoffset, 
+                                                       newextensionlen, 
+                                                       variabletop, before);
+	                    }
+	                    newstrength = Collator.SECONDARY;
+	                    break;
+	                case 0x003C : // '<'
+	                    if (newstrength != TOKEN_UNSET_) {
+	                        return doEndParseNextToken(newstrength, 
+                                                       top, 
+                                                       extensionoffset, 
+                                                       newextensionlen, 
+                                                       variabletop, before);
+	                    }
+	                    // if we start with strength, we'll reset to top
+		                if (startofrules == true) {
+                            m_parsedToken_.m_indirectIndex_ = 5;
+                            top = doSetTop();
+                            return doEndParseNextToken(TOKEN_RESET_, 
+                                                       top, 
+                                                       extensionoffset, 
+                                                       newextensionlen, 
+                                                       variabletop, before);
+		                }
+		                // before this, do a scan to verify whether this is 
+		                // another strength
+		                if (m_source_.charAt(m_current_ + 1) == 0x003C) {
+		                    m_current_ ++;
+		                    if (m_source_.charAt(m_current_ + 1) == 0x003C) {
+		                        m_current_ ++; // three in a row!
+		                        newstrength = Collator.TERTIARY;
+		                    } 
+		                    else { // two in a row 
+		                        newstrength = Collator.SECONDARY;
+		                    }
+		                } 
+		                else { // just one 
+		                    newstrength = Collator.PRIMARY;
+		                }
+		                break;
+		            case 0x0026 : // '&'
+		                if (newstrength != TOKEN_UNSET_) {
+		                    return doEndParseNextToken(newstrength, 
+                                                       top, 
+                                                       extensionoffset, 
+                                                       newextensionlen, 
+                                                       variabletop, before);
+		                }
+		                newstrength = TOKEN_RESET_; // PatternEntry::RESET = 0
+		                break;
+		            case 0x005b : // '['
+		                // options - read an option, analyze it
+		                int optionend = m_rules_.indexOf(0x005d, m_current_);
+		                if (optionend != -1) { // ']'
+		                    byte result = readAndSetOption(optionend);
+		                    m_current_ = optionend;
+		                    if ((result & TOKEN_TOP_MASK_) != 0) {
+		                        if (newstrength == TOKEN_RESET_) { 
+                                    top = doSetTop();
+                                    if (before != 0) { 
+                                        // This is a combination of before and 
+                                        // indirection like 
+                                        // '&[before 2][first regular]<b' 
+                                        m_source_.append((char)0x002d); 
+                                        m_source_.append((char)before); 
+                                        m_extraCurrent_ += 2; 
+                                        m_parsedToken_.m_charsLen_ += 2;
+                                    } 
+		                            m_current_ ++;
+		                            return doEndParseNextToken(newstrength, 
+		                                               true, 
+                                                       extensionoffset, 
+                                                       newextensionlen, 
+                                                       variabletop, before);
+		                        } 
+		                        else {
+		                            throwParseException(m_rules_, m_current_);
+		                        }
+		                    } 
+		                    else if ((result & TOKEN_VARIABLE_TOP_MASK_) != 0) {
+		                        if (newstrength != TOKEN_RESET_ 
+		                            && newstrength != TOKEN_UNSET_) {
+		                            variabletop = true;
+		                            m_parsedToken_.m_charsOffset_ = m_extraCurrent_;
+		                            m_source_.append((char)0xFFFF);
+		                            m_extraCurrent_ ++;
+		                            m_current_ ++;
+                                    m_parsedToken_.m_charsLen_ = 1;
+		                            return doEndParseNextToken(newstrength, 
+		                                               top, 
+                                                       extensionoffset, 
+                                                       newextensionlen, 
+                                                       variabletop, before);
+		                        } 
+		                        else {
+		                            throwParseException(m_rules_, m_current_);
+		                        }
+		                    } 
+		                    else if ((result & TOKEN_BEFORE_) != 0){
+		                        if (newstrength == TOKEN_RESET_) {
+		                            before = (byte)(result & TOKEN_BEFORE_);
+		                        } 
+		                        else {
+		                            throwParseException(m_rules_, m_current_);		
+		                        }
+		                    }  
+		                }
+		                break;
+		            case 0x002F : // '/'
+		                wasinquote = false; // if we were copying source 
+		                                    // characters, we want to stop now
+		                inchars = false; // we're now processing expansion 
+		                break;
+		            case 0x005C : // back slash for escaped chars
+		                isescaped = true;
+		                break;
+		            // found a quote, we're gonna start copying
+		            case 0x0027 : //'\''
+		                if (newstrength == TOKEN_UNSET_) { 
+		                    // quote is illegal until we have a strength
+		                    throwParseException(m_rules_, m_current_);
+                        }
+		                inquote = true;
+		                if (inchars) { // we're doing characters 
+		                    if (wasinquote == false) {
+		                        m_parsedToken_.m_charsOffset_ = m_extraCurrent_;
+		                    }
+		                    if (m_parsedToken_.m_charsLen_ != 0) {
+		                    	m_source_.append(m_source_.substring(
+                                                     m_current_ - m_parsedToken_.m_charsLen_, 
+		                                             m_current_));
+		                        m_extraCurrent_ += m_parsedToken_.m_charsLen_;
+		                    }
+		                    m_parsedToken_.m_charsLen_ ++;
+		                } 
+		                else { // we're doing an expansion
+		                    if (wasinquote == false) {
+		                        extensionoffset = m_extraCurrent_;
+		                    }
+		                    if (newextensionlen != 0) {
+		                        m_source_.append(m_source_.substring(
+		                                           m_current_ - newextensionlen,
+		                                           m_current_));
+		                        m_extraCurrent_ += newextensionlen;
+		                    }
+		                    newextensionlen ++;
+		                }
+		                wasinquote = true;
+		                m_current_ ++;
+		                ch = m_source_.charAt(m_current_); 
+		                if (ch == 0x0027) { // copy the double quote
+		                    m_source_.append(ch);
+		                    m_extraCurrent_ ++;
+		                    inquote = false;
+		                }
+		                break;
+		            // '@' is french only if the strength is not currently set
+		            // if it is, it's just a regular character in collation  
+		            case 0x0040 : // '@'
+		                if (newstrength == TOKEN_UNSET_) {
+		                    m_options_.m_isFrenchCollation_ = true;
+		                break;
+		            }
+		            case 0x007C : //|
+		                // this means we have actually been reading prefix part 
+		                // we want to store read characters to the prefix part 
+		                // and continue reading the characters (proper way 
+		                // would be to restart reading the chars, but in that 
+		                // case we would have to complicate the token hasher, 
+		                // which I do not intend to play with. Instead, we will 
+		                // do prefixes when prefixes are due (before adding the 
+		                // elements).
+		                m_parsedToken_.m_prefixOffset_ = m_parsedToken_.m_charsOffset_;
+		                m_parsedToken_.m_prefixLen_ = m_parsedToken_.m_charsLen_;
+                        if (inchars) { // we're doing characters
+		                    if (wasinquote == false) {
+		                        m_parsedToken_.m_charsOffset_ = m_extraCurrent_;
+		                    }
+		                    if (m_parsedToken_.m_charsLen_ != 0) {
+                                String prefix = m_source_.substring(
+                                                      m_current_ - m_parsedToken_.m_charsLen_, 
+                                                      m_current_);
+		                    	m_source_.append(prefix);
+		                        m_extraCurrent_ += m_parsedToken_.m_charsLen_;
+		                    }
+		                    m_parsedToken_.m_charsLen_ ++;
+		                }
+		                wasinquote = true;
+		                m_current_ ++;
+		                ch = m_source_.charAt(m_current_); 
+		                break;
+                    case 0x0021: // '!' // ignoring java set thai reordering
+                        break;
+	                default :
+	                    if (newstrength == TOKEN_UNSET_) {
+	                        throwParseException(m_rules_, m_current_);
+	                    }
+	                    if (isSpecialChar(ch) && (inquote == false)) {
+	                        throwParseException(m_rules_, m_current_);
+	                    }
+	                    if (ch == 0x0000 && m_current_ + 1 == limit) {
+	                        break;
+	                    }
+	                    if (inchars) {
+	                        if (m_parsedToken_.m_charsLen_ == 0) {
+	                            m_parsedToken_.m_charsOffset_ = m_current_;
+	                        }
+	                        m_parsedToken_.m_charsLen_++;
+	                    } 
+	                    else {
+	                        if (newextensionlen == 0) {
+	                            extensionoffset = m_current_;
+	                        }
+	                        newextensionlen ++;
+	                    }	
+	                    break;
+	                }
+	            }   
+            }
+	        if (wasinquote) {
+	            if (ch != 0x27) {
+	              	m_source_.append(ch);
+	                m_extraCurrent_ ++;
+	            }
+	        }   
+	        m_current_ ++;
+	    }  
+	    return doEndParseNextToken(newstrength, top, 
+                                   extensionoffset, newextensionlen, 
+                                   variabletop, before);
+	}
+
+    /**
+     * End the next parse token
+     * @param newstrength new strength
+     * @return offset in rules, -1 for end of rules
+     */
+    private int doEndParseNextToken(int newstrength, /*int newcharslen,*/
+                                    boolean top, /*int charsoffset,*/
+                                    int extensionoffset, int newextensionlen, 
+                                    boolean variabletop, int before)
+                                    throws ParseException
+    {
+        if (newstrength == TOKEN_UNSET_) {
+            return -1;
+        }
+        if (m_parsedToken_.m_charsLen_ == 0 && top == false) {
+		    throwParseException(m_rules_, m_current_); 
+		    return -1;
+		}
+		
+		m_parsedToken_.m_strength_ = newstrength; 
+		//m_parsedToken_.m_charsOffset_ = charsoffset;
+		//m_parsedToken_.m_charsLen_ = newcharslen;
+		m_parsedToken_.m_extensionOffset_ = extensionoffset;
+	    m_parsedToken_.m_extensionLen_ = newextensionlen;
+		m_parsedToken_.m_flags_ = (char)
+		                          ((variabletop ? TOKEN_VARIABLE_TOP_MASK_ : 0)
+                                  | (top ? TOKEN_TOP_MASK_ : 0) | before);
+		return m_current_;
+    }
+    
+    /**
+     * Token before this element
+     * @param sourcetoken 
+     * @param strength collation strength
+     * @return the token before source token
+     * @exception ParseException thrown when rules have the wrong syntax
+     */
+    private Token getVirginBefore(Token sourcetoken, int strength) 
+                                                          throws ParseException
+    {
+	    // this is a virgin before - we need to fish the anchor from the UCA
+	    CollationElementIterator coleiter = null;
+	    if (sourcetoken != null) {
+            int offset = sourcetoken.m_source_ & 0xFFFFFF;
+            coleiter = RuleBasedCollator.UCA_.getCollationElementIterator(
+                                      m_source_.substring(offset, offset + 1));
+	    } 
+	    else {
+            coleiter = RuleBasedCollator.UCA_.getCollationElementIterator(
+                       m_source_.substring(m_parsedToken_.m_charsOffset_, 
+                                           m_parsedToken_.m_charsOffset_ + 1));
+	    }
+	      	
+	    int basece = coleiter.next() & 0xFFFFFF3F;
+	    int basecontce = coleiter.next();
+	    if (basecontce == CollationElementIterator.NULLORDER) {
+	        basecontce = 0;
+	    }
+	    int ce[] = new int[2]; // first ce and second ce
+	    int invpos = CollationParsedRuleBuilder.INVERSE_UCA_.getInversePrevCE(
+                                                          basece, basecontce, 
+                                                          strength, ce);
+	    int ch = CollationParsedRuleBuilder.INVERSE_UCA_.m_table_[3 * invpos 
+                                                                  + 2];
+        if ((ch &  INVERSE_SIZE_MASK_) != 0) {
+	        int offset = ch & INVERSE_OFFSET_MASK_;
+	        ch = CollationParsedRuleBuilder.INVERSE_UCA_.m_continuations_[
+                                                                       offset];
+	    }      
+	    m_source_.append((char)ch);
+	    m_extraCurrent_ ++;
+	    m_parsedToken_.m_charsOffset_ = m_extraCurrent_ - 1;
+	    m_parsedToken_.m_charsLen_ = 1;
+	
+	    // We got an UCA before. However, this might have been tailored.
+	    // example:
+	    // &\u30ca = \u306a
+	    // &[before 3]\u306a<<<\u306a|\u309d
+	  
+	    Token key = new Token();
+	    key.m_source_ = (m_parsedToken_.m_charsLen_ << 24) 
+	                                         | m_parsedToken_.m_charsOffset_;
+	    key.m_rules_ = m_source_;
+	    sourcetoken = (Token)m_hashTable_.get(key);
+	  
+	    // if we found a tailored thing, we have to use the UCA value and 
+	    // construct a new reset token with constructed name
+	    if (sourcetoken != null && sourcetoken.m_strength_ != TOKEN_RESET_) {
+	        // character to which we want to anchor is already tailored. 
+	        // We need to construct a new token which will be the anchor point
+            m_source_.setCharAt(m_extraCurrent_ - 1, '\uFFFE');
+	        m_source_.append(ch);
+	        m_extraCurrent_ ++;
+	        m_parsedToken_.m_charsLen_ ++;
+            m_listHeader_[m_resultLength_] = new TokenListHeader();
+	        m_listHeader_[m_resultLength_].m_baseCE_ = ce[0] & 0xFFFFFF3F;
+	        if (RuleBasedCollator.isContinuation(ce[1])) {
+	            m_listHeader_[m_resultLength_].m_baseContCE_ = ce[1];
+	        } 
+	        else {
+	            m_listHeader_[m_resultLength_].m_baseContCE_ = 0;
+	        }
+	        m_listHeader_[m_resultLength_].m_nextCE_ = 0;
+	        m_listHeader_[m_resultLength_].m_nextContCE_ = 0;
+	        m_listHeader_[m_resultLength_].m_previousCE_ = 0;
+	        m_listHeader_[m_resultLength_].m_previousContCE_ = 0;
+	        m_listHeader_[m_resultLength_].m_indirect_ = false;
+	        sourcetoken = new Token();
+	        initAReset(-1, sourcetoken);   
+	    }
+	    return sourcetoken;
+	}
+	
+	/**
+	 * Processing Description.
+	 * 1. Build a m_listHeader_. Each list has a header, which contains two lists 
+	 * (positive and negative), a reset token, a baseCE, nextCE, and 
+	 * previousCE. The lists and reset may be null. 
+	 * 2. As you process, you keep a LAST pointer that points to the last token 
+	 * you handled. 
+	 * @param expand string offset, -1 for null strings
+	 * @param targetToken tken to update
+	 * @return expandnext offset
+	 * @throws ParseException thrown when rules syntax failed
+	 */
+	private int initAReset(int expand, Token targetToken) throws ParseException
+	{
+	    // do the reset thing
+	    targetToken.m_rules_ = m_source_;
+	    targetToken.m_source_ = m_parsedToken_.m_charsLen_ << 24 
+	                            | m_parsedToken_.m_charsOffset_;
+	    targetToken.m_expansion_ = m_parsedToken_.m_extensionLen_ << 24 
+	                               | m_parsedToken_.m_extensionOffset_;
+	    if (m_parsedToken_.m_prefixOffset_ != 0) {
+	        throwParseException(m_rules_, m_parsedToken_.m_charsOffset_ - 1);
+	    } 
+	    
+        targetToken.m_prefix_ = 0;
+	    // TODO: this should also handle reverse
+	    targetToken.m_polarity_ = TOKEN_POLARITY_POSITIVE_; 
+	    targetToken.m_strength_ = TOKEN_RESET_;
+	    targetToken.m_next_ = null;
+	    targetToken.m_previous_ = null;
+	    targetToken.m_CELength_ = 0;
+	    targetToken.m_expCELength_ = 0;
+	    targetToken.m_listHeader_ = m_listHeader_[m_resultLength_];
+	    m_listHeader_[m_resultLength_].m_first_ = null;
+	    m_listHeader_[m_resultLength_].m_last_ = null;
+	    m_listHeader_[m_resultLength_].m_first_ = null;
+	    m_listHeader_[m_resultLength_].m_last_ = null;
+	    m_listHeader_[m_resultLength_].m_reset_ = targetToken;
+	
+	    /* 3 Consider each item: relation, source, and expansion: 
+	     * e.g. ...< x / y ... 
+	     * First convert all expansions into normal form. Examples: 
+	     * If "xy" doesn't occur earlier in the list or in the UCA, convert 
+	     * &xy * c * d * ... into &x * c/y * d * ... 
+	     * Note: reset values can never have expansions, although they can 
+	     * cause the very next item to have one. They may be contractions, if 
+	     * they are found earlier in the list. 
+	     */
+	    int result = 0;
+	    if (expand > 0) {
+	        // check to see if there is an expansion
+	        if (m_parsedToken_.m_charsLen_ > 1) {
+	            targetToken.m_source_ = ((expand 
+	                                      - m_parsedToken_.m_charsOffset_ ) 
+	                                      << 24) 
+	                                      | m_parsedToken_.m_charsOffset_;
+	            result = ((m_parsedToken_.m_charsLen_ 
+	                           + m_parsedToken_.m_charsOffset_ - expand) << 24) 
+	                           | expand;
+	        }
+	    }   
+	
+	    m_resultLength_ ++;
+	    m_hashTable_.put(targetToken, targetToken);
+	    return result;
+	}
+	
+	/**
+	 * Checks if an character is special
+	 * @param ch character to test
+	 * @return true if the character is special
+	 */
+	private static final boolean isSpecialChar(char ch)
+	{
+        return (ch <= 0x002F && ch >= 0x0020) || (ch <= 0x003F && ch >= 0x003A) 
+               || (ch <= 0x0060 && ch >= 0x005B) 
+               || (ch <= 0x007E && ch >= 0x007D) || ch == 0x007B;
+	}
+	
+	/**
+	 * Reads and set collation options
+	 * @param optionend offset to the end of the option in rules
+	 * @return TOKEN_SUCCESS if option is set correct, 0 otherwise
+     * @exception ParseException thrown when options in rules are wrong
+	 */
+	private byte readAndSetOption(int optionend) throws ParseException
+	{
+		int start = m_current_ + 1; // skip opening '['
+	    int i = 0;
+	    boolean foundoption = false;
+	    int optionarg = 0;
+	    while (i < RULES_OPTIONS_.length) {
+            String option = RULES_OPTIONS_[i].m_name_;
+            int optionlength = option.length();
+            if (m_rules_.length() > start + optionlength
+                && option.equalsIgnoreCase(m_rules_.substring(start, 
+                                                      start + optionlength))) {
+                foundoption = true;
+	            if (optionend - start > optionlength) {
+	                optionarg = start + optionlength + 1; 
+                    // start of the options, skip space
+	                while (UCharacter.isWhitespace(m_rules_.charAt(optionarg))) 
+                    {   // eat whitespace
+	                    optionarg ++;
+	                }
+	            }     
+	            break;
+	        }
+	        i ++;
+	    }
+	
+	    if (!foundoption) {
+	        throwParseException(m_rules_, start);
+	    }
+	
+	    if (i < 7) {
+            if (optionarg != 0) {
+	            for (int j = 0; j < RULES_OPTIONS_[i].m_subOptions_.length; 
+                                                                        j ++) {
+                     String subname = RULES_OPTIONS_[i].m_subOptions_[j];
+                     int size = optionarg + subname.length();
+                     if (m_rules_.length() > size 
+                         && subname.equalsIgnoreCase(m_rules_.substring(
+                                                           optionarg, size))) {
+	                     setOptions(m_options_, RULES_OPTIONS_[i].m_attribute_, 
+                             RULES_OPTIONS_[i].m_subOptionAttributeValues_[j]);
+	                     return TOKEN_SUCCESS_MASK_;
+                     }
+	            }
+	        }
+	        throwParseException(m_rules_, optionarg);
+	    } 
+        else if (i == 7) { // variable top
+	        return TOKEN_SUCCESS_MASK_ | TOKEN_VARIABLE_TOP_MASK_;
+	    } 
+        else if (i == 8) { // rearange
+	        return TOKEN_SUCCESS_MASK_;
+	    } 
+        else if (i == 9) { // before
+	        if (optionarg != 0) {
+	            for (int j = 0; j < RULES_OPTIONS_[i].m_subOptions_.length; 
+                                                                        j ++) {
+                     String subname = RULES_OPTIONS_[i].m_subOptions_[j];
+                     int size = optionarg + subname.length();
+                     if (m_rules_.length() > size 
+                         && subname.equalsIgnoreCase(
+                                               m_rules_.substring(optionarg, 
+                                              optionarg + subname.length()))) {
+	                     return (byte)(TOKEN_SUCCESS_MASK_ 
+                            | RULES_OPTIONS_[i].m_subOptionAttributeValues_[j] 
+                            + 1);
+                     }
+	            }
+	        }
+	        throwParseException(m_rules_, optionarg);
+	    } 
+        else if (i == 10) {  // top, we are going to have an array with 
+            // structures of limit CEs index to this array will be 
+            // src->parsedToken.indirectIndex
+	        m_parsedToken_.m_indirectIndex_ = 0;
+	        return TOKEN_SUCCESS_MASK_ | TOKEN_TOP_MASK_;
+	    } 
+        else if (i < 13) { // first, last 
+	        for (int j = 0; j < RULES_OPTIONS_[i].m_subOptions_.length; j ++) {     
+	            String subname = RULES_OPTIONS_[i].m_subOptions_[j];
+                int size = optionarg + subname.length();
+                if (m_rules_.length() > size 
+                    && subname.equalsIgnoreCase(m_rules_.substring(optionarg, 
+                                                                   size))) {
+	                m_parsedToken_.m_indirectIndex_ = (char)(i - 10 + (j << 1));         
+	                return TOKEN_SUCCESS_MASK_ | TOKEN_TOP_MASK_;
+	            }
+	        }	        
+            throwParseException(m_rules_, optionarg);
+	    } 
+        else {
+	        throwParseException(m_rules_, optionarg);
+	    }
+        return TOKEN_SUCCESS_MASK_; // we will never reach here.
+	}
+
+    /**
+     * Set collation option
+     * @param optionset option set to set
+     * @param attribute type to set
+     * @param value attribute value
+     */
+    private void setOptions(OptionSet optionset, int attribute, int value) 
+    {
+	    switch (attribute) {
+	        case RuleBasedCollator.Attribute.HIRAGANA_QUATERNARY_MODE_ :
+	            optionset.m_isHiragana4_ 
+                            = (value == RuleBasedCollator.AttributeValue.ON_);
+	            break;
+	        case RuleBasedCollator.Attribute.FRENCH_COLLATION_ :
+	            optionset.m_isFrenchCollation_ 
+                             = (value == RuleBasedCollator.AttributeValue.ON_);
+	            break;
+	        case RuleBasedCollator.Attribute.ALTERNATE_HANDLING_ :
+	            optionset.m_isAlternateHandlingShifted_ 
+                             = (value 
+                                == RuleBasedCollator.AttributeValue.SHIFTED_);
+	            break;
+	        case RuleBasedCollator.Attribute.CASE_FIRST_ :
+	            optionset.m_caseFirst_ = value;
+	            break;
+	        case RuleBasedCollator.Attribute.CASE_LEVEL_ :
+	            optionset.m_isCaseLevel_ 
+                             = (value == RuleBasedCollator.AttributeValue.ON_);
+	            break;
+	        case RuleBasedCollator.Attribute.NORMALIZATION_MODE_ :
+                if (value == RuleBasedCollator.AttributeValue.ON_) {
+                    value = Collator.CANONICAL_DECOMPOSITION;
+                }
+	            optionset.m_decomposition_ = value;
+	            break;
+	        case RuleBasedCollator.Attribute.STRENGTH_ :
+	            optionset.m_strength_ = value;
+	            break;
+	        default :
+	            break;
+	    }
+  	}
+}
diff --git a/src/com/ibm/icu/text/Collator.java b/src/com/ibm/icu/text/Collator.java
new file mode 100755
index 0000000..2bc3e64
--- /dev/null
+++ b/src/com/ibm/icu/text/Collator.java
@@ -0,0 +1,481 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/Collator.java,v $ 
+* $Date: 2002/08/07 20:54:56 $ 
+* $Revision: 1.11 $
+*
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.util.Locale;
+import java.util.Comparator;
+
+/**
+* <p>Collator performs locale-sensitive string comparison. A concrete
+* subclass, RuleBasedCollator, allows customization of the collation
+* ordering by the use of rule sets.</p>
+* 
+* <p>Following the <a href=http://www.unicode.org>Unicode
+* Consortium</a>'s specifications for the 
+* <a href="http://www.unicode.org/unicode/reports/tr10/"> Unicode Collation
+* Algorithm (UCA)</a>, there are 5 different levels of strength used
+* in comparisons:
+*
+* <ul>
+* <li>PRIMARY strength: Typically, this is used to denote differences between 
+*     base characters (for example, "a" &lt; "b"). 
+*     It is the strongest difference. For example, dictionaries are divided 
+*     into different sections by base character. 
+* <li>SECONDARY strength: Accents in the characters are considered secondary 
+*     differences (for example, "as" &lt; "&agrave;s" &lt; "at"). Other 
+*     differences 
+*     between letters can also be considered secondary differences, depending 
+*     on the language. A secondary difference is ignored when there is a 
+*     primary difference anywhere in the strings.
+* <li>TERTIARY strength: Upper and lower case differences in characters are 
+*     distinguished at tertiary strength (for example, "ao" &lt; "Ao" &lt; 
+*     "a&ograve;"). In addition, a variant of a letter differs from the base 
+*     form on the tertiary strength (such as "A" and "&#9398;"). Another 
+*     example is the 
+*     difference between large and small Kana. A tertiary difference is ignored 
+*     when there is a primary or secondary difference anywhere in the strings. 
+* <li>QUATERNARY strength: When punctuation is ignored 
+*     <a href=http://www-124.ibm.com/icu/userguide/Collate_Concepts.html#Ignoring_Punctuation>
+*     (see Ignoring Punctuations in the user guide)</a> at PRIMARY to TERTIARY 
+*     strength, an additional strength level can 
+*     be used to distinguish words with and without punctuation (for example, 
+*     "ab" &lt; "a-b" &lt; "aB"). 
+*     This difference is ignored when there is a PRIMARY, SECONDARY or TERTIARY 
+*     difference. The QUATERNARY strength should only be used if ignoring 
+*     punctuation is required. 
+* <li>IDENTICAL strength:
+*     When all other strengths are equal, the IDENTICAL strength is used as a 
+*     tiebreaker. The Unicode code point values of the NFD form of each string 
+*     are compared, just in case there is no difference. 
+*     For example, Hebrew cantellation marks are only distinguished at this 
+*     strength. This strength should be used sparingly, as only code point 
+*     value differences between two strings is an extremely rare occurrence. 
+*     Using this strength substantially decreases the performance for both 
+*     comparison and collation key generation APIs. This strength also 
+*     increases the size of the collation key.
+* </ul>
+*
+* Unlike the JDK, ICU4J's Collator deals only with 2 decomposition modes, 
+* the canonical decomposition mode and one that does not use any decomposition.
+* The compatibility decomposition mode, java.text.Collator.FULL_DECOMPOSITION
+* is not supported here. If the canonical
+* decomposition mode is set, the Collator handles un-normalized text properly, 
+* producing the same results as if the text were normalized in NFD. If 
+* canonical decomposition is turned off, it is the user's responsibility to 
+* ensure that all text is already in the appropriate form before performing
+* a comparison or before getting a CollationKey.</p>
+*
+* <p>For more information about the collation service see the 
+* <a href="http://oss.software.ibm.com/icu/userguide/Collate_Intro.html">users 
+* guide</a>.</p>
+*
+* <p>Examples of use
+* <pre>
+* // Get the Collator for US English and set its strength to PRIMARY
+* Collator usCollator = Collator.getInstance(Locale.US);
+* usCollator.setStrength(Collator.PRIMARY);
+* if (usCollator.compare("abc", "ABC") == 0) {
+*     System.out.println("Strings are equivalent");
+* }
+* 
+* The following example shows how to compare two strings using the
+* Collator for the default locale.
+*
+* // Compare two strings in the default locale
+* Collator myCollator = Collator.getInstance();
+* myCollator.setDecomposition(NO_DECOMPOSITION);
+* if (myCollator.compare("&agrave;&#92;u0325", "a&#92;u0325&#768;") != 0) {
+*     System.out.println("&agrave;&#92;u0325 is not equals to a&#92;u0325&#768; without decomposition");
+*     myCollator.setDecomposition(CANONICAL_DECOMPOSITION);
+*     if (myCollator.compare("&agrave;&#92;u0325", "a&#92;u0325&#768;") != 0) {
+*         System.out.println("Error: &agrave;&#92;u0325 should be equals to a&#92;u0325&#768; with decomposition");
+*     }
+*     else {
+*         System.out.println("&agrave;&#92;u0325 is equals to a&#92;u0325&#768; with decomposition");
+*     }
+* }
+* else {
+*     System.out.println("Error: &agrave;&#92;u0325 should be not equals to a&#92;u0325&#768; without decomposition");
+* }
+* </pre>
+* </p>
+* @see RuleBasedCollator
+* @see CollationKey
+* @author Syn Wee Quek
+* @since release 2.2, April 18 2002
+* @draft 2.2 
+*/
+public abstract class Collator implements Comparator, Cloneable
+{     
+    // public data members ---------------------------------------------------
+        
+    /**
+     * Strongest collator strength value. Typically used to denote differences 
+     * between base characters. See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @draft 2.2
+     */
+    public final static int PRIMARY = 0;
+
+    /**
+     * Second level collator strength value. 
+     * Accents in the characters are considered secondary differences.
+     * Other differences between letters can also be considered secondary 
+     * differences, depending on the language. 
+     * See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @draft 2.2
+     */
+    public final static int SECONDARY = 1;
+
+    /**
+     * Third level collator strength value. 
+     * Upper and lower case differences in characters are distinguished at this
+     * strength level. In addition, a variant of a letter differs from the base 
+     * form on the tertiary level.
+     * See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @draft 2.2
+     */
+    public final static int TERTIARY = 2;                            
+
+    /**
+     * Fourth level collator strength value. 
+     * When punctuation is ignored 
+     * <a href="http://www-124.ibm.com/icu/userguide/Collate_Concepts.html#Ignoring_Punctuation">
+     * (see Ignoring Punctuations in the user guide)</a> at PRIMARY to TERTIARY 
+     * strength, an additional strength level can 
+     * be used to distinguish words with and without punctuation.
+     * See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @draft 2.2
+     */
+    public final static int QUATERNARY = 3;
+
+    /**
+     * <p>
+     * Smallest Collator strength value. When all other strengths are equal, 
+     * the IDENTICAL strength is used as a tiebreaker. The Unicode code point 
+     * values of the NFD form of each string are compared, just in case there 
+     * is no difference. 
+     * See class documentation for more explanation.
+     * </p>
+     * <p>
+     * Note this value is different from JDK's
+     * </p>
+     * @draft 2.2
+     */
+    public final static int IDENTICAL = 15;
+
+    /**
+     * <p>Decomposition mode value. With NO_DECOMPOSITION set, Strings
+     * will not be decomposed for collation. This is the default
+     * decomposition setting unless otherwise specified by the locale
+     * used to create the Collator.</p>
+     *
+     * <p><strong>Note</strong> this value is different from the JDK's.</p>
+     * @see #CANONICAL_DECOMPOSITION
+     * @see #getDecomposition
+     * @see #setDecomposition
+     * @draft 2.2 
+     */
+    public final static int NO_DECOMPOSITION = 16;
+
+    /**
+     * <p>Decomposition mode value. With CANONICAL_DECOMPOSITION set,
+     * characters that are canonical variants according to the Unicode standard
+     * will be decomposed for collation.</p>
+     *
+     * <p>CANONICAL_DECOMPOSITION corresponds to Normalization Form D as
+     * described in <a href="http://www.unicode.org/unicode/reports/tr15/">
+     * Unicode Technical Report #15</a>.
+     * </p>
+     * @see #NO_DECOMPOSITION
+     * @see #getDecomposition
+     * @see #setDecomposition
+     * @draft 2.2 
+     */
+    public final static int CANONICAL_DECOMPOSITION = 17;
+    
+    // public methods --------------------------------------------------------
+    
+    // public setters --------------------------------------------------------
+    
+    /**
+     * <p>Sets this Collator's strength property. The strength property 
+     * determines the minimum level of difference considered significant 
+     * during comparison.</p>
+     * 
+     * <p>The default strength for the Collator is TERTIARY, unless specified 
+     * otherwise by the locale used to create the Collator.</p>
+     *
+     * <p>See the Collator class description for an example of use.</p>
+     * @param new Strength the new strength value.
+     * @see #getStrength
+     * @see #PRIMARY
+     * @see #SECONDARY
+     * @see #TERTIARY
+     * @see #QUATERNARY
+     * @see #IDENTICAL
+     * @exception IllegalArgumentException if the new strength value is not one 
+     *                of PRIMARY, SECONDARY, TERTIARY, QUATERNARY or IDENTICAL.
+     * @draft 2.2
+     */
+    public void setStrength(int newStrength) 
+    {
+        if ((newStrength != PRIMARY) &&
+            (newStrength != SECONDARY) &&
+            (newStrength != TERTIARY) &&
+            (newStrength != QUATERNARY) &&
+            (newStrength != IDENTICAL)) {
+            throw new IllegalArgumentException("Incorrect comparison level.");
+        }
+        m_strength_ = newStrength;
+    }
+    
+    /**
+     * <p>Set the decomposition mode of this Collator.  Setting this
+     * decomposition property with CANONICAL_DECOMPOSITION allows the
+     * Collator to handle un-normalized text properly, producing the
+     * same results as if the text were normalized. If
+     * NO_DECOMPOSITION is set, it is the user's responsibility to
+     * insure that all text is already in the appropriate form before
+     * a comparison or before getting a CollationKey. Adjusting
+     * decomposition mode allows the user to select between faster and
+     * more complete collation behavior.</p>
+     * 
+     * <p>Since a great many of the world's languages do not require
+     * text normalization, most locales set NO_DECOMPOSITION as the
+     * default decomposition mode.</p>
+     * 
+     * The default decompositon mode for the Collator is
+     * NO_DECOMPOSITON, unless specified otherwise by the locale used
+     * to create the Collator.</p>
+     * 
+     * <p>See getDecomposition for a description of decomposition
+     * mode.</p>
+     * 
+     * @param decomposition the new decomposition mode
+     * @see #getDecomposition
+     * @see #NO_DECOMPOSITION
+     * @see #CANONICAL_DECOMPOSITION
+     * @exception IllegalArgumentException If the given value is not a valid 
+     *            decomposition mode.
+     * @draft 2.2 
+     */
+    public void setDecomposition(int decomposition) 
+    {
+        if ((decomposition != NO_DECOMPOSITION) &&
+            (decomposition != CANONICAL_DECOMPOSITION)) {
+            throw new IllegalArgumentException("Wrong decomposition mode.");
+        }
+        m_decomposition_ = decomposition;
+    }
+    
+    // public getters --------------------------------------------------------
+    
+    /**
+     * Gets the Collator for the current default locale.
+     * The default locale is determined by java.util.Locale.getDefault().
+     * @return the Collator for the default locale (for example, en_US) if it
+     *         is created successfully. Otherwise if there is no Collator
+     *         associated with the current locale, the default UCA collator 
+     *         will be returned.
+     * @see java.util.Locale#getDefault
+     * @see #getInstance(Locale)
+     * @draft 2.2
+     */
+    public static final Collator getInstance() 
+    {
+        return getInstance(Locale.getDefault());
+    }
+    
+    /**
+     * Gets the Collator for the desired locale.
+     * @param locale the desired locale.
+     * @return Collator for the desired locale if it is created successfully.
+     *         Otherwise if there is no Collator
+     *         associated with the current locale, a default UCA collator will 
+     *         be returned.
+     * @see java.util.Locale
+     * @see java.util.ResourceBundle
+     * @see #getInstance()
+     * @draft 2.2
+     */
+    public static final Collator getInstance(Locale locale)
+    {
+        return new RuleBasedCollator(locale);
+    }
+    
+    /**
+     * <p>Returns this Collator's strength property. The strength property 
+     * determines the minimum level of difference considered significant.
+     * </p>
+     * <p>
+     * See the Collator class description for more details.
+     * </p>
+     * @return this Collator's current strength property.
+     * @see #setStrength
+     * @see #PRIMARY
+     * @see #SECONDARY
+     * @see #TERTIARY
+     * @see #QUATERNARY
+     * @see #IDENTICAL
+     * @draft 2.2
+     */
+    public int getStrength()
+    {
+        return m_strength_;
+    }
+    
+    /**
+     * <p>
+     * Get the decomposition mode of this Collator. Decomposition mode
+     * determines how Unicode composed characters are handled. 
+     * </p>
+     * <p>
+     * See the Collator class description for more details.
+     * </p>
+     * @return the decomposition mode
+     * @see #setDecomposition
+     * @see #NO_DECOMPOSITION
+     * @see #CANONICAL_DECOMPOSITION
+     * @draft 2.2
+     */
+    public int getDecomposition()
+    {
+        return m_decomposition_;
+    }
+    
+    /**
+     * <p>
+     * Compares the source text String to the target text String according to 
+     * this Collator's rules, strength and decomposition mode.
+     * Returns an integer less than, 
+     * equal to or greater than zero depending on whether the source String is 
+     * less than, equal to or greater than the target String. See the Collator
+     * class description for an example of use.
+     * </p>
+     * @param source the source String.
+     * @param target the target String.
+     * @return Returns an integer value. Value is less than zero if source is 
+     *         less than target, value is zero if source and target are equal, 
+     *         value is greater than zero if source is greater than target.
+     * @see CollationKey
+     * @see #getCollationKey
+     * @exception NullPointerException thrown if either arguments is null.
+     *            IllegalArgumentException thrown if either source or target is
+     *            not of the class String.
+     * @draft 2.2
+     */
+    public int compare(Object source, Object target)
+    {
+        if (!(source instanceof String) || !(target instanceof String)) {
+            throw new IllegalArgumentException("Arguments have to be of type String");
+        }
+        return compare((String)source, (String)target);
+    }
+    
+    // public other methods -------------------------------------------------
+
+    /**
+     * Convenience method for comparing the equality of two text Strings using
+     * this Collator's rules, strength and decomposition mode.
+     * @param source the source string to be compared.
+     * @param target the target string to be compared.
+     * @return true if the strings are equal according to the collation
+     *         rules, otherwise false.
+     * @see #compare
+     * @exception NullPointerException thrown if either arguments is null.
+     * @draft 2.2
+     */
+    public boolean equals(String source, String target) 
+    {
+        return (compare(source, target) == 0);
+    }
+
+    /**
+     * Compares the equality of two Collators.
+     * @param that the Collator to be compared with this.
+     * @return true if this Collator is the same as that Collator;
+     *         false otherwise.
+     * @draft 2.2
+     */
+    public abstract boolean equals(Object that);
+    
+    // public abstract methods -----------------------------------------------
+
+    /**
+     * Generates a unique hash code for this Collator.
+     * @draft 2.2
+     * @return 32 bit unique hash code
+     */
+    public abstract int hashCode();
+
+    /**
+     * <p>
+     * Compares the source text String to the target text String according to 
+     * this Collator's rules, strength and decomposition mode.
+     * Returns an integer less than, 
+     * equal to or greater than zero depending on whether the source String is 
+     * less than, equal to or greater than the target String. See the Collator
+     * class description for an example of use.
+     * </p>
+     * @param source the source String.
+     * @param target the target String.
+     * @return Returns an integer value. Value is less than zero if source is 
+     *         less than target, value is zero if source and target are equal, 
+     *         value is greater than zero if source is greater than target.
+     * @see CollationKey
+     * @see #getCollationKey
+     * @exception NullPointerException thrown if either arguments is null.
+     * @draft 2.2
+     */
+    public abstract int compare(String source, String target);
+
+    /**
+     * <p>
+     * Transforms the String into a CollationKey suitable for efficient
+     * repeated comparison.  The resulting key depends on the collator's
+     * rules, strength and decomposition mode.
+     * </p> 
+     * <p>See the CollationKey class documentation for more information.</p>
+     * @param source the string to be transformed into a CollationKey.
+     * @return the CollationKey for the given String based on this Collator's 
+     *         collation rules. If the source String is null, a null 
+     *         CollationKey is returned.
+     * @see CollationKey
+     * @see #compare(String, String)
+     * @draft 2.2
+     */
+    public abstract CollationKey getCollationKey(String source);
+    
+    // protected constructor -------------------------------------------------
+  
+    // private data members --------------------------------------------------
+    
+    /**
+     * Collation strength
+     */
+    private int m_strength_ = TERTIARY;
+
+    /**
+     * Decomposition mode
+     */ 
+    private int m_decomposition_ = CANONICAL_DECOMPOSITION;
+}
+
diff --git a/src/com/ibm/icu/text/CollatorReader.java b/src/com/ibm/icu/text/CollatorReader.java
new file mode 100644
index 0000000..6bcda46
--- /dev/null
+++ b/src/com/ibm/icu/text/CollatorReader.java
@@ -0,0 +1,447 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/CollatorReader.java,v $ 
+* $Date: 2002/08/01 19:50:34 $ 
+* $Revision: 1.6 $
+*
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import com.ibm.icu.impl.ICUBinary;
+import com.ibm.icu.impl.IntTrie;
+
+/**
+* <p>Internal reader class for ICU data file uca.icu containing 
+* Unicode Collation Algorithm data.</p> 
+* <p>This class simply reads uca.icu, authenticates that it is a valid
+* ICU data file and split its contents up into blocks of data for use in
+* <a href=Collator.html>com.ibm.icu.text.Collator</a>.
+* </p> 
+* <p>uca.icu which is in big-endian format is jared together with this 
+* package.</p>
+* @author Syn Wee Quek
+* @since release 2.2, April 18 2002
+* @draft 2.2
+*/
+
+final class CollatorReader
+{      
+    // protected constructor ---------------------------------------------
+    
+    /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU callator file input stream
+    * @exception IOException throw if data file fails authentication 
+    * @draft 2.1
+    */
+    protected CollatorReader(InputStream inputStream) throws IOException
+    {
+        ICUBinary.readHeader(inputStream, DATA_FORMAT_ID_, 
+                             DATA_FORMAT_VERSION_);
+        m_dataInputStream_ = new DataInputStream(inputStream);
+    }
+    
+    /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU uprops.icu file input stream
+    * @param readICUHeader flag to indicate if the ICU header has to be read
+    * @exception IOException throw if data file fails authentication 
+    * @draft 2.1
+    */
+    protected CollatorReader(InputStream inputStream, boolean readICUHeader) 
+    														throws IOException
+    {
+    	if (readICUHeader) {
+        	ICUBinary.readHeader(inputStream, DATA_FORMAT_ID_, 
+            		                 DATA_FORMAT_VERSION_);
+    	}
+        m_dataInputStream_ = new DataInputStream(inputStream);
+    }
+  
+    // protected methods -------------------------------------------------
+      
+    /**
+    * Read and break up the header stream of data passed in as arguments into 
+    * meaningful Collator data.
+    * @param rbc RuleBasedCollator to populate with header information
+    * @exception IOException thrown when there's a data error.
+    */
+    protected void readHeader(RuleBasedCollator rbc) throws IOException
+    {
+    	int size = m_dataInputStream_.readInt();
+    	// all the offsets are in bytes
+      	// to get the address add to the header address and cast properly 
+      	// Default options int options
+        m_dataInputStream_.skip(4); // options
+        // structure which holds values for indirect positioning and implicit 
+        // ranges
+      	int UCAConst = m_dataInputStream_.readInt(); 
+        // this one is needed only for UCA, to copy the appropriate 
+        // contractions
+        m_dataInputStream_.skip(4);
+      	// reserved for future use
+      	m_dataInputStream_.skipBytes(4);
+      	// const uint8_t *mappingPosition; 
+      	int mapping = m_dataInputStream_.readInt(); 
+      	// uint32_t *expansion; 
+      	rbc.m_expansionOffset_ = m_dataInputStream_.readInt(); 
+      	// UChar *contractionIndex;     
+      	rbc.m_contractionOffset_ = m_dataInputStream_.readInt(); 
+      	// uint32_t *contractionCEs;
+      	int contractionCE = m_dataInputStream_.readInt();   
+      	// needed for various closures int contractionSize 
+      	int contractionSize = m_dataInputStream_.readInt();  
+      	// array of last collation element in expansion
+      	int expansionEndCE = m_dataInputStream_.readInt();  
+      	// array of maximum expansion size corresponding to the expansion
+        // collation elements with last element in expansionEndCE
+      	int expansionEndCEMaxSize = m_dataInputStream_.readInt();     
+      	// size of endExpansionCE int expansionEndCESize
+      	m_dataInputStream_.skipBytes(4); 
+      	// hash table of unsafe code points 
+      	int unsafe = m_dataInputStream_.readInt();            
+      	// hash table of final code points in contractions.
+      	int contractionEnd = m_dataInputStream_.readInt();
+      	// int CEcount = m_dataInputStream_.readInt();
+      	m_dataInputStream_.skipBytes(4);
+      	// is jamoSpecial
+      	rbc.m_isJamoSpecial_ = m_dataInputStream_.readBoolean(); 
+        // padding
+      	m_dataInputStream_.skipBytes(3);
+      	// byte version[] = new byte[4];
+      	m_dataInputStream_.skipBytes(4);
+      	// byte charsetName[] = new byte[32]; // for charset CEs
+      	m_dataInputStream_.skipBytes(32);
+      	m_dataInputStream_.skipBytes(64); // for future use 
+      	if (rbc.m_contractionOffset_ == 0) { // contraction can be null
+      		rbc.m_contractionOffset_ = mapping;
+      		contractionCE = mapping;
+      	}
+      	m_expansionSize_ = rbc.m_contractionOffset_ - rbc.m_expansionOffset_;
+      	m_contractionIndexSize_ = contractionCE - rbc.m_contractionOffset_;
+      	m_contractionCESize_ = mapping - contractionCE;
+      	m_trieSize_ = expansionEndCE - mapping;
+      	m_expansionEndCESize_ = expansionEndCEMaxSize - expansionEndCE;
+      	m_expansionEndCEMaxSizeSize_ = unsafe - expansionEndCEMaxSize;
+      	m_unsafeSize_ = contractionEnd - unsafe;
+        m_UCAValuesSize_ = size - UCAConst; // UCA value, will be handled later
+        // treat it as normal collator first
+        // for normal collator there is no UCA contraction
+        m_contractionEndSize_ = size - contractionEnd;    
+        
+      	rbc.m_contractionOffset_ >>= 1; // casting to ints
+      	rbc.m_expansionOffset_ >>= 2; // casting to chars
+    }
+    
+    /**
+     * Read and break up the collation options passed in the stream of data
+     * and update the argument Collator with the results
+     * @param rbc RuleBasedCollator to populate
+     * @exception IOException thrown when there's a data error.
+     * @draft 2.2
+     */
+    protected void readOptions(RuleBasedCollator rbc) throws IOException
+    {
+    	rbc.m_defaultVariableTopValue_ = m_dataInputStream_.readInt();
+    	rbc.m_defaultIsFrenchCollation_ = (m_dataInputStream_.readInt()
+    	                                == RuleBasedCollator.AttributeValue.ON_);
+        rbc.m_defaultIsAlternateHandlingShifted_ 
+                                   = (m_dataInputStream_.readInt() == 
+                                    RuleBasedCollator.AttributeValue.SHIFTED_);
+        rbc.m_defaultCaseFirst_ = m_dataInputStream_.readInt();
+        rbc.m_defaultIsCaseLevel_ = (m_dataInputStream_.readInt() 
+                                     == RuleBasedCollator.AttributeValue.ON_);
+        int value = m_dataInputStream_.readInt();
+    	if (value == RuleBasedCollator.AttributeValue.ON_) {
+    		value = Collator.CANONICAL_DECOMPOSITION;
+    	}
+    	else {
+    		value = Collator.NO_DECOMPOSITION;
+    	}
+    	rbc.m_defaultDecomposition_ = value;
+    	rbc.m_defaultStrength_ = m_dataInputStream_.readInt();
+    	rbc.m_defaultIsHiragana4_ = (m_dataInputStream_.readInt() 
+    	                             == RuleBasedCollator.AttributeValue.ON_);
+    }
+    
+    /**
+    * Read and break up the stream of data passed in as arguments into 
+    * meaningful Collator data.
+    * @param rbc RuleBasedCollator to populate
+    * @param UCAConst object to fill up with UCA constants if we are reading 
+    *                 the UCA collator, if not use a null
+    * @return UCAContractions array filled up with the UCA contractions if we
+    *                        are reading the UCA collator
+    * @exception IOException thrown when there's a data error.
+    * @draft 2.2
+    */
+    protected char[] read(RuleBasedCollator rbc, 
+                          RuleBasedCollator.UCAConstants UCAConst) 
+                                                            throws IOException
+    {
+    	readHeader(rbc);
+    	readOptions(rbc);
+    	m_expansionSize_ >>= 2;
+    	rbc.m_expansion_ = new int[m_expansionSize_];
+    	for (int i = 0; i < m_expansionSize_; i ++) {
+    		rbc.m_expansion_[i] = m_dataInputStream_.readInt();
+    	}
+        if (m_contractionIndexSize_ > 0) { 
+        	m_contractionIndexSize_ >>= 1;
+        	rbc.m_contractionIndex_ = new char[m_contractionIndexSize_];
+        	for (int i = 0; i < m_contractionIndexSize_; i ++) {
+        		rbc.m_contractionIndex_[i] = m_dataInputStream_.readChar();
+        	}
+        	m_contractionCESize_ >>= 2;
+        	rbc.m_contractionCE_ = new int[m_contractionCESize_];
+        	for (int i = 0; i < m_contractionCESize_; i ++) {
+        		rbc.m_contractionCE_[i] = m_dataInputStream_.readInt();
+        	}
+        }
+    	rbc.m_trie_ = new IntTrie(m_dataInputStream_, 
+                           	  RuleBasedCollator.DataManipulate.getInstance());
+    	if (!rbc.m_trie_.isLatin1Linear()) {
+    		throw new IOException("Data corrupted, " 
+    		                      + "Collator Tries expected to have linear "
+    		                      + "latin one data arrays");
+    	}
+    	m_expansionEndCESize_ >>= 2;
+    	rbc.m_expansionEndCE_ = new int[m_expansionEndCESize_];
+    	for (int i = 0; i < m_expansionEndCESize_; i ++) {
+    		rbc.m_expansionEndCE_[i] = m_dataInputStream_.readInt();
+    	}
+    	rbc.m_expansionEndCEMaxSize_ = new byte[m_expansionEndCEMaxSizeSize_];
+    	for (int i = 0; i < m_expansionEndCEMaxSizeSize_; i ++) {
+    		rbc.m_expansionEndCEMaxSize_[i] = m_dataInputStream_.readByte();
+    	}
+    	rbc.m_unsafe_ = new byte[m_unsafeSize_];
+    	for (int i = 0; i < m_unsafeSize_; i ++) {
+    		rbc.m_unsafe_[i] = m_dataInputStream_.readByte();
+    	}
+        if (UCAConst != null) {
+            // we are reading the UCA
+            // unfortunately the UCA offset in any collator data is not 0 and
+            // only refers to the UCA data
+            m_contractionEndSize_ -= m_UCAValuesSize_;       
+        }
+    	rbc.m_contractionEnd_ = new byte[m_contractionEndSize_];
+    	for (int i = 0; i < m_contractionEndSize_; i ++) {
+    		rbc.m_contractionEnd_[i] = m_dataInputStream_.readByte();
+    	}
+        if (UCAConst != null) {
+            UCAConst.FIRST_TERTIARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            m_UCAValuesSize_ -= 4;
+            UCAConst.FIRST_TERTIARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            m_UCAValuesSize_ -= 4;
+            UCAConst.LAST_TERTIARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            m_UCAValuesSize_ -= 4;
+            UCAConst.LAST_TERTIARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            m_UCAValuesSize_ -= 4;
+            UCAConst.FIRST_PRIMARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            m_UCAValuesSize_ -= 4;
+            UCAConst.FIRST_PRIMARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            m_UCAValuesSize_ -= 4;
+            UCAConst.FIRST_SECONDARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            m_UCAValuesSize_ -= 4;
+            UCAConst.FIRST_SECONDARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            m_UCAValuesSize_ -= 4;
+            UCAConst.LAST_SECONDARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            m_UCAValuesSize_ -= 4;
+            UCAConst.LAST_SECONDARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            m_UCAValuesSize_ -= 4;
+            UCAConst.LAST_PRIMARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            m_UCAValuesSize_ -= 4;
+            UCAConst.LAST_PRIMARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            m_UCAValuesSize_ -= 4;
+            UCAConst.FIRST_VARIABLE_[0] = m_dataInputStream_.readInt();     
+            m_UCAValuesSize_ -= 4;
+            UCAConst.FIRST_VARIABLE_[1] = m_dataInputStream_.readInt();
+            m_UCAValuesSize_ -= 4;
+            UCAConst.LAST_VARIABLE_[0] = m_dataInputStream_.readInt(); 
+            m_UCAValuesSize_ -= 4;
+            UCAConst.LAST_VARIABLE_[1] = m_dataInputStream_.readInt();                     
+            m_UCAValuesSize_ -= 4;
+            UCAConst.FIRST_NON_VARIABLE_[0] = m_dataInputStream_.readInt();  
+            m_UCAValuesSize_ -= 4;
+            UCAConst.FIRST_NON_VARIABLE_[1] = m_dataInputStream_.readInt();  
+            m_UCAValuesSize_ -= 4;
+            UCAConst.LAST_NON_VARIABLE_[0] = m_dataInputStream_.readInt();  
+            m_UCAValuesSize_ -= 4;
+            UCAConst.LAST_NON_VARIABLE_[1] = m_dataInputStream_.readInt();  
+            m_UCAValuesSize_ -= 4;
+            UCAConst.RESET_TOP_VALUE_[0] = m_dataInputStream_.readInt();  
+            m_UCAValuesSize_ -= 4;
+            UCAConst.RESET_TOP_VALUE_[1] = m_dataInputStream_.readInt();  
+            m_UCAValuesSize_ -= 4;
+            UCAConst.FIRST_IMPLICIT_[0] = m_dataInputStream_.readInt();  
+            m_UCAValuesSize_ -= 4;
+            UCAConst.FIRST_IMPLICIT_[1] = m_dataInputStream_.readInt();  
+            m_UCAValuesSize_ -= 4;
+            UCAConst.LAST_IMPLICIT_[0] = m_dataInputStream_.readInt();  
+            m_UCAValuesSize_ -= 4;
+            UCAConst.LAST_IMPLICIT_[1] = m_dataInputStream_.readInt();  
+            m_UCAValuesSize_ -= 4;
+            UCAConst.FIRST_TRAILING_[0] = m_dataInputStream_.readInt();  
+            m_UCAValuesSize_ -= 4;
+            UCAConst.FIRST_TRAILING_[1] = m_dataInputStream_.readInt();  
+            m_UCAValuesSize_ -= 4;
+            UCAConst.LAST_TRAILING_[0] = m_dataInputStream_.readInt();  
+            m_UCAValuesSize_ -= 4;
+            UCAConst.LAST_TRAILING_[1] = m_dataInputStream_.readInt();   
+            m_UCAValuesSize_ -= 4; 
+            UCAConst.PRIMARY_TOP_MIN_ = m_dataInputStream_.readInt();  
+            m_UCAValuesSize_ -= 4;
+            UCAConst.PRIMARY_IMPLICIT_MIN_ = m_dataInputStream_.readInt();   
+            m_UCAValuesSize_ -= 4;
+            UCAConst.PRIMARY_IMPLICIT_MAX_ = m_dataInputStream_.readInt();   
+            m_UCAValuesSize_ -= 4;
+            UCAConst.PRIMARY_TRAILING_MIN_ = m_dataInputStream_.readInt();   
+            m_UCAValuesSize_ -= 4;
+            UCAConst.PRIMARY_TRAILING_MAX_ = m_dataInputStream_.readInt();   
+            m_UCAValuesSize_ -= 4;
+            UCAConst.PRIMARY_SPECIAL_MIN_ = m_dataInputStream_.readInt();   
+            m_UCAValuesSize_ -= 4;
+            UCAConst.PRIMARY_SPECIAL_MAX_ = m_dataInputStream_.readInt();   
+            m_UCAValuesSize_ -= 4;
+            m_UCAValuesSize_ >>= 1;
+            char result[] = new char[m_UCAValuesSize_];
+            for (int i = 0; i < m_UCAValuesSize_; i ++) {
+                result[i] = m_dataInputStream_.readChar();
+            }
+            return result;
+        }
+        return null;
+    }
+    
+    /**
+     * Reads in the inverse uca data
+     * @param input input stream with the inverse uca data
+     * @return an object containing the inverse uca data
+     * @exception IOException thrown when error occurs while reading the 
+     *            inverse uca
+     */
+    protected static CollationParsedRuleBuilder.InverseUCA readInverseUCA(
+                                                      InputStream inputStream)
+                                                      throws IOException
+    {
+        ICUBinary.readHeader(inputStream, INVERSE_UCA_DATA_FORMAT_ID_, 
+                             DATA_FORMAT_VERSION_);
+        CollationParsedRuleBuilder.InverseUCA result = 
+                                  new CollationParsedRuleBuilder.InverseUCA();
+        DataInputStream input = new DataInputStream(inputStream);        
+        input.readInt(); // bytesize
+        int tablesize = input.readInt(); // in int size
+        int contsize = input.readInt();  // in char size
+        input.readInt(); // table in bytes
+        input.readInt(); // conts in bytes
+        int size = tablesize * 3; // one column for each strength
+        result.m_table_ = new int[size];
+        result.m_continuations_ = new char[contsize];
+        
+        for (int i = 0; i < size; i ++) {
+            result.m_table_[i] = input.readInt();
+        }
+        for (int i = 0; i < contsize; i ++) {
+            result.m_continuations_[i] = input.readChar();
+        }
+        input.close();
+        return result;
+    }
+    
+    // private inner class -----------------------------------------------
+    
+    // private variables -------------------------------------------------
+  
+    /**
+    * Data input stream for uca.icu 
+    */
+    private DataInputStream m_dataInputStream_;
+   
+    /**
+    * File format version and id that this class understands.
+    * No guarantees are made if a older version is used
+    */
+    private static final byte DATA_FORMAT_VERSION_[] = 
+                                   {(byte)0x2, (byte)0x0, (byte)0x0, (byte)0x0};
+    private static final byte DATA_FORMAT_ID_[] = {(byte)0x55, (byte)0x43,  
+                                                    (byte)0x6f, (byte)0x6c};
+    /**
+    * Inverse UCA file format version and id that this class understands.
+    * No guarantees are made if a older version is used
+    */
+    private static final byte INVERSE_UCA_DATA_FORMAT_ID_[] = {(byte)0x49, 
+                                                               (byte)0x6e,  
+                                                               (byte)0x76, 
+                                                               (byte)0x43};
+    /**
+    * Corrupted error string
+    */
+    private static final String CORRUPTED_DATA_ERROR_ =
+                                "Data corrupted in Collation data file";
+                                
+    /**
+     * Size of expansion table in bytes
+     */
+    private int m_expansionSize_;
+    /**
+     * Size of contraction index table in bytes
+     */
+    private int m_contractionIndexSize_;
+    /**
+     * Size of contraction table in bytes
+     */
+    private int m_contractionCESize_;
+    /**
+     * Size of the Trie in bytes
+     */
+    private int m_trieSize_;
+    /**
+     * Size of the table that contains information about collation elements
+     * that end with an expansion 
+     */
+    private int m_expansionEndCESize_;
+    /**
+     * Size of the table that contains information about the maximum size of 
+     * collation elements that end with a particular expansion CE corresponding
+     * to the ones in expansionEndCE
+     */
+    private int m_expansionEndCEMaxSizeSize_;
+    /**
+     * Size of the table that contains information about the "Unsafe" 
+     * codepoints
+     */
+    private int m_unsafeSize_;
+    /**
+     * Size of the table that contains information about codepoints that ends
+     * with a contraction
+     */
+    private int m_contractionEndSize_;
+    /**
+     * Size of the table that contains UCA contraction information
+     */
+    private int m_UCAValuesSize_;
+      
+    // private methods ---------------------------------------------------
+      
+}
+
diff --git a/src/com/ibm/icu/text/ComposeData.java b/src/com/ibm/icu/text/ComposeData.java
new file mode 100755
index 0000000..dcfd5da
--- /dev/null
+++ b/src/com/ibm/icu/text/ComposeData.java
@@ -0,0 +1,1460 @@
+/*
+************************************************************************
+*   Copyright (c) 1997-2000, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+************************************************************************
+* > THIS FILE WAS MACHINE GENERATED <
+* >       DO NOT EDIT BY HAND       <
+* >      RUN TOOL TO REGENERATE     <
+* Tool: com.ibm.icu.text.Normalizer
+* Creation date: Fri Jul 21 13:41:45 PDT 2000
+*/
+
+package com.ibm.icu.text;
+import com.ibm.icu.util.*;
+import com.ibm.icu.impl.Utility;
+
+class ComposeData {
+    static final short BASE_COUNT = 748;
+    static final short COMBINING_COUNT = 55;
+    static final int MAX_COMPAT = 4341;
+    static final int MAX_CANONICAL = 5199;
+    static final char MAX_COMPOSED = 0xfb1d;
+    static final int MAX_INDEX = 8982;
+    static final int INITIAL_JAMO_INDEX = 8983;
+    static final int MEDIAL_JAMO_INDEX = 8984;
+    static final int MAX_BASES = 1024;
+    static final int MAX_COMBINE = 64;
+    static final int TYPE_MASK = 0x7;
+    static final int INDEX_SHIFT = 3;
+    static final int IGNORE = 0;
+    static final int BASE = 1;
+    static final int NON_COMPOSING_COMBINING = 2;
+    static final int COMBINING = 3;
+    static final int INITIAL_JAMO = 4;
+    static final int MEDIAL_JAMO = 5;
+    static final int FINAL_JAMO = 6;
+    static final int HANGUL = 7;
+
+    static final CompactCharArray lookup = new CompactCharArray(
+        "\000\u0800\000 @`\000\u0080\u00A0\u00C0\u00E0\u0100\u0120\u0140\000\u0160"+
+        "\u0180\u01A0\u01C0\u01E0\000\000\u0200\u0220\u0240\u0260\u0280\u02A0\u02C0"+
+        "\u02E0\u0300\u0320\u0340\u0360\u0380\u03A0\u03C0\u03E0\u0400\000\u0420"+
+        "\u0440\uA5A5\004\000\u0460\u0480\u04A0\000\000\u04C0\u04E0\u0500\000\000"+
+        "\u0520\u0540\u0560\u0580\u05A0\uA5A5\016\000\u05C0\u05E0\000\000\u0600"+
+        "\u0620\000\000\u0640\u0660\000\000\u0680\u06A0\000\000\u06C0\u06E0\000"+
+        "\u0700\u0720\u0740\000\000\000\u0760\000\000\u0780\u07A0\000\000\u07C0"+
+        "\u07E0\000\000\000\u0800\000\000\u0820\u0840\000\000\u0860\u0880\000\u08A0"+
+        "\u08C0\u08E0\u0900\u0920\u0940\u0960\000\000\u0980\uA5A5\006\000\u09A0"+
+        "\u09A0\u09A0\u09C0\u09E0\u0A00\u0A20\u0A40\uA5A5.\000\u0A60\uA5A5\006"+
+        "\000\u0A80\uA5A5*\000\u0AA0\u0AC0\u0AE0\u0B00\u0B20\u0B40\u0B60\u0B80"+
+        "\u0BA0\u0BC0\u0BE0\u0C00\u0C20\u0C40\u0C60\u0C80\u0CA0\u0CC0\u0CE0\u0D00"+
+        "\u0D20\u0D40\u0D60\u0D80\u0DA0\u0DC0\u0DE0\u0E00\u0E20\000\u0E40\000\u0E60"+
+        "\u0E80\u0EA0\u0EC0\u0EE0\u0F00\000\000\000\u0F20\uA5A5\011\000\u0F40\u0F60"+
+        "\u0F80\u0FA0\u0FC0\uA5A5L\000\u0FE0\000\000\u1000\u1020\u1040\u1060\u1080"+
+        "\u10A0\u10C0\u10E0\000\u1100\u1120\u1140\u1160\u1180\u11A0\u11C0\u11E0"+
+        "\000\u1200\u1220\u1240\u1260\000\000\000\u1280\u12A0\u12C0\u12E0\u1300"+
+        "\u1320\u1340\u1360\u1380\u13A0\u13C0\u13E0\u1400\u1420\u1440\u1460\uA5A5"+
+        "\u03C0\000\uA5A5\u015D\u1480\u14A0\uA5A5\u010A\000\u14C0\u14E0\u1500\u1520"+
+        "\u1540\u1560\u1580\u15A0\u15C0\u15E0\uA5A5\006\000\u1600\u1620\u1640\u1660"+
+        "\u1680\u16A0\u16C0\u16E0\u1700\u1720\u1740\u1760\u1780\u17A0\u17C0\u17E0"+
+        "\u1800\u1820\u1840\u1860\u1880\u18A0\u18C0\u18E0\000\u1900\u1920\u1940"+
+        "\u1960\u1980\u19A0\u19C0\u19E0\u1A00\u1A20\u1A40\u1A60\u1A80\u1AA0\u1AC0"
+        ,
+        "\000\u1AE0\uA5A5<\000\021\031)\000\0009IQaiqy\u0081\u0089\u0091\u0099"+
+        "\u00A1\u00A9\u00B1\u00B9\u00C1\000\u00C9\u00D1\u00D9\u00E1\u00E9\u00F1"+
+        "\u00F9\u0101\u0109\uA5A5\006\000\u0111\u0119\u0121\u0129\u0131\u0139\u0141"+
+        "\u0149\u0151\u0159\u0161\u0169\u0171\u0179\u0181\u0189\000\u0191\u0199"+
+        "\u01A1\u01A9\u01B1\u01B9\u01C1\u01C9\u01D1\uA5A5\005\000p\uA5A5\007\000"+
+        "\012\000\u0080\uA5A5\004\000\u0090\000\000\u00A8\u00B8\u00C8\u00E0\000"+
+        "\000\u00F0\u0108\u0118\000\u0128\u0148\u0168\000\u01D9\u01E1\u01E9\u01F1"+
+        "\u01F9\u0201\u0209\u0211\u0219\u0221\u0229\u0231\u0239\u0241\u0249\u0251"+
+        "\000\u0259\u0261\u0269\u0271\u0279\u0281\000\u0289\u0291\u0299\u02A1\u02A9"+
+        "\u02B1\000\000\u02B9\u02C1\u02C9\u02D1\u02D9\u02E1\u02E9\u02F1\u02F9\u0301"+
+        "\u0309\u0311\u0319\u0321\u0329\u0331\000\u0339\u0341\u0349\u0351\u0359"+
+        "\u0361\000\u0369\u0371\u0379\u0381\u0389\u0391\000\u0399\u03A1\u03A9\u03B1"+
+        "\u03B9\000\000\u03C1\u03C9\u03D1\u03D9\u03E1\u03E9\u03F1\u03F9\u0401\u0409"+
+        "\000\000\u0411\u0419\u0421\u0429\u0431\u0439\000\000\u0441\u0449\u0451"+
+        "\u0459\u0461\u0469\u0471\u0479\000\000\u0481\u0489\000\000\u0491\u0499"+
+        "\u04A1\u04A9\u04B1\u04B9\000\000\u04C1\000\u0188\u01A0\uA5A5\005\000\u04C9"+
+        "\u04D1\000\000\u04D9\u04E1\u01B8\u01D0\000\000\u04E9\u04F1\000\000\u04F9"+
+        "\u0501\u01E8\000\000\u0509\u0511\u0519\u0521\u0529\u0531\000\000\u0539"+
+        "\u0541\000\000\u0549\u0551\u0559\u0561\u0569\u0571\000\000\u0579\u0581"+
+        "\000\000\u0589\u0591\000\000\u0599\u05A1\u05A9\u05B1\u05B9\u05C1\u05C9"+
+        "\u05D1\u05D9\u05E1\000\000\u05E9\u05F1\u05F9\u0601\u0609\u0611\u0619\u0621"+
+        "\u0629\u0631\u0639\042\u0641\u0649\uA5A5\015\000\u0651\u0659\uA5A5\006"+
+        "\000\u0661\uA5A5\014\000\u0200\u0220\u0240\u0260\u0278\u0290\u02A8\u02C0"+
+        "\u02D8\u0669\u0671\u0679\u0681\u0689\u0691\u0699\u06A1\u06A9\u06B1\u06B9"+
+        "\u06C1\u06C9\u06D1\u06D9\u06E1\000\u06E9\u06F1\u06F9\u0701\uA5A5\004\000"+
+        "\u0709\u0711\u0719\u0721\u0729\u0731\uA5A5\005\000\u02F0\u0308\u0320\u0739"+
+        "\u0741\000\000\u0749\u0751\u0759\u0761\uA5A5\004\000\u0769\u0771\u0779"+
+        "\u0781\u0789\u0791\u0799\u07A1\u07A9\u07B1\u07B9\u07C1\u07C9\u07D1\u07D9"+
+        "\u07E1\u07E9\u07F1\u07F9\u0801\u0809\u0811\u0819\u0821\u0829\u0831\u0839"+
+        "\u0841\000\000\u0849\u0851\uA5A5\006\000\u0859\u0861\u0869\u0871\u0879"+
+        "\u0881\u0889\u0891\u0899\u08A1\u08A9\u08B1\u08B9\u08C1\uA5A5\036\000\u08C9"+
+        "\uA5A5\035\000\u0338\u0348\u01A8\u0358\u0368\u0378\u0388\u0398\u03A8\uA5A5"+
+        "\037\000\u03B8\u03D0\u03E8\u0400\u0418\u0430\000\000\u0448\u0458 \u0468"+
+        "\u0478\uA5A5\033\000\013\023\033#+\u01BB3;CKS[c\u01BB\u01BBk\u01BBs\u01BB"+
+        "{\u0083\u01C3\uA5A5\004\u01CB\u01C3\u008B\uA5A5\005\u01CB\u01D3\u01D3"+
+        "\u0093\u009B\u00A3\u00AB\u00B3\u00BB\uA5A5\004\u01CB\u00C3\u00CB\u01CB"+
+        "\u00D3\u00DB\u01CB\u01CB\uA5A5\004\u01DB\u00E3\uA5A5\004\u01CB\u01BB\u01BB"+
+        "\u01BB\u87B8\u87C8\u00EB\u87D8\u87E8\u00F3\u01BB\u01CB\u01CB\u01CB\u01BB"+
+        "\u01BB\u01BB\u01CB\u01CB\uA5A5\021\000\u01E3\u01E3\u01EB\uA5A5\021\000"+
+        "\u8800\uA5A5\005\000\u0488\000\000\000\u8810\uA5A5\005\000\u00C8\u04A0"+
+        "\000\u8820\uA5A5\011\000\u08D1\000\000\000\u08D9\000\u08E1\000\u08E9\uA5A5"+
+        "\005\000\u08F1\000\u08F9\000\000\000\u0901\000\000\000\u0909\000\000\u0911"+
+        "\000\u0919\000\000\u0921\000\000\000\u0929\000\u0931\000\u0939\uA5A5\005"+
+        "\000\u0941\000\u0949\000\000\000\u0951\000\000\000\u0959\u0961\u0969\000"+
+        "\000\u0971\000\u04C0\u04D02\u04E0\u04F8\u0510\u0520\uA5A5\031\000\u0530"+
+        "\u0540\u0550\uA5A5\023\000\u0979\uA5A5\011\000\u0981\000\000\u0989\000"+
+        "\u0991\u0999\u09A1\u09A9\000\u09B1\000\000\000\u09B9\uA5A5\004\000\u09C1"+
+        "\000\000\000\u09C9\000\000\000\u09D1\000\u09D9\000\000\u09E1\000\000\u09E9"+
+        "\000\u09F1\u09F9\u0A01\u0A09\000\u0A11\000\000\000\u0A19\uA5A5\004\000"+
+        "\u0A21\000\000\000\u0A29\000\000\000\u0A31\000\u0A39\uA5A5\010\000\u0A41"+
+        "\uA5A5\035\000\u0A49\u0A51\uA5A5\015\000\uA5A5\004\u01BB\uA5A51\000\u0A59"+
+        "\u0A61\uA5A5\016\000\u0A69\u0A71\uA5A5\035\000\u0560\uA5A5\011\000\u01CB"+
+        "\uA5A5\004\u01BB\u01CB\u01BB\u01BB\u01BB\u01F3\u01CB\uA5A5\006\u01BB\000"+
+        "\uA5A5\005\u01CB\u01BB\u01BB\u01CB\u01BB\u01BB\u01F3\u01FB\u01BB\u0203"+
+        "\u020B\u0213\u021B\u00FB\u0223\u022B\u0233\u023B\u0243\000\u024B\u0253"+
+        "\u025B\000\u0263\000\u026B\u0273\000\u01BB\uA5A5\024\000\u0A79\uA5A5\010"+
+        "\000\u0A81\u0A89\000\000\000\u0A91\uA5A5 \000\u0A99\000\u0AA1\u027B\u0283"+
+        "\u028B\u0293\u029B\u02A3\u02AB\u02B3\u0103\u010B\u0113\uA5A5\032\000\u02BB"+
+        "\uA5A5\004\000\u0578\u0590\u05A8\u05C0\uA5A5\010\000\u0AA9\uA5A5\020\000"+
+        "\u0AB1\000\000\u0AB9\uA5A5\007\u01BB\000\000\uA5A5\004\u01BB\u01CB\u01BB"+
+        "\000\000\u01BB\u01BB\000\u01CB\u01BB\u01BB\u01CB\uA5A5#\000\u02C3\uA5A5"+
+        "\036\000\u01BB\u01CB\u01BB\u01BB\u01CB\u01BB\u01BB\u01CB\u01CB\u01CB\u01BB"+
+        "\u01CB\u01CB\u01BB\u01CB\u01BB\u01BB\u01BB\u01CB\u01BB\u01CB\u01BB\u01CB"+
+        "\u01BB\u01CB\u01BB\u01BB\uA5A5\035\000\u0AC1\uA5A5\007\000\u0AC9\000\000"+
+        "\u0AD1\uA5A5\010\000\u011B\uA5A5\020\000\u02CB\000\000\000\u01BB\u01CB"+
+        "\u01BB\u01BB\000\000\000\u8830\u8848\u8860\u8878\u8890\u88A8\u88C0\u88D8"+
+        "\uA5A5\034\000\u02D3\000\u0123\uA5A5\010\000\u0AD9\uA5A5\005\000\u02CB"+
+        "\uA5A5\011\000\u012B\uA5A5\004\000\u88F0\u8908\000\u8920\uA5A5\023\000"+
+        "\u8938\000\000\u8950\uA5A5\005\000\u02D3\uA5A5\020\000\u02CB\uA5A5\013"+
+        "\000\u8968\u8980\u8998\000\000\u89B0\uA5A5\035\000\u02D3\uA5A5\020\000"+
+        "\u02CB\uA5A5.\000\u02D3\000\u0133\uA5A5\010\000\u0AE1\uA5A5\005\000\u02CB"+
+        "\uA5A5\010\000\u013B\u0143\uA5A5\004\000\u89C8\u89E0\uA5A5\024\000\u0AE9"+
+        "\uA5A5+\000\u014B\uA5A5\007\000\u0AF1\u0AF9\uA5A5\005\000\u02CB\uA5A5"+
+        "\011\000\u0153\uA5A5\016\000\u0B01\uA5A5\006\000\u02CB\uA5A5\007\000\u02DB"+
+        "\u015B\uA5A5(\000\u0B09\000\000\u0163\000\000\000\u0B11\000\000\000\u0B19"+
+        "\000\000\u02CB\uA5A5\007\000\u016B\u0173\uA5A5'\000\u017B\uA5A5\007\000"+
+        "\u0B21\u0B29\uA5A5\005\000\u02CB\uA5A5\011\000\u0183\uA5A5\022\000\u018B"+
+        "\uA5A5\004\000\u0193\uA5A5\011\000\u0B31\u0B39\000\u0B41\000\000\u019B"+
+        "\uA5A5\023\000\u05D8\uA5A5\004\000\u02E3\u02E3\u02CB\uA5A5\015\000\uA5A5"+
+        "\004\u02EB\uA5A5'\000\u05F0\uA5A5\004\000\u02F3\u02F3\uA5A5\016\000\uA5A5"+
+        "\004\u02FB\uA5A5\020\000\u0608\u0620\uA5A5\016\000\u0638\uA5A5\013\000"+
+        "\u01CB\u01CB\uA5A5\033\000\u01CB\000\u01CB\000\u0303\uA5A5\011\000\u89F8"+
+        "\uA5A5\011\000\u8A10\uA5A5\004\000\u8A28\uA5A5\004\000\u8A40\uA5A5\004"+
+        "\000\u8A58\uA5A5\014\000\u8A70\uA5A5\007\000\u030B\u0313\u8A88\u031B\u8AA0"+
+        "\u8AB8\u0648\u8AD0\u0668\uA5A5\004\u0313\000\000\u0313\u8AE8\u01BB\u01BB"+
+        "\u02CB\000\u01BB\u01BB\uA5A5\013\000\u8B00\uA5A5\011\000\u8B18\uA5A5\004"+
+        "\000\u8B30\uA5A5\004\000\u8B48\uA5A5\004\000\u8B60\uA5A5\014\000\u8B78"+
+        "\uA5A5\014\000\u01CB\uA5A5\036\000\u0B49\uA5A5\010\000\u01A3\uA5A5\010"+
+        "\000\u02D3\000\u02CB\uA5A5\006\000\uA5A5 \004\000\uA5A5E\005\000\uA5A5"+
+        "S\006\uA5A5\030\000\u02CB\uA5A5\026\000\u01FB\uA5A5\026\000\u0B51\u0B59"+
+        "\u0B61\u0B69\uA5A5\006\000\u0B71\u0B79\u0B81\u0B89\u0B91\u0B99\000\000"+
+        "\u0BA1\u0BA9\u0BB1\u0BB9\u0BC1\u0BC9\u0BD1\u0BD9\u0BE1\u0BE9\uA5A5\004"+
+        "\000\u0BF1\u0BF9\u0C01\u0C09\u0C11\u0C19\u0C21\u0C29\000\000\u0C31\u0C39"+
+        "\u0C41\u0C49\u0C51\u0C59\u0C61\u0C69\u0C71\u0C79\u0C81\u0C89\u0C91\u0C99"+
+        "\u0CA1\u0CA9\u0CB1\u0CB9\u0CC1\u0CC9\u0CD1\u0CD9\u0CE1\u0CE9\000\000\u0CF1"+
+        "\u0CF9\u0D01\u0D09\u0D11\u0D19\u0D21\u0D29\u0D31\u0D39\u0D41\u0D49\u0D51"+
+        "\u0D59\u0D61\u0D69\uA5A5\004\000\u0D71\u0D79\u0D81\u0D89\u0D91\u0D99\u0DA1"+
+        "\u0DA9\u0DB1\u0DB9\u0DC1\u0DC9\u0DD1\u0DD9\u0DE1\u0DE9\u0DF1\u0DF9\u0E01"+
+        "\u0E09\u0E11\u0E19\u0E21\u0E29\u0E31\u0E39\u0E41\u0E49\u0E51\u0E59\u0E61"+
+        "\u0E69\u0E71\u0E79\u0E81\u0E89\u0E91\u0E99\000\000\u0EA1\u0EA9\u0EB1\u0EB9"+
+        "\u0EC1\u0EC9\u0ED1\u0ED9\uA5A5\006\000\u0EE1\u0EE9\u0EF1\u0EF9\uA5A5\004"+
+        "\000\u0F01\u0F09\u0F11\u0F19\u0688\u06A0\uA5A5\004\000\u0F21\u0F29\u0F31"+
+        "\u0F39\u0F41\u0F49\u0F51\u0F59\u0F61\u0F69\u0F71\u0F79\u0F81\u0F89\u0F91"+
+        "\u0F99\u0FA1\u0FA9\u0FB1\u0FB9\u0FC1\u0FC9\u0FD1\u0FD9\u0FE1\u0FE9\u0FF1"+
+        "\u0FF9\u1001\u1009\u1011\u1019\u1021\u1029\u1031\u1039\u1041\u1049\u1051"+
+        "\u1059\u1061\u1069\u1071\u1079\u1081\u1089\u1091\u1099\u10A1\u10A9\u10B1"+
+        "\u10B9\u10C1\u10C9\u10D1\u10D9\u10E1\u10E9\u10F1\u10F9\u1101\u1109\u1111"+
+        "\u1119\u1121\u1129\u1131\u1139\u1141\u1149\u1151\u1159\u1161\u1169\u1171"+
+        "\u1179\u1181\u1189\u1191\u1199\u11A1\u11A9\u11B1\u11B9\000\000\u11C1\u11C9"+
+        "\u11D1\u11D9\uA5A5\006\000\u11E1\u11E9\u11F1\u11F9\u1201\u1209\u1211\u1219"+
+        "\u1221\u1229\u1231\u1239\u1241\u1249\u1251\u1259\u1261\u1269\uA5A5\006"+
+        "\000\u1271\u1279\uA5A5\006\000\u1281\u1289\u1291\u1299\u12A1\u12A9\u12B1"+
+        "\u12B9\u12C1\u12C9\u12D1\u12D9\u12E1\u12E9\u12F1\u12F9\u1301\u1309\uA5A5"+
+        "\006\000\u1311\u1319\uA5A5\006\000\u1321\u1329\uA5A5\006\000\u1331\u1339"+
+        "\uA5A5\006\000\u1341\u1349\uA5A5\007\000\u1351\uA5A5\006\000\u1359\u1361"+
+        "\u1369\u1371\u1379\u1381\u1389\u1391\u1399\u13A1\u13A9\u13B1\u13B9\u13C1"+
+        "\u13C9\u13D1\u13D9\u8B90\000\u8BA8\u13E1\u8BC0\000\u8BD8\000\u8BF0\000"+
+        "\u8C08\u13E9\u8C20\000\000\u13F1\u13F9\uA5A5\006\000\u1401\u1409\uA5A5"+
+        "\006\000\u1411\u1419\uA5A5\006\000\u1421\u1429\uA5A5\006\000\u1431\u1439"+
+        "\uA5A5\006\000\u1441\u1449\uA5A5\011\000\u1451\000\000\u1459\uA5A5\004"+
+        "\000\u8C38\u1461@\u8C50B\u06B8\u06D0\000\u1469\000\000\u1471\000\000\u8C60"+
+        "\000\u8C78\u1479\u06F0\u0710\u0730\000\000\000\u8C90\uA5A5\007\000\u8CB0"+
+        "\000\u0750\u0770\u0790\000\000\000\u8CC8\uA5A5\007\000\u8CE8\000\u07B0"+
+        "\uA292\u8D00\000\000\000\u1481\000\000\u1489\000\000\u8D10\000\u8D28\u1491"+
+        "\uA2A2Z\000\uA2B2\uA2C2\uA5A5\011p\uA5A5\006\000\u07D0\uA5A5\005\000\u07E0"+
+        "\uA5A5\014\000\u07F8\u0808\u0820\uA5A5\010\000p\000\000\000\u0840\u0858"+
+        "\000\u0878\u0890\uA5A5\004\000\u08B0\000\u08C8\uA5A5\011\000\u08E0\u08F8"+
+        "\uA5A5&\000\u0910\000\000\000\u0138\u0920\u0930\u0940\u0950\u0960\u0970"+
+        "\u0980\u0990\u09A0\u09B0\u01F0\u0910\u0108\u00A8\u00B8\u0138\u0920\u0930"+
+        "\u0940\u0950\u0960\u0970\u0980\u0990\u09A0\u09B0\uA5A5\031\000\u09C0\uA5A5"+
+        "'\000\u01BB\u01BB\u01DB\u01DB\uA5A5\004\u01BB\u01DB\u01DB\u01DB\u01BB"+
+        "\u01BB\uA5A5\004\000\u01BB\uA5A5\036\000\u09D8\u09F8\u0A18\u0A28\000\u0A40"+
+        "\u0A60\u0A80\000\u0A90\u0AA8\u0AB8\u0AB8\u0AB8\u0338\u0AC8\u0AD8\u0AD8"+
+        "\u0AE8\u0458\000\u0AF8\u0B08\000\000\u0B20\u0B30\u0B40\u0B40\u0B40\000"+
+        "\000\u0B50\u0B68\u0B88\000\u02F8\000\u8D40\000\u02F8\000\u8D50\u8D60\u0BA0"+
+        "\u0A18\000\u0BB0\u0BC0\u0A98\000\u0B58\u0118\u0BD0\u0BE0\u0BF0\u0C00\u0C10"+
+        "\uA5A5\031\000\u0C20\u0C40\u0C60\u0C80\u0CA0\u0CC0\u0CE0\u0D00\u0D20\u0D40"+
+        "\u0D60\u0D80\u0DA0\u0AD8\u0DB8\u0DD0\u0DF0\u0DF8\u0E08\u0E20\u0E40\u0E68"+
+        "\u0E70\u0E80\u0E98\u0AE8\u0A18\u0EB8\u0B58\u0C10\u0EC8\u0EE0\u0F00\u0F08"+
+        "\u0F18\u0F30\u0F50\u0F78\u0468\u0F90\u0FA8\u0458\u09E8\u0FC8\u0FD8\uA5A5"+
+        "\020\000\u1499\000\u14A1\000\u14A9\uA5A5\033\000\u14B1\000\u14B9\000\u14C1"+
+        "\uA5A5\016\000\u14C9\uA5A5\004\000\u14D1\000\000\u14D9\uA5A5\027\000\u14E1"+
+        "\000\u14E9\uA5A5\006\000\u0FE8\u1000\000\u1020\u1038\uA5A5\013\000\u14F1"+
+        "\uA5A5\006\000\u14F9\000\u1501\000\000\u1509\uA5A5\004\000\u1511\uA5A5"+
+        "\023\000\u1519\000\000\u1521\u1529\uA5A5\014\000\u1531\u1539\000\000\u1541"+
+        "\u1549\000\000\u1551\u1559\u1561\u1569\uA5A5\004\000\u1571\u1579\000\000"+
+        "\u1581\u1589\uA5A5\011\000\u1591\u1599\uA5A5\017\000\u15A1\uA5A5\005\000"+
+        "\u15A9\u15B1\000\u15B9\uA5A5\006\000\u15C1\u15C9\u15D1\u15D9\uA5A5\023"+
+        "\000\u8D78\u8D88\uA5A5\025\000\u0108\u00A8\u00B8\u0138\u0920\u0930\u0940"+
+        "\u0950\u0960\u1058\u1070\u1088\u10A0\u10B8\u10D0\u10E8\u1100\u1118\u1130"+
+        "\u1148\u1160\u1180\u11A0\u11C0\u11E0\u1200\u1220\u1240\u1260\u1280\u12A8"+
+        "\u12D0\u12F8\u1320\u1348\u1370\u1398\u13C0\u13E8\u1410\u1438\u1450\u1468"+
+        "\u1480\u1498\u14B0\u14C8\u14E0\u14F8\u1510\u1530\u1550\u1570\u1590\u15B0"+
+        "\u15D0\u15F0\u1610\u1630\u1650\u1670\u1690\u16B0\u16D0\u16F0\u1710\u1730"+
+        "\u1750\u1770\u1790\u17B0\u17D0\u17F0\u1810\u1830\u1850\u1870\u1890\u18B0"+
+        "\u18D0\u18F0\u1910\u1930\u1950\u1970\u1990\u19B0\u0BA0\u0A18\u0EB8\u0BC0"+
+        "\u0A98\u19C0\u0AB8\u0AD8\u0190\u19D0\u0AE8\u0B58\u0AF8\u19E0\u0B20\u0B30"+
+        "\u0B40\u19F0\u1A00\u1A10\u0DF8\u1A20\u0E70\u1A30\u02F8\u0080\u1A40\u09E8"+
+        "\u0FC8\u0BB0\u1A50\u0AA8\u0338\u0C10\u01A8\u1A60\u0458\u0FD8\u01F0\u0118"+
+        "\u1A70\u1A80\u0358 \u1A90\u0A70\u0F08\u0398\u0468\u03A8\u0310\u0910\uA5A5"+
+        "4\000\u1AA0\uA5A5\023\000\u1AB0\uA5A5\014\000\u1AC0\u1AD0\u1AE0\u1AF0"+
+        "\u1B00\u1B10\u1B20\u1B30\u1B40\u1B50\u1B60\u1B70\u1B80\u1B90\u1BA0\u1BB0"+
+        "\u1BC0\u1BD0\u1BE0\u1BF0\u1C00\u1C10\u1C20\u1C30\u1C40\u1C50\u1C60\u1C70"+
+        "\u1C80\u1C90\u1CA0\u1CB0\u1CC0\u1CD0\u1CE0\u1CF0\u1D00\u1D10\u1D20\u1D30"+
+        "\u1D40\u1D50\u1D60\u1D70\u1D80\u1D90\u1DA0\u1DB0\u1DC0\u1DD0\u1DE0\u1DF0"+
+        "\u1E00\u1E10\u1E20\u1E30\u1E40\u1E50\u1E60\u1E70\u1E80\u1E90\u1EA0\u1EB0"+
+        "\u1EC0\u1ED0\u1EE0\u1EF0\u1F00\u1F10\u1F20\u1F30\u1F40\u1F50\u1F60\u1F70"+
+        "\u1F80\u1F90\u1FA0\u1FB0\u1FC0\u1FD0\u1FE0\u1FF0\u2000\u2010\u2020\u2030"+
+        "\u2040\u2050\u2060\u2070\u2080\u2090\u20A0\u20B0\u20C0\u20D0\u20E0\u20F0"+
+        "\u2100\u2110\u2120\u2130\u2140\u2150\u2160\u2170\u2180\u2190\u21A0\u21B0"+
+        "\u21C0\u21D0\u21E0\u21F0\u2200\u2210\u2220\u2230\u2240\u2250\u2260\u2270"+
+        "\u2280\u2290\u22A0\u22B0\u22C0\u22D0\u22E0\u22F0\u2300\u2310\u2320\u2330"+
+        "\u2340\u2350\u2360\u2370\u2380\u2390\u23A0\u23B0\u23C0\u23D0\u23E0\u23F0"+
+        "\u2400\u2410\u2420\u2430\u2440\u2450\u2460\u2470\u2480\u2490\u24A0\u24B0"+
+        "\u24C0\u24D0\u24E0\u24F0\u2500\u2510\u2520\u2530\u2540\u2550\u2560\u2570"+
+        "\u2580\u2590\u25A0\u25B0\u25C0\u25D0\u25E0\u25F0\u2600\u2610\u2620\u2630"+
+        "\u2640\u2650\u2660\u2670\u2680\u2690\u26A0\u26B0\u26C0\u26D0\u26E0\u26F0"+
+        "\u2700\u2710\u2720\u2730\u2740\u2750\u2760\u2770\u2780\u2790\u27A0\u27B0"+
+        "\u27C0\u27D0\u27E0\u27F0\u2800\u2810\uA5A5\012\000p\uA5A5)\000\u0323\u01FB"+
+        "\u01C3\u01F3\u032B\u032B\uA5A5\006\000\u2820\000\u1C30\u2830\u2840\uA5A5"+
+        "\013\000\u15E1\uA5A5\004\000\u15E9\000\u15F1\000\u15F9\000\u1601\000\u1609"+
+        "\000\u1611\000\u1619\000\u1621\000\u1629\000\u1631\000\u1639\000\u1641"+
+        "\000\000\u1649\000\u1651\000\u1659\uA5A5\006\000\u1661\000\000\u1669\000"+
+        "\000\u1671\000\000\u1679\000\000\u1681\uA5A5\035\000\u01AB\u01B3\u2850"+
+        "\u2868\u1689\uA5A5\010\000\u1691\uA5A5\004\000\u1699\000\u16A1\000\u16A9"+
+        "\000\u16B1\000\u16B9\000\u16C1\000\u16C9\000\u16D1\000\u16D9\000\u16E1"+
+        "\000\u16E9\000\u16F1\000\000\u16F9\000\u1701\000\u1709\uA5A5\006\000\u1711"+
+        "\000\000\u1719\000\000\u1721\000\000\u1729\000\000\u1731\uA5A5\023\000"+
+        "\u1739\u1741\u1749\u1751\uA5A5\012\000\u1759\uA5A5\023\000\u2880\u2890"+
+        "\u28A0\u28B0\u28C0\u28D0\u28E0\u28F0\u2900\u2910\u2920\u2930\u2940\u2950"+
+        "\u2960\u2970\u2980\u2990\u29A0\u29B0\u29C0\u29D0\u29E0\u29F0\u2A00\u2A10"+
+        "\u2A20\u2A30\u2A40\u2A50\u2A60\u2A70\u2A80\u2A90\u2AA0\u2AB0\u2AC0\u2AD0"+
+        "\u2AE0\u2AF0\u2B00\u2B10\u2B20\u2B30\u2B40\u2B50\u2B60\u2B70\u2B80\u2B90"+
+        "\u2BA0\u2BB0\u2BC0\u2BD0\u2BE0\u2BF0\u2C00\u2C10\u2C20\u2C30\u2C40\u2C50"+
+        "\u2C60\u2C70\u2C80\u2C90\u2CA0\u2CB0\u2CC0\u2CD0\u2CE0\u2CF0\u2D00\u2D10"+
+        "\u2D20\u2D30\u2D40\u2D50\u2D60\u2D70\u2D80\u2D90\u2DA0\u2DB0\u2DC0\u2DD0"+
+        "\u2DE0\u2DF0\u2E00\u2E10\u2E20\u2E30\u2E40\u2E50\000\000\000\u1AC0\u1B20"+
+        "\u2E60\u2E70\u2E80\u2E90\u2EA0\u2EB0\u1B00\u2EC0\u2ED0\u2EE0\u2EF0\u1B40"+
+        "\u2F00\u2F20\u2F40\u2F60\u2F80\u2FA0\u2FC0\u2FE0\u3000\u3020\u3040\u3060"+
+        "\u3080\u30A0\u30C0\u30E8\u3110\u3138\u3160\u3188\u31B0\u31D8\u3200\u3228"+
+        "\u3250\u3278\u32A0\u32C8\u32F0\000\000\000\u3318\u3338\u3358\u3378\u3398"+
+        "\u33B8\u33D8\u33F8\u3418\u3438\u3458\u3478\u3498\u34B8\u34D8\u34F8\u3518"+
+        "\u3538\u3558\u3578\u3598\u35B8\u35D8\u35F8\u3618\u3638\u3658\u3678\u3698"+
+        "\u36B8\u36D8\u36F8\u3718\u3738\u3758\u3778\uA5A5\034\000\u2880\u28B0\u28E0"+
+        "\u2900\u2980\u2990\u29C0\u29E0\u29F0\u2A10\u2A20\u2A30\u2A40\u2A50\u3798"+
+        "\u37B0\u37C8\u37E0\u37F8\u3810\u3828\u3840\u3858\u3870\u3888\u38A0\u38B8"+
+        "\u38D0\uA5A5\004\000\u1AC0\u1B20\u2E60\u2E70\u38E8\u38F8\u3908\u1B70\u3918"+
+        "\u1C30\u1F50\u2010\u2000\u1F60\u2520\u1CB0\u1F30\u3928\u3938\u3948\u3958"+
+        "\u3968\u3978\u3988\u3998\u39A8\u39B8\u1D10\u39C8\u39D8\u39E8\u39F8\u3A08"+
+        "\u3A18\u3A28\u3A38\u2E80\u2E90\u2EA0\u3A48\u3A58\u3A68\u3A78\u3A88\u3A98"+
+        "\u3AA8\u3AB8\u3AC8\u3AD8\uA5A5\017\000\u3AE8\u3B00\u3B18\u3B30\u3B48\u3B60"+
+        "\u3B78\u3B90\u3BA8\u3BC0\u3BE0\u3C00\uA5A5\004\000\u3C20\u3C30\u3C40\u3C50"+
+        "\u3C60\u3C70\u3C80\u3C90\u3CA0\u3CB0\u3CC0\u3CD0\u3CE0\u3CF0\u3D00\u3D10"+
+        "\u3D20\u3D30\u3D40\u3D50\u3D60\u3D70\u3D80\u3D90\u3DA0\u3DB0\u3DC0\u3DD0"+
+        "\u3DE0\u3DF0\u3E00\u3E10\u3E20\u3E30\u3E40\u3E50\u3E60\u3E70\u3E80\u3E90"+
+        "\u3EA0\u3EB0\u3EC0\u3ED0\u3EE0\u3EF0\u3F00\000\u3F10\u3F40\u3F68\u3F98"+
+        "\u3FB8\u3FE8\u4008\u4028\u4060\u4088\u40A8\u40C8\u40E8\u4110\u4138\u4160"+
+        "\u4188\u41B0\u41D8\u4200\u4238\u4250\u4288\u42C0\u4260\u42F0\u4328\u4360"+
+        "\u4388\u43A8\u43C8\u43F0\u4418\u4448\u4478\u4498\u44B8\u44E0\u4500\u4310"+
+        "\u4520\u4538\u4558\u4578\u45B0\u45D8\u4608\u4640\u4668\u4688\u46A8\u46E0"+
+        "\u4708\u4740\u4760\u4790\u47B0\u47D8\u47F8\u4820\u4850\u4878\u48A8\u48D0"+
+        "\u48E8\u4918\u4938\u4958\u4980\u49A0\u49C0\u49E0\u4A10\u4A38\u4A50\u4A88"+
+        "\u4AA8\u4298\u4AD8\u4B00\u4B20\u4B40\u4B68\u4B80\u4BA8\u4BD8\u4BF0\u42D0"+
+        "\u4C28\u4C40\u4C58\u4C70\u4C88\u4CA0\u4CB8\u4CD0\u4CE8\u4D00\u4D18\u4D38"+
+        "\u4D58\u4D78\u4D98\u4DB8\u4DD8\u4DF8\u4E18\u4E38\u4E58\u4E78\u4E98\u4EB8"+
+        "\u4ED8\u4EF8\u4F18\u4F30\u4F48\u4F68\u4F80\uA5A5\004\000\u4F98\u4FB0\u4FC8"+
+        "\u4FE0\u4FF8\u5020\u5038\u5050\u5068\u5080\u5098\u50B0\u50C8\u50E0\u5100"+
+        "\u5128\u5140\u5158\u5170\u5188\u51A0\u51B8\u51D0\u51F0\u5210\u5230\u5250"+
+        "\u5268\u5280\u5298\u52B0\u52C8\u52E0\u52F8\u5310\u5328\u5340\u5360\u5348"+
+        "\u5380\u53A0\u53C0\u53A8\u53E0\u5400\u5420\u4F00\u5448\u5468\u5488\u54A8"+
+        "\u54C8\u54F8\u5530\u5548\u5560\u5578\u5590\u55A8\u55C0\u55D8\u55F0\u5608"+
+        "\u5620\u5638\u5650\u5668\u5680\u5698\u56B0\u56C8\u56E0\u5708\u5720\u5738"+
+        "\u5750\u5778\u5798\u57B0\u57C8\u57E0\u57F8\u5810\u5828\u5840\u5858\u5870"+
+        "\u5888\u58A8\u58C0\u58D8\u58F8\u5918\u5930\u5958\u5978\u5990\u59A8\u59C0"+
+        "\000\000\u59D8\u59F0\u5A08\u5A20\u5A38\u5A50\u5A68\u5A80\u5A98\u5AB0\u5AD0"+
+        "\u5AF0\u5B10\u5B30\u5B50\u5B70\u5B90\u5BB0\u5BD0\u5BF0\u5C10\u5C30\u5C50"+
+        "\u5C70\u5C90\u5CB0\u5CD0\u5CF0\u5D10\u5D30\u5D50\000\uA5A5%\007\uA5A5"+
+        "\033\000\u8D98\u8DA8\u8DB8\u8DC8\u8DD8\u8DE8\u8DF8\u8E08\u8E18\u8E28\u8E38"+
+        "\u8E48\u8E58\u8E68\u8E78\u8E88\u8E98\u8EA8\u8EB8\u8EC8\u8ED8\u8EE8\u8EF8"+
+        "\u8F08\u8F18\u8F28\u8F38\u8F48\u8F58\u8F68\u8F78\u8F88\u8F98\u8FA8\u8FB8"+
+        "\u8FC8\u8FD8\u8FE8\u8FF8\u9008\u9018\u9028\u9038\u9048\u9058\u9068\u9078"+
+        "\u9088\u9098\u90A8\u90B8\u90C8\u90D8\u90E8\u90F8\u9108\u9118\u9128\u9138"+
+        "\u9148\u9158\u9168\u9178\u9188\u9198\u91A8\u91B8\u91C8\u91D8\u91E8\u91F8"+
+        "\u9208\u9218\u9228\u9238\u9248\u9258\u9268\u9278\u9288\u9298\u92A8\u92B8"+
+        "\u92C8\u92D8\u92E8\u92F8\u9308\u9318\u9328\u9338\u9348\u8ED8\u9358\u9368"+
+        "\u9378\u9388\u9398\u93A8\u93B8\u93C8\u93D8\u93E8\u93F8\u9408\u9418\u9428"+
+        "\u9438\u9448\u9458\u9468\u9478\u9488\u9498\u94A8\u94B8\u94C8\u94D8\u94E8"+
+        "\u94F8\u9508\u9518\u9528\u9538\u9548\u9558\u9568\u9578\u9588\u9598\u95A8"+
+        "\u95B8\u95C8\u95D8\u95E8\u95F8\u9608\u9618\u9628\u9638\u9648\u9658\u9668"+
+        "\u9678\u9688\u9698\u96A8\u96B8\u96C8\u96D8\u96E8\u96F8\u9708\u9718\u9728"+
+        "\u9738\u9748\u9758\u9768\u9778\u9788\u9478\u9798\u97A8\u97B8\u97C8\u97D8"+
+        "\u97E8\u97F8\u9808\u9378\u9818\u9828\u9838\u9848\u9858\u9868\u9878\u9888"+
+        "\u9898\u98A8\u98B8\u98C8\u98D8\u98E8\u98F8\u9908\u9918\u9928\u9938\u9948"+
+        "\u8ED8\u9958\u9968\u9978\u9988\u9998\u99A8\u99B8\u99C8\u99D8\u99E8\u99F8"+
+        "\u9A08\u9A18\u9A28\u9A38\u9A48\u9A58\u9A68\u9A78\u9A88\u9A98\u9AA8\u9AB8"+
+        "\u9AC8\u9AD8\u9AE8\u9AF8\u9398\u9B08\u9B18\u9B28\u9B38\u9B48\u9B58\u9B68"+
+        "\u9B78\u9B88\u9B98\u9BA8\u9BB8\u9BC8\u9BD8\u9BE8\u9BF8\u9C08\u9C18\u9C28"+
+        "\u9C38\u9C48\u9C58\u9C68\u9C78\u9C88\u9C98\u9CA8\u9CB8\u9CC8\u9CD8\u9CE8"+
+        "\u9CF8\u9D08\u9D18\u9D28\u9D38\u9D48\u9D58\u9D68\u9D78\u9D88\u9D98\u9DA8"+
+        "\u9DB8\u9DC8\u9DD8\u9DE8\u9DF8\u9E08\u9E18\000\000\u9E28\000\u9E38\000"+
+        "\000\u9E48\u9E58\u9E68\u9E78\u9E88\u9E98\u9EA8\u9EB8\u9EC8\u9ED8\000\u9EE8"+
+        "\000\u9EF8\000\000\u9F08\u9F18\000\000\000\u9F28\u9F38\u9F48\u9F58\uA5A5"+
+        "\022\000\u5D70\u5D88\u5DA0\u5DB8\u5DD8\u5DF8\u5DF8\uA5A5\014\000\u5E10"+
+        "\u5E28\u5E40\u5E58\u5E70\uA5A5\006\000\u0333\u9F68\u5E88\u0BD0\u0C00\u5E98"+
+        "\u5EA8\u5EB8\u5EC8\u5ED8\u5EE8\u0970\u9F80\u9F98\u9FB0\u9FD0\u9FF0\uA008"+
+        "\uA020\uA038\uA050\uA068\uA080\uA098\uA0B0\000\uA0C8\uA0E0\uA0F8\uA110"+
+        "\uA128\000\uA140\000\uA158\uA170\000\uA188\uA1A0\000\uA1B8\uA1D0\uA1E8"+
+        "\uA200\uA218\uA230\uA248\uA260\uA278\u5EF8\u5F10\u5F10\uA5A5\004\u5F20"+
+        "\uA5A5\004\u5F30\uA5A5\004\u5F40\uA5A5\004\u5F50\uA5A5\004\u5F60\uA5A5"+
+        "\004\u5F70\uA5A5\004\u5F80\uA5A5\004\u5F90\uA5A5\004\u5FA0\uA5A5\004\u5FB0"+
+        "\uA5A5\004\u5FC0\uA5A5\004\u5FD0\u5FE0\u5FE0\u5FF0\u5FF0\u6000\u6000\u6010"+
+        "\u6010\u6020\u6020\u6030\u6030\uA5A5\004\u6040\uA5A5\004\u6050\uA5A5\004"+
+        "\u6060\uA5A5\004\u6070\u6080\u6080\uA5A5\004\u6090\u60A0\u60A0\uA5A5\004"+
+        "\u60B8\uA5A5\004\u60C8\u60D8\u60D8\u60E8\u60E8\uA5A5!\000\uA5A5\004\u6100"+
+        "\u6110\u6110\u6120\u6120\u6130\u6130\u05A8\u6140\u6140\u6150\u6150\u6160"+
+        "\u6160\uA5A5\004\u6170\u6180\u6180\u6190\u6190\u61B0\u61B0\u61D0\u61D0"+
+        "\u61F0\u61F0\u6210\u6210\u6230\u6230\u6250\u6250\u6250\u6270\u6270\u6270"+
+        "\uA5A5\004\u6290\u62A0\u62C0\u62E0\u6270\u6300\u6320\u6338\u6350\u6368"+
+        "\u6380\u6398\u63B0\u63C8\u63E0\u63F8\u6410\u6428\u6440\u6458\u6470\u6488"+
+        "\u64A0\u64B8\u64D0\u64E8\u6500\u6518\u6530\u6548\u6560\u6578\u6590\u65A8"+
+        "\u65C0\u65D8\u65F0\u6608\u6620\u6638\u6650\u6668\u6680\u6698\u66B0\u66C8"+
+        "\u66E0\u66F8\u6710\u6728\u6740\u6758\u6770\u6788\u67A0\u67B8\u67D0\u67E8"+
+        "\u6800\u6818\u6830\u6848\u6860\u6878\u6890\u68A8\u68C0\u68D8\u68F0\u6908"+
+        "\u6920\u6938\u6950\u6968\u6980\u6998\u69B0\u69C8\u69E0\u69F8\u6A10\u6A28"+
+        "\u6A40\u6A58\u6A70\u6A88\u6AA0\u6AB8\u6AD0\u6AE8\u6B00\u6B18\u6B30\u6B48"+
+        "\u6B60\u6B78\u6B98\u6BB8\u6BD8\u6BF8\u6C18\u6C38\u6C58\u62E0\u6C78\u6270"+
+        "\u6300\u6C98\u6CB0\u6368\u6CC8\u6380\u6398\u6CE0\u6CF8\u63F8\u6D10\u6410"+
+        "\u6428\u6D28\u6D40\u6458\u6D58\u6470\u6488\u6740\u6758\u67A0\u67B8\u67D0"+
+        "\u6830\u6848\u6860\u6878\u68D8\u68F0\u6908\u6D70\u6968\u6D88\u6DA0\u69F8"+
+        "\u6DB8\u6A10\u6A28\u6B60\u6DD0\u6DE8\u6AE8\u6E00\u6B00\u6B18\u62A0\u62C0"+
+        "\u6E18\u62E0\u6E38\u6320\u6338\u6350\u6368\u6E58\u63B0\u63C8\u63E0\u63F8"+
+        "\u6E70\u6458\u64A0\u64B8\u64D0\u64E8\u6500\u6530\u6548\u6560\u6578\u6590"+
+        "\u65A8\u6E88\u65C0\u65D8\u65F0\u6608\u6620\u6638\u6668\u6680\u6698\u66B0"+
+        "\u66C8\u66E0\u66F8\u6710\u6728\u6770\u6788\u67E8\u6800\u6818\u6830\u6848"+
+        "\u6890\u68A8\u68C0\u68D8\u6EA0\u6920\u6938\u6950\u6968\u69B0\u69C8\u69E0"+
+        "\u69F8\u6EB8\u6A40\u6A58\u6ED0\u6AA0\u6AB8\u6AD0\u6AE8\u6EE8\u62E0\u6E38"+
+        "\u6368\u6E58\u63F8\u6E70\u6458\u6F00\u6590\u6F18\u6F30\u6F48\u6830\u6848"+
+        "\u68D8\u69F8\u6EB8\u6AE8\u6EE8\u6F60\u6F80\u6FA0\u6FC0\u6FD8\u6FF0\u7008"+
+        "\u7020\u7038\u7050\u7068\u7080\u7098\u70B0\u70C8\u70E0\u70F8\u7110\u7128"+
+        "\u7140\u7158\u7170\u7188\u71A0\u71B8\u71D0\u6F30\u71E8\u7200\u7218\u7230"+
+        "\u6FC0\u6FD8\u6FF0\u7008\u7020\u7038\u7050\u7068\u7080\u7098\u70B0\u70C8"+
+        "\u70E0\u70F8\u7110\u7128\u7140\u7158\u7170\u7188\u71A0\u71B8\u71D0\u6F30"+
+        "\u71E8\u7200\u7218\u7230\u71A0\u71B8\u71D0\u6F30\u6F18\u6F48\u6650\u6548"+
+        "\u6560\u6578\u71A0\u71B8\u71D0\u6650\u6668\u7248\u7248\uA5A5\022\000\u7260"+
+        "\u7280\u7280\u72A0\u72C0\u72E0\u7300\u7320\u7340\u7340\u7360\u7380\u73A0"+
+        "\u73C0\u73E0\u7400\u7400\u7420\u7440\u7440\u7460\u7460\u7480\u74A0\u74A0"+
+        "\u74C0\u74E0\u74E0\u7500\u7500\u7520\u7540\u7540\u7560\u7560\u7580\u75A0"+
+        "\u75C0\u75E0\u75E0\u7600\u7620\u7640\u7660\u7680\u7680\u76A0\u76C0\u76E0"+
+        "\u7700\u7720\u7740\u7740\u7760\u7760\u7780\u7780\u77A0\u77C0\u77E0\u7800"+
+        "\u7820\u7840\u7860\000\000\u7880\u78A0\u78C0\u78E0\u7900\u7920\u7920\u7940"+
+        "\u7960\u7980\u79A0\u79A0\u79C0\u79E0\u7A00\u7A20\u7A40\u7A60\u7A80\u7AA0"+
+        "\u7AC0\u7AE0\u7B00\u7B20\u7B40\u7B60\u7B80\u7BA0\u7BC0\u7BE0\u7C00\u7C20"+
+        "\u7C40\u7C60\u76A0\u76E0\u7C80\u7CA0\u7CC0\u7CE0\u7D00\u7D20\u7D00\u7CC0"+
+        "\u7D40\u7D60\u7D80\u7DA0\u7DC0\u7D20\u75C0\u7480\u7DE0\u7E00\uA5A5(\000"+
+        "\u7E20\u7E40\u7E60\u7E88\u7EB0\u7ED8\u7F00\u7F28\u7F50\u7F78\u7F98\u8030"+
+        "\uA5A5\004\000\uA5A5\004\u01BB\uA5A5\014\000\u0808\u8078\u8088\u8098\u8098"+
+        "\u09A0\u09B0\u80A8\u80B8\u80C8\u80D8\u80E8\u80F8\u8108\u8118\u8128\u8138"+
+        "\u8148\u8158\u8168\u8178\uA5A5\004\000\uA5A5\004\u08C8\u8098\u8098\u8098"+
+        "\u8188\u8198\u07F8\000\u81A8\u81B8\u0900\u08B8\u8078\u09A0\u09B0\u80A8"+
+        "\u80B8\u80C8\u80D8\u81C8\u81D8\u81E8\u0970\u81F8\u8208\u8218\u0990\000"+
+        "\u8228\u8238\u8248\u8258\uA5A5\004\000\u8268\u8280\u8298\000\u82B0\000"+
+        "\u82C8\u82E0\u82F8\u8310\u8328\u8340\u8358\u8370\u8388\u83A0\u83B8\u83C8"+
+        "\u83C8\u83E0\u83E0\u83F8\u83F8\u8410\u8410\uA5A5\004\u8428\u61A0\u61A0"+
+        "\uA5A5\004\u8440\u8450\u8450\uA5A5\004\u8460\uA5A5\004\u8470\uA5A5\004"+
+        "\u62B0\uA5A5\004\u62D0\uA5A5\004\u6358\u7EC8\u7EC8\u8480\u8480\u6C48\u6C48"+
+        "\u6C68\u6C68\uA5A5\004\u8490\uA5A5\004\u84A0\uA5A5\004\u84B0\uA5A5\004"+
+        "\u84C0\uA5A5\004\u84D0\uA5A5\004\u84E0\uA5A5\004\u84F0\uA5A5\004\u8500"+
+        "\uA5A5\004\u8510\uA5A5\004\u8520\uA5A5\004\u8530\uA5A5\004\u6838\uA5A5"+
+        "\004\u62F0\uA5A5\004\u6C88\uA5A5\004\u6E48\u61E0\u61E0\u6180\u6180\uA5A5"+
+        "\004\u6310\u8540\u8540\u8560\u8560\u8580\u8580\u85A0\u85A0\uA5A5\004\000"+
+        "\u08B8\u85B8\u81C8\u8238\u8248\u81D8\u85C8\u09A0\u09B0\u81E8\u0970\u8188"+
+        "\u81F8\u07F8\u85D8\u0910\u0108\u00A8\u00B8\u0138\u0920\u0930\u0940\u0950"+
+        "\u0960\u81B8\u81A8\u8208\u0990\u8218\u0900\u8258\u19B0\u0BA0\u0A18\u0EB8"+
+        "\u0BC0\u0A98\u19C0\u0AB8\u0AD8\u0190\u19D0\u0AE8\u0B58\u0AF8\u19E0\u0B20"+
+        "\u0B30\u0B40\u19F0\u1A00\u1A10\u0DF8\u1A20\u0E70\u1A30\u02F8\u85E8\u8228"+
+        "\u85F8\u8608\u8098\u8618\u0080\u1A40\u09E8\u0FC8\u0BB0\u1A50\u0AA8\u0338"+
+        "\u0C10\u01A8\u1A60\u0458\u0FD8\u01F0\u0118\u1A70\u1A80\u0358 \u1A90\u0A70"+
+        "\u0F08\u0398\u0468\u03A8\u0310\u80A8\u8628\u80B8\u8638\000\000\u8648\u8148"+
+        "\u8158\u8198\u8658\u3F00\u3F58\u8668\u8678\u8688\u8698\u86A8\u86B8\u86C8"+
+        "\u86D8\u4078\u3C20\u3C30\u3C40\u3C50\u3C60\u3C70\u3C80\u3C90\u3CA0\u3CB0"+
+        "\u3CC0\u3CD0\u3CE0\u3CF0\u3D00\u3D10\u3D20\u3D30\u3D40\u3D50\u3D60\u3D70"+
+        "\u3D80\u3D90\u3DA0\u3DB0\u3DC0\u3DD0\u3DE0\u3DF0\u3E00\u3E10\u3E20\u3E30"+
+        "\u3E40\u3E50\u3E60\u3E70\u3E80\u3E90\u3EA0\u3EB0\u3EC0\u3ED0\u4018\u2858"+
+        "\u2870\u2BB0\u2880\u2890\u28A0\u28B0\u28C0\u28D0\u28E0\u28F0\u2900\u2910"+
+        "\u2920\u2930\u2940\u2950\u2960\u2970\u2980\u2990\u29A0\u29B0\u29C0\u29D0"+
+        "\u29E0\u29F0\u2A00\u2A10\u2A20\u2A30\u2A40\u2A50\000\000\000\u2A60\u2A70"+
+        "\u2A80\u2A90\u2AA0\u2AB0\000\000\u2AC0\u2AD0\u2AE0\u2AF0\u2B00\u2B10\000"+
+        "\000\u2B20\u2B30\u2B40\u2B50\u2B60\u2B70\000\000\u2B80\u2B90\u2BA0\000"+
+        "\000\000\u86E8\u86F8\u8708\u0090\u8718\u8728\u8738\000\u8748\u8758\u8768"+
+        "\u8778\u8788\u8798\u87A8\uA5A5\021\000"
+        );
+
+    static final CompactCharArray actions = new CompactCharArray(
+        "\000\u0800\uA5A5 \000 @`\u0080\u00A0\u00C0\u00E0\000\u0100\u0120\u0140"+
+        "\uA5A5\006\000\u0160\u0180\u01A0\u01C0\uA5A5\013\000\u01E0\u0200\u0220"+
+        "\u0240\u0260\u0280\u02A0\000\u02C0\u02E0\u0300\uA5A5\006\000\u0320\u0340"+
+        "\u0360\u0380\uA5A5\013\000\u03A0\u03C0\uA5A5\015\000\u03E0\u0400\uA5A5"+
+        "\017\000\u0420\u0440\u0460\u0480\000\000\u04A0\uA5A5\031\000\u04C0\u04E0"+
+        "\u0500\u0520\000\000\000\u0540\u0560\u0580\u05A0\000\u05C0\u05E0\uA5A5"+
+        "\006\000\u0600\uA5A5\013\000\u0620\u0640\uA5A5\006\000\u0660\u0680\u06A0"+
+        "\uA5A5\004\000\u06C0\uA5A5\004\000\u06E0\uA5A5\013\000\u0700\u0720\000"+
+        "\000\000\u0740\uA5A5\007\000\u0760\uA5A5\022\000\u0780\u07A0\u07C0\u07E0"+
+        "\000\u0800\000\000\u0820\u0840\u0860\uA5A5\025\000\u0880\u08A0\u08C0\u08E0"+
+        "\000\000\u0900\uA5A5\031\000\u0920\u0940\uA5A5\036\000\u0960\u0980\uA5A5"+
+        "\007\000\u09A0\u09C0\uA5A5\025\000\u09E0\u0A00\u0A20\u0A40\000\000\u0A60"+
+        "\000\u0A80\uA5A5\027\000\u0AA0\u0AC0\uA5A5\010\000\u0AE0\uA5A5\025\000"+
+        "\u0B00\u0B20\uA5A5&\000\u0B40\u0B60\uA5A5\012\000\u0B80\uA5A5\023\000"+
+        "\u0BA0\u0BC0\uA5A5\012\000\u0BE0\uA5A5\013\000\u0C00\u0C20\u0C40\u0C60"+
+        "\000\u0C80\u0CA0\u0CC0\u0CE0\uA5A5\004\000\u0D00\u0D20\000\u0D40\u0D60"+
+        "\uA5A5\016\000\u0D80\u0DA0\u0DC0\u0DE0\u0E00\u0E20\u0E40\u0E60\u0E80\000"+
+        "\000\u0EA0\u0EC0\u0EE0\u0F00\u0F20\u0F40\u0F60\uA5A5\016\000\u0F80\u0FA0"+
+        "\u0FC0\u0FE0\000\u1000\u1020\000\u1040\uA5A5\005\000\u1060\000\000\u1080"+
+        "\uA5A5\016\000\u10A0\u10C0\u10E0\u1100\000\000\u1120\u1140\u1160\uA5A5"+
+        "\006\000\u1180\uA5A5\020\000\u11A0\u11C0\000\000\000\u11E0\uA5A5\007\000"+
+        "\u1200\u1220\u1240\uA5A5\020\000\u1260\u1280\u12A0\u12C0\u12E0\u1300\000"+
+        "\u1320\u1340\000\000\u1360\u1380\u13A0\u13C0\u13E0\u1400\uA5A5\017\000"+
+        "\u1420\u1440\u1460\u1480\u14A0\u14C0\u14E0\u1500\u1520\000\000\u1540\u1560"+
+        "\u1580\u15A0\u15C0\u15E0\u1600\uA5A5\016\000\u1620\u1640\u1660\u1680\u16A0"+
+        "\u16C0\u16E0\u1700\u1720\000\000\u1740\u1760\000\u1780\u17A0\u17C0\u17E0"+
+        "\uA5A5\016\000\u1800\u1820\000\000\u1840\000\000\000\u1860\000\000\000"+
+        "\u1880\uA5A5\023\000\u18A0\u18C0\u18E0\u1900\u1920\u1940\u1960\u1980\u19A0"+
+        "\000\000\u19C0\u19E0\000\u1A00\u1A20\u1A40\u1A60\uA5A5\016\000\u1A80\u1AA0"+
+        "\u1AC0\u1AE0\u1B00\u1B20\u1B40\u1B60\u1B80\000\000\u1BA0\u1BC0\u1BE0\u1C00"+
+        "\u1C20\uA5A5\020\000\u1C40\uA5A5\023\000\u1C60\u1C80\uA5A5\012\000\u1CA0"+
+        "\uA5A5\010\000\u1CC0\uA5A5\007\000\u1CE0\u1D00\u1D20\u1D40\uA5A5\023\000"+
+        "\u1D60\u1D80\uA5A5\007\000\u1DA0\u1DC0\u1DE0\u1E00\uA5A5\025\000\u1E20"+
+        "\uA5A5\037\000\u1E40\uA5A5\037\000\u1E60\uA5A5\037\000\u1E80\uA5A5\037"+
+        "\000\u1EA0\uA5A5\037\000\u1EC0\uA5A5\037\000\u1EE0\uA5A5\037\000\u1F00"+
+        "\uA5A5\037\000\u1F20\uA5A5\037\000\u1F40\uA5A5\037\000\u1F60\uA5A5\037"+
+        "\000\u1F80\uA5A5 \000\u1FA0\uA5A5\037\000\u1FC0\uA5A5\037\000\u1FE0\uA5A5"+
+        "\037\000\u2000\uA5A5\037\000\u2020\uA5A5\037\000\u2040\uA5A5\037\000\u2060"+
+        "\uA5A5\037\000\u2080\uA5A5\037\000\u20A0\uA5A5\037\000\u20C0\uA5A5)\000"+
+        "\u20E0\u2100\u2120\uA5A5\036\000\u2140\u2160\uA5A5\u0128\000"
+        ,
+        "\000\u2180\uA5A5!\000\u1FED\uA5A5\005\000\u00C0\u1FCD\000\000\u1FDD\000"+
+        "\u00C8\000\000\000\u00CC\uA5A5\004\000\u01F8\u00D2\uA5A5\004\000\u00D9"+
+        "\000\u1E80\000\u1EF2\000\u00E0\000\000\000\u00E8\000\000\000\u00EC\uA5A5"+
+        "\004\000\u01F9\u00F2\uA5A5\004\000\u00F9\000\u1E81\000\u1EF3\000\000\000"+
+        "\u1EA6\uA5A5\007\000\u1EC0\uA5A5\010\000\u1ED2\uA5A5\006\000\u01DB\000"+
+        "\000\000\u1EA7\uA5A5\007\000\u1EC1\uA5A5\010\000\u1ED3\uA5A5\006\000\u01DC"+
+        "\uA5A5\004\000\u1EB0\u1EB1\uA5A5\012\000\u1E14\u1E15\uA5A5\035\000\u1E50"+
+        "\u1E51\uA5A5%\000\u1EDC\u1EDD\u1EEA\u1EEB\uA5A5.\000\u1FBA\u1FC8\u1FCA"+
+        "\u1FDA\u1FF8\000\u1FEA\u1FFA\000\000\u1F70\u1F72\u1F74\u1F76\u1F78\000"+
+        "\u1F7A\u1F7C\u1FD2\u1FE2\uA5A5\004\000\u0400\000\000\u040D\uA5A5\010\000"+
+        "\u0450\000\000\u045D\uA5A5:\000\u1F02\u1F03\uA5A5\006\000\u1F0A\u1F0B"+
+        "\uA5A5\006\000\u1F12\u1F13\u1F1A\u1F1B\u1F22\u1F23\uA5A5\006\000\u1F2A"+
+        "\u1F2B\uA5A5\006\000\u1F32\u1F33\u1F3A\u1F3B\u1F42\u1F43\u1F4A\u1F4B\u1F52"+
+        "\u1F53\u1F5B\u1F62\u1F63\uA5A5\006\000\u1F6A\u1F6B\uA5A5\011\000\u1F82"+
+        "\u1F83\u1F8A\u1F8B\u1F92\u1F93\u1F9A\u1F9B\u1FA2\u1FA3\u1FAA\u1FAB\u1FB2"+
+        "\000\uFE8E\u1FC2\000\uFE17\u1FF2\000\uFBC6\uA5A5\016\000\u0385\uA5A5\004"+
+        "\000\u03D3\u00C1\u1FCE\000\u0106\u1FDE\000\u00C9\000\u01F4\000\u00CD\000"+
+        "\u1E30\u0139\u1E3E\u0143\u00D3\u1E54\u0154\u015A\000\u00DA\000\u1E82\000"+
+        "\u00DD\u0179\u00E1\000\u0107\000\u00E9\000\u01F5\000\u00ED\000\u1E31\u013A"+
+        "\u1E3F\u0144\u00F3\u1E55\u0155\u015B\000\u00FA\000\u1E83\000\u00FD\u017A"+
+        "\000\000\u1EA4\000\000\u01FA\u01FC\u1E08\000\000\u1EBE\uA5A5\004\000\u1E2E"+
+        "\000\000\000\u1ED0\u1E4C\000\u01FE\000\000\000\u01D7\000\000\000\u1EA5"+
+        "\000\000\u01FB\u01FD\u1E09\000\000\u1EBF\uA5A5\004\000\u1E2F\000\000\000"+
+        "\u1ED1\u1E4D\000\u01FF\000\000\000\u01D8\uA5A5\004\000\u1EAE\u1EAF\uA5A5"+
+        "\012\000\u1E16\u1E17\uA5A5\035\000\u1E52\u1E53\uA5A5\020\000\u1E78\u1E79"+
+        "\uA5A5\023\000\u1EDA\u1EDB\u1EE8\u1EE9\uA5A5.\000\u0386\u0388\u0389\u038A"+
+        "\u038C\000\u038E\u038F\000\000\u03AC\u03AD\u03AE\u03AF\u03CC\000\u03CD"+
+        "\u03CE\u0390\u03B0\000\000\000\u0403\uA5A5\004\000\u040C\uA5A5\006\000"+
+        "\u0453\uA5A5\004\000\u045C\uA5A59\000\u1F04\u1F05\uA5A5\006\000\u1F0C"+
+        "\u1F0D\uA5A5\006\000\u1F14\u1F15\u1F1C\u1F1D\u1F24\u1F25\uA5A5\006\000"+
+        "\u1F2C\u1F2D\uA5A5\006\000\u1F34\u1F35\u1F3C\u1F3D\u1F44\u1F45\u1F4C\u1F4D"+
+        "\u1F54\u1F55\u1F5D\u1F64\u1F65\uA5A5\006\000\u1F6C\u1F6D\uA5A5\011\000"+
+        "\u1F84\u1F85\u1F8C\u1F8D\u1F94\u1F95\u1F9C\u1F9D\u1FA4\u1FA5\u1FAC\u1FAD"+
+        "\u1FB4\000\uFE8D\u1FC4\000\uFE16\u1FF4\000\uFBC5\uA5A5\024\000\u00C2\000"+
+        "\000\u0108\000\000\u00CA\000\u011C\u0124\u00CE\u0134\uA5A5\004\000\u00D4"+
+        "\000\000\u015C\000\u00DB\000\u0174\000\u0176\u1E90\u00E2\000\u0109\000"+
+        "\u00EA\000\u011D\u0125\u00EE\u0135\uA5A5\004\000\u00F4\000\000\u015D\000"+
+        "\u00FB\000\u0175\000\u0177\u1E91\uA5A5\011\000\u1EAC\u1EAD\uA5A5\026\000"+
+        "\u1EC6\u1EC7\uA5A5\022\000\u1ED8\u1ED9\uA5A5\025\000\u00C3\uA5A5\005\000"+
+        "\u1EBC\000\000\000\u0128\uA5A5\004\000\u00D1\u00D5\uA5A5\004\000\u0168"+
+        "\u1E7C\000\000\u1EF8\000\u00E3\000\000\000\u1EBD\000\000\000\u0129\uA5A5"+
+        "\004\000\u00F1\u00F5\uA5A5\004\000\u0169\u1E7D\000\000\u1EF9\000\000\000"+
+        "\u1EAA\uA5A5\007\000\u1EC4\uA5A5\010\000\u1ED6\uA5A5\012\000\u1EAB\uA5A5"+
+        "\007\000\u1EC5\uA5A5\010\000\u1ED7\uA5A5\013\000\u1EB4\u1EB5\uA5A5\020"+
+        "\000\u1EE0\u1EE1\u1EEE\u1EEF\uA5A5\033\000\u0100\uA5A5\005\000\u0112\000"+
+        "\u1E20\000\u012A\uA5A5\005\000\u014C\uA5A5\004\000\u016A\000\000\000\u0232"+
+        "\000\u0101\000\000\000\u0113\000\u1E21\000\u012B\uA5A5\005\000\u014D\uA5A5"+
+        "\004\000\u016B\000\000\000\u0233\uA5A5\005\000\u01DE\000\u01E2\uA5A5\015"+
+        "\000\u022C\u022A\uA5A5\004\000\u01D5\uA5A5\005\000\u01DF\000\u01E3\uA5A5"+
+        "\015\000\u022D\u022B\uA5A5\004\000\u01D6\uA5A5\023\000\u01EC\u01ED\uA5A5"+
+        "$\000\u01E0\u01E1\uA5A5\006\000\u0230\u0231\uA5A5\005\000\u1FB9\000\000"+
+        "\u1FD9\000\000\u1FE9\000\000\000\u1FB1\000\000\u1FD1\000\000\u1FE1\uA5A5"+
+        "\012\000\u04E2\000\000\u04EE\uA5A5\010\000\u04E3\000\000\u04EF\uA5A5-"+
+        "\000\u1E38\u1E39\uA5A5\034\000\u1E5C\u1E5D\uA5A5\030\000\uFED5\000\uFE8C"+
+        "\uA5A5\032\000\u0102\uA5A5\005\000\u0114\000\u011E\000\u012C\uA5A5\005"+
+        "\000\u014E\uA5A5\004\000\u016C\uA5A5\005\000\u0103\000\000\000\u0115\000"+
+        "\u011F\000\u012D\uA5A5\005\000\u014F\uA5A5\004\000\u016D\uA5A5\027\000"+
+        "\u1E1C\u1E1D\uA5A5\013\000\u1FB8\000\000\u1FD8\000\000\u1FE8\000\000\000"+
+        "\u1FB0\000\000\u1FD0\000\000\u1FE0\uA5A5\005\000\u04D0\000\u04D6\u04C1"+
+        "\000\u0419\000\000\u040E\000\000\000\u04D1\000\u04D7\u04C2\000\u0439\000"+
+        "\000\u045E\uA5A5\037\000\u1EB6\u1EB7\uA5A5$\000\uFED4\000\uFE8B\uA5A5"+
+        "\027\000\u1E9B\000\000\u0226\000\u1E02\u010A\000\u1E0A\u0116\u1E1E\u0120"+
+        "\u1E22\u0130\000\000\000\u1E40\u1E44\u022E\u1E56\u1E58\u1E60\u1E6A\000"+
+        "\000\u1E86\u1E8A\u1E8E\u017B\u0227\u1E03\u010B\u1E0B\u0117\u1E1F\u0121"+
+        "\u1E23\uA5A5\004\000\u1E41\u1E45\u022F\u1E57\u1E59\u1E61\u1E6B\000\000"+
+        "\u1E87\u1E8B\u1E8F\u017C\uA5A5\020\000\u1E64\u1E65\000\000\u1E66\u1E67"+
+        "\uA5A5'\000\u1E68\u1E69\uA5A5\014\000\u03D4\u00C4\uA5A5\005\000\u00CB"+
+        "\000\000\u1E26\u00CF\uA5A5\005\000\u00D6\uA5A5\004\000\u00DC\000\u1E84"+
+        "\u1E8C\u0178\000\u00E4\000\000\000\u00EB\000\000\u1E27\u00EF\uA5A5\005"+
+        "\000\u00F6\000\000\000\u1E97\u00FC\000\u1E85\u1E8D\u00FF\uA5A5\025\000"+
+        "\u1E4E\uA5A5\033\000\u1E4F\uA5A5)\000\u1E7A\u1E7B\uA5A5&\000\u03AA\000"+
+        "\000\u03AB\uA5A5\006\000\u03CA\000\000\u03CB\uA5A5\004\000\u0407\u04D2"+
+        "\000\u0401\u04DC\u04DE\u04E4\000\u04E6\u04F0\u04F4\u04F8\u04EC\u04D3\000"+
+        "\u0451\u04DD\u04DF\u04E5\000\u04E7\u04F1\u04F5\u04F9\u04ED\u0457\000\000"+
+        "\u04DA\u04DB\u04EA\u04EB\uA5A5\030\000\u1EA2\uA5A5\005\000\u1EBA\000\000"+
+        "\000\u1EC8\uA5A5\005\000\u1ECE\uA5A5\004\000\u1EE6\000\000\000\u1EF6\000"+
+        "\u1EA3\000\000\000\u1EBB\000\000\000\u1EC9\uA5A5\005\000\u1ECF\uA5A5\004"+
+        "\000\u1EE7\000\000\000\u1EF7\000\000\000\u1EA8\uA5A5\007\000\u1EC2\uA5A5"+
+        "\010\000\u1ED4\uA5A5\012\000\u1EA9\uA5A5\007\000\u1EC3\uA5A5\010\000\u1ED5"+
+        "\uA5A5\013\000\u1EB2\u1EB3\uA5A5\020\000\u1EDE\u1EDF\u1EEC\u1EED\uA5A5"+
+        "\033\000\u00C5\uA5A5\024\000\u016E\uA5A5\005\000\u00E5\uA5A5\022\000\u016F"+
+        "\000\u1E98\000\u1E99\uA5A5\035\000\u0150\uA5A5\004\000\u0170\uA5A5\023"+
+        "\000\u0151\uA5A5\004\000\u0171\uA5A5\042\000\u04F2\uA5A5\013\000\u04F3"+
+        "\uA5A5\042\000\u01CD\000\000\u010C\000\u010E\u011A\000\u01E6\u021E\u01CF"+
+        "\000\u01E8\u013D\000\u0147\u01D1\000\u0158\u0160\u0164\u01D3\uA5A5\004"+
+        "\000\u017D\u01CE\000\u010D\u010F\u011B\000\u01E7\u021F\u01D0\u01F0\u01E9"+
+        "\u013E\000\u0148\u01D2\000\u0159\u0161\u0165\u01D4\uA5A5\004\000\u017E"+
+        "\uA5A5\032\000\u01D9\uA5A5\033\000\u01DA\uA5A5\032\000\u01EE\uA5A5,\000"+
+        "\u01EF\uA5A5\015\000\u0200\uA5A5\005\000\u0204\000\000\000\u0208\uA5A5"+
+        "\005\000\u020C\000\u0210\000\000\u0214\uA5A5\005\000\u0201\000\000\000"+
+        "\u0205\000\000\000\u0209\uA5A5\005\000\u020D\000\u0211\000\000\u0215\uA5A5"+
+        "\023\000\u0476\u0477\uA5A5\034\000\u0202\uA5A5\005\000\u0206\000\000\000"+
+        "\u020A\uA5A5\005\000\u020E\000\u0212\000\000\u0216\uA5A5\005\000\u0203"+
+        "\000\000\000\u0207\000\000\000\u020B\uA5A5\005\000\u020F\000\u0213\000"+
+        "\000\u0217\uA5A5$\000\u1F08\u1F18\u1F28\u1F38\u1F48\000\000\u1F68\000"+
+        "\000\u1F00\u1F10\u1F20\u1F30\u1F40\u1FE4\u1F50\u1F60\uA5A5\036\000\u1F80"+
+        "\000\u1F88\u1F90\000\u1F98\u1FA0\000\u1FA8\uA5A5'\000\u1F09\u1F19\u1F29"+
+        "\u1F39\u1F49\u1FEC\u1F59\u1F69\000\000\u1F01\u1F11\u1F21\u1F31\u1F41\u1FE5"+
+        "\u1F51\u1F61\uA5A5\036\000\u1F81\000\u1F89\u1F91\000\u1F99\u1FA1\000\u1FA9"+
+        "\uA5A5$\000\u01A0\uA5A5\004\000\u01AF\uA5A5\023\000\u01A1\uA5A5\004\000"+
+        "\u01B0\uA5A5\026\000\u1EDC\u1EDA\uFE1F\u1EE0\uFE15\000\u1EEA\u1EE8\uFDDD"+
+        "\uFDC6\uA5A5\022\000\u1EDD\u1EDB\uFC9B\u1EE1\uFC85\000\u1EEB\u1EE9\uFC47"+
+        "\uFC3B\uA5A5\017\000\uFD2D\uFD1C\uFD0D\uFCFE\uFCF0\uFCE2\uA5A5\014\000"+
+        "\u1EEE\u1EEF\uFBB7\uFBA6\uFB95\uFB84\uFB72\uFB63\uFB54\uFB42\uA5A5\024"+
+        "\000\uFB73\uFB64\uFB55\uFB43\uFB2A\uFFA1\uFF8E\uFF7A\uFF64\uFF53\uFF43"+
+        "\uFF34\uA5A5\034\000\uFD79\uFD6D\uFD5D\uFD4D\uA5A5\004\000\uFD0E\uFCFF"+
+        "\uFCF1\uFCE3\uA5A5\012\000\uFC0C\uFBFC\uFBEB\uFBE2\uFBD8\uFBC8\uFBB8\uFBA7"+
+        "\uA5A5\017\000\uFD77\uFD6B\uFD5B\uFD4B\uFD43\uFD3A\uFD2B\uFD1A\uA5A5\032"+
+        "\000\uFB92\uFB81\uFB70\uFB61\uFB52\uFB41\uFB29\uFFA0\uFF8D\uFF79\uA5A5"+
+        "\036\000\u1EE2\u1EE3\u1EDE\u1EDF\uFBE1\uFBD6\uFBC4\uFBB6\uFBA5\uFB94\uFB83"+
+        "\uFB71\uFB62\uFB53\uA5A5\012\000\u1EF0\u1EF1\u1EEC\u1EED\uA5A5\033\000"+
+        "\u1EA0\000\u1E04\000\000\u1E0C\u1EB8\000\000\u1E24\u1ECA\000\u1E32\u1E36"+
+        "\u1E42\u1E46\u1ECC\000\u1E5A\u1E62\u1E6C\u1EE4\u1E7E\u1E88\000\u1EF4\u1E92"+
+        "\u1EA1\u1E05\000\u1E0D\u1EB9\000\000\u1E25\u1ECB\000\u1E33\u1E37\u1E43"+
+        "\u1E47\u1ECD\000\u1E5B\u1E63\u1E6D\u1EE5\u1E7F\u1E89\000\u1EF5\u1E93\uFEBC"+
+        "\uFEB6\u1EAC\uFEA5\uFE9F\uFE98\000\000\uFE7B\uFE6F\u1EC6\uFE5C\uFE50\uFE4A"+
+        "\uFE43\uFE3D\uFE2F\uFE26\uFE22\u1ED8\uFE1B\uFE13\000\uFDF5\uFDE9\uFDD8"+
+        "\uFDC2\uFDB1\uFD97\uFD8B\u1EAD\uFD75\uFD68\uFD58\000\000\uFD38\uFD28\u1EC7"+
+        "\uFD08\uFCF9\uFCEB\uFCDD\uFCD1\uFCBB\uFCAD\uFCA3\u1ED9\uFC90\uFC81\000"+
+        "\uFC60\uFC52\uFC46\uFC3A\uFC29\uFC14\uFC11\uFC08\u1EB6\u1EB7\uA5A5\010"+
+        "\000\uFB3C\uFB26\uFF75\uFF60\uFF4F\uFF3F\uFF30\uFF25\uFF0C\uFEFB\uA5A5"+
+        "\006\000\uFEB7\uFEAF\uFE99\uFE8A\uFE84\uFE7D\uFE71\uFE67\uFE4B\uFE14\uFE08"+
+        "\uFDEB\uFDDA\uFD99\uFD8D\uFD6A\uFD5A\uFD29\uFD18\uFD0A\uFCFB\uFCED\uFCDF"+
+        "\uFCBC\uFCAE\uFC91\uFC82\uFC75\uFC6B\uFC61\uFC53\uFC2B\uFC1C\uFC0A\uFBF9"+
+        "\uFBD4\uFBC2\uFBB2\uFBA1\uFB90\uFB7F\uFB6E\uFB5F\uFB4F\uFB3E\uFF8A\uFF76"+
+        "\uFF61\uFF50\uFF40\uFF31\uFF26\uFF1B\uFF14\uFF0D\uFEFC\u1EE2\u1EE3\u1EF0"+
+        "\u1EF1\000\uFBB4\uFBA3\uFB91\uFB80\uFB6F\uFB60\uFB51\uFB40\uFB28\uFF9F"+
+        "\uFF8C\uFF78\uFF63\uFF52\uFF42\uFF33\uFF1D\uFF16\uFF0F\uFEFE\000\000\uFEC4"+
+        "\uFEBF\uA5A5\004\000\uFE3F\uFE37\uFE32\uFE29\uFE0A\uFDFF\uFDF8\uFDED\uFDDC"+
+        "\uFDC5\uFDB4\uFDAA\uFDA1\uFD9A\uFD8E\uFD82\uFD78\uFD6C\uFD5C\uFD4C\uFD44"+
+        "\uFD3B\uFD2C\uFD1B\uFD0C\uFCFD\uFCEF\uFCE1\uA5A5\004\000\uFC93\uFC84\uFC2D"+
+        "\uFC1E\000\000\uFC0B\uFBFA\uFBE9\uFBE0\uFBD5\uFBC3\uFBB5\uFBA4\uFB93\uFB82"+
+        "\uA5A5\023\000\uFC36\uFC24\uFBDD\uFBCF\uA5A5\006\000\uFB37\uFB20\uFF99"+
+        "\uFF85\uA5A5\006\000\uFEEA\uFEE3\000\000\uFED0\uFEC9\uA5A5\004\000\uFE95"+
+        "\uFE89\uFE82\uFE7A\uA5A5\014\000\uFE1A\uFE0F\uFE03\uFDFA\uFDD2\uFDBE\uA5A5"+
+        "\006\000\uFD71\uFD63\uFD53\uFD47\uFD3F\uFD35\uFD24\uFD16\uFCCF\uFCC4\uA5A5"+
+        "\006\000\u1E68\u1E69\000\000\uFC44\uFC37\uFC25\uFC18\000\000\uFC04\uFBF3"+
+        "\uA5A5\014\000\uFB23\uFF9B\uFF87\uFF72\uFF5D\uFF4C\uFF24\uFF19\uFF12\uFF08"+
+        "\uFEF7\uFEEC\uFEE5\uFEDD\uFEAE\uFEA4\uFE9E\uFE97\000\uFE5B\uFE4F\uFE49"+
+        "\000\000\uFE12\uFE06\uFDFC\uFDF4\uFDE8\uFDD7\uFDC0\uFDB0\uFDA7\uFD9F\000"+
+        "\000\uFD80\uFD74\uFD67\uFD57\uFD49\uFD41\uFD37\uFD27\uA5A5\004\000\uFCDC"+
+        "\uFCD0\uFCC5\uFCBA\uFCAC\uFCA2\uFC9A\uFC8F\uFC80\uFC74\uFC6A\uFC5F\000"+
+        "\000\uFC39\uFC28\uA5A5\004\000\uFBF7\uFBE7\uFBDE\uFBD1\uFBBF\uFBAF\uFB9E"+
+        "\uFB8E\uFB7D\uFB6C\000\000\uFB3A\uFB24\uFF9D\uFF89\uFF74\uFF5F\uFF4E\uFF3E"+
+        "\uA5A5\004\000\uFF0B\uFEFA\uFEED\uFEE6\uFEDE\uFED9\uFED2\uFECB\uFEC2\uFEBD"+
+        "\000\000\uFEA6\uFEA0\uFE83\uFE7C\uFE70\uFE66\uA5A5 \000\u1E72\uA5A5\030"+
+        "\000\u1E73\uA5A5\034\000\uFDF3\uFDE6\uFDD5\uFDC1\uA5A5\030\000\uFC5D\uFC50"+
+        "\uFC45\uFC38\uA5A5!\000\uFBD2\uFBC0\uFBB0\uFB9F\uFB8F\uFB7E\uFB6D\uFB5E"+
+        "\uFB4E\uFB3D\uA5A5\026\000\uFB50\uFB3F\uFB27\uFF9E\uFF8B\uFF77\uFF62\uFF51"+
+        "\uFF41\uFF32\uA5A5\004\000\uFD0B\uFCFC\uFCEE\uFCE0\uA5A5)\000\uFB21\uFF9A"+
+        "\uFF86\uFF71\uA5A5\030\000\uFF09\uFEF8\uA5A5\033\000\u1E00\uA5A5\032\000"+
+        "\u1E01\uA5A5\030\000\uFEBB\uFEB4\uFEAC\uFEA3\uFE9D\uFE96\uA5A5\026\000"+
+        "\uFD95\uFD89\uFD7F\uFD73\uFD65\uFD55\uA5A5\027\000\uFC10\uFC05\uFBF4\uFBE6"+
+        "\uA5A5\025\000\uFBB3\uFBA2\uA5A5\016\000\uFF1C\uFF15\uFF0E\uFEFD\uA5A5"+
+        "\012\000\uFE31\uFE28\uFE09\uFDFE\uFDF7\uFDEC\uA5A5\032\000\uFC2C\uFC1D"+
+        "\uA5A5\031\000\uFE10\uFE04\uFDFB\uFDF2\uFDE4\uFDD3\uFDBF\uFDAF\uFDA6\uFD9E"+
+        "\000\000\uFD7E\uFD72\uFD64\uFD54\uFD48\uFD40\uFD36\uFD25\uA5A5 \000\u0218"+
+        "\u021A\uA5A5\027\000\u0219\u021B\uA5A5\026\000\uFC73\uFC69\uFC5E\uFC51"+
+        "\uFC27\uFC1A\uFC07\uFBF6\uA5A5#\000\uFC6F\uFC65\000\000\uFC40\uFC33\uFC22"+
+        "\uFC16\000\000\uFC01\uFBF0\uA5A5\037\000\uFE5A\uA5A5(\000\u00C7\000\u1E10"+
+        "\u0228\000\u0122\u1E28\000\000\u0136\u013B\000\u0145\000\000\u0156\u015E"+
+        "\u0162\uA5A5\010\000\u00E7\u1E11\u0229\000\u0123\u1E29\000\000\u0137\u013C"+
+        "\000\u0146\000\000\u0157\u015F\u0163\uA5A5\016\000\uFE78\uFE6D\uFE64\uFE59"+
+        "\uA5A5\004\000\uFE2E\uA5A5\023\000\uFD34\uFD23\uFD15\uFD05\uA5A5\004\000"+
+        "\uFCB8\uA5A5\020\000\u1E08\u1E09\uFB9B\uFB8B\uFB7A\uFB69\uFB5B\uFB4B\uFB38"+
+        "\uFB22\uFF70\uFF5C\u1E1C\u1E1D\uFF2E\uFF23\uFF07\uFEF6\uFEEB\uFEE4\uFEDC"+
+        "\uFED8\uFED1\uFECA\uFEB5\uFEAD\uA5A5\007\000\uFE11\uFE05\uFDE5\uFDD4\uFD96"+
+        "\uFD8A\uFD66\uFD56\uA5A5\006\000\uFCB9\uFCAB\uFC8E\uFC7F\uFC72\uFC68\uFC5C"+
+        "\uFC4F\uFC26\uFC19\uFC06\uFBF5\uA5A5\016\000\uFED3\uFECC\uFEC3\uFEBE\000"+
+        "\000\uFE5D\uFE51\uFE3E\uFE36\uA5A5\006\000\uFDDB\uFDC4\uFDB3\uFDA9\uA5A5"+
+        "\010\000\uFD42\uFD39\uFD2A\uFD19\uA5A5\004\000\uFCD2\uFCC6\uFCBD\uFCAF"+
+        "\uFC92\uFC83\uA5A5#\000\uFBDA\uFBCB\uFBBA\uFBA9\uFB97\uFB87\uFB57\uFB45"+
+        "\uFB31\uFFAA\uFF95\uFF81\uFF6B\uFF58\uFF48\uFF39\uFF04\uFEF3\uFEE8\uFEE1"+
+        "\uFEDA\uFED6\uFECE\uFEC7\uFEB1\uFEA9\uA5A5\004\000\uFE80\uFE76\uFE6B\uFE61"+
+        "\uFE56\uFE4D\uFE46\uFE41\uFE3A\uFE34\uFE2D\uFE24\uFE20\uFE1C\uA5A5\004"+
+        "\000\uFDCD\uFDB9\uFDAB\uFDA3\uFD9C\uFD92\uFD86\uFD7B\uA5A5\010\000\uFCCB"+
+        "\uFCC1\uFCB5\uFCA7\uFC9E\uFC96\uFC89\uFC7A\uFC6E\uFC64\uFC58\uFC4B\uFC3F"+
+        "\uFC32\uFC21\uFC15\uFC12\uFC0D\uFC00\uFBEF\uFBE3\uFBDB\uFBCD\uFBBC\uFBAB"+
+        "\uFB99\uA5A5\030\000\uFE63\uFE58\uA5A5\032\000\uFCF6\uFCE8\uFCD9\uFCCE"+
+        "\uFCC3\uFCB7\uFCAA\uFCA1\uFC99\uFC8D\uFC7E\uFC71\uFC67\uFC5B\uFC4E\uFC43"+
+        "\uA5A5\033\000\u0104\uA5A5\005\000\u0118\000\000\000\u012E\uA5A5\005\000"+
+        "\u01EA\uA5A5\004\000\u0172\uA5A5\005\000\u0105\000\000\000\u0119\000\000"+
+        "\000\u012F\uA5A5\005\000\u01EB\uA5A5\004\000\u0173\uA5A5\005\000\uFEB9"+
+        "\uFEB2\uFEAA\uFEA2\uFE9C\uFE93\000\000\uFE77\uFE6C\uFE62\uFE57\uFE4E\uFE47"+
+        "\uFE42\uFE3B\000\uFE25\uFE21\uFE1E\uFE19\uFE0E\000\uFDF1\uFDE3\uFDD0\uFDBC"+
+        "\000\uFD94\uFD88\uFD7D\uFD70\uFD62\uFD52\000\000\uFD33\uFD22\uFD14\uFD04"+
+        "\uFCF5\uFCE7\uFCD8\uFCCD\000\uFCA9\uFCA0\uFC98\uFC8B\uFC7C\000\uFC5A\uFC4D"+
+        "\uFC42\uFC35\000\000\uFC0F\uFC03\uFBF2\uFBE5\uA5A5\012\000\uFF6F\uFF5B"+
+        "\uFF4B\uFF3C\uFF2D\uFF22\uFF06\uFEF5\uA5A5\010\000\uFE94\uFE88\uFE81\uFE79"+
+        "\uFE6E\uFE65\uFE48\uA5A5\010\000\u01EC\u01ED\uFD07\uFCF8\uFCEA\uFCDB\uA5A5"+
+        "\014\000\uFBD0\uFBBE\uFBAD\uFB9C\uFB8C\uFB7B\uFB6A\uFB5C\uFB4C\uFB39\uA5A5"+
+        "\013\000\uFDE7\uFDD6\uFD26\uFD17\000\uFBAE\uFB9D\uFB8D\uFB7C\uFB6B\uFB5D"+
+        "\uFB4D\uFB3B\uFB25\uFF9C\uFF88\uFF73\uFF5E\uFF4D\uFF3D\uFF2F\uFF1A\uFF13"+
+        "\uFF0A\uFEF9\uA5A5\012\000\uFE30\uFE27\uFE07\uFDFD\uFDF6\uFDEA\uFDD9\uFDC3"+
+        "\uFDB2\uFDA8\uFDA0\uFD98\uFD8C\uFD81\uFD76\uFD69\uFD59\uFD4A\uA5A5\004"+
+        "\000\uFD09\uFCFA\uFCEC\uFCDE\uA5A5\006\000\uFC2A\uFC1B\000\000\uFC09\uFBF8"+
+        "\uFBE8\uFBDF\uFBD3\uFBC1\uFBB1\uFBA0\uA5A5\023\000\uFC4A\uFC3E\uA5A5\012"+
+        "\000\uFB2F\uFFA8\uFF93\uFF7F\uFF69\uFF56\uFF46\uFF37\uA5A5\012\000\uFEA1"+
+        "\uFE9B\uFE92\uFE87\uA5A5\032\000\uFD6E\uFD60\uFD50\uFD45\uFD3D\uFD31\uFD20"+
+        "\uFD12\uA5A5\032\000\uFB89\uFB78\uFB67\uFB59\uFB47\uFB33\uFB1D\uFF96\uFF82"+
+        "\uFF6C\uA5A5\022\000\uFE1D\uFE18\uFE0D\uFE02\uFDF9\uFDF0\uFDE2\uFDCF\uFDBB"+
+        "\uFDAD\uFDA4\uFD9D\uFD93\uFD87\uFD7C\uFD6F\uFD61\uFD51\uFD46\uFD3E\uFD32"+
+        "\uFD21\uFD13\uFD03\uFCF4\uFCE6\uFCD7\uFCCC\uFCC2\uFCB6\uFCA8\uFC9F\uFC97"+
+        "\uFC8A\uFC7B\uFC70\uFC66\uFC59\uFC4C\uFC41\uFC34\uFC23\uFC17\uFC13\uFC0E"+
+        "\uFC02\uFBF1\uFBE4\uFBDC\uFBCE\uFBBD\uFBAC\uFB9A\uFB8A\uFB79\uFB68\uFB5A"+
+        "\uFB49\uFB35\uFB1F\uFF98\uFF84\uFF6E\uFF5A\uFF4A\uFF3B\uFF2C\uFF21\uFF18"+
+        "\uFF11\uFF05\uFEF4\uFEE9\uFEE2\uFEDB\uFED7\uFECF\uFEC8\uFEC1\uFEBA\uFEB3"+
+        "\uFEAB\uA5A5\026\000\u1E12\u1E18\uA5A5\006\000\u1E3C\000\u1E4A\uA5A5\004"+
+        "\000\u1E70\u1E76\uA5A5\010\000\u1E13\u1E19\uA5A5\006\000\u1E3D\000\u1E4B"+
+        "\uA5A5\004\000\u1E71\u1E77\uA5A5\015\000\uFE75\uFE6A\uFE60\uFE55\uA5A5"+
+        "\004\000\uFE2C\uA5A5\006\000\uFDEF\uFDE0\uFDCB\uFDB8\uA5A5\011\000\uFD2F"+
+        "\uFD1E\uFD10\uFD01\uA5A5\004\000\uFCB4\uA5A5\006\000\uFC57\uFC49\uFC3D"+
+        "\uFC31\uA5A5\016\000\uFB30\uFFA7\uFF68\uFF55\uFF45\uFF36\uFF29\uFF20\uFF03"+
+        "\uFEF2\uA5A5\017\000\uFE0C\uFE01\uFDE1\uFDCC\uFD90\uFD84\uFD5F\uFD4F\uA5A5"+
+        "\020\000\uFBFF\uFBEE\uFBCC\uFBBB\uFBAA\uFB98\uFB88\uFB77\uFB66\uFB58\uFB48"+
+        "\uFB34\uA5A5\026\000\uFB4A\uFB36\uFB1E\uFF97\uFF83\uFF6D\uFF59\uFF49\uFF3A"+
+        "\uFF2B\uA5A5\014\000\uFE3C\uFE35\uA5A5\006\000\uFDD1\uFDBD\uFDAE\uFDA5"+
+        "\uA5A5\014\000\uFD06\uFCF7\uFCE9\uFCDA\uA5A5)\000\uFBD9\uFBC9\uA5A5\006"+
+        "\000\uFB2C\uFFA4\uFF91\uFF7D\uA5A5$\000\uFDC8\uFDB6\uFBFD\uFBEC\uA5A5"+
+        "\014\000\uFFA6\uFF92\uFF7E\uFF67\uA5A5\017\000\uFE54\uA5A5\034\000\uFCD5"+
+        "\uFCCA\uFCC0\uFCB3\uFCA6\uFC9D\uFC95\uFC88\uFC78\uFC6D\uFC63\uFC56\uA5A5"+
+        " \000\uFF02\uFEF1\uA5A5$\000\u1E2A\uA5A5\030\000\u1E2B\uA5A5&\000\uFEB0"+
+        "\uFEA8\uA5A5\027\000\uFC8C\uFC7D\uA5A5\025\000\uFEE7\uFEE0\000\000\uFECD"+
+        "\uFEC6\uA5A5'\000\u1E1A\000\000\000\u1E2C\uA5A5\012\000\u1E74\uA5A5\011"+
+        "\000\u1E1B\000\000\000\u1E2D\uA5A5\012\000\u1E75\uA5A5\015\000\uFE73\uFE68"+
+        "\uFE5E\uFE53\uFE4C\uFE44\uFE40\uFE38\uA5A5\007\000\uFDEE\uFDDE\uFDC9\uFDB7"+
+        "\uA5A5\011\000\uFD2E\uFD1D\uFD0F\uFD00\uFCF2\uFCE4\uFCD4\uFCC9\uA5A5\007"+
+        "\000\uFC55\uFC48\uFC3C\uFC30\uA5A5\020\000\uFF66\uFF54\uFF44\uFF35\uFF27"+
+        "\uFF1E\uFF00\uFEEF\uA5A5\010\000\uFE91\uFE86\uFE7F\uFE74\uFE69\uFE5F\uFE45"+
+        "\uA5A5\032\000\uFBCA\uFBB9\uFBA8\uFB96\uFB85\uFB75\uFB65\uFB56\uFB44\uFB2E"+
+        "\uA5A5\022\000\uFB86\uFB76\000\000\uFB46\uFB32\uFFA9\uFF94\uFF80\uFF6A"+
+        "\uFF57\uFF47\uFF38\uFF2A\uA5A5\024\000\uFDCE\uFDBA\uFDAC\uFDA2\uFD9B\uFD91"+
+        "\uFD85\uFD7A\uA5A5\010\000\uFD02\uFCF3\uFCE5\uFCD6\uA5A51\000\uFB2B\uFFA2"+
+        "\uFF8F\uFF7B\uA5A5\020\000\uFE8F\uFE85\uA5A5\042\000\uFFA3\uFF90\uFF7C"+
+        "\uFF65\uA5A5,\000\uFCD3\uFCC8\uFCBF\uFCB1\uFCA4\uFC9C\uFC94\uFC86\uFC76"+
+        "\uFC6C\uFC62\uFC54\000\000\uFC2F\uFC20\uA5A5\034\000\uFEFF\uFEEE\uA5A5"+
+        "\035\000\u1E06\000\000\u1E0E\uA5A5\006\000\u1E34\u1E3A\000\u1E48\000\000"+
+        "\u1E5E\000\u1E6E\uA5A5\005\000\u1E94\000\u1E07\000\u1E0F\000\000\000\u1E96"+
+        "\000\000\u1E35\u1E3B\000\u1E49\000\000\u1E5F\000\u1E6F\uA5A5\005\000\u1E95"+
+        "\uA5A5\020\000\uFE2B\uA5A5\033\000\uFCB0\uA5A5\030\000\uFB2D\uFFA5\uA5A5"+
+        "\017\000\uFEA7\uA5A5\007\000\uFE0B\uFE00\uFDDF\uFDCA\uFD8F\uFD83\uFD5E"+
+        "\uFD4E\uA5A5\006\000\uFCB2\uFCA5\uFC87\uFC77\uA5A5\006\000\uFBFE\uFBED"+
+        "\uA5A5\017\000\uFF28\uFF1F\uFF17\uFF10\uFF01\uFEF0\uA5A5\033\000\uFEC0"+
+        "\uFEB8\uA5A5\004\000\uFE39\uFE33\uA5A5\022\000\uFD3C\uFD30\uFD1F\uFD11"+
+        "\uA5A5\011\000\uFC79\uA5A5!\000\uFC2E\uFC1F\uFBD7\uFBC7\uA5A5\021\000"+
+        "\uFEDF\000\000\000\uFEC5\uA5A5\006\000\uFE7E\uFE72\uA5A5\020\000\uFDC7"+
+        "\uFDB5\uA5A5\016\000\uFCC7\uFCBE\uA5A5\020\000\uFBFB\uFBEA\uA5A5\034\000"+
+        "\uFE9A\uFE90\000\uFE52\uA5A5 \000\u226E\u2260\000\u226F\uA5A5-\000\u219A"+
+        "\u219B\u21AE\u21CD\u21CF\u21CE\u2204\u2209\u220C\u2224\u2226\u2241\u2244"+
+        "\u2247\u2249\u226D\u2262\u2270\u2271\u2274\u2275\u2278\u2279\u2280\u2281"+
+        "\u22E0\u22E1\u2284\u2285\u2288\u2289\u22E2\u22E3\u22AC\u22AD\u22AE\u22AF"+
+        "\u22EA\u22EB\u22EC\u22ED\uA5A5\005\000\u1FC1\uA5A5\006\000\u1FCF\000\000"+
+        "\u1FDF\uA5A5\030\000\u1FB6\000\u1FC6\u1FD6\000\000\u1FE6\u1FF6\u1FD7\u1FE7"+
+        "\uA5A5.\000\u1F06\u1F07\uA5A5\006\000\u1F0E\u1F0F\uA5A5\012\000\u1F26"+
+        "\u1F27\uA5A5\006\000\u1F2E\u1F2F\uA5A5\006\000\u1F36\u1F37\u1F3E\u1F3F"+
+        "\uA5A5\004\000\u1F56\u1F57\u1F5F\u1F66\u1F67\uA5A5\006\000\u1F6E\u1F6F"+
+        "\uA5A5\011\000\u1F86\u1F87\u1F8E\u1F8F\u1F96\u1F97\u1F9E\u1F9F\u1FA6\u1FA7"+
+        "\u1FAE\u1FAF\u1FB7\000\000\u1FC7\000\000\u1FF7\uA5A5)\000\u1FBC\000\u1FCC"+
+        "\uA5A5\004\000\u1FFC\u1FB4\u1FC4\u1FB3\000\u1FC3\uA5A5\004\000\u1FF3\000"+
+        "\000\u1FF4\uA5A5-\000\u1F80\u1F81\u1F82\u1F83\u1F84\u1F85\u1F86\u1F87"+
+        "\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D\u1F8E\u1F8F\uA5A5\004\000\u1F90\u1F91"+
+        "\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1F98\u1F99\u1F9A\u1F9B\u1F9C\u1F9D"+
+        "\u1F9E\u1F9F\uA5A5\013\000\u1FA0\u1FA1\u1FA2\u1FA3\u1FA4\u1FA5\u1FA6\u1FA7"+
+        "\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FB2\u1FC2\u1FF2\uA5A5"+
+        "\015\000\u1FB7\000\000\u1FC7\000\000\u1FF7\uA5A5\035\000\uFB1D\uA5A5\042"+
+        "\000\u0622\uA5A5\037\000\u0623\u0624\u0626\u06C2\u06D3\u06C0\uA5A5\030"+
+        "\000\uFE2A\uFE23\u0625\uA5A5%\000\u0929\u0931\u0934\uA5A5 \000\u09CB\uA5A5"+
+        "\037\000\u09CC\uA5A5 \000\u0B4B\uA5A5\037\000\u0B48\uA5A5\037\000\u0B4C"+
+        "\uA5A5!\000\u0BCA\u0BCB\uA5A5\035\000\u0B94\u0BCC\000\u0C48\uA5A5!\000"+
+        "\u0CCA\uA5A5\036\000\u0CC0\u0CC7\u0CCB\uA5A5\036\000\u0CC8\uA5A5!\000"+
+        "\u0D4A\u0D4B\uA5A5\036\000\u0D4C\uA5A5!\000\u0DDA\000\u0DDD\uA5A5\035"+
+        "\000\u0DDC\uA5A5\037\000\u0DDE\uFB74\uA5A5!\000\u1026\uA5A52\000\u3094"+
+        "\u304C\u304E\u3050\u3052\u3054\u3056\u3058\u305A\u305C\u305E\u3060\u3062"+
+        "\u3065\u3067\u3069\u3070\u3073\u3076\u3079\u307C\u309E\u30F4\u30AC\u30AE"+
+        "\u30B0\u30B2\u30B4\u30B6\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7"+
+        "\u30C9\u30D0\u30D3\u30D6\u30D9\u30DC\u30F7\u30F8\u30F9\u30FA\u30FE\uA5A5"+
+        " \000\u3071\u3074\u3077\u307A\u307D\uA5A5\021\000\u30D1\u30D4\u30D7\u30DA"+
+        "\u30DD\uA5A5\031\000"
+        );
+
+    static final char[] actionIndex = Utility.RLEStringToCharArray(
+        "\000\u048E\u145A\u145E\u1462\u1466\u146A\u146E\u1471\u1475\u1478\u147C"+
+        "\u147F\u1483\u1487\u148A\u148E\u1492\u1496\u1499\u149C\u14A0\u14A3\u14A7"+
+        "\u14AA\u14AD\u14B0\u14B4\u14B7\u14BB\u14BE\u14C1\u14C4\u14C7\u14CA\u14CD"+
+        "\u14D0\u14D3\u14D6\u14D9\u14DC\u14DF\u14E2\u14E5\u14E8\u14EB\u14EE\u14F2"+
+        "\u14F5\u14F8\u14FB\u14FE\u1501\u1504\u1507\u150A\u150D\u1510\u1513\u1516"+
+        "\u1519\u151C\u151F\u1522\u1526\u1529\u152C\u152F\u1532\u1535\u1538\u153B"+
+        "\u153E\u1541\u1544\u1547\u154A\u154D\u1551\u1554\u1557\u155A\u155D\u1560"+
+        "\u1563\u1566\u1569\u156D\u1570\u1573\u1576\u1579\u157C\u157F\u1582\u1586"+
+        "\u1589\u158C\u158F\u1592\u1595\u1598\u159B\u159E\u15A1\u15A5\u15A8\u15AB"+
+        "\u15AE\u15B1\u15B4\u15B7\u15BB\u15BE\u15C1\u15C4\u15C7\u15CA\u15CD\u15D0"+
+        "\u15D3\u15D6\u15DA\u15DD\u15E0\u15E3\u15E6\u15E9\u15ED\u15F0\u15F3\u15F6"+
+        "\u15F9\u15FC\u1600\u1603\u1606\u1609\u160D\u1611\u1614\u1618\u161B\u161E"+
+        "\u1621\u1624\u1628\u162B\u162E\u1631\u1634\u1638\u163B\u163E\u1641\u1645"+
+        "\u1649\u164C\u1650\u1653\u1656\u1659\u165C\u1660\u1663\u1666\u1669\u166C"+
+        "\u166F\u1672\u1676\u1679\u167C\u167F\u1682\u1685\u1688\u168B\u168E\u1691"+
+        "\u1695\u1698\u169B\u169E\u16A1\u16A4\u16A7\u16AA\u16AE\u16B1\u16B4\u16B7"+
+        "\u16BA\u16BD\u16C1\u16C4\u16C7\u16CB\u16CF\u16D3\u16D6\u16D9\u16DC\u16DF"+
+        "\u16E2\u16E5\u16E9\u16ED\u16F0\u16F3\u16F6\u16F9\u16FC\u16FF\u1702\u1705"+
+        "\u1708\u170B\u170E\u1711\u1714\u1717\u171B\u171E\u1722\u1725\u1729\u172C"+
+        "\u172F\u1732\u1735\u1738\u173B\u173E\u1741\u1744\u1747\u174A\u174D\u1751"+
+        "\u1754\u1758\u175C\u1760\u1763\u1766\u1769\u176C\u1770\u1773\u1776\u177A"+
+        "\u177E\u1781\u1785\u1788\u178B\u178E\u1791\u1794\u1797\u179A\u179D\u17A1"+
+        "\u17A5\u17A8\u17AB\u17AF\u17B2\u17B5\u17B8\u17BB\u17BE\u17C1\u17C4\u17C7"+
+        "\u17CA\u17CD\u17D0\u17D3\u17D7\u17DB\u17DE\u17E1\u17E4\u17E8\u17EB\u17EE"+
+        "\u17F1\u17F4\u17F7\u17FA\u17FD\u1801\u1805\u1809\u180C\u1810\u1814\u1817"+
+        "\u181A\u181D\u1820\u1823\u1826\u1829\u182D\u1830\u1834\u1837\u183A\u183D"+
+        "\u1840\u1843\u1847\u184A\u184E\u1851\u1854\u1858\u185B\u185F\u1862\u1865"+
+        "\u1868\u186B\u186E\u1871\u1875\u1879\u187C\u187F\u1883\u1887\u188A\u188D"+
+        "\u1890\u1893\u1897\u189B\u189E\u18A1\u18A5\u18A9\u18AC\u18AF\u18B2\u18B5"+
+        "\u18B9\u18BC\u18C0\u18C3\u18C6\u18CA\u18CD\u18D0\u18D4\u18D7\u18DA\u18DD"+
+        "\u18E0\u18E3\u18E6\u18E9\u18ED\u18F0\u18F4\u18F7\u18FB\u18FE\u1901\u1905"+
+        "\u1908\u190B\u190E\u1911\u1914\u1917\u191B\u191F\u1923\u1927\u192A\u192E"+
+        "\u1931\u1934\u1938\u193C\u1940\u1944\u1947\u194B\u194E\u1951\u1955\u1958"+
+        "\u195C\u195F\u1963\u1966\u196A\u196D\u1970\u1973\u1976\u1979\u197C\u197F"+
+        "\u1982\u1985\u1988\u198B\u198E\u1991\u1994\u1997\u199A\u199D\u19A0\u19A3"+
+        "\u19A6\u19A9\u19AC\u19AF\u19B2\u19B5\u19B8\u19BB\u19BE\u19C1\u19C4\u19C7"+
+        "\u19CA\u19CD\u19D0\u19D3\u19D6\u19D9\u19DC\u19DF\u19E2\u19E5\u19E8\u19EB"+
+        "\u19EE\u19F1\u19F4\u19F7\u19FA\u19FD\u1A00\u1A03\u1A06\u1A09\u1A0C\u1A0F"+
+        "\u1A12\u1A15\u1A18\u1A1B\u1A1E\u1A21\u1A24\u1A27\u1A2A\u1A2D\u1A30\u1A33"+
+        "\u1A36\u1A39\u1A3C\u1A3F\u1A42\u1A45\u1A48\u1A4B\u1A4E\u1A51\u1A54\u1A57"+
+        "\u1A5A\u1A5D\u1A60\u1A63\u1A66\u1A69\u1A6C\u1A6F\u1A72\u1A76\u1A79\u1A7C"+
+        "\u1A7F\u1A82\u1A85\u1A88\u1A8B\u1A8E\u1A91\u1A94\u1A97\u1A9A\u1A9D\u1AA0"+
+        "\u1AA3\u1AA7\u1AAA\u1AAD\u1AB1\u1AB4\u1AB7\u1ABA\u1ABE\u1AC1\u1AC4\u1AC7"+
+        "\u1ACA\u1ACD\u1AD0\u1AD4\u1AD7\u1ADA\u1ADE\u1AE2\u1AE5\u1AE8\u1AEB\u1AEE"+
+        "\u1AF1\u1AF5\u1AF8\u1AFB\u1AFE\u1B01\u1B04\u1B07\u1B0B\u1B0E\u1B11\u1B15"+
+        "\u1B19\u1B1C\u1B1F\u1B22\u1B26\u1B29\u1B2C\u1B2F\u1B33\u1B37\u1B3B\u1B3E"+
+        "\u1B41\u1B45\u1B48\u1B4C\u1B50\u1B54\u1B58\u1B5B\u1B5E\u1B61\u1B64\u1B67"+
+        "\u1B6A\u1B6D\u1B71\u1B75\u1B78\u1B7C\u1B80\u1B83\u1B86\u1B89\u1B8C\u1B8F"+
+        "\u1B92\u1B95\u1B98\u1B9B\u1B9E\u1BA1\u1BA5\u1BA9\u1BAC\u1BB0\u1BB4\u1BB7"+
+        "\u1BBA\u1BBD\u1BC0\u1BC3\u1BC6\u1BC9\u1BCC\u1BCF\u1BD3\u1BD7\u1BDA\u1BDE"+
+        "\u1BE2\u1BE5\u1BE8\u1BEB\u1BEE\u1BF1\u1BF4\u1BF7\u1BFA\u1BFD\u1C01\u1C04"+
+        "\u1C08\u1C0B\u1C0E\u1C11\u1C14\u1C17\u1C1A\u1C1D\u1C20\u1C24\u1C27\u1C2A"+
+        "\u1C2D\u1C30\u1C33\u1C36\u1C39\u1C3C\u1C3F\u1C42\u1C45\u1C49\u1C4C\u1C4F"+
+        "\u1C52\u1C55\u1C58\u1C5B\u1C5E\u1C61\u1C64\u1C68\u1C6C\u1C6F\u1C72\u1C75"+
+        "\u1C78\u1C7B\u1C7F\u1C82\u1C86\u1C89\u1C8C\u1C8F\u1C92\u1C95\u1C98\u1C9C"+
+        "\u1C9F\u1CA3\u1CA6\u1CA9\u1CAC\u1CAF\u1CB2\u1CB5\u1CB8\u1CBB\u1CBE\u1CC1"+
+        "\u1CC4\u1CC8\u1CCB\u1CCE\u1CD1\u1CD5\u1CD8\u1CDB\u1CDE\u1CE1\u1CE4\u1CE7"+
+        "\u1CEA\u1CED\u1CF0\u1CF3\u1CF6\u1CF9\u1CFC\u1CFF\u1D02\u1D06\u1D09\u1D0C"+
+        "\u1D0F\u1D13\u1D16\u1D19\u1D1C\u1D1F\u1D22\u1D25\u1D28\u1D2B\u1D2E\u1D31"+
+        "\u1D34\u1D37\u1D3A\u1D3D\u1D41\u1D44\u1D48\u1D4B\u1D4E\u1D51\u1D54\u1D57"+
+        "\u1D5A\u1D5D\u1D60\u1D63\u1D66\u1D69\u1D6D\u1D70\u1D74\u1D77\u1D7A\u1D7D"+
+        "\u1D80\u1D83\u1D86\u1D8A\u1D8D\u1D91\u1D94\u1D97\u1D9A\u1D9D\u1DA0\u1DA3"+
+        "\u1DA6\u1DA9\u1DAC\u1DAF\u1DB2\u1DB5\u1DB8\u1DBB\u1DBE\u1DC1\u1DC4\u1DC7"+
+        "\u1DCA\u1DCD\u1DD0\u1DD3\u1DD6\u1DD9\u1DDC\u1DDF\u1DE2\u1DE5\u1DE8\u1DEB"+
+        "\u1DEE\u1DF1\u1DF4\u1DF7\u1DFA\u1DFD\u1E00\u1E03\u1E06\u1E09\u1E0C\u1E0F"+
+        "\u1E12\u1E16\u1E1A\u1E1E\u1E21\u1E24\u1E27\u1E2A\u1E2D\u1E30\u1E34\u1E38"+
+        "\u1E3C\u1E3F\u1E43\u1E46\u1E49\u1E4C\u1E4F\u1E52\u1E56\u1E59\u1E5C\u1E5F"+
+        "\u1E62\u1E65\u1E68\u1E6B\u1E6E\u1E71\u1E74\u1E77\u1E7A\u1E7D\u1E80\u1E83"+
+        "\u1E86\u1E89\u1E8C\u1E8F\u1E92\u1E95\u1E98\u1E9B\u1E9E\u1EA1\u1EA4\u1EA7"+
+        "\u1EAA\u1EAD\u1EB0\u1EB3\u1EB6\u1EB9\u1EBC\u1EBF\u1EC2\u1EC5\u1EC8\u1ECB"+
+        "\u1ECE\u1ED1\u1ED4\u1ED7\u1EDA\u1EDD\u1EE0\u1EE3\u1EE6\u1EE9\u1EEC\u1EEF"+
+        "\u1EF2\u1EF5\u1EF8\u1EFB\u1EFE\u1F01\u1F04\u1F07\u1F0A\u1F0D\u1F10\u1F13"+
+        "\u1F16\u1F19\u1F1C\u1F1F\u1F22\u1F25\u1F28\u1F2B\u1F2E\u1F31\u1F34\u1F38"+
+        "\u1F3B\u1F3F\u1F42\u1F46\u1F49\u1F4C\u1F4F\u1F52\u1F55\u1F59\u1F5C\u1F5F"+
+        "\u1F63\u1F66\u1F69\u1F6D\u1F70\u1F73\u1F76\u1F79\u1F7C\u1F7F\u1F82\u1F85"+
+        "\u1F88\u1F8B\u1F8E\u1F91\u1F94\u1F97\u1F9A\u1F9D\u1FA0\u1FA3\u1FA6\u1FA9"+
+        "\u1FAC\u1FB0\u1FB3\u1FB6\u1FB9\u1FBC\u1FBF\u1FC2\u1FC5\u1FC9\u1FCC\u1FCF"+
+        "\u1FD2\u1FD5\u1FD8\u1FDB\u1FDF\u1FE2\u1FE5\u1FE8\u1FEB\u1FEE\u1FF1\u1FF5"+
+        "\u1FF8\u1FFB\u1FFE\u2001\u2004\u2007\u200B\u200E\u2011\u2014\u2017\u201A"+
+        "\u201D\u2021\u2024\u2027\u202A\u202D\u2030\u2033\u2036\u203A\u203D\u2040"+
+        "\u2043\u2047\u204A\u204D\u2050\u2053\u2056\u2059\u205D\u2060\u2063\u2066"+
+        "\u2069\u206C\u206F\u2073\u2076\u2079\u207C\u207F\u2082\u2085\u2088\u208B"+
+        "\u208E\u2091\u2094\u2097\u209A\u209D\u20A0\u20A4\u20A7\u20AA\u20AD\u20B1"+
+        "\u20B5\u20B8\u20BB\u20BE\u20C1\u20C4\u20C7\u20CA\u20CD\u20D0\u20D3\u20D6"+
+        "\u20DA\u20DD\u20E0\u20E3\u20E7\u20EB\u20EE\u20F1\u20F4\u20F8\u20FB\u20FF"+
+        "\u2103\u2106\u2109\u210C\u2110\u2113\u2117\u211B\u211E\u2121\u2124\u2128"+
+        "\u212B\u212E\u2131\u2134\u2137\u213A\u213D\u2140\u2144\u2148\u214C\u214F"+
+        "\u2152\u2156\u2159\u215C\u2160\u2164\u2168\u216B\u216E\u2171\u2175\u2178"+
+        "\u217C\u2180\u2183\u2187\u218A\u218D\u2190\u2194\u2198\u219C\u219F\u21A2"+
+        "\u21A5\u21A9\u21AC\u21B0\u21B4\u21B7\u21BA\u21BE\u21C1\u21C4\u21C7\u21CB"+
+        "\u21CF\u21D3\u21D6\u21D9\u21DC\u21E0\u21E3\u21E7\u21EB\u21EE\u21F1\u21F4"+
+        "\u21F8\u21FB\u21FE\u2201\u2205\u2209\u220D\u2211\u2214\u2218\u221B\u221E"+
+        "\u2222\u2225\u2229\u222D\u2231\u2234\u2237\u223B\u223F\u2243\u2246\u2249"+
+        "\u224C\u2250\u2254\u2258\u225C\u2260\u2264\u2268\u226C\u2270\u2274\u2278"+
+        "\u227C\u2280\u2284\u2288\u228C\u2290\u2294\u2297\u229A\u229E\u22A2\u22A6"+
+        "\u22AA\u22AE\u22B2\u22B6\u22BA\u22BE\u22C2\u22C6\u22CA\u22CE\u22D2\u22D6"+
+        "\u22DA\u22DE\u22E2\u22E5\u22E9\u22ED\u22F0\u22F4\u22F8\u22FC\u2300\u2303"+
+        "\u2307\u230A\u230E\u2312"
+    );
+
+    static final String replace = 
+        "  \u0308\000s\000\u03A5\000 \u0313\000 \u0314\000 \000a\000 \u0304\000"+
+        "2\0003\000 \u0301\000\u03BC\000 \u0327\0001\000o\0001\u20444\0001\u2044"+
+        "2\0003\u20444\000IJ\000ij\000L\u00B7\000l\u00B7\000\u02BCn\000DZ\u030C"+
+        "\000Dz\u030C\000dz\u030C\000LJ\000Lj\000lj\000NJ\000Nj\000nj\000DZ\000"+
+        "Dz\000dz\000h\000\u0266\000r\000\u0279\000\u027B\000\u0281\000w\000y\000"+
+        " \u0306\000 \u0307\000 \u030A\000 \u0328\000 \u0303\000 \u030B\000\u0263"+
+        "\000l\000x\000\u0295\000 \u0345\000 \u0308\u0301\000\u03B2\000\u03B8\000"+
+        "\u03A5\u0301\000\u03A5\u0308\000\u03C6\000\u03C0\000\u03BA\000\u03C1\000"+
+        "\u03C2\000\u0565\u0582\000\u0627\u0674\000\u0648\u0674\000\u06C7\u0674"+
+        "\000\u064A\u0674\000\u0E4D\u0E32\000\u0ECD\u0EB2\000\u0EAB\u0E99\000\u0EAB"+
+        "\u0EA1\000\u0F0B\000\u0FB2\u0F71\u0F80\000\u0FB3\u0F71\u0F80\000a\u02BE"+
+        "\000s\u0307\000 \u0342\000 \u0308\u0342\000 \u0313\u0300\000 \u0313\u0301"+
+        "\000 \u0313\u0342\000 \u0314\u0300\000 \u0314\u0301\000 \u0314\u0342\000"+
+        " \u0308\u0300\000\u2010\000 \u0333\000.\000..\000...\000\u2032\u2032\000"+
+        "\u2032\u2032\u2032\000\u2035\u2035\000\u2035\u2035\u2035\000!!\000 \u0305"+
+        "\000?!\000!?\0000\0005\0006\0007\0008\0009\000+\000\u2212\000=\000(\000"+
+        ")\000Rs\000a/c\000a/s\000C\000\u00B0C\000c/o\000c/u\000\u0190\000\u00B0"+
+        "F\000g\000H\000\u0127\000I\000L\000N\000No\000P\000Q\000R\000SM\000TE"+
+        "L\000TM\000B\000e\000E\000\u05D0\000\u05D1\000\u05D2\000\u05D3\000i\000"+
+        "1\u20443\0002\u20443\0001\u20445\0002\u20445\0003\u20445\0004\u20445\000"+
+        "1\u20446\0005\u20446\0001\u20448\0003\u20448\0005\u20448\0007\u20448\000"+
+        "1\u2044\000II\000III\000IV\000VI\000VII\000VIII\000IX\000XI\000XII\000"+
+        "D\000ii\000iii\000iv\000vi\000vii\000viii\000ix\000xi\000xii\000d\000"+
+        "m\000\u222B\u222B\000\u222B\u222B\u222B\000\u222E\u222E\000\u222E\u222E"+
+        "\u222E\00010\00011\00012\00013\00014\00015\00016\00017\00018\00019\000"+
+        "20\000(1)\000(2)\000(3)\000(4)\000(5)\000(6)\000(7)\000(8)\000(9)\000"+
+        "(10)\000(11)\000(12)\000(13)\000(14)\000(15)\000(16)\000(17)\000(18)\000"+
+        "(19)\000(20)\0001.\0002.\0003.\0004.\0005.\0006.\0007.\0008.\0009.\000"+
+        "10.\00011.\00012.\00013.\00014.\00015.\00016.\00017.\00018.\00019.\000"+
+        "20.\000(a)\000(b)\000(c)\000(d)\000(e)\000(f)\000(g)\000(h)\000(i)\000"+
+        "(j)\000(k)\000(l)\000(m)\000(n)\000(o)\000(p)\000(q)\000(r)\000(s)\000"+
+        "(t)\000(u)\000(v)\000(w)\000(x)\000(y)\000(z)\000A\000G\000K\000O\000"+
+        "S\000T\000U\000W\000Y\000b\000f\000k\000p\000q\000t\000\u6BCD\000\u9F9F"+
+        "\000\u4E00\000\u4E28\000\u4E36\000\u4E3F\000\u4E59\000\u4E85\000\u4E8C"+
+        "\000\u4EA0\000\u4EBA\000\u513F\000\u5165\000\u516B\000\u5182\000\u5196"+
+        "\000\u51AB\000\u51E0\000\u51F5\000\u5200\000\u529B\000\u52F9\000\u5315"+
+        "\000\u531A\000\u5338\000\u5341\000\u535C\000\u5369\000\u5382\000\u53B6"+
+        "\000\u53C8\000\u53E3\000\u56D7\000\u571F\000\u58EB\000\u5902\000\u590A"+
+        "\000\u5915\000\u5927\000\u5973\000\u5B50\000\u5B80\000\u5BF8\000\u5C0F"+
+        "\000\u5C22\000\u5C38\000\u5C6E\000\u5C71\000\u5DDB\000\u5DE5\000\u5DF1"+
+        "\000\u5DFE\000\u5E72\000\u5E7A\000\u5E7F\000\u5EF4\000\u5EFE\000\u5F0B"+
+        "\000\u5F13\000\u5F50\000\u5F61\000\u5F73\000\u5FC3\000\u6208\000\u6236"+
+        "\000\u624B\000\u652F\000\u6534\000\u6587\000\u6597\000\u65A4\000\u65B9"+
+        "\000\u65E0\000\u65E5\000\u66F0\000\u6708\000\u6728\000\u6B20\000\u6B62"+
+        "\000\u6B79\000\u6BB3\000\u6BCB\000\u6BD4\000\u6BDB\000\u6C0F\000\u6C14"+
+        "\000\u6C34\000\u706B\000\u722A\000\u7236\000\u723B\000\u723F\000\u7247"+
+        "\000\u7259\000\u725B\000\u72AC\000\u7384\000\u7389\000\u74DC\000\u74E6"+
+        "\000\u7518\000\u751F\000\u7528\000\u7530\000\u758B\000\u7592\000\u7676"+
+        "\000\u767D\000\u76AE\000\u76BF\000\u76EE\000\u77DB\000\u77E2\000\u77F3"+
+        "\000\u793A\000\u79B8\000\u79BE\000\u7A74\000\u7ACB\000\u7AF9\000\u7C73"+
+        "\000\u7CF8\000\u7F36\000\u7F51\000\u7F8A\000\u7FBD\000\u8001\000\u800C"+
+        "\000\u8012\000\u8033\000\u807F\000\u8089\000\u81E3\000\u81EA\000\u81F3"+
+        "\000\u81FC\000\u820C\000\u821B\000\u821F\000\u826E\000\u8272\000\u8278"+
+        "\000\u864D\000\u866B\000\u8840\000\u884C\000\u8863\000\u897E\000\u898B"+
+        "\000\u89D2\000\u8A00\000\u8C37\000\u8C46\000\u8C55\000\u8C78\000\u8C9D"+
+        "\000\u8D64\000\u8D70\000\u8DB3\000\u8EAB\000\u8ECA\000\u8F9B\000\u8FB0"+
+        "\000\u8FB5\000\u9091\000\u9149\000\u91C6\000\u91CC\000\u91D1\000\u9577"+
+        "\000\u9580\000\u961C\000\u96B6\000\u96B9\000\u96E8\000\u9751\000\u975E"+
+        "\000\u9762\000\u9769\000\u97CB\000\u97ED\000\u97F3\000\u9801\000\u98A8"+
+        "\000\u98DB\000\u98DF\000\u9996\000\u9999\000\u99AC\000\u9AA8\000\u9AD8"+
+        "\000\u9ADF\000\u9B25\000\u9B2F\000\u9B32\000\u9B3C\000\u9B5A\000\u9CE5"+
+        "\000\u9E75\000\u9E7F\000\u9EA5\000\u9EBB\000\u9EC3\000\u9ECD\000\u9ED1"+
+        "\000\u9EF9\000\u9EFD\000\u9F0E\000\u9F13\000\u9F20\000\u9F3B\000\u9F4A"+
+        "\000\u9F52\000\u9F8D\000\u9F9C\000\u9FA0\000\u3012\000\u5344\000\u5345"+
+        "\000 \u3099\000 \u309A\000\u1100\000\u1101\000\u11AA\000\u1102\000\u11AC"+
+        "\000\u11AD\000\u1103\000\u1104\000\u1105\000\u11B0\000\u11B1\000\u11B2"+
+        "\000\u11B3\000\u11B4\000\u11B5\000\u111A\000\u1106\000\u1107\000\u1108"+
+        "\000\u1121\000\u1109\000\u110A\000\u110B\000\u110C\000\u110D\000\u110E"+
+        "\000\u110F\000\u1110\000\u1111\000\u1112\000\u1161\000\u1162\000\u1163"+
+        "\000\u1164\000\u1165\000\u1166\000\u1167\000\u1168\000\u1169\000\u116A"+
+        "\000\u116B\000\u116C\000\u116D\000\u116E\000\u116F\000\u1170\000\u1171"+
+        "\000\u1172\000\u1173\000\u1174\000\u1175\000\u1160\000\u1114\000\u1115"+
+        "\000\u11C7\000\u11C8\000\u11CC\000\u11CE\000\u11D3\000\u11D7\000\u11D9"+
+        "\000\u111C\000\u11DD\000\u11DF\000\u111D\000\u111E\000\u1120\000\u1122"+
+        "\000\u1123\000\u1127\000\u1129\000\u112B\000\u112C\000\u112D\000\u112E"+
+        "\000\u112F\000\u1132\000\u1136\000\u1140\000\u1147\000\u114C\000\u11F1"+
+        "\000\u11F2\000\u1157\000\u1158\000\u1159\000\u1184\000\u1185\000\u1188"+
+        "\000\u1191\000\u1192\000\u1194\000\u119E\000\u11A1\000\u4E09\000\u56DB"+
+        "\000\u4E0A\000\u4E2D\000\u4E0B\000\u7532\000\u4E19\000\u4E01\000\u5929"+
+        "\000\u5730\000(\u1100)\000(\u1102)\000(\u1103)\000(\u1105)\000(\u1106"+
+        ")\000(\u1107)\000(\u1109)\000(\u110B)\000(\u110C)\000(\u110E)\000(\u110F"+
+        ")\000(\u1110)\000(\u1111)\000(\u1112)\000(\u1100\u1161)\000(\u1102\u1161"+
+        ")\000(\u1103\u1161)\000(\u1105\u1161)\000(\u1106\u1161)\000(\u1107\u1161"+
+        ")\000(\u1109\u1161)\000(\u110B\u1161)\000(\u110C\u1161)\000(\u110E\u1161"+
+        ")\000(\u110F\u1161)\000(\u1110\u1161)\000(\u1111\u1161)\000(\u1112\u1161"+
+        ")\000(\u110C\u116E)\000(\u4E00)\000(\u4E8C)\000(\u4E09)\000(\u56DB)\000"+
+        "(\u4E94)\000(\u516D)\000(\u4E03)\000(\u516B)\000(\u4E5D)\000(\u5341)\000"+
+        "(\u6708)\000(\u706B)\000(\u6C34)\000(\u6728)\000(\u91D1)\000(\u571F)\000"+
+        "(\u65E5)\000(\u682A)\000(\u6709)\000(\u793E)\000(\u540D)\000(\u7279)\000"+
+        "(\u8CA1)\000(\u795D)\000(\u52B4)\000(\u4EE3)\000(\u547C)\000(\u5B66)\000"+
+        "(\u76E3)\000(\u4F01)\000(\u8CC7)\000(\u5354)\000(\u796D)\000(\u4F11)\000"+
+        "(\u81EA)\000(\u81F3)\000\u1100\u1161\000\u1102\u1161\000\u1103\u1161\000"+
+        "\u1105\u1161\000\u1106\u1161\000\u1107\u1161\000\u1109\u1161\000\u110B"+
+        "\u1161\000\u110C\u1161\000\u110E\u1161\000\u110F\u1161\000\u1110\u1161"+
+        "\000\u1111\u1161\000\u1112\u1161\000\u4E94\000\u516D\000\u4E03\000\u4E5D"+
+        "\000\u682A\000\u6709\000\u793E\000\u540D\000\u7279\000\u8CA1\000\u795D"+
+        "\000\u52B4\000\u79D8\000\u7537\000\u9069\000\u512A\000\u5370\000\u6CE8"+
+        "\000\u9805\000\u4F11\000\u5199\000\u6B63\000\u5DE6\000\u53F3\000\u533B"+
+        "\000\u5B97\000\u5B66\000\u76E3\000\u4F01\000\u8CC7\000\u5354\000\u591C"+
+        "\0001\u6708\0002\u6708\0003\u6708\0004\u6708\0005\u6708\0006\u6708\000"+
+        "7\u6708\0008\u6708\0009\u6708\00010\u6708\00011\u6708\00012\u6708\000"+
+        "\u30A2\000\u30A4\000\u30A6\000\u30A8\000\u30AA\000\u30AB\000\u30AD\000"+
+        "\u30AF\000\u30B1\000\u30B3\000\u30B5\000\u30B7\000\u30B9\000\u30BB\000"+
+        "\u30BD\000\u30BF\000\u30C1\000\u30C4\000\u30C6\000\u30C8\000\u30CA\000"+
+        "\u30CB\000\u30CC\000\u30CD\000\u30CE\000\u30CF\000\u30D2\000\u30D5\000"+
+        "\u30D8\000\u30DB\000\u30DE\000\u30DF\000\u30E0\000\u30E1\000\u30E2\000"+
+        "\u30E4\000\u30E6\000\u30E8\000\u30E9\000\u30EA\000\u30EB\000\u30EC\000"+
+        "\u30ED\000\u30EF\000\u30F0\000\u30F1\000\u30F2\000\u30A2\u30CF\u309A\u30FC"+
+        "\u30C8\000\u30A2\u30EB\u30D5\u30A1\000\u30A2\u30F3\u30D8\u309A\u30A2\000"+
+        "\u30A2\u30FC\u30EB\000\u30A4\u30CB\u30F3\u30AF\u3099\000\u30A4\u30F3\u30C1"+
+        "\000\u30A6\u30A9\u30F3\000\u30A8\u30B9\u30AF\u30FC\u30C8\u3099\000\u30A8"+
+        "\u30FC\u30AB\u30FC\000\u30AA\u30F3\u30B9\000\u30AA\u30FC\u30E0\000\u30AB"+
+        "\u30A4\u30EA\000\u30AB\u30E9\u30C3\u30C8\000\u30AB\u30ED\u30EA\u30FC\000"+
+        "\u30AB\u3099\u30ED\u30F3\000\u30AB\u3099\u30F3\u30DE\000\u30AD\u3099\u30AB"+
+        "\u3099\000\u30AD\u3099\u30CB\u30FC\000\u30AD\u30E5\u30EA\u30FC\000\u30AD"+
+        "\u3099\u30EB\u30BF\u3099\u30FC\000\u30AD\u30ED\000\u30AD\u30ED\u30AF\u3099"+
+        "\u30E9\u30E0\000\u30AD\u30ED\u30E1\u30FC\u30C8\u30EB\000\u30AD\u30ED\u30EF"+
+        "\u30C3\u30C8\000\u30AF\u3099\u30E9\u30E0\u30C8\u30F3\000\u30AF\u30EB\u30BB"+
+        "\u3099\u30A4\u30ED\000\u30AF\u30ED\u30FC\u30CD\000\u30B1\u30FC\u30B9\000"+
+        "\u30B3\u30EB\u30CA\000\u30B3\u30FC\u30DB\u309A\000\u30B5\u30A4\u30AF\u30EB"+
+        "\000\u30B5\u30F3\u30C1\u30FC\u30E0\000\u30B7\u30EA\u30F3\u30AF\u3099\000"+
+        "\u30BB\u30F3\u30C1\000\u30BB\u30F3\u30C8\000\u30BF\u3099\u30FC\u30B9\000"+
+        "\u30C6\u3099\u30B7\000\u30C8\u3099\u30EB\000\u30CA\u30CE\000\u30CE\u30C3"+
+        "\u30C8\000\u30CF\u30A4\u30C4\000\u30CF\u309A\u30FC\u30BB\u30F3\u30C8\000"+
+        "\u30CF\u309A\u30FC\u30C4\000\u30CF\u3099\u30FC\u30EC\u30EB\000\u30D2\u309A"+
+        "\u30A2\u30B9\u30C8\u30EB\000\u30D2\u309A\u30AF\u30EB\000\u30D2\u309A\u30B3"+
+        "\000\u30D2\u3099\u30EB\000\u30D5\u30A1\u30E9\u30C3\u30C8\u3099\000\u30D5"+
+        "\u30A3\u30FC\u30C8\000\u30D5\u3099\u30C3\u30B7\u30A7\u30EB\000\u30D5\u30E9"+
+        "\u30F3\000\u30D8\u30AF\u30BF\u30FC\u30EB\000\u30D8\u309A\u30BD\000\u30D8"+
+        "\u309A\u30CB\u30D2\000\u30D8\u30EB\u30C4\000\u30D8\u309A\u30F3\u30B9\000"+
+        "\u30D8\u309A\u30FC\u30B7\u3099\000\u30D8\u3099\u30FC\u30BF\000\u30DB\u309A"+
+        "\u30A4\u30F3\u30C8\000\u30DB\u3099\u30EB\u30C8\000\u30DB\u30F3\000\u30DB"+
+        "\u309A\u30F3\u30C8\u3099\000\u30DB\u30FC\u30EB\000\u30DB\u30FC\u30F3\000"+
+        "\u30DE\u30A4\u30AF\u30ED\000\u30DE\u30A4\u30EB\000\u30DE\u30C3\u30CF\000"+
+        "\u30DE\u30EB\u30AF\000\u30DE\u30F3\u30B7\u30E7\u30F3\000\u30DF\u30AF\u30ED"+
+        "\u30F3\000\u30DF\u30EA\000\u30DF\u30EA\u30CF\u3099\u30FC\u30EB\000\u30E1"+
+        "\u30AB\u3099\000\u30E1\u30AB\u3099\u30C8\u30F3\000\u30E4\u30FC\u30C8\u3099"+
+        "\000\u30E4\u30FC\u30EB\000\u30E6\u30A2\u30F3\000\u30EA\u30C3\u30C8\u30EB"+
+        "\000\u30EA\u30E9\000\u30EB\u30D2\u309A\u30FC\000\u30EB\u30FC\u30D5\u3099"+
+        "\u30EB\000\u30EC\u30E0\000\u30EC\u30F3\u30C8\u30B1\u3099\u30F3\0000\u70B9"+
+        "\0001\u70B9\0002\u70B9\0003\u70B9\0004\u70B9\0005\u70B9\0006\u70B9\000"+
+        "7\u70B9\0008\u70B9\0009\u70B9\00010\u70B9\00011\u70B9\00012\u70B9\000"+
+        "13\u70B9\00014\u70B9\00015\u70B9\00016\u70B9\00017\u70B9\00018\u70B9\000"+
+        "19\u70B9\00020\u70B9\00021\u70B9\00022\u70B9\00023\u70B9\00024\u70B9\000"+
+        "hPa\000da\000AU\000bar\000oV\000pc\000\u5E73\u6210\000\u662D\u548C\000"+
+        "\u5927\u6B63\000\u660E\u6CBB\000\u682A\u5F0F\u4F1A\u793E\000pA\000nA\000"+
+        "\u03BCA\000mA\000kA\000KB\000MB\000GB\000cal\000kcal\000pF\000nF\000\u03BC"+
+        "F\000\u03BCg\000mg\000kg\000Hz\000kHz\000MHz\000GHz\000THz\000\u03BCl"+
+        "\000ml\000dl\000kl\000fm\000nm\000\u03BCm\000mm\000cm\000km\000mm2\000"+
+        "cm2\000km2\000mm3\000cm3\000km3\000m\u2215s\000m\u2215s2\000kPa\000MP"+
+        "a\000GPa\000rad\000rad\u2215s\000rad\u2215s2\000ps\000ns\000\u03BCs\000"+
+        "ms\000pV\000nV\000\u03BCV\000mV\000kV\000MV\000pW\000nW\000\u03BCW\000"+
+        "mW\000kW\000MW\000k\u03A9\000M\u03A9\000a.m.\000Bq\000cc\000cd\000C\u2215"+
+        "kg\000Co.\000dB\000Gy\000ha\000HP\000in\000KK\000KM\000kt\000lm\000ln"+
+        "\000log\000lx\000mb\000mil\000mol\000PH\000p.m.\000PPM\000PR\000sr\000"+
+        "Sv\000Wb\0001\u65E5\0002\u65E5\0003\u65E5\0004\u65E5\0005\u65E5\0006\u65E5"+
+        "\0007\u65E5\0008\u65E5\0009\u65E5\00010\u65E5\00011\u65E5\00012\u65E5"+
+        "\00013\u65E5\00014\u65E5\00015\u65E5\00016\u65E5\00017\u65E5\00018\u65E5"+
+        "\00019\u65E5\00020\u65E5\00021\u65E5\00022\u65E5\00023\u65E5\00024\u65E5"+
+        "\00025\u65E5\00026\u65E5\00027\u65E5\00028\u65E5\00029\u65E5\00030\u65E5"+
+        "\00031\u65E5\000ff\000fi\000fl\000ffi\000ffl\000st\000\u0574\u0576\000"+
+        "\u0574\u0565\000\u0574\u056B\000\u057E\u0576\000\u0574\u056D\000\u05E2"+
+        "\000\u05D4\000\u05DB\000\u05DC\000\u05DD\000\u05E8\000\u05EA\000\u05D0"+
+        "\u05DC\000\u0671\000\u067B\000\u067E\000\u0680\000\u067A\000\u067F\000"+
+        "\u0679\000\u06A4\000\u06A6\000\u0684\000\u0683\000\u0686\000\u0687\000"+
+        "\u068D\000\u068C\000\u068E\000\u0688\000\u0698\000\u0691\000\u06A9\000"+
+        "\u06AF\000\u06B3\000\u06B1\000\u06BA\000\u06BB\000\u06D5\u0654\000\u06C1"+
+        "\000\u06BE\000\u06D2\000\u06D2\u0654\000\u06AD\000\u06C7\000\u06C6\000"+
+        "\u06C8\000\u06CB\000\u06C5\000\u06C9\000\u06D0\000\u0649\000\u064A\u0654"+
+        "\u0627\000\u064A\u0654\u06D5\000\u064A\u0654\u0648\000\u064A\u0654\u06C7"+
+        "\000\u064A\u0654\u06C6\000\u064A\u0654\u06C8\000\u064A\u0654\u06D0\000"+
+        "\u064A\u0654\u0649\000\u06CC\000\u064A\u0654\u062C\000\u064A\u0654\u062D"+
+        "\000\u064A\u0654\u0645\000\u064A\u0654\u064A\000\u0628\u062C\000\u0628"+
+        "\u062D\000\u0628\u062E\000\u0628\u0645\000\u0628\u0649\000\u0628\u064A"+
+        "\000\u062A\u062C\000\u062A\u062D\000\u062A\u062E\000\u062A\u0645\000\u062A"+
+        "\u0649\000\u062A\u064A\000\u062B\u062C\000\u062B\u0645\000\u062B\u0649"+
+        "\000\u062B\u064A\000\u062C\u062D\000\u062C\u0645\000\u062D\u062C\000\u062D"+
+        "\u0645\000\u062E\u062C\000\u062E\u062D\000\u062E\u0645\000\u0633\u062C"+
+        "\000\u0633\u062D\000\u0633\u062E\000\u0633\u0645\000\u0635\u062D\000\u0635"+
+        "\u0645\000\u0636\u062C\000\u0636\u062D\000\u0636\u062E\000\u0636\u0645"+
+        "\000\u0637\u062D\000\u0637\u0645\000\u0638\u0645\000\u0639\u062C\000\u0639"+
+        "\u0645\000\u063A\u062C\000\u063A\u0645\000\u0641\u062C\000\u0641\u062D"+
+        "\000\u0641\u062E\000\u0641\u0645\000\u0641\u0649\000\u0641\u064A\000\u0642"+
+        "\u062D\000\u0642\u0645\000\u0642\u0649\000\u0642\u064A\000\u0643\u0627"+
+        "\000\u0643\u062C\000\u0643\u062D\000\u0643\u062E\000\u0643\u0644\000\u0643"+
+        "\u0645\000\u0643\u0649\000\u0643\u064A\000\u0644\u062C\000\u0644\u062D"+
+        "\000\u0644\u062E\000\u0644\u0645\000\u0644\u0649\000\u0644\u064A\000\u0645"+
+        "\u062C\000\u0645\u062D\000\u0645\u062E\000\u0645\u0645\000\u0645\u0649"+
+        "\000\u0645\u064A\000\u0646\u062C\000\u0646\u062D\000\u0646\u062E\000\u0646"+
+        "\u0645\000\u0646\u0649\000\u0646\u064A\000\u0647\u062C\000\u0647\u0645"+
+        "\000\u0647\u0649\000\u0647\u064A\000\u064A\u062C\000\u064A\u062D\000\u064A"+
+        "\u062E\000\u064A\u0645\000\u064A\u0649\000\u064A\u064A\000\u0630\u0670"+
+        "\000\u0631\u0670\000\u0649\u0670\000 \u064C\u0651\000 \u064D\u0651\000"+
+        " \u064E\u0651\000 \u064F\u0651\000 \u0650\u0651\000 \u0651\u0670\000\u064A"+
+        "\u0654\u0631\000\u064A\u0654\u0632\000\u064A\u0654\u0646\000\u0628\u0631"+
+        "\000\u0628\u0632\000\u0628\u0646\000\u062A\u0631\000\u062A\u0632\000\u062A"+
+        "\u0646\000\u062B\u0631\000\u062B\u0632\000\u062B\u0646\000\u0645\u0627"+
+        "\000\u0646\u0631\000\u0646\u0632\000\u0646\u0646\000\u064A\u0631\000\u064A"+
+        "\u0632\000\u064A\u0646\000\u064A\u0654\u062E\000\u064A\u0654\u0647\000"+
+        "\u0628\u0647\000\u062A\u0647\000\u0635\u062E\000\u0644\u0647\000\u0646"+
+        "\u0647\000\u0647\u0670\000\u064A\u0647\000\u062B\u0647\000\u0633\u0647"+
+        "\000\u0634\u0645\000\u0634\u0647\000\u0640\u064E\u0651\000\u0640\u064F"+
+        "\u0651\000\u0640\u0650\u0651\000\u0637\u0649\000\u0637\u064A\000\u0639"+
+        "\u0649\000\u0639\u064A\000\u063A\u0649\000\u063A\u064A\000\u0633\u0649"+
+        "\000\u0633\u064A\000\u0634\u0649\000\u0634\u064A\000\u062D\u0649\000\u062D"+
+        "\u064A\000\u062C\u0649\000\u062C\u064A\000\u062E\u0649\000\u062E\u064A"+
+        "\000\u0635\u0649\000\u0635\u064A\000\u0636\u0649\000\u0636\u064A\000\u0634"+
+        "\u062C\000\u0634\u062D\000\u0634\u062E\000\u0634\u0631\000\u0633\u0631"+
+        "\000\u0635\u0631\000\u0636\u0631\000\u0627\u064B\000\u062A\u062C\u0645"+
+        "\000\u062A\u062D\u062C\000\u062A\u062D\u0645\000\u062A\u062E\u0645\000"+
+        "\u062A\u0645\u062C\000\u062A\u0645\u062D\000\u062A\u0645\u062E\000\u062C"+
+        "\u0645\u062D\000\u062D\u0645\u064A\000\u062D\u0645\u0649\000\u0633\u062D"+
+        "\u062C\000\u0633\u062C\u062D\000\u0633\u062C\u0649\000\u0633\u0645\u062D"+
+        "\000\u0633\u0645\u062C\000\u0633\u0645\u0645\000\u0635\u062D\u062D\000"+
+        "\u0635\u0645\u0645\000\u0634\u062D\u0645\000\u0634\u062C\u064A\000\u0634"+
+        "\u0645\u062E\000\u0634\u0645\u0645\000\u0636\u062D\u0649\000\u0636\u062E"+
+        "\u0645\000\u0637\u0645\u062D\000\u0637\u0645\u0645\000\u0637\u0645\u064A"+
+        "\000\u0639\u062C\u0645\000\u0639\u0645\u0645\000\u0639\u0645\u0649\000"+
+        "\u063A\u0645\u0645\000\u063A\u0645\u064A\000\u063A\u0645\u0649\000\u0641"+
+        "\u062E\u0645\000\u0642\u0645\u062D\000\u0642\u0645\u0645\000\u0644\u062D"+
+        "\u0645\000\u0644\u062D\u064A\000\u0644\u062D\u0649\000\u0644\u062C\u062C"+
+        "\000\u0644\u062E\u0645\000\u0644\u0645\u062D\000\u0645\u062D\u062C\000"+
+        "\u0645\u062D\u0645\000\u0645\u062D\u064A\000\u0645\u062C\u062D\000\u0645"+
+        "\u062C\u0645\000\u0645\u062E\u062C\000\u0645\u062E\u0645\000\u0645\u062C"+
+        "\u062E\000\u0647\u0645\u062C\000\u0647\u0645\u0645\000\u0646\u062D\u0645"+
+        "\000\u0646\u062D\u0649\000\u0646\u062C\u0645\000\u0646\u062C\u0649\000"+
+        "\u0646\u0645\u064A\000\u0646\u0645\u0649\000\u064A\u0645\u0645\000\u0628"+
+        "\u062E\u064A\000\u062A\u062C\u064A\000\u062A\u062C\u0649\000\u062A\u062E"+
+        "\u064A\000\u062A\u062E\u0649\000\u062A\u0645\u064A\000\u062A\u0645\u0649"+
+        "\000\u062C\u0645\u064A\000\u062C\u062D\u0649\000\u062C\u0645\u0649\000"+
+        "\u0633\u062E\u0649\000\u0635\u062D\u064A\000\u0634\u062D\u064A\000\u0636"+
+        "\u062D\u064A\000\u0644\u062C\u064A\000\u0644\u0645\u064A\000\u064A\u062D"+
+        "\u064A\000\u064A\u062C\u064A\000\u064A\u0645\u064A\000\u0645\u0645\u064A"+
+        "\000\u0642\u0645\u064A\000\u0646\u062D\u064A\000\u0639\u0645\u064A\000"+
+        "\u0643\u0645\u064A\000\u0646\u062C\u062D\000\u0645\u062E\u064A\000\u0644"+
+        "\u062C\u0645\000\u0643\u0645\u0645\000\u062C\u062D\u064A\000\u062D\u062C"+
+        "\u064A\000\u0645\u062C\u064A\000\u0641\u0645\u064A\000\u0628\u062D\u064A"+
+        "\000\u0633\u062E\u064A\000\u0646\u062C\u064A\000\u0635\u0644\u06D2\000"+
+        "\u0642\u0644\u06D2\000\u0627\u0644\u0644\u0647\000\u0627\u0643\u0628\u0631"+
+        "\000\u0645\u062D\u0645\u062F\000\u0635\u0644\u0639\u0645\000\u0631\u0633"+
+        "\u0648\u0644\000\u0639\u0644\u064A\u0647\000\u0648\u0633\u0644\u0645\000"+
+        "\u0635\u0644\u0649\000\u0635\u0644\u0649 \u0627\u0644\u0644\u0647 \u0639"+
+        "\u0644\u064A\u0647 \u0648\u0633\u0644\u0645\000\u062C\u0644 \u062C\u0644"+
+        "\u0627\u0644\u0647\000\u2014\000\u2013\000_\000{\000}\000\u3014\000\u3015"+
+        "\000\u3010\000\u3011\000\u300A\000\u300B\000\u3008\000\u3009\000\u300C"+
+        "\000\u300D\000\u300E\000\u300F\000,\000\u3001\000;\000:\000#\000&\000"+
+        "*\000-\000<\000>\000\134\000$\000%\000@\000 \u064B\000\u0640\u064B\000"+
+        " \u064C\000 \u064D\000 \u064E\000\u0640\u064E\000 \u064F\000\u0640\u064F"+
+        "\000 \u0650\000\u0640\u0650\000 \u0651\000\u0640\u0651\000 \u0652\000"+
+        "\u0640\u0652\000\u0621\000\u0627\u0653\000\u0627\u0654\000\u0648\u0654"+
+        "\000\u0627\u0655\000\u064A\u0654\000\u0628\000\u0629\000\u062A\000\u062B"+
+        "\000\u0630\000\u0633\000\u0634\000\u0635\000\u0636\000\u0637\000\u0638"+
+        "\000\u0639\000\u063A\000\u0641\000\u0642\000\u0643\000\u0644\u0627\u0653"+
+        "\000\u0644\u0627\u0654\000\u0644\u0627\u0655\000\u0644\u0627\000\042\000"+
+        "'\000/\000[\000]\000^\000`\000|\000~\000\u3002\000\u30FB\000\u30A3\000"+
+        "\u30A5\000\u30A7\000\u30A9\000\u30E3\000\u30E5\000\u30E7\000\u30C3\000"+
+        "\u00A2\000\u00A3\000\u00AC\000\u00A6\000\u00A5\000\u20A9\000\u2502\000"+
+        "\u2190\000\u2191\000\u2192\000\u2193\000\u25A0\000\u25CB\000\u0300\000"+
+        "\u0301\000\u0313\000\u0308\u0301\000\u02B9\000;\000\u00B7\000\u0915\u093C"+
+        "\000\u0916\u093C\000\u0917\u093C\000\u091C\u093C\000\u0921\u093C\000\u0922"+
+        "\u093C\000\u092B\u093C\000\u092F\u093C\000\u09A1\u09BC\000\u09A2\u09BC"+
+        "\000\u09AF\u09BC\000\u0A32\u0A3C\000\u0A38\u0A3C\000\u0A16\u0A3C\000\u0A17"+
+        "\u0A3C\000\u0A1C\u0A3C\000\u0A2B\u0A3C\000\u0B21\u0B3C\000\u0B22\u0B3C"+
+        "\000\u0F42\u0FB7\000\u0F4C\u0FB7\000\u0F51\u0FB7\000\u0F56\u0FB7\000\u0F5B"+
+        "\u0FB7\000\u0F40\u0FB5\000\u0F71\u0F72\000\u0F71\u0F74\000\u0FB2\u0F80"+
+        "\000\u0FB3\u0F80\000\u0F71\u0F80\000\u0F92\u0FB7\000\u0F9C\u0FB7\000\u0FA1"+
+        "\u0FB7\000\u0FA6\u0FB7\000\u0FAB\u0FB7\000\u0F90\u0FB5\000\u03B1\u0301"+
+        "\000\u03B5\u0301\000\u03B7\u0301\000\u03B9\u0301\000\u03BF\u0301\000\u03C5"+
+        "\u0301\000\u03C9\u0301\000\u0391\u0301\000\u03B9\000\u0395\u0301\000\u0397"+
+        "\u0301\000\u03B9\u0308\u0301\000\u0399\u0301\000\u03C5\u0308\u0301\000"+
+        "\u03A5\u0301\000`\000\u039F\u0301\000\u03A9\u0301\000\u03A9\000K\000A"+
+        "\u030A\000\u3008\000\u3009\000\u8C48\000\u66F4\000\u8ECA\000\u8CC8\000"+
+        "\u6ED1\000\u4E32\000\u53E5\000\u9F9C\000\u9F9C\000\u5951\000\u91D1\000"+
+        "\u5587\000\u5948\000\u61F6\000\u7669\000\u7F85\000\u863F\000\u87BA\000"+
+        "\u88F8\000\u908F\000\u6A02\000\u6D1B\000\u70D9\000\u73DE\000\u843D\000"+
+        "\u916A\000\u99F1\000\u4E82\000\u5375\000\u6B04\000\u721B\000\u862D\000"+
+        "\u9E1E\000\u5D50\000\u6FEB\000\u85CD\000\u8964\000\u62C9\000\u81D8\000"+
+        "\u881F\000\u5ECA\000\u6717\000\u6D6A\000\u72FC\000\u90CE\000\u4F86\000"+
+        "\u51B7\000\u52DE\000\u64C4\000\u6AD3\000\u7210\000\u76E7\000\u8001\000"+
+        "\u8606\000\u865C\000\u8DEF\000\u9732\000\u9B6F\000\u9DFA\000\u788C\000"+
+        "\u797F\000\u7DA0\000\u83C9\000\u9304\000\u9E7F\000\u8AD6\000\u58DF\000"+
+        "\u5F04\000\u7C60\000\u807E\000\u7262\000\u78CA\000\u8CC2\000\u96F7\000"+
+        "\u58D8\000\u5C62\000\u6A13\000\u6DDA\000\u6F0F\000\u7D2F\000\u7E37\000"+
+        "\u96FB\000\u52D2\000\u808B\000\u51DC\000\u51CC\000\u7A1C\000\u7DBE\000"+
+        "\u83F1\000\u9675\000\u8B80\000\u62CF\000\u8AFE\000\u4E39\000\u5BE7\000"+
+        "\u6012\000\u7387\000\u7570\000\u5317\000\u78FB\000\u4FBF\000\u5FA9\000"+
+        "\u4E0D\000\u6CCC\000\u6578\000\u7D22\000\u53C3\000\u585E\000\u7701\000"+
+        "\u8449\000\u8AAA\000\u6BBA\000\u8FB0\000\u6C88\000\u62FE\000\u82E5\000"+
+        "\u63A0\000\u7565\000\u4EAE\000\u5169\000\u51C9\000\u6881\000\u7CE7\000"+
+        "\u826F\000\u8AD2\000\u91CF\000\u52F5\000\u5442\000\u5973\000\u5EEC\000"+
+        "\u65C5\000\u6FFE\000\u792A\000\u95AD\000\u9A6A\000\u9E97\000\u9ECE\000"+
+        "\u529B\000\u66C6\000\u6B77\000\u8F62\000\u5E74\000\u6190\000\u6200\000"+
+        "\u649A\000\u6F23\000\u7149\000\u7489\000\u79CA\000\u7DF4\000\u806F\000"+
+        "\u8F26\000\u84EE\000\u9023\000\u934A\000\u5217\000\u52A3\000\u54BD\000"+
+        "\u70C8\000\u88C2\000\u5EC9\000\u5FF5\000\u637B\000\u6BAE\000\u7C3E\000"+
+        "\u7375\000\u4EE4\000\u56F9\000\u5DBA\000\u601C\000\u73B2\000\u7469\000"+
+        "\u7F9A\000\u8046\000\u9234\000\u96F6\000\u9748\000\u9818\000\u4F8B\000"+
+        "\u79AE\000\u91B4\000\u96B8\000\u60E1\000\u4E86\000\u50DA\000\u5BEE\000"+
+        "\u5C3F\000\u6599\000\u71CE\000\u7642\000\u84FC\000\u907C\000\u9F8D\000"+
+        "\u6688\000\u962E\000\u5289\000\u677B\000\u67F3\000\u6D41\000\u6E9C\000"+
+        "\u7409\000\u7559\000\u786B\000\u7D10\000\u985E\000\u516D\000\u622E\000"+
+        "\u9678\000\u502B\000\u5D19\000\u6DEA\000\u8F2A\000\u5F8B\000\u6144\000"+
+        "\u6817\000\u9686\000\u5229\000\u540F\000\u5C65\000\u6613\000\u674E\000"+
+        "\u68A8\000\u6CE5\000\u7406\000\u75E2\000\u7F79\000\u88CF\000\u88E1\000"+
+        "\u91CC\000\u96E2\000\u533F\000\u6EBA\000\u541D\000\u71D0\000\u7498\000"+
+        "\u85FA\000\u96A3\000\u9C57\000\u9E9F\000\u6797\000\u6DCB\000\u81E8\000"+
+        "\u7ACB\000\u7B20\000\u7C92\000\u72C0\000\u7099\000\u8B58\000\u4EC0\000"+
+        "\u8336\000\u523A\000\u5207\000\u5EA6\000\u62D3\000\u7CD6\000\u5B85\000"+
+        "\u6D1E\000\u66B4\000\u8F3B\000\u884C\000\u964D\000\u898B\000\u5ED3\000"+
+        "\u5140\000\u55C0\000\u585A\000\u6674\000\u51DE\000\u732A\000\u76CA\000"+
+        "\u793C\000\u795E\000\u7965\000\u798F\000\u9756\000\u7CBE\000\u7FBD\000"+
+        "\u8612\000\u8AF8\000\u9038\000\u90FD\000\u98EF\000\u98FC\000\u9928\000"+
+        "\u9DB4\000\u05F2\u05B7\000\u05E9\u05C1\000\u05E9\u05C2\000\u05E9\u05BC"+
+        "\u05C1\000\u05E9\u05BC\u05C2\000\u05D0\u05B7\000\u05D0\u05B8\000\u05D0"+
+        "\u05BC\000\u05D1\u05BC\000\u05D2\u05BC\000\u05D3\u05BC\000\u05D4\u05BC"+
+        "\000\u05D5\u05BC\000\u05D6\u05BC\000\u05D8\u05BC\000\u05D9\u05BC\000\u05DA"+
+        "\u05BC\000\u05DB\u05BC\000\u05DC\u05BC\000\u05DE\u05BC\000\u05E0\u05BC"+
+        "\000\u05E1\u05BC\000\u05E3\u05BC\000\u05E4\u05BC\000\u05E6\u05BC\000\u05E7"+
+        "\u05BC\000\u05E8\u05BC\000\u05E9\u05BC\000\u05EA\u05BC\000\u05D5\u05B9"+
+        "\000\u05D1\u05BF\000\u05DB\u05BF\000\u05E4\u05BF\000\u0385\000\u00B4\000"+
+        "\u2002\000\u2003\000\u0172\u0303\u0301\000\u1E76\u0308\u0304\000\u01EB"+
+        "\u031B\u0301\000\u1EB9\u0304\u0300\000\u1E72\u0303\u0301\000\u1E11\u030C"+
+        "\000\u1EE4\u0303\u0301\000\u1EE3\u0301\000\u0172\u0308\u0304\000\u1E0D"+
+        "\u030C\000\u1E72\u0308\u0304\000\u1EE4\u0308\u0304\000\u1EEE\u0301\000"+
+        "\u01AF\u0308\u0304\000\u1E1A\u0304\u0300\000\u1E18\u0304\u0300\000\u1E0E"+
+        "\u030C\000\u1E75\u030B\000\u0118\u0304\u0300\000\u1E12\u030C\000\u0228"+
+        "\u0304\u0300\000\u1E75\u030C\000\u0173\u032D\000\u1E77\u030B\000\u01EA"+
+        "\u031B\u0301\000\u1E77\u030C\000\u1EB8\u0304\u0300\000\u1E10\u030C\000"+
+        "\u0173\u030B\000\u1EE2\u0301\000\u0173\u030C\000\u1E0C\u030C\000\u1E73"+
+        "\u030B\000\u1EE5\u030B\000\u1E73\u030C\000\u1EE5\u030C\000\u01B0\u032D"+
+        "\000\u01B0\u030B\000\u01B0\u030C\000\u1E74\u030B\000\u1E11\u032D\000\u1E74"+
+        "\u030C\000\u0172\u032D\000\u1E76\u030B\000\u01EB\u0323\u0302\000\u1E76"+
+        "\u030C\000\u00E7\u030C\000\u0172\u030B\000\u0172\u030C\000\u1E72\u030B"+
+        "\000\u1EE4\u030B\000\u1E72\u030C\000\u1EE4\u030C\000\u01AF\u032D\000\u1EE3"+
+        "\u0302\000\u01AF\u030B\000\u01AF\u030C\000\u1E75\u030A\000\u1E10\u032D"+
+        "\000\u1E77\u030A\000\u0173\u0330\000\u01EA\u0323\u0302\000\u00C7\u030C"+
+        "\000\u0173\u030A\000\u01EB\u030C\000\u1E73\u030A\000\u1EE5\u030A\000\u1ECD"+
+        "\u030C\000\u01B0\u0330\000\u1EE2\u0302\000\u01B0\u030A\000\u01A1\u030C"+
+        "\000\u1E74\u030A\000\u1E76\u030A\000\u0172\u0330\000\u01EB\u0302\u0303"+
+        "\000\u00E7\u0307\000\u0172\u030A\000\u01EA\u030C\000\u1ED9\u0303\000\u1E72"+
+        "\u030A\000\u1EE4\u030A\000\u1ECC\u030C\000\u01AF\u0330\000\u01A1\u0302"+
+        "\u0303\000\u01AF\u030A\000\u01A0\u030C\000\u0DDE\u0DCA\000\u1E75\u0306"+
+        "\000\u1E2D\u030C\000\u1E77\u0306\000\u0173\u0324\000\u01EA\u0302\u0303"+
+        "\000\u00C7\u0307\000\u0173\u0306\000\u012F\u030C\000\u1ED8\u0303\000\u1E73"+
+        "\u0306\000\u1EE5\u0306\000\u1ECB\u030C\000\u01B0\u0324\000\u1EF5\u0304"+
+        "\000\u01A0\u0302\u0303\000\u01B0\u0306\000\u1E74\u0306\000\u1E2C\u030C"+
+        "\000\u1E11\u0331\000\u1E76\u0306\000\u0172\u0324\000\u01EB\u0302\u0309"+
+        "\000\u00E7\u0302\000\u0172\u0306\000\u012E\u030C\000\u1ED9\u0309\000\u1E72"+
+        "\u0306\000\u1EE4\u0306\000\u1ECA\u030C\000\u01AF\u0324\000\u1EF4\u0304"+
+        "\000\u01A1\u0302\u0309\000\u01AF\u0306\000\u1E75\u0304\000\u1E10\u0331"+
+        "\000\u1E77\u0304\000\u0163\u032D\000\u01EA\u0302\u0309\000\u00C7\u0302"+
+        "\000\u0173\u0304\000\u0105\u030C\000\u1ED8\u0309\000\u1E73\u0304\000\u01EB"+
+        "\u0307\u0304\000\u1EE5\u0304\000\u1E01\u030C\000\u1EA1\u030C\000\u1ECD"+
+        "\u0307\u0304\000\u01A0\u0302\u0309\000\u01B0\u0304\000\u01A1\u0307\u0304"+
+        "\000\u1E74\u0304\000\u1E11\u0323\000\u1E76\u0304\000\u0162\u032D\000\u01EB"+
+        "\u0302\u0300\000\u0172\u0304\000\u0104\u030C\000\u1ED9\u0300\000\u1E72"+
+        "\u0304\000\u01EA\u0307\u0304\000\u1EE4\u0304\000\u1E00\u030C\000\u1EA0"+
+        "\u030C\000\u1ECC\u0307\u0304\000\u01A1\u0302\u0300\000\u01AF\u0304\000"+
+        "\u01A0\u0307\u0304\000\u1E75\u0303\000\u1E10\u0323\000\u1E77\u0303\000"+
+        "\u0163\u0331\000\u01EA\u0302\u0300\000\u0173\u0303\000\u1ED8\u0300\000"+
+        "\u1E73\u0303\000\u01EB\u0307\000\u1EE5\u0303\000\u1ECD\u0307\000\u01A0"+
+        "\u0302\u0300\000\u038F\u0345\000\u1FFA\u0345\000\u1E0F\u0307\000\u01A1"+
+        "\u0307\000\u1E13\u0307\000\u1E74\u0303\000\u1E11\u0307\000\u1E76\u0303"+
+        "\000\u0162\u0331\000\u01EB\u0302\u0301\000\u1E0D\u0307\000\u0172\u0303"+
+        "\000\u1ED9\u0301\000\u1E72\u0303\000\u01EA\u0307\000\u1EE4\u0303\000\u1ECC"+
+        "\u0307\000\u01A1\u0302\u0301\000\u1E0E\u0307\000\u01A0\u0307\000\u1E12"+
+        "\u0307\000\u1E10\u0307\000\u0163\u0323\000\u01EA\u0302\u0301\000\u1E0C"+
+        "\u0307\000\u1ED8\u0301\000\u01EB\u0303\u0304\000\u1ECD\u0303\u0304\000"+
+        "\u01A0\u0302\u0301\000\u1EE1\u0304\000\u0162\u0323\000\u01EB\u0309\000"+
+        "\u0105\u0306\000\u1E01\u0306\000\u1ECD\u0309\000\u01EA\u0303\u0304\000"+
+        "\u1ECC\u0303\u0304\000\u1E6F\u0307\000\u1EE0\u0304\000\u1E71\u0307\000"+
+        "\u1E6F\u030C\000\u1E71\u030C\000\u0163\u0307\000\u021B\u0307\000\u01EA"+
+        "\u0309\000\u0104\u0306\000\u1E6D\u0307\000\u1E00\u0306\000\u0163\u030C"+
+        "\000\u021B\u030C\000\u1ECC\u0309\000\u01EB\u0308\u0304\000\u1E6D\u030C"+
+        "\000\u1ECD\u0308\u0304\000\u1E6E\u0307\000\u01A1\u0308\u0304\000\u1E70"+
+        "\u0307\000\u1E6E\u030C\000\u1E70\u030C\000\u0162\u0307\000\u021A\u0307"+
+        "\000\u01EB\u0323\000\u0105\u0304\000\u1E6C\u0307\000\u1E01\u0304\000\u0162"+
+        "\u030C\000\u021A\u030C\000\u1EA1\u0304\000\u01EA\u0308\u0304\000\u1E6C"+
+        "\u030C\000\u1ECC\u0308\u0304\000\u01A0\u0308\u0304\000\u015F\u0323\u0307"+
+        "\000\u01EA\u0323\000\u0104\u0304\000\u1E00\u0304\000\u1EA0\u0304\000\u015E"+
+        "\u0323\u0307\000\u012F\u0323\000\u1EF5\u0308\000\u015F\u030C\u0307\000"+
+        "\u0219\u030C\u0307\000\u012E\u0323\000\u1E63\u030C\u0307\000\u015F\u030C"+
+        "\000\u0219\u030C\000\u0105\u0307\000\u1E63\u030C\000\u1E01\u0307\000\u1EA1"+
+        "\u0307\000\u1E07\u0307\000\u1E2D\u0309\000\u015E\u030C\u0307\000\u0218"+
+        "\u030C\u0307\000\u012F\u0309\000\u1E05\u0307\000\u1E62\u030C\u0307\000"+
+        "\u015E\u030C\000\u0218\u030C\000\u1ECB\u0309\000\u1EF5\u0301\000\u0104"+
+        "\u0307\000\u1E62\u030C\000\u1E00\u0307\000\u1EA0\u0307\000\u1E06\u0307"+
+        "\000\u1E2C\u0309\000\u1E75\u0308\000\u1E77\u0308\000\u015F\u0301\u0307"+
+        "\000\u0219\u0301\u0307\000\u012E\u0309\000\u0173\u0308\000\u1E04\u0307"+
+        "\000\u1E63\u0301\u0307\000\u1E73\u0308\000\u1ECA\u0309\000\u1EE5\u0308"+
+        "\000\u01B0\u0308\000\u1E75\u0302\000\u1E77\u0302\000\u0105\u0325\000\u015E"+
+        "\u0301\u0307\000\u0218\u0301\u0307\000\u0119\u0323\u0302\000\u0173\u0302"+
+        "\000\u0229\u0323\u0302\000\u1E62\u0301\u0307\000\u1E73\u0302\000\u1EE5"+
+        "\u0302\000\u01B0\u0302\000\u1E75\u0301\000\u1E77\u0301\000\u0104\u0325"+
+        "\000\u015F\u0323\000\u0118\u0323\u0302\000\u0173\u0301\000\u0228\u0323"+
+        "\u0302\000\u015F\u0302\000\u1E73\u0301\000\u0219\u0302\000\u1EE5\u0301"+
+        "\000\u1E63\u0302\000\u1E1B\u0302\u0303\000\u1E75\u0300\000\u1E19\u0302"+
+        "\u0303\000\u1E77\u0300\000\u015E\u0323\000\u0119\u0302\u0303\000\u0173"+
+        "\u0300\000\u0229\u0302\u0303\000\u015E\u0302\000\u1E73\u0300\000\u0218"+
+        "\u0302\000\u1EC7\u0303\000\u1EE5\u0300\000\u1E62\u0302\000\u1E1A\u0302"+
+        "\u0303\000\u1E18\u0302\u0303\000\u015F\u0307\000\u0219\u0307\000\u0118"+
+        "\u0302\u0303\000\u0228\u0302\u0303\000\u015F\u0301\000\u0219\u0301\000"+
+        "\u1EC6\u0303\000\u1E63\u0301\000\u1E1B\u0302\u0309\000\u1E19\u0302\u0309"+
+        "\000\u015E\u0307\000\u0218\u0307\000\u0119\u0302\u0309\000\u0229\u0302"+
+        "\u0309\000\u015E\u0301\000\u0218\u0301\000\u1EC7\u0309\000\u1E62\u0301"+
+        "\000\u1E1A\u0302\u0309\000\u1E5F\u030C\000\u1E18\u0302\u0309\000\u1E96"+
+        "\u030C\000\u0157\u0331\000\u0118\u0302\u0309\000\u01EB\u0308\000\u1E2B"+
+        "\u030C\000\u0228\u0302\u0309\000\u0157\u030C\000\u1EC6\u0309\000\u1ECD"+
+        "\u0308\000\u1E5B\u030C\000\u1E29\u030C\000\u1E25\u030C\000\u01A1\u0308"+
+        "\000\u1E1B\u0302\u0300\000\u1E5E\u030C\000\u1E19\u0302\u0300\000\u0156"+
+        "\u0331\000\u0119\u0302\u0300\000\u01EB\u0303\000\u1E2A\u030C\000\u0229"+
+        "\u0302\u0300\000\u0156\u030C\000\u1EC7\u0300\000\u1ECD\u0303\000\u1E5A"+
+        "\u030C\000\u1E28\u030C\000\u1E24\u030C\000\u1E1A\u0302\u0300\000\u1E18"+
+        "\u0302\u0300\000\u0157\u0323\u0304\000\u0118\u0302\u0300\000\u01EB\u0302"+
+        "\000\u0228\u0302\u0300\000\u1EC6\u0300\000\u01A1\u0302\000\u1E1B\u0302"+
+        "\u0301\000\u1E19\u0302\u0301\000\u0156\u0323\u0304\000\u0119\u0302\u0301"+
+        "\000\u01EB\u0301\000\u0229\u0302\u0301\000\u1EC7\u0301\000\u1ECD\u0301"+
+        "\000\u1E1A\u0302\u0301\000\u1E5F\u0301\000\u1E18\u0302\u0301\000\u0157"+
+        "\u0323\000\u0118\u0302\u0301\000\u01EB\u0300\000\u0228\u0302\u0301\000"+
+        "\u0157\u0301\000\u1EC6\u0301\000\u1ECD\u0300\000\u1E5B\u0301\000\u0163"+
+        "\u0326\000\u1E49\u0303\000\u1E1B\u0303\000\u1E5E\u0301\000\u1E19\u0303"+
+        "\000\u1E4B\u0303\000\u0156\u0323\000\u0119\u0303\000\u0229\u0303\000\u0146"+
+        "\u0303\000\u0156\u0301\000\u1EB9\u0303\000\u1E47\u0303\000\u1E5A\u0301"+
+        "\000\u0162\u0326\000\u1E5F\u0307\000\u1E1A\u0303\000\u1E18\u0303\000\u0157"+
+        "\u0307\000\u0118\u0303\000\u0228\u0303\000\u1E5B\u0307\000\u1EB8\u0303"+
+        "\000\u015F\u0326\000\u1E5E\u0307\000\u1E1B\u0309\000\u1E2D\u0308\000\u1E19"+
+        "\u0309\000\u0156\u0307\000\u0119\u0309\000\u012F\u0308\000\u0229\u0309"+
+        "\000\u1E5A\u0307\000\u1EB9\u0309\000\u1ECB\u0308\000\u015E\u0326\000\u1E1A"+
+        "\u0309\000\u1E2D\u0302\000\u1E18\u0309\000\u1E75\u0311\000\u0118\u0309"+
+        "\000\u012F\u0302\000\u0228\u0309\000\u1E77\u0311\000\u01EB\u030B\000\u1EB8"+
+        "\u0309\000\u1ECB\u0302\000\u0173\u0311\000\u1ECD\u030B\000\u1E73\u0311"+
+        "\000\u1EE5\u0311\000\u01A1\u030B\000\u01B0\u0311\000\u1E2D\u0301\000\u1E74"+
+        "\u0311\000\u0119\u0323\000\u012F\u0301\000\u0229\u0323\000\u1E76\u0311"+
+        "\000\u01EA\u030B\000\u1ECB\u0301\000\u0172\u0311\000\u1ECC\u030B\000\u1E72"+
+        "\u0311\000\u1EE4\u0311\000\u01A0\u030B\000\u01AF\u0311\000\u1E2D\u0300"+
+        "\000\u1E75\u030F\000\u0118\u0323\000\u012F\u0300\000\u0228\u0323\000\u1E77"+
+        "\u030F\000\u01EB\u0306\000\u1ECB\u0300\000\u0173\u030F\000\u1ECD\u0306"+
+        "\000\u1E73\u030F\000\u1EE5\u030F\000\u01A1\u0306\000\u01B0\u030F\000\u1E1B"+
+        "\u0308\000\u1E19\u0308\000\u1E74\u030F\000\u0105\u0323\u0306\000\u0119"+
+        "\u0308\000\u0229\u0308\000\u1E76\u030F\000\u01EA\u0306\000\u1EB9\u0308"+
+        "\000\u0172\u030F\000\u1ECC\u0306\000\u1E72\u030F\000\u1EE4\u030F\000\u01A0"+
+        "\u0306\000\u01AF\u030F\000\u1E1B\u0302\000\u1E19\u0302\000\u1E5F\u0311"+
+        "\000\u01ED\u0301\000\u0104\u0323\u0306\000\u0119\u0302\000\u0229\u0302"+
+        "\000\u1ECD\u0304\u0301\000\u0173\u031B\000\u1ECD\u0304\000\u0157\u0311"+
+        "\000\u01A1\u0304\u0301\000\u1E5B\u0311\000\u01A1\u0304\000\u1E1B\u0301"+
+        "\000\u1E19\u0301\000\u1E5E\u0311\000\u01EC\u0301\000\u0105\u0306\u0303"+
+        "\000\u0119\u0301\000\u0229\u0301\000\u1ECC\u0304\u0301\000\u1E01\u0306"+
+        "\u0303\000\u0172\u031B\000\u1EB7\u0303\000\u1EB9\u0301\000\u1ECC\u0304"+
+        "\000\u0156\u0311\000\u01A0\u0304\u0301\000\u1E5A\u0311\000\u01A0\u0304"+
+        "\000\u1E1B\u0300\000\u1E19\u0300\000\u1E5F\u030F\000\u01ED\u0300\000\u0104"+
+        "\u0306\u0303\000\u0119\u0300\000\u0229\u0300\000\u1ECD\u0304\u0300\000"+
+        "\u1E00\u0306\u0303\000\u1EB6\u0303\000\u1EB9\u0300\000\u0157\u030F\000"+
+        "\u01A1\u0304\u0300\000\u1E5B\u030F\000\u1E5E\u030F\000\u01EC\u0300\000"+
+        "\u0105\u0306\u0309\000\u1ECC\u0304\u0300\000\u1E01\u0306\u0309\000\u1EB7"+
+        "\u0309\000\u0156\u030F\000\u01A0\u0304\u0300\000\u1E5A\u030F\000\u01EB"+
+        "\u0303\u0308\000\u0104\u0306\u0309\000\u1ECD\u0303\u0308\000\u1E00\u0306"+
+        "\u0309\000\u1EB6\u0309\000\u01EB\u0311\000\u1EE1\u0308\000\u1ECD\u0311"+
+        "\000\u01A1\u0311\000\u1E49\u030C\000\u1E4B\u030C\000\u01EA\u0303\u0308"+
+        "\000\u0105\u0306\u0300\000\u0105\u030A\000\u1ECC\u0303\u0308\000\u1E01"+
+        "\u0306\u0300\000\u1E01\u030A\000\u0146\u030C\000\u1EB7\u0300\000\u1EA1"+
+        "\u030A\000\u01EA\u0311\000\u1E47\u030C\000\u1EE0\u0308\000\u1ECC\u0311"+
+        "\000\u01A0\u0311\000\u1E48\u030C\000\u1E4A\u030C\000\u01EB\u0303\u0301"+
+        "\000\u0104\u0306\u0300\000\u0105\u0308\000\u1ECD\u0303\u0301\000\u1E00"+
+        "\u0306\u0300\000\u1E01\u0308\000\u0145\u030C\000\u1EB6\u0300\000\u1EA1"+
+        "\u0308\000\u01EB\u030F\000\u1E46\u030C\000\u1EE1\u0301\000\u1ECD\u030F"+
+        "\000\u01A1\u030F\000\u01EA\u0303\u0301\000\u0105\u0306\u0301\000\u0105"+
+        "\u0303\000\u1ECC\u0303\u0301\000\u1E01\u0306\u0301\000\u1E01\u0303\000"+
+        "\u1EB7\u0301\000\u1EA1\u0303\000\u01EA\u030F\000\u1EE0\u0301\000\u1ECC"+
+        "\u030F\000\u01A0\u030F\000\u1E2D\u0311\000\u0146\u032D\000\u0104\u0306"+
+        "\u0301\000\u0105\u0302\000\u1E00\u0306\u0301\000\u1E01\u0302\000\u1EB6"+
+        "\u0301\000\u012F\u0311\000\u1ECB\u0311\000\u1E49\u0301\000\u1E4B\u0301"+
+        "\000\u1E2C\u0311\000\u0145\u032D\000\u0105\u0323\u0302\000\u0105\u0301"+
+        "\000\u1E01\u0301\000\u0146\u0301\000\u1EA1\u0301\000\u012E\u0311\000\u1E47"+
+        "\u0301\000\u1ECA\u0311\000\u1E48\u0301\000\u1E4A\u0301\000\u1E2D\u030F"+
+        "\000\u0146\u0331\000\u0104\u0323\u0302\000\u0105\u0300\000\u1E01\u0300"+
+        "\000\u0145\u0301\000\u1EA1\u0300\000\u012F\u030F\000\u1E46\u0301\000\u1ECB"+
+        "\u030F\000\u1E2C\u030F\000\u0145\u0331\000\u0105\u0302\u0303\000\u1E01"+
+        "\u0302\u0303\000\u1EAD\u0303\000\u012E\u030F\000\u1ECA\u030F\000\u1E1B"+
+        "\u0311\000\u0146\u0323\000\u0104\u0302\u0303\000\u1E19\u0311\000\u1E00"+
+        "\u0302\u0303\000\u1EAC\u0303\000\u0119\u0311\000\u0229\u0311\000\u1EB9"+
+        "\u0311\000\u0145\u0323\000\u1E1A\u0311\000\u0105\u0302\u0309\000\u1E18"+
+        "\u0311\000\u1E01\u0302\u0309\000\u1EAD\u0309\000\u1EF4\u0301\000\u0118"+
+        "\u0311\000\u0228\u0311\000\u1EB8\u0311\000\u1E49\u0307\000\u1E4B\u0307"+
+        "\000\u1E74\u0308\000\u1E76\u0308\000\u0146\u0307\000\u1E1B\u030F\000\u0104"+
+        "\u0302\u0309\000\u0172\u0308\000\u1E19\u030F\000\u1E47\u0307\000\u1E00"+
+        "\u0302\u0309\000\u1EAC\u0309\000\u1E72\u0308\000\u1EE4\u0308\000\u0119"+
+        "\u030F\000\u0229\u030F\000\u1EB9\u030F\000\u01AF\u0308\000\u1E48\u0307"+
+        "\000\u1E4A\u0307\000\u1E74\u0302\000\u1E3B\u030C\000\u1E76\u0302\000\u1E3D"+
+        "\u030C\000\u0145\u0307\000\u1E1A\u030F\000\u0105\u0302\u0300\000\u0172"+
+        "\u0302\000\u1E18\u030F\000\u1E46\u0307\000\u1E01\u0302\u0300\000\u013C"+
+        "\u030C\000\u1E72\u0302\000\u01EB\u031B\000\u1EAD\u0300\000\u1EE4\u0302"+
+        "\000\u0118\u030F\000\u1E37\u030C\000\u0228\u030F\000\u1EB8\u030F\000\u01AF"+
+        "\u0302\000\u1E74\u0301\000\u1E3A\u030C\000\u1E76\u0301\000\u1E3C\u030C"+
+        "\000\u0104\u0302\u0300\000\u0172\u0301\000\u1E00\u0302\u0300\000\u013B"+
+        "\u030C\000\u1E72\u0301\000\u01EA\u031B\000\u1EAC\u0300\000\u1EE4\u0301"+
+        "\000\u0105\u0311\000\u1E36\u030C\000\u1E01\u0311\000\u1EA1\u0311\000\u1E74"+
+        "\u0300\000\u1E76\u0300\000\u0105\u0302\u0301\000\u0172\u0300\000\u1E01"+
+        "\u0302\u0301\000\u1E72\u0300\000\u1EAD\u0301\000\u1EE4\u0300\000\u0104"+
+        "\u0311\000\u1E00\u0311\000\u1EA0\u0311\000\u0104\u0302\u0301\000\u1E43"+
+        "\u0307\000\u1E00\u0302\u0301\000\u1EAC\u0301\000\u0105\u030F\000\u1E01"+
+        "\u030F\000\u1EA1\u030F\000\u1E3B\u0301\000\u1E3D\u0301\000\u0105\u0309"+
+        "\000\u1E42\u0307\000\u1E01\u0309\000\u013C\u0301\000\u1EA1\u0309\000\u0104"+
+        "\u030F\000\u1E37\u0301\000\u1E00\u030F\000\u1EA0\u030F\000\u1E3A\u0301"+
+        "\000\u1E3C\u0301\000\u0104\u0309\000\u01EA\u0308\000\u1E43\u0301\000\u1E00"+
+        "\u0309\000\u013B\u0301\000\u1EA0\u0309\000\u1ECC\u0308\000\u1E36\u0301"+
+        "\000\u01A0\u0308\000\u0389\u0345\000\u1FCA\u0345\000\u0105\u0323\000\u01EA"+
+        "\u0303\000\u1E42\u0301\000\u1ECC\u0303\000\u013C\u032D\000\u0104\u0323"+
+        "\000\u01EA\u0302\000\u01A0\u0302\000\u013B\u032D\000\u01EA\u0301\000\u1ECC"+
+        "\u0301\000\u0625\u0654\000\u013C\u0331\000\u01EA\u0300\000\u1ECC\u0300"+
+        "\000\u0105\u030A\u0301\000\u1E01\u030A\u0301\000\u1EA1\u030A\u0301\000"+
+        "\u0625\u0653\000\u1E48\u0303\000\u1E4A\u0303\000\u013B\u0331\000\u0145"+
+        "\u0303\000\u1E46\u0303\000\u0104\u030A\u0301\000\u1E00\u030A\u0301\000"+
+        "\u1EA0\u030A\u0301\000\u1E49\u0300\000\u013C\u0323\u0304\000\u1E4B\u0300"+
+        "\000\u0146\u0300\000\u1E47\u0300\000\u1E2C\u0308\000\u1E48\u0300\000\u013B"+
+        "\u0323\u0304\000\u012E\u0308\000\u1E4A\u0300\000\u1ECA\u0308\000\u0145"+
+        "\u0300\000\u1E46\u0300\000\u1E2C\u0302\000\u013C\u0323\000\u012E\u0302"+
+        "\000\u1ECA\u0302\000\u1E2C\u0301\000\u1E2C\u0307\000\u013B\u0323\000\u012E"+
+        "\u0301\000\u012E\u0307\000\u1EF5\u030A\000\u1ECA\u0301\000\u1ECA\u0307"+
+        "\000\u1E2C\u0300\000\u0137\u0331\000\u012E\u0300\000\u1E89\u030A\000\u1ECA"+
+        "\u0300\000\u0123\u0301\000\u1E6F\u0308\000\u1E1A\u0308\000\u1E71\u0308"+
+        "\000\u1E18\u0308\000\u0136\u0331\000\u0118\u0308\000\u0163\u0308\000\u0228"+
+        "\u0308\000\u021B\u0308\000\u1E6D\u0308\000\u1EB8\u0308\000\u0122\u0301"+
+        "\000\u1E1A\u0302\000\u1E2D\u0306\000\u1E18\u0302\000\u0137\u0323\000\u0118"+
+        "\u0302\000\u1E29\u0331\000\u0228\u0302\000\u012F\u0306\000\u1EF5\u0303"+
+        "\000\u1ECB\u0306\000\u1E1A\u0301\000\u1E2C\u0306\000\u1E18\u0301\000\u0136"+
+        "\u0323\000\u0118\u0301\000\u0228\u0301\000\u012E\u0306\000\u1EB8\u0301"+
+        "\000\u1EF4\u0303\000\u1ECA\u0306\000\u1E35\u0301\000\u1E1A\u0300\000\u1E2D"+
+        "\u0304\000\u1E18\u0300\000\u0137\u0301\000\u0118\u0300\000\u0228\u0300"+
+        "\000\u012F\u0304\000\u1E33\u0301\000\u1EB8\u0300\000\u1EF5\u0309\000\u1ECB"+
+        "\u0304\000\u1E34\u0301\000\u1E2C\u0304\000\u0136\u0301\000\u012E\u0304"+
+        "\000\u1E32\u0301\000\u1EF4\u0309\000\u1ECA\u0304\000\u1E2D\u0308\u0301"+
+        "\000\u1E2D\u0303\000\u012F\u0308\u0301\000\u012F\u0303\000\u1ECB\u0308"+
+        "\u0301\000\u1ECB\u0303\000\u1FB8\u0345\000\u1FB9\u0345\000\u0386\u0345"+
+        "\000\u1FBA\u0345\000\u1E2C\u0308\u0301\000\u1E95\u0302\000\u1E2C\u0303"+
+        "\000\u012E\u0308\u0301\000\u0104\u030A\000\u012E\u0303\000\u1ECA\u0308"+
+        "\u0301\000\u1E00\u030A\000\u1E93\u0302\000\u1EA0\u030A\000\u1ECA\u0303"+
+        "\000\u1E94\u0302\000\u012F\u0330\000\u0104\u0308\000\u1E00\u0308\000\u1E92"+
+        "\u0302\000\u1EA0\u0308\000\u1EF5\u0300\000\u012E\u0330\000\u0104\u0303"+
+        "\000\u1E00\u0303\000\u1EF5\u0307\000\u1EA0\u0303\000\u1EF4\u0300\000\u1E96"+
+        "\u0302\000\u1E2B\u0302\000\u1E29\u032E\000\u0104\u0302\000\u0173\u031B"+
+        "\u0323\000\u1E00\u0302\000\u1E29\u0302\000\u1EF4\u0307\000\u1E25\u0302"+
+        "\000\u1E2A\u0302\000\u1E28\u032E\000\u0104\u0301\000\u0172\u031B\u0323"+
+        "\000\u1E00\u0301\000\u1E28\u0302\000\u1EA0\u0301\000\u1E24\u0302\000\u1E35"+
+        "\u030C\000\u0104\u0300\000\u0173\u031B\u0303\000\u1E00\u0300\000\u1EA0"+
+        "\u0300\000\u1EF1\u0303\000\u0137\u030C\000\u1E33\u030C\000\u1E34\u030C"+
+        "\000\u0172\u031B\u0303\000\u1EF0\u0303\000\u0136\u030C\000\u1E32\u030C"+
+        "\000\u1E96\u0308\000\u1E2B\u0308\000\u1E29\u0308\000\u0173\u031B\u0309"+
+        "\000\u1E25\u0308\000\u0123\u0307\000\u1EF1\u0309\000\u0123\u030C\000\u1E2A"+
+        "\u0308\000\u1E28\u0308\000\u0172\u031B\u0309\000\u1E24\u0308\000\u0122"+
+        "\u0307\000\u1EF0\u0309\000\u0122\u030C\000\u1FB0\u0345\000\u1FB1\u0345"+
+        "\000\u1E29\u0323\000\u0173\u031B\u0300\000\u0123\u0306\000\u1EF1\u0300"+
+        "\000\u1E28\u0323\000\u0172\u031B\u0300\000\u0122\u0306\000\u1E89\u0307"+
+        "\000\u1EF0\u0300\000\u1E96\u0307\000\u1E2B\u0307\000\u1E29\u0307\000\u0173"+
+        "\u031B\u0301\000\u1E25\u0307\000\u0123\u0302\000\u1E88\u0307\000\u1EF1"+
+        "\u0301\000\u1E2A\u0307\000\u1E28\u0307\000\u0172\u031B\u0301\000\u1E24"+
+        "\u0307\000\u0122\u0302\000\u1E89\u0308\000\u1EF0\u0301\000\u1E75\u0309"+
+        "\000\u1E1B\u030C\000\u1E95\u030C\000\u1E77\u0309\000\u1E19\u030C\000\u0123"+
+        "\u0304\000\u0173\u0309\000\u0119\u030C\000\u0229\u030C\000\u1E88\u0308"+
+        "\000\u1E73\u0309\000\u0105\u0307\u0304\000\u1EE5\u0309\000\u1EB9\u030C"+
+        "\000\u1E93\u030C\000\u1E01\u0307\u0304\000\u1EA1\u0307\u0304\000\u1E74"+
+        "\u0309\000\u1E1A\u030C\000\u1E94\u030C\000\u1E76\u0309\000\u1E18\u030C"+
+        "\000\u0122\u0304\000\u0172\u0309\000\u0118\u030C\000\u0228\u030C\000\u1E89"+
+        "\u0301\000\u1E72\u0309\000\u0104\u0307\u0304\000\u1EE4\u0309\000\u1EB8"+
+        "\u030C\000\u1E92\u030C\000\u1E00\u0307\u0304\000\u1EA0\u0307\u0304\000"+
+        "\u1E95\u0307\000\u0173\u0323\000\u1E88\u0301\000\u0105\u0308\u0304\000"+
+        "\u1E93\u0307\000\u1E01\u0308\u0304\000\u1EA1\u0308\u0304\000\u1E94\u0307"+
+        "\000\u0172\u0323\000\u1E89\u0300\000\u0104\u0308\u0304\000\u1E92\u0307"+
+        "\000\u1E00\u0308\u0304\000\u1EA0\u0308\u0304\000\u1E1B\u0307\000\u1E95"+
+        "\u0301\000\u1E19\u0307\000\u01EB\u031B\u0323\000\u0119\u0307\000\u0229"+
+        "\u0307\000\u1E88\u0300\000\u1EB9\u0307\000\u1E93\u0301\000\u1E1A\u0307"+
+        "\000\u1E94\u0301\000\u1E18\u0307\000\u1E75\u0308\u0300\000\u1E77\u0308"+
+        "\u0300\000\u01EA\u031B\u0323\000\u0118\u0307\000\u0228\u0307\000\u0173"+
+        "\u0308\u0300\000\u1EB8\u0307\000\u1E92\u0301\000\u1E73\u0308\u0300\000"+
+        "\u1EE5\u0308\u0300\000\u01B0\u0308\u0300\000\u1E1B\u0306\000\u1E19\u0306"+
+        "\000\u0119\u0330\000\u1E74\u0308\u0300\000\u0229\u0330\000\u1E76\u0308"+
+        "\u0300\000\u01EB\u031B\u0303\000\u0119\u0306\000\u0172\u0308\u0300\000"+
+        "\u1EE3\u0303\000\u1EB9\u0306\000\u1EF4\u0308\000\u1E72\u0308\u0300\000"+
+        "\u1EE4\u0308\u0300\000\u01AF\u0308\u0300\000\u1E1A\u0306\000\u1E18\u0306"+
+        "\000\u0118\u0330\000\u1E75\u0308\u030C\000\u0228\u0330\000\u1E77\u0308"+
+        "\u030C\000\u01EA\u031B\u0303\000\u0118\u0306\000\u1E7F\u0303\000\u0173"+
+        "\u0308\u030C\000\u1EE2\u0303\000\u1EB8\u0306\000\u1EF5\u0302\000\u1E73"+
+        "\u0308\u030C\000\u1EE5\u0308\u030C\000\u01B0\u0308\u030C\000\u1E1B\u0304"+
+        "\000\u1E19\u0304\000\u0119\u032D\000\u1E74\u0308\u030C\000\u0229\u032D"+
+        "\000\u1E76\u0308\u030C\000\u01EB\u031B\u0309\000\u0119\u0304\000\u0229"+
+        "\u0304\000\u1E7E\u0303\000\u0172\u0308\u030C\000\u1EE3\u0309\000\u1EB9"+
+        "\u0304\000\u1EF4\u0302\000\u1E72\u0308\u030C\000\u1EE4\u0308\u030C\000"+
+        "\u01AF\u0308\u030C\000\u1E75\u0304\u0308\000\u1E1A\u0304\000\u1E77\u0304"+
+        "\u0308\000\u1E18\u0304\000\u0118\u032D\000\u1E75\u0308\u0301\000\u0228"+
+        "\u032D\000\u0173\u0304\u0308\000\u1E77\u0308\u0301\000\u01EA\u031B\u0309"+
+        "\000\u0118\u0304\000\u0228\u0304\000\u1E73\u0304\u0308\000\u1EE5\u0304"+
+        "\u0308\000\u0173\u0308\u0301\000\u1EE2\u0309\000\u1EB8\u0304\000\u1E89"+
+        "\u0302\000\u1E73\u0308\u0301\000\u1EE5\u0308\u0301\000\u01B0\u0304\u0308"+
+        "\000\u01B0\u0308\u0301\000\u1E1B\u0304\u0301\000\u1E74\u0304\u0308\000"+
+        "\u1E19\u0304\u0301\000\u1E76\u0304\u0308\000\u0119\u0304\u0301\000\u1E74"+
+        "\u0308\u0301\000\u0229\u0304\u0301\000\u0172\u0304\u0308\000\u1E76\u0308"+
+        "\u0301\000\u01EB\u031B\u0300\000\u1EB9\u0304\u0301\000\u1E72\u0304\u0308"+
+        "\000\u1EE4\u0304\u0308\000\u0172\u0308\u0301\000\u1EE3\u0300\000\u1E88"+
+        "\u0302\000\u1E72\u0308\u0301\000\u1EE4\u0308\u0301\000\u01AF\u0304\u0308"+
+        "\000\u01AF\u0308\u0301\000\u1E1A\u0304\u0301\000\u1E75\u0303\u0301\000"+
+        "\u1E18\u0304\u0301\000\u1E77\u0303\u0301\000\u0118\u0304\u0301\000\u1E75"+
+        "\u0308\u0304\000\u0228\u0304\u0301\000\u0173\u0303\u0301\000\u1E77\u0308"+
+        "\u0304\000\u01EA\u031B\u0300\000\u1EB8\u0304\u0301\000\u1E73\u0303\u0301"+
+        "\000\u1EE5\u0303\u0301\000\u0173\u0308\u0304\000\u1EE2\u0300\000\u1E73"+
+        "\u0308\u0304\000\u1EE5\u0308\u0304\000\u1EEF\u0301\000\u01B0\u0308\u0304"+
+        "\000\u1E1B\u0304\u0300\000\u1E74\u0303\u0301\000\u1E19\u0304\u0300\000"+
+        "\u1E0F\u030C\000\u1E76\u0303\u0301\000\u1E13\u030C\000\u0119\u0304\u0300"+
+        "\000\u1E74\u0308\u0304\000\u0229\u0304\u0300\000"
+    ;
+
+    static final int[] typeBit = Utility.RLEStringToIntArray(
+        "\000g\000\000\000\uA5A5\000\020\0001\000+\000\uA5A5\000\004\000-\000*"+
+        "\000*\000\uA5A5\000\004\000-\000\002\0001\0005\000\012\0001\0001\000-"+
+        "\000\003\000\uA5A5\000\007\000\001\000\042\000\uA5A5\000\005\000\001\000"+
+        "\005\000\001\000\001\000\001\000\004\000\004\0001\0002\000-\000*\000\002"+
+        "\0004\0003\000.\0000\000\006\000\007\000\010\000\011\000\013\000\014\000"+
+        "\015\000\016\000\017\000\020\000\021\000\022\000\023\000\024\000\025\000"+
+        "\027\000\030\000\031\000\032\000\033\000\034\000\035\000\036\000\037\000"+
+        " \000\005\000\003\000!\000#\000$\000%\000&\000+\000'\000(\000)\000,\000"+
+        "/\000\026"
+    );
+}
diff --git a/src/com/ibm/icu/text/ComposedCharIter.java b/src/com/ibm/icu/text/ComposedCharIter.java
new file mode 100755
index 0000000..b8ba142
--- /dev/null
+++ b/src/com/ibm/icu/text/ComposedCharIter.java
@@ -0,0 +1,164 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/ComposedCharIter.java,v $ 
+ * $Date: 2002/06/20 01:21:18 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * <tt>ComposedCharIter</tt> is an iterator class that returns all
+ * of the precomposed characters defined in the Unicode standard, along
+ * with their decomposed forms.  This is often useful when building
+ * data tables (<i>e.g.</i> collation tables) which need to treat composed
+ * and decomposed characters equivalently.
+ * <p>
+ * For example, imagine that you have built a collation table with ordering
+ * rules for the {@link Normalizer#DECOMP canonically decomposed} forms of all
+ * characters used in a particular language.  When you process input text using
+ * this table, the text must first be decomposed so that it matches the form
+ * used in the table.  This can impose a performance penalty that may be
+ * unacceptable in some situations.
+ * <p>
+ * You can avoid this problem by ensuring that the collation table contains
+ * rules for both the decomposed <i>and</i> composed versions of each character.
+ * To do so, use a <tt>ComposedCharIter</tt> to iterate through all of the
+ * composed characters in Unicode.  If the decomposition for that character
+ * consists solely of characters that are listed in your ruleset, you can
+ * add a new rule for the composed character that makes it equivalent to
+ * its decomposition sequence.
+ * <p>
+ * Note that <tt>ComposedCharIter</tt> iterates over a <em>static</em> table
+ * of the composed characters in Unicode.  If you want to iterate over the
+ * composed characters in a particular string, use {@link Normalizer} instead.
+ * <p>
+ * When constructing a <tt>ComposedCharIter</tt> there is one
+ * optional feature that you can enable or disable:
+ * <ul>
+ *   <li>{@link Normalizer#IGNORE_HANGUL} - Do not iterate over the Hangul
+ *          characters and their corresponding Jamo decompositions.
+ *          This option is off by default (<i>i.e.</i> Hangul processing is enabled)
+ *          since the Unicode standard specifies that Hangul to Jamo 
+ *          is a canonical decomposition.
+ * </ul>
+ * <p>
+ * <tt>ComposedCharIter</tt> is currently based on version 2.1.8 of the
+ * <a href="http://www.unicode.org" target="unicode">Unicode Standard</a>.
+ * It will be updated as later versions of Unicode are released.
+ * @deprecated
+ */
+public final class ComposedCharIter {
+    
+    /**
+     * Constant that indicates the iteration has completed.
+     * {@link #next} returns this value when there are no more composed characters
+     * over which to iterate.
+     */
+    public static final  char DONE = (char) Normalizer.DONE;
+    
+    /**
+     * Construct a new <tt>ComposedCharIter</tt>.  The iterator will return
+     * all Unicode characters with canonical decompositions, including Korean
+     * Hangul characters.
+     */
+    public ComposedCharIter() {
+        compat = false;
+        options =0;
+    }
+    
+    
+    /**
+     * Constructs a non-default <tt>ComposedCharIter</tt> with optional behavior.
+     * <p>
+     * @param compat    <tt>false</tt> for canonical decompositions only;
+     *                  <tt>true</tt> for both canonical and compatibility
+     *                  decompositions.
+     *
+     * @param options   Optional decomposition features.  Currently, the only
+     *                  supported option is {@link Normalizer#IGNORE_HANGUL}, which
+     *                  causes this <tt>ComposedCharIter</tt> not to iterate
+     *                  over the Hangul characters and their corresponding
+     *                  Jamo decompositions.
+     */
+    public ComposedCharIter(boolean compat, int options) {
+        this.compat = compat;
+        this.options = options;
+    }
+    
+    /**
+     * Determines whether there any precomposed Unicode characters not yet returned
+     * by {@link #next}.
+     */
+    public boolean hasNext() {
+        if (nextChar == Normalizer.DONE)  {
+            findNextChar();
+        }
+        return nextChar != Normalizer.DONE;
+    }
+    
+    /**
+     * Returns the next precomposed Unicode character.
+     * Repeated calls to <tt>next</tt> return all of the precomposed characters defined
+     * by Unicode, in ascending order.  After all precomposed characters have
+     * been returned, {@link #hasNext} will return <tt>false</tt> and further calls
+     * to <tt>next</tt> will return {@link #DONE}.
+     */
+    public char next() {
+        if (nextChar == Normalizer.DONE)  {
+            findNextChar();
+        }
+        curChar = nextChar;
+        nextChar = Normalizer.DONE;
+        return (char) curChar;
+    }
+    
+    /**
+     * Returns the Unicode decomposition of the current character.
+     * This method returns the decomposition of the precomposed character most
+     * recently returned by {@link #next}.  The resulting decomposition is
+     * affected by the settings of the options passed to the constructor.
+     */
+    public String decomposition() {
+        // the decomposition buffer contains the decomposition of 
+        // current char so just return it
+        return new String(decompBuf,0, bufLen);
+    }
+    
+    private void findNextChar() {
+        int c=curChar+1;
+        for(;;){
+           if(c < 0xFFFF){
+	           bufLen = NormalizerImpl.getDecomposition(c,compat,
+                                                        decompBuf,0,
+	                                                    decompBuf.length);
+	           if(bufLen>0){
+                    // the curChar can be decomposed... so it is a composed char
+	                // cache the result     
+                    break;
+	           }
+	           c++;
+           }else{
+	           c=Normalizer.DONE;
+	           break;
+           }
+        }
+        nextChar=c;  
+    }
+    
+    private int options;
+    private boolean compat;
+    private char[] decompBuf = new char[100];
+    private int bufLen=0;
+    private int curChar = 0;
+    private int nextChar = Normalizer.DONE;
+    
+
+};
diff --git a/src/com/ibm/icu/text/CompoundTransliterator.java b/src/com/ibm/icu/text/CompoundTransliterator.java
new file mode 100755
index 0000000..f75c709
--- /dev/null
+++ b/src/com/ibm/icu/text/CompoundTransliterator.java
@@ -0,0 +1,517 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/CompoundTransliterator.java,v $ 
+ * $Date: 2002/06/26 18:12:39 $ 
+ * $Revision: 1.30 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+import java.util.Enumeration;
+import java.util.Vector;
+
+/**
+ * A transliterator that is composed of two or more other
+ * transliterator objects linked together.  For example, if one
+ * transliterator transliterates from script A to script B, and
+ * another transliterates from script B to script C, the two may be
+ * combined to form a new transliterator from A to C.
+ *
+ * <p>Composed transliterators may not behave as expected.  For
+ * example, inverses may not combine to form the identity
+ * transliterator.  See the class documentation for {@link
+ * Transliterator} for details.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: CompoundTransliterator.java,v $ $Revision: 1.30 $ $Date: 2002/06/26 18:12:39 $
+ */
+public class CompoundTransliterator extends Transliterator {
+
+    private Transliterator[] trans;
+
+    /**
+     * For compound RBTs (those with an ::id block before and/or after
+     * the main rule block) we record the index of the RBT here.
+     * Otherwise, this should have a value of -1.  We need this
+     * information to implement toRules().
+     */
+    private int compoundRBTIndex;    
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999-2001. All rights reserved.";
+
+    /**
+     * Constructs a new compound transliterator given an array of
+     * transliterators.  The array of transliterators may be of any
+     * length, including zero or one, however, useful compound
+     * transliterators have at least two components.
+     * @param transliterators array of <code>Transliterator</code>
+     * objects
+     * @param filter the filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     */
+    public CompoundTransliterator(Transliterator[] transliterators,
+                                  UnicodeFilter filter) {
+        super(joinIDs(transliterators), filter);
+        trans = new Transliterator[transliterators.length];
+        System.arraycopy(transliterators, 0, trans, 0, trans.length);
+        computeMaximumContextLength();
+    }
+
+    /**
+     * Constructs a new compound transliterator given an array of
+     * transliterators.  The array of transliterators may be of any
+     * length, including zero or one, however, useful compound
+     * transliterators have at least two components.
+     * @param transliterators array of <code>Transliterator</code>
+     * objects
+     */
+    public CompoundTransliterator(Transliterator[] transliterators) {
+        this(transliterators, null);
+    }
+    
+    /**
+     * Constructs a new compound transliterator.
+     * @param ID compound ID
+     * @param direction either Transliterator.FORWARD or Transliterator.REVERSE
+     * @param filter a global filter for this compound transliterator
+     * or null
+     */
+    public CompoundTransliterator(String ID, int direction,
+                                  UnicodeFilter filter) {
+        super(ID, filter);
+        init(ID, direction, -1, null, true);
+    }
+    
+    /**
+     * Constructs a new compound transliterator with no filter.
+     * @param ID compound ID
+     * @param direction either Transliterator.FORWARD or Transliterator.REVERSE
+     */
+    public CompoundTransliterator(String ID, int direction) {
+        this(ID, direction, null);
+    }
+    
+    /**
+     * Constructs a new forward compound transliterator with no filter.
+     * @param ID compound ID
+     */
+    public CompoundTransliterator(String ID) {
+        this(ID, FORWARD, null);
+    }
+
+    /**
+     * Package private constructor for compound RBTs.  Construct a
+     * compound transliterator using the given idBlock, with the
+     * splitTrans inserted at the idSplitPoint.
+     */
+    CompoundTransliterator(String ID,
+                           String idBlock,
+                           int idSplitPoint,
+                           Transliterator splitTrans) {
+        super(ID, null);
+        init(idBlock, FORWARD, idSplitPoint, splitTrans, false);
+    }
+    
+    /**
+     * Package private constructor for Transliterator from a vector of
+     * transliterators.  The caller is responsible for fixing up the
+     * ID.
+     */
+    CompoundTransliterator(Vector list) {
+        super("", null);
+        trans = null;
+        compoundRBTIndex = -1;
+        init(list, FORWARD, false);
+        // assume caller will fixup ID
+    }
+
+    /**
+     * Finish constructing a transliterator: only to be called by
+     * constructors.  Before calling init(), set trans and filter to NULL.
+     * @param id the id containing ';'-separated entries
+     * @param direction either FORWARD or REVERSE
+     * @param idSplitPoint the index into id at which the
+     * splitTrans should be inserted, if there is one, or
+     * -1 if there is none.
+     * @param splitTrans a transliterator to be inserted
+     * before the entry at offset idSplitPoint in the id string.  May be
+     * NULL to insert no entry.
+     * @param fixReverseID if TRUE, then reconstruct the ID of reverse
+     * entries by calling getID() of component entries.  Some constructors
+     * do not require this because they apply a facade ID anyway.
+     */
+    private void init(String id,
+                      int direction,
+                      int idSplitPoint,
+                      Transliterator splitTrans,
+                      boolean fixReverseID) {
+        // assert(trans == 0);
+
+        Vector list = new Vector();
+        UnicodeSet[] compoundFilter = new UnicodeSet[1];
+        StringBuffer regenID = new StringBuffer();
+        if (!TransliteratorIDParser.parseCompoundID(id, direction,
+                 regenID, list, compoundFilter)) {
+            throw new IllegalArgumentException("Invalid ID " + id);
+        }
+
+        compoundRBTIndex = TransliteratorIDParser.instantiateList(list, splitTrans, idSplitPoint);
+
+        init(list, direction, fixReverseID);
+
+        if (compoundFilter[0] != null) {
+            setFilter(compoundFilter[0]);
+        }
+    }
+
+    /**
+     * Finish constructing a transliterator: only to be called by
+     * constructors.  Before calling init(), set trans and filter to NULL.
+     * @param list a vector of transliterator objects to be adopted.  It
+     * should NOT be empty.  The list should be in declared order.  That
+     * is, it should be in the FORWARD order; if direction is REVERSE then
+     * the list order will be reversed.
+     * @param direction either FORWARD or REVERSE
+     * @param fixReverseID if TRUE, then reconstruct the ID of reverse
+     * entries by calling getID() of component entries.  Some constructors
+     * do not require this because they apply a facade ID anyway.
+     */
+    private void init(Vector list,
+                      int direction,
+                      boolean fixReverseID) {
+        // assert(trans == 0);
+
+        // Allocate array
+        int count = list.size();
+        trans = new Transliterator[count];
+
+        // Move the transliterators from the vector into an array.
+        // Reverse the order if necessary.
+        int i;
+        for (i=0; i<count; ++i) {
+            int j = (direction == FORWARD) ? i : count - 1 - i;
+            trans[i] = (Transliterator) list.elementAt(j);
+        }
+
+        // Fix compoundRBTIndex for REVERSE transliterators
+        if (compoundRBTIndex >= 0 && direction == REVERSE) {
+            compoundRBTIndex = count - 1 - compoundRBTIndex;
+        }
+
+        // If the direction is UTRANS_REVERSE then we may need to fix the
+        // ID.
+        if (direction == REVERSE && fixReverseID) {
+            StringBuffer newID = new StringBuffer();
+            for (i=0; i<count; ++i) {
+                if (i > 0) {
+                    newID.append(ID_DELIM);
+                }
+                newID.append(trans[i].getID());
+            }
+            setID(newID.toString());
+        }
+
+        computeMaximumContextLength();
+    }
+
+    /**
+     * Return the IDs of the given list of transliterators, concatenated
+     * with ';' delimiting them.  Equivalent to the perlish expression
+     * join(';', map($_.getID(), transliterators).
+     */
+    private static String joinIDs(Transliterator[] transliterators) {
+        StringBuffer id = new StringBuffer();
+        for (int i=0; i<transliterators.length; ++i) {
+            if (i > 0) {
+                id.append(';');
+            }
+            id.append(transliterators[i].getID());
+        }
+        return id.toString();
+    }
+
+    /**
+     * Returns the number of transliterators in this chain.
+     * @return number of transliterators in this chain.
+     */
+    public int getCount() {
+        return trans.length;
+    }
+
+    /**
+     * Returns the transliterator at the given index in this chain.
+     * @param index index into chain, from 0 to <code>getCount() - 1</code>
+     * @return transliterator at the given index
+     */
+    public Transliterator getTransliterator(int index) {
+        return trans[index];
+    }
+
+    /**
+     * Append c to buf, unless buf is empty or buf already ends in c.
+     */
+    private static void _smartAppend(StringBuffer buf, char c) {
+        if (buf.length() != 0 &&
+            buf.charAt(buf.length() - 1) != c) {
+            buf.append(c);
+        }
+    }
+
+    /**
+     * Override Transliterator:
+     * Create a rule string that can be passed to createFromRules()
+     * to recreate this transliterator.
+     * @param escapeUnprintable if TRUE then convert unprintable
+     * character to their hex escape representations, \\uxxxx or
+     * \\Uxxxxxxxx.  Unprintable characters are those other than
+     * U+000A, U+0020..U+007E.
+     * @return the rule string
+     * @deprecated To be removed after 2002-sep-30.
+     */
+    public String toRules(boolean escapeUnprintable) {
+        // We do NOT call toRules() on our component transliterators, in
+        // general.  If we have several rule-based transliterators, this
+        // yields a concatenation of the rules -- not what we want.  We do
+        // handle compound RBT transliterators specially -- those for which
+        // compoundRBTIndex >= 0.  For the transliterator at compoundRBTIndex,
+        // we do call toRules() recursively.
+        StringBuffer rulesSource = new StringBuffer();
+        if (compoundRBTIndex >= 0 && getFilter() != null) {
+            // If we are a compound RBT and if we have a global
+            // filter, then emit it at the top.
+            rulesSource.append("::").append(getFilter().toPattern(escapeUnprintable)).append(ID_DELIM);
+        }
+        for (int i=0; i<trans.length; ++i) {
+            String rule;
+            if (i == compoundRBTIndex) {
+                rule = trans[i].toRules(escapeUnprintable);
+            } else {
+                rule = trans[i].baseToRules(escapeUnprintable);
+            }
+            _smartAppend(rulesSource, '\n');
+            rulesSource.append(rule);
+            _smartAppend(rulesSource, ID_DELIM);
+        }
+        return rulesSource.toString();
+    }
+
+    /**
+     * Return the set of all characters that may be modified by this
+     * Transliterator, ignoring the effect of our filter.
+     */
+    protected UnicodeSet handleGetSourceSet() {
+        UnicodeSet set = new UnicodeSet();
+        for (int i=0; i<trans.length; ++i) {
+            set.addAll(trans[i].getSourceSet());
+            // Take the example of Hiragana-Latin.  This is really
+            // Hiragana-Katakana; Katakana-Latin.  The source set of
+            // these two is roughly [:Hiragana:] and [:Katakana:].
+            // But the source set for the entire transliterator is
+            // actually [:Hiragana:] ONLY -- that is, the first
+            // non-empty source set.
+
+            // This is a heuristic, and not 100% reliable.
+            if (!set.isEmpty()) {
+                break;
+            }
+        }
+        return set;
+    }
+
+    /**
+     * Returns the set of all characters that may be generated as
+     * replacement text by this transliterator.
+     */
+    public UnicodeSet getTargetSet() {
+        UnicodeSet set = new UnicodeSet();
+        for (int i=0; i<trans.length; ++i) {
+            // This is a heuristic, and not 100% reliable.
+            set.addAll(trans[i].getTargetSet());
+        }
+        return set;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position index, boolean incremental) {
+        /* Call each transliterator with the same start value and
+         * initial cursor index, but with the limit index as modified
+         * by preceding transliterators.  The cursor index must be
+         * reset for each transliterator to give each a chance to
+         * transliterate the text.  The initial cursor index is known
+         * to still point to the same place after each transliterator
+         * is called because each transliterator will not change the
+         * text between start and the initial value of cursor.
+         *
+         * IMPORTANT: After the first transliterator, each subsequent
+         * transliterator only gets to transliterate text committed by
+         * preceding transliterators; that is, the cursor (output
+         * value) of transliterator i becomes the limit (input value)
+         * of transliterator i+1.  Finally, the overall limit is fixed
+         * up before we return.
+         *
+         * Assumptions we make here:
+         * (1) contextStart <= start <= limit <= contextLimit <= text.length()
+         * (2) start <= start' <= limit'  ;cursor doesn't move back
+         * (3) start <= limit'            ;text before cursor unchanged
+         * - start' is the value of start after calling handleKT
+         * - limit' is the value of limit after calling handleKT
+         */
+
+        /**
+         * Example: 3 transliterators.  This example illustrates the
+         * mechanics we need to implement.  C, S, and L are the contextStart,
+         * start, and limit.  gl is the globalLimit.  contextLimit is
+         * equal to limit throughout.
+         *
+         * 1. h-u, changes hex to Unicode
+         *
+         *    4  7  a  d  0      4  7  a
+         *    abc/u0061/u    =>  abca/u    
+         *    C  S       L       C   S L   gl=f->a
+         *
+         * 2. upup, changes "x" to "XX"
+         *
+         *    4  7  a       4  7  a
+         *    abca/u    =>  abcAA/u    
+         *    C  SL         C    S   
+         *                       L    gl=a->b
+         * 3. u-h, changes Unicode to hex
+         *
+         *    4  7  a        4  7  a  d  0  3
+         *    abcAA/u    =>  abc/u0041/u0041/u    
+         *    C  S L         C              S
+         *                                  L   gl=b->15
+         * 4. return
+         *
+         *    4  7  a  d  0  3
+         *    abc/u0041/u0041/u    
+         *    C S L
+         */
+
+        if (trans.length < 1) {
+            index.start = index.limit;
+            return; // Short circuit for empty compound transliterators
+        }
+
+        // compoundLimit is the limit value for the entire compound
+        // operation.  We overwrite index.limit with the previous
+        // index.start.  After each transliteration, we update
+        // compoundLimit for insertions or deletions that have happened.
+        int compoundLimit = index.limit;
+
+        // compoundStart is the start for the entire compound
+        // operation.
+        int compoundStart = index.start;
+
+        int delta = 0; // delta in length
+
+        StringBuffer log = null;
+        if (DEBUG) {
+            log = new StringBuffer("CompoundTransliterator{" + getID() +
+                                   (incremental ? "}i: IN=" : "}: IN="));
+            Utility.formatInput(log, text, index);
+            System.out.println(Utility.escape(log.toString()));
+        }
+
+        // Give each transliterator a crack at the run of characters.
+        // See comments at the top of the method for more detail.
+        for (int i=0; i<trans.length; ++i) {
+            index.start = compoundStart; // Reset start
+            int limit = index.limit;
+
+            if (index.start == index.limit) {
+                // Short circuit for empty range
+                if (DEBUG) {
+                    System.out.println("CompoundTransliterator[" + i +
+                                       ".." + (trans.length-1) +
+                                       (incremental ? "]i: " : "]: ") +
+                                       Utility.formatInput(text, index) +
+                                       " (NOTHING TO DO)");
+                }
+                break;
+            }
+
+            if (DEBUG) {
+                log.setLength(0);
+                log.append("CompoundTransliterator[" + i + "=" +
+                           trans[i].getID() +
+                           (incremental ? "]i: " : "]: "));
+                Utility.formatInput(log, text, index);
+            }
+
+            trans[i].filteredTransliterate(text, index, incremental);
+
+            // In a properly written transliterator, start == limit after
+            // handleTransliterate() returns when incremental is false.
+            // Catch cases where the subclass doesn't do this, and throw
+            // an exception.  (Just pinning start to limit is a bad idea,
+            // because what's probably happening is that the subclass
+            // isn't transliterating all the way to the end, and it should
+            // in non-incremental mode.)
+            if (!incremental && index.start != index.limit) {
+                throw new RuntimeException("ERROR: Incomplete non-incremental transliteration by " + trans[i].getID());
+            }
+
+            if (DEBUG) {
+                log.append(" => ");
+                Utility.formatInput(log, text, index);
+                System.out.println(Utility.escape(log.toString()));
+            }
+
+            // Cumulative delta for insertions/deletions
+            delta += index.limit - limit;
+
+            if (incremental) {
+                // In the incremental case, only allow subsequent
+                // transliterators to modify what has already been
+                // completely processed by prior transliterators.  In the
+                // non-incrmental case, allow each transliterator to
+                // process the entire text.
+                index.limit = index.start;
+            }
+        }
+
+        compoundLimit += delta;
+
+        // Start is good where it is -- where the last transliterator left
+        // it.  Limit needs to be put back where it was, modulo
+        // adjustments for deletions/insertions.
+        index.limit = compoundLimit;
+
+        if (DEBUG) {
+            log.setLength(0);
+            log.append("CompoundTransliterator{" + getID() +
+                       (incremental ? "}i: OUT=" : "}: OUT="));
+            Utility.formatInput(log, text, index);
+            System.out.println(Utility.escape(log.toString()));
+        }
+    }
+
+    /**
+     * Compute and set the length of the longest context required by this transliterator.
+     * This is <em>preceding</em> context.
+     */
+    private void computeMaximumContextLength() {
+        int max = 0;
+        for (int i=0; i<trans.length; ++i) {
+            int len = trans[i].getMaximumContextLength();
+            if (len > max) {
+                max = len;
+            }
+        }
+        setMaximumContextLength(max);
+    }
+}
diff --git a/src/com/ibm/icu/text/DateFormat.java b/src/com/ibm/icu/text/DateFormat.java
new file mode 100755
index 0000000..92c3429
--- /dev/null
+++ b/src/com/ibm/icu/text/DateFormat.java
@@ -0,0 +1,830 @@
+/*
+*   Copyright (C) 1996-2002, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.TimeZone;
+
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * DateFormat is an abstract class for date/time formatting subclasses which
+ * formats and parses dates or time in a language-independent manner.
+ * The date/time formatting subclass, such as SimpleDateFormat, allows for
+ * formatting (i.e., date -> text), parsing (text -> date), and
+ * normalization.  The date is represented as a <code>Date</code> object or
+ * as the milliseconds since January 1, 1970, 00:00:00 GMT.
+ *
+ * <p>DateFormat provides many class methods for obtaining default date/time
+ * formatters based on the default or a given loacle and a number of formatting
+ * styles. The formatting styles include FULL, LONG, MEDIUM, and SHORT. More
+ * detail and examples of using these styles are provided in the method
+ * descriptions.
+ *
+ * <p>DateFormat helps you to format and parse dates for any locale.
+ * Your code can be completely independent of the locale conventions for
+ * months, days of the week, or even the calendar format: lunar vs. solar.
+ *
+ * <p>To format a date for the current Locale, use one of the
+ * static factory methods:
+ * <pre>
+ *  myString = DateFormat.getDateInstance().format(myDate);
+ * </pre>
+ * <p>If you are formatting multiple numbers, it is
+ * more efficient to get the format and use it multiple times so that
+ * the system doesn't have to fetch the information about the local
+ * language and country conventions multiple times.
+ * <pre>
+ *  DateFormat df = DateFormat.getDateInstance();
+ *  for (int i = 0; i < a.length; ++i) {
+ *    output.println(df.format(myDate[i]) + "; ");
+ *  }
+ * </pre>
+ * <p>To format a number for a different Locale, specify it in the
+ * call to getDateInstance().
+ * <pre>
+ *  DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
+ * </pre>
+ * <p>You can use a DateFormat to parse also.
+ * <pre>
+ *  myDate = df.parse(myString);
+ * </pre>
+ * <p>Use getDateInstance to get the normal date format for that country.
+ * There are other static factory methods available.
+ * Use getTimeInstance to get the time format for that country.
+ * Use getDateTimeInstance to get a date and time format. You can pass in 
+ * different options to these factory methods to control the length of the
+ * result; from SHORT to MEDIUM to LONG to FULL. The exact result depends
+ * on the locale, but generally:
+ * <ul><li>SHORT is completely numeric, such as 12.13.52 or 3:30pm
+ * <li>MEDIUM is longer, such as Jan 12, 1952
+ * <li>LONG is longer, such as January 12, 1952 or 3:30:32pm
+ * <li>FULL is pretty completely specified, such as
+ * Tuesday, April 12, 1952 AD or 3:30:42pm PST.
+ * </ul>
+ *
+ * <p>You can also set the time zone on the format if you wish.
+ * If you want even more control over the format or parsing,
+ * (or want to give your users more control),
+ * you can try casting the DateFormat you get from the factory methods
+ * to a SimpleDateFormat. This will work for the majority
+ * of countries; just remember to put it in a try block in case you
+ * encounter an unusual one.
+ *
+ * <p>You can also use forms of the parse and format methods with
+ * ParsePosition and FieldPosition to
+ * allow you to
+ * <ul><li>progressively parse through pieces of a string.
+ * <li>align any particular field, or find out where it is for selection
+ * on the screen.
+ * </ul>
+ *
+ * <h4>Synchronization</h4>
+ *
+ * Date formats are not synchronized. It is recommended to create separate 
+ * format instances for each thread. If multiple threads access a format 
+ * concurrently, it must be synchronized externally. 
+ *
+ * @see          Format
+ * @see          NumberFormat
+ * @see          SimpleDateFormat
+ * @see          com.ibm.icu.util.Calendar
+ * @see          com.ibm.icu.util.GregorianCalendar
+ * @see          com.ibm.icu.util.TimeZone
+ * @version      1.37 11/02/99
+ * @author       Mark Davis, Chen-Lieh Huang, Alan Liu
+ */
+public abstract class DateFormat extends Format {
+
+    /**
+     * The calendar that <code>DateFormat</code> uses to produce the time field
+     * values needed to implement date and time formatting.  Subclasses should
+     * initialize this to a calendar appropriate for the locale associated with
+     * this <code>DateFormat</code>.
+     * @serial
+     */
+    protected Calendar calendar;
+
+    /**
+     * The number formatter that <code>DateFormat</code> uses to format numbers
+     * in dates and times.  Subclasses should initialize this to a number format
+     * appropriate for the locale associated with this <code>DateFormat</code>.
+     * @serial
+     */
+    protected NumberFormat numberFormat;
+
+    /**
+     * Useful constant for ERA field alignment.
+     * Used in FieldPosition of date/time formatting.
+     */
+    public final static int ERA_FIELD = 0;
+    /**
+     * Useful constant for YEAR field alignment.
+     * Used in FieldPosition of date/time formatting.
+     */
+    public final static int YEAR_FIELD = 1;
+    /**
+     * Useful constant for MONTH field alignment.
+     * Used in FieldPosition of date/time formatting.
+     */
+    public final static int MONTH_FIELD = 2;
+    /**
+     * Useful constant for DATE field alignment.
+     * Used in FieldPosition of date/time formatting.
+     */
+    public final static int DATE_FIELD = 3;
+    /**
+     * Useful constant for one-based HOUR_OF_DAY field alignment.
+     * Used in FieldPosition of date/time formatting.
+     * HOUR_OF_DAY1_FIELD is used for the one-based 24-hour clock.
+     * For example, 23:59 + 01:00 results in 24:59.
+     */
+    public final static int HOUR_OF_DAY1_FIELD = 4;
+    /**
+     * Useful constant for zero-based HOUR_OF_DAY field alignment.
+     * Used in FieldPosition of date/time formatting.
+     * HOUR_OF_DAY0_FIELD is used for the zero-based 24-hour clock.
+     * For example, 23:59 + 01:00 results in 00:59.
+     */
+    public final static int HOUR_OF_DAY0_FIELD = 5;
+    /**
+     * Useful constant for MINUTE field alignment.
+     * Used in FieldPosition of date/time formatting.
+     */
+    public final static int MINUTE_FIELD = 6;
+    /**
+     * Useful constant for SECOND field alignment.
+     * Used in FieldPosition of date/time formatting.
+     */
+    public final static int SECOND_FIELD = 7;
+    /**
+     * Useful constant for MILLISECOND field alignment.
+     * Used in FieldPosition of date/time formatting.
+     */
+    public final static int MILLISECOND_FIELD = 8;
+    /**
+     * Useful constant for DAY_OF_WEEK field alignment.
+     * Used in FieldPosition of date/time formatting.
+     */
+    public final static int DAY_OF_WEEK_FIELD = 9;
+    /**
+     * Useful constant for DAY_OF_YEAR field alignment.
+     * Used in FieldPosition of date/time formatting.
+     */
+    public final static int DAY_OF_YEAR_FIELD = 10;
+    /**
+     * Useful constant for DAY_OF_WEEK_IN_MONTH field alignment.
+     * Used in FieldPosition of date/time formatting.
+     */
+    public final static int DAY_OF_WEEK_IN_MONTH_FIELD = 11;
+    /**
+     * Useful constant for WEEK_OF_YEAR field alignment.
+     * Used in FieldPosition of date/time formatting.
+     */
+    public final static int WEEK_OF_YEAR_FIELD = 12;
+    /**
+     * Useful constant for WEEK_OF_MONTH field alignment.
+     * Used in FieldPosition of date/time formatting.
+     */
+    public final static int WEEK_OF_MONTH_FIELD = 13;
+    /**
+     * Useful constant for AM_PM field alignment.
+     * Used in FieldPosition of date/time formatting.
+     */
+    public final static int AM_PM_FIELD = 14;
+    /**
+     * Useful constant for one-based HOUR field alignment.
+     * Used in FieldPosition of date/time formatting.
+     * HOUR1_FIELD is used for the one-based 12-hour clock.
+     * For example, 11:30 PM + 1 hour results in 12:30 AM.
+     */
+    public final static int HOUR1_FIELD = 15;
+    /**
+     * Useful constant for zero-based HOUR field alignment.
+     * Used in FieldPosition of date/time formatting.
+     * HOUR0_FIELD is used for the zero-based 12-hour clock.
+     * For example, 11:30 PM + 1 hour results in 00:30 AM.
+     */
+    public final static int HOUR0_FIELD = 16;
+    /**
+     * Useful constant for TIMEZONE field alignment.
+     * Used in FieldPosition of date/time formatting.
+     */
+    public final static int TIMEZONE_FIELD = 17;
+
+    // Proclaim serial compatibility with 1.1 FCS
+    private static final long serialVersionUID = 7218322306649953788L;
+
+    /**
+     * Overrides Format.
+     * Formats a time object into a time string. Examples of time objects
+     * are a time value expressed in milliseconds and a Date object.
+     * @param obj must be a Number or a Date or a Calendar.
+     * @param toAppendTo the string buffer for the returning time string.
+     * @return the formatted time string.
+     * @param fieldPosition keeps track of the position of the field
+     * within the returned string.
+     * On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field. For
+     * example, given a time text "1996.07.10 AD at 15:08:56 PDT",
+     * if the given fieldPosition is DateFormat.YEAR_FIELD, the
+     * begin index and end index of fieldPosition will be set to
+     * 0 and 4, respectively.
+     * Notice that if the same time field appears
+     * more than once in a pattern, the fieldPosition will be set for the first
+     * occurence of that time field. For instance, formatting a Date to
+     * the time string "1 PM PDT (Pacific Daylight Time)" using the pattern
+     * "h a z (zzzz)" and the alignment field DateFormat.TIMEZONE_FIELD,
+     * the begin index and end index of fieldPosition will be set to
+     * 5 and 8, respectively, for the first occurence of the timezone
+     * pattern character 'z'.
+     * @see java.text.Format
+     */
+    public final StringBuffer format(Object obj, StringBuffer toAppendTo,
+                                     FieldPosition fieldPosition)
+    {
+        if (obj instanceof Calendar)
+            return format( (Calendar)obj, toAppendTo, fieldPosition );
+        else if (obj instanceof Date)
+            return format( (Date)obj, toAppendTo, fieldPosition );
+        else if (obj instanceof Number)
+            return format( new Date(((Number)obj).longValue()),
+                          toAppendTo, fieldPosition );
+        else 
+            throw new IllegalArgumentException("Cannot format given Object as a Date");
+    }
+
+    /**
+     * Formats a date into a date/time string.
+     * @param cal a Calendar set to the date and time to be formatted
+     * into a date/time string.
+     * @param toAppendTo the string buffer for the returning date/time string.
+     * @param fieldPosition keeps track of the position of the field
+     * within the returned string.
+     * On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field. For
+     * example, given a time text "1996.07.10 AD at 15:08:56 PDT",
+     * if the given fieldPosition is DateFormat.YEAR_FIELD, the
+     * begin index and end index of fieldPosition will be set to
+     * 0 and 4, respectively.
+     * Notice that if the same time field appears
+     * more than once in a pattern, the fieldPosition will be set for the first
+     * occurence of that time field. For instance, formatting a Date to
+     * the time string "1 PM PDT (Pacific Daylight Time)" using the pattern
+     * "h a z (zzzz)" and the alignment field DateFormat.TIMEZONE_FIELD,
+     * the begin index and end index of fieldPosition will be set to
+     * 5 and 8, respectively, for the first occurence of the timezone
+     * pattern character 'z'.
+     * @return the formatted date/time string.
+     */
+    public abstract StringBuffer format(Calendar cal, StringBuffer toAppendTo,
+                                        FieldPosition fieldPosition);
+
+    /**
+     * Formats a Date into a date/time string.
+     * @param date a Date to be formatted into a date/time string.
+     * @param toAppendTo the string buffer for the returning date/time string.
+     * @param fieldPosition keeps track of the position of the field
+     * within the returned string.
+     * On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field. For
+     * example, given a time text "1996.07.10 AD at 15:08:56 PDT",
+     * if the given fieldPosition is DateFormat.YEAR_FIELD, the
+     * begin index and end index of fieldPosition will be set to
+     * 0 and 4, respectively.
+     * Notice that if the same time field appears
+     * more than once in a pattern, the fieldPosition will be set for the first
+     * occurence of that time field. For instance, formatting a Date to
+     * the time string "1 PM PDT (Pacific Daylight Time)" using the pattern
+     * "h a z (zzzz)" and the alignment field DateFormat.TIMEZONE_FIELD,
+     * the begin index and end index of fieldPosition will be set to
+     * 5 and 8, respectively, for the first occurence of the timezone
+     * pattern character 'z'.
+     * @return the formatted date/time string.
+     */
+    public final StringBuffer format(Date date, StringBuffer toAppendTo,
+                                     FieldPosition fieldPosition) {
+        // Use our Calendar object
+        calendar.setTime(date);
+        return format(calendar, toAppendTo, fieldPosition);
+    }
+
+    /**
+     * Formats a Date into a date/time string.
+     * @param date the time value to be formatted into a time string.
+     * @return the formatted time string.
+     */
+    public final String format(Date date)
+    {
+        return format(date, new StringBuffer(),new FieldPosition(0)).toString();
+    }
+
+    /**
+     * Parse a date/time string.
+     *
+     * @param text  The date/time string to be parsed
+     *
+     * @return      A Date, or null if the input could not be parsed
+     *
+     * @exception  ParseException  If the given string cannot be parsed as a date.
+     *
+     * @see #parse(String, ParsePosition)
+     */
+    public Date parse(String text) throws ParseException
+    {
+        ParsePosition pos = new ParsePosition(0);
+        Date result = parse(text, pos);
+        if (pos.getIndex() == 0) // ICU4J
+            throw new ParseException("Unparseable date: \"" + text + "\"" ,
+                                     pos.getErrorIndex()); // ICU4J
+        return result;
+    }
+
+    /**
+     * Parse a date/time string according to the given parse position.
+     * For example, a time text "07/10/96 4:5 PM, PDT" will be parsed
+     * into a Calendar that is equivalent to Date(837039928046).  The
+     * caller should clear the calendar before calling this method,
+     * unless existing field information is to be kept.
+     *
+     * <p> By default, parsing is lenient: If the input is not in the form used
+     * by this object's format method but can still be parsed as a date, then
+     * the parse succeeds.  Clients may insist on strict adherence to the
+     * format by calling setLenient(false).
+     *
+     * @see #setLenient(boolean)
+     *
+     * @param text  The date/time string to be parsed
+     *
+     * @param cal   The calendar into which parsed data will be stored.
+     *              In general, this should be cleared before calling this
+     *              method.  If this parse fails, the calendar may still
+     *              have been modified.
+     *
+     * @param pos   On input, the position at which to start parsing; on
+     *              output, the position at which parsing terminated, or the
+     *              start position if the parse failed.
+     */
+    public abstract void parse(String text, Calendar cal, ParsePosition pos);
+
+    /**
+     * Parse a date/time string according to the given parse position.  For
+     * example, a time text "07/10/96 4:5 PM, PDT" will be parsed into a Date
+     * that is equivalent to Date(837039928046).
+     *
+     * <p> By default, parsing is lenient: If the input is not in the form used
+     * by this object's format method but can still be parsed as a date, then
+     * the parse succeeds.  Clients may insist on strict adherence to the
+     * format by calling setLenient(false).
+     *
+     * @see #setLenient(boolean)
+     *
+     * @param text  The date/time string to be parsed
+     *
+     * @param pos   On input, the position at which to start parsing; on
+     *              output, the position at which parsing terminated, or the
+     *              start position if the parse failed.
+     *
+     * @return      A Date, or null if the input could not be parsed
+     */
+    public final Date parse(String text, ParsePosition pos) {
+        int start = pos.getIndex();
+        calendar.clear();
+        parse(text, calendar, pos);
+        if (pos.getIndex() != start) {
+            try {
+                return calendar.getTime();
+            } catch (IllegalArgumentException e) {
+                // This occurs if the calendar is non-lenient and there is
+                // an out-of-range field.  We don't know which field was
+                // illegal so we set the error index to the start.
+                pos.setIndex(start);
+                pos.setErrorIndex(start);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Parse a date/time string into an Object.  This convenience method simply
+     * calls parse(String, ParsePosition).
+     *
+     * @see #parse(String, ParsePosition)
+     */
+    public Object parseObject (String source, ParsePosition pos)
+    {
+        return parse(source, pos);
+    }
+
+    /**
+     * Constant for full style pattern.
+     */
+    public static final int FULL = 0;
+    /**
+     * Constant for long style pattern.
+     */
+    public static final int LONG = 1;
+    /**
+     * Constant for medium style pattern.
+     */
+    public static final int MEDIUM = 2;
+    /**
+     * Constant for short style pattern.
+     */
+    public static final int SHORT = 3;
+    /**
+     * Constant for default style pattern.  Its value is MEDIUM.
+     */
+    public static final int DEFAULT = MEDIUM;
+
+    /**
+     * Gets the time formatter with the default formatting style
+     * for the default locale.
+     * @return a time formatter.
+     */
+    public final static DateFormat getTimeInstance()
+    {
+        return get(-1, DEFAULT, Locale.getDefault());
+    }
+
+    /**
+     * Gets the time formatter with the given formatting style
+     * for the default locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @return a time formatter.
+     */
+    public final static DateFormat getTimeInstance(int style)
+    {
+        return get(-1, style, Locale.getDefault());
+    }
+
+    /**
+     * Gets the time formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @param aLocale the given locale.
+     * @return a time formatter.
+     */
+    public final static DateFormat getTimeInstance(int style,
+                                                 Locale aLocale)
+    {
+        return get(-1, style, aLocale);
+    }
+
+    /**
+     * Gets the date formatter with the default formatting style
+     * for the default locale.
+     * @return a date formatter.
+     */
+    public final static DateFormat getDateInstance()
+    {
+        return get(DEFAULT, -1, Locale.getDefault());
+    }
+
+    /**
+     * Gets the date formatter with the given formatting style
+     * for the default locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @return a date formatter.
+     */
+    public final static DateFormat getDateInstance(int style)
+    {
+        return get(style, -1, Locale.getDefault());
+    }
+
+    /**
+     * Gets the date formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @param aLocale the given locale.
+     * @return a date formatter.
+     */
+    public final static DateFormat getDateInstance(int style,
+                                                 Locale aLocale)
+    {
+        return get(style, -1, aLocale);
+    }
+
+    /**
+     * Gets the date/time formatter with the default formatting style
+     * for the default locale.
+     * @return a date/time formatter.
+     */
+    public final static DateFormat getDateTimeInstance()
+    {
+        return get(DEFAULT, DEFAULT, Locale.getDefault());
+    }
+
+    /**
+     * Gets the date/time formatter with the given date and time
+     * formatting styles for the default locale.
+     * @param dateStyle the given date formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @param timeStyle the given time formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @return a date/time formatter.
+     */
+    public final static DateFormat getDateTimeInstance(int dateStyle,
+                                                       int timeStyle)
+    {
+        return get(dateStyle, timeStyle, Locale.getDefault());
+    }
+
+    /**
+     * Gets the date/time formatter with the given formatting styles
+     * for the given locale.
+     * @param dateStyle the given date formatting style.
+     * @param timeStyle the given time formatting style.
+     * @param aLocale the given locale.
+     * @return a date/time formatter.
+     */
+    public final static DateFormat
+        getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)
+    {
+        return get(dateStyle, timeStyle, aLocale);
+    }
+
+    /**
+     * Get a default date/time formatter that uses the SHORT style for both the
+     * date and the time.
+     */
+    public final static DateFormat getInstance() {
+        return getDateTimeInstance(SHORT, SHORT);
+    }
+
+    /**
+     * Gets the set of locales for which DateFormats are installed.
+     * @return the set of locales for which DateFormats are installed.
+     */
+    public static Locale[] getAvailableLocales()
+    {
+        return ICULocaleData.getAvailableLocales("DateTimePatterns");
+    }
+
+    /**
+     * Set the calendar to be used by this date format.  Initially, the default
+     * calendar for the specified or default locale is used.
+     * @param newCalendar the new Calendar to be used by the date format
+     */
+    public void setCalendar(Calendar newCalendar)
+    {
+        this.calendar = newCalendar;
+    }
+
+    /**
+     * Gets the calendar associated with this date/time formatter.
+     * @return the calendar associated with this date/time formatter.
+     */
+    public Calendar getCalendar()
+    {
+        return calendar;
+    }
+
+    /**
+     * Allows you to set the number formatter.
+     * @param newNumberFormat the given new NumberFormat.
+     */
+    public void setNumberFormat(NumberFormat newNumberFormat)
+    {
+        this.numberFormat = newNumberFormat;
+        /*In order to parse String like "11.10.2001" to DateTime correctly 
+          in Locale("fr","CH") [Richard/GCL]
+        */
+        this.numberFormat.setParseIntegerOnly(true);
+    }
+
+    /**
+     * Gets the number formatter which this date/time formatter uses to
+     * format and parse a time.
+     * @return the number formatter which this date/time formatter uses.
+     */
+    public NumberFormat getNumberFormat()
+    {
+        return numberFormat;
+    }
+
+    /**
+     * Sets the time zone for the calendar of this DateFormat object.
+     * @param zone the given new time zone.
+     */
+    public void setTimeZone(TimeZone zone)
+    {
+        calendar.setTimeZone(zone);
+    }
+
+    /**
+     * Gets the time zone.
+     * @return the time zone associated with the calendar of DateFormat.
+     */
+    public TimeZone getTimeZone()
+    {
+        return calendar.getTimeZone();
+    }
+
+    /**
+     * Specify whether or not date/time parsing is to be lenient.  With
+     * lenient parsing, the parser may use heuristics to interpret inputs that
+     * do not precisely match this object's format.  With strict parsing,
+     * inputs must match this object's format.
+     * @param lenient when true, parsing is lenient
+     * @see com.ibm.icu.util.Calendar#setLenient
+     */
+    public void setLenient(boolean lenient)
+    {
+        calendar.setLenient(lenient);
+    }
+
+    /**
+     * Tell whether date/time parsing is to be lenient.
+     */
+    public boolean isLenient()
+    {
+        return calendar.isLenient();
+    }
+
+    /**
+     * Overrides hashCode
+     */
+    public int hashCode() {
+        return numberFormat.hashCode();
+        // just enough fields for a reasonable distribution
+    }
+
+    /**
+     * Overrides equals
+     */
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DateFormat other = (DateFormat) obj;
+        return (// calendar.equivalentTo(other.calendar) // THIS API DOESN'T EXIST YET!
+                calendar.getFirstDayOfWeek() == other.calendar.getFirstDayOfWeek() &&
+                calendar.getMinimalDaysInFirstWeek() == other.calendar.getMinimalDaysInFirstWeek() &&
+                calendar.isLenient() == other.calendar.isLenient() &&
+                calendar.getTimeZone().equals(other.calendar.getTimeZone()) &&
+                numberFormat.equals(other.numberFormat));
+    }
+
+    /**
+     * Overrides Cloneable
+     */
+    public Object clone()
+    {
+        DateFormat other = (DateFormat) super.clone();
+        other.calendar = (Calendar) calendar.clone();
+        other.numberFormat = (NumberFormat) numberFormat.clone();
+        return other;
+    }
+
+    /**
+     * Creates a DateFormat with the given time and/or date style in the given
+     * locale.
+     * @param dateStyle a value from 0 to 3 indicating the time format,
+     * or -1 to indicate no date
+     * @param timeStyle a value from 0 to 3 indicating the time format,
+     * or -1 to indicate no time
+     * @param loc the locale for the format
+     */
+    private static DateFormat get(int dateStyle, int timeStyle, Locale loc) {
+        if (timeStyle < -1 || timeStyle > 3) {
+            throw new IllegalArgumentException("Illegal time style " + timeStyle);
+        }
+        if (dateStyle < -1 || dateStyle > 3) {
+            throw new IllegalArgumentException("Illegal date style " + dateStyle);
+        }
+        try {
+            return new SimpleDateFormat(timeStyle, dateStyle, loc);
+        } catch (MissingResourceException e) {
+            return new SimpleDateFormat("M/d/yy h:mm a");
+        }
+    }
+
+    /**
+     * Create a new date format.
+     */
+    protected DateFormat() {}
+
+    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    //-------------------------------------------------------------------------
+    // Public static interface for creating custon DateFormats for different
+    // types of Calendars.
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * @param cal   The calendar system for which a date format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date format is desired.
+     */
+    static final public DateFormat getDateInstance(Calendar cal, int dateStyle, Locale locale)
+    {
+        return getDateTimeInstance(cal, dateStyle, -1, locale);
+    }
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a time format is desired.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the time format is desired.
+     *
+     * @see DateFormat#getTimeInstance
+     */
+    static final public DateFormat getTimeInstance(Calendar cal, int timeStyle, Locale locale)
+    {
+        return getDateTimeInstance(cal, -1, timeStyle, locale);
+    }
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates and times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a date/time format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date/time format is desired.
+     *
+     * @see DateFormat#getDateTimeInstance
+     */
+    static final public DateFormat getDateTimeInstance(Calendar cal, int dateStyle,
+                                                 int timeStyle, Locale locale)
+    {
+        return cal.getDateTimeFormat(dateStyle, timeStyle, locale);
+    }
+
+    /**
+     * Convenience overload
+     */
+    static final public DateFormat getInstance(Calendar cal, Locale locale) {
+        return getDateTimeInstance(cal, SHORT, SHORT, locale);
+    }
+
+    /**
+     * Convenience overload
+     */
+    static final public DateFormat getInstance(Calendar cal) {
+        return getInstance(cal, Locale.getDefault());
+    }
+
+    /**
+     * Convenience overload
+     */
+    static final public DateFormat getDateInstance(Calendar cal, int dateStyle) {
+        return getDateInstance(cal, dateStyle, Locale.getDefault());
+    }
+
+    /**
+     * Convenience overload
+     */
+    static final public DateFormat getTimeInstance(Calendar cal, int timeStyle) {
+        return getTimeInstance(cal, timeStyle, Locale.getDefault());
+    }
+
+    /**
+     * Convenience overload
+     */
+    static final public DateFormat getDateTimeInstance(Calendar cal, int dateStyle, int timeStyle) {
+        return getDateTimeInstance(cal, dateStyle, timeStyle, Locale.getDefault());
+    }
+}
diff --git a/src/com/ibm/icu/text/DateFormatSymbols.java b/src/com/ibm/icu/text/DateFormatSymbols.java
new file mode 100755
index 0000000..079ebb3
--- /dev/null
+++ b/src/com/ibm/icu/text/DateFormatSymbols.java
@@ -0,0 +1,702 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/DateFormatSymbols.java,v $
+ * $Date: 2002/03/10 19:40:16 $
+ * $Revision: 1.12 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.TimeZone;
+
+import java.io.Serializable;
+import java.lang.ref.SoftReference;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.Vector;
+
+/**
+ * <code>DateFormatSymbols</code> is a public class for encapsulating
+ * localizable date-time formatting data, such as the names of the
+ * months, the names of the days of the week, and the time zone data.
+ * <code>DateFormat</code> and <code>SimpleDateFormat</code> both use
+ * <code>DateFormatSymbols</code> to encapsulate this information.
+ *
+ * <p>
+ * Typically you shouldn't use <code>DateFormatSymbols</code> directly.
+ * Rather, you are encouraged to create a date-time formatter with the
+ * <code>DateFormat</code> class's factory methods: <code>getTimeInstance</code>,
+ * <code>getDateInstance</code>, or <code>getDateTimeInstance</code>.
+ * These methods automatically create a <code>DateFormatSymbols</code> for
+ * the formatter so that you don't have to. After the
+ * formatter is created, you may modify its format pattern using the
+ * <code>setPattern</code> method. For more information about
+ * creating formatters using <code>DateFormat</code>'s factory methods,
+ * see {@link DateFormat}.
+ *
+ * <p>
+ * If you decide to create a date-time formatter with a specific
+ * format pattern for a specific locale, you can do so with:
+ * <blockquote>
+ * <pre>
+ * new SimpleDateFormat(aPattern, new DateFormatSymbols(aLocale)).
+ * </pre>
+ * </blockquote>
+ *
+ * <p>
+ * <code>DateFormatSymbols</code> objects are clonable. When you obtain
+ * a <code>DateFormatSymbols</code> object, feel free to modify the
+ * date-time formatting data. For instance, you can replace the localized
+ * date-time format pattern characters with the ones that you feel easy
+ * to remember. Or you can change the representative cities
+ * to your favorite ones.
+ *
+ * <p>
+ * New <code>DateFormatSymbols</code> subclasses may be added to support
+ * <code>SimpleDateFormat</code> for date-time formatting for additional locales.
+
+ * @see          DateFormat
+ * @see          SimpleDateFormat
+ * @see          com.ibm.icu.util.SimpleTimeZone
+ * @version      1.31 09/21/99
+ * @author       Chen-Lieh Huang
+ */
+public class DateFormatSymbols implements Serializable, Cloneable {
+
+    /**
+     * Construct a DateFormatSymbols object by loading format data from
+     * resources for the default locale.
+     *
+     * @exception  java.util.MissingResourceException
+     *             if the resources for the default locale cannot be
+     *             found or cannot be loaded.
+     */
+    public DateFormatSymbols()
+    {
+        initializeData(Locale.getDefault());
+    }
+
+    /**
+     * Construct a DateFormatSymbols object by loading format data from
+     * resources for the given locale.
+     *
+     * @exception  java.util.MissingResourceException
+     *             if the resources for the specified locale cannot be
+     *             found or cannot be loaded.
+     */
+    public DateFormatSymbols(Locale locale)
+    {
+        initializeData(locale);
+    }
+
+    /**
+     * Era strings. For example: "AD" and "BC".  An array of 2 strings,
+     * indexed by <code>Calendar.BC</code> and <code>Calendar.AD</code>.
+     * @serial
+     */
+    String eras[] = null;
+
+    /**
+     * Month strings. For example: "January", "February", etc.  An array
+     * of 13 strings (some calendars have 13 months), indexed by
+     * <code>Calendar.JANUARY</code>, <code>Calendar.FEBRUARY</code>, etc.
+     * @serial
+     */
+    String months[] = null;
+
+    /**
+     * Short month strings. For example: "Jan", "Feb", etc.  An array of
+     * 13 strings (some calendars have 13 months), indexed by
+     * <code>Calendar.JANUARY</code>, <code>Calendar.FEBRUARY</code>, etc.
+
+     * @serial
+     */
+    String shortMonths[] = null;
+
+    /**
+     * Weekday strings. For example: "Sunday", "Monday", etc.  An array
+     * of 8 strings, indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * The element <code>weekdays[0]</code> is ignored.
+     * @serial
+     */
+    String weekdays[] = null;
+
+    /**
+     * Short weekday strings. For example: "Sun", "Mon", etc.  An array
+     * of 8 strings, indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * The element <code>shortWeekdays[0]</code> is ignored.
+     * @serial
+     */
+    String shortWeekdays[] = null;
+
+    /**
+     * AM and PM strings. For example: "AM" and "PM".  An array of
+     * 2 strings, indexed by <code>Calendar.AM</code> and
+     * <code>Calendar.PM</code>.
+     * @serial
+     */
+    String ampms[] = null;
+
+    /**
+     * Localized names of time zones in this locale.  This is a
+     * two-dimensional array of strings of size <em>n</em> by <em>m</em>,
+     * where <em>m</em> is at least 5.  Each of the <em>n</em> rows is an
+     * entry containing the localized names for a single <code>TimeZone</code>.
+     * Each such row contains (with <code>i</code> ranging from
+     * 0..<em>n</em>-1):
+     * <ul>
+     * <li><code>zoneStrings[i][0]</code> - time zone ID</li>
+     * <li><code>zoneStrings[i][1]</code> - long name of zone in standard
+     * time</li>
+     * <li><code>zoneStrings[i][2]</code> - short name of zone in
+     * standard time</li>
+     * <li><code>zoneStrings[i][3]</code> - long name of zone in daylight
+     * savings time</li>
+     * <li><code>zoneStrings[i][4]</code> - short name of zone in daylight
+     * savings time</li>
+     * </ul>
+     * The zone ID is <em>not</em> localized; it corresponds to the ID
+     * value associated with a system time zone object.  All other entries
+     * are localized names.  If a zone does not implement daylight savings
+     * time, the daylight savings time names are ignored.
+     * @see com.ibm.icu.util.TimeZone
+     * @serial
+     */
+    String zoneStrings[][] = null;
+
+    /**
+     * Unlocalized date-time pattern characters. For example: 'y', 'd', etc.
+     * All locales use the same these unlocalized pattern characters.
+     */
+    static final String  patternChars = "GyMdkHmsSEDFwWahKz";
+
+    /**
+     * Localized date-time pattern characters. For example, a locale may
+     * wish to use 'u' rather than 'y' to represent years in its date format
+     * pattern strings.
+     * This string must be exactly 18 characters long, with the index of
+     * the characters described by <code>DateFormat.ERA_FIELD</code>,
+     * <code>DateFormat.YEAR_FIELD</code>, etc.  Thus, if the string were
+     * "Xz...", then localized patterns would use 'X' for era and 'z' for year.
+     * @serial
+     */
+    String  localPatternChars = null;
+
+    /* use serialVersionUID from JDK 1.1.4 for interoperability */
+    static final long serialVersionUID = -5987973545549424702L;
+
+    /**
+     * Gets era strings. For example: "AD" and "BC".
+     * @return the era strings.
+     */
+    public String[] getEras() {
+        return duplicate(eras);
+    }
+
+    /**
+     * Sets era strings. For example: "AD" and "BC".
+     * @param newEras the new era strings.
+     */
+    public void setEras(String[] newEras) {
+        eras = duplicate(newEras);
+    }
+
+    /**
+     * Gets month strings. For example: "January", "February", etc.
+     * @return the month strings.
+     */
+    public String[] getMonths() {
+        return duplicate(months);
+    }
+
+    /**
+     * Sets month strings. For example: "January", "February", etc.
+     * @param newMonths the new month strings.
+     */
+    public void setMonths(String[] newMonths) {
+        months = duplicate(newMonths);
+    }
+
+    /**
+     * Gets short month strings. For example: "Jan", "Feb", etc.
+     * @return the short month strings.
+     */
+    public String[] getShortMonths() {
+        return duplicate(shortMonths);
+    }
+
+    /**
+     * Sets short month strings. For example: "Jan", "Feb", etc.
+     * @param newShortMonths the new short month strings.
+     */
+    public void setShortMonths(String[] newShortMonths) {
+        shortMonths = duplicate(newShortMonths);
+    }
+
+    /**
+     * Gets weekday strings. For example: "Sunday", "Monday", etc.
+     * @return the weekday strings. Use <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc. to index the result array.
+     */
+    public String[] getWeekdays() {
+        return duplicate(weekdays);
+    }
+
+    /**
+     * Sets weekday strings. For example: "Sunday", "Monday", etc.
+     * @param newWeekdays the new weekday strings. The array should
+     * be indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     */
+    public void setWeekdays(String[] newWeekdays) {
+        weekdays = duplicate(newWeekdays);
+    }
+
+    /**
+     * Gets short weekday strings. For example: "Sun", "Mon", etc.
+     * @return the short weekday strings. Use <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc. to index the result array.
+     */
+    public String[] getShortWeekdays() {
+        return duplicate(shortWeekdays);
+    }
+
+    /**
+     * Sets short weekday strings. For example: "Sun", "Mon", etc.
+     * @param newShortWeekdays the new short weekday strings. The array should
+     * be indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     */
+    public void setShortWeekdays(String[] newShortWeekdays) {
+        shortWeekdays = duplicate(newShortWeekdays);
+    }
+
+    /**
+     * Gets ampm strings. For example: "AM" and "PM".
+     * @return the weekday strings.
+     */
+    public String[] getAmPmStrings() {
+        return duplicate(ampms);
+    }
+
+    /**
+     * Sets ampm strings. For example: "AM" and "PM".
+     * @param newAmpms the new ampm strings.
+     */
+    public void setAmPmStrings(String[] newAmpms) {
+        ampms = duplicate(newAmpms);
+    }
+
+    /**
+     * Gets timezone strings.
+     * @return the timezone strings.
+     */
+    public String[][] getZoneStrings() {
+        return duplicate(zoneStrings);
+    }
+
+    /**
+     * Sets timezone strings.
+     * @param newZoneStrings the new timezone strings.
+     */
+    public void setZoneStrings(String[][] newZoneStrings) {
+        zoneStrings = duplicate(newZoneStrings);
+    }
+
+    /**
+     * Gets localized date-time pattern characters. For example: 'u', 't', etc.
+     * @return the localized date-time pattern characters.
+     */
+    public String getLocalPatternChars() {
+        return new String(localPatternChars);
+    }
+
+    /**
+     * Sets localized date-time pattern characters. For example: 'u', 't', etc.
+     * @param newLocalPatternChars the new localized date-time
+     * pattern characters.
+     */
+    public void setLocalPatternChars(String newLocalPatternChars) {
+        localPatternChars = newLocalPatternChars;
+    }
+
+    /**
+     * Overrides Cloneable
+     */
+    public Object clone()
+    {
+        try {
+            DateFormatSymbols other = (DateFormatSymbols)super.clone();
+            copyMembers(this, other);
+            return other;
+        } catch (CloneNotSupportedException e) {
+            throw new InternalError();
+        }
+    }
+
+    /**
+     * Override hashCode.
+     * Generates a hash code for the DateFormatSymbols object.
+     */
+    public int hashCode() {
+        int hashcode = 0;
+        for (int index = 0; index < this.zoneStrings[0].length; ++index)
+            hashcode ^= this.zoneStrings[0][index].hashCode();
+        return hashcode;
+    }
+
+    /**
+     * Override equals
+     */
+    public boolean equals(Object obj)
+    {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DateFormatSymbols that = (DateFormatSymbols) obj;
+        return (Utility.arrayEquals(eras, that.eras)
+                && Utility.arrayEquals(months, that.months)
+                && Utility.arrayEquals(shortMonths, that.shortMonths)
+                && Utility.arrayEquals(weekdays, that.weekdays)
+                && Utility.arrayEquals(shortWeekdays, that.shortWeekdays)
+                && Utility.arrayEquals(ampms, that.ampms)
+                && Utility.arrayEquals(zoneStrings, that.zoneStrings)
+                && Utility.arrayEquals(localPatternChars,
+                                       that.localPatternChars));
+    }
+
+    // =======================privates===============================
+
+    /**
+     * Useful constant for defining timezone offsets.
+     */
+    static final int millisPerHour = 60*60*1000;
+
+
+    private void initializeData(Locale desiredLocale)
+    {
+        ResourceBundle rb = ICULocaleData.getLocaleElements(desiredLocale);
+
+        // FIXME: cache only ResourceBundle. Hence every time, will do
+        // getObject(). This won't be necessary if the Resource itself
+        // is cached.
+        eras = rb.getStringArray("Eras");
+        months = rb.getStringArray("MonthNames");
+        shortMonths = rb.getStringArray("MonthAbbreviations");
+
+        String[] lWeekdays = rb.getStringArray("DayNames");
+        weekdays = new String[8];
+        weekdays[0] = "";  // 1-based
+        System.arraycopy(lWeekdays, 0, weekdays, 1, lWeekdays.length);
+
+        String[] sWeekdays = rb.getStringArray("DayAbbreviations");
+        shortWeekdays = new String[8];
+        shortWeekdays[0] = "";  // 1-based
+        System.arraycopy(sWeekdays, 0, shortWeekdays, 1, sWeekdays.length);
+
+        ampms = rb.getStringArray("AmPmMarkers");
+
+        // hack around class cast problem
+        // zoneStrings = (String[][])rb.getObject("zoneStrings");
+        Object[] zoneObject = (Object[])rb.getObject("zoneStrings");
+        zoneStrings = new String[zoneObject.length][];
+        for (int i = 0; i < zoneStrings.length; ++i) {
+            zoneStrings[i] = (String[])zoneObject[i];
+        }
+
+        localPatternChars = rb.getString("localPatternChars");
+    }
+
+    /**
+     * Package private: used by SimpleDateFormat
+     * Gets the index for the given time zone ID to obtain the timezone
+     * strings for formatting. The time zone ID is just for programmatic
+     * lookup. NOT LOCALIZED!!!
+     * @param ID the given time zone ID.
+     * @return the index of the given time zone ID.  Returns -1 if
+     * the given time zone ID can't be located in the DateFormatSymbols object.
+     * @see com.ibm.icu.util.SimpleTimeZone
+     */
+    final int getZoneIndex(String ID) {
+        int result = _getZoneIndex(ID);
+        if (result >= 0) {
+            return result;
+        }
+        
+        // Do a search through the equivalency group for the given ID
+        int n = TimeZone.countEquivalentIDs(ID);
+        if (n > 1) {
+            for (int i=0; i<n; ++i) {
+                String equivID = TimeZone.getEquivalentID(ID, i);
+                if (!equivID.equals(ID)) {
+                    int equivResult = _getZoneIndex(equivID);
+                    if (equivResult >= 0) {
+                        return equivResult;
+                    }
+                }
+            }
+        }
+        
+        return -1;
+    }
+    
+    /**
+     * Lookup the given ID.  Do NOT do an equivalency search.
+     */
+    private int _getZoneIndex(String ID)
+    {
+        for (int index=0; index<zoneStrings.length; index++)
+            {
+                if (ID.equalsIgnoreCase(zoneStrings[index][0])) return index;
+            }
+
+        return -1;
+    }
+
+    /**
+     * Clones an array of Strings.
+     * @param srcArray the source array to be cloned.
+     * @param count the number of elements in the given source array.
+     * @return a cloned array.
+     */
+    private final String[] duplicate(String[] srcArray)
+    {
+        return (String[])srcArray.clone();
+    }
+
+    private final String[][] duplicate(String[][] srcArray)
+    {
+        String[][] aCopy = new String[srcArray.length][];
+        for (int i = 0; i < srcArray.length; ++i)
+            aCopy[i] = duplicate(srcArray[i]);
+        return aCopy;
+    }
+
+    /**
+     * Clones all the data members from the source DateFormatSymbols to
+     * the target DateFormatSymbols. This is only for subclasses.
+     * @param src the source DateFormatSymbols.
+     * @param dst the target DateFormatSymbols.
+     */
+    private final void copyMembers(DateFormatSymbols src, DateFormatSymbols dst)
+    {
+        dst.eras = duplicate(src.eras);
+        dst.months = duplicate(src.months);
+        dst.shortMonths = duplicate(src.shortMonths);
+        dst.weekdays = duplicate(src.weekdays);
+        dst.shortWeekdays = duplicate(src.shortWeekdays);
+        dst.ampms = duplicate(src.ampms);
+        dst.zoneStrings = duplicate(src.zoneStrings);
+        dst.localPatternChars = new String (src.localPatternChars);
+    }
+
+    /**
+     * Compares the equality of the two arrays of String.
+     * @param current this String array.
+     * @param other that String array.
+     */
+    private final boolean equals(String[] current, String[] other)
+    {
+        int count = current.length;
+
+        for (int i = 0; i < count; ++i)
+            if (!current[i].equals(other[i]))
+                return false;
+        return true;
+    }
+
+    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    /**
+     * Get the {@link DateFormatSymbols} object that should be used to format a
+     * calendar system's dates in the given locale.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * When creating a new Calendar subclass, you must create the
+     * {@link ResourceBundle ResourceBundle}
+     * containing its {@link DateFormatSymbols DateFormatSymbols} in a specific place.
+     * The resource bundle name is based on the calendar's fully-specified
+     * class name, with ".resources" inserted at the end of the package name
+     * (just before the class name) and "Symbols" appended to the end.
+     * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar"
+     * is "com.ibm.icu.impl.data.HebrewCalendarSymbols".
+     * <p>
+     * Within the ResourceBundle, this method searches for five keys:
+     * <ul>
+     * <li><b>DayNames</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>DAY_OF_WEEK</code> field.  Even though
+     *      <code>DAY_OF_WEEK</code> starts with <code>SUNDAY</code> = 1,
+     *      This array is 0-based; the name for Sunday goes in the
+     *      first position, at index 0.  If this key is not found
+     *      in the bundle, the day names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     *
+     * <li><b>DayAbbreviations</b> -
+     *      An array of abbreviated day names corresponding
+     *      to the values in the "DayNames" array.  If this key
+     *      is not found in the resource bundle, the "DayNames"
+     *      values are used instead.  If neither key is found,
+     *      the day abbreviations are inherited from the default
+     *      <code>DateFormatSymbols</code> for the locale.
+     *
+     * <li><b>MonthNames</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>MONTH</code> field.  If this key is not found
+     *      in the bundle, the month names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     *
+     * <li><b>MonthAbbreviations</b> -
+     *      An array of abbreviated day names corresponding
+     *      to the values in the "MonthNames" array.  If this key
+     *      is not found in the resource bundle, the "MonthNames"
+     *      values are used instead.  If neither key is found,
+     *      the day abbreviations are inherited from the default
+     *      <code>DateFormatSymbols</code> for the locale.
+     *
+     * <li><b>Eras</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>ERA</code> field.  If this key is not found
+     *      in the bundle, the era names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     * </ul>
+     * <p>
+     * @param cal       The calendar system whose date format symbols are desired.
+     * @param locale    The locale whose symbols are desired.
+     *
+     * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale)
+     */
+    public DateFormatSymbols(Calendar cal, Locale locale) {
+        this(cal==null?null:cal.getClass(), locale);
+    }
+
+    public DateFormatSymbols(Class calendarClass, Locale locale) {
+        this(locale); // old-style construction
+        if (calendarClass != null) {
+            ResourceBundle bundle = null;
+            try {
+                bundle = getDateFormatBundle(calendarClass, locale);
+            } catch (MissingResourceException e) {
+                //if (!(cal instanceof GregorianCalendar)) {
+                if (!(GregorianCalendar.class.isAssignableFrom(calendarClass))) {
+                    // Ok for symbols to be missing for a Gregorian calendar, but
+                    // not for any other type.
+                    throw e;
+                }
+            }
+            constructCalendarSpecific(bundle);
+        }
+    }
+
+    /**
+     * Fetch a custom calendar's DateFormatSymbols out of the given resource
+     * bundle.  Symbols that are not overridden are inherited from the
+     * default DateFormatSymbols for the locale.
+     * @see DateFormatSymbols#DateFormatSymbols
+     */
+    public DateFormatSymbols(ResourceBundle bundle, Locale locale) {
+        // Get the default symbols for the locale, since most
+        // calendars will only need to override month names and will
+        // want everything else the same
+        this(locale); // old-style construction
+        constructCalendarSpecific(bundle);
+    }
+
+    /**
+     * Given a resource bundle specific to the given Calendar class,
+     * initialize this object.  Member variables will have already been
+     * initialized using the default mechanism, so only those that differ
+     * from or supplement the standard resource data need be handled here.
+     * If subclasses override this method, they should call
+     * <code>super.constructCalendarSpecific(bundle)</code> as needed to
+     * handle the "DayNames", "DayAbbreviations", "MonthNames",
+     * "MonthAbbreviations", and "Eras" resource data.
+     */
+    protected void constructCalendarSpecific(ResourceBundle bundle) {
+
+        // Fetch the day names from the resource bundle.  If they're not found,
+        // it's ok; we'll just use the default ones.
+        // Allow a null ResourceBundle just for the sake of completeness;
+        // this is useful for calendars that don't have any overridden symbols
+
+        if (bundle != null) {
+            try {
+                String[] temp = bundle.getStringArray("DayNames");
+                setWeekdays(temp);
+                setShortWeekdays(temp);
+
+                temp = bundle.getStringArray("DayAbbreviations");
+                setShortWeekdays( temp );
+            } catch (MissingResourceException e) {}
+
+            try {
+                String[] temp = bundle.getStringArray("MonthNames");
+                setMonths( temp );
+                setShortMonths( temp );
+
+                temp = bundle.getStringArray("MonthAbbreviations");
+                setShortMonths( temp );
+            } catch (MissingResourceException e) {}
+
+            try {
+                String[] temp = bundle.getStringArray("Eras");
+                setEras( temp );
+            } catch (MissingResourceException e) {}
+        }
+    }
+
+    /**
+     * Find the ResourceBundle containing the date format information for
+     * a specified calendar subclass in a given locale.
+     * <p>
+     * The resource bundle name is based on the calendar's fully-specified
+     * class name, with ".resources" inserted at the end of the package name
+     * (just before the class name) and "Symbols" appended to the end.
+     * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar"
+     * is "com.ibm.icu.impl.data.HebrewCalendarSymbols".
+     */
+    static public ResourceBundle getDateFormatBundle(Class calendarClass, Locale locale)
+        throws MissingResourceException {
+
+        // Find the calendar's class name, which we're going to use to construct the
+        // resource bundle name.
+        String fullName = calendarClass.getName();
+        int lastDot = fullName.lastIndexOf('.');
+        String className = fullName.substring(lastDot+1);
+
+        String bundleName = className + "Symbols";
+
+        ResourceBundle result = null;
+        try {
+            result = ICULocaleData.getResourceBundle(bundleName, locale);
+        }
+        catch (MissingResourceException e) {
+            //if (!(cal instanceof GregorianCalendar)) {
+            if (!(GregorianCalendar.class.isAssignableFrom(calendarClass))) {
+                // Ok for symbols to be missing for a Gregorian calendar, but
+                // not for any other type.
+                throw e;
+            }
+        }
+        return result;
+    }
+
+    static public ResourceBundle getDateFormatBundle(Calendar cal, Locale locale)
+        throws MissingResourceException {
+        return getDateFormatBundle(cal==null?null:cal.getClass(), locale);
+    }
+}
diff --git a/src/com/ibm/icu/text/DecimalFormat.java b/src/com/ibm/icu/text/DecimalFormat.java
new file mode 100755
index 0000000..a831ddf
--- /dev/null
+++ b/src/com/ibm/icu/text/DecimalFormat.java
@@ -0,0 +1,3301 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/DecimalFormat.java,v $ 
+ * $Date: 2002/05/09 16:59:20 $ 
+ * $Revision: 1.17 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.util.Currency;
+import java.text.Format;
+import java.text.ParsePosition;
+import java.text.FieldPosition;
+import java.math.BigInteger;
+import java.util.ResourceBundle;
+import java.util.Locale;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.util.Hashtable;
+import java.io.InvalidObjectException; //Bug 4185761 [Richard/GCL]
+
+/**
+ * <code>DecimalFormat</code> is a concrete subclass of
+ * <code>NumberFormat</code> that formats decimal numbers. It has a variety of
+ * features designed to make it possible to parse and format numbers in any
+ * locale, including support for Western, Arabic, or Indic digits.  It also
+ * supports different flavors of numbers, including integers (123), fixed-point
+ * numbers (123.4), scientific notation (1.23E4), percentages (12%), and
+ * currency amounts ($123).  All of these flavors can be easily localized.
+ *
+ * <p><strong>This is an enhanced version of <code>DecimalFormat</code> that
+ * is based on the standard version in the JDK.  New or changed functionality
+ * is labeled
+ * <strong><font face=helvetica color=red>NEW</font></strong> or
+ * <strong><font face=helvetica color=red>CHANGED</font></strong>.</strong>
+ *
+ * <p>To obtain a <code>NumberFormat</code> for a specific locale (including the
+ * default locale) call one of <code>NumberFormat</code>'s factory methods such
+ * as <code>getInstance()</code>. Do not call the <code>DecimalFormat</code>
+ * constructors directly, unless you know what you are doing, since the
+ * <code>NumberFormat</code> factory methods may return subclasses other than
+ * <code>DecimalFormat</code>. If you need to customize the format object, do
+ * something like this:
+ *
+ * <blockquote><pre>
+ * NumberFormat f = NumberFormat.getInstance(loc);
+ * if (f instanceof DecimalFormat) {
+ *     ((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
+ * }
+ * </pre></blockquote>
+ *
+ * <p>A <code>DecimalFormat</code> comprises a <em>pattern</em> and a set of
+ * <em>symbols</em>.  The pattern may be set directly using
+ * <code>applyPattern()</code>, or indirectly using the API methods.  The
+ * symbols are stored in a <code>DecimalFormatSymbols</code> object.  When using
+ * the <code>NumberFormat</code> factory methods, the pattern and symbols are
+ * read from localized <code>ResourceBundle</code>s in the package
+ * <code>java.text.resource</code>.
+ * 
+ * <h4>Synchronization</h4>
+ * <p>
+ * Decimal formats are generally not synchronized. It is recommended to create 
+ * separate format instances for each thread. If multiple threads access a format
+ * concurrently, it must be synchronized externally. 
+ * <p>
+ *
+ * <p><strong>Example</strong>
+ *
+ * <blockquote><pre>
+ * <strong>// Print out a number using the localized number, currency,
+ * // and percent format for each locale</strong>
+ * Locale[] locales = NumberFormat.getAvailableLocales();
+ * double myNumber = -1234.56;
+ * NumberFormat form;
+ * for (int j=0; j<3; ++j) {
+ *     System.out.println("FORMAT");
+ *     for (int i = 0; i < locales.length; ++i) {
+ *         if (locales[i].getCountry().length() == 0) {
+ *            // Skip language-only locales
+ *            continue;
+ *         }
+ *         System.out.print(locales[i].getDisplayName());
+ *         switch (j) {
+ *         case 0:
+ *             form = NumberFormat.getInstance(locales[i]); break;
+ *         case 1:
+ *             form = NumberFormat.getCurrencyInstance(locales[i]); break;
+ *         default:
+ *             form = NumberFormat.getPercentInstance(locales[i]); break;
+ *         }
+ *         try {
+ *             // Assume form is a DecimalFormat
+ *             System.out.print(": " + ((DecimalFormat) form).toPattern()
+ *                              + " -> " + form.format(myNumber));
+ *         } catch (IllegalArgumentException e) {}
+ *         try {
+ *             System.out.println(" -> " + form.parse(form.format(myNumber)));
+ *         } catch (ParseException e) {}
+ *     }
+ * }
+ * </pre></blockquote>
+ *
+ * <p><strong>Notes</strong>
+ *
+ * <p>A <code>DecimalFormat</code> pattern contains a postive and negative
+ * subpattern, for example, "#,##0.00;(#,##0.00)".  Each subpattern has a
+ * prefix, numeric part, and suffix.  If there is no explicit negative
+ * subpattern, the localized minus sign, typically '-', is prefixed to the
+ * positive form. That is, "0.00" alone is equivalent to "0.00;-0.00".  If there
+ * is an explicit negative subpattern, it serves only to specify the negative
+ * prefix and suffix; the number of digits, minimal digits, and other
+ * characteristics are all the same as the positive pattern. That means that
+ * "#,##0.0#;(#)" has precisely the same result as "#,##0.0#;(#,##0.0#)".
+ *
+ * <p>The prefixes, suffixes, and various symbols used for infinity, digits,
+ * thousands separators, decimal separators, etc. may be set to arbitrary
+ * values, and they will appear properly during formatting.  However, care must
+ * be taken that the symbols and strings do not conflict, or parsing will be
+ * unreliable.  For example, either the positive and negative prefixes or the
+ * suffixes must be distinct for <code>DecimalFormat.parse()</code> to be able
+ * to distinguish positive from negative values.  Another example is that the
+ * decimal separator and thousands separator should be distinct characters, or
+ * parsing will be impossible.
+ *
+ * <p>The grouping separator is commonly used for thousands, but in some
+ * countries it separates ten-thousands. The grouping size is a constant number
+ * of digits between the grouping characters, such as 3 for 100,000,000 or 4 for
+ * 1,0000,0000.
+ * If you supply a pattern with multiple grouping characters, the interval
+ * between the last one and the end of the integer determines the primary
+ * grouping size, and the interval between the last two determines
+ * the secondary grouping size (see below); all others are ignored.
+ * So "#,##,###,####" == "###,###,####" == "##,#,###,####".
+ *
+ * <P>Some locales have two different grouping intervals:  One used for the
+ * least significant integer digits (the primary grouping size), and
+ * one used for all others (the secondary grouping size).  For example,
+ * if the primary grouping interval is 3, and the secondary is 2, then
+ * this corresponds to the pattern "#,##,##0", and the number 123456789
+ * is formatted as "12,34,56,789".
+ *
+ * <p><code>DecimalFormat</code> parses all Unicode characters that represent
+ * decimal digits, as defined by <code>Character.digit()</code>.  In addition,
+ * <code>DecimalFormat</code> also recognizes as digits the ten consecutive
+ * characters starting with the localized zero digit defined in the
+ * <code>DecimalFormatSymbols</code> object.  During formatting, the
+ * <code>DecimalFormatSymbols</code>-based digits are output.
+ *
+ * <p>Illegal patterns, such as "#.#.#" or "#.###,###", will cause
+ * <code>DecimalFormat</code> to throw an <code>IllegalArgumentException</code>
+ * with a message that describes the problem.
+ *
+ * <p>If <code>DecimalFormat.parse(String, ParsePosition)</code> fails to parse
+ * a string, it returns <code>null</code> and leaves the parse position
+ * unchanged.  The convenience method <code>DecimalFormat.parse(String)</code>
+ * indicates parse failure by throwing a <code>ParseException</code>.
+ *
+ * <p><strong>Special Cases</strong>
+ *
+ * <p><code>NaN</code> is formatted as a single character, typically
+ * <code>&#92;uFFFD</code>.  This character is determined by the
+ * <code>DecimalFormatSymbols</code> object.  This is the only value for which
+ * the prefixes and suffixes are not used.
+ *
+ * <p>Infinity is formatted as a single character, typically
+ * <code>&#92;u221E</code>, with the positive or negative prefixes and suffixes
+ * applied.  The infinity character is determined by the
+ * <code>DecimalFormatSymbols</code> object.
+ *
+ * <p>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * <strong>Scientific Notation</strong>
+ *
+ * <p>Numbers in scientific notation are expressed as the product of a mantissa
+ * and a power of ten, for example, 1234 can be expressed as 1.234 x 10^3.  The
+ * mantissa is often in the range 1.0 <= x < 10.0, but it need not be.
+ * <code>DecimalFormat</code> can be instructed to format and parse scientific
+ * notation through the API or via a pattern.  In a pattern, the exponent
+ * character immediately followed by one or more digit characters indicates
+ * scientific notation.  Example: "0.###E0" formats the number 1234 as
+ * "1.234E3".
+ *
+ * <ul>
+ * <li>The number of digit characters after the exponent character gives the
+ * minimum exponent digit count.  There is no maximum.  Negative exponents are
+ * formatted using the localized minus sign, <em>not</em> the prefix and suffix
+ * from the pattern.  This allows patterns such as "0.###E0 m/s".  To prefix
+ * positive exponents with a localized plus sign, specify '+' between the
+ * exponent and the digits: "0.###E+0" will produce formats "1E+1", "1E+0",
+ * "1E-1", etc.  (In localized patterns, use the localized plus sign rather than
+ * '+'.)
+ *
+ * <li>The minimum number of integer digits is achieved by adjusting the
+ * exponent.  Example: 0.00123 formatted with "00.###E0" yields "12.3E-4".  This
+ * only happens if there is no maximum number of integer digits.  If there is a
+ * maximum, then the minimum number of integer digits is fixed at one.
+ *
+ * <li>The maximum number of integer digits, if present, specifies the exponent
+ * grouping.  The most common use of this is to generate <em>engineering
+ * notation</em>, in which the exponent is a multiple of three, e.g.,
+ * "##0.###E0".  The number 12345 is formatted using "##0.####E0" as "12.345E3".
+ *
+ * <li>The number of significant digits is the sum of the <em>minimum
+ * integer</em> and <em>maximum fraction</em> digits, and is unaffected by the
+ * maximum integer digits.  If this sum is zero, then all significant digits are
+ * shown.  The number of significant digits limits the total number of integer
+ * and fraction digits that will be shown in the mantissa; it does not affect
+ * parsing.  For example, 12345 formatted with "##0.##E0" is "12.3E3".
+ *
+ * <li>Exponential patterns may not contain grouping separators.
+ * </ul>
+ *
+ * <p>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * <strong>Padding</strong>
+ *
+ * <p><code>DecimalFormat</code> supports padding the result of
+ * <code>format()</code> to a specific width.  Padding may be specified either
+ * through the API or through the pattern syntax.  In a pattern the pad escape
+ * character, followed by a single pad character, causes padding to be parsed
+ * and formatted.  The pad escape character is '*' in unlocalized patterns, and
+ * can be localized using <code>DecimalFormatSymbols.setPadEscape()</code>.  For
+ * example, <code>"$*x#,##0.00"</code> formats 123 to <code>"$xx123.00"</code>,
+ * and 1234 to <code>"$1,234.00"</code>.
+ *
+ * <ul>
+ * <li>When padding is in effect, the width of the positive subpattern,
+ * including prefix and suffix, determines the format width.  For example, in
+ * the pattern <code>"* #0 o''clock"</code>, the format width is 10.
+ *
+ * <li>Some parameters which usually do not matter have meaning when padding is
+ * used, because the pattern width is significant with padding.  In the pattern
+ * "^ ##,##,#,##0.##", the format width is 14.  The initial characters "##,##,"
+ * do not affect the grouping size or maximum integer digits, but they do affect
+ * the format width.
+ *
+ * <li>Padding may be inserted at one of four locations: before the prefix,
+ * after the prefix, before the suffix, or after the suffix.  If padding is
+ * specified in any other location, <code>DecimalFormat.applyPattern()</code>
+ * throws an <code>IllegalArgumentException</code>.  If there is no prefix,
+ * before the prefix and after the prefix are equivalent, likewise for the
+ * suffix.
+ *
+ * <li>The pad character may not be a quote.
+ * </ul>
+ *
+ * <p>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * <strong>Rounding</strong>
+ *
+ * <p><code>DecimalFormat</code> supports rounding to a specific increment.  For
+ * example, 1230 rounded to the nearest 50 is 1250.  1.234 rounded to the
+ * nearest 0.65 is 1.3.  The rounding increment may be specified through the API
+ * or in a pattern.  To specify a rounding increment in a pattern, include the
+ * increment in the pattern itself.  "#,#50" specifies a rounding increment of
+ * 50.  "#,##0.05" specifies a rounding increment of 0.05.
+ *
+ * <ul>
+ * <li>Rounding only affects the string produced by formatting.  It does
+ * not affect parsing or change any numerical values.
+ *
+ * <li>A <em>rounding mode</em> determines how values are rounded; see the
+ * <code>java.math.BigDecimal</code> documentation for a description of the
+ * modes.  Rounding increments specified in patterns use the default mode,
+ * <code>ROUND_HALF_EVEN</code>.
+ *
+ * <li>Some locales use rounding in their currency formats to reflect the
+ * smallest currency denomination.
+ *
+ * <li>In a pattern, digits '1' through '9' specify rounding, but otherwise
+ * behave identically to digit '0'.
+ * </ul>
+ *
+ * <p><strong>Pattern Syntax</strong>
+ * <pre>
+ * pattern    := subpattern{';' subpattern}
+ * subpattern := {prefix}number{suffix}
+ * number     := integer{'.' fraction}{exponent}
+ * prefix     := '&#92;u0000'..'&#92;uFFFD' - specialCharacters
+ * suffix     := '&#92;u0000'..'&#92;uFFFD' - specialCharacters
+ * integer    := '#'* '0'* '0'
+ * fraction   := '0'* '#'*
+ * exponent   := 'E' {'+'} '0'* '0'
+ * padSpec    := '*' padChar
+ * padChar    := '&#92;u0000'..'&#92;uFFFD' - quote
+ * &#32;
+ * Notation:
+ *   X*       0 or more instances of X
+ *   { X }    0 or 1 instances of X
+ *   X..Y     any character from X up to Y, inclusive
+ *   S - T    characters in S, except those in T
+ * </pre>
+ * The first subpattern is for positive numbers. The second (optional)
+ * subpattern is for negative numbers.
+ * 
+ * <p>Not indicated in the BNF syntax above:
+ * <ul><li>The grouping separator ',' can occur inside the integer portion between the
+ * most significant digit and the least significant digit.
+ *
+ * <li><font color=red face=helvetica><strong>NEW</strong></font>
+ *     Two grouping intervals are recognized: That between the
+ *     decimal point and the first grouping symbol, and that
+ *     between the first and second grouping symbols. These
+ *     intervals are identical in most locales, but in some
+ *     locales they differ. For example, the pattern
+ *     &quot;#,##,###&quot; formats the number 123456789 as
+ *     &quot;12,34,56,789&quot;.</li>
+ * 
+ * <li>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * The pad specifier <code>padSpec</code> may appear before the prefix,
+ * after the prefix, before the suffix, after the suffix, or not at all.
+ *
+ * <li>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * In place of '0', the digits '1' through '9' may be used to
+ * indicate a rounding increment.
+ * </ul>
+ *
+ * <p><strong>Special Pattern Characters</strong>
+ *
+ * <p>Here are the special characters used in the pattern, with notes on their
+ * usage.  Special characters must be quoted, unless noted otherwise, if they
+ * are to appear in the prefix or suffix.  This does not apply to those listed
+ * with location "prefix or suffix."  Such characters should only be quoted in
+ * order to remove their special meaning.
+ *
+ * <p><table border=1>
+ * <tr><th>Symbol<th>Location<th>Meaning</tr>
+ * <tr><td>0-9<td>Number<td>Digit.
+ *                  <strong><font face=helvetica color=red>NEW</font></strong>
+ *                  '1' through '9' indicate rounding</tr>
+ * <tr><td>#<td>Number<td>Digit, zero shows as absent</tr>
+ * <tr><td>.<td>Number<td>Decimal separator or monetary decimal separator</tr>
+ * <tr><td>,<td>Number<td>Grouping separator</tr>
+ * <tr><td>E<td>Number
+ *          <td>Separates mantissa and exponent in scientific notation.
+ *              <em>Need not be quoted in prefix or suffix.</em></tr>
+ * <tr><td><strong><font face=helvetica color=red>NEW</font></strong>
+ *         +<td>Exponent
+ *          <td>Prefix positive exponents with localized plus sign.
+ *              <em>Need not be quoted in prefix or suffix.</em></tr>
+ * <tr><td>;<td>Subpattern boundary
+ *          <td>Separates positive and negative subpatterns</tr>
+ * <tr><td>%<td>Prefix or suffix<td>Multiply by 100 and show as percentage</tr>
+ * <tr><td>&#92;u2030<td>Prefix or suffix
+ *                   <td>Multiply by 1000 and show as per mille</tr>
+ * <tr><td>&#92;u00A4<td>Prefix or suffix
+ *                   <td>Currency sign, replaced by currency symbol.  If
+ *                   doubled, replaced by international currency symbol.
+ *                   If present in a pattern, the monetary decimal separator
+ *                   is used instead of the decimal separator.</tr>
+ * <tr><td>'<td>Prefix or suffix
+ *          <td>Used to quote special characters in a prefix or suffix,
+ *              for example, <code>"'#'#"</code> formats 123 to
+ *              <code>"#123"</code>.  To create a single quote
+ *              itself, use two in a row: <code>"# o''clock"</code>.</tr>
+ * <tr><td><strong><font face=helvetica color=red>NEW</font></strong>
+ *         *<td>Prefix or suffix boundary
+ *          <td>Pad escape, precedes pad character</tr>
+ * </table>
+ * </pre>
+ *
+ *
+ * @see          java.text.Format
+ * @see          NumberFormat
+ * @version      1.48 09/21/98
+ * @author       Mark Davis
+ * @author       Alan Liu
+ * */
+public class DecimalFormat extends NumberFormat {
+
+    /**
+     * Create a DecimalFormat using the default pattern and symbols
+     * for the default locale. This is a convenient way to obtain a
+     * DecimalFormat when internationalization is not the main concern.
+     * <p>
+     * To obtain standard formats for a given locale, use the factory methods
+     * on NumberFormat such as getNumberInstance. These factories will
+     * return the most appropriate sub-class of NumberFormat for a given
+     * locale.
+     * @see NumberFormat#getInstance
+     * @see NumberFormat#getNumberInstance
+     * @see NumberFormat#getCurrencyInstance
+     * @see NumberFormat#getPercentInstance
+     */
+    public DecimalFormat() {
+        // [NEW]
+        Locale def = Locale.getDefault();
+        String pattern = getPattern(def, 0);
+        // Always applyPattern after the symbols are set
+        this.symbols = new DecimalFormatSymbols(def);
+        currency = Currency.getInstance(def);
+        applyPattern(pattern, false);
+    }
+
+
+    /**
+     * Create a DecimalFormat from the given pattern and the symbols
+     * for the default locale. This is a convenient way to obtain a
+     * DecimalFormat when internationalization is not the main concern.
+     * <p>
+     * To obtain standard formats for a given locale, use the factory methods
+     * on NumberFormat such as getNumberInstance. These factories will
+     * return the most appropriate sub-class of NumberFormat for a given
+     * locale.
+     * @param pattern A non-localized pattern string.
+     * @exception IllegalArgumentException if the given pattern is invalid.
+     * @see NumberFormat#getInstance
+     * @see NumberFormat#getNumberInstance
+     * @see NumberFormat#getCurrencyInstance
+     * @see NumberFormat#getPercentInstance
+     */
+    public DecimalFormat(String pattern) {
+    // Always applyPattern after the symbols are set
+        Locale def = Locale.getDefault();
+        this.symbols = new DecimalFormatSymbols(def);
+        currency = Currency.getInstance(def);
+        applyPattern( pattern, false );
+    }
+
+
+    /**
+     * Create a DecimalFormat from the given pattern and symbols.
+     * Use this constructor when you need to completely customize the
+     * behavior of the format.
+     * <p>
+     * To obtain standard formats for a given
+     * locale, use the factory methods on NumberFormat such as
+     * getInstance or getCurrencyInstance. If you need only minor adjustments
+     * to a standard format, you can modify the format returned by
+     * a NumberFormat factory method.
+     * @param pattern a non-localized pattern string
+     * @param symbols the set of symbols to be used
+     * @exception IllegalArgumentException if the given pattern is invalid
+     * @see NumberFormat#getInstance
+     * @see NumberFormat#getNumberInstance
+     * @see NumberFormat#getCurrencyInstance
+     * @see NumberFormat#getPercentInstance
+     * @see DecimalFormatSymbols
+     */
+    public DecimalFormat (String pattern, DecimalFormatSymbols symbols) {
+        // Always applyPattern after the symbols are set
+        this.symbols = (DecimalFormatSymbols) symbols.clone();
+        setCurrencyForSymbols();
+        applyPattern( pattern, false );
+    }
+
+
+    // Overrides
+    public StringBuffer format(double number, StringBuffer result,
+                               FieldPosition fieldPosition)
+    {
+        //FP:fieldPosition.setBeginIndex(0);
+        //FP:fieldPosition.setEndIndex(0);
+
+        if (Double.isNaN(number))
+        {
+            //FP:if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+            //FP:fieldPosition.setBeginIndex(result.length());
+
+            result.append(symbols.getNaN());
+
+            //FP:if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+            //FP:fieldPosition.setEndIndex(result.length());
+
+            addPadding(result, false, false /*ignored*/);
+            return result;
+        }
+
+        /* Detecting whether a double is negative is easy with the exception of
+         * the value -0.0.  This is a double which has a zero mantissa (and
+         * exponent), but a negative sign bit.  It is semantically distinct from
+         * a zero with a positive sign bit, and this distinction is important
+         * to certain kinds of computations.  However, it's a little tricky to
+         * detect, since (-0.0 == 0.0) and !(-0.0 < 0.0).  How then, you may
+         * ask, does it behave distinctly from +0.0?  Well, 1/(-0.0) ==
+         * -Infinity.  Proper detection of -0.0 is needed to deal with the
+         * issues raised by bugs 4106658, 4106667, and 4147706.  Liu 7/6/98.
+         */
+        boolean isNegative = (number < 0.0) || (number == 0.0 && 1/number < 0.0);
+        if (isNegative) number = -number;
+
+        // Do this BEFORE checking to see if value is infinite!
+        if (multiplier != 1) number *= multiplier;
+
+        // Apply rounding after multiplier
+        if (roundingDouble > 0.0) {
+            number = roundingDouble
+                * round(number / roundingDouble, roundingMode, isNegative);
+        }
+
+        if (Double.isInfinite(number))
+        {
+            result.append(isNegative ? negativePrefix : positivePrefix);
+
+            //FP:if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+            //FP:fieldPosition.setBeginIndex(result.length());
+
+            result.append(symbols.getInfinity());
+
+            //FP:if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+            //FP:eydfieldPosition.setEndIndex(result.length());
+
+            result.append(isNegative ? negativeSuffix : positiveSuffix);
+
+            addPadding(result, true, isNegative);
+            return result;
+        }
+
+        // At this point we are guaranteed a nonnegative finite
+        // number.
+        synchronized(digitList) {
+            digitList.set(number, useExponentialNotation ?
+                      getMinimumIntegerDigits() + getMaximumFractionDigits() :
+                      getMaximumFractionDigits(),
+                      !useExponentialNotation);
+
+            return subformat(result, fieldPosition, isNegative, false);
+        }
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Round a double value to the nearest integer according to the
+     * given mode.
+     * @param a the absolute value of the number to be rounded
+     * @param mode a BigDecimal rounding mode
+     * @param isNegative true if the number to be rounded is negative
+     * @return the absolute value of the rounded result
+     */
+    private static double round(double a, int mode, boolean isNegative) {
+        switch (mode) {
+        case java.math.BigDecimal.ROUND_CEILING:
+            return isNegative ? Math.floor(a) : Math.ceil(a);
+        case java.math.BigDecimal.ROUND_FLOOR:
+            return isNegative ? Math.ceil(a) : Math.floor(a);
+        case java.math.BigDecimal.ROUND_DOWN:
+            return Math.floor(a);
+        case java.math.BigDecimal.ROUND_UP:
+            return Math.ceil(a);
+        case java.math.BigDecimal.ROUND_HALF_EVEN:
+            // We should be able to just return Math.rint(a), but this
+            // doesn't work in some VMs.
+            {
+                double f = Math.floor(a);
+                if ((a - f) != 0.5) {
+                    return Math.rint(a);
+                }
+                f /= 2.0;
+                return f == Math.floor(f) ? Math.floor(a) : (Math.floor(a) + 1.0);
+            }
+        case java.math.BigDecimal.ROUND_HALF_DOWN:
+            return ((a - Math.floor(a)) <= 0.5) ? Math.floor(a) : Math.ceil(a);
+        case java.math.BigDecimal.ROUND_HALF_UP:
+            return ((a - Math.floor(a)) < 0.5) ? Math.floor(a) : Math.ceil(a);
+        case java.math.BigDecimal.ROUND_UNNECESSARY:
+            if (a != Math.floor(a)) {
+                throw new ArithmeticException("Rounding necessary");
+            }
+            return a;
+        default:
+            throw new IllegalArgumentException("Invalid rounding mode: " + mode);
+        }
+    }
+
+    public StringBuffer format(long number, StringBuffer result,
+                               FieldPosition fieldPosition)
+    {
+        //FP:fieldPosition.setBeginIndex(0);
+        //FP:fieldPosition.setEndIndex(0);
+
+        // If we are to do rounding, we need to move into the BigDecimal
+        // domain in order to do divide/multiply correctly.
+        // [NEW]
+        if (roundingIncrement != null) {
+            return format(java.math.BigDecimal.valueOf(number), result, fieldPosition);
+        }
+
+        boolean isNegative = (number < 0);
+        if (isNegative) number = -number;
+
+        // In general, long values always represent real finite numbers, so
+        // we don't have to check for +/- Infinity or NaN.  However, there
+        // is one case we have to be careful of:  The multiplier can push
+        // a number near MIN_VALUE or MAX_VALUE outside the legal range.  We
+        // check for this before multiplying, and if it happens we use BigInteger
+        // instead.
+        // [NEW]
+        if (multiplier != 1) {
+            boolean tooBig = false;
+            if (number < 0) { // This can only happen if number == Long.MIN_VALUE
+                long cutoff = Long.MIN_VALUE / multiplier;
+                tooBig = (number < cutoff);
+            } else {
+                long cutoff = Long.MAX_VALUE / multiplier;
+                tooBig = (number > cutoff);
+            }
+            if (tooBig) {
+                return format(BigInteger.valueOf(isNegative ? -number : number),
+                              result, fieldPosition);
+            }
+        }
+
+        number *= multiplier;
+        synchronized(digitList) {
+            digitList.set(number, useExponentialNotation ?
+                          getMinimumIntegerDigits() + getMaximumFractionDigits() : 0);
+
+            return subformat(result, fieldPosition, isNegative, true);
+        }
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Format a BigInteger number.
+     */
+    public StringBuffer format(BigInteger number, StringBuffer result,
+                               FieldPosition fieldPosition) {
+        // If we are to do rounding, we need to move into the BigDecimal
+        // domain in order to do divide/multiply correctly.
+        if (roundingIncrement != null) {
+            return format(new java.math.BigDecimal(number), result, fieldPosition);
+        }
+
+        if (multiplier != 1) {
+            number = number.multiply(BigInteger.valueOf(multiplier));
+        }
+
+        // At this point we are guaranteed a nonnegative finite
+        // number.
+        synchronized(digitList) {
+            digitList.set(number, useExponentialNotation ?
+                          getMinimumIntegerDigits() + getMaximumFractionDigits() : 0);
+
+            return subformat(result, fieldPosition, number.signum() < 0, false);
+        }
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Format a BigDecimal number.
+     */
+    public StringBuffer format(java.math.BigDecimal number, StringBuffer result,
+                               FieldPosition fieldPosition) {
+        if (multiplier != 1) {
+            number = number.multiply(java.math.BigDecimal.valueOf(multiplier));
+        }
+
+        if (roundingIncrement != null) {
+            number = number.divide(roundingIncrement, 0, roundingMode)
+                    .multiply(roundingIncrement);
+        }
+
+        // At this point we are guaranteed a nonnegative finite
+        // number.
+        synchronized(digitList) {
+            digitList.set(number, useExponentialNotation ?
+                      getMinimumIntegerDigits() + getMaximumFractionDigits() :
+                      getMaximumFractionDigits(),
+                      !useExponentialNotation);
+            return subformat(result, fieldPosition, number.signum() < 0, false);
+        }        
+    }
+
+    //This has been removed pending addition of com.ibm.icu.math package to ICU4J
+    /*
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Format a BigDecimal number.
+     */
+    public StringBuffer format(com.ibm.icu.math.BigDecimal number, StringBuffer result,
+                               FieldPosition fieldPosition) {
+        /* This method is just a copy of the corresponding java.math.BigDecimal
+         * method for now.  It isn't very efficient since it must create a
+         * conversion object to do math on the rounding increment.  In the
+         * future we may try to clean this up, or even better, limit our support
+         * to just one flavor of BigDecimal.
+         */
+        if (multiplier != 1) {
+            number = number.multiply(com.ibm.icu.math.BigDecimal.valueOf(multiplier));
+        }
+
+        if (roundingIncrement != null) {
+            com.ibm.icu.math.BigDecimal ri = new com.ibm.icu.math.BigDecimal(roundingIncrement);
+            number = number.divide(ri, 0, roundingMode)
+                    .multiply(ri);
+        }
+
+        // At this point we are guaranteed a nonnegative finite
+        // number.
+        synchronized(digitList) {
+            digitList.set(number, useExponentialNotation ?
+                      getMinimumIntegerDigits() + getMaximumFractionDigits() :
+                      getMaximumFractionDigits(),
+                      !useExponentialNotation);
+            return subformat(result, fieldPosition, number.signum() < 0, false);
+        }        
+    }
+
+    /**
+     * Return true if a grouping separator belongs at the given
+     * position, based on whether grouping is in use and the values of
+     * the primary and secondary grouping interval.
+     * @param pos the number of integer digits to the right of
+     * the current position.  Zero indicates the position after the
+     * rightmost integer digit.
+     * @return true if a grouping character belongs at the current
+     * position.
+     */
+    private boolean isGroupingPosition(int pos) {
+        boolean result = false;
+        if (isGroupingUsed() && (pos > 0) && (groupingSize > 0)) {
+            if ((groupingSize2 > 0) && (pos > groupingSize)) {
+                result = ((pos - groupingSize) % groupingSize2) == 0;
+            } else {
+                result = pos % groupingSize == 0;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Complete the formatting of a finite number.  On entry, the digitList must
+     * be filled in with the correct digits.
+     */
+    private StringBuffer subformat(StringBuffer result, FieldPosition fieldPosition,
+                   boolean isNegative, boolean isInteger)
+    {
+        // NOTE: This isn't required anymore because DigitList takes care of this.
+        //
+        //  // The negative of the exponent represents the number of leading
+        //  // zeros between the decimal and the first non-zero digit, for
+        //  // a value < 0.1 (e.g., for 0.00123, -fExponent == 2).  If this
+        //  // is more than the maximum fraction digits, then we have an underflow
+        //  // for the printed representation.  We recognize this here and set
+        //  // the DigitList representation to zero in this situation.
+        //
+        //  if (-digitList.decimalAt >= getMaximumFractionDigits())
+        //  {
+        //      digitList.count = 0;
+        //  }
+
+        int i;
+        char zero = symbols.getZeroDigit();
+        int zeroDelta = zero - '0'; // '0' is the DigitList representation of zero
+        char grouping = symbols.getGroupingSeparator();
+        char decimal = isCurrencyFormat ?
+            symbols.getMonetaryDecimalSeparator() :
+            symbols.getDecimalSeparator();
+        int maxIntDig = getMaximumIntegerDigits();
+        int minIntDig = getMinimumIntegerDigits();
+
+        /* Per bug 4147706, DecimalFormat must respect the sign of numbers which
+         * format as zero.  This allows sensible computations and preserves
+         * relations such as signum(1/x) = signum(x), where x is +Infinity or
+         * -Infinity.  Prior to this fix, we always formatted zero values as if
+         * they were positive.  Liu 7/6/98.
+         */
+        if (digitList.isZero())
+        {
+            digitList.decimalAt = 0; // Normalize
+        }
+
+        result.append(isNegative ? negativePrefix : positivePrefix);
+
+        if (useExponentialNotation)
+        {
+            // Record field information for caller.
+            //FP:if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+            //FP:{
+                //FP:fieldPosition.setBeginIndex(result.length());
+                //FP:fieldPosition.setEndIndex(-1);
+            //FP:}
+            //FP:else if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD)
+            //FP:{
+                //FP:fieldPosition.setBeginIndex(-1);
+            //FP:}
+
+            // Minimum integer digits are handled in exponential format by
+            // adjusting the exponent.  For example, 0.01234 with 3 minimum
+            // integer digits is "123.4E-4".
+
+            // Maximum integer digits are interpreted as indicating the
+            // repeating range.  This is useful for engineering notation, in
+            // which the exponent is restricted to a multiple of 3.  For
+            // example, 0.01234 with 3 maximum integer digits is "12.34e-3".
+            // If maximum integer digits are defined and are larger than
+            // minimum integer digits, then minimum integer digits are
+            // ignored.
+
+            int exponent = digitList.decimalAt;
+            if (maxIntDig > 1 && maxIntDig != minIntDig) {
+                // A exponent increment is defined; adjust to it.
+                exponent = (exponent > 0) ? (exponent - 1) / maxIntDig
+                                          : (exponent / maxIntDig) - 1;
+                exponent *= maxIntDig;
+            } else {
+                // No exponent increment is defined; use minimum integer digits.
+                // If none is specified, as in "#E0", generate 1 integer digit.
+                exponent -= (minIntDig > 0 || getMinimumFractionDigits() > 0)
+                    ? minIntDig : 1;
+            }
+
+            // We now output a minimum number of digits, and more if there
+            // are more digits, up to the maximum number of digits.  We
+            // place the decimal point after the "integer" digits, which
+            // are the first (decimalAt - exponent) digits.
+            int minimumDigits = minIntDig
+                                + getMinimumFractionDigits();
+            // The number of integer digits is handled specially if the number
+            // is zero, since then there may be no digits.
+            int integerDigits = digitList.isZero() ? minIntDig :
+                digitList.decimalAt - exponent;
+            int totalDigits = digitList.count;
+            if (minimumDigits > totalDigits) totalDigits = minimumDigits;
+            if (integerDigits > totalDigits) totalDigits = integerDigits;
+
+            for (i=0; i<totalDigits; ++i)
+            {
+                if (i == integerDigits)
+                {
+                    // Record field information for caller.
+                    //FP:if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+                    //FP:fieldPosition.setEndIndex(result.length());
+
+                    result.append(decimal);
+
+                    // Record field information for caller.
+                    //FP:if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD)
+                    //FP:fieldPosition.setBeginIndex(result.length());
+                }
+                result.append((i < digitList.count) ?
+                          (char)(digitList.digits[i] + zeroDelta) :
+                          zero);
+            }
+            
+            //For ICU compatibility and format 0 to 0E0 with pattern "#E0" [Richard/GCL]
+            if (digitList.isZero() && (totalDigits ==0)) {
+                result.append(zero);
+            }
+
+            // Record field information
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+            {
+                //FP:if (fieldPosition.getEndIndex() < 0)
+                //FP:fieldPosition.setEndIndex(result.length());
+            }
+            else if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD)
+            {
+                //FP:if (fieldPosition.getBeginIndex() < 0)
+                //FP:fieldPosition.setBeginIndex(result.length());
+                //FP:fieldPosition.setEndIndex(result.length());
+            }
+
+            // The exponent is output using the pattern-specified minimum
+            // exponent digits.  There is no maximum limit to the exponent
+            // digits, since truncating the exponent would result in an
+            // unacceptable inaccuracy.
+            result.append(symbols.getExponentSeparator());
+
+            // For zero values, we force the exponent to zero.  We
+            // must do this here, and not earlier, because the value
+            // is used to determine integer digit count above.
+            if (digitList.isZero()) exponent = 0;
+
+            boolean negativeExponent = exponent < 0;
+            if (negativeExponent) {
+                exponent = -exponent;
+                result.append(symbols.getMinusSign());
+            } else if (exponentSignAlwaysShown) {
+                result.append(symbols.getPlusSign());
+            }
+            digitList.set(exponent);
+            for (i=digitList.decimalAt; i<minExponentDigits; ++i) result.append(zero);
+            for (i=0; i<digitList.decimalAt; ++i)
+            {
+                result.append((i < digitList.count) ?
+                          (char)(digitList.digits[i] + zeroDelta) : zero);
+            }
+        }
+        else
+        {
+            // Record field information for caller.
+            //FP:if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+            //FP:fieldPosition.setBeginIndex(result.length());
+
+            // Output the integer portion.  Here 'count' is the total
+            // number of integer digits we will display, including both
+            // leading zeros required to satisfy getMinimumIntegerDigits,
+            // and actual digits present in the number.
+            int count = minIntDig;
+            int digitIndex = 0; // Index into digitList.fDigits[]
+            if (digitList.decimalAt > 0 && count < digitList.decimalAt)
+                count = digitList.decimalAt;
+
+            // Handle the case where getMaximumIntegerDigits() is smaller
+            // than the real number of integer digits.  If this is so, we
+            // output the least significant max integer digits.  For example,
+            // the value 1997 printed with 2 max integer digits is just "97".
+
+            if (count > maxIntDig)
+            {
+                count = maxIntDig;
+                digitIndex = digitList.decimalAt - count;
+            }
+
+            int sizeBeforeIntegerPart = result.length();
+            for (i=count-1; i>=0; --i)
+            {
+                if (i < digitList.decimalAt && digitIndex < digitList.count)
+                {
+                    // Output a real digit
+                    result.append((char)(digitList.digits[digitIndex++] + zeroDelta));
+                }
+                else
+                {
+                    // Output a leading zero
+                    result.append(zero);
+                }
+
+                // Output grouping separator if necessary.
+                if (isGroupingPosition(i)) {
+                    result.append(grouping);
+                }
+            }
+
+            // Record field information for caller.
+            //FP:if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+            //FP:fieldPosition.setEndIndex(result.length());
+
+            // Determine whether or not there are any printable fractional
+            // digits.  If we've used up the digits we know there aren't.
+            boolean fractionPresent = (getMinimumFractionDigits() > 0) ||
+            (!isInteger && digitIndex < digitList.count);
+
+            // If there is no fraction present, and we haven't printed any
+            // integer digits, then print a zero.  Otherwise we won't print
+            // _any_ digits, and we won't be able to parse this string.
+            if (!fractionPresent && result.length() == sizeBeforeIntegerPart)
+                result.append(zero);
+
+            // Output the decimal separator if we always do so.
+            if (decimalSeparatorAlwaysShown || fractionPresent)
+                result.append(decimal);
+
+            // Record field information for caller.
+            //FP:if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD)
+            //FP:fieldPosition.setBeginIndex(result.length());
+
+            for (i=0; i < getMaximumFractionDigits(); ++i)
+            {
+                // Here is where we escape from the loop.  We escape if we've output
+                // the maximum fraction digits (specified in the for expression above).
+                // We also stop when we've output the minimum digits and either:
+                // we have an integer, so there is no fractional stuff to display,
+                // or we're out of significant digits.
+                if (i >= getMinimumFractionDigits() &&
+                    (isInteger || digitIndex >= digitList.count))
+                    break;
+
+                // Output leading fractional zeros.  These are zeros that come after
+                // the decimal but before any significant digits.  These are only
+                // output if abs(number being formatted) < 1.0.
+                if (-1-i > (digitList.decimalAt-1))
+                {
+                    result.append(zero);
+                    continue;
+                }
+
+                // Output a digit, if we have any precision left, or a
+                // zero if we don't.  We don't want to output noise digits.
+                if (!isInteger && digitIndex < digitList.count)
+                {
+                    result.append((char)(digitList.digits[digitIndex++] + zeroDelta));
+                }
+                else
+                {
+                    result.append(zero);
+                }
+            }
+
+            // Record field information for caller.
+            //FP:if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD)
+            //FP:fieldPosition.setEndIndex(result.length());
+        }
+
+        result.append(isNegative ? negativeSuffix : positiveSuffix);
+
+        // [NEW]
+        addPadding(result, true, isNegative);
+        return result;
+    }
+
+    // [NEW]
+    private final void addPadding(StringBuffer result, boolean hasAffixes,
+                                  boolean isNegative) {
+        if (formatWidth > 0) {
+            int len = formatWidth - result.length();
+            if (len > 0) {
+                char[] padding = new char[len];
+                for (int i=0; i<len; ++i) {
+                    padding[i] = pad;
+                }
+                switch (padPosition) {
+                case PAD_AFTER_PREFIX:
+                    if (hasAffixes) {
+                        result.insert(isNegative ? negativePrefix.length()
+                                      : positivePrefix.length(),
+                                      padding);
+                        break;
+                    } // else fall through to next case
+                case PAD_BEFORE_PREFIX:
+                    result.insert(0, padding);
+                    break;
+                case PAD_BEFORE_SUFFIX:
+                    if (hasAffixes) {
+                        result.insert(result.length() -
+                                      (isNegative ? negativeSuffix.length()
+                                       : positiveSuffix.length()),
+                                      padding);
+                        break;
+                    } // else fall through to next case
+                case PAD_AFTER_SUFFIX:
+                    result.append(padding);
+                    break;
+                }
+            }
+        }
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Parse the given string, returning a <code>Number</code> object to
+     * represent the parsed value.  <code>Double</code> objects are returned to
+     * represent non-integral values which cannot be stored in a
+     * <code>BigDecimal</code>.  These are <code>NaN</code>, infinity,
+     * -infinity, and -0.0.  All other values are returned as <code>Long</code>,
+     * <code>BigInteger</code>, or <code>BigDecimal</code> values, in that order
+     * of preference.  If the parse fails, null is returned.
+     * @param text the string to be parsed
+     * @param parsePosition defines the position where parsing is to begin,
+     * and upon return, the position where parsing left off.  If the position
+     * has not changed upon return, then parsing failed.
+     * @return a <code>Number</code> object with the parsed value or
+     * <code>null</code> if the parse failed
+     */
+    public Number parse(String text, ParsePosition parsePosition)
+    {
+        // Skip padding characters, if any
+        int backup;
+        int i = backup = parsePosition.getIndex();
+        if (formatWidth > 0) {
+            while (i < text.length() && text.charAt(i) == pad) {
+                ++i;
+            }
+            parsePosition.setIndex(i);
+        }
+
+        // Handle NaN as a special case
+        if (text.regionMatches(parsePosition.getIndex(), symbols.getNaN(),
+                               0, symbols.getNaN().length())) {
+            parsePosition.setIndex(parsePosition.getIndex()
+                                   + symbols.getNaN().length());
+            return new Double(Double.NaN);
+        }
+
+        boolean[] status = new boolean[STATUS_LENGTH];
+        if (!subparse(text, parsePosition, digitList, false, status)) {
+            parsePosition.setIndex(backup);
+            return null;
+        } else if (formatWidth < 0) {
+            i = parsePosition.getIndex();
+            while (i < text.length() && text.charAt(i) == pad) {
+                ++i;
+            }
+            parsePosition.setIndex(i);
+        }
+
+        // Handle infinity
+        if (status[STATUS_INFINITE]) {
+            return new Double(status[STATUS_POSITIVE]
+                              ? Double.POSITIVE_INFINITY
+                              : Double.NEGATIVE_INFINITY);
+        }
+
+        // Handle -0.0
+        if (!status[STATUS_POSITIVE] && digitList.isZero()) {
+            return new Double(-0.0);
+        }
+
+        // Do as much of the multiplier conversion as possible without
+        // losing accuracy.
+        int mult = multiplier; // Don't modify this.multiplier
+        while (mult % 10 == 0) {
+            --digitList.decimalAt;
+            mult /= 10;
+        }
+
+        // Handle integral values
+        if (mult == 1 && digitList.isIntegral()) {
+            BigInteger n = digitList.getBigInteger(status[STATUS_POSITIVE]);
+            return (n.bitLength() < 64)
+                ? (Number) new Long(n.longValue()) 
+                : (Number) n;
+        }
+
+        // Handle non-integral values
+        java.math.BigDecimal n = digitList.getBigDecimal(status[STATUS_POSITIVE]);
+        if (mult != 1) {
+            n = n.divide(java.math.BigDecimal.valueOf(mult),
+                         java.math.BigDecimal.ROUND_HALF_EVEN);
+        }
+        return n;
+    }
+
+    private static final int STATUS_INFINITE = 0;
+    private static final int STATUS_POSITIVE = 1;
+    private static final int STATUS_LENGTH   = 2;
+
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Parse the given text into a number.  The text is parsed beginning at
+     * parsePosition, until an unparseable character is seen.
+     * @param text The string to parse.
+     * @param parsePosition The position at which to being parsing.  Upon
+     * return, the first unparseable character.
+     * @param digits The DigitList to set to the parsed value.
+     * @param isExponent If true, parse an exponent.  This means no
+     * infinite values and integer only.
+     * @param status Upon return contains boolean status flags indicating
+     * whether the value was infinite and whether it was positive.
+     */
+    private final boolean subparse(String text, ParsePosition parsePosition,
+                   DigitList digits, boolean isExponent,
+                   boolean status[])
+    {
+        int position = parsePosition.getIndex();
+        int oldStart = parsePosition.getIndex();
+        int backup;
+
+        // check for positivePrefix; take longest
+        boolean gotPositive = text.regionMatches(position,positivePrefix,0,
+                                                 positivePrefix.length());
+        boolean gotNegative = text.regionMatches(position,negativePrefix,0,
+                                                 negativePrefix.length());
+        if (gotPositive && gotNegative) {
+            if (positivePrefix.length() > negativePrefix.length())
+                gotNegative = false;
+            else if (positivePrefix.length() < negativePrefix.length())
+                gotPositive = false;
+        }
+        if (gotPositive) {
+            position += positivePrefix.length();
+        } else if (gotNegative) {
+            position += negativePrefix.length();
+        } else {
+            //PP:parsePosition.errorIndex = position;
+            return false;
+        }
+        // process digits or Inf, find decimal position
+        status[STATUS_INFINITE] = false;
+        if (!isExponent && text.regionMatches(position,symbols.getInfinity(),0,
+                          symbols.getInfinity().length()))
+        {
+            position += symbols.getInfinity().length();
+            status[STATUS_INFINITE] = true;
+        } else {
+            // We now have a string of digits, possibly with grouping symbols,
+            // and decimal points.  We want to process these into a DigitList.
+            // We don't want to put a bunch of leading zeros into the DigitList
+            // though, so we keep track of the location of the decimal point,
+            // put only significant digits into the DigitList, and adjust the
+            // exponent as needed.
+
+            digits.decimalAt = digits.count = 0;
+            char zero = symbols.getZeroDigit();
+            char decimal = isCurrencyFormat ?
+            symbols.getMonetaryDecimalSeparator() : symbols.getDecimalSeparator();
+            char grouping = symbols.getGroupingSeparator();
+            String exponentSep = symbols.getExponentSeparator();
+            boolean sawDecimal = false;
+            boolean sawExponent = false;
+            boolean sawDigit = false;
+            int exponent = 0; // Set to the exponent value, if any
+            int digit = 0;
+
+            // We have to track digitCount ourselves, because digits.count will
+            // pin when the maximum allowable digits is reached.
+            int digitCount = 0;
+
+            backup = -1;
+            for (; position < text.length(); ++position)
+            {
+                char ch = text.charAt(position);
+
+                /* We recognize all digit ranges, not only the Latin digit range
+                 * '0'..'9'.  We do so by using the Character.digit() method,
+                 * which converts a valid Unicode digit to the range 0..9.
+                 *
+                 * The character 'ch' may be a digit.  If so, place its value
+                 * from 0 to 9 in 'digit'.  First try using the locale digit,
+                 * which may or MAY NOT be a standard Unicode digit range.  If
+                 * this fails, try using the standard Unicode digit ranges by
+                 * calling Character.digit().  If this also fails, digit will
+                 * have a value outside the range 0..9.
+                 */
+                digit = ch - zero;
+                if (digit < 0 || digit > 9) digit = Character.digit(ch, 10);
+
+                if (digit == 0)
+                {
+                    // Cancel out backup setting (see grouping handler below)
+                    backup = -1; // Do this BEFORE continue statement below!!!
+                    sawDigit = true;
+
+                    // Handle leading zeros
+                    if (digits.count == 0)
+                    {
+                        // Ignore leading zeros in integer part of number.
+                        if (!sawDecimal) continue;
+
+                        // If we have seen the decimal, but no significant digits yet,
+                        // then we account for leading zeros by decrementing the
+                        // digits.decimalAt into negative values.
+                        --digits.decimalAt;
+                    }
+                    else
+                    {
+                        ++digitCount;
+                        digits.append((char)(digit + '0'));
+                    }
+                }
+                else if (digit > 0 && digit <= 9) // [sic] digit==0 handled above
+                {
+                    sawDigit = true;
+                    ++digitCount;
+                    digits.append((char)(digit + '0'));
+
+                    // Cancel out backup setting (see grouping handler below)
+                    backup = -1;
+                }
+                else if (!isExponent && ch == decimal)
+                {
+                    // If we're only parsing integers, or if we ALREADY saw the
+                    // decimal, then don't parse this one.
+                    if (isParseIntegerOnly() || sawDecimal) break;
+                    digits.decimalAt = digitCount; // Not digits.count!
+                    sawDecimal = true;
+                }
+                else if (!isExponent && ch == grouping && isGroupingUsed())
+                {
+                    if (sawDecimal) {
+                        break;
+                    }
+                    // Ignore grouping characters, if we are using them, but require
+                    // that they be followed by a digit.  Otherwise we backup and
+                    // reprocess them.
+                    backup = position;
+                }
+                else if (!isExponent && !sawExponent &&
+                         text.regionMatches(position, exponentSep,
+                                            0, exponentSep.length()))
+                {
+                    // Parse sign, if present
+                    boolean negExp = false;
+                    int pos = position + exponentSep.length();
+                    if (pos < text.length()) {
+                        ch = text.charAt(pos);
+                        if (ch == symbols.getPlusSign()) {
+                            ++pos;
+                        } else if (ch == symbols.getMinusSign()) {
+                            ++pos;
+                            negExp = true;
+                        }
+                    }
+
+                    DigitList exponentDigits = new DigitList();
+                    exponentDigits.count = 0;
+                    while (pos < text.length()) {
+                        digit = text.charAt(pos) - zero;
+                        if (digit < 0 || digit > 9) {
+                            /*
+                              Can't parse "[1E0]" when pattern is "0.###E0;[0.###E0]"
+                              Should update reassign the value of 'ch' in the
+                              code:  digit = Character.digit(ch, 10);
+                              [Richard/GCL]
+                            */
+                            digit = Character.digit(text.charAt(pos), 10);
+                        }
+                        if (digit >= 0 && digit <= 9) {
+                            exponentDigits.append((char)(digit + '0'));
+                            ++pos;
+                        } else {
+                            break;
+                        }
+                    }
+                    
+                    if (exponentDigits.count > 0) {
+                        exponentDigits.decimalAt = exponentDigits.count;
+                        exponent = (int) exponentDigits.getLong();
+                        if (negExp) {
+                            exponent = -exponent;
+                        }
+                        position = pos; // Advance past the exponent
+                        sawExponent = true;
+                    }
+
+                    break; // Whether we fail or succeed, we exit this loop
+                }
+                else break;
+            }
+
+            if (backup != -1) position = backup;
+
+            // If there was no decimal point we have an integer
+            if (!sawDecimal) digits.decimalAt = digitCount; // Not digits.count!
+
+            // Adjust for exponent, if any
+            digits.decimalAt += exponent;
+
+            // If none of the text string was recognized.  For example, parse
+            // "x" with pattern "#0.00" (return index and error index both 0)
+            // parse "$" with pattern "$#0.00". (return index 0 and error index
+            // 1).
+            if (!sawDigit && digitCount == 0) {
+                parsePosition.setIndex(oldStart);
+                //PP:parsePosition.errorIndex = oldStart;
+                return false;
+            }
+        }
+
+        // check for positiveSuffix
+        if (gotPositive)
+            gotPositive = text.regionMatches(position,positiveSuffix,0,
+                                             positiveSuffix.length());
+        if (gotNegative)
+            gotNegative = text.regionMatches(position,negativeSuffix,0,
+                                             negativeSuffix.length());
+
+        // if both match, take longest
+        if (gotPositive && gotNegative) {
+            if (positiveSuffix.length() > negativeSuffix.length())
+                gotNegative = false;
+            else if (positiveSuffix.length() < negativeSuffix.length())
+                gotPositive = false;
+        }
+
+        // fail if neither or both
+        if (gotPositive == gotNegative) {
+            //PP:parsePosition.errorIndex = position;
+            return false;
+        }
+
+        parsePosition.setIndex(position +
+            (gotPositive ? positiveSuffix.length() : negativeSuffix.length())); // mark success!
+
+        status[STATUS_POSITIVE] = gotPositive;
+        if (parsePosition.getIndex() == oldStart) {
+            //PP:parsePosition.errorIndex = position;
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Returns the decimal format symbols, which is generally not changed
+     * by the programmer or user.
+     * @return desired DecimalFormatSymbols
+     * @see DecimalFormatSymbols
+     */
+    public DecimalFormatSymbols getDecimalFormatSymbols() {
+        try {
+            // don't allow multiple references
+            return (DecimalFormatSymbols) symbols.clone();
+        } catch (Exception foo) {
+            return null; // should never happen
+        }
+    }
+
+
+    /**
+     * Sets the decimal format symbols, which is generally not changed
+     * by the programmer or user.
+     * @param newSymbols desired DecimalFormatSymbols
+     * @see DecimalFormatSymbols
+     */
+    public void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols) {
+        symbols = (DecimalFormatSymbols) newSymbols.clone();
+        setCurrencyForSymbols();
+        expandAffixes();
+    }
+
+    /**
+     * Update the currency object to match the symbols.  This method
+     * is used only when the caller has passed in a symbols object
+     * that may not be the default object for its locale.
+     */
+    private void setCurrencyForSymbols() {
+        /*Bug 4212072
+          Update the affix strings accroding to symbols in order to keep
+          the affix strings up to date.
+          [Richard/GCL]
+        */
+        
+        // With the introduction of the Currency object, the currency
+        // symbols in the DFS object are ignored.  For backward
+        // compatibility, we check any explicitly set DFS object.  If it
+        // is a default symbols object for its locale, we change the
+        // currency object to one for that locale.  If it is custom,
+        // we set the currency to null.
+        DecimalFormatSymbols def =
+            new DecimalFormatSymbols(symbols.getLocale());
+        
+        if (symbols.getCurrencySymbol().equals(
+                def.getCurrencySymbol()) &&
+            symbols.getInternationalCurrencySymbol().equals(
+                def.getInternationalCurrencySymbol())) {
+            currency = Currency.getInstance(symbols.getLocale());
+        } else {
+            currency = null;
+        }
+    }
+
+    /**
+     * Get the positive prefix.
+     * <P>Examples: +123, $123, sFr123
+     */
+    public String getPositivePrefix () {
+        return positivePrefix;
+    }
+
+    /**
+     * Set the positive prefix.
+     * <P>Examples: +123, $123, sFr123
+     */
+    public void setPositivePrefix (String newValue) {
+        positivePrefix = newValue;
+    }
+
+    /**
+     * Get the negative prefix.
+     * <P>Examples: -123, ($123) (with negative suffix), sFr-123
+     */
+    public String getNegativePrefix () {
+        return negativePrefix;
+    }
+
+    /**
+     * Set the negative prefix.
+     * <P>Examples: -123, ($123) (with negative suffix), sFr-123
+     */
+    public void setNegativePrefix (String newValue) {
+        negativePrefix = newValue;
+    }
+
+    /**
+     * Get the positive suffix.
+     * <P>Example: 123%
+     */
+    public String getPositiveSuffix () {
+        return positiveSuffix;
+    }
+
+    /**
+     * Set the positive suffix.
+     * <P>Example: 123%
+     */
+    public void setPositiveSuffix (String newValue) {
+        positiveSuffix = newValue;
+    }
+
+    /**
+     * Get the negative suffix.
+     * <P>Examples: -123%, ($123) (with positive suffixes)
+     */
+    public String getNegativeSuffix () {
+        return negativeSuffix;
+    }
+
+    /**
+     * Set the positive suffix.
+     * <P>Examples: 123%
+     */
+    public void setNegativeSuffix (String newValue) {
+        negativeSuffix = newValue;
+    }
+
+    /**
+     * Get the multiplier for use in percent, permill, etc.
+     * For a percentage, set the suffixes to have "%" and the multiplier to be 100.
+     * (For Arabic, use arabic percent symbol).
+     * For a permill, set the suffixes to have "\u2031" and the multiplier to be 1000.
+     * <P>Examples: with 100, 1.23 -> "123", and "123" -> 1.23
+     */
+    public int getMultiplier () {
+        return multiplier;
+    }
+
+    /**
+     * Set the multiplier for use in percent, permill, etc.
+     * For a percentage, set the suffixes to have "%" and the multiplier to be 100.
+     * (For Arabic, use arabic percent symbol).
+     * For a permill, set the suffixes to have "\u2031" and the multiplier to be 1000.
+     * <P>Examples: with 100, 1.23 -> "123", and "123" -> 1.23
+     */
+    public void setMultiplier (int newValue) {
+        if (newValue <= 0) {
+            throw new IllegalArgumentException("Bad multiplier: " + newValue);
+        }
+        multiplier = newValue;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Get the rounding increment.
+     * @return A positive rounding increment, or <code>null</code> if rounding
+     * is not in effect.
+     * @see #setRoundingIncrement
+     * @see #getRoundingMode
+     * @see #setRoundingMode
+     */
+    public java.math.BigDecimal getRoundingIncrement() {
+        return roundingIncrement;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the rounding increment.  This method also controls whether
+     * rounding is enabled.
+     * @param newValue A positive rounding increment, or <code>null</code> or
+     * <code>BigDecimal(0.0)</code> to disable rounding.
+     * @exception IllegalArgumentException if <code>newValue</code> is < 0.0
+     * @see #getRoundingIncrement
+     * @see #getRoundingMode
+     * @see #setRoundingMode
+     */
+    public void setRoundingIncrement(java.math.BigDecimal newValue) {
+        int i = newValue == null
+                ? 0 : newValue.compareTo(java.math.BigDecimal.valueOf(0));
+        if (i < 0) {
+            throw new IllegalArgumentException("Illegal rounding increment");
+        }
+        if (i == 0) {
+            roundingIncrement = null;
+            roundingDouble = 0.0;
+        } else {
+            roundingIncrement = newValue;
+            roundingDouble = newValue.doubleValue();
+        }
+    }
+    
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the rounding increment.  This method also controls whether
+     * rounding is enabled.
+     * @param newValue A positive rounding increment, or 0.0 to disable
+     * rounding.
+     * @exception IllegalArgumentException if <code>newValue</code> is < 0.0
+     * @see #getRoundingIncrement
+     * @see #getRoundingMode
+     * @see #setRoundingMode
+     */
+    public void setRoundingIncrement(double newValue) {
+        if (newValue < 0.0) {
+            throw new IllegalArgumentException("Illegal rounding increment");
+        }
+        roundingDouble = newValue;
+        roundingIncrement = (newValue > 0.0)
+            ? new java.math.BigDecimal(String.valueOf(newValue)) : null;
+    }
+    
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Get the rounding mode.
+     * @return A rounding mode, between <code>BigDecimal.ROUND_UP</code>
+     * and <code>BigDecimal.ROUND_UNNECESSARY</code>.
+     * @see #setRoundingIncrement
+     * @see #getRoundingIncrement
+     * @see #setRoundingMode
+     * @see java.math.BigDecimal
+     */
+    public int getRoundingMode() {
+        return roundingMode;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the rounding mode.  This has no effect unless the rounding
+     * increment is greater than zero.
+     * @param roundingMode A rounding mode, between
+     * <code>BigDecimal.ROUND_UP</code> and
+     * <code>BigDecimal.ROUND_UNNECESSARY</code>.
+     * @exception IllegalArgumentException if <code>roundingMode</code>
+     * is unrecognized.
+     * @see #setRoundingIncrement
+     * @see #getRoundingIncrement
+     * @see #getRoundingMode
+     * @see java.math.BigDecimal
+     */
+    public void setRoundingMode(int roundingMode) {
+        if (roundingMode < java.math.BigDecimal.ROUND_UP
+            || roundingMode > java.math.BigDecimal.ROUND_UNNECESSARY) {
+            throw new IllegalArgumentException("Invalid rounding mode: "
+                                               + roundingMode);
+        }
+        this.roundingMode = roundingMode;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Get the width to which the output of <code>format()</code> is padded.
+     * @return the format width, or zero if no padding is in effect
+     * @see #setFormatWidth
+     * @see #getPadCharacter
+     * @see #setPadCharacter
+     * @see #getPadPosition
+     * @see #setPadPosition
+     */
+    public int getFormatWidth() {
+        return formatWidth;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the width to which the output of <code>format()</code> is padded.
+     * This method also controls whether padding is enabled.
+     * @param width the width to which to pad the result of
+     * <code>format()</code>, or zero to disable padding
+     * @exception IllegalArgumentException if <code>width</code> is < 0
+     * @see #getFormatWidth
+     * @see #getPadCharacter
+     * @see #setPadCharacter
+     * @see #getPadPosition
+     * @see #setPadPosition
+     */
+    public void setFormatWidth(int width) {
+        if (width < 0) {
+            throw new IllegalArgumentException("Illegal format width");
+        }
+        formatWidth = width;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Get the character used to pad to the format width.  The default is ' '.
+     * @return the pad character
+     * @see #setFormatWidth
+     * @see #getFormatWidth
+     * @see #setPadCharacter
+     * @see #getPadPosition
+     * @see #setPadPosition
+     */
+    public char getPadCharacter() {
+        return pad;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the character used to pad to the format width.  This has no effect
+     * unless padding is enabled.
+     * @param padChar the pad character
+     * @see #setFormatWidth
+     * @see #getFormatWidth
+     * @see #getPadCharacter
+     * @see #getPadPosition
+     * @see #setPadPosition
+     */
+    public void setPadCharacter(char padChar) {
+        pad = padChar;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Get the position at which padding will take place.  This is the location
+     * at which padding will be inserted if the result of <code>format()</code>
+     * is shorter than the format width.
+     * @return the pad position, one of <code>PAD_BEFORE_PREFIX</code>,
+     * <code>PAD_AFTER_PREFIX</code>, <code>PAD_BEFORE_SUFFIX</code>, or
+     * <code>PAD_AFTER_SUFFIX</code>.
+     * @see #setFormatWidth
+     * @see #getFormatWidth
+     * @see #setPadCharacter
+     * @see #getPadCharacter
+     * @see #setPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @see #PAD_AFTER_SUFFIX
+     */
+    public int getPadPosition() {
+        return padPosition;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the position at which padding will take place.  This is the location
+     * at which padding will be inserted if the result of <code>format()</code>
+     * is shorter than the format width.  This has no effect unless padding is
+     * enabled.
+     * @param padPos the pad position, one of <code>PAD_BEFORE_PREFIX</code>,
+     * <code>PAD_AFTER_PREFIX</code>, <code>PAD_BEFORE_SUFFIX</code>, or
+     * <code>PAD_AFTER_SUFFIX</code>.
+     * @exception IllegalArgumentException if the pad position in
+     * unrecognized
+     * @see #setFormatWidth
+     * @see #getFormatWidth
+     * @see #setPadCharacter
+     * @see #getPadCharacter
+     * @see #getPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @see #PAD_AFTER_SUFFIX
+     */
+    public void setPadPosition(int padPos) {
+        if (padPos < PAD_BEFORE_PREFIX || padPos > PAD_AFTER_SUFFIX) {
+            throw new IllegalArgumentException("Illegal pad position");
+        }
+        padPosition = padPos;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return whether or not scientific notation is used.
+     * @return true if this object formats and parses scientific notation
+     * @see #setScientificNotation
+     * @see #getMinimumExponentDigits
+     * @see #setMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @see #setExponentSignAlwaysShown
+     */
+    public boolean isScientificNotation() {
+        return useExponentialNotation;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set whether or not scientific notation is used.
+     * @param useScientific true if this object formats and parses scientific
+     * notation
+     * @see #isScientificNotation
+     * @see #getMinimumExponentDigits
+     * @see #setMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @see #setExponentSignAlwaysShown
+     */
+    public void setScientificNotation(boolean useScientific) {
+        useExponentialNotation = useScientific;
+        if (useExponentialNotation && minExponentDigits < 1) {
+            minExponentDigits = 1;
+        }
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return the minimum exponent digits that will be shown.
+     * @return the minimum exponent digits that will be shown
+     * @see #setScientificNotation
+     * @see #isScientificNotation
+     * @see #setMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @see #setExponentSignAlwaysShown
+     */
+    public byte getMinimumExponentDigits() {
+        return minExponentDigits;
+    }
+    
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the minimum exponent digits that will be shown.  This has no
+     * effect unless scientific notation is in use.
+     * @param minExpDig a value >= 1 indicating the fewest exponent digits
+     * that will be shown
+     * @exception IllegalArgumentException if <code>minExpDig</code> < 1
+     * @see #setScientificNotation
+     * @see #isScientificNotation
+     * @see #getMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @see #setExponentSignAlwaysShown
+     */
+    public void setMinimumExponentDigits(byte minExpDig) {
+        if (minExpDig < 1) {
+            throw new IllegalArgumentException("Exponent digits must be >= 1");
+        }
+        minExponentDigits = minExpDig;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return whether the exponent sign is always shown.
+     * @return true if the exponent is always prefixed with either the
+     * localized minus sign or the localized plus sign, false if only negative
+     * exponents are prefixed with the localized minus sign.
+     * @see #setScientificNotation
+     * @see #isScientificNotation
+     * @see #setMinimumExponentDigits
+     * @see #getMinimumExponentDigits
+     * @see #setExponentSignAlwaysShown
+     */
+    public boolean isExponentSignAlwaysShown() {
+        return exponentSignAlwaysShown;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set whether the exponent sign is always shown.  This has no effect
+     * unless scientific notation is in use.
+     * @param expSignAlways true if the exponent is always prefixed with either
+     * the localized minus sign or the localized plus sign, false if only
+     * negative exponents are prefixed with the localized minus sign.
+     * @see #setScientificNotation
+     * @see #isScientificNotation
+     * @see #setMinimumExponentDigits
+     * @see #getMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     */
+    public void setExponentSignAlwaysShown(boolean expSignAlways) {
+        exponentSignAlwaysShown = expSignAlways;
+    }
+
+    /**
+     * Return the grouping size. Grouping size is the number of digits between
+     * grouping separators in the integer portion of a number.  For example,
+     * in the number "123,456.78", the grouping size is 3.
+     * @see #setGroupingSize
+     * @see NumberFormat#isGroupingUsed
+     * @see DecimalFormatSymbols#getGroupingSeparator
+     */
+    public int getGroupingSize () {
+        return groupingSize;
+    }
+
+    /**
+     * Set the grouping size. Grouping size is the number of digits between
+     * grouping separators in the integer portion of a number.  For example,
+     * in the number "123,456.78", the grouping size is 3.
+     * @see #getGroupingSize
+     * @see NumberFormat#setGroupingUsed
+     * @see DecimalFormatSymbols#setGroupingSeparator
+     */
+    public void setGroupingSize (int newValue) {
+        groupingSize = (byte)newValue;
+    }
+
+    /**
+     * Return the secondary grouping size. In some locales one
+     * grouping interval is used for the least significant integer
+     * digits (the primary grouping size), and another is used for all
+     * others (the secondary grouping size).  A formatter supporting a
+     * secondary grouping size will return a positive integer unequal
+     * to the primary grouping size returned by
+     * <code>getGroupingSize()</code>.  For example, if the primary
+     * grouping size is 4, and the secondary grouping size is 2, then
+     * the number 123456789 formats as "1,23,45,6789", and the pattern
+     * appears as "#,##,###0".
+     * [NEW]
+     * @return the secondary grouping size, or a value less than
+     * one if there is none
+     * @see #setSecondaryGroupingSize
+     * @see NumberFormat#isGroupingUsed
+     * @see DecimalFormatSymbols#getGroupingSeparator
+     */
+    public int getSecondaryGroupingSize () {
+        return groupingSize2;
+    }
+
+    /**
+     * Set the secondary grouping size. If set to a value less than 1,
+     * then secondary grouping is turned off, and the primary grouping
+     * size is used for all intervals, not just the least significant.
+     * [NEW]
+     * @see #getSecondaryGroupingSize
+     * @see NumberFormat#setGroupingUsed
+     * @see DecimalFormatSymbols#setGroupingSeparator
+     */
+    public void setSecondaryGroupingSize (int newValue) {
+        groupingSize2 = (byte)newValue;
+    }
+
+    /**
+     * Allows you to get the behavior of the decimal separator with integers.
+     * (The decimal separator will always appear with decimals.)
+     * <P>Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
+     */
+    public boolean isDecimalSeparatorAlwaysShown() {
+        return decimalSeparatorAlwaysShown;
+    }
+
+    /**
+     * Allows you to set the behavior of the decimal separator with integers.
+     * (The decimal separator will always appear with decimals.)
+     * <P>Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
+     */
+    public void setDecimalSeparatorAlwaysShown(boolean newValue) {
+        decimalSeparatorAlwaysShown = newValue;
+    }
+
+    /**
+     * Standard override; no change in semantics.
+     */
+    public Object clone() {
+        try {
+            DecimalFormat other = (DecimalFormat) super.clone();
+            other.symbols = (DecimalFormatSymbols) symbols.clone();
+            return other;
+        } catch (Exception e) {
+            throw new InternalError();
+        }
+    }
+
+    /**
+     * Overrides equals
+     */
+    public boolean equals(Object obj)
+    {
+        if (obj == null) return false;
+        if (!super.equals(obj)) return false; // super does class check
+        DecimalFormat other = (DecimalFormat) obj;
+        /* Add the comparison of the four new added fields ,they are
+         * posPrefixPattern, posSuffixPattern, negPrefixPattern, negSuffixPattern.
+         * [Richard/GCL]
+         */
+        return (((posPrefixPattern == other.posPrefixPattern &&
+                 positivePrefix.equals(other.positivePrefix))
+                || (posPrefixPattern != null &&
+                    posPrefixPattern.equals(other.posPrefixPattern)))
+            && ((posSuffixPattern == other.posSuffixPattern &&
+                 positiveSuffix.equals(other.positiveSuffix))
+                || (posSuffixPattern != null &&
+                    posSuffixPattern.equals(other.posSuffixPattern)))
+            && ((negPrefixPattern == other.negPrefixPattern &&
+                 negativePrefix.equals(other.negativePrefix))
+                || (negPrefixPattern != null &&
+                    negPrefixPattern.equals(other.negPrefixPattern)))
+            && ((negSuffixPattern == other.negSuffixPattern &&
+                 negativeSuffix.equals(other.negativeSuffix))
+                || (negSuffixPattern != null &&
+                    negSuffixPattern.equals(other.negSuffixPattern)))
+            && multiplier == other.multiplier
+            && groupingSize == other.groupingSize
+            && groupingSize2 == other.groupingSize2
+            && decimalSeparatorAlwaysShown == other.decimalSeparatorAlwaysShown
+            && useExponentialNotation == other.useExponentialNotation
+            && (!useExponentialNotation ||
+                minExponentDigits == other.minExponentDigits)
+            && symbols.equals(other.symbols));
+    }
+
+    /**
+     * Overrides hashCode
+     */
+    public int hashCode() {
+        return super.hashCode() * 37 + positivePrefix.hashCode();
+        // just enough fields for a reasonable distribution
+    }
+
+    /**
+     * Synthesizes a pattern string that represents the current state
+     * of this Format object.
+     * @see #applyPattern
+     */
+    public String toPattern() {
+        return toPattern( false );
+    }
+
+    /**
+     * Synthesizes a localized pattern string that represents the current
+     * state of this Format object.
+     * @see #applyPattern
+     */
+    public String toLocalizedPattern() {
+        return toPattern( true );
+    }
+
+    /**
+     * Expand the affix pattern strings into the expanded affix strings.  If any
+     * affix pattern string is null, do not expand it.  This method should be
+     * called any time the symbols or the affix patterns change in order to keep
+     * the expanded affix strings up to date.
+     */
+    //Bug 4212072 [Richard/GCL]
+    private void expandAffixes() {
+        // Reuse one StringBuffer for better performance
+        StringBuffer buffer = new StringBuffer();
+        if (posPrefixPattern != null) {
+            positivePrefix = expandAffix(posPrefixPattern, buffer);
+        }
+        if (posSuffixPattern != null) {
+            positiveSuffix = expandAffix(posSuffixPattern, buffer);
+        }
+        if (negPrefixPattern != null) {
+            negativePrefix = expandAffix(negPrefixPattern, buffer);
+        }
+        if (negSuffixPattern != null) {
+            negativeSuffix = expandAffix(negSuffixPattern, buffer);
+        }
+    }
+
+    /**
+     * Expand an affix pattern into an affix string.  All characters in the
+     * pattern are literal unless prefixed by QUOTE.  The following characters
+     * after QUOTE are recognized: PATTERN_PERCENT, PATTERN_PER_MILLE,
+     * PATTERN_MINUS, and CURRENCY_SIGN.  If CURRENCY_SIGN is doubled (QUOTE +
+     * CURRENCY_SIGN + CURRENCY_SIGN), it is interpreted as an international
+     * currency sign.  Any other character after a QUOTE represents itself.
+     * QUOTE must be followed by another character; QUOTE may not occur by
+     * itself at the end of the pattern.
+     *
+     * @param pattern the non-null, possibly empty pattern
+     * @param buffer a scratch StringBuffer; its contents will be lost
+     * @return the expanded equivalent of pattern
+     */
+    //Bug 4212072 [Richard/GCL]
+    private String expandAffix(String pattern, StringBuffer buffer) {
+        buffer.setLength(0);
+        for (int i=0; i<pattern.length(); ) {
+            char c = pattern.charAt(i++);
+            //if (c == QUOTE) {
+            //    c = pattern.charAt(i++);
+                switch (c) {
+                case CURRENCY_SIGN:
+                    // As of ICU 2.2 we use the currency object, and
+                    // ignore the currency symbols in the DFS, unless
+                    // we have a null currency object.  This occurs if
+                    // resurrecting a pre-2.2 object or if the user
+                    // sets a custom DFS.
+                    boolean intl = i<pattern.length() &&
+                        pattern.charAt(i) == CURRENCY_SIGN;
+                    if (intl) {
+                        ++i;
+                    }
+                    String s;
+                    if (currency != null) {
+                        s = intl ? currency.getCurrencyCode()
+                            : currency.getSymbol(symbols.getLocale());
+                    } else {
+                        s = intl ? symbols.getInternationalCurrencySymbol()
+                            : symbols.getCurrencySymbol();
+                    }
+                    buffer.append(s);
+                    continue;
+                case PATTERN_PERCENT:
+                    c = symbols.getPercent();
+                    break;
+                case PATTERN_PER_MILLE:
+                    c = symbols.getPerMill();
+                    break;
+                case PATTERN_MINUS:
+                    c = symbols.getMinusSign();
+                    break;
+                }
+            //}
+            buffer.append(c);
+        }
+        return buffer.toString();
+    }
+    
+    /**
+     * Append an affix to the given StringBuffer, using quotes if
+     * there are special characters.  Single quotes themselves must be
+     * escaped in either case.
+     */
+    private void appendAffix(StringBuffer buffer, String affix, boolean localized) {
+        boolean needQuote;
+        if (localized) {
+            needQuote = affix.indexOf(symbols.getZeroDigit()) >= 0
+                || affix.indexOf(symbols.getGroupingSeparator()) >= 0
+                || affix.indexOf(symbols.getDecimalSeparator()) >= 0
+                || affix.indexOf(symbols.getPercent()) >= 0
+                || affix.indexOf(symbols.getPerMill()) >= 0
+                || affix.indexOf(symbols.getDigit()) >= 0
+                || affix.indexOf(symbols.getPatternSeparator()) >= 0
+                || affix.indexOf(symbols.getExponentSeparator()) >= 0;
+        }
+        else {
+            needQuote = affix.indexOf(PATTERN_ZERO_DIGIT) >= 0
+                || affix.indexOf(PATTERN_GROUPING_SEPARATOR) >= 0
+                || affix.indexOf(PATTERN_DECIMAL_SEPARATOR) >= 0
+                || affix.indexOf(PATTERN_PERCENT) >= 0
+                || affix.indexOf(PATTERN_PER_MILLE) >= 0
+                || affix.indexOf(PATTERN_DIGIT) >= 0
+                || affix.indexOf(PATTERN_SEPARATOR) >= 0
+                || affix.indexOf(PATTERN_EXPONENT) >= 0;
+        }
+        if (needQuote) buffer.append('\'');
+        if (affix.indexOf('\'') < 0) buffer.append(affix);
+        else {
+            for (int j=0; j<affix.length(); ++j) {
+                char c = affix.charAt(j);
+                buffer.append(c);
+                if (c == '\'') buffer.append(c);
+            }
+        }
+        if (needQuote) buffer.append('\'');
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Does the real work of generating a pattern.
+     */
+    private String toPattern(boolean localized) {
+        StringBuffer result = new StringBuffer();
+        char zero = localized ? symbols.getZeroDigit() : PATTERN_ZERO_DIGIT;
+        char digit = localized ? symbols.getDigit() : PATTERN_DIGIT;
+        char group = localized ? symbols.getGroupingSeparator()
+                               : PATTERN_GROUPING_SEPARATOR;
+        int i;
+        int roundingDecimalPos = 0; // Pos of decimal in roundingDigits
+        String roundingDigits = null;
+        int padPos = (formatWidth > 0) ? padPosition : -1;
+        String padSpec = (formatWidth > 0)
+            ? new StringBuffer(2).
+                append(localized ? symbols.getPadEscape() : PATTERN_PAD_ESCAPE).
+                append(pad).toString()
+            : null;
+        if (roundingIncrement != null) {
+            i = roundingIncrement.scale();
+            roundingDigits = roundingIncrement.movePointRight(i).toString();
+            roundingDecimalPos = roundingDigits.length() - i;
+        }
+        for (int part=0; part<2; ++part) {
+            // variable not used int partStart = result.length();
+            if (padPos == PAD_BEFORE_PREFIX) {
+                result.append(padSpec);
+            }
+            /* Use original symbols read from resources in pattern
+             * eg. use "\u00A4" instead of "$" in Locale.US [Richard/GCL]
+             */
+            appendAffix(result,
+                        (part==0 ? posPrefixPattern : negPrefixPattern),
+                        localized);
+            if (padPos == PAD_AFTER_PREFIX) {
+                result.append(padSpec);
+            }
+            int sub0Start = result.length();
+            int g = isGroupingUsed() ? Math.max(0, groupingSize) : 0;
+            if (g > 0 && groupingSize2 > 0 && groupingSize2 != groupingSize) {
+                g += groupingSize2;
+            }
+            int maxIntDig = useExponentialNotation ? getMaximumIntegerDigits() :
+                (Math.max(Math.max(g, getMinimumIntegerDigits()),
+                          roundingDecimalPos) + 1);
+            for (i = maxIntDig; i > 0; --i) {
+                if (!useExponentialNotation && i<maxIntDig &&
+                    isGroupingPosition(i)) {
+                    result.append(group);
+                }
+                if (roundingDigits != null) {
+                    int pos = roundingDecimalPos - i;
+                    if (pos >= 0 && pos < roundingDigits.length()) {
+                        result.append((char) (roundingDigits.charAt(pos) - '0' + zero));
+                        continue;
+                    }
+                }
+                result.append(i<=getMinimumIntegerDigits() ? zero : digit);
+            }
+            if (getMaximumFractionDigits() > 0 || decimalSeparatorAlwaysShown) {
+                result.append(localized ? symbols.getDecimalSeparator() :
+                              PATTERN_DECIMAL_SEPARATOR);
+            }
+            int pos = roundingDecimalPos;
+            for (i = 0; i < getMaximumFractionDigits(); ++i) {
+                if (roundingDigits != null &&
+                    pos < roundingDigits.length()) {
+                    result.append(pos < 0 ? zero :
+                                  (char) (roundingDigits.charAt(pos) - '0' + zero));
+                    ++pos;
+                    continue;
+                }
+                result.append(i<getMinimumFractionDigits() ? zero : digit);
+            }
+            if (useExponentialNotation) {
+                result.append(localized ? symbols.getExponentSeparator() :
+                              PATTERN_EXPONENT);
+                if (exponentSignAlwaysShown) {
+                    result.append(localized ? symbols.getPlusSign() :
+                                  PATTERN_PLUS_SIGN);
+                }
+                for (i=0; i<minExponentDigits; ++i) {
+                    result.append(zero);
+                }
+            }
+            if (padSpec != null && !useExponentialNotation) {
+                int add = formatWidth - result.length() + sub0Start
+                    - ((part == 0)
+                       ? positivePrefix.length() + positiveSuffix.length()
+                       : negativePrefix.length() + negativeSuffix.length());
+                while (add > 0) {
+                    result.insert(sub0Start, digit);
+                    ++maxIntDig;
+                    --add;
+                    // Only add a grouping separator if we have at least
+                    // 2 additional characters to be added, so we don't
+                    // end up with ",###".
+                    if (add>1 && isGroupingPosition(maxIntDig)) {
+                        result.insert(sub0Start, group);
+                        --add;                        
+                    }
+                }
+            }
+            if (padPos == PAD_BEFORE_SUFFIX) {
+                result.append(padSpec);
+            }
+            if (part == 0) {
+                /* Use original symbols read from resources in pattern
+                 * eg. use "\u00A4" instead of "$" in Locale.US [Richard/GCL]
+                 */
+                appendAffix(result, posSuffixPattern, localized);
+                if (padPos == PAD_AFTER_SUFFIX) {
+                    result.append(padSpec);
+                }
+                if (negativeSuffix.equals(positiveSuffix) &&
+                    negativePrefix.equals(symbols.getMinusSign() + positivePrefix)) {
+                    part = 2;
+                } else {
+                    result.append(localized ? symbols.getPatternSeparator() :
+                                  PATTERN_SEPARATOR);
+                }
+            } else {
+                appendAffix(result, negSuffixPattern, localized);
+                if (padPos == PAD_AFTER_SUFFIX) {
+                    result.append(padSpec);
+                }
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * Apply the given pattern to this Format object.  A pattern is a
+     * short-hand specification for the various formatting properties.
+     * These properties can also be changed individually through the
+     * various setter methods.
+     * <p>
+     * There is no limit to integer digits are set
+     * by this routine, since that is the typical end-user desire;
+     * use setMaximumInteger if you want to set a real value.
+     * For negative numbers, use a second pattern, separated by a semicolon
+     * <P>Example "#,#00.0#" -> 1,234.56
+     * <P>This means a minimum of 2 integer digits, 1 fraction digit, and
+     * a maximum of 2 fraction digits.
+     * <p>Example: "#,#00.0#;(#,#00.0#)" for negatives in parentheses.
+     * <p>In negative patterns, the minimum and maximum counts are ignored;
+     * these are presumed to be set in the positive pattern.
+     */
+    public void applyPattern( String pattern ) {
+        applyPattern( pattern, false );
+    }
+
+    /**
+     * Apply the given pattern to this Format object.  The pattern
+     * is assumed to be in a localized notation. A pattern is a
+     * short-hand specification for the various formatting properties.
+     * These properties can also be changed individually through the
+     * various setter methods.
+     * <p>
+     * There is no limit to integer digits are set
+     * by this routine, since that is the typical end-user desire;
+     * use setMaximumInteger if you want to set a real value.
+     * For negative numbers, use a second pattern, separated by a semicolon
+     * <P>Example "#,#00.0#" -> 1,234.56
+     * <P>This means a minimum of 2 integer digits, 1 fraction digit, and
+     * a maximum of 2 fraction digits.
+     * <p>Example: "#,#00.0#;(#,#00.0#)" for negatives in parantheses.
+     * <p>In negative patterns, the minimum and maximum counts are ignored;
+     * these are presumed to be set in the positive pattern.
+     */
+    public void applyLocalizedPattern( String pattern ) {
+        applyPattern( pattern, true );
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Does the real work of applying a pattern.
+     */
+    private void applyPattern(String pattern, boolean localized) {
+        char zeroDigit         = PATTERN_ZERO_DIGIT;
+        char groupingSeparator = PATTERN_GROUPING_SEPARATOR;
+        char decimalSeparator  = PATTERN_DECIMAL_SEPARATOR;
+        char percent           = PATTERN_PERCENT;
+        char perMill           = PATTERN_PER_MILLE;
+        char digit             = PATTERN_DIGIT;
+        char separator         = PATTERN_SEPARATOR;
+        String exponent        = PATTERN_EXPONENT;
+        char plus              = PATTERN_PLUS_SIGN;
+        char padEscape         = PATTERN_PAD_ESCAPE;
+        char minus             = PATTERN_MINUS; //Bug 4212072 [Richard/GCL]
+        if (localized) {
+            zeroDigit         = symbols.getZeroDigit();
+            groupingSeparator = symbols.getGroupingSeparator();
+            decimalSeparator  = symbols.getDecimalSeparator();
+            percent           = symbols.getPercent();
+            perMill           = symbols.getPerMill();
+            digit             = symbols.getDigit();
+            separator         = symbols.getPatternSeparator();
+            exponent          = symbols.getExponentSeparator();
+            plus              = symbols.getPlusSign();
+            padEscape         = symbols.getPadEscape();
+            minus             = symbols.getMinusSign(); //Bug 4212072 [Richard/GCL]
+        }
+        char nineDigit = (char) (zeroDigit + 9);
+
+        boolean gotNegative = false;
+
+        int pos = 0;
+        // Part 0 is the positive pattern.  Part 1, if present, is the negative
+        // pattern.
+        for (int part=0; part<2 && pos<pattern.length(); ++part) {
+            // The subpart ranges from 0 to 4: 0=pattern proper, 1=prefix,
+            // 2=suffix, 3=prefix in quote, 4=suffix in quote.  Subpart 0 is
+            // between the prefix and suffix, and consists of pattern
+            // characters.  In the prefix and suffix, percent, permille, and
+            // currency symbols are recognized and translated.
+            int subpart = 1, sub0Start = 0, sub0Limit = 0, sub2Limit = 0;
+
+            // It's important that we don't change any fields of this object
+            // prematurely.  We set the following variables for the multiplier,
+            // grouping, etc., and then only change the actual object fields if
+            // everything parses correctly.  This also lets us register
+            // the data from part 0 and ignore the part 1, except for the
+            // prefix and suffix.
+            StringBuffer prefix = new StringBuffer();
+            StringBuffer suffix = new StringBuffer();
+            int decimalPos = -1;
+            int multiplier = 1;
+            int digitLeftCount = 0, zeroDigitCount = 0, digitRightCount = 0;
+            byte groupingCount = -1;
+            byte groupingCount2 = -1;
+            int padPos = -1;
+            char padChar = 0;
+            int incrementPos = -1;
+            long incrementVal = 0;
+            byte expDigits = -1;
+            boolean expSignAlways = false;
+            boolean isCurrency = false;
+
+            // The affix is either the prefix or the suffix.
+            StringBuffer affix = prefix;
+
+            int start = pos;
+
+        PARTLOOP:
+            for (; pos < pattern.length(); ++pos) {
+                char ch = pattern.charAt(pos);
+                switch (subpart) {
+                case 0: // Pattern proper subpart (between prefix & suffix)
+                    // Process the digits, decimal, and grouping characters.  We
+                    // record five pieces of information.  We expect the digits
+                    // to occur in the pattern ####00.00####, and we record the
+                    // number of left digits, zero (central) digits, and right
+                    // digits.  The position of the last grouping character is
+                    // recorded (should be somewhere within the first two blocks
+                    // of characters), as is the position of the decimal point,
+                    // if any (should be in the zero digits).  If there is no
+                    // decimal point, then there should be no right digits.
+                    if (ch == digit) {
+                        if (zeroDigitCount > 0) {
+                            ++digitRightCount;
+                        } else {
+                            ++digitLeftCount;
+                        }
+                        if (groupingCount >= 0 && decimalPos < 0) {
+                            ++groupingCount;
+                        }
+                    } else if (ch >= zeroDigit && ch <= nineDigit) {
+                        if (digitRightCount > 0) {
+                            throw new IllegalArgumentException(
+                                   "Unexpected '0' in pattern \"" +
+                                   pattern + '"');
+                        }
+                        ++zeroDigitCount;
+                        if (groupingCount >= 0 && decimalPos < 0) {
+                            ++groupingCount;
+                        }
+                        if (ch != zeroDigit) {
+                            int p = digitLeftCount + zeroDigitCount
+                                + digitRightCount;
+                            if (incrementPos >= 0) {
+                                while (incrementPos < p) {
+                                    incrementVal *= 10;
+                                    ++incrementPos;
+                                }
+                            } else {
+                                incrementPos = p;
+                            }
+                            incrementVal += ch - zeroDigit;
+                        }
+                    } else if (ch == groupingSeparator) {
+                        /*Bug 4212072
+                          process the Localized pattern like "'Fr. '#'##0.05;'Fr.-'#'##0.05"
+                          (Locale="CH", groupingSeparator == QUOTE)                          
+                          [Richard/GCL]
+                        */
+                        if ((pos + 1) < pattern.length()
+                            && !((pattern.charAt(pos +1) == digit)
+                            || ((pattern.charAt(pos +1) >= zeroDigit)
+                                && (pattern.charAt(pos + 1) <= nineDigit))
+                            )) {
+                            if (ch == QUOTE) {
+                                // A quote outside quotes indicates either the opening
+                                // quote or two quotes, which is a quote literal.  That is,
+                                // we have the first quote in 'do' or o''clock.
+                                if ((pos+1) < pattern.length() &&
+                                    pattern.charAt(pos+1) == QUOTE) {
+                                    ++pos;
+                                    // Fall through to append(ch)
+                                } else {
+                                    if (groupingCount < 0) {
+                                        subpart += 3; // open quote
+                                    } else {
+                                        // Transition to suffix subpart
+                                        subpart = 2; // suffix subpart
+                                        affix = suffix;
+                                        sub0Limit = pos--;
+                                    }
+                                    continue;
+                                }
+                            }
+                        }
+                        
+                        if (decimalPos >= 0) {
+                            throw new IllegalArgumentException(
+                                    "Grouping separator after decimal in pattern \"" +
+                                    pattern + '"');
+                        }
+                        groupingCount2 = groupingCount;
+                        groupingCount = 0;
+                    } else if (ch == decimalSeparator) {
+                        if (decimalPos >= 0) {
+                            throw new IllegalArgumentException(
+                                    "Multiple decimal separators in pattern \"" +
+                                    pattern + '"');
+                        }
+                        // Intentionally incorporate the digitRightCount,
+                        // even though it is illegal for this to be > 0
+                        // at this point.  We check pattern syntax below.
+                        decimalPos = digitLeftCount + zeroDigitCount + digitRightCount;
+                    } else {
+                        if (pattern.regionMatches(pos, exponent, 0, exponent.length())) {
+                            if (expDigits >= 0) {
+                                throw new IllegalArgumentException(
+                                        "Multiple exponential " +
+                                        "symbols in pattern \"" +
+                                        pattern + '"');
+                            }
+                            if (groupingCount >= 0) {
+                                throw new IllegalArgumentException(
+                                        "Grouping separator in exponential " +
+                                        "pattern \"" +
+                                        pattern + '"');
+                            }
+                            // Check for positive prefix
+                            if ((pos+1) < pattern.length()
+                                && pattern.charAt(pos+1) == plus) {
+                                expSignAlways = true;
+                                ++pos;
+                            }
+                            // Use lookahead to parse out the exponential part of the
+                            // pattern, then jump into suffix subpart.
+                            expDigits = 0;
+                            while (++pos < pattern.length() &&
+                                   pattern.charAt(pos) == zeroDigit) {
+                                ++expDigits;
+                            }
+                            
+                            if ((digitLeftCount + zeroDigitCount) < 1 ||
+                                expDigits < 1) {
+                                throw new IllegalArgumentException(
+                                        "Malformed exponential " +
+                                        "pattern \"" + pattern + '"');
+                            }
+                        }
+                        // Transition to suffix subpart
+                        subpart = 2; // suffix subpart
+                        affix = suffix;
+                        sub0Limit = pos--;
+                        continue;
+                    }
+                    break;
+                case 1: // Prefix subpart
+                case 2: // Suffix subpart
+                    // Process the prefix / suffix characters
+                    // Process unquoted characters seen in prefix or suffix
+                    // subpart.
+                    if (ch == digit ||
+                        ch == groupingSeparator ||
+                        ch == decimalSeparator ||
+                        (ch >= zeroDigit && ch <= nineDigit)) {
+                        // Any of these characters implicitly begins the
+                        // next subpart if we are in the prefix
+                        if (subpart == 1) { // prefix subpart
+                            subpart = 0; // pattern proper subpart
+                            sub0Start = pos--; // Reprocess this character
+                            continue;
+                        } else if (ch == QUOTE) {
+                            /*Bug 4212072
+                              process the Localized pattern like "'Fr. '#'##0.05;'Fr.-'#'##0.05"
+                              (Locale="CH", groupingSeparator == QUOTE)                          
+                              [Richard/GCL]
+                            */
+                            // A quote outside quotes indicates either the opening
+                            // quote or two quotes, which is a quote literal.  That is,
+                            // we have the first quote in 'do' or o''clock.
+                            if ((pos+1) < pattern.length() &&
+                                pattern.charAt(pos+1) == QUOTE) {
+                                ++pos;
+                                // Fall through to append(ch)
+                            } else {
+                                subpart += 2; // open quote
+                                continue;
+                            }
+                        }
+                        // Fall through to append(ch)
+                    } else if (ch == CURRENCY_SIGN) {
+                        // Use lookahead to determine if the currency sign is
+                        // doubled or not.
+                        boolean doubled = (pos + 1) < pattern.length() &&
+                            pattern.charAt(pos + 1) == CURRENCY_SIGN;
+                        /*Bug 4212072
+                         To meet the need of expandAffix(String, StirngBuffer)
+                         [Richard/GCL]
+                        */
+                        affix.append(doubled ? "\u00A4\u00A4" : "\u00A4"); 
+                        if (doubled) ++pos; // Skip over the doubled character
+                        isCurrency = true;
+                        continue;
+                    } else if (ch == QUOTE) {
+                        // A quote outside quotes indicates either the opening
+                        // quote or two quotes, which is a quote literal.  That is,
+                        // we have the first quote in 'do' or o''clock.
+                        if ((pos+1) < pattern.length() &&
+                            pattern.charAt(pos+1) == QUOTE) {
+                            ++pos;
+                            // Fall through to append(ch)
+                        } else {
+                            subpart += 2; // open quote
+                            continue;
+                        }
+                    } else if (ch == separator) {
+                        // Don't allow separators in the prefix, and don't allow
+                        // separators in the second pattern (part == 1).
+                        if (subpart == 1 || part == 1) {
+                            throw new IllegalArgumentException(
+                                    "Unquoted special character '" +
+                                    ch + "' in pattern \"" +
+                                    pattern + '"');
+                        }
+                        sub2Limit = pos++;
+                        break PARTLOOP; // Go to next part
+                    } else if (ch == percent || ch == perMill) {
+                        // Next handle characters which are appended directly.
+                        if (multiplier != 1) {
+                            throw new IllegalArgumentException(
+                                    "Too many percent/permille characters "
+                                    + "in pattern \"" + pattern + '"');
+                        }
+                        if (ch == percent) {
+                            multiplier = 100;
+                            ch = symbols.getPercent();
+                        } else {
+                            multiplier = 1000;
+                            ch = symbols.getPerMill();
+                        }
+                        // Fall through to append(ch)
+                    } else if (ch == padEscape) {
+                        if (padPos >= 0) {
+                            throw new IllegalArgumentException(
+                                    "Multiple pad specifiers");
+                        }
+                        if ((pos+1) == pattern.length()) {
+                            throw new IllegalArgumentException(
+                                    "Invalid pad specifier");
+                        }
+                        padPos = pos++; // Advance past pad char
+                        padChar = pattern.charAt(pos);
+                        continue;
+                    }
+                    // Unquoted, non-special characters fall through to here, as
+                    // well as other code which needs to append something to the
+                    // affix.
+                    affix.append(ch);
+                    break;
+                case 3: // Prefix subpart, in quote
+                case 4: // Suffix subpart, in quote
+                    // A quote within quotes indicates either the closing
+                    // quote or two quotes, which is a quote literal.  That is,
+                    // we have the second quote in 'do' or 'don''t'.
+                    if (ch == QUOTE) {
+                        if ((pos+1) < pattern.length() &&
+                            pattern.charAt(pos+1) == QUOTE) {
+                            ++pos; 
+                            // Fall through to append(ch)
+                        } else {
+                            subpart -= 2; // close quote
+                            continue;
+                        }
+                    }
+                    /*Bug 4212072
+                      To process the localized pattern "#,##0'%'" of which percent 
+                      symbol is quoted
+                      [Richard/GCL]
+                    */
+                    if (ch == percent || ch == perMill) {
+                        // Next handle characters which are appended directly.
+                        if (multiplier != 1) {
+                            throw new IllegalArgumentException(
+                                "Too many percent/permille characters "
+                                + "in pattern \"" + pattern + '"');
+                        }
+                        if (ch == percent) {
+                            multiplier = 100;
+                            ch = symbols.getPercent();
+                        } else {
+                            multiplier = 1000;
+                            ch = symbols.getPerMill();
+                        }
+                    }
+                    affix.append(ch);
+                    break;                    
+                }
+            }
+
+            if (sub0Limit == 0) {
+                sub0Limit = pattern.length();
+            }
+
+            if (sub2Limit == 0) {
+                sub2Limit = pattern.length();
+            }
+
+            /* Handle patterns with no '0' pattern character.  These patterns
+             * are legal, but must be recodified to make sense.  "##.###" ->
+             * "#0.###".  ".###" -> ".0##".
+             *
+             * We allow patterns of the form "####" to produce a zeroDigitCount
+             * of zero (got that?); although this seems like it might make it
+             * possible for format() to produce empty strings, format() checks
+             * for this condition and outputs a zero digit in this situation.
+             * Having a zeroDigitCount of zero yields a minimum integer digits
+             * of zero, which allows proper round-trip patterns.  We don't want
+             * "#" to become "#0" when toPattern() is called (even though that's
+             * what it really is, semantically).
+             */
+            if (zeroDigitCount == 0 && digitLeftCount > 0 && decimalPos >= 0) {
+                // Handle "###.###" and "###." and ".###"
+                int n = decimalPos;
+                if (n == 0) ++n; // Handle ".###"
+                digitRightCount = digitLeftCount - n;
+                digitLeftCount = n - 1;
+                zeroDigitCount = 1;
+            }
+
+            // Do syntax checking on the digits, decimal points, and quotes.
+            if ((decimalPos < 0 && digitRightCount > 0) ||
+                (decimalPos >= 0 &&
+                 (decimalPos < digitLeftCount ||
+                  decimalPos > (digitLeftCount + zeroDigitCount))) ||
+                groupingCount == 0 || groupingCount2 == 0 ||
+                subpart > 2) { // subpart > 2 == unmatched quote
+                throw new IllegalArgumentException("Malformed pattern \"" +
+                                                   pattern + '"');
+            }
+
+            // Make sure pad is at legal position before or after affix.
+            if (padPos >= 0) {
+                if (padPos == start) {
+                    padPos = PAD_BEFORE_PREFIX;
+                } else if (padPos+2 == sub0Start) {
+                    padPos = PAD_AFTER_PREFIX;
+                } else if (padPos == sub0Limit) {
+                    padPos = PAD_BEFORE_SUFFIX;
+                } else if (padPos+2 == sub2Limit) {
+                    padPos = PAD_AFTER_SUFFIX;
+                } else {
+                    throw new IllegalArgumentException("Illegal pad position");
+                }
+            }
+
+            if (part == 0) {
+                // Set negative affixes temporarily to match the positive
+                // affixes.  Fix this up later after processing both parts.
+                /*Bug 4212072
+                  To meet the need of expandAffix(String, StirngBuffer)
+                  [Richard/GCL]
+                */
+                this.posPrefixPattern = this.negPrefixPattern = prefix.toString();
+                this.posSuffixPattern = this.negSuffixPattern = suffix.toString();
+                
+                useExponentialNotation = (expDigits >= 0);
+                if (useExponentialNotation) {
+                    minExponentDigits = expDigits;
+                    exponentSignAlwaysShown = expSignAlways;
+                }
+                isCurrencyFormat = isCurrency;
+                int digitTotalCount = digitLeftCount + zeroDigitCount + digitRightCount;
+                // The effectiveDecimalPos is the position the decimal is at or
+                // would be at if there is no decimal.  Note that if
+                // decimalPos<0, then digitTotalCount == digitLeftCount +
+                // zeroDigitCount.
+                int effectiveDecimalPos = decimalPos >= 0 ? decimalPos : digitTotalCount;
+                setMinimumIntegerDigits(effectiveDecimalPos - digitLeftCount);
+                /*Upper limit on integer and fraction digits for a Java double
+                  [Richard/GCL]
+                */
+                setMaximumIntegerDigits(useExponentialNotation
+                        ? digitLeftCount + getMinimumIntegerDigits() : DOUBLE_INTEGER_DIGITS);
+                setMaximumFractionDigits(decimalPos >= 0
+                        ? (digitTotalCount - decimalPos) : 0);
+                setMinimumFractionDigits(decimalPos >= 0
+                        ? (digitLeftCount + zeroDigitCount - decimalPos) : 0);
+                setGroupingUsed(groupingCount > 0);
+                this.groupingSize = (groupingCount > 0) ? groupingCount : 0;
+                this.groupingSize2 = (groupingCount2 > 0 && groupingCount2 != groupingCount)
+                    ? groupingCount2 : 0;
+                this.multiplier = multiplier;
+                setDecimalSeparatorAlwaysShown(decimalPos == 0
+                        || decimalPos == digitTotalCount);
+                if (padPos >= 0) {
+                    padPosition = padPos;
+                    formatWidth = prefix.length() + suffix.length() +
+                        sub0Limit - sub0Start;
+                    pad = padChar;
+                } else {
+                    formatWidth = 0;
+                }
+                if (incrementVal != 0) {
+                    // BigDecimal scale cannot be negative (even though
+                    // this makes perfect sense), so we need to handle this.
+                    int scale = incrementPos - effectiveDecimalPos;
+                    roundingIncrement =
+                        java.math.BigDecimal.valueOf(incrementVal, scale > 0 ? scale : 0);
+                    if (scale < 0) {
+                        roundingIncrement =
+                            roundingIncrement.movePointRight(-scale);
+                    }
+                    roundingDouble = roundingIncrement.doubleValue();
+                    roundingMode = java.math.BigDecimal.ROUND_HALF_EVEN;
+                } else {
+                    setRoundingIncrement(null);
+                }
+            } else {
+                /*Bug 4212072
+                  To meet the need of expandAffix(String, StirngBuffer)
+                  [Richard/GCL]
+                */
+                this.negPrefixPattern = prefix.toString();
+                this.negSuffixPattern = suffix.toString();
+                gotNegative = true;
+            }
+        }
+
+        /*Bug 4140009
+          Process the empty pattern
+          [Richard/GCL]
+        */
+        if (pattern.length() == 0) {
+            posPrefixPattern = posSuffixPattern = "";
+            setMinimumIntegerDigits(0);
+            setMaximumIntegerDigits(DOUBLE_INTEGER_DIGITS);
+            setMinimumFractionDigits(0);
+            setMaximumFractionDigits(DOUBLE_FRACTION_DIGITS);
+        }
+        
+        // If there was no negative pattern, or if the negative pattern is
+        // identical to the positive pattern, then prepend the minus sign to the
+        // positive pattern to form the negative pattern.
+        /*Bug 4212072
+          To meet the need of expandAffix(String, StirngBuffer)
+          [Richard/GCL]
+        */
+        if (!gotNegative ||
+            (negPrefixPattern.equals(posPrefixPattern)
+             && negSuffixPattern.equals(posSuffixPattern))) {
+            negSuffixPattern = posSuffixPattern;
+            negPrefixPattern = symbols.getMinusSign() + posPrefixPattern;
+        }
+        /*Bug 4212072
+          Update the affix strings accroding to symbols in order to keep
+          the affix strings up to date.
+          [Richard/GCL]
+        */
+        expandAffixes();
+    }
+
+    /*Rewrite the following 4 "set" methods
+      Upper limit on integer and fraction digits for a Java double 
+      [Richard/GCL]
+    */
+    /**
+     * Sets the maximum number of digits allowed in the integer portion of a
+     * number. This override limits the integer digit count to 309.
+     * @see NumberFormat#setMaximumIntegerDigits
+     */
+    public void setMaximumIntegerDigits(int newValue) {
+        super.setMaximumIntegerDigits(Math.min(newValue, DOUBLE_INTEGER_DIGITS));
+    }
+
+    /**
+     * Sets the minimum number of digits allowed in the integer portion of a
+     * number. This override limits the integer digit count to 309.
+     * @see NumberFormat#setMinimumIntegerDigits
+     */
+    public void setMinimumIntegerDigits(int newValue) {
+        super.setMinimumIntegerDigits(Math.min(newValue, DOUBLE_INTEGER_DIGITS));
+    }
+
+    /**
+     * Sets the <tt>Currency</tt> object used to display currency
+     * amounts.  This takes effect immediately, if this format is a
+     * currency format.  If this format is not a currency format, then
+     * the currency object is used if and when this object becomes a
+     * currency format through the application of a new pattern.
+     * @param theCurrency new currency object to use.  Must not be
+     * null.
+     * @since ICU 2.2
+     */
+    public void setCurrency(Currency theCurrency) {
+        // If we are a currency format, then modify our affixes to
+        // encode the currency symbol for the given currency in our
+        // locale, and adjust the decimal digits and rounding for the
+        // given currency.
+
+        currency = theCurrency;
+
+        if (isCurrencyFormat) {
+            setRoundingIncrement(currency.getRoundingIncrement());
+
+            int d = currency.getDefaultFractionDigits();
+            setMinimumFractionDigits(d);
+            setMaximumFractionDigits(d);
+
+            expandAffixes();
+        }
+    }
+
+    /**
+     * Gets the <tt>Currency</tt> object used to display currency
+     * amounts.  This will be null if a object is resurrected with a
+     * custom DecimalFormatSymbols object, or if the user sets a
+     * custom DecimalFormatSymbols object.  A custom
+     * DecimalFormatSymbols object has currency symbols that are not
+     * the standard ones for its locale.
+     * @since ICU 2.2
+     */
+    public Currency getCurrency() {
+        return currency;
+    }
+    
+    /**
+     * Sets the maximum number of digits allowed in the fraction portion of a
+     * number. This override limits the fraction digit count to 340.
+     * @see NumberFormat#setMaximumFractionDigits
+     */
+    public void setMaximumFractionDigits(int newValue) {
+        super.setMaximumFractionDigits(Math.min(newValue, DOUBLE_FRACTION_DIGITS));
+    }
+
+    /**
+     * Sets the minimum number of digits allowed in the fraction portion of a
+     * number. This override limits the fraction digit count to 340.
+     * @see NumberFormat#setMinimumFractionDigits
+     */
+    public void setMinimumFractionDigits(int newValue) {
+        super.setMinimumFractionDigits(Math.min(newValue, DOUBLE_FRACTION_DIGITS));
+    }
+
+    /**
+     * First, read the default serializable fields from the stream.  Then
+     * if <code>serialVersionOnStream</code> is less than 1, indicating that
+     * the stream was written by JDK 1.1, initialize <code>useExponentialNotation</code>
+     * to false, since it was not present in JDK 1.1.
+     * Finally, set serialVersionOnStream back to the maximum allowed value so that
+     * default serialization will work properly if this object is streamed out again.
+     */
+    private void readObject(ObjectInputStream stream)
+         throws IOException, ClassNotFoundException
+    {
+        stream.defaultReadObject();
+        /*Bug 4185761 validate fields
+          [Richard/GCL]
+        */
+        // We only need to check the maximum counts because NumberFormat
+        // .readObject has already ensured that the maximum is greater than the
+        // minimum count.
+        /*Commented for compatibility with previous version, and reserved for further use
+        if (getMaximumIntegerDigits() > DOUBLE_INTEGER_DIGITS ||
+            getMaximumFractionDigits() > DOUBLE_FRACTION_DIGITS) {
+            throw new InvalidObjectException("Digit count out of range");
+        }*/
+        /* Truncate the maximumIntegerDigits to DOUBLE_INTEGER_DIGITS and maximumFractionDigits
+         * to DOUBLE_FRACTION_DIGITS
+         */
+        if (getMaximumIntegerDigits() > DOUBLE_INTEGER_DIGITS) {
+             setMaximumIntegerDigits(DOUBLE_INTEGER_DIGITS);
+        }
+        if (getMaximumFractionDigits() > DOUBLE_FRACTION_DIGITS) {
+            setMaximumFractionDigits(DOUBLE_FRACTION_DIGITS);
+        }
+        if (serialVersionOnStream < 2) {
+            exponentSignAlwaysShown = false;
+            roundingDouble = 0.0;
+            roundingIncrement = null;
+            roundingMode = java.math.BigDecimal.ROUND_HALF_EVEN;
+            formatWidth = 0;
+            pad = ' ';
+            padPosition = PAD_BEFORE_PREFIX;
+            if (serialVersionOnStream < 1) {
+                // Didn't have exponential fields
+                useExponentialNotation = false;
+            }
+        }
+        if (serialVersionOnStream < 3) {
+            // Versions prior to 3 do not store a currency object.
+            // Create one to match the DecimalFormatSymbols object.
+            setCurrencyForSymbols();
+        }
+        serialVersionOnStream = currentSerialVersion;
+        digitList = new DigitList();
+    }
+
+    //----------------------------------------------------------------------
+    // INSTANCE VARIABLES
+    //----------------------------------------------------------------------
+
+    private transient DigitList digitList = new DigitList();
+
+    /**
+     * The symbol used as a prefix when formatting positive numbers, e.g. "+".
+     *
+     * @serial
+     * @see #getPositivePrefix
+     */
+    private String  positivePrefix = "";
+
+    /**
+     * The symbol used as a suffix when formatting positive numbers.
+     * This is often an empty string.
+     *
+     * @serial
+     * @see #getPositiveSuffix
+     */
+    private String  positiveSuffix = "";
+
+    /**
+     * The symbol used as a prefix when formatting negative numbers, e.g. "-".
+     *
+     * @serial
+     * @see #getNegativePrefix
+     */
+    private String  negativePrefix = "-";
+
+    /**
+     * The symbol used as a suffix when formatting negative numbers.
+     * This is often an empty string.
+     *
+     * @serial
+     * @see #getNegativeSuffix
+     */
+    private String  negativeSuffix = "";
+    
+    /**
+     * The prefix pattern for non-negative numbers.  This variable corresponds
+     * to <code>positivePrefix</code>.
+     *
+     * <p>This pattern is expanded by the method <code>expandAffix()</code> to
+     * <code>positivePrefix</code> to update the latter to reflect changes in
+     * <code>symbols</code>.  If this variable is <code>null</code> then
+     * <code>positivePrefix</code> is taken as a literal value that does not
+     * change when <code>symbols</code> changes.  This variable is always
+     * <code>null</code> for <code>DecimalFormat</code> objects older than
+     * stream version 2 restored from stream.
+     *
+     * @serial
+     */
+    //[Richard/GCL]
+    private String posPrefixPattern;
+
+    /**
+     * The suffix pattern for non-negative numbers.  This variable corresponds
+     * to <code>positiveSuffix</code>.  This variable is analogous to
+     * <code>posPrefixPattern</code>; see that variable for further
+     * documentation.
+     *
+     * @serial
+     */
+    //[Richard/GCL]
+    private String posSuffixPattern;
+
+    /**
+     * The prefix pattern for negative numbers.  This variable corresponds
+     * to <code>negativePrefix</code>.  This variable is analogous to
+     * <code>posPrefixPattern</code>; see that variable for further
+     * documentation.
+     *
+     * @serial
+     */
+    //[Richard/GCL]
+    private String negPrefixPattern;
+
+    /**
+     * The suffix pattern for negative numbers.  This variable corresponds
+     * to <code>negativeSuffix</code>.  This variable is analogous to
+     * <code>posPrefixPattern</code>; see that variable for further
+     * documentation.
+     *
+     * @serial
+     */
+    //[Richard/GCL]
+    private String negSuffixPattern;
+    
+    /**
+     * The multiplier for use in percent, permill, etc.
+     *
+     * @serial
+     * @see #getMultiplier
+     */
+    private int     multiplier = 1;
+    
+    /**
+     * The number of digits between grouping separators in the integer
+     * portion of a number.  Must be greater than 0 if
+     * <code>NumberFormat.groupingUsed</code> is true.
+     *
+     * @serial
+     * @see #getGroupingSize
+     * @see NumberFormat#isGroupingUsed
+     */
+    private byte    groupingSize = 3;  // invariant, > 0 if useThousands
+
+    /**
+     * The secondary grouping size.  This is only used for Hindi
+     * numerals, which use a primary grouping of 3 and a secondary
+     * grouping of 2, e.g., "12,34,567".  If this value is less than
+     * 1, then secondary grouping is equal to the primary grouping.
+     * [NEW]
+     */
+    private byte    groupingSize2 = 0;
+    
+    /**
+     * If true, forces the decimal separator to always appear in a formatted
+     * number, even if the fractional part of the number is zero.
+     *
+     * @serial
+     * @see #isDecimalSeparatorAlwaysShown
+     */
+    private boolean decimalSeparatorAlwaysShown = false;
+    
+    /**
+     * True if this object represents a currency format.  This determines
+     * whether the monetary decimal separator is used instead of the normal one.
+     */
+    private transient boolean isCurrencyFormat = false;
+    
+    /**
+     * The <code>DecimalFormatSymbols</code> object used by this format.
+     * It contains the symbols used to format numbers, e.g. the grouping separator,
+     * decimal separator, and so on.
+     *
+     * @serial
+     * @see #setDecimalFormatSymbols
+     * @see DecimalFormatSymbols
+     */
+    private DecimalFormatSymbols symbols = null; // LIU new DecimalFormatSymbols();
+
+    /**
+     * True to force the use of exponential (i.e. scientific) notation when formatting
+     * numbers.
+     * <p>
+     * Note that the JDK 1.2 public API provides no way to set this field,
+     * even though it is supported by the implementation and the stream format.
+     * The intent is that this will be added to the API in the future.
+     *
+     * @serial
+     */
+    private boolean useExponentialNotation;  // Newly persistent in JDK 1.2
+
+    /**
+     * The minimum number of digits used to display the exponent when a number is
+     * formatted in exponential notation.  This field is ignored if
+     * <code>useExponentialNotation</code> is not true.
+     * <p>
+     * Note that the JDK 1.2 public API provides no way to set this field,
+     * even though it is supported by the implementation and the stream format.
+     * The intent is that this will be added to the API in the future.
+     *
+     * @serial
+     */
+    private byte    minExponentDigits;       // Newly persistent in JDK 1.2
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * If true, the exponent is always prefixed with either the plus
+     * sign or the minus sign.  Otherwise, only negative exponents are
+     * prefixed with the minus sign.  This has no effect unless
+     * <code>useExponentialNotation</code> is true.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private boolean exponentSignAlwaysShown = false;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The value to which numbers are rounded during formatting.  For example,
+     * if the rounding increment is 0.05, then 13.371 would be formatted as
+     * 13.350, assuming 3 fraction digits.  Has the value <code>null</code> if
+     * rounding is not in effect, or a positive value if rounding is in effect.
+     * Default value <code>null</code>.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private java.math.BigDecimal roundingIncrement = null;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The rounding increment as a double.  If this value is <= 0, then no
+     * rounding is done.  This value is
+     * <code>roundingIncrement.doubleValue()</code>.  Default value 0.0.
+     */
+    private transient double roundingDouble = 0.0;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The rounding mode.  This value controls any rounding operations which
+     * occur when applying a rounding increment or when reducing the number of
+     * fraction digits to satisfy a maximum fraction digits limit.  The value
+     * may assume any of the <code>BigDecimal</code> rounding mode values.
+     * Default value <code>BigDecimal.ROUND_HALF_EVEN</code>.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private int roundingMode = java.math.BigDecimal.ROUND_HALF_EVEN;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The padded format width, or zero if there is no padding.  Must
+     * be >= 0.  Default value zero.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private int formatWidth = 0;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The character used to pad the result of format to
+     * <code>formatWidth</code>, if padding is in effect.  Default value ' '.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private char pad = ' ';
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The position in the string at which the <code>pad</code> character
+     * will be inserted, if padding is in effect.  Must have a value from
+     * <code>PAD_BEFORE_PREFIX</code> to <code>PAD_AFTER_SUFFIX</code>.
+     * Default value <code>PAD_BEFORE_PREFIX</code>.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private int padPosition = PAD_BEFORE_PREFIX;
+
+    /**
+     * Currency object used to format currencies.  Only used if
+     * <tt>isCurrencyFormat</tt> is true.  In some cases this will be
+     * null: If a pre-2.2 object is resurrected with a custom
+     * DecimalFormatSymbols object, or if the user sets a custom DFS
+     * object.  A custom DFS object has currency symbols that are not
+     * the standard ones for its locale.
+     * @since ICU 2.2
+     */
+    private Currency currency;
+
+    //----------------------------------------------------------------------
+
+    static final int currentSerialVersion = 3;
+
+    /**
+     * The internal serial version which says which version was written
+     * Possible values are:
+     * <ul>
+     * <li><b>0</b> (default): versions before JDK 1.2
+     * <li><b>1</b>: version from JDK 1.2 and later, which includes the two new fields
+     *      <code>useExponentialNotation</code> and <code>minExponentDigits</code>.
+     * <li><b>2</b>: version on AlphaWorks, which adds roundingMode, formatWidth,
+     *      pad, padPosition, exponentSignAlwaysShown, roundingIncrement.
+     * <li><b>3</b>: ICU 2.2.  Adds currency object.
+     * </ul>
+     * @serial */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    //----------------------------------------------------------------------
+    // CONSTANTS
+    //----------------------------------------------------------------------
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Constant for <code>getPadPosition()</code> and
+     * <code>setPadPosition()</code> specifying pad characters inserted before
+     * the prefix.
+     * @see #setPadPosition
+     * @see #getPadPosition
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @see #PAD_AFTER_SUFFIX
+     */
+    public static final int PAD_BEFORE_PREFIX = 0;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Constant for <code>getPadPosition()</code> and
+     * <code>setPadPosition()</code> specifying pad characters inserted after
+     * the prefix.
+     * @see #setPadPosition
+     * @see #getPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @see #PAD_AFTER_SUFFIX
+     */
+    public static final int PAD_AFTER_PREFIX  = 1;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Constant for <code>getPadPosition()</code> and
+     * <code>setPadPosition()</code> specifying pad characters inserted before
+     * the suffix.
+     * @see #setPadPosition
+     * @see #getPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_AFTER_SUFFIX
+     */
+    public static final int PAD_BEFORE_SUFFIX = 2;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Constant for <code>getPadPosition()</code> and
+     * <code>setPadPosition()</code> specifying pad characters inserted after
+     * the suffix.
+     * @see #setPadPosition
+     * @see #getPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     */
+    public static final int PAD_AFTER_SUFFIX  = 3;
+
+    // Constants for characters used in programmatic (unlocalized) patterns.
+    private static final char       PATTERN_ZERO_DIGIT         = '0';
+    private static final char       PATTERN_GROUPING_SEPARATOR = ',';
+    private static final char       PATTERN_DECIMAL_SEPARATOR  = '.';
+    private static final char       PATTERN_PER_MILLE          = '\u2030';
+    private static final char       PATTERN_PERCENT            = '%';
+    private static final char       PATTERN_DIGIT              = '#';
+    private static final char       PATTERN_SEPARATOR          = ';';
+            static final String     PATTERN_EXPONENT           = "E"; // [NEW]
+            static final char       PATTERN_PAD_ESCAPE         = '*'; // [NEW]
+            static final char       PATTERN_PLUS_SIGN          = '+'; // [NEW]
+    /*Bug 4212072
+      To meet the need of expandAffix(String, StirngBuffer)
+      [Richard/GCL]
+    */
+    private static final char       PATTERN_MINUS              = '-'; //[Richard/GCL]
+    
+    // Pad escape is package private to allow access by DecimalFormatSymbols.
+    // Also plus sign.  Also exponent.
+
+    /**
+     * The CURRENCY_SIGN is the standard Unicode symbol for currency.  It
+     * is used in patterns and substitued with either the currency symbol,
+     * or if it is doubled, with the international currency symbol.  If the
+     * CURRENCY_SIGN is seen in a pattern, then the decimal separator is
+     * replaced with the monetary decimal separator.
+     *
+     * The CURRENCY_SIGN is not localized.
+     */
+    private static final char       CURRENCY_SIGN = '\u00A4';
+
+    private static final char       QUOTE = '\'';
+    
+    /* Upper limit on integer and fraction digits for a Java double
+       [Richard/GCL]
+    */
+    static final int DOUBLE_INTEGER_DIGITS  = 309;
+    static final int DOUBLE_FRACTION_DIGITS = 340;
+    
+    // Proclaim JDK 1.1 serial compatibility.
+    static final long serialVersionUID = 864413376551465018L;
+
+    /**
+     * Cache to hold the NumberPattern of a Locale.
+     * [NEW] No longer needed -- share the NumberFormat cache
+     */
+    // private static Hashtable cachedLocaleData = new Hashtable(3);
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/DecimalFormatSymbols.java b/src/com/ibm/icu/text/DecimalFormatSymbols.java
new file mode 100755
index 0000000..ecd8d28
--- /dev/null
+++ b/src/com/ibm/icu/text/DecimalFormatSymbols.java
@@ -0,0 +1,643 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/DecimalFormatSymbols.java,v $ 
+ * $Date: 2002/05/08 23:36:37 $ 
+ * $Revision: 1.6 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICULocaleData;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.Serializable;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+/**
+ * This class represents the set of symbols (such as the decimal separator, the
+ * grouping separator, and so on) needed by <code>DecimalFormat</code> to format
+ * numbers. <code>DecimalFormat</code> creates for itself an instance of
+ * <code>DecimalFormatSymbols</code> from its locale data.  If you need to
+ * change any of these symbols, you can get the
+ * <code>DecimalFormatSymbols</code> object from your <code>DecimalFormat</code>
+ * and modify it.
+ *
+ * <p><strong>This is an enhanced version of <code>DecimalFormatSymbols</code> that
+ * is based on the standard version in the JDK.  New or changed functionality
+ * is labeled
+ * <strong><font face=helvetica color=red>NEW</font></strong>.</strong>
+ *
+ * @see          java.util.Locale
+ * @see          DecimalFormat
+ * @version      1.12 29 Jan 1997
+ * @author       Mark Davis
+ * @author       Alan Liu
+ */
+
+final public class DecimalFormatSymbols implements Cloneable, Serializable {
+
+    /**
+     * Create a DecimalFormatSymbols object for the default locale.
+     */
+    public DecimalFormatSymbols() {
+        initialize( Locale.getDefault() );
+    }
+
+    /**
+     * Create a DecimalFormatSymbols object for the given locale.
+     */
+    public DecimalFormatSymbols( Locale locale ) {
+        initialize( locale );
+    }
+
+    /**
+     * character used for zero. Different for Arabic, etc.
+     */
+    public char getZeroDigit() {
+        return zeroDigit;
+    }
+
+    public void setZeroDigit(char zeroDigit) {
+        this.zeroDigit = zeroDigit;
+    }
+
+    /**
+     * character used for thousands separator. Different for French, etc.
+     */
+    public char getGroupingSeparator() {
+        return groupingSeparator;
+    }
+
+    public void setGroupingSeparator(char groupingSeparator) {
+        this.groupingSeparator = groupingSeparator;
+    }
+
+    /**
+     * character used for decimal sign. Different for French, etc.
+     */
+    public char getDecimalSeparator() {
+        return decimalSeparator;
+    }
+
+    public void setDecimalSeparator(char decimalSeparator) {
+        this.decimalSeparator = decimalSeparator;
+    }
+
+    /**
+     * character used for mille percent sign. Different for Arabic, etc.
+     */
+    public char getPerMill() {
+        return perMill;
+    }
+
+    public void setPerMill(char perMill) {
+        this.perMill = perMill;
+    }
+
+    /**
+     * character used for percent sign. Different for Arabic, etc.
+     */
+    public char getPercent() {
+        return percent;
+    }
+
+    public void setPercent(char percent) {
+        this.percent = percent;
+    }
+
+    /**
+     * character used for a digit in a pattern.
+     */
+    public char getDigit() {
+        return digit;
+    }
+
+    public void setDigit(char digit) {
+        this.digit = digit;
+    }
+
+    /**
+     * character used to separate positive and negative subpatterns
+     * in a pattern.
+     */
+    public char getPatternSeparator() {
+        return patternSeparator;
+    }
+
+    public void setPatternSeparator(char patternSeparator) {
+        this.patternSeparator = patternSeparator;
+    }
+
+    /**
+     * String used to represent infinity. Almost always left
+     * unchanged.
+     */
+     //Bug 4194173 [Richard/GCL]
+
+    public String getInfinity() {
+        return infinity;
+    }
+
+    public void setInfinity(String infinity) {
+        this.infinity = infinity;
+    }
+
+    /**
+     * String used to represent NaN. Almost always left
+     * unchanged.
+     */
+     //Bug 4194173 [Richard/GCL]
+    public String getNaN() {
+        return NaN;
+    }
+
+    public void setNaN(String NaN) {
+        this.NaN = NaN;
+    }
+
+    /**
+     * character used to represent minus sign. If no explicit
+     * negative format is specified, one is formed by prefixing
+     * minusSign to the positive format.
+     */
+    public char getMinusSign() {
+        return minusSign;
+    }
+
+    public void setMinusSign(char minusSign) {
+        this.minusSign = minusSign;
+    }
+
+    /**
+     * Return the string denoting the local currency.
+     */
+    public String getCurrencySymbol()
+    {
+        return currencySymbol;
+    }
+
+    /**
+     * Set the string denoting the local currency.
+     */
+    public void setCurrencySymbol(String currency)
+    {
+        currencySymbol = currency;
+    }
+
+    /**
+     * Return the international string denoting the local currency.
+     */
+    public String getInternationalCurrencySymbol()
+    {
+        return intlCurrencySymbol;
+    }
+
+    /**
+     * Set the international string denoting the local currency.
+     */
+    public void setInternationalCurrencySymbol(String currency)
+    {
+        intlCurrencySymbol = currency;
+    }
+
+    /**
+     * Return the monetary decimal separator.
+     */
+    public char getMonetaryDecimalSeparator()
+    {
+        return monetarySeparator;
+    }
+
+    /**
+     * Set the monetary decimal separator.
+     */
+    public void setMonetaryDecimalSeparator(char sep)
+    {
+        monetarySeparator = sep;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return the string used to separate the mantissa from the exponent.
+     * Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
+     * @return the localized exponent symbol, used in localized patterns
+     * and formatted strings
+     * @see #setExponentSeparator
+     */
+    public String getExponentSeparator()
+    {
+        return exponentSeparator;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the string used to separate the mantissa from the exponent.
+     * Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
+     * @param exp the localized exponent symbol, used in localized patterns
+     * and formatted strings
+     * @see #getExponentSeparator
+     */
+    public void setExponentSeparator(String exp)
+    {
+        exponentSeparator = exp;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return the localized plus sign.
+     * @return the plus sign, used in localized patterns and formatted
+     * strings
+     * @see #setPlusSign
+     * @see #setMinusSign
+     * @see #getMinusSign
+     */
+    public char getPlusSign() {
+        return plusSign;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the localized plus sign.
+     * @param plus the plus sign, used in localized patterns and formatted
+     * strings
+     * @see #getPlusSign
+     * @see #setMinusSign
+     * @see #getMinusSign
+     */
+    public void setPlusSign(char plus) {
+        plusSign = plus;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return the character used to pad numbers out to a specified width.  This
+     * is not the pad character itself; rather, it is the special pattern
+     * character <em>preceding</em> the pad character.  In the pattern
+     * "*_#,##0", '*' is the pad escape, and '_' is the pad character.
+     * @return the character 
+     * @see #setPadEscape
+     * @see DecimalFormat#getFormatWidth
+     * @see DecimalFormat#getPadPosition
+     * @see DecimalFormat#getPadCharacter
+     */
+    public char getPadEscape() {
+        return padEscape;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the character used to pad numbers out to a specified width.  This is
+     * not the pad character itself; rather, it is the special pattern character
+     * <em>preceding</em> the pad character.  In the pattern "*_#,##0", '*' is
+     * the pad escape, and '_' is the pad character.
+     * @see #getPadEscape
+     * @see DecimalFormat#setFormatWidth
+     * @see DecimalFormat#setPadPosition
+     * @see DecimalFormat#setPadCharacter
+     */
+    public void setPadEscape(char c) {
+        padEscape = c;
+    }
+
+    /**
+     * Returns the locale for which this object was constructed.
+     */
+    public Locale getLocale() {
+        return locale;
+    }
+
+    /**
+     * Standard override.
+     */
+    public Object clone() {
+        try {
+            return (DecimalFormatSymbols)super.clone();
+            // other fields are bit-copied
+        } catch (CloneNotSupportedException e) {
+            throw new InternalError();
+        }
+    }
+
+    /**
+     * Override equals
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (this == obj) return true;
+        if (getClass() != obj.getClass()) return false;
+        DecimalFormatSymbols other = (DecimalFormatSymbols) obj;
+        return (zeroDigit == other.zeroDigit &&
+        groupingSeparator == other.groupingSeparator &&
+        decimalSeparator == other.decimalSeparator &&
+        percent == other.percent &&
+        perMill == other.perMill &&
+        digit == other.digit &&
+        minusSign == other.minusSign &&
+        patternSeparator == other.patternSeparator &&
+        infinity.equals(other.infinity) &&
+        NaN.equals(other.NaN) &&
+        currencySymbol.equals(other.currencySymbol) &&
+        intlCurrencySymbol.equals(other.intlCurrencySymbol) &&
+        padEscape == other.padEscape && // [NEW]
+        plusSign == other.plusSign && // [NEW]
+        exponentSeparator.equals(other.exponentSeparator) && // [NEW]
+        monetarySeparator == other.monetarySeparator);
+    }
+
+    /**
+     * Override hashCode
+     */
+    public int hashCode() {
+            int result = zeroDigit;
+            result = result * 37 + groupingSeparator;
+            result = result * 37 + decimalSeparator;
+            return result;
+    }
+
+    /**
+     * Initializes the symbols from the LocaleElements resource bundle.
+     * Note: The organization of LocaleElements badly needs to be
+     * cleaned up.
+     */
+    private void initialize( Locale locale ) {
+        this.locale = locale;
+        /* try the cache first */
+        String[][] data = (String[][]) cachedLocaleData.get(locale);
+        String[] numberElements;
+        String[] currencyElements;
+        if (data == null) {  /* cache miss */
+            data = new String[2][];
+            ResourceBundle rb = ICULocaleData.getLocaleElements(locale);
+            data[0] = rb.getStringArray("NumberElements");
+            data[1] = rb.getStringArray("CurrencyElements");
+            /* update cache */
+            cachedLocaleData.put(locale, data);
+        }
+        numberElements = data[0];
+        currencyElements = data[1];
+
+	// {dlf} clean up below now that we have our own resource data
+        decimalSeparator = numberElements[0].charAt(0);
+        groupingSeparator = numberElements[1].charAt(0);
+        // [NEW] Temporary hack to support old JDK 1.1 resources
+        patternSeparator = numberElements[2].length() > 0 ?
+            numberElements[2].charAt(0) : ';';
+        // patternSeparator = numberElements[2].charAt(0);
+        percent = numberElements[3].charAt(0);
+        zeroDigit = numberElements[4].charAt(0); //different for Arabic,etc.
+        digit = numberElements[5].charAt(0);
+        minusSign = numberElements[6].charAt(0);
+        
+        // [NEW] Temporary hack to support JDK versions before 1.1.6 (?)
+        exponentSeparator = numberElements.length >= 9 ?
+            numberElements[7] : DecimalFormat.PATTERN_EXPONENT;
+        perMill = numberElements.length >= 9 ?
+            numberElements[8].charAt(0) : '\u2030';
+        infinity  = numberElements.length >= 10 ?
+            numberElements[9] : "\u221e";
+        NaN = numberElements.length >= 11 ?
+            numberElements[10] : "\ufffd";
+        
+        // [NEW] Temporarily hard code; retrieve from resource later
+        plusSign  = DecimalFormat.PATTERN_PLUS_SIGN;
+        padEscape = DecimalFormat.PATTERN_PAD_ESCAPE;
+
+        currencySymbol = currencyElements[0];
+        intlCurrencySymbol = currencyElements[1];
+
+        // if the resource data specified the empty string as the monetary decimal
+        // separator, that means we should just use the regular separator as the
+        // monetary separator
+        if (currencyElements[2].length() == 0)
+            monetarySeparator = decimalSeparator;
+        else
+            monetarySeparator = currencyElements[2].charAt(0);
+    }
+
+    /**
+     * Read the default serializable fields, then if <code>serialVersionOnStream</code>
+     * is less than 1, initialize <code>monetarySeparator</code> to be
+     * the same as <code>decimalSeparator</code> and <code>exponential</code>
+     * to be 'E'.
+     * Finally, set serialVersionOnStream back to the maximum allowed value so that
+     * default serialization will work properly if this object is streamed out again.
+     *
+     */
+    private void readObject(ObjectInputStream stream)
+        throws IOException, ClassNotFoundException {
+        stream.defaultReadObject();
+        if (serialVersionOnStream < 1) {
+            // Didn't have monetarySeparator or exponential field;
+            // use defaults.
+            monetarySeparator = decimalSeparator;
+            exponential = 'E';
+        }
+        if (serialVersionOnStream < 2) { // [NEW]
+            padEscape = DecimalFormat.PATTERN_PAD_ESCAPE;
+            plusSign = DecimalFormat.PATTERN_PLUS_SIGN;
+            exponentSeparator = String.valueOf(exponential);
+            // Although we read the exponential field on stream to create the
+            // exponentSeparator, we don't do the reverse, since scientific
+            // notation isn't supported by the old classes, even though the
+            // symbol is there.
+        }
+        if (serialVersionOnStream < 3) {
+            // Resurrected objects from old streams will have no
+            // locale.  There is no 100% fix for this.  A
+            // 90% fix is to construct a mapping of data back to
+            // locale, perhaps a hash of all our members.  This is
+            // expensive and doesn't seem worth it.
+            locale = Locale.getDefault();
+        }
+        serialVersionOnStream = currentSerialVersion;
+    }
+
+    /**
+     * Character used for zero.
+     *
+     * @serial
+     * @see #getZeroDigit
+     */
+    private  char    zeroDigit;
+
+    /**
+     * Character used for thousands separator.
+     *
+     * @serial
+     * @see #getGroupingSeparator
+     */
+    private  char    groupingSeparator;
+
+    /**
+     * Character used for decimal sign.
+     *
+     * @serial
+     * @see #getDecimalSeparator
+     */
+    private  char    decimalSeparator;
+
+    /**
+     * Character used for mille percent sign.
+     *
+     * @serial
+     * @see #getPerMill
+     */
+    private  char    perMill;
+
+    /**
+     * Character used for percent sign.
+     * @serial
+     * @see #getPercent
+     */
+    private  char    percent;
+
+    /**
+     * Character used for a digit in a pattern.
+     *
+     * @serial
+     * @see #getDigit
+     */
+    private  char    digit;
+
+    /**
+     * Character used to separate positive and negative subpatterns
+     * in a pattern.
+     *
+     * @serial
+     * @see #getPatternSeparator
+     */
+    private  char    patternSeparator;
+
+    /**
+     * Character used to represent infinity.
+     * @serial
+     * @see #getInfinity
+     */
+    private  String  infinity;
+
+    /**
+     * Character used to represent NaN.
+     * @serial
+     * @see #getNaN
+     */
+    private  String  NaN;
+
+    /**
+     * Character used to represent minus sign.
+     * @serial
+     * @see #getMinusSign
+     */
+    private  char    minusSign;
+
+    /**
+     * String denoting the local currency, e.g. "$".
+     * @serial
+     * @see #getCurrencySymbol
+     */
+    private  String  currencySymbol;
+
+    /**
+     * International string denoting the local currency, e.g. "USD".
+     * @serial
+     * @see #getInternationalCurrencySymbol
+     */
+    private  String  intlCurrencySymbol;
+
+    /**
+     * The decimal separator used when formatting currency values.
+     * @serial
+     * @see #getMonetaryDecimalSeparator
+     */
+    private  char    monetarySeparator; // Field new in JDK 1.1.6
+
+    /**
+     * The character used to distinguish the exponent in a number formatted
+     * in exponential notation, e.g. 'E' for a number such as "1.23E45".
+     * <p>
+     * Note that this field has been superseded by <code>exponentSeparator</code>.
+     * It is retained for backward compatibility.
+     *
+     * @serial
+     */
+    private  char    exponential;       // Field new in JDK 1.1.6
+
+    /**
+     * The string used to separate the mantissa from the exponent.
+     * Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
+     * <p>
+     * Note that this supersedes the <code>exponential</code> field.
+     *
+     * @serial
+     * @since AlphaWorks
+     */
+    private String exponentSeparator;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The character used to indicate a padding character in a format,
+     * e.g., '*' in a pattern such as "$*_#,##0.00".
+     * @serial
+     * @since AlphaWorks
+     */
+    private char padEscape;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The character used to indicate a plus sign.
+     * @serial
+     * @since AlphaWorks
+     */
+    private char plusSign;
+
+    /**
+     * The locale for which this object was constructed.  Set to the
+     * default locale for objects resurrected from old streams.
+     * @since ICU 2.2
+     */
+    private Locale locale;
+
+    // Proclaim JDK 1.1 FCS compatibility
+    static final long serialVersionUID = 5772796243397350300L;
+
+    // The internal serial version which says which version was written
+    // - 0 (default) for version up to JDK 1.1.5
+    // - 1 for version from JDK 1.1.6, which includes two new fields:
+    //     monetarySeparator and exponential.
+    // - 2 for version from AlphaWorks, which includes 3 new fields:
+    //     padEscape, exponentSeparator, and plusSign.
+    // - 3 for ICU 2.2, which includes the locale field
+    private static final int currentSerialVersion = 3;
+    
+    /**
+     * Describes the version of <code>DecimalFormatSymbols</code> present on the stream.
+     * Possible values are:
+     * <ul>
+     * <li><b>0</b> (or uninitialized): versions prior to JDK 1.1.6.
+     *
+     * <li><b>1</b>: Versions written by JDK 1.1.6 or later, which includes
+     *      two new fields: <code>monetarySeparator</code> and <code>exponential</code>.
+     * <li><b>2</b>: Version for AlphaWorks.  Adds padEscape, exponentSeparator,
+     *      and plusSign.
+     * </ul>
+     * When streaming out a <code>DecimalFormatSymbols</code>, the most recent format
+     * (corresponding to the highest allowable <code>serialVersionOnStream</code>)
+     * is always written.
+     *
+     * @serial
+     */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    /**
+     * cache to hold the NumberElements and the CurrencyElements
+     * of a Locale.
+     */
+    private static final Hashtable cachedLocaleData = new Hashtable(3);
+}
diff --git a/src/com/ibm/icu/text/DecompData.java b/src/com/ibm/icu/text/DecompData.java
new file mode 100755
index 0000000..6ab7c47
--- /dev/null
+++ b/src/com/ibm/icu/text/DecompData.java
@@ -0,0 +1,745 @@
+/*
+************************************************************************
+*   Copyright (c) 1997-2000, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+************************************************************************
+* > THIS FILE WAS MACHINE GENERATED <
+* >       DO NOT EDIT BY HAND       <
+* >      RUN TOOL TO REGENERATE     <
+* Tool: com.ibm.icu.text.Normalizer
+* Creation date: Tue Jul 18 11:05:28 PDT 2000
+*/
+
+package com.ibm.icu.text;
+import com.ibm.icu.util.*;
+
+class DecompData {
+    static final int MAX_CANONICAL = 21754;
+    static final int MAX_COMPAT = 11177;
+    static final int DECOMP_MASK = 32767;
+    static final int DECOMP_RECURSE = 32768;
+    static final short BASE = 0;
+
+    static final CompactCharArray offsets = new CompactCharArray(
+        "\000\u0800\uA5A5\005\000 @`\u0080\u00A0\u00C0\u00E0\000\u0100\u0120\u0140"+
+        "\u0160\u0180\000\000\000\u01A0\u01C0\u01E0\000\000\u0200\u0220\u0240\u0260"+
+        "\u0280\u02A0\u02C0\u02E0\u0300\u0320\000\000\u0340\u0360\uA5A5\004\000"+
+        "\u0380\uA5A5\004\000\u03A0\000\u03C0\000\000\u03E0\uA5A5\022\000\u0400"+
+        "\u0420\000\000\000\u0440\000\000\u0460\u0480\uA5A5\007\000\u04A0\000\u04C0"+
+        "\000\u04E0\000\000\000\u0500\000\000\000\u0520\000\000\000\u0540\000\000"+
+        "\000\u0560\000\000\u0580\000\000\000\u05A0\u05C0\000\u05E0\000\u0600\u0620"+
+        "\u0640\u0660\000\000\000\u0680\uA5A5n\000\u06A0\u06C0\u06E0\u0700\u0720"+
+        "\u0740\u0760\u0780\u07A0\u07C0\u07E0\u0800\u0820\u0840\u0860\u0880\u08A0"+
+        "\u08C0\u08E0\u0900\u0920\u0940\000\000\u0960\u0980\u09A0\u09C0\u09E0\u0A00"+
+        "\u0A20\000\u0A40\u0A60\u0A80\u0AA0\u0AC0\u0AE0\000\u0B00\000\u0B20\uA5A5"+
+        "\011\000\u0B40\u0B60\u0B80\u0BA0\u0BC0\uA5A5L\000\u0BE0\000\000\u0C00"+
+        "\u0C20\u0C40\u0C60\u0C80\u0CA0\u0CC0\u0CE0\000\u0D00\u0D20\u0D40\u0D60"+
+        "\u0D80\u0DA0\u0DC0\u0DE0\000\u0E00\u0E20\u0E40\u0E60\000\000\000\u0E80"+
+        "\u0EA0\u0EC0\u0EE0\u0F00\u0F20\u0F40\u0F60\u0F80\u0FA0\u0FC0\u0FE0\u1000"+
+        "\u1020\u1040\u1060\uA5A5\u0628\000\u1080\u10A0\u10C0\u10E0\u1100\u1120"+
+        "\u1140\u1160\u1180\u11A0\uA5A5\006\000\u11C0\u11E0\u1200\u1220\u1240\u1260"+
+        "\u1280\u12A0\u12C0\u12E0\u1300\u1320\u1340\u1360\u1380\u13A0\u13C0\u13E0"+
+        "\u1400\u1420\u1440\u1460\u1480\u14A0\000\u14C0\u14E0\u1500\u1520\u1540"+
+        "\u1560\u1580\u15A0\u15C0\u15E0\u1600\u1620\u1640\u1660\u1680"
+        ,
+        "\000\u16A0\uA5A5 \000\005\uA5A5\007\000\012\000\021\uA5A5\004\000\026"+
+        "\000\000\035!&-\000\00029=\000CO[\000\u2BAE\u2BB6\u2BBE\u2BC6\u2BCE\u2BD6"+
+        "\000\u2BDE\u2BE6\u2BEE\u2BF6\u2BFE\u2C06\u2C0E\u2C16\u2C1E\000\u2C26\u2C2E"+
+        "\u2C36\u2C3E\u2C46\u2C4E\000\000\u2C56\u2C5E\u2C66\u2C6E\u2C76\000\000"+
+        "\u2C7E\u2C86\u2C8E\u2C96\u2C9E\u2CA6\000\u2CAE\u2CB6\u2CBE\u2CC6\u2CCE"+
+        "\u2CD6\u2CDE\u2CE6\u2CEE\000\u2CF6\u2CFE\u2D06\u2D0E\u2D16\u2D1E\000\000"+
+        "\u2D26\u2D2E\u2D36\u2D3E\u2D46\000\u2D4E\u2D56\u2D5E\u2D66\u2D6E\u2D76"+
+        "\u2D7E\u2D86\u2D8E\u2D96\u2D9E\u2DA6\u2DAE\u2DB6\u2DBE\u2DC6\u2DCE\000"+
+        "\000\u2DD6\u2DDE\u2DE6\u2DEE\u2DF6\u2DFE\u2E06\u2E0E\u2E16\u2E1E\u2E26"+
+        "\u2E2E\u2E36\u2E3E\u2E46\u2E4E\u2E56\u2E5E\u2E66\u2E6E\000\000\u2E76\u2E7E"+
+        "\u2E86\u2E8E\u2E96\u2E9E\u2EA6\u2EAE\u2EB6\000fn\u2EBE\u2EC6\u2ECE\u2ED6"+
+        "\000\u2EDE\u2EE6\u2EEE\u2EF6\u2EFE\u2F06v~\000\000\u2F0E\u2F16\u2F1E\u2F26"+
+        "\u2F2E\u2F36\u0086\000\000\u2F3E\u2F46\u2F4E\u2F56\u2F5E\u2F66\000\000"+
+        "\u2F6E\u2F76\u2F7E\u2F86\u2F8E\u2F96\u2F9E\u2FA6\u2FAE\u2FB6\u2FBE\u2FC6"+
+        "\u2FCE\u2FD6\u2FDE\u2FE6\u2FEE\u2FF6\000\000\u2FFE\u3006\u300E\u3016\u301E"+
+        "\u3026\u302E\u3036\u303E\u3046\u304E\u3056\u305E\u3066\u306E\u3076\u307E"+
+        "\u3086\u308E\u3096\u309E\u30A6\u30AE\u008D\u30B6\u30BE\uA5A5\015\000\u30C6"+
+        "\u30CE\uA5A5\023\000\u0093\u009F\u00AB\u00B6\u00BE\u00C6\u00CE\u00D6\u00DE"+
+        "\u30D6\u30DE\u30E6\u30EE\u30F6\u30FE\u3106\u310E\u3117\u3123\u312F\u313B"+
+        "\u3147\u3153\u315F\u316B\000\u3177\u3183\u318F\u319B\u31A6\u31AE\000\000"+
+        "\u31B6\u31BE\u31C6\u31CE\u31D6\u31DE\u31E7\u31F3\u31FE\u3206\u320E\u0092"+
+        "\u009E\u00AA\u3216\u321E\000\000\u3226\u322E\u3237\u3243\u324E\u3256\u325E"+
+        "\u3266\u326E\u3276\u327E\u3286\u328E\u3296\u329E\u32A6\u32AE\u32B6\u32BE"+
+        "\u32C6\u32CE\u32D6\u32DE\u32E6\u32EE\u32F6\u32FE\u3306\u330E\u3316\u331E"+
+        "\u3326\u332E\u3336\u333E\u3346\000\000\u334E\u3356\uA5A5\006\000\u335E"+
+        "\u3366\u336E\u3376\u337F\u338B\u3397\u33A3\u33AE\u33B6\u33BF\u33CB\u33D6"+
+        "\u33DE\uA5A5\034\000\u00E5\u00E9q\u00ED\u00F1\u00F5\u00F9\u00FD\u0101"+
+        "\uA5A5\037\000\u0106\u010E\u0116\u011E\u0126\u012E\000\000\u0135}\u008D"+
+        "\u0139\u013D\uA5A5\033\000\u33E5\u33E9\000\u33ED\u33F2\uA5A5/\000\u33F9"+
+        "\uA5A5\005\000\u0142\000\000\000\u33FD\uA5A5\005\000&\uB402\u340A\u3411"+
+        "\u3416\u341E\u3426\000\u342E\000\u3436\u343E\u3447\uA5A5\031\000\u3452"+
+        "\u345A\u3462\u346A\u3472\u347A\u3483\uA5A5\031\000\u348E\u3496\u349E\u34A6"+
+        "\u34AE\000\u0149\u014D\u0151\uB4B6\uB4BE\u0155\u0159\uA5A5\031\000\u015D"+
+        "\u0161\u0165\uA5A5\015\000\u34C6\u34CE\000\u34D6\000\000\000\u34DE\uA5A5"+
+        "\004\000\u34E6\u34EE\u34F6\uA5A5\012\000\u34FE\uA5A5\037\000\u3506\uA5A5"+
+        "\026\000\u350E\u3516\000\u351E\000\000\000\u3526\uA5A5\004\000\u352E\u3536"+
+        "\u353E\uA5A5\027\000\u3546\u354E\uA5A5\011\000\u3556\u355E\uA5A5\015\000"+
+        "\u3566\u356E\u3576\u357E\000\000\u3586\u358E\000\000\u3596\u359E\u35A6"+
+        "\u35AE\u35B6\u35BE\000\000\u35C6\u35CE\u35D6\u35DE\u35E6\u35EE\000\000"+
+        "\u35F6\u35FE\u3606\u360E\u3616\u361E\u3626\u362E\u3636\u363E\u3646\u364E"+
+        "\000\000\u3656\u365E\uA5A5\015\000\u016A\uA5A5\032\000\u3666\u366E\u3676"+
+        "\u367E\u3686\uA5A5.\000\u0172\u017A\u0182\u018A\uA5A5\007\000\u368E\000"+
+        "\u3696\uA5A5\020\000\u369E\uA5A5\025\000\u36A6\uA5A5\007\000\u36AE\000"+
+        "\000\u36B6\uA5A5#\000\u36BE\u36C6\u36CE\u36D6\u36DE\u36E6\u36EE\u36F6"+
+        "\uA5A5\013\000\u36FE\u3706\uA5A5\017\000\u370E\u3716\000\u371E\uA5A5\023"+
+        "\000\u3726\000\000\u372E\uA5A5\042\000\u3736\u373E\u3746\000\000\u374E"+
+        "\uA5A5\011\000\u3756\000\000\u375E\u3766\uA5A5\017\000\u376E\u3776\uA5A5"+
+        "\026\000\u377E\uA5A5\025\000\u3786\u378E\u3796\uA5A5\033\000\u379E\uA5A5"+
+        "\027\000\u37A6\uA5A5\006\000\u37AE\u37B6\000\u37BE\u37C7\uA5A5\036\000"+
+        "\u37D2\u37DA\u37E2\uA5A5-\000\u37EA\000\u37F2\u37FB\u3806\uA5A5\024\000"+
+        "\u0192\uA5A5\037\000\u019A\uA5A5(\000\u01A2\u01AA\uA5A5\016\000\u01B1"+
+        "\uA5A5\026\000\u380E\uA5A5\011\000\u3816\uA5A5\004\000\u381E\uA5A5\004"+
+        "\000\u3826\uA5A5\004\000\u382E\uA5A5\014\000\u3836\uA5A5\011\000\u383E"+
+        "\000\u3846\u384E\u01B7\u3856\u01C3\uA5A5\007\000\u385E\uA5A5\021\000\u3866"+
+        "\uA5A5\011\000\u386E\uA5A5\004\000\u3876\uA5A5\004\000\u387E\uA5A5\004"+
+        "\000\u3886\uA5A5\014\000\u388E\uA5A5\014\000\u3896\uA5A5\031\000\u389E"+
+        "\u38A6\u38AE\u38B6\u38BE\u38C6\u38CE\u38D6\u38DF\u38EB\u38F6\u38FE\u3906"+
+        "\u390E\u3916\u391E\u3926\u392E\u3936\u393E\u3947\u3953\u395F\u396B\u3976"+
+        "\u397E\u3986\u398E\u3997\u39A3\u39AE\u39B6\u39BE\u39C6\u39CE\u39D6\u39DE"+
+        "\u39E6\u39EE\u39F6\u39FE\u3A06\u3A0E\u3A16\u3A1E\u3A26\u3A2F\u3A3B\u3A46"+
+        "\u3A4E\u3A56\u3A5E\u3A66\u3A6E\u3A76\u3A7E\u3A87\u3A93\u3A9E\u3AA6\u3AAE"+
+        "\u3AB6\u3ABE\u3AC6\u3ACE\u3AD6\u3ADE\u3AE6\u3AEE\u3AF6\u3AFE\u3B06\u3B0E"+
+        "\u3B16\u3B1E\u3B26\u3B2F\u3B3B\u3B47\u3B53\u3B5F\u3B6B\u3B77\u3B83\u3B8E"+
+        "\u3B96\u3B9E\u3BA6\u3BAE\u3BB6\u3BBE\u3BC6\u3BCF\u3BDB\u3BE6\u3BEE\u3BF6"+
+        "\u3BFE\u3C06\u3C0E\u3C17\u3C23\u3C2F\u3C3B\u3C47\u3C53\u3C5E\u3C66\u3C6E"+
+        "\u3C76\u3C7E\u3C86\u3C8E\u3C96\u3C9E\u3CA6\u3CAE\u3CB6\u3CBE\u3CC6\u3CCF"+
+        "\u3CDB\u3CE7\u3CF3\u3CFE\u3D06\u3D0E\u3D16\u3D1E\u3D26\u3D2E\u3D36\u3D3E"+
+        "\u3D46\u3D4E\u3D56\u3D5E\u3D66\u3D6E\u3D76\u3D7E\u3D86\u3D8E\u3D96\u3D9E"+
+        "\u3DA6\u3DAE\u3DB6\u3DBE\u3DC6\u3DCE\u3DD6\u3DDE\u3DE6\u01CE\uBDEE\uA5A5"+
+        "\004\000\u3DF6\u3DFE\u3E06\u3E0E\u3E17\u3E23\u3E2F\u3E3B\u3E47\u3E53\u3E5F"+
+        "\u3E6B\u3E77\u3E83\u3E8F\u3E9B\u3EA7\u3EB3\u3EBF\u3ECB\u3ED7\u3EE3\u3EEF"+
+        "\u3EFB\u3F06\u3F0E\u3F16\u3F1E\u3F26\u3F2E\u3F37\u3F43\u3F4F\u3F5B\u3F67"+
+        "\u3F73\u3F7F\u3F8B\u3F97\u3FA3\u3FAE\u3FB6\u3FBE\u3FC6\u3FCE\u3FD6\u3FDE"+
+        "\u3FE6\u3FEF\u3FFB\u4007\u4013\u401F\u402B\u4037\u4043\u404F\u405B\u4067"+
+        "\u4073\u407F\u408B\u4097\u40A3\u40AF\u40BB\u40C7\u40D3\u40DE\u40E6\u40EE"+
+        "\u40F6\u40FF\u410B\u4117\u4123\u412F\u413B\u4147\u4153\u415F\u416B\u4176"+
+        "\u417E\u4186\u418E\u4196\u419E\u41A6\u41AE\uA5A5\006\000\u41B6\u41BE\u41C7"+
+        "\u41D3\u41DF\u41EB\u41F7\u4203\u420E\u4216\u421F\u422B\u4237\u4243\u424F"+
+        "\u425B\u4266\u426E\u4277\u4283\u428F\u429B\000\000\u42A6\u42AE\u42B7\u42C3"+
+        "\u42CF\u42DB\000\000\u42E6\u42EE\u42F7\u4303\u430F\u431B\u4327\u4333\u433E"+
+        "\u4346\u434F\u435B\u4367\u4373\u437F\u438B\u4396\u439E\u43A7\u43B3\u43BF"+
+        "\u43CB\u43D7\u43E3\u43EE\u43F6\u43FF\u440B\u4417\u4423\u442F\u443B\u4446"+
+        "\u444E\u4457\u4463\u446F\u447B\000\000\u4486\u448E\u4497\u44A3\u44AF\u44BB"+
+        "\000\000\u44C6\u44CE\u44D7\u44E3\u44EF\u44FB\u4507\u4513\000\u451E\000"+
+        "\u4527\000\u4533\000\u453F\u454A\u4552\u455B\u4567\u4573\u457F\u458B\u4597"+
+        "\u45A2\u45AA\u45B3\u45BF\u45CB\u45D7\u45E3\u45EF\u45FA\u4602\u460A\u4612"+
+        "\u461A\u4622\u462A\u4632\u463A\u4642\u464A\u4652\u465A\u4662\000\000\u466B"+
+        "\u4677\u4680\u4694\u46A8\u46BC\u46D0\u46E4\u46FB\u4707\u4710\u4724\u4738"+
+        "\u474C\u4760\u4774\u478B\u4797\u47A0\u47B4\u47C8\u47DC\u47F0\u4804\u481B"+
+        "\u4827\u4830\u4844\u4858\u486C\u4880\u4894\u48AB\u48B7\u48C0\u48D4\u48E8"+
+        "\u48FC\u4910\u4924\u493B\u4947\u4950\u4964\u4978\u498C\u49A0\u49B4\u49CA"+
+        "\u49D2\u49DB\u49E6\u49EF\000\u49FA\u4A03\u4A0E\u4A16\u4A1E\u4A26\u4A2E"+
+        "\u01D6\u4A35\u01D6\u01DE\uCA3A\u4A43\u4A4E\u4A57\000\u4A62\u4A6B\u4A76"+
+        "\u4A7E\u4A86\u4A8E\u4A96\uCA9E\uCAA6\uCAAE\u4AB6\u4ABE\u4AC7\u4AD3\000"+
+        "\000\u4ADE\u4AE7\u4AF2\u4AFA\u4B02\u4B0A\000\uCB12\uCB1A\uCB22\u4B2A\u4B32"+
+        "\u4B3B\u4B47\u4B52\u4B5A\u4B62\u4B6B\u4B76\u4B7E\u4B86\u4B8E\u4B96\uCB9E"+
+        "\uCBA6\u4BAD\000\000\u4BB3\u4BBE\u4BC7\000\u4BD2\u4BDB\u4BE6\u4BEE\u4BF6"+
+        "\u4BFE\u4C06\uCC0D\u01E6\000\uCC11\uCC15\uA5A5\011\005\uA5A5\006\000\u01ED"+
+        "\uA5A5\005\000\u01F2\uA5A5\014\000\u01F9\u01FE\u01FB\uA5A5\010\000\005"+
+        "\000\000\000\u0206\u020F\000\u021A\u0223\uA5A5\004\000\u022E\000\u0236"+
+        "\uA5A5\011\000\u023E\u0246\uA5A5&\000\u024D\000\000\000I\u0251\u0255\u0259"+
+        "\u025D\u0261\u0265\u0269\u026D\u0271\u0275\u0089\u024D9\035!I\u0251\u0255"+
+        "\u0259\u025D\u0261\u0265\u0269\u026D\u0271\u0275\uA5A5\031\000\u027A\uA5A5"+
+        "\027\000\u0283\u028F\u0299\u029E\000\u02A7\u02B3\u02BD\000\u02C2\u02C9"+
+        "\u02CD\u02CD\u02CD\u00E5\u02D1eeu}\000\u00CD\u02D6\000\000\u02DD\u02E1"+
+        "\u0279\u0279\u0279\000\000\u02E6\u02EF\u02FA\000\u0095\000\u4C19\000\u0095"+
+        "\000\u4C1D\u4C22\u0301\u0299\000\u0305\u02F1\u02C5\000\u02E9=\u0309\u030D"+
+        "\u0311\u0315m\uA5A5\031\000\u031B\u0327\u0333\u033F\u034B\u0357\u0363"+
+        "\u036F\u037B\u0387\u0393\u039FBe\u03AA\u03B3\u03BE\u03C1\u03C6\u03CF\u03D8"+
+        "\u03EE\u03F1\u03F6\u03FFu\u0299\u0091\u02E9m\u040A\u0413\u041E\u0421\u0426"+
+        "\u042F\u0438\u044E\u0139\u0456\u045F}\u0289\u00A9\u0469\uA5A5\032\000"+
+        "\u4C2A\u4C32\uA5A5\022\000\u4C3A\uA5A5\036\000\u4C42\u4C4A\u4C52\uA5A5"+
+        "\024\000\u4C5A\uA5A5\004\000\u4C62\000\000\u4C6A\uA5A5\027\000\u4C72\000"+
+        "\u4C7A\uA5A5\005\000\u046E\u0477\000\u0482\u048B\uA5A5\020\000\u4C82\000"+
+        "\000\u4C8A\000\000\u4C92\000\u4C9A\uA5A5\026\000\u4CA2\000\u4CAA\uA5A5"+
+        "\012\000\u4CB2\u4CBA\u4CC2\u4CCA\u4CD2\000\000\u4CDA\u4CE2\000\000\u4CEA"+
+        "\u4CF2\uA5A5\006\000\u4CFA\u4D02\000\000\u4D0A\u4D12\000\000\u4D1A\u4D22"+
+        "\uA5A5\042\000\u4D2A\u4D32\u4D3A\u4D42\uA5A5\020\000\u4D4A\u4D52\u4D5A"+
+        "\u4D62\uA5A5\006\000\u4D6A\u4D72\u4D7A\u4D82\uA5A5\033\000\u4D89\u4D8D"+
+        "\uA5A5\025\0009\035!I\u0251\u0255\u0259\u025D\u0261\u0496\u049E\u04A6"+
+        "\u04AE\u04B6\u04BE\u04C6\u04CE\u04D6\u04DE\u04E6\u04EF\u04FB\u0507\u0513"+
+        "\u051F\u052B\u0537\u0543\u054F\u0558\u056C\u0580\u0594\u05A8\u05BC\u05D0"+
+        "\u05E4\u05F8\u060C\u0620\u0636\u063E\u0646\u064E\u0656\u065E\u0666\u066E"+
+        "\u0676\u067F\u068B\u0697\u06A3\u06AF\u06BB\u06C7\u06D3\u06DF\u06EB\u06F7"+
+        "\u0703\u070F\u071B\u0727\u0733\u073F\u074B\u0757\u0763\u076F\u077B\u0787"+
+        "\u0793\u079F\u07AB\u07B7\u07C3\u07CF\u07DB\u07E7\u07F3\u07FF\u080B\u0817"+
+        "\u0823\u082F\u0839\u0301\u0299\u0091\u02F1\u02C5\u083D\u02CDei\u0841u"+
+        "\u02E9\u00CD\u0845\u02DD\u02E1\u0279\u02E5\u02ED\u0849\u03C1\u084D\u03F1"+
+        "\u0851\u0095\021\u0711\u0289\u00A9\u0305\u0741\u02C9\u00E5mq\u077D}\u0469"+
+        "\u0089=\u07B9\u07C5\u00ED\u008D\u07E9\u02B9\u0421\u00FD\u0139\u0101\u00A1"+
+        "\u024D\uA5A54\000\u0855\uA5A5\023\000\u0859\uA5A5\014\000\u085D\u0861"+
+        "\u0865\u0869\u086D\u0871\u0875\u0879\u087D\u0881\u0885\u0889\u088D\u0891"+
+        "\u0895\u0899\u089D\u08A1\u08A5\u08A9\u08AD\u08B1\u08B5\u08B9\u08BD\u08C1"+
+        "\u08C5\u08C9\u08CD\u08D1\u08D5\u08D9\u08DD\u08E1\u08E5\u08E9\u08ED\u08F1"+
+        "\u08F5\u08F9\u08FD\u0901\u0905\u0909\u090D\u0911\u0915\u0919\u091D\u0921"+
+        "\u0925\u0929\u092D\u0931\u0935\u0939\u093D\u0941\u0945\u0949\u094D\u0951"+
+        "\u0955\u0959\u095D\u0961\u0965\u0969\u096D\u0971\u0975\u0979\u097D\u0981"+
+        "\u0985\u0989\u098D\u0991\u0995\u0999\u099D\u09A1\u09A5\u09A9\u09AD\u09B1"+
+        "\u09B5\u09B9\u09BD\u09C1\u09C5\u09C9\u09CD\u09D1\u09D5\u09D9\u09DD\u09E1"+
+        "\u09E5\u09E9\u09ED\u09F1\u09F5\u09F9\u09FD\u0A01\u0A05\u0A09\u0A0D\u0A11"+
+        "\u0A15\u0A19\u0A1D\u0A21\u0A25\u0A29\u0A2D\u0A31\u0A35\u0A39\u0A3D\u0A41"+
+        "\u0A45\u0A49\u0A4D\u0A51\u0A55\u0A59\u0A5D\u0A61\u0A65\u0A69\u0A6D\u0A71"+
+        "\u0A75\u0A79\u0A7D\u0A81\u0A85\u0A89\u0A8D\u0A91\u0A95\u0A99\u0A9D\u0AA1"+
+        "\u0AA5\u0AA9\u0AAD\u0AB1\u0AB5\u0AB9\u0ABD\u0AC1\u0AC5\u0AC9\u0ACD\u0AD1"+
+        "\u0AD5\u0AD9\u0ADD\u0AE1\u0AE5\u0AE9\u0AED\u0AF1\u0AF5\u0AF9\u0AFD\u0B01"+
+        "\u0B05\u0B09\u0B0D\u0B11\u0B15\u0B19\u0B1D\u0B21\u0B25\u0B29\u0B2D\u0B31"+
+        "\u0B35\u0B39\u0B3D\u0B41\u0B45\u0B49\u0B4D\u0B51\u0B55\u0B59\u0B5D\u0B61"+
+        "\u0B65\u0B69\u0B6D\u0B71\u0B75\u0B79\u0B7D\u0B81\u0B85\u0B89\u0B8D\u0B91"+
+        "\u0B95\u0B99\u0B9D\u0BA1\u0BA5\u0BA9\u0BAD\u0BB1\uA5A5\012\000\005\uA5A5"+
+        "5\000\u0BB5\000\u08B9\u0BB9\u0BBD\uA5A5\021\000\u4D92\000\u4D9A\000\u4DA2"+
+        "\000\u4DAA\000\u4DB2\000\u4DBA\000\u4DC2\000\u4DCA\000\u4DD2\000\u4DDA"+
+        "\000\u4DE2\000\u4DEA\000\000\u4DF2\000\u4DFA\000\u4E02\uA5A5\006\000\u4E0A"+
+        "\u4E12\000\u4E1A\u4E22\000\u4E2A\u4E32\000\u4E3A\u4E42\000\u4E4A\u4E52"+
+        "\uA5A5\026\000\u4E5A\uA5A5\006\000\u0BC2\u0BCA\000\u4E62\uA5A5\015\000"+
+        "\u4E6A\000\u4E72\000\u4E7A\000\u4E82\000\u4E8A\000\u4E92\000\u4E9A\000"+
+        "\u4EA2\000\u4EAA\000\u4EB2\000\u4EBA\000\u4EC2\000\000\u4ECA\000\u4ED2"+
+        "\000\u4EDA\uA5A5\006\000\u4EE2\u4EEA\000\u4EF2\u4EFA\000\u4F02\u4F0A\000"+
+        "\u4F12\u4F1A\000\u4F22\u4F2A\uA5A5\026\000\u4F32\000\000\u4F3A\u4F42\u4F4A"+
+        "\u4F52\000\000\000\u4F5A\uA5A5\022\000\u0BD1\u0BD5\u0BD9\u0BDD\u0BE1\u0BE5"+
+        "\u0BE9\u0BED\u0BF1\u0BF5\u0BF9\u0BFD\u0C01\u0C05\u0C09\u0C0D\u0C11\u0C15"+
+        "\u0C19\u0C1D\u0C21\u0C25\u0C29\u0C2D\u0C31\u0C35\u0C39\u0C3D\u0C41\u0C45"+
+        "\u0C49\u0C4D\u0C51\u0C55\u0C59\u0C5D\u0C61\u0C65\u0C69\u0C6D\u0C71\u0C75"+
+        "\u0C79\u0C7D\u0C81\u0C85\u0C89\u0C8D\u0C91\u0C95\u0C99\u0C9D\u0CA1\u0CA5"+
+        "\u0CA9\u0CAD\u0CB1\u0CB5\u0CB9\u0CBD\u0CC1\u0CC5\u0CC9\u0CCD\u0CD1\u0CD5"+
+        "\u0CD9\u0CDD\u0CE1\u0CE5\u0CE9\u0CED\u0CF1\u0CF5\u0CF9\u0CFD\u0D01\u0D05"+
+        "\u0D09\u0D0D\u0D11\u0D15\u0D19\u0D1D\u0D21\u0D25\u0D29\u0D2D\u0D31\u0D35"+
+        "\u0D39\u0D3D\u0D41\u0D45\000\000\000\u085D\u0875\u0D49\u0D4D\u0D51\u0D55"+
+        "\u0D59\u0D5D\u086D\u0D61\u0D65\u0D69\u0D6D\u087D\u0D73\u0D7F\u0D8B\u0D97"+
+        "\u0DA3\u0DAF\u0DBB\u0DC7\u0DD3\u0DDF\u0DEB\u0DF7\u0E03\u0E0F\u0E18\u0E2C"+
+        "\u0E40\u0E54\u0E68\u0E7C\u0E90\u0EA4\u0EB8\u0ECC\u0EE0\u0EF4\u0F08\u0F1C"+
+        "\u0F30\000\000\000\u0F47\u0F53\u0F5F\u0F6B\u0F77\u0F83\u0F8F\u0F9B\u0FA7"+
+        "\u0FB3\u0FBF\u0FCB\u0FD7\u0FE3\u0FEF\u0FFB\u1007\u1013\u101F\u102B\u1037"+
+        "\u1043\u104F\u105B\u1067\u1073\u107F\u108B\u1097\u10A3\u10AF\u10BB\u10C7"+
+        "\u10D3\u10DF\u10EB\uA5A5\034\000\u0BD1\u0BDD\u0BE9\u0BF1\u0C11\u0C15\u0C21"+
+        "\u0C29\u0C2D\u0C35\u0C39\u0C3D\u0C41\u0C45\u0E1E\u0E32\u0E46\u0E5A\u0E6E"+
+        "\u0E82\u0E96\u0EAA\u0EBE\u0ED2\u0EE6\u0EFA\u0F0E\u0C46\uA5A5\004\000\u085D"+
+        "\u0875\u0D49\u0D4D\u0F79\u0F85\u0F91\u0889\u0FA9\u08B9\u0981\u09B1\u09AD"+
+        "\u0985\u0AF5\u08D9\u0979\u1015\u1021\u102D\u1039\u1045\u1051\u105D\u1069"+
+        "\u10F5\u10F9\u08F1\u10FD\u1101\u1105\u1109\u110D\u10D5\u1111\u1115\u0D51"+
+        "\u0D55\u0D59\u1119\u111D\u1121\u1125\u108D\u1099\u10A5\u10B1\u10BD\u1129"+
+        "\uA5A5\017\000\u112E\u1136\u113E\u1146\u114E\u1156\u115E\u1166\u116E\u1177"+
+        "\u1183\u118F\uA5A5\004\000\u1199\u119D\u11A1\u11A5\u11A9\u11AD\u11B1\u11B5"+
+        "\u11B9\u11BD\u11C1\u11C5\u11C9\u11CD\u11D1\u11D5\u11D9\u11DD\u11E1\u11E5"+
+        "\u11E9\u11ED\u11F1\u11F5\u11F9\u11FD\u1201\u1205\u1209\u120D\u1211\u1215"+
+        "\u1219\u121D\u1221\u1225\u1229\u122D\u1231\u1235\u1239\u123D\u1241\u1245"+
+        "\u1249\u124D\u1251\000\u1254\u126C\u1280\u129B\u12A4\u12BF\u12CB\u12D4"+
+        "\u12F0\u1307\u1313\u131F\u1328\u133C\u1350\u1364\u1378\u138C\u13A0\u13B4"+
+        "\u13D2\u13D8\u13F4\u1410\u13E0\u1428\u1444\u1460\u1477\u1483\u148C\u14A0"+
+        "\u14B4\u14CC\u14E7\u14F3\u14FC\u1513\u151F\u143A\u152A\u1533\u153F\u1548"+
+        "\u1564\u1578\u1590\u15AC\u15C3\u15CF\u15D8\u15F4\u1608\u1627\u1630\u164B"+
+        "\u1654\u166B\u1674\u1688\u16A0\u16B4\u16CC\u16E2\u16E8\u1703\u170F\u1718"+
+        "\u172F\u173B\u1747\u1750\u1768\u177E\u1784\u17A3\u17AC\u13FC\u17C4\u17DB"+
+        "\u17E7\u17F0\u1806\u180C\u1820\u183A\u1840\u141B\u185E\u1866\u186E\u1876"+
+        "\u187E\u1886\u188E\u1896\u189E\u18A6\u18AF\u18BB\u18C7\u18D3\u18DF\u18EB"+
+        "\u18F7\u1903\u190F\u191B\u1927\u1933\u193F\u194B\u1957\u1963\u196E\u1976"+
+        "\u197F\u198A\u1992\uA5A5\004\000\u199A\u19A2\u19AA\u19B2\u19B8\u19CE\u19D6"+
+        "\u19DE\u19E6\u19EE\u19F6\u02FE\u19FE\u1A07\u1A10\u1A26\u1A2E\u1A36\u1A3E"+
+        "\u1A46\u1A4E\u1A56\u1A5F\u1A6B\u1A77\u1A83\u1A8E\u1A96\u1A9E\u1AA6\u1AAE"+
+        "\u1AB6\u1ABE\u1AC6\u1ACE\u1AD6\u1ADF\u1AEB\u1AE2\u1AF7\u1B03\u1B0F\u1B06"+
+        "\u1B1B\u1B27\u1B30\u1966\u1B47\u1B53\u1B5F\u1B6B\u1B74\u1B8C\u1BAA\u008A"+
+        "\u1BB2\u1BBA\u1BC2\u1BCA\u1BD2\u1BDA\u1BE2\u1BEA\u1BF2\u1BFA\u1C02\u1C0A"+
+        "\u1C12\u1C1A\u1C22\u1C2A\u1C30\u1C46\u1C4E\u1C56\u1C5C\u1C73\u1C7E\u1C86"+
+        "\u1C8E\u1C96\u1C9E\u1CA6\u1CAE\u1CB6\u1A92\u1CBE\u1CC7\u1CD2\u1CDA\u1CE3"+
+        "\u1CEF\u1CFA\u1D00\u1D17\u1D22\u1D2A\u1D32\u1D3A\000\000\u1D42\u1D4A\u1D52"+
+        "\u1D5A\u1D62\u1D6A\u1D72\u1D7A\u1D82\u1D8B\u1D97\u1DA3\u1DAF\u1DBB\u1DC7"+
+        "\u1DD3\u1DDF\u1DEB\u1DF7\u1E03\u1E0F\u1E1B\u1E27\u1E33\u1E3F\u1E4B\u1E57"+
+        "\u1E63\u1E6F\u1E7B\u1E87\000\u4F61\u4F65\u4F69\u4F6D\u4F71\u4F75\u4F79"+
+        "\u4F7D\u4F81\u4F85\u4F89\u4F8D\u4F91\u4F95\u4F99\u4F9D\u4FA1\u4FA5\u4FA9"+
+        "\u4FAD\u4FB1\u4FB5\u4FB9\u4FBD\u4FC1\u4FC5\u4FC9\u4FCD\u4FD1\u4FD5\u4FD9"+
+        "\u4FDD\u4FE1\u4FE5\u4FE9\u4FED\u4FF1\u4FF5\u4FF9\u4FFD\u5001\u5005\u5009"+
+        "\u500D\u5011\u5015\u5019\u501D\u5021\u5025\u5029\u502D\u5031\u5035\u5039"+
+        "\u503D\u5041\u5045\u5049\u504D\u5051\u5055\u5059\u505D\u5061\u5065\u5069"+
+        "\u506D\u5071\u5075\u5079\u507D\u5081\u5085\u5089\u508D\u5091\u5095\u5099"+
+        "\u509D\u50A1\u50A5\u50A9\u50AD\u50B1\u50B5\u50B9\u50BD\u50C1\u50C5\u50C9"+
+        "\u50CD\u50D1\u50D5\u50D9\u50DD\u50E1\u50E5\u50E9\u50ED\u50F1\u50F5\u50F9"+
+        "\u50FD\u5101\u5105\u5109\u510D\u5111\u5115\u5119\u511D\u5121\u5125\u5129"+
+        "\u512D\u5131\u5135\u5139\u513D\u5141\u5145\u5149\u514D\u5151\u5155\u5159"+
+        "\u515D\u5161\u5165\u5169\u516D\u5171\u5175\u5179\u517D\u5181\u5185\u5189"+
+        "\u518D\u5191\u5195\u5199\u519D\u51A1\u51A5\u51A9\u51AD\u51B1\u51B5\u51B9"+
+        "\u51BD\u51C1\u51C5\u51C9\u51CD\u51D1\u51D5\u51D9\u51DD\u51E1\u51E5\u51E9"+
+        "\u51ED\u51F1\u51F5\u51F9\u51FD\u5201\u5205\u5209\u520D\u5211\u5215\u5219"+
+        "\u521D\u5221\u5225\u5229\u522D\u5231\u5235\u5239\u523D\u5241\u5245\u5249"+
+        "\u524D\u5251\u5255\u5259\u525D\u5261\u5265\u5269\u526D\u5271\u5275\u5279"+
+        "\u527D\u5281\u5285\u5289\u528D\u5291\u5295\u5299\u529D\u52A1\u52A5\u52A9"+
+        "\u52AD\u52B1\u52B5\u52B9\u52BD\u52C1\u52C5\u52C9\u52CD\u52D1\u52D5\u52D9"+
+        "\u52DD\u52E1\u52E5\u52E9\u52ED\u52F1\u52F5\u52F9\u52FD\u5301\u5305\u5309"+
+        "\u530D\u5311\u5315\u5319\u531D\u5321\u5325\u5329\u532D\u5331\u5335\u5339"+
+        "\u533D\u5341\u5345\u5349\u534D\u5351\u5355\u5359\u535D\u5361\u5365\u5369"+
+        "\u536D\u5371\u5375\u5379\u537D\u5381\u5385\u5389\u538D\u5391\u5395\000"+
+        "\000\u5399\000\u539D\000\000\u53A1\u53A5\u53A9\u53AD\u53B1\u53B5\u53B9"+
+        "\u53BD\u53C1\u53C5\000\u53C9\000\u53CD\000\000\u53D1\u53D5\000\000\000"+
+        "\u53D9\u53DD\u53E1\u53E5\uA5A5\022\000\u1E92\u1E9A\u1EA2\u1E97\u1EAB\u1EB6"+
+        "\u1EB6\uA5A5\014\000\u1EBE\u1EC6\u1ECE\u1ED6\u1EDE\uA5A5\005\000\u53EA"+
+        "\000\u53F2\u1EE5\u0309\u0315\u1EE9\u1EED\u1EF1\u1EF5\u1EF9\u1EFD\u0265"+
+        "\u53FA\u5402\u540B\u5417\u5422\u542A\u5432\u543A\u5442\u544A\u5452\u545A"+
+        "\u5462\000\u546A\u5472\u547A\u5482\u548A\000\u5492\000\u549A\u54A2\000"+
+        "\u54AA\u54B2\000\u54BA\u54C2\u54CA\u54D2\u54DA\u54E2\u54EA\u54F2\u54FA"+
+        "\u1F02\u1F09\u1F09\uA5A5\004\u1F0D\uA5A5\004\u1F11\uA5A5\004\u1F15\uA5A5"+
+        "\004\u1F19\uA5A5\004\u1F1D\uA5A5\004\u1F21\uA5A5\004\u1F25\uA5A5\004\u1F29"+
+        "\uA5A5\004\u1F2D\uA5A5\004\u1F31\uA5A5\004\u1F35\uA5A5\004\u1F39\u1F3D"+
+        "\u1F3D\u1F41\u1F41\u1F45\u1F45\u1F49\u1F49\u1F4D\u1F4D\u1F51\u1F51\uA5A5"+
+        "\004\u1F55\uA5A5\004\u1F59\uA5A5\004\u1F5D\uA5A5\004\u1F61\u1F65\u1F65"+
+        "\uA5A5\004\u1F69\u1F6E\u1F6E\uA5A5\004\u1F75\uA5A5\004\u1F79\u1F7D\u1F7D"+
+        "\u1F82\u1F82\uA5A5!\000\uA5A5\004\u1F89\u0181\u0181\u1F8D\u1F8D\u1F91"+
+        "\u1F91\u0182\u1F95\u1F95\u1F99\u1F99\u1F9D\u1F9D\uA5A5\004\u1FA1\u1FA5"+
+        "\u1FA5\u1FAB\u1FAB\u1FB7\u1FB7\u1FC3\u1FC3\u1FCF\u1FCF\u1FDB\u1FDB\u1FE7"+
+        "\u1FE7\u1FF3\u1FF3\u1FF3\u1FFF\u1FFF\u1FFF\uA5A5\004\u2009\u200F\u201B"+
+        "\u2027\u1FFF\u2033\u203E\u2046\u204E\u2056\u205E\u2066\u206E\u2076\u207E"+
+        "\u2086\u208E\u2096\u209E\u20A6\u20AE\u20B6\u20BE\u20C6\u20C2\u20CE\u20D6"+
+        "\u20DE\u20E6\u20EE\u20F6\u20FE\u2106\u210E\u2116\u211E\u2126\u212E\u2136"+
+        "\u213E\u2146\u214E\u2156\u215E\u2166\u216E\u2176\u217E\u2186\u218E\u2196"+
+        "\u219E\u21A6\u21AE\u21B6\u21BE\u21C6\u21CE\u21D6\u21DE\u21E6\u21EE\u21F6"+
+        "\u21FE\u2206\u220E\u2216\u221E\u2226\u222E\u2236\u20CA\u20D2\u223E\u2246"+
+        "\u202E\u224E\u2256\u225E\u2266\u226E\u2276\u227E\u2286\u228E\u2296\u20BA"+
+        "\u229E\u22A6\u2232\u22AE\u229A\u22B6\u22BE\u22C6\u22CF\u22DB\u22E7\u22F3"+
+        "\u22FF\u230B\u2317\u2323\u2027\u232F\u1FFF\u2033\u233A\u2342\u2056\u234A"+
+        "\u205E\u2066\u2352\u235A\u2086\u2362\u208E\u2096\u236A\u2372\u20A6\u237A"+
+        "\u20AE\u20B6\u2196\u219E\u21B6\u21BE\u21C6\u21E6\u21EE\u21F6\u21FE\u221E"+
+        "\u2226\u222E\u2382\u223E\u238A\u2392\u2266\u239A\u226E\u2276\u22C6\u23A2"+
+        "\u23AA\u2232\u23B2\u22AE\u229A\u200F\u201B\u23BB\u2027\u23C7\u203E\u2046"+
+        "\u204E\u2056\u23D2\u206E\u2076\u207E\u2086\u23DA\u20A6\u20BE\u20C6\u20C2"+
+        "\u20CE\u20D6\u20E6\u20EE\u20F6\u20FE\u2106\u210E\u23E2\u2116\u211E\u2126"+
+        "\u212E\u2136\u213E\u214E\u2156\u215E\u2166\u216E\u2176\u217E\u2186\u218E"+
+        "\u21A6\u21AE\u21CE\u21D6\u21DE\u21E6\u21EE\u2206\u220E\u2216\u221E\u23EA"+
+        "\u2236\u20CA\u20D2\u223E\u224E\u2256\u225E\u2266\u23F2\u227E\u2286\u23FA"+
+        "\u20BA\u229E\u22A6\u2232\u227A\u2027\u23C7\u2056\u23D2\u2086\u23DA\u20A6"+
+        "\u2402\u2106\u240A\u2412\u241A\u21E6\u21EE\u221E\u2266\u23F2\u2232\u227A"+
+        "\u2423\u242F\u243B\u2446\u244E\u2456\u245E\u2466\u246E\u2476\u247E\u2486"+
+        "\u248E\u2496\u2022\u249E\u2016\u24A6\u22AA\u24AE\u24B6\u24BE\u24C6\u24CE"+
+        "\u24D6\u24DE\u2412\u24E6\u24EE\u24F6\u24FE\u2446\u244E\u2456\u245E\u2466"+
+        "\u246E\u2476\u247E\u2486\u248E\u2496\u2022\u249E\u2016\u24A6\u22AA\u24AE"+
+        "\u24B6\u24BE\u24C6\u24CE\u24D6\u24DE\u2412\u24E6\u24EE\u24F6\u24FE\u24CE"+
+        "\u24D6\u24DE\u2412\u240A\u241A\u2146\u20EE\u20F6\u20FE\u24CE\u24D6\u24DE"+
+        "\u2146\u214E\u2506\u2506\uA5A5\022\000\u250F\u251B\u251B\u2527\u2533\u253F"+
+        "\u254B\u2557\u20C7\u20C7\u2563\u256F\u257B\u2587\u2593\u259F\u259F\u25AB"+
+        "\u25B7\u25B7\u25C3\u25C3\u25CF\u25DB\u25DB\u25E7\u25F3\u25F3\u25FF\u25FF"+
+        "\u260B\u2617\u2617\u2623\u2623\u262F\u263B\u2647\u2653\u2653\u265F\u266B"+
+        "\u2677\u2683\u268F\u268F\u269B\u26A7\u26B3\u26BF\u26CB\u26D7\u26D7\u26E3"+
+        "\u26E3\u26EF\u26EF\u26FB\u20CB\u2707\u2713\u2237\u20D3\u271F\000\000\u272B"+
+        "\u2737\u2743\u274F\u275B\u2767\u2767\u2773\u277F\u278B\u2797\u2797\u27A3"+
+        "\u27AF\u27BB\u27C7\u27D3\u27DF\u27EB\u27F7\u2803\u280F\u281B\u2827\u2833"+
+        "\u283F\u284B\u2857\u229F\u2863\u286F\u287B\u2887\u2893\u269B\u26B3\u289F"+
+        "\u28AB\u28B7\u28C3\u28CF\u28DB\u28CF\u28B7\u28E7\u28F3\u28FF\u290B\u2917"+
+        "\u28DB\u2647\u25CF\u2923\u292F\uA5A5(\000\u293B\u2947\u2950\u2964\u2978"+
+        "\u298C\u29A0\u29B4\u29C8\u29DF\u29E8\u2A34\uA5A5\024\000\u01FA\u2A59\u2A5D"+
+        "\u2A61\u2A61\u0271\u0275\u2A65\u2A69\u2A6D\u2A71\u2A75\u2A79\u2A7D\u2A81"+
+        "\u2A85\u2A89\u2A8D\u2A91\u2A95\u2A99\uA5A5\004\000\uA5A5\004\u0236\u2A61"+
+        "\u2A61\u2A61\u2A9D\u2AA1\u01F9\000\u2AA5\u2AA9\u023D\u022D\u2A59\u0271"+
+        "\u0275\u2A65\u2A69\u2A6D\u2A71\u2AAD\u2AB1\u2AB5\u0265\u2AB9\u2ABD\u2AC1"+
+        "\u026D\000\u2AC5\u2AC9\u2ACD\u2AD1\uA5A5\004\000\u2AD6\u2ADE\u22CE\000"+
+        "\u22DA\000\u22E6\u2422\u22F2\u242E\u22FE\u243A\u230A\u2AE6\u2AEE\u2AF6"+
+        "\u2AFD\u2B02\u2B02\u2B0A\u2B0A\u2B12\u2B12\u2B1A\u2B1A\uA5A5\004\u1FAA"+
+        "\u0171\u0171\uA5A5\004\u203D\u2B21\u2B21\uA5A5\004\u206D\uA5A5\004\u209D"+
+        "\uA5A5\004\u2015\uA5A5\004\u2021\uA5A5\004\u2051\u2985\u2985\u22B5\u22B5"+
+        "\u22BD\u22BD\u2329\u2329\uA5A5\004\u20ED\uA5A5\004\u2411\uA5A5\004\u210D"+
+        "\uA5A5\004\u211D\uA5A5\004\u213D\uA5A5\004\u214D\uA5A5\004\u2155\uA5A5"+
+        "\004\u2165\uA5A5\004\u2175\uA5A5\004\u21A5\uA5A5\004\u21C5\uA5A5\004\u21E9"+
+        "\uA5A5\004\u202D\uA5A5\004\u224D\uA5A5\004\u227D\u0179\u0179\u1FA5\u1FA5"+
+        "\uA5A5\004\u0189\u2B27\u2B27\u2B33\u2B33\u2B3F\u2B3F\u2A46\u2A46\uA5A5"+
+        "\004\000\u022D\u2B49\u2AAD\u2AC9\u2ACD\u2AB1\u2B4D\u0271\u0275\u2AB5\u0265"+
+        "\u2A9D\u2AB9\u01F9\u0285\u024D9\035!I\u0251\u0255\u0259\u025D\u0261\u2AA9"+
+        "\u2AA5\u2ABD\u026D\u2AC1\u023D\u2AD1\u0839\u0301\u0299\u0091\u02F1\u02C5"+
+        "\u083D\u02CDei\u0841u\u02E9\u00CD\u0845\u02DD\u02E1\u0279\u02E5\u02ED"+
+        "\u0849\u03C1\u084D\u03F1\u0851\u0095\u2B51\u2AC5\u2B55\u2B59\u2A61\u2B5D"+
+        "\021\u0711\u0289\u00A9\u0305\u0741\u02C9\u00E5mq\u077D}\u0469\u0089=\u07B9"+
+        "\u07C5\u00ED\u008D\u07E9\u02B9\u0421\u00FD\u0139\u0101\u00A1\u2A65\u2B61"+
+        "\u2A69\u2B65\000\000\u2B69\u2A8D\u2A91\u2AA1\u2B6D\u1251\u1279\u15F9\u2B71"+
+        "\u1619\u12CD\u2B75\u13A5\u175D\u1331\u1261\u1199\u119D\u11A1\u11A5\u11A9"+
+        "\u11AD\u11B1\u11B5\u11B9\u11BD\u11C1\u11C5\u11C9\u11CD\u11D1\u11D5\u11D9"+
+        "\u11DD\u11E1\u11E5\u11E9\u11ED\u11F1\u11F5\u11F9\u11FD\u1201\u1205\u1209"+
+        "\u120D\u1211\u1215\u1219\u121D\u1221\u1225\u1229\u122D\u1231\u1235\u1239"+
+        "\u123D\u1241\u1245\u1285\u0BC5\u0BCD\u0C9D\u0BD1\u0BD5\u0BD9\u0BDD\u0BE1"+
+        "\u0BE5\u0BE9\u0BED\u0BF1\u0BF5\u0BF9\u0BFD\u0C01\u0C05\u0C09\u0C0D\u0C11"+
+        "\u0C15\u0C19\u0C1D\u0C21\u0C25\u0C29\u0C2D\u0C31\u0C35\u0C39\u0C3D\u0C41"+
+        "\u0C45\000\000\000\u0C49\u0C4D\u0C51\u0C55\u0C59\u0C5D\000\000\u0C61\u0C65"+
+        "\u0C69\u0C6D\u0C71\u0C75\000\000\u0C79\u0C7D\u0C81\u0C85\u0C89\u0C8D\000"+
+        "\000\u0C91\u0C95\u0C99\000\000\000\u2B79\u2B7D\u2B81\026\u2B85\u2B89\u2B8D"+
+        "\000\u2B91\u2B95\u2B99\u2B9D\u2BA1\u2BA5\u2BA9\uA5A5\021\000"
+        );
+
+    static final String contents = 
+        "\uFFFF  \u0308a \u030423 \u0301\u03BC \u03271o1\u204441\u204423\u2044"+
+        "4IJijL\u00B7l\u00B7\u02BCnsDZ\u030CDz\u030Cdz\u030CLJLjljNJNjnjh\u0266"+
+        "r\u0279\u027B\u0281wy \u0306 \u0307 \u030A \u0328 \u0303 \u030B\u0263"+
+        "x\u0295 \u0345\u03B2\u03B8\u03A5\u03C6\u03C0\u03BA\u03C1\u03C2\u0565\u0582"+
+        "\u0627\u0674\u0648\u0674\u06C7\u0674\u064A\u0674\u0E4D\u0E32\u0ECD\u0EB2"+
+        "\u0EAB\u0E99\u0EAB\u0EA1\u0F0B\u0FB2\u0F71\u0F80\u0FB3\u0F71\u0F80a\u02BE"+
+        " \u0313 \u0342 \u0314\u2010 \u0333...\u2032\u2032\u2032\u2032\u2032\u2035"+
+        "\u2035\u2035\u2035\u2035!! \u0305?!!?056789+\u2212=()Rsa/ca/sC\u00B0C"+
+        "c/oc/u\u0190\u00B0FgH\u0127NoPQSMTELTMBe\u05D0\u05D1\u05D2\u05D31\u2044"+
+        "32\u204431\u204452\u204453\u204454\u204451\u204465\u204461\u204483\u2044"+
+        "85\u204487\u20448IIIIIIVVIVIIVIII\000IXXIXIIiiiiiivviviiviii\000ixxix"+
+        "iim\u222B\u222B\u222B\u222B\u222B\u222E\u222E\u222E\u222E\u222E101112"+
+        "1314151617181920(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)\000(11)\000(12)\000(1"+
+        "3)\000(14)\000(15)\000(16)\000(17)\000(18)\000(19)\000(20)\0001.2.3.4"+
+        ".5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.(a)(b)(c)(d)(e)(f)(g)(h)("+
+        "i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)(v)(w)(x)(y)(z)AGKOUWY\u6BCD\u9F9F"+
+        "\u4E00\u4E28\u4E36\u4E3F\u4E59\u4E85\u4E8C\u4EA0\u4EBA\u513F\u5165\u516B"+
+        "\u5182\u5196\u51AB\u51E0\u51F5\u5200\u529B\u52F9\u5315\u531A\u5338\u5341"+
+        "\u535C\u5369\u5382\u53B6\u53C8\u53E3\u56D7\u571F\u58EB\u5902\u590A\u5915"+
+        "\u5927\u5973\u5B50\u5B80\u5BF8\u5C0F\u5C22\u5C38\u5C6E\u5C71\u5DDB\u5DE5"+
+        "\u5DF1\u5DFE\u5E72\u5E7A\u5E7F\u5EF4\u5EFE\u5F0B\u5F13\u5F50\u5F61\u5F73"+
+        "\u5FC3\u6208\u6236\u624B\u652F\u6534\u6587\u6597\u65A4\u65B9\u65E0\u65E5"+
+        "\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BB3\u6BCB\u6BD4\u6BDB\u6C0F\u6C14"+
+        "\u6C34\u706B\u722A\u7236\u723B\u723F\u7247\u7259\u725B\u72AC\u7384\u7389"+
+        "\u74DC\u74E6\u7518\u751F\u7528\u7530\u758B\u7592\u7676\u767D\u76AE\u76BF"+
+        "\u76EE\u77DB\u77E2\u77F3\u793A\u79B8\u79BE\u7A74\u7ACB\u7AF9\u7C73\u7CF8"+
+        "\u7F36\u7F51\u7F8A\u7FBD\u8001\u800C\u8012\u8033\u807F\u8089\u81E3\u81EA"+
+        "\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u8278\u864D\u866B\u8840\u884C"+
+        "\u8863\u897E\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C78\u8C9D\u8D64\u8D70"+
+        "\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FB5\u9091\u9149\u91C6\u91CC\u91D1\u9577"+
+        "\u9580\u961C\u96B6\u96B9\u96E8\u9751\u975E\u9762\u9769\u97CB\u97ED\u97F3"+
+        "\u9801\u98A8\u98DB\u98DF\u9996\u9999\u99AC\u9AA8\u9AD8\u9ADF\u9B25\u9B2F"+
+        "\u9B32\u9B3C\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u9EC3\u9ECD\u9ED1\u9EF9"+
+        "\u9EFD\u9F0E\u9F13\u9F20\u9F3B\u9F4A\u9F52\u9F8D\u9F9C\u9FA0\u3012\u5344"+
+        "\u5345 \u3099 \u309A\u1100\u1101\u11AA\u1102\u11AC\u11AD\u1103\u1104\u1105"+
+        "\u11B0\u11B1\u11B2\u11B3\u11B4\u11B5\u111A\u1106\u1107\u1108\u1121\u1109"+
+        "\u110A\u110B\u110C\u110D\u110E\u110F\u1110\u1111\u1112\u1161\u1162\u1163"+
+        "\u1164\u1165\u1166\u1167\u1168\u1169\u116A\u116B\u116C\u116D\u116E\u116F"+
+        "\u1170\u1171\u1172\u1173\u1174\u1175\u1160\u1114\u1115\u11C7\u11C8\u11CC"+
+        "\u11CE\u11D3\u11D7\u11D9\u111C\u11DD\u11DF\u111D\u111E\u1120\u1122\u1123"+
+        "\u1127\u1129\u112B\u112C\u112D\u112E\u112F\u1132\u1136\u1140\u1147\u114C"+
+        "\u11F1\u11F2\u1157\u1158\u1159\u1184\u1185\u1188\u1191\u1192\u1194\u119E"+
+        "\u11A1\u4E09\u56DB\u4E0A\u4E2D\u4E0B\u7532\u4E19\u4E01\u5929\u5730(\u1100"+
+        ")(\u1102)(\u1103)(\u1105)(\u1106)(\u1107)(\u1109)(\u110B)(\u110C)(\u110E"+
+        ")(\u110F)(\u1110)(\u1111)(\u1112)(\u1100\u1161)\000(\u1102\u1161)\000"+
+        "(\u1103\u1161)\000(\u1105\u1161)\000(\u1106\u1161)\000(\u1107\u1161)\000"+
+        "(\u1109\u1161)\000(\u110B\u1161)\000(\u110C\u1161)\000(\u110E\u1161)\000"+
+        "(\u110F\u1161)\000(\u1110\u1161)\000(\u1111\u1161)\000(\u1112\u1161)\000"+
+        "(\u110C\u116E)\000(\u4E00)(\u4E8C)(\u4E09)(\u56DB)(\u4E94)(\u516D)(\u4E03"+
+        ")(\u516B)(\u4E5D)(\u5341)(\u6708)(\u706B)(\u6C34)(\u6728)(\u91D1)(\u571F"+
+        ")(\u65E5)(\u682A)(\u6709)(\u793E)(\u540D)(\u7279)(\u8CA1)(\u795D)(\u52B4"+
+        ")(\u4EE3)(\u547C)(\u5B66)(\u76E3)(\u4F01)(\u8CC7)(\u5354)(\u796D)(\u4F11"+
+        ")(\u81EA)(\u81F3)\u79D8\u7537\u9069\u512A\u5370\u6CE8\u9805\u5199\u6B63"+
+        "\u5DE6\u53F3\u533B\u5B97\u591C1\u67082\u67083\u67084\u67085\u67086\u6708"+
+        "7\u67088\u67089\u670810\u670811\u670812\u6708\u30A2\u30A4\u30A6\u30A8"+
+        "\u30AA\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF"+
+        "\u30C1\u30C4\u30C6\u30C8\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D2\u30D5"+
+        "\u30D8\u30DB\u30DE\u30DF\u30E0\u30E1\u30E2\u30E4\u30E6\u30E8\u30E9\u30EA"+
+        "\u30EB\u30EC\u30ED\u30EF\u30F0\u30F1\u30F2\u30A2\u30CF\u309A\u30FC\u30C8"+
+        "\000\u30A2\u30EB\u30D5\u30A1\000\u30A2\u30F3\u30D8\u309A\u30A2\000\u30A2"+
+        "\u30FC\u30EB\u30A4\u30CB\u30F3\u30AF\u3099\000\u30A4\u30F3\u30C1\u30A6"+
+        "\u30A9\u30F3\u30A8\u30B9\u30AF\u30FC\u30C8\u3099\000\u30A8\u30FC\u30AB"+
+        "\u30FC\000\u30AA\u30F3\u30B9\u30AA\u30FC\u30E0\u30AB\u30A4\u30EA\u30AB"+
+        "\u30E9\u30C3\u30C8\000\u30AB\u30ED\u30EA\u30FC\000\u30AB\u3099\u30ED\u30F3"+
+        "\000\u30AB\u3099\u30F3\u30DE\000\u30AD\u3099\u30AB\u3099\000\u30AD\u3099"+
+        "\u30CB\u30FC\000\u30AD\u30E5\u30EA\u30FC\000\u30AD\u3099\u30EB\u30BF\u3099"+
+        "\u30FC\000\u30AD\u30ED\u30AD\u30ED\u30AF\u3099\u30E9\u30E0\000\u30AD\u30ED"+
+        "\u30E1\u30FC\u30C8\u30EB\000\u30AD\u30ED\u30EF\u30C3\u30C8\000\u30AF\u3099"+
+        "\u30E9\u30E0\u30C8\u30F3\000\u30AF\u30EB\u30BB\u3099\u30A4\u30ED\000\u30AF"+
+        "\u30ED\u30FC\u30CD\000\u30B1\u30FC\u30B9\u30B3\u30EB\u30CA\u30B3\u30FC"+
+        "\u30DB\u309A\000\u30B5\u30A4\u30AF\u30EB\000\u30B5\u30F3\u30C1\u30FC\u30E0"+
+        "\000\u30B7\u30EA\u30F3\u30AF\u3099\000\u30BB\u30F3\u30C1\u30BB\u30F3\u30C8"+
+        "\u30BF\u3099\u30FC\u30B9\000\u30C6\u3099\u30B7\u30C8\u3099\u30EB\u30CA"+
+        "\u30CE\u30CE\u30C3\u30C8\u30CF\u30A4\u30C4\u30CF\u309A\u30FC\u30BB\u30F3"+
+        "\u30C8\000\u30CF\u309A\u30FC\u30C4\000\u30CF\u3099\u30FC\u30EC\u30EB\000"+
+        "\u30D2\u309A\u30A2\u30B9\u30C8\u30EB\000\u30D2\u309A\u30AF\u30EB\000\u30D2"+
+        "\u309A\u30B3\u30D2\u3099\u30EB\u30D5\u30A1\u30E9\u30C3\u30C8\u3099\000"+
+        "\u30D5\u30A3\u30FC\u30C8\000\u30D5\u3099\u30C3\u30B7\u30A7\u30EB\000\u30D5"+
+        "\u30E9\u30F3\u30D8\u30AF\u30BF\u30FC\u30EB\000\u30D8\u309A\u30BD\u30D8"+
+        "\u309A\u30CB\u30D2\000\u30D8\u30EB\u30C4\u30D8\u309A\u30F3\u30B9\000\u30D8"+
+        "\u309A\u30FC\u30B7\u3099\000\u30D8\u3099\u30FC\u30BF\000\u30DB\u309A\u30A4"+
+        "\u30F3\u30C8\000\u30DB\u3099\u30EB\u30C8\000\u30DB\u30F3\u30DB\u309A\u30F3"+
+        "\u30C8\u3099\000\u30DB\u30FC\u30EB\u30DB\u30FC\u30F3\u30DE\u30A4\u30AF"+
+        "\u30ED\000\u30DE\u30A4\u30EB\u30DE\u30C3\u30CF\u30DE\u30EB\u30AF\u30DE"+
+        "\u30F3\u30B7\u30E7\u30F3\000\u30DF\u30AF\u30ED\u30F3\000\u30DF\u30EA\u30DF"+
+        "\u30EA\u30CF\u3099\u30FC\u30EB\000\u30E1\u30AB\u3099\u30E1\u30AB\u3099"+
+        "\u30C8\u30F3\000\u30E4\u30FC\u30C8\u3099\000\u30E4\u30FC\u30EB\u30E6\u30A2"+
+        "\u30F3\u30EA\u30C3\u30C8\u30EB\000\u30EA\u30E9\u30EB\u30D2\u309A\u30FC"+
+        "\000\u30EB\u30FC\u30D5\u3099\u30EB\000\u30EC\u30E0\u30EC\u30F3\u30C8\u30B1"+
+        "\u3099\u30F3\0000\u70B91\u70B92\u70B93\u70B94\u70B95\u70B96\u70B97\u70B9"+
+        "8\u70B99\u70B910\u70B911\u70B912\u70B913\u70B914\u70B915\u70B916\u70B9"+
+        "17\u70B918\u70B919\u70B920\u70B921\u70B922\u70B923\u70B924\u70B9hPada"+
+        "AUbaroVpc\u5E73\u6210\u662D\u548C\u5927\u6B63\u660E\u6CBB\u682A\u5F0F"+
+        "\u4F1A\u793E\000pAnA\u03BCAmAkAKBGBcalkcal\000pFnF\u03BCF\u03BCgmgkgH"+
+        "zkHzMHzGHzTHz\u03BClmldlklfmnm\u03BCmmmcmkmmm2cm2km2mm3cm3km3m\u2215s"+
+        "m\u2215s2\000kPaMPaGParadrad\u2215s\000rad\u2215s2\000ps\u03BCsmspVnV"+
+        "\u03BCVmVkVMVpWnW\u03BCWmWkWMWk\u03A9M\u03A9a.m.\000BqcccdC\u2215kg\000"+
+        "Co.dBGyhaHPinKKKMktlnloglxmbmilmolPHp.m.\000PPMPRsrSvWb1\u65E52\u65E5"+
+        "3\u65E54\u65E55\u65E56\u65E57\u65E58\u65E59\u65E510\u65E511\u65E512\u65E5"+
+        "13\u65E514\u65E515\u65E516\u65E517\u65E518\u65E519\u65E520\u65E521\u65E5"+
+        "22\u65E523\u65E524\u65E525\u65E526\u65E527\u65E528\u65E529\u65E530\u65E5"+
+        "31\u65E5fffiflfflst\u0574\u0576\u0574\u0565\u0574\u056B\u057E\u0576\u0574"+
+        "\u056D\u05E2\u05D4\u05DB\u05DC\u05DD\u05E8\u05EA\u05D0\u05DC\u0671\u067B"+
+        "\u067E\u0680\u067A\u067F\u0679\u06A4\u06A6\u0684\u0683\u0686\u0687\u068D"+
+        "\u068C\u068E\u0688\u0698\u0691\u06A9\u06AF\u06B3\u06B1\u06BA\u06BB\u06D5"+
+        "\u0654\u06C1\u06BE\u06D2\u06D2\u0654\u06AD\u06C6\u06C8\u06CB\u06C5\u06C9"+
+        "\u06D0\u0649\u064A\u0654\u0627\u064A\u0654\u06D5\u064A\u0654\u0648\u064A"+
+        "\u0654\u06C7\u064A\u0654\u06C6\u064A\u0654\u06C8\u064A\u0654\u06D0\u064A"+
+        "\u0654\u0649\u06CC\u064A\u0654\u062C\u064A\u0654\u062D\u064A\u0654\u0645"+
+        "\u064A\u0654\u064A\u0628\u062C\u0628\u062D\u0628\u062E\u0628\u0645\u0628"+
+        "\u0649\u0628\u064A\u062A\u062C\u062A\u062D\u062A\u062E\u062A\u0645\u062A"+
+        "\u0649\u062A\u064A\u062B\u062C\u062B\u0645\u062B\u0649\u062B\u064A\u062C"+
+        "\u062D\u062C\u0645\u062D\u0645\u062E\u062C\u062E\u062D\u062E\u0645\u0633"+
+        "\u062C\u0633\u062D\u0633\u062E\u0633\u0645\u0635\u062D\u0635\u0645\u0636"+
+        "\u062C\u0636\u062D\u0636\u062E\u0636\u0645\u0637\u062D\u0637\u0645\u0638"+
+        "\u0645\u0639\u062C\u0639\u0645\u063A\u062C\u063A\u0645\u0641\u062C\u0641"+
+        "\u062D\u0641\u062E\u0641\u0645\u0641\u0649\u0641\u064A\u0642\u062D\u0642"+
+        "\u0645\u0642\u0649\u0642\u064A\u0643\u0627\u0643\u062C\u0643\u062D\u0643"+
+        "\u062E\u0643\u0644\u0643\u0645\u0643\u0649\u0643\u064A\u0644\u062C\u0644"+
+        "\u062D\u0644\u062E\u0644\u0645\u0644\u0649\u0644\u064A\u0645\u062C\u0645"+
+        "\u0645\u0645\u0649\u0646\u062C\u0646\u062D\u0646\u062E\u0646\u0645\u0646"+
+        "\u0649\u0646\u064A\u0647\u062C\u0647\u0645\u0647\u0649\u0647\u064A\u064A"+
+        "\u062D\u064A\u062E\u064A\u0649\u0630\u0670\u0631\u0670\u0649\u0670 \u064C"+
+        "\u0651 \u064D\u0651 \u064E\u0651 \u064F\u0651 \u0650\u0651 \u0651\u0670"+
+        "\u064A\u0654\u0631\u064A\u0654\u0632\u064A\u0654\u0646\u0628\u0631\u0628"+
+        "\u0632\u0628\u0646\u062A\u0631\u062A\u0632\u062A\u0646\u062B\u0631\u062B"+
+        "\u0632\u062B\u0646\u0645\u0627\u0646\u0631\u0646\u0632\u0646\u0646\u064A"+
+        "\u0631\u064A\u0632\u064A\u0646\u064A\u0654\u062E\u064A\u0654\u0647\u0628"+
+        "\u0647\u062A\u0647\u0635\u062E\u0644\u0647\u0646\u0647\u0647\u0670\u062B"+
+        "\u0647\u0633\u0647\u0634\u0645\u0634\u0647\u0640\u064E\u0651\u0640\u064F"+
+        "\u0651\u0640\u0650\u0651\u0637\u0649\u0637\u064A\u0639\u0649\u0639\u064A"+
+        "\u063A\u0649\u063A\u064A\u0633\u0649\u0633\u064A\u0634\u0649\u0634\u064A"+
+        "\u062D\u0649\u062C\u0649\u062E\u0649\u0635\u0649\u0635\u064A\u0636\u0649"+
+        "\u0636\u064A\u0634\u062C\u0634\u062D\u0634\u062E\u0634\u0631\u0633\u0631"+
+        "\u0635\u0631\u0636\u0631\u0627\u064B\u062A\u062C\u0645\u062A\u062D\u062C"+
+        "\u062A\u062D\u0645\u062A\u062E\u0645\u062A\u0645\u062C\u062A\u0645\u062D"+
+        "\u062A\u0645\u062E\u062D\u0645\u064A\u062D\u0645\u0649\u0633\u062D\u062C"+
+        "\u0633\u062C\u062D\u0633\u062C\u0649\u0633\u0645\u062D\u0633\u0645\u062C"+
+        "\u0633\u0645\u0645\u0635\u062D\u062D\u0635\u0645\u0645\u0634\u062D\u0645"+
+        "\u0634\u062C\u064A\u0634\u0645\u062E\u0634\u0645\u0645\u0636\u062D\u0649"+
+        "\u0636\u062E\u0645\u0637\u0645\u062D\u0637\u0645\u0645\u0637\u0645\u064A"+
+        "\u0639\u062C\u0645\u0639\u0645\u0645\u0639\u0645\u0649\u063A\u0645\u0645"+
+        "\u063A\u0645\u064A\u063A\u0645\u0649\u0641\u062E\u0645\u0642\u0645\u062D"+
+        "\u0642\u0645\u0645\u0644\u062D\u0645\u0644\u062D\u064A\u0644\u062D\u0649"+
+        "\u0644\u062C\u062C\u0644\u062E\u0645\u0644\u0645\u062D\u0645\u062D\u062C"+
+        "\u0645\u062D\u064A\u0645\u062C\u062D\u0645\u062E\u0645\u0645\u062C\u062E"+
+        "\u0647\u0645\u062C\u0647\u0645\u0645\u0646\u062D\u0645\u0646\u062D\u0649"+
+        "\u0646\u062C\u0645\u0646\u062C\u0649\u0646\u0645\u064A\u0646\u0645\u0649"+
+        "\u064A\u0645\u0645\u0628\u062E\u064A\u062A\u062C\u064A\u062A\u062C\u0649"+
+        "\u062A\u062E\u064A\u062A\u062E\u0649\u062A\u0645\u064A\u062A\u0645\u0649"+
+        "\u062C\u0645\u064A\u062C\u062D\u0649\u062C\u0645\u0649\u0633\u062E\u0649"+
+        "\u0635\u062D\u064A\u0634\u062D\u064A\u0636\u062D\u064A\u0644\u062C\u064A"+
+        "\u0644\u0645\u064A\u064A\u062C\u064A\u064A\u0645\u064A\u0645\u0645\u064A"+
+        "\u0642\u0645\u064A\u0646\u062D\u064A\u0639\u0645\u064A\u0643\u0645\u064A"+
+        "\u0646\u062C\u062D\u0645\u062E\u064A\u0644\u062C\u0645\u0643\u0645\u0645"+
+        "\u062C\u062D\u064A\u062D\u062C\u064A\u0645\u062C\u064A\u0641\u0645\u064A"+
+        "\u0628\u062D\u064A\u0633\u062E\u064A\u0646\u062C\u064A\u0635\u0644\u06D2"+
+        "\u0642\u0644\u06D2\u0627\u0644\u0644\u0647\000\u0627\u0643\u0628\u0631"+
+        "\000\u0645\u062D\u0645\u062F\000\u0635\u0644\u0639\u0645\000\u0631\u0633"+
+        "\u0648\u0644\000\u0639\u0644\u064A\u0647\000\u0648\u0633\u0644\u0645\000"+
+        "\u0635\u0644\u0649\u0635\u0644\u0649 \u0627\u0644\u0644\u0647 \u0639\u0644"+
+        "\u064A\u0647 \u0648\u0633\u0644\u0645\000\u062C\u0644 \u062C\u0644\u0627"+
+        "\u0644\u0647\000\u2014\u2013_{}\u3014\u3015\u3010\u3011\u300A\u300B\u3008"+
+        "\u3009\u300C\u300D\u300E\u300F,\u3001;:#&*-<>\134$%@ \u064B\u0640\u064B"+
+        "\u0640\u0651 \u0652\u0640\u0652\u0621\u0627\u0653\u0627\u0654\u0648\u0654"+
+        "\u0627\u0655\u0629\u0644\u0627\u0653\u0644\u0627\u0654\u0644\u0627\u0655"+
+        "\042'[]^`|~\u3002\u30FB\u30A5\u30E3\u00A2\u00A3\u00AC\u00A6\u00A5\u20A9"+
+        "\u2502\u2190\u2191\u2192\u2193\u25A0\u25CBA\u0300A\u0301A\u0302A\u0303"+
+        "A\u0308A\u030AC\u0327E\u0300E\u0301E\u0302E\u0308I\u0300I\u0301I\u0302"+
+        "I\u0308N\u0303O\u0300O\u0301O\u0302O\u0303O\u0308U\u0300U\u0301U\u0302"+
+        "U\u0308Y\u0301a\u0300a\u0301a\u0302a\u0303a\u0308a\u030Ac\u0327e\u0300"+
+        "e\u0301e\u0302e\u0308i\u0300i\u0301i\u0302i\u0308n\u0303o\u0300o\u0301"+
+        "o\u0302o\u0303o\u0308u\u0300u\u0301u\u0302u\u0308y\u0301y\u0308A\u0304"+
+        "a\u0304A\u0306a\u0306A\u0328a\u0328C\u0301c\u0301C\u0302c\u0302C\u0307"+
+        "c\u0307C\u030Cc\u030CD\u030Cd\u030CE\u0304e\u0304E\u0306e\u0306E\u0307"+
+        "e\u0307E\u0328e\u0328E\u030Ce\u030CG\u0302g\u0302G\u0306g\u0306G\u0307"+
+        "g\u0307G\u0327g\u0327H\u0302h\u0302I\u0303i\u0303I\u0304i\u0304I\u0306"+
+        "i\u0306I\u0328i\u0328I\u0307J\u0302j\u0302K\u0327k\u0327L\u0301l\u0301"+
+        "L\u0327l\u0327L\u030Cl\u030CN\u0301n\u0301N\u0327n\u0327N\u030Cn\u030C"+
+        "O\u0304o\u0304O\u0306o\u0306O\u030Bo\u030BR\u0301r\u0301R\u0327r\u0327"+
+        "R\u030Cr\u030CS\u0301s\u0301S\u0302s\u0302S\u0327s\u0327S\u030Cs\u030C"+
+        "T\u0327t\u0327T\u030Ct\u030CU\u0303u\u0303U\u0304u\u0304U\u0306u\u0306"+
+        "U\u030Au\u030AU\u030Bu\u030BU\u0328u\u0328W\u0302w\u0302Y\u0302y\u0302"+
+        "Y\u0308Z\u0301z\u0301Z\u0307z\u0307Z\u030Cz\u030CO\u031Bo\u031BU\u031B"+
+        "u\u031BA\u030Ca\u030CI\u030Ci\u030CO\u030Co\u030CU\u030Cu\u030CU\u0308"+
+        "\u0304u\u0308\u0304U\u0308\u0301u\u0308\u0301U\u0308\u030Cu\u0308\u030C"+
+        "U\u0308\u0300u\u0308\u0300A\u0308\u0304a\u0308\u0304A\u0307\u0304a\u0307"+
+        "\u0304\u00C6\u0304\u00E6\u0304G\u030Cg\u030CK\u030Ck\u030CO\u0328o\u0328"+
+        "O\u0328\u0304o\u0328\u0304\u01B7\u030C\u0292\u030Cj\u030CG\u0301g\u0301"+
+        "N\u0300n\u0300A\u030A\u0301a\u030A\u0301\u00C6\u0301\u00E6\u0301\u00D8"+
+        "\u0301\u00F8\u0301A\u030Fa\u030FA\u0311a\u0311E\u030Fe\u030FE\u0311e\u0311"+
+        "I\u030Fi\u030FI\u0311i\u0311O\u030Fo\u030FO\u0311o\u0311R\u030Fr\u030F"+
+        "R\u0311r\u0311U\u030Fu\u030FU\u0311u\u0311S\u0326s\u0326T\u0326t\u0326"+
+        "H\u030Ch\u030CA\u0307a\u0307E\u0327e\u0327O\u0308\u0304o\u0308\u0304O"+
+        "\u0303\u0304o\u0303\u0304O\u0307o\u0307O\u0307\u0304o\u0307\u0304Y\u0304"+
+        "y\u0304\u0300\u0301\u0313\u0308\u0301\u02B9;\u00A8\u0301\u0391\u0301\u00B7"+
+        "\u0395\u0301\u0397\u0301\u0399\u0301\u039F\u0301\u03A5\u0301\u03A9\u0301"+
+        "\u03B9\u0308\u0301\u0399\u0308\u03A5\u0308\u03B1\u0301\u03B5\u0301\u03B7"+
+        "\u0301\u03B9\u0301\u03C5\u0308\u0301\u03B9\u0308\u03C5\u0308\u03BF\u0301"+
+        "\u03C5\u0301\u03C9\u0301\u03D2\u0301\u03D2\u0308\u0415\u0300\u0415\u0308"+
+        "\u0413\u0301\u0406\u0308\u041A\u0301\u0418\u0300\u0423\u0306\u0418\u0306"+
+        "\u0438\u0306\u0435\u0300\u0435\u0308\u0433\u0301\u0456\u0308\u043A\u0301"+
+        "\u0438\u0300\u0443\u0306\u0474\u030F\u0475\u030F\u0416\u0306\u0436\u0306"+
+        "\u0410\u0306\u0430\u0306\u0410\u0308\u0430\u0308\u0415\u0306\u0435\u0306"+
+        "\u04D8\u0308\u04D9\u0308\u0416\u0308\u0436\u0308\u0417\u0308\u0437\u0308"+
+        "\u0418\u0304\u0438\u0304\u0418\u0308\u0438\u0308\u041E\u0308\u043E\u0308"+
+        "\u04E8\u0308\u04E9\u0308\u042D\u0308\u044D\u0308\u0423\u0304\u0443\u0304"+
+        "\u0423\u0308\u0443\u0308\u0423\u030B\u0443\u030B\u0427\u0308\u0447\u0308"+
+        "\u042B\u0308\u044B\u0308\u0627\u0653\u0627\u0654\u0648\u0654\u0627\u0655"+
+        "\u064A\u0654\u06D5\u0654\u06C1\u0654\u06D2\u0654\u0928\u093C\u0930\u093C"+
+        "\u0933\u093C\u0915\u093C\u0916\u093C\u0917\u093C\u091C\u093C\u0921\u093C"+
+        "\u0922\u093C\u092B\u093C\u092F\u093C\u09C7\u09BE\u09C7\u09D7\u09A1\u09BC"+
+        "\u09A2\u09BC\u09AF\u09BC\u0A32\u0A3C\u0A38\u0A3C\u0A16\u0A3C\u0A17\u0A3C"+
+        "\u0A1C\u0A3C\u0A2B\u0A3C\u0B47\u0B56\u0B47\u0B3E\u0B47\u0B57\u0B21\u0B3C"+
+        "\u0B22\u0B3C\u0B92\u0BD7\u0BC6\u0BBE\u0BC7\u0BBE\u0BC6\u0BD7\u0C46\u0C56"+
+        "\u0CBF\u0CD5\u0CC6\u0CD5\u0CC6\u0CD6\u0CC6\u0CC2\u0CC6\u0CC2\u0CD5\u0D46"+
+        "\u0D3E\u0D47\u0D3E\u0D46\u0D57\u0DD9\u0DCA\u0DD9\u0DCF\u0DD9\u0DCF\u0DCA"+
+        "\u0DD9\u0DDF\u0F42\u0FB7\u0F4C\u0FB7\u0F51\u0FB7\u0F56\u0FB7\u0F5B\u0FB7"+
+        "\u0F40\u0FB5\u0F71\u0F72\u0F71\u0F74\u0FB2\u0F80\u0FB3\u0F80\u0F71\u0F80"+
+        "\u0F92\u0FB7\u0F9C\u0FB7\u0FA1\u0FB7\u0FA6\u0FB7\u0FAB\u0FB7\u0F90\u0FB5"+
+        "\u1025\u102EA\u0325a\u0325B\u0307b\u0307B\u0323b\u0323B\u0331b\u0331C"+
+        "\u0327\u0301c\u0327\u0301D\u0307d\u0307D\u0323d\u0323D\u0331d\u0331D\u0327"+
+        "d\u0327D\u032Dd\u032DE\u0304\u0300e\u0304\u0300E\u0304\u0301e\u0304\u0301"+
+        "E\u032De\u032DE\u0330e\u0330E\u0327\u0306e\u0327\u0306F\u0307f\u0307G"+
+        "\u0304g\u0304H\u0307h\u0307H\u0323h\u0323H\u0308h\u0308H\u0327h\u0327"+
+        "H\u032Eh\u032EI\u0330i\u0330I\u0308\u0301i\u0308\u0301K\u0301k\u0301K"+
+        "\u0323k\u0323K\u0331k\u0331L\u0323l\u0323L\u0323\u0304l\u0323\u0304L\u0331"+
+        "l\u0331L\u032Dl\u032DM\u0301m\u0301M\u0307m\u0307M\u0323m\u0323N\u0307"+
+        "n\u0307N\u0323n\u0323N\u0331n\u0331N\u032Dn\u032DO\u0303\u0301o\u0303"+
+        "\u0301O\u0303\u0308o\u0303\u0308O\u0304\u0300o\u0304\u0300O\u0304\u0301"+
+        "o\u0304\u0301P\u0301p\u0301P\u0307p\u0307R\u0307r\u0307R\u0323r\u0323"+
+        "R\u0323\u0304r\u0323\u0304R\u0331r\u0331S\u0307s\u0307S\u0323s\u0323S"+
+        "\u0301\u0307s\u0301\u0307S\u030C\u0307s\u030C\u0307S\u0323\u0307s\u0323"+
+        "\u0307T\u0307t\u0307T\u0323t\u0323T\u0331t\u0331T\u032Dt\u032DU\u0324"+
+        "u\u0324U\u0330u\u0330U\u032Du\u032DU\u0303\u0301u\u0303\u0301U\u0304\u0308"+
+        "u\u0304\u0308V\u0303v\u0303V\u0323v\u0323W\u0300w\u0300W\u0301w\u0301"+
+        "W\u0308w\u0308W\u0307w\u0307W\u0323w\u0323X\u0307x\u0307X\u0308x\u0308"+
+        "Y\u0307y\u0307Z\u0302z\u0302Z\u0323z\u0323Z\u0331z\u0331h\u0331t\u0308"+
+        "w\u030Ay\u030A\u017F\u0307A\u0323a\u0323A\u0309a\u0309A\u0302\u0301a\u0302"+
+        "\u0301A\u0302\u0300a\u0302\u0300A\u0302\u0309a\u0302\u0309A\u0302\u0303"+
+        "a\u0302\u0303A\u0323\u0302a\u0323\u0302A\u0306\u0301a\u0306\u0301A\u0306"+
+        "\u0300a\u0306\u0300A\u0306\u0309a\u0306\u0309A\u0306\u0303a\u0306\u0303"+
+        "A\u0323\u0306a\u0323\u0306E\u0323e\u0323E\u0309e\u0309E\u0303e\u0303E"+
+        "\u0302\u0301e\u0302\u0301E\u0302\u0300e\u0302\u0300E\u0302\u0309e\u0302"+
+        "\u0309E\u0302\u0303e\u0302\u0303E\u0323\u0302e\u0323\u0302I\u0309i\u0309"+
+        "I\u0323i\u0323O\u0323o\u0323O\u0309o\u0309O\u0302\u0301o\u0302\u0301O"+
+        "\u0302\u0300o\u0302\u0300O\u0302\u0309o\u0302\u0309O\u0302\u0303o\u0302"+
+        "\u0303O\u0323\u0302o\u0323\u0302O\u031B\u0301o\u031B\u0301O\u031B\u0300"+
+        "o\u031B\u0300O\u031B\u0309o\u031B\u0309O\u031B\u0303o\u031B\u0303O\u031B"+
+        "\u0323o\u031B\u0323U\u0323u\u0323U\u0309u\u0309U\u031B\u0301u\u031B\u0301"+
+        "U\u031B\u0300u\u031B\u0300U\u031B\u0309u\u031B\u0309U\u031B\u0303u\u031B"+
+        "\u0303U\u031B\u0323u\u031B\u0323Y\u0300y\u0300Y\u0323y\u0323Y\u0309y\u0309"+
+        "Y\u0303y\u0303\u03B1\u0313\u03B1\u0314\u03B1\u0313\u0300\u03B1\u0314\u0300"+
+        "\u03B1\u0313\u0301\u03B1\u0314\u0301\u03B1\u0313\u0342\u03B1\u0314\u0342"+
+        "\u0391\u0313\u0391\u0314\u0391\u0313\u0300\u0391\u0314\u0300\u0391\u0313"+
+        "\u0301\u0391\u0314\u0301\u0391\u0313\u0342\u0391\u0314\u0342\u03B5\u0313"+
+        "\u03B5\u0314\u03B5\u0313\u0300\u03B5\u0314\u0300\u03B5\u0313\u0301\u03B5"+
+        "\u0314\u0301\u0395\u0313\u0395\u0314\u0395\u0313\u0300\u0395\u0314\u0300"+
+        "\u0395\u0313\u0301\u0395\u0314\u0301\u03B7\u0313\u03B7\u0314\u03B7\u0313"+
+        "\u0300\u03B7\u0314\u0300\u03B7\u0313\u0301\u03B7\u0314\u0301\u03B7\u0313"+
+        "\u0342\u03B7\u0314\u0342\u0397\u0313\u0397\u0314\u0397\u0313\u0300\u0397"+
+        "\u0314\u0300\u0397\u0313\u0301\u0397\u0314\u0301\u0397\u0313\u0342\u0397"+
+        "\u0314\u0342\u03B9\u0313\u03B9\u0314\u03B9\u0313\u0300\u03B9\u0314\u0300"+
+        "\u03B9\u0313\u0301\u03B9\u0314\u0301\u03B9\u0313\u0342\u03B9\u0314\u0342"+
+        "\u0399\u0313\u0399\u0314\u0399\u0313\u0300\u0399\u0314\u0300\u0399\u0313"+
+        "\u0301\u0399\u0314\u0301\u0399\u0313\u0342\u0399\u0314\u0342\u03BF\u0313"+
+        "\u03BF\u0314\u03BF\u0313\u0300\u03BF\u0314\u0300\u03BF\u0313\u0301\u03BF"+
+        "\u0314\u0301\u039F\u0313\u039F\u0314\u039F\u0313\u0300\u039F\u0314\u0300"+
+        "\u039F\u0313\u0301\u039F\u0314\u0301\u03C5\u0313\u03C5\u0314\u03C5\u0313"+
+        "\u0300\u03C5\u0314\u0300\u03C5\u0313\u0301\u03C5\u0314\u0301\u03C5\u0313"+
+        "\u0342\u03C5\u0314\u0342\u03A5\u0314\u03A5\u0314\u0300\u03A5\u0314\u0301"+
+        "\u03A5\u0314\u0342\u03C9\u0313\u03C9\u0314\u03C9\u0313\u0300\u03C9\u0314"+
+        "\u0300\u03C9\u0313\u0301\u03C9\u0314\u0301\u03C9\u0313\u0342\u03C9\u0314"+
+        "\u0342\u03A9\u0313\u03A9\u0314\u03A9\u0313\u0300\u03A9\u0314\u0300\u03A9"+
+        "\u0313\u0301\u03A9\u0314\u0301\u03A9\u0313\u0342\u03A9\u0314\u0342\u03B1"+
+        "\u0300\u03B1\u0301\u03B5\u0300\u03B5\u0301\u03B7\u0300\u03B7\u0301\u03B9"+
+        "\u0300\u03B9\u0301\u03BF\u0300\u03BF\u0301\u03C5\u0300\u03C5\u0301\u03C9"+
+        "\u0300\u03C9\u0301\u03B1\u0313\u0345\u03B1\u0314\u0345\u03B1\u0313\u0300"+
+        "\u0345\000\u03B1\u0314\u0300\u0345\000\u03B1\u0313\u0301\u0345\000\u03B1"+
+        "\u0314\u0301\u0345\000\u03B1\u0313\u0342\u0345\000\u03B1\u0314\u0342\u0345"+
+        "\000\u0391\u0313\u0345\u0391\u0314\u0345\u0391\u0313\u0300\u0345\000\u0391"+
+        "\u0314\u0300\u0345\000\u0391\u0313\u0301\u0345\000\u0391\u0314\u0301\u0345"+
+        "\000\u0391\u0313\u0342\u0345\000\u0391\u0314\u0342\u0345\000\u03B7\u0313"+
+        "\u0345\u03B7\u0314\u0345\u03B7\u0313\u0300\u0345\000\u03B7\u0314\u0300"+
+        "\u0345\000\u03B7\u0313\u0301\u0345\000\u03B7\u0314\u0301\u0345\000\u03B7"+
+        "\u0313\u0342\u0345\000\u03B7\u0314\u0342\u0345\000\u0397\u0313\u0345\u0397"+
+        "\u0314\u0345\u0397\u0313\u0300\u0345\000\u0397\u0314\u0300\u0345\000\u0397"+
+        "\u0313\u0301\u0345\000\u0397\u0314\u0301\u0345\000\u0397\u0313\u0342\u0345"+
+        "\000\u0397\u0314\u0342\u0345\000\u03C9\u0313\u0345\u03C9\u0314\u0345\u03C9"+
+        "\u0313\u0300\u0345\000\u03C9\u0314\u0300\u0345\000\u03C9\u0313\u0301\u0345"+
+        "\000\u03C9\u0314\u0301\u0345\000\u03C9\u0313\u0342\u0345\000\u03C9\u0314"+
+        "\u0342\u0345\000\u03A9\u0313\u0345\u03A9\u0314\u0345\u03A9\u0313\u0300"+
+        "\u0345\000\u03A9\u0314\u0300\u0345\000\u03A9\u0313\u0301\u0345\000\u03A9"+
+        "\u0314\u0301\u0345\000\u03A9\u0313\u0342\u0345\000\u03A9\u0314\u0342\u0345"+
+        "\000\u03B1\u0306\u03B1\u0304\u03B1\u0300\u0345\u03B1\u0345\u03B1\u0301"+
+        "\u0345\u03B1\u0342\u03B1\u0342\u0345\u0391\u0306\u0391\u0304\u0391\u0300"+
+        "\u0391\u0301\u0391\u0345\u03B9\u00A8\u0342\u03B7\u0300\u0345\u03B7\u0345"+
+        "\u03B7\u0301\u0345\u03B7\u0342\u03B7\u0342\u0345\u0395\u0300\u0395\u0301"+
+        "\u0397\u0300\u0397\u0301\u0397\u0345\u1FBF\u0300\u1FBF\u0301\u1FBF\u0342"+
+        "\u03B9\u0306\u03B9\u0304\u03B9\u0308\u0300\u03B9\u0308\u0301\u03B9\u0342"+
+        "\u03B9\u0308\u0342\u0399\u0306\u0399\u0304\u0399\u0300\u0399\u0301\u1FFE"+
+        "\u0300\u1FFE\u0301\u1FFE\u0342\u03C5\u0306\u03C5\u0304\u03C5\u0308\u0300"+
+        "\u03C5\u0308\u0301\u03C1\u0313\u03C1\u0314\u03C5\u0342\u03C5\u0308\u0342"+
+        "\u03A5\u0306\u03A5\u0304\u03A5\u0300\u03A5\u0301\u03A1\u0314\u00A8\u0300"+
+        "\u00A8\u0301`\u03C9\u0300\u0345\u03C9\u0345\u03C9\u0301\u0345\u03C9\u0342"+
+        "\u03C9\u0342\u0345\u039F\u0300\u039F\u0301\u03A9\u0300\u03A9\u0301\u03A9"+
+        "\u0345\u00B4\u2002\u2003\u03A9KA\u030A\u2190\u0338\u2192\u0338\u2194\u0338"+
+        "\u21D0\u0338\u21D4\u0338\u21D2\u0338\u2203\u0338\u2208\u0338\u220B\u0338"+
+        "\u2223\u0338\u2225\u0338\u223C\u0338\u2243\u0338\u2245\u0338\u2248\u0338"+
+        "=\u0338\u2261\u0338\u224D\u0338<\u0338>\u0338\u2264\u0338\u2265\u0338"+
+        "\u2272\u0338\u2273\u0338\u2276\u0338\u2277\u0338\u227A\u0338\u227B\u0338"+
+        "\u2282\u0338\u2283\u0338\u2286\u0338\u2287\u0338\u22A2\u0338\u22A8\u0338"+
+        "\u22A9\u0338\u22AB\u0338\u227C\u0338\u227D\u0338\u2291\u0338\u2292\u0338"+
+        "\u22B2\u0338\u22B3\u0338\u22B4\u0338\u22B5\u0338\u3008\u3009\u304B\u3099"+
+        "\u304D\u3099\u304F\u3099\u3051\u3099\u3053\u3099\u3055\u3099\u3057\u3099"+
+        "\u3059\u3099\u305B\u3099\u305D\u3099\u305F\u3099\u3061\u3099\u3064\u3099"+
+        "\u3066\u3099\u3068\u3099\u306F\u3099\u306F\u309A\u3072\u3099\u3072\u309A"+
+        "\u3075\u3099\u3075\u309A\u3078\u3099\u3078\u309A\u307B\u3099\u307B\u309A"+
+        "\u3046\u3099\u309D\u3099\u30AB\u3099\u30AD\u3099\u30AF\u3099\u30B1\u3099"+
+        "\u30B3\u3099\u30B5\u3099\u30B7\u3099\u30B9\u3099\u30BB\u3099\u30BD\u3099"+
+        "\u30BF\u3099\u30C1\u3099\u30C4\u3099\u30C6\u3099\u30C8\u3099\u30CF\u3099"+
+        "\u30CF\u309A\u30D2\u3099\u30D2\u309A\u30D5\u3099\u30D5\u309A\u30D8\u3099"+
+        "\u30D8\u309A\u30DB\u3099\u30DB\u309A\u30A6\u3099\u30EF\u3099\u30F0\u3099"+
+        "\u30F1\u3099\u30F2\u3099\u30FD\u3099\u8C48\u66F4\u8ECA\u8CC8\u6ED1\u4E32"+
+        "\u53E5\u9F9C\u9F9C\u5951\u91D1\u5587\u5948\u61F6\u7669\u7F85\u863F\u87BA"+
+        "\u88F8\u908F\u6A02\u6D1B\u70D9\u73DE\u843D\u916A\u99F1\u4E82\u5375\u6B04"+
+        "\u721B\u862D\u9E1E\u5D50\u6FEB\u85CD\u8964\u62C9\u81D8\u881F\u5ECA\u6717"+
+        "\u6D6A\u72FC\u90CE\u4F86\u51B7\u52DE\u64C4\u6AD3\u7210\u76E7\u8001\u8606"+
+        "\u865C\u8DEF\u9732\u9B6F\u9DFA\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u8AD6"+
+        "\u58DF\u5F04\u7C60\u807E\u7262\u78CA\u8CC2\u96F7\u58D8\u5C62\u6A13\u6DDA"+
+        "\u6F0F\u7D2F\u7E37\u96FB\u52D2\u808B\u51DC\u51CC\u7A1C\u7DBE\u83F1\u9675"+
+        "\u8B80\u62CF\u6A02\u8AFE\u4E39\u5BE7\u6012\u7387\u7570\u5317\u78FB\u4FBF"+
+        "\u5FA9\u4E0D\u6CCC\u6578\u7D22\u53C3\u585E\u7701\u8449\u8AAA\u6BBA\u8FB0"+
+        "\u6C88\u62FE\u82E5\u63A0\u7565\u4EAE\u5169\u51C9\u6881\u7CE7\u826F\u8AD2"+
+        "\u91CF\u52F5\u5442\u5973\u5EEC\u65C5\u6FFE\u792A\u95AD\u9A6A\u9E97\u9ECE"+
+        "\u529B\u66C6\u6B77\u8F62\u5E74\u6190\u6200\u649A\u6F23\u7149\u7489\u79CA"+
+        "\u7DF4\u806F\u8F26\u84EE\u9023\u934A\u5217\u52A3\u54BD\u70C8\u88C2\u8AAA"+
+        "\u5EC9\u5FF5\u637B\u6BAE\u7C3E\u7375\u4EE4\u56F9\u5BE7\u5DBA\u601C\u73B2"+
+        "\u7469\u7F9A\u8046\u9234\u96F6\u9748\u9818\u4F8B\u79AE\u91B4\u96B8\u60E1"+
+        "\u4E86\u50DA\u5BEE\u5C3F\u6599\u6A02\u71CE\u7642\u84FC\u907C\u9F8D\u6688"+
+        "\u962E\u5289\u677B\u67F3\u6D41\u6E9C\u7409\u7559\u786B\u7D10\u985E\u516D"+
+        "\u622E\u9678\u502B\u5D19\u6DEA\u8F2A\u5F8B\u6144\u6817\u7387\u9686\u5229"+
+        "\u540F\u5C65\u6613\u674E\u68A8\u6CE5\u7406\u75E2\u7F79\u88CF\u88E1\u91CC"+
+        "\u96E2\u533F\u6EBA\u541D\u71D0\u7498\u85FA\u96A3\u9C57\u9E9F\u6797\u6DCB"+
+        "\u81E8\u7ACB\u7B20\u7C92\u72C0\u7099\u8B58\u4EC0\u8336\u523A\u5207\u5EA6"+
+        "\u62D3\u7CD6\u5B85\u6D1E\u66B4\u8F3B\u884C\u964D\u898B\u5ED3\u5140\u55C0"+
+        "\u585A\u6674\u51DE\u732A\u76CA\u793C\u795E\u7965\u798F\u9756\u7CBE\u7FBD"+
+        "\u8612\u8AF8\u9038\u90FD\u98EF\u98FC\u9928\u9DB4\u05D9\u05B4\u05F2\u05B7"+
+        "\u05E9\u05C1\u05E9\u05C2\u05E9\u05BC\u05C1\u05E9\u05BC\u05C2\u05D0\u05B7"+
+        "\u05D0\u05B8\u05D0\u05BC\u05D1\u05BC\u05D2\u05BC\u05D3\u05BC\u05D4\u05BC"+
+        "\u05D5\u05BC\u05D6\u05BC\u05D8\u05BC\u05D9\u05BC\u05DA\u05BC\u05DB\u05BC"+
+        "\u05DC\u05BC\u05DE\u05BC\u05E0\u05BC\u05E1\u05BC\u05E3\u05BC\u05E4\u05BC"+
+        "\u05E6\u05BC\u05E7\u05BC\u05E8\u05BC\u05E9\u05BC\u05EA\u05BC\u05D5\u05B9"+
+        "\u05D1\u05BF\u05DB\u05BF\u05E4\u05BF"
+    ;
+
+    static final CompactByteArray canonClass = new CompactByteArray(
+        "\000\u0200\uA5A5\006\000\u0080\000\000\u0100\000\u0180\u0200\u0280\u0300"+
+        "\000\000\000\u0380\uA5A5\004\u0400\u0480\u0500\u0480\u0480\u0580\u0600"+
+        "\u0680\u0700\u0780\u0800\uA5A5\016\000\u0880\000\u0900\uA5A5\017\000\u0980"+
+        "\uA5A5\036\000\u0A00\u0A80\uA5A5\u0194\000\u0B00\uA5A5\005\000\u0B80\000"+
+        "\000\000"
+        ,
+        "\000\u0C00\uA580\u00A5\u15E6\uE8A5\u04DC\uE8D8\uA505\uDCCA\uCAA5\u04DC"+
+        "\uCACA\uA50B\uDCA5\u0501\uA504\uDCA5\u08E6\uF0E6\uDCDC\uDCE6\uE6E6\uDCDC"+
+        "\uA511\u00EA\uEAE9\uA520\u00A5\u04E6\uA58A\u00DC\uA504\uE6DC\uE6E6\uE6DE"+
+        "\uDCA5\u06E6\u00A5\u05DC\uE6E6\uDCE6\uE6DE\uE4E6\u0A0B\u0C0D\u0E0F\u1011"+
+        "\u1213\024\u1516\027\030\u1900\uE6A5\u8600\u1B1C\u1D1E\u1F20\u2122\uE6E6"+
+        "\uDCA5\u1A00\u23A5\u6500\uA507\uE600\u00A5\u04E6\uDCE6\000\uE6E6\u00DC"+
+        "\uE6E6\uDCA5\u2300\u24A5\u1E00\uE6DC\uE6E6\uDCE6\uE6DC\uDCDC\uE6DC\uDCE6"+
+        "\uDCE6\uE6E6\uDCE6\uDCE6\uDCE6\uDCE6\uE6A5\u7100\u07A5\u1000\u0900\000"+
+        "\uE6DC\uE6E6\uA567\007\uA510\011\uA57F\011\uA57F\011\uA507T\u5BA5\u7300"+
+        "\u09A5\u6D00\u6767\u09A5\u0D00\uA504\u6BA5\u6C00\u7676\uA50E\u00A5\u047A"+
+        "\uA54C\u00DC\uDCA5\u1B00\uDC00\uDC00\uD8A5\u3700\u8182\u0084\uA505\u00A5"+
+        "\u0482\000\u8200\uE6E6\u0900\uE6E6\uA53E\u00DC\uA570\007\011\uA598\011"+
+        "\uA556\u00E4\uA5A6\u00E6\uE601\u01A5\u04E6\u0101\u01E6\uE6A5\u0400\uE6A5"+
+        "\u4800\uDAE4\uE8DE\uE0E0\uA569\010\u08A5\u8300\u1AA5\u8100\uA504\uE6A5"+
+        "\u5C00"
+        );
+}
diff --git a/src/com/ibm/icu/text/DictionaryBasedBreakIterator.java b/src/com/ibm/icu/text/DictionaryBasedBreakIterator.java
new file mode 100755
index 0000000..b70335c
--- /dev/null
+++ b/src/com/ibm/icu/text/DictionaryBasedBreakIterator.java
@@ -0,0 +1,574 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/DictionaryBasedBreakIterator.java,v $ 
+ * $Date: 2002/02/16 03:06:07 $ 
+ * $Revision: 1.9 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.util.Vector;
+import java.util.Stack;
+import java.util.Hashtable;
+import java.text.CharacterIterator;
+import java.io.InputStream;
+import java.io.IOException;
+
+import java.io.*;
+
+/**
+ * A subclass of RuleBasedBreakIterator that adds the ability to use a dictionary
+ * to further subdivide ranges of text beyond what is possible using just the
+ * state-table-based algorithm.  This is necessary, for example, to handle
+ * word and line breaking in Thai, which doesn't use spaces between words.  The
+ * state-table-based algorithm used by RuleBasedBreakIterator is used to divide
+ * up text as far as possible, and then contiguous ranges of letters are
+ * repeatedly compared against a list of known words (i.e., the dictionary)
+ * to divide them up into words.
+ *
+ * DictionaryBasedBreakIterator uses the same rule language as RuleBasedBreakIterator,
+ * but adds one more special substitution name: _dictionary_.  This substitution
+ * name is used to identify characters in words in the dictionary.  The idea is that
+ * if the iterator passes over a chunk of text that includes two or more characters
+ * in a row that are included in _dictionary_, it goes back through that range and
+ * derives additional break positions (if possible) using the dictionary.
+ *
+ * DictionaryBasedBreakIterator is also constructed with the filename of a dictionary
+ * file.  It uses Class.getResource() to locate the dictionary file.  The
+ * dictionary file is in a serialized binary format.  We have a very primitive (and
+ * slow) BuildDictionaryFile utility for creating dictionary files, but aren't
+ * currently making it public.  Contact us for help.
+ */
+public class DictionaryBasedBreakIterator extends RuleBasedBreakIterator {
+
+    /**
+     * a list of known words that is used to divide up contiguous ranges of letters,
+     * stored in a compressed, indexed, format that offers fast access
+     */
+    private BreakDictionary dictionary;
+
+    /**
+     * a list of flags indicating which character categories are contained in
+     * the dictionary file (this is used to determine which ranges of characters
+     * to apply the dictionary to)
+     */
+    private boolean[] categoryFlags;
+
+    /**
+     * a temporary hiding place for the number of dictionary characters in the
+     * last range passed over by next()
+     */
+    private int dictionaryCharCount;
+
+    /**
+     * when a range of characters is divided up using the dictionary, the break
+     * positions that are discovered are stored here, preventing us from having
+     * to use either the dictionary or the state table again until the iterator
+     * leaves this range of text
+     */
+    private int[] cachedBreakPositions;
+
+    /**
+     * if cachedBreakPositions is not null, this indicates which item in the
+     * cache the current iteration position refers to
+     */
+    private int positionInCache;
+
+    /**
+     * Special variable name for characters in words in dictionary
+     */
+    private static final String DICTIONARY_VAR = "_dictionary_";
+
+    /**
+     * Constructs a DictionaryBasedBreakIterator.
+     * @param description Same as the description parameter on RuleBasedBreakIterator,
+     * except for the special meaning of DICTIONARY_VAR.  This parameter is just
+     * passed through to RuleBasedBreakIterator's constructor.
+     * @param dictionaryFilename The filename of the dictionary file to use
+     */
+    public DictionaryBasedBreakIterator(String description,
+                                        InputStream dictionaryStream) throws IOException {
+        super(description);
+        dictionary = new BreakDictionary(dictionaryStream);
+    }
+
+    /**
+     * Returns a Builder that is customized to build a DictionaryBasedBreakIterator.
+     * This is the same as RuleBasedBreakIterator.Builder, except for the extra code
+     * to handle the DICTIONARY_VAR tag.
+     */
+    protected RuleBasedBreakIterator.Builder makeBuilder() {
+        return new Builder();
+    }
+
+public void writeTablesToFile(FileOutputStream file, boolean littleEndian) throws IOException {
+super.writeTablesToFile(file, littleEndian);
+
+DataOutputStream out = new DataOutputStream(file);
+
+// --- write index to fields (there's only one entry, but this allows subclassing of this class)
+writeSwappedInt((short)8, out, littleEndian);
+writeSwappedInt((short)(categoryFlags.length + 3 & 0x0f), out, littleEndian);
+
+for (int i = 0; i < categoryFlags.length; i++)
+    out.writeBoolean(categoryFlags[i]);
+switch (categoryFlags.length % 4) {
+    case 1: out.write(0);
+    case 2: out.write(0);
+    case 3: out.write(0);
+    default: break;
+}
+}
+    
+    public void setText(CharacterIterator newText) {
+        super.setText(newText);
+        cachedBreakPositions = null;
+        dictionaryCharCount = 0;
+        positionInCache = 0;
+    }
+
+    /**
+     * Sets the current iteration position to the beginning of the text.
+     * (i.e., the CharacterIterator's starting offset).
+     * @return The offset of the beginning of the text.
+     */
+    public int first() {
+        cachedBreakPositions = null;
+        dictionaryCharCount = 0;
+        positionInCache = 0;
+        return super.first();
+    }
+
+    /**
+     * Sets the current iteration position to the end of the text.
+     * (i.e., the CharacterIterator's ending offset).
+     * @return The text's past-the-end offset.
+     */
+    public int last() {
+        cachedBreakPositions = null;
+        dictionaryCharCount = 0;
+        positionInCache = 0;
+        return super.last();
+    }
+
+    /**
+     * Advances the iterator one step backwards.
+     * @return The position of the last boundary position before the
+     * current iteration position
+     */
+    public int previous() {
+        CharacterIterator text = getText();
+
+        // if we have cached break positions and we're still in the range
+        // covered by them, just move one step backward in the cache
+        if (cachedBreakPositions != null && positionInCache > 0) {
+            --positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return cachedBreakPositions[positionInCache];
+        }
+
+        // otherwise, dump the cache and use the inherited previous() method to move
+        // backward.  This may fill up the cache with new break positions, in which
+        // case we have to mark our position in the cache
+        else {
+            cachedBreakPositions = null;
+            int result = super.previous();
+            if (cachedBreakPositions != null)
+                positionInCache = cachedBreakPositions.length - 2;
+            return result;
+        }
+    }
+
+    /**
+     * Sets the current iteration position to the last boundary position
+     * before the specified position.
+     * @param offset The position to begin searching from
+     * @return The position of the last boundary before "offset"
+     */
+    public int preceding(int offset) {
+        CharacterIterator text = getText();
+        checkOffset(offset, text);
+
+        // if we have no cached break positions, or "offset" is outside the
+        // range covered by the cache, we can just call the inherited routine
+        // (which will eventually call other routines in this class that may
+        // refresh the cache)
+        if (cachedBreakPositions == null || offset <= cachedBreakPositions[0] ||
+                offset > cachedBreakPositions[cachedBreakPositions.length - 1]) {
+            cachedBreakPositions = null;
+            return super.preceding(offset);
+        }
+
+        // on the other hand, if "offset" is within the range covered by the cache,
+        // then all we have to do is search the cache for the last break position
+        // before "offset"
+        else {
+            positionInCache = 0;
+            while (positionInCache < cachedBreakPositions.length
+                   && offset > cachedBreakPositions[positionInCache])
+                ++positionInCache;
+            --positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return text.getIndex();
+        }
+    }
+
+    /**
+     * Sets the current iteration position to the first boundary position after
+     * the specified position.
+     * @param offset The position to begin searching forward from
+     * @return The position of the first boundary after "offset"
+     */
+    public int following(int offset) {
+        CharacterIterator text = getText();
+        checkOffset(offset, text);
+
+        // if we have no cached break positions, or if "offset" is outside the
+        // range covered by the cache, then dump the cache and call our
+        // inherited following() method.  This will call other methods in this
+        // class that may refresh the cache.
+        if (cachedBreakPositions == null || offset < cachedBreakPositions[0] ||
+                offset >= cachedBreakPositions[cachedBreakPositions.length - 1]) {
+            cachedBreakPositions = null;
+            return super.following(offset);
+        }
+
+        // on the other hand, if "offset" is within the range covered by the
+        // cache, then just search the cache for the first break position
+        // after "offset"
+        else {
+            positionInCache = 0;
+            while (positionInCache < cachedBreakPositions.length
+                   && offset >= cachedBreakPositions[positionInCache])
+                ++positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return text.getIndex();
+        }
+    }
+
+    /**
+     * This is the implementation function for next().
+     */
+    protected int handleNext() {
+        CharacterIterator text = getText();
+
+        // if there are no cached break positions, or if we've just moved
+        // off the end of the range covered by the cache, we have to dump
+        // and possibly regenerate the cache
+        if (cachedBreakPositions == null || positionInCache == cachedBreakPositions.length - 1) {
+
+            // start by using the inherited handleNext() to find a tentative return
+            // value.   dictionaryCharCount tells us how many dictionary characters
+            // we passed over on our way to the tentative return value
+            int startPos = text.getIndex();
+            dictionaryCharCount = 0;
+            int result = super.handleNext();
+
+            // if we passed over more than one dictionary character, then we use
+            // divideUpDictionaryRange() to regenerate the cached break positions
+            // for the new range
+            if (dictionaryCharCount > 1 && result - startPos > 1) {
+                divideUpDictionaryRange(startPos, result);
+            }
+
+            // otherwise, the value we got back from the inherited fuction
+            // is our return value, and we can dump the cache
+            else {
+                cachedBreakPositions = null;
+                return result;
+            }
+        }
+
+        // if the cache of break positions has been regenerated (or existed all
+        // along), then just advance to the next break position in the cache
+        // and return it
+        if (cachedBreakPositions != null) {
+            ++positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return cachedBreakPositions[positionInCache];
+        }
+        return -9999;   // SHOULD NEVER GET HERE!
+    }
+
+    /**
+     * Looks up a character category for a character.
+     */
+    protected int lookupCategory(char c) {
+        // this override of lookupCategory() exists only to keep track of whether we've
+        // passed over any dictionary characters.  It calls the inherited lookupCategory()
+        // to do the real work, and then checks whether its return value is one of the
+        // categories represented in the dictionary.  If it is, bump the dictionary-
+        // character count.
+        int result = super.lookupCategory(c);
+        if (result != RuleBasedBreakIterator.IGNORE && categoryFlags[result]) {
+            ++dictionaryCharCount;
+        }
+        return result;
+    }
+
+    /**
+     * This is the function that actually implements the dictionary-based
+     * algorithm.  Given the endpoints of a range of text, it uses the
+     * dictionary to determine the positions of any boundaries in this
+     * range.  It stores all the boundary positions it discovers in
+     * cachedBreakPositions so that we only have to do this work once
+     * for each time we enter the range.
+     */
+    private void divideUpDictionaryRange(int startPos, int endPos) {
+        CharacterIterator text = getText();
+
+        // the range we're dividing may begin or end with non-dictionary characters
+        // (i.e., for line breaking, we may have leading or trailing punctuation
+        // that needs to be kept with the word).  Seek from the beginning of the
+        // range to the first dictionary character
+        text.setIndex(startPos);
+        char c = text.current();
+        int category = lookupCategory(c);
+        while (category == IGNORE || !categoryFlags[category]) {
+            c = text.next();
+            category = lookupCategory(c);
+        }
+//System.out.println("\nDividing up range from " + (text.getIndex() + 1) + " to " + endPos);
+
+        // initialize.  We maintain two stacks: currentBreakPositions contains
+        // the list of break positions that will be returned if we successfully
+        // finish traversing the whole range now.  possibleBreakPositions lists
+        // all other possible word ends we've passed along the way.  (Whenever
+        // we reach an error [a sequence of characters that can't begin any word
+        // in the dictionary], we back up, possibly delete some breaks from
+        // currentBreakPositions, move a break from possibleBreakPositions
+        // to currentBreakPositions, and start over from there.  This process
+        // continues in this way until we either successfully make it all the way
+        // across the range, or exhaust all of our combinations of break
+        // positions.)
+        Stack currentBreakPositions = new Stack();
+        Stack possibleBreakPositions = new Stack();
+        Vector wrongBreakPositions = new Vector();
+
+        // the dictionary is implemented as a trie, which is treated as a state
+        // machine.  -1 represents the end of a legal word.  Every word in the
+        // dictionary is represented by a path from the root node to -1.  A path
+        // that ends in state 0 is an illegal combination of characters.
+        int state = 0;
+
+        // these two variables are used for error handling.  We keep track of the
+        // farthest we've gotten through the range being divided, and the combination
+        // of breaks that got us that far.  If we use up all possible break
+        // combinations, the text contains an error or a word that's not in the
+        // dictionary.  In this case, we "bless" the break positions that got us the
+        // farthest as real break positions, and then start over from scratch with
+        // the character where the error occurred.
+        int farthestEndPoint = text.getIndex();
+        Stack bestBreakPositions = null;
+
+        // initialize (we always exit the loop with a break statement)
+        c = text.current();
+        while (true) {
+//System.out.print("c = " + Integer.toString(c, 16) + ", pos = " + text.getIndex());
+
+            // if we can transition to state "-1" from our current state, we're
+            // on the last character of a legal word.  Push that position onto
+            // the possible-break-positions stack
+            if (dictionary.at(state, 0) == -1) {
+                possibleBreakPositions.push(new Integer(text.getIndex()));
+            }
+
+            // look up the new state to transition to in the dictionary
+            state = (dictionary.at(state, c)) & 0xFFFF;
+//System.out.print(", state = " + state);
+
+            // if the character we're sitting on causes us to transition to
+            // the "end of word" state, then it was a non-dictionary character
+            // and we've successfully traversed the whole range.  Drop out
+            // of the loop.
+            if (state == /*-1*/ 0xFFFF) {
+                currentBreakPositions.push(new Integer(text.getIndex()));
+                break;
+            }
+
+            // if the character we're sitting on causes us to transition to
+            // the error state, or if we've gone off the end of the range
+            // without transitioning to the "end of word" state, we've hit
+            // an error...
+            else if (state == 0 || text.getIndex() >= endPos) {
+
+                // if this is the farthest we've gotten, take note of it in
+                // case there's an error in the text
+                if (text.getIndex() > farthestEndPoint) {
+                    farthestEndPoint = text.getIndex();
+                    bestBreakPositions = (Stack)(currentBreakPositions.clone());
+                }
+
+                // wrongBreakPositions is a list of all break positions we've tried starting
+                // that didn't allow us to traverse all the way through the text.  Every time
+                // we pop a break position off of currentBreakPositions, we put it into
+                // wrongBreakPositions to avoid trying it again later.  If we make it to this
+                // spot, we're either going to back up to a break in possibleBreakPositions
+                // and try starting over from there, or we've exhausted all possible break
+                // positions and are going to do the fallback procedure.  This loop prevents
+                // us from messing with anything in possibleBreakPositions that didn't work as
+                // a starting point the last time we tried it (this is to prevent a bunch of
+                // repetitive checks from slowing down some extreme cases)
+                // variable not used Integer newStartingSpot = null;
+                while (!possibleBreakPositions.isEmpty() && wrongBreakPositions.contains(
+                            possibleBreakPositions.peek())) {
+                    possibleBreakPositions.pop();
+                }
+                
+                // if we've used up all possible break-position combinations, there's
+                // an error or an unknown word in the text.  In this case, we start
+                // over, treating the farthest character we've reached as the beginning
+                // of the range, and "blessing" the break positions that got us that
+                // far as real break positions
+                if (possibleBreakPositions.isEmpty()) {
+                    if (bestBreakPositions != null) {
+                        currentBreakPositions = bestBreakPositions;
+                        if (farthestEndPoint < endPos) {
+                            text.setIndex(farthestEndPoint + 1);
+                        }
+                        else {
+                            break;
+                        }
+                    }
+                    else {
+                        if ((currentBreakPositions.size() == 0
+                                || ((Integer)(currentBreakPositions.peek())).intValue() != text.getIndex())
+                                && text.getIndex() != startPos) {
+                            currentBreakPositions.push(new Integer(text.getIndex()));
+                        }
+                        text.next();
+                        currentBreakPositions.push(new Integer(text.getIndex()));
+                    }
+                }
+
+                // if we still have more break positions we can try, then promote the
+                // last break in possibleBreakPositions into currentBreakPositions,
+                // and get rid of all entries in currentBreakPositions that come after
+                // it.  Then back up to that position and start over from there (i.e.,
+                // treat that position as the beginning of a new word)
+                else {
+                    Integer temp = (Integer)possibleBreakPositions.pop();
+                    Object temp2 = null;
+                    while (!currentBreakPositions.isEmpty() && temp.intValue() <
+                           ((Integer)currentBreakPositions.peek()).intValue()) {
+                        temp2 = currentBreakPositions.pop();
+                        wrongBreakPositions.addElement(temp2);
+                    }
+                    currentBreakPositions.push(temp);
+                    text.setIndex(((Integer)currentBreakPositions.peek()).intValue());
+                }
+
+                // re-sync "c" for the next go-round, and drop out of the loop if
+                // we've made it off the end of the range
+                c = text.current();
+                state = 0;
+                if (text.getIndex() >= endPos) {
+                    break;
+                }
+            }
+
+            // if we didn't hit any exceptional conditions on this last iteration,
+            // just advance to the next character and loop
+            else {
+                c = text.next();
+            }
+//System.out.print(", possibleBreakPositions = { "); for (int i = 0; i < possibleBreakPositions.size(); i++) System.out.print(possibleBreakPositions.elementAt(i) + " "); System.out.print("}");
+//System.out.print(", currentBreakPositions = { "); for (int i = 0; i < currentBreakPositions.size(); i++) System.out.print(currentBreakPositions.elementAt(i) + " "); System.out.println("}");
+        }
+
+        // dump the last break position in the list, and replace it with the actual
+        // end of the range (which may be the same character, or may be further on
+        // because the range actually ended with non-dictionary characters we want to
+        // keep with the word)
+        if (!currentBreakPositions.isEmpty()) {
+            currentBreakPositions.pop();
+        }
+        currentBreakPositions.push(new Integer(endPos));
+
+        // create a regular array to hold the break positions and copy
+        // the break positions from the stack to the array (in addition,
+        // our starting position goes into this array as a break position).
+        // This array becomes the cache of break positions used by next()
+        // and previous(), so this is where we actually refresh the cache.
+        cachedBreakPositions = new int[currentBreakPositions.size() + 1];
+        cachedBreakPositions[0] = startPos;
+
+        for (int i = 0; i < currentBreakPositions.size(); i++) {
+            cachedBreakPositions[i + 1] = ((Integer)currentBreakPositions.elementAt(i)).intValue();
+        }
+        positionInCache = 0;
+    }
+
+    /**
+     * The Builder class for DictionaryBasedBreakIterator inherits almost all of
+     * its functionality from the Builder class for RuleBasedBreakIterator, but
+     * extends it with extra logic to handle the DICTIIONARY_VAR token
+     */
+    protected class Builder extends RuleBasedBreakIterator.Builder {
+
+        /**
+         * A UnicodeSet that contains all the characters represented in the dictionary
+         */
+        private UnicodeSet dictionaryChars = new UnicodeSet();
+        private String dictionaryExpression = "";
+
+        /**
+         * No special initialization
+         */
+        public Builder() {
+        }
+
+        /**
+         * We override handleSpecialSubstitution() to add logic to handle
+         * the $dictionary tag.  If we see a substitution named DICTIONARY_VAR,
+         * parse the substitution expression and store the result in
+         * dictionaryChars.
+         */
+        protected void handleSpecialSubstitution(String replace, String replaceWith,
+                                                 int startPos, String description) {
+            super.handleSpecialSubstitution(replace, replaceWith, startPos, description);
+
+            if (replace.equals(DICTIONARY_VAR)) {
+                if (replaceWith.charAt(0) == '(') {
+                    error("Dictionary group can't be enclosed in (", startPos, description);
+                }
+                dictionaryExpression = replaceWith;
+                dictionaryChars = new UnicodeSet(replaceWith, false);
+            }
+        }
+
+        /**
+         * The other half of the logic to handle the dictionary characters happens here.
+         * After the inherited builder has derived the real character categories, we
+         * set up the categoryFlags array in the iterator.  This array contains "true"
+         * for every character category that includes a dictionary character.
+         */
+        protected void buildCharCategories(Vector tempRuleList) {
+            super.buildCharCategories(tempRuleList);
+
+            categoryFlags = new boolean[categories.size()];
+            for (int i = 0; i < categories.size(); i++) {
+                UnicodeSet cs = (UnicodeSet)categories.elementAt(i);
+                
+                cs.retainAll(dictionaryChars);
+                if (!cs.isEmpty()) {
+                    categoryFlags[i] = true;
+                }
+            }
+        }
+
+        // This function is actually called by RuleBasedBreakIterator.buildCharCategories(),
+        // which is called by the function above.  This gives us a way to create a separate
+        // character category for the dictionary characters even when RuleBasedBreakIterator
+        // isn't making a distinction
+        protected void mungeExpressionList(Hashtable expressions) {
+            expressions.put(dictionaryExpression, dictionaryChars);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/DigitList.java b/src/com/ibm/icu/text/DigitList.java
new file mode 100755
index 0000000..f07cf28
--- /dev/null
+++ b/src/com/ibm/icu/text/DigitList.java
@@ -0,0 +1,741 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/DigitList.java,v $ 
+ * $Date: 2002/02/16 03:06:07 $ 
+ * $Revision: 1.9 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.math.BigInteger;
+
+/**
+ * <code>DigitList</code> handles the transcoding between numeric values and
+ * strings of characters.  It only represents non-negative numbers.  The
+ * division of labor between <code>DigitList</code> and
+ * <code>DecimalFormat</code> is that <code>DigitList</code> handles the radix
+ * 10 representation issues and numeric conversion, including rounding;
+ * <code>DecimalFormat</code> handles the locale-specific issues such as
+ * positive and negative representation, digit grouping, decimal point,
+ * currency, and so on.
+ *
+ * <p>A <code>DigitList</code> is a representation of a finite numeric value.
+ * <code>DigitList</code> objects do not represent <code>NaN</code> or infinite
+ * values.  A <code>DigitList</code> value can be converted to a
+ * <code>BigDecimal</code> without loss of precision.  Conversion to other
+ * numeric formats may involve loss of precision, depending on the specific
+ * value.
+ *
+ * <p>The <code>DigitList</code> representation consists of a string of
+ * characters, which are the digits radix 10, from '0' to '9'.  It also has a
+ * base 10 exponent associated with it.  The value represented by a
+ * <code>DigitList</code> object can be computed by mulitplying the fraction
+ * <em>f</em>, where 0 <= <em>f</em> < 1, derived by placing all the digits of
+ * the list to the right of the decimal point, by 10^exponent.
+ *
+ * @see java.util.Locale
+ * @see java.text.Format
+ * @see NumberFormat
+ * @see DecimalFormat
+ * @see java.text.ChoiceFormat
+ * @see java.text.MessageFormat
+ * @version      1.18 08/12/98
+ * @author       Mark Davis, Alan Liu
+ * */
+final class DigitList implements Cloneable {
+    /**
+     * The maximum number of significant digits in an IEEE 754 double, that
+     * is, in a Java double.  This must not be increased, or garbage digits
+     * will be generated, and should not be decreased, or accuracy will be lost.
+     */
+    public static final int MAX_LONG_DIGITS = 19; // == Long.toString(Long.MAX_VALUE).length()
+    public static final int DBL_DIG = 17;
+
+    /**
+     * These data members are intentionally public and can be set directly.
+     *
+     * The value represented is given by placing the decimal point before
+     * digits[decimalAt].  If decimalAt is < 0, then leading zeros between
+     * the decimal point and the first nonzero digit are implied.  If decimalAt
+     * is > count, then trailing zeros between the digits[count-1] and the
+     * decimal point are implied.
+     *
+     * Equivalently, the represented value is given by f * 10^decimalAt.  Here
+     * f is a value 0.1 <= f < 1 arrived at by placing the digits in Digits to
+     * the right of the decimal.
+     *
+     * DigitList is normalized, so if it is non-zero, figits[0] is non-zero.  We
+     * don't allow denormalized numbers because our exponent is effectively of
+     * unlimited magnitude.  The count value contains the number of significant
+     * digits present in digits[].
+     *
+     * Zero is represented by any DigitList with count == 0 or with each digits[i]
+     * for all i <= count == '0'.
+     */
+    public int decimalAt = 0;
+    public int count = 0;
+    public byte[] digits = new byte[MAX_LONG_DIGITS];
+
+    private final void ensureCapacity(int digitCapacity, int digitsToCopy) {
+        if (digitCapacity > digits.length) {
+            byte[] newDigits = new byte[digitCapacity * 2];
+            System.arraycopy(digits, 0, newDigits, 0, digitsToCopy);
+            digits = newDigits;
+        }
+    }
+
+    /**
+     * Return true if the represented number is zero.
+     */
+    boolean isZero()
+    {
+        for (int i=0; i<count; ++i) if (digits[i] != '0') return false;
+        return true;
+    }
+
+    /**
+     * Clears out the digits.
+     * Use before appending them.
+     * Typically, you set a series of digits with append, then at the point
+     * you hit the decimal point, you set myDigitList.decimalAt = myDigitList.count;
+     * then go on appending digits.
+     */
+    public void clear () {
+        decimalAt = 0;
+        count = 0;
+    }
+    /**
+     * Appends digits to the list.
+     */
+    public void append (int digit) {
+        ensureCapacity(count+1, count);
+        digits[count++] = (byte) digit;
+    }
+    /**
+     * Utility routine to get the value of the digit list
+     * If (count == 0) this throws a NumberFormatException, which
+     * mimics Long.parseLong().
+     */
+    public final double getDouble() {
+        if (count == 0) return 0.0;
+        StringBuffer temp = new StringBuffer(count);
+        temp.append('.');
+        for (int i = 0; i < count; ++i) temp.append((char)(digits[i]));
+        temp.append('E');
+        temp.append(Integer.toString(decimalAt));
+        return Double.valueOf(temp.toString()).doubleValue();
+        // long value = Long.parseLong(temp.toString());
+        // return (value * Math.pow(10, decimalAt - count));
+    }
+
+    /**
+     * Utility routine to get the value of the digit list.
+     * If (count == 0) this returns 0, unlike Long.parseLong().
+     */
+    public final long getLong() {
+        // for now, simple implementation; later, do proper IEEE native stuff
+
+        if (count == 0) return 0;
+
+        // We have to check for this, because this is the one NEGATIVE value
+        // we represent.  If we tried to just pass the digits off to parseLong,
+        // we'd get a parse failure.
+        if (isLongMIN_VALUE()) return Long.MIN_VALUE;
+
+        StringBuffer temp = new StringBuffer(count);
+        for (int i = 0; i < decimalAt; ++i)
+        {
+            temp.append((i < count) ? (char)(digits[i]) : '0');
+        }
+        return Long.parseLong(temp.toString());
+    }
+
+    /**
+     * Return a <code>BigInteger</code> representing the value stored in this
+     * <code>DigitList</code>.  This method assumes that this object contains
+     * an integral value; if not, it will return an incorrect value.
+     * [bnf]
+     * @param isPositive determines the sign of the returned result
+     * @return the value of this object as a <code>BigInteger</code>
+     */
+    public BigInteger getBigInteger(boolean isPositive) {
+        if (isZero()) return BigInteger.valueOf(0);
+        StringBuffer stringRep = new StringBuffer(count);
+        if (!isPositive) {
+            stringRep.append('-');
+        }
+        for (int i=0; i<count; ++i) {
+            stringRep.append((char) digits[i]);
+        }
+        int d = decimalAt;
+        while (d-- > count) {
+            stringRep.append('0');
+        }
+        return new BigInteger(stringRep.toString());
+    }
+
+    /**
+     * Return a <code>BigDecimal</code> representing the value stored in this
+     * <code>DigitList</code>.
+     * [bnf]
+     * @param isPositive determines the sign of the returned result
+     * @return the value of this object as a <code>BigDecimal</code>
+     */
+    public java.math.BigDecimal getBigDecimal(boolean isPositive) {
+        if (isZero()) return java.math.BigDecimal.valueOf(0);
+        StringBuffer stringRep = new StringBuffer(count+1);
+        if (!isPositive) {
+            stringRep.append('-');
+        }
+        int d = decimalAt;
+        if (d < 0) {
+            stringRep.append('.');
+            while (d < 0) {
+                stringRep.append('0');
+                ++d;
+            }
+            d = -1;
+        }
+        for (int i=0; i<count; ++i) {
+            if (d == i) {
+                stringRep.append('.');
+            }
+            stringRep.append((char) digits[i]);
+        }
+        while (d-- > count) {
+            stringRep.append('0');
+        }
+        return new java.math.BigDecimal(stringRep.toString());
+    }
+
+    /**
+     * Return whether or not this objects represented value is an integer.
+     * [bnf]
+     * @return true if the represented value of this object is an integer
+     */
+    boolean isIntegral() {
+        // Trim trailing zeros.  This does not change the represented value.
+        while (count > 0 && digits[count - 1] == (byte)'0') --count;
+        return count == 0 || decimalAt >= count;
+    }
+
+    /**
+     * Return true if the number represented by this object can fit into
+     * a long.
+     */
+    boolean fitsIntoLong(boolean isPositive)
+    {
+        // Figure out if the result will fit in a long.  We have to
+        // first look for nonzero digits after the decimal point;
+        // then check the size.  If the digit count is 18 or less, then
+        // the value can definitely be represented as a long.  If it is 19
+        // then it may be too large.
+
+        // Trim trailing zeros.  This does not change the represented value.
+        while (count > 0 && digits[count - 1] == (byte)'0') --count;
+
+        if (count == 0) {
+            // Positive zero fits into a long, but negative zero can only
+            // be represented as a double. - bug 4162852
+            return isPositive;
+        }
+
+        if (decimalAt < count || decimalAt > MAX_LONG_DIGITS) return false;
+
+        if (decimalAt < MAX_LONG_DIGITS) return true;
+
+        // At this point we have decimalAt == count, and count == MAX_LONG_DIGITS.
+        // The number will overflow if it is larger than 9223372036854775807
+        // or smaller than -9223372036854775808.
+        for (int i=0; i<count; ++i)
+        {
+            byte dig = digits[i], max = LONG_MIN_REP[i];
+            if (dig > max) return false;
+            if (dig < max) return true;
+        }
+
+        // At this point the first count digits match.  If decimalAt is less
+        // than count, then the remaining digits are zero, and we return true.
+        if (count < decimalAt) return true;
+
+        // Now we have a representation of Long.MIN_VALUE, without the leading
+        // negative sign.  If this represents a positive value, then it does
+        // not fit; otherwise it fits.
+        return !isPositive;
+    }
+
+    /**
+     * Set the digit list to a representation of the given double value.
+     * This method supports fixed-point notation.
+     * @param source Value to be converted; must not be Inf, -Inf, Nan,
+     * or a value <= 0.
+     * @param maximumFractionDigits The most fractional digits which should
+     * be converted.
+     */
+    public final void set(double source, int maximumFractionDigits)
+    {
+        set(source, maximumFractionDigits, true);
+    }
+
+    /**
+     * Set the digit list to a representation of the given double value.
+     * This method supports both fixed-point and exponential notation.
+     * @param source Value to be converted; must not be Inf, -Inf, Nan,
+     * or a value <= 0.
+     * @param maximumDigits The most fractional or total digits which should
+     * be converted.
+     * @param fixedPoint If true, then maximumDigits is the maximum
+     * fractional digits to be converted.  If false, total digits.
+     */
+    final void set(double source, int maximumDigits, boolean fixedPoint)
+    {
+        if (source == 0) source = 0;
+        // Generate a representation of the form DDDDD, DDDDD.DDDDD, or
+        // DDDDDE+/-DDDDD.
+        String rep = Double.toString(source);
+
+        set(rep, MAX_LONG_DIGITS);
+
+        if (fixedPoint) {
+            // The negative of the exponent represents the number of leading
+            // zeros between the decimal and the first non-zero digit, for
+            // a value < 0.1 (e.g., for 0.00123, -decimalAt == 2).  If this
+            // is more than the maximum fraction digits, then we have an underflow
+            // for the printed representation.
+            if (-decimalAt > maximumDigits) {
+                count = 0;
+                return;
+            } else if (-decimalAt == maximumDigits) {
+                if (shouldRoundUp(0)) {
+                    count = 1;
+                    ++decimalAt;
+                    digits[0] = (byte)'1';
+                } else {
+                    count = 0;
+                }
+                return;
+            }
+            // else fall through
+        }
+
+        // Eliminate trailing zeros.
+        while (count > 1 && digits[count - 1] == '0')
+            --count;
+
+        // Eliminate digits beyond maximum digits to be displayed.
+        // Round up if appropriate.
+        round(fixedPoint ? (maximumDigits + decimalAt) : maximumDigits);
+    }
+
+    /**
+     * Given a string representation of the form DDDDD, DDDDD.DDDDD,
+     * or DDDDDE+/-DDDDD, set this object's value to it.  Ignore
+     * any leading '-'.
+     */
+    private void set(String rep, int maxCount) {
+        decimalAt = -1;
+        count = 0;
+        int exponent = 0;
+        // Number of zeros between decimal point and first non-zero digit after
+        // decimal point, for numbers < 1.
+        int leadingZerosAfterDecimal = 0;
+        boolean nonZeroDigitSeen = false;
+        // Skip over leading '-'
+        int i=0;
+        if (rep.charAt(i) == '-') {
+            ++i;
+        }
+        for (; i < rep.length(); ++i) {
+            char c = rep.charAt(i);
+            if (c == '.') {
+                decimalAt = count;
+            } else if (c == 'e' || c == 'E') {
+                ++i;
+                // Integer.parseInt doesn't handle leading '+' signs
+                if (rep.charAt(i) == '+') {
+                    ++i;
+                }
+                exponent = Integer.valueOf(rep.substring(i)).intValue();
+                break;
+            } else if (count < maxCount) {
+                if (!nonZeroDigitSeen) {
+                    nonZeroDigitSeen = (c != '0');
+                    if (!nonZeroDigitSeen && decimalAt != -1) {
+                        ++leadingZerosAfterDecimal;
+                    }
+                }
+
+                if (nonZeroDigitSeen) {
+                    ensureCapacity(count+1, count);
+                    digits[count++] = (byte)c;
+                }
+            }
+        }
+        if (decimalAt == -1) {
+            decimalAt = count;
+        }
+        decimalAt += exponent - leadingZerosAfterDecimal;
+    }
+
+    /**
+     * Return true if truncating the representation to the given number
+     * of digits will result in an increment to the last digit.  This
+     * method implements half-even rounding, the default rounding mode.
+     * [bnf]
+     * @param maximumDigits the number of digits to keep, from 0 to
+     * <code>count-1</code>.  If 0, then all digits are rounded away, and
+     * this method returns true if a one should be generated (e.g., formatting
+     * 0.09 with "#.#").
+     * @return true if digit <code>maximumDigits-1</code> should be
+     * incremented
+     */
+    private boolean shouldRoundUp(int maximumDigits) {
+        // variable not used boolean increment = false;
+        // Implement IEEE half-even rounding
+        /*Bug 4243108
+          format(0.0) gives "0.1" if preceded by parse("99.99") [Richard/GCL]
+        */
+        if (maximumDigits < count) {
+            if (digits[maximumDigits] > '5') {
+                return true;
+            } else if (digits[maximumDigits] == '5' ) {
+                for (int i=maximumDigits+1; i<count; ++i) {
+                    if (digits[i] != '0') {
+                        return true;
+                    }
+                }
+                return maximumDigits > 0 && (digits[maximumDigits-1] % 2 != 0);
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Round the representation to the given number of digits.
+     * @param maximumDigits The maximum number of digits to be shown.
+     * Upon return, count will be less than or equal to maximumDigits.
+     */
+    public final void round(int maximumDigits) {        
+        // Eliminate digits beyond maximum digits to be displayed.
+        // Round up if appropriate.
+        // [bnf] rewritten to fix 4179818
+        if (maximumDigits > 0 && maximumDigits < count) {
+            if (shouldRoundUp(maximumDigits)) {
+                // Rounding up involved incrementing digits from LSD to MSD.
+                // In most cases this is simple, but in a worst case situation
+                // (9999..99) we have to adjust the decimalAt value.
+                for (;;)
+                {
+                    --maximumDigits;
+                    if (maximumDigits < 0)
+                    {
+                        // We have all 9's, so we increment to a single digit
+                        // of one and adjust the exponent.
+                        digits[0] = (byte) '1';
+                        ++decimalAt;
+                        maximumDigits = 0; // Adjust the count
+                        break;
+                    }
+
+                    ++digits[maximumDigits];
+                    if (digits[maximumDigits] <= '9') break;
+                    // digits[maximumDigits] = '0'; // Unnecessary since we'll truncate this
+                }
+                ++maximumDigits; // Increment for use as count
+            }
+            count = maximumDigits;
+            /*Bug 4217661 DecimalFormat formats 1.001 to "1.00" instead of "1"
+              Eliminate trailing zeros. [Richard/GCL]
+            */
+            while (count > 1 && digits[count-1] == '0') {
+                --count;
+            } //[Richard/GCL]
+        }
+    }
+
+    /**
+     * Utility routine to set the value of the digit list from a long
+     */
+    public final void set(long source)
+    {
+        set(source, 0);
+    }
+
+    /**
+     * Set the digit list to a representation of the given long value.
+     * @param source Value to be converted; must be >= 0 or ==
+     * Long.MIN_VALUE.
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     */
+    public final void set(long source, int maximumDigits)
+    {
+        // This method does not expect a negative number. However,
+        // "source" can be a Long.MIN_VALUE (-9223372036854775808),
+        // if the number being formatted is a Long.MIN_VALUE.  In that
+        // case, it will be formatted as -Long.MIN_VALUE, a number
+        // which is outside the legal range of a long, but which can
+        // be represented by DigitList.
+        // [NEW] Faster implementation
+        if (source <= 0) {
+            if (source == Long.MIN_VALUE) {
+                decimalAt = count = MAX_LONG_DIGITS;
+                System.arraycopy(LONG_MIN_REP, 0, digits, 0, count);
+            } else {
+                count = 0;
+                decimalAt = 0;
+            }
+        } else {
+            int left = MAX_LONG_DIGITS;
+            int right;
+            while (source > 0) {
+                digits[--left] = (byte) (((long) '0') + (source % 10));
+                source /= 10;
+            }
+            decimalAt = MAX_LONG_DIGITS-left;
+            // Don't copy trailing zeros
+            // we are guaranteed that there is at least one non-zero digit,
+            // so we don't have to check lower bounds
+            for (right = MAX_LONG_DIGITS - 1; digits[right] == (byte) '0'; --right) {}
+            count = right - left + 1;
+            System.arraycopy(digits, left, digits, 0, count);
+        }        
+        if (maximumDigits > 0) round(maximumDigits);
+    }
+
+    /**
+     * Set the digit list to a representation of the given BigInteger value.
+     * [bnf]
+     * @param source Value to be converted
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     */
+    public final void set(BigInteger source, int maximumDigits) {
+        String stringDigits = source.toString();
+
+        count = decimalAt = stringDigits.length();
+
+        // Don't copy trailing zeros
+        while (count > 1 && stringDigits.charAt(count - 1) == '0') --count;
+
+        int offset = 0;
+        if (stringDigits.charAt(0) == '-') {
+            ++offset;
+            --count;
+            --decimalAt;
+        }
+
+        ensureCapacity(count, 0);
+        for (int i = 0; i < count; ++i) {
+            digits[i] = (byte) stringDigits.charAt(i + offset);
+        }
+
+        if (maximumDigits > 0) round(maximumDigits);
+    }
+
+    /**
+     * Internal method that sets this digit list to represent the
+     * given value.  The value is given as a String of the format
+     * returned by BigDecimal.
+     * @param stringDigits value to be represented with the following
+     * syntax, expressed as a regular expression: -?\d*.?\d*
+     * Must not be an empty string.
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     * @param fixedPoint If true, then maximumDigits is the maximum
+     * fractional digits to be converted.  If false, total digits.
+     */
+    private void setBigDecimalDigits(String stringDigits,
+                                     int maximumDigits, boolean fixedPoint) {
+//|        // Find the first non-zero digit, the decimal, and the last non-zero digit.
+//|        int first=-1, last=stringDigits.length()-1, decimal=-1;
+//|        for (int i=0; (first<0 || decimal<0) && i<=last; ++i) {
+//|            char c = stringDigits.charAt(i);
+//|            if (c == '.') {
+//|                decimal = i;
+//|            } else if (first < 0 && (c >= '1' && c <= '9')) {
+//|                first = i;
+//|            }
+//|        }
+//|
+//|        if (first < 0) {
+//|            clear();
+//|            return;
+//|        }
+//|
+//|        // At this point we know there is at least one non-zero digit, so the
+//|        // following loop is safe.
+//|        for (;;) {
+//|            char c = stringDigits.charAt(last);
+//|            if (c != '0' && c != '.') {
+//|                break;
+//|            }
+//|            --last;
+//|        }
+//|
+//|        if (decimal < 0) {
+//|            decimal = stringDigits.length();
+//|        }
+//|
+//|        count = last - first;
+//|        if (decimal < first || decimal > last) {
+//|            ++count;
+//|        }
+//|        decimalAt = decimal - first;
+//|        if (decimalAt < 0) {
+//|            ++decimalAt;
+//|        }
+//|
+//|        ensureCapacity(count, 0);
+//|        for (int i = 0; i < count; ++i) {
+//|            digits[i] = (byte) stringDigits.charAt(first++);
+//|            if (first == decimal) {
+//|                ++first;
+//|            }
+//|        }
+
+        // The maxDigits here could also be Integer.MAX_VALUE
+        set(stringDigits, stringDigits.length());
+
+        // Eliminate digits beyond maximum digits to be displayed.
+        // Round up if appropriate.
+        round(fixedPoint ? (maximumDigits + decimalAt) : maximumDigits);
+    }
+
+    /**
+     * Set the digit list to a representation of the given BigDecimal value.
+     * [bnf]
+     * @param source Value to be converted
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     * @param fixedPoint If true, then maximumDigits is the maximum
+     * fractional digits to be converted.  If false, total digits.
+     */
+    public final void set(java.math.BigDecimal source,
+                          int maximumDigits, boolean fixedPoint) {
+        setBigDecimalDigits(source.toString(), maximumDigits, fixedPoint);
+    }
+
+    /*
+     * Set the digit list to a representation of the given BigDecimal value.
+     * [bnf]
+     * @param source Value to be converted
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     * @param fixedPoint If true, then maximumDigits is the maximum
+     * fractional digits to be converted.  If false, total digits.
+     */
+    public final void set(com.ibm.icu.math.BigDecimal source,
+                          int maximumDigits, boolean fixedPoint) {
+        setBigDecimalDigits(source.toString(), maximumDigits, fixedPoint);
+    }
+
+    /**
+     * equality test between two digit lists.
+     */
+    public boolean equals(Object obj) {
+        if (this == obj)                      // quick check
+            return true;
+        if (!(obj instanceof DigitList))         // (1) same object?
+            return false;
+        DigitList other = (DigitList) obj;
+        if (count != other.count ||
+        decimalAt != other.decimalAt)
+            return false;
+        for (int i = 0; i < count; i++)
+            if (digits[i] != other.digits[i])
+                return false;
+        return true;
+    }
+
+    /**
+     * Generates the hash code for the digit list.
+     */
+    public int hashCode() {
+        int hashcode = decimalAt;
+
+        for (int i = 0; i < count; i++)
+            hashcode = hashcode * 37 + digits[i];
+
+        return hashcode;
+    }
+
+    /**
+     * Returns true if this DigitList represents Long.MIN_VALUE;
+     * false, otherwise.  This is required so that getLong() works.
+     */
+    private boolean isLongMIN_VALUE()
+    {
+        if (decimalAt != count || count != MAX_LONG_DIGITS)
+            return false;
+
+            for (int i = 0; i < count; ++i)
+        {
+            if (digits[i] != LONG_MIN_REP[i]) return false;
+        }
+
+        return true;
+    }
+
+    private static byte[] LONG_MIN_REP;
+
+    static
+    {
+        // Store the representation of LONG_MIN without the leading '-'
+        String s = Long.toString(Long.MIN_VALUE);
+        LONG_MIN_REP = new byte[MAX_LONG_DIGITS];
+        for (int i=0; i < MAX_LONG_DIGITS; ++i)
+        {
+            LONG_MIN_REP[i] = (byte)s.charAt(i + 1);
+        }
+    }
+
+    /**
+     * Return the floor of the log base 10 of a given double.
+     * This method compensates for inaccuracies which arise naturally when
+     * computing logs, and always give the correct value.  The parameter
+     * must be positive and finite.
+     */
+    private static final int log10(double d)
+    {
+        // The reason this routine is needed is that simply taking the
+        // log and dividing by log10 yields a result which may be off
+        // by 1 due to rounding errors.  For example, the naive log10
+        // of 1.0e300 taken this way is 299, rather than 300.
+        double log10 = Math.log(d) / LOG10;
+        int ilog10 = (int)Math.floor(log10);
+        // Positive logs could be too small, e.g. 0.99 instead of 1.0
+        if (log10 > 0 && d >= Math.pow(10, ilog10 + 1))
+        {
+            ++ilog10;
+        }
+        // Negative logs could be too big, e.g. -0.99 instead of -1.0
+        else if (log10 < 0 && d < Math.pow(10, ilog10))
+        {
+            --ilog10;
+        }
+        return ilog10;
+    }
+
+    private static final double LOG10 = Math.log(10.0);
+
+    public String toString()
+    {
+        if (isZero()) return "0";
+        StringBuffer buf = new StringBuffer("0.");
+        for (int i=0; i<count; ++i) buf.append((char)digits[i]);
+        buf.append("x10^");
+        buf.append(decimalAt);
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/text/EscapeTransliterator.java b/src/com/ibm/icu/text/EscapeTransliterator.java
new file mode 100755
index 0000000..d40a1af
--- /dev/null
+++ b/src/com/ibm/icu/text/EscapeTransliterator.java
@@ -0,0 +1,201 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   11/19/2001  aliu        Creation.
+**********************************************************************
+*/
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * A transliterator that converts Unicode characters to an escape
+ * form.  Examples of escape forms are "U+4E01" and "&#x10FFFF;".
+ * Escape forms have a prefix and suffix, either of which may be
+ * empty, a radix, typically 16 or 10, a minimum digit count,
+ * typically 1, 4, or 8, and a boolean that specifies whether
+ * supplemental characters are handled as 32-bit code points or as two
+ * 16-bit code units.  Most escape forms handle 32-bit code points,
+ * but some, such as the Java form, intentionally break them into two
+ * surrogate pairs, for backward compatibility.
+ *
+ * <p>Some escape forms actually have two different patterns, one for
+ * BMP characters (0..FFFF) and one for supplements (>FFFF).  To
+ * handle this, a second EscapeTransliterator may be defined that
+ * specifies the pattern to be produced for supplementals.  An example
+ * of a form that requires this is the C form, which uses "\\uFFFF"
+ * for BMP characters and "\\U0010FFFF" for supplementals.
+ *
+ * <p>This class is package private.  It registers several standard
+ * variants with the system which are then accessed via their IDs.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: EscapeTransliterator.java,v $ $Revision: 1.5 $ $Date: 2002/02/25 22:43:58 $
+ */
+class EscapeTransliterator extends Transliterator {
+
+    /**
+     * The prefix of the escape form; may be empty, but usually isn't.
+     * May not be null.
+     */
+    private String prefix;
+
+    /**
+     * The prefix of the escape form; often empty.  May not be null.
+     */
+    private String suffix;
+
+    /**
+     * The radix to display the number in.  Typically 16 or 10.  Must
+     * be in the range 2 to 36.
+     */
+    private int radix;
+
+    /**
+     * The minimum number of digits.  Typically 1, 4, or 8.  Values
+     * less than 1 are equivalent to 1.
+     */
+    private int minDigits;
+
+    /**
+     * If true, supplementals are handled as 32-bit code points.  If
+     * false, they are handled as two 16-bit code units.
+     */
+    private boolean grokSupplementals;
+
+    /**
+     * The form to be used for supplementals.  If this is null then
+     * the same form is used for BMP characters and supplementals.  If
+     * this is not null and if grokSupplementals is true then the
+     * prefix, suffix, radix, and minDigits of this object are used
+     * for supplementals.
+     */
+    private EscapeTransliterator supplementalHandler;
+
+    /**
+     * Registers standard variants with the system.  Called by
+     * Transliterator during initialization.
+     */
+    static void register() {
+        // Unicode: "U+10FFFF" hex, min=4, max=6
+        Transliterator.registerFactory("Any-Hex/Unicode", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/Unicode",
+                                                "U+", "", 16, 4, true, null);
+            }
+        });
+        
+        // Java: "\\uFFFF" hex, min=4, max=4
+        Transliterator.registerFactory("Any-Hex/Java", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/Java",
+                                                "\\u", "", 16, 4, false, null);
+            }
+        });
+        
+        // C: "\\uFFFF" hex, min=4, max=4; \\U0010FFFF hex, min=8, max=8
+        Transliterator.registerFactory("Any-Hex/C", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/C",
+                                                "\\u", "", 16, 4, true,
+                       new EscapeTransliterator("", "\\U", "", 16, 8, true, null));
+            }
+        });
+        
+        // XML: "&#x10FFFF;" hex, min=1, max=6
+        Transliterator.registerFactory("Any-Hex/XML", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/XML",
+                                                "&#x", ";", 16, 1, true, null);
+            }
+        });
+
+        // XML10: "&1114111;" dec, min=1, max=7 (not really "Any-Hex")
+        Transliterator.registerFactory("Any-Hex/XML10", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/XML10",
+                                                "&#", ";", 10, 1, true, null);
+            }
+        });
+
+        // Perl: "\\x{263A}" hex, min=1, max=6
+        Transliterator.registerFactory("Any-Hex/Perl", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/Perl",
+                                                "\\x{", "}", 16, 1, true, null);
+            }
+        });
+
+        // Generic
+        Transliterator.registerFactory("Any-Hex", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex",
+                                                "\\u", "", 16, 4, false, null);
+            }
+        });
+    }
+
+    /**
+     * Constructs an escape transliterator with the given ID and
+     * parameters.  See the class member documentation for details.
+     */
+    EscapeTransliterator(String ID, String prefix, String suffix,
+                         int radix, int minDigits,
+                         boolean grokSupplementals,
+                         EscapeTransliterator supplementalHandler) {
+        super(ID, null);
+        this.prefix = prefix;
+        this.suffix = suffix;
+        this.radix = radix;
+        this.minDigits = minDigits;
+        this.grokSupplementals = grokSupplementals;
+        this.supplementalHandler = supplementalHandler;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position pos, boolean incremental) {
+        int start = pos.start;
+        int limit = pos.limit;
+
+        StringBuffer buf = new StringBuffer(prefix);
+        int prefixLen = prefix.length();
+        boolean redoPrefix = false;
+
+        while (start < limit) {
+            int c = grokSupplementals ? text.char32At(start) : text.charAt(start);
+            int charLen = grokSupplementals ? UTF16.getCharCount(c) : 1;
+
+            if ((c & 0xFFFF0000) != 0 && supplementalHandler != null) {
+                buf.setLength(0);
+                buf.append(supplementalHandler.prefix);
+                Utility.appendNumber(buf, c, supplementalHandler.radix,
+                                     supplementalHandler.minDigits);
+                buf.append(supplementalHandler.suffix);
+                redoPrefix = true;
+            } else {
+                if (redoPrefix) {
+                    buf.setLength(0);
+                    buf.append(prefix);
+                    redoPrefix = false;
+                } else {
+                    buf.setLength(prefixLen);
+                }
+                Utility.appendNumber(buf, c, radix, minDigits);
+                buf.append(suffix);
+            }
+
+            text.replace(start, start + charLen, buf.toString());
+            start += buf.length();
+            limit += buf.length() - charLen;
+        }
+
+        pos.contextLimit += limit - pos.limit;
+        pos.limit = limit;
+        pos.start = start;
+    }
+}
diff --git a/src/com/ibm/icu/text/FunctionReplacer.java b/src/com/ibm/icu/text/FunctionReplacer.java
new file mode 100755
index 0000000..f307390
--- /dev/null
+++ b/src/com/ibm/icu/text/FunctionReplacer.java
@@ -0,0 +1,85 @@
+/*
+**********************************************************************
+*   Copyright (c) 2002, International Business Machines Corporation
+*   and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   01/14/2002  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * A replacer that calls a transliterator to generate its output text.
+ * The input text to the transliterator is the output of another
+ * UnicodeReplacer object.  That is, this replacer wraps another
+ * replacer with a transliterator.
+ * @author Alan Liu
+ */
+class FunctionReplacer implements UnicodeReplacer {
+
+    /**
+     * The transliterator.  Must not be null.
+     */
+    private Transliterator translit;
+
+    /**
+     * The replacer object.  This generates text that is then
+     * processed by 'translit'.  Must not be null.
+     */
+    private UnicodeReplacer replacer;
+
+    /**
+     * Construct a replacer that takes the output of the given
+     * replacer, passes it through the given transliterator, and emits
+     * the result as output.
+     */
+    public FunctionReplacer(Transliterator theTranslit,
+                            UnicodeReplacer theReplacer) {
+        translit = theTranslit;
+        replacer = theReplacer;
+    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public int replace(Replaceable text,
+                       int start,
+                       int limit,
+                       int[] cursor) {
+
+        // First delegate to subordinate replacer
+        int len = replacer.replace(text, start, limit, cursor);
+        limit = start + len;
+
+        // Now transliterate
+        limit = translit.transliterate(text, start, limit);
+
+        return limit - start;
+    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public String toReplacerPattern(boolean escapeUnprintable) {
+        StringBuffer rule = new StringBuffer("&");
+        rule.append(translit.getID());
+        rule.append("( ");
+        rule.append(replacer.toReplacerPattern(escapeUnprintable));
+        rule.append(" )");
+        return rule.toString();
+    }
+
+    /**
+     * Union the set of all characters that may output by this object
+     * into the given set.
+     * @param toUnionTo the set into which to union the output characters
+     */
+    public void addReplacementSetTo(UnicodeSet toUnionTo) {
+        toUnionTo.addAll(translit.getTargetSet());
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/HexToUnicodeTransliterator.java b/src/com/ibm/icu/text/HexToUnicodeTransliterator.java
new file mode 100755
index 0000000..99bc66b
--- /dev/null
+++ b/src/com/ibm/icu/text/HexToUnicodeTransliterator.java
@@ -0,0 +1,381 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/Attic/HexToUnicodeTransliterator.java,v $ 
+ * $Date: 2002/02/25 22:43:58 $ 
+ * $Revision: 1.13 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+import java.util.*;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * A transliterator that converts from hexadecimal Unicode escape
+ * sequences to the characters they represent.  For example, "U+0040"
+ * and '\u0040'.  A default HexToUnicodeTransliterator recognizes the
+ * prefixes "U+", "u+", "&#92;U", and "&#92;u".  Hex values may be
+ * upper- or lowercase.  By calling the applyPattern() method, one
+ * or more custom prefix/suffix pairs may be specified.  See
+ * applyPattern() for details.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: HexToUnicodeTransliterator.java,v $ $Revision: 1.13 $ $Date: 2002/02/25 22:43:58 $
+ */
+public class HexToUnicodeTransliterator extends Transliterator {
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Package accessible ID for this transliterator.
+     */
+    static final String _ID = "Hex-Any";
+
+    /**
+     * This pattern encodes the following specs for the default constructor:
+     *   \\u0000
+     *   \\U0000
+     *   u+0000
+     *   U+0000
+     * The multiple backslashes resolve to a single backslash
+     * in the effective prefix.
+     */
+    private static final String DEFAULT_PATTERN = "\\\\u0000;\\\\U0000;u+0000;U+0000";
+
+    // Character constants for special pattern characters
+    private static final char SEMICOLON = ';';
+    private static final char ZERO      = '0';
+    private static final char POUND     = '#';
+    private static final char BACKSLASH = '\\';
+
+    /**
+     * The pattern for this transliterator
+     */
+    private String pattern;
+
+    /**
+     * The processed pattern specification.  See applyPattern() for
+     * details.
+     */
+    private char[] affixes;
+
+    /**
+     * The number of different affix sets in affixes.
+     */
+    private int affixCount;
+
+    /**
+     * Constructs a transliterator.
+     */
+    public HexToUnicodeTransliterator() {
+        super(_ID, null);
+        applyPattern(DEFAULT_PATTERN);
+    }
+
+    /**
+     * Constructs a transliterator.
+     */
+    public HexToUnicodeTransliterator(String thePattern) {
+        this(thePattern, null);
+    }
+    
+    /**
+     * Constructs a transliterator.
+     */
+    public HexToUnicodeTransliterator(String thePattern,
+                                      UnicodeFilter theFilter) {
+        super(_ID, theFilter);
+        applyPattern(thePattern);
+    }
+
+    /**
+     * Set the patterns recognized by this transliterator.  One or
+     * more patterns may be specified, separated by semicolons (';').
+     * Each pattern contains zero or more prefix characters, one or
+     * more digit characters, and zero or more suffix characters.  The
+     * digit characters indicates optional digits ('#') followed by
+     * required digits ('0').  The total number of digits cannot
+     * exceed 4, and must be at least 1 required digit.  Use a
+     * backslash ('\\') to escape any of the special characters.  An
+     * empty pattern is allowed; it specifies a transliterator that
+     * does nothing.
+     *
+     * <p>Example: "U+0000;<###0>" specifies two patterns.  The first
+     * has a prefix of "U+", exactly four digits, and no suffix.  The
+     * second has a prefix of "<", between one and four digits, and a
+     * suffix of ">".
+     *
+     * <p><pre>
+     * pattern := spec | ( pattern ';' spec )
+     * spec := prefix-char* digit-spec suffix-char*
+     * digit-spec := '#'* '0'+
+     * prefix-char := [^special-char] | '\\' special-char
+     * suffix-char := [^special-char] | '\\' special-char
+     * special-char := ';' | '0' | '#' | '\\'
+     * </pre>
+     */
+    public void applyPattern(String pattern) {
+
+        /* The pattern is processed and stored in affixes.  The pattern
+         * consists of zero or more affixes.  Each affix is parsed to
+         * determine the prefix, suffix, minimum digit count, and maximum
+         * digit count.  These values are then stored as a four character
+         * header.  That is, their numeric values are cast to UChars and
+         * stored in the string.  Following these four characters, the prefix
+         * characters, then suffix characters are stored.  Each spec takes
+         * n+4 characters, where n is the total length of the prefix and
+         * suffix.
+         */
+
+        StringBuffer affixes = new StringBuffer();
+        affixCount = 0;
+
+        /* The mode specifies where we are in each spec.
+         * mode 0 = in prefix
+         * mode 1 = in optional digits (#)
+         * mode 2 = in required digits (0)
+         * mode 3 = in suffix
+         */
+        int mode = 0;
+
+        int prefixLen = 0, suffixLen = 0, minDigits = 0, maxDigits = 0;
+        int start = 0;
+
+        /* To make parsing easier, we append a virtual ';' at the end of
+         * the pattern string, if there isn't one already.  When we get to
+         * the index pattern.length() (that is, one past the end), we
+         * create a virtual ';' if necessary.
+         */
+        char c = 0;                // These are outside the loop so we can
+        boolean isLiteral = false; // see the previous character...
+        for (int i=0; i<=pattern.length(); ++i) {
+            // Create the virtual trailing ';' if necessary
+            if (i == pattern.length()) {
+                // If the last character was not a non-literal ';'...
+                if (i > 0 && !(c == SEMICOLON && !isLiteral)) {
+                    c = SEMICOLON;
+                    isLiteral = false;
+                } else {
+                    break;
+                }
+            } else {
+                c = pattern.charAt(i);
+                isLiteral = false;
+            }
+
+            if (c == BACKSLASH) {
+                if ((i+1)<pattern.length()) {
+                    isLiteral = true;
+                    c = pattern.charAt(++i);
+                } else {
+                    // Trailing '\\'
+                    throw new IllegalArgumentException("Trailing '\\'");
+                }
+            }
+
+            if (!isLiteral) {
+                switch (c) {
+                case POUND:
+                    // Seeing a '#' moves us from mode 0 (prefix) to mode 1
+                    // (optional digits).
+                    if (mode == 0) {
+                        ++mode;
+                    } else if (mode != 1) {
+                        // Unquoted '#'
+                        throw new IllegalArgumentException("Unquoted '#'");
+                    }
+                    ++maxDigits;
+                    break;
+                case ZERO:
+                    // Seeing a '0' moves us to mode 2 (required digits)
+                    if (mode < 2) {
+                        mode = 2;
+                    } else if (mode != 2) {
+                        // Unquoted '0'
+                        throw new IllegalArgumentException("Unquoted '0'");
+                    }
+                    ++minDigits;
+                    ++maxDigits;
+                    break;
+                case SEMICOLON:
+                    if (minDigits < 1 || maxDigits > 4
+                        // Invalid min/max digit count
+                        || prefixLen > 0xFFFF || suffixLen > 0xFFFF) {
+                        // Suffix or prefix too long
+                        throw new IllegalArgumentException("Suffix or prefix too long");
+                    }
+                    // If there was no prefix and no suffix, then the
+                    // header will not have been allocated yet.  We need
+                    // allocate the header now.
+                    if (start == affixes.length()) {
+                        affixes.append("AAAA");
+                    }
+                    // Fill in 4-character header
+                    affixes.setCharAt(start++, (char) prefixLen);
+                    affixes.setCharAt(start++, (char) suffixLen);
+                    affixes.setCharAt(start++, (char) minDigits);
+                    affixes.setCharAt(start,   (char) maxDigits);
+                    start = affixes.length();
+                    ++affixCount;
+                    prefixLen = suffixLen = minDigits = maxDigits = mode = 0;
+                    break;
+                default:
+                    isLiteral = true;
+                    break;
+                }
+            }
+
+            if (isLiteral) {
+                if (start == affixes.length()) {
+                    // Make space for the header.  Append any four
+                    // characters as place holders for the header values.
+                    // We fill these in when we parse the ';'.
+                    affixes.append("AAAA");
+                }
+                affixes.append(c);
+                if (mode == 0) {
+                    ++prefixLen;
+                } else {
+                    // Any literal outside the prefix moves us into mode 3
+                    // (suffix)
+                    mode = 3;
+                    ++suffixLen;
+                }
+            }
+        }
+
+        // We only modify the pattern and affixes member variables if
+        // we get to this point, that is, if the parse succeeds.
+        this.pattern = pattern;
+        int len = affixes.length();
+        this.affixes = new char[len];
+        Utility.getChars(affixes, 0, len, this.affixes, 0);
+    }
+
+    /**
+     * Return this transliterator's pattern.
+     */
+    public String toPattern() {
+        return pattern;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        int cursor = offsets.start;
+        int limit = offsets.limit;
+        int i, j, ipat;
+
+      loop:
+        while (cursor < limit) {
+            // Loop over the specs in affixes.  If affixCount is zero (an
+            // empty pattern), then we do nothing.  We exit this loop when
+            // we match one of the specs.  We exit this function (by
+            // jumping to exit: below) if a partial match is detected and
+            // isIncremental is true.
+            for (j=0, ipat=0; j<affixCount; ++j) {
+
+                // Read the header
+                int prefixLen = affixes[ipat++];
+                int suffixLen = affixes[ipat++];
+                int minDigits = affixes[ipat++];
+                int maxDigits = affixes[ipat++];
+
+                // curs is a copy of cursor that is advanced over the
+                // characters as we parse them.
+                int curs = cursor;
+                boolean match = true;
+
+                for (i=0; i<prefixLen; ++i) {
+                    if (curs >= limit) {
+                        if (i > 0) {
+                            // We've already matched a character.  This is
+                            // a partial match, so we return if in
+                            // incremental mode.  In non-incremental mode,
+                            // go to the next spec.
+                            if (isIncremental) {
+                                break loop;
+                            }
+                            match = false;
+                            break;
+                        }
+                    }
+                    char c = text.charAt(curs++);
+                    if (c != affixes[ipat + i]) {
+                        match = false;
+                        break;
+                    }
+                }
+
+                if (match) {
+                    char u = 0;
+                    int digitCount = 0;
+                    for (;;) {
+                        if (curs >= limit) {
+                            // Check for partial match in incremental mode.
+                            if (curs > cursor && isIncremental) {
+                                break loop;
+                            }
+                            break;
+                        }
+                        int digit = Character.digit(text.charAt(curs), 16);
+                        if (digit < 0) {
+                            break;
+                        }
+                        ++curs;
+                        u <<= 4;
+                        u |= (char) digit;
+                        if (++digitCount == maxDigits) {
+                            break;
+                        }
+                    }
+
+                    match = (digitCount >= minDigits);
+
+                    if (match) {
+                        for (i=0; i<suffixLen; ++i) {
+                            if (curs >= limit) {
+                                // Check for partial match in incremental mode.
+                                if (curs > cursor && isIncremental) {
+                                    break loop;
+                                }
+                                match = false;
+                                break;
+                            }
+                            char c = text.charAt(curs++);
+                            if (c != affixes[ipat + prefixLen + i]) {
+                                match = false;
+                                break;
+                            }
+                        }
+
+                        if (match) {
+                            // At this point, we have a match
+                            text.replace(cursor, curs, String.valueOf(u));
+                            limit -= curs - cursor - 1;
+                            // The following break statement leaves the
+                            // loop that is traversing the specs in
+                            // affixes.  We then parse the next input
+                            // character.
+                            break;
+                        }
+                    }
+                }
+
+                ipat += prefixLen + suffixLen;
+            }
+
+            ++cursor;
+        }
+
+        offsets.contextLimit += limit - offsets.limit;
+        offsets.limit = limit;
+        offsets.start = cursor;
+    }
+}
diff --git a/src/com/ibm/icu/text/LowercaseTransliterator.java b/src/com/ibm/icu/text/LowercaseTransliterator.java
new file mode 100755
index 0000000..aa86d55
--- /dev/null
+++ b/src/com/ibm/icu/text/LowercaseTransliterator.java
@@ -0,0 +1,100 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/LowercaseTransliterator.java,v $ 
+ * $Date: 2002/06/20 01:21:18 $ 
+ * $Revision: 1.11 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+import java.util.*;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.UnicodeCharacterIterator;
+
+/**
+ * A transliterator that performs locale-sensitive toLower()
+ * case mapping.
+ */
+class LowercaseTransliterator extends Transliterator{
+
+    /**
+     * Package accessible ID.
+     */
+    static final String _ID = "Any-Lower";
+    
+    // TODO: Add variants for tr, az, lt, default = default locale
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new LowercaseTransliterator(Locale.US);
+            }
+        });
+
+        Transliterator.registerSpecialInverse("Lower", "Upper", true);
+    }
+
+    private Locale loc;
+
+    /**
+     * Constructs a transliterator.
+     */
+
+    public LowercaseTransliterator(Locale loc) {
+        super(_ID, null);
+        this.loc = loc;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        int textPos = offsets.start;
+        if (textPos >= offsets.limit) return;
+
+        // get string for context
+        // TODO: add convenience method to do this, since we do it all over
+        
+        UnicodeCharacterIterator original = new UnicodeCharacterIterator(text);
+        
+        // Walk through original string
+        // If there is a case change, modify corresponding position in replaceable
+        
+        int limit = offsets.limit;
+        int cp;
+        int oldLen;
+        
+        while (textPos < limit) {
+        	original.setIndex(textPos);
+            cp = original.currentCodePoint();
+            oldLen = UTF16.getCharCount(cp);
+            int newLen = m_charppty_.toLowerCase(loc, cp, original, buffer);
+            if (newLen >= 0) {
+                text.replace(textPos, textPos + oldLen, buffer, 0, newLen);
+                if (newLen != oldLen) {
+                    textPos += newLen;
+                    offsets.limit += newLen - oldLen;
+                    offsets.contextLimit += newLen - oldLen;
+                    continue;
+                }
+            }
+            textPos += oldLen;
+        }
+        offsets.start = offsets.limit;
+    }
+    
+    private char buffer[] = new char[UCharacterProperty.MAX_CASE_MAP_SIZE];
+    /**
+     * Character properties data base
+     */
+    private static final UCharacterProperty m_charppty_ = 
+    							            UCharacterProperty.getInstance(); 
+}
diff --git a/src/com/ibm/icu/text/NFRule.java b/src/com/ibm/icu/text/NFRule.java
new file mode 100755
index 0000000..405f418
--- /dev/null
+++ b/src/com/ibm/icu/text/NFRule.java
@@ -0,0 +1,1335 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/NFRule.java,v $ 
+ * $Date: 2002/07/31 00:54:58 $ 
+ * $Revision: 1.6 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.UCharacterProperty;
+
+import java.text.*;
+
+/**
+ * A class represnting a single rule in a RuleBasedNumberFormat.  A rule
+ * inserts its text into the result string and then passes control to its
+ * substitutions, which do the same thing.
+ * $RCSfile: NFRule.java,v $ $Revision: 1.6 $ $Date: 2002/07/31 00:54:58 $
+ */
+final class NFRule {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    /**
+     * Special base value used to identify a negative-number rule
+     */
+    public static final int NEGATIVE_NUMBER_RULE = -1;
+
+    /**
+     * Special base value used to identify an improper fraction (x.x) rule
+     */
+    public static final int IMPROPER_FRACTION_RULE = -2;
+
+    /**
+     * Special base value used to identify a proper fraction (0.x) rule
+     */
+    public static final int PROPER_FRACTION_RULE = -3;
+
+    /**
+     * Special base value used to identify a master rule
+     */
+    public static final int MASTER_RULE = -4;
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The rule's base value
+     */
+    private long baseValue;
+
+    /**
+     * The rule's radix (the radix to the power of the exponent equals
+     * the rule's divisor)
+     */
+    private short radix = 10;
+
+    /**
+     * The rule's exponent (the radx rased to the power of the exponsnt
+     * equals the rule's divisor)
+     */
+    private short exponent = 0;
+
+    /**
+     * The rule's rule text.  When formatting a number, the rule's text
+     * is inserted into the result string, and then the text from any
+     * substitutions is inserted into the result string
+     */
+    private String ruleText = null;
+
+    /**
+     * The rule's first substitution (the one with the lower offset
+     * into the rule text)
+     */
+    private NFSubstitution sub1 = null;
+
+    /**
+     * The rule's second substitution (the one with the higher offset
+     * into the rule text)
+     */
+    private NFSubstitution sub2 = null;
+
+    /**
+     * The RuleBasedNumberFormat that owns this rule
+     */
+    private RuleBasedNumberFormat formatter = null;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Creates one or more rules based on the description passed in.
+     * @param description The description of the rule(s).
+     * @param owner The rule set containing the new rule(s).
+     * @param predecessor The rule that precedes the new one(s) in "owner"'s
+     * rule list
+     * @param ownersOwner The RuleBasedNumberFormat that owns the
+     * rule set that owns the new rule(s)
+     * @return An instance of NFRule, or an array of NFRules
+     */
+    public static Object makeRules(String                description,
+                                   NFRuleSet             owner,
+                                   NFRule                predecessor,
+                                   RuleBasedNumberFormat ownersOwner) {
+        // we know we're making at least one rule, so go ahead and
+        // new it up and initialize its basevalue and divisor
+        // (this also strips the rule descriptor, if any, off the
+        // descripton string)
+        NFRule rule1 = new NFRule(ownersOwner);
+        description = rule1.parseRuleDescriptor(description);
+
+        // check the description to see whether there's text enclosed
+        // in brackets
+        int brack1 = description.indexOf("[");
+        int brack2 = description.indexOf("]");
+
+        // if the description doesn't contain a matched pair of brackets,
+        // or if it's of a type that doesn't recognize bracketed text,
+        // then leave the description alone, initialize the rule's
+        // rule text and substitutions, and return that rule
+        if (brack1 == -1 || brack2 == -1 || brack1 > brack2
+                            || rule1.getBaseValue() == PROPER_FRACTION_RULE
+                            || rule1.getBaseValue() == NEGATIVE_NUMBER_RULE) {
+            rule1.ruleText = description;
+            rule1.extractSubstitutions(owner, predecessor, ownersOwner);
+            return rule1;
+        } else {
+            // if the description does contain a matched pair of brackets,
+            // then it's really shorthand for two rules (with one exception)
+            NFRule rule2 = null;
+            StringBuffer sbuf = new StringBuffer();
+
+            // we'll actually only split the rule into two rules if its
+            // base value is an even multiple of its divisor (or it's one
+            // of the special rules)
+            if ((rule1.baseValue > 0
+                    && rule1.baseValue % (Math.pow(rule1.radix, rule1.exponent)) == 0)
+                    || rule1.baseValue == IMPROPER_FRACTION_RULE
+                    || rule1.baseValue == MASTER_RULE) {
+
+                // if it passes that test, new up the second rule.  If the
+                // rule set both rules will belong to is a fraction rule
+                // set, they both have the same base value; otherwise,
+                // increment the original rule's base value ("rule1" actually
+                // goes SECOND in the rule set's rule list)
+                rule2 = new NFRule(ownersOwner);
+                if (rule1.baseValue >= 0) {
+                    rule2.baseValue = rule1.baseValue;
+                    if (!owner.isFractionSet()) {
+                        ++rule1.baseValue;
+                    }
+                }
+
+                // if the description began with "x.x" and contains bracketed
+                // text, it describes both the improper fraction rule and
+                // the proper fraction rule
+                else if (rule1.baseValue == IMPROPER_FRACTION_RULE) {
+                    rule2.baseValue = PROPER_FRACTION_RULE;
+                }
+
+                // if the description began with "x.0" and contains bracketed
+                // text, it describes both the master rule and the
+                // improper fraction rule
+                else if (rule1.baseValue == MASTER_RULE) {
+                    rule2.baseValue = rule1.baseValue;
+                    rule1.baseValue = IMPROPER_FRACTION_RULE;
+                }
+
+                // both rules have the same radix and exponent (i.e., the
+                // same divisor)
+                rule2.radix = rule1.radix;
+                rule2.exponent = rule1.exponent;
+
+                // rule2's rule text omits the stuff in brackets: initalize
+                // its rule text and substitutions accordingly
+                sbuf.append(description.substring(0, brack1));
+                if (brack2 + 1 < description.length()) {
+                    sbuf.append(description.substring(brack2 + 1));
+                }
+                rule2.ruleText = sbuf.toString();
+                rule2.extractSubstitutions(owner, predecessor, ownersOwner);
+            }
+
+            // rule1's text includes the text in the brackets but omits
+            // the brackets themselves: initialize _its_ rule text and
+            // substitutions accordingly
+            sbuf.setLength(0);
+            sbuf.append(description.substring(0, brack1));
+            sbuf.append(description.substring(brack1 + 1, brack2));
+            if (brack2 + 1 < description.length()) {
+                sbuf.append(description.substring(brack2 + 1));
+            }
+            rule1.ruleText = sbuf.toString();
+            rule1.extractSubstitutions(owner, predecessor, ownersOwner);
+
+            // if we only have one rule, return it; if we have two, return
+            // a two-element array containing them (notice that rule2 goes
+            // BEFORE rule1 in the list: in all cases, rule2 OMITS the
+            // material in the brackets and rule1 INCLUDES the material
+            // in the brackets)
+            if (rule2 == null) {
+                return rule1;
+            } else {
+                return new NFRule[] { rule2, rule1 };
+            }
+        }
+    }
+
+    /**
+     * Nominal constructor for NFRule.  Most of the work of constructing
+     * an NFRule is actually performed by makeRules().
+     */
+    public NFRule(RuleBasedNumberFormat formatter) {
+        this.formatter = formatter;
+    }
+
+    /**
+     * This function parses the rule's rule descriptor (i.e., the base
+     * value and/or other tokens that precede the rule's rule text
+     * in the description) and sets the rule's base value, radix, and
+     * exponent according to the descriptor.  (If the description doesn't
+     * include a rule descriptor, then this function sets everything to
+     * default values and the rule set sets the rule's real base value).
+     * @param description The rule's description
+     * @return If "description" included a rule descriptor, this is
+     * "description" with the descriptor and any trailing whitespace
+     * stripped off.  Otherwise; it's "descriptor" unchangd.
+     */
+    private String parseRuleDescriptor(String description) {
+        String descriptor;
+
+        // the description consists of a rule descriptor and a rule body,
+        // separated by a colon.  The rule descriptor is optional.  If
+        // it's omitted, just set the base value to 0.
+        int p = description.indexOf(":");
+        if (p == -1) {
+            setBaseValue(0);
+        } else {
+            // copy the descriptor out into its own string and strip it,
+            // along with any trailing whitespace, out of the original
+            // description
+            descriptor = description.substring(0, p);
+            ++p;
+            while (p < description.length() && UCharacterProperty.isRuleWhiteSpace(description.charAt(p)))
+                ++p;
+            description = description.substring(p);
+
+            // check first to see if the rule descriptor matches the token
+            // for one of the special rules.  If it does, set the base
+            // value to the correct identfier value
+            if (descriptor.equals("-x")) {
+                setBaseValue(NEGATIVE_NUMBER_RULE);
+            }
+            else if (descriptor.equals("x.x")) {
+                setBaseValue(IMPROPER_FRACTION_RULE);
+            }
+            else if (descriptor.equals("0.x")) {
+                setBaseValue(PROPER_FRACTION_RULE);
+            }
+            else if (descriptor.equals("x.0")) {
+                setBaseValue(MASTER_RULE);
+            }
+
+            // if the rule descriptor begins with a digit, it's a descriptor
+            // for a normal rule
+            else if (descriptor.charAt(0) >= '0' && descriptor.charAt(0) <= '9') {
+                StringBuffer tempValue = new StringBuffer();
+                p = 0;
+                char c = ' ';
+
+                // begin parsing the descriptor: copy digits
+                // into "tempValue", skip periods, commas, and spaces,
+                // stop on a slash or > sign (or at the end of the string),
+                // and throw an exception on any other character
+                while (p < descriptor.length()) {
+                    c = descriptor.charAt(p);
+                    if (c >= '0' && c <= '9') {
+                        tempValue.append(c);
+                    }
+                    else if (c == '/' || c == '>') {
+                        break;
+                    }
+                    else if (UCharacterProperty.isRuleWhiteSpace(c) || c == ',' || c == '.') {
+                    }
+                    else {
+                        throw new IllegalArgumentException("Illegal character in rule descriptor");
+                    }
+                    ++p;
+                }
+
+                // tempValue now contains a string representation of the
+                // rule's base value with the punctuation stripped out.
+                // Set the rule's base value accordingly
+                setBaseValue(Long.parseLong(tempValue.toString()));
+
+                // if we stopped the previous loop on a slash, we're
+                // now parsing the rule's radix.  Again, accumulate digits
+                // in tempValue, skip punctuation, stop on a > mark, and
+                // throw an exception on anything else
+                if (c == '/') {
+                    tempValue.setLength(0);
+                    ++p;
+                    while (p < descriptor.length()) {
+                        c = descriptor.charAt(p);
+                        if (c >= '0' && c <= '9') {
+                            tempValue.append(c);
+                        }
+                        else if (c == '>') {
+                            break;
+                        }
+                        else if (UCharacterProperty.isRuleWhiteSpace(c) || c == ',' || c == '.') {
+                        }
+                        else {
+                            throw new IllegalArgumentException("Illegal character is rule descriptor");
+                        }
+                        ++p;
+                    }
+
+                    // tempValue now contain's the rule's radix.  Set it
+                    // accordingly, and recalculate the rule's exponent
+                    radix = Short.parseShort(tempValue.toString());
+                    if (radix == 0) {
+                        throw new IllegalArgumentException("Rule can't have radix of 0");
+                    }
+                    exponent = expectedExponent();
+                }
+
+                // if we stopped the previous loop on a > sign, then continue
+                // for as long as we still see > signs.  For each one,
+                // decrement the exponent (unless the exponent is already 0).
+                // If we see another character before reaching the end of
+                // the descriptor, that's also a syntax error.
+                if (c == '>') {
+                    while (p < descriptor.length()) {
+                        c = descriptor.charAt(p);
+                        if (c == '>' && exponent > 0) {
+                            --exponent;
+                        } else {
+                            throw new IllegalArgumentException("Illegal character in rule descriptor");
+                        }
+                        ++p;
+                    }
+                }
+            }
+        }
+
+        // finally, if the rule body begins with an apostrophe, strip it off
+        // (this is generally used to put whitespace at the beginning of
+        // a rule's rule text)
+        if (description.length() > 0 && description.charAt(0) == '\'') {
+            description = description.substring(1);
+        }
+
+        // return the description with all the stuff we've just waded through
+        // stripped off the front.  It now contains just the rule body.
+        return description;
+    }
+
+    /**
+     * Searches the rule's rule text for the substitution tokens,
+     * creates the substitutions, and removes the substitution tokens
+     * from the rule's rule text.
+     * @param owner The rule set containing this rule
+     * @param predecessor The rule preseding this one in "owners" rule list
+     * @param ownersOwner The RuleBasedFormat that owns this rule
+     */
+    private void extractSubstitutions(NFRuleSet             owner,
+                                      NFRule                predecessor,
+                                      RuleBasedNumberFormat ownersOwner) {
+        sub1 = extractSubstitution(owner, predecessor, ownersOwner);
+        sub2 = extractSubstitution(owner, predecessor, ownersOwner);
+    }
+
+    /**
+     * Searches the rule's rule text for the first substitution token,
+     * creates a substitution based on it, and removes the token from
+     * the rule's rule text.
+     * @param owner The rule set containing this rule
+     * @param predecessor The rule preceding this one in the rule set's
+     * rule list
+     * @param ownersOwner The RuleBasedNumberFormat that owns this rule
+     * @return The newly-created substitution.  This is never null; if
+     * the rule text doesn't contain any substitution tokens, this will
+     * be a NullSubstitution.
+     */
+    private NFSubstitution extractSubstitution(NFRuleSet             owner,
+                                               NFRule                predecessor,
+                                               RuleBasedNumberFormat ownersOwner) {
+        NFSubstitution result = null;
+        int subStart;
+        int subEnd;
+
+        // search the rule's rule text for the first two characters of
+        // a substitution token
+        subStart = indexOfAny(new String[] { "<<", "<%", "<#", "<0",
+                                             ">>", ">%", ">#", ">0",
+                                             "=%", "=#", "=0" } );
+
+        // if we didn't find one, create a null substitution positioned
+        // at the end of the rule text
+        if (subStart == -1) {
+            return NFSubstitution.makeSubstitution(ruleText.length(), this, predecessor,
+                            owner, ownersOwner, "");
+        }
+
+        // special-case the ">>>" token, since searching for the > at the
+        // end will actually find the > in the middle
+        if (ruleText.substring(subStart).startsWith(">>>")) {
+            subEnd = subStart + 2;
+
+        // otherwise the substitution token ends with the same character
+        // it began with
+        } else {
+            subEnd = ruleText.indexOf(ruleText.charAt(subStart), subStart + 1);
+        }
+
+        // if we don't find the end of the token (i.e., if we're on a single,
+        // unmatched token character), create a null substitution positioned
+        // at the end of the rule
+        if (subEnd == -1) {
+            return NFSubstitution.makeSubstitution(ruleText.length(), this, predecessor,
+                            owner, ownersOwner, "");
+        }
+
+        // if we get here, we have a real substitution token (or at least
+        // some text bounded by substitution token characters).  Use
+        // makeSubstitution() to create the right kind of substitution
+        result = NFSubstitution.makeSubstitution(subStart, this, predecessor, owner,
+                        ownersOwner, ruleText.substring(subStart, subEnd + 1));
+
+        // remove the substitution from the rule text
+        ruleText = ruleText.substring(0, subStart) + ruleText.substring(subEnd + 1);
+        return result;
+    }
+
+    /**
+     * Sets the rule's base value, and causes the radix and exponent
+     * to be recalculated.  This is used during construction when we
+     * don't know the rule's base value until after it's been
+     * constructed.  It should be used at any other time.
+     * @param The new base value for the rule.
+     */
+    public final void setBaseValue(long newBaseValue) {
+        // set the base value
+        baseValue = newBaseValue;
+
+        // if this isn't a special rule, recalculate the radix and exponent
+        // (the radix always defaults to 10; if it's supposed to be something
+        // else, it's cleaned up by the caller and the exponent is
+        // recalculated again-- the only function that does this is
+        // NFRule.parseRuleDescriptor() )
+        if (baseValue >= 1) {
+            radix = 10;
+            exponent = expectedExponent();
+
+            // this function gets called on a fully-constructed rule whose
+            // description didn't specify a base value.  This means it
+            // has substitutions, and some substitutions hold on to copies
+            // of the rule's divisor.  Fix their copies of the divisor.
+            if (sub1 != null) {
+                sub1.setDivisor(radix, exponent);
+            }
+            if (sub2 != null) {
+                sub2.setDivisor(radix, exponent);
+            }
+
+        // if this is a special rule, its radix and exponent are basically
+        // ignored.  Set them to "safe" default values
+        } else {
+            radix = 10;
+            exponent = 0;
+        }
+    }
+
+    /**
+     * This calculates the rule's exponent based on its radix and base
+     * value.  This will be the highest power the radix can be raised to
+     * and still produce a result less than or equal to the base value.
+     */
+    private short expectedExponent() {
+        // since the log of 0, or the log base 0 of something, causes an
+        // error, declare the exponent in these cases to be 0 (we also
+        // deal with the special-rule identifiers here)
+        if (radix == 0 || baseValue < 1) {
+            return 0;
+        }
+
+        // we get rounding error in some cases-- for example, log 1000 / log 10
+        // gives us 1.9999999996 instead of 2.  The extra logic here is to take
+        // that into account
+        short tempResult = (short)(Math.log(baseValue) / Math.log(radix));
+        if (Math.pow(radix, tempResult + 1) <= baseValue) {
+            return (short)(tempResult + 1);
+        } else {
+            return tempResult;
+        }
+    }
+
+    /**
+     * Searches the rule's rule text for any of the specified strings.
+     * @param strings An array of strings to search the rule's rule
+     * text for
+     * @return The index of the first match in the rule's rule text
+     * (i.e., the first substring in the rule's rule text that matches
+     * _any_ of the strings in "strings").  If none of the strings in
+     * "strings" is found in the rule's rule text, returns -1.
+     */
+    private int indexOfAny(String[] strings) {
+        int pos;
+        int result = -1;
+        for (int i = 0; i < strings.length; i++) {
+            pos = ruleText.indexOf(strings[i]);
+            if (pos != -1 && (result == -1 || pos < result)) {
+                result = pos;
+            }
+        }
+        return result;
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Tests two rules for equality.
+     * @param that The rule to compare this one against
+     * @return True if the two rules are functionally equivalent
+     */
+    public boolean equals(Object that) {
+	if (that instanceof NFRule) {
+            NFRule that2 = (NFRule)that;
+
+            return baseValue == that2.baseValue
+                   && radix == that2.radix
+                   && exponent == that2.exponent
+                   && ruleText.equals(that2.ruleText)
+                   && sub1.equals(that2.sub1)
+                   && sub2.equals(that2.sub2);
+	}
+	return false;
+    }
+
+    /**
+     * Returns a textual representation of the rule.  This won't
+     * necessarily be the same as the description that this rule
+     * was created with, but it will produce the same result.
+     * @return A textual description of the rule
+     */
+    public String toString() {
+        StringBuffer result = new StringBuffer();
+
+        // start with the rule descriptor.  Special-case the special rules
+        if (baseValue == NEGATIVE_NUMBER_RULE) {
+            result.append("-x: ");
+        }
+        else if (baseValue == IMPROPER_FRACTION_RULE) {
+            result.append("x.x: ");
+        }
+        else if (baseValue == PROPER_FRACTION_RULE) {
+            result.append("0.x: ");
+        }
+        else if (baseValue == MASTER_RULE) {
+            result.append("x.0: ");
+        }
+
+        // for a normal rule, write out its base value, and if the radix is
+        // something other than 10, write out the radix (with the preceding
+        // slash, of course).  Then calculate the expected exponent and if
+        // if isn't the same as the actual exponent, write an appropriate
+        // number of > signs.  Finally, terminate the whole thing with
+        // a colon.
+        else {
+            result.append(String.valueOf(baseValue));
+            if (radix != 10) {
+                result.append('/');
+                result.append(String.valueOf(radix));
+            }
+            int numCarets = expectedExponent() - exponent;
+            for (int i = 0; i < numCarets; i++)
+                result.append('>');
+            result.append(": ");
+        }
+
+        // if the rule text begins with a space, write an apostrophe
+        // (whitespace after the rule descriptor is ignored; the
+        // apostrophe is used to make the whitespace significant)
+        if (ruleText.startsWith(" ") && (sub1 == null || sub1.getPos() != 0)) {
+            result.append("\'");
+        }
+
+        // now, write the rule's rule text, inserting appropriate
+        // substitution tokens in the appropriate places
+        StringBuffer ruleTextCopy = new StringBuffer(ruleText);
+        ruleTextCopy.insert(sub2.getPos(), sub2.toString());
+        ruleTextCopy.insert(sub1.getPos(), sub1.toString());
+        result.append(ruleTextCopy);
+
+        // and finally, top the whole thing off with a semicolon and
+        // return the result
+        result.append(';');
+        return result.toString();
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the rule's base value
+     * @return The rule's base value
+     */
+    public final long getBaseValue() {
+        return baseValue;
+    }
+
+    /**
+     * Returns the rule's divisor (the value that cotrols the behavior
+     * of its substitutions)
+     * @return The rule's divisor
+     */
+    public double getDivisor() {
+        return Math.pow(radix, exponent);
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Formats the number, and inserts the resulting text into
+     * toInsertInto.
+     * @param number The number being formatted
+     * @param toInsertInto The string where the resultant text should
+     * be inserted
+     * @param pos The position in toInsertInto where the resultant text
+     * should be inserted
+     */
+    public void doFormat(long number, StringBuffer toInsertInto, int pos) {
+        // first, insert the rule's rule text into toInsertInto at the
+        // specified position, then insert the results of the substitutions
+        // into the right places in toInsertInto (notice we do the
+        // substitutions in reverse order so that the offsets don't get
+        // messed up)
+        toInsertInto.insert(pos, ruleText);
+        sub2.doSubstitution(number, toInsertInto, pos);
+        sub1.doSubstitution(number, toInsertInto, pos);
+    }
+
+    /**
+     * Formats the number, and inserts the resulting text into
+     * toInsertInto.
+     * @param number The number being formatted
+     * @param toInsertInto The string where the resultant text should
+     * be inserted
+     * @param pos The position in toInsertInto where the resultant text
+     * should be inserted
+     */
+    public void doFormat(double number, StringBuffer toInsertInto, int pos) {
+        // first, insert the rule's rule text into toInsertInto at the
+        // specified position, then insert the results of the substitutions
+        // into the right places in toInsertInto
+        // [again, we have two copies of this routine that do the same thing
+        // so that we don't sacrifice precision in a long by casting it
+        // to a double]
+        toInsertInto.insert(pos, ruleText);
+        sub2.doSubstitution(number, toInsertInto, pos);
+        sub1.doSubstitution(number, toInsertInto, pos);
+    }
+
+    /**
+     * Used by the owning rule set to determine whether to invoke the
+     * rollback rule (i.e., whether this rule or the one that precedes
+     * it in the rule set's list should be used to format the number)
+     * @param The number being formatted
+     * @return True if the rule set should use the rule that precedes
+     * this one in its list; false if it should use this rule
+     */
+    public boolean shouldRollBack(double number) {
+        // we roll back if the rule contains a modulus substitution,
+        // the number being formatted is an even multiple of the rule's
+        // divisor, and the rule's base value is NOT an even multiple
+        // of its divisor
+        // In other words, if the original description had
+        //    100: << hundred[ >>];
+        // that expands into
+        //    100: << hundred;
+        //    101: << hundred >>;
+        // internally.  But when we're formatting 200, if we use the rule
+        // at 101, which would normally apply, we get "two hundred zero".
+        // To prevent this, we roll back and use the rule at 100 instead.
+        // This is the logic that makes this happen: the rule at 101 has
+        // a modulus substitution, its base value isn't an even multiple
+        // of 100, and the value we're trying to format _is_ an even
+        // multiple of 100.  This is called the "rollback rule."
+        if ((sub1.isModulusSubstitution()) || (sub2.isModulusSubstitution())) {
+            return (number % Math.pow(radix, exponent)) == 0
+                            && (baseValue % Math.pow(radix, exponent)) != 0;
+        }
+        return false;
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Attempts to parse the string with this rule.
+     * @param text The string being parsed
+     * @param parsePosition On entry, the value is ignored and assumed to
+     * be 0. On exit, this has been updated with the position of the first
+     * character not consumed by matching the text against this rule
+     * (if this rule doesn't match the text at all, the parse position
+     * if left unchanged (presumably at 0) and the function returns
+     * new Long(0)).
+     * @param isFractionRule True if this rule is contained within a
+     * fraction rule set.  This is only used if the rule has no
+     * substitutions.
+     * @return If this rule matched the text, this is the rule's base value
+     * combined appropriately with the results of parsing the substitutions.
+     * If nothing matched, this is new Long(0) and the parse position is
+     * left unchanged.  The result will be an instance of Long if the
+     * result is an integer and Double otherwise.  The result is never null.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, boolean isFractionRule,
+                        double upperBound) {
+
+        // internally we operate on a copy of the string being parsed
+        // (because we're going to change it) and use our own ParsePosition
+        ParsePosition pp = new ParsePosition(0);
+        String workText = new String(text);
+
+        // check to see whether the text before the first substitution
+        // matches the text at the beginning of the string being
+        // parsed.  If it does, strip that off the front of workText;
+        // otherwise, dump out with a mismatch
+        workText = stripPrefix(workText, ruleText.substring(0, sub1.getPos()), pp);
+        int prefixLength = text.length() - workText.length();
+
+        if (pp.getIndex() == 0 && sub1.getPos() != 0) {
+// commented out because ParsePosition doesn't have error index in 1.1.x
+//                parsePosition.setErrorIndex(pp.getErrorIndex());
+            return new Long(0);
+        }
+
+        // this is the fun part.  The basic guts of the rule-matching
+        // logic is matchToDelimiter(), which is called twice.  The first
+        // time it searches the input string for the rule text BETWEEN
+        // the substitutions and tries to match the intervening text
+        // in the input string with the first substitution.  If that
+        // succeeds, it then calls it again, this time to look for the
+        // rule text after the second substitution and to match the
+        // intervening input text against the second substitution.
+        //
+        // For example, say we have a rule that looks like this:
+        //    first << middle >> last;
+        // and input text that looks like this:
+        //    first one middle two last
+        // First we use stripPrefix() to match "first " in both places and
+        // strip it off the front, leaving
+        //    one middle two last
+        // Then we use matchToDelimiter() to match " middle " and try to
+        // match "one" against a substitution.  If it's successful, we now
+        // have
+        //    two last
+        // We use matchToDelimiter() a second time to match " last" and
+        // try to match "two" against a substitution.  If "two" matches
+        // the substitution, we have a successful parse.
+        //
+        // Since it's possible in many cases to find multiple instances
+        // of each of these pieces of rule text in the input string,
+        // we need to try all the possible combinations of these
+        // locations.  This prevents us from prematurely declaring a mismatch,
+        // and makes sure we match as much input text as we can.
+        int highWaterMark = 0;
+        double result = 0;
+        int start = 0;
+        double tempBaseValue = Math.max(0, baseValue);
+
+        do {
+            // our partial parse result starts out as this rule's base
+            // value.  If it finds a successful match, matchToDelimiter()
+            // will compose this in some way with what it gets back from
+            // the substitution, giving us a new partial parse result
+            pp.setIndex(0);
+            double partialResult = matchToDelimiter(workText, start, tempBaseValue,
+                            ruleText.substring(sub1.getPos(), sub2.getPos()), pp, sub1,
+                            upperBound).doubleValue();
+
+            // if we got a successful match (or were trying to match a
+            // null substitution), pp is now pointing at the first unmatched
+            // character.  Take note of that, and try matchToDelimiter()
+            // on the input text again
+            if (pp.getIndex() != 0 || sub1.isNullSubstitution()) {
+                start = pp.getIndex();
+
+                String workText2 = workText.substring(pp.getIndex());
+                ParsePosition pp2 = new ParsePosition(0);
+
+                // the second matchToDelimiter() will compose our previous
+                // partial result with whatever it gets back from its
+                // substitution if there's a successful match, giving us
+                // a real result
+                partialResult = matchToDelimiter(workText2, 0, partialResult,
+                                ruleText.substring(sub2.getPos()), pp2, sub2,
+                                upperBound).doubleValue();
+
+                // if we got a successful match on this second
+                // matchToDelimiter() call, update the high-water mark
+                // and result (if necessary)
+                if (pp2.getIndex() != 0 || sub2.isNullSubstitution()) {
+                    if (prefixLength + pp.getIndex() + pp2.getIndex() > highWaterMark) {
+                        highWaterMark = prefixLength + pp.getIndex() + pp2.getIndex();
+                        result = partialResult;
+                    }
+                }
+// commented out because ParsePosition doesn't have error index in 1.1.x
+//                    else {
+//                        int temp = pp2.getErrorIndex() + sub1.getPos() + pp.getIndex();
+//                        if (temp> parsePosition.getErrorIndex()) {
+//                            parsePosition.setErrorIndex(temp);
+//                        }
+//                    }
+            }
+// commented out because ParsePosition doesn't have error index in 1.1.x
+//                else {
+//                    int temp = sub1.getPos() + pp.getErrorIndex();
+//                    if (temp > parsePosition.getErrorIndex()) {
+//                        parsePosition.setErrorIndex(temp);
+//                    }
+//                }
+        // keep trying to match things until the outer matchToDelimiter()
+        // call fails to make a match (each time, it picks up where it
+        // left off the previous time)
+        } while (sub1.getPos() != sub2.getPos() && pp.getIndex() > 0 && pp.getIndex()
+                            < workText.length() && pp.getIndex() != start);
+
+        // update the caller's ParsePosition with our high-water mark
+        // (i.e., it now points at the first character this function
+        // didn't match-- the ParsePosition is therefore unchanged if
+        // we didn't match anything)
+        parsePosition.setIndex(highWaterMark);
+// commented out because ParsePosition doesn't have error index in 1.1.x
+//        if (highWaterMark > 0) {
+//            parsePosition.setErrorIndex(0);
+//        }
+
+        // this is a hack for one unusual condition: Normally, whether this
+        // rule belong to a fraction rule set or not is handled by its
+        // substitutions.  But if that rule HAS NO substitutions, then
+        // we have to account for it here.  By definition, if the matching
+        // rule in a fraction rule set has no substitutions, its numerator
+        // is 1, and so the result is the reciprocal of its base value.
+        if (isFractionRule && highWaterMark > 0 && sub1.isNullSubstitution()) {
+            result = 1 / result;
+        }
+
+        // return the result as a Long if possible, or as a Double
+        if (result == (long)result) {
+            return new Long((long)result);
+        } else {
+            return new Double(result);
+        }
+    }
+
+    /**
+     * This function is used by parse() to match the text being parsed
+     * against a possible prefix string.  This function
+     * matches characters from the beginning of the string being parsed
+     * to characters from the prospective prefix.  If they match, pp is
+     * updated to the first character not matched, and the result is
+     * the unparsed part of the string.  If they don't match, the whole
+     * string is returned, and pp is left unchanged.
+     * @param text The string being parsed
+     * @param prefix The text to match against
+     * @param pp On entry, ignored and assumed to be 0.  On exit, points
+     * to the first unmatched character (assuming the whole prefix matched),
+     * or is unchanged (if the whole prefix didn't match).
+     * @return If things match, this is the unparsed part of "text";
+     * if they didn't match, this is "text".
+     */
+    private String stripPrefix(String text, String prefix, ParsePosition pp) {
+        // if the prefix text is empty, dump out without doing anything
+        if (prefix.length() == 0) {
+            return text;
+        } else {
+            // otherwise, use prefixLength() to match the beginning of
+            // "text" against "prefix".  This function returns the
+            // number of characters from "text" that matched (or 0 if
+            // we didn't match the whole prefix)
+            int pfl = prefixLength(text, prefix);
+            if (pfl != 0) {
+                // if we got a successful match, update the parse position
+                // and strip the prefix off of "text"
+                pp.setIndex(pp.getIndex() + pfl);
+                return text.substring(pfl);
+
+            // if we didn't get a successful match, leave everything alone
+            } else {
+                return text;
+            }
+        }
+    }
+
+    /**
+     * Used by parse() to match a substitution and any following text.
+     * "text" is searched for instances of "delimiter".  For each instance
+     * of delimiter, the intervening text is tested to see whether it
+     * matches the substitution.  The longest match wins.
+     * @param text The string being parsed
+     * @param startPos The position in "text" where we should start looking
+     * for "delimiter".
+     * @param baseValue A partial parse result (often the rule's base value),
+     * which is combined with the result from matching the substitution
+     * @param delimiter The string to search "text" for.
+     * @param pp Ignored and presumed to be 0 on entry.  If there's a match,
+     * on exit this will point to the first unmatched character.
+     * @param sub If we find "delimiter" in "text", this substitution is used
+     * to match the text between the beginning of the string and the
+     * position of "delimiter."  (If "delimiter" is the empty string, then
+     * this function just matches against this substitution and updates
+     * everything accordingly.)
+     * @param upperBound When matching the substitution, it will only
+     * consider rules with base values lower than this value.
+     * @return If there's a match, this is the result of composing
+     * baseValue with the result of matching the substitution.  Otherwise,
+     * this is new Long(0).  It's never null.  If the result is an integer,
+     * this will be an instance of Long; otherwise, it's an instance of
+     * Double.
+     */
+    private Number matchToDelimiter(String text, int startPos, double baseValue,
+                        String delimiter, ParsePosition pp, NFSubstitution sub, double upperBound) {
+        // if "delimiter" contains real (i.e., non-ignorable) text, search
+        // it for "delimiter" beginning at "start".  If that succeeds, then
+        // use "sub"'s doParse() method to match the text before the
+        // instance of "delimiter" we just found.
+        if (!allIgnorable(delimiter)) {
+            ParsePosition tempPP = new ParsePosition(0);
+            Number tempResult;
+
+            // use findText() to search for "delimiter".  It returns a two-
+            // element array: element 0 is the position of the match, and
+            // element 1 is the number of characters that matched
+            // "delimiter".
+            int[] temp = findText(text, delimiter, startPos);
+            int dPos = temp[0];
+            int dLen = temp[1];
+
+            // if findText() succeeded, isolate the text preceding the
+            // match, and use "sub" to match that text
+            while (dPos >= 0) {
+                String subText = text.substring(0, dPos);
+                if (subText.length() > 0) {
+                    tempResult = sub.doParse(subText, tempPP, baseValue, upperBound,
+                                    formatter.lenientParseEnabled());
+
+                    // if the substitution could match all the text up to
+                    // where we found "delimiter", then this function has
+                    // a successful match.  Bump the caller's parse position
+                    // to point to the first character after the text
+                    // that matches "delimiter", and return the result
+                    // we got from parsing the substitution.
+                    if (tempPP.getIndex() == dPos) {
+                        pp.setIndex(dPos + dLen);
+                        return tempResult;
+                    }
+// commented out because ParsePosition doesn't have error index in 1.1.x
+//                    else {
+//                        if (tempPP.getErrorIndex() > 0) {
+//                            pp.setErrorIndex(tempPP.getErrorIndex());
+//                        } else {
+//                            pp.setErrorIndex(tempPP.getIndex());
+//                        }
+//                    }
+                }
+
+                // if we didn't match the substitution, search for another
+                // copy of "delimiter" in "text" and repeat the loop if
+                // we find it
+                tempPP.setIndex(0);
+                temp = findText(text, delimiter, dPos + dLen);
+                dPos = temp[0];
+                dLen = temp[1];
+            }
+            // if we make it here, this was an unsuccessful match, and we
+            // leave pp unchanged and return 0
+            pp.setIndex(0);
+            return new Long(0);
+
+        // if "delimiter" is empty, or consists only of ignorable characters
+        // (i.e., is semantically empty), thwe we obviously can't search
+        // for "delimiter".  Instead, just use "sub" to parse as much of
+        // "text" as possible.
+        } else {
+            ParsePosition tempPP = new ParsePosition(0);
+            Number result = new Long(0);
+            Number tempResult;
+
+            // try to match the whole string against the substitution
+            tempResult = sub.doParse(text, tempPP, baseValue, upperBound,
+                            formatter.lenientParseEnabled());
+            if (tempPP.getIndex() != 0 || sub.isNullSubstitution()) {
+                // if there's a successful match (or it's a null
+                // substitution), update pp to point to the first
+                // character we didn't match, and pass the result from
+                // sub.doParse() on through to the caller
+                pp.setIndex(tempPP.getIndex());
+                if (tempResult != null) {
+                    result = tempResult;
+                }
+            }
+// commented out because ParsePosition doesn't have error index in 1.1.x
+//            else {
+//                pp.setErrorIndex(tempPP.getErrorIndex());
+//            }
+
+            // and if we get to here, then nothing matched, so we return
+            // 0 and leave pp alone
+            return result;
+        }
+    }
+
+    /**
+     * Used by stripPrefix() to match characters.  If lenient parse mode
+     * is off, this just calls startsWith().  If lenient parse mode is on,
+     * this function uses CollationElementIterators to match characters in
+     * the strings (only primary-order differences are significant in
+     * determining whether there's a match).
+     * @param str The string being tested
+     * @param prefix The text we're hoping to see at the beginning
+     * of "str"
+     * @return If "prefix" is found at the beginning of "str", this
+     * is the number of characters in "str" that were matched (this
+     * isn't necessarily the same as the length of "prefix" when matching
+     * text with a collator).  If there's no match, this is 0.
+     */
+    private int prefixLength(String str, String prefix) {
+        // if we're looking for an empty prefix, it obviously matches
+        // zero characters.  Just go ahead and return 0.
+        if (prefix.length() == 0) {
+            return 0;
+        }
+
+        // go through all this grief if we're in lenient-parse mode
+        if (formatter.lenientParseEnabled()) {
+            // get the formatter's collator and use it to create two
+            // collation element iterators, one over the target string
+            // and another over the prefix (right now, we'll throw an
+            // exception if the collator we get back from the formatter
+            // isn't a RuleBasedCollator, because RuleBasedCollator defines
+            // the CollationElementIteratoer protocol.  Hopefully, this
+            // will change someday.)
+            //
+            // Previous code was matching "fifty-" against " fifty" and leaving
+            // the number " fifty-7" to parse as 43 (50 - 7).
+            // Also it seems that if we consume the entire prefix, that's ok even
+            // if we've consumed the entire string, so I switched the logic to
+            // reflect this.
+            RuleBasedCollator collator = (RuleBasedCollator)formatter.getCollator();
+            CollationElementIterator strIter = collator.getCollationElementIterator(str);
+            CollationElementIterator prefixIter = collator.getCollationElementIterator(prefix);
+
+            // match collation elements between the strings
+            int oStr = strIter.next();
+            int oPrefix = prefixIter.next();
+
+            while (oPrefix != CollationElementIterator.NULLORDER) {
+                // skip over ignorable characters in the target string
+                while (CollationElementIterator.primaryOrder(oStr) == 0 && oStr !=
+                                CollationElementIterator.NULLORDER) {
+                    oStr = strIter.next();
+                }
+
+                // skip over ignorable characters in the prefix
+                while (CollationElementIterator.primaryOrder(oPrefix) == 0 && oPrefix !=
+                                CollationElementIterator.NULLORDER) {
+                    oPrefix = prefixIter.next();
+                }
+
+                // if skipping over ignorables brought to the end of
+                // the prefix, we DID match: drop out of the loop
+                if (oPrefix == CollationElementIterator.NULLORDER) {
+                    break;
+                }
+
+                // if skipping over ignorables brought us to the end
+                // of the target string, we didn't match and return 0
+                if (oStr == CollationElementIterator.NULLORDER) {
+                    return 0;
+                }
+
+                // match collation elements from the two strings
+                // (considering only primary differences).  If we
+                // get a mismatch, dump out and return 0
+                if (CollationElementIterator.primaryOrder(oStr) != CollationElementIterator.
+                                primaryOrder(oPrefix)) {
+                    return 0;
+                }
+                // otherwise, advance to the next character in each string
+                // and loop (we drop out of the loop when we exhaust
+                // collation elements in the prefix)
+
+                oStr = strIter.next();
+                oPrefix = prefixIter.next();
+            }
+
+            // we are not compatible with jdk 1.1 any longer
+            int result = strIter.getOffset();
+            if (oStr != CollationElementIterator.NULLORDER) {
+                --result;
+            }
+            return result;
+
+            /*
+            //----------------------------------------------------------------
+            // JDK 1.2-specific API call
+            // return strIter.getOffset();
+            //----------------------------------------------------------------
+            // JDK 1.1 HACK (take out for 1.2-specific code)
+
+            // if we make it to here, we have a successful match.  Now we
+            // have to find out HOW MANY characters from the target string
+            // matched the prefix (there isn't necessarily a one-to-one
+            // mapping between collation elements and characters).
+            // In JDK 1.2, there's a simple getOffset() call we can use.
+            // In JDK 1.1, on the other hand, we have to go through some
+            // ugly contortions.  First, use the collator to compare the
+            // same number of characters from the prefix and target string.
+            // If they're equal, we're done.
+            collator.setStrength(Collator.PRIMARY);
+            if (str.length() >= prefix.length()
+                    && collator.equals(str.substring(0, prefix.length()), prefix)) {
+                return prefix.length();
+            }
+
+            // if they're not equal, then we have to compare successively
+            // larger and larger substrings of the target string until we
+            // get to one that matches the prefix.  At that point, we know
+            // how many characters matched the prefix, and we can return.
+            int p = 1;
+            while (p <= str.length()) {
+                if (collator.equals(str.substring(0, p), prefix)) {
+                    return p;
+                } else {
+                    ++p;
+                }
+            }
+
+            // SHOULKD NEVER GET HERE!!!
+            return 0;
+            //----------------------------------------------------------------
+            */
+
+        // If lenient parsing is turned off, forget all that crap above.
+        // Just use String.startsWith() and be done with it.
+        } else {
+            if (str.startsWith(prefix)) {
+                return prefix.length();
+            } else {
+                return 0;
+            }
+        }
+    }
+
+    /**
+     * Searches a string for another string.  If lenient parsing is off,
+     * this just calls indexOf().  If lenient parsing is on, this function
+     * uses CollationElementIterator to match characters, and only
+     * primary-order differences are significant in determining whether
+     * there's a match.
+     * @param str The string to search
+     * @param key The string to search "str" for
+     * @return A two-element array of ints.  Element 0 is the position
+     * of the match, or -1 if there was no match.  Element 1 is the
+     * number of characters in "str" that matched (which isn't necessarily
+     * the same as the length of "key")
+     */
+    private int[] findText(String str, String key) {
+        return findText(str, key, 0);
+    }
+
+    /**
+     * Searches a string for another string.  If lenient parsing is off,
+     * this just calls indexOf().  If lenient parsing is on, this function
+     * uses CollationElementIterator to match characters, and only
+     * primary-order differences are significant in determining whether
+     * there's a match.
+     * @param str The string to search
+     * @param key The string to search "str" for
+     * @param startingAt The index into "str" where the search is to
+     * begin
+     * @return A two-element array of ints.  Element 0 is the position
+     * of the match, or -1 if there was no match.  Element 1 is the
+     * number of characters in "str" that matched (which isn't necessarily
+     * the same as the length of "key")
+     */
+    private int[] findText(String str, String key, int startingAt) {
+        // if lenient parsing is turned off, this is easy: just call
+        // String.indexOf() and we're done
+        if (!formatter.lenientParseEnabled()) {
+            return new int[] { str.indexOf(key, startingAt), key.length() };
+
+        // but if lenient parsing is turned ON, we've got some work
+        // ahead of us
+        } else {
+            //----------------------------------------------------------------
+            // JDK 1.1 HACK (take out of 1.2-specific code)
+
+            // in JDK 1.2, CollationElementIterator provides us with an
+            // API to map between character offsets and collation elements
+            // and we can do this by marching through the string comparing
+            // collation elements.  We can't do that in JDK 1.1.  Insted,
+            // we have to go through this horrible slow mess:
+            int p = startingAt;
+            int keyLen = 0;
+
+            // basically just isolate smaller and smaller substrings of
+            // the target string (each running to the end of the string,
+            // and with the first one running from startingAt to the end)
+            // and then use prefixLength() to see if the search key is at
+            // the beginning of each substring.  This is excruciatingly
+            // slow, but it will locate the key and tell use how long the
+            // matching text was.
+            while (p < str.length() && keyLen == 0) {
+                keyLen = prefixLength(str.substring(p), key);
+                if (keyLen != 0) {
+                    return new int[] { p, keyLen };
+                }
+                ++p;
+            }
+            // if we make it to here, we didn't find it.  Return -1 for the
+            // location.  The length should be ignored, but set it to 0,
+            // which should be "safe"
+            return new int[] { -1, 0 };
+
+            //----------------------------------------------------------------
+            // JDK 1.2 version of this routine
+            //RuleBasedCollator collator = (RuleBasedCollator)formatter.getCollator();
+            //
+            //CollationElementIterator strIter = collator.getCollationElementIterator(str);
+            //CollationElementIterator keyIter = collator.getCollationElementIterator(key);
+            //
+            //int keyStart = -1;
+            //
+            //str.setOffset(startingAt);
+            //
+            //int oStr = strIter.next();
+            //int oKey = keyIter.next();
+            //while (oKey != CollationElementIterator.NULLORDER) {
+            //    while (oStr != CollationElementIterator.NULLORDER &&
+            //                CollationElementIterator.primaryOrder(oStr) == 0)
+            //        oStr = strIter.next();
+            //
+            //    while (oKey != CollationElementIterator.NULLORDER &&
+            //                CollationElementIterator.primaryOrder(oKey) == 0)
+            //        oKey = keyIter.next();
+            //
+            //    if (oStr == CollationElementIterator.NULLORDER) {
+            //        return new int[] { -1, 0 };
+            //    }
+            //
+            //    if (oKey == CollationElementIterator.NULLORDER) {
+            //        break;
+            //    }
+            //
+            //    if (CollationElementIterator.primaryOrder(oStr) ==
+            //            CollationElementIterator.primaryOrder(oKey)) {
+            //        keyStart = strIter.getOffset();
+            //        oStr = strIter.next();
+            //        oKey = keyIter.next();
+            //    } else {
+            //        if (keyStart != -1) {
+            //            keyStart = -1;
+            //            keyIter.reset();
+            //        } else {
+            //            oStr = strIter.next();
+            //        }
+            //    }
+            //}
+            //
+            //if (oKey == CollationElementIterator.NULLORDER) {
+            //    return new int[] { keyStart, strIter.getOffset() - keyStart };
+            //} else {
+            //    return new int[] { -1, 0 };
+            //}
+        }
+    }
+
+    /**
+     * Checks to see whether a string consists entirely of ignorable
+     * characters.
+     * @param str The string to test.
+     * @return true if the string is empty of consists entirely of
+     * characters that the number formatter's collator says are
+     * ignorable at the primary-order level.  false otherwise.
+     */
+    private boolean allIgnorable(String str) {
+        // if the string is empty, we can just return true
+        if (str.length() == 0) {
+            return true;
+        }
+
+        // if lenient parsing is turned on, walk through the string with
+        // a collation element iterator and make sure each collation
+        // element is 0 (ignorable) at the primary level
+        if (formatter.lenientParseEnabled()) {
+            RuleBasedCollator collator = (RuleBasedCollator)(formatter.getCollator());
+            CollationElementIterator iter = collator.getCollationElementIterator(str);
+
+            int o = iter.next();
+            while (o != CollationElementIterator.NULLORDER
+                   && CollationElementIterator.primaryOrder(o) == 0) {
+                o = iter.next();
+            }
+            return o == CollationElementIterator.NULLORDER;
+        // if lenient parsing is turned off, there is no such thing as
+        // an ignorable character: return true only if the string is empty
+        } else {
+            return false;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/NFRuleSet.java b/src/com/ibm/icu/text/NFRuleSet.java
new file mode 100755
index 0000000..62f1e59
--- /dev/null
+++ b/src/com/ibm/icu/text/NFRuleSet.java
@@ -0,0 +1,754 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/NFRuleSet.java,v $ 
+ * $Date: 2002/07/31 17:37:08 $ 
+ * $Revision: 1.7 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.Utility;
+
+import java.text.*;
+import java.util.Vector;
+
+/**
+ * A collection of rules used by a RuleBasedNumberFormat to format and
+ * parse numbers.  It is the responsibility of a RuleSet to select an
+ * appropriate rule for formatting a particular number and dispatch
+ * control to it, and to arbitrate between different rules when parsing
+ * a number.
+ * $RCSfile: NFRuleSet.java,v $ $Revision: 1.7 $ $Date: 2002/07/31 17:37:08 $
+ */
+final class NFRuleSet {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The rule set's name
+     */
+    private String name;
+
+    /**
+     * The rule set's regular rules
+     */
+    private NFRule[] rules;
+
+    /**
+     * The rule set's negative-number rule
+     */
+    private NFRule negativeNumberRule = null;
+
+    /**
+     * The rule set's fraction rules: element 0 is the proper fraction
+     * (0.x) rule, element 1 is the improper fraction (x.x) rule, and
+     * element 2 is the master (x.0) rule.
+     */
+    private NFRule[] fractionRules = new NFRule[3];
+
+    /**
+     * True if the rule set is a fraction rule set.  A fraction rule set
+     * is a rule set that is used to format the fractional part of a
+     * number.  It is called from a >> substitution in another rule set's
+     * fraction rule, and is only called upon to format values between
+     * 0 and 1.  A fraction rule set has different rule-selection
+     * behavior than a regular rule set.
+     */
+    private boolean isFractionRuleSet = false;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /*
+     * Constructs a rule set.
+     * @param descriptions An array of Strings representing rule set
+     * descriptions.  On exit, this rule set's entry in the array will
+     * have been stripped of its rule set name and any trailing whitespace.
+     * @param index The index into "descriptions" of the description
+     * for the rule to be constructed
+     */
+    public NFRuleSet(String[] descriptions, int index) throws IllegalArgumentException {
+        String description = descriptions[index];
+
+        // if the description begins with a rule set name (the rule set
+        // name can be omitted in formatter descriptions that consist
+        // of only one rule set), copy it out into our "name" member
+        // and delete it from the description
+        if (description.charAt(0) == '%') {
+            int pos = description.indexOf(':');
+            if (pos == -1) {
+                throw new IllegalArgumentException("Rule set name doesn't end in colon");
+            } else {
+                name = description.substring(0, pos);
+                while (pos < description.length() && UCharacterProperty.isRuleWhiteSpace(description.
+                                charAt(++pos))) {
+                }
+                description = description.substring(pos);
+                descriptions[index] = description;
+            }
+
+        // if the description doesn't begin with a rule set name, its
+        // name is "%default"
+        } else {
+            name = "%default";
+        }
+
+        if (description.length() == 0) {
+            throw new IllegalArgumentException("Empty rule set description");
+        }
+
+        // all of the other members of NFRuleSet are initialized
+        // by parseRules()
+    }
+
+    /**
+     * Construct the subordinate data structures used by this object.
+     * This function is called by the RuleBasedNumberFormat constructor
+     * after all the rule sets have been created to actually parse
+     * the description and build rules from it.  Since any rule set
+     * can refer to any other rule set, we have to have created all of
+     * them before we can create anything else.
+     * @param description The textual description of this rule set
+     * @param owner The formatter that owns this rule set
+     */
+    public void parseRules(String                description,
+                           RuleBasedNumberFormat owner) {
+        // start by creating a Vector whose elements are Strings containing
+        // the descriptions of the rules (one rule per element).  The rules
+        // are separated by semicolons (there's no escape facility: ALL
+        // semicolons are rule delimiters)
+        Vector ruleDescriptions = new Vector();
+
+        int oldP = 0;
+        int p = description.indexOf(';');
+        while (oldP != -1) {
+            if (p != -1) {
+                ruleDescriptions.addElement(description.substring(oldP, p));
+                oldP = p + 1;
+            } else {
+                if (oldP < description.length()) {
+                    ruleDescriptions.addElement(description.substring(oldP));
+                }
+                oldP = p;
+            }
+            p = description.indexOf(';', p + 1);
+        }
+
+        // now go back through and build a vector of the rules themselves
+        // (the number of elements in the description list isn't necessarily
+        // the number of rules-- some descriptions may expend into two rules)
+        Vector tempRules = new Vector();
+
+        // we keep track of the rule before the one we're currently working
+        // on solely to support >>> substitutions
+        NFRule predecessor = null;
+        for (int i = 0; i < ruleDescriptions.size(); i++) {
+            // makeRules (a factory method on NFRule) will return either
+            // a single rule or an array of rules.  Either way, add them
+            // to our rule vector
+            Object temp = NFRule.makeRules((String)ruleDescriptions.elementAt(i),
+                            this, predecessor, owner);
+
+            if (temp instanceof NFRule) {
+                tempRules.addElement(temp);
+                predecessor = (NFRule)temp;
+            }
+            else if (temp instanceof NFRule[]) {
+                NFRule[] rulesToAdd = (NFRule[])temp;
+
+                for (int j = 0; j < rulesToAdd.length; j++) {
+                    tempRules.addElement(rulesToAdd[j]);
+                    predecessor = rulesToAdd[j];
+                }
+            }
+        }
+        // now we can bag the description list
+        ruleDescriptions = null;
+
+        // for rules that didn't specify a base value, their base values
+        // were initialized to 0.  Make another pass through the list and
+        // set all those rules' base values.  We also remove any special
+        // rules from the list and put them into their own member variables
+        long defaultBaseValue = 0;
+
+        // (this isn't a for loop because we might be deleting items from
+        // the vector-- we want to make sure we only increment i when
+        // we _didn't_ delete aything from the vector)
+        int i = 0;
+        while (i < tempRules.size()) {
+            NFRule rule = (NFRule)tempRules.elementAt(i);
+
+            switch ((int)rule.getBaseValue()) {
+                // if the rule's base value is 0, fill in a default
+                // base value (this will be 1 plus the preceding
+                // rule's base value for regular rule sets, and the
+                // same as the preceding rule's base value in fraction
+                // rule sets)
+                case 0:
+                    rule.setBaseValue(defaultBaseValue);
+                    if (!isFractionRuleSet) {
+                        ++defaultBaseValue;
+                    }
+                    ++i;
+                    break;
+
+                // if it's the negative-number rule, copy it into its own
+                // data member and delete it from the list
+                case NFRule.NEGATIVE_NUMBER_RULE:
+                    negativeNumberRule = rule;
+                    tempRules.removeElementAt(i);
+                    break;
+
+                // if it's the improper fraction rule, copy it into the
+                // correct element of fractionRules
+                case NFRule.IMPROPER_FRACTION_RULE:
+                    fractionRules[0] = rule;
+                    tempRules.removeElementAt(i);
+                    break;
+
+                // if it's the proper fraction rule, copy it into the
+                // correct element of fractionRules
+                case NFRule.PROPER_FRACTION_RULE:
+                    fractionRules[1] = rule;
+                    tempRules.removeElementAt(i);
+                    break;
+
+                // if it's the master rule, copy it into the
+                // correct element of fractionRules
+                case NFRule.MASTER_RULE:
+                    fractionRules[2] = rule;
+                    tempRules.removeElementAt(i);
+                    break;
+
+                // if it's a regular rule that already knows its base value,
+                // check to make sure the rules are in order, and update
+                // the default base value for the next rule
+                default:
+                    if (rule.getBaseValue() < defaultBaseValue) {
+                        throw new IllegalArgumentException("Rules are not in order");
+                    }
+                    defaultBaseValue = rule.getBaseValue();
+                    if (!isFractionRuleSet) {
+                        ++defaultBaseValue;
+                    }
+                    ++i;
+                    break;
+            }
+        }
+
+        // finally, we can copy the rules from the vector into a
+        // fixed-length array
+        rules = new NFRule[tempRules.size()];
+        tempRules.copyInto((Object[])rules);
+    }
+
+    /**
+     * Flags this rule set as a fraction rule set.  This function is
+     * called during the construction process once we know this rule
+     * set is a fraction rule set.  We don't know a rule set is a
+     * fraction rule set until we see it used somewhere.  This function
+     * is not ad must not be called at any time other than during
+     * construction of a RuleBasedNumberFormat.
+     */
+    public void makeIntoFractionRuleSet() {
+        isFractionRuleSet = true;
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Compares two rule sets for equality.
+     * @param that The other rule set
+     * @return true if the two rule sets are functionally equivalent.
+     */
+    public boolean equals(Object that) {
+        // if different classes, they're not equal
+        if (!(that instanceof NFRuleSet)) {
+            return false;
+        } else {
+            // otherwise, compare the members one by one...
+            NFRuleSet that2 = (NFRuleSet)that;
+
+            if (!name.equals(that2.name)
+		|| !Utility.objectEquals(negativeNumberRule, that2.negativeNumberRule)
+		|| !Utility.objectEquals(fractionRules[0], that2.fractionRules[0])
+		|| !Utility.objectEquals(fractionRules[1], that2.fractionRules[1])
+		|| !Utility.objectEquals(fractionRules[2], that2.fractionRules[2])
+		|| rules.length != that2.rules.length
+                || isFractionRuleSet != that2.isFractionRuleSet) {
+
+                return false;
+            }
+
+            // ...then compare the rule lists...
+            for (int i = 0; i < rules.length; i++) {
+                if (!rules[i].equals(that2.rules[i])) {
+                    return false;
+                }
+            }
+
+            // ...and if we make it here, tney're equal
+            return true;
+        }
+    }
+
+
+    /**
+     * Builds a textual representation of a rule set.
+     * @return A textual representation of a rule set.  This won't
+     * necessarily be the same description that the rule set was
+     * constructed with, but it will produce the same results.
+     */
+    public String toString() {
+        StringBuffer result = new StringBuffer();
+
+        // the rule set name goes first...
+        result.append(name + ":\n");
+
+        // followed by the regular rules...
+        for (int i = 0; i < rules.length; i++) {
+            result.append("    " + rules[i].toString() + "\n");
+        }
+
+        // followed by the special rules (if they exist)
+        if (negativeNumberRule != null) {
+            result.append("    " + negativeNumberRule.toString() + "\n");
+        }
+        if (fractionRules[0] != null) {
+            result.append("    " + fractionRules[0].toString() + "\n");
+        }
+        if (fractionRules[1] != null) {
+            result.append("    " + fractionRules[1].toString() + "\n");
+        }
+        if (fractionRules[2] != null) {
+            result.append("    " + fractionRules[2].toString() + "\n");
+        }
+
+        return result.toString();
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Says whether this rule set is a fraction rule set.
+     * @return true if this rule is a fraction rule set; false if it isn't
+     */
+    public boolean isFractionSet() {
+        return isFractionRuleSet;
+    }
+
+    /*
+     * Returns the rule set's name
+     * @return The rule set's name
+     */
+    public String getName() {
+        return name;
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Formats a long.  Selects an appropriate rule and dispatches
+     * control to it.
+     * @param number The number being formatted
+     * @param toInsertInto The string where the result is to be placed
+     * @param pos The position in toInsertInto where the result of
+     * this operation is to be inserted
+     */
+    public void format(long number, StringBuffer toInsertInto, int pos) {
+        NFRule applicableRule = findNormalRule(number);
+
+        applicableRule.doFormat(number, toInsertInto, pos);
+    }
+
+    /**
+     * Formats a double.  Selects an appropriate rule and dispatches
+     * control to it.
+     * @param number The number being formatted
+     * @param toInsertInto The string where the result is to be placed
+     * @param pos The position in toInsertInto where the result of
+     * this operation is to be inserted
+     */
+    public void format(double number, StringBuffer toInsertInto, int pos) {
+        NFRule applicableRule = findRule(number);
+
+        applicableRule.doFormat(number, toInsertInto, pos);
+    }
+
+    /**
+     * Selects an apropriate rule for formatting the number.
+     * @param number The number being formatted.
+     * @return The rule that should be used to format it
+     */
+    private NFRule findRule(double number) {
+        // if this is a fraction rule set, use findFractionRuleSetRule()
+        if (isFractionRuleSet) {
+            return findFractionRuleSetRule(number);
+        }
+
+        // if the number is negative, return the negative number rule
+        // (if there isn't a negative-number rule, we pretend it's a
+        // positive number)
+        if (number < 0) {
+            if (negativeNumberRule != null) {
+                return negativeNumberRule;
+            } else {
+                number = -number;
+            }
+        }
+
+        // if the number isn't an integer, we use one f the fraction rules...
+        if (number != Math.floor(number)) {
+            // if the number is between 0 and 1, return the proper
+            // fraction rule
+            if (number < 1 && fractionRules[1] != null) {
+                return fractionRules[1];
+            }
+
+            // otherwise, return the improper fraction rule
+            else if (fractionRules[0] != null) {
+                return fractionRules[0];
+            }
+        }
+
+        // if there's a master rule, use it to format the number
+        if (fractionRules[2] != null) {
+            return fractionRules[2];
+
+        // and if we haven't yet returned a rule, use findNormalRule()
+        // to find the applicable rule
+        } else {
+            return findNormalRule((long)Math.round(number));
+        }
+    }
+
+    /**
+     * If the value passed to findRule() is a positive integer, findRule()
+     * uses this function to select the appropriate rule.  The result will
+     * generally be the rule with the highest base value less than or equal
+     * to the number.  There is one exception to this: If that rule has
+     * two substitutions and a base value that is not an even multiple of
+     * its divisor, and the number itself IS an even multiple of the rule's
+     * divisor, then the result will be the rule that preceded the original
+     * result in the rule list.  (This behavior is known as the "rollback
+     * rule", and is used to handle optional text: a rule with optional
+     * text is represented internally as two rules, and the rollback rule
+     * selects appropriate between them.  This avoids things like "two
+     * hundred zero".)
+     * @param number The number being formatted
+     * @return The rule to use to format this number
+     */
+    private NFRule findNormalRule(long number) {
+        // if this is a fraction rule set, use findFractionRuleSetRule()
+        // to find the rule (we should only go into this clause if the
+        // value is 0)
+        if (isFractionRuleSet) {
+            return findFractionRuleSetRule(number);
+        }
+
+        // if the number is negative, return the negative-number rule
+        // (if there isn't one, pretend the number is positive)
+        if (number < 0) {
+            if (negativeNumberRule != null) {
+                return negativeNumberRule;
+            } else {
+                number = -number;
+            }
+        }
+
+        // we have to repeat the preceding two checks, even though we
+        // do them in findRule(), because the version of format() that
+        // takes a long bypasses findRule() and goes straight to this
+        // function.  This function does skip the fraction rules since
+        // we know the value is an integer (it also skips the master
+        // rule, since it's considered a fraction rule.  Skipping the
+        // master rule in this function is also how we avoid infinite
+        // recursion)
+
+        // binary-search the rule list for the applicable rule
+        // (a rule is used for all values from its base value to
+        // the next rule's base value)
+        int lo = 0;
+        int hi = rules.length;
+	if (hi > 0) {
+	    while (lo < hi) {
+		int mid = (lo + hi) / 2;
+		if (rules[mid].getBaseValue() == number) {
+		    return rules[mid];
+		}
+		else if (rules[mid].getBaseValue() > number) {
+		    hi = mid;
+		}
+		else {
+		    lo = mid + 1;
+		}
+	    }
+	    NFRule result = rules[hi - 1];
+
+	    // use shouldRollBack() to see whether we need to invoke the
+	    // rollback rule (see shouldRollBack()'s documentation for
+	    // an explanation of the rollback rule).  If we do, roll back
+	    // one rule and return that one instead of the one we'd normally
+	    // return
+	    if (result.shouldRollBack(number)) {
+		result = rules[hi - 2];
+	    }
+	    return result;
+	}
+	// else use the master rule
+	return fractionRules[2];
+    }
+
+    /**
+     * If this rule is a fraction rule set, this function is used by
+     * findRule() to select the most appropriate rule for formatting
+     * the number.  Basically, the base value of each rule in the rule
+     * set is treated as the denominator of a fraction.  Whichever
+     * denominator can produce the fraction closest in value to the
+     * number passed in is the result.  If there's a tie, the earlier
+     * one in the list wins.  (If there are two rules in a row with the
+     * same base value, the first one is used when the numerator of the
+     * fraction would be 1, and the second rule is used the rest of the
+     * time.
+     * @param number The number being formatted (which will always be
+     * a number between 0 and 1)
+     * @return The rule to use to format this number
+     */
+    private NFRule findFractionRuleSetRule(double number) {
+        // the obvious way to do this (multiply the value being formatted
+        // by each rule's base value until you get an integral result)
+        // doesn't work because of rounding error.  This method is more
+        // accurate
+
+        // find the least common multiple of the rules' base values
+        // and multiply this by the number being formatted.  This is
+        // all the precision we need, and we can do all of the rest
+        // of the math using integer arithmetic
+        long leastCommonMultiple = rules[0].getBaseValue();
+        for (int i = 1; i < rules.length; i++) {
+            leastCommonMultiple = lcm(leastCommonMultiple, rules[i].getBaseValue());
+        }
+        long numerator = (long)(Math.round(number * leastCommonMultiple));
+
+        // for each rule, do the following...
+        long tempDifference;
+        long difference = Long.MAX_VALUE;
+        int winner = 0;
+        for (int i = 0; i < rules.length; i++) {
+            // "numerator" is the numerator of the fraction is the
+            // denominator is the LCD.  The numerator if the the rule's
+            // base value is the denomiator is "numerator" times the
+            // base value divided bythe LCD.  Here we check to see if
+            // that's an integer, and if not, how close it is to being
+            // an integer.
+            tempDifference = numerator * rules[i].getBaseValue() % leastCommonMultiple;
+
+            // normalize the result of the above calculation: we want
+            // the numerator's distance from the CLOSEST multiple
+            // of the LCD
+            if (leastCommonMultiple - tempDifference < tempDifference) {
+                tempDifference = leastCommonMultiple - tempDifference;
+            }
+
+            // if this is as close as we've come, keep track of how close
+            // that is, and the line number of the rule that did it.  If
+            // we've scored a direct hit, we don't have to look at any more
+            // rules
+            if (tempDifference < difference) {
+                difference = tempDifference;
+                winner = i;
+                if (difference == 0) {
+                    break;
+                }
+            }
+        }
+
+        // if we have two successive rules that both have the winning base
+        // value, then the first one (the one we found above) is used if
+        // the numerator of the fraction is 1 and the second one is used if
+        // the numerator of the fraction is anything else (this lets us
+        // do things like "one third"/"two thirds" without haveing to define
+        // a whole bunch of extra rule sets)
+        if (winner + 1 < rules.length
+                && rules[winner + 1].getBaseValue() == rules[winner].getBaseValue()) {
+            if (Math.round(number * rules[winner].getBaseValue()) < 1
+                    || Math.round(number * rules[winner].getBaseValue()) >= 2) {
+                ++winner;
+            }
+        }
+
+        // finally, return the winning rule
+        return rules[winner];
+    }
+
+    /**
+     * Calculates the least common multiple of x and y.
+     */
+    private static long lcm(long x, long y) {
+        // binary gcd algorithm from Knuth, "The Art of Computer Programming,"
+        // vol. 2, 1st ed., pp. 298-299
+        long x1 = x;
+        long y1 = y;
+
+        int p2 = 0;
+        while ((x1 & 1) == 0 && (y1 & 1) == 0) {
+            ++p2;
+            x1 >>= 1;
+            y1 >>= 1;
+        }
+
+        long t;
+        if ((x1 & 1) == 1) {
+            t = -y1;
+        } else {
+            t = x1;
+        }
+
+        while (t != 0) {
+            while ((t & 1) == 0) {
+                t >>= 1;
+            }
+            if (t > 0) {
+                x1 = t;
+            } else {
+                y1 = -t;
+            }
+            t = x1 - y1;
+        }
+        long gcd = x1 << p2;
+
+        // x * y == gcd(x, y) * lcm(x, y)
+        return x / gcd * y;
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Parses a string.  Matches the string to be parsed against each
+     * of its rules (with a base value less than upperBound) and returns
+     * the value produced by the rule that matched the most charcters
+     * in the source string.
+     * @param text The string to parse
+     * @param parsePosition The initial position is ignored and assumed
+     * to be 0.  On exit, this object has been updated to point to the
+     * first character position this rule set didn't consume.
+     * @param upperBound Limits the rules that can be allowed to match.
+     * Only rules whose base values are strictly less than upperBound
+     * are considered.
+     * @return The numerical result of parsing this string.  This will
+     * be the matching rule's base value, composed appropriately with
+     * the results of matching any of its substitutions.  The object
+     * will be an instance of Long if it's an integral value; otherwise,
+     * it will be an instance of Double.  This function always returns
+     * a valid object: If nothing matched the input string at all,
+     * this function returns new Long(0), and the parse position is
+     * left unchanged.
+     */
+    public Number parse(String text, ParsePosition parsePosition, double upperBound) {
+        // try matching each rule in the rule set against the text being
+        // parsed.  Whichever one matches the most characters is the one
+        // that determines the value we return.
+
+        ParsePosition highWaterMark = new ParsePosition(0);
+        Number result = new Long(0);
+        Number tempResult = null;
+
+        // dump out if there's no text to parse
+        if (text.length() == 0) {
+            return result;
+        }
+
+        // start by trying the nehative number rule (if there is one)
+        if (negativeNumberRule != null) {
+            tempResult = negativeNumberRule.doParse(text, parsePosition, false, upperBound);
+            if (parsePosition.getIndex() > highWaterMark.getIndex()) {
+                result = tempResult;
+                highWaterMark.setIndex(parsePosition.getIndex());
+            }
+// commented out because the error-index API on ParsePosition isn't there in 1.1.x
+//            if (parsePosition.getErrorIndex() > highWaterMark.getErrorIndex()) {
+//                highWaterMark.setErrorIndex(parsePosition.getErrorIndex());
+//            }
+            parsePosition.setIndex(0);
+        }
+
+        // then try each of the fraction rules
+        for (int i = 0; i < 3; i++) {
+            if (fractionRules[i] != null) {
+                tempResult = fractionRules[i].doParse(text, parsePosition, false, upperBound);
+                if (parsePosition.getIndex() > highWaterMark.getIndex()) {
+                    result = tempResult;
+                    highWaterMark.setIndex(parsePosition.getIndex());
+                }
+// commented out because the error-index API on ParsePosition isn't there in 1.1.x
+//            if (parsePosition.getErrorIndex() > highWaterMark.getErrorIndex()) {
+//                highWaterMark.setErrorIndex(parsePosition.getErrorIndex());
+//            }
+                parsePosition.setIndex(0);
+            }
+        }
+
+        // finally, go through the regular rules one at a time.  We start
+        // at the end of the list because we want to try matching the most
+        // sigificant rule first (this helps ensure that we parse
+        // "five thousand three hundred six" as
+        // "(five thousand) (three hundred) (six)" rather than
+        // "((five thousand three) hundred) (six)").  Skip rules whose
+        // base values are higher than the upper bound (again, this helps
+        // limit ambiguity by making sure the rules that match a rule's
+        // are less significant than the rule containing the substitutions)/
+        for (int i = rules.length - 1; i >= 0 && highWaterMark.getIndex() < text.length(); i--) {
+            if (!isFractionRuleSet && rules[i].getBaseValue() >= upperBound) {
+                continue;
+            }
+
+            tempResult = rules[i].doParse(text, parsePosition, isFractionRuleSet, upperBound);
+            if (parsePosition.getIndex() > highWaterMark.getIndex()) {
+                result = tempResult;
+                highWaterMark.setIndex(parsePosition.getIndex());
+            }
+// commented out because the error-index API on ParsePosition isn't there in 1.1.x
+//            if (parsePosition.getErrorIndex() > highWaterMark.getErrorIndex()) {
+//                highWaterMark.setErrorIndex(parsePosition.getErrorIndex());
+//            }
+            parsePosition.setIndex(0);
+        }
+
+        // finally, update the parse postion we were passed to point to the
+        // first character we didn't use, and return the result that
+        // cporresponds to that string of characters
+        parsePosition.setIndex(highWaterMark.getIndex());
+// commented out because the error-index API on ParsePosition isn't there in 1.1.x
+//        if (parsePosition.getIndex() == 0) {
+//            parsePosition.setErrorIndex(highWaterMark.getErrorIndex());
+//        }
+
+        return result;
+    }
+}
diff --git a/src/com/ibm/icu/text/NFSubstitution.java b/src/com/ibm/icu/text/NFSubstitution.java
new file mode 100755
index 0000000..2fa531b
--- /dev/null
+++ b/src/com/ibm/icu/text/NFSubstitution.java
@@ -0,0 +1,1755 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/NFSubstitution.java,v $ 
+ * $Date: 2002/07/31 17:37:08 $ 
+ * $Revision: 1.8 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.*;
+
+//===================================================================
+// NFSubstitution (abstract base class)
+//===================================================================
+
+/**
+ * An abstract class defining protocol for substitutions.  A substitution
+ * is a section of a rule that inserts text into the rule's rule text
+ * based on some part of the number being formatted.
+ * @author Richard Gillam
+ * @version $RCSfile: NFSubstitution.java,v $ $Revision: 1.8 $ $Date: 2002/07/31 17:37:08 $
+ */
+abstract class NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The substitution's position in the rule text of the rule that owns it
+     */
+    int pos;
+
+    /**
+     * The rule set this substitution uses to format its result, or null.
+     * (Either this or numberFormat has to be non-null.)
+     */
+    NFRuleSet ruleSet = null;
+
+    /**
+     * The DecimalFormat this substitution uses to format its result,
+     * or null.  (Either this or ruleSet has to be non-null.)
+     */
+    DecimalFormat numberFormat = null;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Parses the description, creates the right kind of substitution,
+     * and initializes it based on the description.
+     * @param pos The substitution's position in the rule text of the
+     * rule that owns it.
+     * @param rule The rule containing this substitution
+     * @param rulePredecessor The rule preceding the one that contains
+     * this substitution in the rule set's rule list (this is used
+     * only for >>> substitutions).
+     * @param ruleSet The rule set containing the rule containing this
+     * substitution
+     * @param formatter The RuleBasedNumberFormat that ultimately owns
+     * this substitution
+     * @param description The description to parse to build the substitution
+     * (this is just the substring of the rule's description containing
+     * the substitution token itself)
+     * @return A new substitution constructed according to the description
+     */
+    public static NFSubstitution makeSubstitution(int pos,
+                                                  NFRule rule,
+                                                  NFRule rulePredecessor,
+                                                  NFRuleSet ruleSet,
+                                                  RuleBasedNumberFormat formatter,
+                                                  String description) {
+        // if the description is empty, return a NummSubstitution
+        if (description.length() == 0) {
+            return new NullSubstitution(pos, ruleSet, formatter, description);
+        }
+
+        switch (description.charAt(0)) {
+            // if the description begins with '<'...
+            case '<':
+                // throw an exception if the rule is a negative number
+                // rule
+                if (rule.getBaseValue() == NFRule.NEGATIVE_NUMBER_RULE) {
+                    throw new IllegalArgumentException("<< not allowed in negative-number rule");
+                }
+
+                // if the rule is a fraction rule, return an
+                // IntegralPartSubstitution
+                else if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
+                            || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
+                            || rule.getBaseValue() == NFRule.MASTER_RULE) {
+                    return new IntegralPartSubstitution(pos, ruleSet, formatter, description);
+                }
+
+                // if the rule set containing the rule is a fraction
+                // rule set, return a NumeratorSubstitution
+                else if (ruleSet.isFractionSet()) {
+                    return new NumeratorSubstitution(pos, rule.getBaseValue(),
+                                    formatter.getDefaultRuleSet(), formatter, description);
+                }
+
+                // otherwise, return a MultiplierSubstitution
+                else {
+                    return new MultiplierSubstitution(pos, rule.getDivisor(), ruleSet,
+                                    formatter, description);
+                }
+
+            // if the description begins with '>'...
+            case '>':
+                // if the rule is a negative-number rule, return
+                // an AbsoluteValueSubstitution
+                if (rule.getBaseValue() == NFRule.NEGATIVE_NUMBER_RULE) {
+                    return new AbsoluteValueSubstitution(pos, ruleSet, formatter, description);
+                }
+
+                // if the rule is a fraction rule, return a
+                // FractionalPartSubstitution
+                else if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
+                            || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
+                            || rule.getBaseValue() == NFRule.MASTER_RULE) {
+                    return new FractionalPartSubstitution(pos, ruleSet, formatter, description);
+                }
+
+                // if the rule set owning the rule is a fraction rule set,
+                // throw an exception
+                else if (ruleSet.isFractionSet()) {
+                    throw new IllegalArgumentException(">> not allowed in fraction rule set");
+                }
+
+                // otherwise, return a ModulusSubstitution
+                else {
+                    return new ModulusSubstitution(pos, rule.getDivisor(), rulePredecessor,
+                                    ruleSet, formatter, description);
+                }
+
+            // if the description begins with '=', always return a
+            // SameValueSubstitution
+            case '=':
+                return new SameValueSubstitution(pos, ruleSet, formatter, description);
+
+            // and if it's anything else, throw an exception
+            default:
+                throw new IllegalArgumentException("Illegal substitution character");
+        }
+    }
+
+    /**
+     * Base constructor for substitutions.  This constructor sets up the
+     * fields which are common to all substitutions.
+     * @param pos The substitution's position in the owning rule's rule
+     * text
+     * @param ruleSet The rule set that owns this substitution
+     * @param formatter The RuleBasedNumberFormat that owns this substitution
+     * @param description The substitution descriptor (i.e., the text
+     * inside the token characters)
+     */
+    NFSubstitution(int pos,
+                   NFRuleSet ruleSet,
+                   RuleBasedNumberFormat formatter,
+                   String description) {
+        // initialize the substitution's position in its parent rule
+        this.pos = pos;
+
+        // the description should begin and end with the same character.
+        // If it doesn't that's a syntax error.  Otherwise,
+        // makeSubstitution() was the only thing that needed to know
+        // about these characters, so strip them off
+        if (description.length() >= 2 && description.charAt(0) == description.charAt(
+                        description.length() - 1)) {
+            description = description.substring(1, description.length() - 1);
+        }
+        else if (description.length() != 0) {
+            throw new IllegalArgumentException("Illegal substitution syntax");
+        }
+
+        // if the description was just two paired token characters
+        // (i.e., "<<" or ">>"), it uses the rule set it belongs to to
+        // format its result
+        if (description.length() == 0) {
+            this.ruleSet = ruleSet;
+        }
+
+        // if the description contains a rule set name, that's the rule
+        // set we use to format the result: get a reference to the
+        // names rule set
+        else if (description.charAt(0) == '%') {
+            this.ruleSet = formatter.findRuleSet(description);
+        }
+
+        // if the description begins with 0 or #, treat it as a
+        // DecimalFormat pattern, and initialize a DecimalFormat with
+        // that pattern (then set it to use the DecimalFormatSymbols
+        // belonging to our formatter)
+        else if (description.charAt(0) == '#' || description.charAt(0) == '0') {
+            this.numberFormat = new DecimalFormat(description);
+            this.numberFormat.setDecimalFormatSymbols(formatter.getDecimalFormatSymbols());
+        }
+
+        // if the description is ">>>", this substitution bypasses the
+        // usual rule-search process and always uses the rule that precedes
+        // it in its own rule set's rule list (this is used for place-value
+        // notations: formats where you want to see a particular part of
+        // a number even when it's 0)
+        else if (description.charAt(0) == '>') {
+            this.ruleSet = ruleSet; // was null, thai rules added to control space
+            this.numberFormat = null;
+        }
+
+        // and of the description is none of these things, it's a syntax error
+        else {
+            throw new IllegalArgumentException("Illegal substitution syntax");
+        }
+    }
+
+    /**
+     * Set's the substitution's divisor.  Used by NFRule.setBaseValue().
+     * A no-op for all substitutions except multiplier and modulus
+     * substitutions.
+     * @param radix The radix of the divisor
+     * @param exponent The exponent of the divisor
+     */
+    public void setDivisor(int radix, int exponent) {
+        // a no-op for all substitutions except multiplier and modulus substitutions
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Compares two substitutions for equality
+     * @param The substitution to compare this one to
+     * @return true if the two substitutions are functionally equivalent
+     */
+    public boolean equals(Object that) {
+        // compare class and all of the fields all substitutions have
+        // in common
+        if (this.getClass() == that.getClass()) {
+            NFSubstitution that2 = (NFSubstitution)that;
+
+             return pos == that2.pos
+		 && (ruleSet == null ? that2.ruleSet == null : true) // can't compare tree structure, no .equals or recurse
+		 && (numberFormat == null ? (that2.numberFormat == null) : numberFormat.equals(that2.numberFormat));
+        }
+	return false;
+    }
+
+    /**
+     * Returns a textual description of the substitution
+     * @return A textual description of the substitution.  This might
+     * not be identical to the description it was created from, but
+     * it'll produce the same result.
+     */
+    public String toString() {
+        // use tokenChar() to get the character at the beginning and
+        // end of the substitution token.  In between them will go
+        // either the name of the rule set it uses, or the pattern of
+        // the DecimalFormat it uses
+        if (ruleSet != null) {
+            return tokenChar() + ruleSet.getName() + tokenChar();
+        } else {
+            return tokenChar() + numberFormat.toPattern() + tokenChar();
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Performs a mathematical operation on the number, formats it using
+     * either ruleSet or decimalFormat, and inserts the result into
+     * toInsertInto.
+     * @param number The number being formatted.
+     * @param toInsertInto The string we insert the result into
+     * @param pos The position in toInsertInto where the owning rule's
+     * rule text begins (this value is added to this substitution's
+     * position to determine exactly where to insert the new text)
+     */
+    public void doSubstitution(long number, StringBuffer toInsertInto, int pos) {
+        if (ruleSet != null) {
+           // perform a transformation on the number that is dependent
+           // on the type of substitution this is, then just call its
+           // rule set's format() method to format the result
+           long numberToFormat = transformNumber(number);
+
+            ruleSet.format(numberToFormat, toInsertInto, pos + this.pos);
+        } else {
+            // or perform the transformation on the number (preserving
+            // the result's fractional part if the formatter it set
+            // to show it), then use that formatter's format() method
+            // to format the result
+            double numberToFormat = transformNumber((double)number);
+            if (numberFormat.getMaximumFractionDigits() == 0) {
+                numberToFormat = Math.floor(numberToFormat);
+            }
+
+            toInsertInto.insert(pos + this.pos, numberFormat.format(numberToFormat));
+        }
+    }
+
+    /**
+     * Performs a mathematical operation on the number, formats it using
+     * either ruleSet or decimalFormat, and inserts the result into
+     * toInsertInto.
+     * @param number The number being formatted.
+     * @param toInsertInto The string we insert the result into
+     * @param pos The position in toInsertInto where the owning rule's
+     * rule text begins (this value is added to this substitution's
+     * position to determine exactly where to insert the new text)
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int pos) {
+        // perform a transformation on the number being formatted that
+        // is dependent on the type of substitution this is
+        double numberToFormat = transformNumber(number);
+
+        // if the result is an integer, from here on out we work in integer
+        // space (saving time and memory and preserving accuracy)
+        if (numberToFormat == Math.floor(numberToFormat) && ruleSet != null) {
+            ruleSet.format((long)numberToFormat, toInsertInto, pos + this.pos);
+
+        // if the result isn't an integer, then call either our rule set's
+        // format() method or our DecimalFormat's format() method to
+        // format the result
+        } else {
+            if (ruleSet != null) {
+                ruleSet.format(numberToFormat, toInsertInto, pos + this.pos);
+            } else {
+                toInsertInto.insert(pos + this.pos, numberFormat.format(numberToFormat));
+            }
+        }
+    }
+
+    /**
+     * Subclasses override this function to perform some kind of
+     * mathematical operation on the number.  The result of this operation
+     * is formatted using the rule set or DecimalFormat that this
+     * substitution refers to, and the result is inserted into the result
+     * string.
+     * @param The number being formatted
+     * @return The result of performing the opreration on the number
+     */
+    public abstract long transformNumber(long number);
+
+    /**
+     * Subclasses override this function to perform some kind of
+     * mathematical operation on the number.  The result of this operation
+     * is formatted using the rule set or DecimalFormat that this
+     * substitution refers to, and the result is inserted into the result
+     * string.
+     * @param The number being formatted
+     * @return The result of performing the opreration on the number
+     */
+    public abstract double transformNumber(double number);
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Parses a string using the rule set or DecimalFormat belonging
+     * to this substitution.  If there's a match, a mathematical
+     * operation (the inverse of the one used in formatting) is
+     * performed on the result of the parse and the value passed in
+     * and returned as the result.  The parse position is updated to
+     * point to the first unmatched character in the string.
+     * @param text The string to parse
+     * @param parsePosition On entry, ignored, but assumed to be 0.
+     * On exit, this is updated to point to the first unmatched
+     * character (or 0 if the substitution didn't match)
+     * @param baseValue A partial parse result that should be
+     * combined with the result of this parse
+     * @param upperBound When searching the rule set for a rule
+     * matching the string passed in, only rules with base values
+     * lower than this are considered
+     * @param lenientParse If true and matching against rules fails,
+     * the substitution will also try matching the text against
+     * numerals using a default-costructed NumberFormat.  If false,
+     * no extra work is done.  (This value is false whenever the
+     * formatter isn't in lenient-parse mode, but is also false
+     * under some conditions even when the formatter _is_ in
+     * lenient-parse mode.)
+     * @return If there's a match, this is the result of composing
+     * baseValue with whatever was returned from matching the
+     * characters.  This will be either a Long or a Double.  If there's
+     * no match this is new Long(0) (not null), and parsePosition
+     * is left unchanged.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                    double upperBound, boolean lenientParse) {
+        Number tempResult;
+
+        // figure out the highest base value a rule can have and match
+        // the text being parsed (this varies according to the type of
+        // substitutions: multiplier, modulus, and numerator substitutions
+        // restrict the search to rules with base values lower than their
+        // own; same-value substitutions leave the upper bound wherever
+        // it was, and the others allow any rule to match
+        upperBound = calcUpperBound(upperBound);
+
+        // use our rule set to parse the text.  If that fails and
+        // lenient parsing is enabled (this is always false if the
+        // formatter's lenient-parsing mode is off, but it may also
+        // be false even when the formatter's lenient-parse mode is
+        // on), then also try parsing the text using a default-
+        // constructed NumberFormat
+        if (ruleSet != null) {
+            tempResult = ruleSet.parse(text, parsePosition, upperBound);
+            if (lenientParse && !ruleSet.isFractionSet() && parsePosition.getIndex() == 0) {
+                tempResult = NumberFormat.getInstance().parse(text, parsePosition);
+            }
+
+        // ...or use our DecimalFormat to parse the text
+        } else {
+            tempResult = numberFormat.parse(text, parsePosition);
+        }
+
+        // if the parse was successful, we've already advanced the caller's
+        // parse position (this is the one function that doesn't have one
+        // of its own).  Derive a parse result and return it as a Long,
+        // if possible, or a Double
+        if (parsePosition.getIndex() != 0) {
+            double result = tempResult.doubleValue();
+
+            // composeRuleValue() produces a full parse result from
+            // the partial parse result passed to this function from
+            // the caller (this is either the owning rule's base value
+            // or the partial result obtained from composing the
+            // owning rule's base value with its other substitution's
+            // parse result) and the partial parse result obtained by
+            // matching the substitution (which will be the same value
+            // the caller would get by parsing just this part of the
+            // text with RuleBasedNumberFormat.parse() ).  How the two
+            // values are used to derive the full parse result depends
+            // on the types of substitutions: For a regular rule, the
+            // ultimate result is its multiplier substitution's result
+            // times the rule's divisor (or the rule's base value) plus
+            // the modulus substitution's result (which will actually
+            // supersede part of the rule's base value).  For a negative-
+            // number rule, the result is the negative of its substitution's
+            // result.  For a fraction rule, it's the sum of its two
+            // substitution results.  For a rule in a fraction rule set,
+            // it's the numerator substitution's result divided by
+            // the rule's base value.  Results from same-value substitutions
+            // propagate back upard, and null substitutions don't affect
+            // the result.
+            result = composeRuleValue(result, baseValue);
+            if (result == (long)result) {
+                return new Long((long)result);
+            } else {
+                return new Double(result);
+            }
+
+        // if the parse was UNsuccessful, return 0
+        } else {
+            return tempResult;
+        }
+    }
+
+    /**
+     * Derives a new value from the two values passed in.  The two values
+     * are typically either the base values of two rules (the one containing
+     * the substitution and the one matching the substitution) or partial
+     * parse results derived in some other way.  The operation is generally
+     * the inverse of the operation performed by transformNumber().
+     * @param newRuleValue The value produced by matching this substitution
+     * @param oldRuleValue The value that was passed to the substitution
+     * by the rule that owns it
+     * @return A third value derived from the other two, representing a
+     * partial parse result
+     */
+    public abstract double composeRuleValue(double newRuleValue, double oldRuleValue);
+
+    /**
+     * Calculates an upper bound when searching for a rule that matches
+     * this substitution.  Rules with base values greater than or equal
+     * to upperBound are not considered.
+     * @param oldUpperBound The current upper-bound setting.  The new
+     * upper bound can't be any higher.
+     */
+    public abstract double calcUpperBound(double oldUpperBound);
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the substitution's position in the rule that owns it.
+     * @return The substitution's position in the rule that owns it.
+     */
+    public final int getPos() {
+        return pos;
+    }
+
+    /**
+     * Returns the character used in the textual representation of
+     * substitutions of this type.  Used by toString().
+     * @return This substitution's token character.
+     */
+    abstract char tokenChar();
+
+    /**
+     * Returns true if this is a null substitution.  (We didn't do this
+     * with instanceof partially because it causes source files to
+     * proliferate and partially because we have to port this to C++.)
+     * @return true if this object is an instance of NullSubstitution
+     */
+    public boolean isNullSubstitution() {
+        return false;
+    }
+
+    /**
+     * Returns true if this is a modulus substitution.  (We didn't do this
+     * with instanceof partially because it causes source files to
+     * proliferate and partially because we have to port this to C++.)
+     * @return true if this object is an instance of ModulusSubstitution
+     */
+    public boolean isModulusSubstitution() {
+        return false;
+    }
+}
+
+//===================================================================
+// SameValueSubstitution
+//===================================================================
+
+/**
+ * A substitution that passes the value passed to it through unchanged.
+ * Represented by == in rule descriptions.
+ */
+class SameValueSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a SameValueSubstution.  This function just uses the
+     * superclass constructor, but it performs a check that this
+     * substitution doesn't call the rule set that owns it, since that
+     * would lead to infinite recursion.
+     */
+    SameValueSubstitution(int pos,
+                          NFRuleSet ruleSet,
+                          RuleBasedNumberFormat formatter,
+                          String description) {
+        super(pos, ruleSet, formatter, description);
+        if (description.equals("==")) {
+            throw new IllegalArgumentException("== is not a legal token");
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns "number" unchanged.
+     * @return "number"
+     */
+    public long transformNumber(long number) {
+        return number;
+    }
+
+    /**
+     * Returns "number" unchanged.
+     * @return "number"
+     */
+    public double transformNumber(double number) {
+        return number;
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns newRuleValue and ignores oldRuleValue. (The value we got
+     * matching the substitution supersedes the value of the rule
+     * that owns the substitution.)
+     * @param newRuleValue The value resulting from matching the substituion
+     * @param oldRuleValue The value of the rule containing the
+     * substitution.
+     * @return newRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue;
+    }
+
+    /**
+     * SameValueSubstitution doesn't change the upper bound.
+     * @param oldUpperBound The current upper bound.
+     * @return oldUpperBound
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return oldUpperBound;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for a SameValueSubstitution is =.
+     * @return '='
+     */
+    char tokenChar() {
+        return '=';
+    }
+}
+
+//===================================================================
+// MultiplierSubstitution
+//===================================================================
+
+/**
+ * A substitution that divides the number being formatted by the rule's
+ * divisor and formats the quotient.  Represented by &lt;&lt; in normal
+ * rules.
+ */
+class MultiplierSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The divisor of the rule that owns this substitution.
+     */
+    double divisor;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a MultiplierSubstitution.  This uses the superclass
+     * constructor to initialize most members, but this substitution
+     * also maintains its own copy of its rule's divisor.
+     * @param pos The substitution's position in its rule's rule text
+     * @param divisor The owning rule's divisor
+     * @ruleSet The ruleSet this substitution uses to format its result
+     * @formatter The formatter that owns this substitution
+     * @description The description describing this substitution
+     */
+    MultiplierSubstitution(int pos,
+                           double divisor,
+                           NFRuleSet ruleSet,
+                           RuleBasedNumberFormat formatter,
+                           String description) {
+        super(pos, ruleSet, formatter, description);
+
+        // the owning rule's divisor affects the behavior of this
+        // substitution.  Rather than keeping a back-pointer to the
+        // rule, we keep a copy of the divisor
+        this.divisor = divisor;
+    }
+
+    /**
+     * Sets the substitution's divisor based on the values passed in.
+     * @param radix The radix of the divisor.
+     * @param exponent The exponent of the divisor.
+     */
+    public void setDivisor(int radix, int exponent) {
+        divisor = Math.pow(radix, exponent);
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Augments the superclass's equals() function by comparing divisors.
+     * @param that The other substitution
+     * @return true if the two substitutions are functionally equal
+     */
+    public boolean equals(Object that) {
+        if (super.equals(that)) {
+            MultiplierSubstitution that2 = (MultiplierSubstitution)that;
+
+            return divisor == that2.divisor;
+        } else {
+            return false;
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Divides the number by the rule's divisor and returns the quotient.
+     * @param number The number being formatted.
+     * @return "number" divided by the rule's divisor
+     */
+    public long transformNumber(long number) {
+        return (long)Math.floor(number / divisor);
+    }
+
+    /**
+     * Divides the number by the rule's divisor and returns the quotient.
+     * This is an integral quotient if we're filling in the substitution
+     * using another rule set, but it's the full quotient (integral and
+     * fractional parts) if we're filling in the substitution using
+     * a DecimalFormat.  (This allows things such as "1.2 million".)
+     * @param number The number being formatted
+     * @return "number" divided by the rule's divisor
+     */
+    public double transformNumber(double number) {
+        if (ruleSet == null) {
+            return number / divisor;
+        } else {
+            return Math.floor(number / divisor);
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns newRuleValue times the divisor.  Ignores oldRuleValue.
+     * (The result of matching a << substitution supersedes the base
+     * value of the rule that contains it.)
+     * @param newRuleValue The result of matching the substitution
+     * @param oldRuleValue The base value of the rule containing the
+     * substitution
+     * @return newRuleValue * divisor
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue * divisor;
+    }
+
+    /**
+     * Sets the upper bound down to the rule's divisor.
+     * @param oldUpperBound Ignored.
+     * @return The rule's divisor.
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return divisor;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for a multiplier substitution is &lt;.
+     * @return '&lt;'
+     */
+    char tokenChar() {
+        return '<';
+    }
+}
+
+//===================================================================
+// ModulusSubstitution
+//===================================================================
+
+/**
+ * A substitution that divides the number being formatted by the its rule's
+ * divisor and formats the remainder.  Represented by "&gt;&gt;" in a
+ * regular rule.
+ */
+class ModulusSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The divisor of the rule owning this substitution
+     */
+    double divisor;
+
+    /**
+     * If this is a &gt;&gt;&gt; substitution, the rule to use to format
+     * the substitution value.  Otherwise, null.
+     */
+    NFRule ruleToUse;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a ModulusSubstution.  In addition to the inherited
+     * members, a ModulusSubstitution keeps track of the divisor of the
+     * rule that owns it, and may also keep a reference to the rule
+     * that precedes the rule containing this substitution in the rule
+     * set's rule list.
+     * @param pos The substitution's position in its rule's rule text
+     * @param divisor The divisor of the rule that owns this substitution
+     * @param rulePredecessor The rule that precedes this substitution's
+     * rule in its rule set's rule list
+     * @param formatter The RuleBasedNumberFormat owning this substitution
+     * @param description The description for this substitution
+     */
+    ModulusSubstitution(int pos,
+                        double divisor,
+                        NFRule rulePredecessor,
+                        NFRuleSet ruleSet,
+                        RuleBasedNumberFormat formatter,
+                        String description) {
+        super(pos, ruleSet, formatter, description);
+
+        // the owning rule's divisor controls the behavior of this
+        // substitution: rather than keeping a backpointer to the rule,
+        // we keep a copy of the divisor
+        this.divisor = divisor;
+
+        // the >>> token doesn't alter how this substituion calculates the
+        // values it uses for formatting and parsing, but it changes
+        // what's done with that value after it's obtained: >>> short-
+        // circuits the rule-search process and goes straight to the
+        // specified rule to format the substitution value
+        if (description.equals(">>>")) {
+            ruleToUse = rulePredecessor;
+        } else {
+            ruleToUse = null;
+        }
+    }
+
+    /**
+     * Makes the substitution's divisor conform to that of the rule
+     * that owns it.  Used when the divisor is determined after creation.
+     * @param radix The radix of the divsor.
+     * @param exponent The exponent of the divisor.
+     */
+    public void setDivisor(int radix, int exponent) {
+        divisor = Math.pow(radix, exponent);
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Augments the inherited equals() function by comparing divisors and
+     * ruleToUse.
+     * @param that The other substitution
+     * @return true if the two substitutions are functionally equivalent
+     */
+    public boolean equals(Object that) {
+        if (super.equals(that)) {
+            ModulusSubstitution that2 = (ModulusSubstitution)that;
+
+            return divisor == that2.divisor;
+        } else {
+            return false;
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * If this is a &gt;&gt;&gt; substitution, use ruleToUse to fill in
+     * the substitution.  Otherwise, just use the superclass function.
+     * @param number The number being formatted
+     * @toInsertInto The string to insert the result of this substitution
+     * into
+     * @param pos The position of the rule text in toInsertInto
+     */
+    public void doSubstitution(long number, StringBuffer toInsertInto, int pos) {
+        // if this isn't a >>> substitution, just use the inherited version
+        // of this function (which uses either a rule set or a DecimalFormat
+        // to format its substitution value)
+        if (ruleToUse == null) {
+            super.doSubstitution(number, toInsertInto, pos);
+
+        // a >>> substitution goes straight to a particular rule to
+        // format the substitution value
+        } else {
+            long numberToFormat = transformNumber(number);
+            ruleToUse.doFormat(numberToFormat, toInsertInto, pos + this.pos);
+        }
+    }
+
+    /**
+     * If this is a &gt;&gt;&gt; substitution, use ruleToUse to fill in
+     * the substitution.  Otherwise, just use the superclass function.
+     * @param number The number being formatted
+     * @toInsertInto The string to insert the result of this substitution
+     * into
+     * @param pos The position of the rule text in toInsertInto
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int pos) {
+        // if this isn't a >>> substitution, just use the inherited version
+        // of this function (which uses either a rule set or a DecimalFormat
+        // to format its substitution value)
+        if (ruleToUse == null) {
+            super.doSubstitution(number, toInsertInto, pos);
+
+        // a >>> substitution goes straight to a particular rule to
+        // format the substitution value
+        } else {
+            double numberToFormat = transformNumber(number);
+
+            ruleToUse.doFormat(numberToFormat, toInsertInto, pos + this.pos);
+        }
+    }
+
+    /**
+     * Divides the number being formatted by the rule's divisor and
+     * returns the remainder.
+     * @param number The number being formatted
+     * @return "number" mod divisor
+     */
+    public long transformNumber(long number) {
+        return (long)Math.floor(number % divisor);
+    }
+
+    /**
+     * Divides the number being formatted by the rule's divisor and
+     * returns the remainder.
+     * @param number The number being formatted
+     * @return "number" mod divisor
+     */
+    public double transformNumber(double number) {
+        return Math.floor(number % divisor);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * If this is a &gt;&gt;&gt; substitution, match only against ruleToUse.
+     * Otherwise, use the superclass function.
+     * @param text The string to parse
+     * @param parsePosition Ignored on entry, updated on exit to point to
+     * the first unmatched character.
+     * @param baseValue The partial parse result prior to calling this
+     * routine.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                        double upperBound, boolean lenientParse) {
+        // if this isn't a >>> substitution, we can just use the
+        // inherited parse() routine to do the parsing
+        if (ruleToUse == null) {
+            return super.doParse(text, parsePosition, baseValue, upperBound, lenientParse);
+
+        // but if it IS a >>> substitution, we have to do it here: we
+        // use the specific rule's doParse() method, and then we have to
+        // do some of the other work of NFRuleSet.parse()
+        } else {
+            Number tempResult = ruleToUse.doParse(text, parsePosition, false, upperBound);
+
+            if (parsePosition.getIndex() != 0) {
+                double result = tempResult.doubleValue();
+
+                result = composeRuleValue(result, baseValue);
+                if (result == (long)result) {
+                    return new Long((long)result);
+                } else {
+                    return new Double(result);
+                }
+            } else {
+                return tempResult;
+            }
+        }
+    }
+
+    /**
+     * Returns the highest multiple of the rule's divisor that its less
+     * than or equal to oldRuleValue, plus newRuleValue.  (The result
+     * is the sum of the result of parsing the substitution plus the
+     * base valueof the rule containing the substitution, but if the
+     * owning rule's base value isn't an even multiple of its divisor,
+     * we have to round it down to a multiple of the divisor, or we
+     * get unwanted digits in the result.)
+     * @param newRuleValue The result of parsing the substitution
+     * @param oldRuleValue The base value of the rule containing the
+     * substitution
+     * @return (oldRuleValue - (oldRuleValue % divisor)) + newRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return (oldRuleValue - (oldRuleValue % divisor)) + newRuleValue;
+    }
+
+    /**
+     * Sets the upper bound down to the owning rule's divisor
+     * @param oldUpperBound Ignored
+     * @return The owning rule's dvisor
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return divisor;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns true.  This _is_ a ModulusSubstitution.
+     * @return true
+     */
+    public boolean isModulusSubstitution() {
+        return true;
+    }
+
+    /**
+     * The token character of a ModulusSubstitution is &gt;.
+     * @return '&gt;'
+     */
+    char tokenChar() {
+        return '>';
+    }
+}
+
+//===================================================================
+// IntegralPartSubstitution
+//===================================================================
+
+/**
+ * A substitution that formats the number's integral part.  This is
+ * represented by &lt;&lt; in a fraction rule.
+ */
+class IntegralPartSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs an IntegralPartSubstitution.  This just calls
+     * the superclass constructor.
+     */
+    IntegralPartSubstitution(int pos,
+                             NFRuleSet ruleSet,
+                             RuleBasedNumberFormat formatter,
+                             String description) {
+        super(pos, ruleSet, formatter, description);
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the number's integral part. (For a long, that's just the
+     * number unchanged.)
+     * @param number The number being formatted
+     * @return "number" unchanged
+     */
+    public long transformNumber(long number) {
+        return number;
+    }
+
+    /**
+     * Returns the number's integral part.
+     * @param number The integral part of the number being formatted
+     * @return floor(number)
+     */
+    public double transformNumber(double number) {
+        return Math.floor(number);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the sum of the result of parsing the substitution and the
+     * owning rule's base value.  (The owning rule, at best, has an
+     * integral-part substitution and a fractional-part substitution,
+     * so we can safely just add them.)
+     * @param newRuleValue The result of matching the substitution
+     * @param oldRuleValue The partial result of the parse prior to
+     * calling this function
+     * @return oldRuleValue + newRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue + oldRuleValue;
+    }
+
+    /**
+     * An IntegralPartSubstitution sets the upper bound back up so all
+     * potentially matching rules are considered.
+     * @param oldUpperBound Ignored
+     * @return Double.MAX_VALUE
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return Double.MAX_VALUE;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * An IntegralPartSubstitution's token character is &lt;
+     * @return '&lt;'
+     */
+    char tokenChar() {
+        return '<';
+    }
+}
+
+//===================================================================
+// FractionalPartSubstitution
+//===================================================================
+
+/**
+ * A substitution that formats the fractional part of a number.  This is
+ * represented by &gt;&gt; in a fraction rule.
+ */
+class FractionalPartSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * true if this substitution should have the default "by digits"
+     * behavior, false otherwise
+     */
+    private boolean byDigits = false;
+
+    /**
+     * true if we automatically insert spaces to separate names of digits
+     * set to false by '>>>' in fraction rules, used by Thai.
+     */
+    private boolean useSpaces = true;
+
+    /**
+     * The largest number of digits after the decimal point that this
+     * object will show in "by digits" mode
+     */
+    private static final int MAXDECIMALDIGITS = 8;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a FractionalPartSubstitution.  This object keeps a flag
+     * telling whether it should format by digits or not.  In addition,
+     * it marks the rule set it calls (if any) as a fraction rule set.
+     */
+    FractionalPartSubstitution(int pos,
+                               NFRuleSet ruleSet,
+                               RuleBasedNumberFormat formatter,
+                               String description) {
+        super(pos, ruleSet, formatter, description);
+        if (description.equals(">>") || description.equals(">>>") || ruleSet == this.ruleSet) {
+            byDigits = true;
+            if (description.equals(">>>")) {
+              useSpaces = false;
+            }
+        } else {
+            this.ruleSet.makeIntoFractionRuleSet();
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * If in "by digits" mode, fills in the substitution one decimal digit
+     * at a time using the rule set containing this substitution.
+     * Otherwise, uses the superclass function.
+     * @param number The number being formatted
+     * @param toInsertInto The string to insert the result of formatting
+     * the substitution into
+     * @param pos The position of the owning rule's rule text in
+     * toInsertInto
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int pos) {
+        // if we're not in "byDigits" mode, just use the inherited
+        // doSubstitution() routine
+        if (!byDigits) {
+            super.doSubstitution(number, toInsertInto, pos);
+
+        // if we're in "byDigits" mode, transform the value into an integer
+        // by moving the decimal point eight places to the right and
+        // pulling digits off the right one at a time, formatting each digit
+        // as an integer using this substitution's owning rule set
+        // (this is slower, but more accurate, than doing it from the
+        // other end)
+        } else {
+            int numberToFormat = (int)Math.round(transformNumber(number) * Math.pow(
+                            10, MAXDECIMALDIGITS));
+            // this flag keeps us from formatting trailing zeros.  It starts
+            // out false because we're pulling from the right, and switches
+            // to true the first time we encounter a non-zero digit
+            boolean doZeros = false;
+            for (int i = 0; i < MAXDECIMALDIGITS; i++) {
+                int digit = numberToFormat % 10;
+                if (digit != 0 || doZeros) {
+                    if (doZeros && useSpaces) {
+                        toInsertInto.insert(pos + this.pos, ' ');
+                    }
+                    doZeros = true;
+                    ruleSet.format(digit, toInsertInto, pos + this.pos);
+                }
+                numberToFormat /= 10;
+            }
+        }
+    }
+
+    /**
+     * Returns the fractional part of the number, which will always be
+     * zero if it's a long.
+     * @param number The number being formatted
+     * @return 0
+     */
+    public long transformNumber(long number) {
+        return 0;
+    }
+
+    /**
+     * Returns the fractional part of the number.
+     * @param number The number being formatted.
+     * @return number - floor(number)
+     */
+    public double transformNumber(double number) {
+        return number - Math.floor(number);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * If in "by digits" mode, parses the string as if it were a string
+     * of individual digits; otherwise, uses the superclass function.
+     * @param text The string to parse
+     * @param parsePosition Ignored on entry, but updated on exit to point
+     * to the first unmatched character
+     * @param baseValue The partial parse result prior to entering this
+     * function
+     * @param upperBound Only consider rules with base values lower than
+     * this when filling in the substitution
+     * @param lenientParse If true, try matching the text as numerals if
+     * matching as words doesn't work
+     * @return If the match was successful, the current partial parse
+     * result; otherwise new Long(0).  The result is either a Long or
+     * a Double.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                        double upperBound, boolean lenientParse) {
+        // if we're not in byDigits mode, we can just use the inherited
+        // doParse()
+        if (!byDigits) {
+            return super.doParse(text, parsePosition, baseValue, 0, lenientParse);
+
+        // if we ARE in byDigits mode, parse the text one digit at a time
+        // using this substitution's owning rule set (we do this by setting
+        // upperBound to 10 when calling doParse() ) until we reach
+        // nonmatching text
+        } else {
+            String workText = new String(text);
+            ParsePosition workPos = new ParsePosition(1);
+            double result = 0;
+            int digit;
+            double p10 = 0.1;
+
+            while (workText.length() > 0 && workPos.getIndex() != 0) {
+                workPos.setIndex(0);
+                digit = ruleSet.parse(workText, workPos, 10).intValue();
+                if (lenientParse && workPos.getIndex() == 0) {
+                    digit = NumberFormat.getInstance().parse(workText, workPos).intValue();
+                }
+
+                if (workPos.getIndex() != 0) {
+                    result += digit * p10;
+                    p10 /= 10;
+                    parsePosition.setIndex(parsePosition.getIndex() + workPos.getIndex());
+                    workText = workText.substring(workPos.getIndex());
+                    while (workText.length() > 0 && workText.charAt(0) == ' ') {
+                        workText = workText.substring(1);
+                        parsePosition.setIndex(parsePosition.getIndex() + 1);
+                    }
+                }
+            }
+            result = composeRuleValue(result, baseValue);
+            return new Double(result);
+        }
+    }
+
+    /**
+     * Returns the sum of the two partial parse results.
+     * @param newRuleValue The result of parsing the substitution
+     * @param oldRuleValue The partial parse result prior to calling
+     * this function
+     * @return newRuleValue + oldRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue + oldRuleValue;
+    }
+
+    /**
+     * Not used.
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return 0;   // this value is ignored
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for a FractionalPartSubstitution is &gt;.
+     * @return '&gt;'
+     */
+    char tokenChar() {
+        return '>';
+    }
+}
+
+//===================================================================
+// AbsoluteValueSubstitution
+//===================================================================
+
+ /**
+  * A substitution that formats the absolute value of the number.
+  * This substition is represented by &gt;&gt; in a negative-number rule.
+  */
+class AbsoluteValueSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs an AbsoluteValueSubstitution.  This just uses the
+     * superclass constructor.
+     */
+    AbsoluteValueSubstitution(int pos,
+                              NFRuleSet ruleSet,
+                              RuleBasedNumberFormat formatter,
+                              String description) {
+        super(pos, ruleSet, formatter, description);
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the absolute value of the number.
+     * @param number The number being formatted.
+     * @return abs(number)
+     */
+    public long transformNumber(long number) {
+        return Math.abs(number);
+    }
+
+    /**
+     * Returns the absolute value of the number.
+     * @param number The number being formatted.
+     * @return abs(number)
+     */
+    public double transformNumber(double number) {
+        return Math.abs(number);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the addtive inverse of the result of parsing the
+     * substitution (this supersedes the earlier partial result)
+     * @param newRuleValue The result of parsing the substitution
+     * @param oldRuleValue The partial parse result prior to calling
+     * this function
+     * @return -newRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return -newRuleValue;
+    }
+
+    /**
+     * Sets the upper bound beck up to consider all rules
+     * @param oldUpperBound Ignored.
+     * @return Double.MAX_VALUE
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return Double.MAX_VALUE;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for an AbsoluteValueSubstitution is &gt;
+     * @return '&gt;'
+     */
+    char tokenChar() {
+        return '>';
+    }
+}
+
+//===================================================================
+// NumeratorSubstitution
+//===================================================================
+
+/**
+ * A substitution that multiplies the number being formatted (which is
+ * between 0 and 1) by the base value of the rule that owns it and
+ * formats the result.  It is represented by &lt;&lt; in the rules
+ * in a fraction rule set.
+ */
+class NumeratorSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The denominator of the fraction we're finding the numerator for.
+     * (The base value of the rule that owns this substitution.)
+     */
+    double denominator;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a NumberatorSubstitution.  In addition to the inherited
+     * fields, a NumeratorSubstitution keeps track of a denominator, which
+     * is merely the base value of the rule that owns it.
+     */
+    NumeratorSubstitution(int pos,
+                          double denominator,
+                          NFRuleSet ruleSet,
+                          RuleBasedNumberFormat formatter,
+                          String description) {
+        super(pos, ruleSet, formatter, description);
+
+        // this substitution's behavior depends on the rule's base value
+        // Rather than keeping a backpointer to the rule, we copy its
+        // base value here
+        this.denominator = denominator;
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Tests two NumeratorSubstitutions for equality
+     * @param that The other NumeratorSubstitution
+     * @return true if the two objects are functionally equivalent
+     */
+    public boolean equals(Object that) {
+        if (super.equals(that)) {
+            NumeratorSubstitution that2 = (NumeratorSubstitution)that;
+            return denominator == that2.denominator;
+        } else {
+            return false;
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the number being formatted times the denominator.
+     * @param number The number being formatted
+     * @return number * denominator
+     */
+    public long transformNumber(long number) {
+        return Math.round(number * denominator);
+    }
+
+    /**
+     * Returns the number being formatted times the denominator.
+     * @param number The number being formatted
+     * @return number * denominator
+     */
+    public double transformNumber(double number) {
+        return Math.round(number * denominator);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Dispatches to the inherited version of this function, but makes
+     * sure that lenientParse is off.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                        double upperBound, boolean lenientParse) {
+        // we don't have to do anything special to do the parsing here,
+        // but we have to turn lenient parsing off-- if we leave it on,
+        // it SERIOUSLY messes up the algorithm
+        return super.doParse(text, parsePosition, baseValue, upperBound, false);
+    }
+
+    /**
+     * Divides the result of parsing the substitution by the partial
+     * parse result.
+     * @param newRuleValue The result of parsing the substitution
+     * @param oldRuleValue The owning rule's base value
+     * @return newRuleValue / oldRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue / oldRuleValue;
+    }
+
+    /**
+     * Sets the uper bound down to this rule's base value
+     * @param oldUpperBound Ignored
+     * @return The base value of the rule owning this substitution
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return denominator;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for a NumeratorSubstitution is &lt;
+     * @return '&lt;'
+     */
+    char tokenChar() {
+        return '<';
+    }
+}
+
+//===================================================================
+// NullSubstitution
+//===================================================================
+
+/**
+ * A substitution which does nothing.  This class exists just to simplify
+ * the logic in some other routines so that they don't have to worry
+ * about how many substitutions a rule has.
+ */
+class NullSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a NullSubstitution.  This just delegates to the superclass
+     * constructor, but the only value we really care about is the position.
+     */
+    NullSubstitution(int pos,
+                     NFRuleSet ruleSet,
+                     RuleBasedNumberFormat formatter,
+                     String description) {
+        super(pos, ruleSet, formatter, description);
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Only checks for class equality
+     */
+    public boolean equals(Object that) {
+        return super.equals(that);
+    }
+
+    /**
+     * NullSubstitutions don't show up in the textual representation
+     * of a RuleBasedNumberFormat
+     */
+    public String toString() {
+        return "";
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Does nothing.
+     */
+    public void doSubstitution(long number, StringBuffer toInsertInto, int pos) {
+    }
+
+    /**
+     * Does nothing.
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int pos) {
+    }
+
+    /**
+     * Never called.
+     */
+    ///CLOVER:OFF
+    public long transformNumber(long number) {
+        return 0;
+    }
+    ///CLOVER:ON
+
+    /**
+     * Never called.
+     */
+    ///CLOVER:OFF
+    public double transformNumber(double number) {
+        return 0;
+    }
+    ///CLOVER:ON
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the partial parse result unchanged
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                        double upperBound, boolean lenientParse) {
+        if (baseValue == (long)baseValue) {
+            return new Long((long)baseValue);
+        } else {
+            return new Double(baseValue);
+        }
+    }
+
+    /**
+     * Never called.
+     */
+    ///CLOVER:OFF
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return 0;
+    }
+    ///CLOVER:ON
+
+    /**
+     * Never called.
+     */
+    ///CLOVER:OFF
+    public double calcUpperBound(double oldUpperBound) {
+        return 0;
+    }
+    ///CLOVER:ON
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns true (this _is_ a NullSubstitution).
+     * @return true
+     */
+    public boolean isNullSubstitution() {
+        return true;
+    }
+
+    /**
+     * Never called.
+     */
+    ///CLOVER:OFF
+    char tokenChar() {
+        return ' ';
+    }
+    ///CLOVER:ON
+}
+
diff --git a/src/com/ibm/icu/text/NameUnicodeTransliterator.java b/src/com/ibm/icu/text/NameUnicodeTransliterator.java
new file mode 100755
index 0000000..57eadff
--- /dev/null
+++ b/src/com/ibm/icu/text/NameUnicodeTransliterator.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 1996-2001, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/NameUnicodeTransliterator.java,v $ 
+ * $Date: 2002/07/26 21:12:36 $ 
+ * $Revision: 1.11 $
+ */
+package com.ibm.icu.text;
+import java.util.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.impl.UCharacterProperty;
+
+/**
+ * A transliterator that performs name to character mapping.
+ * @author Alan Liu
+ */
+class NameUnicodeTransliterator extends Transliterator {
+
+    char openDelimiter;
+    char closeDelimiter;
+
+    static final String _ID = "Name-Any";
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new NameUnicodeTransliterator(null);
+            }
+        });
+    }
+
+    /**
+     * Constructs a transliterator.
+     */
+    public NameUnicodeTransliterator(char openDelimiter, char closeDelimiter,
+                                     UnicodeFilter filter) {
+        super(_ID, filter);
+        this.openDelimiter = openDelimiter;
+        this.closeDelimiter = closeDelimiter;
+    }
+
+    /**
+     * Constructs a transliterator with the default delimiters '{' and
+     * '}'.
+     */
+    public NameUnicodeTransliterator(UnicodeFilter filter) {
+        this('{', '}', filter);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        // Longest name as of 3.0.0 is 83
+        final int LONGEST_NAME = 83;
+        
+        // Accomodate the longest possible name plus padding
+        char[] buf = new char[LONGEST_NAME + 8]; 
+
+        // The only characters used in names are (as of Unicode 3.0.0):
+        //  -0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
+        // (first character is a space).
+
+        int cursor = offsets.start;
+        int limit = offsets.limit;
+
+        // Modes:
+        // 0 - looking for open delimiter
+        // 1 - after open delimiter
+        int mode = 0;
+        int ibuf = 0;
+        int openPos = offsets.start; // position of openDelimiter
+        
+        int c;
+        for (; cursor < limit; cursor+=UTF16.getCharCount(c)) {
+            c = text.char32At(cursor);
+
+            switch (mode) {
+            case 0: // looking for open delimiter
+                if (c == openDelimiter) {
+                    openPos = cursor;
+                    mode = 1;
+                    ibuf = 0;
+                }
+                break;
+
+            case 1: // after open delimiter
+                // Look for [-a-zA-Z0-9<>].  If \s+ is found, convert it
+                // to a single space.  If closeDelimiter is found, exit
+                // the loop.  If any other character is found, exit the
+                // loop.  If the limit is found, exit the loop.
+                if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                    // Ignore leading whitespace
+                    if (ibuf != 0 && buf[ibuf-1] != (char)0x0020) {
+                        buf[ibuf++] = (char)0x0020 /* */;
+                        // If we go a bit past the longest possible name then abort
+                        if (ibuf == (LONGEST_NAME + 4)) {
+                            mode = 0;
+                        }
+                    }
+                    continue;
+                }
+
+                if (c == closeDelimiter) {
+                    // Delete trailing space, if any
+                    if (ibuf > 0 && buf[ibuf-1] == (char)0x0020) {
+                        --ibuf;
+                    }
+                    int ch = UCharacter.getCharFromExtendedName(new String(buf, 0, ibuf));
+                    if (ch != -1) {
+                        // Lookup succeeded
+                        String str = UTF16.valueOf(ch);
+                        text.replace(openPos, cursor+1, str);
+
+                        // Adjust indices for the change in the length of
+                        // the string.  Do not assume that str.length() ==
+                        // 1, in case of surrogates.
+                        int delta = cursor + 1 - openPos - str.length();
+                        cursor -= delta;
+                        limit -= delta;
+                        // assert(cursor == openPos + str.length());
+                    }
+                    // If the lookup failed, we leave things as-is and
+                    // still switch to mode 0 and continue.
+                    mode = 0;
+                    continue;
+                }
+
+                if (c >= (char)0x0061 && c <= (char)0x007A) {
+                    c -= 0x0020; // [a-z] => [A-Z]
+                }
+
+                // Check if c =~ [-A-Za-z0-9<>]
+                if (c == (char)0x002D ||
+                    (c >= (char)0x0041 && c <= (char)0x005A) ||
+                    (c >= (char)0x0061 && c <= (char)0x007A) ||
+                    (c >= (char)0x0030 && c <= (char)0x0039) ||
+                    c == (char)0x003C || c == (char)0x003E) {
+                    buf[ibuf++] = (char) c;
+                    // If we go a bit past the longest possible name then abort
+                    if (ibuf == (LONGEST_NAME + 4)) {
+                        mode = 0;
+                    }
+                }
+
+                // Invalid character
+                else {
+                    --cursor; // Backup and reprocess this character
+                    mode = 0;
+                }
+
+                break;
+            }
+        }
+
+        offsets.contextLimit += limit - offsets.limit;
+        offsets.limit = limit;
+        // In incremental mode, only advance the cursor up to the last
+        // open delimiter, if we are in mode 1.
+        offsets.start = (mode == 1 && isIncremental) ? openPos : cursor;
+    }
+}
diff --git a/src/com/ibm/icu/text/NormalizationTransliterator.java b/src/com/ibm/icu/text/NormalizationTransliterator.java
new file mode 100755
index 0000000..bbd0fd3
--- /dev/null
+++ b/src/com/ibm/icu/text/NormalizationTransliterator.java
@@ -0,0 +1,671 @@
+/*
+**********************************************************************
+*   Copyright (C) 2001, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   06/08/01    aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+import com.ibm.icu.lang.*;
+
+/**
+ * @author Alan Liu
+ * @version $RCSfile: NormalizationTransliterator.java,v $ $Revision: 1.19 $ $Date: 2002/07/27 01:04:54 $
+ */
+final class NormalizationTransliterator extends Transliterator {
+    
+    static final boolean DEBUG = false;
+
+    /**
+     * The normalization mode of this transliterator.
+     */
+    private Normalizer.Mode mode;
+
+    /**
+     * Normalization options for this transliterator.
+     */
+    private int options;
+
+    /**
+     * The set of "unsafe start" characters.  These are characters
+     * with cc==0 but which may interact with previous characters.  We
+     * effectively consider these to be cc!=0, for our purposes.
+     *
+     * From http://www.macchiato.com/utc/NFUnsafeStart-3.1.1dX.txt
+     * Generated in unicodetools, NFSkippable
+     *
+     */
+     
+    static final UnicodeSet[] UNSAFE_STARTS = new UnicodeSet[4];
+    static final UnicodeSet[] SKIPPABLES = new UnicodeSet[4];
+    
+    static final int
+        D = 0, C = 1, KD= 2, KC = 3;
+    
+    // Instance data, simply pointer to one of the sets below
+    final UnicodeSet UNSAFE_START;
+    final UnicodeSet SKIPPABLE;
+    
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory("Any-NFC", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return NormalizationTransliterator.
+                    getInstance(Normalizer.NFC);
+            }
+        });
+        Transliterator.registerFactory("Any-NFD", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return NormalizationTransliterator.
+                    getInstance(Normalizer.NFD);
+            }
+        });
+        Transliterator.registerFactory("Any-NFKC", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return NormalizationTransliterator.
+                    getInstance(Normalizer.NFKC);
+            }
+        });
+        Transliterator.registerFactory("Any-NFKD", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return NormalizationTransliterator.
+                    getInstance(Normalizer.NFKD);
+            }
+        });
+        Transliterator.registerSpecialInverse("NFC", "NFD", true);
+        Transliterator.registerSpecialInverse("NFKC", "NFKD", true);
+    }
+
+    /**
+     * Factory method.
+     */
+    public static NormalizationTransliterator getInstance(Normalizer.Mode m,
+                                                          int opt) {
+        StringBuffer id = new StringBuffer("NF");
+        int choice = 0;
+        if(m==Normalizer.NFC){
+            id.append("C");
+            choice |= C;
+        }else if(m==Normalizer.NFKC){
+            id.append("KC");
+            choice |= KC;
+        }else if(m==Normalizer.NFD){
+            id.append("D");
+            choice |= D;
+        }else if(m==Normalizer.NFKD){
+            id.append("KD");
+            choice |= KD;
+        }
+        
+        /*if (m.compat()) {
+            id.append('K');
+            choice |= KD;
+        }
+        if (m.compose()) {
+            id.append('C');
+            choice |= C;
+        } else {
+            id.append('D');
+        }*/
+        return new NormalizationTransliterator(id.toString(), m, choice, opt);
+    }
+
+    /**
+     * Factory method.
+     */
+    public static NormalizationTransliterator getInstance(Normalizer.Mode m) {
+        return getInstance(m, 0);
+    }
+
+    /**
+     * Constructs a transliterator.
+     */
+    private NormalizationTransliterator(String id, Normalizer.Mode m, int startChoice,
+                                        int opt) {
+        super(id, null);
+        mode = m;
+        options = opt;
+        UNSAFE_START = UNSAFE_STARTS[startChoice];
+        SKIPPABLE = SKIPPABLES[startChoice];
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        int start = offsets.start;
+        int limit = offsets.limit;
+        if (start >= limit) return;
+
+        int overallDelta = 0;
+            
+        // Walk through the string looking for safe characters.
+        // Whenever you hit one normalize from the start of the last
+        // safe character up to just before the next safe character
+        // Also, if you hit the end and we are not in incremental mode,
+        // do to end.
+            
+        // TODO: fix for surrogates
+        // TODO: add QuickCheck, so we rarely convert OK stuff
+            
+        int lastSafe = start; // go back to start in any event
+        int cp;
+        for (int i = start+1; i < limit; i += UTF16.getCharCount(cp)) {
+            cp = text.char32At(i);
+            if (UCharacter.getCombiningClass(cp) == 0 && !UNSAFE_START.contains(cp)) {
+                int delta = convert(text, lastSafe, i, null);
+                i += delta;
+                limit += delta;
+                overallDelta += delta;
+                lastSafe = i;
+            }
+        }
+        if (!isIncremental) {
+            int delta = convert(text, lastSafe, limit, null);
+            overallDelta += delta;
+            lastSafe = limit + delta;
+        } else {
+            // We are incremental, so accept the last characters IF they turn into SKIPPABLEs
+            int delta = convert(text, lastSafe, limit, SKIPPABLE);
+            if (delta != Integer.MIN_VALUE) {
+                overallDelta += delta;
+                lastSafe = limit + delta;
+            }
+        }
+        offsets.contextLimit += overallDelta;
+        offsets.limit += overallDelta;
+        offsets.start = lastSafe;
+    }
+    
+    /**
+     * Converts the range from lastSafe to limit.
+     * @param verify If non-null, check to see that all replacement characters are in it. If not,
+     * abort the conversion and return Integer.MIN_VALUE.
+     * @return return the delta in length (new - old), or Integer.MIN_VALUE if the verify aborted.
+     */
+    int convert(Replaceable text, int lastSafe, int limit, UnicodeSet verify) {        
+        //System.out.println("t: " + com.ibm.icu.impl.Utility.hex(text.toString()) + ", s: " + lastSafe + ", l: " + limit);
+
+        int len = limit - lastSafe;
+        if (buffer.length < len) {
+            buffer = new char[len]; // rare, and we don't care if we grow too large
+        }
+        text.getChars(lastSafe, limit, buffer, 0);
+        String input = new String(buffer, 0, len); // TODO: fix normalizer to take char[]
+        String output = Normalizer.normalize(input, mode);
+        
+        // verify OK, if specified
+        if (verify != null) {
+            boolean skip = !SKIPPABLE.containsAll(output);
+            if (DEBUG) {
+                System.out.println((skip ? "  SKIP: " : "NOSKIP: ") 
+                    + com.ibm.icu.impl.Utility.escape(input) 
+                    + " => " + com.ibm.icu.impl.Utility.escape(output));
+            }
+            if (skip) return Integer.MIN_VALUE;
+        }
+        
+        if (output.equals(input)) {
+            return 0;
+        }
+        text.replace(lastSafe, limit, output);
+        return output.length() - len;
+    }
+    
+    private char buffer[] = new char[30];
+    
+    static {
+        UNSAFE_STARTS[D] = new UnicodeSet("[\u0F73\u0F75\u0F81]", false);
+        UNSAFE_STARTS[C] = new UnicodeSet("[\u09BE\u09D7\u0B3E\u0B56-\u0B57\u0BBE\u0BD7\u0CC2\u0CD5-\u0CD6"
+            + "\u0D3E\u0D57\u0DCF\u0DDF\u0F73\u0F75\u0F81\u102E\u1161-\u1175\u11A8-\u11C2]", false);
+        UNSAFE_STARTS[KD] = new UnicodeSet("[\u0F73\u0F75\u0F81\uFF9E-\uFF9F]", false);
+        UNSAFE_STARTS[KC] = new UnicodeSet("[\u09BE\u09D7\u0B3E\u0B56-\u0B57\u0BBE\u0BD7\u0CC2\u0CD5-\u0CD6"
+            + "\u0D3E\u0D57\u0DCF\u0DDF\u0F73\u0F75\u0F81\u102E\u1161-\u1175\u11A8-\u11C2\u3133\u3135-\u3136"
+            + "\u313A-\u313F\u314F-\u3163\uFF9E-\uFF9F\uFFA3\uFFA5-\uFFA6\uFFAA-\uFFAF\uFFC2-\uFFC7\uFFCA-\uFFCF"
+            + "\uFFD2-\uFFD7\uFFDA-\uFFDC]", false);
+            
+        SKIPPABLES[D] = new UnicodeSet(
+	        "[^\\u00C0-\\u00C5\\u00C7-\\u00CF\\u00D1-\\u00D6\\u00D9-\\u00DD"
+            + "\\u00E0-\\u00E5\\u00E7-\\u00EF\\u00F1-\\u00F6\\u00F9-\\u00FD"
+            + "\\u00FF-\\u010F\\u0112-\\u0125\\u0128-\\u0130\\u0134-\\u0137"
+            + "\\u0139-\\u013E\\u0143-\\u0148\\u014C-\\u0151\\u0154-\\u0165"
+            + "\\u0168-\\u017E\\u01A0-\\u01A1\\u01AF-\\u01B0\\u01CD-\\u01DC"
+            + "\\u01DE-\\u01E3\\u01E6-\\u01F0\\u01F4-\\u01F5\\u01F8-\\u021B"
+            + "\\u021E-\\u021F\\u0226-\\u0233\\u0300-\\u034E\\u0360-\\u036F"
+            + "\\u0374\\u037E\\u0385-\\u038A\\u038C\\u038E-\\u0390\\u03AA-"
+            + "\\u03B0\\u03CA-\\u03CE\\u03D3-\\u03D4\\u0400-\\u0401\\u0403"
+            + "\\u0407\\u040C-\\u040E\\u0419\\u0439\\u0450-\\u0451\\u0453"
+            + "\\u0457\\u045C-\\u045E\\u0476-\\u0477\\u0483-\\u0486\\u04C1-"
+            + "\\u04C2\\u04D0-\\u04D3\\u04D6-\\u04D7\\u04DA-\\u04DF\\u04E2-"
+            + "\\u04E7\\u04EA-\\u04F5\\u04F8-\\u04F9\\u0591-\\u05A1\\u05A3-"
+            + "\\u05B9\\u05BB-\\u05BD\\u05BF\\u05C1-\\u05C2\\u05C4\\u0622-"
+            + "\\u0626\\u064B-\\u0655\\u0670\\u06C0\\u06C2\\u06D3\\u06D6-"
+            + "\\u06DC\\u06DF-\\u06E4\\u06E7-\\u06E8\\u06EA-\\u06ED\\u0711"
+            + "\\u0730-\\u074A\\u0929\\u0931\\u0934\\u093C\\u094D\\u0951-"
+            + "\\u0954\\u0958-\\u095F\\u09BC\\u09CB-\\u09CD\\u09DC-\\u09DD"
+            + "\\u09DF\\u0A33\\u0A36\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC"
+            + "\\u0ACD\\u0B3C\\u0B48\\u0B4B-\\u0B4D\\u0B5C-\\u0B5D\\u0B94"
+            + "\\u0BCA-\\u0BCD\\u0C48\\u0C4D\\u0C55-\\u0C56\\u0CC0\\u0CC7-"
+            + "\\u0CC8\\u0CCA-\\u0CCB\\u0CCD\\u0D4A-\\u0D4D\\u0DCA\\u0DDA"
+            + "\\u0DDC-\\u0DDE\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB8-\\u0EB9"
+            + "\\u0EC8-\\u0ECB\\u0F18-\\u0F19\\u0F35\\u0F37\\u0F39\\u0F43"
+            + "\\u0F4D\\u0F52\\u0F57\\u0F5C\\u0F69\\u0F71-\\u0F76\\u0F78\\u0F7A"
+            + "-\\u0F7D\\u0F80-\\u0F84\\u0F86-\\u0F87\\u0F93\\u0F9D\\u0FA2"
+            + "\\u0FA7\\u0FAC\\u0FB9\\u0FC6\\u1026\\u1037\\u1039\\u1714\\u1734"
+            + "\\u17D2\\u18A9\\u1E00-\\u1E99\\u1E9B\\u1EA0-\\u1EF9\\u1F00-"
+            + "\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-"
+            + "\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4"
+            + "\\u1FB6-\\u1FBC\\u1FBE\\u1FC1-\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-"
+            + "\\u1FDB\\u1FDD-\\u1FEF\\u1FF2-\\u1FF4\\u1FF6-\\u1FFD\\u2000-"
+            + "\\u2001\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20EA\\u2126\\u212A-"
+            + "\\u212B\\u219A-\\u219B\\u21AE\\u21CD-\\u21CF\\u2204\\u2209"
+            + "\\u220C\\u2224\\u2226\\u2241\\u2244\\u2247\\u2249\\u2260\\u2262"
+            + "\\u226D-\\u2271\\u2274-\\u2275\\u2278-\\u2279\\u2280-\\u2281"
+            + "\\u2284-\\u2285\\u2288-\\u2289\\u22AC-\\u22AF\\u22E0-\\u22E3"
+            + "\\u22EA-\\u22ED\\u2329-\\u232A\\u2ADC\\u302A-\\u302F\\u304C"
+            + "\\u304E\\u3050\\u3052\\u3054\\u3056\\u3058\\u305A\\u305C\\u305E"
+            + "\\u3060\\u3062\\u3065\\u3067\\u3069\\u3070-\\u3071\\u3073-"
+            + "\\u3074\\u3076-\\u3077\\u3079-\\u307A\\u307C-\\u307D\\u3094"
+            + "\\u3099-\\u309A\\u309E\\u30AC\\u30AE\\u30B0\\u30B2\\u30B4\\u30B6"
+            + "\\u30B8\\u30BA\\u30BC\\u30BE\\u30C0\\u30C2\\u30C5\\u30C7\\u30C9"
+            + "\\u30D0-\\u30D1\\u30D3-\\u30D4\\u30D6-\\u30D7\\u30D9-\\u30DA"
+            + "\\u30DC-\\u30DD\\u30F4\\u30F7-\\u30FA\\u30FE\\uAC00-\\uD7A3"
+            + "\\uF900-\\uFA0D\\uFA10\\uFA12\\uFA15-\\uFA1E\\uFA20\\uFA22"
+            + "\\uFA25-\\uFA26\\uFA2A-\\uFA2D\\uFA30-\\uFA6A\\uFB1D-\\uFB1F"
+            + "\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40-\\uFB41\\uFB43-"
+            + "\\uFB44\\uFB46-\\uFB4E\\uFE20-\\uFE23\\U0001D15E-\\U0001D169"
+            + "\\U0001D16D-\\U0001D172\\U0001D17B-\\U0001D182\\U0001D185-"
+            + "\\U0001D18B\\U0001D1AA-\\U0001D1AD\\U0001D1BB-\\U0001D1C0\\U0002"
+            + "F800-\\U0002FA1D]", false);
+/*Unicode: 
+      "[^À-ÅÇ-ÏÑ-ÖÙ-Ýà-åç-ïñ-öù-ýÿ-??-??-??-??-??-??-??-??-ž?-??-??-??-"
+    + "??-??-??-??-??-??-??-????-???-??-??-??-??-????-????-????-??-??-?"
+    + "?-??-??-??-??-??-??-??-??-??-???-???-??-??????-??-??-??-???-????"
+    + "???-??-???-??-???????-???????-??-???-????-???-??-???-????-??-??-"
+    + "??-??-??-???????????-???-??-??-????????????????-???-??-??-??-??-"
+    + "??-?????-??-??-???-??-??-??-??-??-?\?-\??-???-???-??-???-???????"
+    + "??????-??-??-??-??-??-??-??-??-??-???-?????????????????-??-??-??"
+    + "-??-???-??????????????????-??-??-??-??-???-???-??-????-????-??-?"
+    + "?-??-??-??-???-??-??-??-??-??-??-??-??-??-??-?]"*/
+
+        SKIPPABLES[C] = new UnicodeSet(
+	        "[^<->A-PR-Za-pr-z\\u00A8\\u00C0-\\u00CF\\u00D1-\\u00D6\\u00D8-"
+            + "\\u00DD\\u00E0-\\u00EF\\u00F1-\\u00F6\\u00F8-\\u00FD\\u00FF-"
+            + "\\u0103\\u0106-\\u010F\\u0112-\\u0117\\u011A-\\u0121\\u0124-"
+            + "\\u0125\\u0128-\\u012D\\u0130\\u0139-\\u013A\\u013D-\\u013E"
+            + "\\u0143-\\u0144\\u0147-\\u0148\\u014C-\\u0151\\u0154-\\u0155"
+            + "\\u0158-\\u015D\\u0160-\\u0161\\u0164-\\u0165\\u0168-\\u0171"
+            + "\\u0174-\\u017F\\u01A0-\\u01A1\\u01AF-\\u01B0\\u01B7\\u01CD-"
+            + "\\u01DC\\u01DE-\\u01E1\\u01E6-\\u01EB\\u01F4-\\u01F5\\u01F8-"
+            + "\\u01FB\\u0200-\\u021B\\u021E-\\u021F\\u0226-\\u0233\\u0292"
+            + "\\u0300-\\u034E\\u0360-\\u036F\\u0374\\u037E\\u0387\\u0391"
+            + "\\u0395\\u0397\\u0399\\u039F\\u03A1\\u03A5\\u03A9\\u03AC\\u03AE"
+            + "\\u03B1\\u03B5\\u03B7\\u03B9\\u03BF\\u03C1\\u03C5\\u03C9-\\u03CB"
+            + "\\u03CE\\u03D2\\u0406\\u0410\\u0413\\u0415-\\u0418\\u041A\\u041E"
+            + "\\u0423\\u0427\\u042B\\u042D\\u0430\\u0433\\u0435-\\u0438\\u043A"
+            + "\\u043E\\u0443\\u0447\\u044B\\u044D\\u0456\\u0474-\\u0475\\u0483"
+            + "-\\u0486\\u04D8-\\u04D9\\u04E8-\\u04E9\\u0591-\\u05A1\\u05A3-"
+            + "\\u05B9\\u05BB-\\u05BD\\u05BF\\u05C1-\\u05C2\\u05C4\\u0622-"
+            + "\\u0623\\u0627\\u0648\\u064A-\\u0655\\u0670\\u06C1\\u06D2\\u06D5"
+            + "-\\u06DC\\u06DF-\\u06E4\\u06E7-\\u06E8\\u06EA-\\u06ED\\u0711"
+            + "\\u0730-\\u074A\\u0928\\u0930\\u0933\\u093C\\u094D\\u0951-"
+            + "\\u0954\\u0958-\\u095F\\u09BC\\u09BE\\u09C7\\u09CD\\u09D7\\u09DC"
+            + "-\\u09DD\\u09DF\\u0A33\\u0A36\\u0A3C\\u0A4D\\u0A59-\\u0A5B"
+            + "\\u0A5E\\u0ABC\\u0ACD\\u0B3C\\u0B3E\\u0B47\\u0B4D\\u0B56-\\u0B57"
+            + "\\u0B5C-\\u0B5D\\u0B92\\u0BBE\\u0BC6-\\u0BC7\\u0BCD\\u0BD7"
+            + "\\u0C46\\u0C4D\\u0C55-\\u0C56\\u0CBF\\u0CC2\\u0CC6\\u0CCA\\u0CCD"
+            + "\\u0CD5-\\u0CD6\\u0D3E\\u0D46-\\u0D47\\u0D4D\\u0D57\\u0DCA"
+            + "\\u0DCF\\u0DD9\\u0DDC\\u0DDF\\u0E38-\\u0E3A\\u0E48-\\u0E4B"
+            + "\\u0EB8-\\u0EB9\\u0EC8-\\u0ECB\\u0F18-\\u0F19\\u0F35\\u0F37"
+            + "\\u0F39\\u0F43\\u0F4D\\u0F52\\u0F57\\u0F5C\\u0F69\\u0F71-\\u0F76"
+            + "\\u0F78\\u0F7A-\\u0F7D\\u0F80-\\u0F84\\u0F86-\\u0F87\\u0F93"
+            + "\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9\\u0FC6\\u1025\\u102E\\u1037"
+            + "\\u1039\\u1100-\\u1112\\u1161-\\u1175\\u11A8-\\u11C2\\u1714"
+            + "\\u1734\\u17D2\\u18A9\\u1E00-\\u1E03\\u1E0A-\\u1E0F\\u1E12-"
+            + "\\u1E1B\\u1E20-\\u1E27\\u1E2A-\\u1E41\\u1E44-\\u1E53\\u1E58-"
+            + "\\u1E7D\\u1E80-\\u1E87\\u1E8E-\\u1E91\\u1E96-\\u1E99\\u1EA0-"
+            + "\\u1EF3\\u1EF6-\\u1EF9\\u1F00-\\u1F11\\u1F18-\\u1F19\\u1F20-"
+            + "\\u1F31\\u1F38-\\u1F39\\u1F40-\\u1F41\\u1F48-\\u1F49\\u1F50-"
+            + "\\u1F51\\u1F59\\u1F60-\\u1F71\\u1F73-\\u1F75\\u1F77\\u1F79"
+            + "\\u1F7B-\\u1F7D\\u1F80-\\u1F81\\u1F88-\\u1F89\\u1F90-\\u1F91"
+            + "\\u1F98-\\u1F99\\u1FA0-\\u1FA1\\u1FA8-\\u1FA9\\u1FB3\\u1FB6"
+            + "\\u1FBB-\\u1FBC\\u1FBE-\\u1FBF\\u1FC3\\u1FC6\\u1FC9\\u1FCB-"
+            + "\\u1FCC\\u1FD3\\u1FDB\\u1FE3\\u1FEB\\u1FEE-\\u1FEF\\u1FF3\\u1FF6"
+            + "\\u1FF9\\u1FFB-\\u1FFE\\u2000-\\u2001\\u20D0-\\u20DC\\u20E1"
+            + "\\u20E5-\\u20EA\\u2126\\u212A-\\u212B\\u2190\\u2192\\u2194"
+            + "\\u21D0\\u21D2\\u21D4\\u2203\\u2208\\u220B\\u2223\\u2225\\u223C"
+            + "\\u2243\\u2245\\u2248\\u224D\\u2261\\u2264-\\u2265\\u2272-"
+            + "\\u2273\\u2276-\\u2277\\u227A-\\u227D\\u2282-\\u2283\\u2286-"
+            + "\\u2287\\u2291-\\u2292\\u22A2\\u22A8-\\u22A9\\u22AB\\u22B2-"
+            + "\\u22B5\\u2329-\\u232A\\u2ADC\\u302A-\\u302F\\u3046\\u304B"
+            + "\\u304D\\u304F\\u3051\\u3053\\u3055\\u3057\\u3059\\u305B\\u305D"
+            + "\\u305F\\u3061\\u3064\\u3066\\u3068\\u306F\\u3072\\u3075\\u3078"
+            + "\\u307B\\u3099-\\u309A\\u309D\\u30A6\\u30AB\\u30AD\\u30AF\\u30B1"
+            + "\\u30B3\\u30B5\\u30B7\\u30B9\\u30BB\\u30BD\\u30BF\\u30C1\\u30C4"
+            + "\\u30C6\\u30C8\\u30CF\\u30D2\\u30D5\\u30D8\\u30DB\\u30EF-\\u30F2"
+            + "\\u30FD\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4"
+            + "\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0"
+            + "\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC"
+            + "\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8"
+            + "\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4"
+            + "\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0"
+            + "\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC"
+            + "\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8"
+            + "\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4"
+            + "\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0"
+            + "\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C"
+            + "\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798"
+            + "\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894"
+            + "\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990"
+            + "\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C"
+            + "\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88"
+            + "\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84"
+            + "\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80"
+            + "\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C"
+            + "\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78"
+            + "\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074"
+            + "\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170"
+            + "\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C"
+            + "\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368"
+            + "\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464"
+            + "\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560"
+            + "\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C"
+            + "\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758"
+            + "\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854"
+            + "\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950"
+            + "\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C"
+            + "\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48"
+            + "\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44"
+            + "\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40"
+            + "\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C"
+            + "\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38"
+            + "\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034"
+            + "\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130"
+            + "\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C"
+            + "\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328"
+            + "\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424"
+            + "\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520"
+            + "\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C"
+            + "\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718"
+            + "\\uD734\\uD750\\uD76C\\uD788\\uF900-\\uFA0D\\uFA10\\uFA12\\uFA15"
+            + "-\\uFA1E\\uFA20\\uFA22\\uFA25-\\uFA26\\uFA2A-\\uFA2D\\uFA30-"
+            + "\\uFA6A\\uFB1D-\\uFB1F\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E"
+            + "\\uFB40-\\uFB41\\uFB43-\\uFB44\\uFB46-\\uFB4E\\uFE20-\\uFE23"
+            + "\\U0001D15E-\\U0001D169\\U0001D16D-\\U0001D172\\U0001D17B-"
+            + "\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-\\U0001D1AD\\U0001"
+            + "D1BB-\\U0001D1C0\\U0002F800-\\U0002FA1D]", false);
+/*Unicode: 
+      "[^<->A-PR-Za-pr-z¨À-ÏÑ-ÖØ-Ýà-ïñ-öø-ýÿ-??-??-??-??-??-???-??-??-?"
+    + "?-??-??-??-?Š-š?-??-??-??-??-???-??-??-??-??-??-??-??-???-??-???"
+    + "???????????????????-???????-??????????-?????????-??-??-??-??-??-"
+    + "??-???-???-????-?????-??-??-??-???-???????-??-???????-???????-??"
+    + "???????-??-????-??????-???????-???-?????????-??-??-??-??-???????"
+    + "????-???-??-??-?????????????-??-??-??????-??-??-??-??-??-??-??-?"
+    + "?-??-??-??-??-??-??-??-??-??-??-???-??-????-??-??-??-??-??-??-??"
+    + "??-??-?????-??????-?????-?\?-\??-???-???-???????????????????-??-"
+    + "??-??-??-??-??-???-???-??-???-???????????????????????-??????????"
+    + "??????????????-?????????????????????????????????????????????????"
+    + "????????????????????????????????????????????????????????????????"
+    + "????????????????????????????????????????????????????????????????"
+    + "????????????????????????????????????????????????????????????????"
+    + "????????????????????????????????????????????????????????????????"
+    + "????????????????????????????????????????????????????????????????"
+    + "?????????????????????????????????-????-????-??-??-??-??-??-???-?"
+    + "?-??-??-??-??-??-??-??-??-??-?]"*/
+        SKIPPABLES[KD] = new UnicodeSet(
+	        "[^\\u00A0\\u00A8\\u00AA\\u00AF\\u00B2-\\u00B5\\u00B8-\\u00BA"
+            + "\\u00BC-\\u00BE\\u00C0-\\u00C5\\u00C7-\\u00CF\\u00D1-\\u00D6"
+            + "\\u00D9-\\u00DD\\u00E0-\\u00E5\\u00E7-\\u00EF\\u00F1-\\u00F6"
+            + "\\u00F9-\\u00FD\\u00FF-\\u010F\\u0112-\\u0125\\u0128-\\u0130"
+            + "\\u0132-\\u0137\\u0139-\\u0140\\u0143-\\u0149\\u014C-\\u0151"
+            + "\\u0154-\\u0165\\u0168-\\u017F\\u01A0-\\u01A1\\u01AF-\\u01B0"
+            + "\\u01C4-\\u01DC\\u01DE-\\u01E3\\u01E6-\\u01F5\\u01F8-\\u021B"
+            + "\\u021E-\\u021F\\u0226-\\u0233\\u02B0-\\u02B8\\u02D8-\\u02DD"
+            + "\\u02E0-\\u02E4\\u0300-\\u034E\\u0360-\\u036F\\u0374\\u037A"
+            + "\\u037E\\u0384-\\u038A\\u038C\\u038E-\\u0390\\u03AA-\\u03B0"
+            + "\\u03CA-\\u03CE\\u03D0-\\u03D6\\u03F0-\\u03F2\\u03F4-\\u03F5"
+            + "\\u0400-\\u0401\\u0403\\u0407\\u040C-\\u040E\\u0419\\u0439"
+            + "\\u0450-\\u0451\\u0453\\u0457\\u045C-\\u045E\\u0476-\\u0477"
+            + "\\u0483-\\u0486\\u04C1-\\u04C2\\u04D0-\\u04D3\\u04D6-\\u04D7"
+            + "\\u04DA-\\u04DF\\u04E2-\\u04E7\\u04EA-\\u04F5\\u04F8-\\u04F9"
+            + "\\u0587\\u0591-\\u05A1\\u05A3-\\u05B9\\u05BB-\\u05BD\\u05BF"
+            + "\\u05C1-\\u05C2\\u05C4\\u0622-\\u0626\\u064B-\\u0655\\u0670"
+            + "\\u0675-\\u0678\\u06C0\\u06C2\\u06D3\\u06D6-\\u06DC\\u06DF-"
+            + "\\u06E4\\u06E7-\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A"
+            + "\\u0929\\u0931\\u0934\\u093C\\u094D\\u0951-\\u0954\\u0958-"
+            + "\\u095F\\u09BC\\u09CB-\\u09CD\\u09DC-\\u09DD\\u09DF\\u0A33"
+            + "\\u0A36\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD\\u0B3C"
+            + "\\u0B48\\u0B4B-\\u0B4D\\u0B5C-\\u0B5D\\u0B94\\u0BCA-\\u0BCD"
+            + "\\u0C48\\u0C4D\\u0C55-\\u0C56\\u0CC0\\u0CC7-\\u0CC8\\u0CCA-"
+            + "\\u0CCB\\u0CCD\\u0D4A-\\u0D4D\\u0DCA\\u0DDA\\u0DDC-\\u0DDE"
+            + "\\u0E33\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB3\\u0EB8-\\u0EB9"
+            + "\\u0EC8-\\u0ECB\\u0EDC-\\u0EDD\\u0F0C\\u0F18-\\u0F19\\u0F35"
+            + "\\u0F37\\u0F39\\u0F43\\u0F4D\\u0F52\\u0F57\\u0F5C\\u0F69\\u0F71-"
+            + "\\u0F7D\\u0F80-\\u0F84\\u0F86-\\u0F87\\u0F93\\u0F9D\\u0FA2"
+            + "\\u0FA7\\u0FAC\\u0FB9\\u0FC6\\u1026\\u1037\\u1039\\u1714\\u1734"
+            + "\\u17D2\\u18A9\\u1E00-\\u1E9B\\u1EA0-\\u1EF9\\u1F00-\\u1F15"
+            + "\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57"
+            + "\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-"
+            + "\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-\\u1FEF\\u1FF2-"
+            + "\\u1FF4\\u1FF6-\\u1FFE\\u2000-\\u200A\\u2011\\u2017\\u2024-"
+            + "\\u2026\\u202F\\u2033-\\u2034\\u2036-\\u2037\\u203C\\u203E"
+            + "\\u2047-\\u2049\\u2057\\u205F\\u2070-\\u2071\\u2074-\\u208E"
+            + "\\u20A8\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20EA\\u2100-\\u2103"
+            + "\\u2105-\\u2107\\u2109-\\u2113\\u2115-\\u2116\\u2119-\\u211D"
+            + "\\u2120-\\u2122\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-"
+            + "\\u2131\\u2133-\\u2139\\u213D-\\u2140\\u2145-\\u2149\\u2153-"
+            + "\\u217F\\u219A-\\u219B\\u21AE\\u21CD-\\u21CF\\u2204\\u2209"
+            + "\\u220C\\u2224\\u2226\\u222C-\\u222D\\u222F-\\u2230\\u2241"
+            + "\\u2244\\u2247\\u2249\\u2260\\u2262\\u226D-\\u2271\\u2274-"
+            + "\\u2275\\u2278-\\u2279\\u2280-\\u2281\\u2284-\\u2285\\u2288-"
+            + "\\u2289\\u22AC-\\u22AF\\u22E0-\\u22E3\\u22EA-\\u22ED\\u2329-"
+            + "\\u232A\\u2460-\\u24EA\\u2A0C\\u2A74-\\u2A76\\u2ADC\\u2E9F"
+            + "\\u2EF3\\u2F00-\\u2FD5\\u3000\\u302A-\\u302F\\u3036\\u3038-"
+            + "\\u303A\\u304C\\u304E\\u3050\\u3052\\u3054\\u3056\\u3058\\u305A"
+            + "\\u305C\\u305E\\u3060\\u3062\\u3065\\u3067\\u3069\\u3070-\\u3071"
+            + "\\u3073-\\u3074\\u3076-\\u3077\\u3079-\\u307A\\u307C-\\u307D"
+            + "\\u3094\\u3099-\\u309C\\u309E-\\u309F\\u30AC\\u30AE\\u30B0"
+            + "\\u30B2\\u30B4\\u30B6\\u30B8\\u30BA\\u30BC\\u30BE\\u30C0\\u30C2"
+            + "\\u30C5\\u30C7\\u30C9\\u30D0-\\u30D1\\u30D3-\\u30D4\\u30D6-"
+            + "\\u30D7\\u30D9-\\u30DA\\u30DC-\\u30DD\\u30F4\\u30F7-\\u30FA"
+            + "\\u30FE-\\u30FF\\u3131-\\u318E\\u3192-\\u319F\\u3200-\\u321C"
+            + "\\u3220-\\u3243\\u3251-\\u327B\\u3280-\\u32CB\\u32D0-\\u32FE"
+            + "\\u3300-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\uAC00-\\uD7A3"
+            + "\\uF900-\\uFA0D\\uFA10\\uFA12\\uFA15-\\uFA1E\\uFA20\\uFA22"
+            + "\\uFA25-\\uFA26\\uFA2A-\\uFA2D\\uFA30-\\uFA6A\\uFB00-\\uFB06"
+            + "\\uFB13-\\uFB17\\uFB1D-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40-"
+            + "\\uFB41\\uFB43-\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-"
+            + "\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE20-\\uFE23\\uFE30-"
+            + "\\uFE44\\uFE49-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFE70-"
+            + "\\uFE72\\uFE74\\uFE76-\\uFEFC\\uFF01-\\uFFBE\\uFFC2-\\uFFC7"
+            + "\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6"
+            + "\\uFFE8-\\uFFEE\\U0001D15E-\\U0001D169\\U0001D16D-\\U0001D172"
+            + "\\U0001D17B-\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-"
+            + "\\U0001D1AD\\U0001D1BB-\\U0001D1C0\\U0001D400-\\U0001D454\\U0001"
+            + "D456-\\U0001D49C\\U0001D49E-\\U0001D49F\\U0001D4A2\\U0001D4A5-"
+            + "\\U0001D4A6\\U0001D4A9-\\U0001D4AC\\U0001D4AE-\\U0001D4B9\\U0001"
+            + "D4BB\\U0001D4BD-\\U0001D4C0\\U0001D4C2-\\U0001D4C3\\U0001D4C5-"
+            + "\\U0001D505\\U0001D507-\\U0001D50A\\U0001D50D-\\U0001D514\\U0001"
+            + "D516-\\U0001D51C\\U0001D51E-\\U0001D539\\U0001D53B-\\U0001D53E"
+            + "\\U0001D540-\\U0001D544\\U0001D546\\U0001D54A-\\U0001D550\\U0001"
+            + "D552-\\U0001D6A3\\U0001D6A8-\\U0001D7C9\\U0001D7CE-\\U0001D7FF"
+            + "\\U0002F800-\\U0002FA1D]", false);
+/*Unicode: 
+      "[^ ¨ª¯²-µ¸-º¼-¾À-ÅÇ-ÏÑ-ÖÙ-Ýà-åç-ïñ-öù-ýÿ-??-??-??-??-??-??-??-??"
+    + "-??-??-??-??-??-??-??-??-??-??-??-??-??-?????-???-??-??-??-??-??"
+    + "-??-????-????-????-??-??-??-??-??-??-??-??-??-???-??-??-???-???-"
+    + "??-???-?????-??-??-??-???-???????-??-???-??-???????-???????-??-?"
+    + "??-????-???-??-???-????-???-??-???-??-??-???-???????????-??-??-?"
+    + "???????????????-??-??-??-??-??-??-?????-??-??-??-??-??-??-??-?"
+    + "\?-\????-…??-??-????-??\??-??-???-???-??-??-??-??-??-??-™????-??"
+    + "-??-??-??-??-??-???-???????-??-????????-??-??-??-??-??-??-??-??-"
+    + "??-??-???-?????-?\??-???-?????????????????-??-??-??-??-???-??-??"
+    + "???????????????-??-??-??-??-???-??-??-??-??-??-??-??-??-??-??-??"
+    + "-??-??-????-????-??-??-??-??-??-??-???-??-??-??-??-??-??-??-??-?"
+    + "?-??-??-??-???-??-??-??-??-??-??-??-??-??-??-??-??-??"
+    + "-??-??-??-???-??-??-???-??-??-??-??-??"
+    + "-??-??-??-???-??-??-??-??-?]"*/
+
+        SKIPPABLES[KC] = new UnicodeSet(
+	        "[^<->A-PR-Za-pr-z\\u00A0\\u00A8\\u00AA\\u00AF\\u00B2-\\u00B5"
+            + "\\u00B8-\\u00BA\\u00BC-\\u00BE\\u00C0-\\u00CF\\u00D1-\\u00D6"
+            + "\\u00D8-\\u00DD\\u00E0-\\u00EF\\u00F1-\\u00F6\\u00F8-\\u00FD"
+            + "\\u00FF-\\u0103\\u0106-\\u010F\\u0112-\\u0117\\u011A-\\u0121"
+            + "\\u0124-\\u0125\\u0128-\\u012D\\u0130\\u0132-\\u0133\\u0139-"
+            + "\\u013A\\u013D-\\u0140\\u0143-\\u0144\\u0147-\\u0149\\u014C-"
+            + "\\u0151\\u0154-\\u0155\\u0158-\\u015D\\u0160-\\u0161\\u0164-"
+            + "\\u0165\\u0168-\\u0171\\u0174-\\u017F\\u01A0-\\u01A1\\u01AF-"
+            + "\\u01B0\\u01B7\\u01C4-\\u01DC\\u01DE-\\u01E1\\u01E6-\\u01EB"
+            + "\\u01F1-\\u01F5\\u01F8-\\u01FB\\u0200-\\u021B\\u021E-\\u021F"
+            + "\\u0226-\\u0233\\u0292\\u02B0-\\u02B8\\u02D8-\\u02DD\\u02E0-"
+            + "\\u02E4\\u0300-\\u034E\\u0360-\\u036F\\u0374\\u037A\\u037E"
+            + "\\u0384-\\u0385\\u0387\\u0391\\u0395\\u0397\\u0399\\u039F\\u03A1"
+            + "\\u03A5\\u03A9\\u03AC\\u03AE\\u03B1\\u03B5\\u03B7\\u03B9\\u03BF"
+            + "\\u03C1\\u03C5\\u03C9-\\u03CB\\u03CE\\u03D0-\\u03D6\\u03F0-"
+            + "\\u03F2\\u03F4-\\u03F5\\u0406\\u0410\\u0413\\u0415-\\u0418"
+            + "\\u041A\\u041E\\u0423\\u0427\\u042B\\u042D\\u0430\\u0433\\u0435-"
+            + "\\u0438\\u043A\\u043E\\u0443\\u0447\\u044B\\u044D\\u0456\\u0474-"
+            + "\\u0475\\u0483-\\u0486\\u04D8-\\u04D9\\u04E8-\\u04E9\\u0587"
+            + "\\u0591-\\u05A1\\u05A3-\\u05B9\\u05BB-\\u05BD\\u05BF\\u05C1-"
+            + "\\u05C2\\u05C4\\u0622-\\u0623\\u0627\\u0648\\u064A-\\u0655"
+            + "\\u0670\\u0675-\\u0678\\u06C1\\u06D2\\u06D5-\\u06DC\\u06DF-"
+            + "\\u06E4\\u06E7-\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A"
+            + "\\u0928\\u0930\\u0933\\u093C\\u094D\\u0951-\\u0954\\u0958-"
+            + "\\u095F\\u09BC\\u09BE\\u09C7\\u09CD\\u09D7\\u09DC-\\u09DD\\u09DF"
+            + "\\u0A33\\u0A36\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD"
+            + "\\u0B3C\\u0B3E\\u0B47\\u0B4D\\u0B56-\\u0B57\\u0B5C-\\u0B5D"
+            + "\\u0B92\\u0BBE\\u0BC6-\\u0BC7\\u0BCD\\u0BD7\\u0C46\\u0C4D\\u0C55"
+            + "-\\u0C56\\u0CBF\\u0CC2\\u0CC6\\u0CCA\\u0CCD\\u0CD5-\\u0CD6"
+            + "\\u0D3E\\u0D46-\\u0D47\\u0D4D\\u0D57\\u0DCA\\u0DCF\\u0DD9\\u0DDC"
+            + "\\u0DDF\\u0E33\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB3\\u0EB8-"
+            + "\\u0EB9\\u0EC8-\\u0ECB\\u0EDC-\\u0EDD\\u0F0C\\u0F18-\\u0F19"
+            + "\\u0F35\\u0F37\\u0F39\\u0F43\\u0F4D\\u0F52\\u0F57\\u0F5C\\u0F69"
+            + "\\u0F71-\\u0F7D\\u0F80-\\u0F84\\u0F86-\\u0F87\\u0F93\\u0F9D"
+            + "\\u0FA2\\u0FA7\\u0FAC\\u0FB9\\u0FC6\\u1025\\u102E\\u1037\\u1039"
+            + "\\u1100-\\u1112\\u1161-\\u1175\\u11A8-\\u11C2\\u1714\\u1734"
+            + "\\u17D2\\u18A9\\u1E00-\\u1E03\\u1E0A-\\u1E0F\\u1E12-\\u1E1B"
+            + "\\u1E20-\\u1E27\\u1E2A-\\u1E41\\u1E44-\\u1E53\\u1E58-\\u1E7D"
+            + "\\u1E80-\\u1E87\\u1E8E-\\u1E91\\u1E96-\\u1E9B\\u1EA0-\\u1EF3"
+            + "\\u1EF6-\\u1EF9\\u1F00-\\u1F11\\u1F18-\\u1F19\\u1F20-\\u1F31"
+            + "\\u1F38-\\u1F39\\u1F40-\\u1F41\\u1F48-\\u1F49\\u1F50-\\u1F51"
+            + "\\u1F59\\u1F60-\\u1F71\\u1F73-\\u1F75\\u1F77\\u1F79\\u1F7B-"
+            + "\\u1F7D\\u1F80-\\u1F81\\u1F88-\\u1F89\\u1F90-\\u1F91\\u1F98-"
+            + "\\u1F99\\u1FA0-\\u1FA1\\u1FA8-\\u1FA9\\u1FB3\\u1FB6\\u1FBB-"
+            + "\\u1FC1\\u1FC3\\u1FC6\\u1FC9\\u1FCB-\\u1FCF\\u1FD3\\u1FDB\\u1FDD"
+            + "-\\u1FDF\\u1FE3\\u1FEB\\u1FED-\\u1FEF\\u1FF3\\u1FF6\\u1FF9"
+            + "\\u1FFB-\\u1FFE\\u2000-\\u200A\\u2011\\u2017\\u2024-\\u2026"
+            + "\\u202F\\u2033-\\u2034\\u2036-\\u2037\\u203C\\u203E\\u2047-"
+            + "\\u2049\\u2057\\u205F\\u2070-\\u2071\\u2074-\\u208E\\u20A8"
+            + "\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20EA\\u2100-\\u2103\\u2105-"
+            + "\\u2107\\u2109-\\u2113\\u2115-\\u2116\\u2119-\\u211D\\u2120-"
+            + "\\u2122\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2131"
+            + "\\u2133-\\u2139\\u213D-\\u2140\\u2145-\\u2149\\u2153-\\u217F"
+            + "\\u2190\\u2192\\u2194\\u21D0\\u21D2\\u21D4\\u2203\\u2208\\u220B"
+            + "\\u2223\\u2225\\u222C-\\u222D\\u222F-\\u2230\\u223C\\u2243"
+            + "\\u2245\\u2248\\u224D\\u2261\\u2264-\\u2265\\u2272-\\u2273"
+            + "\\u2276-\\u2277\\u227A-\\u227D\\u2282-\\u2283\\u2286-\\u2287"
+            + "\\u2291-\\u2292\\u22A2\\u22A8-\\u22A9\\u22AB\\u22B2-\\u22B5"
+            + "\\u2329-\\u232A\\u2460-\\u24EA\\u2A0C\\u2A74-\\u2A76\\u2ADC"
+            + "\\u2E9F\\u2EF3\\u2F00-\\u2FD5\\u3000\\u302A-\\u302F\\u3036"
+            + "\\u3038-\\u303A\\u3046\\u304B\\u304D\\u304F\\u3051\\u3053\\u3055"
+            + "\\u3057\\u3059\\u305B\\u305D\\u305F\\u3061\\u3064\\u3066\\u3068"
+            + "\\u306F\\u3072\\u3075\\u3078\\u307B\\u3099-\\u309D\\u309F\\u30A6"
+            + "\\u30AB\\u30AD\\u30AF\\u30B1\\u30B3\\u30B5\\u30B7\\u30B9\\u30BB"
+            + "\\u30BD\\u30BF\\u30C1\\u30C4\\u30C6\\u30C8\\u30CF\\u30D2\\u30D5"
+            + "\\u30D8\\u30DB\\u30EF-\\u30F2\\u30FD\\u30FF\\u3131-\\u318E"
+            + "\\u3192-\\u319F\\u3200-\\u321C\\u3220-\\u3243\\u3251-\\u327B"
+            + "\\u3280-\\u32CB\\u32D0-\\u32FE\\u3300-\\u3376\\u337B-\\u33DD"
+            + "\\u33E0-\\u33FE\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8"
+            + "\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4"
+            + "\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0"
+            + "\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C"
+            + "\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098"
+            + "\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194"
+            + "\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290"
+            + "\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C"
+            + "\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488"
+            + "\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584"
+            + "\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680"
+            + "\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C"
+            + "\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878"
+            + "\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974"
+            + "\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70"
+            + "\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C"
+            + "\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68"
+            + "\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64"
+            + "\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60"
+            + "\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C"
+            + "\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058"
+            + "\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154"
+            + "\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250"
+            + "\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C"
+            + "\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448"
+            + "\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544"
+            + "\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640"
+            + "\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C"
+            + "\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838"
+            + "\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934"
+            + "\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30"
+            + "\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C"
+            + "\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28"
+            + "\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24"
+            + "\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20"
+            + "\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C"
+            + "\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018"
+            + "\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114"
+            + "\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210"
+            + "\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C"
+            + "\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408"
+            + "\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504"
+            + "\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600"
+            + "\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC"
+            + "\\uD718\\uD734\\uD750\\uD76C\\uD788\\uF900-\\uFA0D\\uFA10\\uFA12"
+            + "\\uFA15-\\uFA1E\\uFA20\\uFA22\\uFA25-\\uFA26\\uFA2A-\\uFA2D"
+            + "\\uFA30-\\uFA6A\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB36"
+            + "\\uFB38-\\uFB3C\\uFB3E\\uFB40-\\uFB41\\uFB43-\\uFB44\\uFB46-"
+            + "\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-"
+            + "\\uFDFC\\uFE20-\\uFE23\\uFE30-\\uFE44\\uFE49-\\uFE52\\uFE54-"
+            + "\\uFE66\\uFE68-\\uFE6B\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC"
+            + "\\uFF01-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7"
+            + "\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\U0001D15E-\\U0001"
+            + "D169\\U0001D16D-\\U0001D172\\U0001D17B-\\U0001D182\\U0001D185-"
+            + "\\U0001D18B\\U0001D1AA-\\U0001D1AD\\U0001D1BB-\\U0001D1C0\\U0001"
+            + "D400-\\U0001D454\\U0001D456-\\U0001D49C\\U0001D49E-\\U0001D49F"
+            + "\\U0001D4A2\\U0001D4A5-\\U0001D4A6\\U0001D4A9-\\U0001D4AC\\U0001"
+            + "D4AE-\\U0001D4B9\\U0001D4BB\\U0001D4BD-\\U0001D4C0\\U0001D4C2-"
+            + "\\U0001D4C3\\U0001D4C5-\\U0001D505\\U0001D507-\\U0001D50A\\U0001"
+            + "D50D-\\U0001D514\\U0001D516-\\U0001D51C\\U0001D51E-\\U0001D539"
+            + "\\U0001D53B-\\U0001D53E\\U0001D540-\\U0001D544\\U0001D546\\U0001"
+            + "D54A-\\U0001D550\\U0001D552-\\U0001D6A3\\U0001D6A8-\\U0001D7C9"
+            + "\\U0001D7CE-\\U0001D7FF\\U0002F800-\\U0002FA1D]", false);
+/*Unicode: 
+      "[^<->A-PR-Za-pr-z ¨ª¯²-µ¸-º¼-¾À-ÏÑ-ÖØ-Ýà-ïñ-öø-ýÿ-??-??-??-??-??"
+    + "-???-??-??-??-??-??-??-??-?Š-š?-??-??-??-??-???-??-??-??-??-??-?"
+    + "?-??-???-??-??-??-??-?????-????????????????????-???-??-??-?????-"
+    + "??????????-?????????-??-??-??-???-??-??-???-???-????-???-????-??"
+    + "-??-??-???-???????-??-???????-???????-?????????-??-????-??????-?"
+    + "??????-???-??????????-??-???-??-??-???-???????????-??-??-???????"
+    + "??????-??-??-??????-??-??-??-??-??-??-??-??-??-??-??-??-??-??-??"
+    + "-??-??-??-???-??-????-??-??-??-??-??-??-????-?????-????-????-???"
+    + "??-?\?-\????-…??-??-????-??\??-??-???-???-??-??-??-??-??-??-™???"
+    + "?-??-??-??-??-??-?????????????-??-????????-??-??-??-??-??-??-???"
+    + "-???-??-??-???-?????-?\??-???-???????????????????????-??????????"
+    + "??????????????-????-??-??-??-??-??-??-??-??-??-?????????????????"
+    + "????????????????????????????????????????????????????????????????"
+    + "????????????????????????????????????????????????????????????????"
+    + "????????????????????????????????????????????????????????????????"
+    + "????????????????????????????????????????????????????????????????"
+    + "????????????????????????????????????????????????????????????????"
+    + "????????????????????????????????????????????????????????????????"
+    + "-????-????-??-??-??-??-??-??-???-??-??-??-??-??-??-??-??-??-??-?"
+    + "?-??-???-??-??-??-??-??-??-??-??-??-??-??-??-??-??-"
+    + "??-??-???-??-??-???-??-??-??-??-??-??-"
+    + "??-??-???-??-??-??-??-?]"*/
+    }    
+}
diff --git a/src/com/ibm/icu/text/Normalizer.java b/src/com/ibm/icu/text/Normalizer.java
new file mode 100755
index 0000000..bf65135
--- /dev/null
+++ b/src/com/ibm/icu/text/Normalizer.java
@@ -0,0 +1,2339 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/Normalizer.java,v $ 
+ * $Date: 2002/08/07 18:06:50 $ 
+ * $Revision: 1.22 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.impl.*;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.UCharacterProperty;
+import java.text.CharacterIterator;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * Unicode Normalization 
+ *
+ * <h2>Unicode normalization API</h2>
+ *
+ * <code>normalize</code> transforms Unicode text into an equivalent composed or
+ * decomposed form, allowing for easier sorting and searching of text.
+ * <code>normalize</code> supports the standard normalization forms described in
+ * <a href="http://www.unicode.org/unicode/reports/tr15/" target="unicode">
+ * Unicode Standard Annex #15 &mdash; Unicode Normalization Forms</a>.
+ *
+ * Characters with accents or other adornments can be encoded in
+ * several different ways in Unicode.  For example, take the character A-acute.
+ * In Unicode, this can be encoded as a single character (the
+ * "composed" form):
+ *
+ * <p>
+ *      00C1    LATIN CAPITAL LETTER A WITH ACUTE
+ * </p>
+ *
+ * or as two separate characters (the "decomposed" form):
+ *
+ * <p>
+ *      0041    LATIN CAPITAL LETTER A
+ *      0301    COMBINING ACUTE ACCENT
+ * </p>
+ *
+ * To a user of your program, however, both of these sequences should be
+ * treated as the same "user-level" character "A with acute accent".  When you are searching or
+ * comparing text, you must ensure that these two sequences are treated 
+ * equivalently.  In addition, you must handle characters with more than one
+ * accent.  Sometimes the order of a character's combining accents is
+ * significant, while in other cases accent sequences in different orders are
+ * really equivalent.
+ *
+ * Similarly, the string "ffi" can be encoded as three separate letters:
+ *
+ * <p>
+ *      0066    LATIN SMALL LETTER F
+ *      0066    LATIN SMALL LETTER F
+ *      0069    LATIN SMALL LETTER I
+ * <\p>
+ *
+ * or as the single character
+ *
+ * <p>
+ *      FB03    LATIN SMALL LIGATURE FFI
+ * <\p>
+ *
+ * The ffi ligature is not a distinct semantic character, and strictly speaking
+ * it shouldn't be in Unicode at all, but it was included for compatibility
+ * with existing character sets that already provided it.  The Unicode standard
+ * identifies such characters by giving them "compatibility" decompositions
+ * into the corresponding semantic characters.  When sorting and searching, you
+ * will often want to use these mappings.
+ *
+ * <code>normalize</code> helps solve these problems by transforming text into the
+ * canonical composed and decomposed forms as shown in the first example above.  
+ * In addition, you can have it perform compatibility decompositions so that 
+ * you can treat compatibility characters the same as their equivalents.
+ * Finally, <code>normalize</code> rearranges accents into the proper canonical
+ * order, so that you do not have to worry about accent rearrangement on your
+ * own.
+ *
+ * Form FCD, "Fast C or D", is also designed for collation.
+ * It allows to work on strings that are not necessarily normalized
+ * with an algorithm (like in collation) that works under "canonical closure", i.e., it treats precomposed
+ * characters and their decomposed equivalents the same.
+ *
+ * It is not a normalization form because it does not provide for uniqueness of representation. Multiple strings
+ * may be canonically equivalent (their NFDs are identical) and may all conform to FCD without being identical
+ * themselves.
+ *
+ * The form is defined such that the "raw decomposition", the recursive canonical decomposition of each character,
+ * results in a string that is canonically ordered. This means that precomposed characters are allowed for as long
+ * as their decompositions do not need canonical reordering.
+ *
+ * Its advantage for a process like collation is that all NFD and most NFC texts - and many unnormalized texts -
+ * already conform to FCD and do not need to be normalized (NFD) for such a process. The FCD quick check will
+ * return YES for most strings in practice.
+ *
+ * normalize(FCD) may be implemented with NFD.
+ *
+ * For more details on FCD see the collation design document:
+ * http://oss.software.ibm.com/cvs/icu/~checkout~/icuhtml/design/collation/ICU_collation_design.htm
+ *
+ * ICU collation performs either NFD or FCD normalization automatically if normalization
+ * is turned on for the collator object.
+ * Beyond collation and string search, normalized strings may be useful for string equivalence comparisons,
+ * transliteration/transcription, unique representations, etc.
+ *
+ * The W3C generally recommends to exchange texts in NFC.
+ * Note also that most legacy character encodings use only precomposed forms and often do not
+ * encode any combining marks by themselves. For conversion to such character encodings the
+ * Unicode text needs to be normalized to NFC.
+ * For more usage examples, see the Unicode Standard Annex.
+ */
+
+public final class Normalizer implements Cloneable{
+    
+    //-------------------------------------------------------------------------
+    // Private data
+    //-------------------------------------------------------------------------  
+    private char[] buffer = new char[100];
+    private int bufferStart = 0;
+    private int bufferPos   = 0;
+    private int bufferLimit = 0;
+    
+    // This tells us what the bits in the "mode" object mean.
+    private static final int COMPAT_BIT = 1;
+    private static final int DECOMP_BIT = 2;
+    private static final int COMPOSE_BIT = 4;
+    
+    // The input text and our position in it
+    private UCharacterIterator  text;
+    private Mode                mode = NFC;
+    private int                 options = 0;
+    private int                 currentIndex;
+    private int                 nextIndex;
+    
+    /**
+     * Constant indicating that the end of the iteration has been reached.
+     * This is guaranteed to have the same value as {@link UCharacterIterator#DONE}.
+     * 
+     */
+    public static final int DONE = UCharacterIterator.DONE;
+
+    /**
+     * Constants for normalization modes.
+     */
+    public static class Mode {
+		private int modeValue;
+		private Mode(int value){
+		    modeValue = value;
+		}
+        protected int normalize(char[] src, int srcStart, int srcLimit,
+                     char[] dest, int destStart, int destLimit){
+            int srcLen = (srcLimit - srcStart);
+            int destLen = (destLimit - destStart);
+            if( srcLen > destLen ){
+                return srcLen;
+            }
+            System.arraycopy(src,srcStart,dest,destStart,srcLen);
+            return srcLen;
+        }
+        
+        protected String normalize(String src){
+            return src;
+        }
+        
+        protected int getMinC(){
+            return -1;
+        }
+        protected int getMask(){
+            return -1;
+        }
+        protected IsPrevBoundary getPrevBoundary(){
+            return null;
+        }
+        protected IsNextBoundary getNextBoundary(){
+            return null;
+        }
+        protected QuickCheckResult quickCheck(char[] src,int start, int limit, 
+                                              boolean allowMaybe){
+            if(allowMaybe){
+                return MAYBE;
+            }
+            return NO;
+        }
+        
+    }
+    
+    /** No decomposition/composition.  */
+    public static final Mode NONE = new Mode(1);
+
+    /** Canonical decomposition.  */
+    public static final Mode NFD = new Mode(2){
+            protected int normalize( char[] src, int srcStart, int srcLimit,
+                          char[] dest,int destStart,int destLimit){
+              return decompose(src,  srcStart,srcLimit,
+                               dest, destStart,destLimit,
+                               false);
+            }
+            
+            protected String normalize( String src){
+                return decompose(src,false);
+            }
+            protected int getMinC(){
+                return NormalizerImpl.MIN_WITH_LEAD_CC;
+            }
+            protected IsPrevBoundary getPrevBoundary(){
+                return new IsPrevNFDSafe();
+            }
+            protected IsNextBoundary getNextBoundary(){
+                return new IsNextNFDSafe();
+            }
+            protected int getMask(){
+                return (NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFD);
+            }
+            protected QuickCheckResult quickCheck(char[] src,int start, 
+                                                  int limit,boolean allowMaybe){
+                return NormalizerImpl.quickCheck(
+                                      src, start,limit,
+                                      NormalizerImpl.getFromIndexesArr(
+                                           NormalizerImpl.INDEX_MIN_NFD_NO_MAYBE
+                                      ),
+                                      NormalizerImpl.QC_NFD,
+                                      allowMaybe
+                                 );
+            }
+           
+         };
+                                         
+    /** Compatibility decomposition.  */
+    public static final Mode NFKD = new Mode(3){
+            protected int normalize( char[] src, int srcStart, int srcLimit,
+                           char[] dest,int destStart,int destLimit){
+              return decompose(src,  srcStart,srcLimit,
+                               dest, destStart,destLimit,
+                               true);
+            }
+            protected String normalize( String src){
+                return decompose(src,true);
+            }
+            protected int getMinC(){
+                return NormalizerImpl.MIN_WITH_LEAD_CC;
+            }
+            protected IsPrevBoundary getPrevBoundary(){
+                return new IsPrevNFDSafe();
+            }
+            protected IsNextBoundary getNextBoundary(){
+                return new IsNextNFDSafe();
+            }
+            protected int getMask(){
+                return (NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFKD);
+            }
+            protected QuickCheckResult quickCheck(char[] src,int start, 
+                                                  int limit,boolean allowMaybe){
+                return NormalizerImpl.quickCheck(
+                                      src,start,limit,
+                                      NormalizerImpl.getFromIndexesArr(
+                                          NormalizerImpl.INDEX_MIN_NFKD_NO_MAYBE
+                                      ),
+                                      NormalizerImpl.QC_NFKD,
+                                      allowMaybe
+                                );
+            }                                        
+         };
+                                         
+    /** Canonical decomposition followed by canonical composition.  */
+    public static final Mode NFC = new Mode(4){
+            protected int normalize( char[] src, int srcStart, int srcLimit,
+                          char[] dest,int destStart,int destLimit){
+              return compose(src,  srcStart,srcLimit,
+                             dest, destStart,destLimit,
+                             false);
+            }
+            
+            protected String normalize( String src){
+                return compose(src,false);
+            }
+           
+            protected int getMinC(){
+                return NormalizerImpl.getFromIndexesArr(
+                                        NormalizerImpl.INDEX_MIN_NFC_NO_MAYBE
+                                    );
+            }
+            protected IsPrevBoundary getPrevBoundary(){
+                return new IsPrevTrueStarter();
+            }
+            protected IsNextBoundary getNextBoundary(){
+                return new IsNextTrueStarter();
+            }
+            protected int getMask(){
+                return (NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFC);
+            }
+            protected QuickCheckResult quickCheck(char[] src,int start, 
+                                                  int limit,boolean allowMaybe){
+                return NormalizerImpl.quickCheck(
+                                       src,start,limit,
+                                       NormalizerImpl.getFromIndexesArr(
+                                           NormalizerImpl.INDEX_MIN_NFC_NO_MAYBE
+                                       ),
+                                       NormalizerImpl.QC_NFC,
+                                       allowMaybe
+                                   );
+            }
+         };
+                                         
+    /** Default normalization.  */
+    public static final Mode DEFAULT = NFC; 
+    
+    /** Compatibility decomposition followed by canonical composition.  */
+    public static final Mode NFKC =new Mode(5){
+            protected int normalize( char[] src, int srcStart, int srcLimit,
+                          char[] dest,int destStart,int destLimit){
+              return compose(src,  srcStart,srcLimit,
+                             dest, destStart,destLimit,
+                             true);
+            }
+            protected String normalize( String src){
+                return compose(src,true);
+            }
+            protected int getMinC(){
+                return NormalizerImpl.getFromIndexesArr(
+                                        NormalizerImpl.INDEX_MIN_NFKC_NO_MAYBE
+                                    );
+            }
+            protected IsPrevBoundary getPrevBoundary(){
+                return new IsPrevTrueStarter();
+            }
+            protected IsNextBoundary getNextBoundary(){
+                return new IsNextTrueStarter();
+            }
+            protected int getMask(){
+                return (NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFKC);
+            }
+            protected QuickCheckResult quickCheck(char[] src,int start, 
+                                                  int limit,boolean allowMaybe){
+                return NormalizerImpl.quickCheck(
+                                       src,start,limit,
+                                       NormalizerImpl.getFromIndexesArr(
+                                          NormalizerImpl.INDEX_MIN_NFKC_NO_MAYBE
+                                       ),
+                                       NormalizerImpl.QC_NFKC,
+                                       allowMaybe
+                                     );
+            }
+         };
+                                        
+    /** "Fast C or D" form. @since ICU 2.1 */
+    public static final Mode FCD = new Mode(6){
+            protected int normalize( char[] src, int srcStart, int srcLimit,
+                          char[] dest,int destStart,int destLimit){
+              return NormalizerImpl.makeFCD(src, srcStart,srcLimit,
+                                            dest, destStart,destLimit);
+            }
+            protected String normalize( String src){
+                return makeFCD(src);
+            }
+            protected int getMinC(){
+                return NormalizerImpl.MIN_WITH_LEAD_CC;
+            }
+            protected IsPrevBoundary getPrevBoundary(){
+                return new IsPrevNFDSafe();
+            }
+            protected IsNextBoundary getNextBoundary(){
+                return new IsNextNFDSafe();
+            }
+            protected int getMask(){
+                return NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFD;
+            }
+            protected QuickCheckResult quickCheck(char[] src,int start, 
+                                                  int limit,boolean allowMaybe){
+                return NormalizerImpl.checkFCD(src,start,limit) ? YES : NO;
+            }  
+         };
+
+    
+    /**
+     * Null operation for use with the {@link #Normalizer constructors}
+     * and the static {@link #normalize normalize} method.  This value tells
+     * the <tt>Normalizer</tt> to do nothing but return unprocessed characters
+     * from the underlying String or CharacterIterator.  If you have code which
+     * requires raw text at some times and normalized text at others, you can
+     * use <tt>NO_OP</tt> for the cases where you want raw text, rather
+     * than having a separate code path that bypasses <tt>Normalizer</tt>
+     * altogether.
+     * <p>
+     * @see #setMode
+     * @deprecated To be removed after 2003-Aug-31. Use Nomalizer.NONE
+     * @see #NONE
+     */
+    public static final Mode NO_OP = NONE;
+
+    /**
+     * Canonical decomposition followed by canonical composition.  Used with the
+     * {@link #Normalizer constructors} and the static {@link #normalize normalize}
+     * method to determine the operation to be performed.
+     * <p>
+     * If all optional features (<i>e.g.</i> {@link #IGNORE_HANGUL}) are turned
+     * off, this operation produces output that is in
+     * <a href=http://www.unicode.org/unicode/reports/tr15/>Unicode Canonical Form</a>
+     * <b>C</b>.
+     * <p>
+     * @see #setMode
+     * @deprecated To be removed after 2003-Aug-31. Use Normalier.NFC
+     * @see #NFC
+     */
+    public static final Mode COMPOSE = NFC;
+
+    /**
+     * Compatibility decomposition followed by canonical composition.
+     * Used with the {@link #Normalizer constructors} and the static
+     * {@link #normalize normalize} method to determine the operation to be performed.
+     * <p>
+     * If all optional features (<i>e.g.</i> {@link #IGNORE_HANGUL}) are turned
+     * off, this operation produces output that is in
+     * <a href=http://www.unicode.org/unicode/reports/tr15/>Unicode Canonical Form</a>
+     * <b>KC</b>.
+     * <p>
+     * @see #setMode
+     * @deprecated To be removed after 2003-Aug-31. Use Normalizer.NFKC
+     * @see #NFKC
+     */
+    public static final Mode COMPOSE_COMPAT = NFKC;
+
+    /**
+     * Canonical decomposition.  This value is passed to the
+     * {@link #Normalizer constructors} and the static {@link #normalize normalize}
+     * method to determine the operation to be performed.
+     * <p>
+     * If all optional features (<i>e.g.</i> {@link #IGNORE_HANGUL}) are turned
+     * off, this operation produces output that is in
+     * <a href=http://www.unicode.org/unicode/reports/tr15/>Unicode Canonical Form</a>
+     * <b>D</b>.
+     * <p>
+     * @see #setMode
+     * @deprecated To be removed after 2003-Aug-31.Use Normalizer.NFD
+     * @see #NFD
+     */
+    public static final Mode DECOMP = NFD;
+
+    /**
+     * Compatibility decomposition.  This value is passed to the
+     * {@link #Normalizer constructors} and the static {@link #normalize normalize}
+     * method to determine the operation to be performed.
+     * <p>
+     * If all optional features (<i>e.g.</i> {@link #IGNORE_HANGUL}) are turned
+     * off, this operation produces output that is in
+     * <a href=http://www.unicode.org/unicode/reports/tr15/>Unicode Canonical Form</a>
+     * <b>KD</b>.
+     * <p>
+     * @see #setMode
+     * @deprecated To be removed after 2003-Aug-31. Use Normalizer.NFKD
+     * @see #NFKD
+     */
+    public static final Mode DECOMP_COMPAT = NFKD;
+
+    /**
+     * Option to disable Hangul/Jamo composition and decomposition.
+     * This option applies to Korean text,
+     * which can be represented either in the Jamo alphabet or in Hangul
+     * characters, which are really just two or three Jamo combined
+     * into one visual glyph.  Since Jamo takes up more storage space than
+     * Hangul, applications that process only Hangul text may wish to turn
+     * this option on when decomposing text.
+     * <p>
+     * The Unicode standard treates Hangul to Jamo conversion as a
+     * canonical decomposition, so this option must be turned <b>off</b> if you
+     * wish to transform strings into one of the standard
+     * <a href="http://www.unicode.org/unicode/reports/tr15/" target="unicode">
+     * Unicode Normalization Forms</a>.
+     * <p>
+     * @see #setOption
+     * @deprecated To be removed after 2003-Aug-31.
+     */
+    public static final int IGNORE_HANGUL = 0x0001;
+          
+    /**
+     * Result values for quickCheck().
+     * For details see Unicode Technical Report 15.
+     * 
+     */
+    public static final class QuickCheckResult{
+		private int resultValue;
+		private QuickCheckResult(int value){
+		    resultValue=value;
+		}
+    }
+    /** 
+     * Indicates that string is not in the normalized format
+     */
+    public static final QuickCheckResult NO = new QuickCheckResult(0);
+	
+    /** 
+     * Indicates that string is in the normalized format
+     */
+    public static final QuickCheckResult YES = new QuickCheckResult(1);
+
+    /** 
+     * Indicates it cannot be determined if string is in the normalized 
+     * format without further thorough checks.
+     */
+    public static final QuickCheckResult MAYBE = new QuickCheckResult(2);
+    
+    /**
+     * Option bit for compare:
+     * Case sensitively compare the strings
+     * @since ICU 2.2
+     */
+    public static final int FOLD_CASE_DEFAULT    =      0x0000;
+    
+    /**
+     * Option bit for compare:
+     * Both input strings are assumed to fulfill FCD conditions.
+     * @since ICU 2.2
+     */
+    public static final int INPUT_IS_FCD    =      0x20000;
+	
+    /**
+     * Option bit for compare:
+     * Perform case-insensitive comparison.
+     * @since ICU 2.2
+     */
+    public static final int COMPARE_IGNORE_CASE  =     0x10000;
+	
+    /**
+     * Option bit for compare:
+     * Compare strings in code point order instead of code unit order.
+     * @since ICU 2.2
+     */
+    public static final int COMPARE_CODE_POINT_ORDER = 0x8000;
+    
+    /** Option value for case folding: exclude the mappings for dotted I 
+     * and dotless i marked with 'I' in CaseFolding.txt. 
+     * @since ICU 2.2
+     */
+    public static final int FOLD_CASE_EXCLUDE_SPECIAL_I = 0x0001;
+	
+    //-------------------------------------------------------------------------
+    // Constructors
+    //-------------------------------------------------------------------------
+
+    /**
+     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * normalized form of a given string.
+     * <p>
+     * @param str   The string to be normalized.  The normalization
+     *              will start at the beginning of the string.
+     *
+     * @param mode  The normalization mode.
+     */
+    public Normalizer(String str, Mode mode) {
+        this( UCharacterIterator.getInstance(str), mode);
+    }
+
+    /**
+     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * normalized form of a given string.
+     * <p>
+     * The <tt>options</tt> parameter specifies which optional
+     * <tt>Normalizer</tt> features are to be enabled for this object.
+     * <p>
+     * @param str  The string to be normalized.  The normalization
+     *              will start at the beginning of the string.
+     *
+     * @param mode The normalization mode.
+     *
+     * @param opt Any optional features to be enabled.
+     *            Currently the only available option is {@link #IGNORE_HANGUL}.
+     *            If you want the default behavior corresponding to one of the
+     *            standard Unicode Normalization Forms, use 0 for this argument.
+     * @deprecated To be removed after 2003-Aug-31. Use Normalizer( String str, Mode mode).
+     */
+    public Normalizer(String str, Mode mode, int opt) {
+        this( UCharacterIterator.getInstance(str), mode );
+        this.options=opt;
+    }
+
+    /**
+     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * normalized form of the given text.
+     * <p>
+     * @param iter  The input text to be normalized.  The normalization
+     *              will start at the beginning of the string.
+     *
+     * @param mode  The normalization mode.
+     *
+     */
+    public Normalizer(CharacterIterator iter, Mode mode) {
+        this( UCharacterIterator.getInstance(iter), mode);
+    }
+
+    /**
+     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * normalized form of the given text.
+     * <p>
+     * @param iter  The input text to be normalized.  The normalization
+     *              will start at the beginning of the string.
+     *
+     * @param mode  The normalization mode.
+     *
+     * @param opt Any optional features to be enabled.
+     *            Currently the only available option is {@link #IGNORE_HANGUL}.
+     *            If you want the default behavior corresponding to one of the
+     *            standard Unicode Normalization Forms, use 0 for this argument.
+     * @deprecated To be removed after 2003-Aug-31. Use Normalizer(CharacterIterator iter, Mode mode).
+     */
+    public Normalizer(CharacterIterator iter, Mode mode, int opt) {
+        this( UCharacterIterator.getInstance(iter), mode);
+        this.options = opt;
+    }
+    
+    /**
+     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * normalized form of the given text.
+     * <p>
+     * @param iter  The input text to be normalized.  The normalization
+     *              will start at the beginning of the string.
+     *
+     * @param mode  The normalization mode.
+     */
+    //internal constructor for now
+    public Normalizer(UCharacterIterator iter, Mode mode){
+        this.text     = iter;
+        this.mode     = mode;
+    }
+
+    /**
+     * Clones this <tt>Normalizer</tt> object.  All properties of this
+     * object are duplicated in the new object, including the cloning of any
+     * {@link CharacterIterator} that was passed in to the constructor
+     * or to {@link #setText(CharacterIterator) setText}.
+     * However, the text storage underlying
+     * the <tt>CharacterIterator</tt> is not duplicated unless the
+     * iterator's <tt>clone</tt> method does so.
+     */
+    public Object clone() {
+        try {
+            Normalizer copy = (Normalizer) super.clone();
+            copy.text = (UCharacterIterator) text.clone();
+            //clone the internal buffer
+            if (buffer != null) {
+                copy.buffer = new char[buffer.length];
+                System.arraycopy(buffer,0,copy.buffer,0,buffer.length);
+            }
+            return copy;
+        }
+        catch (CloneNotSupportedException e) {
+            throw new InternalError(e.toString());
+        }
+    }
+    
+    //--------------------------------------------------------------------------
+    // Static Utility methods
+    //--------------------------------------------------------------------------
+    
+    /**
+     * Compose a string.
+     * The string will be composed to according the the specified mode.
+     * @param str        The string to compose.
+     * @param compat     If true the string will be composed accoding to 
+     *                    NFKC rules and if false will be composed according to 
+     *                    NFC rules.
+     * @return String    The composed string   
+     */            
+    public static String compose(String str, boolean compat){
+        char[] dest = new char[str.length()*MAX_BUF_SIZE_COMPOSE];
+        int destSize=0;
+        char[] src = str.toCharArray();
+        for(;;){
+            destSize=NormalizerImpl.compose(src,0,src.length,
+                                            dest,0,dest.length,compat);
+            if(destSize<=dest.length){
+		        return new String(dest,0,destSize);  
+            }else{
+                dest = new char[destSize];
+            }
+        }                     
+    }
+    
+    /**
+     *  Compose a string.
+     * The string will be composed to according the the specified mode.
+     * @param str        The string to compose.
+     * @param compat     If true the string will be composed accoding to 
+     *                    NFKC rules and if false will be composed according to 
+     *                    NFC rules.
+     * @param options    The only recognized option is IGNORE_HANGUL
+     * @return String    The composed string   
+     * @deprecated To be removed after 2003-Aug-31. Use compose(String str, boolean compat).
+     */            
+    public static String compose(String str, boolean compat, int options){
+        return compose(str,compat);                     
+    }
+    
+    /**
+     * Compose a string.
+     * The string will be composed to according the the specified mode.
+     * @param source The char array to compose.
+     * @param target A char buffer to receive the normalized text.
+     * @param compat If true the char array will be composed accoding to 
+     *                NFKC rules and if false will be composed according to 
+     *                NFC rules.
+     * @return int   The total buffer size needed;if greater than length of 
+     *                result, the output was truncated.
+     * @exception IndexOutOfBoundsException if target.length is less than the 
+     *             required length  
+     */         
+    public static int compose(char[] source,char[] target, boolean compat){
+        int length = NormalizerImpl.compose(source,0,source.length,
+                                            target,0,target.length,
+                                            compat);
+		if(length<=target.length){
+		    return length;
+		}else{
+		    throw new IndexOutOfBoundsException(Integer.toString(length));
+		} 
+    }
+    
+    /**
+     * Compose a string.
+     * The string will be composed to according the the specified mode.
+     * @param src       The char array to compose.
+     * @param srcStart  Start index of the source
+     * @param srcLimit  Limit index of the source
+     * @param dest      The char buffer to fill in
+     * @param destStart Start index of the destination buffer  
+     * @param destLimit End index of the destination buffer
+     * @param compat If true the char array will be composed accoding to 
+     *                NFKC rules and if false will be composed according to 
+     *                NFC rules.
+     * @return int   The total buffer size needed;if greater than length of 
+     *                result, the output was truncated.
+     * @exception IndexOutOfBoundsException if target.length is less than the 
+     *             required length  
+     */         
+    public static int compose(char[] src,int srcStart, int srcLimit,
+                              char[] dest,int destStart, int destLimit,
+                              boolean compat){
+        int length = NormalizerImpl.compose(src,srcStart,srcLimit,
+                                            dest,destStart,destLimit,
+                                            compat);
+        if(length<=(destLimit-destStart)){
+            return length;
+        }else{
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        } 
+    }
+    
+    private static final int MAX_BUF_SIZE_COMPOSE = 2;
+    private static final int MAX_BUF_SIZE_DECOMPOSE = 3;
+    
+    /**
+     * Decompose a string.
+     * The string will be decomposed to according the the specified mode.
+     * @param str       The string to decompose.
+     * @param compat    If true the string will be decomposed accoding to NFKD rules
+     *                   and if false will be decomposed according to NFD rules.
+     * @return String   The decomposed string   
+     */         
+    public static String decompose(String str, boolean compat){
+        char[] dest = new char[str.length()*MAX_BUF_SIZE_DECOMPOSE];
+        int[] trailCC = new int[1];
+        int destSize=0;
+        for(;;){
+            destSize=NormalizerImpl.decompose(str.toCharArray(),0,str.length(),
+                                              dest,0,dest.length,
+                                              compat,trailCC);
+            if(destSize<=dest.length){
+		        return new String(dest,0,destSize); 
+            }else{
+                dest = new char[destSize];
+            }
+        } 
+	                     
+    }
+    
+    /**
+     * Decompose a string.
+     * The string will be decomposed to according the the specified mode.
+     * @param str     The string to decompose.
+     * @param compat  If true the string will be decomposed accoding to NFKD rules
+     *                 and if false will be decomposed according to NFD rules.
+     * @return String The decomposed string 
+     * @deprecated To be removed after 2003-Aug-31. Use decompose(String str, boolean compat).
+     */         
+    public static String decompose(String str, boolean compat, int options){
+        return decompose(str,compat);                 
+    }
+    
+    /**
+     * Decompose a string.
+     * The string will be decomposed to according the the specified mode.
+     * @param source The char array to decompose.
+     * @param target A char buffer to receive the normalized text.
+     * @param compat If true the char array will be decomposed accoding to NFKD 
+     *                rules and if false will be decomposed according to 
+     *                NFD rules.
+     * @return int   The total buffer size needed;if greater than length of 
+     *                result,the output was truncated.
+     * @exception IndexOutOfBoundsException if the target capacity is less than
+     *             the required length   
+     */
+    public static int decompose(char[] source,char[] target, boolean compat){
+        int[] trailCC = new int[1];
+        int length = NormalizerImpl.decompose(source,0,source.length,
+                                              target,0,target.length,
+                                              compat,trailCC);
+		if(length<=target.length){
+		    return length;
+		}else{
+		    throw new IndexOutOfBoundsException(Integer.toString(length));
+		} 
+    }
+    
+    /**
+     * Decompose a string.
+     * The string will be decomposed to according the the specified mode.
+     * @param src       The char array to compose.
+     * @param srcStart  Start index of the source
+     * @param srcLimit  Limit index of the source
+     * @param dest      The char buffer to fill in
+     * @param destStart Start index of the destination buffer  
+     * @param destLimit End index of the destination buffer
+     * @param compat If true the char array will be decomposed accoding to NFKD 
+     *                rules and if false will be decomposed according to 
+     *                NFD rules.
+     * @return int   The total buffer size needed;if greater than length of 
+     *                result,the output was truncated.
+     * @exception IndexOutOfBoundsException if the target capacity is less than
+     *             the required length   
+     */
+    public static int decompose(char[] src,int srcStart, int srcLimit,
+                                char[] dest,int destStart, int destLimit,
+                                boolean compat){
+        int[] trailCC = new int[1];
+        int length = NormalizerImpl.decompose(src,srcStart,srcLimit,
+                                              dest,destStart,destLimit,
+                                              compat,trailCC);
+        if(length<=(destLimit-destStart)){
+            return length;
+        }else{
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        } 
+    }
+        
+    private static String makeFCD(String src){
+        int srcLen = src.length();
+        char[] dest = new char[MAX_BUF_SIZE_DECOMPOSE*srcLen];
+        int length = 0;
+        for(;;){
+            length = NormalizerImpl.makeFCD(src.toCharArray(),0,srcLen,
+                                            dest,0,dest.length);
+            if(length <= dest.length){
+                return new String(dest,0,length);
+            }else{
+                dest = new char[length];
+            }
+        }
+    }
+    
+    /**
+     * Normalizes a <tt>String</tt> using the given normalization operation.
+     * <p>
+     * The <tt>options</tt> parameter specifies which optional
+     * <tt>Normalizer</tt> features are to be enabled for this operation.
+     * Currently the only available option is {@link #IGNORE_HANGUL}.
+     * If you want the default behavior corresponding to one of the standard
+     * Unicode Normalization Forms, use 0 for this argument.
+     * <p>
+     * @param str       the input string to be normalized.
+     *
+     * @param aMode     the normalization mode
+     *
+     * @param options   the optional features to be enabled.
+     * @deprecated     To be removed after 2003-Aug-31. Use normalize(String str, Mode mode).
+     */
+    public static String normalize(String str, Mode mode, int options){
+        return normalize(str,mode);
+    }
+    
+    /**
+     * Normalize a string.
+     * The string will be normalized according the the specified normalization mode
+     * and options.
+     * @param source     The string to normalize.
+     * @param mode       The normalization mode; one of Normalizer.NONE, 
+     *                    Normalizer.NFD, Normalizer.NFC, Normalizer.NFKC, 
+     *                    Normalizer.NFKD, Normalizer.DEFAULT
+     * @return String    The normalized string
+     *   
+     */
+    public static String normalize( String src,Mode mode){
+        return mode.normalize(src);    
+    }
+    /**
+     * Normalize a string.
+     * The string will be normalized according the the specified normalization mode
+     * and options.
+     * @param source The char array to normalize.
+     * @param target A char buffer to receive the normalized text.
+     * @param mode   The normalization mode; one of Normalizer.NONE, 
+     *                Normalizer.NFD, Normalizer.NFC, Normalizer.NFKC, 
+     *                Normalizer.NFKD, Normalizer.DEFAULT
+     * @return int   The total buffer size needed;if greater than length of result,
+     *                the output was truncated.
+     * @exception    IndexOutOfBoundsException if the target capacity is less than
+     *                the required length     
+     */
+    public static int normalize(char[] source,char[] target, Mode  mode){
+		int length = normalize(source,0,source.length,target,0,target.length,mode);
+		if(length<=target.length){
+		    return length;
+		}else{
+		    throw new IndexOutOfBoundsException(Integer.toString(length));
+		} 
+    }
+    
+    /**
+     * Normalize a string.
+     * The string will be normalized according the the specified normalization mode
+     * and options.
+     * @param src       The char array to compose.
+     * @param srcStart  Start index of the source
+     * @param srcLimit  Limit index of the source
+     * @param dest      The char buffer to fill in
+     * @param destStart Start index of the destination buffer  
+     * @param destLimit End index of the destination buffer
+     * @param mode   The normalization mode; one of Normalizer.NONE, 
+     *               Normalizer.NFD, Normalizer.NFC, Normalizer.NFKC, 
+     *               Normalizer.NFKD, Normalizer.DEFAULT
+     * @return int   The total buffer size needed;if greater than length of result,
+     *               the output was truncated.
+     * @exception IndexOutOfBoundsException if the target capacity is less than
+     *             the required length     
+     */       
+    public static int normalize(char[] src,int srcStart, int srcLimit, 
+                                char[] dest,int destStart, int destLimit,
+                                Mode  mode){
+        int length =mode.normalize(src,srcStart,srcLimit,dest,destStart,destLimit);
+       
+        if(length<=(destLimit-destStart)){
+            return length;
+        }else{
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        } 
+    }
+    
+    /**
+     * Normalize a codepoint accoding to the given mode
+     * @param char32    The input string to be normalized.
+     * @param aMode     The normalization mode
+     * @return String   The normalized string
+     */
+    // TODO: actually do the optimization when the guts of Normalizer are upgraded
+    // --has just dumb implementation for now
+    public static String normalize(int char32, Mode mode) {
+        return normalize(UTF16.valueOf(char32), mode);
+    }
+    
+    /**
+     * Convenience method.
+     *
+     * @param source       string for determining if it is in a normalized format
+     * @param mode         normalization format (Normalizer.NFC,Normalizer.NFD,  
+     *                     Normalizer.NFKC,Normalizer.NFKD)
+     * @return             Return code to specify if the text is normalized or not 
+     *                     (Normalizer.YES, Normalizer.NO or Normalizer.MAYBE)
+     */
+    public static QuickCheckResult quickCheck( String source, Mode mode){
+	    return mode.quickCheck(source.toCharArray(),0,source.length(),true);
+    }
+    
+    /**
+     * Convenience method.
+     *
+     * @param source Array of characters for determining if it is in a normalized format
+     * @param mode   normalization format (Normalizer.NFC,Normalizer.NFD,  
+     *                Normalizer.NFKC,Normalizer.NFKD)
+     * @return       Return code to specify if the text is normalized or not 
+     *                (Normalizer.YES, Normalizer.NO or Normalizer.MAYBE)
+     */
+    public static QuickCheckResult quickCheck(char[] source, Mode mode){
+        return mode.quickCheck(source,0,source.length,true);
+    }
+    
+    /**
+     * Performing quick check on a string, to quickly determine if the string is 
+     * in a particular normalization format.
+     * Three types of result can be returned Normalizer.YES, Normalizer.NO or
+     * Normalizer.MAYBE. Result Normalizer.YES indicates that the argument
+     * string is in the desired normalized format, Normalizer.NO determines that
+     * argument string is not in the desired normalized format. A Normalizer.MAYBE
+     * result indicates that a more thorough check is required, the user may have to
+     * put the string in its normalized form and compare the results.
+     *
+     * @param source       string for determining if it is in a normalized format
+     * @param start        the start index of the source
+     * @param limit        the limit index of the source it is equal to the length
+     * @param mode         normalization format (Normalizer.NFC,Normalizer.NFD,  
+     *                     Normalizer.NFKC,Normalizer.NFKD)
+     * @return             Return code to specify if the text is normalized or not 
+     *                     (Normalizer.YES, Normalizer.NO or
+     *                     Normalizer.MAYBE)
+     */
+
+    public static QuickCheckResult quickCheck(char[] source,int start, 
+                                              int limit, Mode mode){    	
+	    return mode.quickCheck(source,start,limit,true);
+    }
+    
+    //-------------------------------------------------------------------------
+    // Internal methods (for now)
+    //-------------------------------------------------------------------------
+
+
+    /**
+	 * Test if a string is in a given normalization form.
+	 * This is semantically equivalent to source.equals(normalize(source, mode)).
+	 *
+	 * Unlike quickCheck(), this function returns a definitive result,
+	 * never a "maybe".
+	 * For NFD, NFKD, and FCD, both functions work exactly the same.
+	 * For NFC and NFKC where quickCheck may return "maybe", this function will
+	 * perform further tests to arrive at a true/false result.
+     * @param src       The input array of characters to be checked to see if 
+     *                   it is normalized
+     * @param start     The strart index in the source
+     * @param limit     The limit index in the source
+     * @param aMode     the normalization mode
+     * @return Boolean value indicating whether the source string is in the
+     *         "mode" normalization form
+     */
+    public static boolean isNormalized(char[] src,int start,int limit, Mode mode) {
+        return (mode.quickCheck(src,start,limit,false)==YES);
+    }
+    
+    /**
+     * Convenience Method
+     * @param str       the input string to be checked to see if it is normalized
+     *
+     * @param aMode     the normalization mode
+     * @see #isNormalized
+     */
+    public static boolean isNormalized(String str, Mode mode) {
+        return (mode.quickCheck(str.toCharArray(),0,str.length(),false)==YES);
+    }
+    
+    /**
+     * Convenience Method
+     * @param char32    the input code point to be checked to see if it is normalized
+     *
+     * @param aMode     the normalization mode
+     * @see #isNormalized
+     */
+    // TODO: actually do the optimization when the guts of Normalizer are upgraded
+    // --has just dumb implementation for now
+    public static boolean isNormalized(int char32, Mode mode) {
+        return isNormalized(UTF16.valueOf(char32), mode);
+    }
+     
+    /**
+     * Compare two strings for canonical equivalence.
+     * Further options include case-insensitive comparison and
+     * code point order (as opposed to code unit order).
+     *
+     * Canonical equivalence between two strings is defined as their normalized
+     * forms (NFD or NFC) being identical.
+     * This function compares strings incrementally instead of normalizing
+     * (and optionally case-folding) both strings entirely,
+     * improving performance significantly.
+     *
+     * Bulk normalization is only necessary if the strings do not fulfill the FCD
+     * conditions. Only in this case, and only if the strings are relatively long,
+     * is memory allocated temporarily.
+     * For FCD strings and short non-FCD strings there is no memory allocation.
+     *
+     * Semantically, this is equivalent to
+     *   strcmp[CodePointOrder](foldCase(NFD(s1)), foldCase(NFD(s2)))
+     * where code point order and foldCase are all optional.
+     *
+     * @param s1        First source character array.
+     * @param s1Start   start index of source
+     * @param s1Limit   limit of the source
+     *
+     * @param s2        Second source character array.
+     * @param s2Start   start index of the source
+     * @param s2Limit   limit of the source
+     * 
+     * @param options A bit set of options:
+     *   - FOLD_CASE_DEFAULT or 0 is used for default options:
+     *     Case-sensitive comparison in code unit order, and the input strings
+     *     are quick-checked for FCD.
+     *
+     *   - INPUT_IS_FCD
+     *     Set if the caller knows that both s1 and s2 fulfill the FCD conditions.
+     *     If not set, the function will quickCheck for FCD
+     *     and normalize if necessary.
+     *
+     *   - COMPARE_CODE_POINT_ORDER
+     *     Set to choose code point order instead of code unit order
+     *
+     *   - COMPARE_IGNORE_CASE
+     *     Set to compare strings case-insensitively using case folding,
+     *     instead of case-sensitively.
+     *     If set, then the following case folding options are used.
+     *
+     *
+     * @return <0 or 0 or >0 as usual for string comparisons
+     *
+     * @see #normalize
+     * @see #FCD
+     */
+     public static int compare(char[] s1, int s1Start, int s1Limit,
+                               char[] s2, int s2Start, int s2Limit,
+                               int options){
+         return NormalizerImpl.compare(s1, s1Start, s1Limit, 
+                                       s2, s2Start, s2Limit, options);
+     } 
+       
+    /**
+     * Compare two strings for canonical equivalence.
+     * Further options include case-insensitive comparison and
+     * code point order (as opposed to code unit order).
+     * Convenience method.
+     *
+     * @param s1 First source string.
+     * @param s2 Second source string.
+     *
+     * @param options A bit set of options:
+     *   - FOLD_CASE_DEFAULT or 0 is used for default options:
+     *     Case-sensitive comparison in code unit order, and the input strings
+     *     are quick-checked for FCD.
+     *
+     *   - INPUT_IS_FCD
+     *     Set if the caller knows that both s1 and s2 fulfill the FCD conditions.
+     *     If not set, the function will quickCheck for FCD
+     *     and normalize if necessary.
+     *
+     *   - COMPARE_CODE_POINT_ORDER
+     *     Set to choose code point order instead of code unit order
+     *
+     *   - COMPARE_IGNORE_CASE
+     *     Set to compare strings case-insensitively using case folding,
+     *     instead of case-sensitively.
+     *     If set, then the following case folding options are used.
+     *
+     *
+     * @return <0 or 0 or >0 as usual for string comparisons
+     *
+     * @see #normalize
+     * @see #FCD
+     */
+     public static int compare(String s1, String s2, int options){
+         
+         return compare(s1.toCharArray(),0,s1.length(),
+                                       s2.toCharArray(),0,s2.length(),
+                                       options);
+     }
+     
+    /**
+     * Compare two strings for canonical equivalence.
+     * Further options include case-insensitive comparison and
+     * code point order (as opposed to code unit order).
+     * Convenience method.
+     *
+     * @param s1 First source string.
+     * @param s2 Second source string.
+     *
+     * @param options A bit set of options:
+     *   - FOLD_CASE_DEFAULT or 0 is used for default options:
+     *     Case-sensitive comparison in code unit order, and the input strings
+     *     are quick-checked for FCD.
+     *
+     *   - INPUT_IS_FCD
+     *     Set if the caller knows that both s1 and s2 fulfill the FCD conditions.
+     *     If not set, the function will quickCheck for FCD
+     *     and normalize if necessary.
+     *
+     *   - COMPARE_CODE_POINT_ORDER
+     *     Set to choose code point order instead of code unit order
+     *
+     *   - COMPARE_IGNORE_CASE
+     *     Set to compare strings case-insensitively using case folding,
+     *     instead of case-sensitively.
+     *     If set, then the following case folding options are used.
+     *
+     *
+     * @return <0 or 0 or >0 as usual for string comparisons
+     *
+     * @see #normalize
+     * @see #FCD
+     */
+     public static int compare(char[] s1, char[] s2, int options){
+         
+         return compare(s1,0,s1.length,s2,0,s2.length,options);
+     } 
+        
+    /**
+     * Convenience method that can have faster implementation
+     * by not allocating buffers.
+     * @param char32a    the first code point to be checked against the
+     * @param char32b    the second code point
+     *
+     * @param aMode     the normalization mode
+     */
+    // TODO: actually do the optimization when the guts of Normalizer are upgraded
+    // --has just dumb implementation for now
+    public static int compare(int char32a, int char32b,int options) {
+        return compare(UTF16.valueOf(char32a), UTF16.valueOf(char32b), options);
+    }
+    
+    
+    /**
+     * Convenience method that can have faster implementation
+     * by not allocating buffers.
+     * @internal
+     * @param char32a    the first code point to be checked against the
+     * @param str2    the second string
+     *
+     * @param aMode     the normalization mode
+     *
+     */
+    // TODO: actually do the optimization when the guts of Normalizer are upgraded
+    // --has just dumb implementation for now
+    public static int compare(int charA, String str2, int options) {
+        return compare(UTF16.valueOf(charA), str2, options);
+    }
+   
+    /**
+     * Concatenate normalized strings, making sure that the result is normalized
+     * as well.
+     *
+     * If both the left and the right strings are in
+     * the normalization form according to "mode",
+     * then the result will be
+     *
+     * \code
+     *     dest=normalize(left+right, mode)
+     * \endcode
+     *
+     * With the input strings already being normalized,
+     * this function will use next() and previous()
+     * to find the adjacent end pieces of the input strings.
+     * Only the concatenation of these end pieces will be normalized and
+     * then concatenated with the remaining parts of the input strings.
+     *
+     * It is allowed to have dest==left to avoid copying the entire left string.
+     *
+     * @param left Left source array, may be same as dest.
+     * @param leftStart start index of the left array.
+     * @param leftLimit end index of the left array (==length)
+     * @param right Right source array.
+     * @param rightStart start index of the right array.
+     * @param leftLimit end index of the right array (==length)
+     * @param dest The output buffer; can be null if destStart==destLimit==0 
+     *              for pure preflighting.
+     * @param destStart start index of the destination array
+     * @param mode The normalization mode.
+     * @return Length of output (number of chars) when successful or 
+     *          IndexOutOfBoundsException
+     * @exception IndexOutOfBoundsException whose message has the string 
+     *             representation of destination capacity required. 
+     * @see #normalize
+     * @see #next
+     * @see #previous
+     * @exception IndexOutOfBoundsException if target capacity is less than the
+     *             required length
+     */
+     /* Concatenation of normalized strings ---------------------------------- */
+    
+    public static int concatenate(char[] left,  int leftStart,  int leftLimit,
+                                  char[] right, int rightStart, int rightLimit, 
+                                  char[] dest,  int destStart,  int destLimit,
+                                  Normalizer.Mode mode) {
+                               
+        char[] buffer=new char[100];
+        int bufferLength;
+    
+        UCharacterIterator iter;
+        
+        int leftBoundary, rightBoundary, destLength;
+    
+        if(dest == null){
+            throw new IllegalArgumentException();
+        }
+    
+        /* check for overlapping right and destination */
+        if (right == dest && rightStart < destLimit && destStart < rightLimit) {
+            throw new IllegalArgumentException("overlapping right and dst ranges");
+        }
+    
+        /* allow left==dest */
+    
+    
+        /*
+         * Input: left[0..leftLength[ + right[0..rightLength[
+         *
+         * Find normalization-safe boundaries leftBoundary and rightBoundary
+         * and copy the end parts together:
+         * buffer=left[leftBoundary..leftLength[ + right[0..rightBoundary[
+         *
+         * dest=left[0..leftBoundary[ +
+         *      normalize(buffer) +
+         *      right[rightBoundary..rightLength[
+         */
+    
+        /*
+         * find a normalization boundary at the end of the left string
+         * and copy the end part into the buffer
+         */
+
+        iter = UCharacterIterator.getInstance(left, leftStart, leftLimit);
+                                             
+        iter.setIndex(iter.getLength()); /* end of left string */
+    
+        bufferLength=previous(iter, buffer,0,buffer.length,mode,false,null);
+        
+        leftBoundary=iter.getIndex();
+        
+        if(bufferLength>buffer.length) {
+            char[] newBuf = new char[buffer.length*2];
+            buffer = newBuf;
+            newBuf = null; // null the reference for GC
+            /* just copy from the left string: we know the boundary already */
+            System.arraycopy(left,leftBoundary,buffer,0,bufferLength);
+        }
+    
+        /*
+         * find a normalization boundary at the beginning of the right string
+         * and concatenate the beginning part to the buffer
+         */
+
+        iter = UCharacterIterator.getInstance(right, rightStart, rightLimit);
+        
+        rightBoundary=next(iter,buffer,bufferLength, buffer.length-bufferLength,
+                           mode, false,null);
+                           
+        if(bufferLength>buffer.length) {
+            char[] newBuf = new char[buffer.length*2];
+            buffer = newBuf;
+            newBuf = null; // null the reference for GC
+            /* just copy from the right string: we know the boundary already */
+            System.arraycopy(right,rightBoundary,buffer,
+                             bufferLength,rightBoundary);
+        }
+
+        bufferLength+=rightBoundary;
+    
+        /* copy left[0..leftBoundary[ to dest */
+        if(left!=dest && leftBoundary>0 && (destLimit)>0) {
+            System.arraycopy(left,0,dest,0, Math.min(leftBoundary,destLimit)); 
+        }
+        destLength=leftBoundary;
+    
+        /* concatenate the normalization of the buffer to dest */
+        if(destLimit>destLength) {
+            destLength+=Normalizer.normalize(buffer,0,bufferLength,dest,
+                                                     destLength,destLimit,mode);
+            
+        } else {
+            destLength+=Normalizer.normalize(buffer, 0, bufferLength,null,0,0,mode);
+        }
+    
+        /* concatenate right[rightBoundary..rightLength[ to dest */
+        rightStart+=rightBoundary;
+        int rightLength=(rightLimit-rightStart);
+        if(rightLength>0 && destLimit>destLength) {
+            System.arraycopy(right,rightStart,dest,destLength,
+                                Math.min(rightLength,destLength)
+                            );
+        }
+        destLength+=rightLength;
+        
+        if(destLength<=(destLimit-destStart)){
+            return destLength;
+        }else{
+            throw new IndexOutOfBoundsException(Integer.toString(destLength));
+        }  
+    }
+    
+    /**
+     * Concatenate normalized strings, making sure that the result is normalized
+     * as well.
+     *
+     * If both the left and the right strings are in
+     * the normalization form according to "mode",
+     * then the result will be
+     *
+     * <code>
+     *     dest=normalize(left+right, mode)
+     * </code>
+     *
+     * For details see concatenate 
+     *
+     * @param left Left source string.
+     * @param right Right source string.
+     * @param mode The normalization mode.
+     * @return result
+     *
+     * @see #concatenate
+     * @see #normalize
+     * @see #next
+     * @see #previous
+     * @see #concatenate
+     */
+    public static String concatenate(char[] left, char[] right,Mode mode){
+        char[] result = new char[(left.length+right.length)* MAX_BUF_SIZE_DECOMPOSE];
+        for(;;){
+               
+            int length = concatenate(left,  0, left.length,
+                                     right, 0, right.length,
+                                     result,0, result.length,
+                                     mode);
+            if(length<=result.length){
+                return new String(result,0,length);
+            }else{
+                result = new char[length];
+            }
+        }            
+    }
+    
+    /**
+     * Concatenate normalized strings, making sure that the result is normalized
+     * as well.
+     *
+     * If both the left and the right strings are in
+     * the normalization form according to "mode",
+     * then the result will be
+     *
+     * <code>
+     *     dest=normalize(left+right, mode)
+     * </code>
+     *
+     * For details see concatenate
+     *
+     * @param left Left source string.
+     * @param right Right source string.
+     * @param mode The normalization mode.
+     * @return result
+     *
+     * @see #concatenate
+     * @see #normalize
+     * @see #next
+     * @see #previous
+     * @see #concatenate
+     */
+    public static String concatenate(String left, String right,Mode mode){
+        char[] result = new char[(left.length()+right.length())* MAX_BUF_SIZE_DECOMPOSE];
+        for(;;){
+               
+            int length = concatenate(left.toCharArray(), 0, left.length(),
+                         right.toCharArray(),0, right.length(),
+                         result,             0, result.length,
+                         mode);
+            if(length<=result.length){
+                return new String(result,0,length);
+            }else{
+                result = new char[length];
+            }
+        }            
+    }
+    
+    //-------------------------------------------------------------------------
+    // Iteration API
+    //-------------------------------------------------------------------------
+	
+    /**
+     * Return the current character in the normalized text->
+     * @return The codepoint as an int
+     */
+    public int current() {
+		if(bufferPos<bufferLimit || nextNormalize()) {
+		    return getCodePointAt(bufferPos);
+		} else {
+		    return DONE;
+		}
+    }
+	
+    /**
+     * Return the next character in the normalized text and advance
+     * the iteration position by one.  If the end
+     * of the text has already been reached, {@link #DONE} is returned.
+     * @return The codepoint as an int
+     */
+    public int next() {
+		if(bufferPos<bufferLimit ||  nextNormalize()) {
+		    int c=getCodePointAt(bufferPos);
+		    bufferPos+=(c>0xFFFF) ? 2 : 1;
+		    return c;
+		} else {
+		    return DONE;
+		}
+    }
+	
+        
+    /**
+     * Return the previous character in the normalized text and decrement
+     * the iteration position by one.  If the beginning
+     * of the text has already been reached, {@link #DONE} is returned.
+     * @return The codepoint as an int
+     */
+    public int previous() {
+		if(bufferPos>0 || previousNormalize()) {
+		    int c=getCodePointAt(bufferPos-1);
+		    bufferPos-=(c>0xFFFF) ? 2 : 1;
+		    return c;
+		} else {
+		    return DONE;
+		}
+    }
+	
+   /**
+    * Reset the index to the beginning of the text.
+    * This is equivalent to setIndexOnly(startIndex)).
+    */
+    public void reset() {
+        text.setIndex(0);
+		currentIndex=nextIndex=0;
+		clearBuffer();
+    }
+    
+   /**
+    * Set the iteration position in the input text that is being normalized,
+    * without any immediate normalization.
+    * After setIndexOnly(), getIndex() will return the same index that is
+    * specified here.
+    *
+    * @param index the desired index in the input text.
+    */
+    public void setIndexOnly(int index) {
+        text.setIndex(index);
+		currentIndex=nextIndex=index; // validates index
+		clearBuffer();
+    }
+	
+    /**
+     * Set the iteration position in the input text that is being normalized
+     * and return the first normalized character at that position.
+     * <p>
+     * <b>Note:</b> This method sets the position in the <em>input</em> text,
+     * while {@link #next} and {@link #previous} iterate through characters
+     * in the normalized <em>output</em>.  This means that there is not
+     * necessarily a one-to-one correspondence between characters returned
+     * by <tt>next</tt> and <tt>previous</tt> and the indices passed to and
+     * returned from <tt>setIndex</tt> and {@link #getIndex}.
+     * <p>
+     * @param index the desired index in the input text->
+     *
+     * @return      the first normalized character that is the result of iterating
+     *              forward starting at the given index.
+     *
+     * @throws IllegalArgumentException if the given index is less than
+     *          {@link #getBeginIndex} or greater than {@link #getEndIndex}.
+     * @return The codepoint as an int
+     */
+    public int setIndex(int index) {
+		setIndexOnly(index);
+		return current();
+    }
+ 
+    /**
+     * Retrieve the index of the start of the input text.  This is the begin index
+     * of the <tt>CharacterIterator</tt> or the start (i.e. 0) of the <tt>String</tt>
+     * over which this <tt>Normalizer</tt> is iterating
+     * @deprecated To be removed after 2003-aug-31. Use startIndex() instead.
+     * @return The codepoint as an int
+     * @see #startIndex
+     */
+    public int getBeginIndex() {
+        return 0;
+    }
+
+    /**
+     * Retrieve the index of the end of the input text.  This is the end index
+     * of the <tt>CharacterIterator</tt> or the length of the <tt>String</tt>
+     * over which this <tt>Normalizer</tt> is iterating
+     * @deprecated To be removed after 2003-aug-31. Use endIndex() instead.
+     * @return The codepoint as an int
+     * @see #endIndex
+     */
+    public int getEndIndex() {
+        return text.getLength()-1;
+    }
+    /**
+     * Return the first character in the normalized text->  This resets
+     * the <tt>Normalizer's</tt> position to the beginning of the text->
+     * @return The codepoint as an int
+     */
+    public int first() {
+		reset();
+		return next();
+    }
+	
+    /**
+     * Return the last character in the normalized text->  This resets
+     * the <tt>Normalizer's</tt> position to be just before the
+     * the input text corresponding to that normalized character.
+     * @return The codepoint as an int
+     */
+    public int last() {
+        text.setToLimit();
+		currentIndex=nextIndex=text.getIndex();
+		clearBuffer();
+		return previous();
+    }
+	
+    /**
+     * Retrieve the current iteration position in the input text that is
+     * being normalized.  This method is useful in applications such as
+     * searching, where you need to be able to determine the position in
+     * the input text that corresponds to a given normalized output character.
+     * <p>
+     * <b>Note:</b> This method sets the position in the <em>input</em>, while
+     * {@link #next} and {@link #previous} iterate through characters in the
+     * <em>output</em>.  This means that there is not necessarily a one-to-one
+     * correspondence between characters returned by <tt>next</tt> and
+     * <tt>previous</tt> and the indices passed to and returned from
+     * <tt>setIndex</tt> and {@link #getIndex}.
+     *@return The current iteration position
+     */
+    public int getIndex(){
+		if(bufferPos<bufferLimit) {
+		    return currentIndex;
+		} else {
+		    return nextIndex;
+		}
+    }
+	
+    /**
+     * Retrieve the index of the start of the input text->  This is the begin index
+     * of the <tt>CharacterIterator</tt> or the start (i.e. 0) of the <tt>String</tt>
+     * over which this <tt>Normalizer</tt> is iterating
+     * @return The current iteration position
+     */
+    public int startIndex(){
+		return 0;
+    }
+	
+    /**
+     * Retrieve the index of the end of the input text->  This is the end index
+     * of the <tt>CharacterIterator</tt> or the length of the <tt>String</tt>
+     * over which this <tt>Normalizer</tt> is iterating
+     * @return The current iteration position
+     */
+    public int endIndex(){
+		return text.getLength();
+    }
+    
+    //-------------------------------------------------------------------------
+    // Property access methods
+    //-------------------------------------------------------------------------
+	/**
+     * Set the normalization mode for this object.
+     * <p>
+     * <b>Note:</b>If the normalization mode is changed while iterating
+     * over a string, calls to {@link #next} and {@link #previous} may
+     * return previously buffers characters in the old normalization mode
+     * until the iteration is able to re-sync at the next base character.
+     * It is safest to call {@link #setText setText()}, {@link #first},
+     * {@link #last}, etc. after calling <tt>setMode</tt>.
+     * <p>
+     * @param newMode the new mode for this <tt>Normalizer</tt>.
+     * The supported modes are:
+     * <ul>
+     *  <li>{@link #COMPOSE}        - Unicode canonical decompositiion
+     *                                  followed by canonical composition.
+     *  <li>{@link #COMPOSE_COMPAT} - Unicode compatibility decompositiion
+     *                                  follwed by canonical composition.
+     *  <li>{@link #DECOMP}         - Unicode canonical decomposition
+     *  <li>{@link #DECOMP_COMPAT}  - Unicode compatibility decomposition.
+     *  <li>{@link #NO_OP}          - Do nothing but return characters
+     *                                  from the underlying input text.
+     * </ul>
+     *
+     * @see #getMode
+     */
+    public void setMode(Mode newMode){
+		mode = newMode;
+    }
+	/**
+     * Return the basic operation performed by this <tt>Normalizer</tt>
+     *
+     * @see #setMode
+     */
+    public Mode getMode() {
+		return mode;
+    }
+	/**
+     * Set options that affect this <tt>Normalizer</tt>'s operation.
+     * Options do not change the basic composition or decomposition operation
+     * that is being performed , but they control whether
+     * certain optional portions of the operation are done.
+     * Currently the only available option is:
+     * <p>
+     * <ul>
+     *   <li>{@link #IGNORE_HANGUL} - Do not decompose Hangul syllables into the Jamo alphabet
+     *          and vice-versa.  This option is off by default (<i>i.e.</i> Hangul processing
+     *          is enabled) since the Unicode standard specifies that Hangul to Jamo
+     *          is a canonical decomposition.  For any of the standard Unicode Normalization
+     *          Forms, you should leave this option off.
+     * </ul>
+     * <p>
+     * @param   option  the option whose value is to be set.
+     * @param   value   the new setting for the option.  Use <tt>true</tt> to
+     *                  turn the option on and <tt>false</tt> to turn it off.
+     *
+     * @see #getOption
+     * @deprecated To be removed after 2003-Aug-31.
+     */
+    public void setOption(int option,boolean value) {
+		if (value) {
+		    options |= option;
+		} else {
+		    options &= (~option);
+		}
+    }
+	
+    /**
+     * Determine whether an option is turned on or off.
+     * <p>
+     * @see #setOption
+     * @deprecated To be removed after 2003-Aug-31.
+     */
+    public int getOption(int option){
+	    if((options & option)!=0){
+            return 1 ;
+        }else{
+            return 0;
+        }
+    }
+    
+    /**
+     * Gets the underlying text storage
+     * @param fillIn the char buffer to fill the UTF-16 units.
+     *         The length of the buffer should be equal to the length of the
+     *         underlying text storage
+     * @throws IndexOutOfBoundsException
+     * @see   #getLength
+     */
+    public int getText(char[] fillIn){
+        return text.getText(fillIn);
+    }
+    
+    /**
+     * Gets the length of underlying text storage
+     * @return the length
+     */ 
+    public int getLength(){
+        return text.getLength();
+    }
+    
+    /**
+     * Returns the text under iteration as a string
+     * @param result a copy of the text under iteration.
+     */
+    public String getText(){
+        return text.getText();
+    }
+    
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position is set to the beginning of the input text->
+     * @param newText   The new string to be normalized.
+     */
+    public void setText(StringBuffer newText){
+        
+        UCharacterIterator newIter = UCharacterIterator.getInstance(newText);
+        if (newIter == null) {
+                throw new InternalError("Could not create a new UCharacterIterator");
+        }  
+        text = newIter;
+        reset();
+    }
+	
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position is set to the beginning of the input text->
+     * @param newText   The new string to be normalized.
+     */
+    public void setText(char[] newText){
+        
+        UCharacterIterator newIter = UCharacterIterator.getInstance(newText);
+        if (newIter == null) {
+                throw new InternalError("Could not create a new UCharacterIterator");
+        }  
+        text = newIter;
+        reset();
+    }
+    
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position is set to the beginning of the input text->
+     * @param newText   The new string to be normalized.
+     */
+    public void setText(String newText){
+	    
+		UCharacterIterator newIter = UCharacterIterator.getInstance(newText);
+		if (newIter == null) {
+	            throw new InternalError("Could not create a new UCharacterIterator");
+		}  
+		text = newIter;
+		reset();
+    }
+    
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position is set to the beginning of the input text->
+     * @param newText   The new string to be normalized.
+     */
+    public void setText(CharacterIterator newText){
+        
+        UCharacterIterator newIter = UCharacterIterator.getInstance(newText);
+        if (newIter == null) {
+            throw new InternalError("Could not create a new UCharacterIterator");
+        }  
+        text = newIter;
+        reset();
+    }
+    
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position is set to the beginning of the string.
+     * @param newText   The new string to be normalized.
+     */
+    //Internal method for now
+    public void setText(UCharacterIterator newText){ 
+        try{
+	        UCharacterIterator newIter = (UCharacterIterator)newText.clone();
+		    if (newIter == null) {
+			    throw new InternalError("Could not create a new UCharacterIterator");
+		    }
+		    text = newIter;
+		    reset();
+        }catch(CloneNotSupportedException e){
+            throw new InternalError("Could not clone the UCharacterIterator");
+        }
+    }
+    
+    //-------------------------------------------------------------------------
+    // Private utility methods
+    //-------------------------------------------------------------------------
+    
+
+    /* backward iteration ------------------------------------------------------- */
+               
+    /*
+     * read backwards and get norm32
+     * return 0 if the character is <minC
+     * if c2!=0 then (c2, c) is a surrogate pair (reversed - c2 is first 
+     * surrogate but read second!)
+     */
+
+    private static  long getPrevNorm32(UCharacterIterator src, 
+                                                  int/*unsigned*/ minC, 
+                                                  int/*unsigned*/ mask, 
+                                                  char[] chars) {
+        long norm32;
+        int ch=0;
+        /* need src.hasPrevious() */
+        if((ch=src.previous()) == UCharacterIterator.DONE){
+            return 0;
+        }
+        chars[0]=(char)ch;
+        chars[1]=0;
+    
+        /* check for a surrogate before getting norm32 to see if we need to 
+         * predecrement further */
+        if(chars[0]<minC) {
+            return 0;
+        } else if(!UTF16.isSurrogate(chars[0])) {
+            return NormalizerImpl.getNorm32(chars[0]);
+        } else if(UTF16.isLeadSurrogate(chars[0]) || (src.getIndex()==0)) {
+            /* unpaired surrogate */
+            chars[1]=(char)src.current();
+            return 0;
+        } else if(UTF16.isLeadSurrogate(chars[1]=(char)src.previous())) {
+            norm32=NormalizerImpl.getNorm32(chars[1]);
+            if((norm32&mask)==0) {
+                /* all surrogate pairs with this lead surrogate have irrelevant 
+                 * data */
+                return 0;
+            } else {
+                /* norm32 must be a surrogate special */
+                return NormalizerImpl.getNorm32FromSurrogatePair(norm32, chars[0]);
+            }
+        } else {
+            /* unpaired second surrogate, undo the c2=src.previous() movement */
+            src.moveIndex( 1);
+            return 0;
+        }
+    }
+ 
+    private interface IsPrevBoundary{
+        public boolean isPrevBoundary(UCharacterIterator src,
+                       int/*unsigned*/ minC, 
+                       int/*unsigned*/ mask, 
+                       char[] chars);
+    }
+    private static final class IsPrevNFDSafe implements IsPrevBoundary{
+        /*
+         * for NF*D:
+         * read backwards and check if the lead combining class is 0
+         * if c2!=0 then (c2, c) is a surrogate pair (reversed - c2 is first 
+         * surrogate but read second!)
+         */
+        public boolean isPrevBoundary(UCharacterIterator src,
+                                      int/*unsigned*/ minC, 
+                                      int/*unsigned*/ ccOrQCMask, 
+                                      char[] chars) {
+    
+            return NormalizerImpl.isNFDSafe(getPrevNorm32(src, minC, ccOrQCMask, chars), ccOrQCMask, ccOrQCMask& NormalizerImpl.QC_MASK);
+        }
+    }
+    
+    private static final class IsPrevTrueStarter implements IsPrevBoundary{
+        /*
+         * read backwards and check if the character is (or its decomposition 
+         * begins with) a "true starter" (cc==0 and NF*C_YES)
+         * if c2!=0 then (c2, c) is a surrogate pair (reversed - c2 is first 
+         * surrogate but read second!)
+         */
+        public boolean isPrevBoundary(UCharacterIterator src, 
+                                         int/*unsigned*/ minC,
+                                         int/*unsigned*/ ccOrQCMask,
+                                         char[] chars) {
+            long norm32; 
+            int/*unsigned*/ decompQCMask;
+            
+            decompQCMask=(ccOrQCMask<<2)&0xf; /*decomposition quick check mask*/
+            norm32=getPrevNorm32(src, minC, ccOrQCMask|decompQCMask, chars);
+            return NormalizerImpl.isTrueStarter(norm32, ccOrQCMask, decompQCMask);
+        }
+    }
+    
+    private static int findPreviousIterationBoundary(UCharacterIterator src,
+                                                     IsPrevBoundary obj, 
+                                                     int/*unsigned*/ minC,
+                                                     int/*mask*/ mask,
+                                                     char[] buffer, 
+                                                     int[] startIndex) {
+        char[] chars=new char[2];
+        boolean isBoundary;
+    
+         /* fill the buffer from the end backwards */
+        startIndex[0] = buffer.length;
+        chars[0]=0;
+        while(src.getIndex()>0 && chars[0]!=UCharacterIterator.DONE) {
+            isBoundary=obj.isPrevBoundary(src, minC, mask, chars);
+    
+            /* always write this character to the front of the buffer */
+            /* make sure there is enough space in the buffer */
+            if(startIndex[0] < (chars[1]==0 ? 1 : 2)) {
+
+                // grow the buffer
+                char[] newBuf = new char[buffer.length*2];
+                /* move the current buffer contents up */
+                System.arraycopy(buffer,startIndex[0],newBuf,
+                                 newBuf.length-(buffer.length-startIndex[0]),
+                                 buffer.length-startIndex[0]);
+                //adjust the startIndex
+                startIndex[0]+=newBuf.length-buffer.length;
+                
+                buffer=newBuf;
+                newBuf=null;                
+                
+            }
+    
+            buffer[--startIndex[0]]=chars[0];
+            if(chars[1]!=0) {
+                buffer[--startIndex[0]]=chars[1];
+            }
+    
+            /* stop if this just-copied character is a boundary */
+            if(isBoundary) {
+                break;
+            }
+        }
+    
+        /* return the length of the buffer contents */
+        return buffer.length-startIndex[0];
+    }
+    
+    private static int previous(UCharacterIterator src,
+                   char[] dest, int destStart, int destLimit, 
+                   Mode mode, 
+                   /*int options,*/
+                   boolean doNormalize, 
+                   boolean[] pNeededToNormalize) {
+
+        IsPrevBoundary isPreviousBoundary;
+        int destLength, bufferLength;
+        int/*unsigned*/ mask;
+        int[] startIndex= new int[1];
+        int c,c2;
+        
+        char minC;
+        int destCapacity = destLimit-destStart;
+        destLength=0;
+        char[] buffer = new char[100];
+        
+        if(pNeededToNormalize!=null) {
+            pNeededToNormalize[0]=false;
+        }
+        minC = (char)mode.getMinC();
+        mask = mode.getMask();
+        isPreviousBoundary = mode.getPrevBoundary();
+
+        if(isPreviousBoundary==null){
+            destLength=0;
+            if((c=src.previous())>=0) {
+                destLength=1;
+                if(UTF16.isTrailSurrogate((char)c)){
+                    c2= src.previous();
+                    if(c2!= UCharacterIterator.DONE){
+                        if(UTF16.isLeadSurrogate((char)c2)) {
+                            if(destCapacity>=2) {
+                                dest[1]=(char)c; // trail surrogate 
+                                destLength=2;
+                            }
+                            // lead surrogate to be written below 
+                            c=c2; 
+                        } else {
+                            src.moveIndex(1);
+                        }
+                    }
+                }
+    
+                if(destCapacity>0) {
+                    dest[0]=(char)c;
+                }
+            }
+            return destLength;
+         }
+    
+        bufferLength=findPreviousIterationBoundary(src,
+                                                   isPreviousBoundary, 
+                                                   minC, mask,buffer, 
+                                                   startIndex);
+        if(bufferLength>0) {
+            if(doNormalize) {
+                destLength=Normalizer.normalize(buffer,startIndex[0],
+                                     startIndex[0]+bufferLength,
+                                     dest, destStart,destLimit,mode);
+                
+                if(pNeededToNormalize!=null) {
+                    pNeededToNormalize[0]=(boolean)(destLength!=bufferLength ||
+                                                    Utility.arrayRegionMatches(
+                                                            buffer,0,dest,
+                                                            destStart,destLimit
+                                                            ));
+                }
+            } else {
+                /* just copy the source characters */
+                if(destCapacity>0) {
+                    System.arraycopy(buffer,startIndex[0],dest,0,
+                                        (bufferLength<destCapacity) ? 
+                                                    bufferLength : destCapacity
+                                    );
+                }
+            }
+        } 
+
+    
+        return destLength;
+    }
+
+ 
+    
+    /* forward iteration -------------------------------------------------------- */
+    /*
+     * read forward and check if the character is a next-iteration boundary
+     * if c2!=0 then (c, c2) is a surrogate pair
+     */
+    private interface IsNextBoundary{
+        boolean isNextBoundary(UCharacterIterator src, 
+                               int/*unsigned*/ minC, 
+                               int/*unsigned*/ mask, 
+                               int[] chars);
+    }   
+    /*
+     * read forward and get norm32
+     * return 0 if the character is <minC
+     * if c2!=0 then (c2, c) is a surrogate pair
+     * always reads complete characters
+     */
+    private static long /*unsigned*/ getNextNorm32(UCharacterIterator src, 
+                                                  int/*unsigned*/ minC, 
+                                                  int/*unsigned*/ mask, 
+                                                  int[] chars) {
+        long norm32;
+    
+        /* need src.hasNext() to be true */
+        chars[0]=src.next();
+        chars[1]=0;
+    
+        if(chars[0]<minC) {
+            return 0;
+        }
+    
+        norm32=NormalizerImpl.getNorm32((char)chars[0]);
+        if(UTF16.isLeadSurrogate((char)chars[0])) {
+            if(src.current()!=UCharacterIterator.DONE &&
+                        UTF16.isTrailSurrogate((char)(chars[1]=src.current()))){
+                src.moveIndex(1); /* skip the c2 surrogate */
+                if((norm32&mask)==0) {
+                    /* irrelevant data */
+                    return 0;
+                } else {
+                    /* norm32 must be a surrogate special */
+                    return NormalizerImpl.getNorm32FromSurrogatePair(norm32, (char)chars[1]);
+                }
+            } else {
+                /* unmatched surrogate */
+                return 0;
+            }
+        }
+        return norm32;
+    }
+
+
+    /*
+     * for NF*D:
+     * read forward and check if the lead combining class is 0
+     * if c2!=0 then (c, c2) is a surrogate pair
+     */
+    private static final class IsNextNFDSafe implements IsNextBoundary{
+        public boolean isNextBoundary(UCharacterIterator src, 
+                               int/*unsigned*/ minC, 
+                               int/*unsigned*/ ccOrQCMask, 
+                               int[] chars) {
+            return NormalizerImpl.isNFDSafe(getNextNorm32(src, minC, ccOrQCMask, chars), 
+                             ccOrQCMask, ccOrQCMask&NormalizerImpl.QC_MASK);
+       }
+    }
+    
+    /*
+     * for NF*C:
+     * read forward and check if the character is (or its decomposition begins 
+     * with) a "true starter" (cc==0 and NF*C_YES)
+     * if c2!=0 then (c, c2) is a surrogate pair
+     */
+    private static final class IsNextTrueStarter implements IsNextBoundary{
+        public boolean isNextBoundary(UCharacterIterator src, 
+                               int/*unsigned*/ minC, 
+                               int/*unsigned*/ ccOrQCMask, 
+                               int[] chars) {
+            long norm32;
+            int/*unsigned*/ decompQCMask;
+            
+            decompQCMask=(ccOrQCMask<<2)&0xf; /*decomposition quick check mask*/
+            norm32=getNextNorm32(src, minC, ccOrQCMask|decompQCMask, chars);
+            return NormalizerImpl.isTrueStarter(norm32, ccOrQCMask, decompQCMask);
+        }
+    }
+    
+    private static int findNextIterationBoundary(UCharacterIterator src,
+                                                 IsNextBoundary obj, 
+                                                 int/*unsigned*/ minC, 
+                                                 int/*unsigned*/ mask,
+                                                 char[] buffer) {
+        int[] chars = new int[2];
+        int bufferIndex =0;
+        
+        if(src.current()==UCharacterIterator.DONE){
+            return 0;
+        }
+        /* get one character and ignore its properties */
+        chars[0]=src.next();
+        buffer[0]=(char)chars[0];
+        bufferIndex=1;
+        
+        if(UTF16.isLeadSurrogate((char)chars[0])&& 
+                                        src.current()!=UCharacterIterator.DONE){
+            if(UTF16.isTrailSurrogate((char)(chars[1]=src.next()))){
+                buffer[bufferIndex++]=(char)chars[1];
+            } else {
+                src.moveIndex(-1); /* back out the non-trail-surrogate */
+            }
+        }
+    
+        /* get all following characters until we see a boundary */
+        /* checking hasNext() instead of c!=DONE on the off-chance that U+ffff 
+         * is part of the string */
+        while( src.current()!=UCharacterIterator.DONE) {
+            if(obj.isNextBoundary(src, minC, mask, chars)) {
+                /* back out the latest movement to stop at the boundary */
+                src.moveIndex(chars[1]==0 ? -1 : -2);
+                break;
+            } else {
+                if(bufferIndex+(chars[1]==0 ? 1 : 2)<=buffer.length) {
+                    buffer[bufferIndex++]=(char)chars[0];
+                    if(chars[1]!=0) {
+                        buffer[bufferIndex++]=(char)chars[1];
+                    }
+                }else{
+                    char[] newBuf = new char[buffer.length    *2];
+                    System.arraycopy(buffer,0,newBuf,0,bufferIndex);
+                    buffer = newBuf;
+                    buffer[bufferIndex++]=(char)chars[0];
+                    if(chars[1]!=0) {
+                        buffer[bufferIndex++]=(char)chars[1];
+                    }
+                }
+            }
+        }
+    
+        /* return the length of the buffer contents */
+        return bufferIndex;
+    }
+    
+    private static int next(UCharacterIterator src,
+                           char[] dest, int destStart, int destLimit,
+                           Normalizer.Mode mode, /*int options,*/
+                           boolean doNormalize, boolean[] pNeededToNormalize){
+        char[] buffer=new char[100];
+        IsNextBoundary isNextBoundary;
+        int /*unsigned*/ mask;
+        int /*unsigned*/ bufferLength;
+        int c,c2;
+        char minC;
+        int destCapacity = destLimit - destStart;
+        int destLength = 0;
+        int[] startIndex = new int[1];
+        if(pNeededToNormalize!=null) {
+            pNeededToNormalize[0]=false;
+        }
+
+        minC = (char)mode.getMinC();
+        mask = mode.getMask();
+        isNextBoundary = mode.getNextBoundary();
+        
+        if(isNextBoundary==null){
+            destLength=0;
+            c=src.next();
+            if(c!=UCharacterIterator.DONE) {
+                destLength=1;
+                if(UTF16.isLeadSurrogate((char)c)){
+                    c2= src.next();
+                    if(c2!= UCharacterIterator.DONE) {
+                        if(UTF16.isTrailSurrogate((char)c2)) {
+                            if(destCapacity>=2) {
+                                dest[1]=(char)c2; // trail surrogate 
+                                destLength=2;
+                            }
+                            // lead surrogate to be written below 
+                        } else {
+                            src.moveIndex(-1);
+                        }
+                    }
+                }
+    
+                if(destCapacity>0) {
+                    dest[0]=(char)c;
+                }
+            }
+            return destLength;
+        }
+        
+        bufferLength=findNextIterationBoundary(src,isNextBoundary, minC, mask,
+                                               buffer);
+        if(bufferLength>0) {
+            if(doNormalize) {
+                destLength=mode.normalize(buffer,startIndex[0],bufferLength,
+                                                   dest,destStart,destLimit);
+                
+                if(pNeededToNormalize!=null) {
+                    pNeededToNormalize[0]=(boolean)(destLength!=bufferLength ||
+                                Utility.arrayRegionMatches(buffer,startIndex[0],
+                                                           dest,destStart,
+                                                           destLength));
+                }
+            } else {
+                /* just copy the source characters */
+                if(destCapacity>0) {
+                    System.arraycopy(buffer,0,dest,destStart,
+                                        Math.min(bufferLength,destCapacity)
+                                     );
+                }
+                                      
+               
+            }
+        }
+        return destLength;
+    } 
+
+    private void clearBuffer() {
+        bufferLimit=bufferStart=bufferPos=0;
+    }
+	
+    private boolean nextNormalize() {
+        
+		clearBuffer();
+		currentIndex=nextIndex;
+		text.setIndex(nextIndex);
+	        
+		bufferLimit=next(text,buffer,bufferStart,buffer.length,mode,true,null);
+	                
+		nextIndex=text.getIndex();
+		return (bufferLimit>0);
+    }
+	
+    private boolean	previousNormalize() {
+
+		clearBuffer();
+		nextIndex=currentIndex;
+		text.setIndex(currentIndex);
+		bufferLimit=previous(text,buffer,bufferStart,buffer.length,mode,true,null);
+		
+		currentIndex=text.getIndex();
+	    bufferPos = bufferLimit;
+		return bufferLimit>0;
+    }
+    
+    private int getCodePointAt(int index){
+        if( UTF16.isSurrogate(buffer[index])){
+            if(UTF16.isLeadSurrogate(buffer[index])){
+                if((index+1)<bufferLimit &&
+                                    UTF16.isTrailSurrogate(buffer[index+1])){
+		               return UCharacterProperty.getRawSupplementary(
+				        	          buffer[index], 
+                                      buffer[index+1]
+                                  );
+                }
+            }else if(UTF16.isTrailSurrogate(buffer[index])){
+                if(index>0 && UTF16.isLeadSurrogate(buffer[index-1])){
+                    return UCharacterProperty.getRawSupplementary(
+								     buffer[index-1],
+								     buffer[index]
+								  );
+                }
+            }   
+        }
+        return buffer[index];
+        
+    }
+                  
+}
diff --git a/src/com/ibm/icu/text/NullTransliterator.java b/src/com/ibm/icu/text/NullTransliterator.java
new file mode 100755
index 0000000..ccabe3d
--- /dev/null
+++ b/src/com/ibm/icu/text/NullTransliterator.java
@@ -0,0 +1,43 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/NullTransliterator.java,v $ 
+ * $Date: 2002/02/16 03:06:11 $ 
+ * $Revision: 1.10 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+import java.util.*;
+
+/**
+ * A transliterator that leaves text unchanged.
+ */
+public class NullTransliterator extends Transliterator {
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 2000. All rights reserved.";
+
+    /**
+     * Package accessible IDs for this transliterator.
+     */
+    static String SHORT_ID = "Null";
+    static String _ID      = "Any-Null";
+
+    /**
+     * Constructs a transliterator.
+     */
+    public NullTransliterator() {
+        super(_ID, null);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean incremental) {
+        offsets.start = offsets.limit;
+    }
+}
diff --git a/src/com/ibm/icu/text/NumberFormat.java b/src/com/ibm/icu/text/NumberFormat.java
new file mode 100755
index 0000000..aae4572
--- /dev/null
+++ b/src/com/ibm/icu/text/NumberFormat.java
@@ -0,0 +1,934 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/NumberFormat.java,v $ 
+ * $Date: 2002/03/20 05:11:15 $ 
+ * $Revision: 1.13 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICULocaleData;
+
+import java.io.InvalidObjectException; //Bug 4185761 [Richard/GCL]
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+/**
+ * <code>NumberFormat</code> is the abstract base class for all number
+ * formats. This class provides the interface for formatting and parsing
+ * numbers. <code>NumberFormat</code> also provides methods for determining
+ * which locales have number formats, and what their names are.
+ *
+ * <p><strong>This is an enhanced version of <code>NumberFormat</code> that
+ * is based on the standard version in the JDK.  New or changed functionality
+ * is labeled
+ * <strong><font face=helvetica color=red>NEW</font></strong> or
+ * <strong><font face=helvetica color=red>CHANGED</font></strong>.</strong>
+ *
+ * <p>
+ * <code>NumberFormat</code> helps you to format and parse numbers for any locale.
+ * Your code can be completely independent of the locale conventions for
+ * decimal points, thousands-separators, or even the particular decimal
+ * digits used, or whether the number format is even decimal.
+ *
+ * <p>
+ * To format a number for the current Locale, use one of the factory
+ * class methods:
+ * <blockquote>
+ * <pre>
+ *  myString = NumberFormat.getInstance().format(myNumber);
+ * </pre>
+ * </blockquote>
+ * If you are formatting multiple numbers, it is
+ * more efficient to get the format and use it multiple times so that
+ * the system doesn't have to fetch the information about the local
+ * language and country conventions multiple times.
+ * <blockquote>
+ * <pre>
+ * NumberFormat nf = NumberFormat.getInstance();
+ * for (int i = 0; i < a.length; ++i) {
+ *     output.println(nf.format(myNumber[i]) + "; ");
+ * }
+ * </pre>
+ * </blockquote>
+ * To format a number for a different Locale, specify it in the
+ * call to <code>getInstance</code>.
+ * <blockquote>
+ * <pre>
+ * NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
+ * </pre>
+ * </blockquote>
+ * You can also use a <code>NumberFormat</code> to parse numbers:
+ * <blockquote>
+ * <pre>
+ * myNumber = nf.parse(myString);
+ * </pre>
+ * </blockquote>
+ * Use <code>getInstance</code> or <code>getNumberInstance</code> to get the
+ * normal number format. Use <code>getIntegerInstance</code> to get an
+ * integer number format. Use <code>getCurrencyInstance</code> to get the
+ * currency number format. And use <code>getPercentInstance</code> to get a
+ * format for displaying percentages. With this format, a fraction like
+ * 0.53 is displayed as 53%.
+ *
+ * <p>
+ * You can also control the display of numbers with such methods as
+ * <code>setMinimumFractionDigits</code>.
+ * If you want even more control over the format or parsing,
+ * or want to give your users more control,
+ * you can try casting the <code>NumberFormat</code> you get from the factory methods
+ * to a <code>DecimalFormat</code>. This will work for the vast majority
+ * of locales; just remember to put it in a <code>try</code> block in case you
+ * encounter an unusual one.
+ *
+ * <p>
+ * NumberFormat and DecimalFormat are designed such that some controls
+ * work for formatting and others work for parsing.  The following is
+ * the detailed description for each these control methods,
+ * <p>
+ * setParseIntegerOnly : only affects parsing, e.g.
+ * if true,  "3456.78" -> 3456 (and leaves the parse position just after index 6)
+ * if false, "3456.78" -> 3456.78 (and leaves the parse position just after index 8)
+ * This is independent of formatting.  If you want to not show a decimal point
+ * where there might be no digits after the decimal point, use
+ * setDecimalSeparatorAlwaysShown.
+ * <p>
+ * setDecimalSeparatorAlwaysShown : only affects formatting, and only where
+ * there might be no digits after the decimal point, such as with a pattern
+ * like "#,##0.##", e.g.,
+ * if true,  3456.00 -> "3,456."
+ * if false, 3456.00 -> "3456"
+ * This is independent of parsing.  If you want parsing to stop at the decimal
+ * point, use setParseIntegerOnly.
+ *
+ * <p>
+ * You can also use forms of the <code>parse</code> and <code>format</code>
+ * methods with <code>ParsePosition</code> and <code>FieldPosition</code> to
+ * allow you to:
+ * <ul>
+ * <li> progressively parse through pieces of a string
+ * <li> align the decimal point and other areas
+ * </ul>
+ * For example, you can align numbers in two ways:
+ * <ol>
+ * <li> If you are using a monospaced font with spacing for alignment,
+ *      you can pass the <code>FieldPosition</code> in your format call, with
+ *      <code>field</code> = <code>INTEGER_FIELD</code>. On output,
+ *      <code>getEndIndex</code> will be set to the offset between the
+ *      last character of the integer and the decimal. Add
+ *      (desiredSpaceCount - getEndIndex) spaces at the front of the string.
+ *
+ * <li> If you are using proportional fonts,
+ *      instead of padding with spaces, measure the width
+ *      of the string in pixels from the start to <code>getEndIndex</code>.
+ *      Then move the pen by
+ *      (desiredPixelWidth - widthToAlignmentPoint) before drawing the text.
+ *      It also works where there is no decimal, but possibly additional
+ *      characters at the end, e.g., with parentheses in negative
+ *      numbers: "(12)" for -12.
+ * </ol>
+ *
+ * <h4>Synchronization</h4>
+ * <p>
+ * Number formats are generally not synchronized. It is recommended to create 
+ * separate format instances for each thread. If multiple threads access a format
+ * concurrently, it must be synchronized externally. 
+ * <p>
+ *
+ * see          DecimalFormat
+ * see          java.text.ChoiceFormat
+ * @version      $Revision: 1.13 $
+ * @author       Mark Davis
+ * @author       Helena Shih
+ * @author       Alan Liu
+ */
+public abstract class NumberFormat extends Format{
+
+    /**
+     * Field constant used to construct a FieldPosition object. Signifies that
+     * the position of the integer part of a formatted number should be returned.
+     * @see java.text.FieldPosition
+     */
+    public static final int INTEGER_FIELD = 0;
+
+    /**
+     * Field constant used to construct a FieldPosition object. Signifies that
+     * the position of the fraction part of a formatted number should be returned.
+     * @see java.text.FieldPosition
+     */
+    public static final int FRACTION_FIELD = 1;
+
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Format an object.  Change: recognizes <code>BigInteger</code>
+     * and <code>BigDecimal</code> objects now.
+     */
+    public final StringBuffer format(Object number,
+                                     StringBuffer toAppendTo,
+                                     FieldPosition pos)
+    {
+        if (number instanceof Long) {
+            return format(((Long)number).longValue(), toAppendTo, pos);
+        } else if (number instanceof BigInteger) {
+            return format((BigInteger) number, toAppendTo, pos);
+        } else if (number instanceof java.math.BigDecimal) {
+            return format((java.math.BigDecimal) number, toAppendTo, pos);
+        } else if (number instanceof com.ibm.icu.math.BigDecimal) {
+            return format((com.ibm.icu.math.BigDecimal) number, toAppendTo, pos);
+        } else if (number instanceof Number) {
+            return format(((Number)number).doubleValue(), toAppendTo, pos);
+        } else {
+            throw new IllegalArgumentException("Cannot format given Object as a Number");
+        }
+    }
+
+    public final Object parseObject(String source,
+                                    ParsePosition parsePosition)
+    {
+        return parse(source, parsePosition);
+    }
+
+   /**
+     * Specialization of format.
+     * @see java.text.Format#format
+     */
+    public final String format (double number) {
+        return format(number,new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+   /**
+     * Specialization of format.
+     * @see java.text.Format#format
+     */
+    public final String format (long number) {
+        return format(number,new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Convenience method to format a BigInteger.
+     */
+    public final String format(BigInteger number) {
+        return format(number, new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Convenience method to format a BigDecimal.
+     */
+    public final String format(java.math.BigDecimal number) {
+        return format(number, new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+    /* this has been removed pending addition of com.ibm.icu.math packge to ICU4J
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Convenience method to format a BigDecimal.
+     */
+    public final String format(com.ibm.icu.math.BigDecimal number) {
+        return format(number, new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+   /**
+     * Specialization of format.
+     * @see java.text.Format#format
+     */
+    public abstract StringBuffer format(double number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos);
+
+   /**
+     * Specialization of format.
+     * @see java.text.Format#format
+     */
+    public abstract StringBuffer format(long number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos);
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Format a BigInteger.
+     */
+    public abstract StringBuffer format(BigInteger number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos); 
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Format a BigDecimal.
+     */
+    public abstract StringBuffer format(java.math.BigDecimal number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos);
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Format a BigDecimal.
+     */
+    public abstract StringBuffer format(com.ibm.icu.math.BigDecimal number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos);
+   
+   /**
+     * Returns a Long if possible (e.g., within the range [Long.MIN_VALUE,
+     * Long.MAX_VALUE] and with no decimals), otherwise a Double.
+     * If IntegerOnly is set, will stop at a decimal
+     * point (or equivalent; e.g., for rational numbers "1 2/3", will stop
+     * after the 1).
+     * Does not throw an exception; if no object can be parsed, index is
+     * unchanged!
+     * @see #isParseIntegerOnly
+     * @see java.text.Format#parseObject
+     */
+    public abstract Number parse(String text, ParsePosition parsePosition);
+
+    /**
+     * Parses text from the beginning of the given string to produce a number.
+     * The method may not use the entire text of the given string.
+     *
+     * @param text A String whose beginning should be parsed.
+     * @return A Number parsed from the string.
+     * @exception ParseException if the beginning of the specified string 
+     * cannot be parsed.
+     * @see #format
+     */
+    //Bug 4375399 [Richard/GCL]
+    public Number parse(String text) throws ParseException {
+        ParsePosition parsePosition = new ParsePosition(0);
+        Number result = parse(text, parsePosition);
+        if (parsePosition.getIndex() == 0) {
+            throw new ParseException("Unparseable number: \"" + text + "\"",
+                                     //PP:parsePosition.errorIndex);
+                                     0);
+        }
+        return result;
+    }
+
+    /**
+     * Returns true if this format will parse numbers as integers only.
+     * For example in the English locale, with ParseIntegerOnly true, the
+     * string "1234." would be parsed as the integer value 1234 and parsing
+     * would stop at the "." character.  Of course, the exact format accepted
+     * by the parse operation is locale dependant and determined by sub-classes
+     * of NumberFormat.
+     */
+    public boolean isParseIntegerOnly() {
+        return parseIntegerOnly;
+    }
+
+    /**
+     * Sets whether or not numbers should be parsed as integers only.
+     * @see #isParseIntegerOnly
+     */
+    public void setParseIntegerOnly(boolean value) {
+        parseIntegerOnly = value;
+    }
+
+    //============== Locale Stuff =====================
+
+    /**
+     * Returns the default number format for the current default locale.
+     * The default format is one of the styles provided by the other
+     * factory methods: getNumberInstance, getIntegerInstance,
+     * getCurrencyInstance or getPercentInstance.
+     * Exactly which one is locale dependant.
+     */
+    //Bug 4408066 [Richard/GCL]
+    public final static NumberFormat getInstance() {
+        return getInstance(Locale.getDefault(), NUMBERSTYLE);
+    }
+
+    /**
+     * Returns the default number format for the specified locale.
+     * The default format is one of the styles provided by the other
+     * factory methods: getNumberInstance, getCurrencyInstance or getPercentInstance.
+     * Exactly which one is locale dependant.
+     */
+    public static NumberFormat getInstance(Locale inLocale) {
+        return getInstance(inLocale, NUMBERSTYLE);
+    }
+
+    /**
+     * Returns a general-purpose number format for the current default locale.
+     */
+    public final static NumberFormat getNumberInstance() {
+        return getInstance(Locale.getDefault(), NUMBERSTYLE);
+    }
+
+    /**
+     * Returns a general-purpose number format for the specified locale.
+     */
+    public static NumberFormat getNumberInstance(Locale inLocale) {
+        return getInstance(inLocale, NUMBERSTYLE);
+    }
+
+    /**
+     * Returns an integer number format for the current default locale. The
+     * returned number format is configured to round floating point numbers
+     * to the nearest integer using IEEE half-even rounding (see {@link 
+     * com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN ROUND_HALF_EVEN}) for formatting,
+     * and to parse only the integer part of an input string (see {@link
+     * #isParseIntegerOnly isParseIntegerOnly}).
+     *
+     * @return a number format for integer values
+     */
+    //Bug 4408066 [Richard/GCL]
+    public final static NumberFormat getIntegerInstance() {
+        return getInstance(Locale.getDefault(), INTEGERSTYLE);
+    }
+
+    /**
+     * Returns an integer number format for the specified locale. The
+     * returned number format is configured to round floating point numbers
+     * to the nearest integer using IEEE half-even rounding (see {@link 
+     * com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN ROUND_HALF_EVEN}) for formatting,
+     * and to parse only the integer part of an input string (see {@link
+     * #isParseIntegerOnly isParseIntegerOnly}).
+     *
+     * @param inLocale the locale for which a number format is needed
+     * @return a number format for integer values
+     */
+    //Bug 4408066 [Richard/GCL]
+    public static NumberFormat getIntegerInstance(Locale inLocale) {
+        return getInstance(inLocale, INTEGERSTYLE);
+    }
+
+    /**
+     * Returns a currency format for the current default locale.
+     */
+    public final static NumberFormat getCurrencyInstance() {
+        return getInstance(Locale.getDefault(), CURRENCYSTYLE);
+    }
+
+    /**
+     * Returns a currency format for the specified locale.
+     */
+    public static NumberFormat getCurrencyInstance(Locale inLocale) {
+        return getInstance(inLocale, CURRENCYSTYLE);
+    }
+
+    /**
+     * Returns a percentage format for the current default locale.
+     */
+    public final static NumberFormat getPercentInstance() {
+        return getInstance(Locale.getDefault(), PERCENTSTYLE);
+    }
+
+    /**
+     * Returns a percentage format for the specified locale.
+     */
+    public static NumberFormat getPercentInstance(Locale inLocale) {
+        return getInstance(inLocale, PERCENTSTYLE);
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Returns a scientific format for the current default locale.
+     */
+    public final static NumberFormat getScientificInstance() {
+        return getInstance(Locale.getDefault(), SCIENTIFICSTYLE);
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Returns a scientific format for the specified locale.
+     */
+    public static NumberFormat getScientificInstance(Locale inLocale) {
+        return getInstance(inLocale, SCIENTIFICSTYLE);
+    }
+
+
+    /**
+     * Get the set of Locales for which NumberFormats are installed
+     * @return available locales
+     */
+    public static Locale[] getAvailableLocales() {
+        return ICULocaleData.getAvailableLocales("NumberPatterns");
+    }
+
+    /**
+     * Overrides hashCode
+     */
+    public int hashCode() {
+        return maximumIntegerDigits * 37 + maxFractionDigits;
+        // just enough fields for a reasonable distribution
+    }
+
+    /**
+     * Overrides equals
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (this == obj)
+            return true;
+        if (getClass() != obj.getClass())
+            return false;
+        NumberFormat other = (NumberFormat) obj;
+        return (maximumIntegerDigits == other.maximumIntegerDigits
+            && minimumIntegerDigits == other.minimumIntegerDigits
+            && maximumFractionDigits == other.maximumFractionDigits
+            && minimumFractionDigits == other.minimumFractionDigits
+            && groupingUsed == other.groupingUsed
+            && parseIntegerOnly == other.parseIntegerOnly);
+    }
+
+    /**
+     * Overrides Cloneable
+     */
+    public Object clone()
+    {
+        NumberFormat other = (NumberFormat) super.clone();
+        return other;
+    }
+
+    /**
+     * Returns true if grouping is used in this format. For example, in the
+     * English locale, with grouping on, the number 1234567 might be formatted
+     * as "1,234,567". The grouping separator as well as the size of each group
+     * is locale dependant and is determined by sub-classes of NumberFormat.
+     * @see #setGroupingUsed
+     */
+    public boolean isGroupingUsed() {
+        return groupingUsed;
+    }
+
+    /**
+     * Set whether or not grouping will be used in this format.
+     * @see #isGroupingUsed
+     */
+    public void setGroupingUsed(boolean newValue) {
+        groupingUsed = newValue;
+    }
+
+    /**
+     * Returns the maximum number of digits allowed in the integer portion of a
+     * number.
+     * @see #setMaximumIntegerDigits
+     */
+    public int getMaximumIntegerDigits() {
+        return maximumIntegerDigits;
+    }
+
+    /**
+     * Sets the maximum number of digits allowed in the integer portion of a
+     * number. MaximumIntegerDigits must be >= minimumIntegerDigits.  If the
+     * new value for maximumIntegerDigits is less than the current value
+     * of minimumIntegerDigits, then minimumIntegerDigits will also be set to
+     * the new value.
+     * @param newValue the maximum number of integer digits to be shown; if
+     * less than zero, then zero is used. The concrete subclass may enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMaximumIntegerDigits
+     */
+    public void setMaximumIntegerDigits(int newValue) {
+        maximumIntegerDigits = Math.max(0,newValue);
+        if (minimumIntegerDigits > maximumIntegerDigits)
+            minimumIntegerDigits = maximumIntegerDigits;
+    }
+
+    /**
+     * Returns the minimum number of digits allowed in the integer portion of a
+     * number.
+     * @see #setMinimumIntegerDigits
+     */
+    public int getMinimumIntegerDigits() {
+        return minimumIntegerDigits;
+    }
+
+    /**
+     * Sets the minimum number of digits allowed in the integer portion of a
+     * number.  MinimumIntegerDigits must be <= maximumIntegerDigits.  If the
+     * new value for minimumIntegerDigits exceeds the current value
+     * of maximumIntegerDigits, then maximumIntegerDigits will also be set to
+     * the new value
+     * @param newValue the minimum number of integer digits to be shown; if
+     * less than zero, then zero is used. The concrete subclass may enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMinimumIntegerDigits
+     */
+    public void setMinimumIntegerDigits(int newValue) {
+        minimumIntegerDigits = Math.max(0,newValue);
+        if (minimumIntegerDigits > maximumIntegerDigits)
+            maximumIntegerDigits = minimumIntegerDigits;
+    }
+
+    /**
+     * Returns the maximum number of digits allowed in the fraction portion of a
+     * number.
+     * @see #setMaximumFractionDigits
+     */
+    public int getMaximumFractionDigits() {
+        return maximumFractionDigits;
+    }
+
+    /**
+     * Sets the maximum number of digits allowed in the fraction portion of a
+     * number. MaximumFractionDigits must be >= minimumFractionDigits.  If the
+     * new value for maximumFractionDigits is less than the current value
+     * of minimumFractionDigits, then minimumFractionDigits will also be set to
+     * the new value.
+     * @param newValue the maximum number of fraction digits to be shown; if
+     * less than zero, then zero is used. The concrete subclass may enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMaximumFractionDigits
+     */
+    public void setMaximumFractionDigits(int newValue) {
+        maximumFractionDigits = Math.max(0,newValue);
+        if (maximumFractionDigits < minimumFractionDigits)
+            minimumFractionDigits = maximumFractionDigits;
+    }
+
+    /**
+     * Returns the minimum number of digits allowed in the fraction portion of a
+     * number.
+     * @see #setMinimumFractionDigits
+     */
+    public int getMinimumFractionDigits() {
+        return minimumFractionDigits;
+    }
+
+    /**
+     * Sets the minimum number of digits allowed in the fraction portion of a
+     * number. MinimumFractionDigits must be <= maximumFractionDigits.  If the
+     * new value for minimumFractionDigits exceeds the current value
+     * of maximumFractionDigits, then maximumIntegerDigits will also be set to
+     * the new value.
+     * @param newValue the minimum number of fraction digits to be shown; if
+     * less than zero, then zero is used. The concrete subclass may enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMinimumFractionDigits
+     */
+    public void setMinimumFractionDigits(int newValue) {
+        minimumFractionDigits = Math.max(0,newValue);
+        if (maximumFractionDigits < minimumFractionDigits)
+            maximumFractionDigits = minimumFractionDigits;
+    }
+
+    // =======================privates===============================
+
+    // [NEW]
+    private static NumberFormat getInstance(Locale desiredLocale,
+                                            int choice) {
+        DecimalFormat format = new DecimalFormat(getPattern(desiredLocale, choice),
+                                 new DecimalFormatSymbols(desiredLocale));
+        /*Bug 4408066
+         Add codes for the new method getIntegerInstance() [Richard/GCL]
+        */
+        if (choice == INTEGERSTYLE) {
+            format.setMaximumFractionDigits(0);
+            format.setDecimalSeparatorAlwaysShown(false);
+            format.setParseIntegerOnly(true);
+        }
+        return format;
+    }
+
+    // [NEW]
+    protected static String getPattern(Locale forLocale, int choice) {
+
+        /* The following code takes care of a few cases where the
+         * resource data in the underlying JDK lags the new features
+         * we have added to ICU4J: scientific notation, rounding, and
+         * secondary grouping.
+         *
+         * We detect these cases here and return various hard-coded
+         * resource data.  This is the simplest solution for now, but
+         * it is not a good long-term mechanism.
+         * 
+         * We should replace this code with a data-driven mechanism
+         * that reads the bundle com.ibm.icu.impl.data.LocaleElements
+         * and parses an exception table that overrides the standard
+         * data at java.text.resource.LocaleElements*.java.
+         * Alternatively, we should create our own copy of the
+         * resource data, and use that exclusively.
+         */
+
+        // TEMPORARY, until we get scientific patterns into the main
+        // resources:  Retrieve scientific patterns from our resources.
+        if (choice == SCIENTIFICSTYLE) {
+            // Temporarily hard code; retrieve from resource later
+            /*For ICU compatibility [Richard/GCL]*/
+            return "#E0";
+            // return NumberFormat.getBaseStringArray("NumberPatterns")[SCIENTIFICSTYLE];
+        }
+        // TEMPORARY: Use rounding for Swiss currency
+        //if (choice == CURRENCYSTYLE &&
+        //    forLocale.getCountry().equals("CH")) {
+        //    return "'Fr. '#,##0.05;'Fr.-'#,##0.05";
+        //}
+        // TEMPORARY: Special case IN number format
+        //if (choice == NUMBERSTYLE &&
+        //    forLocale.getCountry().equals("IN")) {
+        //    return "#,##,##0.###";
+        //}
+
+		// {dlf}
+		ResourceBundle rb = ICULocaleData.getLocaleElements(forLocale);
+		String[] numberPatterns = rb.getStringArray("NumberPatterns");
+
+		/* {dlf}
+        // Try the cache first
+        String[] numberPatterns = (String[]) cachedLocaleData.get(forLocale);
+        if (numberPatterns == null) {
+            OverlayBundle resource = new OverlayBundle(new String[]
+                { "com.ibm.icu.impl.data.LocaleElements", RESOURCE_BASE }, forLocale);
+            numberPatterns = resource.getStringArray("NumberPatterns");
+            // Update the cache
+            cachedLocaleData.put(forLocale, numberPatterns); 
+        }
+		*/
+
+        /*Bug 4408066
+         Add codes for the new method getIntegerInstance() [Richard/GCL]
+        */
+        int entry = (choice == INTEGERSTYLE) ? NUMBERSTYLE : choice; //[Richard/GCL]
+        return numberPatterns[entry]; //[Richard/GCL]
+    }
+
+    /**
+     * First, read in the default serializable data.
+     *
+     * Then, if <code>serialVersionOnStream</code> is less than 1, indicating that
+     * the stream was written by JDK 1.1,
+     * set the <code>int</code> fields such as <code>maximumIntegerDigits</code>
+     * to be equal to the <code>byte</code> fields such as <code>maxIntegerDigits</code>,
+     * since the <code>int</code> fields were not present in JDK 1.1.
+     * Finally, set serialVersionOnStream back to the maximum allowed value so that
+     * default serialization will work properly if this object is streamed out again.
+     *
+     */
+    private void readObject(ObjectInputStream stream)
+         throws IOException, ClassNotFoundException
+    {
+        stream.defaultReadObject();
+        if (serialVersionOnStream < 1) {
+            // Didn't have additional int fields, reassign to use them.
+            maximumIntegerDigits = maxIntegerDigits;
+            minimumIntegerDigits = minIntegerDigits;
+            maximumFractionDigits = maxFractionDigits;
+            minimumFractionDigits = minFractionDigits;
+        }
+        /*Bug 4185761
+          Validate the min and max fields [Richard/GCL]
+        */
+        if (minimumIntegerDigits > maximumIntegerDigits ||
+            minimumFractionDigits > maximumFractionDigits ||
+            minimumIntegerDigits < 0 || minimumFractionDigits < 0) {
+            throw new InvalidObjectException("Digit count range invalid");
+        }
+        serialVersionOnStream = currentSerialVersion;
+    }
+
+    /**
+     * Write out the default serializable data, after first setting
+     * the <code>byte</code> fields such as <code>maxIntegerDigits</code> to be
+     * equal to the <code>int</code> fields such as <code>maximumIntegerDigits</code>
+     * (or to <code>Byte.MAX_VALUE</code>, whichever is smaller), for compatibility
+     * with the JDK 1.1 version of the stream format.
+     *
+     */
+    private void writeObject(ObjectOutputStream stream)
+         throws IOException
+    {
+        maxIntegerDigits = (maximumIntegerDigits > Byte.MAX_VALUE) ? Byte.MAX_VALUE :
+            (byte)maximumIntegerDigits;
+        minIntegerDigits = (minimumIntegerDigits > Byte.MAX_VALUE) ? Byte.MAX_VALUE :
+            (byte)minimumIntegerDigits;
+        maxFractionDigits = (maximumFractionDigits > Byte.MAX_VALUE) ? Byte.MAX_VALUE :
+            (byte)maximumFractionDigits;
+        minFractionDigits = (minimumFractionDigits > Byte.MAX_VALUE) ? Byte.MAX_VALUE :
+            (byte)minimumFractionDigits;
+        stream.defaultWriteObject();
+    }
+
+    /**
+     * Cache to hold the NumberPatterns of a Locale.
+     */
+    private static final Hashtable cachedLocaleData = new Hashtable(3);
+
+    // Constants used by factory methods to specify a style of format.
+    private static final int NUMBERSTYLE = 0;
+    private static final int CURRENCYSTYLE = 1;
+    private static final int PERCENTSTYLE = 2;
+    private static final int SCIENTIFICSTYLE = 3;
+    /*Bug 4408066
+      Add Field for the new method getIntegerInstance() [Richard/GCL]
+    */
+    private static final int INTEGERSTYLE = 4;
+
+    /**
+     * True if the the grouping (i.e. thousands) separator is used when
+     * formatting and parsing numbers.
+     *
+     * @serial
+     * @see #isGroupingUsed
+     */
+    private boolean groupingUsed = true;
+
+    /**
+     * The maximum number of digits allowed in the integer portion of a
+     * number.  <code>maxIntegerDigits</code> must be greater than or equal to
+     * <code>minIntegerDigits</code>.
+     * <p>
+     * <strong>Note:</strong> This field exists only for serialization
+     * compatibility with JDK 1.1.  In JDK 1.2 and higher, the new
+     * <code>int</code> field <code>maximumIntegerDigits</code> is used instead.
+     * When writing to a stream, <code>maxIntegerDigits</code> is set to
+     * <code>maximumIntegerDigits</code> or <code>Byte.MAX_VALUE</code>,
+     * whichever is smaller.  When reading from a stream, this field is used
+     * only if <code>serialVersionOnStream</code> is less than 1. 
+     *
+     * @serial
+     * @see #getMaximumIntegerDigits
+     */
+    private byte    maxIntegerDigits = 40;
+
+    /**
+     * The minimum number of digits allowed in the integer portion of a
+     * number.  <code>minimumIntegerDigits</code> must be less than or equal to
+     * <code>maximumIntegerDigits</code>.
+     * <p>
+     * <strong>Note:</strong> This field exists only for serialization
+     * compatibility with JDK 1.1.  In JDK 1.2 and higher, the new
+     * <code>int</code> field <code>minimumIntegerDigits</code> is used instead.
+     * When writing to a stream, <code>minIntegerDigits</code> is set to
+     * <code>minimumIntegerDigits</code> or <code>Byte.MAX_VALUE</code>,
+     * whichever is smaller.  When reading from a stream, this field is used
+     * only if <code>serialVersionOnStream</code> is less than 1. 
+     *
+     * @serial
+     * @see #getMinimumIntegerDigits
+     */
+    private byte    minIntegerDigits = 1;
+
+    /**
+     * The maximum number of digits allowed in the fractional portion of a
+     * number.  <code>maximumFractionDigits</code> must be greater than or equal to
+     * <code>minimumFractionDigits</code>.
+     * <p>
+     * <strong>Note:</strong> This field exists only for serialization
+     * compatibility with JDK 1.1.  In JDK 1.2 and higher, the new
+     * <code>int</code> field <code>maximumFractionDigits</code> is used instead.
+     * When writing to a stream, <code>maxFractionDigits</code> is set to
+     * <code>maximumFractionDigits</code> or <code>Byte.MAX_VALUE</code>,
+     * whichever is smaller.  When reading from a stream, this field is used
+     * only if <code>serialVersionOnStream</code> is less than 1. 
+     *
+     * @serial
+     * @see #getMaximumFractionDigits
+     */
+    private byte    maxFractionDigits = 3;    // invariant, >= minFractionDigits
+
+    /**
+     * The minimum number of digits allowed in the fractional portion of a
+     * number.  <code>minimumFractionDigits</code> must be less than or equal to
+     * <code>maximumFractionDigits</code>.
+     * <p>
+     * <strong>Note:</strong> This field exists only for serialization
+     * compatibility with JDK 1.1.  In JDK 1.2 and higher, the new
+     * <code>int</code> field <code>minimumFractionDigits</code> is used instead.
+     * When writing to a stream, <code>minFractionDigits</code> is set to
+     * <code>minimumFractionDigits</code> or <code>Byte.MAX_VALUE</code>,
+     * whichever is smaller.  When reading from a stream, this field is used
+     * only if <code>serialVersionOnStream</code> is less than 1. 
+     *
+     * @serial
+     * @see #getMinimumFractionDigits
+     */
+    private byte    minFractionDigits = 0;
+
+    /**
+     * True if this format will parse numbers as integers only.
+     *
+     * @serial
+     * @see #isParseIntegerOnly
+     */
+    private boolean parseIntegerOnly = false;
+
+    // new fields for 1.2.  byte is too small for integer digits.
+
+    /**
+     * The maximum number of digits allowed in the integer portion of a
+     * number.  <code>maximumIntegerDigits</code> must be greater than or equal to
+     * <code>minimumIntegerDigits</code>.
+     *
+     * @serial
+     * @see #getMaximumIntegerDigits
+     */
+    private int    maximumIntegerDigits = 40;
+
+    /**
+     * The minimum number of digits allowed in the integer portion of a
+     * number.  <code>minimumIntegerDigits</code> must be less than or equal to
+     * <code>maximumIntegerDigits</code>.
+     *
+     * @serial
+     * @see #getMinimumIntegerDigits
+     */
+    private int    minimumIntegerDigits = 1;
+
+    /**
+     * The maximum number of digits allowed in the fractional portion of a
+     * number.  <code>maximumFractionDigits</code> must be greater than or equal to
+     * <code>minimumFractionDigits</code>.
+     *
+     * @serial
+     * @see #getMaximumFractionDigits
+     */
+    private int    maximumFractionDigits = 3;    // invariant, >= minFractionDigits
+
+    /**
+     * The minimum number of digits allowed in the fractional portion of a
+     * number.  <code>minimumFractionDigits</code> must be less than or equal to
+     * <code>maximumFractionDigits</code>.
+     *
+     * @serial
+     * @see #getMinimumFractionDigits
+     */
+    private int    minimumFractionDigits = 0;
+
+    static final int currentSerialVersion = 1;
+
+    /**
+     * Describes the version of <code>NumberFormat</code> present on the stream.
+     * Possible values are:
+     * <ul>
+     * <li><b>0</b> (or uninitialized): the JDK 1.1 version of the stream format.
+     *     In this version, the <code>int</code> fields such as
+     *     <code>maximumIntegerDigits</code> were not present, and the <code>byte</code>
+     *     fields such as <code>maxIntegerDigits</code> are used instead.
+     *
+     * <li><b>1</b>: the JDK 1.2 version of the stream format.  The values of the
+     *     <code>byte</code> fields such as <code>maxIntegerDigits</code> are ignored,
+     *     and the <code>int</code> fields such as <code>maximumIntegerDigits</code>
+     *     are used instead.
+     * </ul>
+     * When streaming out a <code>NumberFormat</code>, the most recent format
+     * (corresponding to the highest allowable <code>serialVersionOnStream</code>)
+     * is always written.
+     *
+     * @serial
+     */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    // Removed "implements Cloneable" clause.  Needs to update serialization
+    // ID for backward compatibility.
+    static final long serialVersionUID = -2308460125733713944L;
+}
diff --git a/src/com/ibm/icu/text/Quantifier.java b/src/com/ibm/icu/text/Quantifier.java
new file mode 100755
index 0000000..54c115e
--- /dev/null
+++ b/src/com/ibm/icu/text/Quantifier.java
@@ -0,0 +1,121 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/Quantifier.java,v $ 
+ * $Date: 2002/06/28 19:15:52 $ 
+ * $Revision: 1.8 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+
+class Quantifier implements UnicodeMatcher {
+
+    private UnicodeMatcher matcher;
+
+    private int minCount;
+
+    private int maxCount;
+
+    /**
+     * Maximum count a quantifier can have.
+     */
+    public static final int MAX = Integer.MAX_VALUE;
+
+    public Quantifier(UnicodeMatcher theMatcher,
+                      int theMinCount, int theMaxCount) {
+        if (theMatcher == null || minCount < 0 || maxCount < 0 || minCount > maxCount) {
+            throw new IllegalArgumentException();
+        }
+        matcher = theMatcher;
+        minCount = theMinCount;
+        maxCount = theMaxCount;
+    }
+
+    /**
+     * Implement UnicodeMatcher API.
+     */
+    public int matches(Replaceable text,
+                       int[] offset,
+                       int limit,
+                       boolean incremental) {
+        int start = offset[0];
+        int count = 0;
+        while (count < maxCount) {
+            int pos = offset[0];
+            int m = matcher.matches(text, offset, limit, incremental);
+            if (m == U_MATCH) {
+                ++count;
+                if (pos == offset[0]) {
+                    // If offset has not moved we have a zero-width match.
+                    // Don't keep matching it infinitely.
+                    break;
+                }
+            } else if (incremental && m == U_PARTIAL_MATCH) {
+                return U_PARTIAL_MATCH;
+            } else {
+                break;
+            }
+        }
+        if (incremental && offset[0] == limit) {
+            return U_PARTIAL_MATCH;
+        }
+        if (count >= minCount) {
+            return U_MATCH;
+        }
+        offset[0] = start;
+        return U_MISMATCH;
+    }
+
+    /**
+     * Implement UnicodeMatcher API
+     */
+    public String toPattern(boolean escapeUnprintable) {
+        StringBuffer result = new StringBuffer();
+        result.append(matcher.toPattern(escapeUnprintable));
+        if (minCount == 0) {
+            if (maxCount == 1) {
+                return result.append('?').toString();
+            } else if (maxCount == MAX) {
+                return result.append('*').toString();
+            }
+            // else fall through
+        } else if (minCount == 1 && maxCount == MAX) {
+            return result.append('+').toString();
+        }
+        result.append('{');
+        Utility.appendNumber(result, minCount);
+        result.append(',');
+        if (maxCount != MAX) {
+            Utility.appendNumber(result, maxCount);
+        }
+        result.append('}');
+        return result.toString();
+    }
+
+    /**
+     * Implement UnicodeMatcher API
+     */
+    public boolean matchesIndexValue(int v) {
+        return (minCount == 0) || matcher.matchesIndexValue(v);
+    }
+
+    /**
+     * Implementation of UnicodeMatcher API.  Union the set of all
+     * characters that may be matched by this object into the given
+     * set.
+     * @param toUnionTo the set into which to union the source characters
+     * @return a reference to toUnionTo
+     */
+    public void addMatchSetTo(UnicodeSet toUnionTo) {
+        if (maxCount > 0) {
+            matcher.addMatchSetTo(toUnionTo);
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/RemoveTransliterator.java b/src/com/ibm/icu/text/RemoveTransliterator.java
new file mode 100755
index 0000000..825f996
--- /dev/null
+++ b/src/com/ibm/icu/text/RemoveTransliterator.java
@@ -0,0 +1,58 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/RemoveTransliterator.java,v $ 
+ * $Date: 2002/02/16 03:06:12 $ 
+ * $Revision: 1.6 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+import java.util.*;
+
+/**
+ * A transliterator that removes characters.  This is useful in conjunction
+ * with a filter.
+ */
+class RemoveTransliterator extends Transliterator {
+
+    /**
+     * ID for this transliterator.
+     */
+    private static String _ID = "Any-Remove";
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new RemoveTransliterator();
+            }
+        });
+        Transliterator.registerSpecialInverse("Remove", "Null", false);
+    }
+
+    /**
+     * Constructs a transliterator.
+     */
+    public RemoveTransliterator() {
+        super(_ID, null);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position index, boolean incremental) {
+        // Our caller (filteredTransliterate) has already narrowed us
+        // to an unfiltered run.  Delete it.
+        text.replace(index.start, index.limit, "");
+        int len = index.limit - index.start;
+        index.contextLimit -= len;
+        index.limit -= len;
+    }
+}
diff --git a/src/com/ibm/icu/text/Replaceable.java b/src/com/ibm/icu/text/Replaceable.java
new file mode 100755
index 0000000..43dfe77
--- /dev/null
+++ b/src/com/ibm/icu/text/Replaceable.java
@@ -0,0 +1,183 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/Replaceable.java,v $ 
+ * $Date: 2002/07/03 00:30:54 $ 
+ * $Revision: 1.8 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * <code>Replaceable</code> is an interface representing a
+ * string of characters that supports the replacement of a range of
+ * itself with a new string of characters.  It is used by APIs that
+ * change a piece of text while retaining metadata.  Metadata is data
+ * other than the Unicode characters returned by char32At().  One
+ * example of metadata is style attributes; another is an edit
+ * history, marking each character with an author and revision number.
+ *
+ * <p>An implicit aspect of the <code>Replaceable</code> API is that
+ * during a replace operation, new characters take on the metadata of
+ * the old characters.  For example, if the string "the <b>bold</b>
+ * font" has range (4, 8) replaced with "strong", then it becomes "the
+ * <b>strong</b> font".
+ *
+ * <p><code>Replaceable</code> specifies ranges using a start
+ * offset and a limit offset.  The range of characters thus specified
+ * includes the characters at offset start..limit-1.  That is, the
+ * start offset is inclusive, and the limit offset is exclusive.
+ *
+ * <p><code>Replaceable</code> also includes API to access characters
+ * in the string: <code>length()</code>, <code>charAt()</code>,
+ * <code>char32At()</code>, and <code>extractBetween()</code>.
+ *
+ * <p>For a subclass to support metadata, typical behavior of
+ * <code>replace()</code> is the following:
+ * <ul>
+ *   <li>Set the metadata of the new text to the metadata of the first
+ *   character replaced</li>
+ *   <li>If no characters are replaced, use the metadata of the
+ *   previous character</li>
+ *   <li>If there is no previous character (i.e. start == 0), use the
+ *   following character</li>
+ *   <li>If there is no following character (i.e. the replaceable was
+ *   empty), use default metadata.<br>
+ *   </li>
+ * </ul>
+ * If this is not the behavior, the subclass should document any differences.
+ * 
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: Replaceable.java,v $ $Revision: 1.8 $ $Date: 2002/07/03 00:30:54 $
+ */
+public interface Replaceable {
+    /**
+     * Returns the number of 16-bit code units in the text.
+     * @return number of 16-bit code units in text
+     */ 
+    int length();
+
+    /**
+     * Returns the 16-bit code unit at the given offset into the text.
+     * @param offset an integer between 0 and <code>length()</code>-1
+     * inclusive
+     * @return 16-bit code unit of text at given offset
+     */
+    char charAt(int offset);
+
+    /**
+     * Returns the 32-bit code point at the given 16-bit offset into
+     * the text.  This assumes the text is stored as 16-bit code units
+     * with surrogate pairs intermixed.  If the offset of a leading or
+     * trailing code unit of a surrogate pair is given, return the
+     * code point of the surrogate pair.
+     *
+     * <p>Most subclasses can return
+     * <code>com.ibm.icu.text.UTF16.charAt(this, offset)</code>.
+     * @param offset an integer between 0 and <code>length()</code>-1
+     * inclusive
+     * @return 32-bit code point of text at given offset
+     */
+    int char32At(int offset);
+
+    /**
+     * Copies characters from this object into the destination
+     * character array.  The first character to be copied is at index
+     * <code>srcStart</code>; the last character to be copied is at
+     * index <code>srcLimit-1</code> (thus the total number of
+     * characters to be copied is <code>srcLimit-srcStart</code>). The
+     * characters are copied into the subarray of <code>dst</code>
+     * starting at index <code>dstStart</code> and ending at index
+     * <code>dstStart + (srcLimit-srcStart) - 1</code>.
+     *
+     * @param srcStart the beginning index to copy, inclusive; <code>0
+     * <= start <= limit</code>.
+     * @param srcLimit the ending index to copy, exclusive;
+     * <code>start <= limit <= length()</code>.
+     * @param dst the destination array.
+     * @param dstStart the start offset in the destination array.
+     */
+    void getChars(int srcStart, int srcLimit, char dst[], int dstStart);
+
+    /**
+     * Replaces a substring of this object with the given text.
+     *
+     * <p>Subclasses must ensure that if the text between start and
+     * limit is equal to the replacement text, that replace has no
+     * effect. That is, any metadata
+     * should be unaffected. In addition, subclasses are encouraged to
+     * check for initial and trailing identical characters, and make a
+     * smaller replacement if possible. This will preserve as much
+     * metadata as possible.
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= length()</code>.
+     * @param text the text to replace characters <code>start</code>
+     * to <code>limit - 1</code>
+     */
+    void replace(int start, int limit, String text);
+
+    /**
+     * Replaces a substring of this object with the given text.
+     *
+     * <p>Subclasses must ensure that if the text between start and
+     * limit is equal to the replacement text, that replace has no
+     * effect. That is, any metadata
+     * should be unaffected. In addition, subclasses are encouraged to
+     * check for initial and trailing identical characters, and make a
+     * smaller replacement if possible. This will preserve as much
+     * metadata as possible.
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= length()</code>.
+     * @param chars the text to replace characters <code>start</code>
+     * to <code>limit - 1</code>
+     * @param charsStart the beginning index into <code>chars</code>,
+     * inclusive; <code>0 <= start <= limit</code>.
+     * @param charsLen the number of characters of <code>chars</code>.
+     */
+    void replace(int start, int limit, char[] chars,
+                 int charsStart, int charsLen);
+    // Note: We use length rather than limit to conform to StringBuffer
+    // and System.arraycopy.
+
+    /**
+     * Copies a substring of this object, retaining metadata.
+     * This method is used to duplicate or reorder substrings.
+     * The destination index must not overlap the source range.
+     * If <code>hasMetaData()</code> returns false, subclasses
+     * may use the naive implementation:
+     *
+     * <pre> char[] text = new char[limit - start];
+     * getChars(start, limit, text, 0);
+     * replace(dest, dest, text, 0, limit - start);</pre>
+     * 
+     * @param start the beginning index, inclusive; <code>0 <= start <=
+     * limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit <=
+     * length()</code>.
+     * @param dest the destination index.  The characters from
+     * <code>start..limit-1</code> will be copied to <code>dest</code>.
+     * Implementations of this method may assume that <code>dest <= start ||
+     * dest >= limit</code>.
+     */
+    void copy(int start, int limit, int dest);
+    
+    /**
+     * Returns true if this object contains metadata.  If a
+     * Replaceable object has metadata, calls to the Replaceable API
+     * must be made so as to preserve metadata.  If it does not, calls
+     * to the Replaceable API may be optimized to improve performance.
+     * @return true if this object contains metadata
+     * @since ICU 2.2
+     */
+    boolean hasMetaData();
+}
diff --git a/src/com/ibm/icu/text/ReplaceableString.java b/src/com/ibm/icu/text/ReplaceableString.java
new file mode 100755
index 0000000..b8af440
--- /dev/null
+++ b/src/com/ibm/icu/text/ReplaceableString.java
@@ -0,0 +1,193 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/ReplaceableString.java,v $ 
+ * $Date: 2002/07/02 23:50:34 $ 
+ * $Revision: 1.11 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ * <code>ReplaceableString</code> is an adapter class that implements the
+ * <code>Replaceable</code> API around an ordinary <code>StringBuffer</code>.
+ *
+ * <p><em>Note:</em> This class does not support attributes and is not
+ * intended for general use.  Most clients will need to implement
+ * {@link Replaceable} in their text representation class.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @see Replaceable
+ * @author Alan Liu
+ * @version $RCSfile: ReplaceableString.java,v $ $Revision: 1.11 $ $Date: 2002/07/02 23:50:34 $
+ */
+public class ReplaceableString implements Replaceable {
+    private StringBuffer buf;
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Construct a new object with the given initial contents.
+     * @param str initial contents
+     */
+    public ReplaceableString(String str) {
+        buf = new StringBuffer(str);
+    }
+
+    /**
+     * Construct a new object using <code>buf</code> for internal
+     * storage.  The contents of <code>buf</code> at the time of
+     * construction are used as the initial contents.  <em>Note!
+     * Modifications to <code>buf</code> will modify this object, and
+     * vice versa.</em>
+     * @param buf object to be used as internal storage
+     */
+    public ReplaceableString(StringBuffer buf) {
+        this.buf = buf;
+    }
+
+    /**
+     * Construct a new empty object.
+     */
+    public ReplaceableString() {
+        buf = new StringBuffer();
+    }
+
+    /**
+     * Return the contents of this object as a <code>String</code>.
+     * @return string contents of this object
+     */
+    public String toString() {
+        return buf.toString();
+    }
+
+    /**
+     * Return a substring of the given string.
+     */
+    public String substring(int start, int limit) {
+        return buf.substring(start, limit);
+    }
+
+    /**
+     * Return the number of characters contained in this object.
+     * <code>Replaceable</code> API.
+     */ 
+    public int length() {
+        return buf.length();
+    }
+
+    /**
+     * Return the character at the given position in this object.
+     * <code>Replaceable</code> API.
+     * @param offset offset into the contents, from 0 to
+     * <code>length()</code> - 1
+     */
+    public char charAt(int offset) {
+        return buf.charAt(offset);
+    }
+
+    /**
+     * Return the 32-bit code point at the given 16-bit offset into
+     * the text.  This assumes the text is stored as 16-bit code units
+     * with surrogate pairs intermixed.  If the offset of a leading or
+     * trailing code unit of a surrogate pair is given, return the
+     * code point of the surrogate pair.
+     * @param offset an integer between 0 and <code>length()</code>-1
+     * inclusive
+     * @return 32-bit code point of text at given offset
+     */
+    public int char32At(int offset) {
+        return UTF16.charAt(buf, offset);
+    }
+
+    /**
+     * Copies characters from this object into the destination
+     * character array.  The first character to be copied is at index
+     * <code>srcStart</code>; the last character to be copied is at
+     * index <code>srcLimit-1</code> (thus the total number of
+     * characters to be copied is <code>srcLimit-srcStart</code>). The
+     * characters are copied into the subarray of <code>dst</code>
+     * starting at index <code>dstStart</code> and ending at index
+     * <code>dstStart + (srcLimit-srcStart) - 1</code>.
+     *
+     * @param srcStart the beginning index to copy, inclusive; <code>0
+     * <= start <= limit</code>.
+     * @param srcLimit the ending index to copy, exclusive;
+     * <code>start <= limit <= length()</code>.
+     * @param dst the destination array.
+     * @param dstStart the start offset in the destination array.
+     */
+    public void getChars(int srcStart, int srcLimit, char dst[], int dstStart) {
+        Utility.getChars(buf, srcStart, srcLimit, dst, dstStart);
+    }
+
+    /**
+     * Replace zero or more characters with new characters.
+     * <code>Replaceable</code> API.
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= length()</code>.
+     * @param text new text to replace characters <code>start</code> to
+     * <code>limit - 1</code>
+     */
+    public void replace(int start, int limit, String text) {
+        buf.replace(start, limit, text);
+    }
+
+    /**
+     * Replace a substring of this object with the given text.
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= length()</code>.
+     * @param chars the text to replace characters <code>start</code>
+     * to <code>limit - 1</code>
+     * @param charsStart the beginning index into <code>chars</code>,
+     * inclusive; <code>0 <= start <= limit</code>.
+     * @param charsLen the number of characters of <code>chars</code>.
+     */
+    public void replace(int start, int limit, char[] chars,
+                        int charsStart, int charsLen) {
+        buf.delete(start, limit);
+        buf.insert(start, chars, charsStart, charsLen);
+    }
+
+    /**
+     * Copy a substring of this object, retaining attribute (out-of-band)
+     * information.  This method is used to duplicate or reorder substrings.
+     * The destination index must not overlap the source range.
+     * 
+     * @param start the beginning index, inclusive; <code>0 <= start <=
+     * limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit <=
+     * length()</code>.
+     * @param dest the destination index.  The characters from
+     * <code>start..limit-1</code> will be copied to <code>dest</code>.
+     * Implementations of this method may assume that <code>dest <= start ||
+     * dest >= limit</code>.
+     */
+    public void copy(int start, int limit, int dest) {
+        if (start == limit && start >= 0 && start <= buf.length()) {
+            return;
+        }
+        char[] text = new char[limit - start];
+        getChars(start, limit, text, 0);
+        replace(dest, dest, text, 0, limit - start);
+    }
+    
+    /**
+     * Implements Replaceable
+     */
+    public boolean hasMetaData() {
+    	return false;
+    }
+}
diff --git a/src/com/ibm/icu/text/RuleBasedBreakIterator.java b/src/com/ibm/icu/text/RuleBasedBreakIterator.java
new file mode 100755
index 0000000..a4dfe8e
--- /dev/null
+++ b/src/com/ibm/icu/text/RuleBasedBreakIterator.java
@@ -0,0 +1,3147 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/RuleBasedBreakIterator.java,v $
+ * $Date: 2002/08/10 00:32:30 $
+ * $Revision: 1.21 $
+ *
+ *****************************************************************************************
+ */
+
+
+/*
+ * @(#)RuleBasedBreakIterator.java	1.3 99/04/07
+ *
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.util.CompactByteArray;
+import com.ibm.icu.impl.Utility;
+import java.util.Vector;
+import java.util.Stack;
+import java.util.Hashtable;
+import java.util.Enumeration;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+
+import java.io.*;
+
+/**
+ * <p>A subclass of BreakIterator whose behavior is specified using a list of rules.</p>
+ *
+ * <p>There are two kinds of rules, which are separated by semicolons: <i>substitutions</i>
+ * and <i>regular expressions.</i></p>
+ *
+ * <p>A substitution rule defines a name that can be used in place of an expression. It
+ * consists of a name, an equals sign, and an expression. (There can be no whitespace on
+ * either side of the equals sign.)  To keep its syntactic meaning intact, the expression
+ * must be enclosed in parentheses or square brackets. A substitution is visible after its
+ * definition, and is filled in using simple textual substitution (when a substitution is
+ * used, its name is enclosed in curly braces.  The curly braces are optional in the
+ * substition's definition). Substitution definitions can contain other substitutions, as
+ * long as those substitutions have been defined first. Substitutions are generally used to
+ * make the regular expressions (which can get quite complex) shorter and easier to read.
+ * They typically define either character categories or commonly-used subexpressions.</p>
+ *
+ * <p>There is one special substitution.&nbsp; If the description defines a substitution
+ * called &quot;_ignore_&quot;, the expression must be a [] expression, and the
+ * expression defines a set of characters (the &quot;<em>ignore characters</em>&quot;) that
+ * will be transparent to the BreakIterator.&nbsp; A sequence of characters will break the
+ * same way it would if any ignore characters it contains are taken out.&nbsp; Break
+ * positions never occur before ignore characters, except when the character before the
+ * ignore characters is a line or paragraph terminator.</p>
+ *
+ * <p>A regular expression uses a syntax similar to the normal Unix regular-expression
+ * syntax, and defines a sequence of characters to be kept together. With one significant
+ * exception, the iterator uses a longest-possible-match algorithm when matching text to regular
+ * expressions. The iterator also treats descriptions containing multiple regular expressions
+ * as if they were ORed together (i.e., as if they were separated by |).</p>
+ *
+ * <p>The special characters recognized by the regular-expression parser are as follows:</p>
+ *
+ * <blockquote>
+ *   <table border="1" width="100%">
+ *     <tr>
+ *       <td width="6%">*</td>
+ *       <td width="94%">Specifies that the expression preceding the asterisk may occur any number
+ *       of times (including not at all).</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">+</td>
+ *       <td width="94%">Specifies that the expression preceding the asterisk may occur one or
+ *       more times, but must occur at least once.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">?</td>
+ *       <td width="94%">Specifies that the expression preceding the asterisk may occur once
+ *       or not at all (i.e., it makes the preceding expression optional).</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">()</td>
+ *       <td width="94%">Encloses a sequence of characters.  If followed by * or +, the
+ *       sequence repeats.  If followed by ?, the sequence is optional.  Otherwise, the
+ *       parentheses are just a grouping device and a way to delimit the ends of expressions
+ *       containing |.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">|</td>
+ *       <td width="94%">Separates two alternative sequences of characters.&nbsp; Either one
+ *       sequence or the other, but not both, matches this expression.&nbsp; The | character can
+ *       only occur inside ().</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">.</td>
+ *       <td width="94%">Matches any character.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">*?</td>
+ *       <td width="94%">Specifies a non-greedy asterisk.&nbsp; *? works the same way as *, except
+ *       when there is overlap between the last group of characters in the expression preceding the
+ *       * and the first group of characters following the *.&nbsp; When there is this kind of
+ *       overlap, * will match the longest sequence of characters that match the expression before
+ *       the *, and *? will match the shortest sequence of characters matching the expression
+ *       before the *?.&nbsp; For example, if you have &quot;xxyxyyyxyxyxxyxyxyy&quot; in the text,
+ *       &quot;x[xy]*x&quot; will match through to the last x (i.e., &quot;<strong>xxyxyyyxyxyxxyxyx</strong>yy&quot;,
+ *       but &quot;x[xy]*?x&quot; will only match the first two xes (&quot;<strong>xx</strong>yxyyyxyxyxxyxyxyy&quot;).</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">[]</td>
+ *       <td width="94%">Specifies a group of alternative characters.&nbsp; A [] expression will
+ *       match any single character that is specified in the [] expression.&nbsp; For more on the
+ *       syntax of [] expressions, see below.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">/</td>
+ *       <td width="94%">Specifies where the break position should go if text matches this
+ *       expression.&nbsp; (e.g., &quot;[a-z]&#42;/[:Zs:]*[1-0]&quot; will match if the iterator sees a run
+ *       of letters, followed by a run of whitespace, followed by a digit, but the break position
+ *       will actually go before the whitespace).&nbsp; Expressions that don't contain / put the
+ *       break position at the end of the matching text.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">\</td>
+ *       <td width="94%">Escape character.&nbsp; The \ itself is ignored, but causes the next
+ *       character to be treated as literal character.&nbsp; This has no effect for many
+ *       characters, but for the characters listed above, this deprives them of their special
+ *       meaning.&nbsp; (There are no special escape sequences for Unicode characters, or tabs and
+ *       newlines; these are all handled by a higher-level protocol.&nbsp; In a Java string,
+ *       &quot;\n&quot; will be converted to a literal newline character by the time the
+ *       regular-expression parser sees it.&nbsp; Of course, this means that \ sequences that are
+ *       visible to the regexp parser must be written as \\ when inside a Java string.)&nbsp; All
+ *       characters in the ASCII range except for letters, digits, and control characters are
+ *       reserved characters to the parser and must be preceded by \ even if they currently don't
+ *       mean anything.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">!</td>
+ *       <td width="94%">If ! appears at the beginning of a regular expression, it tells the regexp
+ *       parser that this expression specifies the backwards-iteration behavior of the iterator,
+ *       and not its normal iteration behavior.&nbsp; This is generally only used in situations
+ *       where the automatically-generated backwards-iteration behavior doesn't produce
+ *       satisfactory results and must be supplemented with extra client-specified rules.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%"><em>(all others)</em></td>
+ *       <td width="94%">All other characters are treated as literal characters, which must match
+ *       the corresponding character(s) in the text exactly.</td>
+ *     </tr>
+ *   </table>
+ * </blockquote>
+ *
+ * <p>Within a [] expression, a number of other special characters can be used to specify
+ * groups of characters:</p>
+ *
+ * <blockquote>
+ *   <table border="1" width="100%">
+ *     <tr>
+ *       <td width="6%">-</td>
+ *       <td width="94%">Specifies a range of matching characters.&nbsp; For example
+ *       &quot;[a-p]&quot; matches all lowercase Latin letters from a to p (inclusive).&nbsp; The -
+ *       sign specifies ranges of continuous Unicode numeric values, not ranges of characters in a
+ *       language's alphabetical order: &quot;[a-z]&quot; doesn't include capital letters, nor does
+ *       it include accented letters such as a-umlaut.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">^</td>
+ *       <td width="94%">Inverts the expression.  All characters the expression includes are
+ *       excluded, and vice versa.  (i.e., it has the effect of saying "all Unicode characters
+ *       except...")  This character only has its special meaning when it's the first character
+ *       in the [] expression.  (Generally, you only see the ^ character inside a nested []
+ *       expression used in conjunction with the syntax below.)</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%"><em>(all others)</em></td>
+ *       <td width="94%">All other characters are treated as literal characters.&nbsp; (For
+ *       example, &quot;[aeiou]&quot; specifies just the letters a, e, i, o, and u.)</td>
+ *     </tr>
+ *   </table>
+ * </blockquote>
+ *
+ * <p>[] expressions can nest.  There are some other characters that have special meaning only
+ * when used in conjunction with nester [] expressions:</p>
+ *
+ * <blockquote>
+ *   <table border="1" width="100%">
+ *     <tr>
+ *       <td width="6%">::</td>
+ *       <td width="94%">Within a nested [] expression, a pair of colons containing a one- or
+ *       two-letter code matches all characters in the corresponding Unicode category.&nbsp;
+ *       The :: expression has to be the only thing inside the [] expression. The two-letter codes
+ *       are the same as the two-letter codes in the Unicode database (for example,
+ *       &quot;[[:Sc:][:Sm:]]&quot; matches all currency symbols and all math symbols).&nbsp;
+ *       Specifying a one-letter code is the same as specifying all two-letter codes that begin
+ *       with that letter (for example, &quot;[[:L:]]&quot; matches all letters, and is equivalent
+ *       to &quot;[[:Lu:][:Ll:][:Lo:][:Lm:][:Lt:]]&quot;).&nbsp; Anything other than a valid
+ *       two-letter Unicode category code or a single letter that begins a valide Unicode category
+ *       code is illegal within the colons.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">|</td>
+ *       <td width="94%">Two nested [] expressions juxtaposed or separated only by a | character
+ *       are merged together into a single [] expression matching all the characters in either
+ *       of the original [] expressions.  (e.g., "[[ab][bc]]" is equivalent to "[abc]", and so
+ *       is "[[ab]|[bc]]". <b>NOTE:</b>  "[ab][bc]" is NOT the same thing as "[[ab][bc]]".
+ *       The first expression will match two characters: an a or b followed by either another
+ *       b or a c.  The second expression will match a single character, which may be a, b, or c.
+ *       The nesting is <em>required</em> for the expressions to merge together.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">&</td>
+ *       <td width="94%">Two nested [] expressions with only & between them will match any
+ *       character that appears in both nested [] expressions (this is a set intersection).
+ *       (e.g., "[[ab]&[bc]]" will only match the letter b.)</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">-</td>
+ *       <td width="94%">Two nested [] expressions with - between them will match any
+ *       character that appears in the first nested [] expression <em>but not</em> the
+ *       second one (this is an asymmetrical set difference).  (e.g., "[[:Sc:]-[$]]"
+ *       matches any currency symbol except the dollar sign.  "[[ab]-[bc]] will match
+ *       only the letter a.  This has exactly the same effect as "[[ab]&[^bc]]".)</td>
+ *     </tr>
+ *
+ * <p>For a more complete explanation, see <a
+ * href="http://www.ibm.com/developerworks/unicode/library/boundaries/boundaries.html">http://www.ibm.com/developerworks/unicode/library/boundaries/boundaries.html</a>.
+ * &nbsp; For examples, see the resource data (which is annotated).</p>
+ *
+ * @author Richard Gillam
+ * $RCSfile: RuleBasedBreakIterator.java,v $ $Revision: 1.21 $ $Date: 2002/08/10 00:32:30 $
+ */
+public class RuleBasedBreakIterator extends BreakIterator {
+
+    /**
+     * A token used as a character-category value to identify ignore characters
+     */
+    protected static final byte IGNORE = -1;
+
+    /**
+     * Special variable used to define ignore characters
+     */
+    private static final String IGNORE_VAR = "_ignore_";
+
+    /**
+     * The state number of the starting state
+     */
+    private static final short START_STATE = 1;
+
+    /**
+     * The state-transition value indicating "stop"
+     */
+    private static final short STOP_STATE = 0;
+
+    /**
+     * The textual description this iterator was created from
+     */
+    private String description;
+
+    /**
+     * A table that indexes from character values to character category numbers
+     */
+    private CompactByteArray charCategoryTable = null;
+
+    /**
+     * The table of state transitions used for forward iteration
+     */
+    private short[] stateTable = null;
+
+    /**
+     * The table of state transitions used to sync up the iterator with the
+     * text in backwards and random-access iteration
+     */
+    private short[] backwardsStateTable = null;
+
+    /**
+     * A list of flags indicating which states in the state table are accepting
+     * ("end") states
+     */
+    private boolean[] endStates = null;
+
+    /**
+     * A list of flags indicating which states in the state table are
+     * lookahead states (states which turn lookahead on and off)
+     */
+    private boolean[] lookaheadStates = null;
+
+    /**
+     * The number of character categories (and, thus, the number of columns in
+     * the state tables)
+     */
+    private int numCategories;
+
+    /**
+     * The character iterator through which this BreakIterator accesses the text
+     */
+    private CharacterIterator text = null;
+
+    //=======================================================================
+    // constructors
+    //=======================================================================
+
+    /**
+     * Constructs a RuleBasedBreakIterator according to the description
+     * provided.  If the description is malformed, throws an
+     * IllegalArgumentException.  Normally, instead of constructing a
+     * RuleBasedBreakIterator directory, you'll use the factory methods
+     * on BreakIterator to create one indirectly from a description
+     * in the framework's resource files.  You'd use this when you want
+     * special behavior not provided by the built-in iterators.
+     */
+    public RuleBasedBreakIterator(String description) {
+//System.out.println(">>>RBBI constructor");
+        this.description = description;
+
+        // the actual work is done by the Builder class
+        Builder builder = makeBuilder();
+        builder.buildBreakIterator();
+//System.out.println("<<<RBBI constructor");
+    }
+
+    /**
+     * Creates a Builder.
+     */
+    protected Builder makeBuilder() {
+        return new Builder();
+    }
+
+    //=======================================================================
+    // boilerplate
+    //=======================================================================
+    /**
+     * Clones this iterator.
+     * @return A newly-constructed RuleBasedBreakIterator with the same
+     * behavior as this one.
+     */
+    public Object clone()
+    {
+        RuleBasedBreakIterator result = (RuleBasedBreakIterator) super.clone();
+        if (text != null) {
+            result.text = (CharacterIterator) text.clone();
+        }
+        return result;
+    }
+
+    /**
+     * Returns true if both BreakIterators are of the same class, have the same
+     * rules, and iterate over the same text.
+     */
+    public boolean equals(Object that) {
+        try {
+            RuleBasedBreakIterator other = (RuleBasedBreakIterator) that;
+            if (!description.equals(other.description)) {
+                return false;
+            }
+            if (text == null) {
+                return other.text == null;
+            }
+            else {
+                return text.equals(other.text);
+            }
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+    }
+
+    /**
+     * Returns the description used to create this iterator
+     */
+    public String toString() {
+        return description;
+    }
+
+    /**
+     * Compute a hashcode for this BreakIterator
+     * @return A hash code
+     */
+    public int hashCode()
+    {
+        return description.hashCode();
+    }
+
+//
+//   Dump out a more-or-less human readable form of the
+//   complete state table and character class definitions
+//
+    ///CLOVER:OFF
+public void debugDumpTables() {
+    System.out.println("Character Classes:");
+    int currentCharClass = 257;
+    int startCurrentRange = 0;
+    int initialStringLength = 0;
+
+    StringBuffer[] charClassRanges = new StringBuffer[numCategories];
+    for (int i=0; i<numCategories; i++) {
+        charClassRanges[i] = new StringBuffer();
+    }
+
+    for (int i = 0; i < 0xffff; i++) {
+        if ((int)charCategoryTable.elementAt((char)i) != currentCharClass) {
+            if (currentCharClass != 257) {
+                // Complete the output of the previous range.
+                if (i != startCurrentRange+1) {
+                    charClassRanges[currentCharClass].append("-"+ Integer.toHexString(i-1));
+                }
+                if (charClassRanges[currentCharClass].length() % 72 < initialStringLength % 72) {
+                    charClassRanges[currentCharClass].append("\n     ");
+                }
+            }
+
+            // Output the start of the new range.
+            currentCharClass = (int)charCategoryTable.elementAt((char)i);
+            startCurrentRange = i;
+            initialStringLength = charClassRanges[currentCharClass].length();
+            if (charClassRanges[currentCharClass].length() > 0)
+                charClassRanges[currentCharClass].append(", ");
+            charClassRanges[currentCharClass].append(Integer.toHexString(i));
+        }
+    }
+
+    for (int i=0; i<numCategories; i++) {
+        System.out.println(i + ":     " + charClassRanges[i]);
+    }
+
+
+    System.out.println("\n\nState Table.   *: end state     %: look ahead state");
+    System.out.print("C:\t");
+    for (int i = 0; i < numCategories; i++)
+        System.out.print(Integer.toString(i) + "\t");
+    System.out.println(); System.out.print("=================================================");
+    for (int i = 0; i < stateTable.length; i++) {
+        if (i % numCategories == 0) {
+            System.out.println();
+            if (endStates[i / numCategories])
+                System.out.print("*");
+            else
+                System.out.print(" ");
+            if (lookaheadStates[i / numCategories]) {
+                System.out.print("%");
+            }
+            else
+                System.out.print(" ");
+            System.out.print(Integer.toString(i / numCategories) + ":\t");
+        }
+        if (stateTable[i] == 0) {
+            System.out.print(".\t");
+        } else {
+            System.out.print(Integer.toString(stateTable[i]) + "\t");
+        }
+    }
+    System.out.println();
+}
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+// DELETE ME BEFORE RELEASE!!!
+public void writeTablesToFile(FileOutputStream file, boolean littleEndian) throws IOException {
+    // NOTE: The format being written here is designed to be compatible with
+    // the ICU udata interfaces and may not be useful for much else
+    DataOutputStream out = new DataOutputStream(file);
+
+// --- write the file header ---
+byte[] comment = "Copyright (C) 1999, International Business Machines Corp. and others. All Rights Reserved.".getBytes("US-ASCII");
+// write the size of the header (rounded up to the next 16-byte boundary)
+short headerSize = (short)(comment.length + 1 // length of comment
+                   + 24); // size of static header data
+short realHeaderSize = (short)(headerSize + ((headerSize % 16 == 0) ? 0 : 16 - (headerSize % 16)));
+writeSwappedShort(realHeaderSize, out, littleEndian);
+// write magic byte values
+out.write(0xda);
+out.write(0x27);
+// write size of core header data
+writeSwappedShort((short)20, out, littleEndian);
+// write reserved bytes
+writeSwappedShort((short)0, out, littleEndian);
+
+// write flag indicating whether we're big-endian
+if (littleEndian) {
+    out.write(0);
+} else {
+    out.write(1);
+}
+
+// write character set family code (0 means ASCII)
+out.write(0);
+// write size of UChar in this file
+out.write(2);
+// write reserved byte
+out.write(0);
+// write data format identifier (this is an array of bytes in ICU, so the value is NOT swapped!)
+out.writeInt(0x42524b53);   // ("BRKS")
+// write file format version number (NOT swapped!)
+out.writeInt(0);
+// write data version number (NOT swapped!)
+out.writeInt(0);
+// write copyright notice
+out.write(comment);
+out.write(0);
+// fill in padding bytes
+while (headerSize < realHeaderSize) {
+    out.write(0);
+    ++headerSize;
+}
+
+// --- write index to the file ---
+// write the number of columns in the state table
+writeSwappedInt(numCategories, out, littleEndian);
+int fileEnd = 36;
+// write the location in the file of the BreakIterator description string
+writeSwappedInt(fileEnd, out, littleEndian);
+fileEnd += (description.length() + 1) * 2;
+fileEnd += (fileEnd % 4 == 0) ? 0 : 4 - (fileEnd % 4);
+// write the location of the character category table's index
+writeSwappedInt(fileEnd, out, littleEndian);
+fileEnd += charCategoryTable.getIndexArray().length * 2;
+fileEnd += (fileEnd % 4 == 0) ? 0 : 4 - (fileEnd % 4);
+// write the location of the character category table's values array
+writeSwappedInt(fileEnd, out, littleEndian);
+fileEnd += charCategoryTable.getValueArray().length;
+fileEnd += (fileEnd % 4 == 0) ? 0 : 4 - (fileEnd % 4);
+// write the location of the forward state table
+writeSwappedInt(fileEnd, out, littleEndian);
+fileEnd += stateTable.length * 2;
+fileEnd += (fileEnd % 4 == 0) ? 0 : 4 - (fileEnd % 4);
+// write the location of the backward state table
+writeSwappedInt(fileEnd, out, littleEndian);
+fileEnd += backwardsStateTable.length * 2;
+fileEnd += (fileEnd % 4 == 0) ? 0 : 4 - (fileEnd % 4);
+// write the location of the endStates flags
+writeSwappedInt(fileEnd, out, littleEndian);
+fileEnd += endStates.length;
+fileEnd += (fileEnd % 4 == 0) ? 0 : 4 - (fileEnd % 4);
+// write the location of the lookaheadStates flags
+writeSwappedInt(fileEnd, out, littleEndian);
+fileEnd += lookaheadStates.length;
+fileEnd += (fileEnd % 4 == 0) ? 0 : 4 - (fileEnd % 4);
+// write the length of the file
+writeSwappedInt(fileEnd, out, littleEndian);
+
+// --- write the actual data ---
+// write description string
+for (int i = 0; i < description.length(); i++)
+    writeSwappedShort((short)description.charAt(i), out, littleEndian);
+out.writeShort(0);
+if ((description.length() + 1) % 2 == 1)
+    out.writeShort(0);
+// write character category table
+char[] temp1 = charCategoryTable.getIndexArray();
+for (int i = 0; i < temp1.length; i++)
+    writeSwappedShort((short)temp1[i], out, littleEndian);
+if (temp1.length % 2 == 1)
+    out.writeShort(0);
+byte[] temp2 = charCategoryTable.getValueArray();
+out.write(temp2);
+switch (temp2.length % 4) {
+    case 1: out.write(0);
+    case 2: out.write(0);
+    case 3: out.write(0);
+    default: break;
+}
+// write the state transition tables
+for (int i = 0; i < stateTable.length; i++)
+    writeSwappedShort(stateTable[i], out, littleEndian);
+if (stateTable.length % 2 == 1)
+    out.writeShort(0);
+for (int i = 0; i < backwardsStateTable.length; i++)
+    writeSwappedShort(backwardsStateTable[i], out, littleEndian);
+if (backwardsStateTable.length % 2 == 1)
+    out.writeShort(0);
+// write the flag arrays
+for (int i = 0; i < endStates.length; i++)
+    out.writeBoolean(endStates[i]);
+switch (endStates.length % 4) {
+    case 1: out.write(0);
+    case 2: out.write(0);
+    case 3: out.write(0);
+    default: break;
+}
+for (int i = 0; i < lookaheadStates.length; i++)
+    out.writeBoolean(lookaheadStates[i]);
+switch (lookaheadStates.length % 4) {
+    case 1: out.write(0);
+    case 2: out.write(0);
+    case 3: out.write(0);
+    default: break;
+}
+}
+
+protected void writeSwappedShort(short x, DataOutputStream out, boolean littleEndian)
+throws IOException{
+    if (littleEndian) {
+        out.write((byte)(x & 0xff));
+        out.write((byte)((x >> 8) & 0xff));
+    }
+    else {
+        out.write((byte)((x >> 8) & 0xff));
+        out.write((byte)(x & 0xff));
+    }
+}
+
+protected void writeSwappedInt(int x, DataOutputStream out, boolean littleEndian)
+throws IOException {
+    if (littleEndian) {
+        out.write((byte)(x & 0xff));
+        out.write((byte)((x >> 8) & 0xff));
+        out.write((byte)((x >> 16) & 0xff));
+        out.write((byte)((x >> 24) & 0xff));
+    }
+    else {
+        out.write((byte)((x >> 24) & 0xff));
+        out.write((byte)((x >> 16) & 0xff));
+        out.write((byte)((x >> 8) & 0xff));
+        out.write((byte)(x & 0xff));
+    }
+}
+    ///CLOVER:ON
+
+    //=======================================================================
+    // BreakIterator overrides
+    //=======================================================================
+
+    /**
+     * Sets the current iteration position to the beginning of the text.
+     * (i.e., the CharacterIterator's starting offset).
+     * @return The offset of the beginning of the text.
+     */
+    public int first() {
+        CharacterIterator t = getText();
+
+        t.first();
+        return t.getIndex();
+    }
+
+    /**
+     * Sets the current iteration position to the end of the text.
+     * (i.e., the CharacterIterator's ending offset).
+     * @return The text's past-the-end offset.
+     */
+    public int last() {
+        CharacterIterator t = getText();
+
+        // I'm not sure why, but t.last() returns the offset of the last character,
+        // rather than the past-the-end offset
+        t.setIndex(t.getEndIndex());
+        return t.getIndex();
+    }
+
+    /**
+     * Advances the iterator either forward or backward the specified number of steps.
+     * Negative values move backward, and positive values move forward.  This is
+     * equivalent to repeatedly calling next() or previous().
+     * @param n The number of steps to move.  The sign indicates the direction
+     * (negative is backwards, and positive is forwards).
+     * @return The character offset of the boundary position n boundaries away from
+     * the current one.
+     */
+    public int next(int n) {
+        int result = current();
+        while (n > 0) {
+            result = handleNext();
+            --n;
+        }
+        while (n < 0) {
+            result = previous();
+            ++n;
+        }
+        return result;
+    }
+
+    /**
+     * Advances the iterator to the next boundary position.
+     * @return The position of the first boundary after this one.
+     */
+    public int next() {
+        return handleNext();
+    }
+
+    /**
+     * Advances the iterator backwards, to the last boundary preceding this one.
+     * @return The position of the last boundary position preceding this one.
+     */
+    public int previous() {
+        // if we're already sitting at the beginning of the text, return DONE
+        CharacterIterator text = getText();
+        if (current() == text.getBeginIndex()) {
+            return BreakIterator.DONE;
+        }
+
+        // set things up.  handlePrevious() will back us up to some valid
+        // break position before the current position (we back our internal
+        // iterator up one step to prevent handlePrevious() from returning
+        // the current position), but not necessarily the last one before
+        // where we started
+        int start = current();
+        text.previous();
+        int lastResult = handlePrevious();
+        int result = lastResult;
+
+        // iterate forward from the known break position until we pass our
+        // starting point.  The last break position before the starting
+        // point is our return value
+        while (result != BreakIterator.DONE && result < start) {
+            lastResult = result;
+            result = handleNext();
+        }
+
+        // set the current iteration position to be the last break position
+        // before where we started, and then return that value
+        text.setIndex(lastResult);
+        return lastResult;
+    }
+
+    /**
+     * Throw IllegalArgumentException unless begin <= offset < end.
+     */
+    protected static final void checkOffset(int offset, CharacterIterator text) {
+        if (offset < text.getBeginIndex() || offset > text.getEndIndex()) {
+            throw new IllegalArgumentException("offset out of bounds");
+        }
+    }
+
+    /**
+     * Sets the iterator to refer to the first boundary position following
+     * the specified position.
+     * @param offset The position from which to begin searching for a break position.
+     * @return The position of the first break after the current position.
+     */
+    public int following(int offset) {
+        // if the offset passed in is already past the end of the text,
+        // just return DONE
+        CharacterIterator text = getText();
+        if (offset == text.getEndIndex()) {
+            return BreakIterator.DONE;
+        }
+        checkOffset(offset, text);
+
+        // otherwise, set our internal iteration position (temporarily)
+        // to the position passed in.  If this is the _beginning_ position,
+        // then we can just use next() to get our return value
+        text.setIndex(offset);
+        if (offset == text.getBeginIndex()) {
+            return handleNext();
+        }
+
+        // otherwise, we have to sync up first.  Use handlePrevious() to back
+        // us up to a known break position before the specified position (if
+        // we can determine that the specified position is a break position,
+        // we don't back up at all).  This may or may not be the last break
+        // position at or before our starting position.  Advance forward
+        // from here until we've passed the starting position.  The position
+        // we stop on will be the first break position after the specified one.
+        int result = handlePrevious();
+        while (result != BreakIterator.DONE && result <= offset) {
+            result = handleNext();
+        }
+        return result;
+    }
+
+    /**
+     * Sets the iterator to refer to the last boundary position before the
+     * specified position.
+     * @param offset The position to begin searching for a break from.
+     * @return The position of the last boundary before the starting position.
+     */
+    public int preceding(int offset) {
+        // if we start by updating the current iteration position to the
+        // position specified by the caller, we can just use previous()
+        // to carry out this operation
+        CharacterIterator text = getText();
+        checkOffset(offset, text);
+        text.setIndex(offset);
+        return previous();
+    }
+
+    /**
+     * Returns true if the specfied position is a boundary position.  As a side
+     * effect, leaves the iterator pointing to the first boundary position at
+     * or after "offset".
+     * @param offset the offset to check.
+     * @return True if "offset" is a boundary position.
+     */
+    public boolean isBoundary(int offset) {
+        CharacterIterator text = getText();
+        checkOffset(offset, text);
+        if (offset == text.getBeginIndex()) {
+            return true;
+        }
+
+        // to check whether this is a boundary, we can use following() on the
+        // position before the specified one and return true if the position we
+        // get back is the one the user specified
+        else {
+            return following(offset - 1) == offset;
+        }
+    }
+
+    /**
+     * Returns the current iteration position.
+     * @return The current iteration position.
+     */
+    public int current() {
+        return getText().getIndex();
+    }
+
+    /**
+     * Return a CharacterIterator over the text being analyzed.  This version
+     * of this method returns the actual CharacterIterator we're using internally.
+     * Changing the state of this iterator can have undefined consequences.  If
+     * you need to change it, clone it first.
+     * @return An iterator over the text being analyzed.
+     */
+    public CharacterIterator getText() {
+        // The iterator is initialized pointing to no text at all, so if this
+        // function is called while we're in that state, we have to fudge an
+        // an iterator to return.
+        if (text == null) {
+            text = new StringCharacterIterator("");
+        }
+        return text;
+    }
+
+    /**
+     * Set the iterator to analyze a new piece of text.  This function resets
+     * the current iteration position to the beginning of the text.
+     * @param newText An iterator over the text to analyze.
+     */
+    public void setText(CharacterIterator newText) {
+        // Test text to see if we need to wrap it in a SafeCharIterator:
+        int end = newText.getEndIndex();
+        newText.setIndex(end);
+        if (newText.getIndex() != end) {
+            // failed - wrap in correct implementation
+            text = new SafeCharIterator(newText);
+        }
+        else {
+            text = newText;
+        }
+        text.first();
+    }
+
+
+    //=======================================================================
+    // implementation
+    //=======================================================================
+
+    /**
+     * This method is the actual implementation of the next() method.  All iteration
+     * vectors through here.  This method initializes the state machine to state 1
+     * and advances through the text character by character until we reach the end
+     * of the text or the state machine transitions to state 0.  We update our return
+     * value every time the state machine passes through a possible end state.
+     */
+    protected int handleNext() {
+        // if we're already at the end of the text, return DONE.
+        CharacterIterator text = getText();
+        if (text.getIndex() == text.getEndIndex()) {
+            return BreakIterator.DONE;
+        }
+
+        // no matter what, we always advance at least one character forward
+        int result = text.getIndex() + 1;
+        int lookaheadResult = 0;
+
+        // begin in state 1
+        int state = START_STATE;
+        int category;
+        char c = text.current();
+        char lastC = c;
+        int lastCPos = 0;
+
+        // if the first character in this segment is an ignore character (which can happen
+        // when it's either the first character in the file or follows a mandatory break
+        // character), and the first non-ignore character isn't a glue character, always
+        // put a break between the ignore characters and the rest of the text
+        if (lookupCategory(c) == IGNORE) {
+            while (lookupCategory(c) == IGNORE)
+                c = text.next();
+
+            if (Character.getType(c) == Character.NON_SPACING_MARK || Character.getType(c)
+                    == Character.ENCLOSING_MARK) {
+                return text.getIndex();
+            }
+        }
+
+        // loop until we reach the end of the text or transition to state 0
+        while (c != CharacterIterator.DONE && state != STOP_STATE) {
+
+            // look up the current character's character category (which tells us
+            // which column in the state table to look at)
+            category = lookupCategory(c);
+
+            // if the character isn't an ignore character, look up a state
+            // transition in the state table
+            if (category != IGNORE) {
+                state = lookupState(state, category);
+            }
+
+            // if the state we've just transitioned to is a lookahead state,
+            // (but not also an end state), save its position.  If it's
+            // both a lookahead state and an end state, update the break position
+            // to the last saved lookup-state position
+            if (lookaheadStates[state]) {
+                if (endStates[state]) {
+                    if (lookaheadResult > 0) {
+                        result = lookaheadResult;
+                    }
+                    else {
+                        result = text.getIndex() + 1;
+                    }
+                }
+                else {
+                    lookaheadResult = text.getIndex() + 1;
+                }
+            }
+
+            // otherwise, if the state we've just transitioned to is an accepting
+            // state, update the break position to be the current iteration position
+            else {
+                if (endStates[state]) {
+                    result = text.getIndex() + 1;
+                }
+            }
+
+            // keep track of the last "real" character we saw.  If this character isn't an
+            // ignore character, take note of it and its position in the text
+            if (category != IGNORE && state != STOP_STATE) {
+                lastC = c;
+                lastCPos = text.getIndex();
+            }
+            c = text.next();
+        }
+
+        // if we've run off the end of the text, and the very last character took us into
+        // a lookahead state, advance the break position to the lookahead position
+        // (the theory here is that if there are no characters at all after the lookahead
+        // position, that always matches the lookahead criteria)
+        if (c == CharacterIterator.DONE && lookaheadResult == text.getEndIndex()) {
+            result = lookaheadResult;
+        }
+
+        // if the last character we saw before the one that took us into the stop state
+        // was a mandatory breaking character, then the break position goes right after it
+        // (this is here so that breaks come before, rather than after, a string of
+        // ignore characters when they follow a mandatory break character)
+        else if ("\n\r\f\u2028\u2029".indexOf(lastC) != -1) {
+            result = lastCPos + 1;
+        }
+
+        text.setIndex(result);
+        return result;
+    }
+
+    /**
+     * This method backs the iterator back up to a "safe position" in the text.
+     * This is a position that we know, without any context, must be a break position.
+     * The various calling methods then iterate forward from this safe position to
+     * the appropriate position to return.  (For more information, see the description
+     * of buildBackwardsStateTable() in RuleBasedBreakIterator.Builder.)
+     */
+    protected int handlePrevious() {
+        CharacterIterator text = getText();
+        int state = START_STATE;
+        int category = 0;
+        int lastCategory = 0;
+        char c = text.current();
+
+        // loop until we reach the beginning of the text or transition to state 0
+        while (c != CharacterIterator.DONE && state != STOP_STATE) {
+//System.out.print(" " + text.getIndex());
+
+            // save the last character's category and look up the current
+            // character's category
+            lastCategory = category;
+            category = lookupCategory(c);
+
+            // if the current character isn't an ignore character, look up a
+            // state transition in the backwards state table
+            if (category != IGNORE) {
+                state = lookupBackwardState(state, category);
+            }
+
+            // then advance one character backwards
+            c = text.previous();
+        }
+
+        // if we didn't march off the beginning of the text, we're either one or two
+        // positions away from the real break position.  (One because of the call to
+        // previous() at the end of the loop above, and another because the character
+        // that takes us into the stop state will always be the character BEFORE
+        // the break position.)
+        if (c != CharacterIterator.DONE) {
+            if (lastCategory != IGNORE) {
+                text.setIndex(text.getIndex() + 2);
+            }
+            else {
+                text.next();
+            }
+        }
+//System.out.print(",");
+        return text.getIndex();
+    }
+
+//static int visitedChars = 0;
+    /**
+     * Looks up a character's category (i.e., its category for breaking purposes,
+     * not its Unicode category)
+     */
+    protected int lookupCategory(char c) {
+//++visitedChars;
+        return charCategoryTable.elementAt(c);
+    }
+
+/*
+static void printVisitedCharCount() {
+System.out.println("Total number of characters visited = " + visitedChars);
+visitedChars = 0;
+}
+*/
+
+    /**
+     * Given a current state and a character category, looks up the
+     * next state to transition to in the state table.
+     */
+    protected int lookupState(int state, int category) {
+        return stateTable[state * numCategories + category];
+    }
+
+    /**
+     * Given a current state and a character category, looks up the
+     * next state to transition to in the backwards state table.
+     */
+    protected int lookupBackwardState(int state, int category) {
+        return backwardsStateTable[state * numCategories + category];
+    }
+
+    /**
+     * This is a helper function for computing the intersection of
+     * two <code>UnicodeSet</code> objects.
+     * @param a, b the two <code>UnicodeSet</code>s to intersect
+     * @return a new <code>UnicodeSet</code> which is the intersection of a and b
+     */
+    private static UnicodeSet intersection(UnicodeSet a, UnicodeSet b)
+    {
+        UnicodeSet result = new UnicodeSet(a);
+
+        result.retainAll(b);
+
+        return result;
+    }
+
+    //=======================================================================
+    // RuleBasedBreakIterator.Builder
+    //=======================================================================
+    /**
+     * The Builder class has the job of constructing a RuleBasedBreakIterator from a
+     * textual description.  A Builder is constructed by RuleBasedBreakIterator's
+     * constructor, which uses it to construct the iterator itself and then throws it
+     * away.
+     * <p>The construction logic is separated out into its own class for two primary
+     * reasons:
+     * <ul><li>The construction logic is quite sophisticated and large.  Separating it
+     * out into its own class means the code must only be loaded into memory while a
+     * RuleBasedBreakIterator is being constructed, and can be purged after that.
+     * <li>There is a fair amount of state that must be maintained throughout the
+     * construction process that is not needed by the iterator after construction.
+     * Separating this state out into another class prevents all of the functions that
+     * construct the iterator from having to have really long parameter lists,
+     * (hopefully) contributing to readability and maintainability.</ul>
+     * <p>It'd be really nice if this could be an independent class rather than an
+     * inner class, because that would shorten the source file considerably, but
+     * making Builder an inner class of RuleBasedBreakIterator allows it direct access
+     * to RuleBasedBreakIterator's private members, which saves us from having to
+     * provide some kind of "back door" to the Builder class that could then also be
+     * used by other classes.
+     */
+    protected class Builder {
+        /**
+         * A temporary holding place used for calculating the character categories.
+         * This object contains UnicodeSet objects.
+         */
+        protected Vector categories = null;
+
+        /**
+         * A table used to map parts of regexp text to lists of character categories,
+         * rather than having to figure them out from scratch each time
+         */
+        protected Hashtable expressions = null;
+
+        /**
+         * A temporary holding place for the list of ignore characters
+         */
+        protected UnicodeSet ignoreChars = null;
+
+        /**
+         * A temporary holding place where the forward state table is built
+         */
+        protected Vector tempStateTable = null;
+
+        /**
+         * A list of all the states that have to be filled in with transitions to the
+         * next state that is created.  Used when building the state table from the
+         * regular expressions.
+         */
+        protected Vector decisionPointList = null;
+
+        /**
+         * A stack for holding decision point lists.  This is used to handle nested
+         * parentheses and braces in regexps.
+         */
+        protected Stack decisionPointStack = null;
+
+        /**
+         * A list of states that loop back on themselves.  Used to handle .*?
+         */
+        protected Vector loopingStates = null;
+
+        /**
+         * Looping states actually have to be backfilled later in the process
+         * than everything else.  This is where a the list of states to backfill
+         * is accumulated.  This is also used to handle .*?
+         */
+        protected Vector statesToBackfill = null;
+
+        /**
+         * A list mapping pairs of state numbers for states that are to be combined
+         * to the state number of the state representing their combination.  Used
+         * in the process of making the state table deterministic to prevent
+         * infinite recursion.
+         */
+        protected Vector mergeList = null;
+
+        /**
+         * A flag that is used to indicate when the list of looping states can
+         * be reset.
+         */
+        protected boolean clearLoopingStates = false;
+
+        /**
+         * A bit mask used to indicate a bit in the table's flags column that marks a
+         * state as an accepting state.
+         */
+        protected static final int END_STATE_FLAG = 0x8000;
+
+        /**
+         * A bit mask used to indicate a bit in the table's flags column that marks a
+         * state as one the builder shouldn't loop to any looping states
+         */
+        protected static final int DONT_LOOP_FLAG = 0x4000;
+
+        /**
+         * A bit mask used to indicate a bit in the table's flags column that marks a
+         * state as a lookahead state.
+         */
+        protected static final int LOOKAHEAD_STATE_FLAG = 0x2000;
+
+        /**
+         * A bit mask representing the union of the mask values listed above.
+         * Used for clearing or masking off the flag bits.
+         */
+        protected static final int ALL_FLAGS = END_STATE_FLAG | LOOKAHEAD_STATE_FLAG
+                | DONT_LOOP_FLAG;
+
+        /**
+         * No special construction is required for the Builder.
+         */
+        public Builder() {
+        }
+
+        /**
+         * This is the main function for setting up the BreakIterator's tables.  It
+         * just vectors different parts of the job off to other functions.
+         */
+        public void buildBreakIterator() {
+            Vector tempRuleList = buildRuleList(description);
+            buildCharCategories(tempRuleList);
+            buildStateTable(tempRuleList);
+            buildBackwardsStateTable(tempRuleList);
+        }
+
+        /**
+         * Thus function has three main purposes:
+         * <ul><li>Perform general syntax checking on the description, so the rest of the
+         * build code can assume that it's parsing a legal description.
+         * <li>Split the description into separate rules
+         * <li>Perform variable-name substitutions (so that no one else sees variable names)
+         * </ul>
+         */
+        private Vector buildRuleList(String description) {
+            // invariants:
+            // - parentheses must be balanced: ()[]{}<>
+            // - nothing can be nested inside {}
+            // - nothing can be nested inside [] except more []s
+            // - pairs of ()[]{}<> must not be empty
+            // - ; can only occur at the outer level
+            // - | can only appear inside ()
+            // - only one = or / can occur in a single rule
+            // - = and / cannot both occur in the same rule
+            // - the right-hand side of a = expression must be enclosed in [] or ()
+            // - * may not occur at the beginning of a rule, nor may it follow
+            //   =, /, (, (, |, }, ;, or *
+            // - ? may only follow *
+            // - the rule list must contain at least one / rule
+            // - no rule may be empty
+            // - all printing characters in the ASCII range except letters and digits
+            //   are reserved and must be preceded by \
+            // - ! may only occur at the beginning of a rule
+
+            // set up a vector to contain the broken-up description (each entry in the
+            // vector is a separate rule) and a stack for keeping track of opening
+            // punctuation
+            Vector tempRuleList = new Vector();
+            Stack parenStack = new Stack();
+
+            int p = 0;
+            int ruleStart = 0;
+            char c = '\u0000';
+            char lastC = '\u0000';
+            char lastOpen = '\u0000';
+            boolean haveEquals = false;
+            boolean havePipe = false;
+            boolean sawVarName = false;
+            boolean sawIllegalChar = false;
+            int illegalCharPos = 0;
+            final String charsThatCantPrecedeAsterisk = "=/<(|>*+?;\u0000";
+
+            // if the description doesn't end with a semicolon, tack a semicolon onto the end
+            if (description.length() != 0 && description.charAt(description.length() - 1) != ';') {
+                description = description + ";";
+            }
+
+            // for each character, do...
+            while (p < description.length()) {
+                c = description.charAt(p);
+                switch (c) {
+                    // if the character is opening punctuation, verify that no nesting
+                    // rules are broken, and push the character onto the stack
+                    case '{':
+                    case '[':
+                    case '(':
+                        if (lastOpen == '{') {
+                            error("Can't nest brackets inside {}", p, description);
+                        }
+                        if (lastOpen == '[' && c != '[') {
+                            error("Can't nest anything in [] but []", p, description);
+                        }
+
+                        // if we see { anywhere except on the left-hand side of =,
+                        // we must be seeing a variable name that was never defined
+                        if (c == '{' && (haveEquals || havePipe)) {
+                            error("Unknown variable name", p, description);
+                        }
+
+                        lastOpen = c;
+                        parenStack.push(new Character(c));
+                        if (c == '{') {
+                            sawVarName = true;
+                        }
+                        break;
+
+                    // if the character is closing punctuation, verify that it matches the
+                    // last opening punctuation we saw, and that the brackets contain
+                    // something, then pop the stack
+                    case '}':
+                    case ']':
+                    case ')':
+                        char expectedClose = '\u0000';
+                        switch (lastOpen) {
+                            case '{':
+                                expectedClose = '}';
+                                break;
+                            case '[':
+                                expectedClose = ']';
+                                break;
+                            case '(':
+                                expectedClose = ')';
+                                break;
+                        }
+                        if (c != expectedClose) {
+                            error("Unbalanced parentheses", p, description);
+                        }
+                        if (lastC == lastOpen) {
+                            error("Parens don't contain anything", p, description);
+                        }
+                        parenStack.pop();
+                        if (!parenStack.empty()) {
+                            lastOpen = ((Character)(parenStack.peek())).charValue();
+                        }
+                        else {
+                            lastOpen = '\u0000';
+                        }
+
+                        break;
+
+                    // if the character is an asterisk, make sure it occurs in a place
+                    // where an asterisk can legally go
+                    case '*': case '+': case '?':
+                        if (charsThatCantPrecedeAsterisk.indexOf(lastC) != -1
+                                && (c != '?' || lastC != '*')) {
+                            error("Misplaced *, +, or ?", p, description);
+                        }
+                        break;
+
+                    // if the character is an equals sign, make sure we haven't seen another
+                    // equals sign or a slash yet
+                    case '=':
+                        if (haveEquals || havePipe) {
+                            error("More than one = or / in rule", p, description);
+                        }
+                        haveEquals = true;
+                        sawIllegalChar = false;
+                        break;
+
+                    // if the character is a slash, make sure we haven't seen another slash
+                    // or an equals sign yet
+                    case '/':
+                        if (haveEquals || havePipe) {
+                            error("More than one = or / in rule", p, description);
+                        }
+                        if (sawVarName) {
+                            error("Unknown variable name", p, description);
+                        }
+                        havePipe = true;
+                        break;
+
+                    // if the character is an exclamation point, make sure it occurs only
+                    // at the beginning of a rule
+                    case '!':
+                        if (lastC != ';' && lastC != '\u0000') {
+                            error("! can only occur at the beginning of a rule", p, description);
+                        }
+                        break;
+
+                    // if the character is a backslash, skip the character that follows it
+                    // (it'll get treated as a literal character)
+                    case '\\':
+                        ++p;
+                        break;
+
+                    // we don't have to do anything special on a period
+                    case '.':
+                        break;
+
+                    // if the character is a syntax character that can only occur
+                    // inside [], make sure that it does in fact only occur inside []
+                    // (or in a variable name)
+                    case '^':
+                    case '-':
+                    case ':':
+                    case '&':
+                        if (lastOpen != '[' && lastOpen != '{' && !sawIllegalChar) {
+                            sawIllegalChar = true;
+                            illegalCharPos = p;
+                        }
+                        break;
+
+                    // if the character is a semicolon, do the following...
+                    case ';':
+                        // if we saw any illegal characters along the way, throw
+                        // an error
+                        if (sawIllegalChar) {
+                            error("Illegal character", illegalCharPos, description);
+                        }
+
+                        // make sure the rule contains something and that there are no
+                        // unbalanced parentheses or brackets
+                        if (lastC == ';' || lastC == '\u0000') {
+                            error("Empty rule", p, description);
+                        }
+                        if (!parenStack.empty()) {
+                            error("Unbalanced parenheses", p, description);
+                        }
+
+                        if (parenStack.empty()) {
+                            // if the rule contained an = sign, call processSubstitution()
+                            // to replace the substitution name with the substitution text
+                            // wherever it appears in the description
+                            if (haveEquals) {
+                                description = processSubstitution(description.substring(ruleStart,
+                                                p), description, p + 1);
+                            }
+                            else {
+                                // otherwise, check to make sure the rule doesn't reference
+                                // any undefined substitutions
+                                if (sawVarName) {
+                                    error("Unknown variable name", p, description);
+                                }
+
+                                // then add it to tempRuleList
+                                tempRuleList.addElement(description.substring(ruleStart, p));
+                            }
+
+                            // and reset everything to process the next rule
+                            ruleStart = p + 1;
+                            haveEquals = havePipe = sawVarName = sawIllegalChar = false;
+                        }
+                        break;
+
+                    // if the character is a vertical bar, check to make sure that it
+                    // occurs inside a () expression and that the character that precedes
+                    // it isn't also a vertical bar
+                    case '|':
+                        if (lastC == '|') {
+                            error("Empty alternative", p, description);
+                        }
+                        if (parenStack.empty() || lastOpen != '(') {
+                            error("Misplaced |", p, description);
+                        }
+                        break;
+
+                    // if the character is anything else (escaped characters are
+                    // skipped and don't make it here), it's an error
+                    default:
+                        if (c >= ' ' && c < '\u007f' && !Character.isLetter(c)
+                                && !Character.isDigit(c) && !sawIllegalChar) {
+                            sawIllegalChar = true;
+                            illegalCharPos = p;
+                        }
+                        break;
+                }
+                lastC = c;
+                ++p;
+            }
+            if (tempRuleList.size() == 0) {
+                error("No valid rules in description", p, description);
+            }
+            return tempRuleList;
+        }
+
+        /**
+         * This function performs variable-name substitutions.  First it does syntax
+         * checking on the variable-name definition.  If it's syntactically valid, it
+         * then goes through the remainder of the description and does a simple
+         * find-and-replace of the variable name with its text.  (The variable text
+         * must be enclosed in either [] or () for this to work.)
+         */
+        protected String processSubstitution(String substitutionRule, String description,
+                        int startPos) {
+            // isolate out the text on either side of the equals sign
+            String replace;
+            String replaceWith;
+            int equalPos = substitutionRule.indexOf('=');
+            if (substitutionRule.charAt(0) != '$') {
+                error("Missing '$' on left-hand side of =", startPos, description);
+            }
+            replace = substitutionRule.substring(1, equalPos);
+            replaceWith = substitutionRule.substring(equalPos + 1);
+
+            // check to see whether the substitution name is something we've declared
+            // to be "special".  For RuleBasedBreakIterator itself, this is IGNORE_VAR.
+            // This function takes care of any extra processing that has to be done
+            // with "special" substitution names.
+            handleSpecialSubstitution(replace, replaceWith, startPos, description);
+
+            // perform various other syntax checks on the rule
+            if (replaceWith.length() == 0) {
+                error("Nothing on right-hand side of =", startPos, description);
+            }
+            if (replace.length() == 0) {
+                error("Nothing on left-hand side of =", startPos, description);
+            }
+            if (!(replaceWith.charAt(0) == '[' && replaceWith.charAt(replaceWith.length() - 1)
+                    == ']') && !(replaceWith.charAt(0) == '(' && replaceWith.charAt(
+                    replaceWith.length() - 1) == ')')) {
+                error("Illegal right-hand side for =", startPos, description);
+            }
+
+            // now go through the rest of the description (which hasn't been broken up
+            // into separate rules yet) and replace every occurrence of the
+            // substitution name with the substitution body
+            replace = "$" + replace;
+            StringBuffer result = new StringBuffer();
+            result.append(description.substring(0, startPos));
+            int lastPos = startPos;
+            int pos = description.indexOf(replace, startPos);
+            while (pos != -1) {
+                // [liu] Check that the string we've found isn't a redefinition
+                // of the variable.
+                if (description.charAt(pos-1) == ';' &&
+                    description.charAt(pos + replace.length()) == '=') {
+                    error("Attempt to redefine " + replace, pos, description);
+                }
+                result.append(description.substring(lastPos, pos));
+                result.append(replaceWith);
+                lastPos = pos + replace.length();
+                pos = description.indexOf(replace, lastPos);
+            }
+            result.append(description.substring(lastPos));
+            return result.toString();
+        }
+
+        /**
+         * This function defines a protocol for handling substitution names that
+         * are "special," i.e., that have some property beyond just being
+         * substitutions.  At the RuleBasedBreakIterator level, we have one
+         * special substitution name, IGNORE_VAR.  Subclasses can override this
+         * function to add more.  Any special processing that has to go on beyond
+         * that which is done by the normal substitution-processing code is done
+         * here.
+         */
+        protected void handleSpecialSubstitution(String replace, String replaceWith,
+                    int startPos, String description) {
+            // if we get a definition for a substitution called IGNORE_VAR, it defines
+            // the ignore characters for the iterator.  Check to make sure the expression
+            // is a [] expression, and if it is, parse it and store the characters off
+            // to the side.
+            if (replace.equals(IGNORE_VAR)) {
+                if (replaceWith.charAt(0) == '(') {
+                    error("Ignore group can't be enclosed in (", startPos, description);
+                }
+                ignoreChars = new UnicodeSet(replaceWith, false);
+            }
+        }
+
+        /**
+         * This function builds the character category table.  On entry,
+         * tempRuleList is a vector of break rules that has had variable names substituted.
+         * On exit, the charCategoryTable data member has been initialized to hold the
+         * character category table, and tempRuleList's rules have been munged to contain
+         * character category numbers everywhere a literal character or a [] expression
+         * originally occurred.
+         */
+        protected void buildCharCategories(Vector tempRuleList) {
+            int bracketLevel = 0;
+            int p = 0;
+            int lineNum = 0;
+
+            // build hash table of every literal character or [] expression in the rule list
+            // and derive a UnicodeSet object representing the characters each refers to
+            expressions = new Hashtable();
+            while (lineNum < tempRuleList.size()) {
+                String line = (String)(tempRuleList.elementAt(lineNum));
+                p = 0;
+                while (p < line.length()) {
+                    char c = line.charAt(p);
+                    switch (c) {
+                        // skip over all syntax characters except [
+                        case '(': case ')': case '*': case '.': case '/':
+                        case '|': case ';': case '?': case '!': case '+':
+                            break;
+
+                        // for [, find the matching ] (taking nested [] pairs into account)
+                        // and add the whole expression to the expression list
+                        case '[':
+                            int q = p + 1;
+                            ++bracketLevel;
+                            while (q < line.length() && bracketLevel != 0) {
+                                c = line.charAt(q);
+                                if (c == '[') {
+                                    ++bracketLevel;
+                                }
+                                else if (c == ']') {
+                                    --bracketLevel;
+                                }
+                                ++q;
+                            }
+                            if (expressions.get(line.substring(p, q)) == null) {
+                                expressions.put(line.substring(p, q), new UnicodeSet(line.
+                                                substring(p, q), false));
+//Test.debugPrintln("1. Adding expression: " + line.substring(p, q));
+                            }
+                            p = q - 1;
+                            break;
+
+                        // for \ sequences, just move to the next character and treat
+                        // it as a single character
+                        case '\\':
+                            ++p;
+                            c = line.charAt(p);
+                            // DON'T break; fall through into "default" clause
+
+                        // for an isolated single character, add it to the expression list
+                        default:
+                            UnicodeSet s = new UnicodeSet();
+                            s.add(line.charAt(p));
+                            expressions.put(line.substring(p, p + 1), s);
+//Test.debugPrintln("2. Adding expression: " + line.substring(p, p + 1));
+                            break;
+                    }
+                    ++p;
+                }
+                ++lineNum;
+            }
+
+            // create the temporary category table (which is a vector of UnicodeSet objects)
+            categories = new Vector();
+            if (ignoreChars != null) {
+                categories.addElement(ignoreChars);
+            }
+            else {
+                categories.addElement(new UnicodeSet());
+            }
+            ignoreChars = null;
+
+            // this is a hook to allow subclasses to add categories on their own
+            mungeExpressionList(expressions);
+
+            // Derive the character categories.  Go through the existing character categories
+            // looking for overlap.  Any time there's overlap, we create a new character
+            // category for the characters that overlapped and remove them from their original
+            // category.  At the end, any characters that are left in the expression haven't
+            // been mentioned in any category, so another new category is created for them.
+            // For example, if the first expression is [abc], then a, b, and c will be placed
+            // into a single character category.  If the next expression is [bcd], we will first
+            // remove b and c from their existing category (leaving a behind), create a new
+            // category for b and c, and then create another new category for d (which hadn't
+            // been mentioned in the previous expression).
+            // At no time should a character ever occur in more than one character category.
+
+            // for each expression in the expressions list, do...
+            Enumeration iter = expressions.elements();
+            while (iter.hasMoreElements()) {
+                // initialize the working char set to the chars in the current expression
+                UnicodeSet work = new UnicodeSet((UnicodeSet)iter.nextElement());
+
+                // for each category in the category list, do...
+                for (int j = categories.size() - 1; !work.isEmpty() && j > 0; j--) {
+
+                    // if there's overlap between the current working set of chars
+                    // and the current category...
+                    UnicodeSet cat = (UnicodeSet)(categories.elementAt(j));
+                    UnicodeSet overlap = intersection(work, cat);
+
+                    if (!overlap.isEmpty()) {
+                        // if the current category is not a subset of the current
+                        // working set of characters, then remove the overlapping
+                        // characters from the current category and create a new
+                        // category for them
+                        if (!overlap.equals(cat)) {
+                            cat.removeAll(overlap);
+                            categories.addElement(overlap);
+                        }
+
+                        // and always remove the overlapping characters from the current
+                        // working set of characters
+                        work.removeAll(overlap);
+                    }
+                }
+
+                // if there are still characters left in the working char set,
+                // add a new category containing them
+                if (!work.isEmpty()) {
+                    categories.addElement(work);
+                }
+            }
+
+            // we have the ignore characters stored in position 0.  Make an extra pass through
+            // the character category list and remove anything from the ignore list that shows
+            // up in some other category
+            UnicodeSet allChars = new UnicodeSet();
+            for (int i = 1; i < categories.size(); i++)
+                allChars.addAll((UnicodeSet)(categories.elementAt(i)));
+            UnicodeSet ignoreChars = (UnicodeSet)(categories.elementAt(0));
+            ignoreChars.removeAll(allChars);
+
+            // now that we've derived the character categories, go back through the expression
+            // list and replace each UnicodeSet object with a String that represents the
+            // character categories that expression refers to.  The String is encoded: each
+            // character is a character category number (plus 0x100 to avoid confusing them
+            // with syntax characters in the rule grammar)
+            iter = expressions.keys();
+            while (iter.hasMoreElements()) {
+                String key = (String)iter.nextElement();
+                UnicodeSet cs = (UnicodeSet)expressions.get(key);
+                StringBuffer cats = new StringBuffer();
+
+                // for each category...
+                for (int j = 1; j < categories.size(); j++) {
+                    UnicodeSet cat = new UnicodeSet((UnicodeSet) categories.elementAt(j));
+
+                    // if the current expression contains characters in that category...
+                    if (cs.containsAll(cat)) {
+
+                        // then add the encoded category number to the String for this
+                        // expression
+                        cats.append((char)(0x100 + j));
+                        if (cs.equals(cat)) {
+                            break;
+                        }
+                    }
+                }
+
+                // once we've finished building the encoded String for this expression,
+                // replace the UnicodeSet object with it
+                expressions.put(key, cats.toString());
+            }
+
+            // and finally, we turn the temporary category table into a permanent category
+            // table, which is a CompactByteArray. (we skip category 0, which by definition
+            // refers to all characters not mentioned specifically in the rules)
+            charCategoryTable = new CompactByteArray((byte)0);
+
+            // for each category...
+            for (int i = 0; i < categories.size(); i++) {
+                UnicodeSet chars = (UnicodeSet)(categories.elementAt(i));
+                int n = chars.getRangeCount();
+
+                // go through the character ranges in the category one by one...
+                for (int j = 0; j < n; ++j) {
+                    int rangeStart = chars.getRangeStart(j);
+                    
+                    // (ignore anything above the BMP for now...)
+                    if (rangeStart >= 0x10000) {
+                        break;
+                    }
+                    
+                    // and set the corresponding elements in the CompactArray accordingly
+                    if (i != 0) {
+                        charCategoryTable.setElementAt((char)rangeStart,
+                            (char)chars.getRangeEnd(j), (byte)i);
+                    }
+
+                    // (category 0 is special-- it's the hiding place for the ignore
+                    // characters, whose real category number in the CompactArray is
+                    // -1 [this is because category 0 contains all characters not
+                    // specifically mentioned anywhere in the rules] )
+                    else {
+                        charCategoryTable.setElementAt((char)rangeStart,
+                            (char)chars.getRangeEnd(j), IGNORE);
+                    }
+                }
+            }
+
+            // once we've populated the CompactArray, compact it
+            charCategoryTable.compact();
+
+            // initialize numCategories
+            numCategories = categories.size();
+        }
+
+        protected void mungeExpressionList(Hashtable expressions) {
+            // empty in the parent class.  This function provides a hook for subclasses
+            // to mess with the character category table.
+        }
+
+        /**
+         * This is the function that builds the forward state table.  Most of the real
+         * work is done in parseRule(), which is called once for each rule in the
+         * description.
+         */
+        private void buildStateTable(Vector tempRuleList) {
+            // initialize our temporary state table, and fill it with two states:
+            // state 0 is a dummy state that allows state 1 to be the starting state
+            // and 0 to represent "stop".  State 1 is added here to seed things
+            // before we start parsing
+            tempStateTable = new Vector();
+            tempStateTable.addElement(new short[numCategories + 1]);
+            tempStateTable.addElement(new short[numCategories + 1]);
+
+            // call parseRule() for every rule in the rule list (except those which
+            // start with !, which are actually backwards-iteration rules)
+            // variable not used int n = tempRuleList.size();
+            for (int i = 0; i < tempRuleList.size(); i++) {
+                String rule = (String)tempRuleList.elementAt(i);
+                if (rule.charAt(0) != '!') {
+                    parseRule(rule, true);
+                }
+            }
+
+            // finally, use finishBuildingStateTable() to minimize the number of
+            // states in the table and perform some other cleanup work
+            finishBuildingStateTable(true);
+/*
+System.out.print("C:\t");
+for (int i = 0; i < numCategories; i++)
+System.out.print(Integer.toString(i) + "\t");
+System.out.println(); System.out.print("=================================================");
+for (int i = 0; i < stateTable.length; i++) {
+if (i % numCategories == 0) {
+System.out.println();
+if (endStates[i / numCategories])
+System.out.print("*");
+else
+System.out.print(" ");
+if (lookaheadStates[i / numCategories]) {
+System.out.print("%");
+}
+else
+System.out.print(" ");
+System.out.print(Integer.toString(i / numCategories) + ":\t");
+}
+if (stateTable[i] == 0) System.out.print(".\t"); else System.out.print(Integer.toString(stateTable[i]) + "\t");
+}
+System.out.println();
+*/
+    }
+
+        /**
+         * This is where most of the work really happens.  This routine parses a single
+         * rule in the rule description, adding and modifying states in the state
+         * table according to the new expression.  The state table is kept deterministic
+         * throughout the whole operation, although some ugly postprocessing is needed
+         * to handle the *? token.
+         */
+        private void parseRule(String rule, boolean forward) {
+            // algorithm notes:
+            //   - The basic idea here is to read successive character-category groups
+            //   from the input string.  For each group, you create a state and point
+            //   the appropriate entries in the previous state to it.  This produces a
+            //   straight line from the start state to the end state.  The ?, +, *, and (|)
+            //   idioms produce branches in this straight line.  These branches (states
+            //   that can transition to more than one other state) are called "decision
+            //   points."  A list of decision points is kept.  This contains a list of
+            //   all states that can transition to the next state to be created.  For a
+            //   straight line progression, the only thing in the decision-point list is
+            //   the current state.  But if there's a branch, the decision-point list
+            //   will contain all of the beginning points of the branch when the next
+            //   state to be created represents the end point of the branch.  A stack is
+            //   used to save decision point lists in the presence of nested parentheses
+            //   and the like.  For example, when a { is encountered, the current decision
+            //   point list is saved on the stack and restored when the corresponding }
+            //   is encountered.  This way, after the } is read, the decision point list
+            //   will contain both the state right before the } _and_ the state before
+            //   the whole {} expression.  Both of these states can transition to the next
+            //   state after the {} expression.
+            //   - one complication arises when we have to stamp a transition value into
+            //   an array cell that already contains one.  The updateStateTable() and
+            //   mergeStates() functions handle this case.  Their basic approach is to
+            //   create a new state that combines the two states that conflict and point
+            //   at it when necessary.  This happens recursively, so if the merged states
+            //   also conflict, they're resolved in the same way, and so on.  There are
+            //   a number of tests aimed at preventing infinite recursion.
+            //   - another complication arises with repeating characters.  It's somewhat
+            //   ambiguous whether the user wants a greedy or non-greedy match in these cases.
+            //   (e.g., whether "[a-z]*abc" means the SHORTEST sequence of letters ending in
+            //   "abc" or the LONGEST sequence of letters ending in "abc".  We've adopted
+            //   the *? to mean "shortest" and * by itself to mean "longest".  (You get the
+            //   same result with both if there's no overlap between the repeating character
+            //   group and the group immediately following it.)  Handling the *? token is
+            //   rather complicated and involves keeping track of whether a state needs to
+            //   be merged (as described above) or merely overwritten when you update one of
+            //   its cells, and copying the contents of a state that loops with a *? token
+            //   into some of the states that follow it after the rest of the table-building
+            //   process is complete ("backfilling").
+            // implementation notes:
+            //   - This function assumes syntax checking has been performed on the input string
+            //   prior to its being passed in here.  It assumes that parentheses are
+            //   balanced, all literal characters are enclosed in [] and turned into category
+            //   numbers, that there are no illegal characters or character sequences, and so
+            //   on.  Violation of these invariants will lead to undefined behavior.
+            //   - It'd probably be better to use linked lists rather than Vector and Stack
+            //   to maintain the decision point list and stack.  I went for simplicity in
+            //   this initial implementation.  If performance is critical enough, we can go
+            //   back and fix this later.
+            //   -There are a number of important limitations on the *? token.  It does not work
+            //   right when followed by a repeating character sequence (e.g., ".*?(abc)*")
+            //   (although it does work right when followed by a single repeating character).
+            //   It will not always work right when nested in parentheses or braces (although
+            //   sometimes it will).  It also will not work right if the group of repeating
+            //   characters and the group of characters that follows overlap partially
+            //   (e.g., "[a-g]*?[e-j]").  None of these capabilites was deemed necessary for
+            //   describing breaking rules we know about, so we left them out for
+            //   expeditiousness.
+            //   - Rules such as "[a-z]*?abc;" will be treated the same as "[a-z]*?aa*bc;"--
+            //   that is, if the string ends in "aaaabc", the break will go before the first
+            //   "a" rather than the last one.  Both of these are limitations in the design
+            //   of RuleBasedBreakIterator and not limitations of the rule parser.
+
+            int p = 0;
+            int currentState = 1;   // don't use state number 0; 0 means "stop"
+            int lastState = currentState;
+            String pendingChars = "";
+
+            decisionPointStack = new Stack();
+            decisionPointList = new Vector();
+            loopingStates = new Vector();
+            statesToBackfill = new Vector();
+
+            short[] state;
+            boolean sawEarlyBreak = false;
+
+            // if we're adding rules to the backward state table, mark the initial state
+            // as a looping state
+            if (!forward) {
+                loopingStates.addElement(new Integer(1));
+            }
+
+            // put the current state on the decision point list before we start
+            decisionPointList.addElement(new Integer(currentState)); // we want currentState to
+                                                                     // be 1 here...
+            currentState = tempStateTable.size() - 1;   // but after that, we want it to be
+                                                        // 1 less than the state number of the next state
+            while (p < rule.length()) {
+                char c = rule.charAt(p);
+                clearLoopingStates = false;
+
+                // this section handles literal characters, escaped characters (which are
+                // effectively literal characters too), the . token, and [] expressions
+                if (c == '['
+                    || c == '\\'
+                    || Character.isLetter(c)
+                    || Character.isDigit(c)
+                    || c < ' '
+                    || c == '.'
+                    || c >= '\u007f') {
+
+                    // if we're not on a period, isolate the expression and look up
+                    // the corresponding category list
+                    if (c != '.') {
+                        int q = p;
+
+                        // if we're on a backslash, the expression is the character
+                        // after the backslash
+                        if (c == '\\') {
+                            q = p + 2;
+                            ++p;
+                        }
+
+                        // if we're on an opening bracket, scan to the closing bracket
+                        // to isolate the expression
+                        else if (c == '[') {
+                            int bracketLevel = 1;
+                            while (bracketLevel > 0) {
+                                ++q;
+                                c = rule.charAt(q);
+                                if (c == '[') {
+                                    ++bracketLevel;
+                                }
+                                else if (c == ']') {
+                                    --bracketLevel;
+                                }
+                                else if (c == '\\') {
+                                    ++q;
+                                }
+                            }
+                            ++q;
+                        }
+
+                        // otherwise, the expression is just the character itself
+                        else {
+                            q = p + 1;
+                        }
+
+                        // look up the category list for the expression and store it
+                        // in pendingChars
+                        pendingChars = (String)expressions.get(rule.substring(p, q));
+
+                        // advance the current position past the expression
+                        p = q - 1;
+                    }
+
+                    // if the character we're on is a period, we end up down here
+                    else {
+                        int rowNum = ((Integer)decisionPointList.lastElement()).intValue();
+                        state = (short[])tempStateTable.elementAt(rowNum);
+
+                        // if the period is followed by an asterisk, then just set the current
+                        // state to loop back on itself
+                        if (p + 1 < rule.length() && rule.charAt(p + 1) == '*' && state[0] != 0) {
+                            decisionPointList.addElement(new Integer(state[0]));
+                            pendingChars = "";
+                            ++p;
+                            if (p + 1 < rule.length() && rule.charAt(p + 1) == '?') {
+//System.out.println("Saw *?");
+                                setLoopingStates(decisionPointList, decisionPointList);
+                                ++p;
+                            }
+//System.out.println("Saw .*");
+                        }
+
+                        // otherwise, fabricate a category list ("pendingChars") with
+                        // every category in it
+                        else {
+                            StringBuffer temp = new StringBuffer();
+                            for (int i = 0; i < numCategories; i++)
+                                temp.append((char)(i + 0x100));
+                            pendingChars = temp.toString();
+                        }
+                    }
+
+                    // we'll end up in here for all expressions except for .*, which is
+                    // special-cased above
+                    if (pendingChars.length() != 0) {
+
+                        // if the expression is followed by an asterisk or a question mark,
+                        //  then push a copy of the current decision point list onto the stack
+                        if (p + 1 < rule.length() && (
+                            rule.charAt(p + 1) == '*' ||
+                            rule.charAt(p + 1) == '?'
+                        )) {
+                            decisionPointStack.push(decisionPointList.clone());
+                        }
+
+                        // create a new state, add it to the list of states to backfill
+                        // if we have looping states to worry about, set its "don't make
+                        // me an accepting state" flag if we've seen a slash, and add
+                        // it to the end of the state table
+                        int newState = tempStateTable.size();
+                        if (loopingStates.size() != 0) {
+                            statesToBackfill.addElement(new Integer(newState));
+                        }
+                        state = new short[numCategories + 1];
+                        if (sawEarlyBreak) {
+                            state[numCategories] = DONT_LOOP_FLAG;
+                        }
+                        tempStateTable.addElement(state);
+
+                        // update everybody in the decision point list to point to
+                        // the new state (this also performs all the reconciliation
+                        // needed to make the table deterministic), then clear the
+                        // decision point list
+                        updateStateTable(decisionPointList, pendingChars, (short)newState);
+                        decisionPointList.removeAllElements();
+
+                        // add all states created since the last literal character we've
+                        // seen to the decision point list
+                        lastState = currentState;
+                        do {
+                            ++currentState;
+                            decisionPointList.addElement(new Integer(currentState));
+                        } while (currentState + 1 < tempStateTable.size());
+                    }
+                }
+
+                // a * or a + denotes a repeating character or group, and a ? denotes an
+                // optional character group. (*, + and ? after () are handled separately below.)
+                if (c == '+' || c == '*' || c == '?') {
+                    // when there's a * or a +, update the current state to loop back on itself
+                    // on the character categories that caused us to enter this state
+                    if (c == '*' || c == '+') {
+                        // Note: we process one state at a time because updateStateTable
+                        // may add new states, and we want to process them as well.
+                        for (int i = lastState + 1; i < tempStateTable.size(); i++) {
+                            Vector temp = new Vector();
+                            temp.addElement(new Integer(i));
+                            updateStateTable(temp, pendingChars, (short)(lastState + 1));
+                        }
+
+                        // If we just added any new states, add them to the decison point list
+                        // Note: it might be a good idea to avoid adding new states to the
+                        // decision point list in more than one place...
+                        while (currentState + 1 < tempStateTable.size()) {
+                            decisionPointList.addElement(new Integer(++currentState));
+                        }
+                    }
+
+                    // for * and ? pop the top element off the decision point stack and merge
+                    // it with the current decision point list (this causes the divergent
+                    // paths through the state table to come together again on the next
+                    // new state)
+                    if (c == '*' || c == '?') {
+                        Vector temp = (Vector)decisionPointStack.pop();
+                        for (int i = 0; i < decisionPointList.size(); i++)
+                            temp.addElement(decisionPointList.elementAt(i));
+                        decisionPointList = temp;
+
+                        // a ? after a * modifies the behavior of * in cases where there is overlap
+                        // between the set of characters that repeat and the characters which follow.
+                        // Without the ?, all states following the repeating state, up to a state which
+                        // is reached by a character that doesn't overlap, will loop back into the
+                        // repeating state.  With the ?, the mark states following the *? DON'T loop
+                        // back into the repeating state.  Thus, "[a-z]*xyz" will match the longest
+                        // sequence of letters that ends in "xyz," while "[a-z]*? will match the
+                        // _shortest_ sequence of letters that ends in "xyz".
+                        // We use extra bookkeeping to achieve this effect, since everything else works
+                        // according to the "longest possible match" principle.  The basic principle
+                        // is that transitions out of a looping state are written in over the looping
+                        // value instead of being reconciled, and that we copy the contents of the
+                        // looping state into empty cells of all non-terminal states that follow the
+                        // looping state.
+//System.out.println("c = " + c + ", p = " + p + ", rule.length() = " + rule.length());
+                        if (c == '*' && p + 1 < rule.length() && rule.charAt(p + 1) == '?') {
+//System.out.println("Saw *?");
+                            setLoopingStates(decisionPointList, decisionPointList);
+                            ++p;
+                        }
+                    }
+                }
+
+                // a ( marks the beginning of a sequence of characters.  Parentheses can either
+                // contain several alternative character sequences (i.e., "(ab|cd|ef)"), or
+                // they can contain a sequence of characters that can repeat (i.e., "(abc)*").  Thus,
+                // A () group can have multiple entry and exit points.  To keep track of this,
+                // we reserve TWO spots on the decision-point stack.  The top of the stack is
+                // the list of exit points, which becomes the current decision point list when
+                // the ) is reached.  The next entry down is the decision point list at the
+                // beginning of the (), which becomes the current decision point list at every
+                // entry point.
+                // In addition to keeping track of the exit points and the active decision
+                // points before the ( (i.e., the places from which the () can be entered),
+                // we need to keep track of the entry points in case the expression loops
+                // (i.e., is followed by *).  We do that by creating a dummy state in the
+                // state table and adding it to the decision point list (BEFORE it's duplicated
+                // on the stack).  Nobody points to this state, so it'll get optimized out
+                // at the end.  It exists only to hold the entry points in case the ()
+                // expression loops.
+                if (c == '(') {
+
+                    // add a new state to the state table to hold the entry points into
+                    // the () expression
+                    tempStateTable.addElement(new short[numCategories + 1]);
+
+                    // we have to adjust lastState and currentState to account for the
+                    // new dummy state
+                    lastState = currentState;
+                    ++currentState;
+
+                    // add the current state to the decision point list (add it at the
+                    // BEGINNING so we can find it later)
+                    decisionPointList.insertElementAt(new Integer(currentState), 0);
+
+                    // finally, push a copy of the current decision point list onto the
+                    // stack (this keeps track of the active decision point list before
+                    // the () expression), followed by an empty decision point list
+                    // (this will hold the exit points)
+                    decisionPointStack.push(decisionPointList.clone());
+                    decisionPointStack.push(new Vector());
+                }
+
+                // a | separates alternative character sequences in a () expression.  When
+                // a | is encountered, we add the current decision point list to the exit-point
+                // list, and restore the decision point list to its state prior to the (.
+                if (c == '|') {
+
+                    // pick out the top two decision point lists on the stack
+                    Vector oneDown = (Vector)decisionPointStack.pop();
+                    Vector twoDown = (Vector)decisionPointStack.peek();
+                    decisionPointStack.push(oneDown);
+
+                    // append the current decision point list to the list below it
+                    // on the stack (the list of exit points), and restore the
+                    // current decision point list to its state before the () expression
+                    for (int i = 0; i < decisionPointList.size(); i++)
+                        oneDown.addElement(decisionPointList.elementAt(i));
+                    decisionPointList = (Vector)twoDown.clone();
+                }
+
+                // a ) marks the end of a sequence of characters.  We do one of two things
+                // depending on whether the sequence repeats (i.e., whether the ) is followed
+                // by *):  If the sequence doesn't repeat, then the exit-point list is merged
+                // with the current decision point list and the decision point list from before
+                // the () is thrown away.  If the sequence does repeat, then we fish out the
+                // state we were in before the ( and copy all of its forward transitions
+                // (i.e., every transition added by the () expression) into every state in the
+                // exit-point list and the current decision point list.  The current decision
+                // point list is then merged with both the exit-point list AND the saved version
+                // of the decision point list from before the ().  Then we throw out the *.
+                if (c == ')') {
+
+                    // pull the exit point list off the stack, merge it with the current
+                    // decision point list, and make the merged version the current
+                    // decision point list
+                    Vector exitPoints = (Vector)decisionPointStack.pop();
+                    for (int i = 0; i < decisionPointList.size(); i++)
+                        exitPoints.addElement(decisionPointList.elementAt(i));
+                    decisionPointList = exitPoints;
+
+                    // if the ) isn't followed by a *, + or ?, then all we have to do is throw
+                    // away the other list on the decision point stack, and we're done
+                    if (p + 1 >= rule.length() || (
+                            rule.charAt(p + 1) != '*' &&
+                            rule.charAt(p + 1) != '+' &&
+                            rule.charAt(p + 1) != '?')
+                    ) {
+                        decisionPointStack.pop();
+                    }
+
+                    // but if the sequence is conditional or it repeats,
+                    // we have a lot more work to do...
+                    else {
+
+                        // now exitPoints and decisionPointList have to point to equivalent
+                        // vectors, but not the SAME vector
+                        exitPoints = (Vector)decisionPointList.clone();
+
+                        // pop the original decision point list off the stack
+                        Vector temp = (Vector)decisionPointStack.pop();
+
+                        // we squirreled away the row number of our entry point list
+                        // at the beginning of the original decision point list.  Fish
+                        // that state number out and retrieve the entry point list
+                        int tempStateNum = ((Integer)temp.firstElement()).intValue();
+                        short[] tempState = (short[])tempStateTable.elementAt(tempStateNum);
+
+                        // merge the original decision point list with the current
+                        // decision point list
+                        if (rule.charAt(p + 1) == '?' || rule.charAt(p + 1) == '*') {
+                            for (int i = 0; i < decisionPointList.size(); i++)
+                                temp.addElement(decisionPointList.elementAt(i));
+                            decisionPointList = temp;
+                        }
+
+                        // finally, for * and + copy every forward reference from the entry point
+                        // list into every state in the new decision point list
+                        if (rule.charAt(p + 1) == '+' || rule.charAt(p + 1) == '*') {
+                            for (int i = 0; i < tempState.length; i++) {
+                                if (tempState[i] > tempStateNum) {
+                                    updateStateTable(exitPoints,
+                                                     new Character((char)(i + 0x100)).toString(),
+                                                     tempState[i]);
+                                }
+                            }
+                        }
+
+                        // update lastState and currentState, and throw away the *, +, or ?
+                        lastState = currentState;
+                        currentState = tempStateTable.size() - 1;
+                        ++p;
+                    }
+                }
+
+                // a / marks the position where the break is to go if the character sequence
+                // matches this rule.  We update the flag word of every state on the decision
+                // point list to mark them as ending states, and take note of the fact that
+                // we've seen the slash
+                if (c == '/') {
+                    sawEarlyBreak = true;
+                    for (int i = 0; i < decisionPointList.size(); i++) {
+                        state = (short[])tempStateTable.elementAt(((Integer)decisionPointList.
+                                        elementAt(i)).intValue());
+                        state[numCategories] |= LOOKAHEAD_STATE_FLAG;
+                    }
+                }
+
+                // if we get here without executing any of the above clauses, we have a
+                // syntax error.  However, for now we just ignore the offending character
+                // and move on
+/*
+debugPrintln("====Parsed \"" + rule.substring(0, p + 1) + "\"...");
+System.out.println("      currentState = " + currentState);
+debugPrintVectorOfVectors("      decisionPointStack:", "        ", decisionPointStack);
+debugPrintVector("        ", decisionPointList);
+debugPrintVector("      loopingStates = ", loopingStates);
+debugPrintVector("      statesToBackfill = ", statesToBackfill);
+System.out.println("      sawEarlyBreak = " + sawEarlyBreak);
+debugPrintTempStateTable();
+*/
+
+                // clearLoopingStates is a signal back from updateStateTable() that we've
+                // transitioned to a state that won't loop back to the current looping
+                // state.  (In other words, we've gotten to a point where we can no longer
+                // go back into a *? we saw earlier.)  Clear out the list of looping states
+                // and backfill any states that need to be backfilled.
+                if (clearLoopingStates) {
+                    setLoopingStates(null, decisionPointList);
+                }
+
+                // advance to the next character, now that we've processed the current
+                // character
+                ++p;
+            }
+
+            // this takes care of backfilling any states that still need to be backfilled
+            setLoopingStates(null, decisionPointList);
+
+            // when we reach the end of the string, we do a postprocessing step to mark the
+            // end states.  The decision point list contains every state that can transition
+            // to the end state-- that is, every state that is the last state in a sequence
+            // that matches the rule.  All of these states are considered "mark states"
+            // or "accepting states"-- that is, states that cause the position returned from
+            // next() to be updated.  A mark state represents a possible break position.
+            // This allows us to look ahead and remember how far the rule matched
+            // before following the new branch (see next() for more information).
+            // The temporary state table has an extra "flag column" at the end where this
+            // information is stored.  We mark the end states by setting a flag in their
+            // flag column.
+            // Now if we saw the / in the rule, then everything after it is lookahead
+            // material and the break really goes where the slash is.  In this case,
+            // we mark these states as BOTH accepting states and lookahead states.  This
+            // signals that these states cause the break position to be updated to the
+            // position of the slash rather than the current break position.
+            for (int i = 0; i < decisionPointList.size(); i++) {
+                int rowNum = ((Integer)decisionPointList.elementAt(i)).intValue();
+                state = (short[])tempStateTable.elementAt(rowNum);
+                state[numCategories] |= END_STATE_FLAG;
+                if (sawEarlyBreak) {
+                    state[numCategories] |= LOOKAHEAD_STATE_FLAG;
+                }
+            }
+/*
+debugPrintln("====Parsed \"" + rule + ";");
+System.out.println();
+System.out.println("      currentState = " + currentState);
+debugPrintVectorOfVectors("      decisionPointStack:", "        ", decisionPointStack);
+debugPrintVector("        ", decisionPointList);
+debugPrintVector("      loopingStates = ", loopingStates);
+debugPrintVector("      statesToBackfill = ", statesToBackfill);
+System.out.println("      sawEarlyBreak = " + sawEarlyBreak);
+debugPrintTempStateTable();
+*/
+        }
+
+
+        /**
+         * Update entries in the state table, and merge states when necessary to keep
+         * the table deterministic.
+         * @param rows The list of rows that need updating (the decision point list)
+         * @param pendingChars A character category list, encoded in a String.  This is the
+         * list of the columns that need updating.
+         * @param newValue Update the cells specfied above to contain this value
+         */
+        private void updateStateTable(Vector rows,
+                                      String pendingChars,
+                                      short newValue) {
+            // create a dummy state that has the specified row number (newValue) in
+            // the cells that need to be updated (those specified by pendingChars)
+            // and 0 in the other cells
+            short[] newValues = new short[numCategories + 1];
+            for (int i = 0; i < pendingChars.length(); i++)
+                newValues[(int)(pendingChars.charAt(i)) - 0x100] = newValue;
+
+            // go through the list of rows to update, and update them by calling
+            // mergeStates() to merge them the the dummy state we created
+            for (int i = 0; i < rows.size(); i++) {
+                mergeStates(((Integer)rows.elementAt(i)).intValue(), newValues, rows);
+            }
+        }
+
+        /**
+         * The real work of making the state table deterministic happens here.  This function
+         * merges a state in the state table (specified by rowNum) with a state that is
+         * passed in (newValues).  The basic process is to copy the nonzero cells in newStates
+         * into the state in the state table (we'll call that oldValues).  If there's a
+         * collision (i.e., if the same cell has a nonzero value in both states, and it's
+         * not the SAME value), then we have to reconcile the collision.  We do this by
+         * creating a new state, adding it to the end of the state table, and using this
+         * function recursively to merge the original two states into a single, combined
+         * state.  This process may happen recursively (i.e., each successive level may
+         * involve collisions).  To prevent infinite recursion, we keep a log of merge
+         * operations.  Any time we're merging two states we've merged before, we can just
+         * supply the row number for the result of that merge operation rather than creating
+         * a new state just like it.
+         * @param rowNum The row number in the state table of the state to be updated
+         * @param newValues The state to merge it with.
+         * @param rowsBeingUpdated A copy of the list of rows passed to updateStateTable()
+         * (itself a copy of the decision point list from parseRule()).  Newly-created
+         * states get added to the decision point list if their "parents" were on it.
+         */
+        private void mergeStates(int rowNum,
+                                 short[] newValues,
+                                 Vector rowsBeingUpdated) {
+            short[] oldValues = (short[])(tempStateTable.elementAt(rowNum));
+/*
+System.out.print("***Merging " + rowNum + ":");
+for (int i = 0; i < oldValues.length; i++) System.out.print("\t" + oldValues[i]);
+System.out.println();
+System.out.print("    with   \t");
+for (int i = 0; i < newValues.length; i++) System.out.print("\t" + newValues[i]);
+System.out.println();
+*/
+
+            boolean isLoopingState = loopingStates.contains(new Integer(rowNum));
+
+            // for each of the cells in the rows we're reconciling, do...
+            for (int i = 0; i < oldValues.length; i++) {
+
+                // if they contain the same value, we don't have to do anything
+                if (oldValues[i] == newValues[i]) {
+                    continue;
+                }
+
+                // if oldValues is a looping state and the state the current cell points to
+                // is too, then we can just stomp over the current value of that cell (and
+                // set the clear-looping-states flag if necessary)
+                else if (isLoopingState && loopingStates.contains(new Integer(oldValues[i]))) {
+                    if (newValues[i] != 0) {
+                        if (oldValues[i] == 0) {
+                            clearLoopingStates = true;
+                        }
+                        oldValues[i] = newValues[i];
+                    }
+                }
+
+                // if the current cell in oldValues is 0, copy in the corresponding value
+                // from newValues
+                else if (oldValues[i] == 0) {
+                    oldValues[i] = newValues[i];
+                }
+
+                // the last column of each row is the flag column.  Take care to merge the
+                // flag words correctly
+                else if (i == numCategories) {
+                    oldValues[i] = (short)((newValues[i] & ALL_FLAGS) | oldValues[i]);
+                }
+
+                // if both newValues and oldValues have a nonzero value in the current
+                // cell, and it isn't the same value both places...
+                else if (oldValues[i] != 0 && newValues[i] != 0) {
+
+                    // look up this pair of cell values in the merge list.  If it's
+                    // found, update the cell in oldValues to point to the merged state
+                    int combinedRowNum = searchMergeList(oldValues[i], newValues[i]);
+                    if (combinedRowNum != 0) {
+                        oldValues[i] = (short)combinedRowNum;
+                    }
+
+                    // otherwise, we have to reconcile them...
+                    else {
+                        // copy our row numbers into variables to make things easier
+                        int oldRowNum = oldValues[i];
+                        int newRowNum = newValues[i];
+                        combinedRowNum = tempStateTable.size();
+
+                        // add this pair of row numbers to the merge list (create it first
+                        // if we haven't created the merge list yet)
+                        if (mergeList == null) {
+                            mergeList = new Vector();
+                        }
+                        mergeList.addElement(new int[] { oldRowNum, newRowNum, combinedRowNum });
+
+//System.out.println("***At " + rowNum + ", merging " + oldRowNum + " and " + newRowNum + " into " + combinedRowNum);
+
+                        // create a new row to represent the merged state, and copy the
+                        // contents of oldRow into it, then add it to the end of the
+                        // state table and update the original row (oldValues) to point
+                        // to the new, merged, state
+                        short[] newRow = new short[numCategories + 1];
+                        short[] oldRow = (short[])(tempStateTable.elementAt(oldRowNum));
+                        System.arraycopy(oldRow, 0, newRow, 0, numCategories + 1);
+                        tempStateTable.addElement(newRow);
+                        oldValues[i] = (short)combinedRowNum;
+
+
+//System.out.println("lastOldRowNum = " + lastOldRowNum);
+//System.out.println("lastCombinedRowNum = " + lastCombinedRowNum);
+//System.out.println("decisionPointList.contains(lastOldRowNum) = " + decisionPointList.contains(new Integer(lastOldRowNum)));
+//System.out.println("decisionPointList.contains(lastCombinedRowNum) = " + decisionPointList.contains(new Integer(lastCombinedRowNum)));
+
+                        // if the decision point list contains either of the parent rows,
+                        // update it to include the new row as well
+                        if ((decisionPointList.contains(new Integer(oldRowNum))
+                                || decisionPointList.contains(new Integer(newRowNum)))
+                            && !decisionPointList.contains(new Integer(combinedRowNum))
+                        ) {
+                            decisionPointList.addElement(new Integer(combinedRowNum));
+                        }
+
+                        // do the same thing with the list of rows being updated
+                        if ((rowsBeingUpdated.contains(new Integer(oldRowNum))
+                                || rowsBeingUpdated.contains(new Integer(newRowNum)))
+                            && !rowsBeingUpdated.contains(new Integer(combinedRowNum))
+                        ) {
+                            decisionPointList.addElement(new Integer(combinedRowNum));
+                        }
+                        // now (groan) do the same thing for all the entries on the
+                        // decision point stack
+                        for (int k = 0; k < decisionPointStack.size(); k++) {
+                            Vector dpl = (Vector)decisionPointStack.elementAt(k);
+                            if ((dpl.contains(new Integer(oldRowNum))
+                                    || dpl.contains(new Integer(newRowNum)))
+                                && !dpl.contains(new Integer(combinedRowNum))
+                            ) {
+                                dpl.addElement(new Integer(combinedRowNum));
+                            }
+                        }
+
+                        // FINALLY (puff puff puff), call mergeStates() recursively to copy
+                        // the row referred to by newValues into the new row and resolve any
+                        // conflicts that come up at that level
+                        mergeStates(combinedRowNum, (short[])(tempStateTable.elementAt(
+                                        newValues[i])), rowsBeingUpdated);
+                    }
+                }
+            }
+            return;
+        }
+
+        /**
+         * The merge list is a list of pairs of rows that have been merged somewhere in
+         * the process of building this state table, along with the row number of the
+         * row containing the merged state.  This function looks up a pair of row numbers
+         * and returns the row number of the row they combine into.  (It returns 0 if
+         * this pair of rows isn't in the merge list.)
+         */
+        private int searchMergeList(int a, int b) {
+            // if there is no merge list, there obviously isn't anything in it
+            if (mergeList == null) {
+                return 0;
+            }
+
+            // otherwise, for each element in the merge list...
+            else {
+                int[] entry;
+                for (int i = 0; i < mergeList.size(); i++) {
+                    entry = (int[])(mergeList.elementAt(i));
+
+                    // we have a hit if the two row numbers match the two row numbers
+                    // in the beginning of the entry (the two that combine), in either
+                    // order
+                    if ((entry[0] == a && entry[1] == b) || (entry[0] == b && entry[1] == a)) {
+                        return entry[2];
+                    }
+
+                    // we also have a hit if one of the two row numbers matches the marged
+                    // row number and the other one matches one of the original row numbers
+                    if ((entry[2] == a && (entry[0] == b || entry[1] == b))) {
+                        return entry[2];
+                    }
+                    if ((entry[2] == b && (entry[0] == a || entry[1] == a))) {
+                        return entry[2];
+                    }
+                }
+                return 0;
+            }
+        }
+
+        /**
+         * This function is used to update the list of current loooping states (i.e.,
+         * states that are controlled by a *? construct).  It backfills values from
+         * the looping states into unpopulated cells of the states that are currently
+         * marked for backfilling, and then updates the list of looping states to be
+         * the new list
+         * @param newLoopingStates The list of new looping states
+         * @param endStates The list of states to treat as end states (states that
+         * can exit the loop).
+         */
+        private void setLoopingStates(Vector newLoopingStates, Vector endStates) {
+
+            // if the current list of looping states isn't empty, we have to backfill
+            // values from the looping states into the states that are waiting to be
+            // backfilled
+            if (!loopingStates.isEmpty()) {
+                int loopingState = ((Integer)loopingStates.lastElement()).intValue();
+                int rowNum;
+
+                // don't backfill into an end state OR any state reachable from an end state
+                // (since the search for reachable states is recursive, it's split out into
+                // a separate function, eliminateBackfillStates(), below)
+                for (int i = 0; i < endStates.size(); i++) {
+                    eliminateBackfillStates(((Integer)endStates.elementAt(i)).intValue());
+                }
+
+                // we DON'T actually backfill the states that need to be backfilled here.
+                // Instead, we MARK them for backfilling.  The reason for this is that if
+                // there are multiple rules in the state-table description, the looping
+                // states may have some of their values changed by a succeeding rule, and
+                // this wouldn't be reflected in the backfilled states.  We mark a state
+                // for backfilling by putting the row number of the state to copy from
+                // into the flag cell at the end of the row
+                for (int i = 0; i < statesToBackfill.size(); i++) {
+                    rowNum = ((Integer)statesToBackfill.elementAt(i)).intValue();
+                    short[] state = (short[])tempStateTable.elementAt(rowNum);
+                    state[numCategories] =
+                        (short)((state[numCategories] & ALL_FLAGS) | loopingState);
+                }
+                statesToBackfill.removeAllElements();
+                loopingStates.removeAllElements();
+            }
+
+            if (newLoopingStates != null) {
+                loopingStates = (Vector)newLoopingStates.clone();
+            }
+        }
+
+        /**
+         * This removes "ending states" and states reachable from them from the
+         * list of states to backfill.
+         * @param The row number of the state to remove from the backfill list
+         */
+        private void eliminateBackfillStates(int baseState) {
+
+            // don't do anything unless this state is actually in the backfill list...
+            if (statesToBackfill.contains(new Integer(baseState))) {
+
+                // if it is, take it out
+                statesToBackfill.removeElement(new Integer(baseState));
+
+                // then go through and recursively call this function for every
+                // state that the base state points to
+                short[] state = (short[])tempStateTable.elementAt(baseState);
+                for (int i = 0; i < numCategories; i++) {
+                    if (state[i] != 0) {
+                        eliminateBackfillStates(state[i]);
+                    }
+                }
+            }
+        }
+
+        /**
+         * This function completes the backfilling process by actually doing the
+         * backfilling on the states that are marked for it
+         */
+        private void backfillLoopingStates() {
+            short[] state;
+            short[] loopingState = null;
+            int loopingStateRowNum = 0;
+            int fromState;
+
+            // for each state in the state table...
+            for (int i = 0; i < tempStateTable.size(); i++) {
+                state = (short[])tempStateTable.elementAt(i);
+
+                // check the state's flag word to see if it's marked for backfilling
+                // (it's marked for backfilling if any bits other than the two high-order
+                // bits are set-- if they are, then the flag word, minus the two high bits,
+                // is the row number to copy from)
+                fromState = state[numCategories] & ~ALL_FLAGS;
+                if (fromState > 0) {
+
+                    // load up the state to copy from (if we haven't already)
+                    if (fromState != loopingStateRowNum) {
+                        loopingStateRowNum = fromState;
+                        loopingState = (short[])tempStateTable.elementAt(loopingStateRowNum);
+                    }
+
+                    // clear out the backfill part of the flag word
+                    state[numCategories] &= ALL_FLAGS;
+
+                    // then fill all zero cells in the current state with values
+                    // from the corresponding cells of the fromState
+                    for (int j = 0; j < state.length; j++) {
+                        if (state[j] == 0) {
+                            state[j] = loopingState[j];
+                        }
+                        else if (state[j] == DONT_LOOP_FLAG) {
+                            state[j] = 0;
+                        }
+                    }
+                }
+            }
+        }
+
+        /**
+         * This function completes the state-table-building process by doing several
+         * postprocessing steps and copying everything into its final resting place
+         * in the iterator itself
+         * @param forward True if we're working on the forward state table
+         */
+        private void finishBuildingStateTable(boolean forward) {
+//debugPrintTempStateTable();
+            // start by backfilling the looping states
+            backfillLoopingStates();
+//debugPrintTempStateTable();
+
+            int[] rowNumMap = new int[tempStateTable.size()];
+            Stack rowsToFollow = new Stack();
+            rowsToFollow.push(new Integer(1));
+            rowNumMap[1] = 1;
+
+            // determine which states are no longer reachable from the start state
+            // (the reachable states will have their row numbers in the row number
+            // map, and the nonreachable states will have zero in the row number map)
+            while (rowsToFollow.size() != 0) {
+                int rowNum = ((Integer)rowsToFollow.pop()).intValue();
+                short[] row = (short[])(tempStateTable.elementAt(rowNum));
+
+                for (int i = 0; i < numCategories; i++) {
+                    if (row[i] != 0) {
+                        if (rowNumMap[row[i]] == 0) {
+                            rowNumMap[row[i]] = row[i];
+                            rowsToFollow.push(new Integer(row[i]));
+                        }
+                    }
+                }
+            }
+/*
+System.out.println("The following rows are not reachable:");
+for (int i = 1; i < rowNumMap.length; i++)
+if (rowNumMap[i] == 0) System.out.print("\t" + i);
+System.out.println();
+*/
+
+            // variable not used boolean madeChange;
+            int newRowNum;
+
+            // algorithm for minimizing the number of states in the table adapted from
+            // Aho & Ullman, "Principles of Compiler Design"
+            // The basic idea here is to organize the states into classes.  When we're done,
+            // all states in the same class can be considered identical and all but one eliminated.
+
+            // initially assign states to classes based on the number of populated cells they
+            // contain (the class number is the number of populated cells)
+            int[] stateClasses = new int[tempStateTable.size()];
+            int nextClass = numCategories + 1;
+            short[] state1, state2;
+            for (int i = 1; i < stateClasses.length; i++) {
+                if (rowNumMap[i] == 0) {
+                    continue;
+                }
+                state1 = (short[])tempStateTable.elementAt(i);
+                for (int j = 0; j < numCategories; j++) {
+                    if (state1[j] != 0) {
+                        ++stateClasses[i];
+                    }
+                }
+                if (stateClasses[i] == 0) {
+                    stateClasses[i] = nextClass;
+                }
+            }
+            ++nextClass;
+
+            // then, for each class, elect the first member of that class as that class's
+            // "representative".  For each member of the class, compare it to the "representative."
+            // If there's a column position where the state being tested transitions to a
+            // state in a DIFFERENT class from the class where the "representative" transitions,
+            // then move the state into a new class.  Repeat this process until no new classes
+            // are created.
+            int currentClass;
+            int lastClass;
+            boolean split;
+
+            do {
+//System.out.println("Making a pass...");
+                currentClass = 1;
+                lastClass = nextClass;
+                while (currentClass < nextClass) {
+//System.out.print("States in class #" + currentClass +":");
+                    split = false;
+                    state1 = state2 = null;
+                    for (int i = 0; i < stateClasses.length; i++) {
+                        if (stateClasses[i] == currentClass) {
+//System.out.print("\t" + i);
+                            if (state1 == null) {
+                                state1 = (short[])tempStateTable.elementAt(i);
+                            }
+                            else {
+                                state2 = (short[])tempStateTable.elementAt(i);
+                                for (int j = 0; j < state2.length; j++)
+                                    if ((j == numCategories && state1[j] != state2[j] && forward)
+                                            || (j != numCategories && stateClasses[state1[j]]
+                                            != stateClasses[state2[j]])) {
+                                        stateClasses[i] = nextClass;
+                                        split = true;
+                                        break;
+                                    }
+                            }
+                        }
+                    }
+                    if (split) {
+                        ++nextClass;
+                    }
+                    ++currentClass;
+//System.out.println();
+                }
+            } while (lastClass != nextClass);
+
+            // at this point, all of the states in a class except the first one (the
+            //"representative") can be eliminated, so update the row-number map accordingly
+            int[] representatives = new int[nextClass];
+            for (int i = 1; i < stateClasses.length; i++)
+                if (representatives[stateClasses[i]] == 0) {
+                    representatives[stateClasses[i]] = i;
+                }
+                else {
+                    rowNumMap[i] = representatives[stateClasses[i]];
+                }
+//System.out.println("Renumbering...");
+
+            // renumber all remaining rows...
+            // first drop all that are either unreferenced or not a class representative
+            for (int i = 1; i < rowNumMap.length; i++) {
+                if (rowNumMap[i] != i) {
+                    tempStateTable.setElementAt(null, i);
+                }
+            }
+
+            // then calculate everybody's new row number and update the row
+            // number map appropriately (the first pass updates the row numbers
+            // of all the class representatives [the rows we're keeping], and the
+            // second pass updates the cross references for all the rows that
+            // are being deleted)
+            newRowNum = 1;
+            for (int i = 1; i < rowNumMap.length; i++) {
+                if (tempStateTable.elementAt(i) != null) {
+                    rowNumMap[i] = newRowNum++;
+                }
+            }
+            for (int i = 1; i < rowNumMap.length; i++) {
+                if (tempStateTable.elementAt(i) == null) {
+                    rowNumMap[i] = rowNumMap[rowNumMap[i]];
+                }
+            }
+//for (int i = 1; i < rowNumMap.length; i++) rowNumMap[i] = i; int newRowNum = rowNumMap.length;
+
+            // allocate the permanent state table, and copy the remaining rows into it
+            // (adjusting all the cell values, of course)
+
+            // this section does that for the forward state table
+            if (forward) {
+                endStates = new boolean[newRowNum];
+                lookaheadStates = new boolean[newRowNum];
+                stateTable = new short[newRowNum * numCategories];
+                int p = 0;
+                int p2 = 0;
+                for (int i = 0; i < tempStateTable.size(); i++) {
+                    short[] row = (short[])(tempStateTable.elementAt(i));
+                    if (row == null) {
+                        continue;
+                    }
+                    for (int j = 0; j < numCategories; j++) {
+                        stateTable[p] = (short)(rowNumMap[row[j]]);
+                        ++p;
+                    }
+                    endStates[p2] = ((row[numCategories] & END_STATE_FLAG) != 0);
+                    lookaheadStates[p2] = ((row[numCategories] & LOOKAHEAD_STATE_FLAG) != 0);
+                    ++p2;
+                }
+            }
+
+            // and this section does it for the backward state table
+            else {
+                backwardsStateTable = new short[newRowNum * numCategories];
+                int p = 0;
+                for (int i = 0; i < tempStateTable.size(); i++) {
+                    short[] row = (short[])(tempStateTable.elementAt(i));
+                    if (row == null) {
+                        continue;
+                    }
+                    for (int j = 0; j < numCategories; j++) {
+                        backwardsStateTable[p] = (short)(rowNumMap[row[j]]);
+                        ++p;
+                    }
+                }
+            }
+        }
+
+        /**
+         * This function builds the backward state table from the forward state
+         * table and any additional rules (identified by the ! on the front)
+         * supplied in the description
+         */
+        private void buildBackwardsStateTable(Vector tempRuleList) {
+
+            // create the temporary state table and seed it with two rows (row 0
+            // isn't used for anything, and we have to create row 1 (the initial
+            // state) before we can do anything else
+            tempStateTable = new Vector();
+            tempStateTable.addElement(new short[numCategories + 1]);
+            tempStateTable.addElement(new short[numCategories + 1]);
+
+            // although the backwards state table is built automatically from the forward
+            // state table, there are some situations (the default sentence-break rules,
+            // for example) where this doesn't yield enough stop states, causing a dramatic
+            // drop in performance.  To help with these cases, the user may supply
+            // supplemental rules that are added to the backward state table.  These have
+            // the same syntax as the normal break rules, but begin with '!' to distinguish
+            // them from normal break rules
+            for (int i = 0; i < tempRuleList.size(); i++) {
+                String rule = (String)tempRuleList.elementAt(i);
+                if (rule.charAt(0) == '!') {
+                    parseRule(rule.substring(1), false);
+                }
+            }
+            backfillLoopingStates();
+
+            // Backwards iteration is qualitatively different from forwards iteration.
+            // This is because backwards iteration has to be made to operate from no context
+            // at all-- the user should be able to ask BreakIterator for the break position
+            // immediately on either side of some arbitrary offset in the text.  The
+            // forward iteration table doesn't let us do that-- it assumes complete
+            // information on the context, which means starting from the beginning of the
+            // document.
+            // The way we do backward and random-access iteration is to back up from the
+            // current (or user-specified) position until we see something we're sure is
+            // a break position (it may not be the last break position immediately
+            // preceding our starting point, however).  Then we roll forward from there to
+            // locate the actual break position we're after.
+            // This means that the backwards state table doesn't have to identify every
+            // break position, allowing the building algorithm to be much simpler.  Here,
+            // we use a "pairs" approach, scanning the forward-iteration state table for
+            // pairs of character categories we ALWAYS break between, and building a state
+            // table from that information.  No context is required-- all this state table
+            // looks at is a pair of adjacent characters.
+
+            // It's possible that the user has supplied supplementary rules (see above).
+            // This has to be done first to keep parseRule() and friends from becoming
+            // EVEN MORE complicated.  The automatically-generated states are appended
+            // onto the end of the state table, and then the two sets of rules are
+            // stitched together at the end.  Take note of the row number of the
+            // first row of the auromatically-generated part.
+            int backTableOffset = tempStateTable.size();
+            if (backTableOffset > 2) {
+                ++backTableOffset;
+            }
+
+            // the automatically-generated part of the table models a two-dimensional
+            // array where the two dimensions represent the two characters we're currently
+            // looking at.  To model this as a state table, we actually need one additional
+            // row to represent the initial state.  It gets populated with the row numbers
+            // of the other rows (in order).
+            for (int i = 0; i < numCategories + 1; i++)
+                tempStateTable.addElement(new short[numCategories + 1]);
+
+            short[] state = (short[])tempStateTable.elementAt(backTableOffset - 1);
+            for (int i = 0; i < numCategories; i++)
+                state[i] = (short)(i + backTableOffset);
+
+            // scavenge the forward state table for pairs of character categories
+            // that always have a break between them.  The algorithm is as follows:
+            // Look down each column in the state table.  For each nonzero cell in
+            // that column, look up the row it points to.  For each nonzero cell in
+            // that row, populate a cell in the backwards state table: the row number
+            // of that cell is the number of the column we were scanning (plus the
+            // offset that locates this sub-table), and the column number of that cell
+            // is the column number of the nonzero cell we just found.  This cell is
+            // populated with its own column number (adjusted according to the actual
+            // location of the sub-table).  This process will produce a state table
+            // whose behavior is the same as looking up successive pairs of characters
+            // in an array of Booleans to determine whether there is a break.
+            int numRows = stateTable.length / numCategories;
+            for (int column = 0; column < numCategories; column++) {
+                for (int row = 0; row < numRows; row++) {
+                    int nextRow = lookupState(row, column);
+                    if (nextRow != 0) {
+                        for (int nextColumn = 0; nextColumn < numCategories; nextColumn++) {
+                            int cellValue = lookupState(nextRow, nextColumn);
+                            if (cellValue != 0) {
+                                state = (short[])tempStateTable.elementAt(nextColumn +
+                                                backTableOffset);
+                                state[column] = (short)(column + backTableOffset);
+                            }
+                        }
+                    }
+                }
+            }
+
+//debugPrintTempStateTable();
+            // if the user specified some backward-iteration rules with the ! token,
+            // we have to merge the resulting state table with the auto-generated one
+            // above.  First copy the populated cells from row 1 over the populated
+            // cells in the auto-generated table.  Then copy values from row 1 of the
+            // auto-generated table into all of the the unpopulated cells of the
+            // rule-based table.
+            if (backTableOffset > 1) {
+
+                // for every row in the auto-generated sub-table, if a cell is
+                // populated that is also populated in row 1 of the rule-based
+                // sub-table, copy the value from row 1 over the value in the
+                // auto-generated sub-table
+                state = (short[])tempStateTable.elementAt(1);
+                for (int i = backTableOffset - 1; i < tempStateTable.size(); i++) {
+                    short[] state2 = (short[])tempStateTable.elementAt(i);
+                    for (int j = 0; j < numCategories; j++) {
+                        if (state[j] != 0 && state2[j] != 0) {
+                            state2[j] = state[j];
+                        }
+                    }
+                }
+
+                // now, for every row in the rule-based sub-table that is not
+                // an end state, fill in all unpopulated cells with the values
+                // of the corresponding cells in the first row of the auto-
+                // generated sub-table.
+                state = (short[])tempStateTable.elementAt(backTableOffset - 1);
+                for (int i = 1; i < backTableOffset - 1; i++) {
+                    short[] state2 = (short[])tempStateTable.elementAt(i);
+                    if ((state2[numCategories] & END_STATE_FLAG) == 0) {
+                        for (int j = 0; j < numCategories; j++) {
+                            if (state2[j] == 0) {
+                                state2[j] = state[j];
+                            }
+                        }
+                    }
+                }
+            }
+
+//debugPrintTempStateTable();
+
+            // finally, clean everything up and copy it into the actual BreakIterator
+            // by calling finishBuildingStateTable()
+            finishBuildingStateTable(false);
+/*
+System.out.print("C:\t");
+for (int i = 0; i < numCategories; i++)
+System.out.print(Integer.toString(i) + "\t");
+System.out.println(); System.out.print("=================================================");
+for (int i = 0; i < backwardsStateTable.length; i++) {
+if (i % numCategories == 0) {
+System.out.println();
+System.out.print(Integer.toString(i / numCategories) + ":\t");
+}
+if (backwardsStateTable[i] == 0) System.out.print(".\t"); else System.out.print(Integer.toString(backwardsStateTable[i]) + "\t");
+}
+System.out.println();
+*/
+        }
+
+        /**
+         * Throws an IllegalArgumentException representing a syntax error in the rule
+         * description.  The exception's message contains some debugging information.
+         * @param message A message describing the problem
+         * @param position The position in the description where the problem was
+         * discovered
+         * @param context The string containing the error
+         */
+        protected void error(String message, int position, String context) {
+            throw new IllegalArgumentException("Parse error: " + message + "\n" +
+                    Utility.escape(context.substring(0, position)) + "\n\n" +
+                    Utility.escape(context.substring(position)));
+        }
+
+	///CLOVER:OFF
+        protected void debugPrintVector(String label, Vector v) {
+            System.out.print(label);
+            for (int i = 0; i < v.size(); i++)
+                System.out.print(v.elementAt(i).toString() + "\t");
+            System.out.println();
+        }
+
+        protected void debugPrintVectorOfVectors(String label1, String label2, Vector v) {
+            System.out.println(label1);
+            for (int i = 0; i < v.size(); i++)
+                debugPrintVector(label2, (Vector)v.elementAt(i));
+        }
+
+        protected void debugPrintTempStateTable() {
+            System.out.println("      tempStateTable:");
+            System.out.print("        C:\t");
+            for (int i = 0; i <= numCategories; i++)
+                System.out.print(Integer.toString(i) + "\t");
+            System.out.println();
+            for (int i = 1; i < tempStateTable.size(); i++) {
+                short[] row = (short[])(tempStateTable.elementAt(i));
+                System.out.print("        " + i + ":\t");
+                for (int j = 0; j < row.length; j++) {
+                    if (row[j] == 0) {
+                        System.out.print(".\t");
+                    }
+                    else {
+                        System.out.print(Integer.toString(row[j]) + "\t");
+                    }
+                }
+                System.out.println();
+            }
+        }
+
+    }
+    ///CLOVER:ON
+
+    /*
+     * This class exists to work around a bug in HotJava's implementation
+     * of CharacterIterator, which incorrectly handles setIndex(endIndex).
+     * This iterator relies only on base.setIndex(n) where n is less than
+     * endIndex.
+     *
+     * One caveat:  if the base iterator's begin and end indices change
+     * the change will not be reflected by this wrapper.  Does that matter?
+     */
+    ///CLOVER:OFF
+    // Only used for HotJava, so clover won't encounter it
+    private static final class SafeCharIterator implements CharacterIterator,
+                                                           Cloneable {
+
+        private CharacterIterator base;
+        private int rangeStart;
+        private int rangeLimit;
+        private int currentIndex;
+
+        SafeCharIterator(CharacterIterator base) {
+            this.base = base;
+            this.rangeStart = base.getBeginIndex();
+            this.rangeLimit = base.getEndIndex();
+            this.currentIndex = base.getIndex();
+        }
+
+        public char first() {
+            return setIndex(rangeStart);
+        }
+
+        public char last() {
+            return setIndex(rangeLimit - 1);
+        }
+
+        public char current() {
+            if (currentIndex < rangeStart || currentIndex >= rangeLimit) {
+                return DONE;
+            }
+            else {
+                return base.setIndex(currentIndex);
+            }
+        }
+
+        public char next() {
+
+            currentIndex++;
+            if (currentIndex >= rangeLimit) {
+                currentIndex = rangeLimit;
+                return DONE;
+            }
+            else {
+                return base.setIndex(currentIndex);
+            }
+        }
+
+        public char previous() {
+
+            currentIndex--;
+            if (currentIndex < rangeStart) {
+                currentIndex = rangeStart;
+                return DONE;
+            }
+            else {
+                return base.setIndex(currentIndex);
+            }
+        }
+
+        public char setIndex(int i) {
+
+            if (i < rangeStart || i > rangeLimit) {
+                throw new IllegalArgumentException("Invalid position");
+            }
+            currentIndex = i;
+            return current();
+        }
+
+        public int getBeginIndex() {
+            return rangeStart;
+        }
+
+        public int getEndIndex() {
+            return rangeLimit;
+        }
+
+        public int getIndex() {
+            return currentIndex;
+        }
+
+        public Object clone() {
+
+            SafeCharIterator copy = null;
+            try {
+                copy = (SafeCharIterator) super.clone();
+            }
+            catch(CloneNotSupportedException e) {
+                throw new Error("Clone not supported: " + e);
+            }
+
+            CharacterIterator copyOfBase = (CharacterIterator) base.clone();
+            copy.base = copyOfBase;
+            return copy;
+        }
+    }
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+    public static void debugPrintln(String s) {
+        final String zeros = "0000";
+        String temp;
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c < '\u007f') {
+                out.append(c);
+            }
+            else {
+                out.append("\\u");
+                temp = Integer.toHexString((int)c);
+                out.append(zeros.substring(0, 4 - temp.length()));
+                out.append(temp);
+            }
+        }
+        System.out.println(out);
+    }
+    ///CLOVER:ON
+}
+
diff --git a/src/com/ibm/icu/text/RuleBasedCollator.java b/src/com/ibm/icu/text/RuleBasedCollator.java
new file mode 100755
index 0000000..3aceb75
--- /dev/null
+++ b/src/com/ibm/icu/text/RuleBasedCollator.java
@@ -0,0 +1,3396 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/RuleBasedCollator.java,v $ 
+* $Date: 2002/08/08 23:37:53 $ 
+* $Revision: 1.17 $
+*
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.io.InputStream;
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import com.ibm.icu.impl.IntTrie;
+import com.ibm.icu.impl.Trie;
+import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.BOCU;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * <p>RuleBasedCollator is a concrete subclass of Collator. It allows
+ * customization of the Collator via user-specified rule sets.
+ * RuleBasedCollator is designed to be fully compliant to the <a
+ * href="http://www.unicode.org/unicode/reports/tr10/"> Unicode
+ * Collation Algorithm (UCA)</a> and conforms to ISO 14651.</p>
+ *
+ * <p>Users are strongly encouraged to read <a
+ * href="http://oss.software.ibm.com/icu/userguide/Collate_Intro.html">
+ * the users guide</a> for more information about the collation
+ * service before using this class.</p>
+ *
+ * <p>Create a RuleBasedCollator from a locale by calling the
+ * getInstance(Locale) factory method in the base class Collator.
+ * Collator.getInstance(Locale) creates a RuleBasedCollator object
+ * based on the collation rules defined by the argument locale.  If a
+ * customized collation ordering ar attributes is required, use the
+ * RuleBasedCollator(String) constructor with the appropriate
+ * rules. The customized RuleBasedCollator will base its ordering on
+ * UCA, while re-adjusting the attributes and orders of the characters
+ * in the specified rule accordingly.</p>
+ *
+ * <p>RuleBasedCollator provides correct collation orders for most
+ * locales supported in ICU. If specific data for a locale is not
+ * available, the orders eventually falls back to the <a
+ * href="http://www.unicode.org/unicode/reports/tr10/">UCA collation
+ * order </a>.</p>
+ *
+ * <p>For information about the collation rule syntax and details
+ * about customization, please refer to the
+ * <a href="http://oss.software.ibm.com/icu/userguide/Collate_Customization.html">
+ * Collation customization</a> section of the user's guide.</p>
+ *
+ * <p><strong>Note</strong> that there are some differences between
+ * the Collation rule syntax used in Java and ICU4J:
+ *
+ * <ul>
+ * <li>According to the JDK documentation:
+ * <i>
+ * <p>
+ * Modifier '!' : Turns on Thai/Lao vowel-consonant swapping. If this rule 
+ * is in force when a Thai vowel of the range &#92;U0E40-&#92;U0E44 precedes a 
+ * Thai consonant of the range &#92;U0E01-&#92;U0E2E OR a Lao vowel of the 
+ * range &#92;U0EC0-&#92;U0EC4 precedes a Lao consonant of the range 
+ * &#92;U0E81-&#92;U0EAE then the 
+ * vowel is placed after the consonant for collation purposes. 
+ * </p>
+ * <p>
+ * If a rule is without the modifier '!', the Thai/Lao vowel-consonant 
+ * swapping is not turned on.
+ * </p>
+ * </i>
+ * <p>
+ * ICU4J's RuleBasedCollator does not support turning off the Thai/Lao 
+ * vowel-consonant swapping, since the UCA clearly states that it has to be 
+ * supported to ensure a correct sorting order. If a '!' is encountered, it is
+ * ignored.
+ * </p>
+ * <li>As mentioned in the documentation of the base class Collator, 
+ *     compatibility decomposition mode is not supported.
+ * </ul>
+ * <p>
+ * <strong>Examples</strong>
+ * </p>
+ * <p>
+ * Creating Customized RuleBasedCollators:
+ * <blockquote>
+ * <pre>
+ * String simple = "&amp; a &lt; b &lt; c &lt; d";
+ * RuleBasedCollator simpleCollator = new RuleBasedCollator(simple);
+ * 
+ * String norwegian = "&amp; a , A &lt; b , B &lt; c , C &lt; d , D &lt; e , E "
+ *                    + "&lt; f , F &lt; g , G &lt; h , H &lt; i , I &lt; j , "
+ *                    + "J &lt; k , K &lt; l , L &lt; m , M &lt; n , N &lt; "
+ *                    + "o , O &lt; p , P &lt; q , Q &lt r , R &lt s , S &lt; "
+ *                    + "t , T &lt; u , U &lt; v , V &lt; w , W &lt; x , X "
+ *                    + "&lt; y , Y &lt; z , Z &lt; &#92;u00E5 = a&#92;u030A "
+ *                    + ", &#92;u00C5 = A&#92;u030A ; aa , AA &lt; &#92;u00E6 "
+ *                    + ", &#92;u00C6 &lt; &#92;u00F8 , &#92;u00D8";
+ * RuleBasedCollator norwegianCollator = new RuleBasedCollator(norwegian);
+ * </pre>
+ * </blockquote>
+ *
+ * Concatenating rules to combine <code>Collator</code>s:
+ * <blockquote>
+ * <pre>
+ * // Create an en_US Collator object
+ * RuleBasedCollator en_USCollator = (RuleBasedCollator)
+ *     Collator.getInstance(new Locale("en", "US", ""));
+ * // Create a da_DK Collator object
+ * RuleBasedCollator da_DKCollator = (RuleBasedCollator)
+ *     Collator.getInstance(new Locale("da", "DK", ""));
+ * // Combine the two
+ * // First, get the collation rules from en_USCollator
+ * String en_USRules = en_USCollator.getRules();
+ * // Second, get the collation rules from da_DKCollator
+ * String da_DKRules = da_DKCollator.getRules();
+ * RuleBasedCollator newCollator =
+ *                             new RuleBasedCollator(en_USRules + da_DKRules);
+ * // newCollator has the combined rules
+ * </pre>
+ * </blockquote>
+ *
+ * Making changes to an existing RuleBasedCollator to create a new 
+ * <code>Collator</code> object, by appending changes to the existing rule:
+ * <blockquote>
+ * <pre>
+ * // Create a new Collator object with additional rules
+ * String addRules = "&amp; C &lt; ch, cH, Ch, CH";
+ * RuleBasedCollator myCollator =
+ *     new RuleBasedCollator(en_USCollator + addRules);
+ * // myCollator contains the new rules
+ * </pre>
+ * </blockquote>
+ *
+ * How to change the order of non-spacing accents:
+ * <blockquote>
+ * <pre>
+ * // old rule with main accents
+ * String oldRules = "= &#92;u0301 ; &#92;u0300 ; &#92;u0302 ; &#92;u0308 "    
+ *                 + "; &#92;u0327 ; &#92;u0303 ; &#92;u0304 ; &#92;u0305 "
+ *                 + "; &#92;u0306 ; &#92;u0307 ; &#92;u0309 ; &#92;u030A " 
+ *                 + "; &#92;u030B ; &#92;u030C ; &#92;u030D ; &#92;u030E "
+ *                 + "; &#92;u030F ; &#92;u0310 ; &#92;u0311 ; &#92;u0312 "
+ *                 + "&lt; a , A ; ae, AE ; &#92;u00e6 , &#92;u00c6 "
+ *                 + "&lt; b , B &lt; c, C &lt; e, E &amp; C &lt; d , D";
+ * // change the order of accent characters
+ * String addOn = "&amp; &#92;u0300 ; &#92;u0308 ; &#92;u0302";
+ * RuleBasedCollator myCollator = new RuleBasedCollator(oldRules + addOn);
+ * </pre>
+ * </blockquote>
+ *
+ * Putting in a new primary ordering before the default setting, 
+ * e.g. sort English characters before or after Japanese characters in the Japanese 
+ * <code>Collator</code>:
+ * <blockquote>
+ * <pre>
+ * // get en_US Collator rules
+ * RuleBasedCollator en_USCollator 
+ *                        = (RuleBasedCollator)Collator.getInstance(Locale.US);
+ * // add a few Japanese characters to sort before English characters
+ * // suppose the last character before the first base letter 'a' in
+ * // the English collation rule is &#92;u2212
+ * String jaString = "& &#92;u2212 &lt &#92;u3041, &#92;u3042 &lt &#92;u3043, "
+ *                   + "&#92;u3044";
+ * RuleBasedCollator myJapaneseCollator 
+ *              = new RuleBasedCollator(en_USCollator.getRules() + jaString);
+ * </pre>
+ * </blockquote>
+ * </p>
+ * @author Syn Wee Quek
+ * @since release 2.2, April 18 2002
+ * @draft 2.2
+ */
+public final class RuleBasedCollator extends Collator 
+{   
+	// public data members ---------------------------------------------------
+	
+	// public constructors ---------------------------------------------------
+	
+	/**
+     * <p>
+     * Constructor that takes the argument rules for 
+     * customization. The collator will be based on UCA, 
+     * with the attributes and re-ordering of the characters specified in the 
+     * argument rules.
+     * </p>
+     * <p>See the user guide's section on 
+     * <a href=http://oss.software.ibm.com/icu/userguide/Collate_Customization.html>
+     * Collation Customization</a> for details on the rule syntax.
+     * </p>
+     * @param rules the collation rules to build the collation table from.
+     * @exception ParseException and IOException thrown. ParseException thrown 
+     *            when argument rules have an invalid syntax. IOException 
+     *            thrown when an error occured while reading internal data.
+     * @draft 2.2
+     */
+    public RuleBasedCollator(String rules) throws Exception
+    {
+        if (rules == null || rules.length() == 0) {
+            throw new IllegalArgumentException(
+                                            "Collation rules can not be null");
+        }
+    	setWithUCAData();
+        CollationParsedRuleBuilder builder 
+                                       = new CollationParsedRuleBuilder(rules);
+	    
+		builder.setRules(this);
+        m_rules_ = rules;
+        init();
+        initUtility();
+    }
+    
+	// public methods --------------------------------------------------------
+    
+    /**
+     * Clones the RuleBasedCollator
+     * @return a new instance of this RuleBasedCollator object
+     */
+    public Object clone() throws CloneNotSupportedException
+    {
+        RuleBasedCollator result = (RuleBasedCollator)super.clone();
+        // since all collation data in the RuleBasedCollator do not change
+        // we can safely assign the result.fields to this collator
+        result.initUtility(); // let the new clone have their own util
+                                    // iterators
+        return result;
+    }
+    
+    /**
+     * Return a CollationElementIterator for the given String.
+     * @see CollationElementIterator
+     * @draft 2.2
+     */
+    public CollationElementIterator getCollationElementIterator(String source) 
+    {
+        return new CollationElementIterator(source, this);
+    }
+
+    /**
+     * Return a CollationElementIterator for the given CharacterIterator.
+     * The source iterator's integrity will be preserved since a new copy 
+     * will be created for use.
+     * @see CollationElementIterator
+     * @draft 2.2
+     */
+    public CollationElementIterator getCollationElementIterator(
+                                                CharacterIterator source) 
+    {	
+     	CharacterIterator newsource = (CharacterIterator)source.clone();   
+        return new CollationElementIterator(newsource, this);
+    }
+    
+    // public setters --------------------------------------------------------
+    
+    /**
+	 * Sets the Hiragana Quaternary mode to be on or off.
+     * When the Hiragana Quaternary mode is turned on, the collator 
+	 * positions Hiragana characters before all non-ignorable characters in 
+	 * QUATERNARY strength. This is to produce a correct JIS collation order,
+	 * distinguishing between Katakana  and Hiragana characters. 
+	 * @param flag true if Hiragana Quaternary mode is to be on, false 
+	 *        otherwise
+	 * @see #setHiraganaQuaternaryDefault
+	 * @see #isHiraganaQuaternary
+	 * @draft 2.2
+	 */
+	public void setHiraganaQuaternary(boolean flag)
+	{
+		m_isHiragana4_ = flag;
+	}
+	
+	/**
+	 * Sets the Hiragana Quaternary mode to the initial mode set during 
+	 * construction of the RuleBasedCollator.
+	 * See setHiraganaQuaternary(boolean) for more details.
+	 * @see #setHiraganaQuaternary(boolean)
+	 * @see #isHiraganaQuaternary
+	 * @draft 2.2
+	 */
+	public void setHiraganaQuaternaryDefault()
+	{
+		m_isHiragana4_ = m_defaultIsHiragana4_;
+	}
+    
+    /**
+     * Sets whether uppercase characters sort before lowercase
+     * characters or vice versa, in strength TERTIARY. The default 
+     * mode is false, and so lowercase characters sort before uppercase
+     * characters. 
+     * If true, sort upper case characters first.
+     * @param upperfirst true to sort uppercase characters before 
+     *                   lowercase characters, false to sort lowercase 
+     *                   characters before uppercase characters 
+     * @see #isLowerCaseFirst
+     * @see #isUpperCaseFirst
+     * @see #setLowerCaseFirst
+     * @see #setCaseFirstDefault
+     * @draft 2.2
+     */
+    public void setUpperCaseFirst(boolean upperfirst)
+    {
+        if (upperfirst) {
+            m_caseFirst_ = AttributeValue.UPPER_FIRST_;
+        }
+        else {
+            m_caseFirst_ = AttributeValue.OFF_;
+        }
+        updateInternalState();
+    }
+	
+	/**
+   	 * Sets the orders of lower cased characters to sort before upper cased 
+     * characters, in strength TERTIARY. The default 
+     * mode is false.
+     * If true is set, the RuleBasedCollator will sort lower cased characters 
+     * before the upper cased ones.
+     * Otherwise, if false is set, the RuleBasedCollator will ignore case 
+     * preferences.
+     * @param lowerfirst true for sorting lower cased characters before 
+     *                   upper cased characters, false to ignore case 
+     *                   preferences. 
+     * @see #isLowerCaseFirst
+     * @see #isUpperCaseFirst
+     * @see #setUpperCaseFirst
+     * @see #setCaseFirstDefault
+   	 */
+   	public void setLowerCaseFirst(boolean lowerfirst)
+   	{
+   		if (lowerfirst) {
+   			m_caseFirst_ = AttributeValue.LOWER_FIRST_;
+   		}
+   		else {
+   			m_caseFirst_ = AttributeValue.OFF_;
+   		}
+   		updateInternalState();
+   	}
+   	
+   	/**
+   	 * Sets the case first mode to the initial mode set during 
+	 * construction of the RuleBasedCollator.
+	 * See setUpperCaseFirst(boolean) and setLowerCaseFirst(boolean) for more 
+     * details.
+   	 * @see #isLowerCaseFirst
+   	 * @see #isUpperCaseFirst
+   	 * @see #setLowerCaseFirst(boolean)
+     * @see #setUpperCaseFirst(boolean)
+   	 * @draft 2.2
+   	 */
+   	public final void setCaseFirstDefault()
+   	{
+   		m_caseFirst_ = m_defaultCaseFirst_;
+   		updateInternalState();
+   	}
+   
+    /**
+     * Sets the alternate handling mode to the initial mode set during 
+	 * construction of the RuleBasedCollator.
+	 * See setAlternateHandling(boolean) for more details.
+	 * @see #setAlternateHandlingShifted(boolean)
+	 * @see #isAlternateHandlingShifted()
+     * @draft 2.2
+     */
+    public void setAlternateHandlingDefault()
+    {
+    	m_isAlternateHandlingShifted_ = m_defaultIsAlternateHandlingShifted_;
+    	updateInternalState();
+    }
+    
+    /**
+     * Sets the case level mode to the initial mode set during 
+	 * construction of the RuleBasedCollator.
+	 * See setCaseLevel(boolean) for more details.
+	 * @see #setCaseLevel(boolean)
+	 * @see #isCaseLevel
+     * @draft 2.2
+     */
+    public void setCaseLevelDefault()
+    {
+    	m_isCaseLevel_ = m_defaultIsCaseLevel_;
+    	updateInternalState();
+    }
+    
+    /**
+     * Sets the decomposition mode to the initial mode set during construction
+     * of the RuleBasedCollator.
+     * See setDecomposition(int) for more details.
+     * @see #getDecomposition
+     * @see #setDecomposition(int)
+     * @draft 2.2
+     */
+    public void setDecompositionDefault()
+    {
+    	setDecomposition(m_defaultDecomposition_);
+    }
+    
+    /**
+     * Sets the French collation mode to the initial mode set during 
+     * construction of the RuleBasedCollator.
+     * See setFrenchCollation(boolean) for more details.
+     * @see #isFrenchCollation
+     * @see #setFrenchCollation(boolean)
+     * @draft 2.2
+     */
+    public void setFrenchCollationDefault()
+    {
+    	m_isFrenchCollation_ = m_defaultIsFrenchCollation_;
+    	updateInternalState();
+    }
+    
+    /**
+     * Sets the collation strength to the initial mode set during the 
+     * construction of the RuleBasedCollator.
+     * See setStrength(int) for more details.
+     * @see #setStrength(int)
+     * @see #getStrength
+     * @draft 2.2
+     */
+    public void setStrengthDefault()
+    {
+    	setStrength(m_defaultStrength_);
+    }
+    
+    /**
+     * Sets the mode for the direction of SECONDARY weights to be used in 
+     * French collation.
+     * The default value is false, which treats SECONDARY weights in the order 
+     * they appear.
+     * If set to true, the SECONDARY weights will be sorted backwards.
+     * See the section on 
+     * <a href=http://oss.software.ibm.com/icu/userguide/Collate_ServiceArchitecture.html>
+     * French collation</a> for more information.
+     * @param flag true to set the French collation on, false to set it off
+     * @draft 2.2
+     * @see #isFrenchCollation
+     * @see #setFrenchCollationDefault
+     */
+    public void setFrenchCollation(boolean flag) 
+    {
+    	m_isFrenchCollation_ = flag;
+    	updateInternalState();
+    }
+    
+    /**
+     * Sets the alternate handling for QUATERNARY strength to be either 
+     * shifted or non-ignorable. 
+     * See the UCA definition on 
+     * <a href="http://www.unicode.org/unicode/reports/tr10/#§3.2.2 Variable Collation Elements">
+     * Alternate Weighting</a>.
+     * This attribute will only be effective when QUATERNARY strength is set.
+     * The default value for this mode is false, corresponding to the 
+     * NON_IGNORABLE mode in UCA. In the NON-IGNORABLE mode, the 
+     * RuleBasedCollator will treats all the codepoints with non-ignorable 
+     * primary weights in the same way. 
+     * If the mode is set to true, the behaviour corresponds to SHIFTED defined
+     * in UCA, this causes codepoints with PRIMARY orders that are equal or 
+     * below the variable top value to be ignored in PRIMARY order and 
+     * moved to the QUATERNARY order.
+     * @param shifted true if SHIFTED behaviour for alternate handling is 
+     *        desired, false for the NON_IGNORABLE behaviour.
+     * @see #isAlternateHandlingShifted
+     * @see #setAlternateHandlingDefault
+     * @draft 2.2
+     */
+    public void setAlternateHandlingShifted(boolean shifted)
+    {
+    	m_isAlternateHandlingShifted_ = shifted;
+    	updateInternalState();
+    }
+    
+    /**
+     * <p>
+     * When case level is set to true, an additional weight is formed 
+     * between the SECONDARY and TERTIARY weight, known as the case level. 
+     * The case level is used to distinguish large and small Japanese Kana 
+     * characters. Case level could also be used in other situations. 
+     * For example to distinguish certain Pinyin characters. 
+     * The default value is false, which means the case level is not generated.
+     * The contents of the case level are affected by the case first
+     * mode. A simple way to ignore accent differences in a string is to set 
+     * the strength to PRIMARY and enable case level.
+     * </p>
+     * <p>
+     * See the section on 
+     * <a href=http://oss.software.ibm.com/icu/userguide/Collate_ServiceArchitecture.html>
+     * case level</a> for more information.
+     * </p>
+     * @param flag true if case level sorting is required, false otherwise
+     * @draft 2.2
+     * @see #setCaseLevelDefault
+	 * @see #isCaseLevel
+     */
+    public void setCaseLevel(boolean flag) 
+    {
+    	m_isCaseLevel_ = flag;
+    	updateInternalState();
+    }
+
+	/**
+     * <p>
+     * Sets this Collator's strength property. The strength property 
+     * determines the minimum level of difference considered significant 
+     * during comparison.
+     * </p>
+     * <p>See the Collator class description for an example of use.</p>
+     * @param the new strength value.
+     * @see #getStrength
+     * @see #setStrengthDefault
+     * @see #PRIMARY
+     * @see #SECONDARY
+     * @see #TERTIARY
+     * @see #QUATERNARY
+     * @see #IDENTICAL
+     * @exception IllegalArgumentException If the new strength value is not one 
+     * 				of PRIMARY, SECONDARY, TERTIARY, QUATERNARY or IDENTICAL.
+     * @draft 2.2
+     */
+    public void setStrength(int newStrength) {
+        super.setStrength(newStrength);
+        updateInternalState();
+    }
+
+    // public getters --------------------------------------------------------
+    
+    /**
+     * Gets the collation rules for this RuleBasedCollator.     
+     * @return returns the collation rules
+     * @draft 2.2
+     */
+    public String getRules()
+    {
+    	return m_rules_;
+    }
+
+	/**
+     * <p>
+     * Get a Collation key for the argument String source from this 
+     * RuleBasedCollator. 
+     * </p>
+     * <p>
+     * General recommendation: <br>
+     * If comparison are to be done to the same String multiple times, it would
+     * be more efficient to generate CollationKeys for the Strings and use 
+     * CollationKey.compareTo(CollationKey) for the comparisons.
+     * If the each Strings are compared to only once, using the method
+     * RuleBasedCollator.compare(String, String) will have a better performance.
+     * </p>
+     * <p>
+     * See the class documentation for an explanation about CollationKeys.
+     * </p>
+     * @param source the text String to be transformed into a collation key.
+     * @return the CollationKey for the given String based on this 
+     *         RuleBasedCollator's collation rules. If the source String is 
+     *         null, a null CollationKey is returned.
+     * @see CollationKey
+     * @see #compare(String, String)
+     * @draft 2.2
+     */
+    public CollationKey getCollationKey(String source)
+    {
+    	if (source == null) {
+    		return null;
+    	}
+    	int strength = getStrength();
+    	m_utilCompare0_ = m_isCaseLevel_;
+        m_utilCompare1_ = true;
+    	m_utilCompare2_ = strength >= SECONDARY;
+    	m_utilCompare3_ = strength >= TERTIARY;
+    	m_utilCompare4_ = strength >= QUATERNARY;
+		m_utilCompare5_ = strength == IDENTICAL;
+
+		m_utilBytesCount0_ = 0;
+        m_utilBytesCount1_ = 0;
+        m_utilBytesCount2_ = 0;
+        m_utilBytesCount3_ = 0;
+        m_utilBytesCount4_ = 0;
+        m_utilBytesCount5_ = 0;
+    	m_utilCount0_ = 0;
+        m_utilCount1_ = 0;
+        m_utilCount2_ = 0;
+        m_utilCount3_ = 0;
+        m_utilCount4_ = 0;
+        m_utilCount5_ = 0;
+    	boolean doFrench = m_isFrenchCollation_ && m_utilCompare2_;
+    	// TODO: UCOL_COMMON_BOT4 should be a function of qShifted. 
+	    // If we have no qShifted, we don't need to set UCOL_COMMON_BOT4 so 
+	    // high.
+   		int commonBottom4 = ((m_variableTopValue_ >>> 8) + 1) & LAST_BYTE_MASK_;
+    	byte hiragana4 = 0;
+    	if (m_isHiragana4_ && m_utilCompare4_) {
+    		// allocate one more space for hiragana, value for hiragana
+      		hiragana4 = (byte)commonBottom4;
+      		commonBottom4 ++;
+    	}
+    	
+    	int bottomCount4 = 0xFF - commonBottom4;
+    	// If we need to normalize, we'll do it all at once at the beginning!
+    	if (m_utilCompare5_ && Normalizer.quickCheck(source, Normalizer.NFD) 
+                                                    != Normalizer.YES) {
+            // if it is identical strength, we have to normalize the string to
+            // NFD so that it will be appended correctly to the end of the sort
+            // key
+            source = Normalizer.decompose(source, false);
+        }
+        else if (getDecomposition() != NO_DECOMPOSITION
+    		&& Normalizer.quickCheck(source, Normalizer.FCD) 
+    												!= Normalizer.YES) {
+            // for the rest of the strength, if decomposition is on, FCD is                                            
+            // enough for us to work on.
+        	source = Normalizer.normalize(source,Normalizer.FCD);
+    	}
+		getSortKeyBytes(source, doFrench, hiragana4, commonBottom4, 
+                        bottomCount4);
+		byte sortkey[] = getSortKey(source, doFrench, commonBottom4, 
+                                    bottomCount4);
+		return new CollationKey(source, sortkey);
+    }
+    		    
+    /**
+     * Return true if an uppercase character is sorted before the corresponding lowercase character.
+	 * See setCaseFirst(boolean) for details.
+	 * @see #setUpperCaseFirst
+	 * @see #setLowerCaseFirst
+   	 * @see #isLowerCaseFirst
+   	 * @see #setCaseFirstDefault
+	 * @return true if upper cased characters are sorted before lower cased 
+	 *         characters, false otherwise
+	 * @draft 2.2
+	 */
+	public boolean isUpperCaseFirst()
+	{
+		return (m_caseFirst_ == AttributeValue.UPPER_FIRST_);
+	}
+	
+	/**
+     * Return true if a lowercase character is sorted before the corresponding uppercase character.
+	 * See setCaseFirst(boolean) for details.
+	 * @see #setUpperCaseFirst
+	 * @see #setLowerCaseFirst
+   	 * @see #isUpperCaseFirst
+   	 * @see #setCaseFirstDefault
+	 * @return true lower cased characters are sorted before upper cased 
+	 *         characters, false otherwise
+	 * @draft 2.2
+	 */
+	public boolean isLowerCaseFirst()
+	{
+		return (m_caseFirst_ == AttributeValue.LOWER_FIRST_);
+	}
+	
+	/**
+	 * Checks if the alternate handling behaviour is the UCA defined SHIFTED or 
+	 * NON_IGNORABLE.
+	 * If return value is true, then the alternate handling attribute for the 
+	 * Collator is SHIFTED. Otherwise if return value is false, then the 
+	 * alternate handling attribute for the Collator is NON_IGNORABLE
+	 * See setAlternateHandlingShifted(boolean) for more details.
+	 * @return true or false 
+	 * @see #setAlternateHandlingShifted(boolean)
+	 * @see #setAlternateHandlingDefault
+     * @draft 2.2
+     */
+	public boolean isAlternateHandlingShifted()
+	{
+		return m_isAlternateHandlingShifted_;
+	}
+	
+	/**
+	 * Checks if case level is set to true.
+	 * See setCaseLevel(boolean) for details.
+	 * @return the case level mode
+	 * @see #setCaseLevelDefault
+	 * @see #isCaseLevel
+	 * @see #setCaseLevel(boolean)
+	 * @draft 2.2
+	 */
+	public boolean isCaseLevel()
+	{
+		return m_isCaseLevel_;
+	}
+	
+	/**
+	 * Checks if French Collation is set to true.
+	 * See setFrenchCollation(boolean) for details.
+	 * @return true if French Collation is set to true, false otherwise
+	 * @see #setFrenchCollation(boolean)
+	 * @see #setFrenchCollationDefault
+	 * @draft 2.2
+	 */
+	public boolean isFrenchCollation()
+	{
+		return m_isFrenchCollation_;
+	}
+	
+	/**
+	 * Checks if the Hiragana Quaternary mode is set on.
+	 * See setHiraganaQuaternary(boolean) for more details.
+	 * @return flag true if Hiragana Quaternary mode is on, false otherwise
+	 * @see #setHiraganaQuaternaryDefault
+	 * @see #setHiraganaQuaternary(boolean)
+	 * @draft 2.2
+	 */
+	public boolean isHiraganaQuaternary()
+	{
+		return m_isHiragana4_;
+	}
+		
+	// public other methods -------------------------------------------------
+
+    /**
+     * Compares the equality of two RuleBasedCollator objects.
+     * RuleBasedCollator objects are equal if they have the same collation
+     * rules and the same attributes.
+     * @param obj the RuleBasedCollator to be compared to.
+     * @return true if this RuleBasedCollator has exactly the same 
+     *         collation behaviour as obj, false otherwise.
+     * @draft 2.2
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) {
+        	return false;  // super does class check
+        }
+        if (this == obj) {
+        	return true;
+        }
+        if (getClass() != obj.getClass()) {
+        	return false;
+        }
+        RuleBasedCollator other = (RuleBasedCollator)obj;
+        // all other non-transient information is also contained in rules.
+        boolean property = getStrength() == other.getStrength() 
+               && getDecomposition() == other.getDecomposition() 
+               && other.m_caseFirst_ == m_caseFirst_
+               && other.m_caseSwitch_ == m_caseSwitch_
+               && other.m_isAlternateHandlingShifted_ 
+                                             == m_isAlternateHandlingShifted_
+               && other.m_isCaseLevel_ == m_isCaseLevel_
+               && other.m_isFrenchCollation_ == m_isFrenchCollation_
+               && other.m_isHiragana4_ == m_isHiragana4_;
+        if (!property) {
+            return false;
+        }
+        boolean rules = m_rules_ == other.m_rules_;
+        if (!rules && (m_rules_ != null && other.m_rules_ != null)) {
+            rules = m_rules_.equals(other.m_rules_);
+        }
+        return rules;
+    }
+    
+	/**
+     * Generates a unique hash code for this RuleBasedCollator.
+     * @return the unique hash code for this Collator
+     * @draft 2.2
+     */
+    public int hashCode() 
+    {
+        String rules = getRules();
+        if (rules == null) {
+            rules = "";
+        }
+        return rules.hashCode();
+    }
+    
+    /**
+     * Compares the source text String to the target text String according to 
+     * the collation rules, strength and decomposition mode for this 
+     * RuleBasedCollator. 
+     * Returns an integer less than, 
+     * equal to or greater than zero depending on whether the source String is 
+     * less than, equal to or greater than the target String. See the Collator
+     * class description for an example of use.
+     * </p>
+     * <p>
+     * General recommendation: <br>
+     * If comparison are to be done to the same String multiple times, it would
+     * be more efficient to generate CollationKeys for the Strings and use 
+     * CollationKey.compareTo(CollationKey) for the comparisons.
+     * If the each Strings are compared to only once, using the method
+     * RuleBasedCollator.compare(String, String) will have a better performance.
+     * </p>
+     * @param source the source text String.
+     * @param target the target text String.
+     * @return Returns an integer value. Value is less than zero if source is 
+     *         less than target, value is zero if source and target are equal, 
+     *         value is greater than zero if source is greater than target.
+     * @see CollationKey
+     * @see #getCollationKey
+     * @draft 2.2
+     */
+    public int compare(String source, String target)
+    {
+    	if (source == target) {
+	        return 0;
+	    }
+	
+		// Find the length of any leading portion that is equal
+		int offset = getFirstUnmatchedOffset(source, target);
+		if (offset == source.length()) {
+			if (offset == target.length() || checkIgnorable(target, offset)) {
+				return 0;
+			}
+			return -1;
+	    }
+	    else if (target.length() == offset) {
+	    	if (checkIgnorable(source, offset)) {
+	    		return 0;
+	    	}
+	    	return 1;
+	    }
+
+        int strength = getStrength();
+		// setting up the collator parameters	
+		m_utilCompare0_ = m_isCaseLevel_;
+        m_utilCompare1_ = true;
+    	m_utilCompare2_ = strength >= SECONDARY;
+    	m_utilCompare3_ = strength >= TERTIARY;
+    	m_utilCompare4_ = strength >= QUATERNARY;
+		m_utilCompare5_ = strength == IDENTICAL;
+		boolean doFrench = m_isFrenchCollation_ && m_utilCompare2_;
+    	boolean doShift4 = m_isAlternateHandlingShifted_ && m_utilCompare4_;
+	    boolean doHiragana4 = m_isHiragana4_ && m_utilCompare4_;
+	
+	    if (doHiragana4 && doShift4) {
+	    	String sourcesub = source.substring(offset);
+	    	String targetsub = target.substring(offset);
+	      	return compareBySortKeys(sourcesub, targetsub);
+	    }
+	    
+		// This is the lowest primary value that will not be ignored if shifted
+	    int lowestpvalue = m_isAlternateHandlingShifted_ 
+	    									? m_variableTopValue_ << 16 : 0;
+        m_srcUtilCEBufferSize_ = 0;
+        m_tgtUtilCEBufferSize_ = 0;
+		int result = doPrimaryCompare(doHiragana4, lowestpvalue, source, 
+									  target, offset);
+		if (m_srcUtilCEBufferSize_ == -1 
+            && m_tgtUtilCEBufferSize_ == -1) {
+			// since the cebuffer is cleared when we have determined that
+			// either source is greater than target or vice versa, the return
+			// result is the comparison result and not the hiragana result
+			return result;
+		} 
+		
+		int hiraganaresult = result;
+		
+		if (m_utilCompare2_) {
+			result = doSecondaryCompare(doFrench);
+			if (result != 0) {
+				return result;
+			}
+		}
+		// doing the case bit
+	    if (m_utilCompare0_) {
+	    	result = doCaseCompare();
+			if (result != 0) {
+				return result;
+			}	
+	    }
+		// Tertiary level
+	    if (m_utilCompare3_) {
+	      	result = doTertiaryCompare();
+	      	if (result != 0) {
+	      		return result;
+	      	}
+	    }
+	
+		if (doShift4) {  // checkQuad
+	      	result = doQuaternaryCompare(lowestpvalue);
+	      	if (result != 0) {
+	      		return result;
+	      	}
+	    } 
+	    else if (doHiragana4 && hiraganaresult != 0) {
+	      	// If we're fine on quaternaries, we might be different
+	      	// on Hiragana. This, however, might fail us in shifted.
+	      	return hiraganaresult;
+	    }
+	
+	    // For IDENTICAL comparisons, we use a bitwise character comparison 
+	    // as a tiebreaker if all else is equal.                                
+	    // Getting here  should be quite rare - strings are not identical -     
+	    // that is checked first, but compared == through all other checks.  
+	    if (m_utilCompare5_) {
+	        return doIdenticalCompare(source, target, offset, true);
+	    }
+	    return 0;
+    }
+
+    // package private inner interfaces --------------------------------------
+    
+    /**
+	 * Attribute values to be used when setting the Collator options
+	 */
+	static interface AttributeValue
+	{
+		/**
+		 * Indicates that the default attribute value will be used. 
+		 * See individual attribute for details on its default value. 
+		 */
+		static final int DEFAULT_ = -1;
+		/** 
+		 * Primary collation strength 
+		 */
+		static final int PRIMARY_ = Collator.PRIMARY;
+		/** 
+		 * Secondary collation strength 
+		 */
+		static final int SECONDARY_ = Collator.SECONDARY;
+		/** 
+		 * Tertiary collation strength 
+		 */
+		static final int TERTIARY_ = Collator.TERTIARY;
+		/** 
+		 * Default collation strength 
+		 */
+		static final int DEFAULT_STRENGTH_ = Collator.TERTIARY;
+		/**
+		 * Internal use for strength checks in Collation elements
+		 */
+		static final int CE_STRENGTH_LIMIT_ = Collator.TERTIARY + 1;
+		/** 
+		 * Quaternary collation strength 
+		 */
+		static final int QUATERNARY_ = 3;
+		/** 
+		 * Identical collation strength 
+		 */
+		static final int IDENTICAL_ = Collator.IDENTICAL;
+		/**
+		 * Internal use for strength checks
+		 */
+		static final int STRENGTH_LIMIT_ = Collator.IDENTICAL + 1;
+		/** 
+		 * Turn the feature off - works for FRENCH_COLLATION, CASE_LEVEL, 
+		 * HIRAGANA_QUATERNARY_MODE and DECOMPOSITION_MODE
+		 */
+		static final int OFF_ = 16;
+		/** 
+		 * Turn the feature on - works for FRENCH_COLLATION, CASE_LEVEL, 
+		 * HIRAGANA_QUATERNARY_MODE and DECOMPOSITION_MODE
+		 */
+		static final int ON_ = 17;
+		/** 
+		 * Valid for ALTERNATE_HANDLING. Alternate handling will be shifted 
+		 */
+		static final int SHIFTED_ = 20;
+		/** 
+		 * Valid for ALTERNATE_HANDLING. Alternate handling will be non 
+		 * ignorable 
+		 */
+		static final int NON_IGNORABLE_ = 21;
+		/** 
+		 * Valid for CASE_FIRST - lower case sorts before upper case 
+		 */
+		static final int LOWER_FIRST_ = 24;
+		/** 
+		 * Upper case sorts before lower case 
+		 */
+		static final int UPPER_FIRST_ = 25;
+	    /**
+		 * Number of attribute values
+		 */
+	    static final int LIMIT_ = 29;
+	};
+	    
+	/** 
+	 * Attributes that collation service understands. All the attributes can 
+	 * take DEFAULT value, as well as the values specific to each one. 
+	 */
+	static interface Attribute 
+	{
+	    /** 
+	     * Attribute for direction of secondary weights - used in French.
+	     * Acceptable values are ON, which results in secondary weights being 
+	     * considered backwards and OFF which treats secondary weights in the 
+	     * order they appear.
+	     */
+    	static final int FRENCH_COLLATION_ = 0; 
+	    /** 
+	     * Attribute for handling variable elements. Acceptable values are 
+	     * NON_IGNORABLE (default) which treats all the codepoints with 
+	     * non-ignorable primary weights in the same way, and SHIFTED which 
+	     * causes codepoints with primary weights that are equal or below the 
+	     * variable top value to be ignored on primary level and moved to the 
+	     * quaternary level.
+	     */
+	    static final int ALTERNATE_HANDLING_ = 1;
+	    /** 
+	     * Controls the ordering of upper and lower case letters. Acceptable 
+	     * values are OFF (default), which orders upper and lower case letters 
+	     * in accordance to their tertiary weights, UPPER_FIRST which forces 
+	     * upper case letters to sort before lower case letters, and 
+	     * LOWER_FIRST which does the opposite. 
+	     */
+	    static final int CASE_FIRST_ = 2;
+	    /** 
+	     * Controls whether an extra case level (positioned before the third 
+	     * level) is generated or not. Acceptable values are OFF (default),
+	     * when case level is not generated, and ON which causes the case
+	     * level to be generated. Contents of the case level are affected by
+	     * the value of CASE_FIRST attribute. A simple way to ignore accent 
+	     * differences in a string is to set the strength to PRIMARY and 
+	     * enable case level. 
+	     */
+	    static final int CASE_LEVEL_ = 3;
+	    /** 
+	     * Controls whether the normalization check and necessary 
+	     * normalizations are performed. When set to OFF (default) no 
+	     * normalization check is performed. The correctness of the result is 
+	     * guaranteed only if the input data is in so-called FCD form (see 
+	     * users manual for more info). When set to ON, an incremental check 
+	     * is performed to see whether the input data is in the FCD form. If 
+	     * the data is not in the FCD form, incremental NFD normalization is 
+	     * performed. 
+	     */
+	    static final int NORMALIZATION_MODE_ = 4; 
+	    /** 
+	     * The strength attribute. Can be either PRIMARY, SECONDARY, TERTIARY, 
+	     * QUATERNARY or IDENTICAL. The usual strength for most locales 
+	     * (except Japanese) is tertiary. Quaternary strength is useful when 
+	     * combined with shifted setting for alternate handling attribute and 
+	     * for JIS x 4061 collation, when it is used to distinguish between 
+	     * Katakana  and Hiragana (this is achieved by setting the 
+	     * HIRAGANA_QUATERNARY mode to on. Otherwise, quaternary level is 
+         * affected only by the number of non ignorable code points in the 
+	     * string. Identical strength is rarely useful, as it amounts to 
+	     * codepoints of the NFD form of the string. 
+	     */
+	    static final int STRENGTH_ = 5;
+	    /** 
+	     * When turned on, this attribute positions Hiragana before all  
+	     * non-ignorables on quaternary level. This is a sneaky way to produce 
+	     * JIS sort order. 
+	     */     
+	    static final int HIRAGANA_QUATERNARY_MODE_ = 6;
+        /**
+	     * Attribute count
+	     */
+	    static final int LIMIT_ = 7;
+	};
+	
+	/**
+     * DataManipulate singleton
+     */
+    static class DataManipulate implements Trie.DataManipulate
+    {
+    	// public methods ----------------------------------------------------
+    	
+    	/**
+	     * Internal method called to parse a lead surrogate's ce for the offset
+	     * to the next trail surrogate data.
+	     * @param ce collation element of the lead surrogate
+	     * @return data offset or 0 for the next trail surrogate
+	     * @draft 2.2
+	     */
+	    public final int getFoldingOffset(int ce)
+	    {
+	    	if (isSpecial(ce) && getTag(ce) == CE_SURROGATE_TAG_) {
+	    		return (ce & 0xFFFFFF);
+	    	}
+	    	return 0;
+	    } 
+	    
+	    /**
+	     * Get singleton object
+	     */
+	    public static final DataManipulate getInstance()
+	    {
+	    	if (m_instance_ == null) {
+	    		m_instance_ =  new DataManipulate();
+	    	}
+	    	return m_instance_;
+	    }
+	    
+	    // private data member ----------------------------------------------
+	    
+	    /**
+	     * Singleton instance
+	     */
+	    private static DataManipulate m_instance_;
+	    
+	    // private constructor ----------------------------------------------
+	    
+	    /**
+	     * private to prevent initialization
+	     */
+	    private DataManipulate()
+	    {
+	    }
+    };
+    
+    /**
+     * UCAConstants
+     */
+    static final class UCAConstants
+    {
+         int FIRST_TERTIARY_IGNORABLE_[] = new int[2];       // 0x00000000 
+         int LAST_TERTIARY_IGNORABLE_[] = new int[2];        // 0x00000000 
+         int FIRST_PRIMARY_IGNORABLE_[] = new int[2];        // 0x00008705 
+         int FIRST_SECONDARY_IGNORABLE_[] = new int[2];      // 0x00000000 
+         int LAST_SECONDARY_IGNORABLE_[] = new int[2];       // 0x00000500 
+         int LAST_PRIMARY_IGNORABLE_[] = new int[2];         // 0x0000DD05 
+         int FIRST_VARIABLE_[] = new int[2];                 // 0x05070505 
+         int LAST_VARIABLE_[] = new int[2];                  // 0x13CF0505 
+         int FIRST_NON_VARIABLE_[] = new int[2];             // 0x16200505 
+         int LAST_NON_VARIABLE_[] = new int[2];              // 0x767C0505 
+         int RESET_TOP_VALUE_[] = new int[2];                // 0x9F000303 
+         int FIRST_IMPLICIT_[] = new int[2]; 
+         int LAST_IMPLICIT_[] = new int[2];  
+         int FIRST_TRAILING_[] = new int[2]; 
+         int LAST_TRAILING_[] = new int[2];  
+         int PRIMARY_TOP_MIN_; 
+         int PRIMARY_IMPLICIT_MIN_; // 0xE8000000 
+         int PRIMARY_IMPLICIT_MAX_; // 0xF0000000 
+         int PRIMARY_TRAILING_MIN_; // 0xE8000000 
+         int PRIMARY_TRAILING_MAX_; // 0xF0000000 
+         int PRIMARY_SPECIAL_MIN_; // 0xE8000000 
+         int PRIMARY_SPECIAL_MAX_; // 0xF0000000 
+    }
+    
+    // package private data member -------------------------------------------
+    
+    static final byte BYTE_FIRST_TAILORED_ = (byte)0x04;
+    static final byte BYTE_COMMON_ = (byte)0x05;
+    static final int COMMON_TOP_2_ = 0x86; // int for unsigness
+    static final int COMMON_BOTTOM_2_ = BYTE_COMMON_;
+    /**
+	 * Case strength mask
+	 */
+	static final int CE_CASE_BIT_MASK_ = 0xC0;
+	static final int CE_TAG_SHIFT_ = 24;
+	static final int CE_TAG_MASK_ = 0x0F000000;
+	
+	static final int CE_SPECIAL_FLAG_ = 0xF0000000;
+    /** 
+     * Lead surrogate that is tailored and doesn't start a contraction 
+     */
+    static final int CE_SURROGATE_TAG_ = 5;  
+	/**
+  	 * Mask to get the primary strength of the collation element
+  	 */
+  	static final int CE_PRIMARY_MASK_ = 0xFFFF0000;
+  	/**
+  	 * Mask to get the secondary strength of the collation element
+  	 */
+   	static final int CE_SECONDARY_MASK_ = 0xFF00;
+   	/**
+  	 * Mask to get the tertiary strength of the collation element
+  	 */
+   	static final int CE_TERTIARY_MASK_ = 0xFF;
+   	/**
+   	 * Primary strength shift 
+   	 */
+	static final int CE_PRIMARY_SHIFT_ = 16;
+	/** 
+	 * Secondary strength shift 
+	 */
+	static final int CE_SECONDARY_SHIFT_ = 8;
+   	/**
+   	 * Continuation marker
+   	 */
+   	static final int CE_CONTINUATION_MARKER_ = 0xC0;
+   	
+   	/**
+	 * Size of collator raw data headers and options before the expansion
+	 * data. This is used when expansion ces are to be retrieved. ICU4C uses
+	 * the expansion offset starting from UCollator.UColHeader, hence ICU4J
+	 * will have to minus that off to get the right expansion ce offset. In
+	 * number of ints.
+	 */
+	int m_expansionOffset_;
+	/**
+	 * Size of collator raw data headers, options and expansions before
+	 * contraction data. This is used when contraction ces are to be retrieved. 
+	 * ICU4C uses contraction offset starting from UCollator.UColHeader, hence
+	 * ICU4J will have to minus that off to get the right contraction ce 
+	 * offset. In number of chars.
+	 */
+	int m_contractionOffset_;
+    /**
+     * Flag indicator if Jamo is special
+     */
+    boolean m_isJamoSpecial_;
+ 
+ 	// Collator options ------------------------------------------------------   
+ 	int m_defaultVariableTopValue_;
+	boolean m_defaultIsFrenchCollation_;
+	boolean m_defaultIsAlternateHandlingShifted_; 
+    int m_defaultCaseFirst_;
+    boolean m_defaultIsCaseLevel_;
+    int m_defaultDecomposition_;
+    int m_defaultStrength_;
+    boolean m_defaultIsHiragana4_;
+ 	/**
+ 	 * Value of the variable top
+ 	 */
+    int m_variableTopValue_;
+    /** 
+     * Attribute for special Hiragana 
+     */
+    boolean m_isHiragana4_;         
+	/**
+     * Case sorting customization
+     */
+    int m_caseFirst_;
+    
+    // end Collator options --------------------------------------------------
+       
+    /**
+     * Expansion table
+     */
+    int m_expansion_[];
+    /**
+     * Contraction index table
+     */
+    char m_contractionIndex_[];
+    /**
+     * Contraction CE table
+     */
+    int m_contractionCE_[];
+    /**
+     * Data trie
+     */
+    IntTrie m_trie_;
+    /**
+     * Table to store all collation elements that are the last element of an
+     * expansion. This is for use in StringSearch.
+     */
+    int m_expansionEndCE_[];
+    /**
+     * Table to store the maximum size of any expansions that end with the 
+     * corresponding collation element in m_expansionEndCE_. For use in
+     * StringSearch too
+     */
+    byte m_expansionEndCEMaxSize_[];
+    /**
+     * Heuristic table to store information on whether a char character is 
+     * considered "unsafe". "Unsafe" character are combining marks or those 
+     * belonging to some contraction sequence from the offset 1 onwards. 
+     * E.g. if "ABC" is the only contraction, then 'B' and 'C' are considered 
+     * unsafe. If we have another contraction "ZA" with the one above, then 
+     * 'A', 'B', 'C' are "unsafe" but 'Z' is not. 
+     */
+    byte m_unsafe_[];
+    /**
+     * Table to store information on whether a codepoint can occur as the last
+     * character in a contraction
+     */
+    byte m_contractionEnd_[];
+    /**
+	 * Original collation rules
+	 */
+	String m_rules_;
+	/**
+     * The smallest "unsafe" codepoint
+     */
+    char m_minUnsafe_;
+    /**
+	 * The smallest codepoint that could be the end of a contraction
+	 */
+	char m_minContractionEnd_;
+	
+	/**
+     * UnicodeData.txt property object
+     */
+    static final RuleBasedCollator UCA_;  
+    /**
+     * UCA Constants
+     */
+    static final UCAConstants UCA_CONSTANTS_;
+    /**
+     * Table for UCA and builder use
+     */
+    static final char UCA_CONTRACTIONS_[];
+    /**
+     * Implicit constants
+     */
+    static final int IMPLICIT_BASE_BYTE_;
+    static final int IMPLICIT_LIMIT_BYTE_;
+    static final int IMPLICIT_4BYTE_BOUNDARY_;
+    static final int LAST_MULTIPLIER_;
+    static final int LAST2_MULTIPLIER_;
+    static final int IMPLICIT_BASE_3BYTE_;
+    static final int IMPLICIT_BASE_4BYTE_;
+    static final int BYTES_TO_AVOID_ = 3;
+    static final int OTHER_COUNT_ = 256 - BYTES_TO_AVOID_;
+    static final int LAST_COUNT_ = OTHER_COUNT_ / 2;
+    /**
+     * Room for intervening, without expanding to 5 bytes
+     */
+    static final int LAST_COUNT2_ = OTHER_COUNT_ / 21; 
+    static final int IMPLICIT_3BYTE_COUNT_ = 1;
+    
+    // block to initialise character property database
+    static
+    {
+        try
+        {
+        	UCA_ = new RuleBasedCollator();
+            UCA_CONSTANTS_ = new UCAConstants();
+        	InputStream i = UCA_.getClass().getResourceAsStream(
+                                        "/com/ibm/icu/impl/data/ucadata.icu");
+        	
+       		BufferedInputStream b = new BufferedInputStream(i, 90000);
+        	CollatorReader reader = new CollatorReader(b);
+        	UCA_CONTRACTIONS_ = reader.read(UCA_, UCA_CONSTANTS_);
+            b.close();
+        	i.close();
+            // called before doing canonical closure for the UCA.
+            IMPLICIT_BASE_BYTE_ = UCA_CONSTANTS_.PRIMARY_IMPLICIT_MIN_;
+            // leave room for 1 3-byte and 2 4-byte forms
+            IMPLICIT_LIMIT_BYTE_ = IMPLICIT_BASE_BYTE_ + 4; 
+            IMPLICIT_4BYTE_BOUNDARY_ = IMPLICIT_3BYTE_COUNT_ * OTHER_COUNT_ 
+                                       * LAST_COUNT_;
+            LAST_MULTIPLIER_ = OTHER_COUNT_ / LAST_COUNT_;
+            LAST2_MULTIPLIER_ = OTHER_COUNT_ / LAST_COUNT2_;
+            IMPLICIT_BASE_3BYTE_ = (IMPLICIT_BASE_BYTE_ << 24) + 0x030300;
+            IMPLICIT_BASE_4BYTE_ = ((IMPLICIT_BASE_BYTE_ 
+                                     + IMPLICIT_3BYTE_COUNT_) << 24) + 0x030303;
+        	UCA_.m_rules_ = null;
+        	UCA_.init();
+        }
+        catch (Exception e)
+        {
+        	e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    } 
+    
+    // package private constructors ------------------------------------------
+    
+    /**
+    * <p>Private contructor for use by subclasses. 
+    * Public access to creating Collators is handled by the API 
+    * Collator.getInstance() or RuleBasedCollator(String rules).
+    * </p>
+    * <p>
+    * This constructor constructs the UCA collator internally
+    * </p>
+    * @draft 2.2
+    */
+    RuleBasedCollator() 
+    {
+        initUtility();
+    }
+    
+    // package private methods -----------------------------------------------
+    
+    /**
+     * Sets this collator to use the tables in UCA. Note options not taken
+     * care of here.
+     */
+    final void setWithUCATables()
+    {
+        m_contractionOffset_ = UCA_.m_contractionOffset_;
+        m_expansionOffset_ = UCA_.m_expansionOffset_;
+        m_expansion_ = UCA_.m_expansion_;
+        m_contractionIndex_ = UCA_.m_contractionIndex_;
+        m_contractionCE_ = UCA_.m_contractionCE_;
+        m_trie_ = UCA_.m_trie_;
+        m_expansionEndCE_ = UCA_.m_expansionEndCE_;
+	    m_expansionEndCEMaxSize_ = UCA_.m_expansionEndCEMaxSize_;
+	    m_unsafe_ = UCA_.m_unsafe_;
+	    m_contractionEnd_ = UCA_.m_contractionEnd_;
+	    m_minUnsafe_ = UCA_.m_minUnsafe_; 
+        m_minContractionEnd_ = UCA_.m_minContractionEnd_;
+    }
+    
+    /**
+     * Sets this collator to use the all options and tables in UCA. 
+     */
+    final void setWithUCAData()
+    {
+    	m_addition3_ = UCA_.m_addition3_;
+    	m_bottom3_ = UCA_.m_bottom3_;
+    	m_bottomCount3_ = UCA_.m_bottomCount3_;
+    	m_caseFirst_ = UCA_.m_caseFirst_;
+    	m_caseSwitch_ = UCA_.m_caseSwitch_;
+    	m_common3_ = UCA_.m_common3_;
+    	m_contractionOffset_ = UCA_.m_contractionOffset_;
+    	setDecomposition(UCA_.getDecomposition());
+    	m_defaultCaseFirst_ = UCA_.m_defaultCaseFirst_;
+    	m_defaultDecomposition_ = UCA_.m_defaultDecomposition_;
+    	m_defaultIsAlternateHandlingShifted_ 
+    	                           = UCA_.m_defaultIsAlternateHandlingShifted_;
+    	m_defaultIsCaseLevel_ = UCA_.m_defaultIsCaseLevel_;
+    	m_defaultIsFrenchCollation_ = UCA_.m_defaultIsFrenchCollation_;
+    	m_defaultIsHiragana4_ = UCA_.m_defaultIsHiragana4_;
+    	m_defaultStrength_ = UCA_.m_defaultStrength_;
+    	m_defaultVariableTopValue_ = UCA_.m_defaultVariableTopValue_;
+    	m_expansionOffset_ = UCA_.m_expansionOffset_;
+    	m_isAlternateHandlingShifted_ = UCA_.m_isAlternateHandlingShifted_;
+    	m_isCaseLevel_ = UCA_.m_isCaseLevel_;
+    	m_isFrenchCollation_ = UCA_.m_isFrenchCollation_;
+    	m_isHiragana4_ = UCA_.m_isHiragana4_;
+    	m_isJamoSpecial_ = UCA_.m_isJamoSpecial_;
+    	m_isSimple3_ = UCA_.m_isSimple3_;
+    	m_mask3_ = UCA_.m_mask3_;
+    	m_minContractionEnd_ = UCA_.m_minContractionEnd_;
+    	m_minUnsafe_ = UCA_.m_minUnsafe_;
+    	m_rules_ = UCA_.m_rules_;
+    	setStrength(UCA_.getStrength());
+    	m_top3_ = UCA_.m_top3_;
+    	m_topCount3_ = UCA_.m_topCount3_;
+    	m_variableTopValue_ = UCA_.m_variableTopValue_;
+    	setWithUCATables();
+    }
+    
+    /**
+     * Test whether a char character is potentially "unsafe" for use as a 
+     * collation starting point. "Unsafe" characters are combining marks or 
+     * those belonging to some contraction sequence from the offset 1 onwards.
+     * E.g. if "ABC" is the only contraction, then 'B' and 
+     * 'C' are considered unsafe. If we have another contraction "ZA" with 
+     * the one above, then 'A', 'B', 'C' are "unsafe" but 'Z' is not. 
+     * @param ch character to determin
+     * @return true if ch is unsafe, false otherwise
+     */
+	final boolean isUnsafe(char ch) 
+	{
+    	if (ch < m_minUnsafe_) {
+	        return false;
+	    }
+	
+	    if (ch >= (HEURISTIC_SIZE_ << HEURISTIC_SHIFT_)) {
+	      	if (UTF16.isLeadSurrogate(ch) || UTF16.isTrailSurrogate(ch)) {
+	            //  Trail surrogate are always considered unsafe.
+	            return true;
+	        }
+	        ch &= HEURISTIC_OVERFLOW_MASK_;
+	        ch += HEURISTIC_OVERFLOW_OFFSET_;
+	    }
+	    int value = m_unsafe_[ch >> HEURISTIC_SHIFT_];
+	    return ((value >> (ch & HEURISTIC_MASK_)) & 1) != 0;
+	}
+	
+	/**
+	 * Approximate determination if a char character is at a contraction end.
+	 * Guaranteed to be true if a character is at the end of a contraction,
+	 * otherwise it is not deterministic.
+	 * @param ch character to be determined
+	 */
+	final boolean isContractionEnd(char ch) 
+	{
+		if (UTF16.isTrailSurrogate(ch)) {
+      		return true;
+		}
+
+    	if (ch < m_minContractionEnd_) {
+        	return false;
+    	}
+
+   		if (ch >= (HEURISTIC_SIZE_ << HEURISTIC_SHIFT_)) {
+        	ch &= HEURISTIC_OVERFLOW_MASK_;
+        	ch += HEURISTIC_OVERFLOW_OFFSET_;
+    	}
+    	int value = m_contractionEnd_[ch >> HEURISTIC_SHIFT_];
+	    return ((value >> (ch & HEURISTIC_MASK_)) & 1) != 0;
+	}
+	
+	/**
+	 * Retrieve the tag of a special ce
+	 * @param ce ce to test
+	 * @return tag of ce
+	 */
+	static int getTag(int ce) 
+	{
+		return (ce & CE_TAG_MASK_) >> CE_TAG_SHIFT_;
+	}
+    
+    /** 
+	 * Checking if ce is special
+	 * @param ce to check
+	 * @return true if ce is special
+	 */
+	static boolean isSpecial(int ce)
+	{
+		return (ce & CE_SPECIAL_FLAG_) == CE_SPECIAL_FLAG_; 
+	}
+
+    /**
+     * Checks if the argument ce is a continuation
+     * @param ce collation element to test
+     * @return true if ce is a continuation
+     */
+    static final boolean isContinuation(int ce) 
+    {
+        return ce != CollationElementIterator.NULLORDER 
+                       && (ce & CE_CONTINUATION_TAG_) == CE_CONTINUATION_TAG_;
+    }
+    
+    // protected constructor -------------------------------------------------
+  
+    /**
+     * Constructors a RuleBasedCollator from the argument locale.
+     * If no resource bundle is associated with the locale, UCA is used 
+     * instead.
+     * @param locale
+     * @exception Exception thrown when there's an error creating the Collator
+     */
+    RuleBasedCollator(Locale locale) // throws Exception
+    {
+        ResourceBundle rb = ICULocaleData.getLocaleElements(locale);
+	    initUtility();
+	    if (rb != null) {
+            try {
+                Object elements = rb.getObject("CollationElements");
+                if (elements != null) {
+                    Object[][] rules = (Object[][])elements;
+                    m_rules_ = (String)rules[1][1];
+                    // %%CollationBin
+                    byte map[] = (byte [])rules[0][1];
+                    BufferedInputStream input = 
+        			                         new BufferedInputStream(
+                                                new ByteArrayInputStream(map));
+        			CollatorReader reader = new CollatorReader(input, false);
+        			if (map.length > MIN_BINARY_DATA_SIZE_) {
+        			    reader.read(this, null);
+        		    } 
+        		    else {
+        			    reader.readHeader(this);
+        			    reader.readOptions(this);
+        			    // duplicating UCA_'s data
+        			    setWithUCATables();
+                    } 
+                    init();
+                    return;
+                }
+            }
+            catch (Exception e) {
+                 // if failed use UCA.
+            }
+	    }
+	    setWithUCAData();
+    } 
+    
+    // private inner classes ------------------------------------------------
+    
+    // private variables -----------------------------------------------------
+
+    /**
+     * The smallest natural unsafe or contraction end char character before 
+     * tailoring.
+     * This is a combining mark.
+     */
+    private static final int DEFAULT_MIN_HEURISTIC_ = 0x300;
+    /** 
+     * Heuristic table table size. Size is 32 bytes, 1 bit for each 
+     * latin 1 char, and some power of two for hashing the rest of the chars.   
+     * Size in bytes.                               
+     */
+	private static final char HEURISTIC_SIZE_ = 1056;
+    /** 
+     * Mask value down to "some power of two" - 1,
+     * number of bits, not num of bytes.
+     */
+	private static final char HEURISTIC_OVERFLOW_MASK_ = 0x1fff;
+	/**
+	 * Unsafe character shift
+	 */
+	private static final int HEURISTIC_SHIFT_ = 3;
+	/**
+	 * Unsafe character addition for character too large, it has to be folded
+	 * then incremented.
+	 */
+	private static final char HEURISTIC_OVERFLOW_OFFSET_ = 256;
+	/** 
+     * Mask value to get offset in heuristic table.
+     */
+	private static final char HEURISTIC_MASK_ = 7;
+	
+	private int m_caseSwitch_;
+    private int m_common3_;
+    private int m_mask3_;
+    /** 
+     * When switching case, we need to add or subtract different values.
+     */
+    private int m_addition3_; 
+    /** 
+     * Upper range when compressing 
+     */
+    private int m_top3_;
+    /** 
+     * Upper range when compressing 
+     */ 
+    private int m_bottom3_; 
+    private int m_topCount3_;
+    private int m_bottomCount3_;	
+	/**
+	 * Case first constants
+	 */
+	private static final int CASE_SWITCH_ = 0xC0;
+	private static final int NO_CASE_SWITCH_ = 0;
+	/**
+	 * Case level constants
+	 */
+	private static final int CE_REMOVE_CASE_ = 0x3F;
+	private static final int CE_KEEP_CASE_ = 0xFF;
+	/**
+	 * Case strength mask
+	 */
+	private static final int CE_CASE_MASK_3_ = 0xFF;
+	/** 
+	 * Sortkey size factor. Values can be changed.
+	 */
+	private static final double PROPORTION_2_ = 0.5;
+	private static final double PROPORTION_3_ = 0.667;
+
+	// These values come from the UCA ----------------------------------------
+	
+	/** 
+	 * This is an enum that lists magic special byte values from the 
+	 * fractional UCA 
+	 */
+	private static final byte BYTE_ZERO_ = 0x0;
+    private static final byte BYTE_LEVEL_SEPARATOR_ = (byte)0x01;
+    private static final byte BYTE_SORTKEY_GLUE_ = (byte)0x02;
+    private static final byte BYTE_SHIFT_PREFIX_ = (byte)0x03;
+    private static final byte BYTE_UNSHIFTED_MIN_ = BYTE_SHIFT_PREFIX_;
+    private static final byte BYTE_FIRST_UCA_ = BYTE_COMMON_;
+    private static final byte BYTE_LAST_LATIN_PRIMARY_ = (byte)0x4C;
+    private static final byte BYTE_FIRST_NON_LATIN_PRIMARY_ = (byte)0x4D;
+    private static final byte BYTE_UNSHIFTED_MAX_ = (byte)0xFF;
+	private static final int TOTAL_2_ = COMMON_TOP_2_ - COMMON_BOTTOM_2_ - 1; 
+	private static final int FLAG_BIT_MASK_CASE_SWITCH_OFF_ = 0x80;
+	private static final int FLAG_BIT_MASK_CASE_SWITCH_ON_ = 0x40;
+	private static final int COMMON_TOP_CASE_SWITCH_OFF_3_ = 0x85;
+	private static final int COMMON_TOP_CASE_SWITCH_LOWER_3_ = 0x45;
+	private static final int COMMON_TOP_CASE_SWITCH_UPPER_3_ = 0xC5;
+	private static final int COMMON_BOTTOM_3_ = 0x05;
+	private static final int COMMON_BOTTOM_CASE_SWITCH_UPPER_3_ = 0x86;
+	private static final int COMMON_BOTTOM_CASE_SWITCH_LOWER_3_ = 
+                                                              COMMON_BOTTOM_3_;
+	private static final int TOP_COUNT_2_ = (int)(PROPORTION_2_ * TOTAL_2_);
+	private static final int BOTTOM_COUNT_2_ = TOTAL_2_ - TOP_COUNT_2_;
+	private static final int COMMON_2_ = COMMON_BOTTOM_2_;
+	private static final int COMMON_UPPER_FIRST_3_ = 0xC5;
+	private static final int COMMON_NORMAL_3_ = COMMON_BOTTOM_3_;
+	private static final int COMMON_4_ = (byte)0xFF;
+	
+	/**
+	 * Minimum size required for the binary collation data in bytes.
+	 * Size of UCA header + size of options to 4 bytes
+	 */
+	private static final int MIN_BINARY_DATA_SIZE_ = (42 + 8) << 2;     
+	
+	/**
+	 * If this collator is to generate only simple tertiaries for fast path
+	 */
+	private boolean m_isSimple3_;
+	
+	/**
+     * French collation sorting flag
+     */
+    private boolean m_isFrenchCollation_;
+    /**
+     * Flag indicating if shifted is requested for Quaternary alternate
+     * handling. If this is not true, the default for alternate handling will
+     * be non-ignorable.
+     */
+    private boolean m_isAlternateHandlingShifted_; 
+    /** 
+     * Extra case level for sorting
+     */
+    private boolean m_isCaseLevel_;
+	
+	private static final int SORT_BUFFER_INIT_SIZE_ = 128;
+	private static final int SORT_BUFFER_INIT_SIZE_1_ = 
+													SORT_BUFFER_INIT_SIZE_ << 3;
+	private static final int SORT_BUFFER_INIT_SIZE_2_ = SORT_BUFFER_INIT_SIZE_;
+	private static final int SORT_BUFFER_INIT_SIZE_3_ = SORT_BUFFER_INIT_SIZE_;
+	private static final int SORT_BUFFER_INIT_SIZE_CASE_ = 
+												SORT_BUFFER_INIT_SIZE_ >> 2;
+	private static final int SORT_BUFFER_INIT_SIZE_4_ = SORT_BUFFER_INIT_SIZE_;
+    
+    private static final int CE_CONTINUATION_TAG_ = 0xC0;
+	private static final int CE_REMOVE_CONTINUATION_MASK_ = 0xFFFFFF3F;
+
+	private static final int LAST_BYTE_MASK_ = 0xFF;
+	
+	private static final int CE_RESET_TOP_VALUE_ = 0x9F000303;
+	private static final int CE_NEXT_TOP_VALUE_ = 0xE8960303;
+
+	private static final byte SORT_CASE_BYTE_START_ = (byte)0x80;
+	private static final byte SORT_CASE_SHIFT_START_ = (byte)7;
+	
+	private static final byte SORT_LEVEL_TERMINATOR_ = 1;
+	
+	/**
+	 * CE buffer size
+	 */
+	private static final int CE_BUFFER_SIZE_ = 512;
+    
+    /**
+     * Bunch of utility iterators
+     */
+    private StringCharacterIterator m_srcUtilIter_;
+    private CollationElementIterator m_srcUtilColEIter_;   
+    private StringCharacterIterator m_tgtUtilIter_;
+    private CollationElementIterator m_tgtUtilColEIter_;
+    /**
+     * Utility comparison flags
+     */
+    private boolean m_utilCompare0_;
+    private boolean m_utilCompare1_;
+    private boolean m_utilCompare2_;
+    private boolean m_utilCompare3_;
+    private boolean m_utilCompare4_;
+    private boolean m_utilCompare5_; 
+    /**
+     * Utility byte buffer
+     */
+    private byte m_utilBytes0_[];
+    private byte m_utilBytes1_[];
+    private byte m_utilBytes2_[];
+    private byte m_utilBytes3_[];
+    private byte m_utilBytes4_[];
+    private byte m_utilBytes5_[];
+    
+    private int m_utilBytesCount0_;
+    private int m_utilBytesCount1_;
+    private int m_utilBytesCount2_;
+    private int m_utilBytesCount3_;
+    private int m_utilBytesCount4_;
+    private int m_utilBytesCount5_;
+    private int m_utilCount0_;
+    private int m_utilCount1_;
+    private int m_utilCount2_;
+    private int m_utilCount3_;
+    private int m_utilCount4_;
+    private int m_utilCount5_;
+    
+    private int m_utilFrenchStart_; 
+    private int m_utilFrenchEnd_;
+    
+    /** 
+     * Preparing the CE buffers. will be filled during the primary phase
+     */
+    private int m_srcUtilCEBuffer_[]; 
+    private int m_tgtUtilCEBuffer_[];
+    private int m_srcUtilCEBufferSize_;
+    private int m_tgtUtilCEBufferSize_;
+    
+    private int m_srcUtilContOffset_;
+    private int m_tgtUtilContOffset_;
+    
+    private int m_srcUtilOffset_;
+    private int m_tgtUtilOffset_;
+    
+    // private methods -------------------------------------------------------
+    
+    /**
+     * Gets the 2 bytes of primary order and adds it to the primary byte array
+     * @param ce current ce
+     * @param notIsContinuation flag indicating if the current bytes belong to 
+     * 			a continuation ce
+     * @param doShift flag indicating if ce is to be shifted
+     * @param leadPrimary lead primary used for compression
+     * @param commonBottom4 common byte value for Quaternary
+     * @param bottomCount4 smallest byte value for Quaternary
+     * @return the new lead primary for compression
+     */
+    private final int doPrimaryBytes(int ce, boolean notIsContinuation, 
+    						      boolean doShift, int leadPrimary,
+    						      int commonBottom4, int bottomCount4)
+    {
+    	
+    	int p2 = (ce >>= 16) & LAST_BYTE_MASK_; // in ints for unsigned 
+        int p1 = ce >>> 8;  // comparison
+    	if (doShift) {
+    		if (m_utilCount4_ > 0) {
+            	while (m_utilCount4_ > bottomCount4) {
+            		m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+            				             (byte)(commonBottom4 + bottomCount4));
+                    m_utilBytesCount4_ ++;
+           			m_utilCount4_ -= bottomCount4;
+           		}
+           		m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+							           (byte)(commonBottom4 
+                                              + (m_utilCount4_ - 1)));
+                m_utilBytesCount4_ ++;
+           		m_utilCount4_ = 0;
+        	}
+        	// dealing with a variable and we're treating them as shifted
+            // This is a shifted ignorable
+            if (p1 != 0) { 
+             	// we need to check this since we could be in continuation
+             	m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_, 
+                                       (byte)p1);
+                m_utilBytesCount4_ ++;
+            }
+            if (p2 != 0) {
+            	m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_, 
+                                       (byte)p2);
+                m_utilBytesCount4_ ++;
+            }
+        } 
+        else {
+        	// Note: This code assumes that the table is well built 
+        	// i.e. not having 0 bytes where they are not supposed to be.
+       		// Usually, we'll have non-zero primary1 & primary2, except 
+      		// in cases of LatinOne and friends, when primary2 will be
+       		// regular and simple sortkey calc 
+       		if (p1 != CollationElementIterator.IGNORABLE) {
+           		if (notIsContinuation) {
+           			if (leadPrimary == p1) {
+               			m_utilBytes1_ = append(m_utilBytes1_, 
+                                               m_utilBytesCount1_, (byte)p2);
+                        m_utilBytesCount1_ ++;
+           			} 
+                  	else {
+                    	if (leadPrimary != 0) {
+                    		m_utilBytes1_ = append(m_utilBytes1_, 
+                                                   m_utilBytesCount1_, 
+                    				(byte)((p1 > leadPrimary) 
+                    						? BYTE_UNSHIFTED_MAX_ 
+                      						: BYTE_UNSHIFTED_MIN_));
+                            m_utilBytesCount1_ ++;
+                    	}
+                    	if (p2 == CollationElementIterator.IGNORABLE) {
+                    		// one byter, not compressed
+                        	m_utilBytes1_ = append(m_utilBytes1_, 
+                                                   m_utilBytesCount1_, 
+                                                   (byte)p1);
+                            m_utilBytesCount1_ ++;
+                        	leadPrimary = 0;
+                    	} 
+                    	else if (p1 < BYTE_FIRST_NON_LATIN_PRIMARY_
+                    		  || (p1 
+                    > (RuleBasedCollator.UCA_CONSTANTS_.LAST_NON_VARIABLE_[0] 
+                                                                 >>> 24)
+                    			&& p1 
+                    < (RuleBasedCollator.UCA_CONSTANTS_.FIRST_IMPLICIT_[0] 
+                                                                    >>> 24))) {
+                    			// not compressible
+                        		leadPrimary = 0;
+                        		m_utilBytes1_ = append(m_utilBytes1_, 
+                                                       m_utilBytesCount1_, 
+                                                       (byte)p1);
+                                m_utilBytesCount1_ ++;
+                        		m_utilBytes1_ = append(m_utilBytes1_, 
+                                                       m_utilBytesCount1_, 
+                                                       (byte)p2);
+                                m_utilBytesCount1_ ++;
+                    	} 
+                    	else { // compress
+                    		leadPrimary = p1;
+                        	m_utilBytes1_ = append(m_utilBytes1_, 
+                                                   m_utilBytesCount1_, 
+                                                   (byte)p1);
+                        	m_utilBytesCount1_ ++;
+                            m_utilBytes1_ = append(m_utilBytes1_, 
+                                                  m_utilBytesCount1_, (byte)p2);
+                            m_utilBytesCount1_ ++;
+                    	}
+                  	}
+                } 
+                else { 
+                	// continuation, add primary to the key, no compression
+                  	m_utilBytes1_ = append(m_utilBytes1_, 
+                                           m_utilBytesCount1_, (byte)p1);
+                    m_utilBytesCount1_ ++;
+                  	if (p2 != CollationElementIterator.IGNORABLE) {
+                    	m_utilBytes1_ = append(m_utilBytes1_, 
+                                           m_utilBytesCount1_, (byte)p2); 
+                        // second part
+                        m_utilBytesCount1_ ++;
+                  	}
+                }
+            }
+       	}
+       	return leadPrimary;
+    }
+    
+    /**
+     * Gets the secondary byte and adds it to the secondary byte array
+     * @param ce current ce
+     * @param notIsContinuation flag indicating if the current bytes belong to 
+     * 			a continuation ce
+     * @param doFrench flag indicator if french sort is to be performed
+     */
+    private final void doSecondaryBytes(int ce, boolean notIsContinuation,
+    						 		    boolean doFrench)
+    {
+    	int s = (ce >>= 8) & LAST_BYTE_MASK_; // int for comparison
+    	if (s != 0) {
+    		if (!doFrench) {
+                // This is compression code.
+                if (s == COMMON_2_ && notIsContinuation) {
+                   m_utilCount2_ ++;
+                } 
+                else {
+                  	if (m_utilCount2_ > 0) {
+                    	if (s > COMMON_2_) { // not necessary for 4th level.
+                    		while (m_utilCount2_ > TOP_COUNT_2_) {
+                        		m_utilBytes2_ = append(m_utilBytes2_,
+                                        m_utilBytesCount2_,
+                        				(byte)(COMMON_TOP_2_ - TOP_COUNT_2_));
+                                m_utilBytesCount2_ ++;
+                        		m_utilCount2_ -= TOP_COUNT_2_;
+                      		}
+                      		m_utilBytes2_ = append(m_utilBytes2_,
+                                                   m_utilBytesCount2_,
+                      				               (byte)(COMMON_TOP_2_ 
+                                                       - (m_utilCount2_ - 1)));
+                            m_utilBytesCount2_ ++;
+                    	} 
+                    	else {
+                    		while (m_utilCount2_ > BOTTOM_COUNT_2_) {
+                        		m_utilBytes2_ = append(m_utilBytes2_,
+                                                       m_utilBytesCount2_,
+                        			(byte)(COMMON_BOTTOM_2_ + BOTTOM_COUNT_2_));
+                                m_utilBytesCount2_ ++;
+                        		m_utilCount2_ -= BOTTOM_COUNT_2_;
+                      		}
+                      		m_utilBytes2_ = append(m_utilBytes2_,
+                                                   m_utilBytesCount2_,
+                      				               (byte)(COMMON_BOTTOM_2_ 
+                                                       + (m_utilCount2_ - 1)));
+                            m_utilBytesCount2_ ++;
+                    	}
+                    	m_utilCount2_ = 0;
+                  	}
+                  	m_utilBytes2_ = append(m_utilBytes2_, m_utilBytesCount2_, 
+                                           (byte)s);
+                    m_utilBytesCount2_ ++;
+                }
+            } 
+            else {
+                  m_utilBytes2_ = append(m_utilBytes2_, m_utilBytesCount2_, 
+                                         (byte)s);
+                  m_utilBytesCount2_ ++;
+                  // Do the special handling for French secondaries
+                  // We need to get continuation elements and do intermediate 
+                  // restore 
+                  // abc1c2c3de with french secondaries need to be edc1c2c3ba 
+                  // NOT edc3c2c1ba
+                  if (notIsContinuation) {
+                    	if (m_utilFrenchStart_ != -1) {
+                        	// reverse secondaries from frenchStartPtr up to 
+                        	// frenchEndPtr
+                      		reverseBuffer(m_utilBytes2_);
+                      		m_utilFrenchStart_ = -1; 
+                    	}
+                  } 
+                  else {
+                    	if (m_utilFrenchStart_ == -1) {
+                      		m_utilFrenchStart_  = m_utilBytesCount2_ - 2;
+                    	}
+                    	m_utilFrenchEnd_ = m_utilBytesCount2_ - 1;
+                  }
+        	}
+    	}
+    }
+    
+    /**
+     * Reverse the argument buffer 
+     * @param buffer to reverse
+     */
+    private void reverseBuffer(byte buffer[]) 
+    { 
+    	int start = m_utilFrenchStart_;
+    	int end = m_utilFrenchEnd_;
+    	while (start < end) { 
+    		byte b = buffer[start]; 
+    		buffer[start ++] = buffer[end]; 
+    		buffer[end --] = b; 
+    	}
+	}
+
+	/**
+	 * Insert the case shifting byte if required
+	 * @param caseshift value
+	 * @return new caseshift value
+	 */
+	private final int doCaseShift(int caseshift) 
+	{
+  		if (caseshift  == 0) {
+    		m_utilBytes0_ = append(m_utilBytes0_, m_utilBytesCount0_, 
+                                   SORT_CASE_BYTE_START_);
+            m_utilBytesCount0_ ++;
+    		caseshift = SORT_CASE_SHIFT_START_;
+  		}
+  		return caseshift;
+	}
+
+	/**
+	 * Performs the casing sort
+	 * @param tertiary byte in ints for easy comparison
+	 * @param notIsContinuation flag indicating if the current bytes belong to 
+     * 			a continuation ce
+	 * @param caseshift
+	 * @return the new value of case shift
+	 */
+	private final int doCaseBytes(int tertiary, boolean notIsContinuation, 
+							      int caseshift)
+	{
+		caseshift = doCaseShift(caseshift);
+              		
+        if (notIsContinuation && tertiary != 0) {
+        	byte casebits = (byte)(tertiary & 0xC0);
+            if (m_caseFirst_ == AttributeValue.UPPER_FIRST_) {
+                if (casebits == 0) {
+                    m_utilBytes0_[m_utilBytesCount0_ - 1] 
+                                                      |= (1 << (-- caseshift));
+                } 
+                else {
+                     // second bit
+                     caseshift = doCaseShift(caseshift - 1);
+                     m_utilBytes0_[m_utilBytesCount0_ - 1] 
+                                    |= ((casebits >> 6) & 1) << (-- caseshift);
+                } 
+            }
+            else {
+                if (casebits != 0) {
+                    m_utilBytes0_[m_utilBytesCount0_ - 1] 
+                                                        |= 1 << (-- caseshift);
+                    // second bit
+                    caseshift = doCaseShift(caseshift);
+                    m_utilBytes0_[m_utilBytesCount0_ - 1] 
+                                  |= ((casebits >> 7) & 1) << (-- caseshift);
+                }
+                else {
+                    caseshift --;
+                }
+            }
+        }
+             
+		return caseshift;
+	}
+	
+	/**
+	 * Gets the tertiary byte and adds it to the tertiary byte array
+     * @param tertiary byte in int for easy comparison
+     * @param notIsContinuation flag indicating if the current bytes belong to 
+     * 			a continuation ce
+	 */
+	private final void doTertiaryBytes(int tertiary, boolean notIsContinuation)
+	{
+		if (tertiary != 0) {
+			// This is compression code.
+            // sequence size check is included in the if clause
+            if (tertiary == m_common3_ && notIsContinuation) {
+                 m_utilCount3_ ++;
+            } 
+            else {
+            	int common3 = m_common3_ & LAST_BYTE_MASK_;
+                if (tertiary > common3 && m_common3_ == COMMON_NORMAL_3_) {
+                    tertiary += m_addition3_;
+                }
+                else if (tertiary <= common3 
+                         && m_common3_ == COMMON_UPPER_FIRST_3_) {
+                    tertiary -= m_addition3_;
+                }
+                if (m_utilCount3_ > 0) {
+                	if (tertiary > common3) {
+                		while (m_utilCount3_ > m_topCount3_) {
+                        	m_utilBytes3_ = append(m_utilBytes3_, 
+                                                   m_utilBytesCount3_,
+                        					(byte)(m_top3_ - m_topCount3_));
+                            m_utilBytesCount3_ ++;
+                        	m_utilCount3_ -= m_topCount3_;
+                      	}
+                      	m_utilBytes3_ = append(m_utilBytes3_, 
+                                               m_utilBytesCount3_,
+                        		               (byte)(m_top3_ 
+                                                      - (m_utilCount3_ - 1)));
+                        m_utilBytesCount3_ ++;
+                 	} 
+                 	else {
+                 		while (m_utilCount3_ > m_bottomCount3_) {
+                        	m_utilBytes3_ = append(m_utilBytes3_, 
+                                                   m_utilBytesCount3_,
+                       		             (byte)(m_bottom3_ + m_bottomCount3_));
+                            m_utilBytesCount3_ ++;
+                        	m_utilCount3_ -= m_bottomCount3_;
+                      	}
+                      	m_utilBytes3_ = append(m_utilBytes3_, 
+                                               m_utilBytesCount3_,
+                        		               (byte)(m_bottom3_ 
+                                                      + (m_utilCount3_ - 1)));
+                        m_utilBytesCount3_ ++;
+                    }
+                    m_utilCount3_ = 0;
+                }
+                m_utilBytes3_ = append(m_utilBytes3_, m_utilBytesCount3_, 
+                                       (byte)tertiary);
+                m_utilBytesCount3_ ++;
+            }
+        }
+	}
+	
+	/**
+	 * Gets the Quaternary byte and adds it to the Quaternary byte array
+     * @param isCodePointHiragana flag indicator if the previous codepoint 
+     * 			we dealt with was Hiragana
+     * @param commonBottom4 smallest common Quaternary byte 
+     * @param bottomCount4 smallest Quaternary byte 
+     * @param hiragana4 hiragana Quaternary byte
+	 */
+	private final void doQuaternaryBytes(boolean isCodePointHiragana,
+									  int commonBottom4, int bottomCount4,
+									  byte hiragana4)
+	{
+		if (isCodePointHiragana) { // This was Hiragana, need to note it
+			if (m_utilCount4_ > 0) { // Close this part
+            	while (m_utilCount4_ > bottomCount4) {
+                    m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_, 
+                                           (byte)(commonBottom4 
+                    									+ bottomCount4));
+                    m_utilBytesCount4_ ++;
+                    m_utilCount4_ -= bottomCount4;
+                }
+                m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_, 
+                                      (byte)(commonBottom4 
+                                             + (m_utilCount4_ - 1)));
+                m_utilBytesCount4_ ++;
+                m_utilCount4_ = 0;
+            }
+            m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_, 
+                                   hiragana4); // Add the Hiragana
+            m_utilBytesCount4_ ++;
+        } 
+        else { // This wasn't Hiragana, so we can continue adding stuff
+            m_utilCount4_ ++;
+        }
+	}
+	
+	/**
+	 * Iterates through the argument string for all ces.
+	 * Split the ces into their relevant primaries, secondaries etc.
+	 * @param source normalized string
+	 * @param doFrench flag indicator if special handling of French has to be
+	 * 					done
+	 * @param hiragana4 offset for Hiragana quaternary
+	 * @param commonBottom4 smallest common quaternary byte
+	 * @param bottomCount4 smallest quaternary byte
+	 */
+	private final void getSortKeyBytes(String source, boolean doFrench,
+									   byte hiragana4, int commonBottom4, 
+									   int bottomCount4)
+									   
+	{
+		int backupDecomposition = getDecomposition();
+		setDecomposition(NO_DECOMPOSITION); // have to revert to backup later
+    	m_srcUtilIter_.setText(source);
+        m_srcUtilColEIter_.setText(m_srcUtilIter_);
+    	m_utilFrenchStart_ = -1; 
+        m_utilFrenchEnd_ = -1;
+    	
+    	// scriptorder not implemented yet 
+    	// const uint8_t *scriptOrder = coll->scriptOrder;
+
+		boolean doShift = false;
+    	boolean notIsContinuation = false;
+
+    	int leadPrimary = 0; // int for easier comparison
+    	int caseShift = 0;
+	    
+    	while (true) {
+        	int ce = m_srcUtilColEIter_.next();
+            if (ce == CollationElementIterator.NULLORDER) {
+            	break;
+            }
+
+            if (ce == CollationElementIterator.IGNORABLE) {
+            	continue;
+            }
+
+            notIsContinuation = !isContinuation(ce);
+
+            /*
+             * if (notIsContinuation) {
+            		if (scriptOrder != NULL) {
+                		primary1 = scriptOrder[primary1];
+              		}
+            	}*/
+            boolean isPrimaryByteIgnorable = (ce & CE_PRIMARY_MASK_) == 0;
+            // actually we can just check that the first byte is 0
+            // generation stuffs the order left first
+            boolean isSmallerThanVariableTop = (ce >>> CE_PRIMARY_SHIFT_) 
+                                               <= m_variableTopValue_;
+            doShift = (m_isAlternateHandlingShifted_ 
+            			&& ((notIsContinuation && isSmallerThanVariableTop 
+    						&& !isPrimaryByteIgnorable) // primary byte not 0
+    					|| (!notIsContinuation && doShift)) 
+    					|| (doShift && isPrimaryByteIgnorable));
+            if (doShift && isPrimaryByteIgnorable) {
+    			// amendment to the UCA says that primary ignorables and other 
+    			// ignorables should be removed if following a shifted code 
+    			// point
+                // if we were shifted and we got an ignorable code point
+                // we should just completely ignore it
+                continue; 
+            } 
+			leadPrimary = doPrimaryBytes(ce, notIsContinuation, doShift, 
+                                         leadPrimary, commonBottom4, 
+                                         bottomCount4);
+            if (doShift) {
+                continue;
+            }
+			if (m_utilCompare2_) {
+        		doSecondaryBytes(ce, notIsContinuation,	doFrench);
+			}
+
+			int t = ce & LAST_BYTE_MASK_;
+			if (!notIsContinuation) {
+              	t = ce & CE_REMOVE_CONTINUATION_MASK_;
+            }
+            	
+            if (m_utilCompare0_) {
+              	caseShift = doCaseBytes(t, notIsContinuation, caseShift);
+            }
+            else if (notIsContinuation) {
+                 t ^= m_caseSwitch_;
+            }
+
+            t &= m_mask3_;
+              	
+            if (m_utilCompare3_) {
+            	doTertiaryBytes(t, notIsContinuation);
+            }
+                
+            if (m_utilCompare4_ && notIsContinuation) { // compare quad
+                doQuaternaryBytes(m_srcUtilColEIter_.m_isCodePointHiragana_, 
+                			 	  commonBottom4, bottomCount4, hiragana4);
+            }
+        }
+        setDecomposition(backupDecomposition); // reverts to original	
+        if (m_utilFrenchStart_ != -1) {
+        	// one last round of checks
+    		reverseBuffer(m_utilBytes2_);
+  		}
+	}
+	
+	/**
+	 * From the individual strength byte results the final compact sortkey 
+	 * will be calculated.
+	 * @param source text string
+	 * @param doFrench flag indicating that special handling of French has to 
+	 * 					be done
+	 * @param commonBottom4 smallest common quaternary byte
+	 * @param bottomCount4 smallest quaternary byte
+	 * @return the compact sortkey
+	 */
+	private final byte[] getSortKey(String source, boolean doFrench, 
+									int commonBottom4, int bottomCount4)
+	{
+		// we have done all the CE's, now let's put them together to form 
+      	// a key 
+      	if (m_utilCompare2_) {
+        	doSecondary(doFrench);
+      		if (m_utilCompare0_) {
+				doCase();        
+      		}
+      		if (m_utilCompare3_) {
+      			doTertiary();
+      			if (m_utilCompare4_) {
+      				doQuaternary(commonBottom4, bottomCount4);
+        			if (m_utilCompare5_) {
+          				doIdentical(source);
+        			}
+
+      			}
+      		}
+      	}
+      	m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_, (byte)0);
+        m_utilBytesCount1_ ++;
+        byte result[] = (byte [])m_utilBytes1_.clone();
+    	return result;
+	}
+	
+	/**
+	 * Packs the French bytes
+	 * @param count array of compression counts
+	 */
+	private final void doFrench() 
+	{
+		for (int i = 0; i < m_utilBytesCount2_; i ++) {
+			byte s = m_utilBytes2_[m_utilBytesCount2_ - i - 1];
+		    // This is compression code.
+		    if (s == COMMON_2_) {
+		        ++ m_utilCount2_;
+		    } 
+		    else {
+		      	if (m_utilCount2_ > 0) {
+		      		// getting the unsigned value
+		        	if ((s & LAST_BYTE_MASK_) > COMMON_2_) { 
+		        		// not necessary for 4th level.
+		          		while (m_utilCount2_ > TOP_COUNT_2_) {
+		            		m_utilBytes1_ = append(m_utilBytes1_,
+                                                   m_utilBytesCount1_, 
+		            					(byte)(COMMON_TOP_2_ - TOP_COUNT_2_));
+                            m_utilBytesCount1_ ++;
+		            		m_utilCount2_ -= TOP_COUNT_2_;
+		          		}
+		          		m_utilBytes1_ = append(m_utilBytes1_,
+                                               m_utilBytesCount1_, 
+                                               (byte)(COMMON_TOP_2_ 
+		          									  - (m_utilCount2_ - 1)));
+                        m_utilBytesCount1_ ++;
+		        	} 
+		        	else {
+		          		while (m_utilCount2_ > BOTTOM_COUNT_2_) {
+		            		m_utilBytes1_ = append(m_utilBytes1_,
+                                                   m_utilBytesCount1_, 
+		            			(byte)(COMMON_BOTTOM_2_ + BOTTOM_COUNT_2_));
+                            m_utilBytesCount1_ ++;
+		            		m_utilCount2_ -= BOTTOM_COUNT_2_;
+		          		}
+		          		m_utilBytes1_ = append(m_utilBytes1_,
+                                               m_utilBytesCount1_,  
+                                               (byte)(COMMON_BOTTOM_2_ 
+		          									  + (m_utilCount2_ - 1)));
+                        m_utilBytesCount1_ ++;
+		        	}
+		        	m_utilCount2_ = 0;
+		      	}
+		      	m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_, s);
+                m_utilBytesCount1_ ++;
+		    }
+		}
+		if (m_utilCount2_ > 0) {
+		    while (m_utilCount2_ > BOTTOM_COUNT_2_) {
+		      	m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_, 
+                                       (byte)(COMMON_BOTTOM_2_ 
+		      										+ BOTTOM_COUNT_2_));
+                m_utilBytesCount1_ ++;
+		      	m_utilCount2_ -= BOTTOM_COUNT_2_;
+		    }
+		    m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_, 
+                                   (byte)(COMMON_BOTTOM_2_ 
+		    										+ (m_utilCount2_ - 1)));
+            m_utilBytesCount1_ ++;
+		}
+	}
+
+	/**
+	 * Compacts the secondary bytes and stores them into the primary array
+	 * @param doFrench flag indicator that French has to be handled specially
+	 */
+	private final void doSecondary(boolean doFrench)
+	{
+		if (m_utilCount2_ > 0) {
+          	while (m_utilCount2_ > BOTTOM_COUNT_2_) {
+            	m_utilBytes2_ = append(m_utilBytes2_, m_utilBytesCount2_,
+                                       (byte)(COMMON_BOTTOM_2_ 
+            					 						+ BOTTOM_COUNT_2_));
+                m_utilBytesCount2_ ++;
+            	m_utilCount2_ -= BOTTOM_COUNT_2_;
+          	}
+          	m_utilBytes2_ = append(m_utilBytes2_, m_utilBytesCount2_,
+                                   (byte)(COMMON_BOTTOM_2_ + 
+          											(m_utilCount2_ - 1)));
+            m_utilBytesCount2_ ++;
+        }
+        
+        m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_, 
+                               SORT_LEVEL_TERMINATOR_);
+        m_utilBytesCount1_ ++;
+        
+        if (doFrench) { // do the reverse copy
+           	doFrench();
+        } 
+        else {
+        	if (m_utilBytes1_.length <= m_utilBytesCount1_
+                                        + m_utilBytesCount2_) {
+        		m_utilBytes1_ = increase(m_utilBytes1_, m_utilBytesCount1_, 
+                                         m_utilBytesCount2_);
+        	}
+           	System.arraycopy(m_utilBytes2_, 0, m_utilBytes1_, 
+                             m_utilBytesCount1_, m_utilBytesCount2_);
+            m_utilBytesCount1_ += m_utilBytesCount2_;
+        } 
+	}
+	
+	/**
+	 * Increase buffer size
+	 * @param array array of bytes
+	 * @param size of the byte array
+	 * @param incrementsize size to increase
+	 * @return the new buffer
+	 */
+	private static final byte[] increase(byte buffer[], int size, 
+										 int incrementsize)
+	{
+		byte result[] = new byte[buffer.length + incrementsize];
+		System.arraycopy(buffer, 0, result, 0, size);
+		return result;
+	}
+	
+	/**
+	 * Increase buffer size
+	 * @param array array of bytes
+	 * @param size of the byte array
+	 * @param incrementsize size to increase
+	 * @return the new buffer
+	 */
+	private static final int[] increase(int buffer[], int size, 
+										int incrementsize)
+	{
+		int result[] = new int[buffer.length + incrementsize];
+		System.arraycopy(buffer, 0, result, 0, size);
+		return result;
+	}
+	
+	/**
+	 * Compacts the case bytes and stores them into the primary array
+	 */
+	private final void doCase()
+	{
+		m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_, 
+                               SORT_LEVEL_TERMINATOR_);
+        m_utilBytesCount1_ ++;
+		if (m_utilBytes1_.length <= m_utilBytesCount1_ + m_utilBytesCount0_) {
+			m_utilBytes1_ = increase(m_utilBytes1_, m_utilBytesCount1_, 
+                                     m_utilBytesCount0_);
+		}
+		System.arraycopy(m_utilBytes0_, 0, m_utilBytes1_, m_utilBytesCount1_, 
+                         m_utilBytesCount0_);
+        m_utilBytesCount1_ += m_utilBytesCount0_;
+	}
+	
+	/**
+	 * Compacts the tertiary bytes and stores them into the primary array
+	 */
+	private final void doTertiary()
+	{
+		if (m_utilCount3_ > 0) {
+          	if (m_common3_ != COMMON_BOTTOM_3_) {
+          		while (m_utilCount3_ >= m_topCount3_) {
+              		m_utilBytes3_ = append(m_utilBytes3_, m_utilBytesCount3_,
+                                           (byte)(m_top3_ - m_topCount3_));
+                    m_utilBytesCount3_ ++;
+              		m_utilCount3_ -= m_topCount3_;
+            	}
+            	m_utilBytes3_ = append(m_utilBytes3_, m_utilBytesCount3_, 
+                                       (byte)(m_top3_ - m_utilCount3_));
+                m_utilBytesCount3_ ++;
+          	} 
+          	else {
+          		while (m_utilCount3_ > m_bottomCount3_) {
+              		m_utilBytes3_ = append(m_utilBytes3_, m_utilBytesCount3_, 
+                                           (byte)(m_bottom3_ 
+              											+ m_bottomCount3_));
+                    m_utilBytesCount3_ ++;
+              		m_utilCount3_ -= m_bottomCount3_;
+            	}
+            	m_utilBytes3_ = append(m_utilBytes3_, m_utilBytesCount3_, 
+                                       (byte)(m_bottom3_ 
+            								  + (m_utilCount3_ - 1)));
+                m_utilBytesCount3_ ++;
+          	}
+        }
+        m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_, 
+                               SORT_LEVEL_TERMINATOR_);
+        m_utilBytesCount1_ ++;
+        if (m_utilBytes1_.length <= m_utilBytesCount1_ + m_utilBytesCount3_) {
+        	m_utilBytes1_ = increase(m_utilBytes1_, m_utilBytesCount1_, 
+                                     m_utilBytesCount3_);
+        }
+        System.arraycopy(m_utilBytes3_, 0, m_utilBytes1_, m_utilBytesCount1_, 
+                         m_utilBytesCount3_);
+        m_utilBytesCount1_ += m_utilBytesCount3_;
+	}
+	
+	/**
+	 * Compacts the quaternary bytes and stores them into the primary array
+	 */
+	private final void doQuaternary(int commonbottom4, int bottomcount4)
+	{
+		if (m_utilCount4_ > 0) {
+            while (m_utilCount4_ > bottomcount4) {
+                m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_, 
+                                       (byte)(commonbottom4 + bottomcount4));
+                m_utilBytesCount4_ ++;
+                m_utilCount4_ -= bottomcount4;
+            }
+            m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_, 
+                                   (byte)(commonbottom4
+            									+ (m_utilCount4_ - 1)));
+            m_utilBytesCount4_ ++;
+        }
+        m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_, 
+                               SORT_LEVEL_TERMINATOR_);
+        m_utilBytesCount1_ ++;
+        if (m_utilBytes1_.length <= m_utilBytesCount1_ + m_utilBytesCount4_) {
+        	m_utilBytes1_ = increase(m_utilBytes1_, m_utilBytesCount1_, 
+                                     m_utilBytesCount4_);
+        }
+        System.arraycopy(m_utilBytes4_, 0, m_utilBytes1_, m_utilBytesCount1_, 
+                         m_utilBytesCount4_);
+        m_utilBytesCount1_ += m_utilBytesCount4_;
+	}
+	
+	/**
+	 * Deals with the identical sort.
+	 * Appends the BOCSU version of the source string to the ends of the
+	 * byte buffer.
+	 * @param source text string
+	 */
+	private final void doIdentical(String source)
+	{
+		int isize = BOCU.getCompressionLength(source);
+		m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_, 
+                               SORT_LEVEL_TERMINATOR_);
+        m_utilBytesCount1_ ++;
+		if (m_utilBytes1_.length <= m_utilBytesCount1_ + isize) {
+        	m_utilBytes1_ = increase(m_utilBytes1_, m_utilBytesCount1_, 
+                                     1 + isize);
+        }
+        m_utilBytesCount1_ = BOCU.compress(source, m_utilBytes1_, 
+                                           m_utilBytesCount1_); 
+	}
+	
+	/**
+	 * Gets the offset of the first unmatched characters in source and target.
+	 * This method returns the offset of the start of a contraction or a 
+	 * combining sequence, if the first difference is in the middle of such a 
+	 * sequence.
+	 * @param source string
+	 * @param target string
+	 * @return offset of the first unmatched characters in source and target.
+	 */
+	private final int getFirstUnmatchedOffset(String source, String target)
+	{
+		int result = 0;
+		int slength = source.length();
+		int tlength = target.length();
+		int minlength = slength;
+		if (minlength > tlength) {
+			minlength = tlength;
+		}
+		while (result < minlength 
+				&& source.charAt(result) == target.charAt(result)) {
+			result ++;
+	    }
+	    if (result > 0) {
+	        // There is an identical portion at the beginning of the two 
+	        // strings. If the identical portion ends within a contraction or a 
+	        // combining character sequence, back up to the start of that 
+	        // sequence.
+	        char schar = 0;
+	        char tchar = 0;
+	        if (result < minlength) {              
+	        	schar = source.charAt(result); // first differing chars   
+	        	tchar = target.charAt(result);
+	        }
+	        else {
+                schar = source.charAt(minlength - 1); 
+                if (isUnsafe(schar)) {
+                    tchar = schar;
+                }
+    	        else if (slength == tlength) {
+    	        		return result;
+    	        }
+    	        else if (slength < tlength) {
+    	        	tchar = target.charAt(result);
+    	        }
+    	        else {
+    	        	schar = source.charAt(result);
+    	        }
+	        }
+	        if (isUnsafe(schar) || isUnsafe(tchar))
+	        {
+	            // We are stopped in the middle of a contraction or combining
+	            // sequence.
+	            // Look backwards for the part of the string for the start of 
+	            // the sequence
+	            // It doesn't matter which string we scan, since they are the 
+	            // same in this region.
+	            do {
+	                result --;
+	            }
+	            while (result > 0 && isUnsafe(source.charAt(result)));
+	        }
+	    }
+	    return result;
+	}
+	
+	/**
+	 * Appending an byte to an array of bytes and increases it if we run out of 
+	 * space
+	 * @param array of byte arrays
+	 * @param appendindex index in the byte array to append
+	 * @param value to append
+     * @return array if array size can accomodate the new value, otherwise
+     *         a bigger array will be created and returned
+	 */
+	private static final byte[] append(byte array[], int appendindex, 
+                                       byte value)
+	{
+		if (appendindex + 1 >= array.length) {
+			array = increase(array,	appendindex, SORT_BUFFER_INIT_SIZE_);
+		}			
+		array[appendindex] = value;
+        return array;
+	}
+	
+	/** 
+	 * This is a trick string compare function that goes in and uses sortkeys 
+	 * to compare. It is used when compare gets in trouble and needs to bail 
+	 * out.
+	 * @param source text string
+	 * @param target text string
+	 */
+	private final int compareBySortKeys(String source, String target)
+														
+	{
+	    CollationKey sourcekey = getCollationKey(source);
+	    CollationKey targetkey = getCollationKey(target);	
+	    return sourcekey.compareTo(targetkey);
+	}
+	
+	/**
+	 * Performs the primary comparisons, and fills up the CE buffer at the
+	 * same time. 
+	 * The return value toggles between the comparison result and the hiragana
+	 * result. If either the source is greater than target or vice versa, the 
+	 * return result is the comparison result, ie 1 or -1, furthermore the
+	 * cebuffers will be cleared when that happens. If the primary comparisons
+	 * are equal, we'll have to continue with secondary comparison. In this case
+	 * the cebuffer will not be cleared and the return result will be the 
+	 * hiragana result.
+	 * @param doHiragana4 flag indicator that Hiragana Quaternary has to be 
+	 * 					observed
+	 * @param lowestpvalue the lowest primary value that will not be ignored if 
+	 * 						alternate handling is shifted
+	 * @param source text string
+	 * @param target text string
+	 * @param textoffset offset in text to start the comparison
+	 * @return comparion result if a primary difference is found, otherwise
+	 * 						hiragana result
+	 */
+	private final int doPrimaryCompare(boolean doHiragana4, int lowestpvalue,
+										String source, String target, 
+										int textoffset)
+									   	
+	{
+		// Preparing the context objects for iterating over strings
+        m_srcUtilIter_.setText(source);
+        m_srcUtilColEIter_.setText(m_srcUtilIter_, textoffset);
+        m_tgtUtilIter_.setText(target);
+        m_tgtUtilColEIter_.setText(m_tgtUtilIter_, textoffset);
+		
+		// Non shifted primary processing is quite simple
+	    if (!m_isAlternateHandlingShifted_) {
+	    	int hiraganaresult = 0;    														
+	      	while (true) {
+	      		int sorder = 0;
+				// We fetch CEs until we hit a non ignorable primary or end.
+	        	do {
+	          		sorder = m_srcUtilColEIter_.next();
+	          		m_srcUtilCEBuffer_ = append(m_srcUtilCEBuffer_, 
+                                                m_srcUtilCEBufferSize_, sorder);
+                    m_srcUtilCEBufferSize_ ++;
+	          		sorder &= CE_PRIMARY_MASK_;
+	        	} while (sorder == CollationElementIterator.IGNORABLE);
+	
+				int torder = 0;
+	        	do {
+	          		torder = m_tgtUtilColEIter_.next();
+	          		m_tgtUtilCEBuffer_ = append(m_tgtUtilCEBuffer_, 
+                                                m_tgtUtilCEBufferSize_, torder);
+                    m_tgtUtilCEBufferSize_ ++;
+	          		torder &= CE_PRIMARY_MASK_;
+	        	} while (torder == CollationElementIterator.IGNORABLE);
+	
+	        	// if both primaries are the same
+	        	if (sorder == torder) {
+	            	// and there are no more CEs, we advance to the next level
+	            	if (m_srcUtilCEBuffer_[m_srcUtilCEBufferSize_ - 1] 
+	            					== CollationElementIterator.NULLORDER) {
+	              		break;
+	            	}
+	            	if (doHiragana4 && hiraganaresult == 0 
+	            		&& m_srcUtilColEIter_.m_isCodePointHiragana_ !=
+	              						m_tgtUtilColEIter_.m_isCodePointHiragana_) {
+	              		if (m_srcUtilColEIter_.m_isCodePointHiragana_) {
+	                		hiraganaresult = -1;
+	              		}
+	              		else {
+	              			hiraganaresult = 1;
+	              		}
+	            	}
+	        	} 
+	        	else {
+	            	// if two primaries are different, we are done
+	            	return endPrimaryCompare(sorder, torder);
+	        	}
+	      	} 
+	      	// no primary difference... do the rest from the buffers
+	      	return hiraganaresult;
+	    } 
+	    else { // shifted - do a slightly more complicated processing :)
+	      	while (true) {
+	        	int sorder = getPrimaryShiftedCompareCE(m_srcUtilColEIter_, 
+                                                        lowestpvalue, true);
+				int torder = getPrimaryShiftedCompareCE(m_tgtUtilColEIter_, 
+                                                        lowestpvalue, false);
+	        	if (sorder == torder) {
+	            	if (m_srcUtilCEBuffer_[m_srcUtilCEBufferSize_ - 1] 
+	            			== CollationElementIterator.NULLORDER) {
+	              		break;
+	            	} 
+	            	else {
+	              		continue;
+	            	}
+	        	} 
+	        	else {
+	    			return endPrimaryCompare(sorder, torder);
+	        	}
+	      	} // no primary difference... do the rest from the buffers
+	    }
+		return 0;
+	}
+	
+	/**
+	 * This is used only for primary strength when we know that sorder is 
+	 * already different from torder.
+	 * Compares sorder and torder, returns -1 if sorder is less than torder.
+	 * Clears the cebuffer at the same time.
+	 * @param sorder source strength order
+	 * @param torder target strength order
+	 * @return the comparison result of sorder and torder
+	 */
+	private final int endPrimaryCompare(int sorder, int torder)
+	{
+		// if we reach here, the ce offset accessed is the last ce
+		// appended to the buffer
+		boolean isSourceNullOrder = (m_srcUtilCEBuffer_[
+                                                    m_srcUtilCEBufferSize_ - 1] 
+			 							== CollationElementIterator.NULLORDER);
+		boolean isTargetNullOrder = (m_tgtUtilCEBuffer_[
+                                                    m_tgtUtilCEBufferSize_ - 1] 
+			 							== CollationElementIterator.NULLORDER);	 					
+		m_srcUtilCEBufferSize_ = -1;
+	    m_tgtUtilCEBufferSize_ = -1;
+	    if (isSourceNullOrder) {
+	    	return -1;
+	    }
+	    if (isTargetNullOrder) {
+	    	return 1;
+	    }
+	    // getting rid of the sign
+	    sorder >>>= CE_PRIMARY_SHIFT_;
+	    torder >>>= CE_PRIMARY_SHIFT_;
+	    if (sorder < torder) {
+	    	return -1;
+	    }
+	    return 1;
+	}
+	
+	/**
+	 * Calculates the next primary shifted value and fills up cebuffer with the 
+	 * next non-ignorable ce.
+	 * @param coleiter collation element iterator
+	 * @param doHiragana4 flag indicator if hiragana quaternary is to be 
+	 * 						handled
+	 * @param lowestpvalue lowest primary shifted value that will not be 
+	 * 						ignored
+	 * @return result next modified ce 
+	 */
+	private final int getPrimaryShiftedCompareCE(
+										CollationElementIterator coleiter,
+										int lowestpvalue, boolean isSrc)
+										
+	{
+		boolean shifted = false;
+		int result = CollationElementIterator.IGNORABLE;
+        int cebuffer[] = m_srcUtilCEBuffer_;
+        int cebuffersize = m_srcUtilCEBufferSize_;
+        if (!isSrc) {
+            cebuffer = m_tgtUtilCEBuffer_;
+            cebuffersize = m_tgtUtilCEBufferSize_;
+        }
+	    while (true) {
+	        result = coleiter.next();
+	        if (result == CollationElementIterator.NULLORDER) {
+	            cebuffer = append(cebuffer, cebuffersize, result);
+                cebuffersize ++;
+	            break;
+	        } 
+	        else if (result == CollationElementIterator.IGNORABLE
+	                 || (shifted 
+	                     && (result & CE_PRIMARY_MASK_) 
+	                                  == CollationElementIterator.IGNORABLE)) { 
+                // UCA amendment - ignore ignorables that follow shifted code 
+                // points
+	            continue;
+	        } 
+	        else if (isContinuation(result)) {
+	        	if ((result & CE_PRIMARY_MASK_) 
+	            					!= CollationElementIterator.IGNORABLE) { 
+	            	// There is primary value
+	              	if (shifted) {
+	                	result = (result & CE_PRIMARY_MASK_) 
+	                						| CE_CONTINUATION_MARKER_; 
+	                	// preserve interesting continuation
+	                	cebuffer = append(cebuffer, cebuffersize, result);
+                        cebuffersize ++;
+	           			continue;
+	        		} 
+	        		else {
+	           			cebuffer = append(cebuffer, cebuffersize, result);
+                        cebuffersize ++;
+	                	break;
+	              	}
+	            } 
+	            else { // Just lower level values
+	            	if (!shifted) {
+	            		cebuffer = append(cebuffer, cebuffersize, result);
+                        cebuffersize ++;
+	              	}
+	            }
+	        } 
+	        else { // regular
+                if (Utility.compareUnsigned(result & CE_PRIMARY_MASK_, 
+                                            lowestpvalue) > 0) {
+	             	cebuffer = append(cebuffer, cebuffersize, result);
+                    cebuffersize ++;
+	             	break;
+	            } 
+	            else {
+	            	if ((result & CE_PRIMARY_MASK_) != 0) {
+	                	shifted = true;
+	                	result &= CE_PRIMARY_MASK_;
+	                	cebuffer = append(cebuffer, cebuffersize, result);
+                        cebuffersize ++;
+	                	continue;
+	              	} 
+	              	else {
+	                	cebuffer = append(cebuffer, cebuffersize, result);
+                        cebuffersize ++;
+	                	shifted = false;
+	                	continue;
+	              	}
+	            }
+	        }
+	    }
+        if (isSrc) {
+            m_srcUtilCEBuffer_ = cebuffer;
+            m_srcUtilCEBufferSize_ = cebuffersize;
+        }
+        else {
+            m_tgtUtilCEBuffer_ = cebuffer;
+            m_tgtUtilCEBufferSize_ = cebuffersize;
+        }
+	    result &= CE_PRIMARY_MASK_;
+	    return result;
+	}
+							
+	/**
+	 * Appending an int to an array of ints and increases it if we run out of 
+	 * space
+	 * @param array of int arrays
+	 * @param appendindex index at which value will be appended
+	 * @param value to append
+     * @return array if size is not increased, otherwise a new array will be 
+     *         returned
+	 */
+	private static final int[] append(int array[], int appendindex, int value)
+	{
+		if (appendindex + 1 >= array.length) {
+			array = increase(array, appendindex, CE_BUFFER_SIZE_);
+		}			
+		array[appendindex] = value;
+        return array;
+	}
+	
+	/**
+	 * Does secondary strength comparison based on the collected ces.
+	 * @param doFrench flag indicates if French ordering is to be done
+	 * @return the secondary strength comparison result
+	 */
+	private final int doSecondaryCompare(boolean doFrench)
+	{
+		// now, we're gonna reexamine collected CEs
+	    if (!doFrench) { // normal
+	    	int soffset = 0;
+	    	int toffset = 0;
+	        while (true) {
+	        	int sorder = CollationElementIterator.IGNORABLE;
+	          	while (sorder == CollationElementIterator.IGNORABLE) {
+	            	sorder = m_srcUtilCEBuffer_[soffset ++] 
+                             & CE_SECONDARY_MASK_;
+	          	}
+				int torder = CollationElementIterator.IGNORABLE;
+	          	while (torder == CollationElementIterator.IGNORABLE) {
+	          		torder = m_tgtUtilCEBuffer_[toffset ++] 
+                             & CE_SECONDARY_MASK_;
+	          	}
+	
+	          	if (sorder == torder) {
+	            	if (m_srcUtilCEBuffer_[soffset - 1]  
+	            					== CollationElementIterator.NULLORDER) {
+	              		break;
+	            	}
+	          	} 
+	          	else {
+	          		if (m_srcUtilCEBuffer_[soffset - 1] == 
+	          				CollationElementIterator.NULLORDER) {
+	          			return -1;
+	          		}
+	          		if (m_tgtUtilCEBuffer_[toffset - 1] == 
+	          				CollationElementIterator.NULLORDER) {
+	          			return 1;
+	          		}
+	               	return (sorder < torder) ? -1 : 1;
+	          	}
+	        }
+	    } 
+	    else { // do the French 
+	    	m_srcUtilContOffset_ = 0;
+            m_tgtUtilContOffset_ = 0;
+            m_srcUtilOffset_ = m_srcUtilCEBufferSize_ - 2; 
+            m_tgtUtilOffset_ = m_tgtUtilCEBufferSize_ - 2; 
+	        while (true) {
+	        	int sorder = getSecondaryFrenchCE(true);
+	        	int torder = getSecondaryFrenchCE(false);
+	          	if (sorder == torder) {
+	            	if ((m_srcUtilOffset_ < 0 && m_tgtUtilOffset_ < 0) 
+	            		|| m_srcUtilCEBuffer_[m_srcUtilOffset_] 
+	            					== CollationElementIterator.NULLORDER) {
+	              		break;
+	            	} 
+	          	} 
+	          	else {
+	              	return (sorder < torder) ? -1 : 1;
+	          	}
+	        }
+	    }
+	    return 0;
+	}
+	
+	/**
+	 * Calculates the next secondary french CE.
+	 * @param isSrc flag indicator if we are calculating the src ces
+	 * @return result next modified ce
+	 */
+	private final int getSecondaryFrenchCE(boolean isSrc)
+	{
+		int result = CollationElementIterator.IGNORABLE;
+        int offset = m_srcUtilOffset_;
+        int continuationoffset = m_srcUtilContOffset_;
+        int cebuffer[] = m_srcUtilCEBuffer_;
+        if (!isSrc) {
+            offset = m_tgtUtilOffset_;
+            continuationoffset = m_tgtUtilContOffset_;
+            cebuffer = m_tgtUtilCEBuffer_;
+        }
+        
+	    while (result == CollationElementIterator.IGNORABLE 
+	    		&& offset >= 0) {
+	        if (continuationoffset == 0) {
+	        	result = cebuffer[offset];
+		        while (isContinuation(cebuffer[offset --]));
+		        // after this, sorder is at the start of continuation, 
+		        // and offset points before that 
+		        if (isContinuation(cebuffer[offset + 1])) {
+		        	// save offset for later
+		        	continuationoffset = offset; 
+		        	offset += 2;  
+		        }
+	        }
+	        else {
+	        	result = cebuffer[offset ++];
+	        	if (!isContinuation(result)) { 
+	        		// we have finished with this continuation
+	           		offset = continuationoffset;
+	           		// reset the pointer to before continuation 
+	           		continuationoffset = 0;
+	           		continue;
+	        	}
+	        }
+	        result &= CE_SECONDARY_MASK_; // remove continuation bit        
+	    }  
+        if (isSrc) {
+            m_srcUtilOffset_ = offset;
+            m_srcUtilContOffset_ = continuationoffset;
+        }  
+        else {
+            m_tgtUtilOffset_ = offset;
+            m_tgtUtilContOffset_ = continuationoffset;
+        }
+	    return result;
+	}
+	
+	/**
+	 * Does case strength comparison based on the collected ces.
+	 * @return the case strength comparison result
+	 */
+	private final int doCaseCompare()
+	{
+		int soffset = 0;
+		int toffset = 0;
+	    while (true) {
+	    	int sorder = CollationElementIterator.IGNORABLE;
+	        int torder = CollationElementIterator.IGNORABLE;
+	        while ((sorder & CE_REMOVE_CASE_) 
+	        						== CollationElementIterator.IGNORABLE) {
+	        	sorder = m_srcUtilCEBuffer_[soffset ++];
+	          	if (!isContinuation(sorder)) {
+	            	sorder &= CE_CASE_MASK_3_;
+	            	sorder ^= m_caseSwitch_;
+	          	} 
+	          	else {
+	            	sorder = CollationElementIterator.IGNORABLE;
+	          	}
+	        }
+	
+	        while ((torder & CE_REMOVE_CASE_) 
+	        						== CollationElementIterator.IGNORABLE) {
+	        	torder = m_tgtUtilCEBuffer_[toffset ++];
+	          	if (!isContinuation(torder)) {
+	            	torder &= CE_CASE_MASK_3_;
+	            	torder ^= m_caseSwitch_;
+	          	} 
+	          	else {
+	            	torder = CollationElementIterator.IGNORABLE;
+	          	}
+	        }
+	
+            sorder &= CE_CASE_BIT_MASK_;
+            torder &= CE_CASE_BIT_MASK_;
+			if (sorder == torder) {
+				if (m_srcUtilCEBuffer_[soffset - 1] 
+										== CollationElementIterator.NULLORDER) {
+	          		break;
+	        	} 
+			}
+			else {
+	        	if (m_srcUtilCEBuffer_[soffset - 1] 
+	        						== CollationElementIterator.NULLORDER) {
+	          		return -1;
+	        	}
+                if (m_tgtUtilCEBuffer_[soffset - 1] 
+                                    == CollationElementIterator.NULLORDER) {
+                    return 1;
+                }
+	        	return (sorder < torder) ? -1 : 1;
+			}
+	    }
+	    return 0;
+	}
+	
+	/**
+	 * Does tertiary strength comparison based on the collected ces.
+	 * @return the tertiary strength comparison result
+	 */
+	private final int doTertiaryCompare()
+	{
+		int soffset = 0;
+	    int toffset = 0;
+	    while (true) {
+	    	int sorder = CollationElementIterator.IGNORABLE;
+	    	int torder = CollationElementIterator.IGNORABLE;
+	        while ((sorder & CE_REMOVE_CASE_) 
+	        					== CollationElementIterator.IGNORABLE) {
+	          	sorder = m_srcUtilCEBuffer_[soffset ++] & m_mask3_;
+	          	if (!isContinuation(sorder)) {
+	            	sorder ^= m_caseSwitch_;
+	          	} 
+	          	else {
+	            	sorder &= CE_REMOVE_CASE_;
+	          	}
+	        }
+	
+			while ((torder & CE_REMOVE_CASE_) 
+	        					== CollationElementIterator.IGNORABLE) {
+	          	torder = m_tgtUtilCEBuffer_[toffset ++] & m_mask3_;
+	          	if (!isContinuation(torder)) {
+	            	torder ^= m_caseSwitch_;
+	          	} 
+	          	else {
+	            	torder &= CE_REMOVE_CASE_;
+	          	}
+	        }        
+	
+	        if (sorder == torder) {
+	          	if (m_srcUtilCEBuffer_[soffset - 1] 
+	          						== CollationElementIterator.NULLORDER) {
+	            	break;
+	          	} 
+	        } 
+	        else {
+	        	if (m_srcUtilCEBuffer_[soffset - 1] == 
+	          							CollationElementIterator.NULLORDER) {
+	          		return -1;
+	          	}
+	          	if (m_tgtUtilCEBuffer_[toffset - 1] == 
+	          				CollationElementIterator.NULLORDER) {
+	          		return 1;
+	          	}
+	            return (sorder < torder) ? -1 : 1;
+	        }
+	    }
+	    return 0;
+	}
+	
+	/**
+	 * Does quaternary strength comparison based on the collected ces.
+	 * @param lowestpvalue the lowest primary value that will not be ignored if 
+	 * 						alternate handling is shifted
+	 * @return the quaternary strength comparison result
+	 */
+	private final int doQuaternaryCompare(int lowestpvalue)
+	{
+		boolean sShifted = true;
+	    boolean tShifted = true;
+	    int soffset = 0;
+	    int toffset = 0;
+	    while (true) {
+	    	int sorder = CollationElementIterator.IGNORABLE;
+	    	int torder = CollationElementIterator.IGNORABLE;
+	        while (sorder == CollationElementIterator.IGNORABLE
+	        		|| (isContinuation(sorder) && !sShifted)) {
+	          	sorder = m_srcUtilCEBuffer_[soffset ++];
+	          	if (isContinuation(sorder)) {
+	            	if (!sShifted) {
+	              		continue;
+	            	}
+	          	} 
+	          	else if (Utility.compareUnsigned(sorder, lowestpvalue) > 0 
+	          				|| (sorder & CE_PRIMARY_MASK_) 
+	          						== CollationElementIterator.IGNORABLE) { 
+	          		// non continuation
+	            	sorder = CE_PRIMARY_MASK_;
+	            	sShifted = false;
+	          	} 
+	          	else {
+	            	sShifted = true;
+	          	}
+	        }
+	        sorder >>>= CE_PRIMARY_SHIFT_;
+			while (torder == CollationElementIterator.IGNORABLE 
+	        		|| (isContinuation(torder) && !tShifted)) {
+	          	torder = m_tgtUtilCEBuffer_[toffset ++];
+	          	if (isContinuation(torder)) {
+	            	if (!tShifted) {
+	              		continue;
+	            	}
+	          	} 
+	          	else if (Utility.compareUnsigned(torder, lowestpvalue) > 0 
+	          				|| (torder & CE_PRIMARY_MASK_) 
+	          						== CollationElementIterator.IGNORABLE) { 
+	          		// non continuation
+	            	torder = CE_PRIMARY_MASK_;
+	            	tShifted = false;
+	          	} 
+	          	else {
+	            	tShifted = true;
+	          	}
+	        }
+	        torder >>>= CE_PRIMARY_SHIFT_;
+	
+	        if (sorder == torder) {
+	          	if (m_srcUtilCEBuffer_[soffset - 1] 
+	          		== CollationElementIterator.NULLORDER) {
+	            	break;
+	          	}
+	        } 
+	        else {
+	        	if (m_srcUtilCEBuffer_[soffset - 1] == 
+	          		CollationElementIterator.NULLORDER) {
+	          		return -1;
+	          	}
+	          	if (m_tgtUtilCEBuffer_[toffset - 1] == 
+	          		CollationElementIterator.NULLORDER) {
+	          		return 1;
+	          	}
+	            return (sorder < torder) ? -1 : 1;
+	        }
+	    }
+	    return 0;
+	}
+	
+	/**  
+	 * Internal function. Does byte level string compare. Used by strcoll if 
+	 * strength == identical and strings are otherwise equal. This is a rare 
+	 * case. Comparison must be done on NFD normalized strings. FCD is not good 
+	 * enough.
+	 * @param source text
+	 * @param target text
+	 * @param offset of the first difference in the text strings
+	 * @param normalize flag indicating if we are to normalize the text before
+	 * 				comparison
+	 * @return 1 if source is greater than target, -1 less than and 0 if equals
+	 */
+	private static final int doIdenticalCompare(String source, String target, 
+												int offset, boolean normalize)
+												
+	{
+	    if (normalize) {
+	        if (Normalizer.quickCheck(source, Normalizer.NFD) 
+	        										!= Normalizer.YES) {
+	            source = Normalizer.decompose(source, false);
+	        }
+	
+	        if (Normalizer.quickCheck(target, Normalizer.NFD) 
+	        											!= Normalizer.YES) {
+	            target = Normalizer.decompose(target, false);
+	        }
+	        offset = 0;
+	    }
+	
+	    return doStringCompare(source, target, offset);
+	}
+	
+	/**
+	 * Compares string for their codepoint order.
+	 * This comparison handles surrogate characters and place them after the 
+	 * all non surrogate characters.
+	 * @param source text
+	 * @param target text
+	 * @param offset start offset for comparison
+	 * @return 1 if source is greater than target, -1 less than and 0 if equals
+	 */
+	private static final int doStringCompare(String source, 
+											 String target,
+											 int offset) 
+	{
+    	// compare identical prefixes - they do not need to be fixed up
+    	char schar = 0;
+    	char tchar = 0;
+    	int slength = source.length();
+    	int tlength = target.length();
+    	int minlength = Math.min(slength, tlength);
+    	while (offset < minlength) {
+        	schar = source.charAt(offset);
+        	tchar = target.charAt(offset ++);
+        	if (schar != tchar) {
+            	break;
+        	}
+    	}
+    	
+    	if (schar == tchar && offset == minlength) {
+    		if (slength > minlength) {
+    			return 1;
+    		}
+    		if (tlength > minlength) {
+    			return -1;
+    		}
+    		return 0;
+    	}
+
+   		//  if both values are in or above the surrogate range, Fix them up.
+   		if (schar >= UTF16.LEAD_SURROGATE_MIN_VALUE 
+   			&& tchar >= UTF16.LEAD_SURROGATE_MIN_VALUE) {
+        	schar = fixupUTF16(schar);
+        	tchar = fixupUTF16(tchar);
+    	}
+
+    	// now c1 and c2 are in UTF-32-compatible order
+    	return (schar < tchar) ? -1 : 1; // schar and tchar has to be different
+	}
+	
+	/** 
+	 * Rotate surrogates to the top to get code point order
+	 */
+	private static final char fixupUTF16(char ch) 
+	{                  
+    	if (ch >= 0xe000) {                 
+        	ch -= 0x800;                    
+    	} 
+    	else {                             
+        	ch += 0x2000;                 
+    	}     
+    	return ch;                             
+	}
+	
+	/**
+	 * Checks that the source after offset is ignorable
+	 * @param source text string to check
+	 * @param offset 
+	 * @return true if source after offset is ignorable. false otherwise
+	 */
+	private final boolean checkIgnorable(String source, int offset)
+													
+	{
+        m_srcUtilIter_.setText(source);
+        m_srcUtilColEIter_.setText(m_srcUtilIter_, offset);
+	    int ce = m_srcUtilColEIter_.next();
+	    while (ce != CollationElementIterator.NULLORDER) {
+	    	if (ce != CollationElementIterator.IGNORABLE) {
+	    		return false;
+	    	}
+	    	ce = m_srcUtilColEIter_.next();
+	    }
+	    return true; 
+	}
+	
+	/**
+	 * Resets the internal case data members and compression values.
+	 */
+	private void updateInternalState() 
+	{
+      	if (m_caseFirst_ == AttributeValue.UPPER_FIRST_) {
+        	m_caseSwitch_ = CASE_SWITCH_;
+      	} 
+      	else {
+        	m_caseSwitch_ = NO_CASE_SWITCH_;
+      	}
+
+      	if (m_isCaseLevel_ || m_caseFirst_ == AttributeValue.OFF_) {
+        	m_mask3_ = CE_REMOVE_CASE_;
+        	m_common3_ = COMMON_NORMAL_3_;
+        	m_addition3_ = FLAG_BIT_MASK_CASE_SWITCH_OFF_;
+        	m_top3_ = COMMON_TOP_CASE_SWITCH_OFF_3_;
+        	m_bottom3_ = COMMON_BOTTOM_3_;
+      	} 
+      	else {
+        	m_mask3_ = CE_KEEP_CASE_;
+        	m_addition3_ = FLAG_BIT_MASK_CASE_SWITCH_ON_;
+        	if (m_caseFirst_ == AttributeValue.UPPER_FIRST_) {
+          		m_common3_ = COMMON_UPPER_FIRST_3_;
+          		m_top3_ = COMMON_TOP_CASE_SWITCH_UPPER_3_;
+          		m_bottom3_ = COMMON_BOTTOM_CASE_SWITCH_UPPER_3_;
+        	} else {
+          		m_common3_ = COMMON_NORMAL_3_;
+          		m_top3_ = COMMON_TOP_CASE_SWITCH_LOWER_3_;
+          		m_bottom3_ = COMMON_BOTTOM_CASE_SWITCH_LOWER_3_;
+        	}
+      	}
+
+      	// Set the compression values
+      	int total3 = m_top3_ - COMMON_BOTTOM_3_ - 1;
+      	// we multilply double with int, but need only int
+      	m_topCount3_ = (int)(PROPORTION_3_ * total3); 
+      	m_bottomCount3_ = total3 - m_topCount3_;
+
+      	if (!m_isCaseLevel_ && getStrength() == AttributeValue.TERTIARY_ 
+          	&& !m_isFrenchCollation_ && !m_isAlternateHandlingShifted_) {
+        	m_isSimple3_ = true;
+      	} 
+      	else {
+        	m_isSimple3_ = false;
+      	}
+	}
+	
+	/**
+     * Initializes the RuleBasedCollator
+     */
+    private final void init()
+    {
+    	for (m_minUnsafe_ = 0; m_minUnsafe_ < DEFAULT_MIN_HEURISTIC_; 
+    	     m_minUnsafe_ ++) {  
+    		// Find the smallest unsafe char.
+        	if (isUnsafe(m_minUnsafe_)) {
+        		break;
+        	}
+    	}
+    	
+    	for (m_minContractionEnd_ = 0; 
+    	     m_minContractionEnd_ < DEFAULT_MIN_HEURISTIC_; 
+    	     m_minContractionEnd_ ++) {  
+    	    // Find the smallest contraction-ending char.
+        	if (isContractionEnd(m_minContractionEnd_)) {
+        		break;
+        	}
+    	}
+    	setStrength(m_defaultStrength_);
+    	setDecomposition(m_defaultDecomposition_);
+        m_variableTopValue_ = m_defaultVariableTopValue_;
+    	m_isFrenchCollation_ = m_defaultIsFrenchCollation_;
+    	m_isAlternateHandlingShifted_ = m_defaultIsAlternateHandlingShifted_;
+    	m_isCaseLevel_ = m_defaultIsCaseLevel_;
+    	m_caseFirst_ = m_defaultCaseFirst_;
+    	m_isHiragana4_ = m_defaultIsHiragana4_;
+    	updateInternalState();
+    }
+    
+    /** 
+     *  Initializes utility iterators and byte buffer used by compare
+     */
+    private final void initUtility() {
+       m_srcUtilIter_ = new StringCharacterIterator(new String(""));
+       m_srcUtilColEIter_ = new CollationElementIterator(m_srcUtilIter_, this);
+       m_tgtUtilIter_ = new StringCharacterIterator(new String(""));
+       m_tgtUtilColEIter_ = new CollationElementIterator(m_tgtUtilIter_, this);
+       m_utilBytes0_ = new byte[SORT_BUFFER_INIT_SIZE_CASE_]; // case
+       m_utilBytes1_ = new byte[SORT_BUFFER_INIT_SIZE_1_]; // primary 
+       m_utilBytes2_ = new byte[SORT_BUFFER_INIT_SIZE_2_]; // secondary
+       m_utilBytes3_ = new byte[SORT_BUFFER_INIT_SIZE_3_]; // tertiary 
+       m_utilBytes4_ = new byte[SORT_BUFFER_INIT_SIZE_4_];  // Quaternary
+       m_srcUtilCEBuffer_ = new int[CE_BUFFER_SIZE_];
+       m_tgtUtilCEBuffer_ = new int[CE_BUFFER_SIZE_];
+    }
+}
diff --git a/src/com/ibm/icu/text/RuleBasedNumberFormat.java b/src/com/ibm/icu/text/RuleBasedNumberFormat.java
new file mode 100755
index 0000000..16bf024
--- /dev/null
+++ b/src/com/ibm/icu/text/RuleBasedNumberFormat.java
@@ -0,0 +1,1307 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/RuleBasedNumberFormat.java,v $ 
+ * $Date: 2002/07/26 22:51:49 $ 
+ * $Revision: 1.9 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.UCharacterProperty;
+
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.Vector;
+
+/**
+ * <p>A class that formats numbers according to a set of rules. This number formatter is
+ * typically used for spelling out numeric values in words (e.g., 25,3476 as
+ * &quot;twenty-five thousand three hundred seventy-six&quot; or &quot;vingt-cinq mille trois
+ * cents soixante-seize&quot; or
+ * &quot;funfundzwanzigtausenddreihundertsechsundsiebzig&quot;), but can also be used for
+ * other complicated formatting tasks, such as formatting a number of seconds as hours,
+ * minutes and seconds (e.g., 3,730 as &quot;1:02:10&quot;).</p>
+ *
+ * <p>The resources contain three predefined formatters for each locale: spellout, which
+ * spells out a value in words (123 is &quot;one hundred twenty-three&quot;); ordinal, which
+ * appends an ordinal suffix to the end of a numeral (123 is &quot;123rd&quot;); and
+ * duration, which shows a duration in seconds as hours, minutes, and seconds (123 is
+ * &quot;2:03&quot;).&nbsp; The client can also define more specialized <tt>RuleBasedNumberFormat</tt>s
+ * by supplying programmer-defined rule sets.</p>
+ *
+ * <p>The behavior of a <tt>RuleBasedNumberFormat</tt> is specified by a textual description
+ * that is either passed to the constructor as a <tt>String</tt> or loaded from a resource
+ * bundle. In its simplest form, the description consists of a semicolon-delimited list of <em>rules.</em>
+ * Each rule has a string of output text and a value or range of values it is applicable to.
+ * In a typical spellout rule set, the first twenty rules are the words for the numbers from
+ * 0 to 19:</p>
+ *
+ * <pre>zero; one; two; three; four; five; six; seven; eight; nine;
+ * ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen; seventeen; eighteen; nineteen;</pre>
+ *
+ * <p>For larger numbers, we can use the preceding set of rules to format the ones place, and
+ * we only have to supply the words for the multiples of 10:</p>
+ *
+ * <pre>20: twenty[-&gt;&gt;];
+ * 30: thirty{-&gt;&gt;];
+ * 40: forty[-&gt;&gt;];
+ * 50: fifty[-&gt;&gt;];
+ * 60: sixty[-&gt;&gt;];
+ * 70: seventy[-&gt;&gt;];
+ * 80: eighty[-&gt;&gt;];
+ * 90: ninety[-&gt;&gt;];</pre>
+ *
+ * <p>In these rules, the <em>base value</em> is spelled out explicitly and set off from the
+ * rule's output text with a colon. The rules are in a sorted list, and a rule is applicable
+ * to all numbers from its own base value to one less than the next rule's base value. The
+ * &quot;&gt;&gt;&quot; token is called a <em>substitution</em> and tells the fomatter to
+ * isolate the number's ones digit, format it using this same set of rules, and place the
+ * result at the position of the &quot;&gt;&gt;&quot; token. Text in brackets is omitted if
+ * the number being formatted is an even multiple of 10 (the hyphen is a literal hyphen; 24
+ * is &quot;twenty-four,&quot; not &quot;twenty four&quot;).</p>
+ *
+ * <p>For even larger numbers, we can actually look up several parts of the number in the
+ * list:</p>
+ *
+ * <pre>100: &lt;&lt; hundred[ &gt;&gt;];</pre>
+ *
+ * <p>The &quot;&lt;&lt;&quot; represents a new kind of substitution. The &lt;&lt; isolates
+ * the hundreds digit (and any digits to its left), formats it using this same rule set, and
+ * places the result where the &quot;&lt;&lt;&quot; was. Notice also that the meaning of
+ * &gt;&gt; has changed: it now refers to both the tens and the ones digits. The meaning of
+ * both substitutions depends on the rule's base value. The base value determines the rule's <em>divisor,</em>
+ * which is the highest power of 10 that is less than or equal to the base value (the user
+ * can change this). To fill in the substitutions, the formatter divides the number being
+ * formatted by the divisor. The integral quotient is used to fill in the &lt;&lt;
+ * substitution, and the remainder is used to fill in the &gt;&gt; substitution. The meaning
+ * of the brackets changes similarly: text in brackets is omitted if the value being
+ * formatted is an even multiple of the rule's divisor. The rules are applied recursively, so
+ * if a substitution is filled in with text that includes another substitution, that
+ * substitution is also filled in.</p>
+ *
+ * <p>This rule covers values up to 999, at which point we add another rule:</p>
+ *
+ * <pre>1000: &lt;&lt; thousand[ &gt;&gt;];</pre>
+ *
+ * <p>Again, the meanings of the brackets and substitution tokens shift because the rule's
+ * base value is a higher power of 10, changing the rule's divisor. This rule can actually be
+ * used all the way up to 999,999. This allows us to finish out the rules as follows:</p>
+ *
+ * <pre>1,000,000: &lt;&lt; million[ &gt;&gt;];
+ * 1,000,000,000: &lt;&lt; billion[ &gt;&gt;];
+ * 1,000,000,000,000: &lt;&lt; trillion[ &gt;&gt;];
+ * 1,000,000,000,000,000: OUT OF RANGE!;</pre>
+ *
+ * <p>Commas, periods, and spaces can be used in the base values to improve legibility and
+ * are ignored by the rule parser. The last rule in the list is customarily treated as an
+ * &quot;overflow rule,&quot; applying to everything from its base value on up, and often (as
+ * in this example) being used to print out an error message or default representation.
+ * Notice also that the size of the major groupings in large numbers is controlled by the
+ * spacing of the rules: because in English we group numbers by thousand, the higher rules
+ * are separated from each other by a factor of 1,000.</p>
+ *
+ * <p>To see how these rules actually work in practice, consider the following example:
+ * Formatting 25,430 with this rule set would work like this:</p>
+ *
+ * <table border="0" width="630">
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top"><strong>&lt;&lt; thousand &gt;&gt;</strong></td>
+ *     <td width="340" valign="top">[the rule whose base value is 1,000 is applicable to 25,340]</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top"><strong>twenty-&gt;&gt;</strong> thousand &gt;&gt;</td>
+ *     <td width="340" valign="top">[25,340 over 1,000 is 25. The rule for 20 applies.]</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top">twenty-<strong>five</strong> thousand &gt;&gt;</td>
+ *     <td width="340" valign="top">[25 mod 10 is 5. The rule for 5 is &quot;five.&quot;</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top">twenty-five thousand <strong>&lt;&lt; hundred &gt;&gt;</strong></td>
+ *     <td width="340" valign="top">[25,340 mod 1,000 is 340. The rule for 100 applies.]</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top">twenty-five thousand <strong>three</strong> hundred &gt;&gt;</td>
+ *     <td width="340" valign="top">[340 over 100 is 3. The rule for 3 is &quot;three.&quot;]</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top">twenty-five thousand three hundred <strong>forty</strong></td>
+ *     <td width="340" valign="top">[340 mod 100 is 40. The rule for 40 applies. Since 40 divides
+ *     evenly by 10, the hyphen and substitution in the brackets are omitted.]</td>
+ *   </tr>
+ * </table>
+ *
+ * <p>The above syntax suffices only to format positive integers. To format negative numbers,
+ * we add a special rule:</p>
+ *
+ * <pre>-x: minus &gt;&gt;;</pre>
+ *
+ * <p>This is called a <em>negative-number rule,</em> and is identified by &quot;-x&quot;
+ * where the base value would be. This rule is used to format all negative numbers. the
+ * &gt;&gt; token here means &quot;find the number's absolute value, format it with these
+ * rules, and put the result here.&quot;</p>
+ *
+ * <p>We also add a special rule called a <em>fraction rule </em>for numbers with fractional
+ * parts:</p>
+ *
+ * <pre>x.x: &lt;&lt; point &gt;&gt;;</pre>
+ *
+ * <p>This rule is used for all positive non-integers (negative non-integers pass through the
+ * negative-number rule first and then through this rule). Here, the &lt;&lt; token refers to
+ * the number's integral part, and the &gt;&gt; to the number's fractional part. The
+ * fractional part is formatted as a series of single-digit numbers (e.g., 123.456 would be
+ * formatted as &quot;one hundred twenty-three point four five six&quot;).</p>
+ *
+ * <p>To see how this rule syntax is applied to various languages, examine the resource data.</p>
+ *
+ * <p>There is actually much more flexibility built into the rule language than the
+ * description above shows. A formatter may own multiple rule sets, which can be selected by
+ * the caller, and which can use each other to fill in their substitutions. Substitutions can
+ * also be filled in with digits, using a DecimalFormat object. There is syntax that can be
+ * used to alter a rule's divisor in various ways. And there is provision for much more
+ * flexible fraction handling. A complete description of the rule syntax follows:</p>
+ *
+ * <hr>
+ *
+ * <p>The description of a <tt>RuleBasedNumberFormat</tt>'s behavior consists of one or more <em>rule
+ * sets.</em> Each rule set consists of a name, a colon, and a list of <em>rules.</em> A rule
+ * set name must begin with a % sign. Rule sets with names that begin with a single % sign
+ * are <em>public:</em> the caller can specify that they be used to format and parse numbers.
+ * Rule sets with names that begin with %% are <em>private:</em> they exist only for the use
+ * of other rule sets. If a formatter only has one rule set, the name may be omitted.</p>
+ *
+ * <p>The user can also specify a special &quot;rule set&quot; named <tt>%%lenient-parse</tt>.
+ * The body of <tt>%%lenient-parse</tt> isn't a set of number-formatting rules, but a <tt>RuleBasedCollator</tt>
+ * description which is used to define equivalences for lenient parsing. For more information
+ * on the syntax, see <tt>RuleBasedCollator</tt>. For more information on lenient parsing,
+ * see <tt>setLenientParse()</tt>.</p>
+ *
+ * <p>The body of a rule set consists of an ordered, semicolon-delimited list of <em>rules.</em>
+ * Internally, every rule has a base value, a divisor, rule text, and zero, one, or two <em>substtutions.</em>
+ * These parameters are controlled by the description syntax, which consists of a <em>rule
+ * descriptor,</em> a colon, and a <em>rule body.</em></p>
+ *
+ * <p>A rule descriptor can take one of the following forms (text in <em>italics</em> is the
+ * name of a token):</p>
+ *
+ * <table border="0" width="100%">
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>bv</em>:</td>
+ *     <td valign="top"><em>bv</em> specifies the rule's base value. <em>bv</em> is a decimal
+ *     number expressed using ASCII digits. <em>bv</em> may contain spaces, period, and commas,
+ *     which are irgnored. The rule's divisor is the highest power of 10 less than or equal to
+ *     the base value.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>bv</em>/<em>rad</em>:</td>
+ *     <td valign="top"><em>bv</em> specifies the rule's base value. The rule's divisor is the
+ *     highest power of <em>rad</em> less than or equal to the base value.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>bv</em>&gt;:</td>
+ *     <td valign="top"><em>bv</em> specifies the rule's base value. To calculate the divisor,
+ *     let the radix be 10, and the exponent be the highest exponent of the radix that yields a
+ *     result less than or equal to the base value. Every &gt; character after the base value
+ *     decreases the exponent by 1. If the exponent is positive or 0, the divisor is the radix
+ *     raised to the power of the exponent; otherwise, the divisor is 1.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>bv</em>/<em>rad</em>&gt;:</td>
+ *     <td valign="top"><em>bv</em> specifies the rule's base value. To calculate the divisor,
+ *     let the radix be <em>rad</em>, and the exponent be the highest exponent of the radix that
+ *     yields a result less than or equal to the base value. Every &gt; character after the radix
+ *     decreases the exponent by 1. If the exponent is positive or 0, the divisor is the radix
+ *     raised to the power of the exponent; otherwise, the divisor is 1.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top">-x:</td>
+ *     <td valign="top">The rule is a negative-number rule.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top">x.x:</td>
+ *     <td valign="top">The rule is an <em>improper fraction rule.</em></td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top">0.x:</td>
+ *     <td valign="top">The rule is a <em>proper fraction rule.</em></td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top">x.0:</td>
+ *     <td valign="top">The rule is a <em>master rule.</em></td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>nothing</em></td>
+ *     <td valign="top">If the rule's rule descriptor is left out, the base value is one plus the
+ *     preceding rule's base value (or zero if this is the first rule in the list) in a normal
+ *     rule set.&nbsp; In a fraction rule set, the base value is the same as the preceding rule's
+ *     base value.</td>
+ *   </tr>
+ * </table>
+ *
+ * <p>A rule set may be either a regular rule set or a <em>fraction rule set,</em> depending
+ * on whether it is used to format a number's integral part (or the whole number) or a
+ * number's fractional part. Using a rule set to format a rule's fractional part makes it a
+ * fraction rule set.</p>
+ *
+ * <p>Which rule is used to format a number is defined according to one of the following
+ * algorithms: If the rule set is a regular rule set, do the following:
+ *
+ * <ul>
+ *   <li>If the rule set includes a master rule (and the number was passed in as a <tt>double</tt>),
+ *     use the master rule.&nbsp; (If the number being formatted was passed in as a <tt>long</tt>,
+ *     the master rule is ignored.)</li>
+ *   <li>If the number is negative, use the negative-number rule.</li>
+ *   <li>If the number has a fractional part and is greater than 1, use the improper fraction
+ *     rule.</li>
+ *   <li>If the number has a fractional part and is between 0 and 1, use the proper fraction
+ *     rule.</li>
+ *   <li>Binary-search the rule list for the rule with the highest base value less than or equal
+ *     to the number. If that rule has two substitutions, its base value is not an even multiple
+ *     of its divisor, and the number <em>is</em> an even multiple of the rule's divisor, use the
+ *     rule that precedes it in the rule list. Otherwise, use the rule itself.</li>
+ * </ul>
+ *
+ * <p>If the rule set is a fraction rule set, do the following:
+ *
+ * <ul>
+ *   <li>Ignore negative-number and fraction rules.</li>
+ *   <li>For each rule in the list, multiply the number being formatted (which will always be
+ *     between 0 and 1) by the rule's base value. Keep track of the distance between the result
+ *     the nearest integer.</li>
+ *   <li>Use the rule that produced the result closest to zero in the above calculation. In the
+ *     event of a tie or a direct hit, use the first matching rule encountered. (The idea here is
+ *     to try each rule's base value as a possible denominator of a fraction. Whichever
+ *     denominator produces the fraction closest in value to the number being formatted wins.) If
+ *     the rule following the matching rule has the same base value, use it if the numerator of
+ *     the fraction is anything other than 1; if the numerator is 1, use the original matching
+ *     rule. (This is to allow singular and plural forms of the rule text without a lot of extra
+ *     hassle.)</li>
+ * </ul>
+ *
+ * <p>A rule's body consists of a string of characters terminated by a semicolon. The rule
+ * may include zero, one, or two <em>substitution tokens,</em> and a range of text in
+ * brackets. The brackets denote optional text (and may also include one or both
+ * substitutions). The exact meanings of the substitution tokens, and under what conditions
+ * optional text is omitted, depend on the syntax of the substitution token and the context.
+ * The rest of the text in a rule body is literal text that is output when the rule matches
+ * the number being formatted.</p>
+ *
+ * <p>A substitution token begins and ends with a <em>token character.</em> The token
+ * character and the context together specify a mathematical operation to be performed on the
+ * number being formatted. An optional <em>substitution descriptor </em>specifies how the
+ * value resulting from that operation is used to fill in the substitution. The position of
+ * the substitution token in the rule body specifies the location of the resultant text in
+ * the original rule text.</p>
+ *
+ * <p>The meanings of the substitution token characters are as follows:</p>
+ *
+ * <table border="0" width="100%">
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">&gt;&gt;</td>
+ *     <td width="165" valign="top">in normal rule</td>
+ *     <td>Divide the number by the rule's divisor and format the remainder</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in negative-number rule</td>
+ *     <td>Find the absolute value of the number and format the result</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in fraction or master rule</td>
+ *     <td>Isolate the number's fractional part and format it.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in rule in fraction rule set</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">&gt;&gt;&gt;</td>
+ *     <td width="165" valign="top">in normal rule</td>
+ *     <td>Divide the number by the rule's divisor and format the remainder,
+ *       but bypass the normal rule-selection process and just use the
+ *       rule that precedes this one in this rule list.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in all other rules</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">&lt;&lt;</td>
+ *     <td width="165" valign="top">in normal rule</td>
+ *     <td>Divide the number by the rule's divisor and format the quotient</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in negative-number rule</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in fraction or master rule</td>
+ *     <td>Isolate the number's integral part and format it.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in rule in fraction rule set</td>
+ *     <td>Multiply the number by the rule's base value and format the result.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">==</td>
+ *     <td width="165" valign="top">in all rule sets</td>
+ *     <td>Format the number unchanged</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">[]</td>
+ *     <td width="165" valign="top">in normal rule</td>
+ *     <td>Omit the optional text if the number is an even multiple of the rule's divisor</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in negative-number rule</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in improper-fraction rule</td>
+ *     <td>Omit the optional text if the number is between 0 and 1 (same as specifying both an
+ *     x.x rule and a 0.x rule)</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in master rule</td>
+ *     <td>Omit the optional text if the number is an integer (same as specifying both an x.x
+ *     rule and an x.0 rule)</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in proper-fraction rule</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in rule in fraction rule set</td>
+ *     <td>Omit the optional text if multiplying the number by the rule's base value yields 1.</td>
+ *   </tr>
+ * </table>
+ *
+ * <p>The substitution descriptor (i.e., the text between the token characters) may take one
+ * of three forms:</p>
+ *
+ * <table border="0" width="100%">
+ *   <tr>
+ *     <td width="42"></td>
+ *     <td width="166" valign="top">a rule set name</td>
+ *     <td>Perform the mathematical operation on the number, and format the result using the
+ *     named rule set.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="42"></td>
+ *     <td width="166" valign="top">a DecimalFormat pattern</td>
+ *     <td>Perform the mathematical operation on the number, and format the result using a
+ *     DecimalFormat with the specified pattern.&nbsp; The pattern must begin with 0 or #.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="42"></td>
+ *     <td width="166" valign="top">nothing</td>
+ *     <td>Perform the mathematical operation on the number, and format the result using the rule
+ *     set containing the current rule, except:<ul>
+ *       <li>You can't have an empty substitution descriptor with a == substitution.</li>
+ *       <li>If you omit the substitution descriptor in a &gt;&gt; substitution in a fraction rule,
+ *         format the result one digit at a time using the rule set containing the current rule.</li>
+ *       <li>If you omit the substitution descriptor in a &lt;&lt; substitution in a rule in a
+ *         fraction rule set, format the result using the default rule set for this formatter.</li>
+ *     </ul>
+ *     </td>
+ *   </tr>
+ * </table>
+ *
+ * <p>Whitespace is ignored between a rule set name and a rule set body, between a rule
+ * descriptor and a rule body, or between rules. If a rule body begins with an apostrophe,
+ * the apostrophe is ignored, but all text after it becomes significant (this is how you can
+ * have a rule's rule text begin with whitespace). There is no escape function: the semicolon
+ * is not allowed in rule set names or in rule text, and the colon is not allowed in rule set
+ * names. The characters beginning a substitution token are always treated as the beginning
+ * of a substitution token.</p>
+ *
+ * <p>See the resource data and the demo program for annotated examples of real rule sets
+ * using these features.</p>
+ *
+ * @author Richard Gillam
+ * $RCSfile: RuleBasedNumberFormat.java,v $ $Revision: 1.9 $ $Date: 2002/07/26 22:51:49 $
+ * @see NumberFormat
+ * @see DecimalFormat
+ */
+public final class RuleBasedNumberFormat extends NumberFormat {
+
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    /**
+     * Selector code that tells the constructor to create a spellout formatter
+     */
+    public static final int SPELLOUT = 1;
+
+    /**
+     * Selector code that tells the constructor to create an ordinal formatter
+     */
+    public static final int ORDINAL = 2;
+
+    /**
+     * Selector code that tells the constructor to create a duration formatter
+     */
+    public static final int DURATION = 3;
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The formatter's rule sets.
+     */
+    private NFRuleSet[] ruleSets = null;
+
+    /**
+     * A pointer to the formatter's default rule set.  This is always included
+     * in ruleSets.
+     */
+    private NFRuleSet defaultRuleSet = null;
+
+    /**
+     * The formatter's locale.  This is used to create DecimalFormatSymbols and
+     * Collator objects.
+     */
+    private Locale locale = null;
+
+    /**
+     * Collator to be used in lenient parsing.  This variable is lazy-evaluated:
+     * the collator is actually created the first time the client does a parse
+     * with lenient-parse mode turned on.
+     */
+    private Collator collator = null;
+
+    /**
+     * The DecimalFormatSymbols object that any DecimalFormat objects this
+     * formatter uses should use.  This variable is lazy-evaluated: it isn't
+     * filled in if the rule set never uses a DecimalFormat pattern.
+     */
+    private DecimalFormatSymbols decimalFormatSymbols = null;
+
+    /**
+     * Flag specifying whether lenient parse mode is on or off.  Off by default.
+     */
+    private boolean lenientParse = false;
+
+    /**
+     * If the description specifies lenient-parse rules, they're stored here until
+     * the collator is created.
+     */
+    private String lenientParseRules = null;
+
+    //-----------------------------------------------------------------------
+    // constructors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Creates a RuleBasedNumberFormat that behaves according to the description
+     * passed in.  The formatter uses the default locale.
+     * @param description A description of the formatter's desired behavior.
+     * See the class documentation for a complete explanation of the description
+     * syntax.
+     */
+    public RuleBasedNumberFormat(String description) {
+        locale = Locale.getDefault();
+        init(description);
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat that behaves according to the description
+     * passed in.  The formatter uses the specified locale to determine the
+     * characters to use when formatting in numerals, and to define equivalences
+     * for lenient parsing.
+     * @param description A description of the formatter's desired behavior.
+     * See the class documentation for a complete explanation of the description
+     * syntax.
+     * @param locale A locale, which governs which characters are used for
+     * formatting values in numerals, and which characters are equivalent in
+     * lenient parsing.
+     */
+    public RuleBasedNumberFormat(String description, Locale locale) {
+        this.locale = locale;
+        init(description);
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat from a predefined description.  The selector
+     * code choosed among three possible predefined formats: spellout, ordinal,
+     * and duration.
+     * @param locale The locale for the formatter.
+     * @param format A selector code specifying which kind of formatter to create for that
+     * locale.  There are three legal values: SPELLOUT, which creates a formatter that
+     * spells out a value in words in the desired language, ORDINAL, which attaches
+     * an ordinal suffix from the desired language to the end of a number (e.g. "123rd"),
+     * and DURATION, which formats a duration in seconds as hours, minutes, and seconds.
+     */
+    public RuleBasedNumberFormat(Locale locale, int format) {
+        this.locale = locale;
+
+        // load up the resource bundle containing the description
+        // from the specified locale
+	//        ResourceBundle bundle = ICULocaleData.getResourceBundle("NumberFormatRules", locale);
+        ResourceBundle bundle = ICULocaleData.getResourceBundle("LocaleElements", locale);
+        String description = "";
+
+        // pick a description from the resource bundle based on the
+        // kind of formatter the user asked for
+        switch (format) {
+            case SPELLOUT:
+                description = bundle.getString("SpelloutRules");
+                break;
+
+            case ORDINAL:
+                description = bundle.getString("OrdinalRules");
+                break;
+
+            case DURATION:
+                description = bundle.getString("DurationRules");
+                break;
+        }
+
+        // construct the formatter based on the description
+        init(description);
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat from a predefined description.  Uses the
+     * default locale.
+     * @param format A selector code specifying which kind of formatter to create.
+     * There are three legal values: SPELLOUT, which creates a formatter that spells
+     * out a value in words in the default locale's langyage, ORDINAL, which attaches
+     * an ordinal suffix from the default locale's language to a numeral, and
+     * DURATION, which formats a duration in seconds as hours, minutes, and seconds.
+     */
+    public RuleBasedNumberFormat(int format) {
+        this(Locale.getDefault(), format);
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Duplicates this formatter.
+     * @return A RuleBasedNumberFormat that is equal to this one.
+     */
+    public Object clone() {
+        return super.clone();
+    }
+
+    /**
+     * Tests two RuleBasedNumberFormats for equality.
+     * @param that The formatter to compare against this one.
+     * @return true if the two formatters have identical behavior.
+     */
+    public boolean equals(Object that) {
+        // if the other object isn't a RuleBasedNumberFormat, that's
+        // all we need to know
+        if (!(that instanceof RuleBasedNumberFormat)) {
+            return false;
+        } else {
+            // cast the other object's pointer to a pointer to a
+            // RuleBasedNumberFormat
+            RuleBasedNumberFormat that2 = (RuleBasedNumberFormat)that;
+
+            // compare their locales and lenient-parse modes
+            if (!locale.equals(that2.locale) || lenientParse != that2.lenientParse) {
+                return false;
+            }
+
+            // if that succeeds, then compare their rule set lists
+            if (ruleSets.length != that2.ruleSets.length) {
+                return false;
+            }
+            for (int i = 0; i < ruleSets.length; i++) {
+                if (!ruleSets[i].equals(that2.ruleSets[i])) {
+                    return false;
+                }
+            }
+
+            return true;
+        }
+    }
+
+    /**
+     * Generates a textual description of this formatter.
+     * @return a String containing a rule set that will produce a RuleBasedNumberFormat
+     * with identical behavior to this one.  This won't necessarily be identical
+     * to the rule set description that was originally passed in, but will produce
+     * the same result.
+     */
+    public String toString() {
+
+        // accumulate the descriptions of all the rule sets in a
+        // StringBuffer, then cast it to a String and return it
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < ruleSets.length; i++) {
+            result.append(ruleSets[i].toString());
+        }
+        return result.toString();
+    }
+
+    /**
+     * Writes this object to a stream.
+     * @param out The stream to write to.
+     */
+    private void writeObject(java.io.ObjectOutputStream out)
+                    throws java.io.IOException {
+        // we just write the textual description to the stream, so we
+        // have an implementation-independent streaming format
+        out.writeUTF(this.toString());
+    }
+
+    /**
+     * Reads this object in from a stream.
+     * @param in The stream to read from.
+     */
+    private void readObject(java.io.ObjectInputStream in)
+                    throws java.io.IOException {
+
+        // read the description in from the stream
+        String description = in.readUTF();
+
+        // build a brand-new RuleBasedNumberFormat from the description,
+        // then steal its substructure.  This object's substructure and
+        // the temporary RuleBasedNumberFormat drop on the floor and
+        // get swept up by the garbage collector
+        RuleBasedNumberFormat temp = new RuleBasedNumberFormat(description);
+        ruleSets = temp.ruleSets;
+        defaultRuleSet = temp.defaultRuleSet;
+    }
+
+
+    //-----------------------------------------------------------------------
+    // public API functions
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns a list of the names of all of this formatter's public rule sets.
+     * @return A list of the names of all of this formatter's public rule sets.
+     */
+    public String[] getRuleSetNames() {
+        // preflight the iteration, counting the number of public rule sets
+        // (public rule sets have names that begin with % instead of %%)
+        int count = 0;
+        for (int i = 0; i < ruleSets.length; i++) {
+            if (!ruleSets[i].getName().startsWith("%%")) {
+                ++count;
+            }
+        }
+
+        // then new up an array of the proper size and copy the names into it
+        String[] result = new String[count];
+        count = 0;
+        for (int i = ruleSets.length - 1; i >= 0; i--) {
+            if (!ruleSets[i].getName().startsWith("%%")) {
+                result[count++] = ruleSets[i].getName();
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * Formats the specified number according to the specified rule set.
+     * @param number The number to format.
+     * @param ruleSet The name of the rule set to format the number with.
+     * This must be the name of a valid public rule set for this formatter.
+     * @return A textual representation of the number.
+     */
+    public String format(double number, String ruleSet) throws IllegalArgumentException {
+        if (ruleSet.startsWith("%%")) {
+            throw new IllegalArgumentException("Can't use internal rule set");
+        }
+        return format(number, findRuleSet(ruleSet));
+    }
+
+    /**
+     * Formats the specified number according to the specified rule set.
+     * (If the specified rule set specifies a master ["x.0"] rule, this function
+     * ignores it.  Convert the number to a double first if you ned it.)  This
+     * function preserves all the precision in the long-- it doesn't convert it
+     * to a double.
+     * @param number The number to format.
+     * @param ruleSet The name of the rule set to format the number with.
+     * This must be the name of a valid public rule set for this formatter.
+     * @return A textual representation of the number.
+     */
+    public String format(long number, String ruleSet) throws IllegalArgumentException {
+        if (ruleSet.startsWith("%%")) {
+            throw new IllegalArgumentException("Can't use internal rule set");
+        }
+        return format(number, findRuleSet(ruleSet));
+    }
+
+    /**
+     * Formats the specified number using the formatter's default rule set.
+     * (The default rule set is the last public rule set defined in the description.)
+     * @param number The number to format.
+     * @param toAppendTo A StringBuffer that the result should be appended to.
+     * @param ignore This function doesn't examine or update the field position.
+     * @return toAppendTo
+     */
+    public StringBuffer format(double number,
+                               StringBuffer toAppendTo,
+                               FieldPosition ignore) {
+        // this is one of the inherited format() methods.  Since it doesn't
+        // have a way to select the rule set to use, it just uses the
+        // default one
+        toAppendTo.append(format(number, defaultRuleSet));
+        return toAppendTo;
+    }
+
+    /**
+     * Formats the specified number using the formatter's default rule set.
+     * (The default rule set is the last public rule set defined in the description.)
+     * (If the specified rule set specifies a master ["x.0"] rule, this function
+     * ignores it.  Convert the number to a double first if you ned it.)  This
+     * function preserves all the precision in the long-- it doesn't convert it
+     * to a double.
+     * @param number The number to format.
+     * @param toAppendTo A StringBuffer that the result should be appended to.
+     * @param ignore This function doesn't examine or update the field position.
+     * @return toAppendTo
+     */
+    public StringBuffer format(long number,
+                               StringBuffer toAppendTo,
+                               FieldPosition ignore) {
+        // this is one of the inherited format() methods.  Since it doesn't
+        // have a way to select the rule set to use, it just uses the
+        // default one
+        toAppendTo.append(format(number, defaultRuleSet));
+        return toAppendTo;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Implement com.ibm.icu.text.NumberFormat:
+     * Format a BigInteger.
+     */
+    public StringBuffer format(BigInteger number,
+                               StringBuffer toAppendTo,
+                               FieldPosition pos) {
+        return format(new com.ibm.icu.math.BigDecimal(number), toAppendTo, pos);
+    }
+    
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Implement com.ibm.icu.text.NumberFormat:
+     * Format a BigDecimal.
+     */
+    public StringBuffer format(java.math.BigDecimal number,
+                               StringBuffer toAppendTo,
+                               FieldPosition pos) {
+        return format(new com.ibm.icu.math.BigDecimal(number), toAppendTo, pos);
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Implement com.ibm.icu.text.NumberFormat:
+     * Format a BigDecimal.
+     */
+    public StringBuffer format(com.ibm.icu.math.BigDecimal number,
+                               StringBuffer toAppendTo,
+                               FieldPosition pos) {
+        // TEMPORARY:
+        return format(number.doubleValue(), toAppendTo, pos);
+    }
+
+    /**
+     * Parses the specfied string, beginning at the specified position, according
+     * to this formatter's rules.  This will match the string against all of the
+     * formatter's public rule sets and return the value corresponding to the longest
+     * parseable substring.  This function's behavior is affected by the lenient
+     * parse mode.
+     * @param text The string to parse
+     * @param parsePosition On entry, contains the position of the first character
+     * in "text" to examine.  On exit, has been updated to contain the position
+     * of the first character in "text" that wasn't consumed by the parse.
+     * @return The number that corresponds to the parsed text.  This will be an
+     * instance of either Long or Double, depending on whether the result has a
+     * fractional part.
+     * @see #setLenientParseMode
+     */
+    public Number parse(String text, ParsePosition parsePosition) {
+
+        // parsePosition tells us where to start parsing.  We copy the
+        // text in the string from here to the end inro a new string,
+        // and create a new ParsePosition and result variable to use
+        // for the duration of the parse operation
+        String workingText = text.substring(parsePosition.getIndex());
+        ParsePosition workingPos = new ParsePosition(0);
+        Number tempResult = null;
+
+        // keep track of the largest number of characters consumed in
+        // the various trials, and the result that corresponds to it
+        Number result = new Long(0);
+        ParsePosition highWaterMark = new ParsePosition(workingPos.getIndex());
+
+        // iterate over the public rule sets (beginning with the default one)
+        // and try parsing the text with each of them.  Keep track of which
+        // one consumes the most characters: that's the one that determines
+        // the result we return
+        for (int i = ruleSets.length - 1; i >= 0; i--) {
+            // skip private rule sets
+            if (ruleSets[i].getName().startsWith("%%")) {
+                continue;
+            }
+
+            // try parsing the string with the rule set.  If it gets past the
+            // high-water mark, update the high-water mark and the result
+            tempResult = ruleSets[i].parse(workingText, workingPos, Double.MAX_VALUE);
+            if (workingPos.getIndex() > highWaterMark.getIndex()) {
+                result = tempResult;
+                highWaterMark.setIndex(workingPos.getIndex());
+            }
+// commented out because this API on ParsePosition doesn't exist in 1.1.x
+//            if (workingPos.getErrorIndex() > highWaterMark.getErrorIndex()) {
+//                highWaterMark.setErrorIndex(workingPos.getErrorIndex());
+//            }
+
+            // if we manage to use up all the characters in the string,
+            // we don't have to try any more rule sets
+            if (highWaterMark.getIndex() == workingText.length()) {
+                break;
+            }
+
+            // otherwise, reset our internal parse position to the
+            // beginning and try again with the next rule set
+            workingPos.setIndex(0);
+        }
+
+        // add the high water mark to our original parse position and
+        // return the result
+        parsePosition.setIndex(parsePosition.getIndex() + highWaterMark.getIndex());
+// commented out because this API on ParsePosition doesn't exist in 1.1.x
+//        if (highWaterMark.getIndex() == 0) {
+//            parsePosition.setErrorIndex(parsePosition.getIndex() + highWaterMark.getErrorIndex());
+//        }
+        return result;
+    }
+
+    /**
+     * Turns lenient parse mode on and off.
+     *
+     * When in lenient parse mode, the formatter uses a Collator for parsing the text.
+     * Only primary differences are treated as significant.  This means that case
+     * differences, accent differences, alternate spellings of the same letter
+     * (e.g., ae and a-umlaut in German), ignorable characters, etc. are ignored in
+     * matching the text.  In many cases, numerals will be accepted in place of words
+     * or phrases as well.
+     *
+     * For example, all of the following will correctly parse as 255 in English in
+     * lenient-parse mode:
+     * <br>"two hundred fifty-five"
+     * <br>"two hundred fifty five"
+     * <br>"TWO HUNDRED FIFTY-FIVE"
+     * <br>"twohundredfiftyfive"
+     * <br>"2 hundred fifty-5"
+     *
+     * The Collator used is determined by the locale that was
+     * passed to this object on construction.  The description passed to this object
+     * on construction may supply additional collation rules that are appended to the
+     * end of the default collator for the locale, enabling additional equivalences
+     * (such as adding more ignorable characters or permitting spelled-out version of
+     * symbols; see the demo program for examples).
+     *
+     * It's important to emphasize that even strict parsing is relatively lenient: it
+     * will accept some text that it won't produce as output.  In English, for example,
+     * it will correctly parse "two hundred zero" and "fifteen hundred".
+     *
+     * @param enabled If true, turns lenient-parse mode on; if false, turns it off.
+     * @see java.text.RuleBasedCollator
+     */
+    public void setLenientParseMode(boolean enabled) {
+        lenientParse = enabled;
+
+        // if we're leaving lenient-parse mode, throw away the collator
+        // we've been using
+        if (!enabled) {
+            collator = null;
+        }
+    }
+
+    /**
+     * Returns true if lenient-parse mode is turned on.  Lenient parsing is off
+     * by default.
+     * @return true if lenient-parse mode is turned on.
+     * @see #setLenientParseMode
+     */
+    public boolean lenientParseEnabled() {
+        return lenientParse;
+    }
+
+    /**
+     * Override the default rule set to use.  If ruleSetName is null, reset
+     * to the initial default rule set.
+     * @param ruleSetName the name of the rule set, or null to reset the initial default.
+     * @throws IllegalArgumentException if ruleSetName is not the name of a public ruleset.
+     */
+    public void setDefaultRuleSet(String ruleSetName) {
+        if (ruleSetName == null) {
+            initDefaultRuleSet();
+        } else if (ruleSetName.startsWith("%%")) {
+            throw new IllegalArgumentException("cannot use private rule set: " + ruleSetName);
+        } else {
+            defaultRuleSet = findRuleSet(ruleSetName);
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // package-internal API
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns a reference to the formatter's default rule set.  The default
+     * rule set is the last public rule set in the description, or the one
+     * most recently set by setDefaultRuleSet.
+     * @return The formatter's default rule set.
+     */
+    NFRuleSet getDefaultRuleSet() {
+        return defaultRuleSet;
+    }
+
+    /**
+     * Returns the collator to use for lenient parsing.  The collator is lazily created:
+     * this function creates it the first time it's called.
+     * @return The collator to use for lenient parsing, or null if lenient parsing
+     * is turned off.
+     */
+    Collator getCollator() {
+        // lazy-evaulate the collator
+        if (collator == null && lenientParse) {
+            try {
+                // create a default collator based on the formatter's locale,
+                // then pull out that collator's rules, append any additional
+                // rules specified in the description, and create a _new_
+                // collator based on the combinaiton of those rules
+                RuleBasedCollator temp = (RuleBasedCollator)collator.getInstance(locale);
+                String rules = temp.getRules() + lenientParseRules;
+
+                collator = new RuleBasedCollator(rules);
+                collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+            }
+            catch (Exception e) {
+                // If we get here, it means we have a malformed set of
+                // collation rules, which hopefully won't happen
+                e.printStackTrace();
+                collator = null;
+            }
+        }
+
+        // if lenient-parse mode is off, this will be null
+        // (see setLenientParseMode())
+        return collator;
+    }
+
+    /**
+     * Returns the DecimalFormatSymbols object that should be used by all DecimalFormat
+     * instances owned by this formatter.  This object is lazily created: this function
+     * creates it the first time it's called.
+     * @return The DecimalFormatSymbols object that should be used by all DecimalFormat
+     * instances owned by this formatter.
+     */
+    DecimalFormatSymbols getDecimalFormatSymbols() {
+        // lazy-evaluate the DecimalFormatSymbols object.  This object
+        // is shared by all DecimalFormat instances belonging to this
+        // formatter
+        if (decimalFormatSymbols == null) {
+            decimalFormatSymbols = new DecimalFormatSymbols(locale);
+        }
+        return decimalFormatSymbols;
+    }
+
+    //-----------------------------------------------------------------------
+    // construction implementation
+    //-----------------------------------------------------------------------
+
+    /**
+     * This function parses the description and uses it to build all of
+     * internal data structures that the formatter uses to do formatting
+     * @param description The description of the formatter's desired behavior.
+     * This is either passed in by the caller or loaded out of a resource
+     * by one of the constructors, and is in the description format specified
+     * in the class docs.
+     */
+    private void init(String description) {
+        // start by stripping the trailing whitespace from all the rules
+        // (this is all the whitespace follwing each semicolon in the
+        // description).  This allows us to look for rule-set boundaries
+        // by searching for ";%" without having to worry about whitespace
+        // between the ; and the %
+        description = stripWhitespace(description);
+
+        // check to see if there's a set of lenient-parse rules.  If there
+        // is, pull them out into our temporary holding place for them,
+        // and delete them from the description before the real desciption-
+        // parsing code sees them
+        int lp = description.indexOf("%%lenient-parse:");
+        if (lp != -1) {
+            // we've got to make sure we're not in the middle of a rule
+            // (where "%%lenient-parse" would actually get treated as
+            // rule text)
+            if (lp == 0 || description.charAt(lp - 1) == ';') {
+                // locate the beginning and end of the actual collation
+                // rules (there may be whitespace between the name and
+                // the first token in the description)
+                int lpEnd = description.indexOf(";%", lp);
+
+                if (lpEnd == -1) {
+                    lpEnd = description.length() - 1;
+                }
+                int lpStart = lp + "%%lenient-parse:".length();
+                while (UCharacterProperty.isRuleWhiteSpace(description.charAt(lpStart))) {
+                    ++lpStart;
+                }
+
+                // copy out the lenient-parse rules and delete them
+                // from the description
+                lenientParseRules = description.substring(lpStart, lpEnd);
+
+                StringBuffer temp = new StringBuffer(description.substring(0, lp));
+                if (lpEnd + 1 < description.length()) {
+                    temp.append(description.substring(lpEnd + 1));
+                }
+                description = temp.toString();
+            }
+        }
+
+        // pre-flight parsing the description and count the number of
+        // rule sets (";%" marks the end of one rule set and the beginning
+        // of the next)
+        int numRuleSets = 0;
+        for (int p = description.indexOf(";%"); p != -1; p = description.indexOf(";%", p)) {
+            ++numRuleSets;
+            ++p;
+        }
+        ++numRuleSets;
+
+        // our rule list is an array of the apprpriate size
+        ruleSets = new NFRuleSet[numRuleSets];
+
+        // divide up the descriptions into individual rule-set descriptions
+        // and store them in a temporary array.  At each step, we also
+        // new up a rule set, but all this does is initialize its name
+        // and remove it from its description.  We can't actually parse
+        // the rest of the descriptions and finish initializing everything
+        // because we have to know the names and locations of all the rule
+        // sets before we can actually set everything up
+        String[] ruleSetDescriptions = new String[numRuleSets];
+
+        int curRuleSet = 0;
+        int start = 0;
+        for (int p = description.indexOf(";%"); p != -1; p = description.indexOf(";%", start)) {
+            ruleSetDescriptions[curRuleSet] = description.substring(start, p + 1);
+            ruleSets[curRuleSet] = new NFRuleSet(ruleSetDescriptions, curRuleSet);
+            ++curRuleSet;
+            start = p + 1;
+        }
+        ruleSetDescriptions[curRuleSet] = description.substring(start);
+        ruleSets[curRuleSet] = new NFRuleSet(ruleSetDescriptions, curRuleSet);
+
+        // now we can take note of the formatter's default rule set, which
+        // is the last public rule set in the description (it's the last
+        // rather than the first so that a user can create a new formatter
+        // from an existing formatter and change its default bevhaior just
+        // by appending more rule sets to the end)
+        initDefaultRuleSet();
+
+        // finally, we can go back through the temporary descriptions
+        // list and finish seting up the substructure (and we throw
+        // away the temporary descriptions as we go)
+        for (int i = 0; i < ruleSets.length; i++) {
+            ruleSets[i].parseRules(ruleSetDescriptions[i], this);
+            ruleSetDescriptions[i] = null;
+        }
+    }
+
+    /**
+     * This function is used by init() to strip whitespace between rules (i.e.,
+     * after semicolons).
+     * @param description The formatter description
+     * @return The description with all the whitespace that follows semicolons
+     * taken out.
+     */
+    private String stripWhitespace(String description) {
+        // since we don't have a method that deletes characters (why?!!)
+        // create a nwe StringBuffer to copy the text into
+        StringBuffer result = new StringBuffer();
+
+        // iterate through the characters...
+        int start = 0;
+        while (start != -1 && start < description.length()) {
+            // seek to the first non-whitespace character...
+            while (start < description.length()
+                   && UCharacterProperty.isRuleWhiteSpace(description.charAt(start))) {
+                ++start;
+            }
+
+            // locate the next semicolon in the text and copyt he text from
+            // our current position up to that semicolon into the result
+            int p;
+            p = description.indexOf(';', start);
+            if (p == -1) {
+                // or if we don't find a semicolon, just copy the rest of
+                // the string into the result
+                result.append(description.substring(start));
+                start = -1;
+            }
+            else if (p < description.length()) {
+                result.append(description.substring(start, p + 1));
+                start = p + 1;
+            }
+
+            // when we get here, we've seeked off the end of the sring, and
+            // we terminate the loop (we continue until *start* is -1 rather
+            // than until *p* is -1, because otherwise we'd miss the last
+            // rule in the description)
+            else {
+                start = -1;
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * This function is called ONLY DURING CONSTRUCTION to fill in the
+     * defaultRuleSet variable once we've set up all the rule sets.
+     * The default rule set is the last public rule set in the description.
+     * (It's the last rather than the first so that a caller can append
+     * text to the end of an existing formatter description to change its
+     * behavior.)
+     */
+    private void initDefaultRuleSet() {
+        // seek backward from the end of the list until we reach a rule set
+        // whose name DOESN'T begin with %%.  That's the default rule set
+        for (int i = ruleSets.length - 1; i >= 0; --i) {
+            if (!ruleSets[i].getName().startsWith("%%")) {
+                defaultRuleSet = ruleSets[i];
+                return;
+            }
+        }
+        defaultRuleSet = ruleSets[ruleSets.length - 1];
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting implementation
+    //-----------------------------------------------------------------------
+
+    /**
+     * Bottleneck through which all the public format() methods
+     * that take a double pass. By the time we get here, we know
+     * which rule set we're using to do the formatting.
+     * @param number The number to format
+     * @param ruleSet The rule set to use to format the number
+     * @return The text that resulted from formatting the number
+     */
+    String format(double number, NFRuleSet ruleSet) {
+        // all API format() routines that take a double vector through
+        // here.  Create an empty string buffer where the result will
+        // be built, and pass it to the rule set (along with an insertion
+        // position of 0 and the number being formatted) to the rule set
+        // for formatting
+        StringBuffer result = new StringBuffer();
+        ruleSet.format(number, result, 0);
+        return result.toString();
+    }
+
+    /**
+     * Bottleneck through which all the public format() methods
+     * that take a long pass. By the time we get here, we know
+     * which rule set we're using to do the formatting.
+     * @param number The number to format
+     * @param ruleSet The rule set to use to format the number
+     * @return The text that resulted from formatting the number
+     */
+    String format(long number, NFRuleSet ruleSet) {
+        // all API format() routines that take a double vector through
+        // here.  We have these two identical functions-- one taking a
+        // double and one taking a long-- the couple digits of precision
+        // that long has but double doesn't (both types are 8 bytes long,
+        // but double has to borrow some of the mantissa bits to hold
+        // the exponent).
+        // Create an empty string buffer where the result will
+        // be built, and pass it to the rule set (along with an insertion
+        // position of 0 and the number being formatted) to the rule set
+        // for formatting
+        StringBuffer result = new StringBuffer();
+        ruleSet.format(number, result, 0);
+        return result.toString();
+    }
+
+    /**
+     * Returns the named rule set.  Throws an IllegalArgumentException
+     * if this formatter doesn't have a rule set with that name.
+     * @param name The name of the desired rule set
+     * @return The rule set with that name
+     */
+    NFRuleSet findRuleSet(String name) throws IllegalArgumentException {
+        for (int i = 0; i < ruleSets.length; i++) {
+            if (ruleSets[i].getName().equals(name)) {
+                return ruleSets[i];
+            }
+        }
+        throw new IllegalArgumentException("No rule set named " + name);
+    }
+}
+
diff --git a/src/com/ibm/icu/text/RuleBasedTransliterator.java b/src/com/ibm/icu/text/RuleBasedTransliterator.java
new file mode 100755
index 0000000..bc2bbff
--- /dev/null
+++ b/src/com/ibm/icu/text/RuleBasedTransliterator.java
@@ -0,0 +1,632 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/RuleBasedTransliterator.java,v $
+ * $Date: 2002/07/26 21:12:36 $
+ * $Revision: 1.57 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.util.Hashtable;
+import java.util.Vector;
+import java.text.ParsePosition;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.data.ResourceReader;
+
+/**
+ * <code>RuleBasedTransliterator</code> is a transliterator
+ * that reads a set of rules in order to determine how to perform
+ * translations. Rule sets are stored in resource bundles indexed by
+ * name. Rules within a rule set are separated by semicolons (';').
+ * To include a literal semicolon, prefix it with a backslash ('\').
+ * Whitespace, as defined by <code>UCharacterProperty.isRuleWhiteSpace()</code>,
+ * is ignored. If the first non-blank character on a line is '#',
+ * the entire line is ignored as a comment. </p>
+ *
+ * <p>Each set of rules consists of two groups, one forward, and one
+ * reverse. This is a convention that is not enforced; rules for one
+ * direction may be omitted, with the result that translations in
+ * that direction will not modify the source text. In addition,
+ * bidirectional forward-reverse rules may be specified for
+ * symmetrical transformations.</p>
+ *
+ * <p><b>Rule syntax</b> </p>
+ *
+ * <p>Rule statements take one of the following forms: </p>
+ *
+ * <dl>
+ *     <dt><code>$alefmadda=\u0622;</code></dt>
+ *     <dd><strong>Variable definition.</strong> The name on the
+ *         left is assigned the text on the right. In this example,
+ *         after this statement, instances of the left hand name,
+ *         &quot;<code>$alefmadda</code>&quot;, will be replaced by
+ *         the Unicode character U+0622. Variable names must begin
+ *         with a letter and consist only of letters, digits, and
+ *         underscores. Case is significant. Duplicate names cause
+ *         an exception to be thrown, that is, variables cannot be
+ *         redefined. The right hand side may contain well-formed
+ *         text of any length, including no text at all (&quot;<code>$empty=;</code>&quot;).
+ *         The right hand side may contain embedded <code>UnicodeSet</code>
+ *         patterns, for example, &quot;<code>$softvowel=[eiyEIY]</code>&quot;.</dd>
+ *     <dd>&nbsp;</dd>
+ *     <dt><code>ai&gt;$alefmadda;</code></dt>
+ *     <dd><strong>Forward translation rule.</strong> This rule
+ *         states that the string on the left will be changed to the
+ *         string on the right when performing forward
+ *         transliteration.</dd>
+ *     <dt>&nbsp;</dt>
+ *     <dt><code>ai&lt;$alefmadda;</code></dt>
+ *     <dd><strong>Reverse translation rule.</strong> This rule
+ *         states that the string on the right will be changed to
+ *         the string on the left when performing reverse
+ *         transliteration.</dd>
+ * </dl>
+ *
+ * <dl>
+ *     <dt><code>ai&lt;&gt;$alefmadda;</code></dt>
+ *     <dd><strong>Bidirectional translation rule.</strong> This
+ *         rule states that the string on the right will be changed
+ *         to the string on the left when performing forward
+ *         transliteration, and vice versa when performing reverse
+ *         transliteration.</dd>
+ * </dl>
+ *
+ * <p>Translation rules consist of a <em>match pattern</em> and an <em>output
+ * string</em>. The match pattern consists of literal characters,
+ * optionally preceded by context, and optionally followed by
+ * context. Context characters, like literal pattern characters,
+ * must be matched in the text being transliterated. However, unlike
+ * literal pattern characters, they are not replaced by the output
+ * text. For example, the pattern &quot;<code>abc{def}</code>&quot;
+ * indicates the characters &quot;<code>def</code>&quot; must be
+ * preceded by &quot;<code>abc</code>&quot; for a successful match.
+ * If there is a successful match, &quot;<code>def</code>&quot; will
+ * be replaced, but not &quot;<code>abc</code>&quot;. The final '<code>}</code>'
+ * is optional, so &quot;<code>abc{def</code>&quot; is equivalent to
+ * &quot;<code>abc{def}</code>&quot;. Another example is &quot;<code>{123}456</code>&quot;
+ * (or &quot;<code>123}456</code>&quot;) in which the literal
+ * pattern &quot;<code>123</code>&quot; must be followed by &quot;<code>456</code>&quot;.
+ * </p>
+ *
+ * <p>The output string of a forward or reverse rule consists of
+ * characters to replace the literal pattern characters. If the
+ * output string contains the character '<code>|</code>', this is
+ * taken to indicate the location of the <em>cursor</em> after
+ * replacement. The cursor is the point in the text at which the
+ * next replacement, if any, will be applied. The cursor is usually
+ * placed within the replacement text; however, it can actually be
+ * placed into the precending or following context by using the
+ * special character '<code>@</code>'. Examples:</p>
+ *
+ * <blockquote>
+ *     <p><code>a {foo} z &gt; | @ bar; # foo -&gt; bar, move cursor
+ *     before a<br>
+ *     {foo} xyz &gt; bar @@|; #&nbsp;foo -&gt; bar, cursor between
+ *     y and z</code></p>
+ * </blockquote>
+ *
+ * <p><b>UnicodeSet</b></p>
+ *
+ * <p><code>UnicodeSet</code> patterns may appear anywhere that
+ * makes sense. They may appear in variable definitions.
+ * Contrariwise, <code>UnicodeSet</code> patterns may themselves
+ * contain variable references, such as &quot;<code>$a=[a-z];$not_a=[^$a]</code>&quot;,
+ * or &quot;<code>$range=a-z;$ll=[$range]</code>&quot;.</p>
+ *
+ * <p><code>UnicodeSet</code> patterns may also be embedded directly
+ * into rule strings. Thus, the following two rules are equivalent:</p>
+ *
+ * <blockquote>
+ *     <p><code>$vowel=[aeiou]; $vowel&gt;'*'; # One way to do this<br>
+ *     [aeiou]&gt;'*';
+ *     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#
+ *     Another way</code></p>
+ * </blockquote>
+ *
+ * <p>See {@link UnicodeSet} for more documentation and examples.</p>
+ *
+ * <p><b>Segments</b></p>
+ *
+ * <p>Segments of the input string can be matched and copied to the
+ * output string. This makes certain sets of rules simpler and more
+ * general, and makes reordering possible. For example:</p>
+ *
+ * <blockquote>
+ *     <p><code>([a-z]) &gt; $1 $1;
+ *     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#
+ *     double lowercase letters<br>
+ *     ([:Lu:]) ([:Ll:]) &gt; $2 $1; # reverse order of Lu-Ll pairs</code></p>
+ * </blockquote>
+ *
+ * <p>The segment of the input string to be copied is delimited by
+ * &quot;<code>(</code>&quot; and &quot;<code>)</code>&quot;. Up to
+ * nine segments may be defined. Segments may not overlap. In the
+ * output string, &quot;<code>$1</code>&quot; through &quot;<code>$9</code>&quot;
+ * represent the input string segments, in left-to-right order of
+ * definition.</p>
+ *
+ * <p><b>Anchors</b></p>
+ *
+ * <p>Patterns can be anchored to the beginning or the end of the text. This is done with the
+ * special characters '<code>^</code>' and '<code>$</code>'. For example:</p>
+ *
+ * <blockquote>
+ *   <p><code>^ a&nbsp;&nbsp; &gt; 'BEG_A'; &nbsp;&nbsp;# match 'a' at start of text<br>
+ *   &nbsp; a&nbsp;&nbsp; &gt; 'A';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # match other instances
+ *   of 'a'<br>
+ *   &nbsp; z $ &gt; 'END_Z'; &nbsp;&nbsp;# match 'z' at end of text<br>
+ *   &nbsp; z&nbsp;&nbsp; &gt; 'Z';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # match other instances
+ *   of 'z'</code></p>
+ * </blockquote>
+ *
+ * <p>It is also possible to match the beginning or the end of the text using a <code>UnicodeSet</code>.
+ * This is done by including a virtual anchor character '<code>$</code>' at the end of the
+ * set pattern. Although this is usually the match chafacter for the end anchor, the set will
+ * match either the beginning or the end of the text, depending on its placement. For
+ * example:</p>
+ *
+ * <blockquote>
+ *   <p><code>$x = [a-z$]; &nbsp;&nbsp;# match 'a' through 'z' OR anchor<br>
+ *   $x 1&nbsp;&nbsp;&nbsp; &gt; 2;&nbsp;&nbsp; # match '1' after a-z or at the start<br>
+ *   &nbsp;&nbsp; 3 $x &gt; 4; &nbsp;&nbsp;# match '3' before a-z or at the end</code></p>
+ * </blockquote>
+ *
+ * <p><b>Example</b> </p>
+ *
+ * <p>The following example rules illustrate many of the features of
+ * the rule language. </p>
+ *
+ * <table border="0" cellpadding="4">
+ *     <tr>
+ *         <td valign="top">Rule 1.</td>
+ *         <td valign="top" nowrap><code>abc{def}&gt;x|y</code></td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top">Rule 2.</td>
+ *         <td valign="top" nowrap><code>xyz&gt;r</code></td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top">Rule 3.</td>
+ *         <td valign="top" nowrap><code>yz&gt;q</code></td>
+ *     </tr>
+ * </table>
+ *
+ * <p>Applying these rules to the string &quot;<code>adefabcdefz</code>&quot;
+ * yields the following results: </p>
+ *
+ * <table border="0" cellpadding="4">
+ *     <tr>
+ *         <td valign="top" nowrap><code>|adefabcdefz</code></td>
+ *         <td valign="top">Initial state, no rules match. Advance
+ *         cursor.</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>a|defabcdefz</code></td>
+ *         <td valign="top">Still no match. Rule 1 does not match
+ *         because the preceding context is not present.</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>ad|efabcdefz</code></td>
+ *         <td valign="top">Still no match. Keep advancing until
+ *         there is a match...</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>ade|fabcdefz</code></td>
+ *         <td valign="top">...</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adef|abcdefz</code></td>
+ *         <td valign="top">...</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adefa|bcdefz</code></td>
+ *         <td valign="top">...</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adefab|cdefz</code></td>
+ *         <td valign="top">...</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adefabc|defz</code></td>
+ *         <td valign="top">Rule 1 matches; replace &quot;<code>def</code>&quot;
+ *         with &quot;<code>xy</code>&quot; and back up the cursor
+ *         to before the '<code>y</code>'.</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adefabcx|yz</code></td>
+ *         <td valign="top">Although &quot;<code>xyz</code>&quot; is
+ *         present, rule 2 does not match because the cursor is
+ *         before the '<code>y</code>', not before the '<code>x</code>'.
+ *         Rule 3 does match. Replace &quot;<code>yz</code>&quot;
+ *         with &quot;<code>q</code>&quot;.</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adefabcxq|</code></td>
+ *         <td valign="top">The cursor is at the end;
+ *         transliteration is complete.</td>
+ *     </tr>
+ * </table>
+ *
+ * <p>The order of rules is significant. If multiple rules may match
+ * at some point, the first matching rule is applied. </p>
+ *
+ * <p>Forward and reverse rules may have an empty output string.
+ * Otherwise, an empty left or right hand side of any statement is a
+ * syntax error. </p>
+ *
+ * <p>Single quotes are used to quote any character other than a
+ * digit or letter. To specify a single quote itself, inside or
+ * outside of quotes, use two single quotes in a row. For example,
+ * the rule &quot;<code>'&gt;'&gt;o''clock</code>&quot; changes the
+ * string &quot;<code>&gt;</code>&quot; to the string &quot;<code>o'clock</code>&quot;.
+ * </p>
+ *
+ * <p><b>Notes</b> </p>
+ *
+ * <p>While a RuleBasedTransliterator is being built, it checks that
+ * the rules are added in proper order. For example, if the rule
+ * &quot;a&gt;x&quot; is followed by the rule &quot;ab&gt;y&quot;,
+ * then the second rule will throw an exception. The reason is that
+ * the second rule can never be triggered, since the first rule
+ * always matches anything it matches. In other words, the first
+ * rule <em>masks</em> the second rule. </p>
+ *
+ * <p>Copyright (c) IBM Corporation 1999-2000. All rights reserved.</p>
+ *
+ * @author Alan Liu
+ * @version $RCSfile: RuleBasedTransliterator.java,v $ $Revision: 1.57 $ $Date: 2002/07/26 21:12:36 $
+ */
+public class RuleBasedTransliterator extends Transliterator {
+
+    private Data data;
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Constructs a new transliterator from the given rules.
+     * @param rules rules, separated by ';'
+     * @param direction either FORWARD or REVERSE.
+     * @exception IllegalArgumentException if rules are malformed
+     * or direction is invalid.
+     */
+    public RuleBasedTransliterator(String ID, String rules, int direction,
+                                   UnicodeFilter filter) {
+        super(ID, filter);
+        if (direction != FORWARD && direction != REVERSE) {
+            throw new IllegalArgumentException("Invalid direction");
+        }
+
+        TransliteratorParser parser = new TransliteratorParser();
+        parser.parse(rules, direction);
+        if (parser.idBlock.length() != 0 ||
+            parser.compoundFilter != null) {
+            throw new IllegalArgumentException("::ID blocks illegal in RuleBasedTransliterator constructor");
+        }
+
+        data = parser.data;
+        setMaximumContextLength(data.ruleSet.getMaximumContextLength());
+    }
+
+    /**
+     * Constructs a new transliterator from the given rules in the
+     * <code>FORWARD</code> direction.
+     * @param rules rules, separated by ';'
+     * @exception IllegalArgumentException if rules are malformed
+     * or direction is invalid.
+     */
+    public RuleBasedTransliterator(String ID, String rules) {
+        this(ID, rules, FORWARD, null);
+    }
+
+    RuleBasedTransliterator(String ID, Data data, UnicodeFilter filter) {
+        super(ID, filter);
+        this.data = data;
+        setMaximumContextLength(data.ruleSet.getMaximumContextLength());
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position index, boolean incremental) {
+        /* We keep start and limit fixed the entire time,
+         * relative to the text -- limit may move numerically if text is
+         * inserted or removed.  The cursor moves from start to limit, with
+         * replacements happening under it.
+         *
+         * Example: rules 1. ab>x|y
+         *                2. yc>z
+         *
+         * |eabcd   start - no match, advance cursor
+         * e|abcd   match rule 1 - change text & adjust cursor
+         * ex|ycd   match rule 2 - change text & adjust cursor
+         * exz|d    no match, advance cursor
+         * exzd|    done
+         */
+
+        /* A rule like
+         *   a>b|a
+         * creates an infinite loop. To prevent that, we put an arbitrary
+         * limit on the number of iterations that we take, one that is
+         * high enough that any reasonable rules are ok, but low enough to
+         * prevent a server from hanging.  The limit is 16 times the
+         * number of characters n, unless n is so large that 16n exceeds a
+         * uint32_t.
+         */
+        int loopCount = 0;
+        int loopLimit = (index.limit - index.start) << 4;
+        if (loopLimit < 0) {
+            loopLimit = 0x7FFFFFFF;
+        }
+
+        while (index.start < index.limit &&
+               loopCount <= loopLimit &&
+               data.ruleSet.transliterate(text, index, incremental)) {
+            ++loopCount;
+        }
+    }
+
+
+    static class Data {
+        public Data() {
+            variableNames = new Hashtable();
+            ruleSet = new TransliterationRuleSet();
+        }
+
+        /**
+         * Rule table.  May be empty.
+         */
+        public TransliterationRuleSet ruleSet;
+
+        /**
+         * Map variable name (String) to variable (char[]).  A variable name
+         * corresponds to zero or more characters, stored in a char[] array in
+         * this hash.  One or more of these chars may also correspond to a
+         * UnicodeSet, in which case the character in the char[] in this hash is
+         * a stand-in: it is an index for a secondary lookup in
+         * data.variables.  The stand-in also represents the UnicodeSet in
+         * the stored rules.
+         */
+        Hashtable variableNames;
+
+        /**
+         * Map category variable (Character) to UnicodeMatcher or UnicodeReplacer.
+         * Variables that correspond to a set of characters are mapped
+         * from variable name to a stand-in character in data.variableNames.
+         * The stand-in then serves as a key in this hash to lookup the
+         * actual UnicodeSet object.  In addition, the stand-in is
+         * stored in the rule text to represent the set of characters.
+         * variables[i] represents character (variablesBase + i).
+         */
+        Object[] variables;
+
+        /**
+         * The character that represents variables[0].  Characters
+         * variablesBase through variablesBase +
+         * variables.length - 1 represent UnicodeSet objects.
+         */
+        char variablesBase;
+
+        /**
+         * Return the UnicodeMatcher represented by the given character, or
+         * null if none.
+         */
+        public UnicodeMatcher lookupMatcher(int standIn) {
+            int i = standIn - variablesBase;
+            return (i >= 0 && i < variables.length)
+                ? (UnicodeMatcher) variables[i] : null;
+        }
+
+        /**
+         * Return the UnicodeReplacer represented by the given character, or
+         * null if none.
+         */
+        public UnicodeReplacer lookupReplacer(int standIn) {
+            int i = standIn - variablesBase;
+            return (i >= 0 && i < variables.length)
+                ? (UnicodeReplacer) variables[i] : null;
+        }
+    }
+
+
+    /**
+     * Return a representation of this transliterator as source rules.
+     * These rules will produce an equivalent transliterator if used
+     * to construct a new transliterator.
+     * @param escapeUnprintable if TRUE then convert unprintable
+     * character to their hex escape representations, \\uxxxx or
+     * \\Uxxxxxxxx.  Unprintable characters are those other than
+     * U+000A, U+0020..U+007E.
+     * @return rules string
+     */
+    public String toRules(boolean escapeUnprintable) {
+        return data.ruleSet.toRules(escapeUnprintable);
+    }
+
+    /**
+     * Return the set of all characters that may be modified by this
+     * Transliterator, ignoring the effect of our filter.
+     */
+    protected UnicodeSet handleGetSourceSet() {
+        return data.ruleSet.getSourceTargetSet(false);
+    }
+
+    /**
+     * Returns the set of all characters that may be generated as
+     * replacement text by this transliterator.
+     */
+    public UnicodeSet getTargetSet() {
+        return data.ruleSet.getSourceTargetSet(true);
+    }
+}
+
+/**
+ * $Log: RuleBasedTransliterator.java,v $
+ * Revision 1.57  2002/07/26 21:12:36  alan
+ * jitterbug 1997: use UCharacterProperty.isRuleWhiteSpace() in parsers
+ *
+ * Revision 1.56  2002/06/28 19:15:52  alan
+ * jitterbug 1434: improve method names; minor cleanup
+ *
+ * Revision 1.55  2002/06/26 18:12:39  alan
+ * jitterbug 1434: initial public implementation of getSourceSet and getTargetSet
+ *
+ * Revision 1.54  2002/02/25 22:43:58  ram
+ * Move Utility class to icu.impl
+ *
+ * Revision 1.53  2002/02/16 03:06:13  Mohan
+ * ICU4J reorganization
+ *
+ * Revision 1.52  2002/02/07 00:53:54  alan
+ * jitterbug 1234: make output side of RBTs object-oriented; rewrite ID parsers and modularize them; implement &Any-Lower() support
+ *
+ * Revision 1.51  2001/11/29 22:31:18  alan
+ * jitterbug 1560: add source-set methods and TransliteratorUtility class
+ *
+ * Revision 1.50  2001/11/27 22:07:33  alan
+ * jitterbug 1389: incorporate Mark's review comments - comments only
+ *
+ * Revision 1.49  2001/10/10 20:26:27  alan
+ * jitterbug 81: initial implementation of compound filters in IDs and ::ID blocks
+ *
+ * Revision 1.48  2001/10/05 18:15:54  alan
+ * jitterbug 74: finish port of Source-Target/Variant code incl. TransliteratorRegistry and tests
+ *
+ * Revision 1.47  2001/10/03 00:14:22  alan
+ * jitterbug 73: finish quantifier and supplemental char support
+ *
+ * Revision 1.46  2001/09/26 18:00:06  alan
+ * jitterbug 67: sync parser with icu4c, allow unlimited, nested segments
+ *
+ * Revision 1.45  2001/09/24 19:57:17  alan
+ * jitterbug 60: implement toPattern in UnicodeSet; update UnicodeFilter.contains to take an int; update UnicodeSet to support code points to U+10FFFF
+ *
+ * Revision 1.44  2001/09/21 21:24:04  alan
+ * jitterbug 64: allow ::ID blocks in rules
+ *
+ * Revision 1.43  2001/09/19 17:43:37  alan
+ * jitterbug 60: initial implementation of toRules()
+ *
+ * Revision 1.42  2001/02/20 17:59:40  alan4j
+ * Remove backslash-u from log
+ *
+ * Revision 1.41  2001/02/16 18:53:55  alan4j
+ * Handle backslash-u escapes
+ *
+ * Revision 1.40  2001/02/03 00:46:21  alan4j
+ * Load RuleBasedTransliterator files from UTF8 files instead of ResourceBundles
+ *
+ * Revision 1.39  2000/08/31 17:11:42  alan4j
+ * Implement anchors.
+ *
+ * Revision 1.38  2000/08/30 20:40:30  alan4j
+ * Implement anchors.
+ *
+ * Revision 1.37  2000/07/12 16:31:36  alan4j
+ * Simplify loop limit logic
+ *
+ * Revision 1.36  2000/06/29 21:59:23  alan4j
+ * Fix handling of Transliterator.Position fields
+ *
+ * Revision 1.35  2000/06/28 20:49:54  alan4j
+ * Fix handling of Positions fields
+ *
+ * Revision 1.34  2000/06/28 20:36:32  alan4j
+ * Clean up Transliterator::Position - rename temporary names
+ *
+ * Revision 1.33  2000/06/28 20:31:43  alan4j
+ * Clean up Transliterator::Position and rename fields (related to jitterbug 450)
+ *
+ * Revision 1.32  2000/05/24 22:21:00  alan4j
+ * Compact UnicodeSets
+ *
+ * Revision 1.31  2000/05/23 16:48:27  alan4j
+ * Fix doc; remove unused auto
+ *
+ * Revision 1.30  2000/05/18 22:49:51  alan
+ * Update docs
+ *
+ * Revision 1.29  2000/04/28 00:25:42  alan
+ * Improve error reporting
+ *
+ * Revision 1.28  2000/04/25 17:38:00  alan
+ * Minor parser cleanup.
+ *
+ * Revision 1.27  2000/04/25 01:42:58  alan
+ * Allow arbitrary length variable values. Clean up Data API. Update javadocs.
+ *
+ * Revision 1.26  2000/04/22 01:25:10  alan
+ * Add support for cursor positioner '@'; update javadoc
+ *
+ * Revision 1.25  2000/04/22 00:08:43  alan
+ * Narrow range to 21 - 7E for mandatory quoting.
+ *
+ * Revision 1.24  2000/04/22 00:03:54  alan
+ * Disallow unquoted special chars. Report multiple errors at once.
+ *
+ * Revision 1.23  2000/04/21 22:23:40  alan
+ * Clean up parseReference. Previous log should read 'delegate', not 'delete'.
+ *
+ * Revision 1.22  2000/04/21 22:16:29  alan
+ * Delete variable name parsing to SymbolTable interface to consolidate parsing code.
+ *
+ * Revision 1.21  2000/04/21 21:16:40  alan
+ * Modify rule syntax
+ *
+ * Revision 1.20  2000/04/19 17:35:23  alan
+ * Update javadoc; fix compile error
+ *
+ * Revision 1.19  2000/04/19 16:34:18  alan
+ * Add segment support.
+ *
+ * Revision 1.18  2000/04/12 20:17:45  alan
+ * Delegate replace operation to rule object
+ *
+ * Revision 1.17  2000/03/10 04:07:23  johnf
+ * Copyright update
+ *
+ * Revision 1.16  2000/02/24 20:46:49  liu
+ * Add infinite loop check
+ *
+ * Revision 1.15  2000/02/10 07:36:25  johnf
+ * fixed imports for com.ibm.icu.impl.Utility
+ *
+ * Revision 1.14  2000/02/03 18:18:42  Alan
+ * Use array rather than hashtable for char-to-set map
+ *
+ * Revision 1.13  2000/01/27 18:59:19  Alan
+ * Use Position rather than int[] and move all subclass overrides to one method (handleTransliterate)
+ *
+ * Revision 1.12  2000/01/18 17:51:09  Alan
+ * Remove "keyboard" from method names. Make maximum context a field of Transliterator, and have subclasses set it.
+ *
+ * Revision 1.11  2000/01/18 02:30:49  Alan
+ * Add Jamo-Hangul, Hangul-Jamo, fix rules, add compound ID support
+ *
+ * Revision 1.10  2000/01/13 23:53:23  Alan
+ * Fix bugs found during ICU port
+ *
+ * Revision 1.9  2000/01/11 04:12:06  Alan
+ * Cleanup, embellish comments
+ *
+ * Revision 1.8  2000/01/11 02:25:03  Alan
+ * Rewrite UnicodeSet and RBT parsers for better performance and new syntax
+ *
+ * Revision 1.7  2000/01/06 01:36:36  Alan
+ * Allow string arrays in rule resource bundles
+ *
+ * Revision 1.6  2000/01/04 21:43:57  Alan
+ * Add rule indexing, and move masking check to TransliterationRuleSet.
+ *
+ * Revision 1.5  1999/12/22 01:40:54  Alan
+ * Consolidate rule pattern anteContext, key, and postContext into one string.
+ *
+ * Revision 1.4  1999/12/22 01:05:54  Alan
+ * Improve masking checking; turn it off by default, for better performance
+ */
diff --git a/src/com/ibm/icu/text/SCSU.java b/src/com/ibm/icu/text/SCSU.java
new file mode 100755
index 0000000..931d402
--- /dev/null
+++ b/src/com/ibm/icu/text/SCSU.java
@@ -0,0 +1,190 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/SCSU.java,v $ 
+ * $Date: 2002/02/16 03:06:14 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * An interface defining  constants for the Standard Compression Scheme
+ * for Unicode (SCSU) as outlined in <A
+ * HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical
+ * Report #6</A>.
+ *
+ * @author Stephen F. Booth
+ * @version 1.1 05 Aug 99
+ * @version 1.0 26 Jul 99
+ */
+interface SCSU
+{
+    //==========================
+    // Generic window shift
+    //==========================
+    final static int COMPRESSIONOFFSET           = 0x80;
+
+    //==========================
+    // Number of windows
+    //==========================
+    final static int NUMWINDOWS                  = 8;
+    final static int NUMSTATICWINDOWS            = 8;
+
+    //==========================
+    // Indicates a window index is invalid
+    //==========================
+    final static int INVALIDWINDOW               = -1;
+
+    //==========================
+    // Indicates a character doesn't exist in input (past end of buffer)
+    //==========================
+    final static int INVALIDCHAR                 = -1;
+
+    //==========================
+    // Compression modes
+    //==========================
+    final static int SINGLEBYTEMODE              = 0;
+    final static int UNICODEMODE                 = 1;
+
+    //==========================
+    // Maximum value for a window's index
+    //==========================
+    final static int MAXINDEX                    = 0xFF;
+
+    //==========================
+    // Reserved index value (characters belongs to first block)
+    //==========================
+    final static int RESERVEDINDEX               = 0x00;
+
+    //==========================
+    // Indices for scripts which cross a half-block boundary
+    //==========================
+    final static int LATININDEX                  = 0xF9;
+    final static int IPAEXTENSIONINDEX           = 0xFA;
+    final static int GREEKINDEX                  = 0xFB;
+    final static int ARMENIANINDEX               = 0xFC;
+    final static int HIRAGANAINDEX               = 0xFD;
+    final static int KATAKANAINDEX               = 0xFE;
+    final static int HALFWIDTHKATAKANAINDEX      = 0xFF;
+
+    //==========================
+    // Single-byte mode tags
+    //==========================
+    final static int SDEFINEX                    = 0x0B;
+    final static int SRESERVED                   = 0x0C;  // reserved value
+    final static int SQUOTEU                     = 0x0E;
+    final static int SCHANGEU                    = 0x0F;
+
+    final static int SQUOTE0                     = 0x01;
+    final static int SQUOTE1                     = 0x02;
+    final static int SQUOTE2                     = 0x03;
+    final static int SQUOTE3                     = 0x04;
+    final static int SQUOTE4                     = 0x05;
+    final static int SQUOTE5                     = 0x06;
+    final static int SQUOTE6                     = 0x07;
+    final static int SQUOTE7                     = 0x08;
+
+    final static int SCHANGE0                    = 0x10;
+    final static int SCHANGE1                    = 0x11;
+    final static int SCHANGE2                    = 0x12;
+    final static int SCHANGE3                    = 0x13;
+    final static int SCHANGE4                    = 0x14;
+    final static int SCHANGE5                    = 0x15;
+    final static int SCHANGE6                    = 0x16;
+    final static int SCHANGE7                    = 0x17;
+
+    final static int SDEFINE0                    = 0x18;
+    final static int SDEFINE1                    = 0x19;
+    final static int SDEFINE2                    = 0x1A;
+    final static int SDEFINE3                    = 0x1B;
+    final static int SDEFINE4                    = 0x1C;
+    final static int SDEFINE5                    = 0x1D;
+    final static int SDEFINE6                    = 0x1E;
+    final static int SDEFINE7                    = 0x1F;
+
+    //==========================
+    // Unicode mode tags
+    //==========================
+    final static int UCHANGE0                    = 0xE0;
+    final static int UCHANGE1                    = 0xE1;
+    final static int UCHANGE2                    = 0xE2;
+    final static int UCHANGE3                    = 0xE3;
+    final static int UCHANGE4                    = 0xE4;
+    final static int UCHANGE5                    = 0xE5;
+    final static int UCHANGE6                    = 0xE6;
+    final static int UCHANGE7                    = 0xE7;
+
+    final static int UDEFINE0                    = 0xE8;
+    final static int UDEFINE1                    = 0xE9;
+    final static int UDEFINE2                    = 0xEA;
+    final static int UDEFINE3                    = 0xEB;
+    final static int UDEFINE4                    = 0xEC;
+    final static int UDEFINE5                    = 0xED;
+    final static int UDEFINE6                    = 0xEE;
+    final static int UDEFINE7                    = 0xEF;
+
+    final static int UQUOTEU                     = 0xF0;
+    final static int UDEFINEX                    = 0xF1;
+    final static int URESERVED                   = 0xF2;  // reserved value
+
+
+    //==========================
+    // Class variables
+    //==========================
+
+    /** For window offset mapping */
+    final static int [] sOffsetTable = { 
+        // table generated by CompressionTableGenerator
+        0x0, 0x80, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x400,
+	0x480, 0x500, 0x580, 0x600, 0x680, 0x700, 0x780, 0x800, 0x880,
+	0x900, 0x980, 0xa00, 0xa80, 0xb00, 0xb80, 0xc00, 0xc80, 0xd00,
+	0xd80, 0xe00, 0xe80, 0xf00, 0xf80, 0x1000, 0x1080, 0x1100,
+	0x1180, 0x1200, 0x1280, 0x1300, 0x1380, 0x1400, 0x1480,
+	0x1500, 0x1580, 0x1600, 0x1680, 0x1700, 0x1780, 0x1800,
+	0x1880, 0x1900, 0x1980, 0x1a00, 0x1a80, 0x1b00, 0x1b80,
+	0x1c00, 0x1c80, 0x1d00, 0x1d80, 0x1e00, 0x1e80, 0x1f00,
+	0x1f80, 0x2000, 0x2080, 0x2100, 0x2180, 0x2200, 0x2280,
+	0x2300, 0x2380, 0x2400, 0x2480, 0x2500, 0x2580, 0x2600,
+	0x2680, 0x2700, 0x2780, 0x2800, 0x2880, 0x2900, 0x2980,
+	0x2a00, 0x2a80, 0x2b00, 0x2b80, 0x2c00, 0x2c80, 0x2d00,
+	0x2d80, 0x2e00, 0x2e80, 0x2f00, 0x2f80, 0x3000, 0x3080,
+	0x3100, 0x3180, 0x3200, 0x3280, 0x3300, 0x3380, 0xe000,
+	0xe080, 0xe100, 0xe180, 0xe200, 0xe280, 0xe300, 0xe380,
+	0xe400, 0xe480, 0xe500, 0xe580, 0xe600, 0xe680, 0xe700,
+	0xe780, 0xe800, 0xe880, 0xe900, 0xe980, 0xea00, 0xea80,
+	0xeb00, 0xeb80, 0xec00, 0xec80, 0xed00, 0xed80, 0xee00,
+	0xee80, 0xef00, 0xef80, 0xf000, 0xf080, 0xf100, 0xf180,
+	0xf200, 0xf280, 0xf300, 0xf380, 0xf400, 0xf480, 0xf500,
+	0xf580, 0xf600, 0xf680, 0xf700, 0xf780, 0xf800, 0xf880,
+	0xf900, 0xf980, 0xfa00, 0xfa80, 0xfb00, 0xfb80, 0xfc00,
+	0xfc80, 0xfd00, 0xfd80, 0xfe00, 0xfe80, 0xff00, 0xff80, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0x250, 0x370,
+	0x530, 0x3040, 0x30a0, 0xff60  
+    };
+
+    /** Static compression window offsets */
+    final static int [] sOffsets = {
+        0x0000,  // for quoting single-byte mode tags
+        0x0080,  // Latin-1 Supplement
+        0x0100,  // Latin Extended-A
+        0x0300,  // Combining Diacritical Marks
+        0x2000,  // General Punctuation
+        0x2080,  // Curency Symbols
+        0x2100,  // Letterlike Symbols and Number Forms
+        0x3000   // CJK Symbols and Punctuation
+    };
+
+};
+
diff --git a/src/com/ibm/icu/text/SearchIterator.java b/src/com/ibm/icu/text/SearchIterator.java
new file mode 100755
index 0000000..0794dd1
--- /dev/null
+++ b/src/com/ibm/icu/text/SearchIterator.java
@@ -0,0 +1,767 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/SearchIterator.java,v $ 
+ * $Date: 2002/07/12 21:59:22 $ 
+ * $Revision: 1.11 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.text.CharacterIterator;
+
+/**
+ * <p>SearchIterator is an abstract base class that defines a protocol
+ * for text searching. Subclasses provide concrete implementations of
+ * various search algorithms.  A concrete subclass, StringSearch, is
+ * provided that implements language-sensitive pattern matching based
+ * on the comparison rules defined in a RuleBasedCollator
+ * object. Instances of SearchIterator maintain a current position and
+ * scan over the target text, returning the indices where a match is
+ * found and the length of each match. Generally, the sequence of forward 
+ * matches will be equivalent to the sequence of backward matches.One
+ * case where this statement may not hold is when non-overlapping mode 
+ * is set on and there are continuous repetitive patterns in the text. 
+ * Consider the case searching for pattern "aba" in the text 
+ * "ababababa", setting overlapping mode off will produce forward matches
+ * at offsets 0, 4. However when a backwards search is done, the
+ * results will be at offsets 6 and 2.</p>
+ * 
+ * <p>If matches searched for have boundary restrictions. BreakIterators 
+ * can be used to define the valid boundaries of such a match. Once a 
+ * BreakIterator is set, potential matches will be tested against the
+ * BreakIterator to determine if the boundaries are valid and that all
+ * characters in the potential match are equivalent to the pattern 
+ * searched for. For example, looking for the pattern "fox" in the text
+ * "foxy fox" will produce match results at offset 0 and 5 with length 3
+ * if no BreakIterators were set. However if a WordBreakIterator is set,
+ * the only match that would be found will be at the offset 5. Since,
+ * the SearchIterator guarantees that if a BreakIterator is set, all its
+ * matches will match the given pattern exactly, a potential match that 
+ * passes the BreakIterator might still not produce a valid match. For 
+ * instance the pattern "e" will not be found in the string 
+ * "&#92;u00e9" (latin small letter e with acute) if a 
+ * CharacterBreakIterator is used. Even though "e" is
+ * a part of the character "&#92;u00e9" and the potential match at
+ * offset 0 length 1 passes the CharacterBreakIterator test, "&#92;u00e9"
+ * is not equivalent to "e", hence the SearchIterator rejects the potential
+ * match. By default, the SearchIterator
+ * does not impose any boundary restriction on the matches, it will 
+ * return all results that match the pattern. Illustrating with the 
+ * above example, "e" will
+ * be found in the string "&#92;u00e9" if no BreakIterator is
+ * specified.</p>
+ * 
+ * <p>SearchIterator also provides a means to handle overlapping
+ * matches via the API setOverlapping(boolean). For example, if
+ * overlapping mode is set, searching for the pattern "abab" in the
+ * text "ababab" will match at positions 0 and 2, whereas if
+ * overlapping is not set, SearchIterator will only match at position
+ * 0. By default, overlapping mode is not set.</p>
+ * 
+ * <p>The APIs in SearchIterator are similar to that of other text
+ * iteration classes such as BreakIterator. Using this class, it is
+ * easy to scan through text looking for all occurances of a
+ * match.</p>
+ * <p>
+ * Example of use:<br>
+ * <pre>
+ * String target = "The quick brown fox jumped over the lazy fox";
+ * String pattern = "fox";
+ * SearchIterator iter = new StringSearch(pattern, target);
+ * for (int pos = iter.first(); pos != SearchIterator.DONE; 
+ *                                                       pos = iter.next()) {
+ *     // println matches at offset 16 and 41 with length 3
+ *     System.out.println("Found match at " + pos + ", length is " 
+ *                        + iter.getMatchLength());
+ * }
+ * target = "ababababa";
+ * pattern = "aba";
+ * iter.setTarget(new StringCharacterIterator(pattern));
+ * iter.setOverlapping(false);
+ * System.out.println("Overlapping mode set to false");
+ * System.out.println("Forward matches of pattern " + pattern + " in text "
+ *                    + text + ": ");
+ * for (int pos = iter.first(); pos != SearchIterator.DONE; 
+ *                                                       pos = iter.next()) {
+ *     // println matches at offset 0 and 4 with length 3
+ *     System.out.println("offset " + pos + ", length " 
+ *                        + iter.getMatchLength());
+ * }
+ * System.out.println("Backward matches of pattern " + pattern + " in text "
+ *                    + text + ": ");
+ * for (int pos = iter.last(); pos != SearchIterator.DONE; 
+ *                                                    pos = iter.previous()) {
+ *     // println matches at offset 6 and 2 with length 3
+ *     System.out.println("offset " + pos + ", length " 
+ *                        + iter.getMatchLength());
+ * }
+ * System.out.println("Overlapping mode set to true");
+ * System.out.println("Index set to 2");
+ * iter.setIndex(2);
+ * iter.setOverlapping(true);
+ * System.out.println("Forward matches of pattern " + pattern + " in text "
+ *                    + text + ": ");
+ * for (int pos = iter.first(); pos != SearchIterator.DONE; 
+ *                                                       pos = iter.next()) {
+ *     // println matches at offset 2, 4 and 6 with length 3
+ *     System.out.println("offset " + pos + ", length " 
+ *                        + iter.getMatchLength());
+ * }
+ * System.out.println("Index set to 2");
+ * iter.setIndex(2);
+ * System.out.println("Backward matches of pattern " + pattern + " in text "
+ *                    + text + ": ");
+ * for (int pos = iter.last(); pos != SearchIterator.DONE; 
+ *                                                    pos = iter.previous()) {
+ *     // println matches at offset 0 with length 3
+ *     System.out.println("offset " + pos + ", length " 
+ *                        + iter.getMatchLength());
+ * }
+ * </pre>
+ * </p>
+ * @author Laura Werner, synwee
+ * @since release 1.0
+ * @draft release 2.2
+ * @see BreakIterator
+ */
+public abstract class SearchIterator 
+{
+	
+	// public data members -------------------------------------------------
+	
+    /**
+     * DONE is returned by previous() and next() after all valid matches have 
+     * been returned, and by first() and last() if there are no matches at all.
+     * @see #previous
+     * @see #next
+     */
+    public static final int DONE = -1;
+    
+    // public methods -----------------------------------------------------
+    
+    // public setters -----------------------------------------------------
+    
+    /**
+     * <p>
+     * Sets the position in the target text at which the next search will start.
+     * This method clears any previous match.
+     * </p>
+     * @param position position from which to start the next search
+     * @exception IndexOutOfBoundsException thrown if argument position is out
+     *            of the target text range.
+     * @see #getIndex
+     * @draft release 2.2
+     */
+    public void setIndex(int position) {
+        if (position < targetText.getBeginIndex() 
+            || position > targetText.getEndIndex()) {
+            throw new IndexOutOfBoundsException(
+                "setIndex(int) expected position to be between " +
+                targetText.getBeginIndex() + " and " + targetText.getEndIndex());
+        }
+        m_setOffset_ = position;
+        m_reset_ = false;
+        matchLength = 0;
+    }
+	
+	/**
+	 * <p>
+     * Determines whether overlapping matches are returned. See the class 
+     * documentation for more information about overlapping matches.
+     * </p>
+	 * <p>
+     * The default setting of this property is false
+     * </p>
+	 * @param allowOverlap flag indicator if overlapping matches are allowed
+     * @see #isOverlapping
+	 * @draft release 2.2
+	 */
+	public void setOverlapping(boolean allowOverlap)
+	{
+		m_isOverlap_ = allowOverlap;
+	}
+	
+	/**
+     * Set the BreakIterator that is used to restrict the points at which 
+     * matches are detected.
+     * Using <tt>null</tt> as the parameter is legal; it means that break 
+     * detection should not be attempted.
+     * See class documentation for more information.
+     * @param breakiter A BreakIterator that will be used to restrict the 
+     * 					points at which matches are detected.
+     * @see #getBreakIterator
+     * @see BreakIterator
+     */
+    public void setBreakIterator(BreakIterator breakiter) 
+    {
+        breakIterator = breakiter;
+        if (breakIterator != null) {
+        	breakIterator.setText(targetText);
+        }
+    }
+    
+    /**
+     * Set the target text to be searched. Text iteration will then begin at 
+ 	 * the start of the text string. This method is useful if you want to 
+     * reuse an iterator to search within a different body of text.
+	 * @param text new text iterator to look for match, 
+	 * @exception IllegalArgumentException thrown when text is null or has
+	 * 			  0 length
+	 * @see #getTarget
+	 * @draft ICU 2.0
+	 */
+	public void setTarget(CharacterIterator text)
+	{
+		if (text == null || text.getEndIndex() == text.getIndex()) {
+            throw new IllegalArgumentException("Illegal null or empty text");
+        }
+        
+        targetText = text;
+        targetText.setIndex(targetText.getBeginIndex());
+        matchLength = 0;
+        m_reset_ = true;
+        m_isForwardSearching_ = true;
+        if (breakIterator != null) {
+        	breakIterator.setText(targetText);
+        }
+	}
+
+	// public getters ----------------------------------------------------
+	
+	/**
+     * <p>
+     * Returns the index of the most recent match in the target text.
+	 * This call returns a valid result only after a successful call to 
+	 * {@link #first}, {@link #next}, {@link #previous}, or {@link #last}.
+	 * Just after construction, or after a searching method returns 
+	 * <tt>DONE</tt>, this method will return <tt>DONE</tt>.
+     * </p>
+	 * <p>
+     * Use <tt>getMatchLength</tt> to get the length of the matched text.
+     * <tt>getMatchedText</tt> will return the subtext in the searched 
+     * target text from index getMatchStart() with length getMatchLength(). 
+     * </p>
+	 * @return index to a substring within the text string that is being 
+	 *         searched.
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #first
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+	 * @draft release 2.2
+	 */
+	public int getMatchStart()
+	{
+        return m_lastMatchStart_;
+	}
+
+	/**
+     * Return the index in the target text at which the iterator is currently
+     * positioned. 
+     * If the iteration has gone past the end of the target text, or past 
+     * the beginning for a backwards search, {@link #DONE} is returned.
+     * @return index in the target text at which the iterator is currently 
+     *         positioned.
+     * @draft release 2.2
+     * @see #first
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     */
+    public abstract int getIndex();
+    
+    /**
+     * <p>
+     * Returns the length of the most recent match in the target text. 
+     * This call returns a valid result only after a successful
+     * call to {@link #first}, {@link #next}, {@link #previous}, or 
+     * {@link #last}.
+     * Just after construction, or after a searching method returns
+     * <tt>DONE</tt>, this method will return 0. See getMatchStart() for 
+     * more details.
+     * </p>
+     * @return The length of the most recent match in the target text, or 0 if 
+     *         there is no match.
+     * @see #getMatchStart
+     * @see #getMatchedText
+     * @see #first
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     */
+    public int getMatchLength() 
+    {
+        return matchLength;
+    }
+    
+    /**
+     * Returns the BreakIterator that is used to restrict the indexes at which 
+     * matches are detected. This will be the same object that was passed to 
+     * the constructor or to <code>setBreakIterator</code>.
+     * If the BreakIterator has not been set, <tt>null</tt> will be returned.
+     * See setBreakIterator for more information.
+     * @return the BreakIterator set to restrict logic matches
+     * @see #setBreakIterator
+     * @see BreakIterator
+     */
+    public BreakIterator getBreakIterator() 
+    {
+        return breakIterator;
+    }
+    
+    /**
+     * Return the target text that is being searched.
+     * @return target text being searched.
+     * @see #setTarget
+     */
+    public CharacterIterator getTarget() 
+    {
+        return targetText;
+    }
+    
+    /**
+     * Returns the text that was matched by the most recent call to 
+     * {@link #first}, {@link #next}, {@link #previous}, or {@link #last}. 
+     * If the iterator is not pointing at a valid match, for instance just 
+     * after construction or after <tt>DONE</tt> has been returned, an empty 
+     * String will be returned. See getMatchStart for more information
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #first
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     * @return the substring in the target text of the most recent match 
+     */
+    public String getMatchedText() 
+    {
+        if (matchLength > 0) {
+            int limit = m_lastMatchStart_ + matchLength;
+    		StringBuffer result = new StringBuffer(matchLength);
+    		result.append(targetText.current());
+    		targetText.next();
+    		while (targetText.getIndex() < limit) {
+    			result.append(targetText.current());
+    			targetText.next();
+    		}
+            targetText.setIndex(m_lastMatchStart_);
+    		return result.toString();
+    	}
+        return null;
+    }
+
+	// miscellaneous public methods -----------------------------------------
+		
+	/**
+     * Search <b>forwards</b> in the target text for the next valid match,
+     * starting the search from the current iterator position. The iterator is 
+	 * adjusted so that its current index, as returned by {@link #getIndex},
+	 * is the starting position of the match if one was found. If a match is 
+     * found, the index of the match is returned, otherwise <tt>DONE</tt> is
+     * returned.  If overlapping mode is set, the beginning of the found match
+     * can be before the end of the current match, if any.
+	 * @return The starting index of the next forward match after the current 
+     *         iterator position, or 
+	 *         <tt>DONE</tt> if there are no more matches.
+	 * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #following
+     * @see #preceding
+     * @see #previous
+     * @see #first
+     * @see #last
+     * @see #DONE
+     */
+    public int next()
+    {
+    	int start = targetText.getIndex();
+    	if (m_setOffset_ != DONE) {
+	    	start = m_setOffset_;	
+	    	m_setOffset_ = DONE;	
+	    }
+	    if (m_isForwardSearching_) {
+	    	if (!m_reset_ && 
+	        	start + matchLength >= targetText.getEndIndex()) {
+	            // not enough characters to match
+                matchLength = 0;
+                targetText.setIndex(targetText.getEndIndex());
+                m_lastMatchStart_ = DONE;
+	            return DONE; 
+	        }
+	        m_reset_ = false;
+	    }
+	    else {
+	        // switching direction. 
+	        // if matchedIndex == USEARCH_DONE, it means that either a 
+	        // setIndex has been called or that previous ran off the text
+	        // string. the iterator would have been set to offset 0 if a 
+	        // match is not found.
+	        m_isForwardSearching_ = true;
+	        if (start != DONE) {
+	            // there's no need to set the collation element iterator
+	            // the next call to next will set the offset.
+	            return start;
+	        }
+	    }
+	    
+        if (start == DONE) {
+            start = targetText.getBeginIndex();
+        }
+	    m_lastMatchStart_ = handleNext(start);
+        return m_lastMatchStart_;
+    }
+
+    /**
+     * Search <b>backwards</b> in the target text for the next valid match,
+     * starting the search from the current iterator position. The iterator is 
+     * adjusted so that its current index, as returned by {@link #getIndex},
+     * is the starting position of the match if one was found. If a match is 
+     * found, the index is returned, otherwise <tt>DONE</tt> is returned.  If
+     * overlapping mode is set, the end of the found match can be after the
+     * beginning of the previous match, if any.
+     * @return The starting index of the next backwards match after the current 
+     *         iterator position, or 
+     *         <tt>DONE</tt> if there are no more matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #following
+     * @see #preceding
+     * @see #next
+     * @see #first
+     * @see #last
+     * @see #DONE
+     */
+    public int previous()
+    {
+    	int start = targetText.getIndex();
+    	if (m_setOffset_ != DONE) {
+	    	start = m_setOffset_;	
+	    	m_setOffset_ = DONE;	
+	    }
+    	if (m_reset_) {
+            m_isForwardSearching_ = false;
+            m_reset_ = false;
+            start = targetText.getEndIndex();;
+        }
+        
+        if (m_isForwardSearching_ == true) {
+            // switching direction. 
+            // if matchedIndex == USEARCH_DONE, it means that either a 
+            // setIndex has been called or that next ran off the text
+            // string. the iterator would have been set to offset textLength if 
+            // a match is not found.
+            m_isForwardSearching_ = false;
+            if (start != targetText.getEndIndex()) {
+                return start;
+            }
+        }
+        else {
+        	if (start == targetText.getBeginIndex()) {
+                // not enough characters to match
+                matchLength = 0;
+                targetText.setIndex(targetText.getBeginIndex());
+                m_lastMatchStart_ = DONE;
+                return DONE; 
+            }
+        }
+
+        m_lastMatchStart_ = handlePrevious(start);
+        return m_lastMatchStart_;
+    }
+
+    /**
+     * Return true if the overlapping property has been set.
+     * See setOverlapping(boolean) for more information.
+     * @see #setOverlapping
+     * @return true if the overlapping property has been set, false otherwise
+     * @draft release 2.2
+     */
+    public boolean isOverlapping() 
+    {
+        return m_isOverlap_;
+    }
+    
+    /** 
+	 * <p>
+     * Resets the search iteration. All properties will be reset to their
+     * default values.
+     * </p>
+	 * <p>
+     * If a forward iteration is initiated, the next search will begin at the
+     * start of the target text. Otherwise, if a backwards iteration is initiated,
+     * the next search will begin at the end of the target text.
+     * </p>
+	 * @draft release 2.2
+	 */
+	public void reset()
+	{
+		// reset is setting the attributes that are already in string search
+        matchLength = 0;
+        setIndex(targetText.getBeginIndex());
+        m_isOverlap_ = false;
+        m_isForwardSearching_ = true;
+        m_reset_ = true;
+        m_setOffset_ = DONE;
+	}
+	
+	/**
+     * Return the index of the first <b>forward</b> match in the target text. 
+     * This method sets the iteration to begin at the start of the 
+     * target text and searches forward from there.
+     * @return The index of the first forward match, or <code>DONE</code> 
+     * 		   if there are no matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #following
+     * @see #preceding
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     */
+    public final int first() 
+    {
+        m_isForwardSearching_ = true;
+        setIndex(targetText.getBeginIndex());
+        return next();
+    }
+
+    /**
+     * Return the index of the first <b>forward</b> match in target text that 
+     * is at or after argument <tt>position</tt>. 
+     * This method sets the iteration to begin at the specified
+     * position in the the target text and searches forward from there.
+     * @return The index of the first forward match, or <code>DONE</code> 
+     *         if there are no matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #first
+     * @see #preceding
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     */
+    public final int following(int position) 
+    {
+    	m_isForwardSearching_ = true;
+    	// position checked in usearch_setOffset
+        setIndex(position);
+        return next();
+    }
+    
+    /**
+     * Return the index of the first <b>backward</b> match in target text. 
+     * This method sets the iteration to begin at the end of the 
+     * target text and searches backwards from there.
+     * @return The starting index of the first backward match, or 
+     *         <code>DONE</code> if there are no matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #first
+     * @see #preceding
+     * @see #next
+     * @see #previous
+     * @see #following
+     * @see #DONE
+     */
+    public final int last() 
+    {
+        m_isForwardSearching_ = false;
+        setIndex(targetText.getEndIndex());
+        return previous();
+    }
+     
+    /**
+     * Return the index of the first <b>backwards</b> match in target 
+     * text that ends at or before argument <tt>position</tt>. 
+     * This method sets the iteration to begin at the argument
+     * position index of the target text and searches backwards from there.
+     * @return The starting index of the first backwards match, or 
+     *         <code>DONE</code> 
+     *         if there are no matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #first
+     * @see #following
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     */
+    public final int preceding(int position) 
+    {
+        m_isForwardSearching_ = false;
+        // position checked in usearch_setOffset
+        setIndex(position);
+        return previous();   
+    }
+    
+    // protected data member ----------------------------------------------
+    
+    /**
+     * The BreakIterator to define the boundaries of a logical match.
+     * This value can be a null.
+     * See class documentation for more information.
+     * @see #setBreakIterator(BreakIterator)
+     * @see #getBreakIterator
+     * @see BreakIterator
+     */
+    protected BreakIterator breakIterator; 
+
+    /**
+     * Target text for searching.
+     * @see #setTarget(CharacterIterator)
+     * @see #getTarget
+     */
+    protected CharacterIterator targetText;
+    /**
+     * Length of the most current match in target text. 
+     * Value 0 is the default value.
+     * @see #setMatchLength
+     * @see #getMatchLength
+     */
+    protected int matchLength;
+    
+    // protected constructor ----------------------------------------------
+    
+	/**
+     * Protected constructor for use by subclasses.
+     * Initializes the iterator with the argument target text for searching 
+     * and sets the BreakIterator.
+     * See class documentation for more details on the use of the target text
+     * and BreakIterator.
+     * @param target The target text to be searched.
+     * @param breaker A {@link BreakIterator} that is used to determine the 
+     *                boundaries of a logical match. This argument can be null.
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0
+     * @see BreakIterator  
+     */
+    protected SearchIterator(CharacterIterator target, BreakIterator breaker)
+    {
+        if (target == null 
+            || (target.getEndIndex() - target.getBeginIndex()) == 0) {
+                throw new IllegalArgumentException(
+                                   "Illegal argument target. " +
+                                   " Argument can not be null or of length 0");
+        }
+    	targetText = target;
+    	breakIterator = breaker;
+    	if (breakIterator != null) {
+    		breakIterator.setText(target);
+    	}
+    	matchLength = 0;
+        m_lastMatchStart_ = DONE;
+        m_isOverlap_ = false;
+        m_isForwardSearching_ = true;
+        m_reset_ = true;
+        m_setOffset_ = DONE;
+    }    
+    
+    // protected methods --------------------------------------------------
+
+   
+    /**
+	 * Sets the length of the most recent match in the target text. 
+	 * Subclasses' handleNext() and handlePrevious() methods should call this 
+     * after they find a match in the target text.    
+	 * @param length new length to set
+     * @see #handleNext
+     * @see #handlePrevious
+	 */
+    protected void setMatchLength(int length)
+    {
+    	matchLength = length;
+    }
+
+	/**
+	 * <p>
+     * Abstract method that subclasses override to provide the mechanism 
+	 * for finding the next <b>forwards</b> match in the target text. This 
+     * allows different subclasses to provide different search algorithms.
+     * </p> 
+	 * <p>
+     * If a match is found, this function must call setMatchLength(int) to
+     * set the length of the result match.
+     * The iterator is adjusted so that its current index, as returned by 
+     * {@link #getIndex}, is the starting position of the match if one was 
+     * found. If a match is not found, <tt>DONE</tt> will be returned.
+     * </p> 
+	 * @param start index in the target text at which the forwards search 
+     *        should begin.
+	 * @return the starting index of the next forwards match if found, DONE 
+     *         otherwise
+	 * @see #setMatchLength(int)
+     * @see #handlePrevious(int)
+     * @see #DONE
+	 */
+    protected abstract int handleNext(int start);
+    
+    /**
+	 * <p>
+     * Abstract method which subclasses override to provide the mechanism 
+	 * for finding the next <b>backwards</b> match in the target text. 
+     * This allows different 
+	 * subclasses to provide different search algorithms. 
+     * </p> 
+	 * <p>
+     * If a match is found, this function must call setMatchLength(int) to
+     * set the length of the result match.
+     * The iterator is adjusted so that its current index, as returned by 
+     * {@link #getIndex}, is the starting position of the match if one was 
+     * found. If a match is not found, <tt>DONE</tt> will be returned.
+     * </p> 
+	 * @param start index in the target text at which the backwards search 
+     *        should begin.
+	 * @return the starting index of the next backwards match if found, 
+     *         DONE otherwise
+	 * @see #setMatchLength(int)
+     * @see #handleNext(int)
+     * @see #DONE
+	 */
+    protected abstract int handlePrevious(int startAt);
+    
+    // private data members ------------------------------------------------
+    
+    /**
+     * Flag indicates if we are doing a forwards search
+     */
+    private boolean m_isForwardSearching_;
+    /**
+     * Flag to indicate if overlapping search is to be done.
+     * E.g. looking for "aa" in "aaa" will yield matches at offset 0 and 1.
+     */
+    private boolean m_isOverlap_;
+    /**
+     * Flag indicates if we are at the start of a string search.
+     * This indicates that we are in forward search and at the start of m_text.
+     */ 
+    private boolean m_reset_;
+    /**
+     * Data member to store user defined position in setIndex().
+     * If setIndex() is not called, this value will be DONE.
+     */ 
+    private int m_setOffset_;
+    /**
+     * Offset of the beginning of the last match
+     */
+    private int m_lastMatchStart_;
+}
diff --git a/src/com/ibm/icu/text/SimpleDateFormat.java b/src/com/ibm/icu/text/SimpleDateFormat.java
new file mode 100755
index 0000000..0bd5459
--- /dev/null
+++ b/src/com/ibm/icu/text/SimpleDateFormat.java
@@ -0,0 +1,1399 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/SimpleDateFormat.java,v $ 
+ * $Date: 2002/03/20 05:11:16 $ 
+ * $Revision: 1.13 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.lang.ClassNotFoundException;
+import java.lang.StringIndexOutOfBoundsException;
+import java.text.FieldPosition;
+import java.text.MessageFormat;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+/**
+ * <code>SimpleDateFormat</code> is a concrete class for formatting and
+ * parsing dates in a locale-sensitive manner. It allows for formatting
+ * (date -> text), parsing (text -> date), and normalization.
+ *
+ * <p>
+ * <code>SimpleDateFormat</code> allows you to start by choosing
+ * any user-defined patterns for date-time formatting. However, you
+ * are encouraged to create a date-time formatter with either
+ * <code>getTimeInstance</code>, <code>getDateInstance</code>, or
+ * <code>getDateTimeInstance</code> in <code>DateFormat</code>. Each
+ * of these class methods can return a date/time formatter initialized
+ * with a default format pattern. You may modify the format pattern
+ * using the <code>applyPattern</code> methods as desired.
+ * For more information on using these methods, see
+ * {@link DateFormat}.
+ *
+ * <p>
+ * <strong>Time Format Syntax:</strong>
+ * <p>
+ * To specify the time format use a <em>time pattern</em> string.
+ * In this pattern, all ASCII letters are reserved as pattern letters,
+ * which are defined as the following:
+ * <blockquote>
+ * <pre>
+ * Symbol   Meaning                 Presentation        Example
+ * ------   -------                 ------------        -------
+ * G        era designator          (Text)              AD
+ * y        year                    (Number)            1996
+ * u        extended year           (Number)            4601
+ * M        month in year           (Text & Number)     July & 07
+ * d        day in month            (Number)            10
+ * h        hour in am/pm (1~12)    (Number)            12
+ * H        hour in day (0~23)      (Number)            0
+ * m        minute in hour          (Number)            30
+ * s        second in minute        (Number)            55
+ * S        millisecond             (Number)            978
+ * E        day in week             (Text)              Tuesday
+ * D        day in year             (Number)            189
+ * F        day of week in month    (Number)            2 (2nd Wed in July)
+ * w        week in year            (Number)            27
+ * W        week in month           (Number)            2
+ * a        am/pm marker            (Text)              PM
+ * k        hour in day (1~24)      (Number)            24
+ * K        hour in am/pm (0~11)    (Number)            0
+ * z        time zone               (Text)              Pacific Standard Time
+ * '        escape for text         (Delimiter)
+ * ''       single quote            (Literal)           '
+ * </pre>
+ * </blockquote>
+ * The count of pattern letters determine the format.
+ * <p>
+ * <strong>(Text)</strong>: 4 or more pattern letters--use full form,
+ * &lt; 4--use short or abbreviated form if one exists.
+ * <p>
+ * <strong>(Number)</strong>: the minimum number of digits. Shorter
+ * numbers are zero-padded to this amount. Year is handled specially;
+ * that is, if the count of 'y' is 2, the Year will be truncated to 2 digits.
+ * <p>
+ * <strong>(Text & Number)</strong>: 3 or over, use text, otherwise use number.
+ * <p>
+ * Any characters in the pattern that are not in the ranges of ['a'..'z']
+ * and ['A'..'Z'] will be treated as quoted text. For instance, characters
+ * like ':', '.', ' ', '#' and '@' will appear in the resulting time text
+ * even they are not embraced within single quotes.
+ * <p>
+ * A pattern containing any invalid pattern letter will result in a thrown
+ * exception during formatting or parsing.
+ *
+ * <p>
+ * <strong>Examples Using the US Locale:</strong>
+ * <blockquote>
+ * <pre>
+ * Format Pattern                         Result
+ * --------------                         -------
+ * "yyyy.MM.dd G 'at' HH:mm:ss z"    ->>  1996.07.10 AD at 15:08:56 PDT
+ * "EEE, MMM d, ''yy"                ->>  Wed, July 10, '96
+ * "h:mm a"                          ->>  12:08 PM
+ * "hh 'o''clock' a, zzzz"           ->>  12 o'clock PM, Pacific Daylight Time
+ * "K:mm a, z"                       ->>  0:00 PM, PST
+ * "yyyyy.MMMMM.dd GGG hh:mm aaa"    ->>  01996.July.10 AD 12:08 PM
+ * </pre>
+ * </blockquote>
+ * <strong>Code Sample:</strong>
+ * <blockquote>
+ * <pre>
+ * SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, "PST");
+ * pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2*60*60*1000);
+ * pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*60*60*1000);
+ * <br>
+ * // Format the current time.
+ * SimpleDateFormat formatter
+ *     = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss a zzz");
+ * Date currentTime_1 = new Date();
+ * String dateString = formatter.format(currentTime_1);
+ * <br>
+ * // Parse the previous string back into a Date.
+ * ParsePosition pos = new ParsePosition(0);
+ * Date currentTime_2 = formatter.parse(dateString, pos);
+ * </pre>
+ * </blockquote>
+ * In the example, the time value <code>currentTime_2</code> obtained from
+ * parsing will be equal to <code>currentTime_1</code>. However, they may not be
+ * equal if the am/pm marker 'a' is left out from the format pattern while
+ * the "hour in am/pm" pattern symbol is used. This information loss can
+ * happen when formatting the time in PM.
+ *
+ * <p>
+ * When parsing a date string using the abbreviated year pattern ("yy"),
+ * SimpleDateFormat must interpret the abbreviated year
+ * relative to some century.  It does this by adjusting dates to be
+ * within 80 years before and 20 years after the time the SimpleDateFormat
+ * instance is created. For example, using a pattern of "MM/dd/yy" and a
+ * SimpleDateFormat instance created on Jan 1, 1997,  the string
+ * "01/11/12" would be interpreted as Jan 11, 2012 while the string "05/04/64"
+ * would be interpreted as May 4, 1964.
+ * During parsing, only strings consisting of exactly two digits, as defined by
+ * {@link Character#isDigit(char)}, will be parsed into the default century.
+ * Any other numeric string, such as a one digit string, a three or more digit
+ * string, or a two digit string that isn't all digits (for example, "-1"), is
+ * interpreted literally.  So "01/02/3" or "01/02/003" are parsed, using the
+ * same pattern, as Jan 2, 3 AD.  Likewise, "01/02/-3" is parsed as Jan 2, 4 BC.
+ *
+ * <p>
+ * If the year pattern does not have exactly two 'y' characters, the year is
+ * interpreted literally, regardless of the number of digits.  So using the
+ * pattern "MM/dd/yyyy", "01/11/12" parses to Jan 11, 12 A.D.
+ *
+ * <p>
+ * For time zones that have no names, use strings GMT+hours:minutes or
+ * GMT-hours:minutes.
+ *
+ * <p>
+ * The calendar defines what is the first day of the week, the first week
+ * of the year, whether hours are zero based or not (0 vs 12 or 24), and the
+ * time zone. There is one common decimal format to handle all the numbers;
+ * the digit count is handled programmatically according to the pattern.
+ *
+ * <h4>Synchronization</h4>
+ *
+ * Date formats are not synchronized. It is recommended to create separate 
+ * format instances for each thread. If multiple threads access a format 
+ * concurrently, it must be synchronized externally. 
+ *
+ * @see          com.ibm.icu.util.Calendar
+ * @see          com.ibm.icu.util.GregorianCalendar
+ * @see          com.ibm.icu.util.TimeZone
+ * @see          DateFormat
+ * @see          DateFormatSymbols
+ * @see          DecimalFormat
+ * @version      1.51, 09/24/99
+ * @author       Mark Davis, Chen-Lieh Huang, Alan Liu
+ */
+public class SimpleDateFormat extends DateFormat {
+
+    // the official serial version ID which says cryptically
+    // which version we're compatible with
+    static final long serialVersionUID = 4774881970558875024L;
+
+    // the internal serial version which says which version was written
+    // - 0 (default) for version up to JDK 1.1.3
+    // - 1 for version from JDK 1.1.4, which includes a new field
+    static final int currentSerialVersion = 1;
+
+    /**
+     * The version of the serialized data on the stream.  Possible values:
+     * <ul>
+     * <li><b>0</b> or not present on stream: JDK 1.1.3.  This version
+     * has no <code>defaultCenturyStart</code> on stream.
+     * <li><b>1</b> JDK 1.1.4 or later.  This version adds
+     * <code>defaultCenturyStart</code>.
+     * </ul>
+     * When streaming out this class, the most recent format
+     * and the highest allowable <code>serialVersionOnStream</code>
+     * is written.
+     * @serial
+     * @since JDK1.1.4
+     */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    /**
+     * The pattern string of this formatter.  This is always a non-localized
+     * pattern.  May not be null.  See class documentation for details.
+     * @serial
+     */
+    private String pattern;
+
+    /**
+     * The symbols used by this formatter for week names, month names,
+     * etc.  May not be null.
+     * @serial
+     * @see DateFormatSymbols
+     */
+    private DateFormatSymbols formatData;
+
+    /**
+     * We map dates with two-digit years into the century starting at
+     * <code>defaultCenturyStart</code>, which may be any date.  May
+     * not be null.
+     * @serial
+     * @since JDK1.1.4
+     */
+    private Date defaultCenturyStart;
+
+    transient private int defaultCenturyStartYear;
+
+    private static final int millisPerHour = 60 * 60 * 1000;
+    private static final int millisPerMinute = 60 * 1000;
+
+    // For time zones that have no names, use strings GMT+minutes and
+    // GMT-minutes. For instance, in France the time zone is GMT+60.
+    private static final String GMT_PLUS = "GMT+";
+    private static final String GMT_MINUS = "GMT-";
+    private static final String GMT = "GMT";
+
+    /**
+     * Cache to hold the DateTimePatterns of a Locale.
+     */
+    private static Hashtable cachedLocaleData = new Hashtable(3);
+
+    /**
+     * Construct a SimpleDateFormat using the default pattern for the default
+     * locale.  <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     *
+     * @see DateFormat
+     */
+    public SimpleDateFormat() {
+        this(SHORT, SHORT, Locale.getDefault());
+    }
+
+    /**
+     * Construct a SimpleDateFormat using the given pattern in the default
+     * locale.  <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     */
+    public SimpleDateFormat(String pattern)
+    {
+        this(pattern, Locale.getDefault());
+    }
+
+    /**
+     * Construct a SimpleDateFormat using the given pattern and locale.
+     * <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     */
+    public SimpleDateFormat(String pattern, Locale loc)
+    {
+        this.pattern = pattern;
+        this.formatData = new DateFormatSymbols(loc);
+        initialize(loc);
+    }
+
+    /**
+     * Construct a SimpleDateFormat using the given pattern and
+     * locale-specific symbol data.
+     */
+    public SimpleDateFormat(String pattern, DateFormatSymbols formatData)
+    {
+        this.pattern = pattern;
+        this.formatData = (DateFormatSymbols) formatData.clone();
+        initialize(Locale.getDefault());
+    }
+
+    /* Package-private, called by DateFormat factory methods */
+    SimpleDateFormat(int timeStyle, int dateStyle, Locale loc) {
+        /* try the cache first */
+        String[] dateTimePatterns = (String[]) cachedLocaleData.get(loc);
+        if (dateTimePatterns == null) { /* cache miss */
+            ResourceBundle r = ICULocaleData.getLocaleElements(loc);
+            dateTimePatterns = r.getStringArray("DateTimePatterns");
+            /* update cache */
+            cachedLocaleData.put(loc, dateTimePatterns);
+        }
+        formatData = new DateFormatSymbols(loc);
+        if ((timeStyle >= 0) && (dateStyle >= 0)) {
+            Object[] dateTimeArgs = {dateTimePatterns[timeStyle],
+                                     dateTimePatterns[dateStyle + 4]};
+            pattern = MessageFormat.format(dateTimePatterns[8], dateTimeArgs);
+        }
+        else if (timeStyle >= 0) {
+            pattern = dateTimePatterns[timeStyle];
+        }
+        else if (dateStyle >= 0) {
+            pattern = dateTimePatterns[dateStyle + 4];
+        }
+        else {
+            throw new IllegalArgumentException("No date or time style specified");
+        }
+
+        initialize(loc);
+    }
+
+    /* Initialize calendar and numberFormat fields */
+    private void initialize(Locale loc) {
+        // The format object must be constructed using the symbols for this zone.
+        // However, the calendar should use the current default TimeZone.
+        // If this is not contained in the locale zone strings, then the zone
+        // will be formatted using generic GMT+/-H:MM nomenclature.
+        calendar = Calendar.getInstance(TimeZone.getDefault(), loc);
+        numberFormat = NumberFormat.getInstance(loc);
+        numberFormat.setGroupingUsed(false);
+        if (numberFormat instanceof DecimalFormat)
+            ((DecimalFormat)numberFormat).setDecimalSeparatorAlwaysShown(false);
+        numberFormat.setParseIntegerOnly(true); /* So that dd.MM.yy can be parsed */
+        numberFormat.setMinimumFractionDigits(0); // To prevent "Jan 1.00, 1997.00"
+
+        initializeDefaultCentury();
+    }
+
+    /* Initialize the fields we use to disambiguate ambiguous years. Separate
+     * so we can call it from readObject().
+     */
+    private void initializeDefaultCentury() {
+        calendar.setTime( new Date() );
+        calendar.add( Calendar.YEAR, -80 );
+        parseAmbiguousDatesAsAfter(calendar.getTime());
+    }
+
+    /* Define one-century window into which to disambiguate dates using
+     * two-digit years.
+     */
+    private void parseAmbiguousDatesAsAfter(Date startDate) {
+        defaultCenturyStart = startDate;
+        calendar.setTime(startDate);
+        defaultCenturyStartYear = calendar.get(Calendar.YEAR);
+    }
+
+    /**
+     * Sets the 100-year period 2-digit years will be interpreted as being in
+     * to begin on the date the user specifies.
+     * @param startDate During parsing, two digit years will be placed in the range
+     * <code>startDate</code> to <code>startDate + 100 years</code>.
+     */
+    public void set2DigitYearStart(Date startDate) {
+        parseAmbiguousDatesAsAfter(startDate);
+    }
+
+    /**
+     * Returns the beginning date of the 100-year period 2-digit years are interpreted
+     * as being within.
+     * @return the start of the 100-year period into which two digit years are
+     * parsed
+     */
+    public Date get2DigitYearStart() {
+        return defaultCenturyStart;
+    }
+
+    /**
+     * Overrides DateFormat.
+     * <p>Formats a date or time, which is the standard millis
+     * since January 1, 1970, 00:00:00 GMT.
+     * <p>Example: using the US locale:
+     * "yyyy.MM.dd G 'at' HH:mm:ss zzz" ->> 1996.07.10 AD at 15:08:56 PDT
+     * @param date the date-time value to be formatted into a date-time string.
+     * @param toAppendTo where the new date-time text is to be appended.
+     * @param pos the formatting position. On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field.
+     * @return the formatted date-time string.
+     * @see DateFormat
+     */
+    public StringBuffer format(Calendar cal, StringBuffer toAppendTo,
+                               FieldPosition pos)
+    {
+        // Initialize
+        pos.setBeginIndex(0);
+        pos.setEndIndex(0);
+
+        boolean inQuote = false; // true when between single quotes
+        char prevCh = 0; // previous pattern character
+        int count = 0;  // number of time prevCh repeated
+        for (int i=0; i<pattern.length(); ++i) {
+            char ch = pattern.charAt(i);
+            // Use subFormat() to format a repeated pattern character
+            // when a different pattern or non-pattern character is seen
+            if (ch != prevCh && count > 0) {
+                toAppendTo.append(
+                        subFormat(prevCh, count, toAppendTo.length(), pos, formatData, cal));
+                count = 0;
+            }
+            if (ch == '\'') {
+                // Consecutive single quotes are a single quote literal,
+                // either outside of quotes or between quotes
+                if ((i+1)<pattern.length() && pattern.charAt(i+1) == '\'') {
+                    toAppendTo.append('\'');
+                    ++i;
+                } else {
+                    inQuote = !inQuote;
+                }
+            } else if (!inQuote
+                       && (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z')) {
+                // ch is a date-time pattern character to be interpreted
+                // by subFormat(); count the number of times it is repeated
+                prevCh = ch;
+                ++count;
+            }
+            else {
+                // Append quoted characters and unquoted non-pattern characters
+                toAppendTo.append(ch);
+            }
+        }
+        // Format the last item in the pattern, if any
+        if (count > 0) {
+            toAppendTo.append(
+                    subFormat(prevCh, count, toAppendTo.length(), pos, formatData, cal));
+        }
+        return toAppendTo;
+    }
+
+    // Map index into pattern character string to Calendar field number
+    private static final int[] PATTERN_INDEX_TO_CALENDAR_FIELD =
+    {
+        Calendar.ERA, Calendar.YEAR, Calendar.MONTH, Calendar.DATE,
+        Calendar.HOUR_OF_DAY, Calendar.HOUR_OF_DAY, Calendar.MINUTE,
+        Calendar.SECOND, Calendar.MILLISECOND, Calendar.DAY_OF_WEEK,
+        Calendar.DAY_OF_YEAR, Calendar.DAY_OF_WEEK_IN_MONTH,
+        Calendar.WEEK_OF_YEAR, Calendar.WEEK_OF_MONTH,
+        Calendar.AM_PM, Calendar.HOUR, Calendar.HOUR, Calendar.ZONE_OFFSET
+    };
+
+    // Map index into pattern character string to DateFormat field number
+    private static final int[] PATTERN_INDEX_TO_DATE_FORMAT_FIELD = {
+        DateFormat.ERA_FIELD, DateFormat.YEAR_FIELD, DateFormat.MONTH_FIELD,
+        DateFormat.DATE_FIELD, DateFormat.HOUR_OF_DAY1_FIELD,
+        DateFormat.HOUR_OF_DAY0_FIELD, DateFormat.MINUTE_FIELD,
+        DateFormat.SECOND_FIELD, DateFormat.MILLISECOND_FIELD,
+        DateFormat.DAY_OF_WEEK_FIELD, DateFormat.DAY_OF_YEAR_FIELD,
+        DateFormat.DAY_OF_WEEK_IN_MONTH_FIELD, DateFormat.WEEK_OF_YEAR_FIELD,
+        DateFormat.WEEK_OF_MONTH_FIELD, DateFormat.AM_PM_FIELD,
+        DateFormat.HOUR1_FIELD, DateFormat.HOUR0_FIELD,
+        DateFormat.TIMEZONE_FIELD,
+    };
+
+    /**
+     * Format a single field, given its pattern character.  Subclasses may
+     * override this method in order to modify or add formatting
+     * capabilities.
+     * @param ch the pattern character
+     * @param count the number of times ch is repeated in the pattern
+     * @param beginOffset the offset of the output string at the start of
+     * this field; used to set pos when appropriate
+     * @param pos receives the position of a field, when appropriate
+     * @param formatData the symbols for this formatter
+     */
+    protected String subFormat(char ch, int count, int beginOffset,
+                               FieldPosition pos, DateFormatSymbols formatData,
+                               Calendar cal)
+         throws IllegalArgumentException
+    {
+        int     patternCharIndex = -1;
+        int     maxIntCount = Integer.MAX_VALUE;
+        String  current = "";
+
+        // TEMPORARY HACK TODO fix this
+        if (ch == 'u') { // 'u' - EXTENDED_YEAR
+            return zeroPaddingNumber(cal.get(Calendar.EXTENDED_YEAR),
+                                     1, maxIntCount);
+        }
+
+        if ((patternCharIndex=formatData.patternChars.indexOf(ch)) == -1)
+            throw new IllegalArgumentException("Illegal pattern character " +
+                                               "'" + ch + "'");
+
+        int field = PATTERN_INDEX_TO_CALENDAR_FIELD[patternCharIndex];
+        int value = cal.get(field);
+
+        switch (patternCharIndex) {
+        case 0: // 'G' - ERA
+            current = formatData.eras[value];
+            break;
+        case 1: // 'y' - YEAR
+            /* According to the specification, if the number of pattern letters ('y') is 2, 
+             * the year is truncated to 2 digits; otherwise it is interpreted as a number. 
+             * But the original code process 'y', 'yy', 'yyy' in the same way. and process 
+             * patterns with 4 or more than 4 'y' characters in the same way. 
+             * So I change the codes to meet the specification. [Richard/GCl]
+             */
+            if (count == 2)
+                current = zeroPaddingNumber(value, 2, 2); // clip 1996 to 96
+            else //count = 1 or count > 2
+                current = zeroPaddingNumber(value, count, maxIntCount);
+            break;
+        case 2: // 'M' - MONTH
+            if (count >= 4)
+                current = formatData.months[value];
+            else if (count == 3)
+                current = formatData.shortMonths[value];
+            else
+                current = zeroPaddingNumber(value+1, count, maxIntCount);
+            break;
+        case 4: // 'k' - HOUR_OF_DAY: 1-based.  eg, 23:59 + 1 hour =>> 24:59
+            if (value == 0)
+                current = zeroPaddingNumber(
+                                            cal.getMaximum(Calendar.HOUR_OF_DAY)+1,
+                                            count, maxIntCount);
+            else
+                current = zeroPaddingNumber(value, count, maxIntCount);
+            break;
+        case 9: // 'E' - DAY_OF_WEEK
+            if (count >= 4)
+                current = formatData.weekdays[value];
+            else // count < 4, use abbreviated form if exists
+                current = formatData.shortWeekdays[value];
+            break;
+        case 14:    // 'a' - AM_PM
+            current = formatData.ampms[value];
+            break;
+        case 15: // 'h' - HOUR:1-based.  eg, 11PM + 1 hour =>> 12 AM
+            if (value == 0)
+                current = zeroPaddingNumber(
+                                            cal.getLeastMaximum(Calendar.HOUR)+1,
+                                            count, maxIntCount);
+            else
+                current = zeroPaddingNumber(value, count, maxIntCount);
+            break;
+        case 17: // 'z' - ZONE_OFFSET
+            int zoneIndex
+                = formatData.getZoneIndex (cal.getTimeZone().getID());
+            if (zoneIndex == -1)
+            {
+                // For time zones that have no names, use strings
+                // GMT+hours:minutes and GMT-hours:minutes.
+                // For instance, France time zone uses GMT+01:00.
+                StringBuffer zoneString = new StringBuffer();
+
+                value = cal.get(Calendar.ZONE_OFFSET) +
+                    cal.get(Calendar.DST_OFFSET);
+
+                if (value < 0)
+                {
+                    zoneString.append(GMT_MINUS);
+                    value = -value; // suppress the '-' sign for text display.
+                }
+                else
+                    zoneString.append(GMT_PLUS);
+                zoneString.append(
+                                  zeroPaddingNumber((int)(value/millisPerHour), 2, 2));
+                zoneString.append(':');
+                zoneString.append(
+                                  zeroPaddingNumber(
+                                                    (int)((value%millisPerHour)/millisPerMinute), 2, 2));
+                current = zoneString.toString();
+            }
+            else if (cal.get(Calendar.DST_OFFSET) != 0)
+            {
+                if (count >= 4)
+                    current = formatData.zoneStrings[zoneIndex][3];
+                else
+                    // count < 4, use abbreviated form if exists
+                    current = formatData.zoneStrings[zoneIndex][4];
+            }
+            else
+            {
+                if (count >= 4)
+                    current = formatData.zoneStrings[zoneIndex][1];
+                else
+                    current = formatData.zoneStrings[zoneIndex][2];
+            }
+            break;
+        default:
+            // case 3: // 'd' - DATE
+            // case 5: // 'H' - HOUR_OF_DAY:0-based.  eg, 23:59 + 1 hour =>> 00:59
+            // case 6: // 'm' - MINUTE
+            // case 7: // 's' - SECOND
+            // case 8: // 'S' - MILLISECOND
+            // case 10: // 'D' - DAY_OF_YEAR
+            // case 11: // 'F' - DAY_OF_WEEK_IN_MONTH
+            // case 12: // 'w' - WEEK_OF_YEAR
+            // case 13: // 'W' - WEEK_OF_MONTH
+            // case 16: // 'K' - HOUR: 0-based.  eg, 11PM + 1 hour =>> 0 AM
+            current = zeroPaddingNumber(value, count, maxIntCount);
+            break;
+        } // switch (patternCharIndex)
+
+        if (pos.getField() == PATTERN_INDEX_TO_DATE_FORMAT_FIELD[patternCharIndex]) {
+            // set for the first occurence only.
+            if (pos.getBeginIndex() == 0 && pos.getEndIndex() == 0) {
+                pos.setBeginIndex(beginOffset);
+                pos.setEndIndex(beginOffset + current.length());
+            }
+        }
+
+        return current;
+    }
+
+    /**
+     * Formats a number with the specified minimum and maximum number of digits.
+     */
+    protected String zeroPaddingNumber(long value, int minDigits, int maxDigits)
+    {
+        numberFormat.setMinimumIntegerDigits(minDigits);
+        numberFormat.setMaximumIntegerDigits(maxDigits);
+        return numberFormat.format(value);
+    }
+
+
+    /**
+     * Overrides DateFormat
+     * @see DateFormat
+     */
+    public void parse(String text, Calendar cal, ParsePosition pos)
+    {
+        int start = pos.getIndex();
+        int oldStart = start;
+        boolean[] ambiguousYear = {false};
+
+        boolean inQuote = false; // inQuote set true when hits 1st single quote
+        char prevCh = 0;
+        int count = 0;
+        int interQuoteCount = 1; // Number of chars between quotes
+
+        for (int i=0; i<pattern.length(); ++i)
+        {
+            char ch = pattern.charAt(i);
+
+            if (inQuote)
+            {
+                if (ch == '\'')
+                {
+                    // ends with 2nd single quote
+                    inQuote = false;
+                    // two consecutive quotes outside a quote means we have
+                    // a quote literal we need to match.
+                    if (count == 0)
+                    {
+                        if (start >= text.length() || ch != text.charAt(start))
+                        {
+                            pos.setIndex(oldStart);
+                            pos.setErrorIndex(start);
+                            return;
+                        }
+                        ++start;
+                    }
+                    count = 0;
+                    interQuoteCount = 0;
+                }
+                else
+                {
+                    // pattern uses text following from 1st single quote.
+                    if (start >= text.length() || ch != text.charAt(start)) {
+                        // Check for cases like: 'at' in pattern vs "xt"
+                        // in time text, where 'a' doesn't match with 'x'.
+                        // If fail to match, return.
+                        pos.setIndex(oldStart); // left unchanged
+                        pos.setErrorIndex(start);
+                        return;
+                    }
+                    ++count;
+                    ++start;
+                }
+            }
+            else    // !inQuote
+            {
+                if (ch == '\'')
+                {
+                    inQuote = true;
+                    if (count > 0) // handle cases like: e'at'
+                    {
+                        int startOffset = start;
+                        start=subParse(text, start, prevCh, count,
+                                       false, ambiguousYear, cal);
+                        if ( start<0 ) {
+                            pos.setErrorIndex(startOffset);
+                            pos.setIndex(oldStart);
+                            return;
+                        }
+                        count = 0;
+                    }
+
+                    if (interQuoteCount == 0)
+                    {
+                        // This indicates two consecutive quotes inside a quote,
+                        // for example, 'o''clock'.  We need to parse this as
+                        // representing a single quote within the quote.
+                        int startOffset = start;
+                        if (start >= text.length() ||  ch != text.charAt(start))
+                        {
+                            pos.setErrorIndex(startOffset);
+                            pos.setIndex(oldStart);
+                            return;
+                        }
+                        ++start;
+                        count = 1; // Make it look like we never left
+                    }
+                }
+                else if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z')
+                {
+                    // ch is a date-time pattern
+                    if (ch != prevCh && count > 0) // e.g., yyyyMMdd
+                    {
+                        int startOffset = start;
+                        // This is the only case where we pass in 'true' for
+                        // obeyCount.  That's because the next field directly
+                        // abuts this one, so we have to use the count to know when
+                        // to stop parsing. [LIU]
+                        start = subParse(text, start, prevCh, count, true,
+                                         ambiguousYear, cal);
+                        if (start < 0) {
+                            pos.setErrorIndex(startOffset);
+                            pos.setIndex(oldStart);
+                            return;
+                        }
+                        prevCh = ch;
+                        count = 1;
+                    }
+                    else
+                    {
+                        if (ch != prevCh)
+                            prevCh = ch;
+                        count++;
+                    }
+                }
+                else if (count > 0)
+                {
+                    // handle cases like: MM-dd-yy, HH:mm:ss, or yyyy MM dd,
+                    // where ch = '-', ':', or ' ', repectively.
+                    int startOffset = start;
+                    start=subParse(text, start, prevCh, count,
+                                   false, ambiguousYear, cal);
+                    if ( start < 0 ) {
+                        pos.setErrorIndex(startOffset);
+                        pos.setIndex(oldStart);
+                        return;
+                    }
+                    if (start >= text.length() || ch != text.charAt(start)) {
+                        // handle cases like: 'MMMM dd' in pattern vs. "janx20"
+                        // in time text, where ' ' doesn't match with 'x'.
+                        pos.setErrorIndex(start);
+                        pos.setIndex(oldStart);
+                        return;
+                    }
+                    start++;
+                    count = 0;
+                    prevCh = 0;
+                }
+                else // any other unquoted characters
+                {
+                    if (start >= text.length() || ch != text.charAt(start)) {
+                        // handle cases like: 'MMMM   dd' in pattern vs.
+                        // "jan,,,20" in time text, where "   " doesn't
+                        // match with ",,,".
+                        pos.setErrorIndex(start);
+                        pos.setIndex(oldStart);
+                        return;
+                    }
+                    start++;
+                }
+
+                ++interQuoteCount;
+            }
+        }
+        // Parse the last item in the pattern
+        if (count > 0)
+        {
+            int startOffset = start;
+            start=subParse(text, start, prevCh, count,
+                           false, ambiguousYear, cal);
+            if ( start < 0 ) {
+                pos.setIndex(oldStart);
+                pos.setErrorIndex(startOffset);
+                return;
+            }
+        }
+
+        // At this point the fields of Calendar have been set.  Calendar
+        // will fill in default values for missing fields when the time
+        // is computed.
+
+        pos.setIndex(start);
+
+        // This part is a problem:  When we call parsedDate.after, we compute the time.
+        // Take the date April 3 2004 at 2:30 am.  When this is first set up, the year
+        // will be wrong if we're parsing a 2-digit year pattern.  It will be 1904.
+        // April 3 1904 is a Sunday (unlike 2004) so it is the DST onset day.  2:30 am
+        // is therefore an "impossible" time, since the time goes from 1:59 to 3:00 am
+        // on that day.  It is therefore parsed out to fields as 3:30 am.  Then we
+        // add 100 years, and get April 3 2004 at 3:30 am.  Note that April 3 2004 is
+        // a Saturday, so it can have a 2:30 am -- and it should. [LIU]
+        /*
+        Date parsedDate = cal.getTime();
+        if( ambiguousYear[0] && !parsedDate.after(defaultCenturyStart) ) {
+            cal.add(Calendar.YEAR, 100);
+            parsedDate = cal.getTime();
+        }
+        */
+        // Because of the above condition, save off the fields in case we need to readjust.
+        // The procedure we use here is not particularly efficient, but there is no other
+        // way to do this given the API restrictions present in Calendar.  We minimize
+        // inefficiency by only performing this computation when it might apply, that is,
+        // when the two-digit year is equal to the start year, and thus might fall at the
+        // front or the back of the default century.  This only works because we adjust
+        // the year correctly to start with in other cases -- see subParse().
+        try {
+            if (ambiguousYear[0]) // If this is true then the two-digit year == the default start year
+            {
+                // We need a copy of the fields, and we need to avoid triggering a call to
+                // complete(), which will recalculate the fields.  Since we can't access
+                // the fields[] array in Calendar, we clone the entire object.  This will
+                // stop working if Calendar.clone() is ever rewritten to call complete().
+                Calendar copy = (Calendar)cal.clone();
+                Date parsedDate = copy.getTime();
+                if (parsedDate.before(defaultCenturyStart))
+                {
+                    // We can't use add here because that does a complete() first.
+                    cal.set(Calendar.YEAR, defaultCenturyStartYear + 100);
+                }
+            }
+        }
+        // An IllegalArgumentException will be thrown by Calendar.getTime()
+        // if any fields are out of range, e.g., MONTH == 17.
+        catch (IllegalArgumentException e) {
+            pos.setErrorIndex(start);
+            pos.setIndex(oldStart);
+        }
+    }
+
+    /**
+     * Attempt to match the text at a given position against an array of
+     * strings.  Since multiple strings in the array may match (for
+     * example, if the array contains "a", "ab", and "abc", all will match
+     * the input string "abcd") the longest match is returned.  As a side
+     * effect, the given field of <code>cal</code> is set to the index
+     * of the best match, if there is one.
+     * @param text the time text being parsed.
+     * @param start where to start parsing.
+     * @param field the date field being parsed.
+     * @param data the string array to parsed.
+     * @return the new start position if matching succeeded; a negative
+     * number indicating matching failure, otherwise.  As a side effect,
+     * sets the <code>cal</code> field <code>field</code> to the index
+     * of the best match, if matching succeeded.
+     */
+    protected int matchString(String text, int start, int field, String[] data, Calendar cal)
+    {
+        int i = 0;
+        int count = data.length;
+
+        if (field == Calendar.DAY_OF_WEEK) i = 1;
+
+        // There may be multiple strings in the data[] array which begin with
+        // the same prefix (e.g., Cerven and Cervenec (June and July) in Czech).
+        // We keep track of the longest match, and return that.  Note that this
+        // unfortunately requires us to test all array elements.
+        int bestMatchLength = 0, bestMatch = -1;
+        for (; i<count; ++i)
+        {
+            int length = data[i].length();
+            // Always compare if we have no match yet; otherwise only compare
+            // against potentially better matches (longer strings).
+            if (length > bestMatchLength &&
+                text.regionMatches(true, start, data[i], 0, length))
+            {
+                bestMatch = i;
+                bestMatchLength = length;
+            }
+        }
+        if (bestMatch >= 0)
+        {
+            cal.set(field, bestMatch);
+            return start + bestMatchLength;
+        }
+        return -start;
+    }
+
+    private int matchZoneString(String text, int start, int zoneIndex) {
+    int j;
+    for (j = 1; j <= 4; ++j) {
+        // Checking long and short zones [1 & 2],
+        // and long and short daylight [3 & 4].
+        if (text.regionMatches(true, start,
+                   formatData.zoneStrings[zoneIndex][j], 0,
+                   formatData.zoneStrings[zoneIndex][j].length())) {
+        break;
+        }
+    }
+    return (j > 4) ? -1 : j;
+    }   
+
+    /**
+     * find time zone 'text' matched zoneStrings and set cal
+     */
+    private int subParseZoneString(String text, int start, Calendar cal) {
+    // At this point, check for named time zones by looking through
+    // the locale data from the DateFormatZoneData strings.
+    // Want to be able to parse both short and long forms.
+    int zoneIndex = 
+        formatData.getZoneIndex (getTimeZone().getID());
+    TimeZone tz = null;
+    int j = 0, i = 0;
+    if ((zoneIndex != -1) && ((j = matchZoneString(text, start, zoneIndex)) > 0)) {
+        tz = TimeZone.getTimeZone(formatData.zoneStrings[zoneIndex][0]);
+        i = zoneIndex;
+    }
+    if (tz == null) {
+        zoneIndex = 
+        formatData.getZoneIndex (TimeZone.getDefault().getID());
+        if ((zoneIndex != -1) && ((j = matchZoneString(text, start, zoneIndex)) > 0)) {
+        tz = TimeZone.getTimeZone(formatData.zoneStrings[zoneIndex][0]);
+        i = zoneIndex;
+        }
+    }       
+
+    if (tz == null) {
+        for (i = 0; i < formatData.zoneStrings.length; i++) {
+        if ((j = matchZoneString(text, start, i)) > 0) {
+            tz = TimeZone.getTimeZone(formatData.zoneStrings[i][0]);
+            break;
+        }
+        }
+    }
+    if (tz != null) { // Matched any ?
+        cal.set(Calendar.ZONE_OFFSET, tz.getRawOffset());
+        // The code below time zone is assumed to be instance of
+        // SimpleTimeZone.
+        cal.set(Calendar.DST_OFFSET, 
+             j >= 3 ? ((SimpleTimeZone)tz).getDSTSavings() : 0);
+        return (start + formatData.zoneStrings[i][j].length());
+    }
+    return 0;
+    }
+
+    /**
+     * Protected method that converts one field of the input string into a
+     * numeric field value in <code>cal</code>.  Returns -start (for
+     * ParsePosition) if failed.  Subclasses may override this method to
+     * modify or add parsing capabilities.
+     * @param text the time text to be parsed.
+     * @param start where to start parsing.
+     * @param ch the pattern character for the date field text to be parsed.
+     * @param count the count of a pattern character.
+     * @param obeyCount if true, then the next field directly abuts this one,
+     * and we should use the count to know when to stop parsing.
+     * @param ambiguousYear return parameter; upon return, if ambiguousYear[0]
+     * is true, then a two-digit year was parsed and may need to be readjusted.
+     * @return the new start position if matching succeeded; a negative
+     * number indicating matching failure, otherwise.  As a side effect,
+     * set the appropriate field of <code>cal</code> with the parsed
+     * value.
+     */
+    protected int subParse(String text, int start, char ch, int count,
+                           boolean obeyCount, boolean[] ambiguousYear, Calendar cal)
+    {
+        Number number = null;
+        int value = 0;
+        int i;
+        ParsePosition pos = new ParsePosition(0);
+        int patternCharIndex = -1;
+
+        // TEMPORARY HACK TODO fix this
+        if (ch == 'u') { // 'u' - EXTENDED_YEAR
+            pos.setIndex(start);
+            for (;;) {
+                if (pos.getIndex() >= text.length()) return -start;
+                char c = text.charAt(pos.getIndex());
+                if (c != ' ' && c != '\t') break;
+                pos.setIndex(pos.getIndex()+1);
+            }
+            if (obeyCount) {
+                if ((start+count) > text.length()) {
+                    return -start;
+                }
+                number = numberFormat.parse(text.substring(0, start+count), pos);
+            } else {
+                number = numberFormat.parse(text, pos);
+            }
+            if (number == null) {
+                return -start;
+            }
+            value = number.intValue();
+            cal.set(Calendar.EXTENDED_YEAR, value);
+            return pos.getIndex();
+        }
+
+        if ((patternCharIndex=formatData.patternChars.indexOf(ch)) == -1)
+            return -start;
+
+        pos.setIndex(start);
+
+        int field = PATTERN_INDEX_TO_CALENDAR_FIELD[patternCharIndex];
+
+        // If there are any spaces here, skip over them.  If we hit the end
+        // of the string, then fail.
+        for (;;) {
+            if (pos.getIndex() >= text.length()) return -start;
+            char c = text.charAt(pos.getIndex());
+            if (c != ' ' && c != '\t') break;
+            pos.setIndex(pos.getIndex()+1);
+        }
+
+        // We handle a few special cases here where we need to parse
+        // a number value.  We handle further, more generic cases below.  We need
+        // to handle some of them here because some fields require extra processing on
+        // the parsed value.
+        if (patternCharIndex == 4 /*HOUR_OF_DAY1_FIELD*/ ||
+            patternCharIndex == 15 /*HOUR1_FIELD*/ ||
+            (patternCharIndex == 2 /*MONTH_FIELD*/ && count <= 2) ||
+            patternCharIndex == 1)
+        {
+            // It would be good to unify this with the obeyCount logic below,
+            // but that's going to be difficult.
+            if (obeyCount)
+            {
+                if ((start+count) > text.length()) return -start;
+                number = numberFormat.parse(text.substring(0, start+count), pos);
+            }
+            else number = numberFormat.parse(text, pos);
+            if (number == null)
+                return -start;
+            value = number.intValue();
+        }
+
+        switch (patternCharIndex)
+        {
+        case 0: // 'G' - ERA
+            return matchString(text, start, Calendar.ERA, formatData.eras, cal);
+        case 1: // 'y' - YEAR
+            // If there are 3 or more YEAR pattern characters, this indicates
+            // that the year value is to be treated literally, without any
+            // two-digit year adjustments (e.g., from "01" to 2001).  Otherwise
+            // we made adjustments to place the 2-digit year in the proper
+            // century, for parsed strings from "00" to "99".  Any other string
+            // is treated literally:  "2250", "-1", "1", "002".
+            /* 'yy' is the only special case, 'y' is interpreted as number. [Richard/GCL]*/
+            if (count == 2 && (pos.getIndex() - start) == 2
+                && Character.isDigit(text.charAt(start))
+                && Character.isDigit(text.charAt(start+1)))
+            {
+                // Assume for example that the defaultCenturyStart is 6/18/1903.
+                // This means that two-digit years will be forced into the range
+                // 6/18/1903 to 6/17/2003.  As a result, years 00, 01, and 02
+                // correspond to 2000, 2001, and 2002.  Years 04, 05, etc. correspond
+                // to 1904, 1905, etc.  If the year is 03, then it is 2003 if the
+                // other fields specify a date before 6/18, or 1903 if they specify a
+                // date afterwards.  As a result, 03 is an ambiguous year.  All other
+                // two-digit years are unambiguous.
+                int ambiguousTwoDigitYear = defaultCenturyStartYear % 100;
+                ambiguousYear[0] = value == ambiguousTwoDigitYear;
+                value += (defaultCenturyStartYear/100)*100 +
+                    (value < ambiguousTwoDigitYear ? 100 : 0);
+            }
+            cal.set(Calendar.YEAR, value);
+            return pos.getIndex();
+        case 2: // 'M' - MONTH
+            if (count <= 2) // i.e., M or MM.
+            {
+                // Don't want to parse the month if it is a string
+                // while pattern uses numeric style: M or MM.
+                // [We computed 'value' above.]
+                cal.set(Calendar.MONTH, value - 1);
+                return pos.getIndex();
+            }
+            else
+            {
+                // count >= 3 // i.e., MMM or MMMM
+                // Want to be able to parse both short and long forms.
+                // Try count == 4 first:
+                int newStart = 0;
+                if ((newStart=matchString(text, start, Calendar.MONTH,
+                                          formatData.months, cal)) > 0)
+                    return newStart;
+                else // count == 4 failed, now try count == 3
+                    return matchString(text, start, Calendar.MONTH,
+                                       formatData.shortMonths, cal);
+            }
+        case 4: // 'k' - HOUR_OF_DAY: 1-based.  eg, 23:59 + 1 hour =>> 24:59
+            // [We computed 'value' above.]
+            if (value == cal.getMaximum(Calendar.HOUR_OF_DAY)+1) value = 0;
+            cal.set(Calendar.HOUR_OF_DAY, value);
+            return pos.getIndex();
+        case 9: { // 'E' - DAY_OF_WEEK
+            // Want to be able to parse both short and long forms.
+            // Try count == 4 (DDDD) first:
+            int newStart = 0;
+            if ((newStart=matchString(text, start, Calendar.DAY_OF_WEEK,
+                                      formatData.weekdays, cal)) > 0)
+                return newStart;
+            else // DDDD failed, now try DDD
+                return matchString(text, start, Calendar.DAY_OF_WEEK,
+                                   formatData.shortWeekdays, cal);
+        }
+        case 14:    // 'a' - AM_PM
+            return matchString(text, start, Calendar.AM_PM, formatData.ampms, cal);
+        case 15: // 'h' - HOUR:1-based.  eg, 11PM + 1 hour =>> 12 AM
+            // [We computed 'value' above.]
+            if (value == cal.getLeastMaximum(Calendar.HOUR)+1) value = 0;
+            cal.set(Calendar.HOUR, value);
+            return pos.getIndex();
+        case 17: // 'z' - ZONE_OFFSET
+            // First try to parse generic forms such as GMT-07:00. Do this first
+            // in case localized DateFormatZoneData contains the string "GMT"
+            // for a zone; in that case, we don't want to match the first three
+            // characters of GMT+/-HH:MM etc.
+            {
+                int sign = 0;
+                int offset;
+
+                // For time zones that have no known names, look for strings
+                // of the form:
+                //    GMT[+-]hours:minutes or
+                //    GMT[+-]hhmm or
+                //    GMT.
+                if ((text.length() - start) >= GMT.length() &&
+                    text.regionMatches(true, start, GMT, 0, GMT.length()))
+                {
+                    cal.set(Calendar.DST_OFFSET, 0);
+
+                    pos.setIndex(start + GMT.length());
+
+            try { // try-catch for "GMT" only time zone string
+            if( text.charAt(pos.getIndex()) == '+' ) {
+                sign = 1;
+            } else if( text.charAt(pos.getIndex()) == '-' ) {
+                sign = -1;
+            } 
+            } catch(StringIndexOutOfBoundsException e) {
+                    }
+            if (sign == 0) {
+            cal.set(Calendar.ZONE_OFFSET, 0 );
+            return pos.getIndex();
+            }
+
+                    // Look for hours:minutes or hhmm.
+                    pos.setIndex(pos.getIndex() + 1);
+                    Number tzNumber = numberFormat.parse(text, pos);
+                    if( tzNumber == null) {
+                        return -start;
+                    }
+                    if( text.charAt(pos.getIndex()) == ':' ) {
+                        // This is the hours:minutes case
+                        offset = tzNumber.intValue() * 60;
+                        pos.setIndex(pos.getIndex() + 1);
+                        tzNumber = numberFormat.parse(text, pos);
+                        if( tzNumber == null) {
+                            return -start;
+                        }
+                        offset += tzNumber.intValue();
+                    }
+                    else {
+                        // This is the hhmm case.
+                        offset = tzNumber.intValue();
+                        if( offset < 24 )
+                            offset *= 60;
+                        else
+                            offset = offset % 100 + offset / 100 * 60;
+                    }
+
+                    // Fall through for final processing below of 'offset' and 'sign'.
+                }
+                else {
+                    // At this point, check for named time zones by looking through
+                    // the locale data from the DateFormatZoneData strings.
+                    // Want to be able to parse both short and long forms.
+            i = subParseZoneString(text, start, cal);
+            if (i != 0)
+            return i;
+
+                    // As a last resort, look for numeric timezones of the form
+                    // [+-]hhmm as specified by RFC 822.  This code is actually
+                    // a little more permissive than RFC 822.  It will try to do
+                    // its best with numbers that aren't strictly 4 digits long.
+                    DecimalFormat fmt = new DecimalFormat("+####;-####");
+                    fmt.setParseIntegerOnly(true);
+                    Number tzNumber = fmt.parse( text, pos );
+                    if( tzNumber == null) {
+                        return -start;   // Wasn't actually a number.
+                    }
+                    offset = tzNumber.intValue();
+                    sign = 1;
+                    if( offset < 0 ) {
+                        sign = -1;
+                        offset = -offset;
+                    }
+                    if( offset < 24 )
+                        offset = offset * 60;
+                    else
+                        offset = offset % 100 + offset / 100 * 60;
+
+                    // Fall through for final processing below of 'offset' and 'sign'.
+                }
+
+                // Do the final processing for both of the above cases.  We only
+                // arrive here if the form GMT+/-... or an RFC 822 form was seen.
+                if (sign != 0)
+                {
+                    offset *= millisPerMinute * sign;
+
+                    if (cal.getTimeZone().useDaylightTime())
+                    {
+                        cal.set(Calendar.DST_OFFSET, millisPerHour);
+                        offset -= millisPerHour;
+                    }
+                    cal.set(Calendar.ZONE_OFFSET, offset);
+
+                    return pos.getIndex();
+                }
+            }
+
+            // All efforts to parse a zone failed.
+            return -start;
+
+        default:
+            // case 3: // 'd' - DATE
+            // case 5: // 'H' - HOUR_OF_DAY:0-based.  eg, 23:59 + 1 hour =>> 00:59
+            // case 6: // 'm' - MINUTE
+            // case 7: // 's' - SECOND
+            // case 8: // 'S' - MILLISECOND
+            // case 10: // 'D' - DAY_OF_YEAR
+            // case 11: // 'F' - DAY_OF_WEEK_IN_MONTH
+            // case 12: // 'w' - WEEK_OF_YEAR
+            // case 13: // 'W' - WEEK_OF_MONTH
+            // case 16: // 'K' - HOUR: 0-based.  eg, 11PM + 1 hour =>> 0 AM
+
+            // Handle "generic" fields
+            if (obeyCount)
+            {
+                if ((start+count) > text.length()) return -start;
+                number = numberFormat.parse(text.substring(0, start+count), pos);
+            }
+            else number = numberFormat.parse(text, pos);
+            if (number != null) {
+                cal.set(field, number.intValue());
+                return pos.getIndex();
+            }
+            return -start;
+        }
+    }
+
+
+    /**
+     * Translate a pattern, mapping each character in the from string to the
+     * corresponding character in the to string.
+     */
+    private String translatePattern(String pattern, String from, String to) {
+        StringBuffer result = new StringBuffer();
+        boolean inQuote = false;
+        for (int i = 0; i < pattern.length(); ++i) {
+            char c = pattern.charAt(i);
+            if (inQuote) {
+                if (c == '\'')
+                    inQuote = false;
+            }
+            else {
+                if (c == '\'')
+                    inQuote = true;
+                else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
+                    int ci = from.indexOf(c);
+                    if (ci == -1)
+                        throw new IllegalArgumentException("Illegal pattern " +
+                                                           " character '" +
+                                                           c + "'");
+                    c = to.charAt(ci);
+                }
+            }
+            result.append(c);
+        }
+        if (inQuote)
+            throw new IllegalArgumentException("Unfinished quote in pattern");
+        return result.toString();
+    }
+
+    /**
+     * Return a pattern string describing this date format.
+     */
+    public String toPattern() {
+        return pattern;
+    }
+
+    /**
+     * Return a localized pattern string describing this date format.
+     */
+    public String toLocalizedPattern() {
+        return translatePattern(pattern,
+                                formatData.patternChars,
+                                formatData.localPatternChars);
+    }
+
+    /**
+     * Apply the given unlocalized pattern string to this date format.
+     */
+    public void applyPattern (String pattern)
+    {
+        this.pattern = pattern;
+    }
+
+    /**
+     * Apply the given localized pattern string to this date format.
+     */
+    public void applyLocalizedPattern(String pattern) {
+        this.pattern = translatePattern(pattern,
+                                        formatData.localPatternChars,
+                                        formatData.patternChars);
+    }
+
+    /**
+     * Gets the date/time formatting data.
+     * @return a copy of the date-time formatting data associated
+     * with this date-time formatter.
+     */
+    public DateFormatSymbols getDateFormatSymbols()
+    {
+        return (DateFormatSymbols)formatData.clone();
+    }
+
+    /**
+     * Allows you to set the date/time formatting data.
+     * @param newFormatData the given date-time formatting data.
+     */
+    public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols)
+    {
+        this.formatData = (DateFormatSymbols)newFormatSymbols.clone();
+    }
+
+    /**
+     * Method for subclasses to access the DateFormatSymbols.
+     */
+    protected DateFormatSymbols getSymbols() {
+        return formatData;
+    }
+
+    /**
+     * Overrides Cloneable
+     */
+    public Object clone() {
+        SimpleDateFormat other = (SimpleDateFormat) super.clone();
+        other.formatData = (DateFormatSymbols) formatData.clone();
+        return other;
+    }
+
+    /**
+     * Override hashCode.
+     * Generates the hash code for the SimpleDateFormat object
+     */
+    public int hashCode()
+    {
+        return pattern.hashCode();
+        // just enough fields for a reasonable distribution
+    }
+
+    /**
+     * Override equals.
+     */
+    public boolean equals(Object obj)
+    {
+        if (!super.equals(obj)) return false; // super does class check
+        SimpleDateFormat that = (SimpleDateFormat) obj;
+        return (pattern.equals(that.pattern)
+                && formatData.equals(that.formatData));
+    }
+
+    /**
+     * Override readObject.
+     */
+    private void readObject(ObjectInputStream stream)
+         throws IOException, ClassNotFoundException {
+             stream.defaultReadObject();
+             if (serialVersionOnStream < 1) {
+                 // didn't have defaultCenturyStart field
+                 initializeDefaultCentury();
+             }
+             else {
+                 // fill in dependent transient field
+                 parseAmbiguousDatesAsAfter(defaultCenturyStart);
+             }
+             serialVersionOnStream = currentSerialVersion;
+    }
+}
diff --git a/src/com/ibm/icu/text/StringCharacterIterator.java b/src/com/ibm/icu/text/StringCharacterIterator.java
new file mode 100755
index 0000000..fa58bb3
--- /dev/null
+++ b/src/com/ibm/icu/text/StringCharacterIterator.java
@@ -0,0 +1,269 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/StringCharacterIterator.java,v $ 
+ * $Date: 2002/02/16 03:06:15 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+
+// NOTE:  This class is identical to java.text.StringCharacterIterator
+// in JDK 1.2.  It's copied here because the JDK 1.1 version of
+// StringCharacterIterator has a bug that prevents it from working
+// right with RuleBasedBreakIterator.  This class is unnecessary
+// when using RuleBasedBreakIterator with JDK 1.2.
+
+package com.ibm.icu.text;
+import java.text.CharacterIterator;
+
+/**
+ * <code>StringCharacterIterator</code> implements the
+ * <code>CharacterIterater</code> protocol for a <code>String</code>.
+ * The <code>StringCharacterIterator</code> class iterates over the
+ * entire <code>String</code>.
+ *
+ * @see CharacterIterator
+ */
+
+public final class StringCharacterIterator implements CharacterIterator
+{
+    private String text;
+    private int begin;
+    private int end;
+    // invariant: begin <= pos <= end
+    private int pos;
+
+    /**
+     * Constructs an iterator with an initial index of 0.
+     */
+    public StringCharacterIterator(String text)
+    {
+        this(text, 0);
+    }
+
+    /**
+     * Constructs an iterator with the specified initial index.
+     *
+     * @param  text   The String to be iterated over
+     * @param  pos    Initial iterator position
+     */
+    public StringCharacterIterator(String text, int pos)
+    {
+    this(text, 0, text.length(), pos);
+    }
+
+    /**
+     * Constructs an iterator over the given range of the given string, with the
+     * index set at the specified position.
+     *
+     * @param  text   The String to be iterated over
+     * @param  begin  Index of the first character
+     * @param  end    Index of the character following the last character
+     * @param  pos    Initial iterator position
+     */
+    public StringCharacterIterator(String text, int begin, int end, int pos) {
+        if (text == null) {
+            throw new NullPointerException();
+        }
+        this.text = text;
+
+        if (begin < 0 || begin > end || end > text.length()) {
+            throw new IllegalArgumentException("Invalid substring range");
+        }
+
+        if (pos < begin || pos > end) {
+            throw new IllegalArgumentException("Invalid position");
+        }
+
+        this.begin = begin;
+        this.end = end;
+        this.pos = pos;
+    }
+
+    /**
+     * Reset this iterator to point to a new string.  This package-visible
+     * method is used by other java.text classes that want to avoid allocating
+     * new StringCharacterIterator objects every time their setText method
+     * is called.
+     *
+     * @param  text   The String to be iterated over
+     */
+    public void setText(String text) {
+        if (text == null) {
+            throw new NullPointerException();
+        }
+        this.text = text;
+        this.begin = 0;
+        this.end = text.length();
+        this.pos = 0;
+    }
+
+    /**
+     * Implements CharacterIterator.first() for String.
+     * @see CharacterIterator#first
+     */
+    public char first()
+    {
+        pos = begin;
+        return current();
+    }
+
+    /**
+     * Implements CharacterIterator.last() for String.
+     * @see CharacterIterator#last
+     */
+    public char last()
+    {
+        if (end != begin) {
+            pos = end - 1;
+        } else {
+            pos = end;
+        }
+        return current();
+     }
+
+    /**
+     * Implements CharacterIterator.setIndex() for String.
+     * @see CharacterIterator#setIndex
+     */
+    public char setIndex(int p)
+    {
+    if (p < begin || p > end) {
+            throw new IllegalArgumentException("Invalid index");
+    }
+        pos = p;
+        return current();
+    }
+
+    /**
+     * Implements CharacterIterator.current() for String.
+     * @see CharacterIterator#current
+     */
+    public char current()
+    {
+        if (pos >= begin && pos < end) {
+            return text.charAt(pos);
+        }
+        else {
+            return DONE;
+        }
+    }
+
+    /**
+     * Implements CharacterIterator.next() for String.
+     * @see CharacterIterator#next
+     */
+    public char next()
+    {
+        if (pos < end - 1) {
+            pos++;
+            return text.charAt(pos);
+        }
+        else {
+            pos = end;
+            return DONE;
+        }
+    }
+
+    /**
+     * Implements CharacterIterator.previous() for String.
+     * @see CharacterIterator#previous
+     */
+    public char previous()
+    {
+        if (pos > begin) {
+            pos--;
+            return text.charAt(pos);
+        }
+        else {
+            return DONE;
+        }
+    }
+
+    /**
+     * Implements CharacterIterator.getBeginIndex() for String.
+     * @see CharacterIterator#getBeginIndex
+     */
+    public int getBeginIndex()
+    {
+        return begin;
+    }
+
+    /**
+     * Implements CharacterIterator.getEndIndex() for String.
+     * @see CharacterIterator#getEndIndex
+     */
+    public int getEndIndex()
+    {
+        return end;
+    }
+
+    /**
+     * Implements CharacterIterator.getIndex() for String.
+     * @see CharacterIterator#getIndex
+     */
+    public int getIndex()
+    {
+        return pos;
+    }
+
+    /**
+     * Compares the equality of two StringCharacterIterator objects.
+     * @param obj the StringCharacterIterator object to be compared with.
+     * @return true if the given obj is the same as this
+     * StringCharacterIterator object; false otherwise.
+     */
+    public boolean equals(Object obj)
+    {
+        if (this == obj) {
+            return true;
+        }
+        if (!(obj instanceof StringCharacterIterator)) {
+            return false;
+        }
+
+        StringCharacterIterator that = (StringCharacterIterator) obj;
+
+        if (hashCode() != that.hashCode()) {
+            return false;
+        }
+        if (!text.equals(that.text)) {
+            return false;
+        }
+        if (pos != that.pos || begin != that.begin || end != that.end) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Computes a hashcode for this iterator.
+     * @return A hash code
+     */
+    public int hashCode()
+    {
+        return text.hashCode() ^ pos ^ begin ^ end;
+    }
+
+    /**
+     * Creates a copy of this iterator.
+     * @return A copy of this
+     */
+    public Object clone()
+    {
+        try {
+            StringCharacterIterator other
+            = (StringCharacterIterator) super.clone();
+            return other;
+        }
+        catch (CloneNotSupportedException e) {
+            throw new InternalError();
+        }
+    }
+
+}
diff --git a/src/com/ibm/icu/text/StringMatcher.java b/src/com/ibm/icu/text/StringMatcher.java
new file mode 100755
index 0000000..addc958
--- /dev/null
+++ b/src/com/ibm/icu/text/StringMatcher.java
@@ -0,0 +1,295 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/StringMatcher.java,v $ 
+ * $Date: 2002/06/28 19:18:05 $ 
+ * $Revision: 1.12 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * An object that matches a fixed input string, implementing the
+ * UnicodeMatcher API.  This object also implements the
+ * UnicodeReplacer API, allowing it to emit the matched text as
+ * output.  Since the match text may contain flexible match elements,
+ * such as UnicodeSets, the emitted text is not the match pattern, but
+ * instead a substring of the actual matched text.  Following
+ * convention, the output text is the leftmost match seen up to this
+ * point.
+ *
+ * A StringMatcher may represent a segment, in which case it has a
+ * positive segment number.  This affects how the matcher converts
+ * itself to a pattern but does not otherwise affect its function.
+ *
+ * A StringMatcher that is not a segment should not be used as a
+ * UnicodeReplacer.
+ */
+class StringMatcher implements UnicodeMatcher, UnicodeReplacer {
+
+    /**
+     * The text to be matched.
+     */
+    private String pattern;
+
+    /**
+     * Start offset, in the match text, of the <em>rightmost</em>
+     * match.
+     */
+    private int matchStart;
+    
+    /**
+     * Limit offset, in the match text, of the <em>rightmost</em>
+     * match.
+     */
+    private int matchLimit;
+
+    /**
+     * The segment number, 1-based, or 0 if not a segment.
+     */
+    private int segmentNumber;
+
+    /**
+     * Context object that maps stand-ins to matcher and replacer
+     * objects.
+     */
+    private final RuleBasedTransliterator.Data data;
+
+    /**
+     * Construct a matcher that matches the given pattern string.
+     * @param theString the pattern to be matched, possibly containing
+     * stand-ins that represent nested UnicodeMatcher objects.
+     * @param segmentNum the segment number from 1..n, or 0 if this is
+     * not a segment.
+     * @param theData context object mapping stand-ins to
+     * UnicodeMatcher objects.
+     */
+    public StringMatcher(String theString,
+                         int segmentNum,
+                         RuleBasedTransliterator.Data theData) {
+        data = theData;
+        pattern = theString;
+        matchStart = matchLimit = -1;
+        segmentNumber = segmentNum;
+    }
+
+    /**
+     * Construct a matcher that matches a substring of the given
+     * pattern string.
+     * @param theString the pattern to be matched, possibly containing
+     * stand-ins that represent nested UnicodeMatcher objects.
+     * @param start first character of theString to be matched
+     * @param limit index after the last character of theString to be
+     * matched.
+     * @param segmentNum the segment number from 1..n, or 0 if this is
+     * not a segment.
+     * @param theData context object mapping stand-ins to
+     * UnicodeMatcher objects.
+     */
+    public StringMatcher(String theString,
+                         int start,
+                         int limit,
+                         int segmentNum,
+                         RuleBasedTransliterator.Data theData) {
+        this(theString.substring(start, limit), segmentNum, theData);
+    }
+
+    /**
+     * Implement UnicodeMatcher
+     */
+    public int matches(Replaceable text,
+                       int[] offset,
+                       int limit,
+                       boolean incremental) {
+        // Note (1): We process text in 16-bit code units, rather than
+        // 32-bit code points.  This works because stand-ins are
+        // always in the BMP and because we are doing a literal match
+        // operation, which can be done 16-bits at a time.
+        int i;
+        int[] cursor = new int[] { offset[0] };
+        if (limit < cursor[0]) {
+            // Match in the reverse direction
+            for (i=pattern.length()-1; i>=0; --i) {
+                char keyChar = pattern.charAt(i); // OK; see note (1) above
+                UnicodeMatcher subm = data.lookupMatcher(keyChar);
+                if (subm == null) {
+                    if (cursor[0] > limit &&
+                        keyChar == text.charAt(cursor[0])) { // OK; see note (1) above
+                        --cursor[0];
+                    } else {
+                        return U_MISMATCH;
+                    }
+                } else {
+                    int m =
+                        subm.matches(text, cursor, limit, incremental);
+                    if (m != U_MATCH) {
+                        return m;
+                    }
+                }
+            }
+            // Record the match position, but adjust for a normal
+            // forward start, limit, and only if a prior match does not
+            // exist -- we want the rightmost match.
+            if (matchStart < 0) {
+                matchStart = cursor[0]+1;
+                matchLimit = offset[0]+1;
+            }
+        } else {
+            for (i=0; i<pattern.length(); ++i) {
+                if (incremental && cursor[0] == limit) {
+                    // We've reached the context limit without a mismatch and
+                    // without completing our match.
+                    return U_PARTIAL_MATCH;
+                }
+                char keyChar = pattern.charAt(i); // OK; see note (1) above
+                UnicodeMatcher subm = data.lookupMatcher(keyChar);
+                if (subm == null) {
+                    // Don't need the cursor < limit check if
+                    // incremental is true (because it's done above); do need
+                    // it otherwise.
+                    if (cursor[0] < limit &&
+                        keyChar == text.charAt(cursor[0])) { // OK; see note (1) above
+                        ++cursor[0];
+                    } else {
+                        return U_MISMATCH;
+                    }
+                } else {
+                    int m =
+                        subm.matches(text, cursor, limit, incremental);
+                    if (m != U_MATCH) {
+                        return m;
+                    }
+                }
+            }
+            // Record the match position
+            matchStart = offset[0];
+            matchLimit = cursor[0];
+        }
+
+        offset[0] = cursor[0];
+        return U_MATCH;
+    }
+
+    /**
+     * Implement UnicodeMatcher
+     */
+    public String toPattern(boolean escapeUnprintable) {
+        StringBuffer result = new StringBuffer();
+        StringBuffer quoteBuf = new StringBuffer();
+        if (segmentNumber > 0) { // i.e., if this is a segment
+            result.append('(');
+        }
+        for (int i=0; i<pattern.length(); ++i) {
+            char keyChar = pattern.charAt(i); // OK; see note (1) above
+            UnicodeMatcher m = data.lookupMatcher(keyChar);
+            if (m == null) {
+                Utility.appendToRule(result, keyChar, false, escapeUnprintable, quoteBuf);
+            } else {
+                Utility.appendToRule(result, m.toPattern(escapeUnprintable),
+                                     true, escapeUnprintable, quoteBuf);
+            }
+        }
+        if (segmentNumber > 0) { // i.e., if this is a segment
+            result.append(')');
+        }
+        // Flush quoteBuf out to result
+        Utility.appendToRule(result, -1,
+                             true, escapeUnprintable, quoteBuf);
+        return result.toString();
+    }
+
+    /**
+     * Implement UnicodeMatcher
+     */
+    public boolean matchesIndexValue(int v) {
+        if (pattern.length() == 0) {
+            return true;
+        }
+        int c = UTF16.charAt(pattern, 0);
+        UnicodeMatcher m = data.lookupMatcher(c);
+        return (m == null) ? ((c & 0xFF) == v) : m.matchesIndexValue(v);
+    }
+
+    /**
+     * Implementation of UnicodeMatcher API.  Union the set of all
+     * characters that may be matched by this object into the given
+     * set.
+     * @param toUnionTo the set into which to union the source characters
+     */
+    public void addMatchSetTo(UnicodeSet toUnionTo) {
+        int ch;
+        for (int i=0; i<pattern.length(); i+=UTF16.getCharCount(ch)) {
+            ch = UTF16.charAt(pattern, i);
+            UnicodeMatcher matcher = data.lookupMatcher(ch);
+            if (matcher == null) {
+                toUnionTo.add(ch);
+            } else {
+                matcher.addMatchSetTo(toUnionTo);
+            }
+        }
+    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public int replace(Replaceable text,
+                       int start,
+                       int limit,
+                       int[] cursor) {
+
+        int outLen = 0;
+
+        // Copy segment with out-of-band data
+        int dest = limit;
+        // If there was no match, that means that a quantifier
+        // matched zero-length.  E.g., x (a)* y matched "xy".
+        if (matchStart >= 0) {
+            if (matchStart != matchLimit) {
+                text.copy(matchStart, matchLimit, dest);
+                outLen = matchLimit - matchStart;
+            }
+        }
+
+        text.replace(start, limit, ""); // delete original text
+
+        return outLen;
+    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public String toReplacerPattern(boolean escapeUnprintable) {
+        // assert(segmentNumber > 0);
+        StringBuffer rule = new StringBuffer("$");
+        Utility.appendNumber(rule, segmentNumber, 10, 1);
+        return rule.toString();
+    }
+
+    /**
+     * Remove any match data.  This must be called before performing a
+     * set of matches with this segment.
+     */
+    public void resetMatch() {
+        matchStart = matchLimit = -1;
+    }
+
+    /**
+     * Union the set of all characters that may output by this object
+     * into the given set.
+     * @param toUnionTo the set into which to union the output characters
+     */
+    public void addReplacementSetTo(UnicodeSet toUnionTo) {
+        // The output of this replacer varies; it is the source text between
+        // matchStart and matchLimit.  Since this varies depending on the
+        // input text, we can't compute it here.  We can either do nothing
+        // or we can add ALL characters to the set.  It's probably more useful
+        // to do nothing.
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/StringReplacer.java b/src/com/ibm/icu/text/StringReplacer.java
new file mode 100755
index 0000000..d557154
--- /dev/null
+++ b/src/com/ibm/icu/text/StringReplacer.java
@@ -0,0 +1,296 @@
+/*
+**********************************************************************
+*   Copyright (c) 2002, International Business Machines Corporation
+*   and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   01/14/2002  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * A replacer that produces static text as its output.  The text may
+ * contain transliterator stand-in characters that represent nested
+ * UnicodeReplacer objects, making it possible to encode a tree of
+ * replacers in a StringReplacer.  A StringReplacer that contains such
+ * stand-ins is called a <em>complex</em> StringReplacer.  A complex
+ * StringReplacer has a slower processing loop than a non-complex one.
+ * @author Alan Liu
+ */
+class StringReplacer implements UnicodeReplacer {
+
+    /**
+     * Output text, possibly containing stand-in characters that
+     * represent nested UnicodeReplacers.
+     */
+    private String output;
+
+    /**
+     * Cursor position.  Value is ignored if hasCursor is false.
+     */
+    private int cursorPos;
+
+    /**
+     * True if this object outputs a cursor position.
+     */
+    private boolean hasCursor;
+
+    /**
+     * A complex object contains nested replacers and requires more
+     * complex processing.  StringReplacers are initially assumed to
+     * be complex.  If no nested replacers are seen during processing,
+     * then isComplex is set to false, and future replacements are
+     * short circuited for better performance.
+     */
+    private boolean isComplex;
+
+    /**
+     * Object that translates stand-in characters in 'output' to
+     * UnicodeReplacer objects.
+     */
+    private final RuleBasedTransliterator.Data data;
+
+    /**
+     * Construct a StringReplacer that sets the emits the given output
+     * text and sets the cursor to the given position.
+     * @param theOutput text that will replace input text when the
+     * replace() method is called.  May contain stand-in characters
+     * that represent nested replacers.
+     * @param theCursorPos cursor position that will be returned by
+     * the replace() method
+     * @param theData transliterator context object that translates
+     * stand-in characters to UnicodeReplacer objects
+     */
+    public StringReplacer(String theOutput,
+                          int theCursorPos,
+                          RuleBasedTransliterator.Data theData) {
+        output = theOutput;
+        cursorPos = theCursorPos;
+        hasCursor = true;
+        data = theData;
+        isComplex = true;
+    }
+
+    /**
+     * Construct a StringReplacer that sets the emits the given output
+     * text and does not modify the cursor.
+     * @param theOutput text that will replace input text when the
+     * replace() method is called.  May contain stand-in characters
+     * that represent nested replacers.
+     * @param theData transliterator context object that translates
+     * stand-in characters to UnicodeReplacer objects
+     */
+    public StringReplacer(String theOutput,
+                          RuleBasedTransliterator.Data theData) {
+        output = theOutput;
+        cursorPos = 0;
+        hasCursor = false;
+        data = theData;
+        isComplex = true;
+    }
+
+//=    public static UnicodeReplacer valueOf(String output,
+//=                                          int cursorPos,
+//=                                          RuleBasedTransliterator.Data data) {
+//=        if (output.length() == 1) {
+//=            char c = output.charAt(0);
+//=            UnicodeReplacer r = data.lookupReplacer(c);
+//=            if (r != null) {
+//=                return r;
+//=            }
+//=        }
+//=        return new StringReplacer(output, cursorPos, data);
+//=    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public int replace(Replaceable text,
+                       int start,
+                       int limit,
+                       int[] cursor) {
+        int outLen;
+        int newStart = 0;
+
+        // NOTE: It should be possible to _always_ run the complex
+        // processing code; just slower.  If not, then there is a bug
+        // in the complex processing code.
+
+        // Simple (no nested replacers) Processing Code :
+        if (!isComplex) {
+            text.replace(start, limit, output);
+            outLen = output.length();
+
+            // Setup default cursor position (for cursorPos within output)
+            newStart = cursorPos;
+        }
+
+        // Complex (nested replacers) Processing Code :
+        else {
+            /* When there are segments to be copied, use the Replaceable.copy()
+             * API in order to retain out-of-band data.  Copy everything to the
+             * end of the string, then copy them back over the key.  This preserves
+             * the integrity of indices into the key and surrounding context while
+             * generating the output text.
+             */
+            int destStart = text.length(); // copy new text to here
+            int destLimit = destStart;
+            StringBuffer buf = new StringBuffer();
+            int oOutput; // offset into 'output'
+            isComplex = false;
+            for (oOutput=0; oOutput<output.length(); ) {
+                if (oOutput == cursorPos) {
+                    // Record the position of the cursor
+                    newStart = destLimit - destStart; // relative to start
+                }
+                int c = UTF16.charAt(output, oOutput);
+                UnicodeReplacer r = data.lookupReplacer(c);
+                if (r == null) {
+                    // Accumulate straight (non-segment) text.
+                    UTF16.append(buf, c);
+                } else {
+                    isComplex = true;
+
+                    // Insert any accumulated straight text.
+                    if (buf.length() > 0) {
+                        text.replace(destLimit, destLimit, buf.toString());
+                        destLimit += buf.length();
+                        buf.setLength(0);
+                    }
+
+                    // Delegate output generation to replacer object
+                    int len = r.replace(text, destLimit, destLimit, cursor);
+                    destLimit += len;
+                }
+                oOutput += UTF16.getCharCount(c);
+            }
+            // Insert any accumulated straight text.
+            if (buf.length() > 0) {
+                text.replace(destLimit, destLimit, buf.toString());
+                destLimit += buf.length();
+            }
+            if (oOutput == cursorPos) {
+                // Record the position of the cursor
+                newStart = destLimit - destStart; // relative to start
+            }
+
+            outLen = destLimit - destStart;
+
+            // Copy new text to start, and delete it
+            text.copy(destStart, destLimit, start);
+            text.replace(destStart + outLen, destLimit + outLen, "");
+
+            // Delete the old text (the key)
+            text.replace(start + outLen, limit + outLen, "");
+        }        
+
+        if (hasCursor) {
+            // Adjust the cursor for positions outside the key.  These
+            // refer to code points rather than code units.  If cursorPos
+            // is within the output string, then use newStart, which has
+            // already been set above.
+            if (cursorPos < 0) {
+                newStart = start;
+                int n = cursorPos;
+                // Outside the output string, cursorPos counts code points
+                while (n < 0 && newStart > 0) {
+                    newStart -= UTF16.getCharCount(text.char32At(newStart-1));
+                    ++n;
+                }
+                newStart += n;
+            } else if (cursorPos > output.length()) {
+                newStart = start + outLen;
+                int n = cursorPos - output.length();
+                // Outside the output string, cursorPos counts code points
+                while (n > 0 && newStart < text.length()) {
+                    newStart += UTF16.getCharCount(text.char32At(newStart));
+                    --n;
+                }
+                newStart += n;
+            } else {
+                // Cursor is within output string.  It has been set up above
+                // to be relative to start.
+                newStart += start;
+            }
+
+            cursor[0] = newStart;
+        }
+
+        return outLen;
+    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public String toReplacerPattern(boolean escapeUnprintable) {
+        StringBuffer rule = new StringBuffer();
+        StringBuffer quoteBuf = new StringBuffer();
+
+        int cursor = cursorPos;
+
+        // Handle a cursor preceding the output
+        if (hasCursor && cursor < 0) {
+            while (cursor++ < 0) {
+                Utility.appendToRule(rule, '@', true, escapeUnprintable, quoteBuf);
+            }
+            // Fall through and append '|' below
+        }
+
+        for (int i=0; i<output.length(); ++i) {
+            if (hasCursor && i == cursor) {
+                Utility.appendToRule(rule, '|', true, escapeUnprintable, quoteBuf);
+            }
+            char c = output.charAt(i); // Ok to use 16-bits here
+
+            UnicodeReplacer r = data.lookupReplacer(c);
+            if (r == null) {
+                Utility.appendToRule(rule, c, false, escapeUnprintable, quoteBuf);
+            } else {
+                StringBuffer buf = new StringBuffer(" ");
+                buf.append(r.toReplacerPattern(escapeUnprintable));
+                buf.append(' ');
+                Utility.appendToRule(rule, buf.toString(),
+                                     true, escapeUnprintable, quoteBuf);
+            }
+        }
+
+        // Handle a cursor after the output.  Use > rather than >= because
+        // if cursor == output.length() it is at the end of the output,
+        // which is the default position, so we need not emit it.
+        if (hasCursor && cursor > output.length()) {
+            cursor -= output.length();
+            while (cursor-- > 0) {
+                Utility.appendToRule(rule, '@', true, escapeUnprintable, quoteBuf);
+            }
+            Utility.appendToRule(rule, '|', true, escapeUnprintable, quoteBuf);
+        }
+        // Flush quoteBuf out to result
+        Utility.appendToRule(rule, -1,
+                             true, escapeUnprintable, quoteBuf);
+
+        return rule.toString();
+    }
+
+    /**
+     * Union the set of all characters that may output by this object
+     * into the given set.
+     * @param toUnionTo the set into which to union the output characters
+     */
+    public void addReplacementSetTo(UnicodeSet toUnionTo) {
+        int ch;
+        for (int i=0; i<output.length(); i+=UTF16.getCharCount(ch)) {
+            ch = UTF16.charAt(output, i);
+            UnicodeReplacer r = data.lookupReplacer(ch);
+            if (r == null) {
+                toUnionTo.add(ch);
+            } else {
+                r.addReplacementSetTo(toUnionTo);
+            }
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/StringSearch.java b/src/com/ibm/icu/text/StringSearch.java
new file mode 100755
index 0000000..dc2a866
--- /dev/null
+++ b/src/com/ibm/icu/text/StringSearch.java
@@ -0,0 +1,3131 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/StringSearch.java,v $ 
+ * $Date: 2002/08/08 23:37:52 $ 
+ * $Revision: 1.13 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.Locale;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.impl.NormalizerImpl;
+
+/**
+ * <p>
+ * <code>StringSearch</code> is the concrete subclass of 
+ * <code>SearchIterator</code> that provides language-sensitive text searching 
+ * based on the comparison rules defined in a {@link RuleBasedCollator} object.
+ * </p>
+ * <p>
+ * <code>StringSearch</code> uses a version of the fast Boyer-Moore search
+ * algorithm that has been adapted to work with the large character set of
+ * Unicode. Refer to 
+ * <a href=http://oss.software.ibm.com/icu/docs/papers/efficient_text_searching_in_java.html>
+ * "Efficient Text Searching in Java"</a>, published in the 
+ * <i>Java Report</i> on February, 1999, for further information on the 
+ * algorithm.
+ * </p>
+ * <p>
+ * Users are also strongly encouraged to read the section on 
+ * <a href=http://oss.software.ibm.com/icu/userguide/searchString.html>
+ * String Search</a> and 
+ * <a href=http://oss.software.ibm.com/icu/userguide/Collate_Intro.html>
+ * Collation</a> in the user guide before attempting to use this class.
+ * </p>
+ * <p>
+ * String searching gets alittle complicated when accents are encountered at
+ * match boundaries. If a match is found and it has preceding or trailing 
+ * accents not part of the match, the result returned will include the 
+ * preceding accents up to the first base character, if the pattern searched 
+ * for starts an accent. Likewise, 
+ * if the pattern ends with an accent, all trailing accents up to the first
+ * base character will be included in the result.
+ * </p>
+ * <p>
+ * For example, if a match is found in target text "a&#92;u0325&#92;u0300" for 
+ * the pattern
+ * "a&#92;u0325", the result returned by StringSearch will be the index 0 and
+ * length 3 &lt;0, 3&gt;. If a match is found in the target 
+ * "a&#92;u0325&#92;u0300" 
+ * for the pattern "&#92;u0300", then the result will be index 1 and length 2 
+ * <1, 2>.
+ * </p>
+ * <p>
+ * In the case where the decomposition mode is on for the RuleBasedCollator,
+ * all matches that starts or ends with an accent will have its results include 
+ * preceding or following accents respectively. For example, if pattern "a" is
+ * looked for in the target text "&aacute;&#92;u0325", the result will be
+ * index 0 and length 2 &lt;0, 2&gt;.
+ * </p>
+ * <p>
+ * The StringSearch class provides two options to handle accent matching 
+ * described below:
+ * </p>
+ * <p>
+ * Let S' be the sub-string of a text string S between the offsets start and 
+ * end &lt;start, end&gt;.
+ * <br>
+ * A pattern string P matches a text string S at the offsets &lt;start, 
+ * length&gt; 
+ * <br>
+ * if
+ * <pre> 
+ * option 1. P matches some canonical equivalent string of S'. Suppose the 
+ *           RuleBasedCollator used for searching has a collation strength of 
+ *           TERTIARY, all accents are non-ignorable. If the pattern 
+ *           "a&#92;u0300" is searched in the target text 
+ *           "a&#92;u0325&#92;u0300", 
+ *           a match will be found, since the target text is canonically 
+ *           equivalent to "a&#92;u0300&#92;u0325"
+ * option 2. P matches S' and if P starts or ends with a combining mark, 
+ *           there exists no non-ignorable combining mark before or after S’ 
+ *           in S respectively. Following the example above, the pattern 
+ *           "a&#92;u0300" will not find a match in "a&#92;u0325&#92;u0300", 
+ *           since
+ *           there exists a non-ignorable accent '&#92;u0325' in the middle of 
+ *           'a' and '&#92;u0300'. Even with a target text of 
+ *           "a&#92;u0300&#92;u0325" a match will not be found because of the 
+ *           non-ignorable trailing accent &#92;u0325.
+ * </pre>
+ * Option 2. will be the default mode for dealing with boundary accents unless
+ * specified via the API setCanonical(boolean).
+ * One restriction is to be noted for option 1. Currently there are no 
+ * composite characters that consists of a character with combining class > 0 
+ * before a character with combining class == 0. However, if such a character 
+ * exists in the future, the StringSearch may not work correctly with option 1
+ * when such characters are encountered.
+ * </p>
+ * <p>
+ * <tt>SearchIterator</tt> provides APIs to specify the starting position 
+ * within the text string to be searched, e.g. <tt>setIndex</tt>,
+ * <tt>preceding</tt> and <tt>following</tt>. Since the starting position will 
+ * be set as it is specified, please take note that there are some dangerous 
+ * positions which the search may render incorrect results:
+ * <ul>
+ * <li> The midst of a substring that requires decomposition.
+ * <li> If the following match is to be found, the position should not be the
+ *      second character which requires to be swapped with the preceding 
+ *      character. Vice versa, if the preceding match is to be found, 
+ *      position to search from should not be the first character which 
+ *      requires to be swapped with the next character. E.g certain Thai and
+ *      Lao characters require swapping.
+ * <li> If a following pattern match is to be found, any position within a 
+ *      contracting sequence except the first will fail. Vice versa if a 
+ *      preceding pattern match is to be found, a invalid starting point 
+ *      would be any character within a contracting sequence except the last.
+ * </ul>
+ * </p>
+ * <p>
+ * Though collator attributes will be taken into consideration while 
+ * performing matches, there are no APIs provided in StringSearch for setting 
+ * and getting the attributes. These attributes can be set by getting the 
+ * collator from <tt>getCollator</tt> and using the APIs in 
+ * <tt>com.ibm.icu.text.Collator</tt>. To update StringSearch to the new 
+ * collator attributes, <tt>reset()</tt> or 
+ * <tt>setCollator(RuleBasedCollator)</tt> has to be called.
+ * </p>
+ * <p>
+ * Consult the 
+ * <a href=http://oss.software.ibm.com/icu/userguide/searchString.html>
+ * String Search</a> user guide and the <code>SearchIterator</code> 
+ * documentation for more information and examples of use.
+ * </p>
+ * @see SearchIterator
+ * @see RuleBasedCollator
+ * @author Laura Werner, synwee
+ * @since 1.0
+ */
+// internal notes: all methods do not guarantee the correct status of the 
+// characteriterator. the caller has to maintain the original index position
+// if necessary. methods could change the index position as it deems fit
+public final class StringSearch extends SearchIterator
+{
+	
+	// public constructors --------------------------------------------------
+	
+    /**
+     * Initializes the iterator to use the language-specific rules defined in 
+     * the argument collator to search for argument pattern in the argument 
+     * target text. The argument breakiter is used to define logical matches.
+     * See super class documentation for more details on the use of the target 
+     * text and BreakIterator.
+     * @param pattern text to look for.
+     * @param target target text to search for pattern. 
+     * @param collator RuleBasedCollator that defines the language rules
+     * @param breaker A {@link BreakIterator} that is used to determine the 
+     *                boundaries of a logical match. This argument can be null.
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0
+     * @see BreakIterator
+     * @see RuleBasedCollator
+     * @see SearchIterator
+     */
+    public StringSearch(String pattern, CharacterIterator target,
+                        RuleBasedCollator collator, BreakIterator breakiter) 
+    {
+        super(target, breakiter);
+        m_textBeginOffset_ = targetText.getBeginIndex();
+        m_textLimitOffset_ = targetText.getEndIndex();
+        m_collator_ = collator;
+        m_colEIter_ = m_collator_.getCollationElementIterator(target);
+        m_utilColEIter_ = collator.getCollationElementIterator("");
+        m_ceMask_ = getMask(m_collator_.getStrength());
+        m_isCanonicalMatch_ = false;
+        m_pattern_ = new Pattern(pattern);
+        m_matchedIndex_ = DONE;
+        
+        initialize();
+    }
+
+    /**
+     * Initializes the iterator to use the language-specific rules defined in 
+     * the argument collator to search for argument pattern in the argument 
+     * target text. No BreakIterators are set to test for logical matches.
+     * @param pattern text to look for.
+     * @param target target text to search for pattern. 
+     * @param collator RuleBasedCollator that defines the language rules
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0
+     * @see RuleBasedCollator
+     * @see SearchIterator
+     */
+    public StringSearch(String pattern, CharacterIterator target,
+                        RuleBasedCollator collator) 
+    {
+        this(pattern, target, collator, BreakIterator.getCharacterInstance());
+    }
+
+    /**
+     * Initializes the iterator to use the language-specific rules and 
+     * break iterator rules defined in the argument locale to search for 
+     * argument pattern in the argument target text. 
+     * See super class documentation for more details on the use of the target 
+     * text and BreakIterator.
+     * @param pattern text to look for.
+     * @param target target text to search for pattern. 
+     * @param locale locale to use for language and break iterator rules
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0. ClassCastException thrown if the collator for 
+     *            the specified locale is not a RuleBasedCollator.
+     * @see BreakIterator
+     * @see RuleBasedCollator
+     * @see SearchIterator
+     */
+    public StringSearch(String pattern, CharacterIterator target, Locale locale)
+    {
+        this(pattern, target, (RuleBasedCollator)Collator.getInstance(locale),
+             BreakIterator.getCharacterInstance(locale));
+    }
+
+    /**
+     * Initializes the iterator to use the language-specific rules and 
+     * break iterator rules defined in the default locale to search for 
+     * argument pattern in the argument target text. 
+     * See super class documentation for more details on the use of the target 
+     * text and BreakIterator.
+     * @param pattern text to look for.
+     * @param target target text to search for pattern. 
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0. ClassCastException thrown if the collator for 
+     *            the default locale is not a RuleBasedCollator.
+     * @see BreakIterator
+     * @see RuleBasedCollator
+     * @see SearchIterator
+     */
+    public StringSearch(String pattern, String target) 
+    {
+        this(pattern, new StringCharacterIterator(target),
+             (RuleBasedCollator)Collator.getInstance(),
+             BreakIterator.getCharacterInstance());
+    }
+
+    // public getters -----------------------------------------------------
+    
+    /**
+     * Returns the strength property of the RuleBasedCollator used in searching. 
+     * See the RuleBasedCollator class documentation for a description of the
+     * strength property.
+     * @return the strength property of the RuleBasedCollator used in searching
+     * @see RuleBasedCollator
+     * @see #setStrength
+     * @see #getCollator
+     * @deprecated since release 2.2, user who would like to access the 
+     *             RuleBasedCollator strength, should retrieve the 
+     *             RuleBasedCollator via the API getCollator(), and use the 
+     *             Collator APIs to retrieve the strength.
+     */
+    public int getStrength() {
+        return m_collator_.getStrength();
+    }
+    
+    /**
+	 * <p>
+     * Gets the RuleBasedCollator used for the language rules.
+     * </p>
+	 * <p>
+     * Since StringSearch depends on the returned RuleBasedCollator, any 
+	 * changes to the RuleBasedCollator result should follow with a call to 
+	 * either StringSearch.reset() or 
+	 * StringSearch.setCollator(RuleBasedCollator) to ensure the correct 
+	 * search behaviour.
+     * </p>
+	 * @return RuleBasedCollator used by this StringSearch
+     * @see RuleBasedCollator
+     * @see #setCollator
+	 */
+    public RuleBasedCollator getCollator() 
+    {
+        return m_collator_;
+    }
+    
+    /**
+     * Returns the pattern for which StringSearch is searching for.
+     * @return the pattern searched for
+     */
+    public String getPattern() 
+    {
+        return m_pattern_.targetText;
+    }
+    
+    /**
+     * Return the index in the target text where the iterator is currently 
+     * positioned at. 
+     * If the iteration has gone past the end of the target text or past 
+     * the beginning for a backwards search, {@link #DONE} is returned.
+     * @return index in the target text where the iterator is currently 
+     *         positioned at
+     * @draft release 2.2
+     */
+    public int getIndex() 
+    {
+        int result = m_colEIter_.getOffset();
+        if (isOutOfBounds(m_textBeginOffset_, m_textLimitOffset_, result)) {
+            return DONE;
+        }
+        return result;
+    }
+    
+    /**
+     * Determines whether canonical matches (option 1, as described in the 
+     * class documentation) is set.
+     * See setCanonical(boolean) for more information.
+     * @see #setCanonical
+     * @return true if canonical matches is set, false otherwise
+     * @draft release 2.2
+     */
+    public boolean isCanonical() 
+    {
+        return m_isCanonicalMatch_;
+    }
+    
+    // public setters -----------------------------------------------------
+    
+    /**
+     * <p>
+     * Sets the strength property of the RuleBasedCollator used for searching.
+     * See the Collator documentation for a description of the strengths.
+     * </p>
+     * @deprecated since release 2.2, user who would like to modify the 
+     * 		       RuleBasedCollator, should retrieve the RuleBasedCollator 
+     *             via the API getCollator(), and use the Collator APIs to 
+     * 		       modify the strength. After which StringSearch.reset() 
+     *             or StringSearch.setCollator(RuleBasedCollator) should be
+     *             called to update StringSearch.
+     * @see Collator
+     * @see Collator#PRIMARY
+     * @see Collator#SECONDARY
+     * @see Collator#TERTIARY
+     * @see Collator#QUATERNARY
+     * @see Collator#IDENTICAL
+     * @see #setCollator
+     * @see #getCollator
+     */
+    public void setStrength(int newStrength) 
+    {
+        // Due to a bug (?) in CollationElementIterator, we must set the
+        // collator's strength as well, since the iterator is going to
+        // mask out the portions of the collation element that are not
+        // relevant for the collator's current strength setting
+        // Note that this makes it impossible to share a Collator among
+        // multiple StringSearch objects if you adjust Strength settings.
+        m_collator_.setStrength(newStrength);
+        initialize();
+    }
+    
+    /**
+     * <p>
+     * Sets the RuleBasedCollator to be used for language-specific searching.
+     * </p>
+     * <p>
+     * This method causes internal data such as Boyer-Moore shift tables
+     * to be recalculated, but the iterator's position is unchanged.
+     * </p>
+     * @param collator to use for this StringSearch
+     * @exception IllegalArgumentException thrown when collator is null
+     * @see #getCollator
+     */
+    public void setCollator(RuleBasedCollator collator) 
+    {
+    	if (collator == null) {
+            throw new IllegalArgumentException("Collator can not be null");
+        }
+        m_collator_ = collator;
+        m_ceMask_ = getMask(m_collator_.getStrength());
+        // if status is a failure, ucol_getAttribute returns UCOL_DEFAULT
+        initialize();
+        m_colEIter_.setCollator(m_collator_);
+        m_utilColEIter_.setCollator(m_collator_);
+    }
+    
+    /**
+     * <p>
+     * Set the pattern to search for.  
+     * </p>
+     * <p>
+     * This method causes internal data such as Boyer-Moore shift tables
+     * to be recalculated, but the iterator's position is unchanged.
+     * </p>
+     * @param pattern for searching
+     * @see #getPattern
+     * @exception IllegalArgumentException thrown if pattern is null or of
+     * 			  length 0
+     */
+    public void setPattern(String pattern) 
+    {
+    	if (pattern == null || pattern.length() <= 0) {
+            throw new IllegalArgumentException(
+            		"Pattern to search for can not be null or of length 0");
+        }
+        m_pattern_.targetText = pattern;
+        initialize();
+    }
+    
+    /**
+ 	 * Set the target text to be searched. Text iteration will hence begin at 
+     * the start of the text string. This method is useful if you want to 
+     * re-use an iterator to search within a different body of text.
+     * @param text new text iterator to look for match, 
+     * @exception IllegalArgumentException thrown when text is null or has
+     *            0 length
+     * @see #getTarget
+	 * @draft release 2.2
+	 */
+	public void setTarget(CharacterIterator text)
+	{
+		super.setTarget(text);
+        m_textBeginOffset_ = targetText.getBeginIndex();
+        m_textLimitOffset_ = targetText.getEndIndex();
+        m_colEIter_.setText(targetText);
+	}
+    
+    /**
+	 * <p>
+     * Sets the position in the target text which the next search will start 
+     * from to the argument. This method clears all previous states.
+     * </p>
+     * <p>
+     * This method takes the argument position and sets the position in the 
+     * target text accordingly, without checking if position is pointing to a 
+     * valid starting point to begin searching.
+     * </p>
+     * <p>
+     * Search positions that may render incorrect results are highlighted in 
+     * the class documentation.
+     * </p>
+     * @param position index to start next search from.
+     * @exception IndexOutOfBoundsException thrown if argument position is out
+     *            of the target text range.
+     * @see #getIndex
+     * @draft release 2.2
+	 */
+	public void setIndex(int position)
+	{
+		super.setIndex(position);
+        m_matchedIndex_ = DONE;
+        m_colEIter_.setExactOffset(position);
+	}
+	
+	/**
+	 * <p>
+     * Set the canonical match mode. See class documentation for details.
+     * The default setting for this property is false.
+     * </p>
+	 * @param allowCanonical flag indicator if canonical matches are allowed
+     * @see #isCanonical
+	 * @draft release 2.2
+	 */
+	public void setCanonical(boolean allowCanonical)
+	{
+		m_isCanonicalMatch_ = allowCanonical;
+		if (m_isCanonicalMatch_ == true) {
+			if (m_canonicalPrefixAccents_ == null) {
+				m_canonicalPrefixAccents_ = new StringBuffer();
+			}
+			else {
+				m_canonicalPrefixAccents_.delete(0, 
+											m_canonicalPrefixAccents_.length());
+			}
+			if (m_canonicalSuffixAccents_ == null) {
+				m_canonicalSuffixAccents_ = new StringBuffer();
+			}
+			else {
+				m_canonicalSuffixAccents_.delete(0, 
+											m_canonicalSuffixAccents_.length());
+			}
+		}
+	}
+	
+	// public miscellaneous methods -----------------------------------------
+	
+	/** 
+	 * <p>
+     * Resets the search iteration. All properties will be reset to the 
+     * default value.
+     * </p>
+     * <p>
+     * Search will begin at the start of the target text if a forward iteration 
+     * is initiated before a backwards iteration. Otherwise if a 
+     * backwards iteration is initiated before a forwards iteration, the search 
+     * will begin at the end of the target text.
+     * </p>
+     * <p>
+     * Canonical match option will be reset to false, ie an exact match.
+     * </p>
+	 * @draft release 2.2
+	 */
+	public void reset()
+	{
+		// reset is setting the attributes that are already in string search, 
+		// hence all attributes in the collator should be retrieved without any 
+		// problems
+		super.reset();
+        m_isCanonicalMatch_ = false;
+        m_ceMask_ = getMask(m_collator_.getStrength());
+        // if status is a failure, ucol_getAttribute returns UCOL_DEFAULT
+        initialize();
+        m_colEIter_.setCollator(m_collator_);
+        m_colEIter_.reset();
+        m_utilColEIter_.setCollator(m_collator_);
+	}
+
+    // protected methods -----------------------------------------------------
+    
+    /**
+     * <p>
+     * Concrete method to provide the mechanism 
+     * for finding the next <b>forwards</b> match in the target text.
+     * See super class documentation for its use.
+     * </p>  
+     * @param start index in the target text at which the forwards search 
+     *        should begin.
+     * @return the starting index of the next forwards match if found, DONE 
+     *         otherwise
+     * @see #handlePrevious(int)
+     * @see #DONE
+     */
+    protected int handleNext(int start)
+    {
+    	if (m_pattern_.m_CELength_ == 0) {
+            matchLength = 0;
+            if (m_matchedIndex_ == DONE && start == m_textBeginOffset_) {
+                m_matchedIndex_ = start;
+                return m_matchedIndex_;
+            }
+            
+    		targetText.setIndex(start);
+	        char ch = targetText.current();
+	        // ch can never be done, it is handled by next()
+	        char ch2 = targetText.next();
+	        if (ch2 == CharacterIterator.DONE) {
+	            m_matchedIndex_ = DONE;	
+	        }
+	        else {
+	            m_matchedIndex_ = targetText.getIndex();
+	        }
+	        if (UTF16.isLeadSurrogate(ch) && UTF16.isTrailSurrogate(ch2)) {
+	            targetText.next();
+	            m_matchedIndex_ = targetText.getIndex();
+	        }
+	    }
+	    else {
+	    	if (matchLength != 0) {
+		    	start += matchLength;
+		    }
+            else {
+                // we must have reversed direction after we reached the start
+                // of the target text
+                // see SearchIterator next(), it checks the bounds and returns
+                // if it exceeds the range. It does not allow setting of
+                // m_matchedIndex
+                m_matchedIndex_ = DONE;
+            }
+    
+	        // status checked below
+	        if (m_isCanonicalMatch_) {
+	            // can't use exact here since extra accents are allowed.
+	            handleNextCanonical(start);
+	        }
+	        else {
+	            handleNextExact(start);
+	        }
+	    }
+        if (m_matchedIndex_ == DONE) {
+            targetText.setIndex(m_textLimitOffset_);
+        }
+        else {
+            targetText.setIndex(m_matchedIndex_);
+        }
+    	return m_matchedIndex_;
+    }
+    
+    /**
+	 * <p>
+     * Concrete method to provide the mechanism 
+     * for finding the next <b>backwards</b> match in the target text.
+     * See super class documentation for its use.
+     * </p>  
+     * @param start index in the target text at which the backwards search 
+     *        should begin.
+     * @return the starting index of the next backwards match if found, DONE 
+     *         otherwise
+     * @see #handleNext(int)
+     * @see #DONE
+	 */
+    protected int handlePrevious(int start)
+    {
+    	if (m_pattern_.m_CELength_ == 0) {
+            matchLength = 0;
+	        // start can never be DONE or 0, it is handled in previous
+            targetText.setIndex(start);
+            char ch = targetText.previous();
+            if (ch == CharacterIterator.DONE) {
+            	m_matchedIndex_ = DONE;
+            }
+            else {
+            	m_matchedIndex_ = targetText.getIndex();
+	            if (UTF16.isTrailSurrogate(ch)) {
+	            	if (UTF16.isLeadSurrogate(targetText.previous())) {
+	                    m_matchedIndex_ = targetText.getIndex();
+	            	}
+	            }
+            }            
+        }
+        else {
+            if (matchLength == 0) {
+                // we must have reversed direction after we reached the end
+                // of the target text
+                // see SearchIterator next(), it checks the bounds and returns
+                // if it exceeds the range. It does not allow setting of
+                // m_matchedIndex
+                m_matchedIndex_ = DONE;
+            }
+            if (m_isCanonicalMatch_) {
+                // can't use exact here since extra accents are allowed.
+                handlePreviousCanonical(start);
+            }
+            else {
+                handlePreviousExact(start);
+            }
+        }
+
+        if (m_matchedIndex_ == DONE) {
+            targetText.setIndex(m_textBeginOffset_);
+        }
+        else {
+            targetText.setIndex(m_matchedIndex_);
+        }
+        return m_matchedIndex_;
+    }
+
+    // private static inner classes ----------------------------------------
+    
+    private static class Pattern 
+    {
+    	// protected methods -----------------------------------------------
+    	
+    	/**
+    	 * Pattern string
+    	 */
+    	protected String targetText;
+        /**
+         * Array containing the collation elements of targetText
+         */
+        protected int m_CE_[];
+        /**
+         * Number of collation elements in m_CE_
+         */
+        protected int m_CELength_; 
+        /**
+         * Flag indicator if targetText starts with an accent
+         */
+        protected boolean m_hasPrefixAccents_;
+        /**
+         * Flag indicator if targetText ends with an accent
+         */
+        protected boolean m_hasSuffixAccents_;
+        /**
+         * Default number of characters to shift for Boyer Moore
+         */
+        protected int m_defaultShiftSize_;
+        /**
+         * Number of characters to shift for Boyer Moore, depending on the
+         * source text to search
+         */
+        protected char m_shift_[];
+        /**
+         * Number of characters to shift backwards for Boyer Moore, depending 
+         * on the source text to search
+         */
+        protected char m_backShift_[];
+        
+        // protected constructors ------------------------------------------
+        
+        /**
+         * Empty constructor 
+         */
+        protected Pattern(String pattern) 
+        {
+        	targetText = pattern;
+        	m_CE_ = new int[INITIAL_ARRAY_SIZE_];	
+        	m_CELength_ = 0;
+        	m_hasPrefixAccents_ = false;
+        	m_hasSuffixAccents_ = false;
+        	m_defaultShiftSize_ = 1;		
+        	m_shift_ = new char[MAX_TABLE_SIZE_];
+        	m_backShift_ = new char[MAX_TABLE_SIZE_];
+        }
+    };
+
+
+    // private data members ------------------------------------------------
+    
+    /**
+     * target text begin offset. Each targetText has a valid contiguous region 
+     * to iterate and this data member is the offset to the first such
+     * character in the region.
+     */
+    private int m_textBeginOffset_;
+    /**
+     * target text limit offset. Each targetText has a valid contiguous region 
+     * to iterate and this data member is the offset to 1 after the last such
+     * character in the region.
+     */
+    private int m_textLimitOffset_;
+    /**
+     * Upon completion of a search, m_matchIndex_ will store starting offset in
+     * m_text for the match. The Value DONE is the default value. 
+     * If we are not at the start of the text or the end of the text and 
+     * m_matchedIndex_ is DONE it means that we can find any more matches in 
+     * that particular direction
+     */
+    private int m_matchedIndex_; 
+    /**
+     * Current pattern to search for
+     */
+    private Pattern m_pattern_;
+    /**
+     * Collator whose rules are used to perform the search
+     */
+    private RuleBasedCollator m_collator_;
+    /** 
+     * The collation element iterator for the text source.
+     */
+    private CollationElementIterator m_colEIter_;
+    /** 
+     * Utility collation element, used throughout program for temporary 
+     * iteration.
+     */
+    private CollationElementIterator m_utilColEIter_;
+    /**
+     * The mask used on the collation elements to retrieve the valid strength
+     * weight 
+     */
+    private int m_ceMask_;
+    /**
+     * Buffer storing accents during a canonical search
+     */
+    private StringBuffer m_canonicalPrefixAccents_;
+    /**
+     * Buffer storing accents during a canonical search
+     */
+    private StringBuffer m_canonicalSuffixAccents_;
+    /**
+     * Flag to indicate if canonical search is to be done.
+     * E.g looking for "a\u0300" in "a\u0318\u0300" will yield the match at 0.
+     */
+    private boolean m_isCanonicalMatch_;
+    /**
+     * Size of the shift tables
+     */
+    private static final int MAX_TABLE_SIZE_ = 257; 
+    /**
+     * Initial array size
+     */
+    private static final int INITIAL_ARRAY_SIZE_ = 256;
+    /**
+     * Utility mask
+     */
+	private static final int SECOND_LAST_BYTE_SHIFT_ = 8;
+	/**
+     * Utility mask
+     */
+	private static final int LAST_BYTE_MASK_ = 0xff;
+	/**
+	 * Utility buffer for return values and temporary storage
+	 */
+	private int m_utilBuffer_[] = new int[2];
+
+	// private methods -------------------------------------------------------
+
+    /**
+     * Hash a collation element from its full size (32 bits) down into a
+     * value that can be used as an index into the shift tables.  Right
+     * now we do a modulus by the size of the hash table.
+     * @param ce collation element
+	 * @return collapsed version of the collation element
+     */
+    private static final int hash(int ce) 
+    {
+        // the old value UCOL_PRIMARYORDER(ce) % MAX_TABLE_SIZE_ does not work
+    	// well with the new collation where most of the latin 1 characters
+    	// are of the value xx000xxx. their hashes will most of the time be 0
+    	// to be discussed on the hash algo.
+    	return CollationElementIterator.primaryOrder(ce) % MAX_TABLE_SIZE_;
+    }
+    
+    /**
+	 * Gets the fcd value for a character at the argument index.
+	 * This method takes into accounts of the supplementary characters.
+	 * Note this method changes the offset in the character iterator.
+	 * @param str UTF16 string where character for fcd retrieval resides
+	 * @param offset position of the character whose fcd is to be retrieved
+	 * @return fcd value
+	 */
+	private static final char getFCD(CharacterIterator str, int offset)
+	{
+	    str.setIndex(offset);
+	    char ch = str.current();
+	    char result = NormalizerImpl.getFCD16(ch);
+	    
+	    if ((result != 0) && (str.getEndIndex() != offset + 1) && 
+	    	UTF16.isLeadSurrogate(ch)) {
+	        ch = str.next();
+	        if (UTF16.isTrailSurrogate(ch)) {
+	            result = NormalizerImpl.getFCD16FromSurrogatePair(result, ch);
+	        } else {
+	            result = 0;
+	        }
+	    }
+	    return result;
+	}
+	
+	/**
+	 * Gets the fcd value for a character at the argument index.
+	 * This method takes into accounts of the supplementary characters.
+	 * @param str UTF16 string where character for fcd retrieval resides
+	 * @param offset position of the character whose fcd is to be retrieved
+	 * @return fcd value
+	 */
+	private static final char getFCD(String str, int offset)
+	{
+	    char ch = str.charAt(offset);
+	    char result = NormalizerImpl.getFCD16(ch);
+	    
+	    if ((result != 0) && (str.length() != offset + 1) && 
+	    	UTF16.isLeadSurrogate(ch)) {
+	        ch = str.charAt(offset + 1);
+	        if (UTF16.isTrailSurrogate(ch)) {
+	            result = NormalizerImpl.getFCD16FromSurrogatePair(result, ch);
+	        } else {
+	            result = 0;
+	        }
+	    }
+	    return result;
+	}
+	
+	/**
+	* Getting the modified collation elements taking into account the collation 
+	* attributes
+	* @param ce 
+	* @return the modified collation element
+	*/
+	private final int getCE(int ce)
+	{
+	    // note for tertiary we can't use the collator->tertiaryMask, that
+	    // is a preprocessed mask that takes into account case options. since
+	    // we are only concerned with exact matches, we don't need that.
+	    ce &= m_ceMask_;
+	    
+	    if (m_collator_.isAlternateHandlingShifted()) {
+	        // alternate handling here, since only the 16 most significant 
+	        // digits is only used, we can safely do a compare without masking
+	        // if the ce is a variable, we mask and get only the primary values
+	        // no shifting to quartenary is required since all primary values
+	        // less than variabletop will need to be masked off anyway.
+	        if ((m_collator_.m_variableTopValue_  << 16) > ce) {
+	            if (m_collator_.getStrength() == Collator.QUATERNARY) {
+	                ce = CollationElementIterator.primaryOrder(ce);
+	            }
+	            else { 
+	                ce = CollationElementIterator.IGNORABLE;
+	            }
+	        }
+	    }
+	
+	    return ce;
+	}
+	
+	/**
+	 * Appends a int to a int array, increasing the size of the array when 
+	 * we are out of space.
+	 * @param offset in array to append to
+	 * @param value to append
+	 * @param array to append to
+	 * @return the array appended to, this could be a new and bigger array
+	 */
+	private static final int[] append(int offset, int value, int array[])
+	{
+		if (offset >= array.length) {
+			int temp[] = new int[offset + INITIAL_ARRAY_SIZE_];
+			System.arraycopy(array, 0, temp, 0, array.length);
+			array = temp;
+		}
+		array[offset] = value;
+		return array;
+	}
+	
+	/**
+	 * Initializing the ce table for a pattern. Stores non-ignorable collation 
+	 * keys. Table size will be estimated by the size of the pattern text. 
+	 * Table expansion will be perform as we go along. Adding 1 to ensure that 
+	 * the table size definitely increases.
+	 * Internal method, status assumed to be a success.
+	 * @return total number of expansions 
+	 */
+	private final int initializePatternCETable()
+	{
+	    m_utilColEIter_.setText(m_pattern_.targetText);
+	    
+	    int offset = 0;
+	    int result = 0;
+	    int ce = m_utilColEIter_.next();
+	
+	    while (ce != CollationElementIterator.NULLORDER) {
+	        int newce = getCE(ce);
+	        if (newce != CollationElementIterator.IGNORABLE) {
+	            m_pattern_.m_CE_ = append(offset, newce, m_pattern_.m_CE_);
+	            offset ++;	        
+	        }
+	        result += m_utilColEIter_.getMaxExpansion(ce) - 1;
+	        ce = m_utilColEIter_.next();
+	    }
+	
+	    m_pattern_.m_CE_ = append(offset, 0, m_pattern_.m_CE_);
+	    m_pattern_.m_CELength_ = offset;
+	
+	    return result;
+	}
+	
+	/**
+	 * Initializes the pattern struct.
+	 * Internal method, status assumed to be success.
+	 * @return expansionsize the total expansion size of the pattern
+	 */ 
+	private final int initializePattern()
+	{
+	    m_pattern_.m_hasPrefixAccents_ = (getFCD(m_pattern_.targetText, 0) 
+	    									 >> SECOND_LAST_BYTE_SHIFT_) != 0;
+	    m_pattern_.m_hasSuffixAccents_ = (getFCD(m_pattern_.targetText, 
+	    										 m_pattern_.targetText.length() 
+	    										 - 1) 
+	    									& LAST_BYTE_MASK_) != 0;
+	    // since intializePattern is an internal method status is a success.
+	    return initializePatternCETable();   
+	}
+	
+	/**
+	 * Initializing shift tables, with the default values.
+	 * If a corresponding default value is 0, the shift table is not set.
+	 * @param shift table for forwards shift 
+	 * @param backshift table for backwards shift
+	 * @param cetable table containing pattern ce
+	 * @param cesize size of the pattern ces
+	 * @param expansionsize total size of the expansions
+	 * @param defaultforward the default forward value
+	 * @param defaultbackward the default backward value
+	 */
+	 private final void setShiftTable(char shift[], 
+	 											   char backshift[], 
+					                         	   int cetable[], int cesize, 
+                          					 	   int expansionsize,
+					                         	   char defaultforward,
+                          					 	   char defaultbackward)
+	{
+	    // estimate the value to shift. to do that we estimate the smallest 
+	    // number of characters to give the relevant ces, ie approximately
+	    // the number of ces minus their expansion, since expansions can come 
+	    // from a character.
+	    for (int count = 0; count < MAX_TABLE_SIZE_; count ++) {
+	        shift[count] = defaultforward;
+	    }
+	    cesize --; // down to the last index
+	    for (int count = 0; count < cesize; count ++) {
+	        // number of ces from right of array to the count
+	        int temp = defaultforward - count - 1;
+	        shift[hash(cetable[count])] = temp > 1 ? ((char)temp) : 1;
+	    }
+	    shift[hash(cetable[cesize])] = 1;
+	    // for ignorables we just shift by one. see test examples.
+	    shift[hash(0)] = 1;
+	    
+	    for (int count = 0; count < MAX_TABLE_SIZE_; count ++) {
+	        backshift[count] = defaultbackward;
+	    }
+	    for (int count = cesize; count > 0; count --) {
+	        // the original value count does not seem to work
+	        backshift[hash(cetable[count])] = (char)(count > expansionsize ? 
+	                                          		count - expansionsize : 1);
+	    }
+	    backshift[hash(cetable[0])] = 1;
+	    backshift[hash(0)] = 1;
+	}
+	
+	/**
+	 * <p>Building of the pattern collation element list and the Boyer Moore 
+	 * StringSearch table.</p>
+	 * <p>The canonical match will only be performed after the default match 
+	 * fails.</p>
+	 * <p>For both cases we need to remember the size of the composed and 
+	 * decomposed versions of the string. Since the Boyer-Moore shift 
+	 * calculations shifts by a number of characters in the text and tries to 
+	 * match the pattern from that offset, the shift value can not be too large 
+	 * in case we miss some characters. To choose a right shift size, we 
+	 * estimate the NFC form of the and use its size as a shift guide. The NFC 
+	 * form should be the small possible representation of the pattern. Anyways, 
+	 * we'll err on the smaller shift size. Hence the calculation for 
+	 * minlength. Canonical match will be performed slightly differently. We'll 
+	 * split the pattern into 3 parts, the prefix accents (PA), the middle 
+	 * string bounded by the first and last base character (MS), the ending 
+	 * accents (EA). Matches will be done on MS first, and only when we match 
+	 * MS then some processing will be required for the prefix and end accents 
+	 * in order to determine if they match PA and EA. Hence the default shift 
+	 * values for the canonical match will take the size of either end's accent 
+	 * into consideration. Forwards search will take the end accents into 
+	 * consideration for the default shift values and the backwards search will 
+	 * take the prefix accents into consideration.</p>
+	 * <p>If pattern has no non-ignorable ce, we return a illegal argument 
+	 * error.</p>
+	 */ 
+	private final void initialize()
+	{
+	    int expandlength  = initializePattern();   
+	    if (m_pattern_.m_CELength_ > 0) {
+	        char minlength = (char)(m_pattern_.m_CELength_ > expandlength 
+	        					? m_pattern_.m_CELength_ - expandlength : 1);
+	        m_pattern_.m_defaultShiftSize_ = minlength;
+            setShiftTable(m_pattern_.m_shift_, m_pattern_.m_backShift_, 
+	        			  m_pattern_.m_CE_, m_pattern_.m_CELength_, 
+	        			  expandlength, minlength, minlength);
+	    }
+	    else {
+	    	m_pattern_.m_defaultShiftSize_ = 0;
+	    }
+	}
+	
+	/**
+	 * Determine whether the search text bounded by the offset start and end is 
+	 * one or more whole units of text as determined by the breakiterator in 
+	 * StringSearch.
+	 * @param start target text start offset
+	 * @param end target text end offset
+	 */
+	private final boolean isBreakUnit(int start, int end) 
+	{
+	    if (breakIterator != null) {
+	        int startindex = breakIterator.first();
+	        int endindex   = breakIterator.last();
+	        
+	        // out-of-range indexes are never boundary positions
+	        if (start < startindex || start > endindex || end < startindex 
+	        	|| end > endindex) {
+	            return false;
+	        }
+	        // otherwise, we can use following() on the position before the 
+	        // specified one and return true of the position we get back is the 
+	        // one the user specified
+	        boolean result = (start == startindex 
+	        				  || breakIterator.following(start - 1) == start) 
+	        				 && (end == endindex 
+	        				 	 || breakIterator.following(end - 1) == end);
+	        if (result) {
+	            // iterates the individual ces
+	            m_utilColEIter_.setText(targetText, start);
+	            for (int count = 0; count < m_pattern_.m_CELength_;
+	                 count ++) {
+                    int ce = getCE(m_utilColEIter_.next());
+                    if (ce == CollationElementIterator.IGNORABLE) {
+                        count --;
+                        continue;
+                    }
+	                if (ce != m_pattern_.m_CE_[count]) {
+	                    return false;
+	                }
+	            }
+                int nextce = m_utilColEIter_.next();
+                while (m_utilColEIter_.getOffset() == end 
+                       && getCE(nextce) == CollationElementIterator.IGNORABLE) {
+                    nextce = m_utilColEIter_.next();       
+                }
+	            if (nextce != CollationElementIterator.NULLORDER 
+	            	&& m_utilColEIter_.getOffset() == end) {
+	                // extra collation elements at the end of the match
+	                return false;
+	            }
+	        }
+	        return result;
+	    }
+	    return true;
+	}
+	
+	/**
+	 * Getting the next base character offset if current offset is an accent, 
+	 * or the current offset if the current character contains a base character. 
+	 * accents the following base character will be returned
+	 * @param text string
+	 * @param textoffset current offset
+	 * @param textlength length of text string
+	 * @return the next base character or the current offset
+	 *         if the current character is contains a base character.
+	 */
+	private final int getNextBaseOffset(CharacterIterator text, 
+	                                           		 int textoffset)
+	{
+	    if (textoffset < text.getEndIndex()) {
+	        while (text.getIndex() < text.getEndIndex()) { 
+	            int result = textoffset;
+	            if ((getFCD(text, textoffset ++) 
+	                		>> SECOND_LAST_BYTE_SHIFT_) == 0) {
+	                 return result;
+	            }
+	        }
+	        return text.getEndIndex();
+	    }
+	    return textoffset;
+	}
+	
+	/**
+	 * Gets the next base character offset depending on the string search 
+	 * pattern data
+	 * @param textoffset one offset away from the last character
+	 *                   to search for.
+	 * @return start index of the next base character or the current offset
+	 *         if the current character is contains a base character.
+	 */
+	private final int getNextBaseOffset(int textoffset)
+	{
+	    if (m_pattern_.m_hasSuffixAccents_ 
+	    	&& textoffset < m_textLimitOffset_) {
+            targetText.setIndex(textoffset);
+            targetText.previous();
+            if ((getFCD(targetText, targetText.getIndex()) & LAST_BYTE_MASK_) != 0) {
+                return getNextBaseOffset(targetText, textoffset);
+            }
+	    }
+	    return textoffset;
+	}
+	
+	/**
+	 * Shifting the collation element iterator position forward to prepare for
+	 * a following match. If the last character is a unsafe character, we'll 
+	 * only shift by 1 to capture contractions, normalization etc.
+	 * Internal method, status assumed to be success.
+	 * @param textoffset start text position to do search
+	 * @param ce the text ce which failed the match.
+	 * @param patternceindex index of the ce within the pattern ce buffer which
+	 *        failed the match
+	 * @return final offset
+	 */
+	private int shiftForward(int textoffset, int ce, int patternceindex)
+									
+	{
+	    if (isOverlapping()) {
+	        if (textoffset > m_textBeginOffset_) {
+	            textoffset ++;
+	        }
+	        else {
+	            textoffset = m_pattern_.m_defaultShiftSize_;
+	        }
+	    }
+	    else {
+	        if (ce != CollationElementIterator.NULLORDER) {
+	            int shift = m_pattern_.m_shift_[hash(ce)];
+	            // this is to adjust for characters in the middle of the 
+	            // substring for matching that failed.
+	            int adjust = m_pattern_.m_CELength_ - patternceindex;
+	            if (adjust > 1 && shift >= adjust) {
+	                shift -= adjust - 1;
+	            }
+	            textoffset += shift;
+	        }
+	        else {
+	            textoffset += m_pattern_.m_defaultShiftSize_;
+	        }
+	    }
+	     
+        textoffset = getNextBaseOffset(textoffset);
+	    // check for unsafe characters
+	    // * if it is the start or middle of a contraction: to be done after 
+	    //   a initial match is found
+	    // * thai or lao base consonant character: similar to contraction
+	    // * high surrogate character: similar to contraction
+	    // * next character is a accent: shift to the next base character
+	    return textoffset;
+	}
+	
+	/**
+	 * Gets the offset to the next safe point in text.
+	 * ie. not the middle of a contraction, swappable characters or 
+	 * supplementary characters.
+	 * @param textoffset offset in string
+	 * @param end offset in string
+	 * @return offset to the next safe character
+	 */
+	private final int getNextSafeOffset(int textoffset, int end)
+	{
+	    int result = textoffset; // first contraction character
+	    targetText.setIndex(result);
+	    while (result != end && 
+	    	m_collator_.isUnsafe(targetText.current())) {
+	       	result ++;
+	       	targetText.setIndex(result);
+	    }
+	    return result; 
+	}
+	
+	/** 
+	 * This checks for accents in the potential match started with a composite 
+	 * character.
+	 * This is really painful... we have to check that composite character do 
+	 * not have any extra accents. We have to normalize the potential match and 
+	 * find the immediate decomposed character before the match.
+	 * The first composite character would have been taken care of by the fcd 
+	 * checks in checkForwardExactMatch.
+	 * This is the slow path after the fcd of the first character and 
+	 * the last character has been checked by checkForwardExactMatch and we 
+	 * determine that the potential match has extra non-ignorable preceding
+	 * ces.
+	 * E.g. looking for \u0301 acute in \u01FA A ring above and acute, 
+	 * checkExtraMatchAccent should fail since there is a middle ring in 
+	 * \u01FA Note here that accents checking are slow and cautioned in the API 
+	 * docs.
+	 * Internal method, status assumed to be a success, caller should check 
+	 * status before calling this method
+	 * @param start index of the potential unfriendly composite character
+	 * @param end index of the potential unfriendly composite character
+	 * @return true if there is non-ignorable accents before at the beginning
+	 *              of the match, false otherwise.
+	 */
+	private final boolean checkExtraMatchAccents(int start, int end)
+	{
+	    boolean result = false;
+	    if (m_pattern_.m_hasPrefixAccents_) {
+	        targetText.setIndex(start);
+	        
+	        if (UTF16.isLeadSurrogate(targetText.next())) {
+	        	if (!UTF16.isTrailSurrogate(targetText.next())) {
+	        		targetText.previous();
+	        	}
+	        }
+	        // we are only concerned with the first composite character
+	        String str = getString(targetText, start, end);
+	        if (Normalizer.quickCheck(str, Normalizer.NFD) 
+	        										== Normalizer.NO) {
+	            int safeoffset = getNextSafeOffset(start, end);
+	            if (safeoffset != end) {
+	                safeoffset ++;
+	            }
+	            String decomp = Normalizer.decompose(
+	            				str.substring(0, safeoffset - start), false);
+	            m_utilColEIter_.setText(decomp);
+	            int firstce = m_pattern_.m_CE_[0];
+	            boolean ignorable = true;
+	            int ce = CollationElementIterator.IGNORABLE;
+	            int offset = 0;
+	            while (ce != firstce) {
+	            	offset = m_utilColEIter_.getOffset();
+	                if (ce != firstce 
+	                	&& ce != CollationElementIterator.IGNORABLE) {
+	                    ignorable = false;
+	                }
+	                ce = m_utilColEIter_.next();
+	            }
+                m_utilColEIter_.setExactOffset(offset); // back up 1 to the 
+                m_utilColEIter_.previous();             // right offset
+                offset = m_utilColEIter_.getOffset();
+                result = !ignorable && (UCharacter.getCombiningClass(
+	            							UTF16.charAt(decomp, offset)) != 0);
+	        }
+	    }
+	
+	    return result;
+	}
+	
+	/**
+	* Used by exact matches, checks if there are accents before the match. 
+	* This is really painful... we have to check that composite characters at
+	* the start of the matches have to not have any extra accents. 
+	* We check the FCD of the character first, if it starts with an accent and 
+	* the first pattern ce does not match the first ce of the character, we 
+	* bail.
+	* Otherwise we try normalizing the first composite 
+	* character and find the immediate decomposed character before the match to 
+	* see if it is an non-ignorable accent.
+	* Now normalizing the first composite character is enough because we ensure 
+	* that when the match is passed in here with extra beginning ces, the 
+	* first or last ce that match has to occur within the first character.
+	* E.g. looking for \u0301 acute in \u01FA A ring above and acute, 
+	* checkExtraMatchAccent should fail since there is a middle ring in \u01FA
+	* Note here that accents checking are slow and cautioned in the API docs.
+	* @param start offset 
+	* @param end offset
+	* @return true if there are accents on either side of the match, 
+	*         false otherwise
+	*/
+	private final boolean hasAccentsBeforeMatch(int start, int end) 
+	{
+	    if (m_pattern_.m_hasPrefixAccents_) {
+	        // we have been iterating forwards previously
+	        boolean ignorable = true;
+	        int firstce = m_pattern_.m_CE_[0];
+			m_colEIter_.setExactOffset(start);
+	        int ce  = getCE(m_colEIter_.next());
+	        while (ce != firstce) {
+	            if (ce != CollationElementIterator.IGNORABLE) {
+	                ignorable = false;
+	            }
+	            ce = getCE(m_colEIter_.next());
+	        }
+	        if (!ignorable && m_colEIter_.isInBuffer()) {
+	            // within normalization buffer, discontiguous handled here
+	            return true;
+	        }
+	
+	        // within text
+	        boolean accent = (getFCD(targetText, start) >> SECOND_LAST_BYTE_SHIFT_)
+	        											!= 0; 
+	        if (!accent) {
+	            return checkExtraMatchAccents(start, end);
+	        }
+	        if (!ignorable) {
+	            return true;
+	        }
+	        if (start > m_textBeginOffset_) {
+	        	targetText.setIndex(start);
+	        	targetText.previous();
+	            if ((getFCD(targetText, targetText.getIndex()) & LAST_BYTE_MASK_) 
+	            														!= 0) {
+	                m_colEIter_.setExactOffset(start);
+	                ce = m_colEIter_.previous();
+	                if (ce != CollationElementIterator.NULLORDER 
+	                	&& ce != CollationElementIterator.IGNORABLE) {
+	                    return true;
+	                }
+	            }
+	        }
+	    }
+	  
+	    return false;
+	}
+	
+	/**
+	 * Used by exact matches, checks if there are accents bounding the match.
+	 * Note this is the initial boundary check. If the potential match
+	 * starts or ends with composite characters, the accents in those
+	 * characters will be determined later.
+	 * Not doing backwards iteration here, since discontiguos contraction for 
+	 * backwards collation element iterator, use up too many characters.
+	 * E.g. looking for \u030A ring in \u01FA A ring above and acute, 
+	 * should fail since there is a acute at the end of \u01FA
+	 * Note here that accents checking are slow and cautioned in the API docs.
+	 * @param start offset of match
+	 * @param end end offset of the match
+	 * @return true if there are accents on either side of the match, 
+	 *         false otherwise
+	 */
+	private final boolean hasAccentsAfterMatch(int start, int end) 
+	{
+	    if (m_pattern_.m_hasSuffixAccents_) {
+	    	targetText.setIndex(end);
+	        if (end > m_textBeginOffset_ 
+	        	&& UTF16.isTrailSurrogate(targetText.previous())) {
+	        	if (targetText.getIndex() > m_textBeginOffset_ &&
+	        		!UTF16.isLeadSurrogate(targetText.previous())) {
+	        		targetText.next();
+	        	}
+	        }
+	        if ((getFCD(targetText, targetText.getIndex()) & LAST_BYTE_MASK_) != 0) {
+	            int firstce  = m_pattern_.m_CE_[0];
+	            m_colEIter_.setExactOffset(start);
+	            while (getCE(m_colEIter_.next()) != firstce) {
+	            }
+	            int count = 1;
+	            while (count < m_pattern_.m_CELength_) {
+	                if (getCE(m_colEIter_.next()) 
+	                	== CollationElementIterator.IGNORABLE) {
+	                	count --;
+	                }
+	                count ++;
+	            }
+	            int ce = getCE(m_colEIter_.next());
+	            if (ce != CollationElementIterator.NULLORDER 
+	            			&& ce != CollationElementIterator.IGNORABLE) {
+	                if (m_colEIter_.getOffset() <= end) {
+	                    return true;
+	                }
+	                if ((getFCD(targetText, end) >> SECOND_LAST_BYTE_SHIFT_) 
+	                	!= 0) {
+	                    return true;
+	                }
+	            }
+	        }
+	    }
+	    return false;
+	}
+	
+	/**
+	* Checks if the offset runs out of the text string range
+	* @param textstart offset of the first character in the range
+	* @param textlimit limit offset of the text string range
+	* @param offset to test
+	* @return true if offset is out of bounds, false otherwise
+	*/
+	private static final boolean isOutOfBounds(int textstart, int textlimit, 
+												int offset)
+	{
+	    return offset < textstart || offset > textlimit;
+	}
+	
+	/**
+	 * Checks for identical match
+	 * @param strsrch string search data
+	 * @param start offset of possible match
+	 * @param end offset of possible match
+	 * @return true if identical match is found
+	 */
+	private final boolean checkIdentical(int start, int end) 
+	{
+	    if (m_collator_.getStrength() != Collator.IDENTICAL) {
+	        return true;
+	    }
+	
+		String textstr = getString(targetText, start, end - start);
+		if (Normalizer.quickCheck(textstr, Normalizer.NFD) 
+	        										== Normalizer.NO) {
+	        textstr = Normalizer.decompose(textstr, false);
+	    }
+	    String patternstr = m_pattern_.targetText;
+	    if (Normalizer.quickCheck(patternstr, Normalizer.NFD) 
+	        										== Normalizer.NO) {
+	        patternstr = Normalizer.decompose(patternstr, false);
+	    }
+	    return textstr.equals(patternstr);
+	}
+	
+	/**
+	 * Checks to see if the match is repeated
+	 * @param start new match start index
+	 * @param limit new match limit index
+	 * @return true if the the match is repeated, false otherwise
+	 */
+	private final boolean checkRepeatedMatch(int start, int limit)
+	{
+	    if (m_matchedIndex_ == DONE) {
+	        return false;
+	    }
+        int end = limit - 1; // last character in the match
+	    int lastmatchend = m_matchedIndex_ + matchLength - 1; 
+	    if (!isOverlapping()) {
+            return (start >= m_matchedIndex_ && start <= lastmatchend) 
+                    || (end >= m_matchedIndex_ && end <= lastmatchend);
+                      
+	    }
+	    return start == m_matchedIndex_;
+	}
+	
+	/**
+	 * Checks match for contraction. 
+	 * If the match ends with a partial contraction we fail.
+	 * If the match starts too far off (because of backwards iteration) we try 
+	 * to chip off the extra characters depending on whether a breakiterator 
+	 * has been used.
+	 * Temporary utility buffer used to return modified start and end.
+	 * @param start offset of potential match, to be modified if necessary
+	 * @param end offset of potential match, to be modified if necessary
+	 * @return true if match passes the contraction test, false otherwise.
+	 */
+	private final boolean checkNextExactContractionMatch(int start, int end) 
+	{
+	    // This part checks if either ends of the match contains potential 
+	    // contraction. If so we'll have to iterate through them
+	    char endchar = 0;
+	    if (end < m_textLimitOffset_) {
+	    	targetText.setIndex(end);
+	    	endchar = targetText.current();
+	    }
+	    char poststartchar = 0;
+	    if (start + 1 < m_textLimitOffset_) {
+	    	targetText.setIndex(start + 1);
+	    	poststartchar = targetText.current();
+	    }
+	    if (m_collator_.isUnsafe(endchar) 
+	    	|| m_collator_.isUnsafe(poststartchar)) {
+	        // expansion prefix, what's left to iterate
+	        int bufferedCEOffset = m_colEIter_.m_CEBufferOffset_;
+	        boolean hasBufferedCE = bufferedCEOffset > 0;
+	        m_colEIter_.setExactOffset(start);
+	        int temp = start;
+	        while (bufferedCEOffset > 0) {
+	            // getting rid of the redundant ce, caused by setOffset.
+	            // since backward contraction/expansion may have extra ces if 
+	            // we are in the normalization buffer, hasAccentsBeforeMatch 
+	            // would have taken care of it.
+	            // E.g. the character \u01FA will have an expansion of 3, but 
+	            // if we are only looking for acute and ring \u030A and \u0301, 
+	            // we'll have to skip the first ce in the expansion buffer.
+	            m_colEIter_.next();
+	            if (m_colEIter_.getOffset() != temp) {
+	                start = temp;
+	                temp  = m_colEIter_.getOffset();
+	            }
+	            bufferedCEOffset --;
+	        }
+	
+	        int count = 0;
+	        while (count < m_pattern_.m_CELength_) {
+	            int ce = getCE(m_colEIter_.next());
+	            if (ce == CollationElementIterator.IGNORABLE) {
+	                continue;
+	            }
+	            if (hasBufferedCE && count == 0 
+	            	&& m_colEIter_.getOffset() != temp) {
+	                start = temp;
+	                temp   = m_colEIter_.getOffset();
+	            }
+	            if (ce != m_pattern_.m_CE_[count]) {
+	                end ++;
+	                end = getNextBaseOffset(end);  
+	                m_utilBuffer_[0] = start;
+	                m_utilBuffer_[1] = end;
+	                return false;
+	            }
+	            count ++;
+	        }
+	    } 
+	    m_utilBuffer_[0] = start;
+	    m_utilBuffer_[1] = end;
+	    return true;
+	}
+	
+	
+	/**
+	 * Checks and sets the match information if found.
+	 * Checks 
+	 * <ul>
+	 * <li> the potential match does not repeat the previous match
+	 * <li> boundaries are correct
+	 * <li> exact matches has no extra accents
+	 * <li> identical matchesb
+	 * <li> potential match does not end in the middle of a contraction
+	 * </ul>
+	 * Otherwise the offset will be shifted to the next character.
+	 * The result m_matchIndex_ and m_matchLength_ will be set to the truncated
+	 * more fitting result value.
+	 * Uses the temporary utility buffer for storing the modified textoffset.
+	 * @param textoffset offset in the collation element text.
+	 * @return true if the match is valid, false otherwise
+	 */
+	private final boolean checkNextExactMatch(int textoffset)
+	{
+	    int start = m_colEIter_.getOffset();        
+	    if (!checkNextExactContractionMatch(start, textoffset)) {
+	    	// returns the modified textoffset
+	    	m_utilBuffer_[0] = m_utilBuffer_[1];
+	        return false;
+	    }
+	
+		start = m_utilBuffer_[0];
+		textoffset = m_utilBuffer_[1];
+	    // this totally matches, however we need to check if it is repeating
+	    if (!isBreakUnit(start, textoffset) 
+	    	|| checkRepeatedMatch(start, textoffset) 
+	    	|| hasAccentsBeforeMatch(start, textoffset) 
+	    	|| !checkIdentical(start, textoffset) 
+	    	|| hasAccentsAfterMatch(start, textoffset)) {
+	        textoffset ++;
+	        textoffset = getNextBaseOffset(textoffset);  
+	        m_utilBuffer_[0] = textoffset;
+	        return false;
+	    }
+	        
+	    // totally match, we will get rid of the ending ignorables.
+	    m_matchedIndex_  = start;
+	    matchLength = textoffset - start;
+	    return true;
+	}
+	
+	/**
+	* Getting the previous base character offset, or the current offset if the 
+	* current character is a base character
+	* @param text the source text to work on
+	* @param textoffset one offset after the current character
+	* @return the offset of the next character after the base character or the 
+	* 			first composed character with accents
+	*/
+	private final int getPreviousBaseOffset(CharacterIterator text, 
+	                                        int textoffset)
+	{
+	    if (textoffset > m_textBeginOffset_) {
+	        while (true) {
+	            int result = textoffset;
+	            text.setIndex(result);
+	            if (UTF16.isTrailSurrogate(text.previous())) {
+	            	if (text.getIndex() != text.getBeginIndex() &&
+	            		!UTF16.isLeadSurrogate(text.previous())) {
+	            		text.next();
+	            	}
+	            }
+	            textoffset = text.getIndex();
+	            char fcd = getFCD(text, textoffset);
+	            if ((fcd >> SECOND_LAST_BYTE_SHIFT_) == 0) {
+	                if ((fcd & LAST_BYTE_MASK_) != 0) {
+	                    return textoffset;
+	                }
+	                return result;
+	            }
+	            if (textoffset == m_textBeginOffset_) {
+	                return m_textBeginOffset_;
+	            }
+	        }
+	    }
+	    return textoffset;
+	}
+	
+	/**
+	* Getting the indexes of the accents that are not blocked in the argument
+	* accent array
+	* @param accents accents in nfd.
+	* @param accentsindex array to store the indexes of accents in accents that 
+	* 		are not blocked
+	* @return the length of populated accentsindex
+	*/
+	private int getUnblockedAccentIndex(StringBuffer accents, 
+										int accentsindex[])
+	{
+	    int index = 0;
+	    int length = accents.length();
+	    int cclass = 0;
+	    int result = 0;
+	    while (index < length) {
+	        int codepoint = UTF16.charAt(accents, index);
+	        int tempclass = UCharacter.getCombiningClass(codepoint);
+	        if (tempclass != cclass) {
+	            cclass = tempclass;
+	            accentsindex[result] = index;
+	            result ++;
+	        }
+	        if (UCharacter.isSupplementary(codepoint)) {
+	        	index += 2;
+	        }
+	        else {
+	        	index ++;
+	        }
+	    }
+	    accentsindex[result] = length;
+	    return result;
+	}
+
+	/**
+	 * Appends 3 StringBuffer/CharacterIterator together into a destination 
+	 * string buffer.
+	 * @param source1 string buffer
+	 * @param source2 character iterator
+	 * @param start2 start of the character iterator to merge
+	 * @param end2 end of the character iterator to merge
+	 * @param source3 string buffer
+	 * @return appended string buffer
+	 */
+	private static final StringBuffer merge(StringBuffer source1, 
+									 		CharacterIterator source2,
+									 		int start2, int end2,
+									 		StringBuffer source3) 
+	{
+		StringBuffer result = new StringBuffer();	
+		if (source1 != null && source1.length() != 0) {
+            // jdk 1.3.1 does not have append(StringBuffer) yet
+            if(com.ibm.icu.impl.ICUDebug.isJDK14OrHigher){
+                result.append(source1);
+            }else{
+                result.append(source1.toString());
+            }
+		}
+		source2.setIndex(start2);
+		while (source2.getIndex() < end2) {
+			result.append(source2.current());
+			source2.next();
+		}
+		if (source3 != null && source3.length() != 0) {
+			// jdk 1.3.1 does not have append(StringBuffer) yet
+            if(com.ibm.icu.impl.ICUDebug.isJDK14OrHigher){
+                result.append(source3);
+            }else{
+                result.append(source3.toString());
+            }
+		}
+	    return result;
+	}
+	
+	/**
+	* Running through a collation element iterator to see if the contents 
+	* matches pattern in string search data
+	* @param coleiter collation element iterator to test
+	* @return true if a match if found, false otherwise
+	*/
+	private final boolean checkCollationMatch(CollationElementIterator coleiter)
+	{
+	    int patternceindex = m_pattern_.m_CELength_;
+	    int offset = 0;
+	    while (patternceindex > 0) {
+	        int ce = getCE(coleiter.next());
+	        if (ce == CollationElementIterator.IGNORABLE) {
+	            continue;
+	        }
+	        if (ce != m_pattern_.m_CE_[offset]) {
+	            return false;
+	        }
+	        offset ++;
+	        patternceindex --;
+	    }
+	    return true;
+	}
+	
+	/**
+	 * Rearranges the front accents to try matching.
+	 * Prefix accents in the text will be grouped according to their combining 
+	 * class and the groups will be mixed and matched to try find the perfect 
+	 * match with the pattern.
+	 * So for instance looking for "\u0301" in "\u030A\u0301\u0325"
+	 * step 1: split "\u030A\u0301" into 6 other type of potential accent 
+	 * 		   substrings "\u030A", "\u0301", "\u0325", "\u030A\u0301", 
+	 * 		   "\u030A\u0325", "\u0301\u0325".
+	 * step 2: check if any of the generated substrings matches the pattern.
+	 * Internal method, status is assumed to be success, caller has to check 
+	 * status before calling this method.
+	 * @param start first offset of the accents to start searching
+	 * @param end start of the last accent set
+	 * @return DONE if a match is not found, otherwise return the starting
+	 *         offset of the match. Note this start includes all preceding 
+	 * 		   accents.
+	 */
+	private int doNextCanonicalPrefixMatch(int start, int end)
+	{
+	    if ((getFCD(targetText, start) & LAST_BYTE_MASK_) == 0) {
+	        // die... failed at a base character
+	        return DONE;
+	    }
+	
+		start = targetText.getIndex(); // index changed by fcd
+	    int offset = getNextBaseOffset(targetText, start);
+	    start = getPreviousBaseOffset(start);
+	
+	    StringBuffer accents = new StringBuffer();
+	    String accentstr = getString(targetText, start, offset - start);
+	    // normalizing the offensive string
+	    if (Normalizer.quickCheck(accentstr, Normalizer.NFD) 
+	        										== Normalizer.NO) {
+	        accentstr = Normalizer.decompose(accentstr, false);
+	    }
+	    accents.append(accentstr);
+	        
+	    int accentsindex[] = new int[INITIAL_ARRAY_SIZE_];      
+	    int accentsize = getUnblockedAccentIndex(accents, accentsindex);
+	    int count = (2 << (accentsize - 1)) - 2;  
+	    while (count > 0) {
+	    	// copy the base characters
+	    	m_canonicalPrefixAccents_.delete(0, 
+	    								m_canonicalPrefixAccents_.length());
+	    	int k = 0;
+	        for (; k < accentsindex[0]; k ++) {
+	            m_canonicalPrefixAccents_.append(accents.charAt(k));
+	        }
+	        // forming all possible canonical rearrangement by dropping
+	        // sets of accents
+	        for (int i = 0; i <= accentsize - 1; i ++) {
+	            int mask = 1 << (accentsize - i - 1);
+	            if ((count & mask) != 0) {
+	                for (int j = accentsindex[i]; j < accentsindex[i + 1]; 
+	                													j ++) {
+	                    m_canonicalPrefixAccents_.append(accents.charAt(j));
+	                }
+	            }
+	        }
+	        StringBuffer match = merge(m_canonicalPrefixAccents_,
+	                                   targetText, offset, end,
+	                                   m_canonicalSuffixAccents_);
+	            
+	        // if status is a failure, ucol_setText does nothing.
+	        // run the collator iterator through this match
+	        m_utilColEIter_.setText(match.toString());
+	        if (checkCollationMatch(m_utilColEIter_)) {
+	         	return start;
+	        }
+	        count --;
+	    }
+	    return DONE;
+	}
+
+	/**
+	* Gets the offset to the safe point in text before textoffset.
+	* ie. not the middle of a contraction, swappable characters or 
+	* supplementary characters.
+	* @param start offset in string
+	* @param textoffset offset in string
+	* @return offset to the previous safe character
+	*/
+	private final int getPreviousSafeOffset(int start, int textoffset)
+	{
+	    int result = textoffset; // first contraction character
+	    targetText.setIndex(textoffset);
+	    while (result >= start && m_collator_.isUnsafe(targetText.previous())) {
+	        result = targetText.getIndex();
+	    }
+	    if (result != start) {
+	        // the first contraction character is consider unsafe here
+	        result = targetText.getIndex(); // originally result --;
+	    }
+	    return result; 
+	}
+
+	/**
+	 * Take the rearranged end accents and tries matching. If match failed at
+	 * a seperate preceding set of accents (seperated from the rearranged on by
+	 * at least a base character) then we rearrange the preceding accents and 
+	 * tries matching again.
+	 * We allow skipping of the ends of the accent set if the ces do not match. 
+	 * However if the failure is found before the accent set, it fails.
+	 * Internal method, status assumed to be success, caller has to check 
+	 * status before calling this method.
+	 * @param textoffset of the start of the rearranged accent
+	 * @return DONE if a match is not found, otherwise return the starting
+	 *         offset of the match. Note this start includes all preceding 
+	 *         accents.
+	 */
+	private int doNextCanonicalSuffixMatch(int textoffset)
+	{
+	    int safelength = 0;
+	    StringBuffer safetext;
+		int safeoffset = m_textBeginOffset_; 
+		
+	    if (textoffset != m_textBeginOffset_ 
+	    	&& m_canonicalSuffixAccents_.length() > 0
+	    	&& m_collator_.isUnsafe(m_canonicalSuffixAccents_.charAt(0))) {
+	        safeoffset     = getPreviousSafeOffset(m_textBeginOffset_, 
+	        										textoffset);
+	        safelength     = textoffset - safeoffset;
+	        safetext       = merge(null, targetText, safeoffset, textoffset, 
+	                               m_canonicalSuffixAccents_);
+	    }
+	    else {
+	        safetext = m_canonicalSuffixAccents_;
+	    }
+	
+	    // if status is a failure, ucol_setText does nothing
+	    CollationElementIterator coleiter = m_utilColEIter_;
+	    coleiter.setText(safetext.toString());
+	    // status checked in loop below
+	
+	    int ceindex = m_pattern_.m_CELength_ - 1;
+	    boolean isSafe = true; // indication flag for position in safe zone
+	    
+	    while (ceindex >= 0) {
+	        int textce = coleiter.previous();
+	        if (textce == CollationElementIterator.NULLORDER) {
+	            // check if we have passed the safe buffer
+	            if (coleiter == m_colEIter_) {
+	                return DONE;
+	            }
+	            coleiter = m_colEIter_;
+	            if (safetext != m_canonicalSuffixAccents_) {
+	            	safetext.delete(0, safetext.length());
+	            }
+	            coleiter.setExactOffset(safeoffset);
+	            // status checked at the start of the loop
+	            isSafe = false;
+	            continue;
+	        }
+	        textce = getCE(textce);
+	        if (textce != CollationElementIterator.IGNORABLE 
+	        	&& textce != m_pattern_.m_CE_[ceindex]) {
+	            // do the beginning stuff
+	            int failedoffset = coleiter.getOffset();
+	            if (isSafe && failedoffset >= safelength) {
+	                // alas... no hope. failed at rearranged accent set
+	                return DONE;
+	            }
+	            else {
+	                if (isSafe) {
+	                    failedoffset += safeoffset;
+	                }
+	                
+	                // try rearranging the front accents
+	                int result = doNextCanonicalPrefixMatch(failedoffset, 
+	                										textoffset);
+	                if (result != DONE) {
+	                    // if status is a failure, ucol_setOffset does nothing
+	                    m_colEIter_.setExactOffset(result);
+	                }
+	                return result;
+	            }
+	        }
+	        if (textce == m_pattern_.m_CE_[ceindex]) {
+	            ceindex --;
+	        }
+	    }
+	    // set offset here
+	    if (isSafe) {
+	        int result = coleiter.getOffset();
+	        // sets the text iterator with the correct expansion and offset
+	        int leftoverces = coleiter.m_CEBufferOffset_;
+	        if (result >= safelength) { 
+	            result = textoffset;
+	        }
+	        else {
+	            result += safeoffset;
+	        }
+	        m_colEIter_.setExactOffset(result);
+	        m_colEIter_.m_CEBufferOffset_ = leftoverces;
+	        return result;
+	    }
+	    
+	    return coleiter.getOffset();              
+	}
+	
+	/**
+	 * Trying out the substring and sees if it can be a canonical match.
+	 * This will try normalizing the end accents and arranging them into 
+	 * canonical equivalents and check their corresponding ces with the pattern 
+	 * ce.
+	 * Suffix accents in the text will be grouped according to their combining 
+	 * class and the groups will be mixed and matched to try find the perfect 
+	 * match with the pattern.
+	 * So for instance looking for "\u0301" in "\u030A\u0301\u0325"
+	 * step 1: split "\u030A\u0301" into 6 other type of potential accent 
+	 *         substrings
+	 *         "\u030A", "\u0301", "\u0325", "\u030A\u0301", "\u030A\u0325", 
+	 *         "\u0301\u0325".
+	 * step 2: check if any of the generated substrings matches the pattern.
+	 * @param textoffset end offset in the collation element text that ends with 
+	 *                   the accents to be rearranged
+	 * @return true if the match is valid, false otherwise
+	 */
+	private boolean doNextCanonicalMatch(int textoffset)
+	{
+		int offset = m_colEIter_.getOffset();
+		targetText.setIndex(textoffset);
+		if (UTF16.isTrailSurrogate(targetText.previous()) 
+			&& targetText.getIndex() > m_textBeginOffset_) { 
+			if (!UTF16.isLeadSurrogate(targetText.previous())) {
+				targetText.next();
+			}
+		}
+	    if ((getFCD(targetText, targetText.getIndex()) & LAST_BYTE_MASK_) == 0) {
+	        if (m_pattern_.m_hasPrefixAccents_) {
+	            offset = doNextCanonicalPrefixMatch(offset, textoffset);
+	            if (offset != DONE) {
+	                m_colEIter_.setExactOffset(offset);
+	                return true;
+	            }
+	        }
+	        return false;
+	    }
+	
+	    if (!m_pattern_.m_hasSuffixAccents_) {
+	        return false;
+	    }
+	
+	    StringBuffer accents = new StringBuffer();
+	    // offset to the last base character in substring to search
+	    int baseoffset = getPreviousBaseOffset(targetText, textoffset);
+	    // normalizing the offensive string
+	    String accentstr = getString(targetText, baseoffset, 
+	    							 textoffset - baseoffset);
+	    if (Normalizer.quickCheck(accentstr, Normalizer.NFD) 
+	        										== Normalizer.NO) {
+	        accentstr = Normalizer.decompose(accentstr, false);
+	    }
+	    accents.append(accentstr);
+	    // status checked in loop below
+	        
+	    int accentsindex[] = new int[INITIAL_ARRAY_SIZE_];
+	    int size = getUnblockedAccentIndex(accents, accentsindex);
+	
+	    // 2 power n - 1 minus the full set of accents
+	    int  count = (2 << (size - 1)) - 2;  
+	    while (count > 0) {
+            m_canonicalSuffixAccents_.delete(0, 
+                                           m_canonicalSuffixAccents_.length());
+	        // copy the base characters
+	        for (int k = 0; k < accentsindex[0]; k ++) {
+	            m_canonicalSuffixAccents_.append(accents.charAt(k));
+	        }
+	        // forming all possible canonical rearrangement by dropping
+	        // sets of accents
+	        for (int i = 0; i <= size - 1; i ++) {
+	            int mask = 1 << (size - i - 1);
+	            if ((count & mask) != 0) {
+	                for (int j = accentsindex[i]; j < accentsindex[i + 1]; 
+	                	j ++) {
+	                    m_canonicalSuffixAccents_.append(accents.charAt(j));
+	                }
+	            }
+	        }
+	        offset = doNextCanonicalSuffixMatch(baseoffset);
+	        if (offset != DONE) {
+	            return true; // match found
+	        }
+	        count --;
+	    }
+	    return false;
+	}
+	
+	/**
+	 * Gets the previous base character offset depending on the string search 
+	 * pattern data
+	 * @param strsrch string search data
+	 * @param textoffset current offset, current character
+	 * @return the offset of the next character after this base character or 
+	 * 			itself if it is a composed character with accents
+	 */
+	private final int getPreviousBaseOffset(int textoffset)
+	{
+	    if (m_pattern_.m_hasPrefixAccents_ && textoffset > m_textBeginOffset_) {
+	        int offset = textoffset;
+	        if ((getFCD(targetText, offset) >> SECOND_LAST_BYTE_SHIFT_) != 0) {
+	            return getPreviousBaseOffset(targetText, textoffset);
+	        }
+	    }
+	    return textoffset;
+	}
+	
+	/**
+	 * Checks match for contraction. 
+	 * If the match ends with a partial contraction we fail.
+	 * If the match starts too far off (because of backwards iteration) we try 
+	 * to chip off the extra characters.
+	 * Uses the temporary util buffer for return values of the modified start
+	 * and end.
+	 * @param start offset of potential match, to be modified if necessary
+	 * @param end offset of potential match, to be modified if necessary
+	 * @return true if match passes the contraction test, false otherwise. 
+	 */
+	private boolean checkNextCanonicalContractionMatch(int start, int end) 
+	{
+	    // This part checks if either ends of the match contains potential 
+	    // contraction. If so we'll have to iterate through them
+	    char schar = 0;
+	    char echar = 0;
+	    if (end < m_textLimitOffset_) {
+	    	targetText.setIndex(end);
+	    	echar = targetText.current();
+	    }
+	    if (start < m_textLimitOffset_) {
+	    	targetText.setIndex(start + 1);
+	    	schar = targetText.current();
+	    }
+	    if (m_collator_.isUnsafe(echar) || m_collator_.isUnsafe(schar)) {
+	        int expansion  = m_colEIter_.m_CEBufferOffset_;
+	        boolean hasExpansion = expansion > 0;
+	        m_colEIter_.setExactOffset(start);
+	        int temp = start;
+	        while (expansion > 0) {
+	            // getting rid of the redundant ce, caused by setOffset.
+	            // since backward contraction/expansion may have extra ces if 
+	            // we are in the normalization buffer, hasAccentsBeforeMatch 
+	            // would have taken care of it.
+	            // E.g. the character \u01FA will have an expansion of 3, but 
+	            // if we are only looking for acute and ring \u030A and \u0301, 
+	            // we'll have to skip the first ce in the expansion buffer.
+	            m_colEIter_.next();
+	            if (m_colEIter_.getOffset() != temp) {
+	                start = temp;
+	                temp  = m_colEIter_.getOffset();
+	            }
+	            expansion --;
+	        }
+	
+	        int count = 0;
+	        while (count < m_pattern_.m_CELength_) {
+	            int ce = getCE(m_colEIter_.next());
+	            // status checked below, note that if status is a failure
+	            // ucol_next returns UCOL_NULLORDER
+	            if (ce == CollationElementIterator.IGNORABLE) {
+	                continue;
+	            }
+	            if (hasExpansion && count == 0 
+	            	&& m_colEIter_.getOffset() != temp) {
+	                start = temp;
+	                temp = m_colEIter_.getOffset();
+	            }
+	
+	            if (count == 0 && ce != m_pattern_.m_CE_[0]) {
+	                // accents may have extra starting ces, this occurs when a 
+	                // pure accent pattern is matched without rearrangement
+	                // text \u0325\u0300 and looking for \u0300
+	                int expected = m_pattern_.m_CE_[0]; 
+	                if ((getFCD(targetText, start) & LAST_BYTE_MASK_) != 0) {
+	                    ce = getCE(m_colEIter_.next());
+	                    while (ce != expected 
+	                           && ce != CollationElementIterator.NULLORDER 
+	                           && m_colEIter_.getOffset() <= end) {
+	                        ce = getCE(m_colEIter_.next());
+	                    }
+	                }
+	            }
+	            if (ce != m_pattern_.m_CE_[count]) {
+	                end ++;
+	                end = getNextBaseOffset(end);  
+	                m_utilBuffer_[0] = start;
+	                m_utilBuffer_[1] = end;
+	                return false;
+	            }
+	            count ++;
+	        }
+	    } 
+	    m_utilBuffer_[0] = start;
+	    m_utilBuffer_[1] = end;
+	    return true;
+	}
+
+	/**
+	 * Checks and sets the match information if found.
+	 * Checks 
+	 * <ul>
+	 * <li> the potential match does not repeat the previous match
+	 * <li> boundaries are correct
+	 * <li> potential match does not end in the middle of a contraction
+	 * <li> identical matches
+	 * </ul>
+	 * Otherwise the offset will be shifted to the next character.
+	 * The result m_matchIndex_ and m_matchLength_ will be set to the truncated
+	 * more fitting result value.
+	 * Uses the temporary utility buffer for storing the modified textoffset.
+	 * @param textoffset offset in the collation element text.
+	 * @return true if the match is valid, false otherwise
+	 */
+	private boolean checkNextCanonicalMatch(int textoffset)
+	{
+	    // to ensure that the start and ends are not composite characters
+	    // if we have a canonical accent match
+	    if ((m_pattern_.m_hasSuffixAccents_ 
+	    		&& m_canonicalSuffixAccents_.length() != 0) || 
+	        (m_pattern_.m_hasPrefixAccents_ 
+	        	&& m_canonicalPrefixAccents_.length() != 0)) {
+	        m_matchedIndex_ = getPreviousBaseOffset(m_colEIter_.getOffset());
+	        matchLength = textoffset - m_matchedIndex_;
+	        return true;
+	    }
+	
+	    int start = m_colEIter_.getOffset();
+	    if (!checkNextCanonicalContractionMatch(start, textoffset)) {
+	    	// return the modified textoffset
+	    	m_utilBuffer_[0] = m_utilBuffer_[1]; 
+	        return false;
+	    }
+	    start = m_utilBuffer_[0];
+	    textoffset = m_utilBuffer_[1];
+	    start = getPreviousBaseOffset(start);
+	    // this totally matches, however we need to check if it is repeating
+	    if (checkRepeatedMatch(start, textoffset) 
+	    	|| !isBreakUnit(start, textoffset) 
+	    	|| !checkIdentical(start, textoffset)) {
+	        textoffset ++;
+	        textoffset = getNextBaseOffset(targetText, textoffset);
+	        m_utilBuffer_[0] = textoffset;
+	        return false;
+	    }
+	    
+	    m_matchedIndex_  = start;
+	    matchLength = textoffset - start;
+	    return true;
+	}
+	
+	/**
+	 * Shifting the collation element iterator position forward to prepare for
+	 * a preceding match. If the first character is a unsafe character, we'll 
+	 * only shift by 1 to capture contractions, normalization etc.
+	 * @param textoffset start text position to do search
+	 * @param ce the text ce which failed the match.
+	 * @param patternceindex index of the ce within the pattern ce buffer which
+	 *        failed the match
+	 * @return final offset
+	 */
+	private int reverseShift(int textoffset, int ce, int patternceindex)
+	{         
+	    if (isOverlapping()) {
+	        if (textoffset != m_textLimitOffset_) {
+	            textoffset --;
+	        }
+	        else {
+	            textoffset -= m_pattern_.m_defaultShiftSize_;
+	        }
+	    }
+	    else {
+	        if (ce != CollationElementIterator.NULLORDER) {
+	            int shift = m_pattern_.m_backShift_[hash(ce)];
+	            
+	            // this is to adjust for characters in the middle of the substring 
+	            // for matching that failed.
+	            int adjust = patternceindex;
+	            if (adjust > 1 && shift > adjust) {
+	                shift -= adjust - 1;
+	            }
+	            textoffset -= shift;
+	        }
+	        else {
+	            textoffset -= m_pattern_.m_defaultShiftSize_;
+	        }
+	    }    
+        
+	    textoffset = getPreviousBaseOffset(textoffset);
+	    return textoffset;
+	}
+
+	/**
+	 * Checks match for contraction. 
+	 * If the match starts with a partial contraction we fail.
+	 * Uses the temporary utility buffer to return the modified start and end.
+	 * @param start offset of potential match, to be modified if necessary
+	 * @param end offset of potential match, to be modified if necessary
+	 * @return true if match passes the contraction test, false otherwise.
+	 */
+	private boolean checkPreviousExactContractionMatch(int start, int end) 
+	{
+	    // This part checks if either ends of the match contains potential 
+	    // contraction. If so we'll have to iterate through them
+	    char echar = 0;
+	    if (end < m_textLimitOffset_) {
+	    	targetText.setIndex(end);
+	    	echar = targetText.current();
+	    }
+	    char schar = 0;
+	    if (start + 1 < m_textLimitOffset_) {
+	    	targetText.setIndex(start + 1);
+	    	schar = targetText.current();
+	    }
+	    if (m_collator_.isUnsafe(echar) || m_collator_.isUnsafe(schar)) {
+	    	// expansion suffix, what's left to iterate
+	        int expansion = m_colEIter_.m_CEBufferSize_ 
+	        								- m_colEIter_.m_CEBufferOffset_;
+	        boolean hasExpansion = expansion > 0;
+	        m_colEIter_.setExactOffset(end);
+	        int temp = end;
+	        while (expansion > 0) {
+	            // getting rid of the redundant ce
+	            // since forward contraction/expansion may have extra ces
+	            // if we are in the normalization buffer, hasAccentsBeforeMatch
+	            // would have taken care of it.
+	            // E.g. the character \u01FA will have an expansion of 3, but if
+	            // we are only looking for A ring A\u030A, we'll have to skip the 
+	            // last ce in the expansion buffer
+	            m_colEIter_.previous();
+	            if (m_colEIter_.getOffset() != temp) {
+	                end = temp;
+	                temp = m_colEIter_.getOffset();
+	            }
+	            expansion --;
+	        }
+	
+	        int count = m_pattern_.m_CELength_;
+	        while (count > 0) {
+	            int ce = getCE(m_colEIter_.previous());
+	            // status checked below, note that if status is a failure
+	            // ucol_previous returns UCOL_NULLORDER
+	            if (ce == CollationElementIterator.IGNORABLE) {
+	                continue;
+	            }
+	            if (hasExpansion && count == 0 
+	            	&& m_colEIter_.getOffset() != temp) {
+	                end = temp;
+	                temp = m_colEIter_.getOffset();
+	            }
+	            if (ce != m_pattern_.m_CE_[count - 1]) {
+	                start --;
+	                start = getPreviousBaseOffset(targetText, start);
+	                m_utilBuffer_[0] = start;
+	                m_utilBuffer_[1] = end;
+	                return false;
+	            }
+	            count --;
+	        }
+	    } 
+	    m_utilBuffer_[0] = start;
+	    m_utilBuffer_[1] = end;
+	    return true;
+	}
+	
+	/**
+	 * Checks and sets the match information if found.
+	 * Checks 
+	 * <ul>
+	 * <li> the current match does not repeat the last match
+	 * <li> boundaries are correct
+	 * <li> exact matches has no extra accents
+	 * <li> identical matches
+	 * </ul>
+	 * Otherwise the offset will be shifted to the preceding character.
+	 * Uses the temporary utility buffer to store the modified textoffset.
+	 * @param textoffset offset in the collation element text. the returned value
+	 *        will be the truncated start offset of the match or the new start 
+	 *        search offset.
+	 * @return true if the match is valid, false otherwise
+	 */
+	private final boolean checkPreviousExactMatch(int textoffset)
+	{
+	    // to ensure that the start and ends are not composite characters
+	    int end = m_colEIter_.getOffset();        
+	    if (!checkPreviousExactContractionMatch(textoffset, end)) {
+	        return false;
+	    }
+	    textoffset = m_utilBuffer_[0];
+	    end = m_utilBuffer_[1];
+	        
+	    // this totally matches, however we need to check if it is repeating
+	    // the old match
+	    if (checkRepeatedMatch(textoffset, end) 
+	    	|| !isBreakUnit(textoffset, end) 
+	    	|| hasAccentsBeforeMatch(textoffset, end) 
+	    	|| !checkIdentical(textoffset, end) 
+	    	|| hasAccentsAfterMatch(textoffset, end)) {
+	        textoffset --;
+	        textoffset = getPreviousBaseOffset(targetText, textoffset);
+	        m_utilBuffer_[0] = textoffset;
+	        return false;
+	    }
+	    m_matchedIndex_ = textoffset;
+	    matchLength = end - textoffset;
+	    return true;
+	}
+
+	/**
+	 * Rearranges the end accents to try matching.
+	 * Suffix accents in the text will be grouped according to their combining 
+	 * class and the groups will be mixed and matched to try find the perfect 
+	 * match with the pattern.
+	 * So for instance looking for "\u0301" in "\u030A\u0301\u0325"
+	 * step 1: split "\u030A\u0301" into 6 other type of potential accent 
+	 * 			substrings
+	 *         "\u030A", "\u0301", "\u0325", "\u030A\u0301", "\u030A\u0325", 
+	 *         "\u0301\u0325".
+	 * step 2: check if any of the generated substrings matches the pattern.
+	 * @param start offset of the first base character
+	 * @param end start of the last accent set
+	 * @return DONE if a match is not found, otherwise return the ending
+	 *         offset of the match. Note this start includes all following 
+	 *         accents.
+	 */
+	private int doPreviousCanonicalSuffixMatch(int start, int end)
+	{
+	    targetText.setIndex(end);
+		if (UTF16.isTrailSurrogate(targetText.previous()) 
+			&& targetText.getIndex() > m_textBeginOffset_) {
+			if (!UTF16.isLeadSurrogate(targetText.previous())) {
+				targetText.next();
+			} 
+		}
+	    if ((getFCD(targetText, targetText.getIndex()) & LAST_BYTE_MASK_) == 0) {
+	        // die... failed at a base character
+	        return DONE;
+	    }
+	    end = getNextBaseOffset(targetText, end);
+	
+	    StringBuffer accents = new StringBuffer();
+	    int offset = getPreviousBaseOffset(targetText, end);
+	    // normalizing the offensive string
+	    String accentstr = getString(targetText, offset, end - offset);
+	    if (Normalizer.quickCheck(accentstr, Normalizer.NFD) 
+	        										== Normalizer.NO) {
+	        accentstr = Normalizer.decompose(accentstr, false);
+	    }
+	    accents.append(accentstr);    
+	        
+	    int accentsindex[] = new int[INITIAL_ARRAY_SIZE_];      
+	    int accentsize = getUnblockedAccentIndex(accents, accentsindex);
+	    int count = (2 << (accentsize - 1)) - 2;  
+	    while (count > 0) {
+            m_canonicalSuffixAccents_.delete(0, 
+                                           m_canonicalSuffixAccents_.length());
+	        // copy the base characters
+	        for (int k = 0; k < accentsindex[0]; k ++) {
+	             m_canonicalSuffixAccents_.append(accents.charAt(k));
+	        }
+	        // forming all possible canonical rearrangement by dropping
+	        // sets of accents
+	        for (int i = 0; i <= accentsize - 1; i ++) {
+	            int mask = 1 << (accentsize - i - 1);
+	            if ((count & mask) != 0) {
+	                for (int j = accentsindex[i]; j < accentsindex[i + 1]; 
+	                													j ++) {
+	                    m_canonicalSuffixAccents_.append(accents.charAt(j));
+	                }
+	            }
+	        }
+	        StringBuffer match = merge(m_canonicalPrefixAccents_, targetText,
+	        							start, offset, 
+	        							m_canonicalSuffixAccents_);
+	        // run the collator iterator through this match
+	        // if status is a failure ucol_setText does nothing
+	        m_utilColEIter_.setText(match.toString());
+	        if (checkCollationMatch(m_utilColEIter_)) {
+	            return end;
+	        }
+	        count --;
+	    }
+	    return DONE;
+	}
+	
+	/**
+	 * Take the rearranged start accents and tries matching. If match failed at
+	 * a seperate following set of accents (seperated from the rearranged on by
+	 * at least a base character) then we rearrange the preceding accents and 
+	 * tries matching again.
+	 * We allow skipping of the ends of the accent set if the ces do not match. 
+	 * However if the failure is found before the accent set, it fails.
+	 * Internal method, status assumed to be success, caller has to check 
+	 * status before calling this method.
+	 * @param textoffset of the ends of the rearranged accent
+	 * @return DONE if a match is not found, otherwise return the ending offset 
+	 * 			of the match. Note this start includes all following accents.
+	 */
+	private int doPreviousCanonicalPrefixMatch(int textoffset)
+	{
+	    int safelength = 0;
+	    StringBuffer safetext;
+	    int safeoffset = textoffset;
+	
+	    if (textoffset > m_textBeginOffset_
+	    	&& m_collator_.isUnsafe(m_canonicalPrefixAccents_.charAt(
+	    							m_canonicalPrefixAccents_.length() - 1))) {
+	        safeoffset = getNextSafeOffset(textoffset, m_textLimitOffset_);
+	        safelength = safeoffset - textoffset;
+	        safetext = merge(m_canonicalPrefixAccents_, targetText, textoffset, 
+	        				 safeoffset, null);
+	    }
+	    else {
+	        safetext = m_canonicalPrefixAccents_;
+	    }
+	
+	    // if status is a failure, ucol_setText does nothing
+	    CollationElementIterator coleiter = m_utilColEIter_;
+	    coleiter.setText(safetext.toString());
+	    // status checked in loop below
+	    
+	    int ceindex = 0;
+	    boolean isSafe = true; // safe zone indication flag for position
+	    int prefixlength = m_canonicalPrefixAccents_.length();
+	    
+	    while (ceindex < m_pattern_.m_CELength_) {
+	        int textce = coleiter.next();
+	        if (textce == CollationElementIterator.NULLORDER) {
+	            // check if we have passed the safe buffer
+	            if (coleiter == m_colEIter_) {
+	                return DONE;
+	            }
+	            if (safetext != m_canonicalPrefixAccents_) {
+	            	safetext.delete(0, safetext.length());
+	            }
+	            coleiter = m_colEIter_;
+	            coleiter.setExactOffset(safeoffset);
+	            // status checked at the start of the loop
+	            isSafe = false;
+	            continue;
+	        }
+	        textce = getCE(textce);
+	        if (textce != CollationElementIterator.IGNORABLE 
+	        	&& textce != m_pattern_.m_CE_[ceindex]) {
+	            // do the beginning stuff
+	            int failedoffset = coleiter.getOffset();
+	            if (isSafe && failedoffset <= prefixlength) {
+	                // alas... no hope. failed at rearranged accent set
+	                return DONE;
+	            }
+	            else {
+	                if (isSafe) {
+	                    failedoffset = safeoffset - failedoffset;
+	                    if (safetext != m_canonicalPrefixAccents_) {
+	            			safetext.delete(0, safetext.length());
+	            		}
+	                }
+	                
+	                // try rearranging the end accents
+	                int result = doPreviousCanonicalSuffixMatch(textoffset, 
+	                											failedoffset);
+	                if (result != DONE) {
+	                    // if status is a failure, ucol_setOffset does nothing
+	                    m_colEIter_.setExactOffset(result);
+	                }
+	                return result;
+	            }
+	        }
+	        if (textce == m_pattern_.m_CE_[ceindex]) {
+	            ceindex ++;
+	        }
+	    }
+	    // set offset here
+	    if (isSafe) {
+	        int result = coleiter.getOffset();
+	        // sets the text iterator here with the correct expansion and offset
+	        int leftoverces = coleiter.m_CEBufferSize_ 
+	        									- coleiter.m_CEBufferOffset_;
+	        if (result <= prefixlength) { 
+	            result = textoffset;
+	        }
+	        else {
+	            result = textoffset + (safeoffset - result);
+	        }
+	        m_colEIter_.setExactOffset(result);
+	        m_colEIter_.m_CEBufferOffset_ = m_colEIter_.m_CEBufferSize_ 
+	        													- leftoverces;
+	        return result;
+	    }
+	    
+	    return coleiter.getOffset();              
+	}
+	
+	/**
+	 * Trying out the substring and sees if it can be a canonical match.
+	 * This will try normalizing the starting accents and arranging them into 
+	 * canonical equivalents and check their corresponding ces with the pattern 
+	 * ce.
+	 * Prefix accents in the text will be grouped according to their combining 
+	 * class and the groups will be mixed and matched to try find the perfect 
+	 * match with the pattern.
+	 * So for instance looking for "\u0301" in "\u030A\u0301\u0325"
+	 * step 1: split "\u030A\u0301" into 6 other type of potential accent 
+	 * 		   substrings
+	 *         "\u030A", "\u0301", "\u0325", "\u030A\u0301", "\u030A\u0325", 
+	 *         "\u0301\u0325".
+	 * step 2: check if any of the generated substrings matches the pattern.
+	 * @param textoffset start offset in the collation element text that starts 
+	 *                   with the accents to be rearranged
+	 * @return true if the match is valid, false otherwise
+	 */
+	private boolean doPreviousCanonicalMatch(int textoffset)
+	{
+        int offset = m_colEIter_.getOffset();
+	    if ((getFCD(targetText, textoffset) >> SECOND_LAST_BYTE_SHIFT_) == 0) {
+	        if (m_pattern_.m_hasSuffixAccents_) {
+	            offset = doPreviousCanonicalSuffixMatch(textoffset, offset);
+	            if (offset != DONE) {
+	                m_colEIter_.setExactOffset(offset);
+	                return true;
+	            }
+	        }
+	        return false;
+	    }
+	
+	    if (!m_pattern_.m_hasPrefixAccents_) {
+	        return false;
+	    }
+	
+	    StringBuffer accents = new StringBuffer();
+	    // offset to the last base character in substring to search
+	    int baseoffset = getNextBaseOffset(targetText, textoffset);
+	    // normalizing the offensive string
+	    String textstr = getString(targetText, textoffset, 
+	    											baseoffset - textoffset);
+	    if (Normalizer.quickCheck(textstr, Normalizer.NFD) 
+	        										== Normalizer.NO) {
+	        textstr = Normalizer.decompose(textstr, false);
+	    }
+	    accents.append(textstr);
+	    // status checked in loop
+	        
+	    int accentsindex[] = new int[INITIAL_ARRAY_SIZE_];
+	    int size = getUnblockedAccentIndex(accents, accentsindex);
+	
+	    // 2 power n - 1 minus the full set of accents
+	    int count = (2 << (size - 1)) - 2;  
+	    while (count > 0) {
+	    	m_canonicalPrefixAccents_.delete(0, 
+	    								m_canonicalPrefixAccents_.length());
+	        // copy the base characters
+	        for (int k = 0; k < accentsindex[0]; k ++) {
+	            m_canonicalPrefixAccents_.append(accents.charAt(k));
+	        }
+	        // forming all possible canonical rearrangement by dropping
+	        // sets of accents
+	        for (int i = 0; i <= size - 1; i ++) {
+	            int mask = 1 << (size - i - 1);
+	            if ((count & mask) != 0) {
+	                for (int j = accentsindex[i]; j < accentsindex[i + 1]; 
+	                	 j ++) {
+	                    m_canonicalPrefixAccents_.append(accents.charAt(j));
+	                }
+	            }
+	        }
+	        offset = doPreviousCanonicalPrefixMatch(baseoffset);
+	        if (offset != DONE) {
+	            return true; // match found
+	        }
+	        count --;
+	    }
+	    return false;
+	}
+	
+	/**
+	 * Checks match for contraction. 
+	 * If the match starts with a partial contraction we fail.
+	 * Uses the temporary utility buffer to return the modified start and end.
+	 * @param start offset of potential match, to be modified if necessary
+	 * @param end offset of potential match, to be modified if necessary
+	 * @return true if match passes the contraction test, false otherwise.
+	 */
+	private boolean checkPreviousCanonicalContractionMatch(int start, int end) 
+	{
+	    int temp = end;
+	    // This part checks if either ends of the match contains potential 
+	    // contraction. If so we'll have to iterate through them
+	    char echar = 0;
+	    char schar = 0;
+	    if (end < m_textLimitOffset_) {
+	    	targetText.setIndex(end);
+	    	echar = targetText.current();
+	    }
+	    if (start + 1 < m_textLimitOffset_) {
+	    	targetText.setIndex(start + 1);
+	    	schar = targetText.current();
+	    }
+	    if (m_collator_.isUnsafe(echar) || m_collator_.isUnsafe(schar)) {
+	        int expansion = m_colEIter_.m_CEBufferSize_ 
+	        								- m_colEIter_.m_CEBufferOffset_;
+	        boolean hasExpansion = expansion > 0;
+	        m_colEIter_.setExactOffset(end);
+	        while (expansion > 0) {
+	            // getting rid of the redundant ce
+	            // since forward contraction/expansion may have extra ces
+	            // if we are in the normalization buffer, hasAccentsBeforeMatch
+	            // would have taken care of it.
+	            // E.g. the character \u01FA will have an expansion of 3, but 
+	            // if we are only looking for A ring A\u030A, we'll have to 
+	            // skip the last ce in the expansion buffer
+	            m_colEIter_.previous();
+	            if (m_colEIter_.getOffset() != temp) {
+	                end = temp;
+	                temp = m_colEIter_.getOffset();
+	            }
+	            expansion --;
+	        }
+	
+	        int count = m_pattern_.m_CELength_;
+	        while (count > 0) {
+	            int ce = getCE(m_colEIter_.previous());
+	            // status checked below, note that if status is a failure
+	            // previous() returns NULLORDER
+	            if (ce == CollationElementIterator.IGNORABLE) {
+	                continue;
+	            }
+	            if (hasExpansion && count == 0 
+	            	&& m_colEIter_.getOffset() != temp) {
+	                end = temp;
+	                temp = m_colEIter_.getOffset();
+	            }
+	            if (count == m_pattern_.m_CELength_ 
+	            	&& ce != m_pattern_.m_CE_[m_pattern_.m_CELength_ - 1]) {
+	                // accents may have extra starting ces, this occurs when a 
+	                // pure accent pattern is matched without rearrangement
+	                int expected = m_pattern_.m_CE_[m_pattern_.m_CELength_ - 1];
+	                targetText.setIndex(end);
+	                if (UTF16.isTrailSurrogate(targetText.previous())) {
+	                	if (targetText.getIndex() > m_textBeginOffset_ &&
+	                		!UTF16.isLeadSurrogate(targetText.previous())) {
+	                		targetText.next();
+	                	}
+	                }
+	                end = targetText.getIndex();
+	                if ((getFCD(targetText, end) & LAST_BYTE_MASK_) != 0) {
+	                    ce = getCE(m_colEIter_.previous());
+	                    while (ce != expected 
+	                    		&& ce != CollationElementIterator.NULLORDER 
+	                    		&& m_colEIter_.getOffset() <= start) {
+	                        ce = getCE(m_colEIter_.previous());
+	                    }
+	                }
+	            }
+	            if (ce != m_pattern_.m_CE_[count - 1]) {
+	                start --;
+	                start = getPreviousBaseOffset(start);
+	                m_utilBuffer_[0] = start;
+	                m_utilBuffer_[1] = end;
+	                return false;
+	            }
+	            count --;
+	        }
+	    } 
+	    m_utilBuffer_[0] = start;
+	    m_utilBuffer_[1] = end;
+	    return true;
+	}
+	
+	/**
+	 * Checks and sets the match information if found.
+	 * Checks 
+	 * <ul>
+	 * <li> the potential match does not repeat the previous match
+	 * <li> boundaries are correct
+	 * <li> potential match does not end in the middle of a contraction
+	 * <li> identical matches
+	 * </ul>
+	 * Otherwise the offset will be shifted to the next character.
+	 * Uses the temporary utility buffer for storing the modified textoffset.
+	 * @param textoffset offset in the collation element text. the returned 
+	 * 			value will be the truncated start offset of the match or the 
+	 * 			new start search offset.
+	 * @return true if the match is valid, false otherwise
+	 */
+	private boolean checkPreviousCanonicalMatch(int textoffset)
+	{
+	    // to ensure that the start and ends are not composite characters
+	    // if we have a canonical accent match
+	    if (m_pattern_.m_hasSuffixAccents_ 
+	    	&& m_canonicalSuffixAccents_.length() != 0 
+	    	|| m_pattern_.m_hasPrefixAccents_ 
+	    	&& m_canonicalPrefixAccents_.length() != 0) {
+	        m_matchedIndex_ = textoffset;
+	        matchLength = getNextBaseOffset(m_colEIter_.getOffset()) 
+	            												- textoffset;
+	        return true;
+	    }
+	
+	    int end = m_colEIter_.getOffset();
+	    if (!checkPreviousCanonicalContractionMatch(textoffset, end)) {
+	    	// storing the modified textoffset
+	    	return false;
+	    }
+	    textoffset = m_utilBuffer_[0];
+		end = m_utilBuffer_[1];
+	    end = getNextBaseOffset(end);
+	    // this totally matches, however we need to check if it is repeating
+	    if (checkRepeatedMatch(textoffset, end) 
+	    	|| !isBreakUnit(textoffset, end) 
+	    	|| !checkIdentical(textoffset, end)) {
+	        textoffset --;
+	        textoffset = getPreviousBaseOffset(textoffset);
+	        m_utilBuffer_[0] = textoffset;
+	        return false;
+	    }
+	    
+	    m_matchedIndex_ = textoffset;
+	    matchLength = end - textoffset;
+	    return true;
+	}
+	
+	/**
+	 * Method that does the next exact match
+	 * @param start the offset to start shifting from and performing the 
+	 *        next exact match
+	 */
+	private void handleNextExact(int start)
+	{
+	   	int textoffset = shiftForward(start, 
+	   								  CollationElementIterator.NULLORDER,
+	   								  m_pattern_.m_CELength_);
+		int targetce = CollationElementIterator.IGNORABLE;
+	    while (textoffset <= m_textLimitOffset_) {
+            m_colEIter_.setExactOffset(textoffset);
+	        int patternceindex = m_pattern_.m_CELength_ - 1;
+	        boolean found = false;
+	        int lastce = CollationElementIterator.NULLORDER;
+	        
+	        while (true) {
+	            // finding the last pattern ce match, imagine composite 
+	            // characters. for example: search for pattern A in text \u00C0
+	            // we'll have to skip \u0300 the grave first before we get to A
+	            targetce = m_colEIter_.previous();
+	            if (targetce == CollationElementIterator.NULLORDER) {
+	                found = false;
+	                break;
+	            }
+	            targetce = getCE(targetce);
+	            if (targetce == CollationElementIterator.IGNORABLE && 
+	            	m_colEIter_.isInBuffer()) { 
+	                // this is for the text \u0315\u0300 that requires 
+	                // normalization and pattern \u0300, where \u0315 is ignorable
+	                continue;
+	            }
+	            if (lastce == CollationElementIterator.NULLORDER 
+	            	|| lastce == CollationElementIterator.IGNORABLE) {
+	                lastce = targetce;
+	            }
+	            if (targetce == m_pattern_.m_CE_[patternceindex]) {
+	                // the first ce can be a contraction
+	                found = true;
+	                break;
+	            }
+	            if (m_colEIter_.m_CEBufferOffset_ <= 0) {
+	                found = false;
+	                break;
+	            }
+	        }
+	
+	        targetce = lastce;
+	        
+	        while (found && patternceindex > 0) {
+	            targetce = m_colEIter_.previous();
+	            if (targetce == CollationElementIterator.NULLORDER) {
+	                found = false;
+	                break;
+	            }
+	            targetce = getCE(targetce);
+	            if (targetce == CollationElementIterator.IGNORABLE) {
+	                continue;
+	            }
+	
+	            patternceindex --;
+	            found = found && targetce == m_pattern_.m_CE_[patternceindex]; 
+	        }
+	
+	        if (!found) {
+	            textoffset = shiftForward(textoffset, targetce, 
+	            											patternceindex);
+	            // status checked at loop.
+	            patternceindex = m_pattern_.m_CELength_;
+	            continue;
+	        }
+	        
+	        if (checkNextExactMatch(textoffset)) {
+	            // status checked in ucol_setOffset
+	            return;
+	        }
+	        textoffset = m_utilBuffer_[0];
+	    }
+	    setMatchNotFound();
+	}
+
+	/**
+	 * Method that does the next canonical match
+	 * @param start the offset to start shifting from and performing the 
+	 *        next canonical match
+	 */
+	private void handleNextCanonical(int start)
+	{
+	    boolean hasPatternAccents = 
+	       m_pattern_.m_hasSuffixAccents_ || m_pattern_.m_hasPrefixAccents_;
+	          
+	    // shifting it check for setting offset
+	    // if setOffset is called previously or there was no previous match, we
+	    // leave the offset as it is.
+	    int textoffset = shiftForward(start, CollationElementIterator.NULLORDER, 
+	                              	  m_pattern_.m_CELength_);
+	    m_canonicalPrefixAccents_.delete(0, m_canonicalPrefixAccents_.length());
+	    m_canonicalSuffixAccents_.delete(0, m_canonicalSuffixAccents_.length());
+		int targetce = CollationElementIterator.IGNORABLE;
+	    
+	    while (textoffset <= m_textLimitOffset_)
+	    {
+	    	m_colEIter_.setExactOffset(textoffset);
+	        int patternceindex = m_pattern_.m_CELength_ - 1;
+	        boolean found = false;
+	        int lastce = CollationElementIterator.NULLORDER;
+	        
+	        while (true) {
+	            // finding the last pattern ce match, imagine composite characters
+	            // for example: search for pattern A in text \u00C0
+	            // we'll have to skip \u0300 the grave first before we get to A
+	            targetce = m_colEIter_.previous();
+	            if (targetce == CollationElementIterator.NULLORDER) {
+	                found = false;
+	                break;
+	            }
+	            targetce = getCE(targetce);
+	            if (lastce == CollationElementIterator.NULLORDER 
+	            			|| lastce == CollationElementIterator.IGNORABLE) {
+	                lastce = targetce;
+	            }
+	            if (targetce == m_pattern_.m_CE_[patternceindex]) {
+	                // the first ce can be a contraction
+	                found = true;
+	                break;
+	            }
+	            if (m_colEIter_.m_CEBufferOffset_ <= 0) {
+	                found = false;
+	                break;
+	            }
+	        }
+	        targetce = lastce;
+	        
+	        while (found && patternceindex > 0) {
+	            targetce    = m_colEIter_.previous();
+	            if (targetce == CollationElementIterator.NULLORDER) {
+	                found = false;
+	                break;
+	            }
+	            targetce    = getCE(targetce);
+	            if (targetce == CollationElementIterator.IGNORABLE) {
+	                continue;
+	            }
+	
+	            patternceindex --;
+	            found = found && targetce == m_pattern_.m_CE_[patternceindex]; 
+	        }
+	
+	        // initializing the rearranged accent array
+	        if (hasPatternAccents && !found) {
+	            found = doNextCanonicalMatch(textoffset);
+	        }
+	
+	        if (!found) {
+	            textoffset = shiftForward(textoffset, targetce, patternceindex);
+	            // status checked at loop
+	            patternceindex = m_pattern_.m_CELength_;
+	            continue;
+	        }
+	        
+	        if (checkNextCanonicalMatch(textoffset)) {
+	            return;
+	        }
+	        textoffset = m_utilBuffer_[0];
+	    }
+	    setMatchNotFound();
+	}
+	
+	/**
+	 * Method that does the previous exact match
+	 * @param start the offset to start shifting from and performing the 
+	 *        previous exact match
+	 */
+	private void handlePreviousExact(int start)
+	{
+	    int textoffset = reverseShift(start, CollationElementIterator.NULLORDER, 
+	                                  m_pattern_.m_CELength_);
+	    while (textoffset >= m_textBeginOffset_)
+	    {
+	    	m_colEIter_.setExactOffset(textoffset);
+	        int patternceindex = 1;
+	        int targetce = CollationElementIterator.IGNORABLE;
+	        boolean found = false;
+	        int firstce = CollationElementIterator.NULLORDER;
+	        
+	        while (true) {
+	            // finding the first pattern ce match, imagine composite 
+	            // characters. for example: search for pattern \u0300 in text 
+	            // \u00C0, we'll have to skip A first before we get to 
+	            // \u0300 the grave accent
+	            targetce = m_colEIter_.next();
+	            if (targetce == CollationElementIterator.NULLORDER) {
+	                found = false;
+	                break;
+	            }
+	            targetce = getCE(targetce);
+	            if (firstce == CollationElementIterator.NULLORDER 
+	            	|| firstce == CollationElementIterator.IGNORABLE) {
+	                firstce = targetce;
+	            }
+	            if (targetce == CollationElementIterator.IGNORABLE) {
+	                continue;
+	            }         
+	            if (targetce == m_pattern_.m_CE_[0]) {
+	                found = true;
+	                break;
+	            }
+	            if (m_colEIter_.m_CEBufferOffset_ == -1 
+	            	|| m_colEIter_.m_CEBufferOffset_ 
+	            							== m_colEIter_.m_CEBufferSize_) {
+	                // checking for accents in composite character
+	                found = false;
+	                break;
+	            }
+	        }
+	
+	        targetce = firstce;
+	        
+	        while (found && patternceindex < m_pattern_.m_CELength_) {
+	            targetce = m_colEIter_.next();
+	            if (targetce == CollationElementIterator.NULLORDER) {
+	                found = false;
+	                break;
+	            }
+	            targetce = getCE(targetce);
+	            if (targetce == CollationElementIterator.IGNORABLE) {
+	                continue;
+	            }
+	
+	            found = found && targetce == m_pattern_.m_CE_[patternceindex]; 
+	            patternceindex ++;
+	        }
+	
+	        if (!found) {
+	            textoffset = reverseShift(textoffset, targetce, patternceindex);
+	            patternceindex = 0;
+	            continue;
+	        }
+	        
+	        if (checkPreviousExactMatch(textoffset)) {
+	            return;
+	        }
+	        textoffset = m_utilBuffer_[0];
+	    }
+	    setMatchNotFound();
+	}
+	
+	/**
+	 * Method that does the previous canonical match
+	 * @param start the offset to start shifting from and performing the 
+	 *        previous canonical match
+	 */
+	private void handlePreviousCanonical(int start)
+	{
+	    boolean hasPatternAccents = 
+	       m_pattern_.m_hasSuffixAccents_ || m_pattern_.m_hasPrefixAccents_;
+	          
+	    // shifting it check for setting offset
+	    // if setOffset is called previously or there was no previous match, we
+	    // leave the offset as it is.
+	    int textoffset = reverseShift(start, CollationElementIterator.NULLORDER, 
+	                              		m_pattern_.m_CELength_);
+	    m_canonicalPrefixAccents_.delete(0, m_canonicalPrefixAccents_.length());
+	    m_canonicalSuffixAccents_.delete(0, m_canonicalSuffixAccents_.length());
+	    
+	    while (textoffset >= m_textBeginOffset_)
+	    {
+	    	m_colEIter_.setExactOffset(textoffset);
+	        int patternceindex = 1;
+	        int targetce = CollationElementIterator.IGNORABLE;
+	        boolean found = false;
+	        int firstce = CollationElementIterator.NULLORDER;
+	        
+	        while (true) {
+	            // finding the first pattern ce match, imagine composite 
+	            // characters. for example: search for pattern \u0300 in text 
+	            // \u00C0, we'll have to skip A first before we get to 
+	            // \u0300 the grave accent
+	            targetce = m_colEIter_.next();
+	            if (targetce == CollationElementIterator.NULLORDER) {
+	                found = false;
+	                break;
+	            }
+	            targetce = getCE(targetce);
+	            if (firstce == CollationElementIterator.NULLORDER 
+	            	|| firstce == CollationElementIterator.IGNORABLE) {
+	                firstce = targetce;
+	            }
+	            
+	            if (targetce == m_pattern_.m_CE_[0]) {
+	                // the first ce can be a contraction
+	                found = true;
+	                break;
+	            }
+	            if (m_colEIter_.m_CEBufferOffset_ == -1 
+	            	|| m_colEIter_.m_CEBufferOffset_ 
+	            							== m_colEIter_.m_CEBufferSize_) {
+	                // checking for accents in composite character
+	                found = false;
+	                break;
+	            }
+	        }
+	
+	        targetce = firstce;
+	        
+	        while (found && patternceindex < m_pattern_.m_CELength_) {
+	            targetce = m_colEIter_.next();
+	            if (targetce == CollationElementIterator.NULLORDER) {
+	                found = false;
+	                break;
+	            }
+	            targetce = getCE(targetce);
+	            if (targetce == CollationElementIterator.IGNORABLE) {
+	                continue;
+	            }
+	
+	            found = found && targetce == m_pattern_.m_CE_[patternceindex]; 
+	            patternceindex ++;
+	        }
+	
+	        // initializing the rearranged accent array
+	        if (hasPatternAccents && !found) {
+	            found = doPreviousCanonicalMatch(textoffset);
+	        }
+	
+	        if (!found) {
+	            textoffset = reverseShift(textoffset, targetce, patternceindex);
+	            patternceindex = 0;
+	            continue;
+	        }
+	
+	        if (checkPreviousCanonicalMatch(textoffset)) {
+	            return;
+	        }
+	        textoffset = m_utilBuffer_[0];
+	    }
+	    setMatchNotFound();
+	}
+	
+	/**
+	 * Gets a substring out of a CharacterIterator
+	 * @param text CharacterIterator
+	 * @param start start offset
+	 * @param length of substring
+	 * @return substring from text starting at start and length length
+	 */
+	private static final String getString(CharacterIterator text, int start,
+											int length)
+	{
+		StringBuffer result = new StringBuffer(length);
+		int offset = text.getIndex();
+		text.setIndex(start);
+		for (int i = 0; i < length; i ++) {
+			result.append(text.current());
+			text.next();
+		}
+		text.setIndex(offset);
+		return result.toString();
+	}
+	
+	/**
+	 * Getting the mask for collation strength
+	 * @param strength collation strength
+ 	 * @return collation element mask
+	 */
+	private static final int getMask(int strength) 
+	{
+	    switch (strength) 
+	    {
+	    	case Collator.PRIMARY:
+	        	return RuleBasedCollator.CE_PRIMARY_MASK_;
+	    	case Collator.SECONDARY:
+	        	return RuleBasedCollator.CE_SECONDARY_MASK_ 
+	        	       | RuleBasedCollator.CE_PRIMARY_MASK_;
+	    	default:
+	        	return RuleBasedCollator.CE_TERTIARY_MASK_ 
+	        	       | RuleBasedCollator.CE_SECONDARY_MASK_ 
+	                   | RuleBasedCollator.CE_PRIMARY_MASK_;
+	    }
+	}
+    
+    /**
+     * Sets match not found 
+     */
+    private void setMatchNotFound() 
+    {
+        // this method resets the match result regardless of the error status.
+        m_matchedIndex_ = DONE;
+        setMatchLength(0);
+    }
+}
diff --git a/src/com/ibm/icu/text/SymbolTable.java b/src/com/ibm/icu/text/SymbolTable.java
new file mode 100755
index 0000000..1a5bda2
--- /dev/null
+++ b/src/com/ibm/icu/text/SymbolTable.java
@@ -0,0 +1,60 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/SymbolTable.java,v $ 
+ * $Date: 2002/02/16 03:06:16 $ 
+ * $Revision: 1.9 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+import java.text.ParsePosition;
+
+/**
+ * An interface that maps strings to objects.  This interface defines
+ * both lookup protocol and parsing.  This allows different components
+ * to share a symbol table and to handle name parsing uniformly.  It
+ * is expected that client parse code look for the SYMBOL_REF
+ * character and, when seen, attempt to parse the characters after it
+ * using parseReference().
+ *
+ * <p>Currently, RuleBasedTransliterator and UnicodeSet use this
+ * interface to share variable definitions.
+ */
+public interface SymbolTable {
+
+    /**
+     * The character preceding a symbol reference name.
+     */
+    static final char SYMBOL_REF = '$';
+
+    /**
+     * Lookup the characters associated with this string and return it.
+     * Return <tt>null</tt> if no such name exists.  The resultant
+     * array may have length zero.
+     */
+    char[] lookup(String s);
+
+    /**
+     * Lookup the UnicodeMatcher associated with the given character, and
+     * return it.  Return <tt>null</tt> if not found.
+     * @param ch a 32-bit code point from 0 to 0x10FFFF.
+     */
+    UnicodeMatcher lookupMatcher(int ch);
+
+    /**
+     * Parse a symbol reference name from the given string, starting
+     * at the given position.  If no valid symbol reference name is
+     * found, return null and leave pos unchanged.
+     * @param text the text to parse for the name
+     * @param pos on entry, the index of the first character to parse.
+     * This is the character following the SYMBOL_REF character.  On
+     * exit, the index after the last parsed character.
+     * @param limit the index after the last character to be parsed.
+     * @return the parsed name.
+     */
+    String parseReference(String text, ParsePosition pos, int limit);
+}
diff --git a/src/com/ibm/icu/text/TitlecaseTransliterator.java b/src/com/ibm/icu/text/TitlecaseTransliterator.java
new file mode 100755
index 0000000..7448fdc
--- /dev/null
+++ b/src/com/ibm/icu/text/TitlecaseTransliterator.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 1996-2000, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/TitlecaseTransliterator.java,v $ 
+ * $Date: 2002/06/20 01:21:18 $ 
+ * $Revision: 1.16 $
+ */
+package com.ibm.icu.text;
+import java.util.*;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.UnicodeCharacterIterator;
+
+/**
+ * A transliterator that converts all letters (as defined by
+ * <code>UCharacter.isLetter()</code>) to lower case, except for those
+ * letters preceded by non-letters.  The latter are converted to title
+ * case using <code>UCharacter.toTitleCase()</code>.
+ * @author Alan Liu
+ */
+class TitlecaseTransliterator extends Transliterator {
+
+    static final String _ID = "Any-Title";
+    private Locale loc;
+
+    /**
+     * The set of characters we skip.  These are neither cased nor
+     * non-cased, to us; we copy them verbatim.
+     */
+    static final UnicodeSet SKIP = new UnicodeSet("[\u00AD \u2019 \\' [:Mn:] [:Me:] [:Cf:] [:Lm:] [:Sk:]]");
+
+    /**
+     * The set of characters that cause the next non-SKIP character
+     * to be lowercased.
+     */
+    static final UnicodeSet CASED = new UnicodeSet("[[:Lu:] [:Ll:] [:Lt:]]");
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new TitlecaseTransliterator(Locale.US);
+            }
+        });
+
+        registerSpecialInverse("Title", "Lower", false);
+    }
+
+   /**
+     * Constructs a transliterator.
+     */
+    public TitlecaseTransliterator(Locale loc) {
+        super(_ID, null);
+        this.loc = loc;
+        // Need to look back 2 characters in the case of "can't"
+        setMaximumContextLength(2);
+    }
+     
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean incremental) {
+
+        // Our mode; we are either converting letter toTitle or
+        // toLower.
+        boolean doTitle = true;
+
+        // Determine if there is a preceding context of CASED SKIP*,
+        // in which case we want to start in toLower mode.  If the
+        // prior context is anything else (including empty) then start
+        // in toTitle mode.
+        int c;
+        for (int start = offsets.start - 1; start >= offsets.contextStart; start -= UTF16.getCharCount(c)) {
+            c = text.char32At(start);
+            if (SKIP.contains(c)) {
+                continue;
+            }
+            doTitle = !CASED.contains(c);
+            break;
+        }
+
+        // Convert things after a CASED character toLower; things
+        // after a non-CASED, non-SKIP character toTitle.  SKIP
+        // characters are copied directly and do not change the mode.
+
+        int textPos = offsets.start;
+        if (textPos >= offsets.limit) return;
+
+        // get string for context
+        // TODO: add convenience method to do this, since we do it all over
+        
+        UnicodeCharacterIterator original = new UnicodeCharacterIterator(text);
+        
+        // Walk through original string
+        // If there is a case change, modify corresponding position in replaceable
+        
+        int limit = offsets.limit;
+        int cp;
+        int oldLen;
+        int newLen;
+        
+        while (textPos < limit) {
+        	original.setIndex(textPos);
+            cp = original.currentCodePoint();
+            oldLen = UTF16.getCharCount(cp);
+            
+            if (!SKIP.contains(cp)) {
+                if (doTitle) {
+                    newLen = m_charppty_.toUpperOrTitleCase(loc, cp, original, false, buffer);
+                } else {
+                    newLen = m_charppty_.toLowerCase(loc, cp, original, buffer);
+                }
+                doTitle = !CASED.contains(cp);
+                if (newLen >= 0) {
+                    text.replace(textPos, textPos + oldLen, buffer, 0, newLen);
+                    if (newLen != oldLen) {
+                        textPos += newLen;
+                        offsets.limit += newLen - oldLen;
+                        offsets.contextLimit += newLen - oldLen;
+                        continue;
+                    }
+                }
+            }
+            textPos += oldLen;
+        }
+        offsets.start = offsets.limit;
+    }
+    
+    private char buffer[] = new char[UCharacterProperty.MAX_CASE_MAP_SIZE];
+    /**
+     * Character property database
+     */
+    private static final UCharacterProperty m_charppty_ = 
+                                            UCharacterProperty.getInstance();
+}
diff --git a/src/com/ibm/icu/text/TransformTransliterator.java b/src/com/ibm/icu/text/TransformTransliterator.java
new file mode 100755
index 0000000..e09dd1a
--- /dev/null
+++ b/src/com/ibm/icu/text/TransformTransliterator.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 1996-2000, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/TransformTransliterator.java,v $ 
+ * $Date: 2002/02/16 03:06:16 $ 
+ * $Revision: 1.5 $
+ */
+package com.ibm.icu.text;
+import java.util.*;
+
+abstract class TransformTransliterator {
+    // Currently unused
+}
+
+///**
+// * An abstract class for transliterators based on a transform
+// * operation.  To create a transliterator that implements a
+// * transformation, create a subclass of this class and implement the
+// * abstract <code>transform()</code> and <code>hasTransform()</code>
+// * methods.
+// * @author Alan Liu
+// */
+//abstract class TransformTransliterator extends Transliterator {
+//
+//    /**
+//     * Constructs a transliterator.  For use by subclasses.
+//     */
+//    protected TransformTransliterator(String id, UnicodeFilter f) {
+//        super(id, f);
+//    }
+//
+//    /**
+//     * Implements {@link Transliterator#handleTransliterate}.
+//     */
+//    protected void handleTransliterate(Replaceable text,
+//                                       Position offsets, boolean incremental) {
+//
+//        int start;
+//        for (start = offsets.start; start < offsets.limit; ++start) {
+//            // Scan for the first character that is != its transform.
+//            // If there are none, we fall out without doing anything.
+//            char c = text.charAt(start);
+//            if (hasTransform(c)) {
+//                // There is a transforming character at start.  Break
+//                // up the remaining string, from start to
+//                // offsets.limit, into segments of unfiltered and
+//                // filtered characters.  Only transform the unfiltered
+//                // characters.  As always, minimize the number of
+//                // calls to Replaceable.replace().
+//
+//                int len = offsets.limit - start;
+//                // assert(len >= 1);
+//                
+//                char[] buf = new char[len];
+//                text.getChars(start, offsets.limit, buf, 0);
+//
+//                int segStart = 0;
+//                int segLimit;
+//                UnicodeFilter filt = getFilter();
+//
+//                // lenDelta is the accumulated length difference for
+//                // all transformed segments.  It is new length - old
+//                // length.
+//                int lenDelta = 0;
+//
+//                // Set segStart, segLimit to the unfiltered segment
+//                // starting with start.  If the filter is null, then
+//                // segStart/Limit will be set to the whole string,
+//                // that is, 0/len.
+//                do {
+//                    // Set segLimit to the first filtered char at or
+//                    // after segStart.
+//                    segLimit = len;
+//                    if (filt != null) {
+//                        segLimit = segStart;
+//                        while (segLimit < len && filt.contains(buf[segLimit])) {
+//                             ++segLimit;
+//                        }
+//                    }
+//
+//                    // Transform the unfiltered chars between segStart
+//                    // and segLimit.
+//                    int segLen = segLimit - segStart;
+//                    if (segLen != 0) {
+//                        String newStr = transform(
+//                            new String(buf, segStart, segLen));
+//                        text.replace(start, start + segLen, newStr);
+//                        start += newStr.length();
+//                        lenDelta += newStr.length() - segLen;
+//                    }
+//
+//                    // Set segStart to the first unfiltered char at or
+//                    // after segLimit.
+//                    segStart = segLimit;
+//                    if (filt != null) {
+//                        while (segStart < len && !filt.contains(buf[segStart])) {
+//                            ++segStart;
+//                        }
+//                    }
+//                    start += segStart - segLimit;
+//
+//                } while (segStart < len);
+//                
+//                offsets.limit += lenDelta;
+//                offsets.contextLimit += lenDelta;
+//                offsets.start = offsets.limit;
+//                return;
+//            }
+//        }
+//        // assert(start == offsets.limit);
+//        offsets.start = start;
+//    }
+//
+//    /**
+//     * Subclasses must implement this method to determine whether a
+//     * given character has a transform that is not equal to itself.
+//     * This is approximately equivalent to <code>c !=
+//     * transform(String.valueOf(c))</code>, where
+//     * <code>String.valueOf(c)</code> returns a String containing the
+//     * single character (not integer) <code>c</code>.  Subclasses that
+//     * transform all their input can simply return <code>true</code>.
+//     */
+//    protected abstract boolean hasTransform(int c);
+//
+//    /**
+//     * Subclasses must implement this method to transform a string.
+//     */
+//    protected abstract String transform(String s);
+//}
diff --git a/src/com/ibm/icu/text/TransliterationRule.java b/src/com/ibm/icu/text/TransliterationRule.java
new file mode 100755
index 0000000..898db9b
--- /dev/null
+++ b/src/com/ibm/icu/text/TransliterationRule.java
@@ -0,0 +1,730 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/TransliterationRule.java,v $
+ * $Date: 2002/06/28 19:15:53 $
+ * $Revision: 1.47 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ * A transliteration rule used by
+ * <code>RuleBasedTransliterator</code>.
+ * <code>TransliterationRule</code> is an immutable object.
+ *
+ * <p>A rule consists of an input pattern and an output string.  When
+ * the input pattern is matched, the output string is emitted.  The
+ * input pattern consists of zero or more characters which are matched
+ * exactly (the key) and optional context.  Context must match if it
+ * is specified.  Context may be specified before the key, after the
+ * key, or both.  The key, preceding context, and following context
+ * may contain variables.  Variables represent a set of Unicode
+ * characters, such as the letters <i>a</i> through <i>z</i>.
+ * Variables are detected by looking up each character in a supplied
+ * variable list to see if it has been so defined.
+ *
+ * <p>A rule may contain segments in its input string and segment
+ * references in its output string.  A segment is a substring of the
+ * input pattern, indicated by an offset and limit.  The segment may
+ * be in the preceding or following context.  It may not span a
+ * context boundary.  A segment reference is a special character in
+ * the output string that causes a segment of the input string (not
+ * the input pattern) to be copied to the output string.  The range of
+ * special characters that represent segment references is defined by
+ * RuleBasedTransliterator.Data.
+ *
+ * <p>Example: The rule "([a-z]) . ([0-9]) > $2 . $1" will change the input
+ * string "abc.123" to "ab1.c23".
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: TransliterationRule.java,v $ $Revision: 1.47 $ $Date: 2002/06/28 19:15:53 $
+ */
+class TransliterationRule {
+
+    // TODO Eliminate the pattern and keyLength data members.  They
+    // are used only by masks() and getIndexValue() which are called
+    // only during build time, not during run-time.  Perhaps these
+    // methods and pattern/keyLength can be isolated into a separate
+    // object.
+
+    /**
+     * The match that must occur before the key, or null if there is no
+     * preceding context.
+     */
+    private StringMatcher anteContext;
+
+    /**
+     * The matcher object for the key.  If null, then the key is empty.
+     */
+    private StringMatcher key;
+
+    /**
+     * The match that must occur after the key, or null if there is no
+     * following context.
+     */
+    private StringMatcher postContext;
+
+    /**
+     * The object that performs the replacement if the key,
+     * anteContext, and postContext are matched.  Never null.
+     */
+    private UnicodeReplacer output;
+
+    /**
+     * The string that must be matched, consisting of the anteContext, key,
+     * and postContext, concatenated together, in that order.  Some components
+     * may be empty (zero length).
+     * @see anteContextLength
+     * @see keyLength
+     */
+    private String pattern;
+
+    /**
+     * An array of matcher objects corresponding to the input pattern
+     * segments.  If there are no segments this is null.  N.B. This is
+     * a UnicodeMatcher for generality, but in practice it is always a
+     * StringMatcher.  In the future we may generalize this, but for
+     * now we sometimes cast down to StringMatcher.
+     */
+    UnicodeMatcher[] segments;
+
+    /**
+     * The length of the string that must match before the key.  If
+     * zero, then there is no matching requirement before the key.
+     * Substring [0,anteContextLength) of pattern is the anteContext.
+     */
+    private int anteContextLength;
+
+    /**
+     * The length of the key.  Substring [anteContextLength,
+     * anteContextLength + keyLength) is the key.
+     */
+    private int keyLength;
+
+    /**
+     * Miscellaneous attributes.
+     */
+    byte flags;
+
+    /**
+     * Flag attributes.
+     */
+    static final int ANCHOR_START = 1;
+    static final int ANCHOR_END   = 2;
+
+    /**
+     * An alias pointer to the data for this rule.  The data provides
+     * lookup services for matchers and segments.
+     */
+    private final RuleBasedTransliterator.Data data;
+
+    /**
+     * The character at index i, where i < contextStart || i >= contextLimit,
+     * is ETHER.  This allows explicit matching by rules and UnicodeSets
+     * of text outside the context.  In traditional terms, this allows anchoring
+     * at the start and/or end.
+     */
+    static final char ETHER = '\uFFFF';
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999-2001. All rights reserved.";
+
+    /**
+     * Construct a new rule with the given input, output text, and other
+     * attributes.  A cursor position may be specified for the output text.
+     * @param input input string, including key and optional ante and
+     * post context
+     * @param anteContextPos offset into input to end of ante context, or -1 if
+     * none.  Must be <= input.length() if not -1.
+     * @param postContextPos offset into input to start of post context, or -1
+     * if none.  Must be <= input.length() if not -1, and must be >=
+     * anteContextPos.
+     * @param output output string
+     * @param cursorPos offset into output at which cursor is located, or -1 if
+     * none.  If less than zero, then the cursor is placed after the
+     * <code>output</code>; that is, -1 is equivalent to
+     * <code>output.length()</code>.  If greater than
+     * <code>output.length()</code> then an exception is thrown.
+     * @param cursorOffset an offset to be added to cursorPos to position the
+     * cursor either in the ante context, if < 0, or in the post context, if >
+     * 0.  For example, the rule "abc{def} > | @@@ xyz;" changes "def" to
+     * "xyz" and moves the cursor to before "a".  It would have a cursorOffset
+     * of -3.
+     * @param segs array of UnicodeMatcher corresponding to input pattern
+     * segments, or null if there are none
+     * @param anchorStart true if the the rule is anchored on the left to
+     * the context start
+     * @param anchorEnd true if the rule is anchored on the right to the
+     * context limit
+     */
+    public TransliterationRule(String input,
+                               int anteContextPos, int postContextPos,
+                               String output,
+                               int cursorPos, int cursorOffset,
+                               UnicodeMatcher[] segs,
+                               boolean anchorStart, boolean anchorEnd,
+                               RuleBasedTransliterator.Data theData) {
+        data = theData;
+
+        // Do range checks only when warranted to save time
+        if (anteContextPos < 0) {
+            anteContextLength = 0;
+        } else {
+            if (anteContextPos > input.length()) {
+                throw new IllegalArgumentException("Invalid ante context");
+            }
+            anteContextLength = anteContextPos;
+        }
+        if (postContextPos < 0) {
+            keyLength = input.length() - anteContextLength;
+        } else {
+            if (postContextPos < anteContextLength ||
+                postContextPos > input.length()) {
+                throw new IllegalArgumentException("Invalid post context");
+            }
+            keyLength = postContextPos - anteContextLength;
+        }
+        if (cursorPos < 0) {
+            cursorPos = output.length();
+        } else if (cursorPos > output.length()) {
+            throw new IllegalArgumentException("Invalid cursor position");
+        }
+
+        // We don't validate the segments array.  The caller must
+        // guarantee that the segments are well-formed (that is, that
+        // all $n references in the output refer to indices of this
+        // array, and that no array elements are null).
+        this.segments = segs;
+
+        pattern = input;
+        flags = 0;
+        if (anchorStart) {
+            flags |= ANCHOR_START;
+        }
+        if (anchorEnd) {
+            flags |= ANCHOR_END;
+        }
+
+        anteContext = null;
+        if (anteContextLength > 0) {
+            anteContext = new StringMatcher(pattern.substring(0, anteContextLength),
+                                            0, data);
+        }
+
+        key = null;
+        if (keyLength > 0) {
+            key = new StringMatcher(pattern.substring(anteContextLength, anteContextLength + keyLength),
+                                    0, data);
+        }
+
+        int postContextLength = pattern.length() - keyLength - anteContextLength;
+        postContext = null;
+        if (postContextLength > 0) {
+            postContext = new StringMatcher(pattern.substring(anteContextLength + keyLength),
+                                            0, data);
+        }
+
+        this.output = new StringReplacer(output, cursorPos + cursorOffset, data);
+    }
+
+    /**
+     * Return the preceding context length.  This method is needed to
+     * support the <code>Transliterator</code> method
+     * <code>getMaximumContextLength()</code>.
+     */
+    public int getAnteContextLength() {
+        return anteContextLength + (((flags & ANCHOR_START) != 0) ? 1 : 0);
+    }
+
+    /**
+     * Internal method.  Returns 8-bit index value for this rule.
+     * This is the low byte of the first character of the key,
+     * unless the first character of the key is a set.  If it's a
+     * set, or otherwise can match multiple keys, the index value is -1.
+     */
+    final int getIndexValue() {
+        if (anteContextLength == pattern.length()) {
+            // A pattern with just ante context {such as foo)>bar} can
+            // match any key.
+            return -1;
+        }
+        int c = UTF16.charAt(pattern, anteContextLength);
+        return data.lookupMatcher(c) == null ? (c & 0xFF) : -1;
+    }
+
+    /**
+     * Internal method.  Returns true if this rule matches the given
+     * index value.  The index value is an 8-bit integer, 0..255,
+     * representing the low byte of the first character of the key.
+     * It matches this rule if it matches the first character of the
+     * key, or if the first character of the key is a set, and the set
+     * contains any character with a low byte equal to the index
+     * value.  If the rule contains only ante context, as in foo)>bar,
+     * then it will match any key.
+     */
+    final boolean matchesIndexValue(int v) {
+        // Delegate to the key, or if there is none, to the postContext.
+        // If there is neither then we match any key; return true.
+        UnicodeMatcher m = (key != null) ? key : postContext;
+        return (m != null) ? m.matchesIndexValue(v) : true;
+    }
+
+    /**
+     * Return true if this rule masks another rule.  If r1 masks r2 then
+     * r1 matches any input string that r2 matches.  If r1 masks r2 and r2 masks
+     * r1 then r1 == r2.  Examples: "a>x" masks "ab>y".  "a>x" masks "a[b]>y".
+     * "[c]a>x" masks "[dc]a>y".
+     */
+    public boolean masks(TransliterationRule r2) {
+        /* Rule r1 masks rule r2 if the string formed of the
+         * antecontext, key, and postcontext overlaps in the following
+         * way:
+         *
+         * r1:      aakkkpppp
+         * r2:     aaakkkkkpppp
+         *            ^
+         *
+         * The strings must be aligned at the first character of the
+         * key.  The length of r1 to the left of the alignment point
+         * must be <= the length of r2 to the left; ditto for the
+         * right.  The characters of r1 must equal (or be a superset
+         * of) the corresponding characters of r2.  The superset
+         * operation should be performed to check for UnicodeSet
+         * masking.
+         *
+         * Anchors:  Two patterns that differ only in anchors only
+         * mask one another if they are exactly equal, and r2 has
+         * all the anchors r1 has (optionally, plus some).  Here Y
+         * means the row masks the column, N means it doesn't.
+         *
+         *         ab   ^ab    ab$  ^ab$
+         *   ab    Y     Y     Y     Y
+         *  ^ab    N     Y     N     Y
+         *   ab$   N     N     Y     Y
+         *  ^ab$   N     N     N     Y
+         *
+         * Post context: {a}b masks ab, but not vice versa, since {a}b
+         * matches everything ab matches, and {a}b matches {|a|}b but ab
+         * does not.  Pre context is different (a{b} does not align with
+         * ab).
+         */
+
+        /* LIMITATION of the current mask algorithm: Some rule
+         * maskings are currently not detected.  For example,
+         * "{Lu}]a>x" masks "A]a>y".  This can be added later. TODO
+         */
+
+        int len = pattern.length();
+        int left = anteContextLength;
+        int left2 = r2.anteContextLength;
+        int right = pattern.length() - left;
+        int right2 = r2.pattern.length() - left2;
+
+        // TODO Clean this up -- some logic might be combinable with the
+        // next statement.
+
+        // Test for anchor masking
+        if (left == left2 && right == right2 &&
+            keyLength <= r2.keyLength &&
+            r2.pattern.regionMatches(0, pattern, 0, len)) {
+            // The following boolean logic implements the table above
+            return (flags == r2.flags) ||
+                (!((flags & ANCHOR_START) != 0) && !((flags & ANCHOR_END) != 0)) ||
+                (((r2.flags & ANCHOR_START) != 0) && ((r2.flags & ANCHOR_END) != 0));
+        }
+
+        return left <= left2 &&
+            (right < right2 ||
+             (right == right2 && keyLength <= r2.keyLength)) &&
+            r2.pattern.regionMatches(left2 - left, pattern, 0, len);
+    }
+
+    static final int posBefore(Replaceable str, int pos) {
+        return (pos > 0) ?
+            pos - UTF16.getCharCount(str.char32At(pos-1)) :
+            pos - 1;
+    }
+
+    static final int posAfter(Replaceable str, int pos) {
+        return (pos >= 0 && pos < str.length()) ?
+            pos + UTF16.getCharCount(str.char32At(pos)) :
+            pos + 1;
+    }
+
+    /**
+     * Attempt a match and replacement at the given position.  Return
+     * the degree of match between this rule and the given text.  The
+     * degree of match may be mismatch, a partial match, or a full
+     * match.  A mismatch means at least one character of the text
+     * does not match the context or key.  A partial match means some
+     * context and key characters match, but the text is not long
+     * enough to match all of them.  A full match means all context
+     * and key characters match.
+     *
+     * If a full match is obtained, perform a replacement, update pos,
+     * and return U_MATCH.  Otherwise both text and pos are unchanged.
+     *
+     * @param text the text
+     * @param pos the position indices
+     * @param incremental if TRUE, test for partial matches that may
+     * be completed by additional text inserted at pos.limit.
+     * @return one of <code>U_MISMATCH</code>,
+     * <code>U_PARTIAL_MATCH</code>, or <code>U_MATCH</code>.  If
+     * incremental is FALSE then U_PARTIAL_MATCH will not be returned.
+     */
+    public int matchAndReplace(Replaceable text,
+                               Transliterator.Position pos,
+                               boolean incremental) {
+        // Matching and replacing are done in one method because the
+        // replacement operation needs information obtained during the
+        // match.  Another way to do this is to have the match method
+        // create a match result struct with relevant offsets, and to pass
+        // this into the replace method.
+
+        // ============================ MATCH ===========================
+
+        // Reset segment match data
+        if (segments != null) {
+            for (int i=0; i<segments.length; ++i) {
+                ((StringMatcher) segments[i]).resetMatch();
+            }
+        }
+
+        int keyLimit;
+        int[] intRef = new int[1];
+
+        // ------------------------ Ante Context ------------------------
+
+        // A mismatch in the ante context, or with the start anchor,
+        // is an outright U_MISMATCH regardless of whether we are
+        // incremental or not.
+        int oText; // offset into 'text'
+        int minOText;
+
+        // Note (1): We process text in 16-bit code units, rather than
+        // 32-bit code points.  This works because stand-ins are
+        // always in the BMP and because we are doing a literal match
+        // operation, which can be done 16-bits at a time.
+
+        int anteLimit = posBefore(text, pos.contextStart);
+
+        int match;
+
+        // Start reverse match at char before pos.start
+        intRef[0] = posBefore(text, pos.start);
+
+        if (anteContext != null) {
+            match = anteContext.matches(text, intRef, anteLimit, false);
+            if (match != UnicodeMatcher.U_MATCH) {
+                return UnicodeMatcher.U_MISMATCH;
+            }
+        }
+
+        oText = intRef[0];
+        
+        minOText = posAfter(text, oText);
+
+        // ------------------------ Start Anchor ------------------------
+
+        if (((flags & ANCHOR_START) != 0) && oText != anteLimit) {
+            return UnicodeMatcher.U_MISMATCH;
+        }
+
+        // -------------------- Key and Post Context --------------------
+
+        intRef[0] = pos.start;
+
+        if (key != null) {
+            match = key.matches(text, intRef, pos.limit, incremental);
+            if (match != UnicodeMatcher.U_MATCH) {
+                return match;
+            }
+        }
+
+        keyLimit = intRef[0];
+
+        if (postContext != null) {
+            if (incremental && keyLimit == pos.limit) {
+                // The key matches just before pos.limit, and there is
+                // a postContext.  Since we are in incremental mode,
+                // we must assume more characters may be inserted at
+                // pos.limit -- this is a partial match.
+                return UnicodeMatcher.U_PARTIAL_MATCH;
+            }
+
+            match = postContext.matches(text, intRef, pos.contextLimit, incremental);
+            if (match != UnicodeMatcher.U_MATCH) {
+                return match;
+            }
+        }
+
+        oText = intRef[0];
+
+        // ------------------------- Stop Anchor ------------------------
+
+        if (((flags & ANCHOR_END)) != 0) {
+            if (oText != pos.contextLimit) {
+                return UnicodeMatcher.U_MISMATCH;
+            }
+            if (incremental) {
+                return UnicodeMatcher.U_PARTIAL_MATCH;
+            }
+        }
+
+        // =========================== REPLACE ==========================
+
+        // We have a full match.  The key is between pos.start and
+        // keyLimit.
+
+        int newLength = output.replace(text, pos.start, keyLimit, intRef);
+        int lenDelta = newLength - (keyLimit - pos.start);
+        int newStart = intRef[0];
+
+        oText += lenDelta;
+        pos.limit += lenDelta;
+        pos.contextLimit += lenDelta;
+        // Restrict new value of start to [minOText, min(oText, pos.limit)].
+        pos.start = Math.max(minOText, Math.min(Math.min(oText, pos.limit), newStart));
+        return UnicodeMatcher.U_MATCH;
+    }
+
+    /**
+     * Create a source string that represents this rule.  Append it to the
+     * given string.
+     */
+    public String toRule(boolean escapeUnprintable) {
+        int i;
+
+        StringBuffer rule = new StringBuffer();
+
+        // Accumulate special characters (and non-specials following them)
+        // into quoteBuf.  Append quoteBuf, within single quotes, when
+        // a non-quoted element must be inserted.
+        StringBuffer quoteBuf = new StringBuffer();
+
+        // Do not emit the braces '{' '}' around the pattern if there
+        // is neither anteContext nor postContext.
+        boolean emitBraces =
+            (anteContext != null) || (postContext != null);
+
+        // Emit start anchor
+        if ((flags & ANCHOR_START) != 0) {
+            rule.append('^');
+        }
+
+        // Emit the input pattern
+        Utility.appendToRule(rule, anteContext, escapeUnprintable, quoteBuf);
+
+        if (emitBraces) {
+            Utility.appendToRule(rule, '{', true, escapeUnprintable, quoteBuf);
+        }
+
+        Utility.appendToRule(rule, key, escapeUnprintable, quoteBuf);
+
+        if (emitBraces) {
+            Utility.appendToRule(rule, '}', true, escapeUnprintable, quoteBuf);
+        }
+
+        Utility.appendToRule(rule, postContext, escapeUnprintable, quoteBuf);
+
+        // Emit end anchor
+        if ((flags & ANCHOR_END) != 0) {
+            rule.append('$');
+        }
+
+        Utility.appendToRule(rule, " > ", true, escapeUnprintable, quoteBuf);
+
+        // Emit the output pattern
+
+        Utility.appendToRule(rule, output.toReplacerPattern(escapeUnprintable),
+                     true, escapeUnprintable, quoteBuf);
+
+        Utility.appendToRule(rule, ';', true, escapeUnprintable, quoteBuf);
+
+        return rule.toString();
+    }
+
+    /**
+     * Return a string representation of this object.
+     * @return string representation of this object
+     */
+    public String toString() {
+        return getClass().getName() + '{' + toRule(true) + '}';
+    }
+
+    /**
+     * Union the set of all characters that may be modified by this rule
+     * into the given set.
+     */
+    void addSourceSetTo(UnicodeSet toUnionTo) {
+        int limit = anteContextLength + keyLength;
+        for (int i=anteContextLength; i<limit; ) {
+            int ch = UTF16.charAt(pattern, i);
+            i += UTF16.getCharCount(ch);
+            UnicodeMatcher matcher = data.lookupMatcher(ch);
+            if (matcher == null) {
+                toUnionTo.add(ch);
+            } else {
+                matcher.addMatchSetTo(toUnionTo);
+            }
+        }
+    }
+
+    /**
+     * Union the set of all characters that may be emitted by this rule
+     * into the given set.
+     */
+    void addTargetSetTo(UnicodeSet toUnionTo) {
+        output.addReplacementSetTo(toUnionTo);
+    }
+}
+
+/**
+ * $Log: TransliterationRule.java,v $
+ * Revision 1.47  2002/06/28 19:15:53  alan
+ * jitterbug 1434: improve method names; minor cleanup
+ *
+ * Revision 1.46  2002/06/26 18:12:39  alan
+ * jitterbug 1434: initial public implementation of getSourceSet and getTargetSet
+ *
+ * Revision 1.45  2002/02/25 22:43:57  ram
+ * Move Utility class to icu.impl
+ *
+ * Revision 1.44  2002/02/16 03:06:16  Mohan
+ * ICU4J reorganization
+ *
+ * Revision 1.43  2002/02/09 01:01:47  alan
+ * jitterbug 1544: add char32At() to Replaceable
+ *
+ * Revision 1.42  2002/02/07 00:53:54  alan
+ * jitterbug 1234: make output side of RBTs object-oriented; rewrite ID parsers and modularize them; implement &Any-Lower() support
+ *
+ * Revision 1.41  2001/12/11 22:11:04  alan
+ * jitterbug 1591: edit comments
+ *
+ * Revision 1.40  2001/12/11 17:43:57  alan
+ * jitterbug 1591: clean up TransliterationRule
+ *
+ * Revision 1.39  2001/12/03 21:33:58  alan
+ * jitterbug 1373: more fixes to support supplementals
+ *
+ * Revision 1.38  2001/11/30 22:27:29  alan
+ * jitterbug 1560: fix double increment bug in getSourceSet
+ *
+ * Revision 1.37  2001/11/29 22:31:18  alan
+ * jitterbug 1560: add source-set methods and TransliteratorUtility class
+ *
+ * Revision 1.36  2001/11/21 22:21:45  alan
+ * jitterbug 1533: incorporate Mark's review comments; move escape handling methods to Utility
+ *
+ * Revision 1.35  2001/11/02 17:46:05  alan
+ * jitterbug 1426: eliminate NOP call to copy()
+ *
+ * Revision 1.34  2001/10/30 18:04:08  alan
+ * jitterbug 1406: make quantified segments behave like perl counterparts
+ *
+ * Revision 1.33  2001/10/25 23:22:15  alan
+ * jitterbug 73: changes to support zero-length matchers at end of key
+ *
+ * Revision 1.32  2001/10/25 22:42:24  alan
+ * jitterbug 73: use int for index values to avoid signedness problems
+ *
+ * Revision 1.31  2001/10/18 23:02:32  alan
+ * jitterbug 60: fix handling of anchors in toRule
+ *
+ * Revision 1.30  2001/10/04 22:33:53  alan
+ * jitterbug 69: minor fix to incremental RBT code
+ *
+ * Revision 1.29  2001/10/03 00:14:23  alan
+ * jitterbug 73: finish quantifier and supplemental char support
+ *
+ * Revision 1.28  2001/09/26 18:00:06  alan
+ * jitterbug 67: sync parser with icu4c, allow unlimited, nested segments
+ *
+ * Revision 1.27  2001/09/19 17:43:38  alan
+ * jitterbug 60: initial implementation of toRules()
+ *
+ * Revision 1.26  2001/06/29 22:35:41  alan4j
+ * Implement Any-Upper Any-Lower and Any-Title transliterators
+ *
+ * Revision 1.25  2000/11/29 19:12:32  alan4j
+ * Update docs
+ *
+ * Revision 1.24  2000/08/30 20:40:30  alan4j
+ * Implement anchors.
+ *
+ * Revision 1.23  2000/06/29 21:59:23  alan4j
+ * Fix handling of Transliterator.Position fields
+ *
+ * Revision 1.22  2000/05/18 21:37:19  alan
+ * Update docs
+ *
+ * Revision 1.21  2000/04/28 01:22:01  alan
+ * Update syntax displayed by toString
+ *
+ * Revision 1.20  2000/04/25 17:17:37  alan
+ * Add Replaceable.copy to retain out-of-band info during reordering.
+ *
+ * Revision 1.19  2000/04/25 01:42:58  alan
+ * Allow arbitrary length variable values. Clean up Data API. Update javadocs.
+ *
+ * Revision 1.18  2000/04/22 01:25:10  alan
+ * Add support for cursor positioner '@'; update javadoc
+ *
+ * Revision 1.17  2000/04/21 21:16:40  alan
+ * Modify rule syntax
+ *
+ * Revision 1.16  2000/04/19 16:34:18  alan
+ * Add segment support.
+ *
+ * Revision 1.15  2000/04/12 20:17:45  alan
+ * Delegate replace operation to rule object
+ *
+ * Revision 1.14  2000/03/10 04:07:24  johnf
+ * Copyright update
+ *
+ * Revision 1.13  2000/02/10 07:36:25  johnf
+ * fixed imports for com.ibm.icu.impl.Utility
+ *
+ * Revision 1.12  2000/02/03 18:11:19  Alan
+ * Use array rather than hashtable for char-to-set map
+ *
+ * Revision 1.11  2000/01/27 18:59:19  Alan
+ * Use Position rather than int[] and move all subclass overrides to one method (handleTransliterate)
+ *
+ * Revision 1.10  2000/01/18 20:36:17  Alan
+ * Make UnicodeSet inherit from UnicodeFilter
+ *
+ * Revision 1.9  2000/01/18 02:38:55  Alan
+ * Fix filtering bug.
+ *
+ * Revision 1.8  2000/01/13 23:53:23  Alan
+ * Fix bugs found during ICU port
+ *
+ * Revision 1.7  2000/01/11 04:12:06  Alan
+ * Cleanup, embellish comments
+ *
+ * Revision 1.6  2000/01/11 02:25:03  Alan
+ * Rewrite UnicodeSet and RBT parsers for better performance and new syntax
+ *
+ * Revision 1.5  2000/01/04 21:43:57  Alan
+ * Add rule indexing, and move masking check to TransliterationRuleSet.
+ *
+ * Revision 1.4  1999/12/22 01:40:54  Alan
+ * Consolidate rule pattern anteContext, key, and postContext into one string.
+ *
+ * Revision 1.3  1999/12/22 01:05:54  Alan
+ * Improve masking checking; turn it off by default, for better performance
+ *
+ * Revision 1.2  1999/12/21 23:58:44  Alan
+ * Detect a>x masking a>y
+ */
diff --git a/src/com/ibm/icu/text/TransliterationRuleSet.java b/src/com/ibm/icu/text/TransliterationRuleSet.java
new file mode 100755
index 0000000..928edca
--- /dev/null
+++ b/src/com/ibm/icu/text/TransliterationRuleSet.java
@@ -0,0 +1,338 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/TransliterationRuleSet.java,v $
+ * $Date: 2002/06/28 19:15:53 $
+ * $Revision: 1.25 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.util.*;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * A set of rules for a <code>RuleBasedTransliterator</code>.  This set encodes
+ * the transliteration in one direction from one set of characters or short
+ * strings to another.  A <code>RuleBasedTransliterator</code> consists of up to
+ * two such sets, one for the forward direction, and one for the reverse.
+ *
+ * <p>A <code>TransliterationRuleSet</code> has one important operation, that of
+ * finding a matching rule at a given point in the text.  This is accomplished
+ * by the <code>findMatch()</code> method.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: TransliterationRuleSet.java,v $ $Revision: 1.25 $ $Date: 2002/06/28 19:15:53 $
+ */
+class TransliterationRuleSet {
+    /**
+     * Vector of rules, in the order added.
+     */
+    private Vector ruleVector;
+
+    /**
+     * Length of the longest preceding context
+     */
+    private int maxContextLength;
+
+    /**
+     * Sorted and indexed table of rules.  This is created by freeze() from
+     * the rules in ruleVector.  rules.length >= ruleVector.size(), and the
+     * references in rules[] are aliases of the references in ruleVector.
+     * A single rule in ruleVector is listed one or more times in rules[].
+     */
+    private TransliterationRule[] rules;
+
+    /**
+     * Index table.  For text having a first character c, compute x = c&0xFF.
+     * Now use rules[index[x]..index[x+1]-1].  This index table is created by
+     * freeze().
+     */
+    private int[] index;
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999-2001. All rights reserved.";
+
+    /**
+     * Construct a new empty rule set.
+     */
+    public TransliterationRuleSet() {
+        ruleVector = new Vector();
+        maxContextLength = 0;
+    }
+
+    /**
+     * Return the maximum context length.
+     * @return the length of the longest preceding context.
+     */
+    public int getMaximumContextLength() {
+        return maxContextLength;
+    }
+
+    /**
+     * Add a rule to this set.  Rules are added in order, and order is
+     * significant.
+     * @param rule the rule to add
+     */
+    public void addRule(TransliterationRule rule) {
+        ruleVector.addElement(rule);
+        int len;
+        if ((len = rule.getAnteContextLength()) > maxContextLength) {
+            maxContextLength = len;
+        }
+
+        rules = null;
+    }
+
+    /**
+     * Close this rule set to further additions, check it for masked rules,
+     * and index it to optimize performance.
+     * @exception IllegalArgumentException if some rules are masked
+     */
+    public void freeze() {
+        /* Construct the rule array and index table.  We reorder the
+         * rules by sorting them into 256 bins.  Each bin contains all
+         * rules matching the index value for that bin.  A rule
+         * matches an index value if string whose first key character
+         * has a low byte equal to the index value can match the rule.
+         *
+         * Each bin contains zero or more rules, in the same order
+         * they were found originally.  However, the total rules in
+         * the bins may exceed the number in the original vector,
+         * since rules that have a variable as their first key
+         * character will generally fall into more than one bin.
+         *
+         * That is, each bin contains all rules that either have that
+         * first index value as their first key character, or have
+         * a set containing the index value as their first character.
+         */
+        int n = ruleVector.size();
+        index = new int[257]; // [sic]
+        Vector v = new Vector(2*n); // heuristic; adjust as needed
+
+        /* Precompute the index values.  This saves a LOT of time.
+         */
+        int[] indexValue = new int[n];
+        for (int j=0; j<n; ++j) {
+            TransliterationRule r = (TransliterationRule) ruleVector.elementAt(j);
+            indexValue[j] = r.getIndexValue();
+        }
+        for (int x=0; x<256; ++x) {
+            index[x] = v.size();
+            for (int j=0; j<n; ++j) {
+                if (indexValue[j] >= 0) {
+                    if (indexValue[j] == x) {
+                        v.addElement(ruleVector.elementAt(j));
+                    }
+                } else {
+                    // If the indexValue is < 0, then the first key character is
+                    // a set, and we must use the more time-consuming
+                    // matchesIndexValue check.  In practice this happens
+                    // rarely, so we seldom tread this code path.
+                    TransliterationRule r = (TransliterationRule) ruleVector.elementAt(j);
+                    if (r.matchesIndexValue(x)) {
+                        v.addElement(r);
+                    }
+                }
+            }
+        }
+        index[256] = v.size();
+
+        /* Freeze things into an array.
+         */
+        rules = new TransliterationRule[v.size()];
+        v.copyInto(rules);
+
+        StringBuffer errors = null;
+
+        /* Check for masking.  This is MUCH faster than our old check,
+         * which was each rule against each following rule, since we
+         * only have to check for masking within each bin now.  It's
+         * 256*O(n2^2) instead of O(n1^2), where n1 is the total rule
+         * count, and n2 is the per-bin rule count.  But n2<<n1, so
+         * it's a big win.
+         */
+        for (int x=0; x<256; ++x) {
+            for (int j=index[x]; j<index[x+1]-1; ++j) {
+                TransliterationRule r1 = rules[j];
+                for (int k=j+1; k<index[x+1]; ++k) {
+                    TransliterationRule r2 = rules[k];
+                    if (r1.masks(r2)) {
+                        if (errors == null) {
+                            errors = new StringBuffer();
+                        } else {
+                            errors.append("\n");
+                        }
+                        errors.append("Rule " + r1 + " masks " + r2);
+                    }
+                }
+            }
+        }
+
+        if (errors != null) {
+            throw new IllegalArgumentException(errors.toString());
+        }
+    }
+
+    /**
+     * Transliterate the given text with the given UTransPosition
+     * indices.  Return TRUE if the transliteration should continue
+     * or FALSE if it should halt (because of a U_PARTIAL_MATCH match).
+     * Note that FALSE is only ever returned if isIncremental is TRUE.
+     * @param text the text to be transliterated
+     * @param pos the position indices, which will be updated
+     * @param incremental if TRUE, assume new text may be inserted
+     * at index.limit, and return FALSE if thre is a partial match.
+     * @return TRUE unless a U_PARTIAL_MATCH has been obtained,
+     * indicating that transliteration should stop until more text
+     * arrives.
+     */
+    public boolean transliterate(Replaceable text,
+                                 Transliterator.Position pos,
+                                 boolean incremental) {
+        int indexByte = text.char32At(pos.start) & 0xFF;
+        for (int i=index[indexByte]; i<index[indexByte+1]; ++i) {
+            int m = rules[i].matchAndReplace(text, pos, incremental);
+            switch (m) {
+            case UnicodeMatcher.U_MATCH:
+                if (Transliterator.DEBUG) {
+                    System.out.println((incremental ? "Rule.i: match ":"Rule: match ") +
+                                       rules[i].toRule(true) + " => " +
+                                       Utility.formatInput(text, pos));
+                }
+                return true;
+            case UnicodeMatcher.U_PARTIAL_MATCH:
+                if (Transliterator.DEBUG) {
+                    System.out.println((incremental ? "Rule.i: partial match ":"Rule: partial match ") +
+                                       rules[i].toRule(true) + " => " +
+                                       Utility.formatInput(text, pos));
+                }
+                return false;
+            }
+        }
+        // No match or partial match from any rule
+        pos.start += UTF16.getCharCount(text.char32At(pos.start));
+        if (Transliterator.DEBUG) {
+            System.out.println((incremental ? "Rule.i: no match => ":"Rule: no match => ") +
+                               Utility.formatInput(text, pos));
+        }
+        return true;
+    }
+
+    /**
+     * Create rule strings that represents this rule set.
+     */
+    String toRules(boolean escapeUnprintable) {
+        int i;
+        int count = ruleVector.size();
+        StringBuffer ruleSource = new StringBuffer();
+        for (i=0; i<count; ++i) {
+            if (i != 0) {
+                ruleSource.append('\n');
+            }
+            TransliterationRule r =
+                (TransliterationRule) ruleVector.elementAt(i);
+            ruleSource.append(r.toRule(escapeUnprintable));
+        }
+        return ruleSource.toString();
+    }
+
+    /**
+     * Return the set of all characters that may be modified (getTarget=false)
+     * or emitted (getTarget=true) by this set.
+     */
+    UnicodeSet getSourceTargetSet(boolean getTarget) {
+        UnicodeSet set = new UnicodeSet();
+        int count = ruleVector.size();
+        for (int i=0; i<count; ++i) {
+            TransliterationRule r =
+                (TransliterationRule) ruleVector.elementAt(i);
+            if (getTarget) {
+            	r.addTargetSetTo(set);
+            } else {
+	            r.addSourceSetTo(set);
+            }
+        }
+        return set;
+    }
+}
+
+/* $Log: TransliterationRuleSet.java,v $
+ * Revision 1.25  2002/06/28 19:15:53  alan
+ * jitterbug 1434: improve method names; minor cleanup
+ *
+/* Revision 1.24  2002/06/26 18:12:40  alan
+/* jitterbug 1434: initial public implementation of getSourceSet and getTargetSet
+/*
+/* Revision 1.23  2002/02/25 22:43:58  ram
+/* Move Utility class to icu.impl
+/*
+/* Revision 1.22  2002/02/16 03:06:17  Mohan
+/* ICU4J reorganization
+/*
+/* Revision 1.21  2002/02/09 01:01:47  alan
+/* jitterbug 1544: add char32At() to Replaceable
+/*
+/* Revision 1.20  2001/11/29 22:31:18  alan
+/* jitterbug 1560: add source-set methods and TransliteratorUtility class
+/*
+/* Revision 1.19  2001/11/29 16:11:46  alan
+/* jitterbug 1560: add debugging code; fix handling of runs; detect incomplete non-incremental processing
+/*
+/* Revision 1.18  2001/11/27 21:57:05  alan
+/* jitterbug 1389: incorporate Mark's review comments - comments only
+/*
+/* Revision 1.17  2001/11/06 05:06:26  alan
+/* jitterbug 60: make toRules() read from original vector
+/*
+/* Revision 1.16  2001/11/05 18:55:54  alan
+/* jitterbug 60: elide duplicate rules in toRules()
+/*
+/* Revision 1.15  2001/10/26 22:48:41  alan
+/* jitterbug 68: add DEBUG support to dump rule-based match progression
+/*
+ * Revision 1.14  2001/10/25 22:33:19  alan
+ * jitterbug 73: use int for index values to avoid signedness problems
+ *
+ * Revision 1.13  2001/09/26 18:17:42  alan
+ * jitterbug 67: delete obsolete code
+ *
+ * Revision 1.12  2001/09/26 18:00:06  alan
+ * jitterbug 67: sync parser with icu4c, allow unlimited, nested segments
+ *
+ * Revision 1.11  2001/09/19 17:43:38  alan
+ * jitterbug 60: initial implementation of toRules()
+ *
+ * Revision 1.10  2000/06/29 21:59:23  alan4j
+ * Fix handling of Transliterator.Position fields
+ *
+ * Revision 1.9  2000/03/10 04:07:24  johnf
+ * Copyright update
+ *
+ * Revision 1.8  2000/02/03 18:11:19  Alan
+ * Use array rather than hashtable for char-to-set map
+ *
+ * Revision 1.7  2000/01/27 18:59:19  Alan
+ * Use Position rather than int[] and move all subclass overrides to one method (handleTransliterate)
+ *
+ * Revision 1.6  2000/01/18 20:36:17  Alan
+ * Make UnicodeSet inherit from UnicodeFilter
+ *
+ * Revision 1.5  2000/01/04 21:43:57  Alan
+ * Add rule indexing, and move masking check to TransliterationRuleSet.
+ *
+ * Revision 1.4  1999/12/22 01:40:54  Alan
+ * Consolidate rule pattern anteContext, key, and postContext into one string.
+ *
+ * Revision 1.3  1999/12/22 01:05:54  Alan
+ * Improve masking checking; turn it off by default, for better performance
+ *
+ * Revision 1.2  1999/12/22 00:01:36  Alan
+ * Detect a>x masking a>y
+ */
diff --git a/src/com/ibm/icu/text/Transliterator.java b/src/com/ibm/icu/text/Transliterator.java
new file mode 100755
index 0000000..c0f3e4b
--- /dev/null
+++ b/src/com/ibm/icu/text/Transliterator.java
@@ -0,0 +1,1681 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/Transliterator.java,v $
+ * $Date: 2002/07/30 22:12:43 $
+ * $Revision: 1.83 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.data.ResourceReader;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.CaseInsensitiveString;
+import com.ibm.icu.impl.UCharacterProperty;
+
+import java.io.UnsupportedEncodingException;
+import java.text.MessageFormat;
+import java.text.ParsePosition;
+import java.text.RuleBasedCollator;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.util.Vector;
+
+/**
+ * <code>Transliterator</code> is an abstract class that
+ * transliterates text from one format to another.  The most common
+ * kind of transliterator is a script, or alphabet, transliterator.
+ * For example, a Russian to Latin transliterator changes Russian text
+ * written in Cyrillic characters to phonetically equivalent Latin
+ * characters.  It does not <em>translate</em> Russian to English!
+ * Transliteration, unlike translation, operates on characters, without
+ * reference to the meanings of words and sentences.
+ *
+ * <p>Although script conversion is its most common use, a
+ * transliterator can actually perform a more general class of tasks.
+ * In fact, <code>Transliterator</code> defines a very general API
+ * which specifies only that a segment of the input text is replaced
+ * by new text.  The particulars of this conversion are determined
+ * entirely by subclasses of <code>Transliterator</code>.
+ *
+ * <p><b>Transliterators are stateless</b>
+ *
+ * <p><code>Transliterator</code> objects are <em>stateless</em>; they
+ * retain no information between calls to
+ * <code>transliterate()</code>.  As a result, threads may share
+ * transliterators without synchronizing them.  This might seem to
+ * limit the complexity of the transliteration operation.  In
+ * practice, subclasses perform complex transliterations by delaying
+ * the replacement of text until it is known that no other
+ * replacements are possible.  In other words, although the
+ * <code>Transliterator</code> objects are stateless, the source text
+ * itself embodies all the needed information, and delayed operation
+ * allows arbitrary complexity.
+ *
+ * <p><b>Batch transliteration</b>
+ *
+ * <p>The simplest way to perform transliteration is all at once, on a
+ * string of existing text.  This is referred to as <em>batch</em>
+ * transliteration.  For example, given a string <code>input</code>
+ * and a transliterator <code>t</code>, the call
+ *
+ * <blockquote><code>String result = t.transliterate(input);
+ * </code></blockquote>
+ *
+ * will transliterate it and return the result.  Other methods allow
+ * the client to specify a substring to be transliterated and to use
+ * {@link Replaceable} objects instead of strings, in order to
+ * preserve out-of-band information (such as text styles).
+ *
+ * <p><b>Keyboard transliteration</b>
+ *
+ * <p>Somewhat more involved is <em>keyboard</em>, or incremental
+ * transliteration.  This is the transliteration of text that is
+ * arriving from some source (typically the user's keyboard) one
+ * character at a time, or in some other piecemeal fashion.
+ *
+ * <p>In keyboard transliteration, a <code>Replaceable</code> buffer
+ * stores the text.  As text is inserted, as much as possible is
+ * transliterated on the fly.  This means a GUI that displays the
+ * contents of the buffer may show text being modified as each new
+ * character arrives.
+ *
+ * <p>Consider the simple <code>RuleBasedTransliterator</code>:
+ *
+ * <blockquote><code>
+ * th&gt;{theta}<br>
+ * t&gt;{tau}
+ * </code></blockquote>
+ *
+ * When the user types 't', nothing will happen, since the
+ * transliterator is waiting to see if the next character is 'h'.  To
+ * remedy this, we introduce the notion of a cursor, marked by a '|'
+ * in the output string:
+ *
+ * <blockquote><code>
+ * t&gt;|{tau}<br>
+ * {tau}h&gt;{theta}
+ * </code></blockquote>
+ *
+ * Now when the user types 't', tau appears, and if the next character
+ * is 'h', the tau changes to a theta.  This is accomplished by
+ * maintaining a cursor position (independent of the insertion point,
+ * and invisible in the GUI) across calls to
+ * <code>transliterate()</code>.  Typically, the cursor will
+ * be coincident with the insertion point, but in a case like the one
+ * above, it will precede the insertion point.
+ *
+ * <p>Keyboard transliteration methods maintain a set of three indices
+ * that are updated with each call to
+ * <code>transliterate()</code>, including the cursor, start,
+ * and limit.  These indices are changed by the method, and they are
+ * passed in and out via a Position object. The <code>start</code> index
+ * marks the beginning of the substring that the transliterator will
+ * look at.  It is advanced as text becomes committed (but it is not
+ * the committed index; that's the <code>cursor</code>).  The
+ * <code>cursor</code> index, described above, marks the point at
+ * which the transliterator last stopped, either because it reached
+ * the end, or because it required more characters to disambiguate
+ * between possible inputs.  The <code>cursor</code> can also be
+ * explicitly set by rules in a <code>RuleBasedTransliterator</code>.
+ * Any characters before the <code>cursor</code> index are frozen;
+ * future keyboard transliteration calls within this input sequence
+ * will not change them.  New text is inserted at the
+ * <code>limit</code> index, which marks the end of the substring that
+ * the transliterator looks at.
+ *
+ * <p>Because keyboard transliteration assumes that more characters
+ * are to arrive, it is conservative in its operation.  It only
+ * transliterates when it can do so unambiguously.  Otherwise it waits
+ * for more characters to arrive.  When the client code knows that no
+ * more characters are forthcoming, perhaps because the user has
+ * performed some input termination operation, then it should call
+ * <code>finishTransliteration()</code> to complete any
+ * pending transliterations.
+ *
+ * <p><b>Inverses</b>
+ *
+ * <p>Pairs of transliterators may be inverses of one another.  For
+ * example, if transliterator <b>A</b> transliterates characters by
+ * incrementing their Unicode value (so "abc" -> "def"), and
+ * transliterator <b>B</b> decrements character values, then <b>A</b>
+ * is an inverse of <b>B</b> and vice versa.  If we compose <b>A</b>
+ * with <b>B</b> in a compound transliterator, the result is the
+ * indentity transliterator, that is, a transliterator that does not
+ * change its input text.
+ *
+ * The <code>Transliterator</code> method <code>getInverse()</code>
+ * returns a transliterator's inverse, if one exists, or
+ * <code>null</code> otherwise.  However, the result of
+ * <code>getInverse()</code> usually will <em>not</em> be a true
+ * mathematical inverse.  This is because true inverse transliterators
+ * are difficult to formulate.  For example, consider two
+ * transliterators: <b>AB</b>, which transliterates the character 'A'
+ * to 'B', and <b>BA</b>, which transliterates 'B' to 'A'.  It might
+ * seem that these are exact inverses, since
+ *
+ * <blockquote>"A" x <b>AB</b> -> "B"<br>
+ * "B" x <b>BA</b> -> "A"</blockquote>
+ *
+ * where 'x' represents transliteration.  However,
+ *
+ * <blockquote>"ABCD" x <b>AB</b> -> "BBCD"<br>
+ * "BBCD" x <b>BA</b> -> "AACD"</blockquote>
+ *
+ * so <b>AB</b> composed with <b>BA</b> is not the
+ * identity. Nonetheless, <b>BA</b> may be usefully considered to be
+ * <b>AB</b>'s inverse, and it is on this basis that
+ * <b>AB</b><code>.getInverse()</code> could legitimately return
+ * <b>BA</b>.
+ *
+ * <p><b>IDs and display names</b>
+ *
+ * <p>A transliterator is designated by a short identifier string or
+ * <em>ID</em>.  IDs follow the format <em>source-destination</em>,
+ * where <em>source</em> describes the entity being replaced, and
+ * <em>destination</em> describes the entity replacing
+ * <em>source</em>.  The entities may be the names of scripts,
+ * particular sequences of characters, or whatever else it is that the
+ * transliterator converts to or from.  For example, a transliterator
+ * from Russian to Latin might be named "Russian-Latin".  A
+ * transliterator from keyboard escape sequences to Latin-1 characters
+ * might be named "KeyboardEscape-Latin1".  By convention, system
+ * entity names are in English, with the initial letters of words
+ * capitalized; user entity names may follow any format so long as
+ * they do not contain dashes.
+ *
+ * <p>In addition to programmatic IDs, transliterator objects have
+ * display names for presentation in user interfaces, returned by
+ * {@link #getDisplayName}.
+ *
+ * <p><b>Factory methods and registration</b>
+ *
+ * <p>In general, client code should use the factory method
+ * <code>getInstance()</code> to obtain an instance of a
+ * transliterator given its ID.  Valid IDs may be enumerated using
+ * <code>getAvailableIDs()</code>.  Since transliterators are
+ * stateless, multiple calls to <code>getInstance()</code> with the
+ * same ID will return the same object.
+ *
+ * <p>In addition to the system transliterators registered at startup,
+ * user transliterators may be registered by calling
+ * <code>registerInstance()</code> at run time.  To register a
+ * transliterator subclass without instantiating it (until it is
+ * needed), users may call <code>registerClass()</code>.
+ *
+ * <p><b>Composed transliterators</b>
+ *
+ * <p>In addition to built-in system transliterators like
+ * "Latin-Greek", there are also built-in <em>composed</em>
+ * transliterators.  These are implemented by composing two or more
+ * component transliterators.  For example, if we have scripts "A",
+ * "B", "C", and "D", and we want to transliterate between all pairs
+ * of them, then we need to write 12 transliterators: "A-B", "A-C",
+ * "A-D", "B-A",..., "D-A", "D-B", "D-C".  If it is possible to
+ * convert all scripts to an intermediate script "M", then instead of
+ * writing 12 rule sets, we only need to write 8: "A~M", "B~M", "C~M",
+ * "D~M", "M~A", "M~B", "M~C", "M~D".  (This might not seem like a big
+ * win, but it's really 2<em>n</em> vs. <em>n</em><sup>2</sup> -
+ * <em>n</em>, so as <em>n</em> gets larger the gain becomes
+ * significant.  With 9 scripts, it's 18 vs. 72 rule sets, a big
+ * difference.)  Note the use of "~" rather than "-" for the script
+ * separator here; this indicates that the given transliterator is
+ * intended to be composed with others, rather than be used as is.
+ *
+ * <p>Composed transliterators can be instantiated as usual.  For
+ * example, the system transliterator "Devanagari-Gujarati" is a
+ * composed transliterator built internally as
+ * "Devanagari~InterIndic;InterIndic~Gujarati".  When this
+ * transliterator is instantiated, it appears externally to be a
+ * standard transliterator (e.g., getID() returns
+ * "Devanagari-Gujarati").
+ *
+ * <p><b>Subclassing</b>
+ *
+ * <p>Subclasses must implement the abstract method
+ * <code>handleTransliterate()</code>.  <p>Subclasses should override
+ * the <code>transliterate()</code> method taking a
+ * <code>Replaceable</code> and the <code>transliterate()</code>
+ * method taking a <code>String</code> and <code>StringBuffer</code>
+ * if the performance of these methods can be improved over the
+ * performance obtained by the default implementations in this class.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: Transliterator.java,v $ $Revision: 1.83 $ $Date: 2002/07/30 22:12:43 $
+ */
+public abstract class Transliterator {
+    /**
+     * Direction constant indicating the forward direction in a transliterator,
+     * e.g., the forward rules of a RuleBasedTransliterator.  An "A-B"
+     * transliterator transliterates A to B when operating in the forward
+     * direction, and B to A when operating in the reverse direction.
+     * @see RuleBasedTransliterator
+     * @see CompoundTransliterator
+     */
+    public static final int FORWARD = 0;
+
+    /**
+     * Direction constant indicating the reverse direction in a transliterator,
+     * e.g., the reverse rules of a RuleBasedTransliterator.  An "A-B"
+     * transliterator transliterates A to B when operating in the forward
+     * direction, and B to A when operating in the reverse direction.
+     * @see RuleBasedTransliterator
+     * @see CompoundTransliterator
+     */
+    public static final int REVERSE = 1;
+
+    /**
+     * Position structure for incremental transliteration.  This data
+     * structure defines two substrings of the text being
+     * transliterated.  The first region, [contextStart,
+     * contextLimit), defines what characters the transliterator will
+     * read as context.  The second region, [start, limit), defines
+     * what characters will actually be transliterated.  The second
+     * region should be a subset of the first.
+     *
+     * <p>After a transliteration operation, some of the indices in this
+     * structure will be modified.  See the field descriptions for
+     * details.
+     *
+     * <p>contextStart <= start <= limit <= contextLimit
+     *
+     * <p>Note: All index values in this structure must be at code point
+     * boundaries.  That is, none of them may occur between two code units
+     * of a surrogate pair.  If any index does split a surrogate pair,
+     * results are unspecified.
+     */
+    public static class Position {
+
+        /**
+         * Beginning index, inclusive, of the context to be considered for
+         * a transliteration operation.  The transliterator will ignore
+         * anything before this index.  INPUT/OUTPUT parameter: This parameter
+         * is updated by a transliteration operation to reflect the maximum
+         * amount of antecontext needed by a transliterator.
+         */
+        public int contextStart;
+
+        /**
+         * Ending index, exclusive, of the context to be considered for a
+         * transliteration operation.  The transliterator will ignore
+         * anything at or after this index.  INPUT/OUTPUT parameter: This
+         * parameter is updated to reflect changes in the length of the
+         * text, but points to the same logical position in the text.
+         */
+        public int contextLimit;
+
+        /**
+         * Beginning index, inclusive, of the text to be transliteratd.
+         * INPUT/OUTPUT parameter: This parameter is advanced past
+         * characters that have already been transliterated by a
+         * transliteration operation.
+         */
+        public int start;
+
+        /**
+         * Ending index, exclusive, of the text to be transliteratd.
+         * INPUT/OUTPUT parameter: This parameter is updated to reflect
+         * changes in the length of the text, but points to the same
+         * logical position in the text.
+         */
+        public int limit;
+
+        public Position() {
+            this(0, 0, 0, 0);
+        }
+
+        public Position(int contextStart, int contextLimit, int start) {
+            this(contextStart, contextLimit, start, contextLimit);
+        }
+
+        public Position(int contextStart, int contextLimit,
+                        int start, int limit) {
+            this.contextStart = contextStart;
+            this.contextLimit = contextLimit;
+            this.start = start;
+            this.limit = limit;
+        }
+
+        /**
+         * Check all bounds.  If they are invalid, throw an exception.
+         * @param length the length of the string this object applies to
+         * @exception IllegalArgumentException if any indices are out
+         * of bounds
+         */
+        public final void validate(int length) {
+            if (contextStart < 0 ||
+                start < contextStart ||
+                limit < start ||
+                contextLimit < limit ||
+                length < contextLimit) {
+                throw new IllegalArgumentException("Invalid Position {cs=" +
+                                                   contextStart + ", s=" +
+                                                   start + ", l=" +
+                                                   limit + ", cl=" +
+                                                   contextLimit + "}, len=" +
+                                                   length);
+            }
+        }
+    }
+
+    /**
+     * Programmatic name, e.g., "Latin-Arabic".
+     */
+    private String ID;
+
+    /**
+     * This transliterator's filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     */
+    private UnicodeFilter filter;
+
+    private int maximumContextLength = 0;
+
+    /**
+     * System transliterator registry.
+     */
+    private static TransliteratorRegistry registry;
+
+    private static Hashtable displayNameCache;
+
+    /**
+     * Prefix for resource bundle key for the display name for a
+     * transliterator.  The ID is appended to this to form the key.
+     * The resource bundle value should be a String.
+     */
+    private static final String RB_DISPLAY_NAME_PREFIX = "%Translit%%";
+
+    /**
+     * Prefix for resource bundle key for the display name for a
+     * transliterator SCRIPT.  The ID is appended to this to form the key.
+     * The resource bundle value should be a String.
+     */
+    private static final String RB_SCRIPT_DISPLAY_NAME_PREFIX = "%Translit%";
+
+    /**
+     * Resource bundle key for display name pattern.
+     * The resource bundle value should be a String forming a
+     * MessageFormat pattern, e.g.:
+     * "{0,choice,0#|1#{1} Transliterator|2#{1} to {2} Transliterator}".
+     */
+    private static final String RB_DISPLAY_NAME_PATTERN = "TransliteratorNamePattern";
+
+    protected static final char ID_DELIM = ';';
+
+    protected static final char ID_SEP = '-';
+
+    protected static final char VARIANT_SEP = '/';
+
+    private static final String ANY = "Any";
+
+    /**
+     * To enable debugging output in the Transliterator component, set
+     * DEBUG to true.
+     *
+     * N.B. Make sure to recompile all of the com.ibm.icu.text package
+     * after changing this.  Easiest way to do this is 'ant clean
+     * core' ('ant' will NOT pick up the dependency automatically).
+     *
+     * <<This generates a lot of output.>>
+     */
+    static final boolean DEBUG = false;
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Default constructor.
+     * @param ID the string identifier for this transliterator
+     * @param filter the filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     */
+    protected Transliterator(String ID, UnicodeFilter filter) {
+        if (ID == null) {
+            throw new NullPointerException();
+        }
+        this.ID = ID;
+        this.filter = filter;
+    }
+
+    /**
+     * Transliterates a segment of a string, with optional filtering.
+     *
+     * @param text the string to be transliterated
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= text.length()</code>.
+     * @return The new limit index.  The text previously occupying <code>[start,
+     * limit)</code> has been transliterated, possibly to a string of a different
+     * length, at <code>[start, </code><em>new-limit</em><code>)</code>, where
+     * <em>new-limit</em> is the return value. If the input offsets are out of bounds,
+     * the returned value is -1 and the input string remains unchanged.
+     */
+    public final int transliterate(Replaceable text, int start, int limit) {
+        if (start < 0 ||
+            limit < start ||
+            text.length() < limit) {
+            return -1;
+        }
+
+        Position pos = new Position(start, limit, start);
+        filteredTransliterate(text, pos, false, true);
+        return pos.limit;
+    }
+
+    /**
+     * Transliterates an entire string in place. Convenience method.
+     * @param text the string to be transliterated
+     */
+    public final void transliterate(Replaceable text) {
+        transliterate(text, 0, text.length());
+    }
+
+    /**
+     * Transliterate an entire string and returns the result. Convenience method.
+     *
+     * @param text the string to be transliterated
+     * @return The transliterated text
+     */
+    public final String transliterate(String text) {
+        ReplaceableString result = new ReplaceableString(text);
+        transliterate(result);
+        return result.toString();
+    }
+
+    /**
+     * Transliterates the portion of the text buffer that can be
+     * transliterated unambiguosly after new text has been inserted,
+     * typically as a result of a keyboard event.  The new text in
+     * <code>insertion</code> will be inserted into <code>text</code>
+     * at <code>index.contextLimit</code>, advancing
+     * <code>index.contextLimit</code> by <code>insertion.length()</code>.
+     * Then the transliterator will try to transliterate characters of
+     * <code>text</code> between <code>index.start</code> and
+     * <code>index.contextLimit</code>.  Characters before
+     * <code>index.start</code> will not be changed.
+     *
+     * <p>Upon return, values in <code>index</code> will be updated.
+     * <code>index.contextStart</code> will be advanced to the first
+     * character that future calls to this method will read.
+     * <code>index.start</code> and <code>index.contextLimit</code> will
+     * be adjusted to delimit the range of text that future calls to
+     * this method may change.
+     *
+     * <p>Typical usage of this method begins with an initial call
+     * with <code>index.contextStart</code> and <code>index.contextLimit</code>
+     * set to indicate the portion of <code>text</code> to be
+     * transliterated, and <code>index.start == index.contextStart</code>.
+     * Thereafter, <code>index</code> can be used without
+     * modification in future calls, provided that all changes to
+     * <code>text</code> are made via this method.
+     *
+     * <p>This method assumes that future calls may be made that will
+     * insert new text into the buffer.  As a result, it only performs
+     * unambiguous transliterations.  After the last call to this
+     * method, there may be untransliterated text that is waiting for
+     * more input to resolve an ambiguity.  In order to perform these
+     * pending transliterations, clients should call {@link
+     * #finishTransliteration} after the last call to this
+     * method has been made.
+     *
+     * @param text the buffer holding transliterated and untransliterated text
+     * @param index the start and limit of the text, the position
+     * of the cursor, and the start and limit of transliteration.
+     * @param insertion text to be inserted and possibly
+     * transliterated into the translation buffer at
+     * <code>index.contextLimit</code>.  If <code>null</code> then no text
+     * is inserted.
+     * @see #handleTransliterate
+     * @exception IllegalArgumentException if <code>index</code>
+     * is invalid
+     */
+    public final void transliterate(Replaceable text, Position index,
+                                    String insertion) {
+        index.validate(text.length());
+
+//        int originalStart = index.contextStart;
+        if (insertion != null) {
+            text.replace(index.limit, index.limit, insertion);
+            index.limit += insertion.length();
+            index.contextLimit += insertion.length();
+        }
+
+        if (index.limit > 0 &&
+            UTF16.isLeadSurrogate(text.charAt(index.limit - 1))) {
+            // Oops, there is a dangling lead surrogate in the buffer.
+            // This will break most transliterators, since they will
+            // assume it is part of a pair.  Don't transliterate until
+            // more text comes in.
+            return;
+        }
+
+        filteredTransliterate(text, index, true, true);
+
+// TODO
+// This doesn't work once we add quantifier support.  Need to rewrite
+// this code to support quantifiers and 'use maximum backup <n>;'.
+//
+//        index.contextStart = Math.max(index.start - getMaximumContextLength(),
+//                                      originalStart);
+    }
+
+    /**
+     * Transliterates the portion of the text buffer that can be
+     * transliterated unambiguosly after a new character has been
+     * inserted, typically as a result of a keyboard event.  This is a
+     * convenience method; see {@link #transliterate(Replaceable,
+     * Transliterator.Position, String)} for details.
+     * @param text the buffer holding transliterated and
+     * untransliterated text
+     * @param index the start and limit of the text, the position
+     * of the cursor, and the start and limit of transliteration.
+     * @param insertion text to be inserted and possibly
+     * transliterated into the translation buffer at
+     * <code>index.contextLimit</code>.
+     * @see #transliterate(Replaceable, Transliterator.Position, String)
+     */
+    public final void transliterate(Replaceable text, Position index,
+                                    int insertion) {
+        transliterate(text, index, UTF16.valueOf(insertion));
+    }
+
+    /**
+     * Transliterates the portion of the text buffer that can be
+     * transliterated unambiguosly.  This is a convenience method; see
+     * {@link #transliterate(Replaceable, Transliterator.Position,
+     * String)} for details.
+     * @param text the buffer holding transliterated and
+     * untransliterated text
+     * @param index the start and limit of the text, the position
+     * of the cursor, and the start and limit of transliteration.
+     * @see #transliterate(Replaceable, Transliterator.Position, String)
+     */
+    public final void transliterate(Replaceable text, Position index) {
+        transliterate(text, index, null);
+    }
+
+    /**
+     * Finishes any pending transliterations that were waiting for
+     * more characters.  Clients should call this method as the last
+     * call after a sequence of one or more calls to
+     * <code>transliterate()</code>.
+     * @param text the buffer holding transliterated and
+     * untransliterated text.
+     * @param index the array of indices previously passed to {@link
+     * #transliterate}
+     */
+    public final void finishTransliteration(Replaceable text,
+                                            Position index) {
+        index.validate(text.length());
+        filteredTransliterate(text, index, false, true);
+    }
+
+    /**
+     * Abstract method that concrete subclasses define to implement
+     * their transliteration algorithm.  This method handles both
+     * incremental and non-incremental transliteration.  Let
+     * <code>originalStart</code> refer to the value of
+     * <code>pos.start</code> upon entry.
+     * 
+     * <ul>
+     *  <li>If <code>incremental</code> is false, then this method
+     *  should transliterate all characters between
+     *  <code>pos.start</code> and <code>pos.limit</code>. Upon return
+     *  <code>pos.start</code> must == <code> pos.limit</code>.</li>
+     *
+     *  <li>If <code>incremental</code> is true, then this method
+     *  should transliterate all characters between
+     *  <code>pos.start</code> and <code>pos.limit</code> that can be
+     *  unambiguously transliterated, regardless of future insertions
+     *  of text at <code>pos.limit</code>.  Upon return,
+     *  <code>pos.start</code> should be in the range
+     *  [<code>originalStart</code>, <code>pos.limit</code>).
+     *  <code>pos.start</code> should be positioned such that
+     *  characters [<code>originalStart</code>, <code>
+     *  pos.start</code>) will not be changed in the future by this
+     *  transliterator and characters [<code>pos.start</code>,
+     *  <code>pos.limit</code>) are unchanged.</li>
+     * </ul>
+     * 
+     * <p>Implementations of this method should also obey the
+     * following invariants:</p>
+     *
+     * <ul>
+     *  <li> <code>pos.limit</code> and <code>pos.contextLimit</code>
+     *  should be updated to reflect changes in length of the text
+     *  between <code>pos.start</code> and <code>pos.limit</code>. The
+     *  difference <code> pos.contextLimit - pos.limit</code> should
+     *  not change.</li>
+     *
+     *  <li><code>pos.contextStart</code> should not change.</li>
+     *
+     *  <li>Upon return, neither <code>pos.start</code> nor
+     *  <code>pos.limit</code> should be less than
+     *  <code>originalStart</code>.</li>
+     *
+     *  <li>Text before <code>originalStart</code> and text after
+     *  <code>pos.limit</code> should not change.</li>
+     *
+     *  <li>Text before <code>pos.contextStart</code> and text after
+     *  <code> pos.contextLimit</code> should be ignored.</li>
+     * </ul>
+     *    
+     * <p>Subclasses may safely assume that all characters in
+     * [<code>pos.start</code>, <code>pos.limit</code>) are filtered.
+     * In other words, the filter has already been applied by the time
+     * this method is called.  See
+     * <code>filteredTransliterate()</code>.
+     *    
+     * <p>This method is <b>not</b> for public consumption.  Calling
+     * this method directly will transliterate
+     * [<code>pos.start</code>, <code>pos.limit</code>) without
+     * applying the filter. End user code should call <code>
+     * transliterate()</code> instead of this method. Subclass code
+     * should call <code>filteredTransliterate()</code> instead of
+     * this method.<p>
+     * 
+     * @param text the buffer holding transliterated and
+     * untransliterated text
+     * 
+     * @param pos the indices indicating the start, limit, context
+     * start, and context limit of the text.
+     * 
+     * @param incremental if true, assume more text may be inserted at
+     * <code>pos.limit</code> and act accordingly.  Otherwise,
+     * transliterate all text between <code>pos.start</code> and
+     * <code>pos.limit</code> and move <code>pos.start</code> up to
+     * <code>pos.limit</code>.
+     * 
+     * @see #transliterate
+     */
+    protected abstract void handleTransliterate(Replaceable text,
+                                                Position pos, boolean incremental);
+
+    /**
+     * Top-level transliteration method, handling filtering, incremental and
+     * non-incremental transliteration, and rollback.  All transliteration
+     * public API methods eventually call this method with a rollback argument
+     * of TRUE.  Other entities may call this method but rollback should be
+     * FALSE.
+     * 
+     * <p>If this transliterator has a filter, break up the input text into runs
+     * of unfiltered characters.  Pass each run to
+     * <subclass>.handleTransliterate().
+     *
+     * <p>In incremental mode, if rollback is TRUE, perform a special
+     * incremental procedure in which several passes are made over the input
+     * text, adding one character at a time, and committing successful
+     * transliterations as they occur.  Unsuccessful transliterations are rolled
+     * back and retried with additional characters to give correct results.
+     *
+     * @param text the text to be transliterated
+     * @param index the position indices
+     * @param incremental if TRUE, then assume more characters may be inserted
+     * at index.limit, and postpone processing to accomodate future incoming
+     * characters
+     * @param rollback if TRUE and if incremental is TRUE, then perform special
+     * incremental processing, as described above, and undo partial
+     * transliterations where necessary.  If incremental is FALSE then this
+     * parameter is ignored.
+     */
+    private void filteredTransliterate(Replaceable text,
+                                       Position index,
+                                       boolean incremental,
+                                       boolean rollback) {
+        // Short circuit path for transliterators with no filter in
+        // non-incremental mode.
+        if (filter == null && !rollback) {
+            handleTransliterate(text, index, incremental);
+            return;
+        }
+
+        //----------------------------------------------------------------------
+        // This method processes text in two groupings:
+        //
+        // RUNS -- A run is a contiguous group of characters which are contained
+        // in the filter for this transliterator (filter.contains(ch) == true).
+        // Text outside of runs may appear as context but it is not modified.
+        // The start and limit Position values are narrowed to each run.
+        //
+        // PASSES (incremental only) -- To make incremental mode work correctly,
+        // each run is broken up into n passes, where n is the length (in code
+        // points) of the run.  Each pass contains the first n characters.  If a
+        // pass is completely transliterated, it is committed, and further passes
+        // include characters after the committed text.  If a pass is blocked,
+        // and does not transliterate completely, then this method rolls back
+        // the changes made during the pass, extends the pass by one code point,
+        // and tries again.
+        //----------------------------------------------------------------------
+
+        // globalLimit is the limit value for the entire operation.  We
+        // set index.limit to the end of each unfiltered run before
+        // calling handleTransliterate(), so we need to maintain the real
+        // value of index.limit here.  After each transliteration, we
+        // update globalLimit for insertions or deletions that have
+        // happened.
+        int globalLimit = index.limit;
+
+        // If there is a non-null filter, then break the input text up.  Say the
+        // input text has the form:
+        //   xxxabcxxdefxx
+        // where 'x' represents a filtered character (filter.contains('x') ==
+        // false).  Then we break this up into:
+        //   xxxabc xxdef xx
+        // Each pass through the loop consumes a run of filtered
+        // characters (which are ignored) and a subsequent run of
+        // unfiltered characters (which are transliterated).
+
+        StringBuffer log = null;
+        if (DEBUG) {
+            log = new StringBuffer();
+        }
+
+        for (;;) {
+
+            if (filter != null) {
+                // Narrow the range to be transliterated to the first run
+                // of unfiltered characters at or after index.start.
+                
+                // Advance past filtered chars
+                int c;
+                while (index.start < globalLimit &&
+                       !filter.contains(c=text.char32At(index.start))) {
+                    index.start += UTF16.getCharCount(c);
+                }
+                
+                // Find the end of this run of unfiltered chars
+                index.limit = index.start;
+                while (index.limit < globalLimit &&
+                       filter.contains(c=text.char32At(index.limit))) {
+                    index.limit += UTF16.getCharCount(c);
+                }
+            }
+
+            // Check to see if the unfiltered run is empty.  This only
+            // happens at the end of the string when all the remaining
+            // characters are filtered.
+            if (index.start == index.limit) {
+                break;
+            }
+
+            // Is this run incremental?  If there is additional
+            // filtered text (if limit < globalLimit) then we pass in
+            // an incremental value of FALSE to force the subclass to
+            // complete the transliteration for this run.
+            boolean isIncrementalRun =
+                (index.limit < globalLimit ? false : incremental);
+
+            int delta;
+
+            // Implement rollback.  To understand the need for rollback,
+            // consider the following transliterator:
+            //
+            //  "t" is "a > A;"
+            //  "u" is "A > b;"
+            //  "v" is a compound of "t; NFD; u" with a filter [:Ll:]
+            //
+            // Now apply "v" to the input text "a".  The result is "b".  But if
+            // the transliteration is done incrementally, then the NFD holds
+            // things up after "t" has already transformed "a" to "A".  When
+            // finishTransliterate() is called, "A" is _not_ processed because
+            // it gets excluded by the [:Ll:] filter, and the end result is "A"
+            // -- incorrect.  The problem is that the filter is applied to a
+            // partially-transliterated result, when we only want it to apply to
+            // input text.  Although this example describes a compound
+            // transliterator containing NFD and a specific filter, it can
+            // happen with any transliterator which does a partial
+            // transformation in incremental mode into characters outside its
+            // filter.
+            //
+            // To handle this, when in incremental mode we supply characters to
+            // handleTransliterate() in several passes.  Each pass adds one more
+            // input character to the input text.  That is, for input "ABCD", we
+            // first try "A", then "AB", then "ABC", and finally "ABCD".  If at
+            // any point we block (upon return, start < limit) then we roll
+            // back.  If at any point we complete the run (upon return start ==
+            // limit) then we commit that run.
+
+            if (rollback && isIncrementalRun) {
+
+                if (DEBUG) {
+                    log.setLength(0);
+                    System.out.println("filteredTransliterate{"+getID()+"}i: IN=" +
+                                       Utility.formatInput(text, index));
+                }
+
+                int runStart = index.start;
+                int runLimit = index.limit;
+                int runLength =  runLimit - runStart;
+
+                // Make a rollback copy at the end of the string
+                int rollbackOrigin = text.length();
+                text.copy(runStart, runLimit, rollbackOrigin);
+
+                // Variables reflecting the commitment of completely
+                // transliterated text.  passStart is the runStart, advanced
+                // past committed text.  rollbackStart is the rollbackOrigin,
+                // advanced past rollback text that corresponds to committed
+                // text.
+                int passStart = runStart;
+                int rollbackStart = rollbackOrigin;
+
+                // The limit for each pass; we advance by one code point with
+                // each iteration.
+                int passLimit = index.start;
+
+                // Total length, in 16-bit code units, of uncommitted text.
+                // This is the length to be rolled back.
+                int uncommittedLength = 0;
+
+                // Total delta (change in length) for all passes
+                int totalDelta = 0;
+
+                // PASS MAIN LOOP -- Start with a single character, and extend
+                // the text by one character at a time.  Roll back partial
+                // transliterations and commit complete transliterations.
+                for (;;) {
+                    // Length of additional code point, either one or two
+                    int charLength =
+                        UTF16.getCharCount(text.char32At(passLimit));
+                    passLimit += charLength;
+                    if (passLimit > runLimit) {
+                        break;
+                    }
+                    uncommittedLength += charLength;
+
+                    index.limit = passLimit;
+
+                    if (DEBUG) {
+                        log.setLength(0);
+                        log.append("filteredTransliterate{"+getID()+"}i: ");
+                        Utility.formatInput(log, text, index);
+                    }
+
+                    // Delegate to subclass for actual transliteration.  Upon
+                    // return, start will be updated to point after the
+                    // transliterated text, and limit and contextLimit will be
+                    // adjusted for length changes.
+                    handleTransliterate(text, index, true);
+
+                    if (DEBUG) {
+                        log.append(" => ");
+                        Utility.formatInput(log, text, index);
+                    }
+
+                    delta = index.limit - passLimit; // change in length
+            
+                    // We failed to completely transliterate this pass.
+                    // Roll back the text.  Indices remain unchanged; reset
+                    // them where necessary.
+                    if (index.start != index.limit) {
+                        // Find the rollbackStart, adjusted for length changes
+                        // and the deletion of partially transliterated text.
+                        int rs = rollbackStart + delta - (index.limit - passStart);
+                    
+                        // Delete the partially transliterated text
+                        text.replace(passStart, index.limit, "");
+                    
+                        // Copy the rollback text back
+                        text.copy(rs, rs + uncommittedLength, passStart);
+                    
+                        // Restore indices to their original values
+                        index.start = passStart;
+                        index.limit = passLimit;
+                        index.contextLimit -= delta;
+
+                        if (DEBUG) {
+                            log.append(" (ROLLBACK)");
+                        }
+                    }
+
+                    // We did completely transliterate this pass.  Update the
+                    // commit indices to record how far we got.  Adjust indices
+                    // for length change.
+                    else {
+                        // Move the pass indices past the committed text.
+                        passStart = passLimit = index.start;
+
+                        // Adjust the rollbackStart for length changes and move
+                        // it past the committed text.  All characters we've
+                        // processed to this point are committed now, so zero
+                        // out the uncommittedLength.
+                        rollbackStart += delta + uncommittedLength;
+                        uncommittedLength = 0;
+
+                        // Adjust indices for length changes.
+                        runLimit += delta;
+                        totalDelta += delta;
+                    }
+
+                    if (DEBUG) {
+                        System.out.println(Utility.escape(log.toString()));
+                    }
+                }
+
+                // Adjust overall limit and rollbackOrigin for insertions and
+                // deletions.  Don't need to worry about contextLimit because
+                // handleTransliterate() maintains that.
+                rollbackOrigin += totalDelta;
+                globalLimit += totalDelta;
+
+                // Delete the rollback copy
+                text.replace(rollbackOrigin, rollbackOrigin + runLength, "");
+
+                // Move start past committed text
+                index.start = passStart;
+            }
+
+            else {
+                // Delegate to subclass for actual transliteration.
+                if (DEBUG) {
+                    log.setLength(0);
+                    log.append("filteredTransliterate{"+getID()+"}: ");
+                    Utility.formatInput(log, text, index);
+                }
+
+                int limit = index.limit;
+                handleTransliterate(text, index, isIncrementalRun);
+                delta = index.limit - limit; // change in length
+
+                if (DEBUG) {
+                    log.append(" => ");
+                    Utility.formatInput(log, text, index);
+                }
+
+                // In a properly written transliterator, start == limit after
+                // handleTransliterate() returns when incremental is false.
+                // Catch cases where the subclass doesn't do this, and throw
+                // an exception.  (Just pinning start to limit is a bad idea,
+                // because what's probably happening is that the subclass
+                // isn't transliterating all the way to the end, and it should
+                // in non-incremental mode.)
+                if (!isIncrementalRun && index.start != index.limit) {
+                    throw new RuntimeException("ERROR: Incomplete non-incremental transliteration by " + getID());
+                }
+
+                // Adjust overall limit for insertions/deletions.  Don't need
+                // to worry about contextLimit because handleTransliterate()
+                // maintains that.
+                globalLimit += delta;
+
+                if (DEBUG) {
+                    System.out.println(Utility.escape(log.toString()));
+                }
+            }
+
+            if (filter == null || isIncrementalRun) {
+                break;
+            }
+            
+            // If we did completely transliterate this
+            // run, then repeat with the next unfiltered run.
+        }
+
+        // Start is valid where it is.  Limit needs to be put back where
+        // it was, modulo adjustments for deletions/insertions.
+        index.limit = globalLimit;
+
+        if (DEBUG) {
+            System.out.println("filteredTransliterate{"+getID()+"}: OUT=" +
+                               Utility.formatInput(text, index));
+        }
+    }
+
+    /**
+     * Transliterate a substring of text, as specified by index, taking filters
+     * into account.  This method is for subclasses that need to delegate to
+     * another transliterator, such as CompoundTransliterator.
+     * @param text the text to be transliterated
+     * @param index the position indices
+     * @param incremental if TRUE, then assume more characters may be inserted
+     * at index.limit, and postpone processing to accomodate future incoming
+     * characters
+     */
+    protected void filteredTransliterate(Replaceable text,
+                                         Position index,
+                                         boolean incremental) {
+        filteredTransliterate(text, index, incremental, false);
+    }
+
+    /**
+     * Returns the length of the longest context required by this transliterator.
+     * This is <em>preceding</em> context.  The default value is zero, but
+     * subclasses can change this by calling <code>setMaximumContextLength()</code>.
+     * For example, if a transliterator translates "ddd" (where
+     * d is any digit) to "555" when preceded by "(ddd)", then the preceding
+     * context length is 5, the length of "(ddd)".
+     *
+     * @return The maximum number of preceding context characters this
+     * transliterator needs to examine
+     */
+    protected final int getMaximumContextLength() {
+        return maximumContextLength;
+    }
+
+    /**
+     * Method for subclasses to use to set the maximum context length.
+     * @see #getMaximumContextLength
+     */
+    protected void setMaximumContextLength(int a) {
+        if (a < 0) {
+            throw new IllegalArgumentException("Invalid context length " + a);
+        }
+        maximumContextLength = a;
+    }
+
+    /**
+     * Returns a programmatic identifier for this transliterator.
+     * If this identifier is passed to <code>getInstance()</code>, it
+     * will return this object, if it has been registered.
+     * @see #registerClass
+     * @see #getAvailableIDs
+     */
+    public final String getID() {
+        return ID;
+    }
+
+    /**
+     * Set the programmatic identifier for this transliterator.  Only
+     * for use by subclasses.
+     */
+    protected final void setID(String id) {
+        ID = id;
+    }
+
+    /**
+     * Returns a name for this transliterator that is appropriate for
+     * display to the user in the default locale.  See {@link
+     * #getDisplayName(String,Locale)} for details.
+     */
+    public final static String getDisplayName(String ID) {
+        return getDisplayName(ID, Locale.getDefault());
+    }
+
+    /**
+     * Returns a name for this transliterator that is appropriate for
+     * display to the user in the given locale.  This name is taken
+     * from the locale resource data in the standard manner of the
+     * <code>java.text</code> package.
+     *
+     * <p>If no localized names exist in the system resource bundles,
+     * a name is synthesized using a localized
+     * <code>MessageFormat</code> pattern from the resource data.  The
+     * arguments to this pattern are an integer followed by one or two
+     * strings.  The integer is the number of strings, either 1 or 2.
+     * The strings are formed by splitting the ID for this
+     * transliterator at the first '-'.  If there is no '-', then the
+     * entire ID forms the only string.
+     * @param inLocale the Locale in which the display name should be
+     * localized.
+     * @see java.text.MessageFormat
+     */
+    public static String getDisplayName(String id, Locale inLocale) {
+
+		// Resource bundle containing display name keys and the
+		// RB_RULE_BASED_IDS array.
+		//
+		//If we ever integrate this with the Sun JDK, the resource bundle
+        // root will change to sun.text.resources.LocaleElements
+
+        ResourceBundle bundle = ICULocaleData.getLocaleElements(inLocale);
+
+        // Normalize the ID
+        String stv[] = TransliteratorIDParser.IDtoSTV(id);
+        if (stv == null) {
+            // No target; malformed id
+            return "";
+        }
+        String ID = stv[0] + '-' + stv[1];
+        if (stv[2] != null && stv[2].length() > 0) {
+            ID = ID + '/' + stv[2];
+        }
+
+        // Use the registered display name, if any
+        String n = (String) displayNameCache.get(new CaseInsensitiveString(ID));
+        if (n != null) {
+            return n;
+        }
+
+        // Use display name for the entire transliterator, if it
+        // exists.
+        try {
+            return bundle.getString(RB_DISPLAY_NAME_PREFIX + ID);
+        } catch (MissingResourceException e) {}
+
+        try {
+            // Construct the formatter first; if getString() fails
+            // we'll exit the try block
+            MessageFormat format = new MessageFormat(
+                    bundle.getString(RB_DISPLAY_NAME_PATTERN));
+            // Construct the argument array
+            Object[] args = new Object[] { new Integer(2), stv[0], stv[1] };
+
+            // Use display names for the scripts, if they exist
+            for (int j=1; j<=2; ++j) {
+                try {
+                    args[j] = bundle.getString(RB_SCRIPT_DISPLAY_NAME_PREFIX +
+                                               (String) args[j]);
+                } catch (MissingResourceException e) {}
+            }
+
+            // Format it using the pattern in the resource
+            return (stv[2].length() > 0) ?
+                (format.format(args) + '/' + stv[2]) :
+                format.format(args);
+        } catch (MissingResourceException e2) {}
+
+        // We should not reach this point unless there is something
+        // wrong with the build or the RB_DISPLAY_NAME_PATTERN has
+        // been deleted from the root RB_LOCALE_ELEMENTS resource.
+        throw new RuntimeException();
+    }
+
+    /**
+     * Returns the filter used by this transliterator, or <tt>null</tt>
+     * if this transliterator uses no filter.
+     */
+    public final UnicodeFilter getFilter() {
+        return filter;
+    }
+
+    /**
+     * Changes the filter used by this transliterator.  If the filter
+     * is set to <tt>null</tt> then no filtering will occur.
+     *
+     * <p>Callers must take care if a transliterator is in use by
+     * multiple threads.  The filter should not be changed by one
+     * thread while another thread may be transliterating.
+     */
+    public void setFilter(UnicodeFilter filter) {
+        this.filter = filter;
+    }
+
+    public static final Transliterator getInstance(String ID) {
+        return getInstance(ID, FORWARD);
+    }
+
+    /**
+     * Returns a <code>Transliterator</code> object given its ID.
+     * The ID must be either a system transliterator ID or a ID registered
+     * using <code>registerClass()</code>.
+     *
+     * @param ID a valid ID, as enumerated by <code>getAvailableIDs()</code>
+     * @return A <code>Transliterator</code> object with the given ID
+     * @exception IllegalArgumentException if the given ID is invalid.
+     * @see #registerClass
+     * @see #getAvailableIDs
+     * @see #getID
+     */
+    public static Transliterator getInstance(String ID,
+                                             int dir) {
+        StringBuffer canonID = new StringBuffer();
+        Vector list = new Vector();
+        UnicodeSet[] globalFilter = new UnicodeSet[1];
+        if (!TransliteratorIDParser.parseCompoundID(ID, dir, canonID, list, globalFilter)) {
+            throw new IllegalArgumentException("Invalid ID " + ID);
+        }
+
+        TransliteratorIDParser.instantiateList(list, null, -1);
+
+        // assert(list.size() > 0);
+        Transliterator t = null;
+        switch (list.size()) {
+        case 1:
+            t = (Transliterator) list.elementAt(0);
+            break;
+        default:
+            t = new CompoundTransliterator(list);
+            break;
+        }
+        t.setID(canonID.toString());
+        if (globalFilter[0] != null) {
+            t.setFilter(globalFilter[0]);
+        }
+        return t;
+    }
+
+    /**
+     * Create a transliterator from a basic ID.  This is an ID
+     * containing only the forward direction source, target, and
+     * variant.
+     * @param id a basic ID of the form S-T or S-T/V.
+     * @param canonID canonical ID to apply to the result, or
+     * null to leave the ID unchanged
+     * @return a newly created Transliterator or null if the ID is
+     * invalid.
+     */
+    static Transliterator getBasicInstance(String id, String canonID) {
+        StringBuffer s = new StringBuffer();
+        Transliterator t = registry.get(id, s);
+        if (s.length() != 0) {
+            // assert(t==0);
+            // Instantiate an alias
+            t = getInstance(s.toString(), FORWARD);
+        }
+        if (t != null && canonID != null) {
+            t.setID(canonID);
+        }
+        return t;
+    }
+
+    /**
+     * Returns a <code>Transliterator</code> object constructed from
+     * the given rule string.  This will be a RuleBasedTransliterator,
+     * if the rule string contains only rules, or a
+     * CompoundTransliterator, if it contains ID blocks, or a
+     * NullTransliterator, if it contains ID blocks which parse as
+     * empty for the given direction.
+     */
+    public static final Transliterator createFromRules(String ID, String rules, int dir) {
+        Transliterator t = null;
+
+        TransliteratorParser parser = new TransliteratorParser();
+        parser.parse(rules, dir);
+
+        // NOTE: The logic here matches that in TransliteratorRegistry.
+        if (parser.idBlock.length() == 0) {
+            if (parser.data == null) {
+                // No idBlock, no data -- this is just an
+                // alias for Null
+                t = new NullTransliterator();
+            } else {
+                // No idBlock, data != 0 -- this is an
+                // ordinary RBT_DATA.
+                t = new RuleBasedTransliterator(ID, parser.data, null);
+            }
+        } else {
+            if (parser.data == null) {
+                // idBlock, no data -- this is an alias.  The ID has
+                // been munged from reverse into forward mode, if
+                // necessary, so instantiate the ID in the forward
+                // direction.
+                t = getInstance(parser.idBlock);
+                if (t != null) {
+                    t.setID(ID);
+                }
+            } else {
+                // idBlock and data -- this is a compound
+                // RBT
+                t = new RuleBasedTransliterator("_", parser.data, null);
+                t = new CompoundTransliterator(ID, parser.idBlock, parser.idSplitPoint,
+                                               t);
+                if (parser.compoundFilter != null) {
+                    t.setFilter(parser.compoundFilter);
+                }
+            }
+        }
+
+        return t;
+    }
+
+    public String toRules(boolean escapeUnprintable) {
+        return baseToRules(escapeUnprintable);
+    }
+
+    protected final String baseToRules(boolean escapeUnprintable) {
+        // The base class implementation of toRules munges the ID into
+        // the correct format.  That is: foo => ::foo
+        // KEEP in sync with rbt_pars
+        if (escapeUnprintable) {
+            StringBuffer rulesSource = new StringBuffer();
+            String id = getID();
+            for (int i=0; i<id.length();) {
+                int c = UTF16.charAt(id, i);
+                if (!Utility.escapeUnprintable(rulesSource, c)) {
+                    UTF16.append(rulesSource, c);
+                }
+                i += UTF16.getCharCount(c);
+            }
+            rulesSource.insert(0, "::");
+            rulesSource.append(ID_DELIM);
+            return rulesSource.toString();
+        }
+        return "::" + getID() + ID_DELIM;
+    }
+
+    /**
+     * Returns the set of all characters that may be modified in the
+     * input text by this Transliterator.  This incorporates this
+     * object's current filter; if the filter is changed, the return
+     * value of this function will change.  The default implementation
+     * returns an empty set.  Some subclasses may override {@link
+     * #handleGetSourceSet} to return a more precise result.  The
+     * return result is approximate in any case and is intended for
+     * use by tests, tools, or utilities.
+     * @see #getTargetSet
+     * @see #handleGetSourceSet
+     */
+    public final UnicodeSet getSourceSet() {
+        UnicodeSet set = handleGetSourceSet();
+        if (filter != null) {
+            UnicodeSet filterSet;
+            // Most, but not all filters will be UnicodeSets.  Optimize for
+            // the high-runner case.
+            try {
+                filterSet = (UnicodeSet) filter;
+            } catch (ClassCastException e) {
+                filterSet = new UnicodeSet();
+                filter.addMatchSetTo(filterSet);
+            }
+            set.retainAll(filterSet);
+        }
+        return set;
+    }
+
+    /**
+     * Framework method that returns the set of all characters that
+     * may be modified in the input text by this Transliterator,
+     * ignoring the effect of this object's filter.  The base class
+     * implementation returns the empty set.  Subclasses that wish to
+     * implement this should override this method.
+     * @return the set of characters that this transliterator may
+     * modify.  The set may be modified, so subclasses should return a
+     * newly-created object.
+     * @see #getSourceSet
+     * @see #getTargetSet
+     */
+    protected UnicodeSet handleGetSourceSet() {
+        return new UnicodeSet();
+    }
+
+    /**
+     * Returns the set of all characters that may be generated as
+     * replacement text by this transliterator.  The default
+     * implementation returns the empty set.  Some subclasses may
+     * override this method to return a more precise result.  The
+     * return result is approximate in any case and is intended for
+     * use by tests, tools, or utilities requiring such
+     * meta-information.
+     * @see #getTargetSet
+     */
+    public UnicodeSet getTargetSet() {
+        return new UnicodeSet();
+    }
+
+    /**
+     * Returns this transliterator's inverse.  See the class
+     * documentation for details.  This implementation simply inverts
+     * the two entities in the ID and attempts to retrieve the
+     * resulting transliterator.  That is, if <code>getID()</code>
+     * returns "A-B", then this method will return the result of
+     * <code>getInstance("B-A")</code>, or <code>null</code> if that
+     * call fails.
+     *
+     * <p>Subclasses with knowledge of their inverse may wish to
+     * override this method.
+     *
+     * @return a transliterator that is an inverse, not necessarily
+     * exact, of this transliterator, or <code>null</code> if no such
+     * transliterator is registered.
+     * @see #registerClass
+     */
+    public final Transliterator getInverse() {
+        return getInstance(ID, REVERSE);
+    }
+
+    /**
+     * Registers a subclass of <code>Transliterator</code> with the
+     * system.  This subclass must have a public constructor taking no
+     * arguments.  When that constructor is called, the resulting
+     * object must return the <code>ID</code> passed to this method if
+     * its <code>getID()</code> method is called.
+     *
+     * @param ID the result of <code>getID()</code> for this
+     * transliterator
+     * @param transClass a subclass of <code>Transliterator</code>
+     * @see #unregister
+     */
+    public static void registerClass(String ID, Class transClass, String displayName) {
+        registry.put(ID, transClass, true);
+        if (displayName != null) {
+            displayNameCache.put(new CaseInsensitiveString(ID), displayName);
+        }
+    }
+
+    /**
+     * Register a factory object with the given ID.  The factory
+     * method should return a new instance of the given transliterator.
+     * @param ID the ID of this transliterator
+     * @param factory the factory object
+     */
+    public static void registerFactory(String ID, Factory factory) {
+        registry.put(ID, factory, true);
+    }
+
+    /**
+     * Register a Transliterator object with the given ID.
+     * @param ID the ID of this transliterator
+     * @param trans the Transliterator object
+     */
+    public static void registerInstance(Transliterator trans) {
+        registry.put(trans.getID(), trans, true);
+    }
+
+    /**
+     * Register a Transliterator object with the given ID.
+     * @param ID the ID of this transliterator
+     * @param trans the Transliterator object
+     */
+    static void registerInstance(Transliterator trans, boolean visible) {
+        registry.put(trans.getID(), trans, visible);
+    }
+
+    /**
+     * Register two targets as being inverses of one another.  For
+     * example, calling registerSpecialInverse("NFC", "NFD", true) causes
+     * Transliterator to form the following inverse relationships:
+     *
+     * <pre>NFC => NFD
+     * Any-NFC => Any-NFD
+     * NFD => NFC
+     * Any-NFD => Any-NFC</pre>
+     *
+     * (Without the special inverse registration, the inverse of NFC
+     * would be NFC-Any.)  Note that NFD is shorthand for Any-NFD, but
+     * that the presence or absence of "Any-" is preserved.
+     *
+     * <p>The relationship is symmetrical; registering (a, b) is
+     * equivalent to registering (b, a).
+     *
+     * <p>The relevant IDs must still be registered separately as
+     * factories or classes.
+     *
+     * <p>Only the targets are specified.  Special inverses always
+     * have the form Any-Target1 <=> Any-Target2.  The target should
+     * have canonical casing (the casing desired to be produced when
+     * an inverse is formed) and should contain no whitespace or other
+     * extraneous characters.
+     *
+     * @param target the target against which to register the inverse
+     * @param inverseTarget the inverse of target, that is
+     * Any-target.getInverse() => Any-inverseTarget
+     * @param bidirectional if true, register the reverse relation
+     * as well, that is, Any-inverseTarget.getInverse() => Any-target
+     */
+    static void registerSpecialInverse(String target,
+                                       String inverseTarget,
+                                       boolean bidirectional) {
+        TransliteratorIDParser.registerSpecialInverse(target, inverseTarget, bidirectional);
+    }
+
+    /**
+     * Unregisters a transliterator or class.  This may be either
+     * a system transliterator or a user transliterator or class.
+     *
+     * @param ID the ID of the transliterator or class
+     * @see #registerClass
+     */
+    public static void unregister(String ID) {
+        displayNameCache.remove(new CaseInsensitiveString(ID));
+        registry.remove(ID);
+    }
+
+    /**
+     * Returns an enumeration over the programmatic names of registered
+     * <code>Transliterator</code> objects.  This includes both system
+     * transliterators and user transliterators registered using
+     * <code>registerClass()</code>.  The enumerated names may be
+     * passed to <code>getInstance()</code>.
+     *
+     * @return An <code>Enumeration</code> over <code>String</code> objects
+     * @see #getInstance
+     * @see #registerClass
+     */
+    public static final Enumeration getAvailableIDs() {
+        return registry.getAvailableIDs();
+    }
+
+    public static final Enumeration getAvailableSources() {
+        return registry.getAvailableSources();
+    }
+
+    public static final Enumeration getAvailableTargets(String source) {
+        return registry.getAvailableTargets(source);
+    }
+
+    public static final Enumeration getAvailableVariants(String source,
+                                                         String target) {
+        return registry.getAvailableVariants(source, target);
+    }
+
+    /**
+     * Method for subclasses to use to obtain a character in the given
+     * string, with filtering.  If the character at the given offset
+     * is excluded by this transliterator's filter, then U+FFFE is returned.
+     *
+     * <p><b>Note:</b> Most subclasses that implement
+     * handleTransliterator() will <em>not</em> want to use this
+     * method, since characters they see are already filtered.
+     *
+     * @deprecated the new architecture provides filtering at the top
+     * level.  This method will be removed Dec 31 2001.
+     */
+    protected char filteredCharAt(Replaceable text, int i) {
+        char c;
+        UnicodeFilter filter = getFilter();
+        return (filter == null) ? text.charAt(i) :
+            (filter.contains(c = text.charAt(i)) ? c : '\uFFFE');
+    }
+
+    static {
+        registry = new TransliteratorRegistry();
+
+        // The display name cache starts out empty
+        displayNameCache = new Hashtable();
+
+        // Read the index file and populate the registry.
+        // Each line of the index file is either blank, a '#' comment,
+        // or a colon-delimited line.  In the latter case the first
+        // field is the ID being defined.  The second field is one of
+        // three strings: "file", "internal", or "alias".  Remaining
+        // fields vary according the value fo the second field.  See
+        // the index file itself for further documentation.
+        ResourceReader r = new ResourceReader("Transliterator_index.txt");
+        for (;;) {
+            String line = null;
+            try {
+                line = r.readLine();
+            } catch (java.io.IOException e) {
+                throw new RuntimeException("Can't read Transliterator_index.txt");
+            }
+            if (line == null) {
+                break;
+            }
+            try {
+                // Skip over whitespace
+                int pos = 0;
+                while (pos < line.length() &&
+                       UCharacterProperty.isRuleWhiteSpace(line.charAt(pos))) {
+                    ++pos;
+                }
+                // Ignore blank lines and comments
+                if (pos == line.length() || line.charAt(pos) == '#') {
+                    continue;
+                }
+                // Parse colon-delimited line
+                int colon = line.indexOf(':', pos);
+                String ID = line.substring(pos, colon);
+                pos = colon+1;
+                colon = line.indexOf(':', pos);
+                String type = line.substring(pos, colon);
+                pos = colon+1;
+
+                if (type.equals("file") || type.equals("internal")) {
+                    // Rest of line is <resource>:<encoding>:<direction>
+                    //                pos       colon      c2
+                    colon = line.indexOf(':', pos);
+                    int c2 = line.indexOf(':', colon+1);
+                    int dir;
+                    switch (line.charAt(c2+1)) {
+                    case 'F':
+                        dir = FORWARD;
+                        break;
+                    case 'R':
+                        dir = REVERSE;
+                        break;
+                    default:
+                        throw new RuntimeException("Can't parse line: " + line);
+                    }
+                    registry.put(ID,
+                                 line.substring(pos, colon), // resource
+                                 line.substring(colon+1, c2), // encoding
+                                 dir,
+                                 !type.equals("internal"));
+                } else if (type.equals("alias")) {
+                    // Rest of line is the <getInstanceArg>
+                    registry.put(ID, line.substring(pos), true);
+                } else {
+                    // Unknown type
+                    throw new RuntimeException("Can't parse line: " + line);
+                }
+            } catch (StringIndexOutOfBoundsException e) {
+                throw new RuntimeException("Can't parse line: " + line);
+            }
+        }
+
+        registerSpecialInverse(NullTransliterator.SHORT_ID, NullTransliterator.SHORT_ID, false);
+
+        // Register non-rule-based transliterators
+        registerClass(NullTransliterator._ID,
+                      NullTransliterator.class, null);
+        RemoveTransliterator.register();
+        EscapeTransliterator.register();
+        UnescapeTransliterator.register();
+        LowercaseTransliterator.register();
+        UppercaseTransliterator.register();
+        TitlecaseTransliterator.register();
+        UnicodeNameTransliterator.register();
+        NameUnicodeTransliterator.register();
+        NormalizationTransliterator.register();
+        BreakTransliterator.register();
+        AnyTransliterator.register(); // do this last!
+    }
+
+    /**
+     * The factory interface for transliterators.  Transliterator
+     * subclasses can register factory objects for IDs using the
+     * registerFactory() method of Transliterator.  When invoked, the
+     * factory object will be passed the ID being instantiated.  This
+     * makes it possible to register one factory method to more than
+     * one ID, or for a factory method to parameterize its result
+     * based on the variant.
+     */
+    public static interface Factory {
+        Transliterator getInstance(String ID);
+    }
+}
diff --git a/src/com/ibm/icu/text/TransliteratorIDParser.java b/src/com/ibm/icu/text/TransliteratorIDParser.java
new file mode 100755
index 0000000..4952f7d
--- /dev/null
+++ b/src/com/ibm/icu/text/TransliteratorIDParser.java
@@ -0,0 +1,792 @@
+/*
+**********************************************************************
+*   Copyright (c) 2002, International Business Machines Corporation
+*   and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   01/14/2002  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.util.CaseInsensitiveString;
+import com.ibm.icu.impl.Utility;
+import java.text.ParsePosition;
+import java.util.Hashtable;
+import java.util.Vector;
+
+/**
+ * Parsing component for transliterator IDs.  This class contains only
+ * static members; it cannot be instantiated.  Methods in this class
+ * parse various ID formats, including the following:
+ *
+ * A basic ID, which contains source, target, and variant, but no
+ * filter and no explicit inverse.  Examples include
+ * "Latin-Greek/UNGEGN" and "Null".
+ *
+ * A single ID, which is a basic ID plus optional filter and optional
+ * explicit inverse.  Examples include "[a-zA-Z] Latin-Greek" and
+ * "Lower (Upper)".
+ *
+ * A compound ID, which is a sequence of one or more single IDs,
+ * separated by semicolons, with optional forward and reverse global
+ * filters.  The global filters are UnicodeSet patterns prepended or
+ * appended to the IDs, separated by semicolons.  An appended filter
+ * must be enclosed in parentheses and applies in the reverse
+ * direction.
+ *
+ * @author Alan Liu
+ */
+class TransliteratorIDParser {
+
+    private static final char ID_DELIM = ';';
+
+    private static final char TARGET_SEP = '-';
+
+    private static final char VARIANT_SEP = '/';
+
+    private static final char OPEN_REV = '(';
+
+    private static final char CLOSE_REV = ')';
+
+    private static final String ANY = "Any";
+
+    private static final int FORWARD = Transliterator.FORWARD;
+
+    private static final int REVERSE = Transliterator.REVERSE;
+
+    private static final Hashtable SPECIAL_INVERSES = new Hashtable();
+
+    /**
+     * A structure containing the parsed data of a filtered ID, that
+     * is, a basic ID optionally with a filter.
+     *
+     * 'source' and 'target' will always be non-null.  The 'variant'
+     * will be non-null only if a non-empty variant was parsed.
+     *
+     * 'sawSource' is true if there was an explicit source in the
+     * parsed id.  If there was no explicit source, then an implied
+     * source of ANY is returned and 'sawSource' is set to false.
+     * 
+     * 'filter' is the parsed filter pattern, or null if there was no
+     * filter.
+     */
+    private static class Specs {
+        public String source; // not null
+        public String target; // not null
+        public String variant; // may be null
+        public String filter; // may be null
+        public boolean sawSource;
+        Specs(String s, String t, String v, boolean sawS, String f) {
+            source = s;
+            target = t;
+            variant = v;
+            sawSource = sawS;
+            filter = f;
+        }
+    }
+
+    /**
+     * A structure containing the canonicalized data of a filtered ID,
+     * that is, a basic ID optionally with a filter.
+     *
+     * 'canonID' is always non-null.  It may be the empty string "".
+     * It is the id that should be assigned to the created
+     * transliterator.  It _cannot_ be instantiated directly.
+     *
+     * 'basicID' is always non-null and non-empty.  It is always of
+     * the form S-T or S-T/V.  It is designed to be fed to low-level
+     * instantiation code that only understands these two formats.
+     *
+     * 'filter' may be null, if there is none, or non-null and
+     * non-empty.
+     */
+    public static class SingleID {
+        public String canonID;
+        public String basicID;
+        public String filter;
+        SingleID(String c, String b, String f) {
+            canonID = c;
+            basicID = b;
+            filter = f;
+        }
+        SingleID(String c, String b) {
+            this(c, b, null);
+        }
+        Transliterator getInstance() {
+            Transliterator t;
+            if (basicID == null || basicID.length() == 0) {
+                t = Transliterator.getBasicInstance("Any-Null", canonID);
+            } else {
+                t = Transliterator.getBasicInstance(basicID, canonID);
+            }
+            if (t != null) {
+                if (filter != null) {
+                    t.setFilter(new UnicodeSet(filter));
+                }
+            }
+            return t;
+        }
+    }
+
+    /**
+     * Parse a filter ID, that is, an ID of the general form
+     * "[f1] s1-t1/v1", with the filters optional, and the variants optional.
+     * @param id the id to be parsed
+     * @param pos INPUT-OUTPUT parameter.  On input, the position of
+     * the first character to parse.  On output, the position after
+     * the last character parsed.
+     * @return a SingleID object or null if the parse fails
+     */
+    public static SingleID parseFilterID(String id, int[] pos) {
+
+        int start = pos[0];
+        Specs specs = parseFilterID(id, pos, true);
+        if (specs == null) {
+            pos[0] = start;
+            return null;
+        }
+
+        // Assemble return results
+        SingleID single = specsToID(specs, FORWARD);
+        single.filter = specs.filter;
+        return single;
+    }
+
+    /**
+     * Parse a single ID, that is, an ID of the general form
+     * "[f1] s1-t1/v1 ([f2] s2-t3/v2)", with the parenthesized element
+     * optional, the filters optional, and the variants optional.
+     * @param id the id to be parsed
+     * @param pos INPUT-OUTPUT parameter.  On input, the position of
+     * the first character to parse.  On output, the position after
+     * the last character parsed.
+     * @param dir the direction.  If the direction is REVERSE then the
+     * SingleID is constructed for the reverse direction.
+     * @return a SingleID object or null
+     */
+    public static SingleID parseSingleID(String id, int[] pos, int dir) {
+
+        int start = pos[0];
+
+        // The ID will be of the form A, A(), A(B), or (B), where
+        // A and B are filter IDs.
+        Specs specsA = null;
+        Specs specsB = null;
+        boolean sawParen = false;
+
+        // On the first pass, look for (B) or ().  If this fails, then
+        // on the second pass, look for A, A(B), or A().
+        for (int pass=1; pass<=2; ++pass) {
+            if (pass == 2) {
+                specsA = parseFilterID(id, pos, true);
+                if (specsA == null) {
+                    pos[0] = start;
+                    return null;
+                }
+            }
+            if (Utility.parseChar(id, pos, OPEN_REV)) {
+                sawParen = true;
+                if (!Utility.parseChar(id, pos, CLOSE_REV)) {
+                    specsB = parseFilterID(id, pos, true);
+                    // Must close with a ')'
+                    if (specsB == null || !Utility.parseChar(id, pos, CLOSE_REV)) {
+                        pos[0] = start;
+                        return null;
+                    }
+                }
+                break;
+            }
+        }
+
+        // Assemble return results
+        SingleID single;
+        if (sawParen) {
+            if (dir == FORWARD) {
+                single = specsToID(specsA, FORWARD);
+                single.canonID = single.canonID +
+                    OPEN_REV + specsToID(specsB, FORWARD).canonID + CLOSE_REV;
+                if (specsA != null) {
+                    single.filter = specsA.filter;
+                }
+            } else {
+                single = specsToID(specsB, FORWARD);
+                single.canonID = single.canonID +
+                    OPEN_REV + specsToID(specsA, FORWARD).canonID + CLOSE_REV;
+                if (specsB != null) {
+                    single.filter = specsB.filter;
+                }
+            }
+        } else {
+            // assert(specsA != null);
+            if (dir == FORWARD) {
+                single = specsToID(specsA, FORWARD);
+            } else {
+                single = specsToSpecialInverse(specsA);
+                if (single == null) {
+                    single = specsToID(specsA, REVERSE);
+                }
+            }
+            single.filter = specsA.filter;
+        }
+
+        return single;
+    }
+
+    /**
+     * Parse a global filter of the form "[f]" or "([f])", depending
+     * on 'withParens'.
+     * @param id the pattern the parse
+     * @param pos INPUT-OUTPUT parameter.  On input, the position of
+     * the first character to parse.  On output, the position after
+     * the last character parsed.
+     * @param dir the direction.
+     * @param withParens INPUT-OUTPUT parameter.  On entry, if
+     * withParens[0] is 0, then parens are disallowed.  If it is 1,
+     * then parens are requires.  If it is -1, then parens are
+     * optional, and the return result will be set to 0 or 1.
+     * @param canonID OUTPUT parameter.  The pattern for the filter
+     * added to the canonID, either at the end, if dir is FORWARD, or
+     * at the start, if dir is REVERSE.  The pattern will be enclosed
+     * in parentheses if appropriate, and will be suffixed with an
+     * ID_DELIM character.  May be null.
+     * @return a UnicodeSet object or null.  A non-null results
+     * indicates a successful parse, regardless of whether the filter
+     * applies to the given direction.  The caller should discard it
+     * if withParens != (dir == REVERSE).
+     */
+    public static UnicodeSet parseGlobalFilter(String id, int[] pos, int dir,
+                                               int[] withParens,
+                                               StringBuffer canonID) {
+        UnicodeSet filter = null;
+        int start = pos[0];
+
+        if (withParens[0] == -1) {
+            withParens[0] = Utility.parseChar(id, pos, OPEN_REV) ? 1 : 0;
+        } else if (withParens[0] == 1) {
+            if (!Utility.parseChar(id, pos, OPEN_REV)) {
+                pos[0] = start;
+                return null;
+            }
+        }
+        
+        Utility.skipWhitespace(id, pos);
+
+        if (UnicodeSet.resemblesPattern(id, pos[0])) {
+            ParsePosition ppos = new ParsePosition(pos[0]);
+            try {
+                filter = new UnicodeSet(id, ppos, null);
+            } catch (IllegalArgumentException e) {
+                pos[0] = start;
+                return null;
+            }
+
+            String pattern = id.substring(pos[0], ppos.getIndex());
+            pos[0] = ppos.getIndex();
+
+            if (withParens[0] == 1 && !Utility.parseChar(id, pos, CLOSE_REV)) {
+                pos[0] = start;
+                return null;
+            }
+
+            // In the forward direction, append the pattern to the
+            // canonID.  In the reverse, insert it at zero, and invert
+            // the presence of parens ("A" <-> "(A)").
+            if (canonID != null) {
+                if (dir == FORWARD) {
+                    if (withParens[0] == 1) {
+                        pattern = String.valueOf(OPEN_REV) + pattern + CLOSE_REV;
+                    }
+                    canonID.append(pattern + ID_DELIM);
+                } else {
+                    if (withParens[0] == 0) {
+                        pattern = String.valueOf(OPEN_REV) + pattern + CLOSE_REV;
+                    }
+                    canonID.insert(0, pattern + ID_DELIM);
+                }
+            }
+        }
+
+        return filter;
+    }
+
+    /**
+     * Parse a compound ID, consisting of an optional forward global
+     * filter, a separator, one or more single IDs delimited by
+     * separators, an an optional reverse global filter.  The
+     * separator is a semicolon.  The global filters are UnicodeSet
+     * patterns.  The reverse global filter must be enclosed in
+     * parentheses.
+     * @param id the pattern the parse
+     * @param dir the direction.
+     * @param canonID OUTPUT parameter that receives the canonical ID,
+     * consisting of canonical IDs for all elements, as returned by
+     * parseSingleID(), separated by semicolons.  Previous contents
+     * are discarded.
+     * @param list OUTPUT parameter that receives a list of SingleID
+     * objects representing the parsed IDs.  Previous contents are
+     * discarded.
+     * @param globalFilter OUTPUT parameter that receives a pointer to
+     * a newly created global filter for this ID in this direction, or
+     * null if there is none.
+     * @return true if the parse succeeds, that is, if the entire
+     * id is consumed without syntax error.
+     */
+    public static boolean parseCompoundID(String id, int dir,
+                                          StringBuffer canonID,
+                                          Vector list,
+                                          UnicodeSet[] globalFilter) {
+        int[] pos = new int[] { 0 };
+        int[] withParens = new int[1];
+        list.removeAllElements();
+        UnicodeSet filter;
+        globalFilter[0] = null;
+        canonID.setLength(0);
+
+        // Parse leading global filter, if any
+        withParens[0] = 0; // parens disallowed
+        filter = parseGlobalFilter(id, pos, dir, withParens, canonID);
+        if (filter != null) {
+            if (!Utility.parseChar(id, pos, ID_DELIM)) {
+                // Not a global filter; backup and resume
+                canonID.setLength(0);
+                pos[0] = 0;
+            }
+            if (dir == FORWARD) {
+                globalFilter[0] = filter;
+            }
+        }
+
+        boolean sawDelimiter = true;
+        for (;;) {
+            SingleID single = parseSingleID(id, pos, dir);
+            if (single == null) {
+                break;
+            }
+            if (dir == FORWARD) {
+                list.addElement(single);
+            } else {
+                list.insertElementAt(single, 0);
+            }
+            if (!Utility.parseChar(id, pos, ID_DELIM)) {
+                sawDelimiter = false;
+                break;
+            }
+        }
+
+        if (list.size() == 0) {
+            return false;
+        }
+
+        // Construct canonical ID
+        for (int i=0; i<list.size(); ++i) {
+            SingleID single = (SingleID) list.elementAt(i);
+            canonID.append(single.canonID);
+            if (i != (list.size()-1)) {
+                canonID.append(ID_DELIM);
+            }
+        }
+
+        // Parse trailing global filter, if any, and only if we saw
+        // a trailing delimiter after the IDs.
+        if (sawDelimiter) {
+            withParens[0] = 1; // parens required
+            filter = parseGlobalFilter(id, pos, dir, withParens, canonID);
+            if (filter != null) {
+                // Don't require trailing ';', but parse it if present
+                Utility.parseChar(id, pos, ID_DELIM);
+                
+                if (dir == REVERSE) {
+                    globalFilter[0] = filter;
+                }
+            }
+        }
+
+        // Trailing unparsed text is a syntax error
+        Utility.skipWhitespace(id, pos[0]);
+        if (pos[0] != id.length()) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Convert the elements of the 'list' vector, which are SingleID
+     * objects, into actual Transliterator objects.  In the course of
+     * this, some (or all) entries may be removed.  If all entries
+     * are removed, the Null transliterator will be added.
+     *
+     * Delete entries with empty basicIDs; these are generated by
+     * elements like "(A)" in the forward direction, or "A()" in
+     * the reverse.  THIS MAY RESULT IN AN EMPTY VECTOR.  Convert
+     * SingleID entries to actual transliterators.
+     *
+     * Also, optionally, insert the given transliterator at the given
+     * position.  This effectively happens before anything else.
+     *
+     * @param list vector of SingleID objects.  On exit, vector
+     * of one or more Transliterators.
+     * @param insert Transliterator to insert, or null if none.
+     * @param insertIndex index from 0..list.size()-1, at which
+     * to place 'insert', or -1 if none.
+     * @return new value of insertIndex.  The index will shift if
+     * there are empty items, like "(Lower)", with indices less than
+     * insertIndex.
+     */
+    public static int instantiateList(Vector list,
+                                      Transliterator insert,
+                                      int insertIndex) {
+        Transliterator t;
+        for (int i=0; i<=list.size(); ) { // [sic]: i<=list.size()
+            if (insertIndex == i) {
+                list.insertElementAt(insert, i++);
+                continue;
+            }
+            
+            // We run the loop too long by one, so we can
+            // do an insert after the last element
+            if (i==list.size()) {
+                break;
+            }
+            
+            SingleID single = (SingleID) list.elementAt(i);
+            if (single.basicID.length() == 0) {
+                list.removeElementAt(i);
+                if (insertIndex > i) {
+                    --insertIndex;
+                }
+            } else {
+                t = single.getInstance();
+                if (t == null) {
+                    throw new IllegalArgumentException("Illegal ID " + single.canonID);
+                }
+                list.setElementAt(t, i);
+                ++i;
+            }
+        }
+        
+        // An empty list is equivalent to a Null transliterator.
+        if (list.size() == 0) {
+            t = Transliterator.getBasicInstance("Any-Null", null);
+            if (t == null) {
+                // Should never happen
+                throw new IllegalArgumentException("Internal error; cannot instantiate Any-Null");
+            }
+            list.addElement(t);
+        }
+
+        return insertIndex;
+    }
+
+    /**
+     * Parse an ID into pieces.  Take IDs of the form T, T/V, S-T,
+     * S-T/V, or S/V-T.  If the source is missing, return a source of
+     * ANY.
+     * @param id the id string, in any of several forms
+     * @return an array of 4 strings: source, target, variant, and
+     * isSourcePresent.  If the source is not present, ANY will be
+     * given as the source, and isSourcePresent will be null.  Otherwise
+     * isSourcePresent will be non-null.  The target may be empty if the
+     * id is not well-formed.  The variant may be empty.
+     */
+    public static String[] IDtoSTV(String id) {
+        String source = ANY;
+        String target = null;
+        String variant = "";
+        
+        int sep = id.indexOf(TARGET_SEP);
+        int var = id.indexOf(VARIANT_SEP);
+        if (var < 0) {
+            var = id.length();
+        }
+        boolean isSourcePresent = false;
+        
+        if (sep < 0) {
+            // Form: T/V or T (or /V)
+            target = id.substring(0, var);
+            variant = id.substring(var);
+        } else if (sep < var) {
+            // Form: S-T/V or S-T (or -T/V or -T)
+            if (sep > 0) {
+                source = id.substring(0, sep);
+              isSourcePresent = true;
+            }
+            target = id.substring(++sep, var);
+            variant = id.substring(var);
+        } else {
+            // Form: (S/V-T or /V-T)
+            if (var > 0) {
+                source = id.substring(0, var);
+                isSourcePresent = true;
+            }
+            variant = id.substring(var, sep++);
+            target = id.substring(sep);
+        }
+
+        if (variant.length() > 0) {
+            variant = variant.substring(1);
+        }
+        
+        return new String[] { source, target, variant,
+                              isSourcePresent ? "" : null };
+    }
+
+    /**
+     * Given source, target, and variant strings, concatenate them into a
+     * full ID.  If the source is empty, then "Any" will be used for the
+     * source, so the ID will always be of the form s-t/v or s-t.
+     */
+    public static String STVtoID(String source,
+                                 String target,
+                                 String variant) {
+        StringBuffer id = new StringBuffer(source);
+        if (id.length() == 0) {
+            id.append(ANY);
+        }
+        id.append(TARGET_SEP).append(target);
+        if (variant != null && variant.length() != 0) {
+            id.append(VARIANT_SEP).append(variant);
+        }
+        return id.toString();
+    }
+
+    /**
+     * Register two targets as being inverses of one another.  For
+     * example, calling registerSpecialInverse("NFC", "NFD", true) causes
+     * Transliterator to form the following inverse relationships:
+     *
+     * <pre>NFC => NFD
+     * Any-NFC => Any-NFD
+     * NFD => NFC
+     * Any-NFD => Any-NFC</pre>
+     *
+     * (Without the special inverse registration, the inverse of NFC
+     * would be NFC-Any.)  Note that NFD is shorthand for Any-NFD, but
+     * that the presence or absence of "Any-" is preserved.
+     *
+     * <p>The relationship is symmetrical; registering (a, b) is
+     * equivalent to registering (b, a).
+     *
+     * <p>The relevant IDs must still be registered separately as
+     * factories or classes.
+     *
+     * <p>Only the targets are specified.  Special inverses always
+     * have the form Any-Target1 <=> Any-Target2.  The target should
+     * have canonical casing (the casing desired to be produced when
+     * an inverse is formed) and should contain no whitespace or other
+     * extraneous characters.
+     *
+     * @param target the target against which to register the inverse
+     * @param inverseTarget the inverse of target, that is
+     * Any-target.getInverse() => Any-inverseTarget
+     * @param bidirectional if true, register the reverse relation
+     * as well, that is, Any-inverseTarget.getInverse() => Any-target
+     */
+    public static void registerSpecialInverse(String target,
+                                              String inverseTarget,
+                                              boolean bidirectional) {
+        SPECIAL_INVERSES.put(new CaseInsensitiveString(target), inverseTarget);
+        if (bidirectional && !target.equalsIgnoreCase(inverseTarget)) {
+            SPECIAL_INVERSES.put(new CaseInsensitiveString(inverseTarget), target);
+        }
+    }
+
+    //----------------------------------------------------------------
+    // Private implementation
+    //----------------------------------------------------------------
+
+    /**
+     * Parse an ID into component pieces.  Take IDs of the form T,
+     * T/V, S-T, S-T/V, or S/V-T.  If the source is missing, return a
+     * source of ANY.
+     * @param id the id string, in any of several forms
+     * @param pos INPUT-OUTPUT parameter.  On input, pos[0] is the
+     * offset of the first character to parse in id.  On output,
+     * pos[0] is the offset after the last parsed character.  If the
+     * parse failed, pos[0] will be unchanged.
+     * @param allowFilter if true, a UnicodeSet pattern is allowed
+     * at any location between specs or delimiters, and is returned
+     * as the fifth string in the array.
+     * @return a Specs object, or null if the parse failed.  If
+     * neither source nor target was seen in the parsed id, then the
+     * parse fails.  If allowFilter is true, then the parsed filter
+     * pattern is returned in the Specs object, otherwise the returned
+     * filter reference is null.  If the parse fails for any reason
+     * null is returned.
+     */
+    private static Specs parseFilterID(String id, int[] pos,
+                                       boolean allowFilter) {
+        String first = null;
+        String source = null;
+        String target = null;
+        String variant = null;
+        String filter = null;
+        char delimiter = 0;
+        int specCount = 0;
+        int start = pos[0];
+
+        // This loop parses one of the following things with each
+        // pass: a filter, a delimiter character (either '-' or '/'),
+        // or a spec (source, target, or variant).
+        for (;;) {
+            Utility.skipWhitespace(id, pos);
+            if (pos[0] == id.length()) {
+                break;
+            }
+
+            // Parse filters
+            if (allowFilter && filter == null &&
+                UnicodeSet.resemblesPattern(id, pos[0])) {
+
+                ParsePosition ppos = new ParsePosition(pos[0]);
+                UnicodeSet set = new UnicodeSet(id, ppos, null);
+                filter = id.substring(pos[0], ppos.getIndex());
+                pos[0] = ppos.getIndex();
+                continue;
+            }
+
+            if (delimiter == 0) {
+                char c = id.charAt(pos[0]);
+                if ((c == TARGET_SEP && target == null) ||
+                    (c == VARIANT_SEP && variant == null)) {
+                    delimiter = c;
+                    ++pos[0];
+                    continue;
+                }
+            }
+
+            // We are about to try to parse a spec with no delimiter
+            // when we can no longer do so (we can only do so at the
+            // start); break.
+            if (delimiter == 0 && specCount > 0) {
+                break;
+            }
+
+            String spec = Utility.parseUnicodeIdentifier(id, pos);
+            if (spec == null) {
+                // Note that if there was a trailing delimiter, we
+                // consume it.  So Foo-, Foo/, Foo-Bar/, and Foo/Bar-
+                // are legal.
+                break;
+            }
+
+            switch (delimiter) {
+            case 0:
+                first = spec;
+                break;
+            case TARGET_SEP:
+                target = spec;
+                break;
+            case VARIANT_SEP:
+                variant = spec;
+                break;
+            }
+            ++specCount;
+            delimiter = 0;
+        }
+
+        // A spec with no prior character is either source or target,
+        // depending on whether an explicit "-target" was seen.
+        if (first != null) {
+            if (target == null) {
+                target = first;
+            } else {
+                source = first;
+            }
+        }
+
+        // Must have either source or target
+        if (source == null && target == null) {
+            pos[0] = start;
+            return null;
+        }
+
+        // Empty source or target defaults to ANY
+        boolean sawSource = true;
+        if (source == null) {
+            source = ANY;
+            sawSource = false;
+        }
+        if (target == null) {
+            target = ANY;
+        }
+
+        return new Specs(source, target, variant, sawSource, filter);
+    }
+
+    /**
+     * Givens a Spec object, convert it to a SingleID object.  The
+     * Spec object is a more unprocessed parse result.  The SingleID
+     * object contains information about canonical and basic IDs.
+     * @return a SingleID; never returns null.  Returned object always
+     * has 'filter' field of null.
+     */
+    private static SingleID specsToID(Specs specs, int dir) {
+        String canonID = "";
+        String basicID = "";
+        String basicPrefix = "";
+        if (specs != null) {
+            StringBuffer buf = new StringBuffer();
+            if (dir == FORWARD) {
+                if (specs.sawSource) {
+                    buf.append(specs.source).append(TARGET_SEP);
+                } else {
+                    basicPrefix = specs.source + TARGET_SEP;
+                }
+                buf.append(specs.target);
+            } else {
+                buf.append(specs.target).append(TARGET_SEP).append(specs.source);
+            }
+            if (specs.variant != null) {
+                buf.append(VARIANT_SEP).append(specs.variant);
+            }
+            basicID = basicPrefix + buf.toString();
+            if (specs.filter != null) {
+                buf.insert(0, specs.filter);
+            }
+            canonID = buf.toString();
+        }
+        return new SingleID(canonID, basicID);
+    }
+
+    /**
+     * Given a Specs object, return a SingleID representing the
+     * special inverse of that ID.  If there is no special inverse
+     * then return null.
+     * @return a SingleID or null.  Returned object always has
+     * 'filter' field of null.
+     */
+    private static SingleID specsToSpecialInverse(Specs specs) {
+        if (!specs.source.equalsIgnoreCase(ANY)) {
+            return null;
+        }
+        String inverseTarget = (String) SPECIAL_INVERSES.get(
+            new CaseInsensitiveString(specs.target));
+        if (inverseTarget != null) {
+            // If the original ID contained "Any-" then make the
+            // special inverse "Any-Foo"; otherwise make it "Foo".
+            // So "Any-NFC" => "Any-NFD" but "NFC" => "NFD".
+            StringBuffer buf = new StringBuffer();
+            if (specs.filter != null) {
+                buf.append(specs.filter);
+            }
+            if (specs.sawSource) {
+                buf.append(ANY).append(TARGET_SEP);
+            }
+            buf.append(inverseTarget);
+
+            String basicID = ANY + TARGET_SEP + inverseTarget;
+
+            if (specs.variant != null) {
+                buf.append(VARIANT_SEP).append(specs.variant);
+                basicID = basicID + VARIANT_SEP + specs.variant;
+            }
+            return new SingleID(buf.toString(), basicID);
+        }
+        return null;
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/TransliteratorParser.java b/src/com/ibm/icu/text/TransliteratorParser.java
new file mode 100755
index 0000000..2120679
--- /dev/null
+++ b/src/com/ibm/icu/text/TransliteratorParser.java
@@ -0,0 +1,1485 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/TransliteratorParser.java,v $
+* $Date: 2002/07/26 21:12:36 $
+* $Revision: 1.23 $
+**********************************************************************
+*/
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.data.ResourceReader;
+import com.ibm.icu.impl.Utility;
+import java.util.Stack;
+import java.util.Vector;
+import java.text.ParsePosition;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.impl.UCharacterProperty;
+
+class TransliteratorParser {
+
+    //----------------------------------------------------------------------
+    // Data members
+    //----------------------------------------------------------------------
+
+    /**
+     * PUBLIC data member containing the parsed data object, or null if
+     * there were no rules.
+     */
+    public RuleBasedTransliterator.Data data;
+
+    /**
+     * PUBLIC data member.
+     * The block of ::IDs, both at the top and at the bottom.
+     * Inserted into these may be additional rules at the
+     * idSplitPoint.
+     */
+    public String idBlock;
+
+    /**
+     * PUBLIC data member.
+     * In a compound RBT, the index at which the RBT rules are
+     * inserted into the ID block.  Index 0 means before any IDs
+     * in the block.  Index idBlock.length() means after all IDs
+     * in the block.  Index is a string index.
+     */
+    public int idSplitPoint;
+
+    /**
+     * PUBLIC data member containing the parsed compound filter, if any.
+     */
+    public UnicodeSet compoundFilter;
+
+
+    // The number of rules parsed.  This tells us if there were
+    // any actual transliterator rules, or if there were just ::ID
+    // block IDs.
+    private int ruleCount;
+
+    private int direction;
+
+    /**
+     * Temporary symbol table used during parsing.
+     */
+    private ParseData parseData;
+
+    /**
+     * Temporary vector of set variables.  When parsing is complete, this
+     * is copied into the array data.variables.  As with data.variables,
+     * element 0 corresponds to character data.variablesBase.
+     */
+    private Vector variablesVector;
+
+    /**
+     * String of standins for segments.  Used during the parsing of a single
+     * rule.  segmentStandins.charAt(0) is the standin for "$1" and corresponds
+     * to StringMatcher object segmentObjects.elementAt(0), etc.
+     */
+    private StringBuffer segmentStandins;
+
+    /**
+     * Vector of StringMatcher objects for segments.  Used during the
+     * parsing of a single rule.  
+     * segmentStandins.charAt(0) is the standin for "$1" and corresponds
+     * to StringMatcher object segmentObjects.elementAt(0), etc.
+     */
+    private Vector segmentObjects;
+
+    /**
+     * The next available stand-in for variables.  This starts at some point in
+     * the private use area (discovered dynamically) and increments up toward
+     * <code>variableLimit</code>.  At any point during parsing, available
+     * variables are <code>variableNext..variableLimit-1</code>.
+     */
+    private char variableNext;
+
+    /**
+     * The last available stand-in for variables.  This is discovered
+     * dynamically.  At any point during parsing, available variables are
+     * <code>variableNext..variableLimit-1</code>.  During variable definition
+     * we use the special value variableLimit-1 as a placeholder.
+     */
+    private char variableLimit;
+
+    /**
+     * When we encounter an undefined variable, we do not immediately signal
+     * an error, in case we are defining this variable, e.g., "$a = [a-z];".
+     * Instead, we save the name of the undefined variable, and substitute
+     * in the placeholder char variableLimit - 1, and decrement
+     * variableLimit.
+     */
+    private String undefinedVariableName;
+
+    /**
+     * The stand-in character for the 'dot' set, represented by '.' in
+     * patterns.  This is allocated the first time it is needed, and
+     * reused thereafter.
+     */
+    private int dotStandIn = -1;
+
+    //----------------------------------------------------------------------
+    // Constants
+    //----------------------------------------------------------------------
+
+    // Indicator for ID blocks
+    private static final String ID_TOKEN = "::";
+    private static final int ID_TOKEN_LEN = 2;
+
+    // Operators
+    private static final char VARIABLE_DEF_OP   = '=';
+    private static final char FORWARD_RULE_OP   = '>';
+    private static final char REVERSE_RULE_OP   = '<';
+    private static final char FWDREV_RULE_OP    = '~'; // internal rep of <> op
+
+    private static final String OPERATORS = "=><";
+    private static final String HALF_ENDERS = "=><;";
+
+    // Other special characters
+    private static final char QUOTE               = '\'';
+    private static final char ESCAPE              = '\\';
+    private static final char END_OF_RULE         = ';';
+    private static final char RULE_COMMENT_CHAR   = '#';
+
+    private static final char CONTEXT_ANTE        = '{'; // ante{key
+    private static final char CONTEXT_POST        = '}'; // key}post
+    private static final char CURSOR_POS          = '|';
+    private static final char CURSOR_OFFSET       = '@';
+    private static final char ANCHOR_START        = '^';
+
+    private static final char KLEENE_STAR         = '*';
+    private static final char ONE_OR_MORE         = '+';
+    private static final char ZERO_OR_ONE         = '?';
+
+    private static final char DOT                 = '.';
+    private static final String DOT_SET           = "[^[:Zp:][:Zl:]\\r\\n$]";
+
+    // By definition, the ANCHOR_END special character is a
+    // trailing SymbolTable.SYMBOL_REF character.
+    // private static final char ANCHOR_END       = '$';
+
+    // Segments of the input string are delimited by "(" and ")".  In the
+    // output string these segments are referenced as "$1", "$2", etc.
+    private static final char SEGMENT_OPEN        = '(';
+    private static final char SEGMENT_CLOSE       = ')';
+
+    // A function is denoted &Source-Target/Variant(text)
+    private static final char FUNCTION            = '&';
+
+    // Special characters disallowed at the top level
+    private static UnicodeSet ILLEGAL_TOP = new UnicodeSet("[\\)]");
+
+    // Special characters disallowed within a segment
+    private static UnicodeSet ILLEGAL_SEG = new UnicodeSet("[\\{\\}\\|\\@]");
+
+    // Special characters disallowed within a function argument
+    private static UnicodeSet ILLEGAL_FUNC = new UnicodeSet("[\\^\\(\\.\\*\\+\\?\\{\\}\\|\\@]");
+
+    //----------------------------------------------------------------------
+    // class ParseData
+    //----------------------------------------------------------------------
+
+    /**
+     * This class implements the SymbolTable interface.  It is used
+     * during parsing to give UnicodeSet access to variables that
+     * have been defined so far.  Note that it uses variablesVector,
+     * _not_ data.variables.
+     */
+    private class ParseData implements SymbolTable {
+
+        /**
+         * Implement SymbolTable API.
+         */
+        public char[] lookup(String name) {
+            return (char[]) data.variableNames.get(name);
+        }
+
+        /**
+         * Implement SymbolTable API.
+         */
+        public UnicodeMatcher lookupMatcher(int ch) {
+            // Note that we cannot use data.lookup() because the
+            // set array has not been constructed yet.
+            int i = ch - data.variablesBase;
+            if (i >= 0 && i < variablesVector.size()) {
+                return (UnicodeMatcher) variablesVector.elementAt(i);
+            }
+            return null;
+        }
+
+        /**
+         * Implement SymbolTable API.  Parse out a symbol reference
+         * name.
+         */
+        public String parseReference(String text, ParsePosition pos, int limit) {
+            int start = pos.getIndex();
+            int i = start;
+            while (i < limit) {
+                char c = text.charAt(i);
+                if ((i==start && !Character.isUnicodeIdentifierStart(c)) ||
+                    !Character.isUnicodeIdentifierPart(c)) {
+                    break;
+                }
+                ++i;
+            }
+            if (i == start) { // No valid name chars
+                return null;
+            }
+            pos.setIndex(i);
+            return text.substring(start, i);
+        }
+
+        /**
+         * Return true if the given character is a matcher standin or a plain
+         * character (non standin).
+         */
+        public boolean isMatcher(int ch) {
+            // Note that we cannot use data.lookup() because the
+            // set array has not been constructed yet.
+            int i = ch - data.variablesBase;
+            if (i >= 0 && i < variablesVector.size()) {
+                return variablesVector.elementAt(i) instanceof UnicodeMatcher;
+            }
+            return true;
+        }
+
+        /**
+         * Return true if the given character is a replacer standin or a plain
+         * character (non standin).
+         */
+        public boolean isReplacer(int ch) {
+            // Note that we cannot use data.lookup() because the
+            // set array has not been constructed yet.
+            int i = ch - data.variablesBase;
+            if (i >= 0 && i < variablesVector.size()) {
+                return variablesVector.elementAt(i) instanceof UnicodeReplacer;
+            }
+            return true;
+        }
+    }
+
+    //----------------------------------------------------------------------
+    // classes RuleBody, RuleArray, and RuleReader
+    //----------------------------------------------------------------------
+
+    /**
+     * A private abstract class representing the interface to rule
+     * source code that is broken up into lines.  Handles the
+     * folding of lines terminated by a backslash.  This folding
+     * is limited; it does not account for comments, quotes, or
+     * escapes, so its use to be limited.
+     */
+    private static abstract class RuleBody {
+
+        /**
+         * Retrieve the next line of the source, or return null if
+         * none.  Folds lines terminated by a backslash into the
+         * next line, without regard for comments, quotes, or
+         * escapes.
+         */
+        String nextLine() {
+            String s = handleNextLine();
+            if (s != null &&
+                s.length() > 0 &&
+                s.charAt(s.length() - 1) == '\\') {
+
+                StringBuffer b = new StringBuffer(s);
+                do {
+                    b.deleteCharAt(b.length()-1);
+                    s = handleNextLine();
+                    if (s == null) {
+                        break;
+                    }
+                    b.append(s);
+                } while (s.length() > 0 &&
+                         s.charAt(s.length() - 1) == '\\');
+
+                s = b.toString();
+            }
+            return s;
+        }
+
+        /**
+         * Reset to the first line of the source.
+         */
+        abstract void reset();
+
+        /**
+         * Subclass method to return the next line of the source.
+         */
+        abstract String handleNextLine();
+    };
+
+    /**
+     * RuleBody subclass for a String[] array.
+     */
+    private static class RuleArray extends RuleBody {
+        String[] array;
+        int i;
+        public RuleArray(String[] array) { this.array = array; i = 0; }
+        public String handleNextLine() {
+            return (i < array.length) ? array[i++] : null;
+        }
+        public void reset() {
+            i = 0;
+        }
+    };
+
+    /**
+     * RuleBody subclass for a ResourceReader.
+     */
+    private static class RuleReader extends RuleBody {
+        ResourceReader reader;
+        public RuleReader(ResourceReader reader) { this.reader = reader; }
+        public String handleNextLine() {
+            try {
+                return reader.readLine();
+            } catch (java.io.IOException e) {}
+            return null;
+        }
+        public void reset() {
+            reader.reset();
+        }
+    };
+
+    //----------------------------------------------------------------------
+    // class RuleHalf
+    //----------------------------------------------------------------------
+
+    /**
+     * A class representing one side of a rule.  This class knows how to
+     * parse half of a rule.  It is tightly coupled to the method
+     * TransliteratorParser.parseRule().
+     */
+    private static class RuleHalf {
+
+        public String text;
+
+        public int cursor = -1; // position of cursor in text
+        public int ante = -1;   // position of ante context marker '{' in text
+        public int post = -1;   // position of post context marker '}' in text
+
+        // Record the offset to the cursor either to the left or to the
+        // right of the key.  This is indicated by characters on the output
+        // side that allow the cursor to be positioned arbitrarily within
+        // the matching text.  For example, abc{def} > | @@@ xyz; changes
+        // def to xyz and moves the cursor to before abc.  Offset characters
+        // must be at the start or end, and they cannot move the cursor past
+        // the ante- or postcontext text.  Placeholders are only valid in
+        // output text.  The length of the ante and post context is
+        // determined at runtime, because of supplementals and quantifiers.
+        public int cursorOffset = 0; // only nonzero on output side
+
+        // Position of first CURSOR_OFFSET on _right_.  This will be -1
+        // for |@, -2 for |@@, etc., and 1 for @|, 2 for @@|, etc.
+        private int cursorOffsetPos = 0;
+
+        public boolean anchorStart = false;
+        public boolean anchorEnd   = false;
+
+        /**
+         * The segment number from 1..n of the next '(' we see
+         * during parsing; 1-based.
+         */
+        private int nextSegmentNumber = 1;
+
+        /**
+         * Parse one side of a rule, stopping at either the limit,
+         * the END_OF_RULE character, or an operator.
+         * @return the index after the terminating character, or
+         * if limit was reached, limit
+         */
+        public int parse(String rule, int pos, int limit,
+                         TransliteratorParser parser) {
+            int start = pos;
+            StringBuffer buf = new StringBuffer();
+            pos = parseSection(rule, pos, limit, parser, buf, ILLEGAL_TOP, false);
+            text = buf.toString();
+
+            if (cursorOffset > 0 && cursor != cursorOffsetPos) {
+                syntaxError("Misplaced " + CURSOR_POS, rule, start);
+            }
+
+            return pos;
+        }
+
+        /**
+         * Parse a section of one side of a rule, stopping at either
+         * the limit, the END_OF_RULE character, an operator, or a
+         * segment close character.  This method parses both a
+         * top-level rule half and a segment within such a rule half.
+         * It calls itself recursively to parse segments and nested
+         * segments.
+         * @param buf buffer into which to accumulate the rule pattern
+         * characters, either literal characters from the rule or
+         * standins for UnicodeMatcher objects including segments.
+         * @param illegal the set of special characters that is illegal during
+         * this parse.
+         * @param isSegment if true, then we've already seen a '(' and
+         * pos on entry points right after it.  Accumulate everything
+         * up to the closing ')', put it in a segment matcher object,
+         * generate a standin for it, and add the standin to buf.  As
+         * a side effect, update the segments vector with a reference
+         * to the segment matcher.  This works recursively for nested
+         * segments.  If isSegment is false, just accumulate
+         * characters into buf.
+         * @return the index after the terminating character, or
+         * if limit was reached, limit
+         */
+        private int parseSection(String rule, int pos, int limit,
+                                 TransliteratorParser parser,
+                                 StringBuffer buf,
+                                 UnicodeSet illegal,
+                                 boolean isSegment) {
+            int start = pos;
+            ParsePosition pp = null;
+            int quoteStart = -1; // Most recent 'single quoted string'
+            int quoteLimit = -1;
+            int varStart = -1; // Most recent $variableReference
+            int varLimit = -1;
+            int[] iref = new int[1];
+            int bufStart = buf.length();
+
+        main:
+            while (pos < limit) {
+                // Since all syntax characters are in the BMP, fetching
+                // 16-bit code units suffices here.
+                char c = rule.charAt(pos++);
+                if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                    continue;
+                }
+                // HALF_ENDERS is all chars that end a rule half: "<>=;"
+                if (HALF_ENDERS.indexOf(c) >= 0) {
+                    if (isSegment) {
+                        syntaxError("Unclosed segment", rule, start);
+                    }
+                    break main;
+                }
+                if (anchorEnd) {
+                    // Text after a presumed end anchor is a syntax err
+                    syntaxError("Malformed variable reference", rule, start);
+                }
+                if (UnicodeSet.resemblesPattern(rule, pos-1)) {
+                    if (pp == null) {
+                        pp = new ParsePosition(0);
+                    }
+                    pp.setIndex(pos-1); // Backup to opening '['
+                    buf.append(parser.parseSet(rule, pp));
+                    pos = pp.getIndex();                    
+                    continue;
+                }
+                // Handle escapes
+                if (c == ESCAPE) {
+                    if (pos == limit) {
+                        syntaxError("Trailing backslash", rule, start);
+                    }
+                    iref[0] = pos;
+                    int escaped = Utility.unescapeAt(rule, iref);
+                    pos = iref[0];
+                    if (escaped == -1) {
+                        syntaxError("Malformed escape", rule, start);
+                    }
+                    parser.checkVariableRange(escaped, rule, start);
+                    UTF16.append(buf, escaped);
+                    continue;
+                }
+                // Handle quoted matter
+                if (c == QUOTE) {
+                    int iq = rule.indexOf(QUOTE, pos);
+                    if (iq == pos) {
+                        buf.append(c); // Parse [''] outside quotes as [']
+                        ++pos;
+                    } else {
+                        /* This loop picks up a run of quoted text of the
+                         * form 'aaaa' each time through.  If this run
+                         * hasn't really ended ('aaaa''bbbb') then it keeps
+                         * looping, each time adding on a new run.  When it
+                         * reaches the final quote it breaks.
+                         */
+                        quoteStart = buf.length();
+                        for (;;) {
+                            if (iq < 0) {
+                                syntaxError("Unterminated quote", rule, start);
+                            }
+                            buf.append(rule.substring(pos, iq));
+                            pos = iq+1;
+                            if (pos < limit && rule.charAt(pos) == QUOTE) {
+                            // Parse [''] inside quotes as [']
+                                iq = rule.indexOf(QUOTE, pos+1);
+                            // Continue looping
+                            } else {
+                                break;
+                            }
+                        }
+                        quoteLimit = buf.length();
+                        
+                        for (iq=quoteStart; iq<quoteLimit; ++iq) {
+                            parser.checkVariableRange(buf.charAt(iq), rule, start);
+                        }
+                    }
+                    continue;
+                }
+
+                parser.checkVariableRange(c, rule, start);
+
+                if (illegal.contains(c)) {
+                    syntaxError("Illegal character '" + c + '\'', rule, start);
+                }
+
+                switch (c) {
+                    
+                //------------------------------------------------------
+                // Elements allowed within and out of segments
+                //------------------------------------------------------
+                case ANCHOR_START:
+                    if (buf.length() == 0 && !anchorStart) {
+                        anchorStart = true;
+                    } else {
+                        syntaxError("Misplaced anchor start",
+                                    rule, start);
+                    }
+                    break;
+                case SEGMENT_OPEN:
+                    {
+                        // bufSegStart is the offset in buf to the first
+                        // character of the segment we are parsing.
+                        int bufSegStart = buf.length();
+
+                        // Record segment number now, since nextSegmentNumber
+                        // will be incremented during the call to parseSection
+                        // if there are nested segments.
+                        int segmentNumber = nextSegmentNumber++; // 1-based
+
+                        // Parse the segment
+                        pos = parseSection(rule, pos, limit, parser, buf, ILLEGAL_SEG, true);
+
+                        // After parsing a segment, the relevant characters are
+                        // in buf, starting at offset bufSegStart.  Extract them
+                        // into a string matcher, and replace them with a
+                        // standin for that matcher.
+                        StringMatcher m =
+                            new StringMatcher(buf.substring(bufSegStart),
+                                              segmentNumber, parser.data);
+
+                        // Record and associate object and segment number
+                        parser.setSegmentObject(segmentNumber, m);
+                        buf.setLength(bufSegStart);
+                        buf.append(parser.getSegmentStandin(segmentNumber));
+                    }
+                    break;
+                case FUNCTION:
+                    {
+                        iref[0] = pos;
+                        TransliteratorIDParser.SingleID single = TransliteratorIDParser.parseFilterID(rule, iref);
+                        // The next character MUST be a segment open
+                        if (single == null ||
+                            !Utility.parseChar(rule, iref, SEGMENT_OPEN)) {
+                            syntaxError("Invalid function", rule, start);
+                        }
+
+                        Transliterator t = single.getInstance();
+                        if (t == null) {
+                            syntaxError("Invalid function ID", rule, start);
+                        }
+
+                        // bufSegStart is the offset in buf to the first
+                        // character of the segment we are parsing.
+                        int bufSegStart = buf.length();
+
+                        // Parse the segment
+                        pos = parseSection(rule, iref[0], limit, parser, buf, ILLEGAL_FUNC, true);
+
+                        // After parsing a segment, the relevant characters are
+                        // in buf, starting at offset bufSegStart.
+                        FunctionReplacer r =
+                            new FunctionReplacer(t,
+                                new StringReplacer(buf.substring(bufSegStart), parser.data));
+
+                        // Replace the buffer contents with a stand-in
+                        buf.setLength(bufSegStart);
+                        buf.append(parser.generateStandInFor(r));
+                    }
+                    break;
+                case SymbolTable.SYMBOL_REF:
+                    // Handle variable references and segment references "$1" .. "$9"
+                    {
+                        // A variable reference must be followed immediately
+                        // by a Unicode identifier start and zero or more
+                        // Unicode identifier part characters, or by a digit
+                        // 1..9 if it is a segment reference.
+                        if (pos == limit) {
+                            // A variable ref character at the end acts as
+                            // an anchor to the context limit, as in perl.
+                            anchorEnd = true;
+                            break;
+                        }
+                        // Parse "$1" "$2" .. "$9" .. (no upper limit)
+                        c = rule.charAt(pos);
+                        int r = UCharacter.digit(c, 10);
+                        if (r >= 1 && r <= 9) {
+                            iref[0] = pos;
+                            r = Utility.parseNumber(rule, iref, 10);
+                            if (r < 0) {
+                                syntaxError("Undefined segment reference",
+                                            rule, start);
+                            }
+                            pos = iref[0];
+                            buf.append(parser.getSegmentStandin(r));
+                        } else {
+                            if (pp == null) { // Lazy create
+                                pp = new ParsePosition(0);
+                            }
+                            pp.setIndex(pos);
+                            String name = parser.parseData.
+                                parseReference(rule, pp, limit);
+                            if (name == null) {
+                                // This means the '$' was not followed by a
+                                // valid name.  Try to interpret it as an
+                                // end anchor then.  If this also doesn't work
+                                // (if we see a following character) then signal
+                                // an error.
+                                anchorEnd = true;
+                                break;
+                            }
+                            pos = pp.getIndex();
+                            // If this is a variable definition statement,
+                            // then the LHS variable will be undefined.  In
+                            // that case appendVariableDef() will append the
+                            // special placeholder char variableLimit-1.
+                            varStart = buf.length();
+                            parser.appendVariableDef(name, buf);
+                            varLimit = buf.length();
+                        }
+                    }
+                    break;
+                case DOT:
+                    buf.append(parser.getDotStandIn());
+                    break;
+                case KLEENE_STAR:
+                case ONE_OR_MORE:
+                case ZERO_OR_ONE:
+                    // Quantifiers.  We handle single characters, quoted strings,
+                    // variable references, and segments.
+                    //  a+      matches  aaa
+                    //  'foo'+  matches  foofoofoo
+                    //  $v+     matches  xyxyxy if $v == xy
+                    //  (seg)+  matches  segsegseg
+                    {
+                        if (isSegment && buf.length() == bufStart) {
+                            // The */+ immediately follows '('
+                            syntaxError("Misplaced quantifier", rule, start);
+                            break;
+                        } 
+ 
+                        int qstart, qlimit;
+                        // The */+ follows an isolated character or quote
+                        // or variable reference
+                        if (buf.length() == quoteLimit) {
+                            // The */+ follows a 'quoted string'
+                            qstart = quoteStart;
+                            qlimit = quoteLimit;
+                        } else if (buf.length() == varLimit) {
+                            // The */+ follows a $variableReference
+                            qstart = varStart;
+                            qlimit = varLimit;
+                        } else {
+                            // The */+ follows a single character, possibly
+                            // a segment standin
+                            qstart = buf.length() - 1;
+                            qlimit = qstart + 1;
+                        }
+
+                        UnicodeMatcher m =
+                            new StringMatcher(buf.toString(), qstart, qlimit,
+                                              0, parser.data);
+                        int min = 0;
+                        int max = Quantifier.MAX;
+                        switch (c) {
+                        case ONE_OR_MORE:
+                            min = 1;
+                            break;
+                        case ZERO_OR_ONE:
+                            min = 0;
+                            max = 1;
+                            break;
+                            // case KLEENE_STAR:
+                            //    do nothing -- min, max already set
+                        }
+                        m = new Quantifier(m, min, max);
+                        buf.setLength(qstart);
+                        buf.append(parser.generateStandInFor(m));
+                    }
+                    break;
+
+                //------------------------------------------------------
+                // Elements allowed ONLY WITHIN segments
+                //------------------------------------------------------
+                case SEGMENT_CLOSE:
+                    // assert(isSegment);
+                    // We're done parsing a segment.
+                    break main;
+
+                //------------------------------------------------------
+                // Elements allowed ONLY OUTSIDE segments
+                //------------------------------------------------------
+                case CONTEXT_ANTE:
+                    if (ante >= 0) {
+                        syntaxError("Multiple ante contexts", rule, start);
+                    }
+                    ante = buf.length();
+                    break;
+                case CONTEXT_POST:
+                    if (post >= 0) {
+                        syntaxError("Multiple post contexts", rule, start);
+                    }
+                    post = buf.length();
+                    break;
+                case CURSOR_POS:
+                    if (cursor >= 0) {
+                        syntaxError("Multiple cursors", rule, start);
+                    }
+                    cursor = buf.length();
+                    break;
+                case CURSOR_OFFSET:
+                    if (cursorOffset < 0) {
+                        if (buf.length() > 0) {
+                            syntaxError("Misplaced " + c, rule, start);
+                        }
+                        --cursorOffset;
+                    } else if (cursorOffset > 0) {
+                        if (buf.length() != cursorOffsetPos || cursor >= 0) {
+                            syntaxError("Misplaced " + c, rule, start);
+                        }
+                        ++cursorOffset;
+                    } else {
+                        if (cursor == 0 && buf.length() == 0) {
+                            cursorOffset = -1;
+                        } else if (cursor < 0) {
+                            cursorOffsetPos = buf.length();
+                            cursorOffset = 1;
+                        } else {
+                            syntaxError("Misplaced " + c, rule, start);
+                        }
+                    }
+                    break;
+
+                //------------------------------------------------------
+                // Non-special characters
+                //------------------------------------------------------
+                default:
+                    // Disallow unquoted characters other than [0-9A-Za-z]
+                    // in the printable ASCII range.  These characters are
+                    // reserved for possible future use.
+                    if (c >= 0x0021 && c <= 0x007E &&
+                        !((c >= '0' && c <= '9') ||
+                          (c >= 'A' && c <= 'Z') ||
+                          (c >= 'a' && c <= 'z'))) {
+                        syntaxError("Unquoted " + c, rule, start);
+                    }
+                    buf.append(c);
+                    break;
+                }
+            }
+            return pos;
+        }
+
+        /**
+         * Remove context.
+         */
+        void removeContext() {
+            text = text.substring(ante < 0 ? 0 : ante,
+                                  post < 0 ? text.length() : post);
+            ante = post = -1;
+            anchorStart = anchorEnd = false;
+        }
+
+        /**
+         * Return true if this half looks like valid output, that is, does not
+         * contain quantifiers or other special input-only elements.
+         */
+        public boolean isValidOutput(TransliteratorParser parser) {
+            for (int i=0; i<text.length(); ) {
+                int c = UTF16.charAt(text, i);
+                i += UTF16.getCharCount(c);
+                if (!parser.parseData.isReplacer(c)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        /**
+         * Return true if this half looks like valid input, that is, does not
+         * contain functions or other special output-only elements.
+         */
+        public boolean isValidInput(TransliteratorParser parser) {
+            for (int i=0; i<text.length(); ) {
+                int c = UTF16.charAt(text, i);
+                i += UTF16.getCharCount(c);
+                if (!parser.parseData.isMatcher(c)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+
+    //----------------------------------------------------------------------
+    // PUBLIC methods
+    //----------------------------------------------------------------------
+
+    /**
+     * Constructor.
+     */
+    public TransliteratorParser() {
+    }
+
+    /**
+     * Parse a set of rules.  After the parse completes, examine the public
+     * data members for results.
+     */
+    public void parse(String rules, int direction) {
+        parseRules(new RuleArray(new String[] { rules }), direction);
+    }
+   
+    /**
+     * Parse a set of rules.  After the parse completes, examine the public
+     * data members for results.
+     */
+    public void parse(ResourceReader rules, int direction) {
+        parseRules(new RuleReader(rules), direction);
+    }
+
+    //----------------------------------------------------------------------
+    // PRIVATE methods
+    //----------------------------------------------------------------------
+
+    /**
+     * Parse an array of zero or more rules.  The strings in the array are
+     * treated as if they were concatenated together, with rule terminators
+     * inserted between array elements if not present already.
+     *
+     * Any previous rules are discarded.  Typically this method is called exactly
+     * once, during construction.
+     *
+     * The member this.data will be set to null if there are no rules.
+     *
+     * @exception IllegalArgumentException if there is a syntax error in the
+     * rules
+     */
+    void parseRules(RuleBody ruleArray, int dir) {
+        data = new RuleBasedTransliterator.Data();
+        direction = dir;
+        ruleCount = 0;
+        compoundFilter = null;
+
+        // By default, rules use part of the private use area
+        // E000..F8FF for variables and other stand-ins.  Currently
+        // the range F000..F8FF is typically sufficient.  The 'use
+        // variable range' pragma allows rule sets to modify this.
+        setVariableRange(0xF000, 0xF8FF);
+
+        variablesVector = new Vector();
+        parseData = new ParseData();
+
+        StringBuffer errors = null;
+        int errorCount = 0;
+
+        ruleArray.reset();
+
+        StringBuffer idBlockResult = new StringBuffer();
+        idSplitPoint = -1;
+        // The mode marks whether we are in the header ::id block, the
+        // rule block, or the footer ::id block.
+        // mode == 0: start: rule->1, ::id->0
+        // mode == 1: in rules: rule->1, ::id->2
+        // mode == 2: in footer rule block: rule->ERROR, ::id->2
+        int mode = 0;
+
+        // The compound filter offset is an index into idBlockResult.
+        // If it is 0, then the compound filter occurred at the start,
+        // and it is the offset to the _start_ of the compound filter
+        // pattern.  Otherwise it is the offset to the _limit_ of the
+        // compound filter pattern within idBlockResult.
+        this.compoundFilter = null;
+        int compoundFilterOffset = -1;
+
+        // The number of ::ID block entries we have parsed
+        int idBlockCount = 0;
+
+    main:
+        for (;;) {
+            String rule = ruleArray.nextLine();
+            if (rule == null) {
+                break;
+            }
+            int pos = 0;
+            int limit = rule.length();
+            while (pos < limit) {
+                char c = rule.charAt(pos++);
+                if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                    continue;
+                }
+                // Skip lines starting with the comment character
+                if (c == RULE_COMMENT_CHAR) {
+                    pos = rule.indexOf("\n", pos) + 1;
+                    if (pos == 0) {
+                        break; // No "\n" found; rest of rule is a commnet
+                    }
+                    continue; // Either fall out or restart with next line
+                }
+                // Often a rule file contains multiple errors.  It's
+                // convenient to the rule author if these are all reported
+                // at once.  We keep parsing rules even after a failure, up
+                // to a specified limit, and report all errors at once.
+                try {
+                    // We've found the start of a rule or ID.  c is its first
+                    // character, and pos points past c.
+                    --pos;
+                    // Look for an ID token.  Must have at least ID_TOKEN_LEN + 1
+                    // chars left.
+                    if ((pos + ID_TOKEN_LEN + 1) <= limit &&
+                        rule.regionMatches(pos, ID_TOKEN, 0, ID_TOKEN_LEN)) {
+                        pos += ID_TOKEN_LEN;
+                        c = rule.charAt(pos);
+                        while (UCharacterProperty.isRuleWhiteSpace(c) && pos < limit) {
+                            ++pos;
+                            c = rule.charAt(pos);
+                        }
+                        if (mode == 1) {
+                            // We have just entered the footer ::ID block
+                            mode = 2;
+                            // In the forward direction add elements at the end.
+                            // In the reverse direction add elements at the start.
+                            idSplitPoint = idBlockCount;
+                        }
+                        int[] p = new int[] { pos };
+
+                        TransliteratorIDParser.SingleID id =
+                            TransliteratorIDParser.parseSingleID(
+                                          rule, p, direction);
+                        if (p[0] != pos && Utility.parseChar(rule, p, END_OF_RULE)) {
+                            // Successful ::ID parse.
+
+                            if (direction == Transliterator.FORWARD) {
+                                idBlockResult.append(id.canonID).append(END_OF_RULE);
+                            } else {
+                                idBlockResult.insert(0, id.canonID + END_OF_RULE);
+                            }
+
+                            ++idBlockCount;
+
+                        } else {
+                            // Couldn't parse an ID.  Try to parse a global filter
+                            int[] withParens = new int[] { -1 };
+                            UnicodeSet f = TransliteratorIDParser.parseGlobalFilter(rule, p, direction, withParens, idBlockResult);
+                            if (f != null && Utility.parseChar(rule, p, END_OF_RULE)) {
+                                if ((direction == Transliterator.FORWARD) ==
+                                    (withParens[0] == 0)) {
+                                    if (compoundFilter != null) {
+                                        // Multiple compound filters
+                                        syntaxError("Multiple global filters", rule, pos);
+                                    }
+                                    compoundFilter = f;
+                                    compoundFilterOffset = idBlockCount;
+                               }
+                            } else {
+                                // Invalid ::id
+                                // Can be parsed as neither an ID nor a global filter
+                                syntaxError("Invalid ::ID", rule, pos);
+                            }
+                        }
+
+                        pos = p[0];
+                    } else if (resemblesPragma(rule, pos, limit)) {
+                        int ppp = parsePragma(rule, pos, limit);
+                        if (ppp < 0) {
+                            syntaxError("Unrecognized pragma", rule, pos);
+                        }
+                        pos = ppp;
+                    } else {
+                        // Parse a rule
+                        pos = parseRule(rule, pos, limit);
+                        ++ruleCount;
+                        if (mode == 2) {
+                            // ::id in illegal position (because a rule
+                            // occurred after the ::id footer block)
+                            syntaxError("::ID in illegal position", rule, pos);
+                        }
+                        mode = 1;
+                    }
+                } catch (IllegalArgumentException e) {
+                    if (errorCount == 30) {
+                        errors.append("\nMore than 30 errors; further messages squelched");
+                        break main;
+                    }
+                    if (errors == null) {
+                        errors = new StringBuffer(e.getMessage());
+                    } else {
+                        errors.append("\n" + e.getMessage());
+                    }
+                    ++errorCount;
+                    pos = ruleEnd(rule, pos, limit) + 1; // +1 advances past ';'
+                }
+            }
+        }
+
+        idBlock = idBlockResult.toString();
+
+        if (idSplitPoint < 0) {
+            idSplitPoint = idBlockCount;
+        }
+
+        if (direction == Transliterator.REVERSE) {
+            idSplitPoint = idBlockCount - idSplitPoint;
+        }
+
+        // Convert the set vector to an array
+        data.variables = new Object[variablesVector.size()];
+        variablesVector.copyInto(data.variables);
+        variablesVector = null;
+
+        // Do more syntax checking and index the rules
+        try {
+            if (compoundFilter != null) {
+                if ((direction == Transliterator.FORWARD &&
+                     compoundFilterOffset != 0) ||
+                    (direction == Transliterator.REVERSE &&
+                     compoundFilterOffset != idBlockCount)) {
+                    throw new IllegalArgumentException("Compound filters misplaced");
+                }
+            }
+
+            data.ruleSet.freeze();
+
+            if (ruleCount == 0) {
+                data = null;
+            }
+        } catch (IllegalArgumentException e) {
+            if (errors == null) {
+                errors = new StringBuffer(e.getMessage());
+            } else {
+                errors.append("\n").append(e.getMessage());
+            }
+        }
+
+        if (errors != null) {
+            throw new IllegalArgumentException(errors.toString());
+        }
+    }
+
+    /**
+     * MAIN PARSER.  Parse the next rule in the given rule string, starting
+     * at pos.  Return the index after the last character parsed.  Do not
+     * parse characters at or after limit.
+     *
+     * Important:  The character at pos must be a non-whitespace character
+     * that is not the comment character.
+     *
+     * This method handles quoting, escaping, and whitespace removal.  It
+     * parses the end-of-rule character.  It recognizes context and cursor
+     * indicators.  Once it does a lexical breakdown of the rule at pos, it
+     * creates a rule object and adds it to our rule list.
+     *
+     * This method is tightly coupled to the inner class RuleHalf.
+     */
+    private int parseRule(String rule, int pos, int limit) {
+        // Locate the left side, operator, and right side
+        int start = pos;
+        char operator = 0;
+
+        // Set up segments data
+        segmentStandins = new StringBuffer();
+        segmentObjects = new Vector();
+
+        RuleHalf left  = new RuleHalf();
+        RuleHalf right = new RuleHalf();
+
+        undefinedVariableName = null;
+        pos = left.parse(rule, pos, limit, this);
+
+        if (pos == limit ||
+            OPERATORS.indexOf(operator = rule.charAt(--pos)) < 0) {
+            syntaxError("No operator pos=" + pos, rule, start);
+        }
+        ++pos;
+
+        // Found an operator char.  Check for forward-reverse operator.
+        if (operator == REVERSE_RULE_OP &&
+            (pos < limit && rule.charAt(pos) == FORWARD_RULE_OP)) {
+            ++pos;
+            operator = FWDREV_RULE_OP;
+        }
+
+        pos = right.parse(rule, pos, limit, this);
+
+        if (pos < limit) {
+            if (rule.charAt(--pos) == END_OF_RULE) {
+                ++pos;
+            } else {
+                // RuleHalf parser must have terminated at an operator
+                syntaxError("Unquoted operator", rule, start);
+            }
+        }
+
+        if (operator == VARIABLE_DEF_OP) {
+            // LHS is the name.  RHS is a single character, either a literal
+            // or a set (already parsed).  If RHS is longer than one
+            // character, it is either a multi-character string, or multiple
+            // sets, or a mixture of chars and sets -- syntax error.
+
+            // We expect to see a single undefined variable (the one being
+            // defined).
+            if (undefinedVariableName == null) {
+                syntaxError("Missing '$' or duplicate definition", rule, start);
+            }
+            if (left.text.length() != 1 || left.text.charAt(0) != variableLimit) {
+                syntaxError("Malformed LHS", rule, start);
+            }
+            if (left.anchorStart || left.anchorEnd ||
+                right.anchorStart || right.anchorEnd) {
+                syntaxError("Malformed variable def", rule, start);
+            }
+            // We allow anything on the right, including an empty string.
+            int n = right.text.length();
+            char[] value = new char[n];
+            right.text.getChars(0, n, value, 0);
+            data.variableNames.put(undefinedVariableName, value);
+
+            ++variableLimit;
+            return pos;
+        }
+
+        // If this is not a variable definition rule, we shouldn't have
+        // any undefined variable names.
+        if (undefinedVariableName != null) {
+            syntaxError("Undefined variable $" + undefinedVariableName,
+                        rule, start);
+        }
+
+        // Verify segments
+        if (segmentStandins.length() > segmentObjects.size()) {
+            syntaxError("Undefined segment reference", rule, start);
+        }
+        for (int i=0; i<segmentStandins.length(); ++i) {
+            if (segmentStandins.charAt(i) == 0) {
+                syntaxError("Internal error", rule, start); // will never happen
+            }
+        }
+        for (int i=0; i<segmentObjects.size(); ++i) {
+            if (segmentObjects.elementAt(i) == null) {
+                syntaxError("Internal error", rule, start); // will never happen
+            }
+        }
+
+        // If the direction we want doesn't match the rule
+        // direction, do nothing.
+        if (operator != FWDREV_RULE_OP &&
+            ((direction == Transliterator.FORWARD) != (operator == FORWARD_RULE_OP))) {
+            return pos;
+        }
+
+        // Transform the rule into a forward rule by swapping the
+        // sides if necessary.
+        if (direction == Transliterator.REVERSE) {
+            RuleHalf temp = left;
+            left = right;
+            right = temp;
+        }
+
+        // Remove non-applicable elements in forward-reverse
+        // rules.  Bidirectional rules ignore elements that do not
+        // apply.
+        if (operator == FWDREV_RULE_OP) {
+            right.removeContext();
+            left.cursor = -1;
+            left.cursorOffset = 0;
+        }
+
+        // Normalize context
+        if (left.ante < 0) {
+            left.ante = 0;
+        }
+        if (left.post < 0) {
+            left.post = left.text.length();
+        }
+
+        // Context is only allowed on the input side.  Cursors are only
+        // allowed on the output side.  Segment delimiters can only appear
+        // on the left, and references on the right.  Cursor offset
+        // cannot appear without an explicit cursor.  Cursor offset
+        // cannot place the cursor outside the limits of the context.
+        // Anchors are only allowed on the input side.
+        if (right.ante >= 0 || right.post >= 0 || left.cursor >= 0 ||
+            (right.cursorOffset != 0 && right.cursor < 0) ||
+            // - The following two checks were used to ensure that the
+            // - the cursor offset stayed within the ante- or postcontext.
+            // - However, with the addition of quantifiers, we have to
+            // - allow arbitrary cursor offsets and do runtime checking.
+            //(right.cursorOffset > (left.text.length() - left.post)) ||
+            //(-right.cursorOffset > left.ante) ||
+            right.anchorStart || right.anchorEnd ||
+            !left.isValidInput(this) || !right.isValidOutput(this) ||
+            left.ante > left.post) {
+            syntaxError("Malformed rule", rule, start);
+        }
+
+        // Flatten segment objects vector to an array
+        UnicodeMatcher[] segmentsArray = null;
+        if (segmentObjects.size() > 0) {
+            segmentsArray = new UnicodeMatcher[segmentObjects.size()];
+            segmentObjects.toArray(segmentsArray);
+        }
+
+        data.ruleSet.addRule(new TransliterationRule(
+                                     left.text, left.ante, left.post,
+                                     right.text, right.cursor, right.cursorOffset,
+                                     segmentsArray,
+                                     left.anchorStart, left.anchorEnd,
+                                     data));
+
+        return pos;
+    }
+
+    /**
+     * Set the variable range to [start, end] (inclusive).
+     */
+    private void setVariableRange(int start, int end) {
+        if (start > end || start < 0 || end > 0xFFFF) {
+            throw new IllegalArgumentException("Invalid variable range " + start + ", " + end);
+        }
+        
+        data.variablesBase = variableNext = (char) start; // first private use
+        variableLimit = (char) (end + 1);
+    }
+
+    /**
+     * Assert that the given character is NOT within the variable range.
+     * If it is, signal an error.  This is neccesary to ensure that the
+     * variable range does not overlap characters used in a rule.
+     */
+    private void checkVariableRange(int ch, String rule, int start) {
+        if (ch >= data.variablesBase && ch < variableLimit) {
+            syntaxError("Variable range character in rule", rule, start);
+        }
+    }
+
+    /**
+     * Set the maximum backup to 'backup', in response to a pragma
+     * statement.
+     */
+    private void pragmaMaximumBackup(int backup) {
+        //TODO Finish
+        throw new IllegalArgumentException("use maximum backup pragma not implemented yet");
+    }
+
+    /**
+     * Begin normalizing all rules using the given mode, in response
+     * to a pragma statement.
+     */
+    private void pragmaNormalizeRules(Normalizer.Mode mode) {
+        //TODO Finish
+        throw new IllegalArgumentException("use normalize rules pragma not implemented yet");
+    }
+
+    /**
+     * Return true if the given rule looks like a pragma.
+     * @param pos offset to the first non-whitespace character
+     * of the rule.
+     * @param limit pointer past the last character of the rule.
+     */
+    static boolean resemblesPragma(String rule, int pos, int limit) {
+        // Must start with /use\s/i
+        return Utility.parsePattern(rule, pos, limit, "use ", null) >= 0;
+    }
+
+    /**
+     * Parse a pragma.  This method assumes resemblesPragma() has
+     * already returned true.
+     * @param pos offset to the first non-whitespace character
+     * of the rule.
+     * @param limit pointer past the last character of the rule.
+     * @return the position index after the final ';' of the pragma,
+     * or -1 on failure.
+     */
+    private int parsePragma(String rule, int pos, int limit) {
+        int[] array = new int[2];
+
+        // resemblesPragma() has already returned true, so we
+        // know that pos points to /use\s/i; we can skip 4 characters
+        // immediately
+        pos += 4;
+        
+        // Here are the pragmas we recognize:
+        // use variable range 0xE000 0xEFFF;
+        // use maximum backup 16;
+        // use nfd rules;
+        int p = Utility.parsePattern(rule, pos, limit, "~variable range # #~;", array);
+        if (p >= 0) {
+            setVariableRange(array[0], array[1]);
+            return p;
+        }
+
+        p = Utility.parsePattern(rule, pos, limit, "~maximum backup #~;", array);
+        if (p >= 0) {
+            pragmaMaximumBackup(array[0]);
+            return p;
+        }
+
+        p = Utility.parsePattern(rule, pos, limit, "~nfd rules~;", null);
+        if (p >= 0) {
+            pragmaNormalizeRules(Normalizer.NFD);
+            return p;
+        }
+
+        p = Utility.parsePattern(rule, pos, limit, "~nfc rules~;", null);
+        if (p >= 0) {
+            pragmaNormalizeRules(Normalizer.NFC);
+            return p;
+        }
+
+        // Syntax error: unable to parse pragma
+        return -1;
+    }
+
+    /**
+     * Throw an exception indicating a syntax error.  Search the rule string
+     * for the probable end of the rule.  Of course, if the error is that
+     * the end of rule marker is missing, then the rule end will not be found.
+     * In any case the rule start will be correctly reported.
+     * @param msg error description
+     * @param rule pattern string
+     * @param start position of first character of current rule
+     */
+    static final void syntaxError(String msg, String rule, int start) {
+        int end = ruleEnd(rule, start, rule.length());
+        throw new IllegalArgumentException(msg + " in \"" +
+                                           Utility.escape(rule.substring(start, end)) + '"');
+    }
+
+    static final int ruleEnd(String rule, int start, int limit) {
+        int end = Utility.quotedIndexOf(rule, start, limit, ";");
+        if (end < 0) {
+            end = limit;
+        }
+        return end;
+    }
+
+    /**
+     * Parse a UnicodeSet out, store it, and return the stand-in character
+     * used to represent it.
+     */
+    private final char parseSet(String rule, ParsePosition pos) {
+        UnicodeSet set = new UnicodeSet(rule, pos, parseData);
+        if (variableNext >= variableLimit) {
+            throw new RuntimeException("Private use variables exhausted");
+        }
+        set.compact();
+        return generateStandInFor(set);
+    }
+
+    /**
+     * Generate and return a stand-in for a new UnicodeMatcher or UnicodeReplacer.
+     * Store the object.
+     */
+    char generateStandInFor(Object obj) {
+        // assert(obj != null);
+
+        // Look up previous stand-in, if any.  This is a short list
+        // (typical n is 0, 1, or 2); linear search is optimal.
+        for (int i=0; i<variablesVector.size(); ++i) {
+            if (variablesVector.elementAt(i) == obj) { // [sic] pointer comparison
+                return (char) (data.variablesBase + i);
+            }
+        }
+
+        if (variableNext >= variableLimit) {
+            throw new RuntimeException("Variable range exhausted");
+        }
+        variablesVector.addElement(obj);
+        return variableNext++;
+    }
+
+    /**
+     * Return the standin for segment seg (1-based).
+     */
+    public char getSegmentStandin(int seg) {
+        if (segmentStandins.length() < seg) {
+            segmentStandins.setLength(seg);
+        }
+        char c = segmentStandins.charAt(seg-1);
+        if (c == 0) {
+            if (variableNext >= variableLimit) {
+                throw new RuntimeException("Variable range exhausted");
+            }
+            c = variableNext++;
+            // Set a placeholder in the master variables vector that will be
+            // filled in later by setSegmentObject().  We know that we will get
+            // called first because setSegmentObject() will call us.
+            variablesVector.addElement(null);
+            segmentStandins.setCharAt(seg-1, c);
+        }
+        return c;
+    }
+    
+    /**
+     * Set the object for segment seg (1-based).
+     */
+    public void setSegmentObject(int seg, StringMatcher obj) {
+        // Since we call parseSection() recursively, nested
+        // segments will result in segment i+1 getting parsed
+        // and stored before segment i; be careful with the
+        // vector handling here.
+        if (segmentObjects.size() < seg) {
+            segmentObjects.setSize(seg);
+        }
+        int index = getSegmentStandin(seg) - data.variablesBase;
+        if (segmentObjects.elementAt(seg-1) != null ||
+            variablesVector.elementAt(index) != null) {
+            throw new RuntimeException(); // should never happen
+        }
+        segmentObjects.setElementAt(obj, seg-1);
+        variablesVector.setElementAt(obj, index);
+    }
+
+    /**
+     * Return the stand-in for the dot set.  It is allocated the first
+     * time and reused thereafter.
+     */
+    char getDotStandIn() {
+        if (dotStandIn == -1) {
+            dotStandIn = generateStandInFor(new UnicodeSet(DOT_SET));
+        }
+        return (char) dotStandIn;
+    }
+
+    /**
+     * Append the value of the given variable name to the given
+     * StringBuffer.
+     * @exception IllegalArgumentException if the name is unknown.
+     */
+    private void appendVariableDef(String name, StringBuffer buf) {
+        char[] ch = (char[]) data.variableNames.get(name);
+        if (ch == null) {
+            // We allow one undefined variable so that variable definition
+            // statements work.  For the first undefined variable we return
+            // the special placeholder variableLimit-1, and save the variable
+            // name.
+            if (undefinedVariableName == null) {
+                undefinedVariableName = name;
+                if (variableNext >= variableLimit) {
+                    throw new RuntimeException("Private use variables exhausted");
+                }
+                buf.append((char) --variableLimit);
+            } else {
+                throw new IllegalArgumentException("Undefined variable $"
+                                                   + name);
+            }
+        } else {
+            buf.append(ch);
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/TransliteratorRegistry.java b/src/com/ibm/icu/text/TransliteratorRegistry.java
new file mode 100755
index 0000000..39b87dd
--- /dev/null
+++ b/src/com/ibm/icu/text/TransliteratorRegistry.java
@@ -0,0 +1,893 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   08/19/2001  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.impl.data.ResourceReader;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.util.CaseInsensitiveString;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.Vector;
+
+class TransliteratorRegistry {
+
+    // char constants
+    private static final char LOCALE_SEP  = '_';
+    private static final char ID_SEP      = '-';
+    private static final char VARIANT_SEP = '/';
+
+    // String constants
+    private static final String NO_VARIANT = ""; // empty string
+    private static final String ANY = "Any";
+
+    /**
+     * Resource bundle key for the RuleBasedTransliterator rule.
+     */
+    private static final String RB_RULE = "Rule";
+
+    /**
+     * Resource bundle containing locale-specific transliterator data.
+     */
+    private static final String RB_LOCALE_ELEMENTS =
+        "com.ibm.icu.impl.data.LocaleElements";
+
+    /**
+     * Locale indicating the root.
+     */
+    private static final Locale ROOT_LOCALE = new Locale("", "", "");
+
+    /**
+     * Dynamic registry mapping full IDs to Entry objects.  This
+     * contains both public and internal entities.  The visibility is
+     * controlled by whether an entry is listed in availableIDs and
+     * specDAG or not.
+     *
+     * Keys are CaseInsensitiveString objects.
+     * Values are objects of class Class (subclass of Transliterator),
+     * RuleBasedTransliterator.Data, Transliterator.Factory, or one
+     * of the entry classes defined here (AliasEntry or ResourceEntry).
+     */
+    private Hashtable registry;
+
+    /**
+     * DAG of visible IDs by spec.  Hashtable: source => (Hashtable:
+     * target => (UVector: variant)) The UVector of variants is never
+     * empty.  For a source-target with no variant, the special
+     * variant NO_VARIANT (the empty string) is stored in slot zero of
+     * the UVector.
+     *
+     * Keys are CaseInsensitiveString objects.
+     * Values are Hashtable of (CaseInsensitiveString -> Vector of
+     * CaseInsensitiveString)
+     */
+    private Hashtable specDAG;
+
+    /**
+     * Vector of public full IDs (CaseInsensitiveString objects).
+     */
+    private Vector availableIDs;
+
+    //----------------------------------------------------------------------
+    // class Spec
+    //----------------------------------------------------------------------
+
+    /**
+     * A Spec is a string specifying either a source or a target.  In more
+     * general terms, it may also specify a variant, but we only use the
+     * Spec class for sources and targets.
+     *
+     * A Spec may be a locale or a script.  If it is a locale, it has a
+     * fallback chain that goes xx_YY_ZZZ -> xx_YY -> xx -> ssss, where
+     * ssss is the script mapping of xx_YY_ZZZ.  The Spec API methods
+     * hasFallback(), next(), and reset() iterate over this fallback
+     * sequence.
+     *
+     * The Spec class canonicalizes itself, so the locale is put into
+     * canonical form, or the script is transformed from an abbreviation
+     * to a full name.
+     */
+    static class Spec {
+
+        private String top;        // top spec
+        private String spec;       // current spec
+        private String nextSpec;   // next spec
+        private String scriptName; // script name equivalent of top, if != top
+        private boolean isSpecLocale; // TRUE if spec is a locale
+        private boolean isNextLocale; // TRUE if nextSpec is a locale
+        private ResourceBundle res;
+
+        public Spec(String theSpec) {
+            top = theSpec;
+            spec = null;
+            scriptName = null;
+
+            Locale toploc = LocaleUtility.getLocaleFromName(top);
+            res = ICULocaleData.getLocaleElements(toploc);
+            // Make sure we got the bundle we wanted; otherwise, don't use it
+            if (LocaleUtility.isFallbackOf(res.getLocale().toString(), top)) {
+                isSpecLocale = true;
+            } else {
+                isSpecLocale = false;
+                res = null;
+            }
+
+            // Canonicalize script name -or- do locale->script mapping
+            int[] s = UScript.getCode(top);
+            if (s != null) {
+                scriptName = UScript.getName(s[0]);
+                // If the script name is the same as top then it's redundant
+                if (scriptName.equalsIgnoreCase(top)) {
+                    scriptName = null;
+                }
+            }
+
+            // assert(spec != top);
+            reset();
+        }
+
+        public boolean hasFallback() {
+            return nextSpec != null;
+        }
+
+        public void reset() {
+            if (spec != top) { // [sic] pointer comparison
+                spec = top;
+                isSpecLocale = (res != null);
+                setupNext();
+            }
+        }
+
+        private void setupNext() {
+            isNextLocale = false;
+            if (isSpecLocale) {
+                nextSpec = spec;
+                int i = nextSpec.lastIndexOf(LOCALE_SEP);
+                // If i == 0 then we have _FOO, so we fall through
+                // to the scriptName.
+                if (i > 0) {
+                    nextSpec = spec.substring(0, i);
+                    isNextLocale = true;
+                } else {
+                    nextSpec = scriptName; // scriptName may be null
+                }
+            } else {
+                // Fallback to the script, which may be null
+				if (nextSpec != scriptName) {
+					nextSpec = scriptName;
+				} else {
+					nextSpec = null;
+				}
+            }
+        }
+
+        // Protocol:
+        // for(String& s(spec.get());
+        //     spec.hasFallback(); s(spec.next())) { ...
+
+        public String next() {
+            spec = nextSpec;
+            isSpecLocale = isNextLocale;
+            setupNext();
+            return spec;
+        }
+
+        public String get() {
+            return spec;
+        }
+
+        public boolean isLocale() {
+            return isSpecLocale;
+        }
+
+        /**
+         * Return the ResourceBundle for this spec, at the current
+         * level of iteration.  The level of iteration goes from
+         * aa_BB_CCC to aa_BB to aa.  If the bundle does not
+         * correspond to the current level of iteration, return null.
+         * If isLocale() is false, always return null.
+         */
+        public ResourceBundle getBundle() {
+            if (res != null &&
+                res.getLocale().toString().equals(spec)) {
+                return res;
+            }
+            return null;
+        }
+
+        public String getTop() {
+            return top;
+        }
+	}
+
+    //----------------------------------------------------------------------
+    // Entry classes
+    //----------------------------------------------------------------------
+
+	static class ResourceEntry {
+        public String resourceName;
+        public String encoding;
+        public int direction;
+        public ResourceEntry(String n, String enc, int d) {
+            resourceName = n;
+            encoding = enc;
+            direction = d;
+        }
+    }
+
+    // An entry representing a rule in a locale resource bundle
+    static class LocaleEntry {
+        public String rule;
+        public int direction;
+        public LocaleEntry(String r, int d) {
+            rule = r;
+            direction = d;
+        }
+    }
+
+    static class AliasEntry {
+        public String alias;
+        public AliasEntry(String a) {
+            alias = a;
+        }
+    }
+
+    static class CompoundRBTEntry {
+        private String ID;
+        private String idBlock;
+        private int idSplitPoint;
+        private RuleBasedTransliterator.Data data;
+        private UnicodeSet compoundFilter;
+
+        public CompoundRBTEntry(String theID, String theIDBlock,
+                                int theIDSplitPoint,
+                                RuleBasedTransliterator.Data theData,
+                                UnicodeSet theCompoundFilter) {
+            ID = theID;
+            idBlock = theIDBlock;
+            idSplitPoint = theIDSplitPoint;
+            data = theData;
+            compoundFilter = theCompoundFilter;
+        }
+
+        public Transliterator getInstance() {
+            Transliterator t = new RuleBasedTransliterator("_", data, null);
+            t = new CompoundTransliterator(ID, idBlock, idSplitPoint, t);
+            t.setFilter(compoundFilter);
+            return t;
+        }
+    }
+
+    //----------------------------------------------------------------------
+    // class TransliteratorRegistry: Basic public API
+    //----------------------------------------------------------------------
+
+    public TransliteratorRegistry() {
+        registry = new Hashtable();
+        specDAG = new Hashtable();
+        availableIDs = new Vector();
+    }
+
+    /**
+     * Given a simple ID (forward direction, no inline filter, not
+     * compound) attempt to instantiate it from the registry.  Return
+     * 0 on failure.
+     *
+     * Return a non-empty aliasReturn value if the ID points to an alias.
+     * We cannot instantiate it ourselves because the alias may contain
+     * filters or compounds, which we do not understand.  Caller should
+     * make aliasReturn empty before calling.
+     */
+    public Transliterator get(String ID,
+                              StringBuffer aliasReturn) {
+        Object[] entry = find(ID);
+        return (entry == null) ? null
+            : instantiateEntry(ID, entry, aliasReturn);
+    }
+
+    /**
+     * Register a class.  This adds an entry to the
+     * dynamic store, or replaces an existing entry.  Any entry in the
+     * underlying static locale resource store is masked.
+     */
+    public void put(String ID,
+                    Class transliteratorSubclass,
+                    boolean visible) {
+        registerEntry(ID, transliteratorSubclass, visible);
+    }
+
+    /**
+     * Register an ID and a factory function pointer.  This adds an
+     * entry to the dynamic store, or replaces an existing entry.  Any
+     * entry in the underlying static locale resource store is masked.
+     */
+    public void put(String ID,
+                    Transliterator.Factory factory,
+                    boolean visible) {
+        registerEntry(ID, factory, visible);
+    }
+
+    /**
+     * Register an ID and a resource name.  This adds an entry to the
+     * dynamic store, or replaces an existing entry.  Any entry in the
+     * underlying static locale resource store is masked.
+     */
+    public void put(String ID,
+                    String resourceName,
+                    String encoding,
+                    int dir,
+                    boolean visible) {
+        registerEntry(ID, new ResourceEntry(resourceName, encoding, dir), visible);
+    }
+
+    /**
+     * Register an ID and an alias ID.  This adds an entry to the
+     * dynamic store, or replaces an existing entry.  Any entry in the
+     * underlying static locale resource store is masked.
+     */
+    public void put(String ID,
+                    String alias,
+                    boolean visible) {
+        registerEntry(ID, new AliasEntry(alias), visible);
+    }
+
+    /**
+     * Register an ID and a Transliterator object.  This adds an entry
+     * to the dynamic store, or replaces an existing entry.  Any entry
+     * in the underlying static locale resource store is masked.
+     */
+    public void put(String ID,
+                    Transliterator trans,
+                    boolean visible) {
+        registerEntry(ID, trans, visible);
+    }
+
+    /**
+     * Unregister an ID.  This removes an entry from the dynamic store
+     * if there is one.  The static locale resource store is
+     * unaffected.
+     */
+    public void remove(String ID) {
+        String[] stv = TransliteratorIDParser.IDtoSTV(ID);
+        // Only need to do this if ID.indexOf('-') < 0
+        String id = TransliteratorIDParser.STVtoID(stv[0], stv[1], stv[2]);
+        registry.remove(new CaseInsensitiveString(id));
+        removeSTV(stv[0], stv[1], stv[2]);
+        availableIDs.removeElement(new CaseInsensitiveString(id));
+    }
+    
+    //----------------------------------------------------------------------
+    // class TransliteratorRegistry: Public ID and spec management
+    //----------------------------------------------------------------------
+
+    /**
+     * An internal class that adapts an enumeration over
+     * CaseInsensitiveStrings to an enumeration over Strings.
+     */
+    private static class IDEnumeration implements Enumeration {
+        Enumeration enum;
+
+        public IDEnumeration(Enumeration e) {
+            enum = e;
+        }
+
+        public boolean hasMoreElements() {
+            return enum != null && enum.hasMoreElements();
+        }
+
+        public Object nextElement() {
+            return ((CaseInsensitiveString) enum.nextElement()).getString();
+        }
+    }
+
+    /**
+     * Returns an enumeration over the programmatic names of visible
+     * registered transliterators.
+     *
+     * @return An <code>Enumeration</code> over <code>String</code> objects
+     */
+    public Enumeration getAvailableIDs() {
+        // Since the cache contains CaseInsensitiveString objects, but
+        // the caller expects Strings, we have to use an intermediary.
+        return new IDEnumeration(availableIDs.elements());
+    }
+
+    /**
+     * Returns an enumeration over all visible source names.
+     *
+     * @return An <code>Enumeration</code> over <code>String</code> objects
+     */
+    public Enumeration getAvailableSources() {
+        return new IDEnumeration(specDAG.keys());
+    }
+
+    /**
+     * Returns an enumeration over visible target names for the given
+     * source.
+     *
+     * @return An <code>Enumeration</code> over <code>String</code> objects
+     */
+    public Enumeration getAvailableTargets(String source) {
+        CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
+        Hashtable targets = (Hashtable) specDAG.get(cisrc);
+        if (targets == null) {
+            return new IDEnumeration(null);
+        }
+        return new IDEnumeration(targets.keys());
+    }
+
+    /**
+     * Returns an enumeration over visible variant names for the given
+     * source and target.
+     *
+     * @return An <code>Enumeration</code> over <code>String</code> objects
+     */
+    public Enumeration getAvailableVariants(String source, String target) {
+        CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
+        CaseInsensitiveString citrg = new CaseInsensitiveString(target);
+        Hashtable targets = (Hashtable) specDAG.get(cisrc);
+        if (targets == null) {
+            return new IDEnumeration(null);
+        }
+        Vector variants = (Vector) targets.get(citrg);
+        if (variants == null) {
+            return new IDEnumeration(null);
+        }
+        return new IDEnumeration(variants.elements());
+    }
+
+    //----------------------------------------------------------------------
+    // class TransliteratorRegistry: internal
+    //----------------------------------------------------------------------
+
+    /**
+     * Convenience method.  Calls 6-arg registerEntry().
+     */
+    private void registerEntry(String source,
+                               String target,
+                               String variant,
+                               Object entry,
+                               boolean visible) {
+        String s = source;
+        if (s.length() == 0) {
+            s = ANY;
+        }
+        String ID = TransliteratorIDParser.STVtoID(source, target, variant);
+        registerEntry(ID, s, target, variant, entry, visible);
+    }
+
+    /**
+     * Convenience method.  Calls 6-arg registerEntry().
+     */
+    private void registerEntry(String ID,
+                               Object entry,
+                               boolean visible) {
+        String[] stv = TransliteratorIDParser.IDtoSTV(ID);
+        // Only need to do this if ID.indexOf('-') < 0
+        String id = TransliteratorIDParser.STVtoID(stv[0], stv[1], stv[2]);
+        registerEntry(id, stv[0], stv[1], stv[2], entry, visible);
+    }
+
+    /**
+     * Register an entry object (adopted) with the given ID, source,
+     * target, and variant strings.
+     */
+    private void registerEntry(String ID,
+                               String source,
+                               String target,
+                               String variant,
+                               Object entry,
+                               boolean visible) {
+        CaseInsensitiveString ciID = new CaseInsensitiveString(ID);
+
+        // Store the entry within an array so it can be modified later
+        if (!(entry instanceof Object[])) {
+            entry = new Object[] { entry };
+        }
+
+        registry.put(ciID, entry);
+        if (visible) {
+            registerSTV(source, target, variant);
+            if (!availableIDs.contains(ciID)) {
+                availableIDs.addElement(ciID);
+            }
+        } else {
+            removeSTV(source, target, variant);
+            availableIDs.removeElement(ciID);
+        }
+    }
+
+    /**
+     * Register a source-target/variant in the specDAG.  Variant may be
+     * empty, but source and target must not be.  If variant is empty then
+     * the special variant NO_VARIANT is stored in slot zero of the
+     * UVector of variants.
+     */
+    private void registerSTV(String source,
+                             String target,
+                             String variant) {
+        // assert(source.length() > 0);
+        // assert(target.length() > 0);
+        CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
+        CaseInsensitiveString citrg = new CaseInsensitiveString(target);
+        CaseInsensitiveString civar = new CaseInsensitiveString(variant);
+        Hashtable targets = (Hashtable) specDAG.get(cisrc);
+        if (targets == null) {
+            targets = new Hashtable();
+            specDAG.put(cisrc, targets);
+        }
+        Vector variants = (Vector) targets.get(citrg);
+        if (variants == null) {
+            variants = new Vector();
+            targets.put(citrg, variants);
+        }
+        // assert(NO_VARIANT == "");
+        // We add the variant string.  If it is the special "no variant"
+        // string, that is, the empty string, we add it at position zero.
+        if (!variants.contains(civar)) {
+            if (variant.length() > 0) {
+                variants.addElement(civar);
+            } else {
+                variants.insertElementAt(civar, 0);
+            }
+        }
+    }
+
+    /**
+     * Remove a source-target/variant from the specDAG.
+     */
+    private void removeSTV(String source,
+                           String target,
+                           String variant) {
+        // assert(source.length() > 0);
+        // assert(target.length() > 0);
+        CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
+        CaseInsensitiveString citrg = new CaseInsensitiveString(target);
+        CaseInsensitiveString civar = new CaseInsensitiveString(variant);
+        Hashtable targets = (Hashtable) specDAG.get(cisrc);
+        if (targets == null) {
+            return; // should never happen for valid s-t/v
+        }
+        Vector variants = (Vector) targets.get(citrg);
+        if (variants == null) {
+            return; // should never happen for valid s-t/v
+        }
+        variants.removeElement(variant);
+        if (variants.size() == 0) {
+            targets.remove(citrg); // should delete variants
+            if (targets.size() == 0) {
+                specDAG.remove(cisrc); // should delete targets
+            }
+        }
+    }
+
+    private static final boolean DEBUG = false;
+
+    /**
+     * Attempt to find a source-target/variant in the dynamic registry
+     * store.  Return 0 on failure.
+     */
+    private Object[] findInDynamicStore(Spec src,
+                                      Spec trg,
+                                      String variant) {
+        String ID = TransliteratorIDParser.STVtoID(src.get(), trg.get(), variant);
+        if (DEBUG) {
+            System.out.println("TransliteratorRegistry.findInDynamicStore:" +
+                               ID);
+        }
+        return (Object[]) registry.get(new CaseInsensitiveString(ID));
+    }
+
+    /**
+     * Attempt to find a source-target/variant in the static locale
+     * resource store.  Do not perform fallback.  Return 0 on failure.
+     *
+     * On success, create a new entry object, register it in the dynamic
+     * store, and return a pointer to it, but do not make it public --
+     * just because someone requested something, we do not expand the
+     * available ID list (or spec DAG).
+     */
+    private Object[] findInStaticStore(Spec src,
+                                     Spec trg,
+                                     String variant) {
+        if (DEBUG) {
+            String ID = TransliteratorIDParser.STVtoID(src.get(), trg.get(), variant);
+            System.out.println("TransliteratorRegistry.findInStaticStore:" +
+                               ID);
+        }
+        Object[] entry = null;
+        if (src.isLocale()) {
+            entry = findInBundle(src, trg, variant, Transliterator.FORWARD);
+        } else if (trg.isLocale()) {
+            entry = findInBundle(trg, src, variant, Transliterator.REVERSE);
+        }
+
+        // If we found an entry, store it in the Hashtable for next
+        // time.
+        if (entry != null) {
+            registerEntry(src.getTop(), trg.getTop(), variant, entry, false);
+        }
+
+        return entry;
+    }
+
+    /**
+     * Attempt to find an entry in a single resource bundle.  This is
+     * a one-sided lookup.  findInStaticStore() performs up to two such
+     * lookups, one for the source, and one for the target.
+     *
+     * Do not perform fallback.  Return 0 on failure.
+     *
+     * On success, create a new Entry object, populate it, and return it.
+     * The caller owns the returned object.
+     */
+    private Object[] findInBundle(Spec specToOpen,
+                                  Spec specToFind,
+                                  String variant,
+                                  int direction) {
+        // assert(specToOpen.isLocale());
+        ResourceBundle res = specToOpen.getBundle();
+
+        if (res == null) {
+            // This means that the bundle's locale does not match
+            // the current level of iteration for the spec.
+            return null;
+        }
+
+        for (int pass=0; pass<2; ++pass) {
+            StringBuffer tag = new StringBuffer();
+            // First try either TransliteratorTo_xxx or
+            // TransliterateFrom_xxx, then try the bidirectional
+            // Transliterate_xxx.  This precedence order is arbitrary
+            // but must be consistent and documented.
+            if (pass == 0) {
+                tag.append(direction == Transliterator.FORWARD ?
+                           "TransliterateTo_" : "TransliterateFrom_");
+            } else {
+                tag.append("Transliterate_");
+            }
+            tag.append(specToFind.get().toUpperCase());
+
+            try {
+                // The Transliterate*_xxx resource is an array of
+                // strings of the format { <v0>, <r0>, ... }.  Each
+                // <vi> is a variant name, and each <ri> is a rule.
+                String[] subres = res.getStringArray(tag.toString());
+
+                // assert(subres != null);
+                // assert(subres.length % 2 == 0);
+                int i = 0;
+                if (variant.length() != 0) {
+                    for (i=0; i<subres.length; i+= 2) {
+                        if (subres[i].equalsIgnoreCase(variant)) {
+                            break;
+                        }
+                    }
+                }
+
+                if (i < subres.length) {
+                    // We have a match, or there is no variant and i == 0.
+                    // We have succeeded in loading a string from the
+                    // locale resources.  Return the rule string which
+                    // will itself become the registry entry.
+
+                    // The direction is always forward for the
+                    // TransliterateTo_xxx and TransliterateFrom_xxx
+                    // items; those are unidirectional forward rules.
+                    // For the bidirectional Transliterate_xxx items,
+                    // the direction is the value passed in to this
+                    // function.
+                    int dir = (pass == 0) ? Transliterator.FORWARD : direction;
+                    return new Object[] { new LocaleEntry(subres[i+1], dir) };
+                }
+
+            } catch (MissingResourceException e) { 
+				if (DEBUG) System.out.println("missing resource: " + e); 
+			}
+        }
+
+        // If we get here we had a missing resource exception or we
+        // failed to find a desired variant.
+        return null;
+    }
+
+    /**
+     * Convenience method.  Calls 3-arg find().
+     */
+    private Object[] find(String ID) {
+        String[] stv = TransliteratorIDParser.IDtoSTV(ID);
+        return find(stv[0], stv[1], stv[2]);
+    }
+
+    /**
+     * Top-level find method.  Attempt to find a source-target/variant in
+     * either the dynamic or the static (locale resource) store.  Perform
+     * fallback.
+     *
+     * Lookup sequence for ss_SS_SSS-tt_TT_TTT/v:
+     *
+     *   ss_SS_SSS-tt_TT_TTT/v -- in hashtable
+     *   ss_SS_SSS-tt_TT_TTT/v -- in ss_SS_SSS (no fallback)
+     *
+     *     repeat with t = tt_TT_TTT, tt_TT, tt, and tscript
+     *
+     *     ss_SS_SSS-t/*
+     *     ss_SS-t/*
+     *     ss-t/*
+     *     sscript-t/*
+     *
+     * Here * matches the first variant listed.
+     *
+     * Caller does NOT own returned object.  Return 0 on failure.
+     */
+    private Object[] find(String source,
+                          String target,
+                          String variant) {
+
+        Spec src = new Spec(source);
+        Spec trg = new Spec(target);
+        Object[] entry = null;
+
+        if (variant.length() != 0) {
+
+            // Seek exact match in hashtable
+            entry = findInDynamicStore(src, trg, variant);
+            if (entry != null) {
+                return entry;
+            }
+
+            // Seek exact match in locale resources
+            entry = findInStaticStore(src, trg, variant);
+            if (entry != null) {
+                return entry;
+            }
+        }
+
+        for (;;) {
+            src.reset();
+            for (;;) {
+                // Seek match in hashtable
+                entry = findInDynamicStore(src, trg, NO_VARIANT);
+                if (entry != null) {
+                    return entry;
+                }
+
+                // Seek match in locale resources
+                entry = findInStaticStore(src, trg, NO_VARIANT);
+                if (entry != null) {
+                    return entry;
+                }
+                if (!src.hasFallback()) {
+                    break;
+                }
+                src.next();
+            }
+            if (!trg.hasFallback()) {
+                break;
+            }
+            trg.next();
+        }
+
+        return null;
+    }
+
+    /**
+     * Given an Entry object, instantiate it.  Caller owns result.  Return
+     * 0 on failure.
+     *
+     * Return a non-empty aliasReturn value if the ID points to an alias.
+     * We cannot instantiate it ourselves because the alias may contain
+     * filters or compounds, which we do not understand.  Caller should
+     * make aliasReturn empty before calling.
+     *
+     * The entry object is assumed to reside in the dynamic store.  It may be
+     * modified.
+     */
+    private Transliterator instantiateEntry(String ID,
+                                            Object[] entryWrapper,
+                                            StringBuffer aliasReturn) {
+        // We actually modify the entry object in some cases.  If it
+        // is a string, we may partially parse it and turn it into a
+        // more processed precursor.  This makes the next
+        // instantiation faster and allows sharing of immutable
+        // components like the RuleBasedTransliterator.Data objects.
+        // For this reason, the entry object is an Object[] of length
+        // 1.
+
+        for (;;) {
+            Object entry = entryWrapper[0];
+
+            if (entry instanceof RuleBasedTransliterator.Data) {
+                RuleBasedTransliterator.Data data = (RuleBasedTransliterator.Data) entry;
+                return new RuleBasedTransliterator(ID, data, null);
+            } else if (entry instanceof Class) {
+                try {
+                    return (Transliterator) ((Class) entry).newInstance();
+                } catch (InstantiationException e) {
+                } catch (IllegalAccessException e2) {}
+                return null;
+            } else if (entry instanceof AliasEntry) {
+                aliasReturn.append(((AliasEntry) entry).alias);
+                return null;
+            } else if (entry instanceof Transliterator.Factory) {
+                return ((Transliterator.Factory) entry).getInstance(ID);
+            } else if (entry instanceof CompoundRBTEntry) {
+                return ((CompoundRBTEntry) entry).getInstance();
+            } else if (entry instanceof Transliterator) {
+                return (Transliterator) entry;
+            }
+
+            // At this point entry type must be either RULES_FORWARD or
+            // RULES_REVERSE.  We process the rule data into a
+            // TransliteratorRuleData object, and possibly also into an
+            // .id header and/or footer.  Then we modify the registry with
+            // the parsed data and retry.
+
+            TransliteratorParser parser = new TransliteratorParser();
+
+            try {
+                ResourceEntry re = (ResourceEntry) entry;
+                ResourceReader r = null;
+                try {
+                    r = new ResourceReader(re.resourceName, re.encoding);
+                } catch (UnsupportedEncodingException e) {
+                    // This should never happen; UTF8 is always supported
+                    throw new RuntimeException(e.getMessage());
+                }
+                
+                parser.parse(r, re.direction);
+            } catch (ClassCastException e) {
+                // If we pull a rule from a locale resource bundle it will
+                // be a LocaleEntry.
+                LocaleEntry le = (LocaleEntry) entry;
+                parser.parse(le.rule, le.direction);
+            }
+
+            // Reset entry to something that we process at the
+            // top of the loop, then loop back to the top.  As long as we
+            // do this, we only loop through twice at most.
+            // NOTE: The logic here matches that in
+            // Transliterator.createFromRules().
+            if (parser.idBlock.length() == 0) {
+                if (parser.data == null) {
+                    // No idBlock, no data -- this is just an
+                    // alias for Null
+                    entryWrapper[0] = new AliasEntry(NullTransliterator._ID);
+                } else {
+                    // No idBlock, data != 0 -- this is an
+                    // ordinary RBT_DATA
+                    entryWrapper[0] = parser.data;
+                }
+            } else {
+                if (parser.data == null) {
+                    // idBlock, no data -- this is an alias.  The ID has
+                    // been munged from reverse into forward mode, if
+                    // necessary, so instantiate the ID in the forward
+                    // direction.
+                    entryWrapper[0] = new AliasEntry(parser.idBlock);
+                } else {
+                    // idBlock and data -- this is a compound
+                    // RBT
+                    entryWrapper[0] = new CompoundRBTEntry(
+                        ID, parser.idBlock, parser.idSplitPoint, parser.data, parser.compoundFilter);
+                }
+            }
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/UTF16.java b/src/com/ibm/icu/text/UTF16.java
new file mode 100755
index 0000000..dacab27
--- /dev/null
+++ b/src/com/ibm/icu/text/UTF16.java
@@ -0,0 +1,2263 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2001, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/UTF16.java,v $ 
+* $Date: 2002/07/16 00:21:13 $ 
+* $Revision: 1.22 $
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.NormalizerImpl;
+/**
+* Standalone utility class providing UTF16 character conversions and indexing 
+* conversions.
+* <p>Code that uses strings alone rarely need modification. 
+* By design, UTF-16 does not allow overlap, so searching for strings is a safe 
+* operation. Similarly, concatenation is always safe. Substringing is safe if 
+* the start and end are both on UTF-32 boundaries. In normal code, the values 
+* for start and end are on those boundaries, since they arose from operations 
+* like searching. If not, the nearest UTF-32 boundaries can be determined 
+* using <code>bounds()</code>.
+* <strong>Examples:</strong>
+* <p>The following examples illustrate use of some of these methods. 
+* <pre>
+* // iteration forwards: Original
+* for (int i = 0; i < s.length(); ++i) {
+*   char ch = s.charAt(i);
+*   doSomethingWith(ch);
+* }
+*
+* // iteration forwards: Changes for UTF-32
+* int ch;
+* for (int i = 0; i < s.length(); i+=UTF16.getCharCount(ch)) {
+*   ch = UTF16.charAt(s,i);
+*   doSomethingWith(ch);
+* }
+*
+* // iteration backwards: Original
+* for (int i = s.length() -1; i >= 0; --i) {
+*   char ch = s.charAt(i);
+*   doSomethingWith(ch);
+* }
+*  
+* // iteration backwards: Changes for UTF-32
+* int ch;
+* for (int i = s.length() -1; i > 0; i-=UTF16.getCharCount(ch)) {
+*   ch = UTF16.charAt(s,i);
+*   doSomethingWith(ch);
+* }
+* </pre>
+* <strong>Notes:</strong>
+* <ul>
+*   <li>
+*   <strong>Naming:</strong> For clarity, High and Low surrogates are called 
+*   <code>Lead</code> and <code>Trail</code> in the API, which gives a better 
+*   sense of their ordering in a string. <code>offset16</code> and 
+*   <code>offset32</code> are used to distinguish offsets to UTF-16 
+*   boundaries vs offsets to UTF-32 boundaries. <code>int char32</code> is 
+*   used to contain UTF-32 characters, as opposed to <code>char16</code>, 
+*   which is a UTF-16 code unit.
+*   </li>
+*   <li>
+*   <strong>Roundtripping Offsets:</strong> You can always roundtrip from a 
+*   UTF-32 offset to a UTF-16 offset and back. Because of the difference in 
+*   structure, you can roundtrip from a UTF-16 offset to a UTF-32 offset and 
+*   back if and only if <code>bounds(string, offset16) != TRAIL</code>.
+*   </li>
+*   <li>
+*   <strong>Exceptions:</strong> The error checking will throw an exception 
+*   if indices are out of bounds. Other than than that, all methods will 
+*   behave reasonably, even if unmatched surrogates or out-of-bounds UTF-32 
+*   values are present. <code>UCharacter.isLegal()</code> can be used to check 
+*   for validity if desired.
+*   </li>
+*   <li>
+*   <strong>Unmatched Surrogates:</strong> If the string contains unmatched 
+*   surrogates, then these are counted as one UTF-32 value. This matches 
+*   their iteration behavior, which is vital. It also matches common display 
+*   practice as missing glyphs (see the Unicode Standard Section 5.4, 5.5).
+*   </li>
+*   <li>
+*     <strong>Optimization:</strong> The method implementations may need 
+*     optimization if the compiler doesn't fold static final methods. Since 
+*     surrogate pairs will form an exceeding small percentage of all the text 
+*     in the world, the singleton case should always be optimized for.
+*   </li>
+* </ul>
+* @author Mark Davis, with help from Markus Scherer
+* @since Nov2400
+*/
+
+public final class UTF16
+{
+    // public variables ---------------------------------------------------
+      
+    /**
+    * Value returned in <code><a href="#bounds(java.lang.String, int)">
+    * bounds()</a></code>.
+    * These values are chosen specifically so that it actually represents  
+    * the position of the character 
+    * [offset16 - (value >> 2), offset16 + (value & 3)]
+    */
+    public static final int SINGLE_CHAR_BOUNDARY = 1, 
+                            LEAD_SURROGATE_BOUNDARY = 2, 
+                            TRAIL_SURROGATE_BOUNDARY = 5;
+    /** 
+    * The lowest Unicode code point value.
+    */
+    public static final int CODEPOINT_MIN_VALUE = 0;
+    /**
+    * The highest Unicode code point value (scalar value) according to the 
+    * Unicode Standard.
+    */
+    public static final int CODEPOINT_MAX_VALUE = 0x10ffff; 
+    /**
+    * The minimum value for Supplementary code points
+    */
+    public static final int SUPPLEMENTARY_MIN_VALUE  = 0x10000;  
+    /**
+     * Lead surrogate minimum value
+     */
+    public static final int LEAD_SURROGATE_MIN_VALUE = 0xD800;
+	/**
+     * Trail surrogate minimum value
+     */
+    public static final int TRAIL_SURROGATE_MIN_VALUE = 0xDC00; 
+    /**
+     * Lead surrogate maximum value
+     */
+    public static final int LEAD_SURROGATE_MAX_VALUE = 0xDBFF;
+	/**
+     * Trail surrogate maximum value
+     */
+    public static final int TRAIL_SURROGATE_MAX_VALUE = 0xDFFF;
+    /**
+     * Surrogate minimum value
+     */
+    public static final int SURROGATE_MIN_VALUE = LEAD_SURROGATE_MIN_VALUE;
+    /**
+     * Maximum surrogate value
+     */
+    public static final int SURROGATE_MAX_VALUE = TRAIL_SURROGATE_MAX_VALUE; 
+                              
+    // constructor --------------------------------------------------------
+      
+    /**
+    * Prevent instance from being created.
+    */
+    private UTF16() 
+    {
+    }
+
+    // public method ------------------------------------------------------
+      
+    /**
+    * Extract a single UTF-32 value from a string.
+    * Used when iterating forwards or backwards (with 
+    * <code>UTF16.getCharCount()</code>, as well as random access. If a 
+    * validity check is required, use 
+    * <code><a href="../UCharacter.html#isLegal(char)">
+    * UCharacter.isLegal()</a></code> on the return value.
+    * If the char retrieved is part of a surrogate pair, its supplementary 
+    * character will be returned. If a complete supplementary character is 
+    * not found the incomplete character will be returned
+    * @param source array of UTF-16 chars
+    * @param offset16 UTF-16 offset to the start of the character.
+    * @return UTF-32 value for the UTF-32 value that contains the char at 
+    *         offset16. The boundaries of that codepoint are the same as in 
+    *         <code>bounds32()</code>. 
+    * @exception IndexOutOfBoundsException thrown if offset16 is out of 
+    *            bounds.
+    */
+    public static int charAt(String source, int offset16) 
+    {             
+        if (offset16 < 0 || offset16 >= source.length()) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+          
+        char single = source.charAt(offset16);
+        if (single < LEAD_SURROGATE_MIN_VALUE || 
+            single > TRAIL_SURROGATE_MAX_VALUE) {
+            return single;
+        }
+
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is 
+        // low, look both directions.
+                
+	    if (single <= LEAD_SURROGATE_MAX_VALUE) {
+	        ++ offset16;
+	        if (source.length() != offset16) {
+    	        char trail = source.charAt(offset16);
+	            if (trail >= TRAIL_SURROGATE_MIN_VALUE &&
+	                trail <= TRAIL_SURROGATE_MAX_VALUE) {
+	                return UCharacterProperty.getRawSupplementary(single, 
+	                                                              trail);
+	            }
+	        }
+	    } 
+	    else 
+	    { 
+	        -- offset16;
+	        if (offset16 >= 0) {
+	        	// single is a trail surrogate so
+	        	char lead = source.charAt(offset16);
+	        	if (lead >= LEAD_SURROGATE_MIN_VALUE &&
+	        	    lead <= LEAD_SURROGATE_MAX_VALUE) {
+	         	   return UCharacterProperty.getRawSupplementary(lead, 
+	         	                                                 single);
+	        	}
+	        }
+	    } 
+	    return single; // return unmatched surrogate
+    }
+      
+    /**
+    * Extract a single UTF-32 value from a string.
+    * Used when iterating forwards or backwards (with
+    * <code>UTF16.getCharCount()</code>, as well as random access. If a 
+    * validity check is required, use 
+    * <code><a href="../UCharacter.html#isLegal(char)">UCharacter.isLegal()
+    * </a></code> on the return value.
+    * If the char retrieved is part of a surrogate pair, its supplementary
+    * character will be returned. If a complete supplementary character is 
+    * not found the incomplete character will be returned
+    * @param source UTF-16 chars string buffer
+    * @param offset16 UTF-16 offset to the start of the character.
+    * @return UTF-32 value for the UTF-32 value that contains the char at
+    *         offset16. The boundaries of that codepoint are the same as in
+    *         <code>bounds32()</code>.
+    * @exception IndexOutOfBoundsException thrown if offset16 is out of 
+    *            bounds.
+    */
+    public static int charAt(StringBuffer source, int offset16)
+    {
+        if (offset16 < 0 || offset16 >= source.length()) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+          
+        char single = source.charAt(offset16);
+        if (!isSurrogate(single)) {
+            return single;
+        }
+
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is 
+        // low, look both directions.
+                
+	    if (single <= LEAD_SURROGATE_MAX_VALUE) 
+	    {
+	        ++ offset16;
+	        if (source.length() != offset16)
+	        {
+	        char trail = source.charAt(offset16);
+	        if (isTrailSurrogate(trail))
+	            return UCharacterProperty.getRawSupplementary(single, trail);
+	        }
+	    } 
+	    else 
+	    { 
+	        -- offset16;
+	        if (offset16 >= 0)
+	        {
+	        // single is a trail surrogate so
+	        char lead = source.charAt(offset16);
+	        if (isLeadSurrogate(lead)) {
+	            return UCharacterProperty.getRawSupplementary(lead, single);
+	        }
+	        }
+	    } 
+	    return single; // return unmatched surrogate
+    }
+      
+    /**
+    * Extract a single UTF-32 value from a substring.
+    * Used when iterating forwards or backwards (with
+    * <code>UTF16.getCharCount()</code>, as well as random access. If a
+    * validity check is required, use 
+    * <code><a href="../UCharacter.html#isLegal(char)">UCharacter.isLegal()
+    * </a></code> on the return value.
+    * If the char retrieved is part of a surrogate pair, its supplementary
+    * character will be returned. If a complete supplementary character is 
+    * not found the incomplete character will be returned
+    * @param source array of UTF-16 chars
+    * @param start offset to substring in the source array for analyzing
+    * @param limit offset to substring in the source array for analyzing
+    * @param offset16 UTF-16 offset relative to start
+    * @return UTF-32 value for the UTF-32 value that contains the char at
+    *         offset16. The boundaries of that codepoint are the same as in
+    *         <code>bounds32()</code>.
+    * @exception IndexOutOfBoundsException thrown if offset16 is not within 
+    *            the range of start and limit.
+    */
+    public static int charAt(char source[], int start, int limit, 
+                             int offset16)
+    {
+        offset16 += start;
+        if (offset16 < start || offset16 >= limit) {
+            throw new ArrayIndexOutOfBoundsException(offset16);
+        }
+            
+        char single = source[offset16];
+        if (!isSurrogate(single)) {
+            return single;
+        }
+
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is 
+        // low, look both directions.      
+	    if (single <= LEAD_SURROGATE_MAX_VALUE) {
+	        offset16 ++;
+	        if (offset16 >= limit) {
+	            return single;
+	        }
+	        char trail = source[offset16];
+	        if (isTrailSurrogate(trail)) {
+	            return UCharacterProperty.getRawSupplementary(single, trail);
+	        }
+        } 
+        else { // isTrailSurrogate(single), so
+            if (offset16 == start) {
+                return single;
+            }
+            offset16 --;
+	        char lead = source[offset16];
+	        if (isLeadSurrogate(lead))
+	            return UCharacterProperty.getRawSupplementary(lead, single);
+        }
+        return single; // return unmatched surrogate
+    }
+      
+    /**
+    * Extract a single UTF-32 value from a string.
+    * Used when iterating forwards or backwards (with
+    * <code>UTF16.getCharCount()</code>, as well as random access. If a 
+    * validity check is required, use 
+    * <code><a href="../UCharacter.html#isLegal(char)">UCharacter.isLegal()
+    * </a></code> on the return value.
+    * If the char retrieved is part of a surrogate pair, its supplementary
+    * character will be returned. If a complete supplementary character is 
+    * not found the incomplete character will be returned
+    * @param source UTF-16 chars string buffer
+    * @param offset16 UTF-16 offset to the start of the character.
+    * @return UTF-32 value for the UTF-32 value that contains the char at
+    *         offset16. The boundaries of that codepoint are the same as in
+    *         <code>bounds32()</code>.
+    * @exception IndexOutOfBoundsException thrown if offset16 is out of 
+    *            bounds.
+    */
+    public static int charAt(Replaceable source, int offset16)
+    {
+        if (offset16 < 0 || offset16 >= source.length()) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+          
+        char single = source.charAt(offset16);
+        if (!isSurrogate(single)) {
+            return single;
+        }
+
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is 
+        // low, look both directions.
+                
+	    if (single <= LEAD_SURROGATE_MAX_VALUE) 
+	    {
+	        ++ offset16;
+	        if (source.length() != offset16)
+	        {
+	        char trail = source.charAt(offset16);
+	        if (isTrailSurrogate(trail))
+	            return UCharacterProperty.getRawSupplementary(single, trail);
+	        }
+	    } 
+	    else 
+	    { 
+	        -- offset16;
+	        if (offset16 >= 0)
+	        {
+	        // single is a trail surrogate so
+	        char lead = source.charAt(offset16);
+	        if (isLeadSurrogate(lead)) {
+	            return UCharacterProperty.getRawSupplementary(lead, single);
+	        }
+	        }
+	    } 
+	    return single; // return unmatched surrogate
+    }
+      
+    /**
+    * Extract a single UTF-32 value from a string.
+    * If a validity check is required, use 
+    * <code><a href="../UCharacter.html#isLegal(char)">
+    * UCharacter.isLegal()</a></code> on the return value.
+    * If tbe char retrieved is part of a surrogate pair, its supplementary 
+    * character will be returned. If a complete supplementary character is 
+    * not found the incomplete character will be returned
+    * @return UTF-32 value for the UTF-32 value that contains the char at 
+    *         offset16. The boundaries of that codepoint are the same as in 
+    *         <code>bounds32()</code>. 
+    * @param source array of UTF-16 chars
+    * @param offset32 UTF-32 offset to the start of the character.
+    * @return a single UTF32 value
+    * @exception IndexOutOfBoundsException if offset16 is out of bounds.
+    * @deprecated to be removed after the year 2002, replaced by 
+    *      UTF16.charAt(source, UTF16.findOffsetFromCodePoint(source, 
+    *                   offset32));
+    */
+    public static int charAtCodePointOffset(String source, int offset32) 
+    {
+        return charAt(source, findOffsetFromCodePoint(source, offset32));
+    }
+      
+    /**
+    * Determines how many chars this char32 requires.
+    * If a validity check is required, use <code>
+    * <a href="../UCharacter.html#isLegal(char)">isLegal()</a></code> on 
+    * char32 before calling.
+    * @param ch the input codepoint.
+    * @return 2 if is in supplementary space, otherwise 1. 
+    */
+    public static int getCharCount(int char32) 
+    {
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+        	return 1;
+        }
+        return 2;
+    }
+      
+    /**
+    * Returns the type of the boundaries around the char at offset16.
+    * Used for random access.
+    * @param source text to analyse
+    * @param offset16 UTF-16 offset
+    * @return <ul>
+    *           <li> SINGLE_CHAR_BOUNDARY : a single char; the bounds are 
+    *                                       [offset16, offset16+1]
+    *           <li> LEAD_SURROGATE_BOUNDARY : a surrogate pair starting at 
+    *                                          offset16; 
+    *                                          the bounds are 
+    *                                          [offset16, offset16 + 2]
+    *           <li> TRAIL_SURROGATE_BOUNDARY : a surrogate pair starting at 
+    *                                           offset16 - 1; the bounds are 
+    *                                           [offset16 - 1, offset16 + 1]
+    *         </ul>
+    *         For bit-twiddlers, the return values for these are chosen so 
+    *         that the boundaries can be gotten by:
+    *         [offset16 - (value >> 2), offset16 + (value & 3)].
+    * @exception IndexOutOfBoundsException if offset16 is out of bounds.
+    */
+    public static int bounds(String source, int offset16) 
+    {
+        char ch = source.charAt(offset16);
+        if (isSurrogate(ch)) {
+            if (isLeadSurrogate(ch)) 
+            {
+                if (++ offset16 < source.length() && 
+                    isTrailSurrogate(source.charAt(offset16))) {
+                    return LEAD_SURROGATE_BOUNDARY;
+                }
+            } 
+            else {
+                // isTrailSurrogate(ch), so
+                -- offset16;
+                if (offset16 >= 0 && isLeadSurrogate(source.charAt(offset16))) {
+                    return TRAIL_SURROGATE_BOUNDARY;
+                }
+            }
+        }
+        return SINGLE_CHAR_BOUNDARY;
+    }
+      
+    /**
+    * Returns the type of the boundaries around the char at offset16. Used 
+    * for random access.
+    * @param source string buffer to analyse
+    * @param offset16 UTF16 offset
+    * @return
+    *     <ul>
+    *     <li> SINGLE_CHAR_BOUNDARY : a single char; the bounds are
+    *                                               [offset16, offset16 + 1]
+    *     <li> LEAD_SURROGATE_BOUNDARY : a surrogate pair starting at 
+    *                                    offset16; the bounds are 
+    *                                    [offset16, offset16 + 2]
+    *     <li> TRAIL_SURROGATE_BOUNDARY : a surrogate pair starting at 
+    *                                     offset16 - 1; the bounds are 
+    *                                     [offset16 - 1, offset16 + 1]
+    *     </ul>
+    * For bit-twiddlers, the return values for these are chosen so that the 
+    * boundaries can be gotten by: 
+    *                    [offset16 - (value >> 2), offset16 + (value & 3)].
+    * @exception IndexOutOfBoundsException if offset16 is out of bounds.
+    */
+    public static int bounds(StringBuffer source, int offset16)
+    {
+        char ch = source.charAt(offset16);
+        if (isSurrogate(ch)) {
+            if (isLeadSurrogate(ch)) 
+            {
+                if (++ offset16 < source.length() && 
+                    isTrailSurrogate(source.charAt(offset16))) {
+                    return LEAD_SURROGATE_BOUNDARY;
+                }
+            } 
+            else {
+                // isTrailSurrogate(ch), so
+                -- offset16;
+                if (offset16 >= 0 && 
+                    isLeadSurrogate(source.charAt(offset16))) {
+                    return TRAIL_SURROGATE_BOUNDARY;
+                }
+            }
+        }
+        return SINGLE_CHAR_BOUNDARY;
+    }
+
+    /**
+    * Returns the type of the boundaries around the char at offset16. Used 
+    * for random access. Note that the boundaries are determined with respect 
+    * to the subarray, hence the char array {0xD800, 0xDC00} has the result 
+    * SINGLE_CHAR_BOUNDARY for start = offset16 = 0 and limit = 1.
+    * @param source char array to analyse
+    * @param start offset to substring in the source array for analyzing
+    * @param limit offset to substring in the source array for analyzing
+    * @param offset16 UTF16 offset relative to start
+    * @return
+    *     <ul>
+    *         <li> SINGLE_CHAR_BOUNDARY : a single char; the bounds are
+    *         <li> LEAD_SURROGATE_BOUNDARY : a surrogate pair starting at
+    *                       offset16; the bounds are [offset16, offset16 + 2]
+    *         <li> TRAIL_SURROGATE_BOUNDARY : a surrogate pair starting at
+    *               offset16 - 1; the bounds are [offset16 - 1, offset16 + 1]
+    *     </ul>
+    * For bit-twiddlers, the boundary values for these are chosen so that the 
+    * boundaries can be gotten by: [offset16 - (boundvalue >> 2), offset16 
+    *                                                    + (boundvalue & 3)].
+    * @exception IndexOutOfBoundsException if offset16 is not within the 
+    *                                      range of start and limit.
+    */
+    public static int bounds(char source[], int start, int limit, 
+                             int offset16)
+    {
+        offset16 += start;
+        if (offset16 < start || offset16 >= limit) {
+            throw new ArrayIndexOutOfBoundsException(offset16);
+        }
+        char ch = source[offset16];
+        if (isSurrogate(ch)) {
+            if (isLeadSurrogate(ch)) {
+                ++ offset16;
+                if (offset16 < limit && isTrailSurrogate(source[offset16])) {
+                    return LEAD_SURROGATE_BOUNDARY;
+                }
+            } 
+            else { // isTrailSurrogate(ch), so
+                -- offset16;
+                if (offset16 >= start && isLeadSurrogate(source[offset16])) {
+                    return TRAIL_SURROGATE_BOUNDARY;
+                }
+            }
+        }
+        return SINGLE_CHAR_BOUNDARY;    
+    }
+
+    /**
+    * Returns the type of the boundaries around the char at offset32. Used 
+    * for random access.
+    * @param source string to analyse
+    * @param offset32 UTF32 offset
+    * @return
+    *     <ul>
+    *         <li> SINGLE_CHAR_BOUNDARY : a single char
+    *         <li> LEAD_SURROGATE_BOUNDARY : a surrogate pair starting at
+    *                                        offset32
+    *     </ul>
+    * For bit-twiddlers, see <a href=#bounds(java.lang.String, int)>
+    * bounds(java.lang.String, int)</a> for information on the choice of the 
+    * boundary values.
+    * @exception IndexOutOfBoundsException if offset16 is out of bounds.
+    * @deprecated will be removed after end of year 2002, replaced by
+    *  UTF16.bounds(source, UTF16.findOffsetFromCodePoint(source, offset32));
+    */
+    public static int boundsAtCodePointOffset(String source, int offset32) 
+    {
+        return bounds(source, findOffsetFromCodePoint(source, offset32));
+    }
+
+    /**
+    * Determines whether the <b>code value is a surrogate.
+    * @param ch the input character.
+    * @return true iff the input character is a surrogate.
+    */
+    public static boolean isSurrogate(char char16) 
+    {
+        return LEAD_SURROGATE_MIN_VALUE <= char16 && 
+            char16 <= TRAIL_SURROGATE_MAX_VALUE;
+    }
+        
+    /**
+    * Determines whether the character is a trail surrogate.
+    * @param char16 the input character.
+    * @return true iff the input character is a trail surrogate.
+    */
+    public static boolean isTrailSurrogate(char char16) 
+    {
+        return (TRAIL_SURROGATE_MIN_VALUE <= char16 && 
+                char16 <= TRAIL_SURROGATE_MAX_VALUE);
+    }
+        
+    /**
+    * Determines whether the character is a lead surrogate.
+    * @param char16 the input character.
+    * @return true iff the input character is a lead surrogate
+    */
+    public static boolean isLeadSurrogate(char char16) 
+    {
+        return LEAD_SURROGATE_MIN_VALUE <= char16 && 
+            char16 <= LEAD_SURROGATE_MAX_VALUE;
+    }
+            
+    /**
+    * Returns the lead surrogate.
+    * If a validity check is required, use 
+    * <code><a href="../UCharacter.html#isLegal(char)">isLegal()</a></code> 
+    * on char32 before calling.
+    * @param char32 the input character.
+    * @return lead surrogate if the getCharCount(ch) is 2; <br>
+    *         and 0 otherwise (note: 0 is not a valid lead surrogate).
+    */
+    public static char getLeadSurrogate(int char32) 
+    {
+        if (char32 >= SUPPLEMENTARY_MIN_VALUE) {
+        	return (char)(LEAD_SURROGATE_OFFSET_ + 
+                      (char32 >> LEAD_SURROGATE_SHIFT_));
+        }
+            
+        return 0;
+    }
+        
+    /**
+    * Returns the trail surrogate.
+    * If a validity check is required, use 
+    * <code><a href="../UCharacter.html#isLegal(char)">isLegal()</a></code> 
+    * on char32 before calling.
+    * @param char32 the input character.
+    * @return the trail surrogate if the getCharCount(ch) is 2; <br>otherwise 
+    *         the character itself
+    */
+    public static char getTrailSurrogate(int char32) 
+    {
+        if (char32 >= SUPPLEMENTARY_MIN_VALUE) {
+        	return (char)(TRAIL_SURROGATE_MIN_VALUE + 
+                      (char32 & TRAIL_SURROGATE_MASK_));       
+        }
+          
+        return (char)char32;
+    }
+        
+    /**
+    * Convenience method corresponding to String.valueOf(char). Returns a one 
+    * or two char string containing the UTF-32 value in UTF16 format. If a 
+    * validity check is required, use 
+    * <a href="../UCharacter.html#isLegal(char)">isLegal()</a></code> on 
+    * char32 before calling.
+    * @param char32 the input character.
+    * @return string value of char32 in UTF16 format
+    * @exception IllegalArgumentException thrown if char32 is a invalid 
+    *            codepoint.
+    */
+    public static String valueOf(int char32)
+    {
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+        	throw new IllegalArgumentException("Illegal codepoint");
+        }
+        return toString(char32);
+    }
+      
+    /**
+    * Convenience method corresponding to String.valueOf(codepoint at 
+    * offset16). 
+    * Returns a one or two char string containing the UTF-32 value in UTF16 
+    * format. If offset16 indexes a surrogate character, the whole 
+    * supplementary codepoint will be returned.
+    * If a validity check is required, use 
+    * <a href="../UCharacter.html#isLegal(char)">isLegal()</a></code> on the 
+    * codepoint at offset16 before calling.
+    * The result returned will be a newly created String obtained by calling 
+    * source.substring(..) with the appropriate indexes.
+    * @param source the input string.
+    * @param offset16 the UTF16 index to the codepoint in source
+    * @return string value of char32 in UTF16 format
+    */
+    public static String valueOf(String source, int offset16)
+    {
+        switch (bounds(source, offset16)) {
+            case LEAD_SURROGATE_BOUNDARY: 
+                        return source.substring(offset16, offset16 + 2);
+            case TRAIL_SURROGATE_BOUNDARY: 
+                        return source.substring(offset16 - 1, offset16 + 1);
+            default: return source.substring(offset16, offset16 + 1);
+        }
+    }
+      
+    /**
+    * Convenience method corresponding to 
+    * StringBuffer.valueOf(codepoint at offset16). 
+    * Returns a one or two char string containing the UTF-32 value in UTF16 
+    * format. If offset16 indexes a surrogate character, the whole 
+    * supplementary codepoint will be returned.
+    * If a validity check is required, use 
+    * <a href="../UCharacter.html#isLegal(char)">isLegal()</a></code> on the 
+    * codepoint at offset16 before calling.
+    * The result returned will be a newly created String obtained by calling 
+    * source.substring(..) with the appropriate indexes.
+    * @param source the input string buffer.
+    * @param offset16 the UTF16 index to the codepoint in source
+    * @return string value of char32 in UTF16 format
+    */
+    public static String valueOf(StringBuffer source, int offset16)
+    {
+        switch (bounds(source, offset16)) {
+            case LEAD_SURROGATE_BOUNDARY: 
+                         return source.substring(offset16, offset16 + 2);
+            case TRAIL_SURROGATE_BOUNDARY: 
+                         return source.substring(offset16 - 1, offset16 + 1);
+            default: return source.substring(offset16, offset16 + 1);
+        }
+    }
+      
+    /**
+    * Convenience method. 
+    * Returns a one or two char string containing the UTF-32 value in UTF16 
+    * format. If offset16 indexes a surrogate character, the whole 
+    * supplementary codepoint will be returned, except when either the 
+    * leading or trailing surrogate character lies out of the specified 
+    * subarray. In the latter case, only the surrogate character within 
+    * bounds will be returned.
+    * If a validity check is required, use 
+    * <a href="../UCharacter.html#isLegal(char)">isLegal()</a></code> on the 
+    * codepoint at offset16 before calling.
+    * The result returned will be a newly created String containing the 
+    * relevant characters.
+    * @param source the input char array.
+    * @param start start index of the subarray
+    * @param limit end index of the subarray
+    * @param offset16 the UTF16 index to the codepoint in source relative to 
+    *        start
+    * @return string value of char32 in UTF16 format
+    */
+    public static String valueOf(char source[], int start, int limit,
+                                 int offset16)
+    {
+        switch (bounds(source, start, limit, offset16)) {
+            case LEAD_SURROGATE_BOUNDARY: 
+                return new String(source, start + offset16, 2);
+            case TRAIL_SURROGATE_BOUNDARY: 
+                return new String(source, start + offset16 - 1, 2);
+        }
+        return new String(source, start + offset16, 1);
+    }
+      
+    /**
+    * Returns the UTF-16 offset that corresponds to a UTF-32 offset. 
+    * Used for random access. See the <a name="_top_">class description</a> 
+    * for notes on roundtripping.
+    * @param source the UTF-16 string
+    * @param offset32 UTF-32 offset
+    * @return UTF-16 offset 
+    * @exception IndexOutOfBoundsException if offset32 is out of bounds.
+    */
+    public static int findOffsetFromCodePoint(String source, int offset32) 
+    {
+        char ch;
+        int size = source.length(),
+            result = 0,
+            count = offset32;
+        if (offset32 < 0 || offset32 > size) {
+        throw new StringIndexOutOfBoundsException(offset32);
+        }
+        while (result < size && count > 0)
+        {
+        ch = source.charAt(result);
+        if (isLeadSurrogate(ch) && ((result + 1) < size) && 
+            isTrailSurrogate(source.charAt(result + 1))) {
+            result ++;
+        }
+            
+        count --;
+        result ++;
+        }
+        if (count != 0) {
+        throw new StringIndexOutOfBoundsException(offset32);
+        }
+        return result;
+    }
+      
+    /**
+    * Returns the UTF-16 offset that corresponds to a UTF-32 offset.
+    * Used for random access. See the <a name="_top_">class description</a>
+    * for notes on roundtripping.
+    * @param source the UTF-16 string buffer
+    * @param offset32 UTF-32 offset
+    * @return UTF-16 offset
+    * @exception IndexOutOfBoundsException if offset32 is out of bounds.
+    */
+    public static int findOffsetFromCodePoint(StringBuffer source, 
+                                              int offset32)
+    {
+        char ch;
+        int size = source.length(),
+            result = 0,
+            count = offset32;
+        if (offset32 < 0 || offset32 > size) {
+        throw new StringIndexOutOfBoundsException(offset32);
+        }
+        while (result < size && count > 0)
+        {
+        ch = source.charAt(result);
+        if (isLeadSurrogate(ch) && ((result + 1) < size) && 
+            isTrailSurrogate(source.charAt(result + 1))) {
+            result ++;
+        }
+            
+        count --;
+        result ++;
+        }
+        if (count != 0) {
+        throw new StringIndexOutOfBoundsException(offset32);
+        }
+        return result;
+    }
+
+    /**
+    * Returns the UTF-16 offset that corresponds to a UTF-32 offset.
+    * Used for random access. See the <a name="_top_">class description</a>
+    * for notes on roundtripping.
+    * @param source the UTF-16 char array whose substring is to be analysed
+    * @param start offset of the substring to be analysed
+    * @param limit offset of the substring to be analysed
+    * @param offset32 UTF-32 offset relative to start
+    * @return UTF-16 offset relative to start
+    * @exception IndexOutOfBoundsException if offset32 is out of bounds.
+    */
+    public static int findOffsetFromCodePoint(char source[], int start, 
+                                              int limit, int offset32)
+    {
+        char ch;
+        int result = start,
+            count = offset32;
+        if (offset32 > limit - start) {
+        throw new ArrayIndexOutOfBoundsException(offset32);
+        }
+        while (result < limit && count > 0)
+        {
+        ch = source[result];
+        if (isLeadSurrogate(ch) && ((result + 1) < limit) && 
+            isTrailSurrogate(source[result + 1])) {
+            result ++;
+        }
+            
+        count --;
+        result ++;
+        }
+        if (count != 0) {
+        throw new ArrayIndexOutOfBoundsException(offset32);
+        }
+        return result - start;
+    }
+      
+    /**
+    * Returns the UTF-32 offset corresponding to the first UTF-32 boundary at 
+    * or after the given UTF-16 offset. Used for random access. See the 
+    * <a name="_top_">class description</a> for notes on roundtripping.<br>
+    * <i>Note: If the UTF-16 offset is into the middle of a surrogate pair, 
+    * then the UTF-32 offset of the <strong>lead</strong> of the pair is 
+    * returned.
+    * </i>
+    * <p>
+    * To find the UTF-32 length of a string, use:
+    *   <pre>
+    *     len32 = countCodePoint(source, source.length());
+    *   </pre>
+    * </p>
+    * <p>
+    * @param source text to analyse
+    * @param offset16 UTF-16 offset < source text length.
+    * @return UTF-32 offset
+    * @exception IndexOutOfBoundsException if offset16 is out of bounds.
+    */
+    public static int findCodePointOffset(String source, int offset16) 
+    {
+        if (offset16 < 0 || offset16 > source.length()) {
+        throw new StringIndexOutOfBoundsException(offset16);
+        }
+         
+        int result = 0;
+        char ch;
+        boolean hadLeadSurrogate = false;
+        
+        for (int i = 0; i < offset16; ++ i) 
+        {
+        ch = source.charAt(i);
+        if (hadLeadSurrogate && isTrailSurrogate(ch)) {
+            hadLeadSurrogate = false;           // count valid trail as zero
+        }
+        else
+        {
+            hadLeadSurrogate = isLeadSurrogate(ch);
+            ++ result;                          // count others as 1
+        }
+        }
+        
+        if (offset16 == source.length()) {
+            return result;
+        }
+        
+        // end of source being the less significant surrogate character
+        // shift result back to the start of the supplementary character
+        if (hadLeadSurrogate && (isTrailSurrogate(source.charAt(offset16)))) {
+        result --;
+        }
+          
+        return result;
+    }
+      
+    /**
+    * Returns the UTF-32 offset corresponding to the first UTF-32 boundary at
+    * the given UTF-16 offset. Used for random access. See the
+    * <a name="_top_">class description</a> for notes on roundtripping.<br>
+    * <i>Note: If the UTF-16 offset is into the middle of a surrogate pair, 
+    * then the UTF-32 offset of the <strong>lead</strong> of the pair is 
+    * returned.
+    * </i>
+    * <p>
+    * To find the UTF-32 length of a string, use:
+    *   <pre>
+    *     len32 = countCodePoint(source);
+    *   </pre>
+    * </p>
+    * <p>
+    * @param source text to analyse
+    * @param offset16 UTF-16 offset < source text length.
+    * @return UTF-32 offset
+    * @exception IndexOutOfBoundsException if offset16 is out of bounds.
+    */
+    public static int findCodePointOffset(StringBuffer source, int offset16)
+    {
+        if (offset16 < 0 || offset16 > source.length()) {
+        throw new StringIndexOutOfBoundsException(offset16);
+        }
+         
+        int result = 0;
+        char ch;
+        boolean hadLeadSurrogate = false;
+        
+        for (int i = 0; i < offset16; ++ i) 
+        {
+        ch = source.charAt(i);
+        if (hadLeadSurrogate && isTrailSurrogate(ch)) {
+            hadLeadSurrogate = false;           // count valid trail as zero
+        }
+        else
+        {
+            hadLeadSurrogate = isLeadSurrogate(ch);
+            ++ result;                          // count others as 1
+        }
+        }
+        
+        if (offset16 == source.length()) {
+            return result;
+        }
+        
+        // end of source being the less significant surrogate character
+        // shift result back to the start of the supplementary character
+        if (hadLeadSurrogate && (isTrailSurrogate(source.charAt(offset16)))) 
+        {
+            result --;
+        }
+          
+        return result;
+    }
+
+    /**
+    * Returns the UTF-32 offset corresponding to the first UTF-32 boundary at
+    * the given UTF-16 offset. Used for random access. See the
+    * <a name="_top_">class description</a> for notes on roundtripping.<br>
+    * <i>Note: If the UTF-16 offset is into the middle of a surrogate pair, 
+    * then the UTF-32 offset of the <strong>lead</strong> of the pair is 
+    * returned.
+    * </i>
+    * <p>
+    * To find the UTF-32 length of a substring, use:
+    *   <pre>
+    *     len32 = countCodePoint(source, start, limit);
+    *   </pre>
+    * </p>
+    * <p>
+    * @param source text to analyse
+    * @param start offset of the substring
+    * @param limit offset of the substring
+    * @param offset16 UTF-16 relative to start
+    * @return UTF-32 offset relative to start
+    * @exception IndexOutOfBoundsException if offset16 is not within the 
+    *            range of start and limit.
+    */
+    public static int findCodePointOffset(char source[], int start, int limit,
+                                          int offset16)
+    {
+        offset16 += start;
+        if (offset16 > limit) {
+        	throw new StringIndexOutOfBoundsException(offset16);
+        }
+         
+        int result = 0;
+        char ch;
+        boolean hadLeadSurrogate = false;
+        
+        for (int i = start; i < offset16; ++ i) 
+        {
+        	ch = source[i];
+        	if (hadLeadSurrogate && isTrailSurrogate(ch)) {
+            	hadLeadSurrogate = false; // count valid trail as zero
+        	}
+        	else
+        	{
+            	hadLeadSurrogate = isLeadSurrogate(ch);
+            	++ result;                          // count others as 1
+        	}
+        }
+        
+        if (offset16 == limit) {
+            return result;
+        }
+        
+        // end of source being the less significant surrogate character
+        // shift result back to the start of the supplementary character
+        if (hadLeadSurrogate && (isTrailSurrogate(source[offset16]))) {
+        	result --;
+        }
+          
+        return result;
+    }
+
+    /**
+    * Append a single UTF-32 value to the end of a StringBuffer.
+    * If a validity check is required, use 
+    * <a href="../UCharacter.html#isLegal(char)">isLegal()</a></code> on 
+    * char32 before calling.
+    * @param char32 value to append.
+    * @return the updated StringBuffer
+    * @exception IllegalArgumentException thrown when char32 does not lie within
+    *            the range of the Unicode codepoints
+    */
+    public static StringBuffer append(StringBuffer target, int char32)
+    {
+        // Check for irregular values
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Illegal codepoint");
+        }
+            
+        // Write the UTF-16 values
+        if (char32 >= SUPPLEMENTARY_MIN_VALUE) 
+        {
+            target.append(getLeadSurrogate(char32));
+	        target.append(getTrailSurrogate(char32));
+        } 
+	    else {
+	        target.append((char)char32);
+	    }
+	    return target;
+    }
+      
+    /**
+    * Adds a codepoint to offset16 position of the argument char array.
+    * @param target char array to be append with the new code point
+    * @param limit UTF16 offset which the codepoint will be appended.
+    * @param char32 code point to be appended
+    * @return offset after char32 in the array.
+    * @exception IllegalArgumentException thrown if there is not enough 
+    *            space for the append, or when char32 does not lie within
+    *            the range of the Unicode codepoints.
+    */
+    public static int append(char[] target, int limit, int char32)
+    {
+        // Check for irregular values
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Illegal codepoint");
+        }
+        // Write the UTF-16 values
+        if (char32 >= SUPPLEMENTARY_MIN_VALUE) 
+        {
+            target[limit ++] = getLeadSurrogate(char32);
+            target[limit ++] = getTrailSurrogate(char32);
+        }
+        else {
+            target[limit ++] = (char)char32;
+        }
+        return limit;
+    }
+        
+    /**
+    * Number of codepoints in a UTF16 String
+    * @param source UTF16 string
+    * @return number of codepoint in string
+    */
+    public static int countCodePoint(String source)
+    {
+        if (source == null || source.length() == 0) {
+            return 0;
+        }
+        return findCodePointOffset(source, source.length());
+    }
+      
+    /**
+    * Number of codepoints in a UTF16 String buffer
+    * @param source UTF16 string buffer
+    * @return number of codepoint in string
+    */
+    public static int countCodePoint(StringBuffer source)
+    {
+        if (source == null || source.length() == 0) {
+            return 0;
+        }
+        return findCodePointOffset(source, source.length());
+    }
+
+    /**
+    * Number of codepoints in a UTF16 char array substring
+    * @param source UTF16 char array
+    * @param start offset of the substring
+    * @param limit offset of the substring
+    * @return number of codepoint in the substring
+    * @exception IndexOutOfBoundsException if start and limit are not valid.
+    */
+    public static int countCodePoint(char source[], int start, int limit)
+    {
+        if (source == null || source.length == 0) {
+            return 0;
+        }
+        return findCodePointOffset(source, start, limit, limit - start);
+    }
+      
+    /**
+    * Sets a code point into a UTF32 position.
+    * Adjusts target according if we are replacing a non-supplementary 
+    * codepoint with a supplementary and vice versa.
+    * @param target stringbuffer
+    * @param offset32 UTF32 position to insert into
+    * @exception IndexOutOfBoundsException if offset32 is out of bounds.
+    * @param char32 code point
+    * @deprecated to be removed after the year 2002,
+    * UTF16.setCharAt(target, 
+    *                 findOffsetFromCodePoint(target.toString(), offset32), 
+    *                                         char32);
+    */
+    public static void setCharAtCodePointOffset(StringBuffer target, 
+                                                int offset32, int char32)
+    {
+        int offset16 = findOffsetFromCodePoint(target.toString(), offset32);
+        setCharAt(target, offset16, char32);
+    }
+
+    /**
+    * Set a code point into a UTF16 position. 
+    * Adjusts target according if we are replacing a non-supplementary 
+    * codepoint with a supplementary and vice versa.
+    * @param target stringbuffer
+    * @param offset16 UTF16 position to insert into
+    * @param char32 code point
+    */
+    public static void setCharAt(StringBuffer target, int offset16, 
+                                 int char32)
+    {
+        int count = 1;
+        char single = target.charAt(offset16);
+        
+        if (isSurrogate(single)) 
+        {
+            // pairs of the surrogate with offset16 at the lead char found
+            if (isLeadSurrogate(single) && (target.length() > offset16 + 1) 
+                && isTrailSurrogate(target.charAt(offset16 + 1))) {
+	            count ++;
+	        }
+	        else {
+	            // pairs of the surrogate with offset16 at the trail char 
+	            // found
+	            if (isTrailSurrogate(single) && (offset16 > 0) &&
+	                isLeadSurrogate(target.charAt(offset16 -1)))
+	            {
+	                offset16 --;
+	                count ++;
+	            }
+	        }
+	    }
+	    target.replace(offset16, offset16 + count, valueOf(char32));
+    }
+    	
+    /**
+    * Set a code point into a UTF16 position in a char array.
+    * Adjusts target according if we are replacing a non-supplementary 
+    * codepoint with a supplementary and vice versa.
+    * @param target char array
+    * @param limit numbers of valid chars in target, different from 
+    *        target.length. limit counts the number of chars in target 
+    *        that represents a string, not the size of array target.
+    * @param offset16 UTF16 position to insert into
+    * @param char32 code point
+    * @return new number of chars in target that represents a string
+    * @exception IndexOutOfBoundsException if offset16 is out of range
+    */
+    public static int setCharAt(char target[], int limit, 
+                                int offset16, int char32)
+    {
+        if (offset16 >= limit) {
+            throw new ArrayIndexOutOfBoundsException(offset16);
+        }
+        int count = 1;
+        char single = target[offset16];
+        
+        if (isSurrogate(single)) 
+        {
+            // pairs of the surrogate with offset16 at the lead char found
+            if (isLeadSurrogate(single) && (target.length > offset16 + 1) &&
+                isTrailSurrogate(target[offset16 + 1])) {
+	            count ++;
+	        }
+	        else {
+	            // pairs of the surrogate with offset16 at the trail char 
+	            // found
+	            if (isTrailSurrogate(single) && (offset16 > 0) &&
+	                isLeadSurrogate(target[offset16 -1]))
+	            {
+	                offset16 --;
+	                count ++;
+	            }
+	        }
+	    }
+    	  
+	    String str = valueOf(char32);
+	    int result = limit;
+	    int strlength = str.length();
+	    target[offset16] = str.charAt(0);
+	    if (count == strlength) {
+	        if (count == 2) {
+	            target[offset16 + 1] = str.charAt(1);
+	        }
+	    }
+	    else {
+	        // this is not exact match in space, we'll have to do some 
+	        // shifting
+	        System.arraycopy(target, offset16 + count, target, 
+	                       offset16 + strlength, limit - (offset16 + count));
+	        if (count < strlength) {
+	            // char32 is a supplementary character trying to squeeze into
+	            // a non-supplementary space
+	            target[offset16 + 1] = str.charAt(1);
+	            result ++;
+	            if (result < target.length) {
+	                target[result] = 0;
+	            }
+	        }
+	        else {
+	            // char32 is a non-supplementary character trying to fill 
+	            // into a supplementary space
+	            result --;
+	            target[result] = 0;
+	        }
+	    }
+	    return result;
+    }
+      
+    /**
+    * Shifts offset16 by the argument number of codepoints
+    * @param source string
+    * @param offset16 UTF16 position to shift
+    * @param shift32 number of codepoints to shift
+    * @return new shifted offset16 
+    * @exception IndexOutOfBoundsException if the new offset16 is out of 
+    *                                      bounds.
+    */
+    public static int moveCodePointOffset(String source, int offset16, 
+                                                        int shift32)
+    {
+        int size = source.length();
+        if (offset16 < 0 || shift32 + offset16 > size) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+        char ch;
+        int result = offset16;
+        int count = shift32;
+        while (result < size && count > 0)
+        {
+            ch = source.charAt(result);
+            if (isLeadSurrogate(ch) && ((result + 1) < size) && 
+                isTrailSurrogate(source.charAt(result + 1))) {
+                result ++;
+            }
+                
+            count --;
+            result ++;
+        }
+        if (count != 0) {
+            throw new StringIndexOutOfBoundsException(shift32);
+        }
+        return result;
+    }
+
+    /**
+    * Shifts offset16 by the argument number of codepoints
+    * @param target string buffer
+    * @param offset16 UTF16 position to shift
+    * @param shift32 number of codepoints to shift
+    * @return new shifted offset16 
+    * @exception IndexOutOfBoundsException if the new offset16 is out of 
+    *                                      bounds.
+    */
+    public static int moveCodePointOffset(StringBuffer source, int offset16, 
+                                                                int shift32)
+    {
+        int size = source.length();
+        if (offset16 < 0 || shift32 + offset16 > size) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+        char ch;
+        int result = offset16;
+        int count = shift32;
+        while (result < size && count > 0)
+        {
+            ch = source.charAt(result);
+            if (isLeadSurrogate(ch) && ((result + 1) < size) && 
+                isTrailSurrogate(source.charAt(result + 1))) {
+                result ++;
+            }
+                
+            count --;
+            result ++;
+        }
+        if (count != 0) {
+            throw new StringIndexOutOfBoundsException(shift32);
+        }
+        return result;
+    }
+
+    /**
+    * Shifts offset16 by the argument number of codepoints within a subarray.
+    * @param target char array
+    * @param start position of the subarray to be performed on
+    * @param limit position of the subarray to be performed on
+    * @param offset16 UTF16 position to shift relative to start
+    * @param shift32 number of codepoints to shift
+    * @return new shifted offset16 relative to start
+    * @exception IndexOutOfBoundsException if the new offset16 is out of 
+    *            bounds with respect to the subarray.
+    */
+    public static int moveCodePointOffset(char source[], int start, int limit, 
+                                          int offset16, int shift32)
+    {
+        offset16 += start;
+        if (shift32 + offset16 > limit) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+        char ch;
+        int result = offset16;
+        int count = shift32;
+        while (result < limit && count > 0)
+        {
+            ch = source[result];
+            if (isLeadSurrogate(ch) && ((result + 1) < limit) && 
+                isTrailSurrogate(source[result + 1])) {
+                result ++;
+            }
+                
+            count --;
+            result ++;
+        }
+        if (count != 0) {
+            throw new StringIndexOutOfBoundsException(shift32);
+        }
+        return result - start;
+    }
+      
+    /**
+    * Inserts char32 codepoint into target at the argument offset16. 
+    * If the offset16 is in the middle of a supplementary codepoint, char32 
+    * will be inserted after the supplementary codepoint.
+    * The length of target increases by one if codepoint is non-supplementary, 
+    * 2 otherwise. 
+    * <p>
+    * The overall effect is exactly as if the argument were converted to a 
+    * string by the method valueOf(char) and the characters in that string 
+    * were then inserted into target at the position indicated by offset16. 
+    * </p>
+    * <p>
+    * The offset argument must be greater than or equal to 0, and less than 
+    * or equal to the length of source.
+    * @param target string buffer to insert to
+    * @param offset16 offset which char32 will be inserted in
+    * @param char32 codepoint to be inserted
+    * @return a reference to target
+    * @exception IndexOutOfBoundsException thrown if offset16 is invalid.
+    */
+    public static StringBuffer insert(StringBuffer target, int offset16, 
+                                        int char32)
+    {
+        String str = valueOf(char32);
+        if (offset16 != target.length() && 
+            bounds(target, offset16) == TRAIL_SURROGATE_BOUNDARY) {
+            offset16 ++;
+        }
+        target.insert(offset16, str);
+        return target;
+    }
+
+    /**
+    * Inserts char32 codepoint into target at the argument offset16. 
+    * If the offset16 is in the middle of a supplementary codepoint, char32 
+    * will be inserted after the supplementary codepoint.
+    * Limit increases by one if codepoint is non-supplementary, 2 otherwise. 
+    * <p>
+    * The overall effect is exactly as if the argument were converted to a 
+    * string by the method valueOf(char) and the characters in that string 
+    * were then inserted into target at the position indicated by offset16. 
+    * </p>
+    * <p>
+    * The offset argument must be greater than or equal to 0, and less than 
+    * or equal to the limit.
+    * @param target char array to insert to
+    * @param limit end index of the char array, limit <= target.length
+    * @param offset16 offset which char32 will be inserted in
+    * @param char32 codepoint to be inserted
+    * @return new limit size
+    * @exception IndexOutOfBoundsException thrown if offset16 is invalid.
+    */
+    public static int insert(char target[], int limit, int offset16, 
+                             int char32)
+    {
+        String str = valueOf(char32);
+        if (offset16 != limit &&
+            bounds(target, 0, limit, offset16) == TRAIL_SURROGATE_BOUNDARY) {
+            offset16 ++;
+        }
+        int size = str.length();
+        if (limit + size > target.length) {
+            throw new ArrayIndexOutOfBoundsException(offset16 + size);
+        }
+        System.arraycopy(target, offset16, target, offset16 + size, 
+                        limit - offset16);
+        target[offset16] = str.charAt(0);
+        if (size == 2) {
+            target[offset16 + 1] = str.charAt(1);
+        }
+        return limit + size;
+    }
+
+    /**
+    * Removes the codepoint at the specified position in this target 
+    * (shortening target by 1 character if the codepoint is a 
+    * non-supplementary, 2 otherwise).
+    * @param target string buffer to remove codepoint from
+    * @param offset16 offset which the codepoint will be removed
+    * @return a reference to target
+    * @exception IndexOutOfBoundsException thrown if offset16 is invalid.
+    */
+    public static StringBuffer delete(StringBuffer target, int offset16)
+    {
+        int count = 1;
+        switch (bounds(target, offset16)) {
+            case LEAD_SURROGATE_BOUNDARY: 
+                                count ++;
+                                break;
+            case TRAIL_SURROGATE_BOUNDARY: 
+                                count ++;
+                                offset16 --;
+                                break;
+        }
+        target.delete(offset16, offset16 + count);
+        return target;
+    }
+
+    /**
+    * Removes the codepoint at the specified position in this target 
+    * (shortening target by 1 character if the codepoint is a 
+    * non-supplementary, 2 otherwise).
+    * @param target string buffer to remove codepoint from
+    * @param limit end index of the char array, limit <= target.length
+    * @param offset16 offset which the codepoint will be removed
+    * @return a new limit size
+    * @exception IndexOutOfBoundsException thrown if offset16 is invalid.
+    */
+    public static int delete(char target[], int limit, int offset16)
+    {
+        int count = 1;
+        switch (bounds(target, 0, limit, offset16)) {
+            case LEAD_SURROGATE_BOUNDARY: 
+                                count ++;
+                                break;
+            case TRAIL_SURROGATE_BOUNDARY: 
+                                count ++;
+                                offset16 --;
+                                break;
+        }
+        System.arraycopy(target, offset16 + count, target, offset16, 
+                        limit - (offset16 + count));
+        target[limit - count] = 0;
+        return limit - count;
+    }
+      
+    /**
+    * Returns the index within the argument UTF16 format Unicode string of 
+    * the first occurrence of the argument codepoint. I.e., the smallest 
+    * index <code>i</code> such that <code>UTF16.charAt(source, i) == char32</code> is true. 
+    * <p>If no such character occurs in this string, then -1 is returned.</p> 
+    * <p>
+    * Examples:<br>
+    * UTF16.indexOf("abc", 'a') returns 0<br>
+    * UTF16.indexOf("abc\ud800\udc00", 0x10000) returns 3<br>
+    * UTF16.indexOf("abc\ud800\udc00", 0xd800) returns -1<br>
+    * </p>
+    * Note this method is provided as support to jdk 1.3, which does not 
+    * support supplementary characters to its fullest.
+    * @param source UTF16 format Unicode string that will be searched
+    * @param char32 codepoint to search for 
+    * @return the index of the first occurrence of the codepoint in the 
+    *         argument Unicode string, or -1 if the codepoint does not occur.
+    * @draft since release 2.1
+    */
+    public static int indexOf(String source, int char32)  
+    {
+        if (char32 < CODEPOINT_MIN_VALUE || 
+            char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException(
+                            "Argument char32 is not a valid codepoint");
+        }
+        // non-surrogate bmp
+        if (char32 < LEAD_SURROGATE_MIN_VALUE ||
+            (char32 > TRAIL_SURROGATE_MAX_VALUE && 
+             char32 < SUPPLEMENTARY_MIN_VALUE)) {
+            return source.indexOf((char)char32);
+        }
+        // surrogate
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+            int result = source.indexOf((char)char32);
+            if (result >= 0) {
+                if (isLeadSurrogate((char)char32) && 
+                    (result < source.length() - 1) && 
+                    isTrailSurrogate(source.charAt(result + 1))) { 
+                    return indexOf(source, char32, result + 1);
+                }
+                // trail surrogate
+                if (result > 0 && 
+                    isLeadSurrogate(source.charAt(result - 1))) {
+                    return indexOf(source, char32, result + 1);                                              
+                }
+            }
+            return result;
+        }
+        // supplementary
+        String char32str = toString(char32);
+        return source.indexOf(char32str);
+    }
+     
+    /**
+    * Returns the index within the argument UTF16 format Unicode string of 
+    * the first occurrence of the argument string str. This method is 
+    * implemented based on codepoints, hence a "lead surrogate character +
+    * trail surrogate character" is treated as one entity.e
+    * Hence if the str starts with trail surrogate character at index 0, a 
+    * source with a leading a surrogate character before str found at in 
+    * source will not have a valid match. Vice versa for lead surrogates 
+    * that ends str.
+    * See example below.
+    * <p>If no such string str occurs in this source, then -1 is returned.
+    * </p> <p>
+    * Examples:<br>
+    * UTF16.indexOf("abc", "ab") returns 0<br>
+    * UTF16.indexOf("abc\ud800\udc00", "\ud800\udc00") returns 3<br>
+    * UTF16.indexOf("abc\ud800\udc00", "\ud800") returns -1<br>
+    * </p>
+    * Note this method is provided as support to jdk 1.3, which does not 
+    * support supplementary characters to its fullest.
+    * @param source UTF16 format Unicode string that will be searched
+    * @param str UTF16 format Unicode string to search for
+    * @return the index of the first occurrence of the codepoint in the 
+    *         argument Unicode string, or -1 if the codepoint does not occur.
+    * @draft since release 2.1
+    */
+    public static int indexOf(String source, String str)  
+    {
+        int strLength = str.length();
+        // non-surrogate ends
+        if (!isTrailSurrogate(str.charAt(0)) && 
+            !isLeadSurrogate(str.charAt(strLength - 1))) {
+            return source.indexOf(str);
+        }
+        
+        int result    = source.indexOf(str);
+        int resultEnd = result + strLength;
+        if (result >= 0) {
+            // check last character
+            if (isLeadSurrogate(str.charAt(strLength - 1)) && 
+                (result < source.length() - 1) && 
+                isTrailSurrogate(source.charAt(resultEnd + 1))) { 
+                return indexOf(source, str, resultEnd + 1);
+            }
+            // check first character which is a trail surrogate
+            if (isTrailSurrogate(str.charAt(0)) && result > 0 && 
+                isLeadSurrogate(source.charAt(result - 1))) {
+                return indexOf(source, str, resultEnd + 1);                                              
+            }
+        }
+        return result;
+    }
+    
+    /**
+    * Returns the index within the argument UTF16 format Unicode string of 
+    * the first occurrence of the argument codepoint. I.e., the smallest 
+    * index i such that: <br>
+    * (UTF16.charAt(source, i) == char32 && i >= fromIndex) is true. 
+    * <p>If no such character occurs in this string, then -1 is returned.</p> 
+    * <p>
+    * Examples:<br>
+    * UTF16.indexOf("abc", 'a', 1) returns -1<br>
+    * UTF16.indexOf("abc\ud800\udc00", 0x10000, 1) returns 3<br>
+    * UTF16.indexOf("abc\ud800\udc00", 0xd800, 1) returns -1<br>
+    * </p>
+    * Note this method is provided as support to jdk 1.3, which does not 
+    * support supplementary characters to its fullest.
+    * @param source UTF16 format Unicode string that will be searched
+    * @param char32 codepoint to search for 
+    * @param fromIndex the index to start the search from. 
+    * @return the index of the first occurrence of the codepoint in the 
+    *         argument Unicode string at or after fromIndex, or -1 if the 
+    *         codepoint does not occur.
+    * @draft since release 2.1
+    */
+    public static int indexOf(String source, int char32, int fromIndex) 
+    {
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException(
+                            "Argument char32 is not a valid codepoint");
+        }
+        // non-surrogate bmp
+        if (char32 < LEAD_SURROGATE_MIN_VALUE ||
+            (char32 > TRAIL_SURROGATE_MAX_VALUE && 
+             char32 < SUPPLEMENTARY_MIN_VALUE)) {
+            return source.indexOf((char)char32, fromIndex);
+        }
+        // surrogate
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+            int result = source.indexOf((char)char32, fromIndex);
+            if (result >= 0) {
+                if (isLeadSurrogate((char)char32) && 
+                    (result < source.length() - 1) && 
+                    isTrailSurrogate(source.charAt(result + 1))) { 
+                    return indexOf(source, char32, result + 1);
+                }
+                // trail surrogate
+                if (result > 0 && 
+                    isLeadSurrogate(source.charAt(result - 1))) {
+                    return indexOf(source, char32, result + 1);                                              
+                }
+            }
+            return result;
+        }
+        // supplementary
+        String char32str = toString(char32);
+        return source.indexOf(char32str, fromIndex);
+    }
+
+    /**
+    * Returns the index within the argument UTF16 format Unicode string of 
+    * the first occurrence of the argument string str. This method is 
+    * implemented based on codepoints, hence a "lead surrogate character +
+    * trail surrogate character" is treated as one entity.e
+    * Hence if the str starts with trail surrogate character at index 0, a 
+    * source with a leading a surrogate character before str found at in 
+    * source will not have a valid match. Vice versa for lead surrogates 
+    * that ends str.
+    * See example below.
+    * <p>If no such string str occurs in this source, then -1 is returned.
+    * </p> <p>
+    * Examples:<br>
+    * UTF16.indexOf("abc", "ab", 0) returns 0<br>
+    * UTF16.indexOf("abc\ud800\udc00", "\ud800\udc00", 0) returns 3<br>
+    * UTF16.indexOf("abc\ud800\udc00", "\ud800\udc00", 2) returns 3<br>
+    * UTF16.indexOf("abc\ud800\udc00", "\ud800", 0) returns -1<br>
+    * </p>
+    * Note this method is provided as support to jdk 1.3, which does not 
+    * support supplementary characters to its fullest.
+    * @param source UTF16 format Unicode string that will be searched
+    * @param str UTF16 format Unicode string to search for
+    * @param fromIndex the index to start the search from. 
+    * @return the index of the first occurrence of the codepoint in the 
+    *         argument Unicode string, or -1 if the codepoint does not occur.
+    * @draft since release 2.1
+    */
+    public static int indexOf(String source, String str, int fromIndex)  
+    {
+        int strLength = str.length();
+        // non-surrogate ends
+        if (!isTrailSurrogate(str.charAt(0)) && 
+            !isLeadSurrogate(str.charAt(strLength - 1))) {
+            return source.indexOf(str, fromIndex);
+        }
+        
+        int result    = source.indexOf(str, fromIndex);
+        int resultEnd = result + strLength;
+        if (result >= 0) {
+            // check last character
+            if (isLeadSurrogate(str.charAt(strLength - 1)) && 
+                (result < source.length() - 1) && 
+                isTrailSurrogate(source.charAt(resultEnd))) { 
+                return indexOf(source, str, resultEnd + 1);
+            }
+            // check first character which is a trail surrogate
+            if (isTrailSurrogate(str.charAt(0)) && result > 0 && 
+                isLeadSurrogate(source.charAt(result - 1))) {
+                return indexOf(source, str, resultEnd + 1);                                              
+            }
+        }
+        return result;
+    }
+    
+    /**
+    * Returns the index within the argument UTF16 format Unicode string of 
+    * the last occurrence of the argument codepoint. I.e., the index returned 
+    * is the largest value i such that: UTF16.charAt(source, i) == char32
+    * is true. 
+    * <p>
+    * Examples:<br>
+    * UTF16.lastIndexOf("abc", 'a') returns 0<br>
+    * UTF16.lastIndexOf("abc\ud800\udc00", 0x10000) returns 3<br>
+    * UTF16.lastIndexOf("abc\ud800\udc00", 0xd800) returns -1<br>
+    * </p>
+    * <p>source is searched backwards starting at the last character.</p> 
+    * Note this method is provided as support to jdk 1.3, which does not 
+    * support supplementary characters to its fullest.
+    * @param source UTF16 format Unicode string that will be searched
+    * @param char32 codepoint to search for 
+    * @return the index of the last occurrence of the codepoint in source, 
+    *         or -1 if the codepoint does not occur.
+    * @draft since release 2.1
+    */
+    public static int lastIndexOf(String source, int char32)  
+    {
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException(
+                            "Argument char32 is not a valid codepoint");
+        }
+        // non-surrogate bmp
+        if (char32 < LEAD_SURROGATE_MIN_VALUE ||
+            (char32 > TRAIL_SURROGATE_MAX_VALUE && 
+             char32 < SUPPLEMENTARY_MIN_VALUE)) {
+            return source.lastIndexOf((char)char32);
+        }
+        // surrogate
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+            int result = source.lastIndexOf((char)char32);
+            if (result >= 0) {
+                if (isLeadSurrogate((char)char32) && 
+                    (result < source.length() - 1) && 
+                    isTrailSurrogate(source.charAt(result + 1))) { 
+                    return lastIndexOf(source, char32, result - 1);
+                }
+                // trail surrogate
+                if (result > 0 && 
+                    isLeadSurrogate(source.charAt(result - 1))) {
+                    return lastIndexOf(source, char32, result - 1);                                              
+                }
+            }
+            return result;
+        }
+        // supplementary
+        String char32str = toString(char32);
+        return source.lastIndexOf(char32str);
+    }
+    
+    /**
+    * Returns the index within the argument UTF16 format Unicode string of 
+    * the last occurrence of the argument string str. This method is 
+    * implemented based on codepoints, hence a "lead surrogate character +
+    * trail surrogate character" is treated as one entity.e
+    * Hence if the str starts with trail surrogate character at index 0, a 
+    * source with a leading a surrogate character before str found at in 
+    * source will not have a valid match. Vice versa for lead surrogates 
+    * that ends str.
+    * See example below.
+    * <p>
+    * Examples:<br>
+    * UTF16.lastIndexOf("abc", "a") returns 0<br>
+    * UTF16.lastIndexOf("abc\ud800\udc00", "\ud800\udc00") returns 3<br>
+    * UTF16.lastIndexOf("abc\ud800\udc00", "\ud800") returns -1<br>
+    * </p>
+    * <p>source is searched backwards starting at the last character.</p> 
+    * Note this method is provided as support to jdk 1.3, which does not 
+    * support supplementary characters to its fullest.
+    * @param source UTF16 format Unicode string that will be searched
+    * @param str UTF16 format Unicode string to search for 
+    * @return the index of the last occurrence of the codepoint in source, 
+    *         or -1 if the codepoint does not occur.
+    * @draft since release 2.1
+    */
+    public static int lastIndexOf(String source, String str)  
+    {
+        int strLength = str.length();
+        // non-surrogate ends
+        if (!isTrailSurrogate(str.charAt(0)) && 
+            !isLeadSurrogate(str.charAt(strLength - 1))) {
+            return source.lastIndexOf(str);
+        }
+        
+        int result    = source.lastIndexOf(str);
+        if (result >= 0) {
+            // check last character
+            if (isLeadSurrogate(str.charAt(strLength - 1)) && 
+                (result < source.length() - 1) && 
+                isTrailSurrogate(source.charAt(result + strLength + 1))) { 
+                return lastIndexOf(source, str, result - 1);
+            }
+            // check first character which is a trail surrogate
+            if (isTrailSurrogate(str.charAt(0)) && result > 0 && 
+                isLeadSurrogate(source.charAt(result - 1))) {
+                return lastIndexOf(source, str, result - 1);                                              
+            }
+        }
+        return result;
+    }
+    
+    /**
+    * <p>Returns the index within the argument UTF16 format Unicode string of 
+    * the last occurrence of the argument codepoint, where the result is less
+    * than or equals to fromIndex.</p> 
+    * <p>This method is implemented based on codepoints, hence a single 
+    * surrogate character will not match a supplementary character.</p>
+    * <p>source is searched backwards starting at the last character starting 
+    * at the specified index.</p>
+    * <p>
+    * Examples:<br>
+    * UTF16.lastIndexOf("abc", 'c', 2) returns 2<br>
+    * UTF16.lastIndexOf("abc", 'c', 1) returns -1<br>
+    * UTF16.lastIndexOf("abc\ud800\udc00", 0x10000, 5) returns 3<br>
+    * UTF16.lastIndexOf("abc\ud800\udc00", 0x10000, 3) returns 3<br>
+    * UTF16.lastIndexOf("abc\ud800\udc00", 0xd800) returns -1<br>
+    * </p>
+    * Note this method is provided as support to jdk 1.3, which does not 
+    * support supplementary characters to its fullest.
+    * @param source UTF16 format Unicode string that will be searched
+    * @param char32 codepoint to search for 
+    * @param fromIndex the index to start the search from. There is no 
+    *                  restriction on the value of fromIndex. If it is 
+    *                  greater than or equal to the length of this string, 
+    *                  it has the same effect as if it were equal to one 
+    *                  less than the length of this string: this entire 
+    *                  string may be searched. If it is negative, it has 
+    *                  the same effect as if it were -1: -1 is returned. 
+    * @return the index of the last occurrence of the codepoint in source, 
+    *         or -1 if the codepoint does not occur.
+    * @draft since release 2.1
+    */
+    public static int lastIndexOf(String source, int char32, int fromIndex)
+    {
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException(
+                            "Argument char32 is not a valid codepoint");
+        }
+        // non-surrogate bmp
+        if (char32 < LEAD_SURROGATE_MIN_VALUE ||
+            (char32 > TRAIL_SURROGATE_MAX_VALUE && 
+             char32 < SUPPLEMENTARY_MIN_VALUE)) {
+            return source.lastIndexOf((char)char32, fromIndex);
+        }
+        // surrogate
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+            int result = source.lastIndexOf((char)char32, fromIndex);
+            if (result >= 0) {
+                if (isLeadSurrogate((char)char32) && 
+                    (result < source.length() - 1) && 
+                    isTrailSurrogate(source.charAt(result + 1))) { 
+                    return lastIndexOf(source, char32, result - 1);
+                }
+                // trail surrogate
+                if (result > 0 && 
+                    isLeadSurrogate(source.charAt(result - 1))) {
+                    return lastIndexOf(source, char32, result - 1);                                              
+                }
+            }
+            return result;
+        }
+        // supplementary
+        String char32str = toString(char32);
+        return source.lastIndexOf(char32str, fromIndex);
+    }
+    
+    /**
+    * <p>Returns the index within the argument UTF16 format Unicode string of 
+    * the last occurrence of the argument string str, where the result is less
+    * than or equals to fromIndex.</p> 
+    * <p>This method is implemented based on codepoints, hence a 
+    * "lead surrogate character + trail surrogate character" is treated as one 
+    * entity.
+    * Hence if the str starts with trail surrogate character at index 0, a 
+    * source with a leading a surrogate character before str found at in 
+    * source will not have a valid match. Vice versa for lead surrogates 
+    * that ends str.
+    * </p>
+    * See example below.
+    * <p>
+    * Examples:<br>
+    * UTF16.lastIndexOf("abc", "c", 2) returns 2<br>
+    * UTF16.lastIndexOf("abc", "c", 1) returns -1<br>
+    * UTF16.lastIndexOf("abc\ud800\udc00", "\ud800\udc00", 5) returns 3<br>
+    * UTF16.lastIndexOf("abc\ud800\udc00", "\ud800\udc00", 3) returns 3<br>
+    * UTF16.lastIndexOf("abc\ud800\udc00", "\ud800", 4) returns -1<br>
+    * </p>
+    * <p>source is searched backwards starting at the last character.</p> 
+    * Note this method is provided as support to jdk 1.3, which does not 
+    * support supplementary characters to its fullest.
+    * @param source UTF16 format Unicode string that will be searched
+    * @param str UTF16 format Unicode string to search for 
+    * @param fromIndex the index to start the search from. There is no 
+    *                  restriction on the value of fromIndex. If it is 
+    *                  greater than or equal to the length of this string, 
+    *                  it has the same effect as if it were equal to one 
+    *                  less than the length of this string: this entire 
+    *                  string may be searched. If it is negative, it has 
+    *                  the same effect as if it were -1: -1 is returned. 
+    * @return the index of the last occurrence of the codepoint in source, 
+    *         or -1 if the codepoint does not occur.
+    * @draft since release 2.1
+    */
+    public static int lastIndexOf(String source, String str, int fromIndex)  
+    {
+        int strLength = str.length();
+        // non-surrogate ends
+        if (!isTrailSurrogate(str.charAt(0)) && 
+            !isLeadSurrogate(str.charAt(strLength - 1))) {
+            return source.lastIndexOf(str, fromIndex);
+        }
+        
+        int result    = source.lastIndexOf(str, fromIndex);
+        if (result >= 0) {
+            // check last character
+            if (isLeadSurrogate(str.charAt(strLength - 1)) && 
+                (result < source.length() - 1) && 
+                isTrailSurrogate(source.charAt(result + strLength))) { 
+                return lastIndexOf(source, str, result - 1);
+            }
+            // check first character which is a trail surrogate
+            if (isTrailSurrogate(str.charAt(0)) && result > 0 && 
+                isLeadSurrogate(source.charAt(result - 1))) {
+                return lastIndexOf(source, str, result - 1);                                              
+            }
+        }
+        return result;
+    }
+
+    /**
+    * Returns a new UTF16 format Unicode string resulting from replacing all 
+    * occurrences of oldChar32 in source with newChar32. 
+    * If the character oldChar32 does not occur in the UTF16 format Unicode
+    * string source, then source will be returned. Otherwise, a new String 
+    * object is created that represents a codepoint sequence identical to the 
+    * codepoint sequence represented by source, except that every occurrence 
+    * of oldChar32 is replaced by an occurrence of newChar32. 
+    * <p>
+    * Examples: <br>
+    * UTF16.replace("mesquite in your cellar", 'e', 'o');<br>
+    *        returns "mosquito in your collar"<br>
+    * UTF16.replace("JonL", 'q', 'x');<br>
+    *        returns "JonL" (no change)<br>
+    * UTF16.replace("Supplementary character \ud800\udc00", 0x10000, '!');
+    * <br>   returns "Supplementary character !"<br>
+    * UTF16.replace("Supplementary character \ud800\udc00", 0xd800, '!');
+    * <br>   returns "Supplementary character \ud800\udc00"<br>
+    * </p>
+    * Note this method is provided as support to jdk 1.3, which does not 
+    * support supplementary characters to its fullest.
+    * @param source UTF16 format Unicode string which the codepoint 
+    *               replacements will be based on.
+    * @param oldChar32 non-zero old codepoint to be replaced.
+    * @param newChar32 the new codepoint to replace oldChar32
+    * @return new String derived from source by replacing every occurrence 
+    *         of oldChar32 with newChar32, unless when no oldChar32 is found
+    *         in source then source will be returned.
+    * @draft since release 2.1
+    */
+    public static String replace(String source, int oldChar32, 
+                                 int newChar32)  
+    {
+        if (oldChar32 <= 0 || oldChar32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException(
+                            "Argument oldChar32 is not a valid codepoint");
+        }
+        if (newChar32 <= 0 || newChar32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException(
+                            "Argument newChar32 is not a valid codepoint");
+        }
+        
+        int index     = indexOf(source, oldChar32);
+        if (index == -1) {
+            return source;
+        }
+        String       newChar32Str    = toString(newChar32);
+        int          oldChar32Size   = 1;
+        int          newChar32Size   = newChar32Str.length();
+        StringBuffer result = new StringBuffer(source);
+        int          resultIndex     = index;
+        
+        if (oldChar32 >= SUPPLEMENTARY_MIN_VALUE) {
+            oldChar32Size = 2;
+        }
+        
+        while (index != -1) {
+            int endResultIndex  = resultIndex + oldChar32Size;
+            result.replace(resultIndex, endResultIndex, newChar32Str);
+            int lastEndIndex    = index + oldChar32Size;
+            index       = indexOf(source, oldChar32, lastEndIndex);
+            resultIndex += newChar32Size + index - lastEndIndex;
+        }
+        return result.toString();
+    }
+    
+    /**
+    * Returns a new UTF16 format Unicode string resulting from replacing all 
+    * occurrences of oldStr in source with newStr. 
+    * If the character oldStr does not occur in the UTF16 format Unicode
+    * string source, then source will be returned. Otherwise, a new String 
+    * object is created that represents a codepoint sequence identical to the 
+    * codepoint sequence represented by source, except that every occurrence 
+    * of oldStr is replaced by an occurrence of newStr. 
+    * <p>
+    * Examples: <br>
+    * UTF16.replace("mesquite in your cellar", "e", "o");<br>
+    *        returns "mosquito in your collar"<br>
+    * UTF16.replace("mesquite in your cellar", "mesquite", "cat");<br>
+    *        returns "cat in your collar"<br>
+    * UTF16.replace("JonL", "q", "x");<br>
+    *        returns "JonL" (no change)<br>
+    * UTF16.replace("Supplementary character \ud800\udc00", "\ud800\udc00",
+    *               '!');
+    * <br>   returns "Supplementary character !"<br>
+    * UTF16.replace("Supplementary character \ud800\udc00", "\ud800", '!');
+    * <br>   returns "Supplementary character \ud800\udc00"<br>
+    * </p>
+    * Note this method is provided as support to jdk 1.3, which does not 
+    * support supplementary characters to its fullest.
+    * @param source UTF16 format Unicode string which the codepoint 
+    *               replacements will be based on.
+    * @param oldChar32 non-zero old codepoint to be replaced.
+    * @param newChar32 the new codepoint to replace oldChar32
+    * @return new String derived from source by replacing every occurrence 
+    *         of oldChar32 with newChar32, unless when no oldChar32 is found
+    *         in source then source will be returned.
+    * @draft since release 2.1
+    */
+    public static String replace(String source, String oldStr, 
+                                 String newStr)  
+    {
+        int index     = indexOf(source, oldStr);
+        if (index == -1) {
+            return source;
+        }
+        int          oldStrSize   = oldStr.length();
+        int          newStrSize   = newStr.length();
+        StringBuffer result       = new StringBuffer(source);
+        int          resultIndex     = index;
+        
+        while (index != -1) {
+            int endResultIndex  = resultIndex + oldStrSize;
+            result.replace(resultIndex, endResultIndex, newStr);
+            int lastEndIndex    = index + oldStrSize;
+            index       = indexOf(source, oldStr, lastEndIndex);
+            resultIndex += newStrSize + index - lastEndIndex;
+        }
+        return result.toString();
+    }
+    
+    /** 
+    * Reverses a UTF16 format Unicode string and replaces source's content 
+    * with it.
+    * This method will reverse surrogate characters correctly, instead of 
+    * blindly reversing every character.
+    * <p>
+    * Examples:<br>
+    * UTF16.reverse(new StringBuffer(
+    *             "Supplementary characters \ud800\udc00\ud801\udc01"))<br>
+    * returns "\ud801\udc01\ud800\udc00 sretcarahc yratnemelppuS".
+    * @param source the source StringBuffer that contains UTF16 format 
+    *        Unicode string to be reversed
+    * @return a modified source with reversed UTF16 format Unicode string.
+    * @draft since release 2.1
+    */
+    public static StringBuffer reverse(StringBuffer source)      
+    {
+        StringBuffer result = source.reverse();
+        int resultLength  = result.length();
+        int maxLeadLength = resultLength - 2;
+        int i = 0;
+        while (i < resultLength) {
+            if (i <= maxLeadLength && isTrailSurrogate(result.charAt(i)) &&
+                isLeadSurrogate(result.charAt(i + 1))) {
+                char trail = result.charAt(i);
+                result.deleteCharAt(i);
+                result.insert(i + 1, trail);
+                i += 2;
+            }
+            else {
+                i ++;
+            }
+        }
+        return result;
+    }
+
+    /**
+    * Compare strings using Unicode code point order, instead of UTF-16 code 
+    * unit order.
+    */
+    public static final class StringComparator implements java.util.Comparator 
+    {
+        /**
+        * Standard String compare. Only one small section is different, marked in 
+        * the code.
+        */
+        public int compare(Object a, Object b) 
+        {
+	        if (a == b) {
+	        	return 0;
+	        }
+	        if (a == null) {
+	            return -1;
+	        }
+	        if (b == null) {
+	            return 1;
+	        }
+	              
+	        String sa = (String) a;
+	        String sb = (String) b;
+	        int lena = sa.length();
+	        int lenb = sb.length();
+	        int len = lena;
+	        if (len > lenb) {
+	            len = lenb;
+	        }
+	            
+	        for (int i = 0; i < len; ++i) 
+	        {
+	            char ca = sa.charAt(i);
+	            char cb = sb.charAt(i);
+	            if (ca == cb) {
+	            	continue; // skip remap if equal
+	            }
+	                    
+	            // start of only different section
+            	// if either code unit is below 0xd800, i.e., below the 
+            	// surrogate range, then nothing needs to be done
+
+            	// if both are >=0xd800 then special code adjusts code unit 
+            	// values so that all BMP code points (including single 
+            	// surrogate code points) sort below supplementary ones
+
+            	// this is necessary because surrogates are not at the end of 
+            	// the code unit range
+            	if (ca >= LEAD_SURROGATE_MIN_VALUE 
+            		&& cb >= LEAD_SURROGATE_MIN_VALUE) {
+                	// subtract 0x2800 from BMP code points to make them 
+                	// smaller than supplementary ones
+                	if ((ca <= LEAD_SURROGATE_MAX_VALUE && (i + 1) < lena 
+                		&& isTrailSurrogate(sa.charAt(i + 1))) 
+                		|| (isTrailSurrogate(ca) && i > 0 
+                			&& isLeadSurrogate(sa.charAt(i - 1)))) {
+                    	// part of a surrogate pair, leave >=d800
+                	} 
+                	else {
+                    	// BMP code point - may be surrogate code point - make 
+                    	// <d800
+                    	ca -= 0x2800;
+                	}
+
+                	if ((cb <= LEAD_SURROGATE_MAX_VALUE && (i + 1) < lenb 
+                		&& isTrailSurrogate(sb.charAt(i + 1))) 
+                		|| (isTrailSurrogate(cb) && i > 0 
+                			&& isLeadSurrogate(sb.charAt(i - 1)))) {
+                    	// part of a surrogate pair, leave >=d800
+                	} 
+                	else {
+                    	// BMP code point - may be surrogate code point - make 
+                    	// < d800
+                    	cb -= 0x2800;
+                	}
+            	}
+
+	            // end of only different section
+	                    
+	            if (ca < cb) {
+	            	return -1;
+	            }
+	              
+	            return 1; // wasn't equal, so return 1
+	        }
+	          
+	        if (lena < lenb) {
+	            return -1;
+	        }
+	            
+	        if (lena > lenb) {
+	            return 1;
+	        }
+	                
+	        return 0;
+        }
+        
+
+    }
+    
+    // private data members -------------------------------------------------
+                             
+    /**
+    * Shift value for lead surrogate to form a supplementary character.
+    */
+	private static final int LEAD_SURROGATE_SHIFT_ = 10;
+	/**
+    * Mask to retrieve the significant value from a trail surrogate.
+    */
+	private static final int TRAIL_SURROGATE_MASK_     = 0x3FF;   
+    /**
+     * Value that all lead surrogate starts with
+     */
+    private static final int LEAD_SURROGATE_OFFSET_ = 
+	                                    LEAD_SURROGATE_MIN_VALUE - 
+	                                   (SUPPLEMENTARY_MIN_VALUE 
+	                                    >> LEAD_SURROGATE_SHIFT_); 	                  
+    
+    // private methods ------------------------------------------------------
+    
+    /**
+    * <p>Converts argument code point and returns a String object representing 
+    * the code point's value in UTF16 format.</p>
+    * <p>This method does not check for the validity of the codepoint, the
+    * results are not guaranteed if a invalid codepoint is passed as 
+    * argument.</p>
+    * <p>The result is a string whose length is 1 for non-supplementary code 
+    * points, 2 otherwise.</p>
+    * @param ch code point
+    * @return string representation of the code point
+    */
+    public static String toString(int ch)
+    {   
+        if (ch < SUPPLEMENTARY_MIN_VALUE) {
+            return String.valueOf((char)ch);
+        }
+        
+        StringBuffer result = new StringBuffer();
+        result.append(getLeadSurrogate(ch));
+        result.append(getTrailSurrogate(ch));
+        return result.toString();
+    }
+}
diff --git a/src/com/ibm/icu/text/UnescapeTransliterator.java b/src/com/ibm/icu/text/UnescapeTransliterator.java
new file mode 100755
index 0000000..23ee2c5
--- /dev/null
+++ b/src/com/ibm/icu/text/UnescapeTransliterator.java
@@ -0,0 +1,253 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   11/19/2001  aliu        Creation.
+**********************************************************************
+*/
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.*;
+
+/**
+ * A transliterator that converts Unicode escape forms to the
+ * characters they represent.  Escape forms have a prefix, a suffix, a
+ * radix, and minimum and maximum digit counts.
+ *
+ * <p>This class is package private.  It registers several standard
+ * variants with the system which are then accessed via their IDs.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: UnescapeTransliterator.java,v $ $Revision: 1.5 $ $Date: 2002/02/25 22:43:58 $
+ */
+class UnescapeTransliterator extends Transliterator {
+
+    /**
+     * The encoded pattern specification.  The pattern consists of
+     * zero or more forms.  Each form consists of a prefix, suffix,
+     * radix, minimum digit count, and maximum digit count.  These
+     * values are stored as a five character header.  That is, their
+     * numeric values are cast to 16-bit characters and stored in the
+     * string.  Following these five characters, the prefix
+     * characters, then suffix characters are stored.  Each form thus
+     * takes n+5 characters, where n is the total length of the prefix
+     * and suffix.  The end is marked by a header of length one
+     * consisting of the character END.
+     */
+    private char spec[];
+
+    /**
+     * Special character marking the end of the spec[] array.
+     */
+    private static final char END = 0xFFFF;
+
+    /**
+     * Registers standard variants with the system.  Called by
+     * Transliterator during initialization.
+     */
+    static void register() {
+        // Unicode: "U+10FFFF" hex, min=4, max=6
+        Transliterator.registerFactory("Hex-Any/Unicode", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/Unicode", new char[] {
+                    2, 0, 16, 4, 6, 'U', '+',
+                    END
+                });
+            }
+        });
+        
+        // Java: "\\uFFFF" hex, min=4, max=4
+        Transliterator.registerFactory("Hex-Any/Java", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/Java", new char[] {
+                    2, 0, 16, 4, 4, '\\', 'u',
+                    END
+                });
+            }
+        });
+        
+        // C: "\\uFFFF" hex, min=4, max=4; \\U0010FFFF hex, min=8, max=8
+        Transliterator.registerFactory("Hex-Any/C", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/C", new char[] {
+                    2, 0, 16, 4, 4, '\\', 'u',
+                    2, 0, 16, 8, 8, '\\', 'U',
+                    END
+                });
+            }
+        });
+        
+        // XML: "&#x10FFFF;" hex, min=1, max=6
+        Transliterator.registerFactory("Hex-Any/XML", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/XML", new char[] {
+                    3, 1, 16, 1, 6, '&', '#', 'x', ';',
+                    END
+                });
+            }
+        });
+
+        // XML10: "&1114111;" dec, min=1, max=7 (not really "Hex-Any")
+        Transliterator.registerFactory("Hex-Any/XML10", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/XML10", new char[] {
+                    2, 1, 10, 1, 7, '&', '#', ';',
+                    END
+                });
+            }
+        });
+
+        // Perl: "\\x{263A}" hex, min=1, max=6
+        Transliterator.registerFactory("Hex-Any/Perl", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/Perl", new char[] {
+                    3, 1, 16, 1, 6, '\\', 'x', '{', '}',
+                    END
+                });
+            }
+        });
+
+        // All: Java, C, Perl, XML, XML10, Unicode
+        Transliterator.registerFactory("Hex-Any", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any", new char[] {
+                    2, 0, 16, 4, 6, 'U', '+',            // Unicode
+                    2, 0, 16, 4, 4, '\\', 'u',           // Java
+                    2, 0, 16, 8, 8, '\\', 'U',           // C (surrogates)
+                    3, 1, 16, 1, 6, '&', '#', 'x', ';',  // XML
+                    2, 1, 10, 1, 7, '&', '#', ';',       // XML10
+                    3, 1, 16, 1, 6, '\\', 'x', '{', '}', // Perl
+                    END
+                });
+            }
+        });
+    }
+
+    /**
+     * Package private constructor.  Takes the encoded spec array.
+     */
+    UnescapeTransliterator(String ID, char spec[]) {
+        super(ID, null);
+        this.spec = spec;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position pos, boolean isIncremental) {
+        int start = pos.start;
+        int limit = pos.limit;
+        int i, j, ipat;
+
+      loop:
+        while (start < limit) {
+            // Loop over the forms in spec[].  Exit this loop when we
+            // match one of the specs.  Exit the outer loop if a
+            // partial match is detected and isIncremental is true.
+            for (j=0, ipat=0; spec[ipat] != END; ++j) {
+
+                // Read the header
+                int prefixLen = spec[ipat++];
+                int suffixLen = spec[ipat++];
+                int radix     = spec[ipat++];
+                int minDigits = spec[ipat++];
+                int maxDigits = spec[ipat++];
+
+                // s is a copy of start that is advanced over the
+                // characters as we parse them.
+                int s = start;
+                boolean match = true;
+
+                for (i=0; i<prefixLen; ++i) {
+                    if (s >= limit) {
+                        if (i > 0) {
+                            // We've already matched a character.  This is
+                            // a partial match, so we return if in
+                            // incremental mode.  In non-incremental mode,
+                            // go to the next spec.
+                            if (isIncremental) {
+                                break loop;
+                            }
+                            match = false;
+                            break;
+                        }
+                    }
+                    char c = text.charAt(s++);
+                    if (c != spec[ipat + i]) {
+                        match = false;
+                        break;
+                    }
+                }
+
+                if (match) {
+                    int u = 0;
+                    int digitCount = 0;
+                    for (;;) {
+                        if (s >= limit) {
+                            // Check for partial match in incremental mode.
+                            if (s > start && isIncremental) {
+                                break loop;
+                            }
+                            break;
+                        }
+                        int ch = text.char32At(s);
+                        int digit = UCharacter.digit(ch, radix);
+                        if (digit < 0) {
+                            break;
+                        }
+                        s += UTF16.getCharCount(ch);
+                        u = (u * radix) + digit;
+                        if (++digitCount == maxDigits) {
+                            break;
+                        }
+                    }
+
+                    match = (digitCount >= minDigits);
+
+                    if (match) {
+                        for (i=0; i<suffixLen; ++i) {
+                            if (s >= limit) {
+                                // Check for partial match in incremental mode.
+                                if (s > start && isIncremental) {
+                                    break loop;
+                                }
+                                match = false;
+                                break;
+                            }
+                            char c = text.charAt(s++);
+                            if (c != spec[ipat + prefixLen + i]) {
+                                match = false;
+                                break;
+                            }
+                        }
+
+                        if (match) {
+                            // At this point, we have a match
+                            String str = UTF16.valueOf(u);
+                            text.replace(start, s, str);
+                            limit -= s - start - str.length();
+                            // The following break statement leaves the
+                            // loop that is traversing the forms in
+                            // spec[].  We then parse the next input
+                            // character.
+                            break;
+                        }
+                    }
+                }
+
+                ipat += prefixLen + suffixLen;
+            }
+
+            if (start < limit) {
+                start += UTF16.getCharCount(text.char32At(start));
+            }
+        }
+
+        pos.contextLimit += limit - pos.limit;
+        pos.limit = limit;
+        pos.start = start;
+    }
+}
diff --git a/src/com/ibm/icu/text/UnicodeCompressor.java b/src/com/ibm/icu/text/UnicodeCompressor.java
new file mode 100755
index 0000000..6168171
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeCompressor.java
@@ -0,0 +1,1009 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/UnicodeCompressor.java,v $ 
+ * $Date: 2002/02/16 03:06:20 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+* A compression engine implementing the Standard Compression Scheme
+* for Unicode (SCSU) as outlined in <A
+* HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical
+* Report #6</A>.
+*
+* <P>The SCSU works by using dynamically positioned <EM>windows</EM>
+* consisting of 128 consecutive characters in Unicode.  During compression, 
+* characters within a window are encoded in the compressed stream as the bytes 
+* <TT>0x7F - 0xFF</TT>. The SCSU provides transparency for the characters 
+* (bytes) between <TT>U+0000 - U+00FF</TT>.  The SCSU approximates the 
+* storage size of traditional character sets, for example 1 byte per
+* character for ASCII or Latin-1 text, and 2 bytes per character for CJK
+* ideographs.</P>
+*
+* <P><STRONG>USAGE</STRONG></P>
+*
+* <P>The static methods on <TT>UnicodeCompressor</TT> may be used in a
+* straightforward manner to compress simple strings:</P>
+*
+* <PRE>
+*  String s = ... ; // get string from somewhere
+*  byte [] compressed = UnicodeCompressor.compress(s);
+* </PRE>
+*
+* <P>The static methods have a fairly large memory footprint.
+* For finer-grained control over memory usage, 
+* <TT>UnicodeCompressor</TT> offers more powerful APIs allowing
+* iterative compression:</P>
+*
+* <PRE>
+*  // Compress an array "chars" of length "len" using a buffer of 512 bytes
+*  // to the OutputStream "out"
+*
+*  UnicodeCompressor myCompressor         = new UnicodeCompressor();
+*  final static int  BUFSIZE              = 512;
+*  byte []           byteBuffer           = new byte [ BUFSIZE ];
+*  int               bytesWritten         = 0;
+*  int []            unicharsRead         = new int [1];
+*  int               totalCharsCompressed = 0;
+*  int               totalBytesWritten    = 0;
+*
+*  do {
+*    // do the compression
+*    bytesWritten = myCompressor.compress(chars, totalCharsCompressed, 
+*                                         len, unicharsRead,
+*                                         byteBuffer, 0, BUFSIZE);
+*
+*    // do something with the current set of bytes
+*    out.write(byteBuffer, 0, bytesWritten);
+*
+*    // update the no. of characters compressed
+*    totalCharsCompressed += unicharsRead[0];
+*
+*    // update the no. of bytes written
+*    totalBytesWritten += bytesWritten;
+*
+*  } while(totalCharsCompressed < len);
+*
+*  myCompressor.reset(); // reuse compressor
+* </PRE>
+*
+* @see UnicodeDecompressor
+*
+* @author Stephen F. Booth
+* @version 1.5 05 Aug 99
+* @version 1.4 21 Jul 99
+* @version 1.3 10 Mar 99
+* @version 1.2 08 Mar 99
+* @version 1.1 11 Jan 99 
+*/
+
+/*
+*
+* COMPRESSION STRATEGY
+*
+* Single Byte Mode
+*
+* There are three relevant cases.
+* If the character is in the current window or is Latin-1 (U+0000,
+* U+0009, U+000A, U+000D, U+0020 - U+007F), the character is placed
+* directly in the stream as a single byte.
+*
+*  1. Current character is in defined, inactive window.
+*  2. Current character is in undefined window.
+*  3. Current character is uncompressible Unicode (U+3400 - U+DFFF).
+* 
+*  1. Current character is in defined, inactive window
+*    A. Look ahead two characters
+*    B. If both following characters in same window as current character, 
+*       switch to defined window
+*    C. If only next character is in same window as current character, 
+*       quote defined window
+*    D. If neither of following characters is in same window as current, 
+*       quote defined window
+*   
+*  2. Current character is in undefined window
+*    A. Look ahead two characters
+*    B. If both following characters in same window as current character, 
+*       define new window
+*    C. If only next character in same window as current character, 
+*       switch to Unicode mode
+*       NOTE: This costs us one extra byte.  However, 
+*        since we have a limited number of windows to work with, it is 
+*        assumed the cost will pay off later in savings from a window with
+*        more characters in it.
+*    D. If neither of following characters in same window as current, 
+*       switch to Unicode mode.  Alternative to above: just quote 
+*       Unicode (same byte cost)
+*   
+*  3. Current character is uncompressible Unicode (U+3400 - U+DFFF)
+*    A. Look ahead one character
+*    B. If next character in non-compressible region, switch to 
+*       Unicode mode
+*    C. If next character not in non-compressible region, quote Unicode
+*   
+*
+* The following chart illustrates the bytes required for encoding characters
+* in each possible way
+*
+* 
+*                                   SINGLE BYTE MODE
+*                                       Characters in a row with same index
+*               tag encountered             1       2       3       4
+*               ---------------------------------------------------------------
+*               none (in current window)    1       2       3       4
+*
+*               quote Unicode               3       6       9       12
+*
+*   window not  switch to Unicode           3       5       7       9     byte
+*   defined     define window               3       4       5       6     cost
+*      
+*   window      switch to window            2       3       4       5
+*   defined     quote window                2       4       6       8
+*
+*  Unicode Mode
+*
+* There are two relevant cases.
+* If the character is in the non-compressible region
+* (U+3400 - U+DFFF), the character is simply written to the
+* stream as a pair of bytes.
+*
+* 1. Current character is in defined, inactive window.
+* 2. Current character is in undefined window.
+*
+*  1.Current character is in defined, inactive window
+*    A. Look ahead one character
+*    B. If next character has same index as current character, 
+*       switch to defined window (and switch to single-byte mode)
+*    C. If not, just put bytes in stream
+*   
+*  
+*  2. Current character is in undefined window
+*    A. Look ahead two characters
+*    B. If both in same window as current character, define window 
+*       (and switch to single-byte mode)
+*    C. If only next character in same window, just put bytes in stream
+*        NOTE: This costs us one extra byte.  However, 
+*        since we have a limited number of windows to work with, it is 
+*        assumed the cost will pay off later in savings from a window with 
+*        more characters in it.
+*    D. If neither in same window, put bytes in stream
+*   
+*
+* The following chart illustrates the bytes required for encoding characters
+* in each possible way
+*
+* 
+*                                   UNICODE MODE
+*                                       Characters in a row with same index
+*               tag encountered             1       2       3       4
+*               ---------------------------------------------------------------
+*               none                        2       4       6       8
+*
+*               quote Unicode               3       6       9       12
+*
+*   window not  define window               3       4       5       6     byte
+*   defined                                                               cost
+*   window      switch to window            2       3       4       5
+*   defined
+*/
+public final class UnicodeCompressor implements SCSU
+{
+    //==========================
+    // Class variables
+    //==========================
+
+    /** For quick identification of a byte as a single-byte mode tag */
+    private static boolean [] sSingleTagTable = {
+        // table generated by CompressionTableGenerator
+        false, true, true, true, true, true, true, true, true, false,
+	false, true, true, false, true, true, true, true, true, true,
+	true, true, true, true, true, true, true, true, true, true,
+	true, true, false, false, false, false, false, false,false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false   
+    };
+
+    /** For quick identification of a byte as a unicode mode tag */
+    private static boolean [] sUnicodeTagTable = {
+        // table generated by CompressionTableGenerator
+        false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, true,
+	true, true, true, true, true, true, true, true, true, true,
+	true, true, true, true, true, true, true, true, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false 
+    };
+
+    //==========================
+    // Instance variables
+    //==========================
+    
+    /** Alias to current dynamic window */
+    private int       fCurrentWindow   = 0;
+
+    /** Dynamic compression window offsets */
+    private int []    fOffsets         = new int [ NUMWINDOWS ];
+
+    /** Current compression mode */
+    private int       fMode            = SINGLEBYTEMODE;
+
+    /** Keeps count of times character indices are encountered */
+    private int []    fIndexCount      = new int [ MAXINDEX + 1 ];
+
+    /** The time stamps indicate when a window was last defined */
+    private int []    fTimeStamps      = new int [ NUMWINDOWS ];
+    
+    /** The current time stamp */
+    private int       fTimeStamp       = 0;
+    
+
+    /**
+     * Create a UnicodeCompressor.
+     * Sets all windows to their default values.
+     * @see #reset
+     */
+    public UnicodeCompressor()
+    {
+	reset();              // initialize to defaults
+    }
+
+    /**
+     * Compress a string into a byte array.
+     * @param buffer The string to compress.
+     * @return A byte array containing the compressed characters.
+     * @see #compress(char [], int, int)
+     */
+    public static byte [] compress(String buffer)
+    {
+	return compress(buffer.toCharArray(), 0, buffer.length());
+    }
+
+    /**
+     * Compress a Unicode character array into a byte array.
+     * @param buffer The character buffer to compress.
+     * @param start The start of the character run to compress.
+     * @param limit The limit of the character run to compress.
+     * @return A byte array containing the compressed characters.
+     * @see #compress(String)
+     */
+    public static byte [] compress(char [] buffer,
+				   int start,
+				   int limit)
+    {
+	UnicodeCompressor comp = new UnicodeCompressor();
+
+	// use a buffer that we know will never overflow
+	// in the worst case, each character will take 3 bytes
+	// to encode: UQU, hibyte, lobyte.  In this case, the
+	// compressed data will look like: SCU, UQU, hibyte, lobyte, ...
+	// buffer must be at least 4 bytes in size
+	int len = Math.max(4, 3 * (limit - start) + 1);
+	byte [] temp = new byte [len];
+
+	int byteCount = comp.compress(buffer, start, limit, null, 
+				      temp, 0, len);
+
+	byte [] result = new byte [byteCount];
+	System.arraycopy(temp, 0, result, 0, byteCount);
+	return result;
+    }
+
+    /**
+     * Compress a Unicode character array into a byte array.
+     *
+     * This function will only consume input that can be completely
+     * output.
+     *
+     * @param charBuffer The character buffer to compress.
+     * @param charBufferStart The start of the character run to compress.
+     * @param charBufferLimit The limit of the character run to compress.
+     * @param charsRead A one-element array.  If not null, on return 
+     * the number of characters read from charBuffer.
+     * @param byteBuffer A buffer to receive the compressed data.  This 
+     * buffer must be at minimum four bytes in size.
+     * @param byteBufferStart The starting offset to which to write 
+     * compressed data.
+     * @param byteBufferLimit The limiting offset for writing compressed data.
+     * @return The number of bytes written to byteBuffer.
+     */
+    public int compress(char []     charBuffer,
+			int         charBufferStart,
+			int         charBufferLimit,
+			int []      charsRead,
+			byte []     byteBuffer,
+			int         byteBufferStart,
+			int         byteBufferLimit)
+    {
+        // the current position in the target byte buffer
+	int     bytePos       = byteBufferStart;
+	
+	// the current position in the source unicode character buffer
+	int     ucPos         = charBufferStart;
+	
+	// the current unicode character from the source buffer
+	int     curUC         = INVALIDCHAR;
+	
+	// the index for the current character
+        int     curIndex      = -1;
+        
+	// look ahead
+	int     nextUC        = INVALIDCHAR;
+	int     forwardUC     = INVALIDCHAR;
+	
+        // temporary for window searching
+	int     whichWindow   = 0;
+	
+	// high and low bytes of the current unicode character
+	int     hiByte        = 0;
+	int     loByte        = 0;
+
+
+	// byteBuffer must be at least 4 bytes in size
+	if(byteBuffer.length < 4 || (byteBufferLimit - byteBufferStart) < 4)
+	    throw new IllegalArgumentException("byteBuffer.length < 4");
+
+    mainLoop:
+	while(ucPos < charBufferLimit && bytePos < byteBufferLimit) {
+	    switch(fMode) {
+		// main single byte mode compression loop
+	    case SINGLEBYTEMODE:
+	    singleByteModeLoop:
+	    while(ucPos < charBufferLimit && bytePos < byteBufferLimit) {
+		// get current char
+		curUC = charBuffer[ucPos++];
+
+		// get next char
+		if(ucPos < charBufferLimit) 
+		    nextUC = charBuffer[ucPos];
+		else
+		    nextUC = INVALIDCHAR;
+		
+		// chars less than 0x0080 (excluding tags) go straight
+		// in stream
+		if(curUC < 0x0080) {
+		    loByte = curUC & 0xFF;
+
+		    // we need to check and make sure we don't
+		    // accidentally write a single byte mode tag to
+		    // the stream unless it's quoted
+		    if(sSingleTagTable[loByte]) {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+			if( (bytePos + 1) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			// since we know the byte is less than 0x80, SQUOTE0
+			// will use static window 0, or ASCII
+			byteBuffer[bytePos++] = (byte) SQUOTE0;
+		    }
+
+		    byteBuffer[bytePos++] = (byte) loByte;
+		}
+
+		// if the char belongs to current window, convert it
+		// to a byte by adding the generic compression offset
+		// and subtracting the window's offset
+		else if(inDynamicWindow(curUC, fCurrentWindow) ) {
+		    byteBuffer[bytePos++] = (byte) 
+			(curUC - fOffsets[ fCurrentWindow ] 
+			 + COMPRESSIONOFFSET);
+		}
+		
+		// if char is not in compressible range, either switch to or
+		// quote from unicode
+		else if( ! isCompressible(curUC) ) {
+		    // only check next character if it is valid
+		    if(nextUC != INVALIDCHAR && isCompressible(nextUC)) {
+                                // make sure there is enough room to
+                                // write all three bytes if not,
+                                // rewind the source stream and break
+                                // out
+			if( (bytePos + 2) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			byteBuffer[bytePos++] = (byte) SQUOTEU;
+			byteBuffer[bytePos++] = (byte) (curUC >>> 8);
+			byteBuffer[bytePos++] = (byte) (curUC & 0xFF);
+		    }
+		    else {
+                                // make sure there is enough room to
+                                // write all four bytes if not, rewind
+                                // the source stream and break out
+			if((bytePos + 3) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			byteBuffer[bytePos++] = (byte) SCHANGEU;
+
+			hiByte = curUC >>> 8;
+			loByte = curUC & 0xFF;
+
+			if(sUnicodeTagTable[hiByte])
+			    // add quote Unicode tag
+			    byteBuffer[bytePos++]   = (byte) UQUOTEU;    
+
+			byteBuffer[bytePos++] = (byte) hiByte;
+			byteBuffer[bytePos++] = (byte) loByte;
+                
+			fMode = UNICODEMODE;
+			break singleByteModeLoop;
+		    }
+		}
+
+		// if the char is in a currently defined dynamic
+		// window, figure out which one, and either switch to
+		// it or quote from it
+		else if((whichWindow = findDynamicWindow(curUC)) 
+			!= INVALIDWINDOW ) {
+		    // look ahead
+		    if( (ucPos + 1) < charBufferLimit )
+			forwardUC = charBuffer[ucPos + 1];
+		    else
+			forwardUC = INVALIDCHAR;
+		    
+		    // all three chars in same window, switch to that
+		    // window inDynamicWindow will return false for
+		    // INVALIDCHAR
+		    if(inDynamicWindow(nextUC, whichWindow) 
+		       && inDynamicWindow(forwardUC, whichWindow)) {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+			if( (bytePos + 1) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			byteBuffer[bytePos++] = (byte)(SCHANGE0 + whichWindow);
+			byteBuffer[bytePos++] = (byte) 
+			    (curUC - fOffsets[whichWindow] 
+			     + COMPRESSIONOFFSET);
+			fTimeStamps [ whichWindow ] = ++fTimeStamp;
+			fCurrentWindow = whichWindow;
+		    }
+		    
+		    // either only next char or neither in same
+		    // window, so quote
+		    else {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+			if((bytePos + 1) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			byteBuffer[bytePos++] = (byte) (SQUOTE0 + whichWindow);
+			byteBuffer[bytePos++] = (byte) 
+			    (curUC - fOffsets[whichWindow] 
+			     + COMPRESSIONOFFSET);
+		    }
+		}
+
+		// if a static window is defined, and the following
+		// character is not in that static window, quote from
+		// the static window Note: to quote from a static
+		// window, don't add 0x80
+		else if((whichWindow = findStaticWindow(curUC)) 
+			!= INVALIDWINDOW 
+			&& ! inStaticWindow(nextUC, whichWindow) ) {
+		    // make sure there is enough room to write both
+		    // bytes if not, rewind the source stream and
+		    // break out
+		    if((bytePos + 1) >= byteBufferLimit) 
+			{ --ucPos; break mainLoop; }
+
+		    byteBuffer[bytePos++] = (byte) (SQUOTE0 + whichWindow);
+		    byteBuffer[bytePos++] = (byte) 
+			(curUC - sOffsets[whichWindow]);
+		}
+		
+		// if a window is not defined, decide if we want to
+		// define a new one or switch to unicode mode
+		else {
+		    // determine index for current char (char is compressible)
+		    curIndex = makeIndex(curUC);
+		    fIndexCount[curIndex]++;
+
+		    // look ahead
+		    if((ucPos + 1) < charBufferLimit)
+			forwardUC = charBuffer[ucPos + 1];
+		    else
+			forwardUC = INVALIDCHAR;
+
+		    // if we have encountered this index at least once
+		    // before, define a new window
+		    // OR
+		    // three chars in a row with same index, define a
+		    // new window (makeIndex will return RESERVEDINDEX
+		    // for INVALIDCHAR)
+		    if((fIndexCount[curIndex] > 1) ||
+		       (curIndex == makeIndex(nextUC) 
+			&& curIndex == makeIndex(forwardUC))) {
+			// make sure there is enough room to write all
+			// three bytes if not, rewind the source
+			// stream and break out
+			if( (bytePos + 2) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			// get least recently defined window
+			whichWindow = getLRDefinedWindow();
+
+			byteBuffer[bytePos++] = (byte)(SDEFINE0 + whichWindow);
+			byteBuffer[bytePos++] = (byte) curIndex;
+			byteBuffer[bytePos++] = (byte) 
+			    (curUC - sOffsetTable[curIndex] 
+			     + COMPRESSIONOFFSET);
+
+			fOffsets[whichWindow] = sOffsetTable[curIndex];
+			fCurrentWindow = whichWindow;
+			fTimeStamps [whichWindow] = ++fTimeStamp;
+		    }
+
+		    // only two chars in a row with same index, so
+		    // switch to unicode mode (makeIndex will return
+		    // RESERVEDINDEX for INVALIDCHAR)
+		    // OR
+		    // three chars have different indices, so switch
+		    // to unicode mode
+		    else {
+			// make sure there is enough room to write all
+			// four bytes if not, rewind the source stream
+			// and break out
+			if((bytePos + 3) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			byteBuffer[bytePos++] = (byte) SCHANGEU;
+
+			hiByte = curUC >>> 8;
+			loByte = curUC & 0xFF;
+
+			if(sUnicodeTagTable[hiByte])
+			    // add quote Unicode tag
+			    byteBuffer[bytePos++] = (byte) UQUOTEU; 
+
+			byteBuffer[bytePos++] = (byte) hiByte;
+			byteBuffer[bytePos++] = (byte) loByte;
+
+			fMode = UNICODEMODE;
+			break singleByteModeLoop;
+		    }
+		}
+	    }
+	    break;
+
+	    case UNICODEMODE:
+		// main unicode mode compression loop
+	    unicodeModeLoop:
+	    while(ucPos < charBufferLimit && bytePos < byteBufferLimit) {
+		// get current char
+		curUC = charBuffer[ucPos++];    
+
+		// get next char
+		if( ucPos < charBufferLimit )
+		    nextUC = charBuffer[ucPos];
+		else
+		    nextUC = INVALIDCHAR;
+
+		// if we have two uncompressible chars in a row,
+		// put the current char's bytes in the stream
+		if( ! isCompressible(curUC) 
+		    || (nextUC != INVALIDCHAR && ! isCompressible(nextUC))) {
+		    // make sure there is enough room to write all three bytes
+		    // if not, rewind the source stream and break out
+		    if( (bytePos + 2) >= byteBufferLimit) 
+			{ --ucPos; break mainLoop; }
+
+		    hiByte = curUC >>> 8;
+		    loByte = curUC & 0xFF;
+
+		    if(sUnicodeTagTable[ hiByte ])
+			// add quote Unicode tag
+			byteBuffer[bytePos++] = (byte) UQUOTEU;
+                
+		    byteBuffer[bytePos++] = (byte) hiByte;
+		    byteBuffer[bytePos++] = (byte) loByte;
+        }
+		
+		// bytes less than 0x80 can go straight in the stream,
+		// but in single-byte mode
+		else if(curUC < 0x0080) {
+		    loByte = curUC & 0xFF;
+
+		    // if two chars in a row below 0x80 and the
+		    // current char is not a single-byte mode tag,
+		    // switch to single-byte mode
+		    if(nextUC != INVALIDCHAR 
+		       && nextUC < 0x0080 && ! sSingleTagTable[ loByte ] ) {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+			if( (bytePos + 1) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			// use the last-active window
+			whichWindow = fCurrentWindow;
+			byteBuffer[bytePos++] = (byte)(UCHANGE0 + whichWindow);
+			byteBuffer[bytePos++] = (byte) loByte;
+
+			//fCurrentWindow = 0;
+			fTimeStamps [whichWindow] = ++fTimeStamp;
+			fMode = SINGLEBYTEMODE;
+			break unicodeModeLoop;
+		    }
+
+		    // otherwise, just write the bytes to the stream
+		    // (this will cover the case of only 1 char less than 0x80
+		    // and single-byte mode tags)
+		    else {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+			if((bytePos + 1) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			// since the character is less than 0x80, the
+			// high byte is always 0x00 - no need for
+			// (curUC >>> 8)
+			byteBuffer[bytePos++] = (byte) 0x00;
+			byteBuffer[bytePos++] = (byte) loByte;
+		    }
+		}
+
+		// figure out if the current char is in a defined window
+		else if((whichWindow = findDynamicWindow(curUC)) 
+			!= INVALIDWINDOW ) {
+		    // if two chars in a row in the same window,
+		    // switch to that window and go to single-byte mode
+		    // inDynamicWindow will return false for INVALIDCHAR
+		    if(inDynamicWindow(nextUC, whichWindow)) {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+			if((bytePos + 1) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			byteBuffer[bytePos++] = (byte)(UCHANGE0 + whichWindow);
+			byteBuffer[bytePos++] = (byte) 
+			    (curUC - fOffsets[whichWindow] 
+			     + COMPRESSIONOFFSET);
+
+			fTimeStamps [ whichWindow ] = ++fTimeStamp;
+			fCurrentWindow = whichWindow;
+			fMode = SINGLEBYTEMODE;
+			break unicodeModeLoop;
+		    }
+
+		    // otherwise, just quote the unicode for the char
+		    else {
+                                // make sure there is enough room to
+                                // write all three bytes if not,
+                                // rewind the source stream and break
+                                // out
+			if((bytePos + 2) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			hiByte = curUC >>> 8;
+			loByte = curUC & 0xFF;
+
+			if(sUnicodeTagTable[ hiByte ])
+			    // add quote Unicode tag
+			    byteBuffer[bytePos++] = (byte) UQUOTEU;
+
+			byteBuffer[bytePos++] = (byte) hiByte;
+			byteBuffer[bytePos++] = (byte) loByte;
+		    }
+		}
+		
+		// char is not in a defined window
+		else {
+		    // determine index for current char (char is compressible)
+		    curIndex = makeIndex(curUC);
+		    fIndexCount[curIndex]++;
+		    
+		    // look ahead
+		    if( (ucPos + 1) < charBufferLimit )
+			forwardUC = charBuffer[ucPos + 1];
+		    else
+			forwardUC = INVALIDCHAR;
+		    
+		    // if we have encountered this index at least once
+		    // before, define a new window for it that hasn't
+		    // previously been redefined
+		    // OR
+		    // if three chars in a row with the same index,
+		    // define a new window (makeIndex will return
+		    // RESERVEDINDEX for INVALIDCHAR)
+		    if((fIndexCount[curIndex] > 1) ||
+		       (curIndex == makeIndex(nextUC) 
+			&& curIndex == makeIndex(forwardUC))) {
+                                // make sure there is enough room to
+                                // write all three bytes if not,
+                                // rewind the source stream and break
+                                // out
+			if((bytePos + 2) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			// get least recently defined window
+			whichWindow = getLRDefinedWindow();
+
+			byteBuffer[bytePos++] = (byte)(UDEFINE0 + whichWindow);
+			byteBuffer[bytePos++] = (byte) curIndex;
+			byteBuffer[bytePos++] = (byte) 
+			    (curUC - sOffsetTable[curIndex] 
+			     + COMPRESSIONOFFSET);
+			
+			fOffsets[whichWindow] = sOffsetTable[curIndex];
+			fCurrentWindow = whichWindow;
+			fTimeStamps [whichWindow] = ++fTimeStamp;
+			fMode = SINGLEBYTEMODE;
+			break unicodeModeLoop;
+		    }
+		    
+		    // otherwise just quote the unicode, and save our
+		    // windows for longer runs
+		    else {
+                                // make sure there is enough room to
+                                // write all three bytes if not,
+                                // rewind the source stream and break
+                                // out
+			if((bytePos + 2) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			hiByte = curUC >>> 8;
+			loByte = curUC & 0xFF;
+
+			if(sUnicodeTagTable[ hiByte ])
+			    // add quote Unicode tag
+			    byteBuffer[bytePos++] = (byte) UQUOTEU;  
+			
+			byteBuffer[bytePos++] = (byte) hiByte;
+			byteBuffer[bytePos++] = (byte) loByte;
+		    }
+		}
+	    }
+	    }  // end switch
+	}
+	
+        // fill in output parameter
+	if(charsRead != null)
+	    charsRead [0] = (ucPos - charBufferStart);
+        
+        // return # of bytes written
+        return (bytePos - byteBufferStart);
+    }
+
+    /** Reset the compressor to its initial state. */
+    public void reset()
+    {
+	int i;
+
+        // reset dynamic windows
+        fOffsets[0] = 0x0080;    // Latin-1
+        fOffsets[1] = 0x00C0;    // Latin-1 Supplement + Latin Extended-A
+        fOffsets[2] = 0x0400;    // Cyrillic
+        fOffsets[3] = 0x0600;    // Arabic
+        fOffsets[4] = 0x0900;    // Devanagari
+        fOffsets[5] = 0x3040;    // Hiragana
+        fOffsets[6] = 0x30A0;    // Katakana
+        fOffsets[7] = 0xFF00;    // Fullwidth ASCII
+
+
+        // reset time stamps
+        for(i = 0; i < NUMWINDOWS; i++) {
+            fTimeStamps[i]          = 0;
+        }
+
+        // reset count of seen indices
+        for(i = 0; i <= MAXINDEX; i++ ) {
+            fIndexCount[i] = 0;
+        }
+
+        fTimeStamp      = 0;                // Reset current time stamp
+        fCurrentWindow  = 0;                // Make current window Latin-1
+        fMode           = SINGLEBYTEMODE;   // Always start in single-byte mode
+    }
+
+    //==========================
+    // Determine the index for a character
+    //==========================
+
+    /**
+     * Create the index value for a character.
+     * For more information on this function, refer to table X-3
+     * <A HREF="http://www.unicode.org/unicode/reports/tr6">UTR6</A>.
+     * @param c The character in question.
+     * @return An index for c
+     */
+    private static int makeIndex(int c)
+    {
+        // check the predefined indices
+        if(c >= 0x00C0 && c < 0x0140)
+            return LATININDEX;
+        else if(c >= 0x0250 && c < 0x02D0)
+            return IPAEXTENSIONINDEX;
+        else if(c >= 0x0370 && c < 0x03F0)
+            return GREEKINDEX;
+        else if(c >= 0x0530 && c < 0x0590)
+            return ARMENIANINDEX;
+        else if(c >= 0x3040 && c < 0x30A0)
+            return HIRAGANAINDEX;
+        else if(c >= 0x30A0 && c < 0x3120)
+            return KATAKANAINDEX;
+        else if(c >= 0xFF60 && c < 0xFF9F)
+            return HALFWIDTHKATAKANAINDEX;
+
+        // calculate index
+        else if(c >= 0x0080 && c < 0x3400)
+            return (c / 0x80) & 0xFF;
+        else if(c >= 0xE000 && c <= 0xFFFF)
+            return ((c - 0xAC00) / 0x80) & 0xFF;
+            
+        // should never happen
+        else {
+            return RESERVEDINDEX;
+        }
+    }
+
+    //==========================
+    // Check if a given character fits in a window
+    //==========================
+
+    /**
+    * Determine if a character is in a dynamic window.
+    * @param c The character to test
+    * @param whichWindow The dynamic window the test
+    * @return true if <TT>c</TT> will fit in <TT>whichWindow</TT>, 
+    * false otherwise.
+    */
+    private boolean inDynamicWindow(int c, 
+				    int whichWindow)
+    {
+        return (c >= fOffsets[whichWindow] 
+		&& c < (fOffsets[whichWindow] + 0x80));
+    }
+
+    /**
+     * Determine if a character is in a static window.
+    * @param c The character to test
+    * @param whichWindow The static window the test
+    * @return true if <TT>c</TT> will fit in <TT>whichWindow</TT>, 
+    * false otherwise.
+    */
+    private static boolean inStaticWindow(int c, 
+					  int whichWindow)
+    {
+        return (c >= sOffsets[whichWindow]
+		&& c < (sOffsets[whichWindow] + 0x80));
+    }
+
+    //==========================
+    // Check if a given character is compressible
+    //==========================
+
+    /**
+    * Determine if a character is compressible.
+    * @param c The character to test.
+    * @return true if the <TT>c</TT> is compressible, false otherwise.
+    */
+    private static boolean isCompressible(int c)
+    {
+        return (c < 0x3400 || c >= 0xE000);
+    }
+
+    //==========================
+    // Check if a window is defined for a given character
+    //==========================
+
+    /**
+     * Determine if a dynamic window for a certain character is defined
+     * @param c The character in question
+     * @return The dynamic window containing <TT>c</TT>, or 
+     * INVALIDWINDOW if not defined.
+     */
+    private int findDynamicWindow(int c)
+    {
+	// supposedly faster to count down
+        //for(int i = 0; i < NUMWINDOWS; i++) {
+	for(int i = NUMWINDOWS - 1; i >= 0; --i) {
+	    if(inDynamicWindow(c, i)) {
+		++fTimeStamps[i];
+                return i;
+	    }
+	}
+        
+        return INVALIDWINDOW;
+    }
+
+    /**
+     * Determine if a static window for a certain character is defined
+     * @param c The character in question
+     * @return The static window containing <TT>c</TT>, or 
+     * INVALIDWINDOW if not defined.
+     */
+    private static int findStaticWindow(int c)
+    {
+	// supposedly faster to count down
+        //for(int i = 0; i < NUMSTATICWINDOWS; i++) {
+	for(int i = NUMSTATICWINDOWS - 1; i >= 0; --i) {
+	    if(inStaticWindow(c, i)) {
+                return i;
+	    }
+	}
+	
+        return INVALIDWINDOW;
+    }
+    
+    //==========================
+    // Find the least-recently used window
+    //==========================
+
+    /** Find the least-recently defined window */
+    private int getLRDefinedWindow()
+    {
+        int leastRU         = Integer.MAX_VALUE;
+        int whichWindow     = INVALIDWINDOW;
+
+        // find least recently used window
+        // supposedly faster to count down
+        //for( int i = 0; i < NUMWINDOWS; i++ ) {
+        for(int i = NUMWINDOWS - 1; i >= 0; --i ) {
+            if( fTimeStamps[i] < leastRU ) {
+                leastRU   = fTimeStamps[i];
+                whichWindow  = i;
+            }
+        }
+
+        return whichWindow;
+    }
+    
+};
diff --git a/src/com/ibm/icu/text/UnicodeDecompressor.java b/src/com/ibm/icu/text/UnicodeDecompressor.java
new file mode 100755
index 0000000..e54638a
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeDecompressor.java
@@ -0,0 +1,565 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/UnicodeDecompressor.java,v $ 
+ * $Date: 2002/02/16 03:06:21 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+/**
+* A decompression engine implementing the Standard Compression Scheme
+* for Unicode (SCSU) as outlined in <A
+* HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical
+* Report #6</A>.
+*
+* <P><STRONG>USAGE</STRONG></P>
+*
+* <P>The static methods on <TT>UnicodeDecompressor</TT> may be used in a
+* straightforward manner to decompress simple strings:</P>
+*
+* <PRE>
+*  byte [] compressed = ... ; // get compressed bytes from somewhere
+*  String result = UnicodeDecompressor.decompress(compressed);
+* </PRE>
+*
+* <P>The static methods have a fairly large memory footprint.
+* For finer-grained control over memory usage, 
+* <TT>UnicodeDecompressor</TT> offers more powerful APIs allowing
+* iterative decompression:</P>
+*
+* <PRE>
+*  // Decompress an array "bytes" of length "len" using a buffer of 512 chars
+*  // to the Writer "out"
+*
+*  UnicodeDecompressor myDecompressor         = new UnicodeDecompressor();
+*  final static int    BUFSIZE                = 512;
+*  char []             charBuffer             = new char [ BUFSIZE ];
+*  int                 charsWritten           = 0;
+*  int []              bytesRead              = new int [1];
+*  int                 totalBytesDecompressed = 0;
+*  int                 totalCharsWritten      = 0;
+*
+*  do {
+*    // do the decompression
+*    charsWritten = myDecompressor.decompress(bytes, totalBytesDecompressed, 
+*                                             len, bytesRead,
+*                                             charBuffer, 0, BUFSIZE);
+*
+*    // do something with the current set of chars
+*    out.write(charBuffer, 0, charsWritten);
+*
+*    // update the no. of bytes decompressed
+*    totalBytesDecompressed += bytesRead[0];
+*
+*    // update the no. of chars written
+*    totalCharsWritten += charsWritten;
+*
+*  } while(totalBytesDecompressed < len);
+*
+*  myDecompressor.reset(); // reuse decompressor
+* </PRE>
+*
+* <P>Decompression is performed according to the standard set forth in 
+* <A HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical 
+* Report #6</A></P>
+*
+* @see UnicodeCompressor
+*
+* @author Stephen F. Booth
+* @version 1.5 05 Aug 99
+* @version 1.4 21 Jul 99
+* @version 1.3 10 Mar 99
+* @version 1.2 08 Mar 99
+* @version 1.1 11 Jan 99 
+*/
+public final class UnicodeDecompressor implements SCSU
+{
+    //==========================
+    // Instance variables
+    //==========================
+    
+    /** Alias to current dynamic window */
+    private int       fCurrentWindow   = 0;
+
+    /** Dynamic compression window offsets */
+    private int []    fOffsets         = new int [ NUMWINDOWS ];
+
+    /** Current compression mode */
+    private int       fMode            = SINGLEBYTEMODE;
+
+    /** Size of our internal buffer */
+    private final static int BUFSIZE   = 3;
+
+    /** Internal buffer for saving state */
+    private byte []   fBuffer          = new byte [BUFSIZE];
+
+    /** Number of characters in our internal buffer */
+    private int       fBufferLength    = 0;
+    
+
+    /**
+     * Create a UnicodeDecompressor.
+     * Sets all windows to their default values.
+     * @see #reset
+     */
+    public UnicodeDecompressor()
+    {
+	reset();              // initialize to defaults
+    }
+
+    /**
+     * Decompress a byte array into a String.
+     * @param buffer The byte array to decompress.
+     * @return A String containing the decompressed characters.
+     * @see #decompress(byte [], int, int)
+     */
+    public static String decompress(byte [] buffer)
+    {
+	char [] buf = decompress(buffer, 0, buffer.length);
+	return new String(buf);
+    }
+
+    /**
+     * Decompress a byte array into a Unicode character array.
+     * @param buffer The byte array to decompress.
+     * @param start The start of the byte run to decompress.
+     * @param limit The limit of the byte run to decompress.
+     * @return A character array containing the decompressed bytes.
+     * @see #decompress(byte [])
+     */
+    public static char [] decompress(byte [] buffer,
+				     int start,
+				     int limit)
+    {
+	UnicodeDecompressor comp = new UnicodeDecompressor();
+
+	// use a buffer we know will never overflow
+	// in the worst case, each byte will decompress
+	// to a surrogate pair (buffer must be at least 2 chars)
+	int len = Math.max(2, 2 * (limit - start));
+	char [] temp = new char [len];
+
+	int charCount = comp.decompress(buffer, start, limit, null, 
+					temp, 0, len);
+
+	char [] result = new char [charCount];
+	System.arraycopy(temp, 0, result, 0, charCount);
+	return result;
+    }
+    
+    /**
+     * Decompress a byte array into a Unicode character array.
+     *
+     * This function will either completely fill the output buffer, 
+     * or consume the entire input.  
+     *
+     * @param byteBuffer The byte buffer to decompress.
+     * @param byteBufferStart The start of the byte run to decompress.
+     * @param byteBufferLimit The limit of the byte run to decompress.
+     * @param bytesRead A one-element array.  If not null, on return
+     * the number of bytes read from byteBuffer.
+     * @param charBuffer A buffer to receive the decompressed data. 
+     * This buffer must be at minimum two characters in size.
+     * @param charBufferStart The starting offset to which to write 
+     * decompressed data.
+     * @param charBufferLimit The limiting offset for writing 
+     * decompressed data.
+     * @return The number of Unicode characters written to charBuffer.
+     */
+    public int decompress(byte []    byteBuffer,
+			  int        byteBufferStart,
+			  int        byteBufferLimit,
+			  int []     bytesRead,
+			  char []    charBuffer,
+			  int        charBufferStart,
+			  int        charBufferLimit)
+    {
+	// the current position in the source byte buffer
+	int bytePos      = byteBufferStart;
+	
+	// the current position in the target char buffer
+	int ucPos        = charBufferStart;
+        
+        // the current byte from the source buffer
+	int aByte        = 0x00;
+
+
+	// charBuffer must be at least 2 chars in size
+	if(charBuffer.length < 2 || (charBufferLimit - charBufferStart) < 2)
+	    throw new IllegalArgumentException("charBuffer.length < 2");
+	
+	// if our internal buffer isn't empty, flush its contents
+	// to the output buffer before doing any more decompression
+	if(fBufferLength > 0) {
+
+	    int newBytes = 0;
+
+	    // fill the buffer completely, to guarantee one full character
+	    if(fBufferLength != BUFSIZE) {
+		newBytes = fBuffer.length - fBufferLength;
+
+		// verify there are newBytes bytes in byteBuffer
+		if(byteBufferLimit - byteBufferStart < newBytes)
+		    newBytes = byteBufferLimit - byteBufferStart;
+
+		System.arraycopy(byteBuffer, byteBufferStart, 
+				 fBuffer, fBufferLength, newBytes);
+	    }
+
+	    // reset buffer length to 0 before recursive call
+	    fBufferLength = 0;
+
+	    // call self recursively to decompress the buffer
+	    int count = decompress(fBuffer, 0, fBuffer.length, null,
+				   charBuffer, charBufferStart, 
+				   charBufferLimit);
+
+	    // update the positions into the arrays
+	    ucPos += count;
+	    bytePos += newBytes;
+	}
+
+        // the main decompression loop
+    mainLoop:
+	while(bytePos < byteBufferLimit && ucPos < charBufferLimit) {
+	    switch(fMode) {  
+	    case SINGLEBYTEMODE:
+		// single-byte mode decompression loop
+	    singleByteModeLoop:
+	    while(bytePos < byteBufferLimit && ucPos < charBufferLimit) {
+		aByte = byteBuffer[bytePos++] & 0xFF;
+		switch(aByte) {
+		    // All bytes from 0x80 through 0xFF are remapped
+		    // to chars or surrogate pairs according to the
+		    // currently active window
+		case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: 
+		case 0x85: case 0x86: case 0x87: case 0x88: case 0x89:
+		case 0x8A: case 0x8B: case 0x8C: case 0x8D: case 0x8E:
+		case 0x8F: case 0x90: case 0x91: case 0x92: case 0x93:
+		case 0x94: case 0x95: case 0x96: case 0x97: case 0x98:
+		case 0x99: case 0x9A: case 0x9B: case 0x9C: case 0x9D:
+		case 0x9E: case 0x9F: case 0xA0: case 0xA1: case 0xA2:
+		case 0xA3: case 0xA4: case 0xA5: case 0xA6: case 0xA7:
+		case 0xA8: case 0xA9: case 0xAA: case 0xAB: case 0xAC:
+		case 0xAD: case 0xAE: case 0xAF: case 0xB0: case 0xB1:
+		case 0xB2: case 0xB3: case 0xB4: case 0xB5: case 0xB6:
+		case 0xB7: case 0xB8: case 0xB9: case 0xBA: case 0xBB:
+		case 0xBC: case 0xBD: case 0xBE: case 0xBF: case 0xC0:
+		case 0xC1: case 0xC2: case 0xC3: case 0xC4: case 0xC5:
+		case 0xC6: case 0xC7: case 0xC8: case 0xC9: case 0xCA:
+		case 0xCB: case 0xCC: case 0xCD: case 0xCE: case 0xCF:
+		case 0xD0: case 0xD1: case 0xD2: case 0xD3: case 0xD4:
+		case 0xD5: case 0xD6: case 0xD7: case 0xD8: case 0xD9:
+		case 0xDA: case 0xDB: case 0xDC: case 0xDD: case 0xDE:
+		case 0xDF: case 0xE0: case 0xE1: case 0xE2: case 0xE3:
+		case 0xE4: case 0xE5: case 0xE6: case 0xE7: case 0xE8:
+		case 0xE9: case 0xEA: case 0xEB: case 0xEC: case 0xED:
+		case 0xEE: case 0xEF: case 0xF0: case 0xF1: case 0xF2:
+		case 0xF3: case 0xF4: case 0xF5: case 0xF6: case 0xF7:
+		case 0xF8: case 0xF9: case 0xFA: case 0xFB: case 0xFC:
+		case 0xFD: case 0xFE: case 0xFF: 
+		    // For offsets <= 0xFFFF, convert to a single char
+		    // by adding the window's offset and subtracting
+		    // the generic compression offset
+		    if(fOffsets[ fCurrentWindow ] <= 0xFFFF) {
+			charBuffer[ucPos++] = (char) 
+			    (aByte + fOffsets[ fCurrentWindow ] 
+			     - COMPRESSIONOFFSET);
+		    }
+		    // For offsets > 0x10000, convert to a surrogate pair by 
+		    // normBase = window's offset - 0x10000
+		    // high surr. = 0xD800 + (normBase >> 10)
+		    // low  surr. = 0xDC00 + (normBase & 0x3FF) + (byte & 0x7F)
+		    else {
+			// make sure there is enough room to write
+			// both characters 
+			// if not, save state and break out
+			if((ucPos + 1) >= charBufferLimit) {
+			    --bytePos;
+			    System.arraycopy(byteBuffer, bytePos,
+					     fBuffer, 0, 
+					     byteBufferLimit - bytePos);
+			    fBufferLength = byteBufferLimit - bytePos;
+			    bytePos += fBufferLength;
+			    break mainLoop; 
+			}
+			
+			int normalizedBase = fOffsets[ fCurrentWindow ] 
+			    - 0x10000;
+			charBuffer[ucPos++] = (char) 
+			    (0xD800 + (normalizedBase >> 10));
+			charBuffer[ucPos++] = (char) 
+			    (0xDC00 + (normalizedBase & 0x3FF)+(aByte & 0x7F));
+		    }
+		    break;
+
+		    // bytes from 0x20 through 0x7F are treated as ASCII and
+		    // are remapped to chars by padding the high byte
+		    // (this is the same as quoting from static window 0)
+		    // NUL (0x00), HT (0x09), CR (0x0A), LF (0x0D) 
+		    // are treated as ASCII as well
+		case 0x00: case 0x09: case 0x0A: case 0x0D:
+		case 0x20: case 0x21: case 0x22: case 0x23: case 0x24:
+		case 0x25: case 0x26: case 0x27: case 0x28: case 0x29:
+		case 0x2A: case 0x2B: case 0x2C: case 0x2D: case 0x2E:
+		case 0x2F: case 0x30: case 0x31: case 0x32: case 0x33:
+		case 0x34: case 0x35: case 0x36: case 0x37: case 0x38:
+		case 0x39: case 0x3A: case 0x3B: case 0x3C: case 0x3D:
+		case 0x3E: case 0x3F: case 0x40: case 0x41: case 0x42:
+		case 0x43: case 0x44: case 0x45: case 0x46: case 0x47:
+		case 0x48: case 0x49: case 0x4A: case 0x4B: case 0x4C:
+		case 0x4D: case 0x4E: case 0x4F: case 0x50: case 0x51:
+		case 0x52: case 0x53: case 0x54: case 0x55: case 0x56:
+		case 0x57: case 0x58: case 0x59: case 0x5A: case 0x5B:
+		case 0x5C: case 0x5D: case 0x5E: case 0x5F: case 0x60:
+		case 0x61: case 0x62: case 0x63: case 0x64: case 0x65:
+		case 0x66: case 0x67: case 0x68: case 0x69: case 0x6A:
+		case 0x6B: case 0x6C: case 0x6D: case 0x6E: case 0x6F:
+		case 0x70: case 0x71: case 0x72: case 0x73: case 0x74:
+		case 0x75: case 0x76: case 0x77: case 0x78: case 0x79:
+		case 0x7A: case 0x7B: case 0x7C: case 0x7D: case 0x7E:
+		case 0x7F: 
+		    charBuffer[ucPos++] = (char) aByte;
+		    break;
+
+		    // quote unicode
+		case SQUOTEU:
+		    // verify we have two bytes following tag
+		    // if not, save state and break out
+		    if( (bytePos + 1) >= byteBufferLimit ) {
+			--bytePos;
+			System.arraycopy(byteBuffer, bytePos,
+					 fBuffer, 0, 
+					 byteBufferLimit - bytePos);
+			fBufferLength = byteBufferLimit - bytePos;
+			bytePos += fBufferLength;
+			break mainLoop; 
+		    }
+                
+		    aByte = byteBuffer[bytePos++];
+		    charBuffer[ucPos++] = (char)
+			(aByte << 8 | (byteBuffer[bytePos++] & 0xFF));
+		    break;
+
+		    // switch to Unicode mode
+		case SCHANGEU:
+		    fMode = UNICODEMODE;
+		    break singleByteModeLoop;
+		    //break;
+
+		    // handle all quote tags
+		case SQUOTE0: case SQUOTE1: case SQUOTE2: case SQUOTE3:
+		case SQUOTE4: case SQUOTE5: case SQUOTE6: case SQUOTE7:
+		    // verify there is a byte following the tag
+		    // if not, save state and break out
+		    if(bytePos >= byteBufferLimit) {
+			--bytePos;
+			System.arraycopy(byteBuffer, bytePos,
+					 fBuffer, 0, 
+					 byteBufferLimit - bytePos);
+			fBufferLength = byteBufferLimit - bytePos;
+			bytePos += fBufferLength;
+			break mainLoop; 
+		    }
+                
+		    // if the byte is in the range 0x00 - 0x7F, use
+		    // static window n otherwise, use dynamic window n
+		    int dByte = byteBuffer[bytePos++] & 0xFF;
+		    charBuffer[ucPos++] = (char) 
+			(dByte+ (dByte >= 0x00 && dByte < 0x80 
+				 ? sOffsets[aByte - SQUOTE0] 
+				 : (fOffsets[aByte - SQUOTE0] 
+				    - COMPRESSIONOFFSET))); 
+		    break;
+
+		    // handle all change tags
+		case SCHANGE0: case SCHANGE1: case SCHANGE2: case SCHANGE3:
+		case SCHANGE4: case SCHANGE5: case SCHANGE6: case SCHANGE7:
+		    fCurrentWindow = aByte - SCHANGE0;
+		    break;
+
+		    // handle all define tags
+		case SDEFINE0: case SDEFINE1: case SDEFINE2: case SDEFINE3:
+		case SDEFINE4: case SDEFINE5: case SDEFINE6: case SDEFINE7:
+		    // verify there is a byte following the tag
+		    // if not, save state and break out
+		    if(bytePos >= byteBufferLimit) {
+			--bytePos;
+			System.arraycopy(byteBuffer, bytePos,
+					 fBuffer, 0, 
+					 byteBufferLimit - bytePos);
+			fBufferLength = byteBufferLimit - bytePos;
+			bytePos += fBufferLength;
+			break mainLoop; 
+		    }
+
+		    fCurrentWindow = aByte - SDEFINE0;
+		    fOffsets[fCurrentWindow] = 
+			sOffsetTable[byteBuffer[bytePos++] & 0xFF];
+		    break;
+
+		    // handle define extended tag
+		case SDEFINEX:
+		    // verify we have two bytes following tag
+		    // if not, save state and break out
+		    if((bytePos + 1) >= byteBufferLimit ) {
+			--bytePos;
+			System.arraycopy(byteBuffer, bytePos,
+					 fBuffer, 0, 
+					 byteBufferLimit - bytePos);
+			fBufferLength = byteBufferLimit - bytePos;
+			bytePos += fBufferLength;
+			break mainLoop; 
+		    }
+                
+		    aByte = byteBuffer[bytePos++] & 0xFF;
+		    fCurrentWindow = (aByte & 0xE0) >> 5;
+		    fOffsets[fCurrentWindow] = 0x10000 + 
+			(0x80 * (((aByte & 0x1F) << 8) 
+				 | (byteBuffer[bytePos++] & 0xFF)));
+		    break;
+                            
+            // reserved, shouldn't happen
+		case SRESERVED:
+		    break;
+
+		} // end switch
+	    } // end while
+	    break;
+
+	    case UNICODEMODE:
+		// unicode mode decompression loop
+	    unicodeModeLoop:
+	    while(bytePos < byteBufferLimit && ucPos < charBufferLimit) {
+		aByte = byteBuffer[bytePos++] & 0xFF;
+		switch(aByte) {
+		    // handle all define tags
+		case UDEFINE0: case UDEFINE1: case UDEFINE2: case UDEFINE3:
+		case UDEFINE4: case UDEFINE5: case UDEFINE6: case UDEFINE7:
+		    // verify there is a byte following tag
+		    // if not, save state and break out
+		    if(bytePos >= byteBufferLimit ) {
+			--bytePos;
+			System.arraycopy(byteBuffer, bytePos,
+					 fBuffer, 0, 
+					 byteBufferLimit - bytePos);
+			fBufferLength = byteBufferLimit - bytePos;
+			bytePos += fBufferLength;
+			break mainLoop; 
+		    }
+                
+		    fCurrentWindow = aByte - UDEFINE0;
+		    fOffsets[fCurrentWindow] = 
+			sOffsetTable[byteBuffer[bytePos++] & 0xFF];
+		    fMode = SINGLEBYTEMODE;
+		    break unicodeModeLoop;
+		    //break;
+
+		    // handle define extended tag
+		case UDEFINEX:
+		    // verify we have two bytes following tag
+		    // if not, save state and break out
+		    if((bytePos + 1) >= byteBufferLimit ) {
+			--bytePos;
+			System.arraycopy(byteBuffer, bytePos,
+					 fBuffer, 0, 
+					 byteBufferLimit - bytePos);
+			fBufferLength = byteBufferLimit - bytePos;
+			bytePos += fBufferLength;
+			break mainLoop; 
+		    }
+		    
+		    aByte = byteBuffer[bytePos++] & 0xFF;
+		    fCurrentWindow = (aByte & 0xE0) >> 5;
+		    fOffsets[fCurrentWindow] = 0x10000 + 
+			(0x80 * (((aByte & 0x1F) << 8) 
+				 | (byteBuffer[bytePos++] & 0xFF)));
+		    fMode = SINGLEBYTEMODE;
+		    break unicodeModeLoop;
+		    //break;
+
+		    // handle all change tags
+		case UCHANGE0: case UCHANGE1: case UCHANGE2: case UCHANGE3:
+		case UCHANGE4: case UCHANGE5: case UCHANGE6: case UCHANGE7:
+		    fCurrentWindow = aByte - UCHANGE0;
+		    fMode = SINGLEBYTEMODE;
+		    break unicodeModeLoop;
+		    //break;
+
+		    // quote unicode
+		case UQUOTEU:
+		    // verify we have two bytes following tag
+		    // if not, save state and break out
+		    if(bytePos >= byteBufferLimit  - 1) {
+			--bytePos;
+			System.arraycopy(byteBuffer, bytePos,
+					 fBuffer, 0, 
+					 byteBufferLimit - bytePos);
+			fBufferLength = byteBufferLimit - bytePos;
+			bytePos += fBufferLength;
+			break mainLoop; 
+		    }
+                
+		    aByte = byteBuffer[bytePos++];
+		    charBuffer[ucPos++] = (char) 
+			(aByte << 8 | (byteBuffer[bytePos++] & 0xFF));
+		    break;
+
+		default:
+		    // verify there is a byte following tag
+		    // if not, save state and break out
+		    if(bytePos >= byteBufferLimit ) {
+			--bytePos;
+			System.arraycopy(byteBuffer, bytePos,
+					 fBuffer, 0, 
+					 byteBufferLimit - bytePos);
+			fBufferLength = byteBufferLimit - bytePos;
+			bytePos += fBufferLength;
+			break mainLoop; 
+		    }
+
+		    charBuffer[ucPos++] = (char) 
+			(aByte << 8 | (byteBuffer[bytePos++] & 0xFF));
+		    break;
+
+		} // end switch
+	    } // end while
+	    break;
+	    
+	    } // end switch( fMode )
+	} // end while
+
+        // fill in output parameter
+	if(bytesRead != null)
+	    bytesRead [0] = (bytePos - byteBufferStart);
+
+        // return # of chars written
+	return (ucPos - charBufferStart);
+    }
+
+    /** Reset the decompressor to its initial state. */
+    public void reset()
+    {
+        // reset dynamic windows
+        fOffsets[0] = 0x0080;    // Latin-1
+        fOffsets[1] = 0x00C0;    // Latin-1 Supplement + Latin Extended-A
+        fOffsets[2] = 0x0400;    // Cyrillic
+        fOffsets[3] = 0x0600;    // Arabic
+        fOffsets[4] = 0x0900;    // Devanagari
+        fOffsets[5] = 0x3040;    // Hiragana
+        fOffsets[6] = 0x30A0;    // Katakana
+        fOffsets[7] = 0xFF00;    // Fullwidth ASCII
+
+
+        fCurrentWindow  = 0;                // Make current window Latin-1
+        fMode           = SINGLEBYTEMODE;   // Always start in single-byte mode
+	fBufferLength   = 0;                // Empty buffer
+    }
+};
diff --git a/src/com/ibm/icu/text/UnicodeFilter.java b/src/com/ibm/icu/text/UnicodeFilter.java
new file mode 100755
index 0000000..ea9c8c5
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeFilter.java
@@ -0,0 +1,87 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/UnicodeFilter.java,v $ 
+ * $Date: 2002/06/28 19:15:53 $ 
+ * $Revision: 1.11 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * <code>UnicodeFilter</code> defines a protocol for selecting a
+ * subset of the full range (U+0000 to U+FFFF) of Unicode characters.
+ * Currently, filters are used in conjunction with classes like {@link
+ * Transliterator} to only process selected characters through a
+ * transformation.
+ *
+ * {@link UnicodeFilterLogic}
+ */
+public abstract class UnicodeFilter implements UnicodeMatcher {
+
+    /**
+     * Returns <tt>true</tt> for characters that are in the selected
+     * subset.  In other words, if a character is <b>to be
+     * filtered</b>, then <tt>contains()</tt> returns
+     * <b><tt>false</tt></b>.
+     */
+    public abstract boolean contains(int c);
+
+    /**
+     * Default implementation of UnicodeMatcher::matches() for Unicode
+     * filters.  Matches a single 16-bit code unit at offset.
+     */
+    public int matches(Replaceable text,
+                       int[] offset,
+                       int limit,
+                       boolean incremental) {
+        int c;
+        if (offset[0] < limit &&
+            contains(c = text.char32At(offset[0]))) {
+            offset[0] += UTF16.getCharCount(c);
+            return U_MATCH;
+        }
+        if (offset[0] > limit &&
+            contains(c = text.char32At(offset[0]))) {
+            // Backup offset by 1, unless the preceding character is a
+            // surrogate pair -- then backup by 2 (keep offset pointing at
+            // the lead surrogate).
+            --offset[0];
+            if (offset[0] >= 0) {
+                offset[0] -= UTF16.getCharCount(text.char32At(offset[0])) - 1;
+            }
+            return U_MATCH;
+        }
+        if (incremental && offset[0] == limit) {
+            return U_PARTIAL_MATCH;
+        }
+        return U_MISMATCH;
+    }
+
+    /**
+     * Stubbed out UnicodeMatcher implementation for filters that do
+     * not implement a pattern.
+     */
+    public String toPattern(boolean escapeUnprintable) {
+        return "";
+    }
+
+    /**
+     * Stubbed out UnicodeMatcher implementation for filters that do
+     * not implement indexing.
+     */
+    public boolean matchesIndexValue(int v) {
+        return false;
+    }
+
+    /**
+     * Stubbed out implementation of UnicodeMatcher API.
+     * @param toUnionTo the set into which to union the source characters
+     */
+    public void addMatchSetTo(UnicodeSet toUnionTo) {
+    }
+}
diff --git a/src/com/ibm/icu/text/UnicodeFilterLogic.java b/src/com/ibm/icu/text/UnicodeFilterLogic.java
new file mode 100755
index 0000000..96fd22d
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeFilterLogic.java
@@ -0,0 +1,124 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/Attic/UnicodeFilterLogic.java,v $ 
+ * $Date: 2002/02/16 03:06:21 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * <code>UnicodeFilterLogic</code> provides logical operators on
+ * {@link UnicodeFilter} objects.  This class cannot be instantiated;
+ * it consists only of static methods.  The static methods return
+ * filter objects that perform logical inversion (<tt>not</tt>),
+ * intersection (<tt>and</tt>), or union (<tt>or</tt>) of the given
+ * filter objects.
+ */
+public final class UnicodeFilterLogic {
+
+    /**
+     * Returns a <tt>UnicodeFilter</tt> that implements the inverse of
+     * the given filter.
+     */
+    public static UnicodeFilter not(final UnicodeFilter f) {
+        return new UnicodeFilter() {
+            public boolean contains(int c) {
+                return !f.contains(c);
+            }
+        };
+    }
+
+    /**
+     * Returns a <tt>UnicodeFilter</tt> that implements a short
+     * circuit AND of the result of the two given filters.  That is,
+     * if <tt>f.contains()</tt> is <tt>false</tt>, then <tt>g.contains()</tt>
+     * is not called, and <tt>contains()</tt> returns <tt>false</tt>.
+     *
+     * <p>Either <tt>f</tt> or <tt>g</tt> must be non-null.
+     */
+    public static UnicodeFilter and(final UnicodeFilter f,
+                                    final UnicodeFilter g) {
+        if (f == null) {
+            return g;
+        }
+        if (g == null) {
+            return f;
+        }
+        return new UnicodeFilter() {
+            public boolean contains(int c) {
+                return f.contains(c) && g.contains(c);
+            }
+        };
+    }
+
+    /**
+     * Returns a <tt>UnicodeFilter</tt> that implements a short
+     * circuit AND of the result of the given filters.  That is, if
+     * <tt>f[i].contains()</tt> is <tt>false</tt>, then
+     * <tt>f[j].contains()</tt> is not called, where <tt>j > i</tt>, and
+     * <tt>contains()</tt> returns <tt>false</tt>.
+     */
+    public static UnicodeFilter and(final UnicodeFilter[] f) {
+        return new UnicodeFilter() {
+            public boolean contains(int c) {
+                for (int i=0; i<f.length; ++i) {
+                    if (!f[i].contains(c)) {
+                        return false;
+                    }
+                }
+                return true;
+            }
+        };
+    }
+
+    /**
+     * Returns a <tt>UnicodeFilter</tt> that implements a short
+     * circuit OR of the result of the two given filters.  That is, if
+     * <tt>f.contains()</tt> is <tt>true</tt>, then <tt>g.contains()</tt> is
+     * not called, and <tt>contains()</tt> returns <tt>true</tt>.
+     *
+     * <p>Either <tt>f</tt> or <tt>g</tt> must be non-null.
+     */
+    public static UnicodeFilter or(final UnicodeFilter f,
+                                   final UnicodeFilter g) {
+        if (f == null) {
+            return g;
+        }
+        if (g == null) {
+            return f;
+        }
+        return new UnicodeFilter() {
+            public boolean contains(int c) {
+                return f.contains(c) || g.contains(c);
+            }
+        };
+    }
+
+    /**
+     * Returns a <tt>UnicodeFilter</tt> that implements a short
+     * circuit OR of the result of the given filters.  That is, if
+     * <tt>f[i].contains()</tt> is <tt>false</tt>, then
+     * <tt>f[j].contains()</tt> is not called, where <tt>j > i</tt>, and
+     * <tt>contains()</tt> returns <tt>true</tt>.
+     */
+    public static UnicodeFilter or(final UnicodeFilter[] f) {
+        return new UnicodeFilter() {
+            public boolean contains(int c) {
+                for (int i=0; i<f.length; ++i) {
+                    if (f[i].contains(c)) {
+                        return true;
+                    }
+                }
+                return false;
+            }
+        };
+    }
+
+    // TODO: Add nand() & nor() for convenience, if needed.
+}
diff --git a/src/com/ibm/icu/text/UnicodeMatcher.java b/src/com/ibm/icu/text/UnicodeMatcher.java
new file mode 100755
index 0000000..f97f5c6
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeMatcher.java
@@ -0,0 +1,127 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/UnicodeMatcher.java,v $ 
+ * $Date: 2002/06/28 19:15:53 $ 
+ * $Revision: 1.6 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * <code>UnicodeMatcher</code> defines a protocol for objects that can
+ * match a range of characters in a Replaceable string.
+ */
+public interface UnicodeMatcher {
+
+    /**
+     * Constant returned by <code>matches()</code> indicating a
+     * mismatch between the text and this matcher.  The text contains
+     * a character which does not match, or the text does not contain
+     * all desired characters for a non-incremental match.
+     */
+    public static final int U_MISMATCH = 0;
+    
+    /**
+     * Constant returned by <code>matches()</code> indicating a
+     * partial match between the text and this matcher.  This value is
+     * only returned for incremental match operations.  All characters
+     * of the text match, but more characters are required for a
+     * complete match.  Alternatively, for variable-length matchers,
+     * all characters of the text match, and if more characters were
+     * supplied at limit, they might also match.
+     */
+    public static final int U_PARTIAL_MATCH = 1;
+    
+    /**
+     * Constant returned by <code>matches()</code> indicating a
+     * complete match between the text and this matcher.  For an
+     * incremental variable-length match, this value is returned if
+     * the given text matches, and it is known that additional
+     * characters would not alter the extent of the match.
+     */
+    public static final int U_MATCH = 2;
+
+    /**
+     * Return a UMatchDegree value indicating the degree of match for
+     * the given text at the given offset.  Zero, one, or more
+     * characters may be matched.
+     *
+     * Matching in the forward direction is indicated by limit >
+     * offset.  Characters from offset forwards to limit-1 will be
+     * considered for matching.
+     * 
+     * Matching in the reverse direction is indicated by limit <
+     * offset.  Characters from offset backwards to limit+1 will be
+     * considered for matching.
+     *
+     * If limit == offset then the only match possible is a zero
+     * character match (which subclasses may implement if desired).
+     *
+     * If U_MATCH is returned, then as a side effect, advance the
+     * offset parameter to the limit of the matched substring.  In the
+     * forward direction, this will be the index of the last matched
+     * character plus one.  In the reverse direction, this will be the
+     * index of the last matched character minus one.
+     *
+     * @param text the text to be matched
+     * @param offset on input, the index into text at which to begin
+     * matching.  On output, the limit of the matched text.  The
+     * number of matched characters is the output value of offset
+     * minus the input value.  Offset should always point to the
+     * HIGH SURROGATE (leading code unit) of a pair of surrogates,
+     * both on entry and upon return.
+     * @param limit the limit index of text to be matched.  Greater
+     * than offset for a forward direction match, less than offset for
+     * a backward direction match.  The last character to be
+     * considered for matching will be text.charAt(limit-1) in the
+     * forward direction or text.charAt(limit+1) in the backward
+     * direction.
+     * @param incremental if TRUE, then assume further characters may
+     * be inserted at limit and check for partial matching.  Otherwise
+     * assume the text as given is complete.
+     * @return a match degree value indicating a full match, a partial
+     * match, or a mismatch.  If incremental is FALSE then
+     * U_PARTIAL_MATCH should never be returned.
+     */
+    public abstract int matches(Replaceable text,
+                                int[] offset,
+                                int limit,
+                                boolean incremental);
+
+    /**
+     * Returns a string representation of this matcher.  If the result of
+     * calling this function is passed to the appropriate parser, it
+     * will produce another matcher that is equal to this one.
+     * @param escapeUnprintable if TRUE then convert unprintable
+     * character to their hex escape representations, \\uxxxx or
+     * \\Uxxxxxxxx.  Unprintable characters are those other than
+     * U+000A, U+0020..U+007E.
+     */
+    public abstract String toPattern(boolean escapeUnprintable);
+
+    /**
+     * Returns TRUE if this matcher will match a character c, where c
+     * & 0xFF == v, at offset, in the forward direction (with limit >
+     * offset).  This is used by <tt>RuleBasedTransliterator</tt> for
+     * indexing.
+     *
+     * <p>Note:  This API uses an int even though the value will be
+     * restricted to 8 bits in order to avoid complications with
+     * signedness (bytes convert to ints in the range -128..127).
+     */
+    public abstract boolean matchesIndexValue(int v);
+
+    /**
+     * Union the set of all characters that may be matched by this object
+     * into the given set.
+     * @param toUnionTo the set into which to union the source characters
+     */
+    public abstract void addMatchSetTo(UnicodeSet toUnionTo);
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/UnicodeNameTransliterator.java b/src/com/ibm/icu/text/UnicodeNameTransliterator.java
new file mode 100755
index 0000000..d232c76
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeNameTransliterator.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 1996-2001, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/UnicodeNameTransliterator.java,v $ 
+ * $Date: 2002/03/27 19:11:37 $ 
+ * $Revision: 1.8 $
+ */
+package com.ibm.icu.text;
+import java.util.*;
+import com.ibm.icu.lang.*;
+
+/**
+ * A transliterator that performs character to name mapping.
+ * @author Alan Liu
+ */
+class UnicodeNameTransliterator extends Transliterator {
+
+    char openDelimiter;
+    char closeDelimiter;
+
+    static final String _ID = "Any-Name";
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnicodeNameTransliterator(null);
+            }
+        });
+    }
+
+    /**
+     * Constructs a transliterator.
+     */
+    public UnicodeNameTransliterator(char openDelimiter, char closeDelimiter,
+                                     UnicodeFilter filter) {
+        super(_ID, filter);
+        this.openDelimiter = openDelimiter;
+        this.closeDelimiter = closeDelimiter;
+    }
+
+    /**
+     * Constructs a transliterator with the default delimiters '{' and
+     * '}'.
+     */
+    public UnicodeNameTransliterator(UnicodeFilter filter) {
+        this('{', '}', filter);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        int cursor = offsets.start;
+        int limit = offsets.limit;
+        
+        StringBuffer str = new StringBuffer();
+        str.append(openDelimiter);
+        int len;
+        String name;
+        
+        while (cursor < limit) {
+            int c = text.char32At(cursor);
+            if ((name=UCharacter.getExtendedName(c)) != null) {
+                
+                str.setLength(1);
+                str.append(name).append(closeDelimiter);
+
+                int clen = UTF16.getCharCount(c);
+                text.replace(cursor, cursor+clen, str.toString());
+                len = str.length();
+                cursor += len; // advance cursor by 1 and adjust for new text
+                limit += len-clen; // change in length
+            } else {
+                ++cursor;
+            }
+        }
+
+        offsets.contextLimit += limit - offsets.limit;
+        offsets.limit = limit;
+        offsets.start = cursor;
+    }
+}
diff --git a/src/com/ibm/icu/text/UnicodePropertySet.java b/src/com/ibm/icu/text/UnicodePropertySet.java
new file mode 100755
index 0000000..eb46f0d
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodePropertySet.java
@@ -0,0 +1,847 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/Attic/UnicodePropertySet.java,v $
+* $Date: 2002/07/26 21:12:36 $
+* $Revision: 1.15 $
+**********************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.text.*;
+import java.util.*;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.UCharacterProperty;
+
+/**
+ * INTERNAL CLASS implementing the UnicodeSet properties as outlined
+ * at:
+ *
+ * http://oss.software.ibm.com/cvs/icu/~checkout~/icuhtml/design/unicodeset_properties.html
+ *
+ * Recognized syntax:
+ *
+ * [:foo:] [:^foo:] - white space not allowed within "[:" or ":]"
+ * \p{foo} \P{foo}  - white space not allowed within "\p" or "\P"
+ *
+ * Other than the above restrictions, white space is ignored.  Case
+ * is ignored except in "\p" and "\P".
+ *
+ * This class cannot be instantiated.  It has a public static method,
+ * createPropertySet(), with takes a pattern to be parsed and returns
+ * a new UnicodeSet.  Another public static method,
+ * resemblesPattern(), returns true if a given pattern string appears
+ * to be a property set pattern, and therefore should be passed in to
+ * createPropertySet().
+ *
+ * NOTE: Current implementation is incomplete.  The following list
+ * indicates which properties are supported.
+ *
+ *    + GeneralCategory
+ *    + CombiningClass
+ *    + BidiClass
+ *      DecompositionType
+ *    + NumericValue
+ *      NumericType
+ *      EastAsianWidth
+ *      LineBreak
+ *      JoiningType
+ *    + Script
+ *    + Binary properties
+ *
+ * '+' indicates a supported property.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: UnicodePropertySet.java,v $ $Revision: 1.15 $ $Date: 2002/07/26 21:12:36 $
+ */
+class UnicodePropertySet {
+
+    private static Hashtable NAME_MAP = null;
+
+    private static Hashtable CATEGORY_MAP = null;
+
+    private static Hashtable COMBINING_CLASS_MAP = null;
+    
+    private static Hashtable BIDI_CLASS_MAP = null;
+    
+    private static Hashtable BINARY_PROPERTY_MAP = null;
+    
+    private static Hashtable BOOLEAN_VALUE_MAP = null;
+
+    /**
+     * A cache mapping character category integers, as returned by
+     * UCharacter.getType(), to sets.  Entries are initially
+     * null and are created on demand.
+     */
+    private static UnicodeSet[] CATEGORY_CACHE = null;
+
+    /**
+     * A cache mapping script integers, as defined by
+     * UScript, to sets.  Entries are initially
+     * null and are created on demand.
+     */
+    private static UnicodeSet[] SCRIPT_CACHE = null;
+
+    // Special value codes
+    private static final int ANY = -1; // general category: all code points
+
+    private static final int ASCII = -2; // [\u0000-\u007F]
+
+    // >From UnicodeData:
+    // 3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
+    // 4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
+    // 4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+    // 9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+    // AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+    // D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+    // D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+    // DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+    // DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+    // DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+    // DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
+    // DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+    // E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
+    // F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
+    // 20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
+    // 2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
+    // F0000;<Plane 15 Private Use, First>;Co;0;L;;;;;N;;;;;
+    // FFFFD;<Plane 15 Private Use, Last>;Co;0;L;;;;;N;;;;;
+    // 100000;<Plane 16 Private Use, First>;Co;0;L;;;;;N;;;;;
+    // 10FFFD;<Plane 16 Private Use, Last>;Co;0;L;;;;;N;;;;;
+    // 
+    // >Large Blocks of Unassigned: (from DerivedGeneralCategory)
+    // 1044E..1CFFF  ; Cn # [52146]
+    // 1D800..1FFFF  ; Cn # [10240]
+    // 2A6D7..2F7FF  ; Cn # [20777]
+    // 2FA1E..E0000  ; Cn # [722403]
+    // E0080..EFFFF  ; Cn # [65408]
+
+    // TODO: The Inclusion List should be generated from the UCD for each
+    // version, and thus should be accessed from the properties data file
+    // (Even better: move the logic into UCharacter for building these
+    // properties, since that is where it belongs!)
+
+    /**
+     * A set of all characters _except_ the second through last characters of
+     * certain ranges.  These ranges are ranges of characters whose
+     * properties are all exactly alike, e.g. CJK Ideographs from
+     * U+4E00 to U+9FA5.
+     */
+    private static final UnicodeSet INCLUSIONS =
+        new UnicodeSet("[^\\u3401-\\u4DB5 \\u4E01-\\u9FA5 \\uAC01-\\uD7A3 \\uD801-\\uDB7F \\uDB81-\\uDBFF \\uDC01-\\uDFFF \\uE001-\\uF8FF \\U0001044F-\\U0001CFFF \\U0001D801-\\U0001FFFF \\U00020001-\\U0002A6D6 \\U0002A6D8-\\U0002F7FF \\U0002FA1F-\\U000E0000 \\U000E0081-\\U000EFFFF \\U000F0001-\\U000FFFFD \\U00100001-\\U0010FFFD]");
+
+    //----------------------------------------------------------------
+    // Public API
+    //----------------------------------------------------------------
+
+    /**
+     * Return true if the given position, in the given pattern, appears
+     * to be the start of a property set pattern [:foo:], \p{foo}, or
+     * \P{foo}.
+     */
+    public static boolean resemblesPattern(String pattern, int pos) {
+        // Patterns are at least 5 characters long
+        if ((pos+5) > pattern.length()) {
+            return false;
+        }
+
+        // Look for an opening [:, [:^, \p, or \P
+        return pattern.regionMatches(pos, "[:", 0, 2) ||
+            pattern.regionMatches(true, pos, "\\p", 0, 2);
+    }
+
+    /**
+     * Create a UnicodeSet by parsing the given pattern at the given
+     * parse position.
+     *
+     * @param pattern the pattern string
+     * @param ppos on entry, the position at which to begin parsing.
+     * This shold be one of the locations marked '^':
+     *
+     *   [:blah:]     \p{blah}     \P{blah}
+     *   ^       %    ^       %    ^       %
+     *
+     * On return, the position after the last character parsed, that is,
+     * the locations marked '%'.  If the parse fails, ppos is returned
+     * unchanged.
+     * @return a newly-constructed UnicodeSet object, or null upon
+     * failure.
+     */
+    public static UnicodeSet createFromPattern(String pattern, ParsePosition ppos) {
+        init();
+
+        UnicodeSet set = null;
+
+        int pos = ppos.getIndex();
+
+        // On entry, ppos should point to one of the following locations:
+
+        // Minimum length is 5 characters, e.g. \p{L}
+        if ((pos+5) > pattern.length()) {
+            return null;
+        }
+
+        boolean posix = false; // true for [:pat:], false for \p{pat} \P{pat}
+        boolean invert = false;
+
+        // Look for an opening [:, [:^, \p, or \P
+        if (pattern.regionMatches(pos, "[:", 0, 2)) {
+            posix = true;
+            pos = Utility.skipWhitespace(pattern, pos+2);
+            if (pos < pattern.length() && pattern.charAt(pos) == '^') {
+                ++pos;
+                invert = true;
+            }
+        } else if (pattern.regionMatches(true, pos, "\\p", 0, 2)) {
+            invert = (pattern.charAt(pos+1) == 'P');
+            pos = Utility.skipWhitespace(pattern, pos+2);
+            if (pos == pattern.length() || pattern.charAt(pos++) != '{') {
+                // Syntax error; "\p" or "\P" not followed by "{"
+                return null;
+            }
+        } else {
+            // Open delimiter not seen
+            return null;
+        }
+
+        // Look for the matching close delimiter, either :] or }
+        int close = pattern.indexOf(posix ? ":]" : "}", pos);
+        if (close < 0) {
+            // Syntax error; close delimiter missing
+            return null;
+        }
+
+        // Look for an '=' sign.  If this is present, we will parse a
+        // medium \p{gc=Cf} or long \p{GeneralCategory=Format}
+        // pattern.
+        int equals = pattern.indexOf('=', pos);
+        if (equals >= 0 && equals < close) {
+            // Equals seen; parse medium/long pattern
+            String typeName = munge(pattern, pos, equals);
+            String valueName = munge(pattern, equals+1, close);
+            SetFactory factory;
+            factory = (SetFactory) NAME_MAP.get(typeName);
+            if (factory == null) {
+                // Not a factory; try a binary property of the form
+                // \p{foo=true}, where the value can be 'true', 't',
+                // 'false', or 'f'.
+                Integer v = (Integer) BOOLEAN_VALUE_MAP.get(valueName);
+                if (v != null) {
+                    set = createBinaryPropertySet(typeName);
+                    invert ^= (v.intValue() == 0);
+                }
+
+                if (set == null) {
+                    // Syntax error; type name not recognized
+                    return null;
+                }
+            } else {
+                set = factory.create(valueName);
+            }
+        } else {
+            // No equals seen; parse short format \p{Cf}
+            String shortName = munge(pattern, pos, close);
+
+            // First try general category
+            set = createCategorySet(shortName);
+
+            // If this fails, try script
+            if (set == null) {
+                set = createScriptSet(shortName);
+            }
+
+            // If this fails, try binary property
+            if (set == null) {
+                set = createBinaryPropertySet(shortName);
+            }
+        }
+
+        if (invert) {
+            set.complement();
+        }
+
+        // Move to the limit position after the close delimiter
+        ppos.setIndex(close + (posix ? 2 : 1));
+
+        return set;
+    }
+
+    //----------------------------------------------------------------
+    // Property set factory classes
+    // NOTE: This will change/go away when we implement UCharacter
+    // based property retrieval.
+    //----------------------------------------------------------------
+
+    static interface SetFactory {
+
+        UnicodeSet create(String valueName);
+    }
+
+    static class NumericValueFactory implements SetFactory {
+        NumericValueFactory() {}
+        public UnicodeSet create(String valueName) {
+            double value = Double.parseDouble(valueName);
+            final int ivalue = (int) value;
+            if (ivalue != value || ivalue < 0) {
+                // UCharacter doesn't support negative or non-integral
+                // values, so just return an empty set
+                return new UnicodeSet();
+            }
+            return createSetFromFilter(new Filter() {
+                public boolean contains(int cp) {
+                    return UCharacter.getUnicodeNumericValue(cp) == ivalue;
+                }
+            });
+        }
+    }
+
+    static class CombiningClassFactory implements SetFactory {
+        CombiningClassFactory() {}
+        public UnicodeSet create(String valueName) {
+            int ivalue = -1;
+            try {
+                ivalue = Integer.parseInt(valueName);
+            } catch (NumberFormatException e) {}
+            if (ivalue < 0) {
+                // We have a negative value, or non-numeric text.
+                // Try to lookup a symbolic combining class name
+                Integer obj = (Integer) COMBINING_CLASS_MAP.get(valueName);
+                if (obj != null) {
+                    ivalue = obj.intValue();
+                }
+            }
+            final int fivalue = ivalue;
+            return createSetFromFilter(new Filter() {
+                public boolean contains(int cp) {
+                    return NormalizerImpl.getCombiningClass(cp) == fivalue;
+                }
+            });
+        }
+    }
+
+    static class BidiClassFactory implements SetFactory {
+        BidiClassFactory() {}
+        public UnicodeSet create(String valueName) {
+            Integer obj = (Integer) BIDI_CLASS_MAP.get(valueName);
+            if (obj == null) {
+                return null;
+            }
+            final int ivalue = obj.intValue();
+            return createSetFromFilter(new Filter() {
+                public boolean contains(int cp) {
+                    return UCharacter.getDirection(cp) == ivalue;
+                }
+            });
+        }
+    }
+
+    //----------------------------------------------------------------
+    // Property set factory static methods
+    // NOTE: This will change/go away when we implement UCharacter
+    // based property retrieval.
+    //----------------------------------------------------------------
+
+    /**
+     * Given a general category value name, create a corresponding
+     * set and return it, or return null if the name is invalid.
+     * @param valueName a pre-munged general category value name
+     */
+    private static UnicodeSet createCategorySet(String valueName) {
+        Integer valueObj;
+        valueObj = (Integer) CATEGORY_MAP.get(valueName);
+        if (valueObj == null) {
+            return null;
+        }
+        int valueCode = valueObj.intValue();
+
+        UnicodeSet set = new UnicodeSet();
+        if (valueCode == ANY) {
+            set.set(0, 0x10FFFF);
+        } else if (valueCode == ASCII) {
+            set.set(0, 0x7F);
+        } else {
+            for (int cat=0; cat<UCharacterCategory.CHAR_CATEGORY_COUNT; ++cat) {
+                if ((valueCode & (1 << cat)) != 0) {
+                    set.addAll(UnicodePropertySet.getCategorySet(cat));
+                }
+            }
+        }
+        return set;
+    }
+
+    /**
+     * Given a script value name, create a corresponding set and
+     * return it, or return null if the name is invalid.
+     * @param valueName a pre-munged script value name
+     */
+    private static UnicodeSet createScriptSet(String valueName) {
+        int[] script = UScript.getCode(valueName);
+        if (script == null) {
+            // Syntax error; unknown short name
+            return null;
+        }
+        return new UnicodeSet(getScriptSet(script[0]));
+    }
+
+    /**
+     * Given a binary property name, create a corresponding
+     * set and return it, or return null if the name is invalid.
+     * @param valueName a pre-munged binary property name
+     */
+    private static UnicodeSet createBinaryPropertySet(String valueName) {
+        Integer obj = (Integer) BINARY_PROPERTY_MAP.get(valueName);
+        if (obj == null) {
+            return null;
+        }
+        final int ivalue = obj.intValue();
+        return createSetFromFilter(new Filter() {
+            public boolean contains(int cp) {
+                return UCharacter.hasBinaryProperty(cp, ivalue);
+            }
+        });
+    }
+
+    //----------------------------------------------------------------
+    // Utility methods
+    //----------------------------------------------------------------
+
+    /**
+     * Returns a UnicodeSet for the given category.  This set is
+     * cached and returned again if this method is called again with
+     * the same parameter.
+     *
+     * Callers MUST NOT MODIFY the returned set.
+     */
+    private static UnicodeSet getCategorySet(final int cat) {
+        if (CATEGORY_CACHE[cat] == null) {
+            CATEGORY_CACHE[cat] =
+                createSetFromFilter(new Filter() {
+                    public boolean contains(int cp) {
+                        return UCharacter.getType(cp) == cat;
+                    }
+                });
+        }
+        return CATEGORY_CACHE[cat];
+    }
+
+    /**
+     * Returns a UnicodeSet for the given script.  This set is
+     * cached and returned again if this method is called again with
+     * the same parameter.
+     *
+     * Callers MUST NOT MODIFY the returned set.
+     */
+    private static UnicodeSet getScriptSet(final int script) {
+        if (SCRIPT_CACHE[script] == null) {
+            SCRIPT_CACHE[script] =
+                createSetFromFilter(new Filter() {
+                    public boolean contains(int cp) {
+                        return UScript.getScript(cp) == script;
+                    }
+                });
+        }
+        return SCRIPT_CACHE[script];
+    }
+
+    /**
+     * Given a string, munge it to lose the whitespace, underscores,
+     * and hyphens.  So "General Category " or "General_Category" or "
+     * General-Category" become "GeneralCategory". We munge all type
+     * and value strings, and store all type and value keys
+     * pre-munged.
+     */
+    private static String munge(String str, int start, int limit) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=start; i<limit; ) {
+            int c = UTF16.charAt(str, i);
+            i += UTF16.getCharCount(c);
+            if (c != '_' && c != '-' && !UCharacterProperty.isRuleWhiteSpace(c)) {
+                UTF16.append(buf, UCharacter.toUpperCase(c));
+            }
+        }
+        return buf.toString();
+    }
+
+    //----------------------------------------------------------------
+    // Generic filter-based scanning code
+    //
+    // NOTE: In general, we don't want to do this!  This is a temporary
+    // implementation until we have time for something that examines
+    // the underlying UCharacter data structures in an intelligent
+    // way.  Iterating over all code points is dumb.  What we want to
+    // do, for instance, is iterate over internally-stored ranges
+    // of characters that have a given property.
+    //----------------------------------------------------------------
+
+    static interface Filter {
+        boolean contains(int codePoint);
+    }
+
+    static UnicodeSet createSetFromFilter(Filter filter) {
+        // Walk through all Unicode characters, noting the start
+        // and end of each range for which filter.contain(c) is
+        // true.  Add each range to a set.
+        //
+        // To improve performance, use the INCLUSIONS set, which
+        // encodes information about character ranges that are known
+        // to have identical properties, such as the CJK Ideographs
+        // from U+4E00 to U+9FA5.  INCLUSIONS contains all characters
+        // except the first characters of such ranges.
+        //
+        // TODO Where possible, instead of scanning over code points,
+        // use internal property data to initialize UnicodeSets for
+        // those properties.  Scanning code points is slow.
+
+        UnicodeSet set = new UnicodeSet();
+        int startHasProperty = -1;
+        int limitRange = INCLUSIONS.getRangeCount();
+
+        for (int j=0; j<limitRange; ++j) {
+            // get current range
+            int start = INCLUSIONS.getRangeStart(j);
+            int end = INCLUSIONS.getRangeEnd(j);
+
+            // for all the code points in the range, process
+            for (int ch = start; ch <= end; ++ch) {
+                // only add to the unicodeset on inflection points --
+                // where the hasProperty value changes to false
+                if (filter.contains(ch)) {
+                    if (startHasProperty < 0) {
+                        startHasProperty = ch;
+                    }
+                } else if (startHasProperty >= 0) {
+                    set.add(startHasProperty, ch-1);
+                    startHasProperty = -1;
+                }
+            }
+        }
+        if (startHasProperty >= 0) {
+            set.add(startHasProperty, 0x10FFFF);
+        }
+
+        return set;
+    }
+
+    //----------------------------------------------------------------
+    // Type and value name maps
+    //----------------------------------------------------------------
+
+    /**
+     * Add a type mapping to the name map.
+     */
+    private static void addType(String shortName, String longName,
+                                SetFactory factory) {
+        // DEBUGGING CODE: DISABLE FOR PRODUCTION BUILD
+        if (false) {
+            if (NAME_MAP.get(shortName) != null) {
+                throw new InternalError("Duplicate name " + shortName);
+            }
+            if (NAME_MAP.get(longName) != null) {
+                throw new InternalError("Duplicate name " + longName);
+            }
+        }
+
+        NAME_MAP.put(shortName, factory);
+        NAME_MAP.put(longName, factory);
+    }
+
+    /**
+     * Add a value mapping to the name map.
+     */
+    private static void addValue(Hashtable map,
+                                 String shortName, String longName,
+                                 int value) {
+        // DEBUGGING CODE: DISABLE FOR PRODUCTION BUILD
+        if (false) {
+            if (map.get(shortName) != null) {
+                throw new InternalError("Duplicate name " + shortName);
+            }
+            if (longName != null && map.get(longName) != null) {
+                throw new InternalError("Duplicate name " + longName);
+            }
+        }
+
+        Integer valueObj = new Integer(value);
+        map.put(shortName, valueObj);
+        if (longName != null) {
+            map.put(longName, valueObj);
+        }
+    }
+
+    static void init() {
+        if (NAME_MAP != null) {
+            return;
+        }
+        
+        NAME_MAP = new Hashtable();
+        CATEGORY_MAP = new Hashtable();
+        CATEGORY_CACHE = new UnicodeSet[UCharacterCategory.CHAR_CATEGORY_COUNT];
+        COMBINING_CLASS_MAP = new Hashtable();
+        BIDI_CLASS_MAP = new Hashtable();
+        BINARY_PROPERTY_MAP = new Hashtable();
+        BOOLEAN_VALUE_MAP = new Hashtable();
+        SCRIPT_CACHE = new UnicodeSet[UScript.CODE_LIMIT];
+
+        // NOTE:  All short and long names taken from
+        // PropertyAliases.txt and PropertyValueAliases.txt.
+
+        // NOTE:  We munge all search keys to have no whitespace
+        // and upper case.  As such, all stored keys should have
+        // this format.
+
+        //------------------------------------------------------------
+        // MAIN KEY MAP
+
+        addType("GC", "GENERALCATEGORY", new SetFactory() {
+            public UnicodeSet create(String valueName) {
+                return createCategorySet(valueName);
+            }
+        });
+
+        addType("CCC", "CANONICALCOMBININGCLASS", new CombiningClassFactory());
+
+        addType("BC", "BIDICLASS", new BidiClassFactory());
+
+        //addType("DT", "DECOMPOSITIONTYPE", DECOMPOSITION_TYPE);
+
+        addType("NV", "NUMERICVALUE", new NumericValueFactory());
+
+        //addType("NT", "NUMERICTYPE", NUMERIC_TYPE);
+        //addType("EA", "EASTASIANWIDTH", EAST_ASIAN_WIDTH);
+        //addType("LB", "LINEBREAK", LINE_BREAK);
+        //addType("JT", "JOININGTYPE", JOINING_TYPE);
+
+        addType("SC", "SCRIPT", new SetFactory() {
+            public UnicodeSet create(String valueName) {
+                return createScriptSet(valueName);
+            }
+        });
+
+        //------------------------------------------------------------
+        // Boolean Value MAP
+        
+        addValue(BOOLEAN_VALUE_MAP, "T", "TRUE", 1);
+        addValue(BOOLEAN_VALUE_MAP, "F", "FALSE", 0);
+
+        //------------------------------------------------------------
+        // General Category MAP
+
+        addValue(CATEGORY_MAP, "ANY", null, ANY); // special case
+
+        addValue(CATEGORY_MAP, "ASCII", null, ASCII); // special case
+
+        addValue(CATEGORY_MAP, "C", "OTHER",
+                 (1 << UCharacterCategory.CONTROL) |
+                 (1 << UCharacterCategory.FORMAT) |
+                 (1 << UCharacterCategory.GENERAL_OTHER_TYPES) |
+                 (1 << UCharacterCategory.PRIVATE_USE) |
+                 (1 << UCharacterCategory.SURROGATE));
+
+        addValue(CATEGORY_MAP, "CC", "CONTROL",
+                 1 << UCharacterCategory.CONTROL);
+        addValue(CATEGORY_MAP, "CF", "FORMAT",
+                 1 << UCharacterCategory.FORMAT);
+        addValue(CATEGORY_MAP, "CN", "UNASSIGNED",
+                 1 << UCharacterCategory.GENERAL_OTHER_TYPES);
+        addValue(CATEGORY_MAP, "CO", "PRIVATEUSE",
+                 1 << UCharacterCategory.PRIVATE_USE);
+        addValue(CATEGORY_MAP, "CS", "SURROGATE",
+                 1 << UCharacterCategory.SURROGATE);
+
+        addValue(CATEGORY_MAP, "L", "LETTER",
+                 (1 << UCharacterCategory.LOWERCASE_LETTER) |
+                 (1 << UCharacterCategory.MODIFIER_LETTER) |
+                 (1 << UCharacterCategory.OTHER_LETTER) |
+                 (1 << UCharacterCategory.TITLECASE_LETTER) |
+                 (1 << UCharacterCategory.UPPERCASE_LETTER));
+
+        addValue(CATEGORY_MAP, "LL", "LOWERCASELETTER",
+                 1 << UCharacterCategory.LOWERCASE_LETTER);
+        addValue(CATEGORY_MAP, "LM", "MODIFIERLETTER",
+                 1 << UCharacterCategory.MODIFIER_LETTER);
+        addValue(CATEGORY_MAP, "LO", "OTHERLETTER",
+                 1 << UCharacterCategory.OTHER_LETTER);
+        addValue(CATEGORY_MAP, "LT", "TITLECASELETTER",
+                 1 << UCharacterCategory.TITLECASE_LETTER);
+        addValue(CATEGORY_MAP, "LU", "UPPERCASELETTER",
+                 1 << UCharacterCategory.UPPERCASE_LETTER);
+
+        addValue(CATEGORY_MAP, "M", "MARK",
+                 (1 << UCharacterCategory.NON_SPACING_MARK) |
+                 (1 << UCharacterCategory.COMBINING_SPACING_MARK) |
+                 (1 << UCharacterCategory.ENCLOSING_MARK));
+
+        addValue(CATEGORY_MAP, "MN", "NONSPACINGMARK",
+                 1 << UCharacterCategory.NON_SPACING_MARK);
+        addValue(CATEGORY_MAP, "MC", "SPACINGMARK",
+                 1 << UCharacterCategory.COMBINING_SPACING_MARK);
+        addValue(CATEGORY_MAP, "ME", "ENCLOSINGMARK",
+                 1 << UCharacterCategory.ENCLOSING_MARK);
+
+        addValue(CATEGORY_MAP, "N", "NUMBER",
+                 (1 << UCharacterCategory.DECIMAL_DIGIT_NUMBER) |
+                 (1 << UCharacterCategory.LETTER_NUMBER) |
+                 (1 << UCharacterCategory.OTHER_NUMBER));
+
+        addValue(CATEGORY_MAP, "ND", "DECIMALNUMBER",
+                 1 << UCharacterCategory.DECIMAL_DIGIT_NUMBER);
+        addValue(CATEGORY_MAP, "NL", "LETTERNUMBER",
+                 1 << UCharacterCategory.LETTER_NUMBER);
+        addValue(CATEGORY_MAP, "NO", "OTHERNUMBER",
+                 1 << UCharacterCategory.OTHER_NUMBER);
+
+        addValue(CATEGORY_MAP, "P", "PUNCTUATION",
+                 (1 << UCharacterCategory.CONNECTOR_PUNCTUATION) |
+                 (1 << UCharacterCategory.DASH_PUNCTUATION) |
+                 (1 << UCharacterCategory.END_PUNCTUATION) |
+                 (1 << UCharacterCategory.FINAL_PUNCTUATION) |
+                 (1 << UCharacterCategory.INITIAL_PUNCTUATION) |
+                 (1 << UCharacterCategory.OTHER_PUNCTUATION) |
+                 (1 << UCharacterCategory.START_PUNCTUATION));
+
+        addValue(CATEGORY_MAP, "PC", "CONNECTORPUNCTUATION",
+                 1 << UCharacterCategory.CONNECTOR_PUNCTUATION);
+        addValue(CATEGORY_MAP, "PD", "DASHPUNCTUATION",
+                 1 << UCharacterCategory.DASH_PUNCTUATION);
+        addValue(CATEGORY_MAP, "PE", "ENDPUNCTUATION",
+                 1 << UCharacterCategory.END_PUNCTUATION);
+        addValue(CATEGORY_MAP, "PF", "FINALPUNCTUATION",
+                 1 << UCharacterCategory.FINAL_PUNCTUATION);
+        addValue(CATEGORY_MAP, "PI", "INITIALPUNCTUATION",
+                 1 << UCharacterCategory.INITIAL_PUNCTUATION);
+        addValue(CATEGORY_MAP, "PO", "OTHERPUNCTUATION",
+                 1 << UCharacterCategory.OTHER_PUNCTUATION);
+        addValue(CATEGORY_MAP, "PS", "STARTPUNCTUATION",
+                 1 << UCharacterCategory.START_PUNCTUATION);
+
+        addValue(CATEGORY_MAP, "S", "SYMBOL",
+                 (1 << UCharacterCategory.CURRENCY_SYMBOL) |
+                 (1 << UCharacterCategory.MODIFIER_SYMBOL) |
+                 (1 << UCharacterCategory.MATH_SYMBOL) |
+                 (1 << UCharacterCategory.OTHER_SYMBOL));
+
+        addValue(CATEGORY_MAP, "SC", "CURRENCYSYMBOL",
+                 1 << UCharacterCategory.CURRENCY_SYMBOL);
+        addValue(CATEGORY_MAP, "SK", "MODIFIERSYMBOL",
+                 1 << UCharacterCategory.MODIFIER_SYMBOL);
+        addValue(CATEGORY_MAP, "SM", "MATHSYMBOL",
+                 1 << UCharacterCategory.MATH_SYMBOL);
+        addValue(CATEGORY_MAP, "SO", "OTHERSYMBOL",
+                 1 << UCharacterCategory.OTHER_SYMBOL);
+
+        addValue(CATEGORY_MAP, "Z", "SEPARATOR",
+                 (1 << UCharacterCategory.LINE_SEPARATOR) |
+                 (1 << UCharacterCategory.PARAGRAPH_SEPARATOR) |
+                 (1 << UCharacterCategory.SPACE_SEPARATOR));
+
+        addValue(CATEGORY_MAP, "ZL", "LINESEPARATOR",
+                 1 << UCharacterCategory.LINE_SEPARATOR);
+        addValue(CATEGORY_MAP, "ZP", "PARAGRAPHSEPARATOR",
+                 1 << UCharacterCategory.PARAGRAPH_SEPARATOR);
+        addValue(CATEGORY_MAP, "ZS", "SPACESEPARATOR",
+                 1 << UCharacterCategory.SPACE_SEPARATOR);
+
+        //------------------------------------------------------------
+        // Combining Class MAP
+
+        addValue(COMBINING_CLASS_MAP, "NR", "NOTREORDERED", 0);
+        addValue(COMBINING_CLASS_MAP, "OV", "OVERLAY", 1);
+        addValue(COMBINING_CLASS_MAP, "NU", "NUKTA", 7);
+        addValue(COMBINING_CLASS_MAP, "KV", "KANAVOICING", 8);
+        addValue(COMBINING_CLASS_MAP, "V", "VIRAMA", 9);
+        addValue(COMBINING_CLASS_MAP, "ATBL", "ATTACHEDBELOWLEFT", 202);
+        addValue(COMBINING_CLASS_MAP, "ATAR", "ATTACHEDABOVERIGHT", 216);
+        addValue(COMBINING_CLASS_MAP, "BL", "BELOWLEFT", 218);
+        addValue(COMBINING_CLASS_MAP, "B", "BELOW", 220);
+        addValue(COMBINING_CLASS_MAP, "BR", "BELOWRIGHT", 222);
+        addValue(COMBINING_CLASS_MAP, "L", "LEFT", 224);
+        addValue(COMBINING_CLASS_MAP, "R", "RIGHT", 226);
+        addValue(COMBINING_CLASS_MAP, "AL", "ABOVELEFT", 228);
+        addValue(COMBINING_CLASS_MAP, "A", "ABOVE", 230);
+        addValue(COMBINING_CLASS_MAP, "AR", "ABOVERIGHT", 232);
+        addValue(COMBINING_CLASS_MAP, "DB", "DOUBLEBELOW", 232);
+        addValue(COMBINING_CLASS_MAP, "DA", "DOUBLEABOVE", 234);
+        addValue(COMBINING_CLASS_MAP, "IS", "IOTASUBSCRIPT", 240);
+
+        //------------------------------------------------------------
+        // Bidi Class MAP
+
+        addValue(BIDI_CLASS_MAP, "AL", "ARABICLETTER", UCharacterDirection.RIGHT_TO_LEFT_ARABIC);
+        addValue(BIDI_CLASS_MAP, "AN", "ARABICNUMBER", UCharacterDirection.ARABIC_NUMBER);
+        addValue(BIDI_CLASS_MAP, "B", "PARAGRAPHSEPARATOR", UCharacterDirection.BLOCK_SEPARATOR);
+        addValue(BIDI_CLASS_MAP, "BN", "BOUNDARYNEUTRAL", UCharacterDirection.BOUNDARY_NEUTRAL);
+        addValue(BIDI_CLASS_MAP, "CS", "COMMONSEPARATOR", UCharacterDirection.COMMON_NUMBER_SEPARATOR);
+        addValue(BIDI_CLASS_MAP, "EN", "EUROPEANNUMBER", UCharacterDirection.EUROPEAN_NUMBER);
+        addValue(BIDI_CLASS_MAP, "ES", "EUROPEANSEPARATOR", UCharacterDirection.EUROPEAN_NUMBER_SEPARATOR);
+        addValue(BIDI_CLASS_MAP, "ET", "EUROPEANTERMINATOR", UCharacterDirection.EUROPEAN_NUMBER_TERMINATOR);
+        addValue(BIDI_CLASS_MAP, "L", "LEFTTORIGHT", UCharacterDirection.LEFT_TO_RIGHT); 
+        addValue(BIDI_CLASS_MAP, "LRE", "LEFTTORIGHTEMBEDDING", UCharacterDirection.LEFT_TO_RIGHT_EMBEDDING);
+        addValue(BIDI_CLASS_MAP, "LRO", "LEFTTORIGHTOVERRIDE", UCharacterDirection.LEFT_TO_RIGHT_OVERRIDE);
+        addValue(BIDI_CLASS_MAP, "NSM", "NONSPACINGMARK", UCharacterDirection.DIR_NON_SPACING_MARK);
+        addValue(BIDI_CLASS_MAP, "ON", "OTHERNEUTRAL", UCharacterDirection.OTHER_NEUTRAL); 
+        addValue(BIDI_CLASS_MAP, "PDF", "POPDIRECTIONALFORMAT", UCharacterDirection.POP_DIRECTIONAL_FORMAT);
+        addValue(BIDI_CLASS_MAP, "R", "RIGHTTOLEFT", UCharacterDirection.RIGHT_TO_LEFT); 
+        addValue(BIDI_CLASS_MAP, "RLE", "RIGHTTOLEFTEMBEDDING", UCharacterDirection.RIGHT_TO_LEFT_EMBEDDING);
+        addValue(BIDI_CLASS_MAP, "RLO", "RIGHTTOLEFTOVERRIDE", UCharacterDirection.RIGHT_TO_LEFT_OVERRIDE);
+        addValue(BIDI_CLASS_MAP, "S", "SEGMENTSEPARATOR", UCharacterDirection.SEGMENT_SEPARATOR);
+        addValue(BIDI_CLASS_MAP, "WS", "WHITESPACENEUTRAL", UCharacterDirection.WHITE_SPACE_NEUTRAL);
+
+        //------------------------------------------------------------
+        // Binary Properties MAP.  Names taken from PropertyAliases.txt.
+        // The following are not supported:
+
+        // CE        ; Composition_Exclusion
+        // NBrk      ; Non_Break
+        // NFD_QC    ; NFD_Quick_Check
+        // NFKD_QC   ; NFKD_Quick_Check
+        // OAlpha    ; Other_Alphabetic
+        // ODI       ; Other_Default_Ignorable_Code_Point
+        // OGr_Ext   ; Other_Grapheme_Extend
+        // OLower    ; Other_Lowercase
+        // OMath     ; Other_Math
+        // OUpper    ; Other_Uppercase
+        // XO_NFC    ; Expands_On_NFC
+        // XO_NFD    ; Expands_On_NFD
+        // XO_NFKC   ; Expands_On_NFKC
+        // XO_NFKD   ; Expands_On_NFKD
+
+        addValue(BINARY_PROPERTY_MAP, "ALPHA", "ALPHABETIC", UProperty.ALPHABETIC);
+        addValue(BINARY_PROPERTY_MAP, "AHEX", "ASCII_HEXDIGIT", UProperty.ASCII_HEX_DIGIT);
+        addValue(BINARY_PROPERTY_MAP, "BIDIC", "BIDICONTROL", UProperty.BIDI_CONTROL);
+        addValue(BINARY_PROPERTY_MAP, "BIDIM", "BIDIMIRRORED", UProperty.BIDI_MIRRORED);
+        addValue(BINARY_PROPERTY_MAP, "DASH", null, UProperty.DASH);
+        addValue(BINARY_PROPERTY_MAP, "DI", "DEFAULTIGNORABLECODEPOINT", UProperty.DEFAULT_IGNORABLE_CODE_POINT);
+        addValue(BINARY_PROPERTY_MAP, "DEP", "DEPRECATED", UProperty.DEPRECATED);
+        addValue(BINARY_PROPERTY_MAP, "DIA", "DIACRITIC", UProperty.DIACRITIC);
+        addValue(BINARY_PROPERTY_MAP, "EXT", "EXTENDER", UProperty.EXTENDER);
+        addValue(BINARY_PROPERTY_MAP, "COMPEX", "FULLCOMPOSITIONEXCLUSION", UProperty.FULL_COMPOSITION_EXCLUSION);
+        addValue(BINARY_PROPERTY_MAP, "GRBASE", "GRAPHEMEBASE", UProperty.GRAPHEME_BASE);
+        addValue(BINARY_PROPERTY_MAP, "GREXT", "GRAPHEMEEXTEND", UProperty.GRAPHEME_EXTEND);
+        addValue(BINARY_PROPERTY_MAP, "GRLINK", "GRAPHEMELINK", UProperty.GRAPHEME_LINK);
+        addValue(BINARY_PROPERTY_MAP, "HEX", "HEXDIGIT", UProperty.HEX_DIGIT);
+        addValue(BINARY_PROPERTY_MAP, "HYPHEN", null, UProperty.HYPHEN);
+        addValue(BINARY_PROPERTY_MAP, "IDC", "IDCONTINUE", UProperty.ID_CONTINUE);
+        addValue(BINARY_PROPERTY_MAP, "IDS", "IDSTART", UProperty.ID_START);
+        addValue(BINARY_PROPERTY_MAP, "IDEO", "IDEOGRAPHIC", UProperty.IDEOGRAPHIC);
+        addValue(BINARY_PROPERTY_MAP, "IDSB", "IDSBINARYOPERATOR", UProperty.IDS_BINARY_OPERATOR);
+        addValue(BINARY_PROPERTY_MAP, "IDST", "IDSTRINARYOPERATOR", UProperty.IDS_TRINARY_OPERATOR);
+        addValue(BINARY_PROPERTY_MAP, "JOINC", "JOINCONTROL", UProperty.JOIN_CONTROL);
+        addValue(BINARY_PROPERTY_MAP, "LOE", "LOGICALORDEREXCEPTION", UProperty.LOGICAL_ORDER_EXCEPTION);
+        addValue(BINARY_PROPERTY_MAP, "LOWER", "LOWERCASE", UProperty.LOWERCASE);
+        addValue(BINARY_PROPERTY_MAP, "MATH", null, UProperty.MATH);
+        addValue(BINARY_PROPERTY_MAP, "NCHAR", "NONCHARACTERCODEPOINT", UProperty.NONCHARACTER_CODE_POINT);
+        addValue(BINARY_PROPERTY_MAP, "QMARK", "QUOTATIONMARK", UProperty.QUOTATION_MARK);
+        addValue(BINARY_PROPERTY_MAP, "RADICAL", null, UProperty.RADICAL);
+        addValue(BINARY_PROPERTY_MAP, "SD", "SOFTDOTTED", UProperty.SOFT_DOTTED);
+        addValue(BINARY_PROPERTY_MAP, "TERM", "TERMINALPUNCTUATION", UProperty.TERMINAL_PUNCTUATION);
+        addValue(BINARY_PROPERTY_MAP, "UIDEO", "UNIFIEDIDEOGRAPH", UProperty.UNIFIED_IDEOGRAPH);
+        addValue(BINARY_PROPERTY_MAP, "UPPER", "UPPERCASE", UProperty.UPPERCASE);
+        addValue(BINARY_PROPERTY_MAP, "WSPACE", "WHITESPACE", UProperty.WHITE_SPACE);
+        addValue(BINARY_PROPERTY_MAP, "XIDC", "XIDCONTINUE", UProperty.XID_CONTINUE);
+        addValue(BINARY_PROPERTY_MAP, "XIDS", "XIDSTART", UProperty.XID_START);
+    }
+}
diff --git a/src/com/ibm/icu/text/UnicodeReplacer.java b/src/com/ibm/icu/text/UnicodeReplacer.java
new file mode 100755
index 0000000..49c4c37
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeReplacer.java
@@ -0,0 +1,64 @@
+/*
+**********************************************************************
+*   Copyright (c) 2002, International Business Machines Corporation
+*   and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   01/14/2002  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+
+/**
+ * <code>UnicodeReplacer</code> defines a protocol for objects that
+ * replace a range of characters in a Replaceable string with output
+ * text.  The replacement is done via the Replaceable API so as to
+ * preserve out-of-band data.
+ * @author Alan Liu
+ */
+interface UnicodeReplacer {
+
+    /**
+     * Replace characters in 'text' from 'start' to 'limit' with the
+     * output text of this object.  Update the 'cursor' parameter to
+     * give the cursor position and return the length of the
+     * replacement text.
+     *
+     * @param text the text to be matched
+     * @param start inclusive start index of text to be replaced
+     * @param limit exclusive end index of text to be replaced;
+     * must be greater than or equal to start
+     * @param cursor output parameter for the cursor position.
+     * Not all replacer objects will update this, but in a complete
+     * tree of replacer objects, representing the entire output side
+     * of a transliteration rule, at least one must update it.
+     * @return the number of 16-bit code units in the text replacing
+     * the characters at offsets start..(limit-1) in text
+     */
+    public abstract int replace(Replaceable text,
+                                int start,
+                                int limit,
+                                int[] cursor);
+
+    /**
+     * Returns a string representation of this replacer.  If the
+     * result of calling this function is passed to the appropriate
+     * parser, typically TransliteratorParser, it will produce another
+     * replacer that is equal to this one.
+     * @param escapeUnprintable if TRUE then convert unprintable
+     * character to their hex escape representations, \\uxxxx or
+     * \\Uxxxxxxxx.  Unprintable characters are defined by
+     * Utility.isUnprintable().
+     */
+    public abstract String toReplacerPattern(boolean escapeUnprintable);
+
+    /**
+     * Union the set of all characters that may output by this object
+     * into the given set.
+     * @param toUnionTo the set into which to union the output characters
+     */
+    public abstract void addReplacementSetTo(UnicodeSet toUnionTo);
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/UnicodeSet.java b/src/com/ibm/icu/text/UnicodeSet.java
new file mode 100755
index 0000000..6741833
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeSet.java
@@ -0,0 +1,2433 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/UnicodeSet.java,v $
+ * $Date: 2002/07/29 19:36:07 $
+ * $Revision: 1.71 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.*;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.impl.UCharacterProperty;
+import java.util.TreeSet;
+import java.util.SortedSet;
+import java.util.Iterator;
+
+/**
+ * A mutable set of Unicode characters and multicharacter strings.  Objects of this class
+ * represent <em>character classes</em> used in regular expressions.
+ * A character specifies a subset of Unicode code points.  Legal
+ * code points are U+0000 to U+10FFFF, inclusive.
+ *
+ * <p><code>UnicodeSet</code> supports two APIs. The first is the
+ * <em>operand</em> API that allows the caller to modify the value of
+ * a <code>UnicodeSet</code> object. It conforms to Java 2's
+ * <code>java.util.Set</code> interface, although
+ * <code>UnicodeSet</code> does not actually implement that
+ * interface. All methods of <code>Set</code> are supported, with the
+ * modification that they take a character range or single character
+ * instead of an <code>Object</code>, and they take a
+ * <code>UnicodeSet</code> instead of a <code>Collection</code>.  The
+ * operand API may be thought of in terms of boolean logic: a boolean
+ * OR is implemented by <code>add</code>, a boolean AND is implemented
+ * by <code>retain</code>, a boolean XOR is implemented by
+ * <code>complement</code> taking an argument, and a boolean NOT is
+ * implemented by <code>complement</code> with no argument.  In terms
+ * of traditional set theory function names, <code>add</code> is a
+ * union, <code>retain</code> is an intersection, <code>remove</code>
+ * is an asymmetric difference, and <code>complement</code> with no
+ * argument is a set complement with respect to the superset range
+ * <code>MIN_VALUE-MAX_VALUE</code>
+ *
+ * <p>The second API is the
+ * <code>applyPattern()</code>/<code>toPattern()</code> API from the
+ * <code>java.text.Format</code>-derived classes.  Unlike the
+ * methods that add characters, add categories, and control the logic
+ * of the set, the method <code>applyPattern()</code> sets all
+ * attributes of a <code>UnicodeSet</code> at once, based on a
+ * string pattern.
+ *
+ * <p><b>Pattern syntax</b></p>
+ *
+ * Patterns are accepted by the constructors and the
+ * <code>applyPattern()</code> methods and returned by the
+ * <code>toPattern()</code> method.  These patterns follow a syntax
+ * similar to that employed by version 8 regular expression character
+ * classes:
+ *
+ * <blockquote>
+ *   <table>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>pattern :=&nbsp; </code></td>
+ *       <td valign="top"><code>('[' '^'? item* ']') |
+ *       property</code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>item :=&nbsp; </code></td>
+ *       <td valign="top"><code>char | (char '-' char) | pattern-expr<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>pattern-expr :=&nbsp; </code></td>
+ *       <td valign="top"><code>pattern | pattern-expr pattern |
+ *       pattern-expr op pattern<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>op :=&nbsp; </code></td>
+ *       <td valign="top"><code>'&amp;' | '-'<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>special :=&nbsp; </code></td>
+ *       <td valign="top"><code>'[' | ']' | '-'<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>char :=&nbsp; </code></td>
+ *       <td valign="top"><em>any character that is not</em><code> special<br>
+ *       | ('\u005C' </code><em>any character</em><code>)<br>
+ *       | ('\u005Cu' hex hex hex hex)<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>hex :=&nbsp; </code></td>
+ *       <td valign="top"><em>any character for which
+ *       </em><code>Character.digit(c, 16)</code><em>
+ *       returns a non-negative result</em></td>
+ *     </tr>
+ *     <tr>
+ *       <td nowrap valign="top" align="right"><code>property :=&nbsp; </code></td>
+ *       <td valign="top"><em>a Unicode property set pattern</td>
+ *     </tr>
+ *   </table>
+ *   <br>
+ *   <table border="1">
+ *     <tr>
+ *       <td>Legend: <table>
+ *         <tr>
+ *           <td nowrap valign="top"><code>a := b</code></td>
+ *           <td width="20" valign="top">&nbsp; </td>
+ *           <td valign="top"><code>a</code> may be replaced by <code>b</code> </td>
+ *         </tr>
+ *         <tr>
+ *           <td nowrap valign="top"><code>a?</code></td>
+ *           <td valign="top"></td>
+ *           <td valign="top">zero or one instance of <code>a</code><br>
+ *           </td>
+ *         </tr>
+ *         <tr>
+ *           <td nowrap valign="top"><code>a*</code></td>
+ *           <td valign="top"></td>
+ *           <td valign="top">one or more instances of <code>a</code><br>
+ *           </td>
+ *         </tr>
+ *         <tr>
+ *           <td nowrap valign="top"><code>a | b</code></td>
+ *           <td valign="top"></td>
+ *           <td valign="top">either <code>a</code> or <code>b</code><br>
+ *           </td>
+ *         </tr>
+ *         <tr>
+ *           <td nowrap valign="top"><code>'a'</code></td>
+ *           <td valign="top"></td>
+ *           <td valign="top">the literal string between the quotes </td>
+ *         </tr>
+ *       </table>
+ *       </td>
+ *     </tr>
+ *   </table>
+ * </blockquote>
+ *
+ * Any character may be preceded by a backslash in order to remove any special
+ * meaning.  White space characters, as defined by UCharacterProperty.isRuleWhiteSpace(), are
+ * ignored, unless they are escaped.
+ *
+ * <p>Property patterns specify a set of characters having a certain
+ * property as defined by the Unicode standard.  Both the POSIX-like
+ * "[:Lu:]" and the Perl-like syntax "\p{Lu}" are recognized.  For a
+ * complete list of supported property patterns, see the User's Guide
+ * for UnicodeSet at
+ * <a href="http://oss.software.ibm.com/icu/userguide/unicodeset.html">
+ * http://oss.software.ibm.com/icu/userguide/unicodeset.html</a>.
+ * Actual determination of property data is defined by the underlying
+ * Unicode database as implemented by UCharacter.
+ *
+ * <p>Patterns specify individual characters, ranges of characters, and
+ * Unicode property sets.  When elements are concatenated, they
+ * specify their union.  To complement a set, place a '^' immediately
+ * after the opening '['.  Property patterns are inverted by modifying
+ * their delimiters; "[:^foo]" and "\P{foo}".  In any other location,
+ * '^' has no special meaning.
+ *
+ * <p>Ranges are indicated by placing two a '-' between two
+ * characters, as in "a-z".  This specifies the range of all
+ * characters from the left to the right, in Unicode order.  If the
+ * left character is greater than or equal to the
+ * right character it is a syntax error.  If a '-' occurs as the first
+ * character after the opening '[' or '[^', or if it occurs as the
+ * last character before the closing ']', then it is taken as a
+ * literal.  Thus "[a\u005C-b]", "[-ab]", and "[ab-]" all indicate the same
+ * set of three characters, 'a', 'b', and '-'.
+ *
+ * <p>Sets may be intersected using the '&' operator or the asymmetric
+ * set difference may be taken using the '-' operator, for example,
+ * "[[:L:]&[\u005Cu0000-\u005Cu0FFF]]" indicates the set of all Unicode letters
+ * with values less than 4096.  Operators ('&' and '|') have equal
+ * precedence and bind left-to-right.  Thus
+ * "[[:L:]-[a-z]-[\u005Cu0100-\u005Cu01FF]]" is equivalent to
+ * "[[[:L:]-[a-z]]-[\u005Cu0100-\u005Cu01FF]]".  This only really matters for
+ * difference; intersection is commutative.
+ *
+ * <table>
+ * <tr valign=top><td nowrap><code>[a]</code><td>The set containing 'a'
+ * <tr valign=top><td nowrap><code>[a-z]</code><td>The set containing 'a'
+ * through 'z' and all letters in between, in Unicode order
+ * <tr valign=top><td nowrap><code>[^a-z]</code><td>The set containing
+ * all characters but 'a' through 'z',
+ * that is, U+0000 through 'a'-1 and 'z'+1 through U+10FFFF
+ * <tr valign=top><td nowrap><code>[[<em>pat1</em>][<em>pat2</em>]]</code>
+ * <td>The union of sets specified by <em>pat1</em> and <em>pat2</em>
+ * <tr valign=top><td nowrap><code>[[<em>pat1</em>]&[<em>pat2</em>]]</code>
+ * <td>The intersection of sets specified by <em>pat1</em> and <em>pat2</em>
+ * <tr valign=top><td nowrap><code>[[<em>pat1</em>]-[<em>pat2</em>]]</code>
+ * <td>The asymmetric difference of sets specified by <em>pat1</em> and
+ * <em>pat2</em>
+ * <tr valign=top><td nowrap><code>[:Lu:] or \p{Lu}</code>
+ * <td>The set of characters having the specified
+ * Unicode property; in
+ * this case, Unicode uppercase letters
+ * <tr valign=top><td nowrap><code>[:^Lu:] or \P{Lu}</code>
+ * <td>The set of characters <em>not</em> having the given
+ * Unicode property
+ * </table>
+ * <br><b>Warning: you cannot add an empty string ("") to a UnicodeSet.</b>
+ * @author Alan Liu
+ * @version $RCSfile: UnicodeSet.java,v $ $Revision: 1.71 $ $Date: 2002/07/29 19:36:07 $
+ */
+public class UnicodeSet extends UnicodeFilter {
+
+    private static final int LOW = 0x000000; // LOW <= all valid values. ZERO for codepoints
+    private static final int HIGH = 0x110000; // HIGH > all valid values. 10000 for code units.
+                                             // 110000 for codepoints
+
+    /**
+     * Minimum value that can be stored in a UnicodeSet.
+     */
+    public static final int MIN_VALUE = LOW;
+
+    /**
+     * Maximum value that can be stored in a UnicodeSet.
+     */
+    public static final int MAX_VALUE = HIGH - 1;
+
+    private int len;      // length used; list may be longer to minimize reallocs
+    private int[] list;   // MUST be terminated with HIGH
+    private int[] rangeList; // internal buffer
+    private int[] buffer; // internal buffer
+    
+    // NOTE: normally the field should be of type SortedSet; but that is missing a public clone!!
+    // is not private so that UnicodeSetIterator can get access
+    TreeSet strings = new TreeSet();
+
+    /**
+     * The pattern representation of this set.  This may not be the
+     * most economical pattern.  It is the pattern supplied to
+     * applyPattern(), with variables substituted and whitespace
+     * removed.  For sets constructed without applyPattern(), or
+     * modified using the non-pattern API, this string will be null,
+     * indicating that toPattern() must generate a pattern
+     * representation from the inversion list.
+     */
+    private String pat = null;
+
+    private static final int START_EXTRA = 16;         // initial storage. Must be >= 0
+    private static final int GROW_EXTRA = START_EXTRA; // extra amount for growth. Must be >= 0
+
+    //----------------------------------------------------------------
+    // Public API
+    //----------------------------------------------------------------
+
+    /**
+     * Constructs an empty set.
+     */
+    public UnicodeSet() {
+        list = new int[1 + START_EXTRA];
+        list[len++] = HIGH;
+    }
+
+    /**
+     * Constructs a copy of an existing set.
+     */
+    public UnicodeSet(UnicodeSet other) {
+        set(other);
+    }
+
+    /**
+     * Constructs a set containing the given range. If <code>end >
+     * start</code> then an empty set is created.
+     *
+     * @param start first character, inclusive, of range
+     * @param end last character, inclusive, of range
+     */
+    public UnicodeSet(int start, int end) {
+        this();
+        complement(start, end);
+    }
+
+    /**
+     * Constructs a set from the given pattern.  See the class description
+     * for the syntax of the pattern language.  Whitespace is ignored.
+     * @param pattern a string specifying what characters are in the set
+     * @exception java.lang.IllegalArgumentException if the pattern contains
+     * a syntax error.
+     */
+    public UnicodeSet(String pattern) {
+        this(pattern, true);
+    }
+
+    /**
+     * Constructs a set from the given pattern.  See the class description
+     * for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param ignoreWhitespace if true, ignore characters for which
+     * UCharacterProperty.isRuleWhiteSpace() returns true
+     * @exception java.lang.IllegalArgumentException if the pattern contains
+     * a syntax error.
+     */
+    public UnicodeSet(String pattern, boolean ignoreWhitespace) {
+        this();
+        applyPattern(pattern, ignoreWhitespace);
+    }
+
+    /**
+     * Constructs a set from the given pattern.  See the class description
+     * for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param pos on input, the position in pattern at which to start parsing.
+     * On output, the position after the last character parsed.
+     * @param symbols a symbol table mapping variables to char[] arrays
+     * and chars to UnicodeSets
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     */
+    public UnicodeSet(String pattern, ParsePosition pos, SymbolTable symbols) {
+        this();
+        applyPattern(pattern, pos, symbols, true);
+    }
+
+    // Delete the following when the category constructor is removed
+    private static final String CATEGORY_NAMES =
+        //                    1 1 1 1 1 1 1   1 1 2 2 2 2 2 2 2 2 2
+        //0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6   8 9 0 1 2 3 4 5 6 7 8
+        "CnLuLlLtLmLoMnMeMcNdNlNoZsZlZpCcCf--CoCsPdPsPePcPoSmScSkSo";
+    /**
+     * DEPRECATED - Constructs a set from the given Unicode character
+     * category.
+     * @param category an integer indicating the character category as
+     * returned by <code>java.lang.Character.getType()</code>.  Note
+     * that this is <em>different</em> from the UCharacterCategory
+     * codes.
+     * @exception java.lang.IllegalArgumentException if the given
+     * category is invalid.
+     * @deprecated this will be removed Dec-31-2002
+     */
+    public UnicodeSet(int category) {
+        if (category < 0 || category > java.lang.Character.OTHER_SYMBOL ||
+            category == 17) {
+            throw new IllegalArgumentException("Invalid category");
+        }
+        String pat = "[:" + CATEGORY_NAMES.substring(2*category, 2*category+2) + ":]";
+        applyPattern(pat, false);
+    }
+
+    /**
+     * Return a new set that is equivalent to this one.
+     */
+    public Object clone() {
+        return new UnicodeSet(this);
+    }
+
+    /**
+     * Make this object represent the range <code>start - end</code>.
+     * If <code>end > start</code> then this object is set to an
+     * an empty range.
+     *
+     * @param start first character in the set, inclusive
+     * @param end last character in the set, inclusive
+     */
+    public UnicodeSet set(int start, int end) {
+        clear();
+        complement(start, end);
+        return this;
+    }
+
+    /**
+     * Make this object represent the same set as <code>other</code>.
+     * @param other a <code>UnicodeSet</code> whose value will be
+     * copied to this object
+     */
+    public UnicodeSet set(UnicodeSet other) {
+        list = (int[]) other.list.clone();
+        len = other.len;
+        pat = other.pat;
+        strings = (TreeSet)other.strings.clone();
+        return this;
+    }
+
+    /**
+     * Modifies this set to represent the set specified by the given pattern.
+     * See the class description for the syntax of the pattern language.
+     * Whitespace is ignored.
+     * @param pattern a string specifying what characters are in the set
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     */
+    public final UnicodeSet applyPattern(String pattern) {
+        return applyPattern(pattern, true);
+    }
+
+    /**
+     * Modifies this set to represent the set specified by the given pattern,
+     * optionally ignoring whitespace.
+     * See the class description for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param ignoreWhitespace if true then characters for which
+     * UCharacterProperty.isRuleWhiteSpace() returns true are ignored
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     */
+    public UnicodeSet applyPattern(String pattern, boolean ignoreWhitespace) {
+        ParsePosition pos = new ParsePosition(0);
+        applyPattern(pattern, pos, null, ignoreWhitespace);
+
+        int i = pos.getIndex();
+
+        // Skip over trailing whitespace
+        if (ignoreWhitespace) {
+            i = Utility.skipWhitespace(pattern, i);
+        }
+
+        if (i != pattern.length()) {
+            throw new IllegalArgumentException("Parse of \"" + pattern +
+                                               "\" failed at " + i);
+        }
+        return this;
+    }
+
+    /**
+     * Return true if the given position, in the given pattern, appears
+     * to be the start of a UnicodeSet pattern.
+     */
+    public static boolean resemblesPattern(String pattern, int pos) {
+        return ((pos+1) < pattern.length() &&
+                pattern.charAt(pos) == '[') ||
+            UnicodePropertySet.resemblesPattern(pattern, pos);
+    }
+
+    /**
+     * Append the <code>toPattern()</code> representation of a
+     * string to the given <code>StringBuffer</code>.
+     */
+    private static void _appendToPat(StringBuffer buf, String s, boolean useHexEscape) {
+        int cp;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(i)) {
+            _appendToPat(buf, cp = UTF16.charAt(s, i), useHexEscape);
+        }
+    }
+
+    /**
+     * Append the <code>toPattern()</code> representation of a
+     * character to the given <code>StringBuffer</code>.
+     */
+    private static void _appendToPat(StringBuffer buf, int c, boolean useHexEscape) {
+        if (useHexEscape) {
+            // Use hex escape notation (<backslash>uxxxx or <backslash>Uxxxxxxxx) for anything
+            // unprintable
+            if (Utility.escapeUnprintable(buf, c)) {
+                return;
+            }
+        }
+        // Okay to let ':' pass through
+        switch (c) {
+        case '[': // SET_OPEN:
+        case ']': // SET_CLOSE:
+        case '-': // HYPHEN:
+        case '^': // COMPLEMENT:
+        case '&': // INTERSECTION:
+        case '\\': //BACKSLASH:
+        case '{':
+        case '}':
+        case '$':
+        case ':':
+            buf.append('\\');
+            break;
+        default:
+            // Escape whitespace
+            if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                buf.append('\\');
+            }
+            break;
+        }
+        UTF16.append(buf, c);
+    }
+
+    /**
+     * Returns a string representation of this set.  If the result of
+     * calling this function is passed to a UnicodeSet constructor, it
+     * will produce another set that is equal to this one.
+     */
+    public String toPattern(boolean escapeUnprintable) {
+        StringBuffer result = new StringBuffer();
+        return _toPattern(result, escapeUnprintable).toString();
+    }
+
+    /**
+     * Append a string representation of this set to result.  This will be
+     * a cleaned version of the string passed to applyPattern(), if there
+     * is one.  Otherwise it will be generated.
+     */
+    private StringBuffer _toPattern(StringBuffer result,
+                                    boolean escapeUnprintable) {
+        if (pat != null) {
+            int i;
+            int backslashCount = 0;
+            for (i=0; i<pat.length(); ) {
+                int c = UTF16.charAt(pat, i);
+                i += UTF16.getCharCount(c);
+                if (escapeUnprintable && Utility.isUnprintable(c)) {
+                    // If the unprintable character is preceded by an odd
+                    // number of backslashes, then it has been escaped.
+                    // Before unescaping it, we delete the final
+                    // backslash.
+                    if ((backslashCount % 2) == 1) {
+                        result.setLength(result.length() - 1);
+                    }
+                    Utility.escapeUnprintable(result, c);
+                    backslashCount = 0;
+                } else {
+                    UTF16.append(result, c);
+                    if (c == '\\') {
+                        ++backslashCount;
+                    } else {
+                        backslashCount = 0;
+                    }
+                }
+            }
+            return result;
+        }
+
+        return _generatePattern(result, escapeUnprintable);
+    }
+
+    /**
+     * Generate and append a string representation of this set to result.
+     * This does not use this.pat, the cleaned up copy of the string
+     * passed to applyPattern().
+     */
+    public StringBuffer _generatePattern(StringBuffer result,
+                                         boolean escapeUnprintable) {
+        result.append('[');
+
+//      // Check against the predefined categories.  We implicitly build
+//      // up ALL category sets the first time toPattern() is called.
+//      for (int cat=0; cat<CATEGORY_COUNT; ++cat) {
+//          if (this.equals(getCategorySet(cat))) {
+//              result.append(':');
+//              result.append(CATEGORY_NAMES.substring(cat*2, cat*2+2));
+//              return result.append(":]");
+//          }
+//      }
+
+        int count = getRangeCount();
+
+        // If the set contains at least 2 intervals and includes both
+        // MIN_VALUE and MAX_VALUE, then the inverse representation will
+        // be more economical.
+        if (count > 1 &&
+            getRangeStart(0) == MIN_VALUE &&
+            getRangeEnd(count-1) == MAX_VALUE) {
+
+            // Emit the inverse
+            result.append('^');
+
+            for (int i = 1; i < count; ++i) {
+                int start = getRangeEnd(i-1)+1;
+                int end = getRangeStart(i)-1;
+                _appendToPat(result, start, escapeUnprintable);
+                if (start != end) {
+                    result.append('-');
+                    _appendToPat(result, end, escapeUnprintable);
+                }
+            }
+        }
+
+        // Default; emit the ranges as pairs
+        else {
+            for (int i = 0; i < count; ++i) {
+                int start = getRangeStart(i);
+                int end = getRangeEnd(i);
+                _appendToPat(result, start, escapeUnprintable);
+                if (start != end) {
+                    result.append('-');
+                    _appendToPat(result, end, escapeUnprintable);
+                }
+            }
+        }
+
+        if (strings.size() > 0) {
+            Iterator it = strings.iterator();
+            while (it.hasNext()) {
+                result.append('{');
+                _appendToPat(result, (String) it.next(), escapeUnprintable);
+                result.append('}');
+            }
+        }
+        return result.append(']');
+    }
+
+    /**
+     * Returns the number of elements in this set (its cardinality),
+     * <em>n</em>, where <code>0 <= </code><em>n</em><code> <= 65536</code>.
+     *
+     * @return the number of elements in this set (its cardinality).
+     */
+    public int size() {
+        int n = 0;
+        int count = getRangeCount();
+        for (int i = 0; i < count; ++i) {
+            n += getRangeEnd(i) - getRangeStart(i) + 1;
+        }
+        return n + strings.size();
+    }
+
+    /**
+     * Returns <tt>true</tt> if this set contains no elements.
+     *
+     * @return <tt>true</tt> if this set contains no elements.
+     */
+    public boolean isEmpty() {
+        return len == 1 && strings.size() == 0;
+    }
+
+    /**
+     * Implementation of UnicodeMatcher API.  Returns <tt>true</tt> if
+     * this set contains any character whose low byte is the given
+     * value.  This is used by <tt>RuleBasedTransliterator</tt> for
+     * indexing.
+     */
+    public boolean matchesIndexValue(int v) {
+        /* The index value v, in the range [0,255], is contained in this set if
+         * it is contained in any pair of this set.  Pairs either have the high
+         * bytes equal, or unequal.  If the high bytes are equal, then we have
+         * aaxx..aayy, where aa is the high byte.  Then v is contained if xx <=
+         * v <= yy.  If the high bytes are unequal we have aaxx..bbyy, bb>aa.
+         * Then v is contained if xx <= v || v <= yy.  (This is identical to the
+         * time zone month containment logic.)
+         */
+        for (int i=0; i<getRangeCount(); ++i) {
+            int low = getRangeStart(i);
+            int high = getRangeEnd(i);
+            if ((low & ~0xFF) == (high & ~0xFF)) {
+                if ((low & 0xFF) <= v && v <= (high & 0xFF)) {
+                    return true;
+                }
+            } else if ((low & 0xFF) <= v || v <= (high & 0xFF)) {
+                return true;
+            }
+        }
+        if (strings.size() != 0) {
+            Iterator it = strings.iterator();
+            while (it.hasNext()) {
+                String s = (String) it.next();
+                //if (s.length() == 0) {
+                //    // Empty strings match everything
+                //    return true;
+                //}
+                // assert(s.length() != 0); // We enforce this elsewhere
+                int c = UTF16.charAt(s, 0);
+                if ((c & 0xFF) == v) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Implementation of UnicodeMatcher.matches().  Always matches the
+     * longest possible multichar string.
+     */
+    public int matches(Replaceable text,
+                       int[] offset,
+                       int limit,
+                       boolean incremental) {
+        
+        if (offset[0] == limit) {
+            // Strings, if any, have length != 0, so we don't worry
+            // about them here.  If we ever allow zero-length strings
+            // we much check for them here.
+            if (contains(TransliterationRule.ETHER)) {
+                return incremental ? U_PARTIAL_MATCH : U_MATCH;
+            } else {
+                return U_MISMATCH;
+            }
+        } else {
+            if (strings.size() != 0) { // try strings first
+            
+                // might separate forward and backward loops later
+                // for now they are combined
+
+                // TODO Improve efficiency of this, at least in the forward
+                // direction, if not in both.  In the forward direction we
+                // can assume the strings are sorted.
+            
+                Iterator it = strings.iterator();
+                boolean forward = offset[0] < limit;
+
+                // firstChar is the leftmost char to match in the
+                // forward direction or the rightmost char to match in
+                // the reverse direction.
+                char firstChar = text.charAt(offset[0]);
+
+                // If there are multiple strings that can match we
+                // return the longest match.
+                int highWaterLength = 0;
+
+                while (it.hasNext()) {
+                    String trial = (String) it.next();
+
+                    //if (trial.length() == 0) {
+                    //    return U_MATCH; // null-string always matches
+                    //}
+                    // assert(trial.length() != 0); // We ensure this elsewhere
+
+                    char c = trial.charAt(forward ? 0 : trial.length() - 1);
+
+                    // Strings are sorted, so we can optimize in the
+                    // forward direction.
+                    if (forward && c > firstChar) break;
+                    if (c != firstChar) continue;
+                        
+                    int len = matchRest(text, offset[0], limit, trial);
+
+                    if (incremental) {
+                        int maxLen = forward ? limit-offset[0] : offset[0]-limit;
+                        if (len == maxLen) {
+                            // We have successfully matched but only up to limit.
+                            return U_PARTIAL_MATCH;
+                        }
+                    }
+
+                    if (len == trial.length()) {
+                        // We have successfully matched the whole string.
+                        if (len > highWaterLength) {
+                            highWaterLength = len;
+                        }
+                        // In the forward direction we know strings
+                        // are sorted so we can bail early.
+                        if (forward && len < highWaterLength) {
+                            break;
+                        }
+                        continue;
+                    }
+                }
+
+                // We've checked all strings without a partial match.
+                // If we have full matches, return the longest one.
+                if (highWaterLength != 0) {
+                    offset[0] += forward ? highWaterLength : -highWaterLength;
+                    return U_MATCH;
+                }
+            }
+            return super.matches(text, offset, limit, incremental);
+        }
+    }
+    
+    /**
+     * Returns the longest match for s in text at the given position.
+     * If limit > start then match forward from start+1 to limit
+     * matching all characters except s.charAt(0).  If limit < start,
+     * go backward starting from start-1 matching all characters
+     * except s.charAt(s.length()-1).  This method assumes that the
+     * first character, text.charAt(start), matches s, so it does not
+     * check it.
+     * @param text the text to match
+     * @param start the first character to match.  In the forward
+     * direction, text.charAt(start) is matched against s.charAt(0).
+     * In the reverse direction, it is matched against
+     * s.charAt(s.length()-1).
+     * @param limit the limit offset for matching, either last+1 in
+     * the forward direction, or last-1 in the reverse direction,
+     * where last is the index of the last character to match.
+     * @return If part of s matches up to the limit, return |limit -
+     * start|.  If all of s matches before reaching the limit, return
+     * s.length().  If there is a mismatch between s and text, return
+     * 0
+     */
+    private static int matchRest (Replaceable text, int start, int limit, String s) {
+        int maxLen;
+        int slen = s.length();
+        if (start < limit) {
+            maxLen = limit - start;
+            if (maxLen > slen) maxLen = slen;
+            for (int i = 1; i < maxLen; ++i) {
+                if (text.charAt(start + i) != s.charAt(i)) return 0;
+            }
+        } else {
+            maxLen = start - limit;
+            if (maxLen > slen) maxLen = slen;
+            --slen; // <=> slen = s.length() - 1;
+            for (int i = 1; i < maxLen; ++i) {
+                if (text.charAt(start - i) != s.charAt(slen - i)) return 0;
+            }
+        }
+        return maxLen;
+    }
+        
+
+    /**
+     * Implementation of UnicodeMatcher API.  Union the set of all
+     * characters that may be matched by this object into the given
+     * set.
+     * @param toUnionTo the set into which to union the source characters
+     */
+    public void addMatchSetTo(UnicodeSet toUnionTo) {
+        toUnionTo.addAll(this);
+    }
+
+    /**
+     * Returns the index of the given character within this set, where
+     * the set is ordered by ascending code point.  If the character
+     * is not in this set, return -1.  The inverse of this method is
+     * <code>charAt()</code>.
+     * @return an index from 0..size()-1, or -1
+     */
+    public int indexOf(int c) {
+        if (c < MIN_VALUE || c > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(c, 6));
+        }
+        int i = 0;
+        int n = 0;
+        for (;;) {
+            int start = list[i++];
+            if (c < start) {
+                return -1;
+            }
+            int limit = list[i++];
+            if (c < limit) {
+                return n + c - start;
+            }
+            n += limit - start;
+        }
+    }
+
+    /**
+     * Returns the character at the given index within this set, where
+     * the set is ordered by ascending code point.  If the index is
+     * out of range, return -1.  The inverse of this method is
+     * <code>indexOf()</code>.
+     * @param index an index from 0..size()-1
+     * @return the character at the given index, or -1.
+     */
+    public int charAt(int index) {
+        if (index >= 0) {
+            // len2 is the largest even integer <= len, that is, it is len
+            // for even values and len-1 for odd values.  With odd values
+            // the last entry is UNICODESET_HIGH.
+            int len2 = len & ~1;
+            for (int i=0; i < len2;) {
+                int start = list[i++];
+                int count = list[i++] - start;
+                if (index < count) {
+                    return start + index;
+                }
+                index -= count;
+            }
+        }
+        return -1;
+    }
+
+    /**
+     * Adds the specified range to this set if it is not already
+     * present.  If this set already contains the specified range,
+     * the call leaves this set unchanged.  If <code>end > start</code>
+     * then an empty range is added, leaving the set unchanged.
+     *
+     * @param start first character, inclusive, of range to be added
+     * to this set.
+     * @param end last character, inclusive, of range to be added
+     * to this set.
+     */
+    public UnicodeSet add(int start, int end) {
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        if (start <= end) {
+            add(range(start, end), 2, 0);
+        }
+        return this;
+    }
+
+    /**
+     * Adds the specified character to this set if it is not already
+     * present.  If this set already contains the specified character,
+     * the call leaves this set unchanged.
+     */
+    public final UnicodeSet add(int c) {
+        add(c, c);
+        return this;
+    }
+
+    /**
+     * Adds the specified multicharacter to this set if it is not already
+     * present.  If this set already contains the multicharacter,
+     * the call leaves this set unchanged.
+     * Thus "ch" => {"ch"}
+	 * <br><b>Warning: you cannot add an empty string ("") to a UnicodeSet.</b>
+     * @param s the source string
+     * @return this object, for chaining
+     */
+    public final UnicodeSet add(String s) {
+        
+        int cp = getSingleCP(s);
+        if (cp < 0) {
+        	strings.add(s);
+        	pat = null;
+		} else {
+			add(cp, cp);
+		}
+        return this;
+    }
+    
+    /**
+     * @return a code point IF the string consists of a single one.
+     * otherwise returns -1.
+     * @param string to test
+     */
+    private static int getSingleCP(String s) {
+        if (s.length() < 1) {
+        	throw new IllegalArgumentException("Can't use zero-length strings in UnicodeSet");
+        }
+    	if (s.length() > 2) return -1;
+    	if (s.length() == 1) return s.charAt(0);
+    	
+    	// at this point, len = 2
+        int cp = UTF16.charAt(s, 0);
+        if (cp > 0xFFFF) { // is surrogate pair
+        	return cp;
+        }
+        return -1;
+    }
+    
+    /**
+     * Adds each of the characters in this string to the set. Thus "ch" => {"c", "h"}
+     * If this set already any particular character, it has no effect on that character.
+     * @param s the source string
+     * @return this object, for chaining
+     */
+    public final UnicodeSet addAll(String s) {
+        int cp;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s, i);
+            add(cp, cp);
+        }
+        return this;
+    }
+
+    /**
+     * Retains EACH of the characters in this string. Note: "ch" == {"c", "h"}
+     * If this set already any particular character, it has no effect on that character.
+     * @param s the source string
+     * @return this object, for chaining
+     */
+    public final UnicodeSet retainAll(String s) {
+    	return retainAll(fromAll(s));
+    }
+
+    /**
+     * Complement EACH of the characters in this string. Note: "ch" == {"c", "h"}
+     * If this set already any particular character, it has no effect on that character.
+     * @param s the source string
+     * @return this object, for chaining
+     */
+    public final UnicodeSet complementAll(String s) {
+    	return complementAll(fromAll(s));
+    }
+
+    /**
+     * Remove EACH of the characters in this string. Note: "ch" == {"c", "h"}
+     * If this set already any particular character, it has no effect on that character.
+     * @param s the source string
+     * @return this object, for chaining
+     */
+    public final UnicodeSet removeAll(String s) {
+    	return removeAll(fromAll(s));
+    }
+
+    /**
+     * Makes a set from a multicharacter string. Thus "ch" => {"ch"}
+	 * <br><b>Warning: you cannot add an empty string ("") to a UnicodeSet.</b>
+     * @param s the source string
+     * @return a newly created set containing the given string
+     */
+    public static UnicodeSet from(String s) {
+        return new UnicodeSet().add(s);
+    }
+
+    
+    /**
+     * Makes a set from each of the characters in the string. Thus "ch" => {"c", "h"}
+     * @param s the source string
+     * @return a newly created set containing the given characters
+     */
+    public static UnicodeSet fromAll(String s) {
+        return new UnicodeSet().addAll(s);
+    }
+
+
+    /**
+     * Retain only the elements in this set that are contained in the
+     * specified range.  If <code>end > start</code> then an empty range is
+     * retained, leaving the set empty.
+     *
+     * @param start first character, inclusive, of range to be retained
+     * to this set.
+     * @param end last character, inclusive, of range to be retained
+     * to this set.
+     */
+    public UnicodeSet retain(int start, int end) {
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        if (start <= end) {
+            retain(range(start, end), 2, 0);
+        } else {
+            clear();
+        }
+        return this;
+    }
+
+    /**
+     * Retain the specified character from this set if it is present.
+     */
+    public final UnicodeSet retain(int c) {
+        return retain(c, c);
+    }
+    
+    /**
+     * Retain the specified string in this set if it is present.
+     * The set will not contain the specified character once the call
+     * returns.
+     * @param s the source string
+     * @return this object, for chaining
+     */
+    public final UnicodeSet retain(String s) {
+        int cp = getSingleCP(s);
+        if (cp < 0) {
+        	if (strings.size() == 1 && strings.contains(s)) return this;
+        	strings.clear();
+        	strings.add(s);
+        	pat = null;
+		} else {
+			retain(cp, cp);
+		}
+		return this;
+    }
+
+    /**
+     * Removes the specified range from this set if it is present.
+     * The set will not contain the specified range once the call
+     * returns.  If <code>end > start</code> then an empty range is
+     * removed, leaving the set unchanged.
+     *
+     * @param start first character, inclusive, of range to be removed
+     * from this set.
+     * @param end last character, inclusive, of range to be removed
+     * from this set.
+     */
+    public UnicodeSet remove(int start, int end) {
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        if (start <= end) {
+            retain(range(start, end), 2, 2);
+        }
+        return this;
+    }
+
+    /**
+     * Removes the specified character from this set if it is present.
+     * The set will not contain the specified character once the call
+     * returns.
+     */
+    public final UnicodeSet remove(int c) {
+        return remove(c, c);
+    }
+
+    /**
+     * Removes the specified string from this set if it is present.
+     * The set will not contain the specified character once the call
+     * returns.
+     * @param s the source string
+     * @return this object, for chaining
+     */
+    public final UnicodeSet remove(String s) {
+        int cp = getSingleCP(s);
+        if (cp < 0) {
+        	strings.remove(s);
+        	pat = null;
+		} else {
+			remove(cp, cp);
+		}
+		return this;
+    }
+
+    /**
+     * Complements the specified range in this set.  Any character in
+     * the range will be removed if it is in this set, or will be
+     * added if it is not in this set.  If <code>end > start</code>
+     * then an empty range is complemented, leaving the set unchanged.
+     *
+     * @param start first character, inclusive, of range to be removed
+     * from this set.
+     * @param end last character, inclusive, of range to be removed
+     * from this set.
+     */
+    public UnicodeSet complement(int start, int end) {
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        if (start <= end) {
+            xor(range(start, end), 2, 0);
+        }
+        pat = null;
+        return this;
+    }
+
+    /**
+     * Complements the specified character in this set.  The character
+     * will be removed if it is in this set, or will be added if it is
+     * not in this set.
+     */
+    public final UnicodeSet complement(int c) {
+        return complement(c, c);
+    }
+
+    /**
+     * This is equivalent to
+     * <code>complement(MIN_VALUE, MAX_VALUE)</code>.
+     */
+    public UnicodeSet complement() {
+        if (list[0] == LOW) {
+            System.arraycopy(list, 1, list, 0, len-1);
+            --len;
+        } else {
+            ensureCapacity(len+1);
+            System.arraycopy(list, 0, list, 1, len);
+            list[0] = LOW;
+            ++len;
+        }
+        pat = null;
+        return this;
+    }
+    
+    /**
+     * Complement the specified string in this set.
+     * The set will not contain the specified string once the call
+     * returns.
+	 * <br><b>Warning: you cannot add an empty string ("") to a UnicodeSet.</b>
+     * @param s the string to complement
+     * @return this object, for chaining
+     */
+    public final UnicodeSet complement(String s) {
+        int cp = getSingleCP(s);
+        if (cp < 0) {
+        	if (strings.contains(s)) strings.remove(s);
+        	else strings.add(s);
+        	pat = null;
+		} else {
+			complement(cp, cp);
+		}
+		return this;
+    }    
+
+    /**
+     * Returns true if this set contains the given character.
+     * @param c character to be checked for containment
+     * @return true if the test condition is met
+     */
+    public boolean contains(int c) {
+        if (c < MIN_VALUE || c > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(c, 6));
+        }
+
+        /*
+        // Set i to the index of the start item greater than ch
+        // We know we will terminate without length test!
+        int i = -1;
+        while (true) {
+            if (c < list[++i]) break;
+        }
+        */
+
+        int i = findCodePoint(c);
+
+        return ((i & 1) != 0); // return true if odd
+    }
+
+    /**
+     * Returns the smallest value i such that c < list[i].  Caller
+     * must ensure that c is a legal value or this method will enter
+     * an infinite loop.  This method performs a binary search.
+     * @param c a character in the range MIN_VALUE..MAX_VALUE
+     * inclusive
+     * @return the smallest integer i in the range 0..len-1,
+     * inclusive, such that c < list[i]
+     */
+    private final int findCodePoint(int c) {
+        // Return the smallest i such that c < list[i].  Assume
+        // list[len - 1] == HIGH and that c is legal (0..HIGH-1).
+        if (c < list[0]) return 0;
+        int lo = 0;
+        int hi = len - 1;
+        // invariant: c >= list[lo]
+        // invariant: c < list[hi]
+        for (;;) {
+            int i = (lo + hi) / 2;
+            if (i == lo) return hi;
+            if (c < list[i]) {
+                hi = i;
+            } else {
+                lo = i;
+            }
+        }
+    }
+    
+    /**
+     * Returns true if this set contains every character
+     * of the given range.
+     * @param start first character, inclusive, of the range
+     * @param end last character, inclusive, of the range
+     * @return true if the test condition is met
+     */
+    public boolean contains(int start, int end) {
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        //int i = -1;
+        //while (true) {
+        //    if (start < list[++i]) break;
+        //}
+        int i = findCodePoint(start);
+        return ((i & 1) != 0 && end < list[i]);
+    }
+
+    /**
+     * Returns <tt>true</tt> if this set contains the given
+     * multicharacter string.
+     * @param s string to be checked for containment
+     * @return <tt>true</tt> if this set contains the specified string
+     */
+    public final boolean contains(String s) {
+        
+        int cp = getSingleCP(s);
+        if (cp < 0) {
+        	return strings.contains(s);
+		} else {
+			return contains(cp);
+		}
+    }
+    
+    /**
+     * Returns true if this set contains all the characters and strings
+     * of the given set.
+     * @param c set to be checked for containment
+     * @return true if the test condition is met
+     */
+    public boolean containsAll(UnicodeSet c) {
+        // The specified set is a subset if all of its pairs are contained in
+        // this set.  It's possible to code this more efficiently in terms of
+        // direct manipulation of the inversion lists if the need arises.
+        int n = c.getRangeCount();
+        for (int i=0; i<n; ++i) {
+            if (!contains(c.getRangeStart(i), c.getRangeEnd(i))) {
+                return false;
+            }
+        }
+        if (!strings.containsAll(c.strings)) return false;
+        return true;
+    }
+    
+    /**
+     * Returns true if this set contains all the characters
+     * of the given string.
+     * @param s string containing characters to be checked for containment
+     * @return true if the test condition is met
+     */
+    public boolean containsAll(String s) {
+        int cp;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s, i);
+            if (!contains(cp)) return false;
+        }
+        return true;
+    }
+    
+    /**
+     * Returns true if this set contains none of the characters
+     * of the given range.
+     * @param start first character, inclusive, of the range
+     * @param end last character, inclusive, of the range
+     * @return true if the test condition is met
+     */
+    public boolean containsNone(int start, int end) {
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        int i = -1;
+        while (true) {
+            if (start < list[++i]) break;
+        }
+        return ((i & 1) == 0 && end < list[i]);
+    }
+
+    /**
+     * Returns true if this set contains none of the characters and strings
+     * of the given set.
+     * @param c set to be checked for containment
+     * @return true if the test condition is met
+     */
+    public boolean containsNone(UnicodeSet c) {
+        // The specified set is a subset if all of its pairs are contained in
+        // this set.  It's possible to code this more efficiently in terms of
+        // direct manipulation of the inversion lists if the need arises.
+        int n = c.getRangeCount();
+        for (int i=0; i<n; ++i) {
+            if (!containsNone(c.getRangeStart(i), c.getRangeEnd(i))) {
+                return false;
+            }
+        }
+        if (!hasRelation(strings, DISJOINT, c.strings)) return false;
+        return true;
+    }
+    
+    /**
+     * Returns true if this set contains none of the characters
+     * of the given string.
+     * @param s string containing characters to be checked for containment
+     * @return true if the test condition is met
+     */
+    public boolean containsNone(String s) {
+        int cp;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s, i);
+            if (contains(cp)) return false;
+        }
+        return true;
+    }
+        
+    /**
+     * Returns true if this set contains one or more of the characters
+     * in the given range.
+     * @param start first character, inclusive, of the range
+     * @param end last character, inclusive, of the range
+     * @return true if the condition is met
+     */
+    public final boolean containsSome(int start, int end) {
+    	return !containsNone(start, end);
+    }
+        
+    /**
+     * Returns true if this set contains one or more of the characters
+     * and strings of the given set.
+     * @param c set to be checked for containment
+     * @return true if the condition is met
+     */
+    public final boolean containsSome(UnicodeSet s) {
+    	return !containsNone(s);
+    }
+        
+    /**
+     * Returns true if this set contains one or more of the characters
+     * of the given string.
+     * @param s string containing characters to be checked for containment
+     * @return true if the condition is met
+     */
+    public final boolean containsSome(String s) {
+    	return !containsNone(s);
+    }
+        
+        
+    /**
+     * Adds all of the elements in the specified set to this set if
+     * they're not already present.  This operation effectively
+     * modifies this set so that its value is the <i>union</i> of the two
+     * sets.  The behavior of this operation is unspecified if the specified
+     * collection is modified while the operation is in progress.
+     *
+     * @param c set whose elements are to be added to this set.
+     */
+    public UnicodeSet addAll(UnicodeSet c) {
+        add(c.list, c.len, 0);
+        strings.addAll(c.strings);
+        return this;
+    }
+
+    /**
+     * Retains only the elements in this set that are contained in the
+     * specified set.  In other words, removes from this set all of
+     * its elements that are not contained in the specified set.  This
+     * operation effectively modifies this set so that its value is
+     * the <i>intersection</i> of the two sets.
+     *
+     * @param c set that defines which elements this set will retain.
+     */
+    public UnicodeSet retainAll(UnicodeSet c) {
+        retain(c.list, c.len, 0);
+        strings.retainAll(c.strings);
+        return this;
+    }
+
+    /**
+     * Removes from this set all of its elements that are contained in the
+     * specified set.  This operation effectively modifies this
+     * set so that its value is the <i>asymmetric set difference</i> of
+     * the two sets.
+     *
+     * @param c set that defines which elements will be removed from
+     *          this set.
+     */
+    public UnicodeSet removeAll(UnicodeSet c) {
+        retain(c.list, c.len, 2);
+        strings.removeAll(c.strings);
+        return this;
+    }
+
+    /**
+     * Complements in this set all elements contained in the specified
+     * set.  Any character in the other set will be removed if it is
+     * in this set, or will be added if it is not in this set.
+     *
+     * @param c set that defines which elements will be complemented from
+     *          this set.
+     */
+    public UnicodeSet complementAll(UnicodeSet c) {
+        xor(c.list, c.len, 0);
+        doOperation(strings, COMPLEMENTALL, c.strings);
+        return this;
+    }
+
+    /**
+     * Removes all of the elements from this set.  This set will be
+     * empty after this call returns.
+     */
+    public UnicodeSet clear() {
+        list[0] = HIGH;
+        len = 1;
+        pat = null;
+        strings.clear();
+        return this;
+    }
+
+    /**
+     * Iteration method that returns the number of ranges contained in
+     * this set.
+     * @see #getRangeStart
+     * @see #getRangeEnd
+     */
+    public int getRangeCount() {
+        return len/2;
+    }
+
+    /**
+     * Iteration method that returns the first character in the
+     * specified range of this set.
+     * @exception ArrayIndexOutOfBoundsException if index is outside
+     * the range <code>0..getRangeCount()-1</code>
+     * @see #getRangeCount
+     * @see #getRangeEnd
+     */
+    public int getRangeStart(int index) {
+        return list[index*2];
+    }
+
+    /**
+     * Iteration method that returns the last character in the
+     * specified range of this set.
+     * @exception ArrayIndexOutOfBoundsException if index is outside
+     * the range <code>0..getRangeCount()-1</code>
+     * @see #getRangeStart
+     * @see #getRangeEnd
+     */
+    public int getRangeEnd(int index) {
+        return (list[index*2 + 1] - 1);
+    }
+
+    /**
+     * Reallocate this objects internal structures to take up the least
+     * possible space, without changing this object's value.
+     */
+    public UnicodeSet compact() {
+        if (len != list.length) {
+            int[] temp = new int[len];
+            System.arraycopy(list, 0, temp, 0, len);
+            list = temp;
+        }
+        rangeList = null;
+        buffer = null;
+        return this;
+    }
+
+    /**
+     * Compares the specified object with this set for equality.  Returns
+     * <tt>true</tt> if the specified object is also a set, the two sets
+     * have the same size, and every member of the specified set is
+     * contained in this set (or equivalently, every member of this set is
+     * contained in the specified set).
+     *
+     * @param o Object to be compared for equality with this set.
+     * @return <tt>true</tt> if the specified Object is equal to this set.
+     */
+    public boolean equals(Object o) {
+        try {
+            UnicodeSet that = (UnicodeSet) o;
+            if (len != that.len) return false;
+            for (int i = 0; i < len; ++i) {
+                if (list[i] != that.list[i]) return false;
+            }
+            if (!strings.equals(that.strings)) return false;
+        } catch (Exception e) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Returns the hash code value for this set.
+     *
+     * @return the hash code value for this set.
+     * @see Object#hashCode()
+     */
+    public int hashCode() {
+        int result = len;
+        for (int i = 0; i < len; ++i) {
+            result *= 1000003;
+            result += list[i];
+        }
+        return result;
+    }
+
+    /**
+     * Return a programmer-readable string representation of this object.
+     */
+    public String toString() {
+        return getClass().getName() + '(' + toPattern(false) + ')';
+    }
+
+    //----------------------------------------------------------------
+    // Implementation: Pattern parsing
+    //----------------------------------------------------------------
+
+    /**
+     * Parses the given pattern, starting at the given position.  The character
+     * at pattern.charAt(pos.getIndex()) must be '[', or the parse fails.
+     * Parsing continues until the corresponding closing ']'.  If a syntax error
+     * is encountered between the opening and closing brace, the parse fails.
+     * Upon return from a successful parse, the ParsePosition is updated to
+     * point to the character following the closing ']', and an inversion
+     * list for the parsed pattern is returned.  This method
+     * calls itself recursively to parse embedded subpatterns.
+     *
+     * @param pattern the string containing the pattern to be parsed.  The
+     * portion of the string from pos.getIndex(), which must be a '[', to the
+     * corresponding closing ']', is parsed.
+     * @param pos upon entry, the position at which to being parsing.  The
+     * character at pattern.charAt(pos.getIndex()) must be a '['.  Upon return
+     * from a successful parse, pos.getIndex() is either the character after the
+     * closing ']' of the parsed pattern, or pattern.length() if the closing ']'
+     * is the last character of the pattern string.
+     * @return an inversion list for the parsed substring
+     * of <code>pattern</code>
+     * @exception java.lang.IllegalArgumentException if the parse fails.
+     */
+    void applyPattern(String pattern,
+                      ParsePosition pos,
+                      SymbolTable symbols,
+                      boolean ignoreWhitespace) {
+
+        // Need to build the pattern in a temporary string because
+        // _applyPattern calls add() etc., which set pat to empty.
+        StringBuffer rebuiltPat = new StringBuffer();
+        _applyPattern(pattern, pos, symbols, rebuiltPat, ignoreWhitespace);
+        pat = rebuiltPat.toString();
+    }
+
+    void _applyPattern(String pattern, ParsePosition pos,
+                       SymbolTable symbols, StringBuffer rebuiltPat,
+                       boolean ignoreWhitespace) {
+
+        // If the pattern contains any of the following, we save a
+        // rebuilt (variable-substituted) copy of the source pattern:
+        // - a category
+        // - an intersection or subtraction operator
+        // - an anchor (trailing '$', indicating RBT ether)
+        boolean rebuildPattern = false;
+        StringBuffer newPat = new StringBuffer("[");
+        int nestedPatStart = -1; // see below for usage
+        boolean nestedPatDone = false; // see below for usage
+        StringBuffer multiCharBuffer = new StringBuffer();
+        
+
+        boolean invert = false;
+        clear();
+
+        final int NONE = -1;
+        int lastChar = NONE; // This is either a char (0..10FFFF) or -1
+        boolean isLastLiteral = false; // TRUE if lastChar was a literal
+        char lastOp = 0;
+
+        /* This loop iterates over the characters in the pattern.  We start at
+         * the position specified by pos.  We exit the loop when either a
+         * matching closing ']' is seen, or we read all characters of the
+         * pattern.  In the latter case an error will be thrown.
+         */
+
+        /* Pattern syntax:
+         *  pat := '[' '^'? elem* ']'
+         *  elem := a | a '-' a | set | set op set
+         *  set := pat | (a set variable)
+         *  op := '&' | '-'
+         *  a := (a character, possibly defined by a var)
+         */
+
+        // mode 0: No chars parsed yet; next must be '['
+        // mode 1: '[' seen; if next is '^' or ':' then special
+        // mode 2: '[' '^'? seen; parse pattern and close with ']'
+        // mode 3: '[:' seen; parse category and close with ':]'
+        // mode 4: ']' seen; parse complete
+        // mode 5: Top-level property pattern seen
+        int mode = 0;
+        int start = pos.getIndex();
+        int i = start;
+        int limit = pattern.length();
+        /* In the case of an embedded SymbolTable variable, we look it up and
+         * then take characters from the resultant char[] array.  These chars
+         * are subjected to an extra level of lookup in the SymbolTable in case
+         * they are stand-ins for a nested UnicodeSet.  */
+        char[] varValueBuffer = null;
+        int ivarValueBuffer = 0;
+        int anchor = 0;
+        int c;
+        while (i<limit) {
+            /* If the next element is a single character, c will be set to it,
+             * and nestedSet will be null.  In this case isLiteral indicates
+             * whether the character should assume special meaning if it has
+             * one.  If the next element is a nested set, either via a variable
+             * reference, or via an embedded "[..]"  or "[:..:]" pattern, then
+             * nestedSet will be set to the pairs list for the nested set, and
+             * c's value should be ignored.
+             */
+            UnicodeSet nestedSet = null;
+            boolean isLiteral = false;
+            if (varValueBuffer != null) {
+                if (ivarValueBuffer < varValueBuffer.length) {
+                    c = UTF16.charAt(varValueBuffer, 0, varValueBuffer.length, ivarValueBuffer);
+                    ivarValueBuffer += UTF16.getCharCount(c);
+                    UnicodeMatcher m = symbols.lookupMatcher(c); // may be NULL
+                    try {
+                        nestedSet = (UnicodeSet) m;
+                    } catch (ClassCastException e) {
+                        throw new IllegalArgumentException("Syntax error");
+                    }
+                    nestedPatDone = false;
+                } else {
+                    varValueBuffer = null;
+                    c = UTF16.charAt(pattern, i);
+                    i += UTF16.getCharCount(c);
+                }
+            } else {
+                c = UTF16.charAt(pattern, i);
+                i += UTF16.getCharCount(c);
+            }
+
+            if (ignoreWhitespace && UCharacterProperty.isRuleWhiteSpace(c)) {
+                continue;
+            }
+
+            // Keep track of the count of characters after an alleged anchor
+            if (anchor > 0) {
+                ++anchor;
+            }
+
+            // Parse the opening '[' and optional following '^'
+            switch (mode) {
+            case 0:
+                if (UnicodePropertySet.resemblesPattern(pattern, i-1)) {
+                    mode = 3;
+                    break; // Fall through
+                } else if (c == '[') {
+                    mode = 1; // Next look for '^'
+                    continue;
+                } else {
+                    throw new IllegalArgumentException("Missing opening '['");
+                }
+            case 1:
+                mode = 2;
+                switch (c) {
+                case '^':
+                    invert = true;
+                    newPat.append((char) c);
+                    continue; // Back to top to fetch next character
+                case '-':
+                    isLiteral = true; // Treat leading '-' as a literal
+                    break; // Fall through
+                }
+                // else fall through and parse this character normally
+            }
+
+            // After opening matter is parsed ("[", "[^", or "[:"), the mode
+            // will be 2 if we want a closing ']', or 3 if we should parse a
+            // category and close with ":]".
+
+            // Only process escapes, variable references, and nested sets
+            // if we are _not_ retrieving characters from the variable
+            // buffer.  Characters in the variable buffer have already
+            // benn through escape and variable reference processing.
+            if (varValueBuffer == null) {
+                /**
+                 * Handle property set patterns.
+                 */
+                if (UnicodePropertySet.resemblesPattern(pattern, i-1)) {
+                    ParsePosition pp = new ParsePosition(i-1);
+                    nestedSet = UnicodePropertySet.createFromPattern(pattern, pp);
+                    if (nestedSet == null) {
+                        // assert(pp.getIndex() == i-1);
+                        throw new IllegalArgumentException("Invalid property pattern " +
+                                                           pattern.substring(i-1));
+                    }
+                    nestedPatStart = newPat.length();
+                    nestedPatDone = true; // we're going to do it just below
+
+                    switch (lastOp) {
+                    case '-':
+                    case '&':
+                        newPat.append(lastOp);
+                        break;
+                    }
+
+                    // If we have a top-level property pattern, then trim
+                    // off the opening '[' and use the property pattern
+                    // as the entire pattern.
+                    if (mode == 3) {
+                        newPat.deleteCharAt(0);
+                    }
+                    newPat.append(pattern.substring(i-1, pp.getIndex()));
+                    rebuildPattern = true;
+
+                    i = pp.getIndex(); // advance past property pattern
+                    
+                    if (mode == 3) {
+                        // Entire pattern is a category; leave parse
+                        // loop.  This is one of 2 ways we leave this
+                        // loop if the pattern is well-formed.
+                        set(nestedSet);
+                        mode = 5;
+                        break;
+                    }
+                }
+
+                /* Handle escapes.  If a character is escaped, then it assumes its
+                 * literal value.  This is true for all characters, both special
+                 * characters and characters with no special meaning.  We also
+                 * interpret '\\uxxxx' Unicode escapes here (as literals).
+                 */
+                else if (c == '\\') {
+                    int[] offset = new int[] { i };
+                    int escaped = Utility.unescapeAt(pattern, offset);
+                    if (escaped == -1) {
+                        int sta = Math.max(i - 8, 0);
+                        int lim = Math.min(i + 16, pattern.length());
+                        throw new IllegalArgumentException("Invalid escape sequence " +
+                                                           pattern.substring(sta, i-1) +
+                                                           "|" +
+                                                           pattern.substring(i-1, lim));
+                    }
+                    i = offset[0];
+                    isLiteral = true;
+                    c = escaped;
+                }
+
+                /* Parse variable references.  These are treated as literals.  If a
+                 * variable refers to a UnicodeSet, its stand in character is
+                 * returned in the char[] buffer.
+                 * Variable names are only parsed if varNameToChar is not null.
+                 * Set variables are only looked up if varCharToSet is not null.
+                 */
+                else if (symbols != null && !isLiteral && c == SymbolTable.SYMBOL_REF) {
+                    pos.setIndex(i);
+                    String name = symbols.parseReference(pattern, pos, limit);
+                    if (name != null) {
+                        varValueBuffer = symbols.lookup(name);
+                        if (varValueBuffer == null) {
+                            throw new IllegalArgumentException("Undefined variable: "
+                                                               + name);
+                        }
+                        ivarValueBuffer = 0;
+                        i = pos.getIndex(); // Make i point PAST last char of var name
+                    } else {
+                        // Got a null; this means we have an isolated $.
+                        // Tentatively assume this is an anchor.
+                        anchor = 1;
+                    }
+                    continue; // Back to the top to get varValueBuffer[0]
+                }
+
+                /* An opening bracket indicates the first bracket of a nested
+                 * subpattern.
+                 */
+                else if (!isLiteral && c == '[') {
+                    // Record position before nested pattern
+                    nestedPatStart = newPat.length();
+
+                    // Recurse to get the pairs for this nested set.
+                    // Backup i to '['.
+                    pos.setIndex(--i);
+                    switch (lastOp) {
+                    case '-':
+                    case '&':
+                        newPat.append(lastOp);
+                        break;
+                    }
+                    nestedSet = new UnicodeSet();
+                    nestedSet._applyPattern(pattern, pos, symbols, newPat, ignoreWhitespace);
+                    nestedPatDone = true;
+                    i = pos.getIndex();
+                } else if (!isLiteral && c == '{') {
+                    // start of a string. find the rest.
+                    int length = 0;
+                    int st = i;
+                    multiCharBuffer.setLength(0);
+                    while (i < pattern.length()) {
+                        int ch = UTF16.charAt(pattern, i);
+                        i += UTF16.getCharCount(ch); 
+                        if (ch == '}') {
+                            length = -length; // signal that we saw '}'
+                            break;
+                        } else if (ch == '\\') {
+                            int[] offset = new int[] { i };
+                            ch = Utility.unescapeAt(pattern, offset);
+                            if (ch == -1) {
+                                int sta = Math.max(i - 8, 0);
+                                int lim = Math.min(i + 16, pattern.length());
+                                throw new IllegalArgumentException("Invalid escape sequence " +
+                                                                   pattern.substring(sta, i-1) +
+                                                                   "|" +
+                                                                   pattern.substring(i-1, lim));
+                            }
+                            i = offset[0];
+                        }
+                        --length; // sic; see above
+                        UTF16.append(multiCharBuffer, ch);
+                    }
+                    if (length < 1) {
+                        throw new IllegalArgumentException("Invalid multicharacter string");
+                    }
+                    // We have new string. Add it to set and continue;
+                    // we don't need to drop through to the further
+                    // processing
+                    add(multiCharBuffer.toString());
+                    newPat.append('{').append(pattern.substring(st, i));
+                    rebuildPattern = true;
+                    continue;
+                }
+            }
+
+            /* At this point we have either a character c, or a nested set.  If
+             * we have encountered a nested set, either embedded in the pattern,
+             * or as a variable, we have a non-null nestedSet, and c should be
+             * ignored.  Otherwise c is the current character, and isLiteral
+             * indicates whether it is an escaped literal (or variable) or a
+             * normal unescaped character.  Unescaped characters '-', '&', and
+             * ']' have special meanings.
+             */
+            if (nestedSet != null) {
+                if (lastChar != NONE) {
+                    if (lastOp != 0) {
+                        throw new IllegalArgumentException("Illegal rhs for " + lastChar + lastOp);
+                    }
+                    add(lastChar, lastChar);
+                    if (nestedPatDone) {
+                        // If there was a character before the nested set,
+                        // then we need to insert it in newPat before the
+                        // pattern for the nested set.  This position was
+                        // recorded in nestedPatStart.
+                        StringBuffer s = new StringBuffer();
+                        _appendToPat(s, lastChar, false);
+                        newPat.insert(nestedPatStart, s.toString());
+                    } else {
+                        _appendToPat(newPat, lastChar, false);
+                    }
+                    lastChar = NONE;
+                }
+                switch (lastOp) {
+                case '-':
+                    removeAll(nestedSet);
+                    break;
+                case '&':
+                    retainAll(nestedSet);
+                    break;
+                case 0:
+                    addAll(nestedSet);
+                    break;
+                }
+
+                // Get the pattern for the nested set, if we haven't done so
+                // already.
+                if (!nestedPatDone) {
+                    if (lastOp != 0) {
+                        newPat.append(lastOp);
+                    }
+                    nestedSet._toPattern(newPat, false);
+                }
+                rebuildPattern = true;
+
+                lastOp = 0;
+
+            } else if (!isLiteral && c == ']') {
+                // Final closing delimiter.  This is the only way we leave this
+                // loop if the pattern is well-formed.
+                if (anchor > 2 || anchor == 1) {
+                    throw new IllegalArgumentException("Syntax error near $" + pattern);
+
+                }
+                if (anchor == 2) {
+                    rebuildPattern = true;
+                    newPat.append(SymbolTable.SYMBOL_REF);
+                    add(TransliterationRule.ETHER);
+                }
+                mode = 4;
+                break;
+            } else if (lastOp == 0 && !isLiteral && (c == '-' || c == '&')) {
+                lastOp = (char) c;
+            } else if (lastOp == '-') {
+                if (lastChar >= c) {
+                    // Don't allow redundant (a-a) or empty (b-a) ranges;
+                    // these are most likely typos.
+                    throw new IllegalArgumentException("Invalid range " + lastChar +
+                                                       '-' + c);
+                }
+                add(lastChar, c);
+                _appendToPat(newPat, lastChar, false);
+                newPat.append('-');
+                _appendToPat(newPat, c, false);
+                lastOp = 0;
+                lastChar = NONE;
+            } else if (lastOp != 0) {
+                // We have <set>&<char> or <char>&<char>
+                throw new IllegalArgumentException("Unquoted " + lastOp);
+            } else {
+                if (lastChar != NONE) {
+                    // We have <char><char>
+                    add(lastChar, lastChar);
+                    _appendToPat(newPat, lastChar, false);
+                }
+                lastChar = c;
+                isLastLiteral = isLiteral;
+            }
+        }
+
+        if (mode < 4) {
+            throw new IllegalArgumentException("Missing ']'");
+        }
+
+        // Treat a trailing '$' as indicating ETHER.  This code is only
+        // executed if symbols == NULL; otherwise other code parses the
+        // anchor.
+        if (lastChar == SymbolTable.SYMBOL_REF && !isLastLiteral) {
+            rebuildPattern = true;
+            newPat.append((char) lastChar);
+            add(TransliterationRule.ETHER);
+        }
+        
+        else if (lastChar != NONE) {
+            add(lastChar, lastChar);
+            _appendToPat(newPat, lastChar, false);
+        }
+
+        // Handle unprocessed stuff preceding the closing ']'
+        if (lastOp == '-') {
+            // Trailing '-' is treated as literal
+            add(lastOp, lastOp);
+            newPat.append('-');
+        } else if (lastOp == '&') {
+            throw new IllegalArgumentException("Unquoted trailing " + lastOp);
+        }
+
+        if (mode == 4) {
+            newPat.append(']');
+        }
+
+        /**
+         * If we saw a '^' after the initial '[' of this pattern, then perform
+         * the complement.  (Inversion after '[:' is handled elsewhere.)
+         */
+        if (invert) {
+            complement();
+        }
+
+        pos.setIndex(i);
+
+        // Use the rebuilt pattern (newPat) only if necessary.  Prefer the
+        // generated pattern.
+        if (rebuildPattern) {
+            rebuiltPat.append(newPat.toString());
+        } else {
+            _generatePattern(rebuiltPat, false);
+        }
+
+        if (false) {
+            // Debug parser
+            System.out.println("UnicodeSet(" +
+                               pattern.substring(start, i+1) + ") -> " +
+                               Utility.escape(toString()));
+        }
+    }
+
+    //----------------------------------------------------------------
+    // Implementation: Utility methods
+    //----------------------------------------------------------------
+
+    private void ensureCapacity(int newLen) {
+        if (newLen <= list.length) return;
+        int[] temp = new int[newLen + GROW_EXTRA];
+        System.arraycopy(list, 0, temp, 0, len);
+        list = temp;
+    }
+
+    private void ensureBufferCapacity(int newLen) {
+        if (buffer != null && newLen <= buffer.length) return;
+        buffer = new int[newLen + GROW_EXTRA];
+    }
+
+    /**
+     * Assumes start <= end.
+     */
+    private int[] range(int start, int end) {
+        if (rangeList == null) {
+            rangeList = new int[] { start, end+1, HIGH };
+        } else {
+            rangeList[0] = start;
+            rangeList[1] = end+1;
+        }
+        return rangeList;
+    }
+
+    //----------------------------------------------------------------
+    // Implementation: Fundamental operations
+    //----------------------------------------------------------------
+
+    // polarity = 0, 3 is normal: x xor y
+    // polarity = 1, 2: x xor ~y == x === y
+
+    private UnicodeSet xor(int[] other, int otherLen, int polarity) {
+        ensureBufferCapacity(len + otherLen);
+        int i = 0, j = 0, k = 0;
+        int a = list[i++];
+        int b;
+        if (polarity == 1 || polarity == 2) {
+            b = LOW;
+            if (other[j] == LOW) { // skip base if already LOW
+                ++j;
+                b = other[j];
+            }
+        } else {
+            b = other[j++];
+        }
+        // simplest of all the routines
+        // sort the values, discarding identicals!
+        while (true) {
+            if (a < b) {
+                buffer[k++] = a;
+                a = list[i++];
+            } else if (b < a) {
+                buffer[k++] = b;
+                b = other[j++];
+            } else if (a != HIGH) { // at this point, a == b
+                // discard both values!
+                a = list[i++];
+                b = other[j++];
+            } else { // DONE!
+                buffer[k++] = HIGH;
+                len = k;
+                break;
+            }
+        }
+        // swap list and buffer
+        int[] temp = list;
+        list = buffer;
+        buffer = temp;
+        pat = null;
+        return this;
+    }
+
+    // polarity = 0 is normal: x union y
+    // polarity = 2: x union ~y
+    // polarity = 1: ~x union y
+    // polarity = 3: ~x union ~y
+
+    private UnicodeSet add(int[] other, int otherLen, int polarity) {
+        ensureBufferCapacity(len + otherLen);
+        int i = 0, j = 0, k = 0;
+        int a = list[i++];
+        int b = other[j++];
+        // change from xor is that we have to check overlapping pairs
+        // polarity bit 1 means a is second, bit 2 means b is.
+        main:
+        while (true) {
+            switch (polarity) {
+              case 0: // both first; take lower if unequal
+                if (a < b) { // take a
+                    // Back up over overlapping ranges in buffer[]
+                    if (k > 0 && a <= buffer[k-1]) {
+                        // Pick latter end value in buffer[] vs. list[]
+                        a = max(list[i], buffer[--k]);
+                    } else {
+                        // No overlap
+                        buffer[k++] = a;
+                        a = list[i];
+                    }
+                    i++; // Common if/else code factored out
+                    polarity ^= 1;
+                } else if (b < a) { // take b
+                    if (k > 0 && b <= buffer[k-1]) {
+                        b = max(other[j], buffer[--k]);
+                    } else {
+                        buffer[k++] = b;
+                        b = other[j];
+                    }
+                    j++;
+                    polarity ^= 2;
+                } else { // a == b, take a, drop b
+                    if (a == HIGH) break main;
+                    // This is symmetrical; it doesn't matter if
+                    // we backtrack with a or b. - liu
+                    if (k > 0 && a <= buffer[k-1]) {
+                        a = max(list[i], buffer[--k]);
+                    } else {
+                        // No overlap
+                        buffer[k++] = a;
+                        a = list[i];
+                    }
+                    i++;
+                    polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+              case 3: // both second; take higher if unequal, and drop other
+                if (b <= a) { // take a
+                    if (a == HIGH) break main;
+                    buffer[k++] = a;
+                } else { // take b
+                    if (b == HIGH) break main;
+                    buffer[k++] = b;
+                }
+                a = list[i++]; polarity ^= 1;   // factored common code
+                b = other[j++]; polarity ^= 2;
+                break;
+              case 1: // a second, b first; if b < a, overlap
+                if (a < b) { // no overlap, take a
+                    buffer[k++] = a; a = list[i++]; polarity ^= 1;
+                } else if (b < a) { // OVERLAP, drop b
+                    b = other[j++]; polarity ^= 2;
+                } else { // a == b, drop both!
+                    if (a == HIGH) break main;
+                    a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+              case 2: // a first, b second; if a < b, overlap
+                if (b < a) { // no overlap, take b
+                    buffer[k++] = b; b = other[j++]; polarity ^= 2;
+                } else  if (a < b) { // OVERLAP, drop a
+                    a = list[i++]; polarity ^= 1;
+                } else { // a == b, drop both!
+                    if (a == HIGH) break main;
+                    a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+            }
+        }
+        buffer[k++] = HIGH;    // terminate
+        len = k;
+        // swap list and buffer
+        int[] temp = list;
+        list = buffer;
+        buffer = temp;
+        pat = null;
+        return this;
+    }
+
+    // polarity = 0 is normal: x intersect y
+    // polarity = 2: x intersect ~y == set-minus
+    // polarity = 1: ~x intersect y
+    // polarity = 3: ~x intersect ~y
+
+    private UnicodeSet retain(int[] other, int otherLen, int polarity) {
+        ensureBufferCapacity(len + otherLen);
+        int i = 0, j = 0, k = 0;
+        int a = list[i++];
+        int b = other[j++];
+        // change from xor is that we have to check overlapping pairs
+        // polarity bit 1 means a is second, bit 2 means b is.
+        main:
+        while (true) {
+            switch (polarity) {
+              case 0: // both first; drop the smaller
+                if (a < b) { // drop a
+                    a = list[i++]; polarity ^= 1;
+                } else if (b < a) { // drop b
+                    b = other[j++]; polarity ^= 2;
+                } else { // a == b, take one, drop other
+                    if (a == HIGH) break main;
+                    buffer[k++] = a; a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+              case 3: // both second; take lower if unequal
+                if (a < b) { // take a
+                    buffer[k++] = a; a = list[i++]; polarity ^= 1;
+                } else if (b < a) { // take b
+                    buffer[k++] = b; b = other[j++]; polarity ^= 2;
+                } else { // a == b, take one, drop other
+                    if (a == HIGH) break main;
+                    buffer[k++] = a; a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+              case 1: // a second, b first;
+                if (a < b) { // NO OVERLAP, drop a
+                    a = list[i++]; polarity ^= 1;
+                } else if (b < a) { // OVERLAP, take b
+                    buffer[k++] = b; b = other[j++]; polarity ^= 2;
+                } else { // a == b, drop both!
+                    if (a == HIGH) break main;
+                    a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+              case 2: // a first, b second; if a < b, overlap
+                if (b < a) { // no overlap, drop b
+                    b = other[j++]; polarity ^= 2;
+                } else  if (a < b) { // OVERLAP, take a
+                    buffer[k++] = a; a = list[i++]; polarity ^= 1;
+                } else { // a == b, drop both!
+                    if (a == HIGH) break main;
+                    a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+            }
+        }
+        buffer[k++] = HIGH;    // terminate
+        len = k;
+        // swap list and buffer
+        int[] temp = list;
+        list = buffer;
+        buffer = temp;
+        pat = null;
+        return this;
+    }
+
+    private static final int max(int a, int b) {
+        return (a > b) ? a : b;
+    }
+    
+    /**
+     * The relationship between two sets A and B can be determined by looking at:
+     * A - B
+     * A & B (intersection)
+     * B - A
+     * These are represented by a set of bits.
+     * Bit 2 is true if A - B is not empty
+     * Bit 1 is true if A & B is not empty
+     * BIT 0 is true if B - A is not empty
+     */
+    
+    public static final int
+        A_NOT_B = 4,
+        A_AND_B = 2,
+        B_NOT_A = 1;
+    
+    /**
+     * There are 8 combinations of the relationship bits. These correspond to
+     * the filters (combinations of allowed bits) in hasRelation. They also
+     * correspond to the modification functions, listed in comments.
+     */
+     
+    public static final int 
+       ANY =            A_NOT_B |   A_AND_B |   B_NOT_A,    // union,           addAll
+       CONTAINS =       A_NOT_B |   A_AND_B,                // A                (unnecessary)
+       DISJOINT =       A_NOT_B |               B_NOT_A,    // A xor B,         missing Java function
+       ISCONTAINED =                A_AND_B |   B_NOT_A,    // B                (unnecessary)
+       NO_B =           A_NOT_B,                            // A setDiff B,     removeAll
+       EQUALS =                     A_AND_B,                // A intersect B,   retainAll
+       NO_A =                                   B_NOT_A,    // B setDiff A,     removeAll
+       NONE =           0,                                  // null             (unnecessary)
+       
+       ADDALL = ANY,                // union,           addAll
+       A = CONTAINS,                // A                (unnecessary)
+       COMPLEMENTALL = DISJOINT,    // A xor B,         missing Java function
+       B = ISCONTAINED,             // B                (unnecessary)
+       REMOVEALL = NO_B,            // A setDiff B,     removeAll
+       RETAINALL = EQUALS,          // A intersect B,   retainAll
+       B_REMOVEALL = NO_A;          // B setDiff A,     removeAll
+       
+  
+    /**
+     * Utility that could be on SortedSet. Faster implementation than
+     * what is in Java for doing contains, equals, etc.
+     * @param a first set
+     * @param allow filter, using ANY, CONTAINS, etc.
+     * @param b second set
+     * @return whether the filter relationship is true or not.
+     */
+    
+    public static boolean hasRelation(SortedSet a, int allow, SortedSet b) {
+        if (allow < NONE || allow > ANY) {
+            throw new IllegalArgumentException("Relation " + allow + " out of range");
+        }
+        
+        // extract filter conditions
+        // these are the ALLOWED conditions Set
+        
+        boolean anb = (allow & A_NOT_B) != 0;
+        boolean ab = (allow & A_AND_B) != 0;
+        boolean bna = (allow & B_NOT_A) != 0;
+        
+        // quick check on sizes
+        switch(allow) {
+            case CONTAINS: if (a.size() < b.size()) return false; break;
+            case ISCONTAINED: if (a.size() > b.size()) return false; break;
+            case EQUALS: if (a.size() != b.size()) return false; break;
+        }
+        
+        // check for null sets
+        if (a.size() == 0) {
+            if (b.size() == 0) return true;
+            return bna;
+        } else if (b.size() == 0) {
+            return anb;
+        }
+        
+        // pick up first strings, and start comparing
+        Iterator ait = a.iterator();
+        Iterator bit = b.iterator();
+        
+        Comparable aa = (Comparable) ait.next();
+        Comparable bb = (Comparable) bit.next();
+        
+        while (true) {
+            int comp = aa.compareTo(bb);
+            if (comp == 0) {
+                if (!ab) return false;
+                if (!ait.hasNext()) {
+                    if (!bit.hasNext()) return true;
+                    return bna;
+                } else if (!bit.hasNext()) {
+                    return anb;
+                }
+                aa = (Comparable) ait.next();
+                bb = (Comparable) bit.next();
+            } else if (comp < 0) {
+                if (!anb) return false;
+                if (!ait.hasNext()) {
+                    return bna;
+                }
+                aa = (Comparable) ait.next(); 
+            } else  {
+                if (!bna) return false;
+                if (!bit.hasNext()) {
+                    return anb;
+                }
+                bb = (Comparable) bit.next();
+            }
+        }
+    }
+    
+    /**
+     * Utility that could be on SortedSet. Allows faster implementation than
+     * what is in Java for doing addAll, removeAll, retainAll, (complementAll).
+     * @param a first set
+     * @param allow filter, using ANY, CONTAINS, etc.
+     * @param b second set
+     * @return whether the filter relationship is true or not.
+     */
+    
+    public static SortedSet doOperation(SortedSet a, int relation, SortedSet b) {
+        // TODO: optimize this as above
+        TreeSet temp;
+        switch (relation) {
+            case ADDALL:
+                a.addAll(b); 
+                return a;
+            case A:
+                return a; // no action
+            case B:
+                a.clear(); 
+                a.addAll(b); 
+                return a;
+            case REMOVEALL: 
+                a.removeAll(b);
+                return a;
+            case RETAINALL: 
+                a.retainAll(b);
+                return a;
+            // the following is the only case not really supported by Java
+            // although all could be optimized
+            case COMPLEMENTALL:
+                temp = new TreeSet(b);
+                temp.removeAll(a);
+                a.removeAll(b);
+                a.addAll(temp);
+                return a;
+            case B_REMOVEALL:
+                temp = new TreeSet(b);
+                temp.removeAll(a);
+                a.clear();
+                a.addAll(temp);
+                return a;
+            case NONE:
+                a.clear();
+                return a;
+            default: 
+                throw new IllegalArgumentException("Relation " + relation + " out of range");
+        }
+    }    
+}
diff --git a/src/com/ibm/icu/text/UnicodeSetIterator.java b/src/com/ibm/icu/text/UnicodeSetIterator.java
new file mode 100755
index 0000000..9919a67
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeSetIterator.java
@@ -0,0 +1,247 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/UnicodeSetIterator.java,v $ 
+ * $Date: 2002/04/25 23:34:32 $ 
+ * $Revision: 1.9 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.Utility;
+import java.util.*;
+import java.io.*;
+
+/**
+ * UnicodeSetIterator iterates over the contents of a UnicodeSet.  It
+ * iterates over either code points or code point ranges.  After all
+ * code points or ranges have been returned, it returns the
+ * multicharacter strings of the UnicodSet, if any.
+ *
+ * <p>To iterate over code points, use a loop like this:
+ * <pre>
+ * UnicodeSetIterator it(set);
+ * while (set.next()) {
+ *   if (set.codepoint != UnicodeSetIterator::IS_STRING) {
+ *     processCodepoint(set.codepoint);
+ *   } else {
+ *     processString(set.string);
+ *   }
+ * }
+ * </pre>
+ *
+ * <p>To iterate over code point ranges, use a loop like this:
+ * <pre>
+ * UnicodeSetIterator it(set);
+ * while (set.nextRange()) {
+ *   if (set.codepoint != UnicodeSetIterator::IS_STRING) {
+ *     processCodepointRange(set.codepoint, set.codepointEnd);
+ *   } else {
+ *     processString(set.string);
+ *   }
+ * }
+ * </pre>
+ * @author M. Davis
+ * @draft
+ */
+public final class UnicodeSetIterator {
+	
+    /**
+     * Value of <tt>codepoint</tt> if the iterator points to a string.
+     * If <tt>codepoint == IS_STRING</tt>, then examine
+     * <tt>string</tt> for the current iteration result.
+     */
+	public static int IS_STRING = -1;
+	
+	/**
+     * Current code point, or the special value <tt>IS_STRING</tt>, if
+     * the iterator points to a string.
+     */
+	public int codepoint;
+
+    /**
+     * When iterating over ranges using <tt>nextRange()</tt>,
+     * <tt>codepointEnd</tt> contains the inclusive end of the
+     * iteration range, if <tt>codepoint != IS_STRING</tt>.  If
+     * iterating over code points using <tt>next()</tt>, or if
+     * <tt>codepoint == IS_STRING</tt>, then the value of
+     * <tt>codepointEnd</tt> is undefined.
+     */
+	public int codepointEnd;
+
+    /**
+     * If <tt>codepoint == IS_STRING</tt>, then <tt>string</tt> points
+     * to the current string.  If <tt>codepoint != IS_STRING</tt>, the
+     * value of <tt>string</tt> is undefined.
+     */
+	public String string;
+
+    /**
+     * Create an iterator over the given set.
+     * @param set set to iterate over
+     */
+    public UnicodeSetIterator(UnicodeSet set) {
+        reset(set);
+    }
+        
+    /**
+     * Create an iterator over nothing.  <tt>next()</tt> and
+     * <tt>nextRange()</tt> return false. This is a convenience
+     * constructor allowing the target to be set later.
+     */
+    public UnicodeSetIterator() {
+        reset(new UnicodeSet());
+    }
+        
+    /**
+     * Returns the next element in the set, either a single code point
+     * or a string.  If there are no more elements in the set, return
+     * false.  If <tt>codepoint == IS_STRING</tt>, the value is a
+     * string in the <tt>string</tt> field.  Otherwise the value is a
+     * single code point in the <tt>codepoint</tt> field.
+     * 
+     * <p>The order of iteration is all code points in sorted order,
+     * followed by all strings sorted order.  <tt>codepointEnd</tt> is
+     * undefined after calling this method.  <tt>string</tt> is
+     * undefined unless <tt>codepoint == IS_STRING</tt>.  Do not mix
+     * calls to <tt>next()</tt> and <tt>nextRange()</tt> without
+     * calling <tt>reset()</tt> between them.  The results of doing so
+     * are undefined.
+     *
+     * @return true if there was another element in the set and this
+     * object contains the element.
+     */
+    public boolean next() {
+        if (nextElement <= endElement) {
+        	codepoint = codepointEnd = nextElement++;
+            return true;
+        }
+        if (range < endRange) {
+        	loadRange(++range);
+        	codepoint = codepointEnd = nextElement++;
+        	return true;
+        }
+        
+        // stringIterator == null iff there are no string elements remaining
+        
+        if (stringIterator == null) return false;
+        codepoint = IS_STRING; // signal that value is actually a string
+        string = (String)stringIterator.next();
+        if (!stringIterator.hasNext()) stringIterator = null;
+        return true;
+    }
+        
+    /**
+     * Returns the next element in the set, either a code point range
+     * or a string.  If there are no more elements in the set, return
+     * false.  If <tt>codepoint == IS_STRING</tt>, the value is a
+     * string in the <tt>string</tt> field.  Otherwise the value is a
+     * range of one or more code points from <tt>codepoint</tt> to
+     * <tt>codepointeEnd</tt> inclusive.
+     * 
+     * <p>The order of iteration is all code points ranges in sorted
+     * order, followed by all strings sorted order.  Ranges are
+     * disjoint and non-contiguous.  <tt>string</tt> is undefined
+     * unless <tt>codepoint == IS_STRING</tt>.  Do not mix calls to
+     * <tt>next()</tt> and <tt>nextRange()</tt> without calling
+     * <tt>reset()</tt> between them.  The results of doing so are
+     * undefined.
+     *
+     * @return true if there was another element in the set and this
+     * object contains the element.
+     */
+    public boolean nextRange() {
+        if (nextElement <= endElement) {
+        	codepointEnd = endElement;
+        	codepoint = nextElement;
+        	nextElement = endElement+1;
+            return true;
+        }
+        if (range < endRange) {
+            loadRange(++range);
+        	codepointEnd = endElement;
+        	codepoint = nextElement;
+        	nextElement = endElement+1;
+        	return true;
+        }
+        
+        // stringIterator == null iff there are no string elements remaining
+        
+        if (stringIterator == null) return false;
+        codepoint = IS_STRING; // signal that value is actually a string
+        string = (String)stringIterator.next();
+        if (!stringIterator.hasNext()) stringIterator = null;
+        return true;
+    }
+        
+    /**
+     * Sets this iterator to visit the elements of the given set and
+     * resets it to the start of that set.  The iterator is valid only
+     * so long as <tt>set</tt> is valid.
+     * @param set the set to iterate over.
+     */
+    public void reset(UnicodeSet set) {
+        this.set = set;
+        reset();
+    }
+        
+    /**
+     * Resets this iterator to the start of the set.
+     */
+    public void reset() {
+        endRange = set.getRangeCount() - 1;
+        range = 0;
+        endElement = -1;
+        nextElement = 0;            
+        if (endRange >= 0) {
+            loadRange(range);
+        }
+        stringIterator = null;
+        if (set.strings != null) {
+        	stringIterator = set.strings.iterator();
+        	if (!stringIterator.hasNext()) stringIterator = null;
+        }
+    }
+    
+    /**
+     * INTERNAL: Causes the interation to only visit part of long ranges
+     * @internal used only for testing
+     */
+    public void setAbbreviated(boolean abbr) {
+        abbreviated = abbr;
+    }
+    
+    /**
+     * INTERNAL: Causes the interation to only visit part of long ranges
+     * @internal used only for testing
+     */
+    public boolean getAbbreviated() {
+        return abbreviated;
+    }
+    
+    // ======================= PRIVATES ===========================
+    
+    private UnicodeSet set;
+    private int endRange = 0;
+    private int range = 0;
+    private int endElement;
+    private int nextElement;
+    private boolean abbreviated = false;
+    private Iterator stringIterator = null;
+    
+    /**
+     * Invariant: stringIterator is null when there are no (more) strings remaining
+     */
+
+    private final void loadRange(int range) {
+        nextElement = set.getRangeStart(range);
+        endElement = set.getRangeEnd(range);
+        if (abbreviated && (endElement > nextElement + 50)) {
+            endElement = nextElement + 50;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/UnicodeToHexTransliterator.java b/src/com/ibm/icu/text/UnicodeToHexTransliterator.java
new file mode 100755
index 0000000..9618f7c
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeToHexTransliterator.java
@@ -0,0 +1,325 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/Attic/UnicodeToHexTransliterator.java,v $ 
+ * $Date: 2002/02/16 03:06:23 $ 
+ * $Revision: 1.12 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+import java.util.*;
+
+/**
+ * A transliterator that converts from Unicode characters to 
+ * hexadecimal Unicode escape sequences.  It outputs a
+ * prefix specified in the constructor and optionally converts the hex
+ * digits to uppercase.
+ *
+ * <p>The format of the output is set by a pattern.  This pattern
+ * follows the same syntax as <code>HexToUnicodeTransliterator</code>,
+ * except it does not allow multiple specifications.  The pattern sets
+ * the prefix string, suffix string, and minimum and maximum digit
+ * count.  There are no setters or getters for these attributes; they
+ * are set only through the pattern.
+ *
+ * <p>The setUppercase() and isUppercase() methods control whether 'a'
+ * through 'f' or 'A' through 'F' are output as hex digits.  This is
+ * not controlled through the pattern; only through the methods.  The
+ * default is uppercase.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: UnicodeToHexTransliterator.java,v $ $Revision: 1.12 $ $Date: 2002/02/16 03:06:23 $
+ */
+public class UnicodeToHexTransliterator extends Transliterator {
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Package accessible ID for this transliterator.
+     */
+    static final String _ID = "Any-Hex";
+
+    private static final char[] HEX_DIGITS = {
+        '0', '1', '2', '3', '4', '5', '6', '7',
+        '8', '9', 'a', 'b', 'c', 'd', 'e', 'f',
+        '0', '1', '2', '3', '4', '5', '6', '7',
+        '8', '9', 'A', 'B', 'C', 'D', 'E', 'F',
+    };
+
+    // Character constants for special pattern chars
+    private static final char ZERO      = '0';
+    private static final char POUND     = '#';
+    private static final char BACKSLASH = '\\';
+
+    /**
+     * The pattern set by applyPattern() and returned by toPattern().
+     */
+    private String pattern;
+
+    /**
+     * The string preceding the hex digits, parsed from the pattern.
+     */
+    private String prefix;
+
+    /**
+     * The string following the hex digits, parsed from the pattern.
+     */
+    private String suffix;
+
+    /**
+     * The minimum number of hex digits to output, between 1 and 4,
+     * inclusive.  Parsed from the pattern.
+     */
+    private int minDigits;
+
+    /**
+     * If true, output uppercase hex digits; otherwise output
+     * lowercase.  Set by setUppercase() and returned by isUppercase().
+     */
+    private boolean uppercase;
+
+    /**
+     * Constructs a transliterator.
+     * @param pattern The pattern for this transliterator.  See
+     * applyPattern() for pattern syntax.
+     * @param uppercase if true, the four hex digits will be
+     * converted to uppercase; otherwise they will be lowercase.
+     * Ignored if direction is HEX_UNICODE.
+     * @param filter the filter for this transliterator, or
+     * null if none.
+     */
+    public UnicodeToHexTransliterator(String pattern, boolean uppercase,
+                                      UnicodeFilter filter) {
+        super(_ID, filter);
+        this.uppercase = uppercase;
+        applyPattern(pattern);
+    }
+
+    /**
+     * Constructs an uppercase transliterator with no filter.
+     * @param pattern The pattern for this transliterator.  See
+     * applyPattern() for pattern syntax.
+     */
+    public UnicodeToHexTransliterator(String pattern) {
+        this(pattern, true, null);
+    }
+
+    /**
+     * Constructs a transliterator with the default prefix "&#092;u"
+     * that outputs four uppercase hex digits.
+     */
+    public UnicodeToHexTransliterator() {
+        super(_ID, null);
+        pattern = "\\\\u0000";
+        prefix = "\\u";
+        suffix = "";
+        minDigits = 4;
+        uppercase = true;
+    }
+
+    /**
+     * Set the pattern recognized by this transliterator.  The pattern
+     * must contain zero or more prefix characters, one or more digit
+     * characters, and zero or more suffix characters.  The digit
+     * characters indicates optional digits ('#') followed by required
+     * digits ('0').  The total number of digits cannot exceed 4, and
+     * must be at least 1 required digit.  Use a backslash ('\\') to
+     * escape any of the special characters.  An empty pattern is not
+     * allowed.
+     *
+     * <p>Example: "U+0000" specifies a prefix of "U+", exactly four
+     * digits, and no suffix.  "<###0>" has a prefix of "<", between
+     * one and four digits, and a suffix of ">".
+     *
+     * <p><pre>
+     * pattern := prefix-char* digit-spec suffix-char*
+     * digit-spec := '#'* '0'+
+     * prefix-char := [^special-char] | '\\' special-char
+     * suffix-char := [^special-char] | '\\' special-char
+     * special-char := ';' | '0' | '#' | '\\'
+     * </pre>
+     *
+     * <p>Limitations: There is no way to set the uppercase attribute
+     * in the pattern.  (applyPattern() does not alter the uppercase
+     * attribute.)
+     */
+    public void applyPattern(String thePattern) {
+        StringBuffer prefixBuf = null;
+        StringBuffer suffixBuf = null;
+        int minDigits = 0;
+        int maxDigits = 0;
+
+        /* The mode specifies where we are in each spec.
+         * mode 0 = in prefix
+         * mode 1 = in optional digits (#)
+         * mode 2 = in required digits (0)
+         * mode 3 = in suffix
+         */
+        int mode = 0;
+
+        for (int i=0; i<thePattern.length(); ++i) {
+            char c = thePattern.charAt(i);
+            boolean isLiteral = false;
+            if (c == BACKSLASH) {
+                if ((i+1)<thePattern.length()) {
+                    isLiteral = true;
+                    c = thePattern.charAt(++i);
+                } else {
+                    // Trailing '\\'
+                    throw new IllegalArgumentException("Trailing '\\'");
+                }
+            }
+
+            if (!isLiteral) {
+                switch (c) {
+                case POUND:
+                    // Seeing a '#' moves us from mode 0 (prefix) to mode 1
+                    // (optional digits).
+                    if (mode == 0) {
+                        ++mode;
+                    } else if (mode != 1) {
+                        // Unquoted '#'
+                        throw new IllegalArgumentException("Unquoted '#'");
+                    }
+                    ++maxDigits;
+                    break;
+                case ZERO:
+                    // Seeing a '0' moves us to mode 2 (required digits)
+                    if (mode < 2) {
+                        mode = 2;
+                    } else if (mode != 2) {
+                        // Unquoted '0'
+                        throw new IllegalArgumentException("Unquoted '0'");
+                    }
+                    ++minDigits;
+                    ++maxDigits;
+                    break;
+                default:
+                    isLiteral = true;
+                    break;
+                }
+            }
+
+            if (isLiteral) {
+                if (mode == 0) {
+                    if (prefixBuf == null) {
+                        prefixBuf = new StringBuffer();
+                    }
+                    prefixBuf.append(c);
+                } else {
+                    // Any literal outside the prefix moves us into mode 3
+                    // (suffix)
+                    mode = 3;
+                    if (suffixBuf == null) {
+                        suffixBuf = new StringBuffer();
+                    }
+                    suffixBuf.append(c);
+                }
+            }
+        }
+
+        if (minDigits < 1 || maxDigits > 4) {
+            // Invalid min/max digit count
+            throw new IllegalArgumentException("Invalid min/max digit count");
+        }
+
+        pattern = thePattern;
+        prefix = (prefixBuf == null) ? "" : prefixBuf.toString();
+        suffix = (suffixBuf == null) ? "" : suffixBuf.toString();
+        this.minDigits = minDigits;
+    }
+
+    /**
+     * Return this transliterator's pattern.
+     */
+    public String toPattern() {
+        return pattern;
+    }
+
+    /**
+     * Returns the string that precedes the four hex digits.
+     * @return prefix string
+     */
+    public String getPrefix() {
+        return prefix;
+    }
+
+    /**
+     * Sets the string that precedes the four hex digits.
+     *
+     * <p>Callers must take care if a transliterator is in use by
+     * multiple threads.  The prefix should not be changed by one
+     * thread while another thread may be transliterating.
+     * @param prefix prefix string
+     */
+    public void setPrefix(String prefix) {
+        this.prefix = prefix;
+    }
+
+    /**
+     * Returns true if this transliterator outputs uppercase hex digits.
+     */
+    public boolean isUppercase() {
+        return uppercase;
+    }
+
+    /**
+     * Sets if this transliterator outputs uppercase hex digits.
+     *
+     * <p>Callers must take care if a transliterator is in use by
+     * multiple threads.  The uppercase mode should not be changed by
+     * one thread while another thread may be transliterating.
+     * @param outputUppercase if true, then this transliterator
+     * outputs uppercase hex digits.
+     */
+    public void setUppercase(boolean outputUppercase) {
+        uppercase = outputUppercase;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean incremental) {
+        /**
+         * Performs transliteration changing all characters to
+         * Unicode hexadecimal escapes.  For example, '@' -> "U+0040",
+         * assuming the prefix is "U+". 
+         */
+        int cursor = offsets.start;
+        int limit = offsets.limit;
+
+        StringBuffer hex = new StringBuffer(prefix);
+        int prefixLen = prefix.length();
+
+        while (cursor < limit) {
+            char c = text.charAt(cursor);
+
+            hex.setLength(prefixLen);
+            boolean showRest = false;
+            for (int i=3; i>=0; --i) {
+                int d = (c >> (i*4)) & 0xF;
+                if (showRest || (d != 0) || minDigits > i) {
+                    hex.append(HEX_DIGITS[uppercase ? (d|16) : d]);
+                    showRest = true;
+                }
+            }
+            hex.append(suffix);
+
+            text.replace(cursor, cursor+1, hex.toString());
+            int len = hex.length();
+            cursor += len; // Advance cursor by 1 and adjust for new text
+            --len;
+            limit += len;
+        }
+
+        offsets.contextLimit += limit - offsets.limit;
+        offsets.limit = limit;
+        offsets.start = cursor;
+    }
+}
diff --git a/src/com/ibm/icu/text/UppercaseTransliterator.java b/src/com/ibm/icu/text/UppercaseTransliterator.java
new file mode 100755
index 0000000..25d271d
--- /dev/null
+++ b/src/com/ibm/icu/text/UppercaseTransliterator.java
@@ -0,0 +1,96 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/UppercaseTransliterator.java,v $ 
+ * $Date: 2002/06/20 01:21:18 $ 
+ * $Revision: 1.10 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.text;
+import java.util.*;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.UnicodeCharacterIterator;
+
+/**
+ * A transliterator that performs locale-sensitive toUpper()
+ * case mapping.
+ */
+class UppercaseTransliterator extends Transliterator {
+
+    /**
+     * Package accessible ID.
+     */
+    static final String _ID = "Any-Upper";
+    // TODO: Add variants for tr, az, lt, default = default locale
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UppercaseTransliterator(Locale.US);
+            }
+        });
+    }
+
+    private Locale loc;
+
+    /**
+     * Constructs a transliterator.
+     */
+    public UppercaseTransliterator(Locale loc) {
+        super(_ID, null);
+        this.loc = loc;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        int textPos = offsets.start;
+        if (textPos >= offsets.limit) return;
+
+        // get string for context
+        // TODO: add convenience method to do this, since we do it all over
+        
+        UnicodeCharacterIterator original = new UnicodeCharacterIterator(text);
+        
+        // Walk through original string
+        // If there is a case change, modify corresponding position in replaceable
+        
+        int limit = offsets.limit;
+        int cp;
+        int oldLen;
+        
+        while (textPos < limit) {
+        	original.setIndex(textPos);
+            cp = original.currentCodePoint();
+            oldLen = UTF16.getCharCount(cp);
+            int newLen = m_charppty_.toUpperOrTitleCase(loc, cp, original, true, buffer);
+            if (newLen >= 0) {
+                text.replace(textPos, textPos + oldLen, buffer, 0, newLen);
+                if (newLen != oldLen) {
+                    textPos += newLen;
+                    offsets.limit += newLen - oldLen;
+                    offsets.contextLimit += newLen - oldLen;
+                    continue;
+                }
+            }
+            textPos += oldLen;
+        }
+        offsets.start = offsets.limit;
+    }
+    
+    private char buffer[] = new char[UCharacterProperty.MAX_CASE_MAP_SIZE];
+	/**
+	 * Character property database
+	 */
+	private static final UCharacterProperty m_charppty_ = 
+										UCharacterProperty.getInstance();
+}
diff --git a/src/com/ibm/icu/text/package.html b/src/com/ibm/icu/text/package.html
new file mode 100755
index 0000000..5662da0
--- /dev/null
+++ b/src/com/ibm/icu/text/package.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/text/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 21:35:51 $
+-->
+</head>
+<body bgcolor="white">
+Classes for RuleBasedBreakIterator, DictionaryBasedBreakIterator
+Normalizer, RuleBasedNumberFormat, BigNumberFormat,
+Unicode compression, International Searching, and Transliterator.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/util/BuddhistCalendar.java b/src/com/ibm/icu/util/BuddhistCalendar.java
new file mode 100755
index 0000000..60b8068
--- /dev/null
+++ b/src/com/ibm/icu/util/BuddhistCalendar.java
@@ -0,0 +1,190 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/BuddhistCalendar.java,v $ 
+ * $Date: 2002/02/16 03:06:24 $ 
+ * $Revision: 1.8 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import com.ibm.icu.util.GregorianCalendar;
+import java.util.Locale;
+
+/**
+ * <code>BuddhistCalendar</code> is a subclass of <code>GregorianCalendar</code>
+ * that numbers years since the birth of the Buddha.  This is the civil calendar
+ * in some predominantly Buddhist countries such as Thailand, and it is used for
+ * religious purposes elsewhere.
+ * <p>
+ * The Buddhist calendar is identical to the Gregorian calendar in all respects
+ * except for the year and era.  Years are numbered since the birth of the
+ * Buddha in 543 BC (Gregorian), so that 1 AD (Gregorian) is equivalent to 544
+ * BE (Buddhist Era) and 1998 AD is 2541 BE.
+ * <p>
+ * The Buddhist Calendar has only one allowable era: <code>BE</code>.  If the
+ * calendar is not in lenient mode (see <code>setLenient</code>), dates before
+ * 1/1/1 BE are rejected with an <code>IllegalArgumentException</code>.
+ *
+ * @see com.ibm.icu.util.GregorianCalendar
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ */
+public class BuddhistCalendar extends GregorianCalendar {
+    
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constant for the Buddhist Era.  This is the only allowable <code>ERA</code>
+     * value for the Buddhist calendar.
+     *
+     * @see com.ibm.icu.util.Calendar#ERA
+     */
+    public static final int BE = 0;
+    
+    /**
+     * Constructs a <code>BuddhistCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     */
+    public BuddhistCalendar() {
+        super();
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone the given time zone.
+     */
+    public BuddhistCalendar(TimeZone zone) {
+        super(zone);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale the given locale.
+     */
+    public BuddhistCalendar(Locale aLocale) {
+        super(aLocale);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param aLocale the given locale.
+     */
+    public BuddhistCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     */
+    public BuddhistCalendar(Date date) {
+        this();
+        setTime(date);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     */
+    public BuddhistCalendar(int year, int month, int date) {
+        super(year, month, date);
+    }
+
+    /**
+     * Constructs a BuddhistCalendar with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     *
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     *
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     *
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     */
+    public BuddhistCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(year, month, date, hour, minute, second);
+    }
+
+
+    //-------------------------------------------------------------------------
+    // The only practical difference from a Gregorian calendar is that years
+    // are numbered since the birth of the Buddha.  A couple of overrides will
+    // take care of that....
+    //-------------------------------------------------------------------------
+    
+    // Starts in -543 AD, ie 544 BC
+    private static final int BUDDHIST_ERA_START = -543;
+    
+    protected int handleGetExtendedYear() {
+        int year;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, 1);
+        } else {
+            // Ignore the era, as there is only one
+            year = internalGet(YEAR, 1);
+        }
+        return year;
+    }
+
+    // Return JD of start of given month/year
+    protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
+        return super.handleComputeMonthStart(eyear + BUDDHIST_ERA_START, month, useMonth);
+    }
+
+    protected void handleComputeFields(int julianDay) {
+        super.handleComputeFields(julianDay);
+        int y = internalGet(EXTENDED_YEAR) - BUDDHIST_ERA_START;
+        internalSet(EXTENDED_YEAR, y);
+        internalSet(ERA, 0);
+        internalSet(YEAR, y);
+    }
+
+    /**
+     * Override GregorianCalendar.  There is only one Buddhist ERA.  We
+     * should really handle YEAR, YEAR_WOY, and EXTENDED_YEAR here too to
+     * implement the 1..5000000 range, but it's not critical.
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        if (field == ERA) {
+            return BE;
+        }
+        return super.handleGetLimit(field, limitType);
+    }
+}
diff --git a/src/com/ibm/icu/util/Calendar.java b/src/com/ibm/icu/util/Calendar.java
new file mode 100755
index 0000000..2c2ef59
--- /dev/null
+++ b/src/com/ibm/icu/util/Calendar.java
@@ -0,0 +1,4510 @@
+/*
+*   Copyright (C) 1996-2002, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+
+package com.ibm.icu.util;
+
+import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DateFormatSymbols;
+import com.ibm.icu.text.SimpleDateFormat;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.text.MessageFormat;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * <code>Calendar</code> is an abstract base class for converting between
+ * a <code>Date</code> object and a set of integer fields such as
+ * <code>YEAR</code>, <code>MONTH</code>, <code>DAY</code>, <code>HOUR</code>,
+ * and so on. (A <code>Date</code> object represents a specific instant in
+ * time with millisecond precision. See
+ * {@link Date}
+ * for information about the <code>Date</code> class.)
+ *
+ * <p><b>Note:</b>  This class is similar, but not identical, to the class
+ * <code>java.util.Calendar</code>.  Changes are detailed below.
+ *
+ * <p>
+ * Subclasses of <code>Calendar</code> interpret a <code>Date</code>
+ * according to the rules of a specific calendar system.  ICU4J contains
+ * several subclasses implementing different international calendar systems.
+ *
+ * <p>
+ * Like other locale-sensitive classes, <code>Calendar</code> provides a
+ * class method, <code>getInstance</code>, for getting a generally useful
+ * object of this type. <code>Calendar</code>'s <code>getInstance</code> method
+ * returns a <code>GregorianCalendar</code> object whose
+ * time fields have been initialized with the current date and time:
+ * <blockquote>
+ * <pre>
+ * Calendar rightNow = Calendar.getInstance();
+ * </pre>
+ * </blockquote>
+ *
+ * <p>A <code>Calendar</code> object can produce all the time field values
+ * needed to implement the date-time formatting for a particular language and
+ * calendar style (for example, Japanese-Gregorian, Japanese-Traditional).
+ * <code>Calendar</code> defines the range of values returned by certain fields,
+ * as well as their meaning.  For example, the first month of the year has value
+ * <code>MONTH</code> == <code>JANUARY</code> for all calendars.  Other values
+ * are defined by the concrete subclass, such as <code>ERA</code> and
+ * <code>YEAR</code>.  See individual field documentation and subclass
+ * documentation for details.
+ *
+ * <p>When a <code>Calendar</code> is <em>lenient</em>, it accepts a wider range
+ * of field values than it produces.  For example, a lenient
+ * <code>GregorianCalendar</code> interprets <code>MONTH</code> ==
+ * <code>JANUARY</code>, <code>DAY_OF_MONTH</code> == 32 as February 1.  A
+ * non-lenient <code>GregorianCalendar</code> throws an exception when given
+ * out-of-range field settings.  When calendars recompute field values for
+ * return by <code>get()</code>, they normalize them.  For example, a
+ * <code>GregorianCalendar</code> always produces <code>DAY_OF_MONTH</code>
+ * values between 1 and the length of the month.
+ *
+ * <p><code>Calendar</code> defines a locale-specific seven day week using two
+ * parameters: the first day of the week and the minimal days in first week
+ * (from 1 to 7).  These numbers are taken from the locale resource data when a
+ * <code>Calendar</code> is constructed.  They may also be specified explicitly
+ * through the API.
+ *
+ * <p>When setting or getting the <code>WEEK_OF_MONTH</code> or
+ * <code>WEEK_OF_YEAR</code> fields, <code>Calendar</code> must determine the
+ * first week of the month or year as a reference point.  The first week of a
+ * month or year is defined as the earliest seven day period beginning on
+ * <code>getFirstDayOfWeek()</code> and containing at least
+ * <code>getMinimalDaysInFirstWeek()</code> days of that month or year.  Weeks
+ * numbered ..., -1, 0 precede the first week; weeks numbered 2, 3,... follow
+ * it.  Note that the normalized numbering returned by <code>get()</code> may be
+ * different.  For example, a specific <code>Calendar</code> subclass may
+ * designate the week before week 1 of a year as week <em>n</em> of the previous
+ * year.
+ *
+ * <p> When computing a <code>Date</code> from time fields, two special
+ * circumstances may arise: there may be insufficient information to compute the
+ * <code>Date</code> (such as only year and month but no day in the month), or
+ * there may be inconsistent information (such as "Tuesday, July 15, 1996" --
+ * July 15, 1996 is actually a Monday).
+ *
+ * <p>
+ * <strong>Insufficient information.</strong> The calendar will use default
+ * information to specify the missing fields. This may vary by calendar; for
+ * the Gregorian calendar, the default for a field is the same as that of the
+ * start of the epoch: i.e., YEAR = 1970, MONTH = JANUARY, DATE = 1, etc.
+ *
+ * <p>
+ * <strong>Inconsistent information.</strong> If fields conflict, the calendar
+ * will give preference to fields set more recently. For example, when
+ * determining the day, the calendar will look for one of the following
+ * combinations of fields.  The most recent combination, as determined by the
+ * most recently set single field, will be used.
+ *
+ * <blockquote>
+ * <pre>
+ * MONTH + DAY_OF_MONTH
+ * MONTH + WEEK_OF_MONTH + DAY_OF_WEEK
+ * MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK
+ * DAY_OF_YEAR
+ * DAY_OF_WEEK + WEEK_OF_YEAR
+ * </pre>
+ * </blockquote>
+ *
+ * For the time of day:
+ *
+ * <blockquote>
+ * <pre>
+ * HOUR_OF_DAY
+ * AM_PM + HOUR
+ * </pre>
+ * </blockquote>
+ *
+ * <p>
+ * <strong>Note:</strong> for some non-Gregorian calendars, different
+ * fields may be necessary for complete disambiguation. For example, a full
+ * specification of the historial Arabic astronomical calendar requires year,
+ * month, day-of-month <em>and</em> day-of-week in some cases.
+ *
+ * <p>
+ * <strong>Note:</strong> There are certain possible ambiguities in
+ * interpretation of certain singular times, which are resolved in the
+ * following ways:
+ * <ol>
+ *     <li> 24:00:00 "belongs" to the following day. That is,
+ *          23:59 on Dec 31, 1969 &lt; 24:00 on Jan 1, 1970 &lt; 24:01:00 on Jan 1, 1970
+ *
+ *     <li> Although historically not precise, midnight also belongs to "am",
+ *          and noon belongs to "pm", so on the same day,
+ *          12:00 am (midnight) &lt; 12:01 am, and 12:00 pm (noon) &lt; 12:01 pm
+ * </ol>
+ *
+ * <p>
+ * The date or time format strings are not part of the definition of a
+ * calendar, as those must be modifiable or overridable by the user at
+ * runtime. Use {@link DateFormat}
+ * to format dates.
+ *
+ * <p><strong>Field manipulation methods</strong></p>
+ * 
+ * <p><code>Calendar</code> fields can be changed using three methods:
+ * <code>set()</code>, <code>add()</code>, and <code>roll()</code>.</p>
+ * 
+ * <p><strong><code>set(f, value)</code></strong> changes field
+ * <code>f</code> to <code>value</code>.  In addition, it sets an
+ * internal member variable to indicate that field <code>f</code> has
+ * been changed. Although field <code>f</code> is changed immediately,
+ * the calendar's milliseconds is not recomputed until the next call to
+ * <code>get()</code>, <code>getTime()</code>, or
+ * <code>getTimeInMillis()</code> is made. Thus, multiple calls to
+ * <code>set()</code> do not trigger multiple, unnecessary
+ * computations. As a result of changing a field using
+ * <code>set()</code>, other fields may also change, depending on the
+ * field, the field value, and the calendar system. In addition,
+ * <code>get(f)</code> will not necessarily return <code>value</code>
+ * after the fields have been recomputed. The specifics are determined by
+ * the concrete calendar class.</p>
+ * 
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to August 31, 1999. Calling <code>set(Calendar.MONTH,
+ * Calendar.SEPTEMBER)</code> sets the calendar to September 31,
+ * 1999. This is a temporary internal representation that resolves to
+ * October 1, 1999 if <code>getTime()</code>is then called. However, a
+ * call to <code>set(Calendar.DAY_OF_MONTH, 30)</code> before the call to
+ * <code>getTime()</code> sets the calendar to September 30, 1999, since
+ * no recomputation occurs after <code>set()</code> itself.</p>
+ * 
+ * <p><strong><code>add(f, delta)</code></strong> adds <code>delta</code>
+ * to field <code>f</code>.  This is equivalent to calling <code>set(f,
+ * get(f) + delta)</code> with two adjustments:</p>
+ * 
+ * <blockquote>
+ *   <p><strong>Add rule 1</strong>. The value of field <code>f</code>
+ *   after the call minus the value of field <code>f</code> before the
+ *   call is <code>delta</code>, modulo any overflow that has occurred in
+ *   field <code>f</code>. Overflow occurs when a field value exceeds its
+ *   range and, as a result, the next larger field is incremented or
+ *   decremented and the field value is adjusted back into its range.</p>
+ * 
+ *   <p><strong>Add rule 2</strong>. If a smaller field is expected to be
+ *   invariant, but &nbsp; it is impossible for it to be equal to its
+ *   prior value because of changes in its minimum or maximum after field
+ *   <code>f</code> is changed, then its value is adjusted to be as close
+ *   as possible to its expected value. A smaller field represents a
+ *   smaller unit of time. <code>HOUR</code> is a smaller field than
+ *   <code>DAY_OF_MONTH</code>. No adjustment is made to smaller fields
+ *   that are not expected to be invariant. The calendar system
+ *   determines what fields are expected to be invariant.</p>
+ * </blockquote>
+ * 
+ * <p>In addition, unlike <code>set()</code>, <code>add()</code> forces
+ * an immediate recomputation of the calendar's milliseconds and all
+ * fields.</p>
+ * 
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to August 31, 1999. Calling <code>add(Calendar.MONTH,
+ * 13)</code> sets the calendar to September 30, 2000. <strong>Add rule
+ * 1</strong> sets the <code>MONTH</code> field to September, since
+ * adding 13 months to August gives September of the next year. Since
+ * <code>DAY_OF_MONTH</code> cannot be 31 in September in a
+ * <code>GregorianCalendar</code>, <strong>add rule 2</strong> sets the
+ * <code>DAY_OF_MONTH</code> to 30, the closest possible value. Although
+ * it is a smaller field, <code>DAY_OF_WEEK</code> is not adjusted by
+ * rule 2, since it is expected to change when the month changes in a
+ * <code>GregorianCalendar</code>.</p>
+ * 
+ * <p><strong><code>roll(f, delta)</code></strong> adds
+ * <code>delta</code> to field <code>f</code> without changing larger
+ * fields. This is equivalent to calling <code>add(f, delta)</code> with
+ * the following adjustment:</p>
+ * 
+ * <blockquote>
+ *   <p><strong>Roll rule</strong>. Larger fields are unchanged after the
+ *   call. A larger field represents a larger unit of
+ *   time. <code>DAY_OF_MONTH</code> is a larger field than
+ *   <code>HOUR</code>.</p>
+ * </blockquote>
+ * 
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to August 31, 1999. Calling <code>roll(Calendar.MONTH,
+ * 8)</code> sets the calendar to April 30, <strong>1999</strong>.  Add
+ * rule 1 sets the <code>MONTH</code> field to April. Using a
+ * <code>GregorianCalendar</code>, the <code>DAY_OF_MONTH</code> cannot
+ * be 31 in the month April. Add rule 2 sets it to the closest possible
+ * value, 30. Finally, the <strong>roll rule</strong> maintains the
+ * <code>YEAR</code> field value of 1999.</p>
+ * 
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to Sunday June 6, 1999. Calling
+ * <code>roll(Calendar.WEEK_OF_MONTH, -1)</code> sets the calendar to
+ * Tuesday June 1, 1999, whereas calling
+ * <code>add(Calendar.WEEK_OF_MONTH, -1)</code> sets the calendar to
+ * Sunday May 30, 1999. This is because the roll rule imposes an
+ * additional constraint: The <code>MONTH</code> must not change when the
+ * <code>WEEK_OF_MONTH</code> is rolled. Taken together with add rule 1,
+ * the resultant date must be between Tuesday June 1 and Saturday June
+ * 5. According to add rule 2, the <code>DAY_OF_WEEK</code>, an invariant
+ * when changing the <code>WEEK_OF_MONTH</code>, is set to Tuesday, the
+ * closest possible value to Sunday (where Sunday is the first day of the
+ * week).</p>
+ * 
+ * <p><strong>Usage model</strong>. To motivate the behavior of
+ * <code>add()</code> and <code>roll()</code>, consider a user interface
+ * component with increment and decrement buttons for the month, day, and
+ * year, and an underlying <code>GregorianCalendar</code>. If the
+ * interface reads January 31, 1999 and the user presses the month
+ * increment button, what should it read? If the underlying
+ * implementation uses <code>set()</code>, it might read March 3, 1999. A
+ * better result would be February 28, 1999. Furthermore, if the user
+ * presses the month increment button again, it should read March 31,
+ * 1999, not March 28, 1999. By saving the original date and using either
+ * <code>add()</code> or <code>roll()</code>, depending on whether larger
+ * fields should be affected, the user interface can behave as most users
+ * will intuitively expect.</p>
+ *
+ * <p><b>Note:</b> You should always use {@link #roll roll} and {@link #add add} rather
+ * than attempting to perform arithmetic operations directly on the fields
+ * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+ * to have fields with non-linear behavior, for example missing months
+ * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+ * methods will take this into account, while simple arithmetic manipulations
+ * may give invalid results.
+ *
+ * <p><big><big><b>Calendar Architecture in ICU4J</b></big></big></p>
+ * 
+ * <p>Recently the implementation of <code>Calendar</code> has changed
+ * significantly in order to better support subclassing. The original
+ * <code>Calendar</code> class was designed to support subclassing, but
+ * it had only one implemented subclass, <code>GregorianCalendar</code>.
+ * With the implementation of several new calendar subclasses, including
+ * the <code>BuddhistCalendar</code>, <code>ChineseCalendar</code>,
+ * <code>HebrewCalendar</code>, <code>IslamicCalendar</code>, and
+ * <code>JapaneseCalendar</code>, the subclassing API has been reworked
+ * thoroughly. This section details the new subclassing API and other
+ * ways in which <code>com.ibm.icu.util.Calendar</code> differs from
+ * <code>java.util.Calendar</code>.
+ * </p>
+ * 
+ * <p><big><b>Changes</b></big></p>
+ * 
+ * <p>Overview of changes between the classic <code>Calendar</code>
+ * architecture and the new architecture.
+ * 
+ * <ul>
+ * 
+ *   <li>The <code>fields[]</code> array is <code>private</code> now
+ *     instead of <code>protected</code>.  Subclasses must access it
+ *     using the methods {@link #internalSet} and
+ *     {@link #internalGet}.  <b>Motivation:</b> Subclasses should
+ *     not directly access data members.</li>
+ * 
+ *   <li>The <code>time</code> long word is <code>private</code> now
+ *     instead of <code>protected</code>.  Subclasses may access it using
+ *     the method {@link #internalGetTimeInMillis}, which does not
+ *     provoke an update. <b>Motivation:</b> Subclasses should not
+ *     directly access data members.</li>
+ * 
+ *   <li>The scope of responsibility of subclasses has been drastically
+ *     reduced. As much functionality as possible is implemented in the
+ *     <code>Calendar</code> base class. As a result, it is much easier
+ *     to subclass <code>Calendar</code>. <b>Motivation:</b> Subclasses
+ *     should not have to reimplement common code. Certain behaviors are
+ *     common across calendar systems: The definition and behavior of
+ *     week-related fields and time fields, the arithmetic
+ *     ({@link #add(int, int) add} and {@link #roll(int, int) roll}) behavior of many
+ *     fields, and the field validation system.</li>
+ * 
+ *   <li>The subclassing API has been completely redesigned.</li>
+ * 
+ *   <li>The <code>Calendar</code> base class contains some Gregorian
+ *     calendar algorithmic support that subclasses can use (specifically
+ *     in {@link #handleComputeFields}).  Subclasses can use the
+ *     methods <code>getGregorianXxx()</code> to obtain precomputed
+ *     values. <b>Motivation:</b> This is required by all
+ *     <code>Calendar</code> subclasses in order to implement consistent
+ *     time zone behavior, and Gregorian-derived systems can use the
+ *     already computed data.</li>
+ * 
+ *   <li>The <code>FIELD_COUNT</code> constant has been removed. Use
+ *     {@link #getFieldCount}.  In addition, framework API has been
+ *     added to allow subclasses to define additional fields.
+ *     <b>Motivation: </b>The number of fields is not constant across
+ *     calendar systems.</li>
+ * 
+ *   <li>The range of handled dates has been narrowed from +/-
+ *     ~300,000,000 years to +/- ~5,000,000 years. In practical terms
+ *     this should not affect clients. However, it does mean that client
+ *     code cannot be guaranteed well-behaved results with dates such as
+ *     <code>Date(Long.MIN_VALUE)</code> or
+ *     <code>Date(Long.MAX_VALUE)</code>. Instead, the
+ *     <code>Calendar</code> constants {@link #MIN_DATE},
+ *     {@link #MAX_DATE}, {@link #MIN_MILLIS},
+ *     {@link #MAX_MILLIS}, {@link #MIN_JULIAN}, and
+ *     {@link #MAX_JULIAN} should be used. <b>Motivation:</b> With
+ *     the addition of the {@link #JULIAN_DAY} field, Julian day
+ *     numbers must be restricted to a 32-bit <code>int</code>.  This
+ *     restricts the overall supported range. Furthermore, restricting
+ *     the supported range simplifies the computations by removing
+ *     special case code that was used to accomodate arithmetic overflow
+ *     at millis near <code>Long.MIN_VALUE</code> and
+ *     <code>Long.MAX_VALUE</code>.</li>
+ * 
+ *   <li>New fields are implemented: {@link #JULIAN_DAY} defines
+ *     single-field specification of the
+ *     date. {@link #MILLISECONDS_IN_DAY} defines a single-field
+ *     specification of the wall time. {@link #DOW_LOCAL} and
+ *     {@link #YEAR_WOY} implement localized day-of-week and
+ *     week-of-year behavior.</li>
+ * 
+ *   <li>Subclasses can access millisecond constants
+ *     {@link #ONE_SECOND}, {@link #ONE_MINUTE},
+ *     {@link #ONE_HOUR}, {@link #ONE_DAY}, and
+ *     {@link #ONE_WEEK} defined in <code>Calendar</code>.</li>
+ * 
+ *   <li>New API has been added to suport calendar-specific subclasses
+ *     of <code>DateFormat</code>.</li>
+ * 
+ *   <li>Several subclasses have been implemented, representing
+ *     various international calendar systems.</li>
+ * 
+ * </ul>
+ * 
+ * <p><big><b>Subclass API</b></big></p>
+ * 
+ * <p>The original <code>Calendar</code> API was based on the experience
+ * of implementing a only a single subclass,
+ * <code>GregorianCalendar</code>. As a result, all of the subclassing
+ * kinks had not been worked out. The new subclassing API has been
+ * refined based on several implemented subclasses. This includes methods
+ * that must be overridden and methods for subclasses to call. Subclasses
+ * no longer have direct access to <code>fields</code> and
+ * <code>stamp</code>. Instead, they have new API to access
+ * these. Subclasses are able to allocate the <code>fields</code> array
+ * through a protected framework method; this allows subclasses to
+ * specify additional fields. </p>
+ * 
+ * <p>More functionality has been moved into the base class. The base
+ * class now contains much of the computational machinery to support the
+ * Gregorian calendar. This is based on two things: (1) Many calendars
+ * are based on the Gregorian calendar (such as the Buddhist and Japanese
+ * imperial calendars). (2) <em>All</em> calendars require basic
+ * Gregorian support in order to handle timezone computations. </p>
+ * 
+ * <p>Common computations have been moved into
+ * <code>Calendar</code>. Subclasses no longer compute the week related
+ * fields and the time related fields. These are commonly handled for all
+ * calendars by the base class. </p>
+ * 
+ * <p><b>Subclass computation of time <tt>=&gt;</tt> fields</b>
+ * 
+ * <p>The {@link #ERA}, {@link #YEAR},
+ * {@link #EXTENDED_YEAR}, {@link #MONTH},
+ * {@link #DAY_OF_MONTH}, and {@link #DAY_OF_YEAR} fields are
+ * computed by the subclass, based on the Julian day. All other fields
+ * are computed by <code>Calendar</code>.
+ * 
+ * <ul>
+ * 
+ *   <li>Subclasses should implement {@link #handleComputeFields}
+ *     to compute the {@link #ERA}, {@link #YEAR},
+ *     {@link #EXTENDED_YEAR}, {@link #MONTH},
+ *     {@link #DAY_OF_MONTH}, and {@link #DAY_OF_YEAR} fields,
+ *     based on the value of the {@link #JULIAN_DAY} field. If there
+ *     are calendar-specific fields not defined by <code>Calendar</code>,
+ *     they must also be computed. These are the only fields that the
+ *     subclass should compute. All other fields are computed by the base
+ *     class, so time and week fields behave in a consistent way across
+ *     all calendars. The default version of this method in
+ *     <code>Calendar</code> implements a proleptic Gregorian
+ *     calendar. Within this method, subclasses may call
+ *     <code>getGregorianXxx()</code> to obtain the Gregorian calendar
+ *     month, day of month, and extended year for the given date.</li>
+ * 
+ * </ul>
+ * 
+ * <p><b>Subclass computation of fields <tt>=&gt;</tt> time</b>
+ * 
+ * <p>The interpretation of most field values is handled entirely by
+ * <code>Calendar</code>. <code>Calendar</code> determines which fields
+ * are set, which are not, which are set more recently, and so on. In
+ * addition, <code>Calendar</code> handles the computation of the time
+ * from the time fields and handles the week-related fields. The only
+ * thing the subclass must do is determine the extended year, based on
+ * the year fields, and then, given an extended year and a month, it must
+ * return a Julian day number.
+ * 
+ * <ul>
+ * 
+ *   <li>Subclasses should implement {@link #handleGetExtendedYear}
+ *     to return the extended year for this calendar system, based on the
+ *     {@link #YEAR}, {@link #EXTENDED_YEAR}, and any fields that
+ *     the calendar system uses that are larger than a year, such as
+ *     {@link #ERA}.</li>
+ * 
+ *   <li>Subclasses should implement {@link #handleComputeMonthStart}
+ *     to return the Julian day number
+ *     associated with a month and extended year. This is the Julian day
+ *     number of the day before the first day of the month. The month
+ *     number is zero-based. This computation should not depend on any
+ *     field values.</li>
+ * 
+ * </ul>
+ * 
+ * <p><b>Other methods</b>
+ * 
+ * <ul>
+ * 
+ *   <li>Subclasses should implement {@link #handleGetMonthLength}
+ *     to return the number of days in a
+ *     given month of a given extended year. The month number, as always,
+ *     is zero-based.</li>
+ * 
+ *   <li>Subclasses should implement {@link #handleGetYearLength}
+ *     to return the number of days in the given
+ *     extended year. This method is used by
+ *     <tt>computeWeekFields</tt> to compute the
+ *     {@link #WEEK_OF_YEAR} and {@link #YEAR_WOY} fields.</li>
+ * 
+ *   <li>Subclasses should implement {@link #handleGetLimit}
+ *     to return the {@link #MINIMUM},
+ *     {@link #GREATEST_MINIMUM}, {@link #LEAST_MAXIMUM}, or
+ *     {@link #MAXIMUM} of a field, depending on the value of
+ *     <code>limitType</code>. This method only needs to handle the
+ *     fields {@link #ERA}, {@link #YEAR}, {@link #MONTH},
+ *     {@link #WEEK_OF_YEAR}, {@link #WEEK_OF_MONTH},
+ *     {@link #DAY_OF_MONTH}, {@link #DAY_OF_YEAR},
+ *     {@link #DAY_OF_WEEK_IN_MONTH}, {@link #YEAR_WOY}, and
+ *     {@link #EXTENDED_YEAR}.  Other fields are invariant (with
+ *     respect to calendar system) and are handled by the base
+ *     class.</li>
+ * 
+ *   <li>Optionally, subclasses may override {@link #validateField}
+ *     to check any subclass-specific fields. If the
+ *     field's value is out of range, the method should throw an
+ *     <code>IllegalArgumentException</code>. The method may call
+ *     <code>super.validateField(field)</code> to handle fields in a
+ *     generic way, that is, to compare them to the range
+ *     <code>getMinimum(field)</code>..<code>getMaximum(field)</code>.</li>
+ * 
+ *   <li>Optionally, subclasses may override
+ *     {@link #handleCreateFields} to create an <code>int[]</code>
+ *     array large enough to hold the calendar's fields. This is only
+ *     necessary if the calendar defines additional fields beyond those
+ *     defined by <code>Calendar</code>. The length of the result must be
+ *     at least {@link #BASE_FIELD_COUNT} and no more than
+ *     {@link #MAX_FIELD_COUNT}.</li>
+ * 
+ *   <li>Optionally, subclasses may override
+ *     {@link #handleGetDateFormat} to create a
+ *     <code>DateFormat</code> appropriate to this calendar. This is only
+ *     required if a calendar subclass redefines the use of a field (for
+ *     example, changes the {@link #ERA} field from a symbolic field
+ *     to a numeric one) or defines an additional field.</li>
+ * 
+ *   <li>Optionally, subclasses may override {@link #roll roll} and
+ *     {@link #add add} to handle fields that are discontinuous. For
+ *     example, in the Hebrew calendar the month &quot;Adar I&quot; only
+ *     occurs in leap years; in other years the calendar jumps from
+ *     Shevat (month #4) to Adar (month #6). The {@link
+ *     HebrewCalendar#add HebrewCalendar.add} and {@link
+ *     HebrewCalendar#roll HebrewCalendar.roll} methods take this into
+ *     account, so that adding 1 month to Shevat gives the proper result
+ *     (Adar) in a non-leap year. The protected utility method {@link
+ *     #pinField pinField} is often useful when implementing these two
+ *     methods. </li>
+ * 
+ * </ul>
+ * 
+ * <p><big><b>Normalized behavior</b></big>
+ * 
+ * <p>The behavior of certain fields has been made consistent across all
+ * calendar systems and implemented in <code>Calendar</code>.
+ * 
+ * <ul>
+ * 
+ *   <li>Time is normalized. Even though some calendar systems transition
+ *     between days at sunset or at other times, all ICU4J calendars
+ *     transition between days at <em>local zone midnight</em>.  This
+ *     allows ICU4J to centralize the time computations in
+ *     <code>Calendar</code> and to maintain basic correpsondences
+ *     between calendar systems. Affected fields: {@link #AM_PM},
+ *     {@link #HOUR}, {@link #HOUR_OF_DAY}, {@link #MINUTE},
+ *     {@link #SECOND}, {@link #MILLISECOND},
+ *     {@link #ZONE_OFFSET}, and {@link #DST_OFFSET}.</li>
+ * 
+ *   <li>DST behavior is normalized. Daylight savings time behavior is
+ *     computed the same for all calendar systems, and depends on the
+ *     value of several <code>GregorianCalendar</code> fields: the
+ *     {@link #YEAR}, {@link #MONTH}, and
+ *     {@link #DAY_OF_MONTH}. As a result, <code>Calendar</code>
+ *     always computes these fields, even for non-Gregorian calendar
+ *     systems. These fields are available to subclasses.</li>
+ * 
+ *   <li>Weeks are normalized. Although locales define the week
+ *     differently, in terms of the day on which it starts, and the
+ *     designation of week number one of a month or year, they all use a
+ *     common mechanism. Furthermore, the day of the week has a simple
+ *     and consistent definition throughout history. For example,
+ *     although the Gregorian calendar introduced a discontinuity when
+ *     first instituted, the day of week was not disrupted. For this
+ *     reason, the fields {@link #DAY_OF_WEEK}, <code>WEEK_OF_YEAR,
+ *     WEEK_OF_MONTH</code>, {@link #DAY_OF_WEEK_IN_MONTH},
+ *     {@link #DOW_LOCAL}, {@link #YEAR_WOY} are all computed in
+ *     a consistent way in the base class, based on the
+ *     {@link #EXTENDED_YEAR}, {@link #DAY_OF_YEAR},
+ *     {@link #MONTH}, and {@link #DAY_OF_MONTH}, which are
+ *     computed by the subclass.</li>
+ * 
+ * </ul>
+ * 
+ * <p><big><b>Supported range</b></big>
+ * 
+ * <p>The allowable range of <code>Calendar</code> has been
+ * narrowed. <code>GregorianCalendar</code> used to attempt to support
+ * the range of dates with millisecond values from
+ * <code>Long.MIN_VALUE</code> to <code>Long.MAX_VALUE</code>. This
+ * introduced awkward constructions (hacks) which slowed down
+ * performance. It also introduced non-uniform behavior at the
+ * boundaries. The new <code>Calendar</code> protocol specifies the
+ * maximum range of supportable dates as those having Julian day numbers
+ * of <code>-0x7F000000</code> to <code>+0x7F000000</code>. This
+ * corresponds to years from ~5,000,000 BCE to ~5,000,000 CE. Programmers
+ * should use the constants {@link #MIN_DATE} (or
+ * {@link #MIN_MILLIS} or {@link #MIN_JULIAN}) and
+ * {@link #MAX_DATE} (or {@link #MAX_MILLIS} or
+ * {@link #MAX_JULIAN}) in <code>Calendar</code> to specify an
+ * extremely early or extremely late date.</p>
+ * 
+ * <p><big><b>General notes</b></big>
+ * 
+ * <ul>
+ * 
+ *   <li>Calendars implementations are <em>proleptic</em>. For example,
+ *     even though the Gregorian calendar was not instituted until the
+ *     16th century, the <code>GregorianCalendar</code> class supports
+ *     dates before the historical onset of the calendar by extending the
+ *     calendar system backward in time. Similarly, the
+ *     <code>HebrewCalendar</code> extends backward before the start of
+ *     its epoch into zero and negative years. Subclasses do not throw
+ *     exceptions because a date precedes the historical start of a
+ *     calendar system. Instead, they implement
+ *     {@link #handleGetLimit} to return appropriate limits on
+ *     {@link #YEAR}, {@link #ERA}, etc. fields. Then, if the
+ *     calendar is set to not be lenient, out-of-range field values will
+ *     trigger and exception.</li>
+ * 
+ *   <li>Calendar system subclasses compute a <em>extended
+ *     year</em>. This differs from the {@link #YEAR} field in that
+ *     it ranges over all integer values, including zero and negative
+ *     values, and it encapsulates the information of the
+ *     {@link #YEAR} field and all larger fields.  Thus, for the
+ *     Gregorian calendar, the {@link #EXTENDED_YEAR} is computed as
+ *     <code>ERA==AD ? YEAR : 1-YEAR</code>. Another example is the Mayan
+ *     long count, which has years (<code>KUN</code>) and nested cycles
+ *     of years (<code>KATUN</code> and <code>BAKTUN</code>). The Mayan
+ *     {@link #EXTENDED_YEAR} is computed as <code>TUN + 20 * (KATUN
+ *     + 20 * BAKTUN)</code>. The <code>Calendar</code> base class uses
+ *     the {@link #EXTENDED_YEAR} field to compute the week-related
+ *     fields.</li>
+ * 
+ * </ul>
+ *
+ * @see          Date
+ * @see          GregorianCalendar
+ * @see          TimeZone
+ * @see          DateFormat
+ * @version      $Revision: 1.29 $ $Date: 2002/08/08 01:45:21 $
+ * @author Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu, Laura Werner
+ * @since JDK1.1
+ */
+public abstract class Calendar implements Serializable, Cloneable {
+
+    // Data flow in Calendar
+    // ---------------------
+
+    // The current time is represented in two ways by Calendar: as UTC
+    // milliseconds from the epoch start (1 January 1970 0:00 UTC), and as local
+    // fields such as MONTH, HOUR, AM_PM, etc.  It is possible to compute the
+    // millis from the fields, and vice versa.  The data needed to do this
+    // conversion is encapsulated by a TimeZone object owned by the Calendar.
+    // The data provided by the TimeZone object may also be overridden if the
+    // user sets the ZONE_OFFSET and/or DST_OFFSET fields directly. The class
+    // keeps track of what information was most recently set by the caller, and
+    // uses that to compute any other information as needed.
+
+    // If the user sets the fields using set(), the data flow is as follows.
+    // This is implemented by the Calendar subclass's computeTime() method.
+    // During this process, certain fields may be ignored.  The disambiguation
+    // algorithm for resolving which fields to pay attention to is described
+    // above.
+
+    //   local fields (YEAR, MONTH, DATE, HOUR, MINUTE, etc.)
+    //           |
+    //           | Using Calendar-specific algorithm
+    //           V
+    //   local standard millis
+    //           |
+    //           | Using TimeZone or user-set ZONE_OFFSET / DST_OFFSET
+    //           V
+    //   UTC millis (in time data member)
+
+    // If the user sets the UTC millis using setTime(), the data flow is as
+    // follows.  This is implemented by the Calendar subclass's computeFields()
+    // method.
+
+    //   UTC millis (in time data member)
+    //           |
+    //           | Using TimeZone getOffset()
+    //           V
+    //   local standard millis
+    //           |
+    //           | Using Calendar-specific algorithm
+    //           V
+    //   local fields (YEAR, MONTH, DATE, HOUR, MINUTE, etc.)
+
+    // In general, a round trip from fields, through local and UTC millis, and
+    // back out to fields is made when necessary.  This is implemented by the
+    // complete() method.  Resolving a partial set of fields into a UTC millis
+    // value allows all remaining fields to be generated from that value.  If
+    // the Calendar is lenient, the fields are also renormalized to standard
+    // ranges when they are regenerated.
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * era, e.g., AD or BC in the Julian calendar. This is a calendar-specific
+     * value; see subclass documentation.
+     * @see GregorianCalendar#AD
+     * @see GregorianCalendar#BC
+     */
+    public final static int ERA = 0;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * year. This is a calendar-specific value; see subclass documentation.
+     */
+    public final static int YEAR = 1;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * month. This is a calendar-specific value. The first month of the year is
+     * <code>JANUARY</code>; the last depends on the number of months in a year.
+     * @see #JANUARY
+     * @see #FEBRUARY
+     * @see #MARCH
+     * @see #APRIL
+     * @see #MAY
+     * @see #JUNE
+     * @see #JULY
+     * @see #AUGUST
+     * @see #SEPTEMBER
+     * @see #OCTOBER
+     * @see #NOVEMBER
+     * @see #DECEMBER
+     * @see #UNDECIMBER
+     */
+    public final static int MONTH = 2;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * week number within the current year.  The first week of the year, as
+     * defined by <code>getFirstDayOfWeek()</code> and
+     * <code>getMinimalDaysInFirstWeek()</code>, has value 1.  Subclasses define
+     * the value of <code>WEEK_OF_YEAR</code> for days before the first week of
+     * the year.
+     * @see #getFirstDayOfWeek
+     * @see #getMinimalDaysInFirstWeek
+     */
+    public final static int WEEK_OF_YEAR = 3;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * week number within the current month.  The first week of the month, as
+     * defined by <code>getFirstDayOfWeek()</code> and
+     * <code>getMinimalDaysInFirstWeek()</code>, has value 1.  Subclasses define
+     * the value of <code>WEEK_OF_MONTH</code> for days before the first week of
+     * the month.
+     * @see #getFirstDayOfWeek
+     * @see #getMinimalDaysInFirstWeek
+     */
+    public final static int WEEK_OF_MONTH = 4;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * day of the month. This is a synonym for <code>DAY_OF_MONTH</code>.
+     * The first day of the month has value 1.
+     * @see #DAY_OF_MONTH
+     */
+    public final static int DATE = 5;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * day of the month. This is a synonym for <code>DATE</code>.
+     * The first day of the month has value 1.
+     * @see #DATE
+     */
+    public final static int DAY_OF_MONTH = 5;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the day
+     * number within the current year.  The first day of the year has value 1.
+     */
+    public final static int DAY_OF_YEAR = 6;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the day
+     * of the week.  This field takes values <code>SUNDAY</code>,
+     * <code>MONDAY</code>, <code>TUESDAY</code>, <code>WEDNESDAY</code>,
+     * <code>THURSDAY</code>, <code>FRIDAY</code>, and <code>SATURDAY</code>.
+     * @see #SUNDAY
+     * @see #MONDAY
+     * @see #TUESDAY
+     * @see #WEDNESDAY
+     * @see #THURSDAY
+     * @see #FRIDAY
+     * @see #SATURDAY
+     */
+    public final static int DAY_OF_WEEK = 7;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * ordinal number of the day of the week within the current month. Together
+     * with the <code>DAY_OF_WEEK</code> field, this uniquely specifies a day
+     * within a month.  Unlike <code>WEEK_OF_MONTH</code> and
+     * <code>WEEK_OF_YEAR</code>, this field's value does <em>not</em> depend on
+     * <code>getFirstDayOfWeek()</code> or
+     * <code>getMinimalDaysInFirstWeek()</code>.  <code>DAY_OF_MONTH 1</code>
+     * through <code>7</code> always correspond to <code>DAY_OF_WEEK_IN_MONTH
+     * 1</code>; <code>8</code> through <code>15</code> correspond to
+     * <code>DAY_OF_WEEK_IN_MONTH 2</code>, and so on.
+     * <code>DAY_OF_WEEK_IN_MONTH 0</code> indicates the week before
+     * <code>DAY_OF_WEEK_IN_MONTH 1</code>.  Negative values count back from the
+     * end of the month, so the last Sunday of a month is specified as
+     * <code>DAY_OF_WEEK = SUNDAY, DAY_OF_WEEK_IN_MONTH = -1</code>.  Because
+     * negative values count backward they will usually be aligned differently
+     * within the month than positive values.  For example, if a month has 31
+     * days, <code>DAY_OF_WEEK_IN_MONTH -1</code> will overlap
+     * <code>DAY_OF_WEEK_IN_MONTH 5</code> and the end of <code>4</code>.
+     * @see #DAY_OF_WEEK
+     * @see #WEEK_OF_MONTH
+     */
+    public final static int DAY_OF_WEEK_IN_MONTH = 8;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating
+     * whether the <code>HOUR</code> is before or after noon.
+     * E.g., at 10:04:15.250 PM the <code>AM_PM</code> is <code>PM</code>.
+     * @see #AM
+     * @see #PM
+     * @see #HOUR
+     */
+    public final static int AM_PM = 9;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * hour of the morning or afternoon. <code>HOUR</code> is used for the 12-hour
+     * clock.
+     * E.g., at 10:04:15.250 PM the <code>HOUR</code> is 10.
+     * @see #AM_PM
+     * @see #HOUR_OF_DAY
+     */
+    public final static int HOUR = 10;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * hour of the day. <code>HOUR_OF_DAY</code> is used for the 24-hour clock.
+     * E.g., at 10:04:15.250 PM the <code>HOUR_OF_DAY</code> is 22.
+     * @see #HOUR
+     */
+    public final static int HOUR_OF_DAY = 11;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * minute within the hour.
+     * E.g., at 10:04:15.250 PM the <code>MINUTE</code> is 4.
+     */
+    public final static int MINUTE = 12;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * second within the minute.
+     * E.g., at 10:04:15.250 PM the <code>SECOND</code> is 15.
+     */
+    public final static int SECOND = 13;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * millisecond within the second.
+     * E.g., at 10:04:15.250 PM the <code>MILLISECOND</code> is 250.
+     */
+    public final static int MILLISECOND = 14;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * raw offset from GMT in milliseconds.
+     */
+    public final static int ZONE_OFFSET = 15;
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * daylight savings offset in milliseconds.
+     */
+    public final static int DST_OFFSET = 16;
+
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the extended year corresponding to the
+     * <code>WEEK_OF_YEAR</code> field.  This may be one greater or less
+     * than the value of <code>EXTENDED_YEAR</code>.
+     */
+    public static final int YEAR_WOY = 17;
+
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the localized day of week.  This will be a value from 1
+     * to 7 inclusive, with 1 being the localized first day of the week.
+     */
+    public static final int DOW_LOCAL = 18;
+
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the extended year.  This is a single number designating
+     * the year of this calendar system, encompassing all supra-year
+     * fields.  For example, for the Julian calendar system, year numbers
+     * are positive, with an era of BCE or CE.  An extended year value for
+     * the Julian calendar system assigns positive values to CE years and
+     * negative values to BCE years, with 1 BCE being year 0.
+     */
+    public static final int EXTENDED_YEAR = 19;
+
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the modified Julian day number.  This is different from
+     * the conventional Julian day number in two regards.  First, it
+     * demarcates days at local zone midnight, rather than noon GMT.
+     * Second, it is a local number; that is, it depends on the local time
+     * zone.  It can be thought of as a single number that encompasses all
+     * the date-related fields.
+     */
+    public static final int JULIAN_DAY = 20;
+
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the milliseconds in the day.  This ranges from 0 to
+     * 23:59:59.999 (regardless of DST).  This field behaves
+     * <em>exactly</em> like a composite of all time-related fields, not
+     * including the zone fields.  As such, it also reflects
+     * discontinuities of those fields on DST transition days.  On a day of
+     * DST onset, it will jump forward.  On a day of DST cessation, it will
+     * jump backward.  This reflects the fact that is must be combined with
+     * the DST_OFFSET field to obtain a unique local time value.
+     */
+    public static final int MILLISECONDS_IN_DAY = 21;
+    
+    /**
+     * The number of fields defined by this class.  Subclasses may define
+     * addition fields starting with this number.
+     */
+    protected static final int BASE_FIELD_COUNT = 22;
+
+    /**
+     * The maximum number of fields possible.  Subclasses must not define
+     * more total fields than this number.
+     */
+    protected static final int MAX_FIELD_COUNT = 32;
+
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Sunday.
+     */
+    public final static int SUNDAY = 1;
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Monday.
+     */
+    public final static int MONDAY = 2;
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Tuesday.
+     */
+    public final static int TUESDAY = 3;
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Wednesday.
+     */
+    public final static int WEDNESDAY = 4;
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Thursday.
+     */
+    public final static int THURSDAY = 5;
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Friday.
+     */
+    public final static int FRIDAY = 6;
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Saturday.
+     */
+    public final static int SATURDAY = 7;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * first month of the year.
+     */
+    public final static int JANUARY = 0;
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * second month of the year.
+     */
+    public final static int FEBRUARY = 1;
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * third month of the year.
+     */
+    public final static int MARCH = 2;
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * fourth month of the year.
+     */
+    public final static int APRIL = 3;
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * fifth month of the year.
+     */
+    public final static int MAY = 4;
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * sixth month of the year.
+     */
+    public final static int JUNE = 5;
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * seventh month of the year.
+     */
+    public final static int JULY = 6;
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * eighth month of the year.
+     */
+    public final static int AUGUST = 7;
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * ninth month of the year.
+     */
+    public final static int SEPTEMBER = 8;
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * tenth month of the year.
+     */
+    public final static int OCTOBER = 9;
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * eleventh month of the year.
+     */
+    public final static int NOVEMBER = 10;
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * twelfth month of the year.
+     */
+    public final static int DECEMBER = 11;
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * thirteenth month of the year. Although <code>GregorianCalendar</code>
+     * does not use this value, lunar calendars do.
+     */
+    public final static int UNDECIMBER = 12;
+
+    /**
+     * Value of the <code>AM_PM</code> field indicating the
+     * period of the day from midnight to just before noon.
+     */
+    public final static int AM = 0;
+    /**
+     * Value of the <code>AM_PM</code> field indicating the
+     * period of the day from noon to just before midnight.
+     */
+    public final static int PM = 1;
+
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * weekday.
+     * @see #WEEKEND
+     * @see #WEEKEND_ONSET
+     * @see #WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     */
+    public static final int WEEKDAY = 0;
+
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * weekend day.
+     * @see #WEEKDAY
+     * @see #WEEKEND_ONSET
+     * @see #WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     */
+    public static final int WEEKEND = 1;
+
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * day that starts as a weekday and transitions to the weekend.
+     * Call getWeekendTransition() to get the point of transition.
+     * @see #WEEKDAY
+     * @see #WEEKEND
+     * @see #WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     */
+    public static final int WEEKEND_ONSET = 2;
+
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * day that starts as the weekend and transitions to a weekday.
+     * Call getWeekendTransition() to get the point of transition.
+     * @see #WEEKDAY
+     * @see #WEEKEND
+     * @see #WEEKEND_ONSET
+     * @see #getDayOfWeekType
+     */
+    public static final int WEEKEND_CEASE = 3;
+
+    /**
+     * The number of milliseconds in one second.
+     */
+    protected static final int  ONE_SECOND = 1000;
+
+    /**
+     * The number of milliseconds in one minute.
+     */
+    protected static final int  ONE_MINUTE = 60*ONE_SECOND;
+
+    /**
+     * The number of milliseconds in one hour.
+     */
+    protected static final int  ONE_HOUR   = 60*ONE_MINUTE;
+
+    /**
+     * The number of milliseconds in one day.  Although ONE_DAY and
+     * ONE_WEEK can fit into ints, they must be longs in order to prevent
+     * arithmetic overflow when performing (bug 4173516).
+     */
+    protected static final long ONE_DAY    = 24*ONE_HOUR;
+
+    /**
+     * The number of milliseconds in one week.  Although ONE_DAY and
+     * ONE_WEEK can fit into ints, they must be longs in order to prevent
+     * arithmetic overflow when performing (bug 4173516).
+     */
+    protected static final long ONE_WEEK   = 7*ONE_DAY;
+
+    /**
+     * The Julian day of the Gregorian epoch, that is, January 1, 1 on the
+     * Gregorian calendar.
+     */
+    protected static final int JAN_1_1_JULIAN_DAY = 1721426;
+
+    /**
+     * The Julian day of the epoch, that is, January 1, 1970 on the
+     * Gregorian calendar.
+     */
+    protected static final int EPOCH_JULIAN_DAY   = 2440588;
+
+    /**
+     * The minimum supported Julian day.  This value is equivalent to
+     * <code>MIN_MILLIS</code> and <code>MIN_DATE</code>.
+     * @see #JULIAN_DAY
+     */
+    protected static final int MIN_JULIAN = -0x7F000000;
+
+    /**
+     * The minimum supported epoch milliseconds.  This value is equivalent
+     * to <code>MIN_JULIAN</code> and <code>MIN_DATE</code>.
+     */
+    protected static final long MIN_MILLIS = -184303902528000000L;
+    // Get around bug in jikes 1.12 for now.  Later, use:
+    //protected static final long MIN_MILLIS = (MIN_JULIAN - EPOCH_JULIAN_DAY) * ONE_DAY;
+
+    /**
+     * The minimum supported <code>Date</code>.  This value is equivalent
+     * to <code>MIN_JULIAN</code> and <code>MIN_MILLIS</code>.
+     */
+    protected static final Date MIN_DATE = new Date(MIN_MILLIS);
+
+    /**
+     * The maximum supported Julian day.  This value is equivalent to
+     * <code>MAX_MILLIS</code> and <code>MAX_DATE</code>.
+     * @see #JULIAN_DAY
+     */
+    protected static final int MAX_JULIAN = +0x7F000000;
+
+    /**
+     * The maximum supported epoch milliseconds.  This value is equivalent
+     * to <code>MAX_JULIAN</code> and <code>MAX_DATE</code>.
+     */
+    protected static final long MAX_MILLIS = (MAX_JULIAN - EPOCH_JULIAN_DAY) * ONE_DAY;
+
+    /**
+     * The maximum supported <code>Date</code>.  This value is equivalent
+     * to <code>MAX_JULIAN</code> and <code>MAX_MILLIS</code>.
+     */
+    protected static final Date MAX_DATE = new Date(MAX_MILLIS);
+
+    // Internal notes:
+    // Calendar contains two kinds of time representations: current "time" in
+    // milliseconds, and a set of time "fields" representing the current time.
+    // The two representations are usually in sync, but can get out of sync
+    // as follows.
+    // 1. Initially, no fields are set, and the time is invalid.
+    // 2. If the time is set, all fields are computed and in sync.
+    // 3. If a single field is set, the time is invalid.
+    // Recomputation of the time and fields happens when the object needs
+    // to return a result to the user, or use a result for a computation.
+
+    /**
+     * The field values for the currently set time for this calendar.
+     * This is an array of at least <code>BASE_FIELD_COUNT</code> integers.
+     * @see #handleCreateFields
+     * @serial
+     */
+    private transient int           fields[];
+
+    /**
+     * Pseudo-time-stamps which specify when each field was set. There
+     * are two special values, UNSET and INTERNALLY_SET. Values from
+     * MINIMUM_USER_SET to Integer.MAX_VALUE are legal user set values.
+     */
+    private transient int           stamp[];
+
+    /**
+     * The currently set time for this calendar, expressed in milliseconds after
+     * January 1, 1970, 0:00:00 GMT.
+     * @see <tt>isTimeSet</tt>
+     * @serial
+     */
+    private long          time;
+
+    /**
+     * True if then the value of <code>time</code> is valid.
+     * The time is made invalid by a change to an item of <code>field[]</code>.
+     * @see #time
+     * @serial
+     */
+    private transient boolean       isTimeSet;
+
+    /**
+     * True if <code>fields[]</code> are in sync with the currently set time.
+     * If false, then the next attempt to get the value of a field will
+     * force a recomputation of all fields from the current value of
+     * <code>time</code>.
+     * @serial
+     */
+    private transient boolean       areFieldsSet;
+
+    /**
+     * True if all fields have been set.  This is only false in a few
+     * situations: In a newly created, partially constructed object.  After
+     * a call to clear().  In an object just read from a stream using
+     * readObject().  Once computeFields() has been called this is set to
+     * true and stays true until one of the above situations recurs.
+     * @serial
+     */
+    private transient boolean       areAllFieldsSet;
+
+    /**
+     * True if this calendar allows out-of-range field values during computation
+     * of <code>time</code> from <code>fields[]</code>.
+     * @see #setLenient
+     * @serial
+     */
+    private boolean         lenient = true;
+
+    /**
+     * The <code>TimeZone</code> used by this calendar. </code>Calendar</code>
+     * uses the time zone data to translate between locale and GMT time.
+     * @serial
+     */
+    private TimeZone        zone;
+
+    /**
+     * The first day of the week, with possible values <code>SUNDAY</code>,
+     * <code>MONDAY</code>, etc.  This is a locale-dependent value.
+     * @serial
+     */
+    private int             firstDayOfWeek;
+
+    /**
+     * The number of days required for the first week in a month or year,
+     * with possible values from 1 to 7.  This is a locale-dependent value.
+     * @serial
+     */
+    private int             minimalDaysInFirstWeek;
+
+    /**
+     * First day of the weekend in this calendar's locale.  Must be in
+     * the range SUNDAY...SATURDAY (1..7).  The weekend starts at
+     * weekendOnsetMillis milliseconds after midnight on that day of
+     * the week.  This value is taken from locale resource data.
+     */
+    private int weekendOnset;
+
+    /**
+     * Milliseconds after midnight at which the weekend starts on the
+     * day of the week weekendOnset.  Times that are greater than or
+     * equal to weekendOnsetMillis are considered part of the weekend.
+     * Must be in the range 0..24*60*60*1000-1.  This value is taken
+     * from locale resource data.
+     */
+    private int weekendOnsetMillis;
+
+    /**
+     * Day of the week when the weekend stops in this calendar's
+     * locale.  Must be in the range SUNDAY...SATURDAY (1..7).  The
+     * weekend stops at weekendCeaseMillis milliseconds after midnight
+     * on that day of the week.  This value is taken from locale
+     * resource data.
+     */
+    private int weekendCease;
+
+    /**
+     * Milliseconds after midnight at which the weekend stops on the
+     * day of the week weekendCease.  Times that are greater than or
+     * equal to weekendCeaseMillis are considered not to be the
+     * weekend.  Must be in the range 0..24*60*60*1000-1.  This value
+     * is taken from locale resource data.
+     */
+    private int weekendCeaseMillis;
+
+    /**
+     * Cache to hold the firstDayOfWeek and minimalDaysInFirstWeek
+     * of a Locale.
+     */
+    private static Hashtable cachedLocaleData = new Hashtable(3);
+
+    /**
+     * Value of the time stamp <code>stamp[]</code> indicating that
+     * a field has not been set since the last call to <code>clear()</code>.
+     * @see #INTERNALLY_SET
+     * @see #MINIMUM_USER_STAMP
+     */
+    protected static final int UNSET = 0;
+
+    /**
+     * Value of the time stamp <code>stamp[]</code> indicating that a field
+     * has been set via computations from the time or from other fields.
+     * @see #UNSET
+     * @see #MINIMUM_USER_STAMP
+     */
+    protected static final int INTERNALLY_SET = 1;
+
+    /**
+     * If the time stamp <code>stamp[]</code> has a value greater than or
+     * equal to <code>MINIMUM_USER_SET</code> then it has been set by the
+     * user via a call to <code>set()</code>.
+     * @see #UNSET
+     * @see #INTERNALLY_SET
+     */
+    protected static final int MINIMUM_USER_STAMP = 2;
+
+    /**
+     * The next available value for <code>stamp[]</code>, an internal array.
+     * This actually should not be written out to the stream, and will probably
+     * be removed from the stream in the near future.  In the meantime,
+     * a value of <code>MINIMUM_USER_STAMP</code> should be used.
+     * @serial
+     */
+    private transient int             nextStamp = MINIMUM_USER_STAMP;
+
+    // the internal serial version which says which version was written
+    // - 0 (default) for version up to JDK 1.1.5
+    // - 1 for version from JDK 1.1.6, which writes a correct 'time' value
+    //     as well as compatible values for other fields.  This is a
+    //     transitional format.
+    // - 2 (not implemented yet) a future version, in which fields[],
+    //     areFieldsSet, and isTimeSet become transient, and isSet[] is
+    //     removed. In JDK 1.1.6 we write a format compatible with version 2.
+    // static final int        currentSerialVersion = 1;
+    
+    /**
+     * The version of the serialized data on the stream.  Possible values:
+     * <dl>
+     * <dt><b>0</b> or not present on stream</dt>
+     * <dd>
+     * JDK 1.1.5 or earlier.
+     * </dd>
+     * <dt><b>1</b></dt>
+     * <dd>
+     * JDK 1.1.6 or later.  Writes a correct 'time' value
+     * as well as compatible values for other fields.  This is a
+     * transitional format.
+     * </dd>
+     * </dl>
+     * When streaming out this class, the most recent format
+     * and the highest allowable <code>serialVersionOnStream</code>
+     * is written.
+     * @serial
+     * @since JDK1.1.6
+     */
+    // private int             serialVersionOnStream = currentSerialVersion;
+
+    // Proclaim serialization compatibility with JDK 1.1
+    // static final long       serialVersionUID = -1807547505821590642L;
+
+    /**
+     * Bitmask for internalSet() defining which fields may legally be set
+     * by subclasses.  Any attempt to set a field not in this bitmask
+     * results in an exception, because such fields must be set by the base
+     * class.
+     */
+    private transient int internalSetMask;
+
+    /**
+     * The Gregorian year, as computed by computeGregorianFields() and
+     * returned by getGregorianYear().
+     */
+    private transient int gregorianYear;
+
+    /**
+     * The Gregorian month, as computed by computeGregorianFields() and
+     * returned by getGregorianMonth().
+     */
+    private transient int gregorianMonth;
+
+    /**
+     * The Gregorian day of the year, as computed by
+     * computeGregorianFields() and returned by getGregorianDayOfYear().
+     */
+    private transient int gregorianDayOfYear;
+
+    /**
+     * The Gregorian day of the month, as computed by
+     * computeGregorianFields() and returned by getGregorianDayOfMonth().
+     */
+    private transient int gregorianDayOfMonth;
+
+    /**
+     * Constructs a Calendar with the default time zone
+     * and locale.
+     * @see     TimeZone#getDefault
+     */
+    protected Calendar()
+    {
+        this(TimeZone.getDefault(), Locale.getDefault());
+    }
+
+    /**
+     * Constructs a calendar with the specified time zone and locale.
+     * @param zone the time zone to use
+     * @param aLocale the locale for the week data
+     */
+    protected Calendar(TimeZone zone, Locale aLocale)
+    {
+        this.zone = zone;
+        setWeekCountData(aLocale);
+        setWeekendData(aLocale);
+        initInternal();
+    }
+
+    private void initInternal()
+    {
+        // Allocate fields through the framework method.  Subclasses
+        // may override this to define additional fields.
+        fields = handleCreateFields();
+        if (fields == null || fields.length < BASE_FIELD_COUNT ||
+            fields.length > MAX_FIELD_COUNT) {
+            throw new InternalError("Invalid fields[]");
+        }
+        stamp = new int[fields.length];
+        int mask = (1 << ERA) |
+            (1 << YEAR) |
+            (1 << MONTH) |
+            (1 << DAY_OF_MONTH) |
+            (1 << DAY_OF_YEAR) |
+            (1 << EXTENDED_YEAR);
+        for (int i=BASE_FIELD_COUNT; i<fields.length; ++i) {
+            mask |= (1 << i);
+        }
+        internalSetMask = mask;
+    }
+
+    /**
+     * Gets a calendar using the default time zone and locale.
+     * @return a Calendar.
+     */
+    public static synchronized Calendar getInstance()
+    {
+        return new GregorianCalendar();
+    }
+
+    /**
+     * Gets a calendar using the specified time zone and default locale.
+     * @param zone the time zone to use
+     * @return a Calendar.
+     */
+    public static synchronized Calendar getInstance(TimeZone zone)
+    {
+        return new GregorianCalendar(zone, Locale.getDefault());
+    }
+
+    /**
+     * Gets a calendar using the default time zone and specified locale.
+     * @param aLocale the locale for the week data
+     * @return a Calendar.
+     */
+    public static synchronized Calendar getInstance(Locale aLocale)
+    {
+        return new GregorianCalendar(TimeZone.getDefault(), aLocale);
+    }
+
+    /**
+     * Gets a calendar with the specified time zone and locale.
+     * @param zone the time zone to use
+     * @param aLocale the locale for the week data
+     * @return a Calendar.
+     */
+    public static synchronized Calendar getInstance(TimeZone zone,
+                                                    Locale aLocale)
+    {
+        return new GregorianCalendar(zone, aLocale);
+    }
+
+    /**
+     * Gets the list of locales for which Calendars are installed.
+     * @return the list of locales for which Calendars are installed.
+     */
+    public static synchronized Locale[] getAvailableLocales()
+    {
+        return DateFormat.getAvailableLocales();
+    }
+
+    /**
+     * Gets this Calendar's current time.
+     * @return the current time.
+     */
+    public final Date getTime() {
+        return new Date( getTimeInMillis() );
+    }
+
+    /**
+     * Sets this Calendar's current time with the given Date.
+     * <p>
+     * Note: Calling <code>setTime()</code> with
+     * <code>Date(Long.MAX_VALUE)</code> or <code>Date(Long.MIN_VALUE)</code>
+     * may yield incorrect field values from <code>get()</code>.
+     * @param date the given Date.  */
+    public final void setTime(Date date) {
+        setTimeInMillis( date.getTime() );
+    }
+
+    /**
+     * Gets this Calendar's current time as a long.
+     * @return the current time as UTC milliseconds from the epoch.
+     */
+    public long getTimeInMillis() {
+        if (!isTimeSet) updateTime();
+        return time;
+    }
+
+    /**
+     * Sets this Calendar's current time from the given long value.
+     * @param date the new time in UTC milliseconds from the epoch.
+     */
+    public void setTimeInMillis( long millis ) {
+        if (millis > MAX_MILLIS) {
+            millis = MAX_MILLIS;
+        } else if (millis < MIN_MILLIS) {
+            millis = MIN_MILLIS;
+        }
+        time = millis;
+        isTimeSet = true;
+        computeFields();
+        areFieldsSet = true;
+        areAllFieldsSet = true;
+    }
+
+    /**
+     * Gets the value for a given time field.
+     * @param field the given time field.
+     * @return the value for the given time field.
+     */
+    public final int get(int field)
+    {
+        complete();
+        return fields[field];
+    }
+
+    /**
+     * Gets the value for a given time field.  This is an internal method
+     * for subclasses that does <em>not</em> trigger any calculations.
+     * @param field the given time field.
+     * @return the value for the given time field.
+     */
+    protected final int internalGet(int field)
+    {
+        return fields[field];
+    }
+ 
+    /**
+     * Get the value for a given time field, or return the given default
+     * value if the field is not set.  This is an internal method for
+     * subclasses that does <em>not</em> trigger any calculations.
+     * @param field the given time field.
+     * @param defaultValue value to return if field is not set
+     * @return the value for the given time field of defaultValue if the
+     * field is unset
+     */
+    protected final int internalGet(int field, int defaultValue) {
+        return (stamp[field] > UNSET) ? fields[field] : defaultValue;
+    }
+
+    /**
+     * Sets the time field with the given value.
+     * @param field the given time field.
+     * @param value the value to be set for the given time field.
+     */
+    public final void set(int field, int value)
+    {
+        isTimeSet = false;
+        fields[field] = value;
+        stamp[field] = nextStamp++;
+        areFieldsSet = false;
+    }
+
+    /**
+     * Sets the values for the fields year, month, and date.
+     * Previous values of other fields are retained.  If this is not desired,
+     * call <code>clear</code> first.
+     * @param year the value used to set the YEAR time field.
+     * @param month the value used to set the MONTH time field.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field.
+     */
+    public final void set(int year, int month, int date)
+    {
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+    }
+
+    /**
+     * Sets the values for the fields year, month, date, hour, and minute.
+     * Previous values of other fields are retained.  If this is not desired,
+     * call <code>clear</code> first.
+     * @param year the value used to set the YEAR time field.
+     * @param month the value used to set the MONTH time field.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field.
+     * @param hour the value used to set the HOUR_OF_DAY time field.
+     * @param minute the value used to set the MINUTE time field.
+     */
+    public final void set(int year, int month, int date, int hour, int minute)
+    {
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+        set(HOUR_OF_DAY, hour);
+        set(MINUTE, minute);
+    }
+
+    /**
+     * Sets the values for the fields year, month, date, hour, minute, and second.
+     * Previous values of other fields are retained.  If this is not desired,
+     * call <code>clear</code> first.
+     * @param year the value used to set the YEAR time field.
+     * @param month the value used to set the MONTH time field.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field.
+     * @param hour the value used to set the HOUR_OF_DAY time field.
+     * @param minute the value used to set the MINUTE time field.
+     * @param second the value used to set the SECOND time field.
+     */
+    public final void set(int year, int month, int date, int hour, int minute,
+                          int second)
+    {
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+        set(HOUR_OF_DAY, hour);
+        set(MINUTE, minute);
+        set(SECOND, second);
+    }
+
+    /**
+     * Clears the values of all the time fields.
+     */
+    public final void clear()
+    {
+        for (int i=0; i<fields.length; ++i) {
+            fields[i] = stamp[i] = 0; // UNSET == 0
+        }
+        areFieldsSet = false;
+        areAllFieldsSet = false;
+        isTimeSet = false;
+    }
+
+    /**
+     * Clears the value in the given time field.
+     * @param field the time field to be cleared.
+     */
+    public final void clear(int field)
+    {
+        fields[field] = 0;
+        stamp[field] = UNSET;
+        areFieldsSet = false;
+        areAllFieldsSet = false;
+        isTimeSet = false;
+    }
+
+    /**
+     * Determines if the given time field has a value set.
+     * @return true if the given time field has a value set; false otherwise.
+     */
+    public final boolean isSet(int field)
+    {
+        return stamp[field] != UNSET;
+    }
+
+    /**
+     * Fills in any unset fields in the time field list.
+     */
+    protected void complete()
+    {
+        if (!isTimeSet) updateTime();
+        if (!areFieldsSet) {
+            computeFields(); // fills in unset fields
+            areFieldsSet = true;
+            areAllFieldsSet = true;
+        }
+    }
+
+    /**
+     * Compares this calendar to the specified object.
+     * The result is <code>true</code> if and only if the argument is
+     * not <code>null</code> and is a <code>Calendar</code> object that
+     * represents the same calendar as this object.
+     * @param obj the object to compare with.
+     * @return <code>true</code> if the objects are the same;
+     * <code>false</code> otherwise.
+     */
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (this.getClass() != obj.getClass()) {
+            return false;
+        }
+
+        Calendar that = (Calendar) obj;
+
+        return
+            getTimeInMillis() == that.getTime().getTime() &&
+            isLenient() == that.isLenient() &&
+            getFirstDayOfWeek() == that.getFirstDayOfWeek() &&
+            getMinimalDaysInFirstWeek() == that.getMinimalDaysInFirstWeek() &&
+            getTimeZone().equals(that.getTimeZone());
+    }
+
+    /**
+     * Returns a hash code for this calendar.
+     * @return a hash code value for this object. 
+     * @since 1.2
+     */
+    public int hashCode() {
+        /* Don't include the time because (a) we don't want the hash value to
+         * move around just because a calendar is set to different times, and
+         * (b) we don't want to trigger a time computation just to get a hash.
+         * Note that it is not necessary for unequal objects to always have
+         * unequal hashes, but equal objects must have equal hashes.  */
+        return (lenient ? 1 : 0)
+            | (firstDayOfWeek << 1)
+            | (minimalDaysInFirstWeek << 4)
+            | (zone.hashCode() << 7);
+    }
+
+    /**
+     * Return the difference in milliseconds between the moment this
+     * calendar is set to and the moment the given calendar or Date object
+     * is set to.
+     */
+    private long compare(Object that) {
+        long thatMs;
+        if (that instanceof Calendar) {
+            thatMs = ((Calendar)that).getTimeInMillis();
+        } else if (that instanceof Date) {
+            thatMs = ((Date)that).getTime();
+        } else {
+            throw new IllegalArgumentException(that + "is not a Calendar or Date");
+        }
+        return getTimeInMillis() - thatMs;
+    }
+
+    /**
+     * Compares the time field records.
+     * Equivalent to comparing result of conversion to UTC.
+     * @param when the Calendar to be compared with this Calendar.
+     * @return true if the current time of this Calendar is before
+     * the time of Calendar when; false otherwise.
+     */
+    public boolean before(Object when) {
+        return compare(when) < 0;
+    }
+
+    /**
+     * Compares the time field records.
+     * Equivalent to comparing result of conversion to UTC.
+     * @param when the Calendar to be compared with this Calendar.
+     * @return true if the current time of this Calendar is after
+     * the time of Calendar when; false otherwise.
+     */
+    public boolean after(Object when) {
+        return compare(when) > 0;
+    }
+
+    /**
+     * Return the maximum value that this field could have, given the
+     * current date.  For example, with the Gregorian date February 3, 1997
+     * and the {@link #DAY_OF_MONTH DAY_OF_MONTH} field, the actual maximum
+     * is 28; for February 3, 1996 it is 29.
+     *
+     * <p>The actual maximum computation ignores smaller fields and the
+     * current value of like-sized fields.  For example, the actual maximum
+     * of the DAY_OF_YEAR or MONTH depends only on the year and supra-year
+     * fields.  The actual maximum of the DAY_OF_MONTH depends, in
+     * addition, on the MONTH field and any other fields at that
+     * granularity (such as ChineseCalendar.IS_LEAP_MONTH).  The
+     * DAY_OF_WEEK_IN_MONTH field does not depend on the current
+     * DAY_OF_WEEK; it returns the maximum for any day of week in the
+     * current month.  Likewise for the WEEK_OF_MONTH and WEEK_OF_YEAR
+     * fields.
+     * 
+     * @param field the field whose maximum is desired
+     * @return the maximum of the given field for the current date of this calendar
+     * @see #getMaximum
+     * @see #getLeastMaximum
+     */
+    public int getActualMaximum(int field) {
+        int result;
+        
+        switch (field) {
+        case DAY_OF_MONTH:
+            {
+                Calendar cal = (Calendar) clone();
+                cal.prepareGetActual(field, false);
+                result = handleGetMonthLength(cal.get(EXTENDED_YEAR), cal.get(MONTH));
+            }
+            break;
+
+        case DAY_OF_YEAR:
+            {
+                Calendar cal = (Calendar) clone();
+                cal.prepareGetActual(field, false);
+                result = handleGetYearLength(cal.get(EXTENDED_YEAR));
+            }
+            break;
+
+        case DAY_OF_WEEK:
+        case AM_PM:
+        case HOUR:
+        case HOUR_OF_DAY:
+        case MINUTE:
+        case SECOND:
+        case MILLISECOND:
+        case ZONE_OFFSET:
+        case DST_OFFSET:
+        case DOW_LOCAL:
+        case JULIAN_DAY:
+        case MILLISECONDS_IN_DAY:
+            // These fields all have fixed minima/maxima
+            result = getMaximum(field);
+            break;
+
+        default:
+            // For all other fields, do it the hard way....
+            result = getActualHelper(field, getLeastMaximum(field), getMaximum(field));
+            break;
+        }
+        return result;
+    }
+    
+    /**
+     * Return the minimum value that this field could have, given the current date.
+     * For most fields, this is the same as {@link #getMinimum getMinimum}
+     * and {@link #getGreatestMinimum getGreatestMinimum}.  However, some fields,
+     * especially those related to week number, are more complicated.
+     * <p>
+     * For example, assume {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek}
+     * returns 4 and {@link #getFirstDayOfWeek getFirstDayOfWeek} returns SUNDAY.
+     * If the first day of the month is Sunday, Monday, Tuesday, or Wednesday
+     * there will be four or more days in the first week, so it will be week number 1,
+     * and <code>getActualMinimum(WEEK_OF_MONTH)</code> will return 1.  However,
+     * if the first of the month is a Thursday, Friday, or Saturday, there are
+     * <em>not</em> four days in that week, so it is week number 0, and 
+     * <code>getActualMinimum(WEEK_OF_MONTH)</code> will return 0.
+     * <p>
+     * @param field the field whose actual minimum value is desired.
+     * @return the minimum of the given field for the current date of this calendar
+     *
+     * @see #getMinimum
+     * @see #getGreatestMinimum
+     */
+    public int getActualMinimum(int field) {
+        int result;
+        
+        switch (field) {
+        case DAY_OF_WEEK:
+        case AM_PM:
+        case HOUR:
+        case HOUR_OF_DAY:
+        case MINUTE:
+        case SECOND:
+        case MILLISECOND:
+        case ZONE_OFFSET:
+        case DST_OFFSET:
+        case DOW_LOCAL:
+        case JULIAN_DAY:
+        case MILLISECONDS_IN_DAY:
+            // These fields all have fixed minima/maxima
+            result = getMinimum(field);
+            break;
+            
+        default:
+            // For all other fields, do it the hard way....
+            result = getActualHelper(field, getGreatestMinimum(field), getMinimum(field));
+            break;
+        }
+        return result;
+    }
+
+    /**
+     * Prepare this calendar for computing the actual minimum or maximum.
+     * This method modifies this calendar's fields; it is called on a
+     * temporary calendar.
+     *
+     * <p>Rationale: The semantics of getActualXxx() is to return the
+     * maximum or minimum value that the given field can take, taking into
+     * account other relevant fields.  In general these other fields are
+     * larger fields.  For example, when computing the actual maximum
+     * DAY_OF_MONTH, the current value of DAY_OF_MONTH itself is ignored,
+     * as is the value of any field smaller.
+     *
+     * <p>The time fields all have fixed minima and maxima, so we don't
+     * need to worry about them.  This also lets us set the
+     * MILLISECONDS_IN_DAY to zero to erase any effects the time fields
+     * might have when computing date fields.
+     *
+     * <p>DAY_OF_WEEK is adjusted specially for the WEEK_OF_MONTH and
+     * WEEK_OF_YEAR fields to ensure that they are computed correctly.
+     */
+    protected void prepareGetActual(int field, boolean isMinimum) {
+        set(MILLISECONDS_IN_DAY, 0);
+
+        switch (field) {
+        case YEAR:
+        case YEAR_WOY:
+        case EXTENDED_YEAR:
+            set(DAY_OF_YEAR, getGreatestMinimum(DAY_OF_YEAR));
+            break;
+                
+        case MONTH:
+            set(DAY_OF_MONTH, getGreatestMinimum(DAY_OF_MONTH));
+            break;
+
+        case DAY_OF_WEEK_IN_MONTH:
+            // For dowim, the maximum occurs for the DOW of the first of the
+            // month.
+            set(DAY_OF_MONTH, 1);
+            set(DAY_OF_WEEK, get(DAY_OF_WEEK)); // Make this user set
+            break;
+                
+        case WEEK_OF_MONTH:
+        case WEEK_OF_YEAR:
+            // If we're counting weeks, set the day of the week to either the
+            // first or last localized DOW.  We know the last week of a month
+            // or year will contain the first day of the week, and that the
+            // first week will contain the last DOW.
+            {
+                int dow = firstDayOfWeek;
+                if (isMinimum) {
+                    dow = (dow + 6) % 7; // set to last DOW
+                    if (dow < SUNDAY) {
+                        dow += 7;
+                    }
+                }
+                set(DAY_OF_WEEK, dow);
+            }
+            break;
+        }
+
+        // Do this last to give it the newest time stamp
+        set(field, getGreatestMinimum(field));
+    }
+
+    private int getActualHelper(int field, int startValue, int endValue) {
+
+        if (startValue == endValue) {
+            // if we know that the maximum value is always the same, just return it
+            return startValue;
+        } 
+
+        final int delta = (endValue > startValue) ? 1 : -1;
+
+        // clone the calendar so we don't mess with the real one, and set it to
+        // accept anything for the field values
+        Calendar work = (Calendar) clone();
+        work.setLenient(true);
+        work.prepareGetActual(field, delta < 0);
+        
+        // now try each value from the start to the end one by one until
+        // we get a value that normalizes to another value.  The last value that
+        // normalizes to itself is the actual maximum for the current date
+        int result = startValue;
+        do {
+            work.set(field, startValue);
+            if (work.get(field) != startValue) {
+                break;
+            } else {
+                result = startValue;
+                startValue += delta;
+            }
+        } while (result != endValue);
+
+        return result;
+    }
+    
+    /**
+     * Rolls (up/down) a single unit of time on the given field.  If the
+     * field is rolled past its maximum allowable value, it will "wrap" back
+     * to its minimum and continue rolling. For
+     * example, to roll the current date up by one day, you can call:
+     * <p>
+     * <code>roll({@link #DATE}, true)</code>
+     * <p>
+     * When rolling on the {@link #YEAR} field, it will roll the year
+     * value in the range between 1 and the value returned by calling
+     * {@link #getMaximum getMaximum}({@link #YEAR}).
+     * <p>
+     * When rolling on certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when rolling the <code>MONTH</code> field
+     * for the Gregorian date 1/31/96 upward, the <code>DAY_OF_MONTH</code> field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * <b>Note:</b> Calling <tt>roll(field, true)</tt> N times is <em>not</em>
+     * necessarily equivalent to calling <tt>roll(field, N)</tt>.  For example,
+     * imagine that you start with the date Gregorian date January 31, 1995.  If you call
+     * <tt>roll(Calendar.MONTH, 2)</tt>, the result will be March 31, 1995.
+     * But if you call <tt>roll(Calendar.MONTH, true)</tt>, the result will be
+     * February 28, 1995.  Calling it one more time will give March 28, 1995, which
+     * is usually not the desired result.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * @param field the calendar field to roll.
+     *
+     * @param up    indicates if the value of the specified time field is to be
+     *              rolled up or rolled down. Use <code>true</code> if rolling up,
+     *              <code>false</code> otherwise.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, int)
+     * @see #add
+     */
+    public final void roll(int field, boolean up)
+    {
+        roll(field, up ? +1 : -1);
+    }
+
+    /**
+     * Rolls (up/down) a specified amount time on the given field.  For
+     * example, to roll the current date up by three days, you can call
+     * <code>roll(Calendar.DATE, 3)</code>.  If the
+     * field is rolled past its maximum allowable value, it will "wrap" back
+     * to its minimum and continue rolling.  
+     * For example, calling <code>roll(Calendar.DATE, 10)</code>
+     * on a Gregorian calendar set to 4/25/96 will result in the date 4/5/96.
+     * <p>
+     * When rolling on certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when rolling the {@link #MONTH MONTH} field
+     * for the Gregorian date 1/31/96 by +1, the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * The <code>com.ibm.icu.util.Calendar</code> implementation of this method is able to roll
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.  Subclasses may, of course, add support for
+     * additional fields in their overrides of <code>roll</code>.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * This implementation of <code>roll</code> assumes that the behavior of the
+     * field is continuous between its minimum and maximum, which are found by
+     * calling {@link #getActualMinimum getActualMinimum} and {@link #getActualMaximum getActualMaximum}.
+     * For most such fields, simple addition, subtraction, and modulus operations
+     * are sufficient to perform the roll.  For week-related fields,
+     * the results of {@link #getFirstDayOfWeek getFirstDayOfWeek} and
+     * {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek} are also necessary.
+     * Subclasses can override these two methods if their values differ from the defaults.
+     * <p>
+     * Subclasses that have fields for which the assumption of continuity breaks
+     * down must overide <code>roll</code> to handle those fields specially.
+     * For example, in the Hebrew calendar the month "Adar I"
+     * only occurs in leap years; in other years the calendar jumps from
+     * Shevat (month #4) to Adar (month #6).  The 
+     * {@link HebrewCalendar#roll HebrewCalendar.roll} method takes this into account,
+     * so that rolling the month of Shevat by one gives the proper result (Adar) in a
+     * non-leap year.
+     * <p>
+     * @param field     the calendar field to roll.
+     * @param amount    the amount by which the field should be rolled.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, boolean)
+     * @see #add
+     */
+    public void roll(int field, int amount) {
+
+        if (amount == 0) {
+            return; // Nothing to do
+        }
+
+        complete();
+
+        switch (field) {
+        case DAY_OF_MONTH:
+        case AM_PM:
+        case MINUTE:
+        case SECOND:
+        case MILLISECOND:
+        case MILLISECONDS_IN_DAY:
+            // These are the standard roll instructions.  These work for all
+            // simple cases, that is, cases in which the limits are fixed, such
+            // as the hour, the day of the month, and the era.
+            {
+                int min = getActualMinimum(field);
+                int max = getActualMaximum(field);
+                int gap = max - min + 1;
+
+                int value = internalGet(field) + amount;
+                value = (value - min) % gap;
+                if (value < 0) {
+                    value += gap;
+                }
+                value += min;
+
+                set(field, value);
+                return;
+            }
+
+        case HOUR:
+        case HOUR_OF_DAY:
+            // Rolling the hour is difficult on the ONSET and CEASE days of
+            // daylight savings.  For example, if the change occurs at
+            // 2 AM, we have the following progression:
+            // ONSET: 12 Std -> 1 Std -> 3 Dst -> 4 Dst
+            // CEASE: 12 Dst -> 1 Dst -> 1 Std -> 2 Std
+            // To get around this problem we don't use fields; we manipulate
+            // the time in millis directly.
+            {
+                // Assume min == 0 in calculations below
+                long start = getTimeInMillis();
+                int oldHour = internalGet(field);
+                int max = getMaximum(field);
+                int newHour = (oldHour + amount) % (max + 1);
+                if (newHour < 0) {
+                    newHour += max + 1;
+                }
+                setTimeInMillis(start + ONE_HOUR * (newHour - oldHour));
+                return;
+            }
+
+        case MONTH:
+            // Rolling the month involves both pinning the final value
+            // and adjusting the DAY_OF_MONTH if necessary.  We only adjust the
+            // DAY_OF_MONTH if, after updating the MONTH field, it is illegal.
+            // E.g., <jan31>.roll(MONTH, 1) -> <feb28> or <feb29>.
+            {
+                int max = getActualMaximum(MONTH);
+                int mon = (internalGet(MONTH) + amount) % (max+1);
+                
+                if (mon < 0) {
+                    mon += (max + 1);
+                }
+                set(MONTH, mon);
+                
+                // Keep the day of month in range.  We don't want to spill over
+                // into the next month; e.g., we don't want jan31 + 1 mo -> feb31 ->
+                // mar3.
+                pinField(DAY_OF_MONTH);
+                return;
+            }
+
+        case YEAR:
+        case YEAR_WOY:
+        case EXTENDED_YEAR:
+            // Rolling the year can involve pinning the DAY_OF_MONTH.
+            set(field, internalGet(field) + amount);
+            pinField(MONTH);
+            pinField(DAY_OF_MONTH);
+            return;
+
+        case WEEK_OF_MONTH:
+            {
+                // This is tricky, because during the roll we may have to shift
+                // to a different day of the week.  For example:
+
+                //    s  m  t  w  r  f  s
+                //          1  2  3  4  5
+                //    6  7  8  9 10 11 12
+
+                // When rolling from the 6th or 7th back one week, we go to the
+                // 1st (assuming that the first partial week counts).  The same
+                // thing happens at the end of the month.
+
+                // The other tricky thing is that we have to figure out whether
+                // the first partial week actually counts or not, based on the
+                // minimal first days in the week.  And we have to use the
+                // correct first day of the week to delineate the week
+                // boundaries.
+
+                // Here's our algorithm.  First, we find the real boundaries of
+                // the month.  Then we discard the first partial week if it
+                // doesn't count in this locale.  Then we fill in the ends with
+                // phantom days, so that the first partial week and the last
+                // partial week are full weeks.  We then have a nice square
+                // block of weeks.  We do the usual rolling within this block,
+                // as is done elsewhere in this method.  If we wind up on one of
+                // the phantom days that we added, we recognize this and pin to
+                // the first or the last day of the month.  Easy, eh?
+
+                // Normalize the DAY_OF_WEEK so that 0 is the first day of the week
+                // in this locale.  We have dow in 0..6.
+                int dow = internalGet(DAY_OF_WEEK) - getFirstDayOfWeek();
+                if (dow < 0) dow += 7;
+
+                // Find the day of the week (normalized for locale) for the first
+                // of the month.
+                int fdm = (dow - internalGet(DAY_OF_MONTH) + 1) % 7;
+                if (fdm < 0) fdm += 7;
+
+                // Get the first day of the first full week of the month,
+                // including phantom days, if any.  Figure out if the first week
+                // counts or not; if it counts, then fill in phantom days.  If
+                // not, advance to the first real full week (skip the partial week).
+                int start;
+                if ((7 - fdm) < getMinimalDaysInFirstWeek())
+                    start = 8 - fdm; // Skip the first partial week
+                else
+                    start = 1 - fdm; // This may be zero or negative
+
+                // Get the day of the week (normalized for locale) for the last
+                // day of the month.
+                int monthLen = getActualMaximum(DAY_OF_MONTH);
+                int ldm = (monthLen - internalGet(DAY_OF_MONTH) + dow) % 7;
+                // We know monthLen >= DAY_OF_MONTH so we skip the += 7 step here.
+
+                // Get the limit day for the blocked-off rectangular month; that
+                // is, the day which is one past the last day of the month,
+                // after the month has already been filled in with phantom days
+                // to fill out the last week.  This day has a normalized DOW of 0.
+                int limit = monthLen + 7 - ldm;
+
+                // Now roll between start and (limit - 1).
+                int gap = limit - start;
+                int day_of_month = (internalGet(DAY_OF_MONTH) + amount*7 -
+                                    start) % gap;
+                if (day_of_month < 0) day_of_month += gap;
+                day_of_month += start;
+
+                // Finally, pin to the real start and end of the month.
+                if (day_of_month < 1) day_of_month = 1;
+                if (day_of_month > monthLen) day_of_month = monthLen;
+
+                // Set the DAY_OF_MONTH.  We rely on the fact that this field
+                // takes precedence over everything else (since all other fields
+                // are also set at this point).  If this fact changes (if the
+                // disambiguation algorithm changes) then we will have to unset
+                // the appropriate fields here so that DAY_OF_MONTH is attended
+                // to.
+                set(DAY_OF_MONTH, day_of_month);
+                return;
+            }
+        case WEEK_OF_YEAR:
+            {
+                // This follows the outline of WEEK_OF_MONTH, except it applies
+                // to the whole year.  Please see the comment for WEEK_OF_MONTH
+                // for general notes.
+
+                // Normalize the DAY_OF_WEEK so that 0 is the first day of the week
+                // in this locale.  We have dow in 0..6.
+                int dow = internalGet(DAY_OF_WEEK) - getFirstDayOfWeek();
+                if (dow < 0) dow += 7;
+
+                // Find the day of the week (normalized for locale) for the first
+                // of the year.
+                int fdy = (dow - internalGet(DAY_OF_YEAR) + 1) % 7;
+                if (fdy < 0) fdy += 7;
+
+                // Get the first day of the first full week of the year,
+                // including phantom days, if any.  Figure out if the first week
+                // counts or not; if it counts, then fill in phantom days.  If
+                // not, advance to the first real full week (skip the partial week).
+                int start;
+                if ((7 - fdy) < getMinimalDaysInFirstWeek())
+                    start = 8 - fdy; // Skip the first partial week
+                else
+                    start = 1 - fdy; // This may be zero or negative
+
+                // Get the day of the week (normalized for locale) for the last
+                // day of the year.
+                int yearLen = getActualMaximum(DAY_OF_YEAR);
+                int ldy = (yearLen - internalGet(DAY_OF_YEAR) + dow) % 7;
+                // We know yearLen >= DAY_OF_YEAR so we skip the += 7 step here.
+
+                // Get the limit day for the blocked-off rectangular year; that
+                // is, the day which is one past the last day of the year,
+                // after the year has already been filled in with phantom days
+                // to fill out the last week.  This day has a normalized DOW of 0.
+                int limit = yearLen + 7 - ldy;
+
+                // Now roll between start and (limit - 1).
+                int gap = limit - start;
+                int day_of_year = (internalGet(DAY_OF_YEAR) + amount*7 -
+                                    start) % gap;
+                if (day_of_year < 0) day_of_year += gap;
+                day_of_year += start;
+
+                // Finally, pin to the real start and end of the month.
+                if (day_of_year < 1) day_of_year = 1;
+                if (day_of_year > yearLen) day_of_year = yearLen;
+
+                // Make sure that the year and day of year are attended to by
+                // clearing other fields which would normally take precedence.
+                // If the disambiguation algorithm is changed, this section will
+                // have to be updated as well.
+                set(DAY_OF_YEAR, day_of_year);
+                clear(MONTH);
+                return;
+            }
+        case DAY_OF_YEAR:
+            {
+                // Roll the day of year using millis.  Compute the millis for
+                // the start of the year, and get the length of the year.
+                long delta = amount * ONE_DAY; // Scale up from days to millis
+                long min2 = time - (internalGet(DAY_OF_YEAR) - 1) * ONE_DAY;
+                int yearLength = getActualMaximum(DAY_OF_YEAR);
+                time = (time + delta - min2) % (yearLength*ONE_DAY);
+                if (time < 0) time += yearLength*ONE_DAY;
+                setTimeInMillis(time + min2);
+                return;
+            }
+        case DAY_OF_WEEK:
+        case DOW_LOCAL:
+            {
+                // Roll the day of week using millis.  Compute the millis for
+                // the start of the week, using the first day of week setting.
+                // Restrict the millis to [start, start+7days).
+                long delta = amount * ONE_DAY; // Scale up from days to millis
+                // Compute the number of days before the current day in this
+                // week.  This will be a value 0..6.
+                int leadDays = internalGet(field);
+                leadDays -= (field == DAY_OF_WEEK) ? getFirstDayOfWeek() : 1;
+                if (leadDays < 0) leadDays += 7;
+                long min2 = time - leadDays * ONE_DAY;
+                time = (time + delta - min2) % ONE_WEEK;
+                if (time < 0) time += ONE_WEEK;
+                setTimeInMillis(time + min2);
+                return;
+            }
+        case DAY_OF_WEEK_IN_MONTH:
+            {
+                // Roll the day of week in the month using millis.  Determine
+                // the first day of the week in the month, and then the last,
+                // and then roll within that range.
+                long delta = amount * ONE_WEEK; // Scale up from weeks to millis
+                // Find the number of same days of the week before this one
+                // in this month.
+                int preWeeks = (internalGet(DAY_OF_MONTH) - 1) / 7;
+                // Find the number of same days of the week after this one
+                // in this month.
+                int postWeeks = (getActualMaximum(DAY_OF_MONTH) -
+                                 internalGet(DAY_OF_MONTH)) / 7;
+                // From these compute the min and gap millis for rolling.
+                long min2 = time - preWeeks * ONE_WEEK;
+                long gap2 = ONE_WEEK * (preWeeks + postWeeks + 1); // Must add 1!
+                // Roll within this range
+                time = (time + delta - min2) % gap2;
+                if (time < 0) time += gap2;
+                setTimeInMillis(time + min2);
+                return;
+            }
+        case JULIAN_DAY:
+            set(field, internalGet(field) + amount);
+            return;
+        default:
+            // Other fields cannot be rolled by this method
+            throw new IllegalArgumentException("Calendar.roll(" + fieldName(field) +
+                                               ") not supported");
+        }
+    }
+    
+    /**
+     * Add a signed amount to a specified field, using this calendar's rules.
+     * For example, to add three days to the current date, you can call
+     * <code>add(Calendar.DATE, 3)</code>. 
+     * <p>
+     * When adding to certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when adding one to the {@link #MONTH MONTH} field
+     * for the Gregorian date 1/31/96, the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * The <code>com.ibm.icu.util.Calendar</code> implementation of this method is able to add to
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.  Subclasses may, of course, add support for
+     * additional fields in their overrides of <code>add</code>.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * This implementation of <code>add</code> assumes that the behavior of the
+     * field is continuous between its minimum and maximum, which are found by
+     * calling {@link #getActualMinimum getActualMinimum} and
+     * {@link #getActualMaximum getActualMaximum}.
+     * For such fields, simple arithmetic operations are sufficient to
+     * perform the add.
+     * <p>
+     * Subclasses that have fields for which this assumption of continuity breaks
+     * down must overide <code>add</code> to handle those fields specially.
+     * For example, in the Hebrew calendar the month "Adar I"
+     * only occurs in leap years; in other years the calendar jumps from
+     * Shevat (month #4) to Adar (month #6).  The 
+     * {@link HebrewCalendar#add HebrewCalendar.add} method takes this into account,
+     * so that adding one month
+     * to a date in Shevat gives the proper result (Adar) in a non-leap year.
+     * <p>
+     * @param field     the time field.
+     * @param amount    the amount to add to the field.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, int)
+     */
+    public void add(int field, int amount) {
+
+        if (amount == 0) {
+            return;   // Do nothing!
+        }
+
+        // We handle most fields in the same way.  The algorithm is to add
+        // a computed amount of millis to the current millis.  The only
+        // wrinkle is with DST -- for some fields, like the DAY_OF_MONTH,
+        // we don't want the HOUR to shift due to changes in DST.  If the
+        // result of the add operation is to move from DST to Standard, or
+        // vice versa, we need to adjust by an hour forward or back,
+        // respectively.  For such fields we set keepHourInvariant to true.
+        
+        // We only adjust the DST for fields larger than an hour.  For
+        // fields smaller than an hour, we cannot adjust for DST without
+        // causing problems.  for instance, if you add one hour to April 5,
+        // 1998, 1:00 AM, in PST, the time becomes "2:00 AM PDT" (an
+        // illegal value), but then the adjustment sees the change and
+        // compensates by subtracting an hour.  As a result the time
+        // doesn't advance at all.
+
+        // For some fields larger than a day, such as a MONTH, we pin the
+        // DAY_OF_MONTH.  This allows <March 31>.add(MONTH, 1) to be
+        // <April 30>, rather than <April 31> => <May 1>.
+
+        long delta = amount; // delta in ms
+        boolean keepHourInvariant = true;
+
+        switch (field) {
+        case YEAR:
+        case EXTENDED_YEAR:
+        case YEAR_WOY:
+        case MONTH:
+            set(field, get(field) + amount);
+            pinField(DAY_OF_MONTH);
+            return;
+            
+        case WEEK_OF_YEAR:
+        case WEEK_OF_MONTH:
+        case DAY_OF_WEEK_IN_MONTH:
+            delta *= ONE_WEEK;
+            break;
+
+        case AM_PM:
+            delta *= 12 * ONE_HOUR;
+            break;
+
+        case DAY_OF_MONTH:
+        case DAY_OF_YEAR:
+        case DAY_OF_WEEK:
+        case DOW_LOCAL:
+        case JULIAN_DAY:
+            delta *= ONE_DAY;
+            break;
+
+        case HOUR_OF_DAY:
+        case HOUR:
+            delta *= ONE_HOUR;
+            keepHourInvariant = false;
+            break;
+
+        case MINUTE:
+            delta *= ONE_MINUTE;
+            keepHourInvariant = false;
+            break;
+
+        case SECOND:
+            delta *= ONE_SECOND;
+            keepHourInvariant = false;
+            break;
+
+        case MILLISECOND:
+        case MILLISECONDS_IN_DAY:
+            keepHourInvariant = false;
+            break;
+
+        default:
+            throw new IllegalArgumentException("Calendar.add(" + fieldName(field) +
+                                               ") not supported");
+        }
+
+        // In order to keep the hour invariant (for fields where this is
+        // appropriate), record the DST_OFFSET before and after the add()
+        // operation.  If it has changed, then adjust the millis to
+        // compensate.
+        int dst = 0;
+        if (keepHourInvariant) {
+            dst = get(DST_OFFSET);
+        }
+
+        setTimeInMillis(getTimeInMillis() + delta);
+
+        if (keepHourInvariant) {
+            dst -= get(DST_OFFSET);
+            if (dst != 0) {
+                setTimeInMillis(time + dst);
+            }
+        }
+    }
+    
+    /**
+     * Return the name of this calendar in the language of the given locale.
+     */
+    public String getDisplayName(Locale loc) {
+        return this.getClass().getName();
+    }
+    
+    //-------------------------------------------------------------------------
+    // Interface for creating custon DateFormats for different types of Calendars
+    //-------------------------------------------------------------------------
+
+    /**
+     * Return a <code>DateFormat</code> appropriate to this calendar.
+     * Subclasses wishing to specialize this behavior should override
+     * <code>handleGetDateFormat()</code>
+     * @see #handleGetDateFormat
+     */
+    public DateFormat getDateTimeFormat(int dateStyle, int timeStyle, Locale loc) {
+        return formatHelper(this, loc, dateStyle, timeStyle);
+    }
+
+    /**
+     * Create a <code>DateFormat</code> appropriate to this calendar.
+     * This is a framework method for subclasses to override.  This method
+     * is responsible for creating the calendar-specific DateFormat and
+     * DateFormatSymbols objects as needed.
+     * @param pattern the pattern, specific to the <code>DateFormat</code>
+     * subclass
+     * @param locale the locale for which the symbols should be drawn
+     * @return a <code>DateFormat</code> appropriate to this calendar
+     */
+    protected DateFormat handleGetDateFormat(String pattern, Locale locale) {
+        DateFormatSymbols symbols = new DateFormatSymbols(this, locale);
+        return new SimpleDateFormat(pattern, symbols);
+    }
+    
+    static private DateFormat formatHelper(Calendar cal, Locale loc,
+                                            int dateStyle, int timeStyle)
+    {
+        // See if there are any custom resources for this calendar
+        // If not, just use the default DateFormat
+        DateFormat result = null;
+
+        ResourceBundle bundle = DateFormatSymbols.getDateFormatBundle(cal, loc);
+
+        if (bundle != null) {
+
+            try {
+                String[] patterns = bundle.getStringArray("DateTimePatterns");
+
+                String pattern = null;
+                if ((timeStyle >= 0) && (dateStyle >= 0)) {
+                    Object[] dateTimeArgs = { patterns[timeStyle],
+                                              patterns[dateStyle + 4] };
+                    pattern = MessageFormat.format(patterns[8], dateTimeArgs);
+                }
+                else if (timeStyle >= 0) {
+                    pattern = patterns[timeStyle];
+                }
+                else if (dateStyle >= 0) {
+                    pattern = patterns[dateStyle + 4];
+                }
+                else {
+                    throw new IllegalArgumentException("No date or time style specified");
+                }
+                result = cal.handleGetDateFormat(pattern, loc);
+            } catch (MissingResourceException e) {
+                // No custom patterns
+                result = DateFormat.getDateTimeInstance(dateStyle, timeStyle, loc);
+                DateFormatSymbols symbols = new DateFormatSymbols(cal, loc);
+                ((SimpleDateFormat) result).setDateFormatSymbols(symbols); // aliu
+            }
+        } else {
+            result = SimpleDateFormat.getDateTimeInstance(dateStyle, timeStyle, loc);
+        }
+        result.setCalendar(cal);
+        return result;
+    }
+
+    //-------------------------------------------------------------------------
+    // Protected utility methods for use by subclasses.  These are very handy
+    // for implementing add, roll, and computeFields.
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Adjust the specified field so that it is within
+     * the allowable range for the date to which this calendar is set.
+     * For example, in a Gregorian calendar pinning the {@link #DAY_OF_MONTH DAY_OF_MONTH}
+     * field for a calendar set to April 31 would cause it to be set
+     * to April 30.
+     * <p>
+     * <b>Subclassing:</b>
+     * <br>
+     * This utility method is intended for use by subclasses that need to implement
+     * their own overrides of {@link #roll roll} and {@link #add add}.
+     * <p>
+     * <b>Note:</b>
+     * <code>pinField</code> is implemented in terms of
+     * {@link #getActualMinimum getActualMinimum}
+     * and {@link #getActualMaximum getActualMaximum}.  If either of those methods uses
+     * a slow, iterative algorithm for a particular field, it would be
+     * unwise to attempt to call <code>pinField</code> for that field.  If you
+     * really do need to do so, you should override this method to do
+     * something more efficient for that field.
+     * <p>
+     * @param field The calendar field whose value should be pinned.
+     *
+     * @see #getActualMinimum
+     * @see #getActualMaximum
+     */
+    protected void pinField(int field) {
+        int max = getActualMaximum(field);
+        int min = getActualMinimum(field);
+        
+        if (fields[field] > max) {
+            set(field, max);
+        } else if (fields[field] < min) {
+            set(field, min);
+        }
+    }
+
+    /**
+     * Return the week number of a day, within a period. This may be the week number in
+     * a year or the week number in a month. Usually this will be a value >= 1, but if
+     * some initial days of the period are excluded from week 1, because
+     * {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek} is > 1, then 
+     * the week number will be zero for those
+     * initial days. This method requires the day number and day of week for some
+     * known date in the period in order to determine the day of week 
+     * on the desired day.
+     * <p>
+     * <b>Subclassing:</b>
+     * <br>
+     * This method is intended for use by subclasses in implementing their
+     * {@link #computeTime computeTime} and/or {@link #computeFields computeFields} methods.
+     * It is often useful in {@link #getActualMinimum getActualMinimum} and
+     * {@link #getActualMaximum getActualMaximum} as well.
+     * <p>
+     * This variant is handy for computing the week number of some other
+     * day of a period (often the first or last day of the period) when its day
+     * of the week is not known but the day number and day of week for some other
+     * day in the period (e.g. the current date) <em>is</em> known.
+     * <p>
+     * @param desiredDay    The {@link #DAY_OF_YEAR DAY_OF_YEAR} or
+     *              {@link #DAY_OF_MONTH DAY_OF_MONTH} whose week number is desired.
+     *              Should be 1 for the first day of the period.
+     *
+     * @param knownDayOfPeriod   The {@link #DAY_OF_YEAR DAY_OF_YEAR}
+     *              or {@link #DAY_OF_MONTH DAY_OF_MONTH} for a day in the period whose
+     *              {@link #DAY_OF_WEEK DAY_OF_WEEK} is specified by the
+     *              <code>knownDayOfWeek</code> parameter.
+     *              Should be 1 for first day of period.
+     *
+     * @param knownDayOfWeek  The {@link #DAY_OF_WEEK DAY_OF_WEEK} for the day
+     *              corresponding to the <code>knownDayOfPeriod</code> parameter.
+     *              1-based with 1=Sunday.
+     *
+     * @return      The week number (one-based), or zero if the day falls before
+     *              the first week because
+     *              {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek}
+     *              is more than one.
+     */
+    protected int weekNumber(int desiredDay, int dayOfPeriod, int dayOfWeek)
+    {
+        // Determine the day of the week of the first day of the period
+        // in question (either a year or a month).  Zero represents the
+        // first day of the week on this calendar.
+        int periodStartDayOfWeek = (dayOfWeek - getFirstDayOfWeek() - dayOfPeriod + 1) % 7;
+        if (periodStartDayOfWeek < 0) periodStartDayOfWeek += 7;
+
+        // Compute the week number.  Initially, ignore the first week, which
+        // may be fractional (or may not be).  We add periodStartDayOfWeek in
+        // order to fill out the first week, if it is fractional.
+        int weekNo = (desiredDay + periodStartDayOfWeek - 1)/7;
+
+        // If the first week is long enough, then count it.  If
+        // the minimal days in the first week is one, or if the period start
+        // is zero, we always increment weekNo.
+        if ((7 - periodStartDayOfWeek) >= getMinimalDaysInFirstWeek()) ++weekNo;
+
+        return weekNo;
+    }
+
+    /**
+     * Return the week number of a day, within a period. This may be the week number in
+     * a year, or the week number in a month. Usually this will be a value >= 1, but if
+     * some initial days of the period are excluded from week 1, because
+     * {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek} is > 1,
+     * then the week number will be zero for those
+     * initial days. This method requires the day of week for the given date in order to 
+     * determine the result.
+     * <p>
+     * <b>Subclassing:</b>
+     * <br>
+     * This method is intended for use by subclasses in implementing their
+     * {@link #computeTime computeTime} and/or {@link #computeFields computeFields} methods.
+     * It is often useful in {@link #getActualMinimum getActualMinimum} and
+     * {@link #getActualMaximum getActualMaximum} as well.
+     * <p>
+     * @param dayOfPeriod   The {@link #DAY_OF_YEAR DAY_OF_YEAR} or
+     *                      {@link #DAY_OF_MONTH DAY_OF_MONTH} whose week number is desired.
+     *                      Should be 1 for the first day of the period.
+     *
+     * @param dayofWeek     The {@link #DAY_OF_WEEK DAY_OF_WEEK} for the day
+     *                      corresponding to the <code>dayOfPeriod</code> parameter.
+     *                      1-based with 1=Sunday.
+     *
+     * @return      The week number (one-based), or zero if the day falls before
+     *              the first week because
+     *              {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek}
+     *              is more than one.
+     */
+    protected final int weekNumber(int dayOfPeriod, int dayOfWeek)
+    {
+        return weekNumber(dayOfPeriod, dayOfPeriod, dayOfWeek);
+    }
+
+    //-------------------------------------------------------------------------
+    // Constants
+    //-------------------------------------------------------------------------
+    
+    /**
+     * [NEW]
+     * Return the difference between the given time and the time this
+     * calendar object is set to.  If this calendar is set
+     * <em>before</em> the given time, the returned value will be
+     * positive.  If this calendar is set <em>after</em> the given
+     * time, the returned value will be negative.  The
+     * <code>field</code> parameter specifies the units of the return
+     * value.  For example, if <code>fieldDifference(when,
+     * Calendar.MONTH)</code> returns 3, then this calendar is set to
+     * 3 months before <code>when</code>, and possibly some addition
+     * time less than one month.
+     *
+     * <p>As a side effect of this call, this calendar is advanced
+     * toward <code>when</code> by the given amount.  That is, calling
+     * this method has the side effect of calling <code>add(field,
+     * n)</code>, where <code>n</code> is the return value.
+     *
+     * <p>Usage: To use this method, call it first with the largest
+     * field of interest, then with progressively smaller fields.  For
+     * example:
+     *
+     * <pre>
+     * int y = cal.fieldDifference(when, Calendar.YEAR);
+     * int m = cal.fieldDifference(when, Calendar.MONTH);
+     * int d = cal.fieldDifference(when, Calendar.DATE);</pre>
+     *
+     * computes the difference between <code>cal</code> and
+     * <code>when</code> in years, months, and days.
+     *
+     * <p>Note: <code>fieldDifference()</code> is
+     * <em>asymmetrical</em>.  That is, in the following code:
+     *
+     * <pre>
+     * cal.setTime(date1);
+     * int m1 = cal.fieldDifference(date2, Calendar.MONTH);
+     * int d1 = cal.fieldDifference(date2, Calendar.DATE);
+     * cal.setTime(date2);
+     * int m2 = cal.fieldDifference(date1, Calendar.MONTH);
+     * int d2 = cal.fieldDifference(date1, Calendar.DATE);</pre>
+     *
+     * one might expect that <code>m1 == -m2 && d1 == -d2</code>.
+     * However, this is not generally the case, because of
+     * irregularities in the underlying calendar system (e.g., the
+     * Gregorian calendar has a varying number of days per month).
+     *
+     * @param when the date to compare this calendar's time to
+     * @param field the field in which to compute the result
+     * @return the difference, either positive or negative, between
+     * this calendar's time and <code>when</code>, in terms of
+     * <code>field</code>.
+     */
+    public int fieldDifference(Date when, int field) {
+        int min = 0;
+        long startMs = getTimeInMillis();
+        long targetMs = when.getTime();
+        // Always add from the start millis.  This accomodates
+        // operations like adding years from February 29, 2000 up to
+        // February 29, 2004.  If 1, 1, 1, 1 is added to the year
+        // field, the DOM gets pinned to 28 and stays there, giving an
+        // incorrect DOM difference of 1.  We have to add 1, reset, 2,
+        // reset, 3, reset, 4.
+        if (startMs < targetMs) {
+            int max = 1;
+            // Find a value that is too large
+            for (;;) {
+                setTimeInMillis(startMs);
+                add(field, max);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return max;
+                } else if (ms > targetMs) {
+                    break;
+                } else {
+                    max <<= 1;
+                    if (max < 0) {
+                        // Field difference too large to fit into int
+                        throw new RuntimeException();
+                    }
+                }
+            }
+            // Do a binary search
+            while ((max - min) > 1) {
+                int t = (min + max) / 2;
+                setTimeInMillis(startMs);
+                add(field, t);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return t;
+                } else if (ms > targetMs) {
+                    max = t;
+                } else {
+                    min = t;
+                }
+            }
+        } else if (startMs > targetMs) {
+            if (false) {
+                // This works, and makes the code smaller, but costs
+                // an extra object creation and an extra couple cycles
+                // of calendar computation.
+                setTimeInMillis(targetMs);
+                min = -fieldDifference(new Date(startMs), field);
+            }
+            int max = -1;
+            // Find a value that is too small
+            for (;;) {
+                setTimeInMillis(startMs);
+                add(field, max);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return max;
+                } else if (ms < targetMs) {
+                    break;
+                } else {
+                    max <<= 1;
+                    if (max == 0) {
+                        // Field difference too large to fit into int
+                        throw new RuntimeException();
+                    }
+                }
+            }
+            // Do a binary search
+            while ((min - max) > 1) {
+                int t = (min + max) / 2;
+                setTimeInMillis(startMs);
+                add(field, t);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return t;
+                } else if (ms < targetMs) {
+                    max = t;
+                } else {
+                    min = t;
+                }
+            }
+        }
+        // Set calendar to end point
+        setTimeInMillis(startMs);
+        add(field, min);
+        return min;
+    }
+
+    /**
+     * Sets the time zone with the given time zone value.
+     * @param value the given time zone.
+     */
+    public void setTimeZone(TimeZone value)
+    {
+        zone = value;
+        /* Recompute the fields from the time using the new zone.  This also
+         * works if isTimeSet is false (after a call to set()).  In that case
+         * the time will be computed from the fields using the new zone, then
+         * the fields will get recomputed from that.  Consider the sequence of
+         * calls: cal.setTimeZone(EST); cal.set(HOUR, 1); cal.setTimeZone(PST).
+         * Is cal set to 1 o'clock EST or 1 o'clock PST?  Answer: PST.  More
+         * generally, a call to setTimeZone() affects calls to set() BEFORE AND
+         * AFTER it up to the next call to complete().
+         */
+        areFieldsSet = false;
+    }
+
+    /**
+     * Gets the time zone.
+     * @return the time zone object associated with this calendar.
+     */
+    public TimeZone getTimeZone()
+    {
+        return zone;
+    }
+
+    /**
+     * Specify whether or not date/time interpretation is to be lenient.  With
+     * lenient interpretation, a date such as "February 942, 1996" will be
+     * treated as being equivalent to the 941st day after February 1, 1996.
+     * With strict interpretation, such dates will cause an exception to be
+     * thrown.
+     *
+     * @see DateFormat#setLenient
+     */
+    public void setLenient(boolean lenient)
+    {
+        this.lenient = lenient;
+    }
+
+    /**
+     * Tell whether date/time interpretation is to be lenient.
+     */
+    public boolean isLenient()
+    {
+        return lenient;
+    }
+
+    /**
+     * Sets what the first day of the week is; e.g., Sunday in US,
+     * Monday in France.
+     * @param value the given first day of the week.
+     */
+    public void setFirstDayOfWeek(int value)
+    {
+        firstDayOfWeek = value;
+    }
+
+    /**
+     * Gets what the first day of the week is; e.g., Sunday in US,
+     * Monday in France.
+     * @return the first day of the week.
+     */
+    public int getFirstDayOfWeek()
+    {
+        return firstDayOfWeek;
+    }
+
+    /**
+     * Sets what the minimal days required in the first week of the year are.
+     * For example, if the first week is defined as one that contains the first
+     * day of the first month of a year, call the method with value 1. If it
+     * must be a full week, use value 7.
+     * @param value the given minimal days required in the first week
+     * of the year.
+     */
+    public void setMinimalDaysInFirstWeek(int value)
+    {
+        minimalDaysInFirstWeek = value;
+    }
+
+    /**
+     * Gets what the minimal days required in the first week of the year are;
+     * e.g., if the first week is defined as one that contains the first day
+     * of the first month of a year, getMinimalDaysInFirstWeek returns 1. If
+     * the minimal days required must be a full week, getMinimalDaysInFirstWeek
+     * returns 7.
+     * @return the minimal days required in the first week of the year.
+     */
+    public int getMinimalDaysInFirstWeek()
+    {
+        return minimalDaysInFirstWeek;
+    }
+
+    private static final int LIMITS[][] = {
+        //    Minimum  Greatest min      Least max   Greatest max
+        {/*                                                      */}, // ERA
+        {/*                                                      */}, // YEAR
+        {/*                                                      */}, // MONTH
+        {/*                                                      */}, // WEEK_OF_YEAR
+        {/*                                                      */}, // WEEK_OF_MONTH
+        {/*                                                      */}, // DAY_OF_MONTH
+        {/*                                                      */}, // DAY_OF_YEAR
+        {           1,            1,             7,             7  }, // DAY_OF_WEEK
+        {/*                                                      */}, // DAY_OF_WEEK_IN_MONTH
+        {           0,            0,             1,             1  }, // AM_PM
+        {           0,            0,            11,            11  }, // HOUR
+        {           0,            0,            23,            23  }, // HOUR_OF_DAY
+        {           0,            0,            59,            59  }, // MINUTE
+        {           0,            0,            59,            59  }, // SECOND
+        {           0,            0,           999,           999  }, // MILLISECOND
+        {-12*ONE_HOUR, -12*ONE_HOUR,   12*ONE_HOUR,   12*ONE_HOUR  }, // ZONE_OFFSET
+        {           0,            0,    1*ONE_HOUR,    1*ONE_HOUR  }, // DST_OFFSET
+        {/*                                                      */}, // YEAR_WOY
+        {           1,            1,             7,             7  }, // DOW_LOCAL
+        {/*                                                      */}, // EXTENDED_YEAR
+        { -0x7F000000,  -0x7F000000,    0x7F000000,    0x7F000000  }, // JULIAN_DAY
+        {           0,            0, 24*ONE_HOUR-1, 24*ONE_HOUR-1  }, // MILLISECONDS_IN_DAY
+    };
+
+    /**
+     * Subclass API for defining limits of different types.
+     * Subclasses must implement this method to return limits for the
+     * following fields:
+     *
+     * <pre>ERA
+     * YEAR
+     * MONTH
+     * WEEK_OF_YEAR
+     * WEEK_OF_MONTH
+     * DAY_OF_MONTH
+     * DAY_OF_YEAR
+     * DAY_OF_WEEK_IN_MONTH
+     * YEAR_WOY
+     * EXTENDED_YEAR</pre>
+     *
+     * @param field one of the above field numbers
+     * @param limitType one of <code>MINIMUM</code>, <code>GREATEST_MINIMUM</code>,
+     * <code>LEAST_MAXIMUM</code>, or <code>MAXIMUM</code>
+     */
+    abstract protected int handleGetLimit(int field, int limitType);
+
+    /**
+     * Return a limit for a field.
+     * @param field the field, from 0..</code>getFieldCount()-1</code>
+     * @param limitType the type specifier for the limit
+     * @see #MINIMUM
+     * @see #GREATEST_MINIMUM
+     * @see #LEAST_MAXIMUM
+     * @see #MAXIMUM
+     */
+    protected int getLimit(int field, int limitType) {
+        switch (field) {
+        case DAY_OF_WEEK:
+        case AM_PM:
+        case HOUR:
+        case HOUR_OF_DAY:
+        case MINUTE:
+        case SECOND:
+        case MILLISECOND:
+        case ZONE_OFFSET:
+        case DST_OFFSET:
+        case DOW_LOCAL:
+        case JULIAN_DAY:
+        case MILLISECONDS_IN_DAY:
+            return LIMITS[field][limitType];
+        }
+        return handleGetLimit(field, limitType);
+    }
+
+    /**
+     * Limit type for <code>getLimit()</code> and <code>handleGetLimit()</code>
+     * indicating the minimum value that a field can take (least minimum).
+     * @see #getLimit
+     * @see #handleGetLimit
+     */
+    protected static final int MINIMUM = 0;
+
+    /**
+     * Limit type for <code>getLimit()</code> and <code>handleGetLimit()</code>
+     * indicating the greatest minimum value that a field can take.
+     * @see #getLimit
+     * @see #handleGetLimit
+     */
+    protected static final int GREATEST_MINIMUM = 1;
+
+    /**
+     * Limit type for <code>getLimit()</code> and <code>handleGetLimit()</code>
+     * indicating the least maximum value that a field can take.
+     * @see #getLimit
+     * @see #handleGetLimit
+     */
+    protected static final int LEAST_MAXIMUM = 2;
+
+    /**
+     * Limit type for <code>getLimit()</code> and <code>handleGetLimit()</code>
+     * indicating the maximum value that a field can take (greatest maximum).
+     * @see #getLimit
+     * @see #handleGetLimit
+     */
+    protected static final int MAXIMUM = 3;
+
+    /**
+     * Gets the minimum value for the given time field.
+     * e.g., for Gregorian DAY_OF_MONTH, 1.
+     * @param field the given time field.
+     * @return the minimum value for the given time field.
+     */
+    public final int getMinimum(int field) {
+        return getLimit(field, MINIMUM);
+    }
+
+    /**
+     * Gets the maximum value for the given time field.
+     * e.g. for Gregorian DAY_OF_MONTH, 31.
+     * @param field the given time field.
+     * @return the maximum value for the given time field.
+     */
+    public final int getMaximum(int field) {
+        return getLimit(field, MAXIMUM);
+    }
+
+    /**
+     * Gets the highest minimum value for the given field if varies.
+     * Otherwise same as getMinimum(). For Gregorian, no difference.
+     * @param field the given time field.
+     * @return the highest minimum value for the given time field.
+     */
+    public final int getGreatestMinimum(int field) {
+        return getLimit(field, GREATEST_MINIMUM);
+    }
+
+    /**
+     * Gets the lowest maximum value for the given field if varies.
+     * Otherwise same as getMaximum(). e.g., for Gregorian DAY_OF_MONTH, 28.
+     * @param field the given time field.
+     * @return the lowest maximum value for the given time field.
+     */
+    public final int getLeastMaximum(int field) {
+        return getLimit(field, LEAST_MAXIMUM);
+    }
+
+    //-------------------------------------------------------------------------
+    // Weekend support -- determining which days of the week are the weekend
+    // in a given locale
+    //-------------------------------------------------------------------------
+
+    /**
+     * Return whether the given day of the week is a weekday, a
+     * weekend day, or a day that transitions from one to the other,
+     * in this calendar system.  If a transition occurs at midnight,
+     * then the days before and after the transition will have the
+     * type WEEKDAY or WEEKEND.  If a transition occurs at a time
+     * other than midnight, then the day of the transition will have
+     * the type WEEKEND_ONSET or WEEKEND_CEASE.  In this case, the
+     * method getWeekendTransition() will return the point of
+     * transition.
+     * @param dayOfWeek either SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
+     * THURSDAY, FRIDAY, or SATURDAY
+     * @return either WEEKDAY, WEEKEND, WEEKEND_ONSET, or
+     * WEEKEND_CEASE
+     * @exception IllegalArgumentException if dayOfWeek is not
+     * between SUNDAY and SATURDAY, inclusive
+     * @see #WEEKDAY
+     * @see #WEEKEND
+     * @see #WEEKEND_ONSET
+     * @see #WEEKEND_CEASE
+     * @see #getWeekendTransition
+     * @see #isWeekend(Date)
+     * @see #isWeekend()
+     */
+    public int getDayOfWeekType(int dayOfWeek) {
+        if (dayOfWeek < SUNDAY || dayOfWeek > SATURDAY) {
+            throw new IllegalArgumentException("Invalid day of week");
+        }
+        if (weekendOnset < weekendCease) {
+            if (dayOfWeek < weekendOnset || dayOfWeek > weekendCease) {
+                return WEEKDAY;
+            }
+        } else {
+            if (dayOfWeek > weekendCease && dayOfWeek < weekendOnset) {
+                return WEEKDAY;
+            }
+        } 
+        if (dayOfWeek == weekendOnset) {
+            return (weekendOnsetMillis == 0) ? WEEKEND : WEEKEND_ONSET;
+        }
+        if (dayOfWeek == weekendCease) {
+            return (weekendCeaseMillis == 0) ? WEEKDAY : WEEKEND_CEASE;
+        }
+        return WEEKEND;
+    }
+
+    /**
+     * Return the time during the day at which the weekend begins or end in
+     * this calendar system.  If getDayOfWeekType(dayOfWeek) ==
+     * WEEKEND_ONSET return the time at which the weekend begins.  If
+     * getDayOfWeekType(dayOfWeek) == WEEKEND_CEASE return the time at
+     * which the weekend ends.  If getDayOfWeekType(dayOfWeek) has some
+     * other value, then throw an exception.
+     * @param dayOfWeek either SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
+     * THURSDAY, FRIDAY, or SATURDAY
+     * @return the milliseconds after midnight at which the
+     * weekend begins or ends
+     * @exception IllegalArgumentException if dayOfWeek is not
+     * WEEKEND_ONSET or WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @see #isWeekend(Date)
+     * @see #isWeekend()
+     */
+    public int getWeekendTransition(int dayOfWeek) {
+        if (dayOfWeek == weekendOnset) {
+            return weekendOnsetMillis;
+        } else if (dayOfWeek == weekendCease) {
+            return weekendCeaseMillis;
+        }
+        throw new IllegalArgumentException("Not weekend transition day");
+    }
+
+    /**
+     * Return true if the given date and time is in the weekend in
+     * this calendar system.  Equivalent to calling setTime() followed
+     * by isWeekend().  Note: This method changes the time this
+     * calendar is set to.
+     * @param date the date and time
+     * @return true if the given date and time is part of the
+     * weekend
+     * @see #getDayOfWeekType
+     * @see #getWeekendTransition
+     * @see #isWeekend()
+     */
+    public boolean isWeekend(Date date) {
+        setTime(date);
+        return isWeekend();
+    }
+
+    /**
+     * Return true if this Calendar's current date and time is in the
+     * weekend in this calendar system.
+     * @return true if the given date and time is part of the
+     * weekend
+     * @see #getDayOfWeekType
+     * @see #getWeekendTransition
+     * @see #isWeekend(Date)
+     */
+    public boolean isWeekend() {
+        int dow =  get(DAY_OF_WEEK);
+        int dowt = getDayOfWeekType(dow);
+        switch (dowt) {
+        case WEEKDAY:
+            return false;
+        case WEEKEND:
+            return true;
+        default: // That is, WEEKEND_ONSET or WEEKEND_CEASE
+            // Use internalGet() because the above call to get() populated
+            // all fields.
+            // [Note: There should be a better way to get millis in day.
+            //  For ICU4J, submit request for a MILLIS_IN_DAY field
+            //  and a DAY_NUMBER field (could be Julian day #). - aliu]
+            int millisInDay = internalGet(MILLISECOND) + 1000 * (internalGet(SECOND) +
+                60 * (internalGet(MINUTE) + 60 * internalGet(HOUR_OF_DAY)));
+            int transition = getWeekendTransition(dow);
+            return (dowt == WEEKEND_ONSET)
+                ? (millisInDay >= transition)
+                : (millisInDay <  transition);
+        }
+        // (We can never reach this point.)
+    }
+
+    /**
+     * Read the locale weekend data for the given locale.
+     *
+     * This is the initial placement and format of this data -- it may very
+     * well change in the future.  See the locale files themselves for
+     * details.
+     */
+    private void setWeekendData(Locale loc) {
+        ResourceBundle resource =
+            ICULocaleData.getResourceBundle("CalendarData", loc);
+        String[] data = resource.getStringArray("Weekend");
+        weekendOnset       = Integer.parseInt(data[0]);
+        weekendOnsetMillis = Integer.parseInt(data[1]);
+        weekendCease       = Integer.parseInt(data[2]);
+        weekendCeaseMillis = Integer.parseInt(data[3]);
+    }
+
+    //-------------------------------------------------------------------------
+    // End of weekend support
+    //-------------------------------------------------------------------------
+
+    /**
+     * Overrides Cloneable
+     */
+    public Object clone()
+    {
+        try {
+            Calendar other = (Calendar) super.clone();
+
+            other.fields = new int[fields.length];
+            other.stamp = new int[fields.length];
+            System.arraycopy(this.fields, 0, other.fields, 0, fields.length);
+            System.arraycopy(this.stamp, 0, other.stamp, 0, fields.length);
+
+            other.zone = (TimeZone) zone.clone();
+            return other;
+        }
+        catch (CloneNotSupportedException e) {
+            // this shouldn't happen, since we are Cloneable
+            throw new InternalError();
+        }
+    }
+
+    /**
+     * Return a string representation of this calendar. This method 
+     * is intended to be used only for debugging purposes, and the 
+     * format of the returned string may vary between implementations. 
+     * The returned string may be empty but may not be <code>null</code>.
+     * 
+     * @return  a string representation of this calendar.
+     */
+    public String toString() {
+        StringBuffer buffer = new StringBuffer();
+        buffer.append(getClass().getName());
+        buffer.append("[time=");
+        buffer.append(isTimeSet ? String.valueOf(time) : "?");
+        buffer.append(",areFieldsSet=");
+        buffer.append(areFieldsSet);
+        buffer.append(",areAllFieldsSet=");
+        buffer.append(areAllFieldsSet);
+        buffer.append(",lenient=");
+        buffer.append(lenient);
+        buffer.append(",zone=");
+        buffer.append(zone);
+        buffer.append(",firstDayOfWeek=");
+        buffer.append(firstDayOfWeek);
+        buffer.append(",minimalDaysInFirstWeek=");
+        buffer.append(minimalDaysInFirstWeek);
+        for (int i=0; i<fields.length; ++i) {
+            buffer.append(',').append(FIELD_NAME[i]).append('=');
+            buffer.append(isSet(i) ? String.valueOf(fields[i]) : "?");
+        }
+        buffer.append(']');
+        return buffer.toString();
+    }
+
+    // =======================privates===============================
+
+    /**
+     * Both firstDayOfWeek and minimalDaysInFirstWeek are locale-dependent.
+     * They are used to figure out the week count for a specific date for
+     * a given locale. These must be set when a Calendar is constructed.
+     * @param desiredLocale the given locale.
+     */
+    private void setWeekCountData(Locale desiredLocale)
+    {
+    /* try to get the Locale data from the cache */
+    int[] data = (int[]) cachedLocaleData.get(desiredLocale);
+    if (data == null) {  /* cache miss */
+        ResourceBundle resource = ICULocaleData.getLocaleElements(desiredLocale);
+        String[] dateTimePatterns =
+        resource.getStringArray("DateTimeElements");
+        data = new int[2];
+        data[0] = Integer.parseInt(dateTimePatterns[0]);
+        data[1] = Integer.parseInt(dateTimePatterns[1]);
+        /* cache update */
+        cachedLocaleData.put(desiredLocale, data);
+    }
+    firstDayOfWeek = data[0];
+    minimalDaysInFirstWeek = data[1];
+    }
+
+    /**
+     * Recompute the time and update the status fields isTimeSet
+     * and areFieldsSet.  Callers should check isTimeSet and only
+     * call this method if isTimeSet is false.
+     */
+    private void updateTime() {
+        computeTime();
+        // If we are lenient, we need to recompute the fields to normalize
+        // the values.  Also, if we haven't set all the fields yet (i.e.,
+        // in a newly-created object), we need to fill in the fields. [LIU]
+        if (isLenient() || !areAllFieldsSet) areFieldsSet = false;
+        isTimeSet = true;
+    }
+
+    /**
+     * Save the state of this object to a stream (i.e., serialize it).
+     *
+     * Ideally, <code>Calendar</code> would only write out its state data and
+     * the current time, and not write any field data out, such as
+     * <code>fields[]</code>, <code>isTimeSet</code>, <code>areFieldsSet</code>,
+     * and <code>isSet[]</code>.  <code>nextStamp</code> also should not be part
+     * of the persistent state. Unfortunately, this didn't happen before JDK 1.1
+     * shipped. To be compatible with JDK 1.1, we will always have to write out
+     * the field values and state flags.  However, <code>nextStamp</code> can be
+     * removed from the serialization stream; this will probably happen in the
+     * near future.
+     */
+    private void writeObject(ObjectOutputStream stream)
+         throws IOException
+    {
+        // Try to compute the time correctly, for the future (stream
+        // version 2) in which we don't write out fields[] or isSet[].
+        if (!isTimeSet) {
+            try {
+                updateTime();
+            }
+            catch (IllegalArgumentException e) {}
+        }
+
+        // Write out the 1.1 FCS object.
+        stream.defaultWriteObject();
+    }
+
+    /**
+     * Reconstitute this object from a stream (i.e., deserialize it).
+     */
+    private void readObject(ObjectInputStream stream)
+        throws IOException, ClassNotFoundException {
+        
+        stream.defaultReadObject();
+
+        initInternal();
+
+        isTimeSet = true;
+        areFieldsSet = areAllFieldsSet = false;
+        nextStamp = MINIMUM_USER_STAMP;
+    }
+
+
+    //----------------------------------------------------------------------
+    // Time -> Fields
+    //----------------------------------------------------------------------
+
+    /**
+     * Converts the current millisecond time value <code>time</code> to
+     * field values in <code>fields[]</code>.  This synchronizes the time
+     * field values with a new time that is set for the calendar.  The time
+     * is <em>not</em> recomputed first; to recompute the time, then the
+     * fields, call the <code>complete</code> method.
+     * @see #complete
+     */
+    protected void computeFields() {
+        int rawOffset = getTimeZone().getRawOffset();
+        long localMillis = time + rawOffset;
+
+        // Mark fields as set.  Do this before calling handleComputeFields().
+        int mask = internalSetMask;
+        for (int i=0; i<fields.length; ++i) {
+            if ((mask & 1) == 0) {
+                stamp[i] = INTERNALLY_SET;
+            } else {
+                stamp[i] = UNSET;
+            }
+            mask >>= 1;
+        }
+
+        // We used to check for and correct extreme millis values (near
+        // Long.MIN_VALUE or Long.MAX_VALUE) here.  Such values would cause
+        // overflows from positive to negative (or vice versa) and had to
+        // be manually tweaked.  We no longer need to do this because we
+        // have limited the range of supported dates to those that have a
+        // Julian day that fits into an int.  This allows us to implement a
+        // JULIAN_DAY field and also removes some inelegant code. - Liu
+        // 11/6/00
+
+        fields[JULIAN_DAY] = (int) floorDivide(localMillis, ONE_DAY) +
+            EPOCH_JULIAN_DAY;
+
+        // In some cases we will have to call this method again below to
+        // adjust for DST pushing us into the next Julian day.
+        computeGregorianAndDOWFields(fields[JULIAN_DAY]);
+
+        long days = (long) (localMillis / ONE_DAY);
+        int millisInDay = (int) (localMillis - (days * ONE_DAY));
+        if (millisInDay < 0) millisInDay += ONE_DAY;
+
+        // Call getOffset() to get the TimeZone offset.  The millisInDay value
+        // must be _standard_ local zone millis.
+        int dstOffset = getTimeZone().getOffset(
+                gregorianYear, gregorianMonth,
+                gregorianDayOfMonth,
+                fields[DAY_OF_WEEK],
+                millisInDay,
+                gregorianMonthLength(gregorianYear, gregorianMonth),
+                gregorianPreviousMonthLength(gregorianYear, gregorianMonth))
+            - rawOffset;
+
+        // Adjust our millisInDay for DST.  dstOffset will be zero if DST
+        // is not in effect at this time of year, or if our zone does not
+        // use DST.
+        millisInDay += dstOffset;
+
+        // If DST has pushed us into the next day, we must call
+        // computeGregorianAndDOWFields() again.  This happens in DST between
+        // 12:00 am and 1:00 am every day.  The first call to
+        // computeGregorianAndDOWFields() will give the wrong day, since the
+        // Standard time is in the previous day.
+        if (millisInDay >= ONE_DAY) {
+            millisInDay -= ONE_DAY; // ASSUME dstOffset < 24:00
+
+            // We don't worry about overflow of JULIAN_DAY because the
+            // allowable range of JULIAN_DAY has slop at the ends (that is,
+            // the max is less that 0x7FFFFFFF and the min is greater than
+            // -0x80000000).
+            computeGregorianAndDOWFields(++fields[JULIAN_DAY]);
+        }
+
+        // Call framework method to have subclass compute its fields.
+        // These must include, at a minimum, MONTH, DAY_OF_MONTH,
+        // EXTENDED_YEAR, YEAR, DAY_OF_YEAR.  This method will call internalSet(),
+        // which will update stamp[].
+        handleComputeFields(fields[JULIAN_DAY]);
+
+        // Compute week-related fields, based on the subclass-computed
+        // fields computed by handleComputeFields().
+        computeWeekFields();
+
+        // Compute time-related fields.  These are indepent of the date and
+        // of the subclass algorithm.  They depend only on the local zone
+        // wall milliseconds in day.
+        fields[MILLISECONDS_IN_DAY] = millisInDay;
+        fields[MILLISECOND] = millisInDay % 1000;
+        millisInDay /= 1000;
+        fields[SECOND] = millisInDay % 60;
+        millisInDay /= 60;
+        fields[MINUTE] = millisInDay % 60;
+        millisInDay /= 60;
+        fields[HOUR_OF_DAY] = millisInDay;
+        fields[AM_PM] = millisInDay / 12; // Assume AM == 0
+        fields[HOUR] = millisInDay % 12;
+        fields[ZONE_OFFSET] = rawOffset;
+        fields[DST_OFFSET] = dstOffset;
+    }
+
+    /**
+     * Compute the Gregorian calendar year, month, and day of month from
+     * the given Julian day.  These values are not stored in fields, but in
+     * member variables gregorianXxx.  Also compute the DAY_OF_WEEK and
+     * DOW_LOCAL fields.
+     */
+    private final void computeGregorianAndDOWFields(int julianDay) {
+        computeGregorianFields(julianDay);
+
+        // Compute day of week: JD 0 = Monday
+        int dow = fields[DAY_OF_WEEK] = julianDayToDayOfWeek(julianDay);
+
+        // Calculate 1-based localized day of week
+        int dowLocal = dow - getFirstDayOfWeek() + 1;
+        if (dowLocal < 1) {
+            dowLocal += 7;
+        }
+        fields[DOW_LOCAL] = dowLocal;
+    }
+    
+    /**
+     * Compute the Gregorian calendar year, month, and day of month from the
+     * Julian day.  These values are not stored in fields, but in member
+     * variables gregorianXxx.  They are used for time zone computations and by
+     * subclasses that are Gregorian derivatives.  Subclasses may call this
+     * method to perform a Gregorian calendar millis->fields computation.
+     * To perform a Gregorian calendar fields->millis computation, call
+     * computeGregorianMonthStart().
+     * @see #computeGregorianMonthStart
+     */
+    protected final void computeGregorianFields(int julianDay) {
+        int year, month, dayOfMonth, dayOfYear;
+
+        // The Gregorian epoch day is zero for Monday January 1, year 1.
+        long gregorianEpochDay = julianDay - JAN_1_1_JULIAN_DAY;
+
+        // Here we convert from the day number to the multiple radix
+        // representation.  We use 400-year, 100-year, and 4-year cycles.
+        // For example, the 4-year cycle has 4 years + 1 leap day; giving
+        // 1461 == 365*4 + 1 days.
+        int[] rem = new int[1];
+        int n400 = floorDivide(gregorianEpochDay, 146097, rem); // 400-year cycle length
+        int n100 = floorDivide(rem[0], 36524, rem); // 100-year cycle length
+        int n4 = floorDivide(rem[0], 1461, rem); // 4-year cycle length
+        int n1 = floorDivide(rem[0], 365, rem);
+        year = 400*n400 + 100*n100 + 4*n4 + n1;
+        dayOfYear = rem[0]; // zero-based day of year
+        if (n100 == 4 || n1 == 4) {
+            dayOfYear = 365; // Dec 31 at end of 4- or 400-yr cycle
+        } else {
+            ++year;
+        }
+
+        boolean isLeap = ((year&0x3) == 0) && // equiv. to (year%4 == 0)
+            (year%100 != 0 || year%400 == 0);
+
+        int correction = 0;
+        int march1 = isLeap ? 60 : 59; // zero-based DOY for March 1
+        if (dayOfYear >= march1) correction = isLeap ? 1 : 2;
+        month = (12 * (dayOfYear + correction) + 6) / 367; // zero-based month
+        dayOfMonth = dayOfYear -
+            GREGORIAN_MONTH_COUNT[month][isLeap?3:2] + 1; // one-based DOM
+
+        gregorianYear = year;
+        gregorianMonth = month; // 0-based already
+        gregorianDayOfMonth = dayOfMonth; // 1-based already
+        gregorianDayOfYear = dayOfYear + 1; // Convert from 0-based to 1-based
+    }
+
+    /**
+     * Compute the fields WEEK_OF_YEAR, YEAR_WOY, WEEK_OF_MONTH,
+     * DAY_OF_WEEK_IN_MONTH, and DOW_LOCAL from EXTENDED_YEAR, YEAR,
+     * DAY_OF_WEEK, and DAY_OF_YEAR.  The latter fields are computed by the
+     * subclass based on the calendar system.
+     *
+     * <p>The YEAR_WOY field is computed simplistically.  It is equal to YEAR
+     * most of the time, but at the year boundary it may be adjusted to YEAR-1
+     * or YEAR+1 to reflect the overlap of a week into an adjacent year.  In
+     * this case, a simple increment or decrement is performed on YEAR, even
+     * though this may yield an invalid YEAR value.  For instance, if the YEAR
+     * is part of a calendar system with an N-year cycle field CYCLE, then
+     * incrementing the YEAR may involve incrementing CYCLE and setting YEAR
+     * back to 0 or 1.  This is not handled by this code, and in fact cannot be
+     * simply handled without having subclasses define an entire parallel set of
+     * fields for fields larger than or equal to a year.  This additional
+     * complexity is not warranted, since the intention of the YEAR_WOY field is
+     * to support ISO 8601 notation, so it will typically be used with a
+     * proleptic Gregorian calendar, which has no field larger than a year.
+     */
+    private final void computeWeekFields() {
+        int eyear = fields[EXTENDED_YEAR];
+        int year = fields[YEAR];
+        int dayOfWeek = fields[DAY_OF_WEEK];
+        int dayOfYear = fields[DAY_OF_YEAR];
+
+        // WEEK_OF_YEAR start
+        // Compute the week of the year.  For the Gregorian calendar, valid week
+        // numbers run from 1 to 52 or 53, depending on the year, the first day
+        // of the week, and the minimal days in the first week.  For other
+        // calendars, the valid range may be different -- it depends on the year
+        // length.  Days at the start of the year may fall into the last week of
+        // the previous year; days at the end of the year may fall into the
+        // first week of the next year.  ASSUME that the year length is less than
+        // 7000 days.
+        int yearOfWeekOfYear = year;
+        int relDow = (dayOfWeek + 7 - getFirstDayOfWeek()) % 7; // 0..6
+        int relDowJan1 = (dayOfWeek - dayOfYear + 7001 - getFirstDayOfWeek()) % 7; // 0..6
+        int woy = (dayOfYear - 1 + relDowJan1) / 7; // 0..53
+        if ((7 - relDowJan1) >= getMinimalDaysInFirstWeek()) {
+            ++woy;
+        }
+
+        // Adjust for weeks at the year end that overlap into the previous or
+        // next calendar year.
+        if (woy == 0) {
+            // We are the last week of the previous year.
+            // Check to see if we are in the last week; if so, we need
+            // to handle the case in which we are the first week of the
+            // next year.
+
+            int prevDoy = dayOfYear + handleGetYearLength(eyear - 1);
+            woy = weekNumber(prevDoy, dayOfWeek);
+            yearOfWeekOfYear--;
+        } else {
+            int lastDoy = handleGetYearLength(eyear);
+            // Fast check: For it to be week 1 of the next year, the DOY
+            // must be on or after L-5, where L is yearLength(), then it
+            // cannot possibly be week 1 of the next year:
+            //          L-5                  L
+            // doy: 359 360 361 362 363 364 365 001
+            // dow:      1   2   3   4   5   6   7
+            if (dayOfYear >= (lastDoy - 5)) {
+                int lastRelDow = (relDow + lastDoy - dayOfYear) % 7;
+                if (lastRelDow < 0) {
+                    lastRelDow += 7;
+                }
+                if (((6 - lastRelDow) >= getMinimalDaysInFirstWeek()) &&
+                    ((dayOfYear + 7 - relDow) > lastDoy)) {
+                    woy = 1;
+                    yearOfWeekOfYear++;
+                }
+            }
+        }
+        fields[WEEK_OF_YEAR] = woy;
+        fields[YEAR_WOY] = yearOfWeekOfYear;
+        // WEEK_OF_YEAR end
+
+        int dayOfMonth = fields[DAY_OF_MONTH];
+        fields[WEEK_OF_MONTH] = weekNumber(dayOfMonth, dayOfWeek);
+        fields[DAY_OF_WEEK_IN_MONTH] = (dayOfMonth-1) / 7 + 1;
+    }
+
+    //----------------------------------------------------------------------
+    // Fields -> Time
+    //----------------------------------------------------------------------
+
+    /**
+     * Value to OR against resolve table field values for remapping.
+     * @see #resolveFields
+     */
+    protected static final int RESOLVE_REMAP = 32;
+    // A power of 2 greater than or equal to MAX_FIELD_COUNT
+
+    // Default table for day in year
+    static final int[][][] DATE_PRECEDENCE = {
+        {
+            { DAY_OF_MONTH },
+            { WEEK_OF_YEAR, DAY_OF_WEEK },
+            { WEEK_OF_MONTH, DAY_OF_WEEK },
+            { DAY_OF_WEEK_IN_MONTH, DAY_OF_WEEK },
+            { WEEK_OF_YEAR, DOW_LOCAL },
+            { WEEK_OF_MONTH, DOW_LOCAL },
+            { DAY_OF_WEEK_IN_MONTH, DOW_LOCAL },
+            { DAY_OF_YEAR },
+        },
+        {
+            { WEEK_OF_YEAR },
+            { WEEK_OF_MONTH },
+            { DAY_OF_WEEK_IN_MONTH },
+            { RESOLVE_REMAP | DAY_OF_WEEK_IN_MONTH, DAY_OF_WEEK },
+            { RESOLVE_REMAP | DAY_OF_WEEK_IN_MONTH, DOW_LOCAL },
+        },
+    };
+
+    static final int[][][] DOW_PRECEDENCE = {
+        {
+            { DAY_OF_WEEK },
+            { DOW_LOCAL },
+        },
+    };
+
+    /**
+     * Given a precedence table, return the newest field combination in
+     * the table, or -1 if none is found.
+     *
+     * <p>The precedence table is a 3-dimensional array of integers.  It
+     * may be thought of as an array of groups.  Each group is an array of
+     * lines.  Each line is an array of field numbers.  Within a line, if
+     * all fields are set, then the time stamp of the line is taken to be
+     * the stamp of the most recently set field.  If any field of a line is
+     * unset, then the line fails to match.  Within a group, the line with
+     * the newest time stamp is selected.  The first field of the line is
+     * returned to indicate which line matched.
+     *
+     * <p>In some cases, it may be desirable to map a line to field that
+     * whose stamp is NOT examined.  For example, if the best field is
+     * DAY_OF_WEEK then the DAY_OF_WEEK_IN_MONTH algorithm may be used.  In
+     * order to do this, insert the value <code>REMAP_RESOLVE | F</code> at
+     * the start of the line, where <code>F</code> is the desired return
+     * field value.  This field will NOT be examined; it only determines
+     * the return value if the other fields in the line are the newest.
+     *
+     * <p>If all lines of a group contain at least one unset field, then no
+     * line will match, and the group as a whole will fail to match.  In
+     * that case, the next group will be processed.  If all groups fail to
+     * match, then -1 is returned.
+     */
+    protected int resolveFields(int[][][] precedenceTable) {
+        int bestField = -1;
+        for (int g=0; g<precedenceTable.length && bestField < 0; ++g) {
+            int[][] group = precedenceTable[g];
+            int bestStamp = UNSET;
+        linesInGroup:
+            for (int l=0; l<group.length; ++l) {
+                int[] line= group[l];
+                int lineStamp = UNSET;
+                // Skip over first entry if it is negative
+                for (int i=(line[0]>=RESOLVE_REMAP)?1:0; i<line.length; ++i) {
+                    int s = stamp[line[i]];
+                    // If any field is unset then don't use this line
+                    if (s == UNSET) {
+                        continue linesInGroup;
+                    } else {
+                        lineStamp = Math.max(lineStamp, s);
+                    }
+                }
+                // Record new maximum stamp & field no.
+                if (lineStamp > bestStamp) {
+                    bestStamp = lineStamp;
+                    bestField = line[0]; // First field refers to entire line
+                }
+            }
+        }
+        return (bestField>=RESOLVE_REMAP)?(bestField&(RESOLVE_REMAP-1)):bestField;
+    }
+
+    /**
+     * Return the newest stamp of a given range of fields.
+     */
+    protected int newestStamp(int first, int last, int bestStampSoFar) {
+        int bestStamp = bestStampSoFar;
+        for (int i=first; i<=last; ++i) {
+            if (stamp[i] > bestStamp) {
+                bestStamp = stamp[i];
+            }
+        }
+        return bestStamp;
+    }
+
+    /**
+     * Return the timestamp of a field.
+     */
+    protected final int getStamp(int field) {
+        return stamp[field];
+    }
+    
+    /**
+     * Return the field that is newer, either defaultField, or
+     * alternateField.  If neither is newer or neither is set, return defaultField.
+     */
+    protected int newerField(int defaultField, int alternateField) {
+        if (stamp[alternateField] > stamp[defaultField]) {
+            return alternateField;
+        }
+        return defaultField;
+    }
+
+    /**
+     * Ensure that each field is within its valid range by calling {@link
+     * #validateField(int)} on each field that has been set.  This method
+     * should only be called if this calendar is not lenient.
+     * @see #isLenient
+     * @see #validateField(int)
+     */
+    protected void validateFields() {
+        for (int field = 0; field < fields.length; field++) {
+            if (isSet(field)) {
+                validateField(field);
+            }
+        }
+    }
+
+    /**
+     * Validate a single field of this calendar.  Subclasses should
+     * override this method to validate any calendar-specific fields.
+     * Generic fields can be handled by
+     * <code>Calendar.validateField()</code>.
+     * @see #validateField(int, int, int)
+     */
+    protected void validateField(int field) {
+        int y;
+        switch (field) {
+        case DAY_OF_MONTH:
+            y = handleGetExtendedYear();
+            validateField(field, 1, handleGetMonthLength(y, internalGet(MONTH)));
+            break;
+        case DAY_OF_YEAR:
+            y = handleGetExtendedYear();
+            validateField(field, 1, handleGetYearLength(y));
+            break;
+        case DAY_OF_WEEK_IN_MONTH:
+            if (internalGet(field) == 0) {
+                throw new IllegalArgumentException("DAY_OF_WEEK_IN_MONTH cannot be zero");
+            }
+            validateField(field, getMinimum(field), getMaximum(field));
+            break;
+        default:
+            validateField(field, getMinimum(field), getMaximum(field));
+            break;
+        }
+    }
+
+    /**
+     * Validate a single field of this calendar given its minimum and
+     * maximum allowed value.  If the field is out of range, throw a
+     * descriptive <code>IllegalArgumentException</code>.  Subclasses may
+     * use this method in their implementation of {@link
+     * #validateField(int)}.
+     */
+    protected final void validateField(int field, int min, int max) {
+        int value = fields[field];
+        if (value < min || value > max) {
+            throw new IllegalArgumentException(fieldName(field) +
+                                               '=' + value + ", valid range=" +
+                                               min + ".." + max);
+        }
+    }
+
+    /**
+     * Converts the current field values in <code>fields[]</code> to the
+     * millisecond time value <code>time</code>.
+     */
+   protected void computeTime() {
+        if (!isLenient()) {
+            validateFields();
+        }
+
+        // Compute the Julian day 
+        int julianDay = computeJulianDay();
+
+        long millis = julianDayToMillis(julianDay);
+
+        int millisInDay;
+
+        // We only use MILLISECONDS_IN_DAY if it has been set by the user.
+        // This makes it possible for the caller to set the calendar to a
+        // time and call clear(MONTH) to reset the MONTH to January.  This
+        // is legacy behavior.  Without this, clear(MONTH) has no effect,
+        // since the internally set JULIAN_DAY is used.
+        if (stamp[MILLISECONDS_IN_DAY] >= MINIMUM_USER_STAMP &&
+            newestStamp(AM_PM, MILLISECOND, UNSET) <= stamp[MILLISECONDS_IN_DAY]) {
+            millisInDay = internalGet(MILLISECONDS_IN_DAY);
+        } else {
+            millisInDay = computeMillisInDay();
+        }
+
+        // Compute the time zone offset and DST offset.  There are two potential
+        // ambiguities here.  We'll assume a 2:00 am (wall time) switchover time
+        // for discussion purposes here.
+        // 1. The transition into DST.  Here, a designated time of 2:00 am - 2:59 am
+        //    can be in standard or in DST depending.  However, 2:00 am is an invalid
+        //    representation (the representation jumps from 1:59:59 am Std to 3:00:00 am DST).
+        //    We assume standard time.
+        // 2. The transition out of DST.  Here, a designated time of 1:00 am - 1:59 am
+        //    can be in standard or DST.  Both are valid representations (the rep
+        //    jumps from 1:59:59 DST to 1:00:00 Std).
+        //    Again, we assume standard time.
+        // We use the TimeZone object, unless the user has explicitly set the ZONE_OFFSET
+        // or DST_OFFSET fields; then we use those fields.
+        if (stamp[ZONE_OFFSET] >= MINIMUM_USER_STAMP ||
+            stamp[DST_OFFSET] >= MINIMUM_USER_STAMP) {
+            millisInDay -= internalGet(ZONE_OFFSET) + internalGet(DST_OFFSET);
+        } else {
+            millisInDay -= computeZoneOffset(millis, millisInDay);
+        }
+
+        time = millis + millisInDay;
+    }
+
+    /**
+     * Compute the milliseconds in the day from the fields.  This is a
+     * value from 0 to 23:59:59.999 inclusive, unless fields are out of
+     * range, in which case it can be an arbitrary value.  This value
+     * reflects local zone wall time.
+     */
+    protected int computeMillisInDay() {
+        // Do the time portion of the conversion.
+
+        int millisInDay = 0;
+
+        // Find the best set of fields specifying the time of day.  There
+        // are only two possibilities here; the HOUR_OF_DAY or the
+        // AM_PM and the HOUR.
+        int hourOfDayStamp = stamp[HOUR_OF_DAY];
+        int hourStamp = Math.max(stamp[HOUR], stamp[AM_PM]);
+        int bestStamp = (hourStamp > hourOfDayStamp) ? hourStamp : hourOfDayStamp;
+
+        // Hours
+        if (bestStamp != UNSET) {
+            if (bestStamp == hourOfDayStamp) {
+                // Don't normalize here; let overflow bump into the next period.
+                // This is consistent with how we handle other fields.
+                millisInDay += internalGet(HOUR_OF_DAY);
+            } else {
+                // Don't normalize here; let overflow bump into the next period.
+                // This is consistent with how we handle other fields.
+                millisInDay += internalGet(HOUR);
+                millisInDay += 12 * internalGet(AM_PM); // Default works for unset AM_PM
+            }
+        }
+
+        // We use the fact that unset == 0; we start with millisInDay
+        // == HOUR_OF_DAY.
+        millisInDay *= 60;
+        millisInDay += internalGet(MINUTE); // now have minutes
+        millisInDay *= 60;
+        millisInDay += internalGet(SECOND); // now have seconds
+        millisInDay *= 1000;
+        millisInDay += internalGet(MILLISECOND); // now have millis
+
+        return millisInDay;
+    }
+
+    /**
+     * This method can assume EXTENDED_YEAR has been set.
+     * @param millis milliseconds of the date fields
+     * @param millisInDay milliseconds of the time fields; may be out
+     * or range.
+     */
+    protected int computeZoneOffset(long millis, int millisInDay) {
+
+        /* Normalize the millisInDay to 0..ONE_DAY-1.  If the millis is out
+         * of range, then we must call computeGregorianAndDOWFields() to
+         * recompute our fields. */
+        int[] normalizedMillisInDay = new int[1];
+        int days = floorDivide(millis + millisInDay, (int) ONE_DAY,
+                               normalizedMillisInDay);
+
+        int julianDay = millisToJulianDay(days * ONE_DAY);
+
+        computeGregorianAndDOWFields(julianDay);
+
+        return zone.getOffset(
+                      gregorianYear, gregorianMonth, gregorianDayOfMonth,
+                      fields[DAY_OF_WEEK], normalizedMillisInDay[0],
+                      gregorianMonthLength(gregorianYear, gregorianMonth),
+                      gregorianPreviousMonthLength(gregorianYear,
+                                                   gregorianMonth));
+
+        // Note: Because we pass in wall millisInDay, rather than
+        // standard millisInDay, we interpret "1:00 am" on the day
+        // of cessation of DST as "1:00 am Std" (assuming the time
+        // of cessation is 2:00 am).
+    }
+
+    /**
+     * Compute the Julian day number as specified by this calendar's fields.
+     */
+    protected int computeJulianDay() {
+
+        // We want to see if any of the date fields is newer than the
+        // JULIAN_DAY.  If not, then we use JULIAN_DAY.  If so, then we do
+        // the normal resolution.  We only use JULIAN_DAY if it has been
+        // set by the user.  This makes it possible for the caller to set
+        // the calendar to a time and call clear(MONTH) to reset the MONTH
+        // to January.  This is legacy behavior.  Without this,
+        // clear(MONTH) has no effect, since the internally set JULIAN_DAY
+        // is used.
+        if (stamp[JULIAN_DAY] >= MINIMUM_USER_STAMP) {
+            int bestStamp = newestStamp(ERA, DAY_OF_WEEK_IN_MONTH, UNSET);
+            bestStamp = newestStamp(YEAR_WOY, EXTENDED_YEAR, bestStamp);
+            if (bestStamp <= stamp[JULIAN_DAY]) {
+                return internalGet(JULIAN_DAY);
+            }
+        }
+
+        int bestField = resolveFields(getFieldResolutionTable());
+        if (bestField < 0) {
+            bestField = DAY_OF_MONTH;
+        }
+
+        return handleComputeJulianDay(bestField);
+    }
+
+    /**
+     * Return the field resolution array for this calendar.  Calendars that
+     * define additional fields or change the semantics of existing fields
+     * should override this method to adjust the field resolution semantics
+     * accordingly.  Other subclasses should not override this method.
+     * @see #resolveFields
+     */
+    protected int[][][] getFieldResolutionTable() {
+        return DATE_PRECEDENCE;
+    }
+
+    /**
+     * Return the Julian day number of day before the first day of the
+     * given month in the given extended year.  Subclasses should override
+     * this method to implement their calendar system.
+     * @param eyear the extended year
+     * @param month the zero-based month, or 0 if useMonth is false
+     * @param useMonth if false, compute the day before the first day of
+     * the given year, otherwise, compute the day before the first day of
+     * the given month
+     * @param return the Julian day number of the day before the first
+     * day of the given month and year
+     */
+    abstract protected int handleComputeMonthStart(int eyear, int month,
+                                                   boolean useMonth);
+
+    /**
+     * Return the extended year defined by the current fields.  This will
+     * use the EXTENDED_YEAR field or the YEAR and supra-year fields (such
+     * as ERA) specific to the calendar system, depending on which set of
+     * fields is newer.
+     * @return the extended year
+     */
+    abstract protected int handleGetExtendedYear();
+
+    /**
+     * Return the number of days in the given month of the given extended
+     * year of this calendar system.  Subclasses should override this
+     * method if they can provide a more correct or more efficient
+     * implementation than the default implementation in Calendar.
+     */
+    protected int handleGetMonthLength(int extendedYear, int month) {
+        return handleComputeMonthStart(extendedYear, month+1, true) -
+               handleComputeMonthStart(extendedYear, month, true);
+    }
+
+    /**
+     * Return the number of days in the given extended year of this
+     * calendar system.  Subclasses should override this method if they can
+     * provide a more correct or more efficient implementation than the
+     * default implementation in Calendar.
+     */
+    protected int handleGetYearLength(int eyear) {
+        return handleComputeMonthStart(eyear+1, 0, false) -
+               handleComputeMonthStart(eyear, 0, false);
+    }
+
+    /**
+     * Subclasses that use additional fields beyond those defined in
+     * <code>Calendar</code> should override this method to return an
+     * <code>int[]</code> array of the appropriate length.  The length
+     * must be at least <code>BASE_FIELD_COUNT</code> and no more than
+     * <code>MAX_FIELD_COUNT</code>.
+     */
+    protected int[] handleCreateFields() {
+        return new int[BASE_FIELD_COUNT];
+    }
+
+    /**
+     * Subclasses may override this.  This method calls
+     * handleGetMonthLength() to obtain the calendar-specific month
+     * length.
+     */
+    protected int handleComputeJulianDay(int bestField) {
+
+        boolean useMonth = (bestField == DAY_OF_MONTH ||
+                            bestField == WEEK_OF_MONTH ||
+                            bestField == DAY_OF_WEEK_IN_MONTH);
+
+        int year = handleGetExtendedYear();
+        internalSet(EXTENDED_YEAR, year);
+
+        // Get the Julian day of the day BEFORE the start of this year.
+        // If useMonth is true, get the day before the start of the month.
+        int julianDay = handleComputeMonthStart(year, useMonth ? internalGet(MONTH) : 0, useMonth);
+
+        if (bestField == DAY_OF_MONTH) {
+            return julianDay + internalGet(DAY_OF_MONTH, 1);
+        }
+
+        if (bestField == DAY_OF_YEAR) {
+            return julianDay + internalGet(DAY_OF_YEAR);
+        }
+
+        int firstDayOfWeek = getFirstDayOfWeek(); // Localized fdw
+
+        // At this point julianDay is the 0-based day BEFORE the first day of
+        // January 1, year 1 of the given calendar.  If julianDay == 0, it
+        // specifies (Jan. 1, 1) - 1, in whatever calendar we are using (Julian
+        // or Gregorian).
+
+        // At this point we need to process the WEEK_OF_MONTH or
+        // WEEK_OF_YEAR, which are similar, or the DAY_OF_WEEK_IN_MONTH.
+        // First, perform initial shared computations.  These locate the
+        // first week of the period.
+
+        // Get the 0-based localized DOW of day one of the month or year.
+        // Valid range 0..6.
+        int first = julianDayToDayOfWeek(julianDay + 1) - firstDayOfWeek;
+        if (first < 0) {
+            first += 7;
+        }
+        
+        // Get zero-based localized DOW, valid range 0..6.  This is the DOW
+        // we are looking for.
+        int dowLocal = 0;
+        switch (resolveFields(DOW_PRECEDENCE)) {
+        case DAY_OF_WEEK:
+            dowLocal = internalGet(DAY_OF_WEEK) - firstDayOfWeek;
+            break;
+        case DOW_LOCAL:
+            dowLocal = internalGet(DOW_LOCAL) - 1;
+            break;
+        }
+        dowLocal = dowLocal % 7;
+        if (dowLocal < 0) {
+            dowLocal += 7;
+        }
+
+        // Find the first target DOW (dowLocal) in the month or year.
+        // Actually, it may be just before the first of the month or year.
+        // It will be an integer from -5..7.
+        int date = 1 - first + dowLocal;
+
+        if (bestField == DAY_OF_WEEK_IN_MONTH) {
+
+            // Adjust the target DOW to be in the month or year.
+            if (date < 1) {
+                date += 7;
+            }
+
+            // The only trickiness occurs if the day-of-week-in-month is
+            // negative.
+            int dim = internalGet(DAY_OF_WEEK_IN_MONTH, 1);
+            if (dim >= 0) {
+                date += 7*(dim - 1);
+                
+            } else {
+                // Move date to the last of this day-of-week in this month,
+                // then back up as needed.  If dim==-1, we don't back up at
+                // all.  If dim==-2, we back up once, etc.  Don't back up
+                // past the first of the given day-of-week in this month.
+                // Note that we handle -2, -3, etc. correctly, even though
+                // values < -1 are technically disallowed.
+                int m = internalGet(MONTH, JANUARY);
+                int monthLength = handleGetMonthLength(year, m);
+                date += ((monthLength - date) / 7 + dim + 1) * 7;
+            }
+        } else {
+            // assert(bestField == WEEK_OF_MONTH || bestField == WEEK_OF_YEAR)
+
+            // Adjust for minimal days in first week
+            if ((7 - first) < getMinimalDaysInFirstWeek()) {
+                date += 7;
+            }
+
+            // Now adjust for the week number.
+            date += 7 * (internalGet(bestField) - 1);
+        }
+
+        return julianDay + date;
+    }
+
+    /**
+     * Compute the Julian day of a month of the Gregorian calendar.
+     * Subclasses may call this method to perform a Gregorian calendar
+     * fields->millis computation.  To perform a Gregorian calendar
+     * millis->fields computation, call computeGregorianFields().
+     * @param year extended Gregorian year
+     * @param month zero-based Gregorian month
+     * @return the Julian day number of the day before the first
+     * day of the given month in the given extended year
+     * @see #computeGregorianFields
+     */
+    protected int computeGregorianMonthStart(int year, int month) {
+
+        // If the month is out of range, adjust it into range, and
+        // modify the extended year value accordingly.
+        if (month < 0 || month > 11) {
+            int[] rem = new int[1];
+            year += floorDivide(month, 12, rem);
+            month = rem[0];
+        }
+
+        boolean isLeap = (year%4 == 0) && ((year%100 != 0) || (year%400 == 0));
+        int y = year - 1;
+        // This computation is actually ... + (JAN_1_1_JULIAN_DAY - 3) + 2.
+        // Add 2 because Gregorian calendar starts 2 days after Julian
+        // calendar.
+        int julianDay = 365*y + floorDivide(y, 4) - floorDivide(y, 100) +
+            floorDivide(y, 400) + JAN_1_1_JULIAN_DAY - 1;
+
+        // At this point julianDay indicates the day BEFORE the first day
+        // of January 1, <eyear> of the Gregorian calendar.
+        if (month != 0) {
+            julianDay += GREGORIAN_MONTH_COUNT[month][isLeap?3:2];
+        }
+
+        return julianDay;
+    }
+
+    //----------------------------------------------------------------------
+    // Subclass API
+    // For subclasses to override
+    //----------------------------------------------------------------------
+
+    /**
+     * Subclasses may override this method to compute several fields
+     * specific to each calendar system.  These are:
+     *
+     * <ul><li>ERA
+     * <li>YEAR
+     * <li>MONTH
+     * <li>DAY_OF_MONTH
+     * <li>DAY_OF_YEAR
+     * <li>EXTENDED_YEAR</ul>
+     * 
+     * Subclasses can refer to the DAY_OF_WEEK and DOW_LOCAL fields, which
+     * will be set when this method is called.  Subclasses can also call
+     * the getGregorianXxx() methods to obtain Gregorian calendar
+     * equivalents for the given Julian day.
+     *
+     * <p>In addition, subclasses should compute any subclass-specific
+     * fields, that is, fields from BASE_FIELD_COUNT to
+     * getFieldCount() - 1.
+     *
+     * <p>The default implementation in <code>Calendar</code> implements
+     * a pure proleptic Gregorian calendar.
+     */
+    protected void handleComputeFields(int julianDay) {
+        internalSet(MONTH, getGregorianMonth());
+        internalSet(DAY_OF_MONTH, getGregorianDayOfMonth());
+        internalSet(DAY_OF_YEAR, getGregorianDayOfYear());
+        int eyear = getGregorianYear();
+        internalSet(EXTENDED_YEAR, eyear);
+        int era = GregorianCalendar.AD;
+        if (eyear < 1) {
+            era = GregorianCalendar.BC;
+            eyear = 1 - eyear;
+        }
+        internalSet(ERA, era);
+        internalSet(YEAR, eyear);
+    }
+
+    //----------------------------------------------------------------------
+    // Subclass API
+    // For subclasses to call
+    //----------------------------------------------------------------------
+
+    /**
+     * Return the extended year on the Gregorian calendar as computed by
+     * <code>computeGregorianFields()</code>.
+     * @see #computeGregorianFields
+     */
+    protected final int getGregorianYear() {
+        return gregorianYear;
+    }
+
+    /**
+     * Return the month (0-based) on the Gregorian calendar as computed by
+     * <code>computeGregorianFields()</code>.
+     * @see #computeGregorianFields
+     */
+    protected final int getGregorianMonth() {
+        return gregorianMonth;
+    }
+
+    /**
+     * Return the day of year (1-based) on the Gregorian calendar as
+     * computed by <code>computeGregorianFields()</code>.
+     * @see #computeGregorianFields
+     */
+    protected final int getGregorianDayOfYear() {
+        return gregorianDayOfYear;
+    }
+
+    /**
+     * Return the day of month (1-based) on the Gregorian calendar as
+     * computed by <code>computeGregorianFields()</code>.
+     * @see #computeGregorianFields
+     */
+    protected final int getGregorianDayOfMonth() {
+        return gregorianDayOfMonth;
+    }
+
+    /**
+     * Return the number of fields defined by this calendar.  Valid field
+     * arguments to <code>set()</code> and <code>get()</code> are
+     * <code>0..getFieldCount()-1</code>.
+     */
+    public final int getFieldCount() {
+        return fields.length;
+    }
+
+    /**
+     * Set a field to a value.  Subclasses should use this method when
+     * computing fields.  It sets the time stamp in the
+     * <code>stamp[]</code> array to <code>INTERNALLY_SET</code>.  If a
+     * field that may not be set by subclasses is passed in, an
+     * <code>IllegalArgumentException</code> is thrown.  This prevents
+     * subclasses from modifying fields that are intended to be
+     * calendar-system invariant.
+     */
+    protected final void internalSet(int field, int value) {
+        if (((1 << field) & internalSetMask) == 0) {
+            throw new InternalError("Subclass cannot set " +
+                                               fieldName(field));
+        }
+        fields[field] = value;
+        stamp[field] = INTERNALLY_SET;
+    }
+
+    private static final int[][] GREGORIAN_MONTH_COUNT = {
+        //len len2   st  st2
+        {  31,  31,   0,   0 }, // Jan
+        {  28,  29,  31,  31 }, // Feb
+        {  31,  31,  59,  60 }, // Mar
+        {  30,  30,  90,  91 }, // Apr
+        {  31,  31, 120, 121 }, // May
+        {  30,  30, 151, 152 }, // Jun
+        {  31,  31, 181, 182 }, // Jul
+        {  31,  31, 212, 213 }, // Aug
+        {  30,  30, 243, 244 }, // Sep
+        {  31,  31, 273, 274 }, // Oct
+        {  30,  30, 304, 305 }, // Nov
+        {  31,  31, 334, 335 }  // Dec
+        // len  length of month
+        // len2 length of month in a leap year
+        // st   days in year before start of month
+        // st2  days in year before month in leap year
+    };
+
+    /**
+     * Determines if the given year is a leap year. Returns true if the
+     * given year is a leap year.
+     * @param year the given year.
+     * @return true if the given year is a leap year; false otherwise.
+     */
+    protected static final boolean isGregorianLeapYear(int year) {
+        return (year%4 == 0) && ((year%100 != 0) || (year%400 == 0));
+    }
+
+    /**
+     * Return the length of a month of the Gregorian calendar.
+     * @param y the extended year
+     * @param m the 0-based month number
+     * @return the number of days in the given month
+     */
+    protected static final int gregorianMonthLength(int y, int m) {
+        return GREGORIAN_MONTH_COUNT[m][isGregorianLeapYear(y)?1:0];
+    }
+
+    /**
+     * Return the length of a previous month of the Gregorian calendar.
+     * @param y the extended year
+     * @param m the 0-based month number
+     * @return the number of days in the month previous to the given month
+     */
+    protected static final int gregorianPreviousMonthLength(int y, int m) {
+        return (m > 0) ? gregorianMonthLength(y, m-1) : 31;
+    }
+
+    /**
+     * Divide two long integers, returning the floor of the quotient.
+     * <p>
+     * Unlike the built-in division, this is mathematically well-behaved.
+     * E.g., <code>-1/4</code> => 0
+     * but <code>floorDivide(-1,4)</code> => -1.
+     * @param numerator the numerator
+     * @param denominator a divisor which must be > 0
+     * @return the floor of the quotient.
+     */
+    protected static final long floorDivide(long numerator, long denominator) {
+        // We do this computation in order to handle
+        // a numerator of Long.MIN_VALUE correctly
+        return (numerator >= 0) ?
+            numerator / denominator :
+            ((numerator + 1) / denominator) - 1;
+    }
+
+    /**
+     * Divide two integers, returning the floor of the quotient.
+     * <p>
+     * Unlike the built-in division, this is mathematically well-behaved.
+     * E.g., <code>-1/4</code> => 0
+     * but <code>floorDivide(-1,4)</code> => -1.
+     * @param numerator the numerator
+     * @param denominator a divisor which must be > 0
+     * @return the floor of the quotient.
+     */
+    protected static final int floorDivide(int numerator, int denominator) {
+        // We do this computation in order to handle
+        // a numerator of Integer.MIN_VALUE correctly
+        return (numerator >= 0) ?
+            numerator / denominator :
+            ((numerator + 1) / denominator) - 1;
+    }
+
+    /**
+     * Divide two integers, returning the floor of the quotient, and
+     * the modulus remainder.
+     * <p>
+     * Unlike the built-in division, this is mathematically well-behaved.
+     * E.g., <code>-1/4</code> => 0 and <code>-1%4</code> => -1,
+     * but <code>floorDivide(-1,4)</code> => -1 with <code>remainder[0]</code> => 3.
+     * @param numerator the numerator
+     * @param denominator a divisor which must be > 0
+     * @param remainder an array of at least one element in which the value
+     * <code>numerator mod denominator</code> is returned. Unlike <code>numerator
+     * % denominator</code>, this will always be non-negative.
+     * @return the floor of the quotient.
+     */
+    protected static final int floorDivide(int numerator, int denominator, int[] remainder) {
+        if (numerator >= 0) {
+            remainder[0] = numerator % denominator;
+            return numerator / denominator;
+        }
+	int quotient = ((numerator + 1) / denominator) - 1;
+        remainder[0] = numerator - (quotient * denominator);
+        return quotient;
+    }
+
+    /**
+     * Divide two integers, returning the floor of the quotient, and
+     * the modulus remainder.
+     * <p>
+     * Unlike the built-in division, this is mathematically well-behaved.
+     * E.g., <code>-1/4</code> => 0 and <code>-1%4</code> => -1,
+     * but <code>floorDivide(-1,4)</code> => -1 with <code>remainder[0]</code> => 3.
+     * @param numerator the numerator
+     * @param denominator a divisor which must be > 0
+     * @param remainder an array of at least one element in which the value
+     * <code>numerator mod denominator</code> is returned. Unlike <code>numerator
+     * % denominator</code>, this will always be non-negative.
+     * @return the floor of the quotient.
+     */
+    protected static final int floorDivide(long numerator, int denominator, int[] remainder) {
+        if (numerator >= 0) {
+            remainder[0] = (int)(numerator % denominator);
+            return (int)(numerator / denominator);
+        }
+        int quotient = (int)(((numerator + 1) / denominator) - 1);
+        remainder[0] = (int)(numerator - (quotient * denominator));
+        return quotient;
+    }
+
+    private static final String[] FIELD_NAME = {
+        "ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH",
+        "DAY_OF_MONTH", "DAY_OF_YEAR", "DAY_OF_WEEK",
+        "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR", "HOUR_OF_DAY",
+        "MINUTE", "SECOND", "MILLISECOND", "ZONE_OFFSET",
+        "DST_OFFSET", "YEAR_WOY", "DOW_LOCAL", "EXTENDED_YEAR",
+        "JULIAN_DAY", "MILLISECONDS_IN_DAY",
+    };
+
+    /**
+     * Return a string name for a field, for debugging and exceptions.
+     */
+    protected String fieldName(int field) {
+        try {
+            return FIELD_NAME[field];
+        } catch (ArrayIndexOutOfBoundsException e) {
+            return "Field " + field;
+        }
+    }
+
+    /**
+     * Converts time as milliseconds to Julian day.
+     * @param millis the given milliseconds.
+     * @return the Julian day number.
+     */
+    protected static final int millisToJulianDay(long millis) {
+        return (int) (EPOCH_JULIAN_DAY + floorDivide(millis, ONE_DAY));
+    }
+
+    /**
+     * Converts Julian day to time as milliseconds.
+     * @param julian the given Julian day number.
+     * @return time as milliseconds.
+     */
+    protected static final long julianDayToMillis(int julian) {
+        return (julian - EPOCH_JULIAN_DAY) * ONE_DAY;
+    }
+
+    /**
+     * Return the day of week, from SUNDAY to SATURDAY, given a Julian day.
+     */
+    protected static final int julianDayToDayOfWeek(int julian) {
+        // If julian is negative, then julian%7 will be negative, so we adjust
+        // accordingly.  Julian day 0 is Monday.
+        int dayOfWeek = (julian + MONDAY) % 7;
+        if (dayOfWeek < SUNDAY) {
+            dayOfWeek += 7;
+        }
+        return dayOfWeek;
+    }
+
+    /**
+     * Return the current milliseconds without recomputing.
+     */
+    protected final long internalGetTimeInMillis() {
+        return time;
+    }
+}
diff --git a/src/com/ibm/icu/util/CalendarAstronomer.java b/src/com/ibm/icu/util/CalendarAstronomer.java
new file mode 100755
index 0000000..6c3aea3
--- /dev/null
+++ b/src/com/ibm/icu/util/CalendarAstronomer.java
@@ -0,0 +1,1218 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/Attic/CalendarAstronomer.java,v $ 
+ * $Date: 2002/02/16 03:06:25 $ 
+ * $Revision: 1.6 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.util.*;
+import java.text.*;
+
+/**
+ * <code>CalendarAstronomer</code> is a class that can perform the calculations to
+ * determine the positions of the sun and moon, the time of sunrise and
+ * sunset, and other astronomy-related data.  The calculations it performs
+ * are in some cases quite complicated, and this utility class saves you
+ * the trouble of worrying about them.
+ * <p>
+ * The measurement of time is a very important part of astronomy.  Because
+ * astronomical bodies are constantly in motion, observations are only valid
+ * at a given moment in time.  Accordingly, each <code>CalendarAstronomer</code>
+ * object has a <code>time</code> property that determines the date
+ * and time for which its calculations are performed.  You can set and
+ * retrieve this property with {@link #setDate setDate}, {@link #getDate getDate}
+ * and related methods.
+ * <p>
+ * Almost all of the calculations performed by this class, or by any
+ * astronomer, are approximations to various degrees of accuracy.  The
+ * calculations in this class are mostly modelled after those described
+ * in the book
+ * <a href="http://www.amazon.com/exec/obidos/ISBN=0521356997" target="_top">
+ * Practical Astronomy With Your Calculator</a>, by Peter J.
+ * Duffett-Smith, Cambridge University Press, 1990.  This is an excellent
+ * book, and if you want a greater understanding of how these calculations
+ * are performed it a very good, readable starting point.
+ * <p>
+ * <strong>WARNING:</strong> This class is very early in its development, and
+ * it is highly likely that its API will change to some degree in the future.
+ * At the moment, it basically does just enough to support {@link IslamicCalendar}
+ * and {@link ChineseCalendar}.
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ */
+public class CalendarAstronomer {
+    
+    //-------------------------------------------------------------------------
+    // Astronomical constants
+    //-------------------------------------------------------------------------
+
+    /**
+     * The number of standard hours in one sidereal day.
+     * Approximately 24.93.
+     */
+    public static final double SIDEREAL_DAY = 23.93446960027;
+    
+    /**
+     * The number of sidereal hours in one mean solar day.
+     * Approximately 24.07.
+     */
+    public static final double SOLAR_DAY =  24.065709816;
+    
+    /**
+     * The average number of solar days from one new moon to the next.  This is the time
+     * it takes for the moon to return the same ecliptic longitude as the sun.
+     * It is longer than the sidereal month because the sun's longitude increases
+     * during the year due to the revolution of the earth around the sun.
+     * Approximately 29.53.
+     *
+     * @see #SIDEREAL_MONTH
+     */
+    public static final double SYNODIC_MONTH = 29.530588853;
+    
+    /**
+     * The average number of days it takes
+     * for the moon to return to the same ecliptic longitude relative to the
+     * stellar background.  This is referred to as the sidereal month.
+     * It is shorter than the synodic month due to
+     * the revolution of the earth around the sun.
+     * Approximately 27.32.
+     *
+     * @see #SYNODIC_MONTH
+     */
+    public static final double SIDEREAL_MONTH = 27.32166;
+    
+    /**
+     * The average number number of days between successive vernal equinoxes.
+     * Due to the precession of the earth's
+     * axis, this is not precisely the same as the sidereal year.
+     * Approximately 365.24
+     *
+     * @see #SIDEREAL_YEAR
+     */
+    public static final double TROPICAL_YEAR = 365.242191;
+    
+    /**
+     * The average number of days it takes
+     * for the sun to return to the same position against the fixed stellar
+     * background.  This is the duration of one orbit of the earth about the sun
+     * as it would appear to an outside observer.
+     * Due to the precession of the earth's
+     * axis, this is not precisely the same as the tropical year.
+     * Approximately 365.25.
+     *
+     * @see #TROPICAL_YEAR
+     */
+    public static final double SIDEREAL_YEAR = 365.25636;
+
+    //-------------------------------------------------------------------------
+    // Time-related constants
+    //-------------------------------------------------------------------------
+
+    /** The number of milliseconds in one second. */
+    public static final int  SECOND_MS = 1000;
+
+    /** The number of milliseconds in one minute. */
+    public static final int  MINUTE_MS = 60*SECOND_MS;
+
+    /** The number of milliseconds in one hour. */
+    public static final int  HOUR_MS   = 60*MINUTE_MS;
+
+    /** The number of milliseconds in one day. */
+    public static final long DAY_MS    = 24*HOUR_MS;
+
+    /**
+     * The start of the julian day numbering scheme used by astronomers, which
+     * is 1/1/4713 BC (Julian), 12:00 GMT.  This is given as the number of milliseconds
+     * since 1/1/1970 AD (Gregorian), a negative number.
+     * Note that julian day numbers and
+     * the Julian calendar are <em>not</em> the same thing.  Also note that
+     * julian days start at <em>noon</em>, not midnight.
+     */
+    public static final long JULIAN_EPOCH_MS = -210866760000000L;
+    
+
+    //-------------------------------------------------------------------------
+    // Assorted private data used for conversions
+    //-------------------------------------------------------------------------
+
+    // My own copies of these so compilers are more likely to optimize them away
+    static private final double PI = 3.14159265358979323846;
+    static private final double PI2 = PI * 2.0;
+
+    static private final double HOUR_RAD = PI / 12;        // hours -> radians
+    static private final double RAD_HOUR = 12 / PI;        // radians -> hours
+    static private final double DEG_RAD  = PI / 180;        // degrees -> radians
+    static private final double RAD_DEG  = 180 / PI;        // radians -> degrees
+    
+    //-------------------------------------------------------------------------
+    // Constructors
+    //-------------------------------------------------------------------------
+
+    /**
+     * Construct a new <code>CalendarAstronomer</code> object that is initialized to
+     * the current date and time.
+     */
+    public CalendarAstronomer() {
+        this(System.currentTimeMillis());
+    }
+    
+    /**
+     * Construct a new <code>CalendarAstronomer</code> object that is initialized to
+     * the specified date and time.
+     */
+    public CalendarAstronomer(Date d) {
+        this(d.getTime());
+    }
+    
+    /**
+     * Construct a new <code>CalendarAstronomer</code> object that is initialized to
+     * the specified time.  The time is expressed as a number of milliseconds since
+     * January 1, 1970 AD (Gregorian).
+     *
+     * @see java.util.Date#getTime
+     */
+    public CalendarAstronomer(long aTime) {
+        time = aTime;
+    }
+    
+    /**
+     * Construct a new <code>CalendarAstronomer</code> object with the given
+     * latitude and longitude.  The object's time is set to the current
+     * date and time.
+     * <p>
+     * @param longitude The desired longitude, in <em>degrees</em> east of
+     *                  the Greenwich meridian.
+     *
+     * @param latitude  The desired latitude, in <em>degrees</em>.  Positive
+     *                  values signify North, negative South.
+     *
+     * @see java.util.Date#getTime
+     */
+    public CalendarAstronomer(double longitude, double latitude) {
+        this();
+        fLongitude = normPI(longitude * DEG_RAD);
+        fLatitude  = normPI(latitude  * DEG_RAD);
+        fGmtOffset = (long)(fLongitude * 24 * HOUR_MS / PI2);
+    }
+    
+    
+    //-------------------------------------------------------------------------
+    // Time and date getters and setters
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Set the current date and time of this <code>CalendarAstronomer</code> object.  All
+     * astronomical calculations are performed based on this time setting.
+     *
+     * @param aTime the date and time, expressed as the number of milliseconds since
+     *              1/1/1970 0:00 GMT (Gregorian).
+     *
+     * @see #setDate
+     * @see #getTime
+     */
+    public void setTime(long aTime) {
+        time = aTime;
+        clearCache();
+    }
+    
+    /**
+     * Set the current date and time of this <code>CalendarAstronomer</code> object.  All
+     * astronomical calculations are performed based on this time setting.
+     *
+     * @param aTime the time and date, expressed as a <code>Date</code> object.
+     *
+     * @see #setTime
+     * @see #getDate
+     */
+    public void setDate(Date date) {
+        setTime(date.getTime());
+    }
+    
+    /**
+     * Set the current date and time of this <code>CalendarAstronomer</code> object.  All
+     * astronomical calculations are performed based on this time setting.
+     *
+     * @param jdn   the desired time, expressed as a "julian day number",
+     *              which is the number of elapsed days since 
+     *              1/1/4713 BC (Julian), 12:00 GMT.  Note that julian day
+     *              numbers start at <em>noon</em>.  To get the jdn for
+     *              the corresponding midnight, subtract 0.5.
+     *
+     * @see #getJulianDay
+     * @see #JULIAN_EPOCH_MS
+     */
+    public void setJulianDay(double jdn) {
+        time = (long)(jdn * DAY_MS) + JULIAN_EPOCH_MS;
+        clearCache();
+        julianDay = jdn;
+    }
+    
+    /**
+     * Get the current time of this <code>CalendarAstronomer</code> object,
+     * represented as the number of milliseconds since
+     * 1/1/1970 AD 0:00 GMT (Gregorian).
+     *
+     * @see #setTime
+     * @see #getDate
+     */
+    public long getTime() {
+        return time;
+    }
+    
+    /**
+     * Get the current time of this <code>CalendarAstronomer</code> object,
+     * represented as a <code>Date</code> object.
+     *
+     * @see #setDate
+     * @see #getTime
+     */
+    public Date getDate() {
+        return new Date(time);
+    }
+    
+    /**
+     * Get the current time of this <code>CalendarAstronomer</code> object,
+     * expressed as a "julian day number", which is the number of elapsed
+     * days since 1/1/4713 BC (Julian), 12:00 GMT.
+     *
+     * @see #setJulianDay
+     * @see #JULIAN_EPOCH_MS
+     */
+    public double getJulianDay() {
+        if (julianDay == INVALID) {
+            julianDay = (double)(time - JULIAN_EPOCH_MS) / (double)DAY_MS;
+        }
+        return julianDay;
+    }
+    
+    /**
+     * Return this object's time expressed in julian centuries:
+     * the number of centuries after 1/1/1900 AD, 12:00 GMT
+     *
+     * @see #getJulianDay
+     */
+    public double getJulianCentury() {
+        if (julianCentury == INVALID) {
+            julianCentury = (getJulianDay() - 2415020.0) / 36525;
+        }
+        return julianCentury;
+    }
+
+    /**
+     * Returns the current Greenwich sidereal time, measured in hours
+     */
+    public double getGreenwichSidereal() {
+        if (siderealTime == INVALID) {
+            // See page 86 of "Practial Astronomy with your Calculator",
+            // by Peter Duffet-Smith, for details on the algorithm.
+                
+            double UT = normalize((double)time/HOUR_MS, 24);
+        
+            siderealTime = normalize(getSiderealOffset() + UT*1.002737909, 24);
+        }
+        return siderealTime;
+    }
+    
+    private double getSiderealOffset() {
+        if (siderealT0 == INVALID) {
+            double JD  = Math.floor(getJulianDay() - 0.5) + 0.5;
+            double S   = JD - 2451545.0;
+            double T   = S / 36525.0;
+            siderealT0 = normalize(6.697374558 + 2400.051336*T + 0.000025862*T*T, 24);
+        }
+        return siderealT0;
+    }
+    
+    /**
+     * Returns the current local sidereal time, measured in hours
+     */
+    public double getLocalSidereal() {
+        return normalize(getGreenwichSidereal() + (double)fGmtOffset/HOUR_MS, 24);
+    }
+    
+    /**
+     * Converts local sidereal time to Universal Time.
+     *
+     * @param lst   The Local Sidereal Time, in hours since sidereal midnight
+     *              on this object's current date.
+     *
+     * @return      The corresponding Universal Time, in milliseconds since
+     *              1 Jan 1970, GMT.  
+     */
+    private long lstToUT(double lst) {
+        // Convert to local mean time
+        double lt = normalize((lst - getSiderealOffset()) * 0.9972695663, 24);
+        
+        // Then find local midnight on this day
+        long base = DAY_MS * ((time + fGmtOffset)/DAY_MS) - fGmtOffset;
+        
+        //out("    lt  =" + lt + " hours");
+        //out("    base=" + new Date(base));
+        
+        return base + (long)(lt * HOUR_MS);
+    }
+    
+    
+    //-------------------------------------------------------------------------
+    // Coordinate transformations, all based on the current time of this object
+    //-------------------------------------------------------------------------
+
+    /**
+     * Convert from ecliptic to equatorial coordinates.
+     *
+     * @param ecliptic  A point in the sky in ecliptic coordinates.
+     * @return          The corresponding point in equatorial coordinates.
+     */
+    public final Equatorial eclipticToEquatorial(Ecliptic ecliptic)
+    {
+        return eclipticToEquatorial(ecliptic.longitude, ecliptic.latitude);
+    }
+
+    /**
+     * Convert from ecliptic to equatorial coordinates.
+     *
+     * @param eclipLong     The ecliptic longitude
+     * @param eclipLat      The ecliptic latitude
+     *
+     * @return              The corresponding point in equatorial coordinates.
+     */
+    public final Equatorial eclipticToEquatorial(double eclipLong, double eclipLat)
+    {
+        // See page 42 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+
+        double obliq = eclipticObliquity();
+        double sinE = Math.sin(obliq);
+        double cosE = Math.cos(obliq);
+        
+        double sinL = Math.sin(eclipLong);
+        double cosL = Math.cos(eclipLong);
+        
+        double sinB = Math.sin(eclipLat);
+        double cosB = Math.cos(eclipLat);
+        double tanB = Math.tan(eclipLat);
+        
+        return new Equatorial(Math.atan2(sinL*cosE - tanB*sinE, cosL),
+                               Math.asin(sinB*cosE + cosB*sinE*sinL) );
+    }
+
+    /**
+     * Convert from ecliptic longitude to equatorial coordinates.
+     *
+     * @param eclipLong     The ecliptic longitude
+     *
+     * @return              The corresponding point in equatorial coordinates.
+     */
+    public final Equatorial eclipticToEquatorial(double eclipLong)
+    {
+        return eclipticToEquatorial(eclipLong, 0);  // TODO: optimize
+    }
+
+
+    public Horizon eclipticToHorizon(double eclipLong)
+    {
+        Equatorial equatorial = eclipticToEquatorial(eclipLong);
+        
+        double H = getLocalSidereal()*PI/12 - equatorial.ascension;     // Hour-angle
+        
+        double sinH = Math.sin(H);
+        double cosH = Math.cos(H);
+        double sinD = Math.sin(equatorial.declination);
+        double cosD = Math.cos(equatorial.declination);
+        double sinL = Math.sin(fLatitude);
+        double cosL = Math.cos(fLatitude);
+        
+        double altitude = Math.asin(sinD*sinL + cosD*cosL*cosH);
+        double azimuth  = Math.atan2(-cosD*cosL*sinH, sinD - sinL * Math.sin(altitude));
+
+        return new Horizon(azimuth, altitude);
+    }
+
+    
+    //-------------------------------------------------------------------------
+    // The Sun
+    //-------------------------------------------------------------------------
+    
+    //
+    // Parameters of the Sun's orbit as of 1/1/1990
+    // Angles are in radians (after multiplying by PI/180)
+    //
+    double jdnEpoch  = 2447891.5;           // JDN of epoch (Jan 0.0 1990)
+
+    double sunEtaG   = 279.403303 * PI/180; // Ecliptic longitude at epoch
+    double sunOmegaG = 282.768422 * PI/180; // Ecliptic longitude of perigee
+    double sunE      =   0.016713;          // Eccentricity of orbit
+    double sunR0     =   1.495585e8;        // Semi-major axis in KM
+    double sunTheta0 =   0.533128 * PI/180; // Angular diameter at R0
+
+    /**
+     * The longitude of the sun at the time specified by this object.
+     * The longitude is measured in radians along the ecliptic
+     * from the "first point of Aries," the point at which the ecliptic
+     * crosses the earth's equatorial plane at the vernal equinox.
+     * <p>
+     * Currently, this method uses an approximation of the two-body Kepler's
+     * equation for the earth and the sun.  It does not take into account the
+     * perturbations caused by the other planets, the moon, etc.
+     */
+    public double getSunLongitude()
+    {
+        // See page 86 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        
+        if (sunLongitude == INVALID) {
+            double day = getJulianDay() - jdnEpoch;       // Days since epoch
+            
+            // Find the angular distance the sun in a fictitious
+            // circular orbit has travelled since the epoch.
+            double epochAngle = norm2PI(PI2/TROPICAL_YEAR*day);
+            
+            // The epoch wasn't at the sun's perigee; find the angular distance
+            // since perigee, which is called the "mean anomaly"
+            meanAnomalySun = norm2PI(epochAngle + sunEtaG - sunOmegaG);
+            
+            // Now find the "true anomaly", e.g. the real solar longitude
+            // by solving Kepler's equation for an elliptical orbit
+            sunLongitude = norm2PI(trueAnomaly(meanAnomalySun, sunE) + sunOmegaG);
+        }
+        return sunLongitude;
+    }
+  
+    /**
+     * The position of the sun at this object's current date and time,
+     * in equatorial coordinates.
+     */
+    public Equatorial getSunPosition() {
+        return eclipticToEquatorial(getSunLongitude(), 0);
+    }
+    
+    private static class SolarLongitude {
+        double value;
+        SolarLongitude(double val) { value = val; }
+    }
+    
+    /**
+     * Constant representing the vernal equinox.
+     * For use with {@link #getSunTime getSunTime}. 
+     * Note: In this case, "vernal" refers to the northern hemisphere's seasons.
+     */
+    public static final SolarLongitude VERNAL_EQUINOX  = new SolarLongitude(0);
+    
+    /**
+     * Constant representing the summer solstice.
+     * For use with {@link #getSunTime getSunTime}.
+     * Note: In this case, "summer" refers to the northern hemisphere's seasons.
+     */
+    public static final SolarLongitude SUMMER_SOLSTICE = new SolarLongitude(PI/2);
+    
+    /**
+     * Constant representing the autumnal equinox.
+     * For use with {@link #getSunTime getSunTime}.
+     * Note: In this case, "autumn" refers to the northern hemisphere's seasons.
+     */
+    public static final SolarLongitude AUTUMN_EQUINOX  = new SolarLongitude(PI);
+    
+    /**
+     * Constant representing the winter solstice.
+     * For use with {@link #getSunTime getSunTime}.
+     * Note: In this case, "winter" refers to the northern hemisphere's seasons.
+     */
+    public static final SolarLongitude WINTER_SOLSTICE = new SolarLongitude((PI*3)/2);
+    
+    /**
+     * Find the next time at which the sun's ecliptic longitude will have
+     * the desired value.  
+     */
+    public long getSunTime(double desired, boolean next)
+    {
+        return timeOfAngle( new AngleFunc() { public double eval() { return getSunLongitude(); } },
+                            desired,
+                            TROPICAL_YEAR,
+                            MINUTE_MS,
+                            next);
+    }
+    
+    /**
+     * Find the next time at which the sun's ecliptic longitude will have
+     * the desired value.  
+     */
+    public long getSunTime(SolarLongitude desired, boolean next) {
+        return getSunTime(desired.value, next);
+    }
+    
+    /**
+     * Returns the time (GMT) of sunrise or sunset on the local date to which
+     * this calendar is currently set.
+     */
+    public long getSunRiseSet(boolean rise)
+    {
+        // Make a rough guess: 6am or 6pm local time on the current day
+        long noon = ((time + fGmtOffset)/DAY_MS)*DAY_MS - fGmtOffset + 12*HOUR_MS;
+        
+        setTime(noon + (long)((rise ? -6 : 6) * HOUR_MS));
+        
+        return riseOrSet(new CoordFunc() {
+                            public Equatorial eval() { return getSunPosition(); }
+                         },
+                         rise,
+                         .533 * DEG_RAD,        // Angular Diameter
+                         34 /60.0 * DEG_RAD,    // Refraction correction
+                         MINUTE_MS);            // Desired accuracy
+    }
+
+    //-------------------------------------------------------------------------
+    // The Moon
+    //-------------------------------------------------------------------------
+    
+    static final double moonL0 = 318.351648 * PI/180;   // Mean long. at epoch
+    static final double moonP0 =  36.340410 * PI/180;   // Mean long. of perigee
+    static final double moonN0 = 318.510107 * PI/180;   // Mean long. of node
+    static final double moonI  =   5.145366 * PI/180;   // Inclination of orbit
+    static final double moonE  =   0.054900;            // Eccentricity of orbit
+    
+    // These aren't used right now
+    static final double moonA  =   3.84401e5;           // semi-major axis (km)
+    static final double moonT0 =   0.5181 * PI/180;     // Angular size at distance A
+    static final double moonPi =   0.9507 * PI/180;     // Parallax at distance A
+    
+    /**
+     * The position of the moon at the time set on this
+     * object, in equatorial coordinates.
+     */
+    public Equatorial getMoonPosition()
+    {
+        //
+        // See page 142 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        //
+        if (moonPosition == null) {
+            // Calculate the solar longitude.  Has the side effect of
+            // filling in "meanAnomalySun" as well.
+            double sunLongitude = getSunLongitude();
+            
+            //
+            // Find the # of days since the epoch of our orbital parameters.
+            // TODO: Convert the time of day portion into ephemeris time
+            //
+            double day = getJulianDay() - jdnEpoch;       // Days since epoch
+            
+            // Calculate the mean longitude and anomaly of the moon, based on
+            // a circular orbit.  Similar to the corresponding solar calculation.
+            double meanLongitude = norm2PI(13.1763966*PI/180*day + moonL0);
+            double meanAnomalyMoon = norm2PI(meanLongitude - 0.1114041*PI/180 * day - moonP0);
+            
+            //
+            // Calculate the following corrections:
+            //  Evection:   the sun's gravity affects the moon's eccentricity
+            //  Annual Eqn: variation in the effect due to earth-sun distance
+            //  A3:         correction factor (for ???)
+            //
+            double evection = 1.2739*PI/180 * Math.sin(2 * (meanLongitude - sunLongitude)
+                                                - meanAnomalyMoon);
+            double annual   = 0.1858*PI/180 * Math.sin(meanAnomalySun);
+            double a3       = 0.3700*PI/180 * Math.sin(meanAnomalySun);
+
+            meanAnomalyMoon += evection - annual - a3;
+            
+            //
+            // More correction factors:
+            //  center  equation of the center correction
+            //  a4      yet another error correction (???)
+            //
+            // TODO: Skip the equation of the center correction and solve Kepler's eqn?
+            //
+            double center = 6.2886*PI/180 * Math.sin(meanAnomalyMoon);
+            double a4 =     0.2140*PI/180 * Math.sin(2 * meanAnomalyMoon);
+            
+            // Now find the moon's corrected longitude
+            moonLongitude = meanLongitude + evection + center - annual + a4;
+
+            //
+            // And finally, find the variation, caused by the fact that the sun's
+            // gravitational pull on the moon varies depending on which side of
+            // the earth the moon is on
+            //
+            double variation = 0.6583*PI/180 * Math.sin(2*(moonLongitude - sunLongitude));
+            
+            moonLongitude += variation;
+            
+            //
+            // What we've calculated so far is the moon's longitude in the plane
+            // of its own orbit.  Now map to the ecliptic to get the latitude
+            // and longitude.  First we need to find the longitude of the ascending
+            // node, the position on the ecliptic where it is crossed by the moon's
+            // orbit as it crosses from the southern to the northern hemisphere.
+            //
+            double nodeLongitude = norm2PI(moonN0 - 0.0529539*PI/180 * day);
+
+            nodeLongitude -= 0.16*PI/180 * Math.sin(meanAnomalySun);
+
+            double y = Math.sin(moonLongitude - nodeLongitude);
+            double x = Math.cos(moonLongitude - nodeLongitude);
+            
+            moonEclipLong = Math.atan2(y*Math.cos(moonI), x) + nodeLongitude;
+            double moonEclipLat = Math.asin(y * Math.sin(moonI));
+
+            moonPosition = eclipticToEquatorial(moonEclipLong, moonEclipLat);
+        }
+        return moonPosition;
+    }
+    
+    /**
+     * The "age" of the moon at the time specified in this object.
+     * This is really the angle between the
+     * current ecliptic longitudes of the sun and the moon,
+     * measured in radians.
+     *
+     * @see #getMoonPhase
+     */
+    public double getMoonAge() {
+        // See page 147 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        //
+        // Force the moon's position to be calculated.  We're going to use
+        // some the intermediate results cached during that calculation.
+        //
+        getMoonPosition();
+        
+        return norm2PI(moonEclipLong - sunLongitude);
+    }
+    
+    /**
+     * Calculate the phase of the moon at the time set in this object.
+     * The returned phase is a <code>double</code> in the range
+     * <code>0 <= phase < 1</code>, interpreted as follows:
+     * <ul>
+     * <li>0.00: New moon
+     * <li>0.25: First quarter
+     * <li>0.50: Full moon
+     * <li>0.75: Last quarter
+     * </ul>
+     *
+     * @see #getMoonAge
+     */
+    public double getMoonPhase() {
+        // See page 147 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        return 0.5 * (1 - Math.cos(getMoonAge()));
+    }
+    
+    private static class MoonAge {
+        double value;
+        MoonAge(double val) { value = val; }
+    }
+    
+    /**
+     * Constant representing a new moon.
+     * For use with {@link #getMoonTime getMoonTime}
+     */
+    public static final MoonAge NEW_MOON      = new MoonAge(0);
+
+    /**
+     * Constant representing the moon's first quarter.
+     * For use with {@link #getMoonTime getMoonTime}
+     */
+    public static final MoonAge FIRST_QUARTER = new MoonAge(PI/2);
+    
+    /**
+     * Constant representing a full moon.
+     * For use with {@link #getMoonTime getMoonTime}
+     */
+    public static final MoonAge FULL_MOON     = new MoonAge(PI);
+    
+    /**
+     * Constant representing the moon's last quarter.
+     * For use with {@link #getMoonTime getMoonTime}
+     */
+    public static final MoonAge LAST_QUARTER  = new MoonAge((PI*3)/2);
+    
+    /**
+     * Find the next or previous time at which the Moon's ecliptic
+     * longitude will have the desired value.  
+     * <p>
+     * @param desired   The desired longitude.
+     * @param next      <tt>true</tt> if the next occurrance of the phase
+     *                  is desired, <tt>false</tt> for the previous occurrance. 
+     */
+    public long getMoonTime(double desired, boolean next)
+    {
+        return timeOfAngle( new AngleFunc() {
+                            public double eval() { return getMoonAge(); } },
+                            desired,
+                            SYNODIC_MONTH,
+                            MINUTE_MS,
+                            next);
+    }
+    
+    /**
+     * Find the next or previous time at which the moon will be in the
+     * desired phase.
+     * <p>
+     * @param desired   The desired phase of the moon.
+     * @param next      <tt>true</tt> if the next occurrance of the phase
+     *                  is desired, <tt>false</tt> for the previous occurrance. 
+     */
+    public long getMoonTime(MoonAge desired, boolean next) {
+        return getMoonTime(desired.value, next);
+    }
+    
+    /**
+     * Returns the time (GMT) of sunrise or sunset on the local date to which
+     * this calendar is currently set.
+     */
+    public long getMoonRiseSet(boolean rise)
+    {
+        return riseOrSet(new CoordFunc() {
+                            public Equatorial eval() { return getMoonPosition(); }
+                         },
+                         rise,
+                         .533 * DEG_RAD,        // Angular Diameter
+                         34 /60.0 * DEG_RAD,    // Refraction correction
+                         MINUTE_MS);            // Desired accuracy
+    }
+
+    //-------------------------------------------------------------------------
+    // Interpolation methods for finding the time at which a given event occurs
+    //-------------------------------------------------------------------------
+    
+    private interface AngleFunc {
+        public double eval();
+    };
+    
+    private long timeOfAngle(AngleFunc func, double desired,
+                             double periodDays, long epsilon, boolean next)
+    {
+        // Find the value of the function at the current time
+        double lastAngle = func.eval();
+        
+        // Find out how far we are from the desired angle
+        double deltaAngle = norm2PI(desired - lastAngle) ;
+        
+        // Using the average period, estimate the next (or previous) time at
+        // which the desired angle occurs.
+        double deltaT =  (deltaAngle + (next ? 0 : -PI2)) * (periodDays*DAY_MS) / PI2;
+        
+        double lastDeltaT = deltaT; // Liu
+        long startTime = time; // Liu
+        
+        setTime(time + (long)deltaT);
+
+        // Now iterate until we get the error below epsilon.  Throughout
+        // this loop we use normPI to get values in the range -Pi to Pi,
+        // since we're using them as correction factors rather than absolute angles.
+        do {
+            // Evaluate the function at the time we've estimated
+            double angle = func.eval();
+
+            // Find the # of milliseconds per radian at this point on the curve
+            double factor = Math.abs(deltaT / normPI(angle-lastAngle));
+
+            // Correct the time estimate based on how far off the angle is
+            deltaT = normPI(desired - angle) * factor;
+            
+            // HACK:
+            // 
+            // If abs(deltaT) begins to diverge we need to quit this loop.
+            // This only appears to happen when attempting to locate, for
+            // example, a new moon on the day of the new moon.  E.g.:
+            // 
+            // This result is correct:
+            // newMoon(7508(Mon Jul 23 00:00:00 CST 1990,false))=
+            //   Sun Jul 22 10:57:41 CST 1990
+            // 
+            // But attempting to make the same call a day earlier causes deltaT
+            // to diverge:
+            // CalendarAstronomer.timeOfAngle() diverging: 1.348508727575625E9 ->
+            //   1.3649828540224032E9
+            // newMoon(7507(Sun Jul 22 00:00:00 CST 1990,false))=
+            //   Sun Jul 08 13:56:15 CST 1990
+            //
+            // As a temporary solution, we catch this specific condition and
+            // adjust our start time by one eighth period days (either forward
+            // or backward) and try again.
+            // Liu 11/9/00
+            if (Math.abs(deltaT) > Math.abs(lastDeltaT)) {
+                long delta = (long) (periodDays * DAY_MS / 8);
+                setTime(startTime + (next ? delta : -delta));
+                return timeOfAngle(func, desired, periodDays, epsilon, next);
+            }
+
+            lastDeltaT = deltaT;
+            lastAngle = angle;
+
+            setTime(time + (long)deltaT);
+        }
+        while (Math.abs(deltaT) > epsilon);
+        
+        return time;
+    }
+    
+    private interface CoordFunc {
+        public Equatorial eval();
+    };
+    
+    private long riseOrSet(CoordFunc func, boolean rise,
+                           double diameter, double refraction, 
+                           long epsilon)
+    {        
+        Equatorial  pos = null;
+        double      tanL   = Math.tan(fLatitude);
+        long        deltaT = Long.MAX_VALUE;
+        int         count = 0;
+        
+        //
+        // Calculate the object's position at the current time, then use that
+        // position to calculate the time of rising or setting.  The position
+        // will be different at that time, so iterate until the error is allowable.
+        //
+        do {
+            // See "Practical Astronomy With Your Calculator, section 33.
+            pos = func.eval();
+            double angle = Math.acos(-tanL * Math.tan(pos.declination));
+            double lst = ((rise ? PI2-angle : angle) + pos.ascension ) * 24 / PI2;
+                         
+            // Convert from LST to Universal Time.
+            long newTime = lstToUT( lst );
+            
+            deltaT = newTime - time;
+            setTime(newTime);
+        }
+        while (++ count < 5 && Math.abs(deltaT) > epsilon);
+        
+        // Calculate the correction due to refraction and the object's angular diameter
+        double cosD  = Math.cos(pos.declination);
+        double psi   = Math.acos(Math.sin(fLatitude) / cosD);
+        double x     = diameter / 2 + refraction;
+        double y     = Math.asin(Math.sin(x) / Math.sin(psi));
+        long  delta  = (long)((240 * y * RAD_DEG / cosD)*SECOND_MS);
+        
+        return time + (rise ? -delta : delta);
+    }
+    
+    //-------------------------------------------------------------------------
+    // Other utility methods
+    //-------------------------------------------------------------------------
+
+    private static final double normalize(double value, double range) {
+        return value - range * Math.floor(value / range);
+    }
+    
+    /**
+     * Normalize an angle so that it's in the range 0 - 2pi.
+     * For positive angles this is just (angle % 2pi), but the Java
+     * mod operator doesn't work that way for negative numbers....
+     */
+    private static final double norm2PI(double angle) {
+        return normalize(angle, PI2);
+    }
+    
+    /**
+     * Normalize an angle into the range -PI - PI
+     */
+    private static final double normPI(double angle) {
+        return normalize(angle + PI, PI2) - PI;
+    }
+    
+    /**
+     * Find the "true anomaly" (longitude) of an object from
+     * its mean anomaly and the eccentricity of its orbit.  This uses
+     * an iterative solution to Kepler's equation.
+     *
+     * @param meanAnomaly   The object's longitude calculated as if it were in
+     *                      a regular, circular orbit, measured in radians
+     *                      from the point of perigee.  
+     *
+     * @param eccentricity  The eccentricity of the orbit
+     *
+     * @return The true anomaly (longitude) measured in radians
+     */
+    private double trueAnomaly(double meanAnomaly, double eccentricity)
+    {
+        // First, solve Kepler's equation iteratively
+        double delta;
+        double E = meanAnomaly;
+        do {
+            delta = E - eccentricity * Math.sin(E) - meanAnomaly;
+            E = E - delta / (1 - eccentricity * Math.cos(E));
+        } 
+        while (Math.abs(delta) > accuracy);
+
+        return 2.0 * Math.atan( Math.tan(E/2) * Math.sqrt( (1+eccentricity)
+                                                          /(1-eccentricity) ) );
+    }
+    
+    static private final double accuracy = 0.01 * PI/180;  // 0.01 degrees
+    
+    /**
+     * Return the obliquity of the ecliptic (the angle between the ecliptic
+     * and the earth's equator) at the current time.  This varies due to
+     * the precession of the earth's axis.
+     *
+     * @return  the obliquity of the ecliptic relative to the equator,
+     *          measured in radians.
+     */
+    private double eclipticObliquity() {
+        if (eclipObliquity == INVALID) {
+            final double epoch = 2451545.0;     // 2000 AD, January 1.5
+
+            double T = (getJulianDay() - epoch) / 36525;
+            
+            eclipObliquity = 23.439292
+                           - 46.815/3600 * T
+                           - 0.0006 * T*T
+                           + 0.00181 * T*T*T;
+                           
+            eclipObliquity *= DEG_RAD;
+        }
+        return eclipObliquity;
+    }
+    
+     
+    //-------------------------------------------------------------------------
+    // Private data
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Current time in milliseconds since 1/1/1970 AD
+     * @see java.util.Date#getTime
+     */
+    private long time;
+    
+    /* These aren't used yet, but they'll be needed for sunset calculations
+     * and equatorial to horizon coordinate conversions
+     */
+    private double fLongitude = 0.0;
+    private double fLatitude  = 0.0;
+    private long   fGmtOffset = 0;
+    
+    //
+    // The following fields are used to cache calculated results for improved
+    // performance.  These values all depend on the current time setting
+    // of this object, so the clearCache method is provided.
+    //
+    static final private double INVALID = Double.MIN_VALUE;
+    
+    private transient double    julianDay       = INVALID;
+    private transient double    julianCentury   = INVALID;
+    private transient double    sunLongitude    = INVALID;
+    private transient double    meanAnomalySun  = INVALID;
+    private transient double    moonLongitude   = INVALID;
+    private transient double    moonEclipLong   = INVALID;
+    private transient double    meanAnomalyMoon = INVALID;
+    private transient double    eclipObliquity  = INVALID;
+    private transient double    siderealT0      = INVALID;
+    private transient double    siderealTime    = INVALID;
+    
+    private transient Equatorial  moonPosition = null;
+
+    private void clearCache() {
+        julianDay       = INVALID;
+        julianCentury   = INVALID;
+        sunLongitude    = INVALID;
+        meanAnomalySun  = INVALID;
+        moonLongitude   = INVALID;
+        moonEclipLong   = INVALID;
+        meanAnomalyMoon = INVALID;
+        eclipObliquity  = INVALID;
+        siderealTime    = INVALID;
+        siderealT0      = INVALID;
+        moonPosition    = null;
+    }
+    
+    private static void out(String s) {
+        System.out.println(s);
+    }
+    
+    private static String deg(double rad) {
+        return Double.toString(rad * RAD_DEG);
+    }
+    
+    private static String hours(long ms) {
+        return Double.toString((double)ms / HOUR_MS) + " hours";
+    }
+    public String local(long localMillis) {
+        return new Date(localMillis - TimeZone.getDefault().getRawOffset()).toString();
+    }
+    
+    
+    /**
+     * Represents the position of an object in the sky relative to the ecliptic,
+     * the plane of the earth's orbit around the Sun. 
+     * This is a spherical coordinate system in which the latitude
+     * specifies the position north or south of the plane of the ecliptic.
+     * The longitude specifies the position along the ecliptic plane
+     * relative to the "First Point of Aries", which is the Sun's position in the sky
+     * at the Vernal Equinox.
+     * <p>
+     * Note that Ecliptic objects are immutable and cannot be modified
+     * once they are constructed.  This allows them to be passed and returned by
+     * value without worrying about whether other code will modify them.
+     *
+     * @see CalendarAstronomer.Equatorial
+     * @see CalendarAstronomer.Horizon
+     */
+    public static final class Ecliptic {
+        /**
+         * Constructs an Ecliptic coordinate object.
+         * <p>
+         * @param lat The ecliptic latitude, measured in radians.
+         * @param lon The ecliptic longitude, measured in radians.
+         */
+        public Ecliptic(double lat, double lon) {
+            latitude = lat;
+            longitude = lon;
+        }
+
+        /**
+         * Return a string representation of this object
+         */
+        public String toString() {
+            return Double.toString(longitude*RAD_DEG) + "," + (latitude*RAD_DEG);
+        }
+        
+        /**
+         * The ecliptic latitude, in radians.  This specifies an object's
+         * position north or south of the plane of the ecliptic,
+         * with positive angles representing north.
+         */
+        public final double latitude;
+        
+        /**
+         * The ecliptic longitude, in radians.
+         * This specifies an object's position along the ecliptic plane
+         * relative to the "First Point of Aries", which is the Sun's position
+         * in the sky at the Vernal Equinox,
+         * with positive angles representing east.
+         * <p>
+         * A bit of trivia: the first point of Aries is currently in the
+         * constellation Pisces, due to the precession of the earth's axis.
+         */
+        public final double longitude;
+    };
+
+    /**
+     * Represents the position of an 
+     * object in the sky relative to the plane of the earth's equator. 
+     * The <i>Right Ascension</i> specifies the position east or west
+     * along the equator, relative to the sun's position at the vernal
+     * equinox.  The <i>Declination</i> is the position north or south
+     * of the equatorial plane.
+     * <p>
+     * Note that Equatorial objects are immutable and cannot be modified
+     * once they are constructed.  This allows them to be passed and returned by
+     * value without worrying about whether other code will modify them.
+     *
+     * @see CalendarAstronomer.Ecliptic
+     * @see CalendarAstronomer.Horizon
+     */
+    public static final class Equatorial {
+        /**
+         * Constructs an Equatorial coordinate object.
+         * <p>
+         * @param asc The right ascension, measured in radians.
+         * @param dec The declination, measured in radians.
+         */
+        public Equatorial(double asc, double dec) {
+            ascension = asc;
+            declination = dec;
+        }
+
+        /**
+         * Return a string representation of this object, with the
+         * angles measured in degrees.
+         */
+        public String toString() {
+            return Double.toString(ascension*RAD_DEG) + "," + (declination*RAD_DEG);
+        }
+        
+        /**
+         * Return a string representation of this object with the right ascension
+         * measured in hours, minutes, and seconds.
+         */
+        public String toHmsString() {
+            return radToHms(ascension) + "," + radToDms(declination);
+        }
+        
+        /**
+         * The right ascension, in radians. 
+         * This is the position east or west along the equator
+         * relative to the sun's position at the vernal equinox,
+         * with positive angles representing East.
+         */
+        public final double ascension;
+        
+        /**
+         * The declination, in radians.
+         * This is the position north or south of the equatorial plane,
+         * with positive angles representing north.
+         */
+        public final double declination;
+    };
+
+    /**
+     * Represents the position of an  object in the sky relative to 
+     * the local horizon.
+     * The <i>Altitude</i> represents the object's elevation above the horizon,
+     * with objects below the horizon having a negative altitude.
+     * The <i>Azimuth</i> is the geographic direction of the object from the
+     * observer's position, with 0 representing north.  The azimuth increases
+     * clockwise from north.
+     * <p>
+     * Note that Horizon objects are immutable and cannot be modified
+     * once they are constructed.  This allows them to be passed and returned by
+     * value without worrying about whether other code will modify them.
+     *
+     * @see CalendarAstronomer.Ecliptic
+     * @see CalendarAstronomer.Equatorial
+     */
+    public static final class Horizon {
+        /**
+         * Constructs a Horizon coordinate object.
+         * <p>
+         * @param alt  The altitude, measured in radians above the horizon.
+         * @param azim The azimuth, measured in radians clockwise from north.
+         */
+        public Horizon(double alt, double azim) {
+            altitude = alt;
+            azimuth = azim;
+        }
+
+        /**
+         * Return a string representation of this object, with the
+         * angles measured in degrees.
+         */
+        public String toString() {
+            return Double.toString(altitude*RAD_DEG) + "," + (azimuth*RAD_DEG);
+        }
+        
+        /** The object's altitude above the horizon, in radians. */
+        public final double altitude;
+        
+        /** The object's direction, in radians clockwise from north. */
+        public final double azimuth;
+    };
+
+    static private String radToHms(double angle) {
+        int hrs = (int) (angle*RAD_HOUR);
+        int min = (int)((angle*RAD_HOUR - hrs) * 60);
+        int sec = (int)((angle*RAD_HOUR - hrs - min/60.0) * 3600);
+        
+        return Integer.toString(hrs) + "h" + min + "m" + sec + "s";
+    }
+    
+    static private String radToDms(double angle) {
+        int deg = (int) (angle*RAD_DEG);
+        int min = (int)((angle*RAD_DEG - deg) * 60);
+        int sec = (int)((angle*RAD_DEG - deg - min/60.0) * 3600);
+        
+        return Integer.toString(deg) + "\u00b0" + min + "'" + sec + "\"";
+    }
+}
diff --git a/src/com/ibm/icu/util/CalendarCache.java b/src/com/ibm/icu/util/CalendarCache.java
new file mode 100755
index 0000000..1429305
--- /dev/null
+++ b/src/com/ibm/icu/util/CalendarCache.java
@@ -0,0 +1,118 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/Attic/CalendarCache.java,v $ 
+ * $Date: 2002/02/16 03:06:26 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.util;
+
+public class CalendarCache
+{
+    public CalendarCache() {
+        makeArrays(arraySize);
+    }
+    
+    private void makeArrays(int newSize) {
+        keys    = new long[newSize];
+        values  = new long[newSize];
+        
+        for (int i = 0; i < newSize; i++) {
+            values[i] = EMPTY;
+        }
+        arraySize = newSize;
+        threshold = (int)(arraySize * 0.75);
+        size = 0;
+    }
+    
+    public synchronized long get(long key) {
+        return values[findIndex(key)];
+    }
+    
+    public synchronized void put(long key, long value)
+    {
+        if (size >= threshold) {
+            rehash();
+        }
+        int index = findIndex(key);
+        
+        keys[index] = key;
+        values[index] = value;
+        size++;
+    }
+    
+    private final int findIndex(long key) {
+        int index = hash(key);
+        int delta = 0;
+        
+        while (values[index] != EMPTY && keys[index] != key)
+        {
+            if (delta == 0) {
+                delta = hash2(key);
+            }
+            index = (index + delta) % arraySize;
+        }
+        return index;
+    }
+    
+    private void rehash()
+    {
+        int oldSize = arraySize;
+        long[] oldKeys = keys;
+        long[] oldValues = values;
+        
+        if (pIndex < primes.length - 1) {
+            arraySize = primes[++pIndex];
+        } else {
+            arraySize = arraySize * 2 + 1;
+        }
+        size = 0;
+        
+        makeArrays(arraySize);
+        for (int i = 0; i < oldSize; i++) {
+            if (oldValues[i] != EMPTY) {
+                put(oldKeys[i], oldValues[i]);
+            }
+        }
+        oldKeys = oldValues = null; // Help out the garbage collector
+    }
+    
+    
+    /**
+     * Produce a uniformly-distributed hash value from an integer key.
+     * This is essentially a linear congruential random number generator
+     * that uses the key as its seed value.
+     */
+    private final int hash(long key)
+    {
+        int h = (int)((key * 15821 + 1) % arraySize);
+        if (h < 0) {
+            h += arraySize;
+        }
+        return h;
+    }
+    
+    private final int hash2(long key) {
+        return arraySize - 2 - (int)(key % (arraySize-2) );
+    }
+    
+    static private final int primes[] = {  // 5, 17, 31, 47, // for testing
+        61, 127, 509, 1021, 2039, 4093, 8191, 16381, 32749, 65521,
+        131071, 262139, 
+    };
+
+    private int     pIndex      = 0;
+    private int     size        = 0;
+    private int     arraySize   = primes[pIndex];
+    private int     threshold   = (arraySize * 3) / 4;
+    
+    private long[]  keys        = new long[arraySize];
+    private long[]  values      = new long[arraySize];
+    
+    static public  long EMPTY   = Long.MIN_VALUE;
+}
diff --git a/src/com/ibm/icu/util/CaseInsensitiveString.java b/src/com/ibm/icu/util/CaseInsensitiveString.java
new file mode 100755
index 0000000..42e65e1
--- /dev/null
+++ b/src/com/ibm/icu/util/CaseInsensitiveString.java
@@ -0,0 +1,54 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/CaseInsensitiveString.java,v $
+ * $Date: 2002/08/13 23:43:27 $
+ * $Revision: 1.3 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * A string used as a key in java.util.Hashtable and other
+ * collections.  It retains case information, but its equals() and
+ * hashCode() methods ignore case.
+ */
+public class CaseInsensitiveString {
+    
+    private String string;
+
+    private int hash = 0;
+
+    public CaseInsensitiveString(String s) {
+        string = s;
+    }
+
+    public String getString() {
+        return string;
+    }
+
+    public boolean equals(Object o) {
+        try {
+            return string.equalsIgnoreCase(((CaseInsensitiveString)o).string);
+        } catch (ClassCastException e) {
+            try {
+                return string.equalsIgnoreCase((String)o);
+            } catch (ClassCastException e2) {
+                return false;
+            }
+        }
+    }
+
+    public int hashCode() {
+        if (hash == 0) {
+            hash = UCharacter.foldCase(string, true).hashCode();
+        }
+        return hash;
+    }
+}
diff --git a/src/com/ibm/icu/util/ChineseCalendar.java b/src/com/ibm/icu/util/ChineseCalendar.java
new file mode 100755
index 0000000..d0e9db7
--- /dev/null
+++ b/src/com/ibm/icu/util/ChineseCalendar.java
@@ -0,0 +1,782 @@
+/*********************************************************************
+ * Copyright (C) 2000, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *********************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/ChineseCalendar.java,v $
+ * $Date: 2002/02/16 03:06:26 $
+ * $Revision: 1.10 $
+ */
+package com.ibm.icu.util;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>ChineseCalendar</code> is a concrete subclass of {@link Calendar}
+ * that implements a traditional Chinese calendar.  The traditional Chinese
+ * calendar is a lunisolar calendar: Each month starts on a new moon, and
+ * the months are numbered according to solar events, specifically, to
+ * guarantee that month 11 always contains the winter solstice.  In order
+ * to accomplish this, leap months are inserted in certain years.  Leap
+ * months are numbered the same as the month they follow.  The decision of
+ * which month is a leap month depends on the relative movements of the sun
+ * and moon.
+ *
+ * <p>This class defines one addition field beyond those defined by
+ * <code>Calendar</code>: The <code>IS_LEAP_MONTH</code> field takes the
+ * value of 0 for normal months, or 1 for leap months.
+ *
+ * <p>All astronomical computations are performed with respect to a time
+ * zone of GMT+8:00 and a longitude of 120 degrees east.  Although some
+ * calendars implement a historically more accurate convention of using
+ * Beijing's local longitude (116 degrees 25 minutes east) and time zone
+ * (GMT+7:45:40) for dates before 1929, we do not implement this here.
+ *
+ * <p>Years are counted in two different ways in the Chinese calendar.  The
+ * first method is by sequential numbering from the 61st year of the reign
+ * of Huang Di, 2637 BCE, which is designated year 1 on the Chinese
+ * calendar.  The second method uses 60-year cycles from the same starting
+ * point, which is designated year 1 of cycle 1.  In this class, the
+ * <code>EXTENDED_YEAR</code> field contains the sequential year count.
+ * The <code>ERA</code> field contains the cycle number, and the
+ * <code>YEAR</code> field contains the year of the cycle, a value between
+ * 1 and 60.
+ *
+ * <p>There is some variation in what is considered the starting point of
+ * the calendar, with some sources starting in the first year of the reign
+ * of Huang Di, rather than the 61st.  This gives continuous year numbers
+ * 60 years greater and cycle numbers one greater than what this class
+ * implements.
+ *
+ * <p>Because <code>ChineseCalendar</code> defines an additional field and
+ * redefines the way the <code>ERA</code> field is used, it requires a new
+ * format class, <code>ChineseDateFormat</code>.  As always, use the
+ * methods <code>DateFormat.getXxxInstance(Calendar cal,...)</code> to
+ * obtain a formatter for this calendar.
+ *
+ * <p>References:<ul>
+ * 
+ * <li>Dershowitz and Reingold, <i>Calendrical Calculations</i>,
+ * Cambridge University Press, 1997</li>
+ * 
+ * <li>Helmer Aslaksen's
+ * <a href="http://www.math.nus.edu.sg/aslaksen/calendar/chinese.shtml">
+ * Chinese Calendar page</a></li>
+ *
+ * <li>The <a href="http://www.tondering.dk/claus/calendar.html">
+ * Calendar FAQ</a></li>
+ *
+ * </ul>
+ * @see com.ibm.icu.text.ChineseDateFormat
+ * @author Alan Liu
+ */
+public class ChineseCalendar extends Calendar {
+
+    //------------------------------------------------------------------
+    // Developer Notes
+    // 
+    // Time is represented as a scalar in two ways in this class.  One is
+    // the usual UTC epoch millis, that is, milliseconds after January 1,
+    // 1970 Gregorian, 0:00:00.000 UTC.  The other is in terms of 'local
+    // days.'  This is the number of days after January 1, 1970 Gregorian,
+    // local to Beijing, China (since all computations of the Chinese
+    // calendar are done in Beijing).  That is, 0 represents January 1,
+    // 1970 0:00 Asia/Shanghai.  Conversion of local days to and from
+    // standard epoch milliseconds is accomplished by the daysToMillis()
+    // and millisToDays() methods.
+    // 
+    // Several methods use caches to improve performance.  Caches are at
+    // the object, not class level, under the assumption that typical
+    // usage will be to have one instance of ChineseCalendar at a time.
+ 
+    /**
+     * We have one instance per object, and we don't synchronize it because
+     * Calendar doesn't support multithreaded execution in the first place.
+     */
+    private transient CalendarAstronomer astro = new CalendarAstronomer();
+
+    /**
+     * Cache that maps Gregorian year to local days of winter solstice.
+     * @see #winterSolstice
+     */
+    private transient CalendarCache winterSolsticeCache = new CalendarCache();
+
+    /**
+     * Cache that maps Gregorian year to local days of Chinese new year.
+     * @see #newYear
+     */
+    private transient CalendarCache newYearCache = new CalendarCache();
+
+    /**
+     * True if the current year is a leap year.  Updated with each time to
+     * fields resolution.
+     * @see #computeChineseFields
+     */
+    private transient boolean isLeapYear;
+
+    //------------------------------------------------------------------
+    // Constructors
+    //------------------------------------------------------------------
+
+    /**
+     * Construct a Chinese calendar with the default time zone and locale.
+     */
+    public ChineseCalendar() {
+        super();
+    }
+
+    /**
+     * Construct a Chinese calendar with the given time zone and locale.
+     * @param zone time zone for this calendar
+     * @param locale locale for this calendar
+     */
+    public ChineseCalendar(TimeZone zone, Locale locale) {
+        super(zone, locale);
+    }
+
+    //------------------------------------------------------------------
+    // Public constants
+    //------------------------------------------------------------------
+
+    /**
+     * Field indicating whether or not the current month is a leap month.
+     * Should have a value of 0 for non-leap months, and 1 for leap months.
+     */
+    public static int IS_LEAP_MONTH = BASE_FIELD_COUNT;
+
+    /**
+     * Count of fields in this class.
+     */
+    private static final int FIELD_COUNT = IS_LEAP_MONTH + 1;
+
+    //------------------------------------------------------------------
+    // Calendar framework
+    //------------------------------------------------------------------
+
+    /**
+     * Override Calendar to allocate our additional field.
+     */
+    protected int[] handleCreateFields() {
+        return new int[FIELD_COUNT];
+    }
+
+    /**
+     * Array defining the limits of field values for this class.  Field
+     * limits which are invariant with respect to calendar system and
+     * defined by Calendar are left blank.
+     *
+     * Notes:
+     *
+     * ERA 5000000 / 60 = 83333.
+     *
+     * MONTH There are 12 or 13 lunar months in a year.  However, we always
+     * number them 0..11, with an intercalated, identically numbered leap
+     * month, when necessary.
+     *
+     * DAY_OF_YEAR In a non-leap year there are 353, 354, or 355 days.  In
+     * a leap year there are 383, 384, or 385 days.
+     *
+     * WEEK_OF_YEAR The least maximum occurs if there are 353 days in the
+     * year, and the first 6 are the last week of the previous year.  Then
+     * we have 49 full weeks and 4 days in the last week: 6 + 49*7 + 4 =
+     * 353.  So the least maximum is 50.  The maximum occurs if there are
+     * 385 days in the year, and WOY 1 extends 6 days into the prior year.
+     * Then there are 54 full weeks, and 6 days in the last week: 1 + 54*7
+     * + 6 = 385.  The 6 days of the last week will fall into WOY 1 of the
+     * next year.  Maximum is 55.
+     *
+     * WEEK_OF_MONTH In a 29 day month, if the first 7 days make up week 1
+     * that leaves 3 full weeks and 1 day at the end.  The least maximum is
+     * thus 5.  In a 30 days month, if the previous 6 days belong WOM 1 of
+     * this month, we have 4 full weeks and 1 days at the end (which
+     * technically will be WOM 1 of the next month, but will be reported by
+     * time->fields and hence by getActualMaximum as WOM 6 of this month).
+     * Maximum is 6.
+     *
+     * DAY_OF_WEEK_IN_MONTH In a 29 or 30 day month, there are 4 full weeks
+     * plus 1 or 2 days at the end, so the maximum is always 5.
+     */
+    private static final int LIMITS[][] = {
+        // Minimum  Greatest    Least  Maximum
+        //           Minimum  Maximum
+        {        1,        1,   83333,   83333 }, // ERA
+        {        1,        1,      70,      70 }, // YEAR
+        {        0,        0,      11,      11 }, // MONTH
+        {        1,        1,      50,      55 }, // WEEK_OF_YEAR
+        {        1,        1,       5,       6 }, // WEEK_OF_MONTH
+        {        1,        1,      29,      30 }, // DAY_OF_MONTH
+        {        1,        1,     353,     385 }, // DAY_OF_YEAR
+        {/*                                  */}, // DAY_OF_WEEK
+        {       -1,       -1,       5,       5 }, // DAY_OF_WEEK_IN_MONTH
+        {/*                                  */}, // AM_PM
+        {/*                                  */}, // HOUR
+        {/*                                  */}, // HOUR_OF_DAY
+        {/*                                  */}, // MINUTE
+        {/*                                  */}, // SECOND
+        {/*                                  */}, // MILLISECOND
+        {/*                                  */}, // ZONE_OFFSET
+        {/*                                  */}, // DST_OFFSET
+        { -5000001, -5000001, 5000001, 5000001 }, // YEAR_WOY
+        {/*                                  */}, // DOW_LOCAL
+        { -5000000, -5000000, 5000000, 5000000 }, // EXTENDED_YEAR
+        {/*                                  */}, // JULIAN_DAY
+        {/*                                  */}, // MILLISECONDS_IN_DAY
+        {        0,        0,       1,       1 }, // IS_LEAP_MONTH
+    };
+
+    /**
+     * Override Calendar to return the limit value for the given field.
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        return LIMITS[field][limitType];
+    }
+
+    /**
+     * Implement abstract Calendar method to return the extended year
+     * defined by the current fields.  This will use either the ERA and
+     * YEAR field as the cycle and year-of-cycle, or the EXTENDED_YEAR
+     * field as the continuous year count, depending on which is newer.
+     */
+    protected int handleGetExtendedYear() {
+        int year;
+        if (newestStamp(ERA, YEAR, UNSET) <= getStamp(EXTENDED_YEAR)) {
+            year = internalGet(EXTENDED_YEAR, 1); // Default to year 1
+        } else {
+            int cycle = internalGet(ERA, 1) - 1; // 0-based cycle
+            year = cycle * 60 + internalGet(YEAR, 1);
+        }
+        return year;
+    }
+
+    /**
+     * Override Calendar method to return the number of days in the given
+     * extended year and month.
+     *
+     * <p>Note: This method also reads the IS_LEAP_MONTH field to determine
+     * whether or not the given month is a leap month.
+     */
+    protected int handleGetMonthLength(int extendedYear, int month) {
+        int thisStart = handleComputeMonthStart(extendedYear, month, true) -
+            EPOCH_JULIAN_DAY + 1; // Julian day -> local days
+        int nextStart = newMoonNear(thisStart + SYNODIC_GAP, true);
+        return nextStart - thisStart;
+    }
+
+    /**
+     * Framework method to create a calendar-specific DateFormat object
+     * using the the given pattern.  This method is responsible for
+     * creating the calendar- specific DateFormat and DateFormatSymbols
+     * objects as needed.
+     */
+    protected DateFormat handleGetDateFormat(String pattern, Locale locale) {
+        return new ChineseDateFormat(pattern, locale);
+    }
+
+    /**
+     * Field resolution table that incorporates IS_LEAP_MONTH.
+     */
+    static final int[][][] CHINESE_DATE_PRECEDENCE = {
+        {
+            { DAY_OF_MONTH },
+            { WEEK_OF_YEAR, DAY_OF_WEEK },
+            { WEEK_OF_MONTH, DAY_OF_WEEK },
+            { DAY_OF_WEEK_IN_MONTH, DAY_OF_WEEK },
+            { WEEK_OF_YEAR, DOW_LOCAL },
+            { WEEK_OF_MONTH, DOW_LOCAL },
+            { DAY_OF_WEEK_IN_MONTH, DOW_LOCAL },
+            { DAY_OF_YEAR },
+            { RESOLVE_REMAP | DAY_OF_MONTH, IS_LEAP_MONTH },
+        },
+        {
+            { WEEK_OF_YEAR },
+            { WEEK_OF_MONTH },
+            { DAY_OF_WEEK_IN_MONTH },
+            { RESOLVE_REMAP | DAY_OF_WEEK_IN_MONTH, DAY_OF_WEEK },
+            { RESOLVE_REMAP | DAY_OF_WEEK_IN_MONTH, DOW_LOCAL },
+        },
+    };
+
+    /**
+     * Override Calendar to add IS_LEAP_MONTH to the field resolution
+     * table.
+     */
+    protected int[][][] getFieldResolutionTable() {
+        return CHINESE_DATE_PRECEDENCE;
+    }
+
+    /**
+     * Adjust this calendar to be delta months before or after a given
+     * start position, pinning the day of month if necessary.  The start
+     * position is given as a local days number for the start of the month
+     * and a day-of-month.  Used by add() and roll().
+     * @param newMoon the local days of the first day of the month of the
+     * start position (days after January 1, 1970 0:00 Asia/Shanghai)
+     * @param dom the 1-based day-of-month of the start position
+     * @param delta the number of months to move forward or backward from
+     * the start position
+     */
+    private void offsetMonth(int newMoon, int dom, int delta) {
+        // Move to the middle of the month before our target month.
+        newMoon += (int) (CalendarAstronomer.SYNODIC_MONTH * (delta - 0.5));
+
+        // Search forward to the target month's new moon
+        newMoon = newMoonNear(newMoon, true);
+
+        // Find the target dom
+        int jd = newMoon + EPOCH_JULIAN_DAY - 1 + dom;
+
+        // Pin the dom.  In this calendar all months are 29 or 30 days
+        // so pinning just means handling dom 30.
+        if (dom > 29) {
+            set(JULIAN_DAY, jd-1);
+            // TODO Fix this.  We really shouldn't ever have to
+            // explicitly call complete().  This is either a bug in
+            // this method, in ChineseCalendar, or in
+            // Calendar.getActualMaximum().  I suspect the last.
+            complete();
+            if (getActualMaximum(DAY_OF_MONTH) >= dom) {
+                set(JULIAN_DAY, jd);
+            }
+        } else {
+            set(JULIAN_DAY, jd);
+        }
+    }
+
+    /**
+     * Override Calendar to handle leap months properly.
+     */
+    public void add(int field, int amount) {
+        switch (field) {
+        case MONTH:
+            if (amount != 0) {
+                int dom = get(DAY_OF_MONTH);
+                int day = get(JULIAN_DAY) - EPOCH_JULIAN_DAY; // Get local day
+                int moon = day - dom + 1; // New moon 
+                offsetMonth(moon, dom, amount);
+            }
+            break;
+        default:
+            super.add(field, amount);
+            break;
+        }
+    }
+
+    /**
+     * Override Calendar to handle leap months properly.
+     */
+    public void roll(int field, int amount) {
+        switch (field) {
+        case MONTH:
+            if (amount != 0) {
+                int dom = get(DAY_OF_MONTH);
+                int day = get(JULIAN_DAY) - EPOCH_JULIAN_DAY; // Get local day
+                int moon = day - dom + 1; // New moon (start of this month)
+
+                // Note throughout the following:  Months 12 and 1 are never
+                // followed by a leap month (D&R p. 185).
+
+                // Compute the adjusted month number m.  This is zero-based
+                // value from 0..11 in a non-leap year, and from 0..12 in a
+                // leap year.
+                int m = get(MONTH); // 0-based month
+                if (isLeapYear) { // (member variable)
+                    if (get(IS_LEAP_MONTH) == 1) {
+                        ++m;
+                    } else {
+                        // Check for a prior leap month.  (In the
+                        // following, month 0 is the first month of the
+                        // year.)  Month 0 is never followed by a leap
+                        // month, and we know month m is not a leap month.
+                        // moon1 will be the start of month 0 if there is
+                        // no leap month between month 0 and month m;
+                        // otherwise it will be the start of month 1.
+                        int moon1 = moon -
+                            (int) (CalendarAstronomer.SYNODIC_MONTH * (m - 0.5));
+                        moon1 = newMoonNear(moon1, true);
+                        if (isLeapMonthBetween(moon1, moon)) {
+                            ++m;
+                        }
+                    }
+                }
+
+                // Now do the standard roll computation on m, with the
+                // allowed range of 0..n-1, where n is 12 or 13.
+                int n = isLeapYear ? 13 : 12; // Months in this year
+                int newM = (m + amount) % n;
+                if (newM < 0) {
+                    newM += n;
+                }
+
+                if (newM != m) {
+                    offsetMonth(moon, dom, newM - m);
+                }
+            }
+            break;
+        default:
+            super.roll(field, amount);
+            break;
+        }
+    }
+
+    //------------------------------------------------------------------
+    // Support methods and constants
+    //------------------------------------------------------------------
+   
+    /**
+     * The start year of the Chinese calendar, the 61st year of the reign
+     * of Huang Di.  Some sources use the first year of his reign,
+     * resulting in EXTENDED_YEAR values 60 years greater and ERA (cycle)
+     * values one greater.
+     */
+    private static final int CHINESE_EPOCH_YEAR = -2636; // Gregorian year
+
+    /**
+     * The offset from GMT in milliseconds at which we perform astronomical
+     * computations.  Some sources use a different historically accurate
+     * offset of GMT+7:45:40 for years before 1929; we do not do this.
+     */
+    private static final long CHINA_OFFSET = 8*ONE_HOUR;
+
+    /**
+     * Value to be added or subtracted from the local days of a new moon to
+     * get close to the next or prior new moon, but not cross it.  Must be
+     * >= 1 and < CalendarAstronomer.SYNODIC_MONTH.
+     */
+    private static final int SYNODIC_GAP = 25;
+
+    /**
+     * Convert local days to UTC epoch milliseconds.
+     * @param days days after January 1, 1970 0:00 Asia/Shanghai
+     * @return milliseconds after January 1, 1970 0:00 GMT
+     */
+    private static final long daysToMillis(int days) {
+        return (days * ONE_DAY) - CHINA_OFFSET;
+    }
+
+    /**
+     * Convert UTC epoch milliseconds to local days.
+     * @param millis milliseconds after January 1, 1970 0:00 GMT
+     * @return days after January 1, 1970 0:00 Asia/Shanghai
+     */
+    private static final int millisToDays(long millis) {
+        return (int) floorDivide(millis + CHINA_OFFSET, ONE_DAY);
+    }
+
+    //------------------------------------------------------------------
+    // Astronomical computations
+    //------------------------------------------------------------------
+    
+    /**
+     * Return the major solar term on or after December 15 of the given
+     * Gregorian year, that is, the winter solstice of the given year.
+     * Computations are relative to Asia/Shanghai time zone.
+     * @param gyear a Gregorian year
+     * @return days after January 1, 1970 0:00 Asia/Shanghai of the
+     * winter solstice of the given year
+     */
+    private int winterSolstice(int gyear) {
+
+        long cacheValue = winterSolsticeCache.get(gyear);
+
+        if (cacheValue == CalendarCache.EMPTY) {
+            // In books December 15 is used, but it fails for some years
+            // using our algorithms, e.g.: 1298 1391 1492 1553 1560.  That
+            // is, winterSolstice(1298) starts search at Dec 14 08:00:00
+            // PST 1298 with a final result of Dec 14 10:31:59 PST 1299.
+            long ms = daysToMillis(computeGregorianMonthStart(gyear, DECEMBER) +
+                                   1 - EPOCH_JULIAN_DAY);
+            astro.setTime(ms);
+            
+            // Winter solstice is 270 degrees solar longitude aka Dongzhi
+            long solarLong = astro.getSunTime(CalendarAstronomer.WINTER_SOLSTICE,
+                                              true);
+            cacheValue = millisToDays(solarLong);
+            winterSolsticeCache.put(gyear, cacheValue);
+        }
+        return (int) cacheValue;
+    }
+
+    /**
+     * Return the closest new moon to the given date, searching either
+     * forward or backward in time.
+     * @param days days after January 1, 1970 0:00 Asia/Shanghai
+     * @param after if true, search for a new moon on or after the given
+     * date; otherwise, search for a new moon before it
+     * @return days after January 1, 1970 0:00 Asia/Shanghai of the nearest
+     * new moon after or before <code>days</code>
+     */
+    private int newMoonNear(int days, boolean after) {
+        
+        astro.setTime(daysToMillis(days));
+        long newMoon = astro.getMoonTime(CalendarAstronomer.NEW_MOON, after);
+        
+        return millisToDays(newMoon);
+    }
+
+    /**
+     * Return the nearest integer number of synodic months between
+     * two dates.
+     * @param day1 days after January 1, 1970 0:00 Asia/Shanghai
+     * @param day2 days after January 1, 1970 0:00 Asia/Shanghai
+     * @return the nearest integer number of months between day1 and day2
+     */
+    private int synodicMonthsBetween(int day1, int day2) {
+        return (int) Math.round((day2 - day1) / CalendarAstronomer.SYNODIC_MONTH);
+    }
+
+    /**
+     * Return the major solar term on or before a given date.  This
+     * will be an integer from 1..12, with 1 corresponding to 330 degrees,
+     * 2 to 0 degrees, 3 to 30 degrees,..., and 12 to 300 degrees.
+     * @param days days after January 1, 1970 0:00 Asia/Shanghai
+     */
+    private int majorSolarTerm(int days) {
+        
+        astro.setTime(daysToMillis(days));
+
+        // Compute (floor(solarLongitude / (pi/6)) + 2) % 12
+        int term = ((int) Math.floor(6 * astro.getSunLongitude() / Math.PI) + 2) % 12;
+        if (term < 1) {
+            term += 12;
+        }
+        return term;
+    }
+
+    /**
+     * Return true if the given month lacks a major solar term.
+     * @param newMoon days after January 1, 1970 0:00 Asia/Shanghai of a new
+     * moon
+     */
+    private boolean hasNoMajorSolarTerm(int newMoon) {
+        
+        return majorSolarTerm(newMoon) ==
+            majorSolarTerm(newMoonNear(newMoon + SYNODIC_GAP, true));
+    }
+
+    //------------------------------------------------------------------
+    // Time to fields
+    //------------------------------------------------------------------
+    
+    /**
+     * Return true if there is a leap month on or after month newMoon1 and
+     * at or before month newMoon2.
+     * @param newMoon1 days after January 1, 1970 0:00 Asia/Shanghai of a
+     * new moon
+     * @param newMoon2 days after January 1, 1970 0:00 Asia/Shanghai of a
+     * new moon
+     */
+    private boolean isLeapMonthBetween(int newMoon1, int newMoon2) {
+
+        // This is only needed to debug the timeOfAngle divergence bug.
+        // Remove this later. Liu 11/9/00
+        // DEBUG
+        if (synodicMonthsBetween(newMoon1, newMoon2) >= 50) {
+            throw new IllegalArgumentException("isLeapMonthBetween(" + newMoon1 +
+                                               ", " + newMoon2 +
+                                               "): Invalid parameters");
+        }
+
+        return (newMoon2 >= newMoon1) &&
+            (isLeapMonthBetween(newMoon1, newMoonNear(newMoon2 - SYNODIC_GAP, false)) ||
+             hasNoMajorSolarTerm(newMoon2));
+    }
+
+    /**
+     * Override Calendar to compute several fields specific to the Chinese
+     * calendar system.  These are:
+     *
+     * <ul><li>ERA
+     * <li>YEAR
+     * <li>MONTH
+     * <li>DAY_OF_MONTH
+     * <li>DAY_OF_YEAR
+     * <li>EXTENDED_YEAR</ul>
+     * 
+     * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this
+     * method is called.  The getGregorianXxx() methods return Gregorian
+     * calendar equivalents for the given Julian day.
+     *
+     * <p>Compute the ChineseCalendar-specific field IS_LEAP_MONTH.
+     */
+    protected void handleComputeFields(int julianDay) {
+
+        computeChineseFields(julianDay - EPOCH_JULIAN_DAY, // local days
+                             getGregorianYear(), getGregorianMonth(),
+                             true); // set all fields
+    }
+
+    /**
+     * Compute fields for the Chinese calendar system.  This method can
+     * either set all relevant fields, as required by
+     * <code>handleComputeFields()</code>, or it can just set the MONTH and
+     * IS_LEAP_MONTH fields, as required by
+     * <code>handleComputeMonthStart()</code>.
+     *
+     * <p>As a side effect, this method sets {@link #isLeapYear}.
+     * @param days days after January 1, 1970 0:00 Asia/Shanghai of the
+     * date to compute fields for
+     * @param gyear the Gregorian year of the given date
+     * @param gmonth the Gregorian month of the given date
+     * @param setAllFields if true, set the EXTENDED_YEAR, ERA, YEAR,
+     * DAY_OF_MONTH, and DAY_OF_YEAR fields.  In either case set the MONTH
+     * and IS_LEAP_MONTH fields.
+     */
+    private void computeChineseFields(int days, int gyear, int gmonth,
+                                      boolean setAllFields) {
+
+        // Find the winter solstices before and after the target date.
+        // These define the boundaries of this Chinese year, specifically,
+        // the position of month 11, which always contains the solstice.
+        // We want solsticeBefore <= date < solsticeAfter.
+        int solsticeBefore;
+        int solsticeAfter = winterSolstice(gyear);
+        if (days < solsticeAfter) {
+            solsticeBefore = winterSolstice(gyear - 1);
+        } else {
+            solsticeBefore = solsticeAfter;
+            solsticeAfter = winterSolstice(gyear + 1);
+        }
+
+        // Find the start of the month after month 11.  This will be either
+        // the prior month 12 or leap month 11 (very rare).  Also find the
+        // start of the following month 11.
+        int firstMoon = newMoonNear(solsticeBefore + 1, true);
+        int lastMoon = newMoonNear(solsticeAfter + 1, false);
+        int thisMoon = newMoonNear(days + 1, false); // Start of this month
+        // Note: isLeapYear is a member variable
+        isLeapYear = synodicMonthsBetween(firstMoon, lastMoon) == 12;
+
+        int month = synodicMonthsBetween(firstMoon, thisMoon);
+        if (isLeapYear && isLeapMonthBetween(firstMoon, thisMoon)) {
+            month--;
+        }
+        if (month < 1) {
+            month += 12;
+        }
+
+        boolean isLeapMonth = isLeapYear &&
+            hasNoMajorSolarTerm(thisMoon) &&
+            !isLeapMonthBetween(firstMoon, newMoonNear(thisMoon - SYNODIC_GAP, false));
+
+        internalSet(MONTH, month-1); // Convert from 1-based to 0-based
+        internalSet(IS_LEAP_MONTH, isLeapMonth?1:0);
+
+        if (setAllFields) {
+
+            int year = gyear - CHINESE_EPOCH_YEAR;
+            if (month < 11 ||
+                gmonth >= JULY) {
+                year++;
+            }
+            int dayOfMonth = days - thisMoon + 1;
+
+            internalSet(EXTENDED_YEAR, year);
+
+            // 0->0,60  1->1,1  60->1,60  61->2,1  etc.
+            int[] yearOfCycle = new int[1];
+            int cycle = floorDivide(year-1, 60, yearOfCycle);
+            internalSet(ERA, cycle+1);
+            internalSet(YEAR, yearOfCycle[0]+1);
+
+            internalSet(DAY_OF_MONTH, dayOfMonth);
+
+            // Days will be before the first new year we compute if this
+            // date is in month 11, leap 11, 12.  There is never a leap 12.
+            // New year computations are cached so this should be cheap in
+            // the long run.
+            int newYear = newYear(gyear);
+            if (days < newYear) {
+                newYear = newYear(gyear-1);
+            }
+            internalSet(DAY_OF_YEAR, days - newYear + 1);
+        }
+    }
+
+    //------------------------------------------------------------------
+    // Fields to time
+    //------------------------------------------------------------------
+    
+    /**
+     * Return the Chinese new year of the given Gregorian year.
+     * @param gyear a Gregorian year
+     * @return days after January 1, 1970 0:00 Asia/Shanghai of the
+     * Chinese new year of the given year (this will be a new moon)
+     */
+    private int newYear(int gyear) {
+
+        long cacheValue = newYearCache.get(gyear);
+
+        if (cacheValue == CalendarCache.EMPTY) {
+
+            int solsticeBefore= winterSolstice(gyear - 1);
+            int solsticeAfter = winterSolstice(gyear);
+            int newMoon1 = newMoonNear(solsticeBefore + 1, true);
+            int newMoon2 = newMoonNear(newMoon1 + SYNODIC_GAP, true);
+            int newMoon11 = newMoonNear(solsticeAfter + 1, false);
+            
+            if (synodicMonthsBetween(newMoon1, newMoon11) == 12 &&
+                (hasNoMajorSolarTerm(newMoon1) || hasNoMajorSolarTerm(newMoon2))) {
+                cacheValue = newMoonNear(newMoon2 + SYNODIC_GAP, true);
+            } else {
+                cacheValue = newMoon2;
+            }
+
+            newYearCache.put(gyear, cacheValue);
+        }
+        return (int) cacheValue;
+    }
+
+    /**
+     * Return the Julian day number of day before the first day of the
+     * given month in the given extended year.
+     * 
+     * <p>Note: This method reads the IS_LEAP_MONTH field to determine
+     * whether the given month is a leap month.
+     * @param eyear the extended year
+     * @param month the zero-based month.  The month is also determined
+     * by reading the IS_LEAP_MONTH field.
+     * @param return the Julian day number of the day before the first
+     * day of the given month and year
+     */
+    protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
+
+        // If the month is out of range, adjust it into range, and
+        // modify the extended year value accordingly.
+        if (month < 0 || month > 11) {
+            int[] rem = new int[1];
+            eyear += floorDivide(month, 12, rem);
+            month = rem[0];
+        }
+
+        int gyear = eyear + CHINESE_EPOCH_YEAR - 1; // Gregorian year
+        int newYear = newYear(gyear);
+        int newMoon = newMoonNear(newYear + month * 29, true);
+        
+        int julianDay = newMoon + EPOCH_JULIAN_DAY;
+
+        // Save fields for later restoration
+        int saveMonth = internalGet(MONTH);
+        int saveIsLeapMonth = internalGet(IS_LEAP_MONTH);
+
+        // Ignore IS_LEAP_MONTH field if useMonth is false
+        int isLeapMonth = useMonth ? saveIsLeapMonth : 0;
+
+        computeGregorianFields(julianDay);
+        
+        // This will modify the MONTH and IS_LEAP_MONTH fields (only)
+        computeChineseFields(newMoon, getGregorianYear(),
+                             getGregorianMonth(), false);        
+
+        if (month != internalGet(MONTH) ||
+            isLeapMonth != internalGet(IS_LEAP_MONTH)) {
+            newMoon = newMoonNear(newMoon + SYNODIC_GAP, true);
+            julianDay = newMoon + EPOCH_JULIAN_DAY;
+        }
+
+        internalSet(MONTH, saveMonth);
+        internalSet(IS_LEAP_MONTH, saveIsLeapMonth);
+
+        return julianDay - 1;
+    }
+}
diff --git a/src/com/ibm/icu/util/CompactByteArray.java b/src/com/ibm/icu/util/CompactByteArray.java
new file mode 100755
index 0000000..a30033a
--- /dev/null
+++ b/src/com/ibm/icu/util/CompactByteArray.java
@@ -0,0 +1,357 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/CompactByteArray.java,v $ 
+ * $Date: 2002/08/12 20:26:39 $ 
+ * $Revision: 1.8 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.util;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * class CompactATypeArray : use only on primitive data types
+ * Provides a compact way to store information that is indexed by Unicode
+ * values, such as character properties, types, keyboard values, etc.This
+ * is very useful when you have a block of Unicode data that contains
+ * significant values while the rest of the Unicode data is unused in the
+ * application or when you have a lot of redundance, such as where all 21,000
+ * Han ideographs have the same value.  However, lookup is much faster than a
+ * hash table.
+ * A compact array of any primitive data type serves two purposes:
+ * <UL type = round>
+ *     <LI>Fast access of the indexed values.
+ *     <LI>Smaller memory footprint.
+ * </UL>
+ * A compact array is composed of a index array and value array.  The index
+ * array contains the indicies of Unicode characters to the value array.
+ *
+ * @see                CompactCharArray
+ * @version            $Revision: 1.8 $
+ * @author             Helena Shih
+ */
+public final class CompactByteArray implements Cloneable {
+
+    /**
+     * The total number of Unicode characters.
+     */
+    public static  final int UNICODECOUNT =65536;
+
+    /**
+     * Default constructor for CompactByteArray, the default value of the
+     * compact array is 0.
+     */
+    public CompactByteArray()
+    {
+        this((byte)0);
+    }
+
+    /**
+     * Constructor for CompactByteArray.
+     * @param defaultValue the default value of the compact array.
+     */
+    public CompactByteArray(byte defaultValue)
+    {
+        int i;
+        values = new byte[UNICODECOUNT];
+        indices = new char[INDEXCOUNT];
+        hashes = new int[INDEXCOUNT];
+        for (i = 0; i < UNICODECOUNT; ++i) {
+            values[i] = defaultValue;
+        }
+        for (i = 0; i < INDEXCOUNT; ++i) {
+            indices[i] = (char)(i<<BLOCKSHIFT);
+            hashes[i] = 0;
+        }
+        isCompact = false;
+
+        this.defaultValue = defaultValue;
+    }
+
+    /**
+     * Constructor for CompactByteArray.
+     * @param indexArray the indicies of the compact array.
+     * @param newValues the values of the compact array.
+     * @exception IllegalArgumentException If the index is out of range.
+     */
+    public CompactByteArray(char indexArray[],
+                            byte newValues[])
+    {
+        int i;
+        if (indexArray.length != INDEXCOUNT)
+            throw new IllegalArgumentException("Index out of bounds.");
+        for (i = 0; i < INDEXCOUNT; ++i) {
+            char index = indexArray[i];
+            if ((index < 0) || (index >= newValues.length+BLOCKCOUNT))
+                throw new IllegalArgumentException("Index out of bounds.");
+        }
+        indices = indexArray;
+        values = newValues;
+        isCompact = true;
+    }
+
+    /**
+     * Constructor for CompactByteArray.
+     *
+     * @param indexArray the RLE-encoded indicies of the compact array.
+     * @param valueArray the RLE-encoded values of the compact array.
+     *
+     * @throws IllegalArgumentException if the index or value array is
+     *          the wrong size.
+     */
+    public CompactByteArray(String indexArray,
+                            String valueArray)
+    {
+        this( Utility.RLEStringToCharArray(indexArray),
+              Utility.RLEStringToByteArray(valueArray));
+    }
+
+    /**
+     * Get the mapped value of a Unicode character.
+     * @param index the character to get the mapped value with
+     * @return the mapped value of the given character
+     */
+    public byte elementAt(char index)
+    {
+        return (values[(indices[index >> BLOCKSHIFT] & 0xFFFF)
+                       + (index & BLOCKMASK)]);
+    }
+
+    /**
+     * Set a new value for a Unicode character.
+     * Set automatically expands the array if it is compacted.
+     * @param index the character to set the mapped value with
+     * @param value the new mapped value
+     */
+    public void setElementAt(char index, byte value)
+    {
+        if (isCompact)
+            expand();
+        values[(int)index] = value;
+        touchBlock(index >> BLOCKSHIFT, value);
+    }
+
+    /**
+     * Set new values for a range of Unicode character.
+     *
+     * @param start the starting offset of the range
+     * @param end the ending offset of the range
+     * @param value the new mapped value
+     */
+    public void setElementAt(char start, char end, byte value)
+    {
+        int i;
+        if (isCompact) {
+            expand();
+        }
+        for (i = start; i <= end; ++i) {
+            values[i] = value;
+            touchBlock(i >> BLOCKSHIFT, value);
+        }
+    }
+
+    public void compact() {
+        compact(false);
+    }
+
+    /**
+     * Compact the array.
+     */
+    public void compact(boolean exhaustive)
+    {
+        if (!isCompact) {
+            int limitCompacted = 0;
+            int iBlockStart = 0;
+            char iUntouched = 0xFFFF;
+
+            for (int i = 0; i < indices.length; ++i, iBlockStart += BLOCKCOUNT) {
+                indices[i] = 0xFFFF;
+                boolean touched = blockTouched(i);
+                if (!touched && iUntouched != 0xFFFF) {
+                    // If no values in this block were set, we can just set its
+                    // index to be the same as some other block with no values
+                    // set, assuming we've seen one yet.
+                    indices[i] = iUntouched;
+                } else {
+                    int jBlockStart = 0;
+                    int j = 0;
+                    for (j = 0; j < limitCompacted;
+                            ++j, jBlockStart += BLOCKCOUNT) {
+                        if (hashes[i] == hashes[j] &&
+                                arrayRegionMatches(values, iBlockStart,
+                                values, jBlockStart, BLOCKCOUNT)) {
+                            indices[i] = (char)jBlockStart;
+                            break;
+                        }
+                    }
+                    if (indices[i] == 0xFFFF) {
+                        // we didn't match, so copy & update
+                        System.arraycopy(values, iBlockStart,
+                            values, jBlockStart, BLOCKCOUNT);
+                        indices[i] = (char)jBlockStart;
+                        hashes[j] = hashes[i];
+                        ++limitCompacted;
+
+                        if (!touched) {
+                            // If this is the first untouched block we've seen,
+                            // remember its index.
+                            iUntouched = (char)jBlockStart;
+                        }
+                    }
+                }
+            }
+            // we are done compacting, so now make the array shorter
+            int newSize = limitCompacted*BLOCKCOUNT;
+            byte[] result = new byte[newSize];
+            System.arraycopy(values, 0, result, 0, newSize);
+            values = result;
+            isCompact = true;
+            hashes = null;
+        }
+    }
+
+    /**
+     * Convenience utility to compare two arrays of doubles.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     */
+    final static boolean arrayRegionMatches(byte[] source, int sourceStart,
+                                            byte[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Remember that a specified block was "touched", i.e. had a value set.
+     * Untouched blocks can be skipped when compacting the array
+     */
+    private final void touchBlock(int i, int value) {
+        hashes[i] = (hashes[i] + (value<<1)) | 1;
+    }
+
+    /**
+     * Query whether a specified block was "touched", i.e. had a value set.
+     * Untouched blocks can be skipped when compacting the array
+     */
+    private final boolean blockTouched(int i) {
+        return hashes[i] != 0;
+    }
+
+    /**
+     * For internal use only.  Do not modify the result, the behavior of
+     * modified results are undefined.
+     */
+    public char[] getIndexArray()
+    {
+        return indices;
+    }
+
+    /**
+     * For internal use only.  Do not modify the result, the behavior of
+     * modified results are undefined.
+     */
+    public byte[] getValueArray()
+    {
+        return values;
+    }
+
+    /**
+     * Overrides Cloneable
+     */
+    public Object clone()
+    {
+        try {
+            CompactByteArray other = (CompactByteArray) super.clone();
+            other.values = (byte[])values.clone();
+            other.indices = (char[])indices.clone();
+            if (hashes != null) other.hashes = (int[])hashes.clone();
+            return other;
+        } catch (CloneNotSupportedException e) {
+            throw new InternalError();
+        }
+    }
+
+    /**
+     * Compares the equality of two compact array objects.
+     * @param obj the compact array object to be compared with this.
+     * @return true if the current compact array object is the same
+     * as the compact array object obj; false otherwise.
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (this == obj)                      // quick check
+            return true;
+        if (getClass() != obj.getClass())         // same class?
+            return false;
+        CompactByteArray other = (CompactByteArray) obj;
+        for (int i = 0; i < UNICODECOUNT; i++) {
+            // could be sped up later
+            if (elementAt((char)i) != other.elementAt((char)i))
+                return false;
+        }
+        return true; // we made it through the guantlet.
+    }
+
+    /**
+     * Generates the hash code for the compact array object
+     */
+    public int hashCode() {
+        int result = 0;
+        int increment = Math.min(3, values.length/16);
+        for (int i = 0; i < values.length; i+= increment) {
+            result = result * 37 + values[i];
+        }
+        return result;
+    }
+
+    // --------------------------------------------------------------
+    // private
+    // --------------------------------------------------------------
+
+    /**
+     * Expanding takes the array back to a 65536 element array.
+     */
+    private void expand()
+    {
+        int i;
+        if (isCompact) {
+            byte[]  tempArray;
+            hashes = new int[INDEXCOUNT];
+            tempArray = new byte[UNICODECOUNT];
+            for (i = 0; i < UNICODECOUNT; ++i) {
+                byte value = elementAt((char)i);
+                tempArray[i] = value;
+                touchBlock(i >> BLOCKSHIFT, value);
+            }
+            for (i = 0; i < INDEXCOUNT; ++i) {
+                indices[i] = (char)(i<<BLOCKSHIFT);
+            }
+            values = null;
+            values = tempArray;
+            isCompact = false;
+        }
+    }
+
+    private static  final int BLOCKSHIFT =7;
+    private static  final int BLOCKCOUNT =(1<<BLOCKSHIFT);
+    private static  final int INDEXSHIFT =(16-BLOCKSHIFT);
+    private static  final int INDEXCOUNT =(1<<INDEXSHIFT);
+    private static  final int BLOCKMASK = BLOCKCOUNT - 1;
+
+    private byte[] values;
+    private char indices[];
+    private int[] hashes;
+    private boolean isCompact;
+    byte defaultValue;
+};
diff --git a/src/com/ibm/icu/util/CompactCharArray.java b/src/com/ibm/icu/util/CompactCharArray.java
new file mode 100755
index 0000000..f7306f3
--- /dev/null
+++ b/src/com/ibm/icu/util/CompactCharArray.java
@@ -0,0 +1,380 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/CompactCharArray.java,v $ 
+ * $Date: 2002/08/12 20:26:39 $ 
+ * $Revision: 1.9 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ * class CompactATypeArray : use only on primitive data types
+ * Provides a compact way to store information that is indexed by Unicode
+ * values, such as character properties, types, keyboard values, etc.This
+ * is very useful when you have a block of Unicode data that contains
+ * significant values while the rest of the Unicode data is unused in the
+ * application or when you have a lot of redundance, such as where all 21,000
+ * Han ideographs have the same value.  However, lookup is much faster than a
+ * hash table.
+ * A compact array of any primitive data type serves two purposes:
+ * <UL type = round>
+ *     <LI>Fast access of the indexed values.
+ *     <LI>Smaller memory footprint.
+ * </UL>
+ * A compact array is composed of a index array and value array.  The index
+ * array contains the indicies of Unicode characters to the value array.
+ * @see                CompactByteArray
+ * @version            $Revision: 1.9 $
+ * @author             Helena Shih
+ */
+public final class CompactCharArray implements Cloneable {
+
+    /**
+     * The total number of Unicode characters.
+     */
+    public static  final int UNICODECOUNT = 65536;
+
+    /**
+     * Default constructor for CompactCharArray, the default value of the
+     * compact array is 0.
+     */
+    public CompactCharArray()
+    {
+        this((char)0);
+    }
+
+    /**
+     * Constructor for CompactCharArray.
+     * @param defaultValue the default value of the compact array.
+     */
+    public CompactCharArray(char defaultValue)
+    {
+        int i;
+        values = new char[UNICODECOUNT];
+        indices = new char[INDEXCOUNT];
+        hashes = new int[INDEXCOUNT];
+        for (i = 0; i < UNICODECOUNT; ++i) {
+            values[i] = defaultValue;
+        }
+        for (i = 0; i < INDEXCOUNT; ++i) {
+            indices[i] = (char)(i<<BLOCKSHIFT);
+            hashes[i] = 0;
+        }
+        isCompact = false;
+
+        this.defaultValue = defaultValue;
+    }
+
+    /**
+     * Constructor for CompactCharArray.
+     * @param indexArray the indicies of the compact array.
+     * @param newValues the values of the compact array.
+     * @exception IllegalArgumentException If the index is out of range.
+     */
+    public CompactCharArray(char indexArray[],
+                             char newValues[])
+    {
+        int i;
+        if (indexArray.length != INDEXCOUNT)
+            throw new IllegalArgumentException("Index out of bounds.");
+        for (i = 0; i < INDEXCOUNT; ++i) {
+            char index = indexArray[i];
+            if ((index < 0) || (index >= newValues.length+BLOCKCOUNT))
+                throw new IllegalArgumentException("Index out of bounds.");
+        }
+        indices = indexArray;
+        values = newValues;
+        isCompact = true;
+    }
+
+    /**
+     * Constructor for CompactCharArray.
+     *
+     * @param indexArray the RLE-encoded indicies of the compact array.
+     * @param valueArray the RLE-encoded values of the compact array.
+     *
+     * @throws IllegalArgumentException if the index or value array is
+     *          the wrong size.
+     */
+    public CompactCharArray(String indexArray,
+			    String valueArray)
+    {
+        this( Utility.RLEStringToCharArray(indexArray),
+              Utility.RLEStringToCharArray(valueArray));
+    }
+
+    /**
+     * Get the mapped value of a Unicode character.
+     * @param index the character to get the mapped value with
+     * @return the mapped value of the given character
+     */
+    public char elementAt(char index)
+    {
+	int ix = (indices[index >> BLOCKSHIFT] & 0xFFFF)
+	    + (index & BLOCKMASK);
+	return ix >= values.length ? defaultValue : values[ix];
+    }
+
+    /**
+     * Set a new value for a Unicode character.
+     * Set automatically expands the array if it is compacted.
+     * @param index the character to set the mapped value with
+     * @param value the new mapped value
+     */
+    public void setElementAt(char index, char value)
+    {
+        if (isCompact)
+            expand();
+         values[(int)index] = value;
+        touchBlock(index >> BLOCKSHIFT, value);
+    }
+
+    /**
+     * Set new values for a range of Unicode character.
+     *
+     * @param start the starting offset of the range
+     * @param end the ending offset of the range
+     * @param value the new mapped value
+     */
+    public void setElementAt(char start, char end, char value)
+    {
+        int i;
+        if (isCompact) {
+            expand();
+        }
+        for (i = start; i <= end; ++i) {
+            values[i] = value;
+            touchBlock(i >> BLOCKSHIFT, value);
+        }
+    }
+
+    public void compact() {
+        compact(true);
+    }
+
+    /**
+     * Compact the array.
+     */
+    public void compact(boolean exhaustive)
+    {
+        if (!isCompact) {
+            int iBlockStart = 0;
+            char iUntouched = 0xFFFF;
+            int newSize = 0;
+
+            char[] target = exhaustive ? new char[UNICODECOUNT] : values;
+
+            for (int i = 0; i < indices.length; ++i, iBlockStart += BLOCKCOUNT) {
+                indices[i] = 0xFFFF;
+                boolean touched = blockTouched(i);
+                if (!touched && iUntouched != 0xFFFF) {
+                    // If no values in this block were set, we can just set its
+                    // index to be the same as some other block with no values
+                    // set, assuming we've seen one yet.
+                    indices[i] = iUntouched;
+                } else {
+                    int jBlockStart = 0;
+                    // See if we can find a previously compacted block that's identical
+                    for (int j = 0; j < i; ++j, jBlockStart += BLOCKCOUNT) {
+                        if (hashes[i] == hashes[j] &&
+                                arrayRegionMatches(values, iBlockStart,
+                                                   values, jBlockStart, BLOCKCOUNT)) {
+                            indices[i] = indices[j];
+                        }
+                    }
+                    if (indices[i] == 0xFFFF) {
+                        int dest;   // Where to copy
+                        if (exhaustive) {
+                            // See if we can find some overlap with another block
+                            dest = FindOverlappingPosition(iBlockStart, target,
+                                                            newSize);
+                        } else {
+                            // Just copy to the end; it's quicker
+                            dest = newSize;
+                        }
+                        int limit = dest + BLOCKCOUNT;
+                        if (limit > newSize) {
+                            for (int j = newSize; j < limit; ++j) {
+                                target[j] = values[iBlockStart + j - dest];
+                            }
+                            newSize = limit;
+                        }
+                        indices[i] = (char)dest;
+                        if (!touched) {
+                            // If this is the first untouched block we've seen,
+                            // remember its index.
+                            iUntouched = (char)jBlockStart;
+                        }
+                    }
+                }
+            }
+            // we are done compacting, so now make the array shorter
+            char[] result = new char[newSize];
+            System.arraycopy(target, 0, result, 0, newSize);
+            values = result;
+            isCompact = true;
+            hashes = null;
+        }
+    }
+
+    private int FindOverlappingPosition(int start, char[] tempValues, int tempCount)
+    {
+        for (int i = 0; i < tempCount; i += 1) {
+            int currentCount = BLOCKCOUNT;
+            if (i + BLOCKCOUNT > tempCount) {
+                currentCount = tempCount - i;
+            }
+            if (arrayRegionMatches(values, start, tempValues, i, currentCount))
+                return i;
+        }
+        return tempCount;
+    }
+
+    /**
+     * Convenience utility to compare two arrays of doubles.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     */
+    final static boolean arrayRegionMatches(char[] source, int sourceStart,
+                                            char[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Remember that a specified block was "touched", i.e. had a value set.
+     * Untouched blocks can be skipped when compacting the array
+     */
+    private final void touchBlock(int i, int value) {
+        hashes[i] = (hashes[i] + (value<<1)) | 1;
+    }
+
+    /**
+     * Query whether a specified block was "touched", i.e. had a value set.
+     * Untouched blocks can be skipped when compacting the array
+     */
+    private final boolean blockTouched(int i) {
+        return hashes[i] != 0;
+    }
+
+    /**
+     * For internal use only.  Do not modify the result, the behavior of
+     * modified results are undefined.
+     */
+    public char[] getIndexArray()
+    {
+        return indices;
+    }
+
+    /**
+     * For internal use only.  Do not modify the result, the behavior of
+     * modified results are undefined.
+     */
+    public char[] getValueArray()
+    {
+        return values;
+    }
+
+    /**
+     * Overrides Cloneable
+     */
+    public Object clone()
+    {
+        try {
+            CompactCharArray other = (CompactCharArray) super.clone();
+            other.values = (char[])values.clone();
+            other.indices = (char[])indices.clone();
+            if (hashes != null) other.hashes = (int[])hashes.clone();
+            return other;
+        } catch (CloneNotSupportedException e) {
+            throw new InternalError();
+        }
+    }
+
+    /**
+     * Compares the equality of two compact array objects.
+     * @param obj the compact array object to be compared with this.
+     * @return true if the current compact array object is the same
+     * as the compact array object obj; false otherwise.
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (this == obj)                      // quick check
+            return true;
+        if (getClass() != obj.getClass())         // same class?
+            return false;
+        CompactCharArray other = (CompactCharArray) obj;
+        for (int i = 0; i < UNICODECOUNT; i++) {
+            // could be sped up later
+            if (elementAt((char)i) != other.elementAt((char)i))
+                return false;
+        }
+        return true; // we made it through the guantlet.
+    }
+
+    /**
+     * Generates the hash code for the compact array object
+     */
+    public int hashCode() {
+        int result = 0;
+        int increment = Math.min(3, values.length/16);
+        for (int i = 0; i < values.length; i+= increment) {
+            result = result * 37 + values[i];
+        }
+        return result;
+    }
+
+
+    // --------------------------------------------------------------
+    // private
+    // --------------------------------------------------------------
+
+    /**
+     * Expanding takes the array back to a 65536 element array.
+     */
+    private void expand()
+    {
+        int i;
+        if (isCompact) {
+            char[] tempArray;
+            hashes = new int[INDEXCOUNT];
+            tempArray = new char[UNICODECOUNT];
+            for (i = 0; i < UNICODECOUNT; ++i) {
+                tempArray[i] = elementAt((char)i);
+            }
+            for (i = 0; i < INDEXCOUNT; ++i) {
+                indices[i] = (char)(i<<BLOCKSHIFT);
+            }
+            values = null;
+            values = tempArray;
+            isCompact = false;
+        }
+    }
+
+    public static  final int BLOCKSHIFT = 5; // NormalizerBuilder needs - liu
+    static  final int BLOCKCOUNT =(1<<BLOCKSHIFT);
+    static  final int INDEXSHIFT =(16-BLOCKSHIFT);
+    static  final int INDEXCOUNT =(1<<INDEXSHIFT);
+    static  final int BLOCKMASK = BLOCKCOUNT - 1;
+
+    private char values[];
+    private char indices[];
+    private int[] hashes;
+    private boolean isCompact;
+    char defaultValue;
+};
diff --git a/src/com/ibm/icu/util/Currency.java b/src/com/ibm/icu/util/Currency.java
new file mode 100644
index 0000000..95aba02
--- /dev/null
+++ b/src/com/ibm/icu/util/Currency.java
@@ -0,0 +1,238 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/Currency.java,v $
+ * $Date: 2002/08/13 23:43:27 $
+ * $Revision: 1.4 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+import java.io.Serializable;
+import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.text.DecimalFormatSymbols;
+
+/**
+ * A class encapsulating a currency, as defined by ISO 4217.  A
+ * <tt>Currency</tt> object can be created given a <tt>Locale</tt> or
+ * given an ISO 4217 code.  Once created, the <tt>Currency</tt> object
+ * can return various data necessary to its proper display:
+ *
+ * <ul><li>A display symbol, for a specific locale
+ * <li>The number of fraction digits to display
+ * <li>A rounding increment
+ * </ul>
+ *
+ * The <tt>DecimalFormat</tt> class uses these data to display
+ * currencies.
+ *
+ * <p>Note: This class deliberately resembles
+ * <tt>java.util.Currency</tt> but it has a completely independent
+ * implementation, and adds features not present in the JDK.
+ * @author Alan Liu
+ * @since ICU 2.2
+ */
+public class Currency implements Serializable {
+
+    /**
+     * ISO 4217 3-letter code.
+     */
+    private String isoCode;
+
+    /**
+     * Returns a currency object for the default currency in the given
+     * locale.
+     */
+    public static Currency getInstance(Locale locale) {
+        // Look up the CurrencyElements resource for this locale.
+        // It contains: [0] = currency symbol, e.g. "$";
+        // [1] = intl. currency symbol, e.g. "USD";
+        // [2] = monetary decimal separator, e.g. ".".
+        ResourceBundle rb = ICULocaleData.getLocaleElements(locale);
+        String[] currencyElements = rb.getStringArray("CurrencyElements");
+        return getInstance(currencyElements[1]);
+    }
+
+    /**
+     * Returns a currency object given an ISO 4217 3-letter code.
+     */
+    public static Currency getInstance(String theISOCode) {
+        return new Currency(theISOCode);
+    }
+
+    /**
+     * Returns the ISO 4217 3-letter code for this currency object.
+     */
+    public String getCurrencyCode() {
+        return isoCode;
+    }
+
+    /**
+     * Returns the display string for this currency object in the
+     * given locale.  For example, the display string for the USD
+     * currency object in the en_US locale is "$".
+     */
+    public String getSymbol(Locale locale) {
+        // Look up the Currencies resource for the given locale.  The
+        // Currencies locale looks like this in the original C
+        // resource file:
+        //|en {
+        //|  Currencies { 
+        //|    USD { "$" }
+        //|    CHF { "sFr" }
+        //|    //...
+        //|  }
+        //|}
+        ResourceBundle rb = ICULocaleData.getLocaleElements(locale);
+        // We can't cast this to String[][]; the cast has to happen later
+        try {
+            Object[][] currencies = (Object[][]) rb.getObject("Currencies");
+            // Do a linear search
+            for (int i=0; i<currencies.length; ++i) {
+                if (isoCode.equals((String) currencies[i][0])) {
+                    return (String) currencies[i][1];
+                }
+            }
+        }
+        catch (MissingResourceException e) {}
+
+        try {
+            // Since the Currencies resource is not fully populated yet,
+            // check to see if we can find what we want in the CurrencyElements
+            // resource.
+            String[] currencyElements = rb.getStringArray("CurrencyElements");
+            if (currencyElements[1].equals(isoCode)) {
+                return currencyElements[0];
+            }
+        }
+        catch (MissingResourceException e2) {}
+
+        // If we fail to find a match, use the full ISO code
+        return isoCode;
+    }
+
+    /**
+     * Returns the number of the number of fraction digits that should
+     * be displayed for this currency.
+     * @return a non-negative number of fraction digits to be
+     * displayed
+     */
+    public int getDefaultFractionDigits() {
+        return (findData())[0].intValue();
+    }
+
+    /**
+     * Returns the rounding increment for this currency, or 0.0 if no
+     * rounding is done by this currency.
+     * @return the non-negative rounding increment, or 0.0 if none
+     */
+    public double getRoundingIncrement() {
+        Integer[] data = findData();
+
+        int data1 = data[1].intValue(); // rounding increment
+
+        // If there is no rounding return 0.0 to indicate no rounding.
+        // This is the high-runner case, by far.
+        if (data1 == 0) {
+            return 0.0;
+        }
+
+        int data0 = data[0].intValue(); // fraction digits
+
+        // If the meta data is invalid, return 0.0 to indicate no rounding.
+        if (data0 < 0 || data0 >= POW10.length) {
+            return 0.0;
+        }
+
+        // Return data[1] / 10^(data[0]).  The only actual rounding data,
+        // as of this writing, is CHF { 2, 25 }.
+        return (double) data1 / POW10[data0];
+    }
+
+    /**
+     * Returns the ISO 4217 code for this currency.
+     */
+    public String toString() {
+        return isoCode;
+    }
+
+    /**
+     * Constructs a currency object for the given ISO 4217 3-letter
+     * code.  This constructor assumes that the code is valid.
+     */
+    private Currency(String theISOCode) {
+        isoCode = theISOCode;
+    }
+
+    /**
+     * Internal function to look up currency data.  Result is an array of
+     * two Integers.  The first is the fraction digits.  The second is the
+     * rounding increment, or 0 if none.  The rounding increment is in
+     * units of 10^(-fraction_digits).
+     */
+    private Integer[] findData() {
+
+        try {
+            // Get CurrencyMeta resource out of root locale file.  [This may
+            // move out of the root locale file later; if it does, update this
+            // code.]
+            ResourceBundle root = ICULocaleData.getLocaleElements("");
+
+            Object[][] currencyMeta = (Object[][]) root.getObject("CurrencyMeta");
+
+            Integer[] i = null;
+            int defaultPos = -1;
+
+            // Do a linear search for isoCode.  At the same time,
+            // record the position of the DEFAULT meta data.  If the
+            // meta data becomes large, make this faster.
+            for (int j=0; j<currencyMeta.length; ++j) {
+                Object[] row = currencyMeta[j];
+                String s = (String) row[0];
+                int c = isoCode.compareToIgnoreCase(s);
+                if (c == 0) {
+                    i = (Integer[]) row[1];
+                    break;
+                }
+                if ("DEFAULT".equalsIgnoreCase(s)) {
+                    defaultPos = j;
+                }
+                if (c < 0 && defaultPos >= 0) {
+                    break;
+                }
+            }
+
+            if (i == null && defaultPos >= 0) {
+                i = (Integer[]) currencyMeta[defaultPos][1];
+            }
+
+            if (i != null && i.length >= 2) {
+                return i;
+            }
+        }
+        catch (MissingResourceException e) {}
+
+        // Config/build error; return hard-coded defaults
+        return LAST_RESORT_DATA;
+    }
+
+    // Default currency meta data of last resort.  We try to use the
+    // defaults encoded in the meta data resource bundle.  If there is a
+    // configuration/build error and these are not available, we use these
+    // hard-coded defaults (which should be identical).
+    private static final Integer[] LAST_RESORT_DATA =
+        new Integer[] { new Integer(2), new Integer(0) };
+
+    // POW10[i] = 10^i
+    private static final int[] POW10 = { 1, 10, 100, 1000, 10000, 100000,
+                                1000000, 10000000, 100000000, 1000000000 };
+}
+
+//eof
diff --git a/src/com/ibm/icu/util/DateRule.java b/src/com/ibm/icu/util/DateRule.java
new file mode 100755
index 0000000..39d6c6a
--- /dev/null
+++ b/src/com/ibm/icu/util/DateRule.java
@@ -0,0 +1,74 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/DateRule.java,v $ 
+ * $Date: 2002/02/16 03:06:27 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+
+/**
+ * DateRule is an interface for calculating the date of an event.
+ * It supports both recurring events and those which occur only once.
+ * DateRule is useful for storing information about holidays,
+ * Daylight Savings Time rules, and other events such as meetings.
+ *
+ * @see SimpleDateRule
+ */
+public interface DateRule
+{
+    /**
+     * Return the first occurrance of the event represented by this rule
+     * that is on or after the given start date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur on or after the start date.
+     *
+     * @see #firstBetween
+     */
+    abstract public Date    firstAfter(Date start);
+
+    /**
+     * Return the first occurrance of the event represented by this rule
+     * that is on or after the given start date and before the given
+     * end date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     * @param end   Only occurrances before this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur between the start and end dates.
+     *
+     * @see #firstAfter
+     */
+    abstract public Date    firstBetween(Date start, Date end);
+
+    /**
+     * Checks whether this event occurs on the given date.  This does
+     * <em>not</em> take time of day into account; instead it checks
+     * whether this event and the given date are on the same day.
+     * This is useful for applications such as determining whether a given
+     * day is a holiday.
+     *
+     * @param date  The date to check.
+     * @return      true if this event occurs on the given date.
+     *
+     */
+    abstract public boolean isOn(Date date);
+
+    /**
+     * Check whether this event occurs at least once between the two
+     * dates given.
+     */
+    abstract public boolean isBetween(Date start, Date end);
+};
\ No newline at end of file
diff --git a/src/com/ibm/icu/util/EasterHoliday.java b/src/com/ibm/icu/util/EasterHoliday.java
new file mode 100755
index 0000000..deac432
--- /dev/null
+++ b/src/com/ibm/icu/util/EasterHoliday.java
@@ -0,0 +1,279 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/EasterHoliday.java,v $ 
+ * $Date: 2002/02/16 03:06:27 $ 
+ * $Revision: 1.6 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.SimpleTimeZone;
+
+/**
+ * A Holiday subclass which represents holidays that occur
+ * a fixed number of days before or after Easter.  Supports both the
+ * Western and Orthodox methods for calculating Easter.
+ *
+ */
+public class EasterHoliday extends Holiday
+{
+    /**
+     * Construct a holiday that falls on Easter Sunday every year
+     *
+     * @param name The name of the holiday
+     */
+    public EasterHoliday(String name)
+    {
+        super(name, new EasterRule(0, false));
+    }
+
+    /**
+     * Construct a holiday that falls a specified number of days before
+     * or after Easter Sunday each year.
+     *
+     * @param daysAfter The number of days before (-) or after (+) Easter
+     * @param name      The name of the holiday
+     */
+    public EasterHoliday(int daysAfter, String name)
+    {
+        super(name, new EasterRule(daysAfter, false));
+    }
+
+    /**
+     * Construct a holiday that falls a specified number of days before
+     * or after Easter Sunday each year, using either the Western
+     * or Orthodox calendar.
+     *
+     * @param daysAfter The number of days before (-) or after (+) Easter
+     * @param orthodox  Use the Orthodox calendar?
+     * @param name      The name of the holiday
+     */
+    public EasterHoliday(int daysAfter, boolean orthodox, String name)
+    {
+        super(name, new EasterRule(daysAfter, orthodox));
+    }
+
+    /**
+     * Shrove Tuesday, aka Mardi Gras, 48 days before Easter
+     */
+    static public final EasterHoliday SHROVE_TUESDAY  = new EasterHoliday(-48,    "Shrove Tuesday");
+
+    /**
+     * Ash Wednesday, start of Lent, 47 days before Easter
+     */
+    static public final EasterHoliday ASH_WEDNESDAY   = new EasterHoliday(-47,    "Ash Wednesday");
+
+    /**
+     * Palm Sunday, 7 days before Easter
+     */
+    static public final EasterHoliday PALM_SUNDAY     = new EasterHoliday( -7,    "Palm Sunday");
+
+    /**
+     * Maundy Thursday, 3 days before Easter
+     */
+    static public final EasterHoliday MAUNDY_THURSDAY = new EasterHoliday( -3,    "Maundy Thursday");
+
+    /**
+     * Good Friday, 2 days before Easter
+     */
+    static public final EasterHoliday GOOD_FRIDAY     = new EasterHoliday( -2,    "Good Friday");
+
+    /**
+     * Easter Sunday
+     */
+    static public final EasterHoliday EASTER_SUNDAY   = new EasterHoliday(  0,    "Easter Sunday");
+
+    /**
+     * Easter Monday, 1 day after Easter
+     */
+    static public final EasterHoliday EASTER_MONDAY   = new EasterHoliday(  1,    "Easter Monday");
+
+    /**
+     * Ascension, 39 days after Easter
+     */
+    static public final EasterHoliday ASCENSION       = new EasterHoliday( 39,    "Ascension");
+
+    /**
+     * Pentecost (aka Whit Sunday), 49 days after Easter
+     */
+    static public final EasterHoliday PENTECOST       = new EasterHoliday( 49,    "Pentecost");
+
+    /**
+     * Whit Sunday (aka Pentecost), 49 days after Easter
+     */
+    static public final EasterHoliday WHIT_SUNDAY     = new EasterHoliday( 49,    "Whit Sunday");
+
+    /**
+     * Whit Monday, 50 days after Easter
+     */
+    static public final EasterHoliday WHIT_MONDAY     = new EasterHoliday( 50,    "Whit Monday");
+
+    /**
+     * Corpus Christi, 60 days after Easter
+     */
+    static public final EasterHoliday CORPUS_CHRISTI  = new EasterHoliday( 60,    "Corpus Christi");
+}
+
+class EasterRule implements DateRule {
+    public EasterRule(int daysAfterEaster, boolean isOrthodox) {
+        this.daysAfterEaster = daysAfterEaster;
+        if (isOrthodox) {
+            orthodox.setGregorianChange(new Date(Long.MAX_VALUE));
+            calendar = orthodox;
+        }
+    }
+
+    /**
+     * Return the first occurrance of this rule on or after the given date
+     */
+    public Date firstAfter(Date start)
+    {
+        if (startDate != null && start.before(startDate)) {
+            start = startDate;
+        }
+        return doFirstBetween(start, null);
+    }
+
+    /**
+     * Return the first occurrance of this rule on or after
+     * the given start date and before the given end date.
+     */
+    public Date firstBetween(Date start, Date end)
+    {
+        // Pin to the min/max dates for this rule
+        if (startDate != null && start.before(startDate)) {
+            start = startDate;
+        }
+        return doFirstBetween(start, end);
+    }
+
+    /**
+     * Return true if the given Date is on the same day as Easter
+     */
+    public boolean isOn(Date date)
+    {
+        if (startDate != null && date.before(startDate)) {
+            return false;
+        }
+
+        synchronized(calendar) {
+            calendar.setTime(date);
+            int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
+
+            calendar.setTime(computeInYear(calendar.getTime(), calendar));
+
+            return calendar.get(Calendar.DAY_OF_YEAR) == dayOfYear;
+        }
+    }
+
+    /**
+     * Return true if Easter occurs between the two dates given
+     */
+    public boolean isBetween(Date start, Date end)
+    {
+        return firstBetween(start, end) != null; // TODO: optimize?
+    }
+
+    private Date doFirstBetween(Date start, Date end)
+    {
+        //System.out.println("doFirstBetween: start   = " + start.toString());
+        //System.out.println("doFirstBetween: end     = " + end.toString());
+
+        synchronized(calendar) {
+            // Figure out when this holiday lands in the given year
+            Date result = computeInYear(start, calendar);
+
+         //System.out.println("                result  = " + result.toString());
+
+            // We might have gotten a date that's in the same year as "start", but
+            // earlier in the year.  If so, go to next year
+            if (result.before(start))
+            {
+                calendar.setTime(start);
+                calendar.get(Calendar.YEAR);    // JDK 1.1.2 bug workaround
+                calendar.add(Calendar.YEAR, 1);
+
+                //System.out.println("                Result before start, going to next year: "
+                //                        + calendar.getTime().toString());
+
+                result = computeInYear(calendar.getTime(), calendar);
+                //System.out.println("                result  = " + result.toString());
+            }
+
+            if (end != null && result.after(end)) {
+                //System.out.println("Result after end, returning null");
+                return null;
+            }
+            return result;
+        }
+    }
+
+    /**
+     * Compute the month and date on which this holiday falls in the year
+     * containing the date "date".  First figure out which date Easter
+     * lands on in this year, and then add the offset for this holiday to get
+     * the right date.
+     * <p>
+     * The algorithm here is taken from the
+     * <a href=http://www.pip.dknet.dk/~pip10160/calendar.html>Calendar FAQ,
+     * version 1.7</a>
+     */
+    private Date computeInYear(Date date, GregorianCalendar cal)
+    {
+        if (cal == null) cal = calendar;
+
+        synchronized(cal) {
+            cal.setTime(date);
+
+            int year = cal.get(Calendar.YEAR);
+            int g = year % 19;  // "Golden Number" of year - 1
+            int i = 0;          // # of days from 3/21 to the Paschal full moon
+            int j = 0;          // Weekday (0-based) of Paschal full moon
+
+            if (cal.getTime().after( cal.getGregorianChange()))
+            {
+                // We're past the Gregorian switchover, so use the Gregorian rules.
+                int c = year / 100;
+                int h = (c - c/4 - (8*c+13)/25 + 19*g + 15) % 30;
+                i = h - (h/28)*(1 - (h/28)*(29/(h+1))*((21-g)/11));
+                j = (year + year/4 + i + 2 - c + c/4) % 7;
+            }
+            else
+            {
+                // Use the old Julian rules.
+                i = (19*g + 15) % 30;
+                j = (year + year/4 + i) % 7;
+            }
+            int l = i - j;
+            int m = 3 + (l+40)/44;              // 1-based month in which Easter falls
+            int d = l + 28 - 31*(m/4);          // Date of Easter within that month
+
+            cal.clear();
+            cal.set(Calendar.ERA, GregorianCalendar.AD);
+            cal.set(Calendar.YEAR, year);
+            cal.set(Calendar.MONTH, m-1);       // 0-based
+            cal.set(Calendar.DATE, d);
+            cal.getTime();                      // JDK 1.1.2 bug workaround
+            cal.add(Calendar.DATE, daysAfterEaster);
+
+            return cal.getTime();
+        }
+    }
+
+    static GregorianCalendar gregorian = new GregorianCalendar(new SimpleTimeZone(0, "UTC"));
+    static GregorianCalendar orthodox = new GregorianCalendar(new SimpleTimeZone(0, "UTC"));
+
+    int               daysAfterEaster;
+    Date              startDate = null;
+    GregorianCalendar calendar = gregorian;
+
+}
diff --git a/src/com/ibm/icu/util/GregorianCalendar.java b/src/com/ibm/icu/util/GregorianCalendar.java
new file mode 100755
index 0000000..beca53f
--- /dev/null
+++ b/src/com/ibm/icu/util/GregorianCalendar.java
@@ -0,0 +1,904 @@
+/*
+*   Copyright (C) 1996-2002, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+
+package com.ibm.icu.util;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>GregorianCalendar</code> is a concrete subclass of
+ * {@link Calendar}
+ * and provides the standard calendar used by most of the world.
+ *
+ * <p>
+ * The standard (Gregorian) calendar has 2 eras, BC and AD.
+ *
+ * <p>
+ * This implementation handles a single discontinuity, which corresponds by
+ * default to the date the Gregorian calendar was instituted (October 15, 1582
+ * in some countries, later in others).  The cutover date may be changed by the
+ * caller by calling <code>setGregorianChange()</code>.
+ *
+ * <p>
+ * Historically, in those countries which adopted the Gregorian calendar first,
+ * October 4, 1582 was thus followed by October 15, 1582. This calendar models
+ * this correctly.  Before the Gregorian cutover, <code>GregorianCalendar</code>
+ * implements the Julian calendar.  The only difference between the Gregorian
+ * and the Julian calendar is the leap year rule. The Julian calendar specifies
+ * leap years every four years, whereas the Gregorian calendar omits century
+ * years which are not divisible by 400.
+ *
+ * <p>
+ * <code>GregorianCalendar</code> implements <em>proleptic</em> Gregorian and
+ * Julian calendars. That is, dates are computed by extrapolating the current
+ * rules indefinitely far backward and forward in time. As a result,
+ * <code>GregorianCalendar</code> may be used for all years to generate
+ * meaningful and consistent results. However, dates obtained using
+ * <code>GregorianCalendar</code> are historically accurate only from March 1, 4
+ * AD onward, when modern Julian calendar rules were adopted.  Before this date,
+ * leap year rules were applied irregularly, and before 45 BC the Julian
+ * calendar did not even exist.
+ *
+ * <p>
+ * Prior to the institution of the Gregorian calendar, New Year's Day was
+ * March 25. To avoid confusion, this calendar always uses January 1. A manual
+ * adjustment may be made if desired for dates that are prior to the Gregorian
+ * changeover and which fall between January 1 and March 24.
+ *
+ * <p>Values calculated for the <code>WEEK_OF_YEAR</code> field range from 1 to
+ * 53.  Week 1 for a year is the earliest seven day period starting on
+ * <code>getFirstDayOfWeek()</code> that contains at least
+ * <code>getMinimalDaysInFirstWeek()</code> days from that year.  It thus
+ * depends on the values of <code>getMinimalDaysInFirstWeek()</code>,
+ * <code>getFirstDayOfWeek()</code>, and the day of the week of January 1.
+ * Weeks between week 1 of one year and week 1 of the following year are
+ * numbered sequentially from 2 to 52 or 53 (as needed).
+
+ * <p>For example, January 1, 1998 was a Thursday.  If
+ * <code>getFirstDayOfWeek()</code> is <code>MONDAY</code> and
+ * <code>getMinimalDaysInFirstWeek()</code> is 4 (these are the values
+ * reflecting ISO 8601 and many national standards), then week 1 of 1998 starts
+ * on December 29, 1997, and ends on January 4, 1998.  If, however,
+ * <code>getFirstDayOfWeek()</code> is <code>SUNDAY</code>, then week 1 of 1998
+ * starts on January 4, 1998, and ends on January 10, 1998; the first three days
+ * of 1998 then are part of week 53 of 1997.
+ *
+ * <p>Values calculated for the <code>WEEK_OF_MONTH</code> field range from 0 or
+ * 1 to 4 or 5.  Week 1 of a month (the days with <code>WEEK_OF_MONTH =
+ * 1</code>) is the earliest set of at least
+ * <code>getMinimalDaysInFirstWeek()</code> contiguous days in that month,
+ * ending on the day before <code>getFirstDayOfWeek()</code>.  Unlike
+ * week 1 of a year, week 1 of a month may be shorter than 7 days, need
+ * not start on <code>getFirstDayOfWeek()</code>, and will not include days of
+ * the previous month.  Days of a month before week 1 have a
+ * <code>WEEK_OF_MONTH</code> of 0.
+ *
+ * <p>For example, if <code>getFirstDayOfWeek()</code> is <code>SUNDAY</code>
+ * and <code>getMinimalDaysInFirstWeek()</code> is 4, then the first week of
+ * January 1998 is Sunday, January 4 through Saturday, January 10.  These days
+ * have a <code>WEEK_OF_MONTH</code> of 1.  Thursday, January 1 through
+ * Saturday, January 3 have a <code>WEEK_OF_MONTH</code> of 0.  If
+ * <code>getMinimalDaysInFirstWeek()</code> is changed to 3, then January 1
+ * through January 3 have a <code>WEEK_OF_MONTH</code> of 1.
+ *
+ * <p>
+ * <strong>Example:</strong>
+ * <blockquote>
+ * <pre>
+ * // get the supported ids for GMT-08:00 (Pacific Standard Time)
+ * String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
+ * // if no ids were returned, something is wrong. get out.
+ * if (ids.length == 0)
+ *     System.exit(0);
+ *
+ *  // begin output
+ * System.out.println("Current Time");
+ *
+ * // create a Pacific Standard Time time zone
+ * SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);
+ *
+ * // set up rules for daylight savings time
+ * pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
+ * pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
+ *
+ * // create a GregorianCalendar with the Pacific Daylight time zone
+ * // and the current date and time
+ * Calendar calendar = new GregorianCalendar(pdt);
+ * Date trialTime = new Date();
+ * calendar.setTime(trialTime);
+ *
+ * // print out a bunch of interesting things
+ * System.out.println("ERA: " + calendar.get(Calendar.ERA));
+ * System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
+ * System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
+ * System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
+ * System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
+ * System.out.println("DATE: " + calendar.get(Calendar.DATE));
+ * System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
+ * System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
+ * System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
+ * System.out.println("DAY_OF_WEEK_IN_MONTH: "
+ *                    + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
+ * System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
+ * System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
+ * System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
+ * System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
+ * System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
+ * System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
+ * System.out.println("ZONE_OFFSET: "
+ *                    + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000)));
+ * System.out.println("DST_OFFSET: "
+ *                    + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000)));
+
+ * System.out.println("Current Time, with hour reset to 3");
+ * calendar.clear(Calendar.HOUR_OF_DAY); // so doesn't override
+ * calendar.set(Calendar.HOUR, 3);
+ * System.out.println("ERA: " + calendar.get(Calendar.ERA));
+ * System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
+ * System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
+ * System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
+ * System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
+ * System.out.println("DATE: " + calendar.get(Calendar.DATE));
+ * System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
+ * System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
+ * System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
+ * System.out.println("DAY_OF_WEEK_IN_MONTH: "
+ *                    + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
+ * System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
+ * System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
+ * System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
+ * System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
+ * System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
+ * System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
+ * System.out.println("ZONE_OFFSET: "
+ *        + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000))); // in hours
+ * System.out.println("DST_OFFSET: "
+ *        + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000))); // in hours
+ * </pre>
+ * </blockquote>
+ *
+ * @see          Calendar
+ * @see          TimeZone
+ * @version      1.52
+ * @author David Goldsmith, Mark Davis, Chen-Lieh Huang, Alan Liu
+ * @since JDK1.1
+ */
+public class GregorianCalendar extends Calendar {
+    /*
+     * Implementation Notes
+     *
+     * The Julian day number, as used here, is a modified number which has its
+     * onset at midnight, rather than noon.
+     *
+     * The epoch is the number of days or milliseconds from some defined
+     * starting point. The epoch for java.util.Date is used here; that is,
+     * milliseconds from January 1, 1970 (Gregorian), midnight UTC.  Other
+     * epochs which are used are January 1, year 1 (Gregorian), which is day 1
+     * of the Gregorian calendar, and December 30, year 0 (Gregorian), which is
+     * day 1 of the Julian calendar.
+     *
+     * We implement the proleptic Julian and Gregorian calendars.  This means we
+     * implement the modern definition of the calendar even though the
+     * historical usage differs.  For example, if the Gregorian change is set
+     * to new Date(Long.MIN_VALUE), we have a pure Gregorian calendar which
+     * labels dates preceding the invention of the Gregorian calendar in 1582 as
+     * if the calendar existed then.
+     *
+     * Likewise, with the Julian calendar, we assume a consistent 4-year leap
+     * rule, even though the historical pattern of leap years is irregular,
+     * being every 3 years from 45 BC through 9 BC, then every 4 years from 8 AD
+     * onwards, with no leap years in-between.  Thus date computations and
+     * functions such as isLeapYear() are not intended to be historically
+     * accurate.
+     *
+     * Given that milliseconds are a long, day numbers such as Julian day
+     * numbers, Gregorian or Julian calendar days, or epoch days, are also
+     * longs. Years can fit into an int.
+     */
+
+//////////////////
+// Class Variables
+//////////////////
+
+    /**
+     * Value of the <code>ERA</code> field indicating
+     * the period before the common era (before Christ), also known as BCE.
+     * The sequence of years at the transition from <code>BC</code> to <code>AD</code> is
+     * ..., 2 BC, 1 BC, 1 AD, 2 AD,...
+     * @see Calendar#ERA
+     */
+    public static final int BC = 0;
+
+    /**
+     * Value of the <code>ERA</code> field indicating
+     * the common era (Anno Domini), also known as CE.
+     * The sequence of years at the transition from <code>BC</code> to <code>AD</code> is
+     * ..., 2 BC, 1 BC, 1 AD, 2 AD,...
+     * @see Calendar#ERA
+     */
+    public static final int AD = 1;
+
+    private static final int EPOCH_YEAR = 1970;
+
+    private static final int[][] MONTH_COUNT = {
+        //len len2   st  st2
+        {  31,  31,   0,   0 }, // Jan
+        {  28,  29,  31,  31 }, // Feb
+        {  31,  31,  59,  60 }, // Mar
+        {  30,  30,  90,  91 }, // Apr
+        {  31,  31, 120, 121 }, // May
+        {  30,  30, 151, 152 }, // Jun
+        {  31,  31, 181, 182 }, // Jul
+        {  31,  31, 212, 213 }, // Aug
+        {  30,  30, 243, 244 }, // Sep
+        {  31,  31, 273, 274 }, // Oct
+        {  30,  30, 304, 305 }, // Nov
+        {  31,  31, 334, 335 }  // Dec
+        // len  length of month
+        // len2 length of month in a leap year
+        // st   days in year before start of month
+        // st2  days in year before month in leap year
+    };
+    
+    /**
+     * Old year limits were least max 292269054, max 292278994.
+     */
+    private static final int LIMITS[][] = {
+        // Minimum  Greatest    Least  Maximum
+        //           Minimum  Maximum
+        {        0,        0,       1,       1 }, // ERA
+        {        1,        1, 5828963, 5838270 }, // YEAR
+        {        0,        0,      11,      11 }, // MONTH
+        {        1,        1,      52,      53 }, // WEEK_OF_YEAR
+        {        0,        0,       4,       6 }, // WEEK_OF_MONTH
+        {        1,        1,      28,      31 }, // DAY_OF_MONTH
+        {        1,        1,     365,     366 }, // DAY_OF_YEAR
+        {/*                                  */}, // DAY_OF_WEEK
+        {       -1,       -1,       4,       6 }, // DAY_OF_WEEK_IN_MONTH
+        {/*                                  */}, // AM_PM
+        {/*                                  */}, // HOUR
+        {/*                                  */}, // HOUR_OF_DAY
+        {/*                                  */}, // MINUTE
+        {/*                                  */}, // SECOND
+        {/*                                  */}, // MILLISECOND
+        {/*                                  */}, // ZONE_OFFSET
+        {/*                                  */}, // DST_OFFSET
+        { -5838270, -5838270, 5828964, 5838271 }, // YEAR_WOY
+        {/*                                  */}, // DOW_LOCAL
+        { -5838269, -5838269, 5828963, 5838270 }, // EXTENDED_YEAR
+        {/*                                  */}, // JULIAN_DAY
+        {/*                                  */}, // MILLISECONDS_IN_DAY
+    };
+
+    protected int handleGetLimit(int field, int limitType) {
+        return LIMITS[field][limitType];
+    }
+
+/////////////////////
+// Instance Variables
+/////////////////////
+
+    /**
+     * The point at which the Gregorian calendar rules are used, measured in
+     * milliseconds from the standard epoch.  Default is October 15, 1582
+     * (Gregorian) 00:00:00 UTC or -12219292800000L.  For this value, October 4,
+     * 1582 (Julian) is followed by October 15, 1582 (Gregorian).  This
+     * corresponds to Julian day number 2299161.
+     * @serial
+     */
+    private long gregorianCutover = -12219292800000L;
+
+    /**
+     * Julian day number of the Gregorian cutover.
+     */
+    private transient int cutoverJulianDay = 2299161;
+    
+    /**
+     * The year of the gregorianCutover, with 0 representing
+     * 1 BC, -1 representing 2 BC, etc.
+     */
+    private transient int gregorianCutoverYear = 1582;
+
+    /**
+     * Used by handleComputeJulianDay() and handleComputeMonthStart().
+     */
+    transient protected boolean isGregorian;
+
+    /**
+     * Used by handleComputeJulianDay() and handleComputeMonthStart().
+     */
+    transient protected boolean invertGregorian;
+
+///////////////
+// Constructors
+///////////////
+
+    /**
+     * Constructs a default GregorianCalendar using the current time
+     * in the default time zone with the default locale.
+     */
+    public GregorianCalendar() {
+        this(TimeZone.getDefault(), Locale.getDefault());
+    }
+
+    /**
+     * Constructs a GregorianCalendar based on the current time
+     * in the given time zone with the default locale.
+     * @param zone the given time zone.
+     */
+    public GregorianCalendar(TimeZone zone) {
+        this(zone, Locale.getDefault());
+    }
+
+    /**
+     * Constructs a GregorianCalendar based on the current time
+     * in the default time zone with the given locale.
+     * @param aLocale the given locale.
+     */
+    public GregorianCalendar(Locale aLocale) {
+        this(TimeZone.getDefault(), aLocale);
+    }
+
+    /**
+     * Constructs a GregorianCalendar based on the current time
+     * in the given time zone with the given locale.
+     * @param zone the given time zone.
+     * @param aLocale the given locale.
+     */
+    public GregorianCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a GregorianCalendar with the given date set
+     * in the default time zone with the default locale.
+     * @param year the value used to set the YEAR time field in the calendar.
+     * @param month the value used to set the MONTH time field in the calendar.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field in the calendar.
+     */
+    public GregorianCalendar(int year, int month, int date) {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        set(ERA, AD);
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+    }
+
+    /**
+     * Constructs a GregorianCalendar with the given date
+     * and time set for the default time zone with the default locale.
+     * @param year the value used to set the YEAR time field in the calendar.
+     * @param month the value used to set the MONTH time field in the calendar.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field in the calendar.
+     * @param hour the value used to set the HOUR_OF_DAY time field
+     * in the calendar.
+     * @param minute the value used to set the MINUTE time field
+     * in the calendar.
+     */
+    public GregorianCalendar(int year, int month, int date, int hour,
+                             int minute) {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        set(ERA, AD);
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+        set(HOUR_OF_DAY, hour);
+        set(MINUTE, minute);
+    }
+
+    /**
+     * Constructs a GregorianCalendar with the given date
+     * and time set for the default time zone with the default locale.
+     * @param year the value used to set the YEAR time field in the calendar.
+     * @param month the value used to set the MONTH time field in the calendar.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field in the calendar.
+     * @param hour the value used to set the HOUR_OF_DAY time field
+     * in the calendar.
+     * @param minute the value used to set the MINUTE time field
+     * in the calendar.
+     * @param second the value used to set the SECOND time field
+     * in the calendar.
+     */
+    public GregorianCalendar(int year, int month, int date, int hour,
+                             int minute, int second) {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        set(ERA, AD);
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+        set(HOUR_OF_DAY, hour);
+        set(MINUTE, minute);
+        set(SECOND, second);
+    }
+
+/////////////////
+// Public methods
+/////////////////
+
+    /**
+     * Sets the GregorianCalendar change date. This is the point when the switch
+     * from Julian dates to Gregorian dates occurred. Default is October 15,
+     * 1582. Previous to this, dates will be in the Julian calendar.
+     * <p>
+     * To obtain a pure Julian calendar, set the change date to
+     * <code>Date(Long.MAX_VALUE)</code>.  To obtain a pure Gregorian calendar,
+     * set the change date to <code>Date(Long.MIN_VALUE)</code>.
+     *
+     * @param date the given Gregorian cutover date.
+     */
+    public void setGregorianChange(Date date) {
+        gregorianCutover = date.getTime();
+
+        // If the cutover has an extreme value, then create a pure
+        // Gregorian or pure Julian calendar by giving the cutover year and
+        // JD extreme values.
+        if (gregorianCutover <= MIN_MILLIS) {
+            gregorianCutoverYear = cutoverJulianDay = Integer.MIN_VALUE;
+        } else if (gregorianCutover >= MAX_MILLIS) {
+            gregorianCutoverYear = cutoverJulianDay = Integer.MAX_VALUE;
+        } else {
+            // Precompute two internal variables which we use to do the actual
+            // cutover computations.  These are the Julian day of the cutover
+            // and the cutover year.
+            cutoverJulianDay = (int) floorDivide(gregorianCutover, ONE_DAY);
+            
+            // Convert cutover millis to extended year
+            GregorianCalendar cal = new GregorianCalendar(getTimeZone());
+            cal.setTime(date);
+            gregorianCutoverYear = cal.get(EXTENDED_YEAR);
+        }
+    }
+
+    /**
+     * Gets the Gregorian Calendar change date.  This is the point when the
+     * switch from Julian dates to Gregorian dates occurred. Default is
+     * October 15, 1582. Previous to this, dates will be in the Julian
+     * calendar.
+     * @return the Gregorian cutover date for this calendar.
+     */
+    public final Date getGregorianChange() {
+        return new Date(gregorianCutover);
+    }
+
+    /**
+     * Determines if the given year is a leap year. Returns true if the
+     * given year is a leap year.
+     * @param year the given year.
+     * @return true if the given year is a leap year; false otherwise.
+     */
+    public boolean isLeapYear(int year) {
+        return year >= gregorianCutoverYear ?
+            ((year%4 == 0) && ((year%100 != 0) || (year%400 == 0))) : // Gregorian
+            (year%4 == 0); // Julian
+    }
+
+    /**
+     * Compares this GregorianCalendar to an object reference.
+     * @param obj the object reference with which to compare
+     * @return true if this object is equal to <code>obj</code>; false otherwise
+     */
+    public boolean equals(Object obj) {
+        return super.equals(obj) &&
+            // Calendar.equals() ensures obj instanceof GregorianCalendar
+            gregorianCutover == ((GregorianCalendar)obj).gregorianCutover;
+    }
+    
+    /**
+     * Override hashCode.
+     * Generates the hash code for the GregorianCalendar object
+     */
+    public int hashCode() {
+        return super.hashCode() ^ (int)gregorianCutover;
+    }
+
+    /**
+     * Overrides Calendar
+     * Date Arithmetic function.
+     * Adds the specified (signed) amount of time to the given time field,
+     * based on the calendar's rules.
+     * @param field the time field.
+     * @param amount the amount of date or time to be added to the field.
+     * @exception IllegalArgumentException if an unknown field is given.
+     */
+    public void add(int field, int amount) {
+        switch (field) {
+        case ERA:
+            {
+                int era = get(ERA) + amount;
+                if (era < 0) {
+                    era = 0;
+                } else if (era > 1) {
+                    era = 1;
+                }
+                set(ERA, era);
+            }
+            return;
+
+        default:
+            super.add(field, amount);
+            break;
+        }
+    }
+
+    /**
+     * Roll a field by a signed amount.
+     * @since 1.2
+     */
+    public void roll(int field, int amount) {
+
+        switch (field) {
+        case ERA:
+            {
+                int era = (get(ERA) + amount ) % 2;
+                if (era < 0) {
+                    era += 2;
+                }
+                set(ERA, era);
+                return;
+            }
+
+        case WEEK_OF_YEAR:
+            {
+                // Unlike WEEK_OF_MONTH, WEEK_OF_YEAR never shifts the day of the
+                // week.  Also, rolling the week of the year can have seemingly
+                // strange effects simply because the year of the week of year
+                // may be different from the calendar year.  For example, the
+                // date Dec 28, 1997 is the first day of week 1 of 1998 (if
+                // weeks start on Sunday and the minimal days in first week is
+                // <= 3).
+                int woy = get(WEEK_OF_YEAR);
+                // Get the ISO year, which matches the week of year.  This
+                // may be one year before or after the calendar year.
+                int isoYear = get(YEAR_WOY);
+                int isoDoy = internalGet(DAY_OF_YEAR);
+                if (internalGet(MONTH) == Calendar.JANUARY) {
+                    if (woy >= 52) {
+                        isoDoy += handleGetYearLength(isoYear);
+                    }
+                } else {
+                    if (woy == 1) {
+                        isoDoy -= handleGetYearLength(isoYear - 1);
+                    }
+                }
+                woy += amount;
+                // Do fast checks to avoid unnecessary computation:
+                if (woy < 1 || woy > 52) {
+                    // Determine the last week of the ISO year.
+                    // We do this using the standard formula we use
+                    // everywhere in this file.  If we can see that the
+                    // days at the end of the year are going to fall into
+                    // week 1 of the next year, we drop the last week by
+                    // subtracting 7 from the last day of the year.
+                    int lastDoy = handleGetYearLength(isoYear);
+                    int lastRelDow = (lastDoy - isoDoy + internalGet(DAY_OF_WEEK) -
+                                      getFirstDayOfWeek()) % 7;
+                    if (lastRelDow < 0) lastRelDow += 7;
+                    if ((6 - lastRelDow) >= getMinimalDaysInFirstWeek()) lastDoy -= 7;
+                    int lastWoy = weekNumber(lastDoy, lastRelDow + 1);
+                    woy = ((woy + lastWoy - 1) % lastWoy) + 1;
+                }
+                set(WEEK_OF_YEAR, woy);
+                set(YEAR, isoYear); // Why not YEAR_WOY? - Alan 11/6/00
+                return;
+            }
+
+        default:
+            super.roll(field, amount);
+            return;
+        }
+    }
+
+    /**
+     * Return the minimum value that this field could have, given the current date.
+     * For the Gregorian calendar, this is the same as getMinimum() and getGreatestMinimum().
+     * @since 1.2
+     */
+    public int getActualMinimum(int field) {
+        return getMinimum(field);
+    }
+
+    /**
+     * Return the maximum value that this field could have, given the current date.
+     * For example, with the date "Feb 3, 1997" and the DAY_OF_MONTH field, the actual
+     * maximum would be 28; for "Feb 3, 1996" it s 29.  Similarly for a Hebrew calendar,
+     * for some years the actual maximum for MONTH is 12, and for others 13.
+     * @since 1.2
+     */
+    public int getActualMaximum(int field) {
+        /* It is a known limitation that the code here (and in getActualMinimum)
+         * won't behave properly at the extreme limits of GregorianCalendar's
+         * representable range (except for the code that handles the YEAR
+         * field).  That's because the ends of the representable range are at
+         * odd spots in the year.  For calendars with the default Gregorian
+         * cutover, these limits are Sun Dec 02 16:47:04 GMT 292269055 BC to Sun
+         * Aug 17 07:12:55 GMT 292278994 AD, somewhat different for non-GMT
+         * zones.  As a result, if the calendar is set to Aug 1 292278994 AD,
+         * the actual maximum of DAY_OF_MONTH is 17, not 30.  If the date is Mar
+         * 31 in that year, the actual maximum month might be Jul, whereas is
+         * the date is Mar 15, the actual maximum might be Aug -- depending on
+         * the precise semantics that are desired.  Similar considerations
+         * affect all fields.  Nonetheless, this effect is sufficiently arcane
+         * that we permit it, rather than complicating the code to handle such
+         * intricacies. - liu 8/20/98
+
+         * UPDATE: No longer true, since we have pulled in the limit values on
+         * the year. - Liu 11/6/00 */
+
+        switch (field) {
+
+        case YEAR:
+            /* The year computation is no different, in principle, from the
+             * others, however, the range of possible maxima is large.  In
+             * addition, the way we know we've exceeded the range is different.
+             * For these reasons, we use the special case code below to handle
+             * this field.
+             *
+             * The actual maxima for YEAR depend on the type of calendar:
+             *
+             *     Gregorian = May 17, 292275056 BC - Aug 17, 292278994 AD
+             *     Julian    = Dec  2, 292269055 BC - Jan  3, 292272993 AD
+             *     Hybrid    = Dec  2, 292269055 BC - Aug 17, 292278994 AD
+             *
+             * We know we've exceeded the maximum when either the month, date,
+             * time, or era changes in response to setting the year.  We don't
+             * check for month, date, and time here because the year and era are
+             * sufficient to detect an invalid year setting.  NOTE: If code is
+             * added to check the month and date in the future for some reason,
+             * Feb 29 must be allowed to shift to Mar 1 when setting the year.
+             */
+            {
+                Calendar cal = (Calendar) clone();
+                cal.setLenient(true);
+                
+                int era = cal.get(ERA);
+                Date d = cal.getTime();
+
+                /* Perform a binary search, with the invariant that lowGood is a
+                 * valid year, and highBad is an out of range year.
+                 */
+                int lowGood = LIMITS[YEAR][1];
+                int highBad = LIMITS[YEAR][2]+1;
+                while ((lowGood + 1) < highBad) {
+                    int y = (lowGood + highBad) / 2;
+                    cal.set(YEAR, y);
+                    if (cal.get(YEAR) == y && cal.get(ERA) == era) {
+                        lowGood = y;
+                    } else {
+                        highBad = y;
+                        cal.setTime(d); // Restore original fields
+                    }
+                }
+                
+                return lowGood;
+            }
+
+        default:
+            return super.getActualMaximum(field);
+        }
+    }
+
+//////////////////////
+// Proposed public API
+//////////////////////
+
+    /**
+     * Return true if the current time for this Calendar is in Daylignt
+     * Savings Time.
+     *
+     * Note -- MAKE THIS PUBLIC AT THE NEXT API CHANGE.  POSSIBLY DEPRECATE
+     * AND REMOVE TimeZone.inDaylightTime().
+     */
+    boolean inDaylightTime() {
+        if (!getTimeZone().useDaylightTime()) return false;
+        complete(); // Force update of DST_OFFSET field
+        return internalGet(DST_OFFSET) != 0;
+    }
+
+
+/////////////////////
+// Calendar framework
+/////////////////////
+
+    protected int handleGetMonthLength(int extendedYear, int month) {
+        return MONTH_COUNT[month][isLeapYear(extendedYear)?1:0];
+    }
+
+    protected int handleGetYearLength(int eyear) {
+        return isLeapYear(eyear) ? 366 : 365;
+    }
+
+/////////////////////////////
+// Time => Fields computation
+/////////////////////////////
+
+    /**
+     * Override Calendar to compute several fields specific to the hybrid
+     * Gregorian-Julian calendar system.  These are:
+     *
+     * <ul><li>ERA
+     * <li>YEAR
+     * <li>MONTH
+     * <li>DAY_OF_MONTH
+     * <li>DAY_OF_YEAR
+     * <li>EXTENDED_YEAR</ul>
+     */
+    protected void handleComputeFields(int julianDay) {
+        int eyear, month, dayOfMonth, dayOfYear;
+
+        if (julianDay >= cutoverJulianDay) {
+            month = getGregorianMonth();
+            dayOfMonth = getGregorianDayOfMonth();
+            dayOfYear = getGregorianDayOfYear();
+            eyear = getGregorianYear();
+        } else {
+            // The Julian epoch day (not the same as Julian Day)
+            // is zero on Saturday December 30, 0 (Gregorian).
+            long julianEpochDay = julianDay - (JAN_1_1_JULIAN_DAY - 2);
+            eyear = (int) floorDivide(4*julianEpochDay + 1464, 1461);
+            
+            // Compute the Julian calendar day number for January 1, eyear
+            long january1 = 365*(eyear-1) + floorDivide(eyear-1, 4);
+            dayOfYear = (int)(julianEpochDay - january1); // 0-based
+            
+            // Julian leap years occurred historically every 4 years starting
+            // with 8 AD.  Before 8 AD the spacing is irregular; every 3 years
+            // from 45 BC to 9 BC, and then none until 8 AD.  However, we don't
+            // implement this historical detail; instead, we implement the
+            // computatinally cleaner proleptic calendar, which assumes
+            // consistent 4-year cycles throughout time.
+            boolean isLeap = ((eyear&0x3) == 0); // equiv. to (eyear%4 == 0)
+            
+            // Common Julian/Gregorian calculation
+            int correction = 0;
+            int march1 = isLeap ? 60 : 59; // zero-based DOY for March 1
+            if (dayOfYear >= march1) {
+                correction = isLeap ? 1 : 2;
+            }
+            month = (12 * (dayOfYear + correction) + 6) / 367; // zero-based month
+            dayOfMonth = dayOfYear - MONTH_COUNT[month][isLeap?3:2] + 1; // one-based DOM
+            ++dayOfYear;
+        }
+        internalSet(MONTH, month);
+        internalSet(DAY_OF_MONTH, dayOfMonth);
+        internalSet(DAY_OF_YEAR, dayOfYear);
+        internalSet(EXTENDED_YEAR, eyear);
+        int era = AD;
+        if (eyear < 1) {
+            era = BC;
+            eyear = 1 - eyear;
+        }
+        internalSet(ERA, era);
+        internalSet(YEAR, eyear);
+    }
+
+/////////////////////////////
+// Fields => Time computation
+/////////////////////////////
+
+    protected int handleGetExtendedYear() {
+        int year;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, EPOCH_YEAR);
+        } else {
+            // The year defaults to the epoch start, the era to AD
+            int era = internalGet(ERA, AD);
+            if (era == BC) {
+                year = 1 - internalGet(YEAR, 1); // Convert to extended year
+            } else {
+                year = internalGet(YEAR, EPOCH_YEAR);
+            }
+        }
+        return year;
+    }
+
+    /**
+     * Override Calendar to improve performance.  This method tries to use
+     * the EXTENDED_YEAR, MONTH, DATE, fields if they are set, instead of
+     * computing them.  If they are not set, this method defers to the
+     * default implemenation.
+     * @param millis milliseconds of the date fields
+     * @param millisInDay milliseconds of the time fields; may be out
+     * or range.
+     */
+    protected int computeZoneOffset(long millis, int millisInDay) {
+
+        // Normalize the millisInDay to 0..ONE_DAY-1.  If the millis is out
+        // of range, then we defer to the base class implementation which
+        // will recompute the correct values.
+        int[] normalizedMillisInDay = new int[1];
+        int days = floorDivide(millis + millisInDay, (int) ONE_DAY, normalizedMillisInDay);
+
+        // We need to have the month, the day, and the day of the week.  If
+        // the fields are not set or if we're lenient (so fields may be out
+        // of range) then we defer to the base class which will normalize
+        // the year, month, and day of month.
+        if (isLenient() || !isSet(MONTH) || !isSet(DAY_OF_MONTH)
+            || millisInDay != normalizedMillisInDay[0]) {
+            return super.computeZoneOffset(millis, millisInDay);
+        }
+
+        int julianDay = millisToJulianDay(days * ONE_DAY);
+
+        // It's tempting to try to use DAY_OF_WEEK here, if it
+        // is set, but we CAN'T.  Even if it's set, it might have
+        // been set wrong by the user.  We should rely only on
+        // the Julian day number, which has been computed correctly
+        // using the disambiguation algorithm above. [LIU]
+        int year = internalGet(EXTENDED_YEAR);
+        int month = internalGet(MONTH);
+        int previousMonthLength = (month == 0) ?
+            31 : handleGetMonthLength(year, month-1);
+
+        return getTimeZone().getOffset(year, month,
+                              internalGet(DATE),
+                              julianDayToDayOfWeek(julianDay),
+                              normalizedMillisInDay[0],
+                              handleGetMonthLength(year, month),
+                              previousMonthLength);
+
+        // Note: Because we pass in wall millisInDay, rather than
+        // standard millisInDay, we interpret "1:00 am" on the day
+        // of cessation of DST as "1:00 am Std" (assuming the time
+        // of cessation is 2:00 am).
+    }
+
+    protected int handleComputeJulianDay(int bestField) {
+
+        invertGregorian = false;
+
+        int jd = super.handleComputeJulianDay(bestField);
+
+        // The following check handles portions of the cutover year BEFORE the
+        // cutover itself happens.
+        if (isGregorian != (jd >= cutoverJulianDay)) {
+            invertGregorian = true;
+            jd = super.handleComputeJulianDay(bestField);
+        }
+        
+        return jd;
+    }
+
+    // Return JD of start of given month/year
+    protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
+
+        // If the month is out of range, adjust it into range, and
+        // modify the extended year value accordingly.
+        if (month < 0 || month > 11) {
+            int[] rem = new int[1];
+            eyear += floorDivide(month, 12, rem);
+            month = rem[0];
+        }
+
+        boolean isLeap = eyear%4 == 0;
+        int y = eyear - 1;
+        int julianDay = 365*y + floorDivide(y, 4) + (JAN_1_1_JULIAN_DAY - 3);
+
+        isGregorian = (eyear >= gregorianCutoverYear);
+        if (invertGregorian) {
+            isGregorian = !isGregorian;
+        }
+        if (isGregorian) {
+            isLeap = isLeap && ((eyear%100 != 0) || (eyear%400 == 0));
+            // Add 2 because Gregorian calendar starts 2 days after
+            // Julian calendar
+            julianDay += floorDivide(y, 400) - floorDivide(y, 100) + 2;
+        }
+
+        // At this point julianDay indicates the day BEFORE the first
+        // day of January 1, <eyear> of either the Julian or Gregorian
+        // calendar.
+
+        if (month != 0) {
+            julianDay += MONTH_COUNT[month][isLeap?3:2];
+        }
+
+        return julianDay;
+    }
+}
diff --git a/src/com/ibm/icu/util/HebrewCalendar.java b/src/com/ibm/icu/util/HebrewCalendar.java
new file mode 100755
index 0000000..db51e57
--- /dev/null
+++ b/src/com/ibm/icu/util/HebrewCalendar.java
@@ -0,0 +1,768 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/HebrewCalendar.java,v $ 
+ * $Date: 2002/08/07 03:10:20 $ 
+ * $Revision: 1.9 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>HebrewCalendar</code> is a subclass of <code>Calendar</code>
+ * that that implements the traditional Hebrew calendar.
+ * This is the civil calendar in Israel and the liturgical calendar
+ * of the Jewish faith worldwide.
+ * <p>
+ * The Hebrew calendar is lunisolar and thus has a number of interesting
+ * properties that distinguish it from the Gregorian.  Months start
+ * on the day of (an arithmetic approximation of) each new moon.  Since the
+ * solar year (approximately 365.24 days) is not an even multiple of
+ * the lunar month (approximately 29.53 days) an extra "leap month" is
+ * inserted in 7 out of every 19 years.  To make matters even more
+ * interesting, the start of a year can be delayed by up to three days
+ * in order to prevent certain holidays from falling on the Sabbath and
+ * to prevent certain illegal year lengths.  Finally, the lengths of certain
+ * months can vary depending on the number of days in the year.
+ * <p>
+ * The leap month is known as "Adar 1" and is inserted between the
+ * months of Shevat and Adar in leap years.  Since the leap month does
+ * not come at the end of the year, calculations involving
+ * month numbers are particularly complex.  Users of this class should
+ * make sure to use the {@link #roll roll} and {@link #add add} methods
+ * rather than attempting to perform date arithmetic by manipulating
+ * the fields directly.
+ * <p>
+ * <b>Note:</b> In the traditional Hebrew calendar, days start at sunset.
+ * However, in order to keep the time fields in this class
+ * synchronized with those of the other calendars and with local clock time,
+ * we treat days and months as beginning at midnight,
+ * roughly 6 hours after the corresponding sunset.
+ * <p>
+ * If you are interested in more information on the rules behind the Hebrew
+ * calendar, see one of the following references:
+ * <ul>
+ * <li>"<a href="http://www.amazon.com/exec/obidos/ASIN/0521564743">Calendrical Calculations</a>",
+ *      by Nachum Dershowitz & Edward Reingold, Cambridge University Press, 1997, pages 85-91.
+ *
+ * <li>Hebrew Calendar Science and Myths,
+ *      <a href="http://www.geocities.com/Athens/1584/">
+ *      http://www.geocities.com/Athens/1584/</a>
+ *
+ * <li>The Calendar FAQ,
+ *      <a href="http://www.pip.dknet.dk/~pip10160/calendar.html">
+ *      http://www.pip.dknet.dk/~pip10160/calendar.html</a>
+ * </ul>
+ * <p>
+ * @see com.ibm.icu.util.GregorianCalendar
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ */
+public class HebrewCalendar extends Calendar {
+
+    private static String copyright = "Copyright \u00a9 1997-1998 IBM Corp. All Rights Reserved.";
+
+    //-------------------------------------------------------------------------
+    // Tons o' Constants...
+    //-------------------------------------------------------------------------
+
+    /** Constant for Tishri, the 1st month of the Hebrew year. */
+    public static final int TISHRI = 0;
+
+    /** Constant for Heshvan, the 2nd month of the Hebrew year. */
+    public static final int HESHVAN = 1;
+
+    /** Constant for Kislev, the 3rd month of the Hebrew year. */
+    public static final int KISLEV = 2;
+
+    /** Constant for Tevet, the 4th month of the Hebrew year. */
+    public static final int TEVET = 3;
+
+    /** Constant for Shevat, the 5th month of the Hebrew year. */
+    public static final int SHEVAT = 4;
+
+    /**
+     * Constant for Adar I, the 6th month of the Hebrew year
+     * (present in leap years only). In non-leap years, the calendar
+     * jumps from Shevat (5th month) to Adar (7th month).
+     */
+    public static final int ADAR_1 = 5;
+
+    /** Constant for the Adar, the 7th month of the Hebrew year. */
+    public static final int ADAR = 6;
+
+    /** Constant for Nisan, the 8th month of the Hebrew year. */
+    public static final int NISAN = 7;
+
+    /** Constant for Iyar, the 9th month of the Hebrew year. */
+    public static final int IYAR = 8;
+
+    /** Constant for Sivan, the 10th month of the Hebrew year. */
+    public static final int SIVAN = 9;
+
+    /** Constant for Tammuz, the 11th month of the Hebrew year. */
+    public static final int TAMUZ = 10;
+
+    /** Constant for Av, the 12th month of the Hebrew year. */
+    public static final int AV = 11;
+
+    /** Constant for Elul, the 13th month of the Hebrew year. */
+    public static final int ELUL = 12;
+
+    /**
+     * The absolute date, in milliseconds since 1/1/1970 AD, Gregorian,
+     * of the start of the Hebrew calendar.  In order to keep this calendar's
+     * time of day in sync with that of the Gregorian calendar, we use
+     * midnight, rather than sunset the day before.
+     */
+    private static final long EPOCH_MILLIS = -180799862400000L; // 1/1/1 HY
+
+    private static final int LIMITS[][] = {
+        // Minimum  Greatest    Least  Maximum
+        //           Minimum  Maximum
+        {        0,        0,       0,       0 }, // ERA
+        {        1,        1, 5000000, 5000000 }, // YEAR
+        {        0,        0,      12,      12 }, // MONTH
+        {        1,        1,      51,      56 }, // WEEK_OF_YEAR
+        {        0,        0,       5,       6 }, // WEEK_OF_MONTH
+        {        1,        1,      29,      30 }, // DAY_OF_MONTH
+        {        1,        1,     353,     385 }, // DAY_OF_YEAR
+        {/*                                  */}, // DAY_OF_WEEK
+        {       -1,       -1,       4,       6 }, // DAY_OF_WEEK_IN_MONTH
+        {/*                                  */}, // AM_PM
+        {/*                                  */}, // HOUR
+        {/*                                  */}, // HOUR_OF_DAY
+        {/*                                  */}, // MINUTE
+        {/*                                  */}, // SECOND
+        {/*                                  */}, // MILLISECOND
+        {/*                                  */}, // ZONE_OFFSET
+        {/*                                  */}, // DST_OFFSET
+        { -5000001, -5000001, 5000001, 5000001 }, // YEAR_WOY
+        {/*                                  */}, // DOW_LOCAL
+        { -5000000, -5000000, 5000000, 5000000 }, // EXTENDED_YEAR
+        {/*                                  */}, // JULIAN_DAY
+        {/*                                  */}, // MILLISECONDS_IN_DAY
+    };
+
+    /**
+     * The lengths of the Hebrew months.  This is complicated, because there
+     * are three different types of years, or six if you count leap years.
+     * Due to the rules for postponing the start of the year to avoid having
+     * certain holidays fall on the sabbath, the year can end up being three
+     * different lengths, called "deficient", "normal", and "complete".
+     */
+    private static final int MONTH_LENGTH[][] = {
+        // Deficient  Normal     Complete
+        {   30,         30,         30     },           //Tishri
+        {   29,         29,         30     },           //Heshvan
+        {   29,         30,         30     },           //Kislev
+        {   29,         29,         29     },           //Tevet
+        {   30,         30,         30     },           //Shevat
+        {   30,         30,         30     },           //Adar I (leap years only)
+        {   29,         29,         29     },           //Adar
+        {   30,         30,         30     },           //Nisan
+        {   29,         29,         29     },           //Iyar
+        {   30,         30,         30     },           //Sivan
+        {   29,         29,         29     },           //Tammuz
+        {   30,         30,         30     },           //Av
+        {   29,         29,         29     },           //Elul
+    };
+
+    /**
+     * The cumulative # of days to the end of each month in a non-leap year
+     * Although this can be calculated from the MONTH_LENGTH table,
+     * keeping it around separately makes some calculations a lot faster
+     */
+    private static final int MONTH_START[][] = {
+        // Deficient  Normal     Complete
+        {    0,          0,          0  },          // (placeholder)
+        {   30,         30,         30  },          // Tishri
+        {   59,         59,         60  },          // Heshvan
+        {   88,         89,         90  },          // Kislev
+        {  117,        118,        119  },          // Tevet
+        {  147,        148,        149  },          // Shevat
+        {  147,        148,        149  },          // (Adar I)
+        {  176,        177,        178  },          // Adar
+        {  206,        207,        208  },          // Nisan
+        {  235,        236,        237  },          // Iyar
+        {  265,        266,        267  },          // Sivan
+        {  294,        295,        296  },          // Tammuz
+        {  324,        325,        326  },          // Av
+        {  353,        354,        355  },          // Elul
+    };
+
+    /**
+     * The cumulative # of days to the end of each month in a leap year
+     */
+    private static final int LEAP_MONTH_START[][] = {
+        // Deficient  Normal     Complete
+        {    0,          0,          0  },          // (placeholder)
+        {   30,         30,         30  },          // Tishri
+        {   59,         59,         60  },          // Heshvan
+        {   88,         89,         90  },          // Kislev
+        {  117,        118,        119  },          // Tevet
+        {  147,        148,        149  },          // Shevat
+        {  177,        178,        179  },          // Adar I
+        {  206,        207,        208  },          // Adar II
+        {  236,        237,        238  },          // Nisan
+        {  265,        266,        267  },          // Iyar
+        {  295,        296,        297  },          // Sivan
+        {  324,        325,        326  },          // Tammuz
+        {  354,        355,        356  },          // Av
+        {  383,        384,        385  },          // Elul
+    };
+
+    //-------------------------------------------------------------------------
+    // Data Members...
+    //-------------------------------------------------------------------------
+
+    private static CalendarCache cache = new CalendarCache();
+    
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constructs a default <code>HebrewCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     */
+    public HebrewCalendar() {
+        this(TimeZone.getDefault(), Locale.getDefault());
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone The time zone for the new calendar.
+     */
+    public HebrewCalendar(TimeZone zone) {
+        this(zone, Locale.getDefault());
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale The locale for the new calendar.
+     */
+    public HebrewCalendar(Locale aLocale) {
+        this(TimeZone.getDefault(), aLocale);
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     *
+     * @param aLocale The locale for the new calendar.
+     */
+    public HebrewCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Tishri.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     */
+    public HebrewCalendar(int year, int month, int date) {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        this.set(YEAR, year);
+        this.set(MONTH, month);
+        this.set(DATE, date);
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     */
+    public HebrewCalendar(Date date) {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        this.setTime(date);
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Tishri.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     *
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     *
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     *
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     */
+    public HebrewCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        this.set(YEAR, year);
+        this.set(MONTH, month);
+        this.set(DATE, date);
+        this.set(HOUR_OF_DAY, hour);
+        this.set(MINUTE, minute);
+        this.set(SECOND, second);
+    }
+
+    //-------------------------------------------------------------------------
+    // Rolling and adding functions overridden from Calendar
+    //
+    // These methods call through to the default implementation in IBMCalendar
+    // for most of the fields and only handle the unusual ones themselves.
+    //-------------------------------------------------------------------------
+
+    /**
+     * Add a signed amount to a specified field, using this calendar's rules.
+     * For example, to add three days to the current date, you can call
+     * <code>add(Calendar.DATE, 3)</code>. 
+     * <p>
+     * When adding to certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when adding one to the {@link #MONTH MONTH} field
+     * for the date "30 Av 5758", the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is "29 Elul 5758" rather than the invalid
+     * "30 Elul 5758".
+     * <p>
+     * This method is able to add to
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.
+     * <p>
+     * <b>Note:</b> You should always use {@link #roll roll} and add rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>HebrewCalendar</tt>.  Since the {@link #MONTH MONTH} field behaves
+     * discontinuously in non-leap years, simple arithmetic can give invalid results.
+     * <p>
+     * @param field     the time field.
+     * @param amount    the amount to add to the field.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     */
+    public void add(int field, int amount)
+    {
+        switch (field) {
+        case MONTH: 
+            {
+//~             // This seems like a good idea but it isn't working :( - Alan
+
+//~             // MONTH is tricky, because the number of months per year varies
+//~             // It's easiest to just convert to an absolute # of months
+//~             // since the epoch, do the addition, and convert back.
+//~             int month = (235 * get(YEAR) - 234) / 19 + get(MONTH);
+//~             month += amount;
+
+//~             // Now convert back to year and month values
+//~             int year = (19 * month + 234) / 235;
+//~             month -= (235 * year - 234) / 19;
+//~             
+//~             // In a non-leap year, months after the (missing) leap month
+//~             // must be bumped up by one.
+//~             // TODO: but only if we started before the leap month
+//~             if (month >= ADAR_1 && !isLeapYear(year)) {
+//~                 month++;
+//~             }
+//~             set(YEAR, year);
+//~             set(MONTH, month);
+//~             pinField(DAY_OF_MONTH);
+
+                // We can't just do a set(MONTH, get(MONTH) + amount).  The
+                // reason is ADAR_1.  Suppose amount is +2 and we land in
+                // ADAR_1 -- then we have to bump to ADAR_2 aka ADAR.  But
+                // if amount is -2 and we land in ADAR_1, then we have to
+                // bump the other way -- down to SHEVAT.  - Alan 11/00
+                int month = get(MONTH);
+                int year = get(YEAR);
+                //public static final int SHEVAT = 4;
+                //public static final int ADAR_1 = 5;
+                //public static final int ADAR = 6;
+                if (amount > 0) {
+                    while (amount-- > 0) {
+                        ++month;
+                        if (month == ADAR_1 && !isLeapYear(year)) {
+                            ++month;
+                        }
+                        if (month > ELUL) { // Last month of year
+                            month = 0;
+                            ++year;
+                        }
+                    }
+                } else {
+                    while (amount++ < 0) {
+                        --month;
+                        if (month == ADAR_1 && !isLeapYear(year)) {
+                            --month;
+                        }
+                        if (month < 0) {
+                            month = ELUL; // Last month of year
+                            --year;
+                        }
+                    }
+                }
+                set(MONTH, month);
+                set(YEAR, year);
+                pinField(DAY_OF_MONTH);
+                break;
+            }
+            
+        default:
+            super.add(field, amount);
+            break;
+        }
+    }
+
+    /**
+     * Rolls (up/down) a specified amount time on the given field.  For
+     * example, to roll the current date up by three days, you can call
+     * <code>roll(Calendar.DATE, 3)</code>.  If the
+     * field is rolled past its maximum allowable value, it will "wrap" back
+     * to its minimum and continue rolling.  
+     * For example, calling <code>roll(Calendar.DATE, 10)</code>
+     * on a Hebrew calendar set to "25 Av 5758" will result in the date "5 Av 5758".
+     * <p>
+     * When rolling certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when rolling the {@link #MONTH MONTH} field
+     * upward by one for the date "30 Av 5758", the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is "29 Elul 5758" rather than the invalid
+     * "30 Elul".
+     * <p>
+     * This method is able to roll
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.  Subclasses may, of course, add support for
+     * additional fields in their overrides of <code>roll</code>.
+     * <p>
+     * <b>Note:</b> You should always use roll and {@link #add add} rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>HebrewCalendar</tt>.  Since the {@link #MONTH MONTH} field behaves
+     * discontinuously in non-leap years, simple arithmetic can give invalid results.
+     * <p>
+     * @param field     the time field.
+     * @param amount    the amount by which the field should be rolled.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     */
+    public void roll(int field, int amount)
+    {
+        switch (field) {
+        case MONTH:
+            {
+                int month = get(MONTH);
+                int year = get(YEAR);
+                
+                boolean leapYear = isLeapYear(year);
+                int yearLength = monthsInYear(year);
+                int newMonth = month + (amount % yearLength);
+                //
+                // If it's not a leap year and we're rolling past the missing month
+                // of ADAR_1, we need to roll an extra month to make up for it.
+                //
+                if (!leapYear) {
+                    if (amount > 0 && month < ADAR_1 && newMonth >= ADAR_1) {
+                        newMonth++;
+                    } else if (amount < 0 && month > ADAR_1 && newMonth <= ADAR_1) {
+                        newMonth--;
+                    }
+                }
+                set(MONTH, (newMonth + 13) % 13);
+                pinField(DAY_OF_MONTH);
+                return;
+            }
+        default:
+            super.roll(field, amount);
+        }
+    }
+
+    //-------------------------------------------------------------------------
+    // Support methods
+    //-------------------------------------------------------------------------
+
+    // Hebrew date calculations are performed in terms of days, hours, and
+    // "parts" (or halakim), which are 1/1080 of an hour, or 3 1/3 seconds.
+    private static final long HOUR_PARTS = 1080;
+    private static final long DAY_PARTS  = 24*HOUR_PARTS;
+    
+    // An approximate value for the length of a lunar month.
+    // It is used to calculate the approximate year and month of a given
+    // absolute date.
+    static private final int  MONTH_DAYS = 29;
+    static private final long MONTH_FRACT = 12*HOUR_PARTS + 793;
+    static private final long MONTH_PARTS = MONTH_DAYS*DAY_PARTS + MONTH_FRACT;
+    
+    // The time of the new moon (in parts) on 1 Tishri, year 1 (the epoch)
+    // counting from noon on the day before.  BAHARAD is an abbreviation of
+    // Bet (Monday), Hey (5 hours from sunset), Resh-Daled (204).
+    static private final long BAHARAD = 11*HOUR_PARTS + 204;
+
+    /**
+     * Finds the day # of the first day in the given Hebrew year.
+     * To do this, we want to calculate the time of the Tishri 1 new moon
+     * in that year.
+     * <p>
+     * The algorithm here is similar to ones described in a number of
+     * references, including:
+     * <ul>
+     * <li>"Calendrical Calculations", by Nachum Dershowitz & Edward Reingold,
+     *     Cambridge University Press, 1997, pages 85-91.
+     *
+     * <li>Hebrew Calendar Science and Myths,
+     *     <a href="http://www.geocities.com/Athens/1584/">
+     *     http://www.geocities.com/Athens/1584/</a>
+     *
+     * <li>The Calendar FAQ,
+     *      <a href="http://www.pip.dknet.dk/~pip10160/calendar.faq2.txt">
+     *      http://www.pip.dknet.dk/~pip10160/calendar.html</a>
+     * </ul>
+     */
+    private static long startOfYear(int year)
+    {
+        long day = cache.get(year);
+        
+        if (day == CalendarCache.EMPTY) {
+            int months = (235 * year - 234) / 19;           // # of months before year
+
+            long frac = months * MONTH_FRACT + BAHARAD;     // Fractional part of day #
+            day  = months * 29 + (frac / DAY_PARTS);   // Whole # part of calculation
+            frac = frac % DAY_PARTS;                        // Time of day
+
+            int wd = (int)(day % 7);                        // Day of week (0 == Monday)
+
+            if (wd == 2 || wd == 4 || wd == 6) {
+                // If the 1st is on Sun, Wed, or Fri, postpone to the next day
+                day += 1;
+                wd = (int)(day % 7);
+            }
+            if (wd == 1 && frac > 15*HOUR_PARTS+204 && !isLeapYear(year) ) {
+                // If the new moon falls after 3:11:20am (15h204p from the previous noon)
+                // on a Tuesday and it is not a leap year, postpone by 2 days.
+                // This prevents 356-day years.
+                day += 2;
+            }
+            else if (wd == 0 && frac > 21*HOUR_PARTS+589 && isLeapYear(year-1) ) {
+                // If the new moon falls after 9:32:43 1/3am (21h589p from yesterday noon)
+                // on a Monday and *last* year was a leap year, postpone by 1 day.
+                // Prevents 382-day years.
+                day += 1;
+            }
+            cache.put(year, day);
+        }
+        return day;
+    }
+
+    /**
+     * Find the day of the week for a given day
+     *
+     * @param day   The # of days since the start of the Hebrew calendar,
+     *              1-based (i.e. 1/1/1 AM is day 1).
+     */
+    ///CLOVER:OFF
+    private static int absoluteDayToDayOfWeek(long day)
+    {
+        // We know that 1/1/1 AM is a Monday, which makes the math easy...
+        return (int)(day % 7) + 1;
+    }
+    ///CLOVER:ON
+
+    /**
+     * Returns the the type of a given year.
+     *  0   "Deficient" year with 353 or 383 days
+     *  1   "Normal"    year with 354 or 384 days
+     *  2   "Complete"  year with 355 or 385 days
+     */
+    private final int yearType(int year)
+    {
+        int yearLength = handleGetYearLength(year);
+
+        if (yearLength > 380) {
+           yearLength -= 30;        // Subtract length of leap month.
+        }
+
+        int type = 0;
+
+        switch (yearLength) {
+            case 353:
+                type = 0; break;
+            case 354:
+                type = 1; break;
+            case 355:
+                type = 2; break;
+            default:
+                System.out.println("Illegal year length " + yearLength + " in yearType");
+
+        }
+        return type;
+    }
+
+    /**
+     * Determine whether a given Hebrew year is a leap year
+     *
+     * The rule here is that if (year % 19) == 0, 3, 6, 8, 11, 14, or 17.
+     * The formula below performs the same test, believe it or not.
+     */
+    private static final boolean isLeapYear(int year) {
+        return (year * 12 + 17) % 19 >= 12;
+    }
+
+    private static int monthsInYear(int year) {
+        return isLeapYear(year) ? 13 : 12;
+    }
+
+    //-------------------------------------------------------------------------
+    // Calendar framework
+    //-------------------------------------------------------------------------
+
+    protected int handleGetLimit(int field, int limitType) {
+        return LIMITS[field][limitType];
+    }
+
+    /**
+     * Returns the length of the given month in the given year
+     */
+    protected int handleGetMonthLength(int extendedYear, int month) {
+
+        switch (month) {
+            case HESHVAN:
+            case KISLEV:
+                // These two month lengths can vary
+                return MONTH_LENGTH[month][yearType(extendedYear)];
+                
+            default:
+                // The rest are a fixed length
+                return MONTH_LENGTH[month][0];
+        }
+    }
+
+    /**
+     * Returns the number of days in the given Hebrew year
+     */
+    protected int handleGetYearLength(int eyear) {
+        return (int)(startOfYear(eyear+1) - startOfYear(eyear));
+    }
+
+    //-------------------------------------------------------------------------
+    // Functions for converting from milliseconds to field values
+    //-------------------------------------------------------------------------
+
+    /**
+     * Subclasses may override this method to compute several fields
+     * specific to each calendar system.  These are:
+     *
+     * <ul><li>ERA
+     * <li>YEAR
+     * <li>MONTH
+     * <li>DAY_OF_MONTH
+     * <li>DAY_OF_YEAR
+     * <li>EXTENDED_YEAR</ul>
+     * 
+     * Subclasses can refer to the DAY_OF_WEEK and DOW_LOCAL fields,
+     * which will be set when this method is called.  Subclasses can
+     * also call the getGregorianXxx() methods to obtain Gregorian
+     * calendar equivalents for the given Julian day.
+     *
+     * <p>In addition, subclasses should compute any subclass-specific
+     * fields, that is, fields from BASE_FIELD_COUNT to
+     * getFieldCount() - 1.
+     */
+    protected void handleComputeFields(int julianDay) {
+        long d = julianDay - 347997;
+        long m = (d * DAY_PARTS) / MONTH_PARTS;         // Months (approx)
+        int year = (int)((19 * m + 234) / 235) + 1;     // Years (approx)
+        long ys  = startOfYear(year);                   // 1st day of year
+        int dayOfYear = (int)(d - ys);
+
+        // Because of the postponement rules, it's possible to guess wrong.  Fix it.
+        while (dayOfYear < 1) {
+            year--;
+            ys  = startOfYear(year);
+            dayOfYear = (int)(d - ys);
+        }
+
+        // Now figure out which month we're in, and the date within that month
+        int yearType = yearType(year);
+        int monthStart[][] = isLeapYear(year) ? LEAP_MONTH_START : MONTH_START;
+
+        int month = 0;
+        while (dayOfYear > monthStart[month][yearType]) {
+            month++;
+        }
+        month--;
+        int dayOfMonth = dayOfYear - monthStart[month][yearType];
+
+        internalSet(ERA, 0);
+        internalSet(YEAR, year);
+        internalSet(EXTENDED_YEAR, year);
+        internalSet(MONTH, month);
+        internalSet(DAY_OF_MONTH, dayOfMonth);
+        internalSet(DAY_OF_YEAR, dayOfYear);       
+    }
+
+    //-------------------------------------------------------------------------
+    // Functions for converting from field values to milliseconds
+    //-------------------------------------------------------------------------
+
+    protected int handleGetExtendedYear() {
+        int year;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, 1); // Default to year 1
+        } else {
+            year = internalGet(YEAR, 1); // Default to year 1
+        }
+        return year;
+    }
+
+    // Return JD of start of given month/year
+    protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
+
+        // Resolve out-of-range months.  This is necessary in order to
+        // obtain the correct year.
+        if (month < 0) {
+            while (month < 0) {
+                month += monthsInYear(--eyear);
+            }
+        } else if (month > 0) {
+            for (;;) {
+                int monthsInYear = monthsInYear(eyear);
+                if (month < monthsInYear) {
+                    break;
+                }
+                ++eyear;
+                month -= monthsInYear;
+            }
+        }
+
+        long day = startOfYear(eyear);
+
+        if (month != 0) {
+            if (isLeapYear(eyear)) {
+                day += LEAP_MONTH_START[month][yearType(eyear)];
+            } else {
+                day += MONTH_START[month][yearType(eyear)];
+            }
+        }
+
+        return (int) (day + 347997);
+    }
+}
diff --git a/src/com/ibm/icu/util/HebrewHoliday.java b/src/com/ibm/icu/util/HebrewHoliday.java
new file mode 100755
index 0000000..5dc43a6
--- /dev/null
+++ b/src/com/ibm/icu/util/HebrewHoliday.java
@@ -0,0 +1,66 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/HebrewHoliday.java,v $ 
+ * $Date: 2002/02/16 03:06:28 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+public class HebrewHoliday extends Holiday
+{
+    private static final HebrewCalendar gCalendar = new HebrewCalendar();
+
+    /**
+     * Construct a holiday defined in reference to the Hebrew calendar.
+     *
+     * @param name The name of the holiday
+     */
+    public HebrewHoliday(int month, int date, String name)
+    {
+        this(month, date, 1, name);
+    }
+
+    public HebrewHoliday(int month, int date, int length, String name)
+    {
+        super(name, null);
+
+        SimpleDateRule rule = new SimpleDateRule(month, date);
+        rule.setCalendar(gCalendar);
+
+        setRule(rule);
+    }
+
+    public static HebrewHoliday
+        ROSH_HASHANAH   = new HebrewHoliday(HebrewCalendar.TISHRI,  1,  2,  "Rosh Hashanah"),
+        GEDALIAH        = new HebrewHoliday(HebrewCalendar.TISHRI,  3,      "Fast of Gedaliah"),
+        YOM_KIPPUR      = new HebrewHoliday(HebrewCalendar.TISHRI, 10,      "Yom Kippur"),
+        SUKKOT          = new HebrewHoliday(HebrewCalendar.TISHRI, 15,  6,  "Sukkot"),
+        HOSHANAH_RABBAH = new HebrewHoliday(HebrewCalendar.TISHRI, 21,      "Hoshanah Rabbah"),
+        SHEMINI_ATZERET = new HebrewHoliday(HebrewCalendar.TISHRI, 22,      "Shemini Atzeret"),
+        SIMCHAT_TORAH   = new HebrewHoliday(HebrewCalendar.TISHRI, 23,      "Simchat Torah"),
+        HANUKKAH        = new HebrewHoliday(HebrewCalendar.KISLEV, 25,      "Hanukkah"),
+        TEVET_10        = new HebrewHoliday(HebrewCalendar.TEVET,  10,      "Fast of Tevet 10"),
+        TU_BSHEVAT      = new HebrewHoliday(HebrewCalendar.SHEVAT, 15,      "Tu B'Shevat"),
+        ESTHER          = new HebrewHoliday(HebrewCalendar.ADAR,   13,      "Fast of Esther"),
+        PURIM           = new HebrewHoliday(HebrewCalendar.ADAR,   14,      "Purim"),
+        SHUSHAN_PURIM   = new HebrewHoliday(HebrewCalendar.ADAR,   15,      "Shushan Purim"),
+        PASSOVER        = new HebrewHoliday(HebrewCalendar.NISAN,  15,  8,  "Passover"),
+        YOM_HASHOAH     = new HebrewHoliday(HebrewCalendar.NISAN,  27,      "Yom Hashoah"),
+        YOM_HAZIKARON   = new HebrewHoliday(HebrewCalendar.IYAR,    4,      "Yom Hazikaron"),
+        YOM_HAATZMAUT   = new HebrewHoliday(HebrewCalendar.IYAR,    5,      "Yom Ha'Atzmaut"),
+        PESACH_SHEINI   = new HebrewHoliday(HebrewCalendar.IYAR,   14,      "Pesach Sheini"),
+        LAG_BOMER       = new HebrewHoliday(HebrewCalendar.IYAR,   18,      "Lab B'Omer"),
+        YOM_YERUSHALAYIM= new HebrewHoliday(HebrewCalendar.IYAR,   28,      "Yom Yerushalayim"),
+        SHAVUOT         = new HebrewHoliday(HebrewCalendar.SIVAN,   6,  2,  "Shavuot"),
+        TAMMUZ_17       = new HebrewHoliday(HebrewCalendar.TAMUZ,  17,      "Fast of Tammuz 17"),
+        TISHA_BAV       = new HebrewHoliday(HebrewCalendar.AV,      9,      "Fast of Tisha B'Av"),
+        SELIHOT         = new HebrewHoliday(HebrewCalendar.ELUL,   21,      "Selihot");
+
+}
diff --git a/src/com/ibm/icu/util/Holiday.java b/src/com/ibm/icu/util/Holiday.java
new file mode 100755
index 0000000..0a47c68
--- /dev/null
+++ b/src/com/ibm/icu/util/Holiday.java
@@ -0,0 +1,164 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/Holiday.java,v $ 
+ * $Date: 2002/03/10 19:40:17 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import com.ibm.icu.impl.ICULocaleData;
+
+import java.util.Date;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * An abstract class representing a holiday.  This class simply adds
+ * a holiday name to the DateRule interface for calculating the date
+ * of an event.
+ *
+ */
+public abstract class Holiday implements DateRule
+{
+    public static Holiday[] getHolidays()
+    {
+        return getHolidays(Locale.getDefault());
+    }
+
+    public static Holiday[] getHolidays(Locale locale)
+    {
+        Holiday[] result = noHolidays;
+
+        try {
+            ResourceBundle bundle = ICULocaleData.getResourceBundle("HolidayBundle", locale);
+
+            result = (Holiday[]) bundle.getObject("holidays");
+        }
+        catch (MissingResourceException e) {
+        }
+        return result;
+    }
+
+    /**
+     * Return the first occurrance of this holiday on or after the given date
+     *
+     * @param start Only holidays on or after this date are returned.
+     *
+     * @return      The date on which this holiday occurs, or null if it
+     *              does not occur on or after the start date.
+     *
+     * @see #firstBetween
+     */
+    public Date firstAfter(Date start) {
+        return rule.firstAfter(start);
+    }
+
+    /**
+     * Return the first occurrance of this holiday that is on or after
+     * the given start date and before the given end date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     * @param end   Only occurrances before this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur between the start and end dates.
+     *
+     * @see #firstAfter
+     */
+    public Date firstBetween(Date start, Date end) {
+        return rule.firstBetween(start, end);
+    }
+
+    /**
+     * Checks whether this holiday falls on the given date.  This does
+     * <em>not</em> take time of day into account; instead it checks
+     * whether the holiday and the given date are on the same day.
+     *
+     * @param date  The date to check.
+     * @return      true if this holiday occurs on the given date.
+     *
+     */
+    public boolean isOn(Date date) {
+        //System.out.println(name + ".isOn(" + date.toString() + "):");
+        return rule.isOn(date);
+    }
+
+    /**
+     * Check whether this holiday occurs at least once between the two
+     * dates given.
+     */
+    public boolean isBetween(Date start, Date end) {
+        return rule.isBetween(start, end);
+    }
+
+    /**
+     * Construct a new Holiday object.  This is for use by subclasses only.
+     * This constructs a new holiday with the given name and date rules.
+     *
+     * @param name  The name of this holiday.  The getDisplayName method
+     *              uses this string as a key to look up the holiday's name a
+     *              resource bundle object named HolidayBundle.
+     *
+     * @param rule  The date rules used for determining when this holiday
+     *              falls.  Holiday's implementation of the DateRule inteface
+     *              simply delegates to this DateRule object.
+     */
+    protected Holiday(String name, DateRule rule)
+    {
+        this.name = name;
+        this.rule = rule;
+    }
+
+    /**
+     * Return the name of this holiday in the language of the default locale
+     */
+    public String getDisplayName() {
+        return getDisplayName(Locale.getDefault());
+    }
+
+    /**
+     * Return the name of this holiday in the language of the specified locale
+     * The <code>name</code> parameter passed to this object's constructor is used
+     * as a key to look up the holiday's localized name in a ResourceBundle object
+     * named HolidayBundle.
+     *
+     * @param loc   A locale specifying the language in which the name is desired.
+     *
+     * @see ResourceBundle
+     */
+    public String getDisplayName(Locale locale)
+    {
+        String name = this.name;
+
+        try {
+            ResourceBundle bundle = ICULocaleData.getResourceBundle("HolidayBundle", locale);
+            name = bundle.getString(name);
+        }
+        catch (MissingResourceException e) {
+            //System.out.println("Using default display name for " + name);
+        }
+        return name;
+    }
+
+    public DateRule getRule() {
+        return rule;
+    }
+
+    public void setRule(DateRule rule) {
+        this.rule = rule;
+    }
+
+    private String      name;
+    private DateRule    rule;
+
+    private static Holiday[] noHolidays = {};
+
+}
diff --git a/src/com/ibm/icu/util/IslamicCalendar.java b/src/com/ibm/icu/util/IslamicCalendar.java
new file mode 100755
index 0000000..8b4aeeb
--- /dev/null
+++ b/src/com/ibm/icu/util/IslamicCalendar.java
@@ -0,0 +1,563 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/IslamicCalendar.java,v $ 
+ * $Date: 2002/08/07 03:10:18 $ 
+ * $Revision: 1.11 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.util;
+
+import com.ibm.icu.util.Calendar;
+import java.util.Date;
+import com.ibm.icu.util.GregorianCalendar;
+import java.util.Locale;
+import com.ibm.icu.util.CalendarAstronomer;
+
+/**
+ * <code>IslamicCalendar</code> is a subclass of <code>Calendar</code>
+ * that that implements the Islamic civil and religious calendars.  It
+ * is used as the civil calendar in most of the Arab world and the
+ * liturgical calendar of the Islamic faith worldwide.  This calendar
+ * is also known as the "Hijri" calendar, since it starts at the time
+ * of Mohammed's emigration (or "hijra") to Medinah on Thursday, 
+ * July 15, 622 AD (Julian).
+ * <p>
+ * The Islamic calendar is strictly lunar, and thus an Islamic year of twelve
+ * lunar months does not correspond to the solar year used by most other
+ * calendar systems, including the Gregorian.  An Islamic year is, on average,
+ * about 354 days long, so each successive Islamic year starts about 11 days
+ * earlier in the corresponding Gregorian year.
+ * <p>
+ * Each month of the calendar starts when the new moon's crescent is visible
+ * at sunset.  However, in order to keep the time fields in this class
+ * synchronized with those of the other calendars and with local clock time,
+ * we treat days and months as beginning at midnight,
+ * roughly 6 hours after the corresponding sunset.
+ * <p>
+ * There are two main variants of the Islamic calendar in existence.  The first
+ * is the <em>civil</em> calendar, which uses a fixed cycle of alternating 29-
+ * and 30-day months, with a leap day added to the last month of 11 out of
+ * every 30 years.  This calendar is easily calculated and thus predictable in
+ * advance, so it is used as the civil calendar in a number of Arab countries.
+ * This is the default behavior of a newly-created <code>IslamicCalendar</code>
+ * object.
+ * <p>
+ * The Islamic <em>religious</em> calendar, however, is based on the <em>observation</em>
+ * of the crescent moon.  It is thus affected by the position at which the
+ * observations are made, seasonal variations in the time of sunset, the
+ * eccentricities of the moon's orbit, and even the weather at the observation
+ * site.  This makes it impossible to calculate in advance, and it causes the
+ * start of a month in the religious calendar to differ from the civil calendar
+ * by up to three days.
+ * <p>
+ * Using astronomical calculations for the position of the sun and moon, the
+ * moon's illumination, and other factors, it is possible to determine the start
+ * of a lunar month with a fairly high degree of certainty.  However, these
+ * calculations are extremely complicated and thus slow, so most algorithms,
+ * including the one used here, are only approximations of the true astronical
+ * calculations.  At present, the approximations used in this class are fairly
+ * simplistic; they will be improved in later versions of the code.
+ * <p>
+ * The {@link #setCivil setCivil} method determines
+ * which approach is used to determine the start of a month.  By default, the
+ * fixed-cycle civil calendar is used.  However, if <code>setCivil(false)</code>
+ * is called, an approximation of the true lunar calendar will be used.
+ *
+ * @see com.ibm.icu.util.GregorianCalendar
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ */
+public class IslamicCalendar extends Calendar {
+
+    private static String copyright = "Copyright \u00a9 1997-1998 IBM Corp. All Rights Reserved.";
+
+    //-------------------------------------------------------------------------
+    // Constants...
+    //-------------------------------------------------------------------------
+    
+    /** Constant for Muharram, the 1st month of the Islamic year. */
+    public static final int MUHARRAM = 0;
+
+    /** Constant for Safar, the 2nd month of the Islamic year. */
+    public static final int SAFAR = 1;
+
+    /** Constant for Rabi' al-awwal (or Rabi' I), the 3rd month of the Islamic year. */
+    public static final int RABI_1 = 2;
+
+    /** Constant for Rabi' al-thani or (Rabi' II), the 4th month of the Islamic year. */
+    public static final int RABI_2 = 3;
+
+    /** Constant for Jumada al-awwal or (Jumada I), the 5th month of the Islamic year. */
+    public static final int JUMADA_1 = 4;
+
+    /** Constant for Jumada al-thani or (Jumada II), the 6th month of the Islamic year. */
+    public static final int JUMADA_2 = 5;
+
+    /** Constant for Rajab, the 7th month of the Islamic year. */
+    public static final int RAJAB = 6;
+
+    /** Constant for Sha'ban, the 8th month of the Islamic year. */
+    public static final int SHABAN = 7;
+
+    /** Constant for Ramadan, the 9th month of the Islamic year. */
+    public static final int RAMADAN = 8;
+
+    /** Constant for Shawwal, the 10th month of the Islamic year. */
+    public static final int SHAWWAL = 9;
+
+    /** Constant for Dhu al-Qi'dah, the 11th month of the Islamic year. */
+    public static final int DHU_AL_QIDAH = 10;
+
+    /** Constant for Dhu al-Hijjah, the 12th month of the Islamic year. */
+    public static final int DHU_AL_HIJJAH = 11;
+
+
+    private static final long HIJRA_MILLIS = -42521587200000L;    // 7/16/622 AD 00:00
+
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constructs a default <code>IslamicCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     */
+    public IslamicCalendar()
+    {
+        this(TimeZone.getDefault(), Locale.getDefault());
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     * @param zone the given time zone.
+     */
+    public IslamicCalendar(TimeZone zone)
+    {
+        this(zone, Locale.getDefault());
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale the given locale.
+     */
+    public IslamicCalendar(Locale aLocale)
+    {
+        this(TimeZone.getDefault(), aLocale);
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param aLocale the given locale.
+     */
+    public IslamicCalendar(TimeZone zone, Locale aLocale)
+    {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     */
+    public IslamicCalendar(Date date) {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        this.setTime(date);
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year the value used to set the {@link #YEAR YEAR} time field in the calendar.
+     *
+     * @param month the value used to set the {@link #MONTH MONTH} time field in the calendar.
+     *              Note that the month value is 0-based. e.g., 0 for Muharram.
+     *
+     * @param date the value used to set the {@link #DATE DATE} time field in the calendar.
+     */
+    public IslamicCalendar(int year, int month, int date)
+    {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        this.set(Calendar.YEAR, year);
+        this.set(Calendar.MONTH, month);
+        this.set(Calendar.DATE, date);
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year  the value used to set the {@link #YEAR YEAR} time field in the calendar.
+     *
+     * @param month the value used to set the {@link #MONTH MONTH} time field in the calendar.
+     *              Note that the month value is 0-based. e.g., 0 for Muharram.
+     *
+     * @param date  the value used to set the {@link #DATE DATE} time field in the calendar.
+     *
+     * @param hour  the value used to set the {@link #HOUR_OF_DAY HOUR_OF_DAY} time field
+     *              in the calendar.
+     *
+     * @param minute the value used to set the {@link #MINUTE MINUTE} time field
+     *              in the calendar.
+     *
+     * @param second the value used to set the {@link #SECOND SECOND} time field
+     *              in the calendar.
+     */
+    public IslamicCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        this.set(Calendar.YEAR, year);
+        this.set(Calendar.MONTH, month);
+        this.set(Calendar.DATE, date);
+        this.set(Calendar.HOUR_OF_DAY, hour);
+        this.set(Calendar.MINUTE, minute);
+        this.set(Calendar.SECOND, second);
+    }
+
+    /**
+     * Determines whether this object uses the fixed-cycle Islamic civil calendar
+     * or an approximation of the religious, astronomical calendar.
+     *
+     * @param beCivil   <code>true</code> to use the civil calendar,
+     *                  <code>false</code> to use the astronomical calendar.
+     */
+    public void setCivil(boolean beCivil)
+    {
+        if (civil != beCivil) {
+            // The fields of the calendar will become invalid, because the calendar
+            // rules are different
+            long m = getTimeInMillis();
+            civil = beCivil;
+            clear();
+            setTimeInMillis(m);
+        }
+    }
+    
+    /**
+     * Returns <code>true</code> if this object is using the fixed-cycle civil
+     * calendar, or <code>false</code> if using the religious, astronomical
+     * calendar.
+     */
+    public boolean isCivil() {
+        return civil;
+    }
+    
+    //-------------------------------------------------------------------------
+    // Minimum / Maximum access functions
+    //-------------------------------------------------------------------------
+
+    private static final int LIMITS[][] = {
+        // Minimum  Greatest    Least  Maximum
+        //           Minimum  Maximum
+        {        0,        0,       0,       0 }, // ERA
+        {        1,        1, 5000000, 5000000 }, // YEAR
+        {        0,        0,      11,      11 }, // MONTH
+        {        1,        1,      51,      52 }, // WEEK_OF_YEAR
+        {        0,        0,       5,       6 }, // WEEK_OF_MONTH
+        {        1,        1,      29,      30 }, // DAY_OF_MONTH
+        {        1,        1,     354,     355 }, // DAY_OF_YEAR
+        {/*                                  */}, // DAY_OF_WEEK
+        {       -1,       -1,       4,       5 }, // DAY_OF_WEEK_IN_MONTH
+        {/*                                  */}, // AM_PM
+        {/*                                  */}, // HOUR
+        {/*                                  */}, // HOUR_OF_DAY
+        {/*                                  */}, // MINUTE
+        {/*                                  */}, // SECOND
+        {/*                                  */}, // MILLISECOND
+        {/*                                  */}, // ZONE_OFFSET
+        {/*                                  */}, // DST_OFFSET
+        { -5000001, -5000001, 5000001, 5000001 }, // YEAR_WOY
+        {/*                                  */}, // DOW_LOCAL
+        { -5000000, -5000000, 5000000, 5000000 }, // EXTENDED_YEAR
+        {/*                                  */}, // JULIAN_DAY
+        {/*                                  */}, // MILLISECONDS_IN_DAY
+    };
+
+    protected int handleGetLimit(int field, int limitType) {
+        return LIMITS[field][limitType];
+    }
+
+    //-------------------------------------------------------------------------
+    // Assorted calculation utilities
+    //
+
+    /**
+     * Find the day of the week for a given day
+     *
+     * @param day   The # of days since the start of the Islamic calendar.
+     */
+    // private and uncalled, perhaps not used yet?
+    ///CLOVER:OFF
+    private static final int absoluteDayToDayOfWeek(long day)
+    {
+        // Calculate the day of the week.
+        // This relies on the fact that the epoch was a Thursday.
+        int dayOfWeek = (int)(day + THURSDAY) % 7 + SUNDAY;
+        if (dayOfWeek < 0) {
+            dayOfWeek += 7;
+        }
+        return dayOfWeek;
+    }
+    ///CLOVER:ON
+
+    /**
+     * Determine whether a year is a leap year in the Islamic civil calendar
+     */
+    private final static boolean civilLeapYear(int year)
+    {
+        return (14 + 11 * year) % 30 < 11;
+        
+    }
+    
+    /**
+     * Return the day # on which the given year starts.  Days are counted
+     * from the Hijri epoch, origin 0.
+     */
+    private long yearStart(int year) {
+        if (civil) {
+            return (year-1)*354 + (long)Math.floor((3+11*year)/30.0);
+        } else {
+            return trueMonthStart(12*(year-1));
+        }
+    }
+    
+    /**
+     * Return the day # on which the given month starts.  Days are counted
+     * from the Hijri epoch, origin 0.
+     *
+     * @param year  The hijri year
+     * @param year  The hijri month, 0-based
+     */
+    private long monthStart(int year, int month) {
+        if (civil) {
+            return (long)Math.ceil(29.5*month)
+                    + (year-1)*354 + (long)Math.floor((3+11*year)/30.0);
+        } else {
+            return trueMonthStart(12*(year-1) + month);
+        }
+    }
+    
+    /**
+     * Find the day number on which a particular month of the true/lunar
+     * Islamic calendar starts.
+     *
+     * @param month The month in question, origin 0 from the Hijri epoch
+     *
+     * @return The day number on which the given month starts.
+     */
+    private static final long trueMonthStart(long month)
+    {
+        long start = cache.get(month);
+
+        if (start == CalendarCache.EMPTY)
+        {
+            // Make a guess at when the month started, using the average length
+            long origin = HIJRA_MILLIS 
+                        + (long)Math.floor(month * CalendarAstronomer.SYNODIC_MONTH - 1) * ONE_DAY;
+
+            double age = moonAge(origin);
+
+            if (moonAge(origin) >= 0) {
+                // The month has already started
+                do {
+                    origin -= ONE_DAY;
+                    age = moonAge(origin);
+                } while (age >= 0);
+            }
+            else {
+                // Preceding month has not ended yet.
+                do {
+                    origin += ONE_DAY;
+                    age = moonAge(origin);
+                } while (age < 0);
+            }
+
+            start = (origin - HIJRA_MILLIS) / ONE_DAY + 1;
+            
+            cache.put(month, start);
+        }
+        return start;
+    }
+
+    /**
+     * Return the "age" of the moon at the given time; this is the difference
+     * in ecliptic latitude between the moon and the sun.  This method simply
+     * calls CalendarAstronomer.moonAge, converts to degrees, 
+     * and adjusts the resultto be in the range [-180, 180].
+     *
+     * @param time  The time at which the moon's age is desired,
+     *              in millis since 1/1/1970.
+     */
+    static final double moonAge(long time)
+    {
+        double age = 0;
+        
+        synchronized(astro) {
+            astro.setTime(time);
+            age = astro.getMoonAge();
+        }
+        // Convert to degrees and normalize...
+        age = age * 180 / Math.PI;
+        if (age > 180) {
+            age = age - 360;
+        }
+
+        return age;
+    }
+
+    //-------------------------------------------------------------------------
+    // Internal data....
+    //
+    
+    // And an Astronomer object for the moon age calculations
+    private static CalendarAstronomer astro = new CalendarAstronomer();
+    
+    private static CalendarCache cache = new CalendarCache();
+    
+    /**
+     * <code>true</code> if this object uses the fixed-cycle Islamic civil calendar,
+     * and <code>false</code> if it approximates the true religious calendar using
+     * astronomical calculations for the time of the new moon.
+     *
+     * @serial
+     */
+    private boolean civil = true;
+
+    //----------------------------------------------------------------------
+    // Calendar framework
+    //----------------------------------------------------------------------
+
+    /**
+     * Return the length (in days) of the given month.
+     *
+     * @param year  The hijri year
+     * @param year  The hijri month, 0-based
+     */
+    protected int handleGetMonthLength(int extendedYear, int month) {
+
+        int length = 0;
+        
+        if (civil) {
+            length = 29 + (month+1) % 2;
+            if (month == DHU_AL_HIJJAH && civilLeapYear(extendedYear)) {
+                length++;
+            }
+        } else {
+            month = 12*(extendedYear-1) + month;
+            length = (int)( trueMonthStart(month+1) - trueMonthStart(month) );
+        }
+        return length;
+    }
+
+    /**
+     * Return the number of days in the given Islamic year
+     */
+    protected int handleGetYearLength(int extendedYear) {
+        if (civil) {
+            return 354 + (civilLeapYear(extendedYear) ? 1 : 0);
+        } else {
+            int month = 12*(extendedYear-1);
+            return (int)(trueMonthStart(month + 12) - trueMonthStart(month));
+        }
+    }
+    
+    //-------------------------------------------------------------------------
+    // Functions for converting from field values to milliseconds....
+    //-------------------------------------------------------------------------
+
+    // Return JD of start of given month/year
+    protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
+        return (int) monthStart(eyear, month) + 1948439;
+    }    
+
+    //-------------------------------------------------------------------------
+    // Functions for converting from milliseconds to field values
+    //-------------------------------------------------------------------------
+
+    protected int handleGetExtendedYear() {
+        int year;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, 1); // Default to year 1
+        } else {
+            year = internalGet(YEAR, 1); // Default to year 1
+        }
+        return year;
+    }
+
+    /**
+     * Override Calendar to compute several fields specific to the Islamic
+     * calendar system.  These are:
+     *
+     * <ul><li>ERA
+     * <li>YEAR
+     * <li>MONTH
+     * <li>DAY_OF_MONTH
+     * <li>DAY_OF_YEAR
+     * <li>EXTENDED_YEAR</ul>
+     * 
+     * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this
+     * method is called. The getGregorianXxx() methods return Gregorian
+     * calendar equivalents for the given Julian day.
+     */
+    protected void handleComputeFields(int julianDay) {
+        int year, month, dayOfMonth, dayOfYear;
+        long monthStart;
+        long days = julianDay - 1948440;
+
+        if (civil) {
+            // Use the civil calendar approximation, which is just arithmetic
+            year  = (int)Math.floor( (30 * days + 10646) / 10631.0 );
+            month = (int)Math.ceil((days - 29 - yearStart(year)) / 29.5 );
+            month = Math.min(month, 11);
+            monthStart = monthStart(year, month);
+        } else {
+            // Guess at the number of elapsed full months since the epoch
+            int months = (int)Math.floor(days / CalendarAstronomer.SYNODIC_MONTH);
+
+            monthStart = (long)Math.floor(months * CalendarAstronomer.SYNODIC_MONTH - 1);
+
+            if ( days - monthStart >= 28 && moonAge(internalGetTimeInMillis()) > 0) {
+                // If we're near the end of the month, assume next month and search backwards
+                months++;
+            }
+
+            // Find out the last time that the new moon was actually visible at this longitude
+            // This returns midnight the night that the moon was visible at sunset.
+            while ((monthStart = trueMonthStart(months)) > days) {
+                // If it was after the date in question, back up a month and try again
+                months--;
+            }
+
+            year = months / 12 + 1;
+            month = months % 12;
+        }
+
+        dayOfMonth = (int)(days - monthStart(year, month)) + 1;
+
+        // Now figure out the day of the year.
+        dayOfYear = (int)(days - monthStart(year, 0) + 1);
+
+        internalSet(ERA, 0);
+        internalSet(YEAR, year);
+        internalSet(EXTENDED_YEAR, year);
+        internalSet(MONTH, month);
+        internalSet(DAY_OF_MONTH, dayOfMonth);
+        internalSet(DAY_OF_YEAR, dayOfYear);       
+    }    
+}
diff --git a/src/com/ibm/icu/util/JapaneseCalendar.java b/src/com/ibm/icu/util/JapaneseCalendar.java
new file mode 100755
index 0000000..506bb3f
--- /dev/null
+++ b/src/com/ibm/icu/util/JapaneseCalendar.java
@@ -0,0 +1,538 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/JapaneseCalendar.java,v $ 
+ * $Date: 2002/02/16 03:06:29 $ 
+ * $Revision: 1.8 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>JapaneseCalendar</code> is a subclass of <code>GregorianCalendar</code>
+ * that numbers years and eras based on the reigns of the Japanese emperors.
+ * The Japanese calendar is identical to the Gregorian calendar in all respects
+ * except for the year and era.  The ascension of each  emperor to the throne
+ * begins a new era, and the years of that era are numbered starting with the
+ * year of ascension as year 1.
+ * <p>
+ * Note that in the year of an imperial ascension, there are two possible sets
+ * of year and era values: that for the old era and for the new.  For example, a
+ * new era began on January 7, 1989 AD.  Strictly speaking, the first six days
+ * of that year were in the Showa era, e.g. "January 6, 64 Showa", while the rest
+ * of the year was in the Heisei era, e.g. "January 7, 1 Heisei".  This class
+ * handles this distinction correctly when computing dates.  However, in lenient
+ * mode either form of date is acceptable as input. 
+ * <p>
+ * In modern times, eras have started on January 8, 1868 AD, Gregorian (Meiji),
+ * July 30, 1912 (Taisho), December 25, 1926 (Showa), and January 7, 1989 (Heisei).  Constants
+ * for these eras, suitable for use in the <code>ERA</code> field, are provided
+ * in this class.  Note that the <em>number</em> used for each era is more or
+ * less arbitrary.  Currently, the era starting in 1053 AD is era #0; however this
+ * may change in the future as we add more historical data.  Use the predefined
+ * constants rather than using actual, absolute numbers.
+ * <p>
+ *
+ * @see com.ibm.icu.util.GregorianCalendar
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ */
+public class JapaneseCalendar extends GregorianCalendar {
+    
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constructs a default <code>JapaneseCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     */
+    public JapaneseCalendar() {
+        super();
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     * @param zone the given time zone.
+     */
+    public JapaneseCalendar(TimeZone zone) {
+        super(zone);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     * @param aLocale the given locale.
+     */
+    public JapaneseCalendar(Locale aLocale) {
+        super(aLocale);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param aLocale the given locale.
+     */
+    public JapaneseCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     */
+    public JapaneseCalendar(Date date) {
+        this();
+        setTime(date);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param era       The imperial era used to set the calendar's {@link #ERA ERA} field.
+     *                  Eras are numbered starting with the Tenki era, which
+     *                  began in 1053 AD Gregorian, as era zero.  Recent
+     *                  eras can be specified using the constants
+     *                  {@link #MEIJI} (which started in 1868 AD),
+     *                  {@link #TAISHO} (1912 AD),
+     *                  {@link #SHOWA} (1926 AD), and
+     *                  {@link #HEISEI} (1989 AD).
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} field,
+     *                  in terms of the era.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's DATE field.
+     */
+    public JapaneseCalendar(int era, int year, int month, int date) {
+        super(year, month, date);
+        set(ERA, era);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} field,
+     *                  in the era Heisei, the most current at the time this
+     *                  class was last updated.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} field.
+     */
+    public JapaneseCalendar(int year, int month, int date) {
+        super(year, month, date);
+        set(ERA, CURRENT_ERA);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field,
+     *                  in the era Heisei, the most current at the time of this
+     *                  writing.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     *
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     *
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     *
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     */
+    public JapaneseCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(year, month, date, hour, minute, second);
+        set(ERA, CURRENT_ERA);
+    }
+
+    //-------------------------------------------------------------------------
+
+    protected int handleGetExtendedYear() {
+        int year;
+        // TODO reimplement this to be faster?
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR &&
+            newerField(EXTENDED_YEAR, ERA) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, 1);
+        } else {
+            // Subtract one because year starts at 1
+            year = internalGet(YEAR) + ERAS[internalGet(ERA) * 3] - 1;
+        }
+        return year;
+    }
+
+    protected void handleComputeFields(int julianDay) {
+        super.handleComputeFields(julianDay);
+        int year = internalGet(EXTENDED_YEAR);
+
+        int low = 0;
+
+        // Short circuit for recent years.  Most modern computations will
+        // occur in the current era and won't require the binary search.
+        // Note that if the year is == the current era year, then we use
+        // the binary search to handle the month/dom comparison.
+        if (year > ERAS[ERAS.length - 3]) {
+            low = CURRENT_ERA;
+        } else {
+            // Binary search
+            int high = ERAS.length / 3;
+        
+            while (low < high - 1) {
+                int i = (low + high) / 2;
+                int diff = year - ERAS[i*3];
+
+                // If years are the same, then compare the months, and if those
+                // are the same, compare days of month.  In the ERAS array
+                // months are 1-based for easier maintenance.
+                if (diff == 0) {
+                    diff = internalGet(MONTH) - (ERAS[i*3 + 1] - 1);
+                    if (diff == 0) {
+                        diff = internalGet(DAY_OF_MONTH) - ERAS[i*3 + 2];
+                    }
+                }
+                if (diff >= 0) {
+                    low = i;
+                } else {
+                    high = i;
+                }
+            }
+        }
+
+        // Now we've found the last era that starts before this date, so
+        // adjust the year to count from the start of that era.  Note that
+        // all dates before the first era will fall into the first era by
+        // the algorithm.
+        internalSet(ERA, low);
+        internalSet(YEAR, year - ERAS[low*3] + 1);
+    }
+
+    private static final int[] ERAS = {
+    //  Gregorian date of each emperor's ascension
+    //  Years are AD, months are 1-based.
+    //  Year  Month Day
+         645,    6, 19,     // Taika
+         650,    2, 15,     // Hakuchi
+         672,    1,  1,     // Hakuho
+         686,    7, 20,     // Shucho
+         701,    3, 21,     // Taiho
+         704,    5, 10,     // Keiun
+         708,    1, 11,     // Wado
+         715,    9,  2,     // Reiki
+         717,   11, 17,     // Yoro
+         724,    2,  4,     // Jinki
+         729,    8,  5,     // Tempyo
+         749,    4, 14,     // Tempyo-kampo
+         749,    7,  2,     // Tempyo-shoho
+         757,    8, 18,     // Tempyo-hoji
+         765,    1,  7,     // Tempho-jingo
+         767,    8, 16,     // Jingo-keiun
+         770,   10,  1,     // Hoki
+         781,    1,  1,     // Ten-o
+         782,    8, 19,     // Enryaku
+         806,    5, 18,     // Daido
+         810,    9, 19,     // Konin
+         824,    1,  5,     // Tencho
+         834,    1,  3,     // Showa
+         848,    6, 13,     // Kajo
+         851,    4, 28,     // Ninju
+         854,   11, 30,     // Saiko
+         857,    2, 21,     // Tennan
+         859,    4, 15,     // Jogan
+         877,    4, 16,     // Genkei
+         885,    2, 21,     // Ninna
+         889,    4, 27,     // Kampyo
+         898,    4, 26,     // Shotai
+         901,    7, 15,     // Engi
+         923,    4, 11,     // Encho
+         931,    4, 26,     // Shohei
+         938,    5, 22,     // Tengyo
+         947,    4, 22,     // Tenryaku
+         957,   10, 27,     // Tentoku
+         961,    2, 16,     // Owa
+         964,    7, 10,     // Koho
+         968,    8, 13,     // Anna
+         970,    3, 25,     // Tenroku
+         973,   12, 20,     // Ten-en
+         976,    7, 13,     // Jogen
+         978,   11, 29,     // Tengen
+         983,    4, 15,     // Eikan
+         985,    4, 27,     // Kanna
+         987,    4,  5,     // Ei-en
+         989,    8,  8,     // Eiso
+         990,   11,  7,     // Shoryaku
+         995,    2, 22,     // Chotoku
+         999,    1, 13,     // Choho
+        1004,    7, 20,     // Kanko
+        1012,   12, 25,     // Chowa
+        1017,    4, 23,     // Kannin
+        1021,    2,  2,     // Jian
+        1024,    7, 13,     // Manju
+        1028,    7, 25,     // Chogen
+        1037,    4, 21,     // Choryaku
+        1040,   11, 10,     // Chokyu
+        1044,   11, 24,     // Kantoku
+        1046,    4, 14,     // Eisho
+        1053,    1, 11,     // Tengi
+        1058,    8, 29,     // Kohei
+        1065,    8,  2,     // Jiryaku
+        1069,    4, 13,     // Enkyu
+        1074,    8, 23,     // Shoho
+        1077,   11, 17,     // Shoryaku
+        1081,    2, 10,     // Eiho
+        1084,    2,  7,     // Otoku
+        1087,    4,  7,     // Kanji
+        1094,   12, 15,     // Kaho
+        1096,   12, 17,     // Eicho
+        1097,   11, 21,     // Shotoku
+        1099,    8, 28,     // Kowa
+        1104,    2, 10,     // Choji
+        1106,    4,  9,     // Kasho
+        1108,    8,  3,     // Tennin
+        1110,    7, 13,     // Ten-ei
+        1113,    7, 13,     // Eikyu
+        1118,    4,  3,     // Gen-ei
+        1120,    4, 10,     // Hoan
+        1124,    4,  3,     // Tenji
+        1126,    1, 22,     // Daiji
+        1131,    1, 29,     // Tensho
+        1132,    8, 11,     // Chosho
+        1135,    4, 27,     // Hoen
+        1141,    7, 10,     // Eiji
+        1142,    4, 28,     // Koji
+        1144,    2, 23,     // Tenyo
+        1145,    7, 22,     // Kyuan
+        1151,    1, 26,     // Ninpei
+        1154,   10, 28,     // Kyuju
+        1156,    4, 27,     // Hogen
+        1159,    4, 20,     // Heiji
+        1160,    1, 10,     // Eiryaku
+        1161,    9,  4,     // Oho
+        1163,    3, 29,     // Chokan
+        1165,    6,  5,     // Eiman
+        1166,    8, 27,     // Nin-an
+        1169,    4,  8,     // Kao
+        1171,    4, 21,     // Shoan
+        1175,    7, 28,     // Angen
+        1177,    8,  4,     // Jisho
+        1181,    7, 14,     // Yowa
+        1182,    5, 27,     // Juei
+        1184,    4, 16,     // Genryuku
+        1185,    8, 14,     // Bunji
+        1190,    4, 11,     // Kenkyu
+        1199,    4, 27,     // Shoji
+        1201,    2, 13,     // Kennin
+        1204,    2, 20,     // Genkyu
+        1206,    4, 27,     // Ken-ei
+        1207,   10, 25,     // Shogen
+        1211,    3,  9,     // Kenryaku
+        1213,   12,  6,     // Kenpo
+        1219,    4, 12,     // Shokyu
+        1222,    4, 13,     // Joo
+        1224,   11, 20,     // Gennin
+        1225,    4, 20,     // Karoku
+        1227,   12, 10,     // Antei
+        1229,    3,  5,     // Kanki
+        1232,    4,  2,     // Joei
+        1233,    4, 15,     // Tempuku
+        1234,   11,  5,     // Bunryaku
+        1235,    9, 19,     // Katei
+        1238,   11, 23,     // Ryakunin
+        1239,    2,  7,     // En-o
+        1240,    7, 16,     // Ninji
+        1243,    2, 26,     // Kangen
+        1247,    2, 28,     // Hoji
+        1249,    3, 18,     // Kencho
+        1256,   10,  5,     // Kogen
+        1257,    3, 14,     // Shoka
+        1259,    3, 26,     // Shogen
+        1260,    4, 13,     // Bun-o
+        1261,    2, 20,     // Kocho
+        1264,    2, 28,     // Bun-ei
+        1275,    4, 25,     // Kenji
+        1278,    2, 29,     // Koan
+        1288,    4, 28,     // Shoo
+        1293,    8, 55,     // Einin
+        1299,    4, 25,     // Shoan
+        1302,   11, 21,     // Kengen
+        1303,    8,  5,     // Kagen
+        1306,   12, 14,     // Tokuji
+        1308,   10,  9,     // Enkei
+        1311,    4, 28,     // Ocho
+        1312,    3, 20,     // Showa
+        1317,    2,  3,     // Bunpo
+        1319,    4, 28,     // Geno
+        1321,    2, 23,     // Genkyo
+        1324,   12,  9,     // Shochu
+        1326,    4, 26,     // Kareki
+        1329,    8, 29,     // Gentoku
+        1331,    8,  9,     // Genko
+        1334,    1, 29,     // Kemmu
+        1336,    2, 29,     // Engen
+        1340,    4, 28,     // Kokoku
+        1346,   12,  8,     // Shohei
+        1370,    7, 24,     // Kentoku
+        1372,    4,  1,     // Bunch\u0169
+        1375,    5, 27,     // Tenju
+        1381,    2, 10,     // Kowa
+        1384,    4, 28,     // Gench\u0169
+        1384,    2, 27,     // Meitoku
+        1379,    3, 22,     // Koryaku
+        1387,    8, 23,     // Kakei
+        1389,    2,  9,     // Koo
+        1390,    3, 26,     // Meitoku
+        1394,    7,  5,     // Oei
+        1428,    4, 27,     // Shocho
+        1429,    9,  5,     // Eikyo
+        1441,    2, 17,     // Kakitsu
+        1444,    2,  5,     // Bun-an
+        1449,    7, 28,     // Hotoku
+        1452,    7, 25,     // Kyotoku
+        1455,    7, 25,     // Kosho
+        1457,    9, 28,     // Choroku
+        1460,   12, 21,     // Kansho
+        1466,    2, 28,     // Bunsho
+        1467,    3,  3,     // Onin
+        1469,    4, 28,     // Bunmei
+        1487,    7, 29,     // Chokyo
+        1489,    8, 21,     // Entoku
+        1492,    7, 19,     // Meio
+        1501,    2, 29,     // Bunki
+        1504,    2, 30,     // Eisho
+        1521,    8, 23,     // Taiei
+        1528,    8, 20,     // Kyoroku
+        1532,    7, 29,     // Tenmon
+        1555,   10, 23,     // Koji
+        1558,    2, 28,     // Eiroku
+        1570,    4, 23,     // Genki
+        1573,    7, 28,     // Tensho
+        1592,   12,  8,     // Bunroku
+        1596,   10, 27,     // Keicho
+        1615,    7, 13,     // Genwa
+        1624,    2, 30,     // Kan-ei
+        1644,   12, 16,     // Shoho
+        1648,    2, 15,     // Keian
+        1652,    9, 18,     // Shoo
+        1655,    4, 13,     // Meiryaku
+        1658,    7, 23,     // Manji
+        1661,    4, 25,     // Kanbun
+        1673,    9, 21,     // Enpo
+        1681,    9, 29,     // Tenwa
+        1684,    2, 21,     // Jokyo
+        1688,    9, 30,     // Genroku
+        1704,    3, 13,     // Hoei
+        1711,    4, 25,     // Shotoku
+        1716,    6, 22,     // Kyoho
+        1736,    4, 28,     // Genbun
+        1741,    2, 27,     // Kanpo
+        1744,    2, 21,     // Enkyo
+        1748,    7, 12,     // Kan-en
+        1751,   10, 27,     // Horyaku
+        1764,    6,  2,     // Meiwa
+        1772,   11, 16,     // An-ei
+        1781,    4,  2,     // Tenmei
+        1789,    1, 25,     // Kansei
+        1801,    2,  5,     // Kyowa
+        1804,    2, 11,     // Bunka
+        1818,    4, 22,     // Bunsei
+        1830,   12, 10,     // Tenpo
+        1844,   12,  2,     // Koka
+        1848,    2, 28,     // Kaei
+        1854,   11, 27,     // Ansei
+        1860,    3, 18,     // Man-en
+        1861,    2, 19,     // Bunkyu
+        1864,    2, 20,     // Genji
+        1865,    4,  7,     // Keio
+        1868,    9,  8,     // Meiji
+        1912,    7, 30,     // Taisho
+        1926,   12, 25,     // Showa
+        1989,    1,  8,     // Heisei
+    };
+
+    //-------------------------------------------------------------------------
+    // Public constants for some of the recent eras that folks might use...
+    //-------------------------------------------------------------------------
+
+    // Constant for the current era.  This must be regularly updated.
+    static public final int CURRENT_ERA = (ERAS.length / 3) - 1;
+    
+    /** Constant for the era starting on Sept. 8, 1868 AD */
+    static public final int MEIJI = CURRENT_ERA - 3;
+
+    /** Constant for the era starting on July 30, 1912 AD */
+    static public final int TAISHO = CURRENT_ERA - 2;
+    
+    /** Constant for the era starting on Dec. 25, 1926 AD */
+    static public final int SHOWA = CURRENT_ERA - 1;
+
+    /** Constant for the era starting on Jan. 7, 1989 AD */
+    static public final int HEISEI = CURRENT_ERA;
+
+    /**
+     * Partial limits table for limits that differ from GregorianCalendar's.
+     * The YEAR max limits are filled in the first time they are needed.
+     */
+    private static int LIMITS[][] = {
+        // Minimum  Greatest        Least      Maximum
+        //           Minimum      Maximum
+        {        0,        0, CURRENT_ERA, CURRENT_ERA }, // ERA
+        {        1,        1,           0,           0 }, // YEAR
+    };
+
+    private static boolean YEAR_LIMIT_KNOWN = false;
+
+    /**
+     * Override GregorianCalendar.  We should really handle YEAR_WOY and
+     * EXTENDED_YEAR here too to implement the 1..5000000 range, but it's
+     * not critical.
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        switch (field) {
+        case ERA:
+            return LIMITS[field][limitType];
+        case YEAR:
+            if (!YEAR_LIMIT_KNOWN) {
+                int min = ERAS[3] - ERAS[0];
+                int max = min;
+                for (int i=6; i<ERAS.length; i+=3) {
+                    int d = ERAS[i] - ERAS[i-3];
+                    if (d < min) {
+                        min = d;
+                    } else if (d > max) {
+                        max = d;
+                    }
+                }
+                LIMITS[field][LEAST_MAXIMUM] = min;
+                LIMITS[field][MAXIMUM] = max;
+            }
+            return LIMITS[field][limitType];
+        default:
+            return super.handleGetLimit(field, limitType);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/util/OverlayBundle.java b/src/com/ibm/icu/util/OverlayBundle.java
new file mode 100755
index 0000000..d5eca97
--- /dev/null
+++ b/src/com/ibm/icu/util/OverlayBundle.java
@@ -0,0 +1,171 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/OverlayBundle.java,v $
+ * $Date: 2002/08/13 23:43:27 $
+ * $Revision: 1.5 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.util.*;
+
+/**
+ * A ResourceBundle that overlays one hierarchy atop another.  This is
+ * best explained by example.  Suppose one wants to use the
+ * resource hiararchy (in JDK 1.2 and 1.3, but not 1.4) at 
+ * "java.text.resources.LocaleElements", but one wants to use
+ * a modified version of the "NumberPatterns" resource in the
+ * fr_FR locale.  One way to do this is to add special case code
+ * to the lookup operation to check for fr_FR and the key
+ * "NumberPatterns", and in that case, load up custom data.  However,
+ * this becomes unwieldy and places some information about the
+ * effective resource hierarchy into the code.
+ *
+ * The OverlayBundle solves this problem by layering another
+ * hierarchy, e.g, "com.acme.resources.LocaleElements", on top of a
+ * base hierarchy.  When a resource is requested, it is first sought
+ * in the overlay hierarchy, and if not found there, it is sought in
+ * the base hierarchy.  Multiple overlays are supported, but in
+ * practice one is usually sufficient.
+ * 
+ * The OverlayBundle also addresses the problem of country-oriented
+ * data.  To specify the default data for a language, one just sets
+ * the language resource bundle data.  However, specifying the default
+ * data for a country using the standard ResourceBundle mechanism is
+ * impossible.  The OverlayBundle recognizes "wildcard" locales with
+ * the special language code "xx".  When looking up data for a locale
+ * with a non-empty country, if an exact locale match cannot be found,
+ * the OverlayBundle looks for data in the locale xx_YY, where YY is
+ * the country being sought.  This effectively adds another entry in
+ * the fallback sequence for a locale aa_BB: aa_BB, xx_BB, aa, root.
+ * Wildcard locales are not implemented for the base hierarchy, only
+ * for overlays.
+ *
+ * The OverlayBundle is implemented as an array of n ResourceBundle
+ * base names.  The base names are searched from 0 to n-1.  Base name
+ * n-1 is special; it is the base hierarchy.  This should be a
+ * well-populated hierarchy with most of the default data, typically,
+ * the icu or sun core hierarchies.  The base hierarchy is
+ * treated differently from the overlays above it.  It does not get
+ * wildcard resolution, and the getKeys() framework method is
+ * delegated to the base hierarchy bundle.
+ *
+ * Usage: Instantiate an OverlayBundle directly (not via a factory
+ * method as in ResourceBundle).  Instead of specifying a single base
+ * name, pass it an array of 2 or more base names.  After that, use it
+ * exactly as you would use ResourceBundle.
+ *
+ * @see java.util.ResourceBundle
+ * @author Alan Liu
+ */
+// prepare to deprecate in next release
+///CLOVER:OFF
+public class OverlayBundle extends ResourceBundle {
+
+    /**
+     * The array of base names, with the length-1 entry being the base
+     * hierarchy, typically "sun.text.resources.LocaleElements".
+     */
+    private String[] baseNames;
+
+    /**
+     * The requested locale.
+     */
+    private Locale locale;
+
+    /**
+     * Loaded bundles.  These will be null until they are loaded on
+     * demand.
+     */
+    private ResourceBundle[] bundles;
+
+    /**
+     * Construct an overlay bundle given a sequence of base names and
+     * a locale.
+     */
+    public OverlayBundle(String[] baseNames,
+                         Locale locale) {
+        this.baseNames = baseNames;
+        this.locale = locale;
+        bundles = new ResourceBundle[baseNames.length];
+    }
+
+    /**
+     * ResourceBundle framework method.  Delegates to
+     * bundles[i].getObject().
+     */ 
+   protected Object handleGetObject(String key) 
+        throws MissingResourceException {
+
+        Object o = null;
+
+        for (int i=0; i<bundles.length; ++i) {
+            load(i);
+            try {
+                o = bundles[i].getObject(key);
+            } catch (MissingResourceException e) {
+                if (i == bundles.length-1) {
+                    throw e;
+                }
+            }
+            if (o != null) {
+                break;
+            }
+        }
+
+        return o;
+    }
+
+    /**
+     * ResourceBundle framework method.  Delegates to
+     * bundles[bundles.length-1].getKeys().
+     */
+    public Enumeration getKeys() {
+        // Return the enumeration of the last bundle, which is the base
+        // of our hierarchy stack.
+        int i = bundles.length - 1;
+        load(i);
+        return bundles[i].getKeys();
+    }
+
+    /**
+     * Load the i-th bundle and implement wildcard resolution.
+     */
+    private void load(int i)
+        throws MissingResourceException {
+
+        if (bundles[i] == null) {
+            boolean tryWildcard = false;
+            try {
+                bundles[i] = ResourceBundle.getBundle(baseNames[i], locale);
+                if (bundles[i].getLocale().equals(locale)) {
+                    return;
+                }
+                if (locale.getCountry().length() != 0 && i != bundles.length-1) {
+                    tryWildcard = true;
+                }
+            } catch (MissingResourceException e) {
+                if (i == bundles.length-1) {
+                    throw e;
+                }
+                tryWildcard = true;
+            }
+            if (tryWildcard) {
+                Locale wildcard = new Locale("xx", locale.getCountry(),
+                                             locale.getVariant());
+                try {
+                    bundles[i] = ResourceBundle.getBundle(baseNames[i], wildcard);
+                } catch (MissingResourceException e) {
+                    if (bundles[i] == null) {
+                        throw e;
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/util/RangeDateRule.java b/src/com/ibm/icu/util/RangeDateRule.java
new file mode 100755
index 0000000..62d0e9c
--- /dev/null
+++ b/src/com/ibm/icu/util/RangeDateRule.java
@@ -0,0 +1,141 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/RangeDateRule.java,v $ 
+ * $Date: 2002/02/16 03:06:29 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import java.util.Vector;
+
+public class RangeDateRule implements DateRule
+{
+    public RangeDateRule()
+    {
+    }
+
+    public RangeDateRule(Range[] ranges)
+    {
+        for (int i = 0; i < ranges.length; i++) {
+            this.ranges.addElement(ranges[i]);
+        }
+    }
+
+    public void add(DateRule rule)
+    {
+        add(new Date(Long.MIN_VALUE), rule);
+    }
+
+    public void add(Date start, DateRule rule)
+    {
+        // TODO: Insert in the right place
+        // System.out.println("Add: " + start.toString());
+        ranges.addElement(new Range(start, rule));
+    }
+
+    //-----------------------------------------------------------------------
+
+    public Date firstAfter(Date start)
+    {
+        // Find the range that I should look at
+        int index = startIndex(start);
+        Date result = null;
+
+        Range r = rangeAt(index);
+        Range e = rangeAt(index+1);
+
+        if (r != null && r.rule != null)
+        {
+            if (e != null) {
+                result = r.rule.firstBetween(start, e.start);
+            } else {
+                result = r.rule.firstAfter(start);
+            }
+        }
+        return result;
+    }
+
+    public Date firstBetween(Date start, Date end)
+    {
+        // Find the range that I should look at
+        int index = startIndex(start);
+        Date result = null;
+
+        Range next = rangeAt(index);
+
+        while (result == null && next != null && ! next.start.after(end))
+        {
+            Range r = next;
+            next = rangeAt(index+1);
+
+            if (r.rule != null) {
+                Date e = (next != null && next.start.before(end)) ? next.start
+                                                                  : end;
+                result = r.rule.firstBetween(start, e);
+            }
+        }
+        return result;
+    }
+
+    public boolean isOn(Date date)
+    {
+        return false;
+    }
+
+    /**
+     * Check whether this event occurs at least once between the two
+     * dates given.
+     */
+    public boolean isBetween(Date start, Date end)
+    {
+        return firstBetween(start,end) == null;
+    }
+
+    /*
+     * find the index of the last range whose start date is before "start"
+     * returns an index >= ranges.size() if there is none
+     */
+    private int startIndex(Date start)
+    {
+        int lastIndex = ranges.size();
+
+        for (int i = 0; i < ranges.size(); i++) {
+            Range r = (Range) ranges.elementAt(i);
+            if (start.before(r.start)) {
+                break;
+            }
+            lastIndex = i;
+        }
+        return lastIndex;
+    }
+
+    private Range rangeAt(int index)
+    {
+       return (index < ranges.size()) ? (Range) ranges.elementAt(index)
+                                      : null;
+    }
+
+    Vector ranges = new Vector(2,2);
+};
+
+//-----------------------------------------------------------------------
+// Privates
+//
+
+class Range {
+    public Range(Date start, DateRule rule) {
+        this.start = start;
+        this.rule = rule;
+    }
+    public Date     start;
+    public DateRule rule;
+}
+
diff --git a/src/com/ibm/icu/util/RangeValueIterator.java b/src/com/ibm/icu/util/RangeValueIterator.java
new file mode 100755
index 0000000..5818001
--- /dev/null
+++ b/src/com/ibm/icu/util/RangeValueIterator.java
@@ -0,0 +1,105 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/RangeValueIterator.java,v $
+* $Date: 2002/04/15 17:26:56 $
+* $Revision: 1.4 $
+*
+******************************************************************************
+*/
+
+package com.ibm.icu.util;
+
+/**
+ * <p>Interface for enabling iteration over sets of <int index, int value>, 
+ * where index is the sorted integer index in ascending order and value, its 
+ * associated integer value.</p>
+ * <p>The result for each iteration is the consecutive range of 
+ * <int index, int value> with the same value. Result is represented by 
+ * <start, limit, value> where</p>
+ * <ul>
+ * <li> start is the starting integer of the result range
+ * <li> limit is 1 after the maximum integer that follows start, such that
+ *      all integers between start and (limit - 1), inclusive, have the same 
+ *      associated integer value.
+ * <li> value is the integer value that all integers from start to (limit - 1) 
+ *      share in common.
+ * </ul>
+ * <p>
+ * Hence value(start) = value(start + 1) = .... = value(start + n) = .... =
+ * value(limit - 1). However value(start -1) != value(start) and 
+ * value(limit) != value(start).
+ * </p>
+ * <p>Most implementations will be created by factory methods, such as the
+ * character type iterator in UCharacter.getTypeIterator. See example below.
+ * </p>
+ * Example of use:<br>
+ * <pre>
+ * RangeValueIterator iterator = UCharacter.getTypeIterator();
+ * RangeValueIterator.Element result = new RangeValueIterator.Element();
+ * while (iterator.next(result)) {
+ *     System.out.println("Codepoint \\u" + 
+ *                        Integer.toHexString(result.start) + 
+ *                        " to codepoint \\u" +
+ *                        Integer.toHexString(result.limit - 1) + 
+ *                        " has the character type " + result.value);
+ * }
+ * </pre>
+ * @author synwee
+ * @since release 2.1, Jan 17 2002
+ * @draft 2.1
+ */
+public interface RangeValueIterator
+{
+    // public inner class ---------------------------------------------
+    
+    /**
+    * Return result wrapper for com.ibm.icu.util.RangeValueIterator.
+    * Stores the start and limit of the continous result range and the
+    * common value all integers between [start, limit - 1] has.
+    * @draft 2.1
+    */
+    public class Element
+    {
+        /**
+        * Starting integer of the continuous result range that has the same 
+        * value
+        * @draft 2.1
+        */
+        public int start;
+        /**
+        * (End + 1) integer of continuous result range that has the same 
+        * value
+        * @draft 2.1
+        */
+        public int limit;
+        /**
+        * Gets the common value of the continous result range
+        * @draft 2.1
+        */ 
+        public int value;
+    }
+    
+    // public methods -------------------------------------------------
+    
+    /**
+    * <p>Gets the next maximal result range with a common value and returns 
+    * true if we are not at the end of the iteration, false otherwise.</p>
+    * <p>If the return boolean is a false, the contents of elements will not
+    * be updated.</p>
+    * @param element for storing the result range and value
+    * @return true if we are not at the end of the iteration, false otherwise.
+    * @see Element
+    * @draft 2.1
+    */
+    public boolean next(Element element);
+    
+    /**
+    * Resets the iterator to the beginning of the iteration.
+    * @draft 2.1
+    */
+    public void reset();
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/util/SimpleDateRule.java b/src/com/ibm/icu/util/SimpleDateRule.java
new file mode 100755
index 0000000..a39435f
--- /dev/null
+++ b/src/com/ibm/icu/util/SimpleDateRule.java
@@ -0,0 +1,228 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/SimpleDateRule.java,v $ 
+ * $Date: 2002/03/20 05:11:17 $ 
+ * $Revision: 1.7 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+
+public class SimpleDateRule implements DateRule
+{
+    /**
+     * Construct a rule for a fixed date within a month
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    The date in that month (1-based).
+     * </ul>
+     */
+    public SimpleDateRule(int month, int dayOfMonth)
+    {
+        this.month      = month;
+        this.dayOfMonth = dayOfMonth;
+        this.dayOfWeek  = 0;
+    }
+
+    /**
+     * Construct a rule for a weekday within a month, e.g. the first Monday.
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    A date within that month (1-based).
+     * @param dayOfWeek     The day of the week on which this rule occurs.
+     * @param after         If true, this rule selects the first dayOfWeek
+     *                      on or after dayOfMonth.  If false, the rule selects
+     *                      the first dayOfWeek on or before dayOfMonth.
+     * </ul>
+     */
+    public SimpleDateRule(int month, int dayOfMonth, int dayOfWeek, boolean after)
+    {
+        this.month      = month;
+        this.dayOfMonth = dayOfMonth;
+        this.dayOfWeek  = after ? dayOfWeek : -dayOfWeek;
+    }
+
+    /**
+     * Return the first occurrance of the event represented by this rule
+     * that is on or after the given start date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur on or after the start date.
+     *
+     * @see #firstBetween
+     */
+    public Date firstAfter(Date start)
+    {
+        if (startDate != null && start.before(startDate)) {
+            start = startDate;
+        }
+        return doFirstBetween(start, endDate);
+    }
+
+    /**
+     * Return the first occurrance of the event represented by this rule
+     * that is on or after the given start date and before the given
+     * end date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     * @param end   Only occurrances before this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur between the start and end dates.
+     *
+     * @see #firstAfter
+     */
+    public Date firstBetween(Date start, Date end)
+    {
+        // Pin to the min/max dates for this rule
+        if (startDate != null && start.before(startDate)) {
+            start = startDate;
+        }
+        if (endDate != null && end.after(endDate)) {
+            end = endDate;
+        }
+        return doFirstBetween(start, end);
+    }
+
+    /**
+     * Checks whether this event occurs on the given date.  This does
+     * <em>not</em> take time of day into account; instead it checks
+     * whether this event and the given date are on the same day.
+     * This is useful for applications such as determining whether a given
+     * day is a holiday.
+     *
+     * @param date  The date to check.
+     * @return      true if this event occurs on the given date.
+     *
+     */
+    public boolean isOn(Date date)
+    {
+        if (startDate != null && date.before(startDate)) {
+            return false;
+        }
+        if (endDate != null && date.after(endDate)) {
+            return false;
+        }
+
+        Calendar c = calendar;
+
+        synchronized(c) {
+            c.setTime(date);
+
+            int dayOfYear = c.get(Calendar.DAY_OF_YEAR);
+
+            c.setTime(computeInYear(c.get(Calendar.YEAR), c));
+
+            //System.out.println("  isOn: dayOfYear = " + dayOfYear);
+            //System.out.println("        holiday   = " + c.get(Calendar.DAY_OF_YEAR));
+
+            return c.get(Calendar.DAY_OF_YEAR) == dayOfYear;
+        }
+    }
+
+    /**
+     * Check whether this event occurs at least once between the two
+     * dates given.
+     */
+    public boolean isBetween(Date start, Date end)
+    {
+        return firstBetween(start, end) != null; // TODO: optimize?
+    }
+
+    private Date doFirstBetween(Date start, Date end)
+    {
+        Calendar c = calendar;
+
+        synchronized(c) {
+            c.setTime(start);
+
+            int year = c.get(Calendar.YEAR);
+            int month = c.get(Calendar.MONTH);
+
+            // If the rule is earlier in the year than the start date
+            // we have to go to the next year.
+            if (month > this.month) {
+                year++;
+            }
+
+            // Figure out when the rule lands in the given year
+            Date result = computeInYear(year, c);
+
+            // If the rule is in the same month as the start date, it's possible
+            // to get a result that's before the start.  If so, go to next year.
+            if (month == this.month && result.before(start)) {
+                result = computeInYear(year+1, c);
+            }
+
+            if (end != null && result.after(end)) {
+                return null;
+            }
+            return result;
+        }
+    }
+    private Date computeInYear(int year, Calendar c)
+    {
+        if (c == null) c = calendar;
+
+        synchronized(c) {
+            c.clear();
+            c.set(Calendar.ERA, c.getMaximum(Calendar.ERA));
+            c.set(Calendar.YEAR, year);
+            c.set(Calendar.MONTH, month);
+            c.set(Calendar.DATE, dayOfMonth);
+
+            //System.out.println("     computeInYear: start at " + c.getTime().toString());
+
+            if (dayOfWeek != 0) {
+                c.setTime(c.getTime());        // JDK 1.1.2 workaround
+                int weekday = c.get(Calendar.DAY_OF_WEEK);
+
+                //System.out.println("                    weekday = " + weekday);
+                //System.out.println("                    dayOfYear = " + c.get(Calendar.DAY_OF_YEAR));
+
+                int delta = 0;
+                if (dayOfWeek > 0) {
+                    // We want the first occurrance of the given day of the week
+                    // on or after the specified date in the month.
+                    delta = (dayOfWeek - weekday + 7) % 7;
+                }
+                else if (dayOfWeek < 0) {
+                    // We want the first occurrance of the (-dayOfWeek)
+                    // on or before the specified date in the month.
+                    delta = -((dayOfWeek + weekday + 7) % 7);
+                }
+                //System.out.println("                    adding " + delta + " days");
+                c.add(Calendar.DATE, delta);
+            }
+
+            return c.getTime();
+        }
+    }
+
+    public void setCalendar(Calendar c) {
+        calendar = c;
+    }
+
+    static GregorianCalendar gCalendar = new GregorianCalendar(new SimpleTimeZone(0, "UTC"));
+
+    Calendar calendar = gCalendar;
+
+    private int     month;
+    private int     dayOfMonth;
+    private int     dayOfWeek;
+
+    private Date    startDate = null;
+    private Date    endDate = null;
+};
diff --git a/src/com/ibm/icu/util/SimpleHoliday.java b/src/com/ibm/icu/util/SimpleHoliday.java
new file mode 100755
index 0000000..401ef39
--- /dev/null
+++ b/src/com/ibm/icu/util/SimpleHoliday.java
@@ -0,0 +1,239 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/SimpleHoliday.java,v $ 
+ * $Date: 2002/02/16 03:06:30 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+
+/**
+ * A holiday whose date can be represented by a SimpleDateRule object
+ *
+ * @see SimpleDateRule
+ */
+public class SimpleHoliday extends Holiday {
+    /**
+     * Construct an object representing a holiday
+     *
+     * @param month         The month in which this holiday occurs (0-based)
+     * @param dayOfMonth    The date within the month (1-based).
+     *
+     * @param name  The name of this holiday.  This string is used as a key
+     *              to look up the holiday's name a resource bundle.
+     *              If the name is not found in the resource bundle,
+     *              getDisplayName will return this string instead.
+     *
+     * @see SimpleDateRule
+     * @see Holiday#getDisplayName(java.util.Locale)
+     *
+     */
+    public SimpleHoliday(int month, int dayOfMonth, String name)
+    {
+        super(name, new SimpleDateRule(month, dayOfMonth));
+    }
+
+    /**
+     * Construct an object representing a holiday
+     *
+     * @param month         The month in which this holiday occurs (0-based)
+     * @param dayOfMonth    The date within the month (1-based).
+     *
+     * @param name  The name of this holiday.  This string is used as a key
+     *              to look up the holiday's name a resource bundle.
+     *              If the name is not found in the resource bundle,
+     *              getDisplayName will return this string instead.
+     *
+     * @see SimpleDateRule
+     * @see Holiday#getDisplayName(java.util.Locale)
+     *
+     */
+    public SimpleHoliday(int month, int dayOfMonth, String name,
+                            int startYear)
+    {
+        super(name, null);
+
+        setRange(startYear, 0, new SimpleDateRule(month, dayOfMonth) );
+    }
+
+    /**
+     * Construct an object representing a holiday
+     *
+     * @param month         The month in which this holiday occurs (0-based)
+     * @param dayOfMonth    The date within the month (1-based).
+     *
+     * @param name  The name of this holiday.  This string is used as a key
+     *              to look up the holiday's name a resource bundle.
+     *              If the name is not found in the resource bundle,
+     *              getDisplayName will return this string instead.
+     *
+     * @see SimpleDateRule
+     * @see Holiday#getDisplayName(java.util.Locale)
+     *
+     */
+    public SimpleHoliday(int month, int dayOfMonth, String name,
+                            int startYear, int endYear)
+    {
+        super(name, null);
+
+        setRange(startYear, endYear, new SimpleDateRule(month, dayOfMonth) );
+    }
+
+    /** // TODO: remove
+     * Construct an object representing a holiday
+     *
+     * @param month The month in which this holiday occurs (0-based)
+     *
+     * @param dayOfMonth A date within the month (1-based).  The
+     *      interpretation of this parameter depends on the value of
+     *      <code>dayOfWeek</code>.
+     *
+     * @param dayOfWeek The day of the week on which this holiday occurs.
+     *      The following values are legal: <ul>
+     *      <li>dayOfWeek == 0 - use dayOfMonth only
+     *      <li>dayOfWeek < 0  - use last -dayOfWeek before or on dayOfMonth
+     *      <li>dayOfWeek > 0  - use first dayOfWeek after or on dayOfMonth
+     *      </ul>
+     *
+     * @param name  The name of this holiday.  This string is used as a key
+     *              to look up the holiday's name a resource bundle.
+     *              If the name is not found in the resource bundle,
+     *              getDisplayName will return this string instead.
+     *
+     * @see SimpleDateRule
+     * @see Holiday#getDisplayName(java.util.Locale)
+     *
+     */
+    public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name)
+    {
+        super(name, new SimpleDateRule(month, dayOfMonth,
+                                        dayOfWeek > 0 ? dayOfWeek : - dayOfWeek,
+                                        dayOfWeek > 0) );
+    }
+
+
+    public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name,
+                        int startYear)
+    {
+        super(name, null);
+
+        setRange(startYear, 0, new SimpleDateRule(month, dayOfMonth,
+                                            dayOfWeek > 0 ? dayOfWeek : - dayOfWeek,
+                                            dayOfWeek > 0) );
+    }
+
+
+    public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name,
+                        int startYear, int endYear)
+    {
+        super(name, null);
+
+        setRange(startYear, endYear, new SimpleDateRule(month, dayOfMonth,
+                                            dayOfWeek > 0 ? dayOfWeek : - dayOfWeek,
+                                            dayOfWeek > 0) );
+    }
+
+    private void setRange(int startYear, int endYear, DateRule rule)
+    {
+        RangeDateRule rangeRule = new RangeDateRule();
+
+        if (startYear != 0) {
+            Calendar start = new GregorianCalendar(startYear, Calendar.JANUARY, 1);
+            rangeRule.add(start.getTime(), rule);
+        } else {
+            rangeRule.add(rule);
+        }
+        if (endYear != 0) {
+            Date end = new GregorianCalendar(endYear, Calendar.DECEMBER, 31).getTime();
+            rangeRule.add(end, null);
+        }
+
+        setRule(rangeRule);
+    }
+
+    /* Constants for holidays that are common throughout the Western
+     * and Christian worlds.... */
+
+    /**
+     * New Year's Day - January 1st
+     */
+    public static final SimpleHoliday NEW_YEARS_DAY =
+        new SimpleHoliday(Calendar.JANUARY,    1,  "New Year's Day");
+
+    /**
+     * Epiphany, January 6th
+     */
+    public static final SimpleHoliday EPIPHANY =
+        new SimpleHoliday(Calendar.JANUARY,    6,  "Epiphany");
+
+    /**
+     * May Day, May 1st
+     */
+    public static final SimpleHoliday MAY_DAY =
+        new SimpleHoliday(Calendar.MAY,        1,  "May Day");
+
+    /**
+     * Assumption, August 15th
+     */
+    public static final SimpleHoliday ASSUMPTION =
+        new SimpleHoliday(Calendar.AUGUST,    15,  "Assumption");
+
+    /**
+     * All Saints' Day, November 1st
+     */
+    public static final SimpleHoliday ALL_SAINTS_DAY =
+        new SimpleHoliday(Calendar.NOVEMBER,   1,  "All Saints' Day");
+
+    /**
+     * All Souls' Day, November 1st
+     */
+    public static final SimpleHoliday ALL_SOULS_DAY =
+        new SimpleHoliday(Calendar.NOVEMBER,   2,  "All Souls' Day");
+
+    /**
+     * Immaculate Conception, December 8th
+     */
+    public static final SimpleHoliday IMMACULATE_CONCEPTION =
+        new SimpleHoliday(Calendar.DECEMBER,   8,  "Immaculate Conception");
+
+    /**
+     * Christmas Eve, December 24th
+     */
+    public static final SimpleHoliday CHRISTMAS_EVE =
+        new SimpleHoliday(Calendar.DECEMBER,  24,  "Christmas Eve");
+
+    /**
+     * Christmas, December 25th
+     */
+    public static final SimpleHoliday CHRISTMAS =
+        new SimpleHoliday(Calendar.DECEMBER,  25,  "Christmas");
+
+    /**
+     * Boxing Day, December 26th
+     */
+    public static final SimpleHoliday BOXING_DAY =
+        new SimpleHoliday(Calendar.DECEMBER,  26,  "Boxing Day");
+
+    /**
+     * Saint Stephen's Day, December 26th
+     */
+    public static final SimpleHoliday ST_STEPHENS_DAY =
+        new SimpleHoliday(Calendar.DECEMBER,  26,  "St. Stephen's Day");
+
+    /**
+     * New Year's Eve, December 31st
+     */
+    public static final SimpleHoliday NEW_YEARS_EVE =
+        new SimpleHoliday(Calendar.DECEMBER,  31,  "New Year's Eve");
+
+}
diff --git a/src/com/ibm/icu/util/SimpleTimeZone.java b/src/com/ibm/icu/util/SimpleTimeZone.java
new file mode 100755
index 0000000..01e3a8c
--- /dev/null
+++ b/src/com/ibm/icu/util/SimpleTimeZone.java
@@ -0,0 +1,1471 @@
+/*
+*   Copyright (C) 1996-2002, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+package com.ibm.icu.util;
+
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.IOException;
+import java.util.Date;
+
+/**
+ * <code>SimpleTimeZone</code> is a concrete subclass of <code>TimeZone</code>
+ * that represents a time zone for use with a Gregorian calendar. This
+ * class does not handle historical changes.
+ *
+ * <P>
+ * Use a negative value for <code>dayOfWeekInMonth</code> to indicate that
+ * <code>SimpleTimeZone</code> should count from the end of the month backwards.
+ * For example, Daylight Savings Time ends at the last
+ * (dayOfWeekInMonth = -1) Sunday in October, at 2 AM in standard time.
+ *
+ * @see      Calendar
+ * @see      GregorianCalendar
+ * @see      TimeZone
+ * @version  1.38 01/19/00
+ * @author   David Goldsmith, Mark Davis, Chen-Lieh Huang, Alan Liu
+ */
+public class SimpleTimeZone extends TimeZone {
+    /**
+     * Constructs a SimpleTimeZone with the given base time zone offset from GMT
+     * and time zone ID. Timezone IDs can be obtained from
+     * TimeZone.getAvailableIDs. Normally you should use TimeZone.getDefault to
+     * construct a TimeZone.
+     *
+     * @param rawOffset  The given base time zone offset to GMT.
+     * @param ID         The time zone ID which is obtained from
+     *                   TimeZone.getAvailableIDs.
+     */
+    public SimpleTimeZone(int rawOffset, String ID)
+    {
+        this.rawOffset = rawOffset;
+        setID (ID);
+        dstSavings = millisPerHour; // In case user sets rules later
+    }
+
+    /**
+     * Construct a SimpleTimeZone with the given base time zone offset from
+     * GMT, time zone ID, time to start and end the daylight time. Timezone IDs
+     * can be obtained from TimeZone.getAvailableIDs. Normally you should use
+     * TimeZone.getDefault to create a TimeZone. For a time zone that does not
+     * use daylight saving time, do not use this constructor; instead you should
+     * use SimpleTimeZone(rawOffset, ID).
+     *
+     * By default, this constructor specifies day-of-week-in-month rules. That
+     * is, if the startDay is 1, and the startDayOfWeek is SUNDAY, then this
+     * indicates the first Sunday in the startMonth. A startDay of -1 likewise
+     * indicates the last Sunday. However, by using negative or zero values for
+     * certain parameters, other types of rules can be specified.
+     *
+     * Day of month. To specify an exact day of the month, such as March 1, set
+     * startDayOfWeek to zero.
+     *
+     * Day of week after day of month. To specify the first day of the week
+     * occurring on or after an exact day of the month, make the day of the week
+     * negative. For example, if startDay is 5 and startDayOfWeek is -MONDAY,
+     * this indicates the first Monday on or after the 5th day of the
+     * startMonth.
+     *
+     * Day of week before day of month. To specify the last day of the week
+     * occurring on or before an exact day of the month, make the day of the
+     * week and the day of the month negative. For example, if startDay is -21
+     * and startDayOfWeek is -WEDNESDAY, this indicates the last Wednesday on or
+     * before the 21st of the startMonth.
+     *
+     * The above examples refer to the startMonth, startDay, and startDayOfWeek;
+     * the same applies for the endMonth, endDay, and endDayOfWeek.
+     *
+     * @param rawOffset       The given base time zone offset to GMT.
+     * @param ID              The time zone ID which is obtained from
+     *                        TimeZone.getAvailableIDs.
+     * @param startMonth      The daylight savings starting month. Month is
+     *                        0-based. eg, 0 for January.
+     * @param startDay        The daylight savings starting
+     *                        day-of-week-in-month. Please see the member
+     *                        description for an example.
+     * @param startDayOfWeek  The daylight savings starting day-of-week. Please
+     *                        see the member description for an example.
+     * @param startTime       The daylight savings starting time in local wall
+     *                        time, which is standard time in this case. Please see the
+     *                        member description for an example.
+     * @param endMonth        The daylight savings ending month. Month is
+     *                        0-based. eg, 0 for January.
+     * @param endDay          The daylight savings ending day-of-week-in-month.
+     *                        Please see the member description for an example.
+     * @param endDayOfWeek    The daylight savings ending day-of-week. Please
+     *                        see the member description for an example.
+     * @param endTime         The daylight savings ending time in local wall time,
+     *                        which is daylight time in this case. Please see the
+     *                        member description for an example.
+     * @exception IllegalArgumentException the month, day, dayOfWeek, or time
+     * parameters are out of range for the start or end rule
+     * @since JDK1.1
+     */
+    public SimpleTimeZone(int rawOffset, String ID,
+                          int startMonth, int startDay, int startDayOfWeek, int startTime,
+                          int endMonth, int endDay, int endDayOfWeek, int endTime)
+    {
+        this(rawOffset, ID,
+             startMonth, startDay, startDayOfWeek, startTime, WALL_TIME,
+             endMonth, endDay, endDayOfWeek, endTime, WALL_TIME,
+             millisPerHour);
+    }
+
+    /**
+     * Constructor.  This constructor is identical to the 10-argument
+     * constructor, but also takes a dstSavings parameter.
+     * @param dstSavings   The amount of time in ms saved during DST.
+     * @exception IllegalArgumentException the month, day, dayOfWeek, or time
+     * parameters are out of range for the start or end rule
+     * @since 1.2
+     */
+    public SimpleTimeZone(int rawOffset, String ID,
+                          int startMonth, int startDay, int startDayOfWeek, int startTime,
+                          int endMonth, int endDay, int endDayOfWeek, int endTime,
+                          int dstSavings)
+    {
+        this(rawOffset, ID,
+             startMonth, startDay, startDayOfWeek, startTime, WALL_TIME,
+             endMonth, endDay, endDayOfWeek, endTime, WALL_TIME,
+             dstSavings);
+    }
+
+    /**
+     * Constructor.
+     */
+    SimpleTimeZone(int rawOffset, String ID,
+                   int startMonth, int startDay, int startDayOfWeek,
+                   int startTime, int startTimeMode,
+                   int endMonth, int endDay, int endDayOfWeek,
+                   int endTime, int endTimeMode,
+                   int dstSavings) {
+        setID(ID);
+        this.rawOffset      = rawOffset;
+        this.startMonth     = startMonth;
+        this.startDay       = startDay;
+        this.startDayOfWeek = startDayOfWeek;
+        this.startTime      = startTime;
+        this.startTimeMode  = startTimeMode;
+        this.endMonth       = endMonth;
+        this.endDay         = endDay;
+        this.endDayOfWeek   = endDayOfWeek;
+        this.endTime        = endTime;
+        this.endTimeMode    = endTimeMode;
+        this.dstSavings     = dstSavings;
+        // this.useDaylight    = true; // Set by decodeRules
+        decodeRules();
+        if (dstSavings <= 0) {
+            throw new IllegalArgumentException("Illegal DST savings");
+        }
+    }
+
+    /**
+     * Constructor for TimeZoneData.  Takes as input an array and an index
+     * into the array.  The array format is that of TimeZoneData.DATA.
+     */
+    SimpleTimeZone(String ID, int[] data, int i) {
+        setID(ID);
+        rawOffset = data[i+1]*1000;
+        if (data[i] == 0) {
+            dstSavings = millisPerHour; // In case user sets rules later
+        } else {
+            startMonth     = data[i+2];
+            startDay       = data[i+3];
+            startDayOfWeek = data[i+4];
+            startTime      = data[i+5]*60000;
+            startTimeMode  = data[i+6];
+            endMonth       = data[i+7];
+            endDay         = data[i+8];
+            endDayOfWeek   = data[i+9];
+            endTime        = data[i+10]*60000;
+            endTimeMode    = data[i+11];
+            dstSavings     = data[i+12]*60000;
+            decodeRules();
+            if (dstSavings <= 0) {
+                throw new IllegalArgumentException("Illegal DST savings");
+            }
+        }
+    }
+
+    /**
+     * Sets the daylight savings starting year.
+     *
+     * @param year  The daylight savings starting year.
+     */
+    public void setStartYear(int year)
+    {
+        startYear = year;
+    }
+
+    /**
+     * Sets the daylight savings starting rule. For example, Daylight Savings
+     * Time starts at the first Sunday in April, at 2 AM in standard time.
+     * Therefore, you can set the start rule by calling:
+     * setStartRule(TimeFields.APRIL, 1, TimeFields.SUNDAY, 2*60*60*1000);
+     *
+     * @param month             The daylight savings starting month. Month is
+     *                          0-based. eg, 0 for January.
+     * @param dayOfWeekInMonth  The daylight savings starting
+     *                          day-of-week-in-month. Please see the member
+     *                          description for an example.
+     * @param dayOfWeek         The daylight savings starting day-of-week.
+     *                          Please see the member description for an
+     *                          example.
+     * @param time              The daylight savings starting time in local wall
+     *                          time, which is standard time in this case. Please see
+     *                          the member description for an example.
+     * @exception IllegalArgumentException the month, dayOfWeekInMonth,
+     * dayOfWeek, or time parameters are out of range
+     */
+    public void setStartRule(int month, int dayOfWeekInMonth, int dayOfWeek,
+                             int time)
+    {
+        startMonth = month;
+        startDay = dayOfWeekInMonth;
+        startDayOfWeek = dayOfWeek;
+        startTime = time;
+        startTimeMode = WALL_TIME;
+        // useDaylight = true; // Set by decodeRules
+        decodeStartRule();
+    }
+
+    /**
+     * Sets the DST start rule to a fixed date within a month.
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    The date in that month (1-based).
+     * @param time          The time of that day (number of millis after midnight)
+     *                      when DST takes effect in local wall time, which is
+     *                      standard time in this case.
+     * @exception IllegalArgumentException the month,
+     * dayOfMonth, or time parameters are out of range
+     * @since 1.2
+     */
+    public void setStartRule(int month, int dayOfMonth, int time) {
+        setStartRule(month, dayOfMonth, 0, time);
+    }
+
+    /**
+     * Sets the DST start rule to a weekday before or after a give date within
+     * a month, e.g., the first Monday on or after the 8th.
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    A date within that month (1-based).
+     * @param dayOfWeek     The day of the week on which this rule occurs.
+     * @param time          The time of that day (number of millis after midnight)
+     *                      when DST takes effect in local wall time, which is
+     *                      standard time in this case.
+     * @param after         If true, this rule selects the first dayOfWeek on
+     *                      or after dayOfMonth.  If false, this rule selects
+     *                      the last dayOfWeek on or before dayOfMonth.
+     * @exception IllegalArgumentException the month, dayOfMonth,
+     * dayOfWeek, or time parameters are out of range
+     * @since 1.2
+     */
+    public void setStartRule(int month, int dayOfMonth, int dayOfWeek, int time, boolean after)
+    {
+        if (after)
+            setStartRule(month, dayOfMonth, -dayOfWeek, time);
+        else
+            setStartRule(month, -dayOfMonth, -dayOfWeek, time);
+    }
+
+    /**
+     * Sets the daylight savings ending rule. For example, Daylight Savings Time
+     * ends at the last (-1) Sunday in October, at 2 AM in standard time.
+     * Therefore, you can set the end rule by calling:
+     * setEndRule(TimeFields.OCTOBER, -1, TimeFields.SUNDAY, 2*60*60*1000);
+     *
+     * @param month             The daylight savings ending month. Month is
+     *                          0-based. eg, 0 for January.
+     * @param dayOfWeekInMonth  The daylight savings ending
+     *                          day-of-week-in-month. Please see the member
+     *                          description for an example.
+     * @param dayOfWeek         The daylight savings ending day-of-week. Please
+     *                          see the member description for an example.
+     * @param time              The daylight savings ending time in local wall time,
+     *                          which is daylight time in this case. Please see the
+     *                          member description for an example.
+     * @exception IllegalArgumentException the month, dayOfWeekInMonth,
+     * dayOfWeek, or time parameters are out of range
+     */
+    public void setEndRule(int month, int dayOfWeekInMonth, int dayOfWeek,
+                           int time)
+    {
+        endMonth = month;
+        endDay = dayOfWeekInMonth;
+        endDayOfWeek = dayOfWeek;
+        endTime = time;
+        endTimeMode = WALL_TIME;
+        // useDaylight = true; // Set by decodeRules
+        decodeEndRule();
+    }
+
+    /**
+     * Sets the DST end rule to a fixed date within a month.
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    The date in that month (1-based).
+     * @param time          The time of that day (number of millis after midnight)
+     *                      when DST ends in local wall time, which is daylight
+     *                      time in this case.
+     * @exception IllegalArgumentException the month,
+     * dayOfMonth, or time parameters are out of range
+     * @since 1.2
+     */
+    public void setEndRule(int month, int dayOfMonth, int time)
+    {
+        setEndRule(month, dayOfMonth, 0, time);
+    }
+
+    /**
+     * Sets the DST end rule to a weekday before or after a give date within
+     * a month, e.g., the first Monday on or after the 8th.
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    A date within that month (1-based).
+     * @param dayOfWeek     The day of the week on which this rule occurs.
+     * @param time          The time of that day (number of millis after midnight)
+     *                      when DST ends in local wall time, which is daylight
+     *                      time in this case.
+     * @param after         If true, this rule selects the first dayOfWeek on
+     *                      or after dayOfMonth.  If false, this rule selects
+     *                      the last dayOfWeek on or before dayOfMonth.
+     * @exception IllegalArgumentException the month, dayOfMonth,
+     * dayOfWeek, or time parameters are out of range
+     * @since 1.2
+     */
+    public void setEndRule(int month, int dayOfMonth, int dayOfWeek, int time, boolean after)
+    {
+        if (after)
+            setEndRule(month, dayOfMonth, -dayOfWeek, time);
+        else
+            setEndRule(month, -dayOfMonth, -dayOfWeek, time);
+    }
+
+   /**
+     * Returns the difference in milliseconds between local time and
+     * UTC, taking into account both the raw offset and the effect of
+     * daylight savings, for the specified date and time.  This method
+     * assumes that the start and end month are distinct.  It also
+     * uses a default {@link GregorianCalendar} object as its
+     * underlying calendar, such as for determining leap years.  Do
+     * not use the result of this method with a calendar other than a
+     * default <code>GregorianCalendar</code>.
+     *
+     * <p><em>Note:  In general, clients should use
+     * <code>Calendar.get(ZONE_OFFSET) + Calendar.get(DST_OFFSET)</code>
+     * instead of calling this method.</em>
+     *
+     * @param era       The era of the given date.
+     * @param year      The year in the given date.
+     * @param month     The month in the given date. Month is 0-based. e.g.,
+     *                  0 for January.
+     * @param day       The day-in-month of the given date.
+     * @param dayOfWeek The day-of-week of the given date.
+     * @param millis    The milliseconds in day in <em>standard</em> local time.
+     * @return          The milliseconds to add to UTC to get local time.
+     * @exception       IllegalArgumentException the era, month, day,
+     *                  dayOfWeek, or millis parameters are out of range
+     */
+    public int getOffset(int era, int year, int month, int day, int dayOfWeek,
+                         int millis)
+    {
+        // Check the month before indexing into staticMonthLength. This
+	// duplicates the test that occurs in the 7-argument getOffset(),
+	// however, this is unavoidable. We don't mind because this method, in
+	// fact, should not be called; internal code should always call the
+	// 7-argument getOffset(), and outside code should use Calendar.get(int
+	// field) with fields ZONE_OFFSET and DST_OFFSET. We can't get rid of
+	// this method because it's public API. - liu 8/10/98
+        if (month < Calendar.JANUARY
+            || month > Calendar.DECEMBER) {
+            throw new IllegalArgumentException("Illegal month " + month);
+        }
+	int monthLength, prevMonthLength;
+	if ((era == GregorianCalendar.AD) && internalCal.isLeapYear(year)) {
+	    monthLength = staticLeapMonthLength[month];
+	    prevMonthLength = (month > 1) ? staticLeapMonthLength[month - 1] : 31;
+	} else {
+	    monthLength = staticMonthLength[month];
+	    prevMonthLength = (month > 1) ? staticMonthLength[month - 1] : 31;
+	}
+
+        return getOffset(era, year, month, day, dayOfWeek, millis,
+			 monthLength, prevMonthLength);
+    }
+
+    /**
+     * Gets offset, for current date, modified in case of
+     * daylight savings. This is the offset to add <em>to</em> UTC to get local time.
+     * Gets the time zone offset, for current date, modified in case of daylight
+     * savings. This is the offset to add *to* UTC to get local time. Assume
+     * that the start and end month are distinct.
+     * @param era           The era of the given date.
+     * @param year          The year in the given date.
+     * @param month         The month in the given date. Month is 0-based. e.g.,
+     *                      0 for January.
+     * @param day           The day-in-month of the given date.
+     * @param dayOfWeek     The day-of-week of the given date.
+     * @param millis        The milliseconds in day in <em>standard</em> local time.
+     * @param monthLength   The length of the given month in days.
+     * @param prevMonthLength The length of the previous month in days.
+     * @return              The offset to add *to* GMT to get local time.
+     * @exception IllegalArgumentException the era, month, day,
+     * dayOfWeek, millis, or monthLength parameters are out of range
+     */
+    int getOffset(int era, int year, int month, int day, int dayOfWeek,
+                  int millis, int monthLength, int prevMonthLength) {
+        if (false) {
+            /* Use this parameter checking code for normal operation.  Only one
+             * of these two blocks should actually get compiled into the class
+             * file.  */
+            if ((era != GregorianCalendar.AD && era != GregorianCalendar.BC)
+                || month < Calendar.JANUARY
+                || month > Calendar.DECEMBER
+                || day < 1
+                || day > monthLength
+                || dayOfWeek < Calendar.SUNDAY
+                || dayOfWeek > Calendar.SATURDAY
+                || millis < 0
+                || millis >= millisPerDay
+                || monthLength < 28
+                || monthLength > 31
+                || prevMonthLength < 28
+                || prevMonthLength > 31) {
+                throw new IllegalArgumentException();
+            }
+        } else {
+            /* This parameter checking code is better for debugging, but
+             * overkill for normal operation.  Only one of these two blocks
+             * should actually get compiled into the class file.  */
+            if (era != GregorianCalendar.AD && era != GregorianCalendar.BC) {
+                throw new IllegalArgumentException("Illegal era " + era);
+            }
+            if (month < Calendar.JANUARY
+                || month > Calendar.DECEMBER) {
+                throw new IllegalArgumentException("Illegal month " + month);
+            }
+            if (day < 1
+                || day > monthLength) {
+                throw new IllegalArgumentException("Illegal day " + day);
+            }
+            if (dayOfWeek < Calendar.SUNDAY
+                || dayOfWeek > Calendar.SATURDAY) {
+                throw new IllegalArgumentException("Illegal day of week " + dayOfWeek);
+            }
+            if (millis < 0
+                || millis >= millisPerDay) {
+                throw new IllegalArgumentException("Illegal millis " + millis);
+            }
+            if (monthLength < 28
+                || monthLength > 31) {
+                throw new IllegalArgumentException("Illegal month length " + monthLength);
+            }
+            if (prevMonthLength < 28
+                || prevMonthLength > 31) {
+                throw new IllegalArgumentException("Illegal previous month length " + prevMonthLength);
+            }
+        }
+
+        int result = rawOffset;
+
+        // Bail out if we are before the onset of daylight savings time
+        if (!useDaylight || year < startYear || era != GregorianCalendar.AD) return result;
+
+        // Check for southern hemisphere.  We assume that the start and end
+        // month are different.
+        boolean southern = (startMonth > endMonth);
+
+        // Compare the date to the starting and ending rules.+1 = date>rule, -1
+        // = date<rule, 0 = date==rule.
+        int startCompare = compareToRule(month, monthLength, prevMonthLength,
+                                         day, dayOfWeek, millis,
+                                         startTimeMode == UTC_TIME ? -rawOffset : 0,
+                                         startMode, startMonth, startDayOfWeek,
+                                         startDay, startTime);
+        int endCompare = 0;
+
+        /* We don't always have to compute endCompare.  For many instances,
+         * startCompare is enough to determine if we are in DST or not.  In the
+         * northern hemisphere, if we are before the start rule, we can't have
+         * DST.  In the southern hemisphere, if we are after the start rule, we
+         * must have DST.  This is reflected in the way the next if statement
+         * (not the one immediately following) short circuits. */
+        if (southern != (startCompare >= 0)) {
+            /* For the ending rule comparison, we add the dstSavings to the millis
+             * passed in to convert them from standard to wall time.  We then must
+             * normalize the millis to the range 0..millisPerDay-1. */
+            endCompare = compareToRule(month, monthLength, prevMonthLength,
+                                       day, dayOfWeek, millis,
+                                       endTimeMode == WALL_TIME ? dstSavings :
+                                        (endTimeMode == UTC_TIME ? -rawOffset : 0),
+                                       endMode, endMonth, endDayOfWeek,
+                                       endDay, endTime);
+        }
+
+        // Check for both the northern and southern hemisphere cases.  We
+        // assume that in the northern hemisphere, the start rule is before the
+        // end rule within the calendar year, and vice versa for the southern
+        // hemisphere.
+        if ((!southern && (startCompare >= 0 && endCompare < 0)) ||
+            (southern && (startCompare >= 0 || endCompare < 0)))
+            result += dstSavings;
+
+        return result;
+    }
+
+    /**
+     * Compare a given date in the year to a rule. Return 1, 0, or -1, depending
+     * on whether the date is after, equal to, or before the rule date. The
+     * millis are compared directly against the ruleMillis, so any
+     * standard-daylight adjustments must be handled by the caller.
+     *
+     * @return  1 if the date is after the rule date, -1 if the date is before
+     *          the rule date, or 0 if the date is equal to the rule date.
+     */
+    private static int compareToRule(int month, int monthLen, int prevMonthLen,
+                                     int dayOfMonth,
+                                     int dayOfWeek, int millis, int millisDelta,
+                                     int ruleMode, int ruleMonth, int ruleDayOfWeek,
+                                     int ruleDay, int ruleMillis)
+    {
+        // Make adjustments for startTimeMode and endTimeMode
+        millis += millisDelta;
+        while (millis >= millisPerDay) {
+            millis -= millisPerDay;
+            ++dayOfMonth;
+            dayOfWeek = 1 + (dayOfWeek % 7); // dayOfWeek is one-based
+            if (dayOfMonth > monthLen) {
+                dayOfMonth = 1;
+                /* When incrementing the month, it is desirible to overflow
+                 * from DECEMBER to DECEMBER+1, since we use the result to
+                 * compare against a real month. Wraparound of the value
+                 * leads to bug 4173604. */
+                ++month;
+            }
+        }
+        while (millis < 0) {
+            millis += millisPerDay;
+            --dayOfMonth;
+            dayOfWeek = 1 + ((dayOfWeek+5) % 7); // dayOfWeek is one-based
+            if (dayOfMonth < 1) {
+                dayOfMonth = prevMonthLen;
+                --month;
+            }
+        }
+        
+        if (month < ruleMonth) return -1;
+        else if (month > ruleMonth) return 1;
+
+        int ruleDayOfMonth = 0;
+        switch (ruleMode)
+        {
+        case DOM_MODE:
+            ruleDayOfMonth = ruleDay;
+            break;
+        case DOW_IN_MONTH_MODE:
+            // In this case ruleDay is the day-of-week-in-month
+            if (ruleDay > 0)
+                ruleDayOfMonth = 1 + (ruleDay - 1) * 7 +
+                    (7 + ruleDayOfWeek - (dayOfWeek - dayOfMonth + 1)) % 7;
+            else // Assume ruleDay < 0 here
+            {
+                ruleDayOfMonth = monthLen + (ruleDay + 1) * 7 -
+                    (7 + (dayOfWeek + monthLen - dayOfMonth) - ruleDayOfWeek) % 7;
+            }
+            break;
+        case DOW_GE_DOM_MODE:
+            ruleDayOfMonth = ruleDay +
+                (49 + ruleDayOfWeek - ruleDay - dayOfWeek + dayOfMonth) % 7;
+            break;
+        case DOW_LE_DOM_MODE:
+            ruleDayOfMonth = ruleDay -
+                (49 - ruleDayOfWeek + ruleDay + dayOfWeek - dayOfMonth) % 7;
+            // Note at this point ruleDayOfMonth may be <1, although it will
+            // be >=1 for well-formed rules.
+            break;
+        }
+
+        if (dayOfMonth < ruleDayOfMonth) return -1;
+        else if (dayOfMonth > ruleDayOfMonth) return 1;
+
+        if (millis < ruleMillis) return -1;
+        else if (millis > ruleMillis) return 1;
+        else return 0;
+    }
+
+    /**
+     * Overrides TimeZone
+     * Gets the GMT offset for this time zone.
+     */
+    public int getRawOffset()
+    {
+        // The given date will be taken into account while
+        // we have the historical time zone data in place.
+        return rawOffset;
+    }
+
+    /**
+     * Overrides TimeZone
+     * Sets the base time zone offset to GMT.
+     * This is the offset to add *to* UTC to get local time.
+     * Please see TimeZone.setRawOffset for descriptions on the parameter.
+     */
+    public void setRawOffset(int offsetMillis)
+    {
+        this.rawOffset = offsetMillis;
+    }
+
+    /**
+     * Sets the amount of time in ms that the clock is advanced during DST.
+     * @param millisSavedDuringDST the number of milliseconds the time is
+     * advanced with respect to standard time when the daylight savings rules
+     * are in effect. A positive number, typically one hour (3600000).
+     * @since 1.2
+     */
+    public void setDSTSavings(int millisSavedDuringDST) {
+        if (millisSavedDuringDST <= 0) {
+            throw new IllegalArgumentException("Illegal DST savings");
+        }
+        dstSavings = millisSavedDuringDST;
+    }
+
+    /**
+     * Returns the amount of time in ms that the clock is advanced during DST.
+     * @return the number of milliseconds the time is
+     * advanced with respect to standard time when the daylight savings rules
+     * are in effect. A positive number, typically one hour (3600000).
+     * @since 1.2
+     */
+    public int getDSTSavings() {
+        return dstSavings;
+    }
+
+    /**
+     * Overrides TimeZone
+     * Queries if this time zone uses Daylight Savings Time.
+     */
+    public boolean useDaylightTime()
+    {
+        return useDaylight;
+    }
+
+    /**
+     * Overrides TimeZone
+     * Queries if the given date is in Daylight Savings Time.
+     */
+    public boolean inDaylightTime(Date date)
+    {
+        GregorianCalendar gc = new GregorianCalendar(this);
+        gc.setTime(date);
+        return gc.inDaylightTime();
+    }
+
+    /**
+     * Overrides Cloneable
+     */
+    public Object clone()
+    {
+        return super.clone();
+        // other fields are bit-copied
+    }
+
+    /**
+     * Override hashCode.
+     * Generates the hash code for the SimpleDateFormat object
+     */
+    public synchronized int hashCode()
+    {
+        return startMonth ^ startDay ^ startDayOfWeek ^ startTime ^
+            endMonth ^ endDay ^ endDayOfWeek ^ endTime ^ rawOffset;
+    }
+
+    /**
+     * Compares the equality of two SimpleTimeZone objects.
+     *
+     * @param obj  The SimpleTimeZone object to be compared with.
+     * @return     True if the given obj is the same as this SimpleTimeZone
+     *             object; false otherwise.
+     */
+    public boolean equals(Object obj)
+    {
+        if (this == obj)
+            return true;
+        if (!(obj instanceof SimpleTimeZone))
+            return false;
+
+        SimpleTimeZone that = (SimpleTimeZone) obj;
+
+        return getID().equals(that.getID()) &&
+            hasSameRules(that);
+    }
+
+    /**
+     * Return true if this zone has the same rules and offset as another zone.
+     * @param other the TimeZone object to be compared with
+     * @return true if the given zone has the same rules and offset as this one
+     * @since 1.2
+     */
+    public boolean hasSameRules(TimeZone other) {
+        if (this == other) return true;
+        if (!(other instanceof SimpleTimeZone)) return false;
+        SimpleTimeZone that = (SimpleTimeZone) other;
+        return rawOffset == that.rawOffset &&
+            useDaylight == that.useDaylight &&
+            (!useDaylight
+             // Only check rules if using DST
+             || (dstSavings == that.dstSavings &&
+                 startMode == that.startMode &&
+                 startMonth == that.startMonth &&
+                 startDay == that.startDay &&
+                 startDayOfWeek == that.startDayOfWeek &&
+                 startTime == that.startTime &&
+                 startTimeMode == that.startTimeMode &&
+                 endMode == that.endMode &&
+                 endMonth == that.endMonth &&
+                 endDay == that.endDay &&
+                 endDayOfWeek == that.endDayOfWeek &&
+                 endTime == that.endTime &&
+                 endTimeMode == that.endTimeMode &&
+                 startYear == that.startYear));
+    }
+
+    /**
+     * Return a string representation of this time zone.
+     * @return  a string representation of this time zone.
+     */
+    public String toString() {
+        return getClass().getName() +
+            "[id=" + getID() +
+            ",offset=" + rawOffset +
+            ",dstSavings=" + dstSavings +
+            ",useDaylight=" + useDaylight +
+            ",startYear=" + startYear +
+            ",startMode=" + startMode +
+            ",startMonth=" + startMonth +
+            ",startDay=" + startDay +
+            ",startDayOfWeek=" + startDayOfWeek +
+            ",startTime=" + startTime +
+            ",startTimeMode=" + startTimeMode +
+            ",endMode=" + endMode +
+            ",endMonth=" + endMonth +
+            ",endDay=" + endDay +
+            ",endDayOfWeek=" + endDayOfWeek +
+            ",endTime=" + endTime +
+            ",endTimeMode=" + endTimeMode + ']';
+    }
+
+    // =======================privates===============================
+
+    /**
+     * The month in which daylight savings time starts.  This value must be
+     * between <code>Calendar.JANUARY</code> and
+     * <code>Calendar.DECEMBER</code> inclusive.  This value must not equal
+     * <code>endMonth</code>.
+     * <p>If <code>useDaylight</code> is false, this value is ignored.
+     * @serial
+     */
+    private int startMonth;
+
+    /**
+     * This field has two possible interpretations:
+     * <dl>
+     * <dt><code>startMode == DOW_IN_MONTH</code></dt>
+     * <dd>
+     * <code>startDay</code> indicates the day of the month of
+     * <code>startMonth</code> on which daylight
+     * savings time starts, from 1 to 28, 30, or 31, depending on the
+     * <code>startMonth</code>.
+     * </dd>
+     * <dt><code>startMode != DOW_IN_MONTH</code></dt>
+     * <dd>
+     * <code>startDay</code> indicates which <code>startDayOfWeek</code> in th
+     * month <code>startMonth</code> daylight
+     * savings time starts on.  For example, a value of +1 and a
+     * <code>startDayOfWeek</code> of <code>Calendar.SUNDAY</code> indicates the
+     * first Sunday of <code>startMonth</code>.  Likewise, +2 would indicate the
+     * second Sunday, and -1 the last Sunday.  A value of 0 is illegal.
+     * </dd>
+     * </ul>
+     * <p>If <code>useDaylight</code> is false, this value is ignored.
+     * @serial
+     */
+    private int startDay;
+
+    /**
+     * The day of the week on which daylight savings time starts.  This value
+     * must be between <code>Calendar.SUNDAY</code> and
+     * <code>Calendar.SATURDAY</code> inclusive.
+     * <p>If <code>useDaylight</code> is false or
+     * <code>startMode == DAY_OF_MONTH</code>, this value is ignored.
+     * @serial
+     */
+    private int startDayOfWeek;
+
+    /**
+     * The time in milliseconds after midnight at which daylight savings
+     * time starts.  This value is expressed as wall time, standard time,
+     * or UTC time, depending on the setting of <code>startTimeMode</code>.
+     * <p>If <code>useDaylight</code> is false, this value is ignored.
+     * @serial
+     */
+    private int startTime;
+
+    /**
+     * The format of startTime, either WALL_TIME, STANDARD_TIME, or UTC_TIME.
+     * @serial
+     * @since JDK 1.3
+     */
+    private int startTimeMode;
+
+    /**
+     * The month in which daylight savings time ends.  This value must be
+     * between <code>Calendar.JANUARY</code> and
+     * <code>Calendar.UNDECIMBER</code>.  This value must not equal
+     * <code>startMonth</code>.
+     * <p>If <code>useDaylight</code> is false, this value is ignored.
+     * @serial
+     */
+    private int endMonth;
+
+    /**
+     * This field has two possible interpretations:
+     * <dl>
+     * <dt><code>endMode == DOW_IN_MONTH</code></dt>
+     * <dd>
+     * <code>endDay</code> indicates the day of the month of
+     * <code>endMonth</code> on which daylight
+     * savings time ends, from 1 to 28, 30, or 31, depending on the
+     * <code>endMonth</code>.
+     * </dd>
+     * <dt><code>endMode != DOW_IN_MONTH</code></dt>
+     * <dd>
+     * <code>endDay</code> indicates which <code>endDayOfWeek</code> in th
+     * month <code>endMonth</code> daylight
+     * savings time ends on.  For example, a value of +1 and a
+     * <code>endDayOfWeek</code> of <code>Calendar.SUNDAY</code> indicates the
+     * first Sunday of <code>endMonth</code>.  Likewise, +2 would indicate the
+     * second Sunday, and -1 the last Sunday.  A value of 0 is illegal.
+     * </dd>
+     * </ul>
+     * <p>If <code>useDaylight</code> is false, this value is ignored.
+     * @serial
+     */
+    private int endDay;
+
+    /**
+     * The day of the week on which daylight savings time ends.  This value
+     * must be between <code>Calendar.SUNDAY</code> and
+     * <code>Calendar.SATURDAY</code> inclusive.
+     * <p>If <code>useDaylight</code> is false or
+     * <code>endMode == DAY_OF_MONTH</code>, this value is ignored.
+     * @serial
+     */
+    private int endDayOfWeek;
+
+    /**
+     * The time in milliseconds after midnight at which daylight savings
+     * time ends.  This value is expressed as wall time, standard time,
+     * or UTC time, depending on the setting of <code>endTimeMode</code>.
+     * <p>If <code>useDaylight</code> is false, this value is ignored.
+     * @serial
+     */
+    private int endTime;
+
+    /**
+     * The format of endTime, either WALL_TIME, STANDARD_TIME, or UTC_TIME.
+     * @serial
+     * @since JDK 1.3
+     */
+    private int endTimeMode;
+
+    /**
+     * The year in which daylight savings time is first observed.  This is an AD
+     * value.  If this value is less than 1 then daylight savings is observed
+     * for all AD years.
+     * <p>If <code>useDaylight</code> is false, this value is ignored.
+     * @serial
+     */
+    private int startYear;
+
+    /**
+     * The offset in milliseconds between this zone and GMT.  Negative offsets
+     * are to the west of Greenwich.  To obtain local <em>standard</em> time,
+     * add the offset to GMT time.  To obtain local wall time it may also be
+     * necessary to add <code>dstSavings</code>.
+     * @serial
+     */
+    private int rawOffset;
+
+    /**
+     * A boolean value which is true if and only if this zone uses daylight
+     * savings time.  If this value is false, several other fields are ignored.
+     * @serial
+     */
+    private boolean useDaylight=false; // indicate if this time zone uses DST
+
+    private static final int millisPerHour = 60*60*1000;
+    private static final int millisPerDay  = 24*millisPerHour;
+
+    /**
+     * This field was serialized in JDK 1.1, so we have to keep it that way
+     * to maintain serialization compatibility. However, there's no need to
+     * recreate the array each time we create a new time zone.
+     * @serial An array of bytes containing the values {31, 28, 31, 30, 31, 30,
+     * 31, 31, 30, 31, 30, 31}.  This is ignored as of the Java 2 platform v1.2, however, it must
+     * be streamed out for compatibility with JDK 1.1.
+     */
+    private final byte monthLength[] = staticMonthLength;
+    private final static byte staticMonthLength[] = {31,28,31,30,31,30,31,31,30,31,30,31};
+    private final static byte staticLeapMonthLength[] = {31,29,31,30,31,30,31,31,30,31,30,31};
+    // Hack: Use the y/m/d constructor in the following line.
+    // This prevents the infinite recursion that results when
+    // the GC wants to call STZ.getOffset. - liu
+    private static GregorianCalendar internalCal = new GregorianCalendar(0, 0, 0);
+
+    /**
+     * Variables specifying the mode of the start rule.  Takes the following
+     * values:
+     * <dl>
+     * <dt><code>DOM_MODE</code></dt>
+     * <dd>
+     * Exact day of week; e.g., March 1.
+     * </dd>
+     * <dt><code>DOW_IN_MONTH_MODE</code></dt>    
+     * <dd>
+     * Day of week in month; e.g., last Sunday in March.
+     * </dd>
+     * <dt><code>DOW_GE_DOM_MODE</code></dt>
+     * <dd>
+     * Day of week after day of month; e.g., Sunday on or after March 15.
+     * </dd>
+     * <dt><code>DOW_LE_DOM_MODE</code></dt>
+     * <dd>
+     * Day of week before day of month; e.g., Sunday on or before March 15.
+     * </dd>
+     * </dl>
+     * The setting of this field affects the interpretation of the
+     * <code>startDay</code> field.
+     * <p>If <code>useDaylight</code> is false, this value is ignored.
+     * @serial
+     * @since JDK1.1.4
+     */
+    private int startMode;
+
+    /**
+     * Variables specifying the mode of the end rule.  Takes the following
+     * values:
+     * <dl>
+     * <dt><code>DOM_MODE</code></dt>
+     * <dd>
+     * Exact day of week; e.g., March 1.
+     * </dd>
+     * <dt><code>DOW_IN_MONTH_MODE</code></dt>    
+     * <dd>
+     * Day of week in month; e.g., last Sunday in March.
+     * </dd>
+     * <dt><code>DOW_GE_DOM_MODE</code></dt>
+     * <dd>
+     * Day of week after day of month; e.g., Sunday on or after March 15.
+     * </dd>
+     * <dt><code>DOW_LE_DOM_MODE</code></dt>
+     * <dd>
+     * Day of week before day of month; e.g., Sunday on or before March 15.
+     * </dd>
+     * </dl>
+     * The setting of this field affects the interpretation of the
+     * <code>endDay</code> field.
+     * <p>If <code>useDaylight</code> is false, this value is ignored.
+     * @serial
+     * @since JDK1.1.4
+     */
+    private int endMode;
+
+    /**
+     * A positive value indicating the amount of time saved during DST in
+     * milliseconds.
+     * Typically one hour (3600000); sometimes 30 minutes (1800000).
+     * <p>If <code>useDaylight</code> is false, this value is ignored.
+     * @serial
+     * @since JDK1.1.4
+     */
+    private int dstSavings;
+
+    /**
+     * Constants specifying values of startMode and endMode.
+     */
+    private static final int DOM_MODE          = 1; // Exact day of month, "Mar 1"
+    private static final int DOW_IN_MONTH_MODE = 2; // Day of week in month, "lastSun"
+    private static final int DOW_GE_DOM_MODE   = 3; // Day of week after day of month, "Sun>=15"
+    private static final int DOW_LE_DOM_MODE   = 4; // Day of week before day of month, "Sun<=21"
+
+    /**
+     * Constant for a rule specified as wall time.  Wall time is standard time
+     * for the onset rule, and daylight time for the end rule.  Most rules
+     * are specified as wall time.
+     */
+    static final int WALL_TIME = 0; // Zero for backward compatibility
+
+    /**
+     * Constant for a rule specified as standard time.
+     */
+    static final int STANDARD_TIME = 1;
+
+    /**
+     * Constant for a rule specified as UTC.  EU rules are specified as UTC
+     * time.
+     */
+    static final int UTC_TIME = 2;
+
+    // Proclaim compatibility with 1.1
+    static final long serialVersionUID = -403250971215465050L;
+
+    // the internal serial version which says which version was written
+    // - 0 (default) for version up to JDK 1.1.3
+    // - 1 for version from JDK 1.1.4, which includes 3 new fields
+    // - 2 for JDK 1.3, which includes 2 new files
+    static final int currentSerialVersion = 2;
+
+    /**
+     * The version of the serialized data on the stream.  Possible values:
+     * <dl>
+     * <dt><b>0</b> or not present on stream</dt>
+     * <dd>
+     * JDK 1.1.3 or earlier.
+     * </dd>
+     * <dt><b>1</b></dt>
+     * <dd>
+     * JDK 1.1.4 or later.  Includes three new fields: <code>startMode</code>,
+     * <code>endMode</code>, and <code>dstSavings</code>.
+     * </dd>
+     * <dt><b>2</b></dt>
+     * <dd>
+     * JDK 1.3 or later.  Includes two new fields: <code>startTimeMode</code>
+     * and <code>endTimeMode</code>.
+     * </dd>
+     * </dl>
+     * When streaming out this class, the most recent format
+     * and the highest allowable <code>serialVersionOnStream</code>
+     * is written.
+     * @serial
+     * @since JDK1.1.4
+     */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    //----------------------------------------------------------------------
+    // Rule representation
+    //
+    // We represent the following flavors of rules:
+    //       5        the fifth of the month
+    //       lastSun  the last Sunday in the month
+    //       lastMon  the last Monday in the month
+    //       Sun>=8   first Sunday on or after the eighth
+    //       Sun<=25  last Sunday on or before the 25th
+    // This is further complicated by the fact that we need to remain
+    // backward compatible with the 1.1 FCS.  Finally, we need to minimize
+    // API changes.  In order to satisfy these requirements, we support
+    // three representation systems, and we translate between them.
+    //
+    // INTERNAL REPRESENTATION
+    // This is the format SimpleTimeZone objects take after construction or
+    // streaming in is complete.  Rules are represented directly, using an
+    // unencoded format.  We will discuss the start rule only below; the end
+    // rule is analogous.
+    //   startMode      Takes on enumerated values DAY_OF_MONTH,
+    //                  DOW_IN_MONTH, DOW_AFTER_DOM, or DOW_BEFORE_DOM.
+    //   startDay       The day of the month, or for DOW_IN_MONTH mode, a
+    //                  value indicating which DOW, such as +1 for first,
+    //                  +2 for second, -1 for last, etc.
+    //   startDayOfWeek The day of the week.  Ignored for DAY_OF_MONTH.
+    //
+    // ENCODED REPRESENTATION
+    // This is the format accepted by the constructor and by setStartRule()
+    // and setEndRule().  It uses various combinations of positive, negative,
+    // and zero values to encode the different rules.  This representation
+    // allows us to specify all the different rule flavors without altering
+    // the API.
+    //   MODE              startMonth    startDay    startDayOfWeek
+    //   DOW_IN_MONTH_MODE >=0           !=0         >0
+    //   DOM_MODE          >=0           >0          ==0
+    //   DOW_GE_DOM_MODE   >=0           >0          <0
+    //   DOW_LE_DOM_MODE   >=0           <0          <0
+    //   (no DST)          don't care    ==0         don't care
+    //
+    // STREAMED REPRESENTATION
+    // We must retain binary compatibility with the 1.1 FCS.  The 1.1 code only
+    // handles DOW_IN_MONTH_MODE and non-DST mode, the latter indicated by the
+    // flag useDaylight.  When we stream an object out, we translate into an
+    // approximate DOW_IN_MONTH_MODE representation so the object can be parsed
+    // and used by 1.1 code.  Following that, we write out the full
+    // representation separately so that contemporary code can recognize and
+    // parse it.  The full representation is written in a "packed" format,
+    // consisting of a version number, a length, and an array of bytes.  Future
+    // versions of this class may specify different versions.  If they wish to
+    // include additional data, they should do so by storing them after the
+    // packed representation below.
+    //----------------------------------------------------------------------
+
+    /**
+     * Given a set of encoded rules in startDay and startDayOfMonth, decode
+     * them and set the startMode appropriately.  Do the same for endDay and
+     * endDayOfMonth.  Upon entry, the day of week variables may be zero or
+     * negative, in order to indicate special modes.  The day of month
+     * variables may also be negative.  Upon exit, the mode variables will be
+     * set, and the day of week and day of month variables will be positive.
+     * This method also recognizes a startDay or endDay of zero as indicating
+     * no DST.
+     */
+    private void decodeRules()
+    {
+        decodeStartRule();
+        decodeEndRule();
+    }
+
+    /**
+     * Decode the start rule and validate the parameters.  The parameters are
+     * expected to be in encoded form, which represents the various rule modes
+     * by negating or zeroing certain values.  Representation formats are:
+     * <p>
+     * <pre>
+     *            DOW_IN_MONTH  DOM    DOW>=DOM  DOW<=DOM  no DST
+     *            ------------  -----  --------  --------  ----------
+     * month       0..11        same    same      same     don't care
+     * day        -5..5         1..31   1..31    -1..-31   0
+     * dayOfWeek   1..7         0      -1..-7    -1..-7    don't care
+     * time        0..ONEDAY    same    same      same     don't care
+     * </pre>
+     * The range for month does not include UNDECIMBER since this class is
+     * really specific to GregorianCalendar, which does not use that month.
+     * The range for time includes ONEDAY (vs. ending at ONEDAY-1) because the
+     * end rule is an exclusive limit point.  That is, the range of times that
+     * are in DST include those >= the start and < the end.  For this reason,
+     * it should be possible to specify an end of ONEDAY in order to include the
+     * entire day.  Although this is equivalent to time 0 of the following day,
+     * it's not always possible to specify that, for example, on December 31.
+     * While arguably the start range should still be 0..ONEDAY-1, we keep
+     * the start and end ranges the same for consistency.
+     */
+    private void decodeStartRule() {
+        useDaylight = (startDay != 0) && (endDay != 0);
+        if (startDay != 0) {
+            if (startMonth < Calendar.JANUARY || startMonth > Calendar.DECEMBER) {
+                throw new IllegalArgumentException(
+                        "Illegal start month " + startMonth);
+            }
+            if (startTime < 0 || startTime >= millisPerDay) {
+                throw new IllegalArgumentException(
+                        "Illegal start time " + startTime);
+            }
+            if (startDayOfWeek == 0) {
+                startMode = DOM_MODE;
+            } else {
+                if (startDayOfWeek > 0) {
+                    startMode = DOW_IN_MONTH_MODE;
+                } else {
+                    startDayOfWeek = -startDayOfWeek;
+                    if (startDay > 0) {
+                        startMode = DOW_GE_DOM_MODE;
+                    } else {
+                        startDay = -startDay;
+                        startMode = DOW_LE_DOM_MODE;
+                    }
+                }
+                if (startDayOfWeek > Calendar.SATURDAY) {
+                    throw new IllegalArgumentException(
+                           "Illegal start day of week " + startDayOfWeek);
+                }
+            }
+            if (startMode == DOW_IN_MONTH_MODE) {
+                if (startDay < -5 || startDay > 5) {
+                    throw new IllegalArgumentException(
+                            "Illegal start day of week in month " + startDay);
+                }
+            } else if (startDay < 1 || startDay > staticMonthLength[startMonth]) {
+                throw new IllegalArgumentException(
+                        "Illegal start day " + startDay);
+            }
+        }
+    }
+
+    /**
+     * Decode the end rule and validate the parameters.  This method is exactly
+     * analogous to decodeStartRule().
+     * @see decodeStartRule
+     */
+    private void decodeEndRule() {
+        useDaylight = (startDay != 0) && (endDay != 0);
+        if (endDay != 0) {
+            if (endMonth < Calendar.JANUARY || endMonth > Calendar.DECEMBER) {
+                throw new IllegalArgumentException(
+                        "Illegal end month " + endMonth);
+            }
+            if (endTime < 0 || endTime >= millisPerDay) {
+                throw new IllegalArgumentException(
+                        "Illegal end time " + endTime);
+            }
+            if (endDayOfWeek == 0) {
+                endMode = DOM_MODE;
+            } else {
+                if (endDayOfWeek > 0) {
+                    endMode = DOW_IN_MONTH_MODE;
+                } else {
+                    endDayOfWeek = -endDayOfWeek;
+                    if (endDay > 0) {
+                        endMode = DOW_GE_DOM_MODE;
+                    } else {
+                        endDay = -endDay;
+                        endMode = DOW_LE_DOM_MODE;
+                    }
+                }
+                if (endDayOfWeek > Calendar.SATURDAY) {
+                    throw new IllegalArgumentException(
+                           "Illegal end day of week " + endDayOfWeek);
+                }
+            }
+            if (endMode == DOW_IN_MONTH_MODE) {
+                if (endDay < -5 || endDay > 5) {
+                    throw new IllegalArgumentException(
+                            "Illegal end day of week in month " + endDay);
+                }
+            } else if (endDay < 1 || endDay > staticMonthLength[endMonth]) {
+                throw new IllegalArgumentException(
+                        "Illegal end day " + endDay);
+            }
+        }
+    }
+
+    /**
+     * Make rules compatible to 1.1 FCS code.  Since 1.1 FCS code only understands
+     * day-of-week-in-month rules, we must modify other modes of rules to their
+     * approximate equivalent in 1.1 FCS terms.  This method is used when streaming
+     * out objects of this class.  After it is called, the rules will be modified,
+     * with a possible loss of information.  startMode and endMode will NOT be
+     * altered, even though semantically they should be set to DOW_IN_MONTH_MODE,
+     * since the rule modification is only intended to be temporary.
+     */
+    private void makeRulesCompatible()
+    {
+        switch (startMode)
+        {
+        case DOM_MODE:
+            startDay = 1 + (startDay / 7);
+            startDayOfWeek = Calendar.SUNDAY;
+            break;
+        case DOW_GE_DOM_MODE:
+            // A day-of-month of 1 is equivalent to DOW_IN_MONTH_MODE
+            // that is, Sun>=1 == firstSun.
+            if (startDay != 1)
+                startDay = 1 + (startDay / 7);
+            break;
+        case DOW_LE_DOM_MODE:
+            if (startDay >= 30)
+                startDay = -1;
+            else
+                startDay = 1 + (startDay / 7);
+            break;
+        }
+
+        switch (endMode)
+        {
+        case DOM_MODE:
+            endDay = 1 + (endDay / 7);
+            endDayOfWeek = Calendar.SUNDAY;
+            break;
+        case DOW_GE_DOM_MODE:
+            // A day-of-month of 1 is equivalent to DOW_IN_MONTH_MODE
+            // that is, Sun>=1 == firstSun.
+            if (endDay != 1)
+                endDay = 1 + (endDay / 7);
+            break;
+        case DOW_LE_DOM_MODE:
+            if (endDay >= 30)
+                endDay = -1;
+            else
+                endDay = 1 + (endDay / 7);
+            break;
+        }
+
+        /* Adjust the start and end times to wall time.  This works perfectly
+         * well unless it pushes into the next or previous day.  If that
+         * happens, we attempt to adjust the day rule somewhat crudely.  The day
+         * rules have been forced into DOW_IN_MONTH mode already, so we change
+         * the day of week to move forward or back by a day.  It's possible to
+         * make a more refined adjustment of the original rules first, but in
+         * most cases this extra effort will go to waste once we adjust the day
+         * rules anyway. */
+        switch (startTimeMode) {
+        case UTC_TIME:
+            startTime += rawOffset;
+            break;
+        }
+        while (startTime < 0) {
+            startTime += millisPerDay;
+            startDayOfWeek = 1 + ((startDayOfWeek+5) % 7); // Back 1 day
+        }
+        while (startTime >= millisPerDay) {
+            startTime -= millisPerDay;
+            startDayOfWeek = 1 + (startDayOfWeek % 7); // Forward 1 day
+        }
+
+        switch (endTimeMode) {
+        case UTC_TIME:
+            endTime += rawOffset + dstSavings;
+            break;
+        case STANDARD_TIME:
+            endTime += dstSavings;
+        }
+        while (endTime < 0) {
+            endTime += millisPerDay;
+            endDayOfWeek = 1 + ((endDayOfWeek+5) % 7); // Back 1 day
+        }
+        while (endTime >= millisPerDay) {
+            endTime -= millisPerDay;
+            endDayOfWeek = 1 + (endDayOfWeek % 7); // Forward 1 day
+        }
+    }
+
+    /**
+     * Pack the start and end rules into an array of bytes.  Only pack
+     * data which is not preserved by makeRulesCompatible.
+     */
+    private byte[] packRules()
+    {
+        byte[] rules = new byte[6];
+        rules[0] = (byte)startDay;
+        rules[1] = (byte)startDayOfWeek;
+        rules[2] = (byte)endDay;
+        rules[3] = (byte)endDayOfWeek;
+
+        // As of serial version 2, include time modes
+        rules[4] = (byte)startTimeMode;
+        rules[5] = (byte)endTimeMode;
+
+        return rules;
+    }
+
+    /**
+     * Given an array of bytes produced by packRules, interpret them
+     * as the start and end rules.
+     */
+    private void unpackRules(byte[] rules)
+    {
+        startDay       = rules[0];
+        startDayOfWeek = rules[1];
+        endDay         = rules[2];
+        endDayOfWeek   = rules[3];
+
+        // As of serial version 2, include time modes
+        if (rules.length >= 6) {
+            startTimeMode = rules[4];
+            endTimeMode   = rules[5];
+        }
+    }
+
+    /**
+     * Pack the start and end times into an array of bytes.  This is required
+     * as of serial version 2.
+     */
+    private int[] packTimes() {
+        int[] times = new int[2];
+        times[0] = startTime;
+        times[1] = endTime;
+        return times;
+    }
+
+    /**
+     * Unpack the start and end times from an array of bytes.  This is required
+     * as of serial version 2.
+     */
+    private void unpackTimes(int[] times) {
+        startTime = times[0];
+        endTime = times[1];
+    }
+
+    /**
+     * Save the state of this object to a stream (i.e., serialize it).
+     *
+     * @serialData We write out two formats, a JDK 1.1 compatible format, using
+     * <code>DOW_IN_MONTH_MODE</code> rules, in the required section, followed
+     * by the full rules, in packed format, in the optional section.  The
+     * optional section will be ignored by JDK 1.1 code upon stream in.
+     * <p> Contents of the optional section: The length of a byte array is
+     * emitted (int); this is 4 as of this release. The byte array of the given
+     * length is emitted. The contents of the byte array are the true values of
+     * the fields <code>startDay</code>, <code>startDayOfWeek</code>,
+     * <code>endDay</code>, and <code>endDayOfWeek</code>.  The values of these
+     * fields in the required section are approximate values suited to the rule
+     * mode <code>DOW_IN_MONTH_MODE</code>, which is the only mode recognized by
+     * JDK 1.1.
+     */
+    private void writeObject(ObjectOutputStream stream)
+         throws IOException
+    {
+        // Construct a binary rule
+        byte[] rules = packRules();
+        int[] times = packTimes();
+
+        // Convert to 1.1 FCS rules.  This step may cause us to lose information.
+        makeRulesCompatible();
+
+        // Write out the 1.1 FCS rules
+        stream.defaultWriteObject();
+
+        // Write out the binary rules in the optional data area of the stream.
+        stream.writeInt(rules.length);
+        stream.write(rules);
+        stream.writeObject(times);
+
+        // Recover the original rules.  This recovers the information lost
+        // by makeRulesCompatible.
+        unpackRules(rules);
+        unpackTimes(times);
+    }
+
+    /**
+     * Reconstitute this object from a stream (i.e., deserialize it).
+     *
+     * We handle both JDK 1.1
+     * binary formats and full formats with a packed byte array.
+     */
+    private void readObject(ObjectInputStream stream)
+         throws IOException, ClassNotFoundException
+    {
+        stream.defaultReadObject();
+
+        if (serialVersionOnStream < 1)
+        {
+            // Fix a bug in the 1.1 SimpleTimeZone code -- namely,
+            // startDayOfWeek and endDayOfWeek were usually uninitialized.  We can't do
+            // too much, so we assume SUNDAY, which actually works most of the time.
+            if (startDayOfWeek == 0) startDayOfWeek = Calendar.SUNDAY;
+            if (endDayOfWeek == 0) endDayOfWeek = Calendar.SUNDAY;
+
+            // The variables dstSavings, startMode, and endMode are post-1.1, so they
+            // won't be present if we're reading from a 1.1 stream.  Fix them up.
+            startMode = endMode = DOW_IN_MONTH_MODE;
+            dstSavings = millisPerHour;
+        }
+        else
+        {
+            // For 1.1.4, in addition to the 3 new instance variables, we also
+            // store the actual rules (which have not be made compatible with 1.1)
+            // in the optional area.  Read them in here and parse them.
+            int length = stream.readInt();
+            byte[] rules = new byte[length];
+            stream.readFully(rules);
+            unpackRules(rules);
+        }
+
+        if (serialVersionOnStream >= 2) {
+            int[] times = (int[]) stream.readObject();
+            unpackTimes(times);
+        }
+
+        serialVersionOnStream = currentSerialVersion;
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/util/SimpleTimeZoneAdapter.java b/src/com/ibm/icu/util/SimpleTimeZoneAdapter.java
new file mode 100755
index 0000000..3669f0f
--- /dev/null
+++ b/src/com/ibm/icu/util/SimpleTimeZoneAdapter.java
@@ -0,0 +1,157 @@
+/* Copyright (c) 2000 International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/Attic/SimpleTimeZoneAdapter.java,v $ 
+ * $Date: 2002/02/16 03:06:30 $ 
+ * $Revision: 1.2 $
+ */
+package com.ibm.icu.util;
+import java.util.Date;
+
+/**
+ * <code>SimpleTimeZoneAdapter</code> wraps a
+ * com.ibm.icu.util.SimpleTimeZone and inherits from java.util.TimeZone.
+ * Without this class, we would need to 'port' java.util.Date to
+ * com.ibm.icu.util as well, so that Date could interoperate properly with
+ * the com.ibm.icu.util TimeZone and Calendar classes.  With this class,
+ * we can (mostly) use java.util.Date together with com.ibm.icu.util
+ * classes.
+ *
+ * <p>This solution is imperfect because of the faulty design of
+ * java.util.TimeZone.  Specifically, TZ contains a package private
+ * method, getOffset(), that should really be public.  Because it is
+ * package private, it cannot be overridden from where we are, and we
+ * cannot properly delegate its operation to our contained
+ * com.ibm.icu.util.STZ object.
+ *
+ * <p>For the moment we live with this problem.  It appear not to
+ * cause too much trouble since most real computations happen using
+ * the com.ibm.icu.util classes.  However, if this becomes a problem in
+ * the future, we will have to stop using this adapter, and 'port'
+ * java.util.Date into com.ibm.icu.util.
+ *
+ * @see com.ibm.icu.util.TimeZone#setDefault
+ * @author Alan Liu
+ */
+public class SimpleTimeZoneAdapter extends java.util.TimeZone {
+
+    /**
+     * The contained com.ibm.icu.util.SimpleTimeZone object.
+     * We delegate all methods to this object.
+     */
+    private SimpleTimeZone zone;
+
+    public SimpleTimeZoneAdapter(SimpleTimeZone zone) {
+        this.zone = zone;
+    }
+
+    /**
+     * Override TimeZone
+     */
+    public String getID() {
+        return zone.getID();
+    }
+
+    /**
+     * Override TimeZone
+     */
+    public void setID(String ID) {
+        zone.setID(ID);
+    }    
+
+    /**
+     * Override TimeZone
+     */
+    public boolean hasSameRules(java.util.TimeZone other) {
+        return other instanceof SimpleTimeZoneAdapter &&
+            zone.hasSameRules(((SimpleTimeZoneAdapter)other).zone);
+    }
+
+    /**
+     * Override TimeZone
+     */
+    public int getOffset(int era, int year, int month, int day, int dayOfWeek,
+                         int millis) {
+        return zone.getOffset(era, year, month, day, dayOfWeek, millis);
+    }
+
+    // This doesn't work! Because this is a package-private method,
+    // it cannot override the corresponding method in java.util.TZ.
+    // This reflects a fundamental bug in the architecture of
+    // java.util.TZ.  If not for this, this adapter class would
+    // work flawlessly. - liu
+//!    /**
+//!     * Override TimeZone
+//!     */
+//!    int getOffset(int era, int year, int month, int day, int dayOfWeek,
+//!                  int millis, int monthLength, int prevMonthLength) {
+//!        return zone.getOffset(era, year, month, day, dayOfWeek,
+//!                              millis, monthLength, prevMonthLength);
+//!    }
+
+    /**
+     * Overrides TimeZone
+     * Gets the GMT offset for this time zone.
+     */
+    public int getRawOffset() {
+        return zone.getRawOffset();
+    }
+
+    /**
+     * Overrides TimeZone
+     */
+    public void setRawOffset(int offsetMillis) {
+        zone.setRawOffset(offsetMillis);
+    }
+
+    /**
+     * Overrides TimeZone
+     */
+    public boolean useDaylightTime() {
+        return zone.useDaylightTime();
+    }
+
+    /**
+     * Overrides TimeZone
+     */
+    public boolean inDaylightTime(Date date) {
+        return zone.inDaylightTime(date);
+    }
+
+    /**
+     * Overrides Cloneable
+     */
+    public Object clone() {
+        return new SimpleTimeZoneAdapter((SimpleTimeZone)zone.clone());
+    }
+
+    /**
+     * Override hashCode.
+     */
+    public synchronized int hashCode() {
+        return zone.hashCode();
+    }
+
+    /**
+     * Compares the equality of two SimpleTimeZone objects.
+     *
+     * @param obj  The SimpleTimeZone object to be compared with.
+     * @return     True if the given obj is the same as this SimpleTimeZone
+     *             object; false otherwise.
+     */
+    public boolean equals(Object obj) {
+        if (obj instanceof SimpleTimeZoneAdapter) {
+            obj = ((SimpleTimeZoneAdapter)obj).zone;
+        }
+        return zone.equals(obj);
+    }
+
+    /**
+     * Return a string representation of this time zone.
+     * @return  a string representation of this time zone.
+     */
+    public String toString() {
+        // Should probably show our class name here...fix later.
+        return zone.toString();
+    }
+}
diff --git a/src/com/ibm/icu/util/TimeZone.java b/src/com/ibm/icu/util/TimeZone.java
new file mode 100755
index 0000000..3eb1e17
--- /dev/null
+++ b/src/com/ibm/icu/util/TimeZone.java
@@ -0,0 +1,691 @@
+/*
+ * @(#)TimeZone.java	1.51 00/01/19
+ *
+ *
+ *   Copyright (C) 1996-2002, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ */
+
+
+package com.ibm.icu.util;
+import java.io.Serializable;
+import java.lang.ref.SoftReference;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.text.NumberFormat;
+import java.text.ParsePosition;
+import sun.security.action.GetPropertyAction;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.Vector;
+
+/**
+ * <code>TimeZone</code> represents a time zone offset, and also figures out daylight
+ * savings.
+ *
+ * <p>
+ * Typically, you get a <code>TimeZone</code> using <code>getDefault</code>
+ * which creates a <code>TimeZone</code> based on the time zone where the program
+ * is running. For example, for a program running in Japan, <code>getDefault</code>
+ * creates a <code>TimeZone</code> object based on Japanese Standard Time.
+ *
+ * <p>
+ * You can also get a <code>TimeZone</code> using <code>getTimeZone</code>
+ * along with a time zone ID. For instance, the time zone ID for the
+ * U.S. Pacific Time zone is "America/Los_Angeles". So, you can get a
+ * U.S. Pacific Time <code>TimeZone</code> object with:
+ * <blockquote>
+ * <pre>
+ * TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
+ * </pre>
+ * </blockquote>
+ * You can use <code>getAvailableIDs</code> method to iterate through
+ * all the supported time zone IDs. You can then choose a
+ * supported ID to get a <code>TimeZone</code>.
+ * If the time zone you want is not represented by one of the
+ * supported IDs, then you can create a custom time zone ID with
+ * the following syntax:
+ *
+ * <blockquote>
+ * <pre>
+ * GMT[+|-]hh[[:]mm]
+ * </pre>
+ * </blockquote>
+ *
+ * For example, you might specify GMT+14:00 as a custom
+ * time zone ID.  The <code>TimeZone</code> that is returned
+ * when you specify a custom time zone ID does not include
+ * daylight savings time.
+ * <p>
+ * For compatibility with JDK 1.1.x, some other three-letter time zone IDs
+ * (such as "PST", "CTT", "AST") are also supported. However, <strong>their
+ * use is deprecated</strong> because the same abbreviation is often used
+ * for multiple time zones (for example, "CST" could be U.S. "Central Standard
+ * Time" and "China Standard Time"), and the Java platform can then only
+ * recognize one of them.
+ *
+ *
+ * @see          Calendar
+ * @see          GregorianCalendar
+ * @see          SimpleTimeZone
+ * @version      1.51 01/19/00
+ * @author       Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu
+ * @since        JDK1.1
+ */
+abstract public class TimeZone implements Serializable, Cloneable {
+    /**
+     * Sole constructor.  (For invocation by subclass constructors, typically
+     * implicit.)
+     */
+    public TimeZone() {
+    }
+
+    /**
+     * A style specifier for <code>getDisplayName()</code> indicating
+     * a short name, such as "PST."
+     * @see #LONG
+     * @since 1.2
+     */
+    public static final int SHORT = 0;
+
+    /**
+     * A style specifier for <code>getDisplayName()</code> indicating
+     * a long name, such as "Pacific Standard Time."
+     * @see #SHORT
+     * @since 1.2
+     */
+    public static final int LONG  = 1;
+
+    // Constants used internally; unit is milliseconds
+    private static final int ONE_MINUTE = 60*1000;
+    private static final int ONE_HOUR   = 60*ONE_MINUTE;
+    private static final int ONE_DAY    = 24*ONE_HOUR;
+
+    /**
+     * Cache to hold the SimpleDateFormat objects for a Locale.
+     */
+    private static Hashtable cachedLocaleData = new Hashtable(3);
+
+    // Proclaim serialization compatibility with JDK 1.1
+    static final long serialVersionUID = 3581463369166924961L;
+
+    /**
+     * Gets the time zone offset, for current date, modified in case of
+     * daylight savings. This is the offset to add *to* UTC to get local time.
+     * @param era the era of the given date.
+     * @param year the year in the given date.
+     * @param month the month in the given date.
+     * Month is 0-based. e.g., 0 for January.
+     * @param day the day-in-month of the given date.
+     * @param dayOfWeek the day-of-week of the given date.
+     * @param milliseconds the millis in day in <em>standard</em> local time.
+     * @return the offset to add *to* GMT to get local time.
+     */
+    abstract public int getOffset(int era, int year, int month, int day,
+                                  int dayOfWeek, int milliseconds);
+
+    /**
+     * Gets the time zone offset, for current date, modified in case of
+     * daylight savings. This is the offset to add *to* UTC to get local time.
+     * @param era the era of the given date.
+     * @param year the year in the given date.
+     * @param month the month in the given date.
+     * Month is 0-based. e.g., 0 for January.
+     * @param day the day-in-month of the given date.
+     * @param dayOfWeek the day-of-week of the given date.
+     * @param milliseconds the millis in day in <em>standard</em> local time.
+     * @param monthLength the length of the given month in days.
+     * @param prevMonthLength the length of the previous month in days.
+     * @return the offset to add *to* GMT to get local time.
+     */
+    int getOffset(int era, int year, int month, int day,
+		  int dayOfWeek, int milliseconds, int monthLength, int prevMonthLength) {
+	// Default implementation which ignores the monthLength.
+	// SimpleTimeZone overrides this and actually uses monthLength.
+	return getOffset(era, year, month, day, dayOfWeek, milliseconds);
+    }
+    
+    /**
+     * NEWCAL
+     * Gets the local time zone offset for this zone, for the given date.
+     * @param eyear the extended Gregorian year, with 0 = 1 BC, -1 = 2 BC,
+     * etc.
+     */
+    int getOffset(int eyear, int month, int dayOfMonth, int dayOfWeek,
+                  int milliseconds, int monthLength, int prevMonthLength) {
+        // TEMPORARY: Convert the eyear to an era/year and call old API
+        int era = GregorianCalendar.AD;
+        if (eyear < 1) {
+            era = GregorianCalendar.BC;
+            eyear = 1 - eyear;
+        }
+        return getOffset(era, eyear, month, dayOfMonth, dayOfWeek,
+                         milliseconds, monthLength, prevMonthLength);
+    }
+
+    /**
+     * Sets the base time zone offset to GMT.
+     * This is the offset to add *to* UTC to get local time.
+     * @param offsetMillis the given base time zone offset to GMT.
+     */
+    abstract public void setRawOffset(int offsetMillis);
+
+    /**
+     * Gets unmodified offset, NOT modified in case of daylight savings.
+     * This is the offset to add *to* UTC to get local time.
+     * @return the unmodified offset to add *to* UTC to get local time.
+     */
+    abstract public int getRawOffset();
+
+    /**
+     * Gets the ID of this time zone.
+     * @return the ID of this time zone.
+     */
+    public String getID()
+    {
+        return ID;
+    }
+
+    /**
+     * Sets the time zone ID. This does not change any other data in
+     * the time zone object.
+     * @param ID the new time zone ID.
+     */
+    public void setID(String ID)
+    {
+        if (ID == null) {
+            throw new NullPointerException();
+        }
+        this.ID = ID;
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the default locale.
+     * This method returns the long name, not including daylight savings.
+     * If the display name is not available for the locale,
+     * then this method returns a string in the format
+     * <code>GMT[+-]hh:mm</code>.
+     * @return the human-readable name of this time zone in the default locale.
+     * @since 1.2
+     */
+    public final String getDisplayName() {
+        return getDisplayName(false, LONG, Locale.getDefault());
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * This method returns the long name, not including daylight savings.
+     * If the display name is not available for the locale,
+     * then this method returns a string in the format
+     * <code>GMT[+-]hh:mm</code>.
+     * @param locale the locale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default locale if the given locale is not recognized.
+     * @since 1.2
+     */
+    public final String getDisplayName(Locale locale) {
+        return getDisplayName(false, LONG, locale);
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the default locale.
+     * If the display name is not available for the locale,
+     * then this method returns a string in the format
+     * <code>GMT[+-]hh:mm</code>.
+     * @param daylight if true, return the daylight savings name.
+     * @param style either <code>LONG</code> or <code>SHORT</code>
+     * @return the human-readable name of this time zone in the default locale.
+     * @since 1.2
+     */
+    public final String getDisplayName(boolean daylight, int style) {
+        return getDisplayName(daylight, style, Locale.getDefault());
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * If the display name is not available for the locale,
+     * then this method returns a string in the format
+     * <code>GMT[+-]hh:mm</code>.
+     * @param daylight if true, return the daylight savings name.
+     * @param style either <code>LONG</code> or <code>SHORT</code>
+     * @param locale the locale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default locale if the given locale is not recognized.
+     * @exception IllegalArgumentException style is invalid.
+     * @since 1.2
+     */
+    public String getDisplayName(boolean daylight, int style, Locale locale) {
+        /* NOTES:
+         * (1) We use SimpleDateFormat for simplicity; we could do this
+         * more efficiently but it would duplicate the SimpleDateFormat code
+         * here, which is undesirable.
+         * (2) Attempts to move the code from SimpleDateFormat to here also run
+         * aground because this requires SimpleDateFormat to keep a Locale
+         * object around, which it currently doesn't; to synthesize such a
+         * locale upon resurrection; and to somehow handle the special case of
+         * construction from a DateFormatSymbols object.
+         */
+        if (style != SHORT && style != LONG) {
+            throw new IllegalArgumentException("Illegal style: " + style);
+        }
+        // We keep a cache, indexed by locale.  The cache contains a
+        // SimpleDateFormat object, which we create on demand.
+        SoftReference data = (SoftReference)cachedLocaleData.get(locale);
+        SimpleDateFormat format;
+        if (data == null ||
+            (format = (SimpleDateFormat)data.get()) == null) {
+            format = new SimpleDateFormat(null, locale);
+            cachedLocaleData.put(locale, new SoftReference(format));
+        }
+        // Create a new SimpleTimeZone as a stand-in for this zone; the stand-in
+        // will have no DST, or DST during January, but the same ID and offset,
+        // and hence the same display name.  We don't cache these because
+        // they're small and cheap to create.
+        SimpleTimeZone tz;
+        if (daylight && useDaylightTime()) {
+            int savings = ONE_HOUR;
+            try {
+                savings = ((SimpleTimeZone) this).getDSTSavings();
+            } catch (ClassCastException e) {}
+            tz = new SimpleTimeZone(getRawOffset(), getID(),
+                                    Calendar.JANUARY, 1, 0, 0,
+                                    Calendar.FEBRUARY, 1, 0, 0,
+                                    savings);
+        } else {
+            tz = new SimpleTimeZone(getRawOffset(), getID());
+        }
+        format.applyPattern(style == LONG ? "zzzz" : "z");      
+        format.setTimeZone(tz);
+        // Format a date in January.  We use the value 10*ONE_DAY == Jan 11 1970
+        // 0:00 GMT.
+        return format.format(new Date(864000000L));
+    }
+
+    /**
+     * Queries if this time zone uses daylight savings time.
+     * @return true if this time zone uses daylight savings time,
+     * false, otherwise.
+     */
+    abstract public boolean useDaylightTime();
+
+    /**
+     * Queries if the given date is in daylight savings time in
+     * this time zone.
+     * @param date the given Date.
+     * @return true if the given date is in daylight savings time,
+     * false, otherwise.
+     */
+    abstract public boolean inDaylightTime(Date date);
+
+    /**
+     * Gets the <code>TimeZone</code> for the given ID.
+     *
+     * @param ID the ID for a <code>TimeZone</code>, either an abbreviation
+     * such as "PST", a full name such as "America/Los_Angeles", or a custom
+     * ID such as "GMT-8:00". Note that the support of abbreviations is
+     * for JDK 1.1.x compatibility only and full names should be used.
+     *
+     * @return the specified <code>TimeZone</code>, or the GMT zone if the given ID
+     * cannot be understood.
+     */
+    public static synchronized TimeZone getTimeZone(String ID) {
+        /* We first try to lookup the zone ID in our hashtable.  If this fails,
+         * we try to parse it as a custom string GMT[+-]hh:mm.  This allows us
+         * to recognize zones in user.timezone that otherwise cannot be
+         * identified.  We do the recognition here, rather than in getDefault(),
+         * so that the default zone is always the result of calling
+         * getTimeZone() with the property user.timezone.
+         *
+         * If all else fails, we return GMT, which is probably not what the user
+         * wants, but at least is a functioning TimeZone object. */
+        TimeZone zone = TimeZoneData.get(ID);
+        if (zone == null) zone = parseCustomTimeZone(ID);
+        if (zone == null) zone = (TimeZone)GMT.clone();
+        return zone;
+    }
+
+    /**
+     * Return a new String array containing all system TimeZone IDs
+     * with the given raw offset from GMT.  These IDs may be passed to
+     * <code>get()</code> to construct the corresponding TimeZone
+     * object.
+     * @param rawOffset the offset in milliseconds from GMT
+     * @return an array of IDs for system TimeZones with the given
+     * raw offset.  If there are none, return a zero-length array.
+     */
+    public static String[] getAvailableIDs(int rawOffset) {
+        return TimeZoneData.getAvailableIDs(rawOffset);
+    }
+
+    /**
+     * Return a new String array containing all system TimeZone IDs
+     * associated with the given country.  These IDs may be passed to
+     * <code>get()</code> to construct the corresponding TimeZone
+     * object.
+     * @param a two-letter ISO 3166 country code, or <code>null</code>
+     * to return zones not associated with any country
+     * @return an array of IDs for system TimeZones in the given
+     * country.  If there are none, return a zero-length array.
+     */
+    public static String[] getAvailableIDs(String country) {
+        return TimeZoneData.getAvailableIDs(country);
+    }
+
+    /**
+     * Return a new String array containing all system TimeZone IDs.
+     * These IDs (and only these IDs) may be passed to
+     * <code>get()</code> to construct the corresponding TimeZone
+     * object.
+     * @return an array of all system TimeZone IDs
+     */
+    public static String[] getAvailableIDs() {
+        return TimeZoneData.getAvailableIDs();
+    }
+    
+    /**
+     * Returns the number of IDs in the equivalency group that
+     * includes the given ID.  An equivalency group contains zones
+     * that have the same GMT offset and rules.
+     *
+     * <p>The returned count includes the given ID; it is always >= 1
+     * for valid IDs.  The given ID must be a system time zone.  If it
+     * is not, returns zero.
+     * @param id a system time zone ID
+     * @return the number of zones in the equivalency group containing
+     * 'id', or zero if 'id' is not a valid system ID
+     * @see #getEquivalentID
+     */
+    public static int countEquivalentIDs(String id) {
+        return TimeZoneData.countEquivalentIDs(id);
+    }
+
+    /**
+     * Returns an ID in the equivalency group that
+     * includes the given ID.  An equivalency group contains zones
+     * that have the same GMT offset and rules.
+     *
+     * <p>The given index must be in the range 0..n-1, where n is the
+     * value returned by <code>countEquivalentIDs(id)</code>.  For
+     * some value of 'index', the returned value will be equal to the
+     * given id.  If the given id is not a valid system time zone, or
+     * if 'index' is out of range, then returns an empty string.
+     * @param id a system time zone ID
+     * @param index a value from 0 to n-1, where n is the value
+     * returned by <code>countEquivalentIDs(id)</code>
+     * @return the ID of the index-th zone in the equivalency group
+     * containing 'id', or an empty string if 'id' is not a valid
+     * system ID or 'index' is out of range
+     * @see #countEquivalentIDs
+     */
+    public static String getEquivalentID(String id, int index) {
+        return TimeZoneData.getEquivalentID(id, index);
+    }
+
+    /**
+     * Gets the platform defined TimeZone ID.
+     **/
+//    private static native String getSystemTimeZoneID(String javaHome, 
+//						     String region);
+
+    /**
+     * Gets the default <code>TimeZone</code> for this host.
+     * The source of the default <code>TimeZone</code> 
+     * may vary with implementation.
+     * @return a default <code>TimeZone</code>.
+     */
+    public static synchronized TimeZone getDefault() {
+        if (defaultZone == null) {
+            // The following causes an AccessControlException when run in an
+            // applet.  To get around this, we don't read the user.timezone
+            // property; instead we defer to TimeZone.getDefault(). - Liu
+            //!// get the time zone ID from the system properties
+            //!String zoneID = (String) AccessController.doPrivileged(
+            //!    new GetPropertyAction("user.timezone"));
+            //!
+	    //!// if the time zone ID is not set (yet), perform the
+	    //!// platform to Java time zone ID mapping.
+	    //!if (zoneID == null || zoneID.equals("")) { 
+		//String region = (String) AccessController.doPrivileged(
+		//    new GetPropertyAction("user.region"));
+		//String javaHome = (String) AccessController.doPrivileged(
+		//    new GetPropertyAction("java.home"));
+		//zoneID = getSystemTimeZoneID(javaHome, region);
+
+                // [icu4j We get the default zone by querying java.util.TimeZone,
+                //        and then attempting to map the ID. - liu ]
+                java.util.TimeZone _default = java.util.TimeZone.getDefault();
+                if (false) System.out.println("java.util.TZ.default " + _default);
+                String zoneID = _default.getID();
+                defaultZone = TimeZoneData.get(zoneID);
+                if (defaultZone == null) {
+                    // [icu4j This means that the zone returned by the JDK does
+                    // not exist in our table.  We will, for the moment, map to
+                    // a std zone that has the same raw offset.  In the future
+                    // we might find it worthwhile to extract the rules from the
+                    // system default zone, but this is too much trouble for
+                    // now.  It will be easier to extend our mapping table to
+                    // match the JDKs we want to support. - liu ]
+                    try {
+                        java.util.SimpleTimeZone s = (java.util.SimpleTimeZone) _default;
+                        defaultZone = new SimpleTimeZone(s.getRawOffset(), s.getID());
+                    } catch (ClassCastException e) {}
+                } else {
+                    if (zoneID == null) {
+                        zoneID = GMT_ID;
+                    }
+                    // Again, we can't do this from outside the JDK in an applet.
+                    //!final String id = zoneID;
+                    //!AccessController.doPrivileged(new PrivilegedAction() {
+                    //!    public Object run() {
+                    //!        System.setProperty("user.timezone", id);
+                    //!        return null;
+                    //!    }
+                    //!});
+                }
+            //!}
+            if (defaultZone == null) {
+                defaultZone = getTimeZone(zoneID);
+            }
+            if (false) System.out.println("com.ibm.icu.util.TZ.default " + defaultZone);
+        }
+        return (TimeZone)defaultZone.clone();
+    }
+
+    /**
+     * Sets the <code>TimeZone</code> that is
+     * returned by the <code>getDefault</code> method.  If <code>zone</code>
+     * is null, reset the default to the value it had originally when the
+     * VM first started.
+     * @param zone the new default time zone
+     */
+    public static synchronized void setDefault(TimeZone zone)
+    {
+        defaultZone = zone;
+        // [icu4j Keep java.util.TimeZone default in sync so java.util.Date
+        //        can interoperate with com.ibm.icu.util classes.  This solution
+        //        is _imperfect_; see SimpleTimeZoneAdapter. - liu]
+        try {
+            java.util.TimeZone.setDefault(
+                new SimpleTimeZoneAdapter((SimpleTimeZone) zone));
+        } catch (ClassCastException e) {}
+    }
+
+    /**
+     * Returns true if this zone has the same rule and offset as another zone.
+     * That is, if this zone differs only in ID, if at all.  Returns false
+     * if the other zone is null.
+     * @param other the <code>TimeZone</code> object to be compared with
+     * @return true if the other zone is not null and is the same as this one,
+     * with the possible exception of the ID
+     * @since 1.2
+     */
+    public boolean hasSameRules(TimeZone other) {
+        return other != null && getRawOffset() == other.getRawOffset() &&
+            useDaylightTime() == other.useDaylightTime();
+    }
+
+    /**
+     * Overrides Cloneable
+     */
+    public Object clone()
+    {
+        try {
+            TimeZone other = (TimeZone) super.clone();
+            other.ID = ID;
+            return other;
+        } catch (CloneNotSupportedException e) {
+            throw new InternalError();
+        }
+    }
+
+    // =======================privates===============================
+
+    /**
+     * The string identifier of this <code>TimeZone</code>.  This is a
+     * programmatic identifier used internally to look up <code>TimeZone</code>
+     * objects from the system table and also to map them to their localized
+     * display names.  <code>ID</code> values are unique in the system
+     * table but may not be for dynamically created zones.
+     * @serial
+     */
+    private String           ID;
+    private static TimeZone  defaultZone = null;
+
+    static final String         GMT_ID        = "GMT";
+    private static final int    GMT_ID_LENGTH = 3;
+    private static final String CUSTOM_ID     = "Custom";
+
+    private static NumberFormat numberFormat = null;
+
+    private static final TimeZone GMT = new SimpleTimeZone(0, GMT_ID);
+
+    /**
+     * Parse a custom time zone identifier and return a corresponding zone.
+     * @param id a string of the form GMT[+-]hh:mm, GMT[+-]hhmm, or
+     * GMT[+-]hh.
+     * @return a newly created SimpleTimeZone with the given offset and
+     * no daylight savings time, or null if the id cannot be parsed.
+     */
+    private static final SimpleTimeZone parseCustomTimeZone(String id) {
+        if (id.length() > GMT_ID_LENGTH &&
+            id.regionMatches(true, 0, GMT_ID, 0, GMT_ID_LENGTH)) {
+            ParsePosition pos = new ParsePosition(GMT_ID_LENGTH);
+            boolean negative = false;
+            int offset;
+
+            if (id.charAt(pos.getIndex()) == '-')
+                negative = true;
+            else if (id.charAt(pos.getIndex()) != '+')
+                return null;
+            pos.setIndex(pos.getIndex() + 1);
+
+            // Create NumberFormat if necessary
+            synchronized (TimeZone.class) {
+                if (numberFormat == null) {
+                    numberFormat = NumberFormat.getInstance();
+                    numberFormat.setParseIntegerOnly(true);
+                }
+            }
+
+            synchronized (numberFormat) {
+                // Look for either hh:mm, hhmm, or hh
+                int start = pos.getIndex();
+                Number n = numberFormat.parse(id, pos);
+                if (n == null) return null;
+                offset = n.intValue();
+
+                if (pos.getIndex() < id.length() &&
+                    id.charAt(pos.getIndex()) == ':') {
+                    // hh:mm
+                    offset *= 60;
+                    pos.setIndex(pos.getIndex() + 1);
+                    n = numberFormat.parse(id, pos);
+                    if (n == null) return null;
+                    offset += n.intValue();
+                }
+                else {
+                    // hhmm or hh
+
+                    // Be strict about interpreting something as hh; it must be
+                    // an offset < 30, and it must be one or two digits. Thus
+                    // 0010 is interpreted as 00:10, but 10 is interpreted as
+                    // 10:00.
+                    if (offset < 30 && (pos.getIndex() - start) <= 2)
+                        offset *= 60; // hh, from 00 to 29; 30 is 00:30
+                    else
+                        offset = offset % 100 + offset / 100 * 60; // hhmm
+                }
+
+                if (negative) offset = -offset;
+                return new SimpleTimeZone(offset * 60000, CUSTOM_ID);
+            }
+        }
+
+        return null;
+    }
+
+    // Internal Implementation Notes [LIU]
+    //
+    // TimeZone data is stored in two parts.  The first is an encoding of the
+    // rules for each TimeZone.  A TimeZone rule includes the offset of a zone
+    // in milliseconds from GMT, the starting month and day for daylight savings
+    // time, if there is any, and the ending month and day for daylight savings
+    // time.  The starting and ending days are specified in terms of the n-th
+    // day of the week, for instance, the first Sunday or the last ("-1"-th)
+    // Sunday of the month.  The rules are stored as statically-constructed
+    // SimpleTimeZone objects in the TimeZone class.
+    //
+    // Each rule has a unique internal identifier string which is used to
+    // specify it.  This identifier string is arbitrary, and is not to be shown
+    // to the user -- it is for programmatic use only.  In order to instantiate
+    // a TimeZone object, you pass its identifier string to
+    // TimeZone.getTimeZone().  (This identifier is also used to index the
+    // localized string data.)
+    //
+    // The second part of the data consists of localized string names used by
+    // DateFormat to describe various TimeZones.  A TimeZone may have up to four
+    // names: The abbreviated and long name for standard time in that zone, and
+    // the abbreviated and long name for daylight savings time in that zone.
+    // The data also includes a representative city.  For example, [ "PST",
+    // "Pacific Standard Time", "PDT", "Pacific Daylight Time", "Los Angeles" ]
+    // might be one such set of string names in the en_US locale.  These strings
+    // are intended to be shown to the user.  The string data is indexed in the
+    // system by a pair (String id, Locale locale).  The id is the unique string
+    // identifier for the rule for the given TimeZone (as passed to
+    // TimeZone.getTimeZone()).  String names are stored as localized resource
+    // data (in jdk 1.2 and 1.3) of the class LocaleData???  where ??? is
+    // the Locale specifier (e.g., DateFormatZoneData_en_US).  This data is a
+    // two-dimensional array of strings with N rows and 6 columns.  The columns
+    // are id, short standard name, long standard name, short daylight name,
+    // long daylight name, representative city name.
+    //
+    // The mapping between rules (SimpleTimeZone objects) and localized string
+    // names (DateFormatZoneData objects) is one-to-many.  That is, there will
+    // sometimes be more than one localized string name sets associated with
+    // each rule.
+    //
+    // Each locale can potentially have localized name data for all time zones.
+    // Since we support approximately 90 time zones and approximately 50
+    // locales, there can be over 4500 sets of localized names.  In practice,
+    // only a fraction of these names are provided.  If a time zone needs to be
+    // displayed to the user in a given locale, and there is no string data in
+    // that locale for that time zone, then the default representation will be
+    // shown.  This is a string of the form GMT+HHMM or GMT-HHMM, where HHMM
+    // represents the offset in hours and minutes with respect to GMT.  This
+    // format is used because it is recognized in all locales.  In order to make
+    // this mechanism to work, the root resource data (in the class
+    // DateFormatZoneData) is left empty.
+    //
+    // The current default TimeZone is determined via the system property
+    // user.timezone.  This is set by the platform-dependent native code to
+    // a three-letter abbreviation.  We interpret these into our own internal
+    // IDs using a lookup table.
+}
+
+//eof
diff --git a/src/com/ibm/icu/util/TimeZoneData.java b/src/com/ibm/icu/util/TimeZoneData.java
new file mode 100755
index 0000000..c868aa6
--- /dev/null
+++ b/src/com/ibm/icu/util/TimeZoneData.java
@@ -0,0 +1,1212 @@
+/*********************************************************************
+ * Copyright (C) 2001, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *********************************************************************
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/Attic/TimeZoneData.java,v $
+ * $Date: 2002/02/25 22:43:59 $
+ * $Revision: 1.6 $
+ */
+package com.ibm.icu.util;
+import java.util.Hashtable;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * Internal class that encapsulates data about the system time zones.
+ * This includes the names of all zones, their raw offsets, their
+ * rules (for zones observing DST), and index tables that group
+ * together zones with the same raw offset, as well as zones that are
+ * equivalent (same raw offset and rules).
+ * 
+ * <p>This class contains two parts: A narrow API for instantiating
+ * the system zone objects and for obtaining metainformation
+ * (available zone lists and equivalency group lists), and blocks of
+ * compressed data that take the form of static strings or string
+ * arrays.  The compressed data is generated source code that cannot
+ * be hand edited.  It is derived from the standard UNIX zone data at
+ * ftp://elsie.nci.nih.gov/pub and is processed by the tool gentz
+ * located at icu/source/tools/gentz.  When the UNIX zone data
+ * changes, the gentz tool must be run to generate the new data and
+ * the compressed data blocks in this file and the new blocks must be
+ * pasted in.  For step-by-step instructions, see
+ * icu/source/tools/gentz/readme.txt.
+ *
+ * @author Alan Liu
+ */
+class TimeZoneData {
+
+    /**
+     * Construct and return the given system TimeZone, or return null if
+     * the given ID does not refer to a system TimeZone.
+     */
+    public static TimeZone get(String ID) {
+        int i = lookup(ID);
+        return (i<0) ? null : new SimpleTimeZone(ID, DATA, i);
+    }
+
+    /**
+     * Return a new String array containing all system TimeZone IDs.
+     * These IDs (and only these IDs) may be passed to
+     * <code>get()</code> to construct the corresponding TimeZone
+     * object.
+     * @return an array of all system TimeZone IDs
+     */
+    public static String[] getAvailableIDs() {
+        String[] result = new String[IDS.length];
+        System.arraycopy(IDS, 0, result, 0, IDS.length);
+        return result;
+    }
+
+    /**
+     * Return a new String array containing all system TimeZone IDs
+     * with the given raw offset from GMT.  These IDs may be passed to
+     * <code>get()</code> to construct the corresponding TimeZone
+     * object.
+     * @param rawOffset the offset in milliseconds from GMT
+     * @return an array of IDs for system TimeZones with the given
+     * raw offset.  If there are none, return a zero-length array.
+     */
+    public static String[] getAvailableIDs(int rawOffset) {
+        // Do a linear search; there are < 200 entries
+        for (int i=0; i<INDEX_BY_OFFSET.length;) {
+            int offset = INDEX_BY_OFFSET[i] * 1000;
+            if (offset > rawOffset) {
+                break;
+            }
+            if (offset == rawOffset) {
+                // Found our desired offset
+                int n = INDEX_BY_OFFSET[i+2];
+                String[] result = new String[n];
+                for (int j=0; j<n; ++j) {
+                    result[j] = IDS[INDEX_BY_OFFSET[i+3+j]];
+                }
+                return result;
+            }
+            // Advance to the next entry
+            i += INDEX_BY_OFFSET[i+2] + 3;
+        }
+        // Failed to find any; return empty array
+        return new String[0];
+    }
+ 
+    /**
+     * Return a new String array containing all system TimeZone IDs
+     * associated with the given country.  These IDs may be passed to
+     * <code>get()</code> to construct the corresponding TimeZone
+     * object.
+     * @param a two-letter ISO 3166 country code, or <code>null</code>
+     * to return zones not associated with any country
+     * @return an array of IDs for system TimeZones with the given
+     * raw offset.  If there are none, return a zero-length array.
+     */
+    public static String[] getAvailableIDs(String countryCode) {
+        // Construct our key; this is an integer of the form
+        // 32*n1 + n0, where 0<=n<=25.
+        int countryHash = 0;
+        if (countryCode != null) {
+            countryHash =
+                ((Character.toUpperCase(countryCode.charAt(0)) - 'A') << 5) |
+                (Character.toUpperCase(countryCode.charAt(1)) - 'A');
+        }
+
+        // Do a linear search; there are ~ 250 entries
+        for (int i=0; i<INDEX_BY_COUNTRY.length; ) {
+            if (countryHash == INDEX_BY_COUNTRY[i]) {
+                // Found the desired country
+                int n = INDEX_BY_COUNTRY[i+1];
+                String[] result = new String[n];
+                for (int j=0; j<n; ++j) {
+                    result[j] = IDS[INDEX_BY_COUNTRY[i+2+j]];
+                }
+                return result;
+            } else {
+                i += INDEX_BY_COUNTRY[i+1] + 2;
+            }
+        }
+        // Failed to find any; return empty array
+        return new String[0];
+    }
+
+    /**
+     * Returns the number of IDs in the equivalency group that
+     * includes the given ID.  An equivalency group contains zones
+     * that have the same GMT offset and rules.
+     *
+     * <p>The returned count includes the given ID; it is always >= 1
+     * for valid IDs.  The given ID must be a system time zone.  If it
+     * is not, returns zero.
+     * @param ID a system time zone ID
+     * @return the number of zones in the equivalency group containing
+     * 'ID', or zero if 'ID' is not a valid system ID
+     * @see #getEquivalentID
+     */
+    public static int countEquivalentIDs(String ID) {
+        int i = lookup(ID);
+        return (i<0) ? 0 : DATA[i + ((DATA[i]==0)?2:13)];
+    }
+
+    /**
+     * Returns an ID in the equivalency group that
+     * includes the given ID.  An equivalency group contains zones
+     * that have the same GMT offset and rules.
+     *
+     * <p>The given index must be in the range 0..n-1, where n is the
+     * value returned by <code>countEquivalentIDs(id)</code>.  For
+     * some value of 'index', the returned value will be equal to the
+     * given id.  If the given id is not a valid system time zone, or
+     * if 'index' is out of range, then returns an empty string.
+     * @param ID a system time zone ID
+     * @param index a value from 0 to n-1, where n is the value
+     * returned by <code>countEquivalentIDs(id)</code>
+     * @return the ID of the index-th zone in the equivalency group
+     * containing 'ID', or an empty string if 'ID' is not a valid
+     * system ID or 'index' is out of range
+     * @see #countEquivalentIDs
+     */
+    public static String getEquivalentID(String ID, int index) {
+        int i = lookup(ID);
+        if (i<0) {
+            return "";
+        }
+        int j = i + ((DATA[i]==0)?2:13);
+        return (index<DATA[j]) ? IDS[DATA[j+index+1]] : "";
+    }
+
+    /**
+     * Given an ID, return the equivalency group index (index of
+     * DATA[] for the start of the group's data) or -1 if not found.
+     */
+    static int lookup(String ID) {
+        Integer i = (Integer) INDEX_BY_NAME.get(ID);
+        return (i == null) ? -1 : i.intValue();
+    }
+
+    /**
+     * Equivalency group data in int[] form.  This is represented as a
+     * single flat array of ints for compactness.  Each equivalency
+     * group is represented by a sequence of ints of variable length.
+     * Groups are identified by a single integer, the offset to the
+     * start of the group.  If i is the offset to the start of the
+     * group, then the layout of data is:
+     *
+     * Offset  Data       Notes
+     * i+0     isDST      0 for standard zones, 1 for DST
+     * i+1     rawOffset  in seconds from GMT
+     * <DST zones contain additional entries here; see below>
+     * j+0     count      number of IDs to follow, >= 1
+     * j+1..k  IDs        indices into IDS[] array
+     * j+k+1   (next entry start)
+     *
+     * For standard zones, j = i+2.  For DST zones, j = i+13
+     * and the following entries apply:
+     *
+     * Offset  Data       Notes
+     * i+2     startMonth 0-based
+     * i+3     startDowim
+     * i+4     startDow  
+     * i+5     startTime  in minutes
+     * i+6     startMode  w/s/u encoded as 0/1/2
+     * i+7     endMonth   0-based
+     * i+8     endDowim
+     * i+9     endDow  
+     * i+10    endTime    in minutes
+     * i+11    endMode    w/s/u encoded as 0/1/2
+     * i+12     dstSavings in minutes
+     *
+     * A standard zone entry is 3+n ints long, and a DST zone entry is
+     * 14+n ints long, where n is count of IDs to follow (the value at
+     * j+0).
+     */
+    static int[] DATA;
+
+    /**
+     * Map from TimeZone ID to equivalency group offset.  This is an
+     * index into DATA.  The equivalency group data starts at DATA[i]
+     * and occupies the m ints that follow, where the value of m depends
+     * on whether the zone is standard or DST and how many IDs are in
+     * the group.
+     */
+    static final Hashtable INDEX_BY_NAME = new Hashtable();
+
+    /**
+     * Index of rawOffset to list of zones.  Entries are in order of 
+     * ascending rawOffset.  Format:
+     *
+     * Offset  Data       Notes
+     * i+0     rawOffset  in milliseconds from GMT
+     * i+1     default    default zone for this offset
+     * i+2     count      number of IDs to follow
+     * i+3..j  IDs        indices into IDS
+     * i+j+1   (next entry start)
+     *
+     * If the number of equivalency groups is n, then j=n+2.
+     *
+     * Equivalency group IDs are indices in DATA to the start of each
+     * equivalency group.
+     */
+    static int[] INDEX_BY_OFFSET;
+
+    /**
+     * Index by country to list of zones.  Entries are in order of 
+     * ascending country code.  Format:
+     *
+     * Offset  Data       Notes
+     * i+0     country    as an integer 32n1 + n0; see below
+     * i+1     count      number of IDs to follow
+     * i+2..j  IDs        indices into IDS[]
+     *
+     * If the number of zones is n, then j=n+1.
+     *
+     * The first integer in each entry is the country code as an integer
+     * from 0..(26-1)*32+(26-1).  This is computed as follows:  A two
+     * letter country code XY is converted to ((X-'A')<<5) | (Y-'A').
+     * The special value 0 indicates no assigned country.  This also
+     * maps to the country code 'AA' but currently this is not a valid
+     * country code.
+     *
+     * Zone ID values are indices into IDS[].
+     */
+    static int[] INDEX_BY_COUNTRY;
+
+    //----------------------------------------------------------------
+    // BEGIN GENERATED SOURCE CODE
+    // Date: Fri Feb 02 10:36:32 PST 2001
+    // Version: tzdata2000h from ftp://elsie.nci.nih.gov/pub
+    // Tool: icu/source/tools/gentz
+    // See: icu/source/tools/gentz/readme.txt
+    // DO NOT EDIT THIS SECTION
+
+    /**
+     * Array of IDs in lexicographic order.  The INDEX_BY_OFFSET and DATA
+     * arrays refer to zones using indices into this array.  To map from ID
+     * to equivalency group, use the INDEX_BY_NAME Hashtable.
+     * >> GENERATED DATA: DO NOT EDIT <<
+     */
+    static final String[] IDS = {
+        "ACT",
+        "AET",
+        "AGT",
+        "ART",
+        "AST",
+        "Africa/Abidjan",
+        "Africa/Accra",
+        "Africa/Addis_Ababa",
+        "Africa/Algiers",
+        "Africa/Asmera",
+        "Africa/Bamako",
+        "Africa/Bangui",
+        "Africa/Banjul",
+        "Africa/Bissau",
+        "Africa/Blantyre",
+        "Africa/Brazzaville",
+        "Africa/Bujumbura",
+        "Africa/Cairo",
+        "Africa/Casablanca",
+        "Africa/Ceuta",
+        "Africa/Conakry",
+        "Africa/Dakar",
+        "Africa/Dar_es_Salaam",
+        "Africa/Djibouti",
+        "Africa/Douala",
+        "Africa/El_Aaiun",
+        "Africa/Freetown",
+        "Africa/Gaborone",
+        "Africa/Harare",
+        "Africa/Johannesburg",
+        "Africa/Kampala",
+        "Africa/Khartoum",
+        "Africa/Kigali",
+        "Africa/Kinshasa",
+        "Africa/Lagos",
+        "Africa/Libreville",
+        "Africa/Lome",
+        "Africa/Luanda",
+        "Africa/Lubumbashi",
+        "Africa/Lusaka",
+        "Africa/Malabo",
+        "Africa/Maputo",
+        "Africa/Maseru",
+        "Africa/Mbabane",
+        "Africa/Mogadishu",
+        "Africa/Monrovia",
+        "Africa/Nairobi",
+        "Africa/Ndjamena",
+        "Africa/Niamey",
+        "Africa/Nouakchott",
+        "Africa/Ouagadougou",
+        "Africa/Porto-Novo",
+        "Africa/Sao_Tome",
+        "Africa/Timbuktu",
+        "Africa/Tripoli",
+        "Africa/Tunis",
+        "Africa/Windhoek",
+        "America/Adak",
+        "America/Anchorage",
+        "America/Anguilla",
+        "America/Antigua",
+        "America/Araguaina",
+        "America/Aruba",
+        "America/Asuncion",
+        "America/Barbados",
+        "America/Belem",
+        "America/Belize",
+        "America/Boa_Vista",
+        "America/Bogota",
+        "America/Boise",
+        "America/Buenos_Aires",
+        "America/Cambridge_Bay",
+        "America/Cancun",
+        "America/Caracas",
+        "America/Catamarca",
+        "America/Cayenne",
+        "America/Cayman",
+        "America/Chicago",
+        "America/Chihuahua",
+        "America/Cordoba",
+        "America/Costa_Rica",
+        "America/Cuiaba",
+        "America/Curacao",
+        "America/Dawson",
+        "America/Dawson_Creek",
+        "America/Denver",
+        "America/Detroit",
+        "America/Dominica",
+        "America/Edmonton",
+        "America/Eirunepe",
+        "America/El_Salvador",
+        "America/Fortaleza",
+        "America/Glace_Bay",
+        "America/Godthab",
+        "America/Goose_Bay",
+        "America/Grand_Turk",
+        "America/Grenada",
+        "America/Guadeloupe",
+        "America/Guatemala",
+        "America/Guayaquil",
+        "America/Guyana",
+        "America/Halifax",
+        "America/Havana",
+        "America/Hermosillo",
+        "America/Indiana/Knox",
+        "America/Indiana/Marengo",
+        "America/Indiana/Vevay",
+        "America/Indianapolis",
+        "America/Inuvik",
+        "America/Iqaluit",
+        "America/Jamaica",
+        "America/Jujuy",
+        "America/Juneau",
+        "America/Kentucky/Monticello",
+        "America/La_Paz",
+        "America/Lima",
+        "America/Los_Angeles",
+        "America/Louisville",
+        "America/Maceio",
+        "America/Managua",
+        "America/Manaus",
+        "America/Martinique",
+        "America/Mazatlan",
+        "America/Mendoza",
+        "America/Menominee",
+        "America/Merida",
+        "America/Mexico_City",
+        "America/Miquelon",
+        "America/Monterrey",
+        "America/Montevideo",
+        "America/Montreal",
+        "America/Montserrat",
+        "America/Nassau",
+        "America/New_York",
+        "America/Nipigon",
+        "America/Nome",
+        "America/Noronha",
+        "America/Panama",
+        "America/Pangnirtung",
+        "America/Paramaribo",
+        "America/Phoenix",
+        "America/Port-au-Prince",
+        "America/Port_of_Spain",
+        "America/Porto_Acre",
+        "America/Porto_Velho",
+        "America/Puerto_Rico",
+        "America/Rainy_River",
+        "America/Rankin_Inlet",
+        "America/Recife",
+        "America/Regina",
+        "America/Rosario",
+        "America/Santiago",
+        "America/Santo_Domingo",
+        "America/Sao_Paulo",
+        "America/Scoresbysund",
+        "America/St_Johns",
+        "America/St_Kitts",
+        "America/St_Lucia",
+        "America/St_Thomas",
+        "America/St_Vincent",
+        "America/Swift_Current",
+        "America/Tegucigalpa",
+        "America/Thule",
+        "America/Thunder_Bay",
+        "America/Tijuana",
+        "America/Tortola",
+        "America/Vancouver",
+        "America/Whitehorse",
+        "America/Winnipeg",
+        "America/Yakutat",
+        "America/Yellowknife",
+        "Antarctica/Casey",
+        "Antarctica/Davis",
+        "Antarctica/DumontDUrville",
+        "Antarctica/Mawson",
+        "Antarctica/McMurdo",
+        "Antarctica/Palmer",
+        "Antarctica/Syowa",
+        "Arctic/Longyearbyen",
+        "Asia/Aden",
+        "Asia/Almaty",
+        "Asia/Amman",
+        "Asia/Anadyr",
+        "Asia/Aqtau",
+        "Asia/Aqtobe",
+        "Asia/Ashgabat",
+        "Asia/Baghdad",
+        "Asia/Bahrain",
+        "Asia/Baku",
+        "Asia/Bangkok",
+        "Asia/Beirut",
+        "Asia/Bishkek",
+        "Asia/Brunei",
+        "Asia/Calcutta",
+        "Asia/Chungking",
+        "Asia/Colombo",
+        "Asia/Damascus",
+        "Asia/Dhaka",
+        "Asia/Dili",
+        "Asia/Dubai",
+        "Asia/Dushanbe",
+        "Asia/Gaza",
+        "Asia/Harbin",
+        "Asia/Hong_Kong",
+        "Asia/Hovd",
+        "Asia/Irkutsk",
+        "Asia/Jakarta",
+        "Asia/Jayapura",
+        "Asia/Jerusalem",
+        "Asia/Kabul",
+        "Asia/Kamchatka",
+        "Asia/Karachi",
+        "Asia/Kashgar",
+        "Asia/Katmandu",
+        "Asia/Krasnoyarsk",
+        "Asia/Kuala_Lumpur",
+        "Asia/Kuching",
+        "Asia/Kuwait",
+        "Asia/Macao",
+        "Asia/Magadan",
+        "Asia/Manila",
+        "Asia/Muscat",
+        "Asia/Nicosia",
+        "Asia/Novosibirsk",
+        "Asia/Omsk",
+        "Asia/Phnom_Penh",
+        "Asia/Pyongyang",
+        "Asia/Qatar",
+        "Asia/Rangoon",
+        "Asia/Riyadh",
+        "Asia/Riyadh87",
+        "Asia/Riyadh88",
+        "Asia/Riyadh89",
+        "Asia/Saigon",
+        "Asia/Samarkand",
+        "Asia/Seoul",
+        "Asia/Shanghai",
+        "Asia/Singapore",
+        "Asia/Taipei",
+        "Asia/Tashkent",
+        "Asia/Tbilisi",
+        "Asia/Tehran",
+        "Asia/Thimphu",
+        "Asia/Tokyo",
+        "Asia/Ujung_Pandang",
+        "Asia/Ulaanbaatar",
+        "Asia/Urumqi",
+        "Asia/Vientiane",
+        "Asia/Vladivostok",
+        "Asia/Yakutsk",
+        "Asia/Yekaterinburg",
+        "Asia/Yerevan",
+        "Atlantic/Azores",
+        "Atlantic/Bermuda",
+        "Atlantic/Canary",
+        "Atlantic/Cape_Verde",
+        "Atlantic/Faeroe",
+        "Atlantic/Jan_Mayen",
+        "Atlantic/Madeira",
+        "Atlantic/Reykjavik",
+        "Atlantic/South_Georgia",
+        "Atlantic/St_Helena",
+        "Atlantic/Stanley",
+        "Australia/Adelaide",
+        "Australia/Brisbane",
+        "Australia/Broken_Hill",
+        "Australia/Darwin",
+        "Australia/Hobart",
+        "Australia/Lindeman",
+        "Australia/Lord_Howe",
+        "Australia/Melbourne",
+        "Australia/Perth",
+        "Australia/Sydney",
+        "BET",
+        "BST",
+        "CAT",
+        "CET",
+        "CNT",
+        "CST",
+        "CTT",
+        "EAT",
+        "ECT",
+        "EET",
+        "EST",
+        "Etc/GMT",
+        "Etc/GMT+1",
+        "Etc/GMT+10",
+        "Etc/GMT+11",
+        "Etc/GMT+12",
+        "Etc/GMT+2",
+        "Etc/GMT+3",
+        "Etc/GMT+4",
+        "Etc/GMT+5",
+        "Etc/GMT+6",
+        "Etc/GMT+7",
+        "Etc/GMT+8",
+        "Etc/GMT+9",
+        "Etc/GMT-1",
+        "Etc/GMT-10",
+        "Etc/GMT-11",
+        "Etc/GMT-12",
+        "Etc/GMT-13",
+        "Etc/GMT-14",
+        "Etc/GMT-2",
+        "Etc/GMT-3",
+        "Etc/GMT-4",
+        "Etc/GMT-5",
+        "Etc/GMT-6",
+        "Etc/GMT-7",
+        "Etc/GMT-8",
+        "Etc/GMT-9",
+        "Etc/UCT",
+        "Etc/UTC",
+        "Europe/Amsterdam",
+        "Europe/Andorra",
+        "Europe/Athens",
+        "Europe/Belfast",
+        "Europe/Belgrade",
+        "Europe/Berlin",
+        "Europe/Bratislava",
+        "Europe/Brussels",
+        "Europe/Bucharest",
+        "Europe/Budapest",
+        "Europe/Chisinau",
+        "Europe/Copenhagen",
+        "Europe/Dublin",
+        "Europe/Gibraltar",
+        "Europe/Helsinki",
+        "Europe/Istanbul",
+        "Europe/Kaliningrad",
+        "Europe/Kiev",
+        "Europe/Lisbon",
+        "Europe/Ljubljana",
+        "Europe/London",
+        "Europe/Luxembourg",
+        "Europe/Madrid",
+        "Europe/Malta",
+        "Europe/Minsk",
+        "Europe/Monaco",
+        "Europe/Moscow",
+        "Europe/Oslo",
+        "Europe/Paris",
+        "Europe/Prague",
+        "Europe/Riga",
+        "Europe/Rome",
+        "Europe/Samara",
+        "Europe/San_Marino",
+        "Europe/Sarajevo",
+        "Europe/Simferopol",
+        "Europe/Skopje",
+        "Europe/Sofia",
+        "Europe/Stockholm",
+        "Europe/Tallinn",
+        "Europe/Tirane",
+        "Europe/Tiraspol",
+        "Europe/Uzhgorod",
+        "Europe/Vaduz",
+        "Europe/Vatican",
+        "Europe/Vienna",
+        "Europe/Vilnius",
+        "Europe/Warsaw",
+        "Europe/Zagreb",
+        "Europe/Zaporozhye",
+        "Europe/Zurich",
+        "GMT",
+        "HST",
+        "IET",
+        "IST",
+        "Indian/Antananarivo",
+        "Indian/Chagos",
+        "Indian/Christmas",
+        "Indian/Cocos",
+        "Indian/Comoro",
+        "Indian/Kerguelen",
+        "Indian/Mahe",
+        "Indian/Maldives",
+        "Indian/Mauritius",
+        "Indian/Mayotte",
+        "Indian/Reunion",
+        "JST",
+        "MET",
+        "MIT",
+        "MST",
+        "NET",
+        "NST",
+        "PLT",
+        "PNT",
+        "PRT",
+        "PST",
+        "Pacific/Apia",
+        "Pacific/Auckland",
+        "Pacific/Chatham",
+        "Pacific/Easter",
+        "Pacific/Efate",
+        "Pacific/Enderbury",
+        "Pacific/Fakaofo",
+        "Pacific/Fiji",
+        "Pacific/Funafuti",
+        "Pacific/Galapagos",
+        "Pacific/Gambier",
+        "Pacific/Guadalcanal",
+        "Pacific/Guam",
+        "Pacific/Honolulu",
+        "Pacific/Johnston",
+        "Pacific/Kiritimati",
+        "Pacific/Kosrae",
+        "Pacific/Kwajalein",
+        "Pacific/Majuro",
+        "Pacific/Marquesas",
+        "Pacific/Midway",
+        "Pacific/Nauru",
+        "Pacific/Niue",
+        "Pacific/Norfolk",
+        "Pacific/Noumea",
+        "Pacific/Pago_Pago",
+        "Pacific/Palau",
+        "Pacific/Pitcairn",
+        "Pacific/Ponape",
+        "Pacific/Port_Moresby",
+        "Pacific/Rarotonga",
+        "Pacific/Saipan",
+        "Pacific/Tahiti",
+        "Pacific/Tarawa",
+        "Pacific/Tongatapu",
+        "Pacific/Truk",
+        "Pacific/Wake",
+        "Pacific/Wallis",
+        "Pacific/Yap",
+        "SST",
+        "UTC",
+        "VST",
+        "WET",
+    };
+
+    /**
+     * RLE encoded form of DATA.
+     * @see com.ibm.icu.impl.Utility.RLEStringToIntArray
+     * >> GENERATED DATA: DO NOT EDIT <<
+     */
+    static final String DATA_RLE =
+        "\000\u06A0\000\000\uFFFF\u5740\000\001\000\u0120\000\000\uFFFF\u6550\000"+
+        "\006\000\u011F\000\u017D\000\u0185\000\u0199\000\u019B\000\u019E\000\000"+
+        "\uFFFF\u7360\000\006\000\u011E\000\u016D\000\u018B\000\u0192\000\u0193"+
+        "\000\u01A5\000\001\uFFFF\u7360\000\003\000\001\uFFFF\uFFFF\000x\000\000"+
+        "\000\011\uFFFF\uFFFF\000\001\000x\000\000\000<\000\001\0009\000\001\uFFFF"+
+        "\u7360\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000\002\000\001\uFFFF"+
+        "\uFFFF\000\000\000\000\000\036\000\001\000\u01A3\000\000\uFFFF\u7A68\000"+
+        "\001\000\u0198\000\000\uFFFF\u8170\000\002\000\u0128\000\u018F\000\001"+
+        "\uFFFF\u8170\000\003\000\001\uFFFF\uFFFF\000x\000\000\000\011\uFFFF\uFFFF"+
+        "\000\001\000x\000\000\000<\000\005\000\004\000:\000p\000\u0087\000\u00A9"+
+        "\000\000\uFFFF\u8F80\000\002\000\u0127\000\u01A0\000\001\uFFFF\u8F80\000"+
+        "\003\000\001\uFFFF\uFFFF\000x\000\000\000\011\uFFFF\uFFFF\000\001\000"+
+        "x\000\000\000<\000\006\000S\000t\000\u00A4\000\u00A6\000\u00A7\000\u0184"+
+        "\000\000\uFFFF\u9D90\000\005\000T\000g\000\u008C\000\u0126\000\u0182\000"+
+        "\001\uFFFF\u9D90\000\003\000\001\uFFFF\uFFFF\000x\000\000\000\011\uFFFF"+
+        "\uFFFF\000\001\000x\000\000\000<\000\010\000E\000N\000U\000X\000l\000"+
+        "z\000\u00AA\000\u017E\000\000\uFFFF\uABA0\000\005\000w\000\u0095\000\u00A0"+
+        "\000\u0125\000\u018E\000\001\uFFFF\uABA0\000\003\000\001\uFFFF\uFFFF\000"+
+        "x\000\000\000\011\uFFFF\uFFFF\000\001\000x\000\000\000<\000\011\000G\000"+
+        "H\000M\000|\000}\000~\000\u0080\000\u0092\000\u0116\000\001\uFFFF\uABA0"+
+        "\000\003\000\001\uFFFF\uFFFF\000x\000\000\000\011\uFFFF\uFFFF\000\001"+
+        "\000x\000\001\000<\000\001\000\u00A8\000\001\uFFFF\uABA0\000\013\000\022"+
+        "\000\000\000\000\000\000\000\001\000\014\000\000\000\000\000\000\000<"+
+        "\000\001\000B\000\001\uFFFF\uABA0\000\000\000\017\uFFFF\uFFF9\000\000"+
+        "\000\000\000\002\000\017\000\000\000\000\000\000\000<\000\001\000P\000"+
+        "\001\uFFFF\uABA0\000\002\000\027\000\000\000\000\000\000\000\010\000\007"+
+        "\000\000\000\000\000\000\000<\000\001\000b\000\001\uFFFF\uABA0\000\004"+
+        "\000\001\uFFFF\uFFFF\000\000\000\000\000\010\uFFFF\uFFFF\000\001\000\000"+
+        "\000\000\000<\000\002\000Z\000\u00A1\000\001\uFFFF\uABA0\000\011\000\011"+
+        "\uFFFF\uFFFF\000\000\000\000\000\002\000\011\uFFFF\uFFFF\000\000\000\000"+
+        "\000<\000\001\000\u0188\000\000\uFFFF\uB9B0\000\017\000L\000Y\000c\000"+
+        "h\000i\000j\000k\000m\000n\000\u0089\000\u008A\000\u008F\000\u0093\000"+
+        "\u0124\000\u016E\000\001\uFFFF\uB9B0\000\003\000\001\uFFFF\uFFFF\000\000"+
+        "\000\000\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\001\000"+
+        "_\000\001\uFFFF\uB9B0\000\003\000\001\uFFFF\uFFFF\000\000\000\001\000"+
+        "\011\uFFFF\uFFFF\000\001\000\000\000\001\000<\000\001\000f\000\001\uFFFF"+
+        "\uB9B0\000\003\000\001\uFFFF\uFFFF\000<\000\001\000\011\uFFFF\uFFFF\000"+
+        "\001\000<\000\001\000<\000\001\000\u008D\000\001\uFFFF\uB9B0\000\003\000"+
+        "\001\uFFFF\uFFFF\000x\000\000\000\011\uFFFF\uFFFF\000\001\000x\000\000"+
+        "\000<\000\011\000V\000q\000u\000\u0082\000\u0084\000\u0085\000\u0086\000"+
+        "\u00A3\000\u011B\000\001\uFFFF\uB9B0\000\000\000\001\000\000\000\000\000"+
+        "\000\000\003\000\001\000\000\000\000\000\000\000<\000\001\000s\000\001"+
+        "\uFFFF\uB9B0\000\004\000\002\000\000\000\000\000\000\000\013\000\037\000"+
+        "\000\000\000\000\000\000<\000\001\000D\000\000\uFFFF\uC7C0\000\031\000"+
+        ";\000<\000>\000C\000I\000R\000W\000`\000a\000d\000r\000x\000y\000\u0083"+
+        "\000\u008E\000\u0090\000\u0091\000\u0098\000\u009C\000\u009D\000\u009E"+
+        "\000\u009F\000\u00A5\000\u0123\000\u0183\000\001\uFFFF\uC7C0\000\003\000"+
+        "\001\uFFFF\uFFFF\000\001\000\000\000\011\uFFFF\uFFFF\000\001\000\001\000"+
+        "\000\000<\000\001\000^\000\001\uFFFF\uC7C0\000\003\000\001\uFFFF\uFFFF"+
+        "\000x\000\000\000\011\uFFFF\uFFFF\000\001\000x\000\000\000<\000\004\000"+
+        "\134\000e\000\u00A2\000\u00FD\000\001\uFFFF\uC7C0\000\003\000\017\uFFFF"+
+        "\uFFFF\000x\000\000\000\010\000\031\000\000\000x\000\000\000<\000\001"+
+        "\000@\000\001\uFFFF\uC7C0\000\011\000\001\uFFFF\uFFFF\000\000\000\000"+
+        "\000\001\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\001\000?\000\001"+
+        "\uFFFF\uC7C0\000\011\000\010\uFFFF\uFFFF\000\000\000\000\000\001\000\017"+
+        "\uFFFF\uFFFF\000\000\000\000\000<\000\001\000Q\000\001\uFFFF\uC7C0\000"+
+        "\011\000\011\uFFFF\uFFFF\000\000\000\000\000\002\000\011\uFFFF\uFFFF\000"+
+        "\000\000\000\000<\000\002\000\u0097\000\u00B0\000\001\uFFFF\uC7C0\000"+
+        "\010\000\010\uFFFF\uFFFF\000\000\000\000\000\003\000\020\uFFFF\uFFFF\000"+
+        "\000\000\000\000<\000\001\000\u0106\000\001\uFFFF\uCEC8\000\003\000\001"+
+        "\uFFFF\uFFFF\000\001\000\000\000\011\uFFFF\uFFFF\000\001\000\001\000\000"+
+        "\000<\000\002\000\u009B\000\u0115\000\000\uFFFF\uD5D0\000\016\000\002"+
+        "\000A\000F\000J\000K\000O\000[\000o\000v\000{\000\u008B\000\u0094\000"+
+        "\u0096\000\u0122\000\001\uFFFF\uD5D0\000\003\000\001\uFFFF\uFFFF\000x"+
+        "\000\000\000\011\uFFFF\uFFFF\000\001\000x\000\000\000<\000\001\000\u007F"+
+        "\000\001\uFFFF\uD5D0\000\002\uFFFF\uFFFF\000\001\000<\000\002\000\011"+
+        "\uFFFF\uFFFF\000\001\000<\000\002\000<\000\001\000]\000\001\uFFFF\uD5D0"+
+        "\000\011\000\022\000\000\000\000\000\000\000\001\000\034\000\000\000\000"+
+        "\000\000\000<\000\001\000\u0081\000\001\uFFFF\uD5D0\000\011\000\010\uFFFF"+
+        "\uFFFF\000\000\000\000\000\001\000\017\uFFFF\uFFFF\000\000\000\000\000"+
+        "<\000\003\000=\000\u0099\000\u0111\000\000\uFFFF\uE3E0\000\003\000\u0088"+
+        "\000\u0104\000\u0121\000\000\uFFFF\uF1F0\000\003\000\u00FF\000\u0101\000"+
+        "\u011D\000\001\uFFFF\uF1F0\000\002\uFFFF\uFFFF\000\001\000<\000\002\000"+
+        "\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000\002\000\u009A\000\u00FC"+
+        "\000\000\000\000\000\025\000\005\000\012\000\014\000\015\000\022\000\024"+
+        "\000\025\000\031\000$\000-\0001\0002\0004\0005\000\u0103\000\u0105\000"+
+        "\u011C\000\u0137\000\u0138\000\u016C\000\u01AD\000\001\000\000\000\005"+
+        "\000\001\000\000\000\000\000\000\000\010\000\001\000\000\000\000\000\000"+
+        "\000<\000\001\000\032\000\001\000\000\000\002\uFFFF\uFFFF\000\001\000"+
+        "<\000\002\000\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000\010\000\u00FE"+
+        "\000\u0100\000\u0102\000\u013C\000\u0145\000\u014B\000\u014D\000\u01AF"+
+        "\000\001\000\000\000\010\000\001\000\000\000\000\000\000\000\013\000\037"+
+        "\000\000\000\000\000\000\000\024\000\001\000\006\000\000\000\u0E10\000"+
+        "\015\000\010\000\013\000\017\000\030\000!\000\042\000#\000%\000(\000/"+
+        "\0000\0003\000\u0129\000\001\000\u0E10\000\002\uFFFF\uFFFF\000\001\000"+
+        "<\000\002\000\011\uFFFF\uFFFF\000\001\000<\000\002\000<\000 \000\023\000"+
+        "\u00B2\000\u0119\000\u0139\000\u013A\000\u013D\000\u013E\000\u013F\000"+
+        "\u0140\000\u0142\000\u0144\000\u0146\000\u014C\000\u014E\000\u014F\000"+
+        "\u0150\000\u0152\000\u0154\000\u0155\000\u0156\000\u0158\000\u015A\000"+
+        "\u015B\000\u015D\000\u015F\000\u0161\000\u0164\000\u0165\000\u0166\000"+
+        "\u0168\000\u0169\000\u016B\000\001\000\u0E10\000\002\uFFFF\uFFFF\000\001"+
+        "\000x\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\002\000"+
+        "\u0114\000\u017C\000\001\000\u0E10\000\004\000\001\000\000\000\000\000"+
+        "\001\000\010\uFFFF\uFFFF\000\001\000\000\000\001\000<\000\001\0007\000"+
+        "\001\000\u0E10\000\010\000\001\uFFFF\uFFFF\000x\000\000\000\003\000\001"+
+        "\uFFFF\uFFFF\000x\000\000\000<\000\001\0008\000\000\000\u1C20\000\020"+
+        "\000\016\000\020\000\033\000\034\000 \000&\000'\000)\000*\000+\0006\000"+
+        "\u0113\000\u012F\000\u0157\000\u0160\000\u0167\000\001\000\u1C20\000\003"+
+        "\000\001\000\000\000\000\000\000\000\011\000\001\000\000\000\000\000\000"+
+        "\000<\000\001\000\u00C4\000\001\000\u1C20\000\003\000\001\000\000\000"+
+        "<\000\000\000\010\000\030\000\000\000<\000\000\000<\000\001\000\u00D0"+
+        "\000\001\000\u1C20\000\003\000\017\uFFFF\uFFFA\000\000\000\000\000\011"+
+        "\000\017\uFFFF\uFFFA\000\000\000\000\000<\000\001\000\u00C9\000\001\000"+
+        "\u1C20\000\003\uFFFF\uFFFF\000\006\000\000\000\001\000\010\uFFFF\uFFFF"+
+        "\000\005\000\u0564\000\001\000<\000\002\000\003\000\021\000\001\000\u1C20"+
+        "\000\002\uFFFF\uFFFF\000\001\000\000\000\000\000\011\uFFFF\uFFFF\000\001"+
+        "\000\000\000\000\000<\000\001\000\u00BE\000\001\000\u1C20\000\002\uFFFF"+
+        "\uFFFF\000\001\000<\000\002\000\011\uFFFF\uFFFF\000\001\000<\000\002\000"+
+        "<\000\014\000\u00DE\000\u011A\000\u013B\000\u0141\000\u0143\000\u0147"+
+        "\000\u0148\000\u014A\000\u015C\000\u015E\000\u0163\000\u016A\000\001\000"+
+        "\u1C20\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000"+
+        "\001\000x\000\001\000<\000\002\000\u0149\000\u0151\000\001\000\u1C20\000"+
+        "\002\uFFFF\uFFFF\000\005\000\000\000\001\000\010\uFFFF\uFFFF\000\005\000"+
+        "\000\000\001\000<\000\001\000\u00B5\000\001\000\u1C20\000\010\000\017"+
+        "\uFFFF\uFFFF\000x\000\000\000\002\000\017\uFFFF\uFFFF\000x\000\000\000"+
+        "<\000\001\000\035\000\000\000\u2A30\000\023\000\007\000\011\000\026\000"+
+        "\027\000\036\000\037\000,\000.\000\u00B1\000\u00B3\000\u00BB\000\u00D9"+
+        "\000\u00E3\000\u00E5\000\u0118\000\u0130\000\u0170\000\u0174\000\u0179"+
+        "\000\001\000\u2A30\000\003\000\001\000\000\000\u00B4\000\001\000\011\000"+
+        "\001\000\000\000\u00B4\000\001\000<\000\001\000\u00BA\000\001\000\u2A30"+
+        "\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000\001"+
+        "\000x\000\001\000<\000\002\000\u0153\000\u0162\000\000\000\u2BD8\000\003"+
+        "\000\u00E6\000\u00E7\000\u00E8\000\001\000\u3138\000\002\000\024\000\000"+
+        "\000\000\000\000\000\010\000\027\000\000\000\000\000\000\000<\000\001"+
+        "\000\u00F1\000\000\000\u3840\000\006\000\u00C7\000\u00DD\000\u0131\000"+
+        "\u0176\000\u0178\000\u017A\000\001\000\u3840\000\002\uFFFF\uFFFF\000\001"+
+        "\000\000\000\000\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000<\000"+
+        "\002\000\u00B7\000\u00F0\000\001\000\u3840\000\002\uFFFF\uFFFF\000\001"+
+        "\000<\000\000\000\011\uFFFF\uFFFF\000\001\000<\000\000\000<\000\001\000"+
+        "\u00BC\000\001\000\u3840\000\002\uFFFF\uFFFF\000\001\000x\000\001\000"+
+        "\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\003\000\u00FB\000\u0159"+
+        "\000\u017F\000\000\000\u3F48\000\001\000\u00D1\000\000\000\u4650\000\012"+
+        "\000\u00B9\000\u00C8\000\u00D3\000\u00EA\000\u00EF\000\u0132\000\u0171"+
+        "\000\u0175\000\u0177\000\u0181\000\001\000\u4650\000\002\uFFFF\uFFFF\000"+
+        "\001\000\000\000\000\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000<"+
+        "\000\001\000\u00B8\000\001\000\u4650\000\002\uFFFF\uFFFF\000\001\000x"+
+        "\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\001\000\u00FA"+
+        "\000\001\000\u4650\000\002\uFFFF\uFFFF\000\001\000\u0096\000\000\000\011"+
+        "\uFFFF\uFFFF\000\001\000\u0096\000\000\000<\000\001\000\u00BF\000\000"+
+        "\000\u4D58\000\002\000\u00C1\000\u016F\000\000\000\u50DC\000\001\000\u00D5"+
+        "\000\000\000\u5460\000\006\000\u00AE\000\u00C3\000\u00C5\000\u00F2\000"+
+        "\u0112\000\u0133\000\001\000\u5460\000\002\uFFFF\uFFFF\000\001\000\000"+
+        "\000\000\000\011\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\001\000"+
+        "\u00B4\000\001\000\u5460\000\002\uFFFF\uFFFF\000\001\000x\000\001\000"+
+        "\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\002\000\u00DF\000\u00E0"+
+        "\000\000\000\u5B68\000\002\000\u00E4\000\u0173\000\000\000\u6270\000\011"+
+        "\000\u00AC\000\u00BD\000\u00CE\000\u00E1\000\u00E9\000\u00F7\000\u0134"+
+        "\000\u0172\000\u01AE\000\001\000\u6270\000\002\uFFFF\uFFFF\000\001\000"+
+        "\000\000\000\000\010\uFFFF\uFFFF\000\001\000\000\000\000\000<\000\001"+
+        "\000\u00CC\000\001\000\u6270\000\002\uFFFF\uFFFF\000\001\000x\000\001"+
+        "\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\001\000\u00D6\000\000"+
+        "\000\u7080\000\010\000\u00AB\000\u00C0\000\u00D7\000\u00D8\000\u00ED\000"+
+        "\u00F4\000\u010F\000\u0135\000\001\000\u7080\000\003\000\012\uFFFF\uFFFF"+
+        "\000\000\000\000\000\010\000\013\uFFFF\uFFFF\000\000\000\000\000<\000"+
+        "\007\000\u00C2\000\u00CA\000\u00D4\000\u00DA\000\u00EC\000\u00F6\000\u0117"+
+        "\000\001\000\u7080\000\005\000\036\000\000\000\000\000\000\000\010\000"+
+        "\036\000\000\000\000\000\000\000<\000\001\000\u00EE\000\001\000\u7080"+
+        "\000\002\000\026\000\000\000\000\000\000\000\010\000\025\000\000\000\000"+
+        "\000\000\000<\000\001\000\u00DC\000\001\000\u7080\000\002\uFFFF\uFFFF"+
+        "\000\001\000\000\000\000\000\010\uFFFF\uFFFF\000\001\000\000\000\000\000"+
+        "<\000\001\000\u00F5\000\001\000\u7080\000\002\uFFFF\uFFFF\000\001\000"+
+        "x\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\001\000\u00CD"+
+        "\000\001\000\u7080\000\004\000\010\uFFFF\uFFFF\000\u00D2\000\000\000\011"+
+        "\000\020\uFFFF\uFFFF\000\u00D2\000\000\000<\000\001\000\u00CB\000\000"+
+        "\000\u7E90\000\007\000\u00C6\000\u00CF\000\u00E2\000\u00F3\000\u0136\000"+
+        "\u017B\000\u019F\000\001\000\u7E90\000\002\uFFFF\uFFFF\000\001\000x\000"+
+        "\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\001\000\u00F9\000"+
+        "\001\000\u7E90\000\004\uFFFF\uFFF2\uFFFF\uFFFF\000\000\000\000\000\011"+
+        "\uFFFF\uFFF2\uFFFF\uFFFF\000\000\000\000\000<\000\001\000\u00EB\000\001"+
+        "\000\u8598\000\011\000\003\000\000\000x\000\000\000\002\uFFFF\uFFFF\000"+
+        "\001\000x\000\000\000<\000\002\000\000\000\u010A\000\001\000\u8598\000"+
+        "\011\uFFFF\uFFFF\000\001\000x\000\001\000\002\uFFFF\uFFFF\000\001\000"+
+        "x\000\001\000<\000\002\000\u0107\000\u0109\000\000\000\u8CA0\000\007\000"+
+        "\u00AD\000\u012A\000\u0191\000\u01A2\000\u01A4\000\u01A8\000\u01AB\000"+
+        "\001\000\u8CA0\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF"+
+        "\uFFFF\000\001\000x\000\001\000<\000\001\000\u00F8\000\001\000\u8CA0\000"+
+        "\011\uFFFF\uFFFF\000\001\000x\000\001\000\002\uFFFF\uFFFF\000\001\000"+
+        "x\000\001\000<\000\003\000\001\000\u010E\000\u0110\000\001\000\u8CA0\000"+
+        "\011\uFFFF\uFFFF\000\001\000x\000\001\000\002\000\001\uFFFF\uFFFF\000"+
+        "x\000\001\000<\000\002\000\u0108\000\u010C\000\001\000\u8CA0\000\011\000"+
+        "\001\uFFFF\uFFFF\000x\000\001\000\002\uFFFF\uFFFF\000\001\000x\000\001"+
+        "\000<\000\001\000\u010B\000\001\000\u93A8\000\011\uFFFF\uFFFF\000\001"+
+        "\000x\000\001\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\036\000\001"+
+        "\000\u010D\000\000\000\u9AB0\000\005\000\u012B\000\u0190\000\u0195\000"+
+        "\u01A1\000\u01AC\000\001\000\u9AB0\000\013\000\001\000\000\000x\000\001"+
+        "\000\002\000\002\000\000\000x\000\001\000<\000\001\000\u019D\000\001\000"+
+        "\u9AB0\000\002\uFFFF\uFFFF\000\001\000x\000\001\000\011\uFFFF\uFFFF\000"+
+        "\001\000x\000\001\000<\000\001\000\u00DB\000\001\000\u9AB0\000\011\000"+
+        "\027\uFFFF\uFFFF\000\000\000\000\000\000\000\027\uFFFF\uFFFF\000\000\000"+
+        "\000\000<\000\001\000\u0189\000\000\000\uA1B8\000\001\000\u019C\000\000"+
+        "\000\uA8C0\000\010\000\u012C\000\u018D\000\u0196\000\u0197\000\u019A\000"+
+        "\u01A6\000\u01A9\000\u01AA\000\001\000\uA8C0\000\002\uFFFF\uFFFF\000\001"+
+        "\000x\000\001\000\011\uFFFF\uFFFF\000\001\000x\000\001\000<\000\002\000"+
+        "\u00B6\000\u00D2\000\001\000\uA8C0\000\012\000\001\uFFFF\uFFFF\000x\000"+
+        "\000\000\001\uFFFF\uFFFF\000\001\000\u00B4\000\000\000<\000\001\000\u018C"+
+        "\000\001\000\uA8C0\000\011\000\001\uFFFF\uFFFF\000x\000\001\000\002\000"+
+        "\017\uFFFF\uFFFF\000x\000\001\000<\000\003\000\u00AF\000\u0180\000\u0186"+
+        "\000\001\000\uB34C\000\011\000\001\uFFFF\uFFFF\000\u00A5\000\001\000\002"+
+        "\000\017\uFFFF\uFFFF\000\u00A5\000\001\000<\000\001\000\u0187\000\000"+
+        "\000\uB6D0\000\002\000\u012D\000\u018A\000\001\000\uB6D0\000\012\000\004"+
+        "\000\000\000x\000\001\000\000\000\033\000\000\000x\000\001\000<\000\001"+
+        "\000\u01A7\000\000\000\uC4E0\000\002\000\u012E\000\u0194"
+        ;
+
+    /**
+     * RLE encoded form of INDEX_BY_NAME_ARRAY.
+     * @see com.ibm.icu.impl.Utility.RLEStringToIntArray
+     * >> GENERATED DATA: DO NOT EDIT <<
+     */
+    static final String INDEX_BY_NAME_ARRAY_RLE =
+        "\000\u01B0\000\u058C\000\u05C5\000\u020E\000\u0371\000=\000\u0279\000"+
+        "\u02B6\000\u03D8\000\u02C5\000\u03D8\000\u0279\000\u02C5\000\u0279\000"+
+        "\u0279\000\u0331\000\u02C5\000\u0331\000\u0371\000\u0279\000\u02D5\000"+
+        "\u0279\000\u0279\000\u03D8\000\u03D8\000\u02C5\000\u0279\000\u0291\000"+
+        "\u0331\000\u0331\000\u03C9\000\u03D8\000\u03D8\000\u0331\000\u02C5\000"+
+        "\u02C5\000\u02C5\000\u0279\000\u02C5\000\u0331\000\u0331\000\u02C5\000"+
+        "\u0331\000\u0331\000\u0331\000\u03D8\000\u0279\000\u03D8\000\u02C5\000"+
+        "\u02C5\000\u0279\000\u0279\000\u02C5\000\u0279\000\u0279\000\u0331\000"+
+        "\u0313\000\u0322\000\026\000=\000\u0175\000\u0175\000\u024C\000\u0175"+
+        "\000\u01C1\000\u01B2\000\u020E\000\u00B5\000\u0175\000\u0166\000q\000"+
+        "\u020E\000\u008F\000\u008F\000\u0175\000\u020E\000\u020E\000\u0101\000"+
+        "\u008F\000q\000\u020E\000\u00C4\000\u01D0\000\u0175\000U\000i\000q\000"+
+        "\u0140\000\u0175\000q\000\u0101\000\u00E2\000\u020E\000\u01A0\000\u022E"+
+        "\000\u0191\000\u0113\000\u0175\000\u0175\000\u00D3\000\u0101\000\u0175"+
+        "\000\u01A0\000\u0122\000i\000\uA5A5\000\004\000\u0101\000q\000\u0101\000"+
+        "\u0101\000\u020E\000=\000\u0140\000\u0175\000\u0157\000U\000\u0140\000"+
+        "\u020E\000\u0087\000\u0175\000\u0175\000q\000\u020E\000\u008F\000\u008F"+
+        "\000\u008F\000\u021F\000\u008F\000\u023D\000\u0140\000\u0175\000\u0140"+
+        "\000\u0140\000\u0140\000=\000\u025D\000\u0101\000\u0101\000\u020E\000"+
+        "i\000\u0131\000\u0175\000\u0101\000\u0175\000\u0175\000\u008F\000\u0101"+
+        "\000\u020E\000\u0087\000\u020E\000\u01DF\000\u0175\000\u024C\000\u0269"+
+        "\000\u01FE\000\uA5A5\000\004\000\u0175\000\u0087\000\u00E2\000\u01A0\000"+
+        "\u0140\000U\000\u0175\000U\000U\000\u00A6\000=\000q\000\u04F9\000\u04CF"+
+        "\000\u05AC\000\u04A2\000\u0667\000\u01DF\000\u03D8\000\u02D5\000\u03D8"+
+        "\000\u04AB\000\u03BA\000\u0648\000\u042B\000\u046C\000\u045F\000\u03EE"+
+        "\000\u03D8\000\u043B\000\u04CF\000\u0381\000\u048A\000\u04F9\000\u0499"+
+        "\000\u0504\000\u04A2\000\u0344\000\u04A2\000\u0564\000\u0422\000\u045F"+
+        "\000\u0362\000\u0504\000\u0555\000\u04DB\000\u0546\000\u04CF\000\u0564"+
+        "\000\u0353\000\u045B\000\u0648\000\u045F\000\u0504\000\u049E\000\u04EA"+
+        "\000\u04F9\000\u04F9\000\u03D8\000\u0504\000\u061B\000\u0528\000\u0422"+
+        "\000\u0390\000\u04BA\000\u04BA\000\u04CF\000\u0564\000\u03D8\000\u04CA"+
+        "\000\u03D8\000\u040D\000\u040D\000\u040D\000\u04CF\000\u045F\000\u057D"+
+        "\000\u0504\000\u04F9\000\u0519\000\u045F\000\u042B\000\u0413\000\u04A2"+
+        "\000\u0564\000\u04F9\000\u0537\000\u0504\000\u04CF\000\u05B6\000\u056E"+
+        "\000\u047B\000\u044A\000\u0269\000\u01A0\000\u02A0\000\u0263\000\u02A0"+
+        "\000\u0263\000\u02A0\000\u0279\000\u025D\000\u0279\000\u01EF\000\u059C"+
+        "\000\u05D6\000\u059C\000\u058C\000\u05E6\000\u05D6\000\u05F5\000\u05C5"+
+        "\000\u04F9\000\u05C5\000\u024C\000\u04A2\000\u0331\000\u0303\000\u01FE"+
+        "\000\u008F\000\u0504\000\u03D8\000\u02D5\000\u0390\000\u0140\000\u0279"+
+        "\000\u0263\000\015\000\004\000\000\000\u025D\000\u020E\000\u0175\000\u0101"+
+        "\000\u0087\000i\000P\0008\000\u02C5\000\u05AC\000\u0604\000\u063D\000"+
+        "\u0687\000\u069B\000\u0331\000\u03D8\000\u0422\000\u045F\000\u04A2\000"+
+        "\u04CF\000\u04F9\000\u0564\000\u0279\000\u0279\000\u02D5\000\u02D5\000"+
+        "\u0390\000\u02A0\000\uA5A5\000\004\000\u02D5\000\u0390\000\u02D5\000\u0390"+
+        "\000\u02D5\000\u02A0\000\u02D5\000\u0390\000\u0390\000\u03AA\000\u0390"+
+        "\000\u02A0\000\u02D5\000\u02A0\000\u02D5\000\u02D5\000\u02D5\000\u03AA"+
+        "\000\u02D5\000\u03FD\000\u02D5\000\u02D5\000\u02D5\000\u0331\000\u02D5"+
+        "\000\u044A\000\u02D5\000\u02D5\000\u0390\000\u02D5\000\u0390\000\u02D5"+
+        "\000\u0331\000\u02D5\000\u03FD\000\u0390\000\u02D5\000\u02D5\000\u02D5"+
+        "\000\u0331\000\u02D5\000\u02D5\000\u0390\000\u02D5\000\u0279\000\015\000"+
+        "\u0101\000\u0499\000\u03D8\000\u045F\000\u04CF\000\u04CA\000\u03D8\000"+
+        "\u045F\000\u0422\000\u045F\000\u0422\000\u03D8\000\u0422\000\u0564\000"+
+        "\u0303\000\004\000q\000\u044A\000\u0667\000\u045F\000i\000\u0175\000U"+
+        "\000\004\000\u0667\000\u0678\000\u00F2\000\u062A\000\u0687\000\015\000"+
+        "\u0658\000\u063D\000\u0087\0008\000\u0604\000\u05AC\000\015\000\015\000"+
+        "\u069B\000\u0604\000\u063D\000\u063D\0004\000\004\000\u063D\000\004\000"+
+        "\u0639\000\u060C\000\004\000\u0564\000P\000\u0604\000\u05AC\000%\000\u05AC"+
+        "\000\015\000\u063D\000\u068C\000\u05AC\000\u063D\000\u063D\000\u05AC\000"+
+        "\u0604\000\u0279\000\u04CF\000\u02A0"
+        ;
+
+    /**
+     * RLE encoded form of INDEX_BY_OFFSET.
+     * @see com.ibm.icu.impl.Utility.RLEStringToIntArray
+     * >> GENERATED DATA: DO NOT EDIT <<
+     */
+    static final String INDEX_BY_OFFSET_RLE =
+        "\000\u0225\uFFFF\u5740\000\u0120\000\001\000\u0120\uFFFF\u6550\000\u0185"+
+        "\000\006\000\u011F\000\u017D\000\u0185\000\u0199\000\u019B\000\u019E\uFFFF"+
+        "\u7360\000\u0192\000\010\0009\000\u011E\000\u016D\000\u018B\000\u0192"+
+        "\000\u0193\000\u01A3\000\u01A5\uFFFF\u7A68\000\u0198\000\001\000\u0198"+
+        "\uFFFF\u8170\000:\000\007\000\004\000:\000p\000\u0087\000\u00A9\000\u0128"+
+        "\000\u018F\uFFFF\u8F80\000t\000\010\000S\000t\000\u00A4\000\u00A6\000"+
+        "\u00A7\000\u0127\000\u0184\000\u01A0\uFFFF\u9D90\000U\000\015\000E\000"+
+        "N\000T\000U\000X\000g\000l\000z\000\u008C\000\u00AA\000\u0126\000\u017E"+
+        "\000\u0182\uFFFF\uABA0\000M\000\025\000B\000G\000H\000M\000P\000Z\000"+
+        "b\000w\000|\000}\000~\000\u0080\000\u0092\000\u0095\000\u00A0\000\u00A1"+
+        "\000\u00A8\000\u0116\000\u0125\000\u0188\000\u018E\uFFFF\uB9B0\000k\000"+
+        "\035\000D\000L\000V\000Y\000_\000c\000f\000h\000i\000j\000k\000m\000n"+
+        "\000q\000s\000u\000\u0082\000\u0084\000\u0085\000\u0086\000\u0089\000"+
+        "\u008A\000\u008D\000\u008F\000\u0093\000\u00A3\000\u011B\000\u0124\000"+
+        "\u016E\uFFFF\uC7C0\000\u0091\000$\000;\000<\000>\000?\000@\000C\000I\000"+
+        "Q\000R\000W\000\134\000^\000`\000a\000d\000e\000r\000x\000y\000\u0083"+
+        "\000\u008E\000\u0090\000\u0091\000\u0097\000\u0098\000\u009C\000\u009D"+
+        "\000\u009E\000\u009F\000\u00A2\000\u00A5\000\u00B0\000\u00FD\000\u0106"+
+        "\000\u0123\000\u0183\uFFFF\uCEC8\000\u009B\000\002\000\u009B\000\u0115"+
+        "\uFFFF\uD5D0\000F\000\024\000\002\000=\000A\000F\000J\000K\000O\000[\000"+
+        "]\000o\000v\000{\000\u007F\000\u0081\000\u008B\000\u0094\000\u0096\000"+
+        "\u0099\000\u0111\000\u0122\uFFFF\uE3E0\000\u0088\000\003\000\u0088\000"+
+        "\u0104\000\u0121\uFFFF\uF1F0\000\u00FC\000\005\000\u009A\000\u00FC\000"+
+        "\u00FF\000\u0101\000\u011D\000\000\000\u016C\000\037\000\005\000\006\000"+
+        "\012\000\014\000\015\000\022\000\024\000\025\000\031\000\032\000$\000"+
+        "-\0001\0002\0004\0005\000\u00FE\000\u0100\000\u0102\000\u0103\000\u0105"+
+        "\000\u011C\000\u0137\000\u0138\000\u013C\000\u0145\000\u014B\000\u014D"+
+        "\000\u016C\000\u01AD\000\u01AF\000\u0E10\000\u0155\0001\000\010\000\013"+
+        "\000\017\000\023\000\030\000!\000\042\000#\000%\000(\000/\0000\0003\000"+
+        "7\0008\000\u00B2\000\u0114\000\u0119\000\u0129\000\u0139\000\u013A\000"+
+        "\u013D\000\u013E\000\u013F\000\u0140\000\u0142\000\u0144\000\u0146\000"+
+        "\u014C\000\u014E\000\u014F\000\u0150\000\u0152\000\u0154\000\u0155\000"+
+        "\u0156\000\u0158\000\u015A\000\u015B\000\u015D\000\u015F\000\u0161\000"+
+        "\u0164\000\u0165\000\u0166\000\u0168\000\u0169\000\u016B\000\u017C\000"+
+        "\u1C20\000\021\000&\000\003\000\016\000\020\000\021\000\033\000\034\000"+
+        "\035\000 \000&\000'\000)\000*\000+\0006\000\u00B5\000\u00BE\000\u00C4"+
+        "\000\u00C9\000\u00D0\000\u00DE\000\u0113\000\u011A\000\u012F\000\u013B"+
+        "\000\u0141\000\u0143\000\u0147\000\u0148\000\u0149\000\u014A\000\u0151"+
+        "\000\u0157\000\u015C\000\u015E\000\u0160\000\u0163\000\u0167\000\u016A"+
+        "\000\u2A30\000\007\000\026\000\007\000\011\000\026\000\027\000\036\000"+
+        "\037\000,\000.\000\u00B1\000\u00B3\000\u00BA\000\u00BB\000\u00D9\000\u00E3"+
+        "\000\u00E5\000\u0118\000\u0130\000\u0153\000\u0162\000\u0170\000\u0174"+
+        "\000\u0179\000\u2BD8\000\u00E8\000\003\000\u00E6\000\u00E7\000\u00E8\000"+
+        "\u3138\000\u00F1\000\001\000\u00F1\000\u3840\000\u00FB\000\014\000\u00B7"+
+        "\000\u00BC\000\u00C7\000\u00DD\000\u00F0\000\u00FB\000\u0131\000\u0159"+
+        "\000\u0176\000\u0178\000\u017A\000\u017F\000\u3F48\000\u00D1\000\001\000"+
+        "\u00D1\000\u4650\000\u00D3\000\015\000\u00B8\000\u00B9\000\u00BF\000\u00C8"+
+        "\000\u00D3\000\u00EA\000\u00EF\000\u00FA\000\u0132\000\u0171\000\u0175"+
+        "\000\u0177\000\u0181\000\u4D58\000\u00C1\000\002\000\u00C1\000\u016F\000"+
+        "\u50DC\000\u00D5\000\001\000\u00D5\000\u5460\000\u00C5\000\011\000\u00AE"+
+        "\000\u00B4\000\u00C3\000\u00C5\000\u00DF\000\u00E0\000\u00F2\000\u0112"+
+        "\000\u0133\000\u5B68\000\u00E4\000\002\000\u00E4\000\u0173\000\u6270\000"+
+        "\u00E9\000\013\000\u00AC\000\u00BD\000\u00CC\000\u00CE\000\u00D6\000\u00E1"+
+        "\000\u00E9\000\u00F7\000\u0134\000\u0172\000\u01AE\000\u7080\000\u00EC"+
+        "\000\024\000\u00AB\000\u00C0\000\u00C2\000\u00CA\000\u00CB\000\u00CD\000"+
+        "\u00D4\000\u00D7\000\u00D8\000\u00DA\000\u00DC\000\u00EC\000\u00ED\000"+
+        "\u00EE\000\u00F4\000\u00F5\000\u00F6\000\u010F\000\u0117\000\u0135\000"+
+        "\u7E90\000\u00F3\000\011\000\u00C6\000\u00CF\000\u00E2\000\u00EB\000\u00F3"+
+        "\000\u00F9\000\u0136\000\u017B\000\u019F\000\u8598\000\u010A\000\004\000"+
+        "\000\000\u0107\000\u0109\000\u010A\000\u8CA0\000\u0110\000\016\000\001"+
+        "\000\u00AD\000\u00F8\000\u0108\000\u010B\000\u010C\000\u010E\000\u0110"+
+        "\000\u012A\000\u0191\000\u01A2\000\u01A4\000\u01A8\000\u01AB\000\u93A8"+
+        "\000\u010D\000\001\000\u010D\000\u9AB0\000\u0190\000\010\000\u00DB\000"+
+        "\u012B\000\u0189\000\u0190\000\u0195\000\u019D\000\u01A1\000\u01AC\000"+
+        "\uA1B8\000\u019C\000\001\000\u019C\000\uA8C0\000\u0186\000\016\000\u00AF"+
+        "\000\u00B6\000\u00D2\000\u012C\000\u0180\000\u0186\000\u018C\000\u018D"+
+        "\000\u0196\000\u0197\000\u019A\000\u01A6\000\u01A9\000\u01AA\000\uB34C"+
+        "\000\u0187\000\001\000\u0187\000\uB6D0\000\u018A\000\003\000\u012D\000"+
+        "\u018A\000\u01A7\000\uC4E0\000\u0194\000\002\000\u012E\000\u0194"
+        ;
+
+    /**
+     * RLE encoded form of INDEX_BY_COUNTRY.
+     * @see com.ibm.icu.impl.Utility.RLEStringToIntArray
+     * >> GENERATED DATA: DO NOT EDIT <<
+     */
+    static final String INDEX_BY_COUNTRY_RLE =
+        "\000\u038C\000\000\000&\000\u00E6\000\u00E7\000\u00E8\000\u0114\000\u011A"+
+        "\000\u011C\000\u011D\000\u011E\000\u011F\000\u0120\000\u0121\000\u0122"+
+        "\000\u0123\000\u0124\000\u0125\000\u0126\000\u0127\000\u0128\000\u0129"+
+        "\000\u012A\000\u012B\000\u012C\000\u012D\000\u012E\000\u012F\000\u0130"+
+        "\000\u0131\000\u0132\000\u0133\000\u0134\000\u0135\000\u0136\000\u0137"+
+        "\000\u0138\000\u016C\000\u017C\000\u01AD\000\u01AF\000\003\000\001\000"+
+        "\u013A\000\004\000\001\000\u00C7\000\005\000\001\000\u00D1\000\006\000"+
+        "\001\000<\000\010\000\001\000;\000\013\000\001\000\u0161\000\014\000\002"+
+        "\000\u00FB\000\u017F\000\015\000\001\000R\000\016\000\001\000%\000\020"+
+        "\000\007\000\u00AB\000\u00AC\000\u00AD\000\u00AE\000\u00AF\000\u00B0\000"+
+        "\u00B1\000\021\000\007\000\002\000F\000J\000O\000o\000{\000\u0096\000"+
+        "\022\000\001\000\u019E\000\023\000\001\000\u0166\000\024\000\014\000\000"+
+        "\000\001\000\u0107\000\u0108\000\u0109\000\u010A\000\u010B\000\u010C\000"+
+        "\u010D\000\u010E\000\u010F\000\u0110\000\026\000\001\000>\000\031\000"+
+        "\001\000\u00BC\000 \000\001\000\u015B\000!\000\001\000@\000#\000\002\000"+
+        "\u00C5\000\u0112\000$\000\001\000\u0140\000%\000\001\0002\000&\000\001"+
+        "\000\u015E\000'\000\001\000\u00BB\000(\000\001\000\020\000)\000\001\000"+
+        "3\000,\000\001\000\u00FD\000-\000\001\000\u00C0\000.\000\001\000r\000"+
+        "1\000\016\000=\000A\000C\000Q\000Y\000[\000v\000x\000\u0088\000\u008F"+
+        "\000\u0090\000\u0094\000\u0099\000\u0111\0002\000\001\000\u0084\0003\000"+
+        "\001\000\u00F2\0006\000\001\000\033\0008\000\001\000\u0151\0009\000\001"+
+        "\000B\000@\000\027\000G\000S\000T\000X\000\134\000^\000e\000l\000m\000"+
+        "\u0082\000\u0086\000\u008A\000\u0092\000\u0093\000\u0095\000\u009B\000"+
+        "\u00A0\000\u00A3\000\u00A6\000\u00A7\000\u00A8\000\u00AA\000\u0115\000"+
+        "B\000\001\000\u0173\000C\000\002\000!\000&\000E\000\001\000\013\000F\000"+
+        "\001\000\017\000G\000\001\000\u016B\000H\000\001\000\005\000J\000\001"+
+        "\000\u01A3\000K\000\002\000\u0097\000\u0188\000L\000\001\000\030\000M"+
+        "\000\006\000\u00C2\000\u00CA\000\u00D4\000\u00EC\000\u00F6\000\u0117\000"+
+        "N\000\001\000D\000Q\000\001\000P\000T\000\001\000f\000U\000\001\000\u00FF"+
+        "\000W\000\001\000\u0172\000X\000\001\000\u00DE\000Y\000\001\000\u0156"+
+        "\000d\000\001\000\u013E\000i\000\001\000\027\000j\000\001\000\u0144\000"+
+        "l\000\001\000W\000n\000\001\000\u0098\000y\000\001\000\010\000\u0082\000"+
+        "\002\000c\000\u018E\000\u0084\000\001\000\u0160\000\u0086\000\002\000"+
+        "\003\000\021\000\u0087\000\001\000\031\000\u0091\000\001\000\011\000\u0092"+
+        "\000\003\000\023\000\u00FE\000\u014F\000\u0093\000\002\000\007\000\u0118"+
+        "\000\u00A8\000\001\000\u0147\000\u00A9\000\001\000\u018C\000\u00AA\000"+
+        "\001\000\u0106\000\u00AC\000\004\000\u0195\000\u01A1\000\u01A8\000\u01AB"+
+        "\000\u00AE\000\001\000\u0100\000\u00B1\000\002\000\u0119\000\u0155\000"+
+        "\u00C0\000\001\000#\000\u00C1\000\002\000\u013C\000\u014D\000\u00C3\000"+
+        "\001\000`\000\u00C4\000\001\000\u00F0\000\u00C5\000\001\000K\000\u00C7"+
+        "\000\001\000\006\000\u00C8\000\001\000\u0146\000\u00CB\000\003\000]\000"+
+        "\u009A\000\u00A2\000\u00CC\000\001\000\014\000\u00CD\000\001\000\024\000"+
+        "\u00CF\000\001\000a\000\u00D0\000\001\000(\000\u00D1\000\001\000\u013B"+
+        "\000\u00D2\000\001\000\u0104\000\u00D3\000\001\000b\000\u00D4\000\001"+
+        "\000\u0191\000\u00D6\000\001\000\015\000\u00D8\000\001\000d\000\u00EA"+
+        "\000\001\000\u00CB\000\u00ED\000\001\000\u00A1\000\u00F1\000\001\000\u0169"+
+        "\000\u00F3\000\001\000\u008D\000\u00F4\000\001\000\u0142\000\u0103\000"+
+        "\003\000\u00CE\000\u00CF\000\u00F4\000\u0104\000\001\000\u0145\000\u010B"+
+        "\000\001\000\u00D0\000\u010D\000\002\000\u00C1\000\u016F\000\u010E\000"+
+        "\001\000\u0171\000\u0110\000\001\000\u00BA\000\u0111\000\001\000\u00F1"+
+        "\000\u0112\000\001\000\u0103\000\u0113\000\001\000\u0158\000\u012C\000"+
+        "\001\000n\000\u012E\000\001\000\u00B5\000\u012F\000\002\000\u00F3\000"+
+        "\u017B\000\u0144\000\001\000.\000\u0146\000\001\000\u00BF\000\u0147\000"+
+        "\001\000\u00E1\000\u0148\000\003\000\u018A\000\u0194\000\u01A6\000\u014C"+
+        "\000\001\000\u0174\000\u014D\000\001\000\u009C\000\u014F\000\001\000\u00E2"+
+        "\000\u0151\000\001\000\u00EB\000\u0156\000\001\000\u00D9\000\u0158\000"+
+        "\001\000L\000\u0159\000\003\000\u00B4\000\u00B7\000\u00B8\000\u0160\000"+
+        "\001\000\u00F7\000\u0161\000\001\000\u00BE\000\u0162\000\001\000\u009D"+
+        "\000\u0168\000\001\000\u0164\000\u016A\000\001\000\u00C3\000\u0171\000"+
+        "\001\000-\000\u0172\000\001\000*\000\u0173\000\001\000\u0167\000\u0174"+
+        "\000\001\000\u014E\000\u0175\000\001\000\u0157\000\u0178\000\001\0006"+
+        "\000\u0180\000\001\000\022\000\u0182\000\001\000\u0152\000\u0183\000\002"+
+        "\000\u0143\000\u0162\000\u0186\000\001\000\u0170\000\u0187\000\002\000"+
+        "\u0196\000\u0197\000\u018A\000\001\000\u015D\000\u018B\000\002\000\012"+
+        "\0005\000\u018C\000\001\000\u00E4\000\u018D\000\002\000\u00CC\000\u00F5"+
+        "\000\u018E\000\001\000\u00DA\000\u018F\000\001\000\u01A4\000\u0190\000"+
+        "\001\000y\000\u0191\000\001\0001\000\u0192\000\001\000\u0083\000\u0193"+
+        "\000\001\000\u0150\000\u0194\000\001\000\u0178\000\u0195\000\001\000\u0177"+
+        "\000\u0196\000\001\000\016\000\u0197\000\010\000H\000N\000g\000z\000}"+
+        "\000~\000\u0080\000\u00A4\000\u0198\000\002\000\u00D7\000\u00D8\000\u0199"+
+        "\000\001\000)\000\u01A0\000\001\0008\000\u01A2\000\001\000\u019D\000\u01A4"+
+        "\000\001\0000\000\u01A5\000\001\000\u019C\000\u01A6\000\001\000\042\000"+
+        "\u01A8\000\001\000w\000\u01AB\000\001\000\u0139\000\u01AE\000\001\000"+
+        "\u0154\000\u01AF\000\001\000\u00D5\000\u01B1\000\001\000\u019A\000\u01B4"+
+        "\000\001\000\u019B\000\u01B9\000\003\000\u0180\000\u0186\000\u0187\000"+
+        "\u01CC\000\001\000\u00DD\000\u01E0\000\001\000\u0089\000\u01E4\000\001"+
+        "\000s\000\u01E5\000\003\000\u018F\000\u0198\000\u01A5\000\u01E6\000\001"+
+        "\000\u01A2\000\u01E7\000\001\000\u00DC\000\u01EA\000\002\000\u00D3\000"+
+        "\u0181\000\u01EB\000\001\000\u0168\000\u01EC\000\001\000\u007F\000\u01ED"+
+        "\000\001\000\u01A0\000\u01F1\000\002\000\u0091\000\u0183\000\u01F2\000"+
+        "\001\000\u00C9\000\u01F3\000\003\000\u00FC\000\u0102\000\u014B\000\u01F6"+
+        "\000\001\000\u019F\000\u01F8\000\001\000?\000\u0200\000\001\000\u00E3"+
+        "\000\u0224\000\001\000\u017A\000\u022E\000\001\000\u0141\000\u0234\000"+
+        "\015\000\u00B6\000\u00CD\000\u00D2\000\u00D6\000\u00DB\000\u00DF\000\u00E0"+
+        "\000\u00F8\000\u00F9\000\u00FA\000\u0149\000\u0153\000\u0159\000\u0236"+
+        "\000\001\000 \000\u0240\000\001\000\u00E5\000\u0241\000\002\000\u0190"+
+        "\000\u01AC\000\u0242\000\001\000\u0176\000\u0243\000\001\000\037\000\u0244"+
+        "\000\001\000\u015F\000\u0246\000\001\000\u00ED\000\u0247\000\001\000\u0105"+
+        "\000\u0248\000\001\000\u014C\000\u0249\000\002\000\u00B2\000\u0101\000"+
+        "\u024A\000\001\000\u013F\000\u024B\000\001\000\032\000\u024C\000\001\000"+
+        "\u015A\000\u024D\000\001\000\025\000\u024E\000\001\000,\000\u0251\000"+
+        "\001\000\u008B\000\u0253\000\001\0004\000\u0255\000\001\000Z\000\u0258"+
+        "\000\001\000\u00C4\000\u0259\000\001\000+\000\u0262\000\001\000_\000\u0263"+
+        "\000\001\000/\000\u0265\000\001\000\u0175\000\u0266\000\001\000$\000\u0267"+
+        "\000\001\000\u00BD\000\u0269\000\001\000\u00C8\000\u026A\000\001\000\u018B"+
+        "\000\u026C\000\001\000\u00B9\000\u026D\000\001\0007\000\u026E\000\001"+
+        "\000\u01A7\000\u026F\000\001\000\u00C6\000\u0271\000\001\000\u0148\000"+
+        "\u0273\000\001\000\u008E\000\u0275\000\001\000\u018D\000\u0276\000\001"+
+        "\000\u00EE\000\u0279\000\001\000\026\000\u0280\000\004\000\u014A\000\u015C"+
+        "\000\u0163\000\u016A\000\u0286\000\001\000\036\000\u028C\000\003\000\u0193"+
+        "\000\u0199\000\u01A9\000\u0292\000\034\000\004\0009\000:\000E\000M\000"+
+        "U\000V\000h\000i\000j\000k\000p\000q\000t\000u\000|\000\u0085\000\u0087"+
+        "\000\u008C\000\u00A9\000\u0116\000\u011B\000\u016D\000\u016E\000\u017E"+
+        "\000\u0182\000\u0184\000\u0192\000\u0298\000\001\000\u0081\000\u0299\000"+
+        "\002\000\u00EA\000\u00EF\000\u02A0\000\001\000\u0165\000\u02A2\000\001"+
+        "\000\u009F\000\u02A4\000\001\000I\000\u02A6\000\001\000\u00A5\000\u02A8"+
+        "\000\001\000\u009E\000\u02AD\000\002\000\u00E9\000\u01AE\000\u02B4\000"+
+        "\001\000\u0189\000\u02C5\000\001\000\u01AA\000\u02D2\000\002\000\u017D"+
+        "\000\u0185\000\u0304\000\001\000\u00B3\000\u0313\000\001\000\u0179\000"+
+        "\u0314\000\001\000\u013D\000\u0320\000\001\000\035\000\u032C\000\001\000"+
+        "'\000\u0336\000\002\000\034\000\u0113"
+        ;
+
+    // END GENERATED SOURCE CODE
+    //----------------------------------------------------------------
+
+    static {
+        // Unpack the int[] DATA array
+        DATA = Utility.RLEStringToIntArray(DATA_RLE);
+
+        // Unpack the int[] INDEX_BY_OFFSET array
+        INDEX_BY_OFFSET = Utility.RLEStringToIntArray(INDEX_BY_OFFSET_RLE);
+
+        // Unpack the int[] INDEX_BY_COUNTRY array
+        INDEX_BY_COUNTRY = Utility.RLEStringToIntArray(INDEX_BY_COUNTRY_RLE);
+
+        // Construct the index by name.  We unpack this array and then
+        // discard it after we're done with it.
+        int[] index_by_name_array = Utility.RLEStringToIntArray(INDEX_BY_NAME_ARRAY_RLE);
+        for (int i=0; i<IDS.length; ++i) {
+            INDEX_BY_NAME.put(IDS[i], new Integer(index_by_name_array[i]));
+        }
+    }
+}
diff --git a/src/com/ibm/icu/util/ValueIterator.java b/src/com/ibm/icu/util/ValueIterator.java
new file mode 100644
index 0000000..ab2e799
--- /dev/null
+++ b/src/com/ibm/icu/util/ValueIterator.java
@@ -0,0 +1,104 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2002, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/ValueIterator.java,v $
+* $Date: 2002/04/05 01:49:03 $
+* $Revision: 1.8 $
+*
+******************************************************************************
+*/
+
+package com.ibm.icu.util;
+
+/**
+ * <p>Interface for enabling iteration over sets of <int, Object>, where
+ * int is the sorted integer index in ascending order and Object, its 
+ * associated value.</p>
+ * <p>The ValueIterator allows iterations over integer indexes in the range 
+ * of Integer.MIN_VALUE to Integer.MAX_VALUE inclusive. Implementations of 
+ * ValueIterator should specify their own maximum subrange within the above 
+ * range that is meaningful to its applications.</p>
+ * <p>Most implementations will be created by factory methods, such as the
+ * character name iterator in UCharacter.getNameIterator. See example below.
+ * </p>
+ * Example of use:<br>
+ * <pre>
+ * ValueIterator iterator = UCharacter.getNameIterator();
+ * ValueIterator.Element result = new ValueIterator.Element();
+ * iterator.setRange(UCharacter.MIN_VALUE, UCharacter.MAX_VALUE);
+ * while (iterator.next(result)) {
+ *     System.out.println("Codepoint \\u" + 
+ *                        Integer.toHexString(result.integer) + 
+ *                        " has the character name " + (String)result.value);
+ * }
+ * </pre>
+ * @author synwee
+ * @since release 2.1, March 5th 2002
+ * @draft 2.1
+ */
+public interface ValueIterator
+{
+    // public inner class ---------------------------------------------
+    
+    /**
+    * <p>The return result container of each iteration. Stores the next 
+    * integer index and its associated value Object.</p> 
+    * @draft 2.1
+    */
+    public static final class Element
+    {
+        /**
+        * Integer index of the current iteration
+        * @draft 2.1
+        */
+        public int integer;
+        /**
+        * Gets the Object value associated with the integer index.
+        * @draft 2.1
+        */ 
+        public Object value;
+    }
+    
+    // public methods -------------------------------------------------
+    
+    /**
+    * <p>Gets the next result for this iteration and returns 
+    * true if we are not at the end of the iteration, false otherwise.</p>
+    * <p>If the return boolean is a false, the contents of elements will not
+    * be updated.</p>
+    * @param element for storing the result index and value
+    * @return true if we are not at the end of the iteration, false otherwise.
+    * @see Element
+    * @draft 2.1
+    */
+    public boolean next(Element element);
+    
+    /**
+    * <p>Resets the iterator to start iterating from the integer index 
+    * Integer.MIN_VALUE or X if a setRange(X, Y) has been called previously.
+    * </p>
+    * @draft 2.1
+    */
+    public void reset();
+    
+    /**
+     * <p>Restricts the range of integers to iterate and resets the iteration 
+     * to begin at the index argument start.</p>
+     * <p>If setRange(start, end) is not performed before next(element) is 
+     * called, the iteration will start from the integer index 
+     * Integer.MIN_VALUE and end at Integer.MAX_VALUE.</p>
+     * <p>
+     * If this range is set outside the meaningful range specified by the 
+     * implementation, next(element) will always return false.
+     * </p>
+     * @param start first integer in range to iterate
+     * @param limit 1 integer after the last integer in range 
+     * @exception IllegalArgumentException thrown when attempting to set an 
+     *            illegal range. E.g limit <= start
+     * @draft 2.1
+     */
+    public void setRange(int start, int end);
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/util/VersionInfo.java b/src/com/ibm/icu/util/VersionInfo.java
new file mode 100644
index 0000000..427e0da
--- /dev/null
+++ b/src/com/ibm/icu/util/VersionInfo.java
@@ -0,0 +1,380 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/VersionInfo.java,v $ 
+ * $Date: 2002/10/09 18:27:09 $ 
+ * $Revision: 1.8.2.1 $
+ *
+ * jitterbug 1741
+ *****************************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.HashMap;
+
+/**
+ * Class to store version numbers of the form major.minor.milli.micro.
+ * @author synwee
+ * @since March 1 2002
+ * @draft 2.1
+ */
+public final class VersionInfo
+{
+    // public data members -------------------------------------------------
+        
+    /**
+     * Unicode 1.0 version
+     * @draft 2.1
+     */
+    public static final VersionInfo UNICODE_1_0;
+    /**
+     * Unicode 1.0.1 version
+     * @draft 2.1
+     */
+    public static final VersionInfo UNICODE_1_0_1;
+    /**
+     * Unicode 1.1.0 version
+     * @draft 2.1
+     */
+    public static final VersionInfo UNICODE_1_1_0;
+    /**
+     * Unicode 1.1.5 version
+     * @draft 2.1
+     */
+    public static final VersionInfo UNICODE_1_1_5;
+    /**
+     * Unicode 2.0 version
+     * @draft 2.1
+     */
+    public static final VersionInfo UNICODE_2_0;        
+    /**
+     * Unicode 2.1.2 version
+     * @draft 2.1
+     */
+    public static final VersionInfo UNICODE_2_1_2;
+    /**
+     * Unicode 2.1.5 version
+     * @draft 2.1
+     */
+    public static final VersionInfo UNICODE_2_1_5;
+    /**
+     * Unicode 2.1.8 version
+     * @draft 2.1
+     */
+    public static final VersionInfo UNICODE_2_1_8;
+    /**
+     * Unicode 2.1.9 version
+     * @draft 2.1
+     */
+    public static final VersionInfo UNICODE_2_1_9;
+    /**
+     * Unicode 3.0 version
+     * @draft 2.1
+     */
+    public static final VersionInfo UNICODE_3_0;
+    /**
+     * Unicode 3.0.1 version
+     * @draft 2.1
+     */
+    public static final VersionInfo UNICODE_3_0_1;
+    /**
+     * Unicode 3.1.0 version
+     * @draft 2.1
+     */
+    public static final VersionInfo UNICODE_3_1_0;
+    /**
+     * Unicode 3.1.1 version
+     * @draft 2.1
+     */
+    public static final VersionInfo UNICODE_3_1_1;
+    /**
+     * Unicode 3.2 version
+     * @draft 2.1
+     */
+    public static final VersionInfo UNICODE_3_2;
+    /**
+     * ICU4J current release version
+     */
+    public static final VersionInfo ICU_VERSION;
+    
+    // public methods ------------------------------------------------------
+        
+    /**
+     * Returns an instance of VersionInfo with the argument version.
+     * @param version version String in the format of "major.minor.milli.micro"
+     *                or "major.minor.milli" or "major.minor" or "major",
+     *                where major, minor, milli, micro are non-negative numbers
+     *                <= 255. If the trailing version numbers are 
+     *                not specified they are taken as 0s. E.g. Version "3.1" is
+     *                equivalent to "3.1.0.0".
+     * @return an instance of VersionInfo with the argument version.
+     * @exception throws an IllegalArgumentException when the argument version 
+     *                is not in the right format
+     * @draft 2.1
+     */
+    public static VersionInfo getInstance(String version)
+    {
+        int length  = version.length();
+        int array[] = {0, 0, 0, 0};
+        int count   = 0;
+        int index   = 0;
+        
+        while (count < 4 && index < length) {
+            char c = version.charAt(index);
+            if (c == '.') {
+                count ++;
+            }
+            else {
+                c -= '0';
+                if (c < 0 || c > 9) {
+                    throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
+                }
+                array[count] *= 10;
+                array[count] += c;
+            }
+            index ++;
+        }
+        if (index != length) {
+            throw new IllegalArgumentException(
+                                               "Invalid version number: String '" + version + "' exceeds version format");
+        }
+        for (int i = 0; i < 4; i ++) {
+            if (array[i] < 0 || array[i] > 255) {
+                throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
+            }
+        }
+        
+        return getInstance(array[0], array[1], array[2], array[3]);
+    }
+ 
+    /** 
+     * Returns an instance of VersionInfo with the argument version.
+     * @param major major version, non-negative number <= 255.
+     * @param minor minor version, non-negative number <= 255.
+     * @param milli milli version, non-negative number <= 255.
+     * @param micro micro version, non-negative number <= 255.
+     * @exception throws an IllegalArgumentException when either arguments are
+     *                                     negative or > 255 
+     * @draft 2.1
+     */
+    public static VersionInfo getInstance(int major, int minor, int milli, 
+                                          int micro)
+    {
+        // checks if it is in the hashmap
+        // else
+        if (major < 0 || major > 255 || minor < 0 || minor > 255 || 
+            milli < 0 || milli > 255 || micro < 0 || micro > 255) {
+            throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
+        }
+        int     version = getInt(major, minor, milli, micro);
+        Integer key     = new Integer(version);
+        Object  result  = MAP_.get(key);
+        if (result == null) {
+            result = new VersionInfo(version);
+            MAP_.put(key, result);
+        }
+        return (VersionInfo)result;
+    }
+    
+    /** 
+     * Returns an instance of VersionInfo with the argument version.
+     * Equivalent to getInstance(major, minor, milli, 0).
+     * @param major major version, non-negative number <= 255.
+     * @param minor minor version, non-negative number <= 255.
+     * @param milli milli version, non-negative number <= 255.
+     * @exception throws an IllegalArgumentException when either arguments are
+     *                                     negative or > 255 
+     * @draft 2.1
+     */
+    public static VersionInfo getInstance(int major, int minor, int milli)
+    {
+        return getInstance(major, minor, milli, 0);
+    }
+    
+    /** 
+     * Returns an instance of VersionInfo with the argument version.
+     * Equivalent to getInstance(major, minor, 0, 0).
+     * @param major major version, non-negative number <= 255.
+     * @param minor minor version, non-negative number <= 255.
+     * @exception throws an IllegalArgumentException when either arguments are
+     *                                     negative or > 255 
+     * @draft 2.1
+     */
+    public static VersionInfo getInstance(int major, int minor)
+    {
+        return getInstance(major, minor, 0, 0);
+    }
+    
+    /** 
+     * Returns an instance of VersionInfo with the argument version.
+     * Equivalent to getInstance(major, 0, 0, 0).
+     * @param major major version, non-negative number <= 255.
+     * @exception throws an IllegalArgumentException when either arguments are
+     *                                     negative or > 255 
+     * @draft 2.1
+     */
+    public static VersionInfo getInstance(int major)
+    {
+        return getInstance(major, 0, 0, 0);
+    }
+ 
+    /** 
+     * Returns the String representative of VersionInfo in the format of 
+     * "major.minor.milli.micro"   
+     * @return String representative of VersionInfo
+     * @draft 2.1
+     */
+    public String toString()
+    {
+        StringBuffer result = new StringBuffer(7);
+        result.append(getMajor());
+        result.append('.');
+        result.append(getMinor());
+        result.append('.');
+        result.append(getMilli());
+        result.append('.');
+        result.append(getMicro());
+        return result.toString();
+    }
+    
+    /** 
+     * Returns the major version number
+     * @return the major version number    
+     * @draft 2.1
+     */
+    public int getMajor()
+    {
+        return (m_version_ >> 24) & LAST_BYTE_MASK_ ;
+    }
+ 
+    /** 
+     * Returns the minor version number
+     * @return the minor version number    
+     * @draft 2.1
+     */
+    public int getMinor()
+    {
+        return (m_version_ >> 16) & LAST_BYTE_MASK_ ;
+    }
+ 
+    /** 
+     * Returns the milli version number
+     * @return the milli version number    
+     * @draft 2.1
+     */
+    public int getMilli()
+    {
+        return (m_version_ >> 8) & LAST_BYTE_MASK_ ;
+    }
+ 
+    /** 
+     * Returns the micro version number
+     * @return the micro version number
+     * @draft 2.1    
+     */
+    public int getMicro()
+    {
+        return m_version_ & LAST_BYTE_MASK_ ;
+    }
+ 
+    /**
+     * Checks if this version information is equals to the argument version
+     * @param other object to be compared
+     * @return true if other is equals to this object's version information, 
+     *         false otherwise
+     * @draft 2.1
+     */
+    public boolean equals(Object other)
+    {
+        return other == this;
+    }
+ 
+    /**
+     * Compares other with this VersionInfo. 
+     * @param other VersionInfo to be compared
+     * @return 0 if the argument is a VersionInfo object that has version 
+     *           information equals to this object. 
+     *           Less than 0 if the argument is a VersionInfo object that has 
+     *           version information greater than this object. 
+     *           Greater than 0 if the argument is a VersionInfo object that 
+     *           has version information less than this object.
+     * @draft 2.1
+     */
+    public int compareTo(VersionInfo other)
+    {
+        return m_version_ - other.m_version_;
+    }
+   
+    // private data members ----------------------------------------------
+    
+    /**
+     * Version number stored as a byte for each of the major, minor, milli and
+     * micro numbers in the 32 bit int.
+     * Most significant for the major and the least significant contains the 
+     * micro numbers.
+     */
+    private int m_version_;
+    /**
+     * Map of singletons
+     */
+    private static final HashMap MAP_ = new HashMap();
+    /**
+     * Last byte mask
+     */
+    private static final int LAST_BYTE_MASK_ = 0xFF;
+    /**
+     * Error statement string
+     */
+    private static final String INVALID_VERSION_NUMBER_ = 
+        "Invalid version number: Version number may be negative or greater than 255";
+        
+    // static declaration ------------------------------------------------
+    
+    /**
+     * Initialize versions only after MAP_ has been created
+     */
+    static {
+        UNICODE_1_0   = getInstance(1, 0, 0, 0);
+        UNICODE_1_0_1 = getInstance(1, 0, 1, 0);
+        UNICODE_1_1_0 = getInstance(1, 1, 0, 0);
+        UNICODE_1_1_5 = getInstance(1, 1, 5, 0);
+        UNICODE_2_0   = getInstance(2, 0, 0, 0);        
+        UNICODE_2_1_2 = getInstance(2, 1, 2, 0);
+        UNICODE_2_1_5 = getInstance(2, 1, 5, 0);
+        UNICODE_2_1_8 = getInstance(2, 1, 8, 0);
+        UNICODE_2_1_9 = getInstance(2, 1, 9, 0);
+        UNICODE_3_0   = getInstance(3, 0, 0, 0);
+        UNICODE_3_0_1 = getInstance(3, 0, 1, 0);
+        UNICODE_3_1_0 = getInstance(3, 1, 0, 0);
+        UNICODE_3_1_1 = getInstance(3, 1, 1, 0);
+        UNICODE_3_2   = getInstance(3, 2, 0, 0);
+        ICU_VERSION = getInstance(2, 2, 1, 0);
+    }
+    
+    // private constructor -----------------------------------------------
+    
+    /**
+     * Constructor with int 
+     * @param compactversion a 32 bit int with each byte representing a number
+     */
+    private VersionInfo(int compactversion) 
+    {
+        m_version_ = compactversion;    
+    }
+    
+    /**
+     * Gets the int from the version numbers
+     * @param major non-negative version number
+     * @param minor non-negativeversion number
+     * @param milli non-negativeversion number
+     * @param micro non-negativeversion number
+     */
+    private static int getInt(int major, int minor, int milli, int micro) 
+    {
+        return (major << 24) | (minor << 16) | (milli << 8) | micro;
+    }
+}
diff --git a/src/com/ibm/icu/util/package.html b/src/com/ibm/icu/util/package.html
new file mode 100755
index 0000000..3c6a75d
--- /dev/null
+++ b/src/com/ibm/icu/util/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+  $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/util/package.html,v $
+  $Revision: 1.1 $
+  $Date: 2000/03/15 21:35:53 $
+-->
+</head>
+<body bgcolor="white">
+International calendars and other utility classes.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/richtext/awtui/AwtMenuBuilder.java b/src/com/ibm/richtext/awtui/AwtMenuBuilder.java
new file mode 100755
index 0000000..ede917b
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/AwtMenuBuilder.java
@@ -0,0 +1,238 @@
+/*
+ * @(#)$RCSfile: AwtMenuBuilder.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:41:49 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.Frame;
+import java.awt.Menu;
+import java.awt.MenuBar;
+import java.awt.Window;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+
+import com.ibm.richtext.uiimpl.*;
+import com.ibm.richtext.uiimpl.DialogItem.DialogFactory;
+
+// TO DO:  Don't hard-code menu configurations.  Instead, specify them with
+// strings somehow.  This is an improvement over what we had, and it'll do
+// for now.
+
+/**
+ * AwtMenuBuilder creates a set of AWT menus for interacting
+ * with an MTextPanel.  Future versions of this class may allow
+ * clients to control the menu contents.
+ * @see MTextPanel
+ */
+public final class AwtMenuBuilder extends MenuBuilder {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final AwtMenuBuilder INSTANCE = new AwtMenuBuilder();
+    
+    /**
+     * Id for an Edit menu.  The Edit menu has the following items:
+     * <ul>
+     * <li><b>Undo</b> - invoke undo() on the MTextPanel</li>
+     * <li><b>Redo</b> - invoke redo() on the MTextPanel</li>
+     * <li><b>Cut</b> - invoke cut() on the MTextPanel</li>
+     * <li><b>Copy</b> - invoke copy() on the MTextPanel</li>
+     * <li><b>Paste</b> - invoke paste() on the MTextPanel</li>
+     * <li><b>Clear</b> - invoke clear() on the MTextPanel</li>
+     * <li><b>Select All</b> - invoke selectAll() on the MTextPanel</li>
+     * </ul>
+     */
+    public static final int EDIT = MenuBuilder.EDIT;
+    /**
+     * Id for the point sizes menu.  The menu has items that set the size of a character
+     * in a typeface.
+     */
+    public static final int SIZE = MenuBuilder.SIZE;
+    /**
+     * Id for a Style menu.  The Style menu has the following items:
+     * <ul>
+     * <li><b>Plain</b> - remove <code>WEIGHT</code>,
+     *                    <code>POSTURE</code>,
+     *                    <code>UNDERLINE</code> and
+     *                    <code>STRIKETHROUGH</code> attributes from the
+     * current selection</li>
+     * <li><b>Bold</b> - add <code>{WEIGHT,WEIGHT_BOLD}</code> to
+     * the current selection</li>
+     * <li><b>Italic</b> - add <code>{POSTURE,POSTURE_ITALIC}</code> to
+     * the current selection</li>
+     * <li><b>Underline</b> - add <code>{UNDERLINE,UNDERLINE_ON}</code> to
+     * the current selection</li>
+     * <li><b>Strikethrough</b> - add <code>{STRIKETHROUGH,STRIKETHROUGH_ON}</code>
+     * to the current selection</li>
+     * <li><b>Font...</b> - display a dialog allowing the user to
+     * select a typeface (font family) for the current selection</li>
+     * <li><b>Forecolor...</b> - display a dialog allowing the user to
+     * select a foreground color for the current selection</li>
+     * <li><b>Backcolor...</b> - display a dialog allowing the user to
+     * select a background color for the current selection</li>
+     * </ul>
+     */
+    public static final int STYLE = MenuBuilder.STYLE;
+    /**
+     * Id for a paragraph alignment menu.  The menu has the following items:
+     * <ul>
+     * <li><b>Leading</b> - give selected paragraph(s) LEADING flush</li>
+     * <li><b>Center</b> - give selected paragraph(s) CENTER flush</li>
+     * <li><b>Trailing</b> - give selected paragraph(s) TRAILING flush</li>
+     * <li><b>Justified</b> - give selected paragraph(s) full justification</li>
+     * </ul>
+     */
+    public static final int FLUSH = MenuBuilder.FLUSH;
+    /**
+     * Id for a menu that sets the KeyRemap
+     * on an MTextPanel.  The menu has the following items:
+     * <ul>
+     * <li><b>Default</b> - set KeyRemap to identity remap</li>
+     * <li><b>Arabic</b> - set KeyRemap to Arabic transliteration</li>
+     * <li><b>Hebrew</b> - set KeyRemap to Hebrew transliteration</li>
+     * <li><b>Israel Nikud</b> - set KeyRemap to Israel Nikud</li>
+     * <li><b>Thai Ketmanee</b> - set KeyRemap to Thai Ketmanee</li>
+     * </ul>
+     */
+    public static final int KEYMAP = MenuBuilder.KEYMAP;
+    /**
+     * Id for a menu that sets
+     * the primary run direction for a paragraph.  Run direction can be left-to-right,
+     * right-to-left, or can use the default run direction from the Unicode bidi algorithm.
+     */
+    public static final int BIDI = MenuBuilder.BIDI;
+    /**
+     * Id for a menu with an <b>About</b> item.  When selected, 
+     * the item displays a Frame containing some
+     * self-promotional text.
+     */
+    public static final int ABOUT = MenuBuilder.ABOUT;
+    
+    /**
+     * Return an instance of AwtMenuBuilder.
+     */
+    public static AwtMenuBuilder getInstance() {
+        
+        return INSTANCE;
+    }
+    
+    private MenuBar fMenuBar;
+    
+    private AwtMenuBuilder() {
+    }
+    
+    /**
+     * Add a standard set of menus to the given menu bar.  The menus 
+     * will interact with the given MTextPanel.
+     * @param menuBar the MenuBar to which menus are added
+     * @param textPanel the MTextPanel with which the menus interact
+     * @param frame a Frame to use as the parent of any dialogs created by a 
+     *   a menu item.  If null, menu items which create dialogs will be omitted.
+     */
+    public void createMenus(MenuBar menuBar, 
+                            MTextPanel textPanel,
+                            Frame frame) {
+        
+        createMenus(menuBar, textPanel, frame, defaultMenus);
+    }
+    
+    /**
+     * Add a set of menus to the given menu bar.  The menus 
+     * will interact with the given MTextPanel.
+     * @param menuBar the MenuBar to which menus are added
+     * @param textPanel the MTextPanel with which the menus interact
+     * @param frame a Frame to use as the parent of any dialogs created by a 
+     *   a menu item.  If null, menu items which create dialogs will be omitted.
+     * @param menus an array of integer menu id's.  Each element of the
+     *   array must be one of this class's menu id constants.  If null,
+     *   the default menus are created.
+     */
+    public void createMenus(MenuBar menuBar, 
+                            MTextPanel textPanel,
+                            Frame frame,
+                            int[] menus) {
+        
+        if (menus == null) {
+            menus = defaultMenus;
+        }
+        
+        synchronized (MItem.LOCK) {
+            
+            fMenuBar = menuBar;
+            doCreateMenus(textPanel, frame, menus);
+            fMenuBar = null;
+        }
+    }
+    
+    protected void handleAddMenu(String key) {
+        
+        Menu menu = new Menu(ResourceUtils.getResourceString(key));
+        fMenuBar.add(menu);
+        MItem.setItemFactory(new AwtMenuFactory(menu));
+    }
+
+    protected DialogFactory createObjectDialogFactory(final String dialogTitle,
+                                                      final String dialogMessage,
+                                                      final Object key,
+                                                      final boolean character,
+                                                      final String[] names,
+                                                      final Object[] values) {
+        
+        final Frame dialogParent = fDialogParent;
+
+        return new DialogFactory() {    
+            public Window createDialog(MTextPanel textPanel) {
+                return new ObjectDialog(dialogParent,
+                                        dialogTitle,
+                                        dialogMessage,
+                                        textPanel,
+                                        key,
+                                        character,
+                                        names,
+                                        values);
+            }
+        };
+    }
+    
+    protected DialogFactory createNumberDialogFactory(final String dialogTitle,
+                                                      final String dialogMessage,
+                                                      final Object key,
+                                                      final boolean character) {
+        
+        final Frame dialogParent = fDialogParent;
+            
+        return new DialogFactory() {
+            public Window createDialog(MTextPanel textPanel) {
+                return new NumberDialog(dialogParent,
+                                        dialogTitle,
+                                        dialogMessage,
+                                        textPanel,
+                                        key,
+                                        character,
+                                        1);
+            }
+        };
+    }    
+    
+    protected DialogFactory createAboutDialogFactory() {
+        
+        return new DialogFactory() {
+            public Window createDialog(MTextPanel textPanel) {
+                String title = ResourceUtils.getResourceString(FrameResources.ABOUT_TITLE);
+                return new MessageDialog(title, AboutText.getAboutText());
+            }
+        };
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/awtui/AwtMenuFactory.java b/src/com/ibm/richtext/awtui/AwtMenuFactory.java
new file mode 100755
index 0000000..9e26179
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/AwtMenuFactory.java
@@ -0,0 +1,116 @@
+/*
+ * @(#)$RCSfile: AwtMenuFactory.java,v $ $Revision: 1.2 $ $Date: 2000/04/20 19:29:08 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.CheckboxMenuItem;
+import java.awt.Menu;
+import java.awt.MenuItem;
+import java.awt.MenuShortcut;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+
+import com.ibm.richtext.uiimpl.resources.MenuData;
+import com.ibm.richtext.uiimpl.MItem;
+import com.ibm.richtext.uiimpl.MItem.ItemFactory;
+
+final class AwtMenuFactory implements ItemFactory {
+        
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private final class AwtMItem extends MItem {
+        
+        private MenuItem fItem;
+        
+        AwtMItem(MenuItem item) {
+            
+            fItem = item;
+            try {
+                CheckboxMenuItem chItem = (CheckboxMenuItem) fItem;
+                chItem.addItemListener(new ItemListener() {
+                    public void itemStateChanged(ItemEvent e) {
+                        handleSelected();
+                    }
+                });
+            }
+            catch(ClassCastException e) {
+                item.addActionListener(new ActionListener() {
+                    public void actionPerformed(ActionEvent evt) {
+                        handleSelected();
+                    }
+                });
+            }
+        }
+        
+        // Ack - how do you do this from inner classes??
+        protected void handleSelected() {
+            
+            super.handleSelected();
+        }
+        
+        public final void setEnabled(boolean enabled) {
+            
+            fItem.setEnabled(enabled);
+        }
+        
+        public void setState(boolean checked) {
+            
+            try {
+                CheckboxMenuItem item = (CheckboxMenuItem) fItem;
+                item.setState(checked);
+            }
+            catch(ClassCastException e) {
+                throw new Error("Cannot perform setChecked on non-checkbox item");
+            }
+        }
+    }
+    
+    private Menu fMenu;
+        
+    AwtMenuFactory(Menu menu) {
+            
+        fMenu = menu;
+    }
+    
+    private MItem handleCreate(MenuItem item,
+                               MenuData menuData) {
+
+        if (menuData.hasShortcut()) {
+            item.setShortcut(new MenuShortcut(menuData.getShortcutChar()));
+        }
+        
+        fMenu.add(item);
+        
+        return new AwtMItem(item);
+    }
+        
+    public MItem createItem(MenuData menuData) {
+        
+        return handleCreate(new MenuItem(menuData.getName()), menuData);
+    }        
+
+    public MItem createCheckboxItem(MenuData menuData) {
+        
+        return handleCreate(new CheckboxMenuItem(menuData.getName()), menuData);
+    }
+    
+    public void createSeparator() {
+        
+        fMenu.add(new MenuItem("-"));
+    }
+}
+    
diff --git a/src/com/ibm/richtext/awtui/MTabRulerComponent.java b/src/com/ibm/richtext/awtui/MTabRulerComponent.java
new file mode 100755
index 0000000..d6b47bc
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/MTabRulerComponent.java
@@ -0,0 +1,92 @@
+/*
+ * @(#)$RCSfile: MTabRulerComponent.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:41:49 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.Color;
+import com.ibm.richtext.styledtext.MTabRuler;
+import com.ibm.richtext.textpanel.MTextPanel;
+
+/**
+ * MTabRulerComponent is implemented by components which provide a tab-ruler
+ * interface for interacting with an MTextPanel.
+ * <p>
+ * Users interact with MTabRulerComponent implementations as follows:
+ * <ul>
+ * <li>The leading margin can be set by dragging the bottom half
+ * of the leftmost triangle.  The first-line indent will "stick" with
+ * the leading margin.</li>
+ * <li>The first-line indent can be set by dragging the top half of the
+ * leftmost triangle.  The first-line indent applies to the first line of
+ * a paragraph.</li>
+ * <li>The trailing margin can be set by dragging the rightmost triangle.</li>
+ * <li>Tabs can be added to the ruler by clicking the mouse on the ruler with the
+ * control key pressed.  Four kinds of tabs are provided:  leading, trailing, center,
+ * and decimal.  The type of a tab can be changed by double-clicking the tab.</li>
+ * <li>Tabs can be repositioned by dragging them with the mouse.</li>
+ * </ul>
+ * <p>
+ * MTabRulerComponent's appearance will reflect the paragraph styles in the
+ * first selected paragraph.  Style changes performed with an 
+ * MTabRulerComponent will apply to all selected paragraphs.
+ */
+public interface MTabRulerComponent {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    /**
+     * Listen to the given MTextPanel and reflect its changes,
+     * and update its paragraph styles when TabRuler is
+     * manipulated.
+     * @param textPanel the MTextPanel to listen to
+     */
+    public void listenToTextPanel(MTextPanel textPanel);
+
+    /**
+     * Return the background color of this TabRuler.
+     * @return the background color of this TabRuler
+     */
+    public Color getBackColor();
+
+    /**
+     * Set the background color of this TabRuler.
+     * @param backColor the new background color of this TabRuler
+     */
+    public void setBackColor(Color backColor);
+
+    /**
+     * Return the MTabRuler represented by this TabRuler.
+     * @return the MTabRuler represented by this TabRuler
+     */
+    public MTabRuler getRuler();
+
+    /**
+     * Return the leading margin of this TabRuler.
+     * @return the leading margin of this TabRuler
+     */
+    public int getLeadingMargin();
+
+    /**
+     * Return the first line indent of this TabRuler.
+     * @return the first line indent of this TabRuler
+     */
+    public int getFirstLineIndent();
+
+    /**
+     * Return the trailing margin of this TabRuler.
+     * @return the trailing margin of this TabRuler
+     */
+    public int getTrailingMargin();
+}
diff --git a/src/com/ibm/richtext/awtui/MessageDialog.java b/src/com/ibm/richtext/awtui/MessageDialog.java
new file mode 100755
index 0000000..47c938d
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/MessageDialog.java
@@ -0,0 +1,67 @@
+/*
+ * @(#)$RCSfile: MessageDialog.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:41:49 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.CardLayout;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+
+/**
+ * MessageDialog is a simple Frame which displays a styled
+ * text message in a TextPanel.
+ * The text in the message is not selectable or editable.
+ * @see MConstText
+ * @see TextPanel
+ */
+public final class MessageDialog extends Frame {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+    * Create a new MessageDialog.
+    * @param title the dialog's title
+    * @param message the text which will appear in the dialog
+    */
+    public MessageDialog(String title, MConstText message)
+    {
+        super(title);
+
+        setLayout(new CardLayout());
+        TextPanelSettings settings = TextPanel.getDefaultSettings();
+        settings.setScrollable(false);
+        settings.setSelectable(false);
+        TextPanel panel = new TextPanel(settings, message, null);
+
+        panel.setBackground(Color.black);
+        add("Center", panel);
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                setVisible(false);
+                dispose();
+            }
+        });
+
+        setSize(450,320);
+    }
+}
diff --git a/src/com/ibm/richtext/awtui/NumberDialog.java b/src/com/ibm/richtext/awtui/NumberDialog.java
new file mode 100755
index 0000000..f3c976f
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/NumberDialog.java
@@ -0,0 +1,155 @@
+/*
+ * @(#)$RCSfile: NumberDialog.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:41:49 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.FlowLayout;
+import java.awt.Dialog;
+import java.awt.TextField;
+import java.awt.Button;
+import java.awt.Frame;
+import java.awt.Panel;
+import java.awt.Label;
+
+import java.text.NumberFormat;
+import java.text.ParseException;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowAdapter;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.MenuItemSet;
+import com.ibm.richtext.uiimpl.ResourceUtils;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.textpanel.MTextPanel;
+
+/**
+* Simple dialog which gets a number, and sends an appropriate command
+*/
+final class NumberDialog extends Dialog implements ActionListener
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private MTextPanel fTextPanel;
+    private TextField fInput = null;
+    private Button fOKButton = null;
+    private Button fCancelButton = null;
+    private boolean fCharacter;
+    private Object fKey;
+    private float fMultiplier; 
+
+    /**
+     * @param multiplier the factor by which to multiply the user's
+     *        selection before creating the attribute value.   This
+     *        is useful for subscripting.
+     */
+    NumberDialog(Frame parent,
+                 String title,
+                 String message,
+                 MTextPanel textPanel,
+                 Object key,
+                 boolean character,
+                 float multiplier) {
+
+        super(parent, title, false);
+        fTextPanel = textPanel;
+        fKey = key;
+        fCharacter = character;
+        fMultiplier = multiplier;
+        setLayout(new java.awt.GridLayout(2,1));
+
+        Panel panel = new Panel();
+        panel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 15));
+        fInput = new TextField(5);
+        panel.add(new Label(message));
+        panel.add(fInput);
+        add("Center", panel);
+
+        fCancelButton = new Button(ResourceUtils.getResourceString(FrameResources.CANCEL));
+        fOKButton = new Button(ResourceUtils.getResourceString(FrameResources.OK));
+        Panel p = new Panel();
+        p.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
+        p.add(fCancelButton);
+        p.add(fOKButton);
+        add("South", p);
+
+        pack();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                closeWindow(false);
+            }
+        });
+        
+        fOKButton.addActionListener(this);
+        fCancelButton.addActionListener(this);
+    }
+
+    private void closeWindow(boolean sendAction) {
+
+        setVisible(false);
+
+        int num = 0;
+        if (sendAction) {
+            try {
+                String text = fInput.getText();
+                num = NumberFormat.getInstance().parse(text).intValue();
+            }
+            catch (ParseException exception) {
+                sendAction = false;
+            }
+        }
+
+        if (sendAction) {
+            sendAction(num);
+        }
+
+        dispose();
+    }
+
+    public void actionPerformed(ActionEvent e) {
+
+        Object source = e.getSource();
+
+        if (source == fOKButton) {
+            closeWindow(true);
+        }
+        else if (source == fCancelButton) {
+            closeWindow(false);
+        }
+        else {
+            throw new IllegalArgumentException("Invalid ActionEvent!");
+        }
+    }
+
+    /**
+    * Handle the user input
+    * @param the number the user typed in
+    */
+    private void sendAction(int number) {
+        float num = number * fMultiplier;
+        StyleModifier modifier = StyleModifier.createAddModifier(
+                                                fKey,
+                                                new Float(num));
+        if (fCharacter == MenuItemSet.CHARACTER) {
+            fTextPanel.modifyCharacterStyleOnSelection(modifier);
+        }
+        else {
+            fTextPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/awtui/ObjectDialog.java b/src/com/ibm/richtext/awtui/ObjectDialog.java
new file mode 100755
index 0000000..de86623
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/ObjectDialog.java
@@ -0,0 +1,170 @@
+/*
+ * @(#)$RCSfile: ObjectDialog.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:32 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.util.Hashtable;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.MenuItemSet;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.ResourceUtils;
+
+import java.awt.Dialog;
+import java.awt.Frame;
+import java.awt.Button;
+import java.awt.Choice;
+import java.awt.Label;
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.Panel;
+import java.awt.GridLayout;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowAdapter;
+
+/**
+* Simple dialog which gets a color
+*/
+final class ObjectDialog extends Dialog implements ActionListener
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private final MTextPanel fTextPanel;
+    private final Object fKey;
+    private boolean fCharacter;
+
+    private final Button fOKButton;
+    private final Button fCancelButton;
+    private final Choice fItems;
+    private final Hashtable fNameToValueMap;
+    /**
+    * Construct a new ColorDialog.
+    * @param parent the dialog's parent frame
+    * @param title the dialogs title
+    * @param message the message displayed next to the input box
+    */
+    ObjectDialog(Frame parent, 
+                 String title, 
+                 String message, 
+                 MTextPanel textPanel,
+                 Object key,
+                 boolean character,
+                 String[] names,
+                 Object[] values) {
+                    
+        super(parent, title, false);
+        fTextPanel = textPanel;
+        fKey = key;
+        fCharacter = character;
+        
+        setLayout(new GridLayout(2, 1));
+
+        Panel panel = new Panel();
+        panel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
+        fItems = new Choice();
+
+        if (names.length != values.length) {
+            throw new IllegalArgumentException("Must have same number of names and values.");
+        }
+
+        fNameToValueMap = new Hashtable(names.length);
+        
+        for (int i=0; i < names.length; i++) {
+            fItems.add(names[i]);
+            if (values[i] != null) {
+                fNameToValueMap.put(names[i], values[i]);
+            }
+        }
+
+        panel.add(new Label(message));        
+        panel.add(fItems);
+        
+        add("North", panel);
+
+        fCancelButton = new Button(ResourceUtils.getResourceString(FrameResources.CANCEL));
+        fOKButton = new Button(ResourceUtils.getResourceString(FrameResources.OK));
+        Panel p = new Panel();
+        p.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
+        p.add(fCancelButton);
+        p.add(fOKButton);
+        add("South", p);
+
+        pack();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                closeWindow(false);
+            }
+        });
+        
+        fOKButton.addActionListener(this);
+        fCancelButton.addActionListener(this);
+    }
+
+    private void closeWindow(boolean sendAction) {
+
+        setVisible(false);
+        if (sendAction) {
+            Object value = fNameToValueMap.get(fItems.getSelectedItem());
+            sendAction(value);
+        }
+        dispose();
+    }
+
+    public void actionPerformed(ActionEvent e) {
+
+        Object source = e.getSource();
+
+        if (source == fOKButton) {
+            closeWindow(true);
+        }
+        else if (source == fCancelButton) {
+            closeWindow(false);
+        }
+        else {
+            throw new IllegalArgumentException("Invalid ActionEvent!");
+        }
+    }
+
+    /**
+    * Handle the user input
+    * @param obj the value object
+    */
+    private void sendAction(Object value) {
+
+        StyleModifier modifier;
+        if (value != null) {
+            modifier = StyleModifier.createAddModifier(fKey, value);
+        }
+        else {
+            AttributeSet set = new AttributeSet(fKey);
+            modifier = StyleModifier.createRemoveModifier(set);
+        }
+        
+        if (fCharacter == MenuItemSet.CHARACTER) {
+            fTextPanel.modifyCharacterStyleOnSelection(modifier);
+        }
+        else {
+            fTextPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/awtui/TabRuler.java b/src/com/ibm/richtext/awtui/TabRuler.java
new file mode 100755
index 0000000..44825d5b
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/TabRuler.java
@@ -0,0 +1,131 @@
+/*
+ * @(#)$RCSfile: TabRuler.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:41:49 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Graphics;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.TabRulerImpl;
+import com.ibm.richtext.styledtext.MTabRuler;
+
+/**
+ * TabRuler is an implementation of MTabRulerComponent in an AWT component.
+ */
+public final class TabRuler extends Component implements MTabRulerComponent {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private TabRulerImpl fImpl;
+    
+    /**
+     * Create a new TabRuler.
+     * @param baseline the y-coordinate of the ruler's baseline
+     * @param origin the x-coordinate in this Component where
+     *     the left margin appears
+     * @param textPanel the MTextPanel to listen to.  This TabRuler
+     *     will reflect the MTextPanel's paragraph styles, and update
+     *     the paragraph styles when manipulated.
+     */
+    public TabRuler(int baseline, int origin, MTextPanel textPanel) {
+        
+        fImpl = new TabRulerImpl(baseline, origin, textPanel, this);
+    }
+    
+    /**
+     * Listen to the given MTextPanel and reflect its changes,
+     * and update its paragraph styles when TabRuler is
+     * manipulated.
+     * @param textPanel the MTextPanel to listen to
+     */
+    public void listenToTextPanel(MTextPanel textPanel) {
+
+        fImpl.listenToTextPanel(textPanel);
+    }
+    
+    /**
+     * Return the background color of this TabRuler.
+     * @return the background color of this TabRuler
+     */
+    public Color getBackColor() {
+
+        return fImpl.getBackColor();
+    }
+    
+    /**
+     * Set the background color of this TabRuler.
+     * @param backColor the new background color of this TabRuler
+     */
+    public void setBackColor(Color backColor) {
+
+        fImpl.setBackColor(backColor);
+    }
+    
+    /**
+     * Return the MTabRuler represented by this TabRuler.
+     * @return the MTabRuler represented by this TabRuler
+     */
+    public MTabRuler getRuler() {
+        
+        return fImpl.getRuler();
+    }
+
+    /**
+     * Return the leading margin of this TabRuler.
+     * @return the leading margin of this TabRuler
+     */
+    public int getLeadingMargin() {
+        
+        return fImpl.getLeadingMargin();
+    }
+
+    /**
+     * Return the first line indent of this TabRuler.
+     * @return the first line indent of this TabRuler
+     */
+    public int getFirstLineIndent() {
+        
+        return fImpl.getFirstLineIndent();
+    }
+
+    /**
+     * Return the trailing margin of this TabRuler.
+     * @return the trailing margin of this TabRuler
+     */
+    public final int getTrailingMargin() {
+        
+        return fImpl.getTrailingMargin();
+    }
+    
+    // The following are Component methods which need to be delegated to
+    // the implementation:
+    
+    public void paint(Graphics g) {
+        
+        fImpl.paint(g);
+    }
+    
+    public Dimension getPreferredSize() {
+        
+        return fImpl.getPreferredSize();
+    }
+
+    public Dimension getMinimumSize() {
+        
+        return fImpl.getMinimumSize();
+    }
+}
diff --git a/src/com/ibm/richtext/awtui/TextFrame.java b/src/com/ibm/richtext/awtui/TextFrame.java
new file mode 100755
index 0000000..2396fd8
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/TextFrame.java
@@ -0,0 +1,128 @@
+/*
+ * @(#)$RCSfile: TextFrame.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:41:49 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.uiimpl.ResourceUtils;
+
+import java.awt.BorderLayout;
+import java.awt.Frame;
+import java.awt.Menu;
+import java.awt.MenuBar;
+import java.awt.Toolkit;
+
+import java.awt.datatransfer.Clipboard;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+/**
+ * TextFrame is a Frame containing an editable TextPanel, a set of standard
+ * menus, and a TabRuler.  This class can be used as-is, but is
+ * primarily intended to be a simple example of how to use the other classes
+ * in this package.
+ * @see com.ibm.richtext.textpanel.TextPanel
+ * @see AwtMenuBuilder
+ * @see TabRuler
+ */
+public final class TextFrame extends Frame {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private TextPanel fTextPanel;
+
+    /**
+     * Create a new TextFrame with no text and no title.
+     */
+    public TextFrame() {
+        
+        super();
+        init(null, Toolkit.getDefaultToolkit().getSystemClipboard());
+    }
+    
+    /**
+     * Create a new TextFrame with no text and the given title.
+     * @param title the title of this Frame
+     */
+    public TextFrame(String title) {
+        
+        super(title);
+        init(null, Toolkit.getDefaultToolkit().getSystemClipboard());
+    }
+    
+    /**
+     * Create a new TextFrame with the given text and title, whose
+     * TextPanel will use the given clipboard.
+     * @param text the initial text in the TextPanel.  If null the
+     *      TextPanel will initially be empty
+     * @param title the title of this Frame
+     * @param clipboard the Clipboard which the TextPanel will use.
+     *      If null the TextPanel will use a private Clipboard
+     */
+    public TextFrame(MConstText text,
+                     String title,
+                     Clipboard clipboard) {
+
+        super(title);
+        init(text, clipboard);
+    }
+
+    private void init(MConstText text, Clipboard clipboard) {
+        
+        fTextPanel = new TextPanel(text, clipboard);
+
+        TabRuler tabRuler = new TabRuler(14, 10, fTextPanel);
+
+        createMenus();
+
+        setLayout(new BorderLayout());
+        add(fTextPanel, "Center");
+        add(tabRuler, "North");
+        pack();
+    }
+
+    private void createMenus() {
+
+        MenuBar menuBar = new MenuBar();
+
+        AwtMenuBuilder.getInstance().createMenus(menuBar, fTextPanel, this);
+
+        setMenuBar(menuBar);
+    }
+
+    /**
+     * Return the MTextPanel in this frame.
+     */
+    public MTextPanel getTextPanel() {
+
+        return fTextPanel;
+    }
+    
+    public static void main(String[] args) {
+        
+        TextFrame frame = new TextFrame();
+        frame.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
+        frame.setSize(550, 700);
+        frame.show();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/awtui/package.html b/src/com/ibm/richtext/awtui/package.html
new file mode 100755
index 0000000..57fcc41
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/package.html
@@ -0,0 +1,5 @@
+<html>
+<body bgcolor="white">
+Provides classes for building an AWT-based user interface for a TextPanel.
+</body>
+</html>
diff --git a/src/com/ibm/richtext/demo/AwtDocumentWindow.java b/src/com/ibm/richtext/demo/AwtDocumentWindow.java
new file mode 100755
index 0000000..ab0400f
--- /dev/null
+++ b/src/com/ibm/richtext/demo/AwtDocumentWindow.java
@@ -0,0 +1,365 @@
+/*
+ * @(#)$RCSfile: AwtDocumentWindow.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:33 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import com.ibm.richtext.awtui.TabRuler;
+
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.textpanel.TextPanelListener;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.awtui.AwtMenuBuilder;
+
+import com.ibm.richtext.print.PrintingUtils;
+
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Dialog;
+import java.awt.FileDialog;
+import java.awt.GridLayout;
+import java.awt.Frame;
+import java.awt.Menu;
+import java.awt.MenuBar;
+import java.awt.Label;
+import java.awt.Panel;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import java.io.File;
+
+import java.text.MessageFormat;
+
+/**
+ * AwtDocumentWindow is a Frame containing a TextPanel, with a document
+ * for storing the text in the TextPanel.
+ */
+public final class AwtDocumentWindow extends Frame implements DocumentWindow {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private TextPanel fTextPanel;
+    private EditApplication fApplication;
+    private TextDocument fDocument;
+
+    /**
+     * Create a new AwtDocumentWindow.
+     * @param application the application that owns this document
+     * @param clipboard the clipboard to use
+     * @param document the document to show in this AwtDocumentWindow
+     */
+    AwtDocumentWindow(EditApplication application,
+                   TextDocument document,
+                   TextPanelSettings textPanelSettings,
+                   boolean useTabRuler,
+                   TextPanelListener listener,
+                   boolean supportStyledText,
+                   boolean supportPlainText,
+                   int[] menus) {
+
+        fApplication = application;
+        
+        fTextPanel = new TextPanel(textPanelSettings, null, application.getClipboard());
+        if (listener != null) {
+            fTextPanel.addListener(listener);
+        }
+        setDocument(document);
+
+        addMenuBar(supportStyledText, supportPlainText, menus);
+
+        setLayout(new BorderLayout());
+
+        if (useTabRuler) {
+            TabRuler tabRuler = new TabRuler(14, 10, fTextPanel);
+            add(tabRuler, "North");
+        }
+        
+        add(fTextPanel, "Center");
+        pack();
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                doClose();
+            }
+        });
+    }
+
+    private void addMenuBar(boolean supportStyledText, 
+                            boolean supportPlainText,
+                            int[] menus) {
+        
+        MenuBar menuBar = new MenuBar();
+        String menuTitle = ResourceUtils.getString(EditorResources.FILE);
+        Menu menu = new Menu(menuTitle);
+        new AwtFileMenuManager(menu, fApplication, this,
+                                supportStyledText, supportPlainText);
+        menuBar.add(menu);
+
+        AwtMenuBuilder.getInstance().createMenus(menuBar, fTextPanel, this, menus);
+        setMenuBar(menuBar);
+    }
+    
+    /**
+     * Return true if it is OK to set the document text and file to
+     * something different.
+     */
+    private boolean canChangeDocuments() {
+
+        // If the text is modified, give the user a chance to
+        // save it.  Otherwise return true.
+
+        if (fDocument.isModified()) {
+            byte save = askSave(this, getTitle());
+            if (save == YES) {
+                return doSave();
+            }
+            else {
+                return save == NO;
+            }
+        }
+        else {
+            return true;
+        }
+    }
+
+    private void setDocument(TextDocument document) {
+
+        fDocument = document;
+        fDocument.setTextPanel(fTextPanel);
+        setTitle(fDocument.getTitle());
+    }
+
+    /**
+     * Set the document to empty text with no associated file.  If
+     * the document text is not saved, prompt the user to save the
+     * the text first.  If this operation is canceled, the document
+     * is unchanged.
+     */
+    public void doNew() {
+
+        if (!canChangeDocuments()) {
+            return;
+        }
+        
+        setDocument(fApplication.createNewDocument());
+    }
+
+    /**
+     * Prompt the user for a file from which to load a text document.
+     * If the current text is not saved, first prompt the user to
+     * save.  If either operation is canceled or fails, the document
+     * is unchanged.
+     */
+    public void doOpen() {
+
+        if (!canChangeDocuments()) {
+            return;
+        }
+
+        TextDocument document = fApplication.openDocument(this);
+
+        if (document != null) {
+            setDocument(document);
+        }
+    }
+
+    /**
+     * Prompt the user for a file in which to save the document text.
+     * If this operation is not canceled, save the text in the file.
+     * The file becomes this document's file.
+     */
+    public boolean doSaveAs(int format) {
+
+        String title = ResourceUtils.getString(EditorResources.SAVE_TITLE);
+        File file = getFileFromDialog(fDocument.getFile(), title, this, FileDialog.SAVE);
+        
+        if (file == null) {
+            return false;
+        }
+        
+        fDocument.setFile(file);
+        setTitle(fDocument.getTitle());
+
+        fDocument.setFormat(format);
+        
+        return fDocument.save();
+    }
+
+    /**
+     * Save the text in this document.  If there is no file associated
+     * with the text, this is equivalent to <code>doSaveAs</code>.
+     * This method returns true if the document was successfully saved.
+     */
+    public boolean doSave() {
+
+        if (fDocument.getFile() == null) {
+            return doSaveAs(fDocument.getFormat());
+        }
+        
+        return fDocument.save();
+    }
+
+    /**
+     * Print the contents of this window.
+     */
+    public void doPrint() {
+
+        PrintingUtils.userPrintText(fDocument.getText(),
+                                    fTextPanel.getDefaultValues(),
+                                    this,
+                                    this.getTitle());
+    }
+
+    /**
+     * Attempt to close this window.  If the text has not been saved,
+     * give the user a chance to save the text before closing the
+     * window.  If the user cancels this operation, this method returns
+     * false and the window is not closed;  otherwise this method
+     * returns true and the window is closed.
+     */
+    public boolean doClose() {
+
+        if (canChangeDocuments()) {
+            setVisible(false);
+            dispose();
+            fApplication.removeDocumentWindow(this);
+            return true;
+        }
+        else {
+            return false;
+        }
+    }
+
+    /**
+     * Retrieve a file from a dialog.  If the user does not
+     * select a file in the dialog this method returns null.
+     * @param kind either FileDialog.LOAD or FileDialog.SAVE.
+     */
+    public static File getFileFromDialog(File origFile,
+                                         String dialogTitle, 
+                                         Frame owner,
+                                         int kind) {
+        
+        FileDialog dialog = new FileDialog(owner, 
+                                           dialogTitle,
+                                           kind);
+        if (origFile != null) {
+            dialog.setDirectory(origFile.getParent());
+            dialog.setFile(origFile.getName());
+        }
+        dialog.show();
+        String fileStr = dialog.getFile();
+        String dirStr = dialog.getDirectory();
+        
+        File file = null;
+        
+        if (fileStr != null) {
+            file = new File(dirStr, fileStr);
+        }
+        
+        return file;
+    }
+    
+    private static final byte YES = 0;
+    private static final byte NO = 1;
+    private static final byte CANCEL = 2;
+
+    private static final class DialogListener implements ActionListener {
+
+        Dialog fDialog;
+        Button fYes, fNo, fCancel;
+        byte fState;
+
+        DialogListener(Dialog dialog,
+                       Button yes,
+                       Button no,
+                       Button cancel) {
+
+            fDialog = dialog;
+            fYes = yes;
+            fNo = no;
+            fCancel = cancel;
+            fYes.addActionListener(this);
+            fNo.addActionListener(this);
+            fCancel.addActionListener(this);
+            fState = -1;
+        }
+
+        public void actionPerformed(ActionEvent event) {
+
+            Object source = event.getSource();
+            if (source == fYes) {
+                fState = YES;
+            }
+            else if (source == fNo) {
+                fState = NO;
+            }
+            else if (source == fCancel) {
+                fState = CANCEL;
+            }
+            else {
+                return;
+            }
+
+            fDialog.dispose();
+        }
+
+        byte getState() {
+
+            return fState;
+        }
+    }
+
+    /**
+     * Display a dialog that asks whether the user wants to
+     * save a document.  Possible reponses are Yes, No, and
+     * Cancel.  The returned value indicates which response
+     * was chosen.
+     */
+    private static byte askSave(Frame parent, String fileName) {
+
+        Dialog dialog = new Dialog(parent, true);
+        dialog.setLayout(new GridLayout(0, 1));
+        
+        String pattern = ResourceUtils.getString(EditorResources.SAVE_MSG);
+        String text = MessageFormat.format(pattern, new Object[] {fileName});
+        dialog.add(new Label(text, Label.CENTER));
+        
+        Button yes = new Button(ResourceUtils.getString(EditorResources.YES));
+        Button no = new Button(ResourceUtils.getString(EditorResources.NO));
+        Button cancel = new Button(ResourceUtils.getString(EditorResources.CANCEL));
+
+        Panel panel = new Panel();
+        panel.add(yes);
+        panel.add(no);
+        panel.add(cancel);
+        dialog.add(panel);
+
+        DialogListener listener = new DialogListener(dialog, yes, no, cancel);
+
+        dialog.setSize(220, 130);
+        dialog.show();
+
+        return listener.getState();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/AwtFileMenuManager.java b/src/com/ibm/richtext/demo/AwtFileMenuManager.java
new file mode 100755
index 0000000..29df2d4
--- /dev/null
+++ b/src/com/ibm/richtext/demo/AwtFileMenuManager.java
@@ -0,0 +1,49 @@
+/*
+ * @(#)$RCSfile: AwtFileMenuManager.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:43:09 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.Menu;
+import java.awt.MenuItem;
+
+final class AwtFileMenuManager extends FileMenuManager {
+
+    private Menu fMenu;
+    
+    public AwtFileMenuManager(Menu menu,
+                              EditApplication application, 
+                              DocumentWindow document,
+                              boolean supportStyledFormat,
+                              boolean supportPlainFormat) {
+                          
+        super(application, document);
+        
+        fMenu = menu;
+        createItems(supportStyledFormat, supportPlainFormat);
+        fMenu = null;
+    }
+    
+    protected Object addMenuItem(String key) {
+
+        MenuItem item = ResourceUtils.createMenuItem(key);
+        item.addActionListener(this);
+        fMenu.add(item);
+        return item;
+    }
+    
+    protected void addSeparator() {
+    
+        fMenu.add(new MenuItem("-"));
+    }
+}
diff --git a/src/com/ibm/richtext/demo/CodeEdit.java b/src/com/ibm/richtext/demo/CodeEdit.java
new file mode 100755
index 0000000..3a8e88c
--- /dev/null
+++ b/src/com/ibm/richtext/demo/CodeEdit.java
@@ -0,0 +1,124 @@
+/*
+ * @(#)$RCSfile: CodeEdit.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:33 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.FileDialog;
+import java.awt.Frame;
+import java.awt.Menu;
+import java.awt.MenuBar;
+import java.awt.Toolkit;
+
+import java.io.File;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+import com.ibm.richtext.awtui.AwtMenuBuilder;
+
+public class CodeEdit extends EditApplication {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    protected final TextPanelSettings fSettings;
+    
+    public static synchronized void main(String[] args) {
+
+        if (args.length > 0 && args[0].equals("-swing")) {
+            new com.ibm.richtext.swingdemo.SwingCodeEdit(args,1);
+        }
+        else {
+            new CodeEdit(args, 0);
+        }
+    }
+
+    protected CodeEdit(String[] args, int start) {
+
+        super(Toolkit.getDefaultToolkit().getSystemClipboard(),
+              TextDocument.PLAIN_TEXT);
+
+        AttributeMap defaultStyle = new AttributeMap(TextAttribute.SIZE, new Float(12))
+                                       .addAttribute(TextAttribute.FAMILY, "Monospaced");
+                                       
+        fSettings = TextPanel.getDefaultSettings();
+        fSettings.setWraps(false);
+        fSettings.addDefaultValues(defaultStyle);
+        
+        if (args.length == start) {
+            doNewWindow();
+        }
+        else {
+            boolean openedADocument = false;
+            for (int i=start; i < args.length; i++) {
+
+                File file = new File(args[i]);
+                TextDocument document = null;
+                Throwable error = null;
+                try {
+                    document = TextDocument.createFromFile(file, TextDocument.PLAIN_TEXT);
+                }
+                catch(Exception e) {
+                    error = e;
+                }
+                
+                if (error != null) {
+                    error.printStackTrace();
+                }
+                else {
+                    addDocument(document);
+                    openedADocument = true;
+                }
+            }
+            if (!openedADocument) {
+                quit();
+            }
+        }
+    }
+    
+    protected DocumentWindow createDocumentWindow(TextDocument document) {
+
+        return new AwtDocumentWindow(this, 
+                                  document,
+                                  fSettings,
+                                  false,
+                                  new SyntaxColorer(),
+                                  false,
+                                  true,
+                                  menus);
+    }
+    
+    protected static final int[] menus = { AwtMenuBuilder.EDIT, 
+                                           AwtMenuBuilder.BIDI,
+                                           AwtMenuBuilder.ABOUT };
+
+    public TextDocument openDocument(Frame dialogParent) {
+    
+        String title = ResourceUtils.getString(EditorResources.OPEN_TITLE);
+        
+        File file = AwtDocumentWindow.getFileFromDialog(null, title, dialogParent, FileDialog.LOAD);
+        if (file != null) {
+            try {
+                return TextDocument.createFromFile(file, TextDocument.PLAIN_TEXT);
+            }
+            catch(Exception e) {
+                System.out.print("");
+            }
+        }
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/DocumentWindow.java b/src/com/ibm/richtext/demo/DocumentWindow.java
new file mode 100755
index 0000000..8064003
--- /dev/null
+++ b/src/com/ibm/richtext/demo/DocumentWindow.java
@@ -0,0 +1,34 @@
+/*
+ * @(#)$RCSfile: DocumentWindow.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:43:09 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+public interface DocumentWindow {
+
+    public void doNew();
+    
+    public void doOpen();
+    
+    public boolean doClose();
+    
+    public boolean doSave();
+    
+    public boolean doSaveAs(int format);
+    
+    public void doPrint();
+    
+    public void setSize(int wd, int ht);
+    
+    public void show();
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/EditApplication.java b/src/com/ibm/richtext/demo/EditApplication.java
new file mode 100755
index 0000000..2204797
--- /dev/null
+++ b/src/com/ibm/richtext/demo/EditApplication.java
@@ -0,0 +1,128 @@
+/*
+ * @(#)$RCSfile: EditApplication.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:33 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.Frame;
+import java.awt.MenuBar;
+
+import java.awt.datatransfer.Clipboard;
+
+import java.text.MessageFormat;
+
+import java.util.Vector;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+
+public abstract class EditApplication {
+
+    private Clipboard fClipboard;
+    private int fDefaultFormat;
+    private Vector fWindows = new Vector();
+    private int fUntitledCount = 0;
+    
+    protected EditApplication(Clipboard clipboard, int defaultFormat) {
+        
+        fClipboard = clipboard;
+        fDefaultFormat = defaultFormat;
+    }
+    
+    /**
+     * New documents are named "Untitled 1", "Untitled 2", etc.  This
+     * method returns the appropriate name for the next new document.
+     * @return the next new document name
+     */
+    private String getNextNewName() {
+
+        fUntitledCount += 1;
+        String pattern = ResourceUtils.getString(EditorResources.UNTITLED_MSG);
+        return MessageFormat.format(pattern,
+                                    new Object[]{new Integer(fUntitledCount)});
+    }
+    
+    public final Clipboard getClipboard() {
+        
+        return fClipboard;
+    }
+
+    protected abstract DocumentWindow createDocumentWindow(TextDocument document);
+    
+    public abstract TextDocument openDocument(Frame dialogParent);
+    
+    public final TextDocument createNewDocument() {
+    
+        String name = getNextNewName();
+        int format = fDefaultFormat;
+        return TextDocument.createEmpty(name, format);
+    }
+    
+    public final void doNewWindow() {
+        
+        addDocument(TextDocument.createEmpty(getNextNewName(), fDefaultFormat));
+    }
+    
+    public final void addDocument(TextDocument document) {
+        
+        final DocumentWindow window = createDocumentWindow(document);
+
+        window.setSize(500, 400);
+        window.show();
+        fWindows.addElement(window);
+    }
+    
+    /**
+     * Remove document from list of documents.  Quit application if list
+     * length falls to zero.
+     * @param document the document to remove
+     */
+    public final void removeDocumentWindow(DocumentWindow window) {
+
+        fWindows.removeElement(window);
+        if (fWindows.isEmpty()) {
+            quit();
+        }
+    }
+
+    /**
+     * Go through list of documents and attempt to close each document.
+     * If all documents close successfully, then exit.
+     */
+    public final void doExit() {
+
+        // Clone fWindows since it can get modified while being traversed.
+        Vector windows = (Vector) fWindows.clone();
+
+        int size = windows.size();
+        for (int i=0; i < size; i++) {
+            DocumentWindow window = (DocumentWindow) windows.elementAt(i);
+            if (!window.doClose()) {
+                return;
+            }
+        }
+
+        // quit will be called when last document removes itself
+    }
+
+    /**
+     * Called when last document window closes.  Default implementation
+     * calls System.exit.
+     */
+    protected void quit() {
+
+        System.exit(0);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/EditDemo.java b/src/com/ibm/richtext/demo/EditDemo.java
new file mode 100755
index 0000000..a4bdb67
--- /dev/null
+++ b/src/com/ibm/richtext/demo/EditDemo.java
@@ -0,0 +1,134 @@
+/*
+ * @(#)$RCSfile: EditDemo.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:33 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.FileDialog;
+import java.awt.Frame;
+import java.awt.Menu;
+import java.awt.MenuBar;
+import java.awt.Toolkit;
+
+import java.io.File;
+import java.io.StreamCorruptedException;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+
+/**
+ * EditDemo is the main class for a simple, multiple-document
+ * styled text editor, built with the classes in the textpanel
+ * and textframe packages.
+ * <p>
+ * To run EditDemo, type:
+ * <blockquote><pre>
+ * java com.ibm.richtext.demo.EditDemo [file1] [file2] [...]
+ * </pre></blockquote>
+ * where the filenames are files saved with this demo.
+ */
+public class EditDemo extends EditApplication {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    public static synchronized void main(String[] args) {
+
+        if (args.length > 0 && args[0].equals("-swing")) {
+            new com.ibm.richtext.swingdemo.SwingEditDemo(args,1);
+        }
+        else {
+            new EditDemo(args, 0);
+        }
+    }
+
+    protected EditDemo(String[] args, int start) {
+
+        super(Toolkit.getDefaultToolkit().getSystemClipboard(), 
+              TextDocument.STYLED_TEXT);
+
+        if (args.length == start) {
+            doNewWindow();
+        }
+        else {
+            boolean openedADocument = false;
+            for (int i=start; i < args.length; i++) {
+
+                File file = new File(args[i]);
+                TextDocument document = getDocumentFromFile(file);
+                
+                if (document != null) {
+                    addDocument(document);
+                    openedADocument = true;
+                }
+            }
+            if (!openedADocument) {
+                quit();
+            }
+        }
+    }
+    
+    public static TextDocument getDocumentFromFile(File file) {
+    
+        Exception exception = null;
+        
+        try {
+            return TextDocument.createFromFile(file, TextDocument.STYLED_TEXT);
+        }
+        catch(StreamCorruptedException e) {
+            try {
+                return TextDocument.createFromFile(file, TextDocument.PLAIN_TEXT);
+            }
+            catch(Exception e2) {
+                exception = e2;
+            }
+        }
+        catch(Exception e) {
+            exception = e;
+        }
+        
+        System.err.println("Exception opening file.");
+        exception.printStackTrace();
+        
+        return null;
+    }
+    
+    protected DocumentWindow createDocumentWindow(TextDocument document) {
+        
+        return new AwtDocumentWindow(this, 
+                                     document,
+                                     TextPanel.getDefaultSettings(),
+                                     true,
+                                     null,
+                                     true,
+                                     true,
+                                     null);
+    }
+    
+    public TextDocument openDocument(Frame dialogParent) {
+    
+        String title = ResourceUtils.getString(EditorResources.OPEN_TITLE);
+        File file = AwtDocumentWindow.getFileFromDialog(null,
+                                                     title,
+                                                     dialogParent,
+                                                     FileDialog.LOAD);
+        if (file != null) {
+            return getDocumentFromFile(file);
+        }
+        else {
+            return null;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/EditorResources.java b/src/com/ibm/richtext/demo/EditorResources.java
new file mode 100755
index 0000000..3f43eb8
--- /dev/null
+++ b/src/com/ibm/richtext/demo/EditorResources.java
@@ -0,0 +1,107 @@
+/*
+ * @(#)$RCSfile: EditorResources.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:43:09 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.util.ListResourceBundle;
+import java.awt.event.KeyEvent;
+
+public final class EditorResources extends ListResourceBundle {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    // menu names - values are Strings
+    public static final String FILE = "File";
+
+    // file menu items - values are MenuData instances
+    public static final String NEW = "New";
+    public static final String NEW_WINDOW = "New Window";
+    public static final String OPEN = "Open...";
+    public static final String SAVE = "Save";
+    public static final String SAVE_AS = "Save As...";
+    public static final String SAVE_AS_STYLED = "Save As Styled Text...";
+    public static final String SAVE_AS_TEXT = "Save As Plain Text...";
+    public static final String CLOSE = "Close";
+    public static final String PRINT = "Print";
+    public static final String EXIT = "Exit";
+
+    // button labels - values are Strings
+    public static final String YES = "Yes";
+    public static final String NO = "No";
+    public static final String CANCEL = "Cancel";
+
+    // message strings - values are Strings
+    public static final String SAVE_MSG = "Save {0} before closing?";
+    public static final String UNTITLED_MSG = "Untitled {0}";
+
+    // window and dialog titles - values are Strings
+    public static final String OPEN_TITLE = "Open Document";
+    public static final String SAVE_TITLE = "Save As";
+
+    /**
+     * Convenience method that returns a two-element
+     * Object array.  The first element is name, the
+     * second is a MenuData instance with the given
+     * shortcut.
+     */
+    private static Object[] makeEntry(String name,
+                                      char shortCut,
+                                      int keyCode) {
+
+        return new Object[] { name, new MenuData(name, shortCut, keyCode) };
+    }
+
+    /**
+     * Convenience method that returns a two-element
+     * Object array.  The first element is name, the
+     * second is a MenuData instance.
+     */
+    private static Object[] makeEntry(String name) {
+
+        return new Object[] { name, new MenuData(name) };
+    }
+
+    /**
+     * Convenience method that returns a two-element
+     * Object array in which both elements are obj.
+     */
+    private static Object[] duplicate(Object obj) {
+
+        return new Object[] { obj, obj };
+    }
+
+    protected Object[][] getContents() {
+
+        return new Object[][] {
+            duplicate(FILE),
+            duplicate(YES),
+            duplicate(NO),
+            duplicate(CANCEL),
+            duplicate(SAVE_MSG),
+            duplicate(SAVE_TITLE),
+            duplicate(OPEN_TITLE),
+            duplicate(UNTITLED_MSG),
+            makeEntry(NEW, 'n', KeyEvent.VK_N),
+            makeEntry(NEW_WINDOW),
+            makeEntry(OPEN, 'o', KeyEvent.VK_O),
+            makeEntry(SAVE, 's', KeyEvent.VK_S),
+            makeEntry(SAVE_AS),
+            makeEntry(SAVE_AS_STYLED),
+            makeEntry(SAVE_AS_TEXT),
+            makeEntry(CLOSE),
+            makeEntry(PRINT),
+            makeEntry(EXIT),
+        };
+    }
+}
diff --git a/src/com/ibm/richtext/demo/FileMenuManager.java b/src/com/ibm/richtext/demo/FileMenuManager.java
new file mode 100755
index 0000000..a19c04d
--- /dev/null
+++ b/src/com/ibm/richtext/demo/FileMenuManager.java
@@ -0,0 +1,116 @@
+/*
+ * @(#)$RCSfile: FileMenuManager.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:43:09 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+/**
+ * This class creates a File menu and manages user interactions
+ * with the menu.
+ */
+public abstract class FileMenuManager implements ActionListener {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private EditApplication fApplication;
+    private DocumentWindow fDocumentWindow;
+    private Object fNew, fNewWindow, fOpen, fSave;
+    private Object fSaveAsStyled, fSaveAsText, fClose, fPrint, fExit;
+
+    protected FileMenuManager(EditApplication application, 
+                              DocumentWindow document) {
+
+        fApplication = application;
+        fDocumentWindow = document;
+    }
+    
+    protected final void createItems(boolean supportStyledFormat,
+                                     boolean supportPlainFormat) {
+        
+        if (!supportStyledFormat && !supportPlainFormat) {
+            throw new IllegalArgumentException("Must support at least one format.");
+        }
+        
+        fNew = addMenuItem(EditorResources.NEW);
+        fNewWindow = addMenuItem(EditorResources.NEW_WINDOW);
+        
+        addSeparator();
+
+        fOpen = addMenuItem(EditorResources.OPEN);
+
+        fSave = addMenuItem(EditorResources.SAVE);
+        
+        if (supportStyledFormat) {
+            if (supportPlainFormat) {
+                fSaveAsStyled = addMenuItem(EditorResources.SAVE_AS_STYLED);
+                fSaveAsText = addMenuItem(EditorResources.SAVE_AS_TEXT);
+            }
+            else {
+                fSaveAsStyled = addMenuItem(EditorResources.SAVE_AS);
+            }
+        }
+        else {
+            fSaveAsText = addMenuItem(EditorResources.SAVE_AS);
+        }
+        
+        addSeparator();
+        fClose = addMenuItem(EditorResources.CLOSE);
+        addSeparator();
+        fPrint = addMenuItem(EditorResources.PRINT);
+        addSeparator();
+        fExit = addMenuItem(EditorResources.EXIT);
+    }
+    
+    protected abstract Object addMenuItem(String key);
+
+    protected abstract void addSeparator();
+    
+    public final void actionPerformed(ActionEvent event) {
+
+        Object source = event.getSource();
+
+        if (source == fNew) {
+            fDocumentWindow.doNew();
+        }
+        else if (source == fNewWindow) {
+            fApplication.doNewWindow();
+        }
+        else if (source == fOpen) {
+            fDocumentWindow.doOpen();
+        }
+        else if (source == fClose) {
+            fDocumentWindow.doClose();
+        }
+        else if (source == fSave) {
+            fDocumentWindow.doSave();
+        }
+        else if (source == fSaveAsStyled) {
+            fDocumentWindow.doSaveAs(TextDocument.STYLED_TEXT);
+        }
+        else if (source == fSaveAsText) {
+            fDocumentWindow.doSaveAs(TextDocument.PLAIN_TEXT);
+        }
+        else if (source == fPrint) {
+            fDocumentWindow.doPrint();
+        }
+        else if (source == fExit) {
+            fApplication.doExit();
+        }
+        else {
+            throw new Error("Unknown event source: " + source);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/MenuData.java b/src/com/ibm/richtext/demo/MenuData.java
new file mode 100755
index 0000000..cdf41e9
--- /dev/null
+++ b/src/com/ibm/richtext/demo/MenuData.java
@@ -0,0 +1,62 @@
+/*
+ * @(#)$RCSfile: MenuData.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:43:09 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+public final class MenuData {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private String fName;
+    private boolean fHasShortcut;
+    private char fShortcut;
+    private int fShortcutKeyCode;
+
+    public MenuData(String name) {
+
+        fName = name;
+        fHasShortcut = false;
+    }
+
+    public MenuData(String name, char ch, int keyCode) {
+
+        fName = name;
+        fHasShortcut = true;
+        fShortcut = ch;
+        fShortcutKeyCode = keyCode;
+    }
+
+    public String getName() {
+
+        return fName;
+    }
+
+    public char getShortcut() {
+
+        if (!fHasShortcut) {
+            throw new Error("Menu doesn't have shortcut");
+        }
+        return fShortcut;
+    }
+    
+    public int getShortcutKeyCode() {
+    
+        return fShortcutKeyCode;
+    }
+
+    public boolean hasShortcut() {
+
+        return fHasShortcut;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/ResourceUtils.java b/src/com/ibm/richtext/demo/ResourceUtils.java
new file mode 100755
index 0000000..e67df81
--- /dev/null
+++ b/src/com/ibm/richtext/demo/ResourceUtils.java
@@ -0,0 +1,75 @@
+/*
+ * @(#)$RCSfile: ResourceUtils.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:43:09 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.MenuItem;
+import java.awt.MenuShortcut;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * Utility class for dealing with resource data.
+ */
+public final class ResourceUtils {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static ResourceBundle BUNDLE;
+    static {
+        String bundleName = "com.ibm.richtext.demo.EditorResources";
+        try {
+            BUNDLE = ResourceBundle.getBundle(bundleName);
+        }
+        catch(MissingResourceException e) {
+            System.out.println("Couldn't load " + bundleName +
+                               ";  Exception: " + e);
+            BUNDLE = new EditorResources();
+        }
+    }
+
+    public static String getString(String key) {
+
+        try {
+            return BUNDLE.getString(key);
+        }
+        catch(MissingResourceException e) {
+            return key;
+        }
+    }
+
+    public static MenuData getMenuData(String key) {
+    
+        try {
+            return (MenuData) BUNDLE.getObject(key);
+        }
+        catch(MissingResourceException e) {
+            return new MenuData(key);
+        }
+    }
+        
+    public static MenuItem createMenuItem(String key) {
+
+        MenuData menuData = getMenuData(key);
+
+        if (menuData.hasShortcut()) {
+            MenuShortcut shortcut = new MenuShortcut(menuData.getShortcut());
+            return new MenuItem(menuData.getName(), shortcut);
+        }
+        else {
+            return new MenuItem(menuData.getName());
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/SyntaxColorer.java b/src/com/ibm/richtext/demo/SyntaxColorer.java
new file mode 100755
index 0000000..8546d69
--- /dev/null
+++ b/src/com/ibm/richtext/demo/SyntaxColorer.java
@@ -0,0 +1,288 @@
+/*
+ * $RCSfile: SyntaxColorer.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:33 $
+ *
+ * (C) Copyright IBM Corp. 1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+
+package com.ibm.richtext.demo;
+
+import com.ibm.richtext.awtui.TextFrame;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.textpanel.TextPanelListener;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import java.awt.Color;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import java.text.BreakIterator;
+import java.text.CharacterIterator;
+import java.text.CollationKey;
+import java.text.Collator;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+/**
+ * SyntaxColorer is a TextPanelListener that applies a style
+ * to a set of words in the TextPanel.
+ */
+public final class SyntaxColorer implements TextPanelListener {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    private static final class Colorer {
+        
+        static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+        private int fStart;
+        private Hashtable fStyleMap;
+        private Collator fCollator = Collator.getInstance();
+        private BreakIterator fBreakIter = BreakIterator.getWordInstance();
+
+        private String fText;
+        private int fCurrentStart;
+        private int fCurrentLimit;
+        private AttributeMap fCurrentStyle;
+        
+        Colorer(Hashtable styles) {
+
+            fStyleMap = new Hashtable(styles.size());
+
+            Enumeration e = styles.keys();
+            while (e.hasMoreElements()) {
+                String k = (String) e.nextElement();
+                fStyleMap.put(fCollator.getCollationKey(k), styles.get(k));
+            }
+        }
+        
+        void set(CharacterIterator text, int start, int limit) {
+            
+            fStart = start;
+
+            StringBuffer sb = new StringBuffer(limit-start);
+            for (char c=text.setIndex(start); text.getIndex() != limit; c=text.next()) {
+                sb.append(c);
+            }
+            fText = sb.toString();
+            fCurrentStart = fCurrentLimit = 0;
+            fCurrentStyle = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+            
+            fBreakIter.setText(fText);
+            fBreakIter.first();
+        }
+            
+        boolean next() {
+            
+            if (fCurrentLimit == fText.length()) {
+                fText = null;
+                return false;
+            }
+
+            fCurrentStart = fCurrentLimit;
+            fCurrentLimit = fBreakIter.next();
+            
+            String word = fText.substring(fCurrentStart, fCurrentLimit);
+            CollationKey ck = fCollator.getCollationKey(word);
+            fCurrentStyle = (AttributeMap) fStyleMap.get(ck);
+            if (fCurrentStyle == null) {
+                fCurrentStyle = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+            }
+            
+            return true;
+        }
+            
+        int currentStart() {
+            return fCurrentStart + fStart;
+        }
+        
+        int currentLimit() {
+            return fCurrentLimit + fStart;
+        }
+        
+        AttributeMap currentStyle() {
+            return fCurrentStyle;
+        }
+    }
+
+    private BreakIterator fBreakIter = BreakIterator.getWordInstance();
+    private Colorer fColorer;
+    private boolean fModifying = false;
+    private AttributeMap fDefaultKeywordStyle = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+    private Hashtable fModifierCache;
+    
+    public SyntaxColorer() {
+        
+        this(null);
+    }
+    
+    public SyntaxColorer(MTextPanel panel) {
+        
+        Hashtable ht = new Hashtable();
+
+        //Uncomment this to make keywords appear right-to-left!
+        //fDefaultKeywordStyle = fDefaultKeywordStyle.addAttribute(TextAttribute.BIDI_EMBEDDING, 
+        //                                                         new Integer(-1));
+        
+        fDefaultKeywordStyle = fDefaultKeywordStyle.addAttribute(TextAttribute.UNDERLINE,
+                                                                 TextAttribute.UNDERLINE_ON);
+        fDefaultKeywordStyle = fDefaultKeywordStyle.addAttribute(TextAttribute.FOREGROUND, 
+                                                                 Color.blue);
+        
+        String[] javaWords = {"abstract" , "boolean", "break", "byte",
+                              "byvalue", "case", "cast", "default",
+                              "do", "double", "else", "extends", 
+                              "false", "final", "goto", "if",
+                              "implements", "import", "inner", "instanceof",
+                              "int", "operator", "outer", "package",
+                              "private", "protected", "public", "rest",
+                              "synchronized", "this", "throw", "throws",
+                              "transient", "true", "try",
+                              "catch", "char", "const", "continue",
+                              "finally", "float", "for", "future",
+                              "generic", "interface", "long", "native",
+                              "new", "null", "return", "short",
+                              "static", "super", "switch", "var",
+                              "void", "volatile", "while", "class"};
+
+        for (int i=0; i < javaWords.length; i++) {
+            ht.put(javaWords[i], fDefaultKeywordStyle);
+        }
+        
+        fColorer = new Colorer(ht);
+        
+        if (panel != null) {
+            MConstText text = panel.getText();
+            colorRange(0, text.length(), text.createCharacterIterator(), panel);
+        }
+        
+        fModifierCache = new Hashtable(2);
+        fModifierCache.put(fDefaultKeywordStyle, 
+                           StyleModifier.createReplaceModifier(fDefaultKeywordStyle));
+        fModifierCache.put(AttributeMap.EMPTY_ATTRIBUTE_MAP, 
+                           StyleModifier.createReplaceModifier(AttributeMap.EMPTY_ATTRIBUTE_MAP));
+    }
+    
+    public boolean respondsToEventType(int type) {
+        
+        return type == TextPanelEvent.TEXT_CHANGED;
+    }
+    
+    public void textEventOccurred(TextPanelEvent e) {
+
+        if (fModifying) {
+            return;
+        }
+        
+        MTextPanel panel = (MTextPanel) e.getSource();
+        
+        final MConstText text = panel.getText();
+        int start = text.damagedRangeStart();
+        int limit = text.damagedRangeLimit();
+        if (start > limit) {
+            return;
+        }
+        
+        CharacterIterator textIter = text.createCharacterIterator();
+        
+        fBreakIter.setText(textIter);
+        if (start > 0) {
+            if (start == text.length()) {
+                fBreakIter.last();
+            }
+            else {
+                fBreakIter.following(start-1);
+            }
+            start = fBreakIter.previous();
+        }
+        if (limit < text.length()) {
+            fBreakIter.following(limit);
+            int l;
+            if ((l=fBreakIter.previous()) <= limit) {
+                limit = fBreakIter.next();
+            }
+        }
+        
+        fModifying = true;
+        colorRange(start, limit, textIter, panel);
+        fModifying = false;
+    }
+    
+    private void colorRange(final int start, 
+                            final int limit, 
+                            CharacterIterator textIter,
+                            MTextPanel panel) {
+        
+        fColorer.set(textIter, start, limit);
+
+        MConstText oldText = panel.getText();
+        MText newText = null;
+        
+        while (fColorer.next()) {
+
+            int rangeStart = fColorer.currentStart();
+            int rangeLimit = fColorer.currentLimit();
+            
+            AttributeMap style = fColorer.currentStyle();
+            
+            if (oldText.characterStyleLimit(rangeStart) < rangeLimit ||
+                    oldText.characterStyleAt(rangeStart) != style) {
+            
+                int cstart = rangeStart-start;
+                int climit = rangeLimit-start;
+                if (newText == null) {
+                    newText = new StyledText(oldText, start, limit);
+                }
+                StyleModifier mod = (StyleModifier) fModifierCache.get(style);
+                newText.modifyCharacterStyles(cstart, climit, mod);
+            }
+        }
+        
+        if (newText != null) {
+        
+            int oldStart = panel.getSelectionStart();
+            int oldLimit = panel.getSelectionEnd();
+            
+            panel.replaceRange(newText, start, limit);            
+    
+            panel.select(oldStart, oldLimit);
+            if (oldStart == oldLimit) {
+                StyleModifier mod = (StyleModifier) fModifierCache.get(AttributeMap.EMPTY_ATTRIBUTE_MAP);                
+                panel.modifyCharacterStyleOnSelection(mod);
+            }
+        }
+    }
+    
+    public static void main(String[] args) {
+        
+        TextFrame f = new TextFrame();
+        f.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
+        f.setSize(400, 300);
+        MTextPanel panel = f.getTextPanel();
+        panel.addListener(new SyntaxColorer(panel));
+        f.show();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/TextDocument.java b/src/com/ibm/richtext/demo/TextDocument.java
new file mode 100755
index 0000000..cc464ce
--- /dev/null
+++ b/src/com/ibm/richtext/demo/TextDocument.java
@@ -0,0 +1,351 @@
+/*
+ * @(#)$RCSfile: TextDocument.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:34 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.io.*;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/**
+ * A TextDocument handles the association between a file on disk
+ * and a TextPanel.
+ */
+public final class TextDocument {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int BUF_SIZE = 1024;
+    
+    private String fTitle;
+    private MConstText fText;
+    private File fFile;
+    private MTextPanel fTextPanel = null;
+    private boolean isModified = false;
+    private int fFormat = STYLED_TEXT;
+    
+    private TextDocument(String title,
+                         MConstText text,
+                         File file,
+                         int format) {
+        
+        fTitle = title;
+        fText = text;
+        fFile = file;
+        setFormat(format);
+    }
+    
+    public static final int STYLED_TEXT = 0;
+    public static final int PLAIN_TEXT = 1;
+    
+    /** 
+     * Return a new TextDocument with no associated file and
+     * empty text.
+     */
+    public static TextDocument createEmpty(String title, int format) {
+        
+        return new TextDocument(title, new StyledText(), null, format);
+    }
+    
+    /**
+     * Return a TextDocument created from the contents of the given
+     * file.  This method may throw an exception if the file cannot
+     * be read.  In particular, if the format is given as STYLED_TEXT
+     * but the file does not contain a serialized MConstText, 
+     * this method will throw StreamCorruptedException.
+     */
+    public static TextDocument createFromFile(File file, int format) throws Exception {
+        
+        if (format != STYLED_TEXT && format != PLAIN_TEXT) {
+            throw new IllegalArgumentException("Invalid format");
+        }
+        
+        MConstText text;
+        if (format == STYLED_TEXT) {
+            text = readMText(file);
+        }
+        else {
+            text = readMTextFromTextFile(file);
+        }
+        
+        TextDocument document = new TextDocument(file.getName(), 
+                                                 text,
+                                                 file,
+                                                 format);
+        return document;
+    }
+    
+    /**
+     * Return true if this document's text differs from the contents
+     * of its file.
+     */
+    public boolean isModified() {
+        
+        if (fTextPanel == null) {
+            return isModified;
+        }
+        else {
+            return fTextPanel.isModified();
+        }
+    }
+    
+    /**
+     * Set the MTextPanel that will be used to edit the document's
+     * text.  The document's text becomes the contents of the
+     * MTextPanel.
+     */
+    public void setTextPanel(MTextPanel textPanel) {
+
+        if (fTextPanel != null) {
+            fText = fTextPanel.getText();
+            isModified = fTextPanel.isModified();
+        }
+        
+        fTextPanel = textPanel;
+        
+        if (fTextPanel != null) {
+            fTextPanel.setText(fText);
+            fText = null;
+            fTextPanel.setModified(isModified);
+            fTextPanel.clearCommandLog();
+        }
+    }
+    
+    public File getFile() {
+    
+        return fFile;
+    }
+    
+    /**
+     * Set this document's file.  The document's title will
+     * change to the file name.  The file cannot be null.
+     */
+    public void setFile(File file) {
+        
+        fFile = file;
+        fTitle = file.getName();
+    }
+    
+    /**
+     * Set the format of this document.  The format determines
+     * whether the document will be written to files as styled
+     * text or plain characters.
+     */
+    public void setFormat(int format) {
+        
+        if (format != STYLED_TEXT && format != PLAIN_TEXT) {
+            throw new IllegalArgumentException("Invalid format");
+        }
+        fFormat = format;
+    }
+    
+    /**
+     * Return the format of this document.
+     */
+    public int getFormat() {
+        
+        return fFormat;
+    }
+    
+    /**
+     * Write the document's text to its file.  If the document does
+     * not have an associated file then this method is equivalent to
+     * saveAs.  This method returns true if the save operation succeeds.
+     */
+    public boolean save() {
+
+        if (fFile == null) {
+            throw new RuntimeException("Can't save without a file.");
+        }
+                
+        MConstText text = getText();
+        boolean success = fFormat==STYLED_TEXT? writeMText(fFile, text) :
+                                                writePlainMText(fFile, text);
+        if (success && fTextPanel != null) {
+            fTextPanel.setModified(false);
+        }
+        return success;
+    }
+    
+    /** 
+     * Return this document's styled text.
+     */
+    public MConstText getText() {
+        
+        if (fTextPanel == null) {
+            return fText;
+        }
+        else {
+            return fTextPanel.getText();
+        }
+    }
+    
+    /**
+     * Return the title of this document.
+     */
+    public String getTitle() {
+        
+        return fTitle;
+    }
+    
+    /**
+     * Return the MText serialized in the given file.
+     * In case of an error return null.
+     */
+    private static MConstText readMText(File file) throws Exception {
+
+        FileInputStream inStream = null;
+        
+        try {
+            inStream = new FileInputStream(file);
+            ObjectInputStream objStream = new ObjectInputStream(inStream);
+
+            return (MConstText) objStream.readObject();
+        }
+        finally {
+            if (inStream != null) {
+                try {
+                    inStream.close();
+                }
+                catch(IOException e) {
+                    System.out.print("");
+                }
+            }
+        }
+    }
+    
+    /**
+     * Read the given file as a plain text file, and return its
+     * contents as an MConstText.  The character and paragraph styles in 
+     * the returned text will be EMPTY_ATTRIBUTE_MAP.
+     */
+    private static MConstText readMTextFromTextFile(File file) throws Exception {
+        
+        InputStreamReader in = null;
+        
+        try {
+            in = new FileReader(file);
+            
+            MText text = new StyledText();
+            
+            char[] buf = new char[BUF_SIZE];
+            int read;
+            while ((read=in.read(buf, 0, buf.length)) != -1) {
+                int len = text.length();
+                text.replace(len, len, buf, 0, read, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+            }
+            return text;
+        }
+        finally {
+            if (in != null) {
+                try {
+                    in.close();
+                }
+                catch(IOException e) {
+                    System.out.print("");
+                }
+            }
+        }
+    }
+
+    /**
+     * Attempt to save the given text in the given file.
+     * @return true if the operation succeeded
+     */
+    private static boolean writeMText(File file, MConstText text) {
+
+        Throwable error = null;
+        OutputStream outStream = null;
+        
+        try {
+            outStream = new FileOutputStream(file);
+            ObjectOutputStream objStream = new ObjectOutputStream(outStream);
+
+            objStream.writeObject(text);
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassCastException e) {
+            error = e;
+        }
+        finally {
+            if (outStream != null) {
+                try {
+                    outStream.close();
+                }
+                catch(IOException e) {
+                    System.out.print("");
+                }
+            }
+        }
+
+
+        if (error != null) {
+            error.printStackTrace();
+            return false;
+        }
+        else {
+            return true;
+        }
+    }
+
+    /**
+     * Write the given MConstText to the given file as plain text.
+     */
+    private static boolean writePlainMText(File file, MConstText text) {
+
+        Throwable error = null;
+        OutputStreamWriter outStream = null;
+        
+        try {
+            outStream = new FileWriter(file);
+            char[] buf = new char[BUF_SIZE];
+            int length = text.length();
+            int start = 0;
+            do {
+                int count = Math.min(length-start, buf.length);
+                text.extractChars(start, start+count, buf, 0);
+                outStream.write(buf, 0, count);
+                start += count;
+            } while (start < length);
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        finally {
+            if (outStream != null) {
+                try {
+                    outStream.close();
+                }
+                catch(IOException e) {
+                    System.out.print("");
+                }
+            }
+        }
+
+
+        if (error != null) {
+            error.printStackTrace();
+            return false;
+        }
+        else {
+            return true;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/manifest.stub b/src/com/ibm/richtext/manifest.stub
new file mode 100644
index 0000000..340ce51
--- /dev/null
+++ b/src/com/ibm/richtext/manifest.stub
@@ -0,0 +1,13 @@
+Main-Class: com.ibm.richtext.demo.EditDemo
+Manifest-Version: 1.0
+Specification-Title: ICU for Java RichEdit
+Specification-Version: 2.2
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java RichEdit
+Implementation-Version: 2.2
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+
+Name: com/ibm/richtext
+
+
diff --git a/src/com/ibm/richtext/print/MConstTextPrintable.java b/src/com/ibm/richtext/print/MConstTextPrintable.java
new file mode 100755
index 0000000..ca5af7a
--- /dev/null
+++ b/src/com/ibm/richtext/print/MConstTextPrintable.java
@@ -0,0 +1,162 @@
+/*
+ * @(#)$RCSfile: MConstTextPrintable.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:34 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.print;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.textformat.MFormatter;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Point;
+import java.awt.Rectangle;
+
+import java.util.Vector;
+
+/**
+ * This class's interface is very close to that of the JDK 1.2 Printable 
+ * interface, but can execute on JDK 1.1.  On 1.2, this class is wrapped
+ * in a real Printable.  On 1.1, the PrintContext class uses this class
+ * and a PrintJob for printing.
+ *
+ * Note that this class paginates the text in the first call to print,
+ * or to getPageCount.
+ * After construction, its page size is essentially fixed.  This is not 
+ * as flexible as the 1.2 classes allow, but it should suffice.
+ */
+final class MConstTextPrintable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    static final int PAGE_EXISTS = 0;
+    static final int NO_SUCH_PAGE = 1;
+    
+    private MConstText fText;
+    private AttributeMap fDefaultStyles;
+    private Rectangle fPageRect;
+    
+    // If these two fields are null the text has not been paginated.
+    private MFormatter fFormatter;
+    private Vector fPageStarts;
+
+    /**
+     * Construct an MConstTextPrintable to print the given text.  Each page will fit
+     * into pageRect.
+     */
+    MConstTextPrintable(MConstText text, 
+                        AttributeMap defaultStyles,
+                        Rectangle pageRect) {
+
+        fText = text;
+        fDefaultStyles = defaultStyles;
+        fPageRect = new Rectangle(pageRect);
+    }
+    
+    private static boolean emptyParagraphAtEndOfText(MConstText text) {
+
+        if (text.length() > 0) {
+            char ch = text.at(text.length()-1);
+            return ch == '\n' || ch == '\u2029';
+        }
+        else {
+            return false;
+        }
+    }
+
+    private void paginate(Graphics graphics) {
+        
+        if (fPageStarts == null) {
+
+            fFormatter = MFormatter.createFormatter(fText,
+                                                    fDefaultStyles,
+                                                    fPageRect.width,
+                                                    true,
+                                                    graphics);
+ 
+            fFormatter.formatToHeight(Integer.MAX_VALUE);
+            fFormatter.stopBackgroundFormatting();
+
+            fPageStarts = new Vector();
+            
+            int lineCount = fFormatter.getLineCount();
+            if (emptyParagraphAtEndOfText(fText)) {
+                lineCount -= 1;
+            }
+
+            int startLine = 0;
+            fPageStarts.addElement(new Integer(startLine));
+            int startHeight = 0;
+            final int pageHeight = fPageRect.height;
+
+            while (startLine < lineCount) {
+
+                int nextStart = fFormatter.lineAtHeight(startHeight + pageHeight);
+                fPageStarts.addElement(new Integer(nextStart));
+                startHeight = fFormatter.lineGraphicStart(nextStart);
+                startLine = nextStart;
+            }
+        }
+    }
+
+    /**
+     * Print the given page in the given graphics.  Page numbers are
+     * 0-based.  The the return value indicates whether
+     * the page number is valid (as in JDK 1.2).  Since you can get the page count
+     * directly, there's really no excuse for passing in an invalid page
+     * index.
+     * @param graphics the Graphics to print to
+     * @param pageNumber the 0-based page number.  Should be nonnegative and
+     * less than getPageCount()
+     * @return PAGE_EXISTS if the page number is valid, or 
+     *         NO_SUCH_PAGE otherwise
+     */
+    int print(Graphics graphics, int pageNumber) {
+        
+        paginate(graphics);
+        
+        if (pageNumber < getPageCount(graphics) && pageNumber >= 0) {
+            graphics.setColor(Color.black); // workaround for 1.2 printing bug
+            int startLine = ((Integer)fPageStarts.elementAt(pageNumber)).intValue();
+            int limitLine = ((Integer)fPageStarts.elementAt(pageNumber+1)).intValue();
+
+            int topOfPage = fFormatter.lineGraphicStart(startLine);
+            int pageHeight = fFormatter.lineGraphicStart(limitLine) - topOfPage;
+
+            Point origin = new Point(fPageRect.x, fPageRect.y - topOfPage);
+            Rectangle drawRect = new Rectangle(fPageRect);
+            drawRect.height = pageHeight;
+            
+            fFormatter.draw(graphics, drawRect, origin);
+            return PAGE_EXISTS;
+        }
+        else {
+            return NO_SUCH_PAGE;
+        }
+    }
+    
+    /**
+     * Return the number of pages that can be printed.
+     * @param graphics a Graphics instance representative of those 
+     * which will be printed into
+     */
+    int getPageCount(Graphics graphics) {
+        
+        paginate(graphics);
+        return fPageStarts.size() - 1;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/print/PrintContext.java b/src/com/ibm/richtext/print/PrintContext.java
new file mode 100755
index 0000000..42836e8
--- /dev/null
+++ b/src/com/ibm/richtext/print/PrintContext.java
@@ -0,0 +1,81 @@
+/*
+ * @(#)$RCSfile: PrintContext.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:34 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+
+package com.ibm.richtext.print;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Rectangle;
+
+import java.awt.print.PageFormat;
+import java.awt.print.Printable;
+import java.awt.print.PrinterJob;
+import java.awt.print.PrinterException;
+
+final class PrintContext implements Printable {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private MConstTextPrintable fPrintable;
+    
+    PrintContext(MConstText text, AttributeMap defaultStyles, PageFormat pf) {
+        
+        int width = (int) Math.round(pf.getImageableWidth());
+        int height = (int) Math.round(pf.getImageableHeight());
+        int left = (((int)Math.round(pf.getWidth())) - width) / 2;
+        int top = (((int)Math.round(pf.getHeight())) - height) / 2;
+        
+        Rectangle pageRect = new Rectangle(left, top, width, height);
+        fPrintable = new MConstTextPrintable(text, defaultStyles, pageRect);
+    }
+    
+    public int print(Graphics graphics,
+                     PageFormat format,
+                     int pageIndex) throws PrinterException {
+        
+        if (false)
+            throw new PrinterException("save trees");
+            
+        if (fPrintable.print(graphics, pageIndex) == fPrintable.PAGE_EXISTS) {
+            return PAGE_EXISTS;
+        }
+        else {
+            return NO_SUCH_PAGE;
+        }
+    }
+    
+    static void userPrintText(MConstText text,
+                              AttributeMap defaultStyles,
+                              Frame frame,
+                              String jobTitle) {
+
+        PrinterJob job = PrinterJob.getPrinterJob();
+        job.setJobName(jobTitle);
+        if (job.printDialog()) {
+            job.setPrintable(new PrintContext(text, defaultStyles, job.defaultPage()));
+            try {
+                job.print();
+            }
+            catch(PrinterException e) {
+                System.out.println("Printer exception: " + e);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/print/PrintingUtils.java b/src/com/ibm/richtext/print/PrintingUtils.java
new file mode 100755
index 0000000..ea30d8a
--- /dev/null
+++ b/src/com/ibm/richtext/print/PrintingUtils.java
@@ -0,0 +1,51 @@
+/*
+ * @(#)$RCSfile: PrintingUtils.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:34 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.print;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.awt.Frame;
+
+/**
+ * PrintingUtils contains a static method for printing styled text.
+ * @see com.ibm.richtext.styledtext.MConstText
+ */
+public final class PrintingUtils {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    // Keep it out of Javadoc...
+    private PrintingUtils() {
+    }
+    
+    /**
+     * Print the given text.  A Print dialog is presented to the user;
+     * unless the user cancels, the text is printed.
+     * @param text the text to print
+     * @param defaultStyles default values for unspecified attributes
+     * @param frame the parent of the Print dialog
+     * @param jobTitle the title of the PrintJob
+     */
+    public static void userPrintText(MConstText text,
+                                     AttributeMap defaultStyles,
+                                     Frame frame,
+                                     String jobTitle) {
+
+        PrintContext.userPrintText(text, defaultStyles, frame, jobTitle);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/print/package.html b/src/com/ibm/richtext/print/package.html
new file mode 100755
index 0000000..5386b24
--- /dev/null
+++ b/src/com/ibm/richtext/print/package.html
@@ -0,0 +1,5 @@
+<html>
+<body bgcolor="white">
+Provides printing for styled text.
+</body>
+</html>
diff --git a/src/com/ibm/richtext/styledtext/CharBuffer.java b/src/com/ibm/richtext/styledtext/CharBuffer.java
new file mode 100755
index 0000000..7108f7a
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/CharBuffer.java
@@ -0,0 +1,379 @@
+/*
+ * @(#)$RCSfile: CharBuffer.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:45:10 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/** An implementation of MCharBuffer that stores chars in an array with an insertion gap. */
+/*
+    Change history
+    072396 jf   - fixed a bug in replace(int, int, char[], int, int) so that it correctly
+                inserted into the middle of the buffer.
+    080296 jf   - added timestamp.  This is strictly a debugging device to help catch
+                stale iterators.
+
+    082296 jbr  added check for 0-length iterator in replace
+*/
+
+package com.ibm.richtext.styledtext;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+import java.text.CharacterIterator;
+
+final class CharBuffer
+    extends MCharBuffer implements Externalizable
+{
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+  private static final int kGrowSize = 0x80; // small size for testing
+  private static final int CURRENT_VERSION = 1; // version code for streaming
+  private static final long serialVersionUID = 563174;
+
+  transient Validation fValidation = null;
+  private char[] fArray;
+  transient private int fArraySize;
+  transient private int fGap;
+
+  /** Create an empty char buffer. */
+  public CharBuffer()
+  {
+  }
+
+  /** Create a char buffer that can hold at least capacity chars. */
+
+  public CharBuffer(int capacity)
+  {
+    fArray = allocate(capacity);
+  }
+
+  public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+    if (in.readInt() != CURRENT_VERSION) {
+        throw new IOException("Invalid version of CharBuffer");
+    }
+
+    fArray = (char[]) in.readObject();
+    if (fArray != null) {
+        fArraySize = fArray.length;
+        fGap = fArraySize;
+    }
+    else {
+        fArraySize = 0;
+        fGap = 0;
+    }
+  }
+
+  public void writeExternal(ObjectOutput out) throws IOException {
+
+    compress();
+    out.writeInt(CURRENT_VERSION);
+    out.writeObject(fArray);
+  }
+
+  private void invalidate() {
+
+    if (fValidation != null) {
+        fValidation.invalidate();
+        fValidation = null;
+    }
+  }
+
+  // not ThreadSafe - could end up with two Validations
+  // being generated
+  private Validation getValidation() {
+
+    if (fValidation == null) {
+        fValidation = new Validation();
+    }
+    return fValidation;
+  }
+
+  /** Replace the chars from start to limit with the chars from srcStart to srcLimit in srcBuffer. */
+
+  /** Replace the chars from start to limit with the chars from srcStart to srcLimit in srcChars.
+  * This is the core routine for manipulating the buffer.
+  */
+  public void replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit)
+  {
+    invalidate();
+    int dstLength = limit - start;
+    int srcLength = srcLimit - srcStart;
+
+    if (dstLength < 0 || srcLength < 0) {
+        throw new IllegalArgumentException("replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit)");
+    }
+
+    int gapAlloc = 0;
+    if (srcChars == null) {
+        gapAlloc = srcLength;
+        srcLength = 0;
+    }
+
+    int newSize = fArraySize - dstLength + srcLength;
+
+    if (fArray == null) {
+        if (start != 0 || limit != 0) {
+            throw new IllegalArgumentException("replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit)");
+        }
+        if (newSize + gapAlloc > 0) {
+            fArray = allocate(newSize + gapAlloc);
+            if (srcLength > 0) {
+                System.arraycopy(srcChars, srcStart, fArray, 0, srcLength);
+                fArraySize = srcLength;
+                fGap = srcLength;
+            }
+        }
+    } else {
+        int newGap = start + srcLength;
+        int gapLimit = fArray.length - fArraySize + fGap;
+
+        if (newSize + gapAlloc > fArray.length) {
+            char[] temp = allocate(newSize + gapAlloc);
+
+            //move stuff at beginning that we aren't writing over
+            if (start > 0) {
+                at(0, start, temp, 0);
+            }
+            //move stuff from src array that we are copying
+            if (srcLength > 0) {
+                System.arraycopy(srcChars, srcStart, temp, start, srcLength);
+            }
+            //move stuff at end that we aren't copying over
+            if (limit < fArraySize) {
+                at(limit, fArraySize, temp, temp.length - newSize + newGap);
+            //change 7-23-96
+            //    at(limit, fArraySize - limit, temp, temp.length - newSize + newGap);
+            }
+
+            fArray = temp;
+        } else {
+            if (start > fGap) {
+                System.arraycopy(fArray, gapLimit, fArray, fGap, start - fGap);
+            }
+            if (limit < fGap) {
+                System.arraycopy(fArray, limit, fArray, fArray.length - newSize + newGap, fGap - limit);
+            }
+            if (srcLength > 0) {
+                System.arraycopy(srcChars, srcStart, fArray, start, srcLength);
+            }
+        }
+
+        fArraySize = newSize;
+        fGap = newGap;
+    }
+  }
+
+  /** Replace the chars from start to limit with the chars from srcStart to srcLimit in srcString. */
+
+  /* This implements optimizations for null text or inserting text that fits at the gap,
+     and defaults to call the core replace routine if these optimizations fail. */
+
+  public void replace(int start, int limit, String srcString, int srcStart, int srcLimit)
+  {
+    invalidate();
+    int length = limit - start;
+    int srcLength = srcLimit - srcStart;
+
+    if (fArray == null) {
+        if (start != 0 || limit != 0) {
+            throw new IllegalArgumentException("replace(int start, int limit, String srcString, int srcStart, int srcLimit)");
+        }
+        if (srcLength > 0) {
+            fArray = allocate(srcLength);
+            srcString.getChars(srcStart, srcLimit, fArray, 0);
+            fArraySize = srcLength;
+            fGap = srcLength;
+        }
+    } else {
+        if (start == fGap && fArray.length >= fArraySize - length + srcLength) {
+            if (srcLimit > 0) {
+                srcString.getChars(srcStart, srcLimit, fArray, fGap);
+                fGap += srcLength;
+            }
+            fArraySize += srcLength - length;
+        } else {
+            replace(start, limit, srcString != null ? srcString.toCharArray() : null, srcStart, srcLimit);
+        }
+    }
+  }
+
+  public void replace(int start, int limit, MConstText srcText, int srcStart, int srcLimit)
+  {
+    invalidate();
+    int length = limit - start;
+    int srcLength = srcLimit - srcStart;
+
+    if (fArray == null) {
+        if (start != 0 || limit != 0) {
+            throw new IllegalArgumentException("replace(int start, int limit, String srcString, int srcStart, int srcLimit)");
+        }
+        if (srcLength > 0) {
+            fArray = allocate(srcLength);
+            srcText.extractChars(srcStart, srcLimit, fArray, 0);
+            fArraySize = srcLength;
+            fGap = srcLength;
+        }
+    } else {
+        if (start == fGap && fArray.length >= fArraySize - length + srcLength) {
+            if (srcLimit > 0) {
+                srcText.extractChars(srcStart, srcLimit, fArray, fGap);
+                fGap += srcLength;
+            }
+            fArraySize += srcLength - length;
+        } else {
+            char[] temp = srcLength == 0? null : new char[srcLength];
+            if (temp != null) {
+                srcText.extractChars(srcStart, srcLimit, temp, 0);
+            }
+            replace(start, limit, temp, 0, srcLimit - srcStart);
+        }
+    }
+  }
+
+  /** Replace the chars from start to limit with srcChar. */
+
+  /* This implements optimizations for null text or replacing a character that fits into the gap,
+     and defaults to call the core replace routine if these optimizations fail. */
+
+  public void replace(int start, int limit, char srcChar)
+  {
+    invalidate();
+    if (fArray == null) {
+        if (start != 0 || limit != 0) {
+            throw new IllegalArgumentException("replace(int start, int limit, char srcChar)");
+        }
+        fArray = allocate(1);
+        fArray[0] = srcChar;
+        fArraySize = 1;
+        fGap = 1;
+    } else {
+        int length = limit - start;
+        if (start == fGap && fArray.length > fArraySize - length) {
+            fArray[fGap] = srcChar;
+            fGap += 1;
+            fArraySize += 1 - length;
+        } else {
+            replace(start, limit, new char[] { srcChar} , 0, 1);
+        }
+    }
+  }
+
+  /** Return the char at pos. */
+
+  public char at(int pos)
+  {
+    if (pos < 0 || pos >= fArraySize) {
+      throw new IllegalArgumentException();
+    }
+    return pos < fGap ? fArray[pos] : fArray[fArray.length - fArraySize + pos];
+  }
+
+  /** Copy the chars from start to limit to dst starting at dstStart. */
+
+  public void at(int start, int limit, char[] dst, int dstStart)
+  {
+    int length = limit - start;
+
+    if (start < 0 || limit < start || limit > fArraySize) {
+        throw new IllegalArgumentException();
+    }
+
+    if (limit <= fGap) {
+        System.arraycopy(fArray, start, dst, dstStart, length);
+    } else if (start >= fGap) {
+        System.arraycopy(fArray, fArray.length - fArraySize + start, dst, dstStart, length);
+    } else {
+        System.arraycopy(fArray, start, dst, dstStart, fGap - start);
+        System.arraycopy(fArray, fArray.length - fArraySize + fGap, dst, dstStart + fGap - start, limit - fGap);
+    }
+  }
+
+  /** Return the number of chars in the buffer. */
+
+  public final int length()
+  {
+    return fArraySize;
+  }
+
+  /** Return the number of chars the buffer can hold before it must reallocate. */
+
+  public final int capacity()
+  {
+    return fArray != null ? fArray.length : 0;
+  }
+
+  /** Reserve capacity chars at start. Utility to optimize a sequence of operations at start. */
+
+  public void reserveCapacity(int start, int capacity)
+  {
+    replace(start, start, (char[])null, 0, capacity);
+  }
+
+  /** Minimize the storage used by the buffer. */
+
+  public void compress()
+  {
+    invalidate();
+    if (fArraySize == 0) {
+        fArray = null;
+        fGap = 0;
+    } else if (fArraySize != fArray.length) {
+        char[] temp = new char[fArraySize];
+        at(0, fArraySize, temp, 0);
+        fArray = temp;
+        fGap = fArraySize;
+    }
+  }
+
+  /** Display the buffer. */
+
+  public String toString()
+  {
+    if (fArray != null) {
+        return new StringBuffer()
+        .append("limit: ").append(fArray.length)
+        .append(", size: ").append(fArraySize)
+        .append(", gap: ").append(fGap)
+        .append(", ").append(fArray, 0, fGap)
+        .append(fArray, fArray.length - fArraySize + fGap, fArraySize - fGap)
+        .toString();
+    } else {
+        return new String("The buffer is empty.");
+    }
+  }
+
+  public CharacterIterator createCharacterIterator(int start, int limit) {
+
+    Validation val = getValidation();
+    return new CharBufferIterator(start, limit, fArray, fArraySize, fGap, val);
+  }
+
+  /** The resizing algorithm. Return a value >= minSize. */
+
+  protected int allocation(int minSize)
+  {
+    //    return (minSize + kGrowSize) & ~(kGrowSize - 1);
+    return minSize < kGrowSize ? kGrowSize : (minSize * 2 + kGrowSize) & ~(kGrowSize - 1);
+  }
+
+  /** Allocate a new character array of limit >= minSize. */
+
+  protected char[] allocate(int minSize)
+  {
+    return new char[allocation(minSize)];
+  }
+}
diff --git a/src/com/ibm/richtext/styledtext/CharBufferIterator.java b/src/com/ibm/richtext/styledtext/CharBufferIterator.java
new file mode 100755
index 0000000..6a0ac16
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/CharBufferIterator.java
@@ -0,0 +1,131 @@
+/*
+ * @(#)$RCSfile: CharBufferIterator.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:45:10 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import java.text.CharacterIterator;
+
+final class CharBufferIterator implements CharacterIterator,
+                                          Cloneable
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private int fRangeStart;
+    private int fRangeLimit;
+    private int fCurrentIndex;
+    private char fStorage[];
+    private int fGap;
+    private int fGapLength;
+    private Validation fValidation;
+
+    CharBufferIterator(int start,
+                       int limit,
+                       char[] storage,
+                       int length,
+                       int gap,
+                       Validation validation) {
+
+        if (start > limit) {
+            throw new IllegalArgumentException("start > limit");
+        }
+        fRangeStart = start;
+        fRangeLimit = limit;
+        fCurrentIndex = fRangeStart;
+        fStorage = storage;
+        fGap = gap;
+        fGapLength = (storage==null? 0 : storage.length) - length;
+        fValidation = validation;
+    }
+
+    private void checkValidation() {
+
+        if (!fValidation.isValid()) {
+            throw new Error("Iterator is no longer valid");
+        }
+    }
+
+    public char first()
+    {
+        return setIndex(fRangeStart);
+    }
+
+    public char last()
+    {
+        return setIndex(fRangeLimit - 1);
+    }
+
+    public char current()
+    {
+        checkValidation();
+        if (fCurrentIndex < fRangeStart || fCurrentIndex >= fRangeLimit)
+            return DONE;
+        int i = (fCurrentIndex < fGap) ? fCurrentIndex : (fCurrentIndex + fGapLength);
+        return fStorage[i];
+    }
+
+    public char next()
+    {
+        checkValidation();
+        fCurrentIndex++;
+        if (fCurrentIndex >= fRangeLimit)
+        {
+            fCurrentIndex = fRangeLimit;
+            return DONE;
+        }
+        int i = (fCurrentIndex < fGap) ? fCurrentIndex : (fCurrentIndex + fGapLength);
+        return fStorage[i];
+    }
+
+    public char previous()
+    {
+        fCurrentIndex--;
+        if (fCurrentIndex >= fRangeStart)
+            return current();
+        fCurrentIndex = fRangeStart;
+        return DONE;
+    }
+
+    public char setIndex(int i)
+    {
+        if (i < fRangeStart || i > fRangeLimit)
+            throw new IllegalArgumentException("Invalid position");
+        fCurrentIndex = i;
+        return current();
+    }
+
+    public int getBeginIndex()
+    {
+        return fRangeStart;
+    }
+
+    public int getEndIndex()
+    {
+        return fRangeLimit;
+    }
+
+    public int getIndex()
+    {
+        return fCurrentIndex;
+    }
+
+    public Object clone()
+    {
+        try {
+            return super.clone();
+        }
+        catch (CloneNotSupportedException e) {
+            return null;
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/FastIntBinarySearch.java b/src/com/ibm/richtext/styledtext/FastIntBinarySearch.java
new file mode 100755
index 0000000..f4eb0a0
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/FastIntBinarySearch.java
@@ -0,0 +1,115 @@
+/*
+*   Copyright (C) 1996-2002, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+/*
+    7/29/96
+        Modified to search portions of an integer array.  Should be retested.
+*/
+
+package com.ibm.richtext.styledtext;
+
+/**
+ * This class searches a segment of an array of integers.  The segment
+ * must be sorted in ascending order (but this class does not verify this).
+ * Also, this class aliases the array;  if the array is modified later the
+ * search results are undefined.
+ */
+final class FastIntBinarySearch
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private int dataArray[];
+    private int auxStart;
+    private int power;
+
+    private int fFirstIndex;
+
+    private static final int exp2[] = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072 };
+
+    public FastIntBinarySearch(int data[])
+    {
+        this(data, 0, data.length);
+    }
+
+    public FastIntBinarySearch(int data[], int firstValidIndex, int validLength)
+    {
+        setData(data, firstValidIndex, validLength);
+    }
+    
+    public void setData(int data[]) {
+        
+        setData(data, 0, data.length);
+    }
+    
+    public void setData(int data[], int firstValidIndex, int validLength) {
+
+        if (data.length < 1) throw new IllegalArgumentException();
+        if (data.length >= exp2[exp2.length-1]) throw new IllegalArgumentException();
+
+        dataArray = data;
+        fFirstIndex = firstValidIndex;
+
+        for (power = exp2.length-1; power > 0 && validLength < exp2[power]; power--) {}
+
+        // at this point, array.length >= 2^power
+
+        auxStart = validLength - exp2[power];
+    }
+    
+    /**
+     * Return the index in the array of the first element which is at least
+     * as large as <tt>value</tt>.  If value is larger than the largest
+     * element in the array the last valid index in the array is returned.
+     */
+    public int findIndex(int value)
+    {
+        int index = exp2[power]-1 + fFirstIndex;
+        if (value >= dataArray[auxStart + fFirstIndex]) {
+            index += auxStart;
+        }
+
+        // at this point, index is the "upper limit" of the search
+
+        switch (power) {
+        case 17:
+            if (value < dataArray[index-65536]) index -= 65536;
+        case 16:
+            if (value < dataArray[index-32768]) index -= 32768;
+        case 15:
+            if (value < dataArray[index-16384]) index -= 16384;
+        case 14:
+            if (value < dataArray[index-8192]) index -= 8192;
+        case 13:
+            if (value < dataArray[index-4096]) index -= 4096;
+        case 12:
+            if (value < dataArray[index-2048]) index -= 2048;
+        case 11:
+            if (value < dataArray[index-1024]) index -= 1024;
+        case 10:
+            if (value < dataArray[index-512]) index -= 512;
+        case 9:
+            if (value < dataArray[index-256]) index -= 256;
+        case 8:
+            if (value < dataArray[index-128]) index -= 128;
+        case 7:
+            if (value < dataArray[index-64]) index -= 64;
+        case 6:
+            if (value < dataArray[index-32]) index -= 32;
+        case 5:
+            if (value < dataArray[index-16]) index -= 16;
+        case 4:
+            if (value < dataArray[index-8]) index -= 8;
+        case 3:
+            if (value < dataArray[index-4]) index -= 4;
+        case 2:
+            if (value < dataArray[index-2]) index -= 2;
+        case 1:
+            if (value < dataArray[index-1]) index -= 1;
+        case 0:
+            if (value < dataArray[index]) index -= 1;
+        }
+        return index;
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/MCharBuffer.java b/src/com/ibm/richtext/styledtext/MCharBuffer.java
new file mode 100755
index 0000000..0eebff1
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MCharBuffer.java
@@ -0,0 +1,38 @@
+/*
+ * @(#)$RCSfile: MCharBuffer.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:45:10 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+import java.text.CharacterIterator;
+
+/** A dynamic character array optimized for sequences of insert
+    or delete operations in a local region. */
+
+abstract class MCharBuffer
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    abstract void replace(int start, int limit, MConstText text, int srcStart, int srcLimit);
+    abstract void replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit);
+    abstract void replace(int start, int limit, String srcString, int srcStart, int srcLimit);
+    abstract void replace(int start, int limit, char srcChar);
+    abstract CharacterIterator createCharacterIterator(int start, int limit);
+    abstract char at(int pos);
+    abstract void at(int start, int limit, char[] dst, int dstStart);
+
+    abstract int  length();
+
+    abstract int  capacity();
+    abstract void reserveCapacity(int pos, int length);
+    abstract void compress();
+}
diff --git a/src/com/ibm/richtext/styledtext/MConstText.java b/src/com/ibm/richtext/styledtext/MConstText.java
new file mode 100755
index 0000000..420cd46
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MConstText.java
@@ -0,0 +1,325 @@
+/*
+ * @(#)$RCSfile: MConstText.java,v $ $Revision: 1.3 $ $Date: 2002/03/20 05:11:17 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import java.text.CharacterIterator;
+import java.awt.datatransfer.DataFlavor;
+
+/**
+ * MConstText is a base class for text with multiple character and
+ * paragraph styles.  The text is a sequence of Unicode characters,
+ * represented by <code>char</code>.  Character and paragraph
+ * styles are represented by the <code>AttributeMap</code> class.
+ * <p>
+ * Characters in the text are accessed with an integer index using the
+ * <code>at</code> method.
+ * Valid indices are between 0 and (length-1), where length is the number
+ * of characters in the text.  Additionally, the
+ * characters in the text may be accessed through a
+ * <code>java.text.CharacterIterator</code>.
+ * <p>
+ * Every character in the text has a character style associated with it,
+ * represented by the <code>AttributeMap</code> class.  The character
+ * style for a particular character can be obtained using the
+ * <code>characterStyleAt</code> method.
+ * <p>
+ * Each character in the text is contained in a paragraph.  A paragraph
+ * is a range of text including and terminated by a
+ * paragraph separator (either <code>\n</code> or <code>U+2029</code>).
+ * Every
+ * paragraph has a paragraph style associated with it, represented
+ * by the <code>AttributeMap</code> class.  Paragraph boundaries and
+ * styles can be obtained from the MConstText.
+ * <p>
+ * This class does not have methods for modifying the text or styles.
+ * However, subclasses may add this capability, so it is not safe to
+ * assume that an MConstText instance is immutable.  In particular,
+ * the MText class adds modification protocol to this class.  Clients
+ * can detect whether an MConstText has changed by keeping track of its
+ * timestamp.
+ * <p>
+ * A DataFlavor for clipboard content is defined in this class.  Using
+ * this DataFlavor insures that all clients will recognize MConstText
+ * content on the clipboard.
+ * @see MText
+ * @see AttributeMap
+ * @see java.text.CharacterIterator
+ * @see java.awt.datatransfer.DataFlavor
+ */
+public abstract class MConstText {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * The DataFlavor for MConstText clipboard content.  Used to
+     * indicate that clipboard data has an MConstText representation.
+     */
+    public static final DataFlavor styledTextFlavor =
+                            new DataFlavor(MConstText.class, "Styled Text");
+
+    protected MConstText() {
+    }
+
+//========================================================
+// CHARACTER ACCESS
+//========================================================
+/**
+* Return the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the character at offset <code>pos</code>
+*/
+    public abstract char at(int pos);
+
+/**
+* Copy the characters in the range [<code>start</code>, <code>limit</code>)
+* into the array <code>dst</code>, beginning at <code>dstStart</code>.
+* @param start offset of first character which will be copied into the array
+* @param limit offset immediately after the last character which will be copied into the array
+* @param dst array in which to copy characters.  The length of <code>dst</code> must be at least
+* (<code>dstStart + limit - start</code>).
+*/
+    public abstract void extractChars(int start, int limit, char[] dst, int dstStart);
+
+/**
+* Create an MConstText containing the characters and styles in the range
+* [<code>start</code>, <code>limit</code>).
+* @param start offset of first character in the new text
+* @param limit offset immediately after the last character in the new text
+* @return an MConstText object containing the characters and styles in the given range
+*/
+    public abstract MConstText extract(int start, int limit);
+
+/**
+* Create a <code>java.text.CharacterIterator</code> over all
+* of the characters in the text.  Default implementation calls
+* <code>createCharacterIterator(0, length())</code>
+* @return a <code>java.text.CharacterIterator</code> over all
+*      of the characters in the text
+*/
+    public CharacterIterator createCharacterIterator() {
+
+        return createCharacterIterator(0, length());
+    }
+
+/**
+* Create a <code>java.text.CharacterIterator</code> over the
+* given range of characters in the text.
+* @param start the first index in the iteration range
+* @param limit the index after the last character in the iteration range
+* @return a <code>java.text.CharacterIterator</code> over the
+*     given range
+*/
+    public abstract CharacterIterator createCharacterIterator(int start,
+                                                              int limit);
+
+
+//========================================================
+// SIZE/CAPACITY
+//========================================================
+/**
+* Return the length of the MConstText object.  The length is the number of characters in the text.
+* @return the length of the MConstText object
+*/
+    public abstract int length();
+
+//========================================================
+// Character styles
+//========================================================
+
+/**
+* Return the index of the first character in the character style run
+* containing pos.  All characters in a style run have the same character
+* style.
+* @return the style at offset <code>pos</code>
+*/
+    public abstract int characterStyleStart(int pos);
+
+/**
+* Return the index after the last character in the character style run
+* containing pos.  All characters in a style run have the same character
+* style.
+* @return the style at offset <code>pos</code>
+*/
+    public abstract int characterStyleLimit(int pos);
+
+/**
+* Return the style applied to the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the style at offset <code>pos</code>
+*/
+    public abstract AttributeMap characterStyleAt(int pos);
+
+//========================================================
+// PARAGRAPH BOUNDARIES
+//========================================================
+/**
+* Return the start of the paragraph containing the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the start of the paragraph containing the character at offset <code>pos</code>
+*/
+    public abstract int paragraphStart(int pos);
+
+/**
+* Return the limit of the paragraph containing the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the limit of the paragraph containing the character at offset <code>pos</code>
+*/
+    public abstract int paragraphLimit(int pos);
+
+/**
+* Return the paragraph style applied to the paragraph containing offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the paragraph style in effect at <code>pos</code>
+*/
+    public abstract AttributeMap paragraphStyleAt(int pos);
+
+/**
+* Return the current time stamp.  The time stamp is
+* incremented whenever the contents of the MConstText changes.
+* @return the current paragraph style time stamp
+*/
+    public abstract int getTimeStamp();
+
+/**
+* Return the start of the damaged range.  If the start is not less
+* than the the limit of the damaged range, then the damaged range
+* is empty.
+* @return the start of the damaged range
+* @see #damagedRangeLimit
+* @see MText#resetDamagedRange
+*/
+    public abstract int damagedRangeStart();
+
+/**
+* Return the limit of the damaged range.  If the start is not less
+* than the the limit of the damaged range, then the damaged range
+* is empty.
+* @return the start of the damaged range
+* @see #damagedRangeStart
+* @see MText#resetDamagedRange
+*/
+    public abstract int damagedRangeLimit();
+
+//========================================================
+// Equality and hashCode
+//========================================================
+/**
+* Compare this to another Object for equality.  This is
+* equal to rhs if rhs is an MConstText which is equal
+* to this.
+* @param rhs Object to compare to
+* @return true if this equals <code>rhs</code>
+*/
+    public final boolean equals(Object rhs) {
+
+        MConstText otherText;
+
+        try {
+            otherText = (MConstText) rhs;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+
+        return equals(otherText);
+    }
+
+/**
+* Compare this to another MConstText for equality.  This is
+* equal to rhs if the characters and styles in rhs are the
+* same as this.  Subclasses may override this implementation
+* for efficiency, but they should preserve these semantics.
+* Determining that two MConstText instances are equal may be
+* an expensive operation, since every character and style must
+* be compared.
+* @param rhs Object to compare to
+* @return true if this equals <code>rhs</code>
+*/
+    public boolean equals(MConstText rhs) {
+
+        if (rhs == null) {
+            return false;
+        }
+
+        if (rhs == this) {
+            return true;
+        }
+
+        if (hashCode() != rhs.hashCode()) {
+            return false;
+        }
+
+        int length = length();
+        if (length != rhs.length()) {
+            return false;
+        }
+
+        for (int i=0; i < length; i++) {
+            if (i < length && at(i) != rhs.at(i)) {
+                return false;
+            }
+        }
+
+        for (int start = 0; start < length;) {
+            if (!characterStyleAt(start).equals(rhs.characterStyleAt(start))) {
+                return false;
+            }
+            int limit = characterStyleLimit(start);
+            if (limit != rhs.characterStyleLimit(start)) {
+                return false;
+            }
+            start = limit;
+        }
+
+        for (int start = 0; start < length;) {
+
+            if (!paragraphStyleAt(start).equals(rhs.paragraphStyleAt(start))) {
+                return false;
+            }
+            start = paragraphLimit(start);
+        }
+
+        return paragraphStyleAt(length).equals(rhs.paragraphStyleAt(length));
+    }
+
+    /**
+     * Return the hashCode for this MConstText.  An empty MConstText
+     * has hashCode 0;  a nonempty MConstText's hashCode is
+     * <blockquote><pre>
+     *       at(0) +
+     *       at(length/2)*31^1 +
+     *       at(length-1)*31^2 +
+     *       characterStyleAt(0).hashCode()*31^3 +
+     *       paragraphStyleAt(length-1).hashCode()*31^4
+     * </pre></blockquote>
+     * where <code>^</code> is exponentiation (not bitwise XOR).
+     */
+    public final int hashCode() {
+
+        int hashCode = 0;
+        int length = length();
+
+        if (length > 0) {
+            hashCode = paragraphStyleAt(length-1).hashCode();
+            hashCode = hashCode*31 + characterStyleAt(0).hashCode();
+            hashCode = hashCode*31 + at(length-1);
+            hashCode = hashCode*31 + at(length/2);
+            hashCode = hashCode*31 + at(0);
+        }
+
+        return hashCode;
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/MParagraphBuffer.java b/src/com/ibm/richtext/styledtext/MParagraphBuffer.java
new file mode 100755
index 0000000..8a018ff
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MParagraphBuffer.java
@@ -0,0 +1,94 @@
+/*
+ * @(#)$RCSfile: MParagraphBuffer.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:35 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import java.io.Serializable;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+abstract class MParagraphBuffer
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+/**
+* Returns the start of the paragraph containing offset <tt>pos</tt>.
+*/
+    abstract int paragraphStart(int pos);
+
+/**
+* Returns the limit of the paragraph containing offset <tt>pos</tt>.
+*/
+    abstract int paragraphLimit(int pos);
+
+/**
+* Returns the style of the paragraph containing offset <tt>pos</tt>.
+*/
+    abstract AttributeMap paragraphStyleAt(int offset);
+
+/**
+* Process a character insertion at offset <tt>start</tt>.
+* If a paragraph break was inserted, propogate paragraph style at
+* <tt>start</tt> to new paragraph.
+*/
+    abstract void insertText(int start, char insertedChar);
+
+/**
+* Process character insertion at offset <tt>start</tt>.
+* Each new paragraph gets paragraph style at
+* <tt>start</tt>.
+*/
+    abstract void insertText(int start,
+                             char[] srcChars,
+                             int srcStart,
+                             int srcLimit);
+
+/**
+* Process deletion by removing paragraph breaks contained in
+* deleted range.  Propogate paragraph styles backward, if necessary.
+*/
+    abstract void deleteText(int start,
+                             int limit,
+                             int[] damagedRange);
+
+/*
+* Replace paragraph breaks/styles between start and limit with paragraph breaks/styles
+* from <tt>srcText</tt>.
+* @param start an offset into the text
+* @param limit the index after the last character to replace
+* @param srcText the text from which new paragraphs are taken
+* @param srcStart the start of the range in <code>srcText</code> to copy
+* @param srcLimit the first index after the range in <code>srcText</code> to copy
+*/
+    abstract void replace(int start,
+                          int limit,
+                          MConstText srcText,
+                          int srcStart,
+                          int srcLimit,
+                          int[] damagedRange);
+
+/**
+* Set the style of all paragraphs containing offsets in the range [start, limit) to
+* <tt>style</tt>.
+*/
+    abstract boolean modifyParagraphStyles(int start,
+                                           int limit,
+                                           StyleModifier modifier,
+                                           int[] damagedRange);
+
+/**
+* Minimize the amount of memory used by this object.
+*/
+    abstract void compress();
+}
diff --git a/src/com/ibm/richtext/styledtext/MStyleBuffer.java b/src/com/ibm/richtext/styledtext/MStyleBuffer.java
new file mode 100755
index 0000000..77be8f1
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MStyleBuffer.java
@@ -0,0 +1,112 @@
+/*
+ * @(#)$RCSfile: MStyleBuffer.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:35 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/*
+    8/1/96
+        Style -> ResolvedStyle
+    8/7/96 jf
+        added countStyles and getStyles protocol
+    8/13/96
+        ResolvedStyle->Style
+    8/22/96 jf
+        Removed the setIterator methods.
+*/
+/*
+* MStyleBuffer is the abstract interface for a class which maintains
+* style runs in an <tt>MText</tt>.  A "style run" consists of a
+* style and the interval on which the style applies.
+* <p>
+* MStyleBuffer includes methods to call when text is inserted into
+* or deleted from the <tt>MText</tt>.  These methods update the
+* style runs in accordance with the commonly accepted behavior for
+* style runs.
+* <p>
+* Additionally, MStyleBuffer provides methods for replacing the style runs on a
+* text range with another set of style runs.  MStyleBuffer does not do style "combining" (for
+* example, adding the bold attribute to text which is italicized);  clients are
+* responsible for computing the combined styles, and passing these styles into
+* MStyleBuffer.
+* <p>
+* MStyleBuffer supplies a method for replacing the style runs on a text range with the runs
+* represented in an <tt>MStyleRunIterator</tt>.  This is useful for implementing paste
+* operations, in which the style runs on a range of text are replaced by style runs
+* from an external source.
+* <p>
+*
+* @author John Raley
+*
+* @see AttributeMap
+* @see MText
+*/
+abstract class MStyleBuffer
+{
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+/**
+* Respond to an insertion in the text.  The length of the last style run which
+* begins before <tt>start</tt> is increased by <tt>limit-start</tt>.
+* @param start the offset where the insertion began
+* @param limit the offset where the insertion ended
+*/
+    abstract void insertText(int start, int limit);
+
+/**
+* Respond to a deletion in the text.  The last style run before
+* <tt>start</tt> is truncated to end at <tt>start</tt>.  The
+* style run containing (<tt>start</tt>+<tt>length</tt>) is set to begin
+* at (<tt>start</tt>+<tt>length</tt>).  Runs in between are deleted.
+* If the deletion occurs entirely within one style run, the length of the style
+* run is reduced by <tt>length</tt>.
+* @param start the offset where the deletion began
+* @param length the offset where the deletion ended
+*/
+    abstract void deleteText(int start, int limit);
+
+/*
+* Replace style runs between offsets <tt>start</tt> and <tt>limit</tt> with styles in
+* <tt>iter</tt>.  This method can be used to perform a "paste" operation.
+* @param start the offset where the replacement begins
+* @param limit the offset where the replacement ends
+* @param iter an <tt>MStyleRunIterator</tt> containing style runs which will replace old
+* style runs.
+*/
+    abstract void replace(int start, int limit, MConstText srcText, int srcStart, int srcLimit);
+
+    abstract int styleStart(int pos);
+    abstract int styleLimit(int pos);
+
+/**
+* Return style at location <tt>pos</tt>.
+* @param pos an offset into the text
+* @returns the style of the character at <tt>offset</tt>
+*/
+    abstract AttributeMap styleAt(int pos);
+
+/**
+ * Return true if styles were modified.
+ */
+    abstract boolean modifyStyles(int start,
+                                  int limit,
+                                  StyleModifier modifier,
+                                  int[] damagedRange);
+
+/**
+* Minimize the amount of memory used by this object.
+*/
+    abstract void compress();
+}
diff --git a/src/com/ibm/richtext/styledtext/MTabRuler.java b/src/com/ibm/richtext/styledtext/MTabRuler.java
new file mode 100755
index 0000000..40fa4e1
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MTabRuler.java
@@ -0,0 +1,113 @@
+/*
+ * @(#)$RCSfile: MTabRuler.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:45:10 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+/**
+ * This interface represents a sequence of TabStops, ordered by position.
+ * The first
+ * TabStop in the ruler can be obtained with the <code>firstTab</code>
+ * method;  subsequent TabStops are obtained with the <code>nextTab</code>
+ * method.
+ * <p>
+ * If a TabStop with type <code>TabStop.kAuto</code> is returned, all tabs
+ * after that TabStop will also have type <code>TabStop.kAuto</code>, and
+ * their positions will be multiples of <code>autoSpacing</code>.
+ * @see TabStop
+ */
+public abstract class MTabRuler
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Return first tab in the ruler.  If an autoTab, it is at position zero, and
+     * all subsequent tabs will be autotabs at autoSpacing intervals.
+     */
+    public abstract TabStop firstTab();
+
+    /**
+     * Return the first tab in the ruler with fPosition > position.  If it is an
+     * autotab, it is at an increment of autoSpacing, and all subsequent tabs will be
+     * autotabs at autoSpacing intervals.
+     */
+    public abstract TabStop nextTab(int position);
+
+    /**
+     * Return the interval for autotabs.
+     */
+    public abstract int autoSpacing();
+
+    /**
+     * Compute the hashCode for this ruler.  The hashCode is the
+     * hashCode of the first tab multiplied by the autoSpacing
+     * interval.
+     */
+    public final int hashCode() {
+
+        return firstTab().hashCode() * autoSpacing();
+    }
+
+    /**
+     * Return true if this tab ruler contains the given tab.
+     * @param tabToTest the tab to search for
+     * @return true if this tab ruler contains <code>tabToTest</code>
+     */
+    public boolean containsTab(TabStop tabToTest) {
+
+        for (TabStop tab = firstTab();
+                        tab.getType() != TabStop.kAuto;
+                        tab = nextTab(tab.getPosition())) {
+            if (tab.getPosition() >= tabToTest.getPosition()) {
+                return tabToTest.equals(tab);
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Return a tab ruler identical to this ruler, except with the
+     * given tab added.  This ruler is not modified.
+     * @param tabToAdd the tab to add to the new tab ruler
+     * @return an MTabRuler resulting from this operation
+     */
+    public MTabRuler addTab(TabStop tabToAdd) {
+
+        return StandardTabRuler.addTabToRuler(this, tabToAdd);
+    }
+
+    /**
+     * Return a tab ruler identical to the given ruler, except with the
+     * tab at the given position removed.  This ruler is not modified.
+     * @param position the position of the tab to remove from the new tab ruler
+     * @return an MTabRuler resulting from this operation
+     */
+    public MTabRuler removeTab(int position) {
+
+        return StandardTabRuler.removeTabFromRuler(this, position);
+    }
+
+    /**
+     * Return a tab ruler identical to this ruler, except with the
+     * tab at position <code>fromPosition</code> moved to position
+     * <code>toPosition</code>.  This ruler is not modified.
+     * @param fromPosition the position of the tab to move
+     * @param toPosition the new position of the tab
+     * @return an MTabRuler resulting from this operation
+     */
+    public MTabRuler moveTab(int fromPosition, int toPosition) {
+
+        return StandardTabRuler.moveTabOnRuler(this, fromPosition, toPosition);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/styledtext/MText.java b/src/com/ibm/richtext/styledtext/MText.java
new file mode 100755
index 0000000..d0149fe
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MText.java
@@ -0,0 +1,243 @@
+/*
+ * @(#)$RCSfile: MText.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:36 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/*
+    Change history:
+
+    10/29/96 jef    split the character and paragraph style access functions
+    8/14/96 sfb     eliminated StyleSheetIterator
+    8/21/96 jef        completed abstract interface (changed iterator classes etc.)
+    1/30/97 rtg     cleaned up interface, brought in functions from SimpleTextView
+    7/31/98 jbr switched from Style to AttributeMap
+
+*/
+
+/**
+ * This class is a mutable extension of MConstText.  It has methods for
+ * inserting, appending, replacing, and removing styled text.  Additionally,
+ * it has methods for modifying paragraph and character styles.
+ * <p>
+ * Styled characters (from another <code>MConstText</code> instance) added
+ * to the text retain their original character styles.  The style of plain characters
+ * (specified as a <code>char</code> or <code>char[]</code>) is always
+ * specified explicitly when they are added to the text.  MText does not do
+ * character style "propagation", where unstyled characters take on the
+ * style of previous characters.  Clients can implement this behavior by
+ * specifying the styles to propagate.
+ * <p>
+ * When unstyled characters are added to the text, their paragraph style
+ * is the paragraph style in effect immediately after the last new character.
+ * If the characters contain paragraph separators, then every new paragraph
+ * will have the same paragraph style.  When styled characters are added
+ * to the text, their resulting paragraph style is determined by the
+ * following rule:
+ * <blockquote>
+ * The paragraph styles in the new text
+ * become the paragraph styles in the target text, with the exception of the
+ * last paragraph in the new text, which takes on the paragraph style in
+ * effect immediately after the inserted text.
+ * If the new text is added at the end of the target text, the new text's
+ * paragraph styles take effect in any paragraph affected by the addition.
+ * </blockquote>
+ * For example, suppose there is a single paragraph of text with style 'A',
+ * delimited with a paragraph separator 'P':
+ * <blockquote>
+ * AAAAAAP
+ * </blockquote>
+ * Suppose the following styled paragraphs are inserted into the above text
+ * after the fourth character:
+ * <blockquote>
+ * BBBBPCCCPDDD
+ * </blockquote>
+ * Then the original paragraph style of each character is:
+ * <blockquote>
+ * AAAABBBBPCCCPDDDAAP
+ * </blockquote>
+ * The resulting paragraph styles are:
+ * <blockquote>
+ * BBBBBBBBPCCCPAAAAAP
+ * </blockquote>
+ * Similarly, if characters are deleted, the paragraph style immediately
+ * after the deletion takes effect on the paragraph containing the deletion.
+ * So, if characters 4-16 were deleted in the example above, the paragraph
+ * styles would be:
+ * <blockquote>
+ * AAAAAAP
+ * </blockquote>
+ * This paragraph-style propagation policy is sometimes referred to as <strong>
+ * following styles win</strong>, since styles at the end of the paragraph
+ * become the style for the entire paragraph.
+ * <p>
+ * This class can accumulate a <strong>damaged range</strong> - an interval in
+ * which characters, character styles, or paragraph styles have changed.  This is
+ * useful for clients such as text editors which reformat and draw text after
+ * changes.  Usually the damaged range is exactly the range of characters
+ * operated upon;  however, larger ranges may be damaged if paragraph styles
+ * change.
+ * @see StyleModifier
+ */
+
+public abstract class MText extends MConstText
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    protected MText() {
+    }
+
+//==================================================
+// MAIN CHARACTER MODIFICATION FUNCTIONS
+//==================================================
+/**
+* Replace the characters and styles in the range [<code>start</code>, <code>limit</code>) with the characters
+* and styles in <code>srcText</code> in the range [<code>srcStart</code>, <code>srcLimit</code>).  <code>srcText</code> is not
+* modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character and style at
+* <code>limit</code> is not modified.
+* @param srcText the source for the new characters and styles
+* @param srcStart the offset into <code>srcText</code> where new characters and styles will be obtained
+* @param srcLimit the offset into <code>srcText</code> where the new characters and styles end
+*/
+    public abstract void replace(int start, int limit, MConstText srcText, int srcStart, int srcLimit);
+
+/**
+* Replace the characters and styles in the range [<code>start</code>, <code>limit</code>) with the characters
+* and styles in <code>srcText</code>.  <code>srcText</code> is not
+* modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character and style at
+* <code>limit</code> is not modified.
+* @param srcText the source for the new characters and styles
+*/
+    public abstract void replace(int start, int limit, MConstText text);
+
+/**
+* Replace the characters in the range [<code>start</code>, <code>limit</code>) with the characters
+* in <code>srcChars</code> in the range [<code>srcStart</code>, <code>srcLimit</code>).  New characters take on the style
+* <code>charsStyle</code>.
+* <code>srcChars</code> is not modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character at
+* <code>limit</code> is not modified.
+* @param srcChars the source for the new characters
+* @param srcStart the offset into <code>srcChars</code> where new characters will be obtained
+* @param srcLimit the offset into <code>srcChars</code> where the new characters end
+* @param charsStyle the style of the new characters
+*/
+    public abstract void replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit, AttributeMap charsStyle);
+
+/**
+* Replace the characters in the range [<code>start</code>, <code>limit</code>) with the character <code>srcChar</code>.
+* The new character takes on the style <code>charStyle</code>
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character at
+* <code>limit</code> is not modified.
+* @param srcChar the new character
+* @param charsStyle the style of the new character
+*/
+    public abstract void replace(int start, int limit, char srcChar, AttributeMap charStyle);
+
+/**
+* Replace the entire contents of this MText (both characters and styles) with
+* the contents of <code>srcText</code>.
+* @param srcText the source for the new characters and styles
+*/
+    public abstract void replaceAll(MConstText srcText);
+
+/**
+* Insert the contents of <code>srcText</code> (both characters and styles) into this
+* MText at the position specified by <code>pos</code>.
+* @param pos The character offset where the new text is to be inserted.
+* @param srcText The text to insert. */
+    public abstract void insert(int pos, MConstText srcText);
+
+/**
+* Append the contents of <code>srcText</code> (both characters and styles) to the
+* end of this MText.
+* @param srcText The text to append. */
+    public abstract void append(MConstText srcText);
+
+/**
+* Delete the specified range of characters (and styles).
+* @param start Offset of the first character to delete.
+* @param limit Offset of the first character after the range to delete. */
+    public abstract void remove(int start, int limit);
+
+/**
+* Delete all characters and styles.
+*/
+    public abstract void remove();
+
+/**
+* Create an MText containing the characters and styles in the range
+* [<code>start</code>, <code>limit</code>).
+* @param start offset of first character in the new text
+* @param limit offset immediately after the last character in the new text
+* @return an MConstText object containing the characters and styles in the given range
+*/
+    public abstract MText extractWritable(int start, int limit);
+
+
+//==================================================
+// STORAGE MANAGEMENT
+//==================================================
+
+/**
+* Minimize the amount of memory used by the MText object.
+*/
+    public abstract void compress();
+
+//==================================================
+// STYLE MODIFICATION
+//==================================================
+
+/**
+* Set the character style of all characters in the MText object to
+* <code>AttributeMap.EMPTY_ATTRIBUTE_MAP</code>.
+*/
+    public abstract void removeCharacterStyles();
+
+/**
+* Invoke the given modifier on all character styles from start to limit.
+* @param modifier the modifier to apply to the range.
+* @param start the start of the range of text to modify.
+* @param limit the limit of the range of text to modify.
+*/
+    public abstract void modifyCharacterStyles(int start, int limit, StyleModifier modifier);
+
+/**
+* Invoke the given modifier on all paragraph styles in paragraphs
+* containing characters in the range [start, limit).
+* @param modifier the modifier to apply to the range.
+* @param start the start of the range of text to modify.
+* @param limit the limit of the range of text to modify.
+*/
+    public abstract void modifyParagraphStyles(int start, int limit, StyleModifier modifier);
+
+//==================================================
+// DAMAGED RANGE
+//==================================================
+/**
+* Reset the damaged range to an empty interval, and begin accumulating the damaged
+* range.  The damaged range includes every index where a character, character style,
+* or paragraph style has changed.
+* @see #damagedRangeStart
+* @see #damagedRangeLimit
+*/
+    public abstract void resetDamagedRange();
+}
diff --git a/src/com/ibm/richtext/styledtext/ParagraphBuffer.java b/src/com/ibm/richtext/styledtext/ParagraphBuffer.java
new file mode 100755
index 0000000..8e9f2e8
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/ParagraphBuffer.java
@@ -0,0 +1,716 @@
+/*
+ * @(#)$RCSfile: ParagraphBuffer.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:36 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/*
+    Right now, you have to construct this class with a charBuffer.  That's pretty ugly... */
+
+/*
+    8/8/96
+        Added replace method, which reads styles from a ParagraphIterator.
+        Also, added a constructor which takes a ParagraphIterator.
+        These methods are for copy/paste support.
+
+    8/22/96
+        Replace method (which takes an iterator as an argument) tests for a
+        0-length iterator.
+
+    9/30/96
+        {jbr} modified paragraphLimit();
+
+    10/23/96
+        This class now maintains paragraph styles.  Also has a timestamp.
+
+    10/25/96
+        Holds on to Style instead of Style.
+
+    7/31/98 Switched to AttributeMap
+
+*/
+
+/**
+* This class stores offsets where paragraph breaks occur, and the style applied to
+* each paragraph.
+*
+* The offsets where paragraph breaks occur are stored in a RunArray object.  This is
+* not strictly necessary, but it makes scanning the text for paragraph breaks unnecessary.
+* However, it makes determining where paragraphs start a little confusing.  If there is a
+* paragraph break at offset p, then there will be a paragraph start at offset p+1.
+* If the last character in the text is a paragraph break, there will be a run array entry
+* for that character (and also a paragraph style for that paragraph, even though the
+* style does not apply to any text).
+*
+* The style of the first paragraph in the text is in the fFirstStyle member.  Other
+* paragraph styles are stored in the fStyleTable array, in the following manner:  the
+* paragraph with begins at offset fRunArray.fRunStart[i]+1 has style fStyleTable[i].
+* The style table's "gap range" is kept in sync with the RunArray.
+*
+* This class propogates paragraph styles in the "Microsoft Word" fashion:  styles
+* propogate backward from paragraph breaks.
+*
+* This class maintains a time stamp, which changes every time extra formatting (formatting
+* on a range other than the current selection) is needed;  for example, when a paragraph
+* break is removed.
+*/
+
+
+final class ParagraphBuffer extends MParagraphBuffer implements Externalizable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int kInitialSize = 10;
+    private static final int CURRENT_VERSION = 1;
+    private static final long serialVersionUID = 22356934;
+
+    private RunArray fRunArray;
+    private AttributeMap[] fStyleTable;
+    private AttributeMap fFirstStyle;
+
+    private static final boolean isParagraphBreak(char c) {
+
+        return c =='\u2029' || c == '\n';
+    }
+
+/**
+* Construct a new paragraph buffer from the characters in <tt>charBuffer</tt>.
+*/
+    ParagraphBuffer(MCharBuffer charBuffer) {
+
+        this(charBuffer.length());
+
+        // scan text for paragraph boundaries
+
+        int textLength = fRunArray.getCurTextLength();
+
+        for (int pos=0; pos < textLength; pos++) {
+
+            if (isParagraphBreak(charBuffer.at(pos))) {
+                if (fRunArray.fPosEnd+1 >= fRunArray.fNegStart)
+                    expandStyleTable();
+                fRunArray.fRunStart[++fRunArray.fPosEnd] = pos;
+                fStyleTable[fRunArray.fPosEnd] = fFirstStyle;
+            }
+        }
+
+    }
+
+/**
+* Private constructor.
+*/
+    private ParagraphBuffer(int initialLength) {
+
+        fRunArray = new RunArray(kInitialSize, initialLength);
+        fStyleTable = new AttributeMap[fRunArray.getArrayLength()];
+
+        fFirstStyle = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+    }
+
+    /**
+     * Note: this constructor is ONLY for use by the Serialization
+     * mechanism.  It does not leave this object in a valid state!
+     */
+    public ParagraphBuffer() {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        compress();
+        out.writeInt(CURRENT_VERSION);
+        out.writeObject(fRunArray);
+        out.writeObject(fStyleTable);
+        out.writeObject(fFirstStyle);
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                                ClassNotFoundException {
+
+        if (in.readInt() != CURRENT_VERSION) {
+            throw new IOException("Invalid version of ParagraphBuffer");
+        }
+        fRunArray = (RunArray) in.readObject();
+        fStyleTable = (AttributeMap[]) in.readObject();
+        fFirstStyle = (AttributeMap) in.readObject();
+    }
+
+/**
+* Shift table such that the last positive run starts before pos.
+*/
+    private void shiftTableTo(int pos) {
+
+        int oldNegStart = fRunArray.fNegStart;
+        int oldPosEnd = fRunArray.fPosEnd;
+
+        fRunArray.shiftTableTo(pos);
+
+        if (oldPosEnd > fRunArray.fPosEnd)
+            System.arraycopy(fStyleTable, fRunArray.fPosEnd+1,
+                             fStyleTable, fRunArray.fNegStart,
+                             oldPosEnd-fRunArray.fPosEnd);
+        else if (oldNegStart < fRunArray.fNegStart)
+            System.arraycopy(fStyleTable, oldNegStart,
+                             fStyleTable, oldPosEnd+1,
+                             fRunArray.fNegStart-oldNegStart);
+    }
+
+/**
+* Update the style table to reflect a change in the RunArray's size.
+*/
+    private void handleArrayResize(int oldNegStart) {
+
+        AttributeMap newStyleTable[] = new AttributeMap[fRunArray.getArrayLength()];
+        System.arraycopy(fStyleTable, 0, newStyleTable, 0, fRunArray.fPosEnd+1);
+        System.arraycopy(fStyleTable, oldNegStart, newStyleTable, fRunArray.fNegStart, (fRunArray.getArrayLength()-fRunArray.fNegStart));
+        fStyleTable = newStyleTable;
+    }
+
+    void compress() {
+
+        int oldNegStart = fRunArray.fNegStart;
+        fRunArray.compress();
+        if (fRunArray.fNegStart != oldNegStart) {
+            handleArrayResize(oldNegStart);
+        }
+    }
+
+/**
+* Make more room in run/style tables.
+*/
+    private void expandStyleTable() {
+
+        int oldNegStart = fRunArray.fNegStart;
+        fRunArray.expandRunTable();
+        handleArrayResize(oldNegStart);
+    }
+
+/**
+* Process a character insertion at offset <tt>start</tt>.
+* If a paragraph break was inserted, propogate paragraph style at
+* <tt>start</tt> to new paragraph.
+*/
+    public void insertText(int start, char insertedChar) {
+
+        shiftTableTo(start);
+        if (isParagraphBreak(insertedChar)) {
+            if (fRunArray.fPosEnd+1 >= fRunArray.fNegStart)
+                expandStyleTable();
+            fRunArray.fRunStart[++fRunArray.fPosEnd] = start;
+            fStyleTable[fRunArray.fPosEnd] =
+                (fRunArray.fPosEnd == 0)? fFirstStyle : fStyleTable[fRunArray.fPosEnd-1];
+            fRunArray.runStartsChanged();
+        }
+
+        //fRunArray.fCurTextLength++;
+        fRunArray.addToCurTextLength(1);
+    }
+
+/**
+* Process character insertion at offset <tt>start</tt>.
+* Each new paragraph gets paragraph style at
+* <tt>start</tt>.
+*/
+    public void insertText(int start, char srcChars[], int srcStart, int srcLimit) {
+
+        shiftTableTo(start);
+
+        int adjust = start - srcStart;
+
+        for (int i=srcStart;  i < srcLimit; i++)
+            if (isParagraphBreak(srcChars[i])) {
+                if (fRunArray.fPosEnd+1 >= fRunArray.fNegStart)
+                    expandStyleTable();
+                fRunArray.fRunStart[++fRunArray.fPosEnd] = adjust + i;
+                fStyleTable[fRunArray.fPosEnd] =
+                    (fRunArray.fPosEnd == 0)? fFirstStyle : fStyleTable[fRunArray.fPosEnd-1];
+                fRunArray.runStartsChanged();
+            }
+
+        //fRunArray.fCurTextLength += (srcLimit-srcStart);
+        fRunArray.addToCurTextLength(srcLimit-srcStart);
+    }
+
+/**
+* Process deletion by removing paragraph breaks contained in
+* deleted range.  Propogate paragraph styles backward, if necessary.
+*/
+    public void deleteText(int start, int limit, int[] damagedRange) {
+
+        int length = limit - start;
+        if (length < 0) {
+            throw new IllegalArgumentException("Invalid range");
+        }
+
+        shiftTableTo(limit);
+
+        int newEnd = fRunArray.findRunContaining(start-1);
+
+        if (newEnd != fRunArray.fPosEnd) {
+
+            AttributeMap propStyle = fStyleTable[fRunArray.fPosEnd];
+            boolean propogated;
+
+            if (newEnd == -1) {
+                propogated = !propStyle.equals(fFirstStyle);
+                fFirstStyle = propStyle;
+            }
+            else {
+                propogated = !propStyle.equals(fStyleTable[newEnd]);
+                fStyleTable[newEnd] = propStyle;
+            }
+
+            if (propogated) {
+                int pStart = (newEnd==-1)? 0 : fRunArray.fRunStart[newEnd] + 1;
+                damagedRange[0] = Math.min(damagedRange[0], pStart);
+            }
+
+            fRunArray.fPosEnd = newEnd;
+        }
+
+        fRunArray.addToCurTextLength(-length);
+
+        fRunArray.runStartsChanged();
+    }
+
+/**
+* Returns the start of the paragraph containing offset <tt>pos</tt>.
+*/
+    public int paragraphStart(int pos) {
+
+        int run = fRunArray.findRunContaining(pos-1);
+        if (run == -1) {
+            return 0;
+        }
+        else {
+            return fRunArray.getLogicalRunStart(run) + 1;
+        }
+    }
+
+/**
+* Returns the limit of the paragraph containing offset <tt>pos</tt>.
+*/
+    public int paragraphLimit(int pos) {
+
+        int run = fRunArray.findRunContaining(pos-1);
+
+        if (run == fRunArray.fPosEnd)
+            run = fRunArray.fNegStart;
+        else
+            run++;
+
+        if (run == fRunArray.getArrayLength()) {
+            return fRunArray.getCurTextLength();
+        }
+
+        int start = fRunArray.getLogicalRunStart(run);
+
+        return start+1;
+    }
+
+/**
+* Returns the style of the paragraph containing offset <tt>pos</tt>.
+*/
+    public AttributeMap paragraphStyleAt(int offset) {
+
+        int run = fRunArray.findRunContaining(offset-1);
+        if (run < 0)
+            return fFirstStyle;
+        else
+            return fStyleTable[run];
+    }
+
+/**
+* Create paragraph iterator.
+*/
+/*
+    public MParagraphIterator createParagraphIterator(int start, int limit) {
+
+        return new ParagraphIterator(start, limit);
+    }
+*/
+
+/**
+* Called by iterator to get run info.
+*/
+    private void setIterator(int pos, ParagraphIterator iter) {
+
+        if ((pos < 0) || (pos >= fRunArray.getCurTextLength())) {
+            iter.set(0, 0, kNoRun, null);
+            return;
+        }
+
+        int run;
+
+        if (pos > 0)
+            run = fRunArray.findRunContaining(pos-1);
+        else
+            run = -1;
+
+        setIteratorUsingRun(run, iter);
+    }
+
+/**
+* Called by iterator to get run info.
+*/
+    private void setIteratorUsingRun(int run, ParagraphIterator iter) {
+
+        int lastValidRun = fRunArray.lastRun();
+
+        if (run < -1 || run > lastValidRun) {
+            iter.set(0, 0, kNoRun, null);
+            return;
+        }
+
+        if (run == fRunArray.fPosEnd+1)
+            run = fRunArray.fNegStart;
+        else if (run == fRunArray.fNegStart-1)
+            run = fRunArray.fPosEnd;
+
+        int runStart;
+        AttributeMap style;
+
+        if (run < 0) {
+            runStart = 0;
+            style = fFirstStyle;
+        }
+        else {
+            runStart = fRunArray.fRunStart[run];
+            style = fStyleTable[run];
+            if (runStart < 0)
+                runStart += fRunArray.getCurTextLength();
+            runStart++;
+        }
+
+        int nextRun;
+
+        if (run == fRunArray.fPosEnd)
+            nextRun = fRunArray.fNegStart;
+        else
+            nextRun = run + 1;
+
+        int runLimit;
+
+        if (nextRun >= fRunArray.getArrayLength())
+            runLimit = fRunArray.getCurTextLength();
+        else {
+            runLimit = fRunArray.fRunStart[nextRun];
+            if (runLimit < 0)
+                runLimit += fRunArray.getCurTextLength();
+            runLimit++;
+            }
+
+        iter.set(runStart, runLimit, run, style);
+    }
+
+/**
+* Replace paragraph breaks/styles between start and length with paragraph breaks/styles
+* from <tt>srcText</tt>.
+* @param start an offset into the text
+* @param limit the index after the last character to replace
+* @param srcText the text from which new paragraphs are taken
+* @param srcStart the start of the range in <code>srcText</code> to copy
+* @param srcLimit the first index after the range in <code>srcText</code> to copy
+*/
+    public void replace(int start,
+                        int limit,
+                        MConstText srcText,
+                        int srcStart,
+                        int srcLimit,
+                        int[] damagedRange) {
+
+        final int insLength = srcLimit - srcStart;
+        if (insLength < 0) {
+            throw new Error("invalid range");
+        }
+        final int origLength = fRunArray.getCurTextLength();
+        deleteText(start, limit, damagedRange);
+
+        if (insLength == 0)
+            return;
+
+        final int oldPosEnd = fRunArray.fPosEnd;
+        AttributeMap origStyle;
+        if (limit < origLength) {
+            origStyle = (fRunArray.fPosEnd>=0)? fStyleTable[fRunArray.fPosEnd] : fFirstStyle;
+        }
+        else {
+            origStyle = srcText.paragraphStyleAt(srcLimit);
+        }
+
+        int paragraphStart = srcStart;
+        int lastPLimit = srcText.paragraphStart(srcLimit);
+        boolean separatorAtEnd = lastPLimit > srcStart && isParagraphBreak(srcText.at(lastPLimit-1));
+
+        if (limit == origLength && lastPLimit == paragraphStart) {
+            if (fRunArray.fPosEnd > 0) {
+                fStyleTable[fRunArray.fPosEnd] = origStyle;
+            }
+            else {
+                fFirstStyle = origStyle;
+            }
+        }
+        else {
+            boolean firstPass = true;
+            while (paragraphStart < lastPLimit) {
+
+                AttributeMap style = srcText.paragraphStyleAt(paragraphStart);
+                int paragraphLimit = srcText.paragraphLimit(paragraphStart);
+
+                if (fRunArray.fPosEnd+1 >= fRunArray.fNegStart)
+                    expandStyleTable();
+
+                if (fRunArray.fPosEnd >= 0) {
+                    if (!style.equals(fStyleTable[fRunArray.fPosEnd])) {
+                        fStyleTable[fRunArray.fPosEnd] = style;
+                        if (firstPass) {
+                            int pStart = fRunArray.fRunStart[fRunArray.fPosEnd]+1;
+                            damagedRange[0] = Math.min(damagedRange[0], pStart);
+                        }
+                    }
+                }
+                else if (!style.equals(fFirstStyle)) {
+                    fFirstStyle = style;
+                    damagedRange[0] = 0;
+                }
+
+                firstPass = false;
+
+                if (paragraphLimit < lastPLimit || separatorAtEnd) {
+                    fRunArray.fRunStart[++fRunArray.fPosEnd] = paragraphLimit - 1 + start - srcStart;
+                }
+                paragraphStart = paragraphLimit;
+            }
+            if (fRunArray.fPosEnd != oldPosEnd) {
+                fStyleTable[fRunArray.fPosEnd] = origStyle;
+            }
+        }
+
+        fRunArray.addToCurTextLength(insLength);
+    }
+
+/**
+* Modify the style of all paragraphs containing offsets in the range [start, limit) to
+* <tt>style</tt>.
+*/
+    public boolean modifyParagraphStyles(int start,
+                                         int limit,
+                                         StyleModifier modifier,
+                                         int[] damagedRange)  {
+
+        int run = fRunArray.findRunContaining(start-1);
+        int currentPStart;
+        if (run == -1) {
+            currentPStart = 0;
+        }
+        else {
+            currentPStart = fRunArray.getLogicalRunStart(run) + 1;
+        }
+
+        boolean modifiedAnywhere = false;
+
+        for (;;) {
+
+            boolean modified = false;
+
+            if (run < 0) {
+
+                AttributeMap newStyle = modifier.modifyStyle(fFirstStyle);
+
+                if (!newStyle.equals(fFirstStyle)) {
+                    fFirstStyle = newStyle;
+                    modified = true;
+                }
+            }
+            else {
+
+                AttributeMap newStyle = modifier.modifyStyle(fStyleTable[run]);
+
+                if (!fStyleTable[run].equals(newStyle)) {
+                    fStyleTable[run] = newStyle;
+                    modified = true;
+                }
+            }
+
+            if (run == fRunArray.fPosEnd) {
+                run = fRunArray.fNegStart;
+            }
+            else {
+                run++;
+            }
+
+            int nextPStart;
+            if (run == fRunArray.getArrayLength()) {
+                nextPStart = fRunArray.getCurTextLength();
+            }
+            else {
+                nextPStart = fRunArray.getLogicalRunStart(run) + 1;
+            }
+
+            if (modified) {
+                modifiedAnywhere = true;
+                damagedRange[0] = Math.min(damagedRange[0], currentPStart);
+                damagedRange[1] = Math.max(damagedRange[1], nextPStart);
+            }
+
+            if (limit <= nextPStart) {
+                break;
+            }
+            else {
+                currentPStart = nextPStart;
+            }
+        }
+
+        return modifiedAnywhere;
+    }
+
+    private static void dumpParagraphStarts(ParagraphBuffer st) {
+
+        System.out.println("fRunArray.fPosEnd="+st.fRunArray.fPosEnd+", fRunArray.fNegStart="+st.fRunArray.fNegStart+
+                            ", fRunArray.getArrayLength()="+st.fRunArray.getArrayLength()+", fRunArray.getCurTextLength()="+st.fRunArray.getCurTextLength());
+
+        int i;
+        System.out.print("Positives: ");
+        for (i=0; i<=st.fRunArray.fPosEnd; i++)
+            System.out.print(st.fRunArray.fRunStart[i]+" ");
+
+        System.out.print("   Negatives: ");
+        for (i=st.fRunArray.fNegStart; i<st.fRunArray.getArrayLength(); i++)
+            System.out.print(st.fRunArray.fRunStart[i]+" ");
+
+        System.out.println(" ");
+    }
+
+    private static final int kNoRun = -42; // iterator use
+
+    private final class ParagraphIterator /*implements MParagraphIterator*/
+    {
+        ParagraphIterator(int start, int limit)
+        {
+            reset(start, limit, start);
+        }
+
+        public void reset(int start, int limit, int pos)
+        {
+            fStart = start;
+            fLimit = limit;
+            setIterator(fStart, this);
+        }
+
+        public boolean isValid()
+        {
+            return fCurrentRun != kNoRun;
+        }
+
+        public void next()
+        {
+            if (fRunLimit < fLimit) {
+                fCurrentRun++;
+                setIteratorUsingRun(fCurrentRun, this);
+            }
+            else
+                set(0, 0, kNoRun, null);
+        }
+
+        public void prev()
+        {
+            if (fRunStart > fStart) {
+                fCurrentRun--;
+                setIteratorUsingRun(fCurrentRun, this);
+            }
+            else
+                set(0, 0, kNoRun, null);
+        }
+
+        public void set(int pos)
+        {
+            if (pos >= fStart && pos < fLimit) {
+                setIterator(pos, this);
+            } else {
+                set(0, 0, kNoRun, null);
+            }
+        }
+
+        // ParagraphBuffer calls back on this to set iterators
+        void set(int start, int limit, int currentRun, AttributeMap style)
+        {
+            fRunStart = start < fStart ? fStart : start;
+            fRunLimit = limit > fLimit ? fLimit : limit;
+            fCurrentRun = currentRun;
+            fStyle = style;
+        }
+
+        public void reset(int start, int limit)
+        {
+            reset(start, limit, start);
+        }
+
+        public void first()
+        {
+            set(fStart);
+        }
+
+        public void last()
+        {
+            set(fLimit - 1);
+        }
+
+        public int rangeStart()
+        {
+            return fStart;
+        }
+
+        public int rangeLimit()
+        {
+            return fLimit;
+        }
+
+        public int rangeLength()
+        {
+            return fLimit - fStart;
+        }
+
+        public int runStart()
+        {
+            return fRunStart;
+        }
+
+        public int runLimit()
+        {
+            return fRunLimit;
+        }
+
+        public int runLength()
+        {
+            return fRunLimit - fRunStart;
+        }
+
+        public AttributeMap style() {
+
+            return fStyle;
+        }
+
+        private int fStart;
+        private int fLimit;
+        private int fRunStart;
+        private int fRunLimit;
+        private int fCurrentRun;
+        private AttributeMap fStyle;
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/RunArray.java b/src/com/ibm/richtext/styledtext/RunArray.java
new file mode 100755
index 0000000..7e18f03
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/RunArray.java
@@ -0,0 +1,282 @@
+/*
+ * @(#)$RCSfile: RunArray.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:45:10 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/**
+* This class maintains intervals within a piece of text.  Interval boundaries
+* are stored in the fRunStart array.  Interval boundaries may have a
+* positive or negative representation.  A positive boundary is given as an offset
+* from 0.  A negative boundary is given as a negative offset from the ned of the text.
+* The RunArray stores positive boundaries in the entries [0, fPosEnd], and negative
+* boundaries in the entries [fNegStart, fLength).  New boundaries may be inserted into
+* the undefined middle of the RunArray.  If fPosEnd < 0, there are no positive entries.
+* If fNegStart >= fRunArray.length, there are no negative netries.  It's possible to have
+* a runarray with neither positive or negative entries.
+*
+* As an example of how the RunArray works, consider a piece of text with 5 intervals,
+* where each interval is 3 characters in length.  The RunArray for this text could
+* look like:
+*    fCurTextLength = 15, fPosEnd = 5, fNegStart = 10,
+*    fRunStart = { 0, 3, 6, 9, 12, U, U, U, U, U };
+* where U is an undefined array element.
+
+* An equivalent representation would be:
+*    fCurTextLength = 15, fPosEnd = 3, fNegStart = 8,
+*    fRunStart = { 0, 3, 6, U, U, U, U, U, -6, -3 };
+*
+* The RunArray class is used in the StyleBuffer and the ParagraphBuffer.  In the StyleBuffer,
+* the entries in fRunStart give the offsets where style runs begin.  In the
+* ParagraphBuffer, the fRunStart entries store offsets of paragraph breaks.
+*
+* This class provides methods for shifting the run table to a particular position, expanding the
+* run table, and returning the index of the run containing a particular offset in the text.  All
+* other functionality is implemented in the RunArray clients.
+*
+* RunArray uses FastIntBinarySearch for searches.  The searches are constructed on demand in
+* the findRunContaining method.  The searches are invalidated when the run array is shifted;
+* however, the RunArray can be modified by other classes.  Thus, if another class modifies
+* the entries in fRunArray, or modifies fPosEnd or fNegStart, it is responsible for
+* calling runStartsChanged.
+*/
+
+package com.ibm.richtext.styledtext;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+final class RunArray implements Externalizable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final long serialVersionUID = 22356934;
+
+    int[] fRunStart;
+    private int fCurTextLength;
+    int fPosEnd, fNegStart;
+    
+    transient private FastIntBinarySearch fPosSearch;
+    transient private boolean fPosSearchValid;
+    transient private FastIntBinarySearch fNegSearch;
+    transient private boolean fNegSearchValid;
+
+    private static final int CURRENT_VERSION = 1;
+
+    RunArray(int initialSize, int curTextLength) {
+
+        fRunStart = new int[initialSize];
+        fCurTextLength = curTextLength;
+        fPosEnd = -1;
+        fNegStart = initialSize;
+        
+        fPosSearch = new FastIntBinarySearch(fRunStart, 0, 1);
+        fNegSearch = new FastIntBinarySearch(fRunStart, 0, 1);
+        fPosSearchValid = fNegSearchValid = false;
+    }
+
+    /**
+     * Note: this constructor is ONLY for use by the Serialization
+     * mechanism.  It does not leave this object in a valid state!
+     */
+    public RunArray() {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        out.writeInt(CURRENT_VERSION);
+        out.writeObject(fRunStart);
+        out.writeInt(fCurTextLength);
+        out.writeInt(fPosEnd);
+        out.writeInt(fNegStart);
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+        if (in.readInt() != CURRENT_VERSION) {
+            throw new IOException("Invalid version of RunArray");
+        }
+        fRunStart = (int[]) in.readObject();
+        fCurTextLength = in.readInt();
+        fPosEnd = in.readInt();
+        fNegStart = in.readInt();
+        
+        fPosSearch = new FastIntBinarySearch(fRunStart, 0, 1);
+        fNegSearch = new FastIntBinarySearch(fRunStart, 0, 1);
+        fPosSearchValid = fNegSearchValid = false;
+    }
+
+    public int getCurTextLength() {
+
+        return fCurTextLength;
+    }
+
+    public void setCurTextLength(int curTextLength) {
+
+        fCurTextLength = curTextLength;
+    }
+
+    public void addToCurTextLength(int delta) {
+
+        fCurTextLength += delta;
+    }
+
+    public void runStartsChanged() {
+
+        fPosSearchValid = fNegSearchValid = false;
+    }
+
+/**
+* Returns the index of the last valid run.
+*/
+    int lastRun() {
+
+        return (fNegStart == fRunStart.length)? fPosEnd : fRunStart.length-1;
+    }
+
+/**
+* Returns the length of the run array.  Replaces old fLength member.
+*/
+    int getArrayLength() {
+
+        return fRunStart.length;
+    }
+
+/**
+* Shifts style table such that the last positive run
+* starts before pos.
+*/
+    void shiftTableTo(int pos) {
+
+        int oldPosEnd = fPosEnd;
+
+        while (fPosEnd >= 0 && fRunStart[fPosEnd] >= pos) {
+
+            fNegStart--;
+            fRunStart[fNegStart] = fRunStart[fPosEnd] - fCurTextLength;
+            fPosEnd--;
+
+        }
+
+        pos -= fCurTextLength;
+
+        while (fNegStart<fRunStart.length && fRunStart[fNegStart] < pos) {
+
+            fPosEnd++;
+            fRunStart[fPosEnd] = fRunStart[fNegStart] + fCurTextLength;
+            fNegStart++;
+        }
+
+        if (oldPosEnd != fPosEnd) {
+            fPosSearchValid = fNegSearchValid = false;
+        }
+    }
+
+/**
+* Returns index of style run containing pos.  If first style run starts before
+* pos, -1 is returned.  If pos is greater than text length, lastrun is returned.
+*/
+    int findRunContaining(int pos) {
+
+        FastIntBinarySearch search;
+        final int length = fRunStart.length;
+
+        if (fNegStart < length && (pos-fCurTextLength >= fRunStart[fNegStart])) {
+
+            pos -= fCurTextLength;
+
+            if (!fNegSearchValid) {
+                fNegSearch.setData(fRunStart, fNegStart, length-fNegStart);
+            }
+            search = fNegSearch;
+        }
+        else if (fPosEnd >= 0) {
+
+            if (!fPosSearchValid) {
+                fPosSearch.setData(fRunStart, 0, fPosEnd+1);
+            }
+            search = fPosSearch;
+        }
+        else
+            return -1;
+
+        int run = search.findIndex(pos);
+
+        return run;
+    }
+
+    int getLogicalRunStart(int run) {
+
+        if (run == -1) {
+            return 0;
+        }
+        else if (run == fRunStart.length) {
+            return fCurTextLength;
+        }
+        else {
+            if (run <= fPosEnd) {
+                return fRunStart[run];
+            }
+            else if (run >= fNegStart) {
+                return fRunStart[run] + fCurTextLength;
+            }
+            else {
+                throw new IllegalArgumentException("Illegal run");
+            }
+        }
+    }
+
+/**
+* Increases size of run table.  Current implementation doubles the run table's size.
+*/
+    void expandRunTable() {
+
+        resizeRunTable(fRunStart.length * 2);
+    }
+
+/**
+* Return the minimum number of elements possible in fRunStart.
+*/
+    private int getMinSize() {
+
+        return Math.max(fPosEnd + (fRunStart.length-fNegStart) + 1, 1);
+    }
+
+    void compress() {
+
+        int minSize = getMinSize();
+        if (fRunStart.length > minSize) {
+            resizeRunTable(minSize);
+        }
+    }
+
+    private void resizeRunTable(int newSize) {
+
+        if (newSize < getMinSize()) {
+            throw new IllegalArgumentException("Attempt to make RunArray too small.");
+        }
+
+        final int oldLength = fRunStart.length;
+
+        int newRunStart[] = new int[newSize];
+        System.arraycopy(fRunStart, 0, newRunStart, 0, fPosEnd+1);
+        int newNegStart = newRunStart.length - (oldLength-fNegStart);
+        System.arraycopy(fRunStart, fNegStart, newRunStart, newNegStart, (oldLength-fNegStart));
+
+        fNegStart = newNegStart;
+        fRunStart = newRunStart;
+
+        fPosSearchValid = fNegSearchValid = false;
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/StandardTabRuler.java b/src/com/ibm/richtext/styledtext/StandardTabRuler.java
new file mode 100755
index 0000000..e0b583f
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/StandardTabRuler.java
@@ -0,0 +1,374 @@
+/*
+ * @(#)$RCSfile: StandardTabRuler.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:45:10 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import java.util.Vector;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+/**
+ * This class is a standard implementation of MTabRuler.
+ * It can have a finite number of client-specified TabStops.  After
+ * the client-specified TabStops, all TabStops have type
+ * <code>TabStop.kAuto</code> and are at the autospace intervals.
+ * @see TabStop
+ */
+public final class StandardTabRuler extends MTabRuler
+                                    implements Externalizable
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int CURRENT_VERSION = 1;
+    private static final long serialVersionUID = 22356934;
+
+    private static final TabStop AUTO_ZERO = new TabStop(0, TabStop.kAuto);
+
+    private TabStop[] fTabs = null;
+    private int fAutoSpacing = 36; // every 1/2 inch.
+
+    /**
+     * Create a StandardTabRuler with only auto tabs, with spacing of 36.
+     */
+    public StandardTabRuler()
+    {
+    }
+
+    /**
+     * Create a StandardTabRuler with only auto tabs, with the
+     * given autoSpacing.
+     * @param autoSpacing the autoSpacing for this tab ruler
+     */
+    public StandardTabRuler(int autoSpacing)
+    {
+        fAutoSpacing = autoSpacing;
+    }
+
+    /**
+     * Create a StandardTabRuler.  The first TabStops on the ruler will be
+     * the TabStops in the <code>tabs</code> array.  After these tabs all
+     * tabs are auto tabs.
+     * @param tabs an array of TabStops.  The TabStops in the array must
+     *    be in strictly increasing order (of positions), and cannot have
+     *    type <code>TabStop.kAuto</code>.
+     * @param autoSpacing the autoSpacing interval to use after the last
+     *    client-specified tab.
+     */
+    public StandardTabRuler(TabStop[] tabs, int autoSpacing)
+    {
+        if (tabs.length > 0) {
+            validateTabArray(tabs);
+            fTabs = (TabStop[]) tabs.clone();
+        }
+        else {
+            fTabs = null;
+        }
+        fAutoSpacing = autoSpacing;
+    }
+
+    /** Tabs as provided, then autoSpacing after the last tab to eternity.  Use this constructor when
+        munging a ruler, it does no validation on the tabs in the vector. Vector may not be null. */
+
+    /*public*/ StandardTabRuler(Vector v, int autoSpacing)
+    {
+        fTabs = tabArrayFromVector(v);
+        fAutoSpacing = autoSpacing;
+    }
+
+    /** Construct from another ruler. No validation. Ruler may not be null. */
+
+    /*public*/ StandardTabRuler(MTabRuler ruler)
+    {
+        if (ruler == null) {
+            throw new IllegalArgumentException("ruler may not be null");
+        }
+
+        fTabs = tabArrayFromVector(vectorFromTabRuler(ruler));
+        fAutoSpacing = ruler.autoSpacing();
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+        int version = in.readInt();
+        if (version != CURRENT_VERSION) {
+            throw new IOException("Invalid version of StyledText: " + version);
+        }
+        fTabs = (TabStop[]) in.readObject();
+        fAutoSpacing = in.readInt();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        out.writeInt(CURRENT_VERSION);
+        out.writeObject(fTabs);
+        out.writeInt(fAutoSpacing);
+    }
+
+    /**
+     * Return first tab in the ruler.  If an autoTab, it is at position zero, and
+     * all subsequent tabs will be autotabs at autoSpacing intervals.
+     */
+    public TabStop firstTab()
+    {
+        if (fTabs != null && fTabs.length > 0) {
+            return fTabs[0];
+        }
+
+        return AUTO_ZERO;
+    }
+
+    /**
+     * Return the first tab in the ruler with fPosition > position.  If it is an
+     * autotab, it is at an increment of autoSpacing, and all subsequent tabs will be
+     * autotabs at autoSpacing intervals.
+     * @param position the position of the TabStop returned will be greater than this parameter
+     */
+    public TabStop nextTab(int position)
+    {
+        if (fTabs != null) {
+            for (int i = 0; i < fTabs.length; ++i) {
+                if (position < fTabs[i].getPosition())
+                    return fTabs[i];
+            }
+        }
+
+        if (position >= 4000) { // debug: sanity check
+            System.out.println("auto tab past 4000");
+        }
+
+        return new TabStop(((position / fAutoSpacing) + 1) * fAutoSpacing, TabStop.kAuto);
+    }
+
+    /**
+     * Return the interval for autotabs.
+     */
+    public int autoSpacing()
+    {
+        return fAutoSpacing;
+    }
+
+    /**
+     * Compare this to another Object. Returns true if the object
+     * is an MTabRuler with the same autoSpacing and tabs.
+     */
+    public boolean equals(Object o)
+    {
+        if (o == this) {
+            return true;
+        }
+        else if (o == null) {
+            return false;
+        }
+        
+        MTabRuler rhs;
+        try {
+            rhs = (MTabRuler)o;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+
+        if (fAutoSpacing != rhs.autoSpacing())
+            return false;
+
+        TabStop rhsTab = rhs.firstTab();
+
+        if (fTabs != null) {
+            for (int i = 0; i < fTabs.length; ++i) {
+                if (!fTabs[i].equals(rhsTab))
+                    return false;
+
+                rhsTab = rhs.nextTab(rhsTab.getPosition());
+            }
+        }
+
+        return rhsTab.getType() == TabStop.kAuto;
+    }
+
+    /**
+     * Return debug information about this tab ruler.
+     */
+    public String toString()
+    {
+        StringBuffer buffer = new StringBuffer(super.toString());
+        buffer.append(" auto: ");
+        buffer.append(Integer.toString(fAutoSpacing));
+
+        if (fTabs != null) {
+            for (int i = 0; i < fTabs.length; ++i) {
+                buffer.append(fTabs[i].toString());
+            }
+        }
+
+        return buffer.toString();
+    }
+
+    /** Utility to convert a vector of tabs to an array. */
+
+    private static TabStop[] tabArrayFromVector(Vector v)
+    {
+        int count = v.size();
+        TabStop[] tabs = new TabStop[count];
+        for (int i = 0; i < count; ++i) {
+            tabs[i] = (TabStop)v.elementAt(i);
+        }
+
+        return tabs;
+    }
+
+    /** Utility to convert a ruler to a vector of tabs, for munging. */
+
+    private static Vector vectorFromTabRuler(MTabRuler ruler)
+    {
+        Vector v = new Vector();
+        for (TabStop tab = ruler.firstTab(); tab != null && tab.getType() != TabStop.kAuto; tab = ruler.nextTab(tab.getPosition())) {
+            v.addElement(tab);
+        }
+
+        return v;
+    }
+
+    /** Utility to validate an array of tabs.  The array must not be null, must not contain null
+        entries, must not be kAuto, and positions must in increasing order. */
+
+    private static void validateTabArray(TabStop[] tabs)
+    {
+        int pos = Integer.MIN_VALUE;
+        for (int i = 0; i < tabs.length; ++i) {
+            if (tabs[i].getType() == TabStop.kAuto) {
+                throw new IllegalArgumentException("can't explicitly specify an auto tab.");
+            }
+            int nextpos = tabs[i].getPosition();
+            if (nextpos <= pos) {
+                throw new IllegalArgumentException("tab positions must be in increasing order.");
+            }
+            pos = nextpos;
+        }
+    }
+
+    /**
+     * Return a tab ruler identical to the given ruler, except with the
+     * given tab added.
+     * @param ruler the original ruler.  The MTabRuler will be the same as
+     *   this except for the additional tab.  <code>ruler</code> is not modified.
+     * @param tabToAdd the tab to add to the new tab ruler
+     * @return an MTabRuler resulting from this operation
+     */
+    /*public*/ static MTabRuler addTabToRuler(MTabRuler ruler, TabStop tabToAdd)
+    {
+        if (ruler == null || tabToAdd == null)
+            throw new IllegalArgumentException("ruler and tabToAdd may not be null");
+
+        Vector vector = new Vector();
+
+        int pos = 0;
+        boolean added = false;
+        for (TabStop tab = ruler.firstTab(); tab.getType() != TabStop.kAuto; tab = ruler.nextTab(pos)) {
+            pos = tab.getPosition();
+
+            if (!added && pos >= tabToAdd.getPosition()) {
+                if (pos == tabToAdd.getPosition())
+                    tab = null;
+                vector.addElement(tabToAdd);
+                added = true;
+            }
+
+            if (tab != null)
+                vector.addElement(tab);
+        }
+        if (!added)
+            vector.addElement(tabToAdd);
+
+        return new StandardTabRuler(vector, ruler.autoSpacing());
+    }
+
+    /**
+     * Return a tab ruler identical to the given ruler, except with the
+     * given tab removed.
+     * @param ruler the original ruler.  The MTabRuler will be the same as
+     *   this except for the removed tab.  <code>ruler</code> is not modified.
+     * @param position the position of the tab to remove from the new tab ruler
+     * @return an MTabRuler resulting from this operation
+     */
+    /*public*/ static MTabRuler removeTabFromRuler(MTabRuler ruler, int position)
+    {
+        if (ruler == null)
+            throw new IllegalArgumentException("ruler may not be null");
+
+        Vector vector = new Vector();
+
+        int pos = 0;
+        boolean removed = false;
+        for (TabStop tab = ruler.firstTab(); tab.getType() != TabStop.kAuto; tab = ruler.nextTab(pos)) {
+            pos = tab.getPosition();
+
+            if (!removed && pos >= position) {
+                if (pos == position) {
+                    removed = true;
+                    continue; // skip this tab and continue with the remainder
+                }
+                break; // we didn't remove a tab, but skipped position, so don't bother with the rest
+            }
+
+            vector.addElement(tab);
+        }
+        if (!removed) // no change
+            return ruler;
+
+        if (vector.size() == 0)
+            return new StandardTabRuler(ruler.autoSpacing());
+
+        return new StandardTabRuler(vector, ruler.autoSpacing());
+    }
+
+    /**
+     * Return a tab ruler identical to the given ruler, except with the
+     * tab at position <code>fromPosition</code> moved to position
+     * <code>toPosition</code>.
+     * @param ruler the original ruler.  The MTabRuler will be the same as
+     *   this except for the moved tab.  <code>ruler</code> is not modified.
+     * @param fromPosition the position of the tab to move
+     * @param toPosition the new position of the tab
+     * @return an MTabRuler resulting from this operation
+     */
+    /*public*/ static MTabRuler moveTabOnRuler(MTabRuler ruler, int fromPosition, int toPosition)
+    {
+        if (ruler == null)
+            throw new IllegalArgumentException("ruler may not be null");
+
+        Vector vector = new Vector();
+
+        int pos = 0;
+        boolean moved = false;
+        for (TabStop tab = ruler.firstTab(); tab.getType() != TabStop.kAuto; tab = ruler.nextTab(pos)) {
+            pos = tab.getPosition();
+
+            if (!moved && pos == fromPosition) {
+                moved = true;
+                tab = new TabStop(toPosition, tab.getType()); // copy it
+            }
+
+            vector.addElement(tab);
+        }
+        if (!moved) // no change
+            return ruler;
+
+        return new StandardTabRuler(vector, ruler.autoSpacing());
+    }
+
+}
diff --git a/src/com/ibm/richtext/styledtext/StyleBuffer.java b/src/com/ibm/richtext/styledtext/StyleBuffer.java
new file mode 100755
index 0000000..a62abe4
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/StyleBuffer.java
@@ -0,0 +1,671 @@
+/*
+ * @(#)$RCSfile: StyleBuffer.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:36 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/*
+    8/2/96
+        Added setIteratorUsingRun method
+
+    8/5/96
+        No longer has to be constructed with an MText.
+
+    8/8/96
+        Added replace method, which reads styles from a StyleRunIterator.
+        Also, added a constructor which takes a StyleRunIterator.
+        These methods are for copy/paste support.
+    8/16/96
+        StyleBuffer now takes MConstText instead of MText where possible.
+
+    10/23/96
+        Some old commented-out code removed for aesthetic reasons.
+
+    7/31/98 Switched to AttributeMap
+*/
+
+/**
+* StyleBuffer implements <tt>MStyleBuffer</tt>.  It maintains
+* <tt>AttributeMap</tt> objects to apply to the text in an <tt>MText</tt> object,
+* and the
+* intervals on which those styles apply.
+* <p>
+* StyleBuffer stores the intervals on which styles apply in a <tt>RunArray</tt>
+* object (see <tt>RunArray</tt> for more information).  The styles are stored in
+* an array of <tt>AttributeMap</tt> objects.
+* <p>
+* <tt>RunArray</tt> maintains an array of integers which represent offsets into text.
+* The array has a "positive" region in which offsets are given as positive distances
+* from the start of the text, and a "negative" region in which offsets are given as
+* negative distances from the end of the text.  Between the positive and negative regions
+* is a gap, into which new offsets may be inserted.  This storage scheme allows for
+* efficient response to a series of editing operations which occur in the same area of the
+* text.
+* <p>
+* StyleBuffer uses the offsets in <tt>RunArray</tt> as the boundaries of style runs.
+* A style run begins at each offset in <tt>RunArray</tt>, and each style run continues to
+* the next offset.  The style array is kept in sync with the array of offsets in <tt>RunArray</tt>;
+* that is, the style which begins at RunArray[i] is stored in StyleArray[i].
+* <p>
+* The first entry in the <tt>RunArray</tt> is always 0.
+*
+* @author John Raley
+*
+* @see AttributeMap
+* @see MText
+* @see RunArray
+*/
+
+final class StyleBuffer extends MStyleBuffer implements Externalizable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+    * Creates a new style buffer with length equal to the length of <tt>text</tt>,
+    * and with a single run of <tt>defaultStyle</tt>.
+    */
+    private static final long serialVersionUID = 22356934;
+
+    private static final int CURRENT_VERSION = 1;
+    private static final int kInitialSize = 10;
+    private RunArray fRunArray;
+
+    private AttributeMap fStyleTable[];
+
+    StyleBuffer(MConstText text, AttributeMap initialStyle) {
+
+        this(text.length(), initialStyle);
+    }
+
+    /**
+    * Creates a new style buffer with length <tt>initialLength</tt> and with a
+    * single run of <tt>defaultStyle</tt>.
+    */
+
+    StyleBuffer(int initialLength, AttributeMap initialStyle) {
+
+        fRunArray = new RunArray(kInitialSize, initialLength);
+        fRunArray.fPosEnd = 0;
+        fRunArray.fRunStart[0] = 0;
+
+        fStyleTable = new AttributeMap[kInitialSize]; // do I really want to do this???
+
+        fStyleTable[0] = initialStyle;
+    }
+
+    /**
+     * Note: this constructor is ONLY for use by the Serialization
+     * mechanism.  It does not leave this object in a valid state!
+     */
+    public StyleBuffer() {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        compress();
+        out.writeInt(CURRENT_VERSION);
+        out.writeObject(fRunArray);
+        out.writeObject(fStyleTable);
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                                ClassNotFoundException {
+
+        if (in.readInt() != CURRENT_VERSION) {
+            throw new IOException("Invalid version of StyleBuffer");
+        }
+        fRunArray = (RunArray) in.readObject();
+        fStyleTable = (AttributeMap[]) in.readObject();
+    }
+
+/**
+* Shift style and run tables such that the last positive run begins before the given position.
+* Since there is always a run start at 0, this method ensures that the first run will not be shifted.
+* This is called by: <tt>insertText</tt> and <tt>deleteText</tt>.
+* @param pos a position in the text.
+*/
+
+    private void shiftTableTo(int pos) {
+
+        if (pos == 0)
+            pos = 1;
+
+        int oldNegStart = fRunArray.fNegStart;
+        int oldPosEnd = fRunArray.fPosEnd;
+
+        fRunArray.shiftTableTo(pos);
+
+        if (oldPosEnd > fRunArray.fPosEnd)
+            System.arraycopy(fStyleTable, fRunArray.fPosEnd+1,
+                             fStyleTable, fRunArray.fNegStart,
+                             oldPosEnd-fRunArray.fPosEnd);
+        else if (oldNegStart < fRunArray.fNegStart)
+            System.arraycopy(fStyleTable, oldNegStart,
+                             fStyleTable, oldPosEnd+1,
+                             fRunArray.fNegStart-oldNegStart);
+    }
+
+/**
+* Update the style table to reflect a change in the RunArray's size.
+*/
+    private void handleArrayResize(int oldNegStart) {
+
+        AttributeMap newStyleTable[] = new AttributeMap[fRunArray.getArrayLength()];
+        System.arraycopy(fStyleTable, 0, newStyleTable, 0, fRunArray.fPosEnd+1);
+        System.arraycopy(fStyleTable, oldNegStart, newStyleTable, fRunArray.fNegStart, (fRunArray.getArrayLength()-fRunArray.fNegStart));
+        fStyleTable = newStyleTable;
+    }
+
+/**
+* Minimize the amount of storage used by this object.
+*/
+    void compress() {
+
+        int oldNegStart = fRunArray.fNegStart;
+        fRunArray.compress();
+        if (fRunArray.fNegStart != oldNegStart) {
+            handleArrayResize(oldNegStart);
+        }
+    }
+
+/**
+* Increase the storage capacity of the style and run tables if no room remains.
+*/
+    private void expandStyleTableIfFull() {
+
+        if (fRunArray.fPosEnd + 1 == fRunArray.fNegStart) {
+
+            int oldNegStart = fRunArray.fNegStart;
+            fRunArray.expandRunTable();
+            handleArrayResize(oldNegStart);
+        }
+    }
+
+/*
+    public MStyleRunIterator createStyleRunIterator(int start, int limit) {
+
+        return new StyleRunIterator(start, limit);
+    }
+*/
+/**
+* Respond to an insertion in the text.  The length of the last style run which
+* begins before <tt>start</tt> is increased by <tt>length</tt>.  The run table
+* is shifted such that the run into which text was inserted is the last positive run.
+* This implementation assumes that all styles propogate.
+* @param start the offset where the insertion began
+* @param length the number of characters inserted
+*/
+    public void insertText(int start, int limit) {
+
+        shiftTableTo(start);
+        fRunArray.addToCurTextLength(limit - start);
+    }
+
+/**
+* Respond to a deletion in the text.  The last style run before
+* <tt>start</tt> is truncated to end at <tt>start</tt>.  The
+* style run containing (<tt>start</tt>+<tt>length</tt>) is set to begin
+* at (<tt>start</tt>+<tt>length</tt>).  Runs in between are deleted.
+* If the deletion occurs entirely within one style run, the length of the style
+* run is reduced by <tt>length</tt>.
+* This implementation assumes that all styles propogate.
+* This method shifts the run table such that the run in which the delete began
+* is the last positive run.  Other methods depend on this "side effect".
+* @param start the offset where the deletion began
+* @param length the offset where the deletion stopped
+*/
+    public void deleteText(int start, int limit) {
+
+        int length = limit - start;
+
+        // An optimization - if a whole run wasn't deleted we don't
+        // need to check for run merging, which could be expensive.
+        boolean wholeRunDeleted = false;
+
+        shiftTableTo(start);
+
+        int firstRunLimit = fRunArray.getCurTextLength();
+        if (fRunArray.fNegStart < fRunArray.getArrayLength())
+            firstRunLimit += fRunArray.fRunStart[fRunArray.fNegStart];
+
+        if (limit == fRunArray.getCurTextLength()) {
+            fRunArray.fNegStart = fRunArray.getArrayLength();
+        }
+        else if (limit >= firstRunLimit) {
+
+            int end = fRunArray.findRunContaining(limit);
+            if (end != fRunArray.fPosEnd) {
+                fRunArray.fRunStart[end] = limit - fRunArray.getCurTextLength();
+                fRunArray.fNegStart = end;
+                wholeRunDeleted = true;
+            }
+        }
+
+        if (fRunArray.fNegStart != fRunArray.getArrayLength()) {
+            if (start == 0 && limit >= firstRunLimit) {
+                // the first style run was deleted;  move first "negative" run into
+                // first position
+                fStyleTable[0] = fStyleTable[fRunArray.fNegStart++];
+            }
+            else if (wholeRunDeleted) {
+                if (fStyleTable[fRunArray.fNegStart].equals(fStyleTable[fRunArray.fPosEnd])) {
+                    // merge style runs
+                    fRunArray.fNegStart++;
+                }
+            }
+        }
+
+        fRunArray.addToCurTextLength(-length);
+
+        fRunArray.runStartsChanged();
+        //System.out.println("In deleteText:  number of style runs = " + numRuns(this));
+    }
+
+/**
+* Arrange style table so that old styles in the provided range are removed, and
+* new styles can be inserted into the insertion gap.
+* After calling this method, new style starts and styles may be placed
+* in the insertion gaps of fRunArray.fStyleStart and fStyleTable.
+* @param start offset in the text where insertion operation begins
+* @param limit offset in the text where previous styles resume
+*/
+    private void prepareStyleInsert(int start) {
+
+        if (start == 0) {
+
+            // fRunArray.fPosEnd should be 0 if we're in this branch.
+
+            if (fRunArray.getCurTextLength() > 0) {
+
+                /* Move first existing style run to negative end of buffer.
+                   Don't do this if length==0;  that is, if there is no real
+                   style run at 0.
+                 */
+
+                fRunArray.fNegStart--;
+                fStyleTable[fRunArray.fNegStart] = fStyleTable[0];
+                fRunArray.fRunStart[fRunArray.fNegStart] = -fRunArray.getCurTextLength();
+            }
+
+            fRunArray.fPosEnd = -1;
+        }
+        else {
+
+            // consistency check: start should be in current gap
+            if (fRunArray.fRunStart[fRunArray.fPosEnd] >= start) {
+                throw new Error("Inconsistent state!  Start should be within insertion gap.");
+            }
+
+            int endOfInsertionGap = fRunArray.getCurTextLength();
+            if (fRunArray.fNegStart < fRunArray.getArrayLength()) {
+                endOfInsertionGap += fRunArray.fRunStart[fRunArray.fNegStart];
+            }
+
+            if (endOfInsertionGap < start) {
+                throw new Error("Inconsistent state!  Start should be within insertion gap.");
+            }
+
+            // if no break at start (on negative end of buffer) make one
+
+            if (endOfInsertionGap != start) {
+
+                // split style run in insertion gap
+
+                expandStyleTableIfFull();
+
+                fRunArray.fNegStart--;
+                fStyleTable[fRunArray.fNegStart] = fStyleTable[fRunArray.fPosEnd];
+                fRunArray.fRunStart[fRunArray.fNegStart] = start - fRunArray.getCurTextLength();
+
+                //System.out.println("splitting run.");
+            }
+        }
+    }
+
+    public boolean modifyStyles(int start,
+                                int limit,
+                                StyleModifier modifier,
+                                int[] damagedRange) {
+
+        if (limit == start) {
+            return false;
+        }
+
+        shiftTableTo(start);
+
+        int currentRunStart = start;
+        AttributeMap oldStyle;
+        AttributeMap mergeStyle = fStyleTable[fRunArray.fPosEnd];
+
+        if (fRunArray.fNegStart < fRunArray.getArrayLength() &&
+                fRunArray.fRunStart[fRunArray.fNegStart]+fRunArray.getCurTextLength() == start) {
+
+            oldStyle = fStyleTable[fRunArray.fNegStart];
+            ++fRunArray.fNegStart;
+        }
+        else {
+            oldStyle = mergeStyle;
+        }
+
+        boolean modifiedAnywhere = false;
+        for(;;) {
+
+            boolean modified = false;
+
+            // push new style into gap on positive side
+            AttributeMap newStyle = modifier.modifyStyle(oldStyle);
+            if (damagedRange != null && !newStyle.equals(oldStyle)) {
+                modified = modifiedAnywhere = true;
+                damagedRange[0] = Math.min(currentRunStart, damagedRange[0]);
+            }
+
+            if (!newStyle.equals(mergeStyle)) {
+
+                if (currentRunStart != 0) {
+                    expandStyleTableIfFull();
+                    ++fRunArray.fPosEnd;
+                }
+
+                fStyleTable[fRunArray.fPosEnd] = newStyle;
+                fRunArray.fRunStart[fRunArray.fPosEnd] = currentRunStart;
+            }
+
+            mergeStyle = newStyle;
+
+            int nextRunStart = fRunArray.getLogicalRunStart(fRunArray.fNegStart);
+
+            if (limit > nextRunStart) {
+                oldStyle = fStyleTable[fRunArray.fNegStart];
+                currentRunStart = nextRunStart;
+                if (modified) {
+                    damagedRange[1] = Math.max(currentRunStart, damagedRange[1]);
+                }
+                ++fRunArray.fNegStart;
+            }
+            else {
+                if (limit < nextRunStart && !oldStyle.equals(mergeStyle)) {
+                    expandStyleTableIfFull();
+                    ++fRunArray.fPosEnd;
+                    fStyleTable[fRunArray.fPosEnd] = oldStyle;
+                    fRunArray.fRunStart[fRunArray.fPosEnd] = limit;
+                }
+                if (modified) {
+                    damagedRange[1] = Math.max(limit, damagedRange[1]);
+                }
+                break;
+            }
+        }
+
+        // merge last run if needed
+        if ((fRunArray.fNegStart < fRunArray.getArrayLength()) &&
+                    (fStyleTable[fRunArray.fNegStart].equals(fStyleTable[fRunArray.fPosEnd]))) {
+            fRunArray.fNegStart++;
+        }
+
+        fRunArray.runStartsChanged();
+
+        return modifiedAnywhere;
+    }
+
+    public int styleStart(int pos) {
+
+        if (pos == fRunArray.getCurTextLength()) {
+            return pos;
+        }
+
+        return fRunArray.getLogicalRunStart(fRunArray.findRunContaining(pos));
+    }
+
+    public int styleLimit(int pos) {
+
+        if (pos == fRunArray.getCurTextLength()) {
+            return pos;
+        }
+
+        int run = fRunArray.findRunContaining(pos);
+
+        if (run == fRunArray.fPosEnd) {
+            run = fRunArray.fNegStart;
+        }
+        else {
+            ++run;
+        }
+
+        return fRunArray.getLogicalRunStart(run);
+    }
+
+/**
+* Return style at location <tt>pos</tt>.
+* @param pos an offset into the text
+* @returns the style of the character at <tt>offset</tt>
+*/
+    public AttributeMap styleAt(int pos) {
+
+        return fStyleTable[ fRunArray.findRunContaining(pos) ];
+    }
+
+/*
+* Set run start, run length, and run value in an iterator.  This method is
+* only called by a <tt>StyleRunIterator</tt>.
+* @param pos an offset into the text.  The iterator's run start and run limit are
+* set to the run containing <tt>pos</tt>.
+* @param iter the iterator to set
+*/
+    void setIterator(int pos, StyleRunIterator iter) {
+
+        if ((pos < 0) || (pos > fRunArray.getCurTextLength())) {
+
+            iter.set(null, 0, 0, kNoRun);
+            return;
+        }
+
+        int run = fRunArray.findRunContaining(pos);
+
+        setIteratorUsingRun(run, iter);
+    }
+
+/**
+* Set run start, run length, and run value in an iterator.  This method is
+* only called by a <tt>StyleRunIterator</tt>.
+* @param run the index of the run to which the iterator should be set
+* @param iter the iterator to set
+*/
+    private void setIteratorUsingRun(int run, StyleRunIterator iter) {
+
+        int lastValidRun = fRunArray.lastRun();
+
+        if (run < 0 || run > lastValidRun) {
+
+            iter.set(null, 0, 0, kNoRun);
+            return;
+        }
+
+        if (run == fRunArray.fPosEnd+1)
+            run = fRunArray.fNegStart;
+        else if (run == fRunArray.fNegStart-1)
+            run = fRunArray.fPosEnd;
+
+        int runStart = fRunArray.fRunStart[run];
+        if (runStart < 0)
+            runStart += fRunArray.getCurTextLength();
+
+        AttributeMap style = fStyleTable[run];
+
+        int nextRun;
+
+        if (run == fRunArray.fPosEnd)
+            nextRun = fRunArray.fNegStart;
+        else
+            nextRun = run + 1;
+
+        int runLimit;
+
+        if (nextRun >= fRunArray.getArrayLength())
+            runLimit = fRunArray.getCurTextLength();
+        else {
+            runLimit = fRunArray.fRunStart[nextRun];
+            if (runLimit < 0)
+                runLimit += fRunArray.getCurTextLength();
+        }
+
+        //System.out.println("setIterator: pos="+pos+", runStart="+runStart+", runLimit="+runLimit+
+        //                  ", run="+run+", fPosEnd="+fPosEnd);
+
+        iter.set(style, runStart, runLimit, run);
+    }
+
+    public void replace(int start, int limit, MConstText srcText, int srcStart, int srcLimit)
+    {
+        deleteText(start, limit);
+        if (srcStart == srcLimit)
+            return;
+        prepareStyleInsert(start);
+        for (int j2 = srcStart; j2 < srcLimit; j2 = srcText.characterStyleLimit(j2))
+        {
+            AttributeMap attributeMap = srcText.characterStyleAt(j2);
+            if (fRunArray.fPosEnd < 0 || !fStyleTable[fRunArray.fPosEnd].equals(attributeMap))
+            {
+                expandStyleTableIfFull();
+                fRunArray.fPosEnd++;
+                fRunArray.fRunStart[fRunArray.fPosEnd] = j2 - srcStart + start;
+                fStyleTable[fRunArray.fPosEnd] = attributeMap;
+            }
+        }
+        fRunArray.addToCurTextLength(srcLimit - srcStart);
+        if (fRunArray.fNegStart < fRunArray.getArrayLength() && fStyleTable[fRunArray.fNegStart].equals(fStyleTable[fRunArray.fPosEnd]))
+            fRunArray.fNegStart++;
+    }
+
+    private  static final int kNoRun = -42; // iterator use
+
+    private final class StyleRunIterator /*implements MStyleRunIterator*/ {
+
+        StyleRunIterator(int start, int limit)
+        {
+            reset(start, limit, start);
+        }
+
+        public void reset(int start, int limit, int pos)
+        {
+            fStart = start;
+            fLimit = limit;
+            setIterator(fStart, this);
+        }
+
+        public boolean isValid()
+        {
+            return fStyle != null;
+        }
+
+        public void next()
+        {
+            if (fRunLimit < fLimit) {
+                fCurrentRun++;
+                setIteratorUsingRun(fCurrentRun, this);
+            }
+            else
+                set(null, 0, 0, kNoRun);
+        }
+
+        public void prev()
+        {
+            if (fRunStart > fStart) {
+                fCurrentRun--;
+                setIteratorUsingRun(fCurrentRun, this);
+            }
+            else
+                set(null, 0, 0, kNoRun);
+        }
+
+        public void set(int pos)
+        {
+            if (pos >= fStart && pos < fLimit) {
+                setIterator(pos, this);
+            } else {
+                set(null, 0, 0, kNoRun);
+            }
+        }
+
+        void set(AttributeMap style, int start, int limit, int currentRun)
+        {
+            fStyle = style;
+            fCurrentRun = currentRun;
+            fRunStart = start < fStart ? fStart : start;
+            fRunLimit = limit > fLimit ? fLimit : limit;
+        }
+
+        public void reset(int start, int limit)
+        {
+            reset(start, limit, start);
+        }
+
+        public void first()
+        {
+            set(fStart);
+        }
+
+        public void last()
+        {
+            set(fLimit - 1);
+        }
+
+        public int rangeStart()
+        {
+            return fStart;
+        }
+
+        public int rangeLimit()
+        {
+            return fLimit;
+        }
+
+        public int rangeLength()
+        {
+            return fLimit - fStart;
+        }
+
+        public AttributeMap style()
+        {
+            return fStyle;
+        }
+
+        public int runStart()
+        {
+            return fRunStart;
+        }
+
+        public int runLimit()
+        {
+            return fRunLimit;
+        }
+
+        public int runLength()
+        {
+            return fRunLimit - fRunStart;
+        }
+
+        private int fStart;
+        private int fLimit;
+        private AttributeMap fStyle;
+        private int fRunStart;
+        private int fRunLimit;
+        private int fCurrentRun;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/styledtext/StyleModifier.java b/src/com/ibm/richtext/styledtext/StyleModifier.java
new file mode 100755
index 0000000..e7fba8a
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/StyleModifier.java
@@ -0,0 +1,192 @@
+/*
+ * @(#)$RCSfile: StyleModifier.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:36 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+
+/**
+ * StyleModifier is the base class for operations on AttributeMap.  To implement
+ * an operation on AttributeMap, subclass StyleModifier and override
+ * <code>modifyStyle</code>.  StyleModifiers are used by MText.
+ * <p>
+ * For convenience, this class contains factory methods which will create a
+ * StyleModifier for
+ * certain common operations: attribute union, attribute removal, and AttributeMap
+ * replacement.
+ * @see AttributeMap
+ * @see AttributeSet
+ * @see MText
+ */
+/*
+ * {jbr} StyleModifier is not the best name for this class - styles are immutable and never
+ * really modified.
+ */
+public class StyleModifier
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Create a StyleModifier.
+     */
+    protected StyleModifier() {
+    }
+
+    /**
+     * Return the result of this StyleModifier's operation on the given style.
+     * Default implementation just returns the given style.
+     * @param style the AttributeMap to perform the operation on
+     */
+    public AttributeMap modifyStyle(AttributeMap style)
+    {
+        return style;
+    }
+
+    /**
+     * A StyleModifier which simply returns the given style.
+     */
+    public static final StyleModifier IDENTITY = new StyleModifier();
+
+    /**
+     * Create a StyleModifier whose operation is
+     * <code>style.addAttributes(s)</code>,
+     * where <code>style</code> is the AttributeMap passed to
+     * <code>modifyStyle</code>.
+     * @param s the AttributeMap to union with
+     * @return a StyleModifier for this operation
+     */
+    public static StyleModifier createAddModifier(AttributeMap s) {
+
+        return new StyleAddModifier(s);
+    }
+
+    /**
+     * Create a StyleModifier whose operation is
+     * <code>style.addAttribute(key, value)</code>,
+     * where <code>style</code> is the AttributeMap passed to
+     * <code>modifyStyle</code>.
+     * @param key the key to add
+     * @param value the value to add
+     * @return a StyleModifier for this operation
+     */
+    public static StyleModifier createAddModifier(Object key,
+                                                  Object value) {
+
+        return new AttributeAddModifier(key, value);
+    }
+
+    /**
+     * Create a StyleModifier whose operation returns <code>s</code>,
+     * ignoring the parameter to <code>modifyStyle</code>.
+     * @param s the AttributeMap which will replace any other AttributeMap
+     * @return a StyleModifier for this operation
+     */
+    public static StyleModifier createReplaceModifier(AttributeMap s) {
+
+        return new StyleReplaceModifier(s);
+    }
+
+    /**
+     * Create a StyleModifier whose operation is
+     * <code>style.removeAttributes(s)</code>,
+     * where <code>style</code> is the AttributeMap passed to
+     * <code>modifyStyle</code>.
+     * @param s the AttributeSet of attributes to remove
+     * @return a StyleModifier for this operation
+     */
+    public static StyleModifier createRemoveModifier(AttributeSet s) {
+
+        return new StyleRemoveModifier(s);
+    }
+
+    static final class AttributeAddModifier extends StyleModifier {
+
+        private Object fKey;
+        private Object fValue;
+
+        public AttributeAddModifier(Object key, Object value) {
+
+            fKey = key;
+            fValue = value;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap style) {
+
+            return style.addAttribute(fKey, fValue);
+        }
+    }
+
+    /**
+     * Create this with the styles to add.  These styles will add to and override any already
+     * present in the style passed to modifyStyle.
+     */
+    static final class StyleAddModifier extends StyleModifier
+    {
+        private AttributeMap fStyle;
+
+        public StyleAddModifier(AttributeMap style)
+        {
+            if (style == null) {
+                throw new IllegalArgumentException("style is null");
+            }
+            fStyle = style;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap style)
+        {
+            return style.addAttributes(fStyle);
+        }
+    }
+
+    /**
+     * Create this with the styles to replace.  All style runs will have only these
+     * styles.
+     */
+    static final class StyleReplaceModifier extends StyleModifier
+    {
+        private AttributeMap fStyle;
+
+        public StyleReplaceModifier(AttributeMap style)
+        {
+            if (style == null) {
+                throw new IllegalArgumentException("style is null");
+            }
+            fStyle = style;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap style)
+        {
+            return fStyle;
+        }
+    }
+
+    static final class StyleRemoveModifier extends StyleModifier {
+
+        private AttributeSet fRemoveSet;
+
+        public StyleRemoveModifier(AttributeSet removeSet) {
+
+            if (removeSet == null) {
+                throw new IllegalArgumentException("set is null");
+            }
+            fRemoveSet = removeSet;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap style) {
+
+            return style.removeAttributes(fRemoveSet);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/StyledText.java b/src/com/ibm/richtext/styledtext/StyledText.java
new file mode 100755
index 0000000..070f468
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/StyledText.java
@@ -0,0 +1,686 @@
+/*
+ * @(#)$RCSfile: StyledText.java,v $ $Revision: 1.3 $ $Date: 2002/03/20 05:11:17 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+import java.text.CharacterIterator;
+
+/**
+ * This class is an implementation of MText, a modifyable, styled text
+ * storage model.  Additionally, it supports persistance through the
+ * Externalizable interface.
+ * @see MText
+ */
+
+/*
+    10/28/96 {jf} - split the character and paragraph style access and setter function around...
+            just to keep things interesting.
+    8/7/96 {jf} - moved paragraph break implementation from AbstractText into Style text.
+            - added countStyles, getStyles, and ReplaceStyles implementation.
+
+    8/14/96 sfb  eliminated StyleSheetIterator
+
+    8/29/96 {jbr} changed iter-based replace method - doesn't call at() unless it is safe to do so
+            Also, added checkStartAndLimit for debugging
+
+    7/31/98 Switched from Style to AttributeMap
+
+*/
+
+public final class StyledText extends MText implements Externalizable
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int CURRENT_VERSION = 1;
+    private static final long serialVersionUID = 22356934;
+
+    /* unicode storage */
+    private MCharBuffer         fCharBuffer;
+    /* character style storage */
+    private MStyleBuffer        fStyleBuffer;
+    /* paragraph style storage */
+    private MParagraphBuffer    fParagraphBuffer;
+
+    private transient int fTimeStamp = 0;
+    private transient int[] fDamagedRange = { Integer.MAX_VALUE,
+                                              Integer.MIN_VALUE };
+
+    private static class ForceModifier extends StyleModifier {
+
+        private AttributeMap fStyle = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+
+        void setStyle(AttributeMap style) {
+
+            fStyle = style;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap style) {
+
+            return fStyle;
+        }
+    }
+
+    // Keep this around foruse in replaceCharStylesWith.  OK since
+    // this class isn't threadsafe anyway.
+    private transient ForceModifier forceModifier = null;
+
+    //======================================================
+    // CONSTRUCTORS
+    //======================================================
+    /**
+     * Create an empty text object.
+     */
+    public StyledText()
+    {
+        this(0);
+    }
+
+    /**
+     * Create an empty text object ready to hold at least capacity chars.
+     * @param capacity the minimum capacity of the internal text buffer
+     */
+    public StyledText(int capacity)
+    {
+        fCharBuffer         = capacity>0? new CharBuffer(capacity) : new CharBuffer();
+        fStyleBuffer        = new StyleBuffer(this, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        fParagraphBuffer    = new ParagraphBuffer(fCharBuffer);
+    }
+
+    /**
+     * Create a text object with the characters in the string,
+     * in the given style.
+     * @param string the initial contents
+     * @param initialStyle the style of the initial text
+     */
+    public StyledText(String string, AttributeMap initialStyle)
+    {
+        fCharBuffer = new CharBuffer(string.length());
+        fCharBuffer.replace(0, 0, string, 0, string.length());
+
+        fStyleBuffer = new StyleBuffer(this, initialStyle);
+        fParagraphBuffer = new ParagraphBuffer(fCharBuffer);
+    }
+
+    /**
+     * Create a text object from the given source.
+     * @param source the text to copy
+     */
+    public StyledText(MConstText source) {
+        this();
+        append(source);
+    }
+    
+    /**
+     * Create a text object from a subrange of the given source.
+     * @param source the text to copy from
+     * @param srcStart the index of the first character to copy
+     * @param srcLimit the index after the last character to copy
+     */
+    public StyledText(MConstText source, int srcStart, int srcLimit) {
+        this();
+        replace(0, 0, source, srcStart, srcLimit);
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        out.writeInt(CURRENT_VERSION);
+        out.writeObject(fCharBuffer);
+        out.writeObject(fStyleBuffer);
+        out.writeObject(fParagraphBuffer);
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+        int version = in.readInt();
+        if (version != CURRENT_VERSION) {
+            throw new IOException("Invalid version of StyledText: " + version);
+        }
+        fCharBuffer = (MCharBuffer) in.readObject();
+        fStyleBuffer = (MStyleBuffer) in.readObject();
+        fParagraphBuffer = (MParagraphBuffer) in.readObject();
+
+        resetDamagedRange();
+    }
+
+    //======================================================
+    // MConstText INTERFACES
+    //======================================================
+
+    //--------------------------------------------------------
+    // character access
+    //--------------------------------------------------------
+/**
+* Return the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the character at offset <code>pos</code>
+*/
+    public char at(int pos)
+    {
+        return fCharBuffer.at(pos);
+    }
+
+/**
+* Copy the characters in the range [<code>start</code>, <code>limit</code>)
+* into the array <code>dst</code>, beginning at <code>dstStart</code>.
+* @param start offset of first character which will be copied into the array
+* @param limit offset immediately after the last character which will be copied into the array
+* @param dst array in which to copy characters.  The length of <code>dst</code> must be at least
+* (<code>dstStart + limit - start</code>).
+*/
+    public void extractChars(int start, int limit, char[] dst, int dstStart)
+    {
+        fCharBuffer.at(start, limit, dst, dstStart);
+    }
+
+    //-------------------------------------------------------
+    // text model creation
+    //-------------------------------------------------------
+/**
+* Create an MConstText containing the characters and styles in the range
+* [<code>start</code>, <code>limit</code>).
+* @param start offset of first character in the new text
+* @param limit offset immediately after the last character in the new text
+* @return an MConstText object containing the characters and styles in the given range
+*/
+    public MConstText extract(int start, int limit)
+    {
+        return extractWritable(start, limit);
+    }
+
+/**
+* Create an MText containing the characters and styles in the range
+* [<code>start</code>, <code>limit</code>).
+* @param start offset of first character in the new text
+* @param limit offset immediately after the last character in the new text
+* @return an MConstText object containing the characters and styles in the given range
+*/
+    public MText extractWritable(int start, int limit)
+    {
+        MText text = new StyledText();
+        text.replace(0, 0, this, start, limit);
+        text.resetDamagedRange();
+        return text;
+    }
+
+    //--------------------------------------------------------
+    // size/capacity
+    //--------------------------------------------------------
+/**
+* Return the length of the MConstText object.  The length is the number of characters in the text.
+* @return the length of the MConstText object
+*/
+    public int length()
+    {
+        return fCharBuffer.length();
+    }
+
+/**
+* Create a <code>CharacterIterator</code> over the range [<code>start</code>, <code>limit</code>).
+* @param start the beginning of the iterator's range
+* @param limit the limit of the iterator's range
+* @return a valid <code>CharacterIterator</code> over the specified range
+* @see java.text.CharacterIterator
+*/
+    public CharacterIterator createCharacterIterator(int start, int limit)
+    {
+        return fCharBuffer.createCharacterIterator(start, limit);
+    }
+
+    //--------------------------------------------------------
+    // character styles
+    //--------------------------------------------------------
+
+/**
+* Return the index of the first character in the character style run
+* containing pos.  All characters in a style run have the same character
+* style.
+* @return the style at offset <code>pos</code>
+*/
+    public int characterStyleStart(int pos) {
+
+        checkPos(pos, LESS_THAN_LENGTH);
+        return fStyleBuffer.styleStart(pos);
+    }
+
+/**
+* Return the index after the last character in the character style run
+* containing pos.  All characters in a style run have the same character
+* style.
+* @return the style at offset <code>pos</code>
+*/
+    public int characterStyleLimit(int pos) {
+
+        checkPos(pos, NOT_GREATER_THAN_LENGTH);
+        return fStyleBuffer.styleLimit(pos);
+    }
+
+/**
+* Return the style applied to the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the style at offset <code>pos</code>
+*/
+    public AttributeMap characterStyleAt(int pos)
+    {
+        checkPos(pos, NOT_GREATER_THAN_LENGTH);
+        return fStyleBuffer.styleAt(pos);
+    }
+
+    //--------------------------------------------------------
+    // paragraph boundaries and styles
+    //--------------------------------------------------------
+/**
+* Return the start of the paragraph containing the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the start of the paragraph containing the character at offset <code>pos</code>
+*/
+    public int paragraphStart(int pos)
+    {
+        checkPos(pos, NOT_GREATER_THAN_LENGTH);
+        return fParagraphBuffer.paragraphStart(pos);
+    }
+
+/**
+* Return the limit of the paragraph containing the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the limit of the paragraph containing the character at offset <code>pos</code>
+*/
+    public int paragraphLimit(int pos)
+    {
+        checkPos(pos, NOT_GREATER_THAN_LENGTH);
+        return fParagraphBuffer.paragraphLimit(pos);
+    }
+
+/**
+* Return the paragraph style applied to the paragraph containing offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the paragraph style in effect at <code>pos</code>
+*/
+    public AttributeMap paragraphStyleAt(int pos)
+    {
+        checkPos(pos, NOT_GREATER_THAN_LENGTH);
+        return fParagraphBuffer.paragraphStyleAt(pos);
+    }
+
+/**
+* Return the current time stamp.  The time stamp is
+* incremented whenever the contents of the MConstText changes.
+* @return the current paragraph style time stamp
+*/
+    public int getTimeStamp() {
+
+        return fTimeStamp;
+    }
+
+    //======================================================
+    // MText INTERFACES
+    //======================================================
+    //--------------------------------------------------------
+    // character modfication functions
+    //--------------------------------------------------------
+
+    private void updateDamagedRange(int deleteStart,
+                                    int deleteLimit,
+                                    int insertLength) {
+
+        fDamagedRange[0] = Math.min(fDamagedRange[0], deleteStart);
+
+        if (fDamagedRange[1] >= deleteLimit) {
+            int lengthChange = insertLength - (deleteLimit-deleteStart);
+            fDamagedRange[1] += lengthChange;
+        }
+        else {
+            fDamagedRange[1] = deleteStart + insertLength;
+        }
+    }
+
+/**
+* Replace the characters and styles in the range [<code>start</code>, <code>limit</code>) with the characters
+* and styles in <code>srcText</code> in the range [<code>srcStart</code>, <code>srcLimit</code>).  <code>srcText</code> is not
+* modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character and style at
+* <code>limit</code> is not modified.
+* @param srcText the source for the new characters and styles
+* @param srcStart the offset into <code>srcText</code> where new characters and styles will be obtained
+* @param srcLimit the offset into <code>srcText</code> where the new characters and styles end
+*/
+    public void replace(int start, int limit, MConstText text, int srcStart, int srcLimit)
+    {
+        if (text == this) {
+            text = new StyledText(text);
+        }
+
+        if (start == limit && srcStart == srcLimit) {
+            return;
+        }
+
+        checkStartLimit(start, limit);
+
+        updateDamagedRange(start, limit, srcLimit-srcStart);
+
+        fCharBuffer.replace(start, limit, text, srcStart, srcLimit);
+        fStyleBuffer.replace(start, limit, text, srcStart, srcLimit);
+        fParagraphBuffer.replace(start, limit, text, srcStart, srcLimit, fDamagedRange);
+        fTimeStamp += 1;
+    }
+
+/**
+* Replace the characters and styles in the range [<code>start</code>, <code>limit</code>) with the characters
+* and styles in <code>srcText</code>.  <code>srcText</code> is not
+* modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character and style at
+* <code>limit</code> is not modified.
+* @param srcText the source for the new characters and styles
+*/
+    public void replace(int start, int limit, MConstText text) {
+
+        replace(start, limit, text, 0, text.length());
+    }
+
+/**
+* Replace the characters in the range [<code>start</code>, <code>limit</code>) with the characters
+* in <code>srcChars</code> in the range [<code>srcStart</code>, <code>srcLimit</code>).  New characters take on the style
+* <code>charsStyle</code>.
+* <code>srcChars</code> is not modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character at
+* <code>limit</code> is not modified.
+* @param srcChars the source for the new characters
+* @param srcStart the offset into <code>srcChars</code> where new characters will be obtained
+* @param srcLimit the offset into <code>srcChars</code> where the new characters end
+* @param charsStyle the style of the new characters
+*/
+    public void replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit, AttributeMap charsStyle)
+    {
+        checkStartLimit(start, limit);
+
+        if (start == limit && srcStart == srcLimit) {
+            return;
+        }
+
+        updateDamagedRange(start, limit, srcLimit-srcStart);
+
+        fCharBuffer.replace(start, limit, srcChars, srcStart, srcLimit);
+
+        replaceCharStylesWith(start, limit, start + (srcLimit-srcStart), charsStyle);
+
+        fParagraphBuffer.deleteText(start, limit, fDamagedRange);
+        fParagraphBuffer.insertText(start, srcChars, srcStart, srcLimit);
+
+        fTimeStamp += 1;
+    }
+
+    private void replaceCharStylesWith(int start, int oldLimit, int newLimit, AttributeMap style) {
+
+        if (start < oldLimit) {
+            fStyleBuffer.deleteText(start, oldLimit);
+        }
+        if (start < newLimit) {
+            if (forceModifier == null) {
+                forceModifier = new ForceModifier();
+            }
+            forceModifier.setStyle(style);
+            fStyleBuffer.insertText(start, newLimit);
+            fStyleBuffer.modifyStyles(start, newLimit, forceModifier, null);
+        }
+    }
+
+/**
+* Replace the characters in the range [<code>start</code>, <code>limit</code>) with the character <code>srcChar</code>.
+* The new character takes on the style <code>charStyle</code>
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character at
+* <code>limit</code> is not modified.
+* @param srcChar the new character
+* @param charsStyle the style of the new character
+*/
+    public void replace(int start, int limit, char srcChar, AttributeMap charStyle)
+    {
+        checkStartLimit(start, limit);
+
+        updateDamagedRange(start, limit, 1);
+
+        fCharBuffer.replace(start, limit, srcChar);
+
+        replaceCharStylesWith(start, limit, start + 1, charStyle);
+
+        if (start < limit) {
+            fParagraphBuffer.deleteText(start, limit, fDamagedRange);
+        }
+
+        fParagraphBuffer.insertText(start, srcChar);
+
+        fTimeStamp += 1;
+    }
+
+/**
+* Replace the entire contents of this MText (both characters and styles) with
+* the contents of <code>srcText</code>.
+* @param srcText the source for the new characters and styles
+*/
+    public void replaceAll(MConstText srcText)
+    {
+        replace(0, length(), srcText, 0, srcText.length());
+    }
+
+/**
+* Insert the contents of <code>srcText</code> (both characters and styles) into this
+* MText at the position specified by <code>pos</code>.
+* @param pos The character offset where the new text is to be inserted.
+* @param srcText The text to insert.
+*/
+    public void insert(int pos, MConstText srcText)
+    {
+        replace(pos, pos, srcText, 0, srcText.length());
+    }
+
+/**
+* Append the contents of <code>srcText</code> (both characters and styles) to the
+* end of this MText.
+* @param srcText The text to append.
+*/
+    public void append(MConstText srcText)
+    {
+        replace(length(), length(), srcText, 0, srcText.length());
+    }
+
+/**
+* Delete the specified range of characters (and styles).
+* @param start Offset of the first character to delete.
+* @param limit Offset of the first character after the range to delete.
+*/
+    public void remove(int start, int limit)
+    {
+        replace(start, limit, (char[])null, 0, 0, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+    }
+
+/**
+* Delete all characters and styles.  Always increments time stamp.
+*/
+    public void remove()
+    {
+        // rather than going through replace(), just reinitialize the StyledText,
+        // letting the old data structures fall on the floor
+        fCharBuffer = new CharBuffer();
+        fStyleBuffer = new StyleBuffer(this, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        fParagraphBuffer = new ParagraphBuffer(fCharBuffer);
+        fTimeStamp += 1;
+        fDamagedRange[0] = fDamagedRange[1] = 0;
+    }
+
+    //--------------------------------------------------------
+    // storage management
+    //--------------------------------------------------------
+
+/**
+* Minimize the amount of memory used by the MText object.
+*/
+    public void compress() {
+
+        fCharBuffer.compress();
+        fStyleBuffer.compress();
+        fParagraphBuffer.compress();
+    }
+
+    //--------------------------------------------------------
+    // style modification
+    //--------------------------------------------------------
+
+/**
+* Set the style of all characters in the MText object to
+* <code>AttributeMap.EMPTY_ATTRIBUTE_MAP</code>.
+*/
+    public void removeCharacterStyles() {
+
+        fStyleBuffer = new StyleBuffer(this, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        fTimeStamp += 1;
+        fDamagedRange[0] = 0;
+        fDamagedRange[1] = length();
+    }
+
+/**
+* Invoke the given modifier on all character styles from start to limit.
+* @param modifier the modifier to apply to the range.
+* @param start the start of the range of text to modify.
+* @param limit the limit of the range of text to modify.
+*/
+    public void modifyCharacterStyles(int start, int limit, StyleModifier modifier) {
+
+        checkStartLimit(start, limit);
+        boolean modified = fStyleBuffer.modifyStyles(start,
+                                                     limit,
+                                                     modifier,
+                                                     fDamagedRange);
+        if (modified) {
+            fTimeStamp += 1;
+        }
+    }
+
+/**
+* Invoke the given modifier on all paragraph styles in paragraphs
+* containing characters in the range [start, limit).
+* @param modifier the modifier to apply to the range.
+* @param start the start of the range of text to modify.
+* @param limit the limit of the range of text to modify.
+*/
+    public void modifyParagraphStyles(int start, int limit, StyleModifier modifier) {
+
+        checkStartLimit(start, limit);
+        boolean modified = fParagraphBuffer.modifyParagraphStyles(start,
+                                                                  limit,
+                                                                  modifier,
+                                                                  fDamagedRange);
+        if (modified) {
+            fTimeStamp += 1;
+        }
+    }
+
+/**
+* Reset the damaged range to an empty interval, and begin accumulating the damaged
+* range.  The damaged range includes every index where a character, character style,
+* or paragraph style has changed.
+* @see #damagedRangeStart
+* @see #damagedRangeLimit
+*/
+    public void resetDamagedRange() {
+
+        fDamagedRange[0] = Integer.MAX_VALUE;
+        fDamagedRange[1] = Integer.MIN_VALUE;
+    }
+
+/**
+* Return the start of the damaged range.
+* If the start is
+* <code>Integer.MAX_VALUE</code> and the limit is
+* <code>Integer.MIN_VALUE</code>, then the damaged range
+* is empty.
+* @return the start of the damaged range
+* @see #damagedRangeLimit
+* @see #resetDamagedRange
+*/
+    public int damagedRangeStart() {
+
+        return fDamagedRange[0];
+    }
+
+/**
+* Return the limit of the damaged range.
+* If the start is
+* <code>Integer.MAX_VALUE</code> and the limit is
+* <code>Integer.MIN_VALUE</code>, then the damaged range
+* is empty.
+* @return the limit of the damaged range
+* @see #damagedRangeStart
+* @see #resetDamagedRange
+*/
+    public int damagedRangeLimit() {
+
+        return fDamagedRange[1];
+    }
+
+    public String toString()
+    {
+        String result ="";
+        for (int i = 0; i < length(); i++) {
+            result += at(i);
+        }
+        return result;
+    }
+
+    //======================================================
+    // IMPLEMENTATION
+    //======================================================
+
+    /* check a range to see if it is well formed and within the bounds of the text */
+    private void checkStartLimit(int start, int limit)
+    {
+        if (start > limit) {
+            //System.out.println("Start is less than limit. start:"+start+"; limit:"+limit);
+            throw new IllegalArgumentException("Start is greater than limit. start:"+start+"; limit:"+limit);
+        }
+
+        if (start < 0) {
+            //System.out.println("Start is negative. start:"+start);
+            throw new IllegalArgumentException("Start is negative. start:"+start);
+        }
+
+        if (limit > length()) {
+            //System.out.println("Limit is greater than length.  limit:"+limit);
+            throw new IllegalArgumentException("Limit is greater than length.  limit:"+limit);
+        }
+    }
+
+    private static final boolean LESS_THAN_LENGTH = false;
+    private static final boolean NOT_GREATER_THAN_LENGTH = true;
+
+    private void checkPos(int pos, boolean endAllowed) {
+
+        int lastValidPos = length();
+        if (endAllowed == LESS_THAN_LENGTH) {
+            --lastValidPos;
+        }
+
+        if (pos < 0 || pos > lastValidPos) {
+            throw new IllegalArgumentException("Position is out of range.");
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/TabStop.java b/src/com/ibm/richtext/styledtext/TabStop.java
new file mode 100755
index 0000000..b57889c
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/TabStop.java
@@ -0,0 +1,185 @@
+/*
+ * @(#)$RCSfile: TabStop.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:45:10 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+/**
+ * TabStop represents a position on a tab ruler.  Each tab stop has a
+ * position, giving its location on the ruler, and one of several
+ * types.  The type determines how a segment controled by this TabStop
+ * is positioned on a line:
+ * <ul>
+ * <li><code>kLeading</code> - the leading edge of the segment is aligned to
+ *     the TabStop's position</li>
+ * <li><code>kCenter</code> - the segment is centered on this TabStop's
+ *     position</li>
+ * <li><code>kTrailing</code> - the trailing edge of the segment is aligned to
+ *     the TabStop's position</li>
+ * <li><code>kDecimal</code> - the first decimal in the segment is aligned to
+ *     the TabStop's position</li>
+ * <li><code>kAuto</code> - semantically the same as <code>kLeading</code>.
+ *     Used by tab rulers to indicate that all subsequent tab stops
+ *     will be at autospaced intervals.</li>
+ * </ul>
+ * @see MTabRuler
+ */
+public final class TabStop implements Externalizable
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int CURRENT_VERSION = 1;
+    private static final long serialVersionUID = 22356934;
+
+    private byte fType;    // left, center, right, decimal
+    private int fPosition; // tab stop position from line origin.
+
+    /**
+     * A TabStop with this type aligns its segment's leading edge
+     * to the TabStop's position.
+     */
+    public static final byte kLeading = 0;
+
+    /**
+     * A TabStop with this type aligns its segment's center
+     * to the TabStop's position.
+     */
+    public static final byte kCenter = 1;
+
+    /**
+     * A TabStop with this type aligns its segment's trailing edge
+     * to the TabStop's position.
+     */
+    public static final byte kTrailing = 2;
+
+    /**
+     * A TabStop with this type aligns its segment's first decimal
+     * to the TabStop's position.
+     */
+    public static final byte kDecimal = 3;
+
+    /**
+     * A TabStop with this type aligns its segment's leading edge
+     * to the TabStop's position.  After a TabStop of this type,
+     * all tabs are at autospace intervals.  Usually, clients will
+     * not construct TabStops with this type.
+     */
+    public static final byte kAuto = 4;
+
+    /**
+     * Create a TabStop with position 0 and type <code>kLeading</code>.
+     */
+    public TabStop() {
+
+       this(0, kLeading);
+    }
+
+    /**
+     * Create a TabStop with the given position and type.
+     * @param position the TabStop's position
+     * @param type the TabStop's type.  Must be one of constants
+     *      in this class.
+     */
+    public TabStop(int position, byte type) {
+
+        if (type < kLeading || type > kAuto) {
+            throw new IllegalArgumentException("Invalid tab type");
+        }
+
+        fPosition = position;
+        fType = type;
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+        int version = in.readInt();
+        if (version != CURRENT_VERSION) {
+            throw new IOException("Invalid version of TabStop.");
+        }
+        fPosition = in.readInt();
+        fType = in.readByte();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        out.writeInt(CURRENT_VERSION);
+        out.writeInt(fPosition);
+        out.writeByte(fType);
+    }
+
+    /**
+     * Compare this to another Object.  TabStops are equal if
+     * their position and type are the same.
+     */
+    public boolean equals(Object rhs)
+    {
+        if (rhs == null) {
+            return false;
+        }
+
+        TabStop rhsTab;
+        try {
+            rhsTab = (TabStop) rhs;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+
+        return fType == rhsTab.fType && fPosition == rhsTab.fPosition;
+    }
+
+    /**
+     * Return the hash code for this TabStop.  The hash code is
+     * <code>position << type</code>.
+     */
+    public int hashCode() {
+
+        return fPosition << fType;
+    }
+
+    public String toString()
+    {
+        char typeChar;
+        switch (fType) {
+            case kLeading: typeChar = 'L'; break;
+            case kCenter: typeChar = 'C'; break;
+            case kTrailing: typeChar = 'R'; break;
+            case kDecimal: typeChar = 'D'; break;
+            case kAuto: typeChar = 'A'; break;
+            default: typeChar = '?'; break;
+        }
+        return "TabStop[" + Integer.toString(fPosition) + typeChar + ']';
+    }
+
+    /**
+     * Return the type of this TabStop.  Will be one of the constants
+     * in this class.
+     */
+    public byte getType() {
+        return fType;
+    }
+
+    /**
+     * Return the position of this TabStop.
+     */
+    public int getPosition() {
+        return fPosition;
+    }
+}
+
diff --git a/src/com/ibm/richtext/styledtext/TestFastIntBinarySearch.java b/src/com/ibm/richtext/styledtext/TestFastIntBinarySearch.java
new file mode 100755
index 0000000..04cbf0c
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/TestFastIntBinarySearch.java
@@ -0,0 +1,60 @@
+/*
+ * @(#)$RCSfile: TestFastIntBinarySearch.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:45:10 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+final class TestFastIntBinarySearch {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) {
+
+        boolean result = new TestFastIntBinarySearch().test();
+        System.out.println(result? "PASSED" : "FAILED");
+    }
+
+    public boolean test() {
+
+        boolean result = true;
+        int[] test = {-5, -3, 0, 2, 5};
+        FastIntBinarySearch fibs = new FastIntBinarySearch(test);
+
+        for (int i=0; i < 2; i++) {
+            int beforeAny = fibs.findIndex(-6);
+            if (beforeAny != -1) {
+                result = false;
+            }
+            
+            int atEnd = fibs.findIndex(5);
+            if (atEnd != test.length-1) {
+                result = false;
+            }
+            
+            int afterAny = fibs.findIndex(6);
+            if (afterAny != test.length-1) {
+                result = false;
+            }
+            
+            int exactly = fibs.findIndex(-3);
+            if (exactly != 1) {
+                result = false;
+            }
+            
+            fibs = new FastIntBinarySearch(new int[] {20, 40});
+            fibs.setData(test);
+        }
+        
+        return result;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/styledtext/Validation.java b/src/com/ibm/richtext/styledtext/Validation.java
new file mode 100755
index 0000000..2ef7b55
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/Validation.java
@@ -0,0 +1,39 @@
+/*
+ * @(#)$RCSfile: Validation.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:45:10 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+/**
+ * Iterators use this class to keep from getting out of sync with
+ * their underlying data.  When created, the iterator gets a
+ * Validation instance.  If the underlying data changes, the Validation
+ * becomes invalid.  Usually iterators will throw exceptions if accessed
+ * after becoming invalid.
+ */
+final class Validation {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private boolean fIsValid = true;
+
+    boolean isValid() {
+
+        return fIsValid;
+    }
+
+    void invalidate() {
+
+        fIsValid = false;
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/package.html b/src/com/ibm/richtext/styledtext/package.html
new file mode 100755
index 0000000..dd580d3
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/package.html
@@ -0,0 +1,5 @@
+<html>
+<body bgcolor="white">
+Provides styled text storage and related classes.
+</body>
+</html>
diff --git a/src/com/ibm/richtext/swingdemo/SwingCodeEdit.java b/src/com/ibm/richtext/swingdemo/SwingCodeEdit.java
new file mode 100755
index 0000000..42ee495
--- /dev/null
+++ b/src/com/ibm/richtext/swingdemo/SwingCodeEdit.java
@@ -0,0 +1,48 @@
+/*
+ * @(#)$RCSfile: SwingCodeEdit.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:45:42 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingdemo;
+
+import com.ibm.richtext.demo.CodeEdit;
+import com.ibm.richtext.demo.DocumentWindow;
+import com.ibm.richtext.demo.SyntaxColorer;
+import com.ibm.richtext.demo.TextDocument;
+
+public class SwingCodeEdit extends CodeEdit {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    public static void main(String[] args) {
+    
+        new SwingCodeEdit(args, 0);
+    }
+    
+    public SwingCodeEdit(String[] args, int start) {
+    
+        super(args, start);
+    }
+    
+    protected DocumentWindow createDocumentWindow(TextDocument document) {
+
+        return new SwingDocumentWindow(this, 
+                                       document,
+                                       fSettings,
+                                       false,
+                                       new SyntaxColorer(),
+                                       false,
+                                       true,
+                                       menus);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/swingdemo/SwingDocumentWindow.java b/src/com/ibm/richtext/swingdemo/SwingDocumentWindow.java
new file mode 100755
index 0000000..693f6e7
--- /dev/null
+++ b/src/com/ibm/richtext/swingdemo/SwingDocumentWindow.java
@@ -0,0 +1,280 @@
+/*
+ * @(#)$RCSfile: SwingDocumentWindow.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:37 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingdemo;
+
+import com.ibm.richtext.textpanel.JTextPanel;
+import com.ibm.richtext.textpanel.TextPanelListener;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.swingui.JTabRuler;
+import com.ibm.richtext.swingui.SwingMenuBuilder;
+
+import com.ibm.richtext.print.PrintingUtils;
+
+import com.ibm.richtext.demo.AwtDocumentWindow;
+import com.ibm.richtext.demo.DocumentWindow;
+import com.ibm.richtext.demo.EditApplication;
+import com.ibm.richtext.demo.EditorResources;
+import com.ibm.richtext.demo.ResourceUtils;
+import com.ibm.richtext.demo.TextDocument;
+
+import java.awt.BorderLayout;
+import java.awt.FileDialog;
+import java.awt.Frame;
+
+import javax.swing.JFrame;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JOptionPane;
+import javax.swing.WindowConstants;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import java.io.File;
+
+import java.text.MessageFormat;
+
+/**
+ * AwtDocumentWindow is a Frame containing a TextPanel, with a document
+ * for storing the text in the TextPanel.
+ */
+final class SwingDocumentWindow extends JFrame implements DocumentWindow {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private JTextPanel fTextPanel;
+    private EditApplication fApplication;
+    private TextDocument fDocument;
+
+    /**
+     * Create a new AwtDocumentWindow.
+     * @param application the application that owns this document
+     * @param clipboard the clipboard to use
+     * @param document the document to show in this AwtDocumentWindow
+     */
+    SwingDocumentWindow(EditApplication application,
+                        TextDocument document,
+                        TextPanelSettings textPanelSettings,
+                        boolean useTabRuler,
+                        TextPanelListener listener,
+                        boolean supportStyledText,
+                        boolean supportPlainText,
+                        int[] menus) {
+
+        fApplication = application;
+        setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
+        
+        fTextPanel = new JTextPanel(textPanelSettings, null, application.getClipboard());
+        if (listener != null) {
+            fTextPanel.addListener(listener);
+        }
+        setDocument(document);
+
+        addMenuBar(supportStyledText, supportPlainText, menus);
+
+        getContentPane().setLayout(new BorderLayout());
+
+        if (useTabRuler) {
+            JTabRuler tabRuler = new JTabRuler(14, 10, fTextPanel);
+            getContentPane().add(tabRuler, "North");
+        }
+        
+        getContentPane().add(fTextPanel, "Center");
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                doClose();
+            }
+        });
+    }
+
+    private void addMenuBar(boolean supportStyledText, 
+                            boolean supportPlainText,
+                            int[] menus) {
+        
+        JMenuBar menuBar = new JMenuBar();
+        String menuTitle = ResourceUtils.getString(EditorResources.FILE);
+        JMenu menu = new JMenu(menuTitle);
+        new SwingFileMenuManager(menu, fApplication, this,
+                                 supportStyledText, supportPlainText);
+        menuBar.add(menu);
+
+        SwingMenuBuilder.getInstance().createMenus(menuBar, fTextPanel, this, menus);
+        setJMenuBar(menuBar);
+    }
+    
+    /**
+     * Return true if it is OK to set the document text and file to
+     * something different.
+     */
+    private boolean canChangeDocuments() {
+
+        // If the text is modified, give the user a chance to
+        // save it.  Otherwise return true.
+
+        if (fDocument.isModified()) {
+            int save = askSave();
+            if (save == JOptionPane.YES_OPTION) {
+                return doSave();
+            }
+            else {
+                return save == JOptionPane.NO_OPTION;
+            }
+        }
+        else {
+            return true;
+        }
+    }
+
+    private void setDocument(TextDocument document) {
+
+        fDocument = document;
+        fDocument.setTextPanel(fTextPanel);
+        setTitle(fDocument.getTitle());
+    }
+
+    /**
+     * Set the document to empty text with no associated file.  If
+     * the document text is not saved, prompt the user to save the
+     * the text first.  If this operation is canceled, the document
+     * is unchanged.
+     */
+    public void doNew() {
+
+        if (!canChangeDocuments()) {
+            return;
+        }
+        
+        setDocument(fApplication.createNewDocument());
+    }
+
+    /**
+     * Prompt the user for a file from which to load a text document.
+     * If the current text is not saved, first prompt the user to
+     * save.  If either operation is canceled or fails, the document
+     * is unchanged.
+     */
+    public void doOpen() {
+
+        if (!canChangeDocuments()) {
+            return;
+        }
+
+        TextDocument document = fApplication.openDocument(this);
+
+        if (document != null) {
+            setDocument(document);
+        }
+    }
+
+    /**
+     * Prompt the user for a file in which to save the document text.
+     * If this operation is not canceled, save the text in the file.
+     * The file becomes this document's file.
+     */
+    public boolean doSaveAs(int format) {
+
+        String title = ResourceUtils.getString(EditorResources.SAVE_TITLE);
+        File file = AwtDocumentWindow.getFileFromDialog(fDocument.getFile(), title, this, FileDialog.SAVE);
+        
+        if (file == null) {
+            return false;
+        }
+        
+        fDocument.setFile(file);
+        setTitle(fDocument.getTitle());
+
+        fDocument.setFormat(format);
+        
+        return fDocument.save();
+    }
+
+    /**
+     * Save the text in this document.  If there is no file associated
+     * with the text, this is equivalent to <code>doSaveAs</code>.
+     * This method returns true if the document was successfully saved.
+     */
+    public boolean doSave() {
+
+        if (fDocument.getFile() == null) {
+            return doSaveAs(fDocument.getFormat());
+        }
+        
+        return fDocument.save();
+    }
+
+    /**
+     * Print the contents of this window.
+     */
+    public void doPrint() {
+
+        PrintingUtils.userPrintText(fDocument.getText(),
+                                    fTextPanel.getDefaultValues(),
+                                    this,
+                                    this.getTitle());
+    }
+
+    /**
+     * Attempt to close this window.  If the text has not been saved,
+     * give the user a chance to save the text before closing the
+     * window.  If the user cancels this operation, this method returns
+     * false and the window is not closed;  otherwise this method
+     * returns true and the window is closed.
+     */
+    public boolean doClose() {
+
+        if (canChangeDocuments()) {
+            setVisible(false);
+            dispose();
+            fApplication.removeDocumentWindow(this);
+            return true;
+        }
+        else {
+            return false;
+        }
+    }
+
+    /**
+     * Display a dialog that asks whether the user wants to
+     * save a document.  The returned value will be YES_OPTION,
+     * NO_OPTION, or CANCEL_OPTION from JOptionPane.
+     */
+    private int askSave() {
+
+        String pattern = ResourceUtils.getString(EditorResources.SAVE_MSG);
+        String message = MessageFormat.format(pattern, new Object[] {getTitle()});
+        
+        String yes = ResourceUtils.getString(EditorResources.YES);
+        String no = ResourceUtils.getString(EditorResources.NO);
+        String cancel = ResourceUtils.getString(EditorResources.CANCEL);
+
+        return JOptionPane.showOptionDialog(this,
+                                            message,
+                                            "",
+                                            JOptionPane.YES_NO_CANCEL_OPTION,
+                                            JOptionPane.QUESTION_MESSAGE,
+                                            null,
+                                            new Object[]{yes,no,cancel},
+                                            yes);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/swingdemo/SwingEditDemo.java b/src/com/ibm/richtext/swingdemo/SwingEditDemo.java
new file mode 100755
index 0000000..d581127
--- /dev/null
+++ b/src/com/ibm/richtext/swingdemo/SwingEditDemo.java
@@ -0,0 +1,49 @@
+/*
+ * @(#)$RCSfile: SwingEditDemo.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:45:42 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingdemo;
+
+import com.ibm.richtext.demo.EditDemo;
+import com.ibm.richtext.demo.DocumentWindow;
+import com.ibm.richtext.demo.TextDocument;
+
+import com.ibm.richtext.textpanel.JTextPanel;
+
+public class SwingEditDemo extends EditDemo {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    public static void main(String[] args) {
+    
+        new SwingCodeEdit(args, 0);
+    }
+    
+    public SwingEditDemo(String[] args, int start) {
+    
+        super(args, start);
+    }
+    
+    protected DocumentWindow createDocumentWindow(TextDocument document) {
+
+        return new SwingDocumentWindow(this, 
+                                       document,
+                                       JTextPanel.getDefaultSettings(),
+                                       true,
+                                       null,
+                                       true,
+                                       true,
+                                       null);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/swingdemo/SwingFileMenuManager.java b/src/com/ibm/richtext/swingdemo/SwingFileMenuManager.java
new file mode 100755
index 0000000..0f24d2a
--- /dev/null
+++ b/src/com/ibm/richtext/swingdemo/SwingFileMenuManager.java
@@ -0,0 +1,65 @@
+/*
+ * @(#)$RCSfile: SwingFileMenuManager.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:45:42 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingdemo;
+
+import java.awt.Event;
+
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import javax.swing.JSeparator;
+import javax.swing.KeyStroke;
+
+import com.ibm.richtext.demo.DocumentWindow;
+import com.ibm.richtext.demo.EditApplication;
+import com.ibm.richtext.demo.FileMenuManager;
+import com.ibm.richtext.demo.MenuData;
+import com.ibm.richtext.demo.ResourceUtils;
+
+final class SwingFileMenuManager extends FileMenuManager {
+
+    private JMenu fMenu;
+    
+    public SwingFileMenuManager(JMenu menu,
+                                EditApplication application, 
+                                DocumentWindow document,
+                                boolean supportStyledFormat,
+                                boolean supportPlainFormat) {
+                          
+        super(application, document);
+        
+        fMenu = menu;
+        createItems(supportStyledFormat, supportPlainFormat);
+        fMenu = null;
+    }
+    
+    protected Object addMenuItem(String key) {
+
+        MenuData menuData = ResourceUtils.getMenuData(key);
+        JMenuItem item = new JMenuItem(menuData.getName());
+        if (menuData.hasShortcut()) {
+            KeyStroke ks = KeyStroke.getKeyStroke(menuData.getShortcutKeyCode(),
+                                                  Event.CTRL_MASK);
+            item.setAccelerator(ks);
+        }
+        item.addActionListener(this);
+        fMenu.add(item);
+        return item;
+    }
+    
+    protected void addSeparator() {
+    
+        fMenu.add(new JSeparator());
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/JMessageDialog.java b/src/com/ibm/richtext/swingui/JMessageDialog.java
new file mode 100755
index 0000000..455fd65
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/JMessageDialog.java
@@ -0,0 +1,70 @@
+/*
+ * @(#)$RCSfile: JMessageDialog.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:46:22 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.awt.Color;
+import java.awt.Container;
+import java.awt.CardLayout;
+
+import javax.swing.JFrame;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.textpanel.JTextPanel;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+
+/**
+ * MessageDialog is a simple Frame which displays a styled
+ * text message in a TextPanel.
+ * The text in the message is not selectable or editable.
+ * @see MConstText
+ * @see JTextPanel
+ */
+public final class JMessageDialog extends JFrame {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+    * Create a new MessageDialog.
+    * @param title the dialog's title
+    * @param message the text which will appear in the dialog
+    */
+    public JMessageDialog(String title, MConstText message)
+    {
+        super(title);
+
+        Container content = getContentPane();
+        content.setLayout(new CardLayout());
+        TextPanelSettings settings = JTextPanel.getDefaultSettings();
+        settings.setScrollable(false);
+        settings.setSelectable(false);
+        JTextPanel panel = new JTextPanel(settings, message, null);
+
+        panel.setBackground(Color.black);
+        content.add("Center", panel);
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                setVisible(false);
+                dispose();
+            }
+        });
+
+        setSize(450,320);
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/JNumberDialog.java b/src/com/ibm/richtext/swingui/JNumberDialog.java
new file mode 100755
index 0000000..8c20ae5
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/JNumberDialog.java
@@ -0,0 +1,162 @@
+/*
+ * @(#)$RCSfile: JNumberDialog.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:46:22 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.awt.Container;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+
+import java.text.NumberFormat;
+import java.text.ParseException;
+
+import javax.swing.JDialog;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowAdapter;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.MenuItemSet;
+import com.ibm.richtext.uiimpl.ResourceUtils;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.textpanel.MTextPanel;
+
+/**
+* Simple dialog which gets a number, and sends an appropriate command
+*/
+final class JNumberDialog extends JDialog implements ActionListener
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private MTextPanel fTextPanel;
+    private JTextField fInput = null;
+
+    private JButton fOKButton = null;
+    private JButton fCancelButton = null;
+    private boolean fCharacter;
+    private Object fKey;
+    private float fMultiplier; 
+
+    /**
+     * @param multiplier the factor by which to multiply the user's
+     *        selection before creating the attribute value.   This
+     *        is useful for subscripting.
+     */
+    JNumberDialog(Frame parent,
+                  String title,
+                  String message,
+                  MTextPanel textPanel,
+                  Object key,
+                  boolean character,
+                  float multiplier) {
+
+        super(parent, title, false);
+        fTextPanel = textPanel;
+        fKey = key;
+        fCharacter = character;
+        fMultiplier = multiplier;
+        
+        Container content = getContentPane();
+        
+        content.setLayout(new java.awt.GridLayout(2,1));
+
+        JPanel panel = new JPanel();
+        panel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 15));
+        fInput = new JTextField(5);
+
+        panel.add(new JLabel(message));
+        panel.add(fInput);
+        content.add("Center", panel);
+
+        fCancelButton = new JButton(ResourceUtils.getResourceString(FrameResources.CANCEL));
+        fOKButton = new JButton(ResourceUtils.getResourceString(FrameResources.OK));
+        JPanel p = new JPanel();
+        p.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
+        p.add(fCancelButton);
+        p.add(fOKButton);
+        content.add("South", p);
+
+        pack();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                closeWindow(false);
+            }
+        });
+        
+        fOKButton.addActionListener(this);
+        fCancelButton.addActionListener(this);
+    }
+
+    private void closeWindow(boolean sendAction) {
+
+        setVisible(false);
+
+        int num = 0;
+        if (sendAction) {
+            try {
+                String text = fInput.getText();
+                num = NumberFormat.getInstance().parse(text).intValue();
+            }
+            catch (ParseException exception) {
+                sendAction = false;
+            }
+        }
+
+        if (sendAction) {
+            sendAction(num);
+        }
+
+        dispose();
+    }
+
+    public void actionPerformed(ActionEvent e) {
+
+        Object source = e.getSource();
+
+        if (source == fOKButton) {
+            closeWindow(true);
+        }
+        else if (source == fCancelButton) {
+            closeWindow(false);
+        }
+        else {
+            throw new IllegalArgumentException("Invalid ActionEvent!");
+        }
+    }
+
+    /**
+    * Handle the user input
+    * @param the number the user typed in
+    */
+    private void sendAction(int number) {
+        float num = number * fMultiplier;
+        StyleModifier modifier = StyleModifier.createAddModifier(
+                                                fKey,
+                                                new Float(num));
+        if (fCharacter == MenuItemSet.CHARACTER) {
+            fTextPanel.modifyCharacterStyleOnSelection(modifier);
+        }
+        else {
+            fTextPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/JObjectDialog.java b/src/com/ibm/richtext/swingui/JObjectDialog.java
new file mode 100755
index 0000000..3fc5fe25
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/JObjectDialog.java
@@ -0,0 +1,280 @@
+/*
+ * @(#)$RCSfile: JObjectDialog.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:37 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.util.Hashtable;
+
+import javax.swing.Box;
+import javax.swing.BorderFactory;
+import javax.swing.BoxLayout;
+import javax.swing.JDialog;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JButton;
+import javax.swing.JList;
+import javax.swing.JLabel;
+import javax.swing.ListSelectionModel;
+
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.FlowLayout;
+import java.awt.GridLayout;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowAdapter;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.MenuItemSet;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.ResourceUtils;
+
+/**
+* Simple dialog that sets an attribute.
+*/
+final class JObjectDialog extends JDialog {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private final MTextPanel fTextPanel;
+    private final Object fKey;
+    private boolean fCharacter;
+    private Hashtable fNameToValueMap;
+    
+    private final JButton fOKButton;
+    private final JButton fCancelButton;
+    private final JList fItems;
+    
+    /**
+    * Construct a new JObjectDialog.
+    * @param parent the dialog's parent frame
+    * @param title the dialogs title
+    * @param message the message displayed next to the input box
+    */
+    JObjectDialog(Frame parent,
+                  String title, 
+                  String message, 
+                  MTextPanel textPanel,
+                  Object key,
+                  boolean character,
+                  String[] names,
+                  Object[] values) {
+                    
+        super(parent, title, false);
+
+        setupMap(names, values);
+        
+        Dimension size = new Dimension(250, 200);
+        
+        fTextPanel = textPanel;
+        fKey = key;
+        fCharacter = character;
+        
+        fItems = new JList(names);
+        fItems.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+        
+        fItems.addMouseListener(new MouseAdapter() {
+            public void mouseClicked(MouseEvent e) {
+                if (e.getClickCount() == 2) {
+                    closeWindow(true);
+                }
+            }
+        });
+        
+        JScrollPane listScroller = new JScrollPane(fItems);
+        listScroller.setPreferredSize(size);
+        listScroller.setPreferredSize(size);
+        listScroller.setAlignmentX(LEFT_ALIGNMENT);
+
+        JLabel label = new JLabel(message);
+        label.setLabelFor(fItems);
+        
+        JPanel itemPanel = new JPanel();
+        itemPanel.add(label);
+        itemPanel.add(Box.createRigidArea(new Dimension(0,5)));
+        itemPanel.add(listScroller);
+        itemPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
+        
+        itemPanel.setLayout(new BoxLayout(itemPanel, BoxLayout.Y_AXIS));
+        
+        fCancelButton = new JButton(ResourceUtils.getResourceString(FrameResources.CANCEL));
+        fOKButton = new JButton(ResourceUtils.getResourceString(FrameResources.OK));
+        
+        JPanel buttonPanel = new JPanel();
+        buttonPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
+        buttonPanel.add(fCancelButton);
+        buttonPanel.add(fOKButton);
+        
+        Container content = getContentPane();
+        content.add(itemPanel, BorderLayout.CENTER);
+        content.add(buttonPanel, BorderLayout.SOUTH);
+
+        pack();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                closeWindow(false);
+            }
+        });
+        
+        ActionListener listener = new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+            
+                Object source = e.getSource();
+                if (source == fOKButton) {
+                    closeWindow(true);
+                }
+                else if (source == fCancelButton) {
+                    closeWindow(false);
+                }
+            }
+        };
+        
+        fOKButton.addActionListener(listener);
+        fCancelButton.addActionListener(listener);
+        
+        selectStyles(values);
+    }
+    
+    private void setupMap(String[] names, Object[] values) {
+    
+        if (names.length != values.length) {
+            throw new IllegalArgumentException("Must have same number of names and values.");
+        }
+        
+        fNameToValueMap = new Hashtable(names.length);
+        
+        for (int i=0; i < names.length; i++) {
+            if (values[i] != null) {
+                fNameToValueMap.put(names[i], values[i]);
+            }
+        }
+
+    }
+
+    private void closeWindow(boolean sendAction) {
+
+        setVisible(false);
+        
+        if (sendAction && fItems.getMinSelectionIndex() != fItems.getMaxSelectionIndex()) {
+            sendAction = false;
+        }
+        
+        if (sendAction) {
+            Object value = fNameToValueMap.get(fItems.getSelectedValue());
+            sendAction(value);
+        }
+        dispose();
+    }
+
+    /**
+    * Handle the user input
+    * @param obj the value object
+    */
+    private void sendAction(Object value) {
+
+        StyleModifier modifier;
+        if (value != null) {
+            modifier = StyleModifier.createAddModifier(fKey, value);
+        }
+        else {
+            AttributeSet set = new AttributeSet(fKey);
+            modifier = StyleModifier.createRemoveModifier(set);
+        }
+
+        if (fCharacter == MenuItemSet.CHARACTER) {
+            fTextPanel.modifyCharacterStyleOnSelection(modifier);
+        }
+        else {
+            fTextPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+    
+    private void selectValue(Object value, Object[] values) {
+    
+        for (int i=0; i < values.length; i++) {
+        
+            if ((value != null && value.equals(values[i])) || (value == null && values[i] == null)) {
+                fItems.addSelectionInterval(i, i);
+                fItems.ensureIndexIsVisible(i);
+                return;
+            }
+        }
+    }
+    
+    private void selectStyles(Object[] values) {
+    
+        Object value;
+ 
+        if (fCharacter) {
+            value = fTextPanel.getCharacterStyleOverSelection(fKey);
+        }
+        else {
+            value = fTextPanel.getParagraphStyleOverSelection(fKey);
+        }
+        
+        if (value != MTextPanel.MULTIPLE_VALUES) {
+            selectValue(value, values);
+        }
+        else {
+            fOKButton.setEnabled(false);
+            
+            int selLimit = fTextPanel.getSelectionEnd();
+            MConstText text = fTextPanel.getText();
+            for (int runStart = fTextPanel.getSelectionStart(); runStart <= selLimit;
+                    runStart = fCharacter? text.characterStyleLimit(runStart) : 
+                                           text.paragraphLimit(runStart)) {
+            
+                Object runVal;
+                if (fCharacter) {
+                    runVal = text.characterStyleAt(runStart).get(fKey);
+                }
+                else {
+                    runVal = text.paragraphStyleAt(runStart).get(fKey);
+                }
+                if (runVal == null) {
+                    runVal = fTextPanel.getDefaultValues().get(fKey);
+                }
+                
+                selectValue(runVal, values);
+                if (runStart == text.length()) {
+                    break;
+                }
+            }
+        }
+        
+        fItems.addListSelectionListener(new ListSelectionListener() {
+            public void valueChanged(ListSelectionEvent e) {
+                fItems.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+                fOKButton.setEnabled(true);
+                fItems.removeListSelectionListener(this);
+            }
+        });
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/JTabRuler.java b/src/com/ibm/richtext/swingui/JTabRuler.java
new file mode 100755
index 0000000..48bc506
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/JTabRuler.java
@@ -0,0 +1,134 @@
+/*
+ * @(#)$RCSfile: JTabRuler.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:46:22 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+
+import javax.swing.JComponent;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.styledtext.MTabRuler;
+
+import com.ibm.richtext.uiimpl.TabRulerImpl;
+import com.ibm.richtext.awtui.MTabRulerComponent;
+
+/**
+ * JTabRuler is an implementation of MTabRulerComponent in a Swing component.
+ */
+public final class JTabRuler extends JComponent implements MTabRulerComponent {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private TabRulerImpl fImpl;
+    
+    /**
+     * Create a new TabRuler.
+     * @param baseline the y-coordinate of the ruler's baseline
+     * @param origin the x-coordinate in this Component where
+     *     the left margin appears
+     * @param textPanel the MTextPanel to listen to.  This TabRuler
+     *     will reflect the MTextPanel's paragraph styles, and update
+     *     the paragraph styles when manipulated.
+     */
+    public JTabRuler(int baseline, int origin, MTextPanel textPanel) {
+        
+        fImpl = new TabRulerImpl(baseline, origin, textPanel, this);
+    }
+    
+    /**
+     * Listen to the given MTextPanel and reflect its changes,
+     * and update its paragraph styles when TabRuler is
+     * manipulated.
+     * @param textPanel the MTextPanel to listen to
+     */
+    public void listenToTextPanel(MTextPanel textPanel) {
+
+        fImpl.listenToTextPanel(textPanel);
+    }
+    
+    /**
+     * Return the background color of this TabRuler.
+     * @return the background color of this TabRuler
+     */
+    public Color getBackColor() {
+
+        return fImpl.getBackColor();
+    }
+    
+    /**
+     * Set the background color of this TabRuler.
+     * @param backColor the new background color of this TabRuler
+     */
+    public void setBackColor(Color backColor) {
+
+        fImpl.setBackColor(backColor);
+    }
+    
+    /**
+     * Return the MTabRuler represented by this TabRuler.
+     * @return the MTabRuler represented by this TabRuler
+     */
+    public MTabRuler getRuler() {
+        
+        return fImpl.getRuler();
+    }
+
+    /**
+     * Return the leading margin of this TabRuler.
+     * @return the leading margin of this TabRuler
+     */
+    public int getLeadingMargin() {
+        
+        return fImpl.getLeadingMargin();
+    }
+
+    /**
+     * Return the first line indent of this TabRuler.
+     * @return the first line indent of this TabRuler
+     */
+    public int getFirstLineIndent() {
+        
+        return fImpl.getFirstLineIndent();
+    }
+
+    /**
+     * Return the trailing margin of this TabRuler.
+     * @return the trailing margin of this TabRuler
+     */
+    public final int getTrailingMargin() {
+        
+        return fImpl.getTrailingMargin();
+    }
+    
+    // The following are Component methods which need to be delegated to
+    // the implementation:
+    
+    public void paint(Graphics g) {
+        
+        fImpl.paint(g);
+    }
+    
+    public Dimension getPreferredSize() {
+        
+        return fImpl.getPreferredSize();
+    }
+
+    public Dimension getMinimumSize() {
+        
+        return fImpl.getMinimumSize();
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/JTextFrame.java b/src/com/ibm/richtext/swingui/JTextFrame.java
new file mode 100755
index 0000000..7dd4207
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/JTextFrame.java
@@ -0,0 +1,146 @@
+/*
+ * @(#)$RCSfile: JTextFrame.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:46:22 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.JTextPanel;
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.ResourceUtils;
+
+import java.awt.BorderLayout;
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.JFrame;
+import javax.swing.JMenuBar;
+import javax.swing.UIManager;
+
+import java.awt.Container;
+
+/**
+ * JTextFrame is a JFrame containing an editable JTextPanel, a set of standard
+ * menus, and a JTabRuler.  This class can be used as-is, but is
+ * primarily intended to be a simple example of how to use the other classes
+ * in this package.
+ * @see com.ibm.richtext.textpanel.JTextPanel
+ * @see SwingMenuBuilder
+ * @see JTabRuler
+ */
+public final class JTextFrame extends JFrame {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private JTextPanel fTextPanel;
+
+    /**
+     * Create a new JTextFrame with no text, no title, 
+     * and a private clipboard.
+     */
+    public JTextFrame() {
+        
+        super();
+        init(null, Toolkit.getDefaultToolkit().getSystemClipboard());
+    }
+    
+    /**
+     * Create a new JTextFrame with no text and the given title.
+     * The JTextPanel will use a private clipboard.
+     * @param title the title of this Frame
+     */
+    public JTextFrame(String title) {
+        
+        super(title);
+        init(null, Toolkit.getDefaultToolkit().getSystemClipboard());
+    }
+    
+    /**
+     * Create a new JTextFrame with the given text and title, whose
+     * TextPanel will use the given clipboard.
+     * @param text the initial text in the TextPanel.  If null the
+     *      TextPanel will initially be empty
+     * @param title the title of this Frame
+     * @param clipboard the Clipboard which the TextPanel will use.
+     *      If null the TextPanel will use a private Clipboard
+     */
+    public JTextFrame(MConstText text,
+                     String title,
+                     Clipboard clipboard) {
+
+        super(title);
+        init(text, clipboard);
+    }
+
+    private void init(MConstText text, Clipboard clipboard) {
+        
+        fTextPanel = new JTextPanel(text, clipboard);
+
+        JTabRuler tabRuler = new JTabRuler(14, 10, fTextPanel);
+
+        createMenus();
+
+        Container contentPane = getContentPane();
+        contentPane.setLayout(new BorderLayout());
+        contentPane.add(fTextPanel, "Center");
+        contentPane.add(tabRuler, "North");
+        pack();
+    }
+
+    private void createMenus() {
+
+        JMenuBar menuBar = new JMenuBar();
+
+        SwingMenuBuilder.getInstance().createMenus(menuBar, fTextPanel, this);
+        
+        setJMenuBar(menuBar);
+    }
+
+    /**
+     * Return the MTextPanel in this frame.
+     */
+    public MTextPanel getTextPanel() {
+
+        return fTextPanel;
+    }
+    
+    public static void main(String[] args) {
+        
+        String laf = UIManager.getSystemLookAndFeelClassName();
+        if (args.length == 1) {
+            if (args[0].equals("cp")) {
+                laf = UIManager.getCrossPlatformLookAndFeelClassName();
+            }
+        }
+                
+        try {
+            UIManager.setLookAndFeel(laf);
+        }
+        catch(Throwable th) {
+            th.printStackTrace();
+        }
+        JTextFrame frame = new JTextFrame();
+        frame.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
+        frame.setSize(550, 700);
+        frame.show();
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/SwingMenuBuilder.java b/src/com/ibm/richtext/swingui/SwingMenuBuilder.java
new file mode 100755
index 0000000..674d0b9
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/SwingMenuBuilder.java
@@ -0,0 +1,236 @@
+/*
+ * @(#)$RCSfile: SwingMenuBuilder.java,v $ $Revision: 1.2 $ $Date: 2001/10/30 02:42:48 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.awt.Frame;
+import java.awt.Window;
+
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+
+import com.ibm.richtext.uiimpl.*;
+import com.ibm.richtext.uiimpl.DialogItem.DialogFactory;
+
+/**
+ * SwingMenuBuilder provides a method for creating a set of Swing menus for interacting
+ * with an MTextPanel.  Future versions of this class may provide greater control
+ * over the menu contents.
+ * @see MTextPanel
+ */
+public final class SwingMenuBuilder extends MenuBuilder {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final SwingMenuBuilder INSTANCE = new SwingMenuBuilder();
+    
+    /**
+     * Id for an Edit menu.  The Edit menu has the following items:
+     * <ul>
+     * <li><b>Undo</b> - invoke undo() on the MTextPanel</li>
+     * <li><b>Redo</b> - invoke redo() on the MTextPanel</li>
+     * <li><b>Cut</b> - invoke cut() on the MTextPanel</li>
+     * <li><b>Copy</b> - invoke copy() on the MTextPanel</li>
+     * <li><b>Paste</b> - invoke paste() on the MTextPanel</li>
+     * <li><b>Clear</b> - invoke clear() on the MTextPanel</li>
+     * <li><b>Select All</b> - invoke selectAll() on the MTextPanel</li>
+     * </ul>
+     */
+    public static final int EDIT = MenuBuilder.EDIT;
+    /**
+     * Id for the point sizes menu.  The menu has items that set the size of a character
+     * in a typeface.
+     */
+    public static final int SIZE = MenuBuilder.SIZE;
+    /**
+     * Id for a Style menu.  The Style menu has the following items:
+     * <ul>
+     * <li><b>Plain</b> - remove <code>WEIGHT</code>,
+     *                    <code>POSTURE</code>,
+     *                    <code>UNDERLINE</code> and
+     *                    <code>STRIKETHROUGH</code> attributes from the
+     * current selection</li>
+     * <li><b>Bold</b> - add <code>{WEIGHT,WEIGHT_BOLD}</code> to
+     * the current selection</li>
+     * <li><b>Italic</b> - add <code>{POSTURE,POSTURE_ITALIC}</code> to
+     * the current selection</li>
+     * <li><b>Underline</b> - add <code>{UNDERLINE,UNDERLINE_ON}</code> to
+     * the current selection</li>
+     * <li><b>Strikethrough</b> - add <code>{STRIKETHROUGH,STRIKETHROUGH_ON}</code>
+     * to the current selection</li>
+     * <li><b>Font...</b> - display a dialog allowing the user to
+     * select a typeface (font family) for the current selection</li>
+     * <li><b>Forecolor...</b> - display a dialog allowing the user to
+     * select a foreground color for the current selection</li>
+     * <li><b>Backcolor...</b> - display a dialog allowing the user to
+     * select a background color for the current selection</li>
+     * </ul>
+     */
+    public static final int STYLE = MenuBuilder.STYLE;
+    /**
+     * Id for a paragraph alignment menu.  The menu has the following items:
+     * <ul>
+     * <li><b>Leading</b> - give selected paragraph(s) LEADING flush</li>
+     * <li><b>Center</b> - give selected paragraph(s) CENTER flush</li>
+     * <li><b>Trailing</b> - give selected paragraph(s) TRAILING flush</li>
+     * <li><b>Justified</b> - give selected paragraph(s) full justification</li>
+     * </ul>
+     */
+    public static final int FLUSH = MenuBuilder.FLUSH;
+    /**
+     * Id for a menu that sets the KeyRemap
+     * on an MTextPanel.  The menu has the following items:
+     * <ul>
+     * <li><b>Default</b> - set KeyRemap to identity remap</li>
+     * <li><b>Arabic</b> - set KeyRemap to Arabic transliteration</li>
+     * <li><b>Hebrew</b> - set KeyRemap to Hebrew transliteration</li>
+     * <li><b>Israel Nikud</b> - set KeyRemap to Israel Nikud</li>
+     * <li><b>Thai Ketmanee</b> - set KeyRemap to Thai Ketmanee</li>
+     * </ul>
+     */
+    public static final int KEYMAP = MenuBuilder.KEYMAP;
+    /**
+     * Id for a menu that sets
+     * the primary run direction for a paragraph.  Run direction can be left-to-right,
+     * right-to-left, or can use the default run direction from the Unicode bidi algorithm.
+     */
+    public static final int BIDI = MenuBuilder.BIDI;
+    /**
+     * Id for a menu with an <b>About</b> item.  When selected, 
+     * the item displays a Frame containing some
+     * self-promotional text.
+     */
+    public static final int ABOUT = MenuBuilder.ABOUT;
+    /**
+     * Return an instance of SwingMenuBuilder.
+     */
+     
+    public static SwingMenuBuilder getInstance() {
+        
+        return INSTANCE;
+    }
+    
+    private JMenuBar fMenuBar;
+    
+    private SwingMenuBuilder() {
+    }
+    
+    /**
+     * Add a standard set of menus to the given menu bar.  The menus 
+     * will interact with the given MTextPanel.
+     * @param menuBar the MenuBar to which menus are added
+     * @param textPanel the MTextPanel with which the menus interact
+     * @param frame a Frame to use as the parent of any dialogs created by a 
+     *   a menu item.  If null, menu items which create dialogs will be omitted.
+     */
+    public void createMenus(JMenuBar menuBar, 
+                            MTextPanel textPanel,
+                            Frame frame) {
+
+        createMenus(menuBar, textPanel, frame, defaultMenus);
+    }
+    
+    /**
+     * Add a set of menus to the given menu bar.  The menus 
+     * will interact with the given MTextPanel.
+     * @param menuBar the MenuBar to which menus are added
+     * @param textPanel the MTextPanel with which the menus interact
+     * @param frame a Frame to use as the parent of any dialogs created by a 
+     *   a menu item.  If null, menu items which create dialogs will be omitted.
+     * @param menus an array of integer menu id's.  Each element of the
+     *   array must be one of this class's menu id constants.  If null,
+     *   the default menus are created.
+     */
+    public void createMenus(JMenuBar menuBar,
+                            MTextPanel textPanel,
+                            Frame frame,
+                            int[] menus) {
+        
+        if (menus == null) {
+            menus = defaultMenus;
+        }
+        
+        synchronized (MItem.LOCK) {
+            
+            fMenuBar = menuBar;
+            doCreateMenus(textPanel, frame, menus);
+            fMenuBar = null;
+        }
+    }
+    
+    protected void handleAddMenu(String key) {
+        
+        JMenu menu = new JMenu(ResourceUtils.getResourceString(key));
+        fMenuBar.add(menu);
+        MItem.setItemFactory(new SwingMenuFactory(menu));
+    }
+
+    protected DialogFactory createObjectDialogFactory(final String dialogTitle,
+                                                      final String dialogMessage,
+                                                      final Object key,
+                                                      final boolean character,
+                                                      final String[] names,
+                                                      final Object[] values) {
+        
+        final Frame dialogParent = fDialogParent;
+
+        return new DialogFactory() {    
+            public Window createDialog(MTextPanel textPanel) {
+                return new JObjectDialog(dialogParent,
+                                        dialogTitle,
+                                        dialogMessage,
+                                        textPanel,
+                                        key,
+                                        character,
+                                        names,
+                                        values);
+            }
+        };
+    }
+    
+    protected DialogFactory createNumberDialogFactory(final String dialogTitle,
+                                                      final String dialogMessage,
+                                                      final Object key,
+                                                      final boolean character) {
+        
+        final Frame dialogParent = fDialogParent;
+        // variable not used final MTextPanel textPanel = fTextPanel;
+            
+        return new DialogFactory() {
+            public Window createDialog(MTextPanel fTextPanel) {
+                return new JNumberDialog(dialogParent,
+                                         dialogTitle,
+                                         dialogMessage,
+                                         fTextPanel,
+                                         key,
+                                         character,
+                                         1);
+            }
+        };
+    }    
+    
+    protected DialogFactory createAboutDialogFactory() {
+        
+        return new DialogFactory() {
+            public Window createDialog(MTextPanel textPanel) {
+                String title = ResourceUtils.getResourceString(FrameResources.ABOUT_TITLE);
+                return new JMessageDialog(title, AboutText.getAboutText());
+            }
+        };
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/swingui/SwingMenuFactory.java b/src/com/ibm/richtext/swingui/SwingMenuFactory.java
new file mode 100755
index 0000000..0c19ae4
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/SwingMenuFactory.java
@@ -0,0 +1,108 @@
+/*
+ * @(#)$RCSfile: SwingMenuFactory.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:46:22 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.awt.Event;
+
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import javax.swing.JSeparator;
+import javax.swing.KeyStroke;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import com.ibm.richtext.uiimpl.resources.MenuData;
+import com.ibm.richtext.uiimpl.EventListener;
+import com.ibm.richtext.uiimpl.MItem;
+import com.ibm.richtext.uiimpl.MItem.ItemFactory;
+
+final class SwingMenuFactory implements ItemFactory {
+        
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private final class SwingMItem extends MItem {
+        
+        private JMenuItem fItem;
+        
+        SwingMItem(JMenuItem item) {
+            
+            fItem = item;
+            item.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    handleSelected();
+                }
+            });
+        }
+        
+        protected void handleSelected() {
+            
+            super.handleSelected();
+        }
+        
+        public final void setEnabled(boolean enabled) {
+            
+            fItem.setEnabled(enabled);
+        }
+        
+        public void setState(boolean checked) {
+            
+            try {
+                JCheckBoxMenuItem item = (JCheckBoxMenuItem) fItem;
+                item.setState(checked);
+            }
+            catch(ClassCastException e) {
+                throw new Error("Cannot perform setChecked on non-checkbox item");
+            }
+        }
+    }
+    
+    private JMenu fMenu;
+        
+    SwingMenuFactory(JMenu menu) {
+            
+        fMenu = menu;
+    }
+    
+    private MItem handleCreate(JMenuItem item,
+                               MenuData menuData) {
+
+        if (menuData.hasShortcut()) {
+            KeyStroke ks = KeyStroke.getKeyStroke(menuData.getShortcutKeyCode(),
+                                                  Event.CTRL_MASK);
+            item.setAccelerator(ks);
+        }
+        
+        fMenu.add(item);
+        
+        return new SwingMItem(item);
+    }
+        
+    public MItem createItem(MenuData menuData) {
+        
+        return handleCreate(new JMenuItem(menuData.getName()), menuData);
+    }        
+
+    public MItem createCheckboxItem(MenuData menuData) {
+        
+        return handleCreate(new JCheckBoxMenuItem(menuData.getName()), menuData);
+    }
+    
+    public void createSeparator() {
+        
+        fMenu.add(new JSeparator());
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/package.html b/src/com/ibm/richtext/swingui/package.html
new file mode 100755
index 0000000..450bae3
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/package.html
@@ -0,0 +1,5 @@
+<html>
+<body bgcolor="white">
+Provides classes for building a Swing-based user interface for a TextPanel.
+</body>
+</html>
diff --git a/src/com/ibm/richtext/test/Declaration.java b/src/com/ibm/richtext/test/Declaration.java
new file mode 100755
index 0000000..69bd2ff
--- /dev/null
+++ b/src/com/ibm/richtext/test/Declaration.java
@@ -0,0 +1,44 @@
+/*
+ * @(#)$RCSfile: Declaration.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:38 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/**
+ * This class contains the first four paragraphs of the Declaration
+ * of Independence, as both styled and unstyled text.  The views
+ * expressed therein are not necessarily those of the programmer or of
+ * his/her employer.  No criticism of any monarchy, oligarchy, dictatorship,
+ * autocracy, plutocracy, theocracy, anarchist territory, colonial power,
+ * or any other nondemocratic form of government is intended.  This document
+ * is provided "as-is" without any warranty expressed or implied.
+ */
+public final class Declaration {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static final String fgDeclarationStr = "In Congress, July 4, 1776, THE UNANIMOUS DECLARATION OF THE THIRTEEN UNITED STATES OF AMERICA\n" +
+        "\n" +
+        "When in the Course of human Events, it becomes necessary for one People to dissolve the Political Bands which have connected them with another, and to assume among the Powers of the Earth, the separate and equal Station to which the Laws of Nature and of Nature's God entitle them, a decent Respect to the Opinions of Mankind requires that they should declare the causes which impel them to the Separation.\n" +
+        "\n" +
+        "We hold these Truths to be self-evident, that all Men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty, and the Pursuit of Happiness.\n" +
+        "\n" +
+        "That to secure these Rights, Governments are instituted among Men, deriving their just Powers from the Consent of the Governed, that whenever any Form of Government becomes destructive of these Ends, it is the Right of the People to alter or to abolish it, and to institute new Government, laying its Foundation on such Principles, and organizing its Powers in such Form, as to them shall seem most likely to effect their Safety and Happiness. Prudence, indeed, will dictate that Governments long established should not be changed for light and transient Causes; and accordingly all Experience hath shewn, that Mankind are more disposed to suffer, while Evils are sufferable, than to right themselves by abolishing the Forms to which they are accustomed. But when a long Train of Abuses and Usurpations, pursuing invariably the same Object, evinces a Design to reduce them under absolute Despotism, it is their Right, it is their Duty, to throw off such Government, and to provide new Guards for their future Security.\n" +
+        "\n";
+
+    public static final MConstText fgDeclaration = new StyledText(fgDeclarationStr, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+}
diff --git a/src/com/ibm/richtext/test/ITestTextPanel.java b/src/com/ibm/richtext/test/ITestTextPanel.java
new file mode 100755
index 0000000..6b80b96
--- /dev/null
+++ b/src/com/ibm/richtext/test/ITestTextPanel.java
@@ -0,0 +1,214 @@
+/*
+ * @(#)$RCSfile: ITestTextPanel.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:38 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test;
+
+import java.awt.Button;
+import java.awt.Frame;
+import java.awt.GridLayout;
+import java.awt.datatransfer.Clipboard;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowAdapter;
+
+import java.util.Date;
+import java.text.DateFormat;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.awtui.TextFrame;
+
+public class ITestTextPanel extends Frame implements ActionListener {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static long fgOpCount = 0;
+
+    private TestTextPanel fTest;
+    
+    private MTextPanel fTextPanel;
+    private Frame fTextFrame;
+    private Clipboard fClipboard;
+    private Button fExersize, fStressTest, fResize;
+
+    public static void main(String[] args) {
+
+        Date startDate = new Date();
+
+        try {
+            Clipboard clipboard = new Clipboard("ITextTestPanel");
+            TextFrame frame = new TextFrame(null, "Interactive Test", clipboard);
+            MTextPanel panel = frame.getTextPanel();
+
+            new ITestTextPanel(panel, frame, clipboard).show();
+        }
+        finally {
+            DateFormat df = DateFormat.getDateTimeInstance();
+            System.out.println("Start time: " + df.format(startDate));
+            System.out.println("End Time: " + df.format(new Date()));
+            System.out.println("Op count: " + fgOpCount);
+        }
+    }
+
+    public ITestTextPanel(MTextPanel panel,
+                          Frame frame,
+                          Clipboard clipboard) {
+
+        fTextPanel = panel;
+        fTest = new TestTextPanel(fTextPanel);
+        fClipboard = clipboard;
+
+        setLayout(new GridLayout(0, 1));
+
+        fTextFrame = frame;
+        fTextFrame.setSize(350, 500);
+        fTextFrame.show();
+
+        // initialize UI:
+        fExersize = new Button("Exercise");
+        fExersize.addActionListener(this);
+        add(fExersize);
+
+        fStressTest = new Button("Stress Test");
+        fStressTest.addActionListener(this);
+        add(fStressTest);
+
+        pack();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowActivated(WindowEvent e) {
+                //activateTextFrame();
+            }
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
+
+        setSize(280, 150);
+    }
+
+    private void activateTextFrame() {
+
+        fTextFrame.toFront();
+    }
+
+    public void actionPerformed(ActionEvent event) {
+
+        Object source = event.getSource();
+        activateTextFrame();
+        Date startDate = new Date();
+        boolean exitedNormally = false;
+
+        try {
+            if (source == fExersize) {
+                fTest.incRandSeed();
+                for (int i=0; i < 100; i++) {
+                    selectOperation(fTextFrame, fClipboard);
+                }
+            }
+            else if (source == fStressTest) {
+                fTest.incRandSeed();
+                while (true) {
+                    selectOperation(fTextFrame, fClipboard);
+                }
+            }
+            exitedNormally = true;
+        }
+        finally {
+            if (!exitedNormally) {
+                DateFormat df = DateFormat.getDateTimeInstance();
+                System.out.println("Start time: " + df.format(startDate));
+                System.out.println("End Time: " + df.format(new Date()));
+                System.out.println("Rand seed: " + fTest.getRandSeed());
+                System.out.println("Op count: " + fgOpCount);
+            }
+        }
+    }
+
+    /**
+     * Perform a random operation on the MTextPanel.  Frame can
+     * be null.
+     */
+    private static final int OP_COUNT = 15;
+
+    public void selectOperation(Frame frame,
+                                Clipboard fClipboard) {
+
+        int op = fTest.randInt(OP_COUNT);
+
+        switch (op) {
+
+            case 0:
+                fTest._testSetSelection();
+                break;
+
+            case 1:
+                fTest._testModifications(fTest.MOD_TEXT,
+                                        true);
+                break;
+
+            case 2:
+                fTest._testEditMenuOperations(fClipboard);
+                break;
+
+            case 3:
+                fTest._testModFlag(fTextPanel.getCommandLogSize());
+                break;
+
+            case 4:
+                fTest.applyCharacterStyle();
+                break;
+
+            case 5:
+                fTest.applyParagraphStyle();
+                break;
+
+            case 6:
+            case 7:
+            case 8:
+            case 9:
+                fTest.typeKeys();
+                break;
+
+            case 10:
+                fTest.selectText();
+                break;
+
+            case 11:
+                fTest.undoRedo();
+                break;
+
+            case 12:
+                //if (frame != null) {
+                //    fTest.resizeFrame(frame);
+                //    break;
+                //}
+
+            case 13:
+                fTest.applyKeyRemap();
+                break;
+
+            case 14:
+                fTest._testCommandLogControl();
+                break;
+
+            default:
+                throw new Error("OP_COUNT is incorrect");
+        }
+        fgOpCount++;
+    }
+
+
+}
diff --git a/src/com/ibm/richtext/test/TestTextPanel.java b/src/com/ibm/richtext/test/TestTextPanel.java
new file mode 100755
index 0000000..27c26f7
--- /dev/null
+++ b/src/com/ibm/richtext/test/TestTextPanel.java
@@ -0,0 +1,846 @@
+/*
+ * @(#)$RCSfile: TestTextPanel.java,v $ $Revision: 1.8 $ $Date: 2002/02/16 03:06:38 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test;
+
+import java.util.Random;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.event.KeyEvent;
+
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.ClipboardOwner;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+
+import com.ibm.richtext.textpanel.KeyRemap;
+import com.ibm.richtext.textpanel.KeyEventForwarder;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.textpanel.TextPanelListener;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+// Note:  this used to be a TestFmwk test.  If you add
+// more tests to it, be sure to add them to 
+// com.ibm.richtext.test.unit.FmwkTestTextPanel.test() -
+// otherwise they won't get run!
+
+public class TestTextPanel /*extends TestFmwk*/ {
+
+    private final class TestListener implements TextPanelListener {
+        
+        private int NO_WAY = 0;
+        private int DEFINITELY = 1;
+        private int MAYBE = 2;
+        
+        private final int[] status;
+        
+        TestListener(MTextPanel textPanel) {
+            
+            int length = TextPanelEvent.TEXT_PANEL_LAST -
+                         TextPanelEvent.TEXT_PANEL_FIRST + 1;
+            status = new int[length];
+            textPanel.addListener(this);
+            allowAll();
+        }
+        
+        void refuseAll() {
+            
+            for (int i=0; i < status.length; i++) {
+                status[i] = NO_WAY;
+            }
+        }
+        
+        void allowAll() {
+            
+            for (int i=0; i < status.length; i++) {
+                status[i] = MAYBE;
+            }
+        }
+        
+        void expectEvent(int type) {
+            
+            int index = type - TextPanelEvent.TEXT_PANEL_FIRST;
+            status[index] = DEFINITELY;
+        }
+        
+        void allowEvent(int type) {
+            int index = type - TextPanelEvent.TEXT_PANEL_FIRST;
+            status[index] = MAYBE;
+        }
+        
+        void assertNotExpectingEvents() {
+            assertNotExpectingEvents(false, 0, false);
+        }
+        
+        void assertNotExpectingEvents(int iterationCount, boolean exp) {
+            assertNotExpectingEvents(true, iterationCount, exp);
+        }
+        
+        private void assertNotExpectingEvents(boolean logDetails, int iterationCount, boolean exp) {
+            
+            boolean e = false;
+            for (int i=0; i < status.length; i++) {
+                if (status[i] == DEFINITELY) {
+                    if (logDetails) {
+                        logMessage("Expecting event " +
+                                        (i+TextPanelEvent.TEXT_PANEL_FIRST));
+                        logMessage("iterationCount="+iterationCount+";  expexting="+exp);
+                    }
+                    e = true;
+                }
+            }
+            if (e) {
+                reportError("Some events pending");
+            }
+        }
+        
+        public void textEventOccurred(TextPanelEvent event) {
+            
+            int index = event.getID() - TextPanelEvent.TEXT_PANEL_FIRST;
+            if (status[index] == NO_WAY) {
+                reportError("Unexpected event: " + event);
+            }
+            else if (status[index] == DEFINITELY) {
+                status[index] = NO_WAY;
+            }
+        }
+        
+        public boolean respondsToEventType(int type) {
+            
+            return true;
+        }
+    }
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private static final String STRING_CONTENT = "Some content";
+    private static final int TEST_ITERS = 2;
+    public static final MConstText MOD_TEXT =
+                new StyledText("Styled", AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+    private Clipboard fClipboard;
+    private MTextPanel fTextPanel = null;
+    private TestListener fListener = null;
+    private int fRandSeed = 0;
+    private Random rand;
+    
+    private static final int BIG_COMMAND_LOG_SIZE = 40;
+    private static final int SMALL_COMMAND_LOG_SIZE = 8;
+
+    private static final StyleModifier[] paraMods = {
+        StyleModifier.createAddModifier(
+                new AttributeMap(TextAttribute.LINE_FLUSH,
+                                 TextAttribute.FLUSH_LEADING)),
+        StyleModifier.createAddModifier(TextAttribute.LINE_FLUSH,
+                                 TextAttribute.FLUSH_CENTER),
+        StyleModifier.createAddModifier(TextAttribute.LINE_FLUSH,
+                                 TextAttribute.FLUSH_TRAILING),
+        StyleModifier.createAddModifier(TextAttribute.LINE_FLUSH,
+                                 TextAttribute.FULLY_JUSTIFIED),
+        StyleModifier.createAddModifier(TextAttribute.RUN_DIRECTION,
+                                 TextAttribute.RUN_DIRECTION_RTL),
+        StyleModifier.createAddModifier(TextAttribute.RUN_DIRECTION,
+                                 TextAttribute.RUN_DIRECTION_LTR),
+        StyleModifier.createRemoveModifier(
+                new AttributeSet(TextAttribute.LINE_FLUSH)),
+        StyleModifier.createRemoveModifier(
+                new AttributeSet(TextAttribute.RUN_DIRECTION))
+    };
+
+    private static final int SELECT = 0;
+    private static final int SET_CARET_POS = 1;
+    private static final int SET_START = 2;
+    private static final int SET_END = 3;
+
+    // using both styles of add modifier: AttributeMap and
+    // key-value, just for variety...
+    private static final StyleModifier[] charMods = {
+        StyleModifier.createAddModifier(
+                new AttributeMap(TextAttribute.WEIGHT,
+                                 TextAttribute.WEIGHT_BOLD)),
+        StyleModifier.createAddModifier(TextAttribute.FOREGROUND,
+                                 Color.green),
+        StyleModifier.createAddModifier(
+                new AttributeMap(TextAttribute.UNDERLINE,
+                                 TextAttribute.UNDERLINE_ON).addAttributes(
+                new AttributeMap(TextAttribute.SIZE, new Float(6)))),
+        StyleModifier.createReplaceModifier(
+                new AttributeMap(TextAttribute.FAMILY, "Dialog")),
+        StyleModifier.createRemoveModifier(
+                new AttributeSet(
+                new Object[] { TextAttribute.WEIGHT,
+                           TextAttribute.POSTURE,
+                           TextAttribute.UNDERLINE,
+                           TextAttribute.STRIKETHROUGH,
+                           TextAttribute.SUPERSCRIPT })),
+        StyleModifier.IDENTITY
+    };
+
+    private static final char[] TYPED_CHARS = new char[128 - ' ' + 3];
+    static {
+        TYPED_CHARS[0] = 8; // backspace
+        TYPED_CHARS[1] = '\t';
+        TYPED_CHARS[2] = '\n';
+        for (int i=3; i < TYPED_CHARS.length; i++) {
+            TYPED_CHARS[i] = (char) (' ' + i - 3);
+        }
+    }
+
+    public TestTextPanel() {
+
+        fClipboard = new Clipboard("TestTextPanel");
+        incRandSeed();
+    }
+
+    protected void reportError(String message) {
+    
+        System.err.println(message);
+        throw new RuntimeException(message);
+        //super.errln(message);
+    }
+    
+    protected void logMessage(String message) {
+    
+        System.err.println(message);
+        //super.logMessage(message);
+    }
+    
+    public TestTextPanel(MTextPanel panel) {
+        
+        this();
+        setTextPanel(panel);
+    }
+    
+    void incRandSeed() {
+        
+        rand = new Random(++fRandSeed);
+    }
+    
+    int getRandSeed() {
+        
+        return fRandSeed;
+    }
+
+    int randInt(int limit) {
+
+        return randInt(0, limit);
+    }
+
+    int randInt(int start, int limit) {
+
+        if (start > limit) {
+            throw new IllegalArgumentException("Range is 0-length.");
+        }
+        else if (start == limit) {
+            return start;
+        }
+
+        return start + (Math.abs(rand.nextInt())%(limit-start)) ;
+    }
+
+    public void test() {
+
+        AttributeMap bold = new AttributeMap(TextAttribute.WEIGHT,
+                                             TextAttribute.WEIGHT_BOLD);
+        MConstText text1 = new StyledText("Test contents. 1234\nHow about it?",
+                                              AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        MConstText text2 = new StyledText("Another test string.", bold);
+
+        _testWithText(text1);
+        _testWithText(text2);
+        _testWithText(new StyledText());
+
+        StyledText big1 = new StyledText();
+        for (int i=0; i < 50; i++) {
+            big1.append(text1);
+        }
+
+        _testWithText(big1);
+        StyledText big2 = new StyledText(text1);
+        for (int i=0; i < 80; i++) {
+            big2.append(text2);
+        }
+
+        _testWithText(big2);
+    }
+    
+    private void setTextPanel(MTextPanel panel) {
+        
+        fTextPanel = panel;
+        fListener = new TestListener(panel);
+    }
+    
+    private void _testWithText(MConstText text) {
+
+        setTextPanel(new TextPanel(text, fClipboard));
+
+        for (int i=0; i < TEST_ITERS; i++) {
+            _testSetSelection();
+            _testModifications(MOD_TEXT, true);
+            _testEditMenuOperations(fClipboard);
+            _testModFlag(fTextPanel.getCommandLogSize());
+            _testCommandLogControl();
+        }
+    }
+
+    private void _testSelection(int function, 
+                               final int aStart,
+                               final int aLimit) {
+
+        int oldStart = fTextPanel.getSelectionStart();
+        int oldLimit = fTextPanel.getSelectionEnd();
+
+        final int length = fTextPanel.getTextLength();
+        
+        int start = aStart;
+        int limit = aLimit;
+        
+        if (start < 0) {
+            start = 0;
+        }
+        else if (start > length) {
+            start = length;
+        }
+
+        if (limit < start) {
+            limit = start;
+        }
+        else if (limit > length) {
+            limit = length;
+        }
+        
+        fListener.refuseAll();
+        
+        if (oldStart != start || oldLimit != limit) {
+            fListener.expectEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+            fListener.allowEvent(TextPanelEvent.SELECTION_STYLES_CHANGED);
+        }
+        if ((oldStart==oldLimit) != (start==limit)) {
+            fListener.expectEvent(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+        }
+        if (oldStart==oldLimit) {
+            fListener.allowEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+
+        switch(function) {
+            case SELECT:
+                fTextPanel.select(aStart, aLimit);
+                break;
+            case SET_CARET_POS:
+                fTextPanel.setCaretPosition(aStart);
+                break;
+            case SET_START:
+                fTextPanel.setSelectionStart(aStart);
+                break;
+            case SET_END:
+                fTextPanel.setSelectionEnd(aLimit);
+                break;
+            default:
+                throw new IllegalArgumentException("Invalid function");
+        }
+        
+        if (fTextPanel.getSelectionStart() != start) {
+            reportError("getSelectionStart is incorrect after set");
+        }
+        if (fTextPanel.getSelectionEnd() != limit) {
+            reportError("getSelectionEnd is incorrect after set");
+        }
+        fListener.assertNotExpectingEvents();
+        fListener.allowAll();
+    }
+
+    private void setAndTestSelection(int start, int limit) {
+        
+        _testSelection(SELECT, start, limit);
+    }
+
+    private void setAndTestCaret(int caretPos) {
+
+        _testSelection(SET_CARET_POS, caretPos, caretPos);
+    }
+
+    private void setAndTestSelectionStart(int selStart) {
+
+        int limit = fTextPanel.getSelectionEnd();
+        _testSelection(SET_START, selStart, limit);
+    }
+
+    private void setAndTestSelectionEnd(int selEnd) {
+
+        int start = fTextPanel.getSelectionStart();
+        _testSelection(SET_END, start, selEnd);
+    }
+
+    public void _testSetSelection() {
+
+        int textLength = fTextPanel.getTextLength();
+        if (textLength != fTextPanel.getText().length()) {
+            reportError("Text panel length is not correct");
+        }
+
+        setAndTestSelection(0, textLength / 2);
+        setAndTestSelection(textLength / 2, textLength);
+        setAndTestSelection(0, textLength);
+        setAndTestSelection(-1, textLength+1);
+        if (textLength > 0) {
+            setAndTestSelection(0, textLength - 1);
+            setAndTestSelection(0, 1);
+        }
+
+        final int incAmount = Math.max(1, textLength/5);
+        for (int index = 0; index <= textLength; index += incAmount) {
+
+            setAndTestCaret(index);
+            setAndTestSelectionStart(textLength-index);
+            setAndTestSelectionEnd(textLength);
+            setAndTestSelectionStart(0);
+            setAndTestSelectionEnd(textLength-index);
+        }
+    }
+
+    /**
+     * Text must be editable to pass this test.
+     */
+    public void _testModifications(MConstText insertionText,
+                                   boolean restoreOldText) {
+
+        MConstText oldText = new StyledText(fTextPanel.getText());
+        final int insLength = insertionText.length();
+
+        fListener.allowAll();
+        fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+        fListener.expectEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        fTextPanel.append(insertionText);
+        fListener.assertNotExpectingEvents();
+        
+        if (fTextPanel.getSelectionStart() != oldText.length() + insLength) {
+            reportError("Append didn't result in correct selection");
+        }
+
+        fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+        fListener.expectEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        fTextPanel.insert(insertionText, 0);
+        fListener.assertNotExpectingEvents();
+        fListener.allowAll();
+        
+        if (fTextPanel.getSelectionStart() != insLength) {
+            reportError("Insert didn't result in correct selection");
+        }
+
+        fTextPanel.replaceRange(insertionText, insLength, insLength+oldText.length());
+        if (fTextPanel.getSelectionStart() != insLength*2) {
+            reportError("Replace didn't result in correct selection");
+        }
+        if (fTextPanel.getSelectionEnd() != insLength*2) {
+            reportError("Replace didn't result in correct selection");
+        }
+        if (fTextPanel.getTextLength() != insLength*3) {
+            reportError("textLength is incorrect");
+        }
+
+        if (restoreOldText) {
+            fTextPanel.setText(oldText);
+            if (fTextPanel.getSelectionStart() != oldText.length()) {
+                reportError("setText didn't result in correct selection");
+            }
+            if (fTextPanel.getTextLength() != oldText.length()) {
+                reportError("length incorrect after setText");
+            }
+        }
+        
+        fListener.allowAll();
+    }
+
+    private static int iterationCount = 0;
+    public void _testCommandLogControl() {
+
+        fListener.refuseAll();
+        iterationCount++;
+        boolean exp = false;
+        if (fTextPanel.canRedo() || BIG_COMMAND_LOG_SIZE==0) {
+            fListener.expectEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+            exp = true;
+        }
+        //try {
+            fTextPanel.setCommandLogSize(BIG_COMMAND_LOG_SIZE);
+            
+            if (fTextPanel.canRedo()) {
+                reportError("canRedo after setCommandLogSize");
+            }
+            fListener.assertNotExpectingEvents(iterationCount, exp);
+        //}
+        //catch(Error e) {
+        //    logMessage("iterationCount="+iterationCount+";  expexting="+exp);
+        //    throw e;
+        //}
+
+        MConstText insText = new StyledText("7",
+                                AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+        final int origLength = fTextPanel.getTextLength();
+        int start = origLength / 3;
+        
+        fListener.allowEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        fListener.allowEvent(TextPanelEvent.SELECTION_STYLES_CHANGED);
+
+        for (int i=start; i < BIG_COMMAND_LOG_SIZE+start; i++) {
+            fListener.expectEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+            fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+            if (fTextPanel.getSelectionStart() != fTextPanel.getSelectionEnd()) {
+                fListener.expectEvent(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+            }
+            fTextPanel.insert(insText, i);
+            fListener.assertNotExpectingEvents();
+        }
+
+        fListener.allowEvent(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+        
+        for (int i=0; i < BIG_COMMAND_LOG_SIZE-1; i++) {
+            fListener.expectEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+            fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+            fTextPanel.undo();
+            fListener.assertNotExpectingEvents();
+        }
+        if (!fTextPanel.canUndo()) {
+            reportError("Command log is too small");
+        }
+        
+        fListener.allowAll();
+        fTextPanel.undo();
+        if (fTextPanel.canUndo()) {
+            reportError("Command log is too large");
+        }
+
+        if (fTextPanel.getTextLength() != origLength * insText.length()) {
+            reportError("Text length was not restored");
+        }
+
+        for (int i=0; i < BIG_COMMAND_LOG_SIZE; i++) {
+            fTextPanel.redo();
+        }
+
+        if (fTextPanel.getTextLength() != origLength+BIG_COMMAND_LOG_SIZE) {
+            reportError("Text length was not restored after redo");
+        }
+
+        if (fTextPanel.canRedo()) {
+            reportError("Should not be able to redo");
+        }
+
+        fTextPanel.undo();
+
+        fTextPanel.setCommandLogSize(SMALL_COMMAND_LOG_SIZE);
+
+        if (fTextPanel.canRedo()) {
+            reportError("canRedo after setCommandLogSize(small)");
+        }
+
+        for (int i=0; i < SMALL_COMMAND_LOG_SIZE; i++) {
+            if (!fTextPanel.canUndo()) {
+                reportError("should be able to undo");
+            }
+            fTextPanel.undo();
+        }
+        if (fTextPanel.canUndo()) {
+            reportError("should not be able to undo after setCommandLogSize(small)");
+        }
+        if (!fTextPanel.canRedo()) {
+            reportError("why can't this redo???");
+        }
+        fTextPanel.redo();
+
+        fTextPanel.clearCommandLog();
+
+        if (fTextPanel.canUndo() || fTextPanel.canRedo()) {
+            reportError("Command log wasn't cleared");
+        }
+    }
+
+    /**
+     * Test cut, copy, paste, undo, redo, clear, canUndo, canRedo.
+     * Text must be editable to pass this test.
+     */
+    public void _testEditMenuOperations(Clipboard clipboard) {
+        
+        if (clipboard != null) {
+            // test paste and undo / redo
+            Transferable tr = new StringSelection(STRING_CONTENT);
+            clipboard.setContents(tr, new ClipboardOwner() {
+                public void lostOwnership(Clipboard c, Transferable t) {
+                }
+            });
+            if (!fTextPanel.clipboardNotEmpty()) {
+                reportError("MTextPanel doesn't recognize string content.");
+            }
+
+            fTextPanel.setCaretPosition(fTextPanel.getSelectionStart());
+            int oldLength = fTextPanel.getTextLength();
+            fTextPanel.paste();
+            if (fTextPanel.getTextLength() != oldLength + STRING_CONTENT.length()) {
+                reportError("Text length is wrong after paste.");
+            }
+
+            if (!fTextPanel.canUndo()) {
+                reportError("canUndo should be true");
+            }
+            fTextPanel.undo();
+            if (fTextPanel.getTextLength() != oldLength) {
+                reportError("Length is wrong after undo");
+            }
+            if (!fTextPanel.canRedo()) {
+                reportError("canRedo should be true");
+            }
+            fTextPanel.redo();
+            if (fTextPanel.getTextLength() != oldLength + STRING_CONTENT.length()) {
+                reportError("Text length is wrong after redo.");
+            }
+        }
+
+        int origLength = fTextPanel.getTextLength();
+        fTextPanel.selectAll();
+        fTextPanel.clear();
+        if (fTextPanel.getTextLength() != 0) {
+            reportError("Length is nonzero after clear");
+        }
+        if (!fTextPanel.canUndo()) {
+            reportError("canUndo should be true");
+        }
+        fTextPanel.undo();
+        if (fTextPanel.getTextLength() != origLength) {
+            reportError("Old text not restored");
+        }
+
+        if (origLength > 0) {
+
+            fTextPanel.select(0, 1);
+            fTextPanel.cut();
+            if (fTextPanel.getTextLength() != origLength-1) {
+                reportError("Length wrong after cut");
+            }
+            fTextPanel.paste();
+            if (fTextPanel.getTextLength() != origLength) {
+                reportError("Length wrong after paste");
+            }
+            fTextPanel.select(0, origLength);
+            fTextPanel.copy();
+            fTextPanel.setCaretPosition(0);
+            fTextPanel.paste();
+            if (fTextPanel.getTextLength() != 2*origLength) {
+                reportError("Length wrong after paste");
+            }
+            fTextPanel.undo();
+            if (fTextPanel.getTextLength() != origLength) {
+                reportError("Length wrong after undo");
+            }
+        }
+    }
+
+    private void setAndTestModFlag(final int depth,
+                                   boolean modified) {
+
+        fTextPanel.setModified(modified);
+        for (int i=0; i < depth; i++) {
+            if (!fTextPanel.canUndo()) {
+                reportError("Panel cannot undo at valid depth.  Depth=" + i);
+            }
+            fTextPanel.undo();
+            fTextPanel.setModified(modified);
+        }
+
+        // check that all mod flags are false:
+        if (fTextPanel.isModified() != modified) {
+            reportError("isModified is not correct");
+        }
+
+        for (int i=0; i < depth; i++) {
+            fTextPanel.redo();
+            if (fTextPanel.isModified() != modified) {
+                reportError("isModified is not correct");
+            }
+        }
+    }
+
+    /**
+     * Make <code>depth</code> modifications to the text in textfTextPanel.
+     * Set the modified flag on each operation, and then retrieve its
+     * value.  Finally, undo the modifications.
+     */
+    public void _testModFlag(final int depth) {
+
+        final int oldLength = fTextPanel.getTextLength();
+
+        for (int i=0; i < depth; i++) {
+            fTextPanel.insert(MOD_TEXT, 0);
+        }
+
+        setAndTestModFlag(depth, false);
+        setAndTestModFlag(depth, true);
+
+        for (int i=0; i < depth; i++) {
+            fTextPanel.undo();
+        }
+
+        if (fTextPanel.getTextLength() != oldLength) {
+            reportError("Undo did not restore old text.");
+        }
+    }
+
+    void applyCharacterStyle() {
+
+        StyleModifier stMod = charMods[randInt(charMods.length)];
+        fListener.refuseAll();
+        fListener.expectEvent(TextPanelEvent.SELECTION_STYLES_CHANGED);
+        if (fTextPanel.getSelectionStart() != fTextPanel.getSelectionEnd()) {
+            fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+            fListener.allowEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        }
+        fListener.allowEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+        fTextPanel.modifyCharacterStyleOnSelection(stMod);
+        fListener.assertNotExpectingEvents();
+        fListener.allowAll();
+    }
+
+
+    void applyParagraphStyle() {
+
+        fListener.refuseAll();
+        fListener.expectEvent(TextPanelEvent.SELECTION_STYLES_CHANGED);
+        fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+        fListener.allowEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+        fListener.allowEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        StyleModifier stMod = paraMods[randInt(paraMods.length)];
+        fTextPanel.modifyParagraphStyleOnSelection(stMod);
+        fListener.assertNotExpectingEvents();
+        fListener.allowAll();
+    }
+
+    void applyKeyRemap() {
+
+        fListener.refuseAll();
+        fListener.expectEvent(TextPanelEvent.KEYREMAP_CHANGED);
+        int op = randInt(5);
+        switch (op) {
+
+            case 0:
+                fTextPanel.setKeyRemap(KeyRemap.getIdentityRemap());
+                break;
+
+            case 1:
+                fTextPanel.setKeyRemap(KeyRemap.getArabicTransliteration());
+                break;
+
+            case 2:
+                fTextPanel.setKeyRemap(KeyRemap.getHebrewTransliteration());
+                break;
+
+            case 3:
+                fTextPanel.setKeyRemap(KeyRemap.getIsraelNikud());
+                break;
+            
+            case 4:
+                //fTextPanel.setKeyRemap(KeyRemap.getThaiKetmanee());
+                fTextPanel.setKeyRemap(KeyRemap.getIsraelNikud());
+                break;
+            
+            default:
+                reportError("Invalid operation!");
+        }
+        fListener.assertNotExpectingEvents();
+        fListener.allowAll();
+    }
+
+    void resizeFrame(Frame frame) {
+
+        fListener.refuseAll();
+        fListener.allowEvent(TextPanelEvent.FORMAT_WIDTH_CHANGED);
+        int wd = randInt(50, 1000);
+        int ht = randInt(20, 800);
+
+        frame.setSize(wd, ht);
+        fListener.allowAll();
+    }
+
+    void selectText() {
+
+        int selStart = randInt(-10, fTextPanel.getTextLength());
+        int selLimit = randInt(0, fTextPanel.getTextLength() + 10);
+        _testSelection(SELECT, selStart, selLimit);
+    }
+
+    void undoRedo() {
+
+        final int opCount = randInt(-10, 15);
+
+        for (int i=opCount; i <= 0; i++) {
+            fTextPanel.redo();
+        }
+        for (int i=0; i < opCount; i++) {
+            fTextPanel.undo();
+        }
+    }
+    
+    void typeKeys() {
+
+        final int keyCount = randInt(1, 100);
+        TextPanel textPanel = (TextPanel) fTextPanel;
+        
+        KeyEventForwarder forwarder = new KeyEventForwarder(textPanel);
+        
+        fListener.refuseAll();
+        fListener.allowEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+        
+        if (fTextPanel.getSelectionStart() != fTextPanel.getSelectionEnd()) {
+            fListener.expectEvent(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+        }
+        
+        for (int i=0; i < keyCount; i++) {
+            char typedChar = TYPED_CHARS[randInt(TYPED_CHARS.length)];
+            KeyEvent event = new KeyEvent(textPanel,
+                                          KeyEvent.KEY_TYPED,
+                                          0,
+                                          0,
+                                          KeyEvent.VK_UNDEFINED,
+                                          typedChar);
+            if (typedChar == 8 || typedChar == 0x7f) {
+                fListener.allowEvent(TextPanelEvent.TEXT_CHANGED);
+                fListener.allowEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+            }
+            else {
+                fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+                fListener.expectEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+            }
+            forwarder.handleKeyEvent(event);
+            //try {
+                fListener.assertNotExpectingEvents(i, false);
+            //}
+            //catch(Error e) {
+            //    logMessage("i="+i+"; typedChar="+Integer.toHexString(typedChar));
+            //    throw e;
+            //}
+        }
+        fListener.allowAll();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/TypingPerfTest.java b/src/com/ibm/richtext/test/TypingPerfTest.java
new file mode 100755
index 0000000..0d7a927
--- /dev/null
+++ b/src/com/ibm/richtext/test/TypingPerfTest.java
@@ -0,0 +1,242 @@
+/*
+ * @(#)$RCSfile: TypingPerfTest.java,v $ $Revision: 1.4 $ $Date: 2002/02/16 03:06:39 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test;
+
+import java.awt.Button;
+import java.awt.GridLayout;
+import java.awt.Frame;
+import java.awt.Toolkit;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.io.IOException;
+
+import java.text.DateFormat;
+import java.util.Date;
+
+import com.ibm.richtext.textpanel.KeyEventForwarder;
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.awtui.TextFrame;
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.demo.EditDemo;
+import com.ibm.richtext.demo.TextDocument;
+
+public class TypingPerfTest implements ActionListener {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private TextFrame fTextFrame;
+    private KeyEventForwarder fKeyEventForwarder;
+    private PrintWriter fOut;
+
+    private static final String fgAtStartCommand = "Insert at start";
+    private static final String fgAtEndCommand = "Insert at end";
+    private static final String fgFwdDelete = "Forward delete";
+    private static final String fgBackspace = "Backspace";
+    private static final String fgAtCurrentPosCommand = "Insert at current position";
+    private static final String fgLotsOfTextCommand = "Insert a lot of text";
+
+    private static final String USAGE = "Usage: java com.ibm.richtext.test.TypingPerfTest [file] [-insertionText text]";
+    private char[] fInsText;
+
+    public static void main(String[] args) throws IOException {
+
+        // not used OutputStream outStream = null;
+        PrintWriter writer = new PrintWriter(System.out);
+
+        MConstText text = Declaration.fgDeclaration;
+        char[] insText = "The quick brown fox jumps over the lazy dog. The end. ".toCharArray();
+        
+        int index = 0;
+        while (index < args.length) {
+            if (args[index].equals("-insertionText")) {
+                if (args.length == ++index) {
+                    throw new Error(USAGE);
+                }
+                insText = args[index++].toCharArray();
+            }
+            else {
+                // This will try MConstText first, then plain text.
+                TextDocument doc = EditDemo.getDocumentFromFile(new File(args[index++]));
+                if (doc == null) {
+                    throw new Error("Couldn't open file "+args[index-1]);
+                }
+                text = doc.getText();
+            }
+        }
+        
+        if (index != args.length) {
+            throw new Error(USAGE);
+        }
+        
+        new TypingPerfTest(writer, text, insText);
+    }
+
+    public TypingPerfTest(PrintWriter out, MConstText text, char[] insText) throws IOException {
+
+        fInsText = insText;
+        fTextFrame = new TextFrame(text, "", null);
+        TextPanel textPanel = (TextPanel) fTextFrame.getTextPanel();
+        fKeyEventForwarder = new KeyEventForwarder(textPanel);
+        fOut = out;
+
+        DateFormat df = DateFormat.getDateTimeInstance();
+        out.println("Test date: " + df.format(new Date()));
+
+        fTextFrame.setSize(500, 700);
+        fTextFrame.show();
+
+        Frame f = new Frame("Typing Perf Test");
+        f.setLayout(new GridLayout(0, 1));
+        Button b;
+/*
+        b = new Button(fgAtStartCmd);
+        b.addActionListener(this);
+        f.add(b);
+
+        b = new Button(fgAtEndCmd);
+        b.addActionListener(this);
+        f.add(b);
+*/
+        b = new Button(fgAtCurrentPosCommand);
+        b.addActionListener(this);
+        f.add(b);
+
+        b = new Button(fgLotsOfTextCommand);
+        b.addActionListener(this);
+        f.add(b);
+
+        b = new Button(fgFwdDelete);
+        b.addActionListener(this);
+        f.add(b);
+
+        b = new Button(fgBackspace);
+        b.addActionListener(this);
+        f.add(b);
+
+        f.doLayout();
+        WindowAdapter closer = new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                fOut.close();
+                System.exit(0);
+            }
+        };
+        
+        f.addWindowListener(closer);
+        fTextFrame.addWindowListener(closer);
+        
+        f.setSize(200, 80);
+        f.show();
+    }
+
+    public void actionPerformed(ActionEvent evt) {
+
+        try {
+            if (evt.getActionCommand().equals(fgAtCurrentPosCommand)) {
+
+                insertAtCurrentPos(1);
+            }
+            else if (evt.getActionCommand().equals(fgLotsOfTextCommand)) {
+
+                insertAtCurrentPos(8);
+            }
+            else if (evt.getActionCommand().equals(fgFwdDelete)) {
+
+                forwardDelete(1);
+            }
+            else if (evt.getActionCommand().equals(fgBackspace)) {
+
+                backspace(1);
+            }
+        }
+        catch(IOException e) {
+            System.out.println("Caught exception: " + e);
+        }
+    }
+
+    private void insertAtCurrentPos(final int times) throws IOException {
+
+        fTextFrame.toFront();
+
+        System.gc();
+
+        long startTime = System.currentTimeMillis();
+
+        for (int t=0; t < times; t++) {
+            for (int i=0; i < fInsText.length; i++) {
+
+                KeyEvent event = new KeyEvent(fTextFrame, KeyEvent.KEY_TYPED, 0, 0, 0, fInsText[i]);
+                fKeyEventForwarder.handleKeyEvent(event);
+            }
+        }
+
+        long time = System.currentTimeMillis() - startTime;
+
+        fOut.println("Total time: " + time);
+        fOut.println("Millis per character: " + (time / (fInsText.length*times)));
+        fOut.flush();
+    }
+
+    private void forwardDelete(final int times) throws IOException {
+
+        System.gc();
+
+        long startTime = System.currentTimeMillis();
+
+        for (int t=0; t < times; t++) {
+            for (int i=0; i < fInsText.length; i++) {
+
+                KeyEvent event = new KeyEvent(fTextFrame, 0, 0, 0, KeyEvent.VK_DELETE, '\u00FF');
+                fKeyEventForwarder.handleKeyEvent(event);
+            }
+        }
+
+        long time = System.currentTimeMillis() - startTime;
+
+        fOut.println("Total time: " + time);
+        fOut.println("Millis per character: " + (time / (fInsText.length*times)));
+        fOut.flush();
+    }
+
+    private void backspace(final int times) throws IOException {
+
+        System.gc();
+
+        long startTime = System.currentTimeMillis();
+
+        for (int t=0; t < times; t++) {
+            for (int i=0; i < fInsText.length; i++) {
+
+                KeyEvent event = new KeyEvent(fTextFrame, 0, 0, 0, KeyEvent.VK_BACK_SPACE, '\u0010');
+                fKeyEventForwarder.handleKeyEvent(event);
+            }
+        }
+
+        long time = System.currentTimeMillis() - startTime;
+
+        fOut.println("Total time: " + time);
+        fOut.println("Millis per character: " + (time / (fInsText.length*times)));
+        fOut.flush();
+    }
+}
diff --git a/src/com/ibm/richtext/test/unit/FmwkTestTextPanel.java b/src/com/ibm/richtext/test/unit/FmwkTestTextPanel.java
new file mode 100755
index 0000000..e3792ac
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/FmwkTestTextPanel.java
@@ -0,0 +1,52 @@
+/*
+ * @(#)$RCSfile: FmwkTestTextPanel.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:39 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.richtext.test.TestTextPanel;
+
+public final class FmwkTestTextPanel extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+    
+        new FmwkTestTextPanel().run(args);
+    }
+    
+    private TTP ttp;
+    
+    public FmwkTestTextPanel() {
+    
+        ttp = new TTP();
+    }
+    
+    public void test() {
+    
+        ttp.test();
+        // If TestTextPanel gets more tests, add them here
+    }
+
+    private final class TTP extends TestTextPanel {
+    
+        protected void reportError(String message) {
+        
+            errln(message);
+        }
+        
+        protected void logMessage(String message) {
+        
+            logln(message);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestAll.java b/src/com/ibm/richtext/test/unit/TestAll.java
new file mode 100755
index 0000000..fdc4682e
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestAll.java
@@ -0,0 +1,55 @@
+/*
+ * @(#)$RCSfile: TestAll.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:39 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class TestAll extends TestFmwk {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+    
+    public void TestAttributeSet() throws Exception {
+        run(new TestAttributeSet());
+    }
+    
+    public void TestAttributeMap() throws Exception {
+        run(new TestAttributeMap());
+    }
+    
+    public void TestFormatter() throws Exception {
+        run(new TestFormatter());
+    }
+    
+    public void TestMText() throws Exception {
+        run(new TestMText());
+    }
+    
+    public void TestParagraphStyles() throws Exception {
+        run(new TestParagraphStyles());
+    }
+    
+    public void TestMTextStreaming() throws Exception {
+        run(new TestMTextStreaming());
+    }
+    
+    public void TestTextPanel() throws Exception {
+        run(new FmwkTestTextPanel());
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestAttributeMap.java b/src/com/ibm/richtext/test/unit/TestAttributeMap.java
new file mode 100755
index 0000000..37f7bfd
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestAttributeMap.java
@@ -0,0 +1,413 @@
+/*
+ * @(#)$RCSfile: TestAttributeMap.java,v $ $Revision: 1.4 $ $Date: 2002/02/16 03:06:39 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.textlayout.attributes.Map;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import java.util.Enumeration;
+
+// Java2 imports
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.Map.Entry;
+
+
+public class TestAttributeMap extends TestFmwk  {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+
+    // There are JDK 1.1 versions of AttributeMap and AttributeSet.
+    // Some of the tests in this class require Java 2 API's.  I have
+    // tried to isolate these tests by conditionalizing them on
+    // this static variable.  If you are back-porting to 1.1, remove
+    // the Java 2 tests ONLY.
+    private static final boolean gJDK11 = false;
+
+    public static void main(String[] args) throws Exception {
+
+        new TestAttributeMap().run(args);
+    }
+
+    private AttributeSet maps;  // A Set of AttributeMaps
+    private AttributeSet sets;  // A Set of Sets
+
+    private static final class TestAttribute extends TextAttribute {
+
+        TestAttribute(String name) {
+            super(name);
+        }
+    }
+
+    private static final TestAttribute[] attributes = {
+        new TestAttribute("0"), new TestAttribute("1"), new TestAttribute("2")
+    };
+
+    private static final Object[] values = {
+        "Hello world", new Float(-42), new Object(), new AttributeMap(new TestAttribute("3"), "HH")
+    };
+
+    /**
+     * Returns lhs.equals(rhs) - but also checks for symmetry, and
+     * consistency with hashCode().
+     */
+    private boolean equalMaps(AttributeMap lhs, Object rhs) {
+
+        boolean equal = lhs.equals(rhs);
+        if (equal != (rhs.equals(lhs))) {
+            errln("AttributeMap.equals is not symetric");
+        }
+        if (equal) {
+            if (lhs.hashCode() != rhs.hashCode()) {
+                errln("AttributeMaps are equal but hashCodes differ");
+            }
+        }
+        return equal;
+    }
+
+    public TestAttributeMap() {
+
+        maps = AttributeSet.EMPTY_SET;
+        maps = maps.addElement(AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        maps.addElement(new AttributeMap(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUB));
+        maps.addElement(new AttributeMap(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUPER));
+
+        for (int i=0; i < attributes.length; i++) {
+            for (int j=0; j < values.length; j++) {
+                maps = maps.addElement(new AttributeMap(attributes[i], values[j]));
+            }
+        }
+
+        AttributeMap bigMap = new AttributeMap(new TestAttribute("4"), "value");
+        for (int i=0; i < Math.min(attributes.length, values.length); i++) {
+            bigMap = bigMap.addAttribute(attributes[i], values[values.length-i-1]);
+        }
+        maps = maps.addElement(bigMap);
+
+        sets = AttributeSet.EMPTY_SET;
+
+        sets = new AttributeSet(AttributeSet.EMPTY_SET);
+
+        for (int i=0; i < attributes.length; i++) {
+            AttributeSet newSet = new AttributeSet(attributes[i]);
+            sets = sets.addElement(newSet);
+        }
+
+        AttributeSet allAttrs = AttributeSet.EMPTY_SET;
+        for (int i=0; i < attributes.length; i++) {
+            allAttrs = allAttrs.addElement(attributes[i]);
+        }
+
+        sets = sets.addElement(allAttrs);
+    }
+
+    /**
+     * Run tests on AttributeMap.  If a test fails an exception will propogate out
+     * of this method.
+     */
+    public void test() {
+
+        easyTests();
+
+        Enumeration mapIter = maps.elements();
+        while (mapIter.hasMoreElements()) {
+
+            AttributeMap testMap = (AttributeMap) mapIter.nextElement();
+
+            _testModifiers(testMap);
+            _testViews(testMap);
+
+            Enumeration unionIter = maps.elements();
+            while (unionIter.hasMoreElements()) {
+                _testUnionWith(testMap, (AttributeMap) unionIter.nextElement());
+            }
+
+            Enumeration setIter = sets.elements();
+            while (setIter.hasMoreElements()) {
+                AttributeSet testSet = (AttributeSet) setIter.nextElement();
+                _testIntersectWith(testMap, testSet);
+                _testRemoveAttributes(testMap, testSet);
+            }
+        }
+    }
+
+    /**
+     * Invoke modifiers on map.  All should throw
+     * UnsupportedOperationException, and leave map unmodified.
+     */
+    void _testModifiers(AttributeMap map) {
+
+        if (gJDK11) {
+            return;
+        }
+        
+        AttributeMap originalMap = new AttributeMap(map);
+
+        try {
+            map.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
+            errln("Put should throw UnsupportedOperationException.");
+        }
+        catch(UnsupportedOperationException e) {
+            System.out.print("");
+        }
+
+        try {
+            Object key = TextAttribute.WEIGHT;
+            Iterator iter = map.keySet().iterator();
+            if (iter.hasNext()) {
+                key = iter.next();
+            }
+            map.remove(key);
+            errln("Set should throw UnsupportedOperationException.");
+        }
+        catch(UnsupportedOperationException e) {
+            System.out.print("");
+        }
+
+        try {
+            map.putAll(map);
+            errln("putAll should throw UnsupportedOperationException.");
+        }
+        catch(UnsupportedOperationException e) {
+            System.out.print("");
+        }
+
+        try {
+            map.clear();
+            errln("clear should throw UnsupportedOperationException.");
+        }
+        catch(UnsupportedOperationException e) {
+            System.out.print("");
+        }
+
+        if (!originalMap.equals(map)) {
+            errln("Modifiers changed map.");
+        }
+    }
+
+    /**
+     * Ensure that map.addAttributes(addMap) is equivalent to calling
+     * map.add on all of addMap's entries.
+     */
+    void _testUnionWith(AttributeMap map, AttributeMap addMap) {
+
+        AttributeMap lhs = map.addAttributes(addMap);
+
+        AttributeMap rhs = map;
+
+        Enumeration iter = addMap.getKeySet().elements();
+        while (iter.hasMoreElements()) {
+            Object attr = iter.nextElement();
+            Object value = addMap.get(attr);
+            rhs = rhs.addAttribute(attr, value);
+        }
+
+        if (!equalMaps(lhs, rhs)) {
+            errln("Maps are not equal.");
+        }
+    }
+
+    /**
+     * Ensure that map.removeAttributes(remove) is equivalent to calling
+     * map.removeAttribute on remove's elements.
+     */
+    void _testRemoveAttributes(AttributeMap map, AttributeSet remove) {
+
+        AttributeMap lhs = map.removeAttributes(remove);
+
+        AttributeMap rhs = map;
+
+        Enumeration iter = remove.elements();
+        while (iter.hasMoreElements()) {
+            Object attr = iter.nextElement();
+            rhs = rhs.removeAttribute(attr);
+        }
+
+        if (!equalMaps(lhs, rhs)) {
+            errln("Maps are not equal.");
+        }
+    }
+
+    /**
+     * Ensure that map.intersectWith(intersect) is equivalent to
+     * map.removeAttributes(map.keySet() - intersect);
+     */
+    void _testIntersectWith(AttributeMap map, AttributeSet intersect) {
+
+        AttributeMap lhs = map.intersectWith(intersect);
+
+        AttributeSet keySet = map.getKeySet();
+        AttributeSet removeSet = keySet.subtract(intersect);
+        AttributeMap rhs = map.removeAttributes(removeSet);
+
+        if (!equalMaps(lhs, rhs)) {
+            map.intersectWith(intersect);
+            logln("intersect: " + intersect);
+            logln("keySet: " + keySet);
+            logln("removeSet: " + removeSet);
+            logln("map: " + map);
+            logln("lhs: " + lhs);
+            logln("rhs: " + rhs);
+            errln("Maps are not equal.");
+        }
+    }
+
+    /**
+     * Ensure that:
+     *    map, map.keySet(), and map.entrySet() are the same size;
+     *    map.containsKey() is true for every key in keySet();
+     *    map.containsValue() is true for every value in values;
+     *    every entry key is in keySet, every entry value is in map.values();
+     *    map.get() is consistent with entry's key, value;
+     *    sum of hashcodes of entries equals map.hashCode().
+     */
+    void _testViews(AttributeMap map) {
+
+        AttributeSet keySet = map.getKeySet();
+
+        Enumeration keyIter = keySet.elements();
+        while (keyIter.hasMoreElements()) {
+            if (!map.containsKey(keyIter.nextElement())) {
+                errln("keySet contains key not in map");
+            }
+        }
+
+        if (gJDK11) {
+            return;
+        }
+        
+        Collection values = map.values();
+        Set entrySet = map.entrySet();
+
+        if (keySet.size() != map.size() || entrySet.size() != map.size()) {
+            errln("Set sizes are inconsistent with map size.");
+        }
+
+        int hashCode = 0;
+
+        Iterator valueIter = values.iterator();
+        while (valueIter.hasNext()) {
+            if (!map.containsValue(valueIter.next())) {
+                errln("value set contains value not in map");
+            }
+        }
+
+        Iterator entryIter = entrySet.iterator();
+        while (entryIter.hasNext()) {
+
+            Entry entry = (Entry) entryIter.next();
+
+            Object key = entry.getKey();
+            if (!keySet.contains(key)) {
+                errln("Entry key is not in key set.");
+            }
+
+            Object value = map.get(entry.getKey());
+            if (!values.contains(value)) {
+                errln("Entry value is not in value set.");
+            }
+
+            if (map.get(key) != value) {
+                errln("map.get did not return entry value.");
+            }
+
+            hashCode += entry.hashCode();
+        }
+
+        if (hashCode != map.hashCode()) {
+            errln("map hashcode is not sum of entry hashcodes.");
+        }
+    }
+
+    /**
+     * Look for correct behavior in obvious cases.
+     */
+    void easyTests() {
+
+        AttributeMap map = new AttributeMap();
+        if (!map.equals(AttributeMap.EMPTY_ATTRIBUTE_MAP)) {
+            errln("Default-constructed map is not equal to empty map.");
+        }
+
+        map = map.addAttribute(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
+        Object otherMap = new AttributeMap(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
+        if (!map.equals(otherMap)) {
+            errln("Maps are inconsistent after map.add");
+        }
+
+        otherMap = map.addAttributes(map);
+        if (!equalMaps(map,otherMap)) {
+            errln("Maps are inconsistent after addAttributes");
+        }
+
+        map = map.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
+
+        if (map.size() != 2) {
+            errln("Map size is wrong.  map="+map);
+        }
+
+        if (equalMaps(map,otherMap)) {
+            errln("Maps should not be equal");
+        }
+
+        Object posture = new Float(0);
+        map = map.addAttribute(TextAttribute.POSTURE, posture);
+
+        if (map.size() != 2) {
+            errln("Map size is wrong");
+        }
+
+        if (!map.get(TextAttribute.POSTURE).equals(posture)) {
+            errln("Map element is wrong");
+        }
+
+        map = map.removeAttribute(TextAttribute.UNDERLINE);
+
+        if (map.size() != 1) {
+            errln("Map size is wrong");
+        }
+
+        if (map.get(TextAttribute.UNDERLINE) != null) {
+            errln("Map should not have element");
+        }
+
+        // map has POSTURE_REGULAR.  If we addAttributes a map with
+        // POSTURE_ITALIC the new map should have POSTURE_ITALIC
+
+        map = map.addAttributes(new AttributeMap(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE));
+        if (map.get(TextAttribute.POSTURE) != TextAttribute.POSTURE_OBLIQUE) {
+            errln("Map element is wrong");
+        }
+
+        _testModifiers(map);
+        _testViews(map);
+
+        Enumeration mapIter = maps.elements();
+        while (mapIter.hasMoreElements()) {
+            AttributeMap testMap = (AttributeMap) mapIter.nextElement();
+            Object newValue = new Object();
+            AttributeMap newMap = testMap.addAttribute(attributes[0], newValue);
+            if (newMap.get(attributes[0]) != newValue) {
+                errln("Did not get expected value back.  map=" + map);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestAttributeSet.java b/src/com/ibm/richtext/test/unit/TestAttributeSet.java
new file mode 100755
index 0000000..d095fb7
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestAttributeSet.java
@@ -0,0 +1,91 @@
+/*
+ * @(#)$RCSfile: TestAttributeSet.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:40 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import java.util.Enumeration;
+
+public class TestAttributeSet extends TestFmwk {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    public static void main(String[] args) throws Exception {
+
+        new TestAttributeSet().run(args);
+    }
+
+    public void test() {
+
+        final Object elem1 = new Object();
+        final Object elem2 = new Float(4);
+        final Object elem3 = "String";
+        final Object elem4 = Boolean.FALSE;
+
+        AttributeSet set1 = new AttributeSet(new Object[] {elem1, elem2, elem3});
+        if (set1.size() != 3) {
+            errln("Size is wrong.");
+        }
+
+        if (set1.contains(elem4)){
+            errln("Set contents are wrong.");
+        }
+
+        if (!set1.contains(elem1)) {
+            errln("Set contents are wrong.");
+        }
+
+        AttributeSet set2 = new AttributeSet(elem4);
+
+        if (set2.size() != 1) {
+            errln("Size is wrong.");
+        }
+
+        if (!set2.contains(elem4)){
+            errln("Set contents are wrong.");
+        }
+
+        if (set2.contains(elem1)) {
+            errln("Set contents are wrong.");
+        }
+
+        Enumeration iter = set2.elements();
+        if (!iter.nextElement().equals(elem4)) {
+            errln("Invalid object in iterator.");
+        }
+
+        AttributeSet union = set2.unionWith(set1);
+        if (!set1.unionWith(set2).equals(union)) {
+            errln("unionWith is not commutative.");
+        }
+
+        if (!union.contains(elem1) || !union.contains(elem4)) {
+            errln("Set contents are wrong.");
+        }
+
+        if (!set1.addElement(elem4).equals(union)) {
+            errln("addElement is wrong.");
+        }
+
+        if (!union.intersectWith(set1).equals(set1)) {
+            errln("intersectWith is wrong.");
+        }
+
+        if (!union.subtract(set1).equals(set2)) {
+            errln("subtract is wrong.");
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestFormatter.java b/src/com/ibm/richtext/test/unit/TestFormatter.java
new file mode 100755
index 0000000..f520212
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestFormatter.java
@@ -0,0 +1,250 @@
+/*
+ * @(#)$RCSfile: TestFormatter.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:40 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StandardTabRuler;
+import com.ibm.richtext.styledtext.StyledText;
+
+import com.ibm.richtext.textformat.TextOffset;
+import com.ibm.richtext.textformat.MFormatter;
+
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Toolkit;
+import java.awt.image.BufferedImage;
+
+import java.util.Hashtable;
+
+public final class TestFormatter extends TestFmwk {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) throws Exception {
+
+        new TestFormatter().run(args);
+    }
+
+    private static final Point ORIGIN = new Point(0, 0);
+
+    private static final AttributeMap DEFAULTS;
+    static {
+        final Float floatZero = new Float(0.0f);
+
+        Hashtable defaults = new Hashtable();
+        defaults.put(TextAttribute.FAMILY, "Serif");
+        defaults.put(TextAttribute.WEIGHT, new Float(1.0f));
+        defaults.put(TextAttribute.POSTURE, floatZero);
+        defaults.put(TextAttribute.SIZE, new Float(18.0f));
+        defaults.put(TextAttribute.SUPERSCRIPT, new Integer(0));
+        defaults.put(TextAttribute.FOREGROUND, Color.black);
+        defaults.put(TextAttribute.UNDERLINE, new Integer(-1));
+        defaults.put(TextAttribute.STRIKETHROUGH, Boolean.FALSE);
+
+        defaults.put(TextAttribute.EXTRA_LINE_SPACING, floatZero);
+        defaults.put(TextAttribute.FIRST_LINE_INDENT, floatZero);
+        defaults.put(TextAttribute.MIN_LINE_SPACING, floatZero);
+        defaults.put(TextAttribute.LINE_FLUSH, TextAttribute.FLUSH_LEADING);
+        defaults.put(TextAttribute.LEADING_MARGIN, floatZero);
+        defaults.put(TextAttribute.TRAILING_MARGIN, floatZero);
+        defaults.put(TextAttribute.TAB_RULER, new StandardTabRuler());
+
+        DEFAULTS = new AttributeMap(defaults);
+    }
+    
+    // arg to testLineExceptions
+    private static final int UNKNOWN = -1;
+
+    private Graphics fGraphics;
+
+    public TestFormatter() {
+
+        fGraphics = new BufferedImage(100, 100, BufferedImage.TYPE_3BYTE_BGR).getGraphics();
+        
+        //JDK 1.1:
+        //Frame f = new Frame();
+        //f.show();
+        //fGraphics = f.getGraphics();
+    }
+
+    private String fiveLines = "a\nb\nc\nd\ne";
+    private String twelveLines = fiveLines + "\n" + fiveLines + "\nf\n";
+    AttributeMap PLAIN = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+
+    public void test() {
+
+        MConstText text = new StyledText(fiveLines, PLAIN);
+        _testLineExceptions(makeFormatter(text, 100, true), 5);
+        _testLineAccess(makeFormatter(text, 100, true), 5);
+
+        text = new StyledText(twelveLines, PLAIN);
+        _testLineExceptions(makeFormatter(text, 3, false), 12);
+        _testLineAccess(makeFormatter(text, 100, true), 12);
+
+        _testWithModification();
+    }
+
+    private void _testWithModification() {
+
+        MText text = new StyledText(fiveLines, PLAIN);
+        MFormatter formatter = makeFormatter(text, 100, true);
+        Rectangle viewRect = new Rectangle(0, 0, 100, Integer.MAX_VALUE);
+
+        formatter.stopBackgroundFormatting();
+        text.append(new StyledText("\n", PLAIN));
+        formatter.updateFormat(text.length()-1, 1, viewRect, ORIGIN);
+
+        _testLineAccess(formatter, 6);
+
+        formatter.stopBackgroundFormatting();
+        text.append(new StyledText("ad", PLAIN));
+        formatter.updateFormat(text.length()-2, 2, viewRect, ORIGIN);
+        _testLineAccess(formatter, 6);
+        _testLineExceptions(formatter, 6);
+
+        formatter.stopBackgroundFormatting();
+        text.remove(0, 1);
+        formatter.updateFormat(0, 0, viewRect, ORIGIN);
+        _testLineAccess(formatter, 6);
+        _testLineExceptions(formatter, 6);
+    }
+
+
+    private MFormatter makeFormatter(MConstText text,
+                                     int lineBound,
+                                     boolean wrap) {
+
+        return MFormatter.createFormatter(text, 
+                                          DEFAULTS,
+                                          lineBound,
+                                          wrap,
+                                          fGraphics);
+    }
+
+    private void _testLineExceptions(MFormatter formatter,
+                                    int numLines) {
+
+        if (numLines == UNKNOWN) {
+            numLines = formatter.getLineCount();
+        }
+
+        boolean caught = false;
+
+        try {
+            formatter.lineRangeLow(numLines);
+        }
+        catch(IllegalArgumentException e) {
+            caught = true;
+        }
+
+        if (!caught) {
+            errln("Didn't get exception");
+        }
+        caught = false;
+
+        try {
+            formatter.lineRangeLimit(numLines);
+        }
+        catch(IllegalArgumentException e) {
+            caught = true;
+        }
+
+        if (!caught) {
+            errln("Didn't get exception");
+        }
+        caught = false;
+
+        try {
+            formatter.lineGraphicStart(numLines+1);
+        }
+        catch(IllegalArgumentException e) {
+            caught = true;
+        }
+
+        if (!caught) {
+            errln("Didn't get exception");
+        }
+        caught = false;
+    }
+
+    private void _testLineAccess(MFormatter formatter,
+                                 int numLines) {
+
+        if (numLines == UNKNOWN) {
+            numLines = formatter.getLineCount();
+        }
+
+        if (formatter.lineGraphicStart(0) != 0) {
+            errln("Line 0 doesn't start at height 0");
+        }
+        if (formatter.lineRangeLow(0) != 0) {
+            errln("Line 0 doesn't start at character 0");
+        }
+
+        int lastLimit = formatter.lineRangeLimit(0);
+        final int lineBound = formatter.lineBound();
+        int[] hitX = new int[] { -1, 1, lineBound + 2 };
+
+        TextOffset offset = new TextOffset();
+
+        for (int i=1; i < numLines; i++) {
+
+            int height = formatter.lineGraphicStart(i);
+            if (lastLimit != formatter.lineRangeLow(i)) {
+                errln("lastLine limit is not current line start");
+            }
+            int limit = formatter.lineRangeLimit(i);
+
+            if (limit < lastLimit || (limit == lastLimit && i != numLines-1)) {
+                errln("line has negative or 0 length");
+            }
+
+            int nextHeight = formatter.lineGraphicStart(i+1);
+            if (nextHeight <= height) {
+                errln("0-height line");
+            }
+            int incAmount = Math.max((nextHeight-height)/4, 1);
+            for (int hitY = height; hitY < nextHeight; hitY += incAmount) {
+
+                if (formatter.lineAtHeight(hitY) != i) {
+                    errln("lineAtHeight is wrong");
+                }
+
+                for (int j=0; j < hitX.length; j++) {
+                    offset = formatter.pointToTextOffset(offset,
+                                        hitX[j], hitY, ORIGIN, null, false);
+                    if (offset.fOffset < lastLimit || offset.fOffset > limit) {
+                        errln("Inconsistent offset from pointToTextOffset");
+                    }
+                    //if (formatter.lineContaining(offset) != i) {
+                    //    int debug = formatter.lineContaining(offset);
+                    //    errln("lineContaining is incorrect");
+                    //}
+                }
+            }
+
+            lastLimit = limit;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestMText.java b/src/com/ibm/richtext/test/unit/TestMText.java
new file mode 100755
index 0000000..e91bff8
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestMText.java
@@ -0,0 +1,721 @@
+/*
+ * @(#)$RCSfile: TestMText.java,v $ $Revision: 1.4 $ $Date: 2002/02/16 03:06:40 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import java.text.CharacterIterator;
+import java.util.Random;
+
+import java.io.*;
+
+public class TestMText extends TestFmwk {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) throws Exception {
+
+        new TestMText().run(args);
+    }
+    
+    private static final int TEST_ITERATIONS = 5000;
+    private static final int STYLE_TEST_ITERATIONS = 5000;
+    private static final long RAND_SEED = 598436;
+
+    private static final int NOT_IN_MONKEY_TEST = -5000;
+    private int testIteration = NOT_IN_MONKEY_TEST;
+    private int theCase = NOT_IN_MONKEY_TEST;
+    
+    private static StyleModifier createMinusModifier(final Object attr) {
+        return new StyleModifier() {
+            public AttributeMap modifyStyle(AttributeMap style) {
+                return style.removeAttribute(attr);
+            }
+        };
+    }
+
+    public void test() {
+    
+        simpleTest();
+        styleTest();
+        monkeyTest(true);
+    }
+    
+    public void simpleTest() {
+
+        AttributeMap boldStyle = new AttributeMap(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
+        AttributeMap italicStyle = new AttributeMap(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
+
+        MConstText allBold = new StyledText("bbbbb", boldStyle);
+        MConstText allItalic = new StyledText("iii", italicStyle);
+        MConstText plain = new StyledText("pppppp", AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+        {
+            MText buf = new StyledText();
+            int ts = buf.getTimeStamp();
+            buf.append(allBold);
+            buf.append(allItalic);
+
+            if (ts == buf.getTimeStamp()) {
+                errln("Time stamp not incremented");
+            }
+
+            // should be bbbbbiii now
+
+            if (buf.length() != allBold.length() + allItalic.length()) {
+                errln("Length is wrong.");
+            }
+
+            for (int i=0; i < buf.length(); i++) {
+
+                char rightChar;
+                AttributeMap rightStyle;
+
+                if (i < allBold.length()) {
+                    rightChar = allBold.at(0);
+                    rightStyle = boldStyle;
+                }
+                else {
+                    rightChar = allItalic.at(0);
+                    rightStyle = italicStyle;
+                }
+
+                if (buf.at(i) != rightChar) {
+                    errln("Character is wrong.");
+                }
+                if (!buf.characterStyleAt(i).equals(rightStyle)) {
+                    errln("Style is wrong.");
+                }
+            }
+
+            int pos = 0;
+
+            if (!buf.characterStyleAt(pos).equals(boldStyle)) {
+                errln("First style is wrong.");
+            }
+            if (buf.characterStyleLimit(pos) != allBold.length()) {
+                errln("Run length is wrong.");
+            }
+
+            pos = allBold.length();
+
+            if (!buf.characterStyleAt(pos).equals(italicStyle)) {
+                errln("Second style is wrong.");
+            }
+            if (buf.characterStyleLimit(pos) != buf.length()) {
+                errln("Run length is wrong.");
+            }
+
+            {
+                buf.resetDamagedRange();
+                int oldLength = buf.length();
+                buf.replace(buf.length(), buf.length(), allBold, 0, allBold.length());
+                // bbbbbiiibbbbb
+
+                if (buf.damagedRangeStart() != oldLength) {
+                    errln("Damaged range start is incorrect");
+                }
+                if (buf.damagedRangeLimit() != buf.length()) {
+                    errln("Damaged range limit is incorrect");
+                }
+            }
+
+            int start = allBold.length();
+            int limit = start + allItalic.length();
+            buf.remove(start, limit);
+            // bbbbbbbbbb
+
+            if (buf.length() != 2 * allBold.length()) {
+                errln("Text should be twice the length of bold text.");
+            }
+
+            pos = buf.length() / 2;
+            if (buf.characterStyleStart(pos) != 0 ||
+                            buf.characterStyleLimit(pos) != buf.length()) {
+                errln("Run range is wrong.");
+            }
+            if (!buf.characterStyleAt(pos).equals(boldStyle)) {
+                errln("Run style is wrong.");
+            }
+
+            ts = buf.getTimeStamp();
+            CharacterIterator cIter = buf.createCharacterIterator();
+            for (char ch = cIter.first(); ch != cIter.DONE; ch = cIter.next()) {
+                if (ch != allBold.at(0)) {
+                    errln("Character is wrong.");
+                }
+            }
+
+            if (ts != buf.getTimeStamp()) {
+                errln("Time stamp should not have changed");
+            }
+
+            buf.replace(0, 1, plain, 0, plain.length());
+
+            if (ts == buf.getTimeStamp()) {
+                errln("Time stamp not incremented");
+            }
+
+            // ppppppbbbbbbbbb
+            buf.replace(plain.length(), buf.length(), allItalic, 0, allItalic.length());
+            // ppppppiii
+
+            if (buf.length() != allItalic.length()+plain.length()) {
+                errln("Length is wrong.");
+            }
+
+            pos = 0;
+            if (buf.characterStyleLimit(pos) != plain.length()) {
+                errln("Run limit is wrong.");
+            }
+
+            pos = plain.length();
+            if (buf.characterStyleLimit(pos) != buf.length()) {
+                errln("Run limit is wrong.");
+            }
+
+            buf.replace(plain.length(), plain.length(), allBold, 0, allBold.length());
+            // ppppppbbbbbiii
+
+            AttributeMap st = buf.characterStyleAt(1);
+            if (!st.equals(AttributeMap.EMPTY_ATTRIBUTE_MAP)) {
+                errln("Style is wrong.");
+            }
+            if (buf.characterStyleStart(1) != 0 || buf.characterStyleLimit(1) != plain.length()) {
+                errln("Style start is wrong.");
+            }
+
+            st = buf.characterStyleAt(buf.length() - 1);
+            if (!st.equals(italicStyle)) {
+                errln("Style is wrong.");
+            }
+            if (buf.characterStyleStart(buf.length() - 1) != plain.length()+allBold.length()) {
+                errln("Style start is wrong.");
+            }
+
+            if (buf.characterStyleLimit(buf.length() - 1) != buf.length()) {
+                errln("Style limit is wrong.");
+            }
+        }
+    }
+
+    private static int randInt(Random rand, int limit) {
+
+        return randInt(rand, 0, limit);
+    }
+
+    private static int randInt(Random rand, int start, int limit) {
+
+        if (start > limit) {
+            throw new IllegalArgumentException("Range length is negative.");
+        }
+        else if (start == limit) {
+            return start;
+        }
+
+        return start + (Math.abs(rand.nextInt())%(limit-start)) ;
+    }
+
+    public void styleTest() {
+
+        MText text = new StyledText("0123456789", AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+        AttributeMap[] styles = new AttributeMap[text.length()];
+        for (int i=0; i < styles.length; i++) {
+            styles[i] = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+        }
+        AttributeMap[] oldStyles = new AttributeMap[styles.length];
+        System.arraycopy(styles, 0, oldStyles, 0, styles.length);
+
+        AttributeMap bigStyle = new AttributeMap(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON).
+                                                    addAttribute(TextAttribute.SIZE, new Float(23.0f));
+
+        StyleModifier[] modifiers = {
+            StyleModifier.createReplaceModifier(new AttributeMap(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD)),
+            StyleModifier.createAddModifier(new AttributeMap(TextAttribute.WEIGHT, new Float(1.0f))),
+            createMinusModifier(TextAttribute.WEIGHT),
+
+            StyleModifier.createAddModifier(new AttributeMap(TextAttribute.POSTURE, new Float(0.0f))),
+            StyleModifier.createReplaceModifier(new AttributeMap(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE)),
+            createMinusModifier(TextAttribute.POSTURE),
+
+            StyleModifier.createAddModifier(bigStyle),
+            StyleModifier.createReplaceModifier(bigStyle),
+            createMinusModifier(bigStyle.getKeySet())
+        };
+
+        Random rand = new Random(RAND_SEED);
+        final int stopAt = 4;
+
+        for (int testIteration=0; testIteration < STYLE_TEST_ITERATIONS + 1; testIteration++) {
+
+            System.arraycopy(styles, 0, oldStyles, 0, styles.length);
+
+            int startingAt = Integer.MAX_VALUE;
+            int endingAt = Integer.MIN_VALUE;
+            int oldTs = text.getTimeStamp();
+
+            // hack way to do an invariant check before starting...
+            if (testIteration != 0) {
+                // modify styles
+                text.resetDamagedRange();
+                startingAt = randInt(rand, styles.length+1);
+                endingAt = randInt(rand, startingAt, styles.length+1);
+                StyleModifier modifier = modifiers[randInt(rand, modifiers.length)];
+
+                if (testIteration == stopAt) {
+                    testIteration = stopAt;
+                }
+                text.modifyCharacterStyles(startingAt, endingAt, modifier);
+
+                for (int j=startingAt; j < endingAt; j++) {
+                    styles[j] = modifier.modifyStyle(styles[j]);
+                }
+            }
+
+            // check invariants
+            AttributeMap oldStyle = null;
+            int textLength = text.length();
+            for (int runStart = 0; runStart < textLength;) {
+
+                AttributeMap currentStyle = text.characterStyleAt(runStart);
+                int runLimit = text.characterStyleLimit(runStart);
+                if (runStart >= runLimit) {
+                    errln("Run length is not positive");
+                }
+                if (currentStyle.equals(oldStyle)) {
+                    errln("Styles didn't merge");
+                }
+
+                for (int pos=runStart; pos < runLimit; pos++) {
+                    AttributeMap charStyleAtPos = text.characterStyleAt(pos);
+                    if (currentStyle != charStyleAtPos) {
+                        errln("Iterator style is not equal to text style at " + pos + ".");
+                    }
+                    AttributeMap expected = styles[pos];
+                    if (!currentStyle.equals(expected)) {
+                        errln("Iterator style doesn't match expected style at " + pos + ".");
+                    }
+                    if (!(text.characterStyleStart(pos) == runStart) ||
+                            !(text.characterStyleLimit(pos) == runLimit)) {
+                        errln("style run start / limit is not consistent");
+                    }
+                }
+                runStart = runLimit;
+            }
+            if (textLength > 0) {
+                if (text.characterStyleAt(textLength) !=
+                            text.characterStyleAt(textLength-1)) {
+                    errln("Character styles at end aren't the same");
+                }
+            }
+
+            // check damaged range:
+            int damageStart = Integer.MAX_VALUE;
+            int damageLimit = Integer.MIN_VALUE;
+            for (int i=0; i < textLength; i++) {
+                if (!styles[i].equals(oldStyles[i])) {
+                    damageStart = Math.min(i, damageStart);
+                    damageLimit = Math.max(i+1, damageLimit);
+                }
+            }
+            if (damageStart != text.damagedRangeStart() ||
+                            damageLimit != text.damagedRangeLimit()) {
+                logln("Test iteration: " + testIteration);
+                logln("startingAt: " + startingAt + ";  endingAt: " + endingAt);
+                logln("damageStart: " + damageStart + ";  damageLimit: " + damageLimit);
+                logln("text.rangeStart: " + text.damagedRangeStart() +
+                                   "text.rangeLimit: " + text.damagedRangeLimit());
+                errln("Damage range start or limit is not expected value");
+            }
+
+            if ((damageLimit == Integer.MIN_VALUE) != (oldTs == text.getTimeStamp())) {
+
+                errln("timeStamp is incorrect");
+            }
+        }
+    }
+
+    public void err(String message) {
+    
+        if (testIteration != NOT_IN_MONKEY_TEST) {
+            message = "testIteration="+testIteration+"; testCase="+theCase+message;
+        }
+        super.err(message);
+    }
+    
+    /**
+    * Perform a random series of operations on an MText and
+    * check the result of each operation against a set of invariants.
+    */
+    public void monkeyTest(boolean streaming) {
+
+        /*
+            You can add any operation to the switch statement provided it
+            preserves the following invariants:
+            - The String plainText contains the same text as the StyledStringBuffer.
+              Obviously, for the test to be meaningful plainText must be computed
+              independently of the buffer (ie don't write:  plainText = buf.getStyledString().toString()).
+            - Every 'b' is bold, every 'i' is italic, every 'p' is plain, and
+              no other characters appear in the text.
+        */
+
+        AttributeMap boldAttrs = new AttributeMap(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
+        AttributeMap italicAttrs = new AttributeMap(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
+        AttributeMap emptyAttrs = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+
+        final String bold1Str_getString = "b";
+        MConstText bold1Str = new StyledText(bold1Str_getString, boldAttrs);
+
+        final String italic1Str_getString = "i";
+        MConstText italic1Str = new StyledText(italic1Str_getString, italicAttrs);
+
+        final String plain1Str_getString = "p";
+        MConstText plain1Str = new StyledText(plain1Str_getString, emptyAttrs);
+
+        StyledText temp = new StyledText();
+        temp.append(bold1Str);
+        temp.append(italic1Str);
+        final String boldItalicStr_getString = bold1Str_getString.concat(italic1Str_getString);
+        MConstText boldItalicStr = temp;
+
+        temp = new StyledText();
+        temp.append(bold1Str);
+        temp.append(bold1Str);
+        temp.append(bold1Str);
+        final String bold3Str_getString = "bbb";
+        MConstText bold3Str = temp;
+
+        MText buf = new StyledText();
+        String plainText = new String();
+        //int testIteration=0; - now instance variables so errln can report it
+        //int theCase=0;
+
+        final int NUM_CASES = 14;
+        boolean[] casesExecuted = new boolean[NUM_CASES];
+        final int stopAt = -1;
+        Random rand = new Random(RAND_SEED);
+
+        final String ALWAYS_DIFFERENT = "\uFEFF";
+
+            for (testIteration=0; testIteration < TEST_ITERATIONS; testIteration++) {
+
+                theCase = randInt(rand, NUM_CASES);
+
+                casesExecuted[theCase] = true;
+
+                if (testIteration == stopAt) {
+                    testIteration = stopAt;  // Convenient place to put breakpoint
+                }
+
+                int timeStamp = buf.getTimeStamp();
+                String oldPlainText = plainText;
+                if (oldPlainText == null) {
+                    errln("oldPlainText is null!");
+                }
+
+                switch (theCase) {
+
+                    case 0:
+                        // create new string; replace chars at start with different style
+                        buf = new StyledText();
+                        buf.append(bold3Str);
+                        buf.replace(0, 1, italic1Str, 0, italic1Str.length());
+                        buf.replace(0, 0, italic1Str, 0, italic1Str.length());
+
+                        plainText = bold3Str_getString.substring(1, bold3Str.length());
+                        plainText = italic1Str_getString.concat(plainText);
+                        plainText = italic1Str_getString.concat(plainText);
+                        oldPlainText = null;
+                        break;
+
+                    case 1:
+                        // delete the last character from the string
+                        if (buf.length() == 0) {
+                            buf.replace(0, 0, italic1Str, 0, italic1Str.length());
+                            plainText = italic1Str_getString;
+                            oldPlainText = ALWAYS_DIFFERENT;
+                        }
+                        buf.remove(buf.length()-1, buf.length());
+                        plainText = plainText.substring(0, plainText.length()-1);
+                        break;
+
+                    case 2:
+                        // replace some of the buffer with boldItalicStr
+                        int rStart = randInt(rand, buf.length()+1);
+                        int rStop = randInt(rand, rStart, buf.length()+1);
+                        buf.replace(rStart, rStop, boldItalicStr);
+                        {
+                            String newString = (rStart>0)? plainText.substring(0, rStart) : new String();
+                            newString = newString.concat(boldItalicStr_getString);
+                            if (rStop < plainText.length())
+                                newString = newString.concat(plainText.substring(rStop, plainText.length()));
+                            oldPlainText = ALWAYS_DIFFERENT;
+                            plainText = newString;
+                        }
+                        break;
+
+                    case 3:
+                        // repeatedly insert strings into the center of the buffer
+                        {
+                            int insPos = buf.length() / 2;
+                            String prefix = plainText.substring(0, insPos);
+                            String suffix = plainText.substring(insPos, plainText.length());
+                            String middle = new String();
+                            for (int ii=0; ii<4; ii++) {
+                                MConstText which = (ii%2==0)? boldItalicStr : bold3Str;
+                                String whichString = (ii%2==0)? boldItalicStr_getString : bold3Str_getString;
+                                int tempPos = insPos+middle.length();
+                                buf.insert(tempPos, which);
+                                middle = middle.concat(whichString);
+                            }
+                            plainText = prefix.concat(middle).concat(suffix);
+                            oldPlainText = ALWAYS_DIFFERENT;
+                        }
+                        break;
+
+                    case 4:
+                    // insert bold1Str at end
+                        buf.append(bold1Str);
+                        plainText = plainText.concat(bold1Str_getString);
+                        break;
+
+                    case 5:
+                    // delete a character from the string
+                        if (buf.length() > 0) {
+                            int delPos = randInt(rand, buf.length()-1);
+                            buf.remove(delPos, delPos+1);
+                            plainText = plainText.substring(0, delPos).concat(plainText.substring(delPos+1));
+                        }
+                        else {
+                            buf.replace(0, 0, plain1Str, 0, plain1Str.length());
+                            plainText = plain1Str_getString;
+                        }
+                        break;
+
+                    case 6:
+                    // replace the contents of the buffer (except the first character) with itself
+                        {
+                            int start = buf.length() > 1? 1 : 0;
+                            buf.replace(start, buf.length(), buf);
+                            plainText = plainText.substring(0, start).concat(plainText);
+                            if (buf.length() > 0) {
+                                oldPlainText = ALWAYS_DIFFERENT;
+                            }
+                        }
+                        break;
+
+                    case 7:
+                    // append the contents of the buffer to itself
+                        {
+                            MConstText content = buf;
+                            buf.insert(buf.length(), content);
+                            plainText = plainText.concat(plainText);
+                        }
+                        break;
+
+                    case 8:
+                    // replace the buffer with boldItalicStr+bold3Str
+                        {
+                            MText replacement = new StyledText();
+                            replacement.append(boldItalicStr);
+                            replacement.append(bold3Str);
+                            buf.replace(0, buf.length(), replacement, 0, replacement.length());
+                            plainText = boldItalicStr_getString.concat(bold3Str_getString);
+                            oldPlainText = ALWAYS_DIFFERENT;
+                        }
+                        break;
+
+                    case 9:
+                    // insert bold1Str at end - same as 4 but uses different API
+                        buf.replace(buf.length(),
+                                    buf.length(),
+                                    bold1Str_getString.toCharArray(),
+                                    0,
+                                    bold1Str_getString.length(),
+                                    boldAttrs);
+                        plainText = plainText.concat(bold1Str_getString);
+                        break;
+
+                    case 10:
+                    // remove all
+                        buf.remove();
+                        plainText = "";
+                        oldPlainText = ALWAYS_DIFFERENT;
+                        break;
+
+                    case 11:
+                    // remove all - different way
+                        buf.remove(0, buf.length());
+                        plainText = "";
+                        break;
+
+                    case 12:
+                        // insert 'i' at 3rd character (or last, if fewer than 3 chars)
+                        {
+                            int insPos = Math.min(buf.length(), 3);
+                            buf.replace(insPos, insPos, 'i', italicAttrs);
+                            plainText = (plainText.substring(0, insPos)).
+                                        concat(italic1Str_getString).
+                                        concat(plainText.substring(insPos));
+                        }
+                        break;
+
+                    case 13:
+                        if (streaming) {
+                            Throwable error = null;
+                            try {
+                                ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
+                                ObjectOutputStream objOut = new ObjectOutputStream(bytesOut);
+                                objOut.writeObject(buf);
+
+                                ByteArrayInputStream bytesIn =
+                                                new ByteArrayInputStream(bytesOut.toByteArray());
+                                ObjectInputStream objIn = new ObjectInputStream(bytesIn);
+                                buf = (MText) objIn.readObject();
+                                oldPlainText = null;
+                            }
+                            catch(IOException e) {
+                                error = e;
+                            }
+                            catch(ClassNotFoundException e) {
+                                error = e;
+                            }
+                            if (error != null) {
+                                error.printStackTrace();
+                                errln("Streaming problem: " + error);
+                            }
+                        }
+                        break;
+
+                    default:
+                        errln("Invalid case.");
+                }
+
+                // Check time stamp if oldPlainText != null.
+                // Time stamp should be different iff
+                // oldPlainText == plainText
+                if (oldPlainText != null) {
+                    if ((timeStamp==buf.getTimeStamp()) !=
+                                    oldPlainText.equals(plainText)) {
+                        logln("plainText hashCode: " + plainText.hashCode());
+                        logln("oldPlainText hashCode: " + oldPlainText.hashCode());
+                        errln("Time stamp is incorrect");
+                    }
+                }
+
+                // now check invariants:
+                if (plainText.length() != buf.length()) {
+                    errln("Lengths don't match");
+                }
+
+                for (int j=0; j < buf.length(); j++) {
+                    if (buf.at(j) != plainText.charAt(j)) {
+                        errln("Characters don't match.");
+                    }
+                }
+
+                int start;
+                for (start = 0; start < buf.length();) {
+
+                    if (start != buf.characterStyleStart(start)) {
+                        errln("style start is wrong");
+                    }
+                    int limit = buf.characterStyleLimit(start);
+                    if (start >= limit) {
+                        errln("start >= limit");
+                    }
+                    char current = plainText.charAt(start);
+
+                    AttributeMap comp = null;
+                    if (current == 'p') {
+                        comp = emptyAttrs;
+                    }
+                    else if (current == 'b') {
+                        comp = boldAttrs;
+                    }
+                    else if (current == 'i') {
+                        comp = italicAttrs;
+                    }
+                    else {
+                        errln("An invalid character snuck in!");
+                    }
+
+                    AttributeMap startStyle = buf.characterStyleAt(start);
+                    if (!comp.equals(startStyle)) {
+                        errln("Style is not expected style.");
+                    }
+
+                    for (int j = start; j < limit; j++) {
+                        if (plainText.charAt(j) != current) {
+                            errln("Character doesn't match style.");
+                        }
+                        if (buf.characterStyleAt(j) != startStyle) {
+                            errln("Incorrect style in run");
+                        }
+                    }
+
+                    if (limit < buf.length()) {
+                        if (plainText.charAt(limit) == current) {
+                            errln("Style run ends too soon.");
+                        }
+                    }
+                    start = limit;
+                }
+                if (start != buf.length()) {
+                    errln("Last limit is not buffer length.");
+                }
+
+                // won't try to compute and check damaged range;  however,
+                // if nonempty it should always be within text
+                int damageStart = buf.damagedRangeStart();
+                int damageLimit = buf.damagedRangeLimit();
+                if (damageStart == Integer.MAX_VALUE) {
+                    if (damageLimit != Integer.MIN_VALUE) {
+                        errln("Invalid empty interval");
+                    }
+                }
+                else {
+                    if (damageStart > damageLimit) {
+                        errln("Damage range inverted");
+                    }
+                    if (damageStart < 0 || damageLimit > buf.length()) {
+                        errln("Damage range endpoint out of bounds");
+                    }
+                }
+            }
+
+        testIteration = NOT_IN_MONKEY_TEST;
+        
+        boolean allCasesExecuted = true;
+        for (int index=0; index < NUM_CASES; index++) {
+            allCasesExecuted &= casesExecuted[index];
+            if (casesExecuted[index] == false) {
+                logln("Case " + index + " not executed.");
+            }
+        }
+        //if (allCasesExecuted) {
+        //    logln("All cases executed.");
+        //}
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestMTextStreaming.java b/src/com/ibm/richtext/test/unit/TestMTextStreaming.java
new file mode 100755
index 0000000..89bddbe
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestMTextStreaming.java
@@ -0,0 +1,162 @@
+/*
+ * @(#)$RCSfile: TestMTextStreaming.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:40 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import java.io.*;
+import java.awt.Color;
+
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StandardTabRuler;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+public class TestMTextStreaming extends TestFmwk {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    public static void main(String[] args) throws Exception {
+
+        new TestMTextStreaming().run(args);
+    }
+
+    public TestMTextStreaming() {
+    }
+
+    public void test() {
+
+        simpleTest();
+        allAttributesTest();
+    }
+
+    private void simpleTest() {
+
+        AttributeMap style = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+        MText text = new StyledText("Hello world!", style);
+
+        streamAndCompare(text);
+    }
+
+    private static class TestModifier extends StyleModifier {
+
+        private Object fKey;
+        private Object fValue;
+
+        public AttributeMap modifyStyle(AttributeMap style) {
+
+            return style.addAttribute(fKey, fValue);
+        }
+
+        TestModifier(Object key, Object value) {
+
+            fKey = key;
+            fValue = value;
+        }
+    }
+
+    private void allAttributesTest() {
+
+        AttributeMap style = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+        MText text = new StyledText("Hello world!", style);
+
+        int length = text.length();
+
+        final boolean CHARACTER = true;
+        final boolean PARAGRAPH = false;
+
+        addStyle(text, 0, length/2, TextAttribute.FAMILY, "Times", CHARACTER);
+        addStyle(text, length/2, length, TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD, CHARACTER);
+        addStyle(text, 0, length/2, TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE, CHARACTER);
+        addStyle(text, 0, length/2, TextAttribute.SIZE, new Float(13.7f), CHARACTER);
+        addStyle(text, length/2, length, TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUB, CHARACTER);
+        addStyle(text, 0, length/2, TextAttribute.FOREGROUND, Color.blue, CHARACTER);
+        addStyle(text, 0, length/2, TextAttribute.BACKGROUND, Color.red, CHARACTER);
+        addStyle(text, 0, length-1, TextAttribute.STRIKETHROUGH, Boolean.TRUE, CHARACTER);
+
+        addStyle(text, 0, length, TextAttribute.EXTRA_LINE_SPACING, new Float(4), PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.FIRST_LINE_INDENT, new Float(6), PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.MIN_LINE_SPACING, new Float(7), PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.LINE_FLUSH, TextAttribute.FLUSH_TRAILING, PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.LEADING_MARGIN, new Float(9), PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.TRAILING_MARGIN, new Float(9), PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.TAB_RULER, new StandardTabRuler(), PARAGRAPH);
+
+        streamAndCompare(text);
+    }
+
+    private static void addStyle(MText text,
+                                 int start,
+                                 int limit,
+                                 Object key,
+                                 Object value,
+                                 boolean character) {
+
+        StyleModifier modifier = new TestModifier(key, value);
+
+        if (character) {
+            text.modifyCharacterStyles(start, limit, modifier);
+        }
+        else {
+            text.modifyParagraphStyles(start, limit, modifier);
+        }
+    }
+
+    public void streamAndCompare(MText text) {
+
+        Throwable error = null;
+
+        try {
+            ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
+            ObjectOutputStream objOut = new ObjectOutputStream(bytesOut);
+            objOut.writeObject(text);
+
+            ByteArrayInputStream bytesIn =
+                            new ByteArrayInputStream(bytesOut.toByteArray());
+            ObjectInputStream objIn = new ObjectInputStream(bytesIn);
+            MText streamedText = (MText) objIn.readObject();
+            if (!isEqual(text, streamedText)) {
+                isEqual(text, streamedText);
+                errln("Streamed text is not equal");
+            }
+        }
+/*        catch(OptionalDataException e) {
+            error = e;
+        }
+        catch(StreamCorruptedException e) {
+            error = e;
+        }*/
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassNotFoundException e) {
+            error = e;
+        }
+
+        if (error != null) {
+            error.printStackTrace();
+            errln("Serialization failed.");
+        }
+    }
+
+    public static boolean isEqual(MText lhs, MText rhs) {
+
+        return lhs.equals(rhs);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestParagraphStyles.java b/src/com/ibm/richtext/test/unit/TestParagraphStyles.java
new file mode 100755
index 0000000..2335b41
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestParagraphStyles.java
@@ -0,0 +1,339 @@
+/*
+ * @(#)$RCSfile: TestParagraphStyles.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:41 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.styledtext.StyleModifier;
+import java.util.Random;
+
+public final class TestParagraphStyles extends TestFmwk {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    public static void main(String[] args) throws Exception {
+
+        new TestParagraphStyles().run(args);
+    }
+
+    private static final int RAND_SEED = 1234;
+    private static final int NUM_TESTS = 2500;
+
+    private static final boolean isParagraphBreak(char c) {
+
+        return c =='\u2029' || c == '\n';
+    }
+
+    private static final Object KEY = "KEY";
+    private static final AttributeMap PLAIN = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+    private static final AttributeMap A_STYLE = new AttributeMap(KEY, new Character('a'));
+    private static final StyleModifier A_MOD =
+                            StyleModifier.createReplaceModifier(A_STYLE);
+    private static final AttributeMap B_STYLE = new AttributeMap(KEY, new Character('b'));
+    private static final StyleModifier B_MOD =
+                            StyleModifier.createReplaceModifier(B_STYLE);
+    private static final AttributeMap C_STYLE = new AttributeMap(KEY, new Character('c'));
+    private static final StyleModifier C_MOD =
+                            StyleModifier.createReplaceModifier(C_STYLE);
+    private static final AttributeMap D_STYLE = new AttributeMap(KEY, new Character('d'));
+    private static final StyleModifier D_MOD =
+                            StyleModifier.createReplaceModifier(D_STYLE);
+    private static final AttributeMap E_STYLE = new AttributeMap(KEY, new Character('e'));
+    private static final StyleModifier E_MOD =
+                            StyleModifier.createReplaceModifier(E_STYLE);
+
+    public void test() {
+
+        easyTests();
+        randomTest();
+    }
+
+    private void easyTests() {
+
+        MText text = new StyledText("a\nb\nc\nd\n", PLAIN);
+        text.modifyParagraphStyles(0, text.length(), A_MOD);
+        verifyParagraphCount(text);
+
+        MText src = new StyledText("XXX\nYYY", PLAIN);
+        src.modifyParagraphStyles(0, src.length(), B_MOD);
+        verifyParagraphCount(src);
+
+        MText temp = text.extractWritable(0, text.length());
+        temp.append(src);
+        verifyParagraphCount(temp);
+        for (int i=0; i < text.length(); i++) {
+            if (!temp.paragraphStyleAt(i).equals(text.paragraphStyleAt(i))) {
+                errln("Paragraph styles are wrong");
+            }
+        }
+        for (int i=0; i < src.length(); i++) {
+            if (!temp.paragraphStyleAt(i+text.length()).equals(src.paragraphStyleAt(i))) {
+                errln("Paragraph styles are wrong");
+            }
+        }
+
+        temp = text.extractWritable(0, text.length());
+        temp.replace(0, 1, src, 0, src.length());
+        verifyParagraphCount(temp);
+        if (temp.paragraphLimit(0) != 4) {
+            errln("Paragraph limit is wrong");
+        }
+        if (!temp.paragraphStyleAt(0).equals(B_STYLE)) {
+            errln("First style is wrong");
+        }
+        if (!temp.paragraphStyleAt(4).equals(A_STYLE)) {
+            errln("Style after insert is wrong");
+        }
+
+        // test append
+        MConstText newSrc = src.extract(4, 7);
+        MText initC = new StyledText("cccccc", PLAIN);
+        initC.modifyParagraphStyles(0, initC.length(), C_MOD);
+        initC.append(newSrc);
+        // now initC should be one paragraph with style B
+        if (initC.paragraphLimit(0) != initC.length()) {
+            errln("Should only be one paragraph");
+        }
+        if (initC.paragraphStyleAt(0) != initC.paragraphStyleAt(initC.length())) {
+            errln("Two different paragraph styles");
+        }
+        if (!initC.paragraphStyleAt(initC.length()/2).equals(B_STYLE)) {
+            errln("Incorrect paragraph style");
+        }
+        
+        text = new StyledText("aaa\n", PLAIN);
+        text.modifyParagraphStyles(0, text.length(), A_MOD);
+        text.modifyParagraphStyles(text.length(), text.length(), B_MOD);
+        if (text.paragraphStyleAt(text.length()) != B_STYLE) {
+            errln("0-length paragraph at end has incorrect style");
+        }
+    }
+
+    private static int randInt(Random rand, int limit) {
+
+        return randInt(rand, 0, limit);
+    }
+
+    private static int randInt(Random rand, int start, int limit) {
+
+        if (start > limit) {
+            throw new IllegalArgumentException("Range is 0-length.");
+        }
+        else if (start == limit) {
+            return start;
+        }
+
+        return start + (Math.abs(rand.nextInt())%(limit-start)) ;
+    }
+
+    private void randomTest() {
+
+        MText noParagraph = new StyledText("zzzz", PLAIN);
+        noParagraph.modifyParagraphStyles(0, noParagraph.length(), A_MOD);
+        MText twoParagraphs = new StyledText("aaa\nbbb", PLAIN);
+        twoParagraphs.modifyParagraphStyles(0, twoParagraphs.paragraphLimit(0), B_MOD);
+        MText threeParagraphs = new StyledText("cc\ndd\nee", PLAIN);
+        threeParagraphs.modifyParagraphStyles(0, 3, C_MOD);
+        threeParagraphs.modifyParagraphStyles(3, 6, D_MOD);
+        threeParagraphs.modifyParagraphStyles(6, 8, E_MOD);
+        MText trailingP1 = new StyledText("hhhh\n", PLAIN);
+        trailingP1.modifyParagraphStyles(0, trailingP1.paragraphLimit(0), C_MOD);
+        MText trailingP2 = new StyledText("iii\n", PLAIN);
+        trailingP2.modifyParagraphStyles(0, 0, D_MOD);
+        trailingP2.modifyParagraphStyles(trailingP2.length(), trailingP2.length(), B_MOD);
+
+        if (!trailingP2.paragraphStyleAt(trailingP2.length()-1).equals(D_STYLE)) {
+            errln("Style incorrect in trailingP2");
+        }
+        if (!trailingP2.paragraphStyleAt(trailingP2.length()).equals(B_STYLE)) {
+            errln("Ending style incorrect in trailingP2");
+        }
+
+        MConstText[] tests = { noParagraph, twoParagraphs,
+                                    threeParagraphs, trailingP1, trailingP2 };
+
+        Random random = new Random(RAND_SEED);
+
+        int stopAt = 465;
+        int i = 0;
+        try {
+            for (i=0; i < NUM_TESTS; i++) {
+
+                int srcIndex = randInt(random, tests.length);
+                int targetIndex = randInt(random, tests.length);
+                MText target = new StyledText(tests[targetIndex]);
+                MConstText src = tests[srcIndex];
+
+                int srcStart = randInt(random, src.length());
+                int srcLimit = randInt(random, srcStart, src.length());
+                int start = randInt(random, target.length());
+                int limit = randInt(random, start, target.length());
+
+                if (i == stopAt) {
+                    stopAt = i;
+                }
+
+                insertAndCheck(src, srcStart, srcLimit, target, start, limit);
+            }
+        }
+        finally {
+            if (i < NUM_TESTS) {
+                logln("iteration=" + i);
+            }
+        }
+    }
+
+    private void insertAndCheck(MConstText src, int srcStart, int srcLimit,
+                                MText target, int start, int limit) {
+
+        // p-style after insertion
+        AttributeMap after;
+        if (limit == target.length() && srcLimit > srcStart) {
+            after = src.paragraphStyleAt(srcLimit);
+        }
+        else {
+            after = target.paragraphStyleAt(limit);
+        }
+
+        AttributeMap before;
+        boolean srcHasPBreak = false;
+        for (int i=srcStart; i < srcLimit; i++) {
+            if (isParagraphBreak(src.at(i))) {
+                srcHasPBreak = true;
+                break;
+            }
+        }
+
+        if (start > 0 && isParagraphBreak(target.at(start-1))) {
+            before = target.paragraphStyleAt(start-1);
+        }
+        else {
+            before = srcHasPBreak? src.paragraphStyleAt(srcStart) : after;
+        }
+        boolean stylePropogated = !before.equals(target.paragraphStyleAt(Math.max(0, start-1)));
+
+
+        target.resetDamagedRange();
+        target.replace(start, limit, src, srcStart, srcLimit);
+        final int damageLimit = (start==limit && srcStart==srcLimit)?
+                        Integer.MIN_VALUE : start + (srcLimit-srcStart);
+
+        if (target.damagedRangeLimit() != damageLimit) {
+            logln("limit: " + damageLimit + ";  target.limit: " +
+                                target.damagedRangeLimit());
+            errln("Damaged range limit is incorrect");
+        }
+
+        final int damageStart = (damageLimit==Integer.MIN_VALUE)? Integer.MAX_VALUE :
+                (stylePropogated? target.paragraphStart(Math.max(0, start-1)) : start);
+        if (target.damagedRangeStart() > damageStart) {
+            logln("start: " + damageStart + ";  target.start: " +
+                                target.damagedRangeStart());
+            errln("Damaged range start is incorrect");
+        }
+
+        verifyParagraphCount(target);
+
+        // check endpoints
+        if (!before.equals(target.paragraphStyleAt(Math.max(start-1, 0)))) {
+            errln("Incorrect paragraph style before modified range");
+        }
+
+        int lengthDelta = (srcLimit-srcStart) - (limit-start);
+        int indexAfterInsert = Math.min(target.length(), limit + lengthDelta);
+        if (!after.equals(target.paragraphStyleAt(indexAfterInsert))) {
+            errln("Incorrect paragraph style after modified range");
+        }
+
+        if (srcHasPBreak) {
+            int startP = target.paragraphLimit(start);
+            int limitOfTest = target.paragraphStart(indexAfterInsert);
+
+            int offset = start - srcStart;
+
+            while (startP < limitOfTest) {
+                int limitP = target.paragraphLimit(startP);
+                if (src.paragraphLimit(startP-offset) + offset != limitP) {
+                    errln("paragraph limits are not consistent");
+                }
+                if (!src.paragraphStyleAt(startP-offset)
+                                    .equals(target.paragraphStyleAt(startP))) {
+                    errln("paragraph styles are not consistent");
+                }
+                startP = limitP;
+            }
+        }
+        else {
+            for (int i=start; i < start+(srcLimit-srcStart); i++) {
+                if (!after.equals(target.paragraphStyleAt(i))) {
+                    errln("paragraph style changed unexpectedly");
+                }
+            }
+        }
+    }
+
+    private void verifyParagraphCount(MConstText text) {
+
+        int pCount = 0;
+        int textLength = text.length();
+
+        if (textLength == 0) {
+            pCount = 1;
+        }
+        else {
+            for (int s=0; s < textLength; s = text.paragraphLimit(s)) {
+                pCount++;
+            }
+            if (isParagraphBreak(text.at(textLength-1))) {
+                pCount++;
+            }
+        }
+
+        int sepCount = 0;
+        for (int i=0; i < textLength; i++) {
+            if (isParagraphBreak(text.at(i))) {
+                sepCount++;
+            }
+        }
+
+        if (sepCount + 1 != pCount) {
+            logln("sepCount=" + sepCount + ";  pCount=" + pCount);
+            errln("Paragraph count is not consistent with characters");
+        }
+    }
+
+    private void checkEndpoint(MConstText text) {
+
+        boolean emptyFinalParagraph;
+        int length = text.length();
+
+        if (length != 0) {
+            char ch = text.at(length-1);
+            emptyFinalParagraph = isParagraphBreak(ch);
+        }
+        else {
+            emptyFinalParagraph = true;
+        }
+
+        if ((text.paragraphStart(length) == length) != emptyFinalParagraph) {
+            errln("Final paragraph length is incorrect");
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textapps/AppCloser.java b/src/com/ibm/richtext/textapps/AppCloser.java
new file mode 100755
index 0000000..63d7a7e
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/AppCloser.java
@@ -0,0 +1,46 @@
+/*
+ * @(#)$RCSfile: AppCloser.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:48:51 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.Frame;
+import java.awt.Window;
+
+class AppCloser {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private int fCount = 0;
+
+    private WindowAdapter fAdapter = new WindowAdapter() {
+
+        public void windowClosing(WindowEvent e) {
+            --fCount;
+            if (fCount == 0) {
+                System.exit(0);
+            }
+            Window w = e.getWindow();
+            w.setVisible(false);
+            w.dispose();
+        }
+    };
+
+    public void listenToFrame(Frame frame) {
+
+        ++fCount;
+        frame.addWindowListener(fAdapter);
+    }
+}
diff --git a/src/com/ibm/richtext/textapps/BidiDemo.java b/src/com/ibm/richtext/textapps/BidiDemo.java
new file mode 100755
index 0000000..38bb8ea
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/BidiDemo.java
@@ -0,0 +1,88 @@
+/*
+ * @(#)$RCSfile: BidiDemo.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:41 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.awtui.TextFrame;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.Toolkit;
+
+import java.io.*;
+import java.net.URL;
+import java.util.ResourceBundle;
+import java.util.Date;
+
+public class BidiDemo {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final AppCloser fgListener = new AppCloser();
+
+    private static final String BUNDLE_NAME = "textapps.resources.Sample";
+    
+    public static void main(String[] args) {
+
+        String docName;
+        
+        if (args.length == 0) {
+            docName = "default";
+        }
+        else {
+            docName = args[0];
+        }
+        
+        openText(docName);
+    }
+
+    private static void openText(String docName) {
+
+        try {
+            ResourceBundle bundle = ResourceBundle.getBundle(BUNDLE_NAME);
+
+            Object document = bundle.getObject(docName+".sample");
+            MConstText text;
+            
+            if (document instanceof String) {
+                text = new StyledText((String)document, 
+                                      AttributeMap.EMPTY_ATTRIBUTE_MAP);
+            }
+            else {
+                URL url = (URL) document;
+                ObjectInputStream in = new ObjectInputStream(url.openStream());
+                text = (MConstText) in.readObject();
+            }
+            
+            String name = bundle.getString(docName+".name");
+            
+            makeFrame(text, name);
+        }
+        catch(Throwable t) {
+            t.printStackTrace();
+        }
+    }
+
+    private static void makeFrame(MConstText text, String title) {
+
+        TextFrame frame = new TextFrame(text, title, 
+                Toolkit.getDefaultToolkit().getSystemClipboard());
+        frame.setSize(550, 700);
+        frame.show();
+        fgListener.listenToFrame(frame);
+    }
+}
diff --git a/src/com/ibm/richtext/textapps/FileUtils.java b/src/com/ibm/richtext/textapps/FileUtils.java
new file mode 100755
index 0000000..0f78be8
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/FileUtils.java
@@ -0,0 +1,130 @@
+/*
+ * @(#)$RCSfile: FileUtils.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:48:51 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import java.awt.FileDialog;
+import java.awt.Frame;
+import java.io.*;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+
+public class FileUtils {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Present the user with a file dialog, and replace
+     * dest with the MText in the selected file, and return
+     * the file objct.  If any errors occur, return null and
+     * do not modify dest.
+     */
+    public static File userLoadMText(String title, MText dest, Frame owner) {
+
+        FileDialog dialog = new FileDialog(owner, title, FileDialog.LOAD);
+        dialog.show();
+        String fileStr = dialog.getFile();
+        String dirStr = dialog.getDirectory();
+
+        if (fileStr != null) {
+            File rval = new File(dirStr, fileStr);
+            MConstText src = loadMText(rval);
+            if (src != null) {
+                dest.replaceAll(src);
+                return rval;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Return the MText serialized in the given file.
+     * In case of an error return null.
+     */
+    public static MConstText loadMText(File file) {
+
+        Throwable error;
+
+        try {
+            FileInputStream inStream = new FileInputStream(file);
+            ObjectInputStream objStream = new ObjectInputStream(inStream);
+
+            MConstText text = (MConstText) objStream.readObject();
+            inStream.close();
+            return text;
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassNotFoundException e) {
+            error = e;
+        }
+        catch(ClassCastException e) {
+            error = e;
+        }
+
+        error.printStackTrace();
+        return null;
+    }
+
+    /**
+     * Prompt the user for the file if file is null.  Then save the
+     * text in the file, if any.
+     */
+    public static File userSaveMText(File file, String title, MConstText text, Frame owner) {
+
+        if (file == null) {
+
+            FileDialog dialog = new FileDialog(owner, title, FileDialog.SAVE);
+            dialog.show();
+            String fileStr = dialog.getFile();
+            String dirStr = dialog.getDirectory();
+
+            if (fileStr != null) {
+                file = new File(dirStr, fileStr);
+            }
+        }
+
+        if (file != null) {
+
+            saveMText(file, text);
+        }
+
+        return file;
+    }
+
+    public static void saveMText(File file, MConstText text) {
+
+        Throwable error;
+
+        try {
+            OutputStream outStream = new FileOutputStream(file);
+            ObjectOutputStream objStream = new ObjectOutputStream(outStream);
+
+            objStream.writeObject(text);
+            outStream.close();
+            return;
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassCastException e) {
+            error = e;
+        }
+
+        error.printStackTrace();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textapps/MTextToString.java b/src/com/ibm/richtext/textapps/MTextToString.java
new file mode 100755
index 0000000..552d770
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/MTextToString.java
@@ -0,0 +1,84 @@
+/*
+ * @(#)$RCSfile: MTextToString.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:48:51 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import java.io.*;
+
+public final class MTextToString {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) {
+
+
+        if (args.length != 2) {
+            usage();
+        }
+        else {
+            writeMTextAsString(args[0], args[1]);
+        }
+    }
+
+    private static void usage() {
+
+        System.out.println("Usage: MTextToString inFile outFile");
+        System.out.println("inFile must be a serialized MConstText");
+        System.out.println("On exit, outFile will be a serialized String ");
+        System.out.println("containing the characters in the text.");
+        System.out.println("inFile and outFile must not be the same.");
+        System.exit(1);
+    }
+
+    public static void writeMTextAsString(String inFile, String outFile) {
+
+        File file = new File(inFile);
+        MConstText text = FileUtils.loadMText(file);
+
+        if (text != null) {
+            char[] ch = new char[text.length()];
+            text.extractChars(0, ch.length, ch, 0);
+            String str = new String(ch);
+            writeString(str, outFile);
+        }
+        else {
+            System.out.println("Can't read inFile.");
+        }
+    }
+
+    public static void writeString(String stringToWrite, String outFile) {
+
+        File file = new File(outFile);
+        Throwable error = null;
+
+        try {
+            OutputStream outStream = new FileOutputStream(file);
+            ObjectOutputStream objStream = new ObjectOutputStream(outStream);
+
+            objStream.writeObject(stringToWrite);
+            outStream.close();
+            return;
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassCastException e) {
+            error = e;
+        }
+
+        error.printStackTrace();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textapps/StringToMText.java b/src/com/ibm/richtext/textapps/StringToMText.java
new file mode 100755
index 0000000..201d52f
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/StringToMText.java
@@ -0,0 +1,78 @@
+/*
+ * @(#)$RCSfile: StringToMText.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:41 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.io.*;
+
+public final class StringToMText {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) {
+
+
+        if (args.length != 2 || args[0].equals(args[1])) {
+            usage();
+        }
+        else {
+            String str = loadString(new File(args[0]));
+            if (str == null) {
+                throw new Error("Couldn't load String from file " + args[0]);
+            }
+            MConstText text = new StyledText(str, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+            FileUtils.saveMText(new File(args[1]), text);
+        }
+    }
+
+    private static void usage() {
+
+        System.out.println("Usage: StringToMText inFile outFile");
+        System.out.println("inFile must be a serialized String");
+        System.out.println("On exit, outFile will be a serialized MText ");
+        System.out.println("containing the characters in the string.");
+        System.out.println("inFile and outFile must not be the same.");
+        System.exit(1);
+    }
+
+    public static String loadString(File file) {
+
+        Throwable error;
+
+        try {
+            FileInputStream inStream = new FileInputStream(file);
+            ObjectInputStream objStream = new ObjectInputStream(inStream);
+
+            String str = (String) objStream.readObject();
+            inStream.close();
+            return str;
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassNotFoundException e) {
+            error = e;
+        }
+        catch(ClassCastException e) {
+            error = e;
+        }
+
+        error.printStackTrace();
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textapps/TestMTextToString.java b/src/com/ibm/richtext/textapps/TestMTextToString.java
new file mode 100755
index 0000000..690468b
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/TestMTextToString.java
@@ -0,0 +1,77 @@
+/*
+ * @(#)$RCSfile: TestMTextToString.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:48:51 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import com.ibm.richtext.styledtext.MConstText;
+import java.io.File;
+
+public final class TestMTextToString {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) {
+
+        if (args.length != 2 || args[0].equals(args[1])) {
+            usage();
+        }
+        else {
+            boolean success = testMTextToString(args[0], args[1]);
+            System.out.println(success? "PASSED" : "FAILED");
+        }
+    }
+
+    private static void usage() {
+
+        System.out.println("Usage: TestMTextToString mtextFile stringFile");
+        System.out.println("Compares the characters in mtextFile to the");
+        System.out.println("String in stringFile.");
+        System.exit(0);
+    }
+
+    public static boolean testMTextToString(String mtextFile, String stringFile) {
+
+        boolean success = false;
+
+        File mtext = new File(mtextFile);
+        MConstText text = FileUtils.loadMText(mtext);
+        if (text != null) {
+            String str = StringToMText.loadString(new File(stringFile));
+            if (str != null) {
+                success = compareMTextToString(text, str);
+            }
+            else {
+                System.out.println("Couldn't load String.");
+            }
+        }
+        else {
+            System.out.println("Couldn't load MText.");
+        }
+
+        return success;
+    }
+
+    public static boolean compareMTextToString(MConstText text, String str) {
+
+        if (text.length() != str.length()) {
+            return false;
+        }
+        for (int i=str.length()-1; i >= 0; i--) {
+            if (text.at(i) != str.charAt(i)) {
+                return false;
+            }
+        }
+        return true;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textapps/resources/Sample.java b/src/com/ibm/richtext/textapps/resources/Sample.java
new file mode 100755
index 0000000..e49874f
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/resources/Sample.java
@@ -0,0 +1,28 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/richtext/textapps/resources/Sample.java,v $
+ * $Date: 2002/08/13 23:44:45 $
+ * $Revision: 1.2 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.richtext.textapps.resources;
+
+import java.util.ListResourceBundle;
+
+public final class Sample extends ListResourceBundle {
+    
+    public Object[][] getContents() {
+        
+        return new Object[][] {
+            { "default.sample", this.getClass().getResource("hagan") },
+            { "default.name", "The Garden" },
+            { "japanese.sample", "\u6ce8: {1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002" },
+            { "japanese.name", "Japanese Message" },
+        };
+    }
+}
diff --git a/src/com/ibm/richtext/textformat/AsyncFormatter.java b/src/com/ibm/richtext/textformat/AsyncFormatter.java
new file mode 100755
index 0000000..ff9c62f
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/AsyncFormatter.java
@@ -0,0 +1,2053 @@
+/*
+ * @(#)$RCSfile: AsyncFormatter.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:42 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+// Revision: 70 1.38 richtext/AsyncFormatter.java, richtext, richtext
+
+package com.ibm.richtext.textformat;
+
+import java.awt.Graphics;
+import java.awt.Rectangle;
+import java.awt.Point;
+import java.awt.Color;
+
+import java.text.BreakIterator;
+import java.text.CharacterIterator;
+
+import java.util.Hashtable;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.textlayout.Graphics2DConversion;
+
+///*JDK12IMPORTS
+import java.awt.Graphics2D;
+import java.awt.font.LineBreakMeasurer;
+import java.awt.font.FontRenderContext;
+//JDK12IMPORTS*/
+
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.Graphics2D;
+import com.ibm.richtext.textlayout.LineBreakMeasurer;
+import com.ibm.richtext.textlayout.FontRenderContext;
+JDK11IMPORTS*/
+
+/*
+    Change history:
+
+    7/25/96 -
+
+    8/15/96
+        Fixed bug in textOffsetToPoint (fPixHeight wasn't added to negative heights). {jbr}
+
+    8/19/96
+        Removed references to JustificationStyle constants, and moved them into MFormatter {sfb}
+
+    8/23/96
+        Modified findLineAt and getLineContaining - added optimization in search loop.  Also,
+            they were failing when fLTPosEnd+1 == fLTNegStart.  Fixed.
+
+    8/26/96
+        Moved FormatDaemon stuff into this class.
+
+    9/11/96
+        Shortened line returned from textOffsetToPoint by 1 pixel
+
+    9/23/96
+        textOffsetToPoint line length restored (see above).  drawText() now draws only lines
+        which fall in rectangle param.
+
+    9/26/96
+        whitespace at end of line is used for caret positioning
+
+    10/4/96
+        Added static TextBox method.
+
+    10/8/96
+        Line 1300 - less than changed to less than or equal in textOffsetToPoint.  Watch for
+            hangs in formatText.
+
+    10/9/96
+        Changed sync. model.  fFormatInBackground is used to start/stop bg formatting
+
+    10/17/96
+        Added new flags:  fLineInc, fFillInc for bidi support.  updateFormat, pointToTextOffset, getBoundingRect,
+        and findNewInsertionOffset should now function correctly for non-Roman documents.  Nothing else has been
+        modified to support intl text.
+
+    10/21/96
+        Pushed paragraph formatting and caret positioning into LineLayout.  In process of pushing
+        highlighting into LineLayout.
+
+    10/24/96
+        Now getting paragraph styles from paragraph buffer.
+
+    7/7/97
+        Up-arrow doesn't move to beginning of text if you're on the first line.
+
+    7/1/98
+        No longer intersecting damaged rect with view rect in updateFormat.
+*/
+
+/**
+* This class implements MFormatter.  It maintains a table of
+* <tt>LayoutInfo</tt> instances which contain layout information
+* for each line in the text.  This class formats lines on demand,
+* and creates a low-priority thread to format text in the background.
+* Note that, at times, some text may not have been formatted, especially
+* if the text is large.
+* <p>
+* The line table is an array of <tt>LayoutInfo</tt> objects, which expands as needed to hold
+* all computed lines in the text.  The line table consists of three
+* regions:  a "positive" region, a "gap," and a "negative" region.
+* In the positive region, character and graphics offsets are positive
+* integers, computed from the beginning of the text / display.  In the
+* gap, line table entries are null.  New lines may be inserted into the gap.
+* In the negative region, character and graphics offsets are negative;
+* their absolute values indicate distances from the end of the text / display.
+* The <tt>fLTPosEnd</tt> member gives the index in the line table of the
+* last positive entry.  The <tt>fLTNegStart</tt> gives the index of first
+* negative entry.  If there are no negative entries, <tt>fLTNegStart</tt> is
+* equal to <tt>fLTSize</tt>, the size of the line table.
+* <p>
+* Changes to the line table occur only in the <tt>formatText()</tt> method.
+* This method calls <tt>LineLayout.layout()</tt> for each line to format.
+*
+* @author John Raley
+*
+* @see MFormatter
+* @see LineLayout
+* @see LayoutContext
+* @see LayoutInfo
+*/
+
+final class AsyncFormatter extends MFormatter implements Runnable
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+    * Text to format.
+    */
+    private MConstText fText;
+
+    /**
+    * Default values.
+    */
+    private AttributeMap fDefaultValues;
+    
+    /**
+    * Font resolver.
+    */
+    private FontResolver fFontResolver;
+    
+    /**
+    * Default character metric - used to set height of empty paragraphs
+    */
+    private DefaultCharacterMetric fDefaultCharMetric;
+    
+    /**
+    * Length to which lines are formatted.
+    */
+    private int fLineDim;
+
+    /**
+    * Table of formatted lines.
+    */
+    private LayoutInfo fLineTable[];
+
+    /**
+    * Size of line table.
+    */
+    private int fLTSize = 10; // initial size must be > 0
+
+    /**
+    * Index of last positive entry in line table.
+    */
+    private int fLTPosEnd;
+
+    /**
+    * Index of first negative entry in line table.
+    */
+    private int fLTNegStart;
+
+    /**
+    * Length of text on which negative line offsets are based.
+    * @see #formatText
+    */
+    private int fLTCurTextLen;
+
+    /**
+    * Length of formatted text in fill direction, in pixels.
+    */
+    private int fPixHeight;
+
+    /**
+    * Length of formatted text including pseudoline.
+    */
+    private int fFullPixHeight;
+
+    private int fMinX;
+    private int fMaxX;
+
+    /**
+    * <tt>true</tt> if lines should be formatted to fit line dimension.
+    */
+    private boolean fWrap;
+
+    /**
+    * <tt>true</tt> if characters run horizontally.
+    */
+    private boolean fHLine = true;
+
+    /**
+     * <tt>true</tt> if characters run from from low to high coordinates on line.
+     */
+    private boolean fLineInc = true;
+
+    /**
+     * <tt>true</tt> if lines run from low to high coordinates within page.
+     */
+    private boolean fFillInc = true;
+
+    /**
+    * Value returned from <tt>findLineAt()</tt>
+    * if pixel height precedes topmost line.
+    */
+    private static final int kBeforeFirstLine = -2;
+
+    /**
+    * Value returned from <tt>findLineAt()</tt> and <tt>getLineContaining()</tt>
+    * if offset / pixel height is after all existing lines.
+    */
+    private static final int kAfterLastLine = -1;
+
+    /**
+    * Thread which invokes formatter in the background.
+    */
+    private Thread fDaemon;
+
+    /**
+    * FontRenderContext to measure with.  Currently not settable after
+    * construction.
+    */
+    private FontRenderContext fFontRenderContext;
+
+    /**
+    * Controls whether background formatting can run.
+    */
+    private boolean fBgFormatAllowed = false;
+    
+    /**
+    * Cached line break object.
+    */
+    private BreakIterator fLineBreak = null;
+    
+    /**
+    * Cached LineBreakMeasurer.
+    */
+    private LineBreakMeasurer fCachedMeasurer = null;
+    private int fCachedMeasurerStart;
+    private int fCachedMeasurerLimit;
+    
+    // Some JDK's (Sun's 1.2.2) throw exceptions from 
+    // LineBreakMeasurer.insertChar and deleteChar.  This class
+    // detects this condition and doesn't use these two methods
+    // if they throw exceptions.
+    private static boolean fgCacheMeasurers = true;
+    
+    /**
+    * Current text time stamp.  Used to maintain modification invariant.
+    */
+    private int fCurTimeStamp;
+    
+    /**
+    * Cache of ParagraphRenderers.
+    */
+    private Hashtable fRendererCache = new Hashtable();
+    
+    /**
+    * Draw text inside a rectangle. Does not cache any formatting information.
+    * This is convenient for small amounts of text; comparable to TETextBox on the Mac.
+    * <p>
+    * @param text the text to draw
+    * @param g Graphics on which to draw
+    * @param drawRect rectangle in which text will be drawn
+    * @param fillInc if true, lines run from low to high coordinates in page.
+    * @param hLine if true, characters run horizontally within a line.
+    */
+
+    private static boolean isParagraphSeparator(char ch) {
+
+        return ch == '\n' || ch == '\u2029';
+    }
+
+    /**
+    * Create an <tt>AsyncFormatter</tt>.
+    * @param text the text to format
+    * @param lineBound length to which lines are foramtted
+    * @param wrap <tt>true</tt> if text should be "line wrapped" (formatted to fit destination area)
+    */
+    AsyncFormatter(MConstText text, 
+                   AttributeMap defaultValues,
+                   int lineBound,
+                   boolean wrap,
+                   Graphics g)
+    {
+        fText = text;
+        fDefaultValues = defaultValues;
+        fFontResolver = new FontResolver(fDefaultValues);
+        
+        fLineDim = lineBound;
+        fWrap = wrap;
+        Graphics2D g2d = Graphics2DConversion.getGraphics2D(g);
+        fFontRenderContext = g2d.getFontRenderContext();
+        
+        fDefaultCharMetric = new DefaultCharacterMetric(fFontResolver, 
+                                                        fFontRenderContext);
+        fLTCurTextLen = text.length();
+        removeAllLines();
+
+        fDaemon = new Thread(this);
+        fDaemon.start();
+    }
+    
+    public AttributeMap getDefaultValues() {
+    
+        return fDefaultValues;
+    }
+    
+    public void checkTimeStamp() {
+        String admonition = "Probably, you modified " +
+                            "the text before calling stopBackgroundFormatting().";
+                            
+        if (fText.getTimeStamp() != fCurTimeStamp) {
+            throw new Error("Time stamp is out of sync.  " + admonition);
+        }
+        if (fText.length() != fLTCurTextLen) {
+            throw new Error("Length changed unexpectedly.  " +
+                            "fText.length()="+fText.length()+";  "+
+                            "fLTCurTextLen="+fLTCurTextLen+";  "+
+                            "formatter="+this+";  "+
+                            "text="+fText);
+        }
+    }
+
+    /**
+    * Specify whether to wrap lines using the line dimension.
+    * @param wrap if <tt>true</tt> lines will be wrapped; otherwise new lines will only be
+    * started when a newline is encountered.
+    */
+    public synchronized void setWrap(boolean wrap)
+    {
+        if (wrap != fWrap) {
+            fWrap = wrap;
+            removeAllLines();
+        }
+    }
+
+    /**
+    * Return true if lines are wrapped using the line dimension.
+    * @see #setWrap
+    */
+    public synchronized boolean wrap()
+    {
+        return fWrap;
+    }
+
+    /**
+    * Specify the lineBound in pixels.  If line wrapping is on, lines
+    * will be wrapped to this value.
+    * <p>
+    *
+    * @param lineBound the distance, in pixels, used to wrap lines.
+    */
+    public synchronized void setLineBound(int lineBound)
+    {
+        if (fLineDim != lineBound) {
+            fLineDim = lineBound;                
+            if (fWrap) {
+                removeAllLines();
+            }
+        }
+    }
+
+    /**
+    * Return the number of pixels along the line dimension.
+    */
+    public synchronized int lineBound()
+    {
+        return fLineDim;
+    }
+
+    /**
+    * Return <tt>true</tt> if characters run from low to high coordinates on line.
+    */
+    private boolean lineInc()
+    {
+        return fLineInc;
+    }
+
+    /**
+    * Return <tt>true</tt> if lines run from low to high coordinates on page.
+    */
+    private boolean fillInc()
+    {
+        return fFillInc;
+    }
+
+    /**
+    * Remove all lines in the line table.  Used after an operation that
+    * invalidates all existing lines, such as changing line wrapping or the
+    * line dim.
+    */
+    private synchronized void removeAllLines()
+    {
+        fCurTimeStamp = fText.getTimeStamp();
+        stopBackgroundFormatting();
+
+        fMinX = 0;
+        fMaxX = fLineDim;
+        
+        fLineTable = new LayoutInfo[fLTSize]; // fLTSize must be > 0
+        fLTNegStart = fLTSize;
+        fLTPosEnd = 0;
+
+        fLineTable[0] = pseudoLineInfo(null, 0);
+
+        fPixHeight = fLineTable[0].getHeight(); // ??? or should it be zero?
+        fFullPixHeight = fPixHeight;
+
+        // format at least one line:
+        formatToHeight(fPixHeight + 1);
+
+        enableBGFormat();
+    }
+
+    /**
+     * Fill the layout info with information appropriate to the pseudoline.
+     */
+    private synchronized LayoutInfo pseudoLineInfo(LayoutInfo info, int offset)
+    {
+        AttributeMap st = fText.paragraphStyleAt(fLTCurTextLen); // ??? if text is empty or this is the end of the text, what happens?
+        ParagraphRenderer renderer = getRendererFor(st);
+        info = renderer.layout(fText,
+                               info,
+                               (LineBreakMeasurer)null,
+                               fFontRenderContext,
+                               offset,
+                               offset,
+                               fLineDim,
+                               fLineDim);
+
+        return info;
+    }
+
+    /**
+    * Return the index of the last valid line in the line table.
+    */
+    private int lastLine()
+    {
+        return (fLTNegStart == fLTSize) ? fLTPosEnd : fLTSize - 1;
+    }
+
+    /**
+    * Shift line table such that <tt>lastPos</tt> is the last positive
+    * entry in the table. <b>NOTE: <tt>lastPos</tt> must be a valid line!</b>
+    * <p>
+    * @param lastPos the index of the line which will become the last positive
+    * entry in the line table
+    */
+    private void shiftTableTo(int lastPos)
+    {
+        LayoutInfo li;
+
+        while (lastPos < fLTPosEnd)    { // shift +'s to -'s
+            li = fLineTable[fLTPosEnd];
+            fLineTable[fLTPosEnd--] = null;
+
+            li.makeRelativeToEnd(fLTCurTextLen, fPixHeight);
+
+            fLineTable[--fLTNegStart] = li;
+        }
+
+        while (lastPos >= fLTNegStart) { // shift -'s to +'s
+            li = fLineTable[fLTNegStart];
+            fLineTable[fLTNegStart++] =    null;
+
+            li.makeRelativeToBeginning(fLTCurTextLen, fPixHeight);
+
+            fLineTable[++fLTPosEnd]    = li;
+        }
+    }
+
+    /**
+    * Increase the size of the line table.
+    */
+    private void expandLineTable()
+    {
+        // This just doubles the size of the line table.
+
+        LayoutInfo newLineTable[] = new LayoutInfo[fLineTable.length * 2];
+        int newNegStart = newLineTable.length - (fLineTable.length - fLTNegStart);
+
+        System.arraycopy(fLineTable, 0, newLineTable, 0, fLTPosEnd + 1);
+        System.arraycopy(fLineTable, fLTNegStart, newLineTable, newNegStart, fLTSize - fLTNegStart);
+
+        fLTNegStart = newNegStart;
+        fLTSize = newLineTable.length;
+        fLineTable = newLineTable;
+    }
+
+    /**
+    * Return the index of the line containing the pixel position <tt>fillCoord</tt>.
+    * If fillCoord exceeds the bottom of the text, return kAfterLastLine.
+    * If fillCoord is less than the top of the text, return kBeforeFirstLine.
+    * <p>
+    * @param fillCoord "height" of line to locate.
+    */
+    private int findLineAt(int fillCoord)
+    {
+        int low, high, mid;
+        int lowStart, highStart, midStart;
+
+        if (fillCoord >= fPixHeight)
+            return kAfterLastLine;
+        else if (fillCoord < 0)
+            return kBeforeFirstLine;
+
+        if ((fLTNegStart < fLTSize) && (fillCoord >= fLineTable[fLTNegStart].getGraphicStart(fPixHeight))) {
+            fillCoord -= fPixHeight;
+
+            low = fLTNegStart;
+            high = fLTSize;
+            highStart = 0;
+        }
+        else {
+            low = 0;
+            high = fLTPosEnd + 1;
+            highStart = fLineTable[fLTPosEnd].getGraphicStart(0) + fLineTable[fLTPosEnd].getHeight();
+        }
+        lowStart = fLineTable[low].getGraphicStart(0);
+
+        do {
+            if (lowStart == highStart)
+                return low;
+
+            mid = low + (fillCoord - lowStart) / (highStart - lowStart) * (high - low);
+            midStart = fLineTable[mid].getGraphicStart(0);
+
+            if (midStart > fillCoord) {
+                high = mid;
+                highStart = fLineTable[high].getGraphicStart(0);
+            }
+            else if (midStart + fLineTable[mid].getHeight() <= fillCoord) {
+                low = mid + 1;
+                lowStart = fLineTable[low].getGraphicStart(0);
+            }
+            else
+                return mid;
+
+        } while (low < high);
+
+        return 0;
+    }
+
+    /**
+     * Return the index of the first character in the line.
+     * @param line the internal index of the line (direct index into linetable).
+     */
+    private int lineCharStartInternal(int line)
+    {
+        return fLineTable[line].getCharStart(fLTCurTextLen);
+    }
+
+    /**
+     * Return the index of the character following the last character in the line.
+     * @param line the internal index of the line (direct index into linetable).
+     */
+    private int lineCharLimitInternal(int line)
+    {
+        return lineCharStartInternal(line) + fLineTable[line].getCharLength();
+    }
+
+    /**
+     * Return the graphic start of the line, unadjusted for fill direction.
+     * @param line the internal index of the line (direct index into linetable).
+     */
+    private int lineGraphicStartInternal(int line)
+    {
+        return fLineTable[line].getGraphicStart(fPixHeight);
+    }
+
+    /**
+     * Return the graphic limit of the line, unadjusted for fill direction.
+     * @param line the internal index of the line (direct index into linetable).
+     */
+    private int lineGraphicLimitInternal(int line)
+    {
+        return lineGraphicStartInternal(line) + fLineTable[line].getHeight();
+    }
+
+    /**
+    * Return the offset of the first character which has not been formatted.
+    * If all text has been formatted, return the current text length.
+    */
+    private int lastLineCharStop()
+    {
+        return lineCharLimitInternal(lastLine());
+    }
+
+    /**
+     * Return a 'valid' line containing offset.  This differs from getLineContaining in
+     * this maps kAfterLastLine to lastLine(), so that the result is always a valid
+     * linetable index.
+     */
+    private int getValidLineContaining(TextOffset offset) {
+
+        return getValidLineContaining(offset.fOffset, offset.fPlacement);
+    }
+
+    /**
+     * Return a 'valid' line containing offset.  This differs from getLineContaining in
+     * this maps kAfterLastLine to lastLine(), so that the result is always a valid
+     * linetable index.
+     */
+    private int getValidLineContaining(int insOffset, boolean placement)
+    {
+        int line = getLineContaining(insOffset, placement);
+        if (line == kAfterLastLine)
+            line = lastLine();
+        else if (line == kBeforeFirstLine)
+            throw new IllegalArgumentException("Debug: getLineContaining returned kBeforeFirstLine");
+
+        return line;
+    }
+
+    /**
+    * Return index of line containing <tt>offset</tt>.
+    * ??? If offset is after last formatted line, returns kAfterLastLine.  Is that good?
+    * <p>
+    * @param offset the offset whose line should be located
+    * @returns line containing <tt>offset</tt>
+    */
+    private int getLineContaining(TextOffset offset) {
+
+        return getLineContaining(offset.fOffset, offset.fPlacement);
+    }
+
+    private int getLineContaining(int insOffset, boolean placement)
+    {
+        int pos = insOffset;
+        if (placement == TextOffset.BEFORE_OFFSET && pos > 0)
+            --pos;
+
+        if (pos < 0) {
+            throw new IllegalArgumentException("Debug: getLineContaining offset < 0: " + pos);
+        }
+
+        if (pos >= lastLineCharStop()) {
+            return emptyParagraphAtEndOfText()? kAfterLastLine : lastLine();
+        }
+
+        int low, high, mid;
+        int lowStart, highStart, midStart;
+
+        if ((fLTNegStart < fLTSize) && (pos >= fLineTable[fLTNegStart].getCharStart(fLTCurTextLen))) {
+            pos -= fLTCurTextLen;
+
+            low = fLTNegStart;
+            high = fLTSize;
+            highStart = 0;
+        }
+        else {
+            low = 0;
+            high = fLTPosEnd + 1;
+            highStart = fLineTable[fLTPosEnd].getCharStart(0) + fLineTable[fLTPosEnd].getCharLength();
+        }
+        lowStart = fLineTable[low].getCharStart(0);
+
+        do {
+            if (highStart == lowStart) {
+                return low;
+            }
+
+            mid = low + (pos - lowStart) / (highStart - lowStart) * (high - low);
+            midStart = fLineTable[mid].getCharStart(0);
+
+            if (midStart > pos) {
+                high = mid;
+                highStart = fLineTable[high].getCharStart(0);
+            }
+            else if (midStart + fLineTable[mid].getCharLength() <= pos) {
+                low = mid + 1;
+                lowStart = fLineTable[low].getCharStart(0);
+            }
+            else {
+                return mid;
+            }
+
+        } while (low < high);
+
+        return 0;
+    }
+
+    /**
+    * Display text in drawArea. Does not reformat text.
+    * <p>
+    * @param g the Graphics object in which to draw
+    * @param drawArea the rectangle, in g's coordinate system, in which to draw
+    * @param origin the top-left corner of the text, in g's coordinate system
+    */
+    public synchronized void draw(Graphics g, Rectangle drawArea, Point origin)
+    {
+        draw(g, drawArea, origin, null, null, null);
+    }
+
+    public synchronized void draw(Graphics g, Rectangle drawArea, Point origin,
+                TextOffset selStart, TextOffset selStop, Color highlight) {
+
+        checkTimeStamp();
+        Graphics2D g2d = Graphics2DConversion.getGraphics2D(g);
+
+        // Get starting and ending fill 'heights.'
+
+        int startFill;
+        int endFill;
+
+        if (fFillInc)
+            startFill = drawArea.y - origin.y;
+        else
+            startFill = origin.y - (drawArea.y + drawArea.height);
+
+        endFill = startFill + drawArea.height;
+
+        // We're drawing one more line than necessary when we update because of a
+        // selection change.  But we're drawing the right amount of lines when we
+        // refresh the whole display.  This affects rendering speed significantly,
+        // and creating a new paragraph renderer for each line doesn't help either.
+        // For now, I'm going to subtract one from the fill height, on the theory
+        // that we're picking up the extra line because of a one-pixel slop.
+        // This seems to work, although perhaps if one pixel of a line at the
+        // bottom should draw, it won't.
+
+        --endFill;
+
+        // Format to ending fill height, so line table is valid for all lines we need to draw.
+
+        formatToHeight(endFill);
+
+        // Get starting and ending lines for fill height.  If the start of the fill is after the last line,
+        // or the end of the fill is before the first line, return.
+
+        int curLine = findLineAt(startFill);
+        if (curLine == kAfterLastLine)
+            return;
+        else if (curLine == kBeforeFirstLine)
+            curLine = 0;
+
+        int lastLine = findLineAt(endFill);
+        if (lastLine == kBeforeFirstLine)
+            return;
+        else if (lastLine == kAfterLastLine)
+            lastLine = lastLine();
+
+        // Get the base coordinates (lineX, lineY) for the starting line.
+
+        int lineX, lineY;
+
+        int gStart = lineGraphicStartInternal(curLine);
+
+        if (fHLine) {
+            if (fLineInc)
+                lineX = origin.x;
+            else
+                lineX = origin.x - fLineDim;
+            if (fFillInc)
+                lineY = origin.y + gStart;
+            else
+                lineY = origin.y - (gStart + fLineTable[curLine].getHeight());
+        }
+        else {
+            if (fLineInc)
+                lineY = origin.y;
+            else
+                lineY = origin.y - fLineDim;
+            if (fFillInc)
+                lineX = origin.x + gStart;
+            else
+                lineX = origin.x - (gStart + fLineTable[curLine].getHeight());
+        }
+
+        // Iterate through lines, drawing each one and incrementing the base coordinate by the line height.
+
+
+        for (; curLine <= lastLine; curLine++) {
+            // Adjust curLine around gap in line table.
+            if ((curLine > fLTPosEnd) && (curLine < fLTNegStart))
+                curLine = fLTNegStart;
+
+            fLineTable[curLine].renderWithHighlight(fLTCurTextLen, g2d, fLineDim, lineX, lineY, selStart, selStop, highlight);
+
+            // Increment line base for next iteration.
+            int lineInc = fLineTable[curLine].getHeight();
+            if (fFillInc) {
+                if (fHLine)
+                    lineY += lineInc;
+                else
+                    lineX += lineInc;
+            } else {
+                if (fHLine)
+                    lineY -= lineInc;
+                else
+                    lineX -= lineInc;
+            }
+        }
+    }
+
+    /**
+    * Format text to given height.
+    * @param height the height to which text will be formatted.
+    */
+    public synchronized void formatToHeight(int reqHeight)
+    {
+        checkTimeStamp();
+        if (reqHeight <= fPixHeight) // already formatted to this height
+            return;
+
+        if (fText.length() == lastLineCharStop()) // already formatted all the text
+            return;
+
+        // +++ should disable update thread here
+
+        if (fLTNegStart < fLTSize)
+            shiftTableTo(fLTSize - 1);
+
+        formatText(0, 0, reqHeight, false);
+    }
+
+    /**
+     * Format text to given offset.
+     * @param offset the offset to which text will be formatted.
+     */
+     private void formatToOffset(TextOffset offset)
+     {
+        formatToOffset(offset.fOffset, offset.fPlacement);
+     }
+     
+     private synchronized void formatToOffset(int offset, boolean placement) {
+        
+        checkTimeStamp();
+        int llcs = lastLineCharStop();
+        if (llcs < fLTCurTextLen) {
+            int limit = offset;
+            if (placement == TextOffset.AFTER_OFFSET) // format to past character offset is associated with
+                limit++;
+            if (limit >= llcs) { // ??? would '>' be ok instead or '>='?
+                if (limit > fLTCurTextLen)
+                    limit = fLTCurTextLen;
+
+                shiftTableTo(lastLine());
+                formatText(llcs, limit - llcs, Integer.MAX_VALUE, true);
+            }
+        }
+     }
+
+/**
+* Reformat text after a change.
+* After the formatter's text changes, call this method to reformat.  Does
+* not redraw.
+* @param afStart the offset into the text where modification began;  ie, the
+* first character in the text which is "different" in some way.  Does not
+* have to be nonnegative.
+* @param afLength the number of new or changed characters in the text.  Should never
+* be less than 0.
+* @param viewRect the Rectangle in which the text will be displayed.  This is needed for
+* returning the "damaged" area - the area of the screen in which the text must be redrawn.
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @returns a <tt>Rectangle</tt> which specifies the area in which text must be
+* redrawn to reflect the change to the text.
+*/
+    public Rectangle updateFormat(final int afStart,
+                                               final int afLength,
+                                               Rectangle viewRect,
+                                               Point origin)
+    {
+        if (afStart < 0) {
+            throw new IllegalArgumentException("Debug: updateFormat afStart < 0: " + afStart);
+        }
+        if (fBgFormatAllowed) {
+            throw new IllegalArgumentException("Background formatting should have been disabled");
+        }
+        fCurTimeStamp = fText.getTimeStamp();
+        
+        int curLine = getValidLineContaining(afStart, TextOffset.AFTER_OFFSET);
+        int lineStartPos = lineCharStartInternal(curLine);
+
+        // optimize by finding out whether change occurred
+        // after first word break on curline
+
+        int firstPossibleBreak;
+
+        if (lineStartPos < fText.length()) {
+
+            if (fLineBreak == null) {
+                fLineBreak = BreakIterator.getLineInstance();
+            }
+            CharacterIterator charIter = fText.createCharacterIterator();
+            charIter.setIndex(lineStartPos);
+            fLineBreak.setText(charIter);
+
+            firstPossibleBreak = fLineBreak.following(lineStartPos);
+        }
+        else
+            firstPossibleBreak = afStart;
+
+        if ((curLine > 0) && (firstPossibleBreak == BreakIterator.DONE || afStart <= firstPossibleBreak)) {
+            curLine--;
+            if (curLine < fLTNegStart && curLine > fLTPosEnd)
+                curLine = fLTPosEnd;
+        }
+
+        shiftTableTo(curLine);
+
+        int pixHeight; // after the formatText call, at least pixHeight text must be formatted
+
+        if (fHLine) {
+            if (fFillInc)
+                pixHeight = viewRect.y + viewRect.height - origin.y;
+            else
+                pixHeight = origin.y - viewRect.y;
+        }
+        else {
+            if (fFillInc)
+                pixHeight = viewRect.x + viewRect.width - origin.x;
+            else
+                pixHeight = origin.x - viewRect.x;
+        }
+
+        Rectangle r = formatText(afStart, afLength, pixHeight, false);
+
+        //dumpLineTable();
+
+        if ((fPixHeight < pixHeight) && (fLTNegStart < fLTSize) && (fLTCurTextLen > lastLineCharStop())) {
+            shiftTableTo(lastLine());
+            Rectangle s = formatText(0, 0, pixHeight, false);
+            r = r.union(s);
+        }
+
+        intlRect(origin, r);
+        //System.out.println("Damaged rect: "+r+"; origin: "+origin);
+
+        // don't need to synchronized here, b/c the daemon shouldn't be running when
+        // this is executing
+
+        if (fText.length() < lastLineCharStop())
+            enableBGFormat();
+        else
+            stopBackgroundFormatting();
+
+        //dumpLineTable();
+
+        return r;
+    }
+    
+    private LineBreakMeasurer makeMeasurer(int paragraphStart, int paragraphLimit) {
+
+        MTextIterator iter = new MTextIterator(fText,
+                                               fFontResolver,
+                                               paragraphStart,
+                                               paragraphLimit);
+        LineBreakMeasurer measurer = new LineBreakMeasurer(iter, fFontRenderContext);
+        if (fgCacheMeasurers) {
+            fCachedMeasurerStart = paragraphStart;
+            fCachedMeasurerLimit = paragraphLimit;
+            fCachedMeasurer = measurer;
+        }
+        return measurer;
+    }        
+
+/**
+* Compute text format.  This method calculates text format;  it can be
+* called for various purposes:  to reformat text after an edit, to
+* format text to a particular height, or to format text up to a
+* particular offset.
+* <p>
+* The calling method must ensure that <tt>fLineTable</tt> has been shifted
+* such that the last positive line is where the formatting operation will
+* begin.
+* <p>
+* Called by: <tt>formatToHeight()</tt>, <tt>updateFormat()</tt>,
+* <tt>textOffsetToPoint()</tt>, <tt>getBoundingRect()</tt>
+* @param afStart the offset of the first character in the text which has changed
+* @param afLength the number of new or changed characters in the text
+* @param reqHeight the pixel height to which text must be formatted.  Ignored
+* if <tt>formatAllNewText</tt> is <tt>true</tt>, or if old lines remain in the
+* line table after all changed text has been formatted.
+* @param seekOffsetAtEnd if <tt>true</tt>, formatting continues until the line
+* containing afStart+afLength has been formatted.  If false, formatting may stop
+* when reqHeight has been reached.  This parameter should be <tt>true</tt> <b>only</b>
+* if the object of the formatting operation is to extend formatting to a particular
+* offset within the text;  it should be <tt>false</tt> everywhere else.
+* @returns a rectangle, relative to the top-left of the text, which encloses the
+* screen area whose appearance has changed due to the reformatting.
+*/
+
+    private Rectangle formatText(int afStart, final int afLength, int reqHeight, boolean seekOffsetAtEnd)
+    {
+    /* assumes line table shifted such that first line to format is
+    last positive line */
+
+        if (afLength < 0) {
+            throw new IllegalArgumentException("afLength < 0.  afLength=" + afLength);
+        }
+
+        int newTextEnd = afStart + afLength;
+
+        final int newCurTextLen = fText.length();
+
+        // variable not used int oldPixHeight = fPixHeight;
+        int oldFullPixHeight = fFullPixHeight;
+        fPixHeight -= fLineTable[fLTPosEnd].getHeight();
+
+        int curGraphicStart = fLineTable[fLTPosEnd].getGraphicStart(fPixHeight);
+        int curLineStart = fLineTable[fLTPosEnd].getCharStart(newCurTextLen);
+        
+        int curParagraphStart = fText.paragraphStart(curLineStart);
+        int curParagraphLimit = Integer.MIN_VALUE; // dummy value
+
+        int damageStart = curGraphicStart;
+
+        ParagraphRenderer renderer = null;
+        LineBreakMeasurer measurer = null;
+        
+        // try to use cached LineBreakMeasurer if possible
+        if (fCachedMeasurer != null && 
+            curParagraphStart == fCachedMeasurerStart) {
+
+            curParagraphLimit = fText.paragraphLimit(curParagraphStart);
+            
+            try {
+                if (newCurTextLen - fLTCurTextLen == 1 && afLength == 1) {
+                    if (curParagraphLimit == fCachedMeasurerLimit+1) {
+                        MTextIterator iter = new MTextIterator(fText,
+                                                               fFontResolver, 
+                                                               curParagraphStart,
+                                                               curParagraphLimit);
+                        fCachedMeasurer.insertChar(iter, afStart);
+                        fCachedMeasurerLimit += 1;
+                        measurer = fCachedMeasurer;
+                    }
+                }
+                else if (fLTCurTextLen - newCurTextLen == 1 && afLength == 0) {
+                    if (fCachedMeasurerLimit > fCachedMeasurerStart + 1 &&
+                                curParagraphLimit == fCachedMeasurerLimit-1) {
+                        MTextIterator iter = new MTextIterator(fText,
+                                                               fFontResolver,
+                                                               curParagraphStart,
+                                                               curParagraphLimit);
+                        fCachedMeasurer.deleteChar(iter, afStart);
+                        fCachedMeasurerLimit -= 1;
+                        measurer = fCachedMeasurer;
+                    }
+                }
+            }
+            catch(ArrayIndexOutOfBoundsException e) {
+                fCachedMeasurer = null;
+                fgCacheMeasurers = false;
+            }
+            
+            if (measurer != null) {
+                // need to set up renderer since the paragraph update in the
+                // formatting loop will not happen
+                AttributeMap style = fText.paragraphStyleAt(curParagraphStart);
+                renderer = getRendererFor(style);
+                measurer.setPosition(curLineStart);
+            }
+        }
+        
+        if (measurer == null) {
+            // trigger paragraph update at start of formatting loop
+            curParagraphLimit = curParagraphStart;
+            curParagraphStart = 0;
+        }
+
+        fLTCurTextLen = newCurTextLen;
+        
+        while (true) {
+            // System.out.println("line: " + fLTPosEnd + ", cls: " + curLineStart);
+
+
+            if (curLineStart >= curParagraphLimit) {
+                curParagraphStart = curParagraphLimit;
+                curParagraphLimit = fText.paragraphLimit(curParagraphStart);
+
+                AttributeMap style = fText.paragraphStyleAt(curParagraphStart);
+                renderer = getRendererFor(style);
+
+                if (curParagraphStart < curParagraphLimit) {
+                    measurer = makeMeasurer(curParagraphStart, curParagraphLimit);
+                    measurer.setPosition(curLineStart);
+                }
+                else {
+                    measurer = null;
+                }
+            }
+
+            {
+                boolean haveOldDirection = fLineTable[fLTPosEnd] != null;
+                boolean oldDirection = false; //  dummy value for compiler
+                if (haveOldDirection) {
+                    oldDirection = fLineTable[fLTPosEnd].isLeftToRight();
+                }
+
+                fLineTable[fLTPosEnd] = renderer.layout(fText,
+                                                        fLineTable[fLTPosEnd],
+                                                        measurer,
+                                                        fFontRenderContext,
+                                                        curParagraphStart,
+                                                        curParagraphLimit,
+                                                        fWrap ? fLineDim : Integer.MAX_VALUE,
+                                                        fLineDim);
+                if (haveOldDirection) {
+                    if (fLineTable[fLTPosEnd].isLeftToRight() != oldDirection) {
+                        newTextEnd = Math.max(newTextEnd, curParagraphLimit);
+                    }
+                }
+            }
+
+            {
+                LayoutInfo theLine = fLineTable[fLTPosEnd];
+
+                theLine.setGraphicStart(curGraphicStart);
+                curGraphicStart += theLine.getHeight();
+
+                fPixHeight += theLine.getHeight();
+                curLineStart += theLine.getCharLength();
+
+                if (!fWrap) {
+                    int lineWidth = theLine.getTotalAdvance() + theLine.getLeadingMargin();
+                    if (theLine.isLeftToRight()) {
+                        if (fMaxX < lineWidth) {
+                            fMaxX = lineWidth;
+                        }
+                    }
+                    else {
+                        if (fLineDim-lineWidth < fMinX) {
+                            fMinX = fLineDim-lineWidth;
+                        }
+                    }
+                }
+            }
+            /*
+                Next, discard obsolete lines.  A line is obsolete if it
+                contains new text or text which has been formatted.
+            */
+
+            while (fLTNegStart < fLTSize) {
+                int linePos = fLineTable[fLTNegStart].getCharStart(newCurTextLen);
+                if (linePos >= curLineStart && linePos >= newTextEnd)
+                    break;
+
+                // System.out.println("delete neg line: " + fLTNegStart);
+                fPixHeight -= fLineTable[fLTNegStart].getHeight();
+                fLineTable[fLTNegStart++] = null;
+            }
+
+            int stopAt;
+            if (fLTNegStart < fLTSize)
+                stopAt = fLineTable[fLTNegStart].getCharStart(newCurTextLen);
+            else
+                stopAt = newCurTextLen;
+
+            /*
+                Now, if exit conditions aren't met, create a new line.
+            */
+
+            if (seekOffsetAtEnd) {
+                if ((curLineStart >= newTextEnd) && (fLTNegStart == fLTSize)) {
+                    // System.out.println("break 1");
+                    break;
+                }
+            }
+            else {
+                if (curLineStart >= stopAt) {
+                    // System.out.println("curLineStart: " + curLineStart + " >= stopAt: " + stopAt);
+                    break;
+                }
+                else if (fLTNegStart==fLTSize && fPixHeight >= reqHeight) {
+                    // System.out.println("break 3");
+                    break;
+                }
+            }
+
+            if (fLTPosEnd + 1 == fLTNegStart)
+                expandLineTable();
+
+            fLineTable[++fLTPosEnd] = null; // will be created by Renderer
+        }
+        //System.out.print("\n");
+
+        if (newCurTextLen == 0) {
+            fLineTable[0] = pseudoLineInfo(fLineTable[0], 0);
+            fPixHeight = fLineTable[0].getHeight();
+        }
+        fFullPixHeight = fPixHeight;
+
+        if (isParaBreakBefore(newCurTextLen)) {
+            fFullPixHeight += lastCharHeight();
+        }
+/*
+        System.out.println("curLineStart: " + curLineStart +
+            ", fLTPosEnd: " + fLTPosEnd +
+            ", fLTNegStart: " + fLTNegStart +
+            ", fLTSize: " + fLTSize);
+
+        System.out.println("oldFullPixHeight: " + oldFullPixHeight + ", newFullPixHeight: " + fFullPixHeight);
+*/
+        int damageLength;
+        if (fFullPixHeight == oldFullPixHeight) {
+            damageLength = fLineTable[fLTPosEnd].getGraphicStart(fPixHeight)
+                            + fLineTable[fLTPosEnd].getHeight() - damageStart;
+        }
+        else {
+            damageLength = Math.max(fFullPixHeight, oldFullPixHeight);
+        }
+
+        return new Rectangle(fMinX, damageStart, fMaxX-fMinX, damageLength);
+    }
+
+    private void dumpLineTable()
+    {
+        int i;
+
+        System.out.println("fLTCurTextLen=" + fLTCurTextLen + " " );
+        for (i=0; i<= fLTPosEnd; i++)
+            System.out.println("Line " + i + " starts at "
+                                + fLineTable[i].getCharStart(fLTCurTextLen)
+                                + " and extends " + fLineTable[i].getCharLength());
+
+        for (i=fLTNegStart; i< fLTSize; i++)
+            System.out.println("Line " + (i-fLTNegStart+fLTPosEnd+1) + " starts at "
+                                + fLineTable[i].getCharStart(fLTCurTextLen)
+                                + " and extends " + fLineTable[i].getCharLength());
+    }
+
+    public synchronized int minX() {
+    
+        return fMinX;
+    }
+    
+    /**
+    * Return the horizontal extent of the text, in pixels.
+    * <p>
+    * This returns an approximation based on the currently formatted text.
+    */
+    public synchronized int maxX()
+    {
+        checkTimeStamp();
+
+        return fMaxX;
+    }
+
+    /**
+    * Return the height of the last character in the text.
+    *
+    * This is used for the 'extra height' needed to display a caret at the end of the text when the
+    * text is empty or ends with a newline.
+    */
+    private int lastCharHeight()
+    {
+        int charIndex = lastLineCharStop() - 1;
+        AttributeMap st = fText.characterStyleAt(charIndex);
+        DefaultCharacterMetric.Metric metric = fDefaultCharMetric.getMetricForStyle(st);
+
+        int height = metric.getAscent();
+        height += metric.getDescent();
+        height += metric.getLeading();
+
+        return height;
+    }
+
+    /**
+     * Return true if the character at pos is a paragraph separator.
+     */
+    private boolean isParaBreakBefore(int pos)
+    {
+        return pos > 0 && (fText.at(pos - 1) == '\u2029' || fText.at(pos - 1) == '\n');
+        // we really need to take look at this and determine what this function
+        // should be doing.  What I've got here right now is a temporary implementation.
+    }
+
+    public synchronized int minY() {
+    
+        return 0;
+    }
+    
+    /**
+    * Return the vertical extent of the text, in pixels.
+    * <p>
+    * This returns an approximation based on the currently formatted text.
+    */
+    public synchronized int maxY()
+    {
+        checkTimeStamp();
+
+        int numChars = lastLineCharStop();
+
+        int pixHeight = fPixHeight;
+        if (numChars == fLTCurTextLen && isParaBreakBefore(fLTCurTextLen)) {
+            pixHeight += lastCharHeight();
+        }
+
+        if (numChars != 0)
+            return pixHeight * fText.length() / numChars;
+        else
+            return 0;
+    }
+
+    /**
+    * Return the actual pixel length of the text which has been formatted.
+    */
+    public synchronized int formattedHeight()
+    {
+        checkTimeStamp();
+        return fPixHeight;
+    }
+
+    /**
+     * There are two modes for dealing with carriage returns at the end of a line.  In the 'infinite width'
+     * mode, the last character is considered to have infinite width.  Thus if the point is past the 'real'
+     * end of the line, the offset is the position before that last character, and the offset is associated
+     * with that character (placement after). In the 'actual width' mode, the offset is positioned after
+     * that character, but still associated with it (placement before).
+     */
+
+    private TextOffset lineDimToOffset(TextOffset result, int line, int lineX, int lineY, TextOffset anchor, boolean infiniteMode)
+    {
+    // temporarily adjust line info to remove the negative char starts used in the line table.
+    // then call through to the paragraph renderer to get the offset.  Don't put line end
+    // optimization here, let the renderer do it (perhaps it does fancy stuff with the margins).
+
+        LayoutInfo lineInfo = fLineTable[line];
+
+        result = lineInfo.pixelToOffset(fLTCurTextLen, result, fLineDim, lineX, lineY);
+
+        if (infiniteMode &&
+            (result.fOffset > lineInfo.getCharStart(fLTCurTextLen)) &&
+            isParaBreakBefore(result.fOffset) &&
+            (anchor == null || anchor.fOffset == result.fOffset - 1)) {
+
+            result.setOffset(result.fOffset - 1, TextOffset.AFTER_OFFSET);
+        }
+
+        return result;
+    }
+
+    /**
+    * Given a screen location p, return the offset of the character in the text nearest to p.
+    */
+    public synchronized TextOffset pointToTextOffset(TextOffset result, int px, int py, Point origin, TextOffset anchor, boolean infiniteMode)
+    {
+        checkTimeStamp();
+        if (result == null)
+            result = new TextOffset();
+
+        int fillD;
+
+        if (fHLine)
+            fillD = py - origin.y;
+        else
+            fillD = px - origin.x;
+
+        if (!fFillInc)
+            fillD = -fillD;
+
+        if (fillD < 0) {
+            result.setOffset(0, TextOffset.AFTER_OFFSET);
+            return result;
+        }
+
+        formatToHeight(fillD);
+
+        if (fillD >= fPixHeight) {
+            boolean bias = fLTCurTextLen==0? TextOffset.AFTER_OFFSET : TextOffset.BEFORE_OFFSET;
+            result.setOffset(fLTCurTextLen, bias);
+            return result;
+        }
+
+        int line = findLineAt(fillD); // always a valid line
+        int gStart = lineGraphicStartInternal(line);
+
+        int lineX, lineY;  // upper-left corner of line
+        if (fHLine) {
+            lineX = origin.x;
+            lineY = fFillInc? origin.y + gStart : origin.y - (gStart + fLineTable[line].getHeight());
+        }
+        else {
+            lineY = origin.y;
+            lineX = fFillInc? origin.x + gStart : origin.x - (gStart + fLineTable[line].getHeight());
+        }
+
+        return lineDimToOffset(result, line, px - lineX, py - lineY, anchor, infiniteMode);
+    }
+
+    private boolean emptyParagraphAtEndOfText() {
+
+        return fLTCurTextLen > 0 &&
+                isParagraphSeparator(fText.at(fLTCurTextLen-1));
+    }
+
+    /**
+     * Return true if the offset designates a point on the pseudoline following a paragraph
+     * separator at the end of text.  This is true if the offset is the end of text
+     * and the last character in the text is a paragraph separator.
+     */
+    private boolean afterLastParagraph(TextOffset offset)
+    {
+        return offset.fOffset == fLTCurTextLen &&
+            emptyParagraphAtEndOfText();
+    }
+
+    /**
+    * Given an offset, return the Rectangle bounding the caret at the offset.
+    * @param offset an offset into the text
+    * @param origin the top-left corner of the text, in the display's coordinate system
+    * @return a Rectangle bounding the caret.
+    */
+    public synchronized Rectangle getCaretRect(TextOffset offset, Point origin) {
+
+        Rectangle r = new Rectangle();
+        getCaretRect(r, offset, origin);
+        return r;
+    }
+    
+    private void getCaretRect(Rectangle r, TextOffset offset, Point origin) {
+        
+        checkTimeStamp();
+        formatToOffset(offset);
+
+        if (afterLastParagraph(offset)) {
+            int pseudoLineHeight = lastCharHeight();
+            if (fHLine) {
+                int lineY = fFillInc ? origin.y + fPixHeight : origin.y - fPixHeight - pseudoLineHeight;
+                r.setBounds(origin.x, lineY, 0, pseudoLineHeight);
+            }
+            else {
+                int lineX = fFillInc? origin.x + fPixHeight : origin.x - fPixHeight - pseudoLineHeight;
+                r.setBounds(lineX, origin.y, pseudoLineHeight, 0);
+            }
+            return;
+        }
+
+        int line = getValidLineContaining(offset);
+
+        int gStart = lineGraphicStartInternal(line);
+
+        int lineX, lineY;
+
+        if (fHLine) {
+            lineX = origin.x;
+            if (fFillInc)
+                lineY = origin.y + gStart;
+            else
+                lineY = origin.y - (gStart + fLineTable[line].getHeight());
+        }
+        else {
+            lineY = origin.y;
+            if (fFillInc)
+                lineX = origin.x + gStart;
+            else
+                lineX = origin.x - (gStart + fLineTable[line].getHeight());
+        }
+
+        Rectangle bounds = fLineTable[line].caretBounds(fText, fLTCurTextLen, fLineDim, offset.fOffset, lineX, lineY);
+
+        r.setBounds(bounds);
+    }
+
+    /**
+    * Draw the caret(s) associated with the given offset into the given Graphics.
+    * @param g the Graphics to draw into
+    * @param offset the offset in the text for which the caret is drawn
+    * @param origin the top-left corner of the text, in the display's coordinate system
+    * @param strongCaretColor the color of the strong caret
+    * @param weakCaretColor the color of the weak caret (if any)
+    */
+    public synchronized void drawCaret(Graphics g,
+                                       TextOffset offset,
+                                       Point origin,
+                                       Color strongCaretColor,
+                                       Color weakCaretColor) {
+
+        checkTimeStamp();
+        Graphics2D g2d = Graphics2DConversion.getGraphics2D(g);
+        formatToOffset(offset);
+
+        LayoutInfo line;
+        int gStart;
+        
+        if (afterLastParagraph(offset)) {
+            gStart = fPixHeight;
+            line = pseudoLineInfo(null, offset.fOffset);
+        }
+        else {
+            int lineIndex = getValidLineContaining(offset);
+            gStart = lineGraphicStartInternal(lineIndex);
+            line = fLineTable[lineIndex];
+        }
+        
+        int lineX, lineY;
+
+        if (fHLine) {
+            lineX = origin.x;
+            if (fFillInc)
+                lineY = origin.y + gStart;
+            else
+                lineY = origin.y - (gStart + line.getHeight());
+        }
+        else {
+            lineY = origin.y;
+            if (fFillInc)
+                lineX = origin.x + gStart;
+            else
+                lineX = origin.x - (gStart + line.getHeight());
+        }
+
+        line.renderCaret(fText, fLTCurTextLen, g2d, fLineDim, lineX, lineY,
+                                offset.fOffset, strongCaretColor, weakCaretColor);
+    }
+
+/**
+* Given two offsets in the text, return a rectangle which encloses the lines containing the offsets.
+* Offsets do not need to be ordered or nonnegative.
+* @param offset1,offset2 offsets into the text
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @returns a <tt>Rectangle</tt>, relative to <tt>origin</tt>, which encloses the lines containing the offsets
+*/
+    public synchronized Rectangle getBoundingRect(TextOffset offset1,
+                                                  TextOffset offset2,
+                                                  Point origin,
+                                                  boolean tight) {
+
+        Rectangle r = new Rectangle();
+        getBoundingRect(r, offset1, offset2, origin, tight);
+        return r;
+    }
+
+/*
+    Transform r from "text" coordinates to "screen" coordinates.
+*/
+
+    private void intlRect(Point origin, Rectangle r) {
+
+        int lineOrig, fillOrig;
+
+        if (fHLine) {
+            lineOrig = origin.x;
+            fillOrig = origin.y;
+        }
+        else {
+            lineOrig = origin.y;
+            fillOrig = origin.x;
+        }
+
+        if (fLineInc)
+            r.x += lineOrig;
+        else
+            r.x = lineOrig - (r.x + r.width);
+
+        if (fFillInc)
+            r.y += fillOrig;
+        else
+            r.y = fillOrig - (r.y + r.height);
+
+
+        if (!fHLine) {
+            int t = r.x;
+            r.x = r.y;
+            r.y = t;
+            t = r.width;
+            r.width = r.height;
+            r.height = t;
+        }
+    }
+
+
+    public synchronized void getBoundingRect(Rectangle r, 
+                                             TextOffset offset1,
+                                             TextOffset offset2,
+                                             Point origin,
+                                             boolean tight)
+    {
+        checkTimeStamp();
+        if (offset1.equals(offset2)) {
+            getCaretRect(r, offset1, origin);
+            return;
+        }
+        if (offset1.greaterThan(offset2)) {
+            TextOffset t; t = offset1; offset1 = offset2; offset2 = t;
+        }
+
+        formatToOffset(offset2);
+
+        int line = getValidLineContaining(offset1);
+        r.y = lineGraphicStartInternal(line);
+        
+        int gLimit;
+        boolean sameLine = false;
+                
+        if (afterLastParagraph(offset2))
+            gLimit = fPixHeight + lastCharHeight();
+        else {
+            int line2 = getValidLineContaining(offset2);
+            gLimit = lineGraphicLimitInternal(line2);
+            sameLine = (line == line2);
+        }
+
+        r.height = gLimit - r.y;
+
+        if (sameLine && tight==TIGHT) {
+            Rectangle rt = new Rectangle();
+            getCaretRect(rt, offset1, origin);
+            r.setBounds(rt);
+            if (!offset1.equals(offset2)) {
+                getCaretRect(rt, offset2, origin);
+                r.add(rt);
+            }
+        }
+        else {
+            r.x = fMinX;
+            r.width = fMaxX - fMinX;
+            intlRect(origin, r);
+        }
+
+        // System.out.print("gbr: " + r.x + ", " + r.y + ", " + r.width + ", " + r.height);
+
+        // System.out.println(" --> " + r.x + ", " + r.y + ", " + r.width + ", " + r.height);
+    }
+
+    /**
+    * Compute the offset resulting from moving from a previous offset in direction dir.
+    * For arrow keys.
+    * @param result the offset to modify and return.  may be null, if so a new offset is allocated, modified, and returned.
+    * @param previousOffset the insertion offset prior to the arrow key press.
+    * @param direction the direction of the arrow key (eUp, eDown, eLeft, or eRight)
+    * @returns new offset based on direction and previous offset.
+    */
+    public synchronized TextOffset findInsertionOffset(TextOffset result, TextOffset prevOffset, short dir)
+    {
+        return findNewInsertionOffset(result, prevOffset, prevOffset, dir);
+    }
+
+    /**
+     * Transform key direction:  after this step, "left" means previous glyph, "right" means next glyph,
+     *"up" means previous line, "down" means next line
+     */
+    private short remapArrowKey(short dir) {
+
+        if (!fLineInc) {
+            if (dir == eLeft)
+                dir = eRight;
+            else if (dir == eRight)
+                dir = eLeft;
+        }
+
+        if (!fFillInc) {
+            if (dir == eUp)
+                dir = eDown;
+            else if (dir == eDown)
+                dir = eUp;
+        }
+
+        if (!fHLine) {
+            if (dir == eLeft)
+                dir = eUp;
+            else if (dir == eRight)
+                dir = eDown;
+            else if (dir == eUp)
+                dir = eLeft;
+            else if (dir == eDown)
+                dir = eRight;
+        }
+
+        return dir;
+    }
+
+    /**
+    * Compute the offset resulting from moving from a previous offset, starting at an original offset, in direction dir.
+    * For arrow keys.  Use this for "smart" up/down keys.
+    * @param result the offset to modify and return.  May be null, if so a new offset is allocated, modified, and returned.
+    * @param origOffset the offset at which an up-down arrow key sequence began.
+    * @param prevOffset the insertion offset prior to the arrow key press
+    * @param dir the direction of the arrow key (eUp, eDown, eLeft, or eRight)
+    * @returns new offset based on direction, original offset, and previous offset.
+    */
+    public synchronized TextOffset findNewInsertionOffset(TextOffset result, TextOffset origOffset, TextOffset prevOffset, short dir)
+    {
+        checkTimeStamp();
+        if (result == null)
+            result = new TextOffset();
+
+        dir = remapArrowKey(dir);
+
+        // assume that text at origOffset and prevOffset has already been formatted
+
+        if (dir == eLeft || dir == eRight) {
+            formatToOffset(prevOffset);
+            int line = getValidLineContaining(prevOffset);
+
+            result.fPlacement = TextOffset.AFTER_OFFSET;
+            result.fOffset = fLineTable[line].getNextOffset(fLTCurTextLen, prevOffset.fOffset, dir);
+            if (result.fOffset < 0) {
+                result.fOffset = 0;
+            }
+            else if (result.fOffset >= fLTCurTextLen) {
+                result.setOffset(fLTCurTextLen, TextOffset.BEFORE_OFFSET);
+            }
+        }
+        else {
+            int distOnLine;
+
+            if (afterLastParagraph(origOffset))
+                distOnLine = 0;
+            else {
+                int line = getValidLineContaining(origOffset);
+
+                distOnLine = fLineTable[line].strongCaretBaselinePosition(fLTCurTextLen, fLineDim, origOffset.fOffset);
+            }
+
+            // get prevOffset's line
+            int line;
+            if (afterLastParagraph(prevOffset))
+                line = lastLine() + 1;
+            else {
+                line = getLineContaining(prevOffset);
+
+                if (dir == eDown && (line == kAfterLastLine || line == lastLine())
+                        && (lastLineCharStop() < fText.length())) {
+                    shiftTableTo(lastLine());
+                    formatText(lastLineCharStop(), 1, Integer.MAX_VALUE, true);
+                    line = getLineContaining(prevOffset);
+                }
+
+                if (line == kBeforeFirstLine)
+                    line = 0;
+                else if (line == kAfterLastLine)
+                    line = lastLine();
+            }
+
+            if (dir == eUp)
+                line--;
+            else if (dir == eDown)
+                line++;
+            else
+                throw new IllegalArgumentException("Debug: Illegal direction parameter in findNewInsertionOffset");
+
+            if (line < 0) {
+                //result.setOffset(0, TextOffset.AFTER_OFFSET);
+                result.assign(prevOffset);
+            }
+            else if (line > lastLine()) {
+                result.setOffset(fLTCurTextLen, TextOffset.BEFORE_OFFSET);
+            }
+            else {
+                if (fLineTable[line] == null)
+                    line = (dir == eUp)? fLTPosEnd : fLTNegStart;
+
+                // anchor is null since we never want a position after newline.  If we used the real anchor,
+                // we might not ignore the newline even though infiniteMode is true.
+                lineDimToOffset(result, line, distOnLine, 0, null, true);
+            }
+        }
+
+        // System.out.println("fnio prev: " + prevOffset + ", new: " + result);
+
+        return result;
+    }
+
+    public synchronized void stopBackgroundFormatting()
+    {
+        checkTimeStamp();
+        fBgFormatAllowed = false;
+    }
+
+    private synchronized void enableBGFormat()
+    {
+        try {
+            fBgFormatAllowed = true;
+            notify();
+        }
+        catch (IllegalMonitorStateException e) {
+        }
+    }
+
+    private int lineIndexToNumber(int lineIndex) {
+
+        if (lineIndex <= fLTPosEnd) {
+            return lineIndex;
+        }
+        else {
+            return lineIndex - (fLTNegStart-fLTPosEnd-1);
+        }
+    }
+
+    private int lineNumberToIndex(int lineNumber) {
+
+        if (lineNumber <= fLTPosEnd) {
+            return lineNumber;
+        }
+        else {
+            return lineNumber + (fLTNegStart-fLTPosEnd-1);
+        }
+    }
+
+    private void formatToLineNumber(int lineNumber) {
+
+        while (lastLineCharStop() < fLTCurTextLen &&
+                lineNumber >= lineIndexToNumber(fLTSize)) {
+            // could be smarter and choose larger amounts for
+            // larger lines, but probably not worth the effort
+            formatToHeight(fPixHeight + kPixIncrement);
+        }
+    }
+
+    private static final boolean STRICT = true;
+    private static final boolean LENIENT = false;
+
+    /**
+     * Insure that at least lineNumber lines exist, doing
+     * extra formatting if necessary.
+     * Throws exception if lineNumber is not valid.
+     * @param strict if STRICT, only lines [0...maxLineNumber()]
+     *        are permitted.  If LENIENT, maxLineNumber()+1 is
+     *        the greatest valid value.
+     */
+    private void validateLineNumber(int lineNumber, boolean strict) {
+
+        formatToLineNumber(lineNumber);
+
+        int maxNumber = lineIndexToNumber(fLTSize);
+        if (strict == STRICT) {
+            maxNumber -= 1;
+        }
+
+        if (lineNumber > maxNumber+1 ||
+                (lineNumber == maxNumber+1 && !emptyParagraphAtEndOfText())) {
+            throw new IllegalArgumentException("Invalid line number: " + lineNumber);
+        }
+    }
+
+    public synchronized int getLineCount() {
+
+        // format all text:
+        formatToHeight(Integer.MAX_VALUE);
+
+        int lineCount = lineIndexToNumber(fLTSize);
+
+        if (emptyParagraphAtEndOfText()) {
+            lineCount += 1;
+        }
+
+        return lineCount;
+    }
+    
+    public synchronized int lineContaining(int charIndex) {
+        
+        formatToOffset(charIndex, TextOffset.AFTER_OFFSET);
+        
+        boolean placement = TextOffset.AFTER_OFFSET;
+        if (charIndex == fLTCurTextLen && charIndex > 0) {
+            placement = emptyParagraphAtEndOfText()? TextOffset.AFTER_OFFSET :
+                                                     TextOffset.BEFORE_OFFSET;
+        }
+        
+        return lineContaining(charIndex, placement);
+    }
+
+    public synchronized int lineContaining(TextOffset offset) {
+
+        formatToOffset(offset);
+
+        if (afterLastParagraph(offset)) {
+            return lineIndexToNumber(fLTSize);
+        }
+        
+        return lineContaining(offset.fOffset, offset.fPlacement);
+    }
+    
+    private int lineContaining(int off, boolean placement) {
+        
+        int line = off==0? 0 : getLineContaining(off, placement);
+        
+        if (line == kAfterLastLine) {
+            line = fLTSize;
+        }
+        else if (line == kBeforeFirstLine) {
+            throw new Error("lineContaining got invalid result from getLineContaining().");
+        }
+
+        return lineIndexToNumber(line);
+    }
+
+    public synchronized int lineRangeLow(int lineNumber) {
+
+        validateLineNumber(lineNumber, STRICT);
+        int index = lineNumberToIndex(lineNumber);
+
+        if (index == fLTSize) {
+            if (emptyParagraphAtEndOfText()) {
+                return lastLineCharStop();
+            }
+        }
+
+        if (index >= fLTSize) {
+            throw new IllegalArgumentException("lineNumber is invalid.");
+        }
+        else {
+            return lineCharStartInternal(index);
+        }
+    }
+
+    public synchronized int lineRangeLimit(int lineNumber) {
+
+        validateLineNumber(lineNumber, STRICT);
+        int index = lineNumberToIndex(lineNumber);
+
+        if (index == fLTSize) {
+            if (emptyParagraphAtEndOfText()) {
+                return lastLineCharStop();
+            }
+        }
+
+        if (index >= fLTSize) {
+            throw new IllegalArgumentException("lineNumber is invalid.");
+        }
+        else {
+            return lineCharLimitInternal(index);
+        }
+    }
+
+    /**
+     * Return the number of the line at the given graphic height.
+     * If height is greater than full height, return line count.
+     */
+    public synchronized int lineAtHeight(int height) {
+
+        if (height >= fPixHeight) {
+
+            int line = getLineCount();
+            if (height < fFullPixHeight) {
+                line -= 1;
+            }
+            return line;
+        }
+        else if (height < 0) {
+            return -1;
+        }
+        else {
+            return lineIndexToNumber(findLineAt(height));
+        }
+    }
+
+    public synchronized int lineGraphicStart(int lineNumber) {
+
+        checkTimeStamp();
+        validateLineNumber(lineNumber, LENIENT);
+
+        int index = lineNumberToIndex(lineNumber);
+
+        if (index < fLTSize) {
+            return lineGraphicStartInternal(index);
+        }
+        else {
+            if (index == fLTSize+1) {
+                return fFullPixHeight;
+            }
+            else {
+                return fPixHeight;
+            }
+        }
+    }
+
+    public synchronized boolean lineIsLeftToRight(int lineNumber) {
+        
+        validateLineNumber(lineNumber, STRICT);
+        
+        int index = lineNumberToIndex(lineNumber);
+        
+        if (index < fLTSize) {
+            return fLineTable[index].isLeftToRight();
+        }
+        else {
+            AttributeMap st = fText.paragraphStyleAt(fLTCurTextLen);
+            return !TextAttribute.RUN_DIRECTION_RTL.equals(st.get(TextAttribute.RUN_DIRECTION));
+        }
+    }
+
+    /**
+    * Number of pixels by which to advance formatting in the background.
+    */
+    private static final int kPixIncrement = 100;
+
+    /**
+    * Time to sleep between background formatting operations.
+    */
+    private static final int kInterval = 100;
+
+    /**
+    * Perform periodic background formatting.
+    */
+    public void run()
+    {
+        while (true) {
+            synchronized (this) {
+                while(!fBgFormatAllowed) {
+                    try {
+                        wait();
+                    } catch(InterruptedException e) {
+                    }
+                }
+
+                checkTimeStamp();                
+                formatToHeight(fPixHeight + kPixIncrement);
+
+                if (lastLineCharStop() == fLTCurTextLen) {
+                    stopBackgroundFormatting();
+                }
+            }
+
+            try {
+                Thread.sleep(kInterval);
+            }
+            catch(InterruptedException e) {
+            }
+        }
+    }
+
+    private ParagraphRenderer getRendererFor(AttributeMap s) {
+    
+        // Note:  eventually we could let clients put their own renderers
+        // on the text.
+        BidiParagraphRenderer renderer = (BidiParagraphRenderer) fRendererCache.get(s);
+        if (renderer == null) {
+            renderer = new BidiParagraphRenderer(fDefaultValues.addAttributes(s), fDefaultCharMetric);
+            fRendererCache.put(s, renderer);
+        }
+        return renderer;
+    }
+
+}
diff --git a/src/com/ibm/richtext/textformat/BidiParagraphRenderer.java b/src/com/ibm/richtext/textformat/BidiParagraphRenderer.java
new file mode 100755
index 0000000..f6b2413
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/BidiParagraphRenderer.java
@@ -0,0 +1,1150 @@
+/*
+ * @(#)$RCSfile: BidiParagraphRenderer.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:42 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import java.awt.Color;
+import java.awt.Rectangle;
+import java.awt.Shape;
+
+import java.util.Vector;
+import java.util.Hashtable;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MTabRuler;
+import com.ibm.richtext.styledtext.TabStop;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.textlayout.Graphics2DConversion;
+
+///*JDK12IMPORTS
+import java.awt.Graphics2D;
+
+import java.awt.font.FontRenderContext;
+import java.awt.font.TextLayout;
+import java.awt.font.LineBreakMeasurer;
+import java.awt.font.TextHitInfo;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Rectangle2D;
+//JDK12IMPORTS*/
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.Graphics2D;
+
+import com.ibm.richtext.textlayout.FontRenderContext;
+import com.ibm.richtext.textlayout.TextLayout;
+import com.ibm.richtext.textlayout.LineBreakMeasurer;
+import com.ibm.richtext.textlayout.TextHitInfo;
+
+import com.ibm.richtext.textlayout.AffineTransform;
+import com.ibm.richtext.textlayout.GeneralPath;
+import com.ibm.richtext.textlayout.Rectangle2D;
+JDK11IMPORTS*/
+
+final class BidiParagraphRenderer extends ParagraphRenderer {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private final class BidiSegment {
+        TextLayout fLayout;
+        Rectangle2D.Float fBounds;
+        int fDistanceFromLeadingMargin;
+    }
+
+    private final class BidiLayoutInfo extends LayoutInfo
+    {                    
+        int fCharLength;      // number of characters on line (was fLength)
+        int fAscent;
+        int fDescent;
+        int fLeading;
+        int fVisibleAdvance;  // distance along line direction ie width
+        int fTotalAdvance;    // distance along line direction including trailing whitespace
+
+        int fLeadingMargin;   // screen distance from leading margin
+
+        boolean fLeftToRight; // true iff the orientation is left-to-right
+
+        final Vector fSegments = new Vector(); // segments to render, in logical order
+
+        public int getCharLength() {
+            return fCharLength;
+        }
+
+        public int getAscent() {
+            return fAscent;
+        }
+
+        public int getDescent() {
+            return fDescent;
+        }
+
+        public int getLeading() {
+            return fLeading;
+        }
+
+        public int getVisibleAdvance() {
+            return fVisibleAdvance;
+        }
+
+        public int getTotalAdvance() {
+            return fTotalAdvance;
+        }
+
+        public int getLeadingMargin() {
+            return fLeadingMargin;
+        }
+
+        public boolean isLeftToRight() {
+            return fLeftToRight;
+        }
+
+        public int getHeight() {
+            return fAscent + fDescent + fLeading;
+        }
+
+        public String toString()
+        {
+            return "LayoutInfo(charStart: " + getCharStart(0) +
+                ", fCharLength: " + fCharLength +
+                ", fAscent: " + fAscent +
+                ", fDescent: " + fDescent +
+                ", fVisibleAdvance: " + fVisibleAdvance +
+                ", fTotalAdvance: " + fTotalAdvance +
+                ", fLeadingMargin: " + fLeadingMargin +
+                ")";
+        }
+
+        BidiParagraphRenderer fRenderer;
+
+        // just delegate to renderer for now
+
+        public void renderWithHighlight(int lengthBasis,
+                                        Graphics2D g,
+                                        int lineBound,
+                                        int x,
+                                        int y,
+                                        TextOffset selStart,
+                                        TextOffset selStop,
+                                        Color highlightColor) {
+
+            fRenderer.renderWithHighlight(this,
+                                          lengthBasis,
+                                          g,
+                                          lineBound,
+                                          x,
+                                          y,
+                                          selStart,
+                                          selStop,
+                                          highlightColor);
+        }
+
+        public void render(int lengthBasis,
+                           Graphics2D g,
+                           int lineBound,
+                           int x,
+                           int y) {
+            fRenderer.render(this, lengthBasis, g, lineBound, x, y);
+        }
+
+        public void renderCaret(MConstText text,
+                                int lengthBasis,
+                                Graphics2D g,
+                                int lineBound,
+                                int x,
+                                int y,
+                                int charOffset,
+                                Color strongCaretColor,
+                                Color weakCaretColor) {
+            fRenderer.renderCaret(this, text, lengthBasis, g, lineBound, x, y, charOffset,
+                                        strongCaretColor, weakCaretColor);
+        }
+
+        public TextOffset pixelToOffset(int lengthBasis,
+                                        TextOffset result,
+                                        int lineBound,
+                                        int x,
+                                        int y) {
+            return fRenderer.pixelToOffset(this, lengthBasis, result, lineBound, x, y);
+        }
+
+        public Rectangle caretBounds(MConstText text,
+                                     int lengthBasis,
+                                     int lineBound,
+                                     int charOffset,
+                                     int x,
+                                     int y) {
+            return fRenderer.caretBounds(this, text, lengthBasis, lineBound, charOffset, x, y);
+        }
+        
+        public int strongCaretBaselinePosition(int lengthBasis,
+                                               int lineBound,
+                                               int charOffset) {
+
+            return fRenderer.strongCaretBaselinePosition(this, lengthBasis, lineBound, charOffset);
+        }
+
+        public int getNextOffset(int lengthBasis,
+                                 int charOffset,
+                                 short dir) {
+
+            return fRenderer.getNextOffset(this, lengthBasis, charOffset, dir);
+        }
+    }
+
+    private static final int FLUSH_LEADING = TextAttribute.FLUSH_LEADING.intValue();
+    private static final int FLUSH_CENTER = TextAttribute.FLUSH_CENTER.intValue();
+    private static final int FLUSH_TRAILING = TextAttribute.FLUSH_TRAILING.intValue();
+    private static final int FULLY_JUSTIFIED = TextAttribute.FULLY_JUSTIFIED.intValue();
+
+    private AttributeMap cacheStyle = null;
+
+    private float fLeadingMargin;
+    private float fTrailingMargin;
+    private float fFirstLineIndent;
+    private float fMinLineSpacing;
+    private float fExtraLineSpacing;
+    
+    private int fFlush = -1;
+    private MTabRuler fTabRuler;
+    
+    private boolean fLtrDefault;
+    private DefaultCharacterMetric fDefaultCharMetric;
+    
+    BidiParagraphRenderer(AttributeMap pStyle, DefaultCharacterMetric defaultCharMetric) {
+
+        fDefaultCharMetric = defaultCharMetric;
+        initRenderer(pStyle);
+    }
+
+    private float getFloatValue(Object key, AttributeMap style) {
+        return ((Float)style.get(key)).floatValue();
+    }
+    
+    private int getIntValue(Object key, AttributeMap style) {
+        return ((Integer)style.get(key)).intValue();
+    }
+    
+    /**
+     * NOTE:  it is illegal to initialize a StandardParagraphRenderer for any style
+     * other than the one it was created with.
+     */
+    public void initRenderer(AttributeMap pStyle) {
+
+        if (cacheStyle == null) {
+
+            fLeadingMargin = getFloatValue(TextAttribute.LEADING_MARGIN, pStyle);
+            fTrailingMargin = getFloatValue(TextAttribute.TRAILING_MARGIN, pStyle);
+            fFirstLineIndent = getFloatValue(TextAttribute.FIRST_LINE_INDENT, pStyle);
+            fMinLineSpacing = getFloatValue(TextAttribute.MIN_LINE_SPACING, pStyle);
+            fExtraLineSpacing = getFloatValue(TextAttribute.EXTRA_LINE_SPACING, pStyle);
+
+            fFlush = getIntValue(TextAttribute.LINE_FLUSH, pStyle);
+
+            fTabRuler = (MTabRuler) pStyle.get(TextAttribute.TAB_RULER);
+            
+            Object runDir = pStyle.get(TextAttribute.RUN_DIRECTION);
+            fLtrDefault = !TextAttribute.RUN_DIRECTION_RTL.equals(runDir);
+
+            cacheStyle = pStyle;
+        }
+        else if (pStyle != cacheStyle) {
+            if (!pStyle.equals(cacheStyle)) {
+                throw new Error("Attempt to share BidiParagraphRenderer between styles!");
+            }
+            else {
+                cacheStyle = pStyle;
+            }
+        }
+    }
+
+    private static boolean isTab(char ch) {
+        return ch == '\t';
+    }
+
+    /**
+     * Fill in info with the next line.
+     * @param measurer the LineBreakMeasurer for this paragraph.
+     *  Current position should be the first character on the line.
+     *  If null, a 0-length line is generated.  If measurer is null
+     *  then paragraphStart and paragraphLimit should be equal.
+     */
+    // Usually totalFormatWidth and lineBound will be the same.
+    // totalFormatWidth is used for wrapping, but lineBound is
+    // for flushing.  These may be different for unwrapped text,
+    // for example.
+    public LayoutInfo layout(MConstText text,
+                             LayoutInfo layoutToReuse,
+                             LineBreakMeasurer measurer,
+                             FontRenderContext frc,
+                             int paragraphStart,
+                             int paragraphLimit,
+                             int totalFormatWidth,
+                             int lineBound) {
+
+        if ((measurer==null) != (paragraphStart==paragraphLimit)) {
+            throw new IllegalArgumentException(
+                    "measurer, paragraphStart, paragraphLimit are wrong.");
+        }
+        BidiLayoutInfo line = null;
+
+        try {
+            line = (BidiLayoutInfo) layoutToReuse;
+        }
+        catch(ClassCastException e) {
+        }
+
+        if (line == null) {
+            line = new BidiLayoutInfo();
+        }
+
+        line.fRenderer = this;
+
+        final int lineCharStart = measurer==null? paragraphStart : measurer.getPosition();
+        line.setCharStart(lineCharStart);
+
+        final int lineIndent = (lineCharStart==paragraphStart)? (int) fFirstLineIndent : 0;
+
+        int formatWidth = totalFormatWidth - (int) (fLeadingMargin + fTrailingMargin);
+        computeLineMetrics(text, line, measurer, frc,
+                            paragraphStart, paragraphLimit, formatWidth, lineIndent);
+
+        // position the line according to the line flush
+        if (fFlush == FLUSH_TRAILING || fFlush == FLUSH_CENTER) {
+            int lineArea = lineBound - (int) (fLeadingMargin + fTrailingMargin);
+            int advanceDifference = lineArea - line.fVisibleAdvance;
+
+            if (fFlush == FLUSH_TRAILING) {
+                line.fLeadingMargin = ((int) (fLeadingMargin)) + advanceDifference;
+            }
+            else if (fFlush == FLUSH_CENTER) {
+                line.fLeadingMargin = (int) (fLeadingMargin + advanceDifference/2);
+            }
+        }
+        else {
+            line.fLeadingMargin = (int) fLeadingMargin;
+        }
+
+        return line;
+    }
+
+    /**
+     * Fill in the following fields in line:
+     * fCharLength, fAscent, fDescent, fLeading, fVisibleAdvance,
+     * fTotalAdvance.
+     * Uses: line.fLeadingMargin
+     * @param formatWidth the width to fit the line into.
+     */
+    private void computeLineMetrics(MConstText text,
+                                    BidiLayoutInfo line,
+                                    LineBreakMeasurer measurer,
+                                    FontRenderContext frc,
+                                    final int paragraphStart,
+                                    final int paragraphLimit,
+                                    final int formatWidth,
+                                    final int lineIndent) {
+
+        int segmentCount = 0;
+        /* variable not used boolean firstLine = measurer==null ||
+                            measurer.getPosition() == paragraphStart; */
+
+        if (measurer != null) {
+            computeSegments(text, line, measurer, paragraphLimit, formatWidth, lineIndent);
+
+            // iterate through segments and accumulate ascent, descent,
+            // leading, char length
+            float ascent = 0;
+            float descent = 0;
+            float descentPlusLeading = 0;
+
+            segmentCount = line.fSegments.size();
+            for (int i=0; i < segmentCount; i++) {
+                TextLayout layout = ((BidiSegment)line.fSegments.elementAt(i)).fLayout;
+                ascent = Math.max(ascent, layout.getAscent());
+                float segDescent = layout.getDescent();
+                descent = Math.max(descent, segDescent);
+                descentPlusLeading = Math.max(descentPlusLeading, segDescent+layout.getLeading());
+                line.fCharLength += layout.getCharacterCount();
+            }
+
+            line.fAscent = (int) Math.ceil(ascent);
+            line.fDescent = (int) Math.ceil(descent);
+            line.fLeading = (int) Math.ceil(descentPlusLeading) - line.fDescent;
+        }
+        else {
+            line.fLeftToRight = fLtrDefault;
+            line.fSegments.removeAllElements();
+
+            line.fCharLength = 0;
+
+            AttributeMap style = text.characterStyleAt(paragraphStart);
+            DefaultCharacterMetric.Metric cm = fDefaultCharMetric.getMetricForStyle(style);
+            line.fAscent = cm.getAscent();
+            line.fDescent = cm.getDescent();
+            line.fLeading = cm.getLeading();
+
+            line.fVisibleAdvance = line.fTotalAdvance = 0;
+        }
+
+        if (fExtraLineSpacing != 0) {
+            line.fAscent += (int) Math.ceil(fExtraLineSpacing);
+        }
+
+        if (fMinLineSpacing != 0){
+            int height = line.getHeight();
+            if (height < fMinLineSpacing) {
+                line.fAscent += Math.ceil(fMinLineSpacing - height);
+            }
+        }
+
+        final int lineNaturalAdvance = line.fTotalAdvance;
+
+        line.fTotalAdvance += lineIndent;
+        line.fVisibleAdvance += lineIndent;
+
+        if (measurer != null) {
+            // Now fill in fBounds field of BidiSegments.  fBounds should tile
+            // the line.
+            final float lineHeight = line.getHeight();
+
+            for (int i=1; i < segmentCount; i++) {
+
+                BidiSegment currentSegment = (BidiSegment) line.fSegments.elementAt(i-1);
+                BidiSegment nextSegment = (BidiSegment) line.fSegments.elementAt(i);
+
+                float origin;
+                float width;
+
+                if (line.fLeftToRight) {
+                    origin = 0;
+                    width = nextSegment.fDistanceFromLeadingMargin -
+                                currentSegment.fDistanceFromLeadingMargin;
+                }
+                else {
+                    origin = currentSegment.fDistanceFromLeadingMargin;
+                    origin -= nextSegment.fDistanceFromLeadingMargin;
+                    origin += (float) Math.ceil(nextSegment.fLayout.getAdvance());
+                    width = (float) Math.ceil(currentSegment.fLayout.getAdvance()) - origin;
+                }
+                currentSegment.fBounds = new Rectangle2D.Float(origin, -line.fAscent, width, lineHeight);
+            }
+
+            // set last segment's bounds
+            {
+                BidiSegment currentSegment = (BidiSegment) line.fSegments.elementAt(segmentCount-1);
+                float origin;
+                float width;
+
+                if (line.fLeftToRight) {
+                    origin = 0;
+                    width = lineNaturalAdvance - currentSegment.fDistanceFromLeadingMargin;
+                }
+                else {
+                    origin = currentSegment.fDistanceFromLeadingMargin - lineNaturalAdvance;
+                    width = (float) Math.ceil(currentSegment.fLayout.getAdvance()) - origin;
+                }
+
+                currentSegment.fBounds = new Rectangle2D.Float(origin, -line.fAscent, width, lineHeight);
+            }
+        }
+    }
+
+    /**
+     * Fill in fSegments, fLeftToRight.  measurer must not be null
+     */
+    private void computeSegments(MConstText text,
+                                 BidiLayoutInfo line,
+                                 LineBreakMeasurer measurer,
+                                 final int paragraphLimit,
+                                 final int formatWidth,
+                                 final int lineIndent) {
+
+        // Note on justification:  only the last segment of a line is
+        // justified.  
+        // Also, if a line ends in a tab it will not be justified.
+        // This behavior is consistent with other word processors
+        // I tried (MS Word and Lotus Word Pro).
+        
+        line.fSegments.removeAllElements();
+        line.fCharLength = 0;
+
+        TabStop currentTabStop = new TabStop((int)fLeadingMargin+lineIndent, TabStop.kLeading);
+
+        int segmentLimit = measurer.getPosition();
+        boolean firstSegment = true;
+
+        int advanceFromLeadingMargin = lineIndent;
+
+        boolean computeSegs = true;
+        
+        computeTabbedSegments: do {
+
+            // compute sementLimit:
+            if (segmentLimit <= measurer.getPosition()) {
+                while (segmentLimit < paragraphLimit) {
+                    if (isTab(text.at(segmentLimit++))) {
+                        break;
+                    }
+                }
+            }
+
+            // NOTE:  adjust available width for center tab!!!
+            //System.out.println("Format width: " + (formatWidth-advanceFromLeadingMargin) +
+            //                   ";  segmentLimit: " + segmentLimit);
+
+            int wrappingWidth = Math.max(formatWidth-advanceFromLeadingMargin, 0);
+            TextLayout layout = null;
+            if (firstSegment || wrappingWidth > 0 || segmentLimit > measurer.getPosition()+1) {
+                layout = measurer.nextLayout(wrappingWidth, segmentLimit, !firstSegment);
+            }
+
+            if (layout == null) {
+                if (firstSegment) {
+                    // I doubt this would happen, but check anyway
+                    throw new Error("First layout is null!");
+                }
+                break computeTabbedSegments;
+            }
+            
+            final int measurerPos = measurer.getPosition();
+            if (measurerPos < segmentLimit) {
+                computeSegs = false;
+                if (fFlush == FULLY_JUSTIFIED) {
+                    layout = layout.getJustifiedLayout(wrappingWidth);
+                }
+            }
+            else {
+                computeSegs = !(measurerPos == paragraphLimit);
+            }
+
+            if (firstSegment) {
+                firstSegment = false;
+                // Have to get ltr off of layout.  Not available from measurer,
+                // unfortunately.
+                line.fLeftToRight = layout.isLeftToRight();
+            }
+
+            BidiSegment segment = new BidiSegment();
+            segment.fLayout = layout;
+            int layoutAdvance = (int) Math.ceil(layout.getAdvance());
+
+            // position layout relative to leading margin, update logicalPositionOnLine
+            
+            int relativeTabPosition = currentTabStop.getPosition()-(int)fLeadingMargin;
+            int logicalPositionOfLayout;
+            switch (currentTabStop.getType()) {
+                case TabStop.kTrailing:
+                    logicalPositionOfLayout = Math.max(
+                                    relativeTabPosition-layoutAdvance,
+                                    advanceFromLeadingMargin);
+                    break;
+                case TabStop.kCenter:
+                    logicalPositionOfLayout = Math.max(
+                                    relativeTabPosition-(layoutAdvance/2),
+                                    advanceFromLeadingMargin);
+                    break;
+                default:  // includes decimal tab right now
+                    logicalPositionOfLayout = relativeTabPosition;
+                    break;
+            }
+
+            // position layout in segment
+            if (line.fLeftToRight) {
+                segment.fDistanceFromLeadingMargin = logicalPositionOfLayout;
+            }
+            else {
+                segment.fDistanceFromLeadingMargin = logicalPositionOfLayout+layoutAdvance;
+            }
+
+            // update advanceFromLeadingMargin
+            advanceFromLeadingMargin = logicalPositionOfLayout + layoutAdvance;
+
+            // add segment to segment Vector
+            line.fSegments.addElement(segment);
+
+            // get next tab
+            currentTabStop = fTabRuler.nextTab((int)fLeadingMargin+advanceFromLeadingMargin);
+            if (currentTabStop.getType() == TabStop.kLeading ||
+                            currentTabStop.getType() == TabStop.kAuto)  {
+                advanceFromLeadingMargin = currentTabStop.getPosition();
+                //System.out.println("Advance from leading margin:" + advanceFromLeadingMargin);
+
+            }
+            else {
+               //System.out.println("Non-leading tab, type=" + currentTabStop.getType());
+            }
+
+        } while (computeSegs);
+
+        // Now compute fTotalAdvance, fVisibleAdvance.  These metrics may be affected
+        // by a trailing tab.
+
+        {
+            BidiSegment lastSegment = (BidiSegment) line.fSegments.lastElement();
+            TextLayout lastLayout = lastSegment.fLayout;
+
+            if (line.fLeftToRight) {
+                line.fTotalAdvance = (int) Math.ceil(lastLayout.getAdvance()) +
+                                        lastSegment.fDistanceFromLeadingMargin;
+                line.fVisibleAdvance = (int) Math.ceil(lastLayout.getVisibleAdvance()) +
+                                        lastSegment.fDistanceFromLeadingMargin;
+            }
+            else {
+                line.fTotalAdvance = lastSegment.fDistanceFromLeadingMargin;
+                line.fVisibleAdvance = lastSegment.fDistanceFromLeadingMargin -
+                                        (int) Math.ceil(lastLayout.getAdvance() -
+                                            lastLayout.getVisibleAdvance());
+            }
+
+            if (isTab(text.at(measurer.getPosition()-1))) {
+                line.fTotalAdvance = Math.max(line.fTotalAdvance,
+                                                currentTabStop.getPosition());
+            }
+        }
+    }
+
+    /**
+     * Return the highlight shape for the given character offsets.
+     * The Shape returned is relative to the leftmost point on the
+     * baseline of line.
+     */
+    private Shape getHighlightShape(BidiLayoutInfo line,
+                                    int lengthBasis,
+                                    int lineBound,
+                                    int hlStart,
+                                    int hlLimit) {
+
+        if (hlStart >= hlLimit) {
+            throw new IllegalArgumentException("Highlight range length is not positive.");
+        }
+
+        final int leadingMargin = (line.fLeftToRight)?
+                line.fLeadingMargin : lineBound - line.fLeadingMargin;
+        final int segmentCount = line.fSegments.size();
+
+        Shape rval = null;
+        GeneralPath highlightPath = null;
+
+        int currentLayoutStart = line.getCharStart(lengthBasis);
+
+        for (int i=0; i < segmentCount; i++) {
+
+            BidiSegment segment = (BidiSegment) line.fSegments.elementAt(i);
+            TextLayout layout = segment.fLayout;
+            int charCount = layout.getCharacterCount();
+            int currentLayoutLimit = currentLayoutStart + charCount;
+            boolean rangesIntersect;
+            if (hlStart <= currentLayoutStart) {
+                rangesIntersect = hlLimit > currentLayoutStart;
+            }
+            else {
+                rangesIntersect = hlStart < currentLayoutLimit;
+            }
+
+            if (rangesIntersect) {
+
+                Shape currentHl = layout.getLogicalHighlightShape(
+                                        Math.max(hlStart-currentLayoutStart, 0),
+                                        Math.min(hlLimit-currentLayoutStart, charCount),
+                                        segment.fBounds);
+
+                float xTranslate;
+                if (line.fLeftToRight) {
+                    xTranslate = leadingMargin +
+                                 segment.fDistanceFromLeadingMargin;
+                }
+                else {
+                    xTranslate = leadingMargin -
+                                 segment.fDistanceFromLeadingMargin;
+                }
+
+                if (xTranslate != 0) {
+                    AffineTransform xform =
+                        AffineTransform.getTranslateInstance(xTranslate, 0);
+                    currentHl = xform.createTransformedShape(currentHl);
+                }
+
+                if (rval == null) {
+                    rval = currentHl;
+                }
+                else {
+                    if (highlightPath == null) {
+                        highlightPath = new GeneralPath();
+                        highlightPath.append(rval, false);
+                        rval = highlightPath;
+                    }
+                    highlightPath.append(currentHl, false);
+                }
+            }
+            currentLayoutStart = currentLayoutLimit;
+        }
+
+        return rval;
+    }
+
+    private void renderWithHighlight(BidiLayoutInfo line,
+                                     int lengthBasis,
+                                     Graphics2D g,
+                                     int lineBound,
+                                     int x,
+                                     int y,
+                                     TextOffset selStart,
+                                     TextOffset selStop,
+                                     Color highlightColor) {
+
+        final int lineCharStart = line.getCharStart(lengthBasis);
+
+        if (selStart != null && selStop != null && !selStart.equals(selStop) &&
+                line.fCharLength != 0 &&
+                selStart.fOffset < lineCharStart + line.fCharLength &&
+                selStop.fOffset > lineCharStart) {
+
+            Shape highlight = getHighlightShape(line, lengthBasis, lineBound, selStart.fOffset, selStop.fOffset);
+            if (highlight != null) {
+                Graphics2D hl = (Graphics2D) g.create();
+                hl.setColor(highlightColor);
+                hl.translate(x, y + line.fAscent);
+                hl.fill(highlight);
+            }
+        }
+
+        render(line, lengthBasis, g, lineBound, x, y);
+    }
+
+    /**
+     * Draw the line into the graphics.  (x, y) is the upper-left corner
+     * of the line.  The leading edge of a right-aligned line is aligned
+     * to (x + lineBound).
+     */
+    private void render(BidiLayoutInfo line,
+                        int lengthBasis,
+                        Graphics2D g,
+                        int lineBound,
+                        int x,
+                        int y) {
+
+        final int leadingMargin = (line.fLeftToRight)?
+                x + line.fLeadingMargin : x + lineBound - line.fLeadingMargin;
+        final int baseline = y + line.fAscent;
+        final int segmentCount = line.fSegments.size();
+
+        for (int i=0; i < segmentCount; i++) {
+
+            BidiSegment segment = (BidiSegment) line.fSegments.elementAt(i);
+
+            float drawX;
+            if (line.fLeftToRight) {
+                drawX = leadingMargin + segment.fDistanceFromLeadingMargin;
+            }
+            else {
+                drawX = leadingMargin - segment.fDistanceFromLeadingMargin;
+            }
+
+            segment.fLayout.draw(g, drawX, baseline);
+        }
+    }
+
+    private TextOffset hitTestSegment(TextOffset result,
+                                      int segmentCharStart,
+                                      BidiSegment segment,
+                                      int xInSegment,
+                                      int yInSegment) {
+
+        final TextLayout layout = segment.fLayout;
+        final int charCount = layout.getCharacterCount();
+        final int layoutAdvance = (int) Math.ceil(layout.getAdvance());
+        Rectangle2D bounds = segment.fBounds;
+
+        final boolean ltr = layout.isLeftToRight();
+
+        if (ltr && (xInSegment >= layoutAdvance) || !ltr && (xInSegment <= 0)) {
+
+            // pretend the extra space at the end of the line is a
+            // tab and 'hit-test' it.
+            double tabCenter;
+            if (ltr) {
+                tabCenter = (layoutAdvance+bounds.getMaxX()) / 2;
+            }
+            else {
+                tabCenter = bounds.getX() / 2;
+            }
+
+            if ((xInSegment >= tabCenter) == ltr) {
+                result.fOffset = charCount;
+                result.fPlacement = TextOffset.BEFORE_OFFSET;
+            }
+            else {
+                result.fOffset = charCount-1;
+                result.fPlacement = TextOffset.AFTER_OFFSET;
+            }
+        }
+        else {
+            TextHitInfo info = layout.hitTestChar(xInSegment, yInSegment, segment.fBounds);
+            result.fOffset = info.getInsertionIndex();
+            if (result.fOffset == 0) {
+                result.fPlacement = TextOffset.AFTER_OFFSET;
+            }
+            else if (result.fOffset == charCount) {
+                result.fPlacement = TextOffset.BEFORE_OFFSET;
+            }
+            else {
+                result.fPlacement = info.isLeadingEdge()?
+                        TextOffset.AFTER_OFFSET : TextOffset.BEFORE_OFFSET;
+            }
+        }
+
+        result.fOffset += segmentCharStart;
+        return result;
+    }
+
+    /**
+     * Return the offset at the point (x, y).  (x, y) is relative to the top-left
+     * of the line.  The leading edge of a right-aligned line is aligned
+     * to lineBound.
+     */
+    private TextOffset pixelToOffset(BidiLayoutInfo line,
+                                     int lengthBasis,
+                                     TextOffset result,
+                                     int lineBound,
+                                     int x,
+                                     int y) {
+
+        if (result == null) {
+            result = new TextOffset();
+        }
+
+        final int yInSegment = y - line.fAscent;
+        final int leadingMargin = (line.fLeftToRight)?
+                line.fLeadingMargin : lineBound - line.fLeadingMargin;
+        final int lineCharStart = line.getCharStart(lengthBasis);
+
+        // first see if point is before leading edge of line
+        final int segmentCount = line.fSegments.size();
+        {
+            int segLeadingMargin = leadingMargin;
+            if (segmentCount > 0) {
+                BidiSegment firstSeg = (BidiSegment) line.fSegments.elementAt(0);
+                if (line.fLeftToRight) {
+                    segLeadingMargin += firstSeg.fDistanceFromLeadingMargin;
+                }
+                else {
+                    segLeadingMargin -= firstSeg.fDistanceFromLeadingMargin;
+                    segLeadingMargin += (float) firstSeg.fBounds.getMaxX();
+                }
+            }
+            if (line.fLeftToRight == (x <= segLeadingMargin)) {
+                result.fOffset = lineCharStart;
+                result.fPlacement = TextOffset.AFTER_OFFSET;
+                return result;
+            }
+        }
+
+        int segmentCharStart = lineCharStart;
+
+        for (int i=0; i < segmentCount; i++) {
+
+            BidiSegment segment = (BidiSegment) line.fSegments.elementAt(i);
+            int segmentOrigin = line.fLeftToRight?
+                            leadingMargin+segment.fDistanceFromLeadingMargin :
+                            leadingMargin-segment.fDistanceFromLeadingMargin;
+            int xInSegment = x - segmentOrigin;
+            if (line.fLeftToRight) {
+                if (segment.fBounds.getMaxX() > xInSegment) {
+                    return hitTestSegment(result, segmentCharStart, segment, xInSegment, yInSegment);
+                }
+            }
+            else {
+                if (segment.fBounds.getX() < xInSegment) {
+                    return hitTestSegment(result, segmentCharStart, segment, xInSegment, yInSegment);
+                }
+            }
+            segmentCharStart += segment.fLayout.getCharacterCount();
+        }
+
+        result.fOffset = lineCharStart + line.fCharLength;
+        result.fPlacement = TextOffset.BEFORE_OFFSET;
+        return result;
+    }
+
+    private void renderCaret(BidiLayoutInfo line,
+                             MConstText text,
+                             int lengthBasis,
+                             Graphics2D g,
+                             int lineBound,
+                             int x,
+                             int y,
+                             final int charOffset,
+                             Color strongCaretColor,
+                             Color weakCaretColor)
+    {
+        final int segmentCount = line.fSegments.size();
+        final int lineStart = line.getCharStart(lengthBasis);
+
+        int currentStart = lineStart;
+        BidiSegment segment = null;
+        int segmentIndex;
+
+        for (segmentIndex=0; segmentIndex < segmentCount; segmentIndex++) {
+            segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+            int currentEndpoint = currentStart + segment.fLayout.getCharacterCount();
+            if (currentEndpoint > charOffset) {
+                break;
+            }
+            currentStart = currentEndpoint;
+        }
+
+        /*
+            There are two choices here:
+            1. get carets from a TextLayout and render them, or
+            2. make up a caret ourselves and render it.
+            We want to do 2 when:
+                * there is no text on the line, or
+                * the line ends with a tab and we are drawing the last caret on the line
+            Otherwise, we want 1.
+        */
+
+        if (segmentIndex == segmentCount && segmentCount > 0) {
+            // If we get here, line length is not 0, and charOffset is at end of line
+            if (!isTab(text.at(charOffset-1))) {
+                segmentIndex = segmentCount-1;
+                segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+                currentStart = lineStart + line.getCharLength() -
+                                    segment.fLayout.getCharacterCount();
+            }
+        }
+
+        Object savedPaint = Graphics2DConversion.getColorState(g);
+
+        try {
+            if (segmentIndex < segmentCount) {
+                TextLayout layout = segment.fLayout;
+                int offsetInLayout = charOffset - currentStart;
+                Shape[] carets = layout.getCaretShapes(offsetInLayout, segment.fBounds);
+                g.setColor(strongCaretColor);
+                int layoutPos = line.fLeadingMargin + segment.fDistanceFromLeadingMargin;
+                int layoutX = line.fLeftToRight?
+                        x + layoutPos : x + lineBound - layoutPos;
+                int layoutY = y + line.fAscent;
+
+                // Translating and then clipping doesn't work.  Try this:
+                Rectangle2D.Float clipRect = new Rectangle2D.Float();
+                clipRect.setRect(segment.fBounds);
+                clipRect.x += layoutX;
+                clipRect.y += layoutY;
+                clipRect.width += 1;
+                clipRect.height -= 1;
+
+                Object savedClip = ClipWorkaround.saveClipState(g);
+                try {
+                    ClipWorkaround.translateAndDrawShapeWithClip(g,
+                                                                layoutX,
+                                                                layoutY,
+                                                                clipRect,
+                                                                carets[0]);
+                    if (carets[1] != null) {
+                        g.setColor(weakCaretColor);
+                        ClipWorkaround.translateAndDrawShapeWithClip(g,
+                                                                    layoutX,
+                                                                    layoutY,
+                                                                    clipRect,
+                                                                    carets[1]);
+                    }
+                }
+                finally {
+                    ClipWorkaround.restoreClipState(g, savedClip);
+                }
+            }
+            else {
+                int lineEnd = line.fLeadingMargin + line.fTotalAdvance;
+                int endX = line.fLeftToRight? lineEnd : lineBound-lineEnd;
+                endX += x;
+                g.drawLine(endX, y, endX, y+line.getHeight()-1);
+            }
+        }
+        finally {
+            Graphics2DConversion.restoreColorState(g, savedPaint);
+        }
+    }
+
+    private Rectangle caretBounds(BidiLayoutInfo line,
+                                  MConstText text,
+                                  int lengthBasis,
+                                  int lineBound,
+                                  int charOffset,
+                                  int x,
+                                  int y) {
+
+        final int segmentCount = line.fSegments.size();
+        final int lineStart = line.getCharStart(lengthBasis);
+        int currentStart = lineStart;
+        BidiSegment segment = null;
+        int segmentIndex;
+
+        for (segmentIndex=0; segmentIndex < segmentCount; segmentIndex++) {
+            segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+            int currentEndpoint = currentStart + segment.fLayout.getCharacterCount();
+            if (currentEndpoint > charOffset) {
+                break;
+            }
+            currentStart = currentEndpoint;
+        }
+
+        if (segmentIndex == segmentCount && segmentCount > 0) {
+            // If we get here, line length is not 0, and charOffset is at end of line
+            if (!isTab(text.at(charOffset-1))) {
+                segmentIndex = segmentCount-1;
+                segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+                currentStart = lineStart + line.getCharLength() -
+                                    segment.fLayout.getCharacterCount();
+            }
+        }
+
+        Rectangle r;
+        
+        if (segmentIndex < segmentCount) {
+            TextLayout layout = segment.fLayout;
+            int offsetInLayout = charOffset - currentStart;
+            Shape[] carets = layout.getCaretShapes(offsetInLayout, segment.fBounds);
+            r = carets[0].getBounds();
+            if (carets[1] != null) {
+                r.add(carets[1].getBounds());
+            }
+            r.width += 1;
+            
+            int layoutPos = line.fLeadingMargin + segment.fDistanceFromLeadingMargin;
+            if (line.fLeftToRight) {
+                r.x += layoutPos;
+            }
+            else {
+                r.x += lineBound - layoutPos;
+            }
+            r.y += line.fAscent;
+        }
+        else {
+            r = new Rectangle();
+            r.height = line.getHeight();
+            r.width = 1;
+            int lineEnd = line.fLeadingMargin + line.fTotalAdvance;
+            if (line.fLeftToRight) {
+                r.x = lineEnd;
+            }
+            else {
+                r.x = lineBound - lineEnd;
+            }
+        }
+        
+        r.translate(x, y);
+        return r;
+    }
+
+    private int strongCaretBaselinePosition(BidiLayoutInfo line,
+                                            int lengthBasis,
+                                            int lineBound,
+                                            int charOffset) {
+
+        final int segmentCount = line.fSegments.size();
+        int currentStart = line.getCharStart(lengthBasis);
+        BidiSegment segment = null;
+        int segmentIndex;
+
+        for (segmentIndex=0; segmentIndex < segmentCount; segmentIndex++) {
+            segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+            int currentEndpoint = currentStart + segment.fLayout.getCharacterCount();
+            if (currentEndpoint > charOffset) {
+                break;
+            }
+            currentStart = currentEndpoint;
+        }
+
+        if (segmentIndex < segmentCount) {
+            TextLayout layout = segment.fLayout;
+            int offsetInLayout = charOffset - currentStart;
+            TextHitInfo hit = TextHitInfo.afterOffset(offsetInLayout);
+            hit = layout.DEFAULT_CARET_POLICY.getStrongCaret(hit, hit.getOtherHit(), layout);
+            float[] info = layout.getCaretInfo(hit);
+            int layoutPos = line.fLeadingMargin + segment.fDistanceFromLeadingMargin;
+            if (line.fLeftToRight) {
+                return layoutPos + (int) info[0];
+            }
+            else {
+                return lineBound - layoutPos + (int) info[0];
+            }
+        }
+        else {
+            int lineEnd = line.fLeadingMargin + line.fTotalAdvance;
+            if (line.fLeftToRight) {
+                return lineEnd;
+            }
+            else {
+                return lineBound - lineEnd;
+            }
+        }
+    }
+
+    private int getNextOffset(BidiLayoutInfo line,
+                              int lengthBasis,
+                              int charOffset,
+                              short dir) {
+
+        if (dir != MFormatter.eLeft && dir != MFormatter.eRight) {
+            throw new IllegalArgumentException("Invalid direction.");
+        }
+
+        // find segment containing offset:
+        final int segmentCount = line.fSegments.size();
+        final int lineCharStart = line.getCharStart(lengthBasis);
+
+        int currentStart = lineCharStart;
+        BidiSegment segment = null;
+        int segmentIndex;
+
+        for (segmentIndex=0; segmentIndex < segmentCount; segmentIndex++) {
+            segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+            int currentEndpoint = currentStart + segment.fLayout.getCharacterCount();
+            if (currentEndpoint > charOffset ||
+                    (segmentIndex == segmentCount-1 && currentEndpoint==charOffset)) {
+                break;
+            }
+            currentStart = currentEndpoint;
+        }
+
+        final boolean logAdvance = (dir==MFormatter.eRight)==(line.fLeftToRight);
+
+        int result;
+
+        if (segmentIndex < segmentCount) {
+            TextLayout layout = segment.fLayout;
+            int offsetInLayout = charOffset - currentStart;
+            TextHitInfo hit = (dir==MFormatter.eLeft)?
+                        layout.getNextLeftHit(offsetInLayout) :
+                        layout.getNextRightHit(offsetInLayout);
+            if (hit == null) {
+                result = logAdvance?
+                    currentStart+layout.getCharacterCount()+1 : currentStart-1;
+            }
+            else {
+                result = hit.getInsertionIndex() + currentStart;
+            }
+        }
+        else {
+            result = logAdvance? lineCharStart + line.fCharLength + 1 :
+                                         lineCharStart - 1;
+        }
+
+        return result;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textformat/ClipWorkaround.java b/src/com/ibm/richtext/textformat/ClipWorkaround.java
new file mode 100755
index 0000000..9d0a039
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/ClipWorkaround.java
@@ -0,0 +1,142 @@
+/*
+ * @(#)$RCSfile: ClipWorkaround.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:42 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+
+package com.ibm.richtext.textformat;
+
+import java.awt.Shape;
+///*JDK12IMPORTS
+import java.awt.Graphics2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.PathIterator;
+import java.awt.geom.Line2D;
+//JDK12IMPORTS*/
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.Graphics2D;
+import com.ibm.richtext.textlayout.Rectangle2D;
+JDK11IMPORTS*/
+
+/**
+ * This class exists to work around a clipping bug in JDK 1.2.
+ */
+final class ClipWorkaround {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+///*JDK12IMPORTS
+    private static final String excuse =
+        "Sorry, this method is a very limited workaround for a JDK 1.2 bug.";
+//JDK12IMPORTS*/
+    
+    static Object saveClipState(Graphics2D g) {
+///*JDK12IMPORTS
+        return null;
+//JDK12IMPORTS*/
+/*JDK11IMPORTS
+        return g.getClip();
+JDK11IMPORTS*/
+    }
+    
+    static void restoreClipState(Graphics2D g, Object state) {
+///*JDK12IMPORTS
+        if (state != null) {
+            throw new Error("Invalid clip state for this class.");
+        }
+//JDK12IMPORTS*/
+/*JDK11IMPORTS
+        g.setClip((Shape)state);
+JDK11IMPORTS*/
+    }
+    
+    /**
+     * Draw the given Shape into the Graphics, translated by (dx, dy)
+     * and clipped to clipRect.
+     */
+    static void translateAndDrawShapeWithClip(Graphics2D g,
+                                              int dx,
+                                              int dy,
+                                              Rectangle2D clipRect,
+                                              Shape shape) {
+///*JDK12IMPORTS
+        // really bogus implementation right now:  basically only
+        // draws carets from a TextLayout.
+        // Oh yeah, it doesn't really clip correctly either...
+
+        PathIterator pathIter = shape.getPathIterator(null);
+        float[] points = new float[6];
+
+        int type = pathIter.currentSegment(points);
+        if (type != PathIterator.SEG_MOVETO) {
+            throw new Error(excuse);
+        }
+        float x1 = points[0] + dx;
+        float y1 = points[1] + dy;
+
+        if (pathIter.isDone()) {
+            throw new Error(excuse);
+        }
+
+        pathIter.next();
+        type = pathIter.currentSegment(points);
+        if (type != PathIterator.SEG_LINETO) {
+            throw new Error(excuse);
+        }
+        float x2 = points[0] + dx;
+        float y2 = points[1] + dy;
+
+        float minY = (float) clipRect.getY();
+        float maxY = (float) clipRect.getMaxY();
+
+        // Now clip within vertical limits in clipRect
+        if (y1 == y2) {
+            if (y1 < minY || y1 >= maxY) {
+                return;
+            }
+        }
+        else {
+            if (y1 > y2) {
+                float t = x1;
+                x1 = x2;
+                x2 = t;
+                t = y1;
+                y1 = y2;
+                y2 = t;
+            }
+
+            float invSlope = (x2-x1) / (y2-y1);
+            if (y1 < minY) {
+                x1 -= (minY-y1) * invSlope;
+                y1 = minY;
+            }
+            if (y2 >= maxY) {
+                x1 += (y2-maxY) * invSlope;
+                y2 = maxY;
+            }
+        }
+
+        g.draw(new Line2D.Float(x1, y1, x2, y2));
+//JDK12IMPORTS*/
+/*JDK11IMPORTS
+        g.setClip(clipRect);
+        g.translate(dx, dy);
+        try {
+            g.draw(shape);
+        }
+        finally {
+            g.translate(-dx, -dy);
+        }
+JDK11IMPORTS*/
+    }
+}
diff --git a/src/com/ibm/richtext/textformat/DefaultCharacterMetric.java b/src/com/ibm/richtext/textformat/DefaultCharacterMetric.java
new file mode 100755
index 0000000..5cdb181
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/DefaultCharacterMetric.java
@@ -0,0 +1,95 @@
+/*
+ * @(#)$RCSfile: DefaultCharacterMetric.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:43 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import java.util.Hashtable;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+///*JDK12IMPORTS
+import java.awt.font.FontRenderContext;
+import java.awt.font.TextLayout;
+//JDK12IMPORTS*/
+
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.FontRenderContext;
+import com.ibm.richtext.textlayout.TextLayout;
+JDK11IMPORTS*/
+
+/**
+ * This class is used by the Formatter to estimate the height
+ * of characters in a particular style.
+ */
+final class DefaultCharacterMetric {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    final class Metric {
+    
+        private float fAscent;
+        private float fDescent;
+        private float fLeading;
+    
+        private Metric(float ascent, float descent, float leading) {
+    
+            fAscent = ascent;
+            fDescent = descent;
+            fLeading = leading;
+        }
+    
+        public int getAscent() {
+            return (int) Math.ceil(fAscent);
+        }
+    
+        public int getDescent() {
+            return (int) Math.ceil(fDescent);
+        }
+    
+        public int getLeading() {
+            return (int) Math.ceil(fLeading);
+        }
+    }
+    
+    private final Hashtable fCache = new Hashtable();
+    private /*final*/ FontResolver fResolver;
+    private /*final*/ FontRenderContext fFrc;
+    
+    public DefaultCharacterMetric(FontResolver resolver,
+                                  FontRenderContext frc) {
+    
+        fResolver = resolver;
+        fFrc = frc;
+    }
+    
+    /**
+     * Get a DefaultCharacterMetric instance for the given style.  The
+     * style is first resolved with FontResolver.
+     */
+    public Metric getMetricForStyle(AttributeMap style) {
+
+        style = fResolver.applyFont(style);
+        Metric metric = (Metric) fCache.get(style);
+        if (metric == null) {
+            TextLayout layout = new TextLayout(" ", style, fFrc);
+            metric = new Metric(layout.getAscent(),
+                                layout.getDescent(),
+                                layout.getLeading());
+            fCache.put(style, metric);
+        }
+        return metric;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textformat/FontResolver.java b/src/com/ibm/richtext/textformat/FontResolver.java
new file mode 100755
index 0000000..05b9329
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/FontResolver.java
@@ -0,0 +1,85 @@
+/*
+ * @(#)$RCSfile: FontResolver.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:43 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.textlayout.FontUtils;
+
+import java.util.Hashtable;
+import java.awt.Font;
+
+final class FontResolver {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    static {
+// Even though it violates the Prime Directive I'll conditionalize
+// this anyway, since it is just a 1.2 workaround which I greatly
+// resent.
+///*JDK12IMPORTS
+        java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
+//JDK12IMPORTS*/
+    }
+
+    private Hashtable styleMap;
+    private final AttributeMap fDefaultFontMap;
+
+    public FontResolver(AttributeMap defaults) {
+
+        styleMap = new Hashtable();
+        Hashtable tempMap = new Hashtable();
+        tempMap.put(TextAttribute.FAMILY, defaults.get(TextAttribute.FAMILY));
+        tempMap.put(TextAttribute.WEIGHT, defaults.get(TextAttribute.WEIGHT));
+        tempMap.put(TextAttribute.POSTURE, defaults.get(TextAttribute.POSTURE));
+        tempMap.put(TextAttribute.SIZE, defaults.get(TextAttribute.SIZE));
+        fDefaultFontMap = new AttributeMap(tempMap);
+    }
+
+    /**
+     * Fetch result of resolve(style) from cache, if present.
+     */
+    public AttributeMap applyFont(AttributeMap style) {
+
+        Object cachedMap = styleMap.get(style);
+
+        if (cachedMap == null) {
+            AttributeMap resolvedMap = resolve(style);
+            styleMap.put(style, resolvedMap);
+            return resolvedMap;
+        }
+        else {
+            return (AttributeMap) cachedMap;
+        }
+    }
+
+    /**
+     * Return an AttributeMap containing a Font computed from the
+     * attributes in <tt>style</tt>.
+     */
+    public AttributeMap resolve(AttributeMap style) {
+
+        if (style.get(TextAttribute.FONT) != null) {
+            return style;
+        }
+
+        Font font = FontUtils.getFont(fDefaultFontMap.addAttributes(style));
+
+        return style.addAttribute(TextAttribute.FONT, font);
+    }
+}
diff --git a/src/com/ibm/richtext/textformat/LayoutInfo.java b/src/com/ibm/richtext/textformat/LayoutInfo.java
new file mode 100755
index 0000000..18683d1
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/LayoutInfo.java
@@ -0,0 +1,199 @@
+/*
+ * @(#)$RCSfile: LayoutInfo.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:43 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+/** LayoutInfo
+
+    A line of text, possibly containing tab-segments.
+*/
+
+package com.ibm.richtext.textformat;
+
+import java.awt.Color;
+import java.awt.Rectangle;
+
+///*JDK12IMPORTS
+import java.awt.Graphics2D;
+//JDK12IMPORTS*/
+
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.Graphics2D;
+JDK11IMPORTS*/
+
+import com.ibm.richtext.styledtext.MConstText;
+
+abstract class LayoutInfo
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private int fCharStart;       // offset in text to start of line (was fStart)
+                                  // neg. values indicate distance from end of text
+    private int fGraphicStart;    // min pixel offset in fill direction
+                                  // negative values indicate distance from bottom of text view
+
+    /*
+        These methods are for storing Layouts in a gap-storage,
+        relative to either the start of end of text.  See AsyncFormatter.
+
+        If you just want absolute (that is, start-relative) char and
+        graphic starts, don't make them end-relative.
+    */
+
+    public final int getCharStart(int lengthBasis) {
+
+        if (fCharStart >= 0) {
+            return fCharStart;
+        }
+        else {
+            return lengthBasis + fCharStart;
+        }
+    }
+
+    public final int getGraphicStart(int graphicBasis) {
+
+        if (fGraphicStart >= 0) {
+            return fGraphicStart;
+        }
+        else {
+            return graphicBasis + fGraphicStart;
+        }
+    }
+
+    public final void setCharStart(int beginningRelativeStart) {
+
+        if (beginningRelativeStart < 0) {
+            throw new IllegalArgumentException("charStart must be nonnegavitve");
+        }
+        fCharStart = beginningRelativeStart;
+    }
+
+    public final void setGraphicStart(int beginningRelativeStart) {
+
+        if (beginningRelativeStart < 0) {
+            throw new IllegalArgumentException("charStart must be nonnegavitve");
+        }
+        fGraphicStart = beginningRelativeStart;
+    }
+
+    public final void makeRelativeToBeginning(int lengthBasis,
+                                              int graphicBasis) {
+
+        if (lengthBasis < 0 || graphicBasis < 0) {
+            throw new IllegalArgumentException("Bases must be positive.");
+        }
+        if (fCharStart >= 0 || fGraphicStart >= 0) {
+            throw new Error("Already start-relative.");
+        }
+
+        fCharStart += lengthBasis;
+        fGraphicStart += graphicBasis;
+    }
+
+    public final void makeRelativeToEnd(int lengthBasis,
+                                        int graphicBasis) {
+
+        if (lengthBasis < 0 || graphicBasis < 0) {
+            throw new IllegalArgumentException("Bases must be positive.");
+        }
+        if (fCharStart < 0 || fGraphicStart < 0) {
+            throw new Error("Already end-relative.");
+        }
+
+        fCharStart -= lengthBasis;
+        fGraphicStart -= graphicBasis;
+    }
+
+
+    public abstract int getCharLength();
+    public abstract int getAscent();
+    public abstract int getDescent();
+    public abstract int getLeading();
+
+    public abstract int getVisibleAdvance();
+    public abstract int getTotalAdvance();
+    public abstract int getLeadingMargin();
+
+    public abstract boolean isLeftToRight();
+
+    public int getHeight() {
+
+        return getAscent()+getDescent()+getLeading();
+    }
+
+    /**
+    * Draws text with highlighting.
+    */
+    public void renderWithHighlight(int lengthBasis,
+                                    Graphics2D g,
+                                    int lineBound,
+                                    int x,
+                                    int y,
+                                    TextOffset selStart,
+                                    TextOffset selStop,
+                                    Color highlightColor)
+    {
+    }
+
+    /** Use layout information to render the line at x, y.*/
+
+    public void render(int lengthBasis,
+                       Graphics2D g,
+                       int lineBound,
+                       int x,
+                       int y)
+    {
+    }
+
+    public void renderCaret(MConstText text,
+                            int lengthBasis,
+                            Graphics2D g,
+                            int lineBound,
+                            int x,
+                            int y,
+                            int charOffset,
+                            Color strongCaretColor,
+                            Color weakCaretColor)
+    {
+    }
+
+    /**
+     * Given a point within this line, return the character offset corresponding to that point.
+     *
+     * @param result.  This may be null, in which case a new TextOffset will be allocated.
+     *        This object is modified in place, and also returned as the function result.
+     * @param text Text to inspect.
+     * @param lineX Position on this line relative to top left corner of this line.
+     * @param lineY Position on this line relative to top left corner of this line.
+     */
+    public abstract TextOffset pixelToOffset(int lengthBasis,
+                                             TextOffset result,
+                                             int lineBound,
+                                             int x,
+                                             int y);
+
+    public abstract int strongCaretBaselinePosition(int lengthBasis,
+                                                    int lineBound,
+                                                    int charOffset);
+
+    public abstract Rectangle caretBounds(MConstText text,
+                                          int lengthBasis,
+                                          int lineBound,
+                                          int charOffset,
+                                          int x,
+                                          int y);
+    
+    public abstract int getNextOffset(int lengthBasis,
+                                      int charOffset,
+                                      short dir);
+}
diff --git a/src/com/ibm/richtext/textformat/MFormatter.java b/src/com/ibm/richtext/textformat/MFormatter.java
new file mode 100755
index 0000000..4bceb66
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/MFormatter.java
@@ -0,0 +1,351 @@
+/*
+ * @(#)$RCSfile: MFormatter.java,v $ $Revision: 1.4 $ $Date: 2002/03/20 05:11:17 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+
+package com.ibm.richtext.textformat;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Point;
+import java.awt.Rectangle;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/**
+*
+* This class formats lines of text to a given length.
+* It provides services needed for static text display,
+* and also editable text, including:  displaying text,
+* reformatting text after an edit, converting between
+* screen locations and offsets into the text, calculating
+* areas of the screen for "highlighting,"  and computing
+* offsets into the text resulting from arrow keys.
+* <p>
+* Text clients instantiate this class with an
+* <tt>MConstText</tt> object and a format width.  Text
+* can be formatted such that all lines fit within the
+* format length.  Alternatively, text can be formatted
+* such that lines end only at the end of paragraphs.
+* <p>
+* The format length is specified with the <tt>setLineBound()</tt>
+* method.
+* <p>
+* Methods in the formatter which interact with the graphics
+* system generally take as a paramter a <tt>Point</tt> object
+* which represents the "origin" of the text display.  The
+* origin represents the location, in the graphics system used to display the text, of
+* the top-left corner of the text.
+* <p>
+* To display the text, call <tt>draw()</tt>, passing the
+* a rectangle in which to draw as a parameter.  Only lines
+* of text in the draw rectangle will be drawn.
+* <p>
+* When the formatter's text changes, it is important to first call
+* <tt>stopBackgroundFormatting()</tt> to prevent the Formatter from
+* accessing the text from a background thread.  After modifications are
+* complete,
+* call the <tt>updateFormat()</tt> method before invoking any other
+* methods of the formatter.  <tt>updateFormat()</tt> reformats the
+* new text, formatting no more text than is necessary.
+* <p>
+* The formatter provides services for responding to user input from the
+* mouse and keyboard.  The method <tt>pointToTextOffset()</tt> converts
+* a screen location to an offset in the text.  The method <tt>textOffsetToPoint</tt>
+* converts an offset in the text to an array of two <tt>Point</tt> objects, which can be
+* used to draw a verticle caret, denoting an insertion point.  <tt>highlightArea</tt>
+* accepts two offsets into the text as paramters, and returns an array of <tt>Polygon</tt>
+* objects representing areas where visual highlighting should be applied.
+* <p>
+* Finally, for
+* keyboard handling, the <tt>findNewInsertionOffset()</tt> method accepts an "initial"
+* offset, a "previous" offset, as well as a direction, and returns a new offset.  The direction
+* can be up, down, left, or right.  The previous offset is the insertion point location, before
+* the arrow key is processed.  The initial offset is the offset where an up or down arrow
+* key sequence began.  Using the initial offset allows for "intelligent" handling of up and down
+* arrow keys.
+* <p>
+* Examples of using the MFormatter class
+* are given in the <tt>AsyncFormatter</tt> class
+* documentation.
+* <p>
+* @author John Raley
+*
+* @see com.ibm.richtext.styledtext.MText
+*/
+
+public abstract class MFormatter {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    public abstract AttributeMap getDefaultValues();
+
+/**
+* Display text in drawArea, with highlighting.
+* Does not reformat text
+* @param g the Graphics object in which to draw
+* @param drawArea the rectangle, in g's coordinate system, in which to draw
+* @param origin the top-left corner of the text, in g's coordinate system
+* @param selStart the offset where the current selection begins;  pass <tt>null</tt> if no selection
+* @param selStop the offset where the current selection ends
+* @param highlight the color of the highlighting
+*/
+    public abstract void draw(Graphics g, Rectangle drawArea, Point origin,
+            TextOffset selStart, TextOffset selStop, Color highlight);
+
+    public abstract void draw(Graphics g, Rectangle drawArea, Point origin);
+
+/**
+* Specify whether to wrap line at the edge of the destination area.
+* <tt>true</tt> means wrap lines;  <tt>false</tt> means to break lines
+* only when an end-of-line character is reached.
+* @param wrap <tt>true</tt> to break lines at the edge of the destination
+* area;  <tt>false</tt> otherwise.
+*/
+
+    public abstract void setWrap(boolean wrap);
+
+/**
+* Return whether text is wrapped at the edge of the destination area.
+* @see #setWrap
+*/
+    public abstract boolean wrap();
+
+/**
+* Specify the number of pixels along the "line dimension".
+* Lines are formatted to fit within the line dimension.  The
+* line dimension in Roman script is horizontal.
+* @param lineWidth the length, in pixels, to which lines will be formatted
+*/
+    public abstract void setLineBound(int lineBound);
+
+/**
+* Return the number of pixels along the line dimension.
+*/
+    public abstract int lineBound();
+    
+/**
+* Format text down to given height.
+* @param height the height to which text will be formatted
+*/
+    public abstract void formatToHeight(int height);
+
+/**
+* Reformat text after a change.
+* After the formatter's text changes, call this method to reformat.  Does
+* not redraw.
+* @param afStart the offset into the text where modification began;  ie, the
+* first character in the text which is "different" in some way.  Does not
+* have to be nonnegative.
+* @param afLength the number of new or changed characters in the text.  Should never
+* be less than 0.
+* @param viewRect the Rectangle in which the text will be displayed.  This is needed for
+* returning the "damaged" area - the area of the screen in which the text must be redrawn.
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @return a <tt>Rectangle</tt> which specifies the area in which text must be
+* redrawn to reflect the change to the text.
+*/
+    public abstract Rectangle updateFormat(int afStart,
+                                  int afLength,
+                                  Rectangle viewRect,
+                                  Point origin);
+
+
+    public abstract int minY();
+    
+/**
+ * Return the maximum vertical coordinate of the document area.
+ */
+    public abstract int maxY();
+
+    public abstract int minX();
+
+/**
+ * Return the maximum horizontal coordinate of the document area.
+ */
+    public abstract int maxX();
+
+/**
+* Return the actual pixel length of the text which has been formatted.
+*/
+    public abstract int formattedHeight();
+
+    public static final short eUp = -10, eDown = 10, eLeft = -1, eRight = 1;
+
+/**
+* Given a screen location p, return the offset of the character in the text nearest to p.
+*
+* The offset may or may not include a newline at the end of a line, determined by anchor and infiniteMode.
+* The newline is not included if infiniteMode is true and the anchor is the position before the newline.
+*
+* @param result TextOffset to modify and return.  If null, one will be allocated, modified, and returned.
+* @param px the x component of the point.
+* @param py the y component of the point.
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @param anchor the previous offset.  May be null.  Used to determine whether newlines are included.
+* @param infiniteMode if true, treat newlines at end of line as having infinite width.
+*/
+    public abstract TextOffset pointToTextOffset(TextOffset result, int px, int py, Point origin, TextOffset anchor, boolean infiniteMode);
+
+/**
+* Given an offset, return the Rectangle bounding the caret at the offset.
+* @param offset an offset into the text
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @return a Rectangle bounding the caret.
+*/
+    public abstract Rectangle getCaretRect(TextOffset offset, Point origin);
+
+/**
+* Draw the caret(s) associated with the given offset into the given Graphics.
+* @param g the Graphics to draw into
+* @param offset the offset in the text for which the caret is drawn
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @param strongCaretColor the color of the strong caret
+* @param weakCaretColor the color of the weak caret (if any)
+*/
+    public abstract void drawCaret(Graphics g,
+                                   TextOffset offset,
+                                   Point origin,
+                                   Color strongCaretColor,
+                                   Color weakCaretColor);
+
+    /**
+     * @see #getBoundingRect
+     */
+    public static final boolean LOOSE = false;
+    /**
+     * @see #getBoundingRect
+     */
+    public static final boolean TIGHT = true;
+
+/**
+* Given two offsets in the text, return a rectangle which encloses the lines containing the offsets.
+* Offsets do not need to be ordered or nonnegative.
+* @param offset1,offset2 offsets into the text
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @param tight if equal to TIGHT, the bounds is as small as possible.  If LOOSE, the width
+* of the bounds is allowed to be wider than necesary.  Loose bounds are easier to compute.
+* @return a <tt>Rectangle</tt>, relative to <tt>origin</tt>, which encloses the lines containing the offsets
+*/
+    public abstract Rectangle getBoundingRect(TextOffset offset1,
+                                              TextOffset offset2, 
+                                              Point origin,
+                                              boolean tight);
+
+    public abstract void getBoundingRect(Rectangle boundingRect,
+                                         TextOffset offset1,
+                                         TextOffset offset2,
+                                         Point origin,
+                                         boolean tight);
+
+/**
+* Compute the offset resulting from moving from a previous offset in direction dir.
+* For arrow keys.
+* @param previousOffset the insertion offset prior to the arrow key press
+* @param direction the direction of the arrow key (eUp, eDown, eLeft, or eRight)
+* @return new offset based on direction and previous offset.
+*/
+    public abstract TextOffset findInsertionOffset(TextOffset result,
+                                          TextOffset previousOffset,
+                                          short direction);
+
+/**
+* Compute the offset resulting from moving from a previous offset, starting at an original offset, in direction dir.
+* For arrow keys.  Use this for "smart" up/down keys.
+* @param result TextOffset to modify and return.  If null, a new TextOffset is created, modified, and returned.
+* @param initialOffset The offset at which an up-down arrow key sequence began.
+* @param previousOffset The insertion offset prior to the arrow key press.
+* @param direction The direction of the arrow key (eUp, eDown, eLeft, or eRight)
+* @return new offset based on direction and previous offset(s).
+*/
+    public abstract TextOffset findNewInsertionOffset(TextOffset result,
+                                             TextOffset initialOffset,
+                                             TextOffset previousOffset,
+                                             short direction);
+
+/**
+* Return the index of the line containing the given character index.
+* This method has complicated semantics, arising from not knowing 
+* which side of the index to check.  The index will be given an
+* implicit AFTER bias, unless the index is the last index in the text,
+* the text length is non-zero, and there is not a paragraph separator
+* at the end of the text.
+*/
+    public abstract int lineContaining(int index);
+    
+/**
+* Return the index of the line containing the given offset.
+*/
+    public abstract int lineContaining(TextOffset offset);
+
+/**
+* Return the number of lines.
+*/
+    public abstract int getLineCount();
+
+/**
+* Return the index of the first character on the given line.
+*/
+    public abstract int lineRangeLow(int lineNumber);
+
+/**
+* Return the index of the first character following the given line.
+*/
+    public abstract int lineRangeLimit(int lineNumber);
+
+/**
+* Tells the formatter to stop accessing the text until updateFormat is called.
+*/
+    public abstract void stopBackgroundFormatting();
+
+/**
+* Return the line number at the given graphic height.  If height is greater than
+* the text height, maxLineNumber + 1 is returned.
+*/
+    public abstract int lineAtHeight(int height);
+
+/**
+* Return the graphic height where the given line begins.  If the lineNumber is
+* maxLineNumber the entire text height is returned.
+*/
+    public abstract int lineGraphicStart(int lineNumber);
+
+/**
+* Return true if the given line is left-to-right.
+* @param lineNumber a valid line
+* @return true if lineNumber is left-to-right
+*/
+    public abstract boolean lineIsLeftToRight(int lineNumber);
+
+/**
+* Return a new <tt>MFormatter</tt>.
+* @param text the text to format
+* @param defaultValues values to use when certain attributes are not specified. 
+*    <tt>defaultValues</tt> must contain values for the following attributes:
+*    <tt>FAMILY</tt>, <tt>WEIGHT</tt>, <tt>POSTURE</tt>, <tt>SIZE</tt>, <tt>SUPERSCRIPT</tt>, 
+*    <tt>FOREGROUND</tt>, <tt>UNDERLINE</tt>, <tt>STRIKETHROUGH</tt>,
+*    <tt>EXTRA_LINE_SPACING</tt>, <tt>FIRST_LINE_INDENT</tt>,<tt>MIN_LINE_SPACING</tt>,
+*    <tt>LINE_FLUSH</tt>, <tt>LEADING_MARGIN</tt>, <tt>TRAILING_MARGIN</tt>, <tt>TAB_RULER</tt>
+* @param lineBound length to which lines are formatted
+* @param wrap <tt>true</tt> if text should be "line wrapped" (formatted to fit destination area)
+*/
+    public static MFormatter createFormatter(MConstText text,
+                                             AttributeMap defaultValues,
+                                             int lineBound, 
+                                             boolean wrap, 
+                                             Graphics g) {
+                                                
+        return new AsyncFormatter(text, defaultValues, lineBound, wrap, g);
+    }
+}
diff --git a/src/com/ibm/richtext/textformat/MTextIterator.java b/src/com/ibm/richtext/textformat/MTextIterator.java
new file mode 100755
index 0000000..a3fbb9c
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/MTextIterator.java
@@ -0,0 +1,402 @@
+/*
+ * @(#)$RCSfile: MTextIterator.java,v $ $Revision: 1.4 $ $Date: 2002/02/16 03:06:43 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import com.ibm.richtext.styledtext.MConstText;
+import java.text.CharacterIterator;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+///*JDK12IMPORTS
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedCharacterIterator.Attribute;
+import java.util.Map;
+import java.util.Set;
+//JDK12IMPORTS*/
+
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.attributes.AttributedCharacterIterator;
+import com.ibm.richtext.textlayout.attributes.AttributedCharacterIterator.Attribute;
+import com.ibm.richtext.textlayout.attributes.Map;
+JDK11IMPORTS*/
+
+public final class MTextIterator implements AttributedCharacterIterator,
+                                            Cloneable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    // memory leak, since this cache is never flushed
+
+    private static class Matcher {
+        
+        boolean matches(Map lhs, Map rhs, Object query) {
+            
+            Object lhsVal = lhs.get(query);
+            Object rhsVal = rhs.get(query);
+            
+            if (lhsVal == null) {
+                return rhsVal == null;
+            }
+            else {
+                return lhsVal.equals(rhsVal);
+            }
+        }
+    }
+    
+    private static final Matcher ATTR_MATCHER = new Matcher();
+    
+    // Not quite optimal.  Could have a matcher that would decompose
+    // a set once for repeated queries.  Of course that would require
+    // allocation...
+///*JDK12IMPORTS
+    private static final Matcher SET_MATCHER = new Matcher() {
+        
+        boolean matches(Map lhs, Map rhs, Object query) {
+            
+            // Not using Iterator to simplify 1.1 port.
+            Object[] elements = ((Set)query).toArray();
+            for (int i=0; i < elements.length; i++) {
+                if (!super.matches(lhs, rhs, elements[i])) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    };
+//JDK12IMPORTS*/
+    
+    private final class StyleCache {
+
+        private int fRunStart = 0;
+        private int fRunLimit = -1;
+        private int fRangeStart;
+        private int fRangeLimit;
+        private AttributeMap fStyle;
+
+        StyleCache(MConstText text, int start, int limit) {
+            fText = text;
+            fRangeStart = start;
+            fRangeLimit = limit;
+            update(start);
+        }
+
+        private void update(int pos) {
+            if (pos < fRunStart || pos >= fRunLimit) {
+                AttributeMap style = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+                if (pos < fRangeStart) {
+                    fRunLimit = fRangeStart;
+                    fRunStart = Integer.MIN_VALUE;
+                }
+                else if (pos > fRangeLimit) {
+                    fRunStart = fRangeLimit;
+                    fRunLimit = Integer.MAX_VALUE;
+                }
+                else {
+                    fRunStart = Math.max(fRangeStart, fText.characterStyleStart(pos));
+                    fRunStart = Math.max(fRunStart, fText.paragraphStart(pos));
+                    
+                    fRunLimit = Math.min(fRangeLimit, fText.characterStyleLimit(pos));
+                    fRunLimit = Math.min(fRunLimit, fText.paragraphLimit(pos));
+                    if (fRunStart < fRunLimit) {
+                        style = fText.paragraphStyleAt(pos);
+                        style = style.addAttributes(fText.characterStyleAt(pos));
+                    }
+                }
+                fStyle = fFontResolver.applyFont(style);
+            }
+        }
+
+        int getRunStart(int pos) {
+            update(pos);
+            return fRunStart;
+        }
+
+        int getRunLimit(int pos) {
+            update(pos);
+            return fRunLimit;
+        }
+
+        Map getStyle(int pos) {
+            update(pos);
+            return fStyle;
+        }
+    }
+
+    private MConstText fText;
+    private CharacterIterator fCharIter;
+    private FontResolver fFontResolver;
+    
+    private StyleCache fStyleCache;
+
+    /**
+     * Create an MTextIterator over the range [start, limit).
+     */
+    public MTextIterator(MConstText text, 
+                         FontResolver resolver,
+                         int start, 
+                         int limit) {
+
+        fText = text;
+        fFontResolver = resolver;
+        fCharIter = text.createCharacterIterator(start, limit);
+
+        fStyleCache = new StyleCache(text, start, limit);
+    }
+
+    /**
+     * Sets the position to getBeginIndex() and returns the character at that
+     * position.
+     * @return the first character in the text, or DONE if the text is empty
+     * @see #getBeginIndex
+     */
+    public char first() {
+        return fCharIter.first();
+    }
+
+    /**
+     * Sets the position to getEndIndex()-1 (getEndIndex() if the text is empty)
+     * and returns the character at that position.
+     * @return the last character in the text, or DONE if the text is empty
+     * @see #getEndIndex
+     */
+    public char last() {
+        return fCharIter.last();
+    }
+
+    /**
+     * Gets the character at the current position (as returned by getIndex()).
+     * @return the character at the current position or DONE if the current
+     * position is off the end of the text.
+     * @see #getIndex
+     */
+    public char current() {
+        return fCharIter.current();
+    }
+
+    /**
+     * Increments the iterator's index by one and returns the character
+     * at the new index.  If the resulting index is greater or equal
+     * to getEndIndex(), the current index is reset to getEndIndex() and
+     * a value of DONE is returned.
+     * @return the character at the new position or DONE if the new
+     * position is off the end of the text range.
+     */
+    public char next() {
+        return fCharIter.next();
+    }
+
+    /**
+     * Decrements the iterator's index by one and returns the character
+     * at the new index. If the current index is getBeginIndex(), the index
+     * remains at getBeginIndex() and a value of DONE is returned.
+     * @return the character at the new position or DONE if the current
+     * position is equal to getBeginIndex().
+     */
+    public char previous() {
+        return fCharIter.previous();
+    }
+
+    /**
+     * Sets the position to the specified position in the text and returns that
+     * character.
+     * @param position the position within the text.  Valid values range from
+     * getBeginIndex() to getEndIndex().  An IllegalArgumentException is thrown
+     * if an invalid value is supplied.
+     * @return the character at the specified position or DONE if the specified position is equal to getEndIndex()
+     */
+    public char setIndex(int position) {
+        return fCharIter.setIndex(position);
+    }
+
+    /**
+     * Returns the start index of the text.
+     * @return the index at which the text begins.
+     */
+    public int getBeginIndex() {
+        return fCharIter.getBeginIndex();
+    }
+
+    /**
+     * Returns the end index of the text.  This index is the index of the first
+     * character following the end of the text.
+     * @return the index after the last character in the text
+     */
+    public int getEndIndex() {
+        return fCharIter.getEndIndex();
+    }
+
+    /**
+     * Returns the current index.
+     * @return the current index.
+     */
+    public int getIndex() {
+        return fCharIter.getIndex();
+    }
+
+    /**
+     * Returns the index of the first character of the run
+     * with respect to all attributes containing the current character.
+     */
+    public int getRunStart() {
+        return fStyleCache.getRunStart(fCharIter.getIndex());
+    }
+
+    /**
+     * Returns the index of the first character of the run
+     * with respect to the given attribute containing the current character.
+     */
+    public int getRunStart(Object attribute) {
+
+        return getRunStart(attribute, ATTR_MATCHER);
+    }
+
+    /**
+     * Returns the index of the first character of the run
+     * with respect to the given attribute containing the current character.
+     */
+///*JDK12IMPORTS
+    public int getRunStart(Attribute attribute) {
+
+        return getRunStart(attribute, ATTR_MATCHER);
+    }
+//JDK12IMPORTS*/
+
+    /**
+     * Returns the index of the first character of the run
+     * with respect to the given attributes containing the current character.
+     */
+///*JDK12IMPORTS
+    public int getRunStart(Set attributes) {
+
+        return getRunStart(attributes, SET_MATCHER);
+    }
+//JDK12IMPORTS*/
+    
+    private int getRunStart(Object query, Matcher matcher) {
+
+        int runStart = getRunStart();
+        int rangeStart = getBeginIndex();
+        Map initialStyle = getAttributes();
+        
+        while (runStart > rangeStart) {
+            AttributeMap style = fText.characterStyleAt(runStart-1);
+            if (!matcher.matches(initialStyle, style, query)) {
+                return runStart;
+            }
+            runStart = fText.characterStyleStart(runStart-1);
+        }
+        return rangeStart;
+    }
+    
+    /**
+     * Returns the index of the first character following the run
+     * with respect to all attributes containing the current character.
+     */
+    public int getRunLimit() {
+        return fStyleCache.getRunLimit(fCharIter.getIndex());
+    }
+
+    /**
+     * Returns the index of the first character following the run
+     * with respect to the given attribute containing the current character.
+     */
+    public int getRunLimit(Object attribute) {
+        
+        return getRunLimit(attribute, ATTR_MATCHER);
+    }
+
+    /**
+     * Returns the index of the first character following the run
+     * with respect to the given attribute containing the current character.
+     */
+///*JDK12IMPORTS
+    public int getRunLimit(Attribute attribute) {
+        
+        return getRunLimit(attribute, ATTR_MATCHER);
+    }
+//JDK12IMPORTS*/
+
+    /**
+     * Returns the index of the first character following the run
+     * with respect to the given attributes containing the current character.
+     */
+///*JDK12IMPORTS
+    public int getRunLimit(Set attributes) {
+        
+        return getRunLimit(attributes, SET_MATCHER);
+    }
+//JDK12IMPORTS*/
+
+    private int getRunLimit(Object query, Matcher matcher) {
+
+        int runLimit = getRunLimit();
+        int rangeLimit = getEndIndex();
+        Map initialStyle = getAttributes();
+        
+        while (runLimit < rangeLimit) {
+            AttributeMap style = fText.characterStyleAt(runLimit);
+            if (!matcher.matches(initialStyle, style, query)) {
+                return runLimit;
+            }
+            runLimit = fText.characterStyleLimit(runLimit);
+        }
+        return rangeLimit;
+    }
+    
+    /**
+     * Returns a map with the attributes defined on the current
+     * character.
+     */
+    public Map getAttributes() {
+        return fStyleCache.getStyle(fCharIter.getIndex());
+    }
+
+    /**
+     * Returns the value of the named attribute for the current character.
+     * Returns null if the attribute is not defined.
+     * @param attribute the key of the attribute whose value is requested.
+     */
+    public Object getAttribute(Object attribute) {
+        return getAttributes().get(attribute);
+    }
+
+    /**
+     * Returns the value of the named attribute for the current character.
+     * Returns null if the attribute is not defined.
+     * @param attribute the key of the attribute whose value is requested.
+     */
+    public Object getAttribute(Attribute attribute) {
+        return getAttributes().get(attribute);
+    }
+
+    /**
+     * Returns the keys of all attributes defined on the
+     * iterator's text range. The set is empty if no
+     * attributes are defined.
+     */
+///*JDK12IMPORTS
+    public Set getAllAttributeKeys() {
+        throw new Error("Implement this method!");
+    }
+//JDK12IMPORTS*/
+
+    public Object clone() {
+        return new MTextIterator(fText,
+                                 fFontResolver,
+                                 getBeginIndex(),
+                                 getEndIndex());
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textformat/ParagraphRenderer.java b/src/com/ibm/richtext/textformat/ParagraphRenderer.java
new file mode 100755
index 0000000..6ebb056
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/ParagraphRenderer.java
@@ -0,0 +1,84 @@
+/*
+ * @(#)$RCSfile: ParagraphRenderer.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:44 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import java.awt.Color;
+
+///*JDK12IMPORTS
+import java.awt.font.FontRenderContext;
+import java.awt.font.LineBreakMeasurer;
+import java.awt.Graphics2D;
+//JDK12IMPORTS*/
+
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.FontRenderContext;
+import com.ibm.richtext.textlayout.LineBreakMeasurer;
+import com.ibm.richtext.textlayout.Graphics2D;
+JDK11IMPORTS*/
+
+/**
+ * ParagraphRenderer is a factory for LayoutInfo objects.
+ */
+abstract class ParagraphRenderer {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    // If renderers can ever travel with their styles, then this attribute will denote a
+    // renderer.  For now, renderers are not added as styles so this isn't needed.
+    //static final TextAttribute PARAGRAPH_RENDERER = new TextAttribute("Paragraph_Renderer") {};
+
+    /**
+     * Reset the renderer to use information from this style. Since renderers may be shared, you should
+     * make sure the renderer is initialized for the style you wish to render before you use it.
+     */
+    public void initRenderer(AttributeMap pStyle) {
+    }
+
+    /**
+     * Return a LayoutInfo for the paragraph represented by
+     * measurer.
+     * @param text the text containing the paragraph
+     * @param layoutToReuse clients can pass in a LayoutInfo
+     * which the ParagraphRenderer may choose to reuse
+     * and return.  If null, a new LayoutInfo will be
+     * created and returned.
+     * @param measurer the LineBreakMeasurer for this paragraph.
+     *  Current position should be the first character on the line.
+     *  If null, a 0-length line is generated.  If measurer is null
+     *  then paragraphStart and paragraphLimit should be equal.
+     * @param frc the FontRenderContext used for measurerment
+     * @param paragraphStart the index in the text where the
+     * current paragraph begins
+     * @param paragraphLimit the index of the first character
+     * after the current paragraph
+     * @param totalFormatWidth the width in which the line should fit
+     * @param lineBound where right-aligned lines are aligned
+     */
+    public abstract LayoutInfo layout(MConstText text,
+                                      LayoutInfo layoutToReuse,
+                                      LineBreakMeasurer measurer,
+                                      FontRenderContext frc,
+                                      int paragraphStart,
+                                      int paragraphLimit,
+                                      int totalFormatWidth,
+                                      int lineBound);
+
+}
diff --git a/src/com/ibm/richtext/textformat/TestMTextIterator.java b/src/com/ibm/richtext/textformat/TestMTextIterator.java
new file mode 100755
index 0000000..f1a8a8f
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/TestMTextIterator.java
@@ -0,0 +1,117 @@
+/*
+ * @(#)$RCSfile: TestMTextIterator.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:44 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.textpanel.TextPanel;
+
+public class TestMTextIterator {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final FontResolver FONT_MAPPER;
+    static {
+        AttributeMap attrs = TextPanel.getDefaultSettings().getDefaultValues();
+        FONT_MAPPER = new FontResolver(attrs);
+    }
+
+    public static void compareIterToText(MTextIterator iter,
+                                         MConstText text) {
+
+        //System.out.println("Text: " + text);
+        final int beginIndex = iter.getBeginIndex();
+        final int endIndex = iter.getEndIndex();
+
+        char ch = iter.setIndex(beginIndex);
+
+        for (int i=beginIndex; i < endIndex; i++) {
+            //System.out.print(ch+ " ");
+            if (ch != text.at(i)) {
+                throw new Error("Characters are not the same.");
+            }
+            ch = iter.next();
+        }
+
+        if (ch != iter.DONE) {
+            throw new Error("Iterator is not done.");
+        }
+
+        for (int i=endIndex-1; i >= beginIndex; i--) {
+            ch = iter.previous();
+            //System.out.print(ch+ " ");
+            if (ch != text.at(i)) {
+                throw new Error("Backward iteration failed.");
+            }
+        }
+
+        iter.setIndex(beginIndex);
+
+        int runLimit;
+        for (int runStart = beginIndex; runStart < endIndex; runStart = runLimit) {
+
+            runLimit = Math.min(endIndex, text.characterStyleLimit(runStart));
+
+            if (iter.getRunStart() != runStart) {
+                System.out.println(iter.getRunStart() + "; " + runStart);
+                throw new Error("getRunStart is wrong.");
+            }
+            if (iter.getRunLimit() != runLimit) {
+                System.out.println(iter.getRunLimit() + "; " + runLimit);
+                throw new Error("getRunLimit is wrong.");
+            }
+
+            AttributeMap style = text.characterStyleAt(runStart);
+
+            while (iter.getIndex() < runLimit) {
+                AttributeMap resolved = FONT_MAPPER.applyFont(style);
+                if (!iter.getAttributes().equals(resolved)) {
+                    throw new Error("Style is wrong.");
+                }
+                iter.next();
+            }
+        }
+    }
+
+    public void test() {
+
+        AttributeMap bold = new AttributeMap(TextAttribute.WEIGHT,
+                                             TextAttribute.WEIGHT_BOLD);
+        MText text = new StyledText("Hello there!", AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        text.replace(2, 2, 'V', bold);
+
+        MTextIterator iter = new MTextIterator(text, FONT_MAPPER, 0, text.length());
+        compareIterToText(iter, text);
+
+        text.replace(6, 8, new StyledText("ALL_BOLD", bold), 0, 8);
+        iter = new MTextIterator(text, FONT_MAPPER, 1, text.length()-3);
+        compareIterToText(iter, text);
+
+        iter = new MTextIterator(text, FONT_MAPPER, 0, text.length());
+        compareIterToText(iter, text);
+    }
+
+    public static void main(String[] args) {
+
+        new TestMTextIterator().test();
+        System.out.println("PASSED");
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textformat/TextOffset.java b/src/com/ibm/richtext/textformat/TextOffset.java
new file mode 100755
index 0000000..9d1c3eb
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/TextOffset.java
@@ -0,0 +1,198 @@
+/*
+ * @(#)$RCSfile: TextOffset.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:50:03 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Revision: 03 1.16 richtext/TextOffset.java, richtext, richtext
+
+/*
+    9/5/96 {jbr} added set and equals methods
+*/
+
+package com.ibm.richtext.textformat;
+
+/**
+ * A TextOffset indicates both an integer offset into text and a placement
+ * on one of the characters adjacent to the offset.  An offset is a
+ * position between two characters;  offset n
+ * is between character n-1 and character n.  The placement specifies whether
+ * it is associated with the character
+ * after the offset
+ * (character n) or the character before the offset (character n-1).
+ * <p>
+ * Knowing which character the TextOffset is associated with is necessary
+ * when displaying carets.  In bidirectional text, a single offset may
+ * have two distinct carets.  Also, in multiline text, an offset at a line
+ * break has a possible caret on each line.
+ * <p>
+ * Most clients will not be interested in the placement, and will just use
+ * the offset.
+ */
+public final class TextOffset
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Indicates that the TextOffset is associated with character
+     * <code>fOffset - 1</code> - ie the character before its offset.
+     */
+    public final static boolean BEFORE_OFFSET = true;
+
+    /**
+     * Indicates that the TextOffset is associated with character
+     * <code>fOffset</code> - ie the character after its offset.
+     */
+    public final static boolean AFTER_OFFSET = false;
+
+    /**
+     * The offset into the text.
+     */
+    public int fOffset = 0;
+
+    /**
+     * The placement - before or after.
+     */
+    public boolean fPlacement = AFTER_OFFSET;
+
+    /**
+    * Constructs a new TextOffset
+    * @param offset the offset into the text to represent.  Placement is implicitly AFTER_OFFSET.
+    */
+    public TextOffset(int offset)
+    {
+        if (offset < 0)
+            throw new IllegalArgumentException("Offset is negative in TextOffset constructor.");
+
+        fOffset = offset;
+
+        fPlacement = AFTER_OFFSET;
+    }
+
+    /**
+    * Constructs a new TextOffset at 0, with placement AFTER_OFFSET.
+    */
+    public TextOffset() {
+        this(0);
+    }
+
+    /**
+    * Constructs a new TextOffset with the given offset and placement.
+    * @param offset the offset into the text
+    * @param placement indicates the position of the caret; one of BEFORE_OFFSET or AFTER_OFFSET
+    */
+    public TextOffset(int offset, boolean placement)
+    {
+        if (offset < 0)
+            throw new IllegalArgumentException("TextOffset constructor offset < 0: " + offset);
+
+        fOffset = offset;
+        fPlacement = placement;
+    }
+
+    /**
+    * Constructs a new TextOffset from an existing one.
+    * @param ths the TextOffset to copy
+    */
+    public TextOffset(TextOffset rhs) {
+
+        this(rhs.fOffset, rhs.fPlacement);
+    }
+
+    /**
+    * Set the value of the TextOffset
+    * @param offset the offset into the text
+    * @param placement indicates the position of the caret; one of BEFORE_OFFSET or AFTER_OFFSET
+    */
+    public void setOffset(int offset, boolean placement)
+    {
+        if (offset < 0)
+            throw new IllegalArgumentException("TextOffset setOffset offset < 0: " + offset);
+
+        fOffset = offset;
+        fPlacement = placement;
+    }
+
+    /**
+     * Compare this to another Object.
+     */
+    public boolean equals(Object other) {
+
+        try {
+            return equals((TextOffset)other);
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+    }
+
+    /**
+    * Return true if offset and placement are the same.
+    *
+    * @param other offset to compare against
+    * @return true if both offsets are equal
+    */
+    public boolean equals(TextOffset other) {
+
+        return fOffset == other.fOffset && fPlacement == other.fPlacement;
+    }
+
+    /**
+     * Return the hashCode for this object.
+     */
+    public int hashCode() {
+
+        return fPlacement==AFTER_OFFSET? fOffset : -fOffset;
+    }
+
+    /**
+    * Return true if this offset is 'greaterThan' other.  If the fOffset fields are equal, the
+    * placement field is considered, and AFTER_OFFSET is considered 'greaterThan' BEFORE_OFFSET.
+    *
+    * @param other the other offset
+    * @return true if this offset appears after other
+    */
+    public boolean greaterThan(TextOffset other)
+    {
+        return fOffset > other.fOffset ||
+            (fOffset == other.fOffset && fPlacement == AFTER_OFFSET && other.fPlacement == BEFORE_OFFSET);
+    }
+
+    /**
+    * Return true if this offset is 'lessThan' other.  If the fOffset fields are equal, the
+    * placement field is considered, and BEFORE_OFFSET is considered 'lessThan' AFTER_OFFSET.
+    *
+    * @param other the other offset
+    * @return true if this offset appears before other
+    */
+    public boolean lessThan(TextOffset other) {
+
+        return fOffset < other.fOffset ||
+            (fOffset == other.fOffset && fPlacement == BEFORE_OFFSET && other.fPlacement == AFTER_OFFSET);
+    }
+
+    /**
+    * Copy the value of another TextOffset into this
+    * @param other the TextOffset to copy
+    */
+    public void assign(TextOffset other) {
+        fOffset = other.fOffset;
+        fPlacement = other.fPlacement;
+    }
+
+    /**
+    * Return a string representation of this object.
+    */
+    public String toString() {
+
+        return "[" + (fPlacement ? "before " : "after ") + fOffset + "]";
+    }
+}
diff --git a/src/com/ibm/richtext/textlayout/FontUtils.java b/src/com/ibm/richtext/textlayout/FontUtils.java
new file mode 100755
index 0000000..6b09baa
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/FontUtils.java
@@ -0,0 +1,29 @@
+/*
+ * @(#)$RCSfile: FontUtils.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:44 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout;
+
+import java.awt.Font;
+
+public final class FontUtils {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    public static Font getFont(java.util.Map attributes) {
+
+        return Font.getFont(attributes);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textlayout/Graphics2DConversion.java b/src/com/ibm/richtext/textlayout/Graphics2DConversion.java
new file mode 100755
index 0000000..1b1bfbd
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/Graphics2DConversion.java
@@ -0,0 +1,56 @@
+/*
+ * @(#)$RCSfile: Graphics2DConversion.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:44 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout;
+
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Paint;
+
+/**
+ * This class allows JDK 1.1 code to use a "fake" Graphics2D
+ * for source-code compatibility with Java2 code.  On Java2 it's
+ * a trivial class.  The JDK 1.1 version of this class does interesting
+ * work.
+ */ 
+public final class Graphics2DConversion {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    public static Graphics2D getGraphics2D(Graphics g) {
+        return (Graphics2D) g;
+    }
+
+    public static Graphics getGraphics(Graphics2D g) {
+        return g;
+    }
+
+    /**
+     * Will return an instance of Paint.
+     */
+    public static Object getColorState(Graphics2D g) {
+
+        return g.getPaint();
+    }
+
+    /**
+     * State must be an instance of Paint.
+     */
+    public static void restoreColorState(Graphics2D g, Object state) {
+
+        g.setPaint((Paint) state);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textlayout/attributes/AttributeKey.java b/src/com/ibm/richtext/textlayout/attributes/AttributeKey.java
new file mode 100755
index 0000000..3884594
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/AttributeKey.java
@@ -0,0 +1,165 @@
+/*
+ * @(#)$RCSfile: AttributeKey.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:45 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textlayout.attributes;
+
+import java.io.Serializable;
+
+/**
+ * This class provides a cannonical mapping between fields in TextAttribute
+ * and instances of itself.  It is used by AttributeMap to serialize
+ * and deserialize TextAttribute to preserve uniqueness of TextAttribute
+ * instances (ie so that TextAttribute instances remain singletons),
+ * and to provide compatability between 1.1 and 1.2 versions of
+ * TextAttribute.
+ * <p>
+ * Example use - instead of doing this:
+ * <blockquote><pre>
+ *     out.writeObject(anAttribute);
+ * </pre></blockquote>
+ * do this:
+ * <blockquote><pre>
+ *     out.writeObject(AttributeKey.mapAttributeToKey(anAttribute));
+ * </pre></blockquote>
+ * Similarly, instead of this:
+ * <blockquote><pre>
+ *     anAttribute = in.readObject();
+ * </pre></blockquote>
+ * do this:
+ * <blockquote><pre>
+ *     anAttribute = AttributeKey.mapKeyToAttribute(in.readObject());
+ * </pre></blockquote>
+ * <p>
+ * If anAttribute is not a known TextAttribute, then <code>mapAttributeToKey</code>
+ * will just return its argument.  Similarly, <code>mapKeyToAttribute</code> will
+ * return its argument if the argument is not a known AttributeKey.
+ */
+
+/*public*/ final class AttributeKey implements Serializable {
+
+/*
+    In this implementation, two parallel Vectors are
+    maintained.  TextAttribute(i) maps to AttributeKey(i).
+    For compatability with existing data, this mapping must
+    be maintained in the future!  So, when new attributes
+    are added, add them to the end of the list.
+*/
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final long serialVersionUID = 3772371253277107294L;
+
+    private static Object[] fgTextAttributes;
+    private static Object[] fgAttributeKeys;
+
+    static {
+        fgTextAttributes = new Object[] {
+            TextAttribute.FONT,
+            TextAttribute.FAMILY,
+            TextAttribute.WEIGHT,
+            TextAttribute.POSTURE,
+            TextAttribute.SIZE,
+            TextAttribute.SUPERSCRIPT,
+            TextAttribute.FOREGROUND,
+            TextAttribute.BACKGROUND,
+            TextAttribute.UNDERLINE,
+            TextAttribute.STRIKETHROUGH,
+            TextAttribute.CHAR_REPLACEMENT,
+            TextAttribute.EXTRA_LINE_SPACING,
+            TextAttribute.FIRST_LINE_INDENT,
+            TextAttribute.MIN_LINE_SPACING,
+            TextAttribute.LINE_FLUSH,
+            TextAttribute.LEADING_MARGIN,
+            TextAttribute.TRAILING_MARGIN,
+            TextAttribute.TAB_RULER,
+            TextAttribute.RUN_DIRECTION,
+            TextAttribute.BIDI_EMBEDDING,
+            TextAttribute.JUSTIFICATION,
+        };
+
+        final int attrCount = fgTextAttributes.length;
+        fgAttributeKeys = new Object[attrCount];
+
+        for (int i=0; i < attrCount; i += 1) {
+            fgAttributeKeys[i] = new AttributeKey(i);
+        }
+    }
+
+    /**
+     * Return the TextAttribute corresponding to the given key.
+     * If key is an instance of AttributeKey it will be mapped to
+     * a TextAttribute.  Otherwise, the key is returned.
+     * @param key the key to map to a TextAttribute field
+     * @return the TextAttribute for <code>key</code> if <code>key</code>
+     *    is an AttributeKey; otherwise <code>key</code> is returned
+     */
+    /*public*/ static Object mapKeyToAttribute(Object key) {
+
+        try {
+            AttributeKey aKey = (AttributeKey) key;
+            if (aKey.fId < fgTextAttributes.length) {
+                return fgTextAttributes[aKey.fId];
+            }
+            else {
+                return key;
+            }
+        }
+        catch(ClassCastException e) {
+            return key;
+        }
+    }
+
+    /**
+     * If attribute is a known TextAttribute, return an AttributeKey
+     * for it.  Otherwise the object is returned.
+     * @param attribute the attribute to map to an AttributeKey
+     * @return an AttributeKey for <code>attribute</code>
+     *     if <code>attribute</code> is a known attribute; otherwise
+     *     <code>attribute</code> is returned
+     */
+    /*public*/ static Object mapAttributeToKey(Object attribute) {
+
+        final int attrCount = fgTextAttributes.length;
+        
+        for (int index = 0; index < attrCount; index += 1) {
+            if (fgTextAttributes[index].equals(attribute)) {
+                return fgAttributeKeys[index];
+            }
+        }
+        
+        return attribute;
+    }
+
+
+    private int fId;
+
+    private AttributeKey(int id) {
+
+        fId = id;
+    }
+
+    public boolean equals(Object rhs) {
+
+        try {
+            return ((AttributeKey)rhs).fId == fId;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+    }
+
+    public int hashCode() {
+
+        return fId;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textlayout/attributes/AttributeMap.java b/src/com/ibm/richtext/textlayout/attributes/AttributeMap.java
new file mode 100755
index 0000000..0a1b4cc
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/AttributeMap.java
@@ -0,0 +1,529 @@
+/*
+ * @(#)$RCSfile: AttributeMap.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:45 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout.attributes;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Set;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+
+/**
+ * AttributeMap is an immutable Map.  Additionally, there are
+ * several methods for common operations (union,
+ * remove, intersect);  these methods return new AttributeMap
+ * instances.
+ * <p>
+ * Although any non-null Object can be a key or value in an
+ * AttributeMap, typically the keys are fields of TextAttribute.
+ * @see TextAttribute
+ */
+public final class AttributeMap implements java.util.Map,
+                                com.ibm.richtext.textlayout.attributes.Map,
+                                Externalizable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int CURRENT_VERSION = 1;
+
+    private static final long serialVersionUID = 9510803;
+
+    private static final String errString = "StyleSets are immutable.";
+
+    // This is passed to the Hashtable constructor as the
+    // load factor argument.  It is chosen to avoid resizing
+    // the Hashtable whenever possible.  I think that 1
+    // does this.
+    private static final int LOAD_FACTOR = 1;
+
+    private Hashtable styleTable;
+    private transient AttributeSet cachedKeySet = null;
+    private transient Collection cachedValueCollection = null;
+    private transient Set cachedEntrySet = null;
+
+    /**
+     * An empty AttributeMap.
+     */
+    public static final AttributeMap EMPTY_ATTRIBUTE_MAP = new AttributeMap();
+
+// ==============
+// Constructors
+// ==============
+
+    /**
+     * Create a new, empty AttributeMap.  EMPTY_STYLE_SET can be used
+     * in place of an AttributeMap produced by this constructor.
+     */
+    public AttributeMap() {
+
+        styleTable = new Hashtable(1, LOAD_FACTOR);
+    }
+
+    /**
+     * Create an AttributeMap with the same key-value
+     * entries as the given Map.
+     * @param map a Map whose key-value entries will
+     *      become the entries for this AttributeMap. <code>map</code>
+     *      is not modified, and must not contain null keys or values.
+     */
+    public AttributeMap(java.util.Map map) {
+
+        styleTable = new Hashtable(map.size(), LOAD_FACTOR);
+        styleTable.putAll(map);
+    }
+
+    /**
+     * Create an AttributeMap with the same key-value
+     * entries as the given Hashtable.
+     * @param table a Hashtable whose key-value entries will
+     *      become the entries for this AttributeMap. <code>table</code>
+     *      is not modified.
+     */
+    public AttributeMap(Hashtable hashtable) {
+
+        this((java.util.Map) hashtable);
+    }
+
+    /**
+     * Create an AttributeMap with a single entry of
+     * <code>{attribute, value}</code>.
+     * @param attribute the key in this AttributeMap's single entry
+     * @param value the value in this AttributeMap's single entry
+     */
+    public AttributeMap(Object key, Object value) {
+
+        styleTable = new Hashtable(1, LOAD_FACTOR);
+
+        // hashtable checks value for null
+        styleTable.put(key, value);
+    }
+
+    // For internal use only.
+    private AttributeMap(Hashtable table, boolean clone) {
+
+        if (clone) {
+            styleTable = (Hashtable) table.clone();
+        }
+        else {
+            this.styleTable = table;
+        }
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        out.writeInt(CURRENT_VERSION);
+        out.writeInt(styleTable.size());
+        Enumeration e = styleTable.keys();
+        while (e.hasMoreElements()) {
+            Object key = e.nextElement();
+            out.writeObject(AttributeKey.mapAttributeToKey(key));
+            out.writeObject(styleTable.get(key));
+        }
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+        if (in.readInt() != CURRENT_VERSION) {
+            throw new IOException("Invalid version of StyleBuffer");
+        }
+
+        int count = in.readInt();
+        for (int i=0; i < count; i += 1) {
+            Object key = AttributeKey.mapKeyToAttribute(in.readObject());
+            Object value = in.readObject();
+            styleTable.put(key, value);
+        }
+    }
+
+// ==============
+// Map interface
+// ==============
+
+// queries
+    /**
+     * Return the number of entries in the AttributeMap.
+     * @return the number of entries in the AttributeMap
+     */
+    public int size() {
+
+        return styleTable.size();
+    }
+
+    /**
+     * Return true if the number of entries in the AttributeMap
+     * is 0.
+     * @return true if the number of entries in the AttributeMap
+     * is 0
+     */
+    public boolean isEmpty() {
+
+        return styleTable.isEmpty();
+    }
+
+    /**
+     * Return true if the given key is in this AttributeMap.
+     * @param key the key to test
+     * @return true if <code>key</code> is in this AttributeMap
+     */
+    public boolean containsKey(Object key) {
+
+        return styleTable.containsKey(key);
+    }
+
+    /**
+     * Return true if the given value is in this AttributeMap.
+     * @param key the value to test
+     * @return true if <code>value</code> is in this AttributeMap
+     */
+    public boolean containsValue(Object value) {
+
+        return styleTable.containsValue(value);
+    }
+
+    /**
+     * Return the value associated with the given key.  If the
+     * key is not in this AttributeMap null is returned.
+     * @param key the key to look up
+     * @return the value associated with <code>key</code>, or
+     *     null if <code>key</code> is not in this AttributeMap
+     */
+    public Object get(Object key) {
+
+        return styleTable.get(key);
+    }
+
+// modifiers - all throw exceptions
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #addAttribute
+     * @throws UnsupportedOperationException
+     */
+    public Object put(Object key, Object value) {
+
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #removeAttributes
+     * @throws UnsupportedOperationException
+     */
+    public Object remove(Object key) {
+
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #addAttributes
+     * @throws UnsupportedOperationException
+     */
+    public void putAll(java.util.Map t) {
+
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #EMPTY_ATTRIBUTE_MAP
+     * @throws UnsupportedOperationException
+     */
+    public void clear() {
+
+        throw new UnsupportedOperationException(errString);
+    }
+
+// views
+
+    /**
+     * Return an AttributeSet containing every key in this AttributeMap.
+     * @return an AttributeSet containing every key in this AttributeMap
+     */
+    public Set keySet() {
+
+        return getKeySet();
+    }
+
+    /**
+     * Return an AttributeSet containing every key in this AttributeMap.
+     * @return an AttributeSet containing every key in this AttributeMap
+     */
+    public AttributeSet getKeySet() {
+
+        AttributeSet result = cachedKeySet;
+
+        if (result == null) {
+            result = AttributeSet.createKeySet(styleTable);
+            cachedKeySet = result;
+        }
+
+        return result;
+    }
+
+    /**
+     * Return a Collection containing every value in this AttributeMap.
+     * @return a Collection containing every value in this AttributeMap
+     */
+    public Collection values() {
+
+        Collection result = cachedValueCollection;
+
+        if (result == null) {
+            result = Collections.unmodifiableCollection(styleTable.values());
+            cachedValueCollection = result;
+        }
+
+        return result;
+    }
+
+    /**
+     * Return a Set containing all entries in this AttributeMap.
+     */
+    public Set entrySet() {
+
+        Set result = cachedEntrySet;
+
+        if (result == null) {
+            result = Collections.unmodifiableSet(styleTable.entrySet());
+            cachedEntrySet = result;
+        }
+
+        return result;
+    }
+
+    public boolean equals(Object rhs) {
+
+        if (rhs == this) {
+            return true;
+        }
+
+        if (rhs == null) {
+            return false;
+        }
+
+        AttributeMap rhsStyleSet = null;
+
+        try {
+            rhsStyleSet = (AttributeMap) rhs;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+
+        return styleTable.equals(rhsStyleSet.styleTable);
+    }
+
+    public int hashCode() {
+
+        return styleTable.hashCode();
+    }
+
+    public String toString() {
+
+        return styleTable.toString();
+    }
+
+// ==============
+// Operations
+// ==============
+
+    /**
+     * Return a AttributeMap which contains entries in this AttributeMap,
+     * along with an entry for <attribute, value>.  If attribute
+     * is already present in this AttributeMap its value becomes value.
+     */
+    public AttributeMap addAttribute(Object key, Object value) {
+
+        // try to optimize for case where <key, value> is already there?
+        Hashtable newTable = new Hashtable(styleTable.size() + 1, LOAD_FACTOR);
+        newTable.putAll(styleTable);
+        newTable.put(key, value);
+        return new AttributeMap(newTable, false);
+    }
+
+    /**
+     * Return a AttributeMap which contains entries in this AttributeMap
+     * and in rhs.  If an attribute appears in both StyleSets the
+     * value from rhs is used.
+     */
+    public AttributeMap addAttributes(AttributeMap rhs) {
+
+        int thisSize = size();
+
+        if (thisSize == 0) {
+            return rhs;
+        }
+
+        int otherSize = rhs.size();
+
+        if (otherSize == 0) {
+            return this;
+        }
+
+        Hashtable newTable = new Hashtable(thisSize + otherSize, LOAD_FACTOR);
+
+        newTable.putAll(styleTable);
+        newTable.putAll(rhs);
+
+        return new AttributeMap(newTable, false);
+    }
+
+    /**
+     * Return a AttributeMap which contains entries in this AttributeMap
+     * and in rhs.  If an attribute appears in both StyleSets the
+     * value from rhs is used.
+     * The Map's keys and values must be non-null.
+     */
+    public AttributeMap addAttributes(java.util.Map rhs) {
+
+        if (rhs instanceof AttributeMap) {
+            return addAttributes((AttributeMap)rhs);
+        }
+
+        Hashtable newTable = new Hashtable(size() + rhs.size(), LOAD_FACTOR);
+
+        newTable.putAll(styleTable);
+        newTable.putAll(rhs);
+
+        return new AttributeMap(newTable, false);
+    }
+
+    /**
+     * Return a AttributeMap with the entries in this AttributeMap, but
+     * without attribute as a key.
+     */
+    public AttributeMap removeAttribute(Object attribute) {
+
+        if (!containsKey(attribute)) {
+            return this;
+        }
+
+        Hashtable newTable = new Hashtable(styleTable.size(), LOAD_FACTOR);
+        newTable.putAll(styleTable);
+        newTable.remove(attribute);
+
+        return new AttributeMap(newTable, false);
+    }
+
+    /**
+     * Return a AttributeMap with the entries of this AttributeMap whose
+     * attributes are <b>not</b> in the Set.
+     */
+    public AttributeMap removeAttributes(AttributeSet attributes) {
+
+        Set set = attributes;
+        return removeAttributes(set);
+    }
+
+    /**
+     * Return a AttributeMap with the entries of this AttributeMap whose
+     * attributes are <b>not</b> in the Set.
+     */
+    public AttributeMap removeAttributes(Set attributes) {
+
+        // Create newTable on demand;  if null at
+        // end of iteration then return this set.
+        // Should we intersect styleTable.keySet with
+        // attributes instead?
+
+        Hashtable newTable = null;
+        Iterator attrIter = attributes.iterator();
+        while (attrIter.hasNext()) {
+            Object current = attrIter.next();
+            if (current != null && styleTable.containsKey(current)) {
+                if (newTable == null) {
+                    newTable = new Hashtable(styleTable.size(), LOAD_FACTOR);
+                    newTable.putAll(styleTable);
+                }
+                newTable.remove(current);
+            }
+        }
+
+        if (newTable != null) {
+            return new AttributeMap(newTable, false);
+        }
+        else {
+            return this;
+        }
+    }
+
+    /**
+     * Return a AttributeMap with the keys of this AttributeMap which
+     * are also in the Set.  The set must not contain null.
+     */
+    public AttributeMap intersectWith(AttributeSet attributes) {
+
+        Set set = attributes;
+        return intersectWith(set);
+    }
+
+    /**
+     * Return a AttributeMap with the keys of this AttributeMap which
+     * are also in the Set.  The set must not contain null.
+     */
+    public AttributeMap intersectWith(Set attributes) {
+
+        // For now, forget about optimizing for the case when
+        // the return value is equivalent to this set.
+
+        int attrSize = attributes.size();
+        int styleTableSize = styleTable.size();
+        int size = Math.min(attrSize, styleTableSize);
+        Hashtable newTable = new Hashtable(size, LOAD_FACTOR);
+
+        if (attrSize < styleTableSize) {
+            Iterator attrIter = attributes.iterator();
+            while (attrIter.hasNext()) {
+                Object current = attrIter.next();
+                if (current != null) {
+                    Object value = styleTable.get(current);
+                    if (value != null) {
+                        newTable.put(current, value);
+                    }
+                }
+            }
+        }
+        else {
+            Iterator attrIter = keySet().iterator();
+            while (attrIter.hasNext()) {
+                Object current = attrIter.next();
+                if (attributes.contains(current)) {
+                    newTable.put(current, styleTable.get(current));
+                }
+            }
+        }
+
+        return new AttributeMap(newTable, false);
+    }
+
+    /**
+     * Put all entries in this AttributeMap into the given Map.
+     * @param rhs the Map into which entries are placed
+     */
+    public void putAllInto(java.util.Map rhs) {
+
+        rhs.putAll(this);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textlayout/attributes/AttributeSet.java b/src/com/ibm/richtext/textlayout/attributes/AttributeSet.java
new file mode 100755
index 0000000..77771ca
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/AttributeSet.java
@@ -0,0 +1,345 @@
+/*
+ * @(#)$RCSfile: AttributeSet.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:45 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout.attributes;
+
+import java.util.Hashtable;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.Collection;
+
+/**
+ * An AttributeSet is an immutable collection of unique Objects.
+ * It has several operations
+ * which return new AttributeSet instances.
+ */
+public final class AttributeSet implements Set {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    /**
+     * An AttributeSet with no members.
+     */
+    public static final AttributeSet EMPTY_SET = new AttributeSet();
+
+    private Hashtable elements;
+
+    private static final String errString = "AttributeSet is immutable.";
+
+    private AttributeSet(Hashtable elements) {
+
+        this.elements = elements;
+    }
+
+    /**
+     * Package only.  For AttributeMap use.
+     */
+    static AttributeSet createKeySet(Hashtable hashtable) {
+
+        Hashtable newElements = new Hashtable();
+
+        Enumeration e = hashtable.keys();
+        while (e.hasMoreElements()) {
+            Object next = e.nextElement();
+            newElements.put(next, next);
+        }
+
+        return new AttributeSet(newElements);
+    }
+
+    /**
+     * Create a new, empty AttributeSet.  The set is semantically
+     * equivalent to EMPTY_SET.
+     */
+    public AttributeSet() {
+
+        elements = new Hashtable();
+    }
+
+    /**
+     * Create a new AttributeSet with the single element elem.
+     */
+    public AttributeSet(Object elem) {
+
+        elements = new Hashtable(1, 1);
+        elements.put(elem, elem);
+    }
+
+    /**
+     * Create a new AttributeSet containing the items in the array elems.
+     */
+    public AttributeSet(Object[] elems) {
+
+        elements = new Hashtable(elems.length, 1);
+        for (int i=0; i < elems.length; i++) {
+            Object next = elems[i];
+            elements.put(next, next);
+        }
+    }
+
+    /**
+     * Return true if the number of elements in this set is 0.
+     * @return true if the number of elements in this set is 0
+     */
+    public boolean isEmpty() {
+
+        return elements.isEmpty();
+    }
+
+    /**
+     * Return the number of elements in this set.
+     * @return the number of elements in this set
+     */
+    public int size() {
+
+        return elements.size();
+    }
+
+    public boolean equals(Object rhs) {
+
+        try {
+            return equals((AttributeSet) rhs);
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+    }
+
+    public boolean equals(AttributeSet rhs) {
+
+        if (rhs == null) {
+            return false;
+        }
+
+        return elements.equals(rhs.elements);
+    }
+
+    /**
+     * Return true if this set contains the given Object
+     * @return true if this set contains <code>o</code>
+     */
+    public boolean contains(Object o) {
+
+        Object value = elements.get(o);
+        return value != null;
+    }
+
+    /**
+     * Return true if this set contains all elements in the given
+     * Collection
+     * @param coll the collection to compare with
+     * @return true if this set contains all elements in the given
+     * Collection
+     */
+    public boolean containsAll(Collection coll) {
+
+        return elements.keySet().containsAll(coll);
+    }
+
+    /**
+     * Return an Enumeration of the elements in this set.
+     * @return an Enumeration of the elements in this set
+     */
+    public Enumeration elements() {
+
+        return elements.keys();
+    }
+
+    /**
+     * Return an Iterator with the elements in this set.
+     * @return an Iterator with the elements in this set.
+     * The Iterator cannot be used to modify this AttributeSet.
+     */
+    public Iterator iterator() {
+
+        return new EnumerationIterator(elements.keys());
+    }
+
+    /**
+     * Fill in the given array with the elements in this set.
+     * @param storage an array to fill with this set's elements.
+     * The array cannot be null.
+     * @return the <tt>storage</tt> array.
+     */
+    public Object[] toArray(Object[] storage) {
+
+        Enumeration keys = elements.keys();
+        int n=0;
+        while (keys.hasMoreElements()) {
+            storage[n++] = keys.nextElement();
+        }
+        return storage;
+    }
+
+    /**
+     * Return an array with the elements in this set.
+     * @return an array with the elements in this set
+     */
+    public Object[] toArray() {
+
+        return toArray(new Object[size()]);
+    }
+    
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #addElement
+     * @throws UnsupportedOperationException
+     */
+    public boolean add(Object o){
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @throws UnsupportedOperationException
+     */
+    public boolean remove(Object o) {
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #unionWith
+     * @throws UnsupportedOperationException
+     */
+    public boolean addAll(Collection coll) {
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #subtract
+     * @throws UnsupportedOperationException
+     */
+    public boolean removeAll(Collection coll) {
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #intersectWith
+     * @throws UnsupportedOperationException
+     */
+    public boolean retainAll(Collection coll) {
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #EMPTY_SET
+     * @throws UnsupportedOperationException
+     */
+    public void clear() {
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Return an AttributeSet containing the elements of this set
+     * and the given element
+     * @param element the element to add
+     * @return an AttributeSet like this one, with <code>element</code>
+     * added
+     */
+    public AttributeSet addElement(Object element) {
+
+        Hashtable newElements = (Hashtable) elements.clone();
+        newElements.put(element, element);
+        return new AttributeSet(newElements);
+    }
+
+    /**
+     * Return an AttributeSet which is the union of
+     * this set with the given set.
+     * @param s the set to union with
+     * @return an AttributeSet of the elements in this set or
+     * in <code>s</code>
+     */
+    public AttributeSet unionWith(AttributeSet s) {
+
+        Hashtable newElements = (Hashtable) elements.clone();
+
+        Iterator iter = s.iterator();
+        while (iter.hasNext()) {
+            Object next = iter.next();
+            newElements.put(next, next);
+        }
+
+        return new AttributeSet(newElements);
+    }
+
+    /**
+     * Return an AttributeSet which is the intersection of
+     * this set with the given set.
+     * @param s the set to intersect with
+     * @return an AttributeSet of the elements in this set which
+     * are in <code>s</code>
+     */
+    public AttributeSet intersectWith(AttributeSet s) {
+
+        Hashtable newElements = new Hashtable();
+
+        Iterator iter = s.iterator();
+        while (iter.hasNext()) {
+            Object next = iter.next();
+            if (elements.get(next) != null) {
+                newElements.put(next, next);
+            }
+        }
+
+        return new AttributeSet(newElements);
+    }
+
+    /**
+     * Return an AttributeSet with the elements in this set which
+     * are not in the given set.
+     * @param s the set of elements to exclude
+     * @return an AttributeSet of the elements in this set which
+     * are not in <code>s</code>
+     */
+    public AttributeSet subtract(AttributeSet s) {
+
+        Hashtable newElements = (Hashtable) elements.clone();
+
+        Iterator iter = s.iterator();
+        while (iter.hasNext()) {
+            newElements.remove(iter.next());
+        }
+
+        return new AttributeSet(newElements);
+    }
+
+    private static final class EnumerationIterator implements Iterator {
+
+        private Enumeration e;
+
+        EnumerationIterator(Enumeration e) {
+            this.e = e;
+        }
+
+        public boolean hasNext() {
+            return e.hasMoreElements();
+        }
+
+        public Object next() {
+            return e.nextElement();
+        }
+
+        public void remove() {
+            throw new UnsupportedOperationException(errString);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textlayout/attributes/Map.java b/src/com/ibm/richtext/textlayout/attributes/Map.java
new file mode 100755
index 0000000..aa5d2a4
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/Map.java
@@ -0,0 +1,51 @@
+/*
+ * @(#)$RCSfile: Map.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:46 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout.attributes;
+
+/**
+ * A Map is a collection of key-value pairs (or entries), where each
+ * key in the Map is unique.  This interface is a subset of the
+ * JDK 1.2 Map interface.  It is used by JDK 1.1-compatible code.
+ */
+public interface Map {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Return the number of entries in this Map.
+     * @return the number of entries in this Map
+     */
+    public int size();
+
+    /**
+     * Return true if this Map has no entries.
+     * @return true if this Map has no entries
+     */
+    public boolean isEmpty();
+
+    /**
+     * Return the value of the given key.
+     * @return the value of the given key.  If the key does not have
+     * a value in this Map, null is returned.
+     */
+    public Object get(Object key);
+
+    /**
+     * Return true if this Map contains the given key.
+     * @return true if this Map contains the given key
+     */
+    public boolean containsKey(Object key);
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textlayout/attributes/TextAttribute.java b/src/com/ibm/richtext/textlayout/attributes/TextAttribute.java
new file mode 100755
index 0000000..d6d726e
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/TextAttribute.java
@@ -0,0 +1,248 @@
+/*
+ * @(#)$RCSfile: TextAttribute.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:46 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout.attributes;
+
+import java.util.Hashtable;
+import java.text.AttributedCharacterIterator.Attribute;
+import java.io.InvalidObjectException;
+
+/**
+ * This class contains a number of keys (or attributes) for specifying text styles
+ * in a Map.  A text style is a collection of key-value pairs, where
+ * the key represents a certain characteristic (such as size) and
+ * the value tells how that characteristic is realized (ie what the
+ * size is).
+ * <p>
+ * All of the attributes in TextAttribute specify a class for their value.
+ * Map does not enforce these class specifications;  however, text rendering code
+ * will tend to fail with a ClassCastException if a key's value
+ * has an unexpected class.
+ * <p>
+ * Some attributes are meaningful for entire paragraphs, not individual
+ * characters.  These attributes are documented as applying to paragraphs.
+ * All other attributes apply to characters.
+ * <p>
+ * Many of the field names and values in this class
+ * are taken from the JDK 1.2
+ * <code>java.awt.font.TextAttribute class</code>.
+ * @see Map
+ */
+public class TextAttribute extends Attribute {
+
+    private static final Hashtable instanceMap = new Hashtable(9);
+
+    protected TextAttribute(String name) {
+        super(name);
+        if (this.getClass() == TextAttribute.class) {
+            instanceMap.put(name, this);
+        }
+    }
+
+    protected Object readResolve() throws InvalidObjectException {
+        if (this.getClass() != TextAttribute.class) {
+            throw new InvalidObjectException("subclass didn't correctly implement readResolve");
+        }
+
+        TextAttribute instance = (TextAttribute) instanceMap.get(getName());
+        if (instance != null) {
+            return instance;
+        } else {
+            throw new InvalidObjectException("unknown attribute name");
+        }
+    }
+
+    public static final Object FONT = java.awt.font.TextAttribute.FONT;
+
+    public static final Object FAMILY = java.awt.font.TextAttribute.FAMILY;
+
+    public static final Object WEIGHT = java.awt.font.TextAttribute.WEIGHT;
+    public static final Float WEIGHT_BOLD = java.awt.font.TextAttribute.WEIGHT_BOLD;
+
+    public static final Object POSTURE = java.awt.font.TextAttribute.POSTURE;
+    public static final Float POSTURE_OBLIQUE = java.awt.font.TextAttribute.POSTURE_OBLIQUE;
+
+    public static final Object SIZE = java.awt.font.TextAttribute.SIZE;
+
+    public static final Object SUPERSCRIPT = java.awt.font.TextAttribute.SUPERSCRIPT;
+    public static final Integer SUPERSCRIPT_SUPER = java.awt.font.TextAttribute.SUPERSCRIPT_SUPER;
+    public static final Integer SUPERSCRIPT_SUB = java.awt.font.TextAttribute.SUPERSCRIPT_SUB;
+
+    /**
+     * Attribute key for the foreground and background color adornment.
+     */
+    public static final Object FOREGROUND = java.awt.font.TextAttribute.FOREGROUND;
+    public static final Object BACKGROUND = java.awt.font.TextAttribute.BACKGROUND;
+
+    public static final Object UNDERLINE = java.awt.font.TextAttribute.UNDERLINE;
+    public static final Integer UNDERLINE_ON = java.awt.font.TextAttribute.UNDERLINE_ON;
+
+    public static final Object STRIKETHROUGH = java.awt.font.TextAttribute.STRIKETHROUGH;
+    public static final Boolean STRIKETHROUGH_ON = java.awt.font.TextAttribute.STRIKETHROUGH_ON;
+
+    public static final Object OFFSET = new TextAttribute("offset");
+
+    public static final Object CHAR_REPLACEMENT = java.awt.font.TextAttribute.CHAR_REPLACEMENT;
+// Paragraph Styles
+
+// values are Floats:
+    public static final Object EXTRA_LINE_SPACING = new TextAttribute("extra_line_spacing");
+    public static final Object EXTRA_FIRST_LINE_SPACING = new TextAttribute("extra_first_line_spacing");
+
+    /**
+     * Amount beyond leading margin to indent the first line of a paragraph.
+     */
+    public static final Object FIRST_LINE_INDENT = new TextAttribute("first_line_indent");
+
+    public static final Object MIN_LINE_SPACING = new TextAttribute("min_line_spacing");
+    public static final Object MIN_FIRST_LINE_SPACING = new TextAttribute("min_first_line_spacing");
+
+    /**
+     * Flush lines left, right, or center.
+     */
+    public static final Object LINE_FLUSH = new TextAttribute("line_flush");
+
+    public static final Integer FLUSH_LEADING = new Integer(0);
+    public static final Integer FLUSH_CENTER = new Integer(1);
+    public static final Integer FLUSH_TRAILING = new Integer(2);
+    /**
+     * Value of <code>LINE_FLUSH</code> for full justification.
+     */
+    public static final Integer FULLY_JUSTIFIED = new Integer(3);
+
+    /**
+     * Leading and trailing margin in paragraph.
+     */
+    public static final Object LEADING_MARGIN = new TextAttribute("leading_margin");
+    public static final Object TRAILING_MARGIN = new TextAttribute("trailing_margin");
+
+    /**
+     * Tab ruler.  Values are MTabRuler instances.
+     */
+    public static final Object TAB_RULER = new TextAttribute("tab_ruler");
+    
+    /**
+     * Attribute key for the run direction of the line.
+     *
+     * <P><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1">
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Key</TH>
+     * <TD VALIGN="TOP">RUN_DIRECTION</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Value</TH>
+     * <TD VALIGN="TOP">Boolean</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Constants</TH>
+     * <TD VALIGN="TOP">RUN_DIRECTION_LTR = true, RUN_DIRECTION_RTL = false
+     * </TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Default</TH>
+     * <TD VALIGN="TOP">Use the default Unicode base direction from the BIDI 
+     * algorithm.</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Description</TH>
+     * <TD VALIGN="TOP"><P>Specifies which base run direction to use when 
+     * positioning mixed directional runs within a paragraph. If this value is
+     * RUN_DIRECTION_DEFAULT, <code>TextLayout</code> uses the default Unicode
+     * base direction from the BIDI algorithm.</P>
+     * <P><I>This attribute should have the same value over the whole 
+     * paragraph.</I></TD></TR>
+     * </TABLE>
+     */
+    public static final Object RUN_DIRECTION = java.awt.font.TextAttribute.RUN_DIRECTION;
+
+    /**
+     * Left-to-right run direction.
+     * @see #RUN_DIRECTION
+     */
+    public static final Boolean RUN_DIRECTION_LTR = java.awt.font.TextAttribute.RUN_DIRECTION_LTR;
+
+    /**
+     * Right-to-left run direction.
+     * @see #RUN_DIRECTION
+     */
+    public static final Boolean RUN_DIRECTION_RTL = java.awt.font.TextAttribute.RUN_DIRECTION_RTL;
+
+    /**
+     * Attribute key for the embedding level for nested bidirectional runs.
+     *
+     * <P><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1">
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Key</TH>
+     * <TD VALIGN="TOP">BIDI_EMBEDDING</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Value</TH>
+     * <TD VALIGN="TOP">Integer</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Limits</TH>
+     * <TD VALIGN="TOP">Positive values 1 through 15 are <I>embedding</I>
+     * levels, negative values<BR> through -15 are <I>override</I> levels
+     * </TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Default</TH>
+     * <TD VALIGN="TOP">Use standard BIDI to compute levels from formatting
+     * characters in the text.</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Description</TH>
+     * <TD VALIGN="TOP">Specifies the bidi embedding level of the character.
+     * When this attribute is present anywhere in a paragraph, then the 
+     * Unicode characters RLO, LRO, RLE, LRE, PDF are disregarded in the BIDI 
+     * analysis of that paragraph. 
+     * See the Unicode Standard v. 2.0, section 3-11.
+     * </TD></TR>
+     * </TABLE>
+     */
+    public static final Object BIDI_EMBEDDING = java.awt.font.TextAttribute.BIDI_EMBEDDING;
+
+    /**
+     * Attribute key for the justification of a paragraph.
+     *
+     * <P><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1">
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Key</TH>
+     * <TD VALIGN="TOP">JUSTIFICATION</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Value</TH>
+     * <TD VALIGN="TOP">Float</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Limits</TH>
+     * <TD VALIGN="TOP">0.0 through1.0</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Default</TH>
+     * <TD VALIGN="TOP">1.0</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Description</TH>
+     * <TD VALIGN="TOP"><P>Specifies which fraction of the extra space to use 
+     * when justification is requested. For example, if the line is 50 points
+     * wide and the margins are 70 points apart, a value of 0.5 means that the
+     * line is padded to reach a width of 60 points.</P>
+     * <P><I>This attribute should have the same value over the whole
+     * paragraph.</I></TD></TR>
+     * </TABLE>
+     */
+    public static final Object JUSTIFICATION = java.awt.font.TextAttribute.JUSTIFICATION;
+
+    /**
+     * Justify the line to the full requested width.
+     * @see #JUSTIFICATION
+     */
+    public static final Float JUSTIFICATION_FULL = java.awt.font.TextAttribute.JUSTIFICATION_FULL;
+
+    /**
+     * Do not allow the line to be justified.
+     * @see #JUSTIFICATION
+     */
+    public static final Float JUSTIFICATION_NONE = java.awt.font.TextAttribute.JUSTIFICATION_NONE;
+}
diff --git a/src/com/ibm/richtext/textpanel/ATextPanelImpl.java b/src/com/ibm/richtext/textpanel/ATextPanelImpl.java
new file mode 100755
index 0000000..fe2fede
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/ATextPanelImpl.java
@@ -0,0 +1,755 @@
+/*
+ * @(#)$RCSfile: ATextPanelImpl.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:46 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Adjustable;
+import java.awt.Component;
+import java.awt.Graphics;
+import java.awt.datatransfer.Clipboard;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textformat.TextOffset;
+
+/**
+ * Implementation class for TextPanel and JTextPanel.
+ */
+final class ATextPanelImpl {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    private RunStrategy fRunStrategy = null;
+    private TextComponent fTextComponent = null;
+    private TextSelection fSelection = null;
+    private TextEditBehavior fEditBehavior = null;
+    private MText fText = null;
+
+    private PanelEventBroadcaster fBroadcaster;
+    private KeyRemap fRemap = KeyRemap.getIdentityRemap();
+
+    // This is a little ugly.  TextPanel supports its modified
+    // flag whether or not it is editable, or even selectable.
+    // So if there's no command log to keep track of the flag
+    // state then its done right here in TextPanel.  If the
+    // panel is editable this flag is ignored.
+    private boolean fModified = false;
+
+    static final TextPanelSettings fgDefaultSettings = new TextPanelSettings();
+
+    static TextPanelSettings getDefaultSettings() {
+
+        return (TextPanelSettings) fgDefaultSettings.clone();
+    }
+    
+    ATextPanelImpl(RunStrategy runStrategy,
+                   TextPanelSettings settings,
+                   MConstText initialText,
+                   Clipboard clipboard,
+                   MTextPanel client,
+                   Adjustable horzSb,
+                   Adjustable vertSb) {
+                    
+        fRunStrategy = runStrategy;
+        fBroadcaster = new PanelEventBroadcaster(client);
+
+        Scroller scroller = null;
+        if (settings.getScrollable()) {
+            scroller = new Scroller(horzSb, vertSb);
+        }
+
+        StyledTextClipboard textClipboard =
+                            StyledTextClipboard.getClipboardFor(clipboard);
+
+        fText = new StyledText();
+        if (initialText != null) {
+            fText.append(initialText);
+        }
+
+        fTextComponent = new TextComponent(fText,
+                                           settings.getDefaultValues(),
+                                           settings.getWraps(),
+                                           TextComponent.WINDOW_WIDTH,
+                                           TextComponent.DEFAULT_INSET,
+                                           textClipboard,
+                                           settings.getScrollable(),
+                                           scroller,
+                                           fBroadcaster);
+
+        if (scroller != null) {
+            scroller.setClient(fTextComponent);
+        }
+        
+        // May have to wait until component has host to do this:
+        if (settings.getSelectable()) {
+            fSelection = new TextSelection(fTextComponent, 
+                                           fBroadcaster,
+                                           fRunStrategy);
+            fSelection.addToOwner(fTextComponent);
+            if (settings.getEditable()) {
+                fEditBehavior = new TextEditBehavior(
+                            fTextComponent, fSelection, fBroadcaster, fRemap);
+                fEditBehavior.addToOwner(fTextComponent);
+            }
+        }
+    }
+    
+    FakeComponent getTextComponent() {
+        
+        return fTextComponent;
+    }
+    
+    /**
+     * Add the given TextPanelListener to the listeners which will
+     * receive update notifications from this TextPanel.
+     * @param listener the listener to add
+     */
+    public void addListener(TextPanelListener listener) {
+
+        fBroadcaster.addListener(listener);
+    }
+
+    /**
+     * Remove the given TextPanelListener from the listeners which will
+     * receive update notifications from this TextPanel.
+     * @param listener the listener to remove
+     */
+    public void removeListener(TextPanelListener listener) {
+
+        fBroadcaster.removeListener(listener);
+    }
+
+    /**
+     * You know what this does...
+     */
+    private static int pin(int value, int min, int max) {
+
+        if (min > max) {
+            throw new IllegalArgumentException("Invalid range");
+        }
+
+        if (value < min) {
+            value = min;
+        }
+        else if (value > max) {
+            value = max;
+        }
+        return value;
+    }
+
+//============
+// Text Access
+//============
+
+    /**
+     * Set the document to <tt>newText</tt>.  This operation
+     * modifies the text in the TextPanel.  It does not modify or adopt
+     * <tt>newText</tt>.  This method sets the selection an insertion point at
+     * the end of the text.
+     * @param newText the text which will replace the current text.
+     */
+    public void setText(MConstText newText) {
+
+        replaceRange(newText, 0, getTextLength());
+    }
+
+    /**
+     * Append the given text to the end of the document.  Equivalent to
+     * <tt>insert(newText, getTextLength())</tt>.
+     * @param newText the text to append to the document
+     */
+    public void append(MConstText newText) {
+
+        int length = getTextLength();
+        replaceRange(newText, length, length);
+    }
+
+    /**
+     * Insert the given text into the document at the given position.
+     * Equivalent to
+     * <tt>replaceRange(newText, position, position)</tt>.
+     * @param newText the text to insert into the document.
+     * @param position the position in the document where the
+     *     text will be inserted
+     */
+    public void insert(MConstText newText, int position) {
+
+        replaceRange(newText, position, position);
+    }
+
+    /**
+     * Replace the given range with <tt>newText</tt>.  After this
+     * operation the selection range is an insertion point at the
+     * end of the new text.
+     * @param newText the text with which to replace the range
+     * @param start the beginning of the range to replace
+     * @param end the end of the range to replace
+     */
+    public void replaceRange(MConstText newText, int start, int end) {
+
+        int length = getTextLength();
+
+        start = pin(start, 0, length);
+        end = pin(end, start, length);
+
+        if (fSelection != null) {
+
+            // If we're selectable, but not editable, we'll temporarily
+            // make ourselves editable to change the text.  A little funny
+            // but there's a lot of code for getting caret stuff right,
+            // and this is not a common operation anyway.
+
+            TextEditBehavior behavior;
+
+            if (fEditBehavior == null) {
+                behavior = new TextEditBehavior(fTextComponent, fSelection, fBroadcaster, fRemap);
+                behavior.addToOwner(fTextComponent);
+            }
+            else {
+                behavior = fEditBehavior;
+            }
+
+            TextOffset newSelection = new TextOffset(start + newText.length(),
+                                                     TextOffset.AFTER_OFFSET);
+
+            TextReplacement replacement = new TextReplacement(start, end,
+                                                              newText,
+                                                              newSelection,
+                                                              newSelection);
+
+            fTextComponent.textControlEventOccurred(Behavior.REPLACE,
+                                                    replacement);
+            if (fEditBehavior == null) {
+                behavior.removeFromOwner();
+            }
+        }
+        else {
+
+            MText oldText = fTextComponent.getModifiableText();
+            fTextComponent.stopBackgroundFormatting();
+            oldText.replaceAll(newText);
+            fTextComponent.reformatAndDrawText(0, newText.length(), null, null, null, null);
+        }
+    }
+
+    /**
+     * Return the length of the text document in the TextPanel.
+     * @return the length of the text document in the TextPanel
+     */
+    public int getTextLength() {
+
+        return fTextComponent.getText().length();
+    }
+
+    /**
+     * Return the text document in the TextPanel.
+     * @return the text document in the TextPanel.
+     */
+    public MConstText getText() {
+
+        return fTextComponent.getText();
+    }
+
+//============
+// Selection Access
+//============
+
+    /**
+     * Return the offset of the start of the selection.
+     */
+    public int getSelectionStart() {
+
+        if (fSelection != null) {
+            return fSelection.getStart().fOffset;
+        }
+        else {
+            return 0;
+        }
+    }
+
+    /**
+     * Return the offset of the end of the selection.
+     */
+    public int getSelectionEnd() {
+
+        if (fSelection != null) {
+            return fSelection.getEnd().fOffset;
+        }
+        else {
+            return 0;
+        }
+    }
+
+    /**
+     * Set the beginning of the selection range.  This is
+     * equivalent to <tt>select(selectionStart, getSelectionEnd())</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionStart(int selectionStart) {
+
+        select(selectionStart, getSelectionEnd());
+    }
+
+    /**
+     * Set the end of the selection range.  This is
+     * equivalent to <tt>select(getSelectionStart(), selectionEnd)</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionEnd(int selectionEnd) {
+
+        select(getSelectionStart(), selectionEnd);
+    }
+
+    /**
+     * Set the selection range to an insertion point at the given
+     * offset.  This is equivalent to
+     * <tt>select(position, position)</tt>.
+     * @param position the offset of the new insertion point
+     */
+    public void setCaretPosition(int position) {
+
+        select(position, position);
+    }
+
+    /**
+     * Set the selection range to the given range.  The range start
+     * is pinned between 0 and the text length;  the range end is pinned
+     * between the range start and the end of the text.  These semantics
+     * are identical to those of <tt>java.awt.TextComponent</tt>.
+     * This method has no effect if the text is not selectable.
+     * @param selectionStart the beginning of the selection range
+     * @param selectionEnd the end of the selection range
+     */
+    public void select(int selectionStart, int selectionEnd) {
+
+        int length = getTextLength();
+
+        selectionStart = pin(selectionStart, 0, length);
+        selectionEnd = pin(selectionEnd, selectionStart, length);
+
+        TextRange range = new TextRange(selectionStart, selectionEnd);
+        fTextComponent.textControlEventOccurred(Behavior.SELECT, range);
+    }
+
+    /**
+     * Select all of the text in the document.  This method has no effect if
+     * the text is not selectable.
+     */
+    public void selectAll() {
+
+        select(0, getTextLength());
+    }
+
+
+//============
+// Format Width
+//============
+
+    /**
+     * Return the total format width, in pixels.  The format width is the
+     * width to which text is wrapped.
+     * @return the format width
+     */
+    public int getFormatWidth() {
+
+        return fTextComponent.getFormatWidth();
+    }
+
+    /**
+     * Return true if the paragraph at the given offset is left-to-right.
+     * @param offset an offset in the text
+     * @return true if the paragraph at the given offset is left-to-right
+     */
+    public boolean paragraphIsLeftToRight(int offset) {
+        
+        return fTextComponent.paragraphIsLeftToRight(offset);
+    }
+
+    /**
+     * Return true if there is a change which can be undone.
+     * @return true if there is a change which can be undone.
+     */
+    public boolean canUndo() {
+
+        if (fEditBehavior != null) {
+            return fEditBehavior.canUndo();
+        }
+        else {
+            return false;
+        }
+    }
+
+    /**
+     * Return true if there is a change which can be redone.
+     * @return true if there is a change which can be redone.
+     */
+    public boolean canRedo() {
+
+        if (fEditBehavior != null) {
+            return fEditBehavior.canRedo();
+        }
+        else {
+            return false;
+        }
+    }
+
+    /**
+     * Return true if the clipboard contains contents which could be
+     * transfered into the text.
+     * @return true if the clipboard has text content.
+     */
+    public boolean clipboardNotEmpty() {
+
+        return fTextComponent.getClipboard().hasContents();
+    }
+
+    /**
+     * Return an AttributeMap of keys with default values.  The default
+     * values are used when displaying text for values which are not
+     * specified in the text.
+     * @return an AttributeMap of default key-value pairs
+     */
+    public AttributeMap getDefaultValues() {
+
+        return fTextComponent.getDefaultValues();
+    }
+    
+    private static boolean objectsAreEqual(Object lhs, Object rhs) {
+    
+        if (lhs == null) {
+            return rhs == null;
+        }
+        else {
+            return lhs.equals(rhs);
+        }
+    }
+
+    private static Object consistentCharStyle(MConstText text,
+                                              int start,
+                                              int limit,
+                                              Object key,
+                                              Object defaultValue) {
+
+        if (start >= limit) {
+            throw new IllegalArgumentException("Invalid range.");
+        }
+
+        int runStart = start;
+        Object initialValue = text.characterStyleAt(runStart).get(key);
+
+        if (initialValue == null) {
+            initialValue = defaultValue;
+        }
+
+        for (runStart = text.characterStyleLimit(runStart);
+             runStart < limit;
+             runStart = text.characterStyleLimit(runStart)) {
+
+            Object nextValue = text.characterStyleAt(runStart).get(key);
+
+            if (nextValue == null) {
+                nextValue = defaultValue;
+            }
+
+            if (!objectsAreEqual(initialValue, nextValue)) {
+                return MTextPanel.MULTIPLE_VALUES;
+            }
+        }
+
+        return initialValue;
+    }
+
+    /**
+     * This method inspects the character style runs in the selection
+     * range (or the typing style at the insertion point) and returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li>null, if two or more style runs have different values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be <tt>defaultStyle</tt>.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @param defaultValue the implicit value of <tt>key</tt> in
+     *     style runs where <tt>key</tt> is not defined
+     */
+    public Object getCharacterStyleOverSelection(Object key) {
+
+        TextRange selRange;
+        if (fSelection != null)
+            selRange = fSelection.getSelectionRange();
+        else
+            selRange = new TextRange(0, 0);
+
+        if (selRange.start == selRange.limit) {
+
+            AttributeMap compStyle;
+
+            if (fEditBehavior != null) {
+                compStyle = fEditBehavior.getInsertionPointStyle();
+            }
+            else {
+                compStyle = TextEditBehavior.typingStyleAt(fText, selRange.start, selRange.limit);
+            }
+
+            Object value = compStyle.get(key);
+            return value==null? getDefaultValues().get(key) : value;
+        }
+        else {
+            return consistentCharStyle(fText, 
+                                       selRange.start,
+                                       selRange.limit,
+                                       key,
+                                       getDefaultValues().get(key));
+        }
+    }
+
+    /**
+     * This method inspects the paragraph style runs in the selection
+     * range (or the typing style at the insertion point) and returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li>null, if two or more style runs have different values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be <tt>defaultStyle</tt>.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @param defaultValue the implicit value of <tt>key</tt> in
+     *     style runs where <tt>key</tt> is not defined
+     */
+    public Object getParagraphStyleOverSelection(Object key) {
+
+        TextRange selRange;
+        if (fSelection != null) {
+            selRange = fSelection.getSelectionRange();
+        }
+        else {
+            selRange = new TextRange(0, 0);
+        }
+
+        if (selRange.start == selRange.limit) {
+            AttributeMap pStyle = fText.paragraphStyleAt(selRange.start);
+            Object value = pStyle.get(key);
+            return value==null? getDefaultValues().get(key) : value;
+        }
+        else {
+            int paragraphStart = selRange.start;
+            Object defaultValue = getDefaultValues().get(key);
+            Object initialValue = fText.paragraphStyleAt(paragraphStart).get(key);
+            if (initialValue == null) {
+                initialValue = defaultValue;
+            }
+
+            for (paragraphStart = fText.paragraphLimit(paragraphStart);
+                 paragraphStart < selRange.limit;
+                 paragraphStart = fText.paragraphLimit(paragraphStart)) {
+
+                Object nextValue = fText.paragraphStyleAt(paragraphStart).get(key);
+                if (nextValue == null) {
+                    nextValue = defaultValue;
+                }
+
+                if (!objectsAreEqual(initialValue, nextValue)) {
+                    return MTextPanel.MULTIPLE_VALUES;
+                }
+            }
+
+            return initialValue;
+        }
+    }
+
+    /**
+     * Remove the selected text from the document and place it
+     * on the clipboard.  This method has no effect if the text
+     * is not editable, or if no text is selected.
+     */
+    public void cut() {
+        fTextComponent.textControlEventOccurred(Behavior.CUT, null);
+    }
+
+    /**
+     * Place the selected text on the clipboard.  This method has
+     * no effect if no text is selected.
+     */
+    public void copy() {
+        fTextComponent.textControlEventOccurred(Behavior.COPY, null);
+    }
+
+    /**
+     * Replace the currently selected text with the text on the clipboard.
+     * This method has no effect if the text is not editable, or if no
+     * text is on the clipboard.
+     */
+    public void paste() {
+        fTextComponent.textControlEventOccurred(Behavior.PASTE, null);
+    }
+
+    /**
+     * Remove selected text from the document, without altering the clipboard.
+     * This method has no effect if the
+     * text is not editable.
+     */
+    public void clear() {
+        fTextComponent.textControlEventOccurred(Behavior.CLEAR, null);
+    }
+
+    /**
+     * Undo the most recent text change.  This method has no effect if
+     * there is no change to undo.
+     */
+    public void undo() {
+        fTextComponent.textControlEventOccurred(Behavior.UNDO, null);
+    }
+
+    /**
+     * Redo the most recent text change.  This method has no effect if
+     * there is no change to redo.
+     */
+    public void redo() {
+        fTextComponent.textControlEventOccurred(Behavior.REDO, null);
+    }
+
+    /**
+     * Return the number of commands the command log can hold.
+     * @return the number of commands the command log can hold
+     */
+    public int getCommandLogSize() {
+
+        if (fEditBehavior != null) {
+            return fEditBehavior.getCommandLogSize();
+        }
+        else {
+            return 0;
+        }
+    }
+
+    /**
+     * Set the number of commands the command log can hold.  All
+     * redoable commands are removed when this method is called.
+     * @param size the number of commands kept in the command log
+     */
+    public void setCommandLogSize(int size) {
+        fTextComponent.textControlEventOccurred(Behavior.SET_COMMAND_LOG_SIZE,
+                                                new Integer(size));
+    }
+
+    /**
+     * Remove all commands from the command log.
+     */
+    public void clearCommandLog() {
+        fTextComponent.textControlEventOccurred(Behavior.CLEAR_COMMAND_LOG, null);
+    }
+
+    /**
+     * Modify the character styles on the selected characters.  If no characters
+     * are selected, modify the typing style.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyCharacterStyleOnSelection(StyleModifier modifier) {
+        fTextComponent.textControlEventOccurred(Behavior.CHARACTER_STYLE_MOD, modifier);
+    }
+
+    /**
+     * Modify the paragraph styles in paragraphs containing selected characters, or
+     * the paragraph containing the insertion point.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyParagraphStyleOnSelection(StyleModifier modifier) {
+        fTextComponent.textControlEventOccurred(Behavior.PARAGRAPH_STYLE_MOD, modifier);
+    }
+
+    /**
+     * Return the KeyRemap used to process key events.
+     * @return the key remap used to process key events
+     * @see #setKeyRemap
+     */
+    public KeyRemap getKeyRemap() {
+
+        return fRemap;
+    }
+
+    /**
+     * Use the given KeyRemap to map key events to characters.
+     * Only key
+     * events are affected by the remap;  other text entering the
+     * control (via the clipboard, for example) is not affected
+     * by the KeyRemap.
+     * <p>
+     * Do not pass <tt>null</tt> to this method to leave key
+     * events unmapped.  Instead, use <tt>KeyRemap.getIdentityRemap()</tt>
+     * @param remap the KeyRemap to use for mapping key events to characters
+     * @exception java.lang.NullPointerException if parameter is null
+     * @see KeyRemap
+     */
+    public void setKeyRemap(KeyRemap remap) {
+
+        if (remap == null) {
+            throw new NullPointerException("remap can't be null");
+        }
+
+        fRemap = remap;
+        if (fEditBehavior != null) {
+            fEditBehavior.setKeyRemap(remap);
+        }
+
+        fBroadcaster.textStateChanged(TextPanelEvent.KEYREMAP_CHANGED);
+    }
+
+    /**
+     * Return the modification flag of the current text change.
+     * @see #setModified
+     */
+    public boolean isModified() {
+
+        if (fEditBehavior != null) {
+            return fEditBehavior.isModified();
+        }
+        else {
+            return fModified;
+        }
+    }
+
+    /**
+     * Set the modification flag of the current text change.
+     */
+    public void setModified(boolean modified) {
+
+        boolean handled = fTextComponent.textControlEventOccurred(
+                                    Behavior.SET_MODIFIED,
+                                    modified? Boolean.TRUE : Boolean.FALSE);
+        if (!handled) {
+            fModified = modified;
+        }
+    }
+
+    /**
+     * This method is for perf-testing only!
+     */
+    void handleKeyEvent(java.awt.event.KeyEvent keyEvent) {
+    
+        Component host = fTextComponent.getHost();
+        if (host != null) {
+            host.dispatchEvent(keyEvent);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/ArabicTransliteration.java b/src/com/ibm/richtext/textpanel/ArabicTransliteration.java
new file mode 100755
index 0000000..3e2831b
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/ArabicTransliteration.java
@@ -0,0 +1,180 @@
+/*
+ * @(#)$RCSfile: ArabicTransliteration.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+ *
+ * (C) Copyright IBM Corp. 1998, All Rights Reserved
+ */
+
+package com.ibm.richtext.textpanel;
+
+/*
+For any incoming character C
+if you can map C using the following FakeArabicTable, return
+FakeArabicTable(C)
+else if C is from A through Z, return FakeArabicTable(lowercase(C))
+else just return C
+
+
+FakeArabicTable is defined by the following mapping
+
+0   0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+1   0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+2   0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+3   0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+4   0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+5   0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+6   0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+7   0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+8   0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+9   0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+
+%   066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+.   066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+,   060C;ARABIC COMMA;Po;0;R;;;;;N;;;;;
+-   0640;ARABIC TATWEEL;Lm;0;R;;;;;N;;;;;
+'   0652;ARABIC SUKUN;Mn;34;R;;;;;N;;;;;
+"   0651;ARABIC SHADDA;Mn;33;R;;;;;N;ARABIC SHADDAH;;;;
+;   061B;ARABIC SEMICOLON;Po;0;R;;;;;N;;;;;
+?   061F;ARABIC QUESTION MARK;Po;0;R;;;;;N;;;;;
+
+a   0627;ARABIC LETTER ALEF;Lo;0;R;;;;;N;;;;;
+A   0639;ARABIC LETTER AIN;Lo;0;R;;;;;N;;;;;
+b   0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+c   0635;ARABIC LETTER SAD;Lo;0;R;;;;;N;;;;;
+d   062F;ARABIC LETTER DAL;Lo;0;R;;;;;N;;;;;
+D   0630;ARABIC LETTER THAL;Lo;0;R;;;;;N;;;;;
+E   064B;ARABIC FATHATAN;Mn;27;R;;;;;N;;;;;
+e   064E;ARABIC FATHA;Mn;30;R;;;;;N;ARABIC FATHAH;;;;
+f   0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+g   063A;ARABIC LETTER GHAIN;Lo;0;R;;;;;N;;;;;
+h   062D;ARABIC LETTER HAH;Lo;0;R;;;;;N;ARABIC LETTER HAA;;;;
+H   0647;ARABIC LETTER HEH;Lo;0;R;;;;;N;ARABIC LETTER HA;;;;
+I   064D;ARABIC KASRATAN;Mn;29;R;;;;;N;;;;;
+i   0650;ARABIC KASRA;Mn;32;R;;;;;N;ARABIC KASRAH;;;;
+j   062C;ARABIC LETTER JEEM;Lo;0;R;;;;;N;;;;;
+K   062E;ARABIC LETTER KHAH;Lo;0;R;;;;;N;ARABIC LETTER KHAA;;;;
+k   0643;ARABIC LETTER KAF;Lo;0;R;;;;;N;ARABIC LETTER CAF;;;;
+l   0644;ARABIC LETTER LAM;Lo;0;R;;;;;N;;;;;
+m   0645;ARABIC LETTER MEEM;Lo;0;R;;;;;N;;;;;
+n   0646;ARABIC LETTER NOON;Lo;0;R;;;;;N;;;;;
+o   064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;
+p   0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+q   0642;ARABIC LETTER QAF;Lo;0;R;;;;;N;;;;;
+r   0631;ARABIC LETTER REH;Lo;0;R;;;;;N;ARABIC LETTER RA;;;;
+s   0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+S   0634;ARABIC LETTER SHEEN;Lo;0;R;;;;;N;;;;;
+t   062A;ARABIC LETTER TEH;Lo;0;R;;;;;N;ARABIC LETTER TAA;;;;
+T   062B;ARABIC LETTER THEH;Lo;0;R;;;;;N;ARABIC LETTER THAA;;;;
+U   064C;ARABIC DAMMATAN;Mn;28;R;;;;;N;;;;;
+u   064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;
+v   0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+w   0648;ARABIC LETTER WAW;Lo;0;R;;;;;N;;;;;
+x   0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+y   064A;ARABIC LETTER YEH;Lo;0;R;;;;;N;ARABIC LETTER YA;;;;
+z   0632;ARABIC LETTER ZAIN;Lo;0;R;;;;;N;;;;;
+Z   0638;ARABIC LETTER ZAH;Lo;0;R;;;;;N;ARABIC LETTER DHAH;;;;
+
+*/
+
+/**
+ * This class implements KeyRemap to produce transliterated Arabic
+ * characters from Latin-1 characters.
+ */
+
+final class ArabicTransliteration extends KeyRemap {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public char remap(char c) {
+
+        switch (c) {
+            case '0': return '\u0660'; // ARABIC-INDIC DIGIT ZERO
+            case '1': return '\u0661'; // ARABIC-INDIC DIGIT ONE
+            case '2': return '\u0662'; // ARABIC-INDIC DIGIT TWO
+            case '3': return '\u0663'; // ARABIC-INDIC DIGIT THREE
+            case '4': return '\u0664'; // ARABIC-INDIC DIGIT FOUR
+            case '5': return '\u0665'; // ARABIC-INDIC DIGIT FIVE
+            case '6': return '\u0666'; // ARABIC-INDIC DIGIT SIX
+            case '7': return '\u0667'; // ARABIC-INDIC DIGIT SEVEN
+            case '8': return '\u0668'; // ARABIC-INDIC DIGIT EIGHT
+            case '9': return '\u0669'; // ARABIC-INDIC DIGIT NINE
+
+            case '%': return '\u066A'; // ARABIC PERCENT SIGN
+            // the Traditional Arabic font does not contain this character
+            // case '.': return '\u066B'; // ARABIC DECIMAL SEPARATOR
+            case ',': return '\u060C'; // ARABIC COMMA
+            case '-': return '\u0640'; // ARABIC TATWEEL
+            case '\'': return '\u0652'; // ARABIC SUKUN
+            case '"': return '\u0651'; // ARABIC SHADDA
+            case ';': return '\u061B'; // ARABIC SEMICOLON
+            case '?': return '\u061F'; // ARABIC QUESTION MARK
+
+            case 'a': return '\u0627'; // ARABIC LETTER ALEF
+            case 'A': return '\u0639'; // ARABIC LETTER AIN
+            case 'b': return '\u0628'; // ARABIC LETTER BEH
+            case 'B': return '\u0628'; // ARABIC LETTER BEH
+            case 'c': return '\u0635'; // ARABIC LETTER SAD
+            case 'C': return '\u0635'; // ARABIC LETTER SAD
+            case 'd': return '\u062F'; // ARABIC LETTER DAL
+            case 'D': return '\u0630'; // ARABIC LETTER THAL
+            case 'e': return '\u064E'; // ARABIC FATHA
+            case 'E': return '\u064B'; // ARABIC FATHATAN
+            case 'f': return '\u0641'; // ARABIC LETTER FEH
+            case 'F': return '\u0641'; // ARABIC LETTER FEH
+            case 'g': return '\u063A'; // ARABIC LETTER GHAIN
+            case 'G': return '\u063A'; // ARABIC LETTER GHAIN
+            case 'h': return '\u062D'; // ARABIC LETTER HAH
+            case 'H': return '\u0647'; // ARABIC LETTER HEH
+            case 'i': return '\u0650'; // ARABIC KASRA
+            case 'I': return '\u064D'; // ARABIC KASRATAN
+            case 'j': return '\u062C'; // ARABIC LETTER JEEM
+            case 'J': return '\u062C'; // ARABIC LETTER JEEM
+            case 'k': return '\u0643'; // ARABIC LETTER KAF
+            case 'K': return '\u062E'; // ARABIC LETTER KHAH
+            case 'l': return '\u0644'; // ARABIC LETTER LAM
+            case 'L': return '\u0644'; // ARABIC LETTER LAM
+            case 'm': return '\u0645'; // ARABIC LETTER MEEM
+            case 'M': return '\u0645'; // ARABIC LETTER MEEM
+            case 'n': return '\u0646'; // ARABIC LETTER NOON
+            case 'N': return '\u0646'; // ARABIC LETTER NOON
+            case 'o': return '\u064F'; // ARABIC DAMMA
+            case 'O': return '\u064F'; // ARABIC DAMMA
+            case 'p': return '\u0628'; // ARABIC LETTER BEH
+            case 'P': return '\u0628'; // ARABIC LETTER BEH
+            case 'q': return '\u0642'; // ARABIC LETTER QAF
+            case 'Q': return '\u0642'; // ARABIC LETTER QAF
+            case 'r': return '\u0631'; // ARABIC LETTER REH
+            case 'R': return '\u0631'; // ARABIC LETTER REH
+            case 's': return '\u0633'; // ARABIC LETTER SEEN
+            case 'S': return '\u0634'; // ARABIC LETTER SHEEN
+            case 't': return '\u062A'; // ARABIC LETTER TEH
+            case 'T': return '\u062B'; // ARABIC LETTER THEH
+            case 'U': return '\u064C'; // ARABIC DAMMATAN
+            case 'u': return '\u064F'; // ARABIC DAMMA
+            case 'v': return '\u0641'; // ARABIC LETTER FEH
+            case 'V': return '\u0641'; // ARABIC LETTER FEH
+            case 'w': return '\u0648'; // ARABIC LETTER WAW
+            case 'W': return '\u0648'; // ARABIC LETTER WAW
+            case 'x': return '\u0633'; // ARABIC LETTER SEEN
+            case 'X': return '\u0633'; // ARABIC LETTER SEEN
+            case 'y': return '\u064A'; // ARABIC LETTER YEH
+            case 'Y': return '\u064A'; // ARABIC LETTER YEH
+            case 'z': return '\u0632'; // ARABIC LETTER ZAIN
+            case 'Z': return '\u0638'; // ARABIC LETTER ZAH
+        }
+
+        return c;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/Behavior.java b/src/com/ibm/richtext/textpanel/Behavior.java
new file mode 100755
index 0000000..23c78d4
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/Behavior.java
@@ -0,0 +1,203 @@
+/*
+ * @(#)$RCSfile: Behavior.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Graphics;
+import java.awt.Rectangle;
+
+import java.awt.event.FocusEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+
+/** A class that handles events for a BehaviorOwner.
+* A behavior enacpsulates some piece of the event-handling logic for a component.
+* This allows the client to separate event-handling logic out into separate classes
+* according to function, or to dynamically change the way a component handles
+* events without adding a lot of special-case code to the panel itself.
+* Behaviors are stored in a linked list, and all behaviors get a crack at an event before
+* the owner gets a crack at them (right now, we rely on objects that implement
+* BehaviorOwner to support these semantics).
+* Behavior provides all the same event-handling functions that Component provides, and
+* they all have exactly the same syntax and semantics. */
+abstract class Behavior {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private Behavior fNextBehavior = null;
+    private BehaviorOwner fOwner = null;
+
+    static class EventType {
+
+        EventType() {
+        }
+    }
+
+    // events - should these be in TextPanel (or elsewhere)?
+
+    // This event's WHAT parameter is a TextRange instance
+    static final EventType SELECT = new EventType();
+
+    // No WHAT param for these:
+    static final EventType CUT = new EventType();
+    static final EventType COPY = new EventType();
+    static final EventType PASTE = new EventType();
+    static final EventType CLEAR = new EventType();
+    static final EventType UNDO = new EventType();
+    static final EventType REDO = new EventType();
+    static final EventType CLEAR_COMMAND_LOG = new EventType();
+
+    // WHAT param is a StyleModifier
+    static final EventType CHARACTER_STYLE_MOD = new EventType();
+    static final EventType PARAGRAPH_STYLE_MOD = new EventType();
+
+    // With this event, values of the WHAT parameter are
+    // either Boolean.TRUE or Boolean.FALSE
+    static final EventType SET_MODIFIED = new EventType();
+
+    // WHAT param is a TextReplacement
+    static final EventType REPLACE = new EventType();
+
+    // WHAT param is an Integer
+    static final EventType SET_COMMAND_LOG_SIZE = new EventType();
+
+    public Behavior() {
+    }
+
+    public void addToOwner(BehaviorOwner owner) {
+        removeFromOwner();
+        fOwner = owner;
+        setNextBehavior(owner.getBehavior());
+        owner.setBehavior(this);
+    }
+
+    public boolean focusGained(FocusEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.focusGained(e);
+        else
+            return false;
+    }
+
+    public boolean focusLost(FocusEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.focusLost(e);
+        else
+            return false;
+    }
+
+    public boolean keyPressed(KeyEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.keyPressed(e);
+        else
+            return false;
+    }
+
+    public boolean keyTyped(KeyEvent e) {
+
+        if (fNextBehavior != null) {
+            return fNextBehavior.keyTyped(e);
+        }
+        else {
+            return false;
+        }
+    }
+
+    public boolean keyReleased(KeyEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.keyReleased(e);
+        else
+            return false;
+    }
+
+    public boolean mouseDragged(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mouseDragged(e);
+        else
+            return false;
+    }
+
+    public boolean mouseEntered(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mouseEntered(e);
+        else
+            return false;
+    }
+
+    public boolean mouseExited(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mouseExited(e);
+        else
+            return false;
+    }
+
+    public boolean mouseMoved(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mouseMoved(e);
+        else
+            return false;
+    }
+
+    public boolean mousePressed(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mousePressed(e);
+        else
+            return false;
+    }
+
+    public boolean mouseReleased(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mouseReleased(e);
+        else
+            return false;
+    }
+
+    public final Behavior nextBehavior() {
+        return fNextBehavior;
+    }
+
+    public boolean paint(Graphics g, Rectangle drawRect) {
+        if (fNextBehavior != null)
+            return fNextBehavior.paint(g, drawRect);
+        else
+            return false;
+    }
+
+    public void removeFromOwner() {
+        if (fOwner != null) {
+            if (fOwner.getBehavior() == this)
+                fOwner.setBehavior(nextBehavior());
+            else {
+                Behavior    current = fOwner.getBehavior();
+
+                while (current != null && current.nextBehavior() != this)
+                    current = current.nextBehavior();
+                if (current != null)
+                    current.setNextBehavior(nextBehavior());
+            }
+            setNextBehavior(null);
+            fOwner = null;
+        }
+    }
+
+    public final void setNextBehavior(Behavior next) {
+        fNextBehavior = next;
+    }
+
+    public boolean textControlEventOccurred(EventType event, Object data) {
+        if (fNextBehavior != null)
+            return fNextBehavior.textControlEventOccurred(event, data);
+        else
+            return false;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/BehaviorOwner.java b/src/com/ibm/richtext/textpanel/BehaviorOwner.java
new file mode 100755
index 0000000..41665a0
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/BehaviorOwner.java
@@ -0,0 +1,22 @@
+/*
+ * @(#)$RCSfile: BehaviorOwner.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+interface BehaviorOwner {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public Behavior getBehavior();
+    public void setBehavior(Behavior b);
+}
diff --git a/src/com/ibm/richtext/textpanel/Command.java b/src/com/ibm/richtext/textpanel/Command.java
new file mode 100755
index 0000000..6f76bfc
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/Command.java
@@ -0,0 +1,55 @@
+/*
+ * @(#)$RCSfile: Command.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+abstract class Command {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private Command fPreviousCommand = null;
+
+    // fModified is used to keep a textModified flag for
+    // clients
+    private boolean fModified;
+
+    public Command() {
+        fModified = true;
+    }
+
+    public Command previousCommand() {
+        return fPreviousCommand;
+    }
+
+    public void setPreviousCommand(Command  previousCommand) {
+        fPreviousCommand = previousCommand;
+    }
+
+    public abstract void execute();
+    public abstract void undo();
+
+    public void redo() {
+        execute();
+    }
+
+    public final boolean isModified() {
+
+        return fModified;
+    }
+
+    public final void setModified(boolean modified) {
+
+        fModified = modified;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/FakeComponent.java b/src/com/ibm/richtext/textpanel/FakeComponent.java
new file mode 100755
index 0000000..dad575d
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/FakeComponent.java
@@ -0,0 +1,32 @@
+/*
+ * @(#)$RCSfile: FakeComponent.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Component;
+import java.awt.Graphics;
+
+abstract class FakeComponent {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    protected Component fHost;
+    
+    abstract void addNotify();
+    abstract void paint(Graphics g);
+    void setHost(Component host) {   
+        fHost = host;
+    }
+    abstract void requestFocus();
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textpanel/HackArabicTransliteration.java b/src/com/ibm/richtext/textpanel/HackArabicTransliteration.java
new file mode 100755
index 0000000..cc031e4
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/HackArabicTransliteration.java
@@ -0,0 +1,183 @@
+/*
+ * @(#)$RCSfile: HackArabicTransliteration.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+ *
+ * (C) Copyright IBM Corp. 1998, All Rights Reserved
+ */
+
+package com.ibm.richtext.textpanel;
+
+/*
+For any incoming character C
+if you can map C using the following FakeArabicTable, return
+FakeArabicTable(C)
+else if C is from A through Z, return FakeArabicTable(lowercase(C))
+else just return C
+
+
+FakeArabicTable is defined by the following mapping
+
+0   0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+1   0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+2   0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+3   0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+4   0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+5   0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+6   0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+7   0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+8   0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+9   0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+
+%   066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+.   066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+,   060C;ARABIC COMMA;Po;0;R;;;;;N;;;;;
+-   0640;ARABIC TATWEEL;Lm;0;R;;;;;N;;;;;
+'   0652;ARABIC SUKUN;Mn;34;R;;;;;N;;;;;
+"   0651;ARABIC SHADDA;Mn;33;R;;;;;N;ARABIC SHADDAH;;;;
+;   061B;ARABIC SEMICOLON;Po;0;R;;;;;N;;;;;
+?   061F;ARABIC QUESTION MARK;Po;0;R;;;;;N;;;;;
+
+a   0627;ARABIC LETTER ALEF;Lo;0;R;;;;;N;;;;;
+A   0639;ARABIC LETTER AIN;Lo;0;R;;;;;N;;;;;
+b   0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+c   0635;ARABIC LETTER SAD;Lo;0;R;;;;;N;;;;;
+d   062F;ARABIC LETTER DAL;Lo;0;R;;;;;N;;;;;
+D   0630;ARABIC LETTER THAL;Lo;0;R;;;;;N;;;;;
+E   064B;ARABIC FATHATAN;Mn;27;R;;;;;N;;;;;
+e   064E;ARABIC FATHA;Mn;30;R;;;;;N;ARABIC FATHAH;;;;
+f   0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+g   063A;ARABIC LETTER GHAIN;Lo;0;R;;;;;N;;;;;
+h   062D;ARABIC LETTER HAH;Lo;0;R;;;;;N;ARABIC LETTER HAA;;;;
+H   0647;ARABIC LETTER HEH;Lo;0;R;;;;;N;ARABIC LETTER HA;;;;
+I   064D;ARABIC KASRATAN;Mn;29;R;;;;;N;;;;;
+i   0650;ARABIC KASRA;Mn;32;R;;;;;N;ARABIC KASRAH;;;;
+j   062C;ARABIC LETTER JEEM;Lo;0;R;;;;;N;;;;;
+K   062E;ARABIC LETTER KHAH;Lo;0;R;;;;;N;ARABIC LETTER KHAA;;;;
+k   0643;ARABIC LETTER KAF;Lo;0;R;;;;;N;ARABIC LETTER CAF;;;;
+l   0644;ARABIC LETTER LAM;Lo;0;R;;;;;N;;;;;
+m   0645;ARABIC LETTER MEEM;Lo;0;R;;;;;N;;;;;
+n   0646;ARABIC LETTER NOON;Lo;0;R;;;;;N;;;;;
+o   064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;
+p   0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+q   0642;ARABIC LETTER QAF;Lo;0;R;;;;;N;;;;;
+r   0631;ARABIC LETTER REH;Lo;0;R;;;;;N;ARABIC LETTER RA;;;;
+s   0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+S   0634;ARABIC LETTER SHEEN;Lo;0;R;;;;;N;;;;;
+t   062A;ARABIC LETTER TEH;Lo;0;R;;;;;N;ARABIC LETTER TAA;;;;
+T   062B;ARABIC LETTER THEH;Lo;0;R;;;;;N;ARABIC LETTER THAA;;;;
+U   064C;ARABIC DAMMATAN;Mn;28;R;;;;;N;;;;;
+u   064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;
+v   0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+w   0648;ARABIC LETTER WAW;Lo;0;R;;;;;N;;;;;
+x   0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+y   064A;ARABIC LETTER YEH;Lo;0;R;;;;;N;ARABIC LETTER YA;;;;
+z   0632;ARABIC LETTER ZAIN;Lo;0;R;;;;;N;;;;;
+Z   0638;ARABIC LETTER ZAH;Lo;0;R;;;;;N;ARABIC LETTER DHAH;;;;
+
+*/
+
+/**
+ * This class implements KeyRemap to produce transliterated Arabic
+ * characters from Latin-1 characters.
+ */
+
+// NOTE: this class eliminates Arabic vowels which look ugly
+// in the font in which we happen to be demo'ing.  It's totally
+// bogus otherwise.
+final class HackArabicTransliteration extends KeyRemap {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public char remap(char c) {
+
+        switch (c) {
+            case '0': return '\u0660'; // ARABIC-INDIC DIGIT ZERO
+            case '1': return '\u0661'; // ARABIC-INDIC DIGIT ONE
+            case '2': return '\u0662'; // ARABIC-INDIC DIGIT TWO
+            case '3': return '\u0663'; // ARABIC-INDIC DIGIT THREE
+            case '4': return '\u0664'; // ARABIC-INDIC DIGIT FOUR
+            case '5': return '\u0665'; // ARABIC-INDIC DIGIT FIVE
+            case '6': return '\u0666'; // ARABIC-INDIC DIGIT SIX
+            case '7': return '\u0667'; // ARABIC-INDIC DIGIT SEVEN
+            case '8': return '\u0668'; // ARABIC-INDIC DIGIT EIGHT
+            case '9': return '\u0669'; // ARABIC-INDIC DIGIT NINE
+
+            case '%': return '\u066A'; // ARABIC PERCENT SIGN
+            // the Traditional Arabic font does not contain this character
+            // case '.': return '\u066B'; // ARABIC DECIMAL SEPARATOR
+            case ',': return '\u060C'; // ARABIC COMMA
+            case '-': return '\u0640'; // ARABIC TATWEEL
+            case '\'': return '\u0652'; // ARABIC SUKUN
+            case '"': return '\u0651'; // ARABIC SHADDA
+            case ';': return '\u061B'; // ARABIC SEMICOLON
+            case '?': return '\u061F'; // ARABIC QUESTION MARK
+
+            case 'a': return '\u0627'; // ARABIC LETTER ALEF
+            case 'A': return '\u0639'; // ARABIC LETTER AIN
+            case 'b': return '\u0628'; // ARABIC LETTER BEH
+            case 'B': return '\u0628'; // ARABIC LETTER BEH
+            case 'c': return '\u0635'; // ARABIC LETTER SAD
+            case 'C': return '\u0635'; // ARABIC LETTER SAD
+            case 'd': return '\u062F'; // ARABIC LETTER DAL
+            case 'D': return '\u0630'; // ARABIC LETTER THAL
+            case 'e': //return '\u064E'; // ARABIC FATHA
+            case 'E': //return '\u064B'; // ARABIC FATHATAN
+            case 'f': return '\u0641'; // ARABIC LETTER FEH
+            case 'F': return '\u0641'; // ARABIC LETTER FEH
+            case 'g': return '\u063A'; // ARABIC LETTER GHAIN
+            case 'G': return '\u063A'; // ARABIC LETTER GHAIN
+            case 'h': return '\u062D'; // ARABIC LETTER HAH
+            case 'H': return '\u0647'; // ARABIC LETTER HEH
+            case 'i': //return '\u0650'; // ARABIC KASRA
+            case 'I': //return '\u064D'; // ARABIC KASRATAN
+            case 'j': return '\u062C'; // ARABIC LETTER JEEM
+            case 'J': return '\u062C'; // ARABIC LETTER JEEM
+            case 'k': return '\u0643'; // ARABIC LETTER KAF
+            case 'K': return '\u062E'; // ARABIC LETTER KHAH
+            case 'l': return '\u0644'; // ARABIC LETTER LAM
+            case 'L': return '\u0644'; // ARABIC LETTER LAM
+            case 'm': return '\u0645'; // ARABIC LETTER MEEM
+            case 'M': return '\u0645'; // ARABIC LETTER MEEM
+            case 'n': return '\u0646'; // ARABIC LETTER NOON
+            case 'N': return '\u0646'; // ARABIC LETTER NOON
+            case 'o': //return '\u064F'; // ARABIC DAMMA
+            case 'O': //return '\u064F'; // ARABIC DAMMA
+            case 'p': return '\u0628'; // ARABIC LETTER BEH
+            case 'P': return '\u0628'; // ARABIC LETTER BEH
+            case 'q': return '\u0642'; // ARABIC LETTER QAF
+            case 'Q': return '\u0642'; // ARABIC LETTER QAF
+            case 'r': return '\u0631'; // ARABIC LETTER REH
+            case 'R': return '\u0631'; // ARABIC LETTER REH
+            case 's': return '\u0633'; // ARABIC LETTER SEEN
+            case 'S': return '\u0634'; // ARABIC LETTER SHEEN
+            case 't': return '\u062A'; // ARABIC LETTER TEH
+            case 'T': return '\u062B'; // ARABIC LETTER THEH
+            case 'U': //return '\u064C'; // ARABIC DAMMATAN
+            case 'u': //return '\u064F'; // ARABIC DAMMA
+            case 'v': return '\u0641'; // ARABIC LETTER FEH
+            case 'V': return '\u0641'; // ARABIC LETTER FEH
+            case 'w': return '\u0648'; // ARABIC LETTER WAW
+            case 'W': return '\u0648'; // ARABIC LETTER WAW
+            case 'x': return '\u0633'; // ARABIC LETTER SEEN
+            case 'X': return '\u0633'; // ARABIC LETTER SEEN
+            case 'y': return '\u064A'; // ARABIC LETTER YEH
+            case 'Y': return '\u064A'; // ARABIC LETTER YEH
+            case 'z': return '\u0632'; // ARABIC LETTER ZAIN
+            case 'Z': return '\u0638'; // ARABIC LETTER ZAH
+        }
+
+        return c;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/HebrewTransliteration.java b/src/com/ibm/richtext/textpanel/HebrewTransliteration.java
new file mode 100755
index 0000000..ca67bea
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/HebrewTransliteration.java
@@ -0,0 +1,90 @@
+/*
+ * @(#)$RCSfile: HebrewTransliteration.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+ *
+ * (C) Copyright IBM Corp. 1998, All Rights Reserved
+ */
+
+package com.ibm.richtext.textpanel;
+
+/**
+ * This class implements KeyRemap to produce transliterated Hebrew
+ * characters from Latin-1 characters.
+ */
+
+final class HebrewTransliteration extends KeyRemap {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public char remap(char c) {
+
+        switch (c) {
+            case 'a': return '\u05D0'; // HEBREW LETTER ALEF
+            case 'A': return '\u05E2'; // HEBREW LETTER AYIN
+            case 'b': return '\u05D1'; // HEBREW LETTER BET
+            case 'B': return '\u05D1'; // HEBREW LETTER BET
+            case 'c': return '\u05E6'; // HEBREW LETTER TSADI
+            case 'C': return '\u05E5'; // HEBREW LETTER FINAL TSADI
+            case 'd': return '\u05D3'; // HEBREW LETTER DALET
+            case 'D': return '\u05BC'; // HEBREW POINT DAGESH
+            case 'e': return '\u05B5'; // HEBREW POINT TSERE
+            case 'E': return '\u05B6'; // HEBREW POINT SEGOL
+            case 'f': return '\u05E4'; // HEBREW LETTER PE
+            case 'F': return '\u05E4'; // HEBREW LETTER PE
+            case 'g': return '\u05D2'; // HEBREW LETTER GIMEL
+            case 'G': return '\u05D2'; // HEBREW LETTER GIMEL
+            case 'h': return '\u05D4'; // HEBREW LETTER HE
+            case 'H': return '\u05D7'; // HEBREW LETTER HET
+            case 'i': return '\u05D9'; // HEBREW LETTER YOD
+            case 'I': return '\u05B4'; // HEBREW POINT HIRIQ
+            case 'j': return '\u05D9'; // HEBREW LETTER YOD
+            case 'J': return '\u05C1'; // HEBREW POINT SHIN DOT
+            case 'k': return '\u05DB'; // HEBREW LETTER KAF
+            case 'K': return '\u05DA'; // HEBREW LETTER FINAL KAF
+            case 'l': return '\u05DC'; // HEBREW LETTER LAMED
+            case 'L': return '\u05DC'; // HEBREW LETTER LAMED
+            case 'm': return '\u05DE'; // HEBREW LETTER MEM
+            case 'M': return '\u05DD'; // HEBREW LETTER FINAL MEM
+            case 'n': return '\u05E0'; // HEBREW LETTER NUN
+            case 'N': return '\u05DF'; // HEBREW LETTER FINAL NUN
+            case 'o': return '\u05D5'; // HEBREW LETTER VAV
+            case 'O': return '\u05B9'; // HEBREW POINT HOLAM
+            case 'p': return '\u05E4'; // HEBREW LETTER PE
+            case 'P': return '\u05E3'; // HEBREW LETTER FINAL PE
+            case 'q': return '\u05E7'; // HEBREW LETTER QOF
+            case 'Q': return '\u05E7'; // HEBREW LETTER QOF
+            case 'r': return '\u05E8'; // HEBREW LETTER RESH
+            case 'R': return '\u05BF'; // HEBREW POINT RAFE
+            case 's': return '\u05E9'; // HEBREW LETTER SHIN
+            case 'S': return '\u05E1'; // HEBREW LETTER SAMEKH
+            case 't': return '\u05EA'; // HEBREW LETTER TAV
+            case 'T': return '\u05D8'; // HEBREW LETTER TET
+            case 'u': return '\u05D5'; // HEBREW LETTER VAV
+            case 'U': return '\u05BB'; // HEBREW POINT QUBUTS
+            case 'v': return '\u05D5'; // HEBREW LETTER VAV
+            case 'V': return '\u05B7'; // HEBREW POINT PATAH
+            case 'w': return '\u05D5'; // HEBREW LETTER VAV
+            case 'W': return '\u05B8'; // HEBREW POINT QAMATS
+            case 'x': return '\u05E6'; // HEBREW LETTER TSADI
+            case 'X': return '\u05E5'; // HEBREW LETTER FINAL TSADI
+            case 'y': return '\u05D9'; // HEBREW LETTER YOD
+            case 'Y': return '\u05D9'; // HEBREW LETTER YOD
+            case 'z': return '\u05D6'; // HEBREW LETTER ZAYIN
+            case 'Z': return '\u05C2'; // HEBREW POINT SIN DOT
+        }
+
+        return c;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/IsraelNikudKeyboard.java b/src/com/ibm/richtext/textpanel/IsraelNikudKeyboard.java
new file mode 100755
index 0000000..7e0b1a5
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/IsraelNikudKeyboard.java
@@ -0,0 +1,84 @@
+/*
+ * @(#)$RCSfile: IsraelNikudKeyboard.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+ *
+ * (C) Copyright IBM Corp. 1998, All Rights Reserved
+ */
+
+package com.ibm.richtext.textpanel;
+
+import java.awt.event.KeyEvent;
+
+/**
+ * This class simulates a Nikud keyboard on a US-English
+ * keyboard.  It is very much a work in progress.
+ */
+
+final class IsraelNikudKeyboard extends KeyRemap {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public char remap(char c) {
+
+        switch(c) {
+            case 't': return '\u05D0'; // alef
+            case 'c': return '\u05D1'; // bet
+            case 'd': return '\u05D2'; // gimel
+            case 's': return '\u05D3'; // dalet
+            case 'v': return '\u05D4'; // he
+            case 'u': return '\u05D5'; // vav
+            case 'z': return '\u05D6'; // zayin
+            case 'j': return '\u05D7'; // het
+            case 'y': return '\u05D8'; // tet
+            case 'h': return '\u05D9'; // yod
+            case 'l': return '\u05DA'; // final kaf
+            case 'f': return '\u05DB'; // kaf
+            case 'k': return '\u05DC'; // lamed
+            case 'o': return '\u05DD'; // final mem
+            case 'n': return '\u05DE'; // mem
+            case 'i': return '\u05DF'; // final nun
+            case 'b': return '\u05E0'; // nun
+            case 'x': return '\u05E1'; // samech
+            case 'g': return '\u05E2'; // ayin
+            case ';': return '\u05E3'; // final pe
+            case 'p': return '\u05E4'; // pe
+            case '.': return '\u05E5'; // final tsadi
+            case 'm': return '\u05E6'; // tsadi
+            case 'e': return '\u05E7'; // qof
+            case 'r': return '\u05E8'; // resh
+            case 'a': return '\u05E9'; // shin
+            case ',': return '\u05EA'; // tav
+            case 'w': return ',';
+            case 'q': return '/';
+            case '/': return '.';
+        }
+
+        return c;
+    }
+
+    public char remap(KeyEvent keyEvent) {
+
+        //  Note:  only one ctrl case now (ctrl-/ -> dagesh).
+        //  Better implementation will be needed for more cases.
+
+        if (keyEvent.isControlDown()) {
+            if (keyEvent.getKeyCode() == KeyEvent.VK_SLASH) {
+                return '\u05BC'; // dagesh
+            }
+        }
+
+        return remap(keyEvent.getKeyChar());
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textpanel/JTextPanel.java b/src/com/ibm/richtext/textpanel/JTextPanel.java
new file mode 100755
index 0000000..a77837f
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/JTextPanel.java
@@ -0,0 +1,582 @@
+/*
+ * @(#)$RCSfile: JTextPanel.java,v $ $Revision: 1.4 $ $Date: 2002/02/16 03:06:47 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Graphics;
+import java.lang.reflect.InvocationTargetException;
+
+import javax.swing.JPanel;
+import javax.swing.JComponent;
+import javax.swing.JScrollBar;
+import javax.swing.SwingUtilities;
+
+import java.awt.datatransfer.Clipboard;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+
+/**
+ * JTextPanel is an implementation of MTextPanel in a Swing JPanel.
+ * @see MTextPanel
+ */
+public final class JTextPanel extends JPanel implements MTextPanel {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private ATextPanelImpl fImpl;
+    
+    /**
+     * Return a TextPanelSettings instance with all settings set
+     * to the default values.  Clients can modify this object;
+     * modifications will not affect the default values.
+     * @return a TextPanelSettings instance set to default values
+     * @see TextPanelSettings
+     */
+    public static TextPanelSettings getDefaultSettings() {
+
+        return ATextPanelImpl.getDefaultSettings();
+    }
+
+    /**
+     * Create a new JTextPanel with the default settings.
+     * @param initialText the text document.  If null document text is empty.
+     * @param clipboard the clipboard to use for cut, copy, and paste
+     *  operations.  If null this panel will use a private clipboard.
+     */
+    public JTextPanel(MConstText initialText,
+                      java.awt.datatransfer.Clipboard clipboard) {
+
+        this(ATextPanelImpl.fgDefaultSettings, initialText, clipboard);
+    }
+
+    /**
+     * Create a new JTextPanel.
+     * @param settings the settings for this JTextPanel
+     * @param initialText the text document.  If null document text is empty.
+     * @param clipboard the clipboard to use for cut, copy, and paste
+     *  operations.  If null this panel will use a private clipboard.
+     * @see TextPanelSettings
+     */
+    public JTextPanel(TextPanelSettings settings,
+                      MConstText initialText,
+                      Clipboard clipboard) {
+        
+        super(false);
+        
+        JScrollBar horzSb = null;
+        JScrollBar vertSb = null;
+        
+        if (settings.getScrollable()) {
+
+            setLayout(new ScrollBarLayout());
+
+            boolean scrollBarsVisible = settings.getScrollBarsVisible();
+
+            if (scrollBarsVisible) {
+                horzSb = new JScrollBar(JScrollBar.HORIZONTAL);
+                vertSb = new JScrollBar(JScrollBar.VERTICAL);
+                add("South", horzSb);
+                add("East", vertSb);
+            }
+        }
+        else {
+            setLayout(new BorderLayout());
+        }
+        
+        RunStrategy runStrategy = new RunStrategy() {
+            void doIt(Runnable r) {
+                try {
+                    SwingUtilities.invokeAndWait(r);
+                }
+                catch(InterruptedException e) {
+                    // If operation was interrupted, then client
+                    // called wait or sleep (or something similar)
+                    // which is inappropriate for a client of this
+                    // class.  Rethrow error and let client handle it.
+                    e.printStackTrace();
+                    throw new Error("Interrupted in RunStrategy: " + e);
+                }
+                catch(InvocationTargetException e) {
+                    // Who knows how this one happens...
+                    e.printStackTrace();
+                    throw new Error("InvocationTargetException in RunStrategy: " + e);
+                }
+            }
+        };
+        
+        fImpl = new ATextPanelImpl(runStrategy,
+                                   settings,
+                                   initialText,
+                                   clipboard,
+                                   this,
+                                   horzSb,
+                                   vertSb);
+                                   
+        final FakeComponent textComponent = fImpl.getTextComponent();
+        
+        JComponent textHost = new JComponent() {
+            {
+                textComponent.setHost(this);
+            }
+            public void addNotify() {
+                super.addNotify();
+                textComponent.addNotify();
+            }
+            public void paint(Graphics g) {
+                textComponent.paint(g);
+            }
+        };
+        
+        add("Center", textHost);
+
+        textHost.requestFocus();
+    }
+
+    /**
+     * Add the given TextPanelListener to the listeners which will
+     * receive update notifications from this JTextPanel.
+     * @param listener the listener to add
+     */
+    public void addListener(TextPanelListener listener) {
+
+        fImpl.addListener(listener);
+    }
+
+    /**
+     * Remove the given TextPanelListener from the listeners which will
+     * receive update notifications from this JTextPanel.
+     * @param listener the listener to remove
+     */
+    public void removeListener(TextPanelListener listener) {
+
+        fImpl.removeListener(listener);
+    }
+
+//============
+// Text Access
+//============
+
+    /**
+     * Set the document to <tt>newText</tt>.  This operation
+     * modifies the text in the JTextPanel.  It does not modify or adopt
+     * <tt>newText</tt>.  This method sets the selection an insertion point at
+     * the end of the text.
+     * @param newText the text which will replace the current text.
+     */
+    public void setText(MConstText newText) {
+
+        fImpl.setText(newText);
+    }
+
+    /**
+     * Append the given text to the end of the document.  Equivalent to
+     * <tt>insert(newText, getTextLength())</tt>.
+     * @param newText the text to append to the document
+     */
+    public void append(MConstText newText) {
+
+        fImpl.append(newText);
+    }
+
+    /**
+     * Insert the given text into the document at the given position.
+     * Equivalent to
+     * <tt>replaceRange(newText, position, position)</tt>.
+     * @param newText the text to insert into the document.
+     * @param position the position in the document where the
+     *     text will be inserted
+     */
+    public void insert(MConstText newText, int position) {
+
+        fImpl.insert(newText, position);
+    }
+
+    /**
+     * Replace the given range with <tt>newText</tt>.  After this
+     * operation the selection range is an insertion point at the
+     * end of the new text.
+     * @param newText the text with which to replace the range
+     * @param start the beginning of the range to replace
+     * @param end the end of the range to replace
+     */
+    public void replaceRange(MConstText newText, int start, int end) {
+
+        fImpl.replaceRange(newText, start, end);
+    }
+
+    /**
+     * Return the length of the text document in the JTextPanel.
+     * @return the length of the text document in the JTextPanel
+     */
+    public int getTextLength() {
+
+        return fImpl.getTextLength();
+    }
+
+    /**
+     * Return the text document in the JTextPanel.
+     * @return the text document in the JTextPanel.
+     */
+    public MConstText getText() {
+
+        return fImpl.getText();
+    }
+
+//============
+// Selection Access
+//============
+
+    /**
+     * Return the offset of the start of the selection.
+     */
+    public int getSelectionStart() {
+
+        return fImpl.getSelectionStart();
+    }
+
+    /**
+     * Return the offset of the end of the selection.
+     */
+    public int getSelectionEnd() {
+
+        return fImpl.getSelectionEnd();
+    }
+
+    /**
+     * Set the beginning of the selection range.  This is
+     * equivalent to <tt>select(selectionStart, getSelectionEnd())</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionStart(int selectionStart) {
+
+        fImpl.setSelectionStart(selectionStart);
+    }
+
+    /**
+     * Set the end of the selection range.  This is
+     * equivalent to <tt>select(getSelectionStart(), selectionEnd)</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionEnd(int selectionEnd) {
+
+        fImpl.setSelectionEnd(selectionEnd);
+    }
+
+    /**
+     * Set the selection range to an insertion point at the given
+     * offset.  This is equivalent to
+     * <tt>select(position, position)</tt>.
+     * @param position the offset of the new insertion point
+     */
+    public void setCaretPosition(int position) {
+
+        fImpl.setCaretPosition(position);
+    }
+
+    /**
+     * Set the selection range to the given range.  The range start
+     * is pinned between 0 and the text length;  the range end is pinned
+     * between the range start and the end of the text.  These semantics
+     * are identical to those of <tt>java.awt.TextComponent</tt>.
+     * This method has no effect if the text is not selectable.
+     * @param selectionStart the beginning of the selection range
+     * @param selectionEnd the end of the selection range
+     */
+    public void select(int selectionStart, int selectionEnd) {
+
+        fImpl.select(selectionStart, selectionEnd);
+    }
+
+    /**
+     * Select all of the text in the document.  This method has no effect if
+     * the text is not selectable.
+     */
+    public void selectAll() {
+
+        fImpl.selectAll();
+    }
+
+
+//============
+// Format Width
+//============
+
+    /**
+     * Return the total format width, in pixels.  The format width is the
+     * width to which text is wrapped.
+     * @return the format width
+     */
+    public int getFormatWidth() {
+
+        return fImpl.getFormatWidth();
+    }
+
+    /**
+     * Return true if the paragraph at the given offset is left-to-right.
+     * @param offset an offset in the text
+     * @return true if the paragraph at the given offset is left-to-right
+     */
+    public boolean paragraphIsLeftToRight(int offset) {
+        
+        return fImpl.paragraphIsLeftToRight(offset);
+    }
+
+    /**
+     * Return true if there is a change which can be undone.
+     * @return true if there is a change which can be undone.
+     */
+    public boolean canUndo() {
+
+        return fImpl.canUndo();
+    }
+
+    /**
+     * Return true if there is a change which can be redone.
+     * @return true if there is a change which can be redone.
+     */
+    public boolean canRedo() {
+
+        return fImpl.canRedo();
+    }
+
+    /**
+     * Return true if the clipboard contains contents which could be
+     * transfered into the text.
+     * @return true if the clipboard has text content.
+     */
+    public boolean clipboardNotEmpty() {
+
+        return fImpl.clipboardNotEmpty();
+    }
+
+    /**
+     * Return an AttributeMap of keys with default values.  The default
+     * values are used when displaying text for values which are not
+     * specified in the text.
+     * @return an AttributeMap of default key-value pairs
+     */
+    public AttributeMap getDefaultValues() {
+
+        return fImpl.getDefaultValues();
+    }
+
+    /**
+     * This method inspects the character style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have different 
+     * values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see MTextPanel#MULTIPLE_VALUES
+     */
+    public Object getCharacterStyleOverSelection(Object key) {
+        
+        return fImpl.getCharacterStyleOverSelection(key);
+    }
+
+    /**
+     * This method inspects the paragraph style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have 
+     * different values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see MTextPanel#MULTIPLE_VALUES
+     */
+    public Object getParagraphStyleOverSelection(Object key) {
+        
+        return fImpl.getParagraphStyleOverSelection(key);
+    }
+
+    /**
+     * Remove the selected text from the document and place it
+     * on the clipboard.  This method has no effect if the text
+     * is not editable, or if no text is selected.
+     */
+    public void cut() {
+        fImpl.cut();
+    }
+
+    /**
+     * Place the selected text on the clipboard.  This method has
+     * no effect if no text is selected.
+     */
+    public void copy() {
+        fImpl.copy();
+    }
+
+    /**
+     * Replace the currently selected text with the text on the clipboard.
+     * This method has no effect if the text is not editable, or if no
+     * text is on the clipboard.
+     */
+    public void paste() {
+        fImpl.paste();
+    }
+
+    /**
+     * Remove selected text from the document, without altering the clipboard.
+     * This method has no effect if the
+     * text is not editable.
+     */
+    public void clear() {
+        fImpl.clear();
+    }
+
+    /**
+     * Undo the most recent text change.  This method has no effect if
+     * there is no change to undo.
+     */
+    public void undo() {
+        fImpl.undo();
+    }
+
+    /**
+     * Redo the most recent text change.  This method has no effect if
+     * there is no change to redo.
+     */
+    public void redo() {
+        fImpl.redo();
+    }
+
+    /**
+     * Return the number of commands the command log can hold.
+     * @return the number of commands the command log can hold
+     */
+    public int getCommandLogSize() {
+
+        return fImpl.getCommandLogSize();
+    }
+
+    /**
+     * Set the number of commands the command log can hold.  All
+     * redoable commands are removed when this method is called.
+     * @param size the number of commands kept in the command log
+     */
+    public void setCommandLogSize(int size) {
+        fImpl.setCommandLogSize(size);
+    }
+
+    /**
+     * Remove all commands from the command log.
+     */
+    public void clearCommandLog() {
+        fImpl.clearCommandLog();
+    }
+
+    /**
+     * Modify the character styles on the selected characters.  If no characters
+     * are selected, modify the typing style.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyCharacterStyleOnSelection(StyleModifier modifier) {
+        fImpl.modifyCharacterStyleOnSelection(modifier);
+    }
+
+    /**
+     * Modify the paragraph styles in paragraphs containing selected characters, or
+     * the paragraph containing the insertion point.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyParagraphStyleOnSelection(StyleModifier modifier) {
+        fImpl.modifyParagraphStyleOnSelection(modifier);
+    }
+
+    /**
+     * Return the KeyRemap used to process key events.
+     * @return the key remap used to process key events
+     * @see #setKeyRemap
+     */
+    public KeyRemap getKeyRemap() {
+
+        return fImpl.getKeyRemap();
+    }
+
+    /**
+     * Use the given KeyRemap to map key events to characters.
+     * Only key
+     * events are affected by the remap;  other text entering the
+     * control (via the clipboard, for example) is not affected
+     * by the KeyRemap.
+     * <p>
+     * Do not pass <tt>null</tt> to this method to leave key
+     * events unmapped.  Instead, use <tt>KeyRemap.getIdentityRemap()</tt>
+     * @param remap the KeyRemap to use for mapping key events to characters
+     * @exception java.lang.NullPointerException if parameter is null
+     * @see KeyRemap
+     */
+    public void setKeyRemap(KeyRemap remap) {
+
+        fImpl.setKeyRemap(remap);
+    }
+
+    /**
+     * Return the modification flag of the current text change.
+     * @see #setModified
+     */
+    public boolean isModified() {
+
+        return fImpl.isModified();
+    }
+
+    /**
+     * Set the modification flag of the current text change.
+     */
+    public void setModified(boolean modified) {
+        
+        fImpl.setModified(modified);
+    }
+
+    /**
+     * This method is for KeyEventForwarder's use only!
+     */
+    ATextPanelImpl getImpl() {
+        
+        return fImpl;
+    }
+
+    public void setBackground(Color color) {
+        super.setBackground (color);
+        java.awt.Component[] compList = getComponents();
+        for (int i = 0; i < compList.length; i++) {
+            if (!(compList[i] instanceof JScrollBar)) {
+                compList[i].setBackground (color);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/KeyEventForwarder.java b/src/com/ibm/richtext/textpanel/KeyEventForwarder.java
new file mode 100755
index 0000000..c4d1d63
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/KeyEventForwarder.java
@@ -0,0 +1,46 @@
+/*
+ * @(#)$RCSfile: KeyEventForwarder.java,v $ $Revision: 1.2 $ $Date: 2000/04/22 17:10:10 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.event.KeyEvent;
+
+/**
+ * This class forwards key events to a TextPanel component for
+ * testing purposes.
+ * Its sole reason for existence is to prevent the key-event
+ * API from being public on MTextPanel, and being mistaken for
+ * standard API.  This class is only for testing!  It may be
+ * removed from public API at any time.  Do not depend on this
+ * class.
+ */
+public final class KeyEventForwarder {
+
+    private ATextPanelImpl fPanelImpl;
+
+    public KeyEventForwarder(TextPanel textPanel) {
+
+        fPanelImpl = textPanel.getImpl();
+    }
+    
+    public KeyEventForwarder(JTextPanel textPanel) {
+    
+        fPanelImpl = textPanel.getImpl();
+    }
+
+    public void handleKeyEvent(KeyEvent keyEvent) {
+
+        fPanelImpl.handleKeyEvent(keyEvent);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textpanel/KeyRemap.java b/src/com/ibm/richtext/textpanel/KeyRemap.java
new file mode 100755
index 0000000..ab6ff8a
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/KeyRemap.java
@@ -0,0 +1,118 @@
+/*
+ * @(#)$RCSfile: KeyRemap.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+ *
+ * (C) Copyright IBM Corp. 1998, All Rights Reserved
+ */
+
+package com.ibm.richtext.textpanel;
+
+import java.awt.event.KeyEvent;
+
+/**
+ * KeyRemap maps keys on a standard US keyboard to characters
+ * in other alphabets.  Currently, mappings to Arabic, Hebrew
+ * and Thai are supported.  In the future, clients may be
+ * to define their own mappings by subclassing this class.
+ * <P>
+ * @see TextPanel#setKeyRemap
+ */
+
+public class KeyRemap {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Create a new KeyRemap.
+     */
+    protected KeyRemap() {
+    }
+
+    /**
+     * This method returns the character on the simulated keyboard
+     * which is (most likely) generated by typing the character c
+     * on the actual keyboard.  For greater accuracy, use the remap
+     * method which takes a KeyEvent, since it can take modifier
+     * keys into account.
+     * @arg c a character on the actual keyboard
+     * @return the character on the simulated keyboard which would
+     *         result from the key combination which produced the
+     *         given character on the actual keyboard
+     */
+    /*public*/ char remap(char c) {
+
+        return c;
+    }
+
+    /**
+     * Return the character on the simulated keyboard
+     * which keyEvent generates.
+     * @arg keyEvent a key event from the actual keyboard
+     * @return the character on the simulated keyboard generated by
+     *         keyEvent
+     */
+    /*public*/ char remap(KeyEvent keyEvent) {
+
+        return remap(keyEvent.getKeyChar());
+    }
+
+    private static final KeyRemap IDENTITY = new KeyRemap();
+    private static final KeyRemap ARABIC_TRANSLITERATION = new ArabicTransliteration();
+    private static final KeyRemap HEBREW_TRANSLITERATION = new HebrewTransliteration();
+    private static final KeyRemap ISRAEL_NIKUD = new IsraelNikudKeyboard();
+    private static final KeyRemap THAI = new ThaiKeyRemap();
+
+    /**
+     * Return a KeyRemap which maps every character to itself.
+     */
+    public static KeyRemap getIdentityRemap() {
+
+        return IDENTITY;
+    }
+
+    /**
+     * Return a KeyRemap which maps keys to
+     * characters in the Arabic alphabet, using a simple transliteration.
+     */
+    public static KeyRemap getArabicTransliteration() {
+
+        return ARABIC_TRANSLITERATION;
+    }
+
+    /**
+     * Return a KeyRemap which maps keys to
+     * characters in the Hebrew alphabet, using a simple transliteration.
+     */
+    public static KeyRemap getHebrewTransliteration() {
+
+        return HEBREW_TRANSLITERATION;
+    }
+
+    /**
+     * Return a KeyRemap which emulates a standard Hebrew keyboard.
+     */
+    public static KeyRemap getIsraelNikud() {
+
+        return ISRAEL_NIKUD;
+    }
+    
+    /**
+     * Return a KeyRemap which emulates a Thai Ketmanee keyboard.
+     */
+    public static KeyRemap getThaiKetmanee() {
+        
+        return THAI;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/MTextPanel.java b/src/com/ibm/richtext/textpanel/MTextPanel.java
new file mode 100755
index 0000000..6311a10
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/MTextPanel.java
@@ -0,0 +1,375 @@
+/*
+ * @(#)$RCSfile: MTextPanel.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:47 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MConstText;
+
+/**
+ * MTextPanel is implemented by Components which provide selectable
+ * editable styled text.
+ * <p>
+ * Implementations of MTextPanel provide a simple, standard user interface
+ * for text editing.  MTextPanel supplies scrollable display, typing, 
+ * arrow-key support, character selection, word-
+ * and sentence-selection (by double-clicking and triple-clicking, 
+ * respectively), text styles, clipboard operations (cut, copy and paste)
+ * and a log of changes for undo-redo.
+ * <p>
+ * MTextPanel implementations do not provide user interface elements
+ * such as an edit menu or style menu.  This support is provided in
+ * different packages, and is implemented with MTextPanel's API.
+ * MTextPanel includes methods for setting selections and styles on text,
+ * and using the clipboard and command-log functionality.
+ * MTextPanel's API for selection and text handling is similar to that
+ * of <tt>java.awt.TextArea</tt> and
+ * <tt>java.awt.TextComponent</tt>.
+ * <p>
+ * MTextPanel supports bidirectional and complex text.  In bidirectional
+ * text, offsets at direction boundaries have dual carets.  Logical selection
+ * is used, so selections across run directions may not be contiguous in
+ * display.
+ */
+public interface MTextPanel {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    /**
+     * This value is returned from <tt>getCharacterStyleOverSelection</tt>
+     * and <tt>getParagraphStyleOverSelection</tt> to indicate that the
+     * selection range contains multiple values for a key.
+     * <p>
+     * There is no reason for this Object ever to appear in an AttributeMap
+     * as a value.  Obviously, if it does there will be no way to distinguish
+     * between multiple values across the selection and a consistent value of
+     * <tt>MULTIPLE_VALUES</tt> for the key.
+     * @see #getCharacterStyleOverSelection
+     * @see #getParagraphStyleOverSelection
+     */
+    public static final Object MULTIPLE_VALUES = new Object();
+    
+    /**
+     * Add the given TextPanelListener to the listeners which will
+     * receive update notifications from this MTextPanel.
+     * @param listener the listener to add
+     */
+    public void addListener(TextPanelListener listener);
+
+    /**
+     * Remove the given TextPanelListener from the listeners which will
+     * receive update notifications from this MTextPanel.
+     * @param listener the listener to remove
+     */
+    public void removeListener(TextPanelListener listener);
+
+    /**
+     * Set the document to <tt>newText</tt>.  This operation
+     * modifies the text in the MTextPanel.  It does not modify or adopt
+     * <tt>newText</tt>.  This method sets the selection an insertion point at
+     * the end of the text.
+     * @param newText the text which will replace the current text.
+     */
+    public void setText(MConstText newText);
+    
+    /**
+     * Append the given text to the end of the document.  Equivalent to
+     * <tt>insert(newText, getTextLength())</tt>.
+     * @param newText the text to append to the document
+     */
+    public void append(MConstText newText);
+    
+    /**
+     * Insert the given text into the document at the given position.
+     * Equivalent to
+     * <tt>replaceRange(newText, position, position)</tt>.
+     * @param newText the text to insert into the document.
+     * @param position the position in the document where the
+     *     text will be inserted
+     */
+    public void insert(MConstText newText, int position);
+
+    /**
+     * Replace the given range with <tt>newText</tt>.  After this
+     * operation the selection range is an insertion point at the
+     * end of the new text.
+     * @param newText the text with which to replace the range
+     * @param start the beginning of the range to replace
+     * @param end the end of the range to replace
+     */
+    public void replaceRange(MConstText newText, int start, int end);
+
+    /**
+     * Return the length of the text document in the MTextPanel.
+     * @return the length of the text document in the MTextPanel
+     */
+    public int getTextLength();
+
+    /**
+     * Return the text document in the MTextPanel.
+     * @return the text document in the MTextPanel.
+     */
+    public MConstText getText();
+    
+//============
+// Selection Access
+//============
+
+    /**
+     * Return the offset of the start of the selection.
+     */
+    public int getSelectionStart();
+
+    /**
+     * Return the offset of the end of the selection.
+     */
+    public int getSelectionEnd();
+    
+    /**
+     * Set the beginning of the selection range.  This is
+     * equivalent to <tt>select(selectionStart, getSelectionEnd())</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionStart(int selectionStart);
+    
+    /**
+     * Set the end of the selection range.  This is
+     * equivalent to <tt>select(getSelectionStart(), selectionEnd)</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionEnd(int selectionEnd);
+    
+    /**
+     * Set the selection range to an insertion point at the given
+     * offset.  This is equivalent to
+     * <tt>select(position, position)</tt>.
+     * @param position the offset of the new insertion point
+     */
+    public void setCaretPosition(int position);
+    
+    /**
+     * Set the selection range to the given range.  The range start
+     * is pinned between 0 and the text length;  the range end is pinned
+     * between the range start and the end of the text.  These semantics
+     * are identical to those of <tt>java.awt.TextComponent</tt>.
+     * This method has no effect if the text is not selectable.
+     * @param selectionStart the beginning of the selection range
+     * @param selectionEnd the end of the selection range
+     */
+    public void select(int selectionStart, int selectionEnd);
+    
+    /**
+     * Select all of the text in the document.  This method has no effect if
+     * the text is not selectable.
+     */
+    public void selectAll();
+    
+
+//============
+// Format Width
+//============
+
+    /**
+     * Return the total format width, in pixels.  The format width is the
+     * width to which text is wrapped.
+     * @return the format width
+     */
+    public int getFormatWidth();
+    
+    /**
+     * Return true if the paragraph at the given offset is left-to-right.
+     * @param offset an offset in the text
+     * @return true if the paragraph at the given offset is left-to-right
+     */
+    public boolean paragraphIsLeftToRight(int offset);
+
+    /**
+     * Return true if there is a change which can be undone.
+     * @return true if there is a change which can be undone.
+     */
+    public boolean canUndo();
+    
+    /**
+     * Return true if there is a change which can be redone.
+     * @return true if there is a change which can be redone.
+     */
+    public boolean canRedo();
+    
+    /**
+     * Return true if the clipboard contains contents which could be
+     * transfered into the text.
+     * @return true if the clipboard has text content.
+     */
+    public boolean clipboardNotEmpty();
+    
+
+//============
+// Styles
+//============
+
+    /**
+     * Return an AttributeMap of keys with default values.  The default
+     * values are used when displaying text for values which are not
+     * specified in the text.
+     * @return an AttributeMap of default key-value pairs
+     */
+    public AttributeMap getDefaultValues();
+    
+    /**
+     * This method inspects the character style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have different 
+     * values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see #MULTIPLE_VALUES
+     */
+    public Object getCharacterStyleOverSelection(Object key);
+    
+    /**
+     * This method inspects the paragraph style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have 
+     * different values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see #MULTIPLE_VALUES
+     */
+    public Object getParagraphStyleOverSelection(Object key);
+    
+    /**
+     * Remove the selected text from the document and place it
+     * on the clipboard.  This method has no effect if the text
+     * is not editable, or if no text is selected.
+     */
+    public void cut();
+    
+    /**
+     * Place the selected text on the clipboard.  This method has
+     * no effect if no text is selected.
+     */
+    public void copy();
+    
+    /**
+     * Replace the currently selected text with the text on the clipboard.
+     * This method has no effect if the text is not editable, or if no
+     * text is on the clipboard.
+     */
+    public void paste();
+    
+    /**
+     * Remove selected text from the document, without altering the clipboard.
+     * This method has no effect if the
+     * text is not editable.
+     */
+    public void clear();
+    
+    /**
+     * Undo the most recent text change.  This method has no effect if
+     * there is no change to undo.
+     */
+    public void undo();
+    
+    /**
+     * Redo the most recent text change.  This method has no effect if
+     * there is no change to redo.
+     */
+    public void redo();
+    
+    /**
+     * Return the number of commands the command log can hold.
+     * @return the number of commands the command log can hold
+     */
+    public int getCommandLogSize();
+    
+    /**
+     * Set the number of commands the command log can hold.  All
+     * redoable commands are removed when this method is called.
+     * @param size the number of commands kept in the command log
+     */
+    public void setCommandLogSize(int size);
+    
+    /**
+     * Remove all commands from the command log.
+     */
+    public void clearCommandLog();
+    
+    /**
+     * Modify the character styles on the selected characters.  If no characters
+     * are selected, modify the typing style.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyCharacterStyleOnSelection(StyleModifier modifier);
+    
+    /**
+     * Modify the paragraph styles in paragraphs containing selected characters, or
+     * the paragraph containing the insertion point.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyParagraphStyleOnSelection(StyleModifier modifier);
+    
+    /**
+     * Return the KeyRemap used to process key events.
+     * @return the key remap used to process key events
+     * @see #setKeyRemap
+     */
+    public KeyRemap getKeyRemap();
+    
+    /**
+     * Use the given KeyRemap to map key events to characters.
+     * Only key
+     * events are affected by the remap;  other text entering the
+     * control (via the clipboard, for example) is not affected
+     * by the KeyRemap.
+     * <p>
+     * Do not pass <tt>null</tt> to this method to leave key
+     * events unmapped.  Instead, use <tt>KeyRemap.getIdentityRemap()</tt>
+     * @param remap the KeyRemap to use for mapping key events to characters
+     * @exception java.lang.NullPointerException if parameter is null
+     * @see KeyRemap
+     */
+    public void setKeyRemap(KeyRemap remap);
+    
+    /**
+     * Return the modification flag of the current text change.
+     * @see #setModified
+     */
+    public boolean isModified();
+    
+    /**
+     * Set the modification flag of the current text change.
+     */
+    public void setModified(boolean modified);
+}
diff --git a/src/com/ibm/richtext/textpanel/OffscreenBufferCache.java b/src/com/ibm/richtext/textpanel/OffscreenBufferCache.java
new file mode 100755
index 0000000..7344bef
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/OffscreenBufferCache.java
@@ -0,0 +1,52 @@
+/*
+ * @(#)$RCSfile: OffscreenBufferCache.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Image;
+import java.awt.Component;
+
+class OffscreenBufferCache {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private Image fOffscreenBuffer = null;
+    private Component fHost;
+
+    OffscreenBufferCache(Component host) {
+
+        fHost = host;
+    }
+
+    private Image makeBuffer(int width, int height) {
+
+        return fHost.createImage(Math.max(width, 1), Math.max(height, 1));
+    }
+
+    Image getBuffer(int width, int height) {
+
+        Image buffer = fOffscreenBuffer;
+
+        if (buffer != null) {
+            if (buffer.getWidth(fHost) >= width &&
+                    buffer.getHeight(fHost) >= height) {
+                return buffer;
+            }
+        }
+
+        buffer = makeBuffer(width, height);
+        fOffscreenBuffer = buffer;
+        return buffer;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textpanel/PanelEventBroadcaster.java b/src/com/ibm/richtext/textpanel/PanelEventBroadcaster.java
new file mode 100755
index 0000000..8f25253
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/PanelEventBroadcaster.java
@@ -0,0 +1,100 @@
+/*
+ * @(#)$RCSfile: PanelEventBroadcaster.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.util.Vector;
+
+/**
+ * This class listens for text state change notifications
+ * and broadcasts them to all of its listeners.
+ */
+final class PanelEventBroadcaster {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int FIRST = TextPanelEvent.TEXT_PANEL_FIRST;
+
+    private final Vector[] fListeners;
+    private final TextPanelEvent[] fEvents;
+
+    /**
+     * Construct a new PanelEventBroadcaster.
+     * @param panel the TextPanel for which events are broadcasted
+     */
+    public PanelEventBroadcaster(MTextPanel panel) {
+
+        int count = TextPanelEvent.TEXT_PANEL_LAST - FIRST + 1;
+
+        fEvents = new TextPanelEvent[count];
+        fListeners = new Vector[count];
+        
+        for (int i=0; i < fListeners.length; i++) {
+            fEvents[i] = new TextPanelEvent(panel, i+FIRST);
+            fListeners[i] = new Vector();
+        }
+    }
+
+    /**
+     * Add the given TextPanelListener to the TextPanelListeners to
+     * which notifications are forwarded.
+     * @param listener the listener to add
+     */
+    public synchronized void addListener(TextPanelListener listener) {
+
+        for (int i=FIRST; i <= TextPanelEvent.TEXT_PANEL_LAST; i++) {
+            Vector listeners = fListeners[i-FIRST];
+            if (listener.respondsToEventType(i)) {
+                if (!listeners.contains(listener)) {
+                    listeners.addElement(listener);
+                }
+            }
+        }
+    }
+
+    /**
+     * Remove the given TextPanelListener from the TextPanelListeners to
+     * which notifications are forwarded.
+     * @param listener the listener to remove
+     */
+    public synchronized void removeListener(TextPanelListener listener) {
+
+        for (int i=FIRST; i <= TextPanelEvent.TEXT_PANEL_LAST; i++) {
+            Vector listeners = fListeners[i-FIRST];
+            if (listener.respondsToEventType(i)) {
+                listeners.removeElement(listener);
+            }
+        }
+    }
+
+    /**
+     * Receive a notification and forward it to all listeners.
+     * @changeCode one of the constants in the TextPanelListener class
+     */
+    public synchronized void textStateChanged(int id) {
+
+        int index = id-FIRST;
+        TextPanelEvent event = fEvents[index];
+        Vector listeners = fListeners[index];
+        
+        int size = listeners.size();
+
+        for (int i=0; i < size; i++) {
+
+            TextPanelListener listener =
+                            (TextPanelListener) listeners.elementAt(i);
+            listener.textEventOccurred(event);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/RunStrategy.java b/src/com/ibm/richtext/textpanel/RunStrategy.java
new file mode 100755
index 0000000..a7b1290
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/RunStrategy.java
@@ -0,0 +1,22 @@
+/*
+ * @(#)$RCSfile: RunStrategy.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+class RunStrategy {
+    
+    void doIt(Runnable r) {
+        r.run();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textpanel/ScrollBarLayout.java b/src/com/ibm/richtext/textpanel/ScrollBarLayout.java
new file mode 100755
index 0000000..c06ff6b
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/ScrollBarLayout.java
@@ -0,0 +1,153 @@
+/*
+ * @(#)$RCSfile: ScrollBarLayout.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Insets;
+import java.awt.LayoutManager;
+
+class ScrollBarLayout implements LayoutManager {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    Component   fHorizScrollBar = null;
+    Component   fVertScrollBar = null;
+    Component   fChild = null;
+
+    public ScrollBarLayout() {
+    }
+
+    public void addLayoutComponent(String name, Component comp) {
+
+        if ("Center".equals(name))
+            fChild = comp;
+        else if ("South".equals(name))
+            fHorizScrollBar = comp;
+        else if ("East".equals(name))
+            fVertScrollBar = comp;
+    }
+
+    public void layoutContainer(Container target) {
+
+        Insets      insets = target.getInsets();
+        Dimension   targetSize = target.getSize();
+        int         hsbHeight = (fHorizScrollBar != null) ? fHorizScrollBar.getPreferredSize().
+                            height : 0;
+        int         vsbWidth = (fVertScrollBar != null) ? fVertScrollBar.getPreferredSize().
+                            width : 0;
+
+        if (fHorizScrollBar != null)
+            fHorizScrollBar.setBounds(insets.left, targetSize.height - insets.bottom -
+                                hsbHeight, targetSize.width - vsbWidth, hsbHeight);
+
+        if (fVertScrollBar != null)
+            fVertScrollBar.setBounds(targetSize.width - insets.right - vsbWidth,
+                                insets.top, vsbWidth, targetSize.height - hsbHeight);
+
+        if (fChild != null)
+            fChild.setBounds(insets.left, insets.top, targetSize.width - insets.right - vsbWidth,
+                                targetSize.height - insets.bottom - hsbHeight);
+    }
+
+    public Dimension minimumLayoutSize(Container target) {
+
+        Dimension   returnVal = new Dimension(0, 0);
+        Dimension   hsbSize;
+        Dimension   vsbSize;
+        Dimension   childSize;
+
+        if (fHorizScrollBar != null && fHorizScrollBar.isVisible()) {
+            hsbSize = fHorizScrollBar.getMinimumSize();
+        }
+        else {
+            hsbSize = new Dimension(0, 0);
+        }
+
+        if (fVertScrollBar != null && fVertScrollBar.isVisible()) {
+            vsbSize = fVertScrollBar.getMinimumSize();
+        }
+        else {
+            vsbSize = new Dimension(0, 0);
+        }
+
+        if (fChild != null && fChild.isVisible()) {
+            childSize = fChild.getMinimumSize();
+        }
+        else {
+            childSize = new Dimension(0, 0);
+        }
+
+        returnVal.width = Math.max(childSize.width, hsbSize.width) + vsbSize.width;
+        returnVal.height = Math.max(childSize.height, vsbSize.height) + hsbSize.height;
+
+        Insets  insets = target.getInsets();
+
+        returnVal.width += insets.left + insets.right;
+        returnVal.height += insets.top + insets.bottom;
+
+        return returnVal;
+    }
+
+    public Dimension preferredLayoutSize(Container target) {
+
+        Dimension   returnVal = new Dimension(0, 0);
+        Dimension   hsbSize;
+        Dimension   vsbSize;
+        Dimension   childSize;
+
+        if (fHorizScrollBar != null && fHorizScrollBar.isVisible()) {
+            hsbSize = fHorizScrollBar.getPreferredSize();
+        }
+        else {
+            hsbSize = new Dimension(0, 0);
+        }
+
+        if (fVertScrollBar != null && fVertScrollBar.isVisible()) {
+            vsbSize = fVertScrollBar.getPreferredSize();
+        }
+        else {
+            vsbSize = new Dimension(0, 0);
+        }
+
+        if (fChild != null && fChild.isVisible()) {
+            childSize = fChild.getPreferredSize();
+        }
+        else {
+            childSize = new Dimension(0, 0);
+        }
+
+        returnVal.width = Math.max(childSize.width, hsbSize.width) + vsbSize.width;
+        returnVal.height = Math.max(childSize.height, vsbSize.height) + hsbSize.height;
+
+        Insets  insets = target.getInsets();
+
+        returnVal.width += insets.left + insets.right;
+        returnVal.height += insets.top + insets.bottom;
+
+        return returnVal;
+    }
+
+    public void removeLayoutComponent(Component comp) {
+
+        if (comp == fChild)
+            fChild = null;
+        else if (comp == fHorizScrollBar)
+            fHorizScrollBar = null;
+        else if (comp == fVertScrollBar)
+            fVertScrollBar = null;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/Scroller.java b/src/com/ibm/richtext/textpanel/Scroller.java
new file mode 100755
index 0000000..6bb404d
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/Scroller.java
@@ -0,0 +1,208 @@
+/*
+ * @(#)$RCSfile: Scroller.java,v $ $Revision: 1.4 $ $Date: 2001/10/30 02:42:48 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+/*
+    7/9/97 - changed some deprecated methods in Scrollbar
+            Also setting Unit and Block increment values.  Maybe
+            it matters...
+    6/29/98 - reimplemented this class.  Now this class talks to
+              any component which implements Scroller.Client.
+              ScrollHolder is gone, too.
+    2/4/99 - No longer a Panel.  Also, doesn't create Scrollbars,
+             and in fact doesn't even use the Scrollbar class
+             directly.
+*/
+
+import java.awt.Component;
+import java.awt.Rectangle;
+import java.awt.Dimension;
+
+import java.awt.event.AdjustmentListener;
+import java.awt.event.AdjustmentEvent;
+import java.awt.Adjustable;
+
+/**
+* This class manages the interaction between a scrollable client
+* and vertical and horizontal scrollbars.  It calls the client's
+* scrollTo method in response to manipulation of the scroll bars.
+*
+* This class used to be a Panel containing the scrollbars and
+* the client panel.  As part of the migration away from direct
+* AWT dependencies, this class is no longer part of the view
+* hierarchy.  Instead it simply keeps a reference to its
+* client and scroll bars.  It is the responsibility of higher-
+* level classes to set up the view hierarchy.
+*/
+final class Scroller implements AdjustmentListener
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    static interface Client {
+        void scrollTo(int x, int y);
+        Rectangle getScrollSize();
+        Rectangle getBounds();
+    }
+
+    private Adjustable fHorizScrollBar = null;
+    private Adjustable fVertScrollBar = null;
+    private Client fClient = null;
+
+    /**
+     * These are used if the respective Scrollbar is not present.
+     */
+    private int fHorizValue, fVertValue;
+
+    private static final int DEFAULT_UNIT_INC = 10;
+
+    /**
+     * Construct a new Scroller with the given Adjustables,
+     * which really should be scrollbars of some ilk.
+     * Also, the Adjustables are required to be AWT Components,
+     * so the Scroller can enable and disable them.
+     * However, a Scroller can work with either AWT Scrollbars
+     * or JFC JScrollbars.
+     * @param horizScrollbar the horizontal scrollbar.  null if
+     * there is no horizontal scrollbar.
+     * @param vertScrollbar the vertical scrollbar.  null if
+     * there is no vertical scrollbar.
+     */
+    public Scroller(Adjustable horizScrollBar,
+                    Adjustable vertScrollBar) {
+
+        //setLayout(new ScrollBarLayout());
+
+        fHorizScrollBar = horizScrollBar;
+        fVertScrollBar = vertScrollBar;
+
+        if (fVertScrollBar != null) {
+            fVertScrollBar.setUnitIncrement(DEFAULT_UNIT_INC);
+            fVertScrollBar.addAdjustmentListener(this);
+        }
+        if (fHorizScrollBar != null) {
+            fHorizScrollBar.setUnitIncrement(DEFAULT_UNIT_INC);
+            fHorizScrollBar.addAdjustmentListener(this);
+        }
+    }
+
+    public void setClient(Client client) {
+
+        fClient = client;
+        clientScrollSizeChanged();
+    }
+
+    public void adjustmentValueChanged(AdjustmentEvent event) {
+
+        // variable not used boolean horizontal;
+        if (event.getAdjustable() == fHorizScrollBar) {
+            int vertVal = fVertScrollBar == null? fVertValue :
+                                        fVertScrollBar.getValue();
+            scrollTo(event.getValue(), vertVal);
+        }
+        else {
+            int horizVal = fHorizScrollBar == null? fHorizValue :
+                                        fHorizScrollBar.getValue();
+            scrollTo(horizVal, event.getValue());
+        }
+    }
+
+    private void setValues(Adjustable scrollbar,
+                           int visible,
+                           int minimum,
+                           int height) {
+
+        int maximum = minimum+height;
+        
+        if (scrollbar != null) {
+
+            Component scrollbarToo = (Component) scrollbar;
+
+            if (maximum <= visible) {
+                scrollbarToo.setEnabled(false);
+            }
+            else {
+                scrollbarToo.setEnabled(true);
+            }
+            
+            scrollbar.setMinimum(minimum);
+            scrollbar.setMaximum(maximum);
+            scrollbar.setVisibleAmount(visible);
+	    // workaround setBlockIncrement warnings for increments < 1
+	    scrollbar.setBlockIncrement(Math.max(1, visible - DEFAULT_UNIT_INC));
+        }
+    }
+
+
+    public void clientScrollSizeChanged()
+    {
+        Rectangle bounds = fClient.getBounds();
+        Rectangle preferredSize = fClient.getScrollSize();
+
+        setValues(fHorizScrollBar, bounds.width, preferredSize.x, preferredSize.width);
+        setValues(fVertScrollBar, bounds.height, preferredSize.y, preferredSize.height);
+    }
+
+    public void setPosition(int x, int y) {
+
+        if (fHorizScrollBar != null) {
+            fHorizScrollBar.setValue(x);
+        }
+        else {
+            fHorizValue = x;
+        }
+        if (fVertScrollBar != null) {
+            fVertScrollBar.setValue(y);
+        }
+        else {
+            fVertValue = y;
+        }
+    }
+
+    private void scrollTo(int x, int y)
+    {
+        fClient.scrollTo(x, y);
+    }
+
+    public void setHorizLineDistance(int newDistance)
+    {
+        if (fHorizScrollBar != null) {
+            fHorizScrollBar.setUnitIncrement(newDistance);
+        }
+    }
+
+    public void setHorizPageOverlap(int newOverlap)
+    {
+        if (fHorizScrollBar != null) {
+            fHorizScrollBar.setBlockIncrement( // workaround warnings for values < 1 on unix
+                    Math.max(1, fHorizScrollBar.getVisibleAmount()-newOverlap));
+        }
+    }
+
+    public void setVertLineDistance(int newDistance)
+    {
+        if (fVertScrollBar != null) {
+            fVertScrollBar.setUnitIncrement(newDistance);
+        }
+    }
+
+    public void setVertPageOverlap(int newOverlap)
+    {
+        if (fVertScrollBar != null) {
+            fVertScrollBar.setBlockIncrement( // workaround warnings for values < 1 on unix
+                    Math.max(1, fVertScrollBar.getVisibleAmount()-newOverlap));
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/SelectionDragInteractor.java b/src/com/ibm/richtext/textpanel/SelectionDragInteractor.java
new file mode 100755
index 0000000..7f9ed1f
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/SelectionDragInteractor.java
@@ -0,0 +1,206 @@
+/*
+ * @(#)$RCSfile: SelectionDragInteractor.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.text.BreakIterator;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.FocusEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+
+import com.ibm.richtext.textformat.TextOffset;
+
+final class SelectionDragInteractor extends Behavior implements Runnable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private TextComponent fTextComponent;
+    private TextSelection fSelection;
+    private RunStrategy fRunStrategy;
+    
+    private TextOffset fAnchorStart; // aliases text offsets - client beware
+    private TextOffset fAnchorEnd;
+    private TextOffset fCurrent;
+
+    private final boolean fWasZeroLength;
+
+    private int fCurrentX;
+    private int fCurrentY;
+    private boolean fMouseOutside;
+
+    private Thread fAutoscrollThread = null;
+    private boolean fThreadRun = true;
+
+    private static final int kScrollSleep = 300;
+
+    public SelectionDragInteractor(TextSelection selection,
+                                   TextComponent textComponent,
+                                   RunStrategy runStrategy,
+                                   TextOffset anchorStart,
+                                   TextOffset anchorEnd,
+                                   TextOffset current,
+                                   int initialX,
+                                   int initialY,
+                                   boolean wasZeroLength) {
+
+        fTextComponent = textComponent;
+        fSelection = selection;
+        fRunStrategy = runStrategy;
+        fAnchorStart = anchorStart;
+        fAnchorEnd = anchorEnd;
+        fCurrent = current;
+
+        fCurrentX = initialX;
+        fCurrentY = initialY;
+        fMouseOutside = false;
+
+        fWasZeroLength = wasZeroLength;
+        
+        setSelection();
+    }
+    
+    public boolean textControlEventOccurred(Behavior.EventType event, Object what) {
+
+        return true;
+    }
+
+    public boolean focusGained(FocusEvent event) {
+
+        return true;
+    }
+
+    public boolean focusLost(FocusEvent event) {
+
+        return true;
+    }
+
+    public boolean keyPressed(KeyEvent event) {
+
+        return true;
+    }
+
+    public boolean keyTyped(KeyEvent event) {
+
+        return true;
+    }
+
+    public boolean keyReleased(KeyEvent event) {
+
+        return true;
+    }
+
+    public synchronized boolean mouseDragged(MouseEvent e) {
+
+        int x = e.getX(), y = e.getY();
+        if (fCurrentX != x || fCurrentY != y) {
+            fCurrentX = x;
+            fCurrentY = y;
+            processMouseLocation();
+        }
+        return true;
+    }
+
+    public synchronized boolean mouseEnter(MouseEvent e) {
+
+        fMouseOutside = false;
+        return true;
+    }
+
+    public synchronized boolean mouseExited(MouseEvent e) {
+
+        if (fAutoscrollThread == null) {
+            fAutoscrollThread = new Thread(this);
+            fAutoscrollThread.start();
+        }
+        fMouseOutside = true;
+        notify();
+
+        return true;
+    }
+
+    public synchronized boolean mouseReleased(MouseEvent e) {
+
+        fMouseOutside = false;
+        fThreadRun = false;
+        if (fAutoscrollThread != null) {
+            fAutoscrollThread.interrupt();
+        }
+        
+        removeFromOwner();
+        boolean isZeroLength = TextSelection.rangeIsZeroLength(fAnchorStart,
+                                                               fAnchorEnd,
+                                                               fCurrent);
+        fSelection.mouseReleased(isZeroLength != fWasZeroLength);
+
+        return true;
+    }
+
+    private void processMouseLocation() {
+
+        fTextComponent.scrollToShow(fCurrentX, fCurrentY);
+        fTextComponent.pointToTextOffset(fCurrent, fCurrentX, fCurrentY, null, true);
+        setSelection();
+    }
+
+    private void setSelection() {
+
+        if (fCurrent.greaterThan(fAnchorEnd)) {
+            fSelection.advanceToNextBoundary(fCurrent);
+            fSelection.setSelRangeAndDraw(fAnchorStart, fCurrent, fAnchorStart);
+        }
+        else if (fCurrent.lessThan(fAnchorStart)) {
+            fSelection.advanceToPreviousBoundary(fCurrent);
+            fSelection.setSelRangeAndDraw(fCurrent, fAnchorEnd, fAnchorStart);
+        }
+        else {
+            fCurrent.assign(fAnchorEnd);
+            fSelection.setSelRangeAndDraw(fAnchorStart, fAnchorEnd, fAnchorStart);
+        }
+    }
+
+    public void run() {
+
+        Runnable doMouseLoc = new Runnable() {
+            public void run() {
+                processMouseLocation();
+            }
+        };
+        
+        while (fThreadRun) {
+
+            try {
+                Thread.sleep(kScrollSleep);
+            }
+            catch(InterruptedException e) {
+                return; // just quit scrolling
+            }
+
+            synchronized(this) {
+
+                while (!fMouseOutside) {
+                    try {
+                        wait();
+                    }
+                    catch(InterruptedException e) {
+                        return; // just quit scrolling
+                    }
+                }
+
+                fRunStrategy.doIt(doMouseLoc);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/SimpleCommandLog.java b/src/com/ibm/richtext/textpanel/SimpleCommandLog.java
new file mode 100755
index 0000000..a848d17e
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/SimpleCommandLog.java
@@ -0,0 +1,177 @@
+/*
+ * @(#)$RCSfile: SimpleCommandLog.java,v $ $Revision: 1.2 $ $Date: 2001/10/30 02:42:48 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+final class SimpleCommandLog {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private Command fLastCommand = null;
+    private Command fCurrentCommand = null;
+    private PanelEventBroadcaster fListener;
+
+    private boolean fBaseIsModified;
+
+    private int fLogSize = 14;
+
+    public SimpleCommandLog(PanelEventBroadcaster listener) {
+        fListener = listener;
+        fBaseIsModified = false;
+    }
+
+    /** adds the specfied command to the top of the command stack
+    * (any undone commands on the stack are removed)
+    * This function assumes the command has already been executed (i.e., its execute() method
+    * has been called, or an equivalent action has been taken) */
+    void add(Command newCommand) {
+        // if there are commands on the stack that have been undone, they are
+        // dropped on the floor here
+        newCommand.setPreviousCommand(fCurrentCommand);
+        
+        final Command oldLastCommand = fLastCommand;
+        fLastCommand = null;
+        
+        fCurrentCommand = newCommand;
+        limitCommands(fLogSize);
+        
+        if (oldLastCommand != null) {
+            fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+    }
+
+    /**
+     * If the command list is longer than logSize, truncate it.
+     * This method traverses the list each time, and is not a model
+     * of efficiency.  It's a temporary way to plug this memory leak
+     * until I can implement a bounded command log.
+     */
+    private void limitCommands(int logSize) {
+
+        if (logSize == 0) {
+            fCurrentCommand = null;
+        }
+        else {
+            Command currentCommand = fCurrentCommand;
+            int remaining = logSize-1;
+            while (currentCommand != null && remaining > 0) {
+                currentCommand = currentCommand.previousCommand();
+                remaining -= 1;
+            }
+            if (currentCommand != null) {
+                currentCommand.setPreviousCommand(null);
+            }
+        }
+    }
+
+    /** adds the specfied command to the top of the command stack and executes it */
+    void addAndDo(Command newCommand) {
+        add(newCommand);
+        newCommand.execute();
+
+        fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+    }
+
+    /** undoes the command on the top of the command stack, if there is one */
+    void undo() {
+        if (fCurrentCommand != null) {
+            Command current = fCurrentCommand;
+            current.undo();
+
+            fCurrentCommand = current.previousCommand();
+
+            current.setPreviousCommand(fLastCommand);
+            fLastCommand = current;
+
+            fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+    }
+
+    /** redoes the last undone command on the command stack, if there are any */
+    void redo() {
+        if (fLastCommand != null) {
+            Command last = fLastCommand;
+            last.redo();
+
+            fLastCommand = last.previousCommand();
+
+            last.setPreviousCommand(fCurrentCommand);
+            fCurrentCommand = last;
+
+            fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+    }
+
+    public boolean canUndo() {
+        return fCurrentCommand != null;
+    }
+
+    public boolean canRedo() {
+        return fLastCommand != null;
+    }
+
+    public boolean isModified() {
+
+        if (fCurrentCommand == null) {
+            return fBaseIsModified;
+        }
+        else {
+            return fCurrentCommand.isModified();
+        }
+    }
+
+    public void setModified(boolean modified) {
+
+        if (fCurrentCommand == null) {
+            fBaseIsModified = modified;
+        }
+        else {
+            fCurrentCommand.setModified(modified);
+        }
+    }
+
+    public void clearLog() {
+
+        if (fCurrentCommand != null) {
+            fBaseIsModified = fCurrentCommand.isModified();
+        }
+        // variable not used boolean changed = fCurrentCommand != null || fLastCommand != null;
+        fCurrentCommand = null;
+        fLastCommand = null;
+        
+        fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+    }
+
+    public void setLogSize(int size) {
+
+        if (size < 0) {
+            throw new IllegalArgumentException("log size cannot be negative");
+        }
+        
+        if (size < fLogSize) {
+            limitCommands(size);
+        }
+        
+        fLogSize = size;
+        
+        if (fLastCommand != null || size == 0) {
+            fLastCommand = null;
+            fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+    }
+
+    public int getLogSize() {
+
+        return fLogSize;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/StyleChangeCommand.java b/src/com/ibm/richtext/textpanel/StyleChangeCommand.java
new file mode 100755
index 0000000..84771ab
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/StyleChangeCommand.java
@@ -0,0 +1,49 @@
+/*
+ * @(#)$RCSfile: StyleChangeCommand.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textformat.TextOffset;
+
+class StyleChangeCommand extends TextCommand {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private boolean fCharacter;
+    private StyleModifier fModifier;
+
+    public StyleChangeCommand(TextEditBehavior behavior,
+                              MText originalText,
+                              TextOffset selStartBefore,
+                              TextOffset selEndBefore,
+                              StyleModifier modifier,
+                              boolean character) {
+
+        super(behavior, originalText, selStartBefore.fOffset, selStartBefore, selEndBefore);
+        fModifier = modifier;
+        fCharacter = character;
+    }
+
+    public int affectedRangeEnd() {
+        return fSelEndBefore.fOffset;
+    }
+
+    public void execute() {
+        fBehavior.doModifyStyles(fAffectedRangeStart, fSelEndBefore.fOffset,
+                                 fModifier, fCharacter, fSelStartBefore, fSelEndBefore);
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/StyledTextClipboard.java b/src/com/ibm/richtext/textpanel/StyledTextClipboard.java
new file mode 100755
index 0000000..3a55fb9
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/StyledTextClipboard.java
@@ -0,0 +1,219 @@
+/*
+ * @(#)$RCSfile: StyledTextClipboard.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:47 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.ClipboardOwner;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.awt.Toolkit;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+
+/**
+* Wrapper for java.awt.datatransfer.Clipboard
+* Packages an MConstText in a transferable, and puts it on the clipboard.
+*/
+
+class StyledTextClipboard implements ClipboardOwner {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    // This class has a workaround for a bug in the Windows system clipboard.
+    // The system clipboard will only return String content, even
+    // though it has a reference to the contents.  So if our
+    // clipboard is the system clipboard, we'll keep a reference
+    // to the content and use that instead of what the Clipboard returns.
+
+    private static Clipboard SYSTEM = null;
+    static {
+        try {
+            SYSTEM = Toolkit.getDefaultToolkit().getSystemClipboard();
+        }
+        catch(Throwable th) {
+        }
+    }
+
+    private static StyledTextClipboard fgSystemClipboard = null;
+
+    public static StyledTextClipboard getClipboardFor(Clipboard clipboard) {
+
+        if (clipboard == SYSTEM && SYSTEM != null) {
+            synchronized(SYSTEM) {
+                if (fgSystemClipboard == null) {
+                    fgSystemClipboard = new StyledTextClipboard(SYSTEM, true);
+                }
+            }
+            return fgSystemClipboard;
+        }
+        else {
+            return new StyledTextClipboard(clipboard, false);
+        }
+    }
+
+    private Clipboard fClipboard;
+    private boolean fUseLocalContents;
+    private Transferable fContents = null;
+
+    private StyledTextClipboard(Clipboard clipboard, boolean useLocalContents) {
+
+        if (clipboard == null) {
+            fClipboard = new Clipboard("TextPanel clipboard");
+        }
+        else {
+            fClipboard = clipboard;
+        }
+
+        fUseLocalContents = useLocalContents;
+    }
+
+    public void lostOwnership(Clipboard clipboard,
+                              Transferable contents) {
+        if (contents == fContents) {
+            this.fContents = null;
+        }
+    }
+
+    public void setContents(MConstText newContents) {
+
+        TransferableText contents = new TransferableText(newContents);
+        if (fClipboard == SYSTEM) {
+            fContents = contents;
+        }
+        fClipboard.setContents(contents, this);
+    }
+
+    private Transferable getClipboardContents() {
+
+        if (fUseLocalContents && fContents != null) {
+            return fContents;
+        }
+
+        return fClipboard.getContents(this);
+    }
+
+    /**
+     * Has contents - faster than getContents for finding out whether the
+     * clipboard has text.
+     */
+    public boolean hasContents() {
+
+        Transferable contents = getClipboardContents();
+
+        if (contents == null) {
+            return false;
+        }
+
+        return contents.isDataFlavorSupported(MConstText.styledTextFlavor) ||
+               contents.isDataFlavorSupported(DataFlavor.stringFlavor) ||
+               contents.isDataFlavorSupported(DataFlavor.plainTextFlavor);
+    }
+
+    private String getString(InputStream inStream) throws IOException {
+
+        String value = new String();
+        int bytesRead;
+
+        do {
+            byte inBytes[] = new byte[inStream.available()];
+            bytesRead = inStream.read(inBytes);
+
+            if (bytesRead != -1)
+                value = value + new String(inBytes);
+
+        } while (bytesRead != -1);
+
+        return value;
+    }
+
+    /**
+     * If the Clipboard has text content, return it as an
+     * MConstText.  Otherwise return null.
+     * @param defaultStyle the style to apply to unstyled
+     *      text (such as a String).  If the clipboard
+     *      has styled text this parameter is not used.
+     */
+    public MConstText getContents(AttributeMap defaultStyle) {
+
+        Transferable contents = getClipboardContents();
+
+        if (contents == null) {
+            return null;
+        }
+
+        DataFlavor flavors[] = contents.getTransferDataFlavors();
+
+        // search flavors for our flavor, String flavor and raw text flavor
+
+        Exception ex = null;
+
+        try {
+           int i;
+
+            for (i=0; i < flavors.length; i++) {
+                if (flavors[i].equals(MConstText.styledTextFlavor))
+                    break;
+            }
+
+            if (i < flavors.length) {
+
+                Object data = contents.getTransferData(MConstText.styledTextFlavor);
+                if (data == null)
+                    System.out.println("Data is null.");
+                return (MConstText) data;
+            }
+
+            for (i=0; i < flavors.length; i++) {
+                if (flavors[i].equals(DataFlavor.stringFlavor))
+                    break;
+            }
+
+            if (i < flavors.length) {
+
+                Object data = contents.getTransferData(DataFlavor.stringFlavor);
+                return new StyledText((String) data, defaultStyle);
+            }
+
+            for (i=0; i < flavors.length; i++) {
+                if (flavors[i].equals(DataFlavor.plainTextFlavor))
+                    break;
+            }
+
+            if (i < flavors.length) {
+
+                Object data = contents.getTransferData(DataFlavor.plainTextFlavor);
+
+                String textString = getString((InputStream) data);
+                return new StyledText(textString, defaultStyle);
+            }
+        }
+        catch(UnsupportedFlavorException e) {
+            ex = e;
+        }
+        catch(IOException e) {
+            ex = e;
+        }
+
+        System.out.println("Exception when retrieving data.  Exception:" + ex);
+        return null;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextChangeCommand.java b/src/com/ibm/richtext/textpanel/TextChangeCommand.java
new file mode 100755
index 0000000..4f8bab7
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextChangeCommand.java
@@ -0,0 +1,81 @@
+/*
+ * @(#)$RCSfile: TextChangeCommand.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textformat.TextOffset;
+
+class TextChangeCommand extends TextCommand {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private MConstText fNewText;
+    private TextOffset fSelStartAfter;
+    private TextOffset fSelEndAfter;
+
+    public TextChangeCommand(TextEditBehavior behavior,
+                             MText originalText,
+                             MConstText newText,
+                             int affectedRangeStart,
+                             TextOffset selStartBefore,
+                             TextOffset selEndBefore,
+                             TextOffset selStartAfter,
+                             TextOffset selEndAfter) {
+        super(behavior, originalText, affectedRangeStart, selStartBefore, selEndBefore);
+        fNewText = newText;
+        fSelStartAfter = new TextOffset();
+        fSelStartAfter.assign(selStartAfter);
+        fSelEndAfter = new TextOffset();
+        fSelEndAfter.assign(selEndAfter);
+    }
+
+    public int affectedRangeEnd() {
+        if (fNewText == null)
+            return fAffectedRangeStart;
+        else
+            return fAffectedRangeStart + fNewText.length();
+    }
+
+    public void execute() {
+        fBehavior.doReplaceText(fAffectedRangeStart, fAffectedRangeStart + fOriginalText.length(),
+                            fNewText, fSelStartAfter, fSelEndAfter);
+    }
+
+    public int affectedRangeStart() {
+        return fAffectedRangeStart;
+    }
+
+    public void setNewText(MConstText newText) {
+        fNewText = newText;
+    }
+
+    public void setSelRangeAfter(TextOffset start, TextOffset end) {
+        if (fSelStartAfter == null)
+            fSelStartAfter = new TextOffset();
+        if (fSelEndAfter == null)
+            fSelEndAfter = new TextOffset();
+        fSelStartAfter.assign(start);
+        fSelEndAfter.assign(end);
+    }
+
+    public void prependToOldText(MConstText newText) {
+        fOriginalText.insert(0, newText);
+        fAffectedRangeStart -= newText.length();
+    }
+
+    public void appendToOldText(MConstText newText) {
+        fOriginalText.append(newText);
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextCommand.java b/src/com/ibm/richtext/textpanel/TextCommand.java
new file mode 100755
index 0000000..4a5c573
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextCommand.java
@@ -0,0 +1,51 @@
+/*
+ * @(#)$RCSfile: TextCommand.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textformat.TextOffset;
+
+abstract class TextCommand extends Command {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    protected TextEditBehavior fBehavior;
+    protected MText fOriginalText;
+    protected int fAffectedRangeStart;
+    protected TextOffset fSelStartBefore;
+    protected TextOffset fSelEndBefore;
+
+    public TextCommand(TextEditBehavior behavior,
+                       MText originalText,
+                       int affectedRangeStart,
+                       TextOffset selStartBefore,
+                       TextOffset selEndBefore) {
+
+        fBehavior = behavior;
+        fOriginalText = originalText;
+        fAffectedRangeStart = affectedRangeStart;
+        fSelStartBefore = new TextOffset();
+        fSelStartBefore.assign(selStartBefore);
+        fSelEndBefore = new TextOffset();
+        fSelEndBefore.assign(selEndBefore);
+    }
+
+    public abstract int affectedRangeEnd();
+
+    public void undo() {
+        fBehavior.doReplaceText(fAffectedRangeStart, affectedRangeEnd(), fOriginalText,
+                            fSelStartBefore, fSelEndBefore);
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextComponent.java b/src/com/ibm/richtext/textpanel/TextComponent.java
new file mode 100755
index 0000000..bbc3b91
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextComponent.java
@@ -0,0 +1,982 @@
+/*
+ * @(#)$RCSfile: TextComponent.java,v $ $Revision: 1.5 $ $Date: 2002/02/16 03:06:47 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.Rectangle;
+
+import java.awt.event.ComponentAdapter;
+import java.awt.event.FocusListener;
+import java.awt.event.KeyListener;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+
+import java.awt.event.ComponentEvent;
+import java.awt.event.FocusEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.WindowEvent;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textformat.TextOffset;
+
+import com.ibm.richtext.textformat.MFormatter;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+class TextComponent extends FakeComponent
+                    implements BehaviorOwner,
+                    FocusListener,
+                    KeyListener,
+                    MouseListener,
+                    MouseMotionListener,
+                    Scroller.Client {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    public static final int WINDOW_WIDTH = -10;
+    public static final int DEFAULT_INSET = 10;
+
+    private static final Color STRONG_CARET_COLOR = Color.black;
+    private static final Color WEAK_CARET_COLOR = Color.darkGray;
+
+    private Behavior fBehavior;
+    private MText fText;
+    private StyledTextClipboard fClipboard;
+    private boolean fScrolls;
+    private Scroller fScroller;
+
+    private DocumentView fDocumentView = null;
+
+    // sigh - can't create DocumentView until addNotify() is called.
+    // These values hold DocumentView ctor args
+    private AttributeMap fDefaultValues;
+    private boolean fViewWraps;
+    private int fViewWrapWidth;
+    private int fViewInsetAmount;
+    
+    private PanelEventBroadcaster fListener;
+
+    /**
+     * Create a new TextComponent.
+     * @param text the text model.  This model will be used for
+     * the life of the component, even if setText is called
+     * @param wraps if true, the text is wrapped to the specified
+     * wrapping width.  If false, the text wraps only at paragraph breaks.
+     * @param wrapWidth ignored if wraps is false.  Text wraps to this width
+     * unless the width is WINDOW_WIDTH, in which case text wraps to width
+     * of this component. Should not be negative (unless it is WINDOW_WIDTH).
+     * @param insetAmount the size of the margins around the text
+     * @param clipboard the clipboard to use for cut/copy/paste operations.
+     * If null, the component will use its own clipboard.
+     */
+    public TextComponent(MText text,
+                         AttributeMap defaultValues,
+                         boolean wraps,
+                         int wrapWidth,
+                         int insetAmount,
+                         StyledTextClipboard clipboard,
+                         boolean scrolls,
+                         Scroller scroller,
+                         PanelEventBroadcaster listener) {
+
+        fBehavior = null;
+
+        if (text == null) {
+            throw new IllegalArgumentException("Text is null.");
+        }
+
+        fText = text;
+        fDefaultValues = defaultValues;
+        
+        if (clipboard == null) {
+            throw new IllegalArgumentException("Clipboard is null.");
+        }
+        fClipboard = clipboard;
+
+        fScrolls = scrolls;
+
+        fScroller = scroller;
+
+        fDocumentView = null;
+
+        fViewWrapWidth = wrapWidth;
+        fViewWraps = wraps;
+        fViewInsetAmount = insetAmount;
+        fListener = listener;
+    }
+    
+    AttributeMap getDefaultValues() {
+    
+        return fDefaultValues;
+    }
+    
+    void setHost(Component component) {
+        
+        super.setHost(component);
+        
+        component.addFocusListener(this);
+        component.addKeyListener(this);
+        component.addMouseListener(this);
+        component.addMouseMotionListener(this);
+        
+        component.addComponentListener(new ComponentAdapter() {        
+            public void componentResized(ComponentEvent e) {
+                if (fDocumentView != null) {
+                    fDocumentView.hostSizeChanged();
+                    scrollToShow(fDocumentView.getDocumentBounds());
+                }
+            }
+        });
+    }
+    
+    /**
+     * ATextPanelImpl's use only!
+     */
+    Component getHost() {
+    
+        return fHost;
+    }
+    
+    // Create document view here.  TextComponent isn't fully constructed
+    // until this is called.
+    // This must be called by host component!
+    void addNotify() {
+
+        Graphics g = getGraphics();
+        if (g == null) {
+            throw new Error("Graphics should be valid here but isn't.");
+        }
+
+        fDocumentView = new DocumentView(this,
+                                         fText,
+                                         fDefaultValues,
+                                         fViewWraps,
+                                         fViewWrapWidth,
+                                         fViewInsetAmount,
+                                         fListener);
+        documentSizeChanged();
+        fListener.textStateChanged(TextPanelEvent.FORMAT_WIDTH_CHANGED);
+    }
+    
+    public Rectangle getBounds() {
+        
+        if (fHost != null) {
+            return fHost.getBounds();
+        }
+        else {
+            return new Rectangle(0, 0, 0, 0);
+        }
+    }
+    
+    Graphics getGraphics() {
+        
+        return (fHost==null)? null : fHost.getGraphics();
+    }
+    
+    void requestFocus() {
+        
+        if (fHost != null) {
+            fHost.requestFocus();
+        }
+    }
+
+    // *** Behavior management ***
+    public Behavior getBehavior() {
+        return fBehavior;
+    }
+
+    public void setBehavior(Behavior b) {
+        fBehavior = b;
+    }
+
+
+    // *** Events - just forward to behavior ***
+    public void focusGained(FocusEvent event) {
+        if (fBehavior != null)
+            fBehavior.focusGained(event);
+    }
+
+    public void focusLost(FocusEvent event) {
+        if (fBehavior != null)
+            fBehavior.focusLost(event);
+    }
+
+    public void keyPressed(KeyEvent event) {
+        if (fBehavior != null)
+            fBehavior.keyPressed(event);
+    }
+
+    public void keyTyped(KeyEvent event) {
+
+        if (fBehavior != null) {
+            fBehavior.keyTyped(event);
+        }
+    }
+
+    public void keyReleased(KeyEvent event) {
+        if (fBehavior != null)
+            fBehavior.keyReleased(event);
+    }
+
+    public void mouseClicked(MouseEvent event) {
+        return;  // no behavior method for this
+    }
+
+    public void mouseDragged(MouseEvent event) {
+        if (fBehavior != null)
+            fBehavior.mouseDragged(event);
+    }
+
+    public void mouseEntered(MouseEvent event)  {
+        if (fBehavior != null)
+            fBehavior.mouseEntered(event);
+    }
+
+    public void mouseExited(MouseEvent event)  {
+        if (fBehavior != null)
+            fBehavior.mouseExited(event);
+    }
+
+    public void mouseMoved(MouseEvent event) {
+        if (fBehavior != null)
+            fBehavior.mouseMoved(event);
+    }
+
+    public void mousePressed(MouseEvent event) {
+        if (fBehavior != null)
+            fBehavior.mousePressed(event);
+    }
+
+    public void mouseReleased(MouseEvent event)  {
+        if (fBehavior != null)
+            fBehavior.mouseReleased(event);
+    }
+
+    public boolean textControlEventOccurred(Behavior.EventType event, Object what) {
+
+        boolean handled = false;
+
+        if (fBehavior != null) {
+            handled = fBehavior.textControlEventOccurred(event, what);
+        }
+        return handled;
+    }
+
+
+    // *** Scroll methods - called by Behaviors
+
+    // viewStart, viewLimit is visible bounds of window
+    // targetStart, targetLimit is the region to scroll into view
+    private static int getScrollDifference(int viewStart,
+                                           int viewLimit,
+                                           int targetStart,
+                                           int targetLimit) {
+
+        if (viewStart <= targetStart) {
+            if (viewLimit >= targetLimit) {
+                return 0;
+            }
+            else {
+                return Math.max(viewStart-targetStart, viewLimit-targetLimit);
+            }
+        }
+        else if (viewLimit > targetLimit) {
+
+            return viewLimit - targetLimit;
+        }
+        else {
+            return 0;
+        }
+    }
+
+    void scrollToShow(Rectangle showRect) {
+
+        if (fDocumentView != null) {
+            Rectangle bounds = getBounds();
+
+            int dx = getScrollDifference(showRect.x, showRect.x + showRect.width,
+                                         bounds.x, bounds.x + bounds.width);
+            int dy = getScrollDifference(showRect.y, showRect.y + showRect.height,
+                                         bounds.y, bounds.y + bounds.height);
+
+            scrollSelf(dx, dy);
+        }
+    }
+
+    void scrollToShow(int showX, int showY) {
+
+        if (fDocumentView != null) {
+            int dx = 0, dy = 0;
+
+            Rectangle bounds = getBounds();
+            if (showX < bounds.x) {
+                dx = showX - bounds.x;
+            }
+            else if (showX > bounds.x + bounds.width) {
+                dx = showX - (bounds.x + bounds.width);
+            }
+
+            if (showY < bounds.y) {
+                dy = showY - bounds.y;
+            }
+            else if (showY > bounds.y + bounds.height) {
+                dy = showY - (bounds.y + bounds.height);
+            }
+
+            scrollSelf(dx, dy);
+        }
+    }
+
+    private int pinScrollOffset(int delta,
+                                int contentStart,
+                                int contentLength,
+                                int viewStart,
+                                int viewLength) {
+
+        if (delta > 0) {
+            int viewLimit = viewStart + viewLength;
+            int contentLimit = contentStart + contentLength;
+
+            if (viewLimit + delta > contentLimit) {
+                delta = Math.max(0, contentLimit-viewLimit);
+            }
+        }
+        else {
+            if (viewStart + delta < contentStart) {
+                delta = Math.min(0, contentStart-viewStart);
+            }
+        }
+
+        return delta;
+    }
+
+    private void scrollSelf(int dx, int dy) {
+
+        boolean scrolled = scrollBy(dx, dy);
+
+        if (scrolled && fScroller != null) {
+            Rectangle documentBounds = fDocumentView.getDocumentBounds();
+            fScroller.setPosition(-documentBounds.x,
+                                  -documentBounds.y);
+        }
+    }
+
+    private synchronized boolean scrollBy(int dx, int dy) {
+
+        boolean scrolled = false;
+
+        if (fScrolls) {
+            Rectangle documentBounds = fDocumentView.getDocumentBounds();
+            Rectangle viewBounds = getBounds();
+            
+            // variable not used int oldDx = dx;
+            dx = pinScrollOffset(dx, 
+                                 documentBounds.x,
+                                 documentBounds.width,
+                                 viewBounds.x,
+                                 viewBounds.width);
+            dy = pinScrollOffset(dy, 
+                                 documentBounds.y,
+                                 documentBounds.height,
+                                 viewBounds.y,
+                                 viewBounds.height);
+
+            if (dx != 0 || dy != 0) {
+                scrolled = true;
+                fDocumentView.moveBy(-dx, -dy);
+            }
+        }
+
+        return scrolled;
+    }
+
+    // implementation of Scroller.Client - called by Scroller
+    // they have to be public since they're in an interface
+    // no one else should call these methods
+    public Rectangle getScrollSize() {
+
+        if (fDocumentView != null) {
+            return fDocumentView.getScrollableArea();
+        }
+        else {
+            return new Rectangle(0, 0, 0, 0);
+        }
+    }
+
+    public void scrollTo(int x, int y) {
+
+        if (fDocumentView != null) {
+            scrollBy(x + fDocumentView.getDocX(), y + fDocumentView.getDocY());
+        }
+    }
+
+    // *** Text access ***
+    MConstText getText() {
+        return fText;
+    }
+
+    MText getModifiableText() {
+        return fText;
+    }
+
+    StyledTextClipboard getClipboard() {
+        return fClipboard;
+    }
+
+    public synchronized void paint(Graphics g) {
+
+        if (fDocumentView != null) {
+            fDocumentView.paint(g);
+        }
+    }
+
+
+    // *** Metric info - used by Behaviors
+    Rectangle getCaretRect(TextOffset offset) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.getCaretRect(offset);
+        }
+        else {
+            return new Rectangle(0, 0);
+        }
+    }
+
+    TextOffset pointToTextOffset(TextOffset result,
+                                 int x,
+                                 int y,
+                                 TextOffset anchor,
+                                 boolean infiniteMode) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.pointToTextOffset(result, x, y, anchor, infiniteMode);
+        }
+        else {
+            return new TextOffset();
+        }
+    }
+
+    // *** Other stuff used by Behaviors - mostly formatter exports
+    int lineContaining(TextOffset offset) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.lineContaining(offset);
+        }
+        else {
+            return 0;
+        }
+    }
+
+    int lineRangeLow(int lineNumber) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.lineRangeLow(lineNumber);
+        }
+        else {
+            return 0;
+        }
+    }
+
+    int lineRangeLimit(int lineNumber) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.lineRangeLimit(lineNumber);
+        }
+        else {
+            return 0;
+        }
+    }
+
+    void stopBackgroundFormatting() {
+
+        if (fDocumentView != null) {
+            fDocumentView.stopBackgroundFormatting();
+        }
+    }
+
+    Rectangle getBoundingRect(TextOffset offset1, TextOffset offset2) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.getBoundingRect(offset1, offset2);
+        }
+        else {
+            return new Rectangle(0, 0, 0, 0);
+        }
+    }
+
+    synchronized void reformatAndDrawText(int reformatStart,
+                             int reformatLength,
+                             TextOffset selStart,
+                             TextOffset selEnd,
+                             Rectangle additionalUpdateRect,
+                             Color hiliteColor) {
+
+        if (fDocumentView != null) {
+            fDocumentView.reformatAndDrawText(reformatStart,
+                                              reformatLength,
+                                              selStart,
+                                              selEnd,
+                                              additionalUpdateRect,
+                                              hiliteColor);
+        }
+    }
+
+    TextOffset findNewInsertionOffset(TextOffset result,
+                                      TextOffset initialOffset,
+                                      TextOffset previousOffset,
+                                      short direction) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.findNewInsertionOffset(result, initialOffset, previousOffset, direction);
+        }
+        else {
+            return new TextOffset(initialOffset);
+        }
+    }
+
+    synchronized void drawText(Graphics g,
+                  Rectangle damagedRect,
+                  boolean selectionVisible,
+                  TextOffset selStart,
+                  TextOffset selEnd,
+                  Color hiliteColor) {
+
+        if (fDocumentView != null) {
+            fDocumentView.drawText(g, damagedRect, selectionVisible, selStart, selEnd, hiliteColor);
+        }
+    }
+
+    private void documentSizeChanged() {
+
+        if (fScroller != null) {
+            fScroller.clientScrollSizeChanged();
+        }
+    }
+
+    int getFormatWidth() {
+
+        if (fDocumentView != null) {
+            return fDocumentView.getFormatWidth();
+        }
+        else {
+            return 0;
+        }
+    }
+
+    /**
+     * Return true if the paragraph at the given offset is left-to-right.
+     * @param offset an offset in the text
+     * @return true if the paragraph at the given offset is left-to-right
+     */
+    boolean paragraphIsLeftToRight(int offset) {
+        
+        if (fDocumentView != null) {
+            return fDocumentView.paragraphIsLeftToRight(offset);
+        }
+        else {
+            return true;
+        }
+    }
+    
+    private static final class DocumentView {
+
+        private TextComponent fHost;
+        private boolean fWraps;
+        private boolean fWrapToWindowWidth;
+        private int fInsetAmount;
+        private PanelEventBroadcaster fListener;
+
+        // fBounds is the total scrollable area of the document (including insets)
+        private Rectangle fBounds = new Rectangle();
+        
+        private Point fOrigin;
+
+        private MFormatter fFormatter;
+
+        private OffscreenBufferCache fBufferCache;
+
+        // Note, when this is true the caret won't blink in 1.1.  Looks like an AWT bug.
+        private static boolean fNoOffscreenBuffer =
+                            Boolean.getBoolean("TextComponent.NoOffscreenBuffer");
+
+        // Amount by which to reduce the format width to allow for right-aligned carets.
+        private final int CARET_SLOP = 1;
+
+        DocumentView(TextComponent host,
+                     MConstText text,
+                     AttributeMap defaultValues,
+                     boolean wraps,
+                     int wrapWidth,
+                     int insetAmount,
+                     PanelEventBroadcaster listener) {
+
+            fHost = host;
+            fWrapToWindowWidth = wrapWidth == WINDOW_WIDTH;
+            fInsetAmount = insetAmount;
+            fListener = listener;
+
+            initFormatterAndSize(text, defaultValues, wraps, wrapWidth);
+
+            fBufferCache = new OffscreenBufferCache(host.fHost);
+        }
+        
+        /**
+         * Note: this computes the bounds rectangle relative to fOrigin
+         */
+        private void calcBoundsRect() {
+        
+            final int insetDim = 2 * fInsetAmount;
+
+            final int minX = fFormatter.minX();
+            final int minY = fFormatter.minY();
+
+            fBounds.setBounds(fOrigin.x + minX - fInsetAmount,
+                              fOrigin.y + minY - fInsetAmount,
+                              fFormatter.maxX() - minX + insetDim, 
+                              fFormatter.maxY() - minY + insetDim);
+            //if (minX <= 0) {
+            //    System.out.println("calcBoundsRect: minX="+minX+
+            //                       "; bounds.x="+fBounds.x+"; width="+fBounds.width);
+            //}
+        }
+
+        private void initFormatterAndSize(MConstText text, 
+                                          AttributeMap defaultValues,
+                                          boolean wraps,
+                                          int wrapWidth) {
+
+            Rectangle hostBounds = fHost.getBounds();
+            int formatWidth;
+
+            if (!wraps || fWrapToWindowWidth) {
+                formatWidth = hostBounds.width - 2 * fInsetAmount;
+                if (formatWidth <= CARET_SLOP) {
+                    formatWidth = CARET_SLOP+1;
+                }
+            }
+            else {
+                formatWidth = wrapWidth;
+            }
+
+            fFormatter = MFormatter.createFormatter(text,
+                                                    defaultValues,
+                                                    formatWidth-CARET_SLOP,
+                                                    wraps,
+                                                    fHost.getGraphics());
+
+            fFormatter.formatToHeight(hostBounds.height * 2);
+            fOrigin = new Point(fInsetAmount, fInsetAmount);
+            calcBoundsRect();
+        }
+
+        // notification method called by TextComponent
+        void hostSizeChanged() {
+
+            final boolean wrap = fFormatter.wrap();
+            if (fWrapToWindowWidth || !wrap) {
+
+                Rectangle hostBounds = fHost.getBounds();
+                // variable not used final int insetDim = 2 * fInsetAmount;
+
+                int formatWidth = hostBounds.width - 2*fInsetAmount;
+                if (formatWidth <= CARET_SLOP) {
+                    formatWidth = CARET_SLOP+1;
+                }
+                fFormatter.setLineBound(formatWidth-CARET_SLOP);
+
+                fFormatter.formatToHeight(hostBounds.y + (hostBounds.height*2) - fOrigin.y);
+
+                calcBoundsRect();
+                
+                //System.out.println("Window bounds="+hostBounds+"; document bounds="+fBounds);
+
+                fHost.documentSizeChanged();
+                fListener.textStateChanged(TextPanelEvent.FORMAT_WIDTH_CHANGED);
+                //System.out.println("formatWidth="+formatWidth);
+                //System.out.println("document bounds="+fBounds);
+                //System.out.println();
+            }
+            //dumpWidthInfo();
+        }
+
+        int getFormatWidth() {
+
+            return fFormatter.lineBound();
+        }
+        
+        boolean paragraphIsLeftToRight(int offset) {
+            
+            int lineNumber = fFormatter.lineContaining(offset);
+            return fFormatter.lineIsLeftToRight(lineNumber);
+        }
+
+        private void textSizeMightHaveChanged() {
+
+            boolean changed = false;
+            final int insetDim = 2 * fInsetAmount;
+            
+            int textHeight = fFormatter.maxY() - fFormatter.minY() + insetDim;
+            if (textHeight != fBounds.height) {
+                fBounds.height = textHeight;
+                changed = true;
+            }
+
+            if (!fFormatter.wrap()) {
+                int textWidth = fFormatter.maxX() - fFormatter.minX() + insetDim;
+                if (textWidth != fBounds.width) {
+                    fBounds.width = textWidth;
+                    changed = true;
+                }
+            }
+
+            if (changed) {
+                //System.out.println("Text size changed.  fBounds: " + fBounds);
+                calcBoundsRect();
+                fHost.documentSizeChanged();
+                fHost.scrollToShow(getDocumentBounds());
+            }
+        }
+
+        private void doDrawText(Graphics g,
+                                Rectangle drawRect,
+                                boolean selectionVisible,
+                                TextOffset selStart,
+                                TextOffset selEnd,
+                                Color hiliteColor) {
+
+            Color oldColor = g.getColor();
+            g.setColor(fHost.getHost().getBackground());
+            g.fillRect(drawRect.x, drawRect.y, drawRect.width, drawRect.height);
+            g.setColor(oldColor);
+
+            //            g.clearRect(drawRect.x, drawRect.y, drawRect.width, drawRect.height);
+
+            if (selectionVisible) {
+                fFormatter.draw(g, drawRect, fOrigin, selStart, selEnd, hiliteColor);
+            }
+            else {
+                fFormatter.draw(g, drawRect, fOrigin, null, null, null);
+            }
+
+            if (selStart != null && selStart.equals(selEnd) && selectionVisible) {
+
+                fFormatter.drawCaret(g, selStart, fOrigin,
+                                    STRONG_CARET_COLOR, WEAK_CARET_COLOR);
+            }
+        }
+
+        void drawText(Graphics g,
+                      Rectangle drawRect,
+                      boolean selectionVisible,
+                      TextOffset selStart,
+                      TextOffset selEnd,
+                      Color hiliteColor) {
+
+            if (g != null) {
+                drawRect = drawRect.intersection(fHost.getBounds());
+                //System.out.println("drawText:drawRect: " + drawRect);
+                g.clipRect(drawRect.x, drawRect.y, drawRect.width, drawRect.height);
+                if (fNoOffscreenBuffer) {
+                    doDrawText(g, drawRect, selectionVisible, selStart, selEnd, hiliteColor);
+                }
+                else {
+                    Image offscreenBuffer = fBufferCache.getBuffer(drawRect.width, drawRect.height);
+                    Graphics offscreenGraphics = offscreenBuffer.getGraphics();
+                    offscreenGraphics.translate(-drawRect.x, -drawRect.y);
+    
+                    doDrawText(offscreenGraphics, drawRect, selectionVisible, selStart, selEnd, hiliteColor);
+    
+                    g.drawImage(offscreenBuffer, drawRect.x, drawRect.y, fHost.fHost);
+                }
+            }
+            textSizeMightHaveChanged();
+        }
+
+        void reformatAndDrawText(int reformatStart,
+                                 int reformatLength,
+                                 TextOffset selStart,
+                                 TextOffset selEnd,
+                                 Rectangle additionalUpdateRect,
+                                 Color hiliteColor) {
+
+            Rectangle visibleBounds = fHost.getBounds();
+            Rectangle redrawRect = fFormatter.updateFormat(reformatStart,
+                                                           reformatLength,
+                                                           visibleBounds,
+                                                           fOrigin);
+            //System.out.println("[1] redrawRect: " + redrawRect);
+
+            if (additionalUpdateRect != null) {
+                redrawRect.add(additionalUpdateRect);
+                //System.out.println("[2] redrawRect: " + redrawRect);
+            }
+
+            boolean haveSelection;
+
+            if (selStart != null && selEnd != null) {
+                haveSelection = true;
+                redrawRect.add(fFormatter.getBoundingRect(selStart, selEnd, fOrigin, fFormatter.LOOSE));
+                //System.out.println("[3] redrawRect: " + redrawRect);
+            }
+            else {
+                haveSelection = false;
+            }
+
+            drawText(fHost.getGraphics(), redrawRect, haveSelection, selStart, selEnd, hiliteColor);
+        }
+
+        private void letBehaviorDraw(Graphics g, Rectangle drawRect) {
+
+            boolean result = false;
+
+            if (fHost.fBehavior != null) {
+                result = fHost.fBehavior.paint(g, drawRect);
+            }
+
+            if (!result) {
+                drawText(g, drawRect, false, null, null, null);
+            }
+        }
+
+        void moveBy(int dx, int dy) {
+
+            Rectangle visibleBounds = fHost.getBounds();
+            Graphics g = fHost.getGraphics();
+
+            fBounds.x += dx;
+            fBounds.y += dy;
+            fOrigin.x += dx;
+            fOrigin.y += dy;
+
+            Rectangle refreshRect = new Rectangle(visibleBounds);
+
+            if (dx == 0) {
+                if (g != null) {
+                    g.copyArea(visibleBounds.x, visibleBounds.y, visibleBounds.width, visibleBounds.height, dx, dy);
+                }
+                if (dy < 0) {
+                    refreshRect.y = visibleBounds.y + visibleBounds.height + dy;
+                }
+                refreshRect.height = Math.abs(dy);
+                //System.out.println("refreshRect=" + refreshRect);
+            }
+
+            letBehaviorDraw(g, refreshRect);
+        }
+        
+        private Rectangle getInsetBounds() {
+            
+            int insetDim = 2 * fInsetAmount;
+            return new Rectangle(fBounds.x-fInsetAmount,
+                                 fBounds.y-fInsetAmount,
+                                 fBounds.width+insetDim,
+                                 fBounds.height+insetDim);
+        }
+
+        void paint(Graphics g) {
+
+            Rectangle hostBounds = fHost.getBounds();
+            Rectangle textRefreshRect = hostBounds.intersection(getInsetBounds());
+            letBehaviorDraw(g, textRefreshRect);
+        }
+
+        Rectangle getCaretRect(TextOffset offset) {
+
+            return fFormatter.getCaretRect(offset, fOrigin);
+        }
+
+        TextOffset pointToTextOffset(TextOffset result,
+                                     int x,
+                                     int y,
+                                     TextOffset anchor,
+                                     boolean infiniteMode) {
+
+            return fFormatter.pointToTextOffset(result, x, y, fOrigin, anchor, infiniteMode);
+        }
+
+        Rectangle getScrollableArea() {
+
+            Rectangle area = new Rectangle(fBounds);
+            area.x += fInsetAmount - fOrigin.x;
+            area.y += fInsetAmount - fOrigin.y;
+            return area;
+        }
+
+        /**
+         * Doesn't clone so TextComponent needs to be nice.  TextComponent
+         * is the only class which can access this anyway.
+         */
+        Rectangle getDocumentBounds() {
+
+            return fBounds;
+        }
+        
+        int getDocX() {
+        
+            return fOrigin.x - fInsetAmount;
+        }
+        
+        int getDocY() {
+        
+            return fOrigin.y - fInsetAmount;
+        }
+
+        int lineContaining(TextOffset offset) {
+
+            return fFormatter.lineContaining(offset);
+        }
+
+        int lineRangeLow(int lineNumber) {
+
+            return fFormatter.lineRangeLow(lineNumber);
+        }
+
+        int lineRangeLimit(int lineNumber) {
+
+            return fFormatter.lineRangeLimit(lineNumber);
+        }
+
+        void stopBackgroundFormatting() {
+
+            fFormatter.stopBackgroundFormatting();
+        }
+
+        Rectangle getBoundingRect(TextOffset offset1, TextOffset offset2) {
+
+            Rectangle r = fFormatter.getBoundingRect(offset1, offset2, fOrigin, fFormatter.TIGHT);
+            //r.width += CARET_SLOP;
+            //System.out.println("offset1="+offset1+"; offset2="+offset2);
+            //System.out.println("bounds width="+r.width+"; host width="+(fHost.getBounds().width));
+            return r;
+        }
+
+        TextOffset findNewInsertionOffset(TextOffset result,
+                                          TextOffset initialOffset,
+                                          TextOffset previousOffset,
+                                          short direction) {
+
+            return fFormatter.findNewInsertionOffset(
+                        result, initialOffset, previousOffset, direction);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextEditBehavior.java b/src/com/ibm/richtext/textpanel/TextEditBehavior.java
new file mode 100755
index 0000000..24aa02e
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextEditBehavior.java
@@ -0,0 +1,484 @@
+/*
+ * @(#)$RCSfile: TextEditBehavior.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:48 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Rectangle;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textformat.TextOffset;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+// All changes to the text should happen in this class, or in
+// its TypingInteractor.
+
+class TextEditBehavior extends Behavior {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private TextComponent fTextComponent;
+    private TextSelection fSelection;
+    private MText fText;
+    private SimpleCommandLog fCommandLog;
+    private PanelEventBroadcaster fListener;
+    private TypingInteractor fTypingInteractor = null;
+    private KeyRemap fRemap;
+    
+    private AttributeMap fSavedTypingStyle = null;
+    private int fSavedInsPt = 0;
+    
+    public TextEditBehavior(TextComponent textComponent,
+                            TextSelection selection,
+                            PanelEventBroadcaster listener,
+                            KeyRemap remap) {
+
+        fTextComponent = textComponent;
+        fSelection = selection;
+        fText = textComponent.getModifiableText();
+        fCommandLog = new SimpleCommandLog(listener);
+        fListener = listener;
+        fRemap = remap;
+    }
+
+    public KeyRemap getKeyRemap() {
+
+        return fRemap;
+    }
+
+    public void setKeyRemap(KeyRemap remap) {
+
+        fRemap = remap;
+    }
+
+    public boolean textControlEventOccurred(Behavior.EventType event, Object what) {
+
+        boolean handled = true;
+        
+        if (event == Behavior.CHARACTER_STYLE_MOD ||
+            event == Behavior.PARAGRAPH_STYLE_MOD) {
+            doStyleChange(event, what);
+        }
+        else if (event == Behavior.CUT) {
+            doCut();
+        }
+        else if (event == Behavior.PASTE) {
+            doPaste();
+        }
+        else if (event == Behavior.CLEAR) {
+            doClear();
+        }
+        else if (event == Behavior.REPLACE) {
+            doUndoableReplace((TextReplacement) what);
+        }
+        else if (event == Behavior.UNDO) {
+            fCommandLog.undo();
+        }
+        else if (event == Behavior.REDO) {
+            fCommandLog.redo();
+        }
+        else if (event == Behavior.SET_MODIFIED) {
+            fCommandLog.setModified(what == Boolean.TRUE);
+        }
+        else if (event == Behavior.CLEAR_COMMAND_LOG) {
+            fCommandLog.clearLog();
+        }
+        else if (event == Behavior.SET_COMMAND_LOG_SIZE) {
+            fCommandLog.setLogSize(((Integer)what).intValue());
+        }
+        else {
+            handled = super.textControlEventOccurred(event, what);
+        }
+
+        checkSavedTypingStyle();
+        
+        return handled;
+    }
+
+    /**
+     * It's unfortunate that the text is modified and reformatted in
+     * three different methods.  This method is the "common prologue"
+     * for all text modifications.
+     *
+     * This method should be called before modifying and reformatting
+     * the text.  It does three things:  stops caret blinking, stops
+     * background formatting, and returns the Rectangle containing the
+     * current (soon-to-be obsolete) selection.
+     */
+    private Rectangle prepareForTextEdit() {
+
+        fSelection.stopCaretBlinking();
+        fTextComponent.stopBackgroundFormatting();
+        return fTextComponent.getBoundingRect(fSelection.getStart(), fSelection.getEnd());
+    }
+
+    private void doClear() {
+        TextRange selRange = fSelection.getSelectionRange();
+
+        if (selRange.start == selRange.limit)
+            return;
+
+        doUndoableTextChange(selRange.start, selRange.limit, null, new TextOffset(selRange.
+                            start), new TextOffset(selRange.start));
+    }
+
+    private void doCut() {
+        TextRange selRange = fSelection.getSelectionRange();
+
+        if (selRange.start == selRange.limit)
+            return;
+
+        fTextComponent.getClipboard().setContents(fText.extract(selRange.start, selRange.limit));
+        doUndoableTextChange(selRange.start, selRange.limit, null, new TextOffset(selRange.start), new TextOffset(selRange.start));
+
+        fListener.textStateChanged(TextPanelEvent.CLIPBOARD_CHANGED);
+    }
+
+    private void doPaste() {
+        TextRange selRange = fSelection.getSelectionRange();
+        MConstText clipText = fTextComponent.getClipboard().getContents(AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+        if (clipText != null) {
+            doUndoableTextChange(selRange.start, selRange.limit, clipText,
+                                new TextOffset(selRange.start + clipText.length()),
+                                new TextOffset(selRange.start + clipText.length()));
+        }
+        else {
+            fListener.textStateChanged(TextPanelEvent.CLIPBOARD_CHANGED);
+        }
+    }
+
+    private void doUndoableReplace(TextReplacement replacement) {
+
+        doUndoableTextChange(replacement.getStart(),
+                             replacement.getLimit(),
+                             replacement.getText(),
+                             replacement.getSelectionStart(),
+                             replacement.getSelectionLimit());
+    }
+
+    /**
+     * Only TypingInteractor and TextCommand should call this!
+     */
+    void doReplaceText(int start,
+                       int limit,
+                       MConstText newText,
+                       TextOffset newSelStart,
+                       TextOffset newSelEnd) {
+
+        int textLength;
+
+        fText.resetDamagedRange();
+
+        Rectangle oldSelRect = prepareForTextEdit();
+
+        if (newText == null) {
+            textLength = 0;
+            fText.remove(start, limit);
+        }
+        else {
+            textLength = newText.length();
+            fText.replace(start, limit, newText, 0, textLength);
+        }
+        fSelection.setSelectionRange(newSelStart, newSelEnd, newSelStart);
+        reformatAndDrawText(fSelection.getStart(),
+                            fSelection.getEnd(),
+                            oldSelRect);
+    }
+
+    /**
+     * Only the typing interactor should call this!
+     */
+    void doReplaceSelectedText(char ch, AttributeMap charStyle) {
+
+        int start = fSelection.getStart().fOffset;
+        int limit = fSelection.getEnd().fOffset;
+        TextOffset newOffset = new TextOffset(start + 1);
+        doReplaceText(start, limit, ch, charStyle, newOffset, newOffset);
+    }
+
+    private void doReplaceText(int start,
+                               int limit,
+                               char ch,
+                               AttributeMap charStyle,
+                               TextOffset newSelStart,
+                               TextOffset newSelEnd) {
+
+        fText.resetDamagedRange();
+
+        Rectangle oldSelRect = prepareForTextEdit();
+
+        fText.replace(start, limit, ch, charStyle);
+
+        fSelection.setSelectionRange(newSelStart, newSelEnd, newSelStart);
+        reformatAndDrawText(fSelection.getStart(),
+                            fSelection.getEnd(),
+                            oldSelRect);
+    }
+
+    private void doStyleChange(Behavior.EventType event, Object what) {
+
+        TextRange selRange = fSelection.getSelectionRange();
+        boolean character = (event == Behavior.CHARACTER_STYLE_MOD);
+
+        if (selRange.start != selRange.limit || !character) {
+            doUndoableStyleChange(what, character);
+        }
+        else {
+            TypingInteractor interactor =
+                new TypingInteractor(fTextComponent, 
+                                     fSelection,
+                                     fSavedTypingStyle,
+                                     this,
+                                     fCommandLog,
+                                     fListener);
+
+            interactor.addToOwner(fTextComponent);
+            interactor.textControlEventOccurred(event, what);
+        }
+    }
+
+    /**
+     * Only text commands should call this method!
+     */
+    void doModifyStyles(int start,
+                        int limit,
+                        StyleModifier modifier,
+                        boolean character,
+                        TextOffset newSelStart,
+                        TextOffset newSelEnd) {
+
+        fText.resetDamagedRange();
+
+        Rectangle oldSelRect = prepareForTextEdit();
+
+        if (character) {
+            fText.modifyCharacterStyles(start, limit, modifier);
+        }
+        else {
+            fText.modifyParagraphStyles(start, limit, modifier);
+        }
+
+        fSelection.setSelectionRange(newSelStart, newSelEnd, newSelStart);
+        reformatAndDrawText(newSelStart,
+                            newSelEnd,
+                            oldSelRect);
+    }
+
+    private void doUndoableStyleChange(Object what,
+                                       boolean character) {
+
+        TextOffset selStart = fSelection.getStart();
+        TextOffset selEnd = fSelection.getEnd();
+
+        MText oldText = fText.extractWritable(selStart.fOffset, selEnd.fOffset);
+        StyleChangeCommand command = new StyleChangeCommand(
+                this, oldText, selStart, selEnd, (StyleModifier) what, character);
+
+        fCommandLog.addAndDo(command);
+
+        fListener.textStateChanged(TextPanelEvent.SELECTION_STYLES_CHANGED);
+    }
+
+    private void doUndoableTextChange(int start,
+                                      int limit,
+                                      MConstText newText,
+                                      TextOffset newSelStart,
+                                      TextOffset newSelEnd) {
+
+        TextChangeCommand command = new TextChangeCommand(this, fText.extractWritable(start, limit),
+                                newText, start, fSelection.getStart(), fSelection.getEnd(),
+                                newSelStart, newSelEnd);
+
+        fCommandLog.addAndDo(command);
+    }
+
+    public boolean canUndo() {
+
+        boolean canUndo = false;
+
+        if (fTypingInteractor != null) {
+            canUndo = fTypingInteractor.hasPendingCommand();
+        }
+
+        if (!canUndo) {
+            canUndo = fCommandLog.canUndo();
+        }
+
+        return canUndo;
+    }
+
+    public boolean canRedo() {
+
+        return fCommandLog.canRedo();
+    }
+
+    public boolean isModified() {
+
+        if (fTypingInteractor != null) {
+            if (fTypingInteractor.hasPendingCommand()) {
+                return true;
+            }
+        }
+        return fCommandLog.isModified();
+    }
+
+    public int getCommandLogSize() {
+
+        return fCommandLog.getLogSize();
+    }
+
+    public AttributeMap getInsertionPointStyle() {
+
+        if (fTypingInteractor != null) {
+            return fTypingInteractor.getTypingStyle();
+        }
+
+        if (fSavedTypingStyle != null) {
+            return fSavedTypingStyle;
+        }
+        
+        TextRange range = fSelection.getSelectionRange();
+        return typingStyleAt(fText, range.start, range.limit);
+    }
+    
+    public boolean keyPressed(KeyEvent e) {
+
+        boolean handled = true;
+        if (TypingInteractor.handledByTypingInteractor(e)) {
+            TypingInteractor interactor = new TypingInteractor(fTextComponent,
+                                                               fSelection,
+                                                               fSavedTypingStyle,
+                                                               this,
+                                                               fCommandLog,
+                                                               fListener);
+
+            interactor.addToOwner(fTextComponent);
+            interactor.keyPressed(e);
+        }
+        else {
+            handled = super.keyPressed(e);
+            checkSavedTypingStyle();
+        }
+        
+        return handled;
+    }
+
+    public boolean keyTyped(KeyEvent e) {
+        
+        boolean handled = true;
+        if (TypingInteractor.handledByTypingInteractor(e)) {
+            TypingInteractor interactor = new TypingInteractor(fTextComponent, 
+                                                               fSelection,
+                                                               fSavedTypingStyle,
+                                                               this,
+                                                               fCommandLog,
+                                                               fListener);
+
+            interactor.addToOwner(fTextComponent);
+            interactor.keyTyped(e);
+        }
+        else {
+            handled = super.keyTyped(e);
+            checkSavedTypingStyle();
+        }
+        
+        return handled;
+    }
+
+    public boolean mouseReleased(MouseEvent e) {
+        
+        boolean result = super.mouseReleased(e);
+        checkSavedTypingStyle();
+        return result;
+    }
+    
+    private void reformatAndDrawText(TextOffset selStart,
+                                     TextOffset selLimit,
+                                     Rectangle oldSelRect)
+    {
+        if (!fSelection.enabled()) {
+            selStart = selLimit = null;
+        }
+
+        int reformatStart = fText.damagedRangeStart();
+        int reformatLength = fText.damagedRangeLimit() - reformatStart;
+
+        if (reformatStart != Integer.MAX_VALUE) {
+            fTextComponent.reformatAndDrawText(reformatStart,
+                                               reformatLength,
+                                               selStart,
+                                               selLimit,
+                                               oldSelRect,
+                                               fSelection.getHighlightColor());
+        }
+
+        fSelection.scrollToShowSelection();
+        
+        // sometimes this should send SELECTION_STYLES_CHANGED
+        fListener.textStateChanged(TextPanelEvent.TEXT_CHANGED);
+
+        fSelection.restartCaretBlinking(true);
+    }
+
+    /**
+     * Only TypingInteractor should call this.
+     */
+    void setTypingInteractor(TypingInteractor interactor) {
+        fTypingInteractor = interactor;
+    }
+
+    /**
+     * Only TypingInteractor should call this.
+     */
+    void setSavedTypingStyle(AttributeMap style, int insPt) {
+    
+        fSavedTypingStyle = style;
+        fSavedInsPt = insPt;
+    }
+    
+    private void checkSavedTypingStyle() {
+    
+        if (fSavedTypingStyle != null) {
+            int selStart = fSelection.getStart().fOffset;
+            int selLimit = fSelection.getEnd().fOffset;
+            if (selStart != fSavedInsPt || selStart != selLimit) {
+                fSavedTypingStyle = null;
+            }
+        }            
+    }
+    
+    /**
+     * Return the style appropriate for typing on the given selection
+     * range.
+     */
+    public static AttributeMap typingStyleAt(MConstText text, int start, int limit) {
+
+        if (start < limit) {
+            return text.characterStyleAt(start);
+        }
+        else if (start > 0) {
+            return text.characterStyleAt(start - 1);
+        }
+        else {
+            return text.characterStyleAt(0);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextPanel.java b/src/com/ibm/richtext/textpanel/TextPanel.java
new file mode 100755
index 0000000..73f14be
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextPanel.java
@@ -0,0 +1,543 @@
+/*
+ * @(#)$RCSfile: TextPanel.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:48 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Graphics;
+import java.awt.Panel;
+import java.awt.Scrollbar;
+
+import java.awt.datatransfer.Clipboard;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+
+/**
+ * TextPanel is an implementation of MTextPanel in an AWT Panel.
+ * @see MTextPanel
+ */
+public final class TextPanel extends Panel implements MTextPanel {
+
+    private ATextPanelImpl fImpl;
+    
+    /**
+     * Return a TextPanelSettings instance with all settings set
+     * to the default values.  Clients can modify this object;
+     * modifications will not affect the default values.
+     * @return a TextPanelSettings instance set to default values
+     * @see TextPanelSettings
+     */
+    public static TextPanelSettings getDefaultSettings() {
+
+        return ATextPanelImpl.getDefaultSettings();
+    }
+
+    /**
+     * Create a new TextPanel with the default settings.
+     * @param initialText the text document.  If null document text is empty.
+     * @param clipboard the clipboard to use for cut, copy, and paste
+     *  operations.  If null this panel will use a private clipboard.
+     */
+    public TextPanel(MConstText initialText,
+                     Clipboard clipboard) {
+
+        this(ATextPanelImpl.fgDefaultSettings, initialText, clipboard);
+    }
+
+    /**
+     * Create a new TextPanel.
+     * @param settings the settings for this TextPanel
+     * @param initialText the text document.  If null document text is empty.
+     * @param clipboard the clipboard to use for cut, copy, and paste
+     *  operations.  If null this panel will use a private clipboard.
+     * @see TextPanelSettings
+     */
+    public TextPanel(TextPanelSettings settings,
+                     MConstText initialText,
+                     Clipboard clipboard) {
+
+        Scrollbar horzSb = null;
+        Scrollbar vertSb = null;
+        
+        if (settings.getScrollable()) {
+
+            setLayout(new ScrollBarLayout());
+
+            boolean scrollBarsVisible = settings.getScrollBarsVisible();
+
+            if (scrollBarsVisible) {
+                horzSb = new Scrollbar(Scrollbar.HORIZONTAL);
+                vertSb = new Scrollbar(Scrollbar.VERTICAL);
+                add("South", horzSb);
+                add("East", vertSb);
+            }
+        }
+        else {
+            setLayout(new BorderLayout());
+        }
+
+        fImpl = new ATextPanelImpl(new RunStrategy(),
+                                   settings,
+                                   initialText,
+                                   clipboard,
+                                   this,
+                                   horzSb,
+                                   vertSb);
+                                   
+        final FakeComponent textComponent = fImpl.getTextComponent();
+        
+        Component textHost = new Component() {
+            {
+                textComponent.setHost(this);
+            }
+            public void addNotify() {
+                super.addNotify();
+                textComponent.addNotify();
+            }
+            public void paint(Graphics g) {
+                textComponent.paint(g);
+            }
+        };
+        
+        add("Center", textHost);
+
+        textHost.requestFocus();
+    }
+
+    /**
+     * Add the given TextPanelListener to the listeners which will
+     * receive update notifications from this TextPanel.
+     * @param listener the listener to add
+     */
+    public void addListener(TextPanelListener listener) {
+
+        fImpl.addListener(listener);
+    }
+
+    /**
+     * Remove the given TextPanelListener from the listeners which will
+     * receive update notifications from this TextPanel.
+     * @param listener the listener to remove
+     */
+    public void removeListener(TextPanelListener listener) {
+
+        fImpl.removeListener(listener);
+    }
+
+//============
+// Text Access
+//============
+
+    /**
+     * Set the document to <tt>newText</tt>.  This operation
+     * modifies the text in the TextPanel.  It does not modify or adopt
+     * <tt>newText</tt>.  This method sets the selection an insertion point at
+     * the end of the text.
+     * @param newText the text which will replace the current text.
+     */
+    public void setText(MConstText newText) {
+
+        fImpl.setText(newText);
+    }
+
+    /**
+     * Append the given text to the end of the document.  Equivalent to
+     * <tt>insert(newText, getTextLength())</tt>.
+     * @param newText the text to append to the document
+     */
+    public void append(MConstText newText) {
+
+        fImpl.append(newText);
+    }
+
+    /**
+     * Insert the given text into the document at the given position.
+     * Equivalent to
+     * <tt>replaceRange(newText, position, position)</tt>.
+     * @param newText the text to insert into the document.
+     * @param position the position in the document where the
+     *     text will be inserted
+     */
+    public void insert(MConstText newText, int position) {
+
+        fImpl.insert(newText, position);
+    }
+
+    /**
+     * Replace the given range with <tt>newText</tt>.  After this
+     * operation the selection range is an insertion point at the
+     * end of the new text.
+     * @param newText the text with which to replace the range
+     * @param start the beginning of the range to replace
+     * @param end the end of the range to replace
+     */
+    public void replaceRange(MConstText newText, int start, int end) {
+
+        fImpl.replaceRange(newText, start, end);
+    }
+
+    /**
+     * Return the length of the text document in the TextPanel.
+     * @return the length of the text document in the TextPanel
+     */
+    public int getTextLength() {
+
+        return fImpl.getTextLength();
+    }
+
+    /**
+     * Return the text document in the TextPanel.
+     * @return the text document in the TextPanel.
+     */
+    public MConstText getText() {
+
+        return fImpl.getText();
+    }
+
+//============
+// Selection Access
+//============
+
+    /**
+     * Return the offset of the start of the selection.
+     */
+    public int getSelectionStart() {
+
+        return fImpl.getSelectionStart();
+    }
+
+    /**
+     * Return the offset of the end of the selection.
+     */
+    public int getSelectionEnd() {
+
+        return fImpl.getSelectionEnd();
+    }
+
+    /**
+     * Set the beginning of the selection range.  This is
+     * equivalent to <tt>select(selectionStart, getSelectionEnd())</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionStart(int selectionStart) {
+
+        fImpl.setSelectionStart(selectionStart);
+    }
+
+    /**
+     * Set the end of the selection range.  This is
+     * equivalent to <tt>select(getSelectionStart(), selectionEnd)</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionEnd(int selectionEnd) {
+
+        fImpl.setSelectionEnd(selectionEnd);
+    }
+
+    /**
+     * Set the selection range to an insertion point at the given
+     * offset.  This is equivalent to
+     * <tt>select(position, position)</tt>.
+     * @param position the offset of the new insertion point
+     */
+    public void setCaretPosition(int position) {
+
+        fImpl.setCaretPosition(position);
+    }
+
+    /**
+     * Set the selection range to the given range.  The range start
+     * is pinned between 0 and the text length;  the range end is pinned
+     * between the range start and the end of the text.  These semantics
+     * are identical to those of <tt>java.awt.TextComponent</tt>.
+     * This method has no effect if the text is not selectable.
+     * @param selectionStart the beginning of the selection range
+     * @param selectionEnd the end of the selection range
+     */
+    public void select(int selectionStart, int selectionEnd) {
+
+        fImpl.select(selectionStart, selectionEnd);
+    }
+
+    /**
+     * Select all of the text in the document.  This method has no effect if
+     * the text is not selectable.
+     */
+    public void selectAll() {
+
+        fImpl.selectAll();
+    }
+
+
+//============
+// Format Width
+//============
+
+    /**
+     * Return the total format width, in pixels.  The format width is the
+     * width to which text is wrapped.
+     * @return the format width
+     */
+    public int getFormatWidth() {
+
+        return fImpl.getFormatWidth();
+    }
+    
+    /**
+     * Return true if the paragraph at the given offset is left-to-right.
+     * @param offset an offset in the text
+     * @return true if the paragraph at the given offset is left-to-right
+     */
+    public boolean paragraphIsLeftToRight(int offset) {
+        
+        return fImpl.paragraphIsLeftToRight(offset);
+    }
+
+    /**
+     * Return true if there is a change which can be undone.
+     * @return true if there is a change which can be undone.
+     */
+    public boolean canUndo() {
+
+        return fImpl.canUndo();
+    }
+
+    /**
+     * Return true if there is a change which can be redone.
+     * @return true if there is a change which can be redone.
+     */
+    public boolean canRedo() {
+
+        return fImpl.canRedo();
+    }
+
+    /**
+     * Return true if the clipboard contains contents which could be
+     * transfered into the text.
+     * @return true if the clipboard has text content.
+     */
+    public boolean clipboardNotEmpty() {
+
+        return fImpl.clipboardNotEmpty();
+    }
+
+    /**
+     * Return an AttributeMap of keys with default values.  The default
+     * values are used when displaying text for values which are not
+     * specified in the text.
+     * @return an AttributeMap of default key-value pairs
+     */
+    public AttributeMap getDefaultValues() {
+
+        return fImpl.getDefaultValues();
+    }
+
+    /**
+     * This method inspects the character style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have different 
+     * values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see MTextPanel#MULTIPLE_VALUES
+     */
+    public Object getCharacterStyleOverSelection(Object key) {
+        
+        return fImpl.getCharacterStyleOverSelection(key);
+    }
+
+    /**
+     * This method inspects the paragraph style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have 
+     * different values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see MTextPanel#MULTIPLE_VALUES
+     */
+    public Object getParagraphStyleOverSelection(Object key) {
+        
+        return fImpl.getParagraphStyleOverSelection(key);
+    }
+
+    /**
+     * Remove the selected text from the document and place it
+     * on the clipboard.  This method has no effect if the text
+     * is not editable, or if no text is selected.
+     */
+    public void cut() {
+        fImpl.cut();
+    }
+
+    /**
+     * Place the selected text on the clipboard.  This method has
+     * no effect if no text is selected.
+     */
+    public void copy() {
+        fImpl.copy();
+    }
+
+    /**
+     * Replace the currently selected text with the text on the clipboard.
+     * This method has no effect if the text is not editable, or if no
+     * text is on the clipboard.
+     */
+    public void paste() {
+        fImpl.paste();
+    }
+
+    /**
+     * Remove selected text from the document, without altering the clipboard.
+     * This method has no effect if the
+     * text is not editable.
+     */
+    public void clear() {
+        fImpl.clear();
+    }
+
+    /**
+     * Undo the most recent text change.  This method has no effect if
+     * there is no change to undo.
+     */
+    public void undo() {
+        fImpl.undo();
+    }
+
+    /**
+     * Redo the most recent text change.  This method has no effect if
+     * there is no change to redo.
+     */
+    public void redo() {
+        fImpl.redo();
+    }
+
+    /**
+     * Return the number of commands the command log can hold.
+     * @return the number of commands the command log can hold
+     */
+    public int getCommandLogSize() {
+
+        return fImpl.getCommandLogSize();
+    }
+
+    /**
+     * Set the number of commands the command log can hold.  All
+     * redoable commands are removed when this method is called.
+     * @param size the number of commands kept in the command log
+     */
+    public void setCommandLogSize(int size) {
+        fImpl.setCommandLogSize(size);
+    }
+
+    /**
+     * Remove all commands from the command log.
+     */
+    public void clearCommandLog() {
+        fImpl.clearCommandLog();
+    }
+
+    /**
+     * Modify the character styles on the selected characters.  If no characters
+     * are selected, modify the typing style.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyCharacterStyleOnSelection(StyleModifier modifier) {
+        fImpl.modifyCharacterStyleOnSelection(modifier);
+    }
+
+    /**
+     * Modify the paragraph styles in paragraphs containing selected characters, or
+     * the paragraph containing the insertion point.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyParagraphStyleOnSelection(StyleModifier modifier) {
+        fImpl.modifyParagraphStyleOnSelection(modifier);
+    }
+
+    /**
+     * Return the KeyRemap used to process key events.
+     * @return the key remap used to process key events
+     * @see #setKeyRemap
+     */
+    public KeyRemap getKeyRemap() {
+
+        return fImpl.getKeyRemap();
+    }
+
+    /**
+     * Use the given KeyRemap to map key events to characters.
+     * Only key
+     * events are affected by the remap;  other text entering the
+     * control (via the clipboard, for example) is not affected
+     * by the KeyRemap.
+     * <p>
+     * Do not pass <tt>null</tt> to this method to leave key
+     * events unmapped.  Instead, use <tt>KeyRemap.getIdentityRemap()</tt>
+     * @param remap the KeyRemap to use for mapping key events to characters
+     * @exception java.lang.NullPointerException if parameter is null
+     * @see KeyRemap
+     */
+    public void setKeyRemap(KeyRemap remap) {
+
+        fImpl.setKeyRemap(remap);
+    }
+
+    /**
+     * Return the modification flag of the current text change.
+     * @see #setModified
+     */
+    public boolean isModified() {
+
+        return fImpl.isModified();
+    }
+
+    /**
+     * Set the modification flag of the current text change.
+     */
+    public void setModified(boolean modified) {
+        
+        fImpl.setModified(modified);
+    }
+
+    /**
+     * This method is for KeyEventForwarder's use only!
+     */
+    ATextPanelImpl getImpl() {
+        
+        return fImpl;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextPanelEvent.java b/src/com/ibm/richtext/textpanel/TextPanelEvent.java
new file mode 100755
index 0000000..ecd6618
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextPanelEvent.java
@@ -0,0 +1,157 @@
+/*
+ * @(#)$RCSfile: TextPanelEvent.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.util.EventObject;
+
+/**
+ * TextPanelEvent is generated by an MTextPanel to notify listeners
+ * of changes.  To receive TextPanelEvents from an MTextPanel, clients
+ * must implement TextPanelListener and add themselves to the MTextPanel's
+ * list of listeners.
+ * <p>
+ * Some event types are special cases of others.  This is intentional - it
+ * allows notifications to be sent less often in certain common cases.  For
+ * example, a change in the selection range generates a SELECTION_RANGE_CHANGED 
+ * event.  This is a very common occurrance, and if many clients listen for this
+ * event, there may be a significant performance penalty.  By
+ * listening for a more specialized event (such as SELECTION_EMPTY_CHANGED), clients
+ * can reduce the number of notifications sent.
+ * 
+ * @see MTextPanel
+ * @see TextPanelListener
+ */
+public final class TextPanelEvent extends EventObject {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    /**
+     * The lower bound of TextPanelEvent ID's.
+     */
+    public static final int TEXT_PANEL_FIRST = 11;
+
+    /**
+     * Events of this type indicate a change in the selection range.
+     * This occurs quite often.  Most clients do not need to be 
+     * notified every time the selection range changes.
+     */
+    public static final int SELECTION_RANGE_CHANGED = 11;
+    
+    /**
+     * Events of this type are sent when the selection range becomes
+     * 0-length after not being 0-length, or vice versa.  This event
+     * is a special case of SELECTION_RANGE_CHANGED.
+     */
+    public static final int SELECTION_EMPTY_CHANGED = 12;
+    
+    /**
+     * Events of this type indicate that the text in the TextPanel changed.
+     * This type of event occurs often.
+     */
+    public static final int TEXT_CHANGED = 13;
+    
+    /**
+     * Events of this type are sent when the styles in the current
+     * selection change.
+     */
+    public static final int SELECTION_STYLES_CHANGED = 14;
+     
+    /**
+     * Events of this type are sent when the undo/redo state changes.
+     */
+    public static final int UNDO_STATE_CHANGED = 15;
+    
+    /**
+     * Events of this type are sent when the clipboard state changes.
+     */
+    public static final int CLIPBOARD_CHANGED = 16;
+    
+    /**
+     * Events of this type are sent when 
+     * the wrap width of the text changes.
+     */
+    public static final int FORMAT_WIDTH_CHANGED = 17;
+
+    /**
+     * Events of this type are sent when the key remap changes.
+     */
+    public static final int KEYREMAP_CHANGED = 18;
+
+    /**
+     * The upper bound of TextPanelEvent ID's.
+     */
+    public static final int TEXT_PANEL_LAST = 18;
+
+    private int fId;
+
+    /**
+     * Create a new TextPanelEvent.
+     * @param source the MTextPanel which generated the event
+     * @param id the ID for this event.  Must be within
+     * [TEXT_PANEL_FIRST, TEXT_PANEL_LAST].
+     */
+    TextPanelEvent(MTextPanel source, int id) {
+
+        super(source);
+        if (id < TEXT_PANEL_FIRST || id > TEXT_PANEL_LAST) {
+            throw new IllegalArgumentException("id out of range");
+        }
+        fId = id;
+    }
+
+    /**
+     * Return the event ID for this event.  Event ID's are
+     * one of the class constants.
+     * @return the event ID for this event
+     */
+    public int getID() {
+
+        return fId;
+    }
+    
+    public String toString() {
+        
+        String desc = null;
+        
+        switch(fId) {
+            case SELECTION_RANGE_CHANGED:
+                desc = "SELECTION_RANGE_CHANGED";
+                break;
+            case SELECTION_EMPTY_CHANGED:
+                desc = "SELECTION_EMPTY_CHANGED";
+                break;
+            case TEXT_CHANGED:
+                desc = "TEXT_CHANGED";
+                break;
+            case SELECTION_STYLES_CHANGED:
+                desc = "SELECTION_STYLES_CHANGED";
+                break;
+            case UNDO_STATE_CHANGED:
+                desc = "UNDO_STATE_CHANGED";
+                break;
+            case CLIPBOARD_CHANGED:
+                desc = "CLIPBOARD_CHANGED";
+                break;
+            case FORMAT_WIDTH_CHANGED:
+                desc = "FORMAT_WIDTH_CHANGED";
+                break;
+            case KEYREMAP_CHANGED:
+                desc = "KEYREMAP_CHANGED";
+                break;
+        }
+        return "[TextPanelEvent:"+desc+"]";
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextPanelListener.java b/src/com/ibm/richtext/textpanel/TextPanelListener.java
new file mode 100755
index 0000000..23e0700
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextPanelListener.java
@@ -0,0 +1,42 @@
+/*
+ * @(#)$RCSfile: TextPanelListener.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+/**
+ * This interface is implemented by classes which
+ * receive change notifications from an MTextPanel.
+ * @see MTextPanel
+ * @see TextPanelEvent
+ */
+public interface TextPanelListener {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Notify listener of an MTextPanel change.
+     * @param event a TextPanelEvent indicating what happened
+     */
+    public void textEventOccurred(TextPanelEvent event);
+    
+    /**
+     * Return true if listener needs to be notified of 
+     * the given event type.  This allows a text panel to avoid
+     * sending events to uninterested parties.
+     * @param type an event ID from TextPanelEvent
+     * @return true if this listener needs to be notified of
+     * events of the given type
+     */
+    public boolean respondsToEventType(int type);
+}
diff --git a/src/com/ibm/richtext/textpanel/TextPanelSettings.java b/src/com/ibm/richtext/textpanel/TextPanelSettings.java
new file mode 100755
index 0000000..1bd6945
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextPanelSettings.java
@@ -0,0 +1,283 @@
+/*
+ * @(#)$RCSfile: TextPanelSettings.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:48 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Color;
+import java.io.Serializable;
+import java.util.Hashtable;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.styledtext.StandardTabRuler;
+
+/**
+ * This class contains settings used when constructing an MTextPanel.
+ * The settings controled by this class include:
+ * <ul>
+ * <li>whether the text in the MTextPanel can be scrolled</li>
+ * <li>whether scroll bars in the MTextPanel are visible</li>
+ * <li>whether the text in the MTextPanel can be selected</li>
+ * <li>whether the text in the MTextPanel can be edited</li>
+ * <li>whether lines of text wrap to the MTextPanel's width, or
+ * only end at paragraph separators</li>
+ * <li>the default values for unspecified styles</li>
+ * </ul>
+ * Some settings are dependent on others.  Scroll bars are visible
+ * only if the text is scrollable.  Also, text which is not editable
+ * if it is not selectable.
+ * <p>
+ *
+ * @see MTextPanel
+ */
+public final class TextPanelSettings implements Cloneable, Serializable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    private static final AttributeMap DEFAULTS;
+    static {
+        final Float floatZero = new Float(0.0f);
+
+        Hashtable defaults = new Hashtable();
+        defaults.put(TextAttribute.FAMILY, "Serif");
+        defaults.put(TextAttribute.WEIGHT, new Float(1.0f));
+        defaults.put(TextAttribute.POSTURE, floatZero);
+        defaults.put(TextAttribute.SIZE, new Float(18.0f));
+        defaults.put(TextAttribute.SUPERSCRIPT, new Integer(0));
+        defaults.put(TextAttribute.FOREGROUND, Color.black);
+        defaults.put(TextAttribute.UNDERLINE, new Integer(-1));
+        defaults.put(TextAttribute.STRIKETHROUGH, Boolean.FALSE);
+
+        defaults.put(TextAttribute.EXTRA_LINE_SPACING, floatZero);
+        defaults.put(TextAttribute.FIRST_LINE_INDENT, floatZero);
+        defaults.put(TextAttribute.MIN_LINE_SPACING, floatZero);
+        defaults.put(TextAttribute.LINE_FLUSH, TextAttribute.FLUSH_LEADING);
+        defaults.put(TextAttribute.LEADING_MARGIN, floatZero);
+        defaults.put(TextAttribute.TRAILING_MARGIN, floatZero);
+        defaults.put(TextAttribute.TAB_RULER, new StandardTabRuler());
+
+        DEFAULTS = new AttributeMap(defaults);
+    }
+    
+    private boolean fScrollable = true;
+    private boolean fScrollBarsVisible = true;
+    private boolean fSelectable = true;
+    private boolean fEditable = true;
+    private boolean fWraps = true;
+    private AttributeMap fDefaultValues = DEFAULTS;
+    
+    /**
+     * Create a TextPanelSettings instance with all settings
+     * set to true.
+     */
+    public TextPanelSettings() {
+    }
+
+    /**
+     * Return a new TextPanelSettings instance with the
+     * same settings as this.
+     * @return a new TextPanelSettings instance
+     */
+    public Object clone() {
+
+        TextPanelSettings rhs = new TextPanelSettings();
+
+        rhs.fScrollable = fScrollable;
+        rhs.fScrollBarsVisible = fScrollBarsVisible;
+        rhs.fSelectable = fSelectable;
+        rhs.fEditable = fEditable;
+        rhs.fWraps = fWraps;
+        rhs.fDefaultValues = fDefaultValues;
+        
+        return rhs;
+    }
+
+    /**
+     * Return the scrollable setting, which determines whether text
+     * in an MTextPanel can be scrolled.
+     * @return the scrollable setting
+     */
+    public boolean getScrollable() {
+
+        return fScrollable;
+    }
+
+    /**
+     * Set the scrollable setting.
+     * @param scrollable the scrollable setting.  If false,
+     * the scrollBarsVisible setting is also set to false.
+     */
+    public void setScrollable(boolean scrollable) {
+
+        fScrollable = scrollable;
+        fScrollBarsVisible &= scrollable;
+    }
+
+    /**
+     * Return the scrollBarsVisible setting, which determines whether
+     * scroll bars in an MTextPanel are visible.
+     * @return the scrollBarsVisible setting
+     */
+    public boolean getScrollBarsVisible() {
+
+        return fScrollBarsVisible;
+    }
+
+    /**
+     * Set the scrollBarsVisible setting.
+     * @param vis the scrollBarsVisible setting.  If true,
+     * the scrollable setting is also set to true.
+     */
+    public void setScrollBarsVisible(boolean vis) {
+
+        fScrollBarsVisible = vis;
+        fScrollable |= vis;
+    }
+
+    /**
+     * Return the selectable setting, which determines whether
+     * text in an MTextPanel can be selected.
+     * @return the selectable setting
+     */
+    public boolean getSelectable() {
+
+        return fSelectable;
+    }
+
+    /**
+     * Set the selectable setting.
+     * @param selectable the selectable setting.  If false,
+     * the editable setting is also set to false.
+     */
+    public void setSelectable(boolean selectable) {
+
+        fSelectable = selectable;
+        fEditable &= selectable;
+    }
+
+    /**
+     * Return the editable setting, which determines whether
+     * text in an MTextPanel can be edited.
+     * @return the editable setting
+     */
+    public boolean getEditable() {
+
+        return fEditable;
+    }
+
+    /**
+     * Set the editable setting.
+     * @param selectable the selectable setting.  If true,
+     * the selectable setting is also set to true.
+     */
+    public void setEditable(boolean editable) {
+
+        fEditable = editable;
+        fSelectable |= editable;
+    }
+
+    /**
+     * Return the wraps setting, which determines whether
+     * lines of text wrap to the length of the MTextPanel,
+     * or only at paragraph separators.
+     * @return the wraps setting
+     */
+    public boolean getWraps() {
+
+        return fWraps;
+    }
+
+    /**
+     * Set the wraps setting.
+     * @param wraps the wraps setting
+     */
+    public void setWraps(boolean wraps) {
+
+        fWraps = wraps;
+    }
+    
+    /**
+     * Return the AttributeMap of default values for certain keys.
+     * When a key in this AttributeMap is not specified, its value
+     * is taken from this AttributeMap.
+     * @return the AttributeMap of default values
+     * @see MTextPanel#getDefaultValues
+     */
+    public AttributeMap getDefaultValues() {
+    
+        return fDefaultValues;
+    }
+    
+    /**
+     * Add the key-value pairs in the given AttributeMap to the
+     * default values.  If a key does not appear in the given
+     * AttributeMap, its value in the default value map is
+     * unchanged.
+     * @param map an AttributeMap containing new default values
+     */
+    public void addDefaultValues(AttributeMap map) {
+    
+        fDefaultValues = fDefaultValues.addAttributes(map);
+    }
+    
+    /**
+     * Compare this to another Object.  This is equal
+     * to another Object if the other Object is a
+     * TextPanelSettings instance with the same
+     * settings as this one.
+     * @param rhs the Object to compare to
+     */
+    public boolean equals(Object rhs) {
+
+        if (rhs == this) {
+            return true;
+        }
+
+        if (rhs == null) {
+            return false;
+        }
+
+        TextPanelSettings other;
+        try {
+            other = (TextPanelSettings) rhs;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+        
+        return other.fScrollable == this.fScrollable &&
+               other.fScrollBarsVisible == this.fScrollBarsVisible &&
+               other.fSelectable == this.fSelectable &&
+               other.fEditable == this.fEditable &&
+               other.fWraps == this.fWraps &&
+               other.fDefaultValues.equals(this.fDefaultValues);
+    }
+
+    /**
+     * Return the hash code for this Object.
+     * @return the hash code for this Object
+     */
+    public int hashCode() {
+
+        int code = fDefaultValues.hashCode();
+        code = code*2 + (fScrollable? 1:0);
+        code = code*2 + (fScrollBarsVisible? 1:0);
+        code = code*2 + (fSelectable? 1:0);
+        code = code*2 + (fEditable? 1:0);
+        code = code*2 + (fWraps? 1:0);
+
+        return code;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textpanel/TextRange.java b/src/com/ibm/richtext/textpanel/TextRange.java
new file mode 100755
index 0000000..f1c7168
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextRange.java
@@ -0,0 +1,47 @@
+/*
+ * @(#)$RCSfile: TextRange.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+/**
+* A <TT>TextRange</TT> represents a range of text bounded by a
+* start (inclusive), and a limit (exclusive).  [start,limit)
+*/
+final class TextRange
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /** the start of the range */
+    public int start = 0;
+    /** the end of the range */
+    public int limit = 0;
+
+    /**
+    * Create a text range from two ints.
+    * @param start the start of the run
+    * @param limit the end of the run
+    */
+    public TextRange(int start, int limit)
+    {
+        this.start = start;
+        this.limit = limit;
+    }
+
+    /**
+    * Create a text range of 0, 0.
+    */
+    public TextRange() {
+        this.start = this.limit = 0;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextReplacement.java b/src/com/ibm/richtext/textpanel/TextReplacement.java
new file mode 100755
index 0000000..8ed3bbb
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextReplacement.java
@@ -0,0 +1,70 @@
+/*
+ * @(#)$RCSfile: TextReplacement.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.textformat.TextOffset;
+
+/**
+ * This class is used to pass a REPLACE command to Behaviors.
+ */
+final class TextReplacement {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private int fStart;
+    private int fLimit;
+    private MConstText fText;
+    private TextOffset fSelStart;
+    private TextOffset fSelLimit;
+
+    TextReplacement(int start,
+                    int limit,
+                    MConstText text,
+                    TextOffset selStart,
+                    TextOffset selLimit) {
+
+        fStart = start;
+        fLimit = limit;
+        fText = text;
+        fSelStart = selStart;
+        fSelLimit = selLimit;
+    }
+
+    int getStart() {
+
+        return fStart;
+    }
+
+    int getLimit() {
+
+        return fLimit;
+    }
+
+    MConstText getText() {
+
+        return fText;
+    }
+
+    TextOffset getSelectionStart() {
+
+        return fSelStart;
+    }
+
+    TextOffset getSelectionLimit() {
+
+        return fSelLimit;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextSelection.java b/src/com/ibm/richtext/textpanel/TextSelection.java
new file mode 100755
index 0000000..44a7a38
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextSelection.java
@@ -0,0 +1,926 @@
+/*
+ * @(#)$RCSfile: TextSelection.java,v $ $Revision: 1.2 $ $Date: 2001/10/30 02:42:48 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+    7/1/97 - caret blinks
+
+    7/3/97 - fAnchor is no longer restricted to the start or end of the selection. {jbr}
+            Also, removed fVisible - it was identical to enabled().
+*/
+
+package com.ibm.richtext.textpanel;
+
+import java.awt.Graphics;
+import java.awt.Color;
+import java.awt.Rectangle;
+import java.awt.Point;
+
+import java.text.BreakIterator;
+import java.text.CharacterIterator;
+
+import java.awt.event.MouseEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.FocusEvent;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.textformat.TextOffset;
+
+import com.ibm.richtext.textformat.MFormatter;
+
+class TextSelection extends Behavior implements Runnable {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    static final Color          HIGHLIGHTCOLOR = Color.pink;
+
+    private TextComponent       fTextComponent;
+    private MConstText          fText;
+    private TextOffset          fStart;
+    private TextOffset          fLimit;
+    private TextOffset          fAnchor;
+    private TextOffset          fUpDownAnchor = null;
+    private BreakIterator       fBoundaries = null;
+    private Color               fHighlightColor = HIGHLIGHTCOLOR;
+    private PanelEventBroadcaster   fListener;
+    private RunStrategy         fRunStrategy;
+    private boolean             fMouseDown = false;
+    private boolean             fHandlingKeyOrCommand = false;
+    
+    private boolean fCaretShouldBlink;
+    private boolean fCaretIsVisible;
+    private int fCaretCount;
+
+    // formerly in base class
+    private boolean fEnabled;
+
+    private MouseEvent fPendingMouseEvent = null;
+
+    private static final int kCaretInterval = 500;
+
+    public void run() {
+
+        final Runnable blinkCaret = new Runnable() {
+            public void run() {
+                fCaretIsVisible = !fCaretIsVisible;
+                Graphics g = fTextComponent.getGraphics();
+                if (g != null) {
+                    //System.out.println("caretIsVisible: " + fCaretIsVisible);
+                    drawSelection(g, fCaretIsVisible);
+                }
+                else {
+                    // Not sure what else to do:
+                    fCaretShouldBlink = false;
+                }
+            }
+        };
+        
+        // blink caret
+        while (true) {
+
+            synchronized(this) {
+
+                while (!fCaretShouldBlink) {
+                    try {
+                        wait();
+                    }
+                    catch(InterruptedException e) {
+                        System.out.println("Caught InterruptedException in caret thread.");
+                    }
+                }
+
+                ++fCaretCount;
+
+                if (fCaretCount % 2 == 0) {
+                    fRunStrategy.doIt(blinkCaret);
+                }
+            }
+
+            try {
+                Thread.sleep(kCaretInterval);
+            }
+            catch(InterruptedException e) {
+            }
+        }
+    }
+
+
+
+    public TextSelection(TextComponent textComponent,
+                         PanelEventBroadcaster listener,
+                         RunStrategy runStrategy) {
+                            
+        fTextComponent = textComponent;
+        fText = textComponent.getText();
+        fListener = listener;
+        fRunStrategy = runStrategy;
+        
+        fStart = new TextOffset();
+        fLimit = new TextOffset();
+        fAnchor = new TextOffset();
+        fMouseDown = false;
+
+        fCaretCount = 0;
+        fCaretIsVisible = true;
+        fCaretShouldBlink = false;
+        setEnabled(false);
+
+        Thread caretThread = new Thread(this);
+        caretThread.setDaemon(true);
+        caretThread.start();
+    }
+
+    boolean enabled() {
+
+        return fEnabled;
+    }
+
+    private void setEnabled(boolean enabled) {
+
+        fEnabled = enabled;
+    }
+
+    public boolean textControlEventOccurred(Behavior.EventType event, Object what) {
+
+        boolean result;
+        fHandlingKeyOrCommand = true;
+        
+        if (event == Behavior.SELECT) {
+            select((TextRange) what);
+            result = true;
+        }
+        else if (event == Behavior.COPY) {
+            fTextComponent.getClipboard().setContents(fText.extract(fStart.fOffset, fLimit.fOffset));
+            fListener.textStateChanged(TextPanelEvent.CLIPBOARD_CHANGED);
+            result = true;
+        }
+        else {
+            result = false;
+        }
+        
+        fHandlingKeyOrCommand = false;
+        return result;
+    }
+
+    protected void advanceToNextBoundary(TextOffset offset) {
+    
+        // If there's no boundaries object, or if position at the end of the
+        // document, return the offset unchanged
+        if (fBoundaries == null) {
+            return;
+        }
+        
+        int position = offset.fOffset;
+        
+        if (position >= fText.length()) {
+            return;
+        }
+
+        // If position is at a boundary and offset is before position,
+        // leave it unchanged.  Otherwise move to next boundary.
+        int nextPos = fBoundaries.following(position);
+        if (fBoundaries.previous() == position && 
+                offset.fPlacement==offset.BEFORE_OFFSET) {
+            return;
+        }
+        
+        offset.setOffset(nextPos, TextOffset.AFTER_OFFSET);
+    }
+
+    protected void advanceToPreviousBoundary(TextOffset offset) {
+    
+        advanceToPreviousBoundary(offset, false);
+    }
+    
+    private void advanceToPreviousBoundary(TextOffset offset, boolean alwaysMove) {
+        // if there's no boundaries object, or if we're sitting at the beginning
+        // of the document, return the offset unchanged
+        if (fBoundaries == null) {
+            return;
+        }
+        
+        int position = offset.fOffset;
+
+        if (position == 0) {
+            return;
+        }
+        
+        // If position is at a boundary, leave it unchanged.  Otherwise
+        // move to previous boundary.
+        if (position == fText.length()) {
+            fBoundaries.last();
+        }
+        else {
+            fBoundaries.following(position);
+        }
+        
+        int prevPos = fBoundaries.previous();
+        
+        if (prevPos == position) {
+            if (!alwaysMove && offset.fPlacement==offset.AFTER_OFFSET) {
+                return;
+            }
+
+            prevPos = fBoundaries.previous();
+        }
+                
+        // and finally update the real offset with this new position we've found
+        offset.setOffset(prevPos, TextOffset.AFTER_OFFSET);
+    }
+
+    private void doArrowKey(KeyEvent e, int key) {
+
+        // when there's a selection range, the left and up arrow keys place an
+        // insertion point at the beginning of the range, and the right and down
+        // keys place an insertion point at the end of the range (unless the shift
+        // key is down, of course)
+
+        if (!fStart.equals(fLimit) && !e.isShiftDown()) {
+            if (key == KeyEvent.VK_LEFT || key == KeyEvent.VK_UP)
+                setSelRangeAndDraw(fStart, fStart, fStart);
+            else
+                setSelRangeAndDraw(fLimit, fLimit, fLimit);
+        }
+        else {
+            if (!fAnchor.equals(fStart))
+                fAnchor.assign(fLimit);
+
+            TextOffset  liveEnd = (fStart.equals(fAnchor)) ? fLimit : fStart;
+            TextOffset  newPos = new TextOffset();
+
+            // if the control key is down, the left and right arrow keys move by whole
+            // word in the appropriate direction (we use a line break object so that we're
+            // not treating spaces and punctuation as words)
+            if (e.isControlDown() && (key == KeyEvent.VK_LEFT || key == KeyEvent.VK_RIGHT)) {
+                fUpDownAnchor = null;
+                fBoundaries = BreakIterator.getLineInstance();
+                fBoundaries.setText(fText.createCharacterIterator());
+
+                newPos.assign(liveEnd);
+                if (key == KeyEvent.VK_RIGHT)
+                    advanceToNextBoundary(newPos);
+                else
+                    advanceToPreviousBoundary(newPos, true);
+            }
+
+            // if we get down to here, this is a plain-vanilla insertion-point move,
+            // or the shift key is down and we're extending or shortening the selection
+            else {
+
+                // fUpDownAnchor is used to keep track of the horizontal position
+                // across a run of up or down arrow keys (this prevents accumulated
+                // error from destroying our horizontal position)
+                if (key == KeyEvent.VK_LEFT || key == KeyEvent.VK_RIGHT)
+                    fUpDownAnchor = null;
+                else {
+                    if (fUpDownAnchor == null) {
+                        fUpDownAnchor = new TextOffset(liveEnd);
+                    }
+                }
+
+                short   direction = MFormatter.eRight;  // just to have a default...
+
+                switch (key) {
+                    case KeyEvent.VK_UP: direction = MFormatter.eUp; break;
+                    case KeyEvent.VK_DOWN: direction = MFormatter.eDown; break;
+                    case KeyEvent.VK_LEFT: direction = MFormatter.eLeft; break;
+                    case KeyEvent.VK_RIGHT: direction = MFormatter.eRight; break;
+                }
+
+                // use the formatter to determine the actual effect of the arrow key
+                fTextComponent.findNewInsertionOffset(newPos, fUpDownAnchor, liveEnd, direction);
+            }
+
+            // if the shift key is down, the selection range is from the anchor point
+            // the site of the last insertion point or the beginning point of the last
+            // selection drag operation) to the newly-calculated position; if the
+            // shift key is down, the newly-calculated position is the insertion point position
+            if (!e.isShiftDown())
+                setSelRangeAndDraw(newPos, newPos, newPos);
+            else {
+                if (newPos.lessThan(fAnchor))
+                    setSelRangeAndDraw(newPos, fAnchor, fAnchor);
+                else
+                    setSelRangeAndDraw(fAnchor, newPos, fAnchor);
+            }
+        }
+
+        scrollToShowSelectionEnd();
+        fBoundaries = null;
+    }
+
+    private void doEndKey(KeyEvent e) {
+        // ctrl-end moves the insertsion point to the end of the document,
+        // ctrl-shift-end extends the selection so that it ends at the end
+        // of the document
+
+        TextOffset activeEnd, anchor;
+
+        if (fAnchor.equals(fStart)) {
+            activeEnd = new TextOffset(fStart);
+            anchor = new TextOffset(fLimit);
+        }
+        else {
+            activeEnd = new TextOffset(fLimit);
+            anchor = new TextOffset(fStart);
+        }
+
+        if (e.isControlDown()) {
+            TextOffset end = new TextOffset(fText.length(), TextOffset.BEFORE_OFFSET);
+
+            if (e.isShiftDown())
+                setSelRangeAndDraw(anchor, end, anchor);
+            else
+                setSelRangeAndDraw(end, end, end);
+        }
+
+        // end moves the insertion point to the end of the line containing
+        // the end of the current selection
+        // shift-end extends the selection to the end of the line containing
+        // the end of the current selection
+
+        else {
+
+            int oldOffset = activeEnd.fOffset;
+
+            activeEnd.fOffset = fTextComponent.lineRangeLimit(fTextComponent.lineContaining(activeEnd));
+            activeEnd.fPlacement = TextOffset.BEFORE_OFFSET;
+
+            if (fText.paragraphLimit(oldOffset) == activeEnd.fOffset &&
+                    activeEnd.fOffset != fText.length() && activeEnd.fOffset > oldOffset) {
+                activeEnd.fOffset--;
+                activeEnd.fPlacement = TextOffset.AFTER_OFFSET;
+            }
+
+            if (!e.isShiftDown())
+                setSelRangeAndDraw(activeEnd, activeEnd, activeEnd);
+            else {
+                if (activeEnd.lessThan(anchor))
+                    setSelRangeAndDraw(activeEnd, anchor, anchor);
+                else
+                    setSelRangeAndDraw(anchor, activeEnd, anchor);
+            }
+        }
+
+        scrollToShowSelectionEnd();
+        fBoundaries = null;
+        fUpDownAnchor = null;
+    }
+
+    private void doHomeKey(KeyEvent e) {
+        // ctrl-home moves the insertion point to the beginning of the document,
+        // ctrl-shift-home extends the selection so that it begins at the beginning
+        // of the document
+
+        TextOffset activeEnd, anchor;
+
+        if (fAnchor.equals(fStart)) {
+            activeEnd = new TextOffset(fStart);
+            anchor = new TextOffset(fLimit);
+        }
+        else {
+            activeEnd = new TextOffset(fLimit);
+            anchor = new TextOffset(fStart);
+        }
+
+        if (e.isControlDown()) {
+
+            TextOffset start = new TextOffset(0, TextOffset.AFTER_OFFSET);
+            if (e.isShiftDown())
+                setSelRangeAndDraw(start, anchor, anchor);
+            else
+                setSelRangeAndDraw(start, start, start);
+        }
+
+        // home moves the insertion point to the beginning of the line containing
+        // the beginning of the current selection
+        // shift-home extends the selection to the beginning of the line containing
+        // the beginning of the current selection
+
+        else {
+
+            activeEnd.fOffset = fTextComponent.lineRangeLow(fTextComponent.lineContaining(activeEnd));
+            activeEnd.fPlacement = TextOffset.AFTER_OFFSET;
+
+            if (!e.isShiftDown())
+                setSelRangeAndDraw(activeEnd, activeEnd, activeEnd);
+            else {
+                if (activeEnd.lessThan(anchor))
+                    setSelRangeAndDraw(activeEnd, anchor, anchor);
+                else
+                    setSelRangeAndDraw(anchor, activeEnd, anchor);
+            }
+        }
+
+        scrollToShowSelectionEnd();
+        fBoundaries = null;
+        fUpDownAnchor = null;
+    }
+
+    /** draws or erases the current selection
+    * Draws or erases the highlight region or insertion caret for the current selection
+    * range.
+    * @param g The graphics environment to draw into
+    * @param visible If true, draw the selection; if false, erase it
+    */
+    protected void drawSelection(Graphics g, boolean visible) {
+        drawSelectionRange(g, fStart, fLimit, visible);
+    }
+
+    /** draws or erases a selection highlight at the specfied positions
+    * Draws or erases a selection highlight or insertion caret corresponding to
+    * the specified selecion range
+    * @param g The graphics environment to draw into.  If null, this method does nothing.
+    * @param start The beginning of the range to highlight
+    * @param limit The end of the range to highlight
+    * @param vsible If true, draw; if false, erase
+    */
+    protected void drawSelectionRange(  Graphics    g,
+                                        TextOffset  start,
+                                        TextOffset  limit,
+                                        boolean     visible) {
+        if (g == null) {
+            return;
+        }
+        Rectangle   selBounds = fTextComponent.getBoundingRect(start, limit);
+
+        selBounds.width = Math.max(1, selBounds.width);
+        selBounds.height = Math.max(1, selBounds.height);
+
+        fTextComponent.drawText(g, selBounds, visible, start, limit, fHighlightColor);
+    }
+
+    protected TextOffset getAnchor() {
+        return fAnchor;
+    }
+
+    public TextOffset getEnd() {
+        return fLimit;
+    }
+
+    public Color getHighlightColor() {
+        return fHighlightColor;
+    }
+
+    public TextOffset getStart() {
+        return fStart;
+    }
+
+    public TextRange getSelectionRange() {
+
+        return new TextRange(fStart.fOffset, fLimit.fOffset);
+    }
+
+    public boolean focusGained(FocusEvent e) {
+
+        setEnabled(true);
+        drawSelection(fTextComponent.getGraphics(), true);
+
+        restartCaretBlinking(true);
+        if (fPendingMouseEvent != null) {
+            mousePressed(fPendingMouseEvent);
+            fPendingMouseEvent = null;
+        }
+        fListener.textStateChanged(TextPanelEvent.CLIPBOARD_CHANGED);
+ 
+        return true;
+    }
+
+    public boolean focusLost(FocusEvent e) {
+        stopCaretBlinking();
+        setEnabled(false);
+        drawSelection(fTextComponent.getGraphics(), false);
+        return true;
+    }
+
+    /**
+     * Return true if the given key event can affect the selection
+     * range.
+     */
+    public static boolean keyAffectsSelection(KeyEvent e) {
+
+        if (e.getID() != e.KEY_PRESSED) {
+            return false;
+        }
+
+        int key = e.getKeyCode();
+
+        switch (key) {
+            case KeyEvent.VK_HOME:
+            case KeyEvent.VK_END:
+            case KeyEvent.VK_LEFT:
+            case KeyEvent.VK_RIGHT:
+            case KeyEvent.VK_UP:
+            case KeyEvent.VK_DOWN:
+                return true;
+
+            default:
+                return false;
+        }
+    }
+
+    public boolean keyPressed(KeyEvent e) {
+
+        fHandlingKeyOrCommand = true;
+        int key = e.getKeyCode();
+        boolean result = true;
+        
+        switch (key) {
+            case KeyEvent.VK_HOME:
+                doHomeKey(e);
+                break;
+                
+            case KeyEvent.VK_END:
+                doEndKey(e);
+                break;
+
+            case KeyEvent.VK_LEFT:
+            case KeyEvent.VK_RIGHT:
+            case KeyEvent.VK_UP:
+            case KeyEvent.VK_DOWN:
+                doArrowKey(e, key);
+                break;
+                
+            default:
+                fUpDownAnchor = null;
+                result = false;
+                break;
+        }
+        
+        fHandlingKeyOrCommand = false;
+        return result;
+    }
+
+    public boolean mousePressed(MouseEvent e) {
+
+        if (!enabled()) {
+            fPendingMouseEvent = e;
+            fTextComponent.requestFocus();
+            return false;
+        }
+
+        if (fMouseDown)
+            throw new Error("fMouseDown is out of sync with mouse in TextSelection.");
+
+        fMouseDown = true;
+        stopCaretBlinking();
+
+        int x = e.getX(), y = e.getY();
+        boolean wasZeroLength = rangeIsZeroLength(fStart, fLimit, fAnchor);
+        
+        TextOffset current = fTextComponent.pointToTextOffset(null, x, y, null, true);
+        TextOffset anchorStart = new TextOffset();
+        TextOffset anchorEnd = new TextOffset();
+
+        fUpDownAnchor = null;
+
+        // if we're not extending the selection...
+        if (!e.isShiftDown()) {
+
+            // if there are multiple clicks, create the appopriate type of BreakIterator
+            // object for finding text boundaries (single clicks don't use a BreakIterator
+            // object)
+            if (e.getClickCount() == 2)
+                fBoundaries = BreakIterator.getWordInstance();
+            else if (e.getClickCount() == 3)
+                fBoundaries = BreakIterator.getSentenceInstance();
+            else
+                fBoundaries = null;
+
+            // if we're using a BreakIterator object, use it to find the nearest boundaries
+            // on either side of the mouse-click position and make them our anchor range
+            if (fBoundaries != null)
+                fBoundaries.setText(fText.createCharacterIterator());
+
+            anchorStart.assign(current);
+            advanceToPreviousBoundary(anchorStart);
+            anchorEnd.assign(current);
+            advanceToNextBoundary(anchorEnd);
+        }
+
+        // if we _are_ extending the selection, determine our anchor range as follows:
+        // fAnchor is the start of the anchor range;
+        // the next boundary (after fAnchor) is the limit of the anchor range.
+
+        else {
+
+            if (fBoundaries != null)
+                fBoundaries.setText(fText.createCharacterIterator());
+
+            anchorStart.assign(fAnchor);
+            anchorEnd.assign(anchorStart);
+
+            advanceToNextBoundary(anchorEnd);
+        }
+
+        SelectionDragInteractor interactor = new SelectionDragInteractor(this, 
+                                                                         fTextComponent,
+                                                                         fRunStrategy,
+                                                                         anchorStart,
+                                                                         anchorEnd,
+                                                                         current,
+                                                                         x,
+                                                                         y,
+                                                                         wasZeroLength);
+
+        interactor.addToOwner(fTextComponent);
+
+        return true;
+    }
+
+    public boolean mouseReleased(MouseEvent e) {
+
+        fPendingMouseEvent = null;
+        return false;
+    }
+
+    // drag interactor calls this
+    void mouseReleased(boolean zeroLengthChange) {
+
+        fMouseDown = false;
+
+        if (zeroLengthChange) {
+            fListener.textStateChanged(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+        }
+        fListener.textStateChanged(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        fListener.textStateChanged(TextPanelEvent.SELECTION_STYLES_CHANGED);
+
+        // if caret drawing during mouse drags is supressed, draw caret now.
+
+        restartCaretBlinking(true);
+    }
+
+
+    /** draws the selection
+    * Provided, of course, that the selection is visible, the adorner is enabled,
+    * and we're calling it to adorn the view it actually belongs to
+    * @param g The graphics environment to draw into
+    * @return true if we actually drew
+    */
+    public boolean paint(Graphics g, Rectangle drawRect) {
+        // don't draw anything unless we're enabled and the selection is visible
+        if (!enabled())
+            return false;
+
+        fTextComponent.drawText(g, drawRect, true, fStart, fLimit, fHighlightColor);
+        return true;
+    }
+
+    /** scrolls the view to reveal the live end of the selection
+    * (i.e., the end that moves if you use the arrow keys with the shift key down)
+    */
+    public void scrollToShowSelection() {
+        Rectangle   selRect = fTextComponent.getBoundingRect(fStart, fLimit);
+
+        fTextComponent.scrollToShow(selRect);
+    }
+
+    /** scrolls the view to reveal the live end of the selection
+    * (i.e., the end that moves if you use the arrow keys with the shift key down)
+    */
+    public void scrollToShowSelectionEnd() {
+        TextOffset  liveEnd;
+        // variable not used Point[]     points;
+        Rectangle   caret;
+
+        if (fAnchor.equals(fStart))
+            liveEnd = fLimit;
+        else
+            liveEnd = fStart;
+
+        //points = fTextComponent.textOffsetToPoint(liveEnd);
+        //caret = new Rectangle(points[0]);
+        //caret = caret.union(new Rectangle(points[1]));
+        caret = fTextComponent.getCaretRect(liveEnd);
+        fTextComponent.scrollToShow(caret);
+    }
+
+    private void select(TextRange range) {
+        // variable not used int textLength = fTextComponent.getText().length();
+
+        TextOffset start = new TextOffset(range.start);
+
+        stopCaretBlinking();
+        setSelRangeAndDraw(start, new TextOffset(range.limit), start);
+        restartCaretBlinking(true);
+    }
+
+    public void setHighlightColor(Color newColor) {
+        fHighlightColor = newColor;
+        if (enabled())
+            drawSelection(fTextComponent.getGraphics(), true);
+    }
+    
+    static boolean rangeIsZeroLength(TextOffset start, TextOffset limit, TextOffset anchor) {
+        
+        return start.fOffset == limit.fOffset && anchor.fOffset == limit.fOffset;
+    }
+
+    // sigh... look out for aliasing
+    public void setSelectionRange(TextOffset newStart, TextOffset newLimit, TextOffset newAnchor) {
+
+        boolean zeroLengthChange = rangeIsZeroLength(newStart, newLimit, newAnchor) != 
+                                    rangeIsZeroLength(fStart, fLimit, fAnchor);
+        TextOffset tempNewAnchor;
+        if (newAnchor == fStart || newAnchor == fLimit) {
+            tempNewAnchor = new TextOffset(newAnchor); // clone in case of aliasing
+        }
+        else {
+            tempNewAnchor = newAnchor;
+        }
+
+        // DEBUG {jbr}
+
+        if (newStart.greaterThan(newLimit))
+            throw new IllegalArgumentException("Selection limit is before selection start.");
+
+        if (newLimit != fStart) {
+            fStart.assign(newStart);
+            fLimit.assign(newLimit);
+        }
+        else {
+            fLimit.assign(newLimit);
+            fStart.assign(newStart);
+        }
+
+        fAnchor.assign(tempNewAnchor);
+
+        if (fStart.fOffset == fLimit.fOffset) {
+            fStart.fPlacement = fAnchor.fPlacement;
+            fLimit.fPlacement = fAnchor.fPlacement;
+        }
+        
+        if (!fMouseDown) {
+            if (zeroLengthChange) {
+                fListener.textStateChanged(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+            }
+            fListener.textStateChanged(TextPanelEvent.SELECTION_RANGE_CHANGED);
+            if (fHandlingKeyOrCommand) {
+                fListener.textStateChanged(TextPanelEvent.SELECTION_STYLES_CHANGED);
+            }
+        }
+    }
+
+    private void sortOffsets(TextOffset offsets[]) {
+
+        int i, j;
+
+        for (i=0; i < offsets.length-1; i++) {
+            for (j=i+1; j < offsets.length; j++) {
+                if (offsets[j].lessThan(offsets[i])) {
+                    TextOffset temp = offsets[j];
+                    offsets[j] = offsets[i];
+                    offsets[i] = temp;
+                }
+            }
+        }
+
+        // DEBUG {jbr}
+        for (i=0; i < offsets.length-1; i++)
+            if (offsets[i].greaterThan(offsets[i+1]))
+                throw new Error("sortOffsets failed!");
+    }
+
+    private Rectangle getSelectionChangeRect(
+                                    TextOffset rangeStart, TextOffset rangeLimit,
+                                    TextOffset oldStart, TextOffset oldLimit,
+                                    TextOffset newStart, TextOffset newLimit,
+                                    boolean drawIfInsPoint) {
+
+        if (!rangeStart.equals(rangeLimit))
+            return fTextComponent.getBoundingRect(rangeStart, rangeLimit);
+
+        // here, rangeStart and rangeLimit are equal
+
+        if (rangeStart.equals(oldLimit)) {
+
+            // range start is OLD insertion point.  Redraw if caret is currently visible.
+
+            if (fCaretIsVisible)
+                return fTextComponent.getBoundingRect(rangeStart, rangeStart);
+        }
+        else if (rangeStart.equals(newLimit)) {
+
+            // range start is NEW insertion point.
+
+            if (drawIfInsPoint)
+                return fTextComponent.getBoundingRect(rangeStart, rangeStart);
+        }
+
+        return null;
+    }
+
+    private static boolean rectanglesOverlapVertically(Rectangle r1, Rectangle r2) {
+        
+        if (r1 == null || r2 == null) {
+            return false;
+        }
+        
+        return r1.y <= r2.y + r2.height || r2.y <= r1.y + r1.height;
+    }
+    
+    // Update to show new selection, redrawing as little as possible
+
+    private void updateSelectionDisplay(
+                            TextOffset oldStart, TextOffset oldLimit,
+                            TextOffset newStart, TextOffset newLimit, boolean drawIfInsPoint) {
+
+        //System.out.println("newStart:" + newStart + "; newLimit:" + newLimit);
+
+        TextOffset off[] = new TextOffset[4];
+
+        off[0] = oldStart;
+        off[1] = oldLimit;
+        off[2] = newStart;
+        off[3] = newLimit;
+
+        sortOffsets(off);
+
+        Rectangle r1 = getSelectionChangeRect(off[0], off[1], oldStart, oldLimit, newStart, newLimit, drawIfInsPoint);
+        Rectangle r2 = getSelectionChangeRect(off[2], off[3], oldStart, oldLimit, newStart, newLimit, drawIfInsPoint);
+
+        boolean drawSelection = drawIfInsPoint || !newStart.equals(newLimit);
+
+        if (rectanglesOverlapVertically(r1, r2)) {
+
+            fTextComponent.drawText(fTextComponent.getGraphics(), r1.union(r2), drawSelection, newStart, newLimit, fHighlightColor);
+        }
+        else {
+            if (r1 != null)
+                fTextComponent.drawText(fTextComponent.getGraphics(), r1, drawSelection, newStart, newLimit, fHighlightColor);
+            if (r2 != null)
+                fTextComponent.drawText(fTextComponent.getGraphics(), r2, drawSelection, newStart, newLimit, fHighlightColor);
+        }
+    }
+
+    public void setSelRangeAndDraw(TextOffset newStart, TextOffset newLimit, TextOffset newAnchor) {
+
+        // if the old and new selection ranges are the same, don't do anything
+        if (fStart.equals(newStart) && fLimit.equals(newLimit) && fAnchor.equals(newAnchor))
+            return;
+
+        if (enabled())
+            stopCaretBlinking();
+
+        // update the selection on screen if we're enabled and visible
+
+        TextOffset oldStart = new TextOffset(fStart), oldLimit = new TextOffset(fLimit);
+
+        setSelectionRange(newStart, newLimit, newAnchor);
+
+        if (enabled()) {
+
+                // To supress drawing a caret during a mouse drag, pass !fMouseDown instead of true:
+                updateSelectionDisplay(oldStart, oldLimit, fStart, fLimit, true);
+        }
+
+        if (!fMouseDown && enabled())
+            restartCaretBlinking(true);
+    }
+
+    public void stopCaretBlinking() {
+
+        synchronized(this) {
+            fCaretShouldBlink = false;
+        }
+    }
+
+/**
+* Resume blinking the caret, if the selection is an insertion point.
+* @param caretIsVisible true if the caret is displayed when this is called.
+* This method relies on the client to display (or not display) the caret.
+*/
+    public void restartCaretBlinking(boolean caretIsVisible) {
+
+        synchronized(this) {
+            fCaretShouldBlink = fStart.equals(fLimit);
+            fCaretCount = 0;
+            fCaretIsVisible = caretIsVisible;
+
+            if (fCaretShouldBlink) {
+                try {
+                    notify();
+                }
+                catch (IllegalMonitorStateException e) {
+                    System.out.println("Caught IllegalMonitorStateException: "+e);
+                }
+            }
+        }
+    }
+
+    public void removeFromOwner() {
+
+        stopCaretBlinking();
+        super.removeFromOwner();
+    }
+
+}
diff --git a/src/com/ibm/richtext/textpanel/ThaiKeyRemap.java b/src/com/ibm/richtext/textpanel/ThaiKeyRemap.java
new file mode 100755
index 0000000..5fc4be3
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/ThaiKeyRemap.java
@@ -0,0 +1,118 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2002, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/richtext/textpanel/ThaiKeyRemap.java,v $
+ * $Date: 2002/08/13 23:44:45 $
+ * $Revision: 1.2 $
+ *
+ *******************************************************************************
+ */
+package com.ibm.richtext.textpanel;
+
+final class ThaiKeyRemap extends KeyRemap {
+
+    public char remap(char c) {
+
+        switch (c) {
+            case '`': return '\u005f';
+            case '~': return '\u0025';
+            case '1': return '\u0e45';
+            case '!': return '\u002b';
+            case '2': return '\u002f';
+            case '@': return '\u0e51';
+            case '3': return '\u002d';
+            case '#': return '\u0e52';
+            case '4': return '\u0e20';
+            case '$': return '\u0e53';
+            case '5': return '\u0e16';
+            case '%': return '\u0e54';
+            case '6': return '\u0e38';
+            case '^': return '\u0e39';
+            case '7': return '\u0e36';
+            case '&': return '\u0e3f';
+            case '8': return '\u0e04';
+            case '*': return '\u0e55';
+            case '9': return '\u0e15';
+            case '(': return '\u0e56';
+            case '0': return '\u0e08';
+            case ')': return '\u0e57';
+            case '-': return '\u0e02';
+            case '_': return '\u0e58';
+            case '=': return '\u0e08';
+            case '+': return '\u0e59';
+            case 'q': return '\u0e46';
+            case 'Q': return '\u0e50';
+            case 'w': return '\u0e44';
+            case 'W': return '\u0022';
+            case 'e': return '\u0e33';
+            case 'E': return '\u0e0e';
+            case 'r': return '\u0e1e';
+            case 'R': return '\u0e11';
+            case 't': return '\u0e30';
+            case 'T': return '\u0e18';
+            case 'y': return '\u0e31';
+            case 'Y': return '\u0e4d';
+            case 'u': return '\u0e35';
+            case 'U': return '\u0e4a';
+            case 'i': return '\u0e23';
+            case 'I': return '\u0e13';
+            case 'o': return '\u0e19';
+            case 'O': return '\u0e2f';
+            case 'p': return '\u0e22';
+            case 'P': return '\u0e0d';
+            case '[': return '\u0e1a';
+            case '{': return '\u0e10';
+            case ']': return '\u0e25';
+            case '}': return '\u002c';
+            case '\\': return '\u0e03';
+            case '|': return '\u0e05';
+            case 'a': return '\u0e1f';
+            case 'A': return '\u0e24';
+            case 's': return '\u0e2b';
+            case 'S': return '\u0e06';
+            case 'd': return '\u0e01';
+            case 'D': return '\u0e0f';
+            case 'f': return '\u0e14';
+            case 'F': return '\u0e42';
+            case 'g': return '\u0e40';
+            case 'G': return '\u0e0c';
+            case 'h': return '\u0e49';
+            case 'H': return '\u0e47';
+            case 'j': return '\u0e48';
+            case 'J': return '\u0e4b';
+            case 'k': return '\u0e32';
+            case 'K': return '\u0e29';
+            case 'l': return '\u0e2a';
+            case 'L': return '\u0e28';
+            case ';': return '\u0e27';
+            case ':': return '\u0e0b';
+            case '\'': return '\u0e07';
+            case '\"': return '\u002e';
+            case 'z': return '\u0e1c';
+            case 'Z': return '\u0028';
+            case 'x': return '\u0e1b';
+            case 'X': return '\u0029';
+            case 'c': return '\u0e41';
+            case 'C': return '\u0e09';
+            case 'v': return '\u0e2d';
+            case 'V': return '\u0e2e';
+            case 'b': return '\u0e34';
+            case 'B': return '\u0e3a';
+            case 'n': return '\u0e37';
+            case 'N': return '\u0e4c';
+            case 'm': return '\u0e17';
+            case 'M': return '\u003f';
+            case ',': return '\u0e21';
+            case '<': return '\u0e12';
+            case '.': return '\u0e43';
+            case '>': return '\u0e2c';
+            case '/': return '\u0e1d';
+            case '?': return '\u0e26';
+        }
+
+        return c;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TransferableText.java b/src/com/ibm/richtext/textpanel/TransferableText.java
new file mode 100755
index 0000000..4081ac6
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TransferableText.java
@@ -0,0 +1,90 @@
+/*
+ * @(#)$RCSfile: TransferableText.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:51:23 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.io.ByteArrayInputStream;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+/**
+ * This class allows MConstText instances to be the contents
+ * of a Clipboard.  To store an MConstText on the clipboard,
+ * construct a TransferableText from the MConstText, and make
+ * the TransferableText the clipboard contents.
+ *
+ */
+/*
+ * Note:  this class inherits from StringSelection because of
+ * a bug in the 1.1.7 system clipboard implementation.  The
+ * system clipboard won't put text on the OS clipboard unless
+ * the content is a StringSelection.
+ */
+final class TransferableText extends StringSelection
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private MConstText fText;
+
+    private static String textToString(MConstText text) {
+        char[] chars = new char[text.length()];
+        text.extractChars(0, chars.length, chars, 0);
+        return new String(chars);
+    }
+
+    /**
+     * Create a TransferableText for the given text.
+     * @param text the text to go on the Clipboard.  The text is
+     *     adopted by this object.
+     */
+    public TransferableText(MConstText text) {
+
+        super(textToString(text));
+
+        fText = text;
+    }
+
+    public DataFlavor[] getTransferDataFlavors() {
+
+        DataFlavor[] flavors = super.getTransferDataFlavors();
+        DataFlavor[] result = new DataFlavor[flavors.length+1];
+        result[0] = MConstText.styledTextFlavor;
+        System.arraycopy(flavors, 0, result, 1, flavors.length);
+        return result;
+    }
+
+    public boolean isDataFlavorSupported(DataFlavor flavor) {
+
+        if (flavor.equals(MConstText.styledTextFlavor)) {
+            return true;
+        }
+        else {
+            return super.isDataFlavorSupported(flavor);
+        }
+    }
+
+    public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
+
+        if (flavor.equals(MConstText.styledTextFlavor)) {
+            return fText;
+        }
+        else {
+            return super.getTransferData(flavor);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TypingInteractor.java b/src/com/ibm/richtext/textpanel/TypingInteractor.java
new file mode 100755
index 0000000..1a07fe8
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TypingInteractor.java
@@ -0,0 +1,356 @@
+/*
+ * @(#)$RCSfile: TypingInteractor.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:48 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+    2/25/99 - Now processing characters from keyTyped method (not keyPressed).
+              This new way is input-method friendly on 1.2, and is generally
+              more correct.
+
+    7/7/97 - the mouseDidSomething methods used to remove the typing interactor.
+            This is definitely wrong, but maybe that made sense at one time.  Anyway,
+            now the mousePressed / mouseReleased methods remove the interactor;  the
+            others do nothing.
+*/
+
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.FocusEvent;
+
+import java.text.BreakIterator;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textformat.TextOffset;
+
+final class TypingInteractor extends Behavior {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private static final char BACKSPACE = 8;
+    private static final char TAB = '\t';
+    private static final char RETURN = '\r';
+    private static final char LINE_FEED = '\n';
+    private static final char PARAGRAPH_SEP = '\u2029';
+    
+    private TextComponent fTextComponent;
+    private TextSelection fSelection;
+    private AttributeMap fTypingStyle;
+    private MConstText fText;
+    private TextEditBehavior fParent;
+    private TextChangeCommand fCommand = null;
+    private SimpleCommandLog fCommandLog;
+    private PanelEventBroadcaster fListener;
+    private BreakIterator fCharBreak = null;
+    
+    /**
+     * Not all characters that come from the keyboard are handled
+     * as input.  For example, ctrl-c is not a typable character.
+     * This method determines whether a particular character from
+     * the keyboard will affect the text.
+     */
+    private static boolean isTypingInteractorChar(char ch) {
+
+        return ch >= ' ' || 
+               ch == LINE_FEED || 
+               ch == RETURN ||
+               ch == TAB || 
+               ch == BACKSPACE;
+    }
+    
+    /**
+     * This method determines whether a TypingInteractor should
+     * handle the given KeyEvent.
+     */
+    static boolean handledByTypingInteractor(KeyEvent event) {
+
+        final int id = event.getID();
+        
+        if (id == event.KEY_TYPED) {
+            return isTypingInteractorChar(event.getKeyChar());
+        }
+        else {
+            return (id == KeyEvent.KEY_PRESSED && 
+                    event.getKeyCode() == KeyEvent.VK_DELETE);
+        }
+    }
+
+    public TypingInteractor(TextComponent textComponent,
+                            TextSelection selection,
+                            AttributeMap typingStyle,
+                            TextEditBehavior parent,
+                            SimpleCommandLog commandLog,
+                            PanelEventBroadcaster listener) {
+                            
+        fTextComponent = textComponent;
+        fText = textComponent.getText();
+        fSelection = selection;
+        fTypingStyle = typingStyle;
+        fParent = parent;
+        fCommandLog = commandLog;
+        fListener = listener;
+
+        fParent.setTypingInteractor(this);
+    }
+
+    private void endInteraction() {
+
+        removeFromOwner();
+        postTextChangeCommand();
+
+        int selStart = fSelection.getStart().fOffset;
+        int selLimit = fSelection.getEnd().fOffset;
+        fParent.setSavedTypingStyle(selStart==selLimit? fTypingStyle : null, selStart);
+        
+        fParent.setTypingInteractor(null);
+    }
+
+    public boolean textControlEventOccurred(Behavior.EventType event, Object what) {
+
+        if (fCommand == null && event == Behavior.CHARACTER_STYLE_MOD) {
+
+            pickUpTypingStyle();
+            fTypingStyle = ((StyleModifier)what).modifyStyle(fTypingStyle);
+
+            fListener.textStateChanged(TextPanelEvent.SELECTION_STYLES_CHANGED);
+
+            return true;
+        }
+        else {
+            Behavior next = nextBehavior(); // save because removeFromOwner() will trash this
+
+            endInteraction();
+
+            if (next != null)
+                return next.textControlEventOccurred(event, what);
+            else
+                return false;
+        }
+    }
+
+    private void doBackspace() {
+
+        int selStart = fSelection.getStart().fOffset;
+        int selLimit = fSelection.getEnd().fOffset;
+
+        if (selStart == selLimit) {
+            if (selStart != 0) {
+                fTypingStyle = null;
+                pickUpTypingStyle();
+                makeTextChangeCommand();
+                if (selStart <= fCommand.affectedRangeStart()) {
+                    fCommand.prependToOldText(fText.extract(selStart - 1, selStart));
+                }
+                TextOffset insPt = new TextOffset(selStart - 1);
+                fParent.doReplaceText(selStart - 1, selStart, null, insPt, insPt);
+            }
+        }
+        else {
+            fTypingStyle = null;
+            makeTextChangeCommand();
+            TextOffset insPt = new TextOffset(selStart);
+            fParent.doReplaceText(selStart, selLimit, null, insPt, insPt);
+        }
+    }
+
+    private void doFwdDelete(boolean ignoreCharBreak) {
+
+        int selStart = fSelection.getStart().fOffset;
+        int selLimit = fSelection.getEnd().fOffset;
+
+        TextOffset insPt = new TextOffset(selStart);
+
+        if (selStart == selLimit) {
+            if (selStart != fText.length()) {
+                fTypingStyle = null;
+                makeTextChangeCommand();
+                int numChars;
+                if (ignoreCharBreak) {
+                    numChars = 1;
+                }
+                else {
+                    if (fCharBreak == null) {
+                        fCharBreak = BreakIterator.getCharacterInstance();
+                    }
+                    fCharBreak.setText(fText.createCharacterIterator());
+                    numChars = fCharBreak.following(selStart) - selStart;
+                }
+                fCommand.appendToOldText(fText.extract(selStart, selStart + numChars));
+                fParent.doReplaceText(selStart, selStart + numChars, null, insPt, insPt);
+            }
+        }
+        else {
+            fTypingStyle = null;
+            makeTextChangeCommand();
+            fParent.doReplaceText(selStart, selLimit, null, insPt, insPt);
+        }
+    }
+
+    private void doNormalKey(char ch) {
+
+        // Sigh - 1.1 reports enter key events as return chars, but
+        // 1.2 reports them as linefeeds.
+        if (ch == RETURN) {
+            ch = LINE_FEED;
+        }
+        pickUpTypingStyle();
+        makeTextChangeCommand();
+        fParent.doReplaceSelectedText(ch, fTypingStyle);
+    }
+
+    public boolean focusGained(FocusEvent e) {
+
+        // pass through, but stick around...
+        return super.focusGained(e);
+    }
+
+    public boolean focusLost(FocusEvent e) {
+
+        // pass through, but stick around...
+        return super.focusLost(e);
+    }
+
+    public boolean keyTyped(KeyEvent e) {
+
+        if (e.getKeyChar() == BACKSPACE) {
+            doBackspace();
+        }
+        else {
+            if (isTypingInteractorChar(e.getKeyChar())) {
+                KeyRemap remap = fParent.getKeyRemap();
+                doNormalKey(remap.remap(e));
+            }
+        }
+
+        return true;
+    }
+
+    public boolean keyPressed(KeyEvent e) {
+
+        int key = e.getKeyCode();
+        if (key == KeyEvent.VK_DELETE) {
+            doFwdDelete(e.isShiftDown());
+            return true;
+        }
+
+        Behavior next = nextBehavior();
+
+        if (TextSelection.keyAffectsSelection(e)) {
+
+            endInteraction();
+        }
+
+        return next.keyPressed(e);
+    }
+
+    public boolean keyReleased(KeyEvent e) {
+        return true;
+    }
+
+    private void makeTextChangeCommand() {
+        if (fCommand == null) {
+            TextOffset  selStart = fSelection.getStart();
+            TextOffset  selEnd = fSelection.getEnd();
+
+            MText writableText = new StyledText();
+            writableText.replace(0, 0, fText, selStart.fOffset, selEnd.fOffset);
+            fCommand = new TextChangeCommand(fParent,
+                                writableText,
+                                null, selStart.fOffset, selStart, selEnd,
+                                new TextOffset(), new TextOffset());
+
+            fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+    }
+
+    public boolean mouseDragged(MouseEvent e) {
+
+        return true;
+    }
+
+    public boolean mouseEntered(MouseEvent e) {
+
+        return true;
+    }
+
+    public boolean mouseExited(MouseEvent e) {
+
+        return true;
+    }
+
+    public boolean mouseMoved(MouseEvent e) {
+
+        return true;
+    }
+
+    public boolean mousePressed(MouseEvent e) {
+
+        Behavior next = nextBehavior(); // save because removeFromOwner() will trash this
+
+        endInteraction();
+
+        if (next != null)
+            return next.mousePressed(e);
+        else
+            return false;
+    }
+
+    public boolean mouseReleased(MouseEvent e) {
+
+        Behavior next = nextBehavior(); // save because removeFromOwner() will trash this
+
+        endInteraction();
+
+        if (next != null)
+            return next.mouseReleased(e);
+        else
+            return false;
+    }
+
+    private void pickUpTypingStyle() {
+        if (fTypingStyle == null) {
+            int selStart = fSelection.getStart().fOffset;
+            int selLimit = fSelection.getEnd().fOffset;
+            fTypingStyle = TextEditBehavior.typingStyleAt(fText, selStart, selLimit);
+        }
+    }
+
+    private void postTextChangeCommand() {
+        if (fCommand != null) {
+            TextOffset  selStart = fSelection.getStart();
+            TextOffset  selEnd = fSelection.getEnd();
+
+            fCommand.setNewText(fText.extract(fCommand.affectedRangeStart(), selStart.fOffset));
+            fCommand.setSelRangeAfter(selStart, selEnd);
+            fCommandLog.add(fCommand);
+        }
+    }
+
+    boolean hasPendingCommand() {
+
+        return fCommand != null;
+    }
+
+    AttributeMap getTypingStyle() {
+
+        pickUpTypingStyle();
+        return fTypingStyle;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/package.html b/src/com/ibm/richtext/textpanel/package.html
new file mode 100755
index 0000000..a6a1878
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/package.html
@@ -0,0 +1,7 @@
+<html>
+<body bgcolor="white">
+Provides components (for both AWT and Swing)
+in which styled text is displayed and edited, and
+related classes.
+</body>
+</html>
diff --git a/src/com/ibm/richtext/uiimpl/AboutText.java b/src/com/ibm/richtext/uiimpl/AboutText.java
new file mode 100755
index 0000000..cfb4d06
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/AboutText.java
@@ -0,0 +1,65 @@
+/*
+ * @(#)$RCSfile: AboutText.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:49 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.awt.Color;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+public final class AboutText {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final Color[] COLORS = {
+        Color.red, Color.blue, Color.white, Color.green
+    };
+    
+    public static MConstText getAboutText() {
+
+        String text = ResourceUtils.getResourceString(FrameResources.ABOUT_TEXT);
+        StyledText styledText = new StyledText(text, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+        int length = styledText.length();
+        int i=0;
+
+        for (int paragraphStart = 0, paragraphLimit;
+                    paragraphStart < length;
+                    paragraphStart = paragraphLimit) {
+
+            paragraphLimit = styledText.paragraphLimit(paragraphStart);
+            StyleModifier modifier = StyleModifier.createAddModifier(
+                                             TextAttribute.FOREGROUND,
+                                             COLORS[(i++)%COLORS.length]);
+            styledText.modifyCharacterStyles(paragraphStart,
+                                             paragraphLimit,
+                                             modifier);
+        }
+
+        StyleModifier modifier = StyleModifier.createAddModifier(
+                                            TextAttribute.LINE_FLUSH,
+                                            TextAttribute.FLUSH_CENTER);
+
+        styledText.modifyParagraphStyles(0, text.length(), modifier);
+
+        return styledText;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/BooleanStyleMenuItem.java b/src/com/ibm/richtext/uiimpl/BooleanStyleMenuItem.java
new file mode 100755
index 0000000..c246cdf
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/BooleanStyleMenuItem.java
@@ -0,0 +1,99 @@
+/*
+ * @(#)$RCSfile: BooleanStyleMenuItem.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:49 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.EventObject;
+
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public final class BooleanStyleMenuItem extends SingleCheckMenuItem {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private final Object fKey;
+    private final boolean fCharacter;
+
+    private final Object fOnValue;
+    
+    public BooleanStyleMenuItem(Object style,
+                                Object onValue,
+                                MenuData menuData,
+                                boolean character) {
+        
+        super(menuData);
+        if (onValue == null) {
+            throw new IllegalArgumentException("On value cannot be null");
+        }
+
+        fKey = style;
+        fCharacter = character;
+        
+        fOnValue = onValue;
+        fItem.addListener(new EventListener() {
+            public void eventOccurred(EventObject event) {
+                StyleModifier modifier;
+                MTextPanel panel = getTextPanel();
+                if (panel == null) {
+                    throw new Error("Menu item is enabled when panel is null!");
+                }
+                if (continuousAndCommand()) {
+                    AttributeSet set = new AttributeSet(fKey);
+                    modifier = StyleModifier.createRemoveModifier(set);
+                }
+                else {
+                    modifier = StyleModifier.createAddModifier(fKey, fOnValue);
+                }
+                
+                if (fCharacter == CHARACTER) {
+                    panel.modifyCharacterStyleOnSelection(modifier);
+                }
+                else {
+                    panel.modifyParagraphStyleOnSelection(modifier);
+                }
+            }
+        });
+    }
+    
+    private boolean continuousAndCommand() {
+        
+        MTextPanel panel = getTextPanel();
+
+        Object value = (fCharacter == CHARACTER)? 
+                            panel.getCharacterStyleOverSelection(fKey) :
+                            panel.getParagraphStyleOverSelection(fKey);
+        return fOnValue.equals(value);
+    }
+    
+    protected void setChecked() {
+        
+        fItem.setState(continuousAndCommand());
+    }
+    
+    public boolean respondsToEventType(int type) {
+        
+        return type == TextPanelEvent.SELECTION_STYLES_CHANGED;
+    }
+    
+    public final void textEventOccurred(TextPanelEvent event) {
+        
+        setChecked();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/ChoiceMenuItemSet.java b/src/com/ibm/richtext/uiimpl/ChoiceMenuItemSet.java
new file mode 100755
index 0000000..ec36a0e
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/ChoiceMenuItemSet.java
@@ -0,0 +1,96 @@
+/*
+ * @(#)$RCSfile: ChoiceMenuItemSet.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:49 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.EventObject;
+
+import java.util.Hashtable;
+
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public abstract class ChoiceMenuItemSet extends MenuItemSet {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private MItem[] fItems;
+    private Hashtable fItemToStyleMap;
+    
+    ChoiceMenuItemSet(Object[] values,
+                      MenuData[] menuData) {
+        
+        if (values.length != menuData.length) {
+            throw new IllegalArgumentException(
+                                "Values and names must have equal length");
+        }
+        
+        fItems = new MItem[menuData.length];
+        fItemToStyleMap = new Hashtable(menuData.length);
+        
+        EventListener listener = new EventListener() {
+            public void eventOccurred(EventObject event) {
+                handleValueSelected(fItemToStyleMap.get(event.getSource()));
+            }
+        };
+        
+        for (int i=0; i < menuData.length; i++) {
+            fItems[i] = MItem.createCheckboxItem(menuData[i]);
+            if (values[i] != null) {
+                fItemToStyleMap.put(fItems[i], values[i]);
+            }
+            fItems[i].addListener(listener);
+            fItems[i].setEnabled(false);
+        }
+    }
+    
+    protected abstract void handleValueSelected(Object item);
+    protected abstract Object getCurrentValue();
+    
+    protected final void setChecked() {
+        
+        Object value = getCurrentValue();
+        
+        for (int i=0; i < fItems.length; i++) {
+            Object itemVal = fItemToStyleMap.get(fItems[i]);
+            if (itemVal == null) {
+                fItems[i].setState(value == null);
+            }
+            else {
+                fItems[i].setState(itemVal.equals(value));
+            }
+        }
+    }
+
+    protected final void textPanelChanged() {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            for (int i=0; i < fItems.length; i++) {
+                fItems[i].setEnabled(false);
+                fItems[i].setState(false);
+            }
+        }
+        else {
+            for (int i=0; i < fItems.length; i++) {
+                fItems[i].setEnabled(true);
+                setChecked();
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/CommandMenuItem.java b/src/com/ibm/richtext/uiimpl/CommandMenuItem.java
new file mode 100755
index 0000000..dc89b85
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/CommandMenuItem.java
@@ -0,0 +1,195 @@
+/*
+ * @(#)$RCSfile: CommandMenuItem.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:52:32 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.EventObject;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public abstract class CommandMenuItem extends MenuItemSet {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private /*final*/ MItem fItem;
+    
+    protected abstract boolean isEnabled();
+    protected abstract void performAction();
+
+    protected CommandMenuItem(MenuData data) {
+        
+        this(data, false);
+    }
+    
+    protected CommandMenuItem(MenuData data, boolean enableByDefault) {
+        
+        fItem = MItem.createItem(data);
+        fItem.addListener(new EventListener() {
+            public void eventOccurred(EventObject event) {
+                performAction();
+            }
+        });
+        fItem.setEnabled(enableByDefault);
+    }
+    
+    protected void textPanelChanged() {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            fItem.setEnabled(false);
+        }
+        else {
+            fItem.setEnabled(isEnabled());
+        }
+    }
+    
+    public final void textEventOccurred(TextPanelEvent event) {
+        
+        fItem.setEnabled(isEnabled());
+    }
+    
+    public static final class CutCopyClear extends CommandMenuItem {
+        
+        public static final int CUT = 0;
+        public static final int COPY = 1;
+        public static final int CLEAR = 2;
+
+        private final int fKind;
+        
+        public CutCopyClear(MenuData menuData, int kind) {
+            
+            super(menuData);
+            if (kind != CUT && kind != COPY && kind != CLEAR) {
+                throw new IllegalArgumentException("Invalid menu kind");
+            }
+            fKind = kind;
+        }
+        
+        protected boolean isEnabled() {
+            
+            MTextPanel panel = getTextPanel();
+            return panel.getSelectionStart() != panel.getSelectionEnd();
+        }
+        
+        public boolean respondsToEventType(int type) {
+            
+            return type == TextPanelEvent.SELECTION_EMPTY_CHANGED;
+        }
+        
+        protected void performAction() {
+            
+            MTextPanel panel = getTextPanel();
+            switch (fKind) {
+                case CUT:
+                    panel.cut();
+                    break;
+                case COPY:
+                    panel.copy();
+                    break;
+                case CLEAR:
+                    panel.clear();
+                    break;
+            }
+        }
+    }
+    
+    public static final class UndoRedo extends CommandMenuItem {
+        
+        public static final boolean UNDO = true;
+        public static final boolean REDO = false;
+        
+        private boolean fKind;
+        
+        public UndoRedo(MenuData menuData, boolean kind) {
+            
+            super(menuData);
+            fKind = kind;
+        }
+        
+        protected boolean isEnabled() {
+            
+            MTextPanel panel = getTextPanel();
+            if (fKind == UNDO) {
+                return panel.canUndo();
+            }
+            else {
+                return panel.canRedo();
+            }
+        }
+
+        public boolean respondsToEventType(int type) {
+            
+            return type == TextPanelEvent.UNDO_STATE_CHANGED;
+        }
+
+        protected void performAction() {
+            
+            MTextPanel panel = getTextPanel();
+            if (fKind == UNDO) {
+                panel.undo();
+            }
+            else {
+                panel.redo();
+            }
+        }
+    }
+
+    public static final class Paste extends CommandMenuItem {
+        
+        public Paste(MenuData menuData) {
+            
+            super(menuData);
+        }
+        
+        protected boolean isEnabled() {
+            
+            return getTextPanel().clipboardNotEmpty();
+        }
+
+        public boolean respondsToEventType(int type) {
+            
+            return type == TextPanelEvent.CLIPBOARD_CHANGED;
+        }
+
+        protected void performAction() {
+            
+            getTextPanel().paste();
+        }
+    }
+
+    public static final class SelectAll extends CommandMenuItem {
+        
+        public SelectAll(MenuData menuData) {
+            
+            super(menuData);
+        }
+        
+        protected boolean isEnabled() {
+            
+            return true;
+        }
+
+        public boolean respondsToEventType(int type) {
+            
+            return false;
+        }
+
+        protected void performAction() {
+            
+            getTextPanel().selectAll();
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/DialogItem.java b/src/com/ibm/richtext/uiimpl/DialogItem.java
new file mode 100755
index 0000000..073ae2b
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/DialogItem.java
@@ -0,0 +1,74 @@
+/*
+ * @(#)$RCSfile: DialogItem.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:52:32 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.awt.Window;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public final class DialogItem extends CommandMenuItem {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static abstract class DialogFactory {
+        
+        public abstract Window createDialog(MTextPanel textPanel);
+    }
+    
+    private DialogFactory fDialogFactory;
+    private Window fDialog = null;
+    
+    public DialogItem(MenuData menuData,
+                      DialogFactory dialogFactory) {
+        
+        super(menuData, true);
+        fDialogFactory = dialogFactory;
+    }
+    
+    protected void textPanelChanged() {
+        // do nothing
+    }
+        
+    protected boolean isEnabled() {
+            
+        // should never get called...
+        return true;
+    }
+
+    public boolean respondsToEventType(int type) {
+            
+        return false;
+    }
+
+    protected void performAction() {
+
+        if (fDialog == null) {
+            MTextPanel panel = getTextPanel();
+            if (panel != null) {
+                fDialog = fDialogFactory.createDialog(panel);
+                fDialog.addWindowListener(new WindowAdapter() {
+                    public void windowClosed(WindowEvent e) {
+                        fDialog = null;
+                    }
+                });
+            }
+        }
+        fDialog.show();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/EventListener.java b/src/com/ibm/richtext/uiimpl/EventListener.java
new file mode 100755
index 0000000..805bce9
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/EventListener.java
@@ -0,0 +1,24 @@
+/*
+ * @(#)$RCSfile: EventListener.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:52:32 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.EventObject;
+
+public interface EventListener {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public void eventOccurred(EventObject event);
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/FontList.java b/src/com/ibm/richtext/uiimpl/FontList.java
new file mode 100755
index 0000000..1b07563
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/FontList.java
@@ -0,0 +1,66 @@
+/*
+ * @(#)$RCSfile: FontList.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:52:32 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.uiimpl;
+
+import java.awt.GraphicsEnvironment;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Vector;
+
+final class FontList {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private static final String[] stripThese = {
+        ".bold", ".bolditalic", ".italic"
+    };
+
+    public static String[] getFontList() {
+
+        String[] names = GraphicsEnvironment.getLocalGraphicsEnvironment()
+                                            .getAvailableFontFamilyNames();
+        Vector v = new Vector(names.length);
+        for (int i=0; i < names.length; i++) {
+            v.addElement(names[i]);
+        }
+
+        Collections.sort(v);
+                
+        String last = "";
+        
+        Iterator iter = v.listIterator();
+        while (iter.hasNext()) {
+            String current = (String) iter.next();
+            testSuffixes: for (int i=0; i < stripThese.length; i++) {
+                if (current.endsWith(stripThese[i])) {
+                    int baseLen = current.length()-stripThese[i].length();
+                    String base = current.substring(0, baseLen);
+                    if (base.equalsIgnoreCase(last)) {
+                        iter.remove();
+                        current = last;
+                        break testSuffixes;
+                    }
+                }
+            }
+            last = current;
+        }
+        
+        String[] result = new String[v.size()];
+        v.copyInto(result);
+        return result;
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/KeymapMenuItemSet.java b/src/com/ibm/richtext/uiimpl/KeymapMenuItemSet.java
new file mode 100755
index 0000000..574faa0
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/KeymapMenuItemSet.java
@@ -0,0 +1,61 @@
+/*
+ * @(#)$RCSfile: KeymapMenuItemSet.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:52:32 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import com.ibm.richtext.textpanel.KeyRemap;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public final class KeymapMenuItemSet extends ChoiceMenuItemSet {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public KeymapMenuItemSet(KeyRemap[] values,
+                             MenuData[] menuData) {
+        
+        super(values, menuData);
+    }
+    
+    protected void handleValueSelected(Object value) {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            throw new Error("Menu item is enabled when panel is null!");
+        }
+
+        textPanel.setKeyRemap((KeyRemap) value);
+    }
+    
+    protected Object getCurrentValue() {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            throw new Error("Shouldn't call this without a text panel!");
+        }
+        return textPanel.getKeyRemap();
+    }
+    
+    public void textEventOccurred(TextPanelEvent event) {
+        
+        setChecked();
+    }
+    
+    public boolean respondsToEventType(int type) {
+        
+        return type == TextPanelEvent.KEYREMAP_CHANGED;
+    }
+
+}
diff --git a/src/com/ibm/richtext/uiimpl/MItem.java b/src/com/ibm/richtext/uiimpl/MItem.java
new file mode 100755
index 0000000..fdf1d68
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/MItem.java
@@ -0,0 +1,87 @@
+/*
+ * @(#)$RCSfile: MItem.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:52:32 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.Vector;
+import java.util.EventObject;
+
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public abstract class MItem {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private Vector fListeners = new Vector(2);
+    private EventObject fEvent = new EventObject(this);
+    
+    public abstract void setEnabled(boolean enabled);
+    public abstract void setState(boolean checked);
+    
+    public final void addListener(EventListener listener) {
+        
+        fListeners.addElement(listener);
+    }
+    
+    public final void removeListener(EventListener listener) {
+        
+        fListeners.removeElement(listener);
+    }
+    
+    protected void handleSelected() {
+            
+        int length = fListeners.size();
+        for (int i=0; i < length; i++) {
+            EventListener l = (EventListener) fListeners.elementAt(i);
+            l.eventOccurred(fEvent);
+        }
+    }
+    
+    // factory stuff
+    
+    /**
+     * Clients should synchronize on LOCK while setting and using
+     * global factory.
+     */
+    public static final Object LOCK = new Object();
+    
+    public static interface ItemFactory {
+        
+        public MItem createItem(MenuData menuData);
+        public MItem createCheckboxItem(MenuData menuData);
+        public void createSeparator();
+    }
+    
+    private static ItemFactory fgFactory;
+    
+    public static MItem createItem(MenuData menuData) {
+        
+        return fgFactory.createItem(menuData);
+    }
+    
+    public static MItem createCheckboxItem(MenuData menuData) {
+        
+        return fgFactory.createCheckboxItem(menuData);
+    }
+    
+    public static void setItemFactory(ItemFactory factory) {
+        
+        fgFactory = factory;
+    }
+    
+    public static ItemFactory getItemFactory() {
+        
+        return fgFactory;
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/MenuBuilder.java b/src/com/ibm/richtext/uiimpl/MenuBuilder.java
new file mode 100755
index 0000000..db1e79a
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/MenuBuilder.java
@@ -0,0 +1,368 @@
+/*
+ * @(#)$RCSfile: MenuBuilder.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:50 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.awt.Color;
+import java.awt.Frame;
+
+import java.awt.Window;
+import java.text.NumberFormat;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.KeyRemap;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+import com.ibm.richtext.uiimpl.DialogItem.DialogFactory;
+
+public abstract class MenuBuilder {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    public static final int EDIT = 0;
+    public static final int SIZE = 1;
+    public static final int STYLE = 2;
+    public static final int FLUSH = 3;
+    public static final int KEYMAP = 4;
+    public static final int BIDI = 5;
+    public static final int ABOUT = 6;
+    
+    private Color[] colors = { Color.black, Color.white, Color.green, Color.blue,
+                                Color.cyan, Color.gray, Color.darkGray, Color.lightGray,
+                                Color.magenta, Color.orange, Color.pink, Color.red,
+                                Color.yellow, null };
+    private String[] colorNames = {
+                        ResourceUtils.getResourceString(FrameResources.BLACK),
+                        ResourceUtils.getResourceString(FrameResources.WHITE),
+                        ResourceUtils.getResourceString(FrameResources.GREEN),
+                        ResourceUtils.getResourceString(FrameResources.BLUE),
+                        ResourceUtils.getResourceString(FrameResources.CYAN),
+                        ResourceUtils.getResourceString(FrameResources.GRAY),
+                        ResourceUtils.getResourceString(FrameResources.DARK_GRAY),
+                        ResourceUtils.getResourceString(FrameResources.LIGHT_GRAY),
+                        ResourceUtils.getResourceString(FrameResources.MAGENTA),
+                        ResourceUtils.getResourceString(FrameResources.ORANGE),
+                        ResourceUtils.getResourceString(FrameResources.PINK),
+                        ResourceUtils.getResourceString(FrameResources.RED),
+                        ResourceUtils.getResourceString(FrameResources.YELLOW),
+                        ResourceUtils.getResourceString(FrameResources.NONE)
+    };
+    
+    protected int[] defaultMenus = { EDIT, 
+                                     SIZE,
+                                     STYLE,
+                                     FLUSH, 
+                                     KEYMAP,
+                                     BIDI,
+                                     ABOUT };
+
+    protected MTextPanel fTextPanel;
+    protected Frame fDialogParent;
+
+    protected MenuBuilder() {
+    }
+    
+    protected final void doCreateMenus(MTextPanel textPanel, Frame frame, int[] menus) {
+    
+        fTextPanel = textPanel;
+        fDialogParent = frame;
+        
+        for (int i=0; i < menus.length; i++) {
+            switch(menus[i]) {
+                case EDIT:
+                    createEditMenu();
+                    break;
+                case SIZE:
+                    createSizeMenu();
+                    break;
+                case STYLE:
+                    createStyleMenu();
+                    break;
+                case FLUSH:
+                    createFlushMenu();
+                    break;
+                case KEYMAP:
+                    createKeymapMenu();
+                    break;
+                case BIDI:
+                    createBidiMenu();
+                    break;
+                case ABOUT:
+                    createAboutMenu();
+                    break;
+                default:
+                    throw new IllegalArgumentException("Illegal menu: " + menus[i]);
+            }
+        }
+                    
+        fTextPanel = null;
+        fDialogParent = null;
+    }
+    
+    protected abstract void handleAddMenu(String key);
+    
+    protected abstract DialogFactory createObjectDialogFactory(String dialogTitle,
+                                                               String dialogText,
+                                                               Object key,
+                                                               boolean character,
+                                                               String[] names,
+                                                               Object[] values);
+
+    protected abstract DialogFactory createNumberDialogFactory(String dialogTitle,
+                                                               String dialogText,
+                                                               Object key,
+                                                               boolean character);
+
+    protected abstract DialogFactory createAboutDialogFactory();
+
+    private void createEditMenu() {
+        
+        handleAddMenu(FrameResources.EDIT);
+        
+        new CommandMenuItem.UndoRedo(ResourceUtils.getMenuData(FrameResources.UNDO),
+                                    CommandMenuItem.UndoRedo.UNDO).setTextPanel(fTextPanel);
+        new CommandMenuItem.UndoRedo(ResourceUtils.getMenuData(FrameResources.REDO),
+                                    CommandMenuItem.UndoRedo.REDO).setTextPanel(fTextPanel);
+        MItem.getItemFactory().createSeparator();
+        new CommandMenuItem.CutCopyClear(ResourceUtils.getMenuData(FrameResources.CUT),
+                                        CommandMenuItem.CutCopyClear.CUT).setTextPanel(fTextPanel);
+        new CommandMenuItem.CutCopyClear(ResourceUtils.getMenuData(FrameResources.COPY),
+                                        CommandMenuItem.CutCopyClear.COPY).setTextPanel(fTextPanel);
+        new CommandMenuItem.Paste(ResourceUtils.getMenuData(FrameResources.PASTE)).setTextPanel(fTextPanel);
+        new CommandMenuItem.CutCopyClear(ResourceUtils.getMenuData(FrameResources.CLEAR),
+                                        CommandMenuItem.CutCopyClear.CLEAR).setTextPanel(fTextPanel);
+        MItem.getItemFactory().createSeparator();
+        new CommandMenuItem.SelectAll(ResourceUtils.getMenuData(FrameResources.SELECT_ALL)).setTextPanel(fTextPanel);
+    }
+    
+    private static final float[] DEFAULT_SIZES =
+                                    {9, 10, 12, 14, 18, 24, 36, 48, 72};
+
+    private void createSizeMenu() {
+        
+        createSizeMenu(DEFAULT_SIZES);
+    }
+    
+    private void createSizeMenu(float[] sizes) {
+                
+        handleAddMenu(FrameResources.SIZE);
+
+        if (sizes != DEFAULT_SIZES) {
+
+            sizes = (float[]) sizes.clone();
+            if (sizes.length == 0) {
+                throw new IllegalArgumentException("sizes array has zero length");
+            }
+
+            float lastValue = sizes[0];
+            for (int i=1; i < sizes.length; i++) {
+                if (sizes[i] >= lastValue) {
+                    throw new IllegalArgumentException(
+                                                "sizes array must be increasing");
+                }
+                lastValue = sizes[i];
+            }
+        }
+        
+        Float[] values = new Float[sizes.length];
+        MenuData[] mData = new MenuData[sizes.length];
+        NumberFormat fmt = NumberFormat.getNumberInstance();
+        
+        for (int i=0; i < sizes.length; i++) {
+            values[i] = new Float(sizes[i]);
+            mData[i] = new MenuData(fmt.format(sizes[i]));
+        }
+        
+        new StyleMenuItemSet(TextAttribute.SIZE,
+                                values,
+                                mData,
+                                MenuItemSet.CHARACTER).setTextPanel(fTextPanel);
+            
+        if (fDialogParent != null) {
+            String dialogTitle = ResourceUtils.getResourceString(FrameResources.SET_SIZE_TITLE);
+            String dialogText = ResourceUtils.getResourceString(FrameResources.SET_SIZE_LABEL);
+            DialogFactory factory = createNumberDialogFactory(dialogTitle,
+                                                              dialogText,
+                                                              TextAttribute.SIZE,
+                                                              MenuItemSet.CHARACTER);
+                                                              
+            new DialogItem(ResourceUtils.getMenuData(FrameResources.OTHER_DIALOG), 
+                            factory).setTextPanel(fTextPanel);
+        }
+    }
+    
+    private void createStyleMenu() {
+        
+        handleAddMenu(FrameResources.STYLE);
+
+        Object[] keys =    { TextAttribute.WEIGHT,
+                            TextAttribute.POSTURE,
+                            TextAttribute.UNDERLINE,
+                            TextAttribute.STRIKETHROUGH };
+        Object[] values =  { TextAttribute.WEIGHT_BOLD,
+                            TextAttribute.POSTURE_OBLIQUE,
+                            TextAttribute.UNDERLINE_ON,
+                            TextAttribute.STRIKETHROUGH_ON };
+        MenuData[] mData = { ResourceUtils.getMenuData(FrameResources.BOLD),
+                            ResourceUtils.getMenuData(FrameResources.ITALIC),
+                            ResourceUtils.getMenuData(FrameResources.UNDERLINE),
+                            ResourceUtils.getMenuData(FrameResources.STRIKETHROUGH) };
+
+        new SubtractStyleMenuItem(keys, 
+                                    ResourceUtils.getMenuData(FrameResources.PLAIN),
+                                    MenuItemSet.CHARACTER).setTextPanel(fTextPanel);
+                                                 
+        for (int i=0; i < keys.length; i++) {
+            new BooleanStyleMenuItem(keys[i],
+                                        values[i],
+                                        mData[i],
+                                        MenuItemSet.CHARACTER).setTextPanel(fTextPanel);
+        }
+            
+        if (fDialogParent != null) {
+            
+            MItem.getItemFactory().createSeparator();
+            
+            String[] fonts = FontList.getFontList();
+            String title = ResourceUtils.getResourceString(FrameResources.SET_FONT_TITLE);
+            String label = ResourceUtils.getResourceString(FrameResources.SET_FONT_LABEL);
+            
+            DialogFactory fontF = createObjectDialogFactory(title, 
+                                                            label,
+                                                            TextAttribute.FAMILY,
+                                                            StyleMenuItemSet.CHARACTER,
+                                                            fonts,
+                                                            fonts);
+            new DialogItem(ResourceUtils.getMenuData(FrameResources.FONT_DIALOG),
+                                    fontF).setTextPanel(fTextPanel);
+
+            DialogFactory foregroundF = createColorDialogFactory(true);
+            DialogFactory backgroundF = createColorDialogFactory(false);
+            
+            new DialogItem(ResourceUtils.getMenuData(FrameResources.FORECOLOR_DIALOG),
+                                    foregroundF).setTextPanel(fTextPanel);
+            new DialogItem(ResourceUtils.getMenuData(FrameResources.BACKCOLOR_DIALOG),
+                                    backgroundF).setTextPanel(fTextPanel);
+            }
+    }
+
+    private DialogFactory createColorDialogFactory(boolean foreground) {
+        
+        String title;
+        String message;
+        Object key;
+        
+        if (foreground) {
+            title = ResourceUtils.getResourceString(FrameResources.SET_FOREGROUND_TITLE);
+            message = ResourceUtils.getResourceString(FrameResources.SET_FOREGROUND_LABEL);
+            key = TextAttribute.FOREGROUND;
+        }
+        else {
+            title = ResourceUtils.getResourceString(FrameResources.SET_BACKGROUND_TITLE);
+            message = ResourceUtils.getResourceString(FrameResources.SET_BACKGROUND_LABEL);
+            key = TextAttribute.BACKGROUND;
+        }
+        return createObjectDialogFactory(title, 
+                                         message,
+                                         key,
+                                         StyleMenuItemSet.CHARACTER,
+                                         colorNames,
+                                         colors);
+    }
+    
+    private void createFontMenu() {
+        
+        handleAddMenu(FrameResources.FONT);
+        
+        String[] fonts = FontList.getFontList();
+        MenuData[] mData = new MenuData[fonts.length];
+        for (int i=0; i < mData.length; i++) {
+            mData[i] = new MenuData(fonts[i]);
+        }
+        
+        new StyleMenuItemSet(TextAttribute.FAMILY,
+                                fonts,
+                                mData,
+                                StyleMenuItemSet.CHARACTER).setTextPanel(fTextPanel);
+    }
+    
+    private void createFlushMenu() {
+        
+        handleAddMenu(FrameResources.FLUSH);
+        
+        Object[] values = {  TextAttribute.FLUSH_LEADING,
+                             TextAttribute.FLUSH_CENTER,
+                             TextAttribute.FLUSH_TRAILING,
+                             TextAttribute.FULLY_JUSTIFIED };
+        MenuData[] mData = { ResourceUtils.getMenuData(FrameResources.LEADING),
+                             ResourceUtils.getMenuData(FrameResources.CENTER),
+                             ResourceUtils.getMenuData(FrameResources.TRAILING),
+                             ResourceUtils.getMenuData(FrameResources.JUSTIFIED) };
+        
+        new StyleMenuItemSet(TextAttribute.LINE_FLUSH,
+                                values,
+                                mData,
+                                MenuItemSet.PARAGRAPH).setTextPanel(fTextPanel);
+    }
+    
+    private void createKeymapMenu() {
+        
+        handleAddMenu(FrameResources.KEYMAP);
+        
+        KeyRemap[] values = { KeyRemap.getIdentityRemap(),
+                             KeyRemap.getArabicTransliteration(),
+                             KeyRemap.getHebrewTransliteration(),
+                             KeyRemap.getIsraelNikud(),
+                             KeyRemap.getThaiKetmanee() };
+        MenuData[] mData = { ResourceUtils.getMenuData(FrameResources.DEFAULT),
+                             ResourceUtils.getMenuData(FrameResources.ARABIC),
+                             ResourceUtils.getMenuData(FrameResources.HEBREW),
+                             ResourceUtils.getMenuData(FrameResources.ISRAEL_NIKUD),
+                             ResourceUtils.getMenuData(FrameResources.THAI_KETMANEE) };
+        
+        new KeymapMenuItemSet(values, mData).setTextPanel(fTextPanel);
+    }
+    
+    private void createBidiMenu() {
+        
+        handleAddMenu(FrameResources.BIDI);
+        
+        Object[] values = {  null,
+                             TextAttribute.RUN_DIRECTION_LTR,
+                             TextAttribute.RUN_DIRECTION_RTL };
+        MenuData[] mData = { ResourceUtils.getMenuData(FrameResources.DEFAULT_DIRECTION),
+                             ResourceUtils.getMenuData(FrameResources.LTR_DIRECTION),
+                             ResourceUtils.getMenuData(FrameResources.RTL_DIRECTION), };
+
+        new StyleMenuItemSet(TextAttribute.RUN_DIRECTION,
+                                values,
+                                mData,
+                                MenuItemSet.PARAGRAPH).setTextPanel(fTextPanel);
+    }
+    
+    private void createAboutMenu() {
+        
+        handleAddMenu(FrameResources.ABOUT_MENU);
+        
+        new DialogItem(ResourceUtils.getMenuData(FrameResources.ABOUT_ITEM), 
+                       createAboutDialogFactory()).setTextPanel(fTextPanel);
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/MenuItemSet.java b/src/com/ibm/richtext/uiimpl/MenuItemSet.java
new file mode 100755
index 0000000..0cd96d4
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/MenuItemSet.java
@@ -0,0 +1,54 @@
+/*
+ * @(#)$RCSfile: MenuItemSet.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:52:32 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.textpanel.TextPanelListener;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public abstract class MenuItemSet implements TextPanelListener {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static final boolean CHARACTER = true;
+    public static final boolean PARAGRAPH = false;
+
+    private MTextPanel fTextPanel = null;
+    
+    public abstract void textEventOccurred(TextPanelEvent event);
+    public abstract boolean respondsToEventType(int type);
+    
+    public final void setTextPanel(MTextPanel textPanel) {
+        
+        if (fTextPanel != null) {
+            fTextPanel.removeListener(this);
+        }
+        fTextPanel = textPanel;
+        if (fTextPanel != null) {
+            fTextPanel.addListener(this);
+        }
+        
+        textPanelChanged();
+    }
+    
+    public final MTextPanel getTextPanel() {
+        
+        return fTextPanel;
+    }
+    
+    protected void textPanelChanged() {
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/ResourceUtils.java b/src/com/ibm/richtext/uiimpl/ResourceUtils.java
new file mode 100755
index 0000000..6157ebf
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/ResourceUtils.java
@@ -0,0 +1,48 @@
+/*
+ * @(#)$RCSfile: ResourceUtils.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:52:32 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public class ResourceUtils {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static ResourceBundle BUNDLE;
+    static {
+        try {
+            BUNDLE = ResourceBundle.getBundle("com.ibm.richtext.uiimpl.resources.FrameResources");
+        }
+        catch(MissingResourceException e) {
+            System.out.println("Couldn't load resourceXXX.  " +
+                               "Exception: " + e);
+            BUNDLE = new FrameResources();
+        }
+    }
+
+    public static MenuData getMenuData(String key) {
+        
+        return (MenuData) BUNDLE.getObject(key);
+    }
+    
+    public static String getResourceString(String key) {
+        
+        return BUNDLE.getString(key);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/SingleCheckMenuItem.java b/src/com/ibm/richtext/uiimpl/SingleCheckMenuItem.java
new file mode 100755
index 0000000..be5ac87
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/SingleCheckMenuItem.java
@@ -0,0 +1,46 @@
+/*
+ * @(#)$RCSfile: SingleCheckMenuItem.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:52:32 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public abstract class SingleCheckMenuItem extends MenuItemSet {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    protected MItem fItem;
+    
+    SingleCheckMenuItem(MenuData menuData) {
+        
+        fItem = MItem.createCheckboxItem(menuData);
+    }
+    
+    abstract void setChecked();
+    
+    protected final void textPanelChanged() {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            fItem.setEnabled(false);
+            fItem.setState(false);
+        }
+        else {
+            fItem.setEnabled(true);
+            setChecked();
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/StyleMenuItemSet.java b/src/com/ibm/richtext/uiimpl/StyleMenuItemSet.java
new file mode 100755
index 0000000..5c55bfe
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/StyleMenuItemSet.java
@@ -0,0 +1,90 @@
+/*
+ * @(#)$RCSfile: StyleMenuItemSet.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:50 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public final class StyleMenuItemSet extends ChoiceMenuItemSet {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private Object fKey;
+    private boolean fCharacter;
+
+    public StyleMenuItemSet(Object style,
+                            Object[] values,
+                            MenuData[] menuData,
+                            boolean character) {
+        
+        super(values, menuData);
+        fKey = style;
+        fCharacter = character;
+    }
+    
+    protected void handleValueSelected(Object value) {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            throw new Error("Menu item is enabled when panel is null!");
+        }
+        
+        StyleModifier modifier;
+        if (value == null) {
+            AttributeSet set = new AttributeSet(fKey);
+            modifier = StyleModifier.createRemoveModifier(set);
+        }
+        else {
+            modifier = StyleModifier.createAddModifier(fKey, value);
+        }
+                    
+        if (fCharacter == CHARACTER) {
+            textPanel.modifyCharacterStyleOnSelection(modifier);
+        }
+        else {
+            textPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+    
+    protected Object getCurrentValue() {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            throw new Error("Shouldn't call this without a text panel!");
+        }
+        
+        if (fCharacter == CHARACTER) {
+            return textPanel.getCharacterStyleOverSelection(fKey);
+        }
+        else {
+            return textPanel.getParagraphStyleOverSelection(fKey);
+        }
+    }
+
+    public void textEventOccurred(TextPanelEvent event) {
+        
+        setChecked();
+    }
+    
+    public boolean respondsToEventType(int type) {
+        
+        return type == TextPanelEvent.SELECTION_STYLES_CHANGED;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/SubtractStyleMenuItem.java b/src/com/ibm/richtext/uiimpl/SubtractStyleMenuItem.java
new file mode 100755
index 0000000..8b0f55d
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/SubtractStyleMenuItem.java
@@ -0,0 +1,104 @@
+/*
+ * @(#)$RCSfile: SubtractStyleMenuItem.java,v $ $Revision: 1.2 $ $Date: 2002/02/16 03:06:50 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.EventObject;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public final class SubtractStyleMenuItem extends SingleCheckMenuItem {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private final Object[] fKeys;
+    
+    private final boolean fCharacter;
+    
+    public SubtractStyleMenuItem(Object[] keys,
+                                 MenuData menuData,
+                                 boolean character) {
+        
+        super(menuData);
+        
+        fKeys = (Object[]) keys.clone();
+        fCharacter = character;
+        
+        AttributeSet keySet = new AttributeSet(keys);
+        final StyleModifier modifier = StyleModifier.createRemoveModifier(keySet);
+        
+        fItem.addListener(new EventListener() {
+            public void eventOccurred(EventObject event) {
+                MTextPanel panel = getTextPanel();
+                if (panel == null) {
+                    throw new Error("Menu item is enabled when panel is null!");
+                }
+
+                if (fCharacter == CHARACTER) {
+                    panel.modifyCharacterStyleOnSelection(modifier);
+                }
+                else {
+                    panel.modifyParagraphStyleOnSelection(modifier);
+                }
+            }
+        });
+    }
+    
+    private static boolean objectsAreEqual(Object lhs, Object rhs) {
+    
+        if (lhs == null) {
+            return rhs == null;
+        }
+        else {
+            return lhs.equals(rhs);
+        }
+    }
+
+    protected void setChecked() {
+
+        MTextPanel panel = getTextPanel();
+        AttributeMap defaults = panel.getDefaultValues();
+        
+        for (int i=0; i < fKeys.length; i++) {
+            Object defaultV = defaults.get(fKeys[i]);
+            
+            Object value = (fCharacter == CHARACTER)? 
+                    panel.getCharacterStyleOverSelection(fKeys[i]) :
+                    panel.getParagraphStyleOverSelection(fKeys[i]);
+                    
+            if (!objectsAreEqual(defaultV, value)) {
+                fItem.setState(false);
+                return;
+            }
+        }
+
+        fItem.setState(true);
+    }
+
+    public boolean respondsToEventType(int type) {
+        
+        return type == TextPanelEvent.SELECTION_STYLES_CHANGED;
+    }
+    
+    public final void textEventOccurred(TextPanelEvent event) {
+        
+        setChecked();
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/TabRulerImpl.java b/src/com/ibm/richtext/uiimpl/TabRulerImpl.java
new file mode 100755
index 0000000..1729327
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/TabRulerImpl.java
@@ -0,0 +1,909 @@
+/*
+ * @(#)$RCSfile: TabRulerImpl.java,v $ $Revision: 1.3 $ $Date: 2002/02/16 03:06:50 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.FontMetrics;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.event.MouseMotionListener;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.InputEvent;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.styledtext.MTabRuler;
+import com.ibm.richtext.styledtext.StandardTabRuler;
+import com.ibm.richtext.styledtext.TabStop;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textpanel.TextPanelListener;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+
+/**
+ * TabRuler is a Component which presents a user interface for
+ * setting the leading margin, trailing margin, first line indent,
+ * and tab types and positions.
+ * <p>
+ * TabRuler does not implement TextPanelListener directly;  however,
+ * it can receive updates from a MTextPanel.  To have a TabRuler listen
+ * to a panel, call <code>listenToPanel</code>.  TabRuler responds to
+ * user manipulation by modifying the paragraph styles on its MTextPanel
+ * (if any).
+ */
+public final class TabRulerImpl implements MouseListener, MouseMotionListener
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final class TabStopBuffer {
+        public int fPosition;
+        public byte fType;
+
+        TabStopBuffer(int position, byte type) {
+            fPosition = position;
+            fType = type;
+        }
+
+        TabStopBuffer(TabStop tab) {
+            this(tab.getPosition(), tab.getType());
+        }
+
+        TabStop getTabStop() {
+            return new TabStop(fPosition, fType);
+        }
+    }
+
+    private static final class TabRulerModifier extends StyleModifier {
+
+        private TabStop fOldTab; // tab to remove
+        private TabStop fNewTab; // tab to add
+        private AttributeMap fPanelDefaults;
+        
+        TabRulerModifier(TabStop oldTab,
+                         TabStop newTab,
+                         AttributeMap panelDefaults) {
+            fOldTab = oldTab;
+            fNewTab = newTab;
+            fPanelDefaults = panelDefaults;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap oldStyle) {
+
+            MTabRuler oldRuler = (MTabRuler) getWithDefault(TextAttribute.TAB_RULER, 
+                                                            oldStyle, 
+                                                            fPanelDefaults);
+            MTabRuler ruler = oldRuler;
+
+            if (fOldTab != null) {
+                if (ruler.containsTab(fOldTab)) {
+                    ruler = ruler.removeTab(fOldTab.getPosition());
+                }
+            }
+            if (fNewTab != null) {
+                ruler = ruler.addTab(fNewTab);
+            }
+
+            if (ruler != oldRuler) {
+                return oldStyle.addAttribute(TextAttribute.TAB_RULER, ruler);
+            }
+            else {
+                return oldStyle;
+            }
+        }
+    }
+
+    private static final class ImageCache {
+
+        static final String COPYRIGHT =
+                    "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+        private Image fImage = null;
+        private boolean fIsValid = false;
+        private Component fComponent;   // workaround for compiler bug, 
+                                        // should just be able to say Component.this
+                                        // if this were not a static class
+        
+        ImageCache(Component component) {
+        
+            fComponent = component;
+        }
+
+        Graphics getGraphics(int width, int height) {
+
+            if (width <= 0 || height <= 0) {
+                return null;
+            }
+            
+            Image image = fImage;
+            if (image == null || image.getWidth(fComponent) < width
+                              || image.getHeight(fComponent) < height) {
+		if (!fComponent.isVisible()) { // fix race condition if component not fully initialized
+		    return null;
+		}
+                image = fComponent.createImage(width, height);
+            }
+            Graphics g = image.getGraphics();
+            fImage = image;
+            return g;
+        }
+
+        void drawImage(Graphics g, int x, int y, Color color) {
+
+            if (!fIsValid) {
+                throw new Error("Drawing image when not valid");
+            }
+            g.drawImage(fImage, x, y, color, fComponent);
+        }
+
+        boolean isValid() {
+
+            return fIsValid;
+        }
+
+        void setValid(boolean isValid) {
+
+            fIsValid = isValid;
+        }
+    }
+
+    /**
+    * This class listens to a MTextPanel for changes which
+    * affect a TabRuler's appearance, and updates the TabRuler
+    * as necessary.
+    * @see TabRuler
+    * @see com.ibm.richtext.textpanel.MTextPanel
+    */
+    private static final class Updater implements TextPanelListener {
+
+        static final String COPYRIGHT =
+                    "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+        private TabRulerImpl fTabRuler;
+        private MTextPanel fTextPanel;
+
+        /**
+        * Create a new TabRulerUpdater.
+        * @param tabRuler the TabRuler to update when a change occurs
+        *     in the MTextPanel
+        */
+        Updater(TabRulerImpl tabRuler) {
+
+            fTabRuler = tabRuler;
+        }
+
+        /**
+        * Remove self as listener from previous MTextPanel,
+        * set current MTextPanel and listen to it (if not null).
+        */
+        void setTextPanel(MTextPanel textPanel) {
+
+            if (fTextPanel != null) {
+                fTextPanel.removeListener(this);
+            }
+
+            fTextPanel = textPanel;
+
+            if (fTextPanel != null) {
+                fTextPanel.addListener(this);
+                setAll();
+            }
+        }
+
+        private void setAll() {
+
+            int offset = fTextPanel.getSelectionStart();
+            boolean leftToRight = fTextPanel.paragraphIsLeftToRight(offset);
+            AttributeMap style = fTextPanel.getText().paragraphStyleAt(offset);
+            fTabRuler.set(style, false);
+            fTabRuler.setFormatWidth(fTextPanel.getFormatWidth(), false);
+            fTabRuler.setLeftToRight(leftToRight, true);
+        }
+
+        /**
+        * TextPanelListener method.  This class responds to text
+        * changes by updating its TabRuler.
+        */
+        public void textEventOccurred(TextPanelEvent event) {
+
+            int changeCode = event.getID();
+
+            if (changeCode == event.SELECTION_STYLES_CHANGED ||
+                    changeCode == event.TEXT_CHANGED) {
+
+                int offset = fTextPanel.getSelectionStart();
+                AttributeMap style = fTextPanel.getText().paragraphStyleAt(offset);
+                boolean leftToRight = fTextPanel.paragraphIsLeftToRight(offset);
+                fTabRuler.set(style, false);
+                fTabRuler.setLeftToRight(leftToRight, true);
+            }
+            else if (changeCode == event.FORMAT_WIDTH_CHANGED) {
+                
+                fTabRuler.setFormatWidth(fTextPanel.getFormatWidth(), true);
+            }
+        }
+        
+        /**
+        * TextPanelListener method.
+        */
+        public boolean respondsToEventType(int type) {
+            
+            return type == TextPanelEvent.SELECTION_STYLES_CHANGED ||
+                    type == TextPanelEvent.TEXT_CHANGED ||
+                    type == TextPanelEvent.FORMAT_WIDTH_CHANGED;
+        }
+    }
+
+    /**
+     * The default background color for TabRulers.
+     * @see #setBackColor
+     */
+    public static final Color DEFAULT_BACK_COLOR = Color.lightGray;
+
+    private static final int kTrackNone = 0;
+    private static final int kTrackTab = 1;
+    private static final int kTrackLM = 2;
+    private static final int kTrackFLI = 3;
+    private static final int kTrackTM = 4;
+
+    private Component fHost;
+    private MTabRuler fRuler;
+    private int fLeadingMargin;
+    private int fFirstLineIndent;
+    private int fFormatWidth;
+    private int fTrailingMarginPosition; // opposite of actual trailing margin
+    private boolean fLeftToRight;
+    private int fBaseline;
+    private int fOrigin;
+    private Color fBackColor = DEFAULT_BACK_COLOR;
+
+    private int fTrackItem; // 0 - none, 1 - tab, 2 - lm, 3 - fli, 4 - tm
+    private TabStopBuffer fTrackTab;
+    private TabStop fOldTab;
+    private int fTrackDelta;
+    private boolean fTrackVisible;
+    private Updater fUpdater;
+    private MTextPanel fTextPanel = null;
+
+    private ImageCache fImageCache;
+
+    /**
+     * Create a new TabRuler.
+     * @param baseline the y-coordinate of the ruler's baseline
+     * @param origin the x-coordinate in this Component where
+     *     the left margin appears
+     * @param textPanel the MTextPanel to listen to.  This TabRuler
+     *     will reflect the MTextPanel's paragraph styles, and update
+     *     the paragraph styles when manipulated.
+     */
+    public TabRulerImpl(int baseline, 
+                        int origin, 
+                        MTextPanel textPanel,
+                        Component host) {
+
+        fHost = host;
+        fImageCache = new ImageCache(host);
+        fUpdater = new Updater(this);
+        fBaseline = baseline;
+        fOrigin = origin;
+        host.addMouseListener(this);
+        host.addMouseMotionListener(this);
+        if (textPanel != null) {
+            listenToTextPanel(textPanel);
+        }
+        else {
+            fRuler = new StandardTabRuler();
+        }
+    }
+
+    /**
+     * Listen to the given MTextPanel and reflect its changes,
+     * and update its paragraph styles when TabRuler is
+     * manipulated.
+     * @param textPanel the MTextPanel to listen to
+     */
+    public void listenToTextPanel(MTextPanel textPanel) {
+
+        fTextPanel = textPanel;
+        fUpdater.setTextPanel(textPanel);
+    }
+
+    /**
+     * Return the background color of this TabRuler.
+     * @return the background color of this TabRuler
+     */
+    public Color getBackColor() {
+
+        return fBackColor;
+    }
+
+    /**
+     * Set the background color of this TabRuler.
+     * @param backColor the new background color of this TabRuler
+     */
+    public void setBackColor(Color backColor) {
+
+        if (!backColor.equals(fBackColor)) {
+            fBackColor = backColor;
+            Graphics g = fHost.getGraphics();
+            if (g != null) {
+                paint(g);
+            }
+        }
+    }
+
+    private static Object getWithDefault(Object key,
+                                         AttributeMap style,
+                                         AttributeMap defaults) {
+        Object value = style.get(key);
+        if (value == null) {
+            value = defaults.get(key);
+        }
+        return value;
+    }
+
+    private static float getFloatWithDefault(Object key,
+                                             AttributeMap style,
+                                             AttributeMap defaults) {
+        Object value = getWithDefault(key, style, defaults);
+        return ((Float)value).floatValue();
+    }
+    
+    private void setLeftToRight(boolean leftToRight, boolean update) {
+        
+        if (fLeftToRight != leftToRight) {
+            
+            fLeftToRight = leftToRight;
+            redrawSelf(update);
+        }
+    }
+
+    private void setFormatWidth(int formatWidth, boolean update) {
+        
+        if (fFormatWidth != formatWidth) {
+            
+            fTrailingMarginPosition += (formatWidth - fFormatWidth);
+            fFormatWidth = formatWidth;
+            redrawSelf(update);
+        }
+    }
+    
+    /**
+     * Set TabRuler from values in paragraphStyle.  Only TabRulerUpdater
+     * should call this method.
+     * @param paragraphStyle the paragraph style which the TabRuler will
+     *     reflect
+     */
+    private void set(AttributeMap paragraphStyle, boolean update) {
+
+        AttributeMap panelDefaults;
+        
+        if (fTextPanel==null) {
+            panelDefaults = TextPanel.getDefaultSettings().getDefaultValues();
+        }
+        else {
+             panelDefaults = fTextPanel.getDefaultValues();
+        }
+                                                         
+        int leadingMargin =  (int) getFloatWithDefault(TextAttribute.LEADING_MARGIN,
+                                                       paragraphStyle,
+                                                       panelDefaults);
+        int firstLineIndent = (int) getFloatWithDefault(TextAttribute.FIRST_LINE_INDENT,
+                                                        paragraphStyle,
+                                                        panelDefaults);
+        int trailingMargin = (int) getFloatWithDefault(TextAttribute.TRAILING_MARGIN,
+                                                       paragraphStyle,
+                                                       panelDefaults);
+
+        MTabRuler ruler = (MTabRuler) getWithDefault(TextAttribute.TAB_RULER,
+                                                     paragraphStyle,
+                                                     panelDefaults);
+
+        int ourFli = leadingMargin + firstLineIndent;
+        int ourTmp = fFormatWidth - trailingMargin;
+        
+        if (leadingMargin == fLeadingMargin &&
+                fFirstLineIndent == ourFli &&
+                fTrailingMarginPosition == ourTmp &&
+                ruler.equals(fRuler)) {
+            return;
+        }
+        
+        fLeadingMargin = leadingMargin;
+        fFirstLineIndent = ourFli;
+        fTrailingMarginPosition = ourTmp;
+        fRuler = ruler;
+    
+        redrawSelf(update);
+    }
+    
+    private void redrawSelf(boolean drawNow) {
+
+        fImageCache.setValid(false);
+
+        Graphics g = fHost.getGraphics();
+        if (g != null)
+            paint(g);
+    }
+
+    /**
+     * Return debugging info.
+     */
+    public String toString() {
+
+        return "TabRuler{fLeadingMargin="+fLeadingMargin+
+                "}{fFirstLineIndent="+fFirstLineIndent+
+                "}{fFormatWidth="+fFormatWidth+
+                "}{fTrailingMarginPosition="+fTrailingMarginPosition+
+                "}{fRuler="+fRuler+
+                "}";
+    }
+
+    /**
+     * Return the MTabRuler represented by this TabRuler.
+     * @return the MTabRuler represented by this TabRuler
+     */
+    public MTabRuler getRuler()
+    {
+        return fRuler;
+    }
+
+    /**
+     * Return the leading margin of this TabRuler.
+     * @return the leading margin of this TabRuler
+     */
+    public int getLeadingMargin()
+    {
+        return fLeadingMargin;
+    }
+
+    /**
+     * Return the first line indent of this TabRuler.
+     * @return the first line indent of this TabRuler
+     */
+    public int getFirstLineIndent()
+    {
+        return fFirstLineIndent - fLeadingMargin;
+    }
+
+    /**
+     * Return the trailing margin of this TabRuler.
+     * @return the trailing margin of this TabRuler
+     */
+    public final int getTrailingMargin()
+    {
+        return fFormatWidth - fTrailingMarginPosition;
+    }
+    
+    private int visualToRulerPos(int visPos) {
+        
+        if (fLeftToRight) {
+            return visPos - fOrigin;
+        }
+        else {
+            return fOrigin + fFormatWidth - visPos;
+        }
+    }
+    
+    private int rulerToVisualPos(int rulerPos) {
+        
+        if (fLeftToRight) {
+            return fOrigin + rulerPos;
+        }
+        else {
+            return fOrigin + fFormatWidth - rulerPos;
+        }
+    }
+    
+    private int dirMult() {
+        
+        return fLeftToRight? 1 : -1;
+    }
+
+    /**
+     * @param tabPosition the logical (ruler) position of the tab
+     */
+    private void drawTab(Graphics g, int tabPosition, byte tabType, int tabTop, int tabBottom)
+    {
+        int pos = rulerToVisualPos(tabPosition);
+        int wid = 0;
+        switch (tabType) {
+            case TabStop.kLeading: wid = 3; break;
+            case TabStop.kCenter: wid = 0; break;
+            case TabStop.kTrailing: wid = -3; break;
+            case TabStop.kDecimal: wid = 0; break;
+            default: break;
+        }
+        wid *= dirMult();
+        
+        if (tabType != TabStop.kAuto) {
+            g.drawLine(pos, tabTop, pos, tabBottom);
+            if (wid != 0)
+                g.drawLine(pos, tabBottom, pos + wid, tabBottom);
+        }
+        g.drawLine(pos-2, tabTop+2, pos, tabTop);
+        g.drawLine(pos, tabTop, pos+2, tabTop+2);
+        if (tabType == TabStop.kDecimal) {
+            g.drawLine(pos + 3, tabBottom, pos + 4, tabBottom);
+        }
+    }
+
+    private void drawLM(Graphics g)
+    {
+        int pos = rulerToVisualPos(fLeadingMargin);
+        int[] xpts = { pos, pos, pos + (4*dirMult()), pos };
+        int[] ypts = { fBaseline + 12, fBaseline + 7, fBaseline + 7, fBaseline + 12 };
+        g.fillPolygon(xpts, ypts, 3);
+        g.drawPolygon(xpts, ypts, 4);
+    }
+
+    private void drawFLI(Graphics g)
+    {
+        int pos = rulerToVisualPos(fFirstLineIndent);
+        int[] xpts = { pos, pos, pos + (4*dirMult()), pos };
+        int[] ypts = { fBaseline, fBaseline + 5, fBaseline + 5, fBaseline };
+        g.fillPolygon(xpts, ypts, 3);
+        g.drawPolygon(xpts, ypts, 4);
+    }
+
+    private void drawRM(Graphics g)
+    {
+        int pos = rulerToVisualPos(fTrailingMarginPosition);
+        int[] xpts = { pos, pos, pos - (6*dirMult()), pos };
+        int[] ypts = { fBaseline, fBaseline + 12, fBaseline + 6, fBaseline };
+        g.fillPolygon(xpts, ypts, 3);
+        g.drawPolygon(xpts, ypts, 4);
+    }
+
+    private static int alignInt(int value) {
+        
+        return (int)((int)(value / 4.5) * 4.5);
+    }
+
+    private static final int[] fgLengths = { 10, 2, 4, 2, 6, 2, 4, 2 };
+
+    /**
+     * Component method override.
+     */
+    public void paint(Graphics g)
+    {
+        Dimension size = fHost.getSize();
+
+        int width = size.width;
+        int baseline = fBaseline;
+        int baseline2 = baseline + 2;
+        int baseline10 = baseline + 10;
+        int baseline12 = baseline + 12;
+
+        if (!fImageCache.isValid()) {
+
+            Graphics gCache = fImageCache.getGraphics(width, baseline12 + 1);
+            if (gCache == null) {
+                return;
+            }
+            
+            // set background color
+
+            gCache.setColor(fBackColor);
+            gCache.setPaintMode();
+            gCache.fillRect(0, 0, width, baseline12 + 1);
+
+            // paint ticks
+
+            gCache.setColor(Color.black);
+            gCache.drawLine(0, 0, width, 0);
+            gCache.drawLine(0, baseline, width, baseline);
+
+            int[] lengths = fgLengths;
+
+            int index = 0;
+            int inchnum = 0;
+            FontMetrics fm = null;
+            if (!fLeftToRight) {
+                fm = gCache.getFontMetrics();
+            }
+            
+            for (int i = 0; i < fFormatWidth; i += 9) {
+                int len = lengths[index];
+                int pos = rulerToVisualPos(i);
+                gCache.drawLine(pos, baseline, pos, baseline - len);
+
+                if (index == 0) {
+                    String str = Integer.toString(inchnum++);
+                    int drawX;
+                    if (fLeftToRight) {
+                        drawX = pos + 2;
+                    }
+                    else {
+                        drawX = pos - fm.stringWidth(str) - 2;
+                    }
+                        
+                    gCache.drawString(str, drawX, baseline - 2);
+                }
+
+                if (++index == lengths.length)
+                    index = 0;
+            }
+
+            // paint tabs
+            TabStop tab = fRuler.firstTab();
+            while (tab != null && tab.getPosition() < fTrailingMarginPosition) {
+                boolean dodraw = true;
+                if (tab.getType() == TabStop.kAuto) {
+                    if (tab.getPosition() <= Math.max(fLeadingMargin, fFirstLineIndent))
+                        dodraw = false;
+                    else if (tab.getPosition() >= fTrailingMarginPosition)
+                        dodraw = false;
+                }
+
+                if (dodraw)
+                    drawTab(gCache, tab.getPosition(), tab.getType(), baseline2, baseline10);
+
+                tab = fRuler.nextTab(tab.getPosition());
+            }
+
+            gCache.drawLine(0, baseline12, width, baseline12);
+
+            // paint others except for tracked item
+            if (fTrackItem != kTrackLM) drawLM(gCache);
+            if (fTrackItem != kTrackTM) drawRM(gCache);
+            if (fTrackItem != kTrackFLI && fTrackItem != kTrackLM) drawFLI(gCache);
+            fImageCache.setValid(true);
+        }
+
+        fImageCache.drawImage(g, 0, 0, Color.lightGray);
+
+        switch (fTrackItem) {
+            case kTrackTab: if (fTrackVisible) drawTab(g, fTrackTab.fPosition, fTrackTab.fType, baseline2, baseline10); break;
+            case kTrackLM: drawLM(g); drawFLI(g); break;
+            case kTrackTM: drawRM(g); break;
+            case kTrackFLI: drawFLI(g); break;
+            default: break;
+        }
+    }
+
+    /**
+     * MouseListener method.
+     */
+    public void mouseClicked(MouseEvent e) {}
+    /**
+     * MouseListener method.
+     */
+    public void mouseEntered(MouseEvent e) {}
+    /**
+     * MouseListener method.
+     */
+    public void mouseExited(MouseEvent e) {}
+
+    /**
+     * MouseListener method.
+     */
+    public void mousePressed(MouseEvent e)
+    {
+        // find out if we hit a tabstop
+        int x = visualToRulerPos(e.getX());
+        int y = e.getY();
+
+        if (y > fBaseline && y < fBaseline + 12) {
+            if (y >= fBaseline + 7 && x >= fLeadingMargin - 3 && x <= fLeadingMargin + 3) {
+                fTrackItem = kTrackLM;
+                fTrackDelta = fLeadingMargin - x;
+            } else if (y < fBaseline + 7 && x >= fFirstLineIndent - 3 && x <= fFirstLineIndent + 3) {
+                fTrackItem = kTrackFLI;
+                fTrackDelta = fFirstLineIndent - x;
+            } else if (x >= fTrailingMarginPosition - 3 && x <= fTrailingMarginPosition + 3) {
+                fTrackItem = kTrackTM;
+                fTrackDelta = fTrailingMarginPosition - x;
+            } else if (e.isControlDown()) {
+                fTrackItem = kTrackTab;
+                fTrackTab = new TabStopBuffer(alignInt(x), TabStop.kLeading);
+                fTrackDelta = fTrackTab.fPosition - x;
+                fTrackVisible = true;
+            } else {
+                TabStop tab = fRuler.firstTab();
+                while (tab.getType() != TabStop.kAuto) {
+                    if (x < tab.getPosition() - 3)
+                        break;
+                    if (x < tab.getPosition() + 3) {
+                        fOldTab = tab;
+                        fTrackTab = new TabStopBuffer(tab);
+                        fRuler = fRuler.removeTab(fOldTab.getPosition());
+
+                        if (e.getClickCount() > 1) {
+                            switch (fTrackTab.fType) {
+                                case TabStop.kLeading: fTrackTab.fType = TabStop.kCenter; break;
+                                case TabStop.kCenter: fTrackTab.fType = TabStop.kTrailing; break;
+                                case TabStop.kTrailing: fTrackTab.fType = TabStop.kDecimal; break;
+                                case TabStop.kDecimal: fTrackTab.fType = TabStop.kLeading; break;
+                                default: break;
+                            }
+                        }
+                        fTrackItem = kTrackTab;
+                        fTrackDelta = tab.getPosition() - x;
+                        fTrackVisible = true;
+                        break;
+                    }
+
+                    tab = fRuler.nextTab(tab.getPosition());
+                }
+            }
+
+            if (fTrackItem != kTrackNone) {
+                fImageCache.setValid(false);
+                paint(fHost.getGraphics());
+                return;
+            }
+        }
+    }
+
+    /**
+     * MouseListener method.
+     */
+    public void mouseDragged(MouseEvent e)
+    {
+        int x = visualToRulerPos(e.getX());
+        int y = e.getY();
+
+        if (fTrackItem != kTrackNone) {
+            boolean repaint = false;
+            boolean inrange = y > fBaseline && y < fBaseline + 12;
+            boolean inbigrange = y > 0 && y < fHost.getSize().height + 20;
+            int newpos = alignInt(x + fTrackDelta);
+            if (newpos < 0)
+                newpos = 0;
+
+            switch (fTrackItem) {
+                case kTrackTab: {
+                    if (inrange) {
+                        repaint = !fTrackVisible;
+                        fTrackVisible = true;
+                        if (newpos != fTrackTab.fPosition) {
+                            fTrackTab.fPosition = newpos;
+                            repaint = true;
+                        }
+                    } else if (fTrackVisible) {
+                        fTrackVisible = false;
+                        repaint = true;
+                    }
+                } break;
+
+/* It would be nice to optionally track the margin 'independently' of the first line indent.
+ Unfortunately this makes for more work when we have multiple paragraph styles selected.
+ Since internally the first line indent is relative to the margin, moving the margin
+ independently so that all affected paragraphs share the same margin but retain first
+ line indents in the 'same' positions means that I need to also adjust the first line
+ indents in each paragraph by some delta. I'm not ready to do that yet. */
+
+                case kTrackLM: {
+                    if (inbigrange && newpos != fLeadingMargin) {
+                        fFirstLineIndent += newpos - fLeadingMargin;
+                        fLeadingMargin = newpos;
+                        repaint = true;
+                    }
+                } break;
+
+                case kTrackFLI: {
+                    if (inbigrange && newpos != fFirstLineIndent) {
+                        fFirstLineIndent = newpos;
+                        repaint = true;
+                    }
+                } break;
+
+                case kTrackTM: {
+                    if (inbigrange && newpos != fTrailingMarginPosition) {
+                        fTrailingMarginPosition = newpos;
+                        repaint = true;
+                    }
+                } break;
+            }
+
+
+            if (repaint)
+                paint(fHost.getGraphics());
+        }
+    }
+
+    /**
+     * MouseListener method.
+     */
+    public void mouseReleased(MouseEvent e)
+    {
+        if (fTrackItem != kTrackNone) {
+            if (fTrackItem == kTrackTab && fTrackVisible) {
+                fRuler = fRuler.addTab(fTrackTab.getTabStop());
+            } else {
+                fTrackTab = null;
+            }
+
+            notify(fTrackItem);
+
+            fTrackItem = kTrackNone;
+            fTrackTab = null;
+            fOldTab = null;
+
+            fImageCache.setValid(false);
+            paint(fHost.getGraphics());
+        }
+    }
+
+    /**
+     * MouseListener method.
+     */
+    public void mouseMoved(MouseEvent e) {}
+
+    private void notify(int change)
+    {
+        if (fTextPanel != null) {
+
+            StyleModifier modifier;
+
+            if (change == kTrackTab) {
+                TabStop newTab = fTrackTab==null? null : fTrackTab.getTabStop();
+                modifier = new TabRulerModifier(fOldTab, newTab, fTextPanel.getDefaultValues());
+            }
+            else {
+                Object key;
+                Object value;
+
+                switch(change) {
+                    case kTrackLM:
+                        key = TextAttribute.LEADING_MARGIN;
+                        value = new Float(getLeadingMargin());
+                        break;
+
+                    case kTrackTM:
+                        key = TextAttribute.TRAILING_MARGIN;
+                        value = new Float(getTrailingMargin());
+                        break;
+
+                    case kTrackFLI:
+                        key = TextAttribute.FIRST_LINE_INDENT;
+                        value = new Float(getFirstLineIndent());
+                        break;
+
+                    default:
+                        throw new Error("Invalid change code.");
+                }
+
+                modifier = StyleModifier.createAddModifier(key, value);
+            }
+
+            fTextPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+
+    /**
+     * Component override.
+     */
+    public Dimension getMinimumSize()
+    {
+        return new Dimension(100, fBaseline + 13);
+    }
+
+    /**
+     * Component override.
+     */
+    public Dimension getPreferredSize()
+    {
+        return getMinimumSize();
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/resources/FrameResources.java b/src/com/ibm/richtext/uiimpl/resources/FrameResources.java
new file mode 100755
index 0000000..57c1e94
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/resources/FrameResources.java
@@ -0,0 +1,220 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************/
+package com.ibm.richtext.uiimpl.resources;
+
+import java.util.ListResourceBundle;
+import java.awt.event.KeyEvent;
+
+public final class FrameResources extends ListResourceBundle {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+/*
+ * These Strings are keys to other String resources.
+ */
+    // Menu names
+    public static final String EDIT = "Edit";
+    public static final String SIZE = "Size";
+    public static final String FONT = "Font";
+    public static final String STYLE = "Style";
+    public static final String FLUSH = "Flush";
+    public static final String KEYMAP = "Keymap";
+    public static final String ABOUT_MENU = "About";
+    public static final String BIDI = "Bidi";
+    
+    // Buttons
+    public static final String OK = "OK";
+    public static final String CANCEL = "Cancel";
+
+    // Colors
+    public static final String BLACK = "Black";
+    public static final String WHITE = "White";
+    public static final String GREEN = "Green";
+    public static final String BLUE = "Blue";
+    public static final String CYAN = "Cyan";
+    public static final String GRAY = "Gray";
+    public static final String DARK_GRAY = "Dark Gray";
+    public static final String LIGHT_GRAY = "Light Gray";
+    public static final String MAGENTA = "Magenta";
+    public static final String ORANGE = "Orange";
+    public static final String PINK = "Pink";
+    public static final String RED = "Red";
+    public static final String YELLOW = "Yellow";
+    public static final String NONE = "None";
+
+    // Dialog titles and messages
+    public static final String SET_SIZE_TITLE = "Set Font Size";
+    public static final String SET_SIZE_LABEL = "Font Size:";
+
+    public static final String SET_SUPERSCRIPT_TITLE = "Set Superscript";
+    public static final String SET_SUPERSCRIPT_LABEL = "Superscript:";
+    public static final String SET_SUBSCRIPT_TITLE = "Set Subscript";
+    public static final String SET_SUBSCRIPT_LABEL = "Subscript:";
+    public static final String SET_FOREGROUND_TITLE = "Set Foreground";
+    public static final String SET_FOREGROUND_LABEL = "Foreground:";
+    public static final String SET_BACKGROUND_TITLE = "Set Background";
+    public static final String SET_BACKGROUND_LABEL = "Background:";
+    public static final String SET_FONT_TITLE = "Set Font";
+    public static final String SET_FONT_LABEL = "Font:";
+
+    public static final String ABOUT_TITLE = "About the RichEdit Control";
+
+    // This is the only String which is not its own value:
+    public static final String ABOUT_TEXT = "About text";
+    private static final String ACTUAL_ABOUT_TEXT =
+        "Copyright (C) IBM Corp. 1996-2002 All rights reserved.\n\n" +
+        "John Raley\n" +
+        "Stephen F. Booth\n" +
+        "Doug Felt\n" +
+        "John Fitzpatrick\n" +
+        "Rich Gillam";
+/*
+ * The following Strings are keys to MenuData resources.  They
+ * also double as the default menu label text.
+ */
+    // Edit menu
+    public static final String UNDO = "Undo";
+    public static final String REDO = "Redo";
+    public static final String CUT = "Cut";
+    public static final String COPY = "Copy";
+    public static final String PASTE = "Paste";
+    public static final String CLEAR = "Clear";
+    public static final String SELECT_ALL = "Select All";
+
+    // Flush menu
+    public static final String LEADING = "Leading";
+    public static final String TRAILING = "Trailing";
+    public static final String CENTER = "Center";
+    public static final String JUSTIFIED = "Justified";
+
+    // About menu
+    public static final String ABOUT_ITEM = "About...";
+
+    // Keymap menu
+    public static final String DEFAULT = "Default";
+    public static final String ARABIC = "Arabic";
+    public static final String HEBREW = "Hebrew";
+    public static final String ISRAEL_NIKUD = "Israel Nikud";
+    public static final String THAI_KETMANEE = "Thai Ketmanee";
+
+    // Style menu
+    public static final String PLAIN = "Plain";
+    public static final String BOLD = "Bold";
+    public static final String ITALIC = "Italic";
+    public static final String UNDERLINE = "Underline";
+    public static final String STRIKETHROUGH = "Strikethrough";
+    public static final String SUPERSCRIPT = "Superscript";
+    public static final String SUBSCRIPT = "Subscript";
+    public static final String SUPERSCRIPT_DIALOG = "Superscript...";
+    public static final String SUBSCRIPT_DIALOG = "Subscript...";
+    public static final String FORECOLOR_DIALOG = "Forecolor...";
+    public static final String BACKCOLOR_DIALOG = "Backcolor...";
+    public static final String FONT_DIALOG = "Font...";
+    
+
+    // Size menu
+    public static final String OTHER_DIALOG = "Other...";
+    
+    // Bidi menu
+    public static final String DEFAULT_DIRECTION = "Default Paragraph Direction";
+    public static final String LTR_DIRECTION = "Left-to-right Paragraph Direction";
+    public static final String RTL_DIRECTION = "Right-to-left Paragraph Direction";
+
+    private static Object[] makeMenuData(String name,
+                                         char shortCutChar,
+                                         int shortCutKey) {
+
+        return new Object[] { name, new MenuData(name, shortCutChar, shortCutKey) };
+    }
+
+    private static Object[] makeMenuData(String name) {
+
+        return new Object[] { name, new MenuData(name) };
+    }
+
+    private static Object[] duplicate(Object obj) {
+
+        return new Object[] { obj, obj };
+    }
+
+    protected Object[][] getContents() {
+
+        return new Object[][] {
+            makeMenuData(UNDO, 'z', KeyEvent.VK_Z),
+            makeMenuData(REDO, 'r', KeyEvent.VK_R),
+            makeMenuData(CUT, 'x', KeyEvent.VK_X),
+            makeMenuData(COPY, 'c', KeyEvent.VK_C),
+            makeMenuData(PASTE, 'v', KeyEvent.VK_V),
+            makeMenuData(CLEAR),
+            makeMenuData(SELECT_ALL),
+            makeMenuData(LEADING),
+            makeMenuData(CENTER),
+            makeMenuData(TRAILING),
+            makeMenuData(JUSTIFIED),
+            makeMenuData(ABOUT_ITEM),
+            makeMenuData(DEFAULT),
+            makeMenuData(HEBREW),
+            makeMenuData(ARABIC),
+            makeMenuData(ISRAEL_NIKUD),
+            makeMenuData(THAI_KETMANEE),
+            makeMenuData(PLAIN),
+            makeMenuData(BOLD, 'b', KeyEvent.VK_B),
+            makeMenuData(ITALIC, 'i', KeyEvent.VK_I), // why doesn't this work in Swing?
+                                                      // this is a Tab in AWT!!!
+            makeMenuData(UNDERLINE, 'u', KeyEvent.VK_U),
+            makeMenuData(STRIKETHROUGH),
+            makeMenuData(SUPERSCRIPT),
+            makeMenuData(SUBSCRIPT),
+            makeMenuData(SUPERSCRIPT_DIALOG),
+            makeMenuData(SUBSCRIPT_DIALOG),
+            makeMenuData(FORECOLOR_DIALOG),
+            makeMenuData(BACKCOLOR_DIALOG),
+            makeMenuData(FONT_DIALOG),
+            makeMenuData(OTHER_DIALOG),
+            makeMenuData(DEFAULT_DIRECTION),
+            makeMenuData(LTR_DIRECTION),
+            makeMenuData(RTL_DIRECTION),
+            duplicate(OK),
+            duplicate(CANCEL),
+            duplicate(BLACK),
+            duplicate(WHITE),
+            duplicate(GREEN),
+            duplicate(BLUE),
+            duplicate(CYAN),
+            duplicate(GRAY),
+            duplicate(DARK_GRAY),
+            duplicate(LIGHT_GRAY),
+            duplicate(MAGENTA),
+            duplicate(ORANGE),
+            duplicate(PINK),
+            duplicate(RED),
+            duplicate(YELLOW),
+            duplicate(NONE),
+            duplicate(SET_SIZE_TITLE),
+            duplicate(SET_SIZE_LABEL),
+            duplicate(SET_SUPERSCRIPT_TITLE),
+            duplicate(SET_SUPERSCRIPT_LABEL),
+            duplicate(SET_SUBSCRIPT_TITLE),
+            duplicate(SET_SUBSCRIPT_LABEL),
+            duplicate(SET_FOREGROUND_TITLE),
+            duplicate(SET_FOREGROUND_LABEL),
+            duplicate(SET_BACKGROUND_TITLE),
+            duplicate(SET_BACKGROUND_LABEL),
+            duplicate(SET_FONT_TITLE),
+            duplicate(SET_FONT_LABEL),
+            duplicate(EDIT),
+            duplicate(SIZE),
+            duplicate(FONT),
+            duplicate(STYLE),
+            duplicate(FLUSH),
+            duplicate(KEYMAP),
+            duplicate(BIDI),
+            duplicate(ABOUT_MENU),
+            duplicate(ABOUT_TITLE),
+            { ABOUT_TEXT, ACTUAL_ABOUT_TEXT }
+        };
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/resources/MenuData.java b/src/com/ibm/richtext/uiimpl/resources/MenuData.java
new file mode 100755
index 0000000..4db4b48
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/resources/MenuData.java
@@ -0,0 +1,68 @@
+/*
+ * @(#)$RCSfile: MenuData.java,v $ $Revision: 1.1 $ $Date: 2000/04/20 17:52:46 $
+ *
+ * (C) Copyright IBM Corp. 1998-1999.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl.resources;
+
+/**
+ * This class is used in resources to represent a Menu.  It is
+ * just a name and an optional shortcut key.
+ */
+public final class MenuData {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private String fName;
+    private boolean fHasShortcut;
+    private char fShortcut;
+    private int fKeyCode;
+
+    public MenuData(String name) {
+
+        fName = name;
+        fHasShortcut = false;
+    }
+
+    public MenuData(String name, char ch, int keyCode) {
+
+        fName = name;
+        fHasShortcut = true;
+        fShortcut = ch;
+        fKeyCode = keyCode;
+    }
+
+    public String getName() {
+
+        return fName;
+    }
+
+    public char getShortcutChar() {
+
+        if (!fHasShortcut) {
+            throw new Error("Menu doesn't have shortcut");
+        }
+        return fShortcut;
+    }
+    
+    public int getShortcutKeyCode() {
+        if (!fHasShortcut) {
+            throw new Error("Menu doesn't have shortcut");
+        }
+        return fKeyCode;
+    }
+
+    public boolean hasShortcut() {
+
+        return fHasShortcut;
+    }
+}
\ No newline at end of file